aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2015-02-02 15:02:49 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2015-02-02 15:02:49 +0100
commitb16b9e4656e7199c2aec74a4c8ebc7a875d3ba73 (patch)
tree4361edef0d42d5bf5ac984ef72b4fac35426eae7 /nx-X11/programs
parent0d5a83e986f39982c0924652a3662e60b1f23162 (diff)
downloadnx-libs-b16b9e4656e7199c2aec74a4c8ebc7a875d3ba73.tar.gz
nx-libs-b16b9e4656e7199c2aec74a4c8ebc7a875d3ba73.tar.bz2
nx-libs-b16b9e4656e7199c2aec74a4c8ebc7a875d3ba73.zip
massive reduction of unneeded files
Diffstat (limited to 'nx-X11/programs')
-rw-r--r--nx-X11/programs/Xserver/GL/apple/Imakefile49
-rw-r--r--nx-X11/programs/Xserver/GL/apple/aglGlx.c1355
-rw-r--r--nx-X11/programs/Xserver/GL/apple/indirect.c1380
-rw-r--r--nx-X11/programs/Xserver/GL/dri/Imakefile35
-rw-r--r--nx-X11/programs/Xserver/GL/dri/Imakefile.NX.reference35
-rw-r--r--nx-X11/programs/Xserver/GL/dri/Imakefile.XF86.reference34
-rw-r--r--nx-X11/programs/Xserver/GL/dri/dri-def.cpp50
-rw-r--r--nx-X11/programs/Xserver/GL/dri/dri.c2109
-rw-r--r--nx-X11/programs/Xserver/GL/dri/dri.h345
-rw-r--r--nx-X11/programs/Xserver/GL/dri/drimodule.c127
-rw-r--r--nx-X11/programs/Xserver/GL/dri/dristruct.h105
-rw-r--r--nx-X11/programs/Xserver/GL/dri/sarea.h94
-rw-r--r--nx-X11/programs/Xserver/GL/dri/xf86dri.c649
-rw-r--r--nx-X11/programs/Xserver/GL/windows/ChangeLog64
-rwxr-xr-xnx-X11/programs/Xserver/GL/windows/Imakefile36
-rw-r--r--nx-X11/programs/Xserver/GL/windows/glwindows.h64
-rwxr-xr-xnx-X11/programs/Xserver/GL/windows/glwrap.c583
-rwxr-xr-xnx-X11/programs/Xserver/GL/windows/indirect.c1605
-rw-r--r--nx-X11/programs/Xserver/XFree86.def5
-rw-r--r--nx-X11/programs/Xserver/Xnest.def4
-rw-r--r--nx-X11/programs/Xserver/Xorg.def5
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/Imakefile8
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/Imakefile23
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/Xprinters49
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/attributes/Imakefile8
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/attributes/document49
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/attributes/job25
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/attributes/printer96
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/Imakefile8
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/raster/Imakefile6
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/raster/pcl39
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/raster/postscript0
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/CANONBJ10E-GS/Imakefile15
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/CANONBJ10E-GS/model-config23
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/CANONC3200-PS/Imakefile15
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/CANONC3200-PS/fonts/Imakefile45
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/CANONC3200-PS/model-config40
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/GSdefault/Imakefile14
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/GSdefault/model-config137
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/Imakefile14
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00051.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00052.pmfbin5736 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00053.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00054.pmfbin5744 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00055.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00056.pmfbin5724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00057.pmfbin5632 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00058.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00059.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00060.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00061.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00062.pmfbin5728 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00063.pmfbin5728 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00064.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00065.pmfbin5728 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00066.pmfbin5732 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00067.pmfbin5736 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00068.pmfbin5732 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00069.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00070.pmfbin5744 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00071.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00072.pmfbin5724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00073.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00074.pmfbin5724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00075.pmfbin5724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00076.pmfbin5716 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00077.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00079.pmfbin5656 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00080.pmfbin5664 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00081.pmfbin5672 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00082.pmfbin5660 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00083.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00084.pmfbin5724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00085.pmfbin5724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00086.pmfbin5716 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00087.pmfbin5752 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00088.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00089.pmfbin5744 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00090.pmfbin5736 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00091.pmfbin5744 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00092.pmfbin5736 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00093.pmfbin5728 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00094.pmfbin5728 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/Imakefile57
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/README197
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/fonts.alias0
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/fonts.dir45
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/lpr0ye1a.pmfbin4296 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/model-config40
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4050-PS/Imakefile15
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4050-PS/fonts/Imakefile45
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4050-PS/model-config36
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/Imakefile14
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00051.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00052.pmfbin5736 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00053.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00054.pmfbin5744 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00055.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00056.pmfbin5724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00057.pmfbin5632 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00058.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00059.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00060.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00061.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00062.pmfbin5728 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00063.pmfbin5728 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00064.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00065.pmfbin5728 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00066.pmfbin5732 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00067.pmfbin5736 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00068.pmfbin5732 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00069.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00070.pmfbin5744 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00071.pmfbin5740 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00072.pmfbin5724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00073.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00074.pmfbin5724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00075.pmfbin5724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00076.pmfbin5716 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00077.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00079.pmfbin5656 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00080.pmfbin5664 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00081.pmfbin5672 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00082.pmfbin5660 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00083.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00084.pmfbin5724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00085.pmfbin5724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00086.pmfbin5716 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00087.pmfbin5752 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00088.pmfbin5720 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00089.pmfbin5744 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00090.pmfbin5736 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00091.pmfbin5744 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00092.pmfbin5736 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00093.pmfbin5728 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00094.pmfbin5728 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/Imakefile56
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/README203
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/fonts.alias0
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/fonts.dir45
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/lpr0ye1a.pmfbin4296 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/model-config39
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/Imakefile45
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PS2PDFspooldir-GS/Imakefile35
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PS2PDFspooldir-GS/model-config72
-rwxr-xr-xnx-X11/programs/Xserver/XpConfig/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh130
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/Imakefile14
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Book.pmfbin6716 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmfbin6728 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmfbin6712 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmfbin6724 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier-Bold.pmfbin6612 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmfbin6636 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier-Oblique.pmfbin6608 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier.pmfbin6592 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Bold.pmfbin6680 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica-BoldOblique.pmfbin6692 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmfbin6688 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica.pmfbin6672 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Imakefile41
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmfbin6628 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmfbin6640 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmfbin6624 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmfbin6636 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmfbin6644 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmfbin6656 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmfbin6652 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmfbin6648 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Demi.pmfbin6680 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-DemiItalic.pmfbin6692 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Light.pmfbin6684 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-LightItalic.pmfbin6696 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Symbol.pmfbin6556 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-Bold.pmfbin6660 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-BoldItalic.pmfbin6672 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-Italic.pmfbin6668 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-Roman.pmfbin6664 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/ZapfDingbats.pmfbin6676 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/model-config136
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSspooldir/Imakefile34
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/PSspooldir/model-config71
-rwxr-xr-xnx-X11/programs/Xserver/XpConfig/C/print/models/PSspooldir/spooltodir.sh127
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/SPSPARC2/Imakefile15
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/SPSPARC2/fonts/Imakefile28
-rw-r--r--nx-X11/programs/Xserver/XpConfig/C/print/models/SPSPARC2/model-config18
-rw-r--r--nx-X11/programs/Xserver/XpConfig/Imakefile761
-rw-r--r--nx-X11/programs/Xserver/XpConfig/README318
-rw-r--r--nx-X11/programs/Xserver/XpConfig/en_US/Imakefile8
-rw-r--r--nx-X11/programs/Xserver/XpConfig/en_US/print/Imakefile26
-rw-r--r--nx-X11/programs/Xserver/XpConfig/en_US/print/attributes/Imakefile18
-rw-r--r--nx-X11/programs/Xserver/XpConfig/en_US/print/attributes/document13
-rw-r--r--nx-X11/programs/Xserver/Xprint/AttrValid.c702
-rw-r--r--nx-X11/programs/Xserver/Xprint/AttrValid.h216
-rw-r--r--nx-X11/programs/Xserver/Xprint/DiPrint.h81
-rw-r--r--nx-X11/programs/Xserver/Xprint/Imakefile135
-rw-r--r--nx-X11/programs/Xserver/Xprint/Init.c1934
-rw-r--r--nx-X11/programs/Xserver/Xprint/Oid.c3184
-rw-r--r--nx-X11/programs/Xserver/Xprint/Oid.h294
-rw-r--r--nx-X11/programs/Xserver/Xprint/OidDefs.h171
-rw-r--r--nx-X11/programs/Xserver/Xprint/OidStrs.h173
-rw-r--r--nx-X11/programs/Xserver/Xprint/Util.c372
-rw-r--r--nx-X11/programs/Xserver/Xprint/ValTree.c193
-rw-r--r--nx-X11/programs/Xserver/Xprint/Xprt.html115
-rw-r--r--nx-X11/programs/Xserver/Xprint/Xprt.man196
-rw-r--r--nx-X11/programs/Xserver/Xprint/Xprt.sgml371
-rw-r--r--nx-X11/programs/Xserver/Xprint/attributes.c1740
-rw-r--r--nx-X11/programs/Xserver/Xprint/attributes.h131
-rw-r--r--nx-X11/programs/Xserver/Xprint/ddxInit.c397
-rw-r--r--nx-X11/programs/Xserver/Xprint/etc/Imakefile24
-rw-r--r--nx-X11/programs/Xserver/Xprint/etc/Xsession.d/Imakefile24
-rw-r--r--nx-X11/programs/Xserver/Xprint/etc/Xsession.d/cde_xsessiond_xprint.sh30
-rw-r--r--nx-X11/programs/Xserver/Xprint/etc/init.d/Imakefile97
-rw-r--r--nx-X11/programs/Xserver/Xprint/etc/init.d/xprint.cpp1277
-rw-r--r--nx-X11/programs/Xserver/Xprint/etc/profile.d/Imakefile14
-rw-r--r--nx-X11/programs/Xserver/Xprint/etc/profile.d/xprint.csh16
-rw-r--r--nx-X11/programs/Xserver/Xprint/etc/profile.d/xprint.sh16
-rw-r--r--nx-X11/programs/Xserver/Xprint/mediaSizes.c783
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl-mono/Imakefile6
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/Imakefile76
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/Pcl.h625
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclArc.c270
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclArea.c486
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclAttVal.c207
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclAttr.c87
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclColor.c851
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclCursor.c115
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclDef.h68
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclFonts.c74
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclGC.c1046
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclInit.c631
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclLine.c316
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclMisc.c306
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclPixel.c159
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclPixmap.c85
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclPolygon.c353
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclPrint.c711
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclSFonts.c429
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclSFonts.h116
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclSpans.c139
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclText.c936
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/PclWindow.c452
-rw-r--r--nx-X11/programs/Xserver/Xprint/pcl/Pclmap.h213
-rw-r--r--nx-X11/programs/Xserver/Xprint/pdf/README1
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/Imakefile89
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/Ps.h590
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsArc.c182
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsArea.c393
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsAttVal.c290
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsAttr.c117
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsCache.c328
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsColor.c258
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsDef.h97
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsFTFonts.c85
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsFonts.c876
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsGC.c419
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsImageUtil.c329
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsInit.c667
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsLine.c192
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsMisc.c324
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsPixel.c157
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsPixmap.c617
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsPolygon.c262
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsPrint.c462
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsSpans.c166
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsText.c586
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/PsWindow.c462
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/psout.c1792
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/psout.h335
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/psout_ft.c335
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/psout_ftpstype1.c185
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/psout_ftpstype3.c468
-rw-r--r--nx-X11/programs/Xserver/Xprint/ps/ttf2pt1wrap.c14
-rw-r--r--nx-X11/programs/Xserver/Xprint/raster/Imakefile28
-rw-r--r--nx-X11/programs/Xserver/Xprint/raster/Raster.c1580
-rw-r--r--nx-X11/programs/Xserver/Xprint/raster/Raster.h118
-rw-r--r--nx-X11/programs/Xserver/Xprint/raster/RasterAttVal.c269
-rw-r--r--nx-X11/programs/Xserver/Xprint/spooler.c204
-rw-r--r--nx-X11/programs/Xserver/Xprint/spooler.h76
-rw-r--r--nx-X11/programs/Xserver/Xprint/svg/README1
-rw-r--r--nx-X11/programs/Xserver/Xprint/windows/README1
-rw-r--r--nx-X11/programs/Xserver/Xvfb.def4
-rw-r--r--nx-X11/programs/Xserver/afb/Imakefile67
-rw-r--r--nx-X11/programs/Xserver/afb/README10
-rw-r--r--nx-X11/programs/Xserver/afb/Xdaniver.doc218
-rw-r--r--nx-X11/programs/Xserver/afb/afb.h1132
-rw-r--r--nx-X11/programs/Xserver/afb/afbbitblt.c477
-rw-r--r--nx-X11/programs/Xserver/afb/afbblt.c563
-rw-r--r--nx-X11/programs/Xserver/afb/afbbres.c325
-rw-r--r--nx-X11/programs/Xserver/afb/afbbresd.c216
-rw-r--r--nx-X11/programs/Xserver/afb/afbbstore.c156
-rw-r--r--nx-X11/programs/Xserver/afb/afbclip.c248
-rw-r--r--nx-X11/programs/Xserver/afb/afbcmap.c125
-rw-r--r--nx-X11/programs/Xserver/afb/afbfillarc.c359
-rw-r--r--nx-X11/programs/Xserver/afb/afbfillrct.c294
-rw-r--r--nx-X11/programs/Xserver/afb/afbfillsp.c1131
-rw-r--r--nx-X11/programs/Xserver/afb/afbfont.c79
-rw-r--r--nx-X11/programs/Xserver/afb/afbgc.c711
-rw-r--r--nx-X11/programs/Xserver/afb/afbgetsp.c167
-rw-r--r--nx-X11/programs/Xserver/afb/afbhrzvert.c211
-rw-r--r--nx-X11/programs/Xserver/afb/afbimage.c301
-rw-r--r--nx-X11/programs/Xserver/afb/afbimggblt.c474
-rw-r--r--nx-X11/programs/Xserver/afb/afbline.c706
-rw-r--r--nx-X11/programs/Xserver/afb/afbmisc.c96
-rw-r--r--nx-X11/programs/Xserver/afb/afbmodule.c63
-rw-r--r--nx-X11/programs/Xserver/afb/afbpixmap.c300
-rw-r--r--nx-X11/programs/Xserver/afb/afbply1rct.c300
-rw-r--r--nx-X11/programs/Xserver/afb/afbplygblt.c465
-rw-r--r--nx-X11/programs/Xserver/afb/afbpntarea.c657
-rw-r--r--nx-X11/programs/Xserver/afb/afbpntwin.c128
-rw-r--r--nx-X11/programs/Xserver/afb/afbpolypnt.c148
-rw-r--r--nx-X11/programs/Xserver/afb/afbpushpxl.c259
-rw-r--r--nx-X11/programs/Xserver/afb/afbscrinit.c248
-rw-r--r--nx-X11/programs/Xserver/afb/afbsetsp.c269
-rw-r--r--nx-X11/programs/Xserver/afb/afbtegblt.c588
-rw-r--r--nx-X11/programs/Xserver/afb/afbtile.c859
-rw-r--r--nx-X11/programs/Xserver/afb/afbwindow.c318
-rw-r--r--nx-X11/programs/Xserver/afb/afbzerarc.c210
-rw-r--r--nx-X11/programs/Xserver/cfb/Imakefile6
-rw-r--r--nx-X11/programs/Xserver/cfb/Imakefile.inc303
-rw-r--r--nx-X11/programs/Xserver/cfb/cfb.h1327
-rw-r--r--nx-X11/programs/Xserver/cfb/cfb16.h94
-rw-r--r--nx-X11/programs/Xserver/cfb/cfb24.h98
-rw-r--r--nx-X11/programs/Xserver/cfb/cfb32.h94
-rw-r--r--nx-X11/programs/Xserver/cfb/cfb8bit.c471
-rw-r--r--nx-X11/programs/Xserver/cfb/cfb8bit.h1572
-rw-r--r--nx-X11/programs/Xserver/cfb/cfb8line.c1504
-rw-r--r--nx-X11/programs/Xserver/cfb/cfballpriv.c94
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbbitblt.c1454
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbblt.c933
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbbres.c342
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbbresd.c406
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbbstore.c145
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbcmap.c121
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbcppl.c490
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbfillarc.c374
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbfillrct.c307
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbfillsp.c1006
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbgc.c811
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbgetsp.c215
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbglblt8.c479
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbhrzvert.c556
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbigblt8.c108
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbimage.c206
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbline.c757
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbmap.h344
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbmodule.c65
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbmskbits.c1402
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbmskbits.h897
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbpixmap.c376
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbply1rct.c363
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbpntwin.c771
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbpolypnt.c204
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbpush8.c186
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbrctstp8.c595
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbrrop.c229
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbrrop.h343
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbscrinit.c232
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbsetsp.c318
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbsolid.c1367
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbtab.h16
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbteblt8.c591
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbtegblt.c220
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbtile32.c519
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbtileodd.c1247
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbunmap.h165
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbwindow.c337
-rw-r--r--nx-X11/programs/Xserver/cfb/cfbzerarc.c322
-rw-r--r--nx-X11/programs/Xserver/cfb/module/Imakefile11
-rw-r--r--nx-X11/programs/Xserver/cfb/stip68kgnu.h123
-rw-r--r--nx-X11/programs/Xserver/cfb/stipmips.s281
-rw-r--r--nx-X11/programs/Xserver/cfb/stipple68k.s231
-rw-r--r--nx-X11/programs/Xserver/cfb/stipsparc.s290
-rw-r--r--nx-X11/programs/Xserver/cfb/stipsprc32.s291
-rw-r--r--nx-X11/programs/Xserver/cfb16/Imakefile10
-rw-r--r--nx-X11/programs/Xserver/cfb16/cfbmodule.c65
-rw-r--r--nx-X11/programs/Xserver/cfb16/module/Imakefile12
-rw-r--r--nx-X11/programs/Xserver/cfb24/Imakefile6
-rw-r--r--nx-X11/programs/Xserver/cfb24/cfbmodule.c65
-rw-r--r--nx-X11/programs/Xserver/cfb24/cfbrrop24.h54
-rw-r--r--nx-X11/programs/Xserver/cfb24/module/Imakefile12
-rw-r--r--nx-X11/programs/Xserver/cfb32/Imakefile10
-rw-r--r--nx-X11/programs/Xserver/cfb32/cfbmodule.c65
-rw-r--r--nx-X11/programs/Xserver/cfb32/module/Imakefile12
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/Imakefile92
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/XDarwin.man205
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/Credits.rtf168
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/Imakefile36
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/Localizable.stringsbin1426 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/classes.nib72
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/objects.nibbin22024 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp103
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/Credits.rtf168
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile34
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp5
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/Localizable.strings23
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/MainMenu.nib/classes.nib72
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/MainMenu.nib/objects.nibbin20829 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp96
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/Credits.rtf166
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/Imakefile36
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/Localizable.stringsbin1492 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/MainMenu.nib/classes.nib72
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/MainMenu.nib/objects.nibbin21114 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp101
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/Credits.rtf168
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/Imakefile36
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/Localizable.stringsbin1458 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/MainMenu.nib/classes.nib72
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/MainMenu.nib/objects.nibbin21182 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp96
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Imakefile15
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Credits.rtf193
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Imakefile36
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Localizable.stringsbin1152 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/classes.nib72
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/objects.nibbin21854 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp141
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/Credits.rtf171
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/Imakefile36
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/Localizable.stringsbin1504 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/classes.nib72
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/objects.nibbin21112 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp211
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/Credits.rtf168
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/Imakefile36
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/Localizable.stringsbin1480 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/classes.nib72
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/objects.nibbin20952 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp111
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/Credits.rtf168
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/Imakefile36
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/Localizable.stringsbin1464 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/classes.nib72
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nibbin20858 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp103
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/XDarwin.icnsbin69465 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/Credits.rtf168
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/Imakefile36
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/Localizable.stringsbin1332 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib72
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/MainMenu.nib/objects.nibbin21433 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp96
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/bundle/startXClients.cpp24
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/darwin.c1108
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/darwin.h153
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/darwinClut8.h532
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/darwinEvents.c481
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/darwinKeyboard.c1027
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/darwinKeyboard.h52
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/darwinXinput.c310
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/iokit/Imakefile25
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKit.c772
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKit.h57
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKitCursor.c735
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKitStartup.c126
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/Imakefile113
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/Preferences.h138
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/Preferences.m597
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/XApplication.h47
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/XApplication.m47
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj2519
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/XDarwinStartup.c164
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/XDarwinStartup.man75
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/XServer.h138
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/XServer.m1539
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/applewm.c722
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/applewmExt.h85
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/cr/Imakefile35
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/cr/XView.h42
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/cr/XView.m74
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/cr/cr.h62
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/cr/crAppleWM.m157
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/cr/crFrame.m439
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/cr/crScreen.m381
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/Imakefile19
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/fullscreen.c569
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/quartzCursor.c653
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/quartzCursor.h44
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/keysym2ucs.c909
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/keysym2ucs.h37
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/pseudoramiX.c430
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/pseudoramiX.h10
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/quartz.c426
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/quartz.h131
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/quartzAudio.c342
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/quartzAudio.h41
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/quartzCocoa.m205
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/quartzCommon.h108
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/quartzCursor.c653
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/quartzCursor.h43
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/quartzKeyboard.c388
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/quartzPasteboard.c150
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/quartzPasteboard.h45
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/quartzStartup.c291
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/Imakefile35
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/Xplugin.h591
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/appledri.c350
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/dri.c757
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/dri.h129
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/dristruct.h82
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hash.c341
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hash.h62
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hook.c106
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hook.h44
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-list.c335
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-list.h79
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xpr.h49
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprAppleWM.c99
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprCursor.c420
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c495
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprScreen.c417
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/utils/Imakefile10
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/utils/README.txt111
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/utils/dumpkeymap.c1454
-rw-r--r--nx-X11/programs/Xserver/hw/darwin/utils/dumpkeymap.man1004
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/Imakefile125
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/Xdmx.man741
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/Canvas.c160
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/Canvas.h56
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/CanvasP.h66
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/Imakefile101
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/TODO7
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.c237
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.h45
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.c499
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.h65
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/dmxparse.c611
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/dmxparse.h298
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/dmxprint.c456
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/dmxprint.h44
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.c50
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.man41
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/parser.y226
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/scanner.l183
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-a.in1
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-a.out2
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-b.in1
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-b.out1
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-c.in1
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-c.out2
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-d.in1
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-d.out2
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-e.in1
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-e.out2
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-f.in2
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-f.outbin69 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-g.in4
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-g.out4
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-h.in7
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-h.out7
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-i.in3
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-i.out3
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-j.in13
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-j.out11
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-k.in3
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-k.out3
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-l.in12
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/test-l.out12
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/vdltodmx.c58
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/vdltodmx.man95
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/xdmxconfig.c1192
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/config/xdmxconfig.man63
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmx.h374
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmx_glxvisuals.c606
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmx_glxvisuals.h64
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxcb.c224
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxcb.h54
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxclient.h152
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxcmap.c220
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxcmap.h71
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxcursor.c926
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxcursor.h70
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxdpms.c213
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxdpms.h43
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxextension.c1497
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxextension.h119
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxfont.c559
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxfont.h60
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxgc.c424
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxgc.h90
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxgcops.c602
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxgcops.h96
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxinit.c1062
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxinit.h51
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxinput.c105
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxinput.h163
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxlog.c351
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxlog.h79
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxpict.c1298
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxpict.h133
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxpixmap.c252
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxpixmap.h67
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxprop.c348
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxprop.h47
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxscrinit.c566
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxscrinit.h52
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxshadow.c72
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxshadow.h47
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxstat.c223
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxstat.h56
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxsync.c194
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxsync.h44
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxvisual.c141
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxvisual.h48
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxwindow.c1085
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/dmxwindow.h149
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/DMXSpec-v1.txt458
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/DMXSpec.txt875
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/Imakefile10
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/Makefile.linux42
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/dmx.sgml2778
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/dmx.txt2989
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/doxygen.conf1090
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/doxygen.css49
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/doxygen.foot12
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/doxygen.head8
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8c.html76
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8h-source.html60
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8h.html77
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/annotated.html98
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/classes.html26
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmx_8h-source.html276
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmx_8h.html532
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmx__glxvisuals_8h-source.html85
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8c.html239
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8h-source.html69
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8h.html235
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8c.html427
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8h-source.html75
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8h.html411
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8c.html184
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8h-source.html70
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8h.html209
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxclient_8h-source.html168
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxclient_8h.html48
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8c.html265
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8h-source.html86
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8h.html408
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8c.html701
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8h-source.html151
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8h.html665
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8c.html68
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8h-source.html61
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8h.html62
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8c.html402
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8h-source.html84
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8h.html248
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8c.html498
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8h-source.html79
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8h.html488
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8c.html471
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8h-source.html86
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8h.html498
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdetach_8c.html70
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8c.html128
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8h-source.html62
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8h.html124
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8c.html111
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8h-source.html63
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8h.html111
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8c.html269
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8h-source.html61
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8h.html63
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8c.html284
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8h-source.html66
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8h.html233
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxext_8h-source.html197
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxext_8h.html926
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8c.html433
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8h-source.html131
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8h.html426
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8c.html257
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8h-source.html78
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8h.html333
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8c.html456
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8h-source.html106
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8h.html561
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8c.html1476
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8h-source.html115
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8h.html1469
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8c.html709
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8h-source.html70
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8h.html30
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8c.html185
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8h-source.html146
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8h.html534
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8c.html477
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8h-source.html259
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8h.html406
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8c.html602
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8h-source.html91
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8h.html616
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8c.html150
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8h-source.html62
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8h.html148
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8c.html181
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8h-source.html69
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8h.html180
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8c.html74
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8h-source.html303
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8h.html775
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8c.html1184
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8h-source.html141
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8h.html1418
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8c.html240
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8h-source.html83
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8h.html351
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8c.html119
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8h-source.html63
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8h.html111
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8c.html235
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8h-source.html66
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8h.html136
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxproto_8h-source.html431
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxproto_8h.html89
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8c.html378
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8h-source.html70
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8h.html181
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8c.html71
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8h-source.html66
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8h.html73
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8c.html230
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8h-source.html65
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8h.html226
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8c.html274
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8h-source.html74
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8h.html364
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8c.html139
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8h-source.html63
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8h.html136
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8c.html151
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8h-source.html67
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8h.html152
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8c.html865
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8h-source.html165
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8h.html969
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/dmxxinput_8c.html396
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/doxygen.css49
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/doxygen.pngbin2352 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/files.html120
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2blank.pngbin174 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2doc.pngbin255 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2folderclosed.pngbin259 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2folderopen.pngbin261 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2lastnode.pngbin233 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2link.pngbin358 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2mlastnode.pngbin160 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2mnode.pngbin194 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2node.pngbin235 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2plastnode.pngbin165 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2pnode.pngbin200 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2vertline.pngbin229 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/functions.html237
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/functions_vars.html237
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/globals.html522
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/globals_defs.html47
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/globals_enum.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/globals_eval.html41
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/globals_func.html388
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/globals_type.html96
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/globals_vars.html56
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/index.html8
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/lib_2dmx_2dmx_8c.html894
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8c.html511
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8h-source.html83
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8h.html388
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8c.html352
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8h-source.html75
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8h.html288
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8c.html352
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8h-source.html75
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8h.html288
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/main.html26
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/programs_2Xserver_2Xext_2dmx_8c.html71
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXConfigCmdStruct.html30
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXConfigListStruct.html30
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXDesktopAttributes.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXDesktopAttributesRec.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXInputAttributes.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXInputAttributesRec.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXScreenAttributes.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXScreenAttributesRec.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXWindowAttributes.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXWindowAttributesRec.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigComment.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigDisplay.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigEntry.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigFullDim.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigNumber.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigOption.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigPair.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigParam.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigPartDim.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigString.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigSub.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigToken.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigVirtual.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigWall.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXEventMap.html82
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXInputInfo.html490
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXLocalInitInfo.html778
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXLocalInputInfo.html996
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXScreenInfo.html1330
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXStatAvg.html30
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXStatInfo.html30
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__Event.html104
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__EventQueue.html224
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxArg.html104
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxColormapPriv.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxCursorPriv.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxFontPriv.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxGCPriv.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxGlyphPriv.html58
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxPictPriv.html82
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxPixPriv.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxWinPriv.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/struct__myPrivate.html272
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structdmxGlxVisualPrivate.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddInputReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddInputReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddScreenReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddScreenReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeDesktopAttributesReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeDesktopAttributesReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeScreensAttributesReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeScreensAttributesReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXForceWindowCreationReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXForceWindowCreationReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetDesktopAttributesReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetDesktopAttributesReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputAttributesReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputAttributesReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputCountReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputCountReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenAttributesReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenAttributesReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenCountReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenCountReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetWindowAttributesReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetWindowAttributesReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXQueryVersionReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXQueryVersionReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveInputReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveInputReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveScreenReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveScreenReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXSyncReply.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXSyncReq.html32
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/tree.html295
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8c.html222
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8h-source.html74
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8h.html167
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8c.html231
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8h-source.html68
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8h.html174
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8c.html190
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8h-source.html68
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8h.html134
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8c.html191
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8h-source.html68
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8h.html134
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-private_8h-source.html131
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/html/usb-private_8h.html41
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/scaled.sgml707
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/doc/scaled.txt579
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/Imakefile56
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/dmxaddinput.c84
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/dmxaddscreen.c106
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/dmxreconfig.c163
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/dmxresize.c105
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/dmxrminput.c79
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/dmxrmscreen.c81
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/dmxwininfo.c497
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/ev.c183
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/evi.c87
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/res.c100
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/xbell.c102
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/xdmx.c240
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/xinput.c319
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/xled.c125
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/examples/xtest.c76
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/Imakefile52
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/compsize.c564
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/g_disptab.c612
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/g_disptab.h676
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/g_renderswap.c2360
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/global.c77
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcmds.c3636
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcmdsswap.c1059
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcontext.h117
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxdrawable.h124
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxerror.h58
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxext.c512
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxext.h98
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxfbconfig.c111
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxfbconfig.h43
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxscreens.c390
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxscreens.h63
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxserver.h327
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxsingle.c1013
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxsingle.h59
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxswap.c539
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxswap.h47
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxutil.c121
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxutil.h54
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvendor.c583
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvendor.h55
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvisuals.c542
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvisuals.h55
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/render2swap.c348
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/renderpixswap.c390
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/glxProxy/unpack.h234
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/ChkNotMaskEv.c108
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/ChkNotMaskEv.h41
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/Imakefile46
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxarg.c176
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxarg.h50
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxbackend.c608
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxbackend.h57
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxcommon.c674
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxcommon.h133
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxconsole.c1023
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxconsole.h60
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxdetach.c59
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxdummy.c87
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxdummy.h44
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxeq.c309
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxeq.h44
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxevents.c716
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxevents.h47
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxinputinit.c1298
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxinputinit.h294
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxmap.c122
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxmap.h43
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxmotion.c144
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxmotion.h50
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxsigio.c234
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxsigio.h46
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/dmxxinput.c156
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/lnx-keyboard.c975
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/lnx-keyboard.h64
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/lnx-ms.c323
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/lnx-ms.h56
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/lnx-ps2.c291
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/lnx-ps2.h56
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/usb-common.c383
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/usb-common.h56
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/usb-keyboard.c442
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/usb-keyboard.h49
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/usb-mouse.c127
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/usb-mouse.h49
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/usb-other.c162
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/usb-other.h49
-rw-r--r--nx-X11/programs/Xserver/hw/dmx/input/usb-private.h118
-rw-r--r--nx-X11/programs/Xserver/hw/kdrive/README7
-rw-r--r--nx-X11/programs/Xserver/hw/sun/Imakefile90
-rw-r--r--nx-X11/programs/Xserver/hw/sun/README118
-rw-r--r--nx-X11/programs/Xserver/hw/sun/Xsun.man176
-rw-r--r--nx-X11/programs/Xserver/hw/sun/circleset.h136
-rw-r--r--nx-X11/programs/Xserver/hw/sun/constype.c216
-rw-r--r--nx-X11/programs/Xserver/hw/sun/constype.man80
-rw-r--r--nx-X11/programs/Xserver/hw/sun/kbd_mode.c155
-rw-r--r--nx-X11/programs/Xserver/hw/sun/kbd_mode.man53
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sun.h446
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunCfb.c517
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunCfb24.c139
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunCursor.c281
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunFbs.c259
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunGX.c2906
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunGX.h238
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunInit.c960
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunIo.c305
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunKbd.c1071
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunKeyMap.c5797
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunMfb.c108
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunMouse.c399
-rw-r--r--nx-X11/programs/Xserver/hw/sun/sunMultiDepth.c277
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/Imakefile78
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/btreg.h81
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/btvar.h74
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/cgsixreg.h206
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/fbio.h186
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/patch.Console428
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/patch.Console-2.4.0493
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sun.h486
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyCfb.c372
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyFbs.c292
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c648
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c389
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyKbd.c1080
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyMouse.c649
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyUtil.c509
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/vuid_event.h88
-rw-r--r--nx-X11/programs/Xserver/hw/vfb/Imakefile71
-rw-r--r--nx-X11/programs/Xserver/hw/vfb/InitInput.c344
-rw-r--r--nx-X11/programs/Xserver/hw/vfb/InitOutput.c1046
-rw-r--r--nx-X11/programs/Xserver/hw/vfb/Xvfb.man132
-rw-r--r--nx-X11/programs/Xserver/hw/vfb/lk201kbd.h159
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/Imakefile275
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/atKeynames.h298
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/fourcc.h161
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/modeline2c.pl110
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/scoasm.h143
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86.h447
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86AutoConfig.c368
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Bus.c3317
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Bus.h162
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Config.c2740
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Config.h63
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Configure.c1049
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Cursor.c788
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86DGA.c1267
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86DPMS.c222
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Debug.c197
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86DefModes.c160
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86DoProbe.c129
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c130
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Events.c1865
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Globals.c254
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Helper.c2983
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86InPriv.h48
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Init.c2035
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Io.c507
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Kbd.c395
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86KbdBSD.c1266
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86KbdLnx.c651
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86KbdMach.c317
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Keymap.h455
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86MiscExt.c660
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Mode.c2185
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Module.h226
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Opt.h114
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Option.c884
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86PM.c225
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86PciInfo.h726
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Priv.h228
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Privstr.h234
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86RandR.c438
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Resources.h140
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Versions.c81
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86VidMode.c722
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86XKB.c82
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Xinput.c1513
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86Xinput.h220
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86cmap.c1123
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86cmap.h76
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86fbBus.c97
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86fbman.c1445
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86fbman.h227
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86isaBus.c142
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86noBus.c75
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86pciBus.c3506
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86pciBus.h99
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86sbusBus.c709
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86sbusBus.h98
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86str.h1140
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86xv.c2050
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86xv.h271
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86xvmc.c243
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86xvmc.h164
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xf86xvpriv.h86
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xisb.c180
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xisb.h64
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/common/xorgHelper.c24
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/Imakefile130
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/README.OS-lib506
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/assyntax.h753
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/Imakefile242
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/alpha_video.c735
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/arm_video.c690
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsdResource.c194
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_KbdMap.c1087
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_VTsw.c96
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_apm.c141
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_axp.c73
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_ev56.c91
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_init.c738
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_io.c294
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_jstk.c189
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c573
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.h5
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kmod.c31
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c203
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c792
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/drm/Imakefile63
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/i386_video.c999
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/Imakefile10
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/data.c95
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/descr.c76
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/parse.c404
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usage.c199
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb.3191
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb.h95
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb_hid_usages1079
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usbvar.h34
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/memrange.h72
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/ppc_video.c141
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/sparc64_video.c113
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/Imakefile46
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_init.c156
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_io.c110
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_mouse.c34
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_video.c182
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c470
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.h42
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Imakefile165
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Pci.c1453
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Pci.h449
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Sbus.c637
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/altixPCI.c120
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/altixPCI.h20
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/axpPci.c478
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.c64
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.h42
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/freebsdPci.c171
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/ix86Pci.c704
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c894
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/netbsdPci.c132
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/ppcPci.c311
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/sparcPci.c1052
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/xf86Pci.h807
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/xf86Sbus.h70
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c1133
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.h40
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/Imakefile35
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/bios_DGmmap.c70
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_init.c182
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_io.c96
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_kbd.c120
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_kbdEv.c47
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_tty.c175
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_video.c441
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/Imakefile40
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/bios_mmap.c95
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_init.c90
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_io.c139
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_mouse.c300
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_video.c181
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/int10Defines.h90
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/Imakefile142
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile64
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c60
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/Imakefile77
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c649
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/Imakefile55
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c302
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/x86emu/Imakefile86
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx.h55
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnxResource.c291
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_KbdMap.c606
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_acpi.c170
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_agp.c371
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_apm.c192
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_axp.c200
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_ev56.c151
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_font.c291
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_ia64.c74
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c415
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c275
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_jstk.c188
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c559
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.h5
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_kmod.c113
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_mouse.c206
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_pci.c230
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c1169
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/Imakefile62
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_init.c193
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_io.c166
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_mmap.c73
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_mouse.c34
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_noinline.c178
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.S70
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.c52
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_video.c711
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/misc/BUSmemcpy.S153
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/misc/BUSmemcpy.c413
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/misc/Delay.c44
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/misc/IODelay.S53
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/misc/IODelay.c28
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/misc/Imakefile54
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/misc/PortIO.S57
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/misc/SlowBcopy.S108
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/misc/SlowBcopy.c114
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/misc/xf86_IlHack.c19
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/misc/xf86_Util.c96
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/nto/Imakefile37
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/nto/README29
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_init.c104
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_io.c118
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_ioperm.c48
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_kbdEv.c53
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_mouse.c210
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_video.c170
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/Imakefile45
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/README78
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/Imakefile110
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/os2.c452
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_VTsw.c340
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_bios.c143
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_diag.c263
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_init.c244
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_io.c257
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_ioperm.c140
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbd.c158
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbdEv.c511
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_mouse.c653
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.c497
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.h62
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_serial.c517
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_stubs.c403
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_video.c241
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/Imakefile48
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_devs.c126
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_init.c473
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_map.c239
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_mouse.c60
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_pci.c1072
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_ppc.c251
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/Imakefile37
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_VTsw.c116
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_init.c175
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_io.c110
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_kbd.c104
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_mouse.c267
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_select.c75
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_utils.c30
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_video.c183
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sco/Imakefile56
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sco/VTsw_sco.c119
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_KbdMap.c304
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_init.c296
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_io.c269
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_iop.c136
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_kbd.c530
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_kbd.h20
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_mouse.c261
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_video.c296
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/VTsw_noop.c56
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/VTsw_usl.c92
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/agp_noop.c107
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/at_scancode.c132
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/bios_devmem.c77
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/bios_mmap.c164
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.c244
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.h46
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/inout.S111
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/ioperm_noop.c51
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/kbd.c39
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/kmod_noop.c39
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/libc_wrapper.c2153
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/pm_noop.c48
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/posix_tty.c689
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/sigio.c312
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/sigiostubs.c86
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/stdPci.c52
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/stdResource.c182
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/std_kbdEv.c50
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/sysv_kbd.c106
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/vidmem.c300
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/xf86Axp.c50
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/shared/xf86Axp.h36
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile119
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/agpgart.h109
-rwxr-xr-xnx-X11/programs/Xserver/hw/xfree86/os-support/sunos/find_deps.pl150
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/solaris-amd64.S73
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/solaris-ia32.S73
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/solaris-sparcv8plus.S144
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_agp.c339
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_bios.c104
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_init.c393
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_inout.s124
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_io.c160
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbd.c662
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbd.h72
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbdEv.c892
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_mouse.c719
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_vid.c237
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/Imakefile58
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_init.c254
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_io.c78
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_mouse.c64
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_video.c369
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/xqueue.c543
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/xqueue.h12
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/usl/Imakefile40
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_KbdMap.c304
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_init.c359
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_io.c172
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_iop.c108
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_kbd.c456
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_kbd.h14
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_mouse.c181
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_video.c111
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_vtsw.c97
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_xqueue.c360
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_xqueue.h9
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/xf86OSKbd.h133
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/xf86OSmouse.h295
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/xf86OSpriv.h57
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h759
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h277
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Configint.h226
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/DRI.c187
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Device.c403
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Extensions.c111
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Files.c295
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Flags.c525
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Imakefile51
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Input.c215
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Keyboard.c306
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Layout.c513
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Module.c261
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Monitor.c907
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Pointer.c236
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Screen.c578
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Vendor.c258
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/Video.c297
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/configProcs.h132
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/cpconfig.c123
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/read.c321
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/scan.c949
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/write.c220
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/xf86Optrec.h113
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/xf86Parser.h483
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/parser/xf86tokens.h280
-rw-r--r--nx-X11/programs/Xserver/hw/xfree86/xf86Date.h38
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Args.c197
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Args.h40
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Color.c497
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Color.h58
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Cursor.c159
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Display.c195
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Display.h46
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Drawable.h28
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Events.c226
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Events.h31
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Font.c91
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/GC.c340
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/GCOps.c329
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/GCOps.h70
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/GetTime.c51
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Handlers.c47
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Handlers.h24
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Imakefile90
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Init.c164
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Init.h21
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Keyboard.c339
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Keyboard.h30
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Pixmap.c141
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Pointer.c79
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Pointer.h31
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Screen.c458
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Screen.h27
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/TestExt.c69
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Visual.c72
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Visual.h27
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Window.c558
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/XNCursor.h35
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/XNFont.h37
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/XNGC.h44
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/XNPixmap.h45
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/XNWindow.h80
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Xnest.h96
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/Xnest.man264
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/icon14
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/os2Stub.c388
-rw-r--r--nx-X11/programs/Xserver/hw/xnest/screensaver686
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/ChangeLog663
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/Imakefile310
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/InitInput.c204
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/InitOutput.c1172
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/README141
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/X-boxed.icobin12902 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/X.icobin20870 -> 0 bytes
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/XWin.man287
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/XWin.rc110
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/XWinrc.man180
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/_usr_X11R6_lib_X11_system.XWinrc125
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/ddraw.h2108
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/win.h1466
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winallpriv.c185
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winauth.c132
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winblock.c106
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winclip.c42
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winclipboard.h164
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winclipboardinit.c143
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winclipboardtextconv.c159
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winclipboardthread.c477
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winclipboardunicode.c69
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winclipboardwndproc.c585
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winclipboardwrappers.c544
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winclipboardxevents.c796
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/wincmap.c675
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winconfig.c1185
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winconfig.h345
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/wincreatewnd.c642
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/wincursor.c615
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/windialogs.c788
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winengine.c336
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winerror.c143
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winfillsp.c876
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winfont.c80
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/wingc.c259
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/wingetsp.c193
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winglobals.c138
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winkeybd.c650
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winkeybd.h310
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winkeyhook.c194
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winkeymap.h138
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winkeynames.h204
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winlayouts.h257
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winmessages.h1030
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winmisc.c152
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winmouse.c341
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winms.h46
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winmsg.c180
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winmsg.h52
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winmultiwindowclass.c326
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winmultiwindowclass.h116
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winmultiwindowicons.c478
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winmultiwindowshape.c212
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winmultiwindowwindow.c1056
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winmultiwindowwm.c1444
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winmultiwindowwndproc.c1035
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winnativegdi.c547
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winpfbdd.c685
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winpixmap.c242
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winpntwin.c47
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winpolyline.c57
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winprefs.c799
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winprefs.h163
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winprefslex.l116
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winprefsyacc.y353
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winpriv.c134
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winpriv.h15
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winprocarg.c1561
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winpushpxl.c226
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winrandr.c141
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winregistry.c71
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winresource.h56
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winrop.c145
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winscrinit.c794
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winsetsp.c196
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winshaddd.c1443
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winshadddnl.c1455
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winshadgdi.c1323
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/wintrayicon.c211
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winvalargs.c188
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winvideo.c210
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winwakeup.c72
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winwin32rootless.c1092
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winwin32rootlesswindow.c476
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winwin32rootlesswndproc.c1324
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winwindow.c650
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winwindow.h151
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/winwindowswm.c666
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/winwndproc.c1273
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/COPYING25
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/xlaunch/config.cc282
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/xlaunch/config.h60
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/main.cc700
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/resources/dialog.rc118
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/resources/fullscreen.bmpbin22554 -> 0 bytes
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/resources/images.rc29
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/resources/multiwindow.bmpbin22554 -> 0 bytes
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/resources/nodecoration.bmpbin22554 -> 0 bytes
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/resources/resources.h99
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/resources/resources.rc30
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/strings.rc108
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/resources/windowed.bmpbin22554 -> 0 bytes
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/window/dialog.cc86
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/window/dialog.h54
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/xlaunch/window/util.cc1112
-rw-r--r--nx-X11/programs/Xserver/hw/xwin/xlaunch/window/util.h53
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/window/window.cc284
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/window/window.h114
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/window/wizard.cc244
-rwxr-xr-xnx-X11/programs/Xserver/hw/xwin/xlaunch/window/wizard.h59
-rw-r--r--nx-X11/programs/Xserver/ilbm/Imakefile63
-rw-r--r--nx-X11/programs/Xserver/ilbm/README17
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbm.h1051
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmbitblt.c483
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmblt.c573
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmbres.c328
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmbresd.c219
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmbstore.c159
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmclip.c246
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmcmap.c128
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmfillarc.c377
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmfillrct.c299
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmfillsp.c1149
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmfont.c82
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmgc.c715
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmgetsp.c170
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmhrzvert.c213
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmimage.c441
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmimggblt.c474
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmline.c705
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmmisc.c99
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmpixmap.c295
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmply1rct.c303
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmplygblt.c469
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmpntarea.c656
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmpntwin.c131
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmpolypnt.c152
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmpushpxl.c263
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmscrinit.c251
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmsetsp.c269
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmtegblt.c599
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmtile.c857
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmwindow.c323
-rw-r--r--nx-X11/programs/Xserver/ilbm/ilbmzerarc.c214
-rw-r--r--nx-X11/programs/Xserver/iplan2p2/Imakefile6
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/Imakefile119
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/ipl.h1254
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplallpriv.c93
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplbitblt.c388
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplblt.c431
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplbres.c186
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplbresd.c212
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplbstore.c159
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplcmap.c126
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplfillarc.c271
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplfillrct.c281
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplfillsp.c384
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplgc.c786
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplgetsp.c166
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplhrzvert.c128
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplimage.c87
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplline.c758
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplmap.h176
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplmergerop.h146
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplmskbits.c108
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplmskbits.h500
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplpack.c316
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplpack.h10
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplpixmap.c386
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplply1rct.c310
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplpntwin.c341
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplpolypnt.c123
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplrrop.c219
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplrrop.h80
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplscrinit.c233
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplsetsp.c304
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplsolid.c221
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/ipltegblt.c221
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/ipltile32.c272
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/ipltileodd.c869
-rw-r--r--nx-X11/programs/Xserver/iplan2p4/iplwindow.c343
-rw-r--r--nx-X11/programs/Xserver/iplan2p8/Imakefile6
-rw-r--r--nx-X11/programs/Xserver/lbx/Imakefile56
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxcmap.c1156
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxdata.h48
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxdix.c869
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxexts.c275
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxgfx.c854
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxmain.c1760
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxopts.c806
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxprop.c549
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxserve.h289
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxsquish.c158
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxsrvopts.h67
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxswap.c828
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxtables.c39
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxtags.c237
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxtags.h86
-rw-r--r--nx-X11/programs/Xserver/lbx/lbxzerorep.c420
-rw-r--r--nx-X11/programs/Xserver/mfb/Imakefile168
-rw-r--r--nx-X11/programs/Xserver/mfb/fastblt.h98
-rw-r--r--nx-X11/programs/Xserver/mfb/maskbits.c1061
-rw-r--r--nx-X11/programs/Xserver/mfb/mergerop.h400
-rw-r--r--nx-X11/programs/Xserver/mfb/mfb.h1158
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbbitblt.c510
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbblt.c589
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbbres.c370
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbbresd.c209
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbbstore.c155
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbclip.c280
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbcmap.c164
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbfillarc.c333
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbfillrct.c228
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbfillsp.c1028
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbfont.c88
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbgc.c1151
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbgetsp.c159
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbhrzvert.c179
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbimage.c177
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbimggblt.c445
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbline.c757
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbmisc.c100
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbmodule.c52
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbpixmap.c298
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbply1rct.c261
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbplygblt.c399
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbpntarea.c300
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbpntwin.c127
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbpolypnt.c145
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbpushpxl.c287
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbscrclse.c66
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbscrinit.c210
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbsetsp.c283
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbtegblt.c368
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbtile.c240
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbwindow.c341
-rw-r--r--nx-X11/programs/Xserver/mfb/mfbzerarc.c258
-rw-r--r--nx-X11/programs/Xserver/mfb/module/Imakefile6
-rw-r--r--nx-X11/programs/Xserver/miext/layer/Imakefile49
-rw-r--r--nx-X11/programs/Xserver/miext/layer/layer.h149
-rw-r--r--nx-X11/programs/Xserver/miext/layer/layergc.c194
-rw-r--r--nx-X11/programs/Xserver/miext/layer/layerinit.c363
-rw-r--r--nx-X11/programs/Xserver/miext/layer/layerpict.c149
-rw-r--r--nx-X11/programs/Xserver/miext/layer/layerstr.h425
-rw-r--r--nx-X11/programs/Xserver/miext/layer/layerwin.c487
-rw-r--r--nx-X11/programs/Xserver/miext/layer/laymodule.c60
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/Imakefile54
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/Imakefile.NX.original54
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/Imakefile.X.original54
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/README.txt403
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/accel/Imakefile30
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/accel/rlAccel.c155
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/accel/rlAccel.h141
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/accel/rlBlt.c370
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/accel/rlCopy.c107
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/accel/rlFill.c221
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/accel/rlFillRect.c118
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/accel/rlFillSpans.c106
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/accel/rlGlyph.c170
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/accel/rlSolid.c112
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/rootless.h436
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/rootlessCommon.c405
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/rootlessCommon.h261
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/rootlessConfig.h68
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/rootlessGC.c1508
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/rootlessScreen.c670
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/rootlessValTree.c648
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/rootlessWindow.c1468
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/rootlessWindow.h64
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/safeAlpha/Imakefile18
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/safeAlpha/safeAlpha.h45
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/safeAlpha/safeAlphaPicture.c643
-rw-r--r--nx-X11/programs/Xserver/miext/rootless/safeAlpha/safeAlphaWindow.c175
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/Imakefile66
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shadow.c1544
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shadow.h179
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shalloc.c52
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shmodule.c60
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shpacked.c114
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shplanar.c179
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shplanar8.c174
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrot16pack.c32
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrot16pack_180.c33
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrot16pack_270.c33
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrot16pack_90.c33
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrot32pack.c32
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrot32pack_180.c33
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrot32pack_270.c33
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrot32pack_90.c33
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrot8pack.c32
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrot8pack_180.c33
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrot8pack_270.c33
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrot8pack_90.c33
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrotate.c314
-rw-r--r--nx-X11/programs/Xserver/miext/shadow/shrotpack.h186
-rw-r--r--nx-X11/programs/xterm/256colres.h250
-rw-r--r--nx-X11/programs/xterm/256colres.pl57
-rw-r--r--nx-X11/programs/xterm/88colres.h82
-rw-r--r--nx-X11/programs/xterm/88colres.pl60
-rw-r--r--nx-X11/programs/xterm/AAA_README_VMS.txt48
-rw-r--r--nx-X11/programs/xterm/INSTALL487
-rw-r--r--nx-X11/programs/xterm/Imakefile325
-rw-r--r--nx-X11/programs/xterm/Imakefile.NX.original325
-rw-r--r--nx-X11/programs/xterm/Imakefile.X.original289
-rw-r--r--nx-X11/programs/xterm/MANIFEST126
-rw-r--r--nx-X11/programs/xterm/Makefile.in243
-rw-r--r--nx-X11/programs/xterm/README15
-rw-r--r--nx-X11/programs/xterm/README.i18n199
-rw-r--r--nx-X11/programs/xterm/README.os39074
-rw-r--r--nx-X11/programs/xterm/TekPrsTbl.c2622
-rw-r--r--nx-X11/programs/xterm/Tekparse.def42
-rw-r--r--nx-X11/programs/xterm/Tekparse.h99
-rw-r--r--nx-X11/programs/xterm/Tekproc.c1782
-rw-r--r--nx-X11/programs/xterm/Tests42
-rw-r--r--nx-X11/programs/xterm/UXTerm.ad38
-rw-r--r--nx-X11/programs/xterm/VTPrsTbl.c7216
-rw-r--r--nx-X11/programs/xterm/VTparse.def142
-rw-r--r--nx-X11/programs/xterm/VTparse.h248
-rw-r--r--nx-X11/programs/xterm/XTerm-col.ad130
-rw-r--r--nx-X11/programs/xterm/XTerm.ad185
-rw-r--r--nx-X11/programs/xterm/aclocal.m42359
-rw-r--r--nx-X11/programs/xterm/button.c3284
-rw-r--r--nx-X11/programs/xterm/charclass.c142
-rw-r--r--nx-X11/programs/xterm/charclass.h13
-rw-r--r--nx-X11/programs/xterm/charproc.c7300
-rw-r--r--nx-X11/programs/xterm/charproc.c.NX.original7300
-rw-r--r--nx-X11/programs/xterm/charproc.c.X.original7276
-rw-r--r--nx-X11/programs/xterm/charsets.c461
-rw-r--r--nx-X11/programs/xterm/config.guess1499
-rw-r--r--nx-X11/programs/xterm/config.sub1577
-rw-r--r--nx-X11/programs/xterm/configure11548
-rw-r--r--nx-X11/programs/xterm/configure.in779
-rw-r--r--nx-X11/programs/xterm/ctlseqs.ms1876
-rw-r--r--nx-X11/programs/xterm/cursor.c345
-rw-r--r--nx-X11/programs/xterm/data.c127
-rw-r--r--nx-X11/programs/xterm/data.h207
-rw-r--r--nx-X11/programs/xterm/doublechr.c267
-rw-r--r--nx-X11/programs/xterm/error.h90
-rw-r--r--nx-X11/programs/xterm/fontutils.c2371
-rw-r--r--nx-X11/programs/xterm/fontutils.h89
-rwxr-xr-xnx-X11/programs/xterm/gen-pc-fkeys.pl98
-rw-r--r--nx-X11/programs/xterm/input.c1259
-rw-r--r--nx-X11/programs/xterm/install.sh294
-rw-r--r--nx-X11/programs/xterm/keysym2ucs.c857
-rw-r--r--nx-X11/programs/xterm/keysym2ucs.h9
-rw-r--r--nx-X11/programs/xterm/link_axp.com107
-rw-r--r--nx-X11/programs/xterm/main.c4943
-rw-r--r--nx-X11/programs/xterm/main.c.NX.original4943
-rw-r--r--nx-X11/programs/xterm/main.c.X.original4912
-rw-r--r--nx-X11/programs/xterm/main.h89
-rw-r--r--nx-X11/programs/xterm/make.com90
-rw-r--r--nx-X11/programs/xterm/menu.c2959
-rw-r--r--nx-X11/programs/xterm/menu.h441
-rw-r--r--nx-X11/programs/xterm/minstall.sh29
-rw-r--r--nx-X11/programs/xterm/misc.c3260
-rw-r--r--nx-X11/programs/xterm/mkdirs.sh38
-rw-r--r--nx-X11/programs/xterm/os2main.c2155
-rw-r--r--nx-X11/programs/xterm/plink.sh27
-rw-r--r--nx-X11/programs/xterm/precompose.c1041
-rw-r--r--nx-X11/programs/xterm/precompose.h11
-rw-r--r--nx-X11/programs/xterm/print.c608
-rw-r--r--nx-X11/programs/xterm/proto.h29
-rw-r--r--nx-X11/programs/xterm/ptydata.c420
-rw-r--r--nx-X11/programs/xterm/ptyx.h2016
-rw-r--r--nx-X11/programs/xterm/resize.c600
-rw-r--r--nx-X11/programs/xterm/resize.man84
-rw-r--r--nx-X11/programs/xterm/screen.c1853
-rw-r--r--nx-X11/programs/xterm/scrollbar.c682
-rw-r--r--nx-X11/programs/xterm/sinstall.sh156
-rw-r--r--nx-X11/programs/xterm/tabs.c182
-rw-r--r--nx-X11/programs/xterm/tektests/aitest.tek1
-rw-r--r--nx-X11/programs/xterm/tektests/dmerc.tek1
-rw-r--r--nx-X11/programs/xterm/tektests/fotest.tekbin16231 -> 0 bytes
-rw-r--r--nx-X11/programs/xterm/tektests/imtest.tek1
-rw-r--r--nx-X11/programs/xterm/tektests/imtesth.tek1
-rw-r--r--nx-X11/programs/xterm/tektests/ocpred.tek3
-rw-r--r--nx-X11/programs/xterm/tektests/usmap.tekbin6939 -> 0 bytes
-rw-r--r--nx-X11/programs/xterm/termcap209
-rw-r--r--nx-X11/programs/xterm/terminfo1012
-rw-r--r--nx-X11/programs/xterm/testxmc.c226
-rw-r--r--nx-X11/programs/xterm/trace.c490
-rw-r--r--nx-X11/programs/xterm/trace.h79
-rw-r--r--nx-X11/programs/xterm/unicode/README24
-rw-r--r--nx-X11/programs/xterm/unicode/convmap.pl177
-rw-r--r--nx-X11/programs/xterm/unicode/keysym.map1062
-rw-r--r--nx-X11/programs/xterm/unicode/make-precompose.sh8
-rw-r--r--nx-X11/programs/xterm/unicode/precompose.c.head16
-rw-r--r--nx-X11/programs/xterm/unicode/precompose.c.tail23
-rw-r--r--nx-X11/programs/xterm/util.c2951
-rw-r--r--nx-X11/programs/xterm/uxterm82
-rw-r--r--nx-X11/programs/xterm/version.h14
-rw-r--r--nx-X11/programs/xterm/vms.c725
-rw-r--r--nx-X11/programs/xterm/vms.h39
-rw-r--r--nx-X11/programs/xterm/vttests/16colors.sh90
-rw-r--r--nx-X11/programs/xterm/vttests/256colors.pl12
-rw-r--r--nx-X11/programs/xterm/vttests/256colors2.pl63
-rw-r--r--nx-X11/programs/xterm/vttests/88colors.pl13
-rw-r--r--nx-X11/programs/xterm/vttests/88colors2.pl66
-rw-r--r--nx-X11/programs/xterm/vttests/8colors.sh78
-rw-r--r--nx-X11/programs/xterm/vttests/acolors.sh64
-rw-r--r--nx-X11/programs/xterm/vttests/doublechars.sh87
-rw-r--r--nx-X11/programs/xterm/vttests/dynamic.sh60
-rw-r--r--nx-X11/programs/xterm/vttests/fonts.sh59
-rwxr-xr-xnx-X11/programs/xterm/vttests/resize.pl100
-rw-r--r--nx-X11/programs/xterm/vttests/resize.sh82
-rwxr-xr-xnx-X11/programs/xterm/vttests/tcapquery.pl162
-rw-r--r--nx-X11/programs/xterm/vttests/title.sh55
-rw-r--r--nx-X11/programs/xterm/wcwidth.c306
-rw-r--r--nx-X11/programs/xterm/wcwidth.h14
-rw-r--r--nx-X11/programs/xterm/xcharmouse.h76
-rw-r--r--nx-X11/programs/xterm/xstrings.c146
-rw-r--r--nx-X11/programs/xterm/xstrings.h44
-rw-r--r--nx-X11/programs/xterm/xterm.dat160
-rw-r--r--nx-X11/programs/xterm/xterm.h1101
-rw-r--r--nx-X11/programs/xterm/xterm.log.html6641
-rw-r--r--nx-X11/programs/xterm/xterm.man4418
-rw-r--r--nx-X11/programs/xterm/xterm_axp.opt28
-rw-r--r--nx-X11/programs/xterm/xterm_io.h309
-rw-r--r--nx-X11/programs/xterm/xtermcfg.hin176
-rw-r--r--nx-X11/programs/xterm/xutf8.c378
-rw-r--r--nx-X11/programs/xterm/xutf8.h61
1790 files changed, 0 insertions, 581980 deletions
diff --git a/nx-X11/programs/Xserver/GL/apple/Imakefile b/nx-X11/programs/Xserver/GL/apple/Imakefile
deleted file mode 100644
index 36b780c73..000000000
--- a/nx-X11/programs/Xserver/GL/apple/Imakefile
+++ /dev/null
@@ -1,49 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/GL/apple/Imakefile,v 1.2 2003/09/16 00:36:11 torrey Exp $
-
-#include <Server.tmpl>
-
- XPRDIR = $(SERVERSRC)/hw/darwin/quartz/xpr
-
-LinkSourceFile(x-list.c,$(XPRDIR))
-LinkSourceFile(x-list.h,$(XPRDIR))
-LinkSourceFile(x-hash.c,$(XPRDIR))
-LinkSourceFile(x-hash.h,$(XPRDIR))
-LinkSourceFile(compsize.c,$(MESASRCDIR)/src/glx/x11)
-
- BASE_SRCS = compsize.c
- BASE_OBJS = compsize.o
-
- AGL_SRCS = aglGlx.c
- AGL_OBJS = aglGlx.o
-
-#if HasXplugin
- GL_SRCS = indirect.c x-hash.c x-list.c
- GL_OBJS = indirect.o x-hash.o x-list.o
-
- AS = /System/Library/Frameworks/ApplicationServices.framework
-
- GL_INCLUDES = -I$(LIBSRC)/GL/apple -I$(XPRDIR) -I$(XPINCDIR) \
- -F$(AS)/Frameworks
-#endif
-
- SRCS = $(BASE_SRCS) $(AGL_SRCS) $(GL_SRCS)
- OBJS = $(BASE_OBJS) $(AGL_OBJS) $(GL_OBJS)
-
- INCLUDES = -I. -I$(INCLUDESRC) -I$(XINCLUDESRC) -I$(EXTINCSRC) \
- -I$(LIBSRC)/GL/glx -I$(LIBSRC)/GL/include \
- -I$(SERVERSRC)/mi -I$(SERVERSRC)/include -I$(FONTINCSRC) \
- -I$(SERVERSRC)/render -I$(SERVERSRC)/GL/include \
- -I$(SERVERSRC)/GL/glx -I$(SERVERSRC)/hw/darwin/quartz/cr \
- -I$(SERVERSRC)/hw/darwin/quartz $(GL_INCLUDES) \
- -I$(MESASRCDIR)/include -I$(MESASRCDIR)/src/mesa/glapi \
- -I$(XF86OSSRC)
-
- DEFINES = $(GLX_DEFINES)
-
-NormalLibraryTarget(AGLcore,$(AGL_OBJS) $(BASE_OBJS))
-#if HasXplugin
-NormalLibraryTarget(CGLcore,$(GL_OBJS) $(BASE_OBJS))
-#endif
-NormalLibraryObjectRule()
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/GL/apple/aglGlx.c b/nx-X11/programs/Xserver/GL/apple/aglGlx.c
deleted file mode 100644
index be846be83..000000000
--- a/nx-X11/programs/Xserver/GL/apple/aglGlx.c
+++ /dev/null
@@ -1,1355 +0,0 @@
-/*
- * GLX implementation that uses Apple's AGL.framework for OpenGL
- *
- * FIXME: This file and indirect.c are very similar. The two should be
- * merged by introducing suitable abstractions.
- */
-/*
- * Copyright (c) 2002 Greg Parker. All Rights Reserved.
- * Copyright (c) 2004 Torrey T. Lyons. All Rights Reserved.
- *
- * Large portions of this file are copied from Mesa's xf86glx.c,
- * which contains the following copyright:
- *
- * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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.
- */
-/* $XFree86: xc/programs/Xserver/GL/apple/aglGlx.c,v 1.2 2003/09/16 00:36:11 torrey Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "quartzCommon.h"
-#include <AGL/agl.h>
-#include "cr.h"
-
-// X11 and X11's glx
-#undef BOOL
-#define BOOL xBOOL
-#include "quartz.h"
-#include <miscstruct.h>
-#include <windowstr.h>
-#include <resource.h>
-#include <GL/glxint.h>
-#include <GL/glxtokens.h>
-#include <scrnintstr.h>
-#include <glxserver.h>
-#include <glxscreens.h>
-#include <glxdrawable.h>
-#include <glxcontext.h>
-#include <glxext.h>
-#include <glxutil.h>
-#include <glxscreens.h>
-#include <GL/internal/glcore.h>
-#undef BOOL
-
-#include "glcontextmodes.h"
-
-// ggs: needed to call back to glx with visual configs
-extern void GlxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs, void **configprivs);
-
-// Write debugging output, or not
-#ifdef GLAQUA_DEBUG
-#define GLAQUA_DEBUG_MSG ErrorF
-#else
-#define GLAQUA_DEBUG_MSG(a, ...)
-#endif
-
-
-// The following GL functions don't have an EXT suffix in OpenGL.framework.
-GLboolean glAreTexturesResidentEXT (GLsizei a, const GLuint *b, GLboolean *c) {
- return glAreTexturesResident(a, b, c);
-}
-void glDeleteTexturesEXT (GLsizei d, const GLuint *e) {
- glDeleteTextures(d, e);
-}
-void glGenTexturesEXT (GLsizei f, GLuint *g) {
- glGenTextures(f, g);
-}
-GLboolean glIsTextureEXT (GLuint h) {
- return glIsTexture(h);
-}
-
-
-// some prototypes
-static Bool glAquaScreenProbe(int screen);
-static Bool glAquaInitVisuals(VisualPtr *visualp, DepthPtr *depthp,
- int *nvisualp, int *ndepthp,
- int *rootDepthp, VisualID *defaultVisp,
- unsigned long sizes, int bitsPerRGB);
-static void glAquaSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs,
- void **privates);
-static __GLinterface *glAquaCreateContext(__GLimports *imports,
- __GLcontextModes *mode,
- __GLinterface *shareGC);
-static void glAquaCreateBuffer(__GLXdrawablePrivate *glxPriv);
-static void glAquaResetExtension(void);
-
-
-/*
- * This structure is statically allocated in the __glXScreens[]
- * structure. This struct is not used anywhere other than in
- * __glXScreenInit to initialize each of the active screens
- * (__glXActiveScreens[]). Several of the fields must be initialized by
- * the screenProbe routine before they are copied to the active screens
- * struct. In particular, the contextCreate, modes, numVisuals,
- * and numUsableVisuals fields must be initialized.
- */
-static __GLXscreenInfo __glDDXScreenInfo = {
- glAquaScreenProbe, /* Must be generic and handle all screens */
- glAquaCreateContext, /* Substitute screen's createContext routine */
- glAquaCreateBuffer, /* Substitute screen's createBuffer routine */
- NULL, /* Set up modes in probe */
- NULL, /* Set up pVisualPriv in probe */
- 0, /* Set up numVisuals in probe */
- 0, /* Set up numUsableVisuals in probe */
- "Vendor String", /* GLXvendor is overwritten by __glXScreenInit */
- "Version String", /* GLXversion is overwritten by __glXScreenInit */
- "Extensions String", /* GLXextensions is overwritten by __glXScreenInit */
- NULL /* WrappedPositionWindow is overwritten */
-};
-
-void *__glXglDDXScreenInfo(void) {
- return &__glDDXScreenInfo;
-}
-
-static __GLXextensionInfo __glDDXExtensionInfo = {
- GL_CORE_APPLE,
- glAquaResetExtension,
- glAquaInitVisuals,
- glAquaSetVisualConfigs
-};
-
-void *__glXglDDXExtensionInfo(void) {
- return &__glDDXExtensionInfo;
-}
-
-// prototypes
-
-static GLboolean glAquaDestroyContext(__GLcontext *gc);
-static GLboolean glAquaLoseCurrent(__GLcontext *gc);
-static GLboolean glAquaMakeCurrent(__GLcontext *gc);
-static GLboolean glAquaShareContext(__GLcontext *gc, __GLcontext *gcShare);
-static GLboolean glAquaCopyContext(__GLcontext *dst, const __GLcontext *src,
- GLuint mask);
-static GLboolean glAquaForceCurrent(__GLcontext *gc);
-
-/* Drawing surface notification callbacks */
-static GLboolean glAquaNotifyResize(__GLcontext *gc);
-static void glAquaNotifyDestroy(__GLcontext *gc);
-static void glAquaNotifySwapBuffers(__GLcontext *gc);
-
-/* Dispatch table override control for external agents like libGLS */
-static struct __GLdispatchStateRec* glAquaDispatchExec(__GLcontext *gc);
-static void glAquaBeginDispatchOverride(__GLcontext *gc);
-static void glAquaEndDispatchOverride(__GLcontext *gc);
-
-
-static __GLexports glAquaExports = {
- glAquaDestroyContext,
- glAquaLoseCurrent,
- glAquaMakeCurrent,
- glAquaShareContext,
- glAquaCopyContext,
- glAquaForceCurrent,
-
- glAquaNotifyResize,
- glAquaNotifyDestroy,
- glAquaNotifySwapBuffers,
-
- glAquaDispatchExec,
- glAquaBeginDispatchOverride,
- glAquaEndDispatchOverride
-};
-
-
-typedef struct {
- int num_vis;
- __GLcontextModes *modes;
- void **priv;
-
- // wrapped screen functions
- RealizeWindowProcPtr RealizeWindow;
- UnrealizeWindowProcPtr UnrealizeWindow;
-} glAquaScreenRec;
-
-static glAquaScreenRec glAquaScreens[MAXSCREENS];
-
-
-// __GLdrawablePrivate->private
-typedef struct {
- GLboolean (*resize)(__GLdrawableBuffer *buf, GLint x, GLint y,
- GLuint width, GLuint height,
- __GLdrawablePrivate *glPriv,
- GLuint bufferMask);
-} GLAquaDrawableRec;
-
-struct __GLcontextRec {
- struct __GLinterfaceRec interface; // required to be first
-
- AGLContext ctx;
- AGLPixelFormat pixelFormat;
-
- Bool isAttached; // TRUE if ctx is really attached to a window
-};
-
-
-// Context manipulation; return GL_FALSE on failure
-static GLboolean glAquaDestroyContext(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("glAquaDestroyContext (ctx 0x%x)\n", gc->ctx);
-
- if (gc) {
- if (gc->ctx) aglDestroyContext(gc->ctx);
- if (gc->pixelFormat) aglDestroyPixelFormat(gc->pixelFormat);
- free(gc);
- }
-
- return GL_TRUE;
-}
-
-
-static GLboolean glAquaLoseCurrent(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("glAquaLoseCurrent (ctx 0x%x)\n", gc->ctx);
-
- aglSetCurrentContext(NULL);
- __glXLastContext = NULL; // Mesa does this; why?
- gc->isAttached = FALSE;
-
- return GL_TRUE;
-}
-
-
-/*
- * Attach a GL context to a GL drawable
- * If glPriv is NULL, the context is detached.
- */
-static void attach(__GLcontext *gc, __GLdrawablePrivate *glPriv)
-{
- __GLXdrawablePrivate *glxPriv;
-
- if (glPriv == NULL) {
- // attaching to nothing
- GLAQUA_DEBUG_MSG("unattaching\n");
- aglSetDrawable(gc->ctx, NULL);
- gc->isAttached = FALSE;
- return;
- }
-
- // Note that when resizing, the X11 WindowPtr already has its
- // new size and position, but the Aqua window does not.
-
- glxPriv = (__GLXdrawablePrivate *)glPriv->other;
-
- if (glxPriv->type == DRAWABLE_WINDOW) {
- WindowPtr pWin = (WindowPtr) glxPriv->pDraw;
- WindowPtr topWin = quartzProcs->TopLevelParent(pWin);
- CRWindowPtr crWinPtr;
- AGLDrawable newPort;
-
- if (glPriv->width <= 0 || glPriv->height <= 0) {
- // attach to zero size drawable - will really attach later
- GLAQUA_DEBUG_MSG("couldn't attach to zero size drawable\n");
- aglSetDrawable(gc->ctx, NULL);
- gc->isAttached = FALSE;
- return;
- }
-
- crWinPtr = (CRWindowPtr) quartzProcs->FrameForWindow(pWin, FALSE);
-
- if (crWinPtr) {
- newPort = (AGLDrawable) crWinPtr->port;
- } else {
- newPort = NULL;
- }
-
- if (newPort) {
- // FIXME: won't be a CGrafPtr if currently offscreen or fullscreen
- AGLDrawable oldPort = aglGetDrawable(gc->ctx);
- // AGLDrawable newPort = GetWindowPort(window);
-
- // Frame is GLdrawable in X11 global coordinates
- // FIXME: Does this work for multiple screens?
- GLint frame[4] = {glPriv->xOrigin, glPriv->yOrigin, glPriv->width, glPriv->height};
- GLAQUA_DEBUG_MSG("global size %d %d %d %d\n",
- frame[0], frame[1], frame[2], frame[3]);
-
- // Convert to window-local coordinates
- frame[0] -= topWin->drawable.x - topWin->borderWidth;
- frame[1] -= topWin->drawable.y - topWin->borderWidth;
-
- // AGL uses flipped coordinates
- frame[1] = topWin->drawable.height + 2*topWin->borderWidth -
- frame[1] - frame[3];
-
- GLAQUA_DEBUG_MSG("local size %d %d %d %d\n",
- frame[0], frame[1], frame[2], frame[3]);
-
- if (oldPort != newPort) {
- // FIXME: retain/release windows
- if (!aglSetDrawable(gc->ctx, newPort)) return;
- }
- if (!aglSetInteger(gc->ctx, AGL_BUFFER_RECT, frame)) return;
- if (!aglEnable(gc->ctx, AGL_BUFFER_RECT)) return;
- if (!aglSetInteger(gc->ctx, AGL_SWAP_RECT, frame)) return;
- if (!aglEnable(gc->ctx, AGL_SWAP_RECT)) return;
- if (!aglUpdateContext(gc->ctx)) return;
-
- gc->isAttached = TRUE;
- GLAQUA_DEBUG_MSG("attached context 0x%x to window 0x%x\n", gc->ctx,
- pWin->drawable.id);
- } else {
- // attach to not-yet-realized window - will really attach later
- GLAQUA_DEBUG_MSG("couldn't attach to unrealized window\n");
- aglSetDrawable(gc->ctx, NULL);
- gc->isAttached = FALSE;
- }
- } else {
- GLAQUA_DEBUG_MSG("attach: attach to non-window unimplemented\n");
- aglSetDrawable(gc->ctx, NULL);
- gc->isAttached = FALSE;
- }
-}
-
-static GLboolean glAquaMakeCurrent(__GLcontext *gc)
-{
- __GLdrawablePrivate *glPriv = gc->interface.imports.getDrawablePrivate(gc);
-
- GLAQUA_DEBUG_MSG("glAquaMakeCurrent (ctx 0x%x)\n", gc->ctx);
-
- if (!gc->isAttached) {
- attach(gc, glPriv);
- }
-
- return aglSetCurrentContext(gc->ctx);
-}
-
-static GLboolean glAquaShareContext(__GLcontext *gc, __GLcontext *gcShare)
-{
- GLAQUA_DEBUG_MSG("glAquaShareContext unimplemented\n");
-
- return GL_TRUE;
-}
-
-
-static GLboolean glAquaCopyContext(__GLcontext *dst, const __GLcontext *src,
- GLuint mask)
-{
- GLAQUA_DEBUG_MSG("glAquaCopyContext\n");
-
- return aglCopyContext(src->ctx, dst->ctx, mask);
-}
-
-static GLboolean glAquaForceCurrent(__GLcontext *gc)
-{
- // GLAQUA_DEBUG_MSG("glAquaForceCurrent (ctx 0x%x)\n", gc->ctx);
- return aglSetCurrentContext(gc->ctx);
-}
-
-/* Drawing surface notification callbacks */
-
-static GLboolean glAquaNotifyResize(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("unimplemented glAquaNotifyResize");
- return GL_TRUE;
-}
-
-static void glAquaNotifyDestroy(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("unimplemented glAquaNotifyDestroy");
-}
-
-static void glAquaNotifySwapBuffers(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("unimplemented glAquaNotifySwapBuffers");
-}
-
-/* Dispatch table override control for external agents like libGLS */
-static struct __GLdispatchStateRec* glAquaDispatchExec(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("unimplemented glAquaDispatchExec");
- return NULL;
-}
-
-static void glAquaBeginDispatchOverride(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("unimplemented glAquaBeginDispatchOverride");
-}
-
-static void glAquaEndDispatchOverride(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("unimplemented glAquaEndDispatchOverride");
-}
-
-
-static AGLPixelFormat makeFormat(__GLcontextModes *mode)
-{
- int i;
- GLint attr[64]; // currently uses max of 30
- AGLPixelFormat result;
-
- GLAQUA_DEBUG_MSG("makeFormat\n");
-
- i = 0;
-
- // attr [i++] = AGL_ACCELERATED; // require hwaccel - BAD for multiscreen
- // attr [i++] = AGL_NO_RECOVERY; // disable fallback renderers - BAD
-
- if (mode->stereoMode) {
- attr[i++] = AGL_STEREO;
- }
- if (mode->doubleBufferMode) {
- attr[i++] = AGL_DOUBLEBUFFER;
- }
-
- if (mode->colorIndexMode) {
- attr[i++] = AGL_BUFFER_SIZE;
- attr[i++] = mode->indexBits;
- }
-
- if (mode->rgbMode) {
- attr[i++] = AGL_RGBA;
- attr[i++] = AGL_RED_SIZE;
- attr[i++] = mode->redBits;
- attr[i++] = AGL_GREEN_SIZE;
- attr[i++] = mode->greenBits;
- attr[i++] = AGL_BLUE_SIZE;
- attr[i++] = mode->blueBits;
- attr[i++] = AGL_ALPHA_SIZE;
- attr[i++] = mode->alphaBits;
- }
-
- if (mode->haveAccumBuffer) {
- attr[i++] = AGL_ACCUM_RED_SIZE;
- attr[i++] = mode->accumRedBits;
- attr[i++] = AGL_ACCUM_GREEN_SIZE;
- attr[i++] = mode->accumGreenBits;
- attr[i++] = AGL_ACCUM_BLUE_SIZE;
- attr[i++] = mode->accumBlueBits;
- attr[i++] = AGL_ACCUM_ALPHA_SIZE;
- attr[i++] = mode->accumAlphaBits;
- }
- if (mode->haveDepthBuffer) {
- attr[i++] = AGL_DEPTH_SIZE;
- attr[i++] = mode->depthBits;
- }
- if (mode->haveStencilBuffer) {
- attr[i++] = AGL_STENCIL_SIZE;
- attr[i++] = mode->stencilBits;
- }
-
- attr[i++] = AGL_AUX_BUFFERS;
- attr[i++] = mode->numAuxBuffers;
-
- attr[i++] = AGL_LEVEL;
- attr[i++] = mode->level;
-
- // mode->pixmapMode ?
-
- attr[i++] = AGL_NONE; // end of option list
-
- GLAQUA_DEBUG_MSG("makeFormat almost done\n");
- result = aglChoosePixelFormat(NULL, 0, attr);
- GLAQUA_DEBUG_MSG("makeFormat done (0x%x)\n", result);
- return result;
-}
-
-static __GLinterface *glAquaCreateContext(__GLimports *imports,
- __GLcontextModes *mode,
- __GLinterface *shareGC)
-{
- __GLcontext *result;
- __GLcontext *sharectx = (__GLcontext *)shareGC;
-
- GLAQUA_DEBUG_MSG("glAquaCreateContext\n");
-
- result = (__GLcontext *)calloc(1, sizeof(__GLcontext));
- if (!result) return NULL;
-
- result->interface.imports = *imports;
- result->interface.exports = glAquaExports;
-
- result->pixelFormat = makeFormat(mode);
- if (!result->pixelFormat) {
- free(result);
- return NULL;
- }
-
- result->ctx = aglCreateContext(result->pixelFormat,
- (sharectx && sharectx->ctx) ? sharectx->ctx : NULL);
-
- if (!result->ctx) {
- aglDestroyPixelFormat(result->pixelFormat);
- free(result);
- return NULL;
- }
-
- result->isAttached = FALSE;
-
- GLAQUA_DEBUG_MSG("glAquaCreateContext done\n");
- return (__GLinterface *)result;
-}
-
-
-Bool
-glAquaRealizeWindow(WindowPtr pWin)
-{
- // If this window has GL contexts, tell them to reattach
- Bool result;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- glAquaScreenRec *screenPriv = &glAquaScreens[pScreen->myNum];
- __GLXdrawablePrivate *glxPriv;
-
- GLAQUA_DEBUG_MSG("glAquaRealizeWindow\n");
-
- // Allow the window to be created (RootlessRealizeWindow is inside our wrap)
- pScreen->RealizeWindow = screenPriv->RealizeWindow;
- result = pScreen->RealizeWindow(pWin);
- pScreen->RealizeWindow = glAquaRealizeWindow;
-
- // The Aqua window will already have been created (windows are
- // realized from top down)
-
- // Re-attach this window's GL contexts, if any.
- glxPriv = __glXFindDrawablePrivate(pWin->drawable.id);
- if (glxPriv) {
- __GLXcontext *gx;
- __GLcontext *gc;
- __GLdrawablePrivate *glPriv = &glxPriv->glPriv;
- GLAQUA_DEBUG_MSG("glAquaRealizeWindow is GL drawable!\n");
-
- // GL contexts bound to this window for drawing
- for (gx = glxPriv->drawGlxc; gx != NULL; gx = gx->nextDrawPriv) {
- gc = (__GLcontext *)gx->gc;
- attach(gc, glPriv);
- }
-
- // GL contexts bound to this window for reading
- for (gx = glxPriv->readGlxc; gx != NULL; gx = gx->nextReadPriv) {
- gc = (__GLcontext *)gx->gc;
- attach(gc, glPriv);
- }
- }
-
- return result;
-}
-
-Bool
-glAquaUnrealizeWindow(WindowPtr pWin)
-{
- // If this window has GL contexts, tell them to unattach
- Bool result;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- glAquaScreenRec *screenPriv = &glAquaScreens[pScreen->myNum];
- __GLXdrawablePrivate *glxPriv;
-
- GLAQUA_DEBUG_MSG("glAquaUnrealizeWindow\n");
-
- // The Aqua window may have already been destroyed (windows
- // are unrealized from top down)
-
- // Unattach this window's GL contexts, if any.
- glxPriv = __glXFindDrawablePrivate(pWin->drawable.id);
- if (glxPriv) {
- __GLXcontext *gx;
- __GLcontext *gc;
- GLAQUA_DEBUG_MSG("glAquaUnealizeWindow is GL drawable!\n");
-
- // GL contexts bound to this window for drawing
- for (gx = glxPriv->drawGlxc; gx != NULL; gx = gx->nextDrawPriv) {
- gc = (__GLcontext *)gx->gc;
- attach(gc, NULL);
- }
-
- // GL contexts bound to this window for reading
- for (gx = glxPriv->readGlxc; gx != NULL; gx = gx->nextReadPriv) {
- gc = (__GLcontext *)gx->gc;
- attach(gc, NULL);
- }
- }
-
- pScreen->UnrealizeWindow = screenPriv->UnrealizeWindow;
- result = pScreen->UnrealizeWindow(pWin);
- pScreen->UnrealizeWindow = glAquaUnrealizeWindow;
-
- return result;
-}
-
-
-// Originally copied from Mesa
-
-static int numConfigs = 0;
-static __GLXvisualConfig *visualConfigs = NULL;
-static void **visualPrivates = NULL;
-
-/*
- * In the case the driver defines no GLX visuals we'll use these.
- * Note that for TrueColor and DirectColor visuals, bufferSize is the
- * sum of redSize, greenSize, blueSize and alphaSize, which may be larger
- * than the nplanes/rootDepth of the server's X11 visuals
- */
-#define NUM_FALLBACK_CONFIGS 5
-static __GLXvisualConfig FallbackConfigs[NUM_FALLBACK_CONFIGS] = {
- /* [0] = RGB, double buffered, Z */
- {
- -1, /* vid */
- -1, /* class */
- True, /* rgba */
- -1, -1, -1, 0, /* rgba sizes */
- -1, -1, -1, 0, /* rgba masks */
- 0, 0, 0, 0, /* rgba accum sizes */
- True, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 0, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE, /* visualRating */
- GLX_NONE, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
- },
- /* [1] = RGB, double buffered, Z, stencil, accum */
- {
- -1, /* vid */
- -1, /* class */
- True, /* rgba */
- -1, -1, -1, 0, /* rgba sizes */
- -1, -1, -1, 0, /* rgba masks */
- 16, 16, 16, 0, /* rgba accum sizes */
- True, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 8, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE, /* visualRating */
- GLX_NONE, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
- },
- /* [2] = RGB+Alpha, double buffered, Z, stencil, accum */
- {
- -1, /* vid */
- -1, /* class */
- True, /* rgba */
- -1, -1, -1, 8, /* rgba sizes */
- -1, -1, -1, -1, /* rgba masks */
- 16, 16, 16, 16, /* rgba accum sizes */
- True, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 8, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE, /* visualRating */
- GLX_NONE, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
- },
- /* [3] = RGB+Alpha, single buffered, Z, stencil, accum */
- {
- -1, /* vid */
- -1, /* class */
- True, /* rgba */
- -1, -1, -1, 8, /* rgba sizes */
- -1, -1, -1, -1, /* rgba masks */
- 16, 16, 16, 16, /* rgba accum sizes */
- False, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 8, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE, /* visualRating */
- GLX_NONE, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
- },
- /* [4] = CI, double buffered, Z */
- {
- -1, /* vid */
- -1, /* class */
- False, /* rgba? (false = color index) */
- -1, -1, -1, 0, /* rgba sizes */
- -1, -1, -1, 0, /* rgba masks */
- 0, 0, 0, 0, /* rgba accum sizes */
- True, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 0, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE, /* visualRating */
- GLX_NONE, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
- },
-};
-
-static __GLXvisualConfig NullConfig = {
- -1, /* vid */
- -1, /* class */
- False, /* rgba */
- -1, -1, -1, 0, /* rgba sizes */
- -1, -1, -1, 0, /* rgba masks */
- 0, 0, 0, 0, /* rgba accum sizes */
- False, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 0, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE_EXT, /* visualRating */
- 0, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
-};
-
-
-static int count_bits(unsigned int n)
-{
- int bits = 0;
-
- while (n > 0) {
- if (n & 1) bits++;
- n >>= 1;
- }
- return bits;
-}
-
-
-static Bool init_visuals(int *nvisualp, VisualPtr *visualp,
- VisualID *defaultVisp,
- int ndepth, DepthPtr pdepth,
- int rootDepth)
-{
- int numRGBconfigs;
- int numCIconfigs;
- int numVisuals = *nvisualp;
- int numNewVisuals;
- int numNewConfigs;
- VisualPtr pVisual = *visualp;
- VisualPtr pVisualNew = NULL;
- VisualID *orig_vid = NULL;
- __GLcontextModes *modes;
- __GLXvisualConfig *pNewVisualConfigs = NULL;
- void **glXVisualPriv;
- void **pNewVisualPriv;
- int found_default;
- int i, j, k;
-
- GLAQUA_DEBUG_MSG("init_visuals\n");
-
- if (numConfigs > 0)
- numNewConfigs = numConfigs;
- else
- numNewConfigs = NUM_FALLBACK_CONFIGS;
-
- /* Alloc space for the list of new GLX visuals */
- pNewVisualConfigs = (__GLXvisualConfig *)
- __glXMalloc(numNewConfigs * sizeof(__GLXvisualConfig));
- if (!pNewVisualConfigs) {
- return FALSE;
- }
-
- /* Alloc space for the list of new GLX visual privates */
- pNewVisualPriv = (void **) __glXMalloc(numNewConfigs * sizeof(void *));
- if (!pNewVisualPriv) {
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /*
- ** If SetVisualConfigs was not called, then use default GLX
- ** visual configs.
- */
- if (numConfigs == 0) {
- memcpy(pNewVisualConfigs, FallbackConfigs,
- NUM_FALLBACK_CONFIGS * sizeof(__GLXvisualConfig));
- memset(pNewVisualPriv, 0, NUM_FALLBACK_CONFIGS * sizeof(void *));
- }
- else {
- /* copy driver's visual config info */
- for (i = 0; i < numConfigs; i++) {
- pNewVisualConfigs[i] = visualConfigs[i];
- pNewVisualPriv[i] = visualPrivates[i];
- }
- }
-
- /* Count the number of RGB and CI visual configs */
- numRGBconfigs = 0;
- numCIconfigs = 0;
- for (i = 0; i < numNewConfigs; i++) {
- if (pNewVisualConfigs[i].rgba)
- numRGBconfigs++;
- else
- numCIconfigs++;
- }
-
- /* Count the total number of visuals to compute */
- numNewVisuals = 0;
- for (i = 0; i < numVisuals; i++) {
- int count;
-
- count = ((pVisual[i].class == TrueColor ||
- pVisual[i].class == DirectColor)
- ? numRGBconfigs : numCIconfigs);
- if (count == 0)
- count = 1; /* preserve the existing visual */
-
- numNewVisuals += count;
- }
-
- /* Reset variables for use with the next screen/driver's visual configs */
- visualConfigs = NULL;
- numConfigs = 0;
-
- /* Alloc temp space for the list of orig VisualIDs for each new visual */
- orig_vid = (VisualID *)__glXMalloc(numNewVisuals * sizeof(VisualID));
- if (!orig_vid) {
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Alloc space for the list of glXVisuals */
- modes = _gl_context_modes_create(numNewVisuals, sizeof(__GLcontextModes));
- if (modes == NULL) {
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Alloc space for the list of glXVisualPrivates */
- glXVisualPriv = (void **)__glXMalloc(numNewVisuals * sizeof(void *));
- if (!glXVisualPriv) {
- _gl_context_modes_destroy( modes );
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Alloc space for the new list of the X server's visuals */
- pVisualNew = (VisualPtr)__glXMalloc(numNewVisuals * sizeof(VisualRec));
- if (!pVisualNew) {
- __glXFree(glXVisualPriv);
- _gl_context_modes_destroy( modes );
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Initialize the new visuals */
- found_default = FALSE;
- glAquaScreens[screenInfo.numScreens-1].modes = modes;
- for (i = j = 0; i < numVisuals; i++) {
- int is_rgb = (pVisual[i].class == TrueColor ||
- pVisual[i].class == DirectColor);
-
- if (!is_rgb)
- {
- /* We don't support non-rgb visuals for GL. But we don't
- want to remove them either, so just pass them through
- with null glX configs */
-
- pVisualNew[j] = pVisual[i];
- pVisualNew[j].vid = FakeClientID(0);
-
- /* Check for the default visual */
- if (!found_default && pVisual[i].vid == *defaultVisp) {
- *defaultVisp = pVisualNew[j].vid;
- found_default = TRUE;
- }
-
- /* Save the old VisualID */
- orig_vid[j] = pVisual[i].vid;
-
- /* Initialize the glXVisual */
- _gl_copy_visual_to_context_mode( modes, & NullConfig );
- modes->visualID = pVisualNew[j].vid;
-
- j++;
-
- continue;
- }
-
- for (k = 0; k < numNewConfigs; k++) {
- if (pNewVisualConfigs[k].rgba != is_rgb)
- continue;
-
- assert( modes != NULL );
-
- /* Initialize the new visual */
- pVisualNew[j] = pVisual[i];
- pVisualNew[j].vid = FakeClientID(0);
-
- /* Check for the default visual */
- if (!found_default && pVisual[i].vid == *defaultVisp) {
- *defaultVisp = pVisualNew[j].vid;
- found_default = TRUE;
- }
-
- /* Save the old VisualID */
- orig_vid[j] = pVisual[i].vid;
-
- /* Initialize the glXVisual */
- _gl_copy_visual_to_context_mode( modes, & pNewVisualConfigs[k] );
- modes->visualID = pVisualNew[j].vid;
-
- /*
- * If the class is -1, then assume the X visual information
- * is identical to what GLX needs, and take them from the X
- * visual. NOTE: if class != -1, then all other fields MUST
- * be initialized.
- */
- if (modes->visualType == GLX_NONE) {
- modes->visualType = _gl_convert_from_x_visual_type( pVisual[i].class );
- modes->redBits = count_bits(pVisual[i].redMask);
- modes->greenBits = count_bits(pVisual[i].greenMask);
- modes->blueBits = count_bits(pVisual[i].blueMask);
- modes->alphaBits = modes->alphaBits;
- modes->redMask = pVisual[i].redMask;
- modes->greenMask = pVisual[i].greenMask;
- modes->blueMask = pVisual[i].blueMask;
- modes->alphaMask = modes->alphaMask;
- modes->rgbBits = (is_rgb)
- ? (modes->redBits + modes->greenBits +
- modes->blueBits + modes->alphaBits)
- : rootDepth;
- }
-
- /* Save the device-dependent private for this visual */
- glXVisualPriv[j] = pNewVisualPriv[k];
-
- j++;
- modes = modes->next;
- }
- }
-
- assert(j <= numNewVisuals);
-
- /* Save the GLX visuals in the screen structure */
- glAquaScreens[screenInfo.numScreens-1].num_vis = numNewVisuals;
- glAquaScreens[screenInfo.numScreens-1].priv = glXVisualPriv;
-
- /* Set up depth's VisualIDs */
- for (i = 0; i < ndepth; i++) {
- int numVids = 0;
- VisualID *pVids = NULL;
- int k, n = 0;
-
- /* Count the new number of VisualIDs at this depth */
- for (j = 0; j < pdepth[i].numVids; j++)
- for (k = 0; k < numNewVisuals; k++)
- if (pdepth[i].vids[j] == orig_vid[k])
- numVids++;
-
- /* Allocate a new list of VisualIDs for this depth */
- pVids = (VisualID *)__glXMalloc(numVids * sizeof(VisualID));
-
- /* Initialize the new list of VisualIDs for this depth */
- for (j = 0; j < pdepth[i].numVids; j++)
- for (k = 0; k < numNewVisuals; k++)
- if (pdepth[i].vids[j] == orig_vid[k])
- pVids[n++] = pVisualNew[k].vid;
-
- /* Update this depth's list of VisualIDs */
- __glXFree(pdepth[i].vids);
- pdepth[i].vids = pVids;
- pdepth[i].numVids = numVids;
- }
-
- /* Update the X server's visuals */
- *nvisualp = numNewVisuals;
- *visualp = pVisualNew;
-
- /* Free the old list of the X server's visuals */
- __glXFree(pVisual);
-
- /* Clean up temporary allocations */
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
-
- /* Free the private list created by DDX HW driver */
- if (visualPrivates)
- xfree(visualPrivates);
- visualPrivates = NULL;
-
- return TRUE;
-}
-
-/* based on code in i830_dri.c
- This ends calling glAquaSetVisualConfigs to set the static
- numconfigs, etc. */
-static void
-glAquaInitVisualConfigs(void)
-{
- int lclNumConfigs = 0;
- __GLXvisualConfig *lclVisualConfigs = NULL;
- void **lclVisualPrivates = NULL;
-
- int depth, aux, buffers, stencil, accum;
- int i = 0;
-
- GLAQUA_DEBUG_MSG("glAquaInitVisualConfigs ");
-
- /* count num configs:
- 2 Z buffer (0, 24 bit)
- 2 AUX buffer (0, 2)
- 2 buffers (single, double)
- 2 stencil (0, 8 bit)
- 2 accum (0, 64 bit)
- = 32 configs */
-
- lclNumConfigs = 2 * 2 * 2 * 2 * 2; /* 32 */
-
- /* alloc */
- lclVisualConfigs = xcalloc(sizeof(__GLXvisualConfig), lclNumConfigs);
- lclVisualPrivates = xcalloc(sizeof(void *), lclNumConfigs);
-
- /* fill in configs */
- if (NULL != lclVisualConfigs) {
- i = 0; /* current buffer */
- for (depth = 0; depth < 2; depth++) {
- for (aux = 0; aux < 2; aux++) {
- for (buffers = 0; buffers < 2; buffers++) {
- for (stencil = 0; stencil < 2; stencil++) {
- for (accum = 0; accum < 2; accum++) {
- lclVisualConfigs[i].vid = -1;
- lclVisualConfigs[i].class = -1;
- lclVisualConfigs[i].rgba = TRUE;
- lclVisualConfigs[i].redSize = -1;
- lclVisualConfigs[i].greenSize = -1;
- lclVisualConfigs[i].blueSize = -1;
- lclVisualConfigs[i].redMask = -1;
- lclVisualConfigs[i].greenMask = -1;
- lclVisualConfigs[i].blueMask = -1;
- lclVisualConfigs[i].alphaMask = 0;
- if (accum) {
- lclVisualConfigs[i].accumRedSize = 16;
- lclVisualConfigs[i].accumGreenSize = 16;
- lclVisualConfigs[i].accumBlueSize = 16;
- lclVisualConfigs[i].accumAlphaSize = 16;
- }
- else {
- lclVisualConfigs[i].accumRedSize = 0;
- lclVisualConfigs[i].accumGreenSize = 0;
- lclVisualConfigs[i].accumBlueSize = 0;
- lclVisualConfigs[i].accumAlphaSize = 0;
- }
- lclVisualConfigs[i].doubleBuffer = buffers ? TRUE : FALSE;
- lclVisualConfigs[i].stereo = FALSE;
- lclVisualConfigs[i].bufferSize = -1;
-
- lclVisualConfigs[i].depthSize = depth? 24 : 0;
- lclVisualConfigs[i].stencilSize = stencil ? 8 : 0;
- lclVisualConfigs[i].auxBuffers = aux ? 2 : 0;
- lclVisualConfigs[i].level = 0;
- lclVisualConfigs[i].visualRating = GLX_NONE_EXT;
- lclVisualConfigs[i].transparentPixel = 0;
- lclVisualConfigs[i].transparentRed = 0;
- lclVisualConfigs[i].transparentGreen = 0;
- lclVisualConfigs[i].transparentBlue = 0;
- lclVisualConfigs[i].transparentAlpha = 0;
- lclVisualConfigs[i].transparentIndex = 0;
- i++;
- }
- }
- }
- }
- }
- }
- if (i != lclNumConfigs)
- GLAQUA_DEBUG_MSG("glAquaInitVisualConfigs failed to alloc visual configs");
-
- GlxSetVisualConfigs(lclNumConfigs, lclVisualConfigs, lclVisualPrivates);
-}
-
-
-static void glAquaSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs,
- void **privates)
-{
- GLAQUA_DEBUG_MSG("glAquaSetVisualConfigs\n");
-
- numConfigs = nconfigs;
- visualConfigs = configs;
- visualPrivates = privates;
-}
-
-static Bool glAquaInitVisuals(VisualPtr *visualp, DepthPtr *depthp,
- int *nvisualp, int *ndepthp,
- int *rootDepthp, VisualID *defaultVisp,
- unsigned long sizes, int bitsPerRGB)
-{
- GLAQUA_DEBUG_MSG("glAquaInitVisuals\n");
-
- if (numConfigs == 0) /* if no configs */
- glAquaInitVisualConfigs(); /* ensure the visual configs are setup */
-
- /*
- * Setup the visuals supported by this particular screen.
- */
- return init_visuals(nvisualp, visualp, defaultVisp,
- *ndepthp, *depthp, *rootDepthp);
-}
-
-
-static void fixup_visuals(int screen)
-{
- ScreenPtr pScreen = screenInfo.screens[screen];
- glAquaScreenRec *pScr = &glAquaScreens[screen];
- int j;
- __GLcontextModes *modes;
-
- GLAQUA_DEBUG_MSG("fixup_visuals\n");
-
- for ( modes = pScr->modes ; modes != NULL ; modes = modes->next ) {
- const int vis_class = _gl_convert_to_x_visual_type( modes->visualType );
- const int nplanes = (modes->rgbBits - modes->alphaBits);
- const VisualPtr pVis = pScreen->visuals;
-
- /* Find a visual that matches the GLX visual's class and size */
- for (j = 0; j < pScreen->numVisuals; j++) {
- if (pVis[j].class == vis_class &&
- pVis[j].nplanes == nplanes) {
-
- /* Fixup the masks */
- modes->redMask = pVis[j].redMask;
- modes->greenMask = pVis[j].greenMask;
- modes->blueMask = pVis[j].blueMask;
-
- /* Recalc the sizes */
- modes->redBits = count_bits(modes->redMask);
- modes->greenBits = count_bits(modes->greenMask);
- modes->blueBits = count_bits(modes->blueMask);
- }
- }
- }
-}
-
-static void init_screen_visuals(int screen)
-{
- ScreenPtr pScreen = screenInfo.screens[screen];
- __GLcontextModes *modes;
- int *used;
- int i, j;
-
- GLAQUA_DEBUG_MSG("init_screen_visuals\n");
-
- /* FIXME: Change 'used' to be a array of bits (rather than of ints),
- * FIXME: create a stack array of 8 or 16 bytes. If 'numVisuals' is less
- * FIXME: than 64 or 128 the stack array can be used instead of calling
- * FIXME: __glXMalloc / __glXFree. If nothing else, convert 'used' to
- * FIXME: array of bytes instead of ints!
- */
- used = (int *)__glXMalloc(pScreen->numVisuals * sizeof(int));
- __glXMemset(used, 0, pScreen->numVisuals * sizeof(int));
-
- i = 0;
- for ( modes = glAquaScreens[screen].modes
- ; modes != NULL
- ; modes = modes->next ) {
- const int vis_class = _gl_convert_to_x_visual_type( modes->visualType );
- const int nplanes = (modes->rgbBits - modes->alphaBits);
- const VisualPtr pVis = pScreen->visuals;
-
- for (j = 0; j < pScreen->numVisuals; j++) {
- if (pVis[j].class == vis_class &&
- pVis[j].nplanes == nplanes &&
- pVis[j].redMask == modes->redMask &&
- pVis[j].greenMask == modes->greenMask &&
- pVis[j].blueMask == modes->blueMask &&
- !used[j]) {
-
- /* Set the VisualID */
- modes->visualID = pVis[j].vid;
-
- /* Mark this visual used */
- used[j] = 1;
- break;
- }
- }
- if ( j == pScreen->numVisuals ) {
- ErrorF("No matching visual for __GLcontextMode with "
- "visual class = %d (%d), nplanes = %u\n",
- vis_class,
- (int)modes->visualType,
- (unsigned int)(modes->rgbBits - modes->alphaBits) );
- }
- else if ( modes->visualID == -1 ) {
- FatalError( "Matching visual found, but visualID still -1!\n" );
- }
-
- i++;
- }
-
- __glXFree(used);
-}
-
-static Bool glAquaScreenProbe(int screen)
-{
- ScreenPtr pScreen;
- glAquaScreenRec *screenPriv;
-
- GLAQUA_DEBUG_MSG("glAquaScreenProbe\n");
-
- /*
- * Set up the current screen's visuals.
- */
- __glDDXScreenInfo.modes = glAquaScreens[screen].modes;
- __glDDXScreenInfo.pVisualPriv = glAquaScreens[screen].priv;
- __glDDXScreenInfo.numVisuals =
- __glDDXScreenInfo.numUsableVisuals = glAquaScreens[screen].num_vis;
-
- /*
- * Set the current screen's createContext routine. This could be
- * wrapped by a DDX GLX context creation routine.
- */
- __glDDXScreenInfo.createContext = glAquaCreateContext;
-
- /*
- * The ordering of the rgb compenents might have been changed by the
- * driver after mi initialized them.
- */
- fixup_visuals(screen);
-
- /*
- * Find the GLX visuals that are supported by this screen and create
- * XMesa's visuals.
- */
- init_screen_visuals(screen);
-
- /*
- * Wrap RealizeWindow and UnrealizeWindow on this screen
- */
- pScreen = screenInfo.screens[screen];
- screenPriv = &glAquaScreens[screen];
- screenPriv->RealizeWindow = pScreen->RealizeWindow;
- pScreen->RealizeWindow = glAquaRealizeWindow;
- screenPriv->UnrealizeWindow = pScreen->UnrealizeWindow;
- pScreen->UnrealizeWindow = glAquaUnrealizeWindow;
-
- return TRUE;
-}
-
-
-static GLboolean glAquaResizeBuffers(__GLdrawableBuffer *buffer,
- GLint x, GLint y,
- GLuint width, GLuint height,
- __GLdrawablePrivate *glPriv,
- GLuint bufferMask)
-{
- GLAquaDrawableRec *aquaPriv = (GLAquaDrawableRec *)glPriv->private;
- __GLXdrawablePrivate *glxPriv = (__GLXdrawablePrivate *)glPriv->other;
- __GLXcontext *gx;
- __GLcontext *gc;
-
- GLAQUA_DEBUG_MSG("glAquaResizeBuffers to (%d %d %d %d)\n", x, y, width, height);
-
- // update all contexts that point at this drawable for drawing (hack?)
- for (gx = glxPriv->drawGlxc; gx != NULL; gx = gx->nextDrawPriv) {
- gc = (__GLcontext *)gx->gc;
- attach(gc, glPriv);
- }
-
- // update all contexts that point at this drawable for reading (hack?)
- for (gx = glxPriv->readGlxc; gx != NULL; gx = gx->nextReadPriv) {
- gc = (__GLcontext *)gx->gc;
- attach(gc, glPriv);
- }
-
- return aquaPriv->resize(buffer, x, y, width, height, glPriv, bufferMask);
-}
-
-
-static GLboolean glAquaSwapBuffers(__GLXdrawablePrivate *glxPriv)
-{
- // fixme AGL software renderer will use properties of current QD port (bad)
-
- // swap buffers on only *one* of the contexts
- // (e.g. the last one for drawing)
- __GLcontext *gc = (__GLcontext *)glxPriv->drawGlxc->gc;
- if (gc && gc->ctx) aglSwapBuffers(gc->ctx);
-
- return GL_TRUE;
-}
-
-static void glAquaDestroyDrawablePrivate(__GLdrawablePrivate *glPriv)
-{
- GLAQUA_DEBUG_MSG("glAquaDestroyDrawablePrivate\n");
-
- free(glPriv->private);
- glPriv->private = NULL;
-}
-
-static void glAquaCreateBuffer(__GLXdrawablePrivate *glxPriv)
-{
- GLAquaDrawableRec *aquaPriv = malloc(sizeof(GLAquaDrawableRec));
- __GLdrawablePrivate *glPriv = &glxPriv->glPriv;
-
- GLAQUA_DEBUG_MSG("glAquaCreateBuffer\n");
-
- // replace swapBuffers (original is never called)
- glxPriv->swapBuffers = glAquaSwapBuffers;
-
- // wrap front buffer resize
- aquaPriv->resize = glPriv->frontBuffer.resize;
- glPriv->frontBuffer.resize = glAquaResizeBuffers;
-
- // stash private data
- glPriv->private = aquaPriv;
- glPriv->freePrivate = glAquaDestroyDrawablePrivate;
-}
-
-
-static void glAquaResetExtension(void)
-{
- GLAQUA_DEBUG_MSG("glAquaResetExtension\n");
- aglResetLibrary();
-}
-
-
-
-// Extra goodies for glx
-
-GLuint __glFloorLog2(GLuint val)
-{
- int c = 0;
-
- while (val > 1) {
- c++;
- val >>= 1;
- }
- return c;
-}
diff --git a/nx-X11/programs/Xserver/GL/apple/indirect.c b/nx-X11/programs/Xserver/GL/apple/indirect.c
deleted file mode 100644
index 448b1f76a..000000000
--- a/nx-X11/programs/Xserver/GL/apple/indirect.c
+++ /dev/null
@@ -1,1380 +0,0 @@
-/*
- * GLX implementation that uses Apple's OpenGL.framework
- * (Indirect rendering path)
- */
-/*
- * Copyright (c) 2002 Greg Parker. All Rights Reserved.
- * Copyright (c) 2002 Apple Computer, Inc.
- * Copyright (c) 2004 Torrey T. Lyons. All Rights Reserved.
- *
- * Portions of this file are copied from Mesa's xf86glx.c,
- * which contains the following copyright:
- *
- * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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.
- */
-/* $XFree86: xc/programs/Xserver/GL/apple/indirect.c,v 1.2 2003/09/16 00:36:11 torrey Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "dri.h"
-#include "quartz.h"
-
-#include <CoreGraphics/CoreGraphics.h>
-#include <OpenGL/OpenGL.h>
-#include <OpenGL/CGLContext.h>
-
-// X11 and X11's glx
-#include <miscstruct.h>
-#include <windowstr.h>
-#include <resource.h>
-#include <GL/glxint.h>
-#include <GL/glxtokens.h>
-#include <scrnintstr.h>
-#include <glxserver.h>
-#include <glxscreens.h>
-#include <glxdrawable.h>
-#include <glxcontext.h>
-#include <glxext.h>
-#include <glxutil.h>
-#include <glxscreens.h>
-#include <GL/internal/glcore.h>
-#include "x-hash.h"
-#include "x-list.h"
-
-#include "glcontextmodes.h"
-
-// ggs: needed to call back to glx with visual configs
-extern void GlxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs, void **configprivs);
-
-
-// Write debugging output, or not
-#ifdef GLAQUA_DEBUG
-#define GLAQUA_DEBUG_MSG ErrorF
-#else
-#define GLAQUA_DEBUG_MSG(a, ...)
-#endif
-
-
-// The following GL functions don't have an EXT suffix in OpenGL.framework.
-GLboolean glAreTexturesResidentEXT(GLsizei a, const GLuint *b, GLboolean *c) {
- return glAreTexturesResident(a, b, c);
-}
-void glDeleteTexturesEXT(GLsizei d, const GLuint *e) {
- glDeleteTextures(d, e);
-}
-void glGenTexturesEXT(GLsizei f, GLuint *g) {
- glGenTextures(f, g);
-}
-GLboolean glIsTextureEXT(GLuint h) {
- return glIsTexture(h);
-}
-
-// some prototypes
-static Bool glAquaScreenProbe(int screen);
-static Bool glAquaInitVisuals(VisualPtr *visualp, DepthPtr *depthp,
- int *nvisualp, int *ndepthp,
- int *rootDepthp, VisualID *defaultVisp,
- unsigned long sizes, int bitsPerRGB);
-static void glAquaSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs,
- void **privates);
-static __GLinterface *glAquaCreateContext(__GLimports *imports,
- __GLcontextModes *mode,
- __GLinterface *shareGC);
-static void glAquaCreateBuffer(__GLXdrawablePrivate *glxPriv);
-static void glAquaResetExtension(void);
-
-/*
- * This structure is statically allocated in the __glXScreens[]
- * structure. This struct is not used anywhere other than in
- * __glXScreenInit to initialize each of the active screens
- * (__glXActiveScreens[]). Several of the fields must be initialized by
- * the screenProbe routine before they are copied to the active screens
- * struct. In particular, the contextCreate, modes, numVisuals,
- * and numUsableVisuals fields must be initialized.
- */
-static __GLXscreenInfo __glDDXScreenInfo = {
- glAquaScreenProbe, /* Must be generic and handle all screens */
- glAquaCreateContext, /* Substitute screen's createContext routine */
- glAquaCreateBuffer, /* Substitute screen's createBuffer routine */
- NULL, /* Set up modes in probe */
- NULL, /* Set up pVisualPriv in probe */
- 0, /* Set up numVisuals in probe */
- 0, /* Set up numUsableVisuals in probe */
- "Vendor String", /* GLXvendor is overwritten by __glXScreenInit */
- "Version String", /* GLXversion is overwritten by __glXScreenInit */
- "Extensions String", /* GLXextensions is overwritten by __glXScreenInit */
- NULL /* WrappedPositionWindow is overwritten */
-};
-
-void *__glXglDDXScreenInfo(void) {
- return &__glDDXScreenInfo;
-}
-
-static __GLXextensionInfo __glDDXExtensionInfo = {
- GL_CORE_APPLE,
- glAquaResetExtension,
- glAquaInitVisuals,
- glAquaSetVisualConfigs
-};
-
-void *__glXglDDXExtensionInfo(void) {
- return &__glDDXExtensionInfo;
-}
-
-// prototypes
-
-static GLboolean glAquaDestroyContext(__GLcontext *gc);
-static GLboolean glAquaLoseCurrent(__GLcontext *gc);
-static GLboolean glAquaMakeCurrent(__GLcontext *gc);
-static GLboolean glAquaShareContext(__GLcontext *gc, __GLcontext *gcShare);
-static GLboolean glAquaCopyContext(__GLcontext *dst, const __GLcontext *src,
- GLuint mask);
-static GLboolean glAquaForceCurrent(__GLcontext *gc);
-
-/* Drawing surface notification callbacks */
-static GLboolean glAquaNotifyResize(__GLcontext *gc);
-static void glAquaNotifyDestroy(__GLcontext *gc);
-static void glAquaNotifySwapBuffers(__GLcontext *gc);
-
-/* Dispatch table override control for external agents like libGLS */
-static struct __GLdispatchStateRec* glAquaDispatchExec(__GLcontext *gc);
-static void glAquaBeginDispatchOverride(__GLcontext *gc);
-static void glAquaEndDispatchOverride(__GLcontext *gc);
-
-static __GLexports glAquaExports = {
- glAquaDestroyContext,
- glAquaLoseCurrent,
- glAquaMakeCurrent,
- glAquaShareContext,
- glAquaCopyContext,
- glAquaForceCurrent,
-
- glAquaNotifyResize,
- glAquaNotifyDestroy,
- glAquaNotifySwapBuffers,
-
- glAquaDispatchExec,
- glAquaBeginDispatchOverride,
- glAquaEndDispatchOverride
-};
-
-typedef struct {
- int num_vis;
- __GLcontextModes *modes;
- void **priv;
-
- // wrapped screen functions
- RealizeWindowProcPtr RealizeWindow;
- UnrealizeWindowProcPtr UnrealizeWindow;
-} glAquaScreenRec;
-
-static glAquaScreenRec glAquaScreens[MAXSCREENS];
-
-// __GLdrawablePrivate->private
-typedef struct {
- DrawablePtr pDraw;
- xp_surface_id sid;
-} GLAquaDrawableRec;
-
-struct __GLcontextRec {
- struct __GLinterfaceRec interface; // required to be first
-
- CGLContextObj ctx;
- CGLPixelFormatObj pixelFormat;
-
- /* set when attached */
- xp_surface_id sid;
-
- unsigned isAttached :1;
-};
-
-/* maps from surface id -> list of __GLcontext */
-static x_hash_table *surface_hash;
-
-
-// Context manipulation; return GL_FALSE on failure
-static GLboolean glAquaDestroyContext(__GLcontext *gc)
-{
- x_list *lst;
-
- GLAQUA_DEBUG_MSG("glAquaDestroyContext (ctx 0x%x)\n",
- (unsigned int) gc->ctx);
-
- if (gc != NULL)
- {
- if (gc->sid != 0 && surface_hash != NULL)
- {
- lst = x_hash_table_lookup(surface_hash, (void *) gc->sid, NULL);
- lst = x_list_remove(lst, gc);
- x_hash_table_insert(surface_hash, (void *) gc->sid, lst);
- }
-
- if (gc->ctx != NULL)
- CGLDestroyContext(gc->ctx);
-
- if (gc->pixelFormat != NULL)
- CGLDestroyPixelFormat(gc->pixelFormat);
-
- free(gc);
- }
-
- return GL_TRUE;
-}
-
-static GLboolean glAquaLoseCurrent(__GLcontext *gc)
-{
- CGLError gl_err;
-
- GLAQUA_DEBUG_MSG("glAquaLoseCurrent (ctx 0x%x)\n", (unsigned int) gc->ctx);
-
- gl_err = CGLSetCurrentContext(NULL);
- if (gl_err != 0)
- ErrorF("CGLSetCurrentContext error: %s\n", CGLErrorString(gl_err));
-
- __glXLastContext = NULL; // Mesa does this; why?
-
- return GL_TRUE;
-}
-
-/* Called when a surface is destroyed as a side effect of destroying
- the window it's attached to. */
-static void surface_notify(void *_arg, void *data)
-{
- DRISurfaceNotifyArg *arg = _arg;
- GLAquaDrawableRec *aquaPriv = data;
- __GLcontext *gc;
- x_list *lst;
-
- switch (arg->kind)
- {
- case AppleDRISurfaceNotifyDestroyed:
- if (surface_hash != NULL)
- x_hash_table_remove(surface_hash, (void *) arg->id);
-
- aquaPriv->pDraw = NULL;
- aquaPriv->sid = 0;
- break;
-
- case AppleDRISurfaceNotifyChanged:
- if (surface_hash != NULL)
- {
- lst = x_hash_table_lookup(surface_hash, (void *) arg->id, NULL);
- for (; lst != NULL; lst = lst->next)
- {
- gc = lst->data;
- xp_update_gl_context(gc->ctx);
- }
- }
- break;
- }
-}
-
-static void unattach(__GLcontext *gc)
-{
- x_list *lst;
-
- if (gc->isAttached)
- {
- GLAQUA_DEBUG_MSG("unattaching\n");
-
- if (surface_hash != NULL)
- {
- lst = x_hash_table_lookup(surface_hash, (void *) gc->sid, NULL);
- lst = x_list_remove(lst, gc);
- x_hash_table_insert(surface_hash, (void *) gc->sid, lst);
- }
-
- CGLClearDrawable(gc->ctx);
- gc->isAttached = FALSE;
- gc->sid = 0;
- }
-}
-
-static void attach(__GLcontext *gc, __GLdrawablePrivate *glPriv)
-{
- __GLXdrawablePrivate *glxPriv;
- GLAquaDrawableRec *aquaPriv;
- DrawablePtr pDraw;
-
- glxPriv = (__GLXdrawablePrivate *)glPriv->other;
- aquaPriv = (GLAquaDrawableRec *)glPriv->private;
- pDraw = glxPriv->pDraw;
-
- if (aquaPriv->sid == 0)
- {
- if (!quartzProcs->CreateSurface(pDraw->pScreen, pDraw->id, pDraw,
- 0, &aquaPriv->sid, NULL,
- surface_notify, aquaPriv))
- {
- return;
- }
- aquaPriv->pDraw = pDraw;
- }
-
- if (!gc->isAttached || gc->sid != aquaPriv->sid)
- {
- x_list *lst;
-
- if (xp_attach_gl_context(gc->ctx, aquaPriv->sid) != Success)
- {
- quartzProcs->DestroySurface(pDraw->pScreen, pDraw->id, pDraw,
- surface_notify, aquaPriv);
- if (surface_hash != NULL)
- x_hash_table_remove(surface_hash, (void *) aquaPriv->sid);
-
- aquaPriv->sid = 0;
- return;
- }
-
- gc->isAttached = TRUE;
- gc->sid = aquaPriv->sid;
-
- if (surface_hash == NULL)
- surface_hash = x_hash_table_new(NULL, NULL, NULL, NULL);
-
- lst = x_hash_table_lookup(surface_hash, (void *) gc->sid, NULL);
- if (x_list_find(lst, gc) == NULL)
- {
- lst = x_list_prepend(lst, gc);
- x_hash_table_insert(surface_hash, (void *) gc->sid, lst);
- }
-
- GLAQUA_DEBUG_MSG("attached 0x%x to 0x%x\n", (unsigned int) pDraw->id,
- (unsigned int) aquaPriv->sid);
- }
-}
-
-static GLboolean glAquaMakeCurrent(__GLcontext *gc)
-{
- __GLdrawablePrivate *glPriv = gc->interface.imports.getDrawablePrivate(gc);
- CGLError gl_err;
-
- GLAQUA_DEBUG_MSG("glAquaMakeCurrent (ctx 0x%x)\n", (unsigned int) gc->ctx);
-
- attach(gc, glPriv);
-
- gl_err = CGLSetCurrentContext(gc->ctx);
- if (gl_err != 0)
- ErrorF("CGLSetCurrentContext error: %s\n", CGLErrorString(gl_err));
-
- return gl_err == 0;
-}
-
-static GLboolean glAquaShareContext(__GLcontext *gc, __GLcontext *gcShare)
-{
- GLAQUA_DEBUG_MSG("glAquaShareContext unimplemented\n");
-
- return GL_TRUE;
-}
-
-static GLboolean glAquaCopyContext(__GLcontext *dst, const __GLcontext *src,
- GLuint mask)
-{
- CGLError gl_err;
-
- GLAQUA_DEBUG_MSG("glAquaCopyContext\n");
-
- gl_err = CGLCopyContext(src->ctx, dst->ctx, mask);
- if (gl_err != 0)
- ErrorF("CGLCopyContext error: %s\n", CGLErrorString(gl_err));
-
- return gl_err == 0;
-}
-
-static GLboolean glAquaForceCurrent(__GLcontext *gc)
-{
- CGLError gl_err;
-
- GLAQUA_DEBUG_MSG("glAquaForceCurrent (ctx 0x%x)\n",
- (unsigned int) gc->ctx);
-
- gl_err = CGLSetCurrentContext(gc->ctx);
- if (gl_err != 0)
- ErrorF("CGLSetCurrentContext error: %s\n", CGLErrorString(gl_err));
-
- return gl_err == 0;
-}
-
-/* Drawing surface notification callbacks */
-
-static GLboolean glAquaNotifyResize(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("unimplemented glAquaNotifyResize");
- return GL_TRUE;
-}
-
-static void glAquaNotifyDestroy(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("unimplemented glAquaNotifyDestroy");
-}
-
-static void glAquaNotifySwapBuffers(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("unimplemented glAquaNotifySwapBuffers");
-}
-
-/* Dispatch table override control for external agents like libGLS */
-static struct __GLdispatchStateRec* glAquaDispatchExec(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("unimplemented glAquaDispatchExec");
- return NULL;
-}
-
-static void glAquaBeginDispatchOverride(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("unimplemented glAquaBeginDispatchOverride");
-}
-
-static void glAquaEndDispatchOverride(__GLcontext *gc)
-{
- GLAQUA_DEBUG_MSG("unimplemented glAquaEndDispatchOverride");
-}
-
-static CGLPixelFormatObj makeFormat(__GLcontextModes *mode)
-{
- int i;
- CGLPixelFormatAttribute attr[64]; // currently uses max of 30
- CGLPixelFormatObj result;
- long n_formats;
- CGLError gl_err;
-
- GLAQUA_DEBUG_MSG("makeFormat\n");
-
- if (!mode->rgbMode)
- return NULL;
-
- i = 0;
-
- // attr [i++] = kCGLPFAAcelerated; // require hwaccel - BAD for multiscreen
- // attr [i++] = kCGLPFANoRecovery; // disable fallback renderers - BAD
-
- if (mode->stereoMode) {
- attr[i++] = kCGLPFAStereo;
- }
- if (mode->doubleBufferMode) {
- attr[i++] = kCGLPFADoubleBuffer;
- }
-
- if (mode->colorIndexMode) {
- /* ignored */
- }
-
- if (mode->rgbMode) {
- attr[i++] = kCGLPFAColorSize;
- attr[i++] = mode->redBits + mode->greenBits + mode->blueBits;
- attr[i++] = kCGLPFAAlphaSize;
- attr[i++] = 1; /* FIXME: ignoring mode->alphaBits which is always 0 */
- }
-
- if (mode->haveAccumBuffer) {
- attr[i++] = kCGLPFAAccumSize;
- attr[i++] = mode->accumRedBits + mode->accumGreenBits
- + mode->accumBlueBits + mode->accumAlphaBits;
- }
- if (mode->haveDepthBuffer) {
- attr[i++] = kCGLPFADepthSize;
- attr[i++] = mode->depthBits;
- }
- if (mode->haveStencilBuffer) {
- attr[i++] = kCGLPFAStencilSize;
- attr[i++] = mode->stencilBits;
- }
-
- attr[i++] = kCGLPFAAuxBuffers;
- attr[i++] = mode->numAuxBuffers;
-
- /* mode->level ignored */
-
- /* mode->pixmapMode ? */
-
- attr[i++] = 0;
-
- GLAQUA_DEBUG_MSG("makeFormat almost done\n");
-
- result = NULL;
- gl_err = CGLChoosePixelFormat(attr, &result, &n_formats);
- if (gl_err != 0)
- ErrorF("CGLChoosePixelFormat error: %s\n", CGLErrorString(gl_err));
-
- GLAQUA_DEBUG_MSG("makeFormat done (0x%x)\n", (unsigned int) result);
-
- return result;
-}
-
-static __GLinterface *glAquaCreateContext(__GLimports *imports,
- __GLcontextModes *mode,
- __GLinterface *shareGC)
-{
- __GLcontext *result;
- __GLcontext *sharectx = (__GLcontext *)shareGC;
- CGLError gl_err;
-
- GLAQUA_DEBUG_MSG("glAquaCreateContext\n");
-
- result = (__GLcontext *)calloc(1, sizeof(__GLcontext));
- if (!result) return NULL;
-
- result->interface.imports = *imports;
- result->interface.exports = glAquaExports;
-
- result->pixelFormat = makeFormat(mode);
- if (!result->pixelFormat) {
- free(result);
- return NULL;
- }
-
- result->ctx = NULL;
- gl_err = CGLCreateContext(result->pixelFormat,
- sharectx ? sharectx->ctx : NULL,
- &result->ctx);
-
- if (gl_err != 0) {
- ErrorF("CGLCreateContext error: %s\n", CGLErrorString(gl_err));
- CGLDestroyPixelFormat(result->pixelFormat);
- free(result);
- return NULL;
- }
-
- GLAQUA_DEBUG_MSG("glAquaCreateContext done\n");
- return (__GLinterface *)result;
-}
-
-Bool
-glAquaRealizeWindow(WindowPtr pWin)
-{
- // If this window has GL contexts, tell them to reattach
- Bool result;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- glAquaScreenRec *screenPriv = &glAquaScreens[pScreen->myNum];
- __GLXdrawablePrivate *glxPriv;
-
- GLAQUA_DEBUG_MSG("glAquaRealizeWindow\n");
-
- // Allow the window to be created (RootlessRealizeWindow is inside our wrap)
- pScreen->RealizeWindow = screenPriv->RealizeWindow;
- result = pScreen->RealizeWindow(pWin);
- pScreen->RealizeWindow = glAquaRealizeWindow;
-
- // The Aqua window will already have been created (windows are
- // realized from top down)
-
- // Re-attach this window's GL contexts, if any.
- glxPriv = __glXFindDrawablePrivate(pWin->drawable.id);
- if (glxPriv) {
- __GLXcontext *gx;
- __GLcontext *gc;
- __GLdrawablePrivate *glPriv = &glxPriv->glPriv;
- GLAQUA_DEBUG_MSG("glAquaRealizeWindow is GL drawable!\n");
-
- // GL contexts bound to this window for drawing
- for (gx = glxPriv->drawGlxc; gx != NULL; gx = gx->next) {
- gc = (__GLcontext *)gx->gc;
- attach(gc, glPriv);
- }
-
- // GL contexts bound to this window for reading
- for (gx = glxPriv->readGlxc; gx != NULL; gx = gx->next) {
- gc = (__GLcontext *)gx->gc;
- attach(gc, glPriv);
- }
- }
-
- return result;
-}
-
-Bool
-glAquaUnrealizeWindow(WindowPtr pWin)
-{
- // If this window has GL contexts, tell them to unattach
- Bool result;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- glAquaScreenRec *screenPriv = &glAquaScreens[pScreen->myNum];
- __GLXdrawablePrivate *glxPriv;
-
- GLAQUA_DEBUG_MSG("glAquaUnrealizeWindow\n");
-
- // The Aqua window may have already been destroyed (windows
- // are unrealized from top down)
-
- // Unattach this window's GL contexts, if any.
- glxPriv = __glXFindDrawablePrivate(pWin->drawable.id);
- if (glxPriv) {
- __GLXcontext *gx;
- __GLcontext *gc;
- GLAQUA_DEBUG_MSG("glAquaUnealizeWindow is GL drawable!\n");
-
- // GL contexts bound to this window for drawing
- for (gx = glxPriv->drawGlxc; gx != NULL; gx = gx->next) {
- gc = (__GLcontext *)gx->gc;
- unattach(gc);
- }
-
- // GL contexts bound to this window for reading
- for (gx = glxPriv->readGlxc; gx != NULL; gx = gx->next) {
- gc = (__GLcontext *)gx->gc;
- unattach(gc);
- }
- }
-
- pScreen->UnrealizeWindow = screenPriv->UnrealizeWindow;
- result = pScreen->UnrealizeWindow(pWin);
- pScreen->UnrealizeWindow = glAquaUnrealizeWindow;
-
- return result;
-}
-
-
-// Originally copied from Mesa
-
-static int numConfigs = 0;
-static __GLXvisualConfig *visualConfigs = NULL;
-static void **visualPrivates = NULL;
-
-/*
- * In the case the driver defines no GLX visuals we'll use these.
- * Note that for TrueColor and DirectColor visuals, bufferSize is the
- * sum of redSize, greenSize, blueSize and alphaSize, which may be larger
- * than the nplanes/rootDepth of the server's X11 visuals
- */
-#define NUM_FALLBACK_CONFIGS 5
-static __GLXvisualConfig FallbackConfigs[NUM_FALLBACK_CONFIGS] = {
- /* [0] = RGB, double buffered, Z */
- {
- -1, /* vid */
- -1, /* class */
- True, /* rgba */
- -1, -1, -1, 0, /* rgba sizes */
- -1, -1, -1, 0, /* rgba masks */
- 0, 0, 0, 0, /* rgba accum sizes */
- True, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 0, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE, /* visualRating */
- GLX_NONE, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
- },
- /* [1] = RGB, double buffered, Z, stencil, accum */
- {
- -1, /* vid */
- -1, /* class */
- True, /* rgba */
- -1, -1, -1, 0, /* rgba sizes */
- -1, -1, -1, 0, /* rgba masks */
- 16, 16, 16, 0, /* rgba accum sizes */
- True, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 8, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE, /* visualRating */
- GLX_NONE, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
- },
- /* [2] = RGB+Alpha, double buffered, Z, stencil, accum */
- {
- -1, /* vid */
- -1, /* class */
- True, /* rgba */
- -1, -1, -1, 8, /* rgba sizes */
- -1, -1, -1, -1, /* rgba masks */
- 16, 16, 16, 16, /* rgba accum sizes */
- True, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 8, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE, /* visualRating */
- GLX_NONE, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
- },
- /* [3] = RGB+Alpha, single buffered, Z, stencil, accum */
- {
- -1, /* vid */
- -1, /* class */
- True, /* rgba */
- -1, -1, -1, 8, /* rgba sizes */
- -1, -1, -1, -1, /* rgba masks */
- 16, 16, 16, 16, /* rgba accum sizes */
- False, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 8, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE, /* visualRating */
- GLX_NONE, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
- },
- /* [4] = CI, double buffered, Z */
- {
- -1, /* vid */
- -1, /* class */
- False, /* rgba? (false = color index) */
- -1, -1, -1, 0, /* rgba sizes */
- -1, -1, -1, 0, /* rgba masks */
- 0, 0, 0, 0, /* rgba accum sizes */
- True, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 0, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE, /* visualRating */
- GLX_NONE, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
- },
-};
-
-static __GLXvisualConfig NullConfig = {
- -1, /* vid */
- -1, /* class */
- False, /* rgba */
- -1, -1, -1, 0, /* rgba sizes */
- -1, -1, -1, 0, /* rgba masks */
- 0, 0, 0, 0, /* rgba accum sizes */
- False, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 0, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE_EXT, /* visualRating */
- 0, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
-};
-
-
-static inline int count_bits(uint32_t x)
-{
- x = x - ((x >> 1) & 0x55555555);
- x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
- x = (x + (x >> 4)) & 0x0f0f0f0f;
- x = x + (x >> 8);
- x = x + (x >> 16);
- return x & 63;
-}
-
-
-static Bool init_visuals(int *nvisualp, VisualPtr *visualp,
- VisualID *defaultVisp,
- int ndepth, DepthPtr pdepth,
- int rootDepth)
-{
- int numRGBconfigs;
- int numCIconfigs;
- int numVisuals = *nvisualp;
- int numNewVisuals;
- int numNewConfigs;
- VisualPtr pVisual = *visualp;
- VisualPtr pVisualNew = NULL;
- VisualID *orig_vid = NULL;
- __GLcontextModes *modes;
- __GLXvisualConfig *pNewVisualConfigs = NULL;
- void **glXVisualPriv;
- void **pNewVisualPriv;
- int found_default;
- int i, j, k;
-
- GLAQUA_DEBUG_MSG("init_visuals\n");
-
- if (numConfigs > 0)
- numNewConfigs = numConfigs;
- else
- numNewConfigs = NUM_FALLBACK_CONFIGS;
-
- /* Alloc space for the list of new GLX visuals */
- pNewVisualConfigs = (__GLXvisualConfig *)
- __glXMalloc(numNewConfigs * sizeof(__GLXvisualConfig));
- if (!pNewVisualConfigs) {
- return FALSE;
- }
-
- /* Alloc space for the list of new GLX visual privates */
- pNewVisualPriv = (void **) __glXMalloc(numNewConfigs * sizeof(void *));
- if (!pNewVisualPriv) {
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /*
- ** If SetVisualConfigs was not called, then use default GLX
- ** visual configs.
- */
- if (numConfigs == 0) {
- memcpy(pNewVisualConfigs, FallbackConfigs,
- NUM_FALLBACK_CONFIGS * sizeof(__GLXvisualConfig));
- memset(pNewVisualPriv, 0, NUM_FALLBACK_CONFIGS * sizeof(void *));
- }
- else {
- /* copy driver's visual config info */
- for (i = 0; i < numConfigs; i++) {
- pNewVisualConfigs[i] = visualConfigs[i];
- pNewVisualPriv[i] = visualPrivates[i];
- }
- }
-
- /* Count the number of RGB and CI visual configs */
- numRGBconfigs = 0;
- numCIconfigs = 0;
- for (i = 0; i < numNewConfigs; i++) {
- if (pNewVisualConfigs[i].rgba)
- numRGBconfigs++;
- else
- numCIconfigs++;
- }
-
- /* Count the total number of visuals to compute */
- numNewVisuals = 0;
- for (i = 0; i < numVisuals; i++) {
- int count;
-
- count = ((pVisual[i].class == TrueColor ||
- pVisual[i].class == DirectColor)
- ? numRGBconfigs : numCIconfigs);
- if (count == 0)
- count = 1; /* preserve the existing visual */
-
- numNewVisuals += count;
- }
-
- /* Reset variables for use with the next screen/driver's visual configs */
- visualConfigs = NULL;
- numConfigs = 0;
-
- /* Alloc temp space for the list of orig VisualIDs for each new visual */
- orig_vid = (VisualID *)__glXMalloc(numNewVisuals * sizeof(VisualID));
- if (!orig_vid) {
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Alloc space for the list of glXVisuals */
- modes = _gl_context_modes_create(numNewVisuals, sizeof(__GLcontextModes));
- if (modes == NULL) {
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Alloc space for the list of glXVisualPrivates */
- glXVisualPriv = (void **)__glXMalloc(numNewVisuals * sizeof(void *));
- if (!glXVisualPriv) {
- _gl_context_modes_destroy( modes );
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Alloc space for the new list of the X server's visuals */
- pVisualNew = (VisualPtr)__glXMalloc(numNewVisuals * sizeof(VisualRec));
- if (!pVisualNew) {
- __glXFree(glXVisualPriv);
- _gl_context_modes_destroy( modes );
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Initialize the new visuals */
- found_default = FALSE;
- glAquaScreens[screenInfo.numScreens-1].modes = modes;
- for (i = j = 0; i < numVisuals; i++) {
- int is_rgb = (pVisual[i].class == TrueColor ||
- pVisual[i].class == DirectColor);
-
- if (!is_rgb)
- {
- /* We don't support non-rgb visuals for GL. But we don't
- want to remove them either, so just pass them through
- with null glX configs */
-
- pVisualNew[j] = pVisual[i];
- pVisualNew[j].vid = FakeClientID(0);
-
- /* Check for the default visual */
- if (!found_default && pVisual[i].vid == *defaultVisp) {
- *defaultVisp = pVisualNew[j].vid;
- found_default = TRUE;
- }
-
- /* Save the old VisualID */
- orig_vid[j] = pVisual[i].vid;
-
- /* Initialize the glXVisual */
- _gl_copy_visual_to_context_mode( modes, & NullConfig );
- modes->visualID = pVisualNew[j].vid;
-
- j++;
-
- continue;
- }
-
- for (k = 0; k < numNewConfigs; k++) {
- if (pNewVisualConfigs[k].rgba != is_rgb)
- continue;
-
- assert( modes != NULL );
-
- /* Initialize the new visual */
- pVisualNew[j] = pVisual[i];
- pVisualNew[j].vid = FakeClientID(0);
-
- /* Check for the default visual */
- if (!found_default && pVisual[i].vid == *defaultVisp) {
- *defaultVisp = pVisualNew[j].vid;
- found_default = TRUE;
- }
-
- /* Save the old VisualID */
- orig_vid[j] = pVisual[i].vid;
-
- /* Initialize the glXVisual */
- _gl_copy_visual_to_context_mode( modes, & pNewVisualConfigs[k] );
- modes->visualID = pVisualNew[j].vid;
-
- /*
- * If the class is -1, then assume the X visual information
- * is identical to what GLX needs, and take them from the X
- * visual. NOTE: if class != -1, then all other fields MUST
- * be initialized.
- */
- if (modes->visualType == GLX_NONE) {
- modes->visualType = _gl_convert_from_x_visual_type( pVisual[i].class );
- modes->redBits = count_bits(pVisual[i].redMask);
- modes->greenBits = count_bits(pVisual[i].greenMask);
- modes->blueBits = count_bits(pVisual[i].blueMask);
- modes->alphaBits = modes->alphaBits;
- modes->redMask = pVisual[i].redMask;
- modes->greenMask = pVisual[i].greenMask;
- modes->blueMask = pVisual[i].blueMask;
- modes->alphaMask = modes->alphaMask;
- modes->rgbBits = (is_rgb)
- ? (modes->redBits + modes->greenBits +
- modes->blueBits + modes->alphaBits)
- : rootDepth;
- }
-
- /* Save the device-dependent private for this visual */
- glXVisualPriv[j] = pNewVisualPriv[k];
-
- j++;
- modes = modes->next;
- }
- }
-
- assert(j <= numNewVisuals);
-
- /* Save the GLX visuals in the screen structure */
- glAquaScreens[screenInfo.numScreens-1].num_vis = numNewVisuals;
- glAquaScreens[screenInfo.numScreens-1].priv = glXVisualPriv;
-
- /* Set up depth's VisualIDs */
- for (i = 0; i < ndepth; i++) {
- int numVids = 0;
- VisualID *pVids = NULL;
- int k, n = 0;
-
- /* Count the new number of VisualIDs at this depth */
- for (j = 0; j < pdepth[i].numVids; j++)
- for (k = 0; k < numNewVisuals; k++)
- if (pdepth[i].vids[j] == orig_vid[k])
- numVids++;
-
- /* Allocate a new list of VisualIDs for this depth */
- pVids = (VisualID *)__glXMalloc(numVids * sizeof(VisualID));
-
- /* Initialize the new list of VisualIDs for this depth */
- for (j = 0; j < pdepth[i].numVids; j++)
- for (k = 0; k < numNewVisuals; k++)
- if (pdepth[i].vids[j] == orig_vid[k])
- pVids[n++] = pVisualNew[k].vid;
-
- /* Update this depth's list of VisualIDs */
- __glXFree(pdepth[i].vids);
- pdepth[i].vids = pVids;
- pdepth[i].numVids = numVids;
- }
-
- /* Update the X server's visuals */
- *nvisualp = numNewVisuals;
- *visualp = pVisualNew;
-
- /* Free the old list of the X server's visuals */
- __glXFree(pVisual);
-
- /* Clean up temporary allocations */
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
-
- /* Free the private list created by DDX HW driver */
- if (visualPrivates)
- xfree(visualPrivates);
- visualPrivates = NULL;
-
- return TRUE;
-}
-
-/* based on code in i830_dri.c
- This ends calling glAquaSetVisualConfigs to set the static
- numconfigs, etc. */
-static void
-glAquaInitVisualConfigs(void)
-{
- int lclNumConfigs = 0;
- __GLXvisualConfig *lclVisualConfigs = NULL;
- void **lclVisualPrivates = NULL;
-
- int depth, aux, buffers, stencil, accum;
- int i = 0;
-
- GLAQUA_DEBUG_MSG("glAquaInitVisualConfigs ");
-
- /* count num configs:
- 2 Z buffer (0, 24 bit)
- 2 AUX buffer (0, 2)
- 2 buffers (single, double)
- 2 stencil (0, 8 bit)
- 2 accum (0, 64 bit)
- = 32 configs */
-
- lclNumConfigs = 2 * 2 * 2 * 2 * 2; /* 32 */
-
- /* alloc */
- lclVisualConfigs = xcalloc(sizeof(__GLXvisualConfig), lclNumConfigs);
- lclVisualPrivates = xcalloc(sizeof(void *), lclNumConfigs);
-
- /* fill in configs */
- if (NULL != lclVisualConfigs) {
- i = 0; /* current buffer */
- for (depth = 0; depth < 2; depth++) {
- for (aux = 0; aux < 2; aux++) {
- for (buffers = 0; buffers < 2; buffers++) {
- for (stencil = 0; stencil < 2; stencil++) {
- for (accum = 0; accum < 2; accum++) {
- lclVisualConfigs[i].vid = -1;
- lclVisualConfigs[i].class = -1;
- lclVisualConfigs[i].rgba = TRUE;
- lclVisualConfigs[i].redSize = -1;
- lclVisualConfigs[i].greenSize = -1;
- lclVisualConfigs[i].blueSize = -1;
- lclVisualConfigs[i].redMask = -1;
- lclVisualConfigs[i].greenMask = -1;
- lclVisualConfigs[i].blueMask = -1;
- lclVisualConfigs[i].alphaMask = 0;
- if (accum) {
- lclVisualConfigs[i].accumRedSize = 16;
- lclVisualConfigs[i].accumGreenSize = 16;
- lclVisualConfigs[i].accumBlueSize = 16;
- lclVisualConfigs[i].accumAlphaSize = 16;
- }
- else {
- lclVisualConfigs[i].accumRedSize = 0;
- lclVisualConfigs[i].accumGreenSize = 0;
- lclVisualConfigs[i].accumBlueSize = 0;
- lclVisualConfigs[i].accumAlphaSize = 0;
- }
- lclVisualConfigs[i].doubleBuffer = buffers ? TRUE : FALSE;
- lclVisualConfigs[i].stereo = FALSE;
- lclVisualConfigs[i].bufferSize = -1;
-
- lclVisualConfigs[i].depthSize = depth? 24 : 0;
- lclVisualConfigs[i].stencilSize = stencil ? 8 : 0;
- lclVisualConfigs[i].auxBuffers = aux ? 2 : 0;
- lclVisualConfigs[i].level = 0;
- lclVisualConfigs[i].visualRating = GLX_NONE_EXT;
- lclVisualConfigs[i].transparentPixel = 0;
- lclVisualConfigs[i].transparentRed = 0;
- lclVisualConfigs[i].transparentGreen = 0;
- lclVisualConfigs[i].transparentBlue = 0;
- lclVisualConfigs[i].transparentAlpha = 0;
- lclVisualConfigs[i].transparentIndex = 0;
- i++;
- }
- }
- }
- }
- }
- }
- if (i != lclNumConfigs)
- GLAQUA_DEBUG_MSG("glAquaInitVisualConfigs failed to alloc visual configs");
-
- GlxSetVisualConfigs(lclNumConfigs, lclVisualConfigs, lclVisualPrivates);
-}
-
-
-static void glAquaSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs,
- void **privates)
-{
- GLAQUA_DEBUG_MSG("glAquaSetVisualConfigs\n");
-
- numConfigs = nconfigs;
- visualConfigs = configs;
- visualPrivates = privates;
-}
-
-static Bool glAquaInitVisuals(VisualPtr *visualp, DepthPtr *depthp,
- int *nvisualp, int *ndepthp,
- int *rootDepthp, VisualID *defaultVisp,
- unsigned long sizes, int bitsPerRGB)
-{
- GLAQUA_DEBUG_MSG("glAquaInitVisuals\n");
-
- if (numConfigs == 0) /* if no configs */
- glAquaInitVisualConfigs(); /* ensure the visual configs are setup */
-
- /*
- * Setup the visuals supported by this particular screen.
- */
- return init_visuals(nvisualp, visualp, defaultVisp,
- *ndepthp, *depthp, *rootDepthp);
-}
-
-
-static void fixup_visuals(int screen)
-{
- ScreenPtr pScreen = screenInfo.screens[screen];
- glAquaScreenRec *pScr = &glAquaScreens[screen];
- int j;
- __GLcontextModes *modes;
-
- GLAQUA_DEBUG_MSG("fixup_visuals\n");
-
- for ( modes = pScr->modes ; modes != NULL ; modes = modes->next ) {
- const int vis_class = _gl_convert_to_x_visual_type( modes->visualType );
- const int nplanes = (modes->rgbBits - modes->alphaBits);
- const VisualPtr pVis = pScreen->visuals;
-
- /* Find a visual that matches the GLX visual's class and size */
- for (j = 0; j < pScreen->numVisuals; j++) {
- if (pVis[j].class == vis_class &&
- pVis[j].nplanes == nplanes) {
-
- /* Fixup the masks */
- modes->redMask = pVis[j].redMask;
- modes->greenMask = pVis[j].greenMask;
- modes->blueMask = pVis[j].blueMask;
-
- /* Recalc the sizes */
- modes->redBits = count_bits(modes->redMask);
- modes->greenBits = count_bits(modes->greenMask);
- modes->blueBits = count_bits(modes->blueMask);
- }
- }
- }
-}
-
-static void init_screen_visuals(int screen)
-{
- ScreenPtr pScreen = screenInfo.screens[screen];
- __GLcontextModes *modes;
- int *used;
- int i, j;
-
- GLAQUA_DEBUG_MSG("init_screen_visuals\n");
-
- /* FIXME: Change 'used' to be a array of bits (rather than of ints),
- * FIXME: create a stack array of 8 or 16 bytes. If 'numVisuals' is less
- * FIXME: than 64 or 128 the stack array can be used instead of calling
- * FIXME: __glXMalloc / __glXFree. If nothing else, convert 'used' to
- * FIXME: array of bytes instead of ints!
- */
- used = (int *)__glXMalloc(pScreen->numVisuals * sizeof(int));
- __glXMemset(used, 0, pScreen->numVisuals * sizeof(int));
-
- i = 0;
- for ( modes = glAquaScreens[screen].modes
- ; modes != NULL
- ; modes = modes->next ) {
- const int vis_class = _gl_convert_to_x_visual_type( modes->visualType );
- const int nplanes = (modes->rgbBits - modes->alphaBits);
- const VisualPtr pVis = pScreen->visuals;
-
- for (j = 0; j < pScreen->numVisuals; j++) {
- if (pVis[j].class == vis_class &&
- pVis[j].nplanes == nplanes &&
- pVis[j].redMask == modes->redMask &&
- pVis[j].greenMask == modes->greenMask &&
- pVis[j].blueMask == modes->blueMask &&
- !used[j]) {
-
- /* Set the VisualID */
- modes->visualID = pVis[j].vid;
-
- /* Mark this visual used */
- used[j] = 1;
- break;
- }
- }
- if ( j == pScreen->numVisuals ) {
- ErrorF("No matching visual for __GLcontextMode with "
- "visual class = %d (%d), nplanes = %u\n",
- vis_class,
- (int)modes->visualType,
- (unsigned int)(modes->rgbBits - modes->alphaBits) );
- }
- else if ( modes->visualID == -1 ) {
- FatalError( "Matching visual found, but visualID still -1!\n" );
- }
-
- i++;
- }
-
- __glXFree(used);
-}
-
-static Bool glAquaScreenProbe(int screen)
-{
- ScreenPtr pScreen;
- glAquaScreenRec *screenPriv;
-
- GLAQUA_DEBUG_MSG("glAquaScreenProbe\n");
-
- /*
- * Set up the current screen's visuals.
- */
- __glDDXScreenInfo.modes = glAquaScreens[screen].modes;
- __glDDXScreenInfo.pVisualPriv = glAquaScreens[screen].priv;
- __glDDXScreenInfo.numVisuals =
- __glDDXScreenInfo.numUsableVisuals = glAquaScreens[screen].num_vis;
-
- /*
- * Set the current screen's createContext routine. This could be
- * wrapped by a DDX GLX context creation routine.
- */
- __glDDXScreenInfo.createContext = glAquaCreateContext;
-
- /*
- * The ordering of the rgb compenents might have been changed by the
- * driver after mi initialized them.
- */
- fixup_visuals(screen);
-
- /*
- * Find the GLX visuals that are supported by this screen and create
- * XMesa's visuals.
- */
- init_screen_visuals(screen);
-
- /*
- * Wrap RealizeWindow and UnrealizeWindow on this screen
- */
- pScreen = screenInfo.screens[screen];
- screenPriv = &glAquaScreens[screen];
- screenPriv->RealizeWindow = pScreen->RealizeWindow;
- pScreen->RealizeWindow = glAquaRealizeWindow;
- screenPriv->UnrealizeWindow = pScreen->UnrealizeWindow;
- pScreen->UnrealizeWindow = glAquaUnrealizeWindow;
-
- return TRUE;
-}
-
-static GLboolean glAquaSwapBuffers(__GLXdrawablePrivate *glxPriv)
-{
- // swap buffers on only *one* of the contexts
- // (e.g. the last one for drawing)
- __GLcontext *gc = (__GLcontext *)glxPriv->drawGlxc->gc;
- CGLError gl_err;
-
- GLAQUA_DEBUG_MSG("glAquaSwapBuffers\n");
-
- if (gc != NULL && gc->ctx != NULL)
- {
- gl_err = CGLFlushDrawable(gc->ctx);
- if (gl_err != 0)
- ErrorF("CGLFlushDrawable error: %s\n", CGLErrorString(gl_err));
- }
-
- return GL_TRUE;
-}
-
-static void glAquaDestroyDrawablePrivate(__GLdrawablePrivate *glPriv)
-{
- GLAQUA_DEBUG_MSG("glAquaDestroyDrawablePrivate\n");
-
- /* It doesn't work to call DRIDestroySurface here, the drawable's
- already gone.. But dri.c notices the window destruction and
- frees the surface itself. */
-
- free(glPriv->private);
- glPriv->private = NULL;
-}
-
-static void glAquaCreateBuffer(__GLXdrawablePrivate *glxPriv)
-{
- GLAquaDrawableRec *aquaPriv = malloc(sizeof(GLAquaDrawableRec));
- __GLdrawablePrivate *glPriv = &glxPriv->glPriv;
-
- aquaPriv->sid = 0;
- aquaPriv->pDraw = NULL;
-
- GLAQUA_DEBUG_MSG("glAquaCreateBuffer\n");
-
- // replace swapBuffers (original is never called)
- glxPriv->swapBuffers = glAquaSwapBuffers;
-
- // stash private data
- glPriv->private = aquaPriv;
- glPriv->freePrivate = glAquaDestroyDrawablePrivate;
-}
-
-static void glAquaResetExtension(void)
-{
- GLAQUA_DEBUG_MSG("glAquaResetExtension\n");
- CGLSetOption(kCGLGOResetLibrary, GL_TRUE);
-}
-
-// Extra goodies for glx
-
-GLuint __glFloorLog2(GLuint val)
-{
- int c = 0;
-
- while (val > 1) {
- c++;
- val >>= 1;
- }
- return c;
-}
diff --git a/nx-X11/programs/Xserver/GL/dri/Imakefile b/nx-X11/programs/Xserver/GL/dri/Imakefile
deleted file mode 100644
index 8ea938f8c..000000000
--- a/nx-X11/programs/Xserver/GL/dri/Imakefile
+++ /dev/null
@@ -1,35 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/GL/dri/Imakefile,v 1.6 2001/04/28 13:55:36 dawes Exp $
-
-#define IHaveModules
-#include <Server.tmpl>
-
-#if DoLoadableServer
-MSRC = drimodule.c
-MOBJ = drimodule.o
-#endif
-
- SRCS = xf86dri.c dri.c $(MSRC)
- OBJS = xf86dri.o dri.o $(MOBJ)
-
- INCLUDES = -I$(SERVERSRC)/include -I$(INCLUDESRC) -I$(XINCLUDESRC) \
- -I$(EXTINCSRC) -I$(MESASRCDIR)/include \
- -I$(XF86OSSRC) -I$(XF86COMSRC) \
- -I../include -I../glx -I$(LIBSRC)/GL/include \
- -I$(DRMSRCDIR)/shared-core \
- -I$(SERVERSRC)/mi -I$(FONTINCSRC)
- DEFINES = $(GLX_DEFINES)
-
-LinkSourceFile(xf86dri.h,$(MESASRCDIR)/src/glx/x11)
-LinkSourceFile(xf86dristr.h,$(MESASRCDIR)/src/glx/x11)
-
-ModuleObjectRule()
-LibraryModuleTarget(dri,$(OBJS))
-InstallLibraryModule(dri,$(MODULEDIR),extensions)
-
-DependTarget()
-
-InstallDriverSDKLibraryModule(dri,$(DRIVERSDKMODULEDIR),extensions)
-
-InstallDriverSDKNonExecFile(dri.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(sarea.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86dri.h,$(DRIVERSDKINCLUDEDIR))
diff --git a/nx-X11/programs/Xserver/GL/dri/Imakefile.NX.reference b/nx-X11/programs/Xserver/GL/dri/Imakefile.NX.reference
deleted file mode 100644
index 59fb0af84..000000000
--- a/nx-X11/programs/Xserver/GL/dri/Imakefile.NX.reference
+++ /dev/null
@@ -1,35 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/GL/dri/Imakefile,v 1.7 2003/02/11 21:34:04 tsi Exp $
-
-#define IHaveModules
-#include <Server.tmpl>
-
-#if DoLoadableServer
-MSRC = drimodule.c
-MOBJ = drimodule.o
-#endif
-
- SRCS = xf86dri.c dri.c $(MSRC)
- OBJS = xf86dri.o dri.o $(MOBJ)
-
- INCLUDES = -I$(SERVERSRC)/include -I$(INCLUDESRC) -I$(XINCLUDESRC) \
- -I$(EXTINCSRC) \
- -I$(XF86OSSRC) -I$(XF86COMSRC) \
- -I../include -I../glx -I$(LIBSRC)/GL/include \
- -I$(SERVERSRC)/mi -I$(FONTINCSRC) \
- -I../../hw/xfree86/os-support/bus
- DEFINES = $(GLX_DEFINES)
-
-LinkSourceFile(xf86dri.h,$(LIBSRC)/GL/dri)
-LinkSourceFile(xf86dristr.h,$(LIBSRC)/GL/dri)
-
-ModuleObjectRule()
-LibraryModuleTarget(dri,$(OBJS))
-InstallLibraryModule(dri,$(MODULEDIR),extensions)
-
-DependTarget()
-
-InstallDriverSDKLibraryModule(dri,$(DRIVERSDKMODULEDIR),extensions)
-
-InstallDriverSDKNonExecFile(dri.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(sarea.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86dri.h,$(DRIVERSDKINCLUDEDIR))
diff --git a/nx-X11/programs/Xserver/GL/dri/Imakefile.XF86.reference b/nx-X11/programs/Xserver/GL/dri/Imakefile.XF86.reference
deleted file mode 100644
index c8770f6d8..000000000
--- a/nx-X11/programs/Xserver/GL/dri/Imakefile.XF86.reference
+++ /dev/null
@@ -1,34 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/GL/dri/Imakefile,v 1.7 2003/02/11 21:34:04 tsi Exp $
-
-#define IHaveModules
-#include <Server.tmpl>
-
-#if DoLoadableServer
-MSRC = drimodule.c
-MOBJ = drimodule.o
-#endif
-
- SRCS = xf86dri.c dri.c $(MSRC)
- OBJS = xf86dri.o dri.o $(MOBJ)
-
- INCLUDES = -I$(SERVERSRC)/include -I$(INCLUDESRC) -I$(XINCLUDESRC) \
- -I$(EXTINCSRC) \
- -I$(XF86OSSRC) -I$(XF86COMSRC) \
- -I../include -I../glx -I$(LIBSRC)/GL/include \
- -I$(SERVERSRC)/mi -I$(FONTINCSRC)
- DEFINES = $(GLX_DEFINES)
-
-LinkSourceFile(xf86dri.h,$(LIBSRC)/GL/dri)
-LinkSourceFile(xf86dristr.h,$(LIBSRC)/GL/dri)
-
-ModuleObjectRule()
-LibraryModuleTarget(dri,$(OBJS))
-InstallLibraryModule(dri,$(MODULEDIR),extensions)
-
-DependTarget()
-
-InstallDriverSDKLibraryModule(dri,$(DRIVERSDKMODULEDIR),extensions)
-
-InstallDriverSDKNonExecFile(dri.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(sarea.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86dri.h,$(DRIVERSDKINCLUDEDIR))
diff --git a/nx-X11/programs/Xserver/GL/dri/dri-def.cpp b/nx-X11/programs/Xserver/GL/dri/dri-def.cpp
deleted file mode 100644
index 0d1ab6872..000000000
--- a/nx-X11/programs/Xserver/GL/dri/dri-def.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-LIBRARY DRI
-VERSION LIBRARY_VERSION
-EXPORTS
-
-XFree86DRIExtensionInit
-DRIAuthConnection
-DRIBlockHandler
-DRIClipNotify
-DRICloseConnection
-DRICloseScreen
-DRIContextPrivDelete
-DRICopyWindow
-DRICreateContext
-DRICreateContextPriv
-DRICreateContextPrivFromHandle
-DRICreateDrawable
-DRICreateInfoRec
-DRIDestroyContext
-DRIDestroyContextPriv
-DRIDestroyDrawable
-DRIDestroyInfoRec
-DRIDoBlockHandler
-DRIDoWakeupHandler
-DRIDrawablePrivDelete
-DRIExtensionInit
-DRIFinishScreenInit
-DRIGetClientDriverName
-DRIGetContext
-DRIGetContextStore
-DRIGetDeviceInfo
-DRIGetDrawableIndex
-DRIGetDrawableInfo
-DRIGetDrawableStamp
-DRIGetSAREAPrivate
-DRIGetWrappedFuncs
-DRILock
-DRIOpenConnection
-DRIPaintWindow
-DRIPostValidateTree
-DRIPrintDrawableLock
-DRIQueryDirectRenderingCapable
-DRIQueryVersion
-DRIReset
-DRIScreenInit
-DRISwapContext
-DRIUnlock
-DRIValidateTree
-DRIWakeupHandler
-
-/* $XFree86$ */
diff --git a/nx-X11/programs/Xserver/GL/dri/dri.c b/nx-X11/programs/Xserver/GL/dri/dri.c
deleted file mode 100644
index 424a21c68..000000000
--- a/nx-X11/programs/Xserver/GL/dri/dri.c
+++ /dev/null
@@ -1,2109 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/dri.c,v 1.39 2003/11/10 18:21:41 tsi Exp $ */
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-Copyright 2000 VA Linux Systems, Inc.
-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 the rights to use, copy, modify, merge, publish,
-distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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:
- * Jens Owen <jens@tungstengraphics.com>
- * Rickard E. (Rik) Faith <faith@valinux.com>
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#ifdef XFree86LOADER
-#include "xf86_ansic.h"
-#else
-#include <sys/time.h>
-#include <unistd.h>
-#endif
-
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "dixstruct.h"
-#include "extnsionst.h"
-#include "colormapst.h"
-#include "cursorstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "servermd.h"
-#define _XF86DRI_SERVER_
-#include "xf86dristr.h"
-#include "swaprep.h"
-#include "xf86str.h"
-#include "dri.h"
-#include "sarea.h"
-#include "dristruct.h"
-#include "xf86.h"
-#include "xf86drm.h"
-#include "glxserver.h"
-#include "mi.h"
-#include "mipointer.h"
-
-#if defined(XFree86LOADER) && !defined(PANORAMIX)
-extern Bool noPanoramiXExtension;
-#endif
-
-static int DRIScreenPrivIndex = -1;
-static int DRIWindowPrivIndex = -1;
-static unsigned long DRIGeneration = 0;
-static unsigned int DRIDrawableValidationStamp = 0;
-
-static RESTYPE DRIDrawablePrivResType;
-static RESTYPE DRIContextPrivResType;
-static void DRIDestroyDummyContext(ScreenPtr pScreen, Bool hasCtxPriv);
-
- /* Wrapper just like xf86DrvMsg, but
- without the verbosity level checking.
- This will make it easy to turn off some
- messages later, based on verbosity
- level. */
-
-/*
- * Since we're already referencing things from the XFree86 common layer in
- * this file, we'd might as well just call xf86VDrvMsgVerb, and have
- * consistent message formatting. The verbosity of these messages can be
- * easily changed here.
- */
-#define DRI_MSG_VERBOSITY 1
-static void
-DRIDrvMsg(int scrnIndex, MessageType type, const char *format, ...)
-{
- va_list ap;
-
- va_start(ap, format);
- xf86VDrvMsgVerb(scrnIndex, type, DRI_MSG_VERBOSITY, format, ap);
- va_end(ap);
-}
-
-Bool
-DRIScreenInit(ScreenPtr pScreen, DRIInfoPtr pDRIInfo, int *pDRMFD)
-{
- DRIScreenPrivPtr pDRIPriv;
- drm_context_t * reserved;
- int reserved_count;
- int i, fd, drmWasAvailable;
- Bool xineramaInCore = FALSE;
- int err = 0;
- char *openbusid;
- drmVersionPtr drmlibv;
- int drmlibmajor, drmlibminor, drmdimajor, drmdiminor;
-
- if (DRIGeneration != serverGeneration) {
- if ((DRIScreenPrivIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- DRIGeneration = serverGeneration;
- }
-
- /* If the DRI extension is disabled, do not initialize the DRI */
- if (noXFree86DRIExtension) {
- DRIDrvMsg(pScreen->myNum, X_WARNING,
- "Direct rendering has been disabled.\n");
- return FALSE;
- }
-
- /*
- * If Xinerama is on, don't allow DRI to initialise. It won't be usable
- * anyway.
- */
-#if defined(PANORAMIX) && !defined(XFree86LOADER)
- xineramaInCore = TRUE;
-#elif defined(XFree86LOADER)
- if (xf86LoaderCheckSymbol("noPanoramiXExtension"))
- xineramaInCore = TRUE;
-#endif
-
-#if defined(PANORAMIX) || defined(XFree86LOADER)
- if (xineramaInCore) {
- if (!noPanoramiXExtension) {
- DRIDrvMsg(pScreen->myNum, X_WARNING,
- "Direct rendering is not supported when Xinerama is enabled\n");
- return FALSE;
- }
- }
-#endif
-
- drmWasAvailable = drmAvailable();
-
- /* Check the DRM lib version.
- * drmGetLibVersion was not supported in version 1.0, so check for
- * symbol first to avoid possible crash or hang.
- */
- drmlibmajor = 1;
- drmlibminor = 0;
- if (xf86LoaderCheckSymbol("drmGetLibVersion")) {
- drmlibv = drmGetLibVersion(-1);
- if (drmlibv != NULL) {
- drmlibmajor = drmlibv->version_major;
- drmlibminor = drmlibv->version_minor;
- drmFreeVersion(drmlibv);
- }
- }
-
- /* Check if the libdrm can handle falling back to loading based on name
- * if a busid string is passed.
- */
- if (drmlibmajor == 1 && drmlibminor >= 2)
- openbusid = pDRIInfo->busIdString;
- else
- openbusid = NULL;
-
- /* Note that drmOpen will try to load the kernel module, if needed. */
- fd = drmOpen(pDRIInfo->drmDriverName, openbusid);
- if (fd < 0) {
- /* failed to open DRM */
- pScreen->devPrivates[DRIScreenPrivIndex].ptr = NULL;
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] drmOpen failed\n");
- return FALSE;
- }
-
- if (!drmWasAvailable) {
- /* drmOpen loaded the kernel module, print a message to say so */
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] loaded kernel module for \"%s\" driver\n",
- pDRIInfo->drmDriverName);
- }
-
- pDRIPriv = (DRIScreenPrivPtr) xcalloc(1, sizeof(DRIScreenPrivRec));
- if (!pDRIPriv) {
- pScreen->devPrivates[DRIScreenPrivIndex].ptr = NULL;
- return FALSE;
- }
-
- pScreen->devPrivates[DRIScreenPrivIndex].ptr = (pointer) pDRIPriv;
- pDRIPriv->drmFD = fd;
- pDRIPriv->directRenderingSupport = TRUE;
- pDRIPriv->pDriverInfo = pDRIInfo;
- pDRIPriv->nrWindows = 0;
- pDRIPriv->fullscreen = NULL;
-
- pDRIPriv->createDummyCtx = pDRIInfo->createDummyCtx;
- pDRIPriv->createDummyCtxPriv = pDRIInfo->createDummyCtxPriv;
-
- pDRIPriv->grabbedDRILock = FALSE;
- pDRIPriv->drmSIGIOHandlerInstalled = FALSE;
-
- if (drmlibmajor == 1 && drmlibminor >= 2) {
- drmSetVersion sv;
-
- /* Get the interface version, asking for 1.1. */
- sv.drm_di_major = 1;
- sv.drm_di_minor = 1;
- sv.drm_dd_major = -1;
- err = drmSetInterfaceVersion(pDRIPriv->drmFD, &sv);
- if (err == 0) {
- drmdimajor = sv.drm_di_major;
- drmdiminor = sv.drm_di_minor;
- } else {
- /* failure, so set it to 1.0.0. */
- drmdimajor = 1;
- drmdiminor = 0;
- }
- }
- else {
- /* We can't check the DI DRM interface version, so set it to 1.0.0. */
- drmdimajor = 1;
- drmdiminor = 0;
- }
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] DRM interface version %d.%d\n", drmdimajor, drmdiminor);
-
- /* If the interface minor number is 1.1, then we've opened a DRM device
- * that already had the busid set through drmOpen.
- */
- if (drmdimajor == 1 && drmdiminor >= 1)
- err = 0;
- else
- err = drmSetBusid(pDRIPriv->drmFD, pDRIPriv->pDriverInfo->busIdString);
-
- if (err < 0) {
- pDRIPriv->directRenderingSupport = FALSE;
- pScreen->devPrivates[DRIScreenPrivIndex].ptr = NULL;
- drmClose(pDRIPriv->drmFD);
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] drmSetBusid failed (%d, %s), %s\n",
- pDRIPriv->drmFD, pDRIPriv->pDriverInfo->busIdString, strerror(-err));
- return FALSE;
- }
-
- *pDRMFD = pDRIPriv->drmFD;
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] created \"%s\" driver at busid \"%s\"\n",
- pDRIPriv->pDriverInfo->drmDriverName,
- pDRIPriv->pDriverInfo->busIdString);
-
- if (drmAddMap( pDRIPriv->drmFD,
- 0,
- pDRIPriv->pDriverInfo->SAREASize,
- DRM_SHM,
- DRM_CONTAINS_LOCK,
- &pDRIPriv->hSAREA) < 0)
- {
- pDRIPriv->directRenderingSupport = FALSE;
- pScreen->devPrivates[DRIScreenPrivIndex].ptr = NULL;
- drmClose(pDRIPriv->drmFD);
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] drmAddMap failed\n");
- return FALSE;
- }
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] added %d byte SAREA at %p\n",
- pDRIPriv->pDriverInfo->SAREASize, pDRIPriv->hSAREA);
-
- if (drmMap( pDRIPriv->drmFD,
- pDRIPriv->hSAREA,
- pDRIPriv->pDriverInfo->SAREASize,
- (drmAddressPtr)(&pDRIPriv->pSAREA)) < 0)
- {
- pDRIPriv->directRenderingSupport = FALSE;
- pScreen->devPrivates[DRIScreenPrivIndex].ptr = NULL;
- drmClose(pDRIPriv->drmFD);
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] drmMap failed\n");
- return FALSE;
- }
- memset(pDRIPriv->pSAREA, 0, pDRIPriv->pDriverInfo->SAREASize);
- DRIDrvMsg(pScreen->myNum, X_INFO, "[drm] mapped SAREA %p to %p\n",
- pDRIPriv->hSAREA, pDRIPriv->pSAREA);
-
- if (drmAddMap( pDRIPriv->drmFD,
- (drm_handle_t)pDRIPriv->pDriverInfo->frameBufferPhysicalAddress,
- pDRIPriv->pDriverInfo->frameBufferSize,
- DRM_FRAME_BUFFER,
- 0,
- &pDRIPriv->hFrameBuffer) < 0)
- {
- pDRIPriv->directRenderingSupport = FALSE;
- pScreen->devPrivates[DRIScreenPrivIndex].ptr = NULL;
- drmUnmap(pDRIPriv->pSAREA, pDRIPriv->pDriverInfo->SAREASize);
- drmClose(pDRIPriv->drmFD);
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] drmAddMap failed\n");
- return FALSE;
- }
- DRIDrvMsg(pScreen->myNum, X_INFO, "[drm] framebuffer handle = %p\n",
- pDRIPriv->hFrameBuffer);
-
- /* Add tags for reserved contexts */
- if ((reserved = drmGetReservedContextList(pDRIPriv->drmFD,
- &reserved_count))) {
- int i;
- void *tag;
-
- for (i = 0; i < reserved_count; i++) {
- tag = DRICreateContextPrivFromHandle(pScreen,
- reserved[i],
- DRI_CONTEXT_RESERVED);
- drmAddContextTag(pDRIPriv->drmFD, reserved[i], tag);
- }
- drmFreeReservedContextList(reserved);
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] added %d reserved context%s for kernel\n",
- reserved_count, reserved_count > 1 ? "s" : "");
- }
-
- /* validate max drawable table entry set by driver */
- if ((pDRIPriv->pDriverInfo->maxDrawableTableEntry <= 0) ||
- (pDRIPriv->pDriverInfo->maxDrawableTableEntry > SAREA_MAX_DRAWABLES)) {
- DRIDrvMsg(pScreen->myNum, X_ERROR,
- "Invalid max drawable table size set by driver: %d\n",
- pDRIPriv->pDriverInfo->maxDrawableTableEntry);
- }
-
- /* Initialize drawable tables (screen private and SAREA) */
- for( i=0; i < pDRIPriv->pDriverInfo->maxDrawableTableEntry; i++) {
- pDRIPriv->DRIDrawables[i] = NULL;
- pDRIPriv->pSAREA->drawableTable[i].stamp = 0;
- pDRIPriv->pSAREA->drawableTable[i].flags = 0;
- }
-
- return TRUE;
-}
-
-Bool
-DRIFinishScreenInit(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIInfoPtr pDRIInfo = pDRIPriv->pDriverInfo;
- DRIContextFlags flags = 0;
- DRIContextPrivPtr pDRIContextPriv;
-
- /* Set up flags for DRICreateContextPriv */
- switch (pDRIInfo->driverSwapMethod) {
- case DRI_KERNEL_SWAP: flags = DRI_CONTEXT_2DONLY; break;
- case DRI_HIDE_X_CONTEXT: flags = DRI_CONTEXT_PRESERVED; break;
- }
-
- if (!(pDRIContextPriv = DRICreateContextPriv(pScreen,
- &pDRIPriv->myContext,
- flags))) {
- DRIDrvMsg(pScreen->myNum, X_ERROR,
- "failed to create server context\n");
- return FALSE;
- }
- pDRIPriv->myContextPriv = pDRIContextPriv;
-
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "X context handle = %p\n", pDRIPriv->myContext);
-
- /* Now that we have created the X server's context, we can grab the
- * hardware lock for the X server.
- */
- DRILock(pScreen, 0);
- pDRIPriv->grabbedDRILock = TRUE;
-
- /* pointers so that we can prevent memory leaks later */
- pDRIPriv->hiddenContextStore = NULL;
- pDRIPriv->partial3DContextStore = NULL;
-
- switch(pDRIInfo->driverSwapMethod) {
- case DRI_HIDE_X_CONTEXT:
- /* Server will handle 3D swaps, and hide 2D swaps from kernel.
- * Register server context as a preserved context.
- */
-
- /* allocate memory for hidden context store */
- pDRIPriv->hiddenContextStore
- = (void *)xcalloc(1, pDRIInfo->contextSize);
- if (!pDRIPriv->hiddenContextStore) {
- DRIDrvMsg(pScreen->myNum, X_ERROR,
- "failed to allocate hidden context\n");
- DRIDestroyContextPriv(pDRIContextPriv);
- return FALSE;
- }
-
- /* allocate memory for partial 3D context store */
- pDRIPriv->partial3DContextStore
- = (void *)xcalloc(1, pDRIInfo->contextSize);
- if (!pDRIPriv->partial3DContextStore) {
- DRIDrvMsg(pScreen->myNum, X_ERROR,
- "[DRI] failed to allocate partial 3D context\n");
- xfree(pDRIPriv->hiddenContextStore);
- DRIDestroyContextPriv(pDRIContextPriv);
- return FALSE;
- }
-
- /* save initial context store */
- if (pDRIInfo->SwapContext) {
- (*pDRIInfo->SwapContext)(
- pScreen,
- DRI_NO_SYNC,
- DRI_2D_CONTEXT,
- pDRIPriv->hiddenContextStore,
- DRI_NO_CONTEXT,
- NULL);
- }
- /* fall through */
-
- case DRI_SERVER_SWAP:
- /* For swap methods of DRI_SERVER_SWAP and DRI_HIDE_X_CONTEXT
- * setup signal handler for receiving swap requests from kernel
- */
- if (!(pDRIPriv->drmSIGIOHandlerInstalled =
- drmInstallSIGIOHandler(pDRIPriv->drmFD, DRISwapContext))) {
- DRIDrvMsg(pScreen->myNum, X_ERROR,
- "[drm] failed to setup DRM signal handler\n");
- if (pDRIPriv->hiddenContextStore)
- xfree(pDRIPriv->hiddenContextStore);
- if (pDRIPriv->partial3DContextStore)
- xfree(pDRIPriv->partial3DContextStore);
- DRIDestroyContextPriv(pDRIContextPriv);
- return FALSE;
- } else {
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] installed DRM signal handler\n");
- }
-
- default:
- break;
- }
-
- /* Wrap DRI support */
- if (pDRIInfo->wrap.ValidateTree) {
- pDRIPriv->wrap.ValidateTree = pScreen->ValidateTree;
- pScreen->ValidateTree = pDRIInfo->wrap.ValidateTree;
- }
- if (pDRIInfo->wrap.PostValidateTree) {
- pDRIPriv->wrap.PostValidateTree = pScreen->PostValidateTree;
- pScreen->PostValidateTree = pDRIInfo->wrap.PostValidateTree;
- }
- if (pDRIInfo->wrap.WindowExposures) {
- pDRIPriv->wrap.WindowExposures = pScreen->WindowExposures;
- pScreen->WindowExposures = pDRIInfo->wrap.WindowExposures;
- }
- if (pDRIInfo->wrap.CopyWindow) {
- pDRIPriv->wrap.CopyWindow = pScreen->CopyWindow;
- pScreen->CopyWindow = pDRIInfo->wrap.CopyWindow;
- }
- if (pDRIInfo->wrap.ClipNotify) {
- pDRIPriv->wrap.ClipNotify = pScreen->ClipNotify;
- pScreen->ClipNotify = pDRIInfo->wrap.ClipNotify;
- }
- if (pDRIInfo->wrap.AdjustFrame) {
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- pDRIPriv->wrap.AdjustFrame = pScrn->AdjustFrame;
- pScrn->AdjustFrame = pDRIInfo->wrap.AdjustFrame;
- }
- pDRIPriv->wrapped = TRUE;
-
- DRIDrvMsg(pScreen->myNum, X_INFO, "[DRI] installation complete\n");
-
- return TRUE;
-}
-
-void
-DRICloseScreen(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIInfoPtr pDRIInfo;
- drm_context_t * reserved;
- int reserved_count;
-
- if (pDRIPriv && pDRIPriv->directRenderingSupport) {
-
- pDRIInfo = pDRIPriv->pDriverInfo;
-
- if (pDRIPriv->wrapped) {
- /* Unwrap DRI Functions */
- if (pDRIInfo->wrap.ValidateTree) {
- pScreen->ValidateTree = pDRIPriv->wrap.ValidateTree;
- pDRIPriv->wrap.ValidateTree = NULL;
- }
- if (pDRIInfo->wrap.PostValidateTree) {
- pScreen->PostValidateTree = pDRIPriv->wrap.PostValidateTree;
- pDRIPriv->wrap.PostValidateTree = NULL;
- }
- if (pDRIInfo->wrap.WindowExposures) {
- pScreen->WindowExposures = pDRIPriv->wrap.WindowExposures;
- pDRIPriv->wrap.WindowExposures = NULL;
- }
- if (pDRIInfo->wrap.CopyWindow) {
- pScreen->CopyWindow = pDRIPriv->wrap.CopyWindow;
- pDRIPriv->wrap.CopyWindow = NULL;
- }
- if (pDRIInfo->wrap.ClipNotify) {
- pScreen->ClipNotify = pDRIPriv->wrap.ClipNotify;
- pDRIPriv->wrap.ClipNotify = NULL;
- }
- if (pDRIInfo->wrap.AdjustFrame) {
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- pScrn->AdjustFrame = pDRIPriv->wrap.AdjustFrame;
- pDRIPriv->wrap.AdjustFrame = NULL;
- }
- pDRIPriv->wrapped = FALSE;
- }
-
- if (pDRIPriv->drmSIGIOHandlerInstalled) {
- if (!drmRemoveSIGIOHandler(pDRIPriv->drmFD)) {
- DRIDrvMsg(pScreen->myNum, X_ERROR,
- "[drm] failed to remove DRM signal handler\n");
- }
- }
-
- if (pDRIPriv->dummyCtxPriv && pDRIPriv->createDummyCtx) {
- DRIDestroyDummyContext(pScreen, pDRIPriv->createDummyCtxPriv);
- }
-
- if (!DRIDestroyContextPriv(pDRIPriv->myContextPriv)) {
- DRIDrvMsg(pScreen->myNum, X_ERROR,
- "failed to destroy server context\n");
- }
-
- /* Remove tags for reserved contexts */
- if ((reserved = drmGetReservedContextList(pDRIPriv->drmFD,
- &reserved_count))) {
- int i;
-
- for (i = 0; i < reserved_count; i++) {
- DRIDestroyContextPriv(drmGetContextTag(pDRIPriv->drmFD,
- reserved[i]));
- }
- drmFreeReservedContextList(reserved);
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] removed %d reserved context%s for kernel\n",
- reserved_count, reserved_count > 1 ? "s" : "");
- }
-
- /* Make sure signals get unblocked etc. */
- drmUnlock(pDRIPriv->drmFD, pDRIPriv->myContext);
- pDRIPriv->lockRefCount = 0;
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] unmapping %d bytes of SAREA %p at %p\n",
- pDRIInfo->SAREASize,
- pDRIPriv->hSAREA,
- pDRIPriv->pSAREA);
- if (drmUnmap(pDRIPriv->pSAREA, pDRIInfo->SAREASize)) {
- DRIDrvMsg(pScreen->myNum, X_ERROR,
- "[drm] unable to unmap %d bytes"
- " of SAREA %p at %p\n",
- pDRIInfo->SAREASize,
- pDRIPriv->hSAREA,
- pDRIPriv->pSAREA);
- }
-
- drmClose(pDRIPriv->drmFD);
-
- xfree(pDRIPriv);
- pScreen->devPrivates[DRIScreenPrivIndex].ptr = NULL;
- }
-}
-
-Bool
-DRIExtensionInit(void)
-{
- int i;
- ScreenPtr pScreen;
-
- if (DRIScreenPrivIndex < 0) {
- return FALSE;
- }
-
- /* Allocate a window private index with a zero sized private area for
- * each window, then should a window become a DRI window, we'll hang
- * a DRIWindowPrivateRec off of this private index.
- */
- if ((DRIWindowPrivIndex = AllocateWindowPrivateIndex()) < 0)
- return FALSE;
-
- DRIDrawablePrivResType = CreateNewResourceType(DRIDrawablePrivDelete);
- DRIContextPrivResType = CreateNewResourceType(DRIContextPrivDelete);
-
- for (i = 0; i < screenInfo.numScreens; i++)
- {
- pScreen = screenInfo.screens[i];
- if (!AllocateWindowPrivate(pScreen, DRIWindowPrivIndex, 0))
- return FALSE;
- }
-
- RegisterBlockAndWakeupHandlers(DRIBlockHandler, DRIWakeupHandler, NULL);
-
- return TRUE;
-}
-
-void
-DRIReset(void)
-{
- /*
- * This stub routine is called when the X Server recycles, resources
- * allocated by DRIExtensionInit need to be managed here.
- *
- * Currently this routine is a stub because all the interesting resources
- * are managed via the screen init process.
- */
-}
-
-Bool
-DRIQueryDirectRenderingCapable(ScreenPtr pScreen, Bool* isCapable)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- if (pDRIPriv)
- *isCapable = pDRIPriv->directRenderingSupport;
- else
- *isCapable = FALSE;
-
- return TRUE;
-}
-
-Bool
-DRIOpenConnection(ScreenPtr pScreen, drm_handle_t * hSAREA, char **busIdString)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- *hSAREA = pDRIPriv->hSAREA;
- *busIdString = pDRIPriv->pDriverInfo->busIdString;
-
- return TRUE;
-}
-
-Bool
-DRIAuthConnection(ScreenPtr pScreen, drm_magic_t magic)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- if (drmAuthMagic(pDRIPriv->drmFD, magic)) return FALSE;
- return TRUE;
-}
-
-Bool
-DRICloseConnection(ScreenPtr pScreen)
-{
- return TRUE;
-}
-
-Bool
-DRIGetClientDriverName(ScreenPtr pScreen,
- int *ddxDriverMajorVersion,
- int *ddxDriverMinorVersion,
- int *ddxDriverPatchVersion,
- char **clientDriverName)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- *ddxDriverMajorVersion = pDRIPriv->pDriverInfo->ddxDriverMajorVersion;
- *ddxDriverMinorVersion = pDRIPriv->pDriverInfo->ddxDriverMinorVersion;
- *ddxDriverPatchVersion = pDRIPriv->pDriverInfo->ddxDriverPatchVersion;
- *clientDriverName = pDRIPriv->pDriverInfo->clientDriverName;
-
- return TRUE;
-}
-
-/* DRICreateContextPriv and DRICreateContextPrivFromHandle are helper
- functions that layer on drmCreateContext and drmAddContextTag.
-
- DRICreateContextPriv always creates a kernel drm_context_t and then calls
- DRICreateContextPrivFromHandle to create a DRIContextPriv structure for
- DRI tracking. For the SIGIO handler, the drm_context_t is associated with
- DRIContextPrivPtr. Any special flags are stored in the DRIContextPriv
- area and are passed to the kernel (if necessary).
-
- DRICreateContextPriv returns a pointer to newly allocated
- DRIContextPriv, and returns the kernel drm_context_t in pHWContext. */
-
-DRIContextPrivPtr
-DRICreateContextPriv(ScreenPtr pScreen,
- drm_context_t * pHWContext,
- DRIContextFlags flags)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- if (drmCreateContext(pDRIPriv->drmFD, pHWContext)) {
- return NULL;
- }
-
- return DRICreateContextPrivFromHandle(pScreen, *pHWContext, flags);
-}
-
-DRIContextPrivPtr
-DRICreateContextPrivFromHandle(ScreenPtr pScreen,
- drm_context_t hHWContext,
- DRIContextFlags flags)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIContextPrivPtr pDRIContextPriv;
- int contextPrivSize;
-
- contextPrivSize = sizeof(DRIContextPrivRec) +
- pDRIPriv->pDriverInfo->contextSize;
- if (!(pDRIContextPriv = xcalloc(1, contextPrivSize))) {
- return NULL;
- }
- pDRIContextPriv->pContextStore = (void *)(pDRIContextPriv + 1);
-
- drmAddContextTag(pDRIPriv->drmFD, hHWContext, pDRIContextPriv);
-
- pDRIContextPriv->hwContext = hHWContext;
- pDRIContextPriv->pScreen = pScreen;
- pDRIContextPriv->flags = flags;
- pDRIContextPriv->valid3D = FALSE;
-
- if (flags & DRI_CONTEXT_2DONLY) {
- if (drmSetContextFlags(pDRIPriv->drmFD,
- hHWContext,
- DRM_CONTEXT_2DONLY)) {
- DRIDrvMsg(pScreen->myNum, X_ERROR,
- "[drm] failed to set 2D context flag\n");
- DRIDestroyContextPriv(pDRIContextPriv);
- return NULL;
- }
- }
- if (flags & DRI_CONTEXT_PRESERVED) {
- if (drmSetContextFlags(pDRIPriv->drmFD,
- hHWContext,
- DRM_CONTEXT_PRESERVED)) {
- DRIDrvMsg(pScreen->myNum, X_ERROR,
- "[drm] failed to set preserved flag\n");
- DRIDestroyContextPriv(pDRIContextPriv);
- return NULL;
- }
- }
- return pDRIContextPriv;
-}
-
-Bool
-DRIDestroyContextPriv(DRIContextPrivPtr pDRIContextPriv)
-{
- DRIScreenPrivPtr pDRIPriv;
-
- if (!pDRIContextPriv) return TRUE;
-
- pDRIPriv = DRI_SCREEN_PRIV(pDRIContextPriv->pScreen);
-
- if (!(pDRIContextPriv->flags & DRI_CONTEXT_RESERVED)) {
- /* Don't delete reserved contexts from
- kernel area -- the kernel manages its
- reserved contexts itself. */
- if (drmDestroyContext(pDRIPriv->drmFD, pDRIContextPriv->hwContext))
- return FALSE;
- }
-
- /* Remove the tag last to prevent a race
- condition where the context has pending
- buffers. The context can't be re-used
- while in this thread, but buffers can be
- dispatched asynchronously. */
- drmDelContextTag(pDRIPriv->drmFD, pDRIContextPriv->hwContext);
- xfree(pDRIContextPriv);
- return TRUE;
-}
-
-static Bool
-DRICreateDummyContext(ScreenPtr pScreen, Bool needCtxPriv)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- __GLXscreenInfo *pGLXScreen = __glXgetActiveScreen(pScreen->myNum);
- __GLcontextModes *modes = pGLXScreen->modes;
- void **pVisualConfigPriv = pGLXScreen->pVisualPriv;
- DRIContextPrivPtr pDRIContextPriv;
- void *contextStore;
- VisualPtr visual;
- int visNum;
-
- visual = pScreen->visuals;
-
- /* Find the X visual that corresponds the the first GLX visual */
- for (visNum = 0;
- visNum < pScreen->numVisuals;
- visNum++, visual++) {
- if (modes->visualID == visual->vid)
- break;
- }
- if (visNum == pScreen->numVisuals) return FALSE;
-
- if (!(pDRIContextPriv =
- DRICreateContextPriv(pScreen,
- &pDRIPriv->pSAREA->dummy_context, 0))) {
- return FALSE;
- }
-
- contextStore = DRIGetContextStore(pDRIContextPriv);
- if (pDRIPriv->pDriverInfo->CreateContext && needCtxPriv) {
- if (!pDRIPriv->pDriverInfo->CreateContext(pScreen, visual,
- pDRIPriv->pSAREA->dummy_context,
- *pVisualConfigPriv,
- (DRIContextType)(long)contextStore)) {
- DRIDestroyContextPriv(pDRIContextPriv);
- return FALSE;
- }
- }
-
- pDRIPriv->dummyCtxPriv = pDRIContextPriv;
- return TRUE;
-}
-
-static void
-DRIDestroyDummyContext(ScreenPtr pScreen, Bool hasCtxPriv)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIContextPrivPtr pDRIContextPriv = pDRIPriv->dummyCtxPriv;
- void *contextStore;
-
- if (!pDRIContextPriv) return;
- if (pDRIPriv->pDriverInfo->DestroyContext && hasCtxPriv) {
- contextStore = DRIGetContextStore(pDRIContextPriv);
- pDRIPriv->pDriverInfo->DestroyContext(pDRIContextPriv->pScreen,
- pDRIContextPriv->hwContext,
- (DRIContextType)(long)contextStore);
- }
-
- DRIDestroyContextPriv(pDRIPriv->dummyCtxPriv);
- pDRIPriv->dummyCtxPriv = NULL;
-}
-
-Bool
-DRICreateContext(ScreenPtr pScreen, VisualPtr visual,
- XID context, drm_context_t * pHWContext)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- __GLXscreenInfo *pGLXScreen = __glXgetActiveScreen(pScreen->myNum);
- __GLcontextModes *modes = pGLXScreen->modes;
- void **pVisualConfigPriv = pGLXScreen->pVisualPriv;
- DRIContextPrivPtr pDRIContextPriv;
- void *contextStore;
-
- if (pDRIPriv->createDummyCtx && !pDRIPriv->dummyCtxPriv) {
- if (!DRICreateDummyContext(pScreen, pDRIPriv->createDummyCtxPriv)) {
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[drm] Could not create dummy context\n");
- return FALSE;
- }
- }
-
- /* Find the GLX visual associated with the one requested */
- for (modes = pGLXScreen->modes; modes != NULL; modes = modes->next) {
- if (modes->visualID == visual->vid)
- break;
- pVisualConfigPriv++;
- }
-
- if (modes == NULL) {
- /* No matching GLX visual found */
- return FALSE;
- }
-
- if (!(pDRIContextPriv = DRICreateContextPriv(pScreen, pHWContext, 0))) {
- return FALSE;
- }
-
- contextStore = DRIGetContextStore(pDRIContextPriv);
- if (pDRIPriv->pDriverInfo->CreateContext) {
- if (!((*pDRIPriv->pDriverInfo->CreateContext)(pScreen, visual,
- *pHWContext, *pVisualConfigPriv,
- (DRIContextType)(long)contextStore))) {
- DRIDestroyContextPriv(pDRIContextPriv);
- return FALSE;
- }
- }
-
- /* track this in case the client dies before cleanup */
- AddResource(context, DRIContextPrivResType, (pointer)pDRIContextPriv);
-
- return TRUE;
-}
-
-Bool
-DRIDestroyContext(ScreenPtr pScreen, XID context)
-{
- FreeResourceByType(context, DRIContextPrivResType, FALSE);
-
- return TRUE;
-}
-
-/* DRIContextPrivDelete is called by the resource manager. */
-Bool
-DRIContextPrivDelete(pointer pResource, XID id)
-{
- DRIContextPrivPtr pDRIContextPriv = (DRIContextPrivPtr)pResource;
- DRIScreenPrivPtr pDRIPriv;
- void *contextStore;
-
- pDRIPriv = DRI_SCREEN_PRIV(pDRIContextPriv->pScreen);
- if (pDRIPriv->pDriverInfo->DestroyContext) {
- contextStore = DRIGetContextStore(pDRIContextPriv);
- pDRIPriv->pDriverInfo->DestroyContext(pDRIContextPriv->pScreen,
- pDRIContextPriv->hwContext,
- (DRIContextType)(long)contextStore);
- }
- return DRIDestroyContextPriv(pDRIContextPriv);
-}
-
-
-/* This walks the drawable timestamp array and invalidates all of them
- * in the case of transition from private to shared backbuffers. It's
- * not necessary for correctness, because DRIClipNotify gets called in
- * time to prevent any conflict, but the transition from
- * shared->private is sometimes missed if we don't do this.
- */
-static void
-DRIClipNotifyAllDrawables(ScreenPtr pScreen)
-{
- int i;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- for( i=0; i < pDRIPriv->pDriverInfo->maxDrawableTableEntry; i++) {
- pDRIPriv->pSAREA->drawableTable[i].stamp = DRIDrawableValidationStamp++;
- }
-}
-
-
-static void
-DRITransitionToSharedBuffers(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIInfoPtr pDRIInfo = pDRIPriv->pDriverInfo;
-
- DRIClipNotifyAllDrawables( pScreen );
-
- if (pDRIInfo->TransitionSingleToMulti3D)
- pDRIInfo->TransitionSingleToMulti3D( pScreen );
-}
-
-
-static void
-DRITransitionToPrivateBuffers(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIInfoPtr pDRIInfo = pDRIPriv->pDriverInfo;
-
- DRIClipNotifyAllDrawables( pScreen );
-
- if (pDRIInfo->TransitionMultiToSingle3D)
- pDRIInfo->TransitionMultiToSingle3D( pScreen );
-}
-
-
-static void
-DRITransitionTo3d(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIInfoPtr pDRIInfo = pDRIPriv->pDriverInfo;
-
- DRIClipNotifyAllDrawables( pScreen );
-
- if (pDRIInfo->TransitionTo3d)
- pDRIInfo->TransitionTo3d( pScreen );
-}
-
-static void
-DRITransitionTo2d(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIInfoPtr pDRIInfo = pDRIPriv->pDriverInfo;
-
- DRIClipNotifyAllDrawables( pScreen );
-
- if (pDRIInfo->TransitionTo2d)
- pDRIInfo->TransitionTo2d( pScreen );
-}
-
-
-Bool
-DRICreateDrawable(ScreenPtr pScreen, Drawable id,
- DrawablePtr pDrawable, drm_drawable_t * hHWDrawable)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIDrawablePrivPtr pDRIDrawablePriv;
- WindowPtr pWin;
-
- if (pDrawable->type == DRAWABLE_WINDOW) {
- pWin = (WindowPtr)pDrawable;
- if ((pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin))) {
- pDRIDrawablePriv->refCount++;
- }
- else {
- /* allocate a DRI Window Private record */
- if (!(pDRIDrawablePriv = xalloc(sizeof(DRIDrawablePrivRec)))) {
- return FALSE;
- }
-
- /* Only create a drm_drawable_t once */
- if (drmCreateDrawable(pDRIPriv->drmFD, hHWDrawable)) {
- xfree(pDRIDrawablePriv);
- return FALSE;
- }
-
- /* add it to the list of DRI drawables for this screen */
- pDRIDrawablePriv->hwDrawable = *hHWDrawable;
- pDRIDrawablePriv->pScreen = pScreen;
- pDRIDrawablePriv->refCount = 1;
- pDRIDrawablePriv->drawableIndex = -1;
-
- /* save private off of preallocated index */
- pWin->devPrivates[DRIWindowPrivIndex].ptr =
- (pointer)pDRIDrawablePriv;
-
- switch (++pDRIPriv->nrWindows) {
- case 1:
- DRITransitionTo3d( pScreen );
- break;
- case 2:
- DRITransitionToSharedBuffers( pScreen );
- break;
- default:
- break;
- }
-
- /* track this in case this window is destroyed */
- AddResource(id, DRIDrawablePrivResType, (pointer)pWin);
- }
- }
- else { /* pixmap (or for GLX 1.3, a PBuffer) */
- /* NOT_DONE */
- return FALSE;
- }
-
- return TRUE;
-}
-
-Bool
-DRIDestroyDrawable(ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable)
-{
- DRIDrawablePrivPtr pDRIDrawablePriv;
- WindowPtr pWin;
-
-
- if (pDrawable->type == DRAWABLE_WINDOW) {
- pWin = (WindowPtr)pDrawable;
- pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin);
- pDRIDrawablePriv->refCount--;
- if (pDRIDrawablePriv->refCount <= 0) {
- /* This calls back DRIDrawablePrivDelete which frees private area */
- FreeResourceByType(id, DRIDrawablePrivResType, FALSE);
- }
- }
- else { /* pixmap (or for GLX 1.3, a PBuffer) */
- /* NOT_DONE */
- return FALSE;
- }
-
- return TRUE;
-}
-
-Bool
-DRIDrawablePrivDelete(pointer pResource, XID id)
-{
- DrawablePtr pDrawable = (DrawablePtr)pResource;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pDrawable->pScreen);
- DRIDrawablePrivPtr pDRIDrawablePriv;
- WindowPtr pWin;
-
- if (pDrawable->type == DRAWABLE_WINDOW) {
- pWin = (WindowPtr)pDrawable;
- pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin);
-
- if (pDRIDrawablePriv->drawableIndex != -1) {
- /* bump stamp to force outstanding 3D requests to resync */
- pDRIPriv->pSAREA->drawableTable[pDRIDrawablePriv->drawableIndex].stamp
- = DRIDrawableValidationStamp++;
-
- /* release drawable table entry */
- pDRIPriv->DRIDrawables[pDRIDrawablePriv->drawableIndex] = NULL;
- }
-
- if (drmDestroyDrawable(pDRIPriv->drmFD,
- pDRIDrawablePriv->hwDrawable)) {
- return FALSE;
- }
- xfree(pDRIDrawablePriv);
- pWin->devPrivates[DRIWindowPrivIndex].ptr = NULL;
-
- switch (--pDRIPriv->nrWindows) {
- case 0:
- DRITransitionTo2d( pDrawable->pScreen );
- break;
- case 1:
- DRITransitionToPrivateBuffers( pDrawable->pScreen );
- break;
- default:
- break;
- }
- }
- else { /* pixmap (or for GLX 1.3, a PBuffer) */
- /* NOT_DONE */
- return FALSE;
- }
-
- return TRUE;
-}
-
-Bool
-DRIGetDrawableInfo(ScreenPtr pScreen,
- DrawablePtr pDrawable,
- unsigned int* index,
- unsigned int* stamp,
- int* X,
- int* Y,
- int* W,
- int* H,
- int* numClipRects,
- drm_clip_rect_t ** pClipRects,
- int* backX,
- int* backY,
- int* numBackClipRects,
- drm_clip_rect_t ** pBackClipRects)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIDrawablePrivPtr pDRIDrawablePriv, pOldDrawPriv;
- WindowPtr pWin, pOldWin;
- int i;
-
- printf("maxDrawableTableEntry = %d\n", pDRIPriv->pDriverInfo->maxDrawableTableEntry);
-
- if (pDrawable->type == DRAWABLE_WINDOW) {
- pWin = (WindowPtr)pDrawable;
- if ((pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin))) {
-
- /* Manage drawable table */
- if (pDRIDrawablePriv->drawableIndex == -1) { /* load SAREA table */
-
- /* Search table for empty entry */
- i = 0;
- while (i < pDRIPriv->pDriverInfo->maxDrawableTableEntry) {
- if (!(pDRIPriv->DRIDrawables[i])) {
- pDRIPriv->DRIDrawables[i] = pDrawable;
- pDRIDrawablePriv->drawableIndex = i;
- pDRIPriv->pSAREA->drawableTable[i].stamp =
- DRIDrawableValidationStamp++;
- break;
- }
- i++;
- }
-
- /* Search table for oldest entry */
- if (i == pDRIPriv->pDriverInfo->maxDrawableTableEntry) {
- unsigned int oldestStamp = ~0;
- int oldestIndex = 0;
- i = pDRIPriv->pDriverInfo->maxDrawableTableEntry;
- while (i--) {
- if (pDRIPriv->pSAREA->drawableTable[i].stamp <
- oldestStamp) {
- oldestIndex = i;
- oldestStamp =
- pDRIPriv->pSAREA->drawableTable[i].stamp;
- }
- }
- pDRIDrawablePriv->drawableIndex = oldestIndex;
-
- /* release oldest drawable table entry */
- pOldWin = (WindowPtr)pDRIPriv->DRIDrawables[oldestIndex];
- pOldDrawPriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pOldWin);
- pOldDrawPriv->drawableIndex = -1;
-
- /* claim drawable table entry */
- pDRIPriv->DRIDrawables[oldestIndex] = pDrawable;
-
- /* validate SAREA entry */
- pDRIPriv->pSAREA->drawableTable[oldestIndex].stamp =
- DRIDrawableValidationStamp++;
-
- /* check for stamp wrap around */
- if (oldestStamp > DRIDrawableValidationStamp) {
-
- /* walk SAREA table and invalidate all drawables */
- for( i=0;
- i < pDRIPriv->pDriverInfo->maxDrawableTableEntry;
- i++) {
- pDRIPriv->pSAREA->drawableTable[i].stamp =
- DRIDrawableValidationStamp++;
- }
- }
- }
-
- /* If the driver wants to be notified when the index is
- * set for a drawable, let it know now.
- */
- if (pDRIPriv->pDriverInfo->SetDrawableIndex)
- pDRIPriv->pDriverInfo->SetDrawableIndex(pWin,
- pDRIDrawablePriv->drawableIndex);
-
- /* reinit drawable ID if window is visible */
- if ((pWin->viewable) &&
- (pDRIPriv->pDriverInfo->bufferRequests != DRI_NO_WINDOWS))
- {
- (*pDRIPriv->pDriverInfo->InitBuffers)(pWin,
- &pWin->clipList, pDRIDrawablePriv->drawableIndex);
- }
- }
-
- *index = pDRIDrawablePriv->drawableIndex;
- *stamp = pDRIPriv->pSAREA->drawableTable[*index].stamp;
- *X = (int)(pWin->drawable.x);
- *Y = (int)(pWin->drawable.y);
-#if 0
- *W = (int)(pWin->winSize.extents.x2 - pWin->winSize.extents.x1);
- *H = (int)(pWin->winSize.extents.y2 - pWin->winSize.extents.y1);
-#endif
- *W = (int)(pWin->drawable.width);
- *H = (int)(pWin->drawable.height);
- *numClipRects = REGION_NUM_RECTS(&pWin->clipList);
- *pClipRects = (drm_clip_rect_t *)REGION_RECTS(&pWin->clipList);
-
- if (!*numClipRects && pDRIPriv->fullscreen) {
- /* use fake full-screen clip rect */
- pDRIPriv->fullscreen_rect.x1 = *X;
- pDRIPriv->fullscreen_rect.y1 = *Y;
- pDRIPriv->fullscreen_rect.x2 = *X + *W;
- pDRIPriv->fullscreen_rect.y2 = *Y + *H;
-
- *numClipRects = 1;
- *pClipRects = &pDRIPriv->fullscreen_rect;
- }
-
- *backX = *X;
- *backY = *Y;
-
- if (pDRIPriv->nrWindows == 1 && *numClipRects) {
- /* Use a single cliprect. */
-
- int x0 = *X;
- int y0 = *Y;
- int x1 = x0 + *W;
- int y1 = y0 + *H;
-
- if (x0 < 0) x0 = 0;
- if (y0 < 0) y0 = 0;
- if (x1 > pScreen->width) x1 = pScreen->width;
- if (y1 > pScreen->height) y1 = pScreen->height;
-
- pDRIPriv->private_buffer_rect.x1 = x0;
- pDRIPriv->private_buffer_rect.y1 = y0;
- pDRIPriv->private_buffer_rect.x2 = x1;
- pDRIPriv->private_buffer_rect.y2 = y1;
-
- *numBackClipRects = 1;
- *pBackClipRects = &(pDRIPriv->private_buffer_rect);
- } else {
- /* Use the frontbuffer cliprects for back buffers. */
- *numBackClipRects = 0;
- *pBackClipRects = 0;
- }
- }
- else {
- /* Not a DRIDrawable */
- return FALSE;
- }
- }
- else { /* pixmap (or for GLX 1.3, a PBuffer) */
- /* NOT_DONE */
- return FALSE;
- }
-
- return TRUE;
-}
-
-Bool
-DRIGetDeviceInfo(ScreenPtr pScreen,
- drm_handle_t * hFrameBuffer,
- int* fbOrigin,
- int* fbSize,
- int* fbStride,
- int* devPrivateSize,
- void** pDevPrivate)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- *hFrameBuffer = pDRIPriv->hFrameBuffer;
- *fbOrigin = 0;
- *fbSize = pDRIPriv->pDriverInfo->frameBufferSize;
- *fbStride = pDRIPriv->pDriverInfo->frameBufferStride;
- *devPrivateSize = pDRIPriv->pDriverInfo->devPrivateSize;
- *pDevPrivate = pDRIPriv->pDriverInfo->devPrivate;
-
- return TRUE;
-}
-
-DRIInfoPtr
-DRICreateInfoRec(void)
-{
- DRIInfoPtr inforec = (DRIInfoPtr)xcalloc(1, sizeof(DRIInfoRec));
- if (!inforec) return NULL;
-
- /* Initialize defaults */
- inforec->busIdString = NULL;
-
- /* Wrapped function defaults */
- inforec->wrap.WakeupHandler = DRIDoWakeupHandler;
- inforec->wrap.BlockHandler = DRIDoBlockHandler;
- inforec->wrap.WindowExposures = DRIWindowExposures;
- inforec->wrap.CopyWindow = DRICopyWindow;
- inforec->wrap.ValidateTree = DRIValidateTree;
- inforec->wrap.PostValidateTree = DRIPostValidateTree;
- inforec->wrap.ClipNotify = DRIClipNotify;
- inforec->wrap.AdjustFrame = DRIAdjustFrame;
-
- inforec->TransitionTo2d = 0;
- inforec->TransitionTo3d = 0;
- inforec->SetDrawableIndex = 0;
-
- return inforec;
-}
-
-void
-DRIDestroyInfoRec(DRIInfoPtr DRIInfo)
-{
- if (DRIInfo->busIdString) xfree(DRIInfo->busIdString);
- xfree((char*)DRIInfo);
-}
-
-
-void
-DRIWakeupHandler(pointer wakeupData, int result, pointer pReadmask)
-{
- int i;
-
- for (i = 0; i < screenInfo.numScreens; i++) {
- ScreenPtr pScreen = screenInfo.screens[i];
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- if (pDRIPriv &&
- pDRIPriv->pDriverInfo->wrap.WakeupHandler)
- (*pDRIPriv->pDriverInfo->wrap.WakeupHandler)(i, wakeupData,
- result, pReadmask);
- }
-}
-
-void
-DRIBlockHandler(pointer blockData, OSTimePtr pTimeout, pointer pReadmask)
-{
- int i;
-
- for (i = 0; i < screenInfo.numScreens; i++) {
- ScreenPtr pScreen = screenInfo.screens[i];
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- if (pDRIPriv &&
- pDRIPriv->pDriverInfo->wrap.BlockHandler)
- (*pDRIPriv->pDriverInfo->wrap.BlockHandler)(i, blockData,
- pTimeout, pReadmask);
- }
-}
-
-void
-DRIDoWakeupHandler(int screenNum, pointer wakeupData,
- unsigned long result, pointer pReadmask)
-{
- ScreenPtr pScreen = screenInfo.screens[screenNum];
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- DRILock(pScreen, 0);
- if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) {
- /* hide X context by swapping 2D component here */
- (*pDRIPriv->pDriverInfo->SwapContext)(pScreen,
- DRI_3D_SYNC,
- DRI_2D_CONTEXT,
- pDRIPriv->partial3DContextStore,
- DRI_2D_CONTEXT,
- pDRIPriv->hiddenContextStore);
- }
-}
-
-void
-DRIDoBlockHandler(int screenNum, pointer blockData,
- pointer pTimeout, pointer pReadmask)
-{
- ScreenPtr pScreen = screenInfo.screens[screenNum];
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) {
- /* hide X context by swapping 2D component here */
- (*pDRIPriv->pDriverInfo->SwapContext)(pScreen,
- DRI_2D_SYNC,
- DRI_NO_CONTEXT,
- NULL,
- DRI_2D_CONTEXT,
- pDRIPriv->partial3DContextStore);
- }
- DRIUnlock(pScreen);
-}
-
-void
-DRISwapContext(int drmFD, void *oldctx, void *newctx)
-{
- DRIContextPrivPtr oldContext = (DRIContextPrivPtr)oldctx;
- DRIContextPrivPtr newContext = (DRIContextPrivPtr)newctx;
- ScreenPtr pScreen = newContext->pScreen;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- void* oldContextStore = NULL;
- DRIContextType oldContextType;
- void* newContextStore = NULL;
- DRIContextType newContextType;
- DRISyncType syncType;
-#ifdef DEBUG
- static int count = 0;
-#endif
-
- if (!newContext) {
- DRIDrvMsg(pScreen->myNum, X_ERROR,
- "[DRI] Context Switch Error: oldContext=%x, newContext=%x\n",
- oldContext, newContext);
- return;
- }
-
-#ifdef DEBUG
- /* usefull for debugging, just print out after n context switches */
- if (!count || !(count % 1)) {
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[DRI] Context switch %5d from %p/0x%08x (%d)\n",
- count,
- oldContext,
- oldContext ? oldContext->flags : 0,
- oldContext ? oldContext->hwContext : -1);
- DRIDrvMsg(pScreen->myNum, X_INFO,
- "[DRI] Context switch %5d to %p/0x%08x (%d)\n",
- count,
- newContext,
- newContext ? newContext->flags : 0,
- newContext ? newContext->hwContext : -1);
- }
- ++count;
-#endif
-
- if (!pDRIPriv->pDriverInfo->SwapContext) {
- DRIDrvMsg(pScreen->myNum, X_ERROR,
- "[DRI] DDX driver missing context swap call back\n");
- return;
- }
-
- if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) {
-
- /* only 3D contexts are swapped in this case */
- if (oldContext) {
- oldContextStore = DRIGetContextStore(oldContext);
- oldContext->valid3D = TRUE;
- oldContextType = DRI_3D_CONTEXT;
- } else {
- oldContextType = DRI_NO_CONTEXT;
- }
- newContextStore = DRIGetContextStore(newContext);
- if ((newContext->valid3D) &&
- (newContext->hwContext != pDRIPriv->myContext)) {
- newContextType = DRI_3D_CONTEXT;
- }
- else {
- newContextType = DRI_2D_CONTEXT;
- }
- syncType = DRI_3D_SYNC;
- }
- else /* default: driverSwapMethod == DRI_SERVER_SWAP */ {
-
- /* optimize 2D context swaps */
-
- if (newContext->flags & DRI_CONTEXT_2DONLY) {
- /* go from 3D context to 2D context and only save 2D
- * subset of 3D state
- */
- oldContextStore = DRIGetContextStore(oldContext);
- oldContextType = DRI_2D_CONTEXT;
- newContextStore = DRIGetContextStore(newContext);
- newContextType = DRI_2D_CONTEXT;
- syncType = DRI_3D_SYNC;
- pDRIPriv->lastPartial3DContext = oldContext;
- }
- else if (oldContext->flags & DRI_CONTEXT_2DONLY) {
- if (pDRIPriv->lastPartial3DContext == newContext) {
- /* go from 2D context back to previous 3D context and
- * only restore 2D subset of previous 3D state
- */
- oldContextStore = DRIGetContextStore(oldContext);
- oldContextType = DRI_2D_CONTEXT;
- newContextStore = DRIGetContextStore(newContext);
- newContextType = DRI_2D_CONTEXT;
- syncType = DRI_2D_SYNC;
- }
- else {
- /* go from 2D context to a different 3D context */
-
- /* call DDX driver to do partial restore */
- oldContextStore = DRIGetContextStore(oldContext);
- newContextStore =
- DRIGetContextStore(pDRIPriv->lastPartial3DContext);
- (*pDRIPriv->pDriverInfo->SwapContext)(pScreen,
- DRI_2D_SYNC,
- DRI_2D_CONTEXT,
- oldContextStore,
- DRI_2D_CONTEXT,
- newContextStore);
-
- /* now setup for a complete 3D swap */
- oldContextStore = newContextStore;
- oldContext->valid3D = TRUE;
- oldContextType = DRI_3D_CONTEXT;
- newContextStore = DRIGetContextStore(newContext);
- if ((newContext->valid3D) &&
- (newContext->hwContext != pDRIPriv->myContext)) {
- newContextType = DRI_3D_CONTEXT;
- }
- else {
- newContextType = DRI_2D_CONTEXT;
- }
- syncType = DRI_NO_SYNC;
- }
- }
- else {
- /* now setup for a complete 3D swap */
- oldContextStore = newContextStore;
- oldContext->valid3D = TRUE;
- oldContextType = DRI_3D_CONTEXT;
- newContextStore = DRIGetContextStore(newContext);
- if ((newContext->valid3D) &&
- (newContext->hwContext != pDRIPriv->myContext)) {
- newContextType = DRI_3D_CONTEXT;
- }
- else {
- newContextType = DRI_2D_CONTEXT;
- }
- syncType = DRI_3D_SYNC;
- }
- }
-
- /* call DDX driver to perform the swap */
- (*pDRIPriv->pDriverInfo->SwapContext)(pScreen,
- syncType,
- oldContextType,
- oldContextStore,
- newContextType,
- newContextStore);
-}
-
-void*
-DRIGetContextStore(DRIContextPrivPtr context)
-{
- return((void *)context->pContextStore);
-}
-
-void
-DRIWindowExposures(WindowPtr pWin, RegionPtr prgn, RegionPtr bsreg)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIDrawablePrivPtr pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin);
-
- if(pDRIDrawablePriv) {
- (*pDRIPriv->pDriverInfo->InitBuffers)(pWin, prgn,
- pDRIDrawablePriv->drawableIndex);
- }
-
- /* call lower wrapped functions */
- if (pDRIPriv && pDRIPriv->wrap.WindowExposures) {
-
- /* unwrap */
- pScreen->WindowExposures = pDRIPriv->wrap.WindowExposures;
-
- /* call lower layers */
- (*pScreen->WindowExposures)(pWin, prgn, bsreg);
-
- /* rewrap */
- pDRIPriv->wrap.WindowExposures = pScreen->WindowExposures;
- pScreen->WindowExposures = DRIWindowExposures;
- }
-}
-
-
-static int
-DRITreeTraversal(WindowPtr pWin, pointer data)
-{
- DRIDrawablePrivPtr pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin);
-
- if(pDRIDrawablePriv) {
- ScreenPtr pScreen = pWin->drawable.pScreen;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- RegionPtr reg = (RegionPtr)data;
-
- REGION_UNION(pScreen, reg, reg, &(pWin->clipList));
-
- if(pDRIPriv->nrWindows == 1)
- return WT_STOPWALKING;
- }
- return WT_WALKCHILDREN;
-}
-
-void
-DRICopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- if(!pDRIPriv) return;
-
- if(pDRIPriv->nrWindows > 0) {
- RegionRec reg;
-
- REGION_NULL(pScreen, &reg);
- TraverseTree(pWin, DRITreeTraversal, (pointer)(&reg));
-
- if(REGION_NOTEMPTY(pScreen, &reg)) {
- REGION_TRANSLATE(pScreen, &reg, ptOldOrg.x - pWin->drawable.x,
- ptOldOrg.y - pWin->drawable.y);
- REGION_INTERSECT(pScreen, &reg, &reg, prgnSrc);
-
- /* The MoveBuffers interface is not ideal */
- (*pDRIPriv->pDriverInfo->MoveBuffers)(pWin, ptOldOrg, &reg,
- pDRIPriv->pDriverInfo->ddxDrawableTableEntry);
- }
-
- REGION_UNINIT(pScreen, &reg);
- }
-
- /* call lower wrapped functions */
- if(pDRIPriv->wrap.CopyWindow) {
- /* unwrap */
- pScreen->CopyWindow = pDRIPriv->wrap.CopyWindow;
-
- /* call lower layers */
- (*pScreen->CopyWindow)(pWin, ptOldOrg, prgnSrc);
-
- /* rewrap */
- pDRIPriv->wrap.CopyWindow = pScreen->CopyWindow;
- pScreen->CopyWindow = DRICopyWindow;
- }
-}
-
-static void
-DRIGetSecs(long *secs, long *usecs)
-{
-#ifdef XFree86LOADER
- getsecs(secs,usecs);
-#else
- struct timeval tv;
-
- gettimeofday(&tv, NULL);
-
- *secs = tv.tv_sec;
- *usecs = tv.tv_usec;
-#endif
-}
-
-static unsigned long
-DRIComputeMilliSeconds(unsigned long s_secs, unsigned long s_usecs,
- unsigned long f_secs, unsigned long f_usecs)
-{
- if (f_usecs < s_usecs) {
- --f_secs;
- f_usecs += 1000000;
- }
- return (f_secs - s_secs) * 1000 + (f_usecs - s_usecs) / 1000;
-}
-
-static void
-DRISpinLockTimeout(drmLock *lock, int val, unsigned long timeout /* in mS */)
-{
- int count = 10000;
-#if !defined(__alpha__) && !defined(__powerpc__)
- char ret;
-#else
- int ret;
-#endif
- long s_secs, s_usecs;
- long f_secs, f_usecs;
- long msecs;
- long prev = 0;
-
- DRIGetSecs(&s_secs, &s_usecs);
-
- do {
- DRM_SPINLOCK_COUNT(lock, val, count, ret);
- if (!ret) return; /* Got lock */
- DRIGetSecs(&f_secs, &f_usecs);
- msecs = DRIComputeMilliSeconds(s_secs, s_usecs, f_secs, f_usecs);
- if (msecs - prev < 250) count *= 2; /* Not more than 0.5S */
- } while (msecs < timeout);
-
- /* Didn't get lock, so take it. The worst
- that can happen is that there is some
- garbage written to the wrong part of the
- framebuffer that a refresh will repair.
- That's undesirable, but better than
- locking the server. This should be a
- very rare event. */
- DRM_SPINLOCK_TAKE(lock, val);
-}
-
-static void
-DRILockTree(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- if(!pDRIPriv) return;
-
- /* Restore the last known 3D context if the X context is hidden */
- if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) {
- (*pDRIPriv->pDriverInfo->SwapContext)(pScreen,
- DRI_2D_SYNC,
- DRI_NO_CONTEXT,
- NULL,
- DRI_2D_CONTEXT,
- pDRIPriv->partial3DContextStore);
- }
-
- /* Call kernel to release lock */
- DRIUnlock(pScreen);
-
- /* Grab drawable spin lock: a time out between 10 and 30 seconds is
- appropriate, since this should never time out except in the case of
- client death while the lock is being held. The timeout must be
- greater than any reasonable rendering time. */
- DRISpinLockTimeout(&pDRIPriv->pSAREA->drawable_lock, 1, 10000); /*10 secs*/
-
- /* Call kernel flush outstanding buffers and relock */
- DRILock(pScreen, DRM_LOCK_QUIESCENT|DRM_LOCK_FLUSH_ALL);
-
- /* Switch back to our 2D context if the X context is hidden */
- if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) {
- /* hide X context by swapping 2D component here */
- (*pDRIPriv->pDriverInfo->SwapContext)(pScreen,
- DRI_3D_SYNC,
- DRI_2D_CONTEXT,
- pDRIPriv->partial3DContextStore,
- DRI_2D_CONTEXT,
- pDRIPriv->hiddenContextStore);
- }
-}
-
-/* It appears that somebody is relying on the lock being set even
- if we aren't touching 3D windows */
-
-#define DRI_BROKEN
-
-static Bool DRIWindowsTouched = FALSE;
-
-int
-DRIValidateTree(WindowPtr pParent, WindowPtr pChild, VTKind kind)
-{
- ScreenPtr pScreen = pParent->drawable.pScreen;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- int returnValue = 1; /* always return 1, not checked by dix/window.c */
-
- if(!pDRIPriv) return returnValue;
-
- DRIWindowsTouched = FALSE;
-
-#ifdef DRI_BROKEN
- if(!DRIWindowsTouched) {
- DRILockTree(pScreen);
- DRIWindowsTouched = TRUE;
- }
-#endif
-
- /* call lower wrapped functions */
- if(pDRIPriv->wrap.ValidateTree) {
- /* unwrap */
- pScreen->ValidateTree = pDRIPriv->wrap.ValidateTree;
-
- /* call lower layers */
- returnValue = (*pScreen->ValidateTree)(pParent, pChild, kind);
-
- /* rewrap */
- pDRIPriv->wrap.ValidateTree = pScreen->ValidateTree;
- pScreen->ValidateTree = DRIValidateTree;
- }
-
- return returnValue;
-}
-
-void
-DRIPostValidateTree(WindowPtr pParent, WindowPtr pChild, VTKind kind)
-{
- ScreenPtr pScreen;
- DRIScreenPrivPtr pDRIPriv;
-
- if (pParent) {
- pScreen = pParent->drawable.pScreen;
- } else {
- pScreen = pChild->drawable.pScreen;
- }
- if(!(pDRIPriv = DRI_SCREEN_PRIV(pScreen))) return;
-
- if (pDRIPriv->wrap.PostValidateTree) {
- /* unwrap */
- pScreen->PostValidateTree = pDRIPriv->wrap.PostValidateTree;
-
- /* call lower layers */
- (*pScreen->PostValidateTree)(pParent, pChild, kind);
-
- /* rewrap */
- pDRIPriv->wrap.PostValidateTree = pScreen->PostValidateTree;
- pScreen->PostValidateTree = DRIPostValidateTree;
- }
-
- if (DRIWindowsTouched) {
- /* Release spin lock */
- DRM_SPINUNLOCK(&pDRIPriv->pSAREA->drawable_lock, 1);
- DRIWindowsTouched = FALSE;
- }
-}
-
-void
-DRIClipNotify(WindowPtr pWin, int dx, int dy)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIDrawablePrivPtr pDRIDrawablePriv;
-
- if(!pDRIPriv) return;
-
- if ((pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin))) {
-
-#ifndef DRI_BROKEN
- if(!DRIWindowsTouched) {
- DRILockTree(pScreen);
- DRIWindowsTouched = TRUE;
- }
-#endif
-
- pDRIPriv->pSAREA->drawableTable[pDRIDrawablePriv->drawableIndex].stamp
- = DRIDrawableValidationStamp++;
- }
-
- /* call lower wrapped functions */
- if(pDRIPriv->wrap.ClipNotify) {
-
- /* unwrap */
- pScreen->ClipNotify = pDRIPriv->wrap.ClipNotify;
-
- /* call lower layers */
- (*pScreen->ClipNotify)(pWin, dx, dy);
-
- /* rewrap */
- pDRIPriv->wrap.ClipNotify = pScreen->ClipNotify;
- pScreen->ClipNotify = DRIClipNotify;
- }
-}
-
-CARD32
-DRIGetDrawableIndex(WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIDrawablePrivPtr pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin);
- CARD32 index;
-
- if (pDRIDrawablePriv) {
- index = pDRIDrawablePriv->drawableIndex;
- }
- else {
- index = pDRIPriv->pDriverInfo->ddxDrawableTableEntry;
- }
-
- return index;
-}
-
-unsigned int
-DRIGetDrawableStamp(ScreenPtr pScreen, CARD32 drawable_index)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- return pDRIPriv->pSAREA->drawableTable[drawable_index].stamp;
-}
-
-
-void
-DRIPrintDrawableLock(ScreenPtr pScreen, char *msg)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- ErrorF("%s: %d\n", msg, pDRIPriv->pSAREA->drawable_lock.lock);
-}
-
-void
-DRILock(ScreenPtr pScreen, int flags)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- if(!pDRIPriv) return;
-
- if (!pDRIPriv->lockRefCount)
- DRM_LOCK(pDRIPriv->drmFD, pDRIPriv->pSAREA, pDRIPriv->myContext, flags);
- pDRIPriv->lockRefCount++;
-}
-
-void
-DRIUnlock(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- if(!pDRIPriv) return;
-
- if (pDRIPriv->lockRefCount > 0) {
- pDRIPriv->lockRefCount--;
- }
- else {
- ErrorF("DRIUnlock called when not locked\n");
- return;
- }
- if (!pDRIPriv->lockRefCount)
- DRM_UNLOCK(pDRIPriv->drmFD, pDRIPriv->pSAREA, pDRIPriv->myContext);
-}
-
-void *
-DRIGetSAREAPrivate(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- if (!pDRIPriv) return 0;
-
- return (void *)(((char*)pDRIPriv->pSAREA)+sizeof(XF86DRISAREARec));
-}
-
-drm_context_t
-DRIGetContext(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- if (!pDRIPriv) return 0;
-
- return pDRIPriv->myContext;
-}
-
-/* This lets get at the unwrapped functions so that they can correctly
- * call the lowerlevel functions, and choose whether they will be
- * called at every level of recursion (eg in validatetree).
- */
-DRIWrappedFuncsRec *
-DRIGetWrappedFuncs(ScreenPtr pScreen)
-{
- return &(DRI_SCREEN_PRIV(pScreen)->wrap);
-}
-
-/* note that this returns the library version, not the protocol version */
-void
-DRIQueryVersion(int *majorVersion,
- int *minorVersion,
- int *patchVersion)
-{
- *majorVersion = DRIINFO_MAJOR_VERSION;
- *minorVersion = DRIINFO_MINOR_VERSION;
- *patchVersion = DRIINFO_PATCH_VERSION;
-}
-
-static void
-_DRIAdjustFrame(ScrnInfoPtr pScrn, DRIScreenPrivPtr pDRIPriv, int x, int y)
-{
- pDRIPriv->pSAREA->frame.x = x;
- pDRIPriv->pSAREA->frame.y = y;
- pDRIPriv->pSAREA->frame.width = pScrn->frameX1 - x + 1;
- pDRIPriv->pSAREA->frame.height = pScrn->frameY1 - y + 1;
-}
-
-void
-DRIAdjustFrame(int scrnIndex, int x, int y, int flags)
-{
- ScreenPtr pScreen = screenInfo.screens[scrnIndex];
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- int px, py;
-
- if (!pDRIPriv || !pDRIPriv->pSAREA) {
- DRIDrvMsg(scrnIndex, X_ERROR, "[DRI] No SAREA (%p %p)\n",
- pDRIPriv, pDRIPriv ? pDRIPriv->pSAREA : NULL);
- return;
- }
-
- if (pDRIPriv->fullscreen) {
- /* Fix up frame */
- pScrn->frameX0 = pDRIPriv->pSAREA->frame.x;
- pScrn->frameY0 = pDRIPriv->pSAREA->frame.y;
- pScrn->frameX1 = pScrn->frameX0 + pDRIPriv->pSAREA->frame.width - 1;
- pScrn->frameY1 = pScrn->frameY0 + pDRIPriv->pSAREA->frame.height - 1;
-
- /* Fix up cursor */
- miPointerPosition(&px, &py);
- if (px < pScrn->frameX0) px = pScrn->frameX0;
- if (px > pScrn->frameX1) px = pScrn->frameX1;
- if (py < pScrn->frameY0) py = pScrn->frameY0;
- if (py > pScrn->frameY1) py = pScrn->frameY1;
- pScreen->SetCursorPosition(pScreen, px, py, TRUE);
- return;
- }
-
- if (pDRIPriv->wrap.AdjustFrame) {
- /* unwrap */
- pScrn->AdjustFrame = pDRIPriv->wrap.AdjustFrame;
- /* call lower layers */
- (*pScrn->AdjustFrame)(scrnIndex, x, y, flags);
- /* rewrap */
- pDRIPriv->wrap.AdjustFrame = pScrn->AdjustFrame;
- pScrn->AdjustFrame = DRIAdjustFrame;
- }
-
- _DRIAdjustFrame(pScrn, pDRIPriv, x, y);
-}
-
-/*
- * DRIMoveBuffersHelper swaps the regions rects in place leaving you
- * a region with the rects in the order that you need to blit them,
- * but it is possibly (likely) an invalid region afterwards. If you
- * need to use the region again for anything you have to call
- * REGION_VALIDATE on it, or better yet, save a copy first.
- */
-
-void
-DRIMoveBuffersHelper(
- ScreenPtr pScreen,
- int dx,
- int dy,
- int *xdir,
- int *ydir,
- RegionPtr reg
-)
-{
- BoxPtr extents, pbox, firstBox, lastBox;
- BoxRec tmpBox;
- int y, nbox;
-
- extents = REGION_EXTENTS(pScreen, reg);
- nbox = REGION_NUM_RECTS(reg);
- pbox = REGION_RECTS(reg);
-
- if((dy > 0) && (dy < (extents->y2 - extents->y1))) {
- *ydir = -1;
- if(nbox > 1) {
- firstBox = pbox;
- lastBox = pbox + nbox - 1;
- while((unsigned long)firstBox < (unsigned long)lastBox) {
- tmpBox = *firstBox;
- *firstBox = *lastBox;
- *lastBox = tmpBox;
- firstBox++;
- lastBox--;
- }
- }
- } else *ydir = 1;
-
- if((dx > 0) && (dx < (extents->x2 - extents->x1))) {
- *xdir = -1;
- if(nbox > 1) {
- firstBox = lastBox = pbox;
- y = pbox->y1;
- while(--nbox) {
- pbox++;
- if(pbox->y1 == y) lastBox++;
- else {
- while((unsigned long)firstBox < (unsigned long)lastBox) {
- tmpBox = *firstBox;
- *firstBox = *lastBox;
- *lastBox = tmpBox;
- firstBox++;
- lastBox--;
- }
-
- firstBox = lastBox = pbox;
- y = pbox->y1;
- }
- }
- while((unsigned long)firstBox < (unsigned long)lastBox) {
- tmpBox = *firstBox;
- *firstBox = *lastBox;
- *lastBox = tmpBox;
- firstBox++;
- lastBox--;
- }
- }
- } else *xdir = 1;
-
-}
-
-char *
-DRICreatePCIBusID(pciVideoPtr PciInfo)
-{
- char *busID;
- int domain;
- PCITAG tag;
-
- busID = xalloc(20);
- if (busID == NULL)
- return NULL;
-
- tag = pciTag(PciInfo->bus, PciInfo->device, PciInfo->func);
- domain = xf86GetPciDomain(tag);
- snprintf(busID, 20, "pci:%04x:%02x:%02x.%d", domain, PciInfo->bus,
- PciInfo->device, PciInfo->func);
- return busID;
-}
diff --git a/nx-X11/programs/Xserver/GL/dri/dri.h b/nx-X11/programs/Xserver/GL/dri/dri.h
deleted file mode 100644
index 312e8a8bb..000000000
--- a/nx-X11/programs/Xserver/GL/dri/dri.h
+++ /dev/null
@@ -1,345 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/dri.h,v 1.18 2001/03/21 16:21:40 dawes Exp $ */
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-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 the rights to use, copy, modify, merge, publish,
-distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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:
- * Jens Owen <jens@tungstengraphics.com>
- *
- */
-
-/* Prototypes for DRI functions */
-
-#ifndef _DRI_H_
-
-#include "scrnintstr.h"
-#include "xf86dri.h"
-
-typedef int DRISyncType;
-
-#define DRI_NO_SYNC 0
-#define DRI_2D_SYNC 1
-#define DRI_3D_SYNC 2
-
-typedef int DRIContextType;
-
-typedef struct _DRIContextPrivRec DRIContextPrivRec, *DRIContextPrivPtr;
-
-typedef enum _DRIContextFlags
-{
- DRI_CONTEXT_2DONLY = 0x01,
- DRI_CONTEXT_PRESERVED = 0x02,
- DRI_CONTEXT_RESERVED = 0x04 /* DRI Only -- no kernel equivalent */
-} DRIContextFlags;
-
-#define DRI_NO_CONTEXT 0
-#define DRI_2D_CONTEXT 1
-#define DRI_3D_CONTEXT 2
-
-typedef int DRISwapMethod;
-
-#define DRI_HIDE_X_CONTEXT 0
-#define DRI_SERVER_SWAP 1
-#define DRI_KERNEL_SWAP 2
-
-typedef int DRIWindowRequests;
-
-#define DRI_NO_WINDOWS 0
-#define DRI_3D_WINDOWS_ONLY 1
-#define DRI_ALL_WINDOWS 2
-
-
-typedef void (*ClipNotifyPtr)( WindowPtr, int, int );
-typedef void (*AdjustFramePtr)(int scrnIndex, int x, int y, int flags);
-
-
-/*
- * These functions can be wrapped by the DRI. Each of these have
- * generic default funcs (initialized in DRICreateInfoRec) and can be
- * overridden by the driver in its [driver]DRIScreenInit function.
- */
-typedef struct {
- ScreenWakeupHandlerProcPtr WakeupHandler;
- ScreenBlockHandlerProcPtr BlockHandler;
- WindowExposuresProcPtr WindowExposures;
- CopyWindowProcPtr CopyWindow;
- ValidateTreeProcPtr ValidateTree;
- PostValidateTreeProcPtr PostValidateTree;
- ClipNotifyProcPtr ClipNotify;
- AdjustFramePtr AdjustFrame;
-} DRIWrappedFuncsRec, *DRIWrappedFuncsPtr;
-
-
-/*
- * Prior to Xorg 6.8.99.8, the DRIInfoRec structure was implicitly versioned
- * by the XF86DRI_*_VERSION defines in xf86dristr.h. These numbers were also
- * being used to version the XFree86-DRI protocol. Bugs #3066 and #3163
- * showed that this was inadequate. The DRIInfoRec structure is now versioned
- * by the DRIINFO_*_VERSION defines in this file. - ajax, 2005-05-18.
- *
- * Revision history:
- * 4.1.0 and earlier: DRIQueryVersion returns XF86DRI_*_VERSION.
- * 4.2.0: DRIQueryVersion begins returning DRIINFO_*_VERSION.
- * 5.0.0: frameBufferPhysicalAddress changed from CARD32 to pointer.
- */
-
-#define DRIINFO_MAJOR_VERSION 5
-#define DRIINFO_MINOR_VERSION 0
-#define DRIINFO_PATCH_VERSION 0
-
-typedef struct {
- /* driver call back functions
- *
- * New fields should be added at the end for backwards compatibility.
- * Bump the DRIINFO patch number to indicate bugfixes.
- * Bump the DRIINFO minor number to indicate new fields.
- * Bump the DRIINFO major number to indicate binary-incompatible changes.
- */
- Bool (*CreateContext)(ScreenPtr pScreen,
- VisualPtr visual,
- drm_context_t hHWContext,
- void* pVisualConfigPriv,
- DRIContextType context);
- void (*DestroyContext)(ScreenPtr pScreen,
- drm_context_t hHWContext,
- DRIContextType context);
- void (*SwapContext)(ScreenPtr pScreen,
- DRISyncType syncType,
- DRIContextType readContextType,
- void* readContextStore,
- DRIContextType writeContextType,
- void* writeContextStore);
- void (*InitBuffers)(WindowPtr pWin,
- RegionPtr prgn,
- CARD32 indx);
- void (*MoveBuffers)(WindowPtr pWin,
- DDXPointRec ptOldOrg,
- RegionPtr prgnSrc,
- CARD32 indx);
- void (*TransitionTo3d)(ScreenPtr pScreen);
- void (*TransitionTo2d)(ScreenPtr pScreen);
-
- void (*SetDrawableIndex)(WindowPtr pWin, CARD32 indx);
- Bool (*OpenFullScreen)(ScreenPtr pScreen);
- Bool (*CloseFullScreen)(ScreenPtr pScreen);
-
- /* wrapped functions */
- DRIWrappedFuncsRec wrap;
-
- /* device info */
- char* drmDriverName;
- char* clientDriverName;
- char* busIdString;
- int ddxDriverMajorVersion;
- int ddxDriverMinorVersion;
- int ddxDriverPatchVersion;
- pointer frameBufferPhysicalAddress;
- long frameBufferSize;
- long frameBufferStride;
- long SAREASize;
- int maxDrawableTableEntry;
- int ddxDrawableTableEntry;
- long contextSize;
- DRISwapMethod driverSwapMethod;
- DRIWindowRequests bufferRequests;
- int devPrivateSize;
- void* devPrivate;
- Bool createDummyCtx;
- Bool createDummyCtxPriv;
-
- /* New with DRI version 4.1.0 */
- void (*TransitionSingleToMulti3D)(ScreenPtr pScreen);
- void (*TransitionMultiToSingle3D)(ScreenPtr pScreen);
-} DRIInfoRec, *DRIInfoPtr;
-
-
-extern Bool DRIScreenInit(ScreenPtr pScreen,
- DRIInfoPtr pDRIInfo,
- int *pDRMFD);
-
-extern void DRICloseScreen(ScreenPtr pScreen);
-
-extern Bool DRIExtensionInit(void);
-
-extern void DRIReset(void);
-
-extern Bool DRIQueryDirectRenderingCapable(ScreenPtr pScreen,
- Bool *isCapable);
-
-extern Bool DRIOpenConnection(ScreenPtr pScreen,
- drm_handle_t * hSAREA,
- char **busIdString);
-
-extern Bool DRIAuthConnection(ScreenPtr pScreen, drm_magic_t magic);
-
-extern Bool DRICloseConnection(ScreenPtr pScreen);
-
-extern Bool DRIGetClientDriverName(ScreenPtr pScreen,
- int* ddxDriverMajorVersion,
- int* ddxDriverMinorVersion,
- int* ddxDriverPatchVersion,
- char** clientDriverName);
-
-extern Bool DRICreateContext(ScreenPtr pScreen,
- VisualPtr visual,
- XID context,
- drm_context_t * pHWContext);
-
-extern Bool DRIDestroyContext(ScreenPtr pScreen, XID context);
-
-extern Bool DRIContextPrivDelete(pointer pResource, XID id);
-
-extern Bool DRICreateDrawable(ScreenPtr pScreen,
- Drawable id,
- DrawablePtr pDrawable,
- drm_drawable_t * hHWDrawable);
-
-extern Bool DRIDestroyDrawable(ScreenPtr pScreen,
- Drawable id,
- DrawablePtr pDrawable);
-
-extern Bool DRIDrawablePrivDelete(pointer pResource,
- XID id);
-
-extern Bool DRIGetDrawableInfo(ScreenPtr pScreen,
- DrawablePtr pDrawable,
- unsigned int* indx,
- unsigned int* stamp,
- int* X,
- int* Y,
- int* W,
- int* H,
- int* numClipRects,
- drm_clip_rect_t ** pClipRects,
- int* backX,
- int* backY,
- int* numBackClipRects,
- drm_clip_rect_t ** pBackClipRects);
-
-extern Bool DRIGetDeviceInfo(ScreenPtr pScreen,
- drm_handle_t * hFrameBuffer,
- int* fbOrigin,
- int* fbSize,
- int* fbStride,
- int* devPrivateSize,
- void** pDevPrivate);
-
-extern DRIInfoPtr DRICreateInfoRec(void);
-
-extern void DRIDestroyInfoRec(DRIInfoPtr DRIInfo);
-
-extern Bool DRIFinishScreenInit(ScreenPtr pScreen);
-
-extern void DRIWakeupHandler(pointer wakeupData,
- int result,
- pointer pReadmask);
-
-extern void DRIBlockHandler(pointer blockData,
- OSTimePtr pTimeout,
- pointer pReadmask);
-
-extern void DRIDoWakeupHandler(int screenNum,
- pointer wakeupData,
- unsigned long result,
- pointer pReadmask);
-
-extern void DRIDoBlockHandler(int screenNum,
- pointer blockData,
- pointer pTimeout,
- pointer pReadmask);
-
-extern void DRISwapContext(int drmFD,
- void *oldctx,
- void *newctx);
-
-extern void *DRIGetContextStore(DRIContextPrivPtr context);
-
-extern void DRIWindowExposures(WindowPtr pWin,
- RegionPtr prgn,
- RegionPtr bsreg);
-
-extern void DRICopyWindow(WindowPtr pWin,
- DDXPointRec ptOldOrg,
- RegionPtr prgnSrc);
-
-extern int DRIValidateTree(WindowPtr pParent,
- WindowPtr pChild,
- VTKind kind);
-
-extern void DRIPostValidateTree(WindowPtr pParent,
- WindowPtr pChild,
- VTKind kind);
-
-extern void DRIClipNotify(WindowPtr pWin,
- int dx,
- int dy);
-
-extern CARD32 DRIGetDrawableIndex(WindowPtr pWin);
-
-extern void DRIPrintDrawableLock(ScreenPtr pScreen, char *msg);
-
-extern void DRILock(ScreenPtr pScreen, int flags);
-
-extern void DRIUnlock(ScreenPtr pScreen);
-
-extern DRIWrappedFuncsRec *DRIGetWrappedFuncs(ScreenPtr pScreen);
-
-extern void *DRIGetSAREAPrivate(ScreenPtr pScreen);
-
-extern unsigned int DRIGetDrawableStamp(ScreenPtr pScreen,
- CARD32 drawable_index);
-
-extern DRIContextPrivPtr DRICreateContextPriv(ScreenPtr pScreen,
- drm_context_t * pHWContext,
- DRIContextFlags flags);
-
-extern DRIContextPrivPtr DRICreateContextPrivFromHandle(ScreenPtr pScreen,
- drm_context_t hHWContext,
- DRIContextFlags flags);
-
-extern Bool DRIDestroyContextPriv(DRIContextPrivPtr pDRIContextPriv);
-
-extern drm_context_t DRIGetContext(ScreenPtr pScreen);
-
-extern void DRIQueryVersion(int *majorVersion,
- int *minorVersion,
- int *patchVersion);
-
-extern void DRIAdjustFrame(int scrnIndex, int x, int y, int flags);
-
-extern void DRIMoveBuffersHelper(ScreenPtr pScreen,
- int dx,
- int dy,
- int *xdir,
- int *ydir,
- RegionPtr reg);
-
-extern char *DRICreatePCIBusID(pciVideoPtr PciInfo);
-
-#define _DRI_H_
-
-#endif
diff --git a/nx-X11/programs/Xserver/GL/dri/drimodule.c b/nx-X11/programs/Xserver/GL/dri/drimodule.c
deleted file mode 100644
index 922c6f40e..000000000
--- a/nx-X11/programs/Xserver/GL/dri/drimodule.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/GL/dri/drimodule.c,v 1.6 2005/11/02 15:53:57 kem Exp $ */
-/**************************************************************************
-
-Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
-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 the rights to use, copy, modify, merge, publish,
-distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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.
-
-**************************************************************************/
-/* $XFree86: xc/programs/Xserver/GL/dri/drimodule.c,v 1.5 2001/06/15 21:22:39 dawes Exp $ */
-
-/*
- * Authors:
- * Kevin E. Martin <kevin@precisioninsight.com>
- * Rickard E. Faith <faith@precisioninsight.com>
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Module.h"
-#include "globals.h"
-
-static MODULESETUPPROTO(driSetup);
-
-static XF86ModuleVersionInfo VersRec =
-{
- "dri",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- 1, 0, 0,
- ABI_CLASS_EXTENSION,
- ABI_EXTENSION_VERSION,
- MOD_CLASS_NONE,
- {0,0,0,0}
-};
-
-extern void XFree86DRIExtensionInit(INITARGS);
-#define _XF86DRI_SERVER_
-#include "xf86dristr.h"
-
-ExtensionModule XF86DRIExt =
-{
- XFree86DRIExtensionInit,
- XF86DRINAME,
- &noXFree86DRIExtension,
- NULL,
- NULL
-};
-
-static const char *drmSymbols[] = {
- "drmAddContextTag",
- "drmAddMap",
- "drmAuthMagic",
- "drmAvailable",
- "drmClose",
- "drmCreateContext",
- "drmCreateDrawable",
- "drmDelContextTag",
- "drmDestroyContext",
- "drmDestroyDrawable",
- "drmFreeReservedContextList",
- "drmGetContextTag",
- "drmGetLock",
- "drmGetReservedContextList",
- "drmInstallSIGIOHandler",
- "drmMap",
- "drmOpen",
- "drmRemoveSIGIOHandler",
- "drmSetBusid",
- "drmSetContextFlags",
- "drmUnlock",
- "drmUnmap",
- NULL
-};
-
-XF86ModuleData driModuleData = { &VersRec, driSetup, NULL };
-
-static pointer
-driSetup(pointer module, pointer opts, int *errmaj, int *errmin)
-{
- static Bool setupDone = FALSE;
- pointer drm = NULL;
-
- if (!setupDone) {
- setupDone = TRUE;
-
- drm =
- LoadSubModule(module, "drm", NULL, NULL, NULL, NULL, errmaj, errmin);
-
- if (!drm) {
- if (errmaj) *errmaj = LDR_NOSUBENT;
- }
- else {
- LoaderReqSymLists(drmSymbols, NULL);
- LoaderRefSymbols("noPanoramiXExtension", NULL);
- LoadExtension(&XF86DRIExt, FALSE);
- }
- } else {
- if (errmaj) *errmaj = LDR_ONCEONLY;
- }
- /* Need a non-NULL return value to indicate success */
- return drm;
-}
-
diff --git a/nx-X11/programs/Xserver/GL/dri/dristruct.h b/nx-X11/programs/Xserver/GL/dri/dristruct.h
deleted file mode 100644
index b47afba3a..000000000
--- a/nx-X11/programs/Xserver/GL/dri/dristruct.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/dristruct.h,v 1.12 2002/10/30 12:52:03 alanh Exp $ */
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-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 the rights to use, copy, modify, merge, publish,
-distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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:
- * Jens Owen <jens@tungstengraphics.com>
- *
- */
-
-#ifndef DRI_STRUCT_H
-#define DRI_STRUCT_H
-
-#include "xf86drm.h"
-
-
-#define DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin) \
- ((DRIWindowPrivIndex < 0) ? \
- NULL : \
- ((DRIDrawablePrivPtr)((pWin)->devPrivates[DRIWindowPrivIndex].ptr)))
-
-#define DRI_DRAWABLE_PRIV_FROM_PIXMAP(pPix) \
- ((DRIPixmapPrivIndex < 0) ? \
- NULL : \
- ((DRIDrawablePrivPtr)((pPix)->devPrivates[DRIWindowPrivIndex].ptr)))
-
-typedef struct _DRIDrawablePrivRec
-{
- drm_drawable_t hwDrawable;
- int drawableIndex;
- ScreenPtr pScreen;
- int refCount;
-} DRIDrawablePrivRec, *DRIDrawablePrivPtr;
-
-struct _DRIContextPrivRec
-{
- drm_context_t hwContext;
- ScreenPtr pScreen;
- Bool valid3D;
- DRIContextFlags flags;
- void** pContextStore;
-};
-
-#define DRI_SCREEN_PRIV(pScreen) \
- ((DRIScreenPrivIndex < 0) ? \
- NULL : \
- ((DRIScreenPrivPtr)((pScreen)->devPrivates[DRIScreenPrivIndex].ptr)))
-
-#define DRI_SCREEN_PRIV_FROM_INDEX(screenIndex) ((DRIScreenPrivPtr) \
- (screenInfo.screens[screenIndex]->devPrivates[DRIScreenPrivIndex].ptr))
-
-
-typedef struct _DRIScreenPrivRec
-{
- Bool directRenderingSupport;
- int drmFD; /* File descriptor for /dev/video/? */
- drm_handle_t hSAREA; /* Handle to SAREA, for mapping */
- XF86DRISAREAPtr pSAREA; /* Mapped pointer to SAREA */
- drm_handle_t hFrameBuffer; /* Handle to framebuffer, for mapping */
- drm_context_t myContext; /* DDX Driver's context */
- DRIContextPrivPtr myContextPriv;/* Pointer to server's private area */
- DRIContextPrivPtr lastPartial3DContext; /* last one partially saved */
- void** hiddenContextStore; /* hidden X context */
- void** partial3DContextStore; /* parital 3D context */
- DRIInfoPtr pDriverInfo;
- int nrWindows;
- drm_clip_rect_t private_buffer_rect; /* management of private buffers */
- DrawablePtr fullscreen; /* pointer to fullscreen drawable */
- drm_clip_rect_t fullscreen_rect; /* fake rect for fullscreen mode */
- DRIWrappedFuncsRec wrap;
- DrawablePtr DRIDrawables[SAREA_MAX_DRAWABLES];
- DRIContextPrivPtr dummyCtxPriv; /* Pointer to dummy context */
- Bool createDummyCtx;
- Bool createDummyCtxPriv;
- Bool grabbedDRILock;
- Bool drmSIGIOHandlerInstalled;
- Bool wrapped;
- int lockRefCount;
-} DRIScreenPrivRec, *DRIScreenPrivPtr;
-
-#endif /* DRI_STRUCT_H */
diff --git a/nx-X11/programs/Xserver/GL/dri/sarea.h b/nx-X11/programs/Xserver/GL/dri/sarea.h
deleted file mode 100644
index 77c16e0ef..000000000
--- a/nx-X11/programs/Xserver/GL/dri/sarea.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/sarea.h,v 1.11 2002/10/30 12:52:03 alanh Exp $ */
-/**
- * \file sarea.h
- * SAREA definitions.
- *
- * \author Kevin E. Martin <kevin@precisioninsight.com>
- * \author Jens Owen <jens@tungstengraphics.com>
- * \author Rickard E. (Rik) Faith <faith@valinux.com>
- */
-
-/*
- * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
- * Copyright 2000 VA Linux Systems, Inc.
- * 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 the rights to use, copy, modify, merge, publish,
- * distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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.
- */
-
-/* $XFree86: xc/programs/Xserver/GL/dri/sarea.h,v 1.11 2002/10/30 12:52:03 alanh Exp $ */
-
-#ifndef _SAREA_H_
-#define _SAREA_H_
-
-#include "xf86drm.h"
-
-/* SAREA area needs to be at least a page */
-#if defined(__alpha__)
-#define SAREA_MAX 0x2000
-#elif defined(__ia64__)
-#define SAREA_MAX 0x10000 /* 64kB */
-#else
-/* Intel 830M driver needs at least 8k SAREA */
-#define SAREA_MAX 0x2000
-#endif
-
-#define SAREA_MAX_DRAWABLES 256
-
-#define SAREA_DRAWABLE_CLAIMED_ENTRY 0x80000000
-
-/**
- * SAREA per drawable information.
- *
- * \sa _XF86DRISAREA.
- */
-typedef struct _XF86DRISAREADrawable {
- unsigned int stamp;
- unsigned int flags;
-} XF86DRISAREADrawableRec, *XF86DRISAREADrawablePtr;
-
-/**
- * SAREA frame information.
- *
- * \sa _XF86DRISAREA.
- */
-typedef struct _XF86DRISAREAFrame {
- unsigned int x;
- unsigned int y;
- unsigned int width;
- unsigned int height;
- unsigned int fullscreen;
-} XF86DRISAREAFrameRec, *XF86DRISAREAFramePtr;
-
-/**
- * SAREA definition.
- */
-typedef struct _XF86DRISAREA {
- /** first thing is always the DRM locking structure */
- drmLock lock;
- /** \todo Use readers/writer lock for drawable_lock */
- drmLock drawable_lock;
- XF86DRISAREADrawableRec drawableTable[SAREA_MAX_DRAWABLES];
- XF86DRISAREAFrameRec frame;
- drm_context_t dummy_context;
-} XF86DRISAREARec, *XF86DRISAREAPtr;
-
-#endif
diff --git a/nx-X11/programs/Xserver/GL/dri/xf86dri.c b/nx-X11/programs/Xserver/GL/dri/xf86dri.c
deleted file mode 100644
index 273ccda1b..000000000
--- a/nx-X11/programs/Xserver/GL/dri/xf86dri.c
+++ /dev/null
@@ -1,649 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/xf86dri.c,v 1.12 2002/12/14 01:36:08 dawes Exp $ */
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-Copyright 2000 VA Linux Systems, Inc.
-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 the rights to use, copy, modify, merge, publish,
-distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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:
- * Kevin E. Martin <martin@valinux.com>
- * Jens Owen <jens@tungstengraphics.com>
- * Rickard E. (Rik) Faith <faith@valinux.com>
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#ifdef XFree86LOADER
-#include "xf86_ansic.h"
-#endif
-
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "dixstruct.h"
-#include "extnsionst.h"
-#include "colormapst.h"
-#include "cursorstr.h"
-#include "scrnintstr.h"
-#include "servermd.h"
-#define _XF86DRI_SERVER_
-#include "xf86dristr.h"
-#include "swaprep.h"
-#include "xf86str.h"
-#include "dri.h"
-#include "sarea.h"
-#include "dristruct.h"
-#include "xf86.h"
-#include "xf86drm.h"
-
-static int DRIErrorBase;
-
-static DISPATCH_PROC(ProcXF86DRIQueryVersion);
-static DISPATCH_PROC(ProcXF86DRIQueryDirectRenderingCapable);
-static DISPATCH_PROC(ProcXF86DRIOpenConnection);
-static DISPATCH_PROC(ProcXF86DRICloseConnection);
-static DISPATCH_PROC(ProcXF86DRIGetClientDriverName);
-static DISPATCH_PROC(ProcXF86DRICreateContext);
-static DISPATCH_PROC(ProcXF86DRIDestroyContext);
-static DISPATCH_PROC(ProcXF86DRICreateDrawable);
-static DISPATCH_PROC(ProcXF86DRIDestroyDrawable);
-static DISPATCH_PROC(ProcXF86DRIGetDrawableInfo);
-static DISPATCH_PROC(ProcXF86DRIGetDeviceInfo);
-static DISPATCH_PROC(ProcXF86DRIDispatch);
-static DISPATCH_PROC(ProcXF86DRIAuthConnection);
-
-static DISPATCH_PROC(SProcXF86DRIQueryVersion);
-static DISPATCH_PROC(SProcXF86DRIDispatch);
-
-static void XF86DRIResetProc(ExtensionEntry* extEntry);
-
-static unsigned char DRIReqCode = 0;
-
-extern void XFree86DRIExtensionInit(void);
-
-void
-XFree86DRIExtensionInit(void)
-{
- ExtensionEntry* extEntry;
-
-#ifdef XF86DRI_EVENTS
- EventType = CreateNewResourceType(XF86DRIFreeEvents);
-#endif
-
- if (
- DRIExtensionInit() &&
-#ifdef XF86DRI_EVENTS
- EventType && ScreenPrivateIndex != -1 &&
-#endif
- (extEntry = AddExtension(XF86DRINAME,
- XF86DRINumberEvents,
- XF86DRINumberErrors,
- ProcXF86DRIDispatch,
- SProcXF86DRIDispatch,
- XF86DRIResetProc,
- StandardMinorOpcode))) {
- DRIReqCode = (unsigned char)extEntry->base;
- DRIErrorBase = extEntry->errorBase;
- }
-}
-
-/*ARGSUSED*/
-static void
-XF86DRIResetProc (
- ExtensionEntry* extEntry
-)
-{
- DRIReset();
-}
-
-static int
-ProcXF86DRIQueryVersion(
- register ClientPtr client
-)
-{
- xXF86DRIQueryVersionReply rep;
- register int n;
-
- REQUEST_SIZE_MATCH(xXF86DRIQueryVersionReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.majorVersion = XF86DRI_MAJOR_VERSION;
- rep.minorVersion = XF86DRI_MINOR_VERSION;
- rep.patchVersion = XF86DRI_PATCH_VERSION;
- if (client->swapped) {
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, n);
- }
- WriteToClient(client, sizeof(xXF86DRIQueryVersionReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-ProcXF86DRIQueryDirectRenderingCapable(
- register ClientPtr client
-)
-{
- xXF86DRIQueryDirectRenderingCapableReply rep;
- Bool isCapable;
-
- REQUEST(xXF86DRIQueryDirectRenderingCapableReq);
- REQUEST_SIZE_MATCH(xXF86DRIQueryDirectRenderingCapableReq);
- if (stuff->screen >= screenInfo.numScreens) {
- client->errorValue = stuff->screen;
- return BadValue;
- }
-
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- if (!DRIQueryDirectRenderingCapable( screenInfo.screens[stuff->screen],
- &isCapable)) {
- return BadValue;
- }
- rep.isCapable = isCapable;
-
- if (!LocalClient(client))
- rep.isCapable = 0;
-
- WriteToClient(client,
- sizeof(xXF86DRIQueryDirectRenderingCapableReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-ProcXF86DRIOpenConnection(
- register ClientPtr client
-)
-{
- xXF86DRIOpenConnectionReply rep;
- drm_handle_t hSAREA;
- char* busIdString;
-
- REQUEST(xXF86DRIOpenConnectionReq);
- REQUEST_SIZE_MATCH(xXF86DRIOpenConnectionReq);
- if (stuff->screen >= screenInfo.numScreens) {
- client->errorValue = stuff->screen;
- return BadValue;
- }
-
- if (!DRIOpenConnection( screenInfo.screens[stuff->screen],
- &hSAREA,
- &busIdString)) {
- return BadValue;
- }
-
- rep.type = X_Reply;
- rep.sequenceNumber = client->sequence;
- rep.busIdStringLength = 0;
- if (busIdString)
- rep.busIdStringLength = strlen(busIdString);
- rep.length = (SIZEOF(xXF86DRIOpenConnectionReply) - SIZEOF(xGenericReply) +
- ((rep.busIdStringLength + 3) & ~3)) >> 2;
-
- rep.hSAREALow = (CARD32)(hSAREA & 0xffffffff);
-#if defined(LONG64) && !defined(__linux__)
- rep.hSAREAHigh = (CARD32)(hSAREA >> 32);
-#else
- rep.hSAREAHigh = 0;
-#endif
-
- WriteToClient(client, sizeof(xXF86DRIOpenConnectionReply), (char *)&rep);
- if (rep.busIdStringLength)
- WriteToClient(client, rep.busIdStringLength, busIdString);
- return (client->noClientException);
-}
-
-static int
-ProcXF86DRIAuthConnection(
- register ClientPtr client
-)
-{
- xXF86DRIAuthConnectionReply rep;
-
- REQUEST(xXF86DRIAuthConnectionReq);
- REQUEST_SIZE_MATCH(xXF86DRIAuthConnectionReq);
- if (stuff->screen >= screenInfo.numScreens) {
- client->errorValue = stuff->screen;
- return BadValue;
- }
-
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.authenticated = 1;
-
- if (!DRIAuthConnection( screenInfo.screens[stuff->screen], stuff->magic)) {
- ErrorF("Failed to authenticate %lu\n", (unsigned long)stuff->magic);
- rep.authenticated = 0;
- }
- WriteToClient(client, sizeof(xXF86DRIAuthConnectionReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-ProcXF86DRICloseConnection(
- register ClientPtr client
-)
-{
- REQUEST(xXF86DRICloseConnectionReq);
- REQUEST_SIZE_MATCH(xXF86DRICloseConnectionReq);
- if (stuff->screen >= screenInfo.numScreens) {
- client->errorValue = stuff->screen;
- return BadValue;
- }
-
- DRICloseConnection( screenInfo.screens[stuff->screen]);
-
- return (client->noClientException);
-}
-
-static int
-ProcXF86DRIGetClientDriverName(
- register ClientPtr client
-)
-{
- xXF86DRIGetClientDriverNameReply rep;
- char* clientDriverName;
-
- REQUEST(xXF86DRIGetClientDriverNameReq);
- REQUEST_SIZE_MATCH(xXF86DRIGetClientDriverNameReq);
- if (stuff->screen >= screenInfo.numScreens) {
- client->errorValue = stuff->screen;
- return BadValue;
- }
-
- DRIGetClientDriverName( screenInfo.screens[stuff->screen],
- (int *)&rep.ddxDriverMajorVersion,
- (int *)&rep.ddxDriverMinorVersion,
- (int *)&rep.ddxDriverPatchVersion,
- &clientDriverName);
-
- rep.type = X_Reply;
- rep.sequenceNumber = client->sequence;
- rep.clientDriverNameLength = 0;
- if (clientDriverName)
- rep.clientDriverNameLength = strlen(clientDriverName);
- rep.length = (SIZEOF(xXF86DRIGetClientDriverNameReply) -
- SIZEOF(xGenericReply) +
- ((rep.clientDriverNameLength + 3) & ~3)) >> 2;
-
- WriteToClient(client,
- sizeof(xXF86DRIGetClientDriverNameReply), (char *)&rep);
- if (rep.clientDriverNameLength)
- WriteToClient(client,
- rep.clientDriverNameLength,
- clientDriverName);
- return (client->noClientException);
-}
-
-static int
-ProcXF86DRICreateContext(
- register ClientPtr client
-)
-{
- xXF86DRICreateContextReply rep;
- ScreenPtr pScreen;
- VisualPtr visual;
- int i;
-
- REQUEST(xXF86DRICreateContextReq);
- REQUEST_SIZE_MATCH(xXF86DRICreateContextReq);
- if (stuff->screen >= screenInfo.numScreens) {
- client->errorValue = stuff->screen;
- return BadValue;
- }
-
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- pScreen = screenInfo.screens[stuff->screen];
- visual = pScreen->visuals;
-
- /* Find the requested X visual */
- for (i = 0; i < pScreen->numVisuals; i++, visual++)
- if (visual->vid == stuff->visual)
- break;
- if (i == pScreen->numVisuals) {
- /* No visual found */
- return BadValue;
- }
-
- if (!DRICreateContext( pScreen,
- visual,
- stuff->context,
- (drm_context_t *)&rep.hHWContext)) {
- return BadValue;
- }
-
- WriteToClient(client, sizeof(xXF86DRICreateContextReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-ProcXF86DRIDestroyContext(
- register ClientPtr client
-)
-{
- REQUEST(xXF86DRIDestroyContextReq);
- REQUEST_SIZE_MATCH(xXF86DRIDestroyContextReq);
- if (stuff->screen >= screenInfo.numScreens) {
- client->errorValue = stuff->screen;
- return BadValue;
- }
-
- if (!DRIDestroyContext( screenInfo.screens[stuff->screen],
- stuff->context)) {
- return BadValue;
- }
-
- return (client->noClientException);
-}
-
-static int
-ProcXF86DRICreateDrawable(
- ClientPtr client
-)
-{
- xXF86DRICreateDrawableReply rep;
- DrawablePtr pDrawable;
-
- REQUEST(xXF86DRICreateDrawableReq);
- REQUEST_SIZE_MATCH(xXF86DRICreateDrawableReq);
- if (stuff->screen >= screenInfo.numScreens) {
- client->errorValue = stuff->screen;
- return BadValue;
- }
-
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- if (!(pDrawable = (DrawablePtr)SecurityLookupDrawable(
- (Drawable)stuff->drawable,
- client,
- SecurityReadAccess))) {
- return BadValue;
- }
-
- if (!DRICreateDrawable( screenInfo.screens[stuff->screen],
- (Drawable)stuff->drawable,
- pDrawable,
- (drm_drawable_t *)&rep.hHWDrawable)) {
- return BadValue;
- }
-
- WriteToClient(client, sizeof(xXF86DRICreateDrawableReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-ProcXF86DRIDestroyDrawable(
- register ClientPtr client
-)
-{
- REQUEST(xXF86DRIDestroyDrawableReq);
- DrawablePtr pDrawable;
- REQUEST_SIZE_MATCH(xXF86DRIDestroyDrawableReq);
- if (stuff->screen >= screenInfo.numScreens) {
- client->errorValue = stuff->screen;
- return BadValue;
- }
-
- if (!(pDrawable = (DrawablePtr)SecurityLookupDrawable(
- (Drawable)stuff->drawable,
- client,
- SecurityReadAccess))) {
- return BadValue;
- }
-
- if (!DRIDestroyDrawable( screenInfo.screens[stuff->screen],
- (Drawable)stuff->drawable,
- pDrawable)) {
- return BadValue;
- }
-
- return (client->noClientException);
-}
-
-static int
-ProcXF86DRIGetDrawableInfo(
- register ClientPtr client
-)
-{
- xXF86DRIGetDrawableInfoReply rep;
- DrawablePtr pDrawable;
- int X, Y, W, H;
- drm_clip_rect_t * pClipRects;
- drm_clip_rect_t * pBackClipRects;
- int backX, backY;
-
- REQUEST(xXF86DRIGetDrawableInfoReq);
- REQUEST_SIZE_MATCH(xXF86DRIGetDrawableInfoReq);
- if (stuff->screen >= screenInfo.numScreens) {
- client->errorValue = stuff->screen;
- return BadValue;
- }
-
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- if (!(pDrawable = (DrawablePtr)SecurityLookupDrawable(
- (Drawable)stuff->drawable,
- client,
- SecurityReadAccess))) {
- return BadValue;
- }
-
- if (!DRIGetDrawableInfo( screenInfo.screens[stuff->screen],
- pDrawable,
- (unsigned int*)&rep.drawableTableIndex,
- (unsigned int*)&rep.drawableTableStamp,
- (int*)&X,
- (int*)&Y,
- (int*)&W,
- (int*)&H,
- (int*)&rep.numClipRects,
- &pClipRects,
- &backX,
- &backY,
- (int*)&rep.numBackClipRects,
- &pBackClipRects)) {
- return BadValue;
- }
-
- rep.drawableX = X;
- rep.drawableY = Y;
- rep.drawableWidth = W;
- rep.drawableHeight = H;
- rep.length = (SIZEOF(xXF86DRIGetDrawableInfoReply) -
- SIZEOF(xGenericReply));
-
- rep.backX = backX;
- rep.backY = backY;
-
- if (rep.numBackClipRects)
- rep.length += sizeof(drm_clip_rect_t) * rep.numBackClipRects;
-
- if (rep.numClipRects)
- rep.length += sizeof(drm_clip_rect_t) * rep.numClipRects;
-
- rep.length = ((rep.length + 3) & ~3) >> 2;
-
- WriteToClient(client, sizeof(xXF86DRIGetDrawableInfoReply), (char *)&rep);
-
- if (rep.numClipRects) {
- WriteToClient(client,
- sizeof(drm_clip_rect_t) * rep.numClipRects,
- (char *)pClipRects);
- }
-
- if (rep.numBackClipRects) {
- WriteToClient(client,
- sizeof(drm_clip_rect_t) * rep.numBackClipRects,
- (char *)pBackClipRects);
- }
-
- return (client->noClientException);
-}
-
-static int
-ProcXF86DRIGetDeviceInfo(
- register ClientPtr client
-)
-{
- xXF86DRIGetDeviceInfoReply rep;
- drm_handle_t hFrameBuffer;
- void *pDevPrivate;
-
- REQUEST(xXF86DRIGetDeviceInfoReq);
- REQUEST_SIZE_MATCH(xXF86DRIGetDeviceInfoReq);
- if (stuff->screen >= screenInfo.numScreens) {
- client->errorValue = stuff->screen;
- return BadValue;
- }
-
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- if (!DRIGetDeviceInfo( screenInfo.screens[stuff->screen],
- &hFrameBuffer,
- (int*)&rep.framebufferOrigin,
- (int*)&rep.framebufferSize,
- (int*)&rep.framebufferStride,
- (int*)&rep.devPrivateSize,
- &pDevPrivate)) {
- return BadValue;
- }
-
- rep.hFrameBufferLow = (CARD32)(hFrameBuffer & 0xffffffff);
-#if defined(LONG64) && !defined(__linux__)
- rep.hFrameBufferHigh = (CARD32)(hFrameBuffer >> 32);
-#else
- rep.hFrameBufferHigh = 0;
-#endif
-
- rep.length = 0;
- if (rep.devPrivateSize) {
- rep.length = (SIZEOF(xXF86DRIGetDeviceInfoReply) -
- SIZEOF(xGenericReply) +
- ((rep.devPrivateSize + 3) & ~3)) >> 2;
- }
-
- WriteToClient(client, sizeof(xXF86DRIGetDeviceInfoReply), (char *)&rep);
- if (rep.length) {
- WriteToClient(client, rep.devPrivateSize, (char *)pDevPrivate);
- }
- return (client->noClientException);
-}
-
-static int
-ProcXF86DRIDispatch (
- register ClientPtr client
-)
-{
- REQUEST(xReq);
-
- switch (stuff->data)
- {
- case X_XF86DRIQueryVersion:
- return ProcXF86DRIQueryVersion(client);
- case X_XF86DRIQueryDirectRenderingCapable:
- return ProcXF86DRIQueryDirectRenderingCapable(client);
- }
-
- if (!LocalClient(client))
- return DRIErrorBase + XF86DRIClientNotLocal;
-
- switch (stuff->data)
- {
- case X_XF86DRIOpenConnection:
- return ProcXF86DRIOpenConnection(client);
- case X_XF86DRICloseConnection:
- return ProcXF86DRICloseConnection(client);
- case X_XF86DRIGetClientDriverName:
- return ProcXF86DRIGetClientDriverName(client);
- case X_XF86DRICreateContext:
- return ProcXF86DRICreateContext(client);
- case X_XF86DRIDestroyContext:
- return ProcXF86DRIDestroyContext(client);
- case X_XF86DRICreateDrawable:
- return ProcXF86DRICreateDrawable(client);
- case X_XF86DRIDestroyDrawable:
- return ProcXF86DRIDestroyDrawable(client);
- case X_XF86DRIGetDrawableInfo:
- return ProcXF86DRIGetDrawableInfo(client);
- case X_XF86DRIGetDeviceInfo:
- return ProcXF86DRIGetDeviceInfo(client);
- case X_XF86DRIAuthConnection:
- return ProcXF86DRIAuthConnection(client);
- /* {Open,Close}FullScreen are deprecated now */
- default:
- return BadRequest;
- }
-}
-
-static int
-SProcXF86DRIQueryVersion(
- register ClientPtr client
-)
-{
- register int n;
- REQUEST(xXF86DRIQueryVersionReq);
- swaps(&stuff->length, n);
- return ProcXF86DRIQueryVersion(client);
-}
-
-static int
-SProcXF86DRIDispatch (
- register ClientPtr client
-)
-{
- REQUEST(xReq);
-
- /* It is bound to be non-local when there is byte swapping */
- if (!LocalClient(client))
- return DRIErrorBase + XF86DRIClientNotLocal;
-
- /* only local clients are allowed DRI access */
- switch (stuff->data)
- {
- case X_XF86DRIQueryVersion:
- return SProcXF86DRIQueryVersion(client);
- default:
- return BadRequest;
- }
-}
diff --git a/nx-X11/programs/Xserver/GL/windows/ChangeLog b/nx-X11/programs/Xserver/GL/windows/ChangeLog
deleted file mode 100644
index 43a817d6a..000000000
--- a/nx-X11/programs/Xserver/GL/windows/ChangeLog
+++ /dev/null
@@ -1,64 +0,0 @@
-2005-09-27 Ian Romanick <idr@us.ibm.com>
-
- * indirect.c:
- Remove __glEvalComputeK. It is no longer used.
-
-
-2005-04-09 Alexander Gottwald <ago at freedesktop dot org>
-
- * indirect.c:
- Fix passing of non-RGB visuals. The old code did not initialize the
- structure properly which lead to a crash in 8bpp mode
-
-2005-03-01 Alexander Gottwald <ago at freedesktop dot org>
-
- * indirect.c:
- * glwindows.h:
- If a context is already attached copy it instead of reattaching to keep
- displaylists and share displaylists
- Enable tracing of often called functions with GLWIN_ENABLE_TRACE
- ForceCurrent is a no-op now
-
-2005-02-02 Alexander Gottwald <ago at freedesktop dot org>
-
- * Imakefile:
- Bugzilla #1866 (https://bugs.freedesktop.org/show_bug.cgi?id=1866)
- attachment #1819 (https://bugs.freedesktop.org/attachment.cgi?id=1819):
- Define APIENTRY on windows to prevent <GL/gl.h> from loading <windows.h>
-
-2005-02-02 Alexander Gottwald <ago at freedesktop dot org>
-
- * glwrap.c:
- * glwindows.h:
- Bugzilla #1866 (https://bugs.freedesktop.org/show_bug.cgi?id=1866)
- attachment #1818 (https://bugs.freedesktop.org/attachment.cgi?id=1818):
- Include Xwindows.h before GL/gl.h to prevent loading windows.h which
- pollutes our namespace with some symbols.
-
-2005-01-27 Alexander Gottwald <ago at freedesktop dot org>
-
- * glwrap.c:
- Functions like glGenTextures and glBindTexture are in OpenGL 1.1
- and can be resolved at linktime.
-
-2004-11-15 Alexander Gottwald <ago at freedesktop dot org>
-
- * indirect.c:
- Bugzilla #1802, http://freedesktop.org/bugzilla/show_bug.cgi?id=1802
- Added mingw (Win32) port
-
-2004-08-13 Alexander Gottwald <ago@freedesktop.org>
-
- * Imakefile: Added $(MESASRCDIR)/src/mesa/glapi to INCLUDES.
- Removed $(SERVERSRC)/mi from INCLUDES.
- Rearranged INCLUDES for better readability.
- * glwindows.h: Removed mipointrst.h and miscstruct.h from #include
- since they are not used anymore.
-
-2004-05-27 Alexander Gottwald <ago@freedesktop.org>
-
- * glwindows.h: write current function and line in debug output
- * indirect.c: moved actual setup and creation of windows GL context to
- glWinCreateContextReal.
- * indirect.c (glWinCreateContext): Deferred context creation to attach.
- * indirect.c (glWinMakeCurrent): Check if context is NULL. Fixes segfault.
diff --git a/nx-X11/programs/Xserver/GL/windows/Imakefile b/nx-X11/programs/Xserver/GL/windows/Imakefile
deleted file mode 100755
index 2b3ddeb12..000000000
--- a/nx-X11/programs/Xserver/GL/windows/Imakefile
+++ /dev/null
@@ -1,36 +0,0 @@
-#include <Server.tmpl>
-
-LinkSourceFile(compsize.c,$(MESASRCDIR)/src/glx/x11)
-
- SRCS = compsize.c indirect.c glwrap.c
- OBJS = compsize.o indirect.o glwrap.o
-
- INCLUDES = -I. \
- -I$(INCLUDESRC) \
- -I$(XINCLUDESRC) \
- -I$(EXTINCSRC) \
- -I$(SERVERSRC)/include \
- -I$(SERVERSRC)/render \
- -I$(SERVERSRC)/hw/xwin \
- -I$(SERVERSRC)/GL/include \
- -I$(SERVERSRC)/GL/glx \
- -I$(LIBSRC)/GL/glx \
- -I$(LIBSRC)/GL/include \
- -I$(MESASRCDIR)/include \
- -I$(MESASRCDIR)/src \
- -I$(MESASRCDIR)/src/mesa/glapi \
- $(GL_INCLUDES)
-
-#if defined(GlxUseWindows) && GlxUseWindows
- CYGWIN_GL_DEFINES = -DUSE_OPENGL32
-#endif
-#if defined(Win32Architecture)
-# undef __stdcall
- APIENTRY_DEFS = -DAPIENTRY=__stdcall
-#endif
- DEFINES = $(GLX_DEFINES) $(CYGWIN_GL_DEFINES) $(APIENTRY_DEFS)
-
-NormalLibraryTarget(GLcore,$(OBJS))
-NormalLibraryObjectRule()
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/GL/windows/glwindows.h b/nx-X11/programs/Xserver/GL/windows/glwindows.h
deleted file mode 100644
index 74e81f24f..000000000
--- a/nx-X11/programs/Xserver/GL/windows/glwindows.h
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/Xwindows.h>
-#include <GL/gl.h>
-#include <GL/glext.h>
-
-#include <glxserver.h>
-#include <glxext.h>
-
-#include <windowstr.h>
-#include <resource.h>
-#include <GL/glxint.h>
-#include <GL/glxtokens.h>
-#include <scrnintstr.h>
-#include <glxserver.h>
-#include <glxscreens.h>
-#include <glxdrawable.h>
-#include <glxcontext.h>
-#include <glxext.h>
-#include <glxutil.h>
-#include <glxscreens.h>
-#include <GL/internal/glcore.h>
-#include <stdlib.h>
-
-
-typedef struct {
- unsigned enableDebug : 1;
- unsigned enableTrace : 1;
- unsigned dumpPFD : 1;
- unsigned dumpHWND : 1;
- unsigned dumpDC : 1;
-} glWinDebugSettingsRec, *glWinDebugSettingsPtr;
-extern glWinDebugSettingsRec glWinDebugSettings;
-
-typedef struct {
- int num_vis;
- __GLcontextModes *modes;
- void **priv;
-
- /* wrapped screen functions */
- RealizeWindowProcPtr RealizeWindow;
- UnrealizeWindowProcPtr UnrealizeWindow;
- CopyWindowProcPtr CopyWindow;
-} glWinScreenRec;
-
-extern glWinScreenRec glWinScreens[MAXSCREENS];
-
-#define glWinGetScreenPriv(pScreen) &glWinScreens[pScreen->myNum]
-#define glWinScreenPriv(pScreen) glWinScreenRec *pScreenPriv = glWinGetScreenPriv(pScreen);
-
-#if 1
-#define GLWIN_TRACE() if (glWinDebugSettings.enableTrace) ErrorF("%s:%d: Trace\n", __FUNCTION__, __LINE__ )
-#define GLWIN_TRACE_MSG(msg, args...) if (glWinDebugSettings.enableTrace) ErrorF("%s:%d: " msg, __FUNCTION__, __LINE__, ##args )
-#define GLWIN_DEBUG_MSG(msg, args...) if (glWinDebugSettings.enableDebug) ErrorF("%s:%d: " msg, __FUNCTION__, __LINE__, ##args )
-#define GLWIN_DEBUG_MSG2(msg, args...) if (glWinDebugSettings.enableDebug) ErrorF(msg, ##args )
-#else
-#define GLWIN_TRACE()
-#define GLWIN_TRACE_MSG(a, ...)
-#define GLWIN_DEBUG_MSG(a, ...)
-#define GLWIN_DEBUG_MSG2(a, ...)
-#endif
-
diff --git a/nx-X11/programs/Xserver/GL/windows/glwrap.c b/nx-X11/programs/Xserver/GL/windows/glwrap.c
deleted file mode 100755
index f0b38b228..000000000
--- a/nx-X11/programs/Xserver/GL/windows/glwrap.c
+++ /dev/null
@@ -1,583 +0,0 @@
-/*
- * GLX implementation that uses Win32's OpenGL
- * Wrapper functions for Win32's OpenGL
- *
- * Authors: Alexander Gottwald
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/Xwindows.h>
-#include <GL/gl.h>
-#include <GL/glext.h>
-#include <glxserver.h>
-#include <glxext.h>
-
-#define RESOLVE_RET(procname, symbol, retval) \
- static Bool init = TRUE; \
- static procname proc = NULL; \
- if (init) { \
- proc = (procname)wglGetProcAddress(symbol); \
- init = FALSE; \
- if (proc == NULL) { \
- ErrorF("glwrap: Can't resolve \"%s\"\n", symbol); \
- } else \
- ErrorF("glwrap: resolved \"%s\"\n", symbol); \
- } \
- if (proc == NULL) { \
- __glXErrorCallBack(NULL, 0); \
- return retval; \
- }
-#define RESOLVE(procname, symbol) RESOLVE_RET(procname, symbol,)
-
-
-/*
- * GL_ARB_imaging
- */
-
-
-GLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat,
- GLsizei width, GLenum format,
- GLenum type, const GLvoid *table )
-{
- RESOLVE(PFNGLCOLORTABLEPROC, "glColorTable");
- proc(target, internalformat, width, format, type, table);
-}
-
-GLAPI void GLAPIENTRY glColorSubTable( GLenum target,
- GLsizei start, GLsizei count,
- GLenum format, GLenum type,
- const GLvoid *data )
-{
- RESOLVE(PFNGLCOLORSUBTABLEPROC, "glColorSubTable");
- proc(target, start, count, format, type, data);
-}
-
-GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname,
- const GLint *params)
-{
- RESOLVE(PFNGLCOLORTABLEPARAMETERIVPROC, "glColorTableParameteriv");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname,
- const GLfloat *params)
-{
- RESOLVE(PFNGLCOLORTABLEPARAMETERFVPROC, "glColorTableParameterfv");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start,
- GLint x, GLint y, GLsizei width )
-{
- RESOLVE(PFNGLCOPYCOLORSUBTABLEPROC, "glCopyColorSubTable");
- proc(target, start, x, y, width);
-}
-
-GLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat,
- GLint x, GLint y, GLsizei width )
-{
- RESOLVE(PFNGLCOPYCOLORTABLEPROC, "glCopyColorTable");
- proc(target, internalformat, x, y, width);
-}
-
-
-GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format,
- GLenum type, GLvoid *table )
-{
- RESOLVE(PFNGLGETCOLORTABLEPROC, "glGetColorTable");
- proc(target, format, type, table);
-}
-
-GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname,
- GLfloat *params )
-{
- RESOLVE(PFNGLGETCOLORTABLEPARAMETERFVPROC, "glGetColorTableParameterfv");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname,
- GLint *params )
-{
- RESOLVE(PFNGLGETCOLORTABLEPARAMETERIVPROC, "glGetColorTableParameteriv");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glBlendEquation( GLenum mode )
-{
- RESOLVE(PFNGLBLENDEQUATIONPROC, "glBlendEquation");
- proc(mode);
-}
-
-GLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green,
- GLclampf blue, GLclampf alpha )
-{
- RESOLVE(PFNGLBLENDCOLORPROC, "glBlendColor");
- proc(red, green, blue, alpha);
-}
-
-GLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width,
- GLenum internalformat, GLboolean sink )
-{
- RESOLVE(PFNGLHISTOGRAMPROC, "glHistogram");
- proc(target, width, internalformat, sink);
-}
-
-GLAPI void GLAPIENTRY glResetHistogram( GLenum target )
-{
- RESOLVE(PFNGLRESETHISTOGRAMPROC, "glResetHistogram");
- proc(target);
-}
-
-GLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset,
- GLenum format, GLenum type,
- GLvoid *values )
-{
- RESOLVE(PFNGLGETHISTOGRAMPROC, "glGetHistogram");
- proc(target, reset, format, type, values);
-};
-
-GLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname,
- GLfloat *params )
-{
- RESOLVE(PFNGLGETHISTOGRAMPARAMETERFVPROC, "glGetHistogramParameterfv");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname,
- GLint *params )
-{
- RESOLVE(PFNGLGETHISTOGRAMPARAMETERIVPROC, "glGetHistogramParameteriv");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat,
- GLboolean sink )
-{
- RESOLVE(PFNGLMINMAXPROC, "glMinmax");
- proc(target, internalformat, sink);
-}
-
-GLAPI void GLAPIENTRY glResetMinmax( GLenum target )
-{
- RESOLVE(PFNGLRESETMINMAXPROC, "glResetMinmax");
- proc(target);
-}
-
-GLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset,
- GLenum format, GLenum types,
- GLvoid *values )
-{
- RESOLVE(PFNGLGETMINMAXPROC, "glGetMinmax");
- proc(target, reset, format, types, values);
-}
-
-GLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname,
- GLfloat *params )
-{
- RESOLVE(PFNGLGETMINMAXPARAMETERFVPROC, "glGetMinmaxParameterfv");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname,
- GLint *params )
-{
- RESOLVE(PFNGLGETMINMAXPARAMETERIVPROC, "glGetMinmaxParameteriv");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target,
- GLenum internalformat, GLsizei width, GLenum format, GLenum type,
- const GLvoid *image )
-{
- RESOLVE(PFNGLCONVOLUTIONFILTER1DPROC, "glConvolutionFilter1D");
- proc(target, internalformat, width, format, type, image);
-}
-
-GLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target,
- GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
- GLenum type, const GLvoid *image )
-{
- RESOLVE(PFNGLCONVOLUTIONFILTER2DPROC, "glConvolutionFilter2D");
- proc(target, internalformat, width, height, format, type, image);
-}
-
-GLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname,
- GLfloat params )
-{
- RESOLVE(PFNGLCONVOLUTIONPARAMETERFPROC, "glConvolutionParameterf");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname,
- const GLfloat *params )
-{
- RESOLVE(PFNGLCONVOLUTIONPARAMETERFVPROC, "glConvolutionParameterfv");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname,
- GLint params )
-{
- RESOLVE(PFNGLCONVOLUTIONPARAMETERIPROC, "glConvolutionParameteri");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname,
- const GLint *params )
-{
- RESOLVE(PFNGLCONVOLUTIONPARAMETERIVPROC, "glConvolutionParameteriv");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target,
- GLenum internalformat, GLint x, GLint y, GLsizei width )
-{
- RESOLVE(PFNGLCOPYCONVOLUTIONFILTER1DPROC, "glCopyConvolutionFilter1D");
- proc(target, internalformat, x, y, width);
-}
-
-GLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target,
- GLenum internalformat, GLint x, GLint y, GLsizei width,
- GLsizei height)
-{
- RESOLVE(PFNGLCOPYCONVOLUTIONFILTER2DPROC, "glCopyConvolutionFilter2D");
- proc(target, internalformat, x, y, width, height);
-}
-
-GLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format,
- GLenum type, GLvoid *image )
-{
- RESOLVE(PFNGLGETCONVOLUTIONFILTERPROC, "glGetConvolutionFilter");
- proc(target, format, type, image);
-}
-
-GLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname,
- GLfloat *params )
-{
- RESOLVE(PFNGLGETCONVOLUTIONPARAMETERFVPROC, "glGetConvolutionParameterfv");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname,
- GLint *params )
-{
- RESOLVE(PFNGLGETCONVOLUTIONPARAMETERIVPROC, "glGetConvolutionParameteriv");
- proc(target, pname, params);
-}
-
-GLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target,
- GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
- GLenum type, const GLvoid *row, const GLvoid *column )
-{
- RESOLVE(PFNGLSEPARABLEFILTER2DPROC, "glSeparableFilter2D");
- proc(target, internalformat, width, height, format, type, row, column);
-}
-
-GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format,
- GLenum type, GLvoid *row, GLvoid *column, GLvoid *span )
-{
- RESOLVE(PFNGLGETSEPARABLEFILTERPROC, "glGetSeparableFilter");
- proc(target, format, type, row, column, span);
-}
-
-/*
- * OpenGL 1.2
- */
-
-GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level,
- GLint internalFormat,
- GLsizei width, GLsizei height,
- GLsizei depth, GLint border,
- GLenum format, GLenum type,
- const GLvoid *pixels )
-{
- RESOLVE(PFNGLTEXIMAGE3DPROC, "glTexImage3D");
- proc(target, level, internalFormat, width, height, depth, border, format, type, pixels);
-}
-
-GLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level,
- GLint xoffset, GLint yoffset,
- GLint zoffset, GLsizei width,
- GLsizei height, GLsizei depth,
- GLenum format,
- GLenum type, const GLvoid *pixels)
-{
- RESOLVE(PFNGLTEXSUBIMAGE3DPROC, "glTexSubImage3D");
- proc(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
-}
-
-GLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level,
- GLint xoffset, GLint yoffset,
- GLint zoffset, GLint x,
- GLint y, GLsizei width,
- GLsizei height )
-{
- RESOLVE(PFNGLCOPYTEXSUBIMAGE3DPROC, "glCopyTexSubImage3D");
- proc(target, level, xoffset, yoffset, zoffset, x, y, width, height);
-}
-
-
-/*
- * 20. GL_EXT_texture_object
- */
-GLAPI void GLAPIENTRY glGenTexturesEXT( GLsizei n, GLuint *textures )
-{
- glGenTextures(n, textures);
-}
-
-GLAPI void GLAPIENTRY glDeleteTexturesEXT( GLsizei n, const GLuint *textures)
-{
- glDeleteTextures(n, textures);
-}
-
-GLAPI void GLAPIENTRY glBindTextureEXT( GLenum target, GLuint texture )
-{
- glBindTexture(target, target);
-}
-
-GLAPI void GLAPIENTRY glPrioritizeTexturesEXT( GLsizei n, const GLuint *textures, const GLclampf *priorities )
-{
- glPrioritizeTextures(n, textures, priorities);
-}
-
-GLAPI GLboolean GLAPIENTRY glAreTexturesResidentEXT( GLsizei n, const GLuint *textures, GLboolean *residences )
-{
- return glAreTexturesResident(n, textures, residences);
-}
-
-GLAPI GLboolean GLAPIENTRY glIsTextureEXT( GLuint texture )
-{
- return glIsTexture(texture);
-}
-
-/*
- * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1)
- */
-
-GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture)
-{
- RESOLVE(PFNGLACTIVETEXTUREARBPROC, "glActiveTextureARB");
- proc(texture);
-}
-
-GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD1DVARBPROC, "glMultiTexCoord1dvARB");
- proc(target, v);
-}
-
-GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD1FVARBPROC, "glMultiTexCoord1fvARB");
- proc(target, v);
-}
-
-GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD1IVARBPROC, "glMultiTexCoord1ivARB");
- proc(target, v);
-}
-
-GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD1SVARBPROC, "glMultiTexCoord1svARB");
- proc(target, v);
-}
-GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD2DVARBPROC, "glMultiTexCoord2dvARB");
- proc(target, v);
-}
-GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD2FVARBPROC, "glMultiTexCoord2fvARB");
- proc(target, v);
-}
-GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD2IVARBPROC, "glMultiTexCoord2ivARB");
- proc(target, v);
-}
-GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD1SVARBPROC, "glMultiTexCoord1svARB");
- proc(target, v);
-}
-GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD3DVARBPROC, "glMultiTexCoord3dvARB");
- proc(target, v);
-}
-GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD3FVARBPROC, "glMultiTexCoord3fvARB");
- proc(target, v);
-}
-GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD3IVARBPROC, "glMultiTexCoord3ivARB");
- proc(target, v);
-}
-GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD1SVARBPROC, "glMultiTexCoord1svARB");
- proc(target, v);
-}
-GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD4DVARBPROC, "glMultiTexCoord4dvARB");
- proc(target, v);
-}
-GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD4FVARBPROC, "glMultiTexCoord4fvARB");
- proc(target, v);
-}
-GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD4IVARBPROC, "glMultiTexCoord4ivARB");
- proc(target, v);
-}
-GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v)
-{
- RESOLVE(PFNGLMULTITEXCOORD1SVARBPROC, "glMultiTexCoord1svARB");
- proc(target, v);
-}
-
-
-GLAPI void GLAPIENTRY glActiveStencilFaceEXT(GLenum face)
-{
- RESOLVE(PFNGLACTIVESTENCILFACEEXTPROC, "glActiveStencilFaceEXT");
- proc(face);
-}
-
-GLAPI void APIENTRY glPointParameterfARB(GLenum pname, GLfloat param)
-{
- RESOLVE(PFNGLPOINTPARAMETERFARBPROC, "glPointParameterfARB");
- proc(pname, param);
-}
-
-GLAPI void APIENTRY glPointParameterfvARB(GLenum pname, const GLfloat *params)
-{
- RESOLVE(PFNGLPOINTPARAMETERFVARBPROC, "glPointParameterfvARB");
- proc(pname, params);
-}
-
-
-GLAPI void APIENTRY glWindowPos3fARB(GLfloat x, GLfloat y, GLfloat z)
-{
- RESOLVE(PFNGLWINDOWPOS3FARBPROC, "glWindowPos3fARB");
- proc(x, y, z);
-}
-
-GLAPI void APIENTRY glPointParameteri(GLenum pname, GLint param)
-{
- RESOLVE(PFNGLPOINTPARAMETERIPROC, "glPointParameteri");
- proc(pname, param);
-}
-
-GLAPI void APIENTRY glPointParameteriv(GLenum pname, const GLint *params)
-{
- RESOLVE(PFNGLPOINTPARAMETERIVPROC, "glPointParameteriv");
- proc(pname, params);
-}
-
-GLAPI void APIENTRY glPointParameteriNV(GLenum pname, GLint param)
-{
- RESOLVE(PFNGLPOINTPARAMETERINVPROC, "glPointParameteriNV");
- proc(pname, param);
-}
-
-GLAPI void APIENTRY glPointParameterivNV(GLenum pname, const GLint *params)
-{
- RESOLVE(PFNGLPOINTPARAMETERIVNVPROC, "glPointParameterivNV");
- proc(pname, params);
-}
-
-GLAPI void APIENTRY glSecondaryColor3bv(const GLbyte *v)
-{
- RESOLVE(PFNGLSECONDARYCOLOR3BVPROC, "glSecondaryColor3bv");
- proc(v);
-}
-GLAPI void APIENTRY glSecondaryColor3dv(const GLdouble *v)
-{
- RESOLVE(PFNGLSECONDARYCOLOR3DVPROC, "glSecondaryColor3dv");
- proc(v);
-}
-GLAPI void APIENTRY glSecondaryColor3fv(const GLfloat *v)
-{
- RESOLVE(PFNGLSECONDARYCOLOR3FVPROC, "glSecondaryColor3fv");
- proc(v);
-}
-GLAPI void APIENTRY glSecondaryColor3iv(const GLint *v)
-{
- RESOLVE(PFNGLSECONDARYCOLOR3IVPROC, "glSecondaryColor3iv");
- proc(v);
-}
-GLAPI void APIENTRY glSecondaryColor3sv(const GLshort *v)
-{
- RESOLVE(PFNGLSECONDARYCOLOR3SVPROC, "glSecondaryColor3sv");
- proc(v);
-}
-GLAPI void APIENTRY glSecondaryColor3ubv(const GLubyte *v)
-{
- RESOLVE(PFNGLSECONDARYCOLOR3UBVPROC, "glSecondaryColor3ubv");
- proc(v);
-}
-GLAPI void APIENTRY glSecondaryColor3uiv(const GLuint *v)
-{
- RESOLVE(PFNGLSECONDARYCOLOR3UIVPROC, "glSecondaryColor3uiv");
- proc(v);
-}
-GLAPI void APIENTRY glSecondaryColor3usv(const GLushort *v)
-{
- RESOLVE(PFNGLSECONDARYCOLOR3USVPROC, "glSecondaryColor3usv");
- proc(v);
-}
-GLAPI void APIENTRY glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
-{
- RESOLVE(PFNGLSECONDARYCOLORPOINTERPROC, "glSecondaryColorPointer");
- proc(size, type, stride, pointer);
-}
-
-
-GLAPI void APIENTRY glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
-{
- RESOLVE(PFNGLBLENDFUNCSEPARATEPROC, "glBlendFuncSeparate");
- proc(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
-}
-GLAPI void APIENTRY glFogCoordfv(const GLfloat *coord)
-{
- RESOLVE(PFNGLFOGCOORDFVPROC, "glFogCoordfv");
- proc(coord);
-}
-GLAPI void APIENTRY glFogCoorddv(const GLdouble *coord)
-{
- RESOLVE(PFNGLFOGCOORDDVPROC, "glFogCoorddv");
- proc(coord);
-}
-GLAPI void APIENTRY glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer)
-{
- RESOLVE(PFNGLFOGCOORDPOINTERPROC, "glFogCoordPointer");
- proc(type, stride, pointer);
-}
-
-
-GLAPI void APIENTRY glSampleCoverageARB(GLclampf value, GLboolean invert)
-{
- RESOLVE(PFNGLSAMPLECOVERAGEARBPROC, "glSampleCoverageARB");
- proc(value, invert);
-}
-GLAPI void APIENTRY glSampleMaskSGIS(GLclampf value, GLboolean invert)
-{
- RESOLVE(PFNGLSAMPLEMASKSGISPROC, "glSampleMaskSGIS");
- proc(value, invert);
-}
-GLAPI void APIENTRY glSamplePatternSGIS(GLenum pattern)
-{
- RESOLVE(PFNGLSAMPLEPATTERNSGISPROC, "glSamplePatternSGIS");
- proc(pattern);
-}
diff --git a/nx-X11/programs/Xserver/GL/windows/indirect.c b/nx-X11/programs/Xserver/GL/windows/indirect.c
deleted file mode 100755
index 5e12022f4..000000000
--- a/nx-X11/programs/Xserver/GL/windows/indirect.c
+++ /dev/null
@@ -1,1605 +0,0 @@
-/*
- * GLX implementation that uses Windows OpenGL library
- * (Indirect rendering path)
- *
- * Authors: Alexander Gottwald
- */
-/*
- * Portions of this file are copied from GL/apple/indirect.c,
- * which contains the following copyright:
- *
- * Copyright (c) 2002 Greg Parker. All Rights Reserved.
- * Copyright (c) 2002 Apple Computer, Inc.
- *
- * Portions of this file are copied from xf86glx.c,
- * which contains the following copyright:
- *
- * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "glwindows.h"
-#include <glcontextmodes.h>
-#include <stdint.h>
-
-#include <winpriv.h>
-
-#define GLWIN_DEBUG_HWND(hwnd) \
- if (glWinDebugSettings.dumpHWND) { \
- char buffer[1024]; \
- if (GetWindowText(hwnd, buffer, sizeof(buffer))==0) *buffer=0; \
- GLWIN_DEBUG_MSG("Got HWND %s (%p)\n", buffer, hwnd); \
- }
-
-
-/* ggs: needed to call back to glx with visual configs */
-extern void GlxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs, void **configprivs);
-
-glWinDebugSettingsRec glWinDebugSettings = { 1, 0, 0, 0, 0};
-
-static void glWinInitDebugSettings(void)
-{
- char *envptr;
-
- envptr = getenv("GLWIN_ENABLE_DEBUG");
- if (envptr != NULL)
- glWinDebugSettings.enableDebug = (atoi(envptr) == 1);
-
- envptr = getenv("GLWIN_ENABLE_TRACE");
- if (envptr != NULL)
- glWinDebugSettings.enableTrace = (atoi(envptr) == 1);
-
- envptr = getenv("GLWIN_DUMP_PFD");
- if (envptr != NULL)
- glWinDebugSettings.dumpPFD = (atoi(envptr) == 1);
-
- envptr = getenv("GLWIN_DUMP_HWND");
- if (envptr != NULL)
- glWinDebugSettings.dumpHWND = (atoi(envptr) == 1);
-
- envptr = getenv("GLWIN_DUMP_DC");
- if (envptr != NULL)
- glWinDebugSettings.dumpDC = (atoi(envptr) == 1);
-}
-
-static char errorbuffer[1024];
-const char *glWinErrorMessage(void)
-{
- if (!FormatMessage(
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &errorbuffer,
- sizeof(errorbuffer),
- NULL ))
- {
- snprintf(errorbuffer, sizeof(errorbuffer), "Unknown error in FormatMessage: %08x!\n", (unsigned)GetLastError());
- }
- return errorbuffer;
-}
-
-/*
- * GLX implementation that uses Win32's OpenGL
- */
-
-/*
- * Server-side GLX uses these functions which are normally defined
- * in the OpenGL SI.
- */
-
-GLuint __glFloorLog2(GLuint val)
-{
- int c = 0;
-
- while (val > 1) {
- c++;
- val >>= 1;
- }
- return c;
-}
-
-/* some prototypes */
-static Bool glWinScreenProbe(int screen);
-static Bool glWinInitVisuals(VisualPtr *visualp, DepthPtr *depthp,
- int *nvisualp, int *ndepthp,
- int *rootDepthp, VisualID *defaultVisp,
- unsigned long sizes, int bitsPerRGB);
-static void glWinSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs,
- void **privates);
-static __GLinterface *glWinCreateContext(__GLimports *imports,
- __GLcontextModes *mode,
- __GLinterface *shareGC);
-static void glWinCreateBuffer(__GLXdrawablePrivate *glxPriv);
-static void glWinResetExtension(void);
-
-/*
- * This structure is statically allocated in the __glXScreens[]
- * structure. This struct is not used anywhere other than in
- * __glXScreenInit to initialize each of the active screens
- * (__glXActiveScreens[]). Several of the fields must be initialized by
- * the screenProbe routine before they are copied to the active screens
- * struct. In particular, the contextCreate, pGlxVisual, numVisuals,
- * and numUsableVisuals fields must be initialized.
- */
-static __GLXscreenInfo __glDDXScreenInfo = {
- glWinScreenProbe, /* Must be generic and handle all screens */
- glWinCreateContext, /* Substitute screen's createContext routine */
- glWinCreateBuffer, /* Substitute screen's createBuffer routine */
- NULL, /* Set up pGlxVisual in probe */
- NULL, /* Set up pVisualPriv in probe */
- 0, /* Set up numVisuals in probe */
- 0, /* Set up numUsableVisuals in probe */
- "Vendor String", /* GLXvendor is overwritten by __glXScreenInit */
- "Version String", /* GLXversion is overwritten by __glXScreenInit */
- "Extensions String", /* GLXextensions is overwritten by __glXScreenInit */
- NULL /* WrappedPositionWindow is overwritten */
-};
-
-void *__glXglDDXScreenInfo(void) {
- return &__glDDXScreenInfo;
-}
-
-static __GLXextensionInfo __glDDXExtensionInfo = {
- GL_CORE_WINDOWS,
- glWinResetExtension,
- glWinInitVisuals,
- glWinSetVisualConfigs
-};
-
-void *__glXglDDXExtensionInfo(void) {
- return &__glDDXExtensionInfo;
-}
-
-/* prototypes */
-
-static GLboolean glWinDestroyContext(__GLcontext *gc);
-static GLboolean glWinLoseCurrent(__GLcontext *gc);
-static GLboolean glWinMakeCurrent(__GLcontext *gc);
-static GLboolean glWinShareContext(__GLcontext *gc, __GLcontext *gcShare);
-static GLboolean glWinCopyContext(__GLcontext *dst, const __GLcontext *src,
- GLuint mask);
-static GLboolean glWinForceCurrent(__GLcontext *gc);
-
-/* Drawing surface notification callbacks */
-static GLboolean glWinNotifyResize(__GLcontext *gc);
-static void glWinNotifyDestroy(__GLcontext *gc);
-static void glWinNotifySwapBuffers(__GLcontext *gc);
-
-/* Dispatch table override control for external agents like libGLS */
-static struct __GLdispatchStateRec* glWinDispatchExec(__GLcontext *gc);
-static void glWinBeginDispatchOverride(__GLcontext *gc);
-static void glWinEndDispatchOverride(__GLcontext *gc);
-
-/* Debug output */
-static void pfdOut(const PIXELFORMATDESCRIPTOR *pfd);
-
-static __GLexports glWinExports = {
- glWinDestroyContext,
- glWinLoseCurrent,
- glWinMakeCurrent,
- glWinShareContext,
- glWinCopyContext,
- glWinForceCurrent,
-
- glWinNotifyResize,
- glWinNotifyDestroy,
- glWinNotifySwapBuffers,
-
- glWinDispatchExec,
- glWinBeginDispatchOverride,
- glWinEndDispatchOverride
-};
-
-glWinScreenRec glWinScreens[MAXSCREENS];
-
-/* __GLdrawablePrivate->private */
-typedef struct {
- DrawablePtr pDraw;
- /* xp_surface_id sid; */
-} GLWinDrawableRec;
-
-struct __GLcontextRec {
- struct __GLinterfaceRec interface; /* required to be first */
-
- HGLRC ctx; /* Windows GL Context */
-
- HDC dc; /* Windows Device Context */
- winWindowInfoRec winInfo; /* Window info from XWin */
-
- PIXELFORMATDESCRIPTOR pfd; /* Pixelformat flags */
- int pixelFormat; /* Pixelformat index */
-
- unsigned isAttached :1; /* Flag to track if context is attached */
-};
-
-static HDC glWinMakeDC(__GLcontext *gc)
-{
- HDC dc;
-
- /*if (gc->winInfo.hrgn == NULL)
- {
- GLWIN_DEBUG_MSG("Creating region from RECT(%ld,%ld,%ld,%ld):",
- gc->winInfo.rect.left,
- gc->winInfo.rect.top,
- gc->winInfo.rect.right,
- gc->winInfo.rect.bottom);
- gc->winInfo.hrgn = CreateRectRgnIndirect(&gc->winInfo.rect);
- GLWIN_DEBUG_MSG2("%p\n", gc->winInfo.hrgn);
- }*/
-
- if (glWinDebugSettings.enableTrace)
- GLWIN_DEBUG_HWND(gc->winInfo.hwnd);
-
- dc = GetDC(gc->winInfo.hwnd);
- /*dc = GetDCEx(gc->winInfo.hwnd, gc->winInfo.hrgn,
- DCX_WINDOW | DCX_NORESETATTRS ); */
-
- if (dc == NULL)
- ErrorF("GetDC error: %s\n", glWinErrorMessage());
- return dc;
-}
-
-static void unattach(__GLcontext *gc)
-{
- BOOL ret;
- GLWIN_DEBUG_MSG("unattach (ctx %p)\n", gc->ctx);
- if (!gc->isAttached)
- {
- ErrorF("called unattach on an unattached context\n");
- return;
- }
-
- if (gc->ctx)
- {
- ret = wglDeleteContext(gc->ctx);
- if (!ret)
- ErrorF("wglDeleteContext error: %s\n", glWinErrorMessage());
- gc->ctx = NULL;
- }
-
- if (gc->winInfo.hrgn)
- {
- ret = DeleteObject(gc->winInfo.hrgn);
- if (!ret)
- ErrorF("DeleteObject error: %s\n", glWinErrorMessage());
- gc->winInfo.hrgn = NULL;
- }
-
- gc->isAttached = 0;
-}
-
-static BOOL glWinAdjustHWND(__GLcontext *gc, WindowPtr pWin)
-{
- HDC dc;
- BOOL ret;
- HGLRC newctx;
- HWND oldhwnd;
-
- GLWIN_DEBUG_MSG("glWinAdjustHWND (ctx %p, pWin %p)\n", gc->ctx, pWin);
-
- if (pWin == NULL)
- {
- GLWIN_DEBUG_MSG("Deferring until window is created\n");
- return FALSE;
- }
-
- oldhwnd = gc->winInfo.hwnd;
- winGetWindowInfo(pWin, &gc->winInfo);
-
- GLWIN_DEBUG_HWND(gc->winInfo.hwnd);
- if (gc->winInfo.hwnd == NULL)
- {
- GLWIN_DEBUG_MSG("Deferring until window is created\n");
- return FALSE;
- }
-
- dc = glWinMakeDC(gc);
-
- if (glWinDebugSettings.dumpDC)
- GLWIN_DEBUG_MSG("Got HDC %p\n", dc);
-
- gc->pixelFormat = ChoosePixelFormat(dc, &gc->pfd);
- if (gc->pixelFormat == 0)
- {
- ErrorF("ChoosePixelFormat error: %s\n", glWinErrorMessage());
- ReleaseDC(gc->winInfo.hwnd, dc);
- return FALSE;
- }
-
- ret = SetPixelFormat(dc, gc->pixelFormat, &gc->pfd);
- if (!ret) {
- ErrorF("SetPixelFormat error: %s\n", glWinErrorMessage());
- ReleaseDC(gc->winInfo.hwnd, dc);
- return FALSE;
- }
-
- newctx = wglCreateContext(dc);
- if (newctx == NULL) {
- ErrorF("wglCreateContext error: %s\n", glWinErrorMessage());
- ReleaseDC(gc->winInfo.hwnd, dc);
- return FALSE;
- }
-
- GLWIN_DEBUG_MSG("wglCreateContext (ctx %p)\n", newctx);
-
- if (!wglShareLists(gc->ctx, newctx))
- {
- ErrorF("wglShareLists error: %s\n", glWinErrorMessage());
- ReleaseDC(gc->winInfo.hwnd, dc);
- return FALSE;
- }
-
- if (oldhwnd != gc->winInfo.hwnd)
- {
- GLWIN_DEBUG_MSG("Trying wglCopyContext\n");
- if (!wglCopyContext(gc->ctx, newctx, GL_ALL_ATTRIB_BITS))
- {
- ErrorF("wglCopyContext error: %s\n", glWinErrorMessage());
- ReleaseDC(gc->winInfo.hwnd, dc);
- return FALSE;
- }
- }
-
- if (!wglDeleteContext(gc->ctx))
- {
- ErrorF("wglDeleteContext error: %s\n", glWinErrorMessage());
- }
-
- gc->ctx = newctx;
-
- if (!wglMakeCurrent(dc, gc->ctx)) {
- ErrorF("glMakeCurrent error: %s\n", glWinErrorMessage());
- ReleaseDC(gc->winInfo.hwnd, dc);
- return FALSE;
- }
-
- ReleaseDC(gc->winInfo.hwnd, dc);
-
- return TRUE;
-}
-
-static BOOL glWinCreateContextReal(__GLcontext *gc, WindowPtr pWin)
-{
- HDC dc;
- BOOL ret;
-
- GLWIN_DEBUG_MSG("glWinCreateContextReal (pWin %p)\n", pWin);
-
- if (pWin == NULL)
- {
- GLWIN_DEBUG_MSG("Deferring until window is created\n");
- return FALSE;
- }
-
- winGetWindowInfo(pWin, &gc->winInfo);
-
- GLWIN_DEBUG_HWND(gc->winInfo.hwnd);
- if (gc->winInfo.hwnd == NULL)
- {
- GLWIN_DEBUG_MSG("Deferring until window is created\n");
- return FALSE;
- }
-
-
- dc = glWinMakeDC(gc);
-
- if (glWinDebugSettings.dumpDC)
- GLWIN_DEBUG_MSG("Got HDC %p\n", dc);
-
- gc->pixelFormat = ChoosePixelFormat(dc, &gc->pfd);
- if (gc->pixelFormat == 0)
- {
- ErrorF("ChoosePixelFormat error: %s\n", glWinErrorMessage());
- ReleaseDC(gc->winInfo.hwnd, dc);
- return FALSE;
- }
-
- ret = SetPixelFormat(dc, gc->pixelFormat, &gc->pfd);
- if (!ret) {
- ErrorF("SetPixelFormat error: %s\n", glWinErrorMessage());
- ReleaseDC(gc->winInfo.hwnd, dc);
- return FALSE;
- }
-
- gc->ctx = wglCreateContext(dc);
- if (gc->ctx == NULL) {
- ErrorF("wglCreateContext error: %s\n", glWinErrorMessage());
- ReleaseDC(gc->winInfo.hwnd, dc);
- return FALSE;
- }
-
- GLWIN_DEBUG_MSG("glWinCreateContextReal (ctx %p)\n", gc->ctx);
-
- if (!wglMakeCurrent(dc, gc->ctx)) {
- ErrorF("glMakeCurrent error: %s\n", glWinErrorMessage());
- ReleaseDC(gc->winInfo.hwnd, dc);
- return FALSE;
- }
-
- ReleaseDC(gc->winInfo.hwnd, dc);
-
- return TRUE;
-}
-
-static void attach(__GLcontext *gc, __GLdrawablePrivate *glPriv)
-{
- __GLXdrawablePrivate *glxPriv = (__GLXdrawablePrivate *)glPriv->other;
-
- GLWIN_DEBUG_MSG("attach (ctx %p)\n", gc->ctx);
-
- if (gc->isAttached)
- {
- ErrorF("called attach on an attached context\n");
- return;
- }
-
- if (glxPriv->type == DRAWABLE_WINDOW)
- {
- WindowPtr pWin = (WindowPtr) glxPriv->pDraw;
- if (pWin == NULL)
- {
- GLWIN_DEBUG_MSG("Deferring ChoosePixelFormat until window is created\n");
- } else
- {
- if (glWinCreateContextReal(gc, pWin))
- {
- gc->isAttached = TRUE;
- GLWIN_DEBUG_MSG("attached\n");
- }
- }
- }
-}
-
-static GLboolean glWinLoseCurrent(__GLcontext *gc)
-{
- GLWIN_TRACE_MSG("glWinLoseCurrent (ctx %p)\n", gc->ctx);
-
- __glXLastContext = NULL; /* Mesa does this; why? */
-
- return GL_TRUE;
-}
-
-/* Context manipulation; return GL_FALSE on failure */
-static GLboolean glWinDestroyContext(__GLcontext *gc)
-{
- GLWIN_DEBUG_MSG("glWinDestroyContext (ctx %p)\n", gc->ctx);
-
- if (gc != NULL)
- {
- if (gc->isAttached)
- unattach(gc);
- if (gc->dc != NULL)
- DeleteDC(gc->dc);
- free(gc);
- }
-
- return GL_TRUE;
-}
-
-static GLboolean glWinMakeCurrent(__GLcontext *gc)
-{
- __GLdrawablePrivate *glPriv = gc->interface.imports.getDrawablePrivate(gc);
- BOOL ret;
- HDC dc;
-
- GLWIN_TRACE_MSG(" (ctx %p)\n", gc->ctx);
-
- if (!gc->isAttached)
- attach(gc, glPriv);
-
- if (gc->ctx == NULL) {
- ErrorF("Context is NULL\n");
- return GL_FALSE;
- }
-
- dc = glWinMakeDC(gc);
- ret = wglMakeCurrent(dc, gc->ctx);
- if (!ret)
- ErrorF("glMakeCurrent error: %s\n", glWinErrorMessage());
- ReleaseDC(gc->winInfo.hwnd, dc);
-
- return ret?GL_TRUE:GL_FALSE;
-}
-
-static GLboolean glWinShareContext(__GLcontext *gc, __GLcontext *gcShare)
-{
- GLWIN_DEBUG_MSG("glWinShareContext unimplemented\n");
-
- return GL_TRUE;
-}
-
-static GLboolean glWinCopyContext(__GLcontext *dst, const __GLcontext *src,
- GLuint mask)
-{
- BOOL ret;
-
- GLWIN_DEBUG_MSG("glWinCopyContext\n");
-
- ret = wglCopyContext(src->ctx, dst->ctx, mask);
- if (!ret)
- {
- ErrorF("wglCopyContext error: %s\n", glWinErrorMessage());
- return GL_FALSE;
- }
-
- return GL_TRUE;
-}
-
-static GLboolean glWinForceCurrent(__GLcontext *gc)
-{
- GLWIN_TRACE_MSG(" (ctx %p)\n", gc->ctx);
-
- return GL_TRUE;
-}
-
-/* Drawing surface notification callbacks */
-
-static GLboolean glWinNotifyResize(__GLcontext *gc)
-{
- GLWIN_DEBUG_MSG("unimplemented glWinNotifyResize");
- return GL_TRUE;
-}
-
-static void glWinNotifyDestroy(__GLcontext *gc)
-{
- GLWIN_DEBUG_MSG("unimplemented glWinNotifyDestroy");
-}
-
-static void glWinNotifySwapBuffers(__GLcontext *gc)
-{
- GLWIN_DEBUG_MSG("unimplemented glWinNotifySwapBuffers");
-}
-
-/* Dispatch table override control for external agents like libGLS */
-static struct __GLdispatchStateRec* glWinDispatchExec(__GLcontext *gc)
-{
- GLWIN_DEBUG_MSG("unimplemented glWinDispatchExec");
- return NULL;
-}
-
-static void glWinBeginDispatchOverride(__GLcontext *gc)
-{
- GLWIN_DEBUG_MSG("unimplemented glWinBeginDispatchOverride");
-}
-
-static void glWinEndDispatchOverride(__GLcontext *gc)
-{
- GLWIN_DEBUG_MSG("unimplemented glWinEndDispatchOverride");
-}
-
-#define DUMP_PFD_FLAG(flag) \
- if (pfd->dwFlags & flag) { \
- ErrorF("%s%s", pipesym, #flag); \
- pipesym = " | "; \
- }
-
-static void pfdOut(const PIXELFORMATDESCRIPTOR *pfd)
-{
- const char *pipesym = ""; /* will be set after first flag dump */
- ErrorF("PIXELFORMATDESCRIPTOR:\n");
- ErrorF("nSize = %u\n", pfd->nSize);
- ErrorF("nVersion = %u\n", pfd->nVersion);
- ErrorF("dwFlags = %lu = {", pfd->dwFlags);
- DUMP_PFD_FLAG(PFD_MAIN_PLANE);
- DUMP_PFD_FLAG(PFD_OVERLAY_PLANE);
- DUMP_PFD_FLAG(PFD_UNDERLAY_PLANE);
- DUMP_PFD_FLAG(PFD_DOUBLEBUFFER);
- DUMP_PFD_FLAG(PFD_STEREO);
- DUMP_PFD_FLAG(PFD_DRAW_TO_WINDOW);
- DUMP_PFD_FLAG(PFD_DRAW_TO_BITMAP);
- DUMP_PFD_FLAG(PFD_SUPPORT_GDI);
- DUMP_PFD_FLAG(PFD_SUPPORT_OPENGL);
- DUMP_PFD_FLAG(PFD_GENERIC_FORMAT);
- DUMP_PFD_FLAG(PFD_NEED_PALETTE);
- DUMP_PFD_FLAG(PFD_NEED_SYSTEM_PALETTE);
- DUMP_PFD_FLAG(PFD_SWAP_EXCHANGE);
- DUMP_PFD_FLAG(PFD_SWAP_COPY);
- DUMP_PFD_FLAG(PFD_SWAP_LAYER_BUFFERS);
- DUMP_PFD_FLAG(PFD_GENERIC_ACCELERATED);
- DUMP_PFD_FLAG(PFD_DEPTH_DONTCARE);
- DUMP_PFD_FLAG(PFD_DOUBLEBUFFER_DONTCARE);
- DUMP_PFD_FLAG(PFD_STEREO_DONTCARE);
- ErrorF("}\n");
-
- ErrorF("iPixelType = %hu = %s\n", pfd->iPixelType,
- (pfd->iPixelType == PFD_TYPE_RGBA ? "PFD_TYPE_RGBA" : "PFD_TYPE_COLORINDEX"));
- ErrorF("cColorBits = %hhu\n", pfd->cColorBits);
- ErrorF("cRedBits = %hhu\n", pfd->cRedBits);
- ErrorF("cRedShift = %hhu\n", pfd->cRedShift);
- ErrorF("cGreenBits = %hhu\n", pfd->cGreenBits);
- ErrorF("cGreenShift = %hhu\n", pfd->cGreenShift);
- ErrorF("cBlueBits = %hhu\n", pfd->cBlueBits);
- ErrorF("cBlueShift = %hhu\n", pfd->cBlueShift);
- ErrorF("cAlphaBits = %hhu\n", pfd->cAlphaBits);
- ErrorF("cAlphaShift = %hhu\n", pfd->cAlphaShift);
- ErrorF("cAccumBits = %hhu\n", pfd->cAccumBits);
- ErrorF("cAccumRedBits = %hhu\n", pfd->cAccumRedBits);
- ErrorF("cAccumGreenBits = %hhu\n", pfd->cAccumGreenBits);
- ErrorF("cAccumBlueBits = %hhu\n", pfd->cAccumBlueBits);
- ErrorF("cAccumAlphaBits = %hhu\n", pfd->cAccumAlphaBits);
- ErrorF("cDepthBits = %hhu\n", pfd->cDepthBits);
- ErrorF("cStencilBits = %hhu\n", pfd->cStencilBits);
- ErrorF("cAuxBuffers = %hhu\n", pfd->cAuxBuffers);
- ErrorF("iLayerType = %hhu\n", pfd->iLayerType);
- ErrorF("bReserved = %hhu\n", pfd->bReserved);
- ErrorF("dwLayerMask = %lu\n", pfd->dwLayerMask);
- ErrorF("dwVisibleMask = %lu\n", pfd->dwVisibleMask);
- ErrorF("dwDamageMask = %lu\n", pfd->dwDamageMask);
- ErrorF("\n");
-}
-
-static int makeFormat(__GLcontextModes *mode, PIXELFORMATDESCRIPTOR *pfdret)
-{
- PIXELFORMATDESCRIPTOR pfd = {
- sizeof(PIXELFORMATDESCRIPTOR), /* size of this pfd */
- 1, /* version number */
- PFD_DRAW_TO_WINDOW | /* support window */
- PFD_SUPPORT_OPENGL, /* support OpenGL */
- PFD_TYPE_RGBA, /* RGBA type */
- 24, /* 24-bit color depth */
- 0, 0, 0, 0, 0, 0, /* color bits ignored */
- 0, /* no alpha buffer */
- 0, /* shift bit ignored */
- 0, /* no accumulation buffer */
- 0, 0, 0, 0, /* accum bits ignored */
- 0, /* 32-bit z-buffer */
- 0, /* no stencil buffer */
- 0, /* no auxiliary buffer */
- PFD_MAIN_PLANE, /* main layer */
- 0, /* reserved */
- 0, 0, 0 /* layer masks ignored */
- }, *result = &pfd;
-
- /* disable anything but rgba. must get rgba to work first */
- if (!mode->rgbMode)
- return -1;
-
- if (mode->stereoMode) {
- result->dwFlags |= PFD_STEREO;
- }
- if (mode->doubleBufferMode) {
- result->dwFlags |= PFD_DOUBLEBUFFER;
- }
-
- if (mode->colorIndexMode) {
- /* ignored, see above */
- result->iPixelType = PFD_TYPE_COLORINDEX;
- result->cColorBits = mode->redBits + mode->greenBits + mode->blueBits;
- result->cRedBits = mode->redBits;
- result->cRedShift = 0; /* FIXME */
- result->cGreenBits = mode->greenBits;
- result->cGreenShift = 0; /* FIXME */
- result->cBlueBits = mode->blueBits;
- result->cBlueShift = 0; /* FIXME */
- result->cAlphaBits = mode->alphaBits;
- result->cAlphaShift = 0; /* FIXME */
- }
-
- if (mode->rgbMode) {
- result->iPixelType = PFD_TYPE_RGBA;
- result->cColorBits = mode->redBits + mode->greenBits + mode->blueBits;
- result->cRedBits = mode->redBits;
- result->cRedShift = 0; /* FIXME */
- result->cGreenBits = mode->greenBits;
- result->cGreenShift = 0; /* FIXME */
- result->cBlueBits = mode->blueBits;
- result->cBlueShift = 0; /* FIXME */
- result->cAlphaBits = mode->alphaBits;
- result->cAlphaShift = 0; /* FIXME */
- }
-
- if (mode->haveAccumBuffer) {
- result->cAccumBits = mode->accumRedBits + mode->accumGreenBits
- + mode->accumBlueBits + mode->accumAlphaBits;
- result->cAccumRedBits = mode->accumRedBits;
- result->cAccumGreenBits = mode->accumGreenBits;
- result->cAccumBlueBits = mode->accumBlueBits;
- result->cAccumAlphaBits = mode->accumAlphaBits;
- }
-
- if (mode->haveDepthBuffer) {
- result->cDepthBits = mode->depthBits;
- }
- if (mode->haveStencilBuffer) {
- result->cStencilBits = mode->stencilBits;
- }
-
- /* result->cAuxBuffers = mode->numAuxBuffers; */
-
- /* mode->level ignored */
-
- /* mode->pixmapMode ? */
-
- *pfdret = pfd;
-
- return 0;
-}
-
-static __GLinterface *glWinCreateContext(__GLimports *imports,
- __GLcontextModes *mode,
- __GLinterface *shareGC)
-{
- __GLcontext *result;
-
- GLWIN_DEBUG_MSG("glWinCreateContext\n");
-
- result = (__GLcontext *)calloc(1, sizeof(__GLcontext));
- if (!result)
- return NULL;
-
- result->interface.imports = *imports;
- result->interface.exports = glWinExports;
-
- if (makeFormat(mode, &result->pfd))
- {
- ErrorF("makeFormat failed\n");
- free(result);
- return NULL;
- }
-
- if (glWinDebugSettings.dumpPFD)
- pfdOut(&result->pfd);
-
- GLWIN_DEBUG_MSG("glWinCreateContext done\n");
- return (__GLinterface *)result;
-}
-
-Bool
-glWinRealizeWindow(WindowPtr pWin)
-{
- /* If this window has GL contexts, tell them to reattach */
- /* reattaching is bad: display lists and parameters get lost */
- Bool result;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- glWinScreenRec *screenPriv = &glWinScreens[pScreen->myNum];
- __GLXdrawablePrivate *glxPriv;
-
- GLWIN_DEBUG_MSG("glWinRealizeWindow\n");
-
- /* Allow the window to be created (RootlessRealizeWindow is inside our wrap) */
- pScreen->RealizeWindow = screenPriv->RealizeWindow;
- result = pScreen->RealizeWindow(pWin);
- pScreen->RealizeWindow = glWinRealizeWindow;
-
- /* Re-attach this window's GL contexts, if any. */
- glxPriv = __glXFindDrawablePrivate(pWin->drawable.id);
- if (glxPriv) {
- __GLXcontext *gx;
- __GLcontext *gc;
- __GLdrawablePrivate *glPriv = &glxPriv->glPriv;
- GLWIN_DEBUG_MSG("glWinRealizeWindow is GL drawable!\n");
-
- /* GL contexts bound to this window for drawing */
- for (gx = glxPriv->drawGlxc; gx != NULL; gx = gx->next) {
- gc = (__GLcontext *)gx->gc;
- if (gc->isAttached)
-#if 1
- {
- GLWIN_DEBUG_MSG("context is already bound! Adjusting HWND.\n");
- glWinAdjustHWND(gc, pWin);
- continue;
- }
-#else
- unattach(gc);
-#endif
- attach(gc, glPriv);
- }
-
- /* GL contexts bound to this window for reading */
- for (gx = glxPriv->readGlxc; gx != NULL; gx = gx->next) {
- gc = (__GLcontext *)gx->gc;
- if (gc->isAttached)
-#if 1
- {
- GLWIN_DEBUG_MSG("context is already bound! Adjusting HWND.\n");
- glWinAdjustHWND(gc, pWin);
- continue;
- }
-#else
- unattach(gc);
-#endif
- attach(gc, glPriv);
- }
- }
-
- return result;
-}
-
-
-void
-glWinCopyWindow(WindowPtr pWindow, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- glWinScreenRec *screenPriv = &glWinScreens[pScreen->myNum];
- __GLXdrawablePrivate *glxPriv;
-
- GLWIN_TRACE_MSG(" (pWindow %p)\n", pWindow);
-
- /* Check if the window is attached and discard any drawing request */
- glxPriv = __glXFindDrawablePrivate(pWindow->drawable.id);
- if (glxPriv) {
- __GLXcontext *gx;
-
- /* GL contexts bound to this window for drawing */
- for (gx = glxPriv->drawGlxc; gx != NULL; gx = gx->next) {
-/*
- GLWIN_DEBUG_MSG("glWinCopyWindow - calling glDrawBuffer\n");
- glDrawBuffer(GL_FRONT);
- */
-
- return;
- }
-
- /* GL contexts bound to this window for reading */
- for (gx = glxPriv->readGlxc; gx != NULL; gx = gx->next) {
- return;
- }
- }
-
- GLWIN_DEBUG_MSG("glWinCopyWindow - passing to hw layer\n");
-
- pScreen->CopyWindow = screenPriv->CopyWindow;
- pScreen->CopyWindow(pWindow, ptOldOrg, prgnSrc);
- pScreen->CopyWindow = glWinCopyWindow;
-}
-
-Bool
-glWinUnrealizeWindow(WindowPtr pWin)
-{
- /* If this window has GL contexts, tell them to unattach */
- Bool result;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- glWinScreenRec *screenPriv = &glWinScreens[pScreen->myNum];
- __GLXdrawablePrivate *glxPriv;
-
- GLWIN_DEBUG_MSG("glWinUnrealizeWindow\n");
-
- /* The Aqua window may have already been destroyed (windows
- * are unrealized from top down)
- */
-
- /* Unattach this window's GL contexts, if any. */
- glxPriv = __glXFindDrawablePrivate(pWin->drawable.id);
- if (glxPriv) {
- __GLXcontext *gx;
- __GLcontext *gc;
- GLWIN_DEBUG_MSG("glWinUnealizeWindow is GL drawable!\n");
-
- /* GL contexts bound to this window for drawing */
- for (gx = glxPriv->drawGlxc; gx != NULL; gx = gx->next) {
- gc = (__GLcontext *)gx->gc;
- unattach(gc);
- }
-
- /* GL contexts bound to this window for reading */
- for (gx = glxPriv->readGlxc; gx != NULL; gx = gx->next) {
- gc = (__GLcontext *)gx->gc;
- unattach(gc);
- }
- }
-
- pScreen->UnrealizeWindow = screenPriv->UnrealizeWindow;
- result = pScreen->UnrealizeWindow(pWin);
- pScreen->UnrealizeWindow = glWinUnrealizeWindow;
-
- return result;
-}
-
-
-/*
- * In the case the driver has no GLX visuals we'll use these.
- * [0] = RGB, double buffered
- * [1] = RGB, double buffered, stencil, accum
- */
-/* Originally copied from Mesa */
-
-static int numConfigs = 0;
-static __GLXvisualConfig *visualConfigs = NULL;
-static void **visualPrivates = NULL;
-
-#define NUM_FALLBACK_CONFIGS 2
-static __GLXvisualConfig FallbackConfigs[NUM_FALLBACK_CONFIGS] = {
- {
- -1, /* vid */
- -1, /* class */
- True, /* rgba */
- -1, -1, -1, 0, /* rgba sizes */
- -1, -1, -1, 0, /* rgba masks */
- 0, 0, 0, 0, /* rgba accum sizes */
- True, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 0, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE_EXT, /* visualRating */
- 0, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
- },
- {
- -1, /* vid */
- -1, /* class */
- True, /* rgba */
- -1, -1, -1, 0, /* rgba sizes */
- -1, -1, -1, 0, /* rgba masks */
- 16, 16, 16, 0, /* rgba accum sizes */
- True, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 8, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE_EXT, /* visualRating */
- 0, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
- }
-};
-
-static __GLXvisualConfig NullConfig = {
- -1, /* vid */
- -1, /* class */
- False, /* rgba */
- -1, -1, -1, 0, /* rgba sizes */
- -1, -1, -1, 0, /* rgba masks */
- 0, 0, 0, 0, /* rgba accum sizes */
- False, /* doubleBuffer */
- False, /* stereo */
- -1, /* bufferSize */
- 16, /* depthSize */
- 0, /* stencilSize */
- 0, /* auxBuffers */
- 0, /* level */
- GLX_NONE_EXT, /* visualRating */
- 0, /* transparentPixel */
- 0, 0, 0, 0, /* transparent rgba color (floats scaled to ints) */
- 0 /* transparentIndex */
-};
-
-static inline int count_bits(uint32_t x)
-{
- x = x - ((x >> 1) & 0x55555555);
- x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
- x = (x + (x >> 4)) & 0x0f0f0f0f;
- x = x + (x >> 8);
- x = x + (x >> 16);
- return x & 63;
-}
-
-/* Mostly copied from Mesa's xf86glx.c */
-static Bool init_visuals(int *nvisualp, VisualPtr *visualp,
- VisualID *defaultVisp,
- int ndepth, DepthPtr pdepth,
- int rootDepth)
-{
- int numRGBconfigs;
- int numCIconfigs;
- int numVisuals = *nvisualp;
- int numNewVisuals;
- int numNewConfigs;
- VisualPtr pVisual = *visualp;
- VisualPtr pVisualNew = NULL;
- VisualID *orig_vid = NULL;
- __GLcontextModes *modes = NULL;
- __GLXvisualConfig *pNewVisualConfigs = NULL;
- void **glXVisualPriv;
- void **pNewVisualPriv;
- int found_default;
- int i, j, k;
-
- GLWIN_DEBUG_MSG("init_visuals\n");
-
- if (numConfigs > 0)
- numNewConfigs = numConfigs;
- else
- numNewConfigs = NUM_FALLBACK_CONFIGS;
-
- /* Alloc space for the list of new GLX visuals */
- pNewVisualConfigs = (__GLXvisualConfig *)
- __glXMalloc(numNewConfigs * sizeof(__GLXvisualConfig));
- if (!pNewVisualConfigs) {
- return FALSE;
- }
-
- /* Alloc space for the list of new GLX visual privates */
- pNewVisualPriv = (void **) __glXMalloc(numNewConfigs * sizeof(void *));
- if (!pNewVisualPriv) {
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /*
- ** If SetVisualConfigs was not called, then use default GLX
- ** visual configs.
- */
- if (numConfigs == 0) {
- memcpy(pNewVisualConfigs, FallbackConfigs,
- NUM_FALLBACK_CONFIGS * sizeof(__GLXvisualConfig));
- memset(pNewVisualPriv, 0, NUM_FALLBACK_CONFIGS * sizeof(void *));
- }
- else {
- /* copy driver's visual config info */
- for (i = 0; i < numConfigs; i++) {
- pNewVisualConfigs[i] = visualConfigs[i];
- pNewVisualPriv[i] = visualPrivates[i];
- }
- }
-
- /* Count the number of RGB and CI visual configs */
- numRGBconfigs = 0;
- numCIconfigs = 0;
- for (i = 0; i < numNewConfigs; i++) {
- if (pNewVisualConfigs[i].rgba)
- numRGBconfigs++;
- else
- numCIconfigs++;
- }
-
- /* Count the total number of visuals to compute */
- numNewVisuals = 0;
- for (i = 0; i < numVisuals; i++) {
- int count;
-
- count = ((pVisual[i].class == TrueColor
- || pVisual[i].class == DirectColor)
- ? numRGBconfigs : numCIconfigs);
- if (count == 0)
- count = 1; /* preserve the existing visual */
-
- numNewVisuals += count;
- }
-
- /* Reset variables for use with the next screen/driver's visual configs */
- visualConfigs = NULL;
- numConfigs = 0;
-
- /* Alloc temp space for the list of orig VisualIDs for each new visual */
- orig_vid = (VisualID *)__glXMalloc(numNewVisuals * sizeof(VisualID));
- if (!orig_vid) {
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Alloc space for the list of glXVisuals */
- modes = _gl_context_modes_create(numNewVisuals, sizeof(__GLcontextModes));
- if (modes == NULL) {
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Alloc space for the list of glXVisualPrivates */
- glXVisualPriv = (void **)__glXMalloc(numNewVisuals * sizeof(void *));
- if (!glXVisualPriv) {
- _gl_context_modes_destroy( modes );
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Alloc space for the new list of the X server's visuals */
- pVisualNew = (VisualPtr)__glXMalloc(numNewVisuals * sizeof(VisualRec));
- if (!pVisualNew) {
- __glXFree(glXVisualPriv);
- _gl_context_modes_destroy( modes );
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Initialize the new visuals */
- found_default = FALSE;
- glWinScreens[screenInfo.numScreens-1].modes = modes;
- for (i = j = 0; i < numVisuals; i++) {
- int is_rgb = (pVisual[i].class == TrueColor ||
- pVisual[i].class == DirectColor);
-
- if (!is_rgb)
- {
- /* We don't support non-rgb visuals for GL. But we don't
- want to remove them either, so just pass them through
- with null glX configs */
-
- pVisualNew[j] = pVisual[i];
- pVisualNew[j].vid = FakeClientID(0);
-
- /* Check for the default visual */
- if (!found_default && pVisual[i].vid == *defaultVisp) {
- *defaultVisp = pVisualNew[j].vid;
- found_default = TRUE;
- }
-
- /* Save the old VisualID */
- orig_vid[j] = pVisual[i].vid;
-
- /* Initialize the glXVisual */
- _gl_copy_visual_to_context_mode( modes, & NullConfig );
- modes->visualID = pVisualNew[j].vid;
-
- j++;
-
- continue;
- }
-
- for (k = 0; k < numNewConfigs; k++) {
- if (pNewVisualConfigs[k].rgba != is_rgb)
- continue;
-
- assert( modes != NULL );
-
- /* Initialize the new visual */
- pVisualNew[j] = pVisual[i];
- pVisualNew[j].vid = FakeClientID(0);
-
- /* Check for the default visual */
- if (!found_default && pVisual[i].vid == *defaultVisp) {
- *defaultVisp = pVisualNew[j].vid;
- found_default = TRUE;
- }
-
- /* Save the old VisualID */
- orig_vid[j] = pVisual[i].vid;
-
- /* Initialize the glXVisual */
- _gl_copy_visual_to_context_mode( modes, & pNewVisualConfigs[k] );
- modes->visualID = pVisualNew[j].vid;
-
- /*
- * If the class is -1, then assume the X visual information
- * is identical to what GLX needs, and take them from the X
- * visual. NOTE: if class != -1, then all other fields MUST
- * be initialized.
- */
- if (modes->visualType == GLX_NONE) {
- modes->visualType = _gl_convert_from_x_visual_type( pVisual[i].class );
- modes->redBits = count_bits(pVisual[i].redMask);
- modes->greenBits = count_bits(pVisual[i].greenMask);
- modes->blueBits = count_bits(pVisual[i].blueMask);
- modes->alphaBits = modes->alphaBits;
- modes->redMask = pVisual[i].redMask;
- modes->greenMask = pVisual[i].greenMask;
- modes->blueMask = pVisual[i].blueMask;
- modes->alphaMask = modes->alphaMask;
- modes->rgbBits = (is_rgb)
- ? (modes->redBits + modes->greenBits +
- modes->blueBits + modes->alphaBits)
- : rootDepth;
- }
-
- /* Save the device-dependent private for this visual */
- glXVisualPriv[j] = pNewVisualPriv[k];
-
- j++;
- modes = modes->next;
- }
- }
-
- assert(j <= numNewVisuals);
-
- /* Save the GLX visuals in the screen structure */
- glWinScreens[screenInfo.numScreens-1].num_vis = numNewVisuals;
- glWinScreens[screenInfo.numScreens-1].priv = glXVisualPriv;
-
- /* Set up depth's VisualIDs */
- for (i = 0; i < ndepth; i++) {
- int numVids = 0;
- VisualID *pVids = NULL;
- int k, n = 0;
-
- /* Count the new number of VisualIDs at this depth */
- for (j = 0; j < pdepth[i].numVids; j++)
- for (k = 0; k < numNewVisuals; k++)
- if (pdepth[i].vids[j] == orig_vid[k])
- numVids++;
-
- /* Allocate a new list of VisualIDs for this depth */
- pVids = (VisualID *)__glXMalloc(numVids * sizeof(VisualID));
-
- /* Initialize the new list of VisualIDs for this depth */
- for (j = 0; j < pdepth[i].numVids; j++)
- for (k = 0; k < numNewVisuals; k++)
- if (pdepth[i].vids[j] == orig_vid[k])
- pVids[n++] = pVisualNew[k].vid;
-
- /* Update this depth's list of VisualIDs */
- __glXFree(pdepth[i].vids);
- pdepth[i].vids = pVids;
- pdepth[i].numVids = numVids;
- }
-
- /* Update the X server's visuals */
- *nvisualp = numNewVisuals;
- *visualp = pVisualNew;
-
- /* Free the old list of the X server's visuals */
- __glXFree(pVisual);
-
- /* Clean up temporary allocations */
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
-
- /* Free the private list created by DDX HW driver */
- if (visualPrivates)
- xfree(visualPrivates);
- visualPrivates = NULL;
-
- return TRUE;
-}
-
-
-static void fixup_visuals(int screen)
-{
- ScreenPtr pScreen = screenInfo.screens[screen];
- glWinScreenRec *pScr = &glWinScreens[screen];
- __GLcontextModes *modes;
- int j;
-
- GLWIN_DEBUG_MSG("fixup_visuals\n");
-
- for (modes = pScr->modes; modes != NULL; modes = modes->next ) {
- const int vis_class = _gl_convert_to_x_visual_type( modes->visualType );
- const int nplanes = (modes->rgbBits - modes->alphaBits);
- VisualPtr pVis = pScreen->visuals;
-
- /* Find a visual that matches the GLX visual's class and size */
- for (j = 0; j < pScreen->numVisuals; j++) {
- if (pVis[j].class == vis_class &&
- pVis[j].nplanes == nplanes) {
-
- /* Fixup the masks */
- modes->redMask = pVis[j].redMask;
- modes->greenMask = pVis[j].greenMask;
- modes->blueMask = pVis[j].blueMask;
-
- /* Recalc the sizes */
- modes->redBits = count_bits(modes->redMask);
- modes->greenBits = count_bits(modes->greenMask);
- modes->blueBits = count_bits(modes->blueMask);
- }
- }
- }
-}
-
-static void init_screen_visuals(int screen)
-{
- ScreenPtr pScreen = screenInfo.screens[screen];
- __GLcontextModes *modes;
- int *used;
- int i, j;
-
- GLWIN_DEBUG_MSG("init_screen_visuals\n");
-
- used = (int *)__glXMalloc(pScreen->numVisuals * sizeof(int));
- __glXMemset(used, 0, pScreen->numVisuals * sizeof(int));
-
- i = 0;
- for ( modes = glWinScreens[screen].modes
- ; modes != NULL
- ; modes = modes->next) {
- const int vis_class = _gl_convert_to_x_visual_type( modes->visualType );
- const int nplanes = (modes->rgbBits - modes->alphaBits);
- const VisualPtr pVis = pScreen->visuals;
-
- for (j = 0; j < pScreen->numVisuals; j++) {
-
- if (pVis[j].class == vis_class &&
- pVis[j].nplanes == nplanes &&
- pVis[j].redMask == modes->redMask &&
- pVis[j].greenMask == modes->greenMask &&
- pVis[j].blueMask == modes->blueMask &&
- !used[j]) {
-
-#if 0
- /* Create the XMesa visual */
- pXMesaVisual[i] =
- XMesaCreateVisual(pScreen,
- pVis,
- modes->rgbMode,
- (modes->alphaBits > 0),
- modes->doubleBufferMode,
- modes->stereoMode,
- GL_TRUE, /* ximage_flag */
- modes->depthBits,
- modes->stencilBits,
- modes->accumRedBits,
- modes->accumGreenBits,
- modes->accumBlueBits,
- modes->accumAlphaBits,
- modes->samples,
- modes->level,
- modes->visualRating);
-#endif
-
- /* Set the VisualID */
- modes->visualID = pVis[j].vid;
-
- /* Mark this visual used */
- used[j] = 1;
- break;
- }
- }
-
- if ( j == pScreen->numVisuals ) {
- ErrorF("No matching visual for __GLcontextMode with "
- "visual class = %d (%d), nplanes = %u\n",
- vis_class,
- modes->visualType,
- (modes->rgbBits - modes->alphaBits) );
- }
- else if ( modes->visualID == -1 ) {
- FatalError( "Matching visual found, but visualID still -1!\n" );
- }
-
- i++;
-
- }
-
- __glXFree(used);
-
- /* glWinScreens[screen].xm_vis = pXMesaVisual; */
-}
-
-static Bool glWinScreenProbe(int screen)
-{
- ScreenPtr pScreen;
- glWinScreenRec *screenPriv;
-
- GLWIN_DEBUG_MSG("glWinScreenProbe\n");
-
- /*
- * Set up the current screen's visuals.
- */
- __glDDXScreenInfo.modes = glWinScreens[screen].modes;
- __glDDXScreenInfo.pVisualPriv = glWinScreens[screen].priv;
- __glDDXScreenInfo.numVisuals =
- __glDDXScreenInfo.numUsableVisuals = glWinScreens[screen].num_vis;
-
- /*
- * Set the current screen's createContext routine. This could be
- * wrapped by a DDX GLX context creation routine.
- */
- __glDDXScreenInfo.createContext = glWinCreateContext;
-
- /*
- * The ordering of the rgb compenents might have been changed by the
- * driver after mi initialized them.
- */
- fixup_visuals(screen);
-
- /*
- * Find the GLX visuals that are supported by this screen and create
- * XMesa's visuals.
- */
- init_screen_visuals(screen);
-
- /* Wrap RealizeWindow and UnrealizeWindow on this screen */
- pScreen = screenInfo.screens[screen];
- screenPriv = &glWinScreens[screen];
- screenPriv->RealizeWindow = pScreen->RealizeWindow;
- pScreen->RealizeWindow = glWinRealizeWindow;
- screenPriv->UnrealizeWindow = pScreen->UnrealizeWindow;
- pScreen->UnrealizeWindow = glWinUnrealizeWindow;
- screenPriv->CopyWindow = pScreen->CopyWindow;
- pScreen->CopyWindow = glWinCopyWindow;
-
- return TRUE;
-}
-
-static GLboolean glWinSwapBuffers(__GLXdrawablePrivate *glxPriv)
-{
- /* swap buffers on only *one* of the contexts
- * (e.g. the last one for drawing)
- */
- __GLcontext *gc = (__GLcontext *)glxPriv->drawGlxc->gc;
- HDC dc;
- BOOL ret;
-
- GLWIN_TRACE_MSG("glWinSwapBuffers (ctx %p)\n", (gc!=NULL?gc->ctx:NULL));
-
- if (gc != NULL && gc->ctx != NULL)
- {
- dc = glWinMakeDC(gc);
- if (dc == NULL)
- return GL_FALSE;
-
- ret = SwapBuffers(dc);
- if (!ret)
- ErrorF("SwapBuffers failed: %s\n", glWinErrorMessage());
-
- ReleaseDC(gc->winInfo.hwnd, dc);
- if (!ret)
- return GL_FALSE;
- }
-
- return GL_TRUE;
-}
-
-static void glWinDestroyDrawablePrivate(__GLdrawablePrivate *glPriv)
-{
- GLWIN_DEBUG_MSG("glWinDestroyDrawablePrivate\n");
-
- /* It doesn't work to call DRIDestroySurface here, the drawable's
- already gone.. But dri.c notices the window destruction and
- frees the surface itself. */
-
- free(glPriv->private);
- glPriv->private = NULL;
-}
-
-
-static void glWinCreateBuffer(__GLXdrawablePrivate *glxPriv)
-{
- GLWinDrawableRec *winPriv = malloc(sizeof(GLWinDrawableRec));
- __GLdrawablePrivate *glPriv = &glxPriv->glPriv;
-
- /*winPriv->sid = 0; */
- winPriv->pDraw = NULL;
-
- GLWIN_DEBUG_MSG("glWinCreateBuffer\n");
-
- /* replace swapBuffers (original is never called) */
- glxPriv->swapBuffers = glWinSwapBuffers;
-
- /* stash private data */
- glPriv->private = winPriv;
- glPriv->freePrivate = glWinDestroyDrawablePrivate;
-}
-
-static void glWinResetExtension(void)
-{
- GLWIN_DEBUG_MSG("glWinResetExtension\n");
-}
-
-/* based on code in apples/indirect.c which is based on i830_dri.c */
-static void
-glWinInitVisualConfigs(void)
-{
- int lclNumConfigs = 0;
- __GLXvisualConfig *lclVisualConfigs = NULL;
- void **lclVisualPrivates = NULL;
-
- int depth, aux, buffers, stencil, accum;
- int i = 0;
-
- GLWIN_DEBUG_MSG("glWinInitVisualConfigs ");
-
- /* count num configs:
- 2 Z buffer (0, 24 bit)
- 2 AUX buffer (0, 2)
- 2 buffers (single, double)
- 2 stencil (0, 8 bit)
- 2 accum (0, 64 bit)
- = 32 configs */
-
- lclNumConfigs = 2 * 2 * 2 * 2 * 2; /* 32 */
-
- /* alloc */
- lclVisualConfigs = xcalloc(sizeof(__GLXvisualConfig), lclNumConfigs);
- lclVisualPrivates = xcalloc(sizeof(void *), lclNumConfigs);
-
- /* fill in configs */
- if (NULL != lclVisualConfigs) {
- i = 0; /* current buffer */
- for (depth = 0; depth < 2; depth++) {
- for (aux = 0; aux < 2; aux++) {
- for (buffers = 0; buffers < 2; buffers++) {
- for (stencil = 0; stencil < 2; stencil++) {
- for (accum = 0; accum < 2; accum++) {
- lclVisualConfigs[i].vid = -1;
- lclVisualConfigs[i].class = -1;
- lclVisualConfigs[i].rgba = TRUE;
- lclVisualConfigs[i].redSize = -1;
- lclVisualConfigs[i].greenSize = -1;
- lclVisualConfigs[i].blueSize = -1;
- lclVisualConfigs[i].redMask = -1;
- lclVisualConfigs[i].greenMask = -1;
- lclVisualConfigs[i].blueMask = -1;
- lclVisualConfigs[i].alphaMask = 0;
- if (accum) {
- lclVisualConfigs[i].accumRedSize = 16;
- lclVisualConfigs[i].accumGreenSize = 16;
- lclVisualConfigs[i].accumBlueSize = 16;
- lclVisualConfigs[i].accumAlphaSize = 16;
- }
- else {
- lclVisualConfigs[i].accumRedSize = 0;
- lclVisualConfigs[i].accumGreenSize = 0;
- lclVisualConfigs[i].accumBlueSize = 0;
- lclVisualConfigs[i].accumAlphaSize = 0;
- }
- lclVisualConfigs[i].doubleBuffer = buffers ? TRUE : FALSE;
- lclVisualConfigs[i].stereo = FALSE;
- lclVisualConfigs[i].bufferSize = -1;
-
- lclVisualConfigs[i].depthSize = depth? 24 : 0;
- lclVisualConfigs[i].stencilSize = stencil ? 8 : 0;
- lclVisualConfigs[i].auxBuffers = aux ? 2 : 0;
- lclVisualConfigs[i].level = 0;
- lclVisualConfigs[i].visualRating = GLX_NONE_EXT;
- lclVisualConfigs[i].transparentPixel = 0;
- lclVisualConfigs[i].transparentRed = 0;
- lclVisualConfigs[i].transparentGreen = 0;
- lclVisualConfigs[i].transparentBlue = 0;
- lclVisualConfigs[i].transparentAlpha = 0;
- lclVisualConfigs[i].transparentIndex = 0;
- i++;
- }
- }
- }
- }
- }
- }
- if (i != lclNumConfigs)
- GLWIN_DEBUG_MSG("glWinInitVisualConfigs failed to alloc visual configs");
-
- GlxSetVisualConfigs(lclNumConfigs, lclVisualConfigs, lclVisualPrivates);
-}
-
-/* Copied from Mesa */
-static void glWinSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs,
- void **privates)
-{
- GLWIN_DEBUG_MSG("glWinSetVisualConfigs\n");
-
- numConfigs = nconfigs;
- visualConfigs = configs;
- visualPrivates = privates;
-}
-
-/* Copied from Mesa */
-static Bool glWinInitVisuals(VisualPtr *visualp, DepthPtr *depthp,
- int *nvisualp, int *ndepthp,
- int *rootDepthp, VisualID *defaultVisp,
- unsigned long sizes, int bitsPerRGB)
-{
- glWinInitDebugSettings();
-
- GLWIN_DEBUG_MSG("glWinInitVisuals\n");
-
- if (0 == numConfigs) /* if no configs */
- glWinInitVisualConfigs(); /* ensure the visula configs are setup */
-
- /*
- * Setup the visuals supported by this particular screen.
- */
- return init_visuals(nvisualp, visualp, defaultVisp,
- *ndepthp, *depthp, *rootDepthp);
-}
diff --git a/nx-X11/programs/Xserver/XFree86.def b/nx-X11/programs/Xserver/XFree86.def
deleted file mode 100644
index a233c197e..000000000
--- a/nx-X11/programs/Xserver/XFree86.def
+++ /dev/null
@@ -1,5 +0,0 @@
-NAME XFree86 NOTWINDOWCOMPAT
-DESCRIPTION "@#XFREE86:4.4.0#@ $XFree86: xc/programs/Xserver/XFree86.def,v 1.4 2002/05/31 18:45:53 dawes Exp $"
-PROTMODE
-EXETYPE OS2
-
diff --git a/nx-X11/programs/Xserver/Xnest.def b/nx-X11/programs/Xserver/Xnest.def
deleted file mode 100644
index 3bfef9a74..000000000
--- a/nx-X11/programs/Xserver/Xnest.def
+++ /dev/null
@@ -1,4 +0,0 @@
-NAME Xnest WINDOWCOMPAT
-DESCRIPTION "@#XFREE86:4.4.0#@ $XFree86: xc/programs/Xserver/Xnest.def,v 3.4 2003/11/06 03:25:42 dawes Exp $"
-PROTMODE
-EXETYPE OS2
diff --git a/nx-X11/programs/Xserver/Xorg.def b/nx-X11/programs/Xserver/Xorg.def
deleted file mode 100644
index fac275d35..000000000
--- a/nx-X11/programs/Xserver/Xorg.def
+++ /dev/null
@@ -1,5 +0,0 @@
-NAME Xorg NOTWINDOWCOMPAT
-DESCRIPTION "@#XORG:4.4.0#@ $XdotOrg: xc/programs/Xserver/Xorg.def,v 1.2 2004/04/23 18:44:35 eich Exp $"
-PROTMODE
-EXETYPE OS2
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/Imakefile
deleted file mode 100644
index 930cc6711..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/Imakefile
+++ /dev/null
@@ -1,8 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-SUBDIRS = print
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/Imakefile
deleted file mode 100644
index fe224df64..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/Imakefile
+++ /dev/null
@@ -1,23 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2003/11/20 04:22:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-SUBDIRS = attributes ddx-config models
-
-#if HasGhostScript
-all:: Xprinters.ghostscript
-
-# Enable the "xp_pdf_spooldir_tmp_Xprintjobs" printer if we have GS
-Xprinters.ghostscript: Xprinters
- sed <Xprinters "s/#Printer xp_pdf_spooldir_tmp_Xprintjobs/Printer xp_pdf_spooldir_tmp_Xprintjobs/" >Xprinters.ghostscript
-
-clean::
- $(RM) Xprinters.ghostscript
-
-InstallNamedNonExec(Xprinters.ghostscript,Xprinters,$(XPRINTDIR)/C/print)
-#else
-InstallNamedNonExec(Xprinters,Xprinters,$(XPRINTDIR)/C/print)
-#endif /* HasGhostScript */
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/Xprinters b/nx-X11/programs/Xserver/XpConfig/C/print/Xprinters
deleted file mode 100644
index a32c02dc2..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/Xprinters
+++ /dev/null
@@ -1,49 +0,0 @@
-########################################################################
-#
-# $Xorg: Xprinters,v 1.3 2000/08/17 19:48:02 cpqbld Exp $
-#
-# X*printers sample configuration file
-#
-#
-# This file belongs in /usr/lib/X11/X*printers, where the "*" is the
-# display number of the server. For example, if the server is
-# invoked using the command X :0, then the X0printers file is used.
-########################################################################
-
-########################################################################
-# Use lpstat to augment the list of printers managed by the
-# server. (This is the default behavior if the X*printers file does
-# not exist, or if an "Augment_Printer_List" line is not specified.)
-########################################################################
-#Augment_Printer_List %(default)%
-
-########################################################################
-# Use the specified command pipeline to augment the list of printers
-# managed by the server.
-########################################################################
-#Augment_Printer_List lpstat -a | cut -d " " -f 1 # equivalent to default
-
-########################################################################
-# Do not augment the list of printers managed by the server.
-########################################################################
-#Augment_Printer_List %none%
-
-########################################################################
-# Preconfigured entry for the PSspooldir model
-# (which sends jobs to /tmp/Xprintjobs instead to a physical printer)
-########################################################################
-#Printer xp_pdf_spooldir_tmp_Xprintjobs
-Printer xp_ps_spooldir_tmp_Xprintjobs
-
-########################################################################
-# Add individual printers to the list of printers managed by the
-# server. These are aliases, determined by driver name.
-########################################################################
-
-
-# EXAMPLES
-#
-# Printer xppspr
-# Printer xppclpr
-# Printer xppclmonopr
-# Printer xprasterpr
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/attributes/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/attributes/Imakefile
deleted file mode 100644
index e0daf54d2..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/attributes/Imakefile
+++ /dev/null
@@ -1,8 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-
-XPATTRIBUTEDIR = $(XPRINTDIR)/C/print/attributes
-
-InstallNonExecFile(document,$(XPATTRIBUTEDIR))
-InstallNonExecFile(job,$(XPATTRIBUTEDIR))
-InstallNonExecFile(printer,$(XPATTRIBUTEDIR))
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/attributes/document b/nx-X11/programs/Xserver/XpConfig/C/print/attributes/document
deleted file mode 100644
index b1651bd94..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/attributes/document
+++ /dev/null
@@ -1,49 +0,0 @@
-# $Xorg: document,v 1.3 2000/08/17 19:48:03 cpqbld Exp $
-# Document DPA-Object initial attribute values
-
-# Attribute IDs must be qualified by using one of the following
-# (listed in order of precedence):
-#
-# printer-name
-# Set this attribute for a specific printer.
-# Example: "dj_1.plex: duplex"
-#
-# printer-model
-# Set this attribute for all printers of a specific model.
-# Example: "HPDJ1600C.plex: duplex"
-#
-# '*'
-# Set this attribute for all printers.
-# Example: "*.plex: duplex"
-
-
-*content-orientation: portrait
-*copy-count: 1
-*default-medium: iso-a4
-*default-printer-resolution: 600
-
-# "PSspooldir" jobs should always be 300 DPI
-# (to be compatible to DPS-based PostScript viewers such as sdtimage)
-PSspooldir.default-printer-resolution: 300
-
-# "PS2PDFspooldir-GS" jobs should always be 600 DPI
-PS2PDFspooldir-GS.default-printer-resolution: 600
-
-# Some resolution defaults to make applications happy which are too lazy
-# to pick an own default in absence of "default-printer-resolution"
-HPLJ4050-PS.default-printer-resolution: 600
-SPSPARC2.default-printer-resolution: 300
-CANONBJ10E-GS.default-printer-resolution: 360
-CANONC3200-PS.default-printer-resolution: 600
-
-# EXAMPLES
-#
-# *content-orientation: landscape
-# *copy-count: 3
-# *default-input-tray: main
-# *default-medium: iso-a4
-# *default-printer-resolution: 600
-# *document-format: {PCL 5}
-# *plex: simplex
-# *xp-listfonts-modes: xp-list-internal-printer-fonts
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/attributes/job b/nx-X11/programs/Xserver/XpConfig/C/print/attributes/job
deleted file mode 100644
index aa1911dcd..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/attributes/job
+++ /dev/null
@@ -1,25 +0,0 @@
-# $Xorg: job,v 1.3 2000/08/17 19:48:03 cpqbld Exp $
-# Job DPA-Object initial attribute values
-
-# Attribute IDs must be qualified by using one of the following
-# (listed in order of precedence):
-#
-# printer-name
-# Set this attribute for a specific printer.
-# Example: "laser_1.job-priority: 1"
-#
-# printer-model
-# Set this attribute for all printers of a specific model.
-# Example: "HPDJ1600C.job-priority: 1"
-#
-# '*'
-# Set this attribute for all printers.
-# Example: "*.job-priority: 1"
-
-*notification-profile: {}
-
-# EXAMPLES
-#
-# *job-name: Example Job Name
-# *notification-profile: {{event-report-job-completed} electronic-mail}
-# *xp-spooler-command-options: -onb
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/attributes/printer b/nx-X11/programs/Xserver/XpConfig/C/print/attributes/printer
deleted file mode 100644
index 41e13b44b..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/attributes/printer
+++ /dev/null
@@ -1,96 +0,0 @@
-# $Xorg: printer,v 1.3 2000/08/17 19:48:03 cpqbld Exp $
-# Printer DPA-Object initial attribute values
-
-# Attribute IDs must be qualified by using one of the following
-# (listed in order of precedence):
-#
-# printer-name
-# Set this attribute for a specific printer.
-# Example: "dj_1.document-formats-ready: {pcl 5}"
-#
-# printer-model
-# Set this attribute for all printers of a specific model.
-# Example: "HPDJ1600C.document-formats-ready: {pcl 5}"
-#
-# '*'
-# Set this attribute for all printers.
-# Example: "*.document-formats-ready: {pcl 5}"
-
-# Remove this line and replace them with per printer settings
-# if you want to use more than one DDX!!
-*xp-model-identifier: PSdefault
-
-
-# Sample entry for the "PSspooldir" model
-# Just add a printer called "xp_ps_spooldir_tmp_Xprintjobs" to "Xprinters"
-# and you will get an extra printer which files the PostScript jobs
-# in the "/tmp/Xprintjobs/" directory.
-xp_ps_spooldir_tmp_Xprintjobs.xp-model-identifier: PSspooldir
-
-# Sample entry for the "PS2PDFspooldir-GS" model
-# Just add a printer called "xp_pdf_spooldir_tmp_Xprintjobs" to "Xprinters"
-# and you will get an extra printer which convertes the PostScript jobs
-# to PDF using "ps2pdf" and files them into the "/tmp/Xprintjobs/" directory.
-# NOTE: Future versions of Xprint will use the PDF DDX instead directly
-# instead of relying on GhostScript/ps2pdf...
-xp_pdf_spooldir_tmp_Xprintjobs.xp-model-identifier: PS2PDFspooldir-GS
-
-
-# IMPORTANT EXAMPLES
-#
-# The following are examples of how a printer name is bound
-# to a model-config file and ddx driver.
-#
-# Warning: most X-Servers have a hard limit on the number of ddx
-# drivers (ie, screens) they can support at runtime (usually 3 or
-# 4). Whatever the number of printers, they cannot create a
-# dependency for more than the limit on ddx drivers. Assuming
-# "Xprinters" listed all four xp*pr printers below, X-Servers
-# with a limit of 3 would not work.
-#
-# xppspr.xp-model-identifier: HPDJ1600C
-# xppspr.xp-ddx-identifier: XP-POSTSCRIPT
-# xppspr.document-formats-ready: { PostScript 2 }
-#
-# xppclpr.xp-model-identifier: HPDJ1600C
-# xppclpr.xp-ddx-identifier: XP-PCL-COLOR
-# xppclpr.document-formats-ready: { PCL 5 }
-#
-# xppclmonopr.xp-model-identifier: HPDJ1600C
-# xppclmonopr.xp-ddx-identifier: XP-PCL-MONO
-# xppclmonopr.document-formats-ready: { PCL 5 }
-#
-# xprasterpr.xp-model-identifier: HPDJ1600C
-# xprasterpr.xp-ddx-identifier: XP-RASTER
-
-
-# MORE EXAMPLES of items often configured in this file
-#
-# *descriptor: This printer has not been given a name
-# *dt-pdm-command: dtpdm
-# *input-trays-medium: {top na-letter} {bottom iso-a4}
-# *xp-model-identifier: HPDJ1600C
-# *xp-spooler-command: /opt/mystuff/bin/mylp -p %printer-name% -c %copy-count% \
-# -j %job-name% -o %options%
-
-
-# USUALLY SET BY THE ddx driver
-#
-# *content-orientations-supported: portrait landscape reverse-portrait reverse-landscape
-
-
-# USUALLY SET BY THE model-config FILE
-#
-# *document-formats-supported: {PCL 5}
-# *medium-source-sizes-supported: \
-# { top {iso-a4 FALSE {10 200 10 287}} {iso-a5 FALSE {10 138 10 200}} } \
-# { bottom {iso-a4 FALSE {10 200 10 287}} {iso-a5 FALSE {10 138 10 200}} }
-# *plexes-supported: simplex duplex tumble
-# *printer-model: Hewlett-Packard LaserJet IV
-# *printer-resolutions-supported: 300
-# *xp-ddx-identifier: XP-PCL-COLOR
-# *xp-embedded-formats-supported: {PCL 5} {HPGL 2}
-# *xp-listfonts-modes-supported: xp-list-internal-printer-fonts
-# *xp-raw-formats-supported: {PCL 5}
-# *xp-setup-proviso: xp-setup-optional
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/Imakefile
deleted file mode 100644
index 71f7a7817..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/Imakefile
+++ /dev/null
@@ -1,8 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-SUBDIRS = raster
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/raster/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/raster/Imakefile
deleted file mode 100644
index 85950c946..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/raster/Imakefile
+++ /dev/null
@@ -1,6 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-
-XPDDXCONFIGRASTERDIR = $(XPRINTDIR)/C/print/ddx-config/raster
-
-InstallNonExecFile(pcl,$(XPDDXCONFIGRASTERDIR))
-InstallNonExecFile(postscript,$(XPDDXCONFIGRASTERDIR))
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/raster/pcl b/nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/raster/pcl
deleted file mode 100644
index 15d33e7b3..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/raster/pcl
+++ /dev/null
@@ -1,39 +0,0 @@
-# $Xorg: pcl,v 1.3 2000/08/17 19:48:03 cpqbld Exp $
-# This is the file which you should customize to include the printers that
-# will print through the raster driver. The early part of this file
-# specifies some commn useful defaults. You can override them when
-# you list your printers in the second part of this file. This file is
-# an X Resource file. To learn more about this file format, consult
-# the functional specification.
-
-# Note that the reference printer for CDEnext is the HP DeskJet 1600C.
-# This driver may work for other printers, but the reference printer
-# is the only officially supported printer.
-
-
-# DEFAULTS
-# ========
-
-# The attributes below apply to all printers unless the section below
-# specifies something different for the printer.
-
-# Default printer attributes
-# --------------------------
-# Printer attributes control the choices that users will see in the
-# setup dialog for those printers.
-
-# The attributes below apply to all printes unless the section below
-# specifies something different for the printer.
-
-*.media-ready: na-letter-white
-*.descriptor: Printer supported by CDEnext DtPrint System.
-*.printer-model: HPDJ1600C
-
-# Printer Specifics
-
-# Use this section to override the defaults listed above or to override the
-# printer attributes described in the model file.
-# The lines describing "laser" are just a sample to help you get started.
-
-# laser.printer-name: laser
-# laser.spooler-name: laser
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/raster/postscript b/nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/raster/postscript
deleted file mode 100644
index e69de29bb..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/ddx-config/raster/postscript
+++ /dev/null
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONBJ10E-GS/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONBJ10E-GS/Imakefile
deleted file mode 100644
index 59521467b..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONBJ10E-GS/Imakefile
+++ /dev/null
@@ -1,15 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2003/02/10 05:42:52 gisburn Exp $
-
-XPMODELNAME = CANONBJ10E-GS
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-
-InstallNonExecFile(model-config,$(MODELDIR))
-
-# All GhostScript-printer models should use the printer-builtin fonts from the
-# "GSdefault" printer model (unless they employ more or other builtin fonts)
-# (native PostScript printers should use the fonts from the "PSdefault" model)
-install::
- $(RM) $(DESTDIR)$(MODELDIR)/fonts
- $(LN) ../GSdefault/fonts $(DESTDIR)$(MODELDIR)
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONBJ10E-GS/model-config b/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONBJ10E-GS/model-config
deleted file mode 100644
index 97bfd8196..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONBJ10E-GS/model-config
+++ /dev/null
@@ -1,23 +0,0 @@
-# $Xprint.org: CANONBJ10E-GS model-config,v 1.4 2003/02/10 14:48:04 gisburn Exp $
-
-*content-orientations-supported: portrait landscape
-*descriptor: Canon BJ-10e (GhostScript)
-*document-formats-supported: {POSTSCRIPT 2}
-*input-trays-supported:
-*medium-source-sizes-supported: \
-{ '' \
- {iso-b5 FALSE {6.35 169.65 6.35 243.65}}\
- {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\
- {na-letter FALSE {6.35 209.55 6.35 273.05}}\
- {na-legal FALSE {6.35 209.55 6.35 349.25}}\
-}
-
-*plexes-supported: simplex
-*printer-model: "Canon BJ-10e (GhostScript)"
-*printer-resolutions-supported: 360
-*xp-ddx-identifier: XP-POSTSCRIPT
-*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts
-*xp-embedded-formats-supported: {POSTSCRIPT 2}
-*xp-raw-formats-supported: {POSTSCRIPT 2}
-*xp-setup-proviso: setup-optional
-# EOF.
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONC3200-PS/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONC3200-PS/Imakefile
deleted file mode 100644
index 3bfbcc913..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONC3200-PS/Imakefile
+++ /dev/null
@@ -1,15 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2004/06/24 09:25:02 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-SUBDIRS = fonts
-
-XPMODELNAME = CANONC3200-PS
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-
-InstallNonExecFile(model-config,$(MODELDIR))
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONC3200-PS/fonts/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONC3200-PS/fonts/Imakefile
deleted file mode 100644
index b4e1b3df3..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONC3200-PS/fonts/Imakefile
+++ /dev/null
@@ -1,45 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2004/06/24 09:25:23 gisburn Exp $
-
-XPFONTS = \
- AvantGarde-Book.pmf \
- AvantGarde-BookOblique.pmf \
- AvantGarde-Demi.pmf \
- AvantGarde-DemiOblique.pmf \
- Courier-Bold.pmf \
- Courier-BoldOblique.pmf \
- Courier-Oblique.pmf \
- Courier.pmf \
- Helvetica-Bold.pmf \
- Helvetica-BoldOblique.pmf \
- Helvetica-Oblique.pmf \
- Helvetica.pmf \
- LubalinGraph-Book.pmf \
- LubalinGraph-BookOblique.pmf \
- LubalinGraph-Demi.pmf \
- LubalinGraph-DemiOblique.pmf \
- NewCenturySchlbk-Bold.pmf \
- NewCenturySchlbk-BoldItalic.pmf \
- NewCenturySchlbk-Italic.pmf \
- NewCenturySchlbk-Roman.pmf \
- Souvenir-Demi.pmf \
- Souvenir-DemiItalic.pmf \
- Souvenir-Light.pmf \
- Souvenir-LightItalic.pmf \
- Symbol.pmf \
- Times-Bold.pmf \
- Times-BoldItalic.pmf \
- Times-Italic.pmf \
- Times-Roman.pmf \
- ZapfDingbats.pmf
-
-XPMODELNAME = CANONC3200-PS
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-MODELFONTDIR = $(MODELDIR)/fonts
-
-# We reuse some of the PSdefault fonts
-PARENTMODELFONTDIR=../../PSdefault/fonts
-
-InstallXpMultiplePMFLinks($(XPFONTS),$(PARENTMODELFONTDIR),$(MODELFONTDIR))
-InstallXpPMFFontsDir($(MODELFONTDIR))
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONC3200-PS/model-config b/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONC3200-PS/model-config
deleted file mode 100644
index cdb3f4958..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/CANONC3200-PS/model-config
+++ /dev/null
@@ -1,40 +0,0 @@
-# $Xprint.org: CANONC3200-PS model-config,v 1.1 2004/06/24 09:18:04 gisburn Exp $
-# model-config for the PostScript DDX
-#
-# automatically generated by xpppdtomodelconfig V0.1
-#
-# DO NOT MODIFY THIS FILE!!
-#
-# Attributes supported for this printer model
-*content-orientations-supported: portrait landscape reverse-portrait reverse-landscape
-*descriptor: Canon iR C3200
-*document-formats-supported: {POSTSCRIPT 2}
-*input-trays-supported:
-*medium-source-sizes-supported: \
-{ '' \
- {iso-a4 FALSE {4.002 206 4.002 293}}\
- {na-letter FALSE {4.002 211.9 4.002 275.4}}\
- {na-legal FALSE {4.002 211.9 4.002 351.6}}\
- {iso-a3 FALSE {4.002 293 4.002 416}}\
- {iso-a5 FALSE {4.002 144 4.002 206}}\
- {iso-b4 FALSE {4.002 246 4.002 349}}\
- {iso-b5 FALSE {4.002 172 4.002 246}}\
- {executive FALSE {4.002 180.1 4.002 262.7}}\
- {invoice FALSE {4.002 135.7 4.002 211.9}}\
- {monarch-envelope FALSE {4.002 94.3 4.002 186.5}}\
- {na-number-10-envelop FALSE {4.002 100.8 4.002 237.3}}\
- {iso-c5 FALSE {4.002 158 4.002 225}}\
-}
-
-*plexes-supported: simplex duplex tumble
-*printer-model: "Canon iR C3200"
-*printer-resolutions-supported: 600
-*xp-ddx-identifier: XP-POSTSCRIPT
-*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts
-*xp-embedded-formats-supported: {POSTSCRIPT 2}
-*xp-raw-formats-supported: {POSTSCRIPT 2}
-*xp-setup-proviso: setup-optional
-# NOTE: xp-psddx-* attributes are EXPERIMENTAL for now.
-*xp-psddx-download-fonts: pfa pfb ttf ttc otf otc
-*xp-psddx-download-font-type: pstype1
-# EOF.
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/GSdefault/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/GSdefault/Imakefile
deleted file mode 100644
index 6ac1d0d24..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/GSdefault/Imakefile
+++ /dev/null
@@ -1,14 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-
-XPMODELNAME = GSdefault
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-
-InstallNonExecFile(model-config,$(MODELDIR))
-
-# All PostScript-printer models should use the printer-builtin fonts from the
-# "PSdefault" printer model (unless they employ more or other builtin fonts)
-install::
- $(RM) $(DESTDIR)$(MODELDIR)/fonts
- $(LN) ../PSdefault/fonts $(DESTDIR)$(MODELDIR)
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/GSdefault/model-config b/nx-X11/programs/Xserver/XpConfig/C/print/models/GSdefault/model-config
deleted file mode 100644
index 61dac18b8..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/GSdefault/model-config
+++ /dev/null
@@ -1,137 +0,0 @@
-# $Xprint.org: GSdefault model-config,v 1.1 2003/02/10 14:48:04 gisburn Exp $
-# Generic default model-config for the PostScript DDX when using GhostScript
-# as printer driver
-#
-# DO NOT MODIFY THIS FILE!!
-#
-# If you want to make customisations for your printer create a copy
-# of this printer model.
-# Example (for creating a model config "MYCOMPANYlaserxx"):
-# 1. Create model config dir:
-# % mkdir MYCOMPANYlaserxx
-# 2. Link (or copy) the PMF (printer font metrics) for the
-# printer buildin fonts:
-# % ln -s GSdefault/fonts MYCOMPANYlaserxx/.
-# 3. Copy the model config file:
-# % cp GSdefault/model-config MYCOMPANYlaserxx/.
-# 4. Customize MYCOMPANYlaserxx/model-config to match your needs.
-#
-
-# Attributes supported for this printer model
-# You may want to cut the lists here down to the attributes supported
-# by your printer.
-*content-orientations-supported: portrait landscape reverse-portrait reverse-landscape
-*descriptor: GhostScript default model
-*document-formats-supported: {POSTSCRIPT 2}
-*input-trays-supported:
-*medium-source-sizes-supported: \
-{ '' \
- {na-letter FALSE {6.35 209.55 6.35 273.05}}\
- {na-legal FALSE {6.35 209.55 6.35 349.25}}\
- {executive FALSE {6.35 177.80 6.35 260.35}}\
- {folio FALSE {6.35 204.47 6.35 323.85}}\
- {invoice FALSE {6.35 133.35 6.35 209.55}}\
- {ledger FALSE {6.35 273.05 6.35 425.45}}\
- {quarto FALSE {6.35 209.55 6.35 268.732}}\
- {a FALSE {6.35 209.55 6.35 273.05}}\
- {b FALSE {6.35 273.05 6.35 425.45}}\
- {c FALSE {6.35 425.45 6.35 552.45}}\
- {d FALSE {6.35 552.45 6.35 857.25}}\
- {e FALSE {6.35 857.25 6.35 1111.25}}\
- {na-6x9-envelope FALSE {6.35 146.05 6.35 222.25}}\
- {na-10x15-envelope FALSE {6.35 247.65 6.35 374.65}}\
- {monarch-envelope FALSE {6.35 91.948 6.35 184.15}}\
- {na-10x13-envelope FALSE {6.35 247.65 6.35 323.85}}\
- {na-9x12-envelope FALSE {6.35 222.25 6.35 298.45}}\
- {na-number-10-envelope FALSE {6.35 98.425 6.35 234.95}}\
- {na-7x9-envelope FALSE {6.35 171.45 6.35 222.25}}\
- {na-9x11-envelope FALSE {6.35 222.25 6.35 273.05}}\
- {na-10x14-envelope FALSE {6.35 247.65 6.35 349.25}}\
- {na-number-9-envelope FALSE {6.35 92.075 6.35 219.075}}\
- {iso-a0 FALSE {6.35 834.65 6.35 1182.65}}\
- {iso-a1 FALSE {6.35 587.65 6.35 834.65}}\
- {iso-a2 FALSE {6.35 413.65 6.35 587.65}}\
- {iso-a3 FALSE {6.35 290.65 6.35 413.65}}\
- {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\
- {iso-a5 FALSE {6.35 141.65 6.35 203.65}}\
- {iso-a6 FALSE {6.35 98.65 6.35 141.65}}\
- {iso-a7 FALSE {6.35 67.65 6.35 98.65}}\
- {iso-a8 FALSE {6.35 45.65 6.35 67.65}}\
- {iso-a9 FALSE {6.35 30.65 6.35 45.65}}\
- {iso-a10 FALSE {6.35 19.65 6.35 30.65}}\
- {iso-b1 FALSE {6.35 700.65 6.35 993.65}}\
- {iso-b2 FALSE {6.35 493.65 6.35 700.65}}\
- {iso-b3 FALSE {6.35 346.65 6.35 493.65}}\
- {iso-b4 FALSE {6.35 243.65 6.35 346.65}}\
- {iso-b5 FALSE {6.35 169.65 6.35 243.65}}\
- {iso-b6 FALSE {6.35 118.65 6.35 169.65}}\
- {iso-b7 FALSE {6.35 81.65 6.35 118.65}}\
- {iso-b8 FALSE {6.35 55.65 6.35 81.65}}\
- {iso-b9 FALSE {6.35 37.65 6.35 55.65}}\
- {iso-b10 FALSE {6.35 24.65 6.35 37.65}}\
- {jis-b1 FALSE {6.35 721.65 6.35 1023.65}}\
- {jis-b2 FALSE {6.35 508.65 6.35 721.65}}\
- {jis-b3 FALSE {6.35 357.65 6.35 508.65}}\
- {jis-b4 FALSE {6.35 250.65 6.35 357.65}}\
- {jis-b5 FALSE {6.35 175.65 6.35 250.65}}\
- {jis-b6 FALSE {6.35 121.65 6.35 175.65}}\
- {jis-b7 FALSE {6.35 84.65 6.35 121.65}}\
- {jis-b8 FALSE {6.35 57.65 6.35 84.65}}\
- {jis-b9 FALSE {6.35 38.65 6.35 57.65}}\
- {jis-b10 FALSE {6.35 25.65 6.35 38.65}}\
- {iso-c3 FALSE {6.35 317.65 6.35 451.65}}\
- {iso-c4 FALSE {6.35 222.65 6.35 317.65}}\
- {iso-c5 FALSE {6.35 155.65 6.35 222.65}}\
- {iso-c6 FALSE {6.35 107.65 6.35 155.65}}\
- {iso-designated-long FALSE {6.35 103.65 6.35 213.65}}\
- {hp-2x-postcard FALSE {6.35 141.65 6.35 193.65}}\
- {hp-european-edp FALSE {6.35 298.45 6.35 349.25}}\
- {hp-mini FALSE {6.35 133.35 6.35 209.55}}\
- {hp-postcard FALSE {6.35 93.65 6.35 141.65}}\
- {hp-tabloid FALSE {6.35 273.05 6.35 425.45}}\
- {hp-us-edp FALSE {6.35 273.05 6.35 349.25}}\
- {hp-us-government-legal FALSE {6.35 196.85 6.35 323.85}}\
- {hp-us-government-letter FALSE {6.35 196.85 6.35 247.65}}\
-}
-# If you have more than one tray use the following example:
-# 1. List the supported trays
-#*input-trays-supported: main manual
-# 2. Define each tray and it's paper sizes
-#*medium-source-sizes-supported: \
-#{ main \
-# {na-letter FALSE {6.35 209.55 6.35 273.05}} \
-# {na-legal FALSE {6.35 209.55 6.35 349.25}} \
-# {iso-a4 FALSE {6.35 203.65 6.35 290.65}} \
-#} \
-#{ manual \
-# {iso-a5 FALSE {6.35 141.65 6.35 203.65}} \
-# {iso-c5 FALSE {6.35 155.65 6.35 222.65}} \
-# {iso-designated-long FALSE {6.35 103.65 6.35 213.65}} \
-# {jis-b5 FALSE {6.35 175.65 6.35 250.65}} \
-# {monarch-envelope FALSE {6.35 91.948 6.35 184.15}} \
-# {na-legal FALSE {6.35 209.55 6.35 349.25}} \
-# {na-number-10-envelope FALSE {6.35 98.425 6.35 234.95}} \
-# {executive FALSE {6.35 177.8 6.35 260.35}} \
-# {iso-a3 FALSE {6.35 290.65 6.35 413.65}} \
-# {iso-a0 FALSE {6.35 834.65 6.35 1182.65}} \
-#}
-*plexes-supported: simplex duplex tumble
-*printer-model: "GhostScript default model"
-# 75, 100, 120, 150, 180, 200, 240, 300, 360, 400, 600, 720,
-# 940, 1200 and 2440 are supported DPI values, we limit it here
-# to some common values:
-*printer-resolutions-supported: 300 360 400 600
-*xp-ddx-identifier: XP-POSTSCRIPT
-*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts
-*xp-embedded-formats-supported: {POSTSCRIPT 2}
-*xp-raw-formats-supported: {POSTSCRIPT 2}
-*xp-setup-proviso: setup-optional
-
-# NOTE: xp-psddx-* attributes are EXPERIMENTAL for now.
-# xp-psddx-download-fonts defines which fonts should be downloaded as outlines
-# (valid types are "pfa", "pfb", "ttf", "ttc", "otf", "otc")
-*xp-psddx-download-fonts: pfa pfb ttf ttc otf otc
-# xp-psddx-download-font-type defines which font type is used to download outlines
-# (valid values are "bitmap", "pstype1" and "pstype3")
-*xp-psddx-download-font-type: pstype1
-# EOF.
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/Imakefile
deleted file mode 100644
index 9e8c8e4dc..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/Imakefile
+++ /dev/null
@@ -1,14 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-SUBDIRS = fonts
-
-XPMODELNAME = HPDJ1600C
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-
-InstallNonExecFile(model-config,$(MODELDIR))
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00051.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00051.pmf
deleted file mode 100644
index 09cc489a5..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00051.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00052.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00052.pmf
deleted file mode 100644
index b21a9a2a8..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00052.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00053.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00053.pmf
deleted file mode 100644
index 485b874c5..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00053.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00054.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00054.pmf
deleted file mode 100644
index 524934c71..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00054.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00055.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00055.pmf
deleted file mode 100644
index 2ef9bc52c..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00055.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00056.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00056.pmf
deleted file mode 100644
index 3d69311ef..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00056.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00057.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00057.pmf
deleted file mode 100644
index 3833d4f54..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00057.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00058.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00058.pmf
deleted file mode 100644
index 289a95e5c..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00058.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00059.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00059.pmf
deleted file mode 100644
index a5984bed1..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00059.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00060.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00060.pmf
deleted file mode 100644
index df27cd71e..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00060.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00061.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00061.pmf
deleted file mode 100644
index fb2b5a433..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00061.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00062.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00062.pmf
deleted file mode 100644
index f0e58c435..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00062.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00063.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00063.pmf
deleted file mode 100644
index 8821ff155..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00063.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00064.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00064.pmf
deleted file mode 100644
index e5980fc0e..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00064.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00065.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00065.pmf
deleted file mode 100644
index d9a151d7f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00065.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00066.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00066.pmf
deleted file mode 100644
index d14fca56f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00066.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00067.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00067.pmf
deleted file mode 100644
index 7a341506f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00067.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00068.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00068.pmf
deleted file mode 100644
index c20e39a21..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00068.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00069.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00069.pmf
deleted file mode 100644
index 4a4a35281..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00069.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00070.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00070.pmf
deleted file mode 100644
index 8d97d4339..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00070.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00071.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00071.pmf
deleted file mode 100644
index 19844c9c6..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00071.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00072.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00072.pmf
deleted file mode 100644
index 5415c3f44..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00072.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00073.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00073.pmf
deleted file mode 100644
index 038dfdb46..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00073.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00074.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00074.pmf
deleted file mode 100644
index 382a78575..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00074.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00075.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00075.pmf
deleted file mode 100644
index 1c7edf653..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00075.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00076.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00076.pmf
deleted file mode 100644
index 2f077f40f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00076.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00077.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00077.pmf
deleted file mode 100644
index 1ce190d51..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00077.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00079.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00079.pmf
deleted file mode 100644
index 45d6906ba..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00079.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00080.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00080.pmf
deleted file mode 100644
index b991b5edb..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00080.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00081.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00081.pmf
deleted file mode 100644
index 1935a9f00..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00081.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00082.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00082.pmf
deleted file mode 100644
index 2000dc057..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00082.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00083.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00083.pmf
deleted file mode 100644
index 90f0e45a8..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00083.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00084.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00084.pmf
deleted file mode 100644
index 52ba39b96..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00084.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00085.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00085.pmf
deleted file mode 100644
index f5c9053af..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00085.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00086.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00086.pmf
deleted file mode 100644
index b7586ca61..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00086.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00087.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00087.pmf
deleted file mode 100644
index 82f054999..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00087.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00088.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00088.pmf
deleted file mode 100644
index 591c96b59..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00088.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00089.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00089.pmf
deleted file mode 100644
index c8160954a..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00089.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00090.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00090.pmf
deleted file mode 100644
index 895cfe26a..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00090.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00091.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00091.pmf
deleted file mode 100644
index 3bdcae4ba..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00091.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00092.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00092.pmf
deleted file mode 100644
index a56d47504..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00092.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00093.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00093.pmf
deleted file mode 100644
index c85f3b4de..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00093.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00094.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00094.pmf
deleted file mode 100644
index 875bf1df8..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00094.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/Imakefile
deleted file mode 100644
index 0c899365a..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/Imakefile
+++ /dev/null
@@ -1,57 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-
-XPFONTS = \
- 9nb00051.pmf \
- 9nb00052.pmf \
- 9nb00053.pmf \
- 9nb00054.pmf \
- 9nb00055.pmf \
- 9nb00056.pmf \
- 9nb00057.pmf \
- 9nb00058.pmf \
- 9nb00059.pmf \
- 9nb00060.pmf \
- 9nb00061.pmf \
- 9nb00062.pmf \
- 9nb00063.pmf \
- 9nb00064.pmf \
- 9nb00065.pmf \
- 9nb00066.pmf \
- 9nb00067.pmf \
- 9nb00068.pmf \
- 9nb00069.pmf \
- 9nb00070.pmf \
- 9nb00071.pmf \
- 9nb00072.pmf \
- 9nb00073.pmf \
- 9nb00074.pmf \
- 9nb00075.pmf \
- 9nb00076.pmf \
- 9nb00077.pmf \
- 9nb00079.pmf \
- 9nb00080.pmf \
- 9nb00081.pmf \
- 9nb00082.pmf \
- 9nb00083.pmf \
- 9nb00084.pmf \
- 9nb00085.pmf \
- 9nb00086.pmf \
- 9nb00087.pmf \
- 9nb00088.pmf \
- 9nb00089.pmf \
- 9nb00090.pmf \
- 9nb00091.pmf \
- 9nb00092.pmf \
- 9nb00093.pmf \
- 9nb00094.pmf \
- lpr0ye1a.pmf \
- fonts.alias \
- fonts.dir \
- README
-
-XPMODELNAME = HPDJ1600C
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-MODELFONTDIR = $(MODELDIR)/fonts
-InstallMultipleDest(install,$(XPFONTS),$(MODELFONTDIR))
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/README b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/README
deleted file mode 100644
index cccc2be32..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/README
+++ /dev/null
@@ -1,197 +0,0 @@
-$Xorg: README,v 1.3 2000/08/17 19:48:04 cpqbld Exp $
-
-This directory contains "printer metric files" for the X Print
-Server suitable for the DeskJet 1600C printer. The following
-*.pmf files were generated by the Hewlett-Packard Company.
-
- 9nb00051.pmf
- 9nb00052.pmf
- 9nb00053.pmf
- 9nb00054.pmf
- 9nb00055.pmf
- 9nb00056.pmf
- 9nb00057.pmf
- 9nb00058.pmf
- 9nb00059.pmf
- 9nb00060.pmf
- 9nb00061.pmf
- 9nb00062.pmf
- 9nb00063.pmf
- 9nb00064.pmf
- 9nb00065.pmf
- 9nb00066.pmf
- 9nb00067.pmf
- 9nb00068.pmf
- 9nb00069.pmf
- 9nb00070.pmf
- 9nb00071.pmf
- 9nb00072.pmf
- 9nb00073.pmf
- 9nb00074.pmf
- 9nb00075.pmf
- 9nb00076.pmf
- 9nb00077.pmf
- 9nb00079.pmf
- 9nb00080.pmf
- 9nb00081.pmf
- 9nb00082.pmf
- 9nb00083.pmf
- 9nb00084.pmf
- 9nb00085.pmf
- 9nb00086.pmf
- 9nb00087.pmf
- 9nb00088.pmf
- 9nb00089.pmf
- 9nb00090.pmf
- 9nb00091.pmf
- 9nb00092.pmf
- 9nb00093.pmf
- 9nb00094.pmf
- lpr0ye1a.pmf
-
-For reasons of not supporting iso8859.1 and hp-roman8, the following
-DeskJet 1600C printer fonts were not converted to *.pmf files.
-
- 9nb00078.pmf
- 9nb00095.pmf
- lpr0ylga.pmf
- lpr0ypca.pmf
- lpr0ypda.pmf
- lpr0ypma.pmf
- lpr0yr8a.pmf
-
-Output from the conversion utility is as follows:
-
- Creating iso8859 1 pmf for 9nb00051.tfm as iso8859.1/9nb00051.pmf
- -COMPUGRAPHIC-Albertus-Extra Bold-r-Normal--8782-2500-2540-2540-P-42480-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00052.tfm as iso8859.1/9nb00052.pmf
- -COMPUGRAPHIC-Albertus-Semi Bold-r-Normal--8782-2500-2540-2540-P-37640-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00053.tfm as iso8859.1/9nb00053.pmf
- -COMPUGRAPHIC-Antique Olive-Bold-r-Normal--8782-2500-2540-2540-P-50490-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00054.tfm as iso8859.1/9nb00054.pmf
- -COMPUGRAPHIC-Antique Olive-Medium-i-Normal--8782-2500-2540-2540-P-46140-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00055.tfm as iso8859.1/9nb00055.pmf
- -COMPUGRAPHIC-Antique Olive-Medium-r-Normal--8782-2500-2540-2540-P-46380-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00056.tfm as iso8859.1/9nb00056.pmf
- -Monotype-Arial-Bold-r-Normal--2048-2500-589-589-P-9800-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00057.tfm as iso8859.1/9nb00057.pmf
- -Monotype-Arial-Medium-i-Normal--2048-2500-589-589-P-9040-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00058.tfm as iso8859.1/9nb00058.pmf
- -Monotype-Arial-Bold-i-Normal--2048-2500-589-589-P-9800-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00059.tfm as iso8859.1/9nb00059.pmf
- -Monotype-Arial-Medium-r-Normal--2048-2500-589-589-P-9040-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00060.tfm as iso8859.1/9nb00060.pmf
- -COMPUGRAPHIC-Clarendon-Bold-r-Condensed--8782-2500-2540-2540-P-35080-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00061.tfm as iso8859.1/9nb00061.pmf
- -COMPUGRAPHIC-Courier-Bold-r-Normal--8782-2500-2540-2540-M-52910-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00062.tfm as iso8859.1/9nb00062.pmf
- -COMPUGRAPHIC-Courier-Medium-i-Normal--8782-2500-2540-2540-M-52910-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00063.tfm as iso8859.1/9nb00063.pmf
- -COMPUGRAPHIC-Courier-Bold-i-Normal--8782-2500-2540-2540-M-52910-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00064.tfm as iso8859.1/9nb00064.pmf
- -COMPUGRAPHIC-Courier-Medium-r-Normal--8782-2500-2540-2540-M-52910-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00065.tfm as iso8859.1/9nb00065.pmf
- -COMPUGRAPHIC-Garamond-Bold-r-Normal--8782-2500-2540-2540-P-38730-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00066.tfm as iso8859.1/9nb00066.pmf
- -COMPUGRAPHIC-Garamond-Medium-i-Normal--8782-2500-2540-2540-P-34280-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00067.tfm as iso8859.1/9nb00067.pmf
- -COMPUGRAPHIC-Garamond-Bold-i-Normal--8782-2500-2540-2540-P-37020-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00068.tfm as iso8859.1/9nb00068.pmf
- -COMPUGRAPHIC-Garamond-Medium-r-Normal--8782-2500-2540-2540-P-36560-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00069.tfm as iso8859.1/9nb00069.pmf
- -COMPUGRAPHIC-Letter Gothic-Bold-r-Normal--8782-2500-2540-2540-M-44090-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00070.tfm as iso8859.1/9nb00070.pmf
- -COMPUGRAPHIC-Letter Gothic-Medium-i-Normal--8782-2500-2540-2540-M-44090-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00071.tfm as iso8859.1/9nb00071.pmf
- -COMPUGRAPHIC-Letter Gothic-Medium-r-Normal--8782-2500-2540-2540-M-44090-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00072.tfm as iso8859.1/9nb00072.pmf
- -COMPUGRAPHIC-Marigold-Medium-r-Normal--8782-2500-2540-2540-P-21890-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00073.tfm as iso8859.1/9nb00073.pmf
- -COMPUGRAPHIC-Omega-Bold-r-Normal--8782-2500-2540-2540-P-38600-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00074.tfm as iso8859.1/9nb00074.pmf
- -COMPUGRAPHIC-Omega-Medium-i-Normal--8782-2500-2540-2540-P-37980-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00075.tfm as iso8859.1/9nb00075.pmf
- -COMPUGRAPHIC-Omega-Bold-i-Normal--8782-2500-2540-2540-P-38560-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00076.tfm as iso8859.1/9nb00076.pmf
- -COMPUGRAPHIC-Omega-Medium-r-Normal--8782-2500-2540-2540-P-37770-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00077.tfm as iso8859.1/9nb00077.pmf
- -COMPUGRAPHIC-Coronet-Medium-i-Normal--8782-2500-2540-2540-P-22870-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00079.tfm as iso8859.1/9nb00079.pmf
- -Monotype-Times New Roman-Bold-r-Normal--2048-2500-589-589-P-8740-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00080.tfm as iso8859.1/9nb00080.pmf
- -Monotype-Times New Roman-Medium-i-Normal--2048-2500-589-589-P-8230-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00081.tfm as iso8859.1/9nb00081.pmf
- -Monotype-Times New Roman-Bold-i-Normal--2048-2500-589-589-P-8440-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00082.tfm as iso8859.1/9nb00082.pmf
- -Monotype-Times New Roman-Medium-r-Normal--2048-2500-589-589-P-8210-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00083.tfm as iso8859.1/9nb00083.pmf
- -COMPUGRAPHIC-Times-Bold-r-Normal--8782-2500-2540-2540-P-38200-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00084.tfm as iso8859.1/9nb00084.pmf
- -COMPUGRAPHIC-Times-Medium-i-Normal--8782-2500-2540-2540-P-36000-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00085.tfm as iso8859.1/9nb00085.pmf
- -COMPUGRAPHIC-Times-Bold-i-Normal--8782-2500-2540-2540-P-36900-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00086.tfm as iso8859.1/9nb00086.pmf
- -COMPUGRAPHIC-Times-Medium-r-Normal--8782-2500-2540-2540-P-36080-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00087.tfm as iso8859.1/9nb00087.pmf
- -COMPUGRAPHIC-Univers-Medium-i-Condensed--8782-2500-2540-2540-P-29970-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00088.tfm as iso8859.1/9nb00088.pmf
- -COMPUGRAPHIC-Univers-Bold-r-Normal--8782-2500-2540-2540-P-41280-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00089.tfm as iso8859.1/9nb00089.pmf
- -COMPUGRAPHIC-Univers-Medium-r-Condensed--8782-2500-2540-2540-P-29970-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00090.tfm as iso8859.1/9nb00090.pmf
- -COMPUGRAPHIC-Univers-Bold-r-Condensed--8782-2500-2540-2540-P-33030-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00091.tfm as iso8859.1/9nb00091.pmf
- -COMPUGRAPHIC-Univers-Bold-i-Condensed--8782-2500-2540-2540-P-33030-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00092.tfm as iso8859.1/9nb00092.pmf
- -COMPUGRAPHIC-Univers-Medium-i-Normal--8782-2500-2540-2540-P-41280-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00093.tfm as iso8859.1/9nb00093.pmf
- -COMPUGRAPHIC-Univers-Bold-i-Normal--8782-2500-2540-2540-P-41280-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00094.tfm as iso8859.1/9nb00094.pmf
- -COMPUGRAPHIC-Univers-Medium-r-Normal--8782-2500-2540-2540-P-41280-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for lpr0ye1a.tfm as iso8859.1/lpr0ye1a.pmf
- -HP-Line Printer-Medium-r-Normal--35-85-300-300-M-180-iso8859-1
- ------------------------------------
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/fonts.alias b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/fonts.alias
deleted file mode 100644
index e69de29bb..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/fonts.alias
+++ /dev/null
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/fonts.dir b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/fonts.dir
deleted file mode 100644
index da702ccc1..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/fonts.dir
+++ /dev/null
@@ -1,45 +0,0 @@
-44
-lpr0ye1a.pmf -hp-line printer-medium-r-normal--35-85-300-300-m-180-iso8859-1
-9nb00080.pmf -monotype-times new roman-medium-i-normal--2048-2500-589-589-p-8230-iso8859-1
-9nb00092.pmf -compugraphic-univers-medium-i-normal--8782-2500-2540-2540-p-41280-iso8859-1
-9nb00081.pmf -monotype-times new roman-bold-i-normal--2048-2500-589-589-p-8440-iso8859-1
-9nb00093.pmf -compugraphic-univers-bold-i-normal--8782-2500-2540-2540-p-41280-iso8859-1
-9nb00082.pmf -monotype-times new roman-medium-r-normal--2048-2500-589-589-p-8210-iso8859-1
-9nb00090.pmf -compugraphic-univers-bold-r-condensed--8782-2500-2540-2540-p-33030-iso8859-1
-9nb00083.pmf -compugraphic-times-bold-r-normal--8782-2500-2540-2540-p-38200-iso8859-1
-9nb00091.pmf -compugraphic-univers-bold-i-condensed--8782-2500-2540-2540-p-33030-iso8859-1
-9nb00084.pmf -compugraphic-times-medium-i-normal--8782-2500-2540-2540-p-36000-iso8859-1
-9nb00085.pmf -compugraphic-times-bold-i-normal--8782-2500-2540-2540-p-36900-iso8859-1
-9nb00086.pmf -compugraphic-times-medium-r-normal--8782-2500-2540-2540-p-36080-iso8859-1
-9nb00094.pmf -compugraphic-univers-medium-r-normal--8782-2500-2540-2540-p-41280-iso8859-1
-9nb00087.pmf -compugraphic-univers-medium-i-condensed--8782-2500-2540-2540-p-29970-iso8859-1
-9nb00088.pmf -compugraphic-univers-bold-r-normal--8782-2500-2540-2540-p-41280-iso8859-1
-9nb00089.pmf -compugraphic-univers-medium-r-condensed--8782-2500-2540-2540-p-29970-iso8859-1
-9nb00058.pmf -monotype-arial-bold-i-normal--2048-2500-589-589-p-9800-iso8859-1
-9nb00059.pmf -monotype-arial-medium-r-normal--2048-2500-589-589-p-9040-iso8859-1
-9nb00068.pmf -compugraphic-garamond-medium-r-normal--8782-2500-2540-2540-p-36560-iso8859-1
-9nb00069.pmf -compugraphic-letter gothic-bold-r-normal--8782-2500-2540-2540-m-44090-iso8859-1
-9nb00079.pmf -monotype-times new roman-bold-r-normal--2048-2500-589-589-p-8740-iso8859-1
-9nb00052.pmf -compugraphic-albertus-semi bold-r-normal--8782-2500-2540-2540-p-37640-iso8859-1
-9nb00064.pmf -compugraphic-courier-medium-r-normal--8782-2500-2540-2540-m-52910-iso8859-1
-9nb00076.pmf -compugraphic-omega-medium-r-normal--8782-2500-2540-2540-p-37770-iso8859-1
-9nb00053.pmf -compugraphic-antique olive-bold-r-normal--8782-2500-2540-2540-p-50490-iso8859-1
-9nb00065.pmf -compugraphic-garamond-bold-r-normal--8782-2500-2540-2540-p-38730-iso8859-1
-9nb00077.pmf -compugraphic-coronet-medium-i-normal--8782-2500-2540-2540-p-22870-iso8859-1
-9nb00066.pmf -compugraphic-garamond-medium-i-normal--8782-2500-2540-2540-p-34280-iso8859-1
-9nb00074.pmf -compugraphic-omega-medium-i-normal--8782-2500-2540-2540-p-37980-iso8859-1
-9nb00051.pmf -compugraphic-albertus-extra bold-r-normal--8782-2500-2540-2540-p-42480-iso8859-1
-9nb00067.pmf -compugraphic-garamond-bold-i-normal--8782-2500-2540-2540-p-37020-iso8859-1
-9nb00075.pmf -compugraphic-omega-bold-i-normal--8782-2500-2540-2540-p-38560-iso8859-1
-9nb00056.pmf -monotype-arial-bold-r-normal--2048-2500-589-589-p-9800-iso8859-1
-9nb00060.pmf -compugraphic-clarendon-bold-r-condensed--8782-2500-2540-2540-p-35080-iso8859-1
-9nb00072.pmf -compugraphic-marigold-medium-r-normal--8782-2500-2540-2540-p-21890-iso8859-1
-9nb00057.pmf -monotype-arial-medium-i-normal--2048-2500-589-589-p-9040-iso8859-1
-9nb00061.pmf -compugraphic-courier-bold-r-normal--8782-2500-2540-2540-m-52910-iso8859-1
-9nb00073.pmf -compugraphic-omega-bold-r-normal--8782-2500-2540-2540-p-38600-iso8859-1
-9nb00054.pmf -compugraphic-antique olive-medium-i-normal--8782-2500-2540-2540-p-46140-iso8859-1
-9nb00062.pmf -compugraphic-courier-medium-i-normal--8782-2500-2540-2540-m-52910-iso8859-1
-9nb00070.pmf -compugraphic-letter gothic-medium-i-normal--8782-2500-2540-2540-m-44090-iso8859-1
-9nb00055.pmf -compugraphic-antique olive-medium-r-normal--8782-2500-2540-2540-p-46380-iso8859-1
-9nb00063.pmf -compugraphic-courier-bold-i-normal--8782-2500-2540-2540-m-52910-iso8859-1
-9nb00071.pmf -compugraphic-letter gothic-medium-r-normal--8782-2500-2540-2540-m-44090-iso8859-1
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/lpr0ye1a.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/lpr0ye1a.pmf
deleted file mode 100644
index 483748893..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/fonts/lpr0ye1a.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/model-config b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/model-config
deleted file mode 100644
index 5d45d4495..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPDJ1600C/model-config
+++ /dev/null
@@ -1,40 +0,0 @@
-# $Xprint.org: HPDJ1600C model-config,v 1.4 2002/11/07 19:48:04 gisburn Exp $
-# This is the configuration file for the HP DeskJet 1600C printer.
-#
-# The CDEnext SI supports two 1600C drivers XP-PCL-MONO and
-# XP-PCL-COLOR, which work with this configuration file.
-#
-
-*content-orientations-supported: portrait landscape
-*descriptor: Hewlett-Packard DeskJet 1600C
-*document-formats-supported: {PCL 5} {PostScript 2}
-*input-trays-supported:
-# 1/4" unprintable margins
-*medium-source-sizes-supported:\
-{ '' \
- {na-letter FALSE {6.35 209.55 6.35 273.05}}\
- {executive FALSE {6.35 177.75 6.35 260.35}}\
- {na-legal FALSE {6.35 209.55 6.35 349.25}}\
- {iso-a3 FALSE {6.35 290.65 6.35 413.35}}\
- {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\
- {jis-b4 FALSE {6.35 251.65 6.35 367.65}}\
- {jis-b5 FALSE {6.35 175.65 6.35 250.65}}\
- {monarch-envelope FALSE {6.35 91.94 6.35 184.15}}\
- {iso-designated-long FALSE {6.35 103.65 6.35 213.65}}\
- {iso-c5 FALSE {6.35 155.65 6.35 222.65}}\
- {na-number-10-envelope FALSE {6.35 98.45 6.35 234.95}}\
- {hp-tabloid FALSE {6.35 273.05 6.35 425.45}}\
- {ledger FALSE {6.35 273.05 6.35 425.45}}\
- {b FALSE {6.35 273.05 6.35 425.45}}\
- {hp-japanese-postcard FALSE {6 94 6 142 }}\
- {hp-japanese-doublepostcard FALSE {6 142 6 194 }}\
-}
-*plexes-supported: simplex duplex
-*printer-model: "Hewlett-Packard DeskJet 1600C"
-*printer-resolutions-supported: 300
-*xp-ddx-identifier: XP-PCL-COLOR
-*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts
-*xp-embedded-formats-supported: { PCL 5 } { PostScript 2 }
-*xp-raw-formats-supported: { PCL 5 }
-*xp-setup-proviso: setup-optional
-# EOF.
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4050-PS/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4050-PS/Imakefile
deleted file mode 100644
index b62236366..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4050-PS/Imakefile
+++ /dev/null
@@ -1,15 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2003/12/16 00:42:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-SUBDIRS = fonts
-
-XPMODELNAME = HPLJ4050-PS
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-
-InstallNonExecFile(model-config,$(MODELDIR))
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4050-PS/fonts/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4050-PS/fonts/Imakefile
deleted file mode 100644
index 9c9c3c1ef..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4050-PS/fonts/Imakefile
+++ /dev/null
@@ -1,45 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2003/12/16 00:42:52 gisburn Exp $
-
-XPFONTS = \
- AvantGarde-Book.pmf \
- AvantGarde-BookOblique.pmf \
- AvantGarde-Demi.pmf \
- AvantGarde-DemiOblique.pmf \
- Courier-Bold.pmf \
- Courier-BoldOblique.pmf \
- Courier-Oblique.pmf \
- Courier.pmf \
- Helvetica-Bold.pmf \
- Helvetica-BoldOblique.pmf \
- Helvetica-Oblique.pmf \
- Helvetica.pmf \
- LubalinGraph-Book.pmf \
- LubalinGraph-BookOblique.pmf \
- LubalinGraph-Demi.pmf \
- LubalinGraph-DemiOblique.pmf \
- NewCenturySchlbk-Bold.pmf \
- NewCenturySchlbk-BoldItalic.pmf \
- NewCenturySchlbk-Italic.pmf \
- NewCenturySchlbk-Roman.pmf \
- Souvenir-Demi.pmf \
- Souvenir-DemiItalic.pmf \
- Souvenir-Light.pmf \
- Souvenir-LightItalic.pmf \
- Symbol.pmf \
- Times-Bold.pmf \
- Times-BoldItalic.pmf \
- Times-Italic.pmf \
- Times-Roman.pmf \
- ZapfDingbats.pmf
-
-XPMODELNAME = HPLJ4050-PS
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-MODELFONTDIR = $(MODELDIR)/fonts
-
-# We reuse some of the PSdefault fonts
-PARENTMODELFONTDIR=../../PSdefault/fonts
-
-InstallXpMultiplePMFLinks($(XPFONTS),$(PARENTMODELFONTDIR),$(MODELFONTDIR))
-InstallXpPMFFontsDir($(MODELFONTDIR))
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4050-PS/model-config b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4050-PS/model-config
deleted file mode 100644
index 159206de2..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4050-PS/model-config
+++ /dev/null
@@ -1,36 +0,0 @@
-# $Xprint.org: HPLJ4050-PS model-config,v 1.1 2003/12/16 00:48:04 gisburn Exp $
-# model-config for the HP LaserJet 4050 PostScript printer series
-#
-*content-orientations-supported: portrait landscape reverse-portrait reverse-landscape
-*descriptor: Hewlett-Packard LaserJet 4050 PostScript printer
-*document-formats-supported: {POSTSCRIPT 2}
-*input-trays-supported:
-*medium-source-sizes-supported: \
-{ '' \
- {na-letter FALSE {6.35 209.55 6.35 273.05}}\
- {na-legal FALSE {6.35 209.55 6.35 349.25}}\
- {executive FALSE {6.35 177.80 6.35 260.35}}\
- {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\
- {iso-a5 FALSE {6.35 141.65 6.35 203.65}}\
- {iso-b5 FALSE {6.35 169.65 6.35 243.65}}\
- {jis-b5 FALSE {6.35 175.65 6.35 250.65}}\
-}
-
-# Duplex unit is optional for HPLJ4050 series
-*plexes-supported: simplex
-*printer-model: "Hewlett-Packard LaserJet 4050 PostScript printer"
-*printer-resolutions-supported: 600 1200
-*xp-ddx-identifier: XP-POSTSCRIPT
-*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts
-*xp-embedded-formats-supported: {POSTSCRIPT 2}
-*xp-raw-formats-supported: {POSTSCRIPT 2}
-*xp-setup-proviso: setup-optional
-
-# NOTE: xp-psddx-* attributes are EXPERIMENTAL for now.
-# xp-psddx-download-fonts defines which fonts should be downloaded as outlines
-# (valid types are "pfa", "pfb", "ttf", "ttc", "otf", "otc")
-*xp-psddx-download-fonts: pfa pfb ttf ttc otf otc
-# xp-psddx-download-font-type defines which font type is used to download outlines
-# (valid values are "bitmap", "pstype1" and "pstype3")
-*xp-psddx-download-font-type: pstype1
-# EOF.
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/Imakefile
deleted file mode 100644
index 28601153c..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/Imakefile
+++ /dev/null
@@ -1,14 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-SUBDIRS = fonts
-
-XPMODELNAME = HPLJ4family
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-
-InstallNonExecFile(model-config,$(MODELDIR))
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00051.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00051.pmf
deleted file mode 100644
index 09cc489a5..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00051.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00052.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00052.pmf
deleted file mode 100644
index b21a9a2a8..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00052.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00053.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00053.pmf
deleted file mode 100644
index 485b874c5..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00053.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00054.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00054.pmf
deleted file mode 100644
index 524934c71..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00054.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00055.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00055.pmf
deleted file mode 100644
index 2ef9bc52c..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00055.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00056.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00056.pmf
deleted file mode 100644
index 3d69311ef..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00056.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00057.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00057.pmf
deleted file mode 100644
index 3833d4f54..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00057.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00058.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00058.pmf
deleted file mode 100644
index 289a95e5c..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00058.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00059.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00059.pmf
deleted file mode 100644
index a5984bed1..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00059.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00060.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00060.pmf
deleted file mode 100644
index df27cd71e..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00060.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00061.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00061.pmf
deleted file mode 100644
index fb2b5a433..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00061.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00062.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00062.pmf
deleted file mode 100644
index f0e58c435..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00062.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00063.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00063.pmf
deleted file mode 100644
index 8821ff155..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00063.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00064.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00064.pmf
deleted file mode 100644
index e5980fc0e..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00064.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00065.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00065.pmf
deleted file mode 100644
index d9a151d7f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00065.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00066.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00066.pmf
deleted file mode 100644
index d14fca56f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00066.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00067.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00067.pmf
deleted file mode 100644
index 7a341506f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00067.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00068.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00068.pmf
deleted file mode 100644
index c20e39a21..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00068.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00069.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00069.pmf
deleted file mode 100644
index 4a4a35281..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00069.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00070.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00070.pmf
deleted file mode 100644
index 8d97d4339..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00070.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00071.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00071.pmf
deleted file mode 100644
index 19844c9c6..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00071.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00072.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00072.pmf
deleted file mode 100644
index 5415c3f44..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00072.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00073.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00073.pmf
deleted file mode 100644
index 038dfdb46..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00073.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00074.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00074.pmf
deleted file mode 100644
index 382a78575..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00074.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00075.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00075.pmf
deleted file mode 100644
index 1c7edf653..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00075.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00076.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00076.pmf
deleted file mode 100644
index 2f077f40f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00076.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00077.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00077.pmf
deleted file mode 100644
index 1ce190d51..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00077.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00079.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00079.pmf
deleted file mode 100644
index 45d6906ba..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00079.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00080.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00080.pmf
deleted file mode 100644
index b991b5edb..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00080.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00081.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00081.pmf
deleted file mode 100644
index 1935a9f00..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00081.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00082.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00082.pmf
deleted file mode 100644
index 2000dc057..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00082.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00083.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00083.pmf
deleted file mode 100644
index 90f0e45a8..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00083.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00084.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00084.pmf
deleted file mode 100644
index 52ba39b96..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00084.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00085.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00085.pmf
deleted file mode 100644
index f5c9053af..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00085.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00086.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00086.pmf
deleted file mode 100644
index b7586ca61..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00086.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00087.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00087.pmf
deleted file mode 100644
index 82f054999..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00087.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00088.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00088.pmf
deleted file mode 100644
index 591c96b59..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00088.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00089.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00089.pmf
deleted file mode 100644
index c8160954a..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00089.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00090.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00090.pmf
deleted file mode 100644
index 895cfe26a..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00090.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00091.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00091.pmf
deleted file mode 100644
index 3bdcae4ba..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00091.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00092.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00092.pmf
deleted file mode 100644
index a56d47504..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00092.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00093.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00093.pmf
deleted file mode 100644
index c85f3b4de..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00093.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00094.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00094.pmf
deleted file mode 100644
index 875bf1df8..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/9nb00094.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/Imakefile
deleted file mode 100644
index 868aa8a8c..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/Imakefile
+++ /dev/null
@@ -1,56 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-
-XPFONTS = \
- 9nb00051.pmf \
- 9nb00052.pmf \
- 9nb00053.pmf \
- 9nb00054.pmf \
- 9nb00055.pmf \
- 9nb00056.pmf \
- 9nb00057.pmf \
- 9nb00058.pmf \
- 9nb00059.pmf \
- 9nb00060.pmf \
- 9nb00061.pmf \
- 9nb00062.pmf \
- 9nb00063.pmf \
- 9nb00064.pmf \
- 9nb00065.pmf \
- 9nb00066.pmf \
- 9nb00067.pmf \
- 9nb00068.pmf \
- 9nb00069.pmf \
- 9nb00070.pmf \
- 9nb00071.pmf \
- 9nb00072.pmf \
- 9nb00073.pmf \
- 9nb00074.pmf \
- 9nb00075.pmf \
- 9nb00076.pmf \
- 9nb00077.pmf \
- 9nb00079.pmf \
- 9nb00080.pmf \
- 9nb00081.pmf \
- 9nb00082.pmf \
- 9nb00083.pmf \
- 9nb00084.pmf \
- 9nb00085.pmf \
- 9nb00086.pmf \
- 9nb00087.pmf \
- 9nb00088.pmf \
- 9nb00089.pmf \
- 9nb00090.pmf \
- 9nb00091.pmf \
- 9nb00092.pmf \
- 9nb00093.pmf \
- 9nb00094.pmf \
- fonts.alias \
- fonts.dir \
- lpr0ye1a.pmf \
- README
-
-XPMODELNAME = HPLJ4family
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-MODELFONTDIR = $(MODELDIR)/fonts
-InstallMultipleDest(install,$(XPFONTS),$(MODELFONTDIR))
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/README b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/README
deleted file mode 100644
index 2c9821834..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/README
+++ /dev/null
@@ -1,203 +0,0 @@
-$Xorg: README,v 1.3 2000/08/17 19:48:04 cpqbld Exp $
-
-This directory contains "printer metric files" for the X Print
-Server suitable for the LaserJet 4 family of printers - 4, 4L,
-4M, 4ML, 4MP, 4P, 4Si, 4Si-MX. The following *.pmf files were
-generated by the Hewlett-Packard Company.
-
- 9nb00051.pmf
- 9nb00052.pmf
- 9nb00053.pmf
- 9nb00054.pmf
- 9nb00055.pmf
- * 9nb00056.pmf
- * 9nb00057.pmf
- * 9nb00058.pmf
- * 9nb00059.pmf
- * 9nb00060.pmf
- 9nb00061.pmf
- 9nb00062.pmf
- 9nb00063.pmf
- 9nb00064.pmf
- * 9nb00065.pmf
- * 9nb00066.pmf
- * 9nb00067.pmf
- * 9nb00068.pmf
- 9nb00069.pmf
- 9nb00070.pmf
- 9nb00071.pmf
- * 9nb00072.pmf
- * 9nb00073.pmf
- * 9nb00074.pmf
- * 9nb00075.pmf
- * 9nb00076.pmf
- 9nb00077.pmf
- * 9nb00079.pmf
- * 9nb00080.pmf
- * 9nb00081.pmf
- * 9nb00082.pmf
- 9nb00083.pmf
- 9nb00084.pmf
- 9nb00085.pmf
- 9nb00086.pmf
- 9nb00087.pmf
- 9nb00088.pmf
- 9nb00089.pmf
- 9nb00090.pmf
- 9nb00091.pmf
- 9nb00092.pmf
- 9nb00093.pmf
- 9nb00094.pmf
- lpr0ye1a.pmf
-
-
- * note - the marked fonts are NOT supported by the 4L printer. If
- making extensive use of the 4L, you may want to create a special
- 4L model-config area and exclude these fonts.
-
-For reasons of not supporting iso8859.1 and hp-roman8, the following
-Laserjet 4 printer fonts were not converted to *.pmf files.
-
- 9nb00078.pmf
- 9nb00095.pmf
- lpr0ylga.pmf
- lpr0ypca.pmf
- lpr0ypda.pmf
- lpr0ypma.pmf
- lpr0yr8a.pmf
-
-Output from the conversion utility is as follows:
-
- Creating iso8859 1 pmf for 9nb00051.tfm as iso8859.1/9nb00051.pmf
- -COMPUGRAPHIC-Albertus-Extra Bold-r-Normal--8782-2500-2540-2540-P-42480-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00052.tfm as iso8859.1/9nb00052.pmf
- -COMPUGRAPHIC-Albertus-Semi Bold-r-Normal--8782-2500-2540-2540-P-37640-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00053.tfm as iso8859.1/9nb00053.pmf
- -COMPUGRAPHIC-Antique Olive-Bold-r-Normal--8782-2500-2540-2540-P-50490-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00054.tfm as iso8859.1/9nb00054.pmf
- -COMPUGRAPHIC-Antique Olive-Medium-i-Normal--8782-2500-2540-2540-P-46140-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00055.tfm as iso8859.1/9nb00055.pmf
- -COMPUGRAPHIC-Antique Olive-Medium-r-Normal--8782-2500-2540-2540-P-46380-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00056.tfm as iso8859.1/9nb00056.pmf
- -Monotype-Arial-Bold-r-Normal--2048-2500-589-589-P-9800-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00057.tfm as iso8859.1/9nb00057.pmf
- -Monotype-Arial-Medium-i-Normal--2048-2500-589-589-P-9040-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00058.tfm as iso8859.1/9nb00058.pmf
- -Monotype-Arial-Bold-i-Normal--2048-2500-589-589-P-9800-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00059.tfm as iso8859.1/9nb00059.pmf
- -Monotype-Arial-Medium-r-Normal--2048-2500-589-589-P-9040-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00060.tfm as iso8859.1/9nb00060.pmf
- -COMPUGRAPHIC-Clarendon-Bold-r-Condensed--8782-2500-2540-2540-P-35080-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00061.tfm as iso8859.1/9nb00061.pmf
- -COMPUGRAPHIC-Courier-Bold-r-Normal--8782-2500-2540-2540-M-52910-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00062.tfm as iso8859.1/9nb00062.pmf
- -COMPUGRAPHIC-Courier-Medium-i-Normal--8782-2500-2540-2540-M-52910-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00063.tfm as iso8859.1/9nb00063.pmf
- -COMPUGRAPHIC-Courier-Bold-i-Normal--8782-2500-2540-2540-M-52910-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00064.tfm as iso8859.1/9nb00064.pmf
- -COMPUGRAPHIC-Courier-Medium-r-Normal--8782-2500-2540-2540-M-52910-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00065.tfm as iso8859.1/9nb00065.pmf
- -COMPUGRAPHIC-Garamond-Bold-r-Normal--8782-2500-2540-2540-P-38730-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00066.tfm as iso8859.1/9nb00066.pmf
- -COMPUGRAPHIC-Garamond-Medium-i-Normal--8782-2500-2540-2540-P-34280-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00067.tfm as iso8859.1/9nb00067.pmf
- -COMPUGRAPHIC-Garamond-Bold-i-Normal--8782-2500-2540-2540-P-37020-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00068.tfm as iso8859.1/9nb00068.pmf
- -COMPUGRAPHIC-Garamond-Medium-r-Normal--8782-2500-2540-2540-P-36560-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00069.tfm as iso8859.1/9nb00069.pmf
- -COMPUGRAPHIC-Letter Gothic-Bold-r-Normal--8782-2500-2540-2540-M-44090-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00070.tfm as iso8859.1/9nb00070.pmf
- -COMPUGRAPHIC-Letter Gothic-Medium-i-Normal--8782-2500-2540-2540-M-44090-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00071.tfm as iso8859.1/9nb00071.pmf
- -COMPUGRAPHIC-Letter Gothic-Medium-r-Normal--8782-2500-2540-2540-M-44090-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00072.tfm as iso8859.1/9nb00072.pmf
- -COMPUGRAPHIC-Marigold-Medium-r-Normal--8782-2500-2540-2540-P-21890-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00073.tfm as iso8859.1/9nb00073.pmf
- -COMPUGRAPHIC-Omega-Bold-r-Normal--8782-2500-2540-2540-P-38600-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00074.tfm as iso8859.1/9nb00074.pmf
- -COMPUGRAPHIC-Omega-Medium-i-Normal--8782-2500-2540-2540-P-37980-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00075.tfm as iso8859.1/9nb00075.pmf
- -COMPUGRAPHIC-Omega-Bold-i-Normal--8782-2500-2540-2540-P-38560-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00076.tfm as iso8859.1/9nb00076.pmf
- -COMPUGRAPHIC-Omega-Medium-r-Normal--8782-2500-2540-2540-P-37770-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00077.tfm as iso8859.1/9nb00077.pmf
- -COMPUGRAPHIC-Coronet-Medium-i-Normal--8782-2500-2540-2540-P-22870-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00079.tfm as iso8859.1/9nb00079.pmf
- -Monotype-Times New Roman-Bold-r-Normal--2048-2500-589-589-P-8740-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00080.tfm as iso8859.1/9nb00080.pmf
- -Monotype-Times New Roman-Medium-i-Normal--2048-2500-589-589-P-8230-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00081.tfm as iso8859.1/9nb00081.pmf
- -Monotype-Times New Roman-Bold-i-Normal--2048-2500-589-589-P-8440-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00082.tfm as iso8859.1/9nb00082.pmf
- -Monotype-Times New Roman-Medium-r-Normal--2048-2500-589-589-P-8210-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00083.tfm as iso8859.1/9nb00083.pmf
- -COMPUGRAPHIC-Times-Bold-r-Normal--8782-2500-2540-2540-P-38200-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00084.tfm as iso8859.1/9nb00084.pmf
- -COMPUGRAPHIC-Times-Medium-i-Normal--8782-2500-2540-2540-P-36000-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00085.tfm as iso8859.1/9nb00085.pmf
- -COMPUGRAPHIC-Times-Bold-i-Normal--8782-2500-2540-2540-P-36900-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00086.tfm as iso8859.1/9nb00086.pmf
- -COMPUGRAPHIC-Times-Medium-r-Normal--8782-2500-2540-2540-P-36080-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00087.tfm as iso8859.1/9nb00087.pmf
- -COMPUGRAPHIC-Univers-Medium-i-Condensed--8782-2500-2540-2540-P-29970-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00088.tfm as iso8859.1/9nb00088.pmf
- -COMPUGRAPHIC-Univers-Bold-r-Normal--8782-2500-2540-2540-P-41280-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00089.tfm as iso8859.1/9nb00089.pmf
- -COMPUGRAPHIC-Univers-Medium-r-Condensed--8782-2500-2540-2540-P-29970-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00090.tfm as iso8859.1/9nb00090.pmf
- -COMPUGRAPHIC-Univers-Bold-r-Condensed--8782-2500-2540-2540-P-33030-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00091.tfm as iso8859.1/9nb00091.pmf
- -COMPUGRAPHIC-Univers-Bold-i-Condensed--8782-2500-2540-2540-P-33030-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00092.tfm as iso8859.1/9nb00092.pmf
- -COMPUGRAPHIC-Univers-Medium-i-Normal--8782-2500-2540-2540-P-41280-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00093.tfm as iso8859.1/9nb00093.pmf
- -COMPUGRAPHIC-Univers-Bold-i-Normal--8782-2500-2540-2540-P-41280-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for 9nb00094.tfm as iso8859.1/9nb00094.pmf
- -COMPUGRAPHIC-Univers-Medium-r-Normal--8782-2500-2540-2540-P-41280-iso8859-1
- ------------------------------------
- Creating iso8859 1 pmf for lpr0ye1a.tfm as iso8859.1/lpr0ye1a.pmf
- -HP-Line Printer-Medium-r-Normal--35-85-300-300-M-180-iso8859-1
- ------------------------------------
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/fonts.alias b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/fonts.alias
deleted file mode 100644
index e69de29bb..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/fonts.alias
+++ /dev/null
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/fonts.dir b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/fonts.dir
deleted file mode 100644
index da702ccc1..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/fonts.dir
+++ /dev/null
@@ -1,45 +0,0 @@
-44
-lpr0ye1a.pmf -hp-line printer-medium-r-normal--35-85-300-300-m-180-iso8859-1
-9nb00080.pmf -monotype-times new roman-medium-i-normal--2048-2500-589-589-p-8230-iso8859-1
-9nb00092.pmf -compugraphic-univers-medium-i-normal--8782-2500-2540-2540-p-41280-iso8859-1
-9nb00081.pmf -monotype-times new roman-bold-i-normal--2048-2500-589-589-p-8440-iso8859-1
-9nb00093.pmf -compugraphic-univers-bold-i-normal--8782-2500-2540-2540-p-41280-iso8859-1
-9nb00082.pmf -monotype-times new roman-medium-r-normal--2048-2500-589-589-p-8210-iso8859-1
-9nb00090.pmf -compugraphic-univers-bold-r-condensed--8782-2500-2540-2540-p-33030-iso8859-1
-9nb00083.pmf -compugraphic-times-bold-r-normal--8782-2500-2540-2540-p-38200-iso8859-1
-9nb00091.pmf -compugraphic-univers-bold-i-condensed--8782-2500-2540-2540-p-33030-iso8859-1
-9nb00084.pmf -compugraphic-times-medium-i-normal--8782-2500-2540-2540-p-36000-iso8859-1
-9nb00085.pmf -compugraphic-times-bold-i-normal--8782-2500-2540-2540-p-36900-iso8859-1
-9nb00086.pmf -compugraphic-times-medium-r-normal--8782-2500-2540-2540-p-36080-iso8859-1
-9nb00094.pmf -compugraphic-univers-medium-r-normal--8782-2500-2540-2540-p-41280-iso8859-1
-9nb00087.pmf -compugraphic-univers-medium-i-condensed--8782-2500-2540-2540-p-29970-iso8859-1
-9nb00088.pmf -compugraphic-univers-bold-r-normal--8782-2500-2540-2540-p-41280-iso8859-1
-9nb00089.pmf -compugraphic-univers-medium-r-condensed--8782-2500-2540-2540-p-29970-iso8859-1
-9nb00058.pmf -monotype-arial-bold-i-normal--2048-2500-589-589-p-9800-iso8859-1
-9nb00059.pmf -monotype-arial-medium-r-normal--2048-2500-589-589-p-9040-iso8859-1
-9nb00068.pmf -compugraphic-garamond-medium-r-normal--8782-2500-2540-2540-p-36560-iso8859-1
-9nb00069.pmf -compugraphic-letter gothic-bold-r-normal--8782-2500-2540-2540-m-44090-iso8859-1
-9nb00079.pmf -monotype-times new roman-bold-r-normal--2048-2500-589-589-p-8740-iso8859-1
-9nb00052.pmf -compugraphic-albertus-semi bold-r-normal--8782-2500-2540-2540-p-37640-iso8859-1
-9nb00064.pmf -compugraphic-courier-medium-r-normal--8782-2500-2540-2540-m-52910-iso8859-1
-9nb00076.pmf -compugraphic-omega-medium-r-normal--8782-2500-2540-2540-p-37770-iso8859-1
-9nb00053.pmf -compugraphic-antique olive-bold-r-normal--8782-2500-2540-2540-p-50490-iso8859-1
-9nb00065.pmf -compugraphic-garamond-bold-r-normal--8782-2500-2540-2540-p-38730-iso8859-1
-9nb00077.pmf -compugraphic-coronet-medium-i-normal--8782-2500-2540-2540-p-22870-iso8859-1
-9nb00066.pmf -compugraphic-garamond-medium-i-normal--8782-2500-2540-2540-p-34280-iso8859-1
-9nb00074.pmf -compugraphic-omega-medium-i-normal--8782-2500-2540-2540-p-37980-iso8859-1
-9nb00051.pmf -compugraphic-albertus-extra bold-r-normal--8782-2500-2540-2540-p-42480-iso8859-1
-9nb00067.pmf -compugraphic-garamond-bold-i-normal--8782-2500-2540-2540-p-37020-iso8859-1
-9nb00075.pmf -compugraphic-omega-bold-i-normal--8782-2500-2540-2540-p-38560-iso8859-1
-9nb00056.pmf -monotype-arial-bold-r-normal--2048-2500-589-589-p-9800-iso8859-1
-9nb00060.pmf -compugraphic-clarendon-bold-r-condensed--8782-2500-2540-2540-p-35080-iso8859-1
-9nb00072.pmf -compugraphic-marigold-medium-r-normal--8782-2500-2540-2540-p-21890-iso8859-1
-9nb00057.pmf -monotype-arial-medium-i-normal--2048-2500-589-589-p-9040-iso8859-1
-9nb00061.pmf -compugraphic-courier-bold-r-normal--8782-2500-2540-2540-m-52910-iso8859-1
-9nb00073.pmf -compugraphic-omega-bold-r-normal--8782-2500-2540-2540-p-38600-iso8859-1
-9nb00054.pmf -compugraphic-antique olive-medium-i-normal--8782-2500-2540-2540-p-46140-iso8859-1
-9nb00062.pmf -compugraphic-courier-medium-i-normal--8782-2500-2540-2540-m-52910-iso8859-1
-9nb00070.pmf -compugraphic-letter gothic-medium-i-normal--8782-2500-2540-2540-m-44090-iso8859-1
-9nb00055.pmf -compugraphic-antique olive-medium-r-normal--8782-2500-2540-2540-p-46380-iso8859-1
-9nb00063.pmf -compugraphic-courier-bold-i-normal--8782-2500-2540-2540-m-52910-iso8859-1
-9nb00071.pmf -compugraphic-letter gothic-medium-r-normal--8782-2500-2540-2540-m-44090-iso8859-1
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/lpr0ye1a.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/lpr0ye1a.pmf
deleted file mode 100644
index 483748893..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/fonts/lpr0ye1a.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/model-config b/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/model-config
deleted file mode 100644
index 1ac997ebe..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/HPLJ4family/model-config
+++ /dev/null
@@ -1,39 +0,0 @@
-# $Xprint.org: HPLJ4family model-config,v 1.4 2002/11/07 19:48:04 gisburn Exp $
-# This is the configuration file for the HP LaserJet 4 Printers.
-#
-# Though not a deliverable for the CDEnext SI, the XP-PCL-MONO
-# driver should be able to support the LaserJet 4 printers.
-#
-*content-orientations-supported: portrait landscape
-*descriptor: Hewlett-Packard LaserJet 4 Series
-*document-formats-supported: {PCL 5} {PostScript 2}
-*input-trays-supported:
-# 1/4" unprintable margins
-*medium-source-sizes-supported:\
-{ '' \
- {na-letter FALSE {6.35 209.55 6.35 273.05}}\
- {executive FALSE {6.35 177.75 6.35 260.35}}\
- {na-legal FALSE {6.35 209.55 6.35 349.25}}\
- {iso-a3 FALSE {6.35 290.65 6.35 413.35}}\
- {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\
- {jis-b4 FALSE {6.35 251.65 6.35 367.65}}\
- {jis-b5 FALSE {6.35 175.65 6.35 250.65}}\
- {monarch-envelope FALSE {6.35 91.94 6.35 184.15}}\
- {iso-designated-long FALSE {6.35 103.65 6.35 213.65}}\
- {iso-c5 FALSE {6.35 155.65 6.35 222.65}}\
- {na-number-10-envelope FALSE {6.35 98.45 6.35 234.95}}\
- {hp-tabloid FALSE {6.35 273.05 6.35 425.45}}\
- {ledger FALSE {6.35 273.05 6.35 425.45}}\
- {b FALSE {6.35 273.05 6.35 425.45}}\
- {hp-japanese-postcard FALSE {6 94 6 142 }}\
- {hp-japanese-doublepostcard FALSE {6 142 6 194 }}\
-}
-*plexes-supported: simplex duplex
-*printer-model: "Hewlett-Packard LaserJet 4 Series"
-*printer-resolutions-supported: 300 600
-*xp-ddx-identifier: XP-PCL-MONO
-*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts
-*xp-embedded-formats-supported: { PCL 5 } { PostScript 2 }
-*xp-raw-formats-supported: { PCL 5 }
-*xp-setup-proviso: setup-optional
-# EOF.
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/Imakefile
deleted file mode 100644
index c8c54cef4..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/Imakefile
+++ /dev/null
@@ -1,45 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-#if XpPostScriptDDX
-PS_MODELDIRS = \
- PSdefault \
- SPSPARC2 \
- HPLJ4050-PS \
- CANONC3200-PS \
- PSspooldir
-
-#if HasGhostScript
-XCOMM Models for printers which need GhostScript for post-processing
-GS_MODELDIRS = \
- GSdefault \
- CANONBJ10E-GS \
- PS2PDFspooldir-GS
-#endif /* HasGhostScript */
-#endif /* XpPostScriptDDX */
-
-#if XpColorPclDDX
-PCL_COLOR_MODELDIRS = \
- HPDJ1600C
-#endif
-
-#if XpMonoPclDDX
-PCL_MONO_MODELDIRS = \
- HPLJ4family
-#endif
-
-#if XpRasterDDX
-RASTER_MODELDIRS =
-#endif
-
-SUBDIRS = \
- $(PS_MODELDIRS) \
- $(GS_MODELDIRS) \
- $(PCL_COLOR_MODELDIRS) \
- $(PCL_MONO_MODELDIRS) \
- $(RASTER_MODELDIRS)
-
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PS2PDFspooldir-GS/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/PS2PDFspooldir-GS/Imakefile
deleted file mode 100644
index 14f9ee59f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PS2PDFspooldir-GS/Imakefile
+++ /dev/null
@@ -1,35 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2003/11/20 03:42:52 gisburn Exp $
-
-XPMODELNAME = PS2PDFspooldir-GS
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-
-#if BuildGISWxprintglue || BuildGISWxprint
-XCOMM Hack for Solaris's native /usr/openwin/bin/Xprt which does not
-XCOMM understand the new %xpconfigdir% modelconfig variable
-XCOMM (this is only used for the GISWxprintglue package build;
-XCOMM the GISWxprint does not need it but using it avoids confusion
-XCOMM if someone uses GISWxprint to run both Solaris native Xprt and
-XCOMM our own binary side-by-side using the same config)
-all:: model-config.SolarisXprt
-
-model-config.SolarisXprt: model-config
- nawk <model-config " { sub(\"%xpconfigdir%/C\", \"$(XPRINTDIR)/C\") ; print \$$0 } " >model-config.SolarisXprt
-
-clean::
- $(RM) model-config.SolarisXprt
-
-InstallNamedNonExec(model-config.SolarisXprt,model-config,$(MODELDIR))
-#else
-InstallNonExecFile(model-config,$(MODELDIR))
-#endif /* BuildGISWxprintglue || BuildGISWxprint */
-
-InstallNamedProg(ps2pdf_spooltodir.sh,ps2pdf_spooltodir.sh,$(MODELDIR))
-
-# All printer models which use GhostScript for filtering should use the
-# printer-builtin fonts from the "GSdefault" printer model
-# (unless they employ more or other builtin fonts)
-install::
- $(RM) $(DESTDIR)$(MODELDIR)/fonts
- $(LN) ../GSdefault/fonts $(DESTDIR)$(MODELDIR)
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PS2PDFspooldir-GS/model-config b/nx-X11/programs/Xserver/XpConfig/C/print/models/PS2PDFspooldir-GS/model-config
deleted file mode 100644
index 1d74b8676..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PS2PDFspooldir-GS/model-config
+++ /dev/null
@@ -1,72 +0,0 @@
-# $Xprint.org: PS2PDFspooldir-GS model-config,v 1.1 2003/11/20 03:48:04 gisburn Exp $
-# PostScript DDX model-config which converts jobs to PDF via GhostScript's "ps2pdf"
-# and then sends them to a spool dir instead to a print queue
-#
-# This model is basically a cut-down GSdefault model with a custom *xp-spooler-command
-#
-# DO NOT MODIFY THIS FILE!!
-#
-# If you want to make customisations for your printer create a copy
-# of this printer model.
-# Example (for creating a model config "MYCOMPANYlaserxx"):
-# 1. Create model config dir:
-# % mkdir MYCOMPANYlaserxx
-# 2. Link (or copy) the PMF (printer font metrics) for the
-# printer buildin fonts:
-# % ln -s PS2PDFspooldir-GS/fonts MYCOMPANYlaserxx/.
-# 3. Copy the model config file:
-# % cp PS2PDFspooldir-GS/model-config MYCOMPANYlaserxx/.
-# 4. Customize MYCOMPANYlaserxx/model-config to match your needs.
-#
-# Attributes supported for this printer model
-*content-orientations-supported: portrait landscape reverse-portrait reverse-landscape
-*descriptor: PDF job spool dir /tmp/Xprintjobs
-*document-formats-supported: {POSTSCRIPT 2}
-*input-trays-supported:
-*medium-source-sizes-supported: \
-{ '' \
- {na-letter FALSE {6.35 209.55 6.35 273.05}}\
- {na-legal FALSE {6.35 209.55 6.35 349.25}}\
- {executive FALSE {6.35 177.80 6.35 260.35}}\
- {ledger FALSE {6.35 273.05 6.35 425.45}}\
- {quarto FALSE {6.35 209.55 6.35 268.732}}\
- {iso-a3 FALSE {6.35 290.65 6.35 413.65}}\
- {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\
- {iso-a5 FALSE {6.35 141.65 6.35 203.65}}\
- {iso-b3 FALSE {6.35 346.65 6.35 493.65}}\
- {iso-b4 FALSE {6.35 243.65 6.35 346.65}}\
- {iso-b5 FALSE {6.35 169.65 6.35 243.65}}\
- {jis-b3 FALSE {6.35 357.65 6.35 508.65}}\
- {jis-b4 FALSE {6.35 250.65 6.35 357.65}}\
- {jis-b5 FALSE {6.35 175.65 6.35 250.65}}\
- {iso-c3 FALSE {6.35 317.65 6.35 451.65}}\
- {iso-c4 FALSE {6.35 222.65 6.35 317.65}}\
- {iso-c5 FALSE {6.35 155.65 6.35 222.65}}\
-}
-
-*plexes-supported: simplex duplex tumble
-*printer-model: "PDF job spool dir /tmp/Xprintjobs"
-# 75, 100, 120, 150, 180, 200, 240, 300, 360, 400, 600, 720,
-# 940, 1200 and 2440 are supported DPI values, we limit it here
-# to some common values:
-*printer-resolutions-supported: 300 360 400 600
-*xp-ddx-identifier: XP-POSTSCRIPT
-*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts
-*xp-embedded-formats-supported: {POSTSCRIPT 2}
-*xp-raw-formats-supported: {POSTSCRIPT 2}
-*xp-setup-proviso: setup-optional
-
-# Use custom spooler script which sends the output to a dir instead to a printer queue
-# Note that "%xpconfigdir%" is currently only supported in Xprt servers build
-# from xprint.mozdev.org sources, other platforms have replace it with the
-# absolute path name to the script
-*xp-spooler-command: %xpconfigdir%/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh -d /tmp/Xprintjobs -s .pdf -u 077 -p %printer-name% -c %copy-count% -t %job-name% -o "%options%"
-
-# NOTE: xp-psddx-* attributes are EXPERIMENTAL for now.
-# xp-psddx-download-fonts defines which fonts should be downloaded as outlines
-# (valid types are "pfa", "pfb", "ttf", "ttc", "otf", "otc")
-*xp-psddx-download-fonts: pfa pfb ttf ttc otf otc
-# xp-psddx-download-font-type defines which font type is used to download outlines
-# (valid values are "bitmap", "pstype1" and "pstype3")
-*xp-psddx-download-font-type: pstype1
-# EOF.
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh b/nx-X11/programs/Xserver/XpConfig/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh
deleted file mode 100755
index 5739807d8..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/bin/sh
-PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin
-export PATH
-
-verbose_msgs="false"
-DEFAULT_SPOOLDIR=/tmp/Xprintjobs
-
-usage()
-{
- printf "Usage: ${0}: [options]\n"
- printf "-v\tbe verbose\n"
- printf "-d dirname\tdefine spool dir\n"
- printf "-p string\tname of printer selected by user\n"
- printf "-c integer\tnumber of copies\n"
- printf "-t string\tjob title\n"
- printf "-s string\tfile name suffix\n"
- printf "-o string\tspooler options\n"
- printf "-u mask\tpermission mask for new files (see umask)\n"
- exit 2
-}
-
-verbose()
-{
- if ${verbose_msgs} ; then
- echo "$1"
- fi
-}
-
-spooldir="${DEFAULT_SPOOLDIR}"
-printername=
-num_job_copies=
-job_title=
-filename_suffix=
-spooler_options=
-permmask=
-while getopts va:b:d:p:c:t:s:o:u: i
-do
- case $i in
- v)
- verbose_msgs="true"
- ;;
- d)
- spooldir="$OPTARG"
- ;;
- p)
- printername="$OPTARG"
- ;;
- c)
- num_job_copies="$OPTARG"
- ;;
- t)
- job_title="$OPTARG"
- ;;
- s)
- filename_suffix="$OPTARG"
- ;;
- o)
- spooler_options="$OPTARG"
- ;;
- u)
- permmask="$OPTARG"
- ;;
- ?) usage
- ;;
- esac
-done
-
-verbose "# spooldir=\"$spooldir\""
-verbose "# printername=\"$printername\""
-verbose "# num_job_copies=\"$num_job_copies\""
-verbose "# job_title=\"$job_title\""
-verbose "# spooler_options=\"$spooler_options\""
-verbose "# umask=\"$permmask\""
-
-if [ ! -d "${DEFAULT_SPOOLDIR}" ] ; then
- mkdir "${DEFAULT_SPOOLDIR}"
- chmod a+rwxt "${DEFAULT_SPOOLDIR}"
-fi
-
-if [ "${permmask}" != "" ] ; then
- umask ${permmask}
-fi
-
-if [ ! -d "$spooldir" ] ; then
- echo "$0: spooldir \"$spooldir\" does not exits." >&2
- exit 1
-fi
-if [ ! -w "$spooldir" ] ; then
- echo "$0: Cannot write to spooldir \"$spooldir\"." >&2
- exit 1
-fi
-
-# Create first part of the output file name (prefix and an "unique"
-# id(=date and time))...
-filename="Xpjob_`date +%Y%m%d%H%M%S`"
-
-# ... then add options ...
-if [ "${printername}" != "" ] ; then
- filename="${filename}_${printername}"
-fi
-if [ "${num_job_copies}" != "" -a "${num_job_copies}" != "1" ] ; then
- filename="${filename}_copies_${num_job_copies}"
-fi
-if [ "${job_title}" != "" ] ; then
- filename="${filename}_title_${job_title}"
-fi
-
-# ... mangle output file name and filter chars (like whitespaces)
-# which may screw-up further processing by other shell scripts ...
-filename="`echo \"${filename}\" | tr '[:blank:]' '_' | tr -c -d '[:alnum:]_.-'`"
-
-# ... add path and suffix ...
-filename="${spooldir}/${filename}${filename_suffix}"
-
-verbose "# File name is \"$filename\"."
-
-# ... and finally capture stdin to the file (we are using "gs" directly to
-# avoid the problem that "ps2pdf" is not available in all Linux
-# distributions by default).
-#ps2pdf - - | cat >"${filename}"
-gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "-sOutputFile=-" -dCompatibilityLevel=1.2 -c .setpdfwrite -f - | cat >"${filename}"
-
-if ${verbose_msgs} ; then
- printf "# File is " ; ls -l "${filename}"
-fi
-
-verbose "# Done."
-
-exit 0
-# EOF.
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/Imakefile
deleted file mode 100644
index c2442f32d..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/Imakefile
+++ /dev/null
@@ -1,14 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-SUBDIRS = fonts
-
-XPMODELNAME = PSdefault
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-
-InstallNonExecFile(model-config,$(MODELDIR))
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Book.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Book.pmf
deleted file mode 100644
index 331178985..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Book.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmf
deleted file mode 100644
index 61bcb22b9..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmf
deleted file mode 100644
index 88ccf0834..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf
deleted file mode 100644
index 45cc8857b..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier-Bold.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier-Bold.pmf
deleted file mode 100644
index ac760fdb9..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier-Bold.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmf
deleted file mode 100644
index 8db974018..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier-Oblique.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier-Oblique.pmf
deleted file mode 100644
index 87aee16cc..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier-Oblique.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier.pmf
deleted file mode 100644
index 6109c8c11..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Courier.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Bold.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Bold.pmf
deleted file mode 100644
index 30d462d95..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Bold.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica-BoldOblique.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica-BoldOblique.pmf
deleted file mode 100644
index 89619516f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica-BoldOblique.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmf
deleted file mode 100644
index 2a0de8afc..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica.pmf
deleted file mode 100644
index b1fd475bb..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Helvetica.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Imakefile
deleted file mode 100644
index 9a51ed099..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Imakefile
+++ /dev/null
@@ -1,41 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-
-XPFONTS = \
- AvantGarde-Book.pmf \
- AvantGarde-BookOblique.pmf \
- AvantGarde-Demi.pmf \
- AvantGarde-DemiOblique.pmf \
- Courier-Bold.pmf \
- Courier-BoldOblique.pmf \
- Courier-Oblique.pmf \
- Courier.pmf \
- Helvetica-Bold.pmf \
- Helvetica-BoldOblique.pmf \
- Helvetica-Oblique.pmf \
- Helvetica.pmf \
- LubalinGraph-Book.pmf \
- LubalinGraph-BookOblique.pmf \
- LubalinGraph-Demi.pmf \
- LubalinGraph-DemiOblique.pmf \
- NewCenturySchlbk-Bold.pmf \
- NewCenturySchlbk-BoldItalic.pmf \
- NewCenturySchlbk-Italic.pmf \
- NewCenturySchlbk-Roman.pmf \
- Souvenir-Demi.pmf \
- Souvenir-DemiItalic.pmf \
- Souvenir-Light.pmf \
- Souvenir-LightItalic.pmf \
- Symbol.pmf \
- Times-Bold.pmf \
- Times-BoldItalic.pmf \
- Times-Italic.pmf \
- Times-Roman.pmf \
- ZapfDingbats.pmf
-
-XPMODELNAME = PSdefault
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-MODELFONTDIR = $(MODELDIR)/fonts
-InstallMultipleDest(install,$(XPFONTS),$(MODELFONTDIR))
-InstallXpPMFFontsDir($(MODELFONTDIR))
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmf
deleted file mode 100644
index aff4b4949..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmf
deleted file mode 100644
index b5b77f353..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmf
deleted file mode 100644
index 100339854..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmf
deleted file mode 100644
index a8550e70d..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf
deleted file mode 100644
index ab22aabf5..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf
deleted file mode 100644
index e68811eb7..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmf
deleted file mode 100644
index 390f223cb..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmf
deleted file mode 100644
index 655b9b6c0..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Demi.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Demi.pmf
deleted file mode 100644
index 5e786ec42..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Demi.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-DemiItalic.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-DemiItalic.pmf
deleted file mode 100644
index 094b348cc..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-DemiItalic.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Light.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Light.pmf
deleted file mode 100644
index 0bb62bde6..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Light.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-LightItalic.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-LightItalic.pmf
deleted file mode 100644
index 3c19a7fbf..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Souvenir-LightItalic.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Symbol.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Symbol.pmf
deleted file mode 100644
index 48925f816..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Symbol.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-Bold.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-Bold.pmf
deleted file mode 100644
index cf46ca03f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-Bold.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-BoldItalic.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-BoldItalic.pmf
deleted file mode 100644
index ffe51af80..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-BoldItalic.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-Italic.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-Italic.pmf
deleted file mode 100644
index 865433f83..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-Italic.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-Roman.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-Roman.pmf
deleted file mode 100644
index 625e0c43f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/Times-Roman.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/ZapfDingbats.pmf b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/ZapfDingbats.pmf
deleted file mode 100644
index 1ae9a7688..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/fonts/ZapfDingbats.pmf
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/model-config b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/model-config
deleted file mode 100644
index 05a19d859..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSdefault/model-config
+++ /dev/null
@@ -1,136 +0,0 @@
-# $Xprint.org: PSdefault model-config,v 1.2 2002/11/07 19:48:04 gisburn Exp $
-# Generic default model-config for the PostScript DDX
-#
-# DO NOT MODIFY THIS FILE!!
-#
-# If you want to make customisations for your printer create a copy
-# of this printer model.
-# Example (for creating a model config "MYCOMPANYlaserxx"):
-# 1. Create model config dir:
-# % mkdir MYCOMPANYlaserxx
-# 2. Link (or copy) the PMF (printer font metrics) for the
-# printer buildin fonts:
-# % ln -s PSdefault/fonts MYCOMPANYlaserxx/.
-# 3. Copy the model config file:
-# % cp PSdefault/model-config MYCOMPANYlaserxx/.
-# 4. Customize MYCOMPANYlaserxx/model-config to match your needs.
-#
-
-# Attributes supported for this printer model
-# You may want to cut the lists here down to the attributes supported
-# by your printer.
-*content-orientations-supported: portrait landscape reverse-portrait reverse-landscape
-*descriptor: PostScript default model
-*document-formats-supported: {POSTSCRIPT 2}
-*input-trays-supported:
-*medium-source-sizes-supported: \
-{ '' \
- {na-letter FALSE {6.35 209.55 6.35 273.05}}\
- {na-legal FALSE {6.35 209.55 6.35 349.25}}\
- {executive FALSE {6.35 177.80 6.35 260.35}}\
- {folio FALSE {6.35 204.47 6.35 323.85}}\
- {invoice FALSE {6.35 133.35 6.35 209.55}}\
- {ledger FALSE {6.35 273.05 6.35 425.45}}\
- {quarto FALSE {6.35 209.55 6.35 268.732}}\
- {a FALSE {6.35 209.55 6.35 273.05}}\
- {b FALSE {6.35 273.05 6.35 425.45}}\
- {c FALSE {6.35 425.45 6.35 552.45}}\
- {d FALSE {6.35 552.45 6.35 857.25}}\
- {e FALSE {6.35 857.25 6.35 1111.25}}\
- {na-6x9-envelope FALSE {6.35 146.05 6.35 222.25}}\
- {na-10x15-envelope FALSE {6.35 247.65 6.35 374.65}}\
- {monarch-envelope FALSE {6.35 91.948 6.35 184.15}}\
- {na-10x13-envelope FALSE {6.35 247.65 6.35 323.85}}\
- {na-9x12-envelope FALSE {6.35 222.25 6.35 298.45}}\
- {na-number-10-envelope FALSE {6.35 98.425 6.35 234.95}}\
- {na-7x9-envelope FALSE {6.35 171.45 6.35 222.25}}\
- {na-9x11-envelope FALSE {6.35 222.25 6.35 273.05}}\
- {na-10x14-envelope FALSE {6.35 247.65 6.35 349.25}}\
- {na-number-9-envelope FALSE {6.35 92.075 6.35 219.075}}\
- {iso-a0 FALSE {6.35 834.65 6.35 1182.65}}\
- {iso-a1 FALSE {6.35 587.65 6.35 834.65}}\
- {iso-a2 FALSE {6.35 413.65 6.35 587.65}}\
- {iso-a3 FALSE {6.35 290.65 6.35 413.65}}\
- {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\
- {iso-a5 FALSE {6.35 141.65 6.35 203.65}}\
- {iso-a6 FALSE {6.35 98.65 6.35 141.65}}\
- {iso-a7 FALSE {6.35 67.65 6.35 98.65}}\
- {iso-a8 FALSE {6.35 45.65 6.35 67.65}}\
- {iso-a9 FALSE {6.35 30.65 6.35 45.65}}\
- {iso-a10 FALSE {6.35 19.65 6.35 30.65}}\
- {iso-b1 FALSE {6.35 700.65 6.35 993.65}}\
- {iso-b2 FALSE {6.35 493.65 6.35 700.65}}\
- {iso-b3 FALSE {6.35 346.65 6.35 493.65}}\
- {iso-b4 FALSE {6.35 243.65 6.35 346.65}}\
- {iso-b5 FALSE {6.35 169.65 6.35 243.65}}\
- {iso-b6 FALSE {6.35 118.65 6.35 169.65}}\
- {iso-b7 FALSE {6.35 81.65 6.35 118.65}}\
- {iso-b8 FALSE {6.35 55.65 6.35 81.65}}\
- {iso-b9 FALSE {6.35 37.65 6.35 55.65}}\
- {iso-b10 FALSE {6.35 24.65 6.35 37.65}}\
- {jis-b1 FALSE {6.35 721.65 6.35 1023.65}}\
- {jis-b2 FALSE {6.35 508.65 6.35 721.65}}\
- {jis-b3 FALSE {6.35 357.65 6.35 508.65}}\
- {jis-b4 FALSE {6.35 250.65 6.35 357.65}}\
- {jis-b5 FALSE {6.35 175.65 6.35 250.65}}\
- {jis-b6 FALSE {6.35 121.65 6.35 175.65}}\
- {jis-b7 FALSE {6.35 84.65 6.35 121.65}}\
- {jis-b8 FALSE {6.35 57.65 6.35 84.65}}\
- {jis-b9 FALSE {6.35 38.65 6.35 57.65}}\
- {jis-b10 FALSE {6.35 25.65 6.35 38.65}}\
- {iso-c3 FALSE {6.35 317.65 6.35 451.65}}\
- {iso-c4 FALSE {6.35 222.65 6.35 317.65}}\
- {iso-c5 FALSE {6.35 155.65 6.35 222.65}}\
- {iso-c6 FALSE {6.35 107.65 6.35 155.65}}\
- {iso-designated-long FALSE {6.35 103.65 6.35 213.65}}\
- {hp-2x-postcard FALSE {6.35 141.65 6.35 193.65}}\
- {hp-european-edp FALSE {6.35 298.45 6.35 349.25}}\
- {hp-mini FALSE {6.35 133.35 6.35 209.55}}\
- {hp-postcard FALSE {6.35 93.65 6.35 141.65}}\
- {hp-tabloid FALSE {6.35 273.05 6.35 425.45}}\
- {hp-us-edp FALSE {6.35 273.05 6.35 349.25}}\
- {hp-us-government-legal FALSE {6.35 196.85 6.35 323.85}}\
- {hp-us-government-letter FALSE {6.35 196.85 6.35 247.65}}\
-}
-# If you have more than one tray use the following example:
-# 1. List the supported trays
-#*input-trays-supported: main manual
-# 2. Define each tray and it's paper sizes
-#*medium-source-sizes-supported: \
-#{ main \
-# {na-letter FALSE {6.35 209.55 6.35 273.05}} \
-# {na-legal FALSE {6.35 209.55 6.35 349.25}} \
-# {iso-a4 FALSE {6.35 203.65 6.35 290.65}} \
-#} \
-#{ manual \
-# {iso-a5 FALSE {6.35 141.65 6.35 203.65}} \
-# {iso-c5 FALSE {6.35 155.65 6.35 222.65}} \
-# {iso-designated-long FALSE {6.35 103.65 6.35 213.65}} \
-# {jis-b5 FALSE {6.35 175.65 6.35 250.65}} \
-# {monarch-envelope FALSE {6.35 91.948 6.35 184.15}} \
-# {na-legal FALSE {6.35 209.55 6.35 349.25}} \
-# {na-number-10-envelope FALSE {6.35 98.425 6.35 234.95}} \
-# {executive FALSE {6.35 177.8 6.35 260.35}} \
-# {iso-a3 FALSE {6.35 290.65 6.35 413.65}} \
-# {iso-a0 FALSE {6.35 834.65 6.35 1182.65}} \
-#}
-*plexes-supported: simplex duplex tumble
-*printer-model: "PostScript default model"
-# 75, 100, 120, 150, 180, 200, 240, 300, 360, 400, 600, 720,
-# 940, 1200 and 2440 are supported DPI values, we limit it here
-# to some common values:
-*printer-resolutions-supported: 300 360 400 600
-*xp-ddx-identifier: XP-POSTSCRIPT
-*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts
-*xp-embedded-formats-supported: {POSTSCRIPT 2}
-*xp-raw-formats-supported: {POSTSCRIPT 2}
-*xp-setup-proviso: setup-optional
-
-# NOTE: xp-psddx-* attributes are EXPERIMENTAL for now.
-# xp-psddx-download-fonts defines which fonts should be downloaded as outlines
-# (valid types are "pfa", "pfb", "ttf", "ttc", "otf", "otc")
-*xp-psddx-download-fonts: pfa pfb ttf ttc otf otc
-# xp-psddx-download-font-type defines which font type is used to download outlines
-# (valid values are "bitmap", "pstype1" and "pstype3")
-*xp-psddx-download-font-type: pstype1
-# EOF.
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSspooldir/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSspooldir/Imakefile
deleted file mode 100644
index 65f602f7f..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSspooldir/Imakefile
+++ /dev/null
@@ -1,34 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-
-XPMODELNAME = PSspooldir
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-
-#if BuildGISWxprintglue || BuildGISWxprint
-XCOMM Hack for Solaris's native /usr/openwin/bin/Xprt which does not
-XCOMM understand the new %xpconfigdir% modelconfig variable
-XCOMM (this is only used for the GISWxprintglue package build;
-XCOMM the GISWxprint does not need it but using it avoids confusion
-XCOMM if someone uses GISWxprint to run both Solaris native Xprt and
-XCOMM our own binary side-by-side using the same config)
-all:: model-config.SolarisXprt
-
-model-config.SolarisXprt: model-config
- nawk <model-config " { sub(\"%xpconfigdir%/C\", \"$(XPRINTDIR)/C\") ; print \$$0 } " >model-config.SolarisXprt
-
-clean::
- $(RM) model-config.SolarisXprt
-
-InstallNamedNonExec(model-config.SolarisXprt,model-config,$(MODELDIR))
-#else
-InstallNonExecFile(model-config,$(MODELDIR))
-#endif /* BuildGISWxprintglue || BuildGISWxprint */
-
-InstallNamedProg(spooltodir.sh,spooltodir.sh,$(MODELDIR))
-
-# All PostScript-printer models should use the printer-builtin fonts from the
-# "PSdefault" printer model (unless they employ more or other builtin fonts)
-install::
- $(RM) $(DESTDIR)$(MODELDIR)/fonts
- $(LN) ../PSdefault/fonts $(DESTDIR)$(MODELDIR)
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSspooldir/model-config b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSspooldir/model-config
deleted file mode 100644
index 6bb477767..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSspooldir/model-config
+++ /dev/null
@@ -1,71 +0,0 @@
-# $Xprint.org: PSspooldir model-config,v 1.1 2002/11/25 19:48:04 gisburn Exp $
-# PostScript DDX model-config which sends jobs to a spool dir instead to a print queue
-#
-# This model is basically a cut-down PSdefault model with a custom *xp-spooler-command
-#
-# DO NOT MODIFY THIS FILE!!
-#
-# If you want to make customisations for your printer create a copy
-# of this printer model.
-# Example (for creating a model config "MYCOMPANYlaserxx"):
-# 1. Create model config dir:
-# % mkdir MYCOMPANYlaserxx
-# 2. Link (or copy) the PMF (printer font metrics) for the
-# printer buildin fonts:
-# % ln -s PSspooldir/fonts MYCOMPANYlaserxx/.
-# 3. Copy the model config file:
-# % cp PSspooldir/model-config MYCOMPANYlaserxx/.
-# 4. Customize MYCOMPANYlaserxx/model-config to match your needs.
-#
-# Attributes supported for this printer model
-*content-orientations-supported: portrait landscape reverse-portrait reverse-landscape
-*descriptor: PostScript job spool dir /tmp/Xprintjobs
-*document-formats-supported: {POSTSCRIPT 2}
-*input-trays-supported:
-*medium-source-sizes-supported: \
-{ '' \
- {na-letter FALSE {6.35 209.55 6.35 273.05}}\
- {na-legal FALSE {6.35 209.55 6.35 349.25}}\
- {executive FALSE {6.35 177.80 6.35 260.35}}\
- {ledger FALSE {6.35 273.05 6.35 425.45}}\
- {quarto FALSE {6.35 209.55 6.35 268.732}}\
- {iso-a3 FALSE {6.35 290.65 6.35 413.65}}\
- {iso-a4 FALSE {6.35 203.65 6.35 290.65}}\
- {iso-a5 FALSE {6.35 141.65 6.35 203.65}}\
- {iso-b3 FALSE {6.35 346.65 6.35 493.65}}\
- {iso-b4 FALSE {6.35 243.65 6.35 346.65}}\
- {iso-b5 FALSE {6.35 169.65 6.35 243.65}}\
- {jis-b3 FALSE {6.35 357.65 6.35 508.65}}\
- {jis-b4 FALSE {6.35 250.65 6.35 357.65}}\
- {jis-b5 FALSE {6.35 175.65 6.35 250.65}}\
- {iso-c3 FALSE {6.35 317.65 6.35 451.65}}\
- {iso-c4 FALSE {6.35 222.65 6.35 317.65}}\
- {iso-c5 FALSE {6.35 155.65 6.35 222.65}}\
-}
-
-*plexes-supported: simplex duplex tumble
-*printer-model: "PostScript job spool dir /tmp/Xprintjobs"
-# 75, 100, 120, 150, 180, 200, 240, 300, 360, 400, 600, 720,
-# 940, 1200 and 2440 are supported DPI values, we limit it here
-# to some common values:
-*printer-resolutions-supported: 300 360 400 600
-*xp-ddx-identifier: XP-POSTSCRIPT
-*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts
-*xp-embedded-formats-supported: {POSTSCRIPT 2}
-*xp-raw-formats-supported: {POSTSCRIPT 2}
-*xp-setup-proviso: setup-optional
-
-# Use custom spooler script which sends the output to a dir instead to a printer queue
-# Note that "%xpconfigdir%" is currently only supported in Xprt servers build
-# from xprint.mozdev.org sources, other platforms have replace it with the
-# absolute path name to the script
-*xp-spooler-command: %xpconfigdir%/C/print/models/PSspooldir/spooltodir.sh -d /tmp/Xprintjobs -s .ps -u 077 -p %printer-name% -c %copy-count% -t %job-name% -o "%options%"
-
-# NOTE: xp-psddx-* attributes are EXPERIMENTAL for now.
-# xp-psddx-download-fonts defines which fonts should be downloaded as outlines
-# (valid types are "pfa", "pfb", "ttf", "ttc", "otf", "otc")
-*xp-psddx-download-fonts: pfa pfb ttf ttc otf otc
-# xp-psddx-download-font-type defines which font type is used to download outlines
-# (valid values are "bitmap", "pstype1" and "pstype3")
-*xp-psddx-download-font-type: pstype1
-# EOF.
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSspooldir/spooltodir.sh b/nx-X11/programs/Xserver/XpConfig/C/print/models/PSspooldir/spooltodir.sh
deleted file mode 100755
index aba14e1b3..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/PSspooldir/spooltodir.sh
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/bin/sh
-PATH=/usr/bin:/usr/sbin:/bin:/sbin
-export PATH
-
-verbose_msgs="false"
-DEFAULT_SPOOLDIR=/tmp/Xprintjobs
-
-usage()
-{
- printf "Usage: ${0}: [options]\n"
- printf "-v\tbe verbose\n"
- printf "-d dirname\tdefine spool dir\n"
- printf "-p string\tname of printer selected by user\n"
- printf "-c integer\tnumber of copies\n"
- printf "-t string\tjob title\n"
- printf "-s string\tfile name suffix\n"
- printf "-o string\tspooler options\n"
- printf "-u mask\tpermission mask for new files (see umask)\n"
- exit 2
-}
-
-verbose()
-{
- if ${verbose_msgs} ; then
- echo "$1"
- fi
-}
-
-spooldir="${DEFAULT_SPOOLDIR}"
-printername=
-num_job_copies=
-job_title=
-filename_suffix=
-spooler_options=
-permmask=
-while getopts va:b:d:p:c:t:s:o:u: i
-do
- case $i in
- v)
- verbose_msgs="true"
- ;;
- d)
- spooldir="$OPTARG"
- ;;
- p)
- printername="$OPTARG"
- ;;
- c)
- num_job_copies="$OPTARG"
- ;;
- t)
- job_title="$OPTARG"
- ;;
- s)
- filename_suffix="$OPTARG"
- ;;
- o)
- spooler_options="$OPTARG"
- ;;
- u)
- permmask="$OPTARG"
- ;;
- ?) usage
- ;;
- esac
-done
-
-verbose "# spooldir=\"$spooldir\""
-verbose "# printername=\"$printername\""
-verbose "# num_job_copies=\"$num_job_copies\""
-verbose "# job_title=\"$job_title\""
-verbose "# spooler_options=\"$spooler_options\""
-verbose "# umask=\"$permmask\""
-
-if [ ! -d "${DEFAULT_SPOOLDIR}" ] ; then
- mkdir "${DEFAULT_SPOOLDIR}"
- chmod a+rwxt "${DEFAULT_SPOOLDIR}"
-fi
-
-if [ "${permmask}" != "" ] ; then
- umask ${permmask}
-fi
-
-if [ ! -d "$spooldir" ] ; then
- echo "$0: spooldir \"$spooldir\" does not exits." >&2
- exit 1
-fi
-if [ ! -w "$spooldir" ] ; then
- echo "$0: Cannot write to spooldir \"$spooldir\"." >&2
- exit 1
-fi
-
-# Create first part of the output file name (prefix and an "unique"
-# id(=date and time))...
-filename="Xpjob_`date +%Y%m%d%H%M%S`"
-
-# ... then add options ...
-if [ "${printername}" != "" ] ; then
- filename="${filename}_${printername}"
-fi
-if [ "${num_job_copies}" != "" -a "${num_job_copies}" != "1" ] ; then
- filename="${filename}_copies_${num_job_copies}"
-fi
-if [ "${job_title}" != "" ] ; then
- filename="${filename}_title_${job_title}"
-fi
-
-# ... mangle output file name and filter chars (like whitespaces)
-# which may screw-up further processing by other shell scripts ...
-filename="`echo \"${filename}\" | tr '[:blank:]' '_' | tr -c -d '[:alnum:]_.-'`"
-
-# ... add path and suffix ...
-filename="${spooldir}/${filename}${filename_suffix}"
-
-verbose "# File name is \"$filename\"."
-
-# ... and finally capture stdin to the file.
-cat >"${filename}"
-
-if ${verbose_msgs} ; then
- printf "# File is " ; ls -l "${filename}"
-fi
-
-verbose "# Done."
-
-exit 0
-# EOF.
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/SPSPARC2/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/SPSPARC2/Imakefile
deleted file mode 100644
index 750fc2fb2..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/SPSPARC2/Imakefile
+++ /dev/null
@@ -1,15 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-SUBDIRS = fonts
-
-XPMODELNAME = SPSPARC2
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-
-InstallNonExecFile(model-config,$(MODELDIR))
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/SPSPARC2/fonts/Imakefile b/nx-X11/programs/Xserver/XpConfig/C/print/models/SPSPARC2/fonts/Imakefile
deleted file mode 100644
index 649dd56b6..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/SPSPARC2/fonts/Imakefile
+++ /dev/null
@@ -1,28 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2003/10/22 02:42:52 gisburn Exp $
-
-XPFONTS = \
- Courier-Bold.pmf \
- Courier-BoldOblique.pmf \
- Courier-Oblique.pmf \
- Courier.pmf \
- Helvetica-Bold.pmf \
- Helvetica-BoldOblique.pmf \
- Helvetica-Oblique.pmf \
- Helvetica.pmf \
- Symbol.pmf \
- Times-Bold.pmf \
- Times-BoldItalic.pmf \
- Times-Italic.pmf \
- Times-Roman.pmf
-
-XPMODELNAME = SPSPARC2
-
-MODELDIR = $(XPRINTDIR)/C/print/models/$(XPMODELNAME)
-MODELFONTDIR = $(MODELDIR)/fonts
-
-# We reuse some of the PSdefault fonts
-PARENTMODELFONTDIR=../../PSdefault/fonts
-
-InstallXpMultiplePMFLinks($(XPFONTS),$(PARENTMODELFONTDIR),$(MODELFONTDIR))
-InstallXpPMFFontsDir($(MODELFONTDIR))
-
diff --git a/nx-X11/programs/Xserver/XpConfig/C/print/models/SPSPARC2/model-config b/nx-X11/programs/Xserver/XpConfig/C/print/models/SPSPARC2/model-config
deleted file mode 100644
index 9f29b9992..000000000
--- a/nx-X11/programs/Xserver/XpConfig/C/print/models/SPSPARC2/model-config
+++ /dev/null
@@ -1,18 +0,0 @@
-# $Xprint.org: SPSPARC2 model-config,v 1.4 2002/11/07 19:48:04 gisburn Exp $
-*content-orientations-supported: portrait landscape
-*descriptor: SunPics SPARCprinter II
-*document-formats-supported: {POSTSCRIPT 2}
-*input-trays-supported:
-*medium-source-sizes-supported: \
- { '' {na-letter FALSE {6.35 209.55 6.35 273.05}} \
- {na-legal FALSE {6.35 209.55 6.35 349.25}} \
- {iso-a4 FALSE {6.35 203.65 6.35 290.65}}}
-*plexes-supported: simplex
-*printer-model: "SunPics SPARCprinter II"
-*printer-resolutions-supported: 300
-*xp-ddx-identifier: XP-POSTSCRIPT
-*xp-listfonts-modes-supported: xp-list-internal-printer-fonts xp-list-glyph-fonts
-*xp-embedded-formats-supported: {POSTSCRIPT 2}
-*xp-raw-formats-supported: {POSTSCRIPT 2}
-*xp-setup-proviso: setup-optional
-# EOF.
diff --git a/nx-X11/programs/Xserver/XpConfig/Imakefile b/nx-X11/programs/Xserver/XpConfig/Imakefile
deleted file mode 100644
index 9ee5d42e8..000000000
--- a/nx-X11/programs/Xserver/XpConfig/Imakefile
+++ /dev/null
@@ -1,761 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2003/12/12 03:42:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-SUBDIRS = \
- C \
- en_US
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-
-InstallNonExecFile(README,$(XPRINTDIR)/)
-
-## Locale mappings
-## Notes:
-## - only ASCII chars are allowed
-## - "C" and "en_US" should not be used, they are real directories
-
-# List of locales which should be linked to the "C" locale
-C_LOCALES= \
- POSIX \
- af \
- af_ZA \
- af_ZA.iso88591 \
- af_ZA.utf8 \
- afrikaans \
- ar \
- ar_AE \
- ar_AE.iso88596 \
- ar_AE.utf8 \
- ar_BH \
- ar_BH.iso88596 \
- ar_BH.utf8 \
- ar_DZ \
- ar_DZ.iso88596 \
- ar_DZ.utf8 \
- ar_EG \
- ar_EG.ISO8859-6 \
- ar_EG.UTF-8 \
- ar_EG.iso88596 \
- ar_EG.utf8 \
- ar_IN.utf8 \
- ar_IQ \
- ar_IQ.iso88596 \
- ar_IQ.utf8 \
- ar_JO \
- ar_JO.iso88596 \
- ar_JO.utf8 \
- ar_KW \
- ar_KW.iso88596 \
- ar_KW.utf8 \
- ar_LB \
- ar_LB.iso88596 \
- ar_LB.utf8 \
- ar_LY \
- ar_LY.iso88596 \
- ar_LY.utf8 \
- ar_MA \
- ar_MA.iso88596 \
- ar_MA.utf8 \
- ar_OM \
- ar_OM.iso88596 \
- ar_OM.utf8 \
- ar_QA \
- ar_QA.iso88596 \
- ar_QA.utf8 \
- ar_SA \
- ar_SA.iso88596 \
- ar_SA.utf8 \
- ar_SD \
- ar_SD.iso88596 \
- ar_SD.utf8 \
- ar_SY \
- ar_SY.iso88596 \
- ar_SY.utf8 \
- ar_TN \
- ar_TN.iso88596 \
- ar_TN.utf8 \
- ar_YE \
- ar_YE.iso88596 \
- ar_YE.utf8 \
- be_BY \
- be_BY.cp1251 \
- be_BY.utf8 \
- bg_BG \
- bg_BG.ISO8859-5 \
- bg_BG.cp1251 \
- bg_BG.utf8 \
- bn_IN.UTF-8 \
- bn_IN.utf8 \
- br_FR \
- br_FR.iso88591 \
- bs \
- bs_BA \
- bs_BA.iso88592 \
- bs_BA.ISO8859-2 \
- bs_BA.ISO-8859-2 \
- bs_BA.ISO_8859-2 \
- bs_BA.UTF-8 \
- bokmal \
- ca \
- ca.ISO8859-1 \
- ca.ISO8859-15 \
- ca_ES \
- ca_ES.ISO8859-1 \
- ca_ES.ISO8859-15 \
- ca_ES.iso88591 \
- ca_ES.iso885915@euro \
- ca_ES.utf8 \
- ca_ES@euro \
- catalan \
- croatian \
- cs_CZ \
- cs_CZ.ISO8859-2 \
- cs_CZ.iso88592 \
- cs_CZ.utf8 \
- cy_GB \
- cy_GB.iso885914 \
- cz \
- cz.ISO8859-2 \
- czech \
- da \
- da.ISO8859-1 \
- da.ISO8859-15 \
- danish \
- dansk \
- da_DK \
- da_DK.ISO8859-1 \
- da_DK.ISO8859-15 \
- da_DK.iso88591 \
- da_DK.iso885915 \
- da_DK.utf8 \
- de \
- de.ISO8859-1 \
- de.ISO8859-15 \
- de.UTF-8 \
- deutsch \
- de_AT \
- de_AT.ISO8859-1 \
- de_AT.ISO8859-15 \
- de_AT.iso88591 \
- de_AT.iso885915@euro \
- de_AT.utf8 \
- de_AT@euro \
- de_BE \
- de_BE.iso88591 \
- de_BE.iso885915@euro \
- de_BE@euro \
- de_CH \
- de_CH.ISO8859-1 \
- de_CH.iso88591 \
- de_CH.utf8 \
- de_DE \
- de_DE.ISO8859-1 \
- de_DE.ISO8859-15 \
- de_DE.UTF-8 \
- de_DE.iso88591 \
- de_DE.iso885915@euro \
- de_DE.utf8 \
- de_DE@euro \
- de_LU \
- de_LU.iso88591 \
- de_LU.iso885915@euro \
- de_LU.utf8 \
- de_LU@euro \
- el_GR \
- el_GR.ISO8859-7 \
- el_GR.ISO8859-7@euro \
- el_GR.iso88597 \
- el_GR.utf8 \
- en_AU \
- en_AU.ISO8859-1 \
- en_AU.iso88591 \
- en_AU.utf8 \
- en_BW \
- en_BW.iso88591 \
- en_DK \
- en_DK.iso88591 \
- en_GB \
- en_GB.ISO8859-1 \
- en_GB.ISO8859-15 \
- en_GB.iso88591 \
- en_GB.iso885915 \
- en_GB.utf8 \
- en_HK \
- en_HK.iso88591 \
- en_IE \
- en_IE.ISO8859-1 \
- en_IE.ISO8859-15 \
- en_IE.iso88591 \
- en_IE.iso885915@euro \
- en_IE.utf8 \
- en_IE@euro \
- en_IN \
- en_IN.utf8 \
- en_NZ \
- en_NZ.ISO8859-1 \
- en_NZ.iso88591 \
- en_NZ.utf8 \
- en_PH \
- en_PH.iso88591 \
- en_SG \
- en_SG.iso88591 \
- en_ZA \
- en_ZA.iso88591 \
- en_ZA.utf8 \
- en_ZW \
- en_ZW.iso88591 \
- es_AR \
- es_AR.ISO8859-1 \
- es_AR.iso88591 \
- es_AR.utf8 \
- es_BO \
- es_BO.ISO8859-1 \
- es_BO.iso88591 \
- es_BO.utf8 \
- es_CL \
- es_CL.ISO8859-1 \
- es_CL.iso88591 \
- es_CL.utf8 \
- es_CO \
- es_CO.ISO8859-1 \
- es_CO.iso88591 \
- es_CO.utf8 \
- es_CR \
- es_CR.ISO8859-1 \
- es_CR.iso88591 \
- es_CR.utf8 \
- es_DO \
- es_DO.iso88591 \
- es_DO.utf8 \
- es_EC \
- es_EC.ISO8859-1 \
- es_EC.iso88591 \
- es_EC.utf8 \
- es_ES \
- es_ES.ISO8859-1 \
- es_ES.ISO8859-15 \
- es_ES.UTF-8 \
- es_ES.iso88591 \
- es_ES.iso885915@euro \
- es_ES.utf8 \
- es_ES@euro \
- es_GT \
- es_GT.ISO8859-1 \
- es_GT.iso88591 \
- es_GT.utf8 \
- es_HN \
- es_HN.iso88591 \
- es_HN.utf8 \
- es_MX \
- es_MX.ISO8859-1 \
- es_MX.iso88591 \
- es_MX.utf8 \
- es_NI \
- es_NI.ISO8859-1 \
- es_NI.iso88591 \
- es_NI.utf8 \
- es_PA \
- es_PA.ISO8859-1 \
- es_PA.iso88591 \
- es_PA.utf8 \
- es_PE \
- es_PE.ISO8859-1 \
- es_PE.iso88591 \
- es_PE.utf8 \
- es_PY \
- es_PY.ISO8859-1 \
- es_PY.iso88591 \
- es_PY.utf8 \
- es_SV \
- es_SV.ISO8859-1 \
- es_SV.iso88591 \
- es_SV.utf8 \
- es_UY \
- es_UY.ISO8859-1 \
- es_UY.iso88591 \
- es_UY.utf8 \
- es_VE \
- es_VE.ISO8859-1 \
- es_VE.iso88591 \
- es_VE.utf8 \
- et_EE \
- et_EE.ISO8859-15 \
- et_EE.iso88591 \
- et_EE.utf8 \
- eu_ES \
- eu_ES.iso88591 \
- eu_ES.iso885915@euro \
- eu_ES@euro \
- fa_IR.utf8 \
- fi_FI \
- fi_FI.ISO8859-1 \
- fi_FI.ISO8859-15 \
- fi_FI.UTF-8 \
- fi_FI.iso88591 \
- fi_FI.iso885915@euro \
- fi_FI.utf8 \
- fi_FI@euro \
- fo_FO \
- fo_FO.iso88591 \
- fo_FO.utf8 \
- fr_BE \
- fr_BE.ISO8859-1 \
- fr_BE.ISO8859-15 \
- fr_BE.UTF-8 \
- fr_BE.iso88591 \
- fr_BE.iso885915@euro \
- fr_BE.utf8 \
- fr_BE@euro \
- fr_CH \
- fr_CH.ISO8859-1 \
- fr_CH.iso88591 \
- fr_CH.utf8 \
- fr_FR \
- fr_FR.ISO8859-1 \
- fr_FR.ISO8859-15 \
- fr_FR.UTF-8 \
- fr_FR.iso88591 \
- fr_FR.iso885915@euro \
- fr_FR.utf8 \
- fr_FR@euro \
- fr_LU \
- fr_LU.iso88591 \
- fr_LU.iso885915@euro \
- fr_LU.utf8 \
- fr_LU@euro \
- ga_IE \
- ga_IE.iso88591 \
- ga_IE.iso885915@euro \
- ga_IE.utf8 \
- ga_IE@euro \
- gl_ES \
- gl_ES.iso88591 \
- gl_ES.iso885915@euro \
- gl_ES.utf8 \
- gl_ES@euro \
- gu_IN.UTF-8 \
- gu_IN.utf8 \
- gv_GB \
- gv_GB.iso88591 \
- hebrew \
- he \
- he_IL \
- he_IL.ISO8859-8 \
- he_IL.UTF-8 \
- he_IL.iso88598 \
- he_IL.utf8 \
- hi_IN.UTF-8 \
- hi_IN.utf8 \
- hr_HR \
- hr_HR.ISO8859-2 \
- hr_HR.iso88592 \
- hr_HR.utf8 \
- hu_HU \
- hu_HU.ISO8859-2 \
- hu_HU.iso88592 \
- hu_HU.utf8 \
- id_ID \
- id_ID.iso88591 \
- id_ID.utf8 \
- is_IS \
- is_IS.ISO8859-1 \
- is_IS.iso88591 \
- is_IS.utf8 \
- it \
- it.ISO8859-1 \
- it.ISO8859-15 \
- it.UTF-8 \
- italian \
- it_CH \
- it_CH.iso88591 \
- it_CH.utf8 \
- it_IT \
- it_IT.ISO8859-1 \
- it_IT.ISO8859-15 \
- it_IT.UTF-8 \
- it_IT.iso88591 \
- it_IT.iso885915@euro \
- it_IT.utf8 \
- it_IT@euro \
- iw_IL \
- iw_IL.iso88598 \
- ja \
- japan \
- japanese \
- japanese.euc \
- japanese.sjis \
- ja_JP \
- ja_JP.EUC \
- ja_JP.PCK \
- ja_JP.UTF-8 \
- ja_JP.eucJP \
- ja_JP.eucjp \
- ja_JP.sjis \
- ja_JP.ujis \
- ja_JP.utf8 \
- ka_GE \
- ka_GE.georgianps \
- kl_GL \
- kl_GL.iso88591 \
- kl_GL.utf8 \
- ko \
- ko.UTF-8 \
- korean \
- korean.euc \
- ko_KR \
- ko_KR.EUC \
- ko_KR.EUC@dict \
- ko_KR.UTF-8 \
- ko_KR.UTF-8@dict \
- ko_KR.euckr \
- ko_KR.utf8 \
- kw_GB \
- kw_GB.iso88591 \
- ky_KG \
- ky_KG.UTF-8 \
- ky_KG.utf8 \
- lt_LT \
- lt_LT.ISO8859-13 \
- lt_LT.iso885913 \
- lt_LT.utf8 \
- lithuanian \
- lt \
- lt.ISO8859-13 \
- lv \
- lv.ISO8859-13 \
- lv_LV \
- lv_LV.ISO8859-13 \
- lv_LV.iso885913 \
- lv_LV.utf8 \
- mi_NZ \
- mi_NZ.iso885913 \
- mk_MK \
- mk_MK.ISO8859-5 \
- mk_MK.iso88595 \
- mk_MK.utf8 \
- mr_IN.utf8 \
- ms_MY \
- ms_MY.iso88591 \
- mt_MT \
- mt_MT.iso88593 \
- nb_NO \
- nb_NO.ISO-8859-1 \
- nl \
- nl.ISO8859-1 \
- nl.ISO8859-15 \
- nl_BE \
- nl_BE.ISO8859-1 \
- nl_BE.ISO8859-15 \
- nl_BE.iso88591 \
- nl_BE.iso885915@euro \
- nl_BE.utf8 \
- nl_BE@euro \
- nl_NL \
- nl_NL.ISO8859-1 \
- nl_NL.ISO8859-15 \
- nl_NL.iso88591 \
- nl_NL.iso885915@euro \
- nl_NL.utf8 \
- nl_NL@euro \
- nn_NO \
- nn_NO.iso88591 \
- no \
- no.ISO8859-1 \
- no_NO \
- no_NO.ISO8859-1@bokmal \
- no_NO.ISO8859-1@nynorsk \
- no_NO.iso88591 \
- no_NO.utf8 \
- norwegian \
- nr \
- nr_ZA \
- nr_ZA.iso88591 \
- nr_ZA.utf8 \
- ndebele \
- nso \
- nso_ZA \
- nso_ZA.iso885915 \
- nso_ZA.utf8 \
- sepedi \
- oc_FR \
- oc_FR.iso88591 \
- pa_IN.UTF-8 \
- pa_IN.utf8 \
- polish \
- pl_PL \
- pl_PL.ISO8859-2 \
- pl_PL.UTF-8 \
- pl_PL.iso88592 \
- pl_PL.utf8 \
- portuguese \
- pt \
- pt.ISO8859-1 \
- pt.ISO8859-15 \
- pt_BR \
- pt_BR.ISO8859-1 \
- pt_BR.ISO-8859-1 \
- pt_BR.ISO_8859-1 \
- pt_BR.iso88591 \
- pt_BR.iso885915 \
- pt_BR.88591 \
- pt_BR.88591.en \
- pt_BR.utf8 \
- pt_BR.UTF-8 \
- pt_PT \
- pt_PT.ISO8859-1 \
- pt_PT.ISO8859-15 \
- pt_PT.iso88591 \
- pt_PT.iso885915@euro \
- pt_PT.utf8 \
- pt_PT@euro \
- ro_RO \
- ro_RO.ISO8859-2 \
- ro_RO.iso88592 \
- ro_RO.utf8 \
- ru \
- ru.ISO8859-5 \
- ru.UTF-8 \
- ru.ansi1251 \
- ru.koi8-r \
- ru_SU \
- russian \
- ru_RU \
- ru_RU.ANSI1251 \
- ru_RU.ISO8859-5 \
- ru_RU.KOI8-R \
- ru_RU.UTF-8 \
- ru_RU.iso88595 \
- ru_RU.koi8r \
- ru_RU.utf8 \
- ru_UA \
- ru_UA.koi8u \
- romanian \
- se_NO \
- se_NO.utf8 \
- si \
- sinhala \
- si_LK \
- si_LK.UTF8 \
- sk \
- sk.ISO8859-2 \
- slovak \
- slovene \
- slovenian \
- spanish \
- sk_SK \
- sk_SK.ISO8859-2 \
- sk_SK.iso88592 \
- sk_SK.utf8 \
- sh \
- sh.ISO8859-2 \
- sh_BA.ISO8859-2@bosnia \
- sh_YU \
- sh_YU.iso88592 \
- sh_YU.utf8 \
- sl_SI \
- sl_SI.ISO8859-2 \
- sl_SI.iso88592 \
- sl_SI.utf8 \
- su \
- su.ISO8859-1 \
- sq_AL \
- sq_AL.ISO8859-2 \
- sq_AL.iso88591 \
- sq_AL.utf8 \
- sr_SP \
- sr_SP.ISO8859-5 \
- sr_YU \
- sr_YU.ISO8859-5 \
- sr_YU.iso88592 \
- sr_YU.iso88595@cyrillic \
- sr_YU.utf8 \
- sr_YU@cyrillic \
- ss \
- ss_ZA \
- ss_ZA.iso88591 \
- ss_ZA.utf8 \
- siswati \
- st \
- st_ZA \
- st_ZA.iso88591 \
- st_ZA.utf8 \
- sesotho \
- sv \
- sv.ISO8859-1 \
- sv.ISO8859-15 \
- sv.UTF-8 \
- sv_FI \
- sv_FI.iso88591 \
- sv_FI.iso885915@euro \
- sv_FI.utf8 \
- sv_FI@euro \
- sv_SE \
- sv_SE.ISO8859-1 \
- sv_SE.ISO8859-15 \
- sv_SE.UTF-8 \
- sv_SE.iso88591 \
- sv_SE.iso885915 \
- sv_SE.utf8 \
- swedish \
- ta_IN \
- ta_IN.utf8 \
- te_IN \
- te_IN.utf8 \
- tg_TJ \
- tg_TJ.koi8t \
- th \
- thai \
- th_TH \
- th_TH.ISO8859-11 \
- th_TH.TIS620 \
- th_TH.UTF-8 \
- th_TH.tis620 \
- th_TH.utf8 \
- tl_PH \
- tl_PH.iso88591 \
- tn \
- tn_ZA \
- tn_ZA.iso885915 \
- tn_ZA.utf8 \
- setswana \
- tr \
- tr.ISO8859-9 \
- turkish \
- tr_TR \
- tr_TR.ISO8859-9 \
- tr_TR.UTF-8 \
- tr_TR.iso88599 \
- tr_TR.utf8 \
- ts \
- ts_ZA \
- ts_ZA.iso88591 \
- ts_ZA.utf8 \
- tsonga \
- uk_UA \
- uk_UA.koi8u \
- uk_UA.utf8 \
- ur_PK \
- ur_PK.utf8 \
- uz_UZ \
- uz_UZ.iso88591 \
- ve \
- ve_ZA \
- ve_ZA.utf8 \
- venda \
- vi_VN \
- vi_VN.tcvn \
- vi_VN.utf8 \
- wa_BE \
- wa_BE.iso88591 \
- wa_BE.iso885915@euro \
- wa_BE@euro \
- xh \
- xh_ZA \
- xh_ZA.iso88591 \
- xh_ZA.utf8 \
- xhosa \
- zh \
- zh.GBK \
- zh.UTF-8 \
- zh_CN \
- zh_CN.EUC \
- zh_CN.EUC@pinyin \
- zh_CN.EUC@radical \
- zh_CN.EUC@stroke \
- zh_CN.GB18030 \
- zh_CN.GB18030@pinyin \
- zh_CN.GB18030@radical \
- zh_CN.GB18030@stroke \
- zh_CN.GBK \
- zh_CN.GBK@pinyin \
- zh_CN.GBK@radical \
- zh_CN.GBK@stroke \
- zh_CN.UTF-8 \
- zh_CN.UTF-8@pinyin \
- zh_CN.UTF-8@radical \
- zh_CN.UTF-8@stroke \
- zh_CN.gb18030 \
- zh_CN.gb2312 \
- zh_CN.gbk \
- zh_CN.utf8 \
- zh_HK \
- zh_HK.BIG5HK \
- zh_HK.BIG5HK@radical \
- zh_HK.BIG5HK@stroke \
- zh_HK.UTF-8 \
- zh_HK.UTF-8@radical \
- zh_HK.UTF-8@stroke \
- zh_HK.big5hkscs \
- zh_HK.utf8 \
- zh_TW \
- zh_TW.BIG5 \
- zh_TW.BIG5@pinyin \
- zh_TW.BIG5@radical \
- zh_TW.BIG5@stroke \
- zh_TW.BIG5@zhuyin \
- zh_TW.EUC \
- zh_TW.EUC@pinyin \
- zh_TW.EUC@radical \
- zh_TW.EUC@stroke \
- zh_TW.EUC@zhuyin \
- zh_TW.UTF-8 \
- zh_TW.UTF-8@pinyin \
- zh_TW.UTF-8@radical \
- zh_TW.UTF-8@stroke \
- zh_TW.UTF-8@zhuyin \
- zh_TW.big5 \
- zh_TW.euctw \
- zh_TW.utf8 \
- zu \
- zu_ZA \
- zu_ZA.iso88591 \
- zu_ZA.utf8 \
- zulu
-
-
-# List of locales which should be linked to the "en_US" locale,
-# e.g. these locales should get the defaults (for example that
-# US-Letter is used as default papersize) mainly used in the USA
-US_LOCALES= \
- en_CA \
- en_CA.ISO8859-1 \
- en_CA.iso88591 \
- en_CA.utf8 \
- en_US.ISO8859-1 \
- en_US.ISO8859-15 \
- en_US.UTF-8 \
- en_US.iso88591 \
- en_US.iso885915 \
- en_US.utf8 \
- es_PR \
- es_PR.iso88591 \
- es_PR.utf8 \
- es_US \
- es_US.iso88591 \
- fr_CA \
- fr_CA.ISO8859-1 \
- fr_CA.iso88591 \
- fr_CA.utf8 \
- yi_US \
- yi_US.cp1255
-
-install::
- ( \
- cd $(DESTDIR)$(XPRINTDIR) ; \
- for i in $(C_LOCALES) \
- ; do \
- $(RM) $$i ; \
- $(LN) C $$i ; \
- done \
- ) ; \
- ( \
- cd $(DESTDIR)$(XPRINTDIR) ; \
- for i in $(US_LOCALES) \
- ; do \
- $(RM) $$i ; \
- $(LN) en_US $$i ; \
- done \
- )
-
diff --git a/nx-X11/programs/Xserver/XpConfig/README b/nx-X11/programs/Xserver/XpConfig/README
deleted file mode 100644
index d7447815d..000000000
--- a/nx-X11/programs/Xserver/XpConfig/README
+++ /dev/null
@@ -1,318 +0,0 @@
-
- --------------------------------------
- The X Print Service - The Basics
- --------------------------------------
-
-Index
- - 1.0 X Print Service Overview
-
- - 2.0 How the X Print Service Works
-
- - 3.0 Using the X Print Service
- - 3.1 X Print Server Configuration
- - 3.2 Starting the X Print Service
- - 3.3 Configuring the environment
- - 3.4 General End-User Sequence
-
-
-1.0 X Print Service Overview
-=============================
-
-The "X Print Service" technology allows X rendering to devices such as
-printers and fax. Most of the service is available in the X11
-technology stack as Xp, with the remainder in the CDE technology stack
-as DtPrint. Modifications have also been made to the Motif technology
-stack to support Xp and DtPrint.
-
-The Xp portion consists of:
- * Xp Extension for the X-Server (included in the X-Server Xprt)
- * Xp Extension API for the client side (libXp)
- * PCL ddx driver that converts core X to native PCL
- * Postscript ddx driver that converts core X to native Postscript
- * Raster ddx driver that generates xwd rasters which can be
- converted to PCL or Postscript rasters
-
-The DtPrint portion consists of:
- * A collection of print GUIs (libDtPrint)
- * A Print Dialog Manager that can assist a client in
- setting printing options (dtpdm, dtpdmd)
-
-From an X clients perspective, it can attach to one of two nearly
-identical X-Servers, a "Video" X-Server, and a "Print" X-Server
-which has the additional Xp capability but otherwise looks and
-behaves the same.
-
-
-
-2.0 How the X Print Service Works
-==================================
-
-The X Print Service expands on the traditional X-Server and Xlib world
-in four ways.
-
-1. Most obvious is the use of "print ddx drivers" instead of
- "video ddx drivers". While a video ddx driver modifies pixels
- in a video frame buffer, a print ddx driver generates "page
- description language (PDL)" output such as PCL or Postscript.
-
- Once a print ddx driver generates PDL output, it can be sent to
- a spooler such as lp(1) or retrieved by the client.
-
- Though not currently done, a single X-Server can support both
- print and video ddx drivers.
-
-2. Since printers support "paged" output, unlike video, a portion
- of the Xp Extension supports APIs to delineate printed output.
- For example, XpStartPage and XpEndPage tell the X-Server where
- a physical page starts and ends in an otherwise continuous
- stream of X rendering primitives. Likewise, XpStartJob and
- XpEndJob determine when a collection of pages starts and ends.
- XpEndJob typically causes the generated PDL to be submitted to
- a spooler, such as lp(1).
-
-3. Since printers have extensive capabilities, another portion of
- the Xp Extension supports APIs to manipulate "print contexts".
-
- Once a printer is selected using the Xp Extension API, a print
- context to represent it can be created. A print context
- embodies the printer selected - it contains the printer's
- default capabilities, selectable range of capabilities,
- printer state, and generated output. Some "attributes" within
- the print context can be modified by the user, and the
- X-Server and print ddx driver will react accordingly. For
- example, the attribute "content-orientation" can be set to
- "landscape" or "portrait".
-
-4. Since printers can have "built in" fonts, the Xp Extension in
- the X-Server works with the print ddx drivers to make
- available (for printing only) additional fonts on a per print
- context basis.
-
- When a print context is created and set for a given printer,
- the X font calls may be able to access additional printer
- fonts. To do this (typically), the X-Server must have access
- to "printer metric files" (.pmf) that describe at minimum the
- metrics of the built in fonts.
-
-
-
-3.0 Using the X Print Service
-==============================
-
-There are three tasks to start the X Print Service: 1) configuring the
-X Print Server, 2) starting the X Print Service, 3) configuring the user
-session so that clients can find the running X Print Service.
-
-The tasks are described in detail below.
-
-
-3.1 X Print Server Configuration
----------------------------------
-
-The X Print Server (Xprt) can read a number of configuration files which
-control its behavior and support for printers. Each vendor platform has
-a default location for this information. Xprt can also read the
-environment variable XPCONFIGDIR to locate alternate configuration
-directories. Common settings include:
-
- * export XPCONFIGDIR=/X11/lib/X11/XpConfig/
-
- * export XPCONFIGDIR=/proj/x11/xc/programs/Xserver/XpConfig/
-
-Xprt has many built-in defaults, and lacking any configuration files,
-will immediately try to support all printers visible via lpstat(1).
-
-In order of importance for configuration by a system administrator, the
-configuration files for a "C" locale are as follows.
-
- ${XPCONFIGDIR}/C/print/Xprinters
-
- `Xprinters' is the top most configuration file. It tells
- Xprt which specific printer names (e.g. mylaser) should
- be supported, and whether lpstat(1) or other commands
- should be used to automatically supplement the list of
- printers.
-
- ${XPCONFIGDIR}/C/print/attributes/printer
-
- The `printer' file maps printer names to model
- configurations (see `model-config' below). For example,
- "mylaser" could be mapped to a "HPDJ1600C", and all other
- arbitrary printers could be mapped to a default, such as
- "HPLJ4SI". When depending on lpstat(1) in the Xprinters
- file, setting up defaults in `printer' becomes all the
- more important.
-
- ${XPCONFIGDIR}/C/print/attributes/document
-
- The `document' file specifies the initial document values
- for any print jobs. For example, which paper tray to
- use, what default resolution, etc.
-
- ${XPCONFIGDIR}/C/print/attributes/job
-
- The `job' file specifies the initial job values for any
- print jobs. For example, "notification-profile" can be
- set so that when a print job is successfully sent to a
- printer, e-mail is sent to the user.
-
- ${XPCONFIGDIR}/C/print/models/HPDJ1600C/model-config
- ${XPCONFIGDIR}/C/print/models/HPDJ1600C/fonts/fonts.dir
- ${XPCONFIGDIR}/C/print/models/HPDJ1600C/fonts/9nb00051.pmf
- ${XPCONFIGDIR}/C/print/models/HPDJ1600C/fonts/9nb00093.pmf
-
- The `model-config' file has attributes that describe the
- printer model's capabilities and default settings.
- Printer model fonts may also be present. The model-config
- file also identifies the print ddx driver to be used.
-
- For each printer model supported, a complete hierarchy of
- files should exist. In most cases, these files do not
- need to be modified.
-
- ${XPCONFIGDIR}/C/print/ddx-config/raster/pcl
- ${XPCONFIGDIR}/C/print/ddx-config/raster/postscript
-
- The print ddx drivers can have highly specific
- configuration files to control their behavior. In most
- cases, these files do not need to be modified.
-
-
-3.2 Starting the X Print Service
----------------------------------
-
-The summary checklist for starting the X Print Service is as follows:
-
-1. Choose an execution model for the X Print Service. The X
- Print Service can be run on a per-user session basis, per
- machine basis, or can be run on a few machines globally
- available to a number of users.
-
-2. If print jobs are to be submitted to a spooler (almost always
- the case), make sure all needed printers are available to the
- spooler subsystem (most often lp(1)) on the same machine
- running the X Print Service.
-
-3. Configure the X Print Server. See ``X Print Server
- Configuration''.
-
-4. Depending on #1, start the X Print Server process "Xprt", and
- then the Print Dialog Manager Daemon process "dtpdmd" at the
- appropriate times.
-
-The details are described below.
-
-Because the X Print Service is based on X, it can be easily distributed.
-The most significant factors in which execution model to choose will be
-driven by:
-
- * how many printers will be accessable through the printer
- subsystem on any given machine. A system administrator may
- choose to cluster printers on a few given machines, or
- scatter them across an organization and possibly make
- extensive use of remote spoolers to make them globally
- available.
-
- * how many machines will need a copy of the X Print Server
- configuration files. The files have been architected so
- that one super-set version of them can be maintained and
- distributed (e.g. via NFS), and a per-machine or per-user
- version of the `Xprinters' is all that is needed to have the
- appropriate information in them utilized or ignored.
-
- * how many users can demand services from a given X Print
- Service.
-
-With the above in mind, some obvious execution models include:
-
- * Global - in this model, the system administrator is choosing
- to run the X Print Service on a *few* select machines with
- appropriate printers configured, and allow clients access to
- the global resource. This can centralize the administration
- of printers and configuration files, but may have to be
- monitored for performance loading.
-
- Startup would likely be done by boot-up scripts.
-
- * Per-machine - every machine with potential X Print Service
- users would run the service. Printer and configuration file
- administration is decentralized, and usage would be limited
- to the users on the machine.
-
- Startup would likely be done by boot-up scripts.
-
- * Per-user session - every user would run an entire X Print
- Service for themselves. In the future, the Video X Server
- normally started may contain Print X Server capability, so
- this model becomes very natural.
-
- Startup would likely be done at session login or by
- launching actions or processes manually once the user
- logs in. Note: the dtpdmd must be started after Xprt.
-
-Starting of the processes is straight forward. In strict order:
-
- [machineA] % Xprt [-XpFile <Xprinters file>] [:dispNum] &
-
- Note that Xprt will look for configuration files in either
- a default location or where XPCONFIGDIR points.
-
- -XpFile specifies an alternate `Xprinters' file, rather
- than the default one or `${XPCONFIGDIR}/C/print/Xprinters'.
-
- [machineA] % dtpdmd -d machineA[:dispNum] [-l /tmp/dtpdmd.log] &
-
- The dtpdmd will maintain an X-Selection on the X-Server,
- and will start dtpdm's as required to service requests.
-
-In all but the per-user session model, the machine running the dtpdmd
-(thus dtpdm's) will need display authorization to the users video
-display.
-
-
-
-3.3 Configuring the environment
---------------------------------
-
-Once a X Print Server and dtpdmd have been started -- many of them
-in some cases -- clients will need to find and use them. There are
-two mechanisms that allow clients to discover X Print Servers and
-printers.
-
- * "X Print Specifier" - assuming usage of the DtPrint print
- dialogs, the following notation is understood:
-
- printer_name@machine[:dispNum]
-
- For example:
-
- colorlj7@printhub:2
-
- In the above example, the X Print Server running at `printhub:2'
- is assumed to support the printer named `colorlj7'.
-
- * "XPSERVERLIST" - assuming usage of the DtPrint print dialogs,
- the environment variable "XPSERVERLIST" can contain a list
- of X Print Servers. For example:
-
- XPSERVERLIST="printhub:2 printhub:3 otherdept:0"
-
- Then in the dialogs, only a printer name needs to be entered.
- The dialog will then search the X Print Servers in XPSERVERLIST
- for a server than supports the printer, and then establish
- contact.
-
-3.4 General End-User Sequence
-------------------------------
-
-From most CDEnext applications, printing is accomplished by bringing
-down the <File> menu and selecting <Print...>. This will result in
-the DtPrintSetupBox dialog, which will request the name of a printer,
-and offer limited capability to configure print options (e.g. number
-of copies). If the user wishes, they can select <Setup...>, which
-will start a dtpdm capable of modifying additional print options.
-Finally, the user should select <Print>.
-
-
-
-$Xorg: README,v 1.3 2000/08/17 19:48:02 cpqbld Exp $
diff --git a/nx-X11/programs/Xserver/XpConfig/en_US/Imakefile b/nx-X11/programs/Xserver/XpConfig/en_US/Imakefile
deleted file mode 100644
index 1beed3bca..000000000
--- a/nx-X11/programs/Xserver/XpConfig/en_US/Imakefile
+++ /dev/null
@@ -1,8 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/11/23 05:42:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-SUBDIRS = print
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
diff --git a/nx-X11/programs/Xserver/XpConfig/en_US/print/Imakefile b/nx-X11/programs/Xserver/XpConfig/en_US/print/Imakefile
deleted file mode 100644
index 113a5456b..000000000
--- a/nx-X11/programs/Xserver/XpConfig/en_US/print/Imakefile
+++ /dev/null
@@ -1,26 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/06/09 05:42:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-SUBDIRS = attributes
-
-XPLOCALEPRINTDIR=$(XPRINTDIR)/en_US/print
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-
-MakeDirectories(install,$(XPLOCALEPRINTDIR))
-
-# We only have different values in "attributes", so link all other files
-# to the "defaults" in the C locale
-LINK_TO_C_LOCALE=Xprinters ddx-config models
-
-install::
- ( \
- cd $(DESTDIR)$(XPLOCALEPRINTDIR) ; \
- for i in $(LINK_TO_C_LOCALE) \
- ; do \
- $(RM) $$i ; \
- $(LN) ../../C/print/$$i $$i ; \
- done \
- )
diff --git a/nx-X11/programs/Xserver/XpConfig/en_US/print/attributes/Imakefile b/nx-X11/programs/Xserver/XpConfig/en_US/print/attributes/Imakefile
deleted file mode 100644
index 86979a31c..000000000
--- a/nx-X11/programs/Xserver/XpConfig/en_US/print/attributes/Imakefile
+++ /dev/null
@@ -1,18 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/11/23 05:42:52 gisburn Exp $
-
-XPATTRIBUTEDIR = $(XPRINTDIR)/en_US/print/attributes
-
-# Install the "en_US"-specific "document" attribute resources...
-InstallNonExecFile(document,$(XPATTRIBUTEDIR))
-
-# ... and reuse "job" and "printer" pools from the C locale
-install::
- ( \
- cd $(DESTDIR)$(XPATTRIBUTEDIR) ; \
- for i in job printer \
- ; do \
- $(RM) $$i ; \
- $(LN) ../../../C/print/attributes/$$i $$i ; \
- done \
- )
-
diff --git a/nx-X11/programs/Xserver/XpConfig/en_US/print/attributes/document b/nx-X11/programs/Xserver/XpConfig/en_US/print/attributes/document
deleted file mode 100644
index 253c46bce..000000000
--- a/nx-X11/programs/Xserver/XpConfig/en_US/print/attributes/document
+++ /dev/null
@@ -1,13 +0,0 @@
-# $Xorg: document,v 1.2 2002/11/30 22:10:03 gisburn Exp $
-# Document DPA-Object initial attribute values for en_US(-like) locales
-#
-# Note that the defaults (for all locales) are set in
-# ${XPCONFIGDIR}/C/print/attributes/document
-# Values in ${XPCONFIGDIR}/${LANG}/print/attributes/document are used to
-# set/override these defaults for a specific locale on demand
-
-# US and some other countries use US-Letter as default paper size
-# ("C"-locale default is "ISO-A4")
-*default-medium: na-letter
-
-# EOF.
diff --git a/nx-X11/programs/Xserver/Xprint/AttrValid.c b/nx-X11/programs/Xserver/Xprint/AttrValid.c
deleted file mode 100644
index cf9476003..000000000
--- a/nx-X11/programs/Xserver/Xprint/AttrValid.c
+++ /dev/null
@@ -1,702 +0,0 @@
-/* $Xorg: AttrValid.c,v 1.4 2001/03/14 18:43:17 pookie Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <scrnintstr.h>
-
-#include "attributes.h"
-
-/*
- * default medium-source-sizes supported = na-letter w/.25" margins
- */
-static XpOidMediumDiscreteSize DefaultMediumSize = {
- xpoid_val_medium_size_na_letter, xFalse, {6.35, 209.55, 6.35, 273.05}
-};
-static XpOidMediumDiscreteSizeList DefaultMediumSizeList = {
- &DefaultMediumSize, 1
-};
-static XpOidMediumSourceSize DefaultMediumSourceSize = {
- xpoid_unspecified, XpOidMediumSS_DISCRETE, { &DefaultMediumSizeList }
-};
-static XpOidMediumSS DefaultMediumSS = {
- &DefaultMediumSourceSize, 1
-};
-
-/*
- * if 'valid_oid_list' is NULL any oid found is considered valid
- */
-XpOid
-XpGetOidAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* valid_oid_list)
-{
- XpOid value_oid;
-
- value_oid = XpOidFromString(XpGetStringAttr(pContext, pool, oid));
- if((const XpOidList*)NULL == valid_oid_list
- ||
- XpOidListHasOid(valid_oid_list, value_oid))
- {
- return value_oid;
- }
- else
- {
- return xpoid_none;
- }
-}
-
-void
-XpPutOidAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- XpOid value_oid)
-{
- XpPutStringAttr(pContext, pool, oid, XpOidString(value_oid));
-}
-
-void
-XpValidateOidAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* valid_oids,
- XpOid default_oid)
-{
- XpOid value_oid;
- value_oid = XpGetOidAttr(pContext, pool, oid, valid_oids);
- XpPutOidAttr(pContext, pool, oid,
- value_oid == xpoid_none ? default_oid : value_oid);
-}
-
-/*
- * if 'valid_card_list' is NULL any cardinal found is considered valid
- */
-unsigned long
-XpGetCardAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidCardList* valid_card_list)
-{
- unsigned long value_card;
-
- if(XpOidParseUnsignedValue(XpGetStringAttr(pContext, pool, oid),
- (const char**)NULL,
- &value_card))
- {
- if((const XpOidCardList*)NULL == valid_card_list
- ||
- XpOidCardListHasCard(valid_card_list, value_card))
- {
- return value_card;
- }
- }
- return 0;
-}
-
-void
-XpPutCardAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- unsigned long value_card)
-{
- if(value_card > 0)
- {
- char value_out[16];
- sprintf(value_out, "%lu", value_card);
- XpPutStringAttr(pContext, pool, oid, value_out);
- }
- else
- XpPutStringAttr(pContext, pool, oid, (const char*)NULL);
-}
-
-void
-XpValidateCardAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidCardList* valid_cards,
- unsigned long default_card)
-{
- unsigned long value_card;
- value_card = XpGetCardAttr(pContext, pool, oid, valid_cards);
- XpPutCardAttr(pContext, pool, oid,
- value_card == 0 ? default_card : value_card);
-}
-
-XpOidList*
-XpGetListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* valid_oid_list)
-{
- return XpOidListNew(XpGetStringAttr(pContext, pool, oid), valid_oid_list);
-}
-
-void
-XpPutListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* list)
-{
- char* value_out;
-
- value_out = XpOidListString(list);
- XpPutStringAttr(pContext, pool, oid, value_out);
- XpOidFree(value_out);
-}
-
-void
-XpValidateListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* valid_oids,
- const XpOidList* default_oids)
-{
- XpOidList* list = XpGetListAttr(pContext, pool, oid, valid_oids);
- if(XpOidListCount(list) == 0)
- XpPutListAttr(pContext, pool, oid, default_oids);
- else
- XpPutListAttr(pContext, pool, oid, list);
- XpOidListDelete(list);
-}
-
-XpOidCardList*
-XpGetCardListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidCardList* valid_card_list)
-{
- return XpOidCardListNew(XpGetStringAttr(pContext, pool, oid),
- valid_card_list);
-}
-
-void
-XpPutCardListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidCardList* list)
-{
- char* value_out;
-
- value_out = XpOidCardListString(list);
- XpPutStringAttr(pContext, pool, oid, value_out);
- XpOidFree(value_out);
-}
-
-void
-XpValidateCardListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidCardList* valid_cards,
- const XpOidCardList* default_cards)
-{
- XpOidCardList* list = XpGetCardListAttr(pContext, pool, oid, valid_cards);
- if(XpOidCardListCount(list) == 0 && (XpOidCardList*)NULL != default_cards)
- XpPutCardListAttr(pContext, pool, oid, default_cards);
- else
- XpPutCardListAttr(pContext, pool, oid, list);
- XpOidCardListDelete(list);
-}
-
-XpOidDocFmtList*
-XpGetDocFmtListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidDocFmtList* valid_fmt_list)
-{
- return XpOidDocFmtListNew(XpGetStringAttr(pContext, pool, oid),
- valid_fmt_list);
-}
-
-void
-XpPutDocFmtListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidDocFmtList* list)
-{
- char* value_out;
-
- value_out = XpOidDocFmtListString(list);
- XpPutStringAttr(pContext, pool, oid, value_out);
- XpOidFree(value_out);
-}
-
-void
-XpValidateDocFmtListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidDocFmtList* valid_fmts,
- const XpOidDocFmtList* default_fmts)
-{
- XpOidDocFmtList* list;
-
- list = XpGetDocFmtListAttr(pContext, pool, oid, valid_fmts);
- if(XpOidDocFmtListCount(list) == 0
- &&
- (XpOidDocFmtList*)NULL != default_fmts)
- {
- XpPutDocFmtListAttr(pContext, pool, oid, default_fmts);
- }
- else
- {
- XpPutDocFmtListAttr(pContext, pool, oid, list);
- }
- XpOidDocFmtListDelete(list);
-}
-
-XpOidMediumSS*
-XpGetMediumSSAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* valid_trays,
- const XpOidList* valid_sizes)
-{
- return XpOidMediumSSNew(XpGetStringAttr(pContext, pool, oid),
- valid_trays, valid_sizes);
-}
-
-void
-XpPutMediumSSAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidMediumSS* msss)
-{
- char* value_out;
-
- value_out = XpOidMediumSSString(msss);
- XpPutStringAttr(pContext, pool, oid, value_out);
- XpOidFree(value_out);
-}
-
-const XpOidMediumSS*
-XpGetDefaultMediumSS()
-{
- return &DefaultMediumSS;
-}
-
-XpOidTrayMediumList*
-XpGetTrayMediumListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* valid_trays,
- const XpOidMediumSS* msss)
-{
- return XpOidTrayMediumListNew(XpGetStringAttr(pContext, pool, oid),
- valid_trays, msss);
-}
-
-void
-XpPutTrayMediumListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidTrayMediumList* tm)
-{
- char* value_out;
-
- value_out = XpOidTrayMediumListString(tm);
- XpPutStringAttr(pContext, pool, oid, value_out);
- XpOidFree(value_out);
-}
-
-void
-XpValidatePrinterMediaAttrs(XpContextPtr pContext,
- const XpOidList* valid_trays,
- const XpOidList* valid_sizes)
-{
- const XpOidMediumSS* msss;
- XpOidMediumSS* pool_msss;
- XpOidTrayMediumList* tm;
-
- pool_msss = XpGetMediumSSAttr(pContext, XPPrinterAttr,
- xpoid_att_medium_source_sizes_supported,
- valid_trays, valid_sizes);
- if(0 == XpOidMediumSSCount(pool_msss))
- msss = XpGetDefaultMediumSS();
- else
- msss = pool_msss;
- XpPutMediumSSAttr(pContext, XPPrinterAttr,
- xpoid_att_medium_source_sizes_supported, msss);
-
- tm = XpGetTrayMediumListAttr(pContext, XPPrinterAttr,
- xpoid_att_input_trays_medium,
- valid_trays, msss);
- XpPutTrayMediumListAttr(pContext, XPPrinterAttr,
- xpoid_att_input_trays_medium, tm);
-
- XpOidMediumSSDelete(pool_msss);
- XpOidTrayMediumListDelete(tm);
-}
-
-
-void
-XpValidatePrinterPool(XpContextPtr pContext,
- const XpValidatePoolsRec* vpr)
-{
- /*
- * content-orientations-supported
- */
- XpValidateListAttr(pContext, XPPrinterAttr,
- xpoid_att_content_orientations_supported,
- vpr->valid_content_orientations_supported,
- vpr->default_content_orientations_supported);
- /*
- * document-formats-supported
- */
- XpValidateDocFmtListAttr(pContext, XPPrinterAttr,
- xpoid_att_document_formats_supported,
- vpr->valid_document_formats_supported,
- vpr->default_document_formats_supported);
- /*
- * plexes-supported
- */
- XpValidateListAttr(pContext, XPPrinterAttr, xpoid_att_plexes_supported,
- vpr->valid_plexes_supported,
- vpr->default_plexes_supported);
- /*
- * printer-resolutions-supported
- */
- XpValidateCardListAttr(pContext, XPPrinterAttr,
- xpoid_att_printer_resolutions_supported,
- vpr->valid_printer_resolutions_supported,
- vpr->default_printer_resolutions_supported);
- /*
- * xp-embedded-formats-supported
- */
- XpValidateDocFmtListAttr(pContext, XPPrinterAttr,
- xpoid_att_xp_embedded_formats_supported,
- vpr->valid_xp_embedded_formats_supported,
- vpr->default_xp_embedded_formats_supported);
- /*
- * xp-listfonts-modes-supported
- */
- XpValidateListAttr(pContext, XPPrinterAttr,
- xpoid_att_xp_listfonts_modes_supported,
- vpr->valid_xp_listfonts_modes_supported,
- vpr->default_xp_listfonts_modes_supported);
- /*
- * xp-raw-formats-supported
- */
- XpValidateDocFmtListAttr(pContext, XPPrinterAttr,
- xpoid_att_xp_raw_formats_supported,
- vpr->valid_xp_raw_formats_supported,
- vpr->default_xp_raw_formats_supported);
- /*
- * xp-setup-proviso
- */
- XpValidateOidAttr(pContext, XPPrinterAttr, xpoid_att_xp_setup_proviso,
- vpr->valid_xp_setup_proviso, xpoid_none);
- /*
- * medium-source-sizes-supported
- * input-trays-mdeium
- */
- XpValidatePrinterMediaAttrs(pContext,
- vpr->valid_input_trays,
- vpr->valid_medium_sizes);
- /*
- * available-compressions-supported
- */
- XpValidateListAttr(pContext, XPPrinterAttr,
- xpoid_att_available_compressions_supported,
- vpr->valid_available_compressions_supported,
- vpr->default_available_compressions_supported);
-}
-
-
-void
-XpValidateNotificationProfile(XpContextPtr pContext)
-{
- const char* value_in;
- const char* value_out;
-
- value_in = XpGetStringAttr(pContext, XPJobAttr,
- xpoid_att_notification_profile);
- value_out = XpOidNotifyString(XpOidNotifyParse(value_in));
- XpPutStringAttr(pContext, XPJobAttr,
- xpoid_att_notification_profile, value_out);
-}
-
-void
-XpValidateJobPool(XpContextPtr pContext,
- const XpValidatePoolsRec* vpr)
-{
- /*
- * Note: the 'vpr' argument is unused in this
- * implementation; it is reserved for future use
- */
- XpOidList* job_attrs_supported;
- /*
- * only validate attributes found in job-attributes-supported
- */
- job_attrs_supported = XpGetListAttr(pContext, XPPrinterAttr,
- xpoid_att_job_attributes_supported,
- (const XpOidList*)NULL);
- /*
- * notification-profile
- */
- if(XpOidListHasOid(job_attrs_supported, xpoid_att_notification_profile))
- {
- XpValidateNotificationProfile(pContext);
- }
- /*
- * clean up
- */
- XpOidListDelete(job_attrs_supported);
-}
-
-
-static void
-XpValidateDocOrPagePool(XpContextPtr pContext,
- XPAttributes pool, /* XPDocAttr or XPPageAttr */
- const XpOidList* attrs_supported,
- const XpValidatePoolsRec* vpr)
-{
- /*
- * content-orientation
- */
- if(XpOidListHasOid(attrs_supported, xpoid_att_content_orientation))
- {
- XpOidList* content_orientations_supported;
- content_orientations_supported =
- XpGetListAttr(pContext, XPPrinterAttr,
- xpoid_att_content_orientations_supported,
- vpr->valid_content_orientations_supported);
- XpValidateOidAttr(pContext, pool, xpoid_att_content_orientation,
- content_orientations_supported, xpoid_none);
- XpOidListDelete(content_orientations_supported);
- }
- /*
- * copy-count
- */
- if(XpOidListHasOid(attrs_supported, xpoid_att_copy_count))
- XpValidateCardAttr(pContext, pool, xpoid_att_copy_count,
- (const XpOidCardList*)NULL, 0);
- /*
- * default-printer-resolution
- */
- if(XpOidListHasOid(attrs_supported, xpoid_att_default_printer_resolution))
- {
- XpOidCardList* printer_resolutions_supported;
- printer_resolutions_supported =
- XpGetCardListAttr(pContext, XPPrinterAttr,
- xpoid_att_printer_resolutions_supported,
- vpr->valid_printer_resolutions_supported);
- XpValidateCardAttr(pContext, pool,
- xpoid_att_default_printer_resolution,
- printer_resolutions_supported, 0);
- XpOidCardListDelete(printer_resolutions_supported);
- }
- /*
- * default-input-tray
- */
- if(XpOidListHasOid(attrs_supported, xpoid_att_default_input_tray))
- {
- XpOidTrayMediumList* input_trays_medium;
- const char* value_in;
- XpOid value_tray;
-
- input_trays_medium =
- XpGetTrayMediumListAttr(pContext, XPPrinterAttr,
- xpoid_att_input_trays_medium,
- (const XpOidList*)NULL,
- (const XpOidMediumSS*)NULL);
- value_in =
- XpGetStringAttr(pContext, pool, xpoid_att_default_input_tray);
- value_tray = XpOidFromString(value_in);
- if(!XpOidTrayMediumListHasTray(input_trays_medium, value_tray))
- value_tray = xpoid_none;
- XpPutOidAttr(pContext, pool, xpoid_att_default_input_tray, value_tray);
- XpOidTrayMediumListDelete(input_trays_medium);
- }
- /*
- * default-medium
- */
- if(XpOidListHasOid(attrs_supported, xpoid_att_default_medium))
- {
- XpOidMediumSS* msss;
- const char* value_in;
- XpOid value_size;
-
- msss = XpGetMediumSSAttr(pContext, XPPrinterAttr,
- xpoid_att_medium_source_sizes_supported,
- (const XpOidList*)NULL,
- (const XpOidList*)NULL);
- value_in = XpGetStringAttr(pContext, pool, xpoid_att_default_medium);
- value_size = XpOidFromString(value_in);
- if(!XpOidMediumSSHasSize(msss, value_size))
- value_size = xpoid_none;
- XpPutOidAttr(pContext, pool, xpoid_att_default_medium, value_size);
- XpOidMediumSSDelete(msss);
- }
- /*
- * document-format
- */
- if(XpOidListHasOid(attrs_supported, xpoid_att_document_format))
- {
- XpOidDocFmtList* document_formats_supported;
- const char* value_in;
- XpOidDocFmt* document_format;
- const char* value_out;
-
- document_formats_supported =
- XpGetDocFmtListAttr(pContext, XPPrinterAttr,
- xpoid_att_document_formats_supported,
- vpr->valid_document_formats_supported);
- value_in = XpGetStringAttr(pContext, pool, xpoid_att_document_format);
- document_format = XpOidDocFmtNew(value_in);
- if(XpOidDocFmtListHasFmt(document_formats_supported, document_format))
- value_out = XpOidDocFmtString(document_format);
- else
- value_out = XpOidDocFmtString(vpr->default_document_format);
- XpOidDocFmtListDelete(document_formats_supported);
- XpOidDocFmtDelete(document_format);
- XpPutStringAttr(pContext, pool, xpoid_att_document_format, value_out);
- XpOidFree(value_out);
- }
- /*
- * plex
- */
- if(XpOidListHasOid(attrs_supported, xpoid_att_plex))
- {
- XpOidList* plexes_supported;
- plexes_supported =
- XpGetListAttr(pContext, XPPrinterAttr, xpoid_att_plexes_supported,
- vpr->valid_plexes_supported);
- XpValidateOidAttr(pContext, pool, xpoid_att_plex,
- plexes_supported, xpoid_none);
- XpOidListDelete(plexes_supported);
- }
- /*
- * xp-listfonts-modes
- */
- if(XpOidListHasOid(attrs_supported, xpoid_att_xp_listfonts_modes))
- {
- XpOidList* xp_listfonts_modes_supported;
- xp_listfonts_modes_supported =
- XpGetListAttr(pContext, XPPrinterAttr,
- xpoid_att_xp_listfonts_modes_supported,
- vpr->valid_xp_listfonts_modes_supported);
- XpValidateListAttr(pContext, pool, xpoid_att_xp_listfonts_modes,
- xp_listfonts_modes_supported,
- (const XpOidList*)NULL);
- XpOidListDelete(xp_listfonts_modes_supported);
- }
- /*
- * available-compressions
- */
- if(XpOidListHasOid(attrs_supported, xpoid_att_available_compression))
- {
- XpOidList* available_compressions_supported;
- available_compressions_supported =
- XpGetListAttr(pContext, XPPrinterAttr,
- xpoid_att_available_compressions_supported,
- vpr->valid_available_compressions_supported);
- XpValidateOidAttr(pContext, pool, xpoid_att_available_compression,
- available_compressions_supported, xpoid_none);
- XpOidListDelete(available_compressions_supported);
- }
-}
-
-void
-XpValidateDocumentPool(XpContextPtr pContext,
- const XpValidatePoolsRec* vpr)
-{
- XpOidList* document_attrs_supported;
- /*
- * only validate attributes found in document-attributes-supported
- */
- document_attrs_supported =
- XpGetListAttr(pContext, XPPrinterAttr,
- xpoid_att_document_attributes_supported,
- (const XpOidList*)NULL);
- /*
- * validate
- */
- XpValidateDocOrPagePool(pContext, XPDocAttr,
- document_attrs_supported, vpr);
- /*
- * clean up
- */
- XpOidListDelete(document_attrs_supported);
-}
-
-void
-XpValidatePagePool(XpContextPtr pContext,
- const XpValidatePoolsRec* vpr)
-{
- XpOidList* page_attrs_supported;
- /*
- * only validate attributes found in xp-page-attributes-supported
- */
- page_attrs_supported =
- XpGetListAttr(pContext, XPPrinterAttr,
- xpoid_att_xp_page_attributes_supported,
- (const XpOidList*)NULL);
- /*
- * validate
- */
- XpValidateDocOrPagePool(pContext, XPPageAttr,
- page_attrs_supported, vpr);
- /*
- * clean up
- */
- XpOidListDelete(page_attrs_supported);
-}
-
-void
-XpValidateAttributePool(XpContextPtr pContext,
- XPAttributes pool,
- const XpValidatePoolsRec* vpr)
-{
- switch(pool)
- {
- case XPPrinterAttr:
- XpValidatePrinterPool(pContext, vpr);
- break;
-
- case XPDocAttr:
- XpValidateDocumentPool(pContext, vpr);
- break;
-
- case XPJobAttr:
- XpValidateJobPool(pContext, vpr);
- break;
-
- case XPPageAttr:
- XpValidatePagePool(pContext, vpr);
- break;
-
- default:
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/Xprint/AttrValid.h b/nx-X11/programs/Xserver/Xprint/AttrValid.h
deleted file mode 100644
index 440bea06f..000000000
--- a/nx-X11/programs/Xserver/Xprint/AttrValid.h
+++ /dev/null
@@ -1,216 +0,0 @@
-/* $Xorg: AttrValid.h,v 1.4 2001/03/14 18:43:40 pookie Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _Xp_AttrValid_h
-#define _Xp_AttrValid_h
-
-#include <X11/extensions/Printstr.h>
-#include "Oid.h"
-
-#define XpNumber(a) (sizeof(a) / sizeof(*(a)))
-
-/*
- * Attribute pool validation valid values and defaults
- */
-typedef struct
-{
- XpOidList* valid_content_orientations_supported;
- XpOidList* default_content_orientations_supported;
-
- XpOidDocFmtList* valid_document_formats_supported;
- XpOidDocFmtList* default_document_formats_supported;
-
- XpOidList* valid_input_trays;
- XpOidList* valid_medium_sizes;
-
- XpOidList* valid_plexes_supported;
- XpOidList* default_plexes_supported;
-
- XpOidCardList* valid_printer_resolutions_supported;
- XpOidCardList* default_printer_resolutions_supported;
-
- XpOidDocFmtList* valid_xp_embedded_formats_supported;
- XpOidDocFmtList* default_xp_embedded_formats_supported;
-
- XpOidList* valid_xp_listfonts_modes_supported;
- XpOidList* default_xp_listfonts_modes_supported;
-
- XpOidDocFmtList* valid_xp_raw_formats_supported;
- XpOidDocFmtList* default_xp_raw_formats_supported;
-
- XpOidList* valid_xp_setup_proviso;
-
- XpOidDocFmt* default_document_format;
- XpOidList* valid_available_compressions_supported;
- XpOidList* default_available_compressions_supported;
-
-} XpValidatePoolsRec;
-
-/*
- * XpOid resource access
- */
-#define XpGetStringAttr(pContext, pool, oid) \
- (const char*)XpGetOneAttribute(pContext, pool, (char*)XpOidString(oid))
-#define XpPutStringAttr(pContext, pool, oid, value) \
- XpPutOneAttribute(pContext, pool, XpOidString(oid), value)
-
-#ifdef _XP_PRINT_SERVER_ /* needed for XpContextPtr in Printstr.h */
-
-/*
- * XpOid-valued attribute access
- */
-XpOid XpGetOidAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* valid_oid_list);
-void XpPutOidAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- XpOid value_oid);
-void XpValidateOidAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* valid_oids,
- XpOid default_oid);
-/*
- * cardinal-valued attribute access
- */
-unsigned long XpGetCardAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidCardList* valid_card_list);
-void XpPutCardAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- unsigned long value_card);
-void XpValidateCardAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidCardList* valid_cards,
- unsigned long default_card);
-/*
- * XpOidList-valued attribute access
- */
-XpOidList* XpGetListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* valid_oid_list);
-void XpPutListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* list);
-void XpValidateListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* valid_oids,
- const XpOidList* default_oids);
-/*
- * XpOidCardList-valued attribute access
- */
-XpOidCardList* XpGetCardListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidCardList* valid_card_list);
-void XpPutCardListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidCardList* list);
-void XpValidateCardListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidCardList* valid_cards,
- const XpOidCardList* default_cards);
-/*
- * XpOidDocFmtList-valued attribute access
- */
-XpOidDocFmtList* XpGetDocFmtListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidDocFmtList* valid_fmt_list);
-void XpPutDocFmtListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidDocFmtList* list);
-void XpValidateDocFmtListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidDocFmtList* valid_fmts,
- const XpOidDocFmtList* default_fmts);
-/*
- * XpOidMediumSS-valued attribute access
- */
-XpOidMediumSS* XpGetMediumSSAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* valid_trays,
- const XpOidList* valid_sizes);
-void XpPutMediumSSAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidMediumSS* msss);
-const XpOidMediumSS* XpGetDefaultMediumSS();
-
-/*
- * XpOidTrayMediumList-valued attribute access
- */
-XpOidTrayMediumList* XpGetTrayMediumListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidList* valid_trays,
- const XpOidMediumSS* msss);
-void XpPutTrayMediumListAttr(XpContextPtr pContext,
- XPAttributes pool,
- XpOid oid,
- const XpOidTrayMediumList* tm);
-/*
- * Attribute pool validation
- */
-void XpValidateAttributePool(XpContextPtr pContext,
- XPAttributes pool,
- const XpValidatePoolsRec* vpr);
-void XpValidatePrinterPool(XpContextPtr pContext,
- const XpValidatePoolsRec* vpr);
-void XpValidateJobPool(XpContextPtr pContext,
- const XpValidatePoolsRec* vpr);
-void XpValidateDocumentPool(XpContextPtr pContext,
- const XpValidatePoolsRec* vpr);
-void XpValidatePagePool(XpContextPtr pContext,
- const XpValidatePoolsRec* vpr);
-
-#endif /* _XP_PRINT_SERVER_ */
-
-#endif /* _Xp_AttrValid_h - don't add anything after this line */
diff --git a/nx-X11/programs/Xserver/Xprint/DiPrint.h b/nx-X11/programs/Xserver/Xprint/DiPrint.h
deleted file mode 100644
index a26477971..000000000
--- a/nx-X11/programs/Xserver/Xprint/DiPrint.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* $Xorg: DiPrint.h,v 1.3 2000/08/17 19:48:04 cpqbld Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/*
- * The XpDiListEntry struct is the type of each element of the array
- * handed back to the extension code to handle a GetPrinterList request.
- * We don't use the printerDb directly because of the desire to handle
- * multiple locales. Creating this new array for each GetPrinterList
- * request will allow us to build it with the description in the locale of
- * the requesting client.
- */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _XpDiPrint_H_
-#define _XpDiPrint_H_ 1
-
-#include "scrnintstr.h"
-
-typedef struct _diListEntry {
- char *name;
- char *description;
- char *localeName;
- unsigned long rootWinId;
-} XpDiListEntry;
-
-extern void XpDiFreePrinterList(XpDiListEntry **list);
-
-extern XpDiListEntry **XpDiGetPrinterList(
- int nameLen,
- char *name,
- int localeLen,
- char *locale);
-
-extern char * XpDiGetDriverName(int index, char *printerName);
-
-extern WindowPtr XpDiValidatePrinter(char *printerName, int printerNameLen);
-
-extern int PrinterOptions(int argc, char **argv, int i);
-
-extern void PrinterUseMsg(void);
-
-extern void PrinterInitGlobals(void);
-
-extern void PrinterInitOutput(ScreenInfo *pScreenInfo, int argc, char **argv);
-
-extern void _XpVoidNoop(void);
-
-extern Bool _XpBoolNoop(void);
-
-#endif /* _XpDiPrint_H_ */
diff --git a/nx-X11/programs/Xserver/Xprint/Imakefile b/nx-X11/programs/Xserver/Xprint/Imakefile
deleted file mode 100644
index 0e66bf55d..000000000
--- a/nx-X11/programs/Xserver/Xprint/Imakefile
+++ /dev/null
@@ -1,135 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.4 2001/03/14 18:44:11 pookie Exp $
-#include <Server.tmpl>
-
-#ifndef XpRasterDDX
-#define XpRasterDDX YES
-#endif
-#ifndef XpColorPclDDX
-#define XpColorPclDDX YES
-#endif
-#ifndef XpMonoPclDDX
-#define XpMonoPclDDX NO
-#endif
-#ifndef XpPostScriptDDX
-#define XpPostScriptDDX YES
-#endif
-
-SRCS1 = Init.c Quarks.c spooler.c attributes.c Util.c mediaSizes.c \
- Oid.c AttrValid.c
-
-OBJS1 = Init.o Quarks.o spooler.o attributes.o Util.o mediaSizes.o \
- Oid.o AttrValid.o
-
-#ifdef OS2Architecture
-SRCS_OS2 = os2_stubs.c
-OBJS_OS2 = os2_stubs.o
-#endif
-
-#if XprtServer
-#if PrintOnlyServer || defined(PrintServerExtensions)
-#if PrintOnlyServer
-PO_DEFINES = -DPRINT_ONLY_SERVER
-#endif
-#endif
-#ifdef PrintServerExtensions
-XPEXT_DEFINES = PrintServerExtensions
-#else
-XPEXT_DEFINES = $(EXT_DEFINES)
-#endif
-SRCS2 = ddxInit.c
-OBJS2 = ddxInit.o
-#endif
-
-SRCS3 = miinitext.c dpmsstubs.c
-OBJS3 = miinitext.o dpmsstubs.o
-
-SRCS = $(SRCS1) $(SRCS2) $(SRCS3) $(SRCS_OS2)
-
-OBJS = $(OBJS1) $(OBJS_OS2)
-
-#if XpRasterDDX
-RASTDIR = raster
-RASTDEF = -DXPRASTERDDX
-#endif
-#if XpColorPclDDX
-PCLDIR = pcl
-PCLDEF = -DXPPCLDDX
-#endif
-#if XpMonoPclDDX
-MPCLDIR = pcl-mono
-MPCLDEF = -DXPMONOPCLDDX
-#endif
-#if XpPostScriptDDX
-PSDIR = ps
-PSDEF = -DXPPSDDX
-#endif
-
-#if HasMkstemp
-MKTMP_DEFINES = -DHAS_MKSTEMP
-#endif
-
-#if XpRasterDDX || XpColorPclDDX || XpMonoPclDDX || XpPostScriptDDX
-
-SUBDIRS = $(RASTDIR) $(PCLDIR) $(MPCLDIR) $(PSDIR) etc
-#define IHaveSubdirs
-
-#endif
-
- INCLUDES = -I$(XINCLUDESRC) -I. -I../mfb -I../mi -I../cfb \
- -I../include -I$(TOP)/include -I$(LIBSRC) \
- -I$(EXTINCSRC) -I$(FONTINCSRC) -I$(XLIBSRC)
-
-
- LINTLIBS = $(TOP)/server/dix/llib-ldix.ln $(TOP)/server/os/llib-los.ln \
- $(TOP)/server/ddx/mfb/llib-lmfb.ln \
- $(TOP)/server/ddx/mi/llib-lmi.ln \
- $(TOP)/server/ddx/cfb/llib-lcfb.ln
-
-DEFINES = -DXPRINTDIR=\"$(XPRINTDIR)\" $(RASTDEF) $(PCLDEF) $(MPCLDEF) \
- $(PSDEF) $(MKTMP_DEFINES) -UXFree86LOADER -D_XP_PRINT_SERVER_
-
-/* Go ahead: Call me paranoid ... */
-Makefiles::
- RemoveFiles(Quark.c Xlcint.h Xresource.h Xrm.c XrmI.h)
-
-LinkSourceFile(Quarks.c,$(XLIBSRC))
-
-NormalLibraryObjectRule()
-
-#if XprtServer
-all:: $(OBJS2) $(OBJS_OS2) $(OBJS3)
-#endif
-
-NormalLibraryTarget(printer,$(OBJS))
-NormalLintTarget($(SRCS))
-
-SpecialCObjectRule(ddxInit,$(ICONFIGFILES),$(PO_DEFINES) $(OS_DEFINES) $(EXT_DEFINES))
-#if XprtServer
-LinkSourceFile(miinitext.c,$(SERVERSRC)/mi)
-SpecialCObjectRule(miinitext,$(ICONFIGFILES), -DPRINT_ONLY_SERVER $(OS_DEFINES) $(XPEXT_DEFINES) -DXPRINT)
-LinkSourceFile(dpmsstubs.c,$(SERVERSRC)/Xext)
-LinkSourceFile(dpmsproc.h,$(SERVERSRC)/Xext)
-SpecialCObjectRule(dpmsstubs,$(ICONFIGFILES),$(PO_DEFINES) $(OS_DEFINES) $(XPEXT_DEFINES) -DXPRINT)
-#endif
-
-#ifdef OS2Architecture
-LinkSourceFile(os2_stubs.c,../hw/xfree86/os-support/os2)
-SpecialCObjectRule(os2_stubs,$(ICONFIGFILES),-DOS2NULLSELECT)
-#endif
-
-#ifdef IHaveSubdirs
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-MakeLintLibSubdirs($(SUBDIRS))
-#endif
-
-DependTarget()
-
-InstallManPage(Xprt,$(MANDIR))
-
-#ifdef HasDocBookTools
-all:: Xprt.man Xprt.html
-
-ConvertDocBookToManPage(Xprt.sgml, Xprt.man)
-ConvertDocBookToHTML(Xprt.sgml, Xprt.html)
-#endif /* HasDocBookTools */
diff --git a/nx-X11/programs/Xserver/Xprint/Init.c b/nx-X11/programs/Xserver/Xprint/Init.c
deleted file mode 100644
index 0bc1cf39e..000000000
--- a/nx-X11/programs/Xserver/Xprint/Init.c
+++ /dev/null
@@ -1,1934 +0,0 @@
-/* $Xorg: Init.c,v 1.5 2001/03/07 17:31:33 pookie Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996-2004 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-(c) Copyright 2003-2004 Roland Mainz <roland.mainz@nrubsig.org>
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: printer/Init.c
-** *
-** * Contents:
-** * The InitOutput routine here would presumably
-** * be called from the normal server's InitOutput
-** * after all display screens have been added.
-** * There is are ifdef'd routines suitable for
-** * use in building a printer-only server. Turn
-** * on the "PRINTER_ONLY_SERVER" define if this is
-** * to be the only ddx-level driver.
-** *
-** * Copyright: Copyright 1993,1995 Hewlett-Packard Company
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <locale.h>
-#ifdef __hpux
-#include <sys/sysmacros.h>
-#endif
-
-#include <X11/X.h>
-#define NEED_EVENTS 1
-#include <X11/Xproto.h>
-#include <servermd.h>
-
-#include "screenint.h"
-#include "input.h"
-#include "cursor.h"
-#include "misc.h"
-#include "windowstr.h"
-#include "inputstr.h"
-
-#include "gcstruct.h"
-#include <X11/fonts/fontstruct.h>
-#include "errno.h"
-
-typedef char *XPointer;
-#define HAVE_XPointer 1
-
-#define Status int
-#include <X11/Xresource.h>
-
-#include "DiPrint.h"
-#include "attributes.h"
-
-#include "os.h"
-#include "spooler.h"
-
-static void GenericScreenInit(
- int index,
- ScreenPtr pScreen,
- int argc,
- char **argv);
-static Bool InitPrintDrivers(
- int index,
- ScreenPtr pScreen,
- int argc,
- char **argv);
-
-/*
- * The following two defines are used to build the name "X*printers", where
- * the "*" is replaced by the display number. This is used to construct
- * the name of the default printers configuration file if the -XpFile
- * command line option was not specified.
- */
-#define XNPRINTERSFILEPREFIX "/X"
-#define XNPRINTERSFILESUFFIX "printers"
-#define XPRINTERSFILENAME "Xprinters"
-
-#define MODELDIRNAME "/models"
-#define FONTDIRNAME "/fonts"
-
-#ifdef XPRASTERDDX
-
-static
-PixmapFormatRec RasterPixmapFormats[] = {
- { 1, 1, BITMAP_SCANLINE_PAD }
-};
-#define NUMRASTFORMATS (sizeof RasterPixmapFormats)/(sizeof RasterPixmapFormats[0])
-
-#include "raster/Raster.h"
-
-#endif
-
-#ifdef XPPCLDDX
-
-static
-PixmapFormatRec ColorPclPixmapFormats[] = {
- { 1, 1, BITMAP_SCANLINE_PAD },
- { 8, 8, BITMAP_SCANLINE_PAD },
- { 24, 32, BITMAP_SCANLINE_PAD }
-};
-
-#define NUMCPCLFORMATS (sizeof ColorPclPixmapFormats)/(sizeof ColorPclPixmapFormats[0])
-
-#endif
-
-#ifdef XPMONOPCLDDX
-
-static
-PixmapFormatRec MonoPclPixmapFormats[] = {
- { 1, 1, BITMAP_SCANLINE_PAD }
-};
-
-#define NUMMPCLFORMATS (sizeof MonoPclPixmapFormats)/(sizeof MonoPclPixmapFormats[0])
-
-#endif
-
-#if defined(XPPCLDDX) || defined(XPMONOPCLDDX)
-#include "pcl/Pcl.h"
-#endif
-
-#ifdef XPPSDDX
-
-static
-PixmapFormatRec PSPixmapFormats[] = {
- { 1, 1, BITMAP_SCANLINE_PAD },
- { 8, 8, BITMAP_SCANLINE_PAD },
- { 12, 16, BITMAP_SCANLINE_PAD },
- { 14, 16, BITMAP_SCANLINE_PAD },
- { 16, 16, BITMAP_SCANLINE_PAD },
- { 24, 32, BITMAP_SCANLINE_PAD }
-};
-
-#define NUMPSFORMATS (sizeof PSPixmapFormats)/(sizeof PSPixmapFormats[0])
-
-#include "ps/Ps.h"
-
-#endif
-
-/*
- * The driverInitArray contains an entry for each driver the
- * server knows about. Each element contains pointers to pixmap formats, the
- * driver's initialization routine, and pointers to the driver's
- * attribute validation rec, and/or a driver function which
- * returns the maximum medium width&height, and maximum resolution
- * given a printer name. Either the validation rec OR the dimension
- * function can be NULL. If the function is non-NULL then it
- * will be called, and will be passed the (possibly NULL) validation rec.
- * If the function is NULL, then XpGetMaxWidthHeightRes() is called.
- */
-typedef struct _driverInitRec {
- char *driverName;
- pBFunc initFunc;
- XpValidatePoolsRec *pValRec;
- pVFunc dimensionsFunc;
- PixmapFormatRec *pFmts;
- int numFmts;
-} driverInitRec;
-
-static driverInitRec driverInits[] = {
-#ifdef XPRASTERDDX
- {
- "XP-RASTER",
- InitializeRasterDriver,
- &RasterValidatePoolsRec,
- (pVFunc) NULL,
- RasterPixmapFormats,
- NUMRASTFORMATS
- },
-#endif
-#ifdef XPPCLDDX
- {
- "XP-PCL-COLOR",
- InitializeColorPclDriver,
- &PclValidatePoolsRec,
- (pVFunc) NULL,
- ColorPclPixmapFormats,
- NUMCPCLFORMATS
- },
-#endif
-#ifdef XPMONOPCLDDX
- {
- "XP-PCL-MONO",
- InitializeMonoPclDriver,
- &PclValidatePoolsRec,
- (pVFunc) NULL,
- MonoPclPixmapFormats,
- NUMMPCLFORMATS
- },
-#endif
-#ifdef XPPSDDX
- {
- "XP-POSTSCRIPT",
- InitializePsDriver,
- &PsValidatePoolsRec,
- (pVFunc) NULL,
- PSPixmapFormats,
- NUMPSFORMATS
- },
-#endif
-};
-
-
-/*
- * The printerDb variable points to a list of PrinterDbEntry structs
- * which map printer names with screen numbers and driver names.
- */
-typedef struct _printerDbEntry {
- struct _printerDbEntry *next;
- char *name;
- char *qualifier;
- int screenNum;
- char *driverName;
- char *desc;
-} PrinterDbEntry, *PrinterDbPtr;
-
-static PrinterDbPtr printerDb = (PrinterDbPtr)NULL;
-
-/*
- * The nameMap is a list used in initializing the attribute store
- * for each printer. The list is freed once the printerDb is built
- * and the attribute stores for all printers have been initialized.
- */
-typedef struct _nameMapEntry {
- struct _nameMapEntry *next;
- char *name;
- char *qualifier;
-} NameMapEntry, *NameMapPtr;
-
-static NameMapPtr nameMap = (NameMapPtr)NULL;
-
-/*
- * The driverMap is a list which provides the mapping between driver names
- * and screen numbers. It is built and used
- * by RehashPrinterList to correctly fill in the screenNum field in the
- * printerDb entries. The list is freed before RehashPrinterList terminates.
- */
-typedef struct _driverMapping {
- struct _driverMapping *next;
- char *driverName;
- int screenNum;
-} DriverMapEntry, *DriverMapPtr;
-
-static const char configFilePath[] =
-"/etc/dt/config/print:/usr/dt/config/print";
-
-static const char printServerConfigDir[] = "XPSERVERCONFIGDIR";
-
-static int printScreenPrivIndex,
- printWindowPrivIndex,
- printGCPrivIndex;
-static unsigned long printGeneration = 0;
-static char *configFileName = (char *)NULL;
-static Bool freeDefaultFontPath = FALSE;
-static char *origFontPath = (char *)NULL;
-
-static Bool xprintInitGlobalsCalled = FALSE;
-/*
- * This function is responsible for doing initalisation of any global
- * variables at an very early point of server startup (even before
- * |ProcessCommandLine()|.
- */
-void PrinterInitGlobals(void)
-{
- extern char dispatchExceptionAtReset; /* defined in Xserver/dix/dispatch.c */
-
- xprintInitGlobalsCalled = TRUE;
-
-#ifdef DAMAGE
- /* Disable DAMAGE extension for now as it does not work with
- * the Postscript DDX yet (see
- * https://bugs.freedesktop.org/show_bug.cgi?id=1660) ...
- * (you can enable the DAMAGE extension explicitly via
- * % X +extension DAMAGE ... #) ;-( */
- {
- extern Bool noDamageExtension;
- noDamageExtension = TRUE;
- }
-#endif /* DAMAGE */
-
-#ifdef SMART_SCHEDULE
- /* Somehow the XF86 "smart scheduler" completely kills the Xprint DDX
- * (see http://xprint.freedesktop.org/cgi-bin/bugzilla/show_bug.cgi?id=467
- * ("Xfree86's "smart scheduler" breaks Xprt") */
- SmartScheduleDisable = TRUE;
-#endif /* SMART_SCHEDULE */
-
- /* Disable internal screensaver for Xprint (workaround for
- * http://pdx.freedesktop.org/cgi-bin/bugzilla/show_bug.cgi?id=567 ("Xorg
- * Xprt starts to consume 100% CPU when being idle for some time")) */
- defaultScreenSaverTime = 0;
-
- /* Ensure that the maximum request size for the BIGREQUESTS extension
- * is at least 8MB (see
- * http://xprint.freedesktop.org/cgi-bin/bugzilla/show_bug.cgi?id=622 - "RFE:
- * Xprt's default BIGREQUESTS extension buffer size should be 8MB")
- */
- maxBigRequestSize = (8*1048576)-1;
-
- /* Xprt should not reset by default when the last client exists
- * (default for Xprt is |0|, video Xservers use |DE_RESET|) */
- dispatchExceptionAtReset = 0;
-}
-
-/*
- * PrinterUseMsg() prints usage for the Xprint-specific options
- */
-void PrinterUseMsg(void)
-{
- XpSpoolerTypePtr curr = xpstm;
-
- /* Option '-XpFile' */
- ErrorF("-XpFile file specifies an alternate `Xprinters' file, rather\n");
- ErrorF(" than the default one (e.g.\n");
- ErrorF(" `${XPCONFIGDIR}/${LANG}/print/Xprinters') or\n");
- ErrorF(" `${XPCONFIGDIR}/C/print/Xprinters'.\n");
-
- /* Option '-XpSpoolerType' */
- ErrorF("-XpSpoolerType string specifies a spooler type.\n");
- ErrorF(" Supported values are:\n");
-
- while( curr->name != NULL )
- {
- ErrorF(" - '%s'\n", curr->name);
- curr++;
- }
- ErrorF(" (multiple values can be specified, seperated by ':',\n");
- ErrorF(" the first active spooler will be chosen).\n");
- ErrorF(" default is '%s'.\n", XPDEFAULTSPOOLERNAMELIST);
-}
-
-/*
- * PrinterOptions checks argv[i] to see if it is our command line
- * option specifying a configuration file name. It returns the index
- * of the next option to process.
- */
-int
-PrinterOptions(
- int argc,
- char **argv,
- int i)
-{
- extern void ddxUseMsg();
- if(strcmp(argv[i], "-XpFile") == 0)
- {
- if ((i + 1) >= argc) {
- ddxUseMsg ();
- return i + 2;
- }
- configFileName = argv[i + 1];
- return i + 2;
- }
- else if(strcmp(argv[i], "-XpSpoolerType") == 0)
- {
- if ((i + 1) >= argc) {
- ddxUseMsg ();
- return i + 2;
- }
- XpSetSpoolerTypeNameList(argv[i + 1]);
- return i + 2;
- }
- else
- {
- return i;
- }
-}
-
-/************************************************************
- * GetInitFunc --
- *
- * This routine is called from the InitPrintDrivers function.
- * Given the name of a driver, return a pointer to the driver's
- * initialization function.
- *
- * Results:
- * Returns a pointer to the initialization function for the driver.
- *
- *
- ************************************************************/
-
-/*
-typedef Bool (*pIFunc)();
-static pIFunc
-GetInitFunc(driverName)
-*/
-
-static pBFunc GetInitFunc(char *driverName)
-{
- driverInitRec *pInitRec;
- int numDrivers = sizeof(driverInits)/sizeof(driverInitRec);
- int i;
-
- for(pInitRec = driverInits, i = 0; i < numDrivers; pInitRec++, i++)
- {
- if( !strcmp( driverName, pInitRec->driverName ) )
- return pInitRec->initFunc;
- }
-
- return 0;
-}
-
-static void
-GetDimFuncAndRec(
- char *driverName,
- XpValidatePoolsRec **pValRec,
- pVFunc *dimensionsFunc)
-{
- driverInitRec *pInitRec;
- int numDrivers = sizeof(driverInits)/sizeof(driverInitRec);
- int i;
-
- for(pInitRec = driverInits, i = 0; i < numDrivers; pInitRec++, i++)
- {
- if( !strcmp( driverName, pInitRec->driverName ) )
- {
- *dimensionsFunc = pInitRec->dimensionsFunc;
- *pValRec = pInitRec->pValRec;
- return ;
- }
- }
-
- *dimensionsFunc = 0;
- *pValRec = 0;
- return;
-}
-
-static void
-FreePrinterDb(void)
-{
- PrinterDbPtr pCurEntry, pNextEntry;
-
- for(pCurEntry = printerDb, pNextEntry = (PrinterDbPtr)NULL;
- pCurEntry != (PrinterDbPtr)NULL; pCurEntry = pNextEntry)
- {
- pNextEntry = pCurEntry->next;
- if(pCurEntry->name != (char *)NULL)
- xfree(pCurEntry->name);
- if(pCurEntry->desc != (char *)NULL)
- xfree(pCurEntry->desc);
- /*
- * We don't free the driver name, because it's expected to simply
- * be a pointer into the xrm database.
- */
- xfree(pCurEntry);
- }
- printerDb = (PrinterDbPtr)NULL;
-}
-
-/*
- * AddPrinterDbName allocates an entry in the printerDb list, and
- * initializes the "name". It returns TRUE if the element was
- * successfully added, and FALSE if an allocation error ocurred.
- * XXX AddPrinterDbName needs to check for (and not add) duplicate names.
- */
-static Bool
-AddPrinterDbName(char *name, char *desc)
-{
- PrinterDbPtr pEntry = (PrinterDbPtr)xalloc(sizeof(PrinterDbEntry));
-
- if(pEntry == (PrinterDbPtr)NULL) return FALSE;
- pEntry->name = (name != NULL) ? strdup(name) : NULL;
- pEntry->desc = (desc != NULL) ? strdup(desc) : NULL;
- pEntry->qualifier = (char *)NULL;
-
- if(printerDb == (PrinterDbPtr)NULL)
- {
- pEntry->next = (PrinterDbPtr)NULL;
- printerDb = pEntry;
- }
- else
- {
- pEntry->next = printerDb;
- printerDb = pEntry;
- }
- return TRUE;
-}
-
-static int
-AugmentPrinterDb(const char *command)
-{
- FILE *fp;
- char name[256];
- int num_printers = 0; /* Number of printers we found */
- size_t namelen;
- char *desc = NULL;
-
- fp = popen(command, "r");
- /* XXX is a 256 character limit overly restrictive for printer names? */
- while(fgets(name, 256, fp) != (char *)NULL && (namelen=strlen(name)))
- {
- char *option = name;
-
- name[namelen-1] = (char)'\0'; /* strip the \n */
-
-#define XP_DESCRIPTOR "xp-printerattr.descriptor="
-#define XP_DESCRIPTOR_LEN (sizeof(XP_DESCRIPTOR)-1)
- while ((option = strchr(option, '\t'))) {
- option++; /* Skip the '\t' */
- if (!strncmp(option, XP_DESCRIPTOR, XP_DESCRIPTOR_LEN)) {
- *(option-1) = '\0'; /* Kill the '\t' (only if we found a valid option) */
- option += XP_DESCRIPTOR_LEN;
- if (*option != '\0') {
- desc = option;
- }
- }
- else
- {
- /* Unknown option */
- ErrorF("AugmentPrinterDb: Unknown option '%s'\n", option);
- }
- }
- AddPrinterDbName(name, desc);
- num_printers++;
- }
- pclose(fp);
- return num_printers;
-}
-
-/*
- * FreeNameMap frees all remaining memory associated with the nameMap.
- */
-static void
-FreeNameMap(void)
-{
- NameMapPtr pEntry, pTmp;
-
- for(pEntry = nameMap, pTmp = (NameMapPtr)NULL;
- pEntry != (NameMapPtr)NULL;
- pEntry = pTmp)
- {
- if(pEntry->name != (char *)NULL)
- xfree(pEntry->name);
- if(pEntry->qualifier != (char *)NULL)
- xfree(pEntry->qualifier);
- pTmp = pEntry->next;
- xfree(pEntry);
- }
- nameMap = (NameMapPtr)NULL;
-}
-
-/*
- * AddNameMap adds an element to the nameMap linked list.
- */
-static Bool
-AddNameMap(char *name, char *qualifier)
-{
- NameMapPtr pEntry;
-
- if((pEntry = (NameMapPtr)xalloc(sizeof(NameMapEntry))) == (NameMapPtr)NULL)
- return FALSE;
- pEntry->name = name;
- pEntry->qualifier = qualifier;
- pEntry->next = nameMap;
- nameMap = pEntry;
- return TRUE;
-}
-
-/*
- * MergeNameMap - puts the "map" names (aka qualifiers, aliases) into
- * the printerDb. This should be called once, after both the printerDb
- * and nameMap lists are complete. When/if MergeNameMap finds a map for
- * an entry in the printerDb, the qualifier is _moved_ (not copied) to
- * the printerDb. This means that the qualifier pointer in the nameMap
- * is NULLed out.
- */
-static void
-MergeNameMap(void)
-{
- NameMapPtr pMap;
- PrinterDbPtr pDb;
-
- for(pMap = nameMap; pMap != (NameMapPtr)NULL; pMap = pMap->next)
- {
- for(pDb = printerDb; pDb != (PrinterDbPtr)NULL; pDb = pDb->next)
- {
- if(!strcmp(pMap->name, pDb->name))
- {
- pDb->qualifier = pMap->qualifier;
- pMap->qualifier = (char *)NULL;
- }
- }
- }
-}
-
-/*
- * CreatePrinterAttrs causes the attribute stores to be built for
- * each printer in the printerDb.
- */
-static void
-CreatePrinterAttrs(void)
-{
- PrinterDbPtr pDb;
-
- for(pDb = printerDb; pDb != (PrinterDbPtr)NULL; pDb = pDb->next)
- {
- XpBuildAttributeStore(pDb->name, (pDb->qualifier)?
- pDb->qualifier : pDb->name);
- }
-}
-
-#ifdef XPPSDDX
-#define defaultDriver "XP-POSTSCRIPT"
-#else
-#ifdef XPPCLDDX
-#define defaultDriver "XP-PCL-COLOR"
-#else
-#ifdef XPMONOPCLDDX
-#define defaultDriver "XP-PCL-MONO"
-#else
-#define defaultDriver "XP-RASTER"
-#endif
-#endif
-#endif
-
-/*
- * StoreDriverNames - queries the attribute store for the ddx-identifier.
- * if the ddx-identifier is not in the attribute database, then a default
- * ddx-identifier is store in both the attribute store for the printer,
- * and in the printerDb.
- * The ddx-identifier is stored in the printerDb for use in initializing
- * the screens.
- */
-static void
-StoreDriverNames(void)
-{
- PrinterDbPtr pEntry;
-
- for(pEntry = printerDb; pEntry != (PrinterDbPtr)NULL;
- pEntry = pEntry->next)
- {
- pEntry->driverName = (char*)XpGetPrinterAttribute(pEntry->name,
- "xp-ddx-identifier");
- if(pEntry->driverName == (char *)NULL ||
- strlen(pEntry->driverName) == 0 ||
- GetInitFunc(pEntry->driverName) == (Bool(*)())NULL)
- {
- if (pEntry->driverName && (strlen(pEntry->driverName) != 0)) {
- ErrorF("Xp Extension: Can't load driver %s\n",
- pEntry->driverName);
- ErrorF(" init function missing\n");
- }
-
- pEntry->driverName = defaultDriver;
- XpAddPrinterAttribute(pEntry->name,
- (pEntry->qualifier != (char *)NULL)?
- pEntry->qualifier : pEntry->name,
- "*xp-ddx-identifier", pEntry->driverName);
- }
- }
-}
-
-/*
- * StoreDescriptors - queries the attribute store for the descriptor.
- * if the descriptor is not in the attribute database, then the descriptor
- * from the printerDb is store in the attribute store for the printer.
- */
-static void
-StoreDescriptors()
-{
- PrinterDbPtr pEntry;
-
- for(pEntry = printerDb; pEntry != (PrinterDbPtr)NULL;
- pEntry = pEntry->next)
- {
- if (pEntry->desc != NULL)
- {
- XpAddPrinterAttribute(pEntry->name,
- (pEntry->qualifier != (char *)NULL)?
- pEntry->qualifier : pEntry->name,
- "*descriptor", pEntry->desc);
- }
- }
-}
-
-static char *
-MbStrchr(
- char *str,
- int ch)
-{
- size_t mbCurMax = MB_CUR_MAX;
- wchar_t targetChar, curChar;
- char tmpChar;
- int i, numBytes, byteLen;
-
- if(mbCurMax <= 1) return strchr(str, ch);
-
- tmpChar = (char)ch;
- mbtowc(&targetChar, &tmpChar, mbCurMax);
- for(i = 0, numBytes = 0, byteLen = strlen(str); i < byteLen; i += numBytes)
- {
- numBytes = mbtowc(&curChar, &str[i], mbCurMax);
- if(curChar == targetChar) return &str[i];
- }
- return (char *)NULL;
-}
-
-/*
- * GetConfigFileName - Looks for a "Xprinters" file in
- * $(XPRINTDIR)/$LANG/print, and then in $(XPRINTDIR)/C/print. If it
- * finds such a file, it returns the path to the file. The returned
- * string must be freed by the caller.
- */
-static char *
-GetConfigFileName(void)
-{
- /*
- * We need to find the system-wide file, if one exists. This
- * file can be in either $(XPRINTDIR)/$LANG/print, or in
- * $(PRINTDIR)/C/print, and the file itself is named "Xprinters".
- */
- char *dirName, *filePath;
-
- /*
- * Check for a LANG-specific file.
- */
- if((dirName = XpGetConfigDir(TRUE)))
- {
- filePath = (char *)xalloc(strlen(dirName) +
- strlen(XPRINTERSFILENAME) + 2);
-
- if(filePath == (char *)NULL)
- {
- xfree(dirName);
- return (char *)NULL;
- }
-
- sprintf(filePath, "%s/%s", dirName, XPRINTERSFILENAME);
- xfree(dirName);
- if(access(filePath, R_OK) == 0)
- return filePath;
-
- xfree(filePath);
- }
-
- if((dirName = XpGetConfigDir(FALSE)))
- {
- filePath = (char *)xalloc(strlen(dirName) +
- strlen(XPRINTERSFILENAME) + 2);
- if(filePath == (char *)NULL)
- {
- xfree(dirName);
- return (char *)NULL;
- }
- sprintf(filePath, "%s/%s", dirName, XPRINTERSFILENAME);
- xfree(dirName);
- if(access(filePath, R_OK) == 0)
- return filePath;
- xfree(filePath);
- }
- return (char *)NULL;
-}
-
-/*
- * BuildPrinterDb - reads the config file if it exists, and if necessary
- * executes a command such as lpstat to generate a list of printers.
- * XXX
- * XXX BuildPrinterDb must be rewritten to allow 16-bit characters in
- * XXX printer names. The will involve replacing the use of strtok() and its
- * XXX related functions.
- * XXX At the same time, BuildPrinterDb and it's support routines should have
- * XXX allocation error checking added.
- * XXX
- */
-static PrinterDbPtr
-BuildPrinterDb(void)
-{
- char *printerList, *augmentCmd = (char *)NULL;
- Bool defaultAugment = TRUE, freeConfigFileName;
-
- if(configFileName && access(configFileName, R_OK) != 0)
- {
- ErrorF("Xp Extension: Can't open file %s\n", configFileName);
- }
- if(!configFileName && (configFileName = GetConfigFileName()))
- freeConfigFileName = TRUE;
- else
- freeConfigFileName = FALSE;
-
- if(configFileName != (char *)NULL && access(configFileName, R_OK) == 0)
- {
- char line[256];
- FILE *fp = fopen(configFileName, "r");
-
- while(fgets(line, 256, fp) != (char *)NULL)
- {
- char *tok, *ptr;
- if((tok = strtok(line, " \t\012")) != (char *)NULL)
- {
- if(tok[0] == (char)'#') continue;
- if(strcmp(tok, "Printer") == 0)
- {
- while((tok = strtok((char *)NULL, " \t")) != (char *)NULL)
- {
- if((ptr = MbStrchr(tok, '\012')))
- *ptr = (char)'\0';
- AddPrinterDbName(tok, NULL);
- }
- }
- else if(strcmp(tok, "Map") == 0)
- {
- char *name, *qualifier;
-
- if((tok = strtok((char *)NULL, " \t\012")) == (char *)NULL)
- continue;
- name = strdup(tok);
- if((tok = strtok((char *)NULL, " \t\012")) == (char *)NULL)
- {
- xfree(name);
- continue;
- }
- qualifier = strdup(tok);
- AddNameMap(name, qualifier);
- }
- else if(strcmp(tok, "Augment_Printer_List") == 0)
- {
- if((tok = strtok((char *)NULL, " \t\012")) == (char *)NULL)
- continue;
-
- if(strcmp(tok, "%default%") == 0)
- continue;
- defaultAugment = FALSE;
- if(strcmp(tok, "%none%") == 0)
- continue;
- AugmentPrinterDb(tok);
- }
- else
- break; /* XXX Generate an error? */
- }
- }
- fclose(fp);
- }
-
- if(defaultAugment == TRUE)
- {
- XpSpoolerTypePtr curr_spooler_type; /* spooler we are currently probing for queues */
- int num_printers_found; /* number of printers found by |AugmentPrinterDb()| */
- char *tok_lasts; /* strtok_r() position token */
- char *spnamelist; /* list of spooler names, seperated by ":" */
- char *spname; /* spooler name */
-
- spnamelist = strdup(XpGetSpoolerTypeNameList()); /* strtok_r() modifies string so dup' it first */
-
- for( spname = strtok_r(spnamelist, ":", &tok_lasts) ;
- spname != NULL ;
- spname = strtok_r(NULL, ":", &tok_lasts) )
- {
- curr_spooler_type = XpSpoolerNameToXpSpoolerType(spname);
- if(!curr_spooler_type)
- {
- FatalError("BuildPrinterDb: No spooler type entry found for '%s'.\n", spname);
- }
-
- if(curr_spooler_type->list_queues_command == NULL ||
- strlen(curr_spooler_type->list_queues_command) == 0)
- {
- continue;
- }
-
- num_printers_found = AugmentPrinterDb(curr_spooler_type->list_queues_command);
- /* Did we found a spooler which works ? */
- if(num_printers_found > 0)
- {
- spooler_type = curr_spooler_type;
-#ifdef DEBUG_gisburn
- fprintf(stderr, "BuildPrinterDb: using '%s'.\n", spooler_type->name);
-#endif /* DEBUG_gisburn */
- break;
- }
- }
-
- free(spnamelist);
- }
-
- MergeNameMap();
- FreeNameMap();
-
- /* Create the attribute stores for all printers */
- CreatePrinterAttrs();
-
- /*
- * Find the drivers for each printers, and store the driver names
- * in the printerDb
- */
- StoreDriverNames();
- StoreDescriptors();
-
- if(freeConfigFileName)
- {
- xfree(configFileName);
- configFileName = (char *)NULL;
- }
-
- return printerDb;
-}
-
-static void
-FreeDriverMap(DriverMapPtr driverMap)
-{
- DriverMapPtr pCurEntry, pNextEntry;
-
- for(pCurEntry = driverMap, pNextEntry = (DriverMapPtr)NULL;
- pCurEntry != (DriverMapPtr)NULL; pCurEntry = pNextEntry)
- {
- pNextEntry = pCurEntry->next;
- if(pCurEntry->driverName != (char *)NULL)
- xfree(pCurEntry->driverName);
- xfree(pCurEntry);
- }
-}
-
-/*
- * XpRehashPrinterList rebuilds the list of printers known to the
- * server. It first walks the printerDb to build a table mapping
- * driver names and screen numbers, since this is not an easy mapping
- * to change in the sample server. The normal configuration files are
- * then read & parsed to create the new list of printers. Printers
- * which require drivers other than those already initialized are
- * deleted from the printerDb. This leaves attribute stores in place
- * for inaccessible printers, but those stores will be cleaned up in
- * the next rehash or server recycle.
- */
-int
-XpRehashPrinterList(void)
-{
- PrinterDbPtr pEntry, pPrev;
- DriverMapPtr driverMap = (DriverMapPtr)NULL, pDrvEnt;
- int result;
-
- /* Build driverMap */
- for(pEntry = printerDb; pEntry != (PrinterDbPtr)NULL; pEntry = pEntry->next)
- {
- for(pDrvEnt = driverMap; pDrvEnt != (DriverMapPtr)NULL;
- pDrvEnt = pDrvEnt->next)
- {
- if(!strcmp(pEntry->driverName, pDrvEnt->driverName))
- break;
- }
-
- if(pDrvEnt != (DriverMapPtr)NULL)
- continue;
-
- if((pDrvEnt = (DriverMapPtr)xalloc(sizeof(DriverMapEntry))) ==
- (DriverMapPtr)NULL)
- {
- FreeDriverMap(driverMap);
- return BadAlloc;
- }
- pDrvEnt->driverName = strdup(pEntry->driverName);
- pDrvEnt->screenNum = pEntry->screenNum;
- pDrvEnt->next = driverMap;
- driverMap = pDrvEnt;
- }
-
- /* Free the old printerDb */
- FreePrinterDb();
-
- /* Free/Rehash attribute stores */
- if((result = XpRehashAttributes()) != Success)
- return result;
-
- /* Build a new printerDb */
- if(BuildPrinterDb() == (PrinterDbPtr)NULL)
- return BadAlloc;
-
- /* Walk PrinterDb & either store screenNum, or delete printerDb entry */
- for(pEntry = printerDb, pPrev = (PrinterDbPtr)NULL;
- pEntry != (PrinterDbPtr)NULL; pEntry = pEntry->next)
- {
- for(pDrvEnt = driverMap; pDrvEnt != (DriverMapPtr)NULL;
- pDrvEnt = pDrvEnt->next)
- {
- if(!strcmp(printerDb->driverName, pDrvEnt->driverName))
- break;
- }
-
- /*
- * Either store the screen number, or delete the printerDb entry.
- * Deleting the entry leaves orphaned attribute stores, but they'll
- * get cleaned up at the next rehash or server recycle.
- */
- if(pDrvEnt != (DriverMapPtr)NULL)
- {
- pEntry->screenNum = pDrvEnt->screenNum;
- pPrev = pEntry;
- }
- else {
- if(pPrev)
- pPrev->next = pEntry->next;
- else
- pPrev = pEntry->next;
- if(pEntry->name != (char *)NULL)
- xfree(pEntry->name);
- xfree(pEntry);
- pEntry = pPrev;
- }
- }
-
- FreeDriverMap(driverMap);
-
- return Success;
-}
-
-/*
- * ValidateFontDir looks for a valid font directory for the specified
- * printer model within the specified configuration directory. It returns
- * the directory name, or NULL if no valid font directory was found.
- * It is the caller's responsibility to free the returned font directory
- * name.
- */
-static char *
-ValidateFontDir(
- char *configDir,
- char *modelName)
-{
- char *pathName;
-
- if(!configDir || !modelName)
- return (char *)NULL;
-
- pathName = (char *)xalloc(strlen(configDir) + strlen(MODELDIRNAME) +
- strlen(modelName) + strlen(FONTDIRNAME) +
- strlen("fonts.dir") + 5);
- if(!pathName)
- return (char *)NULL;
- sprintf(pathName, "%s/%s/%s/%s/%s", configDir, MODELDIRNAME, modelName,
- FONTDIRNAME, "fonts.dir");
- if(access(pathName, R_OK) != 0)
- {
- xfree(pathName);
- return (char *)NULL;
- }
- pathName[strlen(pathName) - 9] = (char)'\0'; /* erase fonts.dir */
- return pathName;
-}
-
-/*
- * FindFontDir returns a pointer to the path name of the font directory
- * for the specified printer model name, if such a directory exists.
- * The directory contents are superficially checked for validity.
- * The caller must free the returned char *.
- *
- * We first look in the locale-specific model-config directory, and
- * then fall back to the C language model-config directory.
- */
-static char *
-FindFontDir(
- char *modelName)
-{
- char *configDir, *fontDir;
-
- if(!modelName || !strlen(modelName))
- return (char *)NULL;
-
- configDir = XpGetConfigDir(TRUE);
- if((fontDir = ValidateFontDir(configDir, modelName)))
- {
- xfree(configDir);
- return fontDir;
- }
-
- if(configDir)
- xfree(configDir);
- configDir = XpGetConfigDir(FALSE);
- fontDir = ValidateFontDir(configDir, modelName);
-
- xfree(configDir);
-
- return fontDir;
-}
-
-/*
- * AddToFontPath adds the specified font path element to the global
- * defaultFontPath string. It adds the keyword "PRINTER:" to the front
- * of the path to denote that this is a printer-specific font path
- * element.
- */
-static char PATH_PREFIX[] = "PRINTER:";
-static int PATH_PREFIX_LEN = sizeof(PATH_PREFIX) - 1; /* same as strlen() */
-
-static void
-AddToFontPath(
- char *pathName)
-{
- char *newPath;
- Bool freeOldPath;
-
- if(defaultFontPath == origFontPath)
- freeOldPath = FALSE;
- else
- freeOldPath = TRUE;
-
- newPath = (char *)xalloc(strlen(defaultFontPath) + strlen(pathName) +
- PATH_PREFIX_LEN + 2);
-
- sprintf(newPath, "%s%s,%s", PATH_PREFIX, pathName, defaultFontPath);
-
- if(freeOldPath)
- xfree(defaultFontPath);
-
- defaultFontPath = newPath;
- return;
-}
-
-/*
- * AugmentFontPath adds printer-model-specific font path elements to
- * the front of the font path global variable "defaultFontPath" (dix/globals.c).
- * We can't call SetFontPath() because the font code has not yet been
- * initialized when InitOutput is called (from whence this routine is called).
- *
- * This utilizes the static variables origFontPath and
- * freeDefaultFontPath to track the original contents of defaultFontPath,
- * and to properly free the modified version upon server recycle.
- */
-static void
-AugmentFontPath(void)
-{
- char *newPath, *modelID, **allIDs = (char **)NULL;
- PrinterDbPtr pDb, pDbEntry;
- int numModels, i;
-
- if(!origFontPath)
- origFontPath = defaultFontPath;
-
- if(freeDefaultFontPath)
- {
- xfree(defaultFontPath);
- defaultFontPath = origFontPath;
- freeDefaultFontPath = FALSE;
- }
-
- /*
- * Build a list of printer models to check for internal fonts.
- */
- for(pDbEntry = printerDb, numModels = 0;
- pDbEntry != (PrinterDbPtr)NULL;
- pDbEntry = pDbEntry->next)
- {
- modelID =
- (char*)XpGetPrinterAttribute(pDbEntry->name,
- "xp-model-identifier");
-
- if(modelID && strlen(modelID) != 0)
- {
- /* look for current model in the list of allIDs */
- for(i = 0; i < numModels; i++)
- {
- if(!strcmp(modelID, allIDs[i]))
- {
- modelID = (char *)NULL;
- break;
- }
- }
- }
-
- /*
- * If this printer's model-identifier isn't in the allIDs list,
- * then add it to allIDs.
- */
- if(modelID && strlen(modelID) != 0)
- {
- allIDs = (char **)xrealloc(allIDs, (numModels+2) * sizeof(char *));
- if(allIDs == (char **)NULL)
- return;
- allIDs[numModels] = modelID;
- allIDs[numModels + 1] = (char *)NULL;
- numModels++;
- }
- }
-
- /* for each model, check for a valid font directory, and add it to
- * the front of defaultFontPath.
- */
- for(i = 0; allIDs != (char **)NULL && allIDs[i] != (char *)NULL; i ++)
- {
- char *fontDir;
- if((fontDir = FindFontDir(allIDs[i])))
- {
- AddToFontPath(fontDir);
- xfree(fontDir);
- freeDefaultFontPath = TRUE;
- }
- }
-
- if(allIDs)
- xfree(allIDs);
-
- return;
-}
-
-/*
- * XpClientIsBitmapClient is called by the font code to find out if
- * a particular client should be granted access to bitmap fonts.
- * This function works by
- * calling XpContextOfClient (in Xserver/Xext/xprint.c) to determine
- * the context associated with the client, and then queries the context's
- * attributes to determine whether the bitmap fonts should be visible.
- * It looks at the value of the xp-listfonts-modes document/page attribute to
- * see if xp-list-glyph-fonts has been left out of the mode list. Only
- * if the xp-listfonts-modes attribute exists, and it does not contain
- * xp-list-glyph-fonts does this function return FALSE. In any other
- * case the funtion returns TRUE, indicating that the bitmap fonts
- * should be visible to the client.
- */
-Bool
-XpClientIsBitmapClient(
- ClientPtr client)
-{
- XpContextPtr pContext;
- char *mode;
-
- if(!(pContext = XpContextOfClient(client)))
- return TRUE;
-
- /*
- * Check the page attributes, and if it's not defined there, then
- * check the document attributes.
- */
- mode = XpGetOneAttribute(pContext, XPPageAttr, "xp-listfonts-modes");
- if(!mode || !strlen(mode))
- {
- mode = XpGetOneAttribute(pContext, XPDocAttr, "xp-listfonts-modes");
- if(!mode || !strlen(mode))
- return TRUE;
- }
-
- if(!strstr(mode, "xp-list-glyph-fonts"))
- return FALSE;
-
- return TRUE;
-}
-
-/*
- * XpClientIsPrintClient is called by the font code to find out if
- * a particular client has set a context which references a printer
- * which utilizes a particular font path.
- * This function works by calling XpContextOfClient
- * (in Xserver/Xext/xprint.c) to determine the context associated with
- * the client and then looks at the value of the xp-listfonts-modes
- * document/page attribute to see if xp-list-internal-printer-fonts has
- * been left out of the mode list.
- * If the xp-listfonts-modes attribute exists, and it does not contain
- * xp-list-internal-printer-fonts this function returns FALSE.
- * Otherwise it looks up the font directory for the context. The font
- * directory is then compared with the directory specified in the
- * FontPathElement which is passed in.
- */
-Bool
-XpClientIsPrintClient(
- ClientPtr client,
- FontPathElementPtr fpe)
-{
- XpContextPtr pContext;
- char *mode;
- char *modelID, *fontDir;
-
- if(!(pContext = XpContextOfClient(client)))
- return FALSE;
-
- /*
- * Check the page attributes, and if it's not defined there, then
- * check the document attributes.
- */
- mode = XpGetOneAttribute(pContext, XPPageAttr, "xp-listfonts-modes");
- if(!mode || !strlen(mode))
- {
- mode = XpGetOneAttribute(pContext, XPDocAttr, "xp-listfonts-modes");
- }
-
- if(mode && strlen(mode))
- {
- if(!strstr(mode, "xp-list-internal-printer-fonts"))
- return FALSE;
- }
-
- if (!fpe)
- return TRUE;
-
- modelID = XpGetOneAttribute(pContext, XPPrinterAttr, "xp-model-identifier");
- if(!modelID || !strlen(modelID))
- return FALSE;
-
- if(!(fontDir = FindFontDir(modelID)))
- return FALSE;
-
- /*
- * The grunge here is to ignore the PATH_PREFIX at the front of the
- * fpe->name.
- */
- if(fpe->name_length < PATH_PREFIX_LEN ||
- (strlen(fontDir) != (fpe->name_length - PATH_PREFIX_LEN)) ||
- strncmp(fontDir, fpe->name + PATH_PREFIX_LEN,
- fpe->name_length - PATH_PREFIX_LEN))
- {
- xfree(fontDir);
- return FALSE;
- }
- xfree(fontDir);
- return TRUE;
-}
-
-static void
-AddFormats(ScreenInfo *pScreenInfo, char *driverName)
-{
- int i, j;
- driverInitRec *pInitRec;
- int numDrivers = sizeof(driverInits)/sizeof(driverInitRec);
- PixmapFormatRec *formats;
- int numfmts;
-
- for (pInitRec = driverInits, i = 0; i < numDrivers; pInitRec++, i++)
- {
- if ( !strcmp( driverName, pInitRec->driverName ) )
- break;
- }
- if (i >= numDrivers)
- return;
- formats = pInitRec->pFmts;
- numfmts = pInitRec->numFmts;
- for (i = 0; i < numfmts && pScreenInfo->numPixmapFormats < MAXFORMATS; i++)
- {
- for (j = 0; j < pScreenInfo->numPixmapFormats; j++) {
- if (pScreenInfo->formats[j].depth == formats[i].depth &&
- pScreenInfo->formats[j].bitsPerPixel == formats[i].bitsPerPixel &&
- pScreenInfo->formats[j].scanlinePad == formats[i].scanlinePad)
- break;
- }
- if (j == pScreenInfo->numPixmapFormats) {
- pScreenInfo->formats[j] = formats[i];
- pScreenInfo->numPixmapFormats++;
- }
- }
-}
-
-/************************************************************
- * PrinterInitOutput --
- * This routine is to be called from a ddx's InitOutput
- * during the server startup initialization, and when
- * the server is to be reset. The routine creates the
- * screens associated with configured printers by calling
- * dix:AddScreen. The configuration information comes from a
- * database read from the X*printers file.
- *
- * Results:
- * The array of ScreenRec pointers referenced by
- * pScreenInfo->screen is increased by the addition
- * of the printer screen(s), as is the value of
- * pScreenInfo->numScreens. This is done via calls
- * to AddScreen() in dix.
- *
- ************************************************************/
-
-void
-PrinterInitOutput(
- ScreenInfo *pScreenInfo,
- int argc,
- char **argv)
-{
- PrinterDbPtr pDb, pDbEntry;
- int driverCount = 0, i;
- char **driverNames;
- char *configDir;
-
- /* This should NEVER happen, but... */
- if( !xprintInitGlobalsCalled )
- {
- FatalError("Internal error: PrinterInitGlobals() not called.");
- }
-#ifdef SMART_SCHEDULE
- /* |PrinterInitGlobals| should have set |SmartScheduleDisable| to
- * |TRUE| - if not we will trigger this safeguard. */
- if( SmartScheduleDisable != TRUE )
- {
- FatalError("Internal error: XF86 smart scheduler incompatible to Xprint DDX.");
- }
-#endif /* SMART_SCHEDULE */
- /* Safeguard for
- * http://pdx.freedesktop.org/cgi-bin/bugzilla/show_bug.cgi?id=567 ("Xorg
- * Xprt starts to consume 100% CPU when being idle for some time")
- * |PrinterInitGlobals| should have set |defaultScreenSaverTime| to
- * |0| - if not we will trigger this trap. */
- if( defaultScreenSaverTime != 0 )
- {
- FatalError("Internal screen saver must be OFF for printing.");
- }
-
- /* Print a warnung when the maximum request size of the BIGREQUESTS
- * extension is smaller than 8MB (see
- * http://xprint.freedesktop.org/cgi-bin/bugzilla/show_bug.cgi?id=622)
- */
- if (maxBigRequestSize < (8*1048576)-1) {
- ErrorF("Xp Extension: BIGREQUESTS max. request is currently %ld bytes "
- ", recommemded minimum for Xprint is 8MB.\n", (long)maxBigRequestSize);
- }
-
- /*
- * this little test is just a warning at startup to make sure
- * that the config directory exists.
- *
- * what this ugly looking if says is that if both ways of
- * calling configDir works and both directories don't exist,
- * then print an error saying we can't find the non-lang one.
- */
- if (((configDir = XpGetConfigDir(TRUE)) != NULL) &&
- (access(configDir, F_OK) == 0))
- {
- xfree(configDir);
- }
- else if (((configDir = XpGetConfigDir(FALSE)) != NULL) &&
- (access(configDir, F_OK) == 0))
- {
- xfree(configDir);
- }
- else {
- /* Refuse to start when we do not have our config dir... */
- FatalError("Xp Extension: could not find config dir %s\n",
- configDir ? configDir : XPRINTDIR);
- }
-
- if(printerDb != (PrinterDbPtr)NULL)
- FreePrinterDb();
-
- /*
- * Calling BuildPrinterDb serves to build the printer database,
- * and to initialize the attribute store for each printer.
- * The driver can, if it so desires, modify the attribute
- * store at a later time.
- */
- if((pDb = BuildPrinterDb()) == (PrinterDbPtr)NULL) return;
-
- /*
- * We now have to decide how many screens to initialize, and call
- * AddScreen for each one. The printerDb must be properly initialized
- * for at least one screen's worth of printers prior to calling AddScreen
- * because InitPrintDrivers reads the printerDb to determine which
- * driver(s) to init on a particular screen.
- * We put each driver's printers on a different
- * screen, and call AddScreen for each screen/driver pair.
- */
- /* count the number of printers */
- for(pDbEntry = pDb, driverCount = 0; pDbEntry != (PrinterDbPtr)NULL;
- pDbEntry = pDbEntry->next, driverCount++)
- ;
- /*
- * Allocate memory for the worst case - a driver per printer
- */
- driverNames = (char **)xalloc(sizeof(char *) * driverCount);
-
- /*
- * Assign the driver for the first printer to the first screen
- */
- pDb->screenNum = screenInfo.numScreens;
- driverNames[0] = pDb->driverName;
- driverCount = 1;
- AddFormats(pScreenInfo, pDb->driverName);
-
- /*
- * For each printer, look to see if its driver is already assigned
- * to a screen, and if so copy that screen number into the printerDb.
- * Otherwise, assign a new screen number to the driver for this
- * printer.
- */
- for(pDbEntry = pDb; pDbEntry != (PrinterDbPtr)NULL;
- pDbEntry = pDbEntry->next)
- {
- Bool foundMatch;
-
- for(i = 0, foundMatch = FALSE; i < driverCount; i++)
- {
- if(!strcmp(driverNames[i], pDbEntry->driverName))
- {
- foundMatch = TRUE;
- pDbEntry->screenNum = screenInfo.numScreens + i;
- break;
- }
- }
- if(foundMatch == FALSE)
- {
- driverNames[driverCount] = pDbEntry->driverName;
- pDbEntry->screenNum = screenInfo.numScreens + driverCount;
- AddFormats(pScreenInfo, pDbEntry->driverName);
- driverCount++;
- }
- }
-
- for(i = 0; i < driverCount; i++)
- {
- int curScreen = screenInfo.numScreens;
- if(AddScreen(InitPrintDrivers, argc, argv) < 0)
- {
- PrinterDbPtr pPrev;
- /*
- * AddScreen failed, so we pull the associated printers
- * from the list.
- */
- ErrorF("Xp Extension: Could not add screen for driver %s\n",
- driverNames[i]);
- for(pPrev = pDbEntry = printerDb; pDbEntry != (PrinterDbPtr)NULL;
- pDbEntry = pDbEntry->next)
- {
- if(pDbEntry->screenNum == curScreen)
- {
- if(pPrev == printerDb)
- {
- printerDb = pDbEntry->next;
- pPrev = printerDb;
- }
- else
- pPrev->next = pDbEntry->next;
-
- xfree(pDbEntry->name);
- xfree(pDbEntry);
- pDbEntry = pPrev;
- }
- else
- {
- if(pDbEntry->screenNum > curScreen)
- pDbEntry->screenNum--;
- pPrev = pDbEntry;
- }
- }
- }
- }
-
- xfree(driverNames);
-
- AugmentFontPath();
-
- if(pScreenInfo->numScreens > MAXSCREENS)
- {
- ErrorF("The number of printer screens requested ");
- ErrorF("exceeds the allowable limit of %d screens.\n", MAXSCREENS);
- ErrorF("Please reduce the number of requested printers in your ");
- ErrorF("\nX%sprinters file.", display);
- ErrorF("Server exiting...\n");
- exit(-1);
- }
-}
-
-/*
- * InitPrintDrivers is called from dix:AddScreen. It in turn calls the
- * driver initialization routine for any and all drivers which are
- * implicated in supporting printers on the particular screen number
- * specified by the "index" parameter. The printerDb variable is used
- * to determine which printers are to be associated with a particular
- * screen.
- */
-static Bool
-InitPrintDrivers(
- int index,
- ScreenPtr pScreen,
- int argc,
- char **argv)
-{
- PrinterDbPtr pDb, pDb2;
-
- GenericScreenInit(index, pScreen, argc, argv);
-
- for(pDb = printerDb; pDb != (PrinterDbPtr)NULL; pDb = pDb->next)
- {
- if(pDb->screenNum == index)
- {
- Bool callInit = TRUE;
- for(pDb2 = printerDb; pDb2 != pDb; pDb2 = pDb2->next)
- {
- if(!strcmp(pDb->driverName, pDb2->driverName))
- {
- callInit = FALSE;
- break;
- }
- }
- if(callInit == TRUE)
- {
- Bool (*initFunc)();
- initFunc = GetInitFunc(pDb->driverName);
- if(initFunc(index, pScreen, argc, argv) == FALSE)
- {
- /* XXX - What do I do if the driver's init fails? */
- }
- }
- }
- }
- return TRUE;
-}
-
-void
-_XpVoidNoop(void)
-{
- return;
-}
-
-Bool
-_XpBoolNoop(void)
-{
- return TRUE;
-}
-
-/*
- * GenericScreenInit - The common initializations required by all
- * printer screens and drivers. It sets the screen's cursor functions
- * to Noops, and computes the maximum screen (i.e. medium) dimensions.
- */
-
-static void
-GenericScreenInit(
- int index,
- ScreenPtr pScreen,
- int argc,
- char **argv)
-{
- int i;
- float fWidth, fHeight, maxWidth, maxHeight;
- unsigned short width, height;
- PrinterDbPtr pDb, pDb2;
- int res, maxRes;
-
- /*
- * Set the cursor ops to no-op functions.
- */
- pScreen->DisplayCursor = (DisplayCursorProcPtr)_XpBoolNoop;
- pScreen->RealizeCursor = (RealizeCursorProcPtr)_XpBoolNoop;
- pScreen->UnrealizeCursor = (UnrealizeCursorProcPtr)_XpBoolNoop;
- pScreen->SetCursorPosition = (SetCursorPositionProcPtr)_XpBoolNoop;
- pScreen->ConstrainCursor = (ConstrainCursorProcPtr)_XpVoidNoop;
- pScreen->CursorLimits = (CursorLimitsProcPtr)_XpVoidNoop;
- pScreen->RecolorCursor = (RecolorCursorProcPtr)_XpVoidNoop;
-
- /*
- * Find the largest paper size for all the printers on the given
- * screen.
- */
- maxRes = 0;
- maxWidth = maxHeight = 0.0;
- for( pDb = printerDb; pDb != (PrinterDbPtr)NULL; pDb = pDb->next)
- {
- if(pDb->screenNum == index)
- {
-
- XpValidatePoolsRec *pValRec;
- pVFunc dimensionsFunc;
-
- GetDimFuncAndRec(pDb->driverName, &pValRec, &dimensionsFunc);
- if(dimensionsFunc != (pVFunc)NULL)
- dimensionsFunc(pDb->name, pValRec, &fWidth, &fHeight, &res);
- else
- XpGetMaxWidthHeightRes(pDb->name, pValRec, &fWidth,
- &fHeight, &res);
- if( res > maxRes )
- maxRes = res;
- if( fWidth > maxWidth )
- maxWidth = fWidth;
- if( fHeight > maxHeight )
- maxHeight = fHeight;
- }
- }
-
- width = (unsigned short) (maxWidth * maxRes / 25.4);
- height = (unsigned short) (maxHeight * maxRes / 25.4);
- pScreen->width = pScreen->height = ( width > height ) ? width :
- height;
-
- pScreen->mmWidth = pScreen->mmHeight = ( maxWidth > maxHeight ) ?
- (unsigned short)(maxWidth + 0.5) :
- (unsigned short)(maxHeight + 0.5);
-}
-
-/*
- * QualifyName - takes an unqualified file name such as X6printers and
- * a colon-separated list of directory path names such as
- * /etc/opt/dt:/opt/dt/config.
- *
- * Returns a fully qualified file path name such as /etc/opt/dt/X6printers.
- * The returned value is malloc'd, and the caller is responsible for
- * freeing the associated memory.
- */
-static char *
-QualifyName(fileName, searchPath)
- char *fileName;
- char *searchPath;
-{
- char * curPath = searchPath;
- char * nextPath;
- char * chance;
- FILE *pFile;
-
- if (fileName == NULL || searchPath == NULL)
- return NULL;
-
- while (1) {
- if ((nextPath = strchr(curPath, ':')) != NULL)
- *nextPath = 0;
-
- chance = (char *)xalloc(strlen(curPath) + strlen(fileName) + 2);
- sprintf(chance,"%s/%s",curPath,fileName);
-
- /* see if we can read from the file */
- if((pFile = fopen(chance, "r")) != (FILE *)NULL)
- {
- fclose(pFile);
- /* ... restore the colon, .... */
- if (nextPath)
- *nextPath = ':';
-
- return chance;
- }
-
- xfree(chance);
-
- if (nextPath == NULL) /* End of path list? */
- break;
-
- /* try the next path */
- curPath = nextPath + 1;
- }
- return NULL;
-}
-
-/*
- * FillPrinterListEntry fills in a single XpDiListEntry element with data
- * derived from the supplied PrinterDbPtr element.
- *
- * XXX A smarter (i.e. future) version of this routine might inspect the
- * XXX "locale" parameter and attempt to match the "description" and
- * XXX "localeName" elements of the XpDiListEntry to the specified locale.
- */
-static void
-FillPrinterListEntry(
- XpDiListEntry *pEntry,
- PrinterDbPtr pDb,
- int localeLen,
- char *locale)
-{
- static char *localeStr = (char *)NULL;
-
- if(localeStr == (char *)NULL)
- localeStr = strdup(setlocale(LC_ALL, (const char *)NULL));
-
- pEntry->name = pDb->name;
- pEntry->description =
- (char*)XpGetPrinterAttribute(pDb->name, "descriptor");
- pEntry->localeName = localeStr;
- pEntry->rootWinId = WindowTable[pDb->screenNum]->drawable.id;
-}
-
-/*
- * GetPrinterListInfo fills in the XpDiListEntry struct pointed to by the
- * parameter pEntry with the information regarding the printer specified
- * by the name and nameLen parameters. The pointers placed in the
- * XpDiListEntry structure MUST NOT be freed by the caller. They are
- * pointers into existing long-lived databases.
- *
- */
-static Bool
-GetPrinterListInfo(
- XpDiListEntry *pEntry,
- int nameLen,
- char *name,
- int localeLen,
- char *locale)
-{
- PrinterDbPtr pDb, pDb2;
-
- for(pDb = printerDb; pDb != (PrinterDbPtr)NULL; pDb = pDb->next)
- {
- if(strlen(pDb->name) == nameLen && !strncmp(pDb->name, name, nameLen))
- {
- FillPrinterListEntry(pEntry, pDb, localeLen, locale);
- return TRUE;
- }
- }
- return FALSE;
-}
-
-/*
- * XpDiFreePrinterList is the approved method of releasing memory used
- * for a printer list.
- */
-void
-XpDiFreePrinterList(XpDiListEntry **list)
-{
- int i;
-
- for(i = 0; list[i] != (XpDiListEntry *)NULL; i++)
- xfree(list[i]);
- xfree(list);
-}
-
-/*
- * XpDiGetPrinterList returns a pointer to a NULL-terminated array of
- * XpDiListEntry pointers. Each entry structure contains the name,
- * description, root window, and locale of a printer. The call returns
- * either a list of all printers configured on the server, or it returns
- * the information for one specific printer depending on the values passed
- * in. Non-NULL values passed in indicate that only the information for
- * the one specific printer is desired, while NULL values indicate that
- * the information for all printers is desired.
- */
-XpDiListEntry **
-XpDiGetPrinterList(
- int nameLen,
- char *name,
- int localeLen,
- char *locale)
-{
- XpDiListEntry **pList;
-
- if(!nameLen || name == (char *)NULL)
- {
- int i;
- PrinterDbPtr pDb, pDb2;
-
- for(pDb = printerDb, i = 0; pDb != (PrinterDbPtr)NULL;
- pDb = pDb->next, i++)
- ;
-
- if((pList = (XpDiListEntry **)xalloc((i+1) * sizeof(XpDiListEntry *)))
- == (XpDiListEntry **)NULL)
- return pList;
-
- pList[i] = (XpDiListEntry *)NULL;
- for(pDb = printerDb, i = 0; pDb != (PrinterDbPtr)NULL;
- pDb = pDb->next, i++)
- {
- if((pList[i] = (XpDiListEntry *)xalloc(sizeof(XpDiListEntry)))==
- (XpDiListEntry *)NULL)
- {
- XpDiFreePrinterList(pList);
- return (XpDiListEntry **)NULL;
- }
- FillPrinterListEntry(pList[i], pDb, localeLen, locale);
- }
- }
- else
- {
- if((pList = (XpDiListEntry **)xalloc(2 * sizeof(XpDiListEntry *))) ==
- (XpDiListEntry **)NULL)
- return pList;
-
- if((pList[0] = (XpDiListEntry *)xalloc(sizeof(XpDiListEntry))) ==
- (XpDiListEntry *)NULL)
- {
- xfree(pList);
- return (XpDiListEntry **)NULL;
- }
- pList[1] = (XpDiListEntry *)NULL;
- if(GetPrinterListInfo(pList[0], nameLen, name, localeLen, locale) ==
- FALSE)
- {
- xfree(pList[0]);
- pList[0] = (XpDiListEntry *)NULL;
- }
- }
- return pList;
-}
-
-WindowPtr
-XpDiValidatePrinter(char *printerName, int printerNameLen)
-{
- PrinterDbPtr pCurEntry;
- WindowPtr pWin;
-
- for(pCurEntry = printerDb;
- pCurEntry != (PrinterDbPtr)NULL; pCurEntry = pCurEntry->next)
- {
- if(strlen(pCurEntry->name) == printerNameLen &&
- !strncmp(pCurEntry->name, printerName, printerNameLen))
- return WindowTable[pCurEntry->screenNum];
- }
- return (WindowPtr)NULL;
-}
-
-/*
- * XpDiGetDriverName takes a screen index and a printer name, and returns
- * a pointer to the name of the driver to be used for the specified printer
- * on the specified screen.
- */
-char *
-XpDiGetDriverName(int index, char *printerName)
-{
-
- PrinterDbPtr pCurEntry;
-
- for(pCurEntry = printerDb;
- pCurEntry != (PrinterDbPtr)NULL; pCurEntry = pCurEntry->next)
- {
- if(pCurEntry->screenNum == index &&
- !strcmp(pCurEntry->name, printerName))
- return pCurEntry->driverName;
- }
-
- return (char *)NULL; /* XXX Should we supply a default driverName? */
-}
-
diff --git a/nx-X11/programs/Xserver/Xprint/Oid.c b/nx-X11/programs/Xserver/Xprint/Oid.c
deleted file mode 100644
index 7cb1230c7..000000000
--- a/nx-X11/programs/Xserver/Xprint/Oid.c
+++ /dev/null
@@ -1,3184 +0,0 @@
-/* $Xorg: Oid.c,v 1.3 2000/08/17 19:48:06 cpqbld Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "attributes.h"
-
-/*
- * XpOidNotify value strings
- */
-#define NOTIFY_EMAIL_STR "{{event-report-job-completed} electronic-mail}"
-#define NOTIFY_NONE_STR "{}"
-
-#define SafeStrLen(s) ((s) ? strlen((s)) : 0)
-
-/*
- * entry type for the object identifier string map
- */
-typedef struct _XpOidStringMapEntry
-{
- const char* string;
- int length;
- int msg_set;
- int msg_number;
- const char* default_message;
-
-} XpOidStringMapEntry;
-
-/*
- * include the auto-generated static XpOidStringMap
- */
-#include "OidStrs.h"
-
-/*
- * XpOid static function declarations
- */
-static XpOid XpOidParse(const char* value_string,
- const char** ptr_return);
-/*
- * XpOidList static function declarations
- */
-static XpOidList* XpOidListParse(const char* value_string,
- const XpOidList* valid_oids,
- const char** ptr_return, int i);
-
-/*
- * XpOidList static function declarations
- */
-static XpOidCardList* XpOidCardListParse(const char* value_string,
- const XpOidCardList* valid_cards,
- const char** ptr_return, int i);
-
-/*
- * XpOidMediumSourceSize static function declarations
- */
-static XpOidMediumSS* MediumSSParse(const char* value_string,
- const XpOidList* valid_trays,
- const XpOidList* valid_medium_sizes,
- const char** ptr_return, int i);
-static XpOidMediumContinuousSize* MediumContinuousSizeParse(const char*,
- const char**);
-static void MediumContinuousSizeDelete(XpOidMediumContinuousSize* me);
-static XpOidMediumDiscreteSizeList* MediumDiscreteSizeListParse(const char*,
- const XpOidList*,
- const char**,
- int i);
-static void MediumDiscreteSizeListDelete(XpOidMediumDiscreteSizeList* list);
-
-static BOOL ParseArea(const char* value_string,
- const char** ptr_return,
- XpOidArea* area_return);
-static BOOL ParseRealRange(const char* value_string,
- const char** ptr_return,
- XpOidRealRange* range_return);
-
-/*
- * XpOidTrayMediumList static function declarations
- */
-static XpOidTrayMediumList* TrayMediumListParse(const char* value_string,
- const XpOidList* valid_trays,
- const char** ptr_return,
- int i);
-static void TrayMediumListValidate(XpOidTrayMediumList* me,
- const XpOidMediumSS* msss);
-
-/*
- * XpOidDocFmt
- */
-static BOOL XpOidDocFmtNext(XpOidDocFmt* doc_fmt,
- const char* value_string,
- const char** ptr_return);
-
-/*
- * XpOidDocFmtListParse
- */
-static XpOidDocFmtList* XpOidDocFmtListParse(const char* value_string,
- const XpOidDocFmtList* valid_fmts,
- const char** ptr_return, int i);
-
-/*
- * misc. parsing static function declarations
- */
-static BOOL ParseBoolValue(const char* value_string,
- const char** ptr_return,
- BOOL* bool_return);
-static BOOL ParseRealValue(const char* value_string,
- const char** ptr_return,
- float* real_return);
-static BOOL ParseSeqEnd(
- const char* value_string,
- const char** ptr_return);
-static BOOL ParseSeqStart(
- const char* value_string,
- const char** ptr_return);
-static BOOL ParseUnspecifiedValue(
- const char* value_string,
- const char** ptr_return);
-static int SpanToken(
- const char* string);
-static int SpanWhitespace(
- const char* string);
-
-/*
- * String comparison function.
- */
-#ifdef HAVE_STRCASECMP
-# define StrnCaseCmp(s1, s2, len) strncasecmp(s1, s2, len)
-#else
-static int StrnCaseCmp(const char *s1, const char *s2, size_t len);
-#endif
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidString
- *
- * Description:
- *
- * Obtain the string representation of an XpOid.
- *
- * Example: XpOidString(xpoid_copy_count) returns "copy-count".
- *
- * Return value:
- *
- * A const pointer to the string.
- */
-const char*
-XpOidString(XpOid xp_oid)
-{
- /*
- * XpOid enum values are index values into the string map
- */
- return XpOidStringMap[xp_oid].string;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidStringLength
- *
- * Description:
- *
- * Obtain the length of the string representation for a given
- * XpOid.
- *
- * Return value:
- *
- * The string length in bytes.
- *
- */
-int
-XpOidStringLength(XpOid xp_oid)
-{
- /*
- * XpOid enum values are index values into the string map
- */
- return XpOidStringMap[xp_oid].length;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidFromString
- *
- * Description:
- *
- * Obtains the XpOid given a string representation of an XpOid.
- *
- * Example: XpOidFromString("copy-count") returns 'xpoid_copy_count'.
- *
- * Return value:
- *
- * The XpOid if successful. 'xpoid_none' if the string pointed to by
- * 'value is not recognized or if 'value' is NULL.
- */
-XpOid
-XpOidFromString(const char* value)
-{
- if(value == (const char*)NULL)
- return xpoid_none;
- else
- return XpOidParse(value, (const char**)NULL);
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidParse
- *
- * Description:
- *
- * Parse the next whitespace-delimited string from 'value_string'
- * updating 'ptr_return' to point to the next unparsed location in
- * 'value_string'. 'ptr_return' can be NULL.
- *
- * Return value:
- *
- * The corresponding XpOid for the parsed name string.
- * A return value of xpoid_none is returned if the parsed name
- * was not a valid oid or if no name was found.
- *
- */
-static XpOid
-XpOidParse(const char* value_string,
- const char** ptr_return)
-{
- const char* ptr;
- int length;
- int i;
- /*
- * skip leading whitespace
- */
- ptr = value_string + SpanWhitespace(value_string);
- /*
- * get the whitespace-delimited token length
- */
- length = SpanToken(ptr);
- /*
- * match the oid string in the map
- */
- for(i = 0; i < XpOidStringMapCount; i++)
- if(length == XpOidStringMap[i].length)
- if(strncmp(ptr, XpOidStringMap[i].string, length) == 0)
- break;
- if(i == XpOidStringMapCount)
- i = xpoid_none;
- /*
- * update the return pointer and return
- */
- if(ptr_return != (const char**)NULL)
- *ptr_return = ptr+length;
- return i;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidListNew
- *
- * Description:
- *
- * Creates a new XpOidList initialized from a whitespace-delimited
- * list of recognized string representations of oids. The returned
- * list will contain only oids found within the passed 'valid_oids'
- * XpOidList.
- *
- * Note: One may notice that in order to create an XpOidList with
- * this function, an XpOidList is needed; the 'valid_oids' list
- * is often an statically initialized structure. XpOidListInit
- * can also be used.
- *
- * Return value:
- *
- * NULL if the passed 'value_string' is NULL.
- *
- * If the list indicated by 'value_string' is empty or contains only
- * unrecognized oid string representations, a new XpOidList
- * containing zero elements is returned.
- *
- * If 'valid_oids' is NULL all oids are considered valid.
- *
- */
-XpOidList*
-XpOidListNew(const char* value_string,
- const XpOidList* valid_oids)
-{
- if(value_string == (const char*)NULL)
- return (XpOidList*)NULL;
- else
- {
- const char* ptr;
- return XpOidListParse(value_string, valid_oids, &ptr, 0);
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidListDelete
- *
- * Description:
- *
- * Frees the memory allocated for 'list'.
- *
- * Return value:
- *
- * None.
- *
- */
-void
-XpOidListDelete(XpOidList* list)
-{
- if(list != (XpOidList*)NULL)
- {
- XpOidFree((char*)list->list);
- XpOidFree((char*)list);
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidListParse
- *
- * Description:
- *
- * This function recursively parses the whitespace-delimited list of
- * oid string representations passed via 'value_string'. Oids are
- * only added to the resulting list if they are found within the
- * passed 'valid_oids' XpOidList.
- *
- * 'ptr_return' points to a char* variable allocated by the
- * caller, and is really only of use during recursion (upon return to
- * the original caller, it will point to the end of value_string).
- *
- * 'value_string' and 'ptr_return' *cannot* be NULL.
- *
- * Return value:
- *
- * A newly allocated and initialized XpOidList.
- *
- * If the list indicated by 'value_string' is empty or contains only
- * unrecognized oid string representations, a new XpOidList
- * containing zero elements is returned.
- *
- * If 'valid_oids' is NULL all oids are considered valid.
- *
- */
-static XpOidList*
-XpOidListParse(const char* value_string,
- const XpOidList* valid_oids,
- const char** ptr_return,
- int i)
-{
- XpOid oid;
- XpOidList* list;
- /*
- * parse the next valid oid out of the value string
- */
- ptr_return = &value_string;
- while(1)
- {
- if(**ptr_return == '\0')
- {
- /*
- * end of value string; stop parsing
- */
- oid = xpoid_none;
- break;
- }
- /*
- * parse the next oid from the value
- */
- oid = XpOidParse(*ptr_return, ptr_return);
- if(xpoid_none == oid)
- {
- /*
- * unrecognized oid; keep parsing
- */
- continue;
- }
- if((const XpOidList*)NULL == valid_oids
- ||
- XpOidListHasOid(valid_oids, oid))
- {
- /*
- * valid oid found; stop parsing
- */
- break;
- }
- }
-
- if(oid == xpoid_none)
- {
- /*
- * end of value string; allocate the list structure
- */
- list = (XpOidList*)XpOidCalloc(1, sizeof(XpOidList));
- list->count = i;
- list->list = (XpOid*)XpOidCalloc(i, sizeof(XpOid));
- }
- else
- {
- /*
- * recurse
- */
- list = XpOidListParse(*ptr_return, valid_oids, ptr_return, i+1);
- /*
- * set the oid in the list
- */
- list->list[i] = oid;
- }
- /*
- * return
- */
- return list;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidListHasOid
- *
- * Description:
- *
- * Determines if 'oid' is an element of 'list'.
- *
- * Return value:
- *
- * xTrue if the oid is found in the list.
- *
- * xFalse if the oid is not in the list, or if 'list' is NULL.
- *
- */
-BOOL
-XpOidListHasOid(const XpOidList* list, XpOid oid)
-{
- int i;
- if(list != (XpOidList*)NULL)
- for(i = 0; i < list->count; i++)
- if(list->list[i] == oid)
- return xTrue;
- return xFalse;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidListGetIndex
- *
- * Description:
- *
- * Returns the array index of 'oid' in 'list'
- *
- * Return value:
- *
- * The index of 'oid' in list.
- *
- * -1 if the oid is not in the list, or if 'list' is NULL.
- *
- */
-int
-XpOidListGetIndex(const XpOidList* list, XpOid oid)
-{
- int i;
- if(list != (XpOidList*)NULL)
- for(i = 0; i < list->count; i++)
- if(list->list[i] == oid)
- return i;
- return -1;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidListString
- *
- * Description:
- *
- * Creates a string representation of an XpOidList structure.
- *
- * Return value:
- *
- * A newly allocated
- *
- */
-char*
-XpOidListString(const XpOidList* me)
-{
- int i;
- int length;
- char* str;
- char* ptr;
- /*
- * allocate enough memory for the oid string representations,
- * including intervening whitespace
- */
- for(i = 0, length = 0; i < XpOidListCount(me); i++)
- length += XpOidStringLength(XpOidListGetOid(me, i)) + 1;
- str = XpOidMalloc(length+1);
- /*
- * format the list
- */
- for(i = 0, ptr = str; i < XpOidListCount(me); i++)
-#if defined(sun) && !defined(SVR4)
- {
- sprintf(ptr, "%s ", XpOidString(XpOidListGetOid(me, i)));
- ptr += strlen(ptr);
- }
-#else
- ptr += sprintf(ptr, "%s ", XpOidString(XpOidListGetOid(me, i)));
-#endif
- /*
- * chop trailing whitespace or terminate empty string
- */
- str[length] = '\0';
- /*
- * return
- */
- return str;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidLinkedListNew
- *
- * Description:
- *
- * Creates a new instance of an empty XpOidLinkedList.
- *
- * Return value:
- *
- * The new XpOidLinkedList.
- *
- */
-XpOidLinkedList*
-XpOidLinkedListNew()
-{
- return (XpOidLinkedList*)XpOidCalloc(1, sizeof(XpOidLinkedList));
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidLinkedListDelete
- *
- * Description:
- *
- * Frees the memory allocated for a XpOidLinkedList.
- *
- * Return value:
- *
- * None.
- *
- */
-void
-XpOidLinkedListDelete(XpOidLinkedList* me)
-{
- if(me != (XpOidLinkedList*)NULL)
- {
- while(me->head)
- {
- me->current = me->head;
- me->head = me->current->next;
- XpOidFree((char*)me->current);
- }
- XpOidFree((char*)me);
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidLinkedListGetOid
- *
- * Description:
- *
- * Retrieves the oid at position 'i' (zero-based) in the
- * XpOidLinkedList 'me'.
- *
- * Return value:
- *
- * The oid at position 'i'.
- *
- * xpoid_none if the oid was not found, or the list is empty (or if
- * the list contains xpoid_none at position 'i').
- */
-XpOid
-XpOidLinkedListGetOid(XpOidLinkedList* me, int i)
-{
- if(me == (XpOidLinkedList*)NULL || i < 0 || i >= me->count)
- {
- return xpoid_none;
- }
- else
- {
- me->current = me->head;
- while(i--) me->current = me->current->next;
- return me->current->oid;
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidLinkedListAddOid
- *
- * Description:
- *
- * Adds an oid to the end of an XpOidLinkedList.
- *
- * Return value:
- *
- * None.
- *
- */
-void
-XpOidLinkedListAddOid(XpOidLinkedList* me, XpOid oid)
-{
- me->current = (XpOidNode)XpOidCalloc(1, sizeof(struct XpOidNodeStruct));
- me->current->oid = oid;
- ++me->count;
- if(me->tail)
- {
- me->tail->next = me->current;
- me->tail = me->current;
- }
- else
- me->head = me->tail = me->current;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidLinkedListGetIndex
- *
- * Description:
- *
- * Returns the position of an oid in a XpOidLinkedList.
- *
- * Return value:
- *
- * The zero-based position of 'oid' in the list.
- *
- * -1 if the oid is not in the list, or if 'me' is NULL.
- *
- */
-int
-XpOidLinkedListGetIndex(XpOidLinkedList* me, XpOid oid)
-{
- if((XpOidLinkedList*)NULL != me)
- {
- int i = 0;
- me->current = me->head;
- while(me->current)
- if(me->current->oid == oid)
- {
- return i;
- }
- else
- {
- ++i;
- me->current = me->current->next;
- }
- }
- return -1;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidLinkedListHasOid
- *
- * Description:
- *
- * Determines if an oid is an element of a XpOidLinkedList.
- *
- * Return value:
- *
- * xTrue if the oid is found in the list.
- *
- * xFalse if the oid is not in the list, or if 'me' is NULL.
- */
-BOOL
-XpOidLinkedListHasOid(XpOidLinkedList* me,
- XpOid oid)
-{
- if((XpOidLinkedList*)NULL != me)
- {
- me->current = me->head;
- while(me->current)
- if(me->current->oid == oid)
- return xTrue;
- else
- me->current = me->current->next;
- }
- return xFalse;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidLinkedListFirstOid
- *
- * Description:
- *
- * Positions the XpOidLinkedList 'current' pointer to the first entry
- * in the list.
- *
- * Return value:
- *
- * The first oid in the list, or xpoid_none if the list NULL or
- * empty.
- */
-XpOid
-XpOidLinkedListFirstOid(XpOidLinkedList* me)
-{
- if((XpOidLinkedList*)NULL != me && (me->current = me->head))
- return me->current->oid;
- else
- return xpoid_none;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidLinkedListNextOid
- *
- * Description:
- *
- * Positions the XpOidLinkedList 'current' pointer to the next entry
- * in the list.
- *
- * Return value:
- *
- * The next oid, or xpoid_none if the end of the list has been
- * reached.
- */
-XpOid
-XpOidLinkedListNextOid(XpOidLinkedList* me)
-{
- if(me->current ? (me->current = me->current->next) : xFalse)
- return me->current->oid;
- else
- return xpoid_none;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidMediumSSNew
- *
- * Description:
- *
- * Creates a new XpOidMediumSS initialized from a string value
- * specified using the medium-source-sizes syntax. See
- * MediumSSParse() below for parsing details.
- *
- * Return value:
- *
- * NULL if the passed 'value_string' is NULL, or if a syntax error is
- * encountered while parsing the medium-source-sizes value.
- *
- */
-XpOidMediumSS*
-XpOidMediumSSNew(const char* value_string,
- const XpOidList* valid_trays,
- const XpOidList* valid_medium_sizes)
-{
- if(value_string == (const char*)NULL)
- return (XpOidMediumSS*)NULL;
- else
- {
- const char* ptr = value_string + SpanWhitespace(value_string);
- if(*ptr == '\0')
- return (XpOidMediumSS*)NULL;
- else
- return MediumSSParse(ptr, valid_trays, valid_medium_sizes,
- &ptr, 0);
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: MediumSSParse
- *
- * Description:
- *
- * 'ptr_return' *cannot* be NULL.
- *
- *
- * Return value:
- *
- *
- *
- */
-static XpOidMediumSS*
-MediumSSParse(const char* value_string,
- const XpOidList* valid_trays,
- const XpOidList* valid_medium_sizes,
- const char** ptr_return,
- int i)
-{
- XpOidMediumSS* medium_ss;
- XpOidMediumSourceSize mss;
- /*
- * check for the start of a new MediumSourceSize sequence
- */
- if(ParseSeqStart(value_string, ptr_return))
- {
- /*
- * check for an unspecified tray value
- */
- if(ParseUnspecifiedValue(*ptr_return, ptr_return))
- mss.input_tray = xpoid_unspecified;
- else
- {
- const char* tray_str;
- *ptr_return += SpanWhitespace(*ptr_return);
- tray_str = *ptr_return;
- /*
- * parse out the input tray
- */
- mss.input_tray = XpOidParse(*ptr_return, ptr_return);
- if((const XpOidList*)NULL != valid_trays
- &&
- !XpOidListHasOid(valid_trays, mss.input_tray)
- )
- mss.input_tray = xpoid_none;
- if(xpoid_none == mss.input_tray)
- {
- char* invalid_tray_str;
- int len = *ptr_return - tray_str;
- if(len > 0)
- {
- invalid_tray_str = XpOidMalloc(len+1);
- strncpy(invalid_tray_str, tray_str, len);
- invalid_tray_str[len] = '\0';
- ErrorF("%s\nInvalid tray (%s) found. Will attempt to continue parsing.\n",
- XPMSG_WARN_MSS, invalid_tray_str);
- XpOidFree(invalid_tray_str);
- }
- }
- }
- /*
- * attempt to parse a Continuous MediumSize sequence
- */
- mss.ms.continuous_size =
- MediumContinuousSizeParse(*ptr_return, ptr_return);
- if(mss.ms.continuous_size != (XpOidMediumContinuousSize*)NULL)
- {
- mss.mstag = XpOidMediumSS_CONTINUOUS;
- }
- else
- {
- /*
- * not continuous, try Discrete MediumSize
- */
- mss.ms.discrete =
- MediumDiscreteSizeListParse(*ptr_return, valid_medium_sizes,
- ptr_return, 0);
- if(mss.ms.discrete == (XpOidMediumDiscreteSizeList*)NULL)
- {
- const char* tray_str;
- /*
- * syntax error (MediumDiscreteSizeListParse reports error)
- */
- switch(mss.input_tray)
- {
- case xpoid_none:
- tray_str = "an invalid";
- break;
- case xpoid_unspecified:
- tray_str = "default (tray specifier omitted)";
- break;
- default:
- tray_str = XpOidString(mss.input_tray);
- break;
- }
- ErrorF("%s\nError occurred while parsing medium sizes for %s tray.\n",
- XPMSG_WARN_MSS, tray_str);
- return NULL;
- }
- mss.mstag = XpOidMediumSS_DISCRETE;
- }
- /*
- * parse out the MediumSourceSize sequence end
- */
- if(!ParseSeqEnd(*ptr_return, ptr_return))
- {
- /*
- * syntax error
- */
- ErrorF("%s\nSequence End expected. Unparsed data: %s\n",
- XPMSG_WARN_MSS, *ptr_return);
- return NULL;
- }
- /*
- * recurse to parse the next MediumSourceSize sequence
- */
- medium_ss = MediumSSParse(*ptr_return,
- valid_trays, valid_medium_sizes,
- ptr_return,
- xpoid_none == mss.input_tray ? i : i+1);
- if(medium_ss == (XpOidMediumSS*)NULL
- ||
- xpoid_none == mss.input_tray)
- {
- /*
- * syntax error or invalid tray - clean up
- */
- switch(mss.mstag)
- {
- case XpOidMediumSS_CONTINUOUS:
- MediumContinuousSizeDelete(mss.ms.continuous_size);
- break;
- case XpOidMediumSS_DISCRETE:
- MediumDiscreteSizeListDelete(mss.ms.discrete);
- break;
- }
- if(medium_ss == (XpOidMediumSS*)NULL)
- /*
- * syntax error - return
- */
- return NULL;
- }
- if(xpoid_none != mss.input_tray)
- {
- /*
- * copy the current MediumSourceSize into the array
- */
- memmove((medium_ss->mss)+i, &mss, sizeof(XpOidMediumSourceSize));
- }
- }
- else
- {
- /*
- * MediumSourceSize sequence start not found
- */
- if(**ptr_return == '\0')
- {
- if(0 == i)
- {
- ErrorF("%s\nNo valid trays found.\n", XPMSG_WARN_MSS);
- return NULL;
- }
- /*
- * end of value string; allocate the MediumSS structure
- */
- medium_ss = (XpOidMediumSS*)XpOidCalloc(1, sizeof(XpOidMediumSS));
- medium_ss->count = i;
- medium_ss->mss = (XpOidMediumSourceSize*)
- XpOidCalloc(i, sizeof(XpOidMediumSourceSize));
- }
- else
- {
- /*
- * syntax error
- */
- ErrorF("%s\nSequence Start expected.\nunparsed data: %s\n",
- XPMSG_WARN_MSS, *ptr_return);
- return NULL;
- }
- }
- return medium_ss;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidMediumSSDelete
- *
- * Description:
- *
- *
- *
- * Return value:
- *
- *
- *
- */
-void
-XpOidMediumSSDelete(XpOidMediumSS* me)
-{
- if(me != (XpOidMediumSS*)NULL)
- {
- int i;
- for(i = 0; i < me->count; i++)
- {
- switch((me->mss)[i].mstag)
- {
- case XpOidMediumSS_CONTINUOUS:
- MediumContinuousSizeDelete((me->mss)[i].ms.continuous_size);
- break;
- case XpOidMediumSS_DISCRETE:
- MediumDiscreteSizeListDelete((me->mss)[i].ms.discrete);
- break;
- }
- }
- XpOidFree((char*)me);
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidMediumSSHasSize
- *
- * Description:
- *
- *
- *
- * Return value:
- *
- *
- *
- */
-BOOL
-XpOidMediumSSHasSize(XpOidMediumSS* me, XpOid page_size)
-{
- int i_mss, i_ds;
- XpOidMediumDiscreteSizeList* ds_list;
-
- if(me != (XpOidMediumSS*)NULL && page_size != xpoid_none)
- for(i_mss = 0; i_mss < me->count; i_mss++)
- {
- switch((me->mss)[i_mss].mstag)
- {
- case XpOidMediumSS_DISCRETE:
- ds_list = (me->mss)[i_mss].ms.discrete;
- for(i_ds = 0; i_ds < ds_list->count; i_ds++)
- if(page_size == (ds_list->list)[i_ds].page_size)
- return xTrue;
- break;
-
- case XpOidMediumSS_CONTINUOUS:
- /*
- * unsupported
- */
- break;
- }
- }
- /*
- * return
- */
- return xFalse;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidMediumSSString
- *
- * Description:
- *
- * Creates a string representation of an XpOidMediumSS structure.
- *
- * Return value:
- *
- * A newly allocated
- *
- */
-char* XpOidMediumSSString(const XpOidMediumSS* me)
-{
- int itray, isize;
- int valid_size_count;
- int length;
- char* str;
- char* ptr;
- XpOidMediumDiscreteSize* ds;
- char buf[128];
- /*
- * determine the size of the string representation
- */
- for(itray = 0, length = 0; itray < XpOidMediumSSCount(me); itray++)
- {
- if(xpoid_none == me->mss[itray].input_tray
- ||
- XpOidMediumSS_CONTINUOUS == me->mss[itray].mstag)
- {
- /*
- * skip invalid tray or unsupported continuous size spec
- */
- continue;
- }
- for(isize = 0, valid_size_count = 0;
- isize < me->mss[itray].ms.discrete->count;
- isize++)
- {
- ds = me->mss[itray].ms.discrete->list+isize;
- if(ds->page_size == xpoid_none)
- continue;
- ++valid_size_count;
- length += XpOidStringLength(ds->page_size);
- length += ds->long_edge_feeds ? 4 : 5; /* "True" or "False" */
-#if defined(sun) && !defined(SVR4)
- sprintf(buf, "{%.4f %.4f %.4f %.4f}",
- ds->assured_reproduction_area.minimum_x,
- ds->assured_reproduction_area.maximum_x,
- ds->assured_reproduction_area.minimum_y,
- ds->assured_reproduction_area.maximum_y);
- length += strlen(buf);
-#else
- length += sprintf(buf, "{%.4f %.4f %.4f %.4f}",
- ds->assured_reproduction_area.minimum_x,
- ds->assured_reproduction_area.maximum_x,
- ds->assured_reproduction_area.minimum_y,
- ds->assured_reproduction_area.maximum_y);
-#endif
- length += 5; /* "{<size> <feed> <area>} " */
- }
- if(valid_size_count == 0)
- {
- /*
- * no valid sizes, skip
- */
- continue;
- }
- if(xpoid_unspecified == me->mss[itray].input_tray)
- length += 2; /* "''" */
- else
- length += XpOidStringLength(me->mss[itray].input_tray);
- length += 4; /* "{<tray> <sizes>} " */
- }
- /*
- * allocate
- */
- str = XpOidMalloc(length+1);
- /*
- * format
- */
- for(itray = 0, ptr = str; itray < XpOidMediumSSCount(me); itray++)
- {
- if(xpoid_none == me->mss[itray].input_tray
- ||
- XpOidMediumSS_CONTINUOUS == me->mss[itray].mstag)
- {
- /*
- * skip invalid tray or unsupported continuous size spec
- */
- continue;
- }
- /*
- * check to ensure all of the specified sizes are valid
- */
- for(isize = 0, valid_size_count = 0;
- isize < me->mss[itray].ms.discrete->count;
- isize++)
- {
- ds = me->mss[itray].ms.discrete->list+isize;
- if(ds->page_size != xpoid_none)
- ++valid_size_count;
- }
- if(valid_size_count == 0)
- {
- /*
- * no valid sizes, skip
- */
- continue;
- }
-
- if(xpoid_unspecified == me->mss[itray].input_tray)
- {
-#if defined(sun) && !defined(SVR4)
- sprintf(ptr, "{'' ");
- ptr += strlen(ptr);
-#else
- ptr += sprintf(ptr, "{'' ");
-#endif
- }
- else
- {
-#if defined(sun) && !defined(SVR4)
- sprintf(ptr, "{%s ", XpOidString(me->mss[itray].input_tray));
- ptr += strlen(ptr);
-#else
- ptr += sprintf(ptr, "{%s ",
- XpOidString(me->mss[itray].input_tray));
-#endif
- }
- for(isize = 0; isize < me->mss[itray].ms.discrete->count; isize++)
- {
- ds = me->mss[itray].ms.discrete->list+isize;
- if(ds->page_size != xpoid_none)
-#if defined(sun) && !defined(SVR4)
- {
- sprintf(ptr, "{%s %s {%.4f %.4f %.4f %.4f}} ",
- XpOidString(ds->page_size),
- ds->long_edge_feeds ? "True" : "False",
- ds->assured_reproduction_area.minimum_x,
- ds->assured_reproduction_area.maximum_x,
- ds->assured_reproduction_area.minimum_y,
- ds->assured_reproduction_area.maximum_y);
- ptr += strlen(ptr);
- }
-#else
- ptr += sprintf(ptr, "{%s %s {%.4f %.4f %.4f %.4f}} ",
- XpOidString(ds->page_size),
- ds->long_edge_feeds ? "True" : "False",
- ds->assured_reproduction_area.minimum_x,
- ds->assured_reproduction_area.maximum_x,
- ds->assured_reproduction_area.minimum_y,
- ds->assured_reproduction_area.maximum_y);
-#endif
- }
-#if defined(sun) && !defined(SVR4)
- sprintf(ptr, "} ");
- ptr += strlen(ptr);
-#else
- ptr += sprintf(ptr, "} ");
-#endif
- }
- /*
- * chop trailing whitespace or terminate empty string
- */
- str[length] = '\0';
- /*
- * return
- */
- return str;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: MediumContinuousSizeParse
- *
- * Description:
- *
- * 'ptr_return' *cannot* be NULL.
- *
- *
- * Return value:
- *
- *
- *
- */
-static XpOidMediumContinuousSize*
-MediumContinuousSizeParse(const char* value_string,
- const char** ptr_return)
-{
- const char* first_nonws_ptr;
- XpOidMediumContinuousSize* mcs = NULL;
- /*
- * skip leading whitespace
- */
- first_nonws_ptr = value_string + SpanWhitespace(value_string);
- /*
- * parse out the MediumSize sequence start char
- */
- if(!ParseSeqStart(first_nonws_ptr, ptr_return))
- goto MediumContinuousSizeParse_error;
- /*
- * peek ahead to see if it looks like we actually have a continuous
- * size spec (looking for the sequence start char on the 1st range spec)
- */
- if(!ParseSeqStart(*ptr_return, (const char**)NULL))
- goto MediumContinuousSizeParse_error;
- /*
- * Ok, let's go for it
- */
- mcs = (XpOidMediumContinuousSize*)
- XpOidCalloc(1, sizeof(XpOidMediumContinuousSize));
- /*
- * "range across the feed direction"
- */
- if(!ParseRealRange(*ptr_return, ptr_return, &mcs->range_across_feed))
- goto MediumContinuousSizeParse_error;
- /*
- * "increment across the feed direction" (optional, default 0)
- */
- if(!ParseUnspecifiedValue(*ptr_return, ptr_return))
- if(!ParseRealValue(*ptr_return, ptr_return,
- &mcs->increment_across_feed))
- goto MediumContinuousSizeParse_error;
- /*
- * "range in the feed direction"
- */
- if(!ParseRealRange(*ptr_return, ptr_return, &mcs->range_in_feed))
- goto MediumContinuousSizeParse_error;
- /*
- * "increment in the feed direction" (optional, default 0)
- */
- if(!ParseUnspecifiedValue(*ptr_return, ptr_return))
- if(!ParseRealValue(*ptr_return, ptr_return,
- &mcs->increment_in_feed))
- goto MediumContinuousSizeParse_error;
- /*
- * "long edge feeds" flag (default TRUE)
- */
- if(ParseUnspecifiedValue(*ptr_return, ptr_return))
- mcs->long_edge_feeds = xTrue;
- else
- if(!ParseBoolValue(*ptr_return, ptr_return, &mcs->long_edge_feeds))
- goto MediumContinuousSizeParse_error;
- /*
- * "generic assured reproduction area"
- */
- if(!ParseArea(*ptr_return, ptr_return, &mcs->assured_reproduction_area))
- goto MediumContinuousSizeParse_error;
- /*
- * parse out the MediumSize sequence end character
- */
- if(!ParseSeqEnd(*ptr_return, ptr_return))
- goto MediumContinuousSizeParse_error;
- /*
- * return
- */
- return mcs;
-
-
- MediumContinuousSizeParse_error:
- /*
- * syntax error - don't log since this function may be called
- * as a lookahead
- */
- *ptr_return = first_nonws_ptr;
- XpOidFree((char*)mcs);
- return NULL;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: MediumContinuousSizeDelete
- *
- * Description:
- *
- * 'ptr_return' *cannot* be NULL.
- *
- *
- * Return value:
- *
- *
- *
- */
-static void
-MediumContinuousSizeDelete(XpOidMediumContinuousSize* me)
-{
- XpOidFree((char*)me);
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: MediumDiscreteSizeListParse
- *
- * Description:
- *
- * 'ptr_return' *cannot* be NULL.
- *
- * Return value:
- *
- *
- *
- */
-static XpOidMediumDiscreteSizeList*
-MediumDiscreteSizeListParse(const char* value_string,
- const XpOidList* valid_medium_sizes,
- const char** ptr_return,
- int i)
-{
- XpOidMediumDiscreteSizeList* list;
- XpOidMediumDiscreteSize mds;
- /*
- * check for the start of a new MediumSize sequence
- */
- if(ParseSeqStart(value_string, ptr_return))
- {
- /*
- * "page size"
- */
- mds.page_size = XpOidParse(*ptr_return, ptr_return);
- if((const XpOidList*)NULL != valid_medium_sizes
- &&
- !XpOidListHasOid(valid_medium_sizes, mds.page_size)
- )
- mds.page_size = xpoid_none;
- /*
- * "long edge feeds" flag (default TRUE)
- */
- if(ParseUnspecifiedValue(*ptr_return, ptr_return))
- mds.long_edge_feeds = xTrue;
- else
- if(!ParseBoolValue(*ptr_return, ptr_return,
- &mds.long_edge_feeds))
- {
- /*
- * syntax error
- */
- ErrorF("%s\nBoolean expected.\nunparsed data: %s\n",
- XPMSG_WARN_MSS, *ptr_return);
- return (XpOidMediumDiscreteSizeList*)NULL;
- }
- /*
- * "assured reproduction area"
- */
- if(!ParseArea(*ptr_return, ptr_return,
- &mds.assured_reproduction_area))
- {
- /*
- * syntax error
- */
- ErrorF("%s\nArea specification error.\nunparsed data: %s\n",
- XPMSG_WARN_MSS, *ptr_return);
- return (XpOidMediumDiscreteSizeList*)NULL;
- }
- /*
- * parse out the MediumSize sequence end character
- */
- if(!ParseSeqEnd(*ptr_return, ptr_return))
- {
- ErrorF("%s\nSequence End expected. Unparsed data: %s\n",
- XPMSG_WARN_MSS, *ptr_return);
- return (XpOidMediumDiscreteSizeList*)NULL;
- }
- /*
- * recurse to parse the next Discrete MediumSize sequence
- */
- if(mds.page_size == xpoid_none)
- {
- list = MediumDiscreteSizeListParse(*ptr_return, valid_medium_sizes,
- ptr_return, i);
- }
- else
- {
- list = MediumDiscreteSizeListParse(*ptr_return, valid_medium_sizes,
- ptr_return, i+1);
- if(list != (XpOidMediumDiscreteSizeList*)NULL)
- {
- /*
- * copy the current discrete MediumSize into the list
- */
- memmove((list->list)+i, &mds, sizeof(XpOidMediumDiscreteSize));
- }
- }
- }
- else
- {
- /*
- * MediumSize sequence start not found; end of the discrete sizes
- * list
- */
- if(0 == i)
- {
- ErrorF("%s\nNo valid medium sizes found for tray.\n",
- XPMSG_WARN_MSS);
- return (XpOidMediumDiscreteSizeList*)NULL;
- }
- list = (XpOidMediumDiscreteSizeList*)
- XpOidCalloc(1, sizeof(XpOidMediumDiscreteSizeList));
- list->count = i;
- list->list = (XpOidMediumDiscreteSize*)
- XpOidCalloc(i, sizeof(XpOidMediumDiscreteSize));
- }
- return list;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: MediumDiscreteSizeListDelete
- *
- * Description:
- *
- *
- *
- * Return value:
- *
- *
- *
- */
-static void
-MediumDiscreteSizeListDelete(XpOidMediumDiscreteSizeList* list)
-{
- if(list != (XpOidMediumDiscreteSizeList*)NULL)
- {
- XpOidFree((char*)list->list);
- XpOidFree((char*)list);
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidTrayMediumListNew
- *
- * Description:
- *
- * Only need the valid trays; validation requires bumping up against
- * msss using TrayMediumListValidate; this needs valid trays
- * because of unspecified trays ion msss, but
- * TrayMediumListValidate will take care of invalid sizes...
- *
- * Return value:
- *
- *
- *
- */
-XpOidTrayMediumList*
-XpOidTrayMediumListNew(const char* value_string,
- const XpOidList* valid_trays,
- const XpOidMediumSS* msss)
-{
- if(value_string == (const char*)NULL)
- return (XpOidTrayMediumList*)NULL;
- else
- {
- const char* ptr;
- XpOidTrayMediumList* me;
- me = TrayMediumListParse(value_string, valid_trays, &ptr, 0);
- if((XpOidTrayMediumList*)NULL != me)
- TrayMediumListValidate(me, msss);
- return me;
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidTrayMediumListDelete
- *
- * Description:
- *
- *
- *
- * Return value:
- *
- *
- *
- */
-void
-XpOidTrayMediumListDelete(XpOidTrayMediumList* list)
-{
- if(list != (XpOidTrayMediumList*)NULL)
- {
- XpOidFree((char*)list->list);
- XpOidFree((char*)list);
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: TrayMediumListParse
- *
- * Description:
- *
- * 'ptr_return' *cannot* be NULL.
- *
- * Return value:
- *
- *
- *
- */
-static XpOidTrayMediumList*
-TrayMediumListParse(const char* value_string,
- const XpOidList* valid_trays,
- const char** ptr_return, int i)
-{
- XpOidTrayMedium tm;
- XpOidTrayMediumList* list;
- /*
- * check for the start of a new InputTrayMedium sequence
- */
- if(ParseSeqStart(value_string, ptr_return))
- {
- /*
- * "input tray"
- */
- tm.input_tray = XpOidParse(*ptr_return, ptr_return);
- if((XpOidList*)NULL != valid_trays
- &&
- !XpOidListHasOid(valid_trays, tm.input_tray)
- )
- tm.input_tray = xpoid_none;
- /*
- * "medium"
- */
- tm.medium = XpOidParse(*ptr_return, ptr_return);
- /*
- * parse out the InputTrayMedium sequence end character
- */
- if(!ParseSeqEnd(*ptr_return, ptr_return))
- {
- ErrorF("%s\n", XPMSG_WARN_ITM);
- return NULL;
- }
- /*
- * recurse to parse the next InputTrayMedium sequence
- */
- list = TrayMediumListParse(*ptr_return, valid_trays, ptr_return, i+1);
- if(list != (XpOidTrayMediumList*)NULL)
- {
- /*
- * copy the current InputTrayMedium into the list
- */
- memmove((list->list)+i, &tm, sizeof(XpOidTrayMedium));
- }
- }
- else
- {
- /*
- * InputTrayMedium sequence start not found
- */
- if(**ptr_return == '\0')
- {
- /*
- * end of the list
- */
- list = (XpOidTrayMediumList*)
- XpOidCalloc(1, sizeof(XpOidTrayMediumList));
- list->count = i;
- list->list = (XpOidTrayMedium*)
- XpOidCalloc(i, sizeof(XpOidTrayMedium));
- }
- else
- {
- /*
- * syntax error
- */
- ErrorF("%s\n", XPMSG_WARN_ITM);
- return NULL;
- }
- }
- /*
- * return
- */
- return list;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: TrayMediumListValidate
- *
- * Description:
- *
- * Validate the input-trays-medium list based on a passed
- * medium-source-sizes-supported structure. The validated
- * input-trays-medium list will have the same number of entries upon
- * return from this function. Invalid entries are indicated by
- * setting the tray specification to xpoid_none.
- *
- * Return value:
- *
- * None.
- *
- */
-static void
-TrayMediumListValidate(XpOidTrayMediumList* me,
- const XpOidMediumSS* msss)
-{
- int i_mss, i_ds, i_itm;
- XpOidMediumDiscreteSizeList* ds_list;
- int tray_count;
- XpOid current_tray, current_medium;
- XpOidMediumDiscreteSizeList* unspecified_tray_ds;
- XpOidMediumDiscreteSizeList* tray_ds;
-
- if(msss == (XpOidMediumSS*)NULL
- ||
- me == (XpOidTrayMediumList*)NULL)
- {
- return;
- }
- /*
- * loop through the input trays medium list
- */
- for(i_itm = 0; i_itm < XpOidTrayMediumListCount(me); i_itm++)
- {
- current_tray = XpOidTrayMediumListTray(me, i_itm);
- if(current_tray == xpoid_none)
- continue;
- current_medium = XpOidTrayMediumListMedium(me, i_itm);
- if(current_medium == xpoid_none)
- {
- /*
- * no medium; invalidate this entry
- */
- me->list[i_itm].input_tray = xpoid_none;
- continue;
- }
- /*
- * loop through the MediumSourceSizes, looking for an appropriate
- * discrete sizes spec for the current tray
- */
- unspecified_tray_ds = (XpOidMediumDiscreteSizeList*)NULL;
- tray_ds = (XpOidMediumDiscreteSizeList*)NULL;
- for(i_mss = 0;
- i_mss < msss->count &&
- tray_ds == (XpOidMediumDiscreteSizeList*)NULL;
- i_mss++)
- {
- switch((msss->mss)[i_mss].mstag)
- {
- case XpOidMediumSS_DISCRETE:
- if((msss->mss)[i_mss].input_tray == current_tray)
- tray_ds = (msss->mss)[i_mss].ms.discrete;
- else if((msss->mss)[i_mss].input_tray == xpoid_unspecified)
- unspecified_tray_ds = (msss->mss)[i_mss].ms.discrete;
- break;
-
- case XpOidMediumSS_CONTINUOUS:
- /*
- * unsupported
- */
- break;
- }
- }
- /*
- * if the tray was not matched, use the unspecified tray size
- * list
- */
- if(tray_ds == (XpOidMediumDiscreteSizeList*)NULL)
- {
- if(unspecified_tray_ds == (XpOidMediumDiscreteSizeList*)NULL)
- {
- /*
- * not even an unspecified tray, invalidate this
- * input-trays-medium entry.
- */
- me->list[i_itm].input_tray = xpoid_none;
- continue;
- }
- else
- tray_ds = unspecified_tray_ds;
- }
- /*
- * loop through the discrete sizes list, looking for a size that
- * matches the medium for the current input tray
- */
- for(i_ds = 0; i_ds < tray_ds->count; i_ds++)
- {
- /*
- * check to see if the current input tray's medium size
- * matches the current discrete size
- *
- * Note: in the CDEnext SI, medium identifiers coincide with
- * medium-size identifiers. If the DP-Medium object is
- * ever implemented, this check would need to be
- * changed so that the input tray's medium size is
- * obtained from the indicated Medium object, and not
- * inferred from the medium identifier itself.
- */
- if((tray_ds->list)[i_ds].page_size == current_medium)
- {
- /*
- * The current input tray's medium size matches the
- * current discrete medium size.
- */
- break;
- }
- }
- if(i_ds == tray_ds->count)
- {
- /*
- * The current input tray's medium size was not found in the
- * discrete size list; mark the input tray medium entry
- * invalid
- */
- me->list[i_itm].input_tray = xpoid_none;
- }
-
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidTrayMediumListString
- *
- * Description:
- *
- * Creates a string representation of an XpOidTrayMediumList structure.
- *
- * Return value:
- *
- * A newly allocated
- *
- */
-char* XpOidTrayMediumListString(const XpOidTrayMediumList* me)
-{
- int i;
- int length;
- char* str;
- char* ptr;
- XpOid tray;
- /*
- * allocate enough memory for the string representation,
- * including intervening delimiters and whitespace
- */
- for(i = 0, length = 0; i < XpOidTrayMediumListCount(me); i++)
- {
- tray = XpOidTrayMediumListTray(me, i);
- if(xpoid_none != tray)
- {
- length += XpOidStringLength(tray);
- length += XpOidStringLength(XpOidTrayMediumListMedium(me, i));
- length += 4;
- }
- }
- str = XpOidMalloc(length+1);
- /*
- * format the list
- */
- for(i = 0, ptr = str; i < XpOidTrayMediumListCount(me); i++)
- {
- tray = XpOidTrayMediumListTray(me, i);
- if(xpoid_none != tray)
- {
-#if defined(sun) && !defined(SVR4)
- sprintf(ptr, "{%s %s} ",
- XpOidString(tray),
- XpOidString(XpOidTrayMediumListMedium(me, i)));
- ptr += strlen(ptr);
-#else
- ptr += sprintf(ptr, "{%s %s} ",
- XpOidString(tray),
- XpOidString(XpOidTrayMediumListMedium(me, i)));
-#endif
- }
- }
- /*
- * chop trailing whitespace or terminate empty string
- */
- str[length] = '\0';
- /*
- * return
- */
- return str;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidTrayMediumListHasTray
- *
- * Description:
- *
- * Determines if 'tray' is found in 'list'.
- *
- * Return value:
- *
- * xTrue if the tray is found in the list.
- *
- * xFalse if the tray is not in the list, or if 'list' is NULL.
- *
- */
-BOOL
-XpOidTrayMediumListHasTray(const XpOidTrayMediumList* list, XpOid tray)
-{
- int i;
- if(list != (XpOidTrayMediumList*)NULL && tray != xpoid_none)
- for(i = 0; i < list->count; i++)
- if(XpOidTrayMediumListTray(list, i) == tray)
- return xTrue;
- return xFalse;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: ParseArea
- *
- * Description:
- *
- * Skips leading whitespace and parses out and returns a XpOidArea.
- *
- * Return value:
- *
- * xTrue if the XpOidArea was successfully parsed. ptr_return is
- * updated to point to location where the parsing ended.
- *
- * xFalse if a XpOidArea was not found; ptr_return is updated
- * to point to the first non-whitespace char in value_string.
- *
- */
-static BOOL
-ParseArea(const char* value_string,
- const char** ptr_return,
- XpOidArea* area_return)
-{
- const char* first_nonws_ptr;
- const char* ptr;
- /*
- * skip leading whitespace
- */
- first_nonws_ptr = value_string + SpanWhitespace(value_string);
- /*
- * parse out the area sequence start
- */
- if(!ParseSeqStart(first_nonws_ptr, &ptr))
- goto ParseArea_error;
- /*
- * parse the minimum x value
- */
- if(!ParseRealValue(ptr, &ptr,
- area_return ? &area_return->minimum_x : NULL))
- goto ParseArea_error;
- /*
- * parse the maximum x value
- */
- if(!ParseRealValue(ptr, &ptr,
- area_return ? &area_return->maximum_x : NULL))
- goto ParseArea_error;
- /*
- * parse the minimum y value
- */
- if(!ParseRealValue(ptr, &ptr,
- area_return ? &area_return->minimum_y : NULL))
- goto ParseArea_error;
- /*
- * parse the maximum y value
- */
- if(!ParseRealValue(ptr, &ptr,
- area_return ? &area_return->maximum_y : NULL))
- goto ParseArea_error;
- /*
- * parse out the area sequence end
- */
- if(!ParseSeqEnd(ptr, &ptr))
- goto ParseArea_error;
- /*
- * update the return pointer
- */
- if(ptr_return != (const char**)NULL)
- *ptr_return = ptr;
- /*
- * return
- */
- return xTrue;
-
-
- ParseArea_error:
- /*
- * syntax error
- */
- if(ptr_return != (const char**)NULL)
- *ptr_return = first_nonws_ptr;
- return xFalse;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: ParseRealRange
- *
- * Description:
- *
- * Skips leading whitespace and parses out and returns a
- * XpOidRealRange.
- *
- * Return value:
- *
- * xTrue if the XpOidRealRange was successfully
- * parsed. ptr_return is updated to point to location where the
- * parsing ended.
- *
- * xFalse if a XpOidRealRange was not found; ptr_return is
- * updated to point to the first non-whitespace char in value_string.
- *
- */
-static BOOL
-ParseRealRange(const char* value_string,
- const char** ptr_return,
- XpOidRealRange* range_return)
-{
- const char* first_nonws_ptr;
- const char* ptr;
- /*
- * skip leading whitespace
- */
- first_nonws_ptr = value_string + SpanWhitespace(value_string);
- /*
- * parse out the range sequence start
- */
- if(!ParseSeqStart(first_nonws_ptr, &ptr))
- goto ParseRealRange_error;
- /*
- * parse the lower bound
- */
- if(!ParseRealValue(ptr, &ptr,
- range_return ? &range_return->lower_bound : NULL))
- goto ParseRealRange_error;
- /*
- * parse the upper bound
- */
- if(!ParseRealValue(ptr, &ptr,
- range_return ? &range_return->upper_bound : NULL))
- goto ParseRealRange_error;
- /*
- * parse out the range sequence end
- */
- if(!ParseSeqEnd(ptr, &ptr))
- goto ParseRealRange_error;
- /*
- * update the return pointer
- */
- if(ptr_return != (const char**)NULL)
- *ptr_return = ptr;
- /*
- * return
- */
- return xTrue;
-
-
- ParseRealRange_error:
- /*
- * syntax error
- */
- if(ptr_return != (const char**)NULL)
- *ptr_return = first_nonws_ptr;
- return xFalse;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidNotifyParse
- *
- * Description:
- *
- *
- * Return value:
- *
- *
- */
-XpOidNotify XpOidNotifyParse(const char* value_string)
-{
- const char* ptr = value_string;
-
- if(value_string == (const char*)NULL)
- return XPOID_NOTIFY_NONE;
- /*
- * look for an event handling profile sequence start
- */
- if(!ParseSeqStart(value_string, &ptr))
- {
- if('\0' == *ptr)
- /*
- * empty value is valid
- */
- return XPOID_NOTIFY_NONE;
- else
- return XPOID_NOTIFY_UNSUPPORTED;
- }
- /*
- * look for an event set sequence start
- */
- if(!ParseSeqStart(ptr, &ptr))
- {
- /*
- * check for an empty event handling profile
- */
- if(ParseSeqEnd(ptr, &ptr))
- {
- ptr += SpanWhitespace(ptr);
- if(*ptr == '\0')
- /*
- * valid empty event handling profile sequence
- */
- return XPOID_NOTIFY_NONE;
- }
- return XPOID_NOTIFY_UNSUPPORTED;
- }
- /*
- * the only event in the set should be report job completed
- */
- if(xpoid_val_event_report_job_completed != XpOidParse(ptr, &ptr))
- return XPOID_NOTIFY_UNSUPPORTED;
- /*
- * event set sequence end
- */
- if(!ParseSeqEnd(ptr, &ptr))
- return XPOID_NOTIFY_UNSUPPORTED;
- /*
- * delivery method of electronic mail
- */
- if(xpoid_val_delivery_method_electronic_mail != XpOidParse(ptr, &ptr))
- return XPOID_NOTIFY_UNSUPPORTED;
- /*
- * event handling profile sequence end
- */
- if(!ParseSeqEnd(ptr, &ptr))
- return XPOID_NOTIFY_UNSUPPORTED;
- /*
- * end of value
- */
- ptr += SpanWhitespace(ptr);
- if('\0' == *ptr)
- /*
- * valid supported notification profile
- */
- return XPOID_NOTIFY_EMAIL;
- else
- return XPOID_NOTIFY_UNSUPPORTED;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidNotifyString
- *
- * Description:
- *
- *
- * Return value:
- *
- *
- */
-const char* XpOidNotifyString(XpOidNotify notify)
-{
- switch(notify)
- {
- case XPOID_NOTIFY_NONE:
- return NOTIFY_NONE_STR;
- case XPOID_NOTIFY_EMAIL:
- return NOTIFY_EMAIL_STR;
- case XPOID_NOTIFY_UNSUPPORTED:
- return (const char *)NULL;
- }
-
- ErrorF("XpOidNotifyString: Unsupported notify=%ld\n", (long)notify);
- return (const char *)NULL;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidDocFmtNew
- *
- * Description:
- *
- *
- * Return value:
- *
- *
- */
-XpOidDocFmt*
-XpOidDocFmtNew(const char* value_string)
-{
- XpOidDocFmt* doc_fmt;
- const char* ptr;
-
- if((const char*)NULL == value_string)
- return (XpOidDocFmt*)NULL;
- ptr = value_string + SpanWhitespace(value_string);
- if('\0' == *ptr)
- return (XpOidDocFmt*)NULL;
- /*
- * get the document format from the value string
- */
- doc_fmt = (XpOidDocFmt*)XpOidCalloc(1, sizeof(XpOidDocFmt));
- if(xTrue == XpOidDocFmtNext(doc_fmt, ptr, &ptr))
- {
- /*
- * verify that the document format is the only value specified
- */
- ptr += SpanWhitespace(ptr);
- if('\0' == *ptr)
- /*
- * valid document-format value
- */
- return doc_fmt;
- }
- /*
- * invalid
- */
- XpOidDocFmtDelete(doc_fmt);
- ErrorF("%s\n", XPMSG_WARN_DOC_FMT);
- return (XpOidDocFmt*)NULL;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidDocFmtDelete
- *
- * Description:
- *
- *
- * Return value:
- *
- *
- */
-void
-XpOidDocFmtDelete(XpOidDocFmt* doc_fmt)
-{
- if((XpOidDocFmt*)NULL != doc_fmt)
- {
- XpOidFree(doc_fmt->format);
- XpOidFree(doc_fmt->variant);
- XpOidFree(doc_fmt->version);
- XpOidFree(doc_fmt);
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidDocFmtString
- *
- * Description:
- *
- *
- * Return value:
- *
- *
- */
-char*
-XpOidDocFmtString(XpOidDocFmt* doc_fmt)
-{
- if((XpOidDocFmt*)NULL != doc_fmt)
- {
- if((char*)NULL != doc_fmt->format)
- {
- char* str = XpOidMalloc(1+SafeStrLen(doc_fmt->format)+
- 1+SafeStrLen(doc_fmt->variant)+
- 1+SafeStrLen(doc_fmt->version)+
- 1+1);
- sprintf(str, "{%s %s %s}", doc_fmt->format,
- (char*)NULL != doc_fmt->variant ? doc_fmt->variant : "",
- (char*)NULL != doc_fmt->version ? doc_fmt->version : "");
- return str;
- }
- }
- return (char*)NULL;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidDocFmtNext
- *
- * Description:
- *
- * Assumes non-NULL value string.
- *
- * Return value:
- *
- *
- */
-static BOOL
-XpOidDocFmtNext(XpOidDocFmt* doc_fmt,
- const char* value_string,
- const char** ptr_return)
-{
- const char* ptr;
- const char* first_nonws_ptr;
- const char* format;
- const char* variant;
- const char* version;
- int format_len;
- int variant_len;
- int version_len;
- /*
- * skip leading whitespace
- */
- ptr = value_string + SpanWhitespace(value_string);
- first_nonws_ptr = ptr;
- /*
- * sequence start
- */
- if(!ParseSeqStart(ptr, &ptr))
- goto XpOidDocFmtNext_error;
- /*
- * skip whitepace to the start of the document format, and save the
- * location
- */
- ptr += SpanWhitespace(ptr);
- format = ptr;
- /*
- * document format
- */
- if(0 == (format_len = SpanToken(ptr)))
- goto XpOidDocFmtNext_error;
- ptr += format_len;
- /*
- * optional variant
- */
- ptr += SpanWhitespace(ptr);
- variant = ptr;
- if(0 != (variant_len = SpanToken(ptr)))
- {
- ptr += variant_len;
- /*
- * optional version
- */
- ptr += SpanWhitespace(ptr);
- version = ptr;
- version_len = SpanToken(ptr);
- ptr += version_len;
- }
- else
- version_len = 0;
- /*
- * sequence end
- */
- if(!ParseSeqEnd(ptr, &ptr))
- goto XpOidDocFmtNext_error;
- /*
- * update return pointer
- */
- if((const char**)NULL != ptr_return)
- *ptr_return = ptr;
- /*
- * update the passed document format struct
- */
- memset(doc_fmt, 0, sizeof(XpOidDocFmt));
- doc_fmt->format = XpOidMalloc(format_len+1);
- strncpy(doc_fmt->format, format, format_len);
- doc_fmt->format[format_len] = '\0';
- if(0 < variant_len)
- {
- doc_fmt->variant = XpOidMalloc(variant_len+1);
- strncpy(doc_fmt->variant, variant, variant_len);
- doc_fmt->variant[variant_len] = '\0';
- if(0 < version_len)
- {
- doc_fmt->version = XpOidMalloc(version_len+1);
- strncpy(doc_fmt->version, version, version_len);
- doc_fmt->version[version_len] = '\0';
- }
- }
- return xTrue;
-
- XpOidDocFmtNext_error:
- if((const char**)NULL != ptr_return)
- *ptr_return = first_nonws_ptr;
- return xFalse;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidDocFmtListNew
- *
- * Description:
- *
- *
- * Return value:
- *
- *
- */
-XpOidDocFmtList*
-XpOidDocFmtListNew(const char* value_string,
- const XpOidDocFmtList* valid_fmts)
-{
- if((char*)NULL != value_string)
- {
- const char* ptr;
- return XpOidDocFmtListParse(value_string, valid_fmts, &ptr, 0);
- }
- return (XpOidDocFmtList*)NULL;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidDocFmtListDelete
- *
- * Description:
- *
- *
- * Return value:
- *
- *
- */
-void
-XpOidDocFmtListDelete(XpOidDocFmtList* list)
-{
- if((XpOidDocFmtList*)NULL != list)
- {
- int i;
- for(i = 0; i < list->count; i++)
- {
- XpOidFree(list->list[i].format);
- XpOidFree(list->list[i].variant);
- XpOidFree(list->list[i].version);
- }
- XpOidFree(list->list);
- XpOidFree(list);
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidDocFmtListString
- *
- * Description:
- *
- * Assumes the passed structure is valid.
- *
- * Return value:
- *
- *
- */
-char*
-XpOidDocFmtListString(const XpOidDocFmtList* list)
-{
- if((XpOidDocFmtList*)NULL != list)
- {
- if(0 < list->count)
- {
- int i;
- int str_len;
- char* str;
- char* ptr;
- /*
- * allocate the return string
- */
- for(i = 0, str_len = 0; i < list->count; i++)
- {
- str_len +=
- 1 + SafeStrLen(list->list[i].format) +
- 1 + SafeStrLen(list->list[i].variant) +
- 1 + SafeStrLen(list->list[i].version) + 2;
- }
- str = XpOidMalloc(str_len+1);
- /*
- * print the list into the string and return it
- */
- ptr = str;
- for(i = 0; i < list->count; i++)
- {
- XpOidDocFmt* df = &list->list[i];
-
-#if defined(sun) && !defined(SVR4)
- sprintf(ptr, "{%s %s %s} ",
- df->format,
- (char*)NULL != df->variant ? df->variant : "",
- (char*)NULL != df->version ? df->version : "");
- ptr += strlen(ptr);
-#else
- ptr +=
- sprintf(ptr, "{%s %s %s} ",
- df->format,
- (char*)NULL != df->variant ? df->variant : "",
- (char*)NULL != df->version ? df->version : "");
-#endif
- }
- return str;
- }
- }
- return (char*)NULL;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidDocFmtListParse
- *
- * Description:
- *
- * Assumes the passed value_string and ptr_return are non-NULL.
- *
- * Return value:
- *
- *
- */
-static XpOidDocFmtList*
-XpOidDocFmtListParse(const char* value_string,
- const XpOidDocFmtList* valid_fmts,
- const char** ptr_return,
- int i)
-{
- XpOidDocFmt doc_fmt;
- XpOidDocFmtList* list;
- BOOL status;
- /*
- * get the next document-format from the value string, skipping
- * values not found in the passed list of valid formats
- */
- *ptr_return = value_string;
- while((status = XpOidDocFmtNext(&doc_fmt, *ptr_return, ptr_return))
- &&
- (const XpOidDocFmtList*)NULL != valid_fmts
- &&
- !XpOidDocFmtListHasFmt(valid_fmts, &doc_fmt)
- );
-
- if(xFalse == status)
- {
- if('\0' == **ptr_return)
- {
- if(0 == i)
- {
- /*
- * empty value string
- */
- return (XpOidDocFmtList*)NULL;
- }
- else
- {
- /*
- * done parsing; allocate the list and return
- */
- list =
- (XpOidDocFmtList*)XpOidCalloc(1, sizeof(XpOidDocFmtList));
- list->count = i;
- list->list = (XpOidDocFmt*)XpOidCalloc(i, sizeof(XpOidDocFmt));
- return list;
- }
- }
- else
- {
- /*
- * invalid document format
- */
- ErrorF("%s\n", XPMSG_WARN_DOCFMT_LIST);
- return (XpOidDocFmtList*)NULL;
- }
- }
- else
- {
- /*
- * recurse to parse remaining document formats
- */
- list = XpOidDocFmtListParse(*ptr_return, valid_fmts, ptr_return, i+1);
- if((XpOidDocFmtList*)NULL != list)
- {
- /*
- * add this doc fmt to the list
- */
- list->list[i].format = doc_fmt.format;
- list->list[i].variant = doc_fmt.variant;
- list->list[i].version = doc_fmt.version;
- }
- return list;
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidDocFmtListHasFmt
- *
- * Description:
- *
- * Assumes the passed structure is valid.
- *
- * Return value:
- *
- *
- */
-BOOL
-XpOidDocFmtListHasFmt(const XpOidDocFmtList* list,
- const XpOidDocFmt* fmt)
-{
- int i;
- if(list != (XpOidDocFmtList*)NULL
- &&
- fmt != (XpOidDocFmt*)NULL
- &&
- fmt->format != (char*)NULL
- )
- {
- for(i = 0; i < list->count; i++)
- {
- /*
- * formats must match
- */
- if(strcmp(fmt->format, list->list[i].format) != 0)
- continue;
- /*
- * variants must both be NULL or match
- */
- if(fmt->variant == (char*)NULL)
- {
- if(list->list[i].variant == (char*)NULL)
- return xTrue;
- else
- continue;
- }
- if(list->list[i].variant == (char*)NULL)
- continue;
- if(strcmp(fmt->variant, list->list[i].variant) != 0)
- continue;
- /*
- * versions must both be NULL or match
- */
- if(fmt->version == (char*)NULL)
- {
- if(list->list[i].version == (char*)NULL)
- return xTrue;
- else
- continue;
- }
- if(list->list[i].version == (char*)NULL)
- continue;
- if(strcmp(fmt->version, list->list[i].version) == 0)
- return xTrue;
- }
- }
- return xFalse;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidCardListNew
- *
- * Description:
- *
- *
- * Return value:
- *
- *
- */
-XpOidCardList*
-XpOidCardListNew(const char* value_string, const XpOidCardList* valid_cards)
-{
- if((const char*)NULL != value_string)
- {
- const char* ptr;
-
- return XpOidCardListParse(value_string, valid_cards, &ptr, 0);
- }
- else
- return (XpOidCardList*)NULL;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidCardListDelete
- *
- * Description:
- *
- *
- * Return value:
- *
- *
- */
-void
-XpOidCardListDelete(XpOidCardList* list)
-{
- if((XpOidCardList*)NULL != list)
- {
- XpOidFree(list->list);
- XpOidFree(list);
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidCardListString
- *
- * Description:
- *
- *
- * Return value:
- *
- *
- */
-char*
-XpOidCardListString(const XpOidCardList* list)
-{
- if((XpOidCardList*)NULL != list)
- {
- char buf[48];
- int str_len;
- char* str;
- int i;
- char* ptr;
- /*
- * allocate the output string
- */
- for(i = 0, str_len = 0; i < list->count; i++)
-#if defined(sun) && !defined(SVR4)
- {
- sprintf(buf, "%lu", list->list[i]) + 1;
- str_len += strlen(buf);
- }
-#else
- str_len += sprintf(buf, "%lu", list->list[i]) + 1;
-#endif
- str = XpOidMalloc(str_len+1);
- /*
- * write the list to the string
- */
- for(i = 0, ptr = str; i < list->count; i++)
-#if defined(sun) && !defined(SVR4)
- {
- sprintf(ptr, "%lu ", list->list[i]);
- ptr += strlen(ptr);
- }
-#else
- ptr += sprintf(ptr, "%lu ", list->list[i]);
-#endif
- return str;
- }
- else
- return (char*)NULL;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidCardListHasCard
- *
- * Description:
- *
- * Determines if 'card' is an element of 'list'.
- *
- * Return value:
- *
- * xTrue if the card is found in the list.
- *
- * xFalse if the card is not in the list, or if 'list' is NULL.
- *
- */
-BOOL
-XpOidCardListHasCard(const XpOidCardList* list, unsigned long card)
-{
- int i;
- if(list != (XpOidCardList*)NULL)
- for(i = 0; i < list->count; i++)
- if(list->list[i] == card)
- return xTrue;
- return xFalse;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidCardListParse
- *
- * Description:
- *
- * Assumes the passed value_string and ptr_return are non-NULL.
- *
- * Return value:
- *
- *
- */
-static XpOidCardList*
-XpOidCardListParse(const char* value_string,
- const XpOidCardList* valid_cards,
- const char** ptr_return,
- int i)
-{
- unsigned long card;
- XpOidCardList* list;
- BOOL status;
-
- /*
- * get the next card from the value string, skipping values not
- * found in the passed list of valid cards
- */
- *ptr_return = value_string;
- while((status = XpOidParseUnsignedValue(*ptr_return, ptr_return, &card))
- &&
- (const XpOidCardList*)NULL != valid_cards
- &&
- !XpOidCardListHasCard(valid_cards, card)
- );
-
- if(xFalse == status)
- {
- if('\0' == **ptr_return)
- {
- if(0 == i)
- {
- /*
- * empty value string
- */
- return (XpOidCardList*)NULL;
- }
- else
- {
- /*
- * done parsing; allocate the list and return
- */
- list = (XpOidCardList*)XpOidCalloc(1, sizeof(XpOidCardList));
- list->count = i;
- list->list =
- (unsigned long*)XpOidCalloc(i, sizeof(unsigned long));
- return list;
- }
- }
- else
- {
- /*
- * parsing error
- */
- ErrorF("%s\n", XPMSG_WARN_CARD_LIST);
- return (XpOidCardList*)NULL;
- }
- }
- else
- {
- /*
- * recurse to parse remaining cardinal values
- */
- list = XpOidCardListParse(*ptr_return, valid_cards, ptr_return, i+1);
- if((XpOidCardList*)NULL != list)
- {
- /*
- * add this value to the list
- */
- list->list[i] = card;
- }
- return list;
- }
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: ParseBoolValue
- *
- * Description:
- *
- *
- * Return value:
- *
- *
- */
-static BOOL
-ParseBoolValue(const char* value_string,
- const char** ptr_return,
- BOOL* bool_return)
-{
- const char* ptr;
- int length;
- BOOL status;
- /*
- * skip leading whitespace
- */
- ptr = value_string + SpanWhitespace(value_string);
- /*
- * get the whitespace-delimited token length
- */
- length = SpanToken(ptr);
- /*
- * determine if true or false or bad
- */
- if(StrnCaseCmp(ptr, "TRUE", length) == 0)
- {
- if(bool_return != (BOOL*)NULL)
- *bool_return = xTrue;
- status = xTrue;
- }
- else if(StrnCaseCmp(ptr, "FALSE", length) == 0)
- {
- if(bool_return != (BOOL*)NULL)
- *bool_return = xFalse;
- status = xTrue;
- }
- else
- {
- /*
- * syntax error
- */
- status = xFalse;
- }
- /*
- * update the return pointer and return
- */
- if(ptr_return != (const char**)NULL)
- *ptr_return = status ? ptr+length : ptr;
- return status;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: XpOidParseUnsignedValue
- *
- * Description:
- *
- * Skips leading whitespace and parses out and returns a unsigned number.
- *
- * Return value:
- *
- * xTrue if a unsigned number was successfully parsed. ptr_return is
- * updated to point to location where the unsigned number parsing
- * ended.
- *
- * xFalse if a unsigned number was not found; ptr_return is updated
- * to point to the first non-whitespace char in value_string.
- *
- */
-BOOL
-XpOidParseUnsignedValue(const char* value_string,
- const char** ptr_return,
- unsigned long* unsigned_return)
-{
- long value;
- BOOL status;
- const char* first_nonws_ptr;
- const char* ptr;
- /*
- * skip leading whitespace
- */
- first_nonws_ptr = value_string + SpanWhitespace(value_string);
- value = strtol(first_nonws_ptr, (char**)(&ptr), 0);
- if(ptr == first_nonws_ptr || value < 0)
- status = xFalse;
- else
- status = xTrue;
- /*
- * update return parms
- */
- if(ptr_return != (const char**)NULL)
- *ptr_return = ptr;
- if(unsigned_return != (unsigned long*)NULL)
- *unsigned_return = (unsigned long)value;
- /*
- * return
- */
- return status;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: ParseRealValue
- *
- * Description:
- *
- * Skips leading whitespace and parses out and returns a real number.
- *
- * Return value:
- *
- * xTrue if a real number was successfully parsed. ptr_return is
- * updated to point to location where the real number parsing
- * ended.
- *
- * xFalse if a real number was not found; ptr_return is updated
- * to point to the first non-whitespace char in value_string.
- *
- */
-static BOOL
-ParseRealValue(const char* value_string,
- const char** ptr_return,
- float* real_return)
-{
- float real_value;
- BOOL status;
- const char* first_nonws_ptr;
- const char* ptr;
- /*
- * skip leading whitespace
- */
- first_nonws_ptr = value_string + SpanWhitespace(value_string);
- real_value = (float)strtod(first_nonws_ptr, (char**)(&ptr));
- if(ptr == first_nonws_ptr)
- status = xFalse;
- else
- status = xTrue;
- /*
- * update return parms
- */
- if(ptr_return != (const char**)NULL)
- *ptr_return = ptr;
- if(real_return != (float*)NULL)
- *real_return = real_value;
- /*
- * return
- */
- return status;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: ParseSeqEnd
- *
- * Description:
- *
- * Description:
- *
- * Skips leading whitespace and parses out the sequence end
- * character '}'.
- *
- * Return value:
- *
- * xTrue if the sequence end character was parsed; ptr_return is
- * updated to point to the first char following the sequence end
- * character.
- *
- * xFalse if the sequence end character was not found; ptr_return is
- * updated to point to the first non-whitespace char in value_string.
- *
- */
-static BOOL
-ParseSeqEnd(const char* value_string,
- const char** ptr_return)
-{
- const char* ptr;
- BOOL status;
- /*
- * skip leading whitespace
- */
- ptr = value_string + SpanWhitespace(value_string);
- /*
- * parse out the sequence end character
- */
- if(*ptr == '}')
- {
- status = xTrue;
- ++ptr;
- }
- else
- status = xFalse;
- /*
- * update the return pointer
- */
- if(ptr_return != (const char**)NULL)
- *ptr_return = ptr;
- /*
- * return
- */
- return status;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: ParseSeqStart
- *
- * Description:
- *
- * Skips leading whitespace and parses out the sequence start
- * character '{'.
- *
- * Return value:
- *
- * xTrue if the sequence start character was parsed; ptr_return is
- * updated to point to the first char following the sequence start
- * character.
- *
- * xFalse if the sequence start character was not found; ptr_return is
- * updated to point to the first non-whitespace char in value_string.
- *
- */
-static BOOL
-ParseSeqStart(const char* value_string,
- const char** ptr_return)
-{
- const char* ptr;
- BOOL status;
- /*
- * skip leading whitespace
- */
- ptr = value_string + SpanWhitespace(value_string);
- /*
- * parse out the sequence start character
- */
- if(*ptr == '{')
- {
- status = xTrue;
- ++ptr;
- }
- else
- status = xFalse;
- /*
- * update the return pointer
- */
- if(ptr_return != (const char**)NULL)
- *ptr_return = ptr;
- /*
- * return
- */
- return status;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: ParseUnspecifiedValue
- *
- * Description:
- *
- * Skips leading whitespace and parses out an unspecified optional
- * value (i.e. matching '' or "" - skips all data between the set of
- * quotes).
- *
- * Return value:
- *
- * xTrue if an unspecified value was parsed; ptr_return is updated to
- * point to the first char following the trailing quote.
- *
- * xFalse if an unspecified value was not found; ptr_return is updated
- * to point to the first non-whitespace char in value_string.
- *
- */
-static BOOL
-ParseUnspecifiedValue(const char* value_string,
- const char** ptr_return)
-{
- BOOL status;
- const char* ptr;
- /*
- * skip leading whitespace
- */
- ptr = value_string + SpanWhitespace(value_string);
- /*
- * parse out an unspecified optional value ('' or "")
- */
- if(*ptr == '\'' || *ptr == '"')
- {
- char delim[2];
-
- if(ptr_return != (const char**)NULL)
- {
- delim[0] = *ptr;
- delim[1] = '\0';
- /*
- * skip over the matching delimiter
- */
- ++ptr;
- ptr += strcspn(ptr, delim);
- if(*ptr != '\0')
- ++ptr;
- }
- status = xTrue;
- }
- else
- status = xFalse;
- /*
- * update the return pointer
- */
- if(ptr_return != (const char**)NULL)
- *ptr_return = ptr;
- /*
- * return
- */
- return status;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: SpanToken
- *
- * Description:
- *
- * Returns the length of the initial segment of the passed string
- * that consists entirely of non-whitespace and non-sequence
- * delimiter characters.
- *
- *
- */
-static int
-SpanToken(const char* string)
-{
- const char* ptr;
- for(ptr = string;
- *ptr != '\0' && !isspace(*ptr) && *ptr != '{' && *ptr != '}';
- ++ptr);
- return ptr - string;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Name: SpanWhitespace
- *
- * Description:
- *
- * Returns the length of the initial segment of the passed string
- * that consists entirely of whitespace characters.
- *
- *
- */
-static int
-SpanWhitespace(const char* string)
-{
- const char* ptr;
- for(ptr = string; *ptr != '\0' && isspace(*ptr); ++ptr);
- return ptr - string;
-}
-
-#ifndef HAVE_STRCASECMP
-/*
- * ------------------------------------------------------------------------
- * Name: StrnCaseCmp
- *
- * Description:
- *
- * Implements strncasecmp() for those platforms that need it.
- *
- *
- */
-static int
-StrnCaseCmp(const char *s1, const char *s2, size_t len)
-{
- char c1, c2;
- int result;
-
- while (len--)
- {
- c1 = *s1++;
- c2 = *s2++;
- result = tolower(c1) - tolower(c2);
-
- if (result != 0)
- return result;
- }
-
- return 0;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/Xprint/Oid.h b/nx-X11/programs/Xserver/Xprint/Oid.h
deleted file mode 100644
index ba9dc77f3..000000000
--- a/nx-X11/programs/Xserver/Xprint/Oid.h
+++ /dev/null
@@ -1,294 +0,0 @@
-/* $Xorg: Oid.h,v 1.3 2000/08/17 19:48:06 cpqbld Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _Xp_Oid_h
-#define _Xp_Oid_h
-
-#include <X11/Xproto.h>
-
-/*
- * include the auto-generated XpOid enum definition
- */
-#include "OidDefs.h"
-
-/*
- * messages
- */
-#define XPMSG_WARN_MSS "Syntax error parsing medium-source-sizes"
-#define XPMSG_WARN_ITM "Syntax error parsing input-trays-medium"
-#define XPMSG_WARN_DOC_FMT "Syntax error parsing document format"
-#define XPMSG_WARN_DOCFMT_LIST "Syntax error parsing document format list"
-#define XPMSG_WARN_CARD_LIST "Syntax error parsing cardinal list"
-
-/*
- * macros for memory allocation
- */
-#define XpOidMalloc(size) ((char*)Xalloc((unsigned long)(size)))
-#define XpOidCalloc(count, size) \
- ((char*)Xcalloc((unsigned long)((count)*(size))))
-#define XpOidFree(mem) (Xfree((unsigned long*)(mem)))
-
-/*
- * list of object identifiers
- */
-typedef struct _XpOidList
-{
- XpOid* list;
- int count;
-} XpOidList;
-
-/*
- * linked list of object identifiers
- */
-typedef struct XpOidNodeStruct
-{
- XpOid oid;
- struct XpOidNodeStruct* next;
-} *XpOidNode;
-
-typedef struct _XpOidLinkedList
-{
- XpOidNode head;
- XpOidNode tail;
- XpOidNode current;
- int count;
-} XpOidLinkedList;
-
-/*
- * XpOidMediumSourceSize and related definitions
- */
-typedef struct
-{
- float minimum_x;
- float maximum_x;
- float minimum_y;
- float maximum_y;
-} XpOidArea;
-
-typedef struct
-{
- float lower_bound;
- float upper_bound;
-} XpOidRealRange;
-
-typedef struct
-{
- XpOidRealRange range_across_feed;
- float increment_across_feed;
- XpOidRealRange range_in_feed;
- float increment_in_feed;
- BOOL long_edge_feeds;
- XpOidArea assured_reproduction_area;
-} XpOidMediumContinuousSize;
-
-typedef struct
-{
- XpOid page_size;
- BOOL long_edge_feeds;
- XpOidArea assured_reproduction_area;
-} XpOidMediumDiscreteSize;
-
-typedef struct
-{
- XpOidMediumDiscreteSize* list;
- int count;
-} XpOidMediumDiscreteSizeList;
-
-typedef struct
-{
- XpOid input_tray; /* may be set to xpoid_none or xpoid_unspecified */
- enum { XpOidMediumSS_DISCRETE, XpOidMediumSS_CONTINUOUS } mstag;
- union
- {
- XpOidMediumDiscreteSizeList* discrete;
- XpOidMediumContinuousSize* continuous_size;
- } ms; /* "ms" is short for medium-size */
-
-} XpOidMediumSourceSize;
-
-typedef struct
-{
- XpOidMediumSourceSize* mss;
- int count;
-} XpOidMediumSS;
-
-
-typedef struct
-{
- XpOid input_tray; /* may be set to xpoid_none */
- XpOid medium;
-} XpOidTrayMedium;
-
-typedef struct
-{
- XpOidTrayMedium* list;
- int count;
-} XpOidTrayMediumList;
-
-typedef enum {
- XPOID_NOTIFY_UNSUPPORTED,
- XPOID_NOTIFY_NONE,
- XPOID_NOTIFY_EMAIL
-} XpOidNotify;
-
-typedef struct
-{
- unsigned long *list;
- int count;
-} XpOidCardList;
-
-typedef struct
-{
- char* format;
- char* variant;
- char* version;
-} XpOidDocFmt;
-
-typedef struct
-{
- XpOidDocFmt* list;
- int count;
-} XpOidDocFmtList;
-
-
-/*
- * XpOid public methods
- */
-const char* XpOidString(XpOid);
-int XpOidStringLength(XpOid);
-XpOid XpOidFromString(const char* value);
-BOOL XpOidTrayMediumListHasTray(const XpOidTrayMediumList* list, XpOid tray);
-
-/*
- * XpOidList public methods
- */
-XpOidList* XpOidListNew(const char* value_string,
- const XpOidList* valid_oids);
-#define XpOidListInit(l, a, c) { (l)->list = (a); (l)->count = (c); }
-void XpOidListDelete(XpOidList*);
-#define XpOidListCount(l) ((l) ? (l)->count : 0)
-#define XpOidListGetOid(l, i) ((l) ? (l)->list[(i)] : xpoid_none)
-int XpOidListGetIndex(const XpOidList* list, XpOid oid);
-BOOL XpOidListHasOid(const XpOidList* list, XpOid oid);
-char* XpOidListString(const XpOidList*);
-
-
-/*
- * XpOidLinkedList public methods
- */
-XpOidLinkedList* XpOidLinkedListNew();
-void XpOidLinkedListDelete(XpOidLinkedList*);
-#define XpOidLinkedListCount(l) ((l) ? (l)->count : 0)
-XpOid XpOidLinkedListGetOid(XpOidLinkedList* list, int i);
-void XpOidLinkedListAddOid(XpOidLinkedList* list, XpOid oid);
-int XpOidLinkedListGetIndex(XpOidLinkedList* list, XpOid oid);
-BOOL XpOidLinkedListHasOid(XpOidLinkedList* list,
- XpOid oid);
-XpOid XpOidLinkedListFirstOid(XpOidLinkedList* list);
-XpOid XpOidLinkedListNextOid(XpOidLinkedList* list);
-
-/*
- * XpOidMediumSourceSize public methods
- */
-XpOidMediumSS* XpOidMediumSSNew(const char* value_string,
- const XpOidList* valid_trays,
- const XpOidList* valid_medium_sizes);
-void XpOidMediumSSDelete(XpOidMediumSS*);
-#define XpOidMediumSSCount(me) ((me) ? (me)->count : 0)
-BOOL XpOidMediumSSHasSize(XpOidMediumSS*, XpOid medium_size);
-char* XpOidMediumSSString(const XpOidMediumSS*);
-
-/*
- * XpOidTrayMediumList public methods
- */
-XpOidTrayMediumList* XpOidTrayMediumListNew(const char* value_string,
- const XpOidList* valid_trays,
- const XpOidMediumSS* msss);
-void XpOidTrayMediumListDelete(XpOidTrayMediumList* me);
-#define XpOidTrayMediumListCount(me) ((me) ? (me)->count : 0)
-#define XpOidTrayMediumListTray(me, i) \
- ((me) ? (me)->list[(i)].input_tray : xpoid_none)
-#define XpOidTrayMediumListMedium(me, i) \
- ((me) ? (me)->list[(i)].medium : xpoid_none)
-char* XpOidTrayMediumListString(const XpOidTrayMediumList*);
-
-/*
- * XpOidNotify public methods
- */
-XpOidNotify XpOidNotifyParse(const char* value_string);
-const char* XpOidNotifyString(XpOidNotify notify);
-
-/*
- * XpOidDocFmt public methods
- */
-XpOidDocFmt* XpOidDocFmtNew(const char* value_string);
-void XpOidDocFmtDelete(XpOidDocFmt*);
-char* XpOidDocFmtString(XpOidDocFmt*);
-
-/*
- * XpOidDocFmtList public methods
- */
-XpOidDocFmtList* XpOidDocFmtListNew(const char* value_string,
- const XpOidDocFmtList* valid_fmts);
-void XpOidDocFmtListDelete(XpOidDocFmtList*);
-char* XpOidDocFmtListString(const XpOidDocFmtList*);
-#define XpOidDocFmtListCount(me) ((me) ? (me)->count : 0)
-#define XpOidDocFmtListGetDocFmt(me, i) \
- ((me) ? &(me)->list[(i)] : (XpDocFmt*)NULL)
-BOOL XpOidDocFmtListHasFmt(const XpOidDocFmtList* list,
- const XpOidDocFmt* fmt);
-/*
- * XpOidCardList public methods
- */
-XpOidCardList* XpOidCardListNew(const char* value_string,
- const XpOidCardList* valid_cards);
-#define XpOidCardListInit(l, a, c) { (l)->list = (a); (l)->count = (c); }
-void XpOidCardListDelete(XpOidCardList*);
-char* XpOidCardListString(const XpOidCardList*);
-#define XpOidCardListCount(me) ((me) ? (me)->count : 0)
-#define XpOidCardListGetCard(me, i) ((me) ? (me)->list[(i)] : 0)
-BOOL XpOidCardListHasCard(const XpOidCardList*, unsigned long);
-
-/*
- * misc parsing functions
- */
-BOOL XpOidParseUnsignedValue(const char* value_string,
- const char** ptr_return,
- unsigned long* unsigned_return);
-
-
-#endif /* _Xp_Oid_h - don't add anything after this line */
diff --git a/nx-X11/programs/Xserver/Xprint/OidDefs.h b/nx-X11/programs/Xserver/Xprint/OidDefs.h
deleted file mode 100644
index 55b6568f0..000000000
--- a/nx-X11/programs/Xserver/Xprint/OidDefs.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/* $Xorg: OidDefs.h,v 1.4 2001/03/14 18:45:13 pookie Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* This is an automatically-generated file. Do not edit. */
-
-typedef enum {
- xpoid_none,
- xpoid_unspecified,
- xpoid_att_descriptor,
- xpoid_att_content_orientation,
- xpoid_att_copy_count,
- xpoid_att_default_printer_resolution,
- xpoid_att_default_input_tray,
- xpoid_att_default_medium,
- xpoid_att_document_format,
- xpoid_att_plex,
- xpoid_att_xp_listfonts_modes,
- xpoid_att_job_name,
- xpoid_att_job_owner,
- xpoid_att_notification_profile,
- xpoid_att_xp_setup_state,
- xpoid_att_xp_spooler_command_options,
- xpoid_att_content_orientations_supported,
- xpoid_att_document_formats_supported,
- xpoid_att_dt_pdm_command,
- xpoid_att_input_trays_medium,
- xpoid_att_medium_source_sizes_supported,
- xpoid_att_plexes_supported,
- xpoid_att_printer_model,
- xpoid_att_printer_name,
- xpoid_att_printer_resolutions_supported,
- xpoid_att_xp_embedded_formats_supported,
- xpoid_att_xp_listfonts_modes_supported,
- xpoid_att_xp_page_attributes_supported,
- xpoid_att_xp_raw_formats_supported,
- xpoid_att_xp_setup_proviso,
- xpoid_att_document_attributes_supported,
- xpoid_att_job_attributes_supported,
- xpoid_att_locale,
- xpoid_att_multiple_documents_supported,
- xpoid_att_available_compression,
- xpoid_att_available_compressions_supported,
- xpoid_val_content_orientation_portrait,
- xpoid_val_content_orientation_landscape,
- xpoid_val_content_orientation_reverse_portrait,
- xpoid_val_content_orientation_reverse_landscape,
- xpoid_val_medium_size_iso_a0,
- xpoid_val_medium_size_iso_a1,
- xpoid_val_medium_size_iso_a2,
- xpoid_val_medium_size_iso_a3,
- xpoid_val_medium_size_iso_a4,
- xpoid_val_medium_size_iso_a5,
- xpoid_val_medium_size_iso_a6,
- xpoid_val_medium_size_iso_a7,
- xpoid_val_medium_size_iso_a8,
- xpoid_val_medium_size_iso_a9,
- xpoid_val_medium_size_iso_a10,
- xpoid_val_medium_size_iso_b0,
- xpoid_val_medium_size_iso_b1,
- xpoid_val_medium_size_iso_b2,
- xpoid_val_medium_size_iso_b3,
- xpoid_val_medium_size_iso_b4,
- xpoid_val_medium_size_iso_b5,
- xpoid_val_medium_size_iso_b6,
- xpoid_val_medium_size_iso_b7,
- xpoid_val_medium_size_iso_b8,
- xpoid_val_medium_size_iso_b9,
- xpoid_val_medium_size_iso_b10,
- xpoid_val_medium_size_na_letter,
- xpoid_val_medium_size_na_legal,
- xpoid_val_medium_size_executive,
- xpoid_val_medium_size_folio,
- xpoid_val_medium_size_invoice,
- xpoid_val_medium_size_ledger,
- xpoid_val_medium_size_quarto,
- xpoid_val_medium_size_iso_c3,
- xpoid_val_medium_size_iso_c4,
- xpoid_val_medium_size_iso_c5,
- xpoid_val_medium_size_iso_c6,
- xpoid_val_medium_size_iso_designated_long,
- xpoid_val_medium_size_na_10x13_envelope,
- xpoid_val_medium_size_na_9x12_envelope,
- xpoid_val_medium_size_na_number_10_envelope,
- xpoid_val_medium_size_na_7x9_envelope,
- xpoid_val_medium_size_na_9x11_envelope,
- xpoid_val_medium_size_na_10x14_envelope,
- xpoid_val_medium_size_na_number_9_envelope,
- xpoid_val_medium_size_na_6x9_envelope,
- xpoid_val_medium_size_na_10x15_envelope,
- xpoid_val_medium_size_monarch_envelope,
- xpoid_val_medium_size_a,
- xpoid_val_medium_size_b,
- xpoid_val_medium_size_c,
- xpoid_val_medium_size_d,
- xpoid_val_medium_size_e,
- xpoid_val_medium_size_jis_b0,
- xpoid_val_medium_size_jis_b1,
- xpoid_val_medium_size_jis_b2,
- xpoid_val_medium_size_jis_b3,
- xpoid_val_medium_size_jis_b4,
- xpoid_val_medium_size_jis_b5,
- xpoid_val_medium_size_jis_b6,
- xpoid_val_medium_size_jis_b7,
- xpoid_val_medium_size_jis_b8,
- xpoid_val_medium_size_jis_b9,
- xpoid_val_medium_size_jis_b10,
- xpoid_val_medium_size_hp_2x_postcard,
- xpoid_val_medium_size_hp_european_edp,
- xpoid_val_medium_size_hp_mini,
- xpoid_val_medium_size_hp_postcard,
- xpoid_val_medium_size_hp_tabloid,
- xpoid_val_medium_size_hp_us_edp,
- xpoid_val_medium_size_hp_us_government_legal,
- xpoid_val_medium_size_hp_us_government_letter,
- xpoid_val_plex_simplex,
- xpoid_val_plex_duplex,
- xpoid_val_plex_tumble,
- xpoid_val_input_tray_top,
- xpoid_val_input_tray_middle,
- xpoid_val_input_tray_bottom,
- xpoid_val_input_tray_envelope,
- xpoid_val_input_tray_manual,
- xpoid_val_input_tray_large_capacity,
- xpoid_val_input_tray_main,
- xpoid_val_input_tray_side,
- xpoid_val_event_report_job_completed,
- xpoid_val_delivery_method_electronic_mail,
- xpoid_val_xp_setup_mandatory,
- xpoid_val_xp_setup_optional,
- xpoid_val_xp_setup_ok,
- xpoid_val_xp_setup_incomplete,
- xpoid_val_xp_list_glyph_fonts,
- xpoid_val_xp_list_internal_printer_fonts,
- xpoid_val_available_compressions_0,
- xpoid_val_available_compressions_01,
- xpoid_val_available_compressions_02,
- xpoid_val_available_compressions_03,
- xpoid_val_available_compressions_012,
- xpoid_val_available_compressions_013,
- xpoid_val_available_compressions_023,
- xpoid_val_available_compressions_0123
-} XpOid;
diff --git a/nx-X11/programs/Xserver/Xprint/OidStrs.h b/nx-X11/programs/Xserver/Xprint/OidStrs.h
deleted file mode 100644
index 1792a6e16..000000000
--- a/nx-X11/programs/Xserver/Xprint/OidStrs.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/* $Xorg: OidStrs.h,v 1.4 2001/03/14 18:45:40 pookie Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* This is an automatically-generated file. Do not edit. */
-
-static int XpOidStringMapCount = 127;
-
-static const XpOidStringMapEntry XpOidStringMap[] = {
- { "", 0 },
- { "", 0 },
- { "descriptor", 10 },
- { "content-orientation", 19 },
- { "copy-count", 10 },
- { "default-printer-resolution", 26 },
- { "default-input-tray", 18 },
- { "default-medium", 14 },
- { "document-format", 15 },
- { "plex", 4 },
- { "xp-listfonts-modes", 18 },
- { "job-name", 8 },
- { "job-owner", 9 },
- { "notification-profile", 20 },
- { "xp-setup-state", 14 },
- { "xp-spooler-command-options", 26 },
- { "content-orientations-supported", 30 },
- { "document-formats-supported", 26 },
- { "dt-pdm-command", 14 },
- { "input-trays-medium", 18 },
- { "medium-source-sizes-supported", 29 },
- { "plexes-supported", 16 },
- { "printer-model", 13 },
- { "printer-name", 12 },
- { "printer-resolutions-supported", 29 },
- { "xp-embedded-formats-supported", 29 },
- { "xp-listfonts-modes-supported", 28 },
- { "xp-page-attributes-supported", 28 },
- { "xp-raw-formats-supported", 24 },
- { "xp-setup-proviso", 16 },
- { "document-attributes-supported", 29 },
- { "job-attributes-supported", 24 },
- { "locale", 6 },
- { "multiple-documents-supported", 28 },
- { "available-compression", 21 },
- { "available-compressions-supported", 32 },
- { "portrait", 8 },
- { "landscape", 9 },
- { "reverse-portrait", 16 },
- { "reverse-landscape", 17 },
- { "iso-a0", 6 },
- { "iso-a1", 6 },
- { "iso-a2", 6 },
- { "iso-a3", 6 },
- { "iso-a4", 6 },
- { "iso-a5", 6 },
- { "iso-a6", 6 },
- { "iso-a7", 6 },
- { "iso-a8", 6 },
- { "iso-a9", 6 },
- { "iso-a10", 7 },
- { "iso-b0", 6 },
- { "iso-b1", 6 },
- { "iso-b2", 6 },
- { "iso-b3", 6 },
- { "iso-b4", 6 },
- { "iso-b5", 6 },
- { "iso-b6", 6 },
- { "iso-b7", 6 },
- { "iso-b8", 6 },
- { "iso-b9", 6 },
- { "iso-b10", 7 },
- { "na-letter", 9 },
- { "na-legal", 8 },
- { "executive", 9 },
- { "folio", 5 },
- { "invoice", 7 },
- { "ledger", 6 },
- { "quarto", 6 },
- { "iso-c3", 6 },
- { "iso-c4", 6 },
- { "iso-c5", 6 },
- { "iso-c6", 6 },
- { "iso-designated-long", 19 },
- { "na-10x13-envelope", 17 },
- { "na-9x12-envelope", 16 },
- { "na-number-10-envelope", 21 },
- { "na-7x9-envelope", 15 },
- { "na-9x11-envelope", 16 },
- { "na-10x14-envelope", 17 },
- { "na-number-9-envelope", 20 },
- { "na-6x9-envelope", 15 },
- { "na-10x15-envelope", 17 },
- { "monarch-envelope", 16 },
- { "a", 1 },
- { "b", 1 },
- { "c", 1 },
- { "d", 1 },
- { "e", 1 },
- { "jis-b0", 6 },
- { "jis-b1", 6 },
- { "jis-b2", 6 },
- { "jis-b3", 6 },
- { "jis-b4", 6 },
- { "jis-b5", 6 },
- { "jis-b6", 6 },
- { "jis-b7", 6 },
- { "jis-b8", 6 },
- { "jis-b9", 6 },
- { "jis-b10", 7 },
- { "hp-2x-postcard", 14 },
- { "hp-european-edp", 15 },
- { "hp-mini", 7 },
- { "hp-postcard", 11 },
- { "hp-tabloid", 10 },
- { "hp-us-edp", 9 },
- { "hp-us-government-legal", 22 },
- { "hp-us-government-letter", 23 },
- { "simplex", 7 },
- { "duplex", 6 },
- { "tumble", 6 },
- { "top", 3 },
- { "middle", 6 },
- { "bottom", 6 },
- { "envelope", 8 },
- { "manual", 6 },
- { "large-capacity", 14 },
- { "main", 4 },
- { "side", 4 },
- { "event-report-job-completed", 26 },
- { "electronic-mail", 15 },
- { "xp-setup-mandatory", 18 },
- { "xp-setup-optional", 17 },
- { "xp-setup-ok", 11 },
- { "xp-setup-incomplete", 19 },
- { "xp-list-glyph-fonts", 19 },
- { "xp-list-internal-printer-fonts", 30 },
- { "0", 1 },
- { "01", 2 },
- { "02", 2 },
- { "03", 2 },
- { "012", 3 },
- { "013", 3 },
- { "023", 3 },
- { "0123", 4 }
-};
diff --git a/nx-X11/programs/Xserver/Xprint/Util.c b/nx-X11/programs/Xserver/Xprint/Util.c
deleted file mode 100644
index 069595b9a..000000000
--- a/nx-X11/programs/Xserver/Xprint/Util.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* $Xorg: Util.c,v 1.3 2000/08/17 19:48:06 cpqbld Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/Util.c,v 1.12 2001/08/01 00:44:45 tsi Exp $ */
-
-/* To get the tempnam() prototype in <stdio.h> */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if defined(linux) && defined(__STRICT_ANSI__)
-#undef __STRICT_ANSI__
-#endif
-
-#include <X11/Xos.h> /* for unistd.h and string.h */
-#include <stdio.h>
-#include <sys/wait.h>
-#include <sys/stat.h>
-#include "misc.h"
-#include "dixstruct.h"
-
-#include <X11/extensions/Print.h>
-
-#include "attributes.h"
-
-#define IN_FILE_STRING "%(InFile)%"
-#define OUT_FILE_STRING "%(OutFile)%"
-
-/*
- * ReplaceAnyString returns a string combining the input strings.
- * It replaces all occurances of 'target' with the supplied
- * 'replacement'.
- * The original input string will generally be freed,
- * and the caller is responsible for freeing whatever string is returned.
- */
-char *
-ReplaceAnyString(
- char *string,
- char *target,
- char *replacement)
-{
- char *pKeyString;
-
- if(replacement != (char *)NULL)
- {
- while((pKeyString = strstr(string, target)) != (char *)NULL)
- {
- char *newString;
-
- newString = (char *)xalloc(strlen(string) + strlen(replacement) -
- strlen(target) + 1);
- strncpy(newString, string, pKeyString - string);
- newString[pKeyString - string] = '\0';
- strcat(newString, replacement);
- strcat(newString, pKeyString + strlen(target));
- xfree(string);
- string = newString;
- }
- }
-
- return string;
-}
-
-/*
- * ReplaceFileString returns a string combining the input strings.
- * It replaces all occurances of IN_FILE_STRING with the supplied
- * inFileName, and all occurances of OUT_FILE_STRING with the
- * supplied outFileName. The original input string will generally be freed,
- * and the caller is responsible for freeing whatever string is returned.
- */
-char *
-ReplaceFileString(
- char *string,
- char *inFileName,
- char *outFileName)
-{
- char *pKeyString,
- *pInFileString = IN_FILE_STRING,
- *pOutFileString = OUT_FILE_STRING;
-
- if(inFileName != (char *)NULL)
- {
- while((pKeyString = strstr(string, pInFileString)) !=
- (char *)NULL)
- {
- char *newString;
-
- newString = (char *)xalloc(strlen(string) +
- strlen(inFileName) + 1);
- strncpy(newString, string, pKeyString - string);
- newString[pKeyString - string] = '\0';
- strcat(newString, inFileName);
- strcat(newString, pKeyString + strlen(pInFileString));
- xfree(string);
- string = newString;
- }
- }
-
- if(outFileName != (char *)NULL)
- {
- while((pKeyString = strstr(string, pOutFileString)) !=
- (char *)NULL)
- {
- char *newString;
-
- newString = (char *)xalloc(strlen(string) +
- strlen(outFileName) + 1);
- strncpy(newString, string, pKeyString - string);
- newString[pKeyString - string] = '\0';
- strcat(newString, outFileName);
- strcat(newString, pKeyString + strlen(pOutFileString));
- xfree(string);
- string = newString;
- }
- }
- return string;
-}
-
-
-/*
- * TransferBytes reads numBytes of data from pSrcFile and writes them
- * to pDstFile. It returns the number of bytes actually transfered,
- * which will be numBytes if it's successful. Neither pSrcFile nor
- * pDstFile are rewound or their pointers otherwise modified prior to
- * beginning the transfer.
- */
-int
-TransferBytes(
- FILE *pSrcFile,
- FILE *pDstFile,
- int numBytes)
-{
- char buf[10240];
-#define BUF_SIZE (sizeof(buf)*sizeof(char))
- int bytesWritten = 0;
- unsigned bytesToXfer;
-
- for(bytesToXfer = min(BUF_SIZE, (unsigned)numBytes);
- bytesToXfer > 0;
- bytesToXfer = min(BUF_SIZE, (unsigned)(numBytes - bytesWritten)))
- {
- if(fread((void *)buf, (size_t) 1, bytesToXfer, pSrcFile) < bytesToXfer)
- return bytesWritten;
- if(fwrite((void *)buf, (size_t) 1, bytesToXfer, pDstFile) < bytesToXfer)
- return bytesWritten;
- bytesWritten += bytesToXfer;
- }
- return bytesWritten;
-}
-
-/*
- * CopyContentsAndDelete - does the work of copying and deleting the
- * pre, no, and post raster files as well as the raster file itself.
- */
-Bool
-CopyContentsAndDelete(
- FILE **ppSrcFile,
- char **pSrcFileName,
- FILE *pDstFile)
-{
- struct stat statBuf;
-
- if(stat(*pSrcFileName, &statBuf) < 0)
- return FALSE;
- rewind(*ppSrcFile);
- if(TransferBytes(*ppSrcFile, pDstFile,
- (int)statBuf.st_size) != (int)statBuf.st_size)
- return FALSE;
- fclose(*ppSrcFile);
- *ppSrcFile = (FILE *)NULL;
- unlink(*pSrcFileName);
- xfree(*pSrcFileName);
- *pSrcFileName = (char *)NULL;
-
- return TRUE;
-}
-
-
-#define QUADPAD(x) ((((x)+3)>>2)<<2)
-
-int
-XpSendDocumentData(
- ClientPtr client,
- FILE *fp,
- int fileLen,
- int maxBufSize)
-{
- xPrintGetDocumentDataReply *pRep;
- int bytesWritten;
- unsigned bytesToWrite;
- int result = Success;
-
- if(client->clientGone)
- return Success;
-
- pRep = (xPrintGetDocumentDataReply *)xalloc(sz_xPrintGetDocumentDataReply+
- QUADPAD(maxBufSize));
-
- for(bytesToWrite = min(maxBufSize, fileLen),
- bytesWritten = 0;
- bytesToWrite > 0;
- bytesToWrite = min(maxBufSize, fileLen - bytesWritten))
- {
- pRep->type = X_Reply;
- pRep->sequenceNumber = client->sequence;
- pRep->length = (QUADPAD(bytesToWrite)) >> 2;
- pRep->dataLen = bytesToWrite;
-
- if(fread((void *)(pRep + 1), 1, bytesToWrite, fp) < bytesToWrite)
- {
- result = BadAlloc; /* XXX poor error choice? */
- pRep->statusCode = 2; /* XXX Is this the right value??? */
- }
- else
- pRep->statusCode = 0; /* XXX Ignored??? */
-
- pRep->finishedFlag = FALSE;
-
- if (client->swapped) {
- int n;
- long l;
-
- swaps(&pRep->sequenceNumber, n);
- swapl(&pRep->length, l);
- swapl(&pRep->statusCode, l); /* XXX Why are these longs??? */
- swapl(&pRep->finishedFlag, l); /* XXX Why are these longs??? */
- swapl(&pRep->dataLen, l);
- }
-
- (void)WriteToClient(client,
- sz_xPrintGetDocumentDataReply + bytesToWrite,
- (char *)pRep);
- bytesWritten += bytesToWrite;
- }
-
- xfree(pRep);
- return result;
-}
-
-/*
- * XpFinishDocData - send a DocumentData reply with the "finishedFlag"
- * field set to TRUE. This routine should be called from the EndJob
- * function of a driver after the driver has sent all required
- * document data (presumably via XpSendDocumentData).
- */
-int
-XpFinishDocData(
- ClientPtr client)
-{
- xPrintGetDocumentDataReply rep;
-
- if(client->clientGone)
- return Success;
-
- rep.type = X_Reply;
- rep.sequenceNumber = client->sequence;
- rep.length = 0;
- rep.dataLen = 0;
- rep.finishedFlag = TRUE;
- rep.statusCode = 0;
-
- if (client->swapped) {
- int n;
- long l;
-
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, l);
- swapl(&rep.statusCode, l); /* XXX Why are these longs??? */
- swapl(&rep.finishedFlag, l); /* XXX Why are these longs??? */
- swapl(&rep.dataLen, l);
- }
-
- (void)WriteToClient(client, sz_xPrintGetDocumentDataReply, (char *)&rep);
- return Success;
-}
-
-#ifndef HAS_MKSTEMP
-static
-char *XpDirName(char *fname)
-{
- char *fn, *ptr;
-
- fn = (char *)xalloc(strlen(fname) + 1);
- if (fn) {
- strcpy(fn, fname);
- ptr = strrchr(fn, '/');
- if (!ptr) {
- ptr = fn;
- *ptr++ = '.';
- } else if (ptr == fn)
- ptr++;
- *ptr = '\0';
- }
- return fn;
-}
-#endif
-
-Bool
-XpOpenTmpFile(
- char *mode,
- char **fname,
- FILE **stream)
-{
-#ifndef HAS_MKSTEMP
- char *fn = NULL;
-
- /* note that there is a small race condition here... */
- if (!(*fname = tempnam(NULL, NULL)) ||
- !(fn = XpDirName(*fname)) ||
- access(fn, W_OK) ||
- !(*stream = fopen(*fname, mode)))
-
- {
- xfree(fn);
- xfree(*fname);
- *fname = NULL;
- *stream = NULL;
- return FALSE;
- }
- xfree(fn);
-#else
- int fd;
-
- *stream = NULL;
- *fname = (char *)xalloc(14);
- if (*fname == NULL)
- return FALSE;
- strcpy(*fname, "/tmp/xpXXXXXX");
- fd = mkstemp(*fname);
- if (fd < 0) {
- xfree(*fname);
- *fname = NULL;
- return FALSE;
- }
- *stream = fdopen(fd, mode);
- if (stream == NULL) {
- xfree(*fname);
- *fname = NULL;
- return FALSE;
- }
-#endif
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ValTree.c b/nx-X11/programs/Xserver/Xprint/ValTree.c
deleted file mode 100644
index 6fa631617..000000000
--- a/nx-X11/programs/Xserver/Xprint/ValTree.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/* $Xorg: ValTree.c,v 1.3 2000/08/17 19:48:06 cpqbld Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86$ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "validate.h"
-#include "windowstr.h"
-#include "mi.h"
-#include "regionstr.h"
-#include "mivalidate.h"
-
-/*
- * XpValidateTree - a validateTree routine which ignores overlapping
- * top-level windows when computing the clip lists for such windows.
- * This can be used by any driver which maintains a separate memory
- * store for each top-level window (with its respective children).
- * If the pParent is not the root window, then miValidateTree
- * is used unmodified.
- *
- * The strategy if pParent is the root is to save off the
- * current values of pParent->firstChild and pParent->lastChild,
- * replacing both with the single child of interest. We save off
- * pChild->prevSib and pChild->nextSib, and replace them with NullWindow.
- * We save off pParent->clipList, and replace it with
- * pParent->winSize - pChild->winSize. We then call miValidateTree
- * to do the needed ComputeClips on the pChild's heirarchy.
- * pParent's clipList is then recomputed based on the sizes
- * of its children, and the saved pointers are restored.
- * The trees associated with the siblings of pChild must be descended
- * and cleaned of any marks (i.e. the valdata pointer freed, and set to NULL),
- * and pParent' AfterValidate structure's exposed field must be updated.
- */
-/*ARGSUSED*/
-int
-XpValidateTree (pParent, pChild, kind)
- WindowPtr pParent; /* Parent to validate */
- WindowPtr pChild; /* First child of pParent that was
- * affected */
- VTKind kind; /* What kind of configuration caused call */
-{
- RegionRec origPrntClip; /* orig clipList for parent */
- RegionRec childClip; /* The new borderClip for the current
- * child */
- RegionRec tmpPrntClip; /* parent clipList - child borderClip */
- RegionRec exposed; /* For intermediate calculations */
- register ScreenPtr pScreen;
- register WindowPtr pWin;
- Bool overlap;
- int viewvals;
- Bool forward;
-
- WindowPtr origFirstChild, origLastChild, origPrevSib, origNextSib;
-
- /*
- * If we're validating something other than a top-level window,
- * then just invoke miValidateTree.
- */
- if(pParent->parent != NullWindow)
- return miValidateTree(pParent, pChild, kind);
-
- /*
- * If it's a stack change of top levels then it's a no-op for
- * this scheme, so we just clean up any marks on windows and return.
- */
- if(kind == VTStack)
- {
- CleanMarks(pParent);
- return 1;
- }
-
- pScreen = pParent->drawable.pScreen;
- if (pChild == NullWindow)
- pChild = pParent->firstChild;
-
- /* Save off the existing window heirarchy */
- origFirstChild = pParent->firstChild;
- origLastChild = pParent->lastChild;
- origPrevSib = pChild->prevSib;
- origNextSib = pChild->nextSib;
- pParent->firstChild = pChild;
- pParent->lastChild = pChild;
- pChild->prevSib = NullWindow;
- pChild->nextSib = NullWindow;
-
- /*
- * Set pParent's clipList to be its winSize minus the pChild's
- * borderSize.
- */
- origPrntClip = pParent->clipList;
- REGION_NULL(pScreen, &tmpPrntClip);
- REGION_SUBRACT(pScreen, &tmpPrntClip, &pParent->winSize,
- &pChild->borderSize);
- pParent->clipList = tmpPrntClip;
-
- /*
- * Call miValidateTree on the pruned tree.
- */
- (void) miValidateTree(pParent, pChild, kind);
-
- /* Restore the saved heirarchy */
- pChild->prevSib = origPrevSib;
- pChild->nextSib = origNextSib;
- pParent->firstChild = origFirstChild;
- pParent->lastChild = origLastChild;
-
- /*
- * Compute pParent's clipList by taking its winSize and subracting
- * the borderSize of each of its children.
- */
- for(pWin = pParent->firstChild,
- REGION_COPY(pScreen, &pParent->clipList, &pParent->winSize);
- pWin != NullWindow;
- pWin = pWin->nextSib)
- {
- REGION_SUBTRACT(pScreen, &pParent->clipList, &pParent->clipList,
- &pWin->borderSize);
- }
-
- /*
- * Compute pParent's AfterValidate structure by subracting the original
- * clipList from the newly computed clipList.
- */
- REGION_NULL(pScreen, &pParent->valdata->after.exposed);
- REGION_SUBTRACT(pScreen, &pParent->valdata->after.exposed,
- &pParent->clipList, &origPrntClip);
-
- /*
- * Remove the marks from all but pParent and pChild's heirarchy.
- * i.e. from all of pChild's siblings and their children.
- */
- for(pWin = pParent->firstChild; pWin != NullWindow; pWin = pWin->nextSib)
- {
- WindowPtr pCurChild = pWin;
-
- if(pCurChild == pChild)
- continue;
-
- while (1)
- {
- if(pCurChild->valdata)
- {
- xfree(pCurChild->valdata);
- pCurChild->valdata = (ValidatePtr)NULL;
- }
-
- if (pCurChild->firstChild)
- {
- pCurChild = pCurChild->firstChild;
- continue;
- }
- while (!pCurChild->nextSib && (pCurChild != pWin))
- pCurChild = pCurChild->parent;
- if (pCurChild == pWin)
- break;
- pCurChild = pCurChild->nextSib;
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/Xprint/Xprt.html b/nx-X11/programs/Xserver/Xprint/Xprt.html
deleted file mode 100644
index f84a3c134..000000000
--- a/nx-X11/programs/Xserver/Xprint/Xprt.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Xprt</title><meta name="generator" content="DocBook XSL Stylesheets V1.62.4"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry" lang="en"><a name="Xprt"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>Xprt &#8212; Print server for X Version 11</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><tt class="command">Xprt</tt> [<tt class="option">-ac</tt>] [<tt class="option">-audit <i class="replaceable"><tt>level</tt></i></tt>] [<tt class="option">-pn</tt>] [<tt class="option">-fp <i class="replaceable"><tt>fontpath</tt></i></tt>] [<tt class="option">-XpFile <i class="replaceable"><tt>file</tt></i></tt>] [<tt class="option">-XpSpoolerType <i class="replaceable"><tt>spoolername</tt></i></tt>] [<tt class="option">:<i class="replaceable"><tt>display</tt></i></tt>]</p></div></div><div class="refsect1" lang="en"><a name="id2804962"></a><h2>DESCRIPTION</h2><p><span><b class="command">Xprt</b></span> is the Xprint print server
- for version 11 of the X Window system for non display devices
- such as printers and fax machines.</p><p>Xprint is an advanced printing system which enables X11
- applications to use devices like printers, FAX or create
- documents in formats like PostScript, PCL or PDF. It may be used by
- clients such as <span class="application">mozilla</span>.
- </p><p>Xprint is a very flexible, extensible, scaleable, client/server
- print system based on ISO 10175 (and some other specs) and the X11
- rendering protocol.
- Using Xprint an application can search, query and use devices like
- printers, FAX machines or create documents in formats like PDF.
- In particular, an application can seek a printer, query supported
- attributes (like paper size, trays, fonts etc.), configure the printer
- device to match it's needs and print on it like on any other X device
- reusing parts of the code which is used for the video card Xserver.
- </p></div><div xmlns:ns1="" class="refsect1" lang="en"><a name="id2805117"></a><h2>USAGE</h2><p>
- Although Xprt may be invoked from the command line, it is
- preferable to run it as a daemon via the init script
- <tt class="filename">/etc/init.d/xprint</tt> (where this script exists).
- </p><p>Client programs such as mozilla will require environment
- variable <tt class="envar">${XPSERVERLIST}</tt> to be set, identifying the
- &quot;display&quot; on which Xprt is running. This variable may be set
- for all users via <tt class="filename">/etc/profile</tt> (or similar), using
- <b class="userinput"><tt>/etc/init.d/xprint get_xpserverlist</tt></b>:
- </p><div class="informalexample"><pre class="programlisting">export XPSERVERLIST=`/etc/init.d/xprint get_xpserverlist`</pre></div></div><div class="refsect1" lang="en"><a name="id2805150"></a><h2>OPTIONS</h2><p>Many of Xprt's command line options are shared in common
- with the usual X servers (see <span class="citerefentry"><span class="refentrytitle">Xserver</span>(1x)</span>).
- Commonly used options include:</p><div class="variablelist"><dl><dt><span class="term"><tt class="option">:<i class="replaceable"><tt>display</tt></i></tt></span></dt><dd><p> The X server runs on the given display. If multiple X
- servers are to run simultaneously on a host, each must
- have a unique display number. Note that the standard X
- server (for video displays) typically runs on display
- :0. If <tt class="filename">/etc/init.d/xprint</tt> is used
- to invoke Xprt, it may be configured to automatically assign an available
- display number.</p></dd><dt><span class="term"><tt class="option">-ac</tt></span></dt><dd><p>disables host-based access control mechanisms. Enables access
- by any host, and permits any host to modify the access control
- list. Use with extreme caution. This option exists primarily
- for running test suites remotely.</p></dd><dt><span class="term"><tt class="option">-audit <i class="replaceable"><tt>level</tt></i></tt></span></dt><dd><p>sets the audit trail level. The default level is 1, meaning
- only connection rejections are reported. Level 2 additionally
- reports all successful connections and disconnects. Level 4
- enables messages from the SECURITY extension, if present,
- including generation and revocation of authorizations and
- violations of the security policy. Level 0 turns off the audit
- trail. Audit lines are sent as standard error output.</p></dd><dt><span class="term"><tt class="option">-fp <i class="replaceable"><tt>fontpath</tt></i></tt></span></dt><dd><p>sets the search path for fonts. This path is a comma
- separated list of directories which Xprt searches for
- font databases.</p></dd><dt><span class="term"><tt class="option">-pn</tt></span></dt><dd><p>permits the server to continue running if it fails to
- establish all of its well-known sockets (connection
- points for clients), but establishes at least
- one.</p></dd><dt><span class="term"><tt class="option">-XpFile <i class="replaceable"><tt>file</tt></i></tt></span></dt><dd><p>Sets an altername Xprinters file (see section FILES).</p></dd><dt><span class="term"><tt class="option">-XpSpoolerType <i class="replaceable"><tt>spoolername</tt></i></tt></span></dt><dd xmlns:ns2=""><p>
- Defines the spooler system to be used for print job spooling.
- Supported values in xprint.mozdev.org release 009 are:
- </p><table class="simplelist" border="0" summary="Simple list"><tr><td>aix</td></tr><tr><td>aix4</td></tr><tr><td>bsd</td></tr><tr><td>osf</td></tr><tr><td>solaris</td></tr><tr><td>sysv</td></tr><tr><td>uxp</td></tr><tr><td>cups</td></tr><tr><td>lprng</td></tr><tr><td>other</td></tr><tr><td>none</td></tr></table><p>
- (multiple values can be specified, seperated by ':', the first active spooler will be chosen).
- The default value is platform-specific and can be obtained via
- </p><pre class="programlisting">Xprt -h</pre><p>.
- </p></dd></dl></div></div><div xmlns:ns3="" class="refsect1" lang="en"><a name="id2805336"></a><h2>ENVIRONMENT</h2><p>
- The following environment variables are recognized by the X print server
- (environment variables recognized by Xprint clients are described in
- <span class="citerefentry"><span class="refentrytitle">Xprint</span>(7)</span>):
-
- </p><div class="variablelist"><dl><dt><span class="term"><tt class="envar">${XPCONFIGDIR}</tt></span></dt><dd><p> This environment variable points to the root
- of the Xprint server configuration directory hierarchy.
- If the variable is not defined, the default
- path is be assumed. The default path may be
- <tt class="filename">/usr/X11R6/lib/X11/xserver/</tt>,
- <tt class="filename">/usr/lib/X11/xserver/</tt>,
- <tt class="filename">/usr/share/Xprint/xserver/</tt> or
- <tt class="filename">/usr/openwin/server/etc/XpConfig</tt>, depending on the
- system, and may be configured in <tt class="filename">/etc/init.d/xprint</tt>.</p></dd><dt><span class="term"><tt class="envar">${LANG}</tt></span></dt><dd><p>
- This environment variable selects the locale settings used by the Xprint server.
- Xprt allows language-specific settings (stored in <tt class="filename">${XPCONFIGDIR}/${LANG}/print/</tt>)
- which will override the default settings (stored in <tt class="filename">${XPCONFIGDIR}/C/print/</tt>).
- If <tt class="envar">${LANG}</tt> is not set &quot;C&quot; is assumed.
- </p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2805421"></a><h2>FILES</h2><div class="variablelist"><dl><dt><span class="term"><tt class="filename">${XPCONFIGDIR}/${LANG}/print/Xprinters</tt>, </span><span class="term"><tt class="filename">${XPCONFIGDIR}/C/print/Xprinters</tt></span></dt><dd><p>
- `Xprinters' is the top most configuration file. It tells
- Xprt which specific printer names (e.g. mylaser) should
- be supported, and whether <span class="citerefentry"><span class="refentrytitle">lpstat</span>(1)</span> or other commands
- should be used to automatically supplement the list of
- printers.
- </p></dd><dt><span class="term"><tt class="filename">${XPCONFIGDIR}/${LANG}/print/attributes/printer</tt>, </span><span class="term"><tt class="filename">${XPCONFIGDIR}/C/print/attributes/printer</tt></span></dt><dd><p>
- The `printer' file maps printer names to model
- configurations (see `model-config' below). For example,
- &quot;mylaser&quot; could be mapped to a &quot;HPDJ1600C&quot;, and all other
- arbitrary printers could be mapped to a default, such as
- &quot;HPLJ4SI&quot;. When depending on <span class="citerefentry"><span class="refentrytitle">lpstat</span>(1)</span> in the Xprinters
- file, setting up defaults in `printer' becomes all the
- more important.
- </p></dd><dt><span class="term"><tt class="filename">${XPCONFIGDIR}/${LANG}/print/attributes/document</tt>, </span><span class="term"><tt class="filename">${XPCONFIGDIR}/C/print/attributes/document</tt></span></dt><dd><p>
- The `document' file specifies the initial document values
- for any print jobs. For example, which paper tray to
- use, what default resolution, etc.
- </p></dd><dt><span class="term"><tt class="filename">${XPCONFIGDIR}/${LANG}/print/attributes/job</tt>, </span><span class="term"><tt class="filename">${XPCONFIGDIR}/C/print/attributes/job</tt></span></dt><dd><p>
- The `job' file specifies the initial job values for any
- print jobs. For example, &quot;notification-profile&quot; can be
- set so that when a print job is successfully sent to a
- printer, e-mail is sent to the user.
- </p></dd><dt><span class="term"><tt class="filename">${XPCONFIGDIR}/C/print/models/PSdefault/model-config</tt>, </span><span class="term"><tt class="filename">${XPCONFIGDIR}/C/print/models/PSdefault/fonts/fonts.dir</tt>, </span><span class="term"><tt class="filename">${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00051.pmf</tt>, </span><span class="term"><tt class="filename">${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00093.pmf</tt></span></dt><dd><p>
- The `model-config' file has attributes that describe the
- printer model's capabilities and default settings.
- Printer model fonts may also be present. The model-config
- file also identifies the print ddx driver to be used.
-
- For each printer model supported, a complete hierarchy of
- files should exist. In most cases, these files do not
- need to be modified.
- </p></dd><dt><span class="term"><tt class="filename">${XPCONFIGDIR}/C/print/ddx-config/raster/pdf</tt>, </span><span class="term"><tt class="filename">${XPCONFIGDIR}/C/print/ddx-config/raster/pcl</tt>, </span><span class="term"><tt class="filename">${XPCONFIGDIR}/C/print/ddx-config/raster/postscript</tt></span></dt><dd><p>
- The print ddx drivers can have highly specific
- configuration files to control their behavior. In most
- cases, these files do not need to be modified.
- </p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2805584"></a><h2>SEE ALSO</h2><p><span class="simplelist"><span class="citerefentry"><span class="refentrytitle">Xprint</span>(7)</span>, <span class="citerefentry"><span class="refentrytitle">X11</span>(7)</span>, <span class="citerefentry"><span class="refentrytitle">xplsprinters</span>(1x)</span>, <span class="citerefentry"><span class="refentrytitle">xprehashprinterlist</span>(1x)</span>, <span class="citerefentry"><span class="refentrytitle">xphelloworld</span>(1x)</span>, <span class="citerefentry"><span class="refentrytitle">xpxmhelloworld</span>(1x)</span>, <span class="citerefentry"><span class="refentrytitle">xpawhelloworld</span>(1x)</span>, <span class="citerefentry"><span class="refentrytitle">xpxthelloworld</span>(1x)</span>, <span class="citerefentry"><span class="refentrytitle">xpsimplehelloworld</span>(1x)</span>, <span class="citerefentry"><span class="refentrytitle">Xserver</span>(1x)</span>, <span class="citerefentry"><span class="refentrytitle">libXp</span>(3x)</span>, <span class="citerefentry"><span class="refentrytitle">libXprintUtils</span>(3x)</span>, <span class="citerefentry"><span class="refentrytitle">libXprintAppUtils</span>(3x)</span>, <span class="citerefentry"><span class="refentrytitle">XmPrintShell</span>(3x)</span>, <span class="citerefentry"><span class="refentrytitle">XawPrintShell</span>(3x)</span>, Xprint FAQ (<a href="http://xprint.mozdev.org/docs/Xprint_FAQ.html" target="_top">http://xprint.mozdev.org/docs/Xprint_FAQ.html</a>), Xprint main site (<a href="http://xprint.mozdev.org/" target="_top">http://xprint.mozdev.org/</a>)</span></p></div><div class="refsect1" lang="en"><a name="id2805757"></a><h2>AUTHORS</h2><p>
- This manual page was written by
- Drew Parsons <tt class="email">&lt;<a href="mailto:dparsons@debian.org">dparsons@debian.org</a>&gt;</tt> and
- Roland Mainz <tt class="email">&lt;<a href="mailto:roland.mainz@nrubsig.org">roland.mainz@nrubsig.org</a>&gt;</tt>,
- with some help from the man page at
- <a href="http://www.sins.com.au/unix/manpages/Xprt.html" target="_top">http://www.sins.com.au/unix/manpages/Xprt.html</a> and the XFree86
- man page for <span class="citerefentry"><span class="refentrytitle">Xserver</span>(1)</span>.
- </p></div></div></body></html>
diff --git a/nx-X11/programs/Xserver/Xprint/Xprt.man b/nx-X11/programs/Xserver/Xprint/Xprt.man
deleted file mode 100644
index 7599a1344..000000000
--- a/nx-X11/programs/Xserver/Xprint/Xprt.man
+++ /dev/null
@@ -1,196 +0,0 @@
-.\" -*- coding: us-ascii -*-
-.TH Xprt __appmansuffix__ "25 November 2004"
-.SH NAME
-Xprt \- Print server for X Version 11
-.SH SYNOPSIS
-.ad l
-\fBXprt\fR \kx
-.if (\nxu > (\n(.lu / 2)) .nr x (\n(.lu / 5)
-'in \n(.iu+\nxu
-[\fB\-ac\fR] [\fB\-audit \fBlevel\fR\fR] [\fB\-pn\fR] [\fB\-fp \fBfontpath\fR\fR] [\fB\-XpFile \fBfile\fR\fR] [\fB\-XpSpoolerType \fBspoolername\fR\fR] [\fB:\fBdisplay\fR\fR]
-'in \n(.iu-\nxu
-.ad b
-.SH DESCRIPTION
-Xprt is the Xprint print server
-for version 11 of the X Window system for non display devices
-such as printers and fax machines.
-.PP
-Xprint is an advanced printing system which enables X11
-applications to use devices like printers, FAX or create
-documents in formats like PostScript, PCL or PDF. It may be used by
-clients such as mozilla.
-.PP
-Xprint is a very flexible, extensible, scaleable, client/server
-print system based on ISO 10175 (and some other specs) and the X11
-rendering protocol.
-Using Xprint an application can search, query and use devices like
-printers, FAX machines or create documents in formats like PDF.
-In particular, an application can seek a printer, query supported
-attributes (like paper size, trays, fonts etc.), configure the printer
-device to match it's needs and print on it like on any other X device
-reusing parts of the code which is used for the video card Xserver.
-.SH USAGE
-Although Xprt may be invoked from the command line, it is
-preferable to run it as a daemon via the init script
-\fB/etc/init.d/xprint\fR (where this script exists).
-.PP
-Client programs such as mozilla will require environment
-variable \fB${XPSERVERLIST}\fR to be set, identifying the
-"display" on which Xprt is running. This variable may be set
-for all users via \fB/etc/profile\fR (or similar), using
-\fB/etc/init.d/xprint get_xpserverlist\fR:
-
-.nf
-export XPSERVERLIST=`/etc/init.d/xprint get_xpserverlist`
-.fi
-
-.SH OPTIONS
-Many of Xprt's command line options are shared in common
-with the usual X servers (see \fBXserver\fR(__appmansuffix__)).
-Commonly used options include:
-.TP
-\fB:\fIdisplay\fB\fR
-The X server runs on the given display. If multiple X
-servers are to run simultaneously on a host, each must
-have a unique display number. Note that the standard X
-server (for video displays) typically runs on display
-:0. If \fB/etc/init.d/xprint\fR is used
-to invoke Xprt, it may be configured to automatically assign an available
-display number.
-.TP
-\fB\-ac\fR
-disables host-based access control mechanisms. Enables access
-by any host, and permits any host to modify the access control
-list. Use with extreme caution. This option exists primarily
-for running test suites remotely.
-.TP
-\fB\-audit \fIlevel\fB\fR
-sets the audit trail level. The default level is 1, meaning
-only connection rejections are reported. Level 2 additionally
-reports all successful connections and disconnects. Level 4
-enables messages from the SECURITY extension, if present,
-including generation and revocation of authorizations and
-violations of the security policy. Level 0 turns off the audit
-trail. Audit lines are sent as standard error output.
-.TP
-\fB\-fp \fIfontpath\fB\fR
-sets the search path for fonts. This path is a comma
-separated list of directories which Xprt searches for
-font databases.
-.TP
-\fB\-pn\fR
-permits the server to continue running if it fails to
-establish all of its well-known sockets (connection
-points for clients), but establishes at least
-one.
-.TP
-\fB\-XpFile \fIfile\fB\fR
-Sets an altername Xprinters file (see section FILES).
-.TP
-\fB\-XpSpoolerType \fIspoolername\fB\fR
-Defines the spooler system to be used for print job spooling.
-Supported values in xprint.mozdev.org release 009 are:
-
-aix
-
-aix4
-
-bsd
-
-osf
-
-solaris
-
-sysv
-
-uxp
-
-cups
-
-lprng
-
-other
-
-none
-
-(multiple values can be specified, seperated by ':', the first active spooler will be chosen).
-The default value is platform-specific and can be obtained via
-
-.nf
-Xprt \-h
-.fi
-
-\&.
-.SH ENVIRONMENT
-The following environment variables are recognized by the X print server
-(environment variables recognized by Xprint clients are described in
-\fBXprint\fR(__miscmansuffix__)):
-.TP
-\fB${XPCONFIGDIR}\fR
-This environment variable points to the root
-of the Xprint server configuration directory hierarchy.
-If the variable is not defined, the default
-path is be assumed. The default path may be
-\fB/usr/X11R6/lib/X11/xserver/\fR,
-\fB/usr/lib/X11/xserver/\fR,
-\fB/usr/share/Xprint/xserver/\fR or
-\fB/usr/openwin/server/etc/XpConfig\fR, depending on the
-system, and may be configured in \fB/etc/init.d/xprint\fR.
-.TP
-\fB${LANG}\fR
-This environment variable selects the locale settings used by the Xprint server.
-Xprt allows language-specific settings (stored in \fB${XPCONFIGDIR}/${LANG}/print/\fR)
-which will override the default settings (stored in \fB${XPCONFIGDIR}/C/print/\fR).
-If \fB${LANG}\fR is not set "C" is assumed.
-.PP
-.SH FILES
-.TP
-\fB${XPCONFIGDIR}/${LANG}/print/Xprinters\fR, \fB${XPCONFIGDIR}/C/print/Xprinters\fR
-`Xprinters' is the top most configuration file. It tells
-Xprt which specific printer names (e.g. mylaser) should
-be supported, and whether \fBlpstat\fR(1) or other commands
-should be used to automatically supplement the list of
-printers.
-.TP
-\fB${XPCONFIGDIR}/${LANG}/print/attributes/printer\fR, \fB${XPCONFIGDIR}/C/print/attributes/printer\fR
-The `printer' file maps printer names to model
-configurations (see `model-config' below). For example,
-"mylaser" could be mapped to a "HPDJ1600C", and all other
-arbitrary printers could be mapped to a default, such as
-"HPLJ4SI". When depending on \fBlpstat\fR(1) in the Xprinters
-file, setting up defaults in `printer' becomes all the
-more important.
-.TP
-\fB${XPCONFIGDIR}/${LANG}/print/attributes/document\fR, \fB${XPCONFIGDIR}/C/print/attributes/document\fR
-The `document' file specifies the initial document values
-for any print jobs. For example, which paper tray to
-use, what default resolution, etc.
-.TP
-\fB${XPCONFIGDIR}/${LANG}/print/attributes/job\fR, \fB${XPCONFIGDIR}/C/print/attributes/job\fR
-The `job' file specifies the initial job values for any
-print jobs. For example, "notification-profile" can be
-set so that when a print job is successfully sent to a
-printer, e-mail is sent to the user.
-.TP
-\fB${XPCONFIGDIR}/C/print/models/PSdefault/model\-config\fR, \fB${XPCONFIGDIR}/C/print/models/PSdefault/fonts/fonts.dir\fR, \fB${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00051.pmf\fR, \fB${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00093.pmf\fR
-The `model-config' file has attributes that describe the
-printer model's capabilities and default settings.
-Printer model fonts may also be present. The model-config
-file also identifies the print ddx driver to be used.
-For each printer model supported, a complete hierarchy of
-files should exist. In most cases, these files do not
-need to be modified.
-.TP
-\fB${XPCONFIGDIR}/C/print/ddx\-config/raster/pdf\fR, \fB${XPCONFIGDIR}/C/print/ddx\-config/raster/pcl\fR, \fB${XPCONFIGDIR}/C/print/ddx\-config/raster/postscript\fR
-The print ddx drivers can have highly specific
-configuration files to control their behavior. In most
-cases, these files do not need to be modified.
-.SH "SEE ALSO"
-\fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxplsprinters\fR(__appmansuffix__), \fBxprehashprinterlist\fR(__appmansuffix__), \fBxphelloworld\fR(__appmansuffix__), \fBxpxmhelloworld\fR(__appmansuffix__), \fBxpawhelloworld\fR(__appmansuffix__), \fBxpxthelloworld\fR(__appmansuffix__), \fBxpsimplehelloworld\fR(__appmansuffix__), \fBXserver\fR(__appmansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/)
-.SH AUTHORS
-This manual page was written by
-Drew Parsons <dparsons@debian.org> and
-Roland Mainz <roland.mainz@nrubsig.org>,
-with some help from the man page at
-http://www.sins.com.au/unix/manpages/Xprt.html and the XFree86
-man page for \fBXserver\fR(1).
diff --git a/nx-X11/programs/Xserver/Xprint/Xprt.sgml b/nx-X11/programs/Xserver/Xprint/Xprt.sgml
deleted file mode 100644
index 0ffa39fcb..000000000
--- a/nx-X11/programs/Xserver/Xprint/Xprt.sgml
+++ /dev/null
@@ -1,371 +0,0 @@
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.2//EN" 'http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd'>
-
-<!-- Process this file with docbook-to-man to generate an nroff manual
- page: 'docbook-to-man manpage.sgml > manpage.1'. You may view
- the manual page with: 'docbook-to-man manpage.sgml | nroff -man | less'.
- A typical entry in a Makefile or Makefile.am is:
-
-manpage.1: manpage.sgml
- docbook-to-man $< > $@
-
-HTML generation can be done like this:
-% xsltproc ==docbook /usr/share/sgml/docbook/docbook-xsl-stylesheets-1.60.1/html/docbook.xsl Xprint.sgml >Xprint.html
- -->
-
-<refentry id="Xprt">
- <refmeta>
- <refentrytitle>Xprt</refentrytitle>
- <manvolnum>__appmansuffix__</manvolnum>
- </refmeta>
- <refnamediv>
- <refname>Xprt</refname>
-
- <refpurpose>Print server for X Version 11</refpurpose>
- </refnamediv>
- <refsynopsisdiv>
- <cmdsynopsis>
- <command>Xprt</command>
-
- <arg><option>-ac</option></arg>
-
- <arg><option>-audit <replaceable>level</replaceable></option></arg>
-
- <arg><option>-pn</option></arg>
-
- <arg><option>-fp <replaceable>fontpath</replaceable></option></arg>
-
- <arg><option>-XpFile <replaceable>file</replaceable></option></arg>
-
- <arg><option>-XpSpoolerType <replaceable>spoolername</replaceable></option></arg>
-
- <arg><option>:<replaceable>display</replaceable></option></arg>
-
- </cmdsynopsis>
- </refsynopsisdiv>
- <refsect1>
- <title>DESCRIPTION</title>
-
- <para><command>Xprt</command> is the Xprint print server
- for version 11 of the X Window system for non display devices
- such as printers and fax machines.</para>
-
- <para>Xprint is an advanced printing system which enables X11
- applications to use devices like printers, FAX or create
- documents in formats like PostScript, PCL or PDF. It may be used by
- clients such as <application>mozilla</application>.
- </para>
-
- <para>Xprint is a very flexible, extensible, scaleable, client/server
- print system based on ISO 10175 (and some other specs) and the X11
- rendering protocol.
- Using Xprint an application can search, query and use devices like
- printers, FAX machines or create documents in formats like PDF.
- In particular, an application can seek a printer, query supported
- attributes (like paper size, trays, fonts etc.), configure the printer
- device to match it's needs and print on it like on any other X device
- reusing parts of the code which is used for the video card Xserver.
- </para>
- </refsect1>
-
- <refsect1>
- <title>USAGE</title>
-
- <para>
- Although Xprt may be invoked from the command line, it is
- preferable to run it as a daemon via the init script
- <filename>/etc/init.d/xprint</filename> (where this script exists).
- </para>
-
- <para>Client programs such as mozilla will require environment
- variable <envar>${XPSERVERLIST}</envar> to be set, identifying the
- "display" on which Xprt is running. This variable may be set
- for all users via <filename>/etc/profile</filename> (or similar), using
- <userinput>/etc/init.d/xprint get_xpserverlist</userinput>:
- <informalexample>
- <programlisting>export XPSERVERLIST=`/etc/init.d/xprint get_xpserverlist`</programlisting>
- </informalexample>
- </para>
- </refsect1>
-
- <refsect1>
- <title>OPTIONS</title>
-
- <para>Many of Xprt's command line options are shared in common
- with the usual X servers (see <citerefentry><refentrytitle>Xserver</refentrytitle><manvolnum>__appmansuffix__</manvolnum></citerefentry>).
- Commonly used options include:</para>
-
- <variablelist>
- <varlistentry>
- <term><option>:<replaceable>display</replaceable></option>
- </term>
- <listitem>
- <para> The X server runs on the given display. If multiple X
- servers are to run simultaneously on a host, each must
- have a unique display number. Note that the standard X
- server (for video displays) typically runs on display
- :0. If <filename>/etc/init.d/xprint</filename> is used
- to invoke Xprt, it may be configured to automatically assign an available
- display number.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-ac</option>
- </term>
- <listitem>
- <para>disables host-based access control mechanisms. Enables access
- by any host, and permits any host to modify the access control
- list. Use with extreme caution. This option exists primarily
- for running test suites remotely.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-audit <replaceable>level</replaceable></option>
- </term>
- <listitem>
- <para>sets the audit trail level. The default level is 1, meaning
- only connection rejections are reported. Level 2 additionally
- reports all successful connections and disconnects. Level 4
- enables messages from the SECURITY extension, if present,
- including generation and revocation of authorizations and
- violations of the security policy. Level 0 turns off the audit
- trail. Audit lines are sent as standard error output.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-fp <replaceable>fontpath</replaceable></option>
- </term>
- <listitem>
- <para>sets the search path for fonts. This path is a comma
- separated list of directories which Xprt searches for
- font databases.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-pn</option>
- </term>
- <listitem>
- <para>permits the server to continue running if it fails to
- establish all of its well-known sockets (connection
- points for clients), but establishes at least
- one.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>-XpFile <replaceable>file</replaceable></option>
- </term>
- <listitem>
- <para>Sets an altername Xprinters file (see section FILES).</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-XpSpoolerType <replaceable>spoolername</replaceable></option>
- </term>
- <listitem>
- <para>
- Defines the spooler system to be used for print job spooling.
- Supported values in xprint.mozdev.org release 009 are:
- <simplelist type="vert">
- <member>aix</member>
- <member>aix4</member>
- <member>bsd</member>
- <member>osf</member>
- <member>solaris</member>
- <member>sysv</member>
- <member>uxp</member>
- <member>cups</member>
- <member>lprng</member>
- <member>other</member>
- <member>none</member>
- </simplelist>
- (multiple values can be specified, seperated by ':', the first active spooler will be chosen).
- The default value is platform-specific and can be obtained via
- <programlisting>Xprt -h</programlisting>.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
-
- <refsect1>
- <title>ENVIRONMENT</title>
- <para>
- The following environment variables are recognized by the X print server
- (environment variables recognized by Xprint clients are described in
- <citerefentry><refentrytitle>Xprint</refentrytitle><manvolnum>__miscmansuffix__</manvolnum></citerefentry>):
-
- <variablelist>
- <varlistentry>
- <term><envar>${XPCONFIGDIR}</envar></term>
- <listitem>
- <para> This environment variable points to the root
- of the Xprint server configuration directory hierarchy.
- If the variable is not defined, the default
- path is be assumed. The default path may be
- <filename>/usr/X11R6/lib/X11/xserver/</filename>,
- <filename>/usr/lib/X11/xserver/</filename>,
- <filename>/usr/share/Xprint/xserver/</filename> or
- <filename>/usr/openwin/server/etc/XpConfig</filename>, depending on the
- system, and may be configured in <filename>/etc/init.d/xprint</filename>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><envar>${LANG}</envar></term>
- <listitem>
- <para>
- This environment variable selects the locale settings used by the Xprint server.
- Xprt allows language-specific settings (stored in <filename>${XPCONFIGDIR}/${LANG}/print/</filename>)
- which will override the default settings (stored in <filename>${XPCONFIGDIR}/C/print/</filename>).
- If <envar>${LANG}</envar> is not set "C" is assumed.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </para>
- </refsect1>
-
- <refsect1>
- <title>FILES</title>
-
- <variablelist>
- <varlistentry>
- <term><filename>${XPCONFIGDIR}/${LANG}/print/Xprinters</filename></term>
- <term><filename>${XPCONFIGDIR}/C/print/Xprinters</filename></term>
- <listitem>
- <para>
- `Xprinters' is the top most configuration file. It tells
- Xprt which specific printer names (e.g. mylaser) should
- be supported, and whether <citerefentry><refentrytitle>lpstat</refentrytitle><manvolnum>1</manvolnum></citerefentry> or other commands
- should be used to automatically supplement the list of
- printers.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><filename>${XPCONFIGDIR}/${LANG}/print/attributes/printer</filename></term>
- <term><filename>${XPCONFIGDIR}/C/print/attributes/printer</filename></term>
- <listitem>
- <para>
- The `printer' file maps printer names to model
- configurations (see `model-config' below). For example,
- "mylaser" could be mapped to a "HPDJ1600C", and all other
- arbitrary printers could be mapped to a default, such as
- "HPLJ4SI". When depending on <citerefentry><refentrytitle>lpstat</refentrytitle><manvolnum>1</manvolnum></citerefentry> in the Xprinters
- file, setting up defaults in `printer' becomes all the
- more important.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><filename>${XPCONFIGDIR}/${LANG}/print/attributes/document</filename></term>
- <term><filename>${XPCONFIGDIR}/C/print/attributes/document</filename></term>
- <listitem>
- <para>
- The `document' file specifies the initial document values
- for any print jobs. For example, which paper tray to
- use, what default resolution, etc.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><filename>${XPCONFIGDIR}/${LANG}/print/attributes/job</filename></term>
- <term><filename>${XPCONFIGDIR}/C/print/attributes/job</filename></term>
- <listitem>
- <para>
- The `job' file specifies the initial job values for any
- print jobs. For example, "notification-profile" can be
- set so that when a print job is successfully sent to a
- printer, e-mail is sent to the user.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><filename>${XPCONFIGDIR}/C/print/models/PSdefault/model-config</filename></term>
- <term><filename>${XPCONFIGDIR}/C/print/models/PSdefault/fonts/fonts.dir</filename></term>
- <term><filename>${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00051.pmf</filename></term>
- <term><filename>${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00093.pmf</filename></term>
-
- <listitem>
- <para>
- The `model-config' file has attributes that describe the
- printer model's capabilities and default settings.
- Printer model fonts may also be present. The model-config
- file also identifies the print ddx driver to be used.
-
- For each printer model supported, a complete hierarchy of
- files should exist. In most cases, these files do not
- need to be modified.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><filename>${XPCONFIGDIR}/C/print/ddx-config/raster/pdf</filename></term>
- <term><filename>${XPCONFIGDIR}/C/print/ddx-config/raster/pcl</filename></term>
- <term><filename>${XPCONFIGDIR}/C/print/ddx-config/raster/postscript</filename></term>
-
- <listitem>
- <para>
- The print ddx drivers can have highly specific
- configuration files to control their behavior. In most
- cases, these files do not need to be modified.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </refsect1>
-
- <refsect1>
- <title>SEE ALSO</title>
- <para>
- <simplelist type="inline">
- <!-- specific references -->
- <!-- none -->
-
- <!-- Xprint general references -->
- <member><citerefentry><refentrytitle>Xprint</refentrytitle><manvolnum>__miscmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>X11</refentrytitle><manvolnum>__miscmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>xplsprinters</refentrytitle><manvolnum>__appmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>xprehashprinterlist</refentrytitle><manvolnum>__appmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>xphelloworld</refentrytitle><manvolnum>__appmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>xpxmhelloworld</refentrytitle><manvolnum>__appmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>xpawhelloworld</refentrytitle><manvolnum>__appmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>xpxthelloworld</refentrytitle><manvolnum>__appmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>xpsimplehelloworld</refentrytitle><manvolnum>__appmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>Xserver</refentrytitle><manvolnum>__appmansuffix__</manvolnum></citerefentry></member>
-<!--
- <member><citerefentry><refentrytitle>Xprt</refentrytitle><manvolnum>__appmansuffix__</manvolnum></citerefentry></member>
--->
- <!-- ToDO: Add manual pages for the single Xprint DDX implementations (PostScript/PDF/PCL/PCL-MONO/Raster/etc.) -->
- <member><citerefentry><refentrytitle>libXp</refentrytitle><manvolnum>__libmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>libXprintUtils</refentrytitle><manvolnum>__libmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>libXprintAppUtils</refentrytitle><manvolnum>__libmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>XmPrintShell</refentrytitle><manvolnum>__libmansuffix__</manvolnum></citerefentry></member>
- <member><citerefentry><refentrytitle>XawPrintShell</refentrytitle><manvolnum>__libmansuffix__</manvolnum></citerefentry></member>
- <member>Xprint FAQ (<ulink url="http://xprint.mozdev.org/docs/Xprint_FAQ.html">http://xprint.mozdev.org/docs/Xprint_FAQ.html</ulink>)</member>
- <member>Xprint main site (<ulink url="http://xprint.mozdev.org/">http://xprint.mozdev.org/</ulink>)</member>
- </simplelist>
- </para>
- </refsect1>
-
- <refsect1>
- <title>AUTHORS</title>
- <para>
- This manual page was written by
- Drew Parsons <email>dparsons@debian.org</email> and
- Roland Mainz <email>roland.mainz@nrubsig.org</email>,
- with some help from the man page at
- <ulink url="http://www.sins.com.au/unix/manpages/Xprt.html">http://www.sins.com.au/unix/manpages/Xprt.html</ulink> and the XFree86
- man page for <citerefentry><refentrytitle>Xserver</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
- </para>
- </refsect1>
-</refentry>
-
-
-
diff --git a/nx-X11/programs/Xserver/Xprint/attributes.c b/nx-X11/programs/Xserver/Xprint/attributes.c
deleted file mode 100644
index 60f6803a3..000000000
--- a/nx-X11/programs/Xserver/Xprint/attributes.c
+++ /dev/null
@@ -1,1740 +0,0 @@
-/* $Xorg: attributes.c,v 1.3 2000/08/17 19:48:07 cpqbld Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: attributes.c
-** *
-** * Contents:
-** * Implementation of the attribute store for Xp.
-** *
-** * Copyright: Copyright 1995 Hewlett-Packard Company
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/Xproto.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/wait.h>
-#include <pwd.h>
-#include <grp.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#if (defined(sun) && defined(SVR4)) || defined(__SCO__) || defined(__UNIXWARE__)
-#include <wchar.h>
-#endif
-#include "scrnintstr.h"
-
-#include <X11/extensions/Printstr.h>
-
-#include "attributes.h"
-
-#include <X11/Xlib.h>
-#include <X11/Xresource.h>
-
-#include "spooler.h"
-
-#ifndef MIN
-#define MIN(a,b) (((a)<(b))?(a):(b))
-#endif
-#ifndef MAX
-#define MAX(a,b) (((a)>(b))?(a):(b))
-#endif
-
-
-static XrmDatabase CopyDb(XrmDatabase inDb);
-
-extern XrmDatabase XpSpoolerGetServerAttributes(void);
-
-static int attrGeneration = 0;
-
-typedef struct {
- XrmDatabase *pDb;
- char *qualifier;
- char *modelId;
-} DbEnumStruct;
-
-typedef struct {
- char *stringDb;
- int nextPos;
- int space;
-} StringDbStruct;
-
-typedef struct _printerAttrs {
- struct _printerAttrs *next;
- char *name;
- char *qualifier;
- XrmDatabase printerAttrs;
- XrmDatabase docAttrs;
- XrmDatabase jobAttrs;
-} PrAttrs, *PrAttrPtr;
-
-static PrAttrPtr attrList = (PrAttrPtr)NULL;
-
-typedef struct _systemAttrs {
- XrmDatabase doc;
- XrmDatabase job;
- XrmDatabase printers;
- XrmDatabase server;
-} SysAttrs, *SysAttrsPtr;
-
-SysAttrs systemAttributes;
-
-/*
- * attrCtxtPrivIndex hold the attribute store's context private index.
- * This index is allocated at the time the attribute store is initialized.
- */
-static int attrCtxtPrivIndex;
-
-/*
- * The ContextAttrs structure descibes the context private space reserved
- * by the attribute store.
- */
-typedef struct _contextAttrs {
- XrmDatabase printerAttrs;
- XrmDatabase docAttrs;
- XrmDatabase jobAttrs;
- XrmDatabase pageAttrs;
-} ContextAttrs, *ContextAttrPtr;
-
-/*
- * XPDIR is relative to (i.e. is a subdir of) XPRINTDIR/$LANG.
- */
-static const char XPDIR[] = "/print";
-/*
- * The following files/directories define or are within subdirectories of the
- * above-defined XPDIR.
- */
-static const char XPPRINTERATTRFILE[] = "/attributes/printer";
-static const char XPJOBATTRFILE[] = "/attributes/job";
-static const char XPDOCATTRFILE[] = "/attributes/document";
-static const char XPMODELDIR[] = "/models";
-
-static char NULL_STRING[] = "\0";
-
-/*
- * XpGetConfigDirBase returns a string containing the path name of the base
- * where the print server configuration directory is localed.
- */
-static
-char *XpGetConfigDirBase()
-{
- char *configDir;
-
- /*
- * If the XPCONFIGDIR environment variable is not set, then use the
- * compile-time constant XPRINTDIR. XPRINTDIR is passed in on the
- * compile command line, and is defined in $(TOP)/config/cf/Project.tmpl.
- */
- if((configDir = getenv("XPCONFIGDIR")) == (char *)NULL)
- configDir = XPRINTDIR;
-
- return configDir;
-}
-
-/*
- * XpGetConfigDir returns a string containing the path name of the print
- * server configuration directory. If the useLocale parameter is False
- * the it returns the path to the "/C" directory. If the useLocale
- * parameter is True it returns the path to the directory associated with
- * $LANG. It makes no attempt to ensure that the directory actually exists.
- */
-char *
-XpGetConfigDir(Bool useLocale)
-{
- char *dirName, *langName, *langDir, *configDir;
- Bool freeLangDir = False;
-
- if(useLocale == False) langDir = "/C";
- else
- {
- langName = getenv("LC_ALL");
- if (langName == NULL) {
- langName = getenv("LANG");
- }
-
- if(langName == (char *)NULL)
- return (char *)NULL;
- else
- {
- if(strcmp(langName, "C") == 0)
- return (char *)NULL;
- langDir = (char *)xalloc(strlen(langName) + 2);
- sprintf(langDir, "/%s", langName);
- freeLangDir = True;
- }
- }
-
- configDir = XpGetConfigDirBase();
-
- dirName = (char *)xalloc(strlen(configDir) + strlen(XPDIR) +
- strlen(langDir) + 1);
- sprintf(dirName, "%s%s%s", configDir, langDir, XPDIR);
-
- if(freeLangDir == True)
- xfree(langDir);
-
- return dirName;
-}
-
-/*
- * GetMergedDatabase reads and merges xrmdb files from the top-level printer
- * config directory, and from the directory associated with the current
- * locale (if other than the top-level).
- */
-static XrmDatabase
-GetMergedDatabase(const char *attrName)
-{
- char *dirName, *fileName;
- XrmDatabase db;
-
- if((dirName = XpGetConfigDir(False)) == (char *)NULL)
- return (XrmDatabase)NULL;
- if((fileName = (char *)xalloc(strlen(dirName) + strlen(attrName) + 1)) ==
- (char *)NULL)
- return (XrmDatabase)NULL;
- sprintf(fileName, "%s%s", dirName, attrName);
- db = XrmGetFileDatabase(fileName);
- xfree(fileName);
- xfree(dirName);
-
- if((dirName = XpGetConfigDir(True)) == (char *)NULL)
- return db;
- if((fileName = (char *)xalloc(strlen(dirName) + strlen(attrName) + 1)) ==
- (char *)NULL)
- return db;
- sprintf(fileName, "%s%s", dirName, attrName);
- (void)XrmCombineFileDatabase(fileName, &db, True);
- xfree(fileName);
- xfree(dirName);
-
- return db;
-}
-
-/*
- * BuildSystemAttributes reads the on-disk configuration files for printers,
- * initial job, and initial document attributes. The resulting xrm
- * databases are then dissected as needed for each printer.
- * It also allocates a contextPrivate space for the attributes,
- * reserving space to store pointers to the attribute stores for
- * the context.
- */
-static void
-BuildSystemAttributes(void)
-{
- if(systemAttributes.printers != (XrmDatabase)NULL)
- XrmDestroyDatabase(systemAttributes.printers);
- systemAttributes.printers = GetMergedDatabase(XPPRINTERATTRFILE);
- if(systemAttributes.job != (XrmDatabase)NULL)
- XrmDestroyDatabase(systemAttributes.job);
- systemAttributes.job = GetMergedDatabase(XPJOBATTRFILE);
- if(systemAttributes.doc != (XrmDatabase)NULL)
- XrmDestroyDatabase(systemAttributes.doc);
- systemAttributes.doc = GetMergedDatabase(XPDOCATTRFILE);
- if(systemAttributes.server != (XrmDatabase)NULL)
- XrmDestroyDatabase(systemAttributes.server);
- systemAttributes.server = XpSpoolerGetServerAttributes();
- return;
-}
-
-/*
- * AddDbEntry is called by XrmEnumerateDatabase, and adds the supplied
- * database entry to the database pointed to within the "DbEnumStruct"
- * passed as the client_data (aka "closure").
- */
-static Bool
-AddDbEntry(
- XrmDatabase *sourceDB,
- XrmBindingList bindings,
- XrmQuarkList quarks,
- XrmRepresentation *type,
- XrmValue *value,
- XPointer client_data)
-{
- DbEnumStruct *pEnumStruct = (DbEnumStruct *)client_data;
- XrmName xrm_name[5];
- XrmClass xrm_class[5];
- XrmBinding xrm_bind[3];
- XrmValue realVal;
- XrmRepresentation rep_type;
-
- xrm_name[0] = XrmStringToQuark (pEnumStruct->qualifier);
- xrm_class[0] = XrmStringToQuark (pEnumStruct->modelId);
-
- for(;*quarks; quarks++)
- xrm_name[1] = xrm_class[1] = *quarks;
-
- xrm_name[2] = (XrmQuark)NULL;
- xrm_class[2] = (XrmQuark)NULL;
-
- if(XrmQGetResource (*sourceDB, xrm_name, xrm_class, &rep_type, &realVal))
- {
- xrm_bind[0] = XrmBindLoosely;
-
- xrm_name[0] = xrm_name[1];
- xrm_name[1] = NULLQUARK;
-
- XrmQPutStringResource(pEnumStruct->pDb, xrm_bind, xrm_name,
- (char *)realVal.addr);
- }
-
- return FALSE;
-}
-
-/*
- * BuildPrinterAttrs - builds and returns an XrmDatabase for the printer
- * of the specified name/qualifier, if we have enough information.
- * If we don't have a model-config
- * file, then just enumerate the systemAttributes->printers database,
- * otherwise read in the model-config database and merge into it the
- * systemAttributes->printers database. This database is then enumerated
- * with the printer qualifier (and the model name as class if we have it), and
- * the resulting elements are stored into the database for this particular
- * printer.
- */
-static XrmDatabase
-BuildPrinterAttrs(
- char *printerName,
- char *qualifierName)
-{
- XrmDatabase printerDB = (XrmDatabase)NULL;
-
- if(systemAttributes.printers != (XrmDatabase)NULL)
- {
- char *dirName, *fileName;
- XrmDatabase modelDB = (XrmDatabase)NULL;
- XrmName xrm_name[5], xrm_class[2];
- XrmRepresentation rep_type;
- XrmValue value;
- DbEnumStruct enumStruct;
- Bool freeModelDB = False;
- /*
- * Build the initial db based on the model-config files
- */
- xrm_name[0] = XrmStringToQuark (qualifierName);
- xrm_name[1] = XrmStringToQuark ("xp-model-identifier");
- xrm_name[2] = (XrmQuark)NULL;
- XrmQGetResource (systemAttributes.printers, xrm_name, xrm_name,
- &rep_type, &value);
-
- if(value.addr != (XPointer)NULL)
- {
- fileName = (char *)xalloc(strlen(XPMODELDIR) +
- strlen((char *)value.addr) +
- strlen("model-config") + 3);
- sprintf(fileName, "%s/%s/%s", XPMODELDIR, value.addr,
- "model-config");
- modelDB = GetMergedDatabase(fileName);
- xfree(fileName);
- if(modelDB != (XrmDatabase)NULL)
- {
- XrmDatabase tempDB = (XrmDatabase)NULL;
- /*
- * have to make a temp copy because MergeDatabase destroys
- * the "source" database. Merge in the printers DB
- */
- tempDB = CopyDb(systemAttributes.printers);
- XrmMergeDatabases(tempDB, &modelDB);
- freeModelDB = True;
- }
- }
-
- /*
- * Check to see if we knew the name AND found a database file
- */
- if(modelDB == (XrmDatabase)NULL)
- modelDB = systemAttributes.printers;
-
- xrm_name[0] = XrmStringToQuark (qualifierName);
- xrm_name[1] = (XrmQuark)NULL;
- xrm_class[0] = XrmStringToQuark((char *)value.addr);
- xrm_class[1] = (XrmQuark)NULL;
- enumStruct.pDb = &printerDB;
- enumStruct.qualifier = (char *)qualifierName;
- enumStruct.modelId = (char *)value.addr;
- XrmEnumerateDatabase(modelDB, xrm_name, xrm_class, XrmEnumAllLevels,
- AddDbEntry, (XPointer) &enumStruct);
-
- if(freeModelDB == True) XrmDestroyDatabase(modelDB);
- }
- XrmPutStringResource(&printerDB, "*printer-name", printerName);
- XrmPutStringResource(&printerDB, "*qualifier", qualifierName);
- return printerDB;
-}
-
-/*
- * BuildABase - builds an XrmDatabase by enumerating the supplied sourceBase
- * database for elements relevant for the printer named by printerName,
- * and deriving a class for printerName from the model declared in the
- * systemAttributes.printers database. If no model is defined for this
- * printer then the printerName is used as the class as well.
- *
- * This is used to build the initial value document and initial value
- * job attribute databases for each printer by searching the system
- * level doc and job databases.
- */
-static XrmDatabase
-BuildABase(
- char *printerName,
- char *qualifierName,
- XrmDatabase sourceBase)
-{
- XrmDatabase builtDB = (XrmDatabase)NULL;
-
- if(sourceBase != (XrmDatabase)NULL)
- {
- XrmName xrm_name[5], xrm_class[2];
- XrmRepresentation rep_type;
- XrmValue value;
- DbEnumStruct enumStruct;
-
- /*
- * Retrieve the model name for use as the class.
- */
- xrm_name[0] = XrmStringToQuark (printerName);
- xrm_name[1] = XrmStringToQuark ("xp-model-identifier");
- xrm_name[2] = (XrmQuark)NULL;
- XrmQGetResource (systemAttributes.printers, xrm_name, xrm_name,
- &rep_type, &value);
- /*
- * if we have a model name then use it as the class, otherwise
- * just use the printer name as the class as well as the name.
- */
- if(value.addr != (XPointer)NULL)
- xrm_class[0] = XrmStringToQuark((char *)value.addr);
- else
- xrm_class[0] = xrm_name[0];
- xrm_class[1] = (XrmQuark)NULL;
-
- xrm_name[1] = (XrmQuark)NULL;
-
- enumStruct.pDb = &builtDB;
- enumStruct.qualifier = (char *)qualifierName;
- enumStruct.modelId = (char *)value.addr;
- XrmEnumerateDatabase(sourceBase, xrm_name, xrm_class, XrmEnumAllLevels,
- AddDbEntry, (XPointer) &enumStruct);
- }
-
- XrmPutStringResource(&builtDB, "*qualifier", qualifierName);
-
- return builtDB;
-}
-
-/*
- * FreeAttrList is called upon server recycle, and frees the printer
- * databases stored in the global attrList.
- */
-static void
-FreeAttrList(void)
-{
- PrAttrPtr pAttr, pNext;
-
- for(pAttr = attrList, pNext = attrList;
- pAttr != (PrAttrPtr)NULL;
- pAttr = pNext)
- {
- pNext = pAttr->next;
- if(pAttr->printerAttrs != (XrmDatabase)NULL)
- XrmDestroyDatabase(pAttr->printerAttrs);
- if(pAttr->docAttrs != (XrmDatabase)NULL)
- XrmDestroyDatabase(pAttr->docAttrs);
- if(pAttr->jobAttrs != (XrmDatabase)NULL)
- XrmDestroyDatabase(pAttr->jobAttrs);
- xfree(pAttr->name);
- xfree(pAttr->qualifier);
- xfree(pAttr);
- }
- attrList = (PrAttrPtr)NULL;
-}
-
-/*
- * XpRehashAttributes - frees the per-printer attribute list and
- * calls BuildSystemAttributes to rebuild the overall attribute
- * store. It is expected that a caller of this will follow it
- * by calling XpBuildAttributeStore for a new list of printers.
- */
-int
-XpRehashAttributes(void)
-{
- if(attrList != (PrAttrPtr)NULL)
- FreeAttrList();
- BuildSystemAttributes();
- return Success;
-}
-
-/*
- * XpBuildAttributeStore - creates the attribute database associated
- * with the specified printer. The first time this is called it
- * calls BuildSystemAttributes to create the system-level databases.
- */
-void
-XpBuildAttributeStore(
- char *printerName,
- char *qualifierName)
-{
- PrAttrPtr pAttr;
-
- if((pAttr = (PrAttrPtr)xalloc(sizeof(PrAttrs))) == (PrAttrPtr)NULL)
- return;
-
- if(attrGeneration != serverGeneration)
- {
- if(attrList != (PrAttrPtr)NULL)
- FreeAttrList();
- attrCtxtPrivIndex = XpAllocateContextPrivateIndex();
- XpAllocateContextPrivate(attrCtxtPrivIndex, sizeof(ContextAttrs));
- BuildSystemAttributes();
-
- attrGeneration = serverGeneration;
- }
-
- if(attrList == (PrAttrPtr)NULL)
- {
- pAttr->next = (PrAttrPtr)NULL;
- attrList = pAttr;
- }
- else
- {
- pAttr->next = attrList;
- attrList = pAttr;
- }
-
- pAttr->name = strdup(printerName);
- pAttr->qualifier = strdup(qualifierName);
- pAttr->printerAttrs = BuildPrinterAttrs(printerName, qualifierName);
- pAttr->docAttrs = BuildABase(printerName, qualifierName,
- systemAttributes.doc);
- pAttr->jobAttrs = BuildABase(printerName, qualifierName,
- systemAttributes.job);
-}
-
-
-static Bool
-StoreEntry(
- XrmDatabase *sourceDB,
- XrmBindingList bindings,
- XrmQuarkList quarks,
- XrmRepresentation *type,
- XrmValue *value,
- XPointer client_data)
-{
- XrmDatabase *outDb = (XrmDatabase *)client_data;
-
- XrmQPutStringResource(outDb, bindings, quarks, (char *)value->addr);
-
- return FALSE;
-}
-
-/*
- * XpCopyDb - makes a copy of the specified XrmDatabase and returns
- * the copy.
- */
-static XrmDatabase
-CopyDb(XrmDatabase inDb)
-{
- XrmDatabase outDb = (XrmDatabase)NULL;
- XrmQuark empty = NULLQUARK;
-
- (void)XrmEnumerateDatabase(inDb, &empty, &empty, XrmEnumAllLevels,
- StoreEntry, (XPointer) &outDb);
- return outDb;
-}
-
-/*
- * XpInitAttributes - initializes the attribute store for the specified
- * context. It does this by making copies of the printer, doc, and job
- * attributes databases for the printer associated with the context.
- */
-void
-XpInitAttributes(XpContextPtr pContext)
-{
- ContextAttrPtr pCtxtAttrs;
- PrAttrPtr pPrAttr = attrList;
-
- /* Initialize all the pointers to NULL */
- pCtxtAttrs = (ContextAttrPtr)pContext->devPrivates[attrCtxtPrivIndex].ptr;
- (void)memset((void *)pCtxtAttrs, 0, (size_t) sizeof(ContextAttrs));
-
- for(pPrAttr = attrList; pPrAttr != (PrAttrPtr)NULL; pPrAttr = pPrAttr->next)
- if(!strcmp(pPrAttr->name, pContext->printerName)) break;
-
- if(pPrAttr != (PrAttrPtr)NULL)
- {
- pCtxtAttrs->printerAttrs = CopyDb(pPrAttr->printerAttrs);
- pCtxtAttrs->docAttrs = CopyDb(pPrAttr->docAttrs);
- pCtxtAttrs->jobAttrs = CopyDb(pPrAttr->jobAttrs);
- }
-}
-
-void
-XpDestroyAttributes(
- XpContextPtr pContext)
-{
- ContextAttrPtr pCtxtAttrs;
-
- pCtxtAttrs = (ContextAttrPtr)pContext->devPrivates[attrCtxtPrivIndex].ptr;
-
- if(pCtxtAttrs->printerAttrs != (XrmDatabase)NULL)
- XrmDestroyDatabase(pCtxtAttrs->printerAttrs);
- if(pCtxtAttrs->docAttrs != (XrmDatabase)NULL)
- XrmDestroyDatabase(pCtxtAttrs->docAttrs);
- if(pCtxtAttrs->jobAttrs != (XrmDatabase)NULL)
- XrmDestroyDatabase(pCtxtAttrs->jobAttrs);
- if(pCtxtAttrs->pageAttrs != (XrmDatabase)NULL)
- XrmDestroyDatabase(pCtxtAttrs->pageAttrs);
-}
-
-/*
- * XpGetOneAttribute returns the string value of the specified attribute
- * in the specified class for the specified print context. If the attribute
- * doesn't exist in the database for this context, or if the class database
- * doesn't exist for this context, then NULL is returned. The caller must
- * not free the returned string, as the returned pointer points into the
- * database. This function can also return a value from the server attributes,
- * in which case the pContext parameter is ignored.
- */
-char *
-XpGetOneAttribute(
- XpContextPtr pContext,
- XPAttributes class,
- char *attributeName)
-{
- ContextAttrPtr pCtxtAttrs;
- XrmDatabase db = (XrmDatabase)NULL;
- char *retVal;
- XrmName xrm_name[3];
- XrmRepresentation rep_type;
- XrmValue value;
-
- if(class == XPServerAttr)
- {
- if(systemAttributes.server == (XrmDatabase)NULL)
- return NULL_STRING;
-
- xrm_name[0] = XrmStringToQuark (attributeName);
- xrm_name[1] = (XrmQuark)NULL;
- XrmQGetResource(systemAttributes.server, xrm_name, xrm_name,
- &rep_type, &value);
-
- if(value.addr == (char *)NULL)
- return NULL_STRING;
- return (char *)value.addr;
- }
- else
- {
- pCtxtAttrs=(ContextAttrPtr)pContext->devPrivates[attrCtxtPrivIndex].ptr;
- switch(class)
- {
- case XPPrinterAttr:
- db = pCtxtAttrs->printerAttrs;
- break;
- case XPDocAttr:
- db = pCtxtAttrs->docAttrs;
- break;
- case XPJobAttr:
- db = pCtxtAttrs->jobAttrs;
- break;
- case XPPageAttr:
- db = pCtxtAttrs->pageAttrs;
- break;
- default:
- break;
- }
- }
- if(db == (XrmDatabase)NULL)
- return NULL_STRING;
-
- xrm_name[0] = XrmStringToQuark ("qualifier");
- xrm_name[1] = (XrmQuark)NULL;
- XrmQGetResource(db, xrm_name, xrm_name, &rep_type, &value);
-
- xrm_name[0] = XrmStringToQuark (value.addr);
- xrm_name[1] = XrmStringToQuark (attributeName);
- xrm_name[2] = (XrmQuark)NULL;
- if(XrmQGetResource(db, xrm_name, xrm_name, &rep_type, &value))
- return (char *)value.addr;
- else
- return NULL_STRING;
-}
-
-/*
- * XpPutOneAttribute updates one attribute for the specified
- * context and class. This function is intended for use by the attribute
- * validation module which updates the XrmDatabases directly. This
- * function does not recognize XPServerAttr.
- */
-void
-XpPutOneAttribute(
- XpContextPtr pContext,
- XPAttributes class,
- const char* attributeName,
- const char* value)
-{
- ContextAttrPtr pCtxtAttrs;
- XrmDatabase db;
- XrmBinding bindings[1];
- XrmQuark quarks[2];
-
- pCtxtAttrs = (ContextAttrPtr)pContext->devPrivates[attrCtxtPrivIndex].ptr;
- switch(class)
- {
- case XPPrinterAttr:
- db = pCtxtAttrs->printerAttrs;
- break;
- case XPDocAttr:
- db = pCtxtAttrs->docAttrs;
- break;
- case XPJobAttr:
- db = pCtxtAttrs->jobAttrs;
- break;
- case XPPageAttr:
- db = pCtxtAttrs->pageAttrs;
- break;
- default:
- return;
- }
- bindings[0] = XrmBindLoosely;
- quarks[0] = XrmStringToQuark(attributeName);
- quarks[1] = (XrmQuark)NULL;
- XrmQPutStringResource(&db, bindings, quarks, value ? value : "");
-}
-
-
-
-/*******************************************************************************
- *
- * The following routines: ExpandSpace, PutString, PutByte, and AppendEntry
- * form the functional core of the GetAttributes routine. Xrm does not
- * supply a routine to form a string database from an XrmDatabase, except
- * by writing the database to a file. This code avoids the file system
- * overhead, but is a bit clunky in its memory management.
- *
- ******************************************************************************/
-
-/*
- * ExpandSpace expands the memory allocated for the string database in
- * the StringDbStruct passed in, and updates the "space" field of the
- * struct to indicate the new amount of space available.
- */
-static Bool
-ExpandSpace(
- StringDbStruct *pStr)
-{
- char *newSpace;
-
- if((newSpace = (char *)xrealloc(pStr->stringDb, pStr->nextPos + pStr->space
- + 1024)) == (char *)NULL)
- return False;
- pStr->space += 1024;
- pStr->stringDb = newSpace;
- return True;
-}
-
-/*
- * PutString puts the contents of a null-terminated string into the string
- * database in the StringDbStruct passed in. If there is insufficient room
- * for the string, ExpandSpace is called, and the nextPos and space fields
- * are updated.
- */
-static void
-PutString(
- StringDbStruct *pStr,
- char *pString)
-{
- int len = strlen(pString);
-
- if(len >= pStr->space)
- if(!ExpandSpace(pStr))
- return;
- strcpy(&pStr->stringDb[pStr->nextPos], pString);
- pStr->nextPos += len;
- pStr->space -= len;
-}
-
-/*
- * PutByte puts a single byte value in to the string database in the passed-in
- * StringDbStruct. ExpandSpace is called if there is insufficient room for
- * the byte, and the nextPos and space fields are updated.
- */
-static void
-PutByte(
- StringDbStruct *pStr,
- char byte)
-{
- if(pStr->space <= 1)
- if(!ExpandSpace(pStr))
- return;
- pStr->stringDb[pStr->nextPos] = byte;
- pStr->nextPos++;
- pStr->space--;
-}
-
-#define XrmQString XrmPermStringToQuark("String")
-
-/*
- * AppendEntry is called by XrmEnumerateDatabase, and serves to append
- * a database entry onto a string database. The passed-in "closure"
- * struct contains a pointer to the string, and a count of the remaining
- * bytes. If there are insufficient remaining bytes then the struct
- * is realloced, and the count of the space remaining is updated.
- * Database elements of types other than String are ignored!
- * This code is based directly on that in "DumpEntry" in Xrm.c.
- */
-static Bool
-AppendEntry(
- XrmDatabase *db,
- XrmBindingList bindings,
- XrmQuarkList quarks,
- XrmRepresentation *type,
- XrmValuePtr value,
- XPointer data)
-{
- StringDbStruct *pEnumStr = (StringDbStruct *)data;
- Bool firstNameSeen;
- unsigned int i;
- char *s, c;
-
- if (*type != XrmQString)
- return False;
-
- for (firstNameSeen = False; *quarks; bindings++, quarks++) {
- if (*bindings == XrmBindLoosely) {
- PutString(pEnumStr, "*");
- } else if (firstNameSeen) {
- PutString(pEnumStr, ".");
- }
- firstNameSeen = True;
- PutString(pEnumStr, XrmQuarkToString(*quarks));
- }
- s = value->addr;
- i = value->size;
- PutString(pEnumStr, ":\t");
- if(i) i--;
-
- if (i && (*s == ' ' || *s == '\t'))
- PutByte(pEnumStr, '\\'); /* preserve leading whitespace */
-
- while (i--) {
- c = *s++;
- if (c == '\n') {
- if (i)
- PutString(pEnumStr, "\\n\\\n");
- else
- PutString(pEnumStr, "\\n");
- } else if (c == '\\')
- PutString(pEnumStr, "\\\\");
- else if ((c < ' ' && c != '\t') ||
- ((unsigned char)c >= 0x7f && (unsigned char)c < 0xa0))
- {
- char temp[4];
- (void) sprintf(temp, "\\%03o", (unsigned char)c);
- PutString(pEnumStr, temp);
- }
- else
- PutByte(pEnumStr, c);
- }
- PutByte(pEnumStr, '\n');
- pEnumStr->stringDb[pEnumStr->nextPos] = (char)'\0';
- return False;
-}
-
-/*
- * XpGetAttributes returns a string database version of the Xrm database
- * for the specified context and class. This function can also return the
- * contents of the server attributes, in which case the pContext parameter
- * is ignored.
- *
- * The caller is responsible for freeing the returned string,
- * unlike XpGetOneAttribute, where the caller must not free the string.
- */
-char *
-XpGetAttributes(
- XpContextPtr pContext,
- XPAttributes class)
-{
- ContextAttrPtr pCtxtAttrs;
- XrmDatabase db = (XrmDatabase)NULL;
- char *retVal;
- StringDbStruct enumStruct;
- XrmQuark empty = NULLQUARK;
-
- if(class == XPServerAttr)
- db = systemAttributes.server;
- else
- {
- pCtxtAttrs=(ContextAttrPtr)pContext->devPrivates[attrCtxtPrivIndex].ptr;
- switch(class)
- {
- case XPServerAttr:
- db = systemAttributes.server;
- break;
- case XPPrinterAttr:
- db = pCtxtAttrs->printerAttrs;
- break;
- case XPDocAttr:
- db = pCtxtAttrs->docAttrs;
- break;
- case XPJobAttr:
- db = pCtxtAttrs->jobAttrs;
- break;
- case XPPageAttr:
- db = pCtxtAttrs->pageAttrs;
- break;
- default:
- break;
- }
- }
- if(db == (XrmDatabase)NULL)
- {
- char *retval = (char *)xalloc(1);
- retval[0] = (char)'\0';
- return retval;
- }
-
- if((enumStruct.stringDb = (char *)xalloc(1024)) == (char *)NULL)
- return (char *)NULL;
- enumStruct.stringDb[0] = (char)'\0';
- enumStruct.nextPos = 0;
- enumStruct.space = 1024;
- (void)XrmEnumerateDatabase(db, &empty, &empty, XrmEnumAllLevels,
- AppendEntry, (XPointer) &enumStruct);
-
- return enumStruct.stringDb;
-}
-
-int
-XpAugmentAttributes(
- XpContextPtr pContext,
- XPAttributes class,
- char *attributes)
-{
- XrmDatabase db;
- ContextAttrPtr pCtxtAttrs;
-
- db = XrmGetStringDatabase(attributes);
- if(db == (XrmDatabase)NULL) return BadAlloc;
-
- pCtxtAttrs = (ContextAttrPtr)pContext->devPrivates[attrCtxtPrivIndex].ptr;
- switch(class)
- {
- case XPPrinterAttr:
- XrmMergeDatabases(db, &pCtxtAttrs->printerAttrs);
- break;
- case XPDocAttr:
- XrmMergeDatabases(db, &pCtxtAttrs->docAttrs);
- break;
- case XPJobAttr:
- XrmMergeDatabases(db, &pCtxtAttrs->jobAttrs);
- break;
- case XPPageAttr:
- XrmMergeDatabases(db, &pCtxtAttrs->pageAttrs);
- break;
- default:
- break;
- }
- return Success;
-}
-
-/*
- * XpSetAttributes - sets the attribute stores for a specified context.
- */
-int
-XpSetAttributes(
- XpContextPtr pContext,
- XPAttributes class,
- char *attributes)
-{
- XrmDatabase db;
- ContextAttrPtr pCtxtAttrs;
-
- db = XrmGetStringDatabase(attributes);
- if(db == (XrmDatabase)NULL) return BadAlloc;
-
- pCtxtAttrs=(ContextAttrPtr)pContext->devPrivates[attrCtxtPrivIndex].ptr;
- switch(class)
- {
- case XPPrinterAttr:
- if(pCtxtAttrs->printerAttrs != (XrmDatabase)NULL)
- XrmDestroyDatabase(pCtxtAttrs->printerAttrs);
- pCtxtAttrs->printerAttrs = db;
- break;
- case XPDocAttr:
- if(pCtxtAttrs->docAttrs != (XrmDatabase)NULL)
- XrmDestroyDatabase(pCtxtAttrs->docAttrs);
- pCtxtAttrs->docAttrs = db;
- break;
- case XPJobAttr:
- if(pCtxtAttrs->jobAttrs != (XrmDatabase)NULL)
- XrmDestroyDatabase(pCtxtAttrs->jobAttrs);
- pCtxtAttrs->jobAttrs = db;
- break;
- case XPPageAttr:
- if(pCtxtAttrs->pageAttrs != (XrmDatabase)NULL)
- XrmDestroyDatabase(pCtxtAttrs->pageAttrs);
- pCtxtAttrs->pageAttrs = db;
- break;
- default:
- break;
- }
- return Success;
-}
-
-void
-XpAddPrinterAttribute(
- char *printerName,
- char *printerQualifier,
- char *attributeName,
- char *attributeValue)
-{
- PrAttrPtr pAttr;
-
- for(pAttr = attrList; pAttr != (PrAttrPtr)NULL; pAttr = pAttr->next)
- {
- if(!strcmp(printerQualifier, pAttr->qualifier))
- {
- XrmPutStringResource(&pAttr->printerAttrs, attributeName,
- attributeValue);
- break;
- }
- }
-}
-
-const char *
-XpGetPrinterAttribute(const char *printerName,
- const char *attribute)
-{
- PrAttrPtr pAttr;
- XrmValue value;
- char *type;
-
- for(pAttr = attrList; pAttr != (PrAttrPtr)NULL; pAttr = pAttr->next)
- {
- if(!strcmp(printerName, pAttr->qualifier))
- {
- char *attrStr;
-
- attrStr = (char *)xalloc(strlen(printerName) + strlen(attribute) +
- 2);
- sprintf(attrStr, "%s.%s", printerName, attribute);
- XrmGetResource(pAttr->printerAttrs, attrStr, attrStr,
- &type, &value);
- xfree(attrStr);
- break;
- }
- }
- if(value.addr != (XPointer)NULL && strlen(value.addr) != 0)
- return value.addr;
- else
- return "";
-}
-
-/*******************************************************************************
- *
- * The following routines are not attribute routines, but are rather
- * spooler interface functions. They should presumably move to
- * a SpoolerIf.c of some similarly named file.
- *
- ******************************************************************************/
-#include <locale.h>
-
-static char serverAttrStr[] = "*document-attributes-supported: copy-count\n\
-*job-attributes-supported: job-name job-owner\
- notification-profile xp-spooler-command-options\n\
-*multiple-documents-supported: False";
-
-XrmDatabase
-XpSpoolerGetServerAttributes(void)
-{
- char *totalAttrs, *localeName;
- XrmDatabase db;
-
- localeName = setlocale(LC_CTYPE, (char *)NULL);
- if(!localeName || strlen(localeName) == 0)
- localeName = "C";
-
- if((totalAttrs = (char *)xalloc(strlen(serverAttrStr) + strlen(localeName)
- + 11)) == (char *)NULL)
- return (XrmDatabase)NULL;
- sprintf(totalAttrs, "%s\n%s\t%s", serverAttrStr, "*locale:", localeName);
-
- db = XrmGetStringDatabase(totalAttrs);
- xfree(totalAttrs);
- return db;
-}
-
-/*
- * Tailf() works similar to "/bin/tail -f fd_in >fd_out" until
- * the process |child| terminates (the child status is
- * returned in |child_status|).
- * This function is used to copy the stdout/stderr output of a
- * child to fd_out until the child terminates.
- */
-static
-void Tailf(int fd_in, int fd_out, pid_t child, int *child_status)
-{
- char b[256];
- ssize_t sz;
- Bool childDone = FALSE;
- struct timeval timeout;
- long fpos = 0; /* XXX: this is not correct for largefile support */
-
- timeout.tv_sec = 0;
- timeout.tv_usec = 100000;
-
- for(;;)
- {
- /* Check whether the child is still alive or not */
- if (waitpid(child, child_status, WNOHANG) == child)
- childDone = TRUE;
-
- /* Copy traffic from |fd_in| to |fd_out|
- * (Note we have to use |pread()| here to avoid race conditions
- * between a child process writing to the same file using the
- * same file pointer (|dup(2)| and |fork(2)| just duplicate the
- * file handle but not the pointer)).
- */
- while ((sz = pread(fd_in, b, sizeof(b), fpos)) > 0)
- {
- fpos += sz;
- write(fd_out, b, sz);
- }
-
- if (childDone)
- break;
-
- (void)select(0, NULL, NULL, NULL, &timeout);
- }
-}
-
-/*
- * SendFileToCommand takes three character pointers - the file name,
- * the command to execute,
- * and the "argv" style NULL-terminated vector of arguments for the command.
- * The command is exec'd, and the file contents are sent to the command
- * via stdin.
- *
- * WARNING: This function will try to adopt the userId of the supplied
- * user name prior to exec'ing the supplied command.
- */
-static void
-SendFileToCommand(
- XpContextPtr pContext,
- char *fileName,
- char *pCommand,
- char **argVector,
- char *userName)
-{
- pid_t childPid;
- int pipefd[2];
- int status;
- struct stat statBuf;
- FILE *fp, *outPipe;
- FILE *resFp; /* output from launched command */
- int resfd;
-
- resFp = tmpfile();
- if (resFp == NULL)
- {
- ErrorF("SendFileToCommand: Cannot open temporary file for command output\n");
- return;
- }
- resfd = fileno(resFp);
-
- if(pipe(pipefd))
- {
- ErrorF("SendFileToCommand: Cannot open pipe\n");
- fclose(resFp);
- return;
- }
-
- if(stat(fileName, &statBuf) < 0 || (int)statBuf.st_size == 0)
- {
- close(pipefd[0]);
- close(pipefd[1]);
- fclose(resFp);
- return;
- }
-
- fp = fopen(fileName, "r");
- if(fp == (FILE *)NULL)
- {
- ErrorF("SendFileToCommand: Cannot open scratch spool file '%s'\n", fileName);
- close(pipefd[0]);
- close(pipefd[1]);
- fclose(resFp);
- return;
- }
-
- if((childPid = fork()) == 0)
- {
- close(pipefd[1]);
-
- /* Replace current stdin with input from the pipe */
- close(STDIN_FILENO);
- dup(pipefd[0]);
- close(pipefd[0]);
-
- /* Close current stdout and redirect it to resfd */
- close(STDOUT_FILENO);
- dup(resfd);
-
- /* Close current stderr and redirect it to resfd
- * (valgrind may not like that, in this case simply start it using
- * % valgrind 50>/dev/tty --logfile-fd=50 <more-options> ./Xprt ... #)
- */
- close(STDERR_FILENO);
- dup(resfd);
-
- fclose(resFp);
-
- /*
- * If a user name is specified, try to set our uid to match that
- * user name. This is to allow e.g. a banner page to show the
- * name of the printing user rather than the user who started
- * the print server.
- */
- if(userName)
- {
- uid_t myUid;
-
- if((myUid = geteuid()) == (uid_t)0)
- {
- struct passwd *pPasswd;
-
- if((pPasswd = getpwnam(userName)))
- {
- if (setgid((gid_t)pPasswd->pw_gid) != 0)
- perror("SendFileToCommand: setgid() failure.");
-
- if (initgroups(userName, (gid_t)pPasswd->pw_gid) != 0)
- perror("SendFileToCommand: initgroups() failure.");
-
- if (setuid((uid_t)pPasswd->pw_uid) != 0)
- perror("SendFileToCommand: setuid() failure.");
- }
- }
- }
- /* return BadAlloc? */
- if (execv(pCommand, argVector) == -1) {
- FatalError("unable to exec '%s'", pCommand);
- }
- }
- else
- {
- (void) close(pipefd[0]);
-
- outPipe = fdopen(pipefd[1], "w");
- (void) TransferBytes(fp, outPipe, (int)statBuf.st_size);
-
- (void) fclose(outPipe);
- (void) fclose(fp);
-
- /* Wait for spooler child (and send all it's output to stderr) */
- Tailf(resfd, STDERR_FILENO, childPid, &status);
-
- if (status != EXIT_SUCCESS)
- {
- ErrorF("SendFileToCommand: spooler command returned non-zero status %d.\n", status);
- }
-
- /* Store "xp-spooler-command-results" XPJobAttr that the
- * client can fetch it on demand */
- if ((fstat(resfd, &statBuf) >= 0) && (statBuf.st_size >= 0))
- {
- long bufSize;
- char *buf;
-
- bufSize = statBuf.st_size;
-
- /* Clamp buffer size to 4MB to prevent that we allocate giant
- * buffers if the spooler goes mad and spams it's stdout/stderr
- * channel. */
- bufSize = MIN(bufSize, 4*1024*1024);
-
- buf = xalloc(bufSize+1);
- if (buf != NULL)
- {
- bufSize = pread(resfd, buf, bufSize, 0);
- buf[bufSize]='\0';
-
- /* XXX: This should be converted from local multibyte encoding to
- * Compound Text encoding first */
- XpPutOneAttribute(pContext, XPJobAttr, "xp-spooler-command-results", buf);
-
- xfree(buf);
- }
- }
- else
- {
- ErrorF("SendFileToCommand: fstat() failed.\n");
- }
-
- fclose(resFp);
- }
- return;
-}
-
-/*
- * ReplaceAllKeywords causes all the predefined keywords (e.g. %options%)
- * to be replaced with the appropriate values derived from the attribute
- * store for the supplied print context. The ReplaceAnyString utility
- * routine is used to perform the actual replacements.
- */
-
-static char *
-ReplaceAllKeywords(
- XpContextPtr pContext,
- char *command)
-{
- char *cmdOpt;
-
- cmdOpt = XpGetOneAttribute(pContext, XPPrinterAttr,
- "xp-spooler-printer-name");
- if(cmdOpt != (char *)NULL && strlen(cmdOpt) != 0)
- command = ReplaceAnyString(command, "%printer-name%", cmdOpt);
- else
- command = ReplaceAnyString(command, "%printer-name%",
- pContext->printerName);
-
- cmdOpt = XpGetOneAttribute(pContext, XPDocAttr, "copy-count");
- if(cmdOpt != (char *)NULL && strlen(cmdOpt) != 0)
- command = ReplaceAnyString(command, "%copy-count%", cmdOpt);
- else
- command = ReplaceAnyString(command, "%copy-count%", "1");
-
- cmdOpt = XpGetOneAttribute(pContext, XPJobAttr, "job-name");
- if(cmdOpt != (char *)NULL && strlen(cmdOpt) != 0)
- command = ReplaceAnyString(command, "%job-name%", cmdOpt);
- else
- command = ReplaceAnyString(command, "%job-name%", "");
-
- cmdOpt = XpGetOneAttribute(pContext, XPJobAttr, "job-owner");
- if(cmdOpt != (char *)NULL && strlen(cmdOpt) != 0)
- command = ReplaceAnyString(command, "%job-owner%", cmdOpt);
- else
- command = ReplaceAnyString(command, "%job-owner%", "");
-
- cmdOpt = XpGetOneAttribute(pContext, XPJobAttr,
- "xp-spooler-command-options");
- if(cmdOpt != (char *)NULL && strlen(cmdOpt) != 0)
- command = ReplaceAnyString(command, "%options%", cmdOpt);
- else
- command = ReplaceAnyString(command, "%options%", "");
-
- /* New in xprint.mozdev.org release 007 - replace "%xpconfigdir%" with
- * location of $XPCONFIGDIR */
- command = ReplaceAnyString(command, "%xpconfigdir%", XpGetConfigDirBase());
-
- return command;
-}
-
-#ifdef __QNX__
-#define toascii( c ) ((unsigned)(c) & 0x007f)
-#endif
-
-#if defined(CSRG_BASED) || \
- defined(linux) || \
- defined(__CYGWIN__) || \
- (defined(sun) && !defined(SVR4)) || \
- (defined(SVR4) && !defined(sun) && !defined(__UNIXWARE__)) || \
- defined(__UNIXOS2__) || \
- defined(ISC) || \
- defined(Lynx) || \
- defined(__QNX__) || \
- defined(__DARWIN__)
-#define iswspace(c) (isascii(c) && isspace(toascii(c)))
-#endif
-
-/*
- * GetToken - takes in a string and returns a malloc'd copy of the
- * first non-white-space sequence of characters in the string.
- * It returns the number of _bytes_ (NOT characters) parsed through
- * the inStr to get to the end of the returned token.
- */
-static int
-GetToken(
- char *inStr,
- char **outStr)
-{
- size_t mbCurMax = MB_CUR_MAX;
- wchar_t curChar;
- int i, numBytes, byteLen = strlen(inStr);
- char *tok;
-
- /*
- * read through any leading white space.
- */
- for(i = 0, numBytes = 0; i < byteLen; i += numBytes)
- {
- numBytes = mbtowc(&curChar, &inStr[i], mbCurMax);
- if(!iswspace(curChar))
- break;
- }
- tok = inStr + i;
-
- /*
- * find the end of the token.
- */
- byteLen = strlen(tok);
- for(i = 0, numBytes = 0; i < byteLen; i += numBytes)
- {
- numBytes = mbtowc(&curChar, &tok[i], mbCurMax);
- if(iswspace(curChar))
- break;
- }
-
- if((*outStr = (char *)xalloc(i + 1)) == (char *)NULL)
- return 0;
- strncpy(*outStr, tok, i);
- (*outStr)[i] = (char)'\0';
- return (tok + i) - inStr;
-}
-
-static void
-FreeVector(
- char **vector)
-{
- int i;
-
- if(vector == (char **)NULL) return;
-
- for(i = 0; vector[i] != (char *)NULL; i++)
- xfree(vector[i]);
- xfree(vector);
-}
-
-
-/*
- * AddVector appends the pAddition arg vector to the pTarget arg vector.
- * If the pTarget cannot be realloc'd, then pTarget is set to NULL.
- */
-static void
-AddVector(
- char ***pTarget,
- char **pAddition)
-{
- int numTarget, numAdd, i;
-
- for(numTarget = 0; (*pTarget)[numTarget] != (char *)NULL; numTarget++)
- ;
- for(numAdd = 0; pAddition[numAdd] != (char *)NULL; numAdd++)
- ;
-
- *pTarget = (char **)xrealloc((void *)*pTarget, (numTarget + numAdd + 1) *
- sizeof(char *));
- if(*pTarget == (char **)NULL)
- return;
- for(i = 0; i < numAdd; i++)
- (*pTarget)[numTarget + i] = pAddition[i];
-
- (*pTarget)[numTarget + numAdd] = (char *)NULL;
-}
-
-static char **
-BuildArgVector(
- char *argString,
- XpContextPtr pContext)
-{
- char **pVector;
- char *curTok;
- int numChars, i;
- static int beenHere = 0; /* prevent recursion on embedded %options%
- */
-
- pVector = (char **)xalloc(sizeof(char *));
- pVector[0] = (char *)NULL;
- for(i = 0; (numChars = GetToken(argString, &curTok)) != 0;
- i++, argString += numChars)
- {
- if(beenHere || strcmp(curTok, "%options%"))
- {
- if(curTok[0] == (char)'\0')
- {
- xfree(curTok);
- }
- else
- {
- pVector = (char **)xrealloc((void *)pVector,
- (i + 2)*sizeof(char *));
- if(pVector == (char **)NULL)
- return (char **)NULL;
- pVector[i] = curTok;
- pVector[i + 1] = (char *)NULL;
- }
- }
- else if(!beenHere)
- {
- char **optionsVec;
-
- curTok = ReplaceAllKeywords(pContext, curTok);
- beenHere = 1;
- optionsVec = BuildArgVector(curTok, pContext);
- xfree(curTok);
- beenHere = 0;
- AddVector(&pVector, optionsVec);
- xfree(optionsVec);
- }
- }
- if(numChars == 0 && curTok != (char *)NULL)
- xfree(curTok);
- return pVector;
-}
-
-/*
- * VectorizeCommand takes a string and breaks it into a command name and
- * an array of character pointers suitable for handing to execv. The
- * array is NULL-terminated.
- * The returned char * is the command name, and should be freed when no
- * longer needed. The array elements returned in the pVector parameter
- * should be individually freed, and the array itself should also be
- * freed when no longer needed.
- */
-static char *
-VectorizeCommand(
- char *command,
- char ***pVector,
- XpContextPtr pContext)
-{
- char *cmdName, *curTok;
- int i, numChars;
-
- if(command == (char *)NULL)
- return (char *)NULL;
-
- numChars = GetToken(command, &cmdName);
-
- if(cmdName == (char *)NULL)
- return (char *)NULL;
-
- /* Mangle the command name, too... */
- cmdName = ReplaceAllKeywords(pContext, cmdName);
-
- if(cmdName == (char *)NULL)
- return (char *)NULL;
-
- *pVector = BuildArgVector(command, pContext);
-
- return cmdName;
-}
-
-int
-XpSubmitJob(fileName, pContext)
- char *fileName;
- XpContextPtr pContext;
-{
- char **vector, *cmdNam, *cmdOpt, *command, *userName;
- int i;
-
- command = XpGetOneAttribute(pContext, XPPrinterAttr, "xp-spooler-command");
- if(command == (char *)NULL || strlen(command) == 0)
- {
- if( spooler_type )
- {
- command = strdup(spooler_type->spool_command);
- }
- else
- {
- ErrorF("XpSubmitJob: No default spool command defined.\n");
- }
- }
- else
- {
- command = strdup(command);
- }
- if(command == (char *)NULL)
- {
- ErrorF("XpSubmitJob: No spooler command found, cannot submit job.\n");
- return BadAlloc;
- }
-
- cmdNam = VectorizeCommand(command, &vector, pContext);
- xfree(command);
-
- if(cmdNam == (char *)NULL)
- return BadAlloc;
-
- for(i = 0; vector[i] != (char *)NULL; i++)
- {
- vector[i] = ReplaceAllKeywords(pContext, vector[i]);
- if(vector[i] == (char *)NULL)
- {
- xfree(cmdNam);
- for(i = 0; vector[i] != (char *)NULL; i++)
- xfree(vector[i]);
- xfree(vector);
- return BadAlloc;
- }
- }
-
- userName = XpGetOneAttribute(pContext, XPJobAttr, "job-owner");
- if(userName != (char *)NULL && strlen(userName) == 0)
- userName = (char *)NULL;
-
- SendFileToCommand(pContext, fileName, cmdNam, vector, userName);
-
- FreeVector(vector);
- xfree(cmdNam);
-
- return Success;
-}
-
-/*
- * SearchInputTrays()
- *
- * Given a tray, return the medium in the tray. Conversely, given a
- * medium, return a tray in which it can be found. In either case,
- * return NULL if the given tray or medium cannot be found.
- */
-#define TRAY 0
-#define MEDIUM 1
-
-static char *
-SearchInputTrays(XpContextPtr pCon,
- int which,
- char *val)
-{
- char *inputTraysMedium, tray[80], medium[80], *copy;
- char *pS, *pE, *pLast;
-
- inputTraysMedium = XpGetOneAttribute( pCon, XPPrinterAttr,
- "input-trays-medium" );
-
- copy = strdup( inputTraysMedium );
- pS = copy;
- pLast = copy + strlen( copy );
-
- while( pS < pLast )
- {
- while( *pS && *pS != '{' )
- pS++;
-
- pE = ++pS;
- while( *pE && *pE != '}' )
- pE++;
- *pE = '\0';
-
- sscanf( pS, "%s %s", tray, medium );
-
- if( which == MEDIUM && !strcmp( val, medium ) )
- {
- xfree( copy );
- return strdup( tray );
- }
-
- if( which == TRAY && !strcmp( val, tray ) )
- {
- xfree( copy );
- return strdup( medium );
- }
-
- pS = pE + 1;
- }
-
- xfree( copy );
- return strdup( NULL_STRING );
-}
-
-/*
- * XpGetTrayMediumFromContext()
- *
- * Given a print context, hit the input-trays-medium,
- * default-input-tray and default-medium attributes to find the
- * appropriate tray to use, and the medium in that tray.
- */
-void
-XpGetTrayMediumFromContext(XpContextPtr pCon,
- char **medium,
- char **tray)
-{
- char *defMedium, *defTray;
- char *t, *m;
- char *pS, *pE, *pLast;
-
- defMedium = XpGetOneAttribute( pCon, XPPageAttr,
- "default-medium" );
- if( *defMedium == '\0' )
- defMedium = XpGetOneAttribute( pCon, XPDocAttr,
- "default-medium" );
-
- defTray = XpGetOneAttribute( pCon, XPPageAttr,
- "default-input-tray" );
- if( *defTray == '\0' )
- defTray = XpGetOneAttribute( pCon, XPDocAttr,
- "default-input-tray" );
-
- /*
- * First, check to see if the default tray has the default medium
- * installed. This is the ideal case.
- */
- m = SearchInputTrays( pCon, TRAY, defTray );
- if( !strcmp( m, defMedium ) )
- {
- xfree( m );
- *tray = strdup( defTray );
- *medium = strdup( defMedium );
- return;
- }
-
- /*
- * If the default tray doesn't have the default medium, search for
- * a tray which has the default medium.
- */
- t = SearchInputTrays( pCon, MEDIUM, defMedium );
- if( t )
- {
- *tray = t;
- *medium = strdup( defMedium );
- return;
- }
-
- /*
- * If all else fails, just return the default tray, and whatever
- * medium happens to be there. Note that we simply return
- * whatever is in the attribute store. Any further correction is
- * left up to the DDX driver.
- */
- *tray = strdup( defTray );
- *medium = m;
- xfree( t );
-}
diff --git a/nx-X11/programs/Xserver/Xprint/attributes.h b/nx-X11/programs/Xserver/Xprint/attributes.h
deleted file mode 100644
index 40df4fd0b..000000000
--- a/nx-X11/programs/Xserver/Xprint/attributes.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/* $Xorg: attributes.h,v 1.4 2001/03/14 18:42:44 pookie Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _Xp_attributes_h
-#define _Xp_attributes_h 1
-
-#include "scrnintstr.h"
-#include "AttrValid.h"
-
-#define BFuncArgs int ndx, ScreenPtr pScreen, int argc, char **argv
-typedef Bool (*pBFunc)(BFuncArgs);
-
-#define VFuncArgs char *name, XpValidatePoolsRec *pValRec, float *width, float *height, int *res
-typedef void (*pVFunc)(VFuncArgs);
-
-/*
- * attributes.c
- */
-void XpInitAttributes(XpContextPtr pContext);
-void XpBuildAttributeStore(char *printerName,
- char *qualifierName);
-void XpAddPrinterAttribute(char *printerName,
- char *printerQualifier,
- char *attributeName,
- char *attributeValue);
-void XpDestroyAttributes(XpContextPtr pContext);
-char *XpGetConfigDir(Bool useLocale);
-char *XpGetOneAttribute(XpContextPtr pContext,
- XPAttributes class,
- char *attributeName);
-void XpPutOneAttribute(XpContextPtr pContext,
- XPAttributes class,
- const char* attributeName,
- const char* value);
-int XpRehashAttributes(void);
-char *XpGetAttributes(XpContextPtr pContext,
- XPAttributes class);
-int XpAugmentAttributes(XpContextPtr pContext,
- XPAttributes class,
- char *attributes);
-int XpSetAttributes(XpContextPtr pContext,
- XPAttributes class,
- char *attributes);
-const char *XpGetPrinterAttribute(const char *printerName,
- const char *attribute);
-void XpGetTrayMediumFromContext(XpContextPtr pCon,
- char **medium,
- char **tray);
-int XpSubmitJob(char *fileName, XpContextPtr pContext);
-
-/*
- * mediaSizes.c
- */
-int XpGetResolution(XpContextPtr pContext);
-XpOid XpGetContentOrientation(XpContextPtr pContext);
-XpOid XpGetAvailableCompression(XpContextPtr pContext);
-XpOid XpGetPlex(XpContextPtr pContext);
-XpOid XpGetPageSize(XpContextPtr pContext,
- XpOid* pTray,
- const XpOidMediumSS* msss);
-void XpGetMediumMillimeters(XpOid page_size,
- float *width,
- float *height);
-void XpGetMediumDimensions(XpContextPtr pContext,
- unsigned short *width,
- unsigned short *height);
-void XpGetReproductionArea(XpContextPtr pContext,
- xRectangle *pRect);
-void XpGetMaxWidthHeightRes(const char *printer_name,
- const XpValidatePoolsRec* vpr,
- float *width,
- float *height,
- int* resolution);
-
-/* Util.c */
-char *ReplaceAnyString(char *string,
- char *target,
- char *replacement);
-char *ReplaceFileString(char *string,
- char *inFileName,
- char *outFileName);
-int TransferBytes(FILE *pSrcFile,
- FILE *pDstFile,
- int numBytes);
-Bool CopyContentsAndDelete(FILE **ppSrcFile,
- char **pSrcFileName,
- FILE *pDstFile);
-int XpSendDocumentData(ClientPtr client,
- FILE *fp,
- int fileLen,
- int maxBufSize);
-int XpFinishDocData(ClientPtr client);
-Bool XpOpenTmpFile(char *mode,
- char **fname,
- FILE **stream);
-
-#endif /* _Xp_attributes_h */
diff --git a/nx-X11/programs/Xserver/Xprint/ddxInit.c b/nx-X11/programs/Xserver/Xprint/ddxInit.c
deleted file mode 100644
index be16a3799..000000000
--- a/nx-X11/programs/Xserver/Xprint/ddxInit.c
+++ /dev/null
@@ -1,397 +0,0 @@
-/* $Xorg: ddxInit.c,v 1.3 2000/08/17 19:48:07 cpqbld Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xos.h>
-#include <X11/Xproto.h>
-#include "windowstr.h"
-#include "servermd.h"
-#include "DiPrint.h"
-
-/*-
- *-----------------------------------------------------------------------
- * InitOutput --
- * If this is built as a print-only server, then we must supply
- * an InitOutput routine. If a normal server's real ddx InitOutput
- * is used, then it should call PrinterInitOutput if it so desires.
- * The ddx-level hook is needed to allow the printer stuff to
- * create additional screens. An extension can't reliably do
- * this for two reasons:
- *
- * 1) If InitOutput doesn't create any screens, then main()
- * exits before calling InitExtensions().
- *
- * 2) Other extensions may rely on knowing about all screens
- * when they initialize, and we can't guarantee the order
- * of extension initialization.
- *
- * Results:
- * ScreenInfo filled in, and PrinterInitOutput is called to create
- * the screens associated with printers.
- *
- * Side Effects:
- * None
- *
- *-----------------------------------------------------------------------
- */
-
-void
-InitOutput(
- ScreenInfo *pScreenInfo,
- int argc,
- char **argv)
-
-{
- int i;
-
- pScreenInfo->imageByteOrder = IMAGE_BYTE_ORDER;
- pScreenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
- pScreenInfo->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
- pScreenInfo->bitmapBitOrder = BITMAP_BIT_ORDER;
-
- pScreenInfo->numPixmapFormats = 0; /* get them in PrinterInitOutput */
- screenInfo.numVideoScreens = 0;
-}
-
-static void
-BellProc(
- int volume,
- DeviceIntPtr pDev)
-{
- return;
-}
-
-static void
-KeyControlProc(
- DeviceIntPtr pDev,
- KeybdCtrl *ctrl)
-{
- return;
-}
-
-static KeySym printKeyMap[256];
-static CARD8 printModMap[256];
-
-static int
-KeyboardProc(
- DevicePtr pKbd,
- int what,
- int argc,
- char *argv[])
-{
- KeySymsRec keySyms;
-
- keySyms.minKeyCode = 8;
- keySyms.maxKeyCode = 8;
- keySyms.mapWidth = 1;
- keySyms.map = printKeyMap;
-
- switch(what)
- {
- case DEVICE_INIT:
- InitKeyboardDeviceStruct(pKbd, &keySyms, printModMap,
- (BellProcPtr)BellProc,
- KeyControlProc);
- break;
- case DEVICE_ON:
- break;
- case DEVICE_OFF:
- break;
- case DEVICE_CLOSE:
- break;
- }
- return Success;
-}
-
-#include "../mi/mipointer.h"
-static int
-PointerProc(
- DevicePtr pPtr,
- int what,
- int argc,
- char *argv[])
-{
-#define NUM_BUTTONS 1
- CARD8 map[NUM_BUTTONS];
-
- switch(what)
- {
- case DEVICE_INIT:
- {
- map[0] = 0;
- InitPointerDeviceStruct(pPtr, map, NUM_BUTTONS,
- miPointerGetMotionEvents,
- (PtrCtrlProcPtr)_XpVoidNoop,
- miPointerGetMotionBufferSize());
- break;
- }
- case DEVICE_ON:
- break;
- case DEVICE_OFF:
- break;
- case DEVICE_CLOSE:
- break;
- }
- return Success;
-}
-
-void
-InitInput(
- int argc,
- char **argv)
-{
- DevicePtr ptr, kbd;
-
- ptr = AddInputDevice((DeviceProc)PointerProc, TRUE);
- kbd = AddInputDevice((DeviceProc)KeyboardProc, TRUE);
- RegisterPointerDevice(ptr);
- RegisterKeyboardDevice(kbd);
- return;
-}
-
-
-Bool
-LegalModifier(
- unsigned int key,
- DevicePtr dev)
-{
- return TRUE;
-}
-
-void
-ProcessInputEvents(void)
-{
-}
-
-#ifdef __DARWIN__
-#include "micmap.h"
-
-void GlxExtensionInit(void);
-void GlxWrapInitVisuals(miInitVisualsProcPtr *procPtr);
-
-void
-DarwinHandleGUI(int argc, char *argv[])
-{
-}
-
-void DarwinGlxExtensionInit(void)
-{
- GlxExtensionInit();
-}
-
-void DarwinGlxWrapInitVisuals(
- miInitVisualsProcPtr *procPtr)
-{
- GlxWrapInitVisuals(procPtr);
-}
-#endif
-
-#ifdef DDXOSINIT
-void
-OsVendorInit(void)
-{
-}
-#endif
-
-#ifdef DDXOSFATALERROR
-void
-OsVendorFatalError(void)
-{
-}
-#endif
-
-void
-ddxBeforeReset(void)
-{
- return;
-}
-
-#ifdef DDXTIME
-CARD32
-GetTimeInMillis(void)
-{
- struct timeval tp;
-
- X_GETTIMEOFDAY(&tp);
- return(tp.tv_sec * 1000) + (tp.tv_usec / 1000);
-}
-#endif
-
-/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
-void ddxInitGlobals(void)
-{
- PrinterInitGlobals();
-}
-
-/****************************************
-* ddxUseMsg()
-*
-* Called my usemsg from os/utils/c
-*
-*****************************************/
-
-void ddxUseMsg(void)
-{
-}
-
-void AbortDDX (void)
-{
-}
-
-void ddxGiveUp(void) /* Called by GiveUp() */
-{
-}
-
-int
-ddxProcessArgument (
- int argc,
- char *argv[],
- int i)
-{
- return(0);
-}
-
-#ifdef XINPUT
-
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#include "XIstubs.h"
-
-extern int BadDevice;
-
-int
-ChangePointerDevice (
- DeviceIntPtr old_dev,
- DeviceIntPtr new_dev,
- unsigned char x,
- unsigned char y)
-{
- return (BadDevice);
-}
-
-int
-ChangeDeviceControl (
- register ClientPtr client,
- DeviceIntPtr dev,
- xDeviceCtl *control)
-{
- return BadMatch;
-}
-
-void
-OpenInputDevice (
- DeviceIntPtr dev,
- ClientPtr client,
- int *status)
-{
- return;
-}
-
-void
-AddOtherInputDevices (void)
-{
- return;
-}
-
-void
-CloseInputDevice (
- DeviceIntPtr dev,
- ClientPtr client)
-{
- return;
-}
-
-int
-ChangeKeyboardDevice (
- DeviceIntPtr old_dev,
- DeviceIntPtr new_dev)
-{
- return (Success);
-}
-
-int
-SetDeviceMode (
- register ClientPtr client,
- DeviceIntPtr dev,
- int mode)
-{
- return BadMatch;
-}
-
-int
-SetDeviceValuators (
- register ClientPtr client,
- DeviceIntPtr dev,
- int *valuators,
- int first_valuator,
- int num_valuators)
-{
- return BadMatch;
-}
-
-
-#endif /* XINPUT */
-
-#ifdef XTESTEXT1
-
-void
-XTestJumpPointer(int x, int y, int dev)
-{
- return;
-}
-
-void
-XTestGetPointerPos(int x, int y)
-{
- return;
-}
-
-void
-XTestGenerateEvent(int dev, int keycode, int keystate, int x, int y)
-{
- return;
-}
-
-#endif /* XTESTEXT1 */
-
-#ifdef AIXV3
-/*
- * This is just to get the server to link on AIX, where some bits
- * that should be in os/ are instead in hw/ibm.
- */
-int SelectWaitTime = 10000; /* usec */
-#endif
diff --git a/nx-X11/programs/Xserver/Xprint/etc/Imakefile b/nx-X11/programs/Xserver/Xprint/etc/Imakefile
deleted file mode 100644
index 6a6e02a29..000000000
--- a/nx-X11/programs/Xserver/Xprint/etc/Imakefile
+++ /dev/null
@@ -1,24 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/10/31 14:42:52 gisburn Exp $
-#define IHaveSubdirs
-#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
-
-XCOMM Check if OS has /etc/profile.d/
-XCOMM Note that Debian Linux does not have /etc/profile.d/
-#ifndef HasEtcProfileDir
-# ifdef LinuxArchitecture
-# if (LinuxDistribution != LinuxDebian) || BuildFullXprintDistrib
-# define HasEtcProfileDir YES
-# endif
-# else
-# define HasEtcProfileDir NO
-# endif
-#endif
-
-#if HasEtcProfileDir
-SUBDIRS = init.d profile.d Xsession.d
-#else
-SUBDIRS = init.d Xsession.d
-#endif
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
diff --git a/nx-X11/programs/Xserver/Xprint/etc/Xsession.d/Imakefile b/nx-X11/programs/Xserver/Xprint/etc/Xsession.d/Imakefile
deleted file mode 100644
index 55a07175e..000000000
--- a/nx-X11/programs/Xserver/Xprint/etc/Xsession.d/Imakefile
+++ /dev/null
@@ -1,24 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2003/01/25 14:42:52 gisburn Exp $
-
-#if NothingOutsideProjectRoot
-#define EtcDir ProjectRoot/etc
-#else
-#define EtcDir /etc
-#endif
-
-ETCDIR = EtcDir
-
-all::
-
-XCOMM Install glue for Xprint on Solaris/CDE1.x and CDE on AIX
-#if (defined(SunArchitecture) && (OSMajorVersion > 4)) || defined(IBMArchitecture)
-InstallNamedProg(cde_xsessiond_xprint.sh,0018.xprint,/usr/dt/config/Xsession.d)
-#endif
-
-XCOMM Install xdm startup glue for Xprint on Linux. Note that not all Linux
-XCOMM platforms have /etc/X11/Xsession.d/ and/or /etc/X11/xinit/xinitrc.d
-XCOMM (see http://xprint.freedesktop.org/cgi-bin/bugzilla/show_bug.cgi?id=182)
-#if defined(LinuxDistribution)
-InstallNamedProg(cde_xsessiond_xprint.sh,92xprint-xpserverlist.sh,$(ETCDIR)/X11/Xsession.d)
-InstallNamedProg(cde_xsessiond_xprint.sh,92xprint-xpserverlist.sh,$(ETCDIR)/X11/xinit/xinitrc.d)
-#endif
diff --git a/nx-X11/programs/Xserver/Xprint/etc/Xsession.d/cde_xsessiond_xprint.sh b/nx-X11/programs/Xserver/Xprint/etc/Xsession.d/cde_xsessiond_xprint.sh
deleted file mode 100644
index 3fb6bba7c..000000000
--- a/nx-X11/programs/Xserver/Xprint/etc/Xsession.d/cde_xsessiond_xprint.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-#####################################################################
-### File: 0018.xprint
-###
-### Default Location: /usr/dt/config/Xsession.d/
-###
-### Purpose: Setup Xprint env vars
-###
-### Description: This script is invoked by means of the Xsession file
-### at user login.
-###
-### Invoked by: /usr/dt/bin/Xsession
-###
-### (c) Copyright 2003-2004 Roland Mainz <roland.mainz@nrubsig.org>
-###
-### please send bugfixes or comments to http://xprint.mozdev.org/
-###
-#####################################################################
-
-
-#
-# Obtain list of Xprint servers
-#
-
-if [ -f "/etc/init.d/xprint" ] ; then
- XPSERVERLIST="`/bin/sh /etc/init.d/xprint get_xpserverlist`"
- export XPSERVERLIST
-fi
-
-########################## eof #####################
diff --git a/nx-X11/programs/Xserver/Xprint/etc/init.d/Imakefile b/nx-X11/programs/Xserver/Xprint/etc/init.d/Imakefile
deleted file mode 100644
index dedefb199..000000000
--- a/nx-X11/programs/Xserver/Xprint/etc/init.d/Imakefile
+++ /dev/null
@@ -1,97 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.2 2003/01/20 17:02:01 gisburn Exp $
-
-all:: xprint
-
-#if BuildGISWxprintglue
-XPCUSTOMGLUE=GISWxprintglue
-#elif BuildGISWxprint
-XPCUSTOMGLUE = GISWxprint
-#elif BuildDebianXprintPackage
-XPCUSTOMGLUE = DebianGlue
-#else
-XPCUSTOMGLUE = default
-#endif
-
-#if defined(SunArchitecture)
-OS_DEFINES = -DOS_SOLARIS
-#elif defined(LinuxArchitecture)
-OS_DEFINES = -DOS_LINUX
-#elif defined(AIXArchitecture)
-OS_DEFINES = -DOS_AIX
-#else
-OS_DEFINES =
-#endif
-
-#if NothingOutsideProjectRoot
-#define EtcDir ProjectRoot/etc
-#else
-#define EtcDir /etc
-#endif
-
-ETCDIR = EtcDir
-
-MakeScriptFromCpp(xprint, -DDEF_XPCUSTOMGLUE=$(XPCUSTOMGLUE) $(OS_DEFINES) -DProjectRoot=$(PROJECTROOT))
-
-#if defined(FreeBSDArchitecture)
-InstallNamedProg(xprint,xprint,$(PROJECTROOT)/etc/rc.d)
-#else
-XCOMM Solaris, Linux, etc.
-InstallNamedProg(xprint,xprint,$(ETCDIR)/init.d)
-#endif
-
-XCOMM Create startup/shutdown links in /etc/init.d/ for Solaris
-#if defined(SunArchitecture) && (OSMajorVersion > 4)
-
-#define InstallStartupLink(rcdir,script,linkname) \
- MakeDir($(DESTDIR)$(ETCDIR)/rcdir) ; \
- RemoveFile($(DESTDIR)$(ETCDIR)/rcdir/linkname) ; \
- ln -s ../init.d/script $(DESTDIR)$(ETCDIR)/rcdir/linkname
-
-install::
- InstallStartupLink(rc0.d,xprint,K38xprint)
- InstallStartupLink(rc1.d,xprint,K38xprint)
- InstallStartupLink(rc2.d,xprint,S81xprint)
- InstallStartupLink(rcS.d,xprint,K38xprint)
-#endif /* defined(SunArchitecture) && (OSMajorVersion > 4) */
-
-XCOMM Create startup/shutdown links in /etc/init.d/ for Linux
-#if defined(LinuxDistribution)
-# if (LinuxDistribution == LinuxSuSE) || \
- (LinuxDistribution == LinuxDebian) || \
- (LinuxDistribution == LinuxUnknown)
-XCOMM SuSE Linux(-like)
-
-#define InstallStartupLink(rcdir,script,linkname) \
- MakeDir($(DESTDIR)$(ETCDIR)/rc.d/rcdir) ; \
- ln -sf ../script $(DESTDIR)$(ETCDIR)/rc.d/rcdir/linkname
-
-install::
- echo "# Installing /etc/init.d links for SuSE Linux(-like)"
- InstallStartupLink(rc2.d,xprint,K21xprint)
- InstallStartupLink(rc2.d,xprint,S21xprint)
- InstallStartupLink(rc3.d,xprint,K21xprint)
- InstallStartupLink(rc3.d,xprint,S21xprint)
- InstallStartupLink(rc5.d,xprint,K21xprint)
- InstallStartupLink(rc5.d,xprint,S21xprint)
-# elif LinuxDistribution == LinuxRedHat
-XCOMM RedHat Linux(-like)
-
-#define InstallStartupLink(rcdir,script,linkname) \
- MakeDir($(DESTDIR)$(ETCDIR)/rcdir) ; \
- ln -sf ../init.d/script $(DESTDIR)$(ETCDIR)/rcdir/linkname
-
-install::
- echo "# Installing /etc/init.d links for RedHat Linux(-like)"
- InstallStartupLink(rc0.d,xprint,K61xprint)
- InstallStartupLink(rc1.d,xprint,K61xprint)
- InstallStartupLink(rc2.d,xprint,S61xprint)
- InstallStartupLink(rc3.d,xprint,S61xprint)
- InstallStartupLink(rc4.d,xprint,S61xprint)
- InstallStartupLink(rc5.d,xprint,S61xprint)
- InstallStartupLink(rc6.d,xprint,K61xprint)
-# else
-install::
- echo "WARNING: No links for /etc/init.d/xprint set."
-# endif /* LinuxDistribution == * */
-#endif /* defined(LinuxArchitecture) */
-
diff --git a/nx-X11/programs/Xserver/Xprint/etc/init.d/xprint.cpp b/nx-X11/programs/Xserver/Xprint/etc/init.d/xprint.cpp
deleted file mode 100644
index dbfd1e139..000000000
--- a/nx-X11/programs/Xserver/Xprint/etc/init.d/xprint.cpp
+++ /dev/null
@@ -1,1277 +0,0 @@
-XCOMM!/bin/sh
-XCOMM
-XCOMM Copyright 2002-2004 by Roland Mainz <roland.mainz@nrubsig.org>.
-XCOMM
-XCOMM This script manages the Xprint server side
-
-XCOMM Basic support for IRIX-style "chkconfig"
-XCOMM chkconfig: 2345 61 61
-XCOMM description: Startup/shutdown script for Xprint server(s)
-
-XCOMM Basic support for the Linux Standard Base Specification 1.0.0
-XCOMM (Note: The Should-Start/Stop lines are there so that this works in the
-XCOMM future, when the LSB adopts these. The X-UnitedLinux lines are there
-XCOMM so that it works right now.)
-XCOMM## BEGIN INIT INFO
-XCOMM Provides: xprint
-XCOMM Required-Start: $local_fs $remote_fs $syslog $network
-XCOMM Required-Stop: $local_fs $remote_fs $syslog
-XCOMM Should-Start: cups lpd xfs
-XCOMM Should-Stop: cups lpd xfs
-XCOMM X-UnitedLinux-Should-Start: cups lpd xfs
-XCOMM X-UnitedLinux-Should-Stop: cups lpd xfs
-XCOMM Default-Start: 3 5
-XCOMM Default-Stop: 0 1 2 6
-XCOMM Description: Startup/shutdown script for Xprint server(s)
-XCOMM## END INIT INFO
-
-#undef sun
-#undef unix
-
-XCOMM###########################################################################
-XCOMM
-XCOMM This script has three main tasks:
-XCOMM 1. Start Xprint servers ("Xprt") at boot time.
-XCOMM 2. Shutdown Xprint servers when the machine is being shut down.
-XCOMM 3. Query the list of available printers.
-XCOMM
-XCOMM Additional tasks are:
-XCOMM 4. Restart ('restart'|'force-reload') and conditional restart
-XCOMM ('condrestart'/'try-restart') for Linux support
-XCOMM 5. Wrapping of application call with setting XPSERVERLIST ('wrapper')
-XCOMM
-XCOMM Usage:
-XCOMM - Start Xprint server(s) manually:
-XCOMM % /etc/init.d/xprint start
-XCOMM
-XCOMM - Stop Xprint server(s) manually:
-XCOMM % /etc/init.d/xprint stop
-XCOMM
-XCOMM - Populate $XPSERVERLIST env var (for example as part of a global
-XCOMM login script like /etc/profile or per-user login scripts like
-XCOMM $HOME/.profile (sh/ksh/bash))
-XCOMM % XPSERVERLIST="`/etc/init.d/xprint get_xpserverlist`"
-XCOMM % export XPSERVERLIST
-XCOMM
-XCOMM Installation:
-XCOMM Copy this script to /etc/init.d/xprint and make sure that it is
-XCOMM executable. If your installation is LSB-compliant, then run
-XCOMM % /usr/lib/lsb/install_initd /etc/init.d/xprint
-XCOMM to start the service on startup. Otherwise, manually create links
-XCOMM to the matching run levels.
-XCOMM Examples:
-XCOMM - Solaris 2.7/2.8/2.9:
-XCOMM % cp xprint /etc/init.d/xprint
-XCOMM % chmod a+rx /etc/init.d/xprint
-XCOMM % ln /etc/init.d/xprint /etc/rc0.d/K38xprint
-XCOMM % ln /etc/init.d/xprint /etc/rc1.d/K38xprint
-XCOMM % ln /etc/init.d/xprint /etc/rc2.d/S81xprint
-XCOMM % ln /etc/init.d/xprint /etc/rcS.d/K38xprint
-XCOMM
-XCOMM - SuSE Linux 7.3
-XCOMM % cp xprint /etc/init.d/xprint
-XCOMM % chmod a+rx /etc/init.d/xprint
-XCOMM % ln -s ../xprint /etc/init.d/rc3.d/K13xprint
-XCOMM % ln -s ../xprint /etc/init.d/rc3.d/S12xprint
-XCOMM % ln -s ../xprint /etc/init.d/rc5.d/K13xprint
-XCOMM % ln -s ../xprint /etc/init.d/rc5.d/S12xprint
-XCOMM % ln -s ../xprint /etc/init.d/rc2.d/K13xprint
-XCOMM % ln -s ../xprint /etc/init.d/rc2.d/S12xprint
-XCOMM
-XCOMM - SuSE Linux 6.4:
-XCOMM % cp xprint /sbin/init.d/xprint
-XCOMM % chmod a+rx /sbin/init.d/xprint
-XCOMM % ln -s ../xprint /sbin/init.d/rc2.d/K20xprint
-XCOMM % ln -s ../xprint /sbin/init.d/rc2.d/S20xprint
-XCOMM % ln -s ../xprint /sbin/init.d/rc3.d/K20xprint
-XCOMM % ln -s ../xprint /sbin/init.d/rc3.d/S20xprint
-XCOMM
-XCOMM Notes:
-XCOMM - The Xprint servers must be started _after_ the print
-XCOMM spooler or the server(s) may refuse to start
-XCOMM - The script should be readable by all users to ensure that they
-XCOMM can use the "get_xpserverlist"-option
-XCOMM
-XCOMM Custom configuration:
-XCOMM - Edit the function setup_config() in this script to match your needs
-XCOMM
-XCOMM Known bugs/ToDo/Notes:
-XCOMM - The shell script assumes that a Xserver can be reached via
-XCOMM "hostname:displaynum" where "hostname" is obtained from
-XCOMM "/usr/bin/hostname". It may happen that a kernel firewall
-XCOMM blocks an X connection on the same host (e.g. client && Xserver
-XCOMM are running on the same host).
-XCOMM Suggested fix: Fix the firewall config.
-XCOMM Suggested workaround: Edit this script and replace the use of
-XCOMM /usr/bin/hostname with "echo 'localhost'".
-XCOMM
-XCOMM###########################################################################
-XCOMM
-
-
-XCOMM###########################################################################
-
-fatal_error()
-{
- echo "${0}: ## FATAL ERROR: ${1}" 1>&2
- exit 1
-}
-
-error_echo()
-{
- echo "${0}: ## ERROR: ${1}" 1>&2
-}
-
-warning_echo()
-{
- echo "${0}: ## WARNING: ${1}" 1>&2
-}
-
-verbose_echo()
-{
- echo "${0}: ${1}"
-}
-
-msg()
-{
- echo "${1}"
-}
-
-XCOMM###########################################################################
-
-#ifndef OS_LINUX
-XCOMM Force use of a POSIX conformant sh
-XCOMM (Solaris /sbin/sh is plain Bourne shell)
-[ "$1" != "posix_sh_forced" -a -x /bin/ksh ] && exec /bin/ksh "$0" posix_sh_forced "$@"
-[ "$1" != "posix_sh_forced" -a -x /bin/bash ] && exec /bin/bash --norc --noprofile "$0" posix_sh_forced "$@"
-[ "$1" != "posix_sh_forced" -a -x /usr/local/bin/ksh ] && exec /usr/local/bin/ksh "$0" posix_sh_forced "$@"
-[ "$1" != "posix_sh_forced" -a -x /usr/local/bin/bash ] && exec /usr/local/bin/bash --norc --noprofile "$0" posix_sh_forced "$@"
-if [ "$1" != "posix_sh_forced" ] ; then
- echo "${0}: ## FATAL ERROR: No POSIX-shell found." 1>&2
- exit 1
-fi
-
-shift # Drop "posix_sh_forced"
-#endif /* !OS_LINUX */
-
-XCOMM#debug
-XCOMM set -x
-
-XCOMM Change current dir to a location which is writeable by everyone
-cd /tmp
-
-XCOMM Clear some environment variables
-unset TEMP TMPDIR SCREENDIR
-
-XCOMM Set search path for commands
-export PATH=/usr/bin:/bin:/usr/sbin:/sbin
-#ifdef OS_SOLARIS
-export PATH=/usr/xpg4/bin:${PATH}
-#endif
-
-XCOMM# Try to figure-out where X11 was installed
-#if defined(OS_SOLARIS)
-XPROJECTROOT=/usr/openwin
-export OPENWINHOME=/usr/openwin
-#elif defined(OS_AIX)
-XPROJECTROOT=/usr/lpp/X11
-#else
-#if defined(ProjectRoot)
-[ -d ProjectRoot/bin ] && XPROJECTROOT=ProjectRoot
-#endif
-[ -d /usr/X11/bin ] && XPROJECTROOT=/usr/X11
-[ -d /usr/X11R6/bin ] && XPROJECTROOT=/usr/X11R6
-#endif
-XPCUSTOMGLUE=DEF_XPCUSTOMGLUE # This is used for customizing this script
-export XPROJECTROOT XPCUSTOMGLUE
-
-if [ -z "${XPROJECTROOT}" ] ; then
- fatal_error "Unknown XProjectRoot."
-fi
-
-XCOMM Set the location of the Xprt binary we want to use.
-XPRT_BIN="${XPROJECTROOT}/bin/Xprt"
-
-XCOMM Set the location of the global file where we store the locations
-XCOMM of the system-wide servers
-if [ -d /var/run ] ; then
- XP_GLOBAL_SERVERS=/var/run/Xprint_servers
-else
- XP_GLOBAL_SERVERS=/tmp/.Xprint_servers
-fi
-
-XCOMM ${LOGNAME} will not work if user su'ed into another account
-export CURRLOGNAME="$(id -u -n)"
-
-XCOMM Set location where we want to store the list of Xprint servers managed
-XCOMM by this user
-XCOMM - If we start as "root" use the global file
-XCOMM - If we start as normal user use a per-user file
-
-if [ "${CURRLOGNAME}" != "root" -a "${CURRLOGNAME}" != "" ] ; then
- XP_PER_USER_SERVERS="/tmp/.Xprint_servers_${CURRLOGNAME}"
- XP_SERVERS="${XP_PER_USER_SERVERS}"
-else
- XP_SERVERS="${XP_GLOBAL_SERVERS}"
-fi
-
-XCOMM Set umask that owner can r/w all files and everyone else can read them
-umask 022
-
-XCOMM Bump limit for per-process open files to ensure that Xprt can open many many fonts
-ulimit -n 1024
-
-XCOMM###########################################################################
-
-XCOMM Get list of fonts for a given display
-get_fontlist_from_display()
-{
- ${XPROJECTROOT}/bin/xset -display "${1}" q |
- awk "/Font Path:/ { i=1 ; next } i==1 { print \$0 ; i=0 }" |
- fontpath2fontlist
-}
-
-XCOMM Get list from a fontserver config
-get_fontlist_from_xfs_config()
-{
- if [ ! -r "${1}" ] ; then
- return 0
- fi
-
- (
- cat "${1}" |
- while read -r i ; do
- for val in $i; do
- case $val in
- \#*) break ;;
- ?*=*) key="${val%%=*}" ;;
- =*) key="${tok}" ;;
- *) [ "${key}" = "catalogue" -a "${tok}" != "" ] && echo "${tok}" ;;
- esac
- tok="${val#*=}"
- done
- done
- ) | tr "," "\n" | fontpath2fontlist
-}
-
-get_fontlist_from_all_xfs_configs()
-{
- get_fontlist_from_xfs_config "/etc/openwin/fs/fontserver.cfg"
- get_fontlist_from_xfs_config "/usr/openwin/lib/X11/fontserver.cfg"
- get_fontlist_from_xfs_config "/etc/X11/fs-xtt/config"
- get_fontlist_from_xfs_config "/etc/X11/fs/config"
- get_fontlist_from_xfs_config "/etc/X11/xfs/config"
- get_fontlist_from_xfs_config "${XPROJECTROOT}/lib/X11/fs/config"
-}
-
-get_fontlist_from_xf86config()
-{
- srcxconf=""
-
- XCOMM see xorg.conf(5x) manual page for the list of locations used here
- [ "${srcxconf}" = "" -a -f "/etc/X11/xorg.conf" ] && srcxconf="/etc/X11/xorg.conf"
- [ "${srcxconf}" = "" -a -f "/usr/X11R6/etc/X11/xorg.conf" ] && srcxconf="/usr/X11R6/etc/X11/xorg.conf"
- [ "${srcxconf}" = "" -a -f "/etc/X11/xorg.conf-4" ] && srcxconf="/etc/X11/xorg.conf-4"
- [ "${srcxconf}" = "" -a -f "/etc/X11/xorg.conf" ] && srcxconf="/etc/X11/xorg.conf"
- [ "${srcxconf}" = "" -a -f "/etc/xorg.conf" ] && srcxconf="/etc/xorg.conf"
- [ "${srcxconf}" = "" -a -f "/usr/X11R6/etc/X11/xorg.conf.${hostname}" ] && srcxconf="/usr/X11R6/etc/X11/xorg.conf.${hostname}"
- [ "${srcxconf}" = "" -a -f "/usr/X11R6/etc/X11/xorg.conf-4" ] && srcxconf="/usr/X11R6/etc/X11/xorg.conf-4"
- [ "${srcxconf}" = "" -a -f "/usr/X11R6/etc/X11/xorg.conf" ] && srcxconf="/usr/X11R6/etc/X11/xorg.conf"
- [ "${srcxconf}" = "" -a -f "/usr/X11R6/lib/X11/xorg.conf.${hostname}" ] && srcxconf="/usr/X11R6/lib/X11/xorg.conf.${hostname}"
- [ "${srcxconf}" = "" -a -f "/usr/X11R6/lib/X11/xorg.conf-4" ] && srcxconf="/usr/X11R6/lib/X11/xorg.conf-4"
- [ "${srcxconf}" = "" -a -f "/usr/X11R6/lib/X11/xorg.conf" ] && srcxconf="/usr/X11R6/lib/X11/xorg.conf"
-
- XCOMM Xfree86 locations
- [ "${srcxconf}" = "" -a -f "/etc/X11/XF86Config-4" ] && srcxconf="/etc/X11/XF86Config-4"
- [ "${srcxconf}" = "" -a -f "/etc/X11/XF86Config" ] && srcxconf="/etc/X11/XF86Config"
-
-
- if [ "${srcxconf}" = "" ] ; then
- return 0
- fi
-
- currsection=""
- cat "${srcxconf}" |
- while read i1 i2 i3 i4 ; do
- # Strip "\"" from I2
- i2="${i2#\"}" ; i2="${i2%\"}"
-
- case "${i1}" in
- \#*)
- continue
- ;;
- 'Section')
- currsection="${i2}"
- ;;
- 'EndSection')
- currsection=""
- ;;
- 'FontPath')
- [ "$currsection" = "Files" ] && echo "${i2%:unscaled}"
- ;;
- esac
- done | egrep -v -i "tcp/|tcp4/|tcp6/|unix/"
-
- return 0
-}
-
-get_fontlist_from_defoma()
-{
- # Include Debian defoma font directory where relevant
- if [ -d "/var/lib/defoma/x-ttcidfont-conf.d/dirs" ] ; then
- find "/var/lib/defoma/x-ttcidfont-conf.d/dirs" -name fonts.dir |
- while read i ; do echo "${i%/fonts.dir}" ; done
- fi
-}
-
-XCOMM Get list of system fonts
-get_system_fontlist()
-{
-#if defined(OS_SOLARIS)
- ## List the standard X11 fonts
- # echo "${XPROJECTROOT}/lib/X11/fonts/F3/"
- # echo "${XPROJECTROOT}/lib/X11/fonts/F3bitmaps/"
- echo "${XPROJECTROOT}/lib/X11/fonts/Type1/"
- echo "${XPROJECTROOT}/lib/X11/fonts/Type1/outline/"
- # We cannot use /usr/openwin/lib/X11/fonts/Type1/sun/ - see
- # http://xprint.mozdev.org/bugs/show_bug.cgi?id=5726
- # ("Xprint doesn't start under Solaris 2.9 due *.ps files in /usr/openwin/lib/X11/fonts/Type1/sun/fonts.dir")
- #echo "${XPROJECTROOT}/lib/X11/fonts/Type1/sun/"
- echo "${XPROJECTROOT}/lib/X11/fonts/TrueType/"
- echo "${XPROJECTROOT}/lib/X11/fonts/Speedo/"
- echo "${XPROJECTROOT}/lib/X11/fonts/misc/"
- echo "${XPROJECTROOT}/lib/X11/fonts/75dpi/"
- echo "${XPROJECTROOT}/lib/X11/fonts/100dpi/"
-
- ## List all fonts in all locales installed on this machine
- cat /usr/openwin/lib/locale/''*/OWfontpath | tr "," "\n" | sort -u
-#elif defined(OS_LINUX)
- (
- get_fontlist_from_defoma
-
- get_fontlist_from_xf86config
-
- # Getting font paths from XFS is mainly required for compatibilty to RedHat
- get_fontlist_from_all_xfs_configs
-
- ## List all fonts in all locales installed on this machine
- (
- [ -d "/usr/share/fonts" ] && find /usr/share/fonts -name fonts.dir
- find "${XPROJECTROOT}/lib/X11/fonts" -name fonts.dir
- ) |
- while read i ; do echo "${i%/fonts.dir}" ; done
- ) | sort -u
-#else
- ## List the standard X11 fonts
- # (AIX should be handled like Solaris but I did not found a way to
- # enumerate all fonts in all installed locales without scanning the
- # dirs manually)
- echo "${XPROJECTROOT}/lib/X11/fonts/Type1/"
- echo "${XPROJECTROOT}/lib/X11/fonts/TrueType/"
- echo "${XPROJECTROOT}/lib/X11/fonts/TTF/"
- echo "${XPROJECTROOT}/lib/X11/fonts/Speedo/"
- echo "${XPROJECTROOT}/lib/X11/fonts/misc/"
- echo "${XPROJECTROOT}/lib/X11/fonts/75dpi/"
- echo "${XPROJECTROOT}/lib/X11/fonts/100dpi/"
- echo "${XPROJECTROOT}/lib/X11/fonts/"
-#endif
-}
-
-XCOMM Filter fonts per given extended regular expressions
-XCOMM (and make sure we filter any model-config fonts - they are managed by Xprt internally)
-filter_fontlist()
-{
- egrep -- "${1}" | fgrep -v "/models/" | egrep -v -- "${2}"
-}
-
-XCOMM Filter font paths with unsupported font types
-XCOMM (such as CID fonts)
-filter_unsupported_fonts()
-{
- egrep -v -i "/cid(/$|$)|/csl(/$|$)"
-}
-
-XCOMM Validate fontpath
-XCOMM Only return valid font path entries (note that these entries may
-XCOMM include non-file stuff like font server references)
-validate_fontlist()
-{
- while read i ; do
- case "${i}" in
- # Check if font path entry is a font server...
- tcp/''*|tcp4/''*|tcp6/''*|unix/''*)
- echo "${i}"
- ;;
- # ... if not check if the path is accessible
- # and has a valid "fonts.dir" index
- *)
- [ -f "${i}/fonts.dir" ] && echo "${i}"
- ;;
- esac
- done
-}
-
-XCOMM Build a comma-seperated list of fonts (font path) from a list of fonts
-fontlist2fontpath()
-{
- fp=""
- read fp;
- while read i ; do
- fp="${fp},${i}"
- done
-
- echo "$fp"
-}
-
-XCOMM Build a list (one item per line) of fonts from a font path
-fontpath2fontlist()
-{
- while read i ; do
- echo "${i}" | tr "," "\n"
- done
-}
-
-XCOMM Sort scaleable fonts (PS Type1 and TrueType) first in a font list
-sort_scaleable_fonts_first()
-{
- i="$(fontlist2fontpath)"
- # First list PS Type1 fonts...
- echo "${i}" | fontpath2fontlist | fgrep "/Type1"
- # ... then TrueType fonts ...
- echo "${i}" | fontpath2fontlist | egrep -i "/TrueType|/TT(/$|$)|/TTF(/$|$)"
- # ... then all others
- echo "${i}" | fontpath2fontlist | egrep -v -i "/Type1|/TrueType|/TT(/$|$)|/TTF(/$|$)"
-}
-
-XCOMM Check if a X display is used by a Xserver or not
-XCOMM Known bugs:
-XCOMM - there is no way in plain bourne shell or bash (see comment about ksh93
-XCOMM below) to test if a Xserver sits only on a socket and not on a pipe
-XCOMM - some Xserver's don't cleanup their stuff in /tmp on exit which may end
-XCOMM in the problem that we don't detect possible free display numbers
-XCOMM (one problem is that only ksh93 can do stuff like
-XCOMM "cat </dev/tcp/0.0.0.0/6001")
-CheckIfDisplayIsInUse()
-{
- id=$1
-
- [ -r "/tmp/.X${id}-lock" ] && return 0;
- [ -r "/tmp/.X11-unix/X${id}" ] && return 0;
- [ -r "/tmp/.X11-pipe/X${id}" ] && return 0;
-
- return 1;
-}
-
-lastdisplaynumreturned_store=/tmp/.Xp_last_display_returned_by_findfreexdisplaynum_${RANDOM}_${RANDOM}
-
-XCOMM Try to find a free display number
-FindFreeXDisplayNum()
-{
- if [ -r "${lastdisplaynumreturned_store}" ] ; then
- i="$(cat "${lastdisplaynumreturned_store}")"
- else
- i=32 # start at display 32
- fi
-
- while [ $i -lt 127 ] ; do
- i=$(($i + 1))
-
- if CheckIfDisplayIsInUse $i ; then
- true
- else
- echo "$i"
- echo "$i" >"${lastdisplaynumreturned_store}"
- return 0
- fi
- done
-
- # Using "magic" value of 189 here due lack of a better solution
- echo "189"
- echo "189" >"${lastdisplaynumreturned_store}"
- return 0
-}
-
-XCOMM Check if a process exists or not
-pexists()
-{
- [ "$1" = "" ] && return 1;
-
- # Use of /proc would be better but not all platforms (like AIX) have procfs
- [ "$(ps -p $1 | fgrep $1)" != "" ] && return 0;
- return 1
-}
-
-XCOMM Check if there is a spooler running...
-is_spooler_running()
-{
- # This covers Linux lpd, CUPS, Solaris and AIX 4.x - but what about
- # AIX 5.x, HP-UX and IRIX ?
-
- [ "$(ps -A | egrep 'lpd|lpsched|cupsd|qdaemon' | fgrep -v 'grep')" != "" ] && return 0;
- return 1
-}
-
-XCOMM Wait until the spooler system has been started (but not more than 30secs)
-wait_for_print_spooler()
-{
- for i in 1 2 3 4 5 6 7 8 9 10 ; do
- is_spooler_running && return 0;
- sleep 3
- done
-
- return 0
-}
-
-lock_server_registry()
-{
- lock_counter=0 # counts in 1/100s
- waiting_for_lock_msg_send="false"
- while ! mkdir "${XP_SERVERS}.lock" 2>/dev/null ; do
- # print notice after 2 seconds
- if [ ${lock_counter} -gt 200 -a "${waiting_for_lock_msg_send}" != "true" ] ; then
- echo "${0}: waiting for lock(=${XP_SERVERS}.lock)..."
- waiting_for_lock_msg_send="true"
- fi
-
- # tread the lock as "broken" after 20 seconds
- if [ ${lock_counter} -gt 2000 ] ; then
- echo "${0}: WARNING: lock timeout for lock(=${XP_SERVERS}.lock)."
- return 0
- fi
-
- if [ -x /bin/usleep ] ; then
- /bin/usleep 200000
- lock_counter=$((${lock_counter} + 20)) # 20/100s
- else
- sleep 1
- lock_counter=$((${lock_counter} + 100)) # 100/100s
- fi
- done
-}
-
-unlock_server_registry()
-{
- rmdir "${XP_SERVERS}.lock"
-}
-
-XCOMM Kill dead registry locks (silently!)
-kill_dead_registry_locks()
-{
- rm -Rf "${XP_SERVERS}.lock"
-}
-
-XCOMM Start Xprint servers
-start_servers()
-{
- # Write registry "intro" ...
- lock_server_registry
- echo "# Xprint server list" >>"${XP_SERVERS}"
- echo "# File is for private use for ${0}." >>"${XP_SERVERS}"
- echo "# Do not edit, rely on the content or file format." >>"${XP_SERVERS}"
- unlock_server_registry
-
- hostname="$(hostname)"
-
- default_fontpath="$(get_system_fontlist | fontlist2fontpath)"
- default_fontpath_acceptpattern=".*";
- default_fontpath_rejectpattern="_No_Match_"; # Match nothing
-
- curr=0
- while [ $curr -lt $num_xpstart ] ; do
- if [ "${xpstart_remote_server[$curr]}" != "" ] ; then
- # Remote Xprt, just put the entry into the registry
- lock_server_registry
- echo "display=${xpstart_remote_server[$curr]}" >>"${XP_SERVERS}"
- unlock_server_registry
- else
- # Run block in seperate process to avoid that changes to the
- # xpstart_* variables affect the next cycle
- (
- # Use defaults if there are no special options
- [ "${xpstart_fontpath[$curr]}" = "" ] && xpstart_fontpath[$curr]="${default_fontpath}";
- [ "${xpstart_fontpath_acceptpattern[$curr]}" = "" ] && xpstart_fontpath_acceptpattern[$curr]="$default_fontpath_acceptpattern";
- [ "${xpstart_fontpath_rejectpattern[$curr]}" = "" ] && xpstart_fontpath_rejectpattern[$curr]="$default_fontpath_rejectpattern";
- [ "${xpstart_displayid[$curr]}" = "" ] && xpstart_displayid[$curr]="$(FindFreeXDisplayNum)"
- [ "${xpstart_logger[$curr]}" = "" ] && xpstart_logger[$curr]="logger -p lpr.notice -t Xprt_${xpstart_displayid[$curr]}";
- [ "${xpstart_logfile[$curr]}" = "" ] && xpstart_logfile[$curr]="/dev/null";
- [ "${xpstart_xprt_binary[$curr]}" = "" ] && xpstart_xprt_binary[$curr]="${XPRT_BIN}";
- if [ "${xpstart_xprt_binary[$curr]}" = "/usr/openwin/bin/Xprt" -o "$(uname -s)" = "SunOS" ] ; then
- # Solaris /usr/openwin/bin/Xprt does not support "-nolisten tcp"
- # yet nor is it possible to run a Xserver on a unix socket only
- # in Solaris since access to the unix domain sockets in
- # /tmp/.X11-pipe and /tmp/.X11-unix is restricted to applications
- # with group-id "root" (e.g. the Xprt server would need to be
- # setgid "root" that plain users can start it listening on a unix
- # socket only)
- [ "${xpstart_options[$curr]}" = "" ] && xpstart_options[$curr]="-ac -pn"
- else
- [ "${xpstart_options[$curr]}" = "" ] && xpstart_options[$curr]="-ac -pn -nolisten tcp"
- fi
-
- # Check if the Xprt binary is available
- if [ ! -x "${xpstart_xprt_binary[$curr]}" ] ; then
- error_echo "Can't find \"${xpstart_xprt_binary[$curr]}\"."
- exit 1 # exit block
- fi
-
- # Verify and set location of font encodings directory file
- if [ "${xpstart_font_encodings_dir[$curr]}" = "" ] ; then
- if [ -f "${XPROJECTROOT}/lib/X11/fonts/xf86encodings/encodings.dir" ] ; then
- xpstart_font_encodings_dir[$curr]="${XPROJECTROOT}/lib/X11/fonts/xf86encodings/encodings.dir"
- else
- xpstart_font_encodings_dir[$curr]="${XPROJECTROOT}/lib/X11/fonts/encodings/encodings.dir";
- fi
- fi
-
- unset FONT_ENCODINGS_DIRECTORY
- if [ ! -f "${xpstart_font_encodings_dir[$curr]}" ] ; then
- warning_echo "Can't find \"${xpstart_font_encodings_dir[$curr]}\", TrueType font support may not work."
- fi
-
- export FONT_ENCODINGS_DIRECTORY="${xpstart_font_encodings_dir[$curr]}"
-
- # Generate font path (containing only valid font path elements)
- # from input font path and filter expressions
- curr_fp=$(echo "${xpstart_fontpath[$curr]}" |
- fontpath2fontlist |
- filter_fontlist "${xpstart_fontpath_acceptpattern[$curr]}" "${xpstart_fontpath_rejectpattern[$curr]}" |
- filter_unsupported_fonts |
- sort_scaleable_fonts_first |
- validate_fontlist |
- fontlist2fontpath)
-
- # Set Xserver auditing level option
- unset curr_audit
- if [ "${xpstart_auditlevel[$curr]}" != "" ] ; then
- curr_audit="-audit ${xpstart_auditlevel[$curr]}"
- fi
-
- # Set Xprt -XpFile option
- unset curr_xpfile
- if [ "${xpstart_xpfile[$curr]}" != "" ] ; then
- curr_xpfile="-XpFile ${xpstart_xpfile[$curr]}"
- fi
-
- # Set custom XPCONFIGDIR (if there is one)
- unset XPCONFIGDIR
- if [ "${xpstart_xpconfigdir[$curr]}" != "" ] ; then
- export XPCONFIGDIR="${xpstart_xpconfigdir[$curr]}"
- fi
-
- # If someone uses "-nolisten tcp" make sure we do not add a hostname to force local transport
- if [ "$(echo "${xpstart_options[$curr]}" | egrep "nolisten.*tcp")" != "" ] ; then
- xp_display=":${xpstart_displayid[$curr]}"
- else
- xp_display="${hostname}:${xpstart_displayid[$curr]}"
- fi
-
- (
- (
- "${xpstart_xprt_binary[$curr]}" \
- ${xpstart_options[$curr]} \
- ${curr_xpfile} ${curr_audit} \
- -fp ${curr_fp} \
- :${xpstart_displayid[$curr]} &
- server_pid="$!"
-
- # Append the new server to the registry
- lock_server_registry
- echo "display=${xp_display} display_id=${xpstart_displayid[$curr]} pid=${server_pid}" >>"${XP_SERVERS}"
- unlock_server_registry
-
- wait
- echo "Xprint server pid=${server_pid} done, exitcode=$?."
-
- # Remove the dead server from the registry
- # (only if the registry still exists - if /etc/init.d/xprint stop" gets called the registry
- # will be removed - and we should not re-create it afterwards...)
- lock_server_registry
- if [ -f "${XP_SERVERS}" ] ; then
- x="$(cat "${XP_SERVERS}")" # Store content of file "${XP_SERVERS}" in var "x"
- echo "${x}" | fgrep -v "display_id=${xpstart_displayid[$curr]} pid=${server_pid}" >"${XP_SERVERS}"
- fi
- unlock_server_registry
- ) 2>&1 | while read i ; do echo "$i" | tee -a "${xpstart_logfile[$curr]}" | ${xpstart_logger[$curr]} ; done
- ) &
- )
- fi
-
- curr=$(($curr + 1))
- done
-
- # Remove tmp. file created by |FindFreeXDisplayNum()|
- rm -f "${lastdisplaynumreturned_store}"
-
- # Done.
- lock_server_registry
- echo "# EOF." >>"${XP_SERVERS}"
- unlock_server_registry
- return 0
-}
-
-
-XCOMM Convenience function to check setup and start Xprt server(s)
-do_start()
-{
- if [ -f "${XP_SERVERS}" ] ; then
- numservers="$(do_get_xpserverlist | wc -l)"
- if [ ${numservers} -gt 0 ] ; then
- verbose_echo "Xprint servers are already running."
- return 0
- else
- verbose_echo "Old server registry found, cleaning-up..."
- do_stop
- fi
- fi
-
- # Check if we can write the registry file
- touch "${XP_SERVERS}" 2>/dev/null
- if [ ! -f "${XP_SERVERS}" ] ; then
- error_echo "Cannot create \"${XP_SERVERS}\"."
- # exit code 4 = user had insufficient privilege (LSB)
- exit 4
- fi
-
- if ! setup_config ; then
- error_echo "setup_config failed."
- exit 1
- fi
-
- # Provide two paths here - one which simply starts the Xprt servers,
- # assuming that there is a print spooler already running (or that
- # ${XPCONFIG}/C/print/Xprinters provides static print queue entries
- # (like for the PSspooldir print model)) and a 2nd path which
- # explicitly checks if the print queue daemons are running
- if true ; then
- msg "Starting Xprint servers: Xprt."
- start_servers
- else
- # Continue in the background if there is no spooler running yet (that
- # we don't hold off the boot process nor run in a possible race-condition
- # when /etc/init.d/lpd was not called yet but the runlevel script waits
- # for us to finish first ...
- if is_spooler_running ; then
- msg "Starting Xprint servers: Xprt."
- start_servers
- else
- msg "Starting Xprint servers (in the background): Xprt."
- (wait_for_print_spooler ; start_servers) &
- sleep 5
- fi
- fi
-
- if [ "${CURRLOGNAME}" = "root" -a -d /var/lock/subsys/ ] ; then
- touch /var/lock/subsys/xprint
- fi
-}
-
-XCOMM Convenience function to stop Xprt server(s)
-do_stop()
-{
- msg "Stopping Xprint servers: Xprt."
-
- lock_server_registry
- if [ -f "${XP_SERVERS}" ] ; then
- reglist="$(cat "${XP_SERVERS}")"
- rm -f "${XP_SERVERS}"
- fi
- unlock_server_registry
-
- if [ "${reglist}" != "" ] ; then
- echo "${reglist}" |
- grep "^display=.*:.* pid=[0-9]*$" |
- while read i ; do
- (
- eval ${i}
- if pexists ${pid} ; then
- kill ${pid}
- fi
-
- # Remove the X sockets/pipes which are not in use anymore
- # (It would be better if the Xservers would cleanup this
- # automatically, but most Xservers do not do that... ;-(
- # Note that this will not work on Solaris where applications
- # must run with groupid="root" if they want to write into
- # /tmp/.X11-unix/ and/or /tmp/.X11-pipe/)
- if [ "${display_id}" != "" ] ; then
- rm -f "/tmp/.X${display_id}-lock" 2>/dev/null
- rm -f "/tmp/.X11-unix/X${display_id}" 2>/dev/null
- rm -f "/tmp/.X11-pipe/X${display_id}" 2>/dev/null
- fi
- )
- done
- fi
-
- if [ "${CURRLOGNAME}" = "root" -a -d /var/lock/subsys/ ] ; then
- rm -f /var/lock/subsys/xprint
- fi
-
- # Remove any outstanding (dead) locks and cleanup
- rm -f "${XP_SERVERS}"
- kill_dead_registry_locks
-}
-
-XCOMM Convenience function to obtain a list of available Xprint servers
-do_get_xpserverlist()
-{
- if [ -f "${XP_PER_USER_SERVERS}" -o -f "${XP_GLOBAL_SERVERS}" ] ; then
- xpserverlist=$(
- # Enumerate both per-user and global servers (in that order)
- (
- [ -f "${XP_PER_USER_SERVERS}" ] && cat "${XP_PER_USER_SERVERS}"
- [ -f "${XP_GLOBAL_SERVERS}" ] && cat "${XP_GLOBAL_SERVERS}"
- ) |
- egrep "^display=.*:.* pid=[0-9]*$|^display=.*:[0-9]*$" |
- while read i ; do
- (
- pid="none"
- eval ${i}
- # Check if the Xprt process exists (if possible)
- if [ "$pid" != "none" ] ; then
- if pexists ${pid} ; then
- echo ${display}
- fi
- else
- echo ${display}
- fi
- )
- done | tr "\n" " "
- )
- # Only produce output if we have some entries...
- [ "${xpserverlist}" != "" ] && echo "${xpserverlist}"
- fi
-}
-
-do_restart()
-{
- msg "Restarting Xprint server(s): Xprt."
- do_stop
- sleep 1
- do_start
-}
-
-do_diag()
-{
- echo "##### Diag start $(date)."
-
- # General info
- echo "## General info start."
- (
- echo "PATH=\"${PATH}\""
- echo "TZ=\"${TZ}\""
- echo "LANG=\"${LANG}\""
- echo "uname -a=\"$(uname -a)\""
- echo "uname -s=\"$(uname -s)\""
- echo "uname -p=\"$(uname -p)\""
- echo "uname -i=\"$(uname -i)\""
- echo "uname -m=\"$(uname -m)\""
- echo "has /etc/SuSE-release ... $([ -f "/etc/SuSE-release" ] && echo "yes" || echo "no")"
- echo "has /etc/redhat-release ... $([ -f "/etc/redhat-release" ] && echo "yes" || echo "no")"
- echo "has /etc/debian_version ... $([ -f "/etc/debian_version" ] && echo "yes" || echo "no")"
- echo "how many Xprt servers are running ...$(ps -ef | fgrep Xprt | fgrep -v "grep" | wc -l)"
- ) 2>&1 | while read i ; do echo " $i" ; done
- echo "## General info end."
-
- # Testing font paths
- echo "## Testing font paths start."
- (
- get_system_fontlist |
- filter_unsupported_fonts |
- sort_scaleable_fonts_first |
- validate_fontlist | while read d ; do
- echo "#### Testing \"${d}\" ..."
- if [ ! -d "$d" ] ; then
- echo "# Error: $d does not exists."
- continue
- fi
- if [ ! -r "$d" ] ; then
- echo "# Error: $d not readable."
- continue
- fi
- if [ ! -f "${d}/fonts.dir" ] ; then
- echo "# Error: ${d}/fonts.dir not found."
- continue
- else
- if [ ! -r "${d}/fonts.dir" ] ; then
- echo "# Error: ${d}/fonts.dir not readable."
- continue
- fi
- fi
- if [ -f "${d}/fonts.alias" ] ; then
- if [ ! -r "${d}/fonts.alias" ] ; then
- echo "# Error: ${d}/fonts.alias not readable."
- fi
- fi
-
- if [ "$(cat "${d}/fonts.dir" | fgrep 'cursor')" != "" ] ; then
- echo "${d}/fonts.dir has cursor font."
- fi
- if [ "$(cat "${d}/fonts.dir" | fgrep 'fixed')" != "" ] ; then
- echo "${d}/fonts.dir has fixed font."
- fi
-
- if [ -r "${d}/fonts.alias" ] ; then
- if [ "$(cat "${d}/fonts.alias" | fgrep 'cursor')" != "" ] ; then
- echo "${d}/fonts.alias has cursor font."
- fi
- if [ "$(cat "${d}/fonts.alias" | fgrep 'fixed')" != "" ] ; then
- echo "${d}/fonts.alias has fixed font."
- fi
- fi
-
- linenum=0
- cat "${d}/fonts.dir" | while read i1 i2 i3 i4 ; do
- linenum=$((${linenum} + 1))
- [ ${linenum} -eq 1 ] && continue
-
- if [ ! -f "${d}/${i1}" ] ; then
- echo "ERROR: ${d}/fonts.dir line ${linenum} has non-exististant font \"${i1}\" (=\"${i1} ${i2} ${i3} ${i4}\")"
- fi
- done
- done
- ) 2>&1 | while read i ; do echo " $i" ; done
- echo "## Testing font paths end."
-
- echo "##### Diag End $(date)."
-}
-
-XCOMM Set platform-defaults for setup_config()
-setup_config_defaults()
-{
- curr_num_xpstart="${1}"
-
- #### Defaults for Linux/Solaris
- # Start Xprt using builtin XPCONFIGDIR at a free display numer
- # (Solaris(=SunOS5.x)'s /usr/openwin/bin/Xprt supports TrueType fonts,
- # therefore we don't need to filter them)
- xpstart_fontpath[${curr_num_xpstart}]="";
- xpstart_fontpath_acceptpattern[${curr_num_xpstart}]=".*";
- xpstart_fontpath_rejectpattern[${curr_num_xpstart}]="/Speedo|/F3bitmaps|/F3";
- xpstart_displayid[${curr_num_xpstart}]="";
- xpstart_xpconfigdir[${curr_num_xpstart}]="";
- xpstart_xpfile[${curr_num_xpstart}]="";
- xpstart_auditlevel[${curr_num_xpstart}]="4";
- xpstart_options[${curr_num_xpstart}]="";
- xpstart_logger[${curr_num_xpstart}]="";
- # Check whether we have /dev/stderr (needed for old AIX + old Debian)
- if [ -w "/dev/stderr" ] ; then
- xpstart_logfile[${curr_num_xpstart}]="/dev/stderr";
- else
- xpstart_logfile[${curr_num_xpstart}]="/dev/tty";
- fi
- xpstart_xprt_binary[${curr_num_xpstart}]="";
-
- # Custom rules for the GISWxprintglue package on Solaris
- # (which uses Solaris's /usr/openwin/bin/Xprt but a custom config)
- if [ "${XPCUSTOMGLUE}" = "GISWxprintglue" ] ; then
- xpstart_xpconfigdir[${curr_num_xpstart}]="/opt/GISWxprintglue/server/etc/XpConfig"
- xpstart_xprt_binary[${curr_num_xpstart}]="/usr/openwin/bin/Xprt"
- fi
- # Custom rules for the GISWxprint package on Solaris
- # (which uses both it's own Xprt and a custom config)
- if [ "${XPCUSTOMGLUE}" = "GISWxprint" ] ; then
- xpstart_xpconfigdir[${curr_num_xpstart}]="/opt/GISWxprint/server/etc/XpConfig"
- xpstart_xprt_binary[${curr_num_xpstart}]="/opt/GISWxprint/bin/Xprt"
- xpstart_font_encodings_dir[${curr_num_xpstart}]="/opt/GISWxprint/lib/X11/fonts/encodings/encodings.dir"
- fi
-
- #######################################################
- ###
- ### Debian Xprint package default configuration
- ###
- if [ "${XPCUSTOMGLUE}" = "DebianGlue" ] ; then
- # Set XPCONFIGDIR=/usr/share/Xprint/xserver
- xpstart_xpconfigdir[${curr_num_xpstart}]="/usr/share/Xprint/xserver";
-
- # Use fixed display ID (":64"), or else all client programs will have to be
- # restarted simply to update XPSERVERLIST to the latest ID when upgrading,
- # which would be a nightmare.
- xpstart_displayid[${curr_num_xpstart}]=64;
-
- # Do not send any messages to console
- xpstart_logfile[${curr_num_xpstart}]="/dev/null";
-
- # By default use binary provided by Debian's "xprt-xprintorg" package
- # (=/usr/bin/Xprt), otherwise leave blank (e.g. use script's default
- # (=/usr/X11R6/bin/Xprt))
- if [ -x "/usr/bin/Xprt" ] ; then
- xpstart_xprt_binary[${curr_num_xpstart}]="/usr/bin/Xprt";
- fi
- fi
- ###
- ### End Debian default configuration
- ###
- #######################################################
-}
-
-fetch_etc_initd_xprint_envvars()
-{
- curr_num_xpstart="${1}"
-
- ## Process some $ETC_INITD_XPRINT_* vars after all which may be used by
- # a user to override the hardcoded values here when starting Xprt per-user
- # (a more flexible way is to provide an own setup config script in
- # "~./Xprint_per_user_startup" - see above)
- if [ "${ETC_INITD_XPRINT_XPRT_PATH}" != "" ] ; then
- xpstart_xprt_binary[${curr_num_xpstart}]="${ETC_INITD_XPRINT_XPRT_PATH}"
- fi
- if [ "${ETC_INITD_XPRINT_XPCONFIGDIR}" != "" ] ; then
- xpstart_xpconfigdir[${curr_num_xpstart}]="${ETC_INITD_XPRINT_XPCONFIGDIR}"
- fi
- if [ "${ETC_INITD_XPRINT_XPFILE}" != "" ] ; then
- xpstart_xpfile[${curr_num_xpstart}]="${ETC_INITD_XPRINT_XPFILE}"
- fi
- if [ "${ETC_INITD_XPRINT_LOGFILE}" != "" ] ; then
- xpstart_logfile[${curr_num_xpstart}]="${ETC_INITD_XPRINT_LOGFILE}"
- fi
- if [ "${ETC_INITD_XPRINT_DISPLAYID}" != "" ] ; then
- xpstart_displayid[${curr_num_xpstart}]="${ETC_INITD_XPRINT_DISPLAYID}"
- fi
- if [ "${ETC_INITD_XPRINT_FONTPATH}" != "" ] ; then
- xpstart_fontpath[${curr_num_xpstart}]="${ETC_INITD_XPRINT_FONTPATH}"
- fi
- if [ "${ETC_INITD_XPRINT_XPRT_OPTIONS}" != "" ] ; then
- xpstart_options[${curr_num_xpstart}]="${ETC_INITD_XPRINT_XPRT_OPTIONS}"
- fi
- if [ "${ETC_INITD_XPRINT_AUDITLEVEL}" != "" ] ; then
- xpstart_auditlevel[${curr_num_xpstart}]="${ETC_INITD_XPRINT_AUDITLEVEL}"
- fi
- if [ "${ETC_INITD_XPRINT_XF86ENCODINGSDIR}" != "" ] ; then
- xpstart_font_encodings_dir[${curr_num_xpstart}]="${ETC_INITD_XPRINT_XF86ENCODINGSDIR}"
- fi
-}
-
-XCOMM###########################################################################
-XCOMM setup_config() sets the configuration parameters used to start one
-XCOMM or more Xprint servers ("Xprt").
-XCOMM The following variables are used:
-XCOMM - "num_xpstart" - number of servers to start
-XCOMM - "xpstart_fontpath[index]" - custom font path. Leave blank if you want
-XCOMM the platform-specific default
-XCOMM - "xpstart_fontpath_acceptpattern[index]" - extended regular expression
-XCOMM (see egrep(1)) used to filter the font path - items only pass this
-XCOMM filter if they match the pattern (leave blank if you want to filter
-XCOMM nothing)
-XCOMM - "xpstart_fontpath_rejectpattern[index]" - extended regular expression
-XCOMM (see egrep(1)) used to filter the font path - items only pass this
-XCOMM filter if they do not match the pattern (leave blank if you want to
-XCOMM filter nothing)
-XCOMM - "xpstart_font_encodings_dir[index]" - location of "encodings.dir".
-XCOMM Leave blank to use the default.
-XCOMM - "xpstart_displayid[index]" - display id to use for the Xprint server
-XCOMM (leave blank to choose the next available free display id)
-XCOMM - "xpstart_xpconfigdir[index]" - value for custom XPCONFIGDIR (leave blank
-XCOMM if you don not want that that XPCONFIGDIR is set at Xprt startup)
-XCOMM - "xpstart_xpfile[index]" - value used for Xprt's "-XpFile" option (leave
-XCOMM blank if you do not want to set this option)
-XCOMM - "xpstart_auditlevel[index]" - set Xserver auditing level (leave blank to
-XCOMM use no auditing)
-XCOMM - "xpstart_options[index]" - set further Xprt options (leave blank to set
-XCOMM no further options)
-XCOMM - "xpstart_logger[index]" - utility which gets stderr/stdout messages from
-XCOMM Xprt and sends them to a logging daemon. Leave blank to use /usr/bin/logger
-XCOMM to send such messages to the lpr.notice syslog)
-XCOMM - "xpstart_logfile[index]" - log file to append stderr/stdout messages from
-XCOMM Xprt to. Leave blank to send messages to /dev/null
-XCOMM - "xpstart_xprt_binary[index]" - set custom Xprt binary (leave blank to use
-XCOMM the platform-specifc default)
-setup_config()
-{
- num_xpstart=0;
-
- if [ "${ETC_INITD_XPRINT_CUSTOM_SETUP_CONFIG}" != "" ] ; then
- user_cfg="${ETC_INITD_XPRINT_CUSTOM_SETUP_CONFIG}"
- else
- user_cfg="${HOME}/.Xprint_per_user_startup"
- fi
-
- # Source per-user ~/.Xprint_per_user_startup file if there is one
- # (and do not use the script's defaults below)
- if [ -r "${user_cfg}" ] ; then
- # Define API version which should be checked by ${HOME}/.Xprint_per_user_startup
- # ${HOME}/.Xprint_per_user_startup should bail-out if the version differ
- etc_initd_xprint_api_version=2
-
- # Source per-user settings script
- . "${user_cfg}"
-
- # done with setting the config for per-user Xprt instances
- return 0;
- else
- # Use /etc/init.d/xprint's builtin config
- # Each entry should start with |setup_config_defaults| to pull the
- # platform defaults and finish with |num_xpstart=$(($num_xpstart + 1))|
- # to end the entry
-
- # Set platform-defaults
- setup_config_defaults "${num_xpstart}"
-
- ## -- snip --
-
- # Admins can put their stuff "in" here...
-
- ## -- snip --
-
- # Override script's builtin values with those a user may set via the
- # $ETC_INIITD_XPRINT_* env vars
- fetch_etc_initd_xprint_envvars "${num_xpstart}"
-
- num_xpstart=$((${num_xpstart} + 1))
-
- return 0;
- fi
-
- #### Sample 1:
- # # Start Xprt on a free display ID with custom XPCONFIGDIR and without
- # # Speedo and TrueType fonts
- # xpstart_fontpath_rejectpattern[$num_xpstart]="/Speedo|/TrueType|/TT(/$|$)|/TTF(/$|$)";
- # xpstart_xpconfigdir[$num_xpstart]="/home/gisburn/cwork/Xprint/Xprt_config/XpConfig";
- # xpstart_auditlevel[$num_xpstart]="4";
- # xpstart_options[$num_xpstart]="-ac -pn";
- #num_xpstart=$(($num_xpstart + 1))
-
-
- #### Sample 2:
- # # Start Xprt without TrueType fonts on a display 55 with custom
- # # XPCONFIGDIR
- # xpstart_fontpath_rejectpattern[$num_xpstart]="/TrueType|/TT(/$|$)|/TTF(/$|$)";
- # xpstart_displayid[$num_xpstart]=55;
- # xpstart_xpconfigdir[$num_xpstart]="/home/gisburn/cwork/Xprint/Xprt_config/XpConfig";
- # xpstart_auditlevel[$num_xpstart]=4;
- # xpstart_options[$num_xpstart]="-ac -pn";
- #num_xpstart=$(($num_xpstart + 1))
-
- #### Sample 3:
- # # Start Xprt without TrueType fonts on a display 56 with custom
- # # XPCONFIGDIR and alternate "Xprinters" file
- # xpstart_fontpath_rejectpattern[$num_xpstart]="/TrueType|/TT(/$|$)|/TTF(/$|$)";
- # xpstart_displayid[$num_xpstart]=56;
- # xpstart_xpconfigdir[$num_xpstart]="/etc/XpConfig/default";
- # xpstart_xpfile[$num_xpstart]="/etc/XpConfig/default/Xprinters_test2"
- # xpstart_auditlevel[$num_xpstart]="4";
- # xpstart_options[$num_xpstart]="-ac -pn";
- # xpstart_xprt_binary[$num_xpstart]="";
- #num_xpstart=$(($num_xpstart + 1))
-
- #### Sample 4:
- # # Start Xprt with Solaris ISO-8859-7 (greek(="el") locale) fonts on
- # # display 57
- # xpstart_fontpath[$num_xpstart]="/usr/openwin/lib/locale/iso_8859_7/X11/fonts/75dpi,/usr/openwin/lib/locale/iso_8859_7/X11/fonts/Type1,/usr/openwin/lib/X11/fonts/misc/";
- # xpstart_fontpath_acceptpattern[$num_xpstart]="";
- # xpstart_fontpath_rejectpattern[$num_xpstart]="_No_Match_";
- # xpstart_displayid[$num_xpstart]="57";
- # xpstart_auditlevel[$num_xpstart]="4";
- # xpstart_options[$num_xpstart]="-ac -pn";
- #num_xpstart=$(($num_xpstart + 1))
-
- #### Sample 5:
- # # Start Xprt with the font list of an existing Xserver (excluding Speedo fonts) on
- # # display 58
- # # Note that this only works within a X session. At system boot time
- # # there will be no $DISPLAY to fetch the information from!!
- # xpstart_fontpath[$num_xpstart]="$(get_fontlist_from_display ${DISPLAY} | fontlist2fontpath)";
- # xpstart_fontpath_acceptpattern[$num_xpstart]="";
- # xpstart_fontpath_rejectpattern[$num_xpstart]="";
- # xpstart_displayid[$num_xpstart]="58";
- # xpstart_xpconfigdir[$num_xpstart]="";
- # xpstart_auditlevel[$num_xpstart]="4";
- # xpstart_options[$num_xpstart]="-ac -pn";
- # xpstart_xprt_binary[$num_xpstart]="";
- #num_xpstart=$(($num_xpstart + 1))
-
- #### Sample 6:
- # # List remote Xprt's here
- # # (note that there is no test to check whether these DISPLAYs are valid!)
- # xpstart_remote_server[$num_xpstart]="sera:12" ; num_xpstart=$(($num_xpstart + 1))
- # xpstart_remote_server[$num_xpstart]="gandalf:19" ; num_xpstart=$(($num_xpstart + 1))
-}
-
-XCOMM###########################################################################
-
-XCOMM Main
-case "$1" in
- ## Start Xprint servers
- 'start')
- do_start
- ;;
-
- ## Stop Xprint servers
- # Note that this does _not_ kill Xprt instances started using this script
- # by non-root users
- 'stop')
- do_stop
- ;;
-
- ## Restart Xprint servers
- 'restart'|'force-reload')
- do_restart
- ;;
-
- ## Reload configuration without stopping and restarting
- 'reload')
- # not supported
- msg "reload not supported, use 'restart' or 'force-reload'"
- exit 3
- ;;
-
- ## Restart Xprint only if it is already running
- 'condrestart'|'try-restart')
- # only restart if it is already running
- [ -f /var/lock/subsys/xprint ] && do_restart || :
- ;;
-
- ## Get list of all Xprint servers for this user
- # (incl. per-user and system-wide instances)
- 'get_xpserverlist')
- do_get_xpserverlist
- ;;
-
- ## Get status of Xprint servers, RedHat-style
- 'status')
- x="$(do_get_xpserverlist)"
- if [ "${x}" != "" ] ; then
- msg "Xprint (${x}) is running..."
- exit 0
- else
- msg "Xprint is stopped"
- exit 3
- fi
- ;;
-
- ## Wrapper
- 'wrapper')
- cmd="${2}"
- [ "${cmd}" = "" ] && fatal_error "No command given."
- shift ; shift
- export XPSERVERLIST="$(do_get_xpserverlist)"
- [ "${XPSERVERLIST}" = "" ] && fatal_error "No Xprint servers found."
- exec "${cmd}" "$@"
- ;;
-
- ## Wrapper for "xplsprinters"
- 'lsprinters')
- [ "${ETC_INITD_XPRINT_XPLSPRINTERS_PATH}" != "" ] && cmd="${ETC_INITD_XPRINT_XPLSPRINTERS_PATH}"
- [ "${cmd}" = "" -a "${XPCUSTOMGLUE}" = "GISWxprintglue" ] && cmd="/opt/GISWxprintglue/bin/xplsprinters"
- [ "${cmd}" = "" -a "${XPCUSTOMGLUE}" = "GISWxprint" ] && cmd="/opt/GISWxprint/bin/xplsprinters"
- [ "${cmd}" = "" -a "${XPROJECTROOT}" != "" ] && cmd="${XPROJECTROOT}/bin/xplsprinters"
- [ "${cmd}" = "" ] && cmd="xplsprinters"
-
- shift
- export XPSERVERLIST="$(do_get_xpserverlist)"
- [ "${XPSERVERLIST}" = "" ] && fatal_error "No Xprint servers found."
- exec "${cmd}" "$@"
- ;;
-
- ## Diagnostics
- 'diag')
- do_diag
- ;;
-
- ## Print usage
- *)
- msg "Usage: $0 { start | stop | restart | reload | force-reload | status | condrestart | try-restart | wrapper | lsprinters | get_xpserverlist | diag }"
- exit 2
-esac
-exit 0
-
-XCOMM EOF.
diff --git a/nx-X11/programs/Xserver/Xprint/etc/profile.d/Imakefile b/nx-X11/programs/Xserver/Xprint/etc/profile.d/Imakefile
deleted file mode 100644
index a70824c8d..000000000
--- a/nx-X11/programs/Xserver/Xprint/etc/profile.d/Imakefile
+++ /dev/null
@@ -1,14 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.1 2002/10/31 14:42:52 gisburn Exp $
-
-#if NothingOutsideProjectRoot
-#define EtcDir ProjectRoot/etc
-#else
-#define EtcDir /etc
-#endif
-
-ETCDIR = EtcDir
-
-all::
-
-InstallNamedProg(xprint.csh,xprint.csh,$(ETCDIR)/profile.d)
-InstallNamedProg(xprint.sh,xprint.sh,$(ETCDIR)/profile.d)
diff --git a/nx-X11/programs/Xserver/Xprint/etc/profile.d/xprint.csh b/nx-X11/programs/Xserver/Xprint/etc/profile.d/xprint.csh
deleted file mode 100644
index 7cc675840..000000000
--- a/nx-X11/programs/Xserver/Xprint/etc/profile.d/xprint.csh
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# /etc/profile.d/xprint.csh
-#
-# Copyright (c) 2002-2004 by Roland Mainz <roland.mainz@nrubsig.org>
-# please send bugfixes or comments to http://xprint.mozdev.org/
-
-
-#
-# Obtain list of Xprint servers
-#
-
-if ( -f /etc/init.d/xprint ) then
- setenv XPSERVERLIST "`/bin/sh /etc/init.d/xprint get_xpserverlist`"
-endif
-
-# /etc/profile.d/xprint.csh ends here.
diff --git a/nx-X11/programs/Xserver/Xprint/etc/profile.d/xprint.sh b/nx-X11/programs/Xserver/Xprint/etc/profile.d/xprint.sh
deleted file mode 100644
index b5b46c1e7..000000000
--- a/nx-X11/programs/Xserver/Xprint/etc/profile.d/xprint.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# /etc/profile.d/xprint.sh
-#
-# Copyright (c) 2002-2004 by Roland Mainz <roland.mainz@nrubsig.org>
-# please send bugfixes or comments to http://xprint.mozdev.org/
-
-#
-# Obtain list of Xprint servers
-#
-
-if [ -f "/etc/init.d/xprint" ] ; then
- XPSERVERLIST="`/bin/sh /etc/init.d/xprint get_xpserverlist`"
- export XPSERVERLIST
-fi
-
-# /etc/profile.d/xprint.sh ends here.
diff --git a/nx-X11/programs/Xserver/Xprint/mediaSizes.c b/nx-X11/programs/Xserver/Xprint/mediaSizes.c
deleted file mode 100644
index 7f582199d..000000000
--- a/nx-X11/programs/Xserver/Xprint/mediaSizes.c
+++ /dev/null
@@ -1,783 +0,0 @@
-/* $Xorg: mediaSizes.c,v 1.4 2001/03/14 18:44:37 pookie Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: mediaSizes.c
-** *
-** * Contents:
-** * Routines to return the sizes associated
-** * with particular media and particular printers.
-** *
-** * Created: 2/19/96
-** *
-** * Copyright: Copyright 1993,1995 Hewlett-Packard Company
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <locale.h>
-
-#include <X11/X.h>
-#include "dixstruct.h"
-#include "screenint.h"
-#include "misc.h"
-#include "scrnintstr.h"
-#include <X11/fonts/fontstruct.h>
-
-#include "DiPrint.h"
-#include "attributes.h"
-
-typedef struct {
- XpOid page_size;
- float width;
- float height;
-} PageDimensionsRec;
-
-static PageDimensionsRec PageDimensions[] =
-{
- {xpoid_val_medium_size_na_letter, 215.9, 279.4},
- {xpoid_val_medium_size_na_legal, 215.9, 355.6},
- {xpoid_val_medium_size_executive, 184.15, 266.7},
- {xpoid_val_medium_size_folio, 210.82, 330.2},
- {xpoid_val_medium_size_invoice, 139.7, 215.9},
- {xpoid_val_medium_size_ledger, 279.4, 431.8},
- {xpoid_val_medium_size_quarto, 215.9, 275.082},
- {xpoid_val_medium_size_a, 215.9, 279.4},
- {xpoid_val_medium_size_b, 279.4, 431.8},
- {xpoid_val_medium_size_c, 431.8, 558.8},
- {xpoid_val_medium_size_d, 558.8, 863.6},
- {xpoid_val_medium_size_e, 863.6, 1117.6},
- {xpoid_val_medium_size_na_6x9_envelope, 152.4, 228.6},
- {xpoid_val_medium_size_na_10x15_envelope, 254, 381},
- {xpoid_val_medium_size_monarch_envelope, 98.298, 190.5},
- {xpoid_val_medium_size_na_10x13_envelope, 254, 330.2},
- {xpoid_val_medium_size_na_9x12_envelope, 228.6, 304.8},
- {xpoid_val_medium_size_na_number_10_envelope, 104.775, 241.3},
- {xpoid_val_medium_size_na_7x9_envelope, 177.8, 228.6},
- {xpoid_val_medium_size_na_9x11_envelope, 228.6, 279.4},
- {xpoid_val_medium_size_na_10x14_envelope, 254, 355.6},
- {xpoid_val_medium_size_na_number_9_envelope, 98.425, 225.425},
- {xpoid_val_medium_size_iso_a0, 841, 1189},
- {xpoid_val_medium_size_iso_a1, 594, 841},
- {xpoid_val_medium_size_iso_a2, 420, 594},
- {xpoid_val_medium_size_iso_a3, 297, 420},
- {xpoid_val_medium_size_iso_a4, 210, 297},
- {xpoid_val_medium_size_iso_a5, 148, 210},
- {xpoid_val_medium_size_iso_a6, 105, 148},
- {xpoid_val_medium_size_iso_a7, 74, 105},
- {xpoid_val_medium_size_iso_a8, 52, 74},
- {xpoid_val_medium_size_iso_a9, 37, 52},
- {xpoid_val_medium_size_iso_a10, 26, 37},
- {xpoid_val_medium_size_iso_b0, 1000, 1414},
- {xpoid_val_medium_size_iso_b1, 707, 1000},
- {xpoid_val_medium_size_iso_b2, 500, 707},
- {xpoid_val_medium_size_iso_b3, 353, 500},
- {xpoid_val_medium_size_iso_b4, 250, 353},
- {xpoid_val_medium_size_iso_b5, 176, 250},
- {xpoid_val_medium_size_iso_b6, 125, 176},
- {xpoid_val_medium_size_iso_b7, 88, 125},
- {xpoid_val_medium_size_iso_b8, 62, 88},
- {xpoid_val_medium_size_iso_b9, 44, 62},
- {xpoid_val_medium_size_iso_b10, 31, 44},
- {xpoid_val_medium_size_jis_b0, 1030, 1456},
- {xpoid_val_medium_size_jis_b1, 728, 1030},
- {xpoid_val_medium_size_jis_b2, 515, 728},
- {xpoid_val_medium_size_jis_b3, 364, 515},
- {xpoid_val_medium_size_jis_b4, 257, 364},
- {xpoid_val_medium_size_jis_b5, 182, 257},
- {xpoid_val_medium_size_jis_b6, 128, 182},
- {xpoid_val_medium_size_jis_b7, 91, 128},
- {xpoid_val_medium_size_jis_b8, 64, 91},
- {xpoid_val_medium_size_jis_b9, 45, 64},
- {xpoid_val_medium_size_jis_b10, 32, 45},
- {xpoid_val_medium_size_hp_2x_postcard, 148, 200},
- {xpoid_val_medium_size_hp_european_edp, 304.8, 355.6},
- {xpoid_val_medium_size_hp_mini, 139.7, 215.9},
- {xpoid_val_medium_size_hp_postcard, 100, 148},
- {xpoid_val_medium_size_hp_tabloid, 279.4, 431.8},
- {xpoid_val_medium_size_hp_us_edp, 279.4, 355.6},
- {xpoid_val_medium_size_hp_us_government_legal, 203.2, 330.2},
- {xpoid_val_medium_size_hp_us_government_letter, 203.2, 254},
- {xpoid_val_medium_size_iso_c3, 324, 458},
- {xpoid_val_medium_size_iso_c4, 229, 324},
- {xpoid_val_medium_size_iso_c5, 162, 229},
- {xpoid_val_medium_size_iso_c6, 114, 162},
- {xpoid_val_medium_size_iso_designated_long, 110, 220}
-};
-
-/*
- * XpGetResolution returns an integer representing the printer resolution
- * in dots-per-inch for the specified print context.
- *
- * Note: This routine assumes the values found in the passed context's
- * attributes pools have been validated.
- */
-int
-XpGetResolution(
- XpContextPtr pContext)
-{
- unsigned long resolution;
-
- resolution = XpGetCardAttr(pContext, XPPageAttr,
- xpoid_att_default_printer_resolution,
- (XpOidCardList*)NULL);
- if(0 == resolution)
- resolution = XpGetCardAttr(pContext, XPDocAttr,
- xpoid_att_default_printer_resolution,
- (XpOidCardList*)NULL);
- if(0 == resolution)
- {
- XpOidCardList* resolutions_supported;
- /*
- * default-printer-resolution not specified; default to 1st entry
- * in printer-resolutions-supported.
- */
- resolutions_supported =
- XpGetCardListAttr(pContext, XPPrinterAttr,
- xpoid_att_printer_resolutions_supported,
- (XpOidCardList*)NULL);
- resolution = XpOidCardListGetCard(resolutions_supported, 0);
- XpOidCardListDelete(resolutions_supported);
- }
- return (int)resolution;
-}
-
-/*
- * XpGetContentOrientation determines the content-orientation as
- * determined by the passed context. The page and document pools are
- * queried in turn for a specified content-orientation attribute. If none
- * is found the first content-orientation in the
- * content-orientations-supported printer attribute is taken as the
- * default.
- *
- * Note: This routine assumes the values found in the passed context's
- * attributes pools have been validated.
- */
-XpOid
-XpGetContentOrientation(
- XpContextPtr pContext)
-{
- XpOid orientation;
-
- orientation = XpGetOidAttr(pContext, XPPageAttr,
- xpoid_att_content_orientation,
- (XpOidList*)NULL);
- if(xpoid_none == orientation)
- orientation = XpGetOidAttr(pContext, XPDocAttr,
- xpoid_att_content_orientation,
- (XpOidList*)NULL);
- if(xpoid_none == orientation)
- {
- XpOidList* content_orientations_supported;
-
- content_orientations_supported =
- XpGetListAttr(pContext, XPPrinterAttr,
- xpoid_att_content_orientations_supported,
- (XpOidList*)NULL);
- orientation = XpOidListGetOid(content_orientations_supported, 0);
- XpOidListDelete(content_orientations_supported);
- }
- return orientation;
-}
-
-/*
- * XpGetAvailableCompression determines the available-compression as
- * determined by the passed context. The page and document pools are
- * queried in turn for a specified content-orientation attribute. If none
- * is found the first available-compression in the
- * avaiable-compressions-supported printer attribute is taken as the
- * default.
- *
- * Note: This routine assumes the values found in the passed context's
- * attributes pools have been validated.
- */
-XpOid
-XpGetAvailableCompression(
- XpContextPtr pContext)
-{
- XpOid compression;
-
- compression = XpGetOidAttr(pContext, XPPageAttr,
- xpoid_att_available_compression,
- (XpOidList*)NULL);
- if(xpoid_none == compression)
- compression = XpGetOidAttr(pContext, XPDocAttr,
- xpoid_att_available_compression,
- (XpOidList*)NULL);
- if(xpoid_none == compression)
- {
- XpOidList* available_compressions_supported;
-
- available_compressions_supported =
- XpGetListAttr(pContext, XPPrinterAttr,
- xpoid_att_available_compressions_supported,
- (XpOidList*)NULL);
- compression = XpOidListGetOid(available_compressions_supported, 0);
- XpOidListDelete(available_compressions_supported);
- }
- return compression;
-}
-
-/*
- * XpGetPlex determines the plex as determined by the passed context. The page
- * and document pools are queried in turn for a specified plex attribute. If
- * none is found the first plex in the plexes-supported printer attribute is
- * taken as the default.
- *
- * Note: This routine assumes the values found in the passed context's
- * attributes pools have been validated.
- */
-XpOid
-XpGetPlex(
- XpContextPtr pContext)
-{
- XpOid plex;
-
- plex = XpGetOidAttr(pContext, XPPageAttr, xpoid_att_plex,
- (XpOidList*)NULL);
- if(xpoid_none == plex)
- plex = XpGetOidAttr(pContext, XPDocAttr, xpoid_att_plex,
- (XpOidList*)NULL);
- if(xpoid_none == plex)
- {
- XpOidList* plexes_supported;
-
- plexes_supported =
- XpGetListAttr(pContext, XPPrinterAttr,
- xpoid_att_plexes_supported,
- (XpOidList*)NULL);
- plex = XpOidListGetOid(plexes_supported, 0);
- XpOidListDelete(plexes_supported);
- }
- return plex;
-}
-
-/*
- * XpGetPageSize returns the XpOid of the current page size (medium names
- * are page sizes in this implementation) as indicated by the passed
- * context.
- *
- * The relevant input-tray is returned in pTray. This parm must not be
- * NULL. If the input-tray is not indicated or irrelevant, xpoid_none
- * will be returned.
- *
- * This function optionally takes a XpOidMediumSS representation of the
- * medium-source-sizes-supported attribute in order to avoid parsing the
- * string value twice for calling functions that need to parse m-s-s-s
- * anyway (e.g. XpGetReproductionArea). If the caller has no other reason
- * to parse medium-source-sizes-supported, it is recommended that NULL be
- * passed. This function will obtain medium-source-sizes-supported if it
- * needs to.
- *
- * Note: This routine assumes the values found in the passed context's
- * attributes pools have been validated.
- */
-XpOid
-XpGetPageSize(XpContextPtr pContext,
- XpOid* pTray,
- const XpOidMediumSS* msss)
-{
- XpOid medium;
- /*
- * check to see if default-medium is specified
- */
- medium = XpGetOidAttr(pContext, XPPageAttr, xpoid_att_default_medium,
- (const XpOidList*)NULL);
- if(medium == xpoid_none)
- {
- /*
- * default-medium not in page pool; try the document pool
- */
- medium = XpGetOidAttr(pContext, XPDocAttr, xpoid_att_default_medium,
- (const XpOidList*)NULL);
- }
- if(medium == xpoid_none)
- {
- /*
- * default-medium not specified; try default-input-tray
- */
- *pTray = XpGetOidAttr(pContext, XPPageAttr,
- xpoid_att_default_input_tray,
- (const XpOidList*)NULL);
- if(*pTray == xpoid_none)
- {
- /*
- * default-input-tray not in page pool; try the document pool
- */
- *pTray = XpGetOidAttr(pContext, XPDocAttr,
- xpoid_att_default_input_tray,
- (const XpOidList*)NULL);
- }
- if(*pTray != xpoid_none)
- {
- /*
- * default-input-tray found; get corresponding medium from
- * input-trays-medium
- */
- XpOidTrayMediumList* input_trays_medium;
- int i;
-
- input_trays_medium =
- XpGetTrayMediumListAttr(pContext, XPPrinterAttr,
- xpoid_att_input_trays_medium,
- (const XpOidList*)NULL,
- (const XpOidMediumSS*)NULL);
- for(i = 0; i < XpOidTrayMediumListCount(input_trays_medium); i++)
- {
- if(*pTray == XpOidTrayMediumListTray(input_trays_medium, i))
- {
- medium = XpOidTrayMediumListMedium(input_trays_medium, i);
- break;
- }
- }
- XpOidTrayMediumListDelete(input_trays_medium);
- }
- }
- else
- *pTray = xpoid_none;
-
- if(medium == xpoid_none)
- {
- XpOidMediumSS* local_msss = (XpOidMediumSS*)NULL;
- int i_mss, i_ds;
- XpOidMediumDiscreteSizeList* ds_list;
- /*
- * no medium specified; use 1st page size found in
- * medium-source-sizes-supported
- */
- if((XpOidMediumSS*)NULL == msss)
- msss = local_msss =
- XpGetMediumSSAttr(pContext, XPPrinterAttr,
- xpoid_att_medium_source_sizes_supported,
- (const XpOidList*)NULL,
- (const XpOidList*)NULL);
- for(i_mss = 0;
- i_mss < XpOidMediumSSCount(msss) && xpoid_none == medium;
- i_mss++)
- {
- if(XpOidMediumSS_DISCRETE == (msss->mss)[i_mss].mstag
- &&
- xpoid_none != (msss->mss)[i_mss].input_tray)
- {
- ds_list = (msss->mss)[i_mss].ms.discrete;
- for(i_ds = 0; i_ds < ds_list->count; i_ds++)
- {
- if(xpoid_none != (ds_list->list)[i_ds].page_size)
- {
- medium = (ds_list->list)[i_ds].page_size;
- break;
- }
- }
- }
- }
- XpOidMediumSSDelete(local_msss);
- }
- return medium;
-}
-
-/*
- * XpGetMediumMillimeters returns into the supplied float pointers the
- * width and height in millimeters of the passed page size identifier.
- */
-void
-XpGetMediumMillimeters(
- XpOid page_size,
- float *width, /* return */
- float *height) /* return */
-{
- int i;
-
- *width = *height = 0;
- for(i = 0; i < XpNumber(PageDimensions); i++)
- {
- if(page_size == PageDimensions[i].page_size)
- {
- *width = PageDimensions[i].width;
- *height = PageDimensions[i].height;
- return;
- }
- }
-}
-
-/*
- * Converts a millimeter specification into pixels given a resolution in
- * DPI.
- */
-static float
-MmToPixels(float mm, int resolution)
-{
- float f;
-
- f = mm * resolution;
- f /= 25.4;
- return f;
-}
-
-/*
- * XpGetMediumDimensions returns into the supplied short pointers the
- * width and height in pixels of the medium associated with the specified
- * print context. It obtains the page size associated with the current
- * medium by calling XpGetPageSize. It passes XpGetMediumMillimeters the
- * page size, and converts the returned millimeter dimensions into pixels
- * using the resolution returned by XpGetResolution.
- *
- * Note: This routine assumes the values found in the passed context's
- * attributes pools have been validated.
- */
-void
-XpGetMediumDimensions(
- XpContextPtr pContext,
- unsigned short *width, /* return */
- unsigned short *height) /* return */
-{
- XpOid page_size;
- XpOid tray;
- XpOid orientation;
-
- int resolution;
- float w_mm, h_mm;
-
- page_size = XpGetPageSize(pContext, &tray, (XpOidMediumSS*)NULL);
- if(page_size == xpoid_none)
- {
- /*
- * fail-safe: if the pools have been validated, this defaulting logic
- * isn't needed.
- */
- page_size = xpoid_val_medium_size_na_letter;
- }
- XpGetMediumMillimeters(page_size, &w_mm, &h_mm);
- resolution = XpGetResolution(pContext);
- orientation = XpGetContentOrientation(pContext);
- switch(orientation)
- {
- case xpoid_val_content_orientation_landscape:
- case xpoid_val_content_orientation_reverse_landscape:
- /*
- * transpose width and height
- */
- *height = MmToPixels(w_mm, resolution);
- *width = MmToPixels(h_mm, resolution);
- break;
-
- default:
- *width = MmToPixels(w_mm, resolution);
- *height = MmToPixels(h_mm, resolution);
- break;
- }
-}
-
-/*
- * XRectangleFromXpOidArea converts an XpOidArea area specification
- * into an XRectangle. The passed resolution is used to convert from
- * millimeters (XpOidArea) into pixels (XRectangle).
- */
-static void
-XRectangleFromXpOidArea(
- xRectangle *pRect,
- const XpOidArea* repro,
- int resolution,
- XpOid orientation)
-{
- switch(orientation)
- {
- case xpoid_val_content_orientation_landscape:
- case xpoid_val_content_orientation_reverse_landscape:
- /*
- * transpose x and y, width and height
- */
- pRect->y = MmToPixels(repro->minimum_x, resolution);
- pRect->x = MmToPixels(repro->minimum_y, resolution);
- pRect->height =
- MmToPixels(repro->maximum_x - repro->minimum_x, resolution);
- pRect->width =
- MmToPixels(repro->maximum_y - repro->minimum_y, resolution);
- break;
-
- default:
- pRect->x = MmToPixels(repro->minimum_x, resolution);
- pRect->y = MmToPixels(repro->minimum_y, resolution);
- pRect->width =
- MmToPixels(repro->maximum_x - repro->minimum_x, resolution);
- pRect->height =
- MmToPixels(repro->maximum_y - repro->minimum_y, resolution);
- break;
- }
-}
-
-/*
- * XpGetReproductionArea queries the current pool attribute values in
- * order to determine the reproduction area for the currently selected
- * medium.
- *
- * First the current page size (equivalent to current medium) and tray
- * (if specified) is retrieved via XpGetPageSize. The value of the
- * medium-source-sizes-supported attribute is interrogated until a matching
- * entry for the current page size and tray is found. The reproduction
- * area defined for the current entry is converted into an XRectangle
- * using XRectangleFromXpOidArea and returned to the caller.
- *
- * Note: This routine assumes the values found in the passed context's
- * attributes pools have been validated.
- */
-void
-XpGetReproductionArea(XpContextPtr pContext,
- xRectangle *pRect)
-{
- XpOid page_size;
- XpOid tray;
- XpOidMediumSS* msss;
- int i_mss, i_ds;
- XpOidMediumDiscreteSizeList* ds_list;
- XpOidArea* repro;
- BOOL done;
- int resolution;
- XpOid orientation;
- /*
- * find the appropriate assured reproduction area for the current
- * tray and page size in the medium-source-sizes-supported attribute.
- */
- msss = XpGetMediumSSAttr(pContext, XPPrinterAttr,
- xpoid_att_medium_source_sizes_supported,
- (const XpOidList*)NULL,
- (const XpOidList*)NULL);
- page_size = XpGetPageSize(pContext, &tray, msss);
- resolution = XpGetResolution(pContext);
- orientation = XpGetContentOrientation(pContext);
-
- memset(pRect, 0, sizeof(xRectangle));
-
- if(xpoid_none == tray)
- {
- /*
- * no tray specified; use 1st matching page size
- */
- for(i_mss = 0, done = xFalse;
- i_mss < XpOidMediumSSCount(msss) && !done;
- i_mss++)
- {
- if(XpOidMediumSS_DISCRETE == (msss->mss)[i_mss].mstag
- &&
- xpoid_none != (msss->mss)[i_mss].input_tray)
- {
- ds_list = (msss->mss)[i_mss].ms.discrete;
- for(i_ds = 0; i_ds < ds_list->count; i_ds++)
- {
- if(page_size == (ds_list->list)[i_ds].page_size)
- {
- repro =
- &(ds_list->list)[i_ds].assured_reproduction_area;
- XRectangleFromXpOidArea(pRect, repro,
- resolution, orientation);
- done = xTrue;
- break;
- }
- }
- }
- }
- }
- else
- {
- /*
- * tray && page size specified; find matching entry
- */
- for(i_mss = 0, done = xFalse;
- i_mss < XpOidMediumSSCount(msss) && !done;
- i_mss++)
- {
- if(XpOidMediumSS_DISCRETE == (msss->mss)[i_mss].mstag
- &&
- xpoid_none != (msss->mss)[i_mss].input_tray
- &&
- (tray == (msss->mss)[i_mss].input_tray
- ||
- xpoid_unspecified == (msss->mss)[i_mss].input_tray)
- )
- {
- ds_list = (msss->mss)[i_mss].ms.discrete;
- for(i_ds = 0; i_ds < ds_list->count; i_ds++)
- {
- if(page_size == (ds_list->list)[i_ds].page_size)
- {
- repro =
- &(ds_list->list)[i_ds].assured_reproduction_area;
- XRectangleFromXpOidArea(pRect, repro,
- resolution, orientation);
- if(xpoid_unspecified != (msss->mss)[i_mss].input_tray)
- {
- /*
- * exact match on tray takes precendence over
- * unspecified tray entry in m-s-s-s
- */
- done = xTrue;
- }
- break;
- }
- }
- }
- }
- }
- XpOidMediumSSDelete(msss);
-}
-
-/*
- * XpGetMaxWidthHeightRes returns into the supplied width and height
- * unsigned short pointers the dimensions in millimeters of the largest
- * supported media for a specific printer. It looks at the
- * medium-source-sizes-supported attribute (if it exists) to determine
- * the list of possible media, and calls XpGetMediumMillimeters to get the
- * dimensions for each medium. If the m-s-s-s attribute is not defined,
- * then the dimensions for the na-letter medium is returned.
- *
- * This function also returns the largest resolution in DPI defined in
- * printer-resolutions-supported. If printer-resolutions-supported is not
- * specified, the default is obtained from the passed XpValidatePoolsRec.
- *
- * The passed XpValidatePoolsRec is also used to determine valid values
- * when parsing attribute values.
- */
-void
-XpGetMaxWidthHeightRes(
- const char *printer_name,
- const XpValidatePoolsRec* vpr,
- float *width,
- float *height,
- int* resolution)
-{
- const char* value;
- const char* attr_str;
- XpOidMediumSS* pool_msss;
- const XpOidMediumSS* msss;
- int i_mss, i_ds;
- XpOidMediumDiscreteSizeList* ds_list;
- float w, h;
- XpOidCardList* pool_resolutions_supported;
- const XpOidCardList* resolutions_supported;
- int i;
- int res;
- /*
- * get the max medium width and height
- */
- attr_str = XpOidString(xpoid_att_medium_source_sizes_supported);
- value = XpGetPrinterAttribute(printer_name, attr_str);
- pool_msss = XpOidMediumSSNew(value,
- vpr->valid_input_trays,
- vpr->valid_medium_sizes);
- if(0 == XpOidMediumSSCount(pool_msss))
- msss = XpGetDefaultMediumSS();
- else
- msss = pool_msss;
- *width = *height = 0;
- for(i_mss = 0; i_mss < XpOidMediumSSCount(msss); i_mss++)
- {
- if(XpOidMediumSS_DISCRETE == (msss->mss)[i_mss].mstag
- &&
- xpoid_none != (msss->mss)[i_mss].input_tray)
- {
- ds_list = (msss->mss)[i_mss].ms.discrete;
- for(i_ds = 0; i_ds < ds_list->count; i_ds++)
- {
- if(xpoid_none != (ds_list->list)[i_ds].page_size)
- {
- XpGetMediumMillimeters((ds_list->list)[i_ds].page_size,
- &w, &h);
- if(w > *width) *width = w;
- if(h > *height) *height = h;
- }
- }
- }
- }
- XpOidMediumSSDelete(pool_msss);
- /*
- * get the maximum resolution
- */
- attr_str = XpOidString(xpoid_att_printer_resolutions_supported);
- value = XpGetPrinterAttribute(printer_name, attr_str);
- pool_resolutions_supported =
- XpOidCardListNew(value, vpr->valid_printer_resolutions_supported);
- if(0 == XpOidCardListCount(pool_resolutions_supported))
- resolutions_supported = vpr->default_printer_resolutions_supported;
- else
- resolutions_supported = pool_resolutions_supported;
- *resolution = 0;
- for(i = 0; i < XpOidCardListCount(resolutions_supported); i++)
- {
- res = XpOidCardListGetCard(resolutions_supported, i);
- if(res > *resolution) *resolution = res;
- }
- XpOidCardListDelete(pool_resolutions_supported);
-}
-
-FontResolutionPtr
-XpGetClientResolutions(client, num)
- ClientPtr client;
- int *num;
-{
- static struct _FontResolution res;
- int resolution = XpGetResolution(XpContextOfClient(client));
-
- res.x_resolution = resolution;
- res.y_resolution = resolution;
-
- res.point_size = 120;
-
- *num = 1;
-
- return &res;
-}
-
-
-void XpSetFontResFunc(client)
- ClientPtr client;
-{
- client->fontResFunc = XpGetClientResolutions;
-}
-
-
-void XpUnsetFontResFunc(client)
- ClientPtr client;
-{
- client->fontResFunc = NULL;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl-mono/Imakefile b/nx-X11/programs/Xserver/Xprint/pcl-mono/Imakefile
deleted file mode 100644
index 30d577772..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl-mono/Imakefile
+++ /dev/null
@@ -1,6 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:09 cpqbld Exp $
-#define PclDriver -DXP_PCL_MONO
-#define LinkDirectory ../pcl
-
-#include "../pcl/Imakefile"
-
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/Imakefile b/nx-X11/programs/Xserver/Xprint/pcl/Imakefile
deleted file mode 100644
index 310ae9e20..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/Imakefile
+++ /dev/null
@@ -1,76 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:07 cpqbld Exp $
-
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/Xprint/pcl/Imakefile,v 1.7 2001/08/01 00:44:45 tsi Exp $
-
-#include <Server.tmpl>
-
-#ifndef PixelSize
-#define PixelSize 8
-#endif
-
-#ifdef PclDriver
-PCL_DRIVER = PclDriver
-#else
-PCL_DRIVER = -DXP_PCL_COLOR
-#endif
-
-SRCS1 = PclInit.c PclMisc.c PclWindow.c PclFonts.c PclPrint.c \
- PclArea.c PclArc.c PclGC.c PclLine.c PclPixel.c PclPolygon.c \
- PclSpans.c PclText.c PclCursor.c PclAttr.c PclPixmap.c PclSFonts.c \
- PclColor.c PclAttVal.c
-
-OBJS1 = PclInit.o PclMisc.o PclWindow.o PclFonts.o PclPrint.o \
- PclArea.o PclArc.o PclGC.o PclLine.o PclPixel.o PclPolygon.o \
- PclSpans.o PclText.o PclCursor.o PclAttr.o PclPixmap.o PclSFonts.o \
- PclColor.o PclAttVal.o
-
-SRCS = $(SRCS1)
-
-OBJS = $(OBJS1)
-
-DEFINES = -DPSZ=PixelSize $(PCL_DRIVER) -UXFree86LOADER -D_XP_PRINT_SERVER_
-
- INCLUDES = -I. -I$(XINCLUDESRC) -I.. -I$(LIBSRC) \
- -I../../include -I$(TOP)/include \
- -I$(TOP)/include/extensions -I$(TOP)/include/fonts \
- -I../../mi -I../../mfb -I../../cfb
-
- LINTLIBS = ../../dix/llib-ldix.ln ../../os/llib-los.ln \
- ../../mfb/llib-lmfb.ln ../../mi/llib-lmi.ln \
- ../../cfb/llib-lcfb.ln
-
-NormalLibraryObjectRule()
-
-NormalLibraryTarget(pcl,$(OBJS))
-NormalLintTarget($(SRCS1) $(SRCS2))
-#ifdef LinkDirectory
-LinkSourceFile(Pcl.h,LinkDirectory)
-LinkSourceFile(Pclmap.h,LinkDirectory)
-LinkSourceFile(PclDef.h,LinkDirectory)
-LinkSourceFile(PclSFonts.h,LinkDirectory)
-
-LinkSourceFile(PclArc.c,LinkDirectory)
-LinkSourceFile(PclArea.c,LinkDirectory)
-LinkSourceFile(PclAttr.c,LinkDirectory)
-LinkSourceFile(PclAttVal.c,LinkDirectory)
-LinkSourceFile(PclColor.c,LinkDirectory)
-LinkSourceFile(PclCursor.c,LinkDirectory)
-LinkSourceFile(PclFonts.c,LinkDirectory)
-LinkSourceFile(PclGC.c,LinkDirectory)
-LinkSourceFile(PclInit.c,LinkDirectory)
-LinkSourceFile(PclLine.c,LinkDirectory)
-LinkSourceFile(PclMisc.c,LinkDirectory)
-LinkSourceFile(PclPixel.c,LinkDirectory)
-LinkSourceFile(PclPixmap.c,LinkDirectory)
-LinkSourceFile(PclPolygon.c,LinkDirectory)
-LinkSourceFile(PclPrint.c,LinkDirectory)
-LinkSourceFile(PclSFonts.c,LinkDirectory)
-LinkSourceFile(PclSpans.c,LinkDirectory)
-LinkSourceFile(PclText.c,LinkDirectory)
-LinkSourceFile(PclWindow.c,LinkDirectory)
-#endif
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/Pcl.h b/nx-X11/programs/Xserver/Xprint/pcl/Pcl.h
deleted file mode 100644
index bb1f52b2c..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/Pcl.h
+++ /dev/null
@@ -1,625 +0,0 @@
-/* $Xorg: Pcl.h,v 1.3 2000/08/17 19:48:07 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: Pcl.h
-** *
-** * Contents: defines and includes for the Pcl driver
-** * for a printing X server.
-** *
-** * Created: 1/30/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/Pcl.h,v 1.12 2001/12/21 21:02:05 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _PCL_H_
-#define _PCL_H_
-
-#include <stdio.h>
-#include "scrnintstr.h"
-
-#include "PclDef.h"
-#include "Pclmap.h"
-#include "PclSFonts.h"
-
-#include <X11/extensions/Print.h>
-#include <X11/extensions/Printstr.h>
-
-#include "regionstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-
-/*
- * Some sleazes to force the XrmDB stuff into the server
- */
-#ifndef HAVE_XPointer
-typedef char *XPointer;
-#endif
-#define Status int
-#define True 1
-#define False 0
-#include "misc.h"
-#include <X11/Xfuncproto.h>
-#include <X11/Xresource.h>
-#include "attributes.h"
-
-/******
- * externally visible variables from PclInit.c
- ******/
-extern int PclScreenPrivateIndex, PclWindowPrivateIndex;
-extern int PclContextPrivateIndex;
-extern int PclPixmapPrivateIndex;
-extern int PclGCPrivateIndex;
-
-/******
- * externally visible variables from PclAttVal.c
- ******/
-extern XpValidatePoolsRec PclValidatePoolsRec;
-
-/*
- * This structure defines a mapping from an X colormap ID to a list of
- * print contexts which use the colormap.
- */
-typedef struct _pclcontextlist {
- XpContextPtr context;
- struct _pclcontextlist *next;
-} PclContextList, *PclContextListPtr;
-
-typedef struct _pclcmaptocontexts {
- long colormapId;
- PclContextListPtr contexts;
- struct _pclcmaptocontexts *next;
-} PclCmapToContexts;
-
-typedef struct {
- PclCmapToContexts *colormaps;
- CloseScreenProcPtr CloseScreen;
-} PclScreenPrivRec, *PclScreenPrivPtr;
-
-/*
- * This structure defines a mapping from an X colormap ID to a PCL
- * palette ID.
- */
-typedef struct _palettemap {
- long colormapId;
- int paletteId;
- int downloaded;
- struct _palettemap *next;
-} PclPaletteMap, *PclPaletteMapPtr;
-
-typedef struct {
- char *jobFileName;
- FILE *pJobFile;
- char *pageFileName;
- FILE *pPageFile;
- GC lastGC;
- unsigned char *dash;
- int validGC;
- ClientPtr getDocClient;
- int getDocBufSize;
- PclSoftFontInfoPtr pSoftFontInfo;
- PclPaletteMapPtr palettes;
- int currentPalette;
- int nextPaletteId;
- PclPaletteMap staticGrayPalette;
- PclPaletteMap trueColorPalette;
- PclPaletteMap specialTrueColorPalette;
- unsigned char *ctbl;
- int ctbldim;
- int isRaw;
-#ifdef XP_PCL_LJ3
- unsigned int fcount;
- unsigned int fcount_max;
- char *figures;
-#endif /* XP_PCL_LJ3 */
-} PclContextPrivRec, *PclContextPrivPtr;
-
-typedef struct {
- int validContext;
- XpContextPtr context;
-} PclWindowPrivRec, *PclWindowPrivPtr;
-
-typedef struct {
- unsigned long stippleFg, stippleBg;
-} PclGCPrivRec, *PclGCPrivPtr;
-
-typedef struct {
- XpContextPtr context;
- char *tempFileName;
- FILE *tempFile;
- GC lastGC;
- int validGC;
-} PclPixmapPrivRec, *PclPixmapPrivPtr;
-
-/******
- * Defined functions
- ******/
-#define SEND_PCL(f,c) fwrite( c, sizeof( char ), strlen( c ), f )
-#define SEND_PCL_COUNT(f,c,n) fwrite( c, sizeof( char ), n, f )
-
-#ifndef XP_PCL_LJ3
-#define SAVE_PCL(f,p,c) SEND_PCL(f,c)
-#define SAVE_PCL_COUNT(f,p,c,n) SEND_PCL_COUNT(f,c,n)
-#define MACRO_START(f,p) SEND_PCL(f, "\033&f1Y\033&f0X")
-#define MACRO_END(f) SEND_PCL(f, "\033&f1X")
-#else
-#define SAVE_PCL(f,p,c) PclSpoolFigs(p, c, strlen(c))
-#define SAVE_PCL_COUNT(f,p,c,n) PclSpoolFigs(p, c, n)
-#define MACRO_START(f,p) p->fcount = 0
-#define MACRO_END(f) /* do nothing */
-#endif /* XP_PCL_LJ3 */
-
-#define MIN(a,b) (((a)<(b))?(a):(b))
-#ifndef MAX
-#define MAX(a,b) (((a)>(b))?(a):(b))
-#endif
-
-/******
- * Functions in PclArc.c
- ******/
-extern void PclPolyArc(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nArcs,
- xArc *pArcs);
-extern void PclPolyFillArc(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nArcs,
- xArc *pArcs);
-
-/******
- * Functions in PclArea.c
- ******/
-extern void PclPutImage(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int depth,
- int x,
- int y,
- int w,
- int h,
- int leftPad,
- int format,
- char *pImage);
-extern RegionPtr PclCopyArea(
- DrawablePtr pSrc,
- DrawablePtr pDst,
- GCPtr pGC,
- int srcx,
- int srcy,
- int width,
- int height,
- int dstx,
- int dsty);
-RegionPtr PclCopyPlane(
- DrawablePtr pSrc,
- DrawablePtr pDst,
- GCPtr pGC,
- int srcx,
- int srcy,
- int width,
- int height,
- int dstx,
- int dsty,
- unsigned long plane);
-
-
-/******
- * Functions in PclAttr.c
- ******/
-extern char *PclGetAttributes(
- XpContextPtr pCon,
- XPAttributes pool );
-extern char *PclGetOneAttribute(
- XpContextPtr pCon,
- XPAttributes pool,
- char *attr );
-extern int PclAugmentAttributes(
- XpContextPtr pCon,
- XPAttributes pool,
- char *attrs );
-extern int PclSetAttributes(
- XpContextPtr pCon,
- XPAttributes pool,
- char *attrs );
-
-/******
- * Functions in PclColor.c
- ******/
-extern Bool PclCreateDefColormap(ScreenPtr pScreen);
-extern Bool PclCreateColormap(ColormapPtr pColor);
-extern void PclDestroyColormap(ColormapPtr pColor);
-extern void PclInstallColormap(ColormapPtr pColor);
-extern void PclUninstallColormap(ColormapPtr pColor);
-extern int PclListInstalledColormaps(ScreenPtr pScreen,
- XID *pCmapList);
-extern void PclStoreColors(ColormapPtr pColor,
- int ndef,
- xColorItem *pdefs);
-extern void PclResolveColor(unsigned short *pRed,
- unsigned short *pGreen,
- unsigned short *pBlue,
- VisualPtr pVisual);
-extern int PclUpdateColormap(DrawablePtr pDrawable,
- XpContextPtr pCon,
- GCPtr gc,
- FILE *outFile);
-extern void PclLookUp(ColormapPtr cmap,
- PclContextPrivPtr cPriv,
- unsigned short *r,
- unsigned short *g,
- unsigned short *b);
-extern PclPaletteMapPtr PclFindPaletteMap(PclContextPrivPtr cPriv,
- ColormapPtr cmap,
- GCPtr gc);
-extern unsigned char *PclReadMap(char *, int *);
-
-
-/******
- * Functions in PclCursor.c
- ******/
-extern void PclConstrainCursor(
- ScreenPtr pScreen,
- BoxPtr pBox);
-extern void PclCursorLimits(
- ScreenPtr pScreen,
- CursorPtr pCursor,
- BoxPtr pHotBox,
- BoxPtr pTopLeftbox);
-extern Bool PclDisplayCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor);
-extern Bool PclRealizeCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor);
-extern Bool PclUnrealizeCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor);
-extern void PclRecolorCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor,
- Bool displayed);
-extern Bool PclSetCursorPosition(
- ScreenPtr pScreen,
- int x,
- int y,
- Bool generateEvent);
-
-/******
- * Functions in PclSFonts.c
- ******/
-extern void
-PclDownloadSoftFont8(
- FILE *fp,
- PclSoftFontInfoPtr pSoftFontInfo,
- PclFontHead8Ptr pfh,
- PclCharDataPtr pcd,
- unsigned char *code);
-extern void PclDownloadSoftFont16(
- FILE *fp,
- PclSoftFontInfoPtr pSoftFontInfo,
- PclFontHead16Ptr pfh,
- PclCharDataPtr pcd,
- unsigned char row,
- unsigned char col);
-extern PclSoftFontInfoPtr PclCreateSoftFontInfo(void);
-extern void PclDestroySoftFontInfo(
- PclSoftFontInfoPtr pSoftFontInfo );
-
-/******
- * Functions in PclGC.c
- ******/
-extern Bool PclCreateGC(GCPtr pGC);
-extern void PclDestroyGC(GCPtr pGC);
-extern int PclUpdateDrawableGC(
- GCPtr pGC,
- DrawablePtr pDrawable,
- FILE **outFile);
-extern void PclValidateGC(
- GCPtr pGC,
- unsigned long changes,
- DrawablePtr pDrawable);
-extern void PclSetDrawablePrivateStuff(
- DrawablePtr pDrawable,
- GC gc );
-extern int PclGetDrawablePrivateStuff(
- DrawablePtr pDrawable,
- GC *gc,
- unsigned long *valid,
- FILE **file );
-extern void PclSetDrawablePrivateGC(
- DrawablePtr pDrawable,
- GC gc);
-extern void PclComputeCompositeClip(
- GCPtr pGC,
- DrawablePtr pDrawable);
-
-/******
- * Functions in PclInit.c
- ******/
-extern Bool PclCloseScreen(
- int index,
- ScreenPtr pScreen);
-extern Bool InitializeColorPclDriver(
- int ndx,
- ScreenPtr pScreen,
- int argc,
- char **argv);
-extern Bool InitializeMonoPclDriver(
- int ndx,
- ScreenPtr pScreen,
- int argc,
- char **argv);
-extern Bool InitializeLj3PclDriver(
- int ndx,
- ScreenPtr pScreen,
- int argc,
- char **argv);
-extern XpContextPtr PclGetContextFromWindow( WindowPtr win );
-
-/******
- * Functions in PclLine.c
- ******/
-extern void PclPolyLine(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int mode,
- int nPoints,
- xPoint *pPoints);
-extern void PclPolySegment(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nSegments,
- xSegment *pSegments);
-
-/******
- * Functions in PclMisc.c
- ******/
-extern void PclQueryBestSize(
- int class,
- short *pwidth,
- short *pheight,
- ScreenPtr pScreen);
-extern char *GetPropString(WindowPtr pWin, char *propName);
-extern int SystemCmd(char *cmdStr);
-extern int PclGetMediumDimensions(
- XpContextPtr pCon,
- CARD16 *pWidth,
- CARD16 *pHeight);
-extern int PclGetReproducibleArea(
- XpContextPtr pCon,
- xRectangle *pRect);
-extern void PclSendData(
- FILE *outFile,
- PclContextPrivPtr pConPriv,
- BoxPtr pbox,
- int nbox,
- double ratio);
-
-/******
- * Functions in PclPixel.c
- ******/
-extern void PclPolyPoint(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int mode,
- int nPoints,
- xPoint *pPoints);
-extern void PclPushPixels(
- GCPtr pGC,
- PixmapPtr pBitmap,
- DrawablePtr pDrawable,
- int width,
- int height,
- int x,
- int y);
-
-/******
- * Functions in PclPixmap.c
- ******/
-extern PixmapPtr PclCreatePixmap(
- ScreenPtr pScreen,
- int width,
- int height,
- int depth);
-extern Bool PclDestroyPixmap(PixmapPtr pPixmap);
-
-/******
- * Functions in PclPolygon.c
- ******/
-extern void PclPolyRectangle(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nRects,
- xRectangle *pRects);
-extern void PclFillPolygon(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int shape,
- int mode,
- int nPoints,
- DDXPointPtr pPoints);
-extern void PclPolyFillRect(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nRects,
- xRectangle *pRects);
-
-/******
- * Functions in PclSpans.c
- ******/
-extern void PclFillSpans(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nSpans,
- DDXPointPtr pPoints,
- int *pWidths,
- int fSorted);
-extern void PclSetSpans(
- DrawablePtr pDrawable,
- GCPtr pGC,
- char *pSrc,
- DDXPointPtr pPoints,
- int *pWidths,
- int nSpans,
- int fSorted);
-
-/******
- * Functions in PclText.c
- ******/
-extern int PclPolyText8(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int count,
- char *string);
-extern int PclPolyText16(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int count,
- unsigned short *string);
-extern void PclImageText8(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int count,
- char *string);
-extern void PclImageText16(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int count,
- unsigned short *string);
-extern void PclImageGlyphBlt(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- unsigned int nGlyphs,
- CharInfoPtr *pCharInfo,
- pointer pGlyphBase);
-extern void PclPolyGlyphBlt(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- unsigned int nGlyphs,
- CharInfoPtr *pCharInfo,
- pointer pGlyphBase);
-
-/******
- * Functions in PclWindow.c
- ******/
-extern Bool PclCreateWindow(register WindowPtr pWin);
-extern Bool PclDestroyWindow(WindowPtr pWin);
-extern Bool PclMapWindow(WindowPtr pWindow);
-extern Bool PclPositionWindow(
- register WindowPtr pWin,
- int x,
- int y);
-extern Bool PclUnmapWindow(WindowPtr pWindow);
-extern void PclCopyWindow(
- WindowPtr pWin,
- DDXPointRec ptOldOrg,
- RegionPtr prgnSrc);
-extern Bool PclChangeWindowAttributes(
- register WindowPtr pWin,
- register unsigned long mask);
-extern void PclPaintWindow(
- WindowPtr pWin,
- RegionPtr pRegion,
- int what);
-
-/******
- * Functions in PclFonts.c
- ******/
-extern Bool PclRealizeFont(
- ScreenPtr pscr,
- FontPtr pFont);
-extern Bool PclUnrealizeFont(
- ScreenPtr pscr,
- FontPtr pFont);
-
-/******
- * Functions in PclPrint.c
- ******/
-extern int PclStartJob(
- XpContextPtr pCon,
- Bool sendClientData,
- ClientPtr client);
-extern int PclEndJob(
- XpContextPtr pCon,
- Bool cancel);
-extern int PclStartPage(
- XpContextPtr pCon,
- WindowPtr pWin);
-extern int PclEndPage(
- XpContextPtr pCon,
- WindowPtr pWin);
-extern int PclStartDoc(XpContextPtr pCon,
- XPDocumentType type);
-extern int PclEndDoc(
- XpContextPtr pCon,
- Bool cancel);
-extern int PclDocumentData(
- XpContextPtr pCon,
- DrawablePtr pDraw,
- char *pData,
- int len_data,
- char *pFmt,
- int len_fmt,
- char *pOpt,
- int len_opt,
- ClientPtr client);
-extern int PclGetDocumentData(
- XpContextPtr pCon,
- ClientPtr client,
- int maxBufferSize);
-
-
-#endif /* _PCL_H_ */
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclArc.c b/nx-X11/programs/Xserver/Xprint/pcl/PclArc.c
deleted file mode 100644
index d675e1699..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclArc.c
+++ /dev/null
@@ -1,270 +0,0 @@
-/* $Xorg: PclArc.c,v 1.3 2000/08/17 19:48:07 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclArc.c
-** *
-** * Contents:
-** * Arc-drawing code for the PCL DDX driver
-** *
-** * Created: 10/23/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclArc.c,v 1.4 1999/12/13 02:12:53 robin Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <math.h>
-#include <errno.h>
-
-#include "Pcl.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "attributes.h"
-
-static void
-PclDoArc(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nArcs,
- xArc *pArcs,
- void (*DoIt)(FILE *, PclContextPrivPtr, double, double, xArc))
-{
- char t[80];
- FILE *outFile;
- int nbox, i;
- BoxPtr pbox;
- BoxRec r;
- RegionPtr drawRegion, region, transClip;
- short fudge;
- int xoffset, yoffset;
- XpContextPtr pCon;
- PclContextPrivPtr pConPriv;
- xRectangle repro;
-
- if( PclUpdateDrawableGC( pGC, pDrawable, &outFile ) == FALSE )
- return;
-
- fudge = 3 * pGC->lineWidth;
-
- pCon = PclGetContextFromWindow( (WindowPtr) pDrawable );
- pConPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
- XpGetReproductionArea( pCon, &repro );
-
- /*
- * Generate the PCL code to draw the collection of arcs, by
- * defining it as a macro which uses the HP-GL/2 arc drawing
- * function.
- */
-
- xoffset = pDrawable->x;
- yoffset = pDrawable->y;
-
- for( i = 0; i < nArcs; i++ )
- {
- xArc Arc = pArcs[i];
- double b, X, Y, ratio;
- double angle1;
-
- MACRO_START( outFile, pConPriv );
- SAVE_PCL( outFile, pConPriv, "\033%0B" );
-
- /* Calculate the start of the arc */
- if( ( Arc.angle1 / 64 ) % 360 == 90 )
- {
- X = 0;
- Y = -Arc.height / 2.0;
- }
- else if( ( Arc.angle1 / 64 ) % 360 == 270 )
- {
- X = 0;
- Y = Arc.height / 2.0;
- }
- else
- {
- /* Convert the angle to radians */
- angle1 = ( Arc.angle1 / 64.0 ) * 3.141592654 / 180.0;
-
- b = (Arc.height / 2.0);
- X = b * cos( angle1 );
- Y = -b * sin( angle1 );
- }
-
- /* Change the coordinate system to scale the ellipse */
- ratio = (double)Arc.height / (double)Arc.width;
-
- sprintf( t, "SC%.2f,%.2f,%d,%d;",
- (repro.x - Arc.width / 2 - xoffset - Arc.x) * ratio,
- (repro.x - Arc.width / 2 - xoffset - Arc.x +
- repro.width) * ratio,
- repro.y - Arc.height / 2 - yoffset - Arc.y + repro.height,
- repro.y - Arc.height / 2 - yoffset - Arc.y);
- SAVE_PCL( outFile, pConPriv, t );
-
- DoIt( outFile, pConPriv, X, Y, Arc );
-
- /* Build the bounding box */
- r.x1 = -Arc.width / 2 - fudge;
- r.y1 = -Arc.height / 2 - fudge;
- r.x2 = Arc.width / 2 + fudge;
- r.y2 = Arc.height / 2 + fudge;
- drawRegion = REGION_CREATE( pGC->pScreen, &r, 0 );
-
- SAVE_PCL( outFile, pConPriv, "\033%0A" );
- MACRO_END( outFile );
-
- /*
- * Intersect the bounding box with the clip region.
- */
- region = REGION_CREATE( pGC->pScreen, NULL, 0 );
- transClip = REGION_CREATE( pGC->pScreen, NULL, 0 );
- REGION_COPY( pGC->pScreen, transClip, pGC->pCompositeClip );
- REGION_TRANSLATE( pGC->pScreen, transClip,
- -(xoffset + Arc.x + Arc.width / 2),
- -(yoffset + Arc.y + Arc.height / 2) );
- REGION_INTERSECT( pGC->pScreen, region, drawRegion, transClip );
-
- /*
- * For each rectangle in the clip region, set the HP-GL/2 "input
- * window" and render the collection of arcs to it.
- */
- pbox = REGION_RECTS( region );
- nbox = REGION_NUM_RECTS( region );
-
- PclSendData(outFile, pConPriv, pbox, nbox, ratio);
-
- /*
- * Restore the coordinate system
- */
- sprintf( t, "\033%%0BSC%d,%d,%d,%d;\033%%0A", repro.x,
- repro.x + repro.width, repro.y + repro.height,
- repro.y );
- SEND_PCL( outFile, t );
-
- /*
- * Clean up the temporary regions
- */
- REGION_DESTROY( pGC->pScreen, drawRegion );
- REGION_DESTROY( pGC->pScreen, region );
- REGION_DESTROY( pGC->pScreen, transClip );
- }
-}
-
-/*
- * Draw a simple non-filled arc, centered on the origin and starting
- * at the given point.
- */
-static void
-DrawArc(FILE *outFile,
- PclContextPrivPtr pConPriv,
- double X,
- double Y,
- xArc A)
-{
- char t[80];
-
- sprintf( t, "PU%d,%d;PD;AA0,0,%.2f;", (int)X, (int)Y,
- (float)A.angle2 / -64.0 );
- SAVE_PCL(outFile, pConPriv, t);
-}
-
-void
-PclPolyArc(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nArcs,
- xArc *pArcs)
-{
- PclDoArc( pDrawable, pGC, nArcs, pArcs, DrawArc );
-}
-
-/*
- * Draw a filled wedge, from the origin, to the given point, through
- * the appropriate angle, and back to the origin.
- */
-static void
-DoWedge(FILE *outFile,
- PclContextPrivPtr pConPriv,
- double X,
- double Y,
- xArc A)
-{
- char t[80];
-
- sprintf( t, "PU0,0;WG%.2f,%.2f,%.2f;", sqrt( X * X + Y * Y ),
- (float)A.angle1 / -64.0,
- (float)A.angle2 / -64.0 );
- SAVE_PCL(outFile, pConPriv, t);
-}
-
-static void
-DoChord(FILE *outFile,
- PclContextPrivPtr pConPriv,
- double X,
- double Y,
- xArc A)
-{
- char t[80];
-
- sprintf( t, "PU%d,%d;PM0;AA0,0,%.2f;PA%d,%d;PM2;FP;", (int)X, (int)Y,
- (float)A.angle2 / -64.0 , (int)X, (int)Y );
- SAVE_PCL(outFile, pConPriv, t);
-}
-
-
-void
-PclPolyFillArc(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nArcs,
- xArc *pArcs)
-{
- switch( pGC->arcMode )
- {
- case ArcChord:
- PclDoArc( pDrawable, pGC, nArcs, pArcs, DoChord );
- break;
- case ArcPieSlice:
- PclDoArc( pDrawable, pGC, nArcs, pArcs, DoWedge );
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclArea.c b/nx-X11/programs/Xserver/Xprint/pcl/PclArea.c
deleted file mode 100644
index cfed7c866..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclArea.c
+++ /dev/null
@@ -1,486 +0,0 @@
-/* $Xorg: PclArea.c,v 1.3 2000/08/17 19:48:07 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclArea.c
-** *
-** * Contents:
-** * Image and Area functions for the PCL DDX driver
-** *
-** * Created: 10/23/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclArea.c,v 1.8 2001/01/17 22:36:30 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include "Pcl.h"
-#include "pixmapstr.h"
-#include "region.h"
-
-#include "cfb.h"
-#if 1
-#include "cfb32.h"
-#endif
-
-void
-PclPutImage(DrawablePtr pDrawable,
- GCPtr pGC,
- int depth,
- int x,
- int y,
- int w,
- int h,
- int leftPad,
- int format,
- char *pImage)
-{
- PixmapPtr pPixmap;
- unsigned long oldFg, oldBg;
- XID gcv[3];
- unsigned long oldPlanemask;
- unsigned long i;
- long bytesPer;
-
- if( ( w == 0 ) || ( h == 0 ) )
- return;
-
- if( format != XYPixmap )
- {
- pPixmap = GetScratchPixmapHeader( pDrawable->pScreen,
- w+leftPad, h, depth,
- BitsPerPixel( depth ),
- PixmapBytePad( w + leftPad,
- depth ), (pointer)pImage );
- if( !pPixmap )
- return;
-
- if( format == ZPixmap )
- (void)(*pGC->ops->CopyArea)( (DrawablePtr)pPixmap, pDrawable, pGC,
- leftPad, 0, w, h, x, y );
- else
- (void)(*pGC->ops->CopyPlane)( (DrawablePtr)pPixmap, pDrawable, pGC,
- leftPad, 0, w, h, x, y, 1 );
- FreeScratchPixmapHeader( pPixmap );
- }
- else
- {
- pPixmap = GetScratchPixmapHeader( pDrawable->pScreen,
- w+leftPad, h, depth,
- BitsPerPixel( depth ),
- PixmapBytePad( w + leftPad,
- depth ), (pointer)pImage );
-
- if( !pPixmap )
- return;
-
- depth = pGC->depth;
- oldPlanemask = pGC->planemask;
- oldFg = pGC->fgPixel;
- oldBg = pGC->bgPixel;
- gcv[0] = ~0L;
- gcv[1] = 0;
- DoChangeGC( pGC, GCForeground | GCBackground, gcv, 0 );
- bytesPer = (long)h * BitmapBytePad( w + leftPad );
-
- for( i = 1 << (depth-1); i != 0; i >>= 1, pImage += bytesPer )
- {
- if( i & oldPlanemask )
- {
- gcv[0] = i;
- DoChangeGC( pGC, GCPlaneMask, gcv, 0 );
- ValidateGC( pDrawable, pGC );
- if (pPixmap->drawable.depth <= 8 )
- cfbPutImage( (DrawablePtr)pPixmap, pGC, 1, x, y, w, h,
- leftPad, XYBitmap, pImage );
- else if (pPixmap->drawable.depth <= 32 )
- cfb32PutImage( (DrawablePtr)pPixmap, pGC, 1, x, y, w, h,
- leftPad, XYBitmap, pImage );
- }
- }
- gcv[0] = oldPlanemask;
- gcv[1] = oldFg;
- gcv[2] = oldBg;
- DoChangeGC( pGC, GCPlaneMask | GCForeground | GCBackground,
- gcv, 0 );
-
- PclCopyArea( (DrawablePtr)pPixmap, pDrawable, pGC, leftPad,
- 0, w, h, x, y );
- FreeScratchPixmapHeader( pPixmap );
- }
-}
-
-/*
- * PclMonoPixmapFragment()
- *
- * Given a 1-bit-deep pixmap, send the appropriate part of it to the
- * output file as a PCL raster graphics command.
- */
-static void
-PclMonoPixmapFragment(FILE *outFile,
- PixmapPtr pix,
- short x1,
- short y1,
- short x2,
- short y2,
- short dstx,
- short dsty)
-{
- char *bits, t[80], *row;
- int h, w, i;
-
- /*
- * Create a storage area large enough to hold the entire pixmap,
- * then use mfbGetImage to get the appropriate bits.
- */
- h = y2 - y1;
- w = BitmapBytePad( x2 - x1 );
-
- bits = (char *)xalloc( h * w );
- mfbGetImage( (DrawablePtr)pix, x1, y1, x2 - x1, h,
- XYPixmap, ~0, bits );
-
- /*
- * Move the cursor to the appropriate place on the page. We have
- * to jump into HP-GL/2 to do this correctly, then go back to PCL
- * for the actual drawing.
- */
- sprintf( t, "\033%%0BPU%d,%d;\033%%1A", dstx, dsty );
- SEND_PCL( outFile, t );
-
- /*
- * Now, wrap the raster in the appropriate PCL code. Right now,
- * it's going to go down the wire without any compression. That
- * will have to be good enough for the sample implementation.
- */
- sprintf( t, "\033*t300R\033*r%dT\033*r%dS\033*r1A\033*b0M",
- h, x2 - x1 );
- SEND_PCL( outFile, t );
-
- sprintf( t, "\033*b%dW", w );
- for( row = bits, i = 0; i <= h; i++, row += w )
- {
- SEND_PCL( outFile, t );
- SEND_PCL_COUNT( outFile, row, w );
- }
-
- SEND_PCL( outFile, "\033*rC" );
-
- /*
- * Clean things up a bit
- */
- xfree( bits );
-}
-
-static void
-PclColorPixmapFragment(FILE *outFile,
- PixmapPtr pix,
- short x1,
- short y1,
- short x2,
- short y2,
- short dstx,
- short dsty)
-{
- char *bits, t[80], *row;
- int h, w, i;
-
- /*
- * Create a storage area large enough to hold the entire pixmap,
- * then use cfbGetImage to get the appropriate bits.
- */
- h = y2 - y1;
- w = PixmapBytePad( x2 - x1, pix->drawable.depth );
-
- bits = (char *)xalloc( h * w );
- if (pix->drawable.depth <= 8)
- cfbGetImage( (DrawablePtr)pix, x1, y1, x2 - x1, h,
- ZPixmap, ~0, bits );
- else if (pix->drawable.depth <= 32)
- cfb32GetImage( (DrawablePtr)pix, x1, y1, x2 - x1, h,
- ZPixmap, ~0, bits );
-
- /*
- * Move the cursor to the appropriate place on the page. We have
- * to jump into HP-GL/2 to do this correctly, then go back to PCL
- * for the actual drawing.
- */
- sprintf( t, "\033%%0BPU%d,%d;\033%%1A", dstx, dsty );
- SEND_PCL( outFile, t );
-
- /*
- * Now, wrap the raster in the appropriate PCL code. Right now,
- * it's going to go down the wire without any compression. That
- * will have to be good enough for the sample implementation.
- */
- sprintf( t, "\033*t300R\033*r%dt%ds1A\033*b0M",
- h, x2 - x1 );
- SEND_PCL( outFile, t );
-
- sprintf( t, "\033*b%dW", w );
- for( row = bits, i = 0; i < h; i++, row += w )
- {
- SEND_PCL( outFile, t );
- SEND_PCL_COUNT( outFile, row, w );
- }
-
- SEND_PCL( outFile, "\033*rC" );
-
- /*
- * Clean things up a bit
- */
- xfree( bits );
-}
-
-RegionPtr
-PclCopyArea(DrawablePtr pSrc,
- DrawablePtr pDst,
- GCPtr pGC,
- int srcx,
- int srcy,
- int width,
- int height,
- int dstx,
- int dsty)
-{
- PixmapPtr pixSrc = (PixmapPtr)pSrc;
-/*
- FILE *srcFile;
- GC srcGC;
-*/
- FILE *dstFile;
- GC dstGC;
- unsigned long valid;
- RegionPtr drawRegion, region, whole, ret;
- BoxRec box;
- BoxPtr prect;
- int nrect;
- void (*doFragment)(FILE *, PixmapPtr, short, short, short, short,
- short, short );
-
- /*
- * Since we don't store any information on a per-window basis, we
- * can't copy from a window.
- */
- if( pSrc->type == DRAWABLE_WINDOW )
- return NULL;
-
- /*
- * If we're copying from a pixmap to a pixmap, we just use the
- * mfb/cfb code to do the work.
- */
- if( pDst->type == DRAWABLE_PIXMAP )
- {
- if( pSrc->depth == 1 )
- return mfbCopyArea( pSrc, pDst, pGC, srcx, srcy, width,
- height, dstx, dsty );
- else if( pSrc->depth <= 8 )
- return cfbCopyArea( pSrc, pDst, pGC, srcx, srcy, width,
- height, dstx, dsty );
- else if( pSrc->depth <= 32 )
- return cfb32CopyArea( pSrc, pDst, pGC, srcx, srcy, width,
- height, dstx, dsty );
- }
-
-/*
- PclGetDrawablePrivateStuff( pSrc, &srcGC, &valid, &srcFile );
-*/
- PclGetDrawablePrivateStuff( pDst, &dstGC, &valid, &dstFile );
-
- /*
- * If we're copying to a window, we have to do some actual
- * drawing, instead of just handing it off to mfb or cfb. Start
- * by determining the region that will be drawn.
- */
- box.x1 = srcx;
- box.y1 = srcy;
- box.x2 = srcx + width;
- box.y2 = srcy + height;
- drawRegion = REGION_CREATE( pGC->pScreen, &box, 0 );
- REGION_TRANSLATE( pGC->pScreen, drawRegion, dstx, dsty );
-
- region = REGION_CREATE( pGC->pScreen, NULL, 0 );
- REGION_INTERSECT( pGC->pScreen, region, drawRegion, pGC->pCompositeClip );
-
- /*
- * Now select the operation to be performed on each box in the
- * region.
- */
- if( pSrc->depth == 1 )
- doFragment = PclMonoPixmapFragment;
- else
- doFragment = PclColorPixmapFragment;
-
- /*
- * Actually draw each section of the bitmap.
- */
- nrect = REGION_NUM_RECTS( region );
- prect = REGION_RECTS( region );
-
- while( nrect )
- {
- (*doFragment)( dstFile, (PixmapPtr)pSrc, prect->x1 - dstx,
- prect->y1 - dsty, prect->x2 - dstx,
- prect->y2 - dsty, prect->x1, prect->y1 );
-
- nrect--;
- prect++;
- }
-
- /*
- * Update the destination's GC to the source's GC.
- */
-/*
- PclSetDrawablePrivateGC( pDst, srcGC );
-*/
-
- /*
- * Determine the region that needs to be returned. This is the
- * region of the source that falls outside the boundary of the
- * pixmap.
- */
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = pixSrc->drawable.width;
- box.y2 = pixSrc->drawable.height;
- whole = REGION_CREATE( pGC->pScreen, &box, 0 );
- ret = REGION_CREATE( pGC->pScreen, NULL, 0 );
-
- REGION_TRANSLATE( pGC->pScreen, drawRegion, -dstx, -dsty );
- REGION_SUBTRACT( pGC->pScreen, ret, drawRegion, whole );
-
- /*
- * Clean up the regions
- */
- REGION_DESTROY( pGC->pScreen, drawRegion );
- REGION_DESTROY( pGC->pScreen, region );
- REGION_DESTROY( pGC->pScreen, whole );
-
- if( REGION_NOTEMPTY( pGC->pScreen, ret ) )
- return ret;
- else
- {
- REGION_DESTROY( pGC->pScreen, ret );
- return NULL;
- }
-}
-
-RegionPtr
-PclCopyPlane(DrawablePtr pSrc,
- DrawablePtr pDst,
- GCPtr pGC,
- int srcx,
- int srcy,
- int width,
- int height,
- int dstx,
- int dsty,
- unsigned long plane)
-{
- RegionPtr reg;
- GCPtr scratchGC;
- PixmapPtr scratchPix;
-
- /*
- * Since we don't store PCL on a per-window basis, there's no good
- * way to copy from a window.
- */
- if( pSrc->type == DRAWABLE_WINDOW )
- return NULL;
-
- /*
- * Copying from a pixmap to a pixmap is already implemented by
- * mfb/cfb.
- */
- if( pSrc->type == DRAWABLE_PIXMAP &&
- pDst->type == DRAWABLE_PIXMAP )
- {
- if( pDst->depth == 1 )
- return mfbCopyPlane( pSrc, pDst, pGC, srcx, srcy, width,
- height, dstx, dsty, plane );
- else if( pDst->depth <= 8 )
- return cfbCopyPlane( pSrc, pDst, pGC, srcx, srcy, width,
- height, dstx, dsty, plane );
- else if( pDst->depth <= 32 )
- return cfb32CopyPlane( pSrc, pDst, pGC, srcx, srcy, width,
- height, dstx, dsty, plane );
- }
-
- /*
- * We can use the mfb/cfbCopyPlane function to do the work of grabbing
- * the plane and converting it to the desired visual. Once that's
- * done, we already know how to do a CopyArea.
- */
- scratchPix = (*pDst->pScreen->CreatePixmap)( pDst->pScreen, width,
- height, pDst->depth );
-
- scratchGC = GetScratchGC( pDst->depth, pDst->pScreen );
- CopyGC( pGC, scratchGC, ~0L );
-
- if( pDst->depth == 1 )
- {
- mfbValidateGC( scratchGC, ~0L, (DrawablePtr)scratchPix );
- mfbCopyPlane( pSrc, (DrawablePtr)scratchPix, scratchGC,
- srcx, srcy, width, height, 0, 0, plane );
- }
- else if( pDst->depth <= 8 )
- {
- cfbValidateGC( scratchGC, ~0L, (DrawablePtr)scratchPix );
- cfbCopyPlane( pSrc, (DrawablePtr)scratchPix, scratchGC,
- srcx, srcy, width, height, 0, 0, plane );
- }
- else if( pDst->depth <= 32 )
- {
- cfb32ValidateGC( scratchGC, ~0L, (DrawablePtr)scratchPix );
- cfb32CopyPlane( pSrc, (DrawablePtr)scratchPix, scratchGC,
- srcx, srcy, width, height, 0, 0, plane );
- }
-
- reg = PclCopyArea( (DrawablePtr)scratchPix, pDst, pGC, 0, 0, width,
- height, dstx, dsty );
-
- FreeScratchGC( scratchGC );
-
- (*pDst->pScreen->DestroyPixmap)( scratchPix );
-
- return reg;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclAttVal.c b/nx-X11/programs/Xserver/Xprint/pcl/PclAttVal.c
deleted file mode 100644
index adbd197fd..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclAttVal.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * $Xorg: PclAttVal.c,v 1.3 2000/08/17 19:48:07 cpqbld Exp $
- */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Pcl.h"
-#include "AttrValid.h"
-
-/*
- * define valid values and defaults for Printer pool
- */
-static XpOid ValidContentOrientationsOids[] = {
- xpoid_val_content_orientation_portrait,
- xpoid_val_content_orientation_landscape,
- xpoid_val_content_orientation_reverse_portrait,
- xpoid_val_content_orientation_reverse_landscape
-};
-static XpOidList ValidContentOrientations = {
- ValidContentOrientationsOids, XpNumber(ValidContentOrientationsOids)
-};
-
-static XpOid DefaultContentOrientationsOids[] = {
- xpoid_val_content_orientation_portrait,
- xpoid_val_content_orientation_landscape
-};
-static XpOidList DefaultContentOrientations = {
- DefaultContentOrientationsOids, XpNumber(DefaultContentOrientationsOids)
-};
-
-static XpOid ValidPlexesOids[] = {
- xpoid_val_plex_simplex, xpoid_val_plex_duplex, xpoid_val_plex_tumble
-};
-static XpOidList ValidPlexes = {
- ValidPlexesOids, XpNumber(ValidPlexesOids)
-};
-
-static XpOid DefaultPlexesOids[] = {
- xpoid_val_plex_simplex
-};
-static XpOidList DefaultPlexes = {
- DefaultPlexesOids, XpNumber(DefaultPlexesOids)
-};
-
-static unsigned long ValidPrinterResolutionsCards[] = {
- 300
-};
-static XpOidCardList ValidPrinterResolutions = {
- ValidPrinterResolutionsCards, XpNumber(ValidPrinterResolutionsCards)
-};
-
-static unsigned long DefaultPrinterResolutionsCards[] = {
- 300
-};
-static XpOidCardList DefaultPrinterResolutions = {
- DefaultPrinterResolutionsCards, XpNumber(DefaultPrinterResolutionsCards)
-};
-
-static XpOid ValidListfontsModesOids[] = {
- xpoid_val_xp_list_internal_printer_fonts, xpoid_val_xp_list_glyph_fonts
-};
-static XpOidList ValidListfontsModes = {
- ValidListfontsModesOids, XpNumber(ValidListfontsModesOids)
-};
-
-static XpOid DefaultListfontsModesOids[] = {
- xpoid_val_xp_list_glyph_fonts
-};
-static XpOidList DefaultListfontsModes = {
- DefaultListfontsModesOids, XpNumber(DefaultListfontsModesOids)
-};
-
-static XpOid ValidSetupProvisoOids[] = {
- xpoid_val_xp_setup_mandatory, xpoid_val_xp_setup_optional
-};
-static XpOidList ValidSetupProviso = {
-
-
- ValidSetupProvisoOids, XpNumber(ValidSetupProvisoOids)
-};
-
-static XpOidDocFmt ValidDocFormatsSupportedFmts[] = {
- { "PCL", "5", NULL },
-};
-static XpOidDocFmtList ValidDocFormatsSupported = {
- ValidDocFormatsSupportedFmts, XpNumber(ValidDocFormatsSupportedFmts)
-};
-
-static XpOidDocFmt DefaultDocFormatsSupportedFmts[] = {
- { "PCL", "5", NULL }
-};
-static XpOidDocFmtList DefaultDocFormatsSupported = {
- DefaultDocFormatsSupportedFmts, XpNumber(DefaultDocFormatsSupportedFmts)
-};
-
-static XpOidDocFmt ValidEmbeddedFormatsSupportedFmts[] = {
- { "HPGL", "2", NULL },
-};
-static XpOidDocFmtList ValidEmbeddedFormatsSupported = {
- ValidEmbeddedFormatsSupportedFmts, XpNumber(ValidEmbeddedFormatsSupportedFmts)
-};
-
-static XpOidDocFmt DefaultEmbeddedFormatsSupportedFmts[] = {
- { "HPGL", "2", NULL }
-};
-static XpOidDocFmtList DefaultEmbeddedFormatsSupported = {
- DefaultEmbeddedFormatsSupportedFmts, XpNumber(DefaultEmbeddedFormatsSupportedFmts)
-};
-
-static XpOidDocFmt ValidRawFormatsSupportedFmts[] = {
- { "PCL", "5", NULL },
- { "Postscript", "2", NULL },
- { "ASCII", NULL, NULL }
-
-};
-static XpOidDocFmtList ValidRawFormatsSupported = {
- ValidRawFormatsSupportedFmts, XpNumber(ValidRawFormatsSupportedFmts)
-};
-
-static XpOidDocFmt DefaultRawFormatsSupportedFmts[] = {
- { "PCL", "5", NULL }
-};
-static XpOidDocFmtList DefaultRawFormatsSupported = {
- DefaultRawFormatsSupportedFmts, XpNumber(DefaultRawFormatsSupportedFmts)
-};
-
-static XpOid ValidInputTraysOids[] = {
- xpoid_val_input_tray_manual,
- xpoid_val_input_tray_main,
- xpoid_val_input_tray_envelope,
- xpoid_val_input_tray_large_capacity,
- xpoid_val_input_tray_bottom
-};
-static XpOidList ValidInputTrays = {
- ValidInputTraysOids, XpNumber(ValidInputTraysOids)
-};
-
-static XpOid ValidMediumSizesOids[] = {
- xpoid_val_medium_size_iso_a3,
- xpoid_val_medium_size_iso_a4,
- xpoid_val_medium_size_na_letter,
- xpoid_val_medium_size_na_legal,
- xpoid_val_medium_size_executive,
- xpoid_val_medium_size_ledger,
- xpoid_val_medium_size_iso_c5,
- xpoid_val_medium_size_iso_designated_long,
- xpoid_val_medium_size_na_number_10_envelope,
- xpoid_val_medium_size_monarch_envelope,
- xpoid_val_medium_size_jis_b5,
-};
-static XpOidList ValidMediumSizes = {
- ValidMediumSizesOids, XpNumber(ValidMediumSizesOids)
-};
-
-static XpOidDocFmt DefaultDocumentFormat = {
- "PCL", "5", NULL
-};
-
-
-/*
- * init struct for XpValidate*Pool
- */
-XpValidatePoolsRec PclValidatePoolsRec = {
- &ValidContentOrientations, &DefaultContentOrientations,
- &ValidDocFormatsSupported, &DefaultDocFormatsSupported,
- &ValidInputTrays, &ValidMediumSizes,
- &ValidPlexes, &DefaultPlexes,
- &ValidPrinterResolutions, &DefaultPrinterResolutions,
- &ValidEmbeddedFormatsSupported, &DefaultEmbeddedFormatsSupported,
- &ValidListfontsModes, &DefaultListfontsModes,
- &ValidRawFormatsSupported, &DefaultRawFormatsSupported,
- &ValidSetupProviso,
- &DefaultDocumentFormat
-};
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclAttr.c b/nx-X11/programs/Xserver/Xprint/pcl/PclAttr.c
deleted file mode 100644
index 3cde053f1..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclAttr.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* $Xorg: PclAttr.c,v 1.3 2000/08/17 19:48:07 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclAttr.c
-** *
-** * Contents:
-** * Attribute-handling functions for the PCL driver
-** *
-** * Created: 2/2/96
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Pcl.h"
-#include "attributes.h"
-
-char *
-PclGetAttributes(
- XpContextPtr pCon,
- XPAttributes pool )
-{
- return XpGetAttributes( pCon, pool );
-}
-
-char *
-PclGetOneAttribute(
- XpContextPtr pCon,
- XPAttributes pool,
- char *attr )
-{
- return XpGetOneAttribute( pCon, pool, attr );
-}
-int
-PclAugmentAttributes(
- XpContextPtr pCon,
- XPAttributes pool,
- char *attrs )
-{
- return XpAugmentAttributes( pCon, pool, attrs );
-}
-
-int
-PclSetAttributes(
- XpContextPtr pCon,
- XPAttributes pool,
- char *attrs )
-{
- return XpSetAttributes( pCon, pool, attrs );
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclColor.c b/nx-X11/programs/Xserver/Xprint/pcl/PclColor.c
deleted file mode 100644
index 72c7e3f99..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclColor.c
+++ /dev/null
@@ -1,851 +0,0 @@
-/* $Xorg: PclColor.c,v 1.3 2000/08/17 19:48:07 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclColorInit.c
-** *
-** * Contents:
-** * Colormap handing code of Pcl driver for the
-** * print server.
-** *
-** * Created: 4/8/96
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclColor.c,v 1.9tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <unistd.h>
-#include <math.h>
-
-#include "colormapst.h"
-#include "windowstr.h"
-#include "resource.h"
-
-#include "Pcl.h"
-#include "cfb.h"
-
-static void lookup(unsigned char *src,
- unsigned char *dst,
- int num,
- unsigned char *map,
- int dim);
-static void trilinear(unsigned char *p,
- unsigned char *out,
- unsigned char *d,
- int dim,
- unsigned char def);
-
-
-/*
- * This seems to be (and is) a duplication of effort; one would think
- * that cfbCreateDefColormap would be sufficient. It almost is. The
- * only change made in this function is that the black and white pixels
- * are allocated with three separate variables for red, green and blue
- * values, instead of the single variable in cfbCreateDefColormap. The
- * single variable leads to the one value being corrected by
- * ResolveColor three times, which leads to incorrect colors.
- */
-
-Bool
-PclCreateDefColormap(ScreenPtr pScreen)
-{
- unsigned short wp_red = ~0, wp_green = ~0, wp_blue = ~0;
- unsigned short bp_red = 0, bp_green = 0, bp_blue = 0;
- VisualPtr pVisual;
- ColormapPtr cmap;
- Pixel wp, bp;
-
- for (pVisual = pScreen->visuals;
- pVisual->vid != pScreen->rootVisual;
- pVisual++)
- ;
-
- if (CreateColormap(pScreen->defColormap, pScreen, pVisual, &cmap,
- (pVisual->class & DynamicClass) ? AllocNone : AllocAll,
- 0)
- != Success)
- return FALSE;
- wp = pScreen->whitePixel;
- bp = pScreen->blackPixel;
- if ((AllocColor(cmap, &wp_red, &wp_green, &wp_blue, &wp, 0) !=
- Success) ||
- (AllocColor(cmap, &bp_red, &bp_green, &bp_blue, &bp, 0) !=
- Success))
- return FALSE;
-
- pScreen->whitePixel = wp;
- pScreen->blackPixel = bp;
-
- (*pScreen->InstallColormap)(cmap);
- return TRUE;
-}
-
-/*
- * Add colormap to list of colormaps on screen
- */
-Bool
-PclCreateColormap(ColormapPtr pColor)
-{
- PclCmapToContexts *new;
- PclScreenPrivPtr sPriv;
-
- sPriv = (PclScreenPrivPtr)pColor->pScreen
- ->devPrivates[PclScreenPrivateIndex].ptr;
-
- /*
- * Use existing code to initialize the values in the colormap
- */
- cfbInitializeColormap( pColor );
-
- /*
- * Set up the mapping between the color map and the context
- */
- new = (PclCmapToContexts *)xalloc( sizeof( PclCmapToContexts ) );
-
- if( new )
- {
- new->colormapId = pColor->mid;
- new->contexts = NULL;
- new->next = sPriv->colormaps;
- sPriv->colormaps = new;
-
- return TRUE;
- }
- else
- return FALSE;
-}
-
-void
-PclDestroyColormap(ColormapPtr pColor)
-{
- PclScreenPrivPtr sPriv;
- PclCmapToContexts *pCmap, *tCmap = 0;
- PclContextListPtr con, tCon;
- PclContextPrivPtr cPriv;
- PclPaletteMapPtr pPal;
- char t[80];
-
- /*
- * At DestroyContext time, colormaps may be destroyed twice, so if the
- * pointer is NULL, just crash out.
- */
- if( !pColor )
- return;
-
- /*
- * Find the colormap <-> contexts mapping
- */
- sPriv = (PclScreenPrivPtr)pColor->pScreen
- ->devPrivates[PclScreenPrivateIndex].ptr;
- pCmap = sPriv->colormaps;
- while( pCmap )
- {
- if( pCmap->colormapId == pColor->mid )
- break;
- tCmap = pCmap;
- pCmap = pCmap->next;
- }
-
- /*
- * For each context, delete the palette in the printer and
- * free the mapping.
- */
- if( pCmap )
- {
- con = pCmap->contexts;
- while( con )
- {
- cPriv = con->context->devPrivates[PclContextPrivateIndex].ptr;
-
- pPal = cPriv->palettes;
- while( pPal )
- {
- if( pPal->colormapId == pColor->mid )
- break;
- pPal = pPal->next;
- }
-
- if( cPriv->pPageFile )
- {
- sprintf( t, "\033&p%dI\033*p2C", pPal->paletteId );
- SEND_PCL( cPriv->pPageFile, t );
- }
-
- tCon = con;
- con = con->next;
- xfree( tCon );
- }
-
- /*
- * Delete the colormap<->contexts mapping
- */
- if( sPriv->colormaps == pCmap )
- /* Delete from the front */
- sPriv->colormaps = pCmap->next;
- else
- /* Delete from the middle */
- tCmap->next = pCmap->next;
- free( pCmap );
- }
-}
-
-void
-PclInstallColormap(ColormapPtr pColor)
-{
-}
-
-void
-PclUninstallColormap(ColormapPtr pColor)
-{
-}
-
-int
-PclListInstalledColormaps(ScreenPtr pScreen,
- XID *pCmapList)
-{
- return 0;
-}
-
-void
-PclStoreColors(ColormapPtr pColor,
- int ndef,
- xColorItem *pdefs)
-{
- PclCmapToContexts *p;
- PclScreenPrivPtr sPriv;
- PclContextListPtr con;
- PclContextPrivPtr cPriv;
- PclPaletteMapPtr pMap;
- char t[80];
- int i;
-
- sPriv = (PclScreenPrivPtr)pColor->pScreen
- ->devPrivates[PclScreenPrivateIndex].ptr;
- p = sPriv->colormaps;
- while( p )
- {
- if( p->colormapId == pColor->mid )
- break;
- p = p->next;
- }
-
- if( p )
- {
- con = p->contexts;
- while( con )
- {
- /*
- * For each context, get the palette ID and update the
- * appropriate palette.
- */
- cPriv = con->context
- ->devPrivates[PclContextPrivateIndex].ptr;
- pMap = PclFindPaletteMap( cPriv, pColor, NULL );
-
- /*
- * Update the palette
- */
- sprintf( t, "\033&p%dS", pMap->paletteId );
- SEND_PCL( cPriv->pPageFile, t );
-
- if( pColor->class == PseudoColor )
- {
- unsigned short r, g, b;
- unsigned int pID;
- for( i = 0; i < ndef; i++ )
- {
- pID = pdefs[i].pixel;
- if ( pColor->red[i].fShared )
- {
- r = pColor->red[pID].co.shco.red->color;
- g = pColor->red[pID].co.shco.green->color;
- b = pColor->red[pID].co.shco.blue->color;
- }
- else
- {
- r = pColor->red[pID].co.local.red;
- g = pColor->red[pID].co.local.green;
- b = pColor->red[pID].co.local.blue;
- }
-
- if( pdefs[i].flags & DoRed )
- r = pdefs[i].red;
- if( pdefs[i].flags & DoGreen )
- g = pdefs[i].green;
- if( pdefs[i].flags & DoBlue )
- b = pdefs[i].blue;
- PclLookUp(pColor, cPriv, &r, &g, &b);
- sprintf( t, "\033*v%ua%ub%uc%dI", r, g, b, pID);
- SEND_PCL( cPriv->pPageFile, t );
- }
- }
-
- sprintf( t, "\033&p%dS", cPriv->currentPalette );
- SEND_PCL( cPriv->pPageFile, t );
-
- con = con->next;
- }
- }
-}
-
-void
-PclResolveColor(unsigned short *pRed,
- unsigned short *pGreen,
- unsigned short *pBlue,
- VisualPtr pVisual)
-{
- /*
- * We need to map the X color range of [0,65535] to the PCL color
- * range of [0,32767].
- */
- *pRed >>= 1;
- *pGreen >>= 1;
- *pBlue >>= 1;
-}
-
-PclPaletteMapPtr
-PclFindPaletteMap(PclContextPrivPtr cPriv,
- ColormapPtr cmap,
- GCPtr gc)
-{
- PclPaletteMapPtr p = cPriv->palettes, new;
-
- /*
- * If the colormap is static, grab one of the special palettes. If we come
- * into this from StoreColors, there will be no GC, but by definition we're
- * looking at a dynamic color map, so the special colors will not be
- * needed.
- */
- if( gc )
- {
- if( cmap->pVisual->class == StaticGray )
- return &( cPriv->staticGrayPalette );
- else if( cmap->pVisual->class == TrueColor )
- {
- if( gc->fillStyle == FillTiled && !( gc->tileIsPixel ) )
- return &( cPriv->specialTrueColorPalette );
- else
- return &( cPriv->trueColorPalette );
- }
- }
-
-
- /* Look for the colormap ID <-> palette ID mapping */
- while( p )
- {
- if( p->colormapId == cmap->mid )
- return p;
- p = p->next;
- }
-
- /* If the colormap isn't already there, make an entry for it */
- new = (PclPaletteMapPtr)xalloc( sizeof( PclPaletteMap ) );
- new->colormapId = cmap->mid;
- new->paletteId = cPriv->nextPaletteId++;
- new->downloaded = 0;
- new->next = cPriv->palettes;
- cPriv->palettes = new;
- return new;
-}
-
-int
-PclUpdateColormap(DrawablePtr pDrawable,
- XpContextPtr pCon,
- GCPtr gc,
- FILE *outFile)
-{
- PclScreenPrivPtr sPriv;
-
- PclContextPrivPtr cPriv;
- PclPaletteMapPtr pMap;
- PclCmapToContexts *pCmap;
- PclContextListPtr new;
- char t[80];
- Colormap c;
- ColormapPtr cmap;
- WindowPtr win = (WindowPtr)pDrawable;
- unsigned short r, g, b, rr, gg, bb;
- int i;
-
- cPriv = pCon->devPrivates[PclContextPrivateIndex].ptr;
-
- c = wColormap( win );
- cmap = (ColormapPtr)LookupIDByType( c, RT_COLORMAP );
- pMap = PclFindPaletteMap( cPriv, cmap, gc );
-
- if( cPriv->currentPalette == pMap->paletteId )
- /*
- * If the requested colormap is already active, nothing needs to
- * be done.
- */
- return FALSE;
-
- /*
- * Now we activate the palette in the printer
- */
- sprintf( t, "\033&p%dS", pMap->paletteId );
- SEND_PCL( outFile, t );
- cPriv->currentPalette = pMap->paletteId;
-
- if( pMap->downloaded == 0 )
- /*
- * If the requested colormap has not been downloaded to the
- * printer, we need to do that before activating it.
- */
- {
- /*
- * Add the colormap to the screen-level colormap<->context mapping.
- */
- sPriv = (PclScreenPrivPtr)cmap->pScreen
- ->devPrivates[PclScreenPrivateIndex].ptr;
- pCmap = sPriv->colormaps;
- while( pCmap && ( pCmap->colormapId != cmap->mid ) )
- pCmap = pCmap->next;
- new = (PclContextListPtr)xalloc( sizeof( PclContextList ) );
- new->context = pCon;
- new->next = pCmap->contexts;
- pCmap->contexts = new;
-
- /*
- * XXX Download the colormap
- */
- if( cmap->class == StaticGray )
- {
-#ifdef XP_PCL_COLOR
- sprintf( t, "\033*v18W%c%c%c%c%c%c", 0, 1, 1, 1, 1, 1 );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 12 );
-
- /* Send the white reference point... */
- sprintf( t, "%c%c%c%c%c%c", 0x7f, 0xff, 0x7f, 0xff,
- 0x7f, 0xff );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 6 );
-
- /* ... and the black reference point */
- sprintf( t, "%c%c%c%c%c%c", 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00 );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 6 );
-
- /* Now program the two colors */
- sprintf( t, "\033*v0a0b0c%ldI", (long) cmap->pScreen->blackPixel );
- SEND_PCL( cPriv->pPageFile, t );
- sprintf( t, "\033*v32767a32767b32767c%ldI",
- (long) cmap->pScreen->whitePixel );
- SEND_PCL( cPriv->pPageFile, t );
-#endif /* XP_PCL_COLOR */
- }
- else if( cmap->class == PseudoColor )
- {
- sprintf( t,
- "\033*v18W%c%c%c%c%c%c",
- 0, 1, cmap->pVisual->nplanes, 16, 16, 16 );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 12 );
-
- /* Send the white reference point... */
- if ( cPriv->ctbl != NULL )
- sprintf( t, "%c%c%c%c%c%c", 0x00, 0xff, 0x00, 0xff,
- 0x00, 0xff );
- else
- sprintf( t, "%c%c%c%c%c%c", 0x7f, 0xff, 0x7f, 0xff,
- 0x7f, 0xff );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 6 );
-
- /* ... and the black reference point */
- sprintf( t, "%c%c%c%c%c%c", 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00 );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 6 );
-
- for(i = 0; i < cmap->pVisual->ColormapEntries; i++ )
- {
- if( cmap->red[i].fShared )
- {
- r = cmap->red[i].co.shco.red->color;
- g = cmap->red[i].co.shco.green->color;
- b = cmap->red[i].co.shco.blue->color;
- }
- else
- {
- r = cmap->red[i].co.local.red;
- g = cmap->red[i].co.local.green;
- b = cmap->red[i].co.local.blue;
- }
- PclLookUp(cmap, cPriv, &r, &g, &b);
- sprintf( t, "\033*v%ua%ub%uc%dI", r, g, b, i );
- SEND_PCL( outFile, t );
- }
- }
- else if( cmap->class == TrueColor )
- {
- unsigned short lim;
-
- if( gc->fillStyle == FillTiled && !( gc->tileIsPixel ) )
- {
- if( cPriv->ctbl != NULL )
- {
- /* Send the "special" colormap for 24-bit fills */
- sprintf( t, "\033*v18W%c%c%c%c%c%c", 0, 1,
- 8,
- cmap->pVisual->bitsPerRGBValue,
- cmap->pVisual->bitsPerRGBValue,
- cmap->pVisual->bitsPerRGBValue );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 12 );
-
- /* Send the white reference point... */
- sprintf( t, "%c%c%c%c%c%c",
- 0x00, 0xff,
- 0x00, 0xff,
- 0x00, 0xff );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 6 );
-
- /* ... and the black reference point */
- sprintf( t, "%c%c%c%c%c%c",
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00 );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 6 );
-
- /* Now send the color entries, RRRGGGBB */
- i=0;
- for( r = 0; r < 8; r++ )
- for( g = 0; g < 8; g ++ )
- for( b = 0; b < 4; b++ )
- {
- rr = (r * 0xff)/7;
- gg = (g * 0xff)/7;
- bb = (b * 0xff)/3;
- PclLookUp(cmap, cPriv, &rr, &gg, &bb);
- sprintf( t, "\033*v%ua%ub%uc%dI",
- rr, gg, bb, i );
- SEND_PCL( outFile, t );
- i++;
- }
- }
- else
- {
- /* Send the "special" colormap for 24-bit fills */
- sprintf( t, "\033*v18W%c%c%c%c%c%c", 0, 1,
- 8,
- cmap->pVisual->bitsPerRGBValue,
- cmap->pVisual->bitsPerRGBValue,
- cmap->pVisual->bitsPerRGBValue );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 12 );
-
- /* Send the white reference point... */
- sprintf( t, "%c%c%c%c%c%c",
- 0x00, 0x07,
- 0x00, 0x07,
- 0x00, 0x03 );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 6 );
-
- /* ... and the black reference point */
- sprintf( t, "%c%c%c%c%c%c",
- 0x00, 0x00,
- 0x00, 0x00,
- 0x00, 0x00 );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 6 );
-
- /* Now send the color entries, RRRGGGBB */
- i=0;
- for( r = 0; r < 8; r++ )
- for( g = 0; g < 8; g ++ )
- for( b = 0; b < 4; b++ )
- {
- sprintf( t, "\033*v%ua%ub%uc%dI",
- r, g, b, i );
- SEND_PCL( outFile, t );
- i++;
- }
- }
-
- }
- else
- {
- lim = (1 << cmap->pVisual->bitsPerRGBValue) - 1;
-
- /* Send the "special" colormap for 24-bit fills */
- sprintf( t, "\033*v18W%c%c%c%c%c%c", 0, 3,
- cmap->pVisual->nplanes,
- cmap->pVisual->bitsPerRGBValue,
- cmap->pVisual->bitsPerRGBValue,
- cmap->pVisual->bitsPerRGBValue );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 12 );
-
- /* Send the white reference point... */
- sprintf( t, "%c%c%c%c%c%c",
- (lim >> 8) & 0xff, lim & 0xff,
- (lim >> 8) & 0xff, lim & 0xff,
- (lim >> 8) & 0xff, lim & 0xff);
- SEND_PCL_COUNT( cPriv->pPageFile, t, 6 );
-
- /* ... and the black reference point */
- sprintf( t, "%c%c%c%c%c%c", 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00 );
- SEND_PCL_COUNT( cPriv->pPageFile, t, 6 );
- }
-
- }
- pMap->downloaded = 1;
- }
- return TRUE;
-
-}
-
-void PclLookUp(
- ColormapPtr cmap,
- PclContextPrivPtr cPriv,
- unsigned short *r,
- unsigned short *g,
- unsigned short *b
-)
-{
- unsigned char cdata[3];
-
- if( cmap->class == PseudoColor )
- {
- if( cPriv->ctbl != NULL )
- {
- cdata[0] = *r >> 8;
- cdata[1] = *g >> 8;
- cdata[2] = *b >> 8;
- lookup(cdata, cdata, 1, cPriv->ctbl, cPriv->ctbldim);
- *r = cdata[0];
- *g = cdata[1];
- *b = cdata[2];
- }
- else
- {
- *r >>= 1;
- *g >>= 1;
- *b >>= 1;
- }
- }
- else if( cmap->class == TrueColor )
- {
- if( cPriv->ctbl != NULL )
- {
- cdata[0] = *r;
- cdata[1] = *g;
- cdata[2] = *b;
- lookup(cdata, cdata, 1, cPriv->ctbl, cPriv->ctbldim);
- *r = cdata[0];
- *g = cdata[1];
- *b = cdata[2];
- }
- }
- return;
-}
-
-unsigned char *PclReadMap(char *name, int *dim)
-{
- FILE *fp;
- unsigned char *data;
- long size;
-
- if ((fp=fopen(name, "r")) == NULL) {
- return(NULL);
- }
-
- fseek(fp, 0, SEEK_END);
- size = ftell(fp);
-
- /* Could do this with a lookup table, if the constraint is that the
- 3 map dimensions must be equal. */
- switch (size) {
- case 8*8*8*3:
- *dim = 8;
- break;
- case 16*16*16*3:
- *dim = 16;
- break;
- case 17*17*17*3:
- *dim = 17;
- break;
- case 65*65*65*3:
- *dim = 65;
- break;
- default:
- fclose(fp);
- return(NULL);
- }
-
- if ((data = (unsigned char *) xalloc(sizeof(char) * size)) == NULL) {
- fclose(fp);
- return(NULL);
- }
-
- fseek(fp, 0, SEEK_SET);
-
- if (fread(data, sizeof(char), size, fp) != (unsigned) size) {
- fclose(fp);
- free(data);
- return(NULL);
- }
-
- fclose(fp);
- return(data);
-}
-
-/************************************************************************
- *
- * Here is the mapper.
- *
- ************************************************************************/
-
-#define SCL(x) ((x)*(dim-1)/255)
-/* Interleaved-map lookup */
-static void lookup(unsigned char *src, unsigned char *dst, int num, unsigned char *map, int dim)
-{
- int i;
-
-#define _INTERPOLATE
-#ifndef _INTERPOLATE
- unsigned char *p1, *p2, *p3;
-
- for (i=0; i<num; i++) {
- p1 = map + (SCL(src[0])*dim*dim + SCL(src[1])*dim + SCL(src[2])) * 3;
- *dst++ = *p1++;
- *dst++ = *p1++;
- *dst++ = *p1++;
- src += 3;
- }
-#else
- for (i=0; i<num; i++) {
- trilinear(src, dst, map, dim, 128);
- src += 3;
- dst += 3;
- }
-#endif
-}
-
-/*
- * C code from the article
- * "Tri-linear Interpolation"
- * by Steve Hill, sah@ukc.ac.uk
- * in "Graphics Gems IV", Academic Press, 1994
- *
- * Fri Feb 16 14:12:43 PST 1996
- * Modified to use for 8-bit color mapping -- A. Fitzhugh,
- * HP Labs, Printing Technology Department
- */
-
-/* linear interpolation from l (when a=0) to h (when a=1)*/
-/* (equal to (a*h)+((1-a)*l) */
-#define LERP(a,l,h) ((l)+((((h)-(l))*(a))>>8))
-
-static void trilinear(unsigned char *p, unsigned char *out, unsigned char *d, int dim, unsigned char def)
-{
-#define DENS(X, Y, Z, ch) d[((X*dim+Y)*dim+Z)*3+ch]
-
- int x0, y0, z0,
- x1, y1, z1,
- i;
- unsigned char *dp,
- fx, fy, fz,
- d000, d001, d010, d011,
- d100, d101, d110, d111,
- dx00, dx01, dx10, dx11,
- dxy0, dxy1;
- float scale;
-
- scale = 255.0 / (dim-1);
-
- x0 = p[0] / scale;
- y0 = p[1] / scale;
- z0 = p[2] / scale;
-
- /* Fractions should range from 0-1.0 (fixed point 8-256) */
- fx = (((int) (p[0] - x0 * scale)) << 8) / 255;
- fy = (((int) (p[1] - y0 * scale)) << 8) / 255;
- fz = (((int) (p[2] - z0 * scale)) << 8) / 255;
-
- x1 = x0 + 1;
- y1 = y0 + 1;
- z1 = z0 + 1;
-
- for (i=0; i<3; i++) {
-
- if (x0 >= 0 && x1 < dim &&
- y0 >= 0 && y1 < dim &&
- z0 >= 0 && z1 < dim) {
- dp = &DENS(x0, y0, z0, i);
- d000 = dp[0];
- d100 = dp[3];
- dp += dim*3;
- d010 = dp[0];
- d110 = dp[3];
- dp += dim*dim*3;
- d011 = dp[0];
- d111 = dp[3];
- dp -= dim*3;
- d001 = dp[0];
- d101 = dp[3];
- } else {
-# define INRANGE(X, Y, Z) \
- ((X) >= 0 && (X) < dim && \
- (Y) >= 0 && (Y) < dim && \
- (Z) >= 0 && (Z) < dim)
-
- d000 = INRANGE(x0, y0, z0) ? DENS(x0, y0, z0, i) : def;
- d001 = INRANGE(x0, y0, z1) ? DENS(x0, y0, z1, i) : def;
- d010 = INRANGE(x0, y1, z0) ? DENS(x0, y1, z0, i) : def;
- d011 = INRANGE(x0, y1, z1) ? DENS(x0, y1, z1, i) : def;
-
- d100 = INRANGE(x1, y0, z0) ? DENS(x1, y0, z0, i) : def;
- d101 = INRANGE(x1, y0, z1) ? DENS(x1, y0, z1, i) : def;
- d110 = INRANGE(x1, y1, z0) ? DENS(x1, y1, z0, i) : def;
- d111 = INRANGE(x1, y1, z1) ? DENS(x1, y1, z1, i) : def;
- }
-
- dx00 = LERP(fx, d000, d100);
- dx01 = LERP(fx, d001, d101);
- dx10 = LERP(fx, d010, d110);
- dx11 = LERP(fx, d011, d111);
-
- dxy0 = LERP(fy, dx00, dx10);
- dxy1 = LERP(fy, dx01, dx11);
-
- out[i] = LERP(fz, dxy0, dxy1);
- }
-}
-
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclCursor.c b/nx-X11/programs/Xserver/Xprint/pcl/PclCursor.c
deleted file mode 100644
index f50c355e9..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclCursor.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* $Xorg: PclCursor.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclCursor.c
-** *
-** * Contents:
-** * Cursor-handling code for the PCL DDX driver
-** *
-** * Created: 1/18/96
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclCursor.c,v 1.3 1999/12/16 02:26:27 robin Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-
-#include "Pcl.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-
-void
-PclConstrainCursor(
- ScreenPtr pScreen,
- BoxPtr pBox)
-{
-}
-
-void
-PclCursorLimits(
- ScreenPtr pScreen,
- CursorPtr pCursor,
- BoxPtr pHotBox,
- BoxPtr pTopLeftBox)
-{
-}
-
-Bool
-PclDisplayCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor)
-{
- return True;
-}
-
-Bool
-PclRealizeCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor)
-{
- return True;
-}
-
-Bool
-PclUnrealizeCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor)
-{
- return True;
-}
-
-void
-PclRecolorCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor,
- Bool displayed)
-{
-}
-
-Bool
-PclSetCursorPosition(
- ScreenPtr pScreen,
- int x,
- int y,
- Bool generateEvent)
-{
- return True;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclDef.h b/nx-X11/programs/Xserver/Xprint/pcl/PclDef.h
deleted file mode 100644
index 275bd63ec..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclDef.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* $Xorg: PclDef.h,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclDef.h
-** *
-** * Contents: extran defines and includes for the Pcl driver
-** * for a printing X server.
-** *
-** * Created: 7/31/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _PCLDEF_H_
-#define _PCLDEF_H_
-
-#define DT_PRINT_JOB_HEADER "DT_PRINT_JOB_HEADER"
-#define DT_PRINT_JOB_TRAILER "DT_PRINT_JOB_TRAILER"
-#define DT_PRINT_JOB_COMMAND "DT_PRINT_JOB_COMMAND"
-#define DT_PRINT_JOB_EXEC_COMMAND "DT_PRINT_JOB_EXEC_COMMAND"
-#define DT_PRINT_JOB_EXEC_OPTIONS "DT_PRINT_JOB_EXEC_OPTION"
-#define DT_PRINT_PAGE_HEADER "DT_PRINT_PAGE_HEADER"
-#define DT_PRINT_PAGE_TRAILER "DT_PRINT_PAGE_TRAILER"
-#define DT_PRINT_PAGE_COMMAND "DT_PRINT_PAGE_COMMAND"
-
-#define DT_IN_FILE_STRING "%(InFile)%"
-#define DT_OUT_FILE_STRING "%(OutFile)%"
-#define DT_ALLOWED_COMMANDS_FILE "printCommands"
-
-#endif /* _PCLDEF_H_ */
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclFonts.c b/nx-X11/programs/Xserver/Xprint/pcl/PclFonts.c
deleted file mode 100644
index 591435faa..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclFonts.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* $Xorg: PclFonts.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclFonts.c
-** *
-** * Contents:
-** * Font code for Pcl driver.
-** *
-** * Created: 2/03/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/* $XFree86$ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "regionstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "scrnintstr.h"
-
-#include "Pcl.h"
-
-Bool
-PclRealizeFont(
- ScreenPtr pscr,
- FontPtr pFont)
-{
- return TRUE;
-}
-
-Bool
-PclUnrealizeFont(
- ScreenPtr pscr,
- FontPtr pFont)
-{
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclGC.c b/nx-X11/programs/Xserver/Xprint/pcl/PclGC.c
deleted file mode 100644
index 83ebb47e1..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclGC.c
+++ /dev/null
@@ -1,1046 +0,0 @@
-/* $Xorg: PclGC.c,v 1.4 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclGC.c
-** *
-** * Contents:
-** * Graphics Context handling for the PCL driver
-** *
-** * Created: 10/11/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclGC.c,v 1.9 2001/01/19 18:34:28 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "gcstruct.h"
-
-#include "Pcl.h"
-#include "pixmapstr.h"
-#include "colormapst.h"
-#include "windowstr.h"
-#include "cfb.h"
-#include "cfb32.h"
-#include "migc.h"
-#include "scrnintstr.h"
-#include "resource.h"
-
-static GCOps PclGCOps =
-{
- PclFillSpans,
- PclSetSpans,
- PclPutImage,
- PclCopyArea,
- PclCopyPlane,
- PclPolyPoint,
- PclPolyLine,
- PclPolySegment,
- PclPolyRectangle,
- PclPolyArc,
- PclFillPolygon,
- PclPolyFillRect,
- PclPolyFillArc,
- PclPolyText8,
- PclPolyText16,
- PclImageText8,
- PclImageText16,
- PclImageGlyphBlt,
- PclPolyGlyphBlt,
- PclPushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-}
-;
-
-
-static GCFuncs PclGCFuncs =
-{
- PclValidateGC,
- miChangeGC,
- miCopyGC,
- PclDestroyGC,
- miChangeClip,
- miDestroyClip,
- miCopyClip,
-}
-;
-
-Bool
-PclCreateGC(GCPtr pGC)
-{
- if( pGC->depth == 1 )
- {
- if( mfbCreateGC( pGC ) == FALSE )
- return FALSE;
- }
- else if( pGC->depth <= 32 )
- {
-#if PSZ == 8
- if( cfbCreateGC( pGC ) == FALSE )
-#else
- if( cfb32CreateGC( pGC ) == FALSE )
-#endif
- return FALSE;
- }
- else
- return FALSE;
-
- pGC->clientClip = NULL;
- pGC->clientClipType = CT_NONE;
-
- pGC->ops = &PclGCOps;
- pGC->funcs = &PclGCFuncs;
-
- return TRUE;
-}
-
-void
-PclDestroyGC(GCPtr pGC)
-{
- /* Handle the mfb and cfb, which share a GC private struct */
- miDestroyGC( pGC );
-}
-
-
-int
-PclGetDrawablePrivateStuff(
- DrawablePtr pDrawable,
- GC *gc,
- unsigned long *valid,
- FILE **file)
-{
- XpContextPtr pCon;
- PclContextPrivPtr cPriv;
-
- switch( pDrawable->type )
- {
- case DRAWABLE_PIXMAP:
- /*
- * If we ever get here, something is wrong.
- */
- return FALSE;
-
- case DRAWABLE_WINDOW:
- pCon = PclGetContextFromWindow( (WindowPtr)pDrawable );
-
- if( pCon == NULL )
- return FALSE;
- else
- {
- cPriv = pCon->devPrivates[PclContextPrivateIndex].ptr;
- *gc = cPriv->lastGC;
- *valid = cPriv->validGC;
- *file = cPriv->pPageFile;
- return TRUE;
- }
-
- default:
- return FALSE;
- }
-}
-
-void
-PclSetDrawablePrivateGC(
- DrawablePtr pDrawable,
- GC gc)
-{
- PixmapPtr pix;
- XpContextPtr pCon;
- PclPixmapPrivPtr pixPriv;
- PclContextPrivPtr pPriv;
- int i;
-
- switch( pDrawable->type )
- {
- case DRAWABLE_PIXMAP:
- pix = (PixmapPtr)pDrawable;
- pixPriv = pix->devPrivates[PclPixmapPrivateIndex].ptr;
-
- pixPriv->lastGC = gc;
- pixPriv->validGC = 1;
- break;
-
- case DRAWABLE_WINDOW:
- pCon = PclGetContextFromWindow( (WindowPtr)pDrawable );
- pPriv = ((PclContextPrivPtr)
- (pCon->devPrivates[PclContextPrivateIndex].ptr));
-
- pPriv->validGC = 1;
- pPriv->lastGC = gc;
-
- /*
- * Store the dash list separately, to avoid having it freed
- * out from under us.
- */
- if( pPriv->dash != NULL )
- xfree( pPriv->dash );
- if( gc.numInDashList != 0 )
- {
- pPriv->dash = (unsigned char *)xalloc( sizeof( unsigned char )
- * gc.numInDashList );
- for( i = 0; i < gc.numInDashList; i++ )
- pPriv->dash[i] = gc.dash[i];
- }
- else
- pPriv->dash = NULL;
-
-
- /*
- * Store the dash list separately, to avoid having it freed
- * out from under us.
- */
- if( pPriv->dash != NULL )
- xfree( pPriv->dash );
- if( gc.numInDashList != 0 )
- {
- pPriv->dash = (unsigned char *)xalloc( sizeof( unsigned char )
- * gc.numInDashList );
- for( i = 0; i < gc.numInDashList; i++ )
- pPriv->dash[i] = gc.dash[i];
- }
- else
- pPriv->dash = NULL;
-
- break;
- }
-}
-
-static void
-PclSendPattern(char *bits,
- int sz,
- int depth,
- int h,
- int w,
- int patNum,
- FILE *outFile)
-{
- char t[80], *row, *mod;
- int w2;
- int i, j;
-
- SEND_PCL( outFile, "\033%0A" );
-
- if( depth == 1 )
- {
- /* Each row must be word-aligned */
- w2 = ( w / 8 ) + ( ( w%8 ) ? 1 : 0 );
-/*
- if( w2 % 2 )
- w2++;
-*/
-
- sprintf( t, "\033*c%dg%dW", patNum, h * w2 + 8 );
- SEND_PCL( outFile, t );
-
- sprintf( t, "%c%c%c%c%c%c%c%c", 0, 0, 1, 0, h>>8, h&0xff, w>>8,
- w&0xff );
- SEND_PCL_COUNT( outFile, t, 8 );
-
- for( row = bits, i = 0; i < h; i++, row += BitmapBytePad( w ) )
- SEND_PCL_COUNT( outFile, row, w2 );
- }
- else if( depth == 8 )
- {
- w2 = ( w % 2 ) ? w + 1 : w;
-
- sprintf( t, "\033*c%dg%dW", patNum, h * w2 + 8 );
- SEND_PCL( outFile, t );
-
- sprintf( t, "%c%c%c%c%c%c%c%c", 1, 0, 8, 0, h>>8, h&0xff,
- w>>8, w&0xff );
- SEND_PCL_COUNT( outFile, t, 8 );
-
- for( row = bits, i = 0; i < h; i++,
- row += PixmapBytePad( w, 8 ) )
- SEND_PCL_COUNT( outFile, row, w2 );
- }
- else
- {
- w2 = ( w % 2 ) ? w + 1 : w;
-
- sprintf( t, "\033*c%dg%dW", patNum, h * w2 + 8 );
- SEND_PCL( outFile, t );
-
- sprintf( t, "%c%c%c%c%c%c%c%c", 1, 0, 8, 0, h>>8, h&0xff,
- w>>8, w&0xff );
- SEND_PCL_COUNT( outFile, t, 8 );
-
- mod = (char *)xalloc( w2 );
-
- for( row = bits, i = 0; i < h; i++,
- row += PixmapBytePad( w, 24 ) )
- {
- char r, g, b;
- for( j = 0; j < w2; j++ ) {
- r = ((row[j*4+1] >> 5) & 0x7) << 5;
- g = ((row[j*4+2] >> 5) & 0x7) << 2;
- b = ((row[j*4+3] >> 6) & 0x3);
- mod[j] = r | g | b;
- }
- SEND_PCL_COUNT( outFile, mod, w2 );
- }
-
- xfree( mod );
- }
-
- SEND_PCL( outFile, "\033%0B" );
-}
-
-int
-PclUpdateDrawableGC(
- GCPtr pGC,
- DrawablePtr pDrawable,
- FILE **outFile)
-{
- Mask changeMask = 0;
- GC dGC;
- unsigned long valid;
- int i;
- XpContextPtr pCon;
- PclContextPrivPtr cPriv;
- PclGCPrivPtr gcPriv = (PclGCPrivPtr)
- (pGC->devPrivates[PclGCPrivateIndex].ptr);
-
- if( !PclGetDrawablePrivateStuff( pDrawable, &dGC, &valid, outFile ) )
- return FALSE;
-
- pCon = PclGetContextFromWindow( (WindowPtr)pDrawable );
- cPriv = pCon->devPrivates[PclContextPrivateIndex].ptr;
-
- /*
- * Here's where we update the colormap. Since there can be
- * different colormaps installed on each window, we need to check
- * before each drawing request that the correct palette is active in
- * the printer. This is as good a place as any.
- */
- if( !PclUpdateColormap( pDrawable, pCon, pGC, *outFile ) )
- return FALSE;
-
- /*
- * If the drawable's last GC is NULL, this means that this is
- * the first time the drawable is being used. Therefore, we need
- * to emit PCL for all the GC fields.
- */
- if( valid == 0 )
- changeMask = ~0;
-
- /*
- * If we have two different GC structures, there is no alternative
- * but to scan through them both to determine the changeMask.
- */
- else
- {
- if( dGC.alu != pGC->alu )
- changeMask |= GCFunction;
- if( dGC.fgPixel != pGC->fgPixel )
- changeMask |= GCForeground;
- if( dGC.bgPixel != pGC->bgPixel )
- changeMask |= GCBackground;
- if( dGC.lineWidth != pGC->lineWidth )
- changeMask |= GCLineWidth;
- if( dGC.lineStyle != pGC->lineStyle )
- changeMask |= GCLineStyle;
- if( dGC.capStyle != pGC->capStyle )
- changeMask |= GCCapStyle;
- if( dGC.joinStyle != pGC->joinStyle )
- changeMask |= GCJoinStyle;
- if( dGC.fillStyle != pGC->fillStyle )
- changeMask |= GCFillStyle;
- if( dGC.tile.pixmap != pGC->tile.pixmap )
- changeMask |= GCTile;
- if( dGC.stipple != pGC->stipple )
- changeMask |= GCStipple;
- if( dGC.patOrg.x != pGC->patOrg.x )
- changeMask |= GCTileStipXOrigin;
- if( dGC.patOrg.y != pGC->patOrg.y )
- changeMask |= GCTileStipYOrigin;
-
- if( dGC.numInDashList == pGC->numInDashList )
- {
- for( i = 0; i < dGC.numInDashList; i++ )
- if( cPriv->dash[i] != pGC->dash[i] )
- {
- changeMask |= GCDashList;
- break;
- }
- }
- else
- changeMask |= GCDashList;
- }
-
- /*
- * Once the changeMask has been determined, we scan it and emit
- * the appropriate PCL code to set the drawing attributes.
- */
-
- /* Must be in HP-GL/2 mode to set attributes */
- SEND_PCL( *outFile, "\033%0B" );
-
- if( changeMask & GCFunction )
- {
-#ifdef XP_PCL_COLOR
-
- if( pGC->alu == GXclear )
- SEND_PCL( *outFile, "SP0;" );
- else
- SEND_PCL( *outFile, "SP1;" );
-#else
- if( pGC->alu == GXclear )
- SEND_PCL( *outFile, "SP0;" );
- else
- SEND_PCL( *outFile, "SP1;" );
-#endif /* XP_PCL_COLOR */
- }
-
-#if 0
- if( changeMask & GCFunction )
- {
- int rop = -1;
- char t[10];
-
- switch( pGC->alu )
- {
- case GXclear:
- rop = 1;
- break;
- case GXand:
- rop = 136;
- break;
- case GXandReverse:
- rop = 68;
- break;
- case GXcopy:
- rop = 204;
- break;
- case GXandInverted:
- rop = 34;
- break;
- case GXnoop:
- rop = 170;
- break;
- case GXxor:
- rop = 238;
- break;
- case GXor:
- rop = 238;
- break;
- case GXnor:
- rop = 17;
- break;
- case GXequiv:
- rop = 153;
- break;
- case GXinvert:
- rop = 85;
- break;
- case GXorReverse:
- rop = 221;
- break;
- case GXcopyInverted:
- rop = 51;
- break;
- case GXorInverted:
- rop = 187;
- break;
- case GXnand:
- rop = 119;
- break;
- case GXset:
- rop = 0;
- break;
- }
- if( rop != -1 )
- {
- sprintf( t, "MC1,%d;", rop );
- SEND_PCL( *outFile, t );
-#endif
-
- if( changeMask & GCForeground )
- switch( pGC->fgPixel )
- {
- case 1:
- SEND_PCL( *outFile, "SP1;" );
- break;
- default:
- SEND_PCL( *outFile, "SP0;" );
- break;
- }
-
- if( changeMask & GCForeground )
- {
-#ifdef XP_PCL_COLOR
- ColormapPtr cmap;
- Colormap c;
- char t[40];
-
- c = wColormap( ((WindowPtr)pDrawable) );
- cmap = (ColormapPtr)LookupIDByType( c, RT_COLORMAP );
-
- if( cmap->class == TrueColor )
- {
- if( pGC->fillStyle != FillTiled || pGC->tileIsPixel ) {
- unsigned short r, g, b;
-
- r = (pGC->fgPixel & cmap->pVisual->redMask)
- >> (cmap->pVisual->offsetRed );
- g = (pGC->fgPixel & cmap->pVisual->greenMask)
- >> (cmap->pVisual->offsetGreen);
- b = (pGC->fgPixel & cmap->pVisual->blueMask)
- >> (cmap->pVisual->offsetBlue);
-
- PclLookUp(cmap, cPriv, &r, &g, &b);
- sprintf( t, "\033%%0A\033*v%ua%ub%uc0I\033%%0B", r, g, b);
- SEND_PCL( *outFile, t );
- }
- }
- else /* PseudoColor or StaticGray */
- {
- sprintf( t, "SP%ld;", (long) pGC->fgPixel );
- SEND_PCL( *outFile, t );
- }
-#else
- ScreenPtr screen;
- screen = pDrawable->pScreen;
- if ( pGC->fgPixel == screen->whitePixel )
- SEND_PCL( *outFile, "SP0;");
- else
- SEND_PCL( *outFile, "SP1;");
-#endif /* XP_PCL_COLOR */
- }
-
- if( changeMask & GCJoinStyle )
- switch( pGC->joinStyle )
- {
- case JoinMiter:
- SEND_PCL( *outFile, "LA2,1;" );
- break;
- case JoinRound:
- SEND_PCL( *outFile, "LA2,4;" );
- break;
- case JoinBevel:
- SEND_PCL( *outFile, "LA2,5;" );
- break;
- }
-
- if( changeMask & GCCapStyle )
- switch( pGC->capStyle )
- {
- case CapNotLast:
- case CapButt:
- SEND_PCL( *outFile, "LA1,1;" );
- break;
- case CapRound:
- SEND_PCL( *outFile, "LA1,4;" );
- break;
- case CapProjecting:
- SEND_PCL( *outFile, "LA1,2;" );
- break;
- }
-
- if( changeMask & GCLineWidth )
- {
- float penWidth, pixelsPerMM;
- ScreenPtr screen;
- char temp[30];
-
- if( pGC->lineWidth == 0 || pGC->lineWidth == 1 )
- /* A pen width of 0.0 mm gives a one-pixel-wide line */
- penWidth = 0.0;
- else
- {
- screen = pDrawable->pScreen;
- pixelsPerMM = (float)screen->width / (float)screen->mmWidth;
-
- penWidth = pGC->lineWidth / pixelsPerMM;
- }
- sprintf( temp, "PW%g;", penWidth );
- SEND_PCL( *outFile, temp );
- }
-
- if( changeMask & GCLineStyle )
- {
- int i, num = pGC->numInDashList;
- double total;
- char t[30];
-
- switch( pGC->lineStyle )
- {
- case LineSolid:
- SEND_PCL( *outFile, "LT;" );
- break;
- case LineOnOffDash:
- /*
- * Calculate the pattern length of the dashes, in pixels,
- * then convert to mm
- */
- for( i = 0, total = 0.0; i < 20 && i < num; i++ )
- total += pGC->dash[i];
- if( num % 2 )
- for( i = num; i < 20 && i < num + num; i++ )
- total += pGC->dash[i-num];
-
- total *= ( (double)pDrawable->pScreen->mmWidth /
- (double)pDrawable->pScreen->width );
-
- sprintf( t, "LT8,%f,1;", total );
- SEND_PCL( *outFile, t );
- break;
- }
- }
-
-
- if( changeMask & GCFillStyle )
- switch( pGC->fillStyle )
- {
- case FillSolid:
- SEND_PCL( *outFile, "FT1;TR0;CF;" );
- break;
- case FillTiled:
- SEND_PCL( *outFile, "FT22,100;TR0;CF2,0;" );
- break;
- case FillOpaqueStippled:
- SEND_PCL( *outFile, "FT22,101;TR0;CF2,0;" );
- if( pGC->fgPixel != gcPriv->stippleFg ||
- pGC->bgPixel != gcPriv->stippleBg )
- changeMask |= GCStipple;
- break;
- case FillStippled:
- SEND_PCL( *outFile, "FT22,102;TR1;CF2,0;" );
- break;
- }
-
- if( changeMask & GCTile && !pGC->tileIsPixel )
- {
- char *bits;
- int h, w, sz;
-
- h = pGC->tile.pixmap->drawable.height;
- w = pGC->tile.pixmap->drawable.width;
-
- if( pGC->tile.pixmap->drawable.depth == 1 )
- {
- sz = h * BitmapBytePad( w );
-
- bits = (char *)xalloc( sz );
- mfbGetImage(&(pGC->tile.pixmap->drawable), 0, 0, w, h, XYPixmap, ~0, bits);
- PclSendPattern( bits, sz, 1, h, w, 100, *outFile );
- xfree( bits );
- }
- else if( pGC->tile.pixmap->drawable.depth == 8 )
- {
- sz = h * PixmapBytePad( w, 8 );
- bits = (char *)xalloc( sz );
- cfbGetImage(&(pGC->tile.pixmap->drawable), 0, 0, w, h, ZPixmap, ~0, bits);
- PclSendPattern( bits, sz, 8, h, w, 100, *outFile );
- xfree( bits );
- }
-#if PSZ == 32
- else
- {
- sz = h * PixmapBytePad( w, 24 );
-
- bits = (char *)xalloc( sz );
- cfb32GetImage(&(pGC->tile.pixmap->drawable), 0, 0, w, h, ZPixmap, ~0, bits);
- PclSendPattern( bits, sz, 24, h, w, 100, *outFile );
- xfree( bits );
- }
-#endif
- }
-
- if( changeMask & ( GCTileStipXOrigin | GCTileStipYOrigin ) )
- {
- char t[30];
-
- sprintf( t, "AC%d,%d;", pGC->patOrg.x, pGC->patOrg.y );
- SEND_PCL( *outFile, t );
- }
-
- /*
- * We have to resend the stipple pattern either when the stipple itself
- * changes, or if we're in FillOpaqueStippled mode and either the
- * foreground or the background color changes.
- */
- if( changeMask & GCStipple ||
- ( pGC->fillStyle == FillOpaqueStippled &&
- ( pGC->fgPixel != gcPriv->stippleFg ||
- pGC->bgPixel != gcPriv->stippleBg ) ) )
- {
- int h, w, i, sz, w2;
- char *bits, *row, t[30];
- PixmapPtr scratchPix;
- GCPtr scratchGC;
-
- if( pGC->stipple != NULL )
- {
- SEND_PCL( *outFile, "\033%0A" );
-
- h = pGC->stipple->drawable.height;
- w = pGC->stipple->drawable.width;
- sz = h * BitmapBytePad( w );
-
- bits = (char *)xalloc( sz );
- mfbGetImage( &(pGC->stipple->drawable), 0, 0, w, h, XYPixmap, ~0, bits );
-
- w2 = ( w / 8 ) + ( ( w%8 ) ? 1 : 0 );
- /*
- * XXX The PCL docs say that I need to word-align each
- * XXX row, but I get garbage when I do...
- */
- /*
- if( w2 % 2 )
- w2++;
- */
-
- sprintf( t, "\033*c102g%dW", h * w2 + 8 );
- SEND_PCL( *outFile, t );
-
- sprintf( t, "%c%c%c%c%c%c%c%c", 0, 0, 1, 0, h>>8, h&0xff, w>>8,
- w&0xff );
- SEND_PCL_COUNT( *outFile, t, 8 );
-
- for( row = bits, i = 0; i < h; i++, row += BitmapBytePad( w ) )
- SEND_PCL_COUNT( *outFile, row, w2 );
-
- SEND_PCL( *outFile, "\033%0B" );
-
- xfree( bits );
-
- /*
- * Also do the opaque stipple, as a tile
- */
- if( pGC->depth != 1 )
- sz = h * PixmapBytePad( w, pGC->depth );
- bits = (char *)xalloc( sz );
-
- scratchPix =
- (*pGC->pScreen->CreatePixmap)( pGC->pScreen,
- w, h, pGC->depth );
- scratchGC = GetScratchGC( pGC->depth, pGC->pScreen );
- CopyGC( pGC, scratchGC, ~0L );
-
- if( pGC->depth == 1 )
- {
- mfbValidateGC( scratchGC, ~0L,
- (DrawablePtr)scratchPix );
- mfbCopyPlane( &(pGC->stipple->drawable),
- (DrawablePtr)scratchPix, scratchGC, 0,
- 0, w, h, 0, 0, 1 );
- mfbGetImage( &(scratchPix->drawable), 0, 0, w, h, XYPixmap, ~0,
- bits );
- }
- else if( pGC->depth <= 32 )
- {
-#if PSZ == 8
- cfbValidateGC( scratchGC, ~0L,
- (DrawablePtr)scratchPix );
- cfbCopyPlane( &(pGC->stipple->drawable),
- (DrawablePtr)scratchPix, scratchGC, 0,
- 0, w, h, 0, 0, 1 );
- cfbGetImage( &(scratchPix->drawable), 0, 0, w, h, ZPixmap, ~0,
- bits );
-#else
- cfb32ValidateGC( scratchGC, ~0L,
- (DrawablePtr)scratchPix );
- cfb32CopyPlane( pGC->stipple,
- (DrawablePtr)scratchPix, scratchGC, 0,
- 0, w, h, 0, 0, 1 );
- cfb32GetImage( scratchPix, 0, 0, w, h, ZPixmap, ~0,
- bits );
-#endif
- }
- PclSendPattern( bits, sz, pGC->depth, h, w, 101, *outFile );
- FreeScratchGC( scratchGC );
- (*pGC->pScreen->DestroyPixmap)( scratchPix );
- xfree( bits );
- }
- }
-
- if( changeMask & ( GCTileStipXOrigin | GCTileStipYOrigin ) )
- {
- char t[30];
-
- sprintf( t, "AC%d,%d;", pGC->patOrg.x, pGC->patOrg.y );
- SEND_PCL( *outFile, t );
- }
-
- if( changeMask & GCDashList )
- {
- int num = pGC->numInDashList;
- double total;
- char dashes[20];
- char t[100], t2[20];
-
- /* Make up the doubled dash list, if necessary */
- for( i = 0; i < 20 && i < num; i++ )
- dashes[i] = pGC->dash[i];
-
- if( num % 2 )
- {
- for( i = num; i < 20 && i < num + num; i++ )
- dashes[i] = dashes[i-num];
- if( ( num *= 2 ) > 20 )
- num = 20;
- }
-
- /* Add up dash lengths to get percentage */
- for( i = 0, total = 0; i < num; i++ )
- total += dashes[i];
-
- /* Build up the HP-GL/2 for the dash list */
- strcpy( t, "UL8" );
- for( i = 0; i < num; i++ )
- {
- sprintf( t2, ",%d",
- (int)( ( (double)dashes[i] / total * 100.0 ) + 0.5 ) );
- strcat( t, t2 );
- }
- strcat( t, ";" );
- SEND_PCL( *outFile, t );
- }
-
-
- /* Go back to PCL mode */
- SEND_PCL( *outFile, "\033%0A" );
-
- /*
- * Update the drawable's private information, which includes
- * erasing the drawable's private changeMask, since all the
- * changes have been made.
- */
- if( changeMask )
- PclSetDrawablePrivateGC( pDrawable, *pGC );
-
- return TRUE;
-}
-
-/*
- * PclComputeCompositeClip()
- *
- * I'd like to use the miComputeCompositeClip function, but it sticks
- * things into the mi GC privates, where the PCL driver can't get at
- * it. So, rather than mess around with the mi code, I ripped it out
- * and made the appropriate changes here.
- */
-
-
-void
-PclComputeCompositeClip(
- GCPtr pGC,
- DrawablePtr pDrawable)
-{
- if (pDrawable->type == DRAWABLE_WINDOW)
- {
- WindowPtr pWin = (WindowPtr) pDrawable;
- RegionPtr pregWin;
- Bool freeTmpClip, freeCompClip;
-
- if (pGC->subWindowMode == IncludeInferiors)
- {
- pregWin = NotClippedByChildren(pWin);
- freeTmpClip = TRUE;
- }
- else
- {
- pregWin = &pWin->clipList;
- freeTmpClip = FALSE;
- }
- freeCompClip = pGC->freeCompClip;
-
- /*
- * if there is no client clip, we can get by with just keeping the
- * pointer we got, and remembering whether or not should destroy (or
- * maybe re-use) it later. this way, we avoid unnecessary copying of
- * regions. (this wins especially if many clients clip by children
- * and have no client clip.)
- */
- if (pGC->clientClipType == CT_NONE)
- {
- if (freeCompClip)
- REGION_DESTROY(pGC->pScreen, pGC->pCompositeClip);
- pGC->pCompositeClip = pregWin;
- pGC->freeCompClip = freeTmpClip;
- }
- else
- {
- /*
- * we need one 'real' region to put into the composite clip. if
- * pregWin the current composite clip are real, we can get rid of
- * one. if pregWin is real and the current composite clip isn't,
- * use pregWin for the composite clip. if the current composite
- * clip is real and pregWin isn't, use the current composite
- * clip. if neither is real, create a new region.
- */
-
- REGION_TRANSLATE(pGC->pScreen, pGC->clientClip,
- pDrawable->x + pGC->clipOrg.x,
- pDrawable->y + pGC->clipOrg.y);
-
- if (freeCompClip)
- {
- REGION_INTERSECT(pGC->pScreen, pGC->pCompositeClip,
- pregWin, pGC->clientClip);
- if (freeTmpClip)
- REGION_DESTROY(pGC->pScreen, pregWin);
- }
- else if (freeTmpClip)
- {
- REGION_INTERSECT(pGC->pScreen, pregWin, pregWin,
- pGC->clientClip);
- pGC->pCompositeClip = pregWin;
- }
- else
- {
- pGC->pCompositeClip = REGION_CREATE(pGC->pScreen, NullBox, 0);
- REGION_INTERSECT(pGC->pScreen, pGC->pCompositeClip,
- pregWin, pGC->clientClip);
- }
- pGC->freeCompClip = TRUE;
- REGION_TRANSLATE(pGC->pScreen, pGC->clientClip,
- -(pDrawable->x + pGC->clipOrg.x),
- -(pDrawable->y + pGC->clipOrg.y));
- }
- } /* end of composite clip for a window */
- else
- {
- BoxRec pixbounds;
-
- /* XXX should we translate by drawable.x/y here ? */
- pixbounds.x1 = 0;
- pixbounds.y1 = 0;
- pixbounds.x2 = pDrawable->width;
- pixbounds.y2 = pDrawable->height;
-
- if (pGC->freeCompClip)
- {
- REGION_RESET(pGC->pScreen, pGC->pCompositeClip, &pixbounds);
- }
- else
- {
- pGC->freeCompClip = TRUE;
- pGC->pCompositeClip = REGION_CREATE(pGC->pScreen, &pixbounds, 1);
- }
-
- if (pGC->clientClipType == CT_REGION)
- {
- REGION_TRANSLATE(pGC->pScreen, pGC->pCompositeClip,
- -pGC->clipOrg.x, -pGC->clipOrg.y);
- REGION_INTERSECT(pGC->pScreen, pGC->pCompositeClip,
- pGC->pCompositeClip, pGC->clientClip);
- REGION_TRANSLATE(pGC->pScreen, pGC->pCompositeClip,
- pGC->clipOrg.x, pGC->clipOrg.y);
- }
- } /* end of composite clip for pixmap */
-}
-
-/*
- * PclValidateGC()
- *
- * Unlike many screen GCValidate routines, this function should not need
- * to mess with setting the drawing functions. Different drawing
- * functions are usually needed to optimize such things as drawing
- * wide or dashed lines; this functionality will be handled primarily
- * by the printer itself, while the necessary PCL code to set the
- * attributes will be done in PclUpdateDrawableGC().
- */
-
-/*ARGSUSED*/
-void
-PclValidateGC(
- GCPtr pGC,
- unsigned long changes,
- DrawablePtr pDrawable)
-{
- /*
- * Pixmaps should be handled by their respective validation
- * functions.
- */
- if( pDrawable->type == DRAWABLE_PIXMAP )
- {
- if( pDrawable->depth == 1 )
- {
- mfbValidateGC( pGC, ~0, pDrawable );
- }
- else if( pDrawable->depth <= 32 )
- {
-#if PSZ == 8
- cfbValidateGC( pGC, ~0, pDrawable );
-#else
- cfb32ValidateGC( pGC, ~0, pDrawable );
-#endif
- }
- return;
- }
-
- /*
- * Reset the drawing operations
- */
- pGC->ops = &PclGCOps;
-
- /*
- * Validate the information, and correct it if necessary.
- */
-
- /*
- * If necessary, compute the composite clip region. (Code ripped
- * from migc.c)
- */
- if ((changes & (GCClipXOrigin|GCClipYOrigin|GCClipMask|GCSubwindowMode)) ||
- (pDrawable->serialNumber != (pGC->serialNumber & DRAWABLE_SERIAL_BITS))
- )
- {
- PclComputeCompositeClip(pGC, pDrawable);
- }
-
- /*
- * PCL does not directly support the DoubleDash line style, nor is
- * there an easy way to simulate it, so we'll just change it to a
- * LineOnOffDash, which is supported by PCL.
- */
- if( ( changes & GCLineStyle ) && ( pGC->lineStyle == LineDoubleDash ) )
- pGC->lineStyle = LineOnOffDash;
-
- /*
- * Update the drawable's changeMask to reflect the changes made to the GC.
- */
-/*
- PclSetDrawablePrivateGC( pDrawable, *pGC, changes );
-*/
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclInit.c b/nx-X11/programs/Xserver/Xprint/pcl/PclInit.c
deleted file mode 100644
index 8bedee7c3..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclInit.c
+++ /dev/null
@@ -1,631 +0,0 @@
-/* $Xorg: PclInit.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclInit.c
-** *
-** * Contents:
-** * Initialization code of Pcl driver for the print server.
-** *
-** * Created: 1/30/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclInit.c,v 1.11 2001/12/21 21:02:05 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-
-#include "Pcl.h"
-
-#include "cfb.h"
-#include <X11/Xos.h> /* for unlink() */
-
-#include "attributes.h"
-#include "DiPrint.h"
-
-#define MODELDIRNAME "/models"
-
-static void AllocatePclPrivates(ScreenPtr pScreen);
-static int PclInitContext(XpContextPtr pCon);
-static Bool PclDestroyContext(XpContextPtr pCon);
-
-int PclScreenPrivateIndex;
-int PclContextPrivateIndex;
-int PclPixmapPrivateIndex;
-int PclWindowPrivateIndex;
-int PclGCPrivateIndex;
-
-#ifdef XP_PCL_COLOR
-/*
- * The supported visuals on this screen
- */
-static VisualRec Visuals[] =
-{
- { 1, StaticGray, 1, 2, 1, 0, 0, 0, 0, 0, 0 },
- { 2, PseudoColor, 8, 256, 8, 0, 0, 0, 0, 0, 0 },
- { 3, TrueColor, 8, 256, 24, 0xFF0000, 0xFF00, 0xFF, 16, 8, 0 }
-};
-
-/*
- * The supported depths on this screen
- */
-static DepthRec Depths[] =
-{
- { 1, 1, NULL },
- { 8, 1, NULL },
- { 24, 1, NULL }
-};
-#else
-/*
- * The supported visuals on this screen
- */
-static VisualRec Visuals[] =
-{
- { 1, StaticGray, 1, 2, 1, 0, 0, 0, 0, 0, 0}
-};
-
-/*
- * The supported depths on this screen
- */
-static DepthRec Depths[] =
-{
- { 1, 1, NULL }
-};
-#endif /* XP_PCL_COLOR */
-
-
-#define NUM_VISUALS(visuals) (sizeof(visuals) / sizeof(VisualRec))
-#define NUM_DEPTHS(depths) (sizeof(depths) / sizeof(DepthRec))
-
-Bool
-PclCloseScreen(int index,
- ScreenPtr pScreen)
-{
- PclScreenPrivPtr pPriv = pScreen->devPrivates[PclScreenPrivateIndex].ptr;
-
- pScreen->CloseScreen = pPriv->CloseScreen;
- xfree( pPriv );
-
- return (*pScreen->CloseScreen)(index, pScreen);
-}
-
-Bool
-InitializePclDriver(
- int ndx,
- ScreenPtr pScreen,
- int argc,
- char **argv)
-{
- int maxRes, xRes, yRes, maxDim;
- unsigned i;
- PclScreenPrivPtr pPriv;
-
- /*
- * Register this driver's InitContext function with the print
- * extension. This is a bit sleazy, as the extension hasn't yet
- * been initialized, but the extensionneeds to know this, and this
- * seems the best time to provide the information.
- */
-#ifdef XP_PCL_COLOR
- XpRegisterInitFunc( pScreen, "XP-PCL-COLOR", PclInitContext );
-#elif XP_PCL_MONO
- XpRegisterInitFunc( pScreen, "XP-PCL-MONO", PclInitContext );
-#else
- XpRegisterInitFunc( pScreen, "XP-PCL-LJ3", PclInitContext );
-#endif /* XP_PCL_MONO */
-
- /*
- * Create and fill in the devPrivate for the PCL driver.
- */
- AllocatePclPrivates(pScreen);
-
- pPriv =
- (PclScreenPrivPtr)pScreen->devPrivates[PclScreenPrivateIndex].ptr;
-
- maxDim = MAX( pScreen->height, pScreen->width );
- xRes = pScreen->width / ( pScreen->mmWidth / 25.4 );
- yRes = pScreen->height / ( pScreen->mmHeight / 25.4 );
- maxRes = MAX( xRes, yRes );
-
-#ifdef XP_PCL_COLOR
- cfbScreenInit( pScreen, NULL, maxDim, maxDim, maxRes, maxRes,
- maxRes );
- /*
- * Clean up the fields that we stomp (code taken from cfbCloseScreen)
- */
- for( i = 0; (int) i < pScreen->numDepths; i++ )
- xfree( pScreen->allowedDepths[i].vids );
- xfree( pScreen->allowedDepths );
- xfree( pScreen->visuals );
-#else
- mfbScreenInit( pScreen, NULL, maxDim, maxDim, maxRes, maxRes,
- maxRes );
-#endif /* XP_PCL_COLOR */
-
- miInitializeBackingStore ( pScreen );
-
- pScreen->defColormap = FakeClientID(0);
- pScreen->blackPixel = 1;
- pScreen->whitePixel = 0;
-
- pPriv->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = PclCloseScreen;
-
- pScreen->QueryBestSize = (QueryBestSizeProcPtr)PclQueryBestSize;
- pScreen->SaveScreen = (SaveScreenProcPtr)_XpBoolNoop;
- pScreen->GetImage = (GetImageProcPtr)_XpVoidNoop;
- pScreen->GetSpans = (GetSpansProcPtr)_XpVoidNoop;
- pScreen->CreateWindow = PclCreateWindow;
- pScreen->DestroyWindow = PclDestroyWindow;
-/*
- pScreen->PositionWindow = PclPositionWindow;
-*/
- pScreen->ChangeWindowAttributes = PclChangeWindowAttributes;
-/*
- pScreen->RealizeWindow = PclMapWindow;
- pScreen->UnrealizeWindow = PclUnmapWindow;
-*/
- pScreen->PaintWindowBackground = PclPaintWindow;
- pScreen->PaintWindowBorder = PclPaintWindow;
- pScreen->CopyWindow = PclCopyWindow; /* XXX Hard routine to write! */
-
- pScreen->CreatePixmap = PclCreatePixmap;
- pScreen->DestroyPixmap = PclDestroyPixmap;
- pScreen->RealizeFont = PclRealizeFont;
- pScreen->UnrealizeFont = PclUnrealizeFont;
- pScreen->CreateGC = PclCreateGC;
-
- pScreen->CreateColormap = PclCreateColormap;
- pScreen->DestroyColormap = PclDestroyColormap;
- pScreen->InstallColormap = (InstallColormapProcPtr)NoopDDA;
- pScreen->UninstallColormap = (UninstallColormapProcPtr)NoopDDA;
- pScreen->ListInstalledColormaps = PclListInstalledColormaps;
- pScreen->StoreColors = PclStoreColors;
-/*
- pScreen->ResolveColor = PclResolveColor;
-*/
-
- pScreen->BitmapToRegion = mfbPixmapToRegion;
-
- pScreen->ConstrainCursor = PclConstrainCursor;
- pScreen->CursorLimits = PclCursorLimits;
- pScreen->DisplayCursor = PclDisplayCursor;
- pScreen->RealizeCursor = PclRealizeCursor;
- pScreen->UnrealizeCursor = PclUnrealizeCursor;
- pScreen->RecolorCursor = PclRecolorCursor;
- pScreen->SetCursorPosition = PclSetCursorPosition;
-
- pScreen->visuals = Visuals;
- pScreen->numVisuals = NUM_VISUALS( Visuals );
- pScreen->allowedDepths = Depths;
- pScreen->numDepths = NUM_DEPTHS( Depths );
-
- for( i = 0; i < NUM_DEPTHS( Depths ); i++ )
- {
- pScreen->allowedDepths[i].vids =
- (VisualID *)xalloc( sizeof(VisualID ) );
- pScreen->allowedDepths[i].vids[0] = i + 1;
- }
-
-#ifdef XP_PCL_COLOR
- pScreen->rootVisual = 2;
- pScreen->rootDepth = 8;
-#else
- pScreen->rootVisual = 1;
- pScreen->rootDepth = 1;
-#endif /* XP_PCL_COLOR */
-
- pPriv->colormaps = NULL;
- PclCreateDefColormap( pScreen );
-
- return TRUE;
-}
-
-static void
-AllocatePclPrivates(ScreenPtr pScreen)
-{
- static unsigned long PclGeneration = 0;
-
- if((unsigned long) PclGeneration != serverGeneration)
- {
- PclScreenPrivateIndex = AllocateScreenPrivateIndex();
-
- PclWindowPrivateIndex = AllocateWindowPrivateIndex();
- AllocateWindowPrivate( pScreen, PclWindowPrivateIndex,
- sizeof( PclWindowPrivRec ) );
-
- PclContextPrivateIndex = XpAllocateContextPrivateIndex();
- XpAllocateContextPrivate( PclContextPrivateIndex,
- sizeof( PclContextPrivRec ) );
-
- PclGCPrivateIndex = AllocateGCPrivateIndex();
- AllocateGCPrivate( pScreen, PclGCPrivateIndex,
- sizeof( PclGCPrivRec ) );
-
- PclPixmapPrivateIndex = AllocatePixmapPrivateIndex();
- AllocatePixmapPrivate( pScreen, PclPixmapPrivateIndex,
- sizeof( PclPixmapPrivRec ) );
-
- PclGeneration = serverGeneration;
- }
-
- pScreen->devPrivates[PclScreenPrivateIndex].ptr = (pointer)xalloc(
- sizeof(PclScreenPrivRec));
-}
-
-/*
- * PclInitContext
- *
- * Establish the appropriate values for a PrintContext used with the PCL
- * driver.
- */
-
-static char DOC_ATT_SUPP[]="document-attributes-supported";
-static char DOC_ATT_VAL[]="document-format xp-listfonts-modes";
-static char JOB_ATT_SUPP[]="job-attributes-supported";
-static char JOB_ATT_VAL[]="";
-static char PAGE_ATT_SUPP[]="xp-page-attributes-supported";
-static char PAGE_ATT_VAL[]="content-orientation default-printer-resolution \
-default-input-tray default-medium plex xp-listfonts-modes";
-
-static int
-PclInitContext(XpContextPtr pCon)
-{
- XpDriverFuncsPtr pFuncs;
- PclContextPrivPtr pConPriv;
- char *server, *attrStr;
- char *modelID;
- char *configDir;
- char *pathName;
- int i, j;
- float width, height;
- XpOidMediumDiscreteSizeList* ds_list;
- XpOidArea* repro;
- XpOid page_size;
- XpOidMediumSS* m;
-
- /*
- * Initialize the attribute store for this printer.
- */
- XpInitAttributes( pCon );
-
- /*
- * Initialize the function pointers
- */
- pFuncs = &( pCon->funcs );
- pFuncs->StartJob = PclStartJob;
- pFuncs->EndJob = PclEndJob;
- pFuncs->StartDoc = PclStartDoc;
- pFuncs->EndDoc = PclEndDoc;
- pFuncs->StartPage = PclStartPage;
- pFuncs->EndPage = PclEndPage;
- pFuncs->PutDocumentData = PclDocumentData;
- pFuncs->GetDocumentData = PclGetDocumentData;
- pFuncs->GetAttributes = PclGetAttributes;
- pFuncs->SetAttributes = PclSetAttributes;
- pFuncs->AugmentAttributes = PclAugmentAttributes;
- pFuncs->GetOneAttribute = PclGetOneAttribute;
- pFuncs->DestroyContext = PclDestroyContext;
- pFuncs->GetMediumDimensions = PclGetMediumDimensions;
- pFuncs->GetReproducibleArea = PclGetReproducibleArea;
-
-
- /*
- * Set up the context privates
- */
- pConPriv =
- (PclContextPrivPtr)pCon->devPrivates[PclContextPrivateIndex].ptr;
-
- pConPriv->jobFileName = (char *)NULL;
- pConPriv->pageFileName = (char *)NULL;
- pConPriv->pJobFile = (FILE *)NULL;
- pConPriv->pPageFile = (FILE *)NULL;
- pConPriv->dash = NULL;
- pConPriv->validGC = 0;
-
- pConPriv->getDocClient = (ClientPtr)NULL;
- pConPriv->getDocBufSize = 0;
- modelID = XpGetOneAttribute(pCon, XPPrinterAttr, "xp-model-identifier");
- if ( (configDir = XpGetConfigDir(False)) != (char *) NULL ) {
- pathName = (char *)xalloc(strlen(configDir) + strlen(MODELDIRNAME) +
- strlen(modelID) + strlen("color.map") + 4);
- if (pathName) {
- sprintf(pathName, "%s/%s/%s/%s", configDir, MODELDIRNAME, modelID,
- "color.map");
- pConPriv->ctbl = PclReadMap(pathName, &pConPriv->ctbldim);
- xfree(pathName);
-
- } else
- pConPriv->ctbl = NULL;
- } else
- pConPriv->ctbl = NULL;
-
-#ifdef XP_PCL_LJ3
- /*
- * Initialize the spooling buffer for saving the figures temporary
- * (LaserJet IIIs printers don't support the macro function which
- * includes some HP-GL/2 commands.)
- */
- pConPriv->fcount = 0;
- if ( !(pConPriv->figures = (char *)xalloc(1024)) )
- pConPriv->fcount_max = 0;
- else
- pConPriv->fcount_max = 1024;
-#endif /* XP_PCL_LJ3 */
-
- /*
- * document-attributes-supported
- */
- server = XpGetOneAttribute( pCon, XPServerAttr, DOC_ATT_SUPP );
- if( ( attrStr = (char *)xalloc(strlen(server) + strlen(DOC_ATT_SUPP)
- + strlen(DOC_ATT_VAL) +
- strlen(PAGE_ATT_VAL) + 8 ) )
- == (char *)NULL )
- return BadAlloc;
- sprintf( attrStr, "*%s:\t%s %s %s", DOC_ATT_SUPP, server,
- DOC_ATT_VAL, PAGE_ATT_VAL );
- XpAugmentAttributes( pCon, XPPrinterAttr, attrStr );
- xfree( attrStr );
-
- /*
- * job-attributes-supported
- */
- server = XpGetOneAttribute( pCon, XPServerAttr, JOB_ATT_SUPP );
- if( ( attrStr = (char *)xalloc(strlen(server) + strlen(JOB_ATT_SUPP)
- + strlen(JOB_ATT_VAL) + 8 ) )
- == (char *)NULL )
- return BadAlloc;
- sprintf( attrStr, "*%s:\t%s %s", JOB_ATT_SUPP, server, JOB_ATT_VAL );
- XpAugmentAttributes( pCon, XPPrinterAttr, attrStr );
- xfree( attrStr );
-
- /*
- * xp-page-attributes-supported
- */
- server = XpGetOneAttribute( pCon, XPServerAttr, PAGE_ATT_SUPP );
- if( ( attrStr = (char *)xalloc(strlen(server) + strlen(PAGE_ATT_SUPP)
- + strlen(PAGE_ATT_VAL) + 8 ) )
- == (char *)NULL )
- return BadAlloc;
- sprintf( attrStr, "*%s:\t%s %s", PAGE_ATT_SUPP, server, PAGE_ATT_VAL );
- XpAugmentAttributes( pCon, XPPrinterAttr, attrStr );
- xfree( attrStr );
-
- /*
- * Validate the attribute pools
- */
- XpValidateAttributePool( pCon, XPPrinterAttr, &PclValidatePoolsRec );
-
- /*
- * Munge the reproducible areas to reflect the fact that PCL will not let
- * me move the right or left margins closer than .25" to the edge of the
- * paper.
- */
- m = XpGetMediumSSAttr( pCon, XPPrinterAttr,
- xpoid_att_medium_source_sizes_supported,
- (const XpOidList*) NULL,
- (const XpOidList*) NULL );
- for( i = 0; i < XpOidMediumSSCount( m ); i++ )
- {
- if( XpOidMediumSS_DISCRETE == (m->mss)[i].mstag )
- {
- ds_list = (m->mss)[i].ms.discrete;
- for( j = 0; j < ds_list->count; j++ )
- {
- repro = &(ds_list->list)[j].assured_reproduction_area;
- page_size = (ds_list->list)[j].page_size;
- XpGetMediumMillimeters( page_size, &width, &height );
-
- if( repro->minimum_x < 6.35 )
- repro->minimum_x = 6.35;
- if( width - repro->maximum_x < 6.35 )
- repro->maximum_x = width - 6.35;
- }
- }
- }
- XpPutMediumSSAttr( pCon, XPPrinterAttr,
- xpoid_att_medium_source_sizes_supported, m );
- XpOidMediumSSDelete( m );
-
- /*
- * Finish validating the attribute pools
- */
-
- XpValidateAttributePool( pCon, XPDocAttr, &PclValidatePoolsRec );
- XpValidateAttributePool( pCon, XPJobAttr, &PclValidatePoolsRec );
- XpValidateAttributePool( pCon, XPPageAttr, &PclValidatePoolsRec );
-
- /*
- * Clear out the colormap storage
- */
- pConPriv->palettes = NULL;
-
- return Success;
-}
-
-static Bool
-PclDestroyContext(XpContextPtr pCon)
-{
- PclContextPrivPtr pConPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
- PclPaletteMapPtr p, t;
- PclCmapToContexts *pCmap;
- ScreenPtr screen;
- PclScreenPrivPtr sPriv;
- PclContextListPtr con, prevCon, temp;
-
-
- /*
- * Clean up the temporary files
- */
- if( pConPriv->pPageFile != (FILE *)NULL )
- {
- fclose( pConPriv->pPageFile );
- pConPriv->pPageFile = (FILE *)NULL;
- }
- if( pConPriv->pageFileName != (char *)NULL )
- {
- unlink( pConPriv->pageFileName );
- xfree( pConPriv->pageFileName );
- pConPriv->pageFileName = (char *)NULL;
- }
-
- if( pConPriv->pJobFile != (FILE *)NULL )
- {
- fclose( pConPriv->pJobFile );
- pConPriv->pJobFile = NULL;
- }
- if( pConPriv->jobFileName != (char *)NULL )
- {
- unlink( pConPriv->jobFileName );
- xfree( pConPriv->jobFileName );
- pConPriv->jobFileName = (char *)NULL;
- }
-
- xfree( pConPriv->dash );
- xfree(pConPriv->ctbl);
- pConPriv->ctbl = NULL;
-#ifdef XP_PCL_LJ3
- xfree( pConPriv->figures );
-#endif /* XP_PCL_LJ3 */
-
- /*
- * Destroy the colormap<->palette mappings
- */
- p = pConPriv->palettes;
- while( p )
- {
- t = p;
- p = p->next;
- xfree( t );
- }
- pConPriv->palettes = NULL;
-
- /*
- * Remove the context from the screen-level colormap<->contexts mappings
- */
- screen = screenInfo.screens[pCon->screenNum];
- sPriv = (PclScreenPrivPtr)screen->devPrivates[PclScreenPrivateIndex].ptr;
- pCmap = sPriv->colormaps;
- while( pCmap )
- {
- con = pCmap->contexts;
- prevCon = NULL;
-
- while( con )
- {
- if( con->context->contextID == pCon->contextID )
- {
- if( prevCon )
- {
- temp = con;
- prevCon->next = con = con->next;
- }
- else
- {
- temp = pCmap->contexts;
- pCmap->contexts = con = con->next;
- }
- xfree( temp );
- }
- else
- con = con->next;
- }
-
- pCmap = pCmap->next;
- }
-
- XpDestroyAttributes(pCon);
-
- return Success;
-}
-
-XpContextPtr
-PclGetContextFromWindow(WindowPtr win)
-{
- PclWindowPrivPtr pPriv;
-
- while( win )
- {
- pPriv =
- (PclWindowPrivPtr)win->devPrivates[PclWindowPrivateIndex].ptr;
- if( pPriv->validContext )
- return pPriv->context;
-
- win = win->parent;
- }
-
- return NULL;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclLine.c b/nx-X11/programs/Xserver/Xprint/pcl/PclLine.c
deleted file mode 100644
index f2b564df8..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclLine.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/* $Xorg: PclLine.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclLine.c
-** *
-** * Contents:
-** * Line drawing routines for the PCL driver
-** *
-** * Created: 10/11/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclLine.c,v 1.6 1999/12/13 02:12:55 robin Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Pcl.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-
-/*
- * PclPolyLine()
- * PclPolySegment()
- *
- * Generates PCL code to draw a polyline, or a collection of distinct
- * line segments, clipped by the current clip region. Since PCL
- * supports clipping to a rectangle, and the clip region is
- * represented as a collection of visible rectangles, we can draw and
- * clip the line by repeatedly drawing the complete line, clipped to
- * each rectangle in the clip region.
- *
- * Since each box in the clipping region generates approximately 30
- * bytes of PCL code, we have to have a way to avoid having a large
- * number of boxes. The worst problem the case where the clipping
- * region is a collection of one-pixel-high boxes, perhaps arising
- * from a bitmap clip mask, or a region defined by a non-rectangular
- * polygon.
- *
- * To alleviate this problem, we create a second clipping region,
- * which consists of the union of the bounding boxes of each line
- * segment. (Each bounding box is also increased by some amount
- * related to the current line width to allow for non-zero-width
- * lines, and for the various end and join styles.) This region is
- * intersected with the "real" clipping region to get the region used
- * to actually clip the polyline. This should result in a significant
- * reduction in the number of clip rectangles, as the region-handling
- * code should consolidate many of the fragments of one-pixel-high
- * rectangles into larger rectangles.
- */
-
-void
-PclPolyLine(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int mode,
- int nPoints,
- xPoint *pPoints)
-{
- char t[80];
- FILE *outFile;
- int xoffset = 0, yoffset = 0;
- int nbox;
- BoxPtr pbox;
- xRectangle *drawRects, *r;
- RegionPtr drawRegion, region;
- short fudge;
- int i;
- XpContextPtr pCon;
- PclContextPrivPtr pConPriv;
-
- if( PclUpdateDrawableGC( pGC, pDrawable, &outFile ) == FALSE )
- return;
-
- pCon = PclGetContextFromWindow( (WindowPtr) pDrawable );
- pConPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
-
- /*
- * Allocate the storage required to deal with the clipping
- * regions.
- */
- region = REGION_CREATE( pGC->pScreen, NULL, 0 );
- drawRects = (xRectangle *)
- xalloc( ( nPoints - 1 ) * sizeof( xRectangle ) );
-
- /*
- * Calculate the "fudge factor" based on the line width.
- * Multiplying by three seems to be a good first guess.
- * XXX I need to think of a way to test this.
- */
- fudge = 3 * pGC->lineWidth + 1;
-
- /*
- * Generate the PCL code to draw the polyline, by defining it as a
- * macro which uses the HP-GL/2 line drawing function.
- */
-
- MACRO_START( outFile, pConPriv );
- SAVE_PCL( outFile, pConPriv, "\033%0B" );
-
- sprintf( t, "PU%d,%dPD\n", pPoints[0].x + pDrawable->x,
- pPoints[0].y + pDrawable->y );
- SAVE_PCL( outFile, pConPriv, t ); /* Move to the start of the polyline */
-
- switch( mode )
- {
- case CoordModeOrigin:
- xoffset = pDrawable->x;
- yoffset = pDrawable->y;
- SAVE_PCL( outFile, pConPriv, "PA" );
- break;
- case CoordModePrevious:
- xoffset = yoffset = 0;
- SAVE_PCL( outFile, pConPriv, "PR" );
- break;
- }
-
- /*
- * Build the "drawing region" as we build the PCL to draw the
- * line.
- */
- for(i = 1, r = drawRects; i < nPoints; i++, r++ )
- {
- if( i != 1 )
- SAVE_PCL( outFile, pConPriv, "," );
-
- sprintf( t, "%d,%d", pPoints[i].x + xoffset,
- pPoints[i].y + yoffset );
- SAVE_PCL( outFile, pConPriv, t );
-
- r->x = MIN( pPoints[i-1].x, pPoints[i].x ) + xoffset - fudge;
- r->y = MIN( pPoints[i-1].y, pPoints[i].y ) + yoffset - fudge;
- r->width = abs( pPoints[i-1].x - pPoints[i].x ) + 2 * fudge;
- r->height = abs( pPoints[i-1].y - pPoints[i].y ) + 2 * fudge;
- }
- SAVE_PCL( outFile, pConPriv, ";\033%0A" ); /* End the macro */
- MACRO_END( outFile );
-
- /*
- * Convert the collection of rectangles into a proper region, then
- * intersect it with the clip region.
- */
- drawRegion = RECTS_TO_REGION( pGC->pScreen, nPoints - 1,
- drawRects, CT_UNSORTED );
- if( mode == CoordModePrevious )
- REGION_TRANSLATE( pGC->pScreen, drawRegion, pPoints[0].x, pPoints[0].y );
- REGION_INTERSECT( pGC->pScreen, region, drawRegion, pGC->pCompositeClip );
-
- /*
- * For each rectangle in the clip region, set the HP-GL/2 "input
- * window" and render the entire polyline to it.
- */
- pbox = REGION_RECTS( region );
- nbox = REGION_NUM_RECTS( region );
-
- PclSendData(outFile, pConPriv, pbox, nbox, 1.0);
-
- /*
- * Clean up the temporary regions
- */
- REGION_DESTROY( pGC->pScreen, drawRegion );
- REGION_DESTROY( pGC->pScreen, region );
- xfree( drawRects );
-}
-
-void
-PclPolySegment(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nSegments,
- xSegment *pSegments)
-{
- FILE *outFile, *dummy;
- char t[80];
- int xoffset, yoffset;
- int nbox, i;
- unsigned long valid;
- BoxPtr pbox;
- xRectangle *drawRects, *r;
- RegionPtr drawRegion, region;
- short fudge;
- XpContextPtr pCon;
- PclContextPrivPtr pConPriv;
- GC cacheGC;
-
-
- if( PclUpdateDrawableGC( pGC, pDrawable, &outFile ) == FALSE )
- return;
-
- pCon = PclGetContextFromWindow( (WindowPtr) pDrawable );
- pConPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
-
- /*
- * Allocate the storage for the temporary regions.
- */
- region = REGION_CREATE( pGC->pScreen, NULL, 0 );
- drawRects = (xRectangle *)
- xalloc( nSegments * sizeof( xRectangle ) );
-
- /*
- * Calculate the fudge factor, based on the line width
- */
- fudge = pGC->lineWidth * 3 + 1;
-
- /*
- * Turn off line joining.
- */
- SEND_PCL( outFile, "\033%0BLA2,6;\033%0A" );
-
- /*
- * Generate the PCL code to draw the segments, by defining them as
- * a macro which uses the HP-GL/2 line drawing function.
- *
- * XXX I wonder if this should be implemented using the Encoded
- * XXX Polyline function. Since I'm only sending it once, it's not
- * XXX necessarily too important.
- */
-
- MACRO_START( outFile, pConPriv );
- SAVE_PCL( outFile, pConPriv, "\033%0B" );
-
- xoffset = pDrawable->x;
- yoffset = pDrawable->y;
-
- for( i = 0, r = drawRects; i < nSegments; i++, r++ )
- {
- r->x = MIN( pSegments[i].x1, pSegments[i].x2 ) + xoffset;
- r->y = MIN( pSegments[i].y1, pSegments[i].y2 ) + yoffset;
- r->width = abs( pSegments[i].x1 - pSegments[i].x2 );
- r->height = abs( pSegments[i].y1 - pSegments[i].y2 );
-
- sprintf( t, "PU%d,%d;PD%d,%d;", pSegments[i].x1 + xoffset,
- pSegments[i].y1 + yoffset, pSegments[i].x2 +
- xoffset, pSegments[i].y2 + yoffset );
- SAVE_PCL( outFile, pConPriv, t );
-
- r->x -= fudge;
- r->y -= fudge;
- r->width += 2 * fudge;
- r->height += 2 * fudge;
- }
- SAVE_PCL( outFile, pConPriv, "\033%0A" );
- MACRO_END ( outFile );
-
- /*
- * Convert the collection of rectangles into a proper region, then
- * intersect it with the clip region.
- */
- drawRegion = RECTS_TO_REGION( pGC->pScreen, nSegments,
- drawRects, CT_UNSORTED );
- REGION_INTERSECT( pGC->pScreen, region, drawRegion, pGC->pCompositeClip );
-
- /*
- * For each rectangle in the clip region, set the HP-GL/2 "input
- * window" and render the entire set of segments to it.
- */
- pbox = REGION_RECTS( region );
- nbox = REGION_NUM_RECTS( region );
-
- PclSendData(outFile, pConPriv, pbox, nbox, 1.0);
-
- /*
- * Now we need to reset the line join mode to whatever it was at before.
- * The easiest way is to force the cached GC's joinstyle to be different
- * from the current GC's joinstyle, then re-update the GC. This way, we
- * don't have to duplicate code unnecessarily.
- */
- PclGetDrawablePrivateStuff( pDrawable, &cacheGC, &valid, &dummy );
- cacheGC.joinStyle = !cacheGC.joinStyle;
- PclSetDrawablePrivateGC( pDrawable, cacheGC );
- PclUpdateDrawableGC( pGC, pDrawable, &outFile );
-
- /*
- * Clean up
- */
- REGION_DESTROY( pGC->pScreen, drawRegion );
- REGION_DESTROY( pGC->pScreen, region );
- xfree( drawRects );
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclMisc.c b/nx-X11/programs/Xserver/Xprint/pcl/PclMisc.c
deleted file mode 100644
index 3a958e783..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclMisc.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/* $Xorg: PclMisc.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclMisc.c
-** *
-** * Contents:
-** * Miscellaneous code for Pcl driver.
-** *
-** * Created: 2/01/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclMisc.c,v 1.10tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdlib.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <X11/Xos.h> /* for SIGCLD on pre-POSIX systems */
-#include "Pcl.h"
-
-#include "cursor.h"
-#include "resource.h"
-
-#include "windowstr.h"
-#include "propertyst.h"
-#include "attributes.h"
-
-
-/*ARGSUSED*/
-void
-PclQueryBestSize(
- int type,
- short *pwidth,
- short *pheight,
- ScreenPtr pScreen)
-{
- unsigned width, highBit;
-
- switch(type)
- {
- case CursorShape:
- *pwidth = 0;
- *pheight = 0;
- break;
- case TileShape:
- case StippleShape:
- width = *pwidth;
- if (!width) break;
- /* Return the nearest power of two >= what they gave us */
- highBit = 0x80000000;
- /* Find the highest 1 bit in the given width */
- while(!(highBit & width))
- highBit >>= 1;
- /* If greater than that then return the next power of two */
- if((highBit - 1) & width)
- highBit <<= 1;
- *pwidth = highBit;
- /* height is a don't-care */
- break;
- }
-}
-
-/*
- * GetPropString searches the window heirarchy from pWin up looking for
- * a property by the name of propName. If found, returns the property's
- * value. If not, it returns NULL.
- */
-char *
-GetPropString(
- WindowPtr pWin,
- char *propName)
-{
- Atom atom;
- PropertyPtr pProp = (PropertyPtr)NULL;
- char *retVal;
-
- atom = MakeAtom(propName, strlen(propName), FALSE);
- if(atom != BAD_RESOURCE)
- {
- WindowPtr pPropWin;
- int n;
-
- /*
- * The atom has been defined, but it might only exist as a
- * property on an unrelated window.
- */
- for(pPropWin = pWin; pPropWin != (WindowPtr)NULL;
- pPropWin = pPropWin->parent)
- {
- for(pProp = (PropertyPtr)(wUserProps(pPropWin));
- pProp != (PropertyPtr)NULL;
- pProp = pProp->next)
- {
- if (pProp->propertyName == atom)
- break;
- }
- if(pProp != (PropertyPtr)NULL)
- break;
- }
- if(pProp == (PropertyPtr)NULL)
- return (char *)NULL;
-
- n = (pProp->format/8) * pProp->size; /* size (bytes) of prop */
- retVal = (char *)xalloc(n + 1);
- (void)memcpy((void *)retVal, (void *)pProp->data, n);
- retVal[n] = '\0';
-
- return retVal;
- }
-
- return (char *)NULL;
-}
-
-#include <signal.h>
-#include <errno.h>
-
-/* ARGSUSED */
-static void SigchldHndlr (
- int dummy)
-{
- int status;
- int olderrno = errno;
- struct sigaction act;
- sigfillset(&act.sa_mask);
- act.sa_flags = 0;
- act.sa_handler = SigchldHndlr;
-
- (void) wait (&status);
-
- /*
- * Is this really necessary?
- */
- sigaction(SIGCHLD, &act, (struct sigaction *)NULL);
- errno = olderrno;
-}
-
-/*
- * SystemCmd provides a wrapper for the 'system' library call. The call
- * appears to be sensitive to the handling of SIGCHLD, so this wrapper
- * sets the status to SIG_DFL, and then resets the established handler
- * after system returns.
- */
-int
-SystemCmd(char *cmdStr)
-{
- int status;
- struct sigaction newAct, oldAct;
- sigfillset(&newAct.sa_mask);
- newAct.sa_flags = 0;
- newAct.sa_handler = SIG_DFL;
- sigfillset(&oldAct.sa_mask);
- oldAct.sa_flags = 0;
- oldAct.sa_handler = SigchldHndlr;
-
- /*
- * get the old handler, and set the action to IGN
- */
- sigaction(SIGCHLD, &newAct, &oldAct);
-
- status = system (cmdStr);
-
- sigaction(SIGCHLD, &oldAct, (struct sigaction *)NULL);
- return status;
-}
-
-
-/*
- * PclGetMediumDimensions is installed in the GetMediumDimensions field
- * of each Pcl-initialized context.
- */
-int
-PclGetMediumDimensions(XpContextPtr pCon,
- CARD16 *width,
- CARD16 *height)
-{
- XpGetMediumDimensions(pCon, width, height);
- return Success;
-}
-
-/*
- * PclGetReproducibleArea is installed in the GetReproducibleArea field
- * of each Pcl-initialized context.
- */
-int
-PclGetReproducibleArea(XpContextPtr pCon,
- xRectangle *pRect)
-{
- XpGetReproductionArea(pCon, pRect);
- return Success;
-}
-
-#ifdef XP_PCL_LJ3
-/*
- * PclSpoolFigs spooled the rendering PCL/HP-GL2 commands into the
- * temporary buffer pointed by figures pointer in pcl private context.
- * LaserJet IIIs printers don't support the macro function which
- * includes some HP-GL/2 commands.
- */
-void
-PclSpoolFigs(PclContextPrivPtr pConPriv, char *t, int n)
-{
-char *ptr;
-
- ptr = pConPriv->figures;
- while ( ( pConPriv->fcount + n) > pConPriv->fcount_max ) {
- ptr = (char *)xrealloc(ptr, 1024 + pConPriv->fcount_max);
- if ( !ptr )
- return;
- pConPriv->figures = ptr;
- pConPriv->fcount_max += 1024;
- }
- ptr += pConPriv->fcount;
- pConPriv->fcount += n;
- memcpy(ptr, t, n);
-}
-#endif /* XP_PCL_LJ3 */
-
-/*
- * PclSendData:
- * For XP-PCL-COLOR/XP-PCL-MONO, it executes the macro stored before
- * in the clipped area.
- * For XP-PCL-LJ3, it draws the spooled figures in the clipped area.
- */
-void
-PclSendData(
- FILE *outFile,
- PclContextPrivPtr pConPriv,
- BoxPtr pbox,
- int nbox,
- double ratio
-)
-{
-char *ptr;
-int n;
-char t[80];
-
-#ifdef XP_PCL_LJ3
- ptr = pConPriv->figures;
- n = pConPriv->fcount;
-#else
- ptr = "\033&f3X";
- n = 5;
-#endif /* XP_PCL_LJ3 */
-
- while( nbox )
- {
- /*
- * Set the HP-GL/2 input window to the current
- * rectangle in the clip region, then send the code to
- * execute the macro defined above.
- */
- if (ratio == 1.0)
- sprintf( t, "\033%%0BIW%d,%d,%d,%d;\033%%0A",
- pbox->x1, pbox->y1,
- pbox->x2, pbox->y2 );
- else
- sprintf( t, "\033%%0BIW%g,%d,%g,%d;\033%%0A",
- ratio * pbox->x1, pbox->y1,
- ratio * pbox->x2, pbox->y2 );
-
- SEND_PCL( outFile, t );
- SEND_PCL_COUNT( outFile, ptr, n);
-
- nbox--;
- pbox++;
- }
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclPixel.c b/nx-X11/programs/Xserver/Xprint/pcl/PclPixel.c
deleted file mode 100644
index bfad618ed..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclPixel.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* $Xorg: PclPixel.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclPixel.c
-** *
-** * Contents:
-** * Pixel-drawing code for the PCL DDX driver
-** *
-** * Created: 10/23/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclPixel.c,v 1.6tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-
-#include "windowstr.h"
-#include "gcstruct.h"
-
-#include "Pcl.h"
-
-void
-PclPolyPoint( pDrawable, pGC, mode, nPoints, pPoints )
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode;
- int nPoints;
- xPoint *pPoints;
-{
- char t[80];
- FILE *outFile;
- int xoffset, yoffset;
- BoxRec box;
- int xloc, yloc, i;
-#if 0
- XpContextPtr pCon;
- PclContextPrivPtr cPriv;
- PclPixmapPrivPtr pPriv;
-#endif
-
- if( PclUpdateDrawableGC( pGC, pDrawable, &outFile ) == FALSE )
- return;
-
- xoffset = pDrawable->x;
- yoffset = pDrawable->y;
-
- /*
- * Enter HP-GL/2 and change the line style to one in which only
- * the vertices of the specified polyline are drawn. We must also
- * temporarily change the line width so that only a single pixel
- * is drawn. Then move to the first possible location.
- */
- xloc = pPoints[0].x + pDrawable->x;
- yloc = pPoints[0].y + pDrawable->y;
-
- sprintf( t, "\27%%0BPW0,0;LT0;PU;PA%d,%d", xloc, yloc );
- SEND_PCL( outFile, t );
-
- /*
- * Check each point against the clip region. If it is outside the
- * region, don't send the PCL to the printer.
- */
-
- for( i = 0; i < nPoints; i++ )
- {
- if( POINT_IN_REGION( pGC->pScreen, pGC->clientClip, xloc, yloc, &box ) )
- {
- sprintf( t, ",%d,%d", xloc, yloc );
- SEND_PCL( outFile, t );
- }
-
- if( mode == CoordModeOrigin )
- {
- xloc = pPoints[i+1].x + xoffset;
- yloc = pPoints[i+1].y + yoffset;
- }
- else
- {
- xloc += pPoints[i+1].x;
- yloc += pPoints[i+1].y;
- }
- }
-
-#if 0
- /*
- * Change the line style and width back to what they were before
- * this routine was called. No, this isn't pretty...
- */
- if( pDrawable->type == DRAWABLE_WINDOW )
- {
- pCon = PclGetContextFromWindow( (WindowPtr)pDrawable );
- cPriv = pCon->devPrivates[PclContextPrivateIndex].ptr;
- cPriv->changeMask = GCLineWidth | GCLineStyle;
- }
- else
- {
- pPriv =
- ((PixmapPtr)pDrawable)->devPrivates[PclPixmapPrivateIndex].ptr;
- pPriv->changeMask = GCLineWidth | GCLineStyle;
- }
-#endif
-
- PclUpdateDrawableGC( pGC, pDrawable, &outFile );
-
- /*
- * Go back to PCL
- */
- SEND_PCL( outFile, "\27%0A" );
-}
-
-void
-PclPushPixels( pGC, pBitmap, pDrawable, width, height, x, y )
- GCPtr pGC;
- PixmapPtr pBitmap;
- DrawablePtr pDrawable;
- int width;
- int height;
- int x;
- int y;
-{
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclPixmap.c b/nx-X11/programs/Xserver/Xprint/pcl/PclPixmap.c
deleted file mode 100644
index 9449dfdd6..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclPixmap.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* $Xorg: PclPixmap.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclPixmap.c
-** *
-** * Contents:
-** * Pixmap handling code for the PCL DDX driver
-** *
-** * Created: 2/19/96
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclPixmap.c,v 1.3 1999/12/16 02:26:27 robin Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Pcl.h"
-#include "cfb.h"
-#include "cfb32.h"
-#include "mfb.h"
-#include "pixmapstr.h"
-
-PixmapPtr
-PclCreatePixmap(ScreenPtr pScreen,
- int width,
- int height,
- int depth)
-{
- if( depth == 1 )
- return mfbCreatePixmap( pScreen, width, height, depth );
- else if( depth <= 8 )
- return cfbCreatePixmap( pScreen, width, height, depth );
- else if( depth <= 32 )
- return cfb32CreatePixmap( pScreen, width, height, depth );
- return 0;
-}
-
-
-Bool
-PclDestroyPixmap(PixmapPtr pPixmap)
-{
- if( pPixmap->drawable.depth == 1 )
- return mfbDestroyPixmap( pPixmap );
- else if( pPixmap->drawable.depth <= 8 )
- return cfbDestroyPixmap( pPixmap );
- else if( pPixmap->drawable.depth <= 32 )
- return cfb32DestroyPixmap( pPixmap );
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclPolygon.c b/nx-X11/programs/Xserver/Xprint/pcl/PclPolygon.c
deleted file mode 100644
index 41ba4b1c0..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclPolygon.c
+++ /dev/null
@@ -1,353 +0,0 @@
-/* $Xorg: PclPolygon.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclPolygon.c
-** *
-** * Contents:
-** * Draws Polygons and Rectangles for the PCL DDX
-** *
-** * Created: 10/23/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclPolygon.c,v 1.6 1999/12/13 02:12:56 robin Exp $ */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Pcl.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-
-void
-PclPolyRectangle(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nRects,
- xRectangle *pRects)
-{
- char t[80];
- FILE *outFile;
- int nbox, i;
- BoxPtr pbox;
- xRectangle *drawRects, *r;
- RegionPtr drawRegion, region;
- short fudge;
- int xoffset, yoffset;
- XpContextPtr pCon;
- PclContextPrivPtr pConPriv;
-
- if( PclUpdateDrawableGC( pGC, pDrawable, &outFile ) == FALSE )
- return;
-
- pCon = PclGetContextFromWindow( (WindowPtr) pDrawable );
- pConPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
-
- /*
- * Allocate the storage required to deal with the clipping
- * regions.
- */
- region = REGION_CREATE( pGC->pScreen, NULL, 0 );
- drawRects = (xRectangle *)xalloc( nRects * sizeof( xRectangle ) );
-
- fudge = 3 * pGC->lineWidth + 1;
-
- /*
- * Generate the PCL code to draw the rectangles, by defining them
- * as a macro which uses the HP-GL/2 rectangle drawing function.
- */
- MACRO_START( outFile, pConPriv );
- SAVE_PCL( outFile, pConPriv, "\033%0B" );
-
- xoffset = pDrawable->x;
- yoffset = pDrawable->y;
-
- for( i = 0, r = drawRects; i < nRects; i++, r++ )
- {
- xRectangle rect = pRects[i];
-
- /* Draw the rectangle */
- sprintf( t, "PU%d,%d;ER%d,%d;", rect.x + xoffset,
- rect.y + yoffset, rect.width, rect.height );
- SAVE_PCL( outFile, pConPriv, t );
-
- /* Build the bounding box */
- r->x = MIN( rect.x, rect.x + rect.width ) + xoffset -
- fudge;
- r->y = MIN( rect.y, rect.y + rect.height ) + yoffset -
- fudge;
- r->width = rect.width + 2 * fudge;
- r->height = rect.height + 2 * fudge;
- }
- SAVE_PCL( outFile, pConPriv, ";\033%0A" ); /* End the macro */
- MACRO_END( outFile );
-
- /*
- * Convert the collection of rectangles to a proper region, then
- * intersect it with the clip region.
- */
- drawRegion = RECTS_TO_REGION( pGC->pScreen, nRects,
- drawRects, CT_UNSORTED );
-
- REGION_INTERSECT( pGC->pScreen, region, drawRegion, pGC->pCompositeClip );
-
- /*
- * For each rectangle in the clip region, set the HP-GL/2 "input
- * window" and render the set of rectangles to it.
- */
- pbox = REGION_RECTS( region );
- nbox = REGION_NUM_RECTS( region );
-
- PclSendData(outFile, pConPriv, pbox, nbox, 1.0);
-
- /*
- * Clean up the temporary regions
- */
- REGION_DESTROY( pGC->pScreen, drawRegion );
- REGION_DESTROY( pGC->pScreen, region );
- xfree( drawRects );
-}
-
-void
-PclFillPolygon(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int shape,
- int mode,
- int nPoints,
- DDXPointPtr pPoints)
-{
- char t[80];
- FILE *outFile;
- int nbox, i;
- BoxPtr pbox;
- BoxRec box;
- RegionPtr drawRegion, region;
- int xoffset, yoffset;
- int xtop, xbottom, yleft, yright;
- int fillRule;
- XpContextPtr pCon;
- PclContextPrivPtr pConPriv;
- char *command;
-
- if( PclUpdateDrawableGC( pGC, pDrawable, &outFile ) == FALSE )
- return;
-
- pCon = PclGetContextFromWindow( (WindowPtr) pDrawable );
- pConPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
-
- /*
- * Generate the PCL code to draw the filled polygon, by defining
- * it as a macro which uses the HP-GL/2 polygon drawing function.
- */
- MACRO_START( outFile, pConPriv );
- SAVE_PCL( outFile, pConPriv, "\033%0B" );
-
- if( mode == CoordModeOrigin )
- {
- xoffset = pDrawable->x;
- yoffset = pDrawable->y;
- command = "PA";
- }
- else
- {
- xoffset = yoffset = 0;
- command = "PR";
- }
-
- /* Begin the polygon */
- sprintf( t, "PU%d,%d;PM0;%s", pPoints[0].x + xoffset, pPoints[0].y
- + yoffset, command );
- SAVE_PCL( outFile, pConPriv, t );
-
- /* Seed the bounding box */
- xtop = xbottom = pPoints[0].x + xoffset;
- yleft = yright = pPoints[0].y + yoffset;
-
- /* Add the rest of the points to the polygon */
- for( i = 1; i < nPoints; i++ )
- {
- if( i != 1 )
- SAVE_PCL( outFile, pConPriv, "," );
-
- sprintf( t, "%d,%d", pPoints[i].x + xoffset, pPoints[i].y +
- yoffset );
- SAVE_PCL( outFile, pConPriv, t );
-
- /* Update the bounding box */
- xtop = MIN( xtop, pPoints[i].x + xoffset );
- xbottom = MAX( xbottom, pPoints[i].x + xoffset );
- yleft = MIN( yleft, pPoints[i].y + yoffset );
- yright = MAX( yright, pPoints[i].y + yoffset );
- }
-
- /* Close the polygon and the macro */
-
- if( pGC->fillRule == EvenOddRule )
- fillRule = 0;
- else
- fillRule = 1;
-
- sprintf( t, ";PM2;FP%d;\033%%0A", fillRule );
- SAVE_PCL( outFile, pConPriv, t );
- MACRO_END ( outFile );
-
- /*
- * Build the bounding region from the bounding box of the polygon
- */
- box.x1 = xtop;
- box.y1 = yleft;
- box.x2 = xbottom;
- box.y2 = yright;
- drawRegion = REGION_CREATE( pGC->pScreen, &box, 0 );
-
- if( mode == CoordModePrevious )
- REGION_TRANSLATE( pGC->pScreen, drawRegion, pPoints[0].x, pPoints[0].y );
-
- region = REGION_CREATE( pGC->pScreen, NULL, 0 );
-
- REGION_INTERSECT( pGC->pScreen, region, drawRegion, pGC->pCompositeClip );
-
- /*
- * For each rectangle in the clip region, set the HP-GL/2 "input
- * window" and render the polygon to it.
- */
- pbox = REGION_RECTS( region );
- nbox = REGION_NUM_RECTS( region );
-
- PclSendData(outFile, pConPriv, pbox, nbox, 1.0);
-
- /*
- * Clean up the temporary regions
- */
- REGION_DESTROY( pGC->pScreen, drawRegion );
- REGION_DESTROY( pGC->pScreen, region );
-}
-
-void
-PclPolyFillRect(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nRects,
- xRectangle *pRects)
-{
- char t[80];
- FILE *outFile;
- int nbox, i;
- BoxPtr pbox;
- xRectangle *drawRects, *r;
- RegionPtr drawRegion, region;
- int xoffset, yoffset;
- short fudge;
- XpContextPtr pCon;
- PclContextPrivPtr pConPriv;
-
- if( PclUpdateDrawableGC( pGC, pDrawable, &outFile ) == FALSE )
- return;
-
- pCon = PclGetContextFromWindow( (WindowPtr) pDrawable );
- pConPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
-
- /*
- * Allocate the storage required to deal with the clipping
- * regions.
- */
- region = REGION_CREATE( pGC->pScreen, NULL, 0 );
- drawRects = (xRectangle *)xalloc( nRects * sizeof( xRectangle ) );
-
-
- fudge = 3 * pGC->lineWidth + 1;
-
- /*
- * Generate the PCL code to draw the filled rectangles, by
- * defining them as a macro which uses the HP-GL/2 rectangle
- * drawing function.
- */
- MACRO_START( outFile, pConPriv );
- SAVE_PCL( outFile, pConPriv, "\033%0B" );
-
- xoffset = pDrawable->x;
- yoffset = pDrawable->y;
-
- for( i = 0, r = drawRects; i < nRects; i++, r++ )
- {
- xRectangle rect = pRects[i];
-
- /* Draw the rectangle */
- sprintf( t, "PU%d,%d;RR%d,%d;", rect.x + xoffset, rect.y +
- yoffset, rect.width, rect.height );
- SAVE_PCL( outFile, pConPriv, t );
-
- /* Build the bounding box */
- r->x = MIN( rect.x, rect.x + rect.width ) + xoffset - fudge;
- r->y = MIN( rect.y, rect.y + rect.height ) + yoffset -
- fudge;
- r->width = rect.width + 2 * fudge;
- r->height = rect.height + 2 * fudge;
- }
- SAVE_PCL( outFile, pConPriv, ";\033%0A" ); /* End the macro */
- MACRO_END( outFile );
-
- /*
- * Convert the collection of rectangles to a proper region, then
- * intersect it with the clip region.
- */
- drawRegion = RECTS_TO_REGION( pGC->pScreen, nRects,
- drawRects, CT_UNSORTED );
- REGION_INTERSECT( pGC->pScreen, region, drawRegion, pGC->pCompositeClip );
-
- /*
- * For each rectangle in the clip region, set the HP-GL/2 "input
- * window" and render the set of rectangles to it.
- */
- pbox = REGION_RECTS( region );
- nbox = REGION_NUM_RECTS( region );
-
- PclSendData(outFile, pConPriv, pbox, nbox, 1.0);
-
- /*
- * Clean up the temporary regions
- */
- REGION_DESTROY( pGC->pScreen, drawRegion );
- REGION_DESTROY( pGC->pScreen, region );
- xfree( drawRects );
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclPrint.c b/nx-X11/programs/Xserver/Xprint/pcl/PclPrint.c
deleted file mode 100644
index 701710253..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclPrint.c
+++ /dev/null
@@ -1,711 +0,0 @@
-/* $Xorg: PclPrint.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclPrint.c
-** *
-** * Contents: Print extension code of Pcl driver
-** *
-** * Created: 2/03/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclPrint.c,v 1.7tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <unistd.h>
-#include <X11/Xprotostr.h>
-
-#define NEED_EVENTS
-#include <X11/Xproto.h>
-#undef NEED_EVENTS
-
-#include "Pcl.h"
-
-#include "windowstr.h"
-#include "attributes.h"
-#include "AttrValid.h"
-#include "Oid.h"
-
-int
-PclStartJob(
- XpContextPtr pCon,
- Bool sendClientData,
- ClientPtr client)
-{
- PclContextPrivPtr pConPriv =
- (PclContextPrivPtr)pCon->devPrivates[PclContextPrivateIndex].ptr;
- PclPaletteMap *pal;
-
- /*
- * Check for existing page file, and delete it if it exists.
- */
- if(pConPriv->pageFileName != (char *)NULL)
- {
- if(pConPriv->pPageFile != (FILE *)NULL)
- {
- fclose(pConPriv->pPageFile);
- pConPriv->pPageFile = (FILE *)NULL;
- }
- unlink(pConPriv->pageFileName);
- xfree(pConPriv->pageFileName);
- pConPriv->pageFileName = (char *)NULL;
- }
-
- /*
- * Create a temporary file to store the printer output.
- */
- if (!XpOpenTmpFile("w+", &pConPriv->jobFileName, &pConPriv->pJobFile))
- return BadAlloc;
-
- /*
- * Create/Initialize the SoftFontInfo structure
- */
- pConPriv->pSoftFontInfo = PclCreateSoftFontInfo();
-
- /*
- * Set up the colormap handling
- */
- pConPriv->palettes = NULL;
- pConPriv->nextPaletteId = 4;
- pConPriv->currentPalette = 0;
-
- pal = &( pConPriv->staticGrayPalette );
- pal->paletteId = 1;
- pal->downloaded = 0;
-
- pal = &( pConPriv->trueColorPalette );
- pal->paletteId = 2;
- pal->downloaded = 0;
-
- pal = &( pConPriv->specialTrueColorPalette );
- pal->paletteId = 3;
- pal->downloaded = 0;
-
- return Success;
-}
-
-int
-PclEndJob(
- XpContextPtr pCon,
- Bool cancel)
-{
- PclContextPrivPtr priv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
-
-#ifdef CCP_DEBUG
- FILE *xpoutput;
-#endif
- FILE *fp;
- int retVal;
- char *fileName, *trailer;
- struct stat statBuf;
- PclPaletteMapPtr p;
-
- trailer = "\033%-12345X@PJL RESET\n";
-
- if( cancel == True )
- {
- if( priv->getDocClient != (ClientPtr)NULL ) {
- XpFinishDocData( priv->getDocClient );
-
- priv->getDocClient = NULL;
- priv->getDocBufSize = 0;
- }
-
- return Success;
- }
-
- if( priv->getDocClient != (ClientPtr)NULL && priv->getDocBufSize > 0 )
- {
- /*
- * We need to stash the trailer information somewhere...
- */
- if (!XpOpenTmpFile("w+", &fileName, &fp))
- return BadAlloc;
-
-#ifndef XP_PCL_LJ3
- SEND_PCL( fp, trailer );
- rewind( fp );
-
- retVal = XpSendDocumentData( priv->getDocClient, fp,
- strlen( trailer ),
- priv->getDocBufSize );
-#endif /* XP_PCL_LJ3 */
-
- fclose( fp );
- unlink( fileName );
- xfree( fileName );
-
- if( priv->getDocClient != (ClientPtr)NULL ) {
- XpFinishDocData( priv->getDocClient );
-
- priv->getDocClient = NULL;
- priv->getDocBufSize = 0;
- }
-
- return retVal;
- }
-
-#ifndef XP_PCL_LJ3
- SEND_PCL( priv->pJobFile, trailer );
-#endif /* XP_PCL_LJ3 */
-
- /*
- * Submit the job to the spooler
- */
- fflush( priv->pJobFile );
-
- /*
- * Dump the job file to another output file, for testing
- * purposes.
- */
- rewind( priv->pJobFile );
- stat( priv->jobFileName, &statBuf );
-
-#ifdef CCP_DEBUG
- unlink( "/users/prince/XpOutput" );
- xpoutput = fopen( "/users/prince/XpOutput", "w" );
-
- rewind( priv->pJobFile );
- TransferBytes( priv->pJobFile, xpoutput,
- (int)statBuf.st_size );
- fclose( xpoutput );
-#endif
-
- XpSubmitJob( priv->jobFileName, pCon );
- fclose( priv->pJobFile );
- unlink( priv->jobFileName );
- xfree( priv->jobFileName );
- priv->jobFileName = NULL;
-
- PclDestroySoftFontInfo(priv->pSoftFontInfo);
- priv->pSoftFontInfo = (PclSoftFontInfoPtr) NULL;
-
- /*
- * Clear out the colormap cache
- */
- p = priv->palettes;
- while( p )
- {
- p->downloaded = 0;
- p = p->next;
- }
-
- return Success;
-}
-
-/* StartPage
- *
- * If page file exists
- * close page file
- * set page file pointer = NULL
- * unlink page file
- * Create a new page file
- * Send the page header information to the page file
- * ClearArea the window and all descendant windows
- */
-int
-PclStartPage(
- XpContextPtr pCon,
- WindowPtr pWin)
-{
- PclContextPrivPtr pConPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
- PclWindowPrivPtr pWinPriv =
- (PclWindowPrivPtr)pWin->devPrivates[PclWindowPrivateIndex].ptr;
- xRectangle repro;
- char t[80];
- XpOid orient, plex, tray, medium;
- int dir, plexNum, num;
-
- /*
- * Put a pointer to the context in the window private structure
- */
- pWinPriv->validContext = 1;
- pWinPriv->context = pCon;
-
- /*
- * Clear out the old page file, if necessary
- */
- if(pConPriv->pPageFile != (FILE *)NULL)
- {
- fclose(pConPriv->pPageFile);
- pConPriv->pPageFile = (FILE *)NULL;
- }
- if(pConPriv->pageFileName != (char *)NULL)
- {
- unlink(pConPriv->pageFileName);
- pConPriv->pageFileName = (char *)NULL;
- }
-
- /*
- * Make up a new page file.
- */
- if (!XpOpenTmpFile("w+", &pConPriv->pageFileName, &pConPriv->pPageFile))
- return BadAlloc;
-
- /*
- * Reset the GC cached in the context private struct.
- */
- pConPriv->validGC = 0;
-
- /*
- * Set the page orientation
- */
- orient = XpGetContentOrientation( pCon );
- switch( orient )
- {
- case xpoid_val_content_orientation_landscape:
- dir = 1;
- break;
- case xpoid_val_content_orientation_reverse_portrait:
- dir = 2;
- break;
- case xpoid_val_content_orientation_reverse_landscape:
- dir = 3;
- break;
- case xpoid_val_content_orientation_portrait:
- default:
- dir = 0;
- break;
- }
- sprintf( t, "\033&l%dO", dir );
- SEND_PCL( pConPriv->pPageFile, t );
-
- /*
- * Set the duplexing method. Since PCL wants to think of it in
- * terms of the "binding edge," and the attribute store thinks in
- * "duplex/tumble," this is a little complicated.
- *
- * Actually, this has no bearing on the output, since the HP1600C
- * will only print on one side of the paper, and ignore all
- * requests to enable duplexing. But, in an attempt to keep this
- * driver somewhat generic, we'll enable it anyway.
- */
- plex = XpGetPlex( pCon );
-
- if( plex == xpoid_val_plex_duplex )
- {
- if( dir == 0 || dir == 2 )
- plexNum = 1;
- else
- plexNum = 2;
- }
- else if( plex == xpoid_val_plex_tumble )
- {
- if( dir == 0 || dir == 2 )
- plexNum = 2;
- else
- plexNum = 1;
- }
- else
- plexNum = 0;
- sprintf( t, "\033&l%dS", plexNum );
- SEND_PCL( pConPriv->pPageFile, t );
-
- /*
- * Set the input tray or medium. If XpGetPageSize gives us a valid medium,
- * we can just send that to the printer, and let the printer handle the
- * details. Otherwise, we select the tray returned from XpGetPageSize,
- * which will be either a tray that should contain the correct medium
- * (possibly with operator intervention), or the default tray from the
- * config files.
- */
- medium = XpGetPageSize( pCon, &tray, NULL );
- if( medium != xpoid_none )
- {
- switch( medium )
- {
- case xpoid_val_medium_size_na_legal:
- num = 3;
- break;
- case xpoid_val_medium_size_iso_a3:
- num = 27;
- break;
- case xpoid_val_medium_size_iso_a4:
- num = 26;
- break;
- case xpoid_val_medium_size_executive:
- num = 1;
- break;
- case xpoid_val_medium_size_ledger:
- num = 6;
- break;
- case xpoid_val_medium_size_monarch_envelope:
- num = 80;
- break;
- case xpoid_val_medium_size_na_number_10_envelope:
- num = 81;
- break;
- case xpoid_val_medium_size_iso_designated_long:
- num = 90;
- break;
- case xpoid_val_medium_size_iso_c5:
- num = 91;
- break;
- case xpoid_val_medium_size_iso_b5:
- num = 100;
- break;
- case xpoid_val_medium_size_jis_b5:
- num = 45;
- break;
- case xpoid_val_medium_size_na_letter:
- default:
- num = 2;
- break;
- }
- sprintf( t, "\033&l%dA", num );
- SEND_PCL( pConPriv->pPageFile, t );
- }
- else
- {
- switch( tray )
- {
- case xpoid_val_input_tray_manual:
- num = 2;
- break;
- case xpoid_val_input_tray_envelope:
- num = 3;
- break;
- case xpoid_val_input_tray_large_capacity:
- num = 5;
- break;
- case xpoid_val_input_tray_bottom:
- num = 4;
- break;
- case xpoid_val_input_tray_main:
- default:
- num = 1;
- break;
- }
- sprintf( t, "\033&l%dH", num );
- SEND_PCL( pConPriv->pPageFile, t );
- }
-
- /*
- * Set the scaling factors so that the HP-GL/2 coordinate system
- * matches the X coordinate system, both in axis orientation and
- * in unit<->pixel conversion.
- */
- XpGetReproductionArea( pCon, &repro );
-
- sprintf( t, "\033&l0E\033*p%dx%dY", repro.x - 75, repro.y );
- SEND_PCL( pConPriv->pPageFile, t );
-
- sprintf( t, "\033*c%dx%dY\033*c0T", (int)(repro.width / 300.0 * 720.0),
- (int)(repro.height / 300.0 * 720.0) );
- SEND_PCL( pConPriv->pPageFile, t );
-
- sprintf( t, "\033%%0BSC%d,%d,%d,%d;\033%%0A", repro.x, repro.x +
- repro.width, repro.y + repro.height, repro.y );
- SEND_PCL( pConPriv->pPageFile, t );
-
- return Success;
-}
-
-/*
- * When sending the generated PCL code back to the client, we send everything
- * that we have generated so far for the job. After sending the data, we clean
- * out the job file, to avoid repeatedly sending the same data.
- */
-
-static int
-SendDocData( PclContextPrivPtr pPriv )
-{
- struct stat statBuf;
- int ret;
-
- rewind( pPriv->pJobFile );
- if( stat( pPriv->jobFileName, &statBuf ) < 0 )
- return BadAlloc;
-
- ret = XpSendDocumentData( pPriv->getDocClient, pPriv->pJobFile,
- (int)statBuf.st_size, pPriv->getDocBufSize );
-
- /*
- * Clean out the job file
- */
- fclose( pPriv->pJobFile );
- unlink( pPriv->jobFileName );
-
- xfree(pPriv->jobFileName);
-
- if (!XpOpenTmpFile("w+", &pPriv->jobFileName, &pPriv->pJobFile))
- return BadAlloc;
-
- return ret;
-}
-
-/*
- * EndPage:
- *
- * Write page trailer to page file
- * Write page file to job file
- */
-int
-PclEndPage(
- XpContextPtr pCon,
- WindowPtr pWin)
-{
- PclContextPrivPtr pConPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
-
- struct stat statBuf;
-
- /*
- * Send the page trailer to the page file.
- */
- SEND_PCL( pConPriv->pPageFile, "\014" );
- fflush( pConPriv->pPageFile );
-
- /*
- * Write the page file contents to the job file, or to the
- * whatever client has called GetDocumentData.
- *
- * pWinPriv->pPageFile must first be set to the start of the page file.
- */
- rewind(pConPriv->pPageFile);
- if(stat(pConPriv->pageFileName, &statBuf) < 0)
- return BadAlloc;
-
- if(TransferBytes(pConPriv->pPageFile, pConPriv->pJobFile,
- (int)statBuf.st_size) != (int)statBuf.st_size)
- return BadAlloc;
-
- if( pConPriv->getDocClient != (ClientPtr)NULL &&
- pConPriv->getDocBufSize > 0 )
- {
- return SendDocData( pConPriv );
- }
-
- return Success;
-}
-
-/*
- * The PclStartDoc() and PclEndDoc() functions serve basically as NOOP
- * placeholders. This driver doesn't deal with the notion of multiple
- * documents per page.
- */
-
-int
-PclStartDoc(XpContextPtr pCon,
- XPDocumentType type)
-{
- PclContextPrivPtr pConPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
-
-#ifndef XP_PCL_LJ3
- /*
- * Set the printer resolution for the page. Since we can only
- * render color at 300dpi, we just hard-code this.
- */
- SEND_PCL( pConPriv->pJobFile,
- "\033%-12345X@PJL SET RESOLUTION = 300\r\n" );
-#endif /* XP_PCL_LJ3 */
-
- /*
- * Initialize HP-GL/2
- */
- SEND_PCL( pConPriv->pJobFile, "\033E\033%0BIN,SP1,TR0;\033%0A" );
-
- /*
- * Stash the type of the document (used by PutDocumentData operation)
- */
- pConPriv->isRaw = (type == XPDocRaw);
-
- return Success;
-}
-
-int
-PclEndDoc(
- XpContextPtr pCon,
- Bool cancel)
-{
- /*
- * XXX What should I do if I get cancel == TRUE?
- */
- return Success;
-}
-
-/*
- * PclDocumentData()
- *
- * Hand any pre-generated PDL down to the spool files, formatting it
- * as necessary to fit the given window.
- *
- */
-
-#define DOC_PCL 1
-#define DOC_HPGL 2
-
-int
-PclDocumentData(
- XpContextPtr pCon,
- DrawablePtr pDraw,
- char *pData,
- int len_data,
- char *pFmt,
- int len_fmt,
- char *pOpt,
- int len_opt,
- ClientPtr client)
-{
- int type = 0;
- PclContextPrivPtr pPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
- XpOidDocFmtList *formats;
- XpOidDocFmt *f;
- char t[80];
- xRectangle repro;
-
- /*
- * Verify the input format
- */
- formats = XpGetDocFmtListAttr( pCon, XPPrinterAttr,
- (pPriv->isRaw) ?
- xpoid_att_xp_raw_formats_supported :
- xpoid_att_xp_embedded_formats_supported,
- NULL );
- f = XpOidDocFmtNew( pFmt );
- if( !XpOidDocFmtListHasFmt( formats, f ) )
- {
- XpOidDocFmtListDelete( formats );
- XpOidDocFmtDelete( f );
- return BadMatch;
- }
- XpOidDocFmtListDelete( formats );
-
- if( !(pPriv->isRaw) )
- {
- if( !strcmp( f->format, "PCL" ) )
- type = DOC_PCL;
- else if( !strcmp( f->format, "HPGL" ) )
- type = DOC_HPGL;
- else
- {
- XpOidDocFmtDelete( f );
- return BadMatch;
- }
-
- switch( type )
- {
- case DOC_HPGL:
- /*
- * Move the picture frame to the appropriate place on the page,
- * then assume that the embedded code will scale it properly.
- */
- sprintf( t, "\033&l0E\033*p%dx%dY",
- pDraw->x - 75,
- pDraw->y );
- SEND_PCL( pPriv->pPageFile, t );
-
- sprintf( t, "\033*c%dx%dY\033*coT",
- (int)( pDraw->width / 300.0 * 720.0 ),
- (int)( pDraw->height / 300.0 * 720.0 ) );
- SEND_PCL( pPriv->pPageFile, t );
- break;
- }
- }
-
-
- /*
- * Send the data down the pipe
- */
- SEND_PCL_COUNT( pPriv->pPageFile, pData, len_data );
-
- /*
- * If it's not a raw document, clean up the embedding
- */
- if( !(pPriv->isRaw) )
- switch( type )
- {
- case DOC_HPGL:
- /*
- * Reset the picture frame
- */
- XpGetReproductionArea( pCon, &repro );
-
- sprintf( t, "\033&l0E\033*p%dx%dY", repro.x - 75, repro.y );
- SEND_PCL( pPriv->pPageFile, t );
-
- sprintf( t, "\033*c%dx%dY\033*c0T",
- (int)(repro.width / 300.0 * 720.0),
- (int)(repro.height / 300.0 * 720.0) );
- SEND_PCL( pPriv->pPageFile, t );
-
- sprintf( t, "\033%%0BSC%d,%d,%d,%d;\033%%0A", repro.x, repro.x +
- repro.width, repro.y + repro.height, repro.y );
- SEND_PCL( pPriv->pPageFile, t );
- break;
- }
-
- XpOidDocFmtDelete( f );
- return Success;
-}
-
-/*
- *
- * PclGetDocumentData()
- *
- * This function allows the driver to send the generated PCL back to
- * the client.
- *
- * XXX This function is barely spec'ed, much less implemented!
- */
-
-int
-PclGetDocumentData(
- XpContextPtr pCon,
- ClientPtr client,
- int maxBufferSize)
-{
- PclContextPrivPtr pPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
-
- pPriv->getDocClient = client;
- pPriv->getDocBufSize = maxBufferSize;
-
- return Success;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclSFonts.c b/nx-X11/programs/Xserver/Xprint/pcl/PclSFonts.c
deleted file mode 100644
index 287c5c14f..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclSFonts.c
+++ /dev/null
@@ -1,429 +0,0 @@
-/* $Xorg: PclSFonts.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclSFonts.c
-** *
-** * Contents:
-** * Send Soft Font Download data to the specified
-** * file pointer.
-** *
-** * Created: 3/4/96
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclSFonts.c,v 1.7tsi Exp $ */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include "Pcl.h"
-
-static char tmp1;
-static short tmp2;
-#define Put1byte(fp, x) tmp1=x; fwrite((char *)&tmp1, 1, 1, fp)
-#define Put2bytes(fp, x) tmp2=x; fwrite((char *)&tmp2, 2, 1, fp)
-
-#define ESC 0x1b
-#define SYMBOL_SET 277
-
-static unsigned int PclDownloadChar(FILE *,PclCharDataPtr,unsigned short,unsigned char);
-static unsigned int PclDownloadHeader(FILE *, PclFontDescPtr, unsigned short);
-
-#ifdef PCL_FONT_COMPRESS
-static unsigned char *compress_bitmap_data(PclCharDataPtr, unsigned int *);
-#endif /* PCL_FONT_COMPRESS */
-
-/* -*- PclDownloadSoftFont8 -*-
- * Send the Character Definition Command for 8-bit font
- * **************************************************************************/
-void
-PclDownloadSoftFont8(
- FILE *fp,
- PclSoftFontInfoPtr pSoftFontInfo,
- PclFontHead8Ptr pfh,
- PclCharDataPtr pcd,
- unsigned char *code
-)
-{
- /*
- * Check whether the font header has already been downloaded.
- * If not, download it.
- */
-
- if ( !pfh->fid ) {
- pfh->fid = pSoftFontInfo->cur_max_fid++;
- PclDownloadHeader(fp, &(pfh->fd), pfh->fid);
- }
- pfh->index[*code] = *code;
- PclDownloadChar(fp, pcd, pfh->fid, pfh->index[*code]);
-
-}
-
-/* -*- PclDownloadSoftFont16 -*-
- * Send the Character Definition Command for 16 bit font
- * **************************************************************************/
-void
-PclDownloadSoftFont16(
- FILE *fp,
- PclSoftFontInfoPtr pSoftFontInfo,
- PclFontHead16Ptr pfh,
- PclCharDataPtr pcd,
- unsigned char row,
- unsigned char col
-)
-{
- /*
- * Check whether the font header is already downloaded.
- * If not, download it.
- */
-
- if ( !pfh->cur_cindex ) {
- pfh->cur_fid = pSoftFontInfo->cur_max_fid++;
- PclDownloadHeader(fp, &(pfh->fd), pfh->cur_fid);
- }
- pfh->index[row][col].fid = pfh->cur_fid;
- pfh->index[row][col].cindex = pfh->cur_cindex++;
-
- PclDownloadChar(fp, pcd, pfh->index[row][col].fid, pfh->index[row][col].cindex);
-}
-
-/* -*- PclCreateSoftFontInfo -*-
- * Create and Initialize the structure for storing the information
- * of the downloaded soft font.
- * **************************************************************************/
-PclSoftFontInfoPtr
-PclCreateSoftFontInfo(void)
-{
-PclSoftFontInfoPtr pSoftFontInfo;
-
- pSoftFontInfo = (PclSoftFontInfoPtr)xalloc(sizeof(PclSoftFontInfoRec));
- if ( pSoftFontInfo == (PclSoftFontInfoPtr) NULL)
- return (PclSoftFontInfoPtr) NULL;
- pSoftFontInfo->phead8 = (PclFontHead8Ptr)NULL;
- pSoftFontInfo->phead16 = (PclFontHead16Ptr)NULL;
- pSoftFontInfo->pinfont = (PclInternalFontPtr)NULL;
- pSoftFontInfo->cur_max_fid = 1;
- return pSoftFontInfo;
-}
-
-/* -*- PclDestroySoftFontInfo -*-
- * Destroy the soft font information structure
- * **************************************************************************/
-void
-PclDestroySoftFontInfo( PclSoftFontInfoPtr pSoftFontInfo )
-{
-PclFontHead8Ptr pfh8, pfh8_next;
-PclFontHead16Ptr pfh16, pfh16_next;
-PclInternalFontPtr pin, pin_next;
-unsigned char nindex_row;
-int i;
-
- if ( pSoftFontInfo == (PclSoftFontInfoPtr) NULL )
- return;
-
- pfh8 = pSoftFontInfo->phead8;
- while (pfh8 != (PclFontHead8Ptr) NULL) {
- xfree(pfh8->fontname);
- xfree(pfh8->index);
- pfh8_next = pfh8->next;
- xfree(pfh8);
- pfh8 = pfh8_next;
- }
-
- pfh16 = pSoftFontInfo->phead16;
- while (pfh16 != (PclFontHead16Ptr) NULL) {
- xfree(pfh16->fontname);
- nindex_row = pfh16->lastRow - pfh16->firstRow + 1;
- for (i=0; i<nindex_row; i++)
- xfree(pfh16->index[i]);
- xfree(pfh16->index);
- pfh16_next = pfh16->next;
- xfree(pfh16);
- pfh16 = pfh16_next;
- }
-
- pin = pSoftFontInfo->pinfont;
- while (pin != (PclInternalFontPtr) NULL) {
- xfree(pin->fontname);
- pin_next = pin->next;
- xfree(pin);
- pin = pin_next;
- }
-
- xfree(pSoftFontInfo);
-}
-
-/* -*- PclDownloadHeader -*-
- * Send the Font Header Commnad.
- * Format 0 : Font Header for Pcl Bitmapped Fonts
- * Format 20 : Font Header for Resolution Specified Bitmapped Fonts
- * **************************************************************************/
-static unsigned int
-PclDownloadHeader(
- FILE *fp,
- PclFontDescPtr fd,
- unsigned short fid
-)
-{
-int nbytes;
-
-#ifdef XP_PCL_LJ3
- nbytes = 64;
-#else
- nbytes = 68;
-#endif /* XP_PCL_LJ3 */
- /*
- * Font ID Command : Esc *c#D
- * (Default = 0, Range = 0 - 32767)
- */
- fprintf(fp, "%c*c%dD", ESC, fid);
-
- /*
- * Font Header Commnad : Esc )s#W[font header data]
- * (Default = 0, Range = 0 - 32767)
- */
- fprintf(fp, "%c)s%dW", ESC, nbytes);
-
- Put2bytes(fp, nbytes); /* Font Description Size */
-#ifdef XP_PCL_LJ3
- Put1byte(fp, 0); /* Header Format */
-#else
- Put1byte(fp, 20); /* Header Format */
-#endif /* XP_PCL_LJ3 */
- Put1byte(fp, 2); /* Font Type */
- Put2bytes(fp, 0); /* Style MSB */
- Put2bytes(fp, fd->ascent); /* BaseLine Position */
- Put2bytes(fp, fd->cellwidth); /* Cell Width */
- Put2bytes(fp, fd->cellheight); /* Cell Height */
- Put1byte(fp, 0); /* Orienation */
- Put1byte(fp, fd->spacing); /* Spacing */
- Put2bytes(fp, SYMBOL_SET); /* Symbol Set */
- Put2bytes(fp, fd->pitch*4); /* font pitch */
- Put2bytes(fp, fd->cellheight * 4); /* Height */
- Put2bytes(fp, 0); /* x-Height */
- Put1byte(fp, 0); /* width type (normal) */
- Put1byte(fp, 0); /* Style LSB */
- Put1byte(fp, 0); /* Stroke Weight */
- Put1byte(fp, 5); /* Typeface LSB */
- Put1byte(fp, 0); /* Typeface MSB */
- Put1byte(fp, 0); /* Serif Style */
- Put1byte(fp, 0); /* Quality */
- Put1byte(fp, 0); /* Placement */
- Put1byte(fp, 0); /* Underline Position */
- Put1byte(fp, 0); /* Underline Thickness */
- Put2bytes(fp, fd->cellheight*1.2); /* Text Height */
- Put2bytes(fp, fd->cellwidth * 4); /* Text Width */
- Put2bytes(fp, 0); /* First Code */
- Put2bytes(fp, 255); /* Last Code */
- Put1byte(fp, 0); /* Pitch Extend */
- Put1byte(fp, 0); /* Height Extend */
- Put2bytes(fp, 0); /* Cap Height */
- Put2bytes(fp, 0); /* Font Number 1 */
- Put2bytes(fp, 0); /* Font Number 2 */
- Put2bytes(fp, 0); /* Font Name */
- Put2bytes(fp, 0); /* Font Name */
- Put2bytes(fp, 0); /* Font Name */
- Put2bytes(fp, 0); /* Font Name */
- Put2bytes(fp, 0); /* Font Name */
- Put2bytes(fp, 0); /* Font Name */
- Put2bytes(fp, 0); /* Font Name */
- Put2bytes(fp, 0); /* Font Name */
-
-#ifdef XP_PCL_LJ3
- return 64;
-#else
- Put2bytes(fp, 300); /* X Resolution */
- Put2bytes(fp, 300); /* Y Resolution */
- return 68;
-#endif /* XP_PCL_LJ3 */
-
-}
-
-/* -*- PclDownloadCharacter -*-
- * Send the Character Definition Command.
- * **************************************************************************/
-static unsigned int
-PclDownloadChar(
- FILE *fp,
- PclCharDataPtr cd,
- unsigned short fid,
- unsigned char code
-)
-{
-unsigned int nbytes, n;
-unsigned char *raster;
-
- /*
- * Font ID Command : Esc *c#D
- * (Default = 0, Range = 0 - 32767)
- * Character Code Command : Esc *c#E
- * (Default = 0, Range = 0 - 65535)
- */
- fprintf(fp, "%c*c%dd%dE", ESC, fid, code);
-
- /*
- * Character Definition Command : Esc (s#W[character descriptor and data]
- * (Default = N/A, Range = 0 - 32767)
- */
-
- nbytes = n = cd->height * ((cd->width + 7) / 8);
-#ifdef PCL_FONT_COMPRESS
- raster = compress_bitmap_data(cd, &nbytes);
-#else
- raster = (unsigned char *)NULL;
-#endif /* PCL_FONT_COMPRESS */
- fprintf(fp, "%c(s%dW", ESC, nbytes + 16);
-
- Put1byte(fp, 4); /* Format */
- Put1byte(fp, 0); /* Continuation */
- Put1byte(fp, 14); /* Descriptor Size */
- if (raster) { /* Class */
- Put1byte(fp, 2);
- } else {
- Put1byte(fp, 1); /* Class */
- }
- Put2bytes(fp, 0); /* Orientation */
- Put2bytes(fp, cd->h_offset); /* left offset */
- Put2bytes(fp, cd->v_offset); /* top offset */
- Put2bytes(fp, cd->width); /* character width */
- Put2bytes(fp, cd->height); /* character height */
- Put2bytes(fp, cd->font_pitch*4); /* delta X */
-
- /*
- * Raster Character Data
- */
- if (raster) {
- fwrite(raster, nbytes, 1, fp);
- xfree(raster);
- } else
- fwrite(cd->raster_top, nbytes, 1, fp);
-
- return n + 16;
-}
-
-
-#ifdef PCL_FONT_COMPRESS
-/* -*- compress_bitmap_data -*-
- * Compress Bitmap data
- * **************************************************************************/
-static unsigned char *
-compress_bitmap_data(
- PclCharDataPtr cd,
- unsigned int *nbytes
-)
-{
-unsigned int byte_width;
-unsigned char *raster, *rptr_s, *rptr_e, *rptr_end;
-unsigned char *tmp_s, *tmp_ptr;
-unsigned char *p;
-unsigned char cur, pixel;
-unsigned int num;
-
-int i, j, k, w;
-
- byte_width = (cd->width + 7) / 8;
- *nbytes = cd->height * byte_width;
-
- /* Create buffer for storing compress bitmap glyph */
- raster = (unsigned char *)xalloc(*nbytes);
- rptr_s = raster;
- rptr_e = raster;
- rptr_end = raster + *nbytes;
-
- tmp_s = (unsigned char *)xalloc(cd->width * 8 + 2);
-
- p = cd->raster_top;
- for (i=0; i<cd->height; i++) {
- tmp_ptr = tmp_s;
- *tmp_ptr++ = 0;
- if ( (*p>>7)&0x1 == 1 ) {
- *tmp_ptr++ = 0;
- cur = 1;
- } else {
- cur = 0;
- }
- num = 0;
- for (j=0, w=0; j<byte_width; j++, p++) {
- for (k=0; k<8 && w<cd->width; k++, w++) {
- pixel = (*p>>(7-k))&0x1;
- if ( pixel == cur ) {
- num++;
- } else {
- cur = pixel;
- while (num > 255) {
- *tmp_ptr++ = 255;
- *tmp_ptr++ = 0;
- num -= 255;
- }
- *tmp_ptr++ = num;
- num = 1;
- }
- }
- }
- if ( pixel == cur ) {
- while (num > 255) {
- *tmp_ptr++ = 255;
- *tmp_ptr++ = 0;
- num -= 255;
- }
- *tmp_ptr++ = num&0xff;
- } else
- *tmp_ptr++ = num;
-
- if ( ((rptr_e - rptr_s) == (tmp_ptr - tmp_s)) &&
- !memcmp(rptr_s+1, tmp_s+1, (tmp_ptr - tmp_s) - 1) )
- *rptr_s += 1;
- else {
- if ( rptr_e + (tmp_ptr - tmp_s) > rptr_end ) {
- xfree(raster);
- xfree(tmp_s);
- return (unsigned char *)NULL;
- }
- memcpy (rptr_e, tmp_s, tmp_ptr - tmp_s);
- rptr_s = rptr_e;
- rptr_e = rptr_s + (tmp_ptr - tmp_s);
- }
- }
- xfree(tmp_s);
- *nbytes = rptr_e - raster;
-
- return raster;
-}
-#endif /* PCL_FONT_COMPRESS */
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclSFonts.h b/nx-X11/programs/Xserver/Xprint/pcl/PclSFonts.h
deleted file mode 100644
index fdd62f651..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclSFonts.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* $Xorg: PclSFonts.h,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _PCLFONTS_H
-#define _PCLFONTS_H
-
-/* -*-H-*-
-******************************************************************************
-******************************************************************************
-*
-* File: PclFonts.h
-* Description: Send Soft Font Download data to the specified file pointer.
-*
-*
-******************************************************************************
-******************************************************************************
-*/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-
-typedef struct {
- unsigned char fid; /* sfont font ID */
- unsigned char cindex; /* character indext */
-} PclFontMapRec, PclFontMapPtr;
-
-typedef struct {
- int h_offset;
- int v_offset;
- unsigned int width;
- unsigned int height;
- int font_pitch;
- unsigned char *raster_top;
-} PclCharDataRec, *PclCharDataPtr;
-
-typedef struct {
- unsigned char spacing;
- unsigned int pitch;
- unsigned int cellheight;
- unsigned int cellwidth;
- int ascent;
- int descent;
-} PclFontDescRec, *PclFontDescPtr;
-
-typedef struct _PclFontHead8Rec {
- char *fontname;
- PclFontDescRec fd;
- unsigned short fid;
- unsigned char *index;
- struct _PclFontHead8Rec *next;
-} PclFontHead8Rec, *PclFontHead8Ptr;
-
-typedef struct _PclFontHead16Rec {
- char *fontname;
- PclFontDescRec fd;
- unsigned short cur_fid;
- unsigned char cur_cindex;
- PclFontMapRec **index;
- unsigned short firstCol;
- unsigned short lastCol;
- unsigned short firstRow;
- unsigned short lastRow;
- struct _PclFontHead16Rec *next;
-} PclFontHead16Rec, *PclFontHead16Ptr;
-
-typedef struct _PclInternalFontRec {
- char *fontname;
- float pitch;
- float height;
- char *pcl_font_name;
- char *spacing;
- struct _PclInternalFontRec *next;
-} PclInternalFontRec, *PclInternalFontPtr;
-
-typedef struct {
- PclFontHead8Ptr phead8;
- PclFontHead16Ptr phead16;
- PclInternalFontPtr pinfont;
- unsigned char cur_max_fid;
-} PclSoftFontInfoRec, *PclSoftFontInfoPtr;
-
-#define MONOSPACE 0
-#define PROPSPACE 1
-
-#endif /* _PCLFONTS_H */
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclSpans.c b/nx-X11/programs/Xserver/Xprint/pcl/PclSpans.c
deleted file mode 100644
index 51c0137fc..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclSpans.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/* $Xorg: PclSpans.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclSpans.c
-** *
-** * Contents:
-** * Code to set and fill spans in the PCL DDX
-** *
-** * Created: 10/23/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclSpans.c,v 1.5 1999/12/13 02:12:57 robin Exp $ */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Pcl.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-
-void
-PclFillSpans(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nSpans,
- DDXPointPtr pPoints,
- int *pWidths,
- int fSorted)
-{
- char t[80];
- FILE *outFile;
- int xoffset, yoffset;
- xRectangle *rects, *r;
- RegionPtr fillRegion, region = 0;
- int i;
- int nbox;
- BoxPtr pbox;
-
- if( PclUpdateDrawableGC( pGC, pDrawable, &outFile ) == FALSE )
- return;
-
- /*
- * Build a region out of the spans
- */
- rects = (xRectangle *)xalloc( nSpans * sizeof( xRectangle ) );
- xoffset = pDrawable->x;
- yoffset = pDrawable->y;
-
- for( i = 0, r = rects; i < nSpans; i++, r++ )
- {
- r->x = pPoints[i].x + xoffset;
- r->y = pPoints[i].y + yoffset;
- r->width = pWidths[i];
- r->height = 1;
- }
- fillRegion = RECTS_TO_REGION( pGC->pScreen, nSpans, rects, ( fSorted ) ?
- CT_YSORTED : CT_UNSORTED );
-
- /*
- * Intersect this region with the clip region. Whatever's left,
- * should be filled.
- */
- REGION_INTERSECT( pGC->pScreen, region, fillRegion, pGC->clientClip );
-
- pbox = REGION_RECTS( region );
- nbox = REGION_NUM_RECTS( region );
-
- /* Enter HP-GL/2 */
- SEND_PCL( outFile, "\27%0B" );
-
- while( nbox )
- {
- sprintf( t, "PU%d,%d;RR%d,%d;", pbox->x1, pbox->y1,
- pbox->x2, pbox->y2 );
- SEND_PCL( outFile, t );
-
- nbox--;
- pbox++;
- }
-
- /* Go back to PCL */
- SEND_PCL( outFile, "\27%0A" );
-
- /*
- * Clean up the temporary regions
- */
- REGION_DESTROY( pGC->pScreen, fillRegion );
- REGION_DESTROY( pGC->pScreen, region );
- xfree( rects );
-}
-
-void
-PclSetSpans(
- DrawablePtr pDrawable,
- GCPtr pGC,
- char *pSrc,
- DDXPointPtr pPoints,
- int *pWidths,
- int nSpans,
- int fSorted)
-{
-}
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclText.c b/nx-X11/programs/Xserver/Xprint/pcl/PclText.c
deleted file mode 100644
index be794772c..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclText.c
+++ /dev/null
@@ -1,936 +0,0 @@
-/* $Xorg: PclText.c,v 1.5 2001/03/06 16:28:48 pookie Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclText.c
-** *
-** * Contents:
-** * Character-drawing routines for the PCL DDX
-** *
-** * Created: 10/23/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclText.c,v 1.10tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifdef DO_TWO_BYTE_PCL
-#include "iconv.h"
-#endif /* DO_TWO_BYTE_PCL */
-#include "gcstruct.h"
-#include "windowstr.h"
-
-#include "Pcl.h"
-#include "migc.h"
-#include <X11/Xatom.h>
-
-#include "PclSFonts.h"
-
-static PclFontHead8Ptr makeFontHeader8 (FontPtr, PclSoftFontInfoPtr);
-static PclFontHead16Ptr makeFontHeader16(FontPtr, PclSoftFontInfoPtr);
-static PclInternalFontPtr makeInternalFont(FontPtr, PclSoftFontInfoPtr);
-static void fillFontDescData(FontPtr, PclFontDescPtr, unsigned int);
-static PclCharDataPtr fillCharDescData(PclCharDataPtr, CharInfoPtr);
-static void output_text(FILE *, PclContextPrivPtr, unsigned char);
-static char * getFontName(FontPtr);
-static char isInternal(FontPtr);
-static void selectInternalFont(FILE *, PclInternalFontPtr, int);
-static void selectSize(FILE *, PclContextPrivPtr, PclInternalFontPtr);
-static char t[80];
-
-#ifdef DO_TWO_BYTE_PCL
-static void code_conv(PclSoftFontInfoPtr, FontPtr, char *, char *);
-#endif /* DO_TWO_BYTE_PCL */
-
-#define ESC 0x1b
-#define PER 0x25
-#define ETX 0x3
-#define ETX_ALT 0x2a
-#define DOWNLOAD_FONT 0
-#define INTERNAL_FONT 1
-
-int
-PclPolyText8(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int count,
- char *string)
-{
-XpContextPtr pCon;
-PclContextPrivPtr pConPriv;
-unsigned long n, i;
-int w;
-CharInfoPtr charinfo[255], *chinfo;
-
-FILE *outFile;
-PclSoftFontInfoPtr pSoftFontInfo;
-PclFontHead8Ptr pfh8 = (PclFontHead8Ptr)NULL;
-PclInternalFontPtr pin = (PclInternalFontPtr)NULL;
-PclCharDataRec cd;
-unsigned char *p;
-unsigned char last_fid;
-int max_ascent, max_descent;
-
-int nbox;
-BoxPtr pbox;
-BoxRec box;
-RegionPtr drawRegion, region;
-char font_type;
-
- if( PclUpdateDrawableGC( pGC, pDrawable, &outFile ) == FALSE )
- return x;
-
- GetGlyphs(pGC->font, (unsigned long)count, (unsigned char *)string,
- Linear8Bit, &n, charinfo);
- if ( n == 0 )
- return x;
-
- pCon = PclGetContextFromWindow( (WindowPtr)pDrawable );
- pConPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
- pSoftFontInfo = pConPriv->pSoftFontInfo;
- font_type = isInternal(pGC->font);
- if ( font_type == DOWNLOAD_FONT ) {
- /*
- * Create Soft Font Header Information
- */
- pfh8 = makeFontHeader8(pGC->font, pSoftFontInfo);
- if (!pfh8)
- return x;
-
- /*
- * exec Soft Font Downloading
- */
- p = (unsigned char *)string;
- for (i=0, chinfo=charinfo; i<n; i++, p++, chinfo++) {
- if ( !pfh8->index[*p] ) {
- fillCharDescData(&cd, *chinfo);
- PclDownloadSoftFont8(pConPriv->pJobFile, pSoftFontInfo,
- pfh8, &cd, p);
- xfree(cd.raster_top);
- }
- }
-
- /*
- * print characters
- */
- MACRO_START( outFile, pConPriv );
- sprintf(t, "\033%%0B;PU%d,%dPD;TD1;DT%c,1;",
- x + pDrawable->x, y + pDrawable->y + pGC->font->info.fontAscent,
- ETX);
- SAVE_PCL( outFile, pConPriv, t );
- SAVE_PCL_COUNT( outFile, pConPriv, "FI0;SS;LB", 9 );
-
- last_fid = 0;
- w = 0;
- max_ascent = charinfo[0]->metrics.ascent;
- max_descent = charinfo[0]->metrics.descent;
- p = (unsigned char *)string;
- for (i=0, chinfo=charinfo; i<n; i++, p++, chinfo++) {
- if ( last_fid != pfh8->fid ) {
- sprintf(t, "%c;FI%d;SS;LB", ETX, pfh8->fid);
- SAVE_PCL( outFile, pConPriv, t );
-
- last_fid = pfh8->fid;
- }
-
- output_text(outFile, pConPriv, pfh8->index[*p]);
-
- w += (*chinfo)->metrics.characterWidth;
- max_ascent = MAX(max_ascent, (*chinfo)->metrics.ascent);
- max_descent = MAX(max_descent, (*chinfo)->metrics.descent);
- }
-
- sprintf(t, "%c", ETX);
- SAVE_PCL_COUNT( outFile, pConPriv, t, 1 );
- sprintf(t, "TD0;\033%%1A");
- SAVE_PCL( outFile, pConPriv, t );
- MACRO_END( outFile );
-
- } else {
- int fid = 0;
-
- pin = makeInternalFont(pGC->font, pSoftFontInfo);
- if (!pin)
- return x;
-
- selectInternalFont(outFile, pin, fid);
-
- /*
- * print characters
- */
- MACRO_START( outFile, pConPriv );
- sprintf(t, "\033%%0B;PU%d,%dPD;TD1;DT%c,1;",
- x + pDrawable->x, y + pDrawable->y + pGC->font->info.fontAscent,
- ETX);
- SAVE_PCL( outFile, pConPriv, t );
- selectSize(outFile, pConPriv, pin);
- SAVE_PCL_COUNT( outFile, pConPriv, "FI0;SS;LB", 9 );
-
- w = 0;
- max_ascent = charinfo[0]->metrics.ascent;
- max_descent = charinfo[0]->metrics.descent;
- p = (unsigned char *)string;
- for (i=0, chinfo=charinfo; i<n; i++, p++, chinfo++) {
- output_text(outFile, pConPriv, *p);
-
- w += (*chinfo)->metrics.characterWidth;
- max_ascent = MAX(max_ascent, (*chinfo)->metrics.ascent);
- max_descent = MAX(max_descent, (*chinfo)->metrics.descent);
- }
- sprintf(t, "%c", ETX);
- SAVE_PCL_COUNT( outFile, pConPriv, t, 1 );
- sprintf(t, "TD0;\033%%1A");
- SAVE_PCL( outFile, pConPriv, t );
- MACRO_END( outFile );
- }
-
- /*
- * Convert the collection of rectangles into a proper region, then
- * intersect it with the clip region.
- */
- box.x1 = x + pDrawable->x;
- box.y1 = y - max_ascent + pDrawable->y + pGC->font->info.fontAscent;
- box.x2 = x + w + pDrawable->x;
- box.y2 = y + max_descent + pDrawable->y + pGC->font->info.fontAscent;
-
- drawRegion = miRegionCreate( &box, 0 );
- region = miRegionCreate( NULL, 0 );
- miIntersect( region, drawRegion, pGC->pCompositeClip );
-
- /*
- * For each rectangle in the clip region, set the HP-GL/2 "input
- * window" and render the entire polyline to it.
- */
- pbox = REGION_RECTS( region );
- nbox = REGION_NUM_RECTS( region );
-
- PclSendData(outFile, pConPriv, pbox, nbox, 1.0);
-
- /*
- * Clean up the temporary regions
- */
- REGION_DESTROY( pGC->pScreen, drawRegion );
- REGION_DESTROY( pGC->pScreen, region );
-
- return x+w;
-}
-
-int
-PclPolyText16(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int count,
- unsigned short *string)
-{
-XpContextPtr pCon;
-PclContextPrivPtr pConPriv;
-unsigned long n, i;
-int w;
-CharInfoPtr charinfo[255], *chinfo;
-
-FILE *outFile;
-PclSoftFontInfoPtr pSoftFontInfo;
-PclFontHead16Ptr pfh16 = (PclFontHead16Ptr)NULL;
-PclCharDataRec cd;
-FontInfoPtr pfi;
-unsigned char row, col;
-char *p;
-unsigned char last_fid;
-int max_ascent, max_descent;
-unsigned short def;
-
-int nbox;
-BoxPtr pbox;
-BoxRec box;
-RegionPtr drawRegion, region;
-char font_type;
-
- if( PclUpdateDrawableGC( pGC, pDrawable, &outFile ) == FALSE )
- return x;
-
- GetGlyphs(pGC->font, (unsigned long)count, (unsigned char *)string,
- (FONTLASTROW(pGC->font) == 0) ? Linear16Bit : TwoD16Bit,
- &n, charinfo);
-
- pCon = PclGetContextFromWindow( (WindowPtr)pDrawable );
- pConPriv = (PclContextPrivPtr)
- pCon->devPrivates[PclContextPrivateIndex].ptr;
- pSoftFontInfo = pConPriv->pSoftFontInfo;
-
- font_type = isInternal(pGC->font);
- if ( font_type == DOWNLOAD_FONT ) {
- /*
- * Create Soft Font Header Information
- */
- pfh16 = makeFontHeader16(pGC->font, pSoftFontInfo);
- if (!pfh16)
- return x;
-
- /*
- * exec Soft Font Downloading
- */
- pfi = (FontInfoRec *)&pGC->font->info;
- p = (char *)string;
- for (i=0, p=(char *)string, chinfo=charinfo; i<n; i++, p+=2, chinfo++) {
- row = *p & 0xff;
- col = *(p+1) & 0xff;
- if ( (pfi->firstRow <= row) && (row <= pfi->lastRow)
- && (pfi->firstCol <= col) && (col <= pfi->lastCol) ) {
- row = row - pfi->firstRow;
- col = col - pfi->firstCol;
- } else {
- def = pfi->defaultCh;
- row = ((def>>8)&0xff) - pfi->firstRow;
- col = (def&0xff) - pfi->firstCol;
- }
- if ( !pfh16->index[row][col].fid ) {
- fillCharDescData(&cd, *chinfo);
- PclDownloadSoftFont16(pConPriv->pJobFile, pSoftFontInfo,
- pfh16, &cd, row, col);
- xfree(cd.raster_top);
- }
- }
-
- /*
- * print characters
- */
- MACRO_START( outFile, pConPriv );
- sprintf(t, "\033%%0B;PU%d,%dPD;TD1;DT%c,1;",
- x + pDrawable->x, y + pDrawable->y + pGC->font->info.fontAscent,
- ETX);
- SAVE_PCL( outFile, pConPriv, t );
- SAVE_PCL_COUNT( outFile, pConPriv, "FI0;SS;LB", 9 );
-
- last_fid = 0;
-
- w = 0;
- max_ascent = charinfo[0]->metrics.ascent;
- max_descent = charinfo[0]->metrics.descent;
- for (i=0, p=(char *)string, chinfo=charinfo; i<n; i++, p+=2, chinfo++) {
- row = *p & 0xff;
- col = *(p+1) & 0xff;
- if ( (pfi->firstRow <= row) && (row <= pfi->lastRow)
- && (pfi->firstCol <= col) && (col <= pfi->lastCol) ) {
- row = row - pfi->firstRow;
- col = col - pfi->firstCol;
- } else {
- def = pfi->defaultCh;
- row = ((def>>8)&0xff) - pfi->firstRow;
- col = (def&0xff) - pfi->firstCol;
- }
- if ( last_fid != pfh16->index[row][col].fid ) {
- sprintf(t, "%cFI%d;SS;LB",
- ETX, pfh16->index[row][col].fid);
- SAVE_PCL( outFile, pConPriv, t );
- last_fid = pfh16->index[row][col].fid;
- }
-
- output_text(outFile, pConPriv, pfh16->index[row][col].cindex);
-
- w += (*chinfo)->metrics.characterWidth;
- max_ascent = MAX(max_ascent, (*chinfo)->metrics.ascent);
- max_descent = MAX(max_descent, (*chinfo)->metrics.descent);
- }
- sprintf(t, "%c", ETX);
- SAVE_PCL_COUNT( outFile, pConPriv, t, 1 );
- sprintf(t, "TD0;\033%%1A");
- SAVE_PCL( outFile, pConPriv, t );
- MACRO_END( outFile );
-
- } else {
-#ifdef DO_TWO_BYTE_PCL
- PclInternalFontPtr pin;
- int fid = 0;
-
- pin = makeInternalFont(pGC->font, pSoftFontInfo);
- if (!pin)
- return x;
-
- selectInternalFont(outFile, pin, fid);
- fprintf(outFile, "%c&t31P", ESC);
-
- /*
- * print characters
- */
- MACRO_START( outFile, pConPriv );
- sprintf(t, "\033%%0B;PU%d,%dPD;TD1;DT%c,1;",
- x + pDrawable->x, y + pDrawable->y + pGC->font->info.fontAscent,
- ETX);
- SAVE_PCL( outFile, pConPriv, t );
- sprintf(t, "TD0;\033%%1A");
- SAVE_PCL( outFile, pConPriv, t );
-
- w = 0;
- last_fid = 0;
- max_ascent = charinfo[0]->metrics.ascent;
- max_descent = charinfo[0]->metrics.descent;
- for (i=0, p=(char *)string, chinfo=charinfo; i<n; i++, p+=2, chinfo++) {
- char tobuf[3];
- code_conv(pSoftFontInfo, pGC->font, (char *)p, tobuf);
- fprintf(outFile, "%c%c", tobuf[0], tobuf[1]);
-
- w += (*chinfo)->metrics.characterWidth;
- max_ascent = MAX(max_ascent, (*chinfo)->metrics.ascent);
- max_descent = MAX(max_descent, (*chinfo)->metrics.descent);
- }
- MACRO_END( outFile );
-#else
- return x;
-#endif /* DO_TWO_BYTE_PCL */
- }
-
- /*
- * Convert the collection of rectangles into a proper region, then
- * intersect it with the clip region.
- */
- box.x1 = x + pDrawable->x;
- box.y1 = y - max_ascent + pDrawable->y + pGC->font->info.fontAscent;
- box.x2 = x + w + pDrawable->x;
- box.y2 = y + max_descent + pDrawable->y + pGC->font->info.fontAscent;
-
- drawRegion = miRegionCreate( &box, 0 );
- region = miRegionCreate( NULL, 0 );
- miIntersect( region, drawRegion, pGC->pCompositeClip );
-
- /*
- * For each rectangle in the clip region, set the HP-GL/2 "input
- * window" and render the entire polyline to it.
- */
- pbox = REGION_RECTS( region );
- nbox = REGION_NUM_RECTS( region );
-
- PclSendData(outFile, pConPriv, pbox, nbox, 1.0);
-
- /*
- * Clean up the temporary regions
- */
- REGION_DESTROY( pGC->pScreen, drawRegion );
- REGION_DESTROY( pGC->pScreen, region );
-
- return x+w;
-}
-
-void
-PclImageText8(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x, int y,
- int count,
- char *string)
-{
-}
-
-void
-PclImageText16(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int count,
- unsigned short *string)
-{
-}
-
-void
-PclImageGlyphBlt(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x, int y,
- unsigned int nGlyphs,
- CharInfoPtr *pCharInfo,
- pointer pGlyphBase)
-{
-}
-
-void
-PclPolyGlyphBlt(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x, int y,
- unsigned int nGlyphs,
- CharInfoPtr *pCharInfo,
- pointer pGlyphBase)
-{
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-static PclFontHead8Ptr
-makeFontHeader8(FontPtr pfont, PclSoftFontInfoPtr pSoftFontInfo)
-{
-PclFontHead8Ptr phead8 = pSoftFontInfo->phead8;
-PclFontHead8Ptr pfh8 = phead8;
-PclFontHead8Ptr prev = (PclFontHead8Ptr)NULL;
-FontInfoPtr pfi;
-char *fontname;
-unsigned char nindex;
-int i;
-unsigned long n;
-CharInfoPtr charinfo[1];
-unsigned int space_width;
-
- if (pSoftFontInfo == (PclSoftFontInfoPtr) NULL)
- return (PclFontHead8Ptr)NULL;
-
- /*
- * Verify it has already been created, if so, return it.
- */
- if ( (fontname = getFontName(pfont)) == (char *)NULL)
- return (PclFontHead8Ptr)NULL;
-
- while (pfh8 != (PclFontHead8Ptr) NULL) {
- if (!strcmp(pfh8->fontname, fontname))
- return pfh8;
- prev = pfh8;
- pfh8 = pfh8->next;
- }
-
- /*
- * Create Font Header Information
- */
- pfh8 = (PclFontHead8Ptr)xalloc(sizeof(PclFontHead8Rec));
- if (pfh8 == (PclFontHead8Ptr)NULL)
- return (PclFontHead8Ptr)NULL;
-
- pfi = (FontInfoRec *)&pfont->info;
- GetGlyphs(pfont, 1, (unsigned char *)&pfi->defaultCh,
- Linear8Bit, &n, charinfo);
- if ( n )
- space_width = charinfo[0]->metrics.characterWidth;
- else
- space_width = FONTMAXBOUNDS(pfont,characterWidth);
-
- fillFontDescData(pfont, &(pfh8->fd), space_width);
- pfh8->fid = 0;
- pfh8->fontname = (char *)xalloc(strlen(fontname) + 1);
- if (pfh8->fontname == (char *)NULL) {
- xfree(pfh8);
- return (PclFontHead8Ptr) NULL;
- }
- strcpy(pfh8->fontname, fontname);
-
- nindex = 0xff;
- pfh8->index = (unsigned char *)xalloc(nindex);
- if ( pfh8->index == (unsigned char *) NULL ) {
- xfree(pfh8->fontname);
- xfree(pfh8);
- return (PclFontHead8Ptr) NULL;
- }
-
- for (i=0; i<=nindex; i++)
- pfh8->index[i] = 0x0;
-
- pfh8->next = (PclFontHead8Ptr)NULL;
-
- if ( prev == (PclFontHead8Ptr) NULL)
- pSoftFontInfo->phead8 = pfh8;
- else
- prev->next = pfh8;
-
- return pfh8;
-}
-
-static PclFontHead16Ptr
-makeFontHeader16(FontPtr pfont, PclSoftFontInfoPtr pSoftFontInfo)
-{
-PclFontHead16Ptr phead16 = pSoftFontInfo->phead16;
-PclFontHead16Ptr pfh16 = phead16;
-PclFontHead16Ptr prev = (PclFontHead16Ptr)NULL;
-PclFontMapRec ** index;
-FontInfoPtr pfi;
-char *fontname;
-unsigned char nindex_row, nindex_col;
-int i, j;
-unsigned long n;
-CharInfoPtr charinfo[1];
-unsigned int space_width;
-
- if (pSoftFontInfo == (PclSoftFontInfoPtr) NULL)
- return (PclFontHead16Ptr)NULL;
-
- /*
- * Verify it has already been created, if so, return it.
- */
- if ( (fontname = getFontName(pfont)) == (char *)NULL)
- return (PclFontHead16Ptr)NULL;
-
- while (pfh16 != (PclFontHead16Ptr) NULL) {
- if (!strcmp(pfh16->fontname, fontname))
- return pfh16;
- prev = pfh16;
- pfh16 = pfh16->next;
- }
-
- /*
- * Create Font Header Information
- */
- pfh16 = (PclFontHead16Ptr)xalloc(sizeof(PclFontHead16Rec));
- if (pfh16 == (PclFontHead16Ptr)NULL)
- return (PclFontHead16Ptr)NULL;
-
- pfi = (FontInfoRec *)&pfont->info;
- GetGlyphs(pfont, 1, (unsigned char *)&pfi->defaultCh,
- (FONTLASTROW(pfont) == 0) ? Linear16Bit : TwoD16Bit,
- &n, charinfo);
-
- if ( n )
- space_width = charinfo[0]->metrics.characterWidth;
- else
- space_width = FONTMAXBOUNDS(pfont,characterWidth);
-
- fillFontDescData(pfont, &(pfh16->fd), space_width);
- pfh16->cur_fid = 0;
- pfh16->cur_cindex = 0;
- pfh16->fontname = (char *)xalloc(strlen(fontname) + 1);
- if (pfh16->fontname == (char *)NULL) {
- xfree(pfh16);
- return (PclFontHead16Ptr) NULL;
- }
- strcpy(pfh16->fontname, fontname);
-
- pfi = (FontInfoRec *)&pfont->info;
- nindex_col = pfi->lastCol - pfi->firstCol + 1;
- nindex_row = pfi->lastRow - pfi->firstRow + 1;
- index = (PclFontMapRec **)xalloc(sizeof(PclFontMapRec *)*nindex_row);
- if (index == (PclFontMapRec **)NULL) {
- xfree(pfh16->fontname);
- xfree(pfh16);
- return (PclFontHead16Ptr) NULL;
- }
- for (i=0; i<nindex_row; i++) {
- index[i] = (PclFontMapRec *)xalloc(sizeof(PclFontMapRec)*nindex_col);
- if (index[i] == (PclFontMapRec *)NULL) {
- for(j=0; j<i; j++)
- xfree(index[j]);
- xfree(pfh16->fontname);
- xfree(pfh16);
- return (PclFontHead16Ptr) NULL;
- }
- for (j=0; j<=nindex_col; j++)
- index[i][j].fid = 0x0;
- }
-
- pfh16->index = index;
- pfh16->firstCol = pfi->firstCol;
- pfh16->lastCol = pfi->lastCol;
- pfh16->firstRow = pfi->firstRow;
- pfh16->lastRow = pfi->lastRow;
- pfh16->next = (PclFontHead16Ptr)NULL;
-
- if ( prev == (PclFontHead16Ptr) NULL)
- pSoftFontInfo->phead16 = pfh16;
- else
- prev->next = pfh16;
-
- return pfh16;
-}
-
-static PclInternalFontPtr
-makeInternalFont(FontPtr pfont, PclSoftFontInfoPtr pSoftFontInfo)
-{
-PclInternalFontPtr pinfont = pSoftFontInfo->pinfont;
-PclInternalFontPtr pin = pinfont;
-PclInternalFontPtr prev = (PclInternalFontPtr)NULL;
-FontPropPtr props;
-FontInfoPtr pfi;
-char *fontname;
-Atom xa_pcl_font_name, xa_res, xa_ave_width, xa_spacing;
-int width = 1;
-int mask;
-int i;
-
- if (pSoftFontInfo == (PclSoftFontInfoPtr) NULL)
- return (PclInternalFontPtr)NULL;
-
- /*
- * Verify it has already been created, if so, return it.
- */
- if ( (fontname = getFontName(pfont)) == (char *)NULL)
- return (PclInternalFontPtr)NULL;
-
- while (pin != (PclInternalFontPtr) NULL) {
- if (!strcmp(pin->fontname, fontname))
- return pin;
- prev = pin;
- pin = pin->next;
- }
-
- /*
- * Create Internal Font Information
- */
- pin = (PclInternalFontPtr)xalloc(sizeof(PclInternalFontRec));
- if (pin == (PclInternalFontPtr)NULL)
- return (PclInternalFontPtr)NULL;
-
- pin->fontname = (char *)xalloc(strlen(fontname) + 1);
- if (pin->fontname == (char *)NULL) {
- xfree(pin);
- return (PclInternalFontPtr) NULL;
- }
- strcpy(pin->fontname, fontname);
-
- xa_pcl_font_name = MakeAtom("PCL_FONT_NAME", strlen("PCL_FONT_NAME"), TRUE);
- xa_res = MakeAtom("RESOLUTION_X", strlen("RESOLUTION_X"), TRUE);
- xa_ave_width = MakeAtom("AVERAGE_WIDTH", strlen("AVERAGE_WIDTH"), TRUE);
- xa_spacing = MakeAtom("SPACING", strlen("SPACING"), TRUE);
- pfi = (FontInfoRec *)&pfont->info;
- props = pfi->props;
-
- mask = 0;
- for (i=0; i<pfi->nprops; i++, props++) {
- if ( (Atom) props->name == xa_pcl_font_name ) {
- pin->pcl_font_name = NameForAtom(props->value);
- mask |= 0x1;
- } else if ( props->name == XA_POINT_SIZE ) {
- pin->height = (float) props->value / 10.0;
- mask |= 0x2;
- } else if ( (Atom) props->name == xa_res ) {
- mask |= 0x4;
- } else if ( (Atom) props->name == xa_ave_width ) {
- width = (int) props->value / 10;
- mask |= 0x8;
- } else if ( (Atom) props->name == xa_spacing ) {
- pin->spacing = NameForAtom(props->value);
- mask |= 0x10;
- }
- }
- if ( mask != 0x1f ) {
- xfree(pin->fontname);
- xfree(pin);
- return (PclInternalFontPtr) NULL;
- }
-
- if ( *pin->spacing != 'P' || *pin->spacing != 'p' ) {
- if (width == 0)
- width = 1;
- pin->pitch = (float) 300.0 / width; /* Hard-Code: Resolution is 300 */
- }
-
- pin->next = (PclInternalFontPtr)NULL;
- if ( prev == (PclInternalFontPtr) NULL)
- pSoftFontInfo->pinfont = pin;
- else
- prev->next = pin;
-
- return pin;
-}
-
-static void
-fillFontDescData(FontPtr pfont, PclFontDescPtr pfd, unsigned int space)
-{
-FontInfoPtr pfi;
-
- pfi = (FontInfoRec *)&pfont->info;
-
- if ( (pfi->maxbounds.leftSideBearing == pfi->minbounds.leftSideBearing)
- && (pfi->maxbounds.rightSideBearing == pfi->minbounds.rightSideBearing)
- && (pfi->maxbounds.characterWidth == pfi->minbounds.characterWidth)
- && (pfi->maxbounds.ascent == pfi->minbounds.ascent)
- && (pfi->maxbounds.descent == pfi->minbounds.descent)
- )
- pfd->spacing = MONOSPACE;
- else
- pfd->spacing = PROPSPACE;
-
- pfd->pitch = space;
- pfd->cellheight = FONTMAXBOUNDS(pfont,ascent)
- + FONTMAXBOUNDS(pfont,descent);
- pfd->cellwidth = FONTMAXBOUNDS(pfont,rightSideBearing)
- - FONTMINBOUNDS(pfont,leftSideBearing);
- pfd->ascent = FONTMAXBOUNDS(pfont,ascent); /*FONTASCENT(pfont);*/
- pfd->descent = FONTMAXBOUNDS(pfont,descent); /*FONTDESCENT(pfont);*/
-}
-
-static PclCharDataPtr
-fillCharDescData(PclCharDataPtr pcd, CharInfoPtr pci)
-{
-unsigned int byte_width;
-unsigned char *p;
-register int nbyGlyphWidth;
-unsigned char *pglyph, *pg;
-unsigned int i, j;
-
- pcd->h_offset = pci->metrics.leftSideBearing;
- pcd->v_offset = pci->metrics.ascent;
- pcd->width = pci->metrics.rightSideBearing
- - pci->metrics.leftSideBearing;
- pcd->height = pci->metrics.ascent + pci->metrics.descent;
- pcd->font_pitch = pci->metrics.characterWidth;
-
- byte_width = (pcd->width + 7)/8;
- pcd->raster_top = (unsigned char *)xalloc(byte_width * pcd->height);
- if (pcd->raster_top == (unsigned char *)NULL)
- return (PclCharDataPtr)NULL;
-
- p = pcd->raster_top;
- nbyGlyphWidth = GLYPHWIDTHBYTESPADDED(pci);
- pglyph = FONTGLYPHBITS(pglyphBase, pci);
- for (i=0; i<pcd->height; i++) {
- pg = pglyph + nbyGlyphWidth * i;
- for (j=0; j<byte_width; j++)
- *p++ = *pg++;
- }
- return pcd;
-}
-
-static void
-output_text(FILE *outFile,
- PclContextPrivPtr pConPriv,
- unsigned char index)
-{
- if ( index == ETX ) {
- sprintf(t, "%c;DT%c,1;LB%c%c;DT%c,1;LB",
- ETX, ETX_ALT, ETX, ETX_ALT, ETX);
- SAVE_PCL( outFile, pConPriv, t );
- } else {
- sprintf(t, "%c", index);
- SAVE_PCL_COUNT( outFile, pConPriv, t, 1 );
- }
-}
-
-static char *
-getFontName(FontPtr pfont)
-{
-int i;
-FontInfoPtr pfi;
-FontPropPtr props;
-char *fontname;
-
- pfi = (FontInfoRec *)&pfont->info;
- props = pfi->props;
- fontname = (char *) NULL;
- for (i=0; i<pfi->nprops; i++, props++) {
- if ( props->name == XA_FONT ) {
- fontname = (char *)NameForAtom(props->value);
- break;
- }
- }
- return fontname;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-/* Internal Font Selection */
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-static char
-isInternal(FontPtr pfont)
-{
-int i;
-FontInfoPtr pfi;
-FontPropPtr props;
-Atom dest;
-
- dest = MakeAtom("PRINTER_RESIDENT_FONT", strlen("PRINTER_RESIDENT_FONT"), TRUE);
-
- pfi = (FontInfoRec *)&pfont->info;
- props = pfi->props;
- for (i=0; i<pfi->nprops; i++, props++) {
- if ( (Atom) props->name == dest && props->value == 2 )
- return INTERNAL_FONT;
- }
- return DOWNLOAD_FONT;
-}
-
-static void
-selectInternalFont(FILE *outFile, PclInternalFontPtr pin, int fid)
-{
- fprintf(outFile, "%c*c%dD", ESC, fid);
- if ( *pin->spacing == 'P' || *pin->spacing == 'p' )
- fprintf(outFile, pin->pcl_font_name, pin->height);
- else
- fprintf(outFile, pin->pcl_font_name, pin->pitch);
- fprintf(outFile, "%c*c6F", ESC);
-}
-
-static void
-selectSize(FILE *outFile,
- PclContextPrivPtr pConPriv,
- PclInternalFontPtr pin)
-{
- if ( *pin->spacing == 'P' || *pin->spacing == 'p' ) {
- sprintf(t, "SD4,%f;", pin->height);
- SAVE_PCL( outFile, pConPriv, t );
- } else {
- sprintf(t, "SD3,%f;", pin->pitch);
- SAVE_PCL( outFile, pConPriv, t );
- }
- return;
-}
-
-#ifdef DO_TWO_BYTE_PCL
-static void
-code_conv(
- PclSoftFontInfoPtr pSoftFontInfo,
- FontPtr pfont,
- char *from,
- char *to
-)
-{
-iconv_t cd;
-char frombuf[9], *fromptr;
-size_t inbyte = 5, outbyte=2;
-
- fromptr = frombuf;
- frombuf[0] = 0x1b; /* Esc */
- frombuf[1] = 0x24; /* $ */
- frombuf[2] = 0x42; /* B */
- frombuf[3] = *from;
- frombuf[4] = *(from+1);
- frombuf[5] = 0x1b; /* Esc */
- frombuf[6] = 0x28; /* ( */
- frombuf[7] = 0x4a; /* J */
- frombuf[8] = 0x0;
- if ((cd = iconv_open("sjis", "jis")) == (iconv_t)(-1)) {
- *to = (unsigned char)NULL;
- return;
- }
-
- if ( iconv(cd, &fromptr, &inbyte, &to, &outbyte) == -1 )
- *to = (unsigned char)NULL;
-
- iconv_close(cd);
- return;
-}
-#endif /* DO_TWO_BYTE_PCL */
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/PclWindow.c b/nx-X11/programs/Xserver/Xprint/pcl/PclWindow.c
deleted file mode 100644
index cac5826e9..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/PclWindow.c
+++ /dev/null
@@ -1,452 +0,0 @@
-/* $Xorg: PclWindow.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PclWindow.c
-** *
-** * Contents:
-** * Window code for Pcl driver.
-** *
-** * Created: 2/02/95
-** *
-** *********************************************************
-**
-********************************************************************/
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclWindow.c,v 1.10tsi Exp $ */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-
-#include "mistruct.h"
-#include "regionstr.h"
-#include "windowstr.h"
-#include "gcstruct.h"
-
-#include "Pcl.h"
-
-#if 0
-/*
- * The following list of strings defines the properties which will be
- * placed on the screen's root window if the property was defined in
- * the start-up configuration resource database.
- */
-static /* const */ char *propStrings[] = {
- DT_PRINT_JOB_HEADER,
- DT_PRINT_JOB_TRAILER,
- DT_PRINT_JOB_COMMAND, /* old-obsolete */
- DT_PRINT_JOB_EXEC_COMMAND,
- DT_PRINT_JOB_EXEC_OPTIONS,
- DT_PRINT_PAGE_HEADER,
- DT_PRINT_PAGE_TRAILER,
- DT_PRINT_PAGE_COMMAND,
- (char *)NULL
-};
-#endif
-
-/*
- * PclCreateWindow - watch for the creation of the root window.
- * When it's created, register the screen with the print extension,
- * and put the default command/header properties on it.
- */
-/*ARGSUSED*/
-
-Bool
-PclCreateWindow(
- register WindowPtr pWin)
-{
- PclWindowPrivPtr pPriv;
-
-#if 0
- Bool status = Success;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- PclScreenPrivPtr pScreenPriv = (PclScreenPrivPtr)
- pScreen->devPrivates[PclScreenPrivateIndex].ptr;
- PclWindowPrivPtr pWinPriv = (PclWindowPrivPtr)
- pWin->devPrivates[PclWindowPrivateIndex].ptr;
-
- /*
- * Initialize this window's private struct.
- */
- pWinPriv->jobFileName = (char *)NULL;
- pWinPriv->pJobFile = (FILE *)NULL;
- pWinPriv->pageFileName = (char *)NULL;
- pWinPriv->pPageFile = (FILE *)NULL;
-
- if(pWin->parent == (WindowPtr)NULL) /* root window? */
- {
- Atom propName; /* type = XA_STRING */
- char *propVal;
- int i;
- XrmDatabase rmdb = pScreenPriv->resDB;
-
- /*
- * Put the defaults spec'd in the config files in properties on this
- * screen's root window.
- */
- for(i = 0; propStrings[i] != (char *)NULL; i++)
- {
- if((propVal = _DtPrintGetPrinterResource(pWin, rmdb,
- propStrings[i])) !=
- (char *)NULL)
- {
- propName = MakeAtom(propStrings[i], strlen(propStrings[i]),
- TRUE);
- ChangeWindowProperty(pWin, propName, XA_STRING, 8,
- PropModeReplace, strlen(propVal),
- (pointer)propVal, FALSE);
- xfree(propVal);
- }
- }
- }
-
- return status;
-#endif
-
- /*
- * Invalidate the window's private print context.
- */
- pPriv = (PclWindowPrivPtr)pWin->devPrivates[PclWindowPrivateIndex].ptr;
- pPriv->validContext = 0;
-
- return TRUE;
-}
-
-
-/*ARGSUSED*/
-Bool PclMapWindow(
- WindowPtr pWindow)
-{
- return TRUE;
-}
-
-/*ARGSUSED*/
-Bool
-PclPositionWindow(
- register WindowPtr pWin,
- int x,
- int y)
-{
- return TRUE;
-}
-
-/*ARGSUSED*/
-Bool
-PclUnmapWindow(
- WindowPtr pWindow)
-{
- return TRUE;
-}
-
-/*ARGSUSED*/
-void
-PclCopyWindow(
- WindowPtr pWin,
- DDXPointRec ptOldOrg,
- RegionPtr prgnSrc)
-{
-}
-
-/*ARGSUSED*/
-Bool
-PclChangeWindowAttributes(
- register WindowPtr pWin,
- register unsigned long mask)
-{
- if( pWin->backingStore != NotUseful )
- {
- pWin->backingStore = NotUseful;
- mask |= CWBackingStore;
- }
-
- return TRUE;
-}
-
-
-/*
- * This function is largely ripped from miPaintWindow, but modified so
- * that the background is not painted to the root window, and so that
- * the backing store is not referenced.
- */
-void
-PclPaintWindow(
- WindowPtr pWin,
- RegionPtr pRegion,
- int what)
-{
-
-#define FUNCTION 0
-#define FOREGROUND 1
-#define TILE 2
-#define FILLSTYLE 3
-#define ABSX 4
-#define ABSY 5
-#define CLIPMASK 6
-#define SUBWINDOW 7
-#define COUNT_BITS 8
-
- pointer gcval[7];
- pointer newValues [COUNT_BITS];
-
- BITS32 gcmask, index, mask;
- RegionRec prgnWin;
- DDXPointRec oldCorner;
- BoxRec box;
- WindowPtr pBgWin;
- GCPtr pGC;
- register int i;
- register BoxPtr pbox;
- register ScreenPtr pScreen = pWin->drawable.pScreen;
- register xRectangle *prect;
- int numRects;
-
- gcmask = 0;
-
- /*
- * We don't want to paint a window that has no place to put the
- * PCL output.
- */
- if( PclGetContextFromWindow( pWin ) == (XpContextPtr)NULL )
- return;
-
- if (what == PW_BACKGROUND)
- {
- switch (pWin->backgroundState) {
- case None:
- return;
- case ParentRelative:
- (*pWin->parent->drawable.pScreen->PaintWindowBackground)
- (pWin->parent, pRegion, what);
- return;
- case BackgroundPixel:
- newValues[FOREGROUND] = (pointer)pWin->background.pixel;
- newValues[FILLSTYLE] = (pointer)FillSolid;
- gcmask |= GCForeground | GCFillStyle;
- break;
- case BackgroundPixmap:
- newValues[TILE] = (pointer)pWin->background.pixmap;
- newValues[FILLSTYLE] = (pointer)FillTiled;
- gcmask |= GCTile | GCFillStyle | GCTileStipXOrigin |
- GCTileStipYOrigin;
- break;
- }
- }
- else
- {
- if (pWin->borderIsPixel)
- {
- newValues[FOREGROUND] = (pointer)pWin->border.pixel;
- newValues[FILLSTYLE] = (pointer)FillSolid;
- gcmask |= GCForeground | GCFillStyle;
- }
- else
- {
- newValues[TILE] = (pointer)pWin->border.pixmap;
- newValues[FILLSTYLE] = (pointer)FillTiled;
- gcmask |= GCTile | GCFillStyle | GCTileStipXOrigin
- | GCTileStipYOrigin;
- }
- }
-
- prect = (xRectangle *)ALLOCATE_LOCAL(REGION_NUM_RECTS(pRegion) *
- sizeof(xRectangle));
- if (!prect)
- return;
-
- newValues[FUNCTION] = (pointer)GXcopy;
- gcmask |= GCFunction | GCClipMask;
-
- i = pScreen->myNum;
-
- pBgWin = pWin;
- if (what == PW_BORDER)
- {
- while (pBgWin->backgroundState == ParentRelative)
- pBgWin = pBgWin->parent;
- }
-
- pGC = GetScratchGC(pWin->drawable.depth, pWin->drawable.pScreen);
- if (!pGC)
- {
- DEALLOCATE_LOCAL(prect);
- return;
- }
- /*
- * mash the clip list so we can paint the border by
- * mangling the window in place, pretending it
- * spans the entire screen
- */
- if (what == PW_BORDER)
- {
- prgnWin = pWin->clipList;
- oldCorner.x = pWin->drawable.x;
- oldCorner.y = pWin->drawable.y;
- pWin->drawable.x = pWin->drawable.y = 0;
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = pScreen->width;
- box.y2 = pScreen->height;
- REGION_INIT(pScreen, &pWin->clipList, &box, 1);
- pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- newValues[ABSX] = (pointer)(long)pBgWin->drawable.x;
- newValues[ABSY] = (pointer)(long)pBgWin->drawable.y;
- }
- else
- {
- newValues[ABSX] = (pointer)0;
- newValues[ABSY] = (pointer)0;
- }
-
-/*
- * XXX Backing store is turned off for the PCL driver
-
- if (pWin->backStorage)
- (*pWin->drawable.pScreen->DrawGuarantee) (pWin, pGC,
- GuaranteeVisBack);
- */
-
- mask = gcmask;
- gcmask = 0;
- i = 0;
- while (mask) {
- index = lowbit (mask);
- mask &= ~index;
- switch (index) {
- case GCFunction:
- if ((pointer)(long) pGC->alu != newValues[FUNCTION]) {
- gcmask |= index;
- gcval[i++] = newValues[FUNCTION];
- }
- break;
- case GCTileStipXOrigin:
- if ((pointer)(long) pGC->patOrg.x != newValues[ABSX]) {
- gcmask |= index;
- gcval[i++] = newValues[ABSX];
- }
- break;
- case GCTileStipYOrigin:
- if ((pointer)(long) pGC->patOrg.y != newValues[ABSY]) {
- gcmask |= index;
- gcval[i++] = newValues[ABSY];
- }
- break;
- case GCClipMask:
- if ((pointer)(long) pGC->clientClipType != (pointer)CT_NONE) {
- gcmask |= index;
- gcval[i++] = (pointer)CT_NONE;
- }
- break;
- case GCSubwindowMode:
- if ((pointer)(long) pGC->subWindowMode != newValues[SUBWINDOW]) {
- gcmask |= index;
- gcval[i++] = newValues[SUBWINDOW];
- }
- break;
- case GCTile:
- if (pGC->tileIsPixel ||
- (pointer) pGC->tile.pixmap != newValues[TILE])
- {
- gcmask |= index;
- gcval[i++] = newValues[TILE];
- }
- break;
- case GCFillStyle:
- if ((pointer)(long) pGC->fillStyle != newValues[FILLSTYLE]) {
- gcmask |= index;
- gcval[i++] = newValues[FILLSTYLE];
- }
- break;
- case GCForeground:
- if ((pointer) pGC->fgPixel != newValues[FOREGROUND]) {
- gcmask |= index;
- gcval[i++] = newValues[FOREGROUND];
- }
- break;
- }
- }
-
- if (gcmask)
- DoChangeGC(pGC, gcmask, (XID *)gcval, 1);
-
- if (pWin->drawable.serialNumber != pGC->serialNumber)
- ValidateGC((DrawablePtr)pWin, pGC);
-
- numRects = REGION_NUM_RECTS(pRegion);
- pbox = REGION_RECTS(pRegion);
- for (i= numRects; --i >= 0; pbox++, prect++)
- {
- prect->x = pbox->x1 - pWin->drawable.x;
- prect->y = pbox->y1 - pWin->drawable.y;
- prect->width = pbox->x2 - pbox->x1;
- prect->height = pbox->y2 - pbox->y1;
- }
- prect -= numRects;
- (*pGC->ops->PolyFillRect)((DrawablePtr)pWin, pGC, numRects, prect);
- DEALLOCATE_LOCAL(prect);
-
-/*
- * XXX Backing store is turned off for the PCL driver
-
- if (pWin->backStorage)
- (*pWin->drawable.pScreen->DrawGuarantee) (pWin, pGC,
- GuaranteeNothing);
- */
-
- if (what == PW_BORDER)
- {
- REGION_UNINIT(pScreen, &pWin->clipList);
- pWin->clipList = prgnWin;
- pWin->drawable.x = oldCorner.x;
- pWin->drawable.y = oldCorner.y;
- pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- }
- FreeScratchGC(pGC);
-
-}
-
-/*ARGSUSED*/
-Bool
-PclDestroyWindow(
- WindowPtr pWin)
-{
- return TRUE;
-}
-
diff --git a/nx-X11/programs/Xserver/Xprint/pcl/Pclmap.h b/nx-X11/programs/Xserver/Xprint/pcl/Pclmap.h
deleted file mode 100644
index 5224fd9e3..000000000
--- a/nx-X11/programs/Xserver/Xprint/pcl/Pclmap.h
+++ /dev/null
@@ -1,213 +0,0 @@
-/* $Xorg: Pclmap.h,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/pcl/Pclmap.h,v 1.5 2001/07/25 15:05:00 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _PCLMAP_H_
-#define _PCLMAP_H_
-
-#ifdef XP_PCL_COLOR
-#ifdef CATNAME
-#undef CATNAME
-#endif
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define PCLNAME(subname) PclCr##subname
-#define CATNAME(prefix,subname) prefix##Color##subname
-#else
-#define PCLNAME(subname) PclCr/**/subname
-#define CATNAME(prefix,subname) prefix/**/Color/**/subname
-#endif
-#endif /* XP_PCL_COLOR */
-
-#ifdef XP_PCL_MONO
-#ifdef CATNAME
-#undef CATNAME
-#endif
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define PCLNAME(subname) PclMn##subname
-#define CATNAME(prefix,subname) prefix##Mono##subname
-#else
-#define PCLNAME(subname) PclMn/**/subname
-#define CATNAME(prefix,subname) prefix/**/Mono/**/subname
-#endif
-#endif /* XP_PCL_MONO */
-
-#ifdef XP_PCL_LJ3
-#ifdef CATNAME
-#undef CATNAME
-#endif
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define PCLNAME(subname) PclLj3##subname
-#define CATNAME(prefix,subname) prefix##Lj3##subname
-#else
-#define PCLNAME(subname) PclLj3/**/subname
-#define CATNAME(prefix,subname) prefix/**/Lj3/**/subname
-#endif
-#endif /* XP_PCL_LJ3 */
-
-#ifdef PCLNAME
-
-/* PclInit.c */
-#define InitializePclDriver CATNAME(Initialize, PclDriver)
-#define PclCloseScreen PCLNAME(CloseScreen)
-#define PclGetContextFromWindow PCLNAME(GetContextFromWindow)
-#define PclScreenPrivateIndex PCLNAME(ScreenPrivateIndex)
-#define PclWindowPrivateIndex PCLNAME(WindowPrivateIndex)
-#define PclContextPrivateIndex PCLNAME(ContextPrivateIndex)
-#define PclPixmapPrivateIndex PCLNAME(PixmapPrivateIndex)
-#define PclGCPrivateIndex PCLNAME(GCPrivateIndex)
-
-/* PclPrint.c */
-#define PclStartJob PCLNAME(StartJob)
-#define PclEndJob PCLNAME(EndJob)
-#define PclStartPage PCLNAME(StartPage)
-#define PclEndPage PCLNAME(EndPage)
-#define PclStartDoc PCLNAME(StartDoc)
-#define PclEndDoc PCLNAME(EndDoc)
-#define PclDocumentData PCLNAME(DocumentData)
-#define PclGetDocumentData PCLNAME(GetDocumentData)
-
-/* PclWindow.c */
-#define PclCreateWindow PCLNAME(CreateWindow)
-#define PclMapWindow PCLNAME(MapWindow)
-#define PclPositionWindow PCLNAME(PositionWindow)
-#define PclUnmapWindow PCLNAME(UnmapWindow)
-#define PclCopyWindow PCLNAME(CopyWindow)
-#define PclChangeWindowAttributes PCLNAME(ChangeWindowAttributes)
-#define PclPaintWindow PCLNAME(PaintWindow)
-#define PclDestroyWindow PCLNAME(DestroyWindow)
-
-/* PclGC.c */
-#define PclCreateGC PCLNAME(CreateGC)
-#define PclDestroyGC PCLNAME(DestroyGC)
-#define PclGetDrawablePrivateStuff PCLNAME(GetDrawablePrivateStuff)
-#define PclSetDrawablePrivateGC PCLNAME(SetDrawablePrivateGC)
-#define PclSendPattern PCLNAME(SendPattern)
-#define PclUpdateDrawableGC PCLNAME(UpdateDrawableGC)
-#define PclComputeCompositeClip PCLNAME(ComputeCompositeClip)
-#define PclValidateGC PCLNAME(ValidateGC)
-
-/* PclAttr.c */
-#define PclGetAttributes PCLNAME(GetAttributes)
-#define PclGetOneAttribute PCLNAME(GetOneAttribute)
-#define PclAugmentAttributes PCLNAME(AugmentAttributes)
-#define PclSetAttributes PCLNAME(SetAttributes)
-
-/* PclColor.c */
-#define PclLookUp PCLNAME(LookUp)
-#define PclCreateDefColormap PCLNAME(CreateDefColormap)
-#define PclCreateColormap PCLNAME(CreateColormap)
-#define PclDestroyColormap PCLNAME(DestroyColormap)
-#define PclInstallColormap PCLNAME(InstallColormap)
-#define PclUninstallColormap PCLNAME(UninstallColormap)
-#define PclListInstalledColormaps PCLNAME(ListInstalledColormaps)
-#define PclStoreColors PCLNAME(StoreColors)
-#define PclResolveColor PCLNAME(ResolveColor)
-#define PclFindPaletteMap PCLNAME(FindPaletteMap)
-#define PclUpdateColormap PCLNAME(UpdateColormap)
-#define PclReadMap PCLNAME(ReadMap)
-
-/* PclPixmap.c */
-#define PclCreatePixmap PCLNAME(CreatePixmap)
-#define PclDestroyPixmap PCLNAME(DestroyPixmap)
-
-/* PclArc.c */
-#define PclDoArc PCLNAME(DoArc)
-#define PclPolyArc PCLNAME(PolyArc)
-#define PclPolyFillArc PCLNAME(PolyFillArc)
-
-/* PclArea.c */
-#define PclPutImage PCLNAME(PutImage)
-#define PclCopyArea PCLNAME(CopyArea)
-#define PclCopyPlane PCLNAME(CopyPlane)
-
-/* PclLine */
-#define PclPolyLine PCLNAME(PolyLine)
-#define PclPolySegment PCLNAME(PolySegment)
-
-/* PclPixel.c */
-#define PclPolyPoint PCLNAME(PolyPoint)
-#define PclPushPixels PCLNAME(PushPixels)
-
-/* PclPolygon.c */
-#define PclPolyRectangle PCLNAME(PolyRectangle)
-#define PclFillPolygon PCLNAME(FillPolygon)
-#define PclPolyFillRect PCLNAME(PolyFillRect)
-
-/* PclSpans.c */
-#define PclFillSpans PCLNAME(FillSpans)
-#define PclSetSpans PCLNAME(SetSpans)
-
-/* PclText.c */
-#define PclPolyText8 PCLNAME(PolyText8)
-#define PclPolyText16 PCLNAME(PolyText16)
-#define PclImageText8 PCLNAME(ImageText8)
-#define PclImageText16 PCLNAME(ImageText16)
-#define PclImageGlyphBlt PCLNAME(ImageGlyphBlt)
-#define PclPolyGlyphBlt PCLNAME(PolyGlyphBlt)
-#define PclPolyGlyphBlt PCLNAME(PolyGlyphBlt)
-
-/* PclFonts.c */
-#define PclRealizeFont PCLNAME(RealizeFont)
-#define PclUnrealizeFont PCLNAME(UnrealizeFont)
-
-/* PclSFonts.c */
-#define PclDownloadSoftFont8 PCLNAME(DownloadSoftFont8)
-#define PclDownloadSoftFont16 PCLNAME(DownloadSoftFont16)
-#define PclCreateSoftFontInfo PCLNAME(CreateSoftFontInfo)
-#define PclDestroySoftFontInfo PCLNAME(DestroySoftFontInfo)
-
-/* PclMisc.c */
-#define PclQueryBestSize PCLNAME(QueryBestSize)
-#define GetPropString PCLNAME(GetPropString)
-#define SystemCmd PCLNAME(SystemCmd)
-#define PclGetMediumDimensions PCLNAME(GetMediumDimensions)
-#define PclGetReproducibleArea PCLNAME(GetReproducibleArea)
-#define PclSpoolFigs PCLNAME(SpoolFigs)
-#define PclSendData PCLNAME(SendData)
-
-/* PclCursor.c */
-#define PclConstrainCursor PCLNAME(ConstrainCursor)
-#define PclCursorLimits PCLNAME(CursorLimits)
-#define PclDisplayCursor PCLNAME(DisplayCursor)
-#define PclRealizeCursor PCLNAME(RealizeCursor)
-#define PclUnrealizeCursor PCLNAME(UnrealizeCursor)
-#define PclRecolorCursor PCLNAME(RecolorCursor)
-#define PclSetCursorPosition PCLNAME(SetCursorPosition)
-
-#endif
-
-#endif /* _PCLMAP_H_ */
diff --git a/nx-X11/programs/Xserver/Xprint/pdf/README b/nx-X11/programs/Xserver/Xprint/pdf/README
deleted file mode 100644
index 9f3847570..000000000
--- a/nx-X11/programs/Xserver/Xprint/pdf/README
+++ /dev/null
@@ -1 +0,0 @@
-Tracking bug for this work is http://xprint.mozdev.org/bugs/show_bug.cgi?id=3529
diff --git a/nx-X11/programs/Xserver/Xprint/ps/Imakefile b/nx-X11/programs/Xserver/Xprint/ps/Imakefile
deleted file mode 100644
index c73466fe4..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/Imakefile
+++ /dev/null
@@ -1,89 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.5 2001/03/14 18:26:56 pookie Exp $
-
-#include <Server.tmpl>
-
-#if BuildFreeType || BuildFreetype2Library
-FT2SOURCEDIR = $(TOP)/extras/freetype2/src
-FT2INCDIR = $(TOP)/extras/freetype2/include
-FT2INCS = -I$(FT2INCDIR) \
- -I$(FT2SOURCEDIR)/type42
-TTF2PT1OURCEDIR = $(TOP)/extras/ttf2pt1
-FT_DEFINES = -DXP_USE_FREETYPE
-FTSRCS = psout_ft.c psout_ftpstype1.c psout_ftpstype3.c PsFTFonts.c
-FTOBJS = psout_ft.o psout_ftpstype1.o psout_ftpstype3.o PsFTFonts.o
-
-#if !defined (LynxOSArchitecture)
-TTF2PT1SRCFILE = ttf2pt1.c
-TTF2PT1OBJFILE = ttf2pt1.o
-#else
-TTF2PT1SRCFILE = ttf2pt1wrap.c
-TTF2PT1OBJFILE = ttf2pt1wrap.o
-#endif
-
-#if defined(SCOArchitecture)
-XTRA_SYS_DEFINES = SCOBuildFlags
-#endif
-
-TTF2PT1SRCS = ft.c pt1.c runt1asm.c $(TTF2PT1SRCFILE)
-TTF2PT1OBJS = ft.o pt1.o runt1asm.o $(TTF2PT1OBJFILE)
-TTF2PT1_DEFINES = -DUSE_FREETYPE -DXP_ONLY_BLOCKS
-#endif /* BuildFreeType || BuildFreetype2Library */
-
-SRCS1 = PsInit.c PsPrint.c PsGC.c PsMisc.c PsSpans.c PsArea.c PsPixel.c \
- PsLine.c PsPolygon.c PsArc.c PsText.c PsWindow.c PsFonts.c \
- PsAttr.c PsAttVal.c PsColor.c PsPixmap.c psout.c PsCache.c PsImageUtil.c
-
-OBJS1 = PsInit.o PsPrint.o PsGC.o PsMisc.o PsSpans.o PsArea.o PsPixel.o \
- PsLine.o PsPolygon.o PsArc.o PsText.o PsWindow.o PsFonts.o \
- PsAttr.o PsAttVal.o PsColor.o PsPixmap.o psout.o PsCache.o PsImageUtil.o
-
-SRCS = $(SRCS1) $(TTF2PT1SRCS) $(FTSRCS)
-
-OBJS = $(OBJS1) $(TTF2PT1OBJS) $(FTOBJS)
-
-#if BuildFreeType || BuildFreetype2Library
-LinkSourceFile(ttf2pt1.c,$(TTF2PT1OURCEDIR)/)
-LinkSourceFile(pt1.c,$(TTF2PT1OURCEDIR)/)
-LinkSourceFile(pt1.h,$(TTF2PT1OURCEDIR)/)
-LinkSourceFile(ft.c,$(TTF2PT1OURCEDIR)/)
-LinkSourceFile(runt1asm.c,$(TTF2PT1OURCEDIR)/)
-LinkSourceFile(t1asm.c,$(TTF2PT1OURCEDIR)/)
-LinkSourceFile(ttf.h,$(TTF2PT1OURCEDIR)/)
-LinkSourceFile(global.h,$(TTF2PT1OURCEDIR)/)
-LinkSourceFile(version.h,$(TTF2PT1OURCEDIR)/)
-#endif /* BuildFreeType || BuildFreetype2Library */
-
-#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)
-
-XCOMM DEFINES = -DPIXPRIV
-
-XCOMM BM_CACHE disabled because it causes PostScript errors
-XCOMM (see http://xprint.mozdev.org/bugs/show_bug.cgi?id=1489)
-XCOMM DEFINES = -DPSOUT_USE_DEEPCOLOR -DXP_PSTEXT -DBM_CACHE $(VENDOR_DEFINES) $(TTF2PT1_DEFINES) $(FT_DEFINES)
- DEFINES = -UXFree86LOADER -DPSOUT_USE_DEEPCOLOR -DXP_PSTEXT -D_XP_PRINT_SERVER_ $(VENDOR_DEFINES) $(TTF2PT1_DEFINES) $(FT_DEFINES) $(EXT_DEFINES) $(XTRA_SYS_DEFINES)
-
- INCLUDES = -I. -I../../mi -I../../mfb -I$(LIBSRC) \
- -I$(XINCLUDESRC) -I../../include -I.. -I$(TOP)/include \
- -I$(EXTINCSRC) -I$(FONTINCSRC) -I$(FONTLIBSRC)/include \
- $(FT2INCS) -I../../../../lib/font/FreeType
-
- LINTLIBS = $(TOP)/server/dix/llib-ldix.ln $(TOP)/server/os/llib-los.ln \
- $(TOP)/server/ddx/mfb/llib-lmfb.ln \
- $(TOP)/server/ddx/mi/llib-lmi.ln
-
-NormalLibraryObjectRule()
-
-NormalLibraryTarget(ps,$(OBJS))
-NormalLintTarget($(SRCS1) $(SRCS2))
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/Xprint/ps/Ps.h b/nx-X11/programs/Xserver/Xprint/ps/Ps.h
deleted file mode 100644
index 781161d8a..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/Ps.h
+++ /dev/null
@@ -1,590 +0,0 @@
-/* $Xorg: Ps.h,v 1.5 2001/02/09 02:04:35 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: Ps.h
-** *
-** * Contents: defines and includes for the Ps driver
-** * for a printing X server.
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _PS_H_
-#define _PS_H_
-
-#include <stdio.h>
-
-#ifdef abs
-#undef abs /* this is because of a non-Spec1170ness in misc.h */
-#endif
-#include <stdlib.h>
-#include "scrnintstr.h"
-#include "dix.h"
-
-#include "PsDef.h"
-#include "psout.h"
-
-#include <X11/extensions/Print.h>
-#include <X11/extensions/Printstr.h>
-
-#include "regionstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-
-/*
- * Some sleazes to force the XrmDB stuff into the server
- */
-#ifndef HAVE_XPointer
-typedef char *XPointer;
-#define Status int
-#define True 1
-#define False 0
-#endif
-
-#include "misc.h"
-#include <X11/Xfuncproto.h>
-#include <X11/Xresource.h>
-#include "attributes.h"
-
-
-/*
- * Public index variables from PsInit.c
- */
-
-extern int PsScreenPrivateIndex;
-extern int PsWindowPrivateIndex;
-extern int PsContextPrivateIndex;
-extern int PsPixmapPrivateIndex;
-extern XpValidatePoolsRec PsValidatePoolsRec;
-
-/*
- * Display list structures
- */
-
-#define DPY_BLOCKSIZE 4096
-
-typedef struct
-{
- int mode;
- int nPoints;
- xPoint *pPoints;
-} PsPolyPointsRec;
-
-typedef struct
-{
- int nSegments;
- xSegment *pSegments;
-} PsSegmentsRec;
-
-typedef struct
-{
- int nRects;
- xRectangle *pRects;
-} PsRectanglesRec;
-
-typedef struct
-{
- int nArcs;
- xArc *pArcs;
-} PsArcsRec;
-
-typedef struct
-{
- int x;
- int y;
- int count;
- char *string;
-} PsText8Rec;
-
-typedef struct
-{
- int x;
- int y;
- int count;
- unsigned short *string;
-} PsText16Rec;
-
-typedef struct
-{
- int depth;
- int x;
- int y;
- int w;
- int h;
- int leftPad;
- int format;
- int res; /* image resolution */
- char *pData;
-} PsImageRec;
-
-typedef struct
-{
- int x;
- int y;
- int w;
- int h;
-} PsFrameRec;
-
-typedef enum
-{
- PolyPointCmd,
- PolyLineCmd,
- PolySegmentCmd,
- PolyRectangleCmd,
- FillPolygonCmd,
- PolyFillRectCmd,
- PolyArcCmd,
- PolyFillArcCmd,
- Text8Cmd,
- Text16Cmd,
- TextI8Cmd,
- TextI16Cmd,
- PutImageCmd,
- BeginFrameCmd,
- EndFrameCmd
-} DisplayElmType;
-
-typedef struct _DisplayElmRec
-{
- DisplayElmType type;
- GCPtr gc;
- union
- {
- PsPolyPointsRec polyPts;
- PsSegmentsRec segments;
- PsRectanglesRec rects;
- PsArcsRec arcs;
- PsText8Rec text8;
- PsText16Rec text16;
- PsImageRec image;
- PsFrameRec frame;
- } c;
-} DisplayElmRec;
-
-typedef DisplayElmRec *DisplayElmPtr;
-
-typedef struct _DisplayListRec
-{
- struct _DisplayListRec *next;
- int nelms;
- DisplayElmRec elms[DPY_BLOCKSIZE];
-} DisplayListRec;
-
-typedef DisplayListRec *DisplayListPtr;
-
-/*
- * Private structures
- */
-
-typedef struct
-{
- XrmDatabase resDB;
- Bool (*DestroyWindow)(WindowPtr);
-} PsScreenPrivRec, *PsScreenPrivPtr;
-
-typedef struct PsFontTypeInfoRec PsFontTypeInfoRec;
-
-/* Structure to hold information about one font on disk
- * Notes:
- * - multiple XLFD names can refer to the same |PsFontTypeInfoRec| (if
- * they all use the same font on the disk)
- * - the FreeType font download code uses multiple |PsFontTypeInfoRec|
- * records for one font on disk if they differ in the encoding being
- * used (this is an exception from the
- * 'one-|PsFontTypeInfoRec|-per-font-on-disk'-design; maybe it it is better
- * to rework that in a later step and add a new per-encoding structure).
- */
-struct PsFontTypeInfoRec
-{
- PsFontTypeInfoRec *next; /* Next record in list... */
- char *adobe_ps_name; /* PostScript font name (from the
- * "_ADOBE_POSTSCRIPT_FONTNAME" atom) */
- char *download_ps_name; /* PostScript font name used for font download */
- char *filename; /* File name of font */
-#ifdef XP_USE_FREETYPE
- char *ft_download_encoding; /* encoding used for download */
- PsFTDownloadFontType ft_download_font_type; /* PS font type used for download (e.g. Type1/Type3/CID/etc.) */
-#endif /* XP_USE_FREETYPE */
- int is_iso_encoding; /* Is this font encoded in ISO Latin 1 ? */
- int font_type; /* See PSFTI_FONT_TYPE_* below... */
- Bool downloadableFont; /* Font can be downloaded */
- Bool alreadyDownloaded[256]; /* Font has been downloaded (for 256 8bit "sub"-font) */
-};
-
-#define PSFTI_FONT_TYPE_OTHER (0)
-#define PSFTI_FONT_TYPE_PMF (1)
-#define PSFTI_FONT_TYPE_PS_TYPE1_PFA (2)
-#define PSFTI_FONT_TYPE_PS_TYPE1_PFB (3)
-#define PSFTI_FONT_TYPE_TRUETYPE (4)
-/* PSFTI_FONT_TYPE_FREETYPE is means the font is handled by the freetype engine */
-#define PSFTI_FONT_TYPE_FREETYPE (5)
-
-typedef struct PsFontInfoRec PsFontInfoRec;
-
-/* Structure which represents our context info for a single XLFD font
- * Note that multiple |PsFontInfoRec| records can share the same
- * |PsFontTypeInfoRec| record - the |PsFontInfoRec| records represent
- * different appearances of the same font on disk(=|PsFontTypeInfoRec|)).
- */
-struct PsFontInfoRec
-{
- PsFontInfoRec *next; /* Next record in list... */
- /* |font| and |font_fontPrivate| are used by |PsFindFontInfoRec()| to
- * identify a font */
- FontPtr font; /* The font this record is for */
- pointer font_fontPrivate;
- PsFontTypeInfoRec *ftir; /* Record about the font file on disk */
- const char *dfl_name; /* XLFD for this font */
- int size; /* Font size. Use |mtx| if |size==0| */
- float mtx[4]; /* Transformation matrix (see |size|) */
-};
-
-typedef struct
-{
- char *jobFileName;
- FILE *pJobFile;
- GC lastGC;
- unsigned char *dash;
- int validGC;
- ClientPtr getDocClient;
- int getDocBufSize;
- PsOutPtr pPsOut;
- PsFontTypeInfoRec *fontTypeInfoRecords;
- PsFontInfoRec *fontInfoRecords;
-} PsContextPrivRec, *PsContextPrivPtr;
-
-typedef struct
-{
- int validContext;
- XpContextPtr context;
-} PsWindowPrivRec, *PsWindowPrivPtr;
-
-typedef struct
-{
- XpContextPtr context;
- GC lastGC;
- int validGC;
- DisplayListPtr dispList;
-} PsPixmapPrivRec, *PsPixmapPrivPtr;
-
-/*
- * Macro functions
- */
-
-#define SEND_PS(f,c) fwrite( c, sizeof( char ), strlen( c ), f )
-#define MIN(a,b) (((a)<(b))?(a):(b))
-#ifndef MAX
-#define MAX(a,b) (((a)>(b))?(a):(b))
-#endif
-
-/*
- * Functions in PsInit.c
- */
-
-extern Bool InitializePsDriver(int ndx, ScreenPtr pScreen, int argc,
- char **argv);
-extern XpContextPtr PsGetContextFromWindow(WindowPtr win);
-
-/*
- * Functions in PsPrint.c
- */
-
-extern int PsStartJob(XpContextPtr pCon, Bool sendClientData, ClientPtr client);
-extern int PsEndJob(XpContextPtr pCon, Bool cancel);
-extern int PsStartPage(XpContextPtr pCon, WindowPtr pWin);
-extern int PsEndPage(XpContextPtr pCon, WindowPtr pWin);
-extern int PsStartDoc(XpContextPtr pCon, XPDocumentType type);
-extern int PsEndDoc(XpContextPtr pCon, Bool cancel);
-extern int PsDocumentData(XpContextPtr pCon, DrawablePtr pDraw, char *pData,
- int len_data, char *pFmt, int len_fmt, char *pOpt, int len_opt,
- ClientPtr client);
-extern int PsGetDocumentData(XpContextPtr pCon, ClientPtr client,
- int maxBufferSize);
-
-/*
- * Functions in PsGC.c
- */
-
-extern Bool PsCreateGC(GCPtr pGC);
-extern PsContextPrivPtr PsGetPsContextPriv( DrawablePtr pDrawable );
-extern int PsUpdateDrawableGC(GCPtr pGC, DrawablePtr pDrawable,
- PsOutPtr *psOut, ColormapPtr *cMap);
-extern void PsValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable);
-extern void PsChangeGC(GCPtr pGC, unsigned long changes);
-extern void PsCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst);
-extern void PsDestroyGC(GCPtr pGC);
-extern void PsChangeClip(GCPtr pGC, int type, pointer pValue, int nrects);
-extern void PsDestroyClip(GCPtr pGC);
-extern void PsCopyClip(GCPtr pgcDst, GCPtr pgcSrc);
-
-extern GCPtr PsCreateAndCopyGC(DrawablePtr pDrawable, GCPtr pSrc);
-
-/*
- * Functions in PsMisc.c
- */
-
-extern void PsQueryBestSize(int type, short *pwidth, short *pheight,
- ScreenPtr pScreen);
-extern Bool PsCloseScreen(int index, ScreenPtr pScreen);
-extern void PsLineAttrs(PsOutPtr psOut, GCPtr pGC, ColormapPtr cMap);
-extern int PsGetMediumDimensions(
- XpContextPtr pCon,
- CARD16 *pWidth,
- CARD16 *pHeight);
-extern int PsGetReproducibleArea(
- XpContextPtr pCon,
- xRectangle *pRect);
-extern int PsSetImageResolution(
- XpContextPtr pCon,
- int imageRes,
- Bool *status);
-
-/*
- * Functions in PsSpans.c
- */
-
-extern void PsFillSpans(DrawablePtr pDrawable, GCPtr pGC, int nSpans,
- DDXPointPtr pPoints, int *pWidths, int fSorted);
-extern void PsSetSpans(DrawablePtr pDrawable, GCPtr pGC, char *pSrc,
- DDXPointPtr pPoints, int *pWidths, int nSpans,
- int fSorted);
-
-/*
- * Functions in PsArea.c
- */
-
-extern void PsPutScaledImage(DrawablePtr pDrawable, GCPtr pGC, int depth,
- int x, int y, int w, int h, int leftPad, int format,
- int imageRes, char *pImage);
-extern void PsPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth,
- int x, int y, int w, int h, int leftPad, int format,
- char *pImage);
-extern void PsPutImageMask(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
- int w, int h, int leftPad, int format, char *pImage);
-extern RegionPtr PsCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
- int srcx, int srcy, int width, int height,
- int dstx, int dsty);
-extern RegionPtr PsCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
- int srcx, int srcy, int width, int height,
- int dstx, int dsty, unsigned long plane);
-
-/*
- * Functions in PsPixel.c
- */
-
-extern void PsPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode,
- int nPoints, xPoint *pPoints);
-extern void PsPushPixels(GCPtr pGC, PixmapPtr pBitmap, DrawablePtr pDrawable,
- int width, int height, int x, int y);
-
-/*
- * Functions in PsLine.c
- */
-
-extern void PsPolyLine(DrawablePtr pDrawable, GCPtr pGC, int mode,
- int nPoints, xPoint *pPoints);
-extern void PsPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nSegments,
- xSegment *pSegments);
-
-/*
- * Functions in PsPolygon.c
- */
-
-extern void PsPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, int nRects,
- xRectangle *pRects);
-extern void PsFillPolygon(DrawablePtr pDrawable, GCPtr pGC, int shape,
- int mode, int nPoints, DDXPointPtr pPoints);
-extern void PsPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nRects,
- xRectangle *pRects);
-
-/*
- * Functions in PsPolygon.c
- */
-
-extern void PsPolyArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs,
- xArc *pArcs);
-extern void PsPolyFillArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs,
- xArc *pArcs);
-
-/*
- * Functions in PsText.c
- */
-
-extern int PsPolyText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
- int count, char *string);
-extern int PsPolyText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
- int count, unsigned short *string);
-extern void PsImageText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
- int count, char *string);
-extern void PsImageText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
- int count, unsigned short *string);
-extern void PsImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
- unsigned int nGlyphs, CharInfoPtr *pCharInfo,
- pointer pGlyphBase);
-extern void PsPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
- unsigned int nGlyphs, CharInfoPtr *pCharInfo,
- pointer pGlyphBase);
-
-/*
- * Functions in PsWindow.c
- */
-
-extern Bool PsCreateWindow(WindowPtr pWin);
-extern Bool PsMapWindow(WindowPtr pWin);
-extern Bool PsPositionWindow(WindowPtr pWin, int x, int y);
-extern Bool PsUnmapWindow(WindowPtr pWin);
-extern void PsCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
- RegionPtr prgnSrc);
-extern Bool PsChangeWindowAttributes(WindowPtr pWin, unsigned long mask);
-extern void PsPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what);
-extern Bool PsDestroyWindow(WindowPtr pWin);
-
-/*
- * Functions in PsFonts.c
- */
-
-extern Bool PsRealizeFont(ScreenPtr pscr, FontPtr pFont);
-extern Bool PsUnrealizeFont(ScreenPtr pscr, FontPtr pFont);
-extern char *PsGetFontName(FontPtr pFont);
-extern int PsGetFontSize(FontPtr pFont, float *mtx);
-extern char *PsGetPSFontName(FontPtr pFont);
-extern char *PsGetPSFaceOrFontName(FontPtr pFont);
-extern int PsIsISOLatin1Encoding(FontPtr pFont);
-extern char *PsGetEncodingName(FontPtr pFont);
-extern PsFontInfoRec *PsGetFontInfoRec(DrawablePtr pDrawable, FontPtr pFont);
-extern void PsFreeFontInfoRecords(PsContextPrivPtr priv);
-extern PsFTDownloadFontType PsGetFTDownloadFontType(void);
-
-/*
- * Functions in PsFTFonts.c
- */
-
-extern char *PsGetFTFontFileName(FontPtr pFont);
-extern Bool PsIsFreeTypeFont(FontPtr pFont);
-
-/*
- * Functions in PsAttr.c
- */
-
-extern char *PsGetAttributes(XpContextPtr pCon, XPAttributes pool);
-extern char *PsGetOneAttribute(XpContextPtr pCon, XPAttributes pool,
- char *attr);
-extern int PsAugmentAttributes(XpContextPtr pCon, XPAttributes pool,
- char *attrs);
-extern int PsSetAttributes(XpContextPtr pCon, XPAttributes pool, char *attrs);
-
-/*
- * Functions in PsColor.c
- */
-
-extern Bool PsCreateColormap(ColormapPtr pColor);
-extern void PsDestroyColormap(ColormapPtr pColor);
-extern void PsInstallColormap(ColormapPtr pColor);
-extern void PsUninstallColormap(ColormapPtr pColor);
-extern int PsListInstalledColormaps(ScreenPtr pScreen, XID *pCmapList);
-extern void PsStoreColors(ColormapPtr pColor, int ndef, xColorItem *pdefs);
-extern void PsResolveColor(unsigned short *pRed, unsigned short *pGreen,
- unsigned short *pBlue, VisualPtr pVisual);
-extern PsOutColor PsGetPixelColor(ColormapPtr cMap, int pixval);
-extern void PsSetFillColor(DrawablePtr pDrawable, GCPtr pGC, PsOutPtr psOut,
- ColormapPtr cMap);
-
-/*
- * Functions in PsPixmap.c
- */
-
-extern PixmapPtr PsCreatePixmap(ScreenPtr pScreen, int width, int height,
- int depth);
-extern void PsScrubPixmap(PixmapPtr pPixmap);
-extern Bool PsDestroyPixmap(PixmapPtr pPixmap);
-extern DisplayListPtr PsGetFreeDisplayBlock(PsPixmapPrivPtr priv);
-extern void PsReplayPixmap(PixmapPtr pix, DrawablePtr pDrawable);
-extern int PsCloneDisplayElm(PixmapPtr dst,
- DisplayElmPtr elm, DisplayElmPtr newElm,
- int xoff, int yoff);
-extern void PsCopyDisplayList(PixmapPtr src, PixmapPtr dst, int xoff,
- int yoff, int x, int y, int w, int h);
-extern PsElmPtr PsCreateFillElementList(PixmapPtr pix, int *nElms);
-extern PsElmPtr PsCloneFillElementList(int nElms, PsElmPtr elms);
-extern void PsDestroyFillElementList(int nElms, PsElmPtr elms);
-
-/*
- * Functions in PsImageUtil.c
- */
-
-extern unsigned long
-PsGetImagePixel(char *pImage, int depth, int w, int h, int leftPad, int format,
- int px, int py);
-
-#endif /* _PS_H_ */
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsArc.c b/nx-X11/programs/Xserver/Xprint/ps/PsArc.c
deleted file mode 100644
index 511971e7a..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsArc.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/* $Xorg: PsArc.c,v 1.4 2001/02/09 02:04:35 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsArc.c
-** *
-** * Contents: Arc-drawing code for the PS DDX driver
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-
-#include "Ps.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-
-void
-PsPolyArc(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nArcs,
- xArc *pArcs)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return;
-
- disp = PsGetFreeDisplayBlock(priv);
-
- elm = &disp->elms[disp->nelms];
- elm->type = PolyArcCmd;
- elm->gc = gc;
- elm->c.arcs.nArcs = nArcs;
- elm->c.arcs.pArcs = (xArc *)xalloc(nArcs*sizeof(xArc));
- memcpy(elm->c.arcs.pArcs, pArcs, nArcs*sizeof(xArc));
- disp->nelms += 1;
- }
- else
- {
- int i;
- PsOutPtr psOut;
- ColormapPtr cMap;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE ) return;
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsOut_Color(psOut, PsGetPixelColor(cMap, pGC->fgPixel));
- PsLineAttrs(psOut, pGC, cMap);
- for( i=0 ; i<nArcs ; i++ )
- {
- PsOut_DrawArc(psOut, (int)pArcs[i].x, (int)pArcs[i].y,
- (int)pArcs[i].width, (int)pArcs[i].height,
- (float)pArcs[i].angle1/64.,
- (float)pArcs[i].angle2/64.);
- }
- }
-}
-
-void
-PsPolyFillArc(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nArcs,
- xArc *pArcs)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return;
-
- disp = PsGetFreeDisplayBlock(priv);
-
- elm = &disp->elms[disp->nelms];
- elm->type = PolyFillArcCmd;
- elm->gc = gc;
- elm->c.arcs.nArcs = nArcs;
- elm->c.arcs.pArcs = (xArc *)xalloc(nArcs*sizeof(xArc));
- memcpy(elm->c.arcs.pArcs, pArcs, nArcs*sizeof(xArc));
- disp->nelms += 1;
- }
- else
- {
- int i;
- PsOutPtr psOut;
- PsArcEnum styl;
- ColormapPtr cMap;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE ) return;
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsSetFillColor(pDrawable, pGC, psOut, cMap);
- PsLineAttrs(psOut, pGC, cMap);
- if( pGC->arcMode==ArcChord ) styl = PsChord;
- else styl = PsPieSlice;
- for( i=0 ; i<nArcs ; i++ )
- {
- PsOut_FillArc(psOut, (int)pArcs[i].x, (int)pArcs[i].y,
- (int)pArcs[i].width, (int)pArcs[i].height,
- (float)pArcs[i].angle1/64.,
- (float)pArcs[i].angle2/64., styl);
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsArea.c b/nx-X11/programs/Xserver/Xprint/ps/PsArea.c
deleted file mode 100644
index 32a4d5cf4..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsArea.c
+++ /dev/null
@@ -1,393 +0,0 @@
-/* $Xorg: PsArea.c,v 1.6 2001/03/14 18:27:44 pookie Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996, 2000 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsArea.c
-** *
-** * Contents: Image and Area functions for the PS DDX driver
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Ps.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-
-
-void
-PsPutScaledImage(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
- int w, int h, int leftPad, int format, int imageRes, char *pImage)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- int size = PixmapBytePad(w, depth)*h;
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return;
-
- disp = PsGetFreeDisplayBlock(priv);
- elm = &disp->elms[disp->nelms];
- elm->type = PutImageCmd;
- elm->gc = gc;
- elm->c.image.depth = depth;
- elm->c.image.x = x;
- elm->c.image.y = y;
- elm->c.image.w = w;
- elm->c.image.h = h;
- elm->c.image.leftPad = leftPad;
- elm->c.image.format = format;
- elm->c.image.res = imageRes;
- elm->c.image.pData = (char *)xalloc(size);
- memcpy(elm->c.image.pData, pImage, size);
- disp->nelms += 1;
- }
- else
- {
- int i, j;
- int r, c;
- char *pt;
- PsOutPtr psOut;
- ColormapPtr cMap;
- int pageRes, sw, sh;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE ) return;
- if (!imageRes) {
- sw = w;
- sh = h;
- } else {
- pageRes = XpGetResolution(XpGetPrintContext(requestingClient));
- sw = (float)w * (float)pageRes / (float)imageRes + 0.5;
- sh = (float)h * (float)pageRes / (float)imageRes + 0.5;
- }
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
-
- if( depth!=1 )
- {
- PsOut_BeginImage(psOut, 0, 0, x, y, w, h, sw, sh, 3);
-
- for( r=0 ; r<h ; r++ )
- {
- for( c=0 ; c<w ; c++ )
- {
- unsigned long pv = PsGetImagePixel(pImage, depth, w, h, leftPad, format, c, r);
- PsOutColor clr = PsGetPixelColor(cMap, pv);
- /* XXX: This needs to be fixed for endian swapping and to support
- * depths deeper than 8bit per R-,G-,B-gun... */
- unsigned long val = PSOUTCOLOR_TO_RGB24BIT(clr);
- char *ipt = (char *)&val;
-/* XXX: Is this the right way to detect the platform endianess ? */
-#if IMAGE_BYTE_ORDER == LSBFirst
- {
- long l;
- swapl(&val, l);
- }
-#elif IMAGE_BYTE_ORDER == MSBFirst
-#else
-#error Unsupported byte order
-#endif
- PsOut_OutImageBytes(psOut, 3, &ipt[1]);
- }
- }
-
- PsOut_EndImage(psOut);
- }
- else
- {
- int rowsiz = BitmapBytePad(w);
- int psrsiz = (w+7)/8;
- PsOut_BeginImage(psOut, PsGetPixelColor(cMap, pGC->bgPixel),
- PsGetPixelColor(cMap, pGC->fgPixel),
- x, y, w, h, sw, sh, 1);
- for( r=0 ; r<h ; r++ )
- {
- char *pt = &pImage[rowsiz*r];
- for( i=0 ; i<psrsiz ; i++ )
- {
- int iv_, iv = (int)pt[i]&0xFF;
- char c;
-/* XXX: Is this the right way to detect the platform endianess ? */
-#if IMAGE_BYTE_ORDER == LSBFirst
- { for( j=0,iv_=0 ; j<8 ; j++ ) iv_ |= (((iv>>j)&1)<<(7-j)); }
-#elif IMAGE_BYTE_ORDER == MSBFirst
- iv_ = iv;
-#else
-#error Unsupported byte order
-#endif
- c = iv_;
- PsOut_OutImageBytes(psOut, 1, &c);
- }
- }
- PsOut_EndImage(psOut);
- }
- }
-}
-
-void
-PsPutScaledImageIM(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
- int w, int h, int leftPad, int format, int imageRes, char *pImage)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- int size = PixmapBytePad(w, depth)*h;
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return;
-
- disp = PsGetFreeDisplayBlock(priv);
- elm = &disp->elms[disp->nelms];
- elm->type = PutImageCmd;
- elm->gc = gc;
- elm->c.image.depth = depth;
- elm->c.image.x = x;
- elm->c.image.y = y;
- elm->c.image.w = w;
- elm->c.image.h = h;
- elm->c.image.leftPad = leftPad;
- elm->c.image.format = format;
- elm->c.image.res = imageRes;
- elm->c.image.pData = (char *)xalloc(size);
- memcpy(elm->c.image.pData, pImage, size);
- disp->nelms += 1;
- }
- else
- {
- int i, j;
- int r, c;
- char *pt;
- PsOutPtr psOut;
- ColormapPtr cMap;
- int pageRes, sw, sh;
-#ifdef BM_CACHE
- long cache_id = 0;
-#endif
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE ) return;
- if (!imageRes) {
- sw = w;
- sh = h;
- } else {
- pageRes = XpGetResolution(XpGetPrintContext(requestingClient));
- sw = (float)w * (float)pageRes / (float)imageRes + 0.5;
- sh = (float)h * (float)pageRes / (float)imageRes + 0.5;
- }
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
-
-#ifdef BM_CACHE
- cache_id = PsBmIsImageCached(w, h, pImage);
-
- if(!cache_id)
- {
- cache_id = PsBmPutImageInCache(w, h, pImage);
-
- if(!cache_id)
- return;
-
- PsOut_BeginImageCache(psOut, cache_id);
-#endif
- if( depth!=1 )
- {
- PsOut_BeginImageIM(psOut, 0, 0, x, y, w, h, sw, sh, 3);
-
- for( r=0 ; r<h ; r++ )
- {
- for( c=0 ; c<w ; c++ )
- {
- unsigned long pv = PsGetImagePixel(pImage, depth, w, h, leftPad, format, c, r);
- PsOutColor clr = PsGetPixelColor(cMap, pv);
- /* XXX: This needs to be fixed for endian swapping and to support
- * depths deeper than 8bit per R-,G-,B-gun... */
- unsigned long val = PSOUTCOLOR_TO_RGB24BIT(clr);
- char *ipt = (char *)&val;
-/* XXX: Is this the right way to detect the platform endianess ? */
-#if IMAGE_BYTE_ORDER == LSBFirst
- {
- long l;
- swapl(&val, l);
- }
-#elif IMAGE_BYTE_ORDER == MSBFirst
-#else
-#error Unsupported byte order
-#endif
- PsOut_OutImageBytes(psOut, 3, &ipt[1]);
- }
- }
-
- PsOut_EndImage(psOut);
- }
- else
- {
- int rowsiz = BitmapBytePad(w);
- int psrsiz = (w+7)/8;
- PsOut_BeginImageIM(psOut, PsGetPixelColor(cMap, pGC->bgPixel),
- PsGetPixelColor(cMap, pGC->fgPixel),
- x, y, w, h, sw, sh, 1);
- for( r=0 ; r<h ; r++ )
- {
- char *pt = &pImage[rowsiz*r];
- for( i=0 ; i<psrsiz ; i++ )
- {
- int iv_, iv = (int)pt[i]&0xFF;
- char c;
-/* XXX: Is this the right way to detect the platform endianess ? */
-#if IMAGE_BYTE_ORDER == LSBFirst
- { for( j=0,iv_=0 ; j<8 ; j++ ) iv_ |= (((iv>>j)&1)<<(7-j)); }
-#elif IMAGE_BYTE_ORDER == MSBFirst
- iv_ = iv;
-#else
-#error Unsupported byte order
-#endif
- c = iv_;
- PsOut_OutImageBytes(psOut, 1, &c);
- }
- }
- PsOut_EndImage(psOut);
- }
-#ifdef BM_CACHE
- PsOut_EndImageCache(psOut);
- }
- PsOut_ImageCache(psOut, x, y, cache_id, PsGetPixelColor(cMap, pGC->bgPixel),
- PsGetPixelColor(cMap, pGC->fgPixel));
-#endif
- }
-}
-void
-PsPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
- int w, int h, int leftPad, int format, char *pImage)
-{
- XpContextPtr pcon;
- if (requestingClient && (pcon = XpGetPrintContext(requestingClient)))
- PsPutScaledImage(pDrawable, pGC, depth, x, y, w, h, leftPad, format,
- pcon->imageRes, pImage);
-}
-void
-PsPutImageMask(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
- int w, int h, int leftPad, int format, char *pImage)
-{
- XpContextPtr pcon;
- if (requestingClient && (pcon = XpGetPrintContext(requestingClient)))
- PsPutScaledImageIM(pDrawable, pGC, depth, x, y, w, h, leftPad, format,
- pcon->imageRes, pImage);
-}
-
-RegionPtr
-PsCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, int srcx, int srcy,
- int width, int height, int dstx, int dsty)
-{
- PixmapPtr src = (PixmapPtr)pSrc;
- PixmapPtr dst = (PixmapPtr)pDst;
-
- if( pSrc->type!=DRAWABLE_PIXMAP ) return NULL;
- if( pDst->type!=DRAWABLE_PIXMAP )
- {
- PsOutPtr psOut;
- ColormapPtr cMap;
- if( PsUpdateDrawableGC(pGC, pDst, &psOut, &cMap)==FALSE ) return NULL;
- PsOut_Offset(psOut, pDst->x, pDst->y);
- PsOut_BeginFrame(psOut, dstx-srcx, dsty-srcy, dstx, dsty, width, height);
- PsReplayPixmap(src, pDst);
- PsOut_EndFrame(psOut);
- }
- else PsCopyDisplayList(src, dst, dstx-srcx, dsty-srcy, dstx, dsty,
- width, height);
- return NULL;
-}
-
-RegionPtr
-PsCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, int srcx, int srcy,
- int width, int height, int dstx, int dsty, unsigned long plane)
-{
- PixmapPtr src = (PixmapPtr)pSrc;
- PixmapPtr dst = (PixmapPtr)pDst;
-
- if( pSrc->type!=DRAWABLE_PIXMAP ) return NULL;
- if( pDst->type!=DRAWABLE_PIXMAP )
- {
- PsOutPtr psOut;
- ColormapPtr cMap;
- if( PsUpdateDrawableGC(pGC, pDst, &psOut, &cMap)==FALSE ) return NULL;
- PsOut_Offset(psOut, pDst->x, pDst->y);
- PsOut_BeginFrame(psOut, dstx-srcx, dsty-srcy, dstx, dsty, width, height);
- PsReplayPixmap(src, pDst);
- PsOut_EndFrame(psOut);
- }
- else PsCopyDisplayList(src, dst, dstx-srcx, dsty-srcy, dstx, dsty,
- width, height);
- return NULL;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsAttVal.c b/nx-X11/programs/Xserver/Xprint/ps/PsAttVal.c
deleted file mode 100644
index fc23ffef5..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsAttVal.c
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * $Xorg: PsAttVal.c,v 1.5 2001/03/13 18:45:31 pookie Exp $
- */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Ps.h"
-#include "AttrValid.h"
-
-/*
- * define valid values and defaults for Printer pool
- */
-static XpOid ValidContentOrientationsOids[] = {
- xpoid_val_content_orientation_portrait,
- xpoid_val_content_orientation_landscape,
- xpoid_val_content_orientation_reverse_portrait,
- xpoid_val_content_orientation_reverse_landscape
-};
-static XpOidList ValidContentOrientations = {
- ValidContentOrientationsOids, XpNumber(ValidContentOrientationsOids)
-};
-
-static XpOid DefaultContentOrientationsOids[] = {
- xpoid_val_content_orientation_portrait,
- xpoid_val_content_orientation_landscape
-};
-static XpOidList DefaultContentOrientations = {
- DefaultContentOrientationsOids, XpNumber(DefaultContentOrientationsOids)
-};
-
-static XpOid ValidPlexesOids[] = {
- xpoid_val_plex_simplex, xpoid_val_plex_duplex, xpoid_val_plex_tumble
-};
-static XpOidList ValidPlexes = {
- ValidPlexesOids, XpNumber(ValidPlexesOids)
-};
-
-static XpOid DefaultPlexesOids[] = {
- xpoid_val_plex_simplex
-};
-static XpOidList DefaultPlexes = {
- DefaultPlexesOids, XpNumber(DefaultPlexesOids)
-};
-
-static unsigned long ValidPrinterResolutionsCards[] = {
- 75,
- 100,
- 120,
- 150,
- 180,
- 200,
- 240,
- 300,
- 360,
- 400,
- 600,
- 720,
- 940,
- 1200,
- 1440,
- 2400
-};
-static XpOidCardList ValidPrinterResolutions = {
- ValidPrinterResolutionsCards, XpNumber(ValidPrinterResolutionsCards)
-};
-
-static unsigned long DefaultPrinterResolutionsCards[] = {
- 75,
- 100,
- 120,
- 150,
- 180,
- 200,
- 240,
- 300,
- 360,
- 400,
- 600,
- 720,
- 940,
- 1200
-};
-static XpOidCardList DefaultPrinterResolutions = {
- DefaultPrinterResolutionsCards, XpNumber(DefaultPrinterResolutionsCards)
-};
-
-static XpOid ValidListfontsModesOids[] = {
- xpoid_val_xp_list_internal_printer_fonts, xpoid_val_xp_list_glyph_fonts
-};
-static XpOidList ValidListfontsModes = {
- ValidListfontsModesOids, XpNumber(ValidListfontsModesOids)
-};
-
-static XpOid DefaultListfontsModesOids[] = {
- xpoid_val_xp_list_glyph_fonts
-};
-static XpOidList DefaultListfontsModes = {
- DefaultListfontsModesOids, XpNumber(DefaultListfontsModesOids)
-};
-
-static XpOid ValidSetupProvisoOids[] = {
- xpoid_val_xp_setup_mandatory, xpoid_val_xp_setup_optional
-};
-static XpOidList ValidSetupProviso = {
-
-
- ValidSetupProvisoOids, XpNumber(ValidSetupProvisoOids)
-};
-
-static XpOidDocFmt ValidDocFormatsSupportedFmts[] = {
- { "Postscript", "2", NULL }
-};
-static XpOidDocFmtList ValidDocFormatsSupported = {
- ValidDocFormatsSupportedFmts, XpNumber(ValidDocFormatsSupportedFmts)
-};
-
-static XpOidDocFmt DefaultDocFormatsSupportedFmts[] = {
- { "Postscript", "2", NULL }
-};
-static XpOidDocFmtList DefaultDocFormatsSupported = {
- DefaultDocFormatsSupportedFmts, XpNumber(DefaultDocFormatsSupportedFmts)
-};
-
-static XpOidDocFmt ValidEmbeddedFormatsSupportedFmts[] = {
- { "Postscript", "2", NULL }
-};
-static XpOidDocFmtList ValidEmbeddedFormatsSupported = {
- ValidEmbeddedFormatsSupportedFmts, XpNumber(ValidEmbeddedFormatsSupportedFmts)
-};
-
-static XpOidDocFmt DefaultEmbeddedFormatsSupportedFmts[] = {
- { "Postscript", "2", NULL }
-};
-static XpOidDocFmtList DefaultEmbeddedFormatsSupported = {
- DefaultEmbeddedFormatsSupportedFmts, XpNumber(DefaultEmbeddedFormatsSupportedFmts)
-};
-
-static XpOidDocFmt ValidRawFormatsSupportedFmts[] = {
- { "Postscript", "2", NULL }
-
-};
-static XpOidDocFmtList ValidRawFormatsSupported = {
- ValidRawFormatsSupportedFmts, XpNumber(ValidRawFormatsSupportedFmts)
-};
-
-static XpOidDocFmt DefaultRawFormatsSupportedFmts[] = {
- { "Postscript", "2", NULL }
-};
-static XpOidDocFmtList DefaultRawFormatsSupported = {
- DefaultRawFormatsSupportedFmts, XpNumber(DefaultRawFormatsSupportedFmts)
-};
-
-static XpOid ValidInputTraysOids[] = {
- xpoid_val_input_tray_manual,
- xpoid_val_input_tray_main,
- xpoid_val_input_tray_envelope,
- xpoid_val_input_tray_large_capacity,
- xpoid_val_input_tray_bottom
-};
-static XpOidList ValidInputTrays = {
- ValidInputTraysOids, XpNumber(ValidInputTraysOids)
-};
-
-static XpOid ValidMediumSizesOids[] = {
- xpoid_val_medium_size_iso_a0,
- xpoid_val_medium_size_iso_a1,
- xpoid_val_medium_size_iso_a2,
- xpoid_val_medium_size_iso_a3,
- xpoid_val_medium_size_iso_a4,
- xpoid_val_medium_size_iso_a5,
- xpoid_val_medium_size_iso_a6,
- xpoid_val_medium_size_iso_a7,
- xpoid_val_medium_size_iso_a8,
- xpoid_val_medium_size_iso_a9,
- xpoid_val_medium_size_iso_a10,
- xpoid_val_medium_size_iso_b0,
- xpoid_val_medium_size_iso_b1,
- xpoid_val_medium_size_iso_b2,
- xpoid_val_medium_size_iso_b3,
- xpoid_val_medium_size_iso_b4,
- xpoid_val_medium_size_iso_b5,
- xpoid_val_medium_size_iso_b6,
- xpoid_val_medium_size_iso_b7,
- xpoid_val_medium_size_iso_b8,
- xpoid_val_medium_size_iso_b9,
- xpoid_val_medium_size_iso_b10,
- xpoid_val_medium_size_na_letter,
- xpoid_val_medium_size_na_legal,
- xpoid_val_medium_size_executive,
- xpoid_val_medium_size_folio,
- xpoid_val_medium_size_invoice,
- xpoid_val_medium_size_ledger,
- xpoid_val_medium_size_quarto,
- xpoid_val_medium_size_iso_c3,
- xpoid_val_medium_size_iso_c4,
- xpoid_val_medium_size_iso_c5,
- xpoid_val_medium_size_iso_c6,
- xpoid_val_medium_size_iso_designated_long,
- xpoid_val_medium_size_na_10x13_envelope,
- xpoid_val_medium_size_na_9x12_envelope,
- xpoid_val_medium_size_na_number_10_envelope,
- xpoid_val_medium_size_na_7x9_envelope,
- xpoid_val_medium_size_na_9x11_envelope,
- xpoid_val_medium_size_na_10x14_envelope,
- xpoid_val_medium_size_na_number_9_envelope,
- xpoid_val_medium_size_na_6x9_envelope,
- xpoid_val_medium_size_na_10x15_envelope,
- xpoid_val_medium_size_monarch_envelope,
- xpoid_val_medium_size_a,
- xpoid_val_medium_size_b,
- xpoid_val_medium_size_c,
- xpoid_val_medium_size_d,
- xpoid_val_medium_size_e,
- xpoid_val_medium_size_jis_b0,
- xpoid_val_medium_size_jis_b1,
- xpoid_val_medium_size_jis_b2,
- xpoid_val_medium_size_jis_b3,
- xpoid_val_medium_size_jis_b4,
- xpoid_val_medium_size_jis_b5,
- xpoid_val_medium_size_jis_b6,
- xpoid_val_medium_size_jis_b7,
- xpoid_val_medium_size_jis_b8,
- xpoid_val_medium_size_jis_b9,
- xpoid_val_medium_size_jis_b10,
- xpoid_val_medium_size_hp_2x_postcard,
- xpoid_val_medium_size_hp_european_edp,
- xpoid_val_medium_size_hp_mini,
- xpoid_val_medium_size_hp_postcard,
- xpoid_val_medium_size_hp_tabloid,
- xpoid_val_medium_size_hp_us_edp,
- xpoid_val_medium_size_hp_us_government_legal,
- xpoid_val_medium_size_hp_us_government_letter,
-};
-static XpOidList ValidMediumSizes = {
- ValidMediumSizesOids, XpNumber(ValidMediumSizesOids)
-};
-
-static XpOidDocFmt DefaultDocumentFormat = {
- "Postscript", "2", NULL
-};
-
-
-/*
- * init struct for XpValidate*Pool
- */
-XpValidatePoolsRec PsValidatePoolsRec = {
- &ValidContentOrientations, &DefaultContentOrientations,
- &ValidDocFormatsSupported, &DefaultDocFormatsSupported,
- &ValidInputTrays, &ValidMediumSizes,
- &ValidPlexes, &DefaultPlexes,
- &ValidPrinterResolutions, &DefaultPrinterResolutions,
- &ValidEmbeddedFormatsSupported, &DefaultEmbeddedFormatsSupported,
- &ValidListfontsModes, &DefaultListfontsModes,
- &ValidRawFormatsSupported, &DefaultRawFormatsSupported,
- &ValidSetupProviso,
- &DefaultDocumentFormat
-};
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsAttr.c b/nx-X11/programs/Xserver/Xprint/ps/PsAttr.c
deleted file mode 100644
index 74da5a0e1..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsAttr.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* $Xorg: PsAttr.c,v 1.4 2001/02/09 02:04:35 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsAttr.c
-** *
-** * Contents: Attribute-handling functions for the PS driver
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Ps.h"
-#include "attributes.h"
-
-char *
-PsGetAttributes(
- XpContextPtr pCon,
- XPAttributes pool)
-{
- return XpGetAttributes(pCon, pool);
-}
-
-char *
-PsGetOneAttribute(
- XpContextPtr pCon,
- XPAttributes pool,
- char *attr)
-{
- return XpGetOneAttribute(pCon, pool, attr);
-}
-
-int
-PsAugmentAttributes(
- XpContextPtr pCon,
- XPAttributes pool,
- char *attrs)
-{
- return XpAugmentAttributes(pCon, pool, attrs);
-}
-
-int
-PsSetAttributes(
- XpContextPtr pCon,
- XPAttributes pool,
- char *attrs)
-{
- return XpSetAttributes(pCon, pool, attrs);
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsCache.c b/nx-X11/programs/Xserver/Xprint/ps/PsCache.c
deleted file mode 100644
index e69aa2eb7..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsCache.c
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996, 2000 Sun Microsystems, Inc. All Rights Reserved.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsCache.c
-** *
-** * Contents: Character-caching routines
-** *
-** * Created By: Jay Hobson (Sun MicroSystems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Ps.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include <X11/fonts/fntfil.h>
-#include <X11/fonts/fntfilst.h>
-
-#define GET 0
-#define RESET 1
-
-struct bm_cache_list {
- struct bm_cache_list *next;
- struct bm_cache_list *prev;
- int height;
- long id;
- char *pBuffer;
-};
-
-struct bm_cache_head {
- struct bm_cache_list *head;
- int width;
- struct bm_cache_head *next;
- struct bm_cache_head *prev;
-};
-
-static struct bm_cache_head *bm_cache = NULL;
-
-static long
-PsBmUniqueId(int func)
-{
- static long unique_id = 0;
-
- if(func == RESET)
- {
- unique_id = 0;
- return 0;
- }
- else
- return ++unique_id;
-}
-
-int
-PsBmIsImageCached(
- int gWidth,
- int gHeight,
- char *pBuffer)
-{
- int return_val = 0;
- struct bm_cache_head *pList = bm_cache;
-
- while(pList != NULL && !return_val)
- {
- if(pList->width == gWidth)
- {
- struct bm_cache_list *pItem = pList->head;
-
- while(pItem != NULL)
- {
- if(pItem->height == gHeight)
- {
- int length = 4*(gWidth/32+(gWidth%32!=0))*gHeight;
-
- if(!memcmp(pItem->pBuffer, pBuffer, sizeof(char)*length))
- {
- return_val = pItem->id;
- break;
- }
- }
- else if(pItem->height > gHeight)
- break;
-
- pItem = pItem->next;
- }
- }
- else if(pList->width > gWidth)
- break;
-
- pList = pList->next;
- }
- return return_val;
-}
-
-int
-PsBmPutImageInCache(
- int gWidth,
- int gHeight,
- char *pBuffer)
-{
- int return_val = 0;
- struct bm_cache_head *pList = bm_cache;
- struct bm_cache_list *pNew;
- int length = 4*(gWidth/32+(gWidth%32!=0))*gHeight;
-
- if(gWidth == 1 && gHeight == 1 && pBuffer[0] == 0)
- return return_val;
-
- pNew = (struct bm_cache_list *)malloc(sizeof(struct bm_cache_list));
- pNew->next = NULL;
- pNew->prev = NULL;
- pNew->height = gHeight;
- pNew->id = PsBmUniqueId(GET);
- pNew->pBuffer = (char *)malloc(sizeof(char)*length);
-
- memcpy(pNew->pBuffer, pBuffer, length);
-
- while(pList != NULL)
- {
- if(pList->width == gWidth)
- {
- struct bm_cache_list *pItem = pList->head;
-
- while(pItem != NULL)
- {
- if(pItem->height >= gHeight)
- {
- pNew->next = pItem;
- pNew->prev = pItem->prev;
- if(pItem->prev != NULL)
- pItem->prev->next = pNew;
- else
- pList->head = pNew;
- pItem->prev = pNew;
-
- return_val = pNew->id;
-
- break;
- }
- else if(pItem->next == NULL)
- {
- pNew->prev = pItem;
- pItem->next = pNew;
-
- return_val = pNew->id;
-
- break;
- }
-
- pItem = pItem->next;
- }
-
- break;
- }
-
- pList = pList->next;
- }
-
- if(pList == NULL)
- {
- struct bm_cache_head *pNewList;
-
- pNewList = (struct bm_cache_head *)malloc(sizeof(struct bm_cache_head));
-
- pNewList->next = NULL;
- pNewList->prev = NULL;
- pNewList->width = gWidth;
- pNewList->head = pNew;
-
- if(bm_cache == NULL)
- {
- bm_cache = pNewList;
- return_val = pNew->id;
- }
- else
- {
- pList = bm_cache;
-
- while(pList != NULL)
- {
- if(pList->width > gWidth)
- {
- pNewList->next = pList;
- pNewList->prev = pList->prev;
-
- if(pList->prev != NULL)
- pList->prev->next = pNewList;
- else
- bm_cache = pNewList;
- pList->prev = pNewList;
-
- return_val = pNew->id;
-
- break;
- }
- else if(pList->next == NULL)
- {
- pNewList->prev = pList;
- pList->next = pNewList;
-
- return_val = pNew->id;
-
- break;
- }
-
- pList = pList->next;
- }
- }
- }
-
- return return_val;
-}
-
-
-static void
-PsBmClearImageCacheItem(
- struct bm_cache_list *pItem)
-{
- if(pItem != NULL)
- {
- if(pItem->pBuffer != NULL)
- free(pItem->pBuffer);
- pItem->pBuffer = NULL;
-
- if(pItem->next)
- PsBmClearImageCacheItem(pItem->next);
- pItem->next = NULL;
-
- free(pItem);
- pItem = NULL;
- }
-}
-
-static void
-PsBmClearImageCacheList(
- struct bm_cache_head *pList)
-{
- if(pList != NULL)
- {
- if(pList->head)
- PsBmClearImageCacheItem(pList->head);
- pList->head = NULL;
-
- if(pList->next)
- PsBmClearImageCacheList(pList->next);
- pList->next = NULL;
-
- free(pList);
- pList = NULL;
- }
-}
-
-void
-PsBmClearImageCache()
-{
- PsBmClearImageCacheList(bm_cache);
-
- bm_cache = NULL;
-
- PsBmUniqueId(RESET);
-}
-
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsColor.c b/nx-X11/programs/Xserver/Xprint/ps/PsColor.c
deleted file mode 100644
index 91a44f85a..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsColor.c
+++ /dev/null
@@ -1,258 +0,0 @@
-/* $Xorg: PsColor.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsColor.c
-** *
-** * Contents: Color routines for the PS driver
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Ps.h"
-#include "mi.h"
-#include "micmap.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "colormapst.h"
-
-Bool
-PsCreateColormap(ColormapPtr pColor)
-{
- return miInitializeColormap(pColor);
-}
-
-void
-PsDestroyColormap(ColormapPtr pColor)
-{
- /* NO-OP */
-}
-
-void
-PsInstallColormap(ColormapPtr pColor)
-{
- miInstallColormap(pColor);
-}
-
-void
-PsUninstallColormap(ColormapPtr pColor)
-{
- miUninstallColormap(pColor);
-}
-
-int
-PsListInstalledColormaps(
- ScreenPtr pScreen,
- XID *pCmapList)
-{
- return miListInstalledColormaps(pScreen, pCmapList);
-}
-
-void
-PsStoreColors(
- ColormapPtr pColor,
- int ndef,
- xColorItem *pdefs)
-{
- int i;
- for( i=0 ; i<ndef ; i++ )
- {
- if( pdefs[i].flags&DoRed )
- pColor->red[pdefs[i].pixel].co.local.red = pdefs[i].red;
- if( pdefs[i].flags&DoGreen )
- pColor->red[pdefs[i].pixel].co.local.green = pdefs[i].green;
- if( pdefs[i].flags&DoBlue )
- pColor->red[pdefs[i].pixel].co.local.blue = pdefs[i].blue;
- }
-}
-
-void
-PsResolveColor(
- unsigned short *pRed,
- unsigned short *pGreen,
- unsigned short *pBlue,
- VisualPtr pVisual)
-{
- miResolveColor(pRed, pGreen, pBlue, pVisual);
-}
-
-PsOutColor
-PsGetPixelColor(ColormapPtr cMap, int pixval)
-{
- VisualPtr v = cMap->pVisual;
- switch( v->class )
- {
- case TrueColor:
- {
- PsOutColor p = pixval;
- PsOutColor r, g, b;
-
- r = (p & v->redMask) >> v->offsetRed;
- g = (p & v->greenMask) >> v->offsetGreen;
- b = (p & v->blueMask) >> v->offsetBlue;
-
- r = cMap->red[r].co.local.red;
- g = cMap->green[g].co.local.green;
- b = cMap->blue[b].co.local.blue;
-
-#ifdef PSOUT_USE_DEEPCOLOR
- return((r<<32)|(g<<16)|b);
-#else
- r >>= 8;
- g >>= 8;
- b >>= 8;
-
- return((r<<16)|(g<<8)|b);
-#endif /* PSOUT_USE_DEEPCOLOR */
- }
- case PseudoColor:
- case GrayScale:
- case StaticGray:
- {
- PsOutColor r, g, b;
-
- if( pixval < 0 || pixval > v->ColormapEntries)
- return(0);
-
- r = cMap->red[pixval].co.local.red;
- g = cMap->red[pixval].co.local.green;
- b = cMap->red[pixval].co.local.blue;
-
- if ((v->class | DynamicClass) == GrayScale)
- {
- /* rescale to gray (see |miResolveColor()|) */
- r = g = b = (30L*r + 59L*g + 11L*b) / 100L;
- }
-
-#ifdef PSOUT_USE_DEEPCOLOR
- return((r<<32)|(g<<16)|b);
-#else
- r >>= 8;
- g >>= 8;
- b >>= 8;
-
- return((r<<16)|(g<<8)|b);
-#endif /* PSOUT_USE_DEEPCOLOR */
- }
- default:
- FatalError("PsGetPixelColor: Unsupported visual %x\n",
- (int)cMap->pVisual->class);
- break;
- }
-
- return 0; /* NO-OP*/
-}
-
-void
-PsSetFillColor(DrawablePtr pDrawable, GCPtr pGC, PsOutPtr psOut,
- ColormapPtr cMap)
-{
- switch(pGC->fillStyle)
- {
- case FillSolid:
- PsOut_Color(psOut, PsGetPixelColor(cMap, pGC->fgPixel));
- break;
- case FillTiled:
- if( !PsOut_BeginPattern(psOut, pGC->tile.pixmap,
- pGC->tile.pixmap->drawable.width,
- pGC->tile.pixmap->drawable.height, PsTile, 0, 0) )
- {
- PsReplayPixmap(pGC->tile.pixmap, pDrawable);
- PsOut_EndPattern(psOut);
- }
- PsOut_SetPattern(psOut, pGC->tile.pixmap, PsTile);
- break;
- case FillStippled:
- if( !PsOut_BeginPattern(psOut, pGC->stipple,
- pGC->stipple->drawable.width,
- pGC->stipple->drawable.height, PsStip, 0,
- PsGetPixelColor(cMap, pGC->fgPixel)) )
- {
- PsReplayPixmap(pGC->stipple, pDrawable);
- PsOut_EndPattern(psOut);
- }
- PsOut_SetPattern(psOut, pGC->stipple, PsStip);
- break;
- case FillOpaqueStippled:
- if( !PsOut_BeginPattern(psOut, pGC->stipple,
- pGC->stipple->drawable.width,
- pGC->stipple->drawable.height, PsOpStip,
- PsGetPixelColor(cMap, pGC->bgPixel),
- PsGetPixelColor(cMap, pGC->fgPixel)) )
- {
- PsReplayPixmap(pGC->stipple, pDrawable);
- PsOut_EndPattern(psOut);
- }
- PsOut_SetPattern(psOut, pGC->stipple, PsOpStip);
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsDef.h b/nx-X11/programs/Xserver/Xprint/ps/PsDef.h
deleted file mode 100644
index cf45c8516..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsDef.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* $Xorg: PsDef.h,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsDef.h
-** *
-** * Contents: extran defines and includes for the Ps driver
-** * for a printing X server.
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _PSDEF_H_
-#define _PSDEF_H_
-
-#define DT_PRINT_JOB_HEADER "DT_PRINT_JOB_HEADER"
-#define DT_PRINT_JOB_TRAILER "DT_PRINT_JOB_TRAILER"
-#define DT_PRINT_JOB_COMMAND "DT_PRINT_JOB_COMMAND"
-#define DT_PRINT_JOB_EXEC_COMMAND "DT_PRINT_JOB_EXEC_COMMAND"
-#define DT_PRINT_JOB_EXEC_OPTIONS "DT_PRINT_JOB_EXEC_OPTION"
-#define DT_PRINT_PAGE_HEADER "DT_PRINT_PAGE_HEADER"
-#define DT_PRINT_PAGE_TRAILER "DT_PRINT_PAGE_TRAILER"
-#define DT_PRINT_PAGE_COMMAND "DT_PRINT_PAGE_COMMAND"
-
-#define DT_IN_FILE_STRING "%(InFile)%"
-#define DT_OUT_FILE_STRING "%(OutFile)%"
-#define DT_ALLOWED_COMMANDS_FILE "printCommands"
-
-#endif /* _PSDEF_H_ */
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsFTFonts.c b/nx-X11/programs/Xserver/Xprint/ps/PsFTFonts.c
deleted file mode 100644
index c992987d4..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsFTFonts.c
+++ /dev/null
@@ -1,85 +0,0 @@
-
-/*
-Copyright (c) 2003-2004 Roland Mainz <roland.mainz@nrubsig.org>
-
-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 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 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
-AUTHORS OR COPYRIGHT HOLDERS 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.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <ctype.h>
-#include <limits.h>
-#include <sys/stat.h>
-
-#include "regionstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "scrnintstr.h"
-#include <X11/fonts/fontxlfd.h>
-#include <X11/fonts/fntfil.h>
-#include <X11/fonts/fntfilst.h>
-
-#include "Ps.h"
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-
-#include "ft.h"
-#define NOT_IN_FTFUNCS
-#include "ftfuncs.h"
-
-char *
-PsGetFTFontFileName(FontPtr pFont)
-{
- FTFontPtr tf = (FTFontPtr)pFont->fontPrivate;
- return tf->instance->face->filename;
-}
-
-Bool
-PsIsFreeTypeFont(FontPtr pFont)
-{
- int i;
- int nprops = pFont->info.nprops;
- FontPropPtr props = pFont->info.props;
- /* "RASTERIZER_NAME" must match the rasterizer name set in
- * xc/lib/font/FreeType/ftfuncs.c */
- Atom name = MakeAtom("RASTERIZER_NAME", 15, True);
- Atom value = (Atom)0;
- char *rv;
-
- for( i=0 ; i<nprops ; i++ )
- {
- if( props[i].name==name )
- { value = props[i].value; break; }
- }
- if( !value )
- return False;
-
- rv = NameForAtom(value);
- if( !rv )
- return False;
-
- if( memcmp(rv, "FreeType", 8) == 0 )
- return True;
-
- return False;
-}
-
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsFonts.c b/nx-X11/programs/Xserver/Xprint/ps/PsFonts.c
deleted file mode 100644
index 515a31884..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsFonts.c
+++ /dev/null
@@ -1,876 +0,0 @@
-/* $Xorg: PsFonts.c,v 1.6 2001/03/06 16:30:15 pookie Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsFonts.c
-** *
-** * Contents: Font code for PS driver.
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "regionstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "scrnintstr.h"
-#include <X11/fonts/fontxlfd.h>
-#include <X11/fonts/fntfil.h>
-#include <X11/fonts/fntfilst.h>
-
-#include "Ps.h"
-
-#include <ctype.h>
-#include <limits.h>
-#include <sys/stat.h>
-
-Bool
-PsRealizeFont(
- ScreenPtr pscr,
- FontPtr pFont)
-{
- return TRUE;
-}
-
-Bool
-PsUnrealizeFont(
- ScreenPtr pscr,
- FontPtr pFont)
-{
- return TRUE;
-}
-
-char *
-PsGetFontName(FontPtr pFont)
-{
- int i;
- int nprops = pFont->info.nprops;
- FontPropPtr props = pFont->info.props;
- Atom name = MakeAtom("FONT", 4, True);
- Atom value = (Atom)0;
-
- for( i=0 ; i<nprops ; i++ )
- {
- if( (Atom)props[i].name==name )
- { value = props[i].value; break; }
- }
- if( !value ) return (char *)0;
- return NameForAtom(value);
-}
-
-int
-PsGetFontSize(FontPtr pFont, float *mtx)
-{
- FontScalableRec vals;
- char *name = PsGetFontName(pFont);
- int value = 0;
-
- FontParseXLFDName(name, &vals, FONT_XLFD_REPLACE_NONE);
- if( vals.values_supplied&PIXELSIZE_ARRAY )
- {
- int i;
- for( i=0 ; i<4 ; i++ )
- mtx[i] = (float)vals.pixel_matrix[i];
- }
- else
- {
- value = vals.pixel;
- if( !value ) value = 20;
- }
- return value;
-}
-
-char *
-PsGetPSFontName(FontPtr pFont)
-{
- int i;
- int nprops = pFont->info.nprops;
- FontPropPtr props = pFont->info.props;
- /* "_ADOBE_POSTSCRIPT_FONTNAME" maps directly to a PMF OBJ_NAME attribute
- * name - changing the name will break printer-builtin fonts. */
- Atom name = MakeAtom("_ADOBE_POSTSCRIPT_FONTNAME", 26, True);
- Atom value = (Atom)0;
-
- for( i=0 ; i<nprops ; i++ )
- {
- if( (Atom)props[i].name==name )
- { value = props[i].value; break; }
- }
- if( !value ) return (char *)0;
- return NameForAtom(value);
-}
-
-int
-PsIsISOLatin1Encoding(FontPtr pFont)
-{
- int i;
- int nprops = pFont->info.nprops;
- FontPropPtr props = pFont->info.props;
- Atom reg = MakeAtom("CHARSET_REGISTRY", 16, True);
- Atom enc = MakeAtom("CHARSET_ENCODING", 16, True);
- Atom rv = 0, ev = 0;
- char *rp = 0;
- char *ep = 0;
-
- for( i=0 ; i<nprops ; i++ )
- {
- if( (Atom)props[i].name==reg ) rv = props[i].value;
- if( (Atom)props[i].name==enc ) ev = props[i].value;
- }
- if( rv ) rp = NameForAtom(rv);
- if( ev ) ep = NameForAtom(ev);
- if( (!rp) || (!ep) ) return(0);
- if( (char)tolower(rp[0])!='i' ||
- (char)tolower(rp[1])!='s' ||
- (char)tolower(rp[2])!='o' ||
- memcmp(&rp[3], "8859", 4)!=0 ||
- ep[0]!='1' ) return(0);
- return(1);
-}
-
-/* Return the encoding part of the XLFD (e.g. "*-iso8859-6.8x" etc.)*/
-char *PsGetEncodingName(FontPtr pFont)
-{
- int i;
- int nprops = pFont->info.nprops;
- FontPropPtr props = pFont->info.props;
- Atom fnt = MakeAtom("FONT", 4, True);
- Atom reg = MakeAtom("CHARSET_REGISTRY", 16, True);
- Atom enc = MakeAtom("CHARSET_ENCODING", 16, True);
- Atom fv = 0, rv = 0, ev = 0;
- char *fp = 0;
- char *rp = 0;
- char *ep = 0;
- char *encname;
-
- for( i=0 ; i<nprops ; i++ )
- {
- if( props[i].name==fnt ) fv = props[i].value;
- if( props[i].name==reg ) rv = props[i].value;
- if( props[i].name==enc ) ev = props[i].value;
- }
- if( fv ) fp = NameForAtom(fv);
- if( rv ) rp = NameForAtom(rv);
- if( ev ) ep = NameForAtom(ev);
-
- if( (!rp) || (!ep) || (!fp))
- return(0);
-
- encname = fp;
- encname += strlen(encname) - (strlen(rp) + strlen(ep) + 1);
-
- return encname;
-}
-
-/* strstr(), case-insensitive */
-static
-char *str_case_str(const char *s, const char *find)
-{
- size_t len;
- char c,
- sc;
-
- if ((c = tolower(*find++)) != '\0')
- {
- len = strlen(find);
- do
- {
- do
- {
- if ((sc = tolower(*s++)) == '\0')
- return NULL;
- } while (sc != c);
- } while (strncasecmp(s, find, len) != 0);
- s--;
- }
- return ((char *)s);
-}
-
-/* Check if the font path element is a directory which can be examined
- * (for example the font may be from a font server
- * (e.g. pFont->fpe->name == "tcp/:7100"))
- */
-static
-Bool IsFPEaReadableDir(FontPtr pFont)
-{
- const char *fpe_name = pFont->fpe->name;
- if (!fpe_name)
- return False;
-
-#define MODEL_FONTPATH_PREFIX "PRINTER:"
-#define MODEL_FONTPATH_PREFIX_LEN 8
- /* Strip model-specific font path prefix if there is one... */
- if (!strncmp(fpe_name, MODEL_FONTPATH_PREFIX, MODEL_FONTPATH_PREFIX_LEN))
- fpe_name += MODEL_FONTPATH_PREFIX_LEN;
-
- if (access(fpe_name, F_OK) == 0)
- {
- return True;
- }
-
- return False;
-}
-
-static
-char *getFontFilename(FontPtr pFont)
-{
- FontDirectoryPtr dir;
- const char *dlfnam;
- FILE *file;
- struct stat statb;
- int count, i, status;
- char buf[512];
- char *front, *end, *fn;
- char font_dir_fname[PATH_MAX], /* Full path of fonts.dir */
- font_file_fname[PATH_MAX]; /* Name of font file (excluding path) */
-
-#ifdef XP_USE_FREETYPE
- if( PsIsFreeTypeFont(pFont) )
- {
- const char *fontname = PsGetFTFontFileName(pFont);
-
-#ifdef DEBUG_gisburn
- fprintf(stderr, "getFontFilename: freetype font, file='%s'\n", fontname?fontname:"<NULL>");
-#endif /* DEBUG_gisburn */
-
- if( !fontname )
- return NULL;
-
- return strdup(fontname);
- }
-#endif /* XP_USE_FREETYPE */
-
- if (!IsFPEaReadableDir(pFont))
- {
-#ifdef DEBUG_gisburn
- fprintf(stderr, "getFontFilename: '%s' no valid font path on disk\n", pFont->fpe->name);
-#endif /* DEBUG_gisburn */
- return NULL;
- }
-
- dir = pFont->fpe->private;
- sprintf(font_dir_fname, "%s%s", dir->directory, "fonts.dir");
-
- if (!(dlfnam = PsGetFontName(pFont)))
- return NULL;
-
- file = fopen(font_dir_fname, "r");
- if (file)
- {
- if (fstat (fileno(file), &statb) == -1)
- return NULL;
-
- while( fgets(buf, sizeof(buf)-1, file) )
- {
- if ((fn = strstr(buf, " -")))
- {
- strcpy(font_file_fname, buf);
- font_file_fname[fn - buf] = '\0';
- fn++;
- if ((front = str_case_str(fn, "normal-")))
- {
- fn[front - fn] = '\0';
- if (str_case_str(dlfnam, fn))
- {
- char full_font_file_path[PATH_MAX];
-
- fclose(file);
-
- sprintf(full_font_file_path, "%s%s", dir->directory, font_file_fname);
-
-#ifdef xDEBUG_gisburn
- fprintf(stderr, "getFontFilename: returning '%s'\n", full_font_file_path);
-#endif /* DEBUG_gisburn */
- return strdup(full_font_file_path);
- }
- }
- }
- }
- }
- font_file_fname[0] = '\0';
- fclose(file);
-
-#ifdef DEBUG_gisburn
- fprintf(stderr, "getFontFilename: returning NULL\n");
-#endif /* DEBUG_gisburn */
-
- return NULL;
-}
-
-static
-PsFontTypeInfoRec *PsFindFontTypeInfoRec(DrawablePtr pDrawable, FontPtr pFont)
-{
- PsContextPrivRec *cPriv = PsGetPsContextPriv(pDrawable);
- PsFontTypeInfoRec *rec;
- const char *psname;
- char *font_filename;
- char *encname;
-#ifdef XP_USE_FREETYPE
- Bool is_freetypefont;
-#endif /* XP_USE_FREETYPE */
-
-#ifdef XP_USE_FREETYPE
- is_freetypefont = PsIsFreeTypeFont(pFont);
-#endif /* XP_USE_FREETYPE */
- encname = PsGetEncodingName(pFont);
-
- /* First try: Search by PostScript font name */
- psname = PsGetPSFontName(pFont);
- if (psname)
- {
- for( rec = cPriv->fontTypeInfoRecords ; rec != NULL ; rec = rec->next )
- {
-#ifdef XP_USE_FREETYPE
- if (is_freetypefont)
- {
- if (rec->adobe_ps_name)
- {
- if ((rec->font_type == PSFTI_FONT_TYPE_FREETYPE) &&
- (!strcmp(rec->adobe_ps_name, psname)) &&
- (!strcmp(rec->ft_download_encoding, encname)))
- {
- return rec;
- }
- }
- }
- else
-#endif /* XP_USE_FREETYPE */
- {
- if (rec->adobe_ps_name)
- {
- if ((rec->font_type != PSFTI_FONT_TYPE_FREETYPE) &&
- (!strcmp(rec->adobe_ps_name, psname)))
- {
- return rec;
- }
- }
- }
- }
- }
-
- /* Last attempt: Search by filename */
- font_filename = getFontFilename(pFont);
- if (font_filename)
- {
- for( rec = cPriv->fontTypeInfoRecords ; rec != NULL ; rec = rec->next )
- {
- if (rec->filename)
- {
-#ifdef XP_USE_FREETYPE
- if (is_freetypefont)
- {
- if ( (rec->font_type == PSFTI_FONT_TYPE_FREETYPE) &&
- (!strcasecmp(rec->filename, font_filename)) &&
- (!strcasecmp(rec->ft_download_encoding, encname)) )
- {
- free(font_filename);
- return rec;
- }
- }
- else
-#endif /* XP_USE_FREETYPE */
- {
- if ( (rec->font_type != PSFTI_FONT_TYPE_FREETYPE) &&
- (!strcasecmp(rec->filename, font_filename)) )
- {
- free(font_filename);
- return rec;
- }
- }
- }
- }
-
- free(font_filename);
- }
-
- return NULL;
-}
-
-static
-void PsAddFontTypeInfoRec(DrawablePtr pDrawable, PsFontTypeInfoRec *add_rec)
-{
- PsContextPrivRec *cPriv = PsGetPsContextPriv(pDrawable);
-
- /* ToDO: Always move the last used entry to the top that the list get's
- * sorted in an efficient order... :-) */
- add_rec->next = cPriv->fontTypeInfoRecords;
- cPriv->fontTypeInfoRecords = add_rec;
-}
-
-static
-Bool strcaseendswith(const char *str, const char *suffix)
-{
- const char *s;
-
- s = str + strlen(str) - strlen(suffix);
-
- if (!strcasecmp(s, suffix))
- return True;
-
- return False;
-}
-
-
-static
-int getFontFileType( const char *filename )
-{
- int type;
-
- /* Is this a Adobe PostScript Type 1 binary font (PFB) ? */
- if( strcaseendswith(filename, ".pfb") )
- {
- type = PSFTI_FONT_TYPE_PS_TYPE1_PFB;
- }
- /* Is this a Adobe PostScript ASCII font (PFA) ? */
- else if( strcaseendswith(filename, ".pfa") )
- {
- type = PSFTI_FONT_TYPE_PS_TYPE1_PFA;
- }
- /* Is this a PMF(=Printer Metrics File) ? */
- else if( strcaseendswith(filename, ".pmf") )
- {
- type = PSFTI_FONT_TYPE_PMF;
- }
- /* Is this a TrueType font file ? */
- else if( strcaseendswith(filename, ".ttf") ||
- strcaseendswith(filename, ".ttc") ||
- strcaseendswith(filename, ".otf") ||
- strcaseendswith(filename, ".otc") )
- {
- type = PSFTI_FONT_TYPE_TRUETYPE;
- }
- else
- {
- type = PSFTI_FONT_TYPE_OTHER;
- }
-
-#ifdef XP_USE_FREETYPE
- {
- XpContextPtr pCon;
- char *downloadfonts;
- pCon = XpGetPrintContext(requestingClient);
- downloadfonts = XpGetOneAttribute(pCon, XPPrinterAttr, "xp-psddx-download-fonts");
- if( downloadfonts )
- {
- /* Should we download PS Type1 fonts as PS Type1||Type3 ? */
- if( (type == PSFTI_FONT_TYPE_PS_TYPE1_PFA) &&
- (strstr(downloadfonts, "pfa") != NULL) )
- {
- type = PSFTI_FONT_TYPE_FREETYPE;
- }
-
- if( (type == PSFTI_FONT_TYPE_PS_TYPE1_PFB) &&
- (strstr(downloadfonts, "pfb") != NULL) )
- {
- type = PSFTI_FONT_TYPE_FREETYPE;
- }
-
- /* Should we download TrueType fonts as PS Type1||Type3 ? */
- if( (type == PSFTI_FONT_TYPE_TRUETYPE) &&
- ((strstr(downloadfonts, "ttf") != NULL) ||
- (strstr(downloadfonts, "ttc") != NULL) ||
- (strstr(downloadfonts, "otf") != NULL) ||
- (strstr(downloadfonts, "otc") != NULL)) )
- {
- type = PSFTI_FONT_TYPE_FREETYPE;
- }
- }
- }
-#endif /* XP_USE_FREETYPE */
-
-#ifdef DEBUG_gisburn
- fprintf(stderr, "getFontFileType: '%s' is %d\n", filename, (int)type);
-#endif /* DEBUG_gisburn */
- return type;
-}
-
-PsFTDownloadFontType PsGetFTDownloadFontType(void)
-{
- PsFTDownloadFontType downloadfonttype;
- XpContextPtr pCon;
- char *psfonttype;
-
- pCon = XpGetPrintContext(requestingClient);
- psfonttype = XpGetOneAttribute(pCon, XPPrinterAttr, "xp-psddx-download-font-type");
-
- if( !psfonttype || !strlen(psfonttype) )
- {
- return PsFontType1; /* Default download font type is PS Type1 */
- }
-
- if( !strcmp(psfonttype, "bitmap") )
- {
- downloadfonttype = PsFontBitmap;
- }
- else if( !strcmp(psfonttype, "pstype3") )
- {
- downloadfonttype = PsFontType3;
- }
- else if( !strcmp(psfonttype, "pstype1") )
- {
- downloadfonttype = PsFontType1;
- }
- else
- {
- FatalError("PS DDX: XPPrinterAttr/xp-psddx-download-freetype-font-type='%s' not implemented\n", psfonttype);
- return 0; /* NO-OP, FatalError() will call |exit()| */
- }
-
- return downloadfonttype;
-}
-
-static
-PsFontTypeInfoRec *PsCreateFontTypeInfoRec(DrawablePtr pDrawable, FontPtr pFont)
-{
- char *dlfnam;
- PsFontTypeInfoRec *rec;
- char *psname;
-
- if (!(dlfnam = PsGetFontName(pFont)))
- return NULL;
-
- if (!(rec = (PsFontTypeInfoRec *)xalloc(sizeof(PsFontTypeInfoRec))))
- return NULL;
- memset(rec, 0, sizeof(PsFontTypeInfoRec));
-
- rec->next = NULL;
-
- if ((rec->filename = getFontFilename(pFont)))
- {
- rec->font_type = getFontFileType(rec->filename);
- }
- else
- {
- rec->filename = NULL;
- rec->font_type = PSFTI_FONT_TYPE_OTHER;
- }
-
- rec->adobe_ps_name = PsGetPSFontName(pFont);
-#ifdef XP_USE_FREETYPE
- rec->ft_download_encoding = PsGetEncodingName(pFont);
- rec->ft_download_font_type = PsGetFTDownloadFontType();
-#endif /* XP_USE_FREETYPE */
- rec->download_ps_name = NULL;
-
-#define SET_FONT_DOWNLOAD_STATUS(rec, downloaded) { int i; for (i = 0 ; i < 256 ; i++) { (rec)->alreadyDownloaded[i]=(downloaded); } }
-
- /* Set some flags based on the font type */
- switch( rec->font_type )
- {
- case PSFTI_FONT_TYPE_PS_TYPE1_PFA:
- case PSFTI_FONT_TYPE_PS_TYPE1_PFB:
- rec->downloadableFont = True;
- SET_FONT_DOWNLOAD_STATUS(rec, False);
- rec->is_iso_encoding = PsIsISOLatin1Encoding(pFont);
- break;
-
- case PSFTI_FONT_TYPE_PMF:
- rec->downloadableFont = True; /* This font is in printer's ROM */
- SET_FONT_DOWNLOAD_STATUS(rec, True);
- rec->is_iso_encoding = PsIsISOLatin1Encoding(pFont);
- break;
-
- case PSFTI_FONT_TYPE_TRUETYPE:
- /* Note: TrueType font download not implemented */
- rec->downloadableFont = False;
- SET_FONT_DOWNLOAD_STATUS(rec, False);
- rec->is_iso_encoding = PsIsISOLatin1Encoding(pFont);
- break;
-
-#ifdef XP_USE_FREETYPE
- case PSFTI_FONT_TYPE_FREETYPE:
- if( rec->ft_download_font_type == PsFontType1 ||
- rec->ft_download_font_type == PsFontType3 )
- {
- rec->downloadableFont = True;
- }
- else
- {
- rec->downloadableFont = False;
- }
-
- SET_FONT_DOWNLOAD_STATUS(rec, False);
- rec->is_iso_encoding = False; /* Freetype--->PS Type1/Type3 uses always non-iso PS encoding for now */
- break;
-#endif /* XP_USE_FREETYPE */
-
- case PSFTI_FONT_TYPE_OTHER:
- default:
- rec->downloadableFont = False;
- SET_FONT_DOWNLOAD_STATUS(rec, False);
- rec->is_iso_encoding = PsIsISOLatin1Encoding(pFont);
- break;
- }
-
-#ifdef XP_USE_FREETYPE
- if( (rec->font_type == PSFTI_FONT_TYPE_FREETYPE) )
- {
- char *s;
- register int c;
-
- if( rec->adobe_ps_name )
- {
- rec->download_ps_name = malloc(strlen(rec->adobe_ps_name) + strlen(rec->ft_download_encoding) + 2);
- sprintf(rec->download_ps_name, "%s_%s", rec->adobe_ps_name, rec->ft_download_encoding);
- }
- else
- {
- /* Unfortunately not all TTF fonts have a PostScript font name (like
- * Solaris TTF fonts in /usr/openwin/lib/locale/ko.UTF-8/X11/fonts/TrueType,
- * /usr/openwin/lib/locale/ko/X11/fonts/TrueType) - in this case we
- * have to generate a font name
- */
- char ftfontname[64];
- static long myfontindex = 0L;
- sprintf(ftfontname, "psfont_%lx", myfontindex++);
-
- rec->download_ps_name = malloc(strlen(ftfontname) + strlen(rec->ft_download_encoding) + 2);
- sprintf(rec->download_ps_name, "%s_%s", ftfontname, rec->ft_download_encoding);
-
- fprintf(stderr, "PsCreateFontTypeInfoRec: Note: '%s' has no PS font name, using '%s' for now.\n", dlfnam, rec->download_ps_name);
- }
-
- /* Make sure the font name we use for download is a valid PS font name */
- for( s = rec->download_ps_name ; *s != '\0'; s++ )
- {
- c = *s;
-
- /* Check for allowed chars, invalid ones are replaced with a '_'
- * (and check that the first char is not a digit) */
- if( !(isalnum(c) || c == '.' || c == '_' || c == '-') || (s==rec->download_ps_name && isdigit(c)) )
- {
- *s = '_';
- }
- }
- }
- else
-#endif /* XP_USE_FREETYPE */
- {
- if( rec->adobe_ps_name )
- {
- rec->download_ps_name = strdup(rec->adobe_ps_name);
- }
- else
- {
- rec->download_ps_name = NULL;
- }
- }
-
- /* Safeguard - only treat font as downloadable when we have a PS font name!! */
- if (!rec->download_ps_name && rec->downloadableFont)
- {
- /* XXX: Log this message to the log when the logging service has been hook'ed up */
- fprintf(stderr, "PsCreateFontTypeInfoRec: Safeguard: No PS font name for '%s'!\n", dlfnam);
- rec->downloadableFont = False;
- }
-
-#ifdef DEBUG_gisburn
- fprintf(stderr, "PsCreateFontTypeInfoRec: Created PsFontTypeInfoRec '%s' ('%s'/'%s')\n",
- ((rec->filename) ?(rec->filename) :("<null>")),
- ((rec->adobe_ps_name) ?(rec->adobe_ps_name):("<null>")),
- ((rec->download_ps_name)?(rec->download_ps_name):("<null>")));
-#endif /* DEBUG_gisburn */
-
- return rec;
-}
-
-static
-PsFontTypeInfoRec *PsGetFontTypeInfoRec(DrawablePtr pDrawable, FontPtr pFont)
-{
- PsFontTypeInfoRec *rec;
- char *dlfnam;
-
- if(!(dlfnam = PsGetFontName(pFont)))
- return NULL;
-
- rec = PsFindFontTypeInfoRec(pDrawable, pFont);
- if (rec)
- return rec;
-
- rec = PsCreateFontTypeInfoRec(pDrawable, pFont);
- if (!rec)
- return NULL;
-
- PsAddFontTypeInfoRec(pDrawable, rec);
-
- return rec;
-}
-
-static
-void PsFreeFontTypeInfoRecords( PsContextPrivPtr priv )
-{
- PsFontTypeInfoRec *curr, *next;
- curr = priv->fontTypeInfoRecords;
- while( curr != NULL )
- {
- if (curr->filename)
- free(curr->filename); /* Free memory allocated by |strdup()| */
-
- if (curr->download_ps_name)
- free(curr->download_ps_name);
-
- next = curr->next;
- xfree(curr);
- curr = next;
- }
-}
-
-static
-PsFontInfoRec *PsFindFontInfoRec(DrawablePtr pDrawable, FontPtr pFont)
-{
- PsContextPrivRec *cPriv = PsGetPsContextPriv(pDrawable);
- PsFontInfoRec *rec;
-
- if (!pFont)
- return NULL;
-
- for( rec = cPriv->fontInfoRecords ; rec != NULL ; rec = rec->next )
- {
- if ((rec->font == pFont) &&
- (rec->font_fontPrivate == pFont->fontPrivate))
- return rec;
- }
-
- return NULL;
-}
-
-static
-void PsAddFontInfoRec(DrawablePtr pDrawable, PsFontInfoRec *add_rec)
-{
- PsContextPrivRec *cPriv = PsGetPsContextPriv(pDrawable);
-
- /* ToDO: Always move the last used entry to the top that the list get's
- * sorted in an efficient order... :-) */
- add_rec->next = cPriv->fontInfoRecords;
- cPriv->fontInfoRecords = add_rec;
-}
-
-static
-PsFontInfoRec *PsCreateFontInfoRec(DrawablePtr pDrawable, FontPtr pFont)
-{
- PsFontInfoRec *rec;
- PsFontTypeInfoRec *ftir;
-
- if (!(ftir = PsGetFontTypeInfoRec(pDrawable, pFont)))
- return NULL;
-
- if (!(rec = (PsFontInfoRec *)xalloc(sizeof(PsFontInfoRec))))
- return NULL;
- memset(rec, 0, sizeof(PsFontInfoRec));
-
- rec->font = pFont;
- rec->font_fontPrivate = pFont->fontPrivate;
- rec->ftir = ftir;
- rec->next = NULL;
- rec->dfl_name = PsGetFontName(pFont);
- rec->size = PsGetFontSize(pFont, rec->mtx);
-
-#ifdef DEBUG_gisburn
- fprintf(stderr, "PsCreateFontInfoRec: Created PsFontInfoRec '%s'\n",
- ((rec->dfl_name)?(rec->dfl_name):("<null>")));
-#endif /* DEBUG_gisburn */
-
- return rec;
-}
-
-PsFontInfoRec *PsGetFontInfoRec(DrawablePtr pDrawable, FontPtr pFont)
-{
- PsFontInfoRec *rec;
-
- rec = PsFindFontInfoRec(pDrawable, pFont);
- if (rec)
- return rec;
-
- rec = PsCreateFontInfoRec(pDrawable, pFont);
- if (!rec)
- return NULL;
-
- PsAddFontInfoRec(pDrawable, rec);
-
- return rec;
-}
-
-void PsFreeFontInfoRecords( PsContextPrivPtr priv )
-{
- PsFontInfoRec *curr, *next;
- curr = priv->fontInfoRecords;
- while( curr != NULL )
- {
- next = curr->next;
- xfree(curr);
- curr = next;
- }
-
- PsFreeFontTypeInfoRecords(priv);
-
- priv->fontTypeInfoRecords = NULL;
- priv->fontInfoRecords = NULL;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsGC.c b/nx-X11/programs/Xserver/Xprint/ps/PsGC.c
deleted file mode 100644
index 56ff5cdae..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsGC.c
+++ /dev/null
@@ -1,419 +0,0 @@
-/* $Xorg: PsGC.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsGC.c
-** *
-** * Contents: Graphics Context handling for the PS driver
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Ps.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-#include "migc.h"
-#include "scrnintstr.h"
-
-static GCOps PsGCOps =
-{
- PsFillSpans,
- PsSetSpans,
- PsPutImage,
- PsCopyArea,
- PsCopyPlane,
- PsPolyPoint,
- PsPolyLine,
- PsPolySegment,
- PsPolyRectangle,
- PsPolyArc,
- PsFillPolygon,
- PsPolyFillRect,
- PsPolyFillArc,
- PsPolyText8,
- PsPolyText16,
- PsImageText8,
- PsImageText16,
- PsImageGlyphBlt,
- PsPolyGlyphBlt,
- PsPushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-
-static GCFuncs PsGCFuncs =
-{
- PsValidateGC,
- PsChangeGC,
- PsCopyGC,
- PsDestroyGC,
- PsChangeClip,
- PsDestroyClip,
- PsCopyClip
-};
-
-Bool
-PsCreateGC(pGC)
- GCPtr pGC;
-{
- pGC->clientClip = NULL;
- pGC->clientClipType = CT_NONE;
-
- pGC->ops = &PsGCOps;
- pGC->funcs = &PsGCFuncs;
-
- pGC->clientClip = (pointer)xalloc(sizeof(PsClipRec));
- memset(pGC->clientClip, 0, sizeof(PsClipRec));
- return TRUE;
-}
-
-static int
-PsGetDrawablePrivateStuff(
- DrawablePtr pDrawable,
- GC *gc,
- unsigned long *valid,
- PsOutPtr *psOut,
- ColormapPtr *cMap)
-{
- XpContextPtr pCon;
- PsContextPrivPtr cPriv;
- PsScreenPrivPtr sPriv;
-
- switch(pDrawable->type)
- {
- case DRAWABLE_PIXMAP:
- return FALSE;
- case DRAWABLE_WINDOW:
- pCon = PsGetContextFromWindow((WindowPtr)pDrawable);
- if( pCon==NULL ) return FALSE;
- else
- {
- Colormap c;
- ColormapPtr cmap;
-
- c = wColormap((WindowPtr)pDrawable);
- cmap = (ColormapPtr)LookupIDByType(c, RT_COLORMAP);
-
- cPriv = pCon->devPrivates[PsContextPrivateIndex].ptr;
- sPriv = (PsScreenPrivPtr)
- pDrawable->pScreen->devPrivates[PsScreenPrivateIndex].ptr;
- *gc = cPriv->lastGC;
- *valid = cPriv->validGC;
- *psOut = cPriv->pPsOut;
- *cMap = cmap;
- return TRUE;
- }
- default:
- return FALSE;
- }
-}
-
-PsContextPrivPtr
-PsGetPsContextPriv( DrawablePtr pDrawable )
-{
- XpContextPtr pCon;
- PsContextPrivPtr cPriv;
-
- switch(pDrawable->type)
- {
- case DRAWABLE_PIXMAP:
- return FALSE;
- case DRAWABLE_WINDOW:
- pCon = PsGetContextFromWindow((WindowPtr)pDrawable);
- if (pCon != NULL)
- {
- return pCon->devPrivates[PsContextPrivateIndex].ptr;
- }
- }
- return NULL;
-}
-
-int
-PsUpdateDrawableGC(
- GCPtr pGC,
- DrawablePtr pDrawable,
- PsOutPtr *psOut,
- ColormapPtr *cMap)
-{
- GC dGC;
- unsigned long valid;
- int i;
- PsContextPrivPtr cPriv;
- BoxPtr boxes;
-
- if (!PsGetDrawablePrivateStuff(pDrawable, &dGC, &valid, psOut, cMap))
- return FALSE;
-
- switch (pDrawable->type) {
-
- case DRAWABLE_PIXMAP:
- /* we don't support pixmaps yet! */
- return FALSE;
- break;
- case DRAWABLE_WINDOW:
- if( pGC )
- {
- RegionPtr pReg;
- WindowPtr pWin = (WindowPtr)pDrawable;
- Bool freeClip;
- PsClipPtr clp = (PsClipPtr)pGC->clientClip;
- if( clp->outterClips )
- { xfree(clp->outterClips); clp->outterClips = 0; }
- clp->nOutterClips = 0;
- if( pGC->subWindowMode==IncludeInferiors )
- {
- pReg = NotClippedByChildren(pWin);
- freeClip = TRUE;
- }
- else
- {
- pReg = &pWin->clipList;
- freeClip = FALSE;
- }
-
- if( pReg->data )
- {
- boxes = (BoxPtr)((char *)pReg->data+sizeof(long)*2);
- clp->nOutterClips = pReg->data->numRects;
- clp->outterClips =
- (PsRectPtr)xalloc(clp->nOutterClips*sizeof(PsRectRec));
- for( i=0 ; i<clp->nOutterClips ; i++ )
- {
- clp->outterClips[i].x = boxes[i].x1;
- clp->outterClips[i].y = boxes[i].y1;
- clp->outterClips[i].w = (boxes[i].x2-boxes[i].x1)+1;
- clp->outterClips[i].h = (boxes[i].y2-boxes[i].y1)+1;
- }
- }
-
- if( freeClip ) REGION_DESTROY(pGC->pScreen, pReg);
- PsOut_Offset(*psOut, pDrawable->x, pDrawable->y);
- PsOut_Clip(*psOut, pGC->clientClipType, (PsClipPtr)pGC->clientClip);
- }
- cPriv = ( PsGetContextFromWindow( (WindowPtr)pDrawable ) )
- ->devPrivates[PsContextPrivateIndex].ptr;
- break;
- }
- return TRUE;
-}
-
-void
-PsValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable)
-{
- pGC->ops = &PsGCOps;
-}
-
-void
-PsChangeGC(GCPtr pGC, unsigned long changes)
-{
-}
-
-void
-PsCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst)
-{
-}
-
-void
-PsDestroyGC(GCPtr pGC)
-{
- PsDestroyClip(pGC);
- xfree(pGC->clientClip);
-}
-
-void
-PsChangeClip(GCPtr pGC, int type, pointer pValue, int nrects)
-{
- int i;
- PsClipPtr clp = (PsClipPtr)pGC->clientClip;
- RegionPtr rgn;
- BoxPtr boxes;
- xRectangle *rects;
-
- PsDestroyClip(pGC);
- pGC->clientClipType = type;
- switch(type)
- {
- case CT_NONE: break;
- case CT_PIXMAP:
- clp->elms = PsCreateFillElementList((PixmapPtr)pValue, &clp->nElms);
- (*pGC->pScreen->DestroyPixmap)((PixmapPtr)pValue);
- break;
- case CT_REGION:
- rgn = (RegionPtr)pValue;
- boxes = (BoxPtr)((char *)rgn->data+sizeof(long)*2);
- clp->nRects = rgn->data->numRects;
- clp->rects = (PsRectPtr)xalloc(clp->nRects*sizeof(PsRectRec));
- for( i=0 ; i<clp->nRects ; i++ )
- {
- clp->rects[i].x = boxes[i].x1;
- clp->rects[i].y = boxes[i].y1;
- clp->rects[i].w = (boxes[i].x2-boxes[i].x1)+1;
- clp->rects[i].h = (boxes[i].y2-boxes[i].y1)+1;
- }
- REGION_DESTROY(pGC->pScreen, (RegionPtr)pValue);
- break;
- case CT_UNSORTED:
- case CT_YSORTED:
- case CT_YXSORTED:
- case CT_YXBANDED:
- rects = (xRectangle *)pValue;
- clp->nRects = nrects;
- clp->rects = (PsRectPtr)xalloc(clp->nRects*sizeof(PsRectRec));
- for( i=0 ; i<clp->nRects ; i++ )
- {
- clp->rects[i].x = rects[i].x;
- clp->rects[i].y = rects[i].y;
- clp->rects[i].w = rects[i].width;
- clp->rects[i].h = rects[i].height;
- }
- xfree(pValue);
- break;
- }
-}
-
-void
-PsDestroyClip(GCPtr pGC)
-{
- PsClipPtr clp = (PsClipPtr)pGC->clientClip;
-
- if( clp->rects ) xfree(clp->rects);
- if( clp->outterClips ) xfree(clp->outterClips);
- clp->rects = (PsRectPtr)0;
- clp->outterClips = (PsRectPtr)0;
- clp->nRects = 0;
- clp->nOutterClips = 0;
- if( clp->elms ) PsDestroyFillElementList(clp->nElms, clp->elms);
- clp->elms = (PsElmPtr)0;
- clp->nElms = 0;
- pGC->clientClipType = CT_NONE;
-}
-
-void
-PsCopyClip(GCPtr pDst, GCPtr pSrc)
-{
- PsClipPtr src = (PsClipPtr)pSrc->clientClip;
- PsClipPtr dst = (PsClipPtr)pDst->clientClip;
-
- PsDestroyClip(pDst);
- pDst->clientClipType = pSrc->clientClipType;
- *dst = *src;
- if( src->rects )
- {
- dst->rects = (PsRectPtr)xalloc(src->nRects*sizeof(PsRectRec));
- memcpy(dst->rects, src->rects, src->nRects*sizeof(PsRectRec));
- }
- if( src->elms )
- dst->elms = PsCloneFillElementList(src->nElms, src->elms);
-}
-
-
-GCPtr
-PsCreateAndCopyGC(DrawablePtr pDrawable, GCPtr pSrc)
-{
- GCPtr pDst;
-
- if (pSrc == NULL) {
- /* https://freedesktop.org/bugzilla/show_bug.cgi?id=1416 ("'x11perf
- * -copypixpix500' crashes Xprt's PostScript DDX [PsCreateAndCopyGC"):
- * I have no clue whether this is the real fix or just wallpapering
- * over the crash (that's why we warn here loudly when this
- * happens) ... */
- fprintf(stderr, "PsCreateAndCopyGC: pSrc == NULL\n");
- return NULL;
- }
-
- if ((pDst =
- CreateScratchGC(pDrawable->pScreen, pDrawable->depth)) == NULL)
- {
- return NULL;
- }
-
- if (CopyGC(pSrc, pDst,
- GCFunction | GCPlaneMask | GCForeground | GCBackground |
- GCLineWidth | GCLineStyle | GCCapStyle | GCJoinStyle |
- GCFillStyle | GCFillRule | GCTile | GCStipple |
- GCTileStipXOrigin | GCTileStipYOrigin | GCFont |
- GCSubwindowMode | GCGraphicsExposures | GCClipXOrigin |
- GCClipYOrigin | GCClipMask | GCDashOffset | GCDashList |
- GCArcMode) != Success)
- {
- (void)FreeGC(pDst, (GContext)0);
-
- return NULL;
- }
-
- return pDst;
-}
-
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsImageUtil.c b/nx-X11/programs/Xserver/Xprint/ps/PsImageUtil.c
deleted file mode 100644
index 282786564..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsImageUtil.c
+++ /dev/null
@@ -1,329 +0,0 @@
-
-/* $Xorg: PsImageUtil.c,v 1.1 2005/03/25 1:19:56 gisburn Exp $ */
-/*
-Copyright (c) 2005 Roland Mainz <roland.mainz@nrubsig.org>
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-/* Please do not beat me for this ugly code - most of it has been stolen from
- * xc/lib/X11/ImUtil.c */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "servermd.h"
-#include "attributes.h"
-
-static unsigned char const _reverse_byte[0x100] = {
- 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
- 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
- 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
- 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
- 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
- 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
- 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
- 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
- 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
- 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
- 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
- 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
- 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
- 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
- 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
- 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
- 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
- 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
- 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
- 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
- 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
- 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
- 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
- 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
- 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
- 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
- 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
- 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
- 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
- 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
- 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
- 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
-};
-
-static
-int XReverse_Bytes(
- register unsigned char *bpt,
- register int nb)
-{
- do {
- *bpt = _reverse_byte[*bpt];
- bpt++;
- } while (--nb > 0);
- return 0;
-}
-
-/*
- * Data structure for "image" data, used by image manipulation routines.
- */
-typedef struct {
- int width, height; /* size of image */
- int xoffset; /* number of pixels offset in X direction */
- int format; /* XYBitmap, XYPixmap, ZPixmap */
- char *data; /* pointer to image data */
- int byte_order; /* data byte order, LSBFirst, MSBFirst */
- int bitmap_unit; /* quant. of scanline 8, 16, 32 */
- int bitmap_bit_order; /* LSBFirst, MSBFirst */
- int depth; /* depth of image */
- int bytes_per_line; /* accelarator to next line */
- int bits_per_pixel; /* bits per pixel (ZPixmap) */
-} TmpImage;
-
-
-static void xynormalizeimagebits (
- register unsigned char *bp,
- register TmpImage *img)
-{
- register unsigned char c;
-
- if (img->byte_order != img->bitmap_bit_order) {
- switch (img->bitmap_unit) {
-
- case 16:
- c = *bp;
- *bp = *(bp + 1);
- *(bp + 1) = c;
- break;
-
- case 32:
- c = *(bp + 3);
- *(bp + 3) = *bp;
- *bp = c;
- c = *(bp + 2);
- *(bp + 2) = *(bp + 1);
- *(bp + 1) = c;
- break;
- }
- }
- if (img->bitmap_bit_order == MSBFirst)
- XReverse_Bytes (bp, img->bitmap_unit >> 3);
-}
-
-static void znormalizeimagebits (
- register unsigned char *bp,
- register TmpImage *img)
-{
- register unsigned char c;
- switch (img->bits_per_pixel) {
-
- case 4:
- *bp = ((*bp >> 4) & 0xF) | ((*bp << 4) & ~0xF);
- break;
-
- case 16:
- c = *bp;
- *bp = *(bp + 1);
- *(bp + 1) = c;
- break;
-
- case 24:
- c = *(bp + 2);
- *(bp + 2) = *bp;
- *bp = c;
- break;
-
- case 32:
- c = *(bp + 3);
- *(bp + 3) = *bp;
- *bp = c;
- c = *(bp + 2);
- *(bp + 2) = *(bp + 1);
- *(bp + 1) = c;
- break;
- }
-}
-
-/*
- * Macros
- *
- * The ROUNDUP macro rounds up a quantity to the specified boundary,
- * then truncates to bytes.
- *
- * The XYNORMALIZE macro determines whether XY format data requires
- * normalization and calls a routine to do so if needed. The logic in
- * this module is designed for LSBFirst byte and bit order, so
- * normalization is done as required to present the data in this order.
- *
- * The ZNORMALIZE macro performs byte and nibble order normalization if
- * required for Z format data.
- *
- * The XYINDEX macro computes the index to the starting byte (char) boundary
- * for a bitmap_unit containing a pixel with coordinates x and y for image
- * data in XY format.
- *
- * The ZINDEX macro computes the index to the starting byte (char) boundary
- * for a pixel with coordinates x and y for image data in ZPixmap format.
- *
- */
-
-#if defined(Lynx) && defined(ROUNDUP)
-#undef ROUNDUP
-#endif
-
-#define ROUNDUP(nbytes, pad) ((((nbytes) + ((pad)-1)) / (pad)) * ((pad)>>3))
-
-#define XYNORMALIZE(bp, img) \
- if ((img->byte_order == MSBFirst) || (img->bitmap_bit_order == MSBFirst)) \
- xynormalizeimagebits((unsigned char *)(bp), img)
-
-#define ZNORMALIZE(bp, img) \
- if (img->byte_order == MSBFirst) \
- znormalizeimagebits((unsigned char *)(bp), img)
-
-#define XYINDEX(x, y, img) \
- ((y) * img->bytes_per_line) + \
- (((x) + img->xoffset) / img->bitmap_unit) * (img->bitmap_unit >> 3)
-
-#define ZINDEX(x, y, img) ((y) * img->bytes_per_line) + \
- (((x) * img->bits_per_pixel) >> 3)
-
-/*
- * GetPixel
- *
- * Returns the specified pixel. The X and Y coordinates are relative to
- * the origin (upper left [0,0]) of the image. The pixel value is returned
- * in normalized format, i.e. the LSB of the long is the LSB of the pixel.
- * The algorithm used is:
- *
- * copy the source bitmap_unit or Zpixel into temp
- * normalize temp if needed
- * extract the pixel bits into return value
- *
- */
-
-static unsigned long const low_bits_table[] = {
- 0x00000000, 0x00000001, 0x00000003, 0x00000007,
- 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f,
- 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff,
- 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff,
- 0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff,
- 0x000fffff, 0x001fffff, 0x003fffff, 0x007fffff,
- 0x00ffffff, 0x01ffffff, 0x03ffffff, 0x07ffffff,
- 0x0fffffff, 0x1fffffff, 0x3fffffff, 0x7fffffff,
- 0xffffffff
-};
-
-static unsigned long XGetPixel (TmpImage *ximage, int x, int y)
-{
- unsigned long pixel, px;
- register char *src;
- register char *dst;
- register int i, j;
- int bits, nbytes;
- long plane;
-
- if ((ximage->bits_per_pixel | ximage->depth) == 1) {
- src = &ximage->data[XYINDEX(x, y, ximage)];
- dst = (char *)&pixel;
- pixel = 0;
- for (i = ximage->bitmap_unit >> 3; --i >= 0; ) *dst++ = *src++;
- XYNORMALIZE(&pixel, ximage);
- bits = (x + ximage->xoffset) % ximage->bitmap_unit;
- pixel = ((((char *)&pixel)[bits>>3])>>(bits&7)) & 1;
- } else if (ximage->format == XYPixmap) {
- pixel = 0;
- plane = 0;
- nbytes = ximage->bitmap_unit >> 3;
- for (i = ximage->depth; --i >= 0; ) {
- src = &ximage->data[XYINDEX(x, y, ximage)+ plane];
- dst = (char *)&px;
- px = 0;
- for (j = nbytes; --j >= 0; ) *dst++ = *src++;
- XYNORMALIZE(&px, ximage);
- bits = (x + ximage->xoffset) % ximage->bitmap_unit;
- pixel = (pixel << 1) |
- (((((char *)&px)[bits>>3])>>(bits&7)) & 1);
- plane = plane + (ximage->bytes_per_line * ximage->height);
- }
- } else if (ximage->format == ZPixmap) {
- src = &ximage->data[ZINDEX(x, y, ximage)];
- dst = (char *)&px;
- px = 0;
- for (i = (ximage->bits_per_pixel + 7) >> 3; --i >= 0; )
- *dst++ = *src++;
- ZNORMALIZE(&px, ximage);
- pixel = 0;
- for (i=sizeof(unsigned long); --i >= 0; )
- pixel = (pixel << 8) | ((unsigned char *)&px)[i];
- if (ximage->bits_per_pixel == 4) {
- if (x & 1)
- pixel >>= 4;
- else
- pixel &= 0xf;
- }
- } else {
- return 0; /* bad image */
- }
- if (ximage->bits_per_pixel == ximage->depth)
- return pixel;
- else
- return (pixel & low_bits_table[ximage->depth]);
-}
-
-unsigned long
-PsGetImagePixel(char *pImage, int depth, int w, int h, int leftPad, int format,
- int px, int py)
-{
- TmpImage xi = {0};
-
- xi.width = w;
- xi.height = h;
- xi.xoffset = 0/*leftPad*/;
- xi.format = format;
- xi.data = pImage;
- xi.byte_order = IMAGE_BYTE_ORDER;
- xi.bitmap_bit_order = BITMAP_BIT_ORDER;
- xi.bitmap_unit = ((depth > 16)?(32):
- ((depth > 8)?(16):
- ((depth > 1)? (8):
- (1))));
- xi.depth = depth;
- xi.bits_per_pixel = xi.bitmap_unit;
-
- /*
- * compute per line accelerator.
- */
- if (format == ZPixmap)
- xi.bytes_per_line =
- ROUNDUP((xi.bits_per_pixel * xi.width), 32);
- else
- xi.bytes_per_line =
- ROUNDUP((xi.width + xi.xoffset), 32);
-
- return XGetPixel(&xi, px, py);
-}
-
-
-
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsInit.c b/nx-X11/programs/Xserver/Xprint/ps/PsInit.c
deleted file mode 100644
index a11a61ae4..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsInit.c
+++ /dev/null
@@ -1,667 +0,0 @@
-/* $Xorg: PsInit.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsInit.c
-** *
-** * Contents: Initialization code of Ps driver for the print server.
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-
-#include "Ps.h"
-#include "mi.h"
-#include "micmap.h"
-#include "AttrValid.h"
-#include "mfb.h"
-
-#include "windowstr.h"
-#include "DiPrint.h"
-
-static void AllocatePsPrivates(ScreenPtr pScreen);
-static int PsInitContext(XpContextPtr pCon);
-static int PsDestroyContext(XpContextPtr pCon);
-
-int PsScreenPrivateIndex;
-int PsContextPrivateIndex;
-int PsPixmapPrivateIndex;
-int PsWindowPrivateIndex;
-
-#ifdef GLXEXT
-extern void GlxWrapInitVisuals(miInitVisualsProcPtr *);
-#endif /* GLXEXT */
-
-Bool
-InitializePsDriver(ndx, pScreen, argc, argv)
- int ndx;
- ScreenPtr pScreen;
- int argc;
- char **argv;
-{
-#if 0
- int maxXres, maxYres, maxWidth, maxHeight;
- int maxRes, maxDim, numBytes;
- PsScreenPrivPtr pPriv;
-#endif
- char **printerNames;
- int numPrinters;
- int nv, /* total number of visuals */
- nv_1bit, /* number of 8bit visuals */
- nv_8bit, /* number of 8bit visuals */
- nv_12bit, /* number of 12bit visuals */
- nv_14bit, /* number of 14bit visuals */
- nv_16bit, /* number of 16bit visuals */
- nv_24bit, /* number of 24bit visuals*/
- nv_30bit; /* number of 30bit visuals*/
- int nd; /* number of depths */
- int defaultVisualIndex = -1;
- VisualID *vids_1bit,
- *vids_8bit,
- *vids_12bit,
- *vids_14bit,
- *vids_16bit,
- *vids_24bit,
- *vids_30bit;
- VisualPtr visuals;
- DepthPtr depths;
- VisualID defaultVisual;
- int rootDepth;
-
-/*
- * Register this driver's InitContext function with the print
- * extension.
- */
- XpRegisterInitFunc(pScreen, "XP-POSTSCRIPT", PsInitContext);
-
-/*
- * Create and fill in the devPrivate for the PS driver.
- */
- AllocatePsPrivates(pScreen);
-
-#if 0
- pPriv = (PsScreenPrivPtr)pScreen->devPrivates[PsScreenPrivateIndex].ptr;
- pPriv->resDB = rmdb;
-#endif
-
- pScreen->defColormap = (Colormap) FakeClientID(0);
- pScreen->blackPixel = 1;
- pScreen->whitePixel = 0;
- pScreen->QueryBestSize = (QueryBestSizeProcPtr)PsQueryBestSize;
- pScreen->SaveScreen = (SaveScreenProcPtr)_XpBoolNoop;
- pScreen->GetImage = (GetImageProcPtr)_XpVoidNoop;
- pScreen->GetSpans = (GetSpansProcPtr)_XpVoidNoop;
- pScreen->CreateWindow = PsCreateWindow;
- pScreen->DestroyWindow = PsDestroyWindow;
- pScreen->PositionWindow = PsPositionWindow;
- pScreen->ChangeWindowAttributes = PsChangeWindowAttributes;
- pScreen->RealizeWindow = PsMapWindow;
- pScreen->UnrealizeWindow = PsUnmapWindow;
- pScreen->PaintWindowBackground = PsPaintWindow;
- pScreen->PaintWindowBorder = PsPaintWindow;
- pScreen->CloseScreen = PsCloseScreen;
- pScreen->CopyWindow = PsCopyWindow;
- /* XXX Hard routine to write! */
-
-/*
- * These two are going to be VERY different...
- */
- pScreen->CreatePixmap = PsCreatePixmap;
- pScreen->DestroyPixmap = PsDestroyPixmap;
- pScreen->RealizeFont = PsRealizeFont;
- pScreen->UnrealizeFont = PsUnrealizeFont;
- pScreen->CreateGC = PsCreateGC;
- pScreen->CreateColormap = PsCreateColormap;
- pScreen->DestroyColormap = PsDestroyColormap;
- pScreen->InstallColormap = PsInstallColormap;
- pScreen->UninstallColormap = PsUninstallColormap;
- pScreen->ListInstalledColormaps = PsListInstalledColormaps;
- pScreen->StoreColors = PsStoreColors;
- pScreen->ResolveColor = PsResolveColor;
- /* Will BitmapToRegion make any difference at all? */
- pScreen->BitmapToRegion = mfbPixmapToRegion;
-
- visuals = (VisualPtr) xalloc(16*sizeof(VisualRec));
- depths = (DepthPtr) xalloc(16*sizeof(DepthRec));
- vids_1bit = (VisualID *)xalloc(16*sizeof(VisualID));
- vids_8bit = (VisualID *)xalloc(16*sizeof(VisualID));
- vids_12bit = (VisualID *)xalloc(16*sizeof(VisualID));
- vids_14bit = (VisualID *)xalloc(16*sizeof(VisualID));
- vids_16bit = (VisualID *)xalloc(16*sizeof(VisualID));
- vids_24bit = (VisualID *)xalloc(16*sizeof(VisualID));
- vids_30bit = (VisualID *)xalloc(16*sizeof(VisualID));
-
- nv = nv_1bit = nv_8bit = nv_12bit = nv_14bit = nv_16bit = nv_24bit = nv_30bit = nd = 0;
-
-#ifdef PSOUT_USE_DEEPCOLOR
-/* gisburn: 30bit TrueColor has been disabled for now since it causes problems
- * with GLX - see https://bugs.freedesktop.org/show_bug.cgi?id=2868 ("Mesa
- * seems to be unable to handle 30bit TrueColor visuals") for details...
- */
-#ifdef DISABLED_FOR_NOW
- /* TrueColor, 30bit, 10bit per R-,G-,B-gun */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = TrueColor;
- visuals[nv].bitsPerRGBValue = 10;
- visuals[nv].ColormapEntries = 1024;
- visuals[nv].nplanes = 30;
- visuals[nv].redMask = 0X3FF00000;
- visuals[nv].greenMask = 0X000FFC00;
- visuals[nv].blueMask = 0X000003FF;
- visuals[nv].offsetRed = 20;
- visuals[nv].offsetGreen = 10;
- visuals[nv].offsetBlue = 0;
- vids_30bit[nv_30bit] = visuals[nv].vid;
- nv++; nv_30bit++;
-#endif /* DISABLED_FOR_NOW */
-#endif /* PSOUT_USE_DEEPCOLOR */
-
- /* TrueColor, 24bit */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = TrueColor;
- visuals[nv].bitsPerRGBValue = 8;
- visuals[nv].ColormapEntries = 256;
- visuals[nv].nplanes = 24;
- visuals[nv].redMask = 0X00FF0000;
- visuals[nv].greenMask = 0X0000FF00;
- visuals[nv].blueMask = 0X000000FF;
- visuals[nv].offsetRed = 16;
- visuals[nv].offsetGreen = 8;
- visuals[nv].offsetBlue = 0;
- vids_24bit[nv_24bit] = visuals[nv].vid;
- nv++; nv_24bit++;
-
- /* TrueColor, 16bit */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = TrueColor;
- visuals[nv].bitsPerRGBValue = 6;
- visuals[nv].ColormapEntries = 64;
- visuals[nv].nplanes = 16;
- visuals[nv].redMask = 0x0000f800;
- visuals[nv].greenMask = 0x000007e0;
- visuals[nv].blueMask = 0x0000001f;
- visuals[nv].offsetRed = 11;
- visuals[nv].offsetGreen = 5;
- visuals[nv].offsetBlue = 0;
- vids_16bit[nv_16bit] = visuals[nv].vid;
- nv++; nv_16bit++;
-
-#ifdef PSOUT_USE_DEEPCOLOR
- /* PostScript Level 2 and above, colors can have 12 bits per component
- * (36 bit for RGB) */
-
- /* PseudoColor, 14bit (15bit won't work as |ColormapEntries==32768|
- * is too large for a |signed short|... xx@@!!!... ;-( ) */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = PseudoColor;
- visuals[nv].bitsPerRGBValue = 12;
- visuals[nv].ColormapEntries = 16384;
- visuals[nv].nplanes = 14;
- visuals[nv].redMask = 0x0;
- visuals[nv].greenMask = 0x0;
- visuals[nv].blueMask = 0x0;
- visuals[nv].offsetRed = 0x0;
- visuals[nv].offsetGreen = 0x0;
- visuals[nv].offsetBlue = 0x0;
- vids_14bit[nv_14bit] = visuals[nv].vid;
- nv++; nv_14bit++;
-
- /* PseudoColor, 12bit */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = PseudoColor;
- visuals[nv].bitsPerRGBValue = 12;
- visuals[nv].ColormapEntries = 4096;
- visuals[nv].nplanes = 12;
- visuals[nv].redMask = 0x0;
- visuals[nv].greenMask = 0x0;
- visuals[nv].blueMask = 0x0;
- visuals[nv].offsetRed = 0x0;
- visuals[nv].offsetGreen = 0x0;
- visuals[nv].offsetBlue = 0x0;
- vids_12bit[nv_12bit] = visuals[nv].vid;
- defaultVisualIndex = nv;
- nv++; nv_12bit++;
-
- /* GrayScale, 12bit, 12bit per R-,G-,B-gun */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = GrayScale;
- visuals[nv].bitsPerRGBValue = 12;
- visuals[nv].ColormapEntries = 4096;
- visuals[nv].nplanes = 12;
- visuals[nv].redMask = 0x0;
- visuals[nv].greenMask = 0x0;
- visuals[nv].blueMask = 0x0;
- visuals[nv].offsetRed = 0x0;
- visuals[nv].offsetGreen = 0x0;
- visuals[nv].offsetBlue = 0x0;
- vids_12bit[nv_12bit] = visuals[nv].vid;
- nv++; nv_12bit++;
-
- /* StaticGray, 12bit, 12bit per R-,G-,B-gun */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = StaticGray;
- visuals[nv].bitsPerRGBValue = 12;
- visuals[nv].ColormapEntries = 4096;
- visuals[nv].nplanes = 12;
- visuals[nv].redMask = 0x0;
- visuals[nv].greenMask = 0x0;
- visuals[nv].blueMask = 0x0;
- visuals[nv].offsetRed = 0x0;
- visuals[nv].offsetGreen = 0x0;
- visuals[nv].offsetBlue = 0x0;
- vids_12bit[nv_12bit] = visuals[nv].vid;
- nv++; nv_12bit++;
-#endif /* PSOUT_USE_DEEPCOLOR */
-
- /* PseudoColor, 8bit */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = PseudoColor;
- visuals[nv].bitsPerRGBValue = 8;
- visuals[nv].ColormapEntries = 256;
- visuals[nv].nplanes = 8;
- visuals[nv].redMask = 0x0;
- visuals[nv].greenMask = 0x0;
- visuals[nv].blueMask = 0x0;
- visuals[nv].offsetRed = 0x0;
- visuals[nv].offsetGreen = 0x0;
- visuals[nv].offsetBlue = 0x0;
- vids_8bit[nv_8bit] = visuals[nv].vid;
-#ifndef PSOUT_USE_DEEPCOLOR
- defaultVisualIndex = nv;
-#endif /* !PSOUT_USE_DEEPCOLOR */
- nv++; nv_8bit++;
-
- /* GrayScale, 8bit */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = GrayScale;
- visuals[nv].bitsPerRGBValue = 8;
- visuals[nv].ColormapEntries = 256;
- visuals[nv].nplanes = 8;
- visuals[nv].redMask = 0x0;
- visuals[nv].greenMask = 0x0;
- visuals[nv].blueMask = 0x0;
- visuals[nv].offsetRed = 0x0;
- visuals[nv].offsetGreen = 0x0;
- visuals[nv].offsetBlue = 0x0;
- vids_8bit[nv_8bit] = visuals[nv].vid;
- nv++; nv_8bit++;
-
- /* StaticGray, 8bit */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = StaticGray;
- visuals[nv].bitsPerRGBValue = 8;
- visuals[nv].ColormapEntries = 256;
- visuals[nv].nplanes = 8;
- visuals[nv].redMask = 0x0;
- visuals[nv].greenMask = 0x0;
- visuals[nv].blueMask = 0x0;
- visuals[nv].offsetRed = 0x0;
- visuals[nv].offsetGreen = 0x0;
- visuals[nv].offsetBlue = 0x0;
- vids_8bit[nv_8bit] = visuals[nv].vid;
- nv++; nv_8bit++;
-
- /* StaticGray, 1bit */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = StaticGray;
- visuals[nv].bitsPerRGBValue = 1;
- visuals[nv].ColormapEntries = 2;
- visuals[nv].nplanes = 1;
- visuals[nv].redMask = 0x0;
- visuals[nv].greenMask = 0x0;
- visuals[nv].blueMask = 0x0;
- visuals[nv].offsetRed = 0x0;
- visuals[nv].offsetGreen = 0x0;
- visuals[nv].offsetBlue = 0x0;
- vids_1bit[nv_1bit] = visuals[nv].vid;
- nv++; nv_1bit++;
-
- if( nv_30bit > 0 )
- {
- depths[nd].depth = 30;
- depths[nd].numVids = nv_30bit;
- depths[nd].vids = vids_30bit;
- nd++;
- }
-
- if( nv_24bit > 0 )
- {
- depths[nd].depth = 24;
- depths[nd].numVids = nv_24bit;
- depths[nd].vids = vids_24bit;
- nd++;
- }
-
- if( nv_16bit > 0 )
- {
- depths[nd].depth = 16;
- depths[nd].numVids = nv_16bit;
- depths[nd].vids = vids_16bit;
- nd++;
- }
-
- if( nv_14bit > 0 )
- {
- depths[nd].depth = 14;
- depths[nd].numVids = nv_14bit;
- depths[nd].vids = vids_14bit;
- nd++;
- }
-
- if( nv_12bit > 0 )
- {
- depths[nd].depth = 12;
- depths[nd].numVids = nv_12bit;
- depths[nd].vids = vids_12bit;
- nd++;
- }
-
- if( nv_8bit > 0 )
- {
- depths[nd].depth = 8;
- depths[nd].numVids = nv_8bit;
- depths[nd].vids = vids_8bit;
- nd++;
- }
-
- if( nv_1bit > 0 )
- {
- depths[nd].depth = 1;
- depths[nd].numVids = nv_1bit;
- depths[nd].vids = vids_1bit;
- nd++;
- }
-
- /* Defaul visual is 12bit PseudoColor */
- defaultVisual = visuals[defaultVisualIndex].vid;
- rootDepth = visuals[defaultVisualIndex].nplanes;
-
-#ifdef GLXEXT
- {
- miInitVisualsProcPtr proc = NULL;
-
- GlxWrapInitVisuals(&proc);
- /* GlxInitVisuals ignores the last three arguments. */
- proc(&visuals, &depths, &nv, &nd,
- &rootDepth, &defaultVisual, 0, 0, 0);
- }
-#endif /* GLXEXT */
-
- miScreenInit(pScreen, (pointer)0,
- pScreen->width, pScreen->height,
- (int) (pScreen->width / (pScreen->mmWidth / 25.40)),
- (int) (pScreen->height / (pScreen->mmHeight / 25.40)),
- 0, rootDepth, nd,
- depths, defaultVisual, nv, visuals);
-
- if( miCreateDefColormap(pScreen)==FALSE ) return FALSE;
-
-/*scalingScreenInit(pScreen);*/
-
- return TRUE;
-}
-
-static void
-AllocatePsPrivates(ScreenPtr pScreen)
-{
- static unsigned long PsGeneration = 0;
-
- if((unsigned long)PsGeneration != serverGeneration)
- {
- PsScreenPrivateIndex = AllocateScreenPrivateIndex();
-
- PsWindowPrivateIndex = AllocateWindowPrivateIndex();
- AllocateWindowPrivate(pScreen, PsWindowPrivateIndex,
- sizeof(PsWindowPrivRec));
-
- PsContextPrivateIndex = XpAllocateContextPrivateIndex();
- XpAllocateContextPrivate(PsContextPrivateIndex,
- sizeof(PsContextPrivRec));
-
- PsPixmapPrivateIndex = AllocatePixmapPrivateIndex();
- AllocatePixmapPrivate(pScreen, PsPixmapPrivateIndex,
- sizeof(PsPixmapPrivRec));
-
- PsGeneration = serverGeneration;
- }
- pScreen->devPrivates[PsScreenPrivateIndex].ptr =
- (pointer)xalloc(sizeof(PsScreenPrivRec));
-}
-
-/*
- * PsInitContext
- *
- * Establish the appropriate values for a PrintContext used with the PS
- * driver.
- */
-
-static char DOC_ATT_SUPP[]="document-attributes-supported";
-static char DOC_ATT_VAL[]="document-format xp-listfonts-modes";
-static char JOB_ATT_SUPP[]="job-attributes-supported";
-static char JOB_ATT_VAL[]="";
-static char PAGE_ATT_SUPP[]="xp-page-attributes-supported";
-static char PAGE_ATT_VAL[]="content-orientation default-printer-resolution \
-default-input-tray default-medium plex xp-listfonts-modes";
-
-static int
-PsInitContext(pCon)
- XpContextPtr pCon;
-{
- XpDriverFuncsPtr pFuncs;
- PsContextPrivPtr pConPriv;
- char *server, *attrStr;
-
- /*
- * Initialize the attribute store for this printer.
- */
- XpInitAttributes(pCon);
-
- /*
- * Initialize the function pointers
- */
- pFuncs = &(pCon->funcs);
- pFuncs->StartJob = PsStartJob;
- pFuncs->EndJob = PsEndJob;
- pFuncs->StartDoc = PsStartDoc;
- pFuncs->EndDoc = PsEndDoc;
- pFuncs->StartPage = PsStartPage;
- pFuncs->EndPage = PsEndPage;
- pFuncs->PutDocumentData = PsDocumentData;
- pFuncs->GetDocumentData = PsGetDocumentData;
- pFuncs->GetAttributes = PsGetAttributes;
- pFuncs->SetAttributes = PsSetAttributes;
- pFuncs->AugmentAttributes = PsAugmentAttributes;
- pFuncs->GetOneAttribute = PsGetOneAttribute;
- pFuncs->DestroyContext = PsDestroyContext;
- pFuncs->GetMediumDimensions = PsGetMediumDimensions;
- pFuncs->GetReproducibleArea = PsGetReproducibleArea;
- pFuncs->SetImageResolution = PsSetImageResolution;
-
- /*
- * Set up the context privates
- */
- pConPriv =
- (PsContextPrivPtr)pCon->devPrivates[PsContextPrivateIndex].ptr;
-
- memset(pConPriv, 0, sizeof(PsContextPrivRec));
- pConPriv->jobFileName = (char *)NULL;
- pConPriv->pJobFile = (FILE *)NULL;
- pConPriv->dash = (unsigned char *)NULL;
- pConPriv->validGC = 0;
- pConPriv->getDocClient = (ClientPtr)NULL;
- pConPriv->getDocBufSize = 0;
- pConPriv->pPsOut = NULL;
- pConPriv->fontInfoRecords = NULL;
- pConPriv->fontTypeInfoRecords = NULL;
-
- /*
- * document-attributes-supported
- */
- server = XpGetOneAttribute( pCon, XPServerAttr, DOC_ATT_SUPP );
- if ((attrStr = (char *) xalloc(strlen(server) +
- strlen(DOC_ATT_SUPP) + strlen(DOC_ATT_VAL)
- + strlen(PAGE_ATT_VAL) + 8)) == NULL)
- {
- return BadAlloc;
- }
- sprintf(attrStr, "*%s:\t%s %s %s",
- DOC_ATT_SUPP, server, DOC_ATT_VAL, PAGE_ATT_VAL);
- XpAugmentAttributes( pCon, XPPrinterAttr, attrStr);
- xfree(attrStr);
-
- /*
- * job-attributes-supported
- */
- server = XpGetOneAttribute( pCon, XPServerAttr, JOB_ATT_SUPP );
- if ((attrStr = (char *) xalloc(strlen(server) + strlen(JOB_ATT_SUPP) +
- strlen(JOB_ATT_VAL) + 8)) == NULL)
- {
- return BadAlloc;
- }
- sprintf(attrStr, "*%s:\t%s %s", JOB_ATT_SUPP, server, JOB_ATT_VAL);
- XpAugmentAttributes(pCon, XPPrinterAttr, attrStr);
- xfree(attrStr);
-
- /*
- * xp-page-attributes-supported
- */
- server = XpGetOneAttribute( pCon, XPServerAttr, PAGE_ATT_SUPP );
- if ((attrStr = (char *) xalloc(strlen(server) + strlen(PAGE_ATT_SUPP) +
- strlen(PAGE_ATT_VAL) + 8)) == NULL)
- {
- return BadAlloc;
- }
- sprintf(attrStr, "*%s:\t%s %s", PAGE_ATT_SUPP, server, PAGE_ATT_VAL);
- XpAugmentAttributes(pCon, XPPrinterAttr, attrStr);
- xfree(attrStr);
-
- /*
- * Validate the attribute pools
- */
- XpValidateAttributePool(pCon, XPPrinterAttr, &PsValidatePoolsRec);
- XpValidateAttributePool(pCon, XPDocAttr, &PsValidatePoolsRec);
- XpValidateAttributePool(pCon, XPJobAttr, &PsValidatePoolsRec);
- XpValidateAttributePool(pCon, XPPageAttr, &PsValidatePoolsRec);
-
- return Success;
-}
-
-static Bool
-PsDestroyContext(pCon)
- XpContextPtr pCon;
-{
- PsContextPrivPtr pConPriv =
- (PsContextPrivPtr)pCon->devPrivates[PsContextPrivateIndex].ptr;
-
- if( pConPriv->pJobFile!=(FILE *)NULL )
- {
- fclose(pConPriv->pJobFile);
- pConPriv->pJobFile = NULL;
- }
- if( pConPriv->jobFileName!=(char *)NULL )
- {
- unlink(pConPriv->jobFileName);
- xfree(pConPriv->jobFileName);
- pConPriv->jobFileName = (char *)NULL;
- }
-
- PsFreeFontInfoRecords(pConPriv);
-
- /* Reset context to make sure we do not use any stale/invalid/obsolete data */
- memset(pConPriv, 0, sizeof(PsContextPrivRec));
-
-/*### free up visuals/depths ###*/
-
- return Success;
-}
-
-XpContextPtr
-PsGetContextFromWindow(win)
- WindowPtr win;
-{
- PsWindowPrivPtr pPriv;
-
- while( win )
- {
- pPriv = (PsWindowPrivPtr)win->devPrivates[PsWindowPrivateIndex].ptr;
- if( pPriv->validContext ) return pPriv->context;
- win = win->parent;
- }
-
- return NULL;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsLine.c b/nx-X11/programs/Xserver/Xprint/ps/PsLine.c
deleted file mode 100644
index 2524769c8..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsLine.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/* $Xorg: PsLine.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsLine.c
-** *
-** * Contents: Line drawing routines for the PS driver
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Ps.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-
-void
-PsPolyLine(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int mode,
- int nPoints,
- xPoint *pPoints)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return;
-
- disp = PsGetFreeDisplayBlock(priv);
-
- elm = &disp->elms[disp->nelms];
- elm->type = PolyLineCmd;
- elm->gc = gc;
- elm->c.polyPts.mode = mode;
- elm->c.polyPts.nPoints = nPoints;
- elm->c.polyPts.pPoints = (xPoint *)xalloc(nPoints*sizeof(xPoint));
- memcpy(elm->c.polyPts.pPoints, pPoints, nPoints*sizeof(xPoint));
- disp->nelms += 1;
- }
- else
- {
- int i;
- PsOutPtr psOut;
- PsPointPtr pts;
- ColormapPtr cMap;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE ) return;
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsOut_Color(psOut, PsGetPixelColor(cMap, pGC->fgPixel));
- PsLineAttrs(psOut, pGC, cMap);
- pts = (PsPointPtr)xalloc(sizeof(PsPointRec)*nPoints);
- if( mode==CoordModeOrigin )
- {
- for( i=0 ; i<nPoints ; i++ )
- { pts[i].x = pPoints[i].x; pts[i].y = pPoints[i].y; }
- }
- else
- {
- pts[0].x = pPoints[0].x; pts[0].y = pPoints[0].y;
- for( i=1 ; i<nPoints ; i++ )
- {
- pts[i].x = pts[i-1].x+pPoints[i].x;
- pts[i].y = pts[i-1].y+pPoints[i].y;
- }
- }
- PsOut_Lines(psOut, nPoints, pts);
- xfree(pts);
- }
-}
-
-void
-PsPolySegment(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nSegments,
- xSegment *pSegments)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return;
-
- disp = PsGetFreeDisplayBlock(priv);
-
- elm = &disp->elms[disp->nelms];
- elm->type = PolySegmentCmd;
- elm->gc = gc;
- elm->c.segments.nSegments = nSegments;
- elm->c.segments.pSegments = (xSegment *)xalloc(nSegments*sizeof(xSegment));
- memcpy(elm->c.segments.pSegments, pSegments, nSegments*sizeof(xSegment));
- disp->nelms += 1;
- }
- else
- {
- int i;
- PsOutPtr psOut;
- PsPointRec pts[2];
- ColormapPtr cMap;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE ) return;
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsOut_Color(psOut, PsGetPixelColor(cMap, pGC->fgPixel));
- PsLineAttrs(psOut, pGC, cMap);
- for( i=0 ; i<nSegments ; i++ )
- {
- pts[0].x = pSegments[i].x1;
- pts[0].y = pSegments[i].y1;
- pts[1].x = pSegments[i].x2;
- pts[1].y = pSegments[i].y2;
- PsOut_Lines(psOut, 2, pts);
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsMisc.c b/nx-X11/programs/Xserver/Xprint/ps/PsMisc.c
deleted file mode 100644
index b8a3ba854..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsMisc.c
+++ /dev/null
@@ -1,324 +0,0 @@
-/* $Xorg: PsMisc.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsMisc.c
-** *
-** * Contents: Miscellaneous code for Ps driver.
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/Xos.h> /* for SIGCLD on pre-POSIX systems */
-#include <stdio.h>
-#include "Ps.h"
-
-#include "cursor.h"
-#include "resource.h"
-
-#include "windowstr.h"
-#include "propertyst.h"
-
-
-/*ARGSUSED*/
-void
-PsQueryBestSize(
- int type,
- short *pwidth,
- short *pheight,
- ScreenPtr pScreen)
-{
- unsigned width, highBit;
-
- switch(type)
- {
- case CursorShape:
- *pwidth = 0;
- *pheight = 0;
- break;
- case TileShape:
- case StippleShape:
- width = *pwidth;
- if (!width) break;
- /* Return the nearest power of two >= what they gave us */
- highBit = 0x80000000;
- /* Find the highest 1 bit in the given width */
- while(!(highBit & width))
- highBit >>= 1;
- /* If greater than that then return the next power of two */
- if((highBit - 1) & width)
- highBit <<= 1;
- *pwidth = highBit;
- /* height is a don't-care */
- break;
- }
-}
-
-/*
- * PsGetMediumDimensions is installed in the GetMediumDimensions field
- * of each Ps-initialized context.
- */
-int
-PsGetMediumDimensions(XpContextPtr pCon, CARD16 *width, CARD16 *height)
-{
- XpGetMediumDimensions(pCon, width, height);
- return Success;
-}
-
-/*
- * PsGetReproducibleArea is installed in the GetReproducibleArea field
- * of each Ps-initialized context.
- */
-int
-PsGetReproducibleArea(XpContextPtr pCon, xRectangle *pRect)
-{
- XpGetReproductionArea(pCon, pRect);
- return Success;
-}
-
-/*
- * PsSetImageResolution is installed in the SetImageResolution field
- * of each Ps-initialized context.
- */
-int
-PsSetImageResolution(XpContextPtr pCon, int imageRes, Bool *status)
-{
- pCon->imageRes = imageRes;
- *status = True;
- return Success;
-}
-
-/*
- * GetPropString searches the window heirarchy from pWin up looking for
- * a property by the name of propName. If found, returns the property's
- * value. If not, it returns NULL.
- */
-/*
-char *
-GetPropString(
- WindowPtr pWin,
- char *propName)
-{
- Atom atom;
- PropertyPtr pProp = (PropertyPtr)NULL;
- char *retVal;
-
- atom = MakeAtom(propName, strlen(propName), FALSE);
- if(atom != BAD_RESOURCE)
- {
- WindowPtr pPropWin;
- int n;
-*/
-
- /*
- * The atom has been defined, but it might only exist as a
- * property on an unrelated window.
- */
-/*
- for(pPropWin = pWin; pPropWin != (WindowPtr)NULL;
- pPropWin = pPropWin->parent)
- {
- for(pProp = (PropertyPtr)(wUserProps(pPropWin));
- pProp != (PropertyPtr)NULL;
- pProp = pProp->next)
- {
- if (pProp->propertyName == atom)
- break;
- }
- if(pProp != (PropertyPtr)NULL)
- break;
- }
- if(pProp == (PropertyPtr)NULL)
- return (char *)NULL;
-
- n = (pProp->format/8) * pProp->size; *//* size (bytes) of prop */
-/*
- retVal = (char *)xalloc(n + 1);
- (void)memcpy((void *)retVal, (void *)pProp->data, n);
- retVal[n] = '\0';
-
- return retVal;
- }
-
- return (char *)NULL;
-}
-
-#include <signal.h>
-
-*/
-/* ARGSUSED */
-/*
-static void SigchldHndlr (int dummy)
-{
- int status, w;
- struct sigaction act;
- sigfillset(&act.sa_mask);
- act.sa_flags = 0;
- act.sa_handler = SigchldHndlr;
-
- w = wait (&status);
-
-*/
- /*
- * Is this really necessary?
- */
-/*
- sigaction(SIGCHLD, &act, (struct sigaction *)NULL);
-}
-*/
-
-/*
- * SystemCmd provides a wrapper for the 'system' library call. The call
- * appears to be sensitive to the handling of SIGCHLD, so this wrapper
- * sets the status to SIG_DFL, and then resets the established handler
- * after system returns.
- */
-/*
-int
-SystemCmd(char *cmdStr)
-{
- int status;
- struct sigaction newAct, oldAct;
- sigfillset(&newAct.sa_mask);
- newAct.sa_flags = 0;
- newAct.sa_handler = SIG_DFL;
- sigfillset(&oldAct.sa_mask);
- oldAct.sa_flags = 0;
- oldAct.sa_handler = SigchldHndlr;
-
-*/
- /*
- * get the old handler, and set the action to IGN
- */
-/*
- sigaction(SIGCHLD, &newAct, &oldAct);
-
- status = system (cmdStr);
-
- sigaction(SIGCHLD, &oldAct, (struct sigaction *)NULL);
- return status;
-}
-*/
-
-Bool
-PsCloseScreen(
- int index,
- ScreenPtr pScreen)
-{
- return TRUE;
-}
-
-void
-PsLineAttrs(
- PsOutPtr psOut,
- GCPtr pGC,
- ColormapPtr cMap)
-{
- int i;
- int nDsh;
- int dshOff;
- int *dsh;
- PsCapEnum cap;
- PsJoinEnum join;
-
- switch(pGC->capStyle) {
- case CapButt: cap = PsCButt; break;
- case CapRound: cap = PsCRound; break;
- case CapProjecting: cap = PsCSquare; break;
- default: cap = PsCButt; break; }
- switch(pGC->joinStyle) {
- case JoinMiter: join = PsJMiter; break;
- case JoinRound: join = PsJRound; break;
- case JoinBevel: join = PsJBevel; break;
- default: join = PsJBevel; break; }
- if( pGC->lineStyle==LineSolid ) { nDsh = dshOff = 0; dsh = (int *)0; }
- else
- {
- nDsh = pGC->numInDashList;
- dshOff = pGC->dashOffset;
- if( !nDsh ) dsh = (int *)0;
- else
- {
- dsh = (int *)xalloc(sizeof(int)*nDsh);
- for( i=0 ; i<nDsh ; i++ ) dsh[i] = (int)pGC->dash[i]&0xFF;
- }
- }
-
- if( pGC->lineStyle!=LineDoubleDash )
- PsOut_LineAttrs(psOut, (int)pGC->lineWidth,
- cap, join, nDsh, dsh, dshOff, -1);
- else
- PsOut_LineAttrs(psOut, (int)pGC->lineWidth,
- cap, join, nDsh, dsh, dshOff,
- PsGetPixelColor(cMap, pGC->bgPixel));
- if( nDsh && dsh ) xfree(dsh);
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsPixel.c b/nx-X11/programs/Xserver/Xprint/ps/PsPixel.c
deleted file mode 100644
index 2197f0ab9..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsPixel.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/* $Xorg: PsPixel.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsPixel.c
-** *
-** * Contents: Pixel-drawing code for the PS DDX driver
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1995 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-
-#include "windowstr.h"
-#include "gcstruct.h"
-
-#include "Ps.h"
-
-void
-PsPolyPoint(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int mode,
- int nPoints,
- xPoint *pPoints)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return;
-
- disp = PsGetFreeDisplayBlock(priv);
-
- elm = &disp->elms[disp->nelms];
- elm->type = PolyPointCmd;
- elm->gc = gc;
- elm->c.polyPts.mode = mode;
- elm->c.polyPts.nPoints = nPoints;
- elm->c.polyPts.pPoints = (xPoint *)xalloc(nPoints*sizeof(xPoint));
- memcpy(elm->c.polyPts.pPoints, pPoints, nPoints*sizeof(xPoint));
- disp->nelms += 1;
- }
- else
- {
- int i;
- PsOutPtr psOut;
- PsPointPtr pts;
- ColormapPtr cMap;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE ) return;
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsOut_Color(psOut, PsGetPixelColor(cMap, pGC->fgPixel));
- pts = (PsPointPtr)xalloc(sizeof(PsPointRec)*nPoints);
- if( mode==CoordModeOrigin )
- {
- for( i=0 ; i<nPoints ; i++ )
- { pts[i].x = pPoints[i].x; pts[i].y = pPoints[i].y; }
- }
- else
- {
- pts[0].x = pPoints[0].x; pts[0].y = pPoints[0].y;
- for( i=1 ; i<nPoints ; i++ )
- {
- pts[i].x = pts[i-1].x+pPoints[i].x;
- pts[i].y = pts[i-1].y+pPoints[i].y;
- }
- }
- PsOut_Points(psOut, nPoints, pts);
- xfree(pts);
- }
-}
-
-void
-PsPushPixels(
- GCPtr pGC,
- PixmapPtr pBitmap,
- DrawablePtr pDrawable,
- int width,
- int height,
- int x,
- int y)
-{
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsPixmap.c b/nx-X11/programs/Xserver/Xprint/ps/PsPixmap.c
deleted file mode 100644
index a698b375e..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsPixmap.c
+++ /dev/null
@@ -1,617 +0,0 @@
-/* $Xorg: PsPixmap.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsPixmap.c
-** *
-** * Contents: Pixmap functions for the PS DDX driver
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1995 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "windowstr.h"
-#include "gcstruct.h"
-
-#include "Ps.h"
-
-#define _BitsPerPixel(d) (\
- (1 << PixmapWidthPaddingInfo[d].padBytesLog2) * 8 / \
- (PixmapWidthPaddingInfo[d].padRoundUp+1))
-
-PixmapPtr
-PsCreatePixmap(
- ScreenPtr pScreen,
- int width,
- int height,
- int depth)
-{
- PixmapPtr pPixmap;
-
- pPixmap = (PixmapPtr)xcalloc(1, sizeof(PixmapRec));
- if( !pPixmap) return NullPixmap;
- pPixmap->drawable.type = DRAWABLE_PIXMAP;
- pPixmap->drawable.class = 0;
- pPixmap->drawable.pScreen = pScreen;
- pPixmap->drawable.depth = depth;
- pPixmap->drawable.bitsPerPixel = _BitsPerPixel(depth);
- pPixmap->drawable.id = 0;
- pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- pPixmap->drawable.x = 0;
- pPixmap->drawable.y = 0;
- pPixmap->drawable.width = width;
- pPixmap->drawable.height = height;
- pPixmap->devKind = 0;
- pPixmap->refcnt = 1;
-
- pPixmap->devPrivate.ptr = (PsPixmapPrivPtr)xcalloc(1, sizeof(PsPixmapPrivRec));
- if( !pPixmap->devPrivate.ptr )
- { xfree(pPixmap); return NullPixmap; }
- return pPixmap;
-}
-
-/* PsScrubPixmap: Remove all content from a pixmap (used by
- * |PsPolyFillRect()| when the "solid fill" operation covers
- * the whole pixmap) */
-void
-PsScrubPixmap(PixmapPtr pPixmap)
-{
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pPixmap->devPrivate.ptr;
- DisplayListPtr disp = priv->dispList;
-
- while( disp )
- {
- int i;
- DisplayListPtr oldDisp = disp;
- disp = disp->next;
- for( i=0 ; i<oldDisp->nelms ; i++ )
- {
- DisplayElmPtr elm = &oldDisp->elms[i];
-
- switch(elm->type)
- {
- case PolyPointCmd:
- case PolyLineCmd:
- if( elm->c.polyPts.pPoints ) xfree(elm->c.polyPts.pPoints);
- break;
- case PolySegmentCmd:
- if( elm->c.segments.pSegments ) xfree(elm->c.segments.pSegments);
- break;
- case PolyRectangleCmd:
- if( elm->c.rects.pRects ) xfree(elm->c.rects.pRects);
- break;
- case FillPolygonCmd:
- if( elm->c.polyPts.pPoints ) xfree(elm->c.polyPts.pPoints);
- break;
- case PolyFillRectCmd:
- if( elm->c.rects.pRects ) xfree(elm->c.rects.pRects);
- break;
- case PolyArcCmd:
- if( elm->c.arcs.pArcs ) xfree(elm->c.arcs.pArcs);
- break;
- case PolyFillArcCmd:
- if( elm->c.arcs.pArcs ) xfree(elm->c.arcs.pArcs);
- break;
- case Text8Cmd:
- case TextI8Cmd:
- if( elm->c.text8.string ) xfree(elm->c.text8.string);
- break;
- case Text16Cmd:
- case TextI16Cmd:
- if( elm->c.text16.string ) xfree(elm->c.text16.string);
- break;
- case PutImageCmd:
- if( elm->c.image.pData ) xfree(elm->c.image.pData);
- break;
- case BeginFrameCmd:
- break;
- case EndFrameCmd:
- break;
- }
-
- if (elm->type != BeginFrameCmd && elm->type != EndFrameCmd) {
- (void) FreeGC(elm->gc, (GContext) 0);
- }
- }
- xfree(oldDisp);
- }
-
- priv->dispList = NULL;
-}
-
-Bool
-PsDestroyPixmap(PixmapPtr pPixmap)
-{
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pPixmap->devPrivate.ptr;
- DisplayListPtr disp = priv->dispList;
-
- if( --pPixmap->refcnt ) return TRUE;
-
- PsScrubPixmap(pPixmap);
-
- xfree(priv);
- xfree(pPixmap);
- return TRUE;
-}
-
-DisplayListPtr
-PsGetFreeDisplayBlock(PsPixmapPrivPtr priv)
-{
- DisplayListPtr disp = priv->dispList;
-
- for(; disp ; disp=disp->next )
- {
- if( disp->nelms>=DPY_BLOCKSIZE && disp->next ) continue;
- if( disp->nelms<DPY_BLOCKSIZE ) return(disp);
- disp->next = (DisplayListPtr)xcalloc(1, sizeof(DisplayListRec));
- disp->next->next = (DisplayListPtr)0;
- disp->next->nelms = 0;
- }
- disp = (DisplayListPtr)xcalloc(1, sizeof(DisplayListRec));
- disp->next = (DisplayListPtr)0;
- disp->nelms = 0;
- priv->dispList = disp;
- return(disp);
-}
-
-void
-PsReplay(DisplayElmPtr elm, DrawablePtr pDrawable)
-{
- switch(elm->type)
- {
- case PolyPointCmd:
- PsPolyPoint(pDrawable, elm->gc, elm->c.polyPts.mode,
- elm->c.polyPts.nPoints, elm->c.polyPts.pPoints);
- break;
- case PolyLineCmd:
- PsPolyLine(pDrawable, elm->gc, elm->c.polyPts.mode,
- elm->c.polyPts.nPoints, elm->c.polyPts.pPoints);
- break;
- case PolySegmentCmd:
- PsPolySegment(pDrawable, elm->gc, elm->c.segments.nSegments,
- elm->c.segments.pSegments);
- break;
- case PolyRectangleCmd:
- PsPolyRectangle(pDrawable, elm->gc, elm->c.rects.nRects,
- elm->c.rects.pRects);
- break;
- case FillPolygonCmd:
- PsFillPolygon(pDrawable, elm->gc, 0, elm->c.polyPts.mode,
- elm->c.polyPts.nPoints, elm->c.polyPts.pPoints);
- break;
- case PolyFillRectCmd:
- PsPolyFillRect(pDrawable, elm->gc, elm->c.rects.nRects,
- elm->c.rects.pRects);
- break;
- case PolyArcCmd:
- PsPolyArc(pDrawable, elm->gc, elm->c.arcs.nArcs, elm->c.arcs.pArcs);
- break;
- case PolyFillArcCmd:
- PsPolyFillArc(pDrawable, elm->gc, elm->c.arcs.nArcs, elm->c.arcs.pArcs);
- break;
- case Text8Cmd:
- PsPolyText8(pDrawable, elm->gc, elm->c.text8.x, elm->c.text8.y,
- elm->c.text8.count, elm->c.text8.string);
- break;
- case Text16Cmd:
- PsPolyText16(pDrawable, elm->gc, elm->c.text16.x, elm->c.text16.y,
- elm->c.text16.count, elm->c.text16.string);
- break;
- case TextI8Cmd:
- PsImageText8(pDrawable, elm->gc, elm->c.text8.x, elm->c.text8.y,
- elm->c.text8.count, elm->c.text8.string);
- break;
- case TextI16Cmd:
- PsImageText16(pDrawable, elm->gc, elm->c.text16.x, elm->c.text16.y,
- elm->c.text16.count, elm->c.text16.string);
- break;
- case PutImageCmd:
- PsPutScaledImage(pDrawable, elm->gc, elm->c.image.depth,
- elm->c.image.x, elm->c.image.y,
- elm->c.image.w, elm->c.image.h, elm->c.image.leftPad,
- elm->c.image.format, elm->c.image.res,
- elm->c.image.pData);
- break;
- case BeginFrameCmd:
- {
- PsOutPtr psOut;
- ColormapPtr cMap;
- if( PsUpdateDrawableGC(NULL, pDrawable, &psOut, &cMap)==FALSE ) return;
- PsOut_BeginFrame(psOut, 0, 0, elm->c.frame.x, elm->c.frame.y,
- elm->c.frame.w, elm->c.frame.h);
- }
- break;
- case EndFrameCmd:
- {
- PsOutPtr psOut;
- ColormapPtr cMap;
- if( PsUpdateDrawableGC(NULL, pDrawable, &psOut, &cMap)==FALSE ) return;
- PsOut_EndFrame(psOut);
- }
- break;
- }
-}
-
-void
-PsReplayPixmap(PixmapPtr pix, DrawablePtr pDrawable)
-{
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp = priv->dispList;
- DisplayElmPtr elm;
-
- for(; disp ; disp=disp->next )
- {
- int i;
- for( i=0,elm=disp->elms ; i<disp->nelms ; i++,elm++ )
- PsReplay(elm, pDrawable);
- }
-}
-
-int
-PsCloneDisplayElm(PixmapPtr dst, DisplayElmPtr elm, DisplayElmPtr newElm,
- int xoff, int yoff)
-{
- int i;
- int size;
- int status = 0;
-
- *newElm = *elm;
-
- /* I think this is the correct return value */
- if ((newElm->gc = PsCreateAndCopyGC(&dst->drawable, elm->gc)) == NULL) {
- return 1;
- }
-
- switch(elm->type)
- {
- case PolyPointCmd:
- case PolyLineCmd:
- newElm->c.polyPts.pPoints =
- (xPoint *)xalloc(elm->c.polyPts.nPoints*sizeof(xPoint));
- for( i=0 ; i<elm->c.polyPts.nPoints ; i++ )
- {
- newElm->c.polyPts.pPoints[i].x = elm->c.polyPts.pPoints[i].x+xoff;
- newElm->c.polyPts.pPoints[i].y = elm->c.polyPts.pPoints[i].y+yoff;
- }
- break;
- case PolySegmentCmd:
- newElm->c.segments.pSegments =
- (xSegment *)xalloc(elm->c.segments.nSegments*sizeof(xSegment));
- for( i=0 ; i<elm->c.segments.nSegments ; i++ )
- {
- newElm->c.segments.pSegments[i].x1 =
- elm->c.segments.pSegments[i].x1+xoff;
- newElm->c.segments.pSegments[i].y1 =
- elm->c.segments.pSegments[i].y1+yoff;
- newElm->c.segments.pSegments[i].x2 =
- elm->c.segments.pSegments[i].x2+xoff;
- newElm->c.segments.pSegments[i].y2 =
- elm->c.segments.pSegments[i].y2+yoff;
- }
- break;
- case PolyRectangleCmd:
- newElm->c.rects.pRects =
- (xRectangle *)xalloc(elm->c.rects.nRects*sizeof(xRectangle));
- for( i=0 ; i<elm->c.rects.nRects ; i++ )
- {
- newElm->c.rects.pRects[i].x = elm->c.rects.pRects[i].x+xoff;
- newElm->c.rects.pRects[i].y = elm->c.rects.pRects[i].y+yoff;
- newElm->c.rects.pRects[i].width = elm->c.rects.pRects[i].width;
- newElm->c.rects.pRects[i].height = elm->c.rects.pRects[i].height;
- }
- break;
- case FillPolygonCmd:
- newElm->c.polyPts.pPoints =
- (xPoint *)xalloc(elm->c.polyPts.nPoints*sizeof(xPoint));
- for( i=0 ; i<elm->c.polyPts.nPoints ; i++ )
- {
- newElm->c.polyPts.pPoints[i].x = elm->c.polyPts.pPoints[i].x+xoff;
- newElm->c.polyPts.pPoints[i].y = elm->c.polyPts.pPoints[i].y+yoff;
- }
- break;
- case PolyFillRectCmd:
- newElm->c.rects.pRects =
- (xRectangle *)xalloc(elm->c.rects.nRects*sizeof(xRectangle));
- for( i=0 ; i<elm->c.rects.nRects ; i++ )
- {
- newElm->c.rects.pRects[i].x = elm->c.rects.pRects[i].x+xoff;
- newElm->c.rects.pRects[i].y = elm->c.rects.pRects[i].y+yoff;
- newElm->c.rects.pRects[i].width = elm->c.rects.pRects[i].width;
- newElm->c.rects.pRects[i].height = elm->c.rects.pRects[i].height;
- }
- break;
- case PolyArcCmd:
- newElm->c.arcs.pArcs =
- (xArc *)xalloc(elm->c.arcs.nArcs*sizeof(xArc));
- for( i=0 ; i<elm->c.arcs.nArcs ; i++ )
- {
- newElm->c.arcs.pArcs[i].x = elm->c.arcs.pArcs[i].x+xoff;
- newElm->c.arcs.pArcs[i].y = elm->c.arcs.pArcs[i].y+yoff;
- newElm->c.arcs.pArcs[i].width = elm->c.arcs.pArcs[i].width;
- newElm->c.arcs.pArcs[i].height = elm->c.arcs.pArcs[i].height;
- newElm->c.arcs.pArcs[i].angle1 = elm->c.arcs.pArcs[i].angle1;
- newElm->c.arcs.pArcs[i].angle2 = elm->c.arcs.pArcs[i].angle2;
- }
- break;
- case PolyFillArcCmd:
- newElm->c.arcs.pArcs =
- (xArc *)xalloc(elm->c.arcs.nArcs*sizeof(xArc));
- for( i=0 ; i<elm->c.arcs.nArcs ; i++ )
- {
- newElm->c.arcs.pArcs[i].x = elm->c.arcs.pArcs[i].x+xoff;
- newElm->c.arcs.pArcs[i].y = elm->c.arcs.pArcs[i].y+yoff;
- newElm->c.arcs.pArcs[i].width = elm->c.arcs.pArcs[i].width;
- newElm->c.arcs.pArcs[i].height = elm->c.arcs.pArcs[i].height;
- newElm->c.arcs.pArcs[i].angle1 = elm->c.arcs.pArcs[i].angle1;
- newElm->c.arcs.pArcs[i].angle2 = elm->c.arcs.pArcs[i].angle2;
- }
- break;
- case Text8Cmd:
- case TextI8Cmd:
- newElm->c.text8.string = (char *)xalloc(elm->c.text8.count);
- memcpy(newElm->c.text8.string, elm->c.text8.string, elm->c.text8.count);
- newElm->c.text8.x += xoff;
- newElm->c.text8.y += yoff;
- break;
- case Text16Cmd:
- case TextI16Cmd:
- newElm->c.text16.string =
- (unsigned short *)xalloc(elm->c.text16.count*sizeof(unsigned short));
- memcpy(newElm->c.text16.string, elm->c.text16.string,
- elm->c.text16.count*sizeof(unsigned short));
- newElm->c.text16.x += xoff;
- newElm->c.text16.y += yoff;
- break;
- case PutImageCmd:
- size = PixmapBytePad(elm->c.image.w, elm->c.image.depth)*elm->c.image.h;
- newElm->c.image.pData = (char *)xalloc(size);
- memcpy(newElm->c.image.pData, elm->c.image.pData, size);
- newElm->c.image.x += xoff;
- newElm->c.image.y += yoff;
- break;
- case BeginFrameCmd:
- case EndFrameCmd:
- status = 1;
- break;
- }
- return(status);
-}
-
-void
-PsCopyDisplayList(PixmapPtr src, PixmapPtr dst, int xoff, int yoff,
- int x, int y, int w, int h)
-{
- PsPixmapPrivPtr sPriv = (PsPixmapPrivPtr)src->devPrivate.ptr;
- PsPixmapPrivPtr dPriv = (PsPixmapPrivPtr)dst->devPrivate.ptr;
- DisplayListPtr sDisp;
- DisplayListPtr dDisp = PsGetFreeDisplayBlock(dPriv);
- DisplayElmPtr elm = &dDisp->elms[dDisp->nelms];
-
- elm->type = BeginFrameCmd;
- elm->c.frame.x = x;
- elm->c.frame.y = y;
- elm->c.frame.w = w;
- elm->c.frame.h = h;
- dDisp->nelms += 1;
-
- sDisp = sPriv->dispList;
- for(; sDisp ; sDisp=sDisp->next )
- {
- int i;
- for( i=0,elm=sDisp->elms ; i<sDisp->nelms ; i++,elm++ )
- {
- dDisp = PsGetFreeDisplayBlock(dPriv);
- if (PsCloneDisplayElm(dst, elm, &dDisp->elms[dDisp->nelms],
- xoff, yoff)==0)
- {
- dDisp->nelms += 1;
- }
- }
- }
-
- dDisp = PsGetFreeDisplayBlock(dPriv);
- elm = &dDisp->elms[dDisp->nelms];
- elm->type = EndFrameCmd;
- dDisp->nelms += 1;
-}
-
-PsElmPtr
-PsCreateFillElementList(PixmapPtr pix, int *nElms)
-{
- PsElmPtr elms = (PsElmPtr)0;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp = priv->dispList;
- PsArcEnum styl;
-
- *nElms = 0;
- for(; disp ; disp=disp->next )
- {
- int i;
- DisplayElmPtr elm = disp->elms;
-
- for( i=0 ; i<disp->nelms ; i++,elm++ )
- {
- if( !elm->gc ) continue; /* workaround for https://freedesktop.org/bugzilla/show_bug.cgi?id=1416 */
- if( !elm->gc->fgPixel ) continue;
- switch(elm->type)
- {
- case FillPolygonCmd:
- *nElms += 1;
- break;
- case PolyFillRectCmd:
- *nElms += elm->c.rects.nRects;
- break;
- case PolyFillArcCmd:
- *nElms += elm->c.arcs.nArcs;
- break;
- }
- }
- }
-
- if( (*nElms) )
- {
- elms = (PsElmPtr)xcalloc(1, (*nElms)*sizeof(PsElmRec));
- if( elms )
- {
- disp = priv->dispList;
- *nElms = 0;
- for(; disp ; disp=disp->next )
- {
- int i, k;
- DisplayElmPtr elm = disp->elms;
-
- for( i=0 ; i<disp->nelms ; i++,elm++ )
- {
- if( !elm->gc->fgPixel ) continue;
- switch(elm->type)
- {
- case FillPolygonCmd:
- elms[*nElms].type = PSOUT_POINTS;
- elms[*nElms].nPoints = elm->c.polyPts.nPoints;
- elms[*nElms].c.points =
- (PsPointPtr)xalloc(elms[*nElms].nPoints*sizeof(PsPointRec));
- for( k=0 ; k<elms[*nElms].nPoints ; k++ )
- {
- elms[*nElms].c.points[k].x = elm->c.polyPts.pPoints[k].x;
- elms[*nElms].c.points[k].y = elm->c.polyPts.pPoints[k].y;
- }
- *nElms += 1;
- break;
- case PolyFillRectCmd:
- for( k=0 ; k<elm->c.rects.nRects ; k++ )
- {
- elms[*nElms].type = PSOUT_RECT;
- elms[*nElms].nPoints = 0;
- elms[*nElms].c.rect.x = elm->c.rects.pRects[k].x;
- elms[*nElms].c.rect.y = elm->c.rects.pRects[k].y;
- elms[*nElms].c.rect.w = elm->c.rects.pRects[k].width;
- elms[*nElms].c.rect.h = elm->c.rects.pRects[k].height;
- *nElms += 1;
- }
- break;
- case PolyFillArcCmd:
- if( elm->gc->arcMode==ArcChord ) styl = PsChord;
- else styl = PsPieSlice;
- for( k=0 ; k<elm->c.rects.nRects ; k++ )
- {
- elms[*nElms].type = PSOUT_ARC;
- elms[*nElms].nPoints = 0;
- elms[*nElms].c.arc.x = elm->c.arcs.pArcs[k].x;
- elms[*nElms].c.arc.y = elm->c.arcs.pArcs[k].y;
- elms[*nElms].c.arc.w = elm->c.arcs.pArcs[k].width;
- elms[*nElms].c.arc.h = elm->c.arcs.pArcs[k].height;
- elms[*nElms].c.arc.a1 = elm->c.arcs.pArcs[k].angle1;
- elms[*nElms].c.arc.a2 = elm->c.arcs.pArcs[k].angle2;
- elms[*nElms].c.arc.style = styl;
- *nElms += 1;
- }
- break;
- }
- }
- }
- }
- }
- return(elms);
-}
-
-PsElmPtr
-PsCloneFillElementList(int nElms, PsElmPtr elms)
-{
- int i;
- PsElmPtr newElms;
-
- newElms = (PsElmPtr)xcalloc(1, nElms*sizeof(PsElmRec));
- if( !newElms ) return(newElms);
- for( i=0 ; i<nElms ; i++ )
- {
- newElms[i] = elms[i];
-
- if( elms[i].type==PSOUT_POINTS )
- {
- newElms[i].c.points =
- (PsPointPtr)xalloc(elms[i].nPoints*sizeof(PsElmRec));
- memcpy(newElms[i].c.points, elms[i].c.points,
- elms[i].nPoints*sizeof(PsPointRec));
- }
- }
- return(newElms);
-}
-
-void
-PsDestroyFillElementList(int nElms, PsElmPtr elms)
-{
- int i;
-
- for( i=0 ; i<nElms ; i++ )
- { if( elms[i].type==PSOUT_POINTS ) xfree(elms[i].c.points); }
-
- xfree(elms);
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsPolygon.c b/nx-X11/programs/Xserver/Xprint/ps/PsPolygon.c
deleted file mode 100644
index a1ae67f8d..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsPolygon.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/* $Xorg: PsPolygon.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsPolygon.c
-** *
-** * Contents: Draws Polygons and Rectangles for the PS DDX
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Ps.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-
-void
-PsPolyRectangle(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nRects,
- xRectangle *pRects)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return;
-
- disp = PsGetFreeDisplayBlock(priv);
-
- elm = &disp->elms[disp->nelms];
- elm->type = PolyRectangleCmd;
- elm->gc = gc;
- elm->c.rects.nRects = nRects;
- elm->c.rects.pRects = (xRectangle *)xalloc(nRects*sizeof(xRectangle));
- memcpy(elm->c.rects.pRects, pRects, nRects*sizeof(xRectangle));
- disp->nelms += 1;
- }
- else
- {
- int i;
- PsOutPtr psOut;
- ColormapPtr cMap;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE ) return;
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsOut_Color(psOut, PsGetPixelColor(cMap, pGC->fgPixel));
- PsLineAttrs(psOut, pGC, cMap);
- for( i=0 ; i<nRects ; i++ )
- {
- PsOut_DrawRect(psOut, (int)pRects[i].x, (int)pRects[i].y,
- (int)pRects[i].width, (int)pRects[i].height);
- }
- }
-}
-
-void
-PsFillPolygon(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int shape,
- int mode,
- int nPoints,
- DDXPointPtr pPoints)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return;
-
- disp = PsGetFreeDisplayBlock(priv);
-
- elm = &disp->elms[disp->nelms];
- elm->type = FillPolygonCmd;
- elm->gc = gc;
- elm->c.polyPts.mode = mode;
- elm->c.polyPts.nPoints = nPoints;
- elm->c.polyPts.pPoints = (xPoint *)xalloc(nPoints*sizeof(xPoint));
- memcpy(elm->c.polyPts.pPoints, pPoints, nPoints*sizeof(xPoint));
- disp->nelms += 1;
- }
- else
- {
- int i;
- PsOutPtr psOut;
- PsPointPtr pts;
- PsRuleEnum rule;
- ColormapPtr cMap;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE ) return;
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsSetFillColor(pDrawable, pGC, psOut, cMap);
- if( pGC->fillRule==EvenOddRule ) rule = PsEvenOdd;
- else rule = PsNZWinding;
- PsOut_FillRule(psOut, rule);
- pts = (PsPointPtr)xalloc(sizeof(PsPointRec)*nPoints);
- if( mode==CoordModeOrigin )
- {
- for( i=0 ; i<nPoints ; i++ )
- { pts[i].x = pPoints[i].x; pts[i].y = pPoints[i].y; }
- }
- else
- {
- i = 0;
- pts[0].x = pPoints[i].x; pts[0].y = pPoints[i].y;
- for( i=1 ; i<nPoints ; i++ )
- {
- pts[i].x = pts[i-1].x+pPoints[i].x;
- pts[i].y = pts[i-1].y+pPoints[i].y;
- }
- }
- PsOut_Polygon(psOut, nPoints, pts);
- xfree(pts);
- }
-}
-
-void
-PsPolyFillRect(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nRects,
- xRectangle *pRects)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
-#ifdef DBE
- /* Remove previous pixmap content if we render one single rect which
- * covers the whole pixmap surface (this optimisation was added for
- * the double-buffer extension ("DBE") which uses |PolyFillRect()|
- * to clear the buffer - but it makes sense in other cases, too).
- */
- if (nRects == 1)
- {
- extern Bool noDbeExtension;
-
- if ( (pRects[0].x==0) && (pRects[0].y==0) &&
- (pRects[0].width==pDrawable->width) && (pRects[0].height==pDrawable->height) &&
- (pGC->fillStyle == FillSolid) &&
- (noDbeExtension == False))
- {
-#ifdef DEBUG_gismobile
- ErrorF("PsPolyFillRect: scrubbing pixmap...\n");
-#endif /* DEBUG_gismobile */
- /* Remove all content from the pixmap as it would be covered
- * by the whole rect anyway */
- PsScrubPixmap(pDrawable);
- }
- }
-#endif /* DBE */
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return;
-
- disp = PsGetFreeDisplayBlock(priv);
-
- elm = &disp->elms[disp->nelms];
- elm->type = PolyFillRectCmd;
- elm->gc = gc;
- elm->c.rects.nRects = nRects;
- elm->c.rects.pRects = (xRectangle *)xalloc(nRects*sizeof(xRectangle));
- memcpy(elm->c.rects.pRects, pRects, nRects*sizeof(xRectangle));
- disp->nelms += 1;
- }
- else
- {
- int i;
- PsOutPtr psOut;
- ColormapPtr cMap;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE ) return;
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsSetFillColor(pDrawable, pGC, psOut, cMap);
- for( i=0 ; i<nRects ; i++ )
- {
- PsOut_FillRect(psOut, (int)pRects[i].x, (int)pRects[i].y,
- (int)pRects[i].width, (int)pRects[i].height);
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsPrint.c b/nx-X11/programs/Xserver/Xprint/ps/PsPrint.c
deleted file mode 100644
index 05e8e2588..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsPrint.c
+++ /dev/null
@@ -1,462 +0,0 @@
-/* $Xorg: PsPrint.c,v 1.7 2001/03/14 18:28:18 pookie Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996, 2000 Sun Microsystems, Inc. All rights reserved.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsPrint.c
-** *
-** * Contents: Print extension code of Ps driver
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <unistd.h>
-#include <errno.h>
-#include <X11/Xprotostr.h>
-
-#define NEED_EVENTS
-#include <X11/Xproto.h>
-#undef NEED_EVENTS
-
-#include "Ps.h"
-
-#include "windowstr.h"
-#include "attributes.h"
-#include "Oid.h"
-
-/* static utility function to get document/page attributes */
-static void
-S_GetPageAttributes(XpContextPtr pCon,int *iorient,int *icount, int *iplex,
- int *ires, unsigned short *iwd, unsigned short *iht)
-{
- char *count;
- XpOid orient, plex;
- /*
- * Get the orientation
- */
- orient = XpGetContentOrientation(pCon);
- switch (orient) {
- case xpoid_val_content_orientation_landscape:
- *iorient = 1;
- break;
- case xpoid_val_content_orientation_reverse_portrait:
- *iorient = 2;
- break;
- case xpoid_val_content_orientation_reverse_landscape:
- *iorient = 3;
- break;
- case xpoid_val_content_orientation_portrait:
- default:
- *iorient = 0;
- break;
- }
-
- /*
- * Get the count
- */
- count = XpGetOneAttribute(pCon, XPDocAttr, "copy-count");
- if( count )
- {
- int ii = sscanf(count, "%d", icount);
- if( ii!=1 ) *icount = 1;
- }
- else *icount = 1;
-
- /*
- * Get the plex
- */
- plex = XpGetPlex(pCon);
- switch(plex)
- {
- case xpoid_val_plex_duplex:
- *iplex = 1;
- break;
- case xpoid_val_plex_tumble:
- *iplex = 2;
- break;
- default:
- *iplex = 0;
- break;
- }
-
- /*
- * Get the resolution and media size
- */
- *ires = XpGetResolution(pCon);
- XpGetMediumDimensions(pCon, iwd, iht);
-}
-
-
-int
-PsStartJob(
- XpContextPtr pCon,
- Bool sendClientData,
- ClientPtr client)
-{
- PsContextPrivPtr pConPriv =
- (PsContextPrivPtr)pCon->devPrivates[PsContextPrivateIndex].ptr;
-
- /*
- * Create a temporary file to store the printer output.
- */
- if (!XpOpenTmpFile("w", &pConPriv->jobFileName, &pConPriv->pJobFile))
- return BadAlloc;
-
- return Success;
-}
-
-
-
-/* I thought about making this following code into a set of routines
- or using a goto, or something, but in the end decided not to,
- because the plain old listing here makes the logic clearer. */
-int
-PsEndJob(
- XpContextPtr pCon,
- Bool cancel)
-{
- int r;
- struct stat buffer;
- int error;
-
- PsContextPrivPtr priv =
- (PsContextPrivPtr)pCon->devPrivates[PsContextPrivateIndex].ptr;
-
- if (cancel == True) {
- if (priv->getDocClient != (ClientPtr) NULL) {
- (void) XpFinishDocData( priv->getDocClient );
-
- priv->getDocClient = NULL;
- priv->getDocBufSize = 0;
- }
-
- /* job is cancelled - do we really care if we're out of space? */
- (void) fclose(priv->pJobFile);
- priv->pJobFile = NULL;
-
- unlink(priv->jobFileName);
- xfree(priv->jobFileName);
- priv->jobFileName = (char *)NULL;
-
- PsFreeFontInfoRecords(priv);
-
- return Success;
- }
-
- /*
- * Append any trailing information here
- */
- PsOut_EndFile(priv->pPsOut, 0);
- priv->pPsOut = NULL;
-
- /* this is where we find out if we're out of space */
- error = (fclose(priv->pJobFile) == EOF);
- priv->pJobFile = NULL;
-
- /* status to the client if we have ran out of space on the disk or
- some other resource problem with the temporary file... */
- if (error) {
- if (priv->getDocClient != (ClientPtr) NULL) {
- (void) XpFinishDocData( priv->getDocClient );
-
- priv->getDocClient = NULL;
- priv->getDocBufSize = 0;
- }
-
- unlink(priv->jobFileName);
- xfree(priv->jobFileName);
- priv->jobFileName = (char *)NULL;
-
- PsFreeFontInfoRecords(priv);
-
- return BadAlloc;
- }
-
- /* we have finished without incident & no cancel */
-
- if (priv->getDocClient != NULL && priv->getDocBufSize > 0) {
- FILE *file;
-
- file = fopen(priv->jobFileName, "r");
- if (!file || (fstat(fileno(file), &buffer) < 0))
- r = BadAlloc;
- else
- r = XpSendDocumentData(priv->getDocClient, file, buffer.st_size,
- priv->getDocBufSize);
- if (file)
- fclose(file);
-
- (void) XpFinishDocData(priv->getDocClient);
-
- priv->getDocClient = NULL;
- priv->getDocBufSize = 0;
- }
- else {
- XpSubmitJob(priv->jobFileName, pCon);
-
- r = Success;
- }
-
- unlink(priv->jobFileName);
- xfree(priv->jobFileName);
- priv->jobFileName = (char *)NULL;
-
- PsFreeFontInfoRecords(priv);
-
-#ifdef BM_CACHE
- PsBmClearImageCache();
-#endif
-
- return r;
-}
-
-/* StartPage
- */
-int
-PsStartPage(
- XpContextPtr pCon,
- WindowPtr pWin)
-{
- int iorient, iplex, icount, ires;
- unsigned short iwd, iht;
- register WindowPtr pChild;
- PsContextPrivPtr pConPriv =
- (PsContextPrivPtr)pCon->devPrivates[PsContextPrivateIndex].ptr;
- PsWindowPrivPtr pWinPriv =
- (PsWindowPrivPtr)pWin->devPrivates[PsWindowPrivateIndex].ptr;
- char s[80];
- xEvent event;
-
-/*
- * Put a pointer to the context in the window private structure
- */
- pWinPriv->validContext = 1;
- pWinPriv->context = pCon;
-
- /* get page level attributes */
- S_GetPageAttributes(pCon,&iorient,&icount,&iplex,&ires,&iwd,&iht);
- /*
- * Start the page
- */
- if (pConPriv->pPsOut == NULL) {
- char *title;
-
- /* get job level attributes */
- title = XpGetOneAttribute(pCon, XPJobAttr, "job-name");
-
- pConPriv->pPsOut = PsOut_BeginFile(pConPriv->pJobFile,
- title, iorient, icount, iplex, ires,
- (int)iwd, (int)iht, False);
- pConPriv->fontInfoRecords = NULL;
- pConPriv->fontTypeInfoRecords = NULL;
- }
- PsOut_BeginPage(pConPriv->pPsOut, iorient, icount, iplex, ires,
- (int)iwd, (int)iht);
-
- return Success;
-}
-
-
-/*
- * EndPage:
- *
- * Write page trailer to page file
- * Write page file to job file
- */
-int
-PsEndPage(
- XpContextPtr pCon,
- WindowPtr pWin)
-{
- PsWindowPrivPtr pWinPriv =
- (PsWindowPrivPtr)pWin->devPrivates[PsWindowPrivateIndex].ptr;
- PsContextPrivPtr pConPriv =
- (PsContextPrivPtr)pCon->devPrivates[PsContextPrivateIndex].ptr;
-
- PsOut_EndPage(pConPriv->pPsOut);
-
- pWinPriv->validContext = 0;
- pWinPriv->context = NULL;
-
- /* status to the client if we have ran out of space on the disk or
- some other resource problem with the temporary file... */
-/* if (ferror(pConPriv->pJobFile)) return BadAlloc; */
-
- return Success;
-}
-
-/*
- * The PsStartDoc() and PsEndDoc() functions serve basically as NOOP
- * placeholders. This driver doesn't deal with the notion of multiple
- * documents per page.
- */
-
-int
-PsStartDoc(XpContextPtr pCon, XPDocumentType type)
-{
- int iorient, iplex, icount, ires;
- unsigned short iwd, iht;
- char *title;
- PsContextPrivPtr pConPriv =
- (PsContextPrivPtr)pCon->devPrivates[PsContextPrivateIndex].ptr;
-
- /* get job level attributes */
- title = XpGetOneAttribute(pCon, XPJobAttr, "job-name");
-
- /* get document level attributes */
- S_GetPageAttributes(pCon,&iorient,&icount,&iplex,&ires,&iwd,&iht);
-
- pConPriv->pPsOut = PsOut_BeginFile(pConPriv->pJobFile,
- title, iorient, icount, iplex, ires,
- (int)iwd, (int)iht, (Bool)(type == XPDocRaw));
-
- pConPriv->fontInfoRecords = NULL;
- pConPriv->fontTypeInfoRecords = NULL;
-
- return Success;
-}
-
-int
-PsEndDoc(
- XpContextPtr pCon,
- Bool cancel)
-{
- return Success;
-}
-
-/*
- * PsDocumentData()
- *
- * Hand any pre-generated PDL down to the spool files, formatting it
- * as necessary to fit the given window.
- */
-
-int
-PsDocumentData(
- XpContextPtr pCon,
- DrawablePtr pDraw,
- char *pData,
- int len_data,
- char *pFmt,
- int len_fmt,
- char *pOpt,
- int len_opt,
- ClientPtr client)
-{
- PsContextPrivPtr cPriv;
- PsOutPtr psOut;
-
- if (len_fmt != 12 ||
- strncasecmp(pFmt, "PostScript 2", len_fmt) != 0 ||
- len_opt)
- return BadValue;
-
- cPriv = pCon->devPrivates[PsContextPrivateIndex].ptr;
- psOut = cPriv->pPsOut;
-
- if (pDraw)
- PsOut_BeginFrame(psOut, 0, 0, pDraw->x, pDraw->y,
- pDraw->width, pDraw->height);
- PsOut_RawData(psOut, pData, len_data);
- if (pDraw)
- PsOut_EndFrame(psOut);
-
- return Success;
-}
-
-/*
- *
- * PsGetDocumentData()
- *
- * This function allows the driver to send the generated PS back to
- * the client.
- */
-
-int
-PsGetDocumentData(
- XpContextPtr pCon,
- ClientPtr client,
- int maxBufferSize)
-{
- PsContextPrivPtr pPriv = (PsContextPrivPtr)
- pCon->devPrivates[PsContextPrivateIndex].ptr;
-
- pPriv->getDocClient = client;
- pPriv->getDocBufSize = maxBufferSize;
-
- return Success;
-}
-
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsSpans.c b/nx-X11/programs/Xserver/Xprint/ps/PsSpans.c
deleted file mode 100644
index d7652f8fb..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsSpans.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/* $Xorg: PsSpans.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsSpans.c
-** *
-** * Contents: Code to set and fill spans in the PS DDX
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-/* $XFree86: xc/programs/Xserver/Xprint/ps/PsSpans.c,v 1.8 2001/10/28 03:32:56 tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Ps.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-
-void
-PsFillSpans(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nSpans,
- DDXPointPtr pPoints,
- int *pWidths,
- int fSorted)
-{
- PsOutPtr psOut;
- int xoffset, yoffset;
- xRectangle *rects, *r;
- RegionPtr fillRegion, region = 0;
- int i;
- int nbox;
- BoxPtr pbox;
- ColormapPtr cMap;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE ) return;
-
- /*
- * Build a region out of the spans
- */
- rects = (xRectangle *)xalloc(nSpans*sizeof(xRectangle));
- xoffset = pDrawable->x;
- yoffset = pDrawable->y;
-
- for( i = 0, r = rects; i < nSpans; i++, r++ )
- {
- r->x = pPoints[i].x + xoffset;
- r->y = pPoints[i].y + yoffset;
- r->width = pWidths[i];
- r->height = 1;
- }
- fillRegion = RECTS_TO_REGION(pGC->pScreen, nSpans, rects,
- (fSorted)?CT_YSORTED:CT_UNSORTED);
-
- /*
- * Intersect this region with the clip region. Whatever's left,
- * should be filled.
- */
-/*REGION_INTERSECT(pGC->pScreen, region, fillRegion, pGC->clientClip);*/
-
- pbox = REGION_RECTS(region);
- nbox = REGION_NUM_RECTS(region);
-
- /* Enter HP-GL/2 */
- /*###SEND_PCL( outFile, "\27%0B" );*/
-
- while( nbox )
- {
-/*###
- sprintf( t, "PU%d,%d;RR%d,%d;", pbox->x1, pbox->y1, pbox->x2, pbox->y2);
- SEND_PCL( outFile, t );
-*/
- nbox--;
- pbox++;
- }
-
- /* Go back to PCL */
- /*###SEND_PCL( outFile, "\27%0A" );*/
-
- /*
- * Clean up the temporary regions
- */
- REGION_DESTROY(pGC->pScreen, fillRegion);
- REGION_DESTROY(pGC->pScreen, region);
- xfree(rects);
-}
-
-void
-PsSetSpans(
- DrawablePtr pDrawable,
- GCPtr pGC,
- char *pSrc,
- DDXPointPtr pPoints,
- int *pWidths,
- int nSpans,
- int fSorted)
-{
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsText.c b/nx-X11/programs/Xserver/Xprint/ps/PsText.c
deleted file mode 100644
index 228e407dc..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsText.c
+++ /dev/null
@@ -1,586 +0,0 @@
-/* $Xorg: PsText.c,v 1.7 2001/02/09 02:04:36 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsText.c
-** *
-** * Contents: Character-drawing routines for the PS DDX
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "Ps.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include <X11/fonts/fntfil.h>
-#include <X11/fonts/fntfilst.h>
-#include <limits.h>
-
-int
-PsPolyText8(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int count,
- char *string)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return x;
-
- disp = PsGetFreeDisplayBlock(priv);
-
- elm = &disp->elms[disp->nelms];
- elm->type = Text8Cmd;
- elm->gc = gc;
- elm->c.text8.x = x;
- elm->c.text8.y = y;
- elm->c.text8.count = count;
- elm->c.text8.string = (char *)xalloc(count);
- memcpy(elm->c.text8.string, string, count);
- disp->nelms += 1;
-
- return x;
- }
- else
- {
- PsFontInfoRec *firec;
-
- /* We need a context for rendering... */
- if (PsGetPsContextPriv(pDrawable) == NULL)
- return x;
-
- firec = PsGetFontInfoRec(pDrawable, pGC->font);
- if (!firec)
- return x;
-
-#ifdef XP_USE_FREETYPE
- if (firec->ftir->downloadableFont &&
- (firec->ftir->font_type == PSFTI_FONT_TYPE_FREETYPE))
- {
- PsOutPtr psOut;
- ColormapPtr cMap;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE )
- return x;
-
- if (firec->ftir->alreadyDownloaded[0] == False)
- {
- PsOut_DownloadFreeType(psOut,
- firec->ftir->ft_download_font_type,
- firec->ftir->download_ps_name, pGC->font, 0);
- firec->ftir->alreadyDownloaded[0] = True;
- }
-
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsOut_Color(psOut, PsGetPixelColor(cMap, pGC->fgPixel));
- if (!firec->size)
- PsOut_TextAttrsMtx(psOut, firec->ftir->download_ps_name, firec->mtx, firec->ftir->is_iso_encoding);
- else
- PsOut_TextAttrs(psOut, firec->ftir->download_ps_name, firec->size, firec->ftir->is_iso_encoding);
- PsOut_FreeType_Text(pGC->font, psOut, x, y, string, count);
-
- return x;
- }
- else
-#endif /* XP_USE_FREETYPE */
- if (firec->ftir->downloadableFont &&
- (firec->ftir->font_type != PSFTI_FONT_TYPE_FREETYPE))
- {
- PsOutPtr psOut;
- ColormapPtr cMap;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE )
- return x;
-
- if (firec->ftir->alreadyDownloaded[0] == False)
- {
- PsOut_DownloadType1(psOut, "PsPolyText8",
- firec->ftir->download_ps_name, firec->ftir->filename);
- firec->ftir->alreadyDownloaded[0] = True;
- }
-
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsOut_Color(psOut, PsGetPixelColor(cMap, pGC->fgPixel));
- if (!firec->size)
- PsOut_TextAttrsMtx(psOut, firec->ftir->download_ps_name, firec->mtx, firec->ftir->is_iso_encoding);
- else
- PsOut_TextAttrs(psOut, firec->ftir->download_ps_name, firec->size, firec->ftir->is_iso_encoding);
- PsOut_Text(psOut, x, y, string, count, -1);
-
- return x;
- }
-
- /* Render glyphs as bitmaps */
- {
- unsigned long n, i;
- int w;
- CharInfoPtr charinfo[255];
-
- GetGlyphs(pGC->font, (unsigned long)count,
- (unsigned char *)string, Linear8Bit, &n, charinfo);
- w = 0;
- for (i=0; i < n; i++)
- w += charinfo[i]->metrics.characterWidth;
-
- if (n != 0)
- PsPolyGlyphBlt(pDrawable, pGC, x, y, n,
- charinfo, FONTGLYPHS(pGC->font));
- x += w;
-
- return x;
- }
- }
- return x;
-}
-
-int
-PsPolyText16(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int count,
- unsigned short *string)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return x;
-
- disp = PsGetFreeDisplayBlock(priv);
-
- elm = &disp->elms[disp->nelms];
- elm->type = Text16Cmd;
- elm->gc = gc;
- elm->c.text16.x = x;
- elm->c.text16.y = y;
- elm->c.text16.count = count;
- elm->c.text16.string =
- (unsigned short *)xalloc(count*sizeof(unsigned short));
- memcpy(elm->c.text16.string, string, count*sizeof(unsigned short));
- disp->nelms += 1;
-
- return x;
- }
- else
- {
- PsFontInfoRec *firec;
-
- /* We need a context for rendering... */
- if (PsGetPsContextPriv(pDrawable) == NULL)
- return x;
-
- firec = PsGetFontInfoRec(pDrawable, pGC->font);
- if (!firec)
- return x;
-
-#ifdef XP_USE_FREETYPE
- if (firec->ftir->downloadableFont &&
- (firec->ftir->font_type == PSFTI_FONT_TYPE_FREETYPE))
- {
- PsOutPtr psOut;
- ColormapPtr cMap;
- unsigned short c,
- c_hiByte,
- c_lowByte,
- fontPage;
- int i;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE )
- return x;
-
- /* Scan the string we want to render and download all neccesary parts
- * of the font (one part(="font page") has 256 glyphs)
- */
- for( i = 0 ; i < count ; i++ )
- {
- c = string[i];
-#if IMAGE_BYTE_ORDER == LSBFirst
- c_hiByte = c & 0x00FF;
- c_lowByte = (c >> 8) & 0x00FF;
-#elif IMAGE_BYTE_ORDER == MSBFirst
- c_hiByte = (c >> 8) & 0x00FF;
- c_lowByte = c & 0x00FF;
-#else
-#error Unsupported byte order
-#endif
- fontPage = c_hiByte;
-
- if (firec->ftir->alreadyDownloaded[fontPage] == False)
- {
- char buffer[256];
- const char *ps_name;
-
- if (fontPage > 0)
- {
- sprintf(buffer, "%s_%x", firec->ftir->download_ps_name, (int)fontPage);
- ps_name = buffer;
- }
- else
- {
- ps_name = firec->ftir->download_ps_name;
- }
-
- PsOut_DownloadFreeType(psOut,
- firec->ftir->ft_download_font_type,
- ps_name, pGC->font, (fontPage * 0x100)); /* same as (fontPage << 8) */
-
- firec->ftir->alreadyDownloaded[fontPage] = True;
- }
- }
-
-
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsOut_Color(psOut, PsGetPixelColor(cMap, pGC->fgPixel));
- if (!firec->size)
- PsOut_FreeType_TextAttrsMtx16(psOut, firec->ftir->download_ps_name, firec->mtx, firec->ftir->is_iso_encoding);
- else
- PsOut_FreeType_TextAttrs16(psOut, firec->ftir->download_ps_name, firec->size, firec->ftir->is_iso_encoding);
- PsOut_FreeType_Text16(pGC->font, psOut, x, y, string, count);
-
- return x;
- }
- else
-#endif /* XP_USE_FREETYPE */
- if (firec->ftir->downloadableFont &&
- (firec->ftir->font_type != PSFTI_FONT_TYPE_FREETYPE))
- {
- PsOutPtr psOut;
- ColormapPtr cMap;
- unsigned short c,
- c_hiByte,
- c_lowByte,
- fontPage;
- int i;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE )
- return x;
-
- PsOut_DownloadType1(psOut, "PsPolyText16",
- firec->ftir->download_ps_name, firec->ftir->filename);
- firec->ftir->alreadyDownloaded[fontPage] = True;
-
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsOut_Color(psOut, PsGetPixelColor(cMap, pGC->fgPixel));
- if (!firec->size)
- PsOut_TextAttrsMtx(psOut, firec->ftir->download_ps_name, firec->mtx, firec->ftir->is_iso_encoding);
- else
- PsOut_TextAttrs(psOut, firec->ftir->download_ps_name, firec->size, firec->ftir->is_iso_encoding);
- PsOut_Text16(psOut, x, y, string, count, -1);
-
- return x;
- }
-
- /* Render glyphs as bitmaps */
- {
- unsigned long n, i;
- int w;
- CharInfoPtr charinfo[255]; /* encoding only has 1 byte for count */
-
- GetGlyphs(pGC->font, (unsigned long)count, (unsigned char *)string,
- (FONTLASTROW(pGC->font) == 0) ? Linear16Bit : TwoD16Bit,
- &n, charinfo);
- w = 0;
- for (i=0; i < n; i++)
- w += charinfo[i]->metrics.characterWidth;
- if (n != 0)
- PsPolyGlyphBlt(pDrawable, pGC, x, y, n, charinfo, FONTGLYPHS(pGC->font));
- x += w;
-
- return x;
- }
- }
- return x;
-}
-
-void
-PsImageText8(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int count,
- char *string)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return;
-
- disp = PsGetFreeDisplayBlock(priv);
-
- elm = &disp->elms[disp->nelms];
- elm->type = TextI8Cmd;
- elm->gc = gc;
- elm->c.text8.x = x;
- elm->c.text8.y = y;
- elm->c.text8.count = count;
- elm->c.text8.string = (char *)xalloc(count);
- memcpy(elm->c.text8.string, string, count);
- disp->nelms += 1;
- }
- else
- {
- int iso;
- int siz;
- float mtx[4];
- char *fnam;
- PsOutPtr psOut;
- ColormapPtr cMap;
-
- if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE ) return;
- PsOut_Offset(psOut, pDrawable->x, pDrawable->y);
- PsOut_Color(psOut, PsGetPixelColor(cMap, pGC->fgPixel));
- fnam = PsGetPSFontName(pGC->font);
- if( !fnam ) fnam = "Times-Roman";
- siz = PsGetFontSize(pGC->font, mtx);
- iso = PsIsISOLatin1Encoding(pGC->font);
- if( !siz ) PsOut_TextAttrsMtx(psOut, fnam, mtx, iso);
- else PsOut_TextAttrs(psOut, fnam, siz, iso);
- PsOut_Text(psOut, x, y, string, count, PsGetPixelColor(cMap, pGC->bgPixel));
- }
-}
-
-void
-PsImageText16(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int count,
- unsigned short *string)
-{
- if( pDrawable->type==DRAWABLE_PIXMAP )
- {
- DisplayElmPtr elm;
- PixmapPtr pix = (PixmapPtr)pDrawable;
- PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pix->devPrivate.ptr;
- DisplayListPtr disp;
- GCPtr gc;
-
- if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return;
-
- disp = PsGetFreeDisplayBlock(priv);
-
- elm = &disp->elms[disp->nelms];
- elm->type = TextI16Cmd;
- elm->gc = gc;
- elm->c.text16.x = x;
- elm->c.text16.y = y;
- elm->c.text16.count = count;
- elm->c.text16.string =
- (unsigned short *)xalloc(count*sizeof(unsigned short));
- memcpy(elm->c.text16.string, string, count*sizeof(unsigned short));
- disp->nelms += 1;
- }
- else
- {
- int i;
- char *str;
- if( !count ) return;
- str = (char *)xalloc(count);
- for( i=0 ; i<count ; i++ ) str[i] = string[i];
- PsImageText8(pDrawable, pGC, x, y, count, str);
- free(str);
- }
-}
-
-void
-PsImageGlyphBlt(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- unsigned int nGlyphs,
- CharInfoPtr *pCharInfo,
- pointer pGlyphBase)
-{
- /* NOT TO BE IMPLEMENTED */
-}
-
-void
-PsPolyGlyphBlt(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- unsigned int nGlyphs,
- CharInfoPtr *pCharInfo,
- pointer pGlyphBase)
-{
- int width, height;
- PixmapPtr pPixmap;
- int nbyLine; /* bytes per line of padded pixmap */
- FontPtr pfont;
- GCPtr pGCtmp;
- register int i;
- register int j;
- unsigned char *pbits; /* buffer for PutImage */
- register unsigned char *pb; /* temp pointer into buffer */
- register CharInfoPtr pci; /* currect char info */
- register unsigned char *pglyph; /* pointer bits in glyph */
- int gWidth, gHeight; /* width and height of glyph */
- register int nbyGlyphWidth; /* bytes per scanline of glyph */
- int nbyPadGlyph; /* server padded line of glyph */
- int w, tmpx;
- XID gcvals[3];
-
- pfont = pGC->font;
- width = FONTMAXBOUNDS(pfont,rightSideBearing) -
- FONTMINBOUNDS(pfont,leftSideBearing);
- height = FONTMAXBOUNDS(pfont,ascent) +
- FONTMAXBOUNDS(pfont,descent);
-
- if ((width == 0) || (height == 0) )
- return;
- {
- int i;
- w = 0;
- for (i=0; i < nGlyphs; i++) w += pCharInfo[i]->metrics.characterWidth;
- }
- pGCtmp = GetScratchGC(1, pDrawable->pScreen);
- if (!pGCtmp)
- {
- (*pDrawable->pScreen->DestroyPixmap)(pPixmap);
- return;
- }
-
- gcvals[0] = GXcopy;
- gcvals[1] = pGC->fgPixel;
- gcvals[2] = pGC->bgPixel;
-
- DoChangeGC(pGCtmp, GCFunction|GCForeground|GCBackground, gcvals, 0);
-
-
- nbyLine = BitmapBytePad(width);
- pbits = (unsigned char *)ALLOCATE_LOCAL(height*nbyLine);
- if (!pbits){
- PsDestroyPixmap(pPixmap);
- return;
- }
- tmpx = 0;
- while(nGlyphs--)
- {
- pci = *pCharInfo++;
- pglyph = FONTGLYPHBITS(pGlyphBase, pci);
- gWidth = GLYPHWIDTHPIXELS(pci);
- gHeight = GLYPHHEIGHTPIXELS(pci);
- if (gWidth && gHeight)
- {
- nbyGlyphWidth = GLYPHWIDTHBYTESPADDED(pci);
- nbyPadGlyph = BitmapBytePad(gWidth);
-
- if (nbyGlyphWidth == nbyPadGlyph
-#if GLYPHPADBYTES != 4
- && (((int) pglyph) & 3) == 0
-#endif
- )
- {
- pb = pglyph;
- }
- else
- {
- for (i=0, pb = pbits; i<gHeight; i++, pb = pbits+(i*nbyPadGlyph))
- for (j = 0; j < nbyGlyphWidth; j++)
- *pb++ = *pglyph++;
- pb = pbits;
- }
-
- PsPutImageMask((DrawablePtr)pDrawable, pGCtmp,
- 1, x + pci->metrics.leftSideBearing,
- y - pci->metrics.ascent, gWidth, gHeight,
- 0, XYBitmap, (char *)pb);
- }
-
- x += pci->metrics.characterWidth;
- }
- DEALLOCATE_LOCAL(pbits);
- FreeScratchGC(pGCtmp);
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/PsWindow.c b/nx-X11/programs/Xserver/Xprint/ps/PsWindow.c
deleted file mode 100644
index 313e51f31..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/PsWindow.c
+++ /dev/null
@@ -1,462 +0,0 @@
-/* $Xorg: PsWindow.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: PsWindow.c
-** *
-** * Contents: Window code for PS driver.
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/wait.h>
-
-#include "mistruct.h"
-#include "regionstr.h"
-#include "windowstr.h"
-#include "gcstruct.h"
-
-#include "Ps.h"
-
-extern WindowPtr *WindowTable;
-
-/*
- * The following list of strings defines the properties which will be
- * placed on the screen's root window if the property was defined in
- * the start-up configuration resource database.
- */
-static char *propStrings[] = {
- DT_PRINT_JOB_HEADER,
- DT_PRINT_JOB_TRAILER,
- DT_PRINT_JOB_COMMAND,
- DT_PRINT_JOB_EXEC_COMMAND,
- DT_PRINT_JOB_EXEC_OPTIONS,
- DT_PRINT_PAGE_HEADER,
- DT_PRINT_PAGE_TRAILER,
- DT_PRINT_PAGE_COMMAND,
- (char *)NULL
-};
-
-
-/*
- * PsCreateWindow - watch for the creation of the root window.
- * When it's created, register the screen with the print extension,
- * and put the default command/header properties on it.
- */
-/*ARGSUSED*/
-
-Bool
-PsCreateWindow(WindowPtr pWin)
-{
- PsWindowPrivPtr pPriv;
-
-#if 0
- Bool status = Success;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- PsScreenPrivPtr pScreenPriv = (PsScreenPrivPtr)
- pScreen->devPrivates[PsScreenPrivateIndex].ptr;
- PsWindowPrivPtr pWinPriv = (PsWindowPrivPtr)
- pWin->devPrivates[PsWindowPrivateIndex].ptr;
-
- /*
- * Initialize this window's private struct.
- */
- pWinPriv->jobFileName = (char *)NULL;
- pWinPriv->pJobFile = (FILE *)NULL;
- pWinPriv->pageFileName = (char *)NULL;
- pWinPriv->pPageFile = (FILE *)NULL;
-
- if(pWin->parent == (WindowPtr)NULL) /* root window? */
- {
- Atom propName; /* type = XA_STRING */
- char *propVal;
- int i;
- XrmDatabase rmdb = pScreenPriv->resDB;
-
- /*
- * Put the defaults spec'd in the config files in properties on this
- * screen's root window.
- */
- for(i = 0; propStrings[i] != (char *)NULL; i++)
- {
- if((propVal = _DtPrintGetPrinterResource(pWin, rmdb,
- propStrings[i])) !=
- (char *)NULL)
- {
- propName = MakeAtom(propStrings[i], strlen(propStrings[i]),
- TRUE);
- ChangeWindowProperty(pWin, propName, XA_STRING, 8,
- PropModeReplace, strlen(propVal),
- (pointer)propVal, FALSE);
- xfree(propVal);
- }
- }
- }
-
- return status;
-#endif
-
- pPriv = (PsWindowPrivPtr)pWin->devPrivates[PsWindowPrivateIndex].ptr;
- pPriv->validContext = 0;
-
- return TRUE;
-}
-
-
-/*ARGSUSED*/
-Bool PsMapWindow(WindowPtr pWindow)
-{
- return TRUE;
-}
-
-/*ARGSUSED*/
-Bool
-PsPositionWindow(
- WindowPtr pWin,
- int x,
- int y)
-{
- return TRUE;
-}
-
-/*ARGSUSED*/
-Bool
-PsUnmapWindow(WindowPtr pWindow)
-{
- return TRUE;
-}
-
-/*ARGSUSED*/
-void
-PsCopyWindow(
- WindowPtr pWin,
- DDXPointRec ptOldOrg,
- RegionPtr prgnSrc)
-{
-}
-
-/*ARGSUSED*/
-Bool
-PsChangeWindowAttributes(
- WindowPtr pWin,
- unsigned long mask)
-{
- return TRUE;
-}
-
-
-void
-PsPaintWindow(
- WindowPtr pWin,
- RegionPtr pRegion,
- int what)
-{
- int status;
- WindowPtr pRoot;
-
-#define FUNCTION 0
-#define FOREGROUND 1
-#define TILE 2
-#define FILLSTYLE 3
-#define ABSX 4
-#define ABSY 5
-#define CLIPMASK 6
-#define SUBWINDOW 7
-#define COUNT_BITS 8
-
- pointer gcval[7];
- pointer newValues [COUNT_BITS];
-
- BITS32 gcmask, index, mask;
- RegionRec prgnWin;
- DDXPointRec oldCorner;
- BoxRec box;
- WindowPtr pBgWin;
- GCPtr pGC;
- register int i;
- register BoxPtr pbox;
- register ScreenPtr pScreen = pWin->drawable.pScreen;
- register xRectangle *prect;
- int numRects;
-
- gcmask = 0;
-
- /*
- * We don't want to paint a window that has no place to put the
- * PS output.
- */
- if( PsGetContextFromWindow(pWin)==(XpContextPtr)NULL ) return;
-
- if( what==PW_BACKGROUND )
- {
- switch(pWin->backgroundState)
- {
- case None: return;
- case ParentRelative:
- (*pWin->parent->drawable.pScreen->PaintWindowBackground)
- (pWin->parent, pRegion, what);
- return;
- case BackgroundPixel:
- newValues[FOREGROUND] = (pointer)pWin->background.pixel;
- newValues[FILLSTYLE] = (pointer)FillSolid;
- gcmask |= GCForeground | GCFillStyle;
- break;
- case BackgroundPixmap:
- newValues[TILE] = (pointer)pWin->background.pixmap;
- newValues[FILLSTYLE] = (pointer)FillTiled;
- gcmask |= GCTile | GCFillStyle | GCTileStipXOrigin | GCTileStipYOrigin;
- break;
- }
- }
- else
- {
- if( pWin->borderIsPixel )
- {
- newValues[FOREGROUND] = (pointer)pWin->border.pixel;
- newValues[FILLSTYLE] = (pointer)FillSolid;
- gcmask |= GCForeground | GCFillStyle;
- }
- else
- {
- newValues[TILE] = (pointer)pWin->border.pixmap;
- newValues[FILLSTYLE] = (pointer)FillTiled;
- gcmask |= GCTile | GCFillStyle | GCTileStipXOrigin | GCTileStipYOrigin;
- }
- }
-
- prect = (xRectangle *)ALLOCATE_LOCAL(REGION_NUM_RECTS(pRegion) *
- sizeof(xRectangle));
- if( !prect ) return;
-
- newValues[FUNCTION] = (pointer)GXcopy;
- gcmask |= GCFunction | GCClipMask;
-
- i = pScreen->myNum;
- pRoot = WindowTable[i];
-
- pBgWin = pWin;
- if (what == PW_BORDER)
- {
- while( pBgWin->backgroundState==ParentRelative ) pBgWin = pBgWin->parent;
- }
-
- pGC = GetScratchGC(pWin->drawable.depth, pWin->drawable.pScreen);
- if( !pGC )
- {
- DEALLOCATE_LOCAL(prect);
- return;
- }
- /*
- * mash the clip list so we can paint the border by
- * mangling the window in place, pretending it
- * spans the entire screen
- */
- if( what==PW_BORDER )
- {
- prgnWin = pWin->clipList;
- oldCorner.x = pWin->drawable.x;
- oldCorner.y = pWin->drawable.y;
- pWin->drawable.x = pWin->drawable.y = 0;
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = pScreen->width;
- box.y2 = pScreen->height;
- REGION_INIT(pScreen, &pWin->clipList, &box, 1);
- pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- newValues[ABSX] = (pointer)(long)pBgWin->drawable.x;
- newValues[ABSY] = (pointer)(long)pBgWin->drawable.y;
- }
- else
- {
- newValues[ABSX] = (pointer)0;
- newValues[ABSY] = (pointer)0;
- }
-
-/*
- * XXX Backing store is turned off for the PS driver
-
- if( pWin->backStorage )
- (*pWin->drawable.pScreen->DrawGuarantee) (pWin, pGC, GuaranteeVisBack);
- */
-
- mask = gcmask;
- gcmask = 0;
- i = 0;
- while( mask )
- {
- index = lowbit (mask);
- mask &= ~index;
- switch(index)
- {
- case GCFunction:
- if( (pointer)(long)pGC->alu!=newValues[FUNCTION] )
- {
- gcmask |= index;
- gcval[i++] = newValues[FUNCTION];
- }
- break;
- case GCTileStipXOrigin:
- if( (pointer)(long)pGC->patOrg.x!=newValues[ABSX] )
- {
- gcmask |= index;
- gcval[i++] = newValues[ABSX];
- }
- break;
- case GCTileStipYOrigin:
- if( (pointer)(long)pGC->patOrg.y!=newValues[ABSY] )
- {
- gcmask |= index;
- gcval[i++] = newValues[ABSY];
- }
- break;
- case GCClipMask:
- if( (pointer)pGC->clientClipType!=(pointer)CT_NONE )
- {
- gcmask |= index;
- gcval[i++] = (pointer)CT_NONE;
- }
- break;
- case GCSubwindowMode:
- if( (pointer)pGC->subWindowMode!=newValues[SUBWINDOW] )
- {
- gcmask |= index;
- gcval[i++] = newValues[SUBWINDOW];
- }
- break;
- case GCTile:
- if( pGC->tileIsPixel || (pointer)pGC->tile.pixmap!=newValues[TILE] )
- {
- gcmask |= index;
- gcval[i++] = newValues[TILE];
- }
- break;
- case GCFillStyle:
- if( (pointer)pGC->fillStyle!=newValues[FILLSTYLE] )
- {
- gcmask |= index;
- gcval[i++] = newValues[FILLSTYLE];
- }
- break;
- case GCForeground:
- if( (pointer)pGC->fgPixel!=newValues[FOREGROUND] )
- {
- gcmask |= index;
- gcval[i++] = newValues[FOREGROUND];
- }
- break;
- }
- }
-
- if( gcmask ) DoChangeGC(pGC, gcmask, (XID *)gcval, 1);
-
- if( pWin->drawable.serialNumber!=pGC->serialNumber )
- ValidateGC((DrawablePtr)pWin, pGC);
-
- numRects = REGION_NUM_RECTS(pRegion);
- pbox = REGION_RECTS(pRegion);
- for( i=numRects ; --i >= 0 ; pbox++,prect++ )
- {
- prect->x = pbox->x1 - pWin->drawable.x;
- prect->y = pbox->y1 - pWin->drawable.y;
- prect->width = pbox->x2 - pbox->x1;
- prect->height = pbox->y2 - pbox->y1;
- }
- prect -= numRects;
- (*pGC->ops->PolyFillRect)((DrawablePtr)pWin, pGC, numRects, prect);
- DEALLOCATE_LOCAL(prect);
-
-/*
- * XXX Backing store is turned off for the PS driver
-
- if( pWin->backStorage )
- (*pWin->drawable.pScreen->DrawGuarantee) (pWin, pGC, GuaranteeNothing);
- */
-
- if( what==PW_BORDER )
- {
- REGION_UNINIT(pScreen, &pWin->clipList);
- pWin->clipList = prgnWin;
- pWin->drawable.x = oldCorner.x;
- pWin->drawable.y = oldCorner.y;
- pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- }
- FreeScratchGC(pGC);
-}
-
-/*ARGSUSED*/
-Bool
-PsDestroyWindow(WindowPtr pWin)
-{
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/ps/psout.c b/nx-X11/programs/Xserver/Xprint/ps/psout.c
deleted file mode 100644
index 376feec03..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/psout.c
+++ /dev/null
@@ -1,1792 +0,0 @@
-/* $Xorg: psout.c,v 1.9 2001/03/26 15:25:12 coskrey Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996, 2000 Sun Microsystems, Inc. All Rights Reserved.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: psout.c
-** *
-** * Contents: Code to output PostScript to file
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "os.h"
-#define USE_PSOUT_PRIVATE 1
-#include "psout.h"
-#ifdef XP_USE_FREETYPE
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#endif /* XP_USE_FREETYPE */
-/* For VENDOR_STRING and VENDOR_RELEASE */
-#include "site.h"
-
-extern PsElmPtr PsCloneFillElementList(int nElms, PsElmPtr elms);
-extern void PsDestroyFillElementList(int nElms, PsElmPtr elms);
-
-/*
- * Standard definitions
- */
-
-static char *S_StandardDefs = "\
-/d{def}bind def\
-/b{bind}bind d\
-/bd{b d}b d\
-/x{exch}bd\
-/xd{x d}bd\
-/dp{dup}bd\
-/t{true}bd\
-/f{false}bd\
-/p{pop}bd\
-/r{roll}bd\
-/c{copy}bd\
-/i{index}bd\
-/rp{repeat}bd\
-/n{newpath}bd\
-/w{setlinewidth}bd\
-/lc{setlinecap}bd\
-/lj{setlinejoin}bd\
-/sml{setmiterlimit}bd\
-/ds{setdash}bd\
-/ie{ifelse}bd\
-/len{length}bd\
-/m{moveto}bd\
-/rm{rmoveto}bd\
-/l{lineto}bd\
-/rl{rlineto}bd\
-/a{arc}bd\
-/an{arcn}bd\
-/st{stroke}bd\
-/fl{fill}bd\
-/ef{eofill}bd\
-/sp{showpage}bd\
-/cp{closepath}bd\
-/clp{clippath}bd\
-/cl{clip}bd\
-/pb{pathbbox}bd\
-/tr{translate}bd\
-/rt{rotate}bd\
-/dv{div}bd\
-/ml{mul}bd\
-/ad{add}bd\
-/ng{neg}bd\
-/scl{scale}bd\
-/sc{setrgbcolor}bd\
-/g{setgray}bd\
-/gs{gsave}bd\
-/gr{grestore}bd\
-/sv{save}bd\
-/rs{restore}bd\
-/mx{matrix}bd\
-/cm{currentmatrix}bd\
-/sm{setmatrix}bd\
-/ccm{concatmatrix}bd\
-/cc{concat}bd\
-/ff{findfont}bd\
-/mf{makefont}bd\
-/sf{setfont}bd\
-/cft{currentfont}bd\
-/fd{FontDirectory}bd\
-/sh{show}bd\
-/stw{stringwidth}bd\
-/ci{colorimage}bd\
-/ig{image}bd\
-/im{imagemask}bd\
-/cf{currentfile}bd\
-/rh{readhexstring}bd\
-/str{string}bd\
-/al{aload}bd\
-/wh{where}bd\
-/kn{known}bd\
-/stp{stopped}bd\
-/bg{begin}bd\
-/ed{end}bd\
-/fa{forall}bd\
-/pi{putinterval}bd\
-/mk{mark}bd\
-/ctm{cleartomark}bd\
-/df{definefont}bd\
-/cd{currentdict}bd\
-/db{20 dict dp bg}bd\
-/de{ed}bd\
-/languagelevel wh{p languagelevel}{1}ie\
- 1 eq{/makepattern{p}bd/setpattern{p}bd/setpagedevice{p}bd}if\
-/mp{makepattern}bd\
-/spt{setpattern}bd\
-/spd{setpagedevice}bd\
-"
-#ifdef XP_USE_FREETYPE
-"/trmoveto{currentfont /FontMatrix get transform rm}d"
-#endif /* XP_USE_FREETYPE */
-;
-
-/*
- * Composite definitions
- *
- *
- * XYr - Return X/Y dpi for device
- *
- * XYr <xdpi> <ydpi>
- *
- * Cs - Coordinate setup (for origin upper left)
- *
- * <orient(0,1,2,3)> Cs
- *
- * P - Draw a point
- *
- * <x> <y> P
- *
- * R - Add rectangle to path
- *
- * <x> <y> <w> <h> R
- *
- * Ac - Add arc to path
- *
- * <x> <y> <w> <h> <ang1> <ang2> Ac
- *
- * An - Add arc to path (counterclockwise)
- *
- * <x> <y> <w> <h> <ang1> <ang2> An
- *
- * Tf - Set font
- *
- * <font_name> <size> <iso> Tf
- *
- * Tfm - Set font with matrix
- *
- * <font_name> <matrix> <iso> Tfm
- *
- * T - Draw text
- *
- * <text> <x> <y> T
- *
- * Tb - Draw text with background color
- *
- * <text> <x> <y> <bg_red> <bg_green> <bg_blue> Tb
- *
- * Im1 - Image 1 bit monochrome imagemask
- *
- * <x> <y> <w> <h> <sw> <sh> Im1
- *
- * Im24 - Image 24 bit RGB color
- *
- * <x> <y> <w> <h> <sw> <sh> Im24
- *
- * Im1t - Image 1 bit monochrome imagemask (in tile)
- *
- * <data> <x> <y> <w> <h> <sw> <sh> Im1t
- *
- * Im24t - Image 24 bit RGB color (in tile)
- *
- * <data> <x> <y> <w> <h> <sw> <sh> Im24t
- */
-
-static char *S_CompositeDefs = "\
-/XYr{/currentpagedevice wh\
- {p currentpagedevice dp /HWResolution kn\
- {/HWResolution get al p}{p 300 300}ie}{300 300}ie}bd\
-/Cs{dp 0 eq{0 pHt tr XYr -1 x dv 72 ml x 1 x dv 72 ml x scl}if\
- dp 1 eq{90 rt XYr -1 x dv 72 ml x 1 x dv 72 ml x scl}if\
- dp 2 eq{pWd 0 tr XYr 1 x dv 72 ml x -1 x dv 72 ml x scl}if\
- 3 eq{pHt pWd tr 90 rt XYr 1 x dv 72 ml x -1 x dv 72 ml x scl}if}bd\
-/P{gs 1 w [] 0 ds 2 c m .1 ad x .1 ad x l st gr}bd\
-/R{4 2 r m 1 i 0 rl 0 x rl ng 0 rl cp}bd\
-/Ac{mx_ cm p 6 -2 r tr 4 2 r ng scl 0 0 .5 5 3 r a mx_ sm}bd\
-/An{mx_ cm p 6 -2 r tr 4 2 r ng scl 0 0 .5 5 3 r an mx_ sm}bd\
-/ISO{dp len dict bg{1 i/FID ne{d}{p p}ie}fa\
- /Encoding ISOLatin1Encoding d cd ed df}bd\
-/iN{dp len str cvs dp len x 1 i 3 ad str 2 c c p x p dp 3 -1 r(ISO)pi}bd\
-/Tp{{x dp iN dp fd x kn{x p dp/f_ x d ff}{dp/f_ x d x ff ISO}ie x}\
- {x dp/f_ x d ff x}ie}bd\
-/Tf{Tp[x 0 0 2 i ng 0 0] dp/fm_ x d mf sf}bd\
-/Tfm{Tp 1 -1 tm1_ scl tm2_ ccm dp/fm_ x d mf sf}bd\
-/T{m sh}bd\
-/Tb{gs sc f_ ff sf cft/FontMatrix get 3 get\
- cft/FontBBox get dp 1 get x 3 get 2 i ml 3 1 r ml\
- 0 0 m 4 i stw p 4 i 4 i m fm_ cc\
- 0 2 i rl dp 0 rl 0 2 i ng rl 0 3 i rl ng 0 rl cp fl p p\
- gr T}bd\
-/Im1{6 4 r tr scl t [3 i 0 0 5 i 0 0]{cf str1 rh p} im}bd\
-/Im1rev{6 4 r tr scl f [3 i 0 0 5 i 0 0]{cf str1 rh p} im}bd\
-/Im24{gs 6 4 r tr scl 8 [3 i 0 0 5 i 0 0]{cf str3 rh p} f 3 ci}bd\
-/Im1t{6 4 r tr scl t [3 i 0 0 5 i 0 0]{} im}bd\
-/Im24t{gs 6 4 r tr scl 8 [3 i 0 0 5 i 0 0]{} f 3 ci}bd\
-/ck2{/currentpagedevice wh \
-{p dp currentpagedevice dp 3 -1 r kn \
-{x get al p 3 -1 r eq 3 1 r eq and } \
-{p p p p t}ie} \
-{p p p t}ie}bd \
-/ck1{/currentpagedevice wh \
-{p dp currentpagedevice dp 3 -1 r kn \
-{x get eq} {p p p t}ie} \
-{p p t}ie}bd \
-/mtx{scl t [3 i 0 0 5 i 0 0]}bd \
-";
-
-char *pg_orient[] = {"Portrait","Landscape","Reverse Portrait","Reverse Landscape"};
-/*
- * Setup definitions
- */
-
-static char *S_SetupDefs = "\
- /mx_ mx d\
- /im_ mx d\
- /tm1_ mx d\
- /tm2_ mx d\
- /str3 3 str d\
- /str1 1 str d\
-";
-
-/*******************************************************************
- * PRIVATE FUNCTIONS *
- *******************************************************************/
-
-void
-S_Flush(PsOutPtr self)
-{
- int len;
-
- if( self->Buf[0] == '\0' )
- return;
-
- len = strlen(self->Buf);
-
- /* Append a newline char ('\n') if there isn't one there already */
- if( self->Buf[len-1] != '\n' )
- {
- self->Buf[len++] = '\n';
- self->Buf[len] = '\0';
- }
-
- (void)fwrite(self->Buf, len, 1, self->Fp);
-
- self->Buf[0] = '\0';
-}
-
-static void
-S_Comment(PsOutPtr self, char *comment)
-{
- S_Flush(self);
- strcpy(self->Buf, comment);
- S_Flush(self);
-}
-
-static void
-S_OutDefs(PsOutPtr self, char *defs)
-{
- int i, k=0;
- S_Flush(self);
- memset(self->Buf, 0, sizeof(self->Buf));
- for( i=0 ; defs[i]!='\0' ;)
- {
- if( k>70 && (i==0 || (i && defs[i-1]!='/')) &&
- (defs[i]==' ' || defs[i]=='/' || defs[i]=='{') )
- {
- S_Flush(self);
- k = 0;
- memset(self->Buf, 0, sizeof(self->Buf));
- }
- if( k && self->Buf[k-1]==' ' && defs[i]==' ' ) { i++; continue; }
- self->Buf[k] = defs[i];
- k++; i++;
- }
- S_Flush(self);
-}
-
-void
-S_OutNum(PsOutPtr self, float num)
-{
- int i;
- char buf[64];
- int len;
-
- sprintf(buf, "%.3f", num);
-
- /* Remove any zeros at the end */
- for( i=strlen(buf)-1 ; buf[i]=='0' ; i-- ); buf[i+1] = '\0';
- /* Remove '.' if it is the last character */
- i = strlen(buf)-1; if( buf[i]=='.' ) buf[i] = '\0';
-
- len = strlen(self->Buf);
- if( len > 0 )
- {
- self->Buf[len++] = ' ';
- self->Buf[len] = '\0';
- }
- strcpy(&self->Buf[len], buf);
- if( (len+i)>70 ) S_Flush(self);
-}
-
-static void
-S_OutStr(PsOutPtr self, char *txt, int txtl)
-{
- int i, k;
- char buf[1024];
- for( i=0,k=0 ; i<txtl ; i++ )
- {
- if( (txt[i]>=' ' && txt[i]<='~') &&
- txt[i]!='(' && txt[i]!=')' && txt[i]!='\\' )
- { buf[k] = txt[i]; k++; continue; }
- buf[k] = '\\'; k++;
- sprintf(&buf[k], "%03o", txt[i]&0xFF);
- /* Skip to the end of the buffer */
- while( buf[k] != '\0' )
- k++;
- }
- strcat(self->Buf, "(");
- i = strlen(self->Buf);
- memcpy(&self->Buf[i], buf, k);
- self->Buf[i+k] = '\0';
- strcat(self->Buf, ")");
- if( strlen(self->Buf)>70 ) S_Flush(self);
-}
-
-/* Same as S_OutStr() but takes |short *| instead of |char *| */
-static void
-S_OutStr16(PsOutPtr self, unsigned short *txt, int txtl)
-{
- int i, k;
- char buf[2048];
- for( i=0,k=0 ; i<txtl ; i++ )
- {
- if( (txt[i]>=' ' && txt[i]<='~') &&
- txt[i]!='(' && txt[i]!=')' && txt[i]!='\\' )
- { buf[k] = txt[i]; k++; continue; }
- buf[k] = '\\'; k++;
- sprintf(&buf[k], "%03o", txt[i]&0xFFFF);
- /* Skip to the end of the buffer */
- while( buf[k] != '\0' )
- k++;
- }
- strcat(self->Buf, "(");
- i = strlen(self->Buf);
- memcpy(&self->Buf[i], buf, k);
- self->Buf[i+k] = '\0';
- strcat(self->Buf, ")");
- if( strlen(self->Buf)>70 ) S_Flush(self);
-}
-
-void
-S_OutTok(PsOutPtr self, char *tok, int cr)
-{
- int len = strlen(self->Buf);
- if( len > 0 )
- {
- self->Buf[len++] = ' ';
- self->Buf[len] = '\0';
- }
- strcpy(&self->Buf[len], tok);
- if( cr ) S_Flush(self);
-}
-
-static void
-S_Color(PsOutPtr self, PsOutColor clr)
-{
- int ir, ig, ib;
- ir = PSOUTCOLOR_TO_REDBITS(clr);
- ig = PSOUTCOLOR_TO_GREENBITS(clr);
- ib = PSOUTCOLOR_TO_BLUEBITS(clr);
- if( ir==ig && ig==ib )
- { S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ir)); S_OutTok(self, "g", 1); }
- else
- {
- S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ir));
- S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ig));
- S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ib));
- S_OutTok(self, "sc", 1);
- }
-}
-
-static void
-S_SetPageDevice(PsOutPtr self, int orient, int count, int plex, int res,
- int wd, int ht, int isPage)
-{
- float fwd = ((float)wd/(float)res)*72.;
- float fht = ((float)ht/(float)res)*72.;
-
-#define USE_WORKAROUND_COPY_COUNT_BUG 1
-
-#ifdef USE_WORKAROUND_COPY_COUNT_BUG
- /* Workaround (see http://xprint.mozdev.org/bugs/show_bug.cgi?id=1861 -
- * 'Need workaround for bug 1378 ...') to avoid that we print n^2 copies
- * instead of n copies.
- * The problem is that we use both /NumCopies here but pass the
- * %copy-count% to the spooler, too.
- * But we only have to use _one_ way...
- *
- * The final fix for bug 1378 (http://xprint.mozdev.org/bugs/show_bug.cgi?id=1378 -
- * "PS DDX creates n^2 copies of a job instead of n copies") will back this
- * workaround out and replace it with a better solution.
- * (see mozilla.org bug 140030
- * (http://bugzilla.mozilla.org/show_bug.cgi?id=140030 - "Setting number
- * of copies causes too many copies to print") for the initial report for
- * this issue...)
- */
- count = 1;
-#endif /* USE_WORKAROUND_COPY_COUNT_BUG */
-
- S_OutTok(self, "/pWd", 0);
- S_OutNum(self, fwd);
- S_OutTok(self, "d /pHt", 0);
- S_OutNum(self, fht);
- S_OutTok(self, "d", 1);
-
- /*
- * if these are page attributes, have PostScript check to see if they
- * have changed. If not, don't do setpagedevice, since it will cause
- * a page flush and screw up duplex printing. Having PostScript check
- * means we don't have to keep track ourselves.
- */
- if(isPage) {
- S_OutNum(self, (float) orient);
- S_OutTok(self, "/Orientation ck1", 0);
- S_OutTok(self, "pWd pHt /PageSize ck2 and not {", 1);
- }
- S_OutTok(self, "{db", 0);
-
- S_OutTok(self, "/Orientation", 0);
- S_OutNum(self, (float) orient);
- S_OutTok(self, " d ", 0);
- S_OutTok(self, "/PageSize [pWd pHt] d", 0);
-
- S_OutTok(self, " de spd", 0);
- /*
- * save a flag to show if we failed to set orientation... determined
- * by both/either Orientation and/or PageSize, use this
- * later to set/not set orientation using Cs command.
- */
- S_OutTok(self,"}stp /orientationFailed x d", 1);
- /*
- * if these are page attributes, have PostScript check to see if they
- * have changed. If not, don't do setpagedevice, since it will cause
- * a page flush and screw up duplex printing. Having PostScript check
- * means we don't have to keep track ourselves.
- */
- if(isPage)
- {
- S_OutTok(self,"}if",1);
-
- S_OutTok(self, (plex==0)?"f":"t", 0);
- S_OutTok(self, "/Duplex ck1 ", 0);
-
- S_OutTok(self, (plex==2)?"t":"f", 0);
- S_OutTok(self, "/Tumble ck1 and ", 0);
-
-
- S_OutNum(self, (float)res);
- S_OutNum(self, (float)res);
- S_OutTok(self, " /HWResolution ck2 and", 0);
-
- if( count>1 )
- {
- S_OutNum(self, (float)count);
- S_OutTok(self, " /NumCopies", 0);
- S_OutTok(self, " ck1 and ", 0);
- }
- S_OutTok(self," not {",1);
- }
- S_OutTok(self, "{db", 0);
-
- S_OutTok(self, "/Duplex ", 0);
- S_OutTok(self, (plex==0)?"f":"t", 0);
- S_OutTok(self, " d ", 0);
-
- S_OutTok(self, "/Tumble ", 0);
- S_OutTok(self, (plex==2)?"t":"f", 0);
- S_OutTok(self, " d ", 0);
-
- S_OutTok(self, " /HWResolution [", 0);
- S_OutNum(self, (float)res);
- S_OutNum(self, (float)res);
- S_OutTok(self, "] d ", 0);
-
- if( count>1 )
- {
- S_OutTok(self, " /NumCopies", 0);
- S_OutNum(self, (float)count);
- S_OutTok(self, " d ", 0);
- }
- S_OutTok(self, " de spd}stp p", 1);
-
- if(isPage)
- {
- S_OutTok(self, "}if", 1);
- }
-}
-
-/*******************************************************************
- * PUBLIC FUNCTIONS *
- *******************************************************************/
-
-FILE *
-PsOut_ChangeFile(PsOutPtr self, FILE *fp)
-{
- FILE *nfp;
-
- nfp = self->Fp;
-
- self->Fp = fp;
-
- return nfp;
-}
-
-PsOutPtr
-PsOut_BeginFile(FILE *fp, char *title, int orient, int count, int plex, int res,
- int wd, int ht, Bool raw)
-{
- int i;
- char buffer[256+32]; /* enougth space for a title with 256 chars... */
-/*
- * Get ready to output PostScript header
- */
- PsOutPtr psout;
- psout = (PsOutPtr)xalloc(sizeof(PsOutRec));
- memset(psout, 0, sizeof(PsOutRec));
- psout->Fp = fp;
- psout->isRaw = raw;
- psout->pagenum = 0;
-
- if (!raw) {
-/*
- * Output PostScript header
- */
- /* GhostScript will rant about the missing BoundingBox if we use
- * "%!PS-Adobe-3.0 EPSF-3.0" here... */
- S_Comment(psout, "%!PS-Adobe-3.0");
-#ifdef XP_USE_FREETYPE
- {
- FT_Int ftmajor = 0,
- ftminor = 0,
- ftpatch = 0;
- extern FT_Library ftypeLibrary; /* defined in xc/lib/font/FreeType/ftfuncs.c */
-
- FT_Library_Version(ftypeLibrary, &ftmajor, &ftminor, &ftpatch);
- sprintf(buffer,
- "%%%%Creator: The X Print Server's PostScript DDX "
- "(%s, release %d, FreeType version %d.%d.%d)",
- VENDOR_STRING, VENDOR_RELEASE,
- (int)ftmajor, (int)ftminor, (int)ftpatch);
- }
-#else
- sprintf(buffer,
- "%%%%Creator: The X Print Server's PostScript DDX (%s, release %d)",
- VENDOR_STRING, VENDOR_RELEASE);
-#endif /* XP_USE_FREETYPE */
- S_Comment(psout, buffer);
-
- if (title)
- {
- sprintf(buffer, "%%%%Title: %.256s", title);
- S_Comment(psout, buffer);
- }
- S_Comment(psout, "%%EndComments");
- S_Comment(psout, "%%BeginProlog");
- S_Comment(psout, "%%BeginProcSet: XServer_PS_Functions");
- S_OutDefs(psout, S_StandardDefs);
- S_OutDefs(psout, S_CompositeDefs);
- S_Comment(psout, "%%EndProcSet");
- S_Comment(psout, "%%EndProlog");
- S_Comment(psout, "%%BeginSetup");
- /* set document level page attributes */
- S_SetPageDevice(psout, orient, count, plex, res, wd, ht, 0);
- S_Comment(psout, "%%Pages: atend");
- S_OutDefs(psout, S_SetupDefs);
- S_Comment(psout, "%%EndSetup");
- }
-/*
- * Initialize the structure
- */
- psout->CurColor = PSOUTCOLOR_NOCOLOR;
- psout->LineWidth = 1;
- psout->LineCap = PsCButt;
- psout->LineJoin = PsJMiter;
- psout->NDashes = 0;
- psout->Dashes = (int *)0;
- psout->FontName = (char *)0;
- psout->FontSize = 0;
- psout->start_image = 0;
- for( i=0 ; i<4 ; i++ ) psout->FontMtx[i] = 0.;
- psout->ImageFormat = 0;
- return(psout);
-}
-
-void
-PsOut_EndFile(PsOutPtr self, int closeFile)
-{
- char coms[50];
- int i;
-
- if (!self)
- return;
-
- if (!self->isRaw) {
- S_Comment(self,"%%Trailer");
- sprintf(coms,"%%%%Pages: %d", self->pagenum);
- S_Comment(self, coms);
- S_Comment(self, "%%EOF");
- }
- if( self->NDashes && self->Dashes ) xfree(self->Dashes);
- if( self->FontName ) xfree(self->FontName);
- if( self->Patterns ) xfree(self->Patterns);
- if( self->Clip.rects ) xfree(self->Clip.rects);
- if( closeFile ) fclose(self->Fp);
- xfree(self);
-}
-
-void
-PsOut_BeginPage(PsOutPtr self, int orient, int count, int plex, int res,
- int wd, int ht)
-{
- char coms[50];
-
-/*** comment for pagenumbers *****/
-
- S_Comment(self,"%%PageHeader");
- self->pagenum++;
- sprintf(coms,"%%%%Page: %d %d", self->pagenum, self->pagenum);
- S_Comment(self, coms);
- sprintf(coms,"%%%%PageOrientation: %s",pg_orient[orient]);
- S_Comment(self, coms);
-
-/*** end comment *****************/
-
- /* set page level page attributes */
- S_SetPageDevice(self, orient, count, plex, res, wd, ht, 1);
-
- S_OutTok(self, "gs ", 0);
- /*
- * check to see if we set orientation already; if it wasn't set,
- * use Cs to set orientation here.
- */
- S_OutNum(self, (float)orient);
- S_OutTok(self, "orientationFailed { ", 0);
- S_OutNum(self, (float)orient);
- S_OutTok(self, " } { 0 }ie Cs 100 sml gs", 1);
-}
-
-void
-PsOut_EndPage(PsOutPtr self)
-{
- S_OutTok(self, "gr gr sp", 1);
-
- /* did grestore: mark attributes 'dirty' so they will be re-sent */
- PsOut_DirtyAttributes(self);
-
-/*** comment for pagenumbers *****/
-
- S_Comment(self,"%%PageTrailer");
-
-/*** end comment *****************/
-}
-
-void
-PsOut_DirtyAttributes(PsOutPtr self)
-{
- int i;
- self->CurColor = PSOUTCOLOR_NOCOLOR;
- self->LineWidth = -1;
- self->LineCap = (PsCapEnum)-1;
- self->LineJoin = (PsJoinEnum)-1;
- self->NDashes = -1;
- self->FontSize = -1;
- for( i=0 ; i<4 ; i++ ) self->FontMtx[i] = -1.;
- if( self->Dashes ) { xfree(self->Dashes); self->Dashes = (int *)0; }
- if( self->FontName ) { xfree(self->FontName); self->FontName = (char *)0; }
-}
-
-void
-PsOut_Comment(PsOutPtr self, char *comment)
-{
- S_Comment(self, comment);
-}
-
-void
-PsOut_Offset(PsOutPtr self, int x, int y)
-{
- self->XOff = x;
- self->YOff = y;
-}
-
-void
-PsOut_Clip(PsOutPtr self, int clpTyp, PsClipPtr clpinf)
-{
- int i, k;
- int changed = 0;
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InTile ) return;
- if( self->InFrame ) xo = yo = 0;
- if( clpTyp!=self->ClipType ) changed = 1;
- else
- {
- if( clpinf->nRects!=self->Clip.nRects ) changed = 1;
- else
- {
- if( clpinf->nOutterClips!=self->Clip.nOutterClips ) changed = 1;
- else
- {
- for( i=0 ; i<clpinf->nOutterClips ; i++ )
- {
- if( memcmp(&clpinf->outterClips[i], &self->Clip.outterClips[i],
- sizeof(PsRectRec))!=0 ) break;
- }
- if( i<clpinf->nOutterClips ) changed = 1;
- else
- {
- for( i=0 ; i<clpinf->nRects ; i++ )
- {
- if( memcmp(&clpinf->rects[i], &self->Clip.rects[i],
- sizeof(PsRectRec))!=0 ) { changed = 1; break; }
- }
- }
- }
- }
- if( clpinf->nElms!=self->Clip.nElms ) changed = 1;
- else
- {
- for( i=0 ; i<clpinf->nElms ; i++ )
- {
- if( clpinf->elms[i].type!=PSOUT_POINTS )
- {
- if( memcmp(&clpinf->elms[i], &self->Clip.elms[i],
- sizeof(PsElmRec))!=0 ) { changed = 1; break; }
- }
- else
- {
- if( clpinf->elms[i].type!=self->Clip.elms[i].type ||
- clpinf->elms[i].nPoints!=self->Clip.elms[i].nPoints )
- { changed = 1; break; }
- else
- {
- for( k=0 ; k<clpinf->elms[i].nPoints ; k++ )
- {
- if( memcmp(&clpinf->elms[i].c.points[k],
- &self->Clip.elms[i].c.points[k], sizeof(PsPointRec)) )
- { changed = 1; break; }
- }
- if( changed ) break;
- }
- }
- }
- }
- }
-
- if( self->Clip.rects ) xfree(self->Clip.rects);
- if( self->Clip.outterClips ) xfree(self->Clip.outterClips);
- if( self->Clip.elms )
- PsDestroyFillElementList(self->Clip.nElms, self->Clip.elms);
- self->ClipType = clpTyp;
- self->Clip.nRects = clpinf->nRects;
- self->Clip.nElms = clpinf->nElms;
- self->Clip.nOutterClips = clpinf->nOutterClips;
- if( clpinf->nRects )
- {
- self->Clip.rects = (PsRectPtr)xalloc(clpinf->nRects*sizeof(PsRectRec));
- memcpy(self->Clip.rects, clpinf->rects, clpinf->nRects*sizeof(PsRectRec));
- }
- else self->Clip.rects = 0;
- if( clpinf->nOutterClips )
- {
- self->Clip.outterClips = (PsRectPtr)xalloc(clpinf->nOutterClips*
- sizeof(PsRectRec));
- memcpy(self->Clip.outterClips, clpinf->outterClips,
- clpinf->nOutterClips*sizeof(PsRectRec));
- }
- else self->Clip.outterClips = 0;
- if( clpinf->nElms )
- self->Clip.elms = PsCloneFillElementList(clpinf->nElms, clpinf->elms);
- else self->Clip.elms = 0;
-
- PsOut_DirtyAttributes(self);
- S_OutTok(self, "gr gs", 1);
- if( self->Clip.nOutterClips )
- {
- for( i=0 ; i<self->Clip.nOutterClips ; i++ )
- {
- S_OutNum(self, (float)(self->Clip.outterClips[i].x));
- S_OutNum(self, (float)(self->Clip.outterClips[i].y));
- S_OutNum(self, (float)self->Clip.outterClips[i].w);
- S_OutNum(self, (float)self->Clip.outterClips[i].h);
- S_OutTok(self, "R", 1);
- }
- S_OutTok(self, "cl n", 1);
- }
- if( self->Clip.nRects )
- {
- for( i=0 ; i<self->Clip.nRects ; i++ )
- {
- S_OutNum(self, (float)(self->Clip.rects[i].x+xo));
- S_OutNum(self, (float)(self->Clip.rects[i].y+yo));
- S_OutNum(self, (float)self->Clip.rects[i].w);
- S_OutNum(self, (float)self->Clip.rects[i].h);
- S_OutTok(self, "R", 1);
- }
- S_OutTok(self, "cl n", 1);
- }
- if( self->Clip.nElms )
- {
- PsElmPtr elm = self->Clip.elms;
- for( i=0 ; i<self->Clip.nElms ; i++,elm++ )
- {
- switch(elm->type)
- {
- case PSOUT_POINTS:
- for( k=0 ; k<elm->nPoints ; k++ )
- {
- S_OutNum(self, (float)elm->c.points[k].x+xo);
- S_OutNum(self, (float)elm->c.points[k].y+yo);
- if( k==0 ) S_OutTok(self, "m", 0);
- else S_OutTok(self, "l", 0);
- }
- S_OutTok(self, "cp", 1);
- break;
- case PSOUT_RECT:
- S_OutNum(self, (float)elm->c.rect.x+xo);
- S_OutNum(self, (float)elm->c.rect.y+yo);
- S_OutNum(self, (float)elm->c.rect.w);
- S_OutNum(self, (float)elm->c.rect.h);
- S_OutTok(self, "R", 1);
- break;
- case PSOUT_ARC:
- if( elm->c.arc.style==PsPieSlice )
- {
- S_OutNum(self, (float)elm->c.arc.x+xo+(float)elm->c.arc.w/2.);
- S_OutNum(self, (float)elm->c.arc.y+yo+(float)elm->c.arc.h/2.);
- S_OutTok(self, "m", 0);
- }
- S_OutNum(self, (float)elm->c.arc.x+xo+(float)elm->c.arc.w/2.);
- S_OutNum(self, (float)elm->c.arc.y+yo+(float)elm->c.arc.h/2.);
- S_OutNum(self, (float)elm->c.arc.w);
- S_OutNum(self, (float)elm->c.arc.h);
- S_OutNum(self, (float)elm->c.arc.a1/64.);
- S_OutNum(self, (float)elm->c.arc.a1/64.+(float)elm->c.arc.a2/64.);
- if( elm->c.arc.a2<0 ) S_OutTok(self, "An cp", 1);
- else S_OutTok(self, "Ac cp", 1);
- break;
- }
- }
- S_OutTok(self, "cl n", 1);
- }
-}
-
-void
-PsOut_Color(PsOutPtr self, PsOutColor clr)
-{
- if( clr==self->CurColor || self->InTile>=PsStip ) return;
- self->CurColor = clr;
- S_Color(self, clr);
-}
-
-void
-PsOut_FillRule(PsOutPtr self, PsRuleEnum rule)
-{
- self->FillRule = rule;
-}
-
-void
-PsOut_LineAttrs(PsOutPtr self, int wd, PsCapEnum cap, PsJoinEnum join,
- int nDsh, int *dsh, int dshOff, PsOutColor bclr)
-{
- int i;
- int same = 1;
-
- if( wd!=self->LineWidth && wd>=0 )
- {
- if( wd==0 ) wd = 1;
- self->LineWidth = wd;
- S_OutNum(self, (float)wd); S_OutTok(self, "w", 1);
- }
- if( cap!=self->LineCap )
- {
- self->LineCap = cap;
- S_OutNum(self, (float)cap); S_OutTok(self, "lc", 1);
- }
- if( join!=self->LineJoin )
- {
- self->LineJoin = join;
- S_OutNum(self, (float)join); S_OutTok(self, "lj", 1);
- }
- if( nDsh!=self->NDashes ) same = 0;
- else if( dshOff!=self->DashOffset ) same = 0;
- else if( nDsh )
- {
- for( i=0 ; i<nDsh ; i++ )
- { if( dsh[i]!=self->Dashes[i] ) break; }
- if( i<nDsh ) same = 0;
- }
- if( !same )
- {
- if( self->NDashes && self->Dashes )
- { xfree(self->Dashes); self->Dashes = (int *)0; }
- self->NDashes = nDsh;
- self->DashOffset = dshOff;
- if( nDsh ) self->Dashes = (int *)xalloc(sizeof(int)*nDsh);
- S_OutTok(self, "[", 0);
- for( i=0 ; i<nDsh ; i++ )
- {
- self->Dashes[i] = dsh[i];
- S_OutNum(self, (float)dsh[i]);
- }
- S_OutTok(self, "]", 0);
- S_OutNum(self, (float)dshOff);
- S_OutTok(self, "ds", 1);
- }
-
- if( nDsh )
- self->LineBClr = bclr;
- else
- bclr = PSOUTCOLOR_NOCOLOR;
-}
-
-void
-PsOut_TextAttrs(PsOutPtr self, char *fnam, int siz, int iso)
-{
- int i;
- char buf[256];
- if( self->FontName && strcmp(fnam, self->FontName)==0 &&
- siz==self->FontSize ) return;
- if( self->FontName ) xfree(self->FontName);
- self->FontName = (char *)xalloc(strlen(fnam)+1);
- strcpy(self->FontName, fnam);
- self->FontSize = siz;
- for( i=0 ; i<4 ; i++ ) self->FontMtx[i] = -1.;
- strcpy(buf, "/"); strcat(buf, fnam);
- S_OutTok(self, buf, 0);
- S_OutNum(self, (float)siz);
- if( iso ) S_OutTok(self, "t", 0);
- else S_OutTok(self, "f", 0);
- S_OutTok(self, "Tf", 1);
-}
-
-void
-PsOut_TextAttrsMtx(PsOutPtr self, char *fnam, float *mtx, int iso)
-{
- int i;
- char buf[256];
- if( self->FontName && strcmp(fnam, self->FontName)==0 &&
- mtx[0]==self->FontMtx[0] && mtx[1]==self->FontMtx[1] &&
- mtx[2]==self->FontMtx[2] && mtx[3]==self->FontMtx[3] ) return;
- if( self->FontName ) xfree(self->FontName);
- self->FontName = (char *)xalloc(strlen(fnam)+1);
- strcpy(self->FontName, fnam);
- for( i=0 ; i<4 ; i++ ) self->FontMtx[i] = mtx[i];
- self->FontSize = -1;
- strcpy(buf, "/"); strcat(buf, fnam); strcat(buf, " [");
- S_OutTok(self, buf, 0);
- for( i=0 ; i<4 ; i++ ) S_OutNum(self, mtx[i]);
- S_OutTok(self, "0 0]", 0);
- if( iso ) S_OutTok(self, "t", 0);
- else S_OutTok(self, "f", 0);
- S_OutTok(self, "Tfm", 1);
-}
-
-void
-PsOut_Polygon(PsOutPtr self, int nPts, PsPointPtr pts)
-{
- int i;
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- if( nPts<=2 ) return;
- for( i=0 ; i<nPts ; i++ )
- {
- S_OutNum(self, (float)(pts[i].x+xo));
- S_OutNum(self, (float)(pts[i].y+yo));
- if( i==0 ) S_OutTok(self, "m", 0);
- else S_OutTok(self, "l", 0);
- }
- if( self->FillRule==PsEvenOdd ) S_OutTok(self, "cp ef", 1);
- else S_OutTok(self, "cp fl", 1);
-}
-
-void
-PsOut_FillRect(PsOutPtr self, int x, int y, int w, int h)
-{
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- x += xo; y += yo;
- S_OutNum(self, (float)x);
- S_OutNum(self, (float)y);
- S_OutNum(self, (float)w);
- S_OutNum(self, (float)h);
- S_OutTok(self, "R fl", 1);
-}
-
-void
-PsOut_FillArc(PsOutPtr self, int x, int y, int w, int h,
- float ang1, float ang2, PsArcEnum style)
-{
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- x += xo; y += yo;
- if( style==PsPieSlice )
- {
- S_OutNum(self, (float)x+(float)w/2.);
- S_OutNum(self, (float)y+(float)h/2.);
- S_OutTok(self, "m", 0);
- }
- S_OutNum(self, (float)x+(float)w/2.);
- S_OutNum(self, (float)y+(float)h/2.);
- S_OutNum(self, (float)w);
- S_OutNum(self, (float)h);
- S_OutNum(self, ang1);
- S_OutNum(self, ang1+ang2);
- if( ang2<0 ) S_OutTok(self, "An cp fl", 1);
- else S_OutTok(self, "Ac cp fl", 1);
-}
-
-void
-PsOut_Lines(PsOutPtr self, int nPts, PsPointPtr pts)
-{
- int i;
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- if( nPts<1 ) return;
- for( i=0 ; i<nPts ; i++ )
- {
- S_OutNum(self, (float)(pts[i].x+xo));
- S_OutNum(self, (float)(pts[i].y+yo));
- if( i==0 ) S_OutTok(self, "m", 0);
- else S_OutTok(self, "l", 0);
- }
- if( self->LineBClr != PSOUTCOLOR_NOCOLOR )
- {
- S_OutTok(self, "gs", 0);
- S_Color(self, self->LineBClr);
- S_OutTok(self, "[] 0 ds st gr", 0);
- }
- S_OutTok(self, "st", 1);
-}
-
-void
-PsOut_Points(PsOutPtr self, int nPts, PsPointPtr pts)
-{
- int i;
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- if( nPts<1 ) return;
- for( i=0 ; i<nPts ; i++ )
- {
- S_OutNum(self, (float)(pts[i].x+xo));
- S_OutNum(self, (float)(pts[i].y+yo));
- S_OutTok(self, "P", 1);
- }
-}
-
-void
-PsOut_DrawRect(PsOutPtr self, int x, int y, int w, int h)
-{
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- x += xo; y += yo;
- S_OutNum(self, (float)x);
- S_OutNum(self, (float)y);
- S_OutNum(self, (float)w);
- S_OutNum(self, (float)h);
- S_OutTok(self, "R", 0);
- if( self->LineBClr != PSOUTCOLOR_NOCOLOR )
- {
- S_OutTok(self, "gs", 0);
- S_Color(self, self->LineBClr);
- S_OutTok(self, "[] 0 ds st gr", 0);
- }
- S_OutTok(self, "st", 1);
-}
-
-void
-PsOut_DrawArc(PsOutPtr self, int x, int y, int w, int h,
- float ang1, float ang2)
-{
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- x += xo; y += yo;
- S_OutNum(self, (float)x+(float)w/2.);
- S_OutNum(self, (float)y+(float)h/2.);
- S_OutNum(self, (float)w);
- S_OutNum(self, (float)h);
- S_OutNum(self, ang1);
- S_OutNum(self, ang1+ang2);
- if( ang2<0 ) S_OutTok(self, "An", 0);
- else S_OutTok(self, "Ac", 0);
- if( self->LineBClr != PSOUTCOLOR_NOCOLOR )
- {
- S_OutTok(self, "gs", 0);
- S_Color(self, self->LineBClr);
- S_OutTok(self, "[] 0 ds st gr", 0);
- }
- S_OutTok(self, "st", 1);
-}
-
-void
-PsOut_Text(PsOutPtr self, int x, int y, char *text, int textl, PsOutColor bclr)
-{
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- x += xo; y += yo;
- S_OutStr(self, text, textl);
- S_OutNum(self, (float)x);
- S_OutNum(self, (float)y);
- if( bclr == PSOUTCOLOR_NOCOLOR )
- S_OutTok(self, "T", 1);
- else
- {
- int ir = PSOUTCOLOR_TO_REDBITS(bclr);
- int ig = PSOUTCOLOR_TO_GREENBITS(bclr);
- int ib = PSOUTCOLOR_TO_BLUEBITS(bclr);
-
- S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ir));
- S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ig));
- S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ib));
- S_OutTok(self, "Tb", 1);
- }
-}
-
-void
-PsOut_Text16(PsOutPtr self, int x, int y, unsigned short *text, int textl, PsOutColor bclr)
-{
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- x += xo; y += yo;
- S_OutStr16(self, text, textl);
- S_OutNum(self, (float)x);
- S_OutNum(self, (float)y);
- if( bclr == PSOUTCOLOR_NOCOLOR )
- S_OutTok(self, "T", 1);
- else
- {
- int ir = PSOUTCOLOR_TO_REDBITS(bclr);
- int ig = PSOUTCOLOR_TO_GREENBITS(bclr);
- int ib = PSOUTCOLOR_TO_BLUEBITS(bclr);
- S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ir));
- S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ig));
- S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ib));
- S_OutTok(self, "Tb", 1);
- }
-}
-
-#ifdef BM_CACHE
-void /* new */
-PsOut_ImageCache(PsOutPtr self, int x, int y, long cache_id, PsOutColor bclr, PsOutColor fclr)
-{
- char cacheID[10];
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- x += xo; y += yo;
- sprintf(cacheID, "c%di", cache_id);
-
- S_OutNum(self, (float)x);
- S_OutNum(self, (float)y);
-
- if( fclr==PSOUTCOLOR_WHITE )
- {
- int ir = PSOUTCOLOR_TO_REDBITS(bclr);
- int ig = PSOUTCOLOR_TO_GREENBITS(bclr);
- int ib = PSOUTCOLOR_TO_BLUEBITS(bclr);
-
- if( ir==ig && ig==ib )
- S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ir));
- else
- S_OutNum(self, (float)0);
- self->RevImage = 1;
- }
- else
- {
- int ir = PSOUTCOLOR_TO_REDBITS(fclr);
- int ig = PSOUTCOLOR_TO_GREENBITS(fclr);
- int ib = PSOUTCOLOR_TO_BLUEBITS(fclr);
-
- if( ir==ig && ig==ib )
- S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ir));
- else
- S_OutNum(self, (float)0);
- }
-
- S_OutTok(self, cacheID, 1);
-} /* new */
-
-void /* new */
-PsOut_BeginImageCache(PsOutPtr self, long cache_id)
-{
- char cacheID[10];
-
- sprintf(cacheID, "/c%di {", cache_id);
-
- S_OutTok(self, cacheID, 0);
-} /* new */
-
-void /* new */
-PsOut_EndImageCache(PsOutPtr self)
-{
- S_OutTok(self, "}bd", 1);
-} /* new */
-#endif
-
-void
-PsOut_BeginImage(PsOutPtr self, PsOutColor bclr, PsOutColor fclr, int x, int y,
- int w, int h, int sw, int sh, int format)
-{
- PsOutColor savClr = self->CurColor;
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- x += xo; y += yo;
- if( self->InTile )
- {
- if( self->InTile>=PsStip && format!=1 ) { self->ImgSkip = 1; return; }
- self->ImgBClr = bclr; self->ImgFClr = fclr;
- self->ImgX = x; self->ImgY = y;
- self->ImgW = w; self->ImgH = h;
- self->SclW = sw; self->SclH = sh;
- S_OutTok(self, "<", 0);
- self->ImageFormat = format;
- self->RevImage = 0;
- if( self->InTile==PsTile && format==1 && fclr==PSOUTCOLOR_WHITE )
- self->RevImage = 1;
- return;
- }
-
- self->RevImage = 0;
- if( format==1 )
- {
- S_OutTok(self, "gs", 0);
- if( fclr==PSOUTCOLOR_WHITE )
- {
- PsOut_Color(self, fclr);
- PsOut_FillRect(self, x, y, sw, sh);
- PsOut_Color(self, bclr);
- self->RevImage = 1;
- }
- else
- {
- PsOut_Color(self, bclr);
- PsOut_FillRect(self, x, y, sw, sh);
- PsOut_Color(self, fclr);
- }
- }
- S_OutNum(self, (float)x);
- S_OutNum(self, (float)y);
- S_OutNum(self, (float)w);
- S_OutNum(self, (float)h);
- S_OutNum(self, (float)sw);
- S_OutNum(self, (float)sh);
- if( format==1 ) {
- if(self->RevImage)
- S_OutTok(self, "Im1rev", 1);
- else
- S_OutTok(self, "Im1", 1);
- }
- else S_OutTok(self, "Im24", 1);
- self->ImageFormat = format;
- self->CurColor = savClr;
-}
-
-void
-PsOut_BeginImageIM(PsOutPtr self, PsOutColor bclr, PsOutColor fclr, int x, int y,
- int w, int h, int sw, int sh, int format)
-{
- PsOutColor savClr = self->CurColor;
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- x += xo; y += yo;
- if( self->InTile )
- {
- if( self->InTile>=PsStip && format!=1 ) { self->ImgSkip = 1; return; }
- self->ImgBClr = bclr; self->ImgFClr = fclr;
- self->ImgX = x; self->ImgY = y;
- self->ImgW = w; self->ImgH = h;
- self->SclW = sw; self->SclH = sh;
- S_OutTok(self, "<", 0);
- self->ImageFormat = format;
- self->RevImage = 0;
- if( self->InTile==PsTile && format==1 && fclr==PSOUTCOLOR_WHITE )
- self->RevImage = 1;
- return;
- }
-
- self->RevImage = 0;
- if( format==1 )
- {
- S_OutTok(self, "gs", 0);
-#ifdef BM_CACHE
- S_OutTok(self, "g", 1);
-#else
- if( fclr==PSOUTCOLOR_WHITE )
- {
- PsOut_Color(self, bclr);
- self->RevImage = 1;
- }
- else
- {
- PsOut_Color(self, fclr);
- }
-#endif
- }
-
-#ifdef BM_CACHE
- S_OutTok(self, "tr", 0); /* new */
-#else
- S_OutNum(self, (float)x);
- S_OutNum(self, (float)y);
-#endif
- S_OutNum(self, (float)w);
- S_OutNum(self, (float)h);
- S_OutNum(self, (float)sw);
- S_OutNum(self, (float)sh);
-#ifdef BM_CACHE
- S_OutTok(self, "mtx", 1); /* new */
- S_OutTok(self, "<", 0); /* new */
- self->start_image = 1;
-#else
- if( format==1 ){
- if(self->RevImage)
- S_OutTok(self, "Im1rev", 1);
- else
- S_OutTok(self, "Im1", 1);
- }
- else S_OutTok(self, "Im24", 1);
-#endif
- self->ImageFormat = format;
- self->CurColor = savClr;
-}
-
-void
-PsOut_EndImage(PsOutPtr self)
-{
- if( self->ImgSkip ) { self->ImgSkip = 0; return; }
- if( self->InTile )
- {
- S_OutTok(self, ">", 1);
- if( self->ImageFormat==1 && self->InTile==PsTile )
- {
- if( self->ImgFClr==PSOUTCOLOR_WHITE )
- {
- PsOut_Color(self, self->ImgFClr);
- PsOut_FillRect(self, self->ImgX, self->ImgY, self->SclW, self->SclH);
- PsOut_Color(self, self->ImgBClr);
- }
- else
- {
- PsOut_Color(self, self->ImgBClr);
- PsOut_FillRect(self, self->ImgX, self->ImgY, self->SclW, self->SclH);
- PsOut_Color(self, self->ImgFClr);
- }
- }
- S_OutNum(self, (float)self->ImgX);
- S_OutNum(self, (float)self->ImgY);
- S_OutNum(self, (float)self->ImgW);
- S_OutNum(self, (float)self->ImgH);
- S_OutNum(self, (float)self->SclW);
- S_OutNum(self, (float)self->SclH);
- if( self->ImageFormat==1 ) S_OutTok(self, "Im1t", 1);
- else S_OutTok(self, "Im24t", 1);
- self->ImageFormat = 0;
- self->RevImage = 0;
- return;
- }
- /*
- * Bug 4639307: Move flush before "> im" to get all of bitmap into ps file.
- */
- S_Flush(self);
-#ifdef BM_CACHE
- if(self->start_image)
- S_OutTok(self, "> im", 1); /* new */
-#endif
- self->ImageFormat = 0;
- self->RevImage = 0;
-#ifdef BM_CACHE
- if(self->start_image)
- {
- self->start_image = 0;
- S_OutTok(self, "gr", 0);
- }
- else
- S_OutTok(self, "gr", 1);
-#else
- S_OutTok(self, "gr", 1);
-#endif
-}
-
-void
-PsOut_OutImageBytes(PsOutPtr self, int nBytes, char *bytes)
-{
- int i;
- int b;
- int len;
- const char hex[] = { '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
-
- if( (!self->ImageFormat) || self->ImgSkip ) return;
-
- len = strlen(self->Buf);
-
- for( i=0 ; i<nBytes ; i++ )
- {
- if( self->RevImage ) b = (int)((bytes[i]^0xFF)&0xFF);
- else b = (int)(bytes[i]&0xFF);
-
- self->Buf[len++] = hex[(b&0xF0) >> 4];
- self->Buf[len++] = hex[(b&0x0F)];
- self->Buf[len] = '\0';
-
- if( len>70 )
- {
- S_Flush(self);
- len = 0;
- }
- }
-}
-
-void
-PsOut_BeginFrame(PsOutPtr self, int xoff, int yoff, int x, int y,
- int w, int h)
-{
- int xo = self->XOff;
- int yo = self->YOff;
-
- if( self->InFrame ) xo = yo = 0;
- S_OutTok(self, "gs", 0);
- S_OutNum(self, (float)(x+xo));
- S_OutNum(self, (float)(y+yo));
- S_OutNum(self, (float)w);
- S_OutNum(self, (float)h);
- S_OutTok(self, "R cl n", 0);
- xoff += xo; yoff += yo;
- if( xoff || yoff )
- {
- S_OutNum(self, (float)xoff);
- S_OutNum(self, (float)yoff);
- S_OutTok(self, "tr", 0);
- }
- S_OutTok(self, "gs", 1);
- self->InFrame += 1;
-}
-
-void
-PsOut_EndFrame(PsOutPtr self)
-{
- self->InFrame -= 1;
- if( self->InFrame<0 ) self->InFrame = 0;
- S_OutTok(self, "gr gr", 1);
- PsOut_DirtyAttributes(self);
-}
-
-int
-PsOut_BeginPattern(PsOutPtr self, void *tag, int w, int h, PsFillEnum type,
- PsOutColor bclr, PsOutColor fclr)
-{
- int i;
- char key[64];
-
- for( i=0 ; i<self->NPatterns ; i++ )
- { if( self->Patterns[i].tag==tag && self->Patterns[i].type==type ) break; }
- if( i<self->NPatterns ) return(1);
- if( (self->NPatterns+1)>self->MxPatterns )
- {
- if( self->Patterns )
- {
- self->MxPatterns *= 2;
- self->Patterns =
- (PsPatPtr)xrealloc(self->Patterns, sizeof(PsPatRec)*self->MxPatterns);
- }
- else
- {
- self->MxPatterns = 64;
- self->Patterns = (PsPatPtr)xalloc(sizeof(PsPatRec)*self->MxPatterns);
- }
- }
- self->Patterns[self->NPatterns].tag = tag;
- self->Patterns[self->NPatterns].type = type;
- sprintf(key, "/ %d", (int)tag);
- switch(type) {
- case PsTile: key[1] = 't'; break;
- case PsStip: key[1] = 's'; break;
- case PsOpStip: key[1] = 'o'; break; }
- S_OutTok(self, key, 0);
- S_OutTok(self, "db/PatternType 1 d/PaintType 1 d", 0);
- S_OutTok(self, "/TilingType 1 d/BBox[0 0", 0);
- S_OutNum(self, (float)w);
- S_OutNum(self, (float)h);
- S_OutTok(self, "]d/XStep", 0);
- S_OutNum(self, (float)w);
- S_OutTok(self, "d/YStep", 0);
- S_OutNum(self, (float)h);
- S_OutTok(self, "d/PaintProc{bg sv", 1);
- if( type==PsOpStip )
- {
- S_Color(self, bclr);
- S_OutTok(self, "0 0", 0);
- S_OutNum(self, (float)w);
- S_OutNum(self, (float)h);
- S_OutTok(self, "R fl", 1);
- }
- if( type!=PsTile ) S_Color(self, fclr);
- self->NPatterns += 1;
- self->InTile = type;
- return(0);
-}
-
-void
-PsOut_EndPattern(PsOutPtr self)
-{
- self->InTile = PsSolid;
- S_OutTok(self, "rs ed}d de im_ mp d", 1);
-}
-
-void
-PsOut_SetPattern(PsOutPtr self, void *tag, PsFillEnum type)
-{
- int i;
- char key[64];
-
- for( i=0 ; i<self->NPatterns ; i++ )
- { if( tag==self->Patterns[i].tag && type==self->Patterns[i].type ) break; }
- if( i>=self->NPatterns ) return;
- sprintf(key, " %d", (int)tag);
- switch(type) {
- case PsTile: key[0] = 't'; break;
- case PsStip: key[0] = 's'; break;
- case PsOpStip: key[0] = 'o'; break; }
- S_OutTok(self, key, 0);
- S_OutTok(self, "spt", 1);
- self->CurColor = PSOUTCOLOR_NOCOLOR;
-}
-
-void
-PsOut_RawData(PsOutPtr self, char *data, int len)
-{
- S_Flush(self);
- if (!ferror(self->Fp)) {
- (void) fwrite(data, 1, len, self->Fp);
- }
-}
-
-typedef enum PsDownfontFontType_
-{
- PsDFT_Type1PFA=0,
- PsDFT_Type1PFB,
- PsDFT_TrueType /* not implemented yet */
-} PsDownfontFontType;
-
-/* Download a PS Type1 font */
-int
-PsOut_DownloadType1(PsOutPtr self, const char *auditmsg, const char *name, const char *fname)
-{
- int i;
- int stt;
- char buf[256];
- FILE *fp;
- PsDownfontFontType type;
-
- fp = fopen(fname, "r");
- if( !fp )
- return 0;
-
-#ifdef DEBUG_gisburn
- /* This should be log-able! */
- fprintf(stderr, "PsOut_DownloadType1: %s: Downloading '%s' from '%s'\n", auditmsg, name, fname);
-#endif /* DEBUG_gisburn */
-
- fread(buf, 32, 1, fp);
- fseek(fp, (long)0, 0);
-
- /* Is this a Adobe PostScript Type 1 binary font (PFB) ? */
- if( (buf[0]&0xFF)==0x80 && (buf[1]&0xFF)==0x01 )
- {
- type = PsDFT_Type1PFB;
- }
- /* Is this a Adobe PostScript ASCII font (PFA) ? */
- else if (!strncmp(buf, "%!PS-AdobeFont", 14))
- {
- type = PsDFT_Type1PFA;
- }
- else
- {
- /* This should be log-able! */
- fprintf(stderr, "PsOut_DownloadType1: Unknown font type for '%s'\n", fname);
- return 0;
- }
-
- S_Flush(self);
- sprintf(buf, "%%%%BeginFont: %s", name);
- S_Comment(self, buf);
-
- if( type == PsDFT_Type1PFB )
- {
- char *buf,
- *pt;
- int len,
- ch,
- stype;
-
- ch = fgetc(fp);
- /* Strip out the binary headers and de-binary it */
- while( (ch&0xFF) == 0x80 )
- {
- stype = fgetc(fp);
- if( stype==3 ) /* eof mark */
- break;
- len = fgetc(fp);
- len |= fgetc(fp)<<8;
- len |= fgetc(fp)<<16;
- len |= fgetc(fp)<<24;
- buf = (char *)xalloc(len+1);
- if( stype==1 )
- {
- /* Process ASCII section */
- len = fread(buf, 1, len, fp);
- /* convert any lone CRs (ie Mac eol) to LFs */
- for( pt = buf ; (pt = memchr(pt, '\r', len-(pt-buf))) != NULL ; pt++ )
- {
- if ( pt[1]!='\n' )
- *pt = '\n';
- }
- fwrite(buf, 1, len, self->Fp);
- }
- else if( stype==2 )
- {
- int i;
-
- /* Process binary section */
- len = fread(buf, 1, len, fp);
- for( i=0 ; i<len ; i++ )
- {
- ch = buf[i];
- if( ((ch>>4)&0xf) <= 9 )
- fputc('0'+((ch>>4)&0xf), self->Fp);
- else
- fputc('A'-10+((ch>>4)&0xf), self->Fp);
-
- if( (ch&0xf) <= 9 )
- fputc('0'+(ch&0xf), self->Fp);
- else
- fputc('A'-10+(ch&0xf), self->Fp);
-
- if( (i&0x1f)==0x1f )
- fputc('\n', self->Fp);
- }
- }
- xfree(buf);
-
- /* Next block... */
- ch = fgetc(fp);
- }
- }
- /* Is this a Adobe PostScript ASCII font (PFA) ? */
- else if (type == PsDFT_Type1PFA)
- {
- for(;;)
- {
- stt = fread(buf, 1, 256, fp);
- if( stt<=0 ) break;
- if (!ferror(self->Fp)) {
- (void) fwrite(buf, 1, stt, self->Fp);
- }
- if( stt<256 )
- break;
- }
- }
- fclose(fp);
- S_Flush(self);
- S_Comment(self, "%%EndFont");
-
- /* Success... */
- return 1;
-}
-
-
-
-
-
-
diff --git a/nx-X11/programs/Xserver/Xprint/ps/psout.h b/nx-X11/programs/Xserver/Xprint/ps/psout.h
deleted file mode 100644
index 8441d8d07..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/psout.h
+++ /dev/null
@@ -1,335 +0,0 @@
-/* $Xorg: psout.h,v 1.6 2001/02/09 02:04:37 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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.
-
-*/
-/*
- * (c) Copyright 1996 Hewlett-Packard Company
- * (c) Copyright 1996 International Business Machines Corp.
- * (c) Copyright 1996 Sun Microsystems, Inc.
- * (c) Copyright 1996 Novell, Inc.
- * (c) Copyright 1996 Digital Equipment Corp.
- * (c) Copyright 1996 Fujitsu Limited
- * (c) Copyright 1996 Hitachi, Ltd.
- *
- * 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 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 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 COPYRIGHT HOLDERS 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 names of the copyright holders
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * from said copyright holders.
- */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: psout.h
-** *
-** * Contents: Include file for psout.c
-** *
-** * Created By: Roger Helmendach (Liberty Systems)
-** *
-** * Copyright: Copyright 1996 The Open Group, Inc.
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _psout_
-#define _psout_
-
-#include <stdio.h>
-
-typedef enum PsCapEnum_ { PsCButt=0, PsCRound, PsCSquare } PsCapEnum;
-typedef enum PsJoinEnum_ { PsJMiter=0, PsJRound, PsJBevel } PsJoinEnum;
-typedef enum PsArcEnum_ { PsChord, PsPieSlice } PsArcEnum;
-typedef enum PsRuleEnum_ { PsEvenOdd, PsNZWinding } PsRuleEnum;
-typedef enum PsFillEnum_ { PsSolid=0, PsTile, PsStip, PsOpStip } PsFillEnum;
-
-typedef struct PsPointRec_
-{
- int x;
- int y;
-} PsPointRec;
-
-typedef PsPointRec *PsPointPtr;
-
-typedef struct PsRectRec_
-{
- int x;
- int y;
- int w;
- int h;
-} PsRectRec;
-
-typedef PsRectRec *PsRectPtr;
-
-typedef struct PsArcRec_
-{
- int x;
- int y;
- int w;
- int h;
- int a1;
- int a2;
- PsArcEnum style;
-} PsArcRec;
-
-typedef PsArcRec *PsArcPtr;
-
-#define PSOUT_RECT 0
-#define PSOUT_ARC 1
-#define PSOUT_POINTS 2
-
-typedef struct PsElmRec_
-{
- int type;
- int nPoints;
- union
- {
- PsRectRec rect;
- PsArcRec arc;
- PsPointPtr points;
- } c;
-} PsElmRec;
-
-typedef PsElmRec *PsElmPtr;
-
-typedef struct PsClipRec_
-{
- int nRects;
- PsRectPtr rects;
- int nElms;
- PsElmPtr elms;
- int nOutterClips;
- PsRectPtr outterClips;
-} PsClipRec;
-
-typedef PsClipRec *PsClipPtr;
-
-typedef enum PsFTDownloadFontType_
-{
- PsFontBitmap=0,
- PsFontType1,
- PsFontType3
-} PsFTDownloadFontType;
-
-/* Define |PsOutColor| color type which can hold one RGB value
- * (note: this needs to be |signed| long/long long to represent
- * special values such as |PSOUTCOLOR_NOCOLOR|)
- */
-#ifdef PSOUT_USE_DEEPCOLOR
-/* 64bit |PsOutColor| which can hold 16bit R-,G-,B-values */
-#ifdef WIN32
-typedef signed __int64 PsOutColor;
-#else
-# if defined(__alpha__) || defined(__alpha) || \
- defined(ia64) || defined(__ia64__) || \
- defined(__sparc64__) || defined(_LP64) || \
- defined(__s390x__) || \
- defined(amd64) || defined (__amd64__) || \
- defined (__powerpc64__) || \
- (defined(sgi) && (_MIPS_SZLONG == 64))
-typedef signed long PsOutColor;
-# else
-typedef signed long long PsOutColor;
-# endif /* native 64bit platform */
-#endif /* WIN32 */
-
-#define PSOUTCOLOR_TO_REDBITS(clr) ((clr) >> 32)
-#define PSOUTCOLOR_TO_GREENBITS(clr) (((clr) >> 16) & 0xFFFF)
-#define PSOUTCOLOR_TO_BLUEBITS(clr) ((clr) & 0xFFFF)
-#define PSOUTCOLOR_BITS_TO_PSFLOAT(b) ((float)(b) / 65535.)
-#define PSOUTCOLOR_WHITE (0xFFFFFFFFFFFFLL)
-#define PSOUTCOLOR_NOCOLOR (-1LL)
-#define PSOUTCOLOR_TO_RGB24BIT(clr) (((PSOUTCOLOR_TO_REDBITS(clr) >> 8) << 16) | \
- ((PSOUTCOLOR_TO_GREENBITS(clr) >> 8) << 8) | \
- ((PSOUTCOLOR_TO_BLUEBITS(clr) >> 8) << 0))
-#else
-/* 32bit |PsOutColor| which can hold 8bit R-,G-,B-values */
-typedef signed long PsOutColor;
-#define PSOUTCOLOR_TO_REDBITS(clr) ((clr) >> 16)
-#define PSOUTCOLOR_TO_GREENBITS(clr) (((clr) >> 8) & 0xFF)
-#define PSOUTCOLOR_TO_BLUEBITS(clr) ((clr) & 0xFF)
-#define PSOUTCOLOR_BITS_TO_PSFLOAT(b) ((float)(b) / 255.)
-#define PSOUTCOLOR_WHITE (0xFFFFFF)
-#define PSOUTCOLOR_NOCOLOR (-1)
-#define PSOUTCOLOR_TO_RGB24BIT(clr) ((PSOUTCOLOR_TO_REDBITS(clr) << 16) | \
- (PSOUTCOLOR_TO_GREENBITS(clr) << 8) | \
- (PSOUTCOLOR_TO_BLUEBITS(clr) << 0))
-#endif /* PSOUT_USE_DEEPCOLOR */
-
-#ifdef USE_PSOUT_PRIVATE
-typedef void *voidPtr;
-
-typedef struct PsPatRec_
-{
- PsFillEnum type;
- voidPtr tag;
-} PsPatRec;
-
-typedef PsPatRec *PsPatPtr;
-
-typedef struct PsOutRec_
-{
- FILE *Fp;
- char Buf[16384];
- PsOutColor CurColor;
- int LineWidth;
- PsCapEnum LineCap;
- PsJoinEnum LineJoin;
- int NDashes;
- int *Dashes;
- int DashOffset;
- PsOutColor LineBClr;
- PsRuleEnum FillRule;
- char *FontName;
- int FontSize;
- float FontMtx[4];
- int ImageFormat;
- int RevImage;
- int NPatterns;
- int MxPatterns;
- PsPatPtr Patterns;
- int ClipType;
- PsClipRec Clip;
- int InFrame;
- int XOff;
- int YOff;
-
- PsFillEnum InTile;
- int ImgSkip;
- PsOutColor ImgBClr;
- PsOutColor ImgFClr;
- int ImgX;
- int ImgY;
- int ImgW;
- int ImgH;
- int SclW;
- int SclH;
-
- Bool isRaw;
-
- int pagenum;
-
- int start_image;
-} PsOutRec;
-
-typedef struct PsOutRec_ *PsOutPtr;
-
-extern void S_Flush(PsOutPtr self);
-extern void S_OutNum(PsOutPtr self, float num);
-extern void S_OutTok(PsOutPtr self, char *tok, int cr);
-#else
-typedef struct PsOutRec_ *PsOutPtr;
-#endif /* USE_PSOUT_PRIVATE */
-
-extern PsOutPtr PsOut_BeginFile(FILE *fp, char *title, int orient, int count, int plex,
- int res, int wd, int ht, Bool raw);
-extern void PsOut_EndFile(PsOutPtr self, int closeFile);
-extern void PsOut_BeginPage(PsOutPtr self, int orient, int count, int plex,
- int res, int wd, int ht);
-extern void PsOut_EndPage(PsOutPtr self);
-extern void PsOut_DirtyAttributes(PsOutPtr self);
-extern void PsOut_Comment(PsOutPtr self, char *comment);
-extern void PsOut_Offset(PsOutPtr self, int x, int y);
-
-extern void PsOut_Clip(PsOutPtr self, int clpTyp, PsClipPtr clpinf);
-
-extern void PsOut_Color(PsOutPtr self, PsOutColor clr);
-extern void PsOut_FillRule(PsOutPtr self, PsRuleEnum rule);
-extern void PsOut_LineAttrs(PsOutPtr self, int wd, PsCapEnum cap,
- PsJoinEnum join, int nDsh, int *dsh, int dshOff,
- PsOutColor bclr);
-extern void PsOut_TextAttrs(PsOutPtr self, char *fnam, int siz, int iso);
-extern void PsOut_TextAttrsMtx(PsOutPtr self, char *fnam, float *mtx, int iso);
-
-extern void PsOut_Polygon(PsOutPtr self, int nPts, PsPointPtr pts);
-extern void PsOut_FillRect(PsOutPtr self, int x, int y, int w, int h);
-extern void PsOut_FillArc(PsOutPtr self, int x, int y, int w, int h,
- float ang1, float ang2, PsArcEnum style);
-
-extern void PsOut_Lines(PsOutPtr self, int nPts, PsPointPtr pts);
-extern void PsOut_Points(PsOutPtr self, int nPts, PsPointPtr pts);
-extern void PsOut_DrawRect(PsOutPtr self, int x, int y, int w, int h);
-extern void PsOut_DrawArc(PsOutPtr self, int x, int y, int w, int h,
- float ang1, float ang2);
-
-extern void PsOut_Text(PsOutPtr self, int x, int y, char *text, int textl,
- PsOutColor bclr);
-extern void PsOut_Text16(PsOutPtr self, int x, int y, unsigned short *text, int textl, PsOutColor bclr);
-
-extern void PsOut_BeginImage(PsOutPtr self, PsOutColor bclr, PsOutColor fclr, int x, int y,
- int w, int h, int sw, int sh, int format);
-extern void PsOut_BeginImageIM(PsOutPtr self, PsOutColor bclr, PsOutColor fclr, int x, int y,
- int w, int h, int sw, int sh, int format);
-extern void PsOut_EndImage(PsOutPtr self);
-extern void PsOut_OutImageBytes(PsOutPtr self, int nBytes, char *bytes);
-
-extern void PsOut_BeginFrame(PsOutPtr self, int xoff, int yoff, int x, int y,
- int w, int h);
-extern void PsOut_EndFrame(PsOutPtr self);
-
-extern int PsOut_BeginPattern(PsOutPtr self, void *tag, int w, int h,
- PsFillEnum type, PsOutColor bclr, PsOutColor fclr);
-extern void PsOut_EndPattern(PsOutPtr self);
-extern void PsOut_SetPattern(PsOutPtr self, void *tag, PsFillEnum type);
-
-extern void PsOut_RawData(PsOutPtr self, char *data, int len);
-
-extern int PsOut_DownloadType1(PsOutPtr self, const char *auditmsg, const char *name, const char *fname);
-
-extern int PsOut_DownloadFreeType1(PsOutPtr self, const char *psfontname, FontPtr pFont, long block_offset);
-extern int PsOut_DownloadFreeType3(PsOutPtr self, const char *psfontname, FontPtr pFont, long block_offset);
-
-extern int PsOut_DownloadFreeType(PsOutPtr self, PsFTDownloadFontType downloadfonttype, const char *psfontname, FontPtr pFont, long block_offset);
-extern void PsOut_Get_FreeType_Glyph_Name( char *destbuf, FontPtr pFont, unsigned long x11fontindex);
-extern void PsOut_FreeType_Text(FontPtr pFont, PsOutPtr self, int x, int y, char *text, int textl);
-extern void PsOut_FreeType_Text16(FontPtr pFont, PsOutPtr self, int x, int y, unsigned short *text, int textl);
-
-extern void PsOut_FreeType_TextAttrs16(PsOutPtr self, char *fnam, int siz, int iso);
-extern void PsOut_FreeType_TextAttrsMtx16(PsOutPtr self, char *fnam, float *mtx, int iso);
-#endif
diff --git a/nx-X11/programs/Xserver/Xprint/ps/psout_ft.c b/nx-X11/programs/Xserver/Xprint/ps/psout_ft.c
deleted file mode 100644
index 34cb6a54d..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/psout_ft.c
+++ /dev/null
@@ -1,335 +0,0 @@
-
-/*
-Copyright (c) 2003-2004 Roland Mainz <roland.mainz@nrubsig.org>
-
-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 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 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
-AUTHORS OR COPYRIGHT HOLDERS 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.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "os.h"
-#define USE_PSOUT_PRIVATE 1
-#include "psout.h"
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_TYPE1_TABLES_H
-
-#include <X11/Xproto.h>
-#include <X11/fonts/font.h>
-#include <X11/fonts/fontstruct.h>
-#include <X11/fonts/fntfilst.h>
-#include <X11/fonts/fontutil.h>
-#include <X11/fonts/fontenc.h>
-#include "ft.h"
-#define NOT_IN_FTFUNCS
-#include "ftfuncs.h"
-#include "servermd.h" /* needed for endian test (IMAGE_BYTE_ORDER) */
-
-#define USE_FT_PS_NAMES 1
-
-#ifdef USE_FT_PS_NAMES
-void PsOut_Get_FreeType_Glyph_Name( char *destbuf, FontPtr pFont, unsigned long x11fontindex)
-{
- FTFontPtr tf = (FTFontPtr)pFont->fontPrivate;
- FT_Face ttface = tf->instance->face->face;
- FT_Error error;
- char buf[256];
- unsigned long ftindex;
-
- /* Remap X11 font index to FreeType font index */
- ftindex = FTRemap(ttface, &tf->mapping, x11fontindex);
-
- if( FT_Has_PS_Glyph_Names(ttface) )
- {
- error = FT_Get_Glyph_Name(ttface, ftindex, buf, 64);
- }
- else
- {
- error = 1;
- }
-
- if( error )
- {
- /* Check for unicode mapping
- * See Adobe document "Unicode and Glyph Names"
- * (http://partners.adobe.com/asn/tech/type/unicodegn.jsp)
- */
- if( (tf->mapping.mapping->type == FONT_ENCODING_UNICODE) &&
- (ftindex < 0xFFFE) )
- {
- sprintf(buf, "uni%04lx", ftindex);
- }
- else
- {
- sprintf(buf, "ch%02lx", ftindex);
- }
- }
-
- strcpy(destbuf, buf);
-}
-#endif /* USE_FT_PS_NAMES */
-
-int PsOut_DownloadFreeType(PsOutPtr self, PsFTDownloadFontType downloadfonttype, const char *psfontname, FontPtr pFont, long block_offset)
-{
- switch(downloadfonttype)
- {
- case PsFontType3:
- return PsOut_DownloadFreeType3(self, psfontname, pFont, block_offset);
- case PsFontType1:
- return PsOut_DownloadFreeType1(self, psfontname, pFont, block_offset);
- default:
- FatalError("PS DDX: PsOut_DownloadFreeType(downloadfonttype='%d' not implemented\n",
- (int)downloadfonttype);
- return 0; /* NO-OP, FatalError() will call |exit()| */
- }
-}
-
-/* cloned from |PsOut_TextAttrs16| */
-void
-PsOut_FreeType_TextAttrs16(PsOutPtr self, char *fnam, int siz, int iso)
-{
- int i;
- if( self->FontName && strcmp(fnam, self->FontName)==0 &&
- siz==self->FontSize ) return;
- if( self->FontName ) xfree(self->FontName);
- self->FontName = (char *)xalloc(strlen(fnam)+1);
- strcpy(self->FontName, fnam);
- self->FontSize = siz;
- for( i=0 ; i<4 ; i++ ) self->FontMtx[i] = -1.;
-}
-
-/* cloned from |PsOut_TextAttrsMtx16| */
-void
-PsOut_FreeType_TextAttrsMtx16(PsOutPtr self, char *fnam, float *mtx, int iso)
-{
- int i;
- if( self->FontName && strcmp(fnam, self->FontName)==0 &&
- mtx[0]==self->FontMtx[0] && mtx[1]==self->FontMtx[1] &&
- mtx[2]==self->FontMtx[2] && mtx[3]==self->FontMtx[3] ) return;
- if( self->FontName ) xfree(self->FontName);
- self->FontName = (char *)xalloc(strlen(fnam)+1);
- strcpy(self->FontName, fnam);
- for( i=0 ; i<4 ; i++ ) self->FontMtx[i] = mtx[i];
- self->FontSize = -1;
-}
-
-static
-int FT_Get_CharcellMetricsCharacterHeight(FontPtr pFont)
-{
- FTFontPtr ftfont = (FTFontPtr)pFont->fontPrivate;
-
- return ftfont->instance->charcellMetrics->ascent +
- ftfont->instance->charcellMetrics->descent;
-}
-
-static
-int FT_Get_CharcellMetricsCharacterWidth(FontPtr pFont)
-{
- FTFontPtr ftfont = (FTFontPtr)pFont->fontPrivate;
-
- if( ftfont->instance->spacing != FT_PROPORTIONAL )
- {
- int width = ftfont->instance->charcellMetrics->characterWidth;
-
- /* If the font uses a matrix make sure we transform the |characterWidth|
- * back to it's original value since we download the untransformed font
- * and use a PostScript transformation matrix to transform the font when
- * rendering the text
- */
- if( ftfont->instance->transformation.nonIdentity )
- {
- FT_Vector v;
-
- FT_Matrix m = ftfont->instance->transformation.matrix;
- (void)FT_Matrix_Invert(&m); /* FixMe: We should check the return code */
- v.x = width;
- v.y = FT_Get_CharcellMetricsCharacterHeight(pFont);
- FT_Vector_Transform(&v, &m);
- width = v.x;
- }
-
- return width;
- }
-
- return 0;
-}
-
-void
-PsOut_FreeType_Text(FontPtr pFont, PsOutPtr self, int x, int y, char *text, int textl)
-{
- int i;
- int xo = self->XOff,
- yo = self->YOff;
- char buf[256];
- int cwidth = FT_Get_CharcellMetricsCharacterWidth(pFont);
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- x += xo; y += yo;
-
- S_OutNum(self, (float)x);
- S_OutNum(self, (float)y);
- S_OutTok(self, "moveto", 1);
-
- S_OutTok(self, "[ ", 0);
-
- for( i = 0 ; i < textl ; i++ )
- {
-#ifdef USE_FT_PS_NAMES
- char namebuf[256];
- unsigned int ch = text[i]&0xFF;
- unsigned long block_offset = 0;
- PsOut_Get_FreeType_Glyph_Name(namebuf, pFont, ch+block_offset);
-
- sprintf(buf, "/%s ", namebuf);
-#else
- sprintf(buf, "/ch%02x ", text[i]&0xFF);
-#endif /* USE_FT_PS_NAMES */
- S_OutTok(self, buf, 0);
- }
-
- /* Check whether we have any special spacing requirements (e.g. non-proportional fonts) ... */
- if( cwidth != 0 )
- {
- /* If the we use a matrix to render the font (instead of using |self->FontSize|)
- * we must apply the matrix to the "rmoveto" which is used to force the exact
- * character width. The "trmoveto" macro will do that for us...
- */
- if( self->FontSize == -1 )
- {
- sprintf(buf, "]{gs glyphshow gr %d 0 trmoveto}fa", cwidth);
- }
- else
- {
- sprintf(buf, "]{gs glyphshow gr %d 0 rm}fa", cwidth);
- }
- }
- else
- {
- sprintf(buf, "]{glyphshow}fa");
- }
- S_OutTok(self, buf, 0);
-}
-
-/* XXX: |PsOut_FreeType_Text16| should be rewritten - currently it uses lame,
- * slow hacks and makes some risky assumtions about how |PsOut_Text16|
- * allocates memory */
-void
-PsOut_FreeType_Text16(FontPtr pFont, PsOutPtr self, int x, int y, unsigned short *text, int textl)
-{
- int i;
- int xo = self->XOff,
- yo = self->YOff;
- unsigned short c,
- c_hiByte,
- c_lowByte,
- fontPage;
- long lastFontPage = -1;
- char baseFontName[256];
- char buf[256];
-
- if( self->InFrame || self->InTile ) xo = yo = 0;
- x += xo; y += yo;
-
- strcpy(baseFontName, self->FontName);
-
- S_OutNum(self, (float)x);
- S_OutNum(self, (float)y);
- S_OutTok(self, "moveto", 1);
-
- for( i = 0 ; i < textl ; i++ )
- {
- c = text[i];
-#if IMAGE_BYTE_ORDER == LSBFirst
- c_hiByte = c & 0x00FF;
- c_lowByte = (c >> 8) & 0x00FF;
-#elif IMAGE_BYTE_ORDER == MSBFirst
- c_hiByte = (c >> 8) & 0x00FF;
- c_lowByte = c & 0x00FF;
-#else
-#error Unsupported byte order
-#endif
- fontPage = c_hiByte;
-
- if( fontPage != lastFontPage )
- {
- if( fontPage > 0 )
- {
- sprintf(buf, "%s_%x", baseFontName, fontPage);
- }
- else
- {
- sprintf(buf, "%s", baseFontName);
- }
-
- if( self->FontSize == -1 )
- {
- PsOut_TextAttrsMtx(self, buf, self->FontMtx, FALSE);
- }
- else
- {
- PsOut_TextAttrs(self, buf, self->FontSize, FALSE);
- }
- lastFontPage = fontPage;
- }
-
-#ifdef USE_FT_PS_NAMES
- {
- char namebuf[256];
- unsigned int ch = c_lowByte;
- unsigned long block_offset = c_hiByte * 0x100 /* same as c_hiByte << 8 */;
- int cwidth = FT_Get_CharcellMetricsCharacterWidth(pFont);
- PsOut_Get_FreeType_Glyph_Name(namebuf, pFont, ch+block_offset);
-
- /* Check whether we have any special spacing requirements (e.g. non-proportional fonts) ... */
- if( cwidth != 0 )
- {
- /* If the we use a matrix to render the font (instead of using |self->FontSize|)
- * we must apply the matrix to the "rmoveto" which is used to force the exact
- * character width. The "trmoveto" macro will do that for us...
- */
- if( self->FontSize == -1 )
- {
- sprintf(buf, "gs /%s glyphshow gr %d 0 trmoveto", namebuf, cwidth);
- }
- else
- {
- sprintf(buf, "gs /%s glyphshow gr %d 0 rm", namebuf, cwidth);
- }
- }
- else
- {
- sprintf(buf, "/%s glyphshow", namebuf);
- }
- }
-#else
- sprintf(buf, "/ch%02x glyphshow", c_lowByte);
-#endif /* USE_FT_PS_NAMES */
- S_OutTok(self, buf, 1);
- }
-
- if( self->FontName ) xfree(self->FontName);
- self->FontName = (char *)xalloc(strlen(baseFontName)+1);
- strcpy(self->FontName, baseFontName);
-}
-
diff --git a/nx-X11/programs/Xserver/Xprint/ps/psout_ftpstype1.c b/nx-X11/programs/Xserver/Xprint/ps/psout_ftpstype1.c
deleted file mode 100644
index 19e1bde18..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/psout_ftpstype1.c
+++ /dev/null
@@ -1,185 +0,0 @@
-
-/*
-Copyright (c) 2003-2004 Roland Mainz <roland.mainz@nrubsig.org>
-
-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 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 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
-AUTHORS OR COPYRIGHT HOLDERS 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.
-*/
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/wait.h>
-
-#include "os.h"
-#define USE_PSOUT_PRIVATE 1
-#include "psout.h"
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-
-#include <X11/Xproto.h>
-#include <X11/fonts/font.h>
-#include <X11/fonts/fontstruct.h>
-#include <X11/fonts/fntfilst.h>
-#include <X11/fonts/fontutil.h>
-#include <X11/fonts/fontenc.h>
-#include "ft.h"
-#define NOT_IN_FTFUNCS
-#include "ftfuncs.h"
-
-int do_debug_ft2pt1 = FALSE;
-int do_enable_ft2pt1_optimizer = FALSE;
-
-/* Defined in ttf2pt1.c */
-int ft2pt1_main(int argc, char **argv,
- FTFontPtr tf, const char *download_psfontname, unsigned long download_font_block_offset);
-
-/* Download FreeType outlines as PS Type1 font */
-int PsOut_DownloadFreeType1(PsOutPtr self, const char *psfontname, FontPtr pFont, long block_offset)
-{
- FTFontPtr tf;
- FT_Face face;
- int ft2pt1_numargs = 0;
- char *ft2pt1_args[40];
- char *pstype1filename_prefix;
- char pstype1filename[PATH_MAX+1];
- int ft2pt1_main_retval;
- pid_t childpid;
-
- tf = (FTFontPtr)pFont->fontPrivate;
- face = tf->instance->face->face;
-
- /* Set debugging flags */
- do_debug_ft2pt1 = (getenv("XPRT_PSDDX_DO_DEBUG_FT2PT1") != NULL);
- do_enable_ft2pt1_optimizer = (getenv("XPRT_PSDDX_DO_ENABLE_FT2PT1_OPTIMIZER") != NULL);
-
- if( do_debug_ft2pt1 )
- {
- fprintf(stderr, "# Converting FT2 font to PS Type1 filename='%s', ttface=%lx\n", tf->instance->face->filename, (long)face);
- }
-
- pstype1filename_prefix = tempnam(NULL, "Xprt_");
-
- ft2pt1_args[ft2pt1_numargs] = "ft2pt1"; ft2pt1_numargs++;
- ft2pt1_args[ft2pt1_numargs] = "-Ob"; ft2pt1_numargs++;
- ft2pt1_args[ft2pt1_numargs] = "-e"; ft2pt1_numargs++;
- ft2pt1_args[ft2pt1_numargs] = "-a"; ft2pt1_numargs++;
- ft2pt1_args[ft2pt1_numargs] = "-Ga"; ft2pt1_numargs++;
- if( do_enable_ft2pt1_optimizer )
- {
- /* Scale fonts to a 1000x1000 matrix */
- ft2pt1_args[ft2pt1_numargs] = "-Ot"; ft2pt1_numargs++;
- }
- else
- {
- /* Disable the ttf2pt1 optimisations */
- ft2pt1_args[ft2pt1_numargs] = "-Ou"; ft2pt1_numargs++;
- ft2pt1_args[ft2pt1_numargs] = "-Oo"; ft2pt1_numargs++;
- ft2pt1_args[ft2pt1_numargs] = "-Os"; ft2pt1_numargs++;
- ft2pt1_args[ft2pt1_numargs] = "-Oh"; ft2pt1_numargs++;
- }
-
- if( !do_debug_ft2pt1 )
- {
- ft2pt1_args[ft2pt1_numargs] = "-W 0"; ft2pt1_numargs++;
- }
- ft2pt1_args[ft2pt1_numargs] = tf->instance->face->filename; ft2pt1_numargs++;
- ft2pt1_args[ft2pt1_numargs] = pstype1filename_prefix; ft2pt1_numargs++;
- ft2pt1_args[ft2pt1_numargs] = NULL;
-
-/* XXX: ttf2pt1 has lots of leaks and global vars which are not cleaned-up
- * As long this problem exists we will simply fork() and call the converter
- * from the child process (all resources are free'ed when the child process
- * exists) as a workaround.
- */
-#define FT2PT1_NEEDS_SEPERATE_PROCESS 1
-
-#ifdef FT2PT1_NEEDS_SEPERATE_PROCESS
- /* Flush internal buffer and then the stdio stream before fork()! */
- S_Flush(self);
- fflush(self->Fp);
-
- childpid = fork();
- switch(childpid)
- {
- case -1:
- FatalError("PS DDX internal error: Cannot fork() converter child process, errno=%d\n", (int)errno);
- break;
- case 0: /* child */
- fclose(self->Fp);
- self->Fp = NULL;
-
- ft2pt1_main_retval = ft2pt1_main(ft2pt1_numargs, ft2pt1_args, tf, psfontname, block_offset);
- if( do_debug_ft2pt1 )
- {
- fprintf(stderr, "## ft2pt1_main returned %d (child)\n", ft2pt1_main_retval);
- }
- exit(ft2pt1_main_retval);
- break;
- default: /* parent */
- waitpid(childpid, &ft2pt1_main_retval, 0);
- break;
- }
-
- if( do_debug_ft2pt1 )
- {
- fprintf(stderr, "## ft2pt1_main returned %d (parent)\n", ft2pt1_main_retval);
- }
-#else
- S_Flush(self);
-
- ft2pt1_main_retval = ft2pt1_main(ft2pt1_numargs, ft2pt1_args, tf, psfontname, block_offset);
- if( do_debug_ft2pt1 )
- {
- fprintf(stderr, "## ft2pt1_main returned %d (child)\n", ft2pt1_main_retval);
- }
-#endif /* FT2PT1_NEEDS_SEPERATE_PROCESS */
-
- if( ft2pt1_main_retval != EXIT_SUCCESS )
- {
- FatalError("PS DDX internal error while converting FreeType font '%s' to PS Type1, error=%d\n",
- tf->instance->face->filename, ft2pt1_main_retval);
- }
-
- sprintf(pstype1filename, "%s.pfa", pstype1filename_prefix);
- if( do_debug_ft2pt1 )
- {
- fprintf(stderr, "# Downloading converted FT2/PS Type1 filename='%s'\n", pstype1filename);
- }
-
- PsOut_DownloadType1(self, "PsOut_DownloadFreeType1", psfontname, pstype1filename);
-
- if( !do_debug_ft2pt1 )
- {
- unlink(pstype1filename);
- }
-
- free(pstype1filename_prefix);
-
- S_Flush(self);
-
- return 0;
-}
-
-
diff --git a/nx-X11/programs/Xserver/Xprint/ps/psout_ftpstype3.c b/nx-X11/programs/Xserver/Xprint/ps/psout_ftpstype3.c
deleted file mode 100644
index e9782e499..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/psout_ftpstype3.c
+++ /dev/null
@@ -1,468 +0,0 @@
-
-/*
-Copyright (c) 2003-2004 Roland Mainz <roland.mainz@nrubsig.org>
-
-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 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 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
-AUTHORS OR COPYRIGHT HOLDERS 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.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "os.h"
-#define USE_PSOUT_PRIVATE 1
-#include "psout.h"
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_TRUETYPE_TABLES_H
-#include FT_BBOX_H
-#include FT_GLYPH_H
-
-#include FT_CONFIG_CONFIG_H
-#include FT_CONFIG_OPTIONS_H
-#include FT_ERRORS_H
-#include FT_SYSTEM_H
-#include FT_IMAGE_H
-#include FT_TYPES_H
-#include FT_OUTLINE_H
-#include FT_MODULE_H
-#include FT_RENDER_H
-#include FT_TYPE1_TABLES_H
-#include FT_TRUETYPE_IDS_H
-#include FT_TRUETYPE_TAGS_H
-#include FT_CACHE_H
-#include FT_CACHE_IMAGE_H
-#include FT_CACHE_SMALL_BITMAPS_H
-#include FT_MULTIPLE_MASTERS_H
-#include FT_SFNT_NAMES_H
-
-#define USE_FT_INTERNALS 1
-#ifdef USE_FT_INTERNALS
-#include FT_INTERNAL_TYPE1_TYPES_H
-#include "t42types.h"
-#include FT_INTERNAL_OBJECTS_H
-#endif /* USE_FT_INTERNALS */
-
-#include <X11/Xproto.h>
-#include <X11/fonts/font.h>
-#include <X11/fonts/fontstruct.h>
-#include <X11/fonts/fntfilst.h>
-#include <X11/fonts/fontutil.h>
-#include <X11/fonts/fontenc.h>
-#include "ft.h"
-#define NOT_IN_FTFUNCS
-#include "ftfuncs.h"
-
-struct ft2info
-{
- FontPtr pFont;
- FTFontPtr tf;
- FT_Face ttface;
- struct
- {
- char *full_name;
- char *copyright;
- char *family;
- char *subfamily;
- char *version;
- } nameid;
- TT_Postscript *ttpostscript;
- TT_Header *ttheader;
-};
-
-/* Local prototypes */
-static FT_Error PSType3_createOutlineGlyphs(FILE *out, struct ft2info *ti, unsigned long unicode, const char *psglyphname);
-static int PSType3_generateOutlineFont(FILE *out, const char *psfontname, struct ft2info *ti, long block_offset);
-
-extern FT_Library ftypeLibrary; /* defined in xc/lib/font/FreeType/ftfuncs.c */
-
-#define USE_FT_PS_NAMES 1
-
-static
-FT_Error PSType3_createOutlineGlyphs( FILE *out, struct ft2info *ti, unsigned long x11fontindex, const char *psglyphname )
-{
- unsigned long ftindex;
- FT_BBox bbox;
- FT_Error error;
- FT_Outline outline;
-
- /* Remap X11 font index to FreeType font index */
- ftindex = FTRemap(ti->ttface, &ti->tf->mapping, x11fontindex);
-
- error = FT_Load_Glyph(ti->ttface, ftindex, (FT_LOAD_NO_BITMAP | FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING));
- if( error )
- {
- fprintf(stderr, "PSType3_createOutlineGlyphs: FT_Load_Glyph() failure, error=%d\n", (int)error);
- return error;
- }
-
- outline = ti->ttface->glyph->outline;
-
- FT_Outline_Get_CBox(&outline, &bbox);
-
- fprintf(out, "/%s {\n", psglyphname);
- fprintf(out, "%ld 0 %ld %ld %ld %ld setcachedevice\n",
- (signed long)ti->ttface->glyph->metrics.horiAdvance,
- (long)bbox.xMin,
- (long)bbox.yMin,
- (long)bbox.xMax,
- (long)bbox.yMax);
-
- if( outline.n_contours > 0 )
- {
- long i,
- j,
- k, k1,
- cs, ce,
- nguide,
- contour_start,
- contour_end,
- last_point;
- Bool first;
- FT_Vector *vec;
-
- contour_start = ce = 0;
-
- vec = outline.points;
- last_point = outline.n_points;
-
- i = j = k = 0;
- first = TRUE;
-
- while( i <= outline.contours[outline.n_contours - 1] )
- {
- contour_end = outline.contours[j];
-
- if( first )
- {
- fprintf(out, "%ld %ld moveto\n", vec[i].x, vec[i].y);
- contour_start = i;
- first = FALSE;
- }
- else if( outline.tags[i] & FT_CURVE_TAG_ON )
- {
- fprintf(out, "%ld %ld lineto\n", vec[i].x, vec[i].y);
- }
- else
- {
- Bool finished = FALSE;
-
- cs = i-1;
- nguide = 0;
- while( !finished )
- {
- if( i == contour_end+1 )
- {
- ce = contour_start;
- finished = TRUE;
- }
- else if( outline.tags[i] & FT_CURVE_TAG_ON )
- {
- ce = i;
- finished = TRUE;
- }
- else
- {
- i++;
- nguide++;
- }
- }
-
- switch( nguide )
- {
- case 0:
- fprintf(out, "%ld %ld lineto\n", vec[ce].x, vec[ce].y);
- break;
-
- case 1:
- fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n",
- (vec[cs].x+2*vec[cs+1].x)/3,
- (vec[cs].y+2*vec[cs+1].y)/3,
- (2*vec[cs+1].x+vec[ce].x)/3,
- (2*vec[cs+1].y+vec[ce].y)/3,
- vec[ce].x, vec[ce].y);
- break;
-
- case 2:
- fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n",
- (-vec[cs].x+4*vec[cs+1].x)/3,
- (-vec[cs].y+4*vec[cs+1].y)/3,
- (4*vec[cs+2].x-vec[ce].x)/3,
- (4*vec[cs+2].y-vec[ce].y)/3,
- vec[ce].x, vec[ce].y);
- break;
-
- case 3:
- fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n",
- (vec[cs].x+2*vec[cs+1].x)/3,
- (vec[cs].y+2*vec[cs+1].y)/3,
- (5*vec[cs+1].x+vec[cs+2].x)/6,
- (5*vec[cs+1].y+vec[cs+2].y)/6,
- (vec[cs+1].x+vec[cs+2].x)/2,
- (vec[cs+1].y+vec[cs+2].y)/2);
-
- fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n",
- (vec[cs+1].x+5*vec[cs+2].x)/6,
- (vec[cs+1].y+5*vec[cs+2].y)/6,
- (5*vec[cs+2].x+vec[cs+3].x)/6,
- (5*vec[cs+2].y+vec[cs+3].y)/6,
- (vec[cs+3].x+vec[cs+2].x)/2,
- (vec[cs+3].y+vec[cs+2].y)/2);
-
- fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n",
- (vec[cs+2].x+5*vec[cs+3].x)/6,
- (vec[cs+2].y+5*vec[cs+3].y)/6,
- (2*vec[cs+3].x+vec[ce].x)/3,
- (2*vec[cs+3].y+vec[ce].y)/3,
- vec[ce].x, vec[ce].y);
- break;
-
- default: /* anything |nguide > 3| */
- k1 = cs + nguide;
-
- fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n",
- (vec[cs].x+2*vec[cs+1].x)/3,
- (vec[cs].y+2*vec[cs+1].y)/3,
- (5*vec[cs+1].x+vec[cs+2].x)/6,
- (5*vec[cs+1].y+vec[cs+2].y)/6,
- (vec[cs+1].x+vec[cs+2].x)/2,
- (vec[cs+1].y+vec[cs+2].y)/2);
-
- for( k = cs+2 ; k <= k1-1 ; k++ )
- {
- fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n",
- (vec[k-1].x+5*vec[k].x)/6,
- (vec[k-1].y+5*vec[k].y)/6,
- (5*vec[k].x+vec[k+1].x)/6,
- (5*vec[k].y+vec[k+1].y)/6,
- (vec[k].x+vec[k+1].x)/2,
- (vec[k].y+vec[k+1].y)/2);
- }
-
- fprintf(out, "%ld %ld %ld %ld %ld %ld curveto\n",
- (vec[k1-1].x+5*vec[k1].x)/6,
- (vec[k1-1].y+5*vec[k1].y)/6,
- (2*vec[k1].x+vec[ce].x)/3,
- (2*vec[k1].y+vec[ce].y)/3,
- vec[ce].x, vec[ce].y);
- break;
- }
- }
-
- if( i >= contour_end )
- {
- fprintf(out, "closepath\n");
- first = TRUE;
- i = contour_end + 1;
- j++;
- }
- else
- {
- i++;
- }
- }
- }
-
- fprintf(out, "fill } bind def\n");
-
- return 0;
-}
-
-#ifdef USE_FT_INTERNALS
-static FT_BBox *
-FT_Get_PS_Font_BBox( FT_Face face )
-{
- const char *driver_name;
- FT_BBox *font_bbox = NULL;
-
- if ( face && face->driver && face->driver->root.clazz )
- {
- driver_name = face->driver->root.clazz->module_name;
- if ( ft_strcmp( driver_name, "type1" ) == 0 )
- font_bbox = &(((T1_Face)face)->type1.font_bbox);
- else if ( ft_strcmp( driver_name, "t1cid" ) == 0 )
- font_bbox = &(((CID_Face)face)->cid.font_bbox);
- else if ( ft_strcmp( driver_name, "type42" ) == 0 )
- font_bbox = &(((T42_Face)face)->type1.font_bbox);
- }
-
- return font_bbox;
-}
-#endif /* USE_FT_INTERNALS */
-
-static
-int PSType3_generateOutlineFont(FILE *out, const char *psfontname, struct ft2info *ti, long block_offset)
-{
- long i;
- double scaler;
- const int numchars = 256;
-#ifdef USE_FT_PS_NAMES
- int linewidth = 0;
-#endif /* USE_FT_PS_NAMES */
-
- fprintf(out, "%%%%BeginFont: %s\n", psfontname);
- fprintf(out, "22 dict begin\n");
- fprintf(out, "/FontType 3 def\n");
- fprintf(out, "/StrokeWidth 0 def\n");
- fprintf(out, "/PaintType 0 def\n");
- fprintf(out, "/FontName (%s) def\n", psfontname);
- fprintf(out, "/FontInfo 9 dict dup begin\n");
- fprintf(out, " /FullName (%s) def\n", ti->nameid.full_name?ti->nameid.full_name:psfontname);
- fprintf(out, " /Notice (%s) def\n", ti->nameid.copyright?ti->nameid.copyright:"nothing here");
- fprintf(out, " /FamilyName (%s) def\n", ti->nameid.family?ti->nameid.family:psfontname);
- fprintf(out, " /Weight (%s) def\n", ti->nameid.subfamily?ti->nameid.subfamily:"Regular");
- fprintf(out, " /version (%s) def\n", ti->nameid.version?ti->nameid.version:"0.1");
-
- if( ti->ttpostscript )
- {
- fprintf(out, " /italicAngle %.9g def\n", (double)ti->ttpostscript->italicAngle);
- fprintf(out, " /underlineThickness %d def\n", (int)ti->ttpostscript->underlineThickness);
- fprintf(out, " /underlinePosition %d def\n", (int)ti->ttpostscript->underlinePosition);
- fprintf(out, " /isFixedPitch %s def\n", ((ti->ttpostscript->isFixedPitch)?("true"):("false")));
- }
- else
- {
- fprintf(out, " /italicAngle %.9g def\n", 0.0);
- fprintf(out, " /underlineThickness %d def\n", 100);
- fprintf(out, " /underlinePosition %d def\n", 0);
- fprintf(out, " /isFixedPitch false def\n");
- }
-
- fprintf(out, "end def\n");
-
- scaler = (1000.0 / (double)ti->ttface->units_per_EM) / 1000.0;
- fprintf(out, "/FontMatrix [%.9g 0 0 %.9g 0 0] def\n", scaler, scaler);
-
- if( ti->ttheader )
- {
- fprintf(out, "/FontBBox [%d %d %d %d] def\n",
- (int)ti->ttheader->xMin,
- (int)ti->ttheader->yMin,
- (int)ti->ttheader->xMax,
- (int)ti->ttheader->yMax);
- }
- else
- {
- FT_BBox *font_bbox = FT_Get_PS_Font_BBox(ti->ttface);
- fprintf(out, "/FontBBox [%d %d %d %d] def\n",
- (int)font_bbox->xMin,
- (int)font_bbox->yMin,
- (int)font_bbox->xMax,
- (int)font_bbox->yMax);
- }
-
- fprintf(out, "/Encoding [\n");
- for( i = 0 ; i < 256 ; i++ )
- {
-#ifdef USE_FT_PS_NAMES
- char namebuf[256];
- PsOut_Get_FreeType_Glyph_Name(namebuf, ti->pFont, i+block_offset);
- linewidth += strlen(namebuf) + 2;
- fprintf(out, "/%s%s", namebuf, (linewidth > 70)?(linewidth = 0, "\n"):(" "));
-#else
- fprintf(out, "/ch%02x%s", i, (((i % 10) == 9)?("\n"):(" ")));
-#endif /* USE_FT_PS_NAMES */
- }
- fprintf(out, "] def\n");
-
- fprintf(out, "/CharProcs %d dict def CharProcs begin\n", (int)(numchars + 1));
- fprintf(out, "/.notdef {\n"
- "1000 0 0 0 0 0 setcachedevice\n"
- "fill } bind def\n");
- for( i = 0 ; i < numchars ; i++ )
- {
- char buf[32];
-#ifdef USE_FT_PS_NAMES
- char namebuf[256];
- PsOut_Get_FreeType_Glyph_Name(namebuf, ti->pFont, i+block_offset);
- sprintf(buf, "%s ", namebuf);
-#else
- sprintf(buf, "ch%02lx ", i);
-#endif /* USE_FT_PS_NAMES */
- PSType3_createOutlineGlyphs(out, ti, i+block_offset, buf);
- }
- fprintf(out, "end\n"
- "/BuildGlyph {\n"
- " exch /CharProcs get exch\n"
- " 2 copy known not {pop /.notdef} if get exec } bind def\n"
- "/BuildChar { 1 index /Encoding get exch get\n"
- " 1 index /Encoding get exec } bind def\n");
- fprintf(out, "currentdict end /%s exch definefont pop\n", psfontname);
- fprintf(out, "%%EndFont\n");
-
- return 0;
-}
-
-static
-char *FT_Get_TT_NAME_ID(FT_Face ttface, int index)
-{
- FT_SfntName name;
- char *s;
-
- if( index >= FT_Get_Sfnt_Name_Count(ttface) )
- return NULL;
-
- FT_Get_Sfnt_Name(ttface, index, &name);
- s = (char *)malloc(name.string_len+2);
- if( !s )
- return NULL;
- memcpy(s, (char *)name.string, name.string_len);
- s[name.string_len] = '\0';
- return s;
-}
-
-int PsOut_DownloadFreeType3(PsOutPtr self, const char *psfontname, FontPtr pFont, long block_offset)
-{
- struct ft2info cft2info = { 0 };
- struct ft2info *ti = &cft2info;
-
- S_Flush(self);
-
- ti->tf = (FTFontPtr)pFont->fontPrivate;
- ti->ttface = ti->tf->instance->face->face;
- ti->pFont = pFont;
-#ifdef DEBUG_gisburn
- fprintf(stderr, "# Downloading FT2 font filename='%s', ttface=%lx\n", ti->tf->instance->face->filename, (long)ti->ttface);
-#endif /* DEBUG_gisburn */
-
- ti->nameid.full_name = FT_Get_TT_NAME_ID(ti->ttface, TT_NAME_ID_FULL_NAME);
- ti->nameid.copyright = FT_Get_TT_NAME_ID(ti->ttface, TT_NAME_ID_COPYRIGHT);
- ti->nameid.family = FT_Get_TT_NAME_ID(ti->ttface, TT_NAME_ID_FONT_FAMILY);
- ti->nameid.subfamily = FT_Get_TT_NAME_ID(ti->ttface, TT_NAME_ID_FONT_SUBFAMILY);
- ti->nameid.version = FT_Get_TT_NAME_ID(ti->ttface, TT_NAME_ID_VERSION_STRING);
-
- ti->ttheader = (TT_Header *)FT_Get_Sfnt_Table(ti->ttface, ft_sfnt_head);
- ti->ttpostscript = (TT_Postscript *)FT_Get_Sfnt_Table(ti->ttface, ft_sfnt_post);
-
- PSType3_generateOutlineFont(self->Fp, psfontname, ti, block_offset);
-
- free(ti->nameid.full_name);
- free(ti->nameid.copyright);
- free(ti->nameid.family);
- free(ti->nameid.subfamily);
- free(ti->nameid.version);
-
- S_Flush(self);
-
- return 0;
-}
-
diff --git a/nx-X11/programs/Xserver/Xprint/ps/ttf2pt1wrap.c b/nx-X11/programs/Xserver/Xprint/ps/ttf2pt1wrap.c
deleted file mode 100644
index 57bb777d2..000000000
--- a/nx-X11/programs/Xserver/Xprint/ps/ttf2pt1wrap.c
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Wrapper to add missing symbol to externally supplied code
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifdef Lynx
-extern int optind;
-extern char *optarg;
-#endif
-
-#include "ttf2pt1.c"
diff --git a/nx-X11/programs/Xserver/Xprint/raster/Imakefile b/nx-X11/programs/Xserver/Xprint/raster/Imakefile
deleted file mode 100644
index e2112c00b..000000000
--- a/nx-X11/programs/Xserver/Xprint/raster/Imakefile
+++ /dev/null
@@ -1,28 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:11 cpqbld Exp $
-
-#include <Server.tmpl>
-
-SRCS1 = Raster.c RasterAttVal.c
-OBJS1 = Raster.o RasterAttVal.o
-
-SRCS = $(SRCS1)
-
-OBJS = $(OBJS1)
-
- INCLUDES = -I. -I$(XINCLUDESRC) -I.. -I$(LIBSRC) \
- -I../../cfb -I../../mfb -I../../mi \
- -I../../include -I$(TOP)/include -I$(FONTINCSRC)
-
-
- LINTLIBS = ../../dix/llib-ldix.ln ../../os/llib-los.ln \
- ../../mfb/llib-lmfb.ln ../../mi/llib-lmi.ln \
- ../../cfb/llib-lcfb.ln
-
- DEFINES = -D_XP_PRINT_SERVER_ -UXFree86LOADER
-
-NormalLibraryObjectRule()
-
-NormalLibraryTarget(raster,$(OBJS))
-NormalLintTarget($(SRCS1) $(SRCS2))
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/Xprint/raster/Raster.c b/nx-X11/programs/Xserver/Xprint/raster/Raster.c
deleted file mode 100644
index 781327b33..000000000
--- a/nx-X11/programs/Xserver/Xprint/raster/Raster.c
+++ /dev/null
@@ -1,1580 +0,0 @@
-/* $Xorg: Raster.c,v 1.4 2001/03/14 18:46:12 pookie Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-/* $XFree86: xc/programs/Xserver/Xprint/raster/Raster.c,v 1.11tsi Exp $ */
-
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: printer/Raster.c
-** *
-** * Contents:
-** * Raster driver for the print server.
-** *
-** * Copyright: Copyright 1993, 1995 Hewlett-Packard Company
-** *
-** *********************************************************
-**
-********************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <X11/X.h>
-#include <X11/Xos.h> /* for SIGCLD on pre-POSIX systems */
-#define NEED_EVENTS
-#include <X11/Xproto.h>
-#undef NEED_EVENTS
-#include <X11/Xatom.h>
-#include "misc.h"
-#include "dixstruct.h"
-#include "scrnintstr.h"
-#include "screenint.h"
-#include "colormapst.h"
-#include "windowstr.h"
-#include "propertyst.h"
-#include "servermd.h" /* needed for IMAGE_BUFSIZE */
-#include "mfb.h"
-#include "mi.h"
-
-#include <X11/extensions/Print.h>
-#include "Raster.h"
-
-#include "attributes.h"
-#include "AttrValid.h"
-#include "DiPrint.h"
-
-static void AllocateRasterPrivates(
- ScreenPtr pScreen);
-static Bool RasterChangeWindowAttributes(
- WindowPtr pWin,
- unsigned long mask);
-static int StartJob(
- XpContextPtr pCon,
- Bool sendClientData,
- ClientPtr client);
-static int StartPage(
- XpContextPtr pCon,
- WindowPtr pWin);
-static int StartDoc(
- XpContextPtr pCon,
- XPDocumentType type);
-static int EndDoc(
- XpContextPtr pCon,
- Bool cancel);
-static int EndJob(
- XpContextPtr pCon,
- Bool cancel);
-static int EndPage(
- XpContextPtr pCon,
- WindowPtr pWin);
-static int DocumentData(
- XpContextPtr pCon,
- DrawablePtr pDraw,
- char *pData,
- int len_data,
- char *pDoc_fmt,
- int len_fmt,
- char *pOptions,
- int len_options,
- ClientPtr client);
-static int GetDocumentData(
- XpContextPtr pContext,
- ClientPtr client,
- int maxBufferSize);
-static void FreePageFiles(
- RasterContextPrivPtr pWinPriv);
-static int SystemCmd(
- char *pCommand);
-static Bool RasterCloseScreen(
- int index,
- ScreenPtr pScreen);
-static int RasterInitContext(XpContextPtr pCon);
-static Bool RasterDestroyContext(XpContextPtr pCon);
-static char *RasterGetAttributes(
- XpContextPtr pContext,
- XPAttributes class);
-static char *RasterGetOneAttribute(XpContextPtr pCon,
- XPAttributes class,
- char *attribute);
-static int RasterSetAttributes(XpContextPtr pCon,
- XPAttributes class,
- char *attributes);
-static int RasterAugmentAttributes(XpContextPtr pCon,
- XPAttributes class,
- char *attributes);
-static int RasterMediumDimensions(XpContextPtr pCon,
- CARD16 *width,
- CARD16 *height);
-static int RasterReproducibleArea(XpContextPtr pCon,
- xRectangle *pRect);
-
-#define MAX(a,b) (((a) > (b)) ? (a) : (b))
-#define DOC_PCL 1
-#define DOC_RASTER 2
-
-static int RasterScreenPrivateIndex, RasterContextPrivateIndex;
-static int RasterGeneration = 0;
-static char RASTER_DRIV_NAME[] = "XP-RASTER";
-static int doc_type = DOC_RASTER;
-
-#define ABSOLUTE_PCLCOMP_PATH1 "/usr/openwin/bin/pclcomp"
-#define ABSOLUTE_PCLCOMP_PATH2 "/usr/X11/bin/pclcomp"
-
-static char *pcl3_output_cmds[] = {
- "xpr -device ljet -rv -landscape < %(InFile)% | pclcomp -0 > %(OutFile)%",
- "xpr -device ljet -rv -landscape < %(InFile)% | pclcomp -01 > %(OutFile)%",
- "xpr -device ljet -rv -landscape < %(InFile)% | pclcomp -02 > %(OutFile)%",
- "xpr -device ljet -rv -landscape < %(InFile)% | pclcomp -03 > %(OutFile)%",
- "xpr -device ljet -rv -landscape < %(InFile)% | pclcomp -012 > %(OutFile)%",
- "xpr -device ljet -rv -landscape < %(InFile)% | pclcomp -013 > %(OutFile)%",
- "xpr -device ljet -rv -landscape < %(InFile)% | pclcomp -023 > %(OutFile)%",
- "xpr -device ljet -rv -landscape < %(InFile)% | pclcomp -0123 > %(OutFile)%",
- "xpr -device ljet -rv -landscape < %(InFile)% > %(OutFile)%",
- "xpr -device ljet -rv < %(InFile)% | pclcomp -0 > %(OutFile)%",
- "xpr -device ljet -rv < %(InFile)% | pclcomp -01 > %(OutFile)%",
- "xpr -device ljet -rv < %(InFile)% | pclcomp -02 > %(OutFile)%",
- "xpr -device ljet -rv < %(InFile)% | pclcomp -03 > %(OutFile)%",
- "xpr -device ljet -rv < %(InFile)% | pclcomp -012 > %(OutFile)%",
- "xpr -device ljet -rv < %(InFile)% | pclcomp -013 > %(OutFile)%",
- "xpr -device ljet -rv < %(InFile)% | pclcomp -023 > %(OutFile)%",
- "xpr -device ljet -rv < %(InFile)% | pclcomp -0123 > %(OutFile)%",
- "xpr -device ljet -rv < %(InFile)% > %(OutFile)%"};
-
-Bool
-InitializeRasterDriver(
- int ndx,
- ScreenPtr pScreen,
- int argc,
- char **argv)
-{
- int xRes, yRes;
- int maxRes, maxDim, numBytes;
- RasterScreenPrivPtr pPriv;
-
- /*
- * Register this driver's InitContext function with the print extension.
- * This is a bit
- * sleazy, as the extension hasn't yet been initialized, but the
- * extension needs to know this, and this seems the best time to
- * provide the information.
- */
- XpRegisterInitFunc( pScreen, RASTER_DRIV_NAME, RasterInitContext );
-
- /*
- * Create and load the devPrivate for the printer layer.
- */
- AllocateRasterPrivates(pScreen);
-
- pPriv = (RasterScreenPrivPtr)
- pScreen->devPrivates[RasterScreenPrivateIndex].ptr;
-
- maxDim = MAX( pScreen->height, pScreen->width );
- numBytes = maxDim + BITMAP_SCANLINE_PAD - 1; /* pixels per row */
- numBytes *= maxDim;
- numBytes /= 8; /* bytes per row */
- xRes = pScreen->width / (pScreen->mmWidth / 25.4);
- yRes = pScreen->height / (pScreen->mmHeight / 25.4);
- maxRes = MAX( xRes, yRes );
-
- pPriv->pBits = (char *)xalloc(numBytes);
-
- /*
- * Have to allocate maxDim X maxDim to allow for landscape mode.
- */
- mfbScreenInit(pScreen, pPriv->pBits, maxDim, maxDim, maxRes,
- maxRes, maxDim);
- miInitializeBackingStore(pScreen);
- pScreen->blackPixel = 1;
- pScreen->whitePixel = 0;
- if(mfbCreateDefColormap(pScreen) == FALSE)
- ; /* XXX what do I do if it fails? */
-
- /*
- cfbScreenInit(pScreen, pPriv->pBits, maxWidth, maxHeight, maxXres,
- maxYres, maxWidth);
- miInitializeBackingStore(pScreen);
- scalingScreenInit(pScreen);
- */
-
- pScreen->SaveScreen = (SaveScreenProcPtr)_XpBoolNoop;
- pPriv->ChangeWindowAttributes = pScreen->ChangeWindowAttributes;
- pScreen->ChangeWindowAttributes = RasterChangeWindowAttributes;
- pPriv->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = RasterCloseScreen;
-
- return TRUE;
-}
-
-/*
- * GetPropString searches the context's config database for a property
- * by the name of propName. If found, it returns the property's
- * value, otherwise it returns NULL unless the requested attribute
- * is RASTER_PRINT_PAGE_COMMAND, in which case it returns a hard-coded
- * default string to invoke xpr to produce a PostScript(tm) formatted
- * raster.
- */
-
-static char *
-GetPropString(
- XpContextPtr pCon,
- char *propName)
-{
- RasterContextPrivPtr pConPriv = (RasterContextPrivPtr)
- pCon->devPrivates[RasterContextPrivateIndex].ptr;
- char *type;
- XrmValue val;
- struct stat status;
- int pclcomp_exists = 0;
-
- if( XrmGetResource(pConPriv->config, propName, propName, &type, &val) ==
- True )
- return (char *)val.addr;
-
- if( !strcmp( propName, RASTER_PRINT_PAGE_COMMAND ) )
- if( doc_type == DOC_RASTER )
- return "xpr -device ps %(InFile)% > %(OutFile)%";
- else
- {
- XpOid orientation;
- XpOid compression;
- int pcl3_output_index = 0;
-
- orientation = XpGetContentOrientation(pCon);
- compression = XpGetAvailableCompression(pCon);
-
- switch(orientation) {
- case xpoid_val_content_orientation_landscape:
- pcl3_output_index = 0;
- break;
- default:
- pcl3_output_index += 9;
- break;
- }
-
- if(stat(ABSOLUTE_PCLCOMP_PATH1, &status) != -1)
- pclcomp_exists = 1;
- else if(stat(ABSOLUTE_PCLCOMP_PATH2, &status) != -1)
- pclcomp_exists = 1;
-
- if(pclcomp_exists)
- switch(compression) {
- case xpoid_val_available_compressions_0:
- pcl3_output_index += 0;
- break;
- case xpoid_val_available_compressions_01:
- pcl3_output_index += 1;
- break;
- case xpoid_val_available_compressions_02:
- pcl3_output_index += 2;
- break;
- case xpoid_val_available_compressions_03:
- pcl3_output_index += 3;
- break;
- case xpoid_val_available_compressions_012:
- pcl3_output_index += 4;
- break;
- case xpoid_val_available_compressions_013:
- pcl3_output_index += 5;
- break;
- case xpoid_val_available_compressions_023:
- pcl3_output_index += 6;
- break;
- default:
- pcl3_output_index += 7;
- break;
- }
- else
- pcl3_output_index += 8;
-
- return pcl3_output_cmds[pcl3_output_index];
- }
- else
- return NULL;
-}
-
-static void
-SetDocumentType(
- XpContextPtr pCon)
-{
- XpOidList* attrs_supported;
-
- /*
- * only validate attributes found in document-attributes-supported
- */
- attrs_supported =
- XpGetListAttr(pCon, XPPrinterAttr,
- xpoid_att_document_attributes_supported,
- (const XpOidList*)NULL);
-
- if(XpOidListHasOid(attrs_supported, xpoid_att_document_format))
- {
- const char* value_in;
- XpOidDocFmt *f;
-
- value_in = XpGetStringAttr(pCon, XPDocAttr, xpoid_att_document_format);
-
- f = XpOidDocFmtNew( value_in );
-
- if( f != NULL )
- {
- if( !strcmp( f->format, "PCL" ) )
- doc_type = DOC_PCL;
- else
- doc_type = DOC_RASTER;
-
- XpOidDocFmtDelete( f );
- }
- }
-
- /*
- * clean up
- */
- XpOidListDelete(attrs_supported);
-}
-
-static int
-StartJob(
- XpContextPtr pCon,
- Bool sendClientData,
- ClientPtr client)
-{
- RasterContextPrivPtr pConPriv = (RasterContextPrivPtr)
- pCon->devPrivates[RasterContextPrivateIndex].ptr;
-
- SetDocumentType( pCon );
-
- /*
- * Check for existing page file, and delete it if it exists.
- */
- if(pConPriv->pageFileName != (char *)NULL)
- {
- if(pConPriv->pPageFile != (FILE *)NULL)
- {
- fclose(pConPriv->pPageFile);
- pConPriv->pPageFile = (FILE *)NULL;
- }
- unlink(pConPriv->pageFileName);
- Xfree(pConPriv->pageFileName);
- pConPriv->pageFileName = (char *)NULL;
- }
-
- /*
- * Create a temporary file to store the printer output.
- */
- if(!sendClientData)
- {
- /*
- * Create a temporary file to store the printer output.
- */
- if (!XpOpenTmpFile("w", &pConPriv->jobFileName, &pConPriv->pJobFile))
- return BadAlloc;
- }
-
- return Success;
-}
-
-/*
- * StartDoc and EndDoc are just no-ops in this implementation, since
- * our view of the spooler really doesn't recognize documents.
- */
-
-static int
-StartDoc(
- XpContextPtr pCon,
- XPDocumentType type)
-{
- return Success;
-}
-
-static int EndDoc(
- XpContextPtr pCon,
- Bool cancel)
-{
- return Success;
-}
-
-#if 0
-
-/* XXX Not used. */
-
-/*
- * BuidArgVector takes a pointer to a comma-separated list of command
- * options and splits it out into an array of argument pointers. The
- * caller must not free the optionList after calling this function until
- * the returned arg vector is no longer needed, at which time the arg
- * vector should also be freed.
- */
-
-#define SEPARATOR_CHAR (char)','
-
-static char **
-BuildArgVector(
- char *optionList,
- char **argVector,
- int argCount)
-{
- char *curArg, *lastChar, *endArg;
-
- curArg = optionList;
- lastChar = optionList + strlen(optionList); /* includes final NULL */
-
- while(curArg != (char *)NULL && curArg < lastChar)
- {
- /* strip leading white space */
- while(curArg < lastChar && isascii((int)*curArg) &&
- isspace((int)*curArg))
- curArg++;
-
- if(curArg < lastChar)
- {
- argVector = (char **)Xrealloc(argVector,
- sizeof(char *) * (argCount + 2));
- argVector[argCount] = curArg;
- argVector[++argCount] = (char *)NULL;
-
- endArg = strchr(curArg, SEPARATOR_CHAR);
-
- /* Should I strip trailing white space ??? */
-
- if(endArg != (char *)NULL)
- {
- *endArg = (char)'\0';
- curArg = endArg + 1;
- }
- else
- curArg = (char *)NULL;
- }
- }
-
- return argVector;
-}
-#endif
-
-static int
-EndJob(
- XpContextPtr pCon,
- Bool cancel)
-{
- RasterContextPrivPtr pConPriv = (RasterContextPrivPtr)
- pCon->devPrivates[RasterContextPrivateIndex].ptr;
-
- if( cancel == True )
- {
- if(pConPriv->getDocClient != (ClientPtr)NULL) {
- XpFinishDocData(pConPriv->getDocClient);
-
- pConPriv->getDocClient = (ClientPtr)NULL;
- pConPriv->getDocBufSize = 0;
- }
-
- if(pConPriv->jobFileName != (char *)NULL)
- {
- unlink(pConPriv->jobFileName);
- Xfree(pConPriv->jobFileName);
- pConPriv->jobFileName = (char *)NULL;
- }
-
- return Success;
- }
-
- if(pConPriv->getDocClient != (ClientPtr)NULL&&pConPriv->getDocBufSize > 0)
- {
- XpFinishDocData(pConPriv->getDocClient);
-
- pConPriv->getDocClient = (ClientPtr)NULL;
- pConPriv->getDocBufSize = 0;
-
- return Success;
- }
-
- if(pConPriv->pJobFile != (FILE *)NULL)
- {
- fclose(pConPriv->pJobFile);
- pConPriv->pJobFile = (FILE *)NULL;
-
- if(pConPriv->jobFileName != (char *)NULL)
- {
- XpSubmitJob( pConPriv->jobFileName, pCon );
- unlink(pConPriv->jobFileName);
- Xfree(pConPriv->jobFileName);
- pConPriv->jobFileName = (char *)NULL;
- }
- }
-
- return Success;
-}
-
-/* StartPage
- *
- * If page file exists
- * close page file
- * set page file pointer = NULL
- * unlink page file
- */
-static int
-StartPage(
- XpContextPtr pCon,
- WindowPtr pWin)
-{
- RasterContextPrivPtr pConPriv = (RasterContextPrivPtr)
- pCon->devPrivates[RasterContextPrivateIndex].ptr;
-
- if(pConPriv->pPageFile != (FILE *)NULL)
- {
- fclose(pConPriv->pPageFile);
- pConPriv->pPageFile = (FILE *)NULL;
- }
- if(pConPriv->pageFileName != (char *)NULL)
- {
- unlink(pConPriv->pageFileName);
- pConPriv->pageFileName = (char *)NULL;
- }
-
- return Success;
-}
-
-#include "X11/XWDFile.h"
-
-
-#define lowbit(x) ((x) & (~(x) + 1))
-
-/*
- * Get the XWDColors of all pixels in colormap - returns # of colors
- */
-static XWDColor *
-Get_XWDColors(
- ColormapPtr pCmap)
-{
- int i, ncolors;
- xrgb *prgbList;
- Pixel *pPixels;
- XWDColor *colors;
-
- ncolors = pCmap->pVisual->ColormapEntries;
- if (!(colors = (XWDColor *) malloc (sizeof(XWDColor) * ncolors)))
- return (XWDColor *) NULL;
- if (!(prgbList = (xrgb*) malloc(sizeof(xrgb) * ncolors)))
- {
- Xfree(colors);
- return (XWDColor *) NULL;
- }
- if (!(pPixels = (Pixel*) malloc(sizeof(Pixel) * ncolors)))
- {
- Xfree(colors);
- Xfree(prgbList);
- return (XWDColor *) NULL;
- }
-
- if (pCmap->pVisual->class == DirectColor ||
- pCmap->pVisual->class == TrueColor) {
- Pixel red, green, blue, red1, green1, blue1;
-
- red = green = blue = 0;
- red1 = lowbit(pCmap->pVisual->redMask);
- green1 = lowbit(pCmap->pVisual->greenMask);
- blue1 = lowbit(pCmap->pVisual->blueMask);
- for (i=0; i<ncolors; i++) {
- colors[i].pixel = red|green|blue;
- colors[i].pad = 0;
- red += red1;
- if (red > pCmap->pVisual->redMask)
- red = 0;
- green += green1;
- if (green > pCmap->pVisual->greenMask)
- green = 0;
- blue += blue1;
- if (blue > pCmap->pVisual->blueMask)
- blue = 0;
- }
- } else {
- for (i=0; i<ncolors; i++) {
- colors[i].pixel = i;
- colors[i].pad = 0;
- }
- }
-
- for(i = 0; i < ncolors; i++)
- pPixels[i] = colors[i].pixel;
-
- QueryColors(pCmap, ncolors, pPixels, prgbList);
- Xfree(pPixels);
-
- for(i = 0; i < ncolors; i++)
- {
- colors[i].red = prgbList[i].red;
- colors[i].green = prgbList[i].green;
- colors[i].blue = prgbList[i].blue;
- }
- Xfree(prgbList);
-
- return(colors);
-}
-
-static void
-_swapshort (
- register char *bp,
- register unsigned n)
-{
- register char c;
- register char *ep = bp + n;
-
- while (bp < ep) {
- c = *bp;
- *bp = *(bp + 1);
- bp++;
- *bp++ = c;
- }
-}
-
-static void
-_swaplong (
- register char *bp,
- register unsigned n)
-{
- register char c;
- register char *ep = bp + n;
- register char *sp;
-
- while (bp < ep) {
- sp = bp + 3;
- c = *sp;
- *sp = *bp;
- *bp++ = c;
- sp = bp + 1;
- c = *sp;
- *sp = *bp;
- *bp++ = c;
- bp += 2;
- }
-}
-static int
-WriteWindowRaster(
- WindowPtr pWin,
- FILE *pRasterFile)
-{
- long widthBytesLine, length;
- int nlines, linesPerBuf, height, linesDone;
- char *pBuf;
- DrawablePtr pDraw = &pWin->drawable;
- XWDFileHeader header;
- int win_name_size;
- int header_size;
- int ncolors, i;
- char *win_name;
- VisualPtr pVisual;
- ColormapPtr pCmap;
- XWDColor *pColors;
- unsigned long swaptest = 1;
-
- widthBytesLine = PixmapBytePad(pWin->drawable.width, pWin->drawable.depth);
- length = widthBytesLine * pWin->drawable.height;
- height = pWin->drawable.height;
-
- if(length <= 0)
- return Success;
-
- if (widthBytesLine >= IMAGE_BUFSIZE)
- linesPerBuf = 1;
- else
- {
- linesPerBuf = IMAGE_BUFSIZE / widthBytesLine;
- if (linesPerBuf > height)
- linesPerBuf = height;
- }
- length = linesPerBuf * widthBytesLine;
- if (linesPerBuf < height)
- {
- /* we have to make sure intermediate buffers don't need padding */
- while ((linesPerBuf > 1) && (length & 3))
- {
- linesPerBuf--;
- length -= widthBytesLine;
- }
- while (length & 3)
- {
- linesPerBuf++;
- length += widthBytesLine;
- }
- }
- if(!(pBuf = (char *) Xalloc(length)))
- return (BadAlloc);
-
- /*
- * Start of Xwd header code.
- */
-
- /*
- * XXX - Should we use the real window name???
- */
- win_name = "xwdump";
- /* sizeof(char) is included for the null string terminator. */
- win_name_size = strlen(win_name) + sizeof(char);
-
- pCmap = (ColormapPtr)LookupIDByType(wColormap (pWin), RT_COLORMAP);
- pVisual = pCmap->pVisual;
- if((pColors = Get_XWDColors(pCmap)) == (XWDColor *)NULL)
- {
- Xfree(pBuf);
- return (BadAlloc);
- }
-
- /*
- * Write out header information.
- */
- header_size = sizeof(header) + win_name_size;
- header.header_size = (CARD32) header_size;
- header.file_version = (CARD32) XWD_FILE_VERSION;
- header.pixmap_format = (CARD32) ZPixmap; /* Must match GetImage below */
- header.pixmap_depth = (CARD32) pDraw->depth;
- header.pixmap_width = (CARD32) pDraw->width;
- header.pixmap_height = (CARD32) pDraw->height;
- header.xoffset = (CARD32) 0;
- header.byte_order = (CARD32) screenInfo.imageByteOrder;
- header.bitmap_unit = (CARD32) screenInfo.bitmapScanlineUnit;
- header.bitmap_bit_order = (CARD32) screenInfo.bitmapBitOrder;
- header.bitmap_pad = (CARD32) screenInfo.bitmapScanlinePad;
- header.bits_per_pixel = (CARD32) pDraw->bitsPerPixel;
- header.bytes_per_line = (CARD32) widthBytesLine;
- header.visual_class = (CARD32) pVisual->class;
- header.red_mask = (CARD32) pVisual->redMask;
- header.green_mask = (CARD32) pVisual->greenMask;
- header.blue_mask = (CARD32) pVisual->blueMask;
- header.bits_per_rgb = (CARD32) pVisual->bitsPerRGBValue;
- header.colormap_entries = (CARD32) pVisual->ColormapEntries;
- header.ncolors = ncolors = (CARD32) pVisual->ColormapEntries;
- header.window_width = (CARD32) pDraw->width;
- header.window_height = (CARD32) pDraw->height;
- header.window_x = 0;
- header.window_y = 0;
- header.window_bdrwidth = (CARD32) 0;
-
- if (*(char *) &swaptest) {
- _swaplong((char *) &header, sizeof(header));
- for (i = 0; i < ncolors; i++) {
- _swaplong((char *) &pColors[i].pixel, sizeof(long));
- _swapshort((char *) &pColors[i].red, 3 * sizeof(short));
- }
- }
-
- (void) fwrite((char *)&header, sizeof(header), 1, pRasterFile);
- (void) fwrite(win_name, win_name_size, 1, pRasterFile);
- (void) fwrite((char *) pColors, sizeof(XWDColor), ncolors, pRasterFile);
-
- Xfree(pColors);
-
- /*
- * End of Xwd header code.
- */
-
- linesDone = 0;
- while(height - linesDone > 0)
- {
- nlines = min(linesPerBuf, height - linesDone);
- (*pDraw->pScreen->GetImage) (pDraw,
- 0,
- linesDone,
- pWin->drawable.width,
- nlines,
- ZPixmap,
- ~0,
- pBuf);
-
- if(fwrite(pBuf, sizeof(char), (size_t)(nlines * widthBytesLine),
- pRasterFile) !=
- (size_t)(nlines * widthBytesLine))
- {
- Xfree(pBuf);
- return BadAlloc;
- }
- linesDone += nlines;
- }
- Xfree(pBuf);
- return Success;
-}
-
-
-static int
-SendPage( XpContextPtr pCon )
-{
- struct stat statBuf;
- RasterContextPrivPtr pConPriv = (RasterContextPrivPtr)
- pCon->devPrivates[RasterContextPrivateIndex].ptr;
-
- if(stat(pConPriv->pageFileName, &statBuf) < 0)
- return BadAlloc;
-
- return XpSendDocumentData(pConPriv->getDocClient,
- pConPriv->pPageFile, (int)statBuf.st_size,
- pConPriv->getDocBufSize);
-}
-
-/*
- * EndPage:
- *
- * If page file doesn't exist:
- * {
- * Create page file
- * Open page file
- * Write page header to page file
- * if(preRasterFile exists)
- * copy preRasterFile contents to page file
- * if(noRasterFile exists)
- * write noRasterFile contents to page file
- * else
- * Create raster image file
- * Open raster image file
- * GetImage data
- * Write Image data to raster image file
- * invoke page_command on raster image file
- * Write raster image file contents to page file
- * Unlink tempPage file
- * if(postRasterFile exists)
- * write postRasterFile contents to page file
- * Write page trailer to page file
- * }
- * Write page file to job file
- */
-static int
-EndPage(
- XpContextPtr pCon,
- WindowPtr pWin)
-{
- RasterContextPrivPtr pConPriv = (RasterContextPrivPtr)
- pCon->devPrivates[RasterContextPrivateIndex].ptr;
- struct stat statBuf;
- char *rasterFileName = (char *)NULL, *pCommand = (char *)NULL;
- FILE *pRasterFile = (FILE *)NULL;
-
- if(pConPriv->pageFileName == (char *)NULL)
- {
- /*
- * Open the page file.
- */
- if (!XpOpenTmpFile("w+", &pConPriv->pageFileName,
- &pConPriv->pPageFile))
- goto BAD_PAGE_ALLOC;
-
- /*
- * Copy any pre-raster document data to the page file.
- */
- if(pConPriv->pPreRasterFile != (FILE *)NULL)
- {
- if(CopyContentsAndDelete(&pConPriv->pPreRasterFile,
- &pConPriv->preRasterFileName,
- pConPriv->pPageFile) == FALSE)
- goto BAD_PAGE_ALLOC;
- }
-
- /*
- * Copy either the no-raster document data, or the raster
- * data itself to the page file.
- * If the no-raster file exists, then we don't process the
- * actual window raster bits.
- */
- if(pConPriv->pNoRasterFile != (FILE *)NULL)
- {
- if(CopyContentsAndDelete(&pConPriv->pNoRasterFile,
- &pConPriv->noRasterFileName,
- pConPriv->pPageFile) == FALSE)
- goto BAD_PAGE_ALLOC;
- }
- else
- {
- /*
- * Open the raster image file.
- */
- if (!XpOpenTmpFile("w", &rasterFileName, &pRasterFile))
- goto BAD_PAGE_ALLOC;
-
- /*
- * Write the page image data to the raster image file.
- */
- if(WriteWindowRaster(pWin, pRasterFile) != Success)
- goto BAD_PAGE_ALLOC;
-
- /*
- * Invoke the page_command on the raster image file.
- */
- if((pCommand = GetPropString(pCon, RASTER_PRINT_PAGE_COMMAND)) !=
- (char *)NULL)
- {
- char *outFileName;
- FILE *pOutFile;
-
- if (!XpOpenTmpFile("w", &outFileName, &pOutFile))
- goto BAD_PAGE_ALLOC;
- fclose(pOutFile);
-
- pCommand = ReplaceFileString(strdup(pCommand), rasterFileName,
- outFileName);
- fclose(pRasterFile);
- SystemCmd(pCommand);
- free(pCommand);
- /*
- * Delete the unprocessed raster file.
- */
- unlink(rasterFileName);
- Xfree(rasterFileName);
- rasterFileName = outFileName;
- if((pRasterFile = fopen(rasterFileName, "r")) == (FILE *)NULL)
- goto BAD_PAGE_ALLOC;
- }
- else
- {
- fclose(pRasterFile);
- if((pRasterFile = fopen(rasterFileName, "r")) == (FILE *)NULL)
- goto BAD_PAGE_ALLOC;
- }
-
- /*
- * Copy the raster image file contents to the page file.
- * Note that pRasterFile must be set to the start of the
- * raster file.
- */
- if(CopyContentsAndDelete(&pRasterFile,
- &rasterFileName,
- pConPriv->pPageFile) == FALSE)
- goto BAD_PAGE_ALLOC;
- }
-
- /*
- * Copy any post-raster document data to the page file.
- */
- if(pConPriv->pPostRasterFile != (FILE *)NULL)
- {
- if(CopyContentsAndDelete(&pConPriv->pPostRasterFile,
- &pConPriv->postRasterFileName,
- pConPriv->pPageFile) == FALSE)
- goto BAD_PAGE_ALLOC;
- }
-
- }
-
- /*
- * Write the page file contents to the job file or to the client
- * performing GetDocumentData.
- * pConPriv->pPageFile must first be set to the start of the page file.
- */
- rewind(pConPriv->pPageFile);
- if(stat(pConPriv->pageFileName, &statBuf) < 0)
- goto BAD_PAGE_ALLOC;
-
- /*
- * Send the page data to whatever client has called GetDocumentData.
- */
- if(pConPriv->getDocClient != (ClientPtr)NULL&&pConPriv->getDocBufSize > 0)
- {
- int retval;
- /*
- * We should do something like the following: suspend the
- * caller until we can gracefully write all the data in small
- * chunks to the receiver, but for now we'll just call WriteToClient
- * on the huge chunk
- */
- retval = SendPage(pCon);
- fclose(pConPriv->pPageFile);
- pConPriv->pPageFile = (FILE *)NULL;
- unlink(pConPriv->pageFileName);
- free(pConPriv->pageFileName);
- pConPriv->pageFileName = (char *)NULL;
- return retval;
- }
-
- if(pConPriv->pJobFile == (FILE *)NULL)
- {
- /*
- * This shouldn't be necessary. I believe we only get here if
- * someone calls "EndPage" prior to "StartJob". This error
- * condition should probably be trapped at a higher level.
- */
-
- if(pConPriv->jobFileName != (char *)NULL)
- Xfree(pConPriv->jobFileName);
- /*
- * Create a temporary file to store the printer output.
- */
- if (!XpOpenTmpFile("w", &pConPriv->jobFileName, &pConPriv->pJobFile))
- goto BAD_PAGE_ALLOC;
- }
-
- if(TransferBytes(pConPriv->pPageFile, pConPriv->pJobFile,
- (int)statBuf.st_size) != (int)statBuf.st_size)
- goto BAD_PAGE_ALLOC;
-
- fclose(pConPriv->pPageFile);
- pConPriv->pPageFile = (FILE *)NULL;
- unlink(pConPriv->pageFileName);
- free(pConPriv->pageFileName);
- pConPriv->pageFileName = (char *)NULL;
-
- return Success;
-
- BAD_PAGE_ALLOC:
-
- FreePageFiles(pConPriv);
-
- if(pRasterFile != (FILE *)NULL)
- fclose(pRasterFile);
- if(rasterFileName != (char *)NULL)
- {
- unlink(rasterFileName);
- Xfree(rasterFileName);
- }
- return BadAlloc;
-}
-
-static int
-DocumentData(
- XpContextPtr pCon,
- DrawablePtr pDraw,
- char *pData,
- int len_data,
- char *pDoc_fmt,
- int len_fmt,
- char *pOptions,
- int len_options,
- ClientPtr client)
-{
- RasterContextPrivPtr pConPriv = (RasterContextPrivPtr)
- pCon->devPrivates[RasterContextPrivateIndex].ptr;
- char *preRasterStr = PRE_RASTER, *postRasterStr = POST_RASTER,
- *noRasterStr = NO_RASTER;
-
- /*
- * Check that options equals either PRE_RASTER or POST_RASTER.
- */
- if(len_options == strlen(preRasterStr) &&
- strncmp(pOptions, preRasterStr, strlen(preRasterStr)) == 0)
- {
- if(pConPriv->pPreRasterFile == (FILE *)NULL)
- {
- if (!XpOpenTmpFile("w+", &pConPriv->preRasterFileName,
- &pConPriv->pPreRasterFile))
- return BadAlloc;
- }
- if(fwrite(pData, sizeof(char), (size_t)len_data,
- pConPriv->pPreRasterFile) != (size_t)len_data)
- return BadAlloc;
- fflush(pConPriv->pPreRasterFile);
- }
- else if(len_options == strlen(postRasterStr) &&
- strncmp(pOptions, postRasterStr, strlen(postRasterStr)) == 0)
- {
- if(pConPriv->pPostRasterFile == (FILE *)NULL)
- {
- if (!XpOpenTmpFile("w+", &pConPriv->postRasterFileName,
- &pConPriv->pPostRasterFile))
- return BadAlloc;
- }
- if(fwrite(pData, sizeof(char), (size_t)len_data,
- pConPriv->pPostRasterFile) != (size_t)len_data)
- return BadAlloc;
- fflush(pConPriv->pPostRasterFile);
- }
- else if(len_options == strlen(noRasterStr) &&
- strncmp(pOptions, noRasterStr, strlen(noRasterStr)) == 0)
- {
- if(pConPriv->pNoRasterFile == (FILE *)NULL)
- {
- if (!XpOpenTmpFile("w+", &pConPriv->noRasterFileName,
- &pConPriv->pNoRasterFile))
- return BadAlloc;
- }
- if(fwrite(pData, sizeof(char), (size_t)len_data,
- pConPriv->pNoRasterFile) != (size_t)len_data)
- return BadAlloc;
- fflush(pConPriv->pNoRasterFile);
- }
- else
- return BadValue;
-
- return Success;
-}
-
-/*
- * GetDocumentData notes which client is requesting the document data for
- * a particular context. The Raster driver's EndPage function causes the
- * data to be written to the proper client.
- */
-static int
-GetDocumentData(
- XpContextPtr pContext,
- ClientPtr client,
- int maxBufferSize)
-{
- RasterContextPrivPtr pConPriv = (RasterContextPrivPtr)
- pContext->devPrivates[RasterContextPrivateIndex].ptr;
-
- pConPriv->getDocClient = client;
- pConPriv->getDocBufSize = maxBufferSize;
- return Success;
-}
-
-static void
-AllocateRasterPrivates(
- ScreenPtr pScreen)
-{
- if(RasterGeneration != serverGeneration)
- {
- RasterScreenPrivateIndex = AllocateScreenPrivateIndex();
- RasterContextPrivateIndex = XpAllocateContextPrivateIndex();
- XpAllocateContextPrivate( RasterContextPrivateIndex,
- sizeof( RasterContextPrivRec ) );
-
- RasterGeneration = serverGeneration;
- }
- pScreen->devPrivates[RasterScreenPrivateIndex].ptr = (pointer)Xalloc(
- sizeof(RasterScreenPrivRec));
-}
-
-/*
- * RasterChangeWindowAttributes - Make sure that the window's backing
- * store is turned on.
- */
-static Bool
-RasterChangeWindowAttributes(
- WindowPtr pWin,
- unsigned long mask)
-{
- Bool status = Success;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RasterScreenPrivPtr pScreenPriv = (RasterScreenPrivPtr)
- pScreen->devPrivates[RasterScreenPrivateIndex].ptr;
-
- if(pWin->backingStore == NotUseful)
- {
- pWin->backingStore = WhenMapped;
- mask |= CWBackingStore;
- }
-
- if(pScreenPriv->ChangeWindowAttributes != NULL)
- {
- pScreen->ChangeWindowAttributes = pScreenPriv->ChangeWindowAttributes;
- status = pScreen->ChangeWindowAttributes(pWin, mask);
- pScreen->ChangeWindowAttributes = RasterChangeWindowAttributes;
- }
- return status;
-}
-
-/*
- * RasterValidateDocFormats - Inspects the files available in the
- * ddx-config/XP-RASTER directory to find the names of PDLs for which
- * we have processing commands. These names are then intersected with
- * the contents of the printer's document-formats-supported attribute,
- * and the result is stored back into document-formats-supported.
- * We have hard-coded knowledge of how to produce PS, so we always
- * leave that in, if it's listed in document-formats-supported,
- * even if we don't have a configuration file. If there is a
- * configuration file for PS, then its contents will override our default.
- */
-static void
-RasterValidateDocFormats(
- XpContextPtr pCon)
-{
-}
-
-/*
- * RasterValidateAttrs - Inspects and Corrects the attribute values
- * in the specified context.
- */
-static void
-RasterValidateAttrs(
- XpContextPtr pCon)
-{
- RasterValidateDocFormats(pCon);
- XpValidatePrinterPool(pCon, &RasterValidatePoolsRec);
- XpValidateJobPool(pCon, &RasterValidatePoolsRec);
- XpValidateDocumentPool(pCon, &RasterValidatePoolsRec);
-}
-
-/*
- * RasterInitContext - Establish the appropriate values for a
- * PrintContext used with the Raster Driver.
- */
-static char DOC_ATT_SUPP[]="document-attributes-supported:\tdefault-medium document-format";
-static char JOB_ATT_SUPP[]="job-attributes-supported:\t";
-static char DDX_DIR[]="ddx-config";
-
-static int
-RasterInitContext(
- XpContextPtr pCon)
-{
- char *configFileName, *val, *attrStr;
- RasterContextPrivPtr pConPriv;
- XpDriverFuncsPtr pFuncs;
-
- /*
- * Initialize the attribute store for this printer.
- */
- XpInitAttributes( pCon );
-
- /*
- * Validate the attributes
- */
- RasterValidateAttrs( pCon );
-
-
- /*
- * Initialize the function pointers
- */
- pFuncs = &( pCon->funcs );
- pFuncs->StartJob = StartJob;
- pFuncs->EndJob = EndJob;
- pFuncs->StartDoc = StartDoc;
- pFuncs->EndDoc = EndDoc;
- pFuncs->StartPage = StartPage;
- pFuncs->EndPage = EndPage;
- pFuncs->PutDocumentData = DocumentData;
- pFuncs->GetDocumentData = GetDocumentData;
- pFuncs->DestroyContext = RasterDestroyContext;
- pFuncs->GetAttributes = RasterGetAttributes;
- pFuncs->GetOneAttribute = RasterGetOneAttribute;
- pFuncs->SetAttributes = RasterSetAttributes;
- pFuncs->AugmentAttributes = RasterAugmentAttributes;
- pFuncs->GetMediumDimensions = RasterMediumDimensions;
- pFuncs->GetReproducibleArea = RasterReproducibleArea;
-
- /*
- * Set up the context privates
- */
- pConPriv = (RasterContextPrivPtr)
- pCon->devPrivates[RasterContextPrivateIndex].ptr;
-
- pConPriv->jobFileName = (char *)NULL;
- pConPriv->pageFileName = (char *)NULL;
- pConPriv->preRasterFileName = (char *)NULL;
- pConPriv->postRasterFileName = (char *)NULL;
- pConPriv->noRasterFileName = (char *)NULL;
- pConPriv->pJobFile = (FILE *)NULL;
- pConPriv->pPageFile = (FILE *)NULL;
- pConPriv->pPreRasterFile = (FILE *)NULL;
- pConPriv->pPostRasterFile = (FILE *)NULL;
- pConPriv->pNoRasterFile = (FILE *)NULL;
-
- pConPriv->getDocClient = (ClientPtr)NULL;
- pConPriv->getDocBufSize = 0;
-
- /*
- * Get the configuration information for the context's printer
- */
- configFileName = XpGetOneAttribute( pCon, XPPrinterAttr,
- "xp-ddx-config-file-name" );
- if(configFileName && strlen(configFileName))
- {
- if( configFileName[0] == '/' )
- pConPriv->config = XrmGetFileDatabase( configFileName );
- else
- {
- char *configDir, *configFilePath;
-
- configDir = XpGetConfigDir(FALSE);
- configFilePath = (char *)malloc((strlen(configDir) +
- strlen(DDX_DIR) +
- strlen(RASTER_DRIV_NAME) +
- strlen(configFileName) +
- 4)* sizeof(char));
- sprintf(configFilePath, "%s/%s/%s/%s", configDir, DDX_DIR,
- RASTER_DRIV_NAME, configFileName);
- pConPriv->config = XrmGetFileDatabase(configFilePath);
- free(configDir);
- free(configFilePath);
- }
- }
- else
- pConPriv->config = (XrmDatabase)NULL;
-
- /*
- * Add our own attribute initialization
- */
- /*
- * document-attributes-supported
- */
- val = XpGetOneAttribute(pCon, XPServerAttr, "document-attributes-supported");
- if((attrStr = (char *)xalloc(strlen(val) + strlen(DOC_ATT_SUPP) + 4)) ==
- (char *)NULL)
- return BadAlloc;
- sprintf(attrStr, "*%s %s", DOC_ATT_SUPP, val);
- XpAugmentAttributes(pCon, XPPrinterAttr, attrStr);
- xfree(attrStr);
-
- /*
- * job-attributes-supported
- */
- val = XpGetOneAttribute(pCon, XPServerAttr, "job-attributes-supported");
- if((attrStr = (char *)xalloc(strlen(val) + strlen(JOB_ATT_SUPP) + 4)) ==
- (char *)NULL)
- return BadAlloc;
- sprintf(attrStr, "*%s %s", JOB_ATT_SUPP, val);
- XpAugmentAttributes(pCon, XPPrinterAttr, attrStr);
- xfree(attrStr);
-
- /*
- * PageAttributesSupported
- */
- XpAugmentAttributes(pCon, XPPrinterAttr, "*xp-page-attributes-supported:");
-
- return Success;
-}
-
-
-
-static Bool
-RasterDestroyContext(
- XpContextPtr pCon)
-{
- RasterContextPrivPtr pConPriv = (RasterContextPrivPtr)
- pCon->devPrivates[RasterContextPrivateIndex].ptr;
-
- /*
- * Clean up the temporary files
- */
- FreePageFiles( pConPriv );
-
- if( pConPriv->pJobFile != (FILE *)NULL )
- {
- fclose( pConPriv->pJobFile );
- pConPriv->pJobFile = (FILE *)NULL;
- }
- if( pConPriv->jobFileName != (char *)NULL )
- {
- unlink( pConPriv->jobFileName );
- Xfree( pConPriv->jobFileName );
- }
- if(pConPriv->config)
- {
- XrmDestroyDatabase(pConPriv->config);
- pConPriv->config = (XrmDatabase)NULL;
- }
-
- XpDestroyAttributes( pCon );
- return Success;
-}
-
-static char *
-RasterGetAttributes(
- XpContextPtr pContext,
- XPAttributes class)
-{
- return XpGetAttributes( pContext, class );
-}
-
-static char *
-RasterGetOneAttribute(
- XpContextPtr pContext,
- XPAttributes class,
- char *attr)
-{
- return XpGetOneAttribute( pContext, class, attr );
-}
-
-static int
-RasterSetAttributes(XpContextPtr pCon,
- XPAttributes class,
- char *attributes)
-{
- return XpSetAttributes( pCon, class, attributes );
-}
-
-static int
-RasterAugmentAttributes(
- XpContextPtr pCon,
- XPAttributes class,
- char *attributes)
-{
- return XpAugmentAttributes( pCon, class, attributes );
-}
-
-static void
-FreePageFiles(
- RasterContextPrivPtr pConPriv)
-{
- if(pConPriv->pPageFile != (FILE *)NULL)
- {
- fclose(pConPriv->pPageFile);
- pConPriv->pPageFile = (FILE *)NULL;
- }
- if(pConPriv->pageFileName != (char *)NULL)
- {
- unlink(pConPriv->pageFileName);
- Xfree(pConPriv->pageFileName);
- pConPriv->pageFileName = (char *)NULL;
- }
- if(pConPriv->pPreRasterFile != (FILE *)NULL)
- {
- fclose(pConPriv->pPreRasterFile);
- pConPriv->pPreRasterFile = (FILE *)NULL;
- }
- if(pConPriv->preRasterFileName != (char *)NULL)
- {
- unlink(pConPriv->preRasterFileName);
- Xfree(pConPriv->preRasterFileName);
- pConPriv->preRasterFileName = (char *)NULL;
- }
- if(pConPriv->pPostRasterFile != (FILE *)NULL)
- {
- fclose(pConPriv->pPostRasterFile);
- pConPriv->pPostRasterFile = (FILE *)NULL;
- }
- if(pConPriv->postRasterFileName != (char *)NULL)
- {
- unlink(pConPriv->postRasterFileName);
- Xfree(pConPriv->postRasterFileName);
- pConPriv->postRasterFileName = (char *)NULL;
- }
- if(pConPriv->pNoRasterFile != (FILE *)NULL)
- {
- fclose(pConPriv->pNoRasterFile);
- pConPriv->pNoRasterFile = (FILE *)NULL;
- }
- if(pConPriv->noRasterFileName != (char *)NULL)
- {
- unlink(pConPriv->noRasterFileName);
- Xfree(pConPriv->noRasterFileName);
- pConPriv->noRasterFileName = (char *)NULL;
- }
-}
-
-/*
- * RasterCloseScreen - Call any wrapped CloseScreen function,
- * and free the screen memory.
- */
-static Bool
-RasterCloseScreen(
- int index,
- ScreenPtr pScreen)
-{
- Bool status = Success;
- RasterScreenPrivPtr pScreenPriv = (RasterScreenPrivPtr)
- pScreen->devPrivates[RasterScreenPrivateIndex].ptr;
-
- /*
- * Call any wrapped CloseScreen proc.
- */
- if(pScreenPriv->CloseScreen != NULL)
- {
- pScreen->CloseScreen = pScreenPriv->CloseScreen;
- status = pScreen->CloseScreen(index, pScreen);
- pScreen->CloseScreen = RasterCloseScreen;
- }
-
- Xfree(pScreenPriv->pBits);
- Xfree(pScreenPriv);
-
- return status;
-}
-
-#include <signal.h>
-
-/* ARGSUSED */
-static void SigchldHndlr (int dummy)
-{
- int status;
- int olderrno = errno;
- struct sigaction act;
- sigfillset(&act.sa_mask);
- act.sa_flags = 0;
- act.sa_handler = SigchldHndlr;
-
- (void) wait (&status);
-
- /*
- * Is this really necessary?
- */
- sigaction(SIGCHLD, &act, (struct sigaction *)NULL);
- errno = olderrno;
-}
-
-/*
- * SystemCmd provides a wrapper for the 'system' library call. The call
- * appears to be sensitive to the handling of SIGCHLD, so this wrapper
- * sets the status to SIG_DFL, and then resets the established handler
- * after system returns.
- */
-static int
-SystemCmd(char *cmdStr)
-{
- int status;
- struct sigaction newAct, oldAct;
- sigfillset(&newAct.sa_mask);
- newAct.sa_flags = 0;
- newAct.sa_handler = SIG_DFL;
- sigfillset(&oldAct.sa_mask);
- oldAct.sa_flags = 0;
- oldAct.sa_handler = SigchldHndlr;
-
- /*
- * get the old handler, and set the action to IGN
- */
- sigaction(SIGCHLD, &newAct, &oldAct);
-
- status = system (cmdStr);
-
- sigaction(SIGCHLD, &oldAct, (struct sigaction *)NULL);
- return status;
-}
-
-/*
- * RasterMediumDimensions is installed in the GetMediumDimensions field
- * of each raster-initialized context.
- */
-static int
-RasterMediumDimensions(XpContextPtr pCon,
- CARD16 *width,
- CARD16 *height)
-{
- XpGetMediumDimensions(pCon, width, height);
- return Success;
-}
-
-/*
- * RasterReproducibleArea is installed in the GetReproducibleArea field
- * of each raster-initialized context.
- */
-static int
-RasterReproducibleArea(XpContextPtr pCon,
- xRectangle *pRect)
-{
- XpGetReproductionArea(pCon, pRect);
- return Success;
-}
diff --git a/nx-X11/programs/Xserver/Xprint/raster/Raster.h b/nx-X11/programs/Xserver/Xprint/raster/Raster.h
deleted file mode 100644
index 25da756e5..000000000
--- a/nx-X11/programs/Xserver/Xprint/raster/Raster.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* $Xorg: Raster.h,v 1.3 2000/08/17 19:48:12 cpqbld Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/*******************************************************************
-**
-** *********************************************************
-** *
-** * File: printer/Raster.h
-** *
-** * Contents: defines and includes for the raster layer
-** * for a printing X server.
-** *
-** * Copyright: Copyright 1993 Hewlett-Packard Company
-** *
-** *********************************************************
-**
-********************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _RASTER_H_
-#define _RASTER_H_
-
-/*
- * Some sleazes to force the XrmDB stuff into the server
- */
-#ifndef HAVE_XPointer
-#define HAVE_XPointer 1
-typedef char *XPointer;
-#endif
-#define Status int
-#define True 1
-#define False 0
-#include "misc.h"
-#include <X11/Xfuncproto.h>
-#include <X11/Xresource.h>
-#include "attributes.h"
-
-#include <X11/extensions/Printstr.h>
-
-#define MAX_TOKEN_LEN 512
-
-#define RASTER_PRINT_PAGE_COMMAND "_XP_RASTER_PAGE_PROC_COMMAND"
-
-#define RASTER_IN_FILE_STRING "%(InFile)%"
-#define RASTER_OUT_FILE_STRING "%(OutFile)%"
-
-#define RASTER_ALLOWED_COMMANDS_FILE "printCommands"
-
-/*
- * Defines for the "options" in DtPrintDocumentData.
- */
-#define PRE_RASTER "PRE-RASTER"
-#define POST_RASTER "POST-RASTER"
-#define NO_RASTER "NO-RASTER"
-
-
-typedef struct {
- char *pBits;
- CreateWindowProcPtr CreateWindow;
- ChangeWindowAttributesProcPtr ChangeWindowAttributes;
- DestroyWindowProcPtr DestroyWindow;
- CloseScreenProcPtr CloseScreen;
-} RasterScreenPrivRec, *RasterScreenPrivPtr;
-
-typedef struct {
- XrmDatabase config;
- char *jobFileName;
- FILE *pJobFile;
- char *pageFileName;
- FILE *pPageFile;
- char *preRasterFileName; /* Pre-raster document data */
- FILE *pPreRasterFile;
- char *noRasterFileName; /* Raster replacement document data */
- FILE *pNoRasterFile;
- char *postRasterFileName; /* Post-raster document data */
- FILE *pPostRasterFile;
- ClientPtr getDocClient;
- int getDocBufSize;
-} RasterContextPrivRec, *RasterContextPrivPtr;
-
-
-extern XpValidatePoolsRec RasterValidatePoolsRec;
-
-extern Bool InitializeRasterDriver(int ndx, ScreenPtr pScreen, int argc,
- char **argv);
-
-#endif /* _RASTER_H_ */
diff --git a/nx-X11/programs/Xserver/Xprint/raster/RasterAttVal.c b/nx-X11/programs/Xserver/Xprint/raster/RasterAttVal.c
deleted file mode 100644
index fc00cde5a..000000000
--- a/nx-X11/programs/Xserver/Xprint/raster/RasterAttVal.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/* $Xorg: RasterAttVal.c,v 1.4 2001/03/14 18:46:34 pookie Exp $ */
-/*
-(c) Copyright 1996 Hewlett-Packard Company
-(c) Copyright 1996 International Business Machines Corp.
-(c) Copyright 1996 Sun Microsystems, Inc.
-(c) Copyright 1996 Novell, Inc.
-(c) Copyright 1996 Digital Equipment Corp.
-(c) Copyright 1996 Fujitsu Limited
-(c) Copyright 1996 Hitachi, Ltd.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-/* $XFree86: xc/programs/Xserver/Xprint/raster/RasterAttVal.c,v 1.3 2001/10/31 22:50:29 tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <X11/X.h>
-#include "misc.h"
-#include "dixstruct.h"
-#include "scrnintstr.h"
-#include "screenint.h"
-#include <X11/extensions/Print.h>
-#include "Raster.h"
-
-#include "attributes.h"
-#include "AttrValid.h"
-
-/*
- * define valid values and defaults for Printer pool
- */
-static XpOid ValidContentOrientationsOids[] = {
- xpoid_val_content_orientation_portrait,
- xpoid_val_content_orientation_landscape
-};
-static XpOidList ValidContentOrientations = {
- ValidContentOrientationsOids, XpNumber(ValidContentOrientationsOids)
-};
-
-static XpOid DefaultContentOrientationsOids[] = {
- xpoid_val_content_orientation_portrait,
- xpoid_val_content_orientation_landscape
-};
-static XpOidList DefaultContentOrientations = {
- DefaultContentOrientationsOids, XpNumber(DefaultContentOrientationsOids)
-};
-
-static XpOid ValidPlexesOids[] = {
- xpoid_val_plex_simplex
-};
-static XpOidList ValidPlexes = {
- ValidPlexesOids, XpNumber(ValidPlexesOids)
-};
-
-static XpOid DefaultPlexesOids[] = {
- xpoid_val_plex_simplex
-};
-static XpOidList DefaultPlexes = {
- DefaultPlexesOids, XpNumber(DefaultPlexesOids)
-};
-
-static unsigned long ValidPrinterResolutionsCards[] = {
- 150, 300, 600
-};
-static XpOidCardList ValidPrinterResolutions = {
- ValidPrinterResolutionsCards, XpNumber(ValidPrinterResolutionsCards)
-};
-
-static unsigned long DefaultPrinterResolutionsCards[] = {
- 300
-};
-static XpOidCardList DefaultPrinterResolutions = {
- DefaultPrinterResolutionsCards, XpNumber(DefaultPrinterResolutionsCards)
-};
-
-static XpOid ValidListfontsModesOids[] = {
- xpoid_val_xp_list_glyph_fonts
-};
-static XpOidList ValidListfontsModes = {
- ValidListfontsModesOids, XpNumber(ValidListfontsModesOids)
-};
-
-static XpOid DefaultListfontsModesOids[] = {
- xpoid_val_xp_list_glyph_fonts
-};
-static XpOidList DefaultListfontsModes = {
- DefaultListfontsModesOids, XpNumber(DefaultListfontsModesOids)
-};
-
-static XpOid ValidSetupProvisoOids[] = {
- xpoid_val_xp_setup_mandatory, xpoid_val_xp_setup_optional
-};
-static XpOidList ValidSetupProviso = {
- ValidSetupProvisoOids, XpNumber(ValidSetupProvisoOids)
-};
-
-static XpOidDocFmt ValidDocFormatsSupportedFmts[] = {
- { "Postscript", "2", NULL },
- { "PCL", "3", NULL }
-};
-static XpOidDocFmtList ValidDocFormatsSupported = {
- ValidDocFormatsSupportedFmts, XpNumber(ValidDocFormatsSupportedFmts)
-};
-
-static XpOidDocFmt DefaultDocFormatsSupportedFmts[] = {
- { "Postscript", "2", NULL }
-};
-static XpOidDocFmtList DefaultDocFormatsSupported = {
- DefaultDocFormatsSupportedFmts, XpNumber(DefaultDocFormatsSupportedFmts)
-};
-
-static XpOidDocFmtList ValidEmbeddedFormatsSupported = {
- (XpOidDocFmt *)NULL, 0
-};
-
-static XpOidDocFmtList DefaultEmbeddedFormatsSupported = {
- (XpOidDocFmt *)NULL, 0
-};
-
-static XpOidDocFmt ValidRawFormatsSupportedFmts[] = {
- { "Postscript", "2", NULL },
- { "PCL", "3", NULL }
-};
-static XpOidDocFmtList ValidRawFormatsSupported = {
- ValidRawFormatsSupportedFmts, XpNumber(ValidRawFormatsSupportedFmts)
-};
-
-static XpOidDocFmt DefaultRawFormatsSupportedFmts[] = {
- { "Postscript", "2", NULL }
-};
-static XpOidDocFmtList DefaultRawFormatsSupported = {
- DefaultRawFormatsSupportedFmts, XpNumber(DefaultRawFormatsSupportedFmts)
-};
-
-static XpOidList ValidInputTrays = {
- (XpOid *)NULL, 0
-};
-
-static XpOid ValidMediumSizesOids[] = {
- xpoid_val_medium_size_iso_a0,
- xpoid_val_medium_size_iso_a1,
- xpoid_val_medium_size_iso_a2,
- xpoid_val_medium_size_iso_a3,
- xpoid_val_medium_size_iso_a4,
- xpoid_val_medium_size_iso_a5,
- xpoid_val_medium_size_iso_a6,
- xpoid_val_medium_size_iso_a7,
- xpoid_val_medium_size_iso_a8,
- xpoid_val_medium_size_iso_a9,
- xpoid_val_medium_size_iso_a10,
- xpoid_val_medium_size_iso_b0,
- xpoid_val_medium_size_iso_b1,
- xpoid_val_medium_size_iso_b2,
- xpoid_val_medium_size_iso_b3,
- xpoid_val_medium_size_iso_b4,
- xpoid_val_medium_size_iso_b5,
- xpoid_val_medium_size_iso_b6,
- xpoid_val_medium_size_iso_b7,
- xpoid_val_medium_size_iso_b8,
- xpoid_val_medium_size_iso_b9,
- xpoid_val_medium_size_iso_b10,
- xpoid_val_medium_size_na_letter,
- xpoid_val_medium_size_na_legal,
- xpoid_val_medium_size_executive,
- xpoid_val_medium_size_folio,
- xpoid_val_medium_size_invoice,
- xpoid_val_medium_size_ledger,
- xpoid_val_medium_size_quarto,
- xpoid_val_medium_size_iso_c3,
- xpoid_val_medium_size_iso_c4,
- xpoid_val_medium_size_iso_c5,
- xpoid_val_medium_size_iso_c6,
- xpoid_val_medium_size_iso_designated_long,
- xpoid_val_medium_size_na_10x13_envelope,
- xpoid_val_medium_size_na_9x12_envelope,
- xpoid_val_medium_size_na_number_10_envelope,
- xpoid_val_medium_size_na_7x9_envelope,
- xpoid_val_medium_size_na_9x11_envelope,
- xpoid_val_medium_size_na_10x14_envelope,
- xpoid_val_medium_size_na_number_9_envelope,
- xpoid_val_medium_size_monarch_envelope,
- xpoid_val_medium_size_a,
- xpoid_val_medium_size_b,
- xpoid_val_medium_size_c,
- xpoid_val_medium_size_d,
- xpoid_val_medium_size_e,
- xpoid_val_medium_size_jis_b0,
- xpoid_val_medium_size_jis_b1,
- xpoid_val_medium_size_jis_b2,
- xpoid_val_medium_size_jis_b3,
- xpoid_val_medium_size_jis_b4,
- xpoid_val_medium_size_jis_b5,
- xpoid_val_medium_size_jis_b6,
- xpoid_val_medium_size_jis_b7,
- xpoid_val_medium_size_jis_b8,
- xpoid_val_medium_size_jis_b9,
- xpoid_val_medium_size_jis_b10
-};
-static XpOidList ValidMediumSizes = {
- ValidMediumSizesOids, XpNumber(ValidMediumSizesOids)
-};
-
-static XpOidDocFmt DefaultDocumentFormat = {
- "Postscript", "2", NULL
-};
-
-static XpOid ValidAvailableCompressionsOids[] = {
- xpoid_val_available_compressions_0,
- xpoid_val_available_compressions_01,
- xpoid_val_available_compressions_02,
- xpoid_val_available_compressions_03,
- xpoid_val_available_compressions_012,
- xpoid_val_available_compressions_013,
- xpoid_val_available_compressions_023,
- xpoid_val_available_compressions_0123
-};
-
-static XpOidList ValidAvailableCompressions = {
- ValidAvailableCompressionsOids, XpNumber(ValidAvailableCompressionsOids)
-};
-
-static XpOid DefaultAvailableCompressionsOids[] = {
- xpoid_val_available_compressions_0123,
- xpoid_val_available_compressions_0
-};
-
-static XpOidList DefaultAvailableCompressions = {
- DefaultAvailableCompressionsOids, XpNumber(DefaultAvailableCompressionsOids)
-};
-
-
-/*
- * init struct for XpValidate*Pool
- */
-XpValidatePoolsRec RasterValidatePoolsRec = {
- &ValidContentOrientations, &DefaultContentOrientations,
- &ValidDocFormatsSupported, &DefaultDocFormatsSupported,
- &ValidInputTrays, &ValidMediumSizes,
- &ValidPlexes, &DefaultPlexes,
- &ValidPrinterResolutions, &DefaultPrinterResolutions,
- &ValidEmbeddedFormatsSupported, &DefaultEmbeddedFormatsSupported,
- &ValidListfontsModes, &DefaultListfontsModes,
- &ValidRawFormatsSupported, &DefaultRawFormatsSupported,
- &ValidSetupProviso,
- &DefaultDocumentFormat,
- &ValidAvailableCompressions, &DefaultAvailableCompressions
-};
diff --git a/nx-X11/programs/Xserver/Xprint/spooler.c b/nx-X11/programs/Xserver/Xprint/spooler.c
deleted file mode 100644
index f709c57ab..000000000
--- a/nx-X11/programs/Xserver/Xprint/spooler.c
+++ /dev/null
@@ -1,204 +0,0 @@
-
-/* $Xorg: spooler.c,v 1.1 2003/09/14 1:19:56 gisburn Exp $ */
-/*
-Copyright (c) 2003-2004 Roland Mainz <roland.mainz@nrubsig.org>
-Copyright (c) 2004 Sun Microsystems, Inc.
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <string.h>
-#ifdef __hpux
-#include <sys/sysmacros.h>
-#endif
-
-#include "spooler.h"
-
-/*
- * The string LIST_QUEUES_* is fed to a shell to generate an ordered
- * list of available printers on the system. These string definitions
- * are taken from the file PrintSubSys.C within the code for the
- * dtprintinfo program.
- */
-#define LIST_QUEUES_AIX4 \
- "lsallq | grep -v '^bsh$' | sort | uniq"
-
-#define LIST_QUEUES_HPUX \
- "LANG=C lpstat -v | " \
- "awk '" \
- " $2 == \"for\" " \
- " { " \
- " x = match($3, /:/); " \
- " print substr($3, 1, x-1)" \
- " }' | sort | uniq"
-
-#define LIST_QUEUES_OSF \
- "LANG=C lpstat -v | " \
- "nawk '" \
- " $2 == \"for\" " \
- " { print $4 }' " \
- " | sort | uniq"
-
-#define LIST_QUEUES_UXP \
- "LANG=C lpstat -v |" \
- "nawk '" \
- " $4 == \"for\" " \
- " { " \
- " x = match($5, /:/); " \
- " print substr($5, 1, x-1)" \
- " }' | sort | uniq"
-
-/* Support both normal and LPRng output of "lpc status" */
-#define LIST_QUEUES_BSD \
- "PATH=\"${PATH}:/usr/bin:/usr/sbin:/bin:/sbin\"\n" \
- "export PATH\n" \
- \
- "which_tool()\n" \
- "{\n" \
- " echo \"${PATH}\" | tr \":\" \"\n\" | while read i ; do ls -1ad \"${i}/${1}\" 2>/dev/null ; done\n" \
- "}\n" \
- \
- "(\n" \
- "WHICH_LPC=\"`which_tool lpc`\"\n" \
- \
- "if [ \"`which_tool nawk`\" != \"\" ] ; then\n" \
- " NAWK=\"nawk\"\n" \
- "else\n" \
- " NAWK=\"awk\"\n" \
- "fi\n" \
- \
- "[ \"${WHICH_LPC}\" != \"\" ] && (LANG=C lpc status | ${NAWK} '/^[^ ]*:$/ && !/@/ && !/ / { print $1 }' | sed -e /:/s///)\n" \
- "[ \"${WHICH_LPC}\" != \"\" ] && (LANG=C lpc -a status | ${NAWK} '/^[^ ]*@[^ ]/ && !/:$/ { split( $1, name, \"@\" ); print name[1]; }')\n" \
- ") | egrep -v -i \" |^all$\" | sort | uniq"
-
-#define LIST_QUEUES_SYSV \
- "PATH=\"${PATH}:/usr/bin:/usr/sbin:/bin:/sbin\"\n" \
- "export PATH\n" \
- \
- "which_tool()\n" \
- "{\n" \
- " echo \"${PATH}\" | tr \":\" \"\n\" | while read i ; do ls -1ad \"${i}/${1}\" 2>/dev/null ; done\n" \
- "}\n" \
- \
- "(\n" \
- "WHICH_LPSTAT=\"`which_tool lpstat`\"\n" \
- \
- "if [ \"`which_tool nawk`\" != \"\" ] ; then\n" \
- " NAWK=\"nawk\"\n" \
- "else\n" \
- " NAWK=\"awk\"\n" \
- "fi\n" \
- \
- "[ \"${WHICH_LPSTAT}\" != \"\" ] && (LANG=C lpstat -v | ${NAWK} ' $2 == \"for\" { x = match($3, /:/); print substr($3, 1, x-1) }')\n" \
- ") | egrep -v -i \" |^all$\" | sort | uniq"
-
-#define LIST_QUEUES_SOLARIS "LANG=C lpget -k description " \
- "`lpstat -v " \
- "| nawk '$2 == \"for\" { x = match($3, /:/); print substr($3, 1,x-1) }' " \
- "| sort -u` " \
- "| nawk -F: ' NF == 2 { name=$1 } " \
- " NF == 1 { sub(\"^.*description\\( - undefined|=\\)\",\"\"); " \
- " printf \"%s\txp-printerattr.descriptor=%s\\n\", name, $1 } '"
-
-#define LIST_QUEUES_OTHER \
- "LANG=C lpstat -v | " \
- "nawk '" \
- " $2 == \"for\" " \
- " { " \
- " x = match($3, /:/); " \
- " print substr($3, 1, x-1)" \
- " }' | sort | uniq"
-
-#define DEFAULT_SPOOL_COMMAND_HPUX "/usr/bin/lp -d %printer-name% -o raw -n %copy-count% -t %job-name% %options%"
-#define DEFAULT_SPOOL_COMMAND_BSD "/usr/bin/lpr -P %printer-name% -#%copy-count% -T %job-name% %options%"
-#define DEFAULT_SPOOL_COMMAND_SYSV "/usr/bin/lp -d %printer-name% -n %copy-count% -t %job-name% %options%"
-#define DEFAULT_SPOOL_COMMAND_SOLARIS "/usr/bin/lp -d %printer-name% -n %copy-count% -t %job-name% %options%"
-#define DEFAULT_SPOOL_COMMAND_OTHER "/usr/bin/lp -d %printer-name% -n %copy-count% -t %job-name% %options%"
-
-
-/* List of spooler types and the commands used to enumerate
- * print queues and submit print jobs */
-XpSpoolerType xpstm[] =
-{
- /* OS-specific spoolers */
- { "aix", LIST_QUEUES_AIX4, DEFAULT_SPOOL_COMMAND_OTHER },
- { "aix4", LIST_QUEUES_AIX4, DEFAULT_SPOOL_COMMAND_OTHER },
- { "bsd", LIST_QUEUES_BSD, DEFAULT_SPOOL_COMMAND_BSD },
- { "osf", LIST_QUEUES_OSF, DEFAULT_SPOOL_COMMAND_OTHER },
- { "solaris", LIST_QUEUES_SOLARIS, DEFAULT_SPOOL_COMMAND_SOLARIS },
- { "sysv", LIST_QUEUES_SYSV, DEFAULT_SPOOL_COMMAND_SYSV },
- { "uxp", LIST_QUEUES_UXP, DEFAULT_SPOOL_COMMAND_OTHER },
- /* crossplatform spoolers */
- { "cups", LIST_QUEUES_SYSV, DEFAULT_SPOOL_COMMAND_SYSV },
- { "lprng", LIST_QUEUES_BSD, DEFAULT_SPOOL_COMMAND_BSD },
- /* misc */
- { "other", LIST_QUEUES_OTHER, DEFAULT_SPOOL_COMMAND_OTHER },
- { "none", NULL, NULL },
- { NULL, NULL, NULL }
-};
-
-/* Used by Init.c and attributes.c */
-XpSpoolerTypePtr spooler_type = NULL;
-
-XpSpoolerTypePtr XpSpoolerNameToXpSpoolerType(char *name)
-{
- XpSpoolerTypePtr curr = xpstm;
-
- while( curr->name != NULL )
- {
- if( !strcasecmp(name, curr->name) )
- return curr;
-
- curr++;
- }
-
- return NULL;
-}
-
-static char *spooler_namelist = NULL;
-
-char *XpGetSpoolerTypeNameList(void)
-{
- if( spooler_namelist )
- return spooler_namelist;
-
- return XPDEFAULTSPOOLERNAMELIST;
-}
-
-void XpSetSpoolerTypeNameList(char *namelist)
-{
- spooler_namelist = namelist;
-}
-
-
diff --git a/nx-X11/programs/Xserver/Xprint/spooler.h b/nx-X11/programs/Xserver/Xprint/spooler.h
deleted file mode 100644
index 4e9b4aefc..000000000
--- a/nx-X11/programs/Xserver/Xprint/spooler.h
+++ /dev/null
@@ -1,76 +0,0 @@
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef SPOOLER_H
-#define SPOOLER_H 1
-
-/* $Xorg: spooler.h,v 1.1 2003/09/14 1:19:56 gisburn Exp $ */
-/*
-Copyright (c) 2003-2004 Roland Mainz <roland.mainz@nrubsig.org>
-
-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 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 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
-COPYRIGHT HOLDERS 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 names of the copyright holders shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from said
-copyright holders.
-*/
-
-/*
- * Define platform-specific default spooler type
- */
-#if defined(sun)
-#define XPDEFAULTSPOOLERNAMELIST "solaris"
-#elif defined(AIXV4)
-#define XPDEFAULTSPOOLERNAMELIST "aix4"
-#elif defined(hpux)
-#define XPDEFAULTSPOOLERNAMELIST "hpux"
-#elif defined(__osf__)
-#define XPDEFAULTSPOOLERNAMELIST "osf"
-#elif defined(__uxp__)
-#define XPDEFAULTSPOOLERNAMELIST "uxp"
-#elif defined(CSRG_BASED) || defined(linux)
-/* ToDo: This should be "cups:bsd" in the future, but for now
- * the search order first-bsd-then-cups is better for backwards
- * compatibility.
- */
-#define XPDEFAULTSPOOLERNAMELIST "bsd:cups"
-#else
-#define XPDEFAULTSPOOLERNAMELIST "other"
-#endif
-
-typedef struct
-{
- const char *name;
- const char *list_queues_command;
- const char *spool_command;
-} XpSpoolerType, *XpSpoolerTypePtr;
-
-/* prototypes */
-extern XpSpoolerTypePtr XpSpoolerNameToXpSpoolerType(char *name);
-extern void XpSetSpoolerTypeNameList(char *namelist);
-extern char *XpGetSpoolerTypeNameList(void);
-
-/* global vars */
-extern XpSpoolerTypePtr spooler_type;
-extern XpSpoolerType xpstm[];
-
-#endif /* !SPOOLER_H */
-
diff --git a/nx-X11/programs/Xserver/Xprint/svg/README b/nx-X11/programs/Xserver/Xprint/svg/README
deleted file mode 100644
index 3ac0950c1..000000000
--- a/nx-X11/programs/Xserver/Xprint/svg/README
+++ /dev/null
@@ -1 +0,0 @@
-Tracking bug for this work is http://xprint.mozdev.org/bugs/show_bug.cgi?id=5401
diff --git a/nx-X11/programs/Xserver/Xprint/windows/README b/nx-X11/programs/Xserver/Xprint/windows/README
deleted file mode 100644
index 90cba8d04..000000000
--- a/nx-X11/programs/Xserver/Xprint/windows/README
+++ /dev/null
@@ -1 +0,0 @@
-Tracking bug for this work is http://xprint.mozdev.org/bugs/show_bug.cgi?id=3530
diff --git a/nx-X11/programs/Xserver/Xvfb.def b/nx-X11/programs/Xserver/Xvfb.def
deleted file mode 100644
index 0f3d138b9..000000000
--- a/nx-X11/programs/Xserver/Xvfb.def
+++ /dev/null
@@ -1,4 +0,0 @@
-NAME Xvfb WINDOWCOMPAT
-DESCRIPTION "@#XFREE86:4.4.0#@ $XFree86: xc/programs/Xserver/Xvfb.def,v 3.3 2002/05/31 18:45:53 dawes Exp $"
-PROTMODE
-EXETYPE OS2
diff --git a/nx-X11/programs/Xserver/afb/Imakefile b/nx-X11/programs/Xserver/afb/Imakefile
deleted file mode 100644
index 340f3ba2e..000000000
--- a/nx-X11/programs/Xserver/afb/Imakefile
+++ /dev/null
@@ -1,67 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/afb/Imakefile,v 3.6 1999/08/14 10:49:26 dawes Exp $
-XCOMM $XConsortium: Imakefile,v 1.38 94/03/11 18:47:47 dpw Exp $
-#define IHaveModules
-#include <Server.tmpl>
-
-#if (defined(XFree86Version) || defined(XorgVersion))
-#if DoLoadableServer
-MODSRC = afbmodule.c
-MODOBJ = afbmodule.o
-#endif
-#endif
-
-SRCS1 = afbgc.c afbwindow.c afbfont.c afbfillrct.c afbpntwin.c afbpixmap.c \
- afbimage.c afbline.c afbbres.c afbhrzvert.c afbbresd.c afbpushpxl.c \
- afbzerarc.c afbfillarc.c afbfillsp.c afbsetsp.c afbscrinit.c \
- afbclip.c afbbitblt.c afbgetsp.c afbpolypnt.c afbbltC.c afbbltX.c \
- afbbltCI.c afbbltO.c afbbltG.c afbcmap.c afbtileC.c afbtileG.c \
- afbmisc.c afbbstore.c
-
-SRCS = $(SRCS1) afbseg.c afbbltC.c afbbltX.c afbbltCI.c afbbltO.c afbbltG.c \
- afbtileC.c afbtileG.c $(MODSRC)
-
-OBJS = afbgc.o afbwindow.o afbfont.o afbpixmap.o afbfillsp.o afbsetsp.o \
- afbscrinit.o afbclip.o afbbitblt.o afbgetsp.o afbbltC.o afbbltX.o \
- afbbltCI.o afbbltO.o afbbltG.o afbcmap.o afbimage.o afbzerarc.o \
- afbfillarc.o afbply1rct.o afbtileC.o afbtileG.o afbfillrct.o \
- afbpolypnt.o afbmisc.o afbbstore.o afbbresd.o afbimggblt.o \
- afbpushpxl.o afbplygblt.o afbtegblt.o afbpntwin.o afbpntarea.o \
- afbbres.o afbhrzvert.o afbline.o afbseg.o $(MODOBJ)
-
-INCLUDES = -I. -I../cfb -I../mfb -I../mi -I../include -I$(XINCLUDESRC) \
- -I$(FONTINCSRC) $(EXTRAINCLUDES)
-LINTDEFS = -DMFBPOLYGLYPHBLT=afbPolyGlyphBltWhite \
- -DMFBIMAGEGLYPHBLT=afbImageGlyphBltWhite \
- -DEQWHOLEWORD=MFB_EQWHOLEWORD_WHITE -DOPEQ=MFB_OPEQ_WHITE
-
-LINTLIBS = ../dix/llib-ldix.ln ../os/llib-los.ln \
- ../mfb/llib-lmfb.ln ../mi/llib-lmi.ln
-
-ModuleObjectRule()
-LibraryModuleTarget(afb,$(OBJS))
-LintLibraryTarget(afb,$(SRCS1))
-NormalLintTarget($(LINTDEFS) $(SRCS1))
-
-ObjectFromSpecialSource(afbseg,afbline,-DPOLYSEGMENT)
-
-ObjectFromSpecialSource(afbbltC,afbblt,-DMROP=Mcopy)
-
-ObjectFromSpecialSource(afbbltX,afbblt,-DMROP=Mxor)
-
-ObjectFromSpecialSource(afbbltCI,afbblt,-DMROP=McopyInverted)
-
-ObjectFromSpecialSource(afbbltO,afbblt,-DMROP=Mor)
-
-ObjectFromSpecialSource(afbbltG,afbblt,-DMROP=0)
-
-ObjectFromSpecialSource(afbtileC,afbtile,-DMROP=Mcopy)
-
-ObjectFromSpecialSource(afbtileG,afbtile,-DMROP=0)
-
-InstallLibraryModule(afb,$(MODULEDIR),.)
-
-DependTarget()
-
-InstallDriverSDKLibraryModule(afb,$(DRIVERSDKMODULEDIR),.)
-
-InstallDriverSDKNonExecFile(afb.h,$(DRIVERSDKINCLUDEDIR))
diff --git a/nx-X11/programs/Xserver/afb/README b/nx-X11/programs/Xserver/afb/README
deleted file mode 100644
index 5c9586013..000000000
--- a/nx-X11/programs/Xserver/afb/README
+++ /dev/null
@@ -1,10 +0,0 @@
-
-All stuff in this directory is based on Xdaniver (read Xdaniver.doc).
-
-Actually this is the same code as in the ilbm directory, except that here the
-conversion from normal bitplanes to interleaved bitplanes didn't happen.
-
---
-Geert Uytterhoeven Geert.Uytterhoeven@cs.kuleuven.ac.be
-Wavelets, Linux/m68k on Amiga http://www.cs.kuleuven.ac.be/~geert/
-Department of Computer Science -- Katholieke Universiteit Leuven -- Belgium
diff --git a/nx-X11/programs/Xserver/afb/Xdaniver.doc b/nx-X11/programs/Xserver/afb/Xdaniver.doc
deleted file mode 100644
index 1c8ad5ad4..000000000
--- a/nx-X11/programs/Xserver/afb/Xdaniver.doc
+++ /dev/null
@@ -1,218 +0,0 @@
-
-What is it?
------------
-
-Xdaniver is a fast, colour X11R6 server for the Amiga's custom chip set
-under NetBSD 1.0 and NetBSD-current, supporting all the Amiga's display
-depths from 1 to 4 (upto 16 colours) on ECS machines and 1 to 8 (upto 256
-colours) on AGA machines (though, not all resolutions are available, see
-General Information below).
-
-Xdaniver is designed to be a drop-in replacement for the Xmono server provided
-with the X11R6 binary distribution supplied by Bernd Ernesti available from
-ftp.uni-regensburg.de or one of its mirrors.
-
-Unlike previous colour X servers for the Amiga that emulate a chunky pixel
-screen in fast RAM, use the standard frame buffer drivers provided with the
-X11R6 source code to draw and then use a chunky to planar conversion routine
-to write the results to the screen (all very slow), Xdaniver uses a heavily
-modified mono frame buffer driver to draw directly using the Amiga's planar
-format. The net result is much faster drawing and support for all the Amiga's
-custom display depths but, as usual, the fewer planes used, the faster the
-drawing operations of the X server. Even so, on my A1200 with a 33Mhz 68030,
-I'm getting reasonable performance when using 8 bit planes in Dbl NTSC mode.
-
-Installation
-------------
-
-You will need to have first obtained and installed the X11R6 binary
-distribution available from ftp.uni-regensburg.de in
-/pub/NetBSD-Amiga/contrib/X11 or one of its mirrors. Xdaniver has been
-compiled to expect font and configuration files sitting under
-/usr/local/X11R6, if your setup is different you will need to provide a
-symbolic link from /usr/local/X11R6 to where your tree resides or supply
-several command line flags to the server.
-
-To get Xdaniver running as the default X server, copy the uncompressed binary
-into /usr/local/X11R6/bin, remove the current X file from that directory
-(which is a symbolic link to Xmono) and replace it with a link to Xdaniver:
-
- gzip -d < X11R6.Xdaniver.1.01.tar.gz | tar xvf -
- mv Xdaniver /usr/local/X11R6/bin
- cd /usr/local/X11R6/bin
- rm X
- ln -s Xdaniver X
-
-Note that on some setups, the devices /dev/kbd, /dev/mouse and /dev/view??
-have been created to be accessable only by superuser; Xdaniver needs to open
-these devices. To workaround this problem, log on as superuser and then
-either make Xdaniver setuid root:
-
- chown root Xdaniver
- chmod 4755 Xdaniver
-
-or give everyone access the devices:
-
- chmod 666 /dev/kbd /dev/mouse /dev/view??
-
-the latter option is a possible cause of a security hole if your machine is
-ever used multi-user.
-
-General Information
--------------------
-
-The default resolution of the server is 700x430 and the default depth 4. AGA
-users might what to increase the display depth by editing the startx script
-and providing a -depth <depth> argument to Xdaniver on the xinit line of the
-script. As always, the lower the depth, the faster the drawing and window
-manipulation of the server.
-
-The resolution can be altered similarly by suppling -width <width> and
--height <height> arguments to the server.
-
-The NetBSD kernel selects actual screen modes by picking a mode who's
-natural, non-overscanned size best-fits the requested resolution.
-Unfortunately, for AGA users, the 1.0 kernel only has support for the
-Dbl-NTSC AGA display mode and only this mode has support for depths greater
-than 4. The NetBSD-current (work-in-progress) kernel also has support for
-Dbl-PAL but still no support for the Super72 or other super-hires modes
-(perhaps some kind, kernel-hacker could add support for them ?).
-
-If you have a 2 button mouse (like me) you might want to try and use the 3
-button mouse emulation. On other systems, it is usual for the left and right
-buttons to be provided and emulate the middle button by pressing both
-buttons together, however, the middle button is tends to be used more than
-the right button so I have provided two options:
-
--emulateright (or -3), the two physical mouse buttons act as left and middle
-and pressing them both together emulates the right button.
-
--emulatemiddle (or -2), the two physical mouse buttons act as left and right
-and pressing them both together emulated the middle button.
-
-When using screen depths of less than 6 (4 is the maximum for ECS machines)
-the lack of possible colours on screen at once causes problems for many X
-applications. Specifying -cc 2 as a command line argument to Xdaniver
-causes the server to switch the default visual type from PsuedoColor to
-StaticColor; to put it simply, the server prefills the colormap with a
-selection of 16 colours (depth 4) and when an application asks for a
-particular colour, its gets allocated one that is closest to one from the
-selection of 16. This removes the 'WARNING: Cannot allocate colormap entry
-for "XXX"' errors but at the expense of applications not being able to get
-the precise colour they wanted. Also, some badly written X applications fail
-altogether when presented with a StaticColor visual.
-
-Bugs/Limitations
-----------------
-
-The limited choice of display resolutions for AGA/ECS machines is a real
-pain - requires a kernel change to fix. Worse still, the kernel specifies
-the maximum overscan resolution on the Dbl-NTSC to be 724x482 but selecting
-anything more than 702x430 on my machine causes the screen either sheer
-diagonally (as if the bytes per row calculation in Xdaniver or the kernel is
-wrong) or completely loose sync (suggesting a custom chip register sync
-calculation bug). As other, non-aga modes aren't affected when selection
-overscan both problems seem to point to a kernel driver bug. Also, depths
-greater than 4 for AGA users are only supported by the kernel in the Dbl-NTSC
-mode (and Dbl-PAL with the current-NetBSD kernel).
-
-I know of one bug so-far (there will be more), The PutImage request of an XY
-format image expects the bitplane order to be the reverse of that specified
-in the X protocol but since virtually all applications use the Z (chunky)
-format, you are unlikely to come across this problem.
-
-The PutImage request of Z format images is a little slow - when I have time
-I'll try and add one of the fast assembly chunky-to-planar routines developed
-for doom style games/demos. Unfortunately, the current crop all require a
-picture size that is a multiple of 32 pixels and so cannot be used out-of-the-
-box.
-
-Some extra performance could easily be squeezed out of the terminal font
-drawing code (used by xterm) - when I have time I'll add the code.
-
-The Amiga's blitter and sprites are totally unused and will remain so
-until/if someone else adds support to the kernel. The blitter would help
-speed up screen scrolling and window manipulation and sprite support could
-be used for the X pointer shape (if small enough) which would speed up all
-drawing operations (no need to remove the software based pointer shape
-first, draw, then replace the pointer shape).
-
-I removed the X image extension (XIE) from the X server as it increased the
-size of the binary by some 400k. I haven't come across any applications that
-need it yet (I haven't been looking!) so if you need the extension for some
-reason send me e-mail and I'll build a server with the extension included.
-
-The 3 button mouse emulation is very simple - to emulate the 3rd button you
-have to press both button precisely at the same moment - I've got quite good
-at it now. When I have some spare time I'll add a timer so you will have a
-few milli-seconds between one button being pressed and the next and it still
-being registered as the emulated button.
-
-AGA users don't forget to provide the -A flag to loadbsd to enable the one
-AGA mode in the 1.0 kernel but only if you have a VGA, multisync or dual-scan
-monitor, of course !
-
-Xdaniver has been tested on:
-
-A1200, 33Mhz 68030, 8Mb RAM and NetBSD 1.0 by myself.
-A4000/40, 12Mb RAM and NetBSD 1.0 by Andreas Holzhammer.
-A3000, 12Mb RAM and NetBSD 1.0 by Charlie Root, Stuart Park and others.
-A3000, 25Mhz 68040, 18Mb RAM and NetBSD-current by Michael K. Sanders.
-A2000, 8Mb RAM and NetBSD (version unknown) by Hubert Feyrer.
-
-Release and Bug Fix History
----------------------------
-
-1.0 - First release
-
-1.01 Bugs fixed:
- - Narrow (<32 pixels) Z format GetImage requests corrupted the stack
- and could cause the server to core dump. (Xpaint caused this problem)
- - Drawing dots (PolyPoint request) into a clipped window caused a
- c pointer to go out of range, causing a core dump (xv showed this
- problem).
-
- New features:
- - Simple 3 button mouse emulation using a 2 button mouse; specify
- -emulate_middle (or -2) or -emulate_right (or -3) on the server's
- command line and press both mouse buttons together emulate the 'missing'
- button.
- - Basic beep sound support added by sending bell characters to the
- console.
- - Source code released.
-
-Disclaimer and Copyright Notices
---------------------------------
-
-Multi-depth planar frame buffer code:
-Copyright (c) 1995 by Daniver Limited.
-
-Large portions:
-Copyright (c) 1994 by Eduardo Horvath.
-Copyright (c) 1987-1995 by the Regents of the University of California.
-Copyright (c) 1987 by Sun Microsystems, Inc. Mountain View, CA.
-Copyright (c) 1987-1995 by X Consortium.
-Copyright (c) 1987, 1989 by Digital Equipment Corporation, Maynard, Massachusetts.
-Copyright (c) 1989 Network Computing Devices, Inc., Mountain View, California.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted, provided
-that the above copyright notice appear in all copies. The Daniver Limited,
-the above companies and individuals makes no representations about the
-suitability of this software for any purpose. It is provided "as is" without
-express or implied warranty.
-
-Credits
--------
-
-Thanks to Bernd Ernesti for making the operating system server source code
-available for others to use and Eduardo Horvath and Andy Heffernan, who (I
-think) did the original Xmono server port.
-
-Also, many thanks to the first brave users who tested Xdaniver for me on other
-Amiga setups and found a few bugs in the process.
-
-Gary Henderson.
-
-Daytime: garyh@wet.sbi.com
-Home: gary@daniver.demon.co.uk
diff --git a/nx-X11/programs/Xserver/afb/afb.h b/nx-X11/programs/Xserver/afb/afb.h
deleted file mode 100644
index 708fe7643..000000000
--- a/nx-X11/programs/Xserver/afb/afb.h
+++ /dev/null
@@ -1,1132 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afb.h,v 3.10 2003/10/29 22:15:19 tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afb.h,v 5.31 94/04/17 20:28:15 dpw Exp $ */
-/* Monochrome Frame Buffer definitions
- written by drewry, september 1986
-*/
-
-#include "pixmap.h"
-#include "region.h"
-#include "gc.h"
-#include "colormap.h"
-#include "regionstr.h"
-#include "mibstore.h"
-#include "mfb.h"
-
-extern int afbInverseAlu[];
-extern int afbScreenPrivateIndex;
-/* warning: PixelType definition duplicated in maskbits.h */
-#ifndef PixelType
-#define PixelType CARD32
-#endif /* PixelType */
-
-#define AFB_MAX_DEPTH 8
-
-/* afbbitblt.c */
-
-extern void afbDoBitblt(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-
-extern RegionPtr afbBitBlt(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- GCPtr /*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- void (*doBitBlt)(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
- ),
- unsigned long /*planemask*/
-);
-
-extern RegionPtr afbCopyArea(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/
-);
-
-extern RegionPtr afbCopyPlane(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- unsigned long /*plane*/
-);
-
-extern void afbCopy1ToN(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* afbbltC.c */
-
-extern void afbDoBitbltCopy(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* afbbltCI.c */
-
-extern void afbDoBitbltCopyInverted(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* afbbltG.c */
-
-extern void afbDoBitbltGeneral(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* afbbltO.c */
-
-extern void afbDoBitbltOr(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* afbbltX.c */
-
-extern void afbDoBitbltXor(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* afbbres.c */
-
-extern void afbBresS(
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/,
- unsigned char * /*rrops*/
-);
-/* afbbresd.c */
-
-extern void afbBresD(
- int * /*pdashIndex*/,
- unsigned char * /*pDash*/,
- int /*numInDashList*/,
- int * /*pdashOffset*/,
- int /*isDoubleDash*/,
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/,
- unsigned char * /*rrops*/,
- unsigned char * /*bgrrops*/
-);
-/* afbbstore.c */
-
-extern void afbSaveAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnSave*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-
-extern void afbRestoreAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnRestore*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-/* afbclip.c */
-
-extern RegionPtr afbPixmapToRegion(
- PixmapPtr /*pPix*/
-);
-
-/* afbcmap.c */
-
-extern int afbListInstalledColormaps(
- ScreenPtr /*pScreen*/,
- Colormap * /*pmaps*/
-);
-
-extern void afbInstallColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void afbUninstallColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void afbResolveColor(
- unsigned short * /*pred*/,
- unsigned short * /*pgreen*/,
- unsigned short * /*pblue*/,
- VisualPtr /*pVisual*/
-);
-
-extern Bool afbInitializeColormap(
- ColormapPtr /*pmap*/
-);
-
-extern int afbExpandDirectColors(
- ColormapPtr /*pmap*/,
- int /*ndefs*/,
- xColorItem * /*indefs*/,
- xColorItem * /*outdefs*/
-);
-
-extern Bool afbCreateDefColormap(
- ScreenPtr /*pScreen*/
-);
-
-extern Bool afbSetVisualTypes(
- int /*depth*/,
- int /*visuals*/,
- int /*bitsPerRGB*/
-);
-
-extern Bool afbInitVisuals(
- VisualPtr * /*visualp*/,
- DepthPtr * /*depthp*/,
- int * /*nvisualp*/,
- int * /*ndepthp*/,
- int * /*rootDepthp*/,
- VisualID * /*defaultVisp*/,
- unsigned long /*sizes*/,
- int /*bitsPerRGB*/
-);
-
-/* afbfillarc.c */
-
-extern void afbPolyFillArcSolid(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* afbfillrct.c */
-
-extern void afbPolyFillRect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nrectFill*/,
- xRectangle * /*prectInit*/
-);
-
-/* afbply1rct.c */
-extern void afbFillPolygonSolid(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*shape*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-
-/* afbfillsp.c */
-
-extern void afbSolidFS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void afbStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void afbTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void afbUnnaturalTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void afbUnnaturalStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void afbOpaqueStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void afbUnnaturalOpaqueStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-/* afbfont.c */
-
-extern Bool afbRealizeFont(
- ScreenPtr /*pscr*/,
- FontPtr /*pFont*/
-);
-
-extern Bool afbUnrealizeFont(
- ScreenPtr /*pscr*/,
- FontPtr /*pFont*/
-);
-/* afbgc.c */
-
-extern Bool afbCreateGC(
- GCPtr /*pGC*/
-);
-
-extern void afbValidateGC(
- GCPtr /*pGC*/,
- unsigned long /*changes*/,
- DrawablePtr /*pDrawable*/
-);
-
-extern void afbDestroyGC(
- GCPtr /*pGC*/
-);
-
-extern void afbReduceRop(
- int /*alu*/,
- Pixel /*src*/,
- unsigned long /*planemask*/,
- int /*depth*/,
- unsigned char * /*rrops*/
-);
-
-extern void afbReduceOpaqueStipple (
- Pixel /*fg*/,
- Pixel /*bg*/,
- unsigned long /*planemask*/,
- int /*depth*/,
- unsigned char * /*rrops*/
-);
-
-extern void afbComputeCompositeClip(
- GCPtr /*pGC*/,
- DrawablePtr /*pDrawable*/
-);
-
-/* afbgetsp.c */
-
-extern void afbGetSpans(
- DrawablePtr /*pDrawable*/,
- int /*wMax*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- char * /*pdstStart*/
-);
-/* afbhrzvert.c */
-
-extern void afbHorzS(
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/,
- unsigned char * /*rrops*/
-);
-
-extern void afbVertS(
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/,
- unsigned char * /*rrops*/
-);
-/* afbigbblak.c */
-
-extern void afbImageGlyphBlt (
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* afbigbwht.c */
-
-/* afbimage.c */
-
-extern void afbPutImage(
- DrawablePtr /*dst*/,
- GCPtr /*pGC*/,
- int /*depth*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- int /*leftPad*/,
- int /*format*/,
- char * /*pImage*/
-);
-
-extern void afbGetImage(
- DrawablePtr /*pDrawable*/,
- int /*sx*/,
- int /*sy*/,
- int /*w*/,
- int /*h*/,
- unsigned int /*format*/,
- unsigned long /*planeMask*/,
- char * /*pdstLine*/
-);
-/* afbline.c */
-
-extern void afbLineSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-extern void afbLineSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-/* afbmisc.c */
-
-extern void afbQueryBestSize(
- int /*class*/,
- unsigned short * /*pwidth*/,
- unsigned short * /*pheight*/,
- ScreenPtr /*pScreen*/
-);
-/* afbpntarea.c */
-
-extern void afbSolidFillArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- unsigned char * /*rrops*/
-);
-
-extern void afbStippleAreaPPW(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- PixmapPtr /*pstipple*/,
- unsigned char * /*rrops*/
-);
-extern void afbStippleArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- PixmapPtr /*pstipple*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned char * /*rrops*/
-);
-/* afbplygblt.c */
-
-extern void afbPolyGlyphBlt(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-
-/* afbpixmap.c */
-
-extern PixmapPtr afbCreatePixmap(
- ScreenPtr /*pScreen*/,
- int /*width*/,
- int /*height*/,
- int /*depth*/
-);
-
-extern Bool afbDestroyPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern PixmapPtr afbCopyPixmap(
- PixmapPtr /*pSrc*/
-);
-
-extern void afbPadPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern void afbXRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rw*/
-);
-
-extern void afbYRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rh*/
-);
-
-extern void afbCopyRotatePixmap(
- PixmapPtr /*psrcPix*/,
- PixmapPtr * /*ppdstPix*/,
- int /*xrot*/,
- int /*yrot*/
-);
-extern void afbPaintWindow(
- WindowPtr /*pWin*/,
- RegionPtr /*pRegion*/,
- int /*what*/
-);
-/* afbpolypnt.c */
-
-extern void afbPolyPoint(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- xPoint * /*pptInit*/
-);
-/* afbpushpxl.c */
-
-extern void afbPushPixels(
- GCPtr /*pGC*/,
- PixmapPtr /*pBitMap*/,
- DrawablePtr /*pDrawable*/,
- int /*dx*/,
- int /*dy*/,
- int /*xOrg*/,
- int /*yOrg*/
-);
-/* afbscrclse.c */
-
-extern Bool afbCloseScreen(
- int /*index*/,
- ScreenPtr /*pScreen*/
-);
-/* afbscrinit.c */
-
-extern Bool afbAllocatePrivates(
- ScreenPtr /*pScreen*/,
- int * /*pWinIndex*/,
- int * /*pGCIndex*/
-);
-
-extern Bool afbScreenInit(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern PixmapPtr afbGetWindowPixmap(
- WindowPtr /*pWin*/
-);
-
-extern void afbSetWindowPixmap(
- WindowPtr /*pWin*/,
- PixmapPtr /*pPix*/
-);
-
-/* afbseg.c */
-
-extern void afbSegmentSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-
-extern void afbSegmentSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-/* afbsetsp.c */
-
-extern void afbSetScanline(
- int /*y*/,
- int /*xOrigin*/,
- int /*xStart*/,
- int /*xEnd*/,
- PixelType * /*psrc*/,
- int /*alu*/,
- PixelType * /*pdstBase*/,
- int /*widthDst*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*sizeSrc*/
-);
-
-extern void afbSetSpans(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- char * /*psrc*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- int /*fSorted*/
-);
-/* afbtegblt.c */
-
-extern void afbTEGlyphBlt(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* afbtileC.c */
-
-extern void afbTileAreaPPWCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- unsigned long /*planemask*/
-);
-/* afbtileG.c */
-
-extern void afbTileAreaPPWGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- unsigned long /*planemask*/
-);
-
-extern void afbTileAreaCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned long /*planemask*/
-);
-/* afbtileG.c */
-
-extern void afbTileAreaGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned long /*planemask*/
-);
-
-extern void afbOpaqueStippleAreaPPWCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- unsigned char */*rropsOS*/,
- unsigned long /*planemask*/
-);
-/* afbtileG.c */
-
-extern void afbOpaqueStippleAreaPPWGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- unsigned char */*rropsOS*/,
- unsigned long /*planemask*/
-);
-
-extern void afbOpaqueStippleAreaCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned char */*rropsOS*/,
- unsigned long /*planemask*/
-);
-/* afbtileG.c */
-
-extern void afbOpaqueStippleAreaGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned char */*rropsOS*/,
- unsigned long /*planemask*/
-);
-
-/* afbwindow.c */
-
-extern Bool afbCreateWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool afbDestroyWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool afbMapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern Bool afbPositionWindow(
- WindowPtr /*pWin*/,
- int /*x*/,
- int /*y*/
-);
-
-extern Bool afbUnmapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern void afbCopyWindow(
- WindowPtr /*pWin*/,
- DDXPointRec /*ptOldOrg*/,
- RegionPtr /*prgnSrc*/
-);
-
-extern Bool afbChangeWindowAttributes(
- WindowPtr /*pWin*/,
- unsigned long /*mask*/
-);
-/* afbzerarc.c */
-
-extern void afbZeroPolyArcSS(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-
-/*
- private field of pixmap
- pixmap.devPrivate = (PixelType *)pointer_to_bits
- pixmap.devKind = width_of_pixmap_in_bytes
-
- private field of screen
- a pixmap, for which we allocate storage. devPrivate is a pointer to
-the bits in the hardware framebuffer. note that devKind can be poked to
-make the code work for framebuffers that are wider than their
-displayable screen (e.g. the early vsII, which displayed 960 pixels
-across, but was 1024 in the hardware.)
-
- private field of GC
-*/
-
-typedef struct {
- unsigned char rrops[AFB_MAX_DEPTH]; /* reduction of rasterop to 1 of 3 */
- unsigned char rropOS[AFB_MAX_DEPTH]; /* rop for opaque stipple */
-} afbPrivGC;
-typedef afbPrivGC *afbPrivGCPtr;
-
-extern int afbGCPrivateIndex; /* index into GC private array */
-extern int afbWindowPrivateIndex; /* index into Window private array */
-#ifdef PIXMAP_PER_WINDOW
-extern int frameWindowPrivateIndex; /* index into Window private array */
-#endif
-
-#define afbGetGCPrivate(pGC) \
- ((afbPrivGC *)((pGC)->devPrivates[afbGCPrivateIndex].ptr))
-
-/* private field of window */
-typedef struct {
- unsigned char fastBorder; /* non-zero if border tile is 32 bits wide */
- unsigned char fastBackground;
- unsigned short unused; /* pad for alignment with Sun compiler */
- DDXPointRec oldRotate;
- PixmapPtr pRotatedBackground;
- PixmapPtr pRotatedBorder;
-} afbPrivWin;
-
-/* Common macros for extracting drawing information */
-
-#define afbGetTypedWidth(pDrawable,wtype)( \
- (((pDrawable)->type == DRAWABLE_WINDOW) ? \
- (int)(((PixmapPtr)((pDrawable)->pScreen->devPrivates[afbScreenPrivateIndex].ptr))->devKind) : \
- (int)(((PixmapPtr)pDrawable)->devKind)) / sizeof (wtype))
-
-#define afbGetByteWidth(pDrawable) afbGetTypedWidth(pDrawable, unsigned char)
-
-#define afbGetPixelWidth(pDrawable) afbGetTypedWidth(pDrawable, PixelType)
-
-#define afbGetTypedWidthAndPointer(pDrawable, width, pointer, wtype, ptype) {\
- PixmapPtr _pPix; \
- if ((pDrawable)->type == DRAWABLE_WINDOW) \
- _pPix = (PixmapPtr)(pDrawable)->pScreen->devPrivates[afbScreenPrivateIndex].ptr; \
- else \
- _pPix = (PixmapPtr)(pDrawable); \
- (pointer) = (ptype *) _pPix->devPrivate.ptr; \
- (width) = ((int) _pPix->devKind) / sizeof (wtype); \
-}
-
-#define afbGetPixelWidthSizeDepthAndPointer(pDrawable, width, size, dep, pointer) {\
- PixmapPtr _pPix; \
- if ((pDrawable)->type == DRAWABLE_WINDOW) \
- _pPix = (PixmapPtr)(pDrawable)->pScreen->devPrivates[afbScreenPrivateIndex].ptr; \
- else \
- _pPix = (PixmapPtr)(pDrawable); \
- (pointer) = (PixelType *)_pPix->devPrivate.ptr; \
- (width) = ((int)_pPix->devKind) / sizeof (PixelType); \
- (size) = (width) * _pPix->drawable.height; \
- (dep) = _pPix->drawable.depth; (void)(dep); \
-}
-
-#define afbGetByteWidthAndPointer(pDrawable, width, pointer) \
- afbGetTypedWidthAndPointer(pDrawable, width, pointer, unsigned char, unsigned char)
-
-#define afbGetPixelWidthAndPointer(pDrawable, width, pointer) \
- afbGetTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
-
-#define afbGetWindowTypedWidthAndPointer(pWin, width, pointer, wtype, ptype) {\
- PixmapPtr _pPix = (PixmapPtr)(pWin)->drawable.pScreen->devPrivates[afbScreenPrivateIndex].ptr; \
- (pointer) = (ptype *) _pPix->devPrivate.ptr; \
- (width) = ((int) _pPix->devKind) / sizeof (wtype); \
-}
-
-#define afbGetWindowPixelWidthAndPointer(pWin, width, pointer) \
- afbGetWindowTypedWidthAndPointer(pWin, width, pointer, PixelType, PixelType)
-
-#define afbGetWindowByteWidthAndPointer(pWin, width, pointer) \
- afbGetWindowTypedWidthAndPointer(pWin, width, pointer, char, char)
-
-/* afb uses the following macros to calculate addresses in drawables.
- * To support banked framebuffers, the macros come in four flavors.
- * All four collapse into the same definition on unbanked devices.
- *
- * afbScanlineFoo - calculate address and do bank switching
- * afbScanlineFooNoBankSwitch - calculate address, don't bank switch
- * afbScanlineFooSrc - calculate address, switch source bank
- * afbScanlineFooDst - calculate address, switch destination bank
- */
-
-/* The NoBankSwitch versions are the same for banked and unbanked cases */
-
-#define afbScanlineIncNoBankSwitch(_ptr, _off) _ptr += (_off)
-#define afbScanlineOffsetNoBankSwitch(_ptr, _off) ((_ptr) + (_off))
-#define afbScanlineDeltaNoBankSwitch(_ptr, _y, _w) \
- afbScanlineOffsetNoBankSwitch(_ptr, (_y) * (_w))
-#define afbScanlineNoBankSwitch(_ptr, _x, _y, _w) \
- afbScanlineOffsetNoBankSwitch(_ptr, (_y) * (_w) + ((_x) >> MFB_PWSH))
-
-#ifdef MFB_LINE_BANK
-
-#include "afblinebank.h" /* get macro definitions from this file */
-
-#else /* !MFB_LINE_BANK - unbanked case */
-
-#define afbScanlineInc(_ptr, _off) afbScanlineIncNoBankSwitch(_ptr, _off)
-#define afbScanlineIncSrc(_ptr, _off) afbScanlineInc(_ptr, _off)
-#define afbScanlineIncDst(_ptr, _off) afbScanlineInc(_ptr, _off)
-
-#define afbScanlineOffset(_ptr, _off) afbScanlineOffsetNoBankSwitch(_ptr, _off)
-#define afbScanlineOffsetSrc(_ptr, _off) afbScanlineOffset(_ptr, _off)
-#define afbScanlineOffsetDst(_ptr, _off) afbScanlineOffset(_ptr, _off)
-
-#define afbScanlineSrc(_ptr, _x, _y, _w) afbScanline(_ptr, _x, _y, _w)
-#define afbScanlineDst(_ptr, _x, _y, _w) afbScanline(_ptr, _x, _y, _w)
-
-#define afbScanlineDeltaSrc(_ptr, _y, _w) afbScanlineDelta(_ptr, _y, _w)
-#define afbScanlineDeltaDst(_ptr, _y, _w) afbScanlineDelta(_ptr, _y, _w)
-
-#endif /* MFB_LINE_BANK */
-
-#define afbScanlineDelta(_ptr, _y, _w) \
- afbScanlineOffset(_ptr, (_y) * (_w))
-
-#define afbScanline(_ptr, _x, _y, _w) \
- afbScanlineOffset(_ptr, (_y) * (_w) + ((_x) >> MFB_PWSH))
-
-/* precomputed information about each glyph for GlyphBlt code.
- this saves recalculating the per glyph information for each box.
-*/
-
-typedef struct _afbpos{
- int xpos; /* xposition of glyph's origin */
- int xchar; /* x position mod 32 */
- int leftEdge;
- int rightEdge;
- int topEdge;
- int bottomEdge;
- PixelType *pdstBase; /* longword with character origin */
- int widthGlyph; /* width in bytes of this glyph */
-} afbTEXTPOS;
-
-/* reduced raster ops for afb */
-#define RROP_BLACK GXclear
-#define RROP_WHITE GXset
-#define RROP_NOP GXnoop
-#define RROP_INVERT GXinvert
-#define RROP_COPY GXcopy
-
-/* macros for afbbitblt.c, afbfillsp.c
- these let the code do one switch on the rop per call, rather
- than a switch on the rop per item (span or rectangle.)
-*/
-
-#define fnCLEAR(src, dst) (0)
-#define fnAND(src, dst) (src & dst)
-#define fnANDREVERSE(src, dst) (src & ~dst)
-#define fnCOPY(src, dst) (src)
-#define fnANDINVERTED(src, dst) (~src & dst)
-#define fnNOOP(src, dst) (dst)
-#define fnXOR(src, dst) (src ^ dst)
-#define fnOR(src, dst) (src | dst)
-#define fnNOR(src, dst) (~(src | dst))
-#define fnEQUIV(src, dst) (~src ^ dst)
-#define fnINVERT(src, dst) (~dst)
-#define fnORREVERSE(src, dst) (src | ~dst)
-#define fnCOPYINVERTED(src, dst) (~src)
-#define fnORINVERTED(src, dst) (~src | dst)
-#define fnNAND(src, dst) (~(src & dst))
-#undef fnSET
-#define fnSET(src, dst) (~0)
-
-/* Using a "switch" statement is much faster in most cases
- * since the compiler can do a look-up table or multi-way branch
- * instruction, depending on the architecture. The result on
- * A Sun 3/50 is at least 2.5 times faster, assuming a uniform
- * distribution of RasterOp operation types.
- *
- * However, doing some profiling on a running system reveals
- * GXcopy is the operation over 99.5% of the time and
- * GXxor is the next most frequent (about .4%), so we make special
- * checks for those first.
- *
- * Note that this requires a change to the "calling sequence"
- * since we can't engineer a "switch" statement to have an lvalue.
- */
-#undef DoRop
-#define DoRop(result, alu, src, dst) \
-{ \
- if (alu == GXcopy) \
- result = fnCOPY (src, dst); \
- else if (alu == GXxor) \
- result = fnXOR (src, dst); \
- else \
- switch (alu) { \
- case GXclear: \
- result = fnCLEAR (src, dst); \
- break; \
- case GXand: \
- result = fnAND (src, dst); \
- break; \
- case GXandReverse: \
- result = fnANDREVERSE (src, dst); \
- break; \
- case GXandInverted: \
- result = fnANDINVERTED (src, dst); \
- break; \
- default: \
- case GXnoop: \
- result = fnNOOP (src, dst); \
- break; \
- case GXor: \
- result = fnOR (src, dst); \
- break; \
- case GXnor: \
- result = fnNOR (src, dst); \
- break; \
- case GXequiv: \
- result = fnEQUIV (src, dst); \
- break; \
- case GXinvert: \
- result = fnINVERT (src, dst); \
- break; \
- case GXorReverse: \
- result = fnORREVERSE (src, dst); \
- break; \
- case GXcopyInverted: \
- result = fnCOPYINVERTED (src, dst); \
- break; \
- case GXorInverted: \
- result = fnORINVERTED (src, dst); \
- break; \
- case GXnand: \
- result = fnNAND (src, dst); \
- break; \
- case GXset: \
- result = fnSET (src, dst); \
- break; \
- } \
-}
-
-
-/* C expression fragments for various operations. These get passed in
- * as -D's on the compile command line. See afb/Imakefile. This
- * fixes XBUG 6319.
- *
- * This seems like a good place to point out that afb's use of the
- * words black and white is an unfortunate misnomer. In afb code, black
- * means zero, and white means one.
- */
-#define MFB_OPEQ_WHITE |=
-#define MFB_OPEQ_BLACK &=~
-#define MFB_OPEQ_INVERT ^=
-#define MFB_EQWHOLEWORD_WHITE =~0
-#define MFB_EQWHOLEWORD_BLACK =0
-#define MFB_EQWHOLEWORD_INVERT ^=~0
-#define MFB_OP_WHITE /* nothing */
-#define MFB_OP_BLACK ~
-
-#ifdef XFree86LOADER
-#include "xf86_ansic.h"
-#endif
-
diff --git a/nx-X11/programs/Xserver/afb/afbbitblt.c b/nx-X11/programs/Xserver/afb/afbbitblt.c
deleted file mode 100644
index 0c1c6bb9f..000000000
--- a/nx-X11/programs/Xserver/afb/afbbitblt.c
+++ /dev/null
@@ -1,477 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbbitblt.c,v 3.5tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbbitblt.c,v 5.25 94/04/17 20:28:16 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mi.h"
-
-#include "afb.h"
-#include "maskbits.h"
-
-
-static unsigned char afbRropsOS[AFB_MAX_DEPTH];
-
-/* CopyArea and CopyPlane for a monchrome frame buffer
-
-
- clip the source rectangle to the source's available bits. (this
-avoids copying unnecessary pieces that will just get exposed anyway.)
-this becomes the new shape of the destination.
- clip the destination region to the composite clip in the
-GC. this requires translating the destination region to (dstx, dsty).
- build a list of source points, one for each rectangle in the
-destination. this is a simple translation.
- go do the multiple rectangle copies
- do graphics exposures
-*/
-/** Optimized for drawing pixmaps into windows, especially when drawing into
- ** unobscured windows. Calls to the general-purpose region code were
- ** replaced with rectangle-to-rectangle clipping comparisions. This is
- ** possible, since the pixmap is a single rectangle. In an unobscured
- ** window, the destination clip is also a single rectangle, and region
- ** code can be avoided entirely. This is a big savings, since the region
- ** code uses XAlloc() and makes many function calls.
- **
- ** In addition, if source is a pixmap, there is no need to call the
- ** expensive miHandleExposures() routine. Instead, we simply return NULL.
- **
- ** Previously, drawing a pixmap into an unobscured window executed at least
- ** 8 XAlloc()'s, 30 function calls, and hundreds of lines of code.
- **
- ** Now, the same operation requires no XAlloc()'s, no region function calls,
- ** and much less overhead. Nice for drawing lots of small pixmaps.
- */
-
-void
-afbDoBitblt(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- switch (alu) {
- case GXcopy:
- afbDoBitbltCopy(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- case GXxor:
- afbDoBitbltXor(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- case GXcopyInverted:
- afbDoBitbltCopyInverted(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- case GXor:
- afbDoBitbltOr(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- default:
- afbDoBitbltGeneral(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- }
-}
-
-RegionPtr
-afbCopyArea(pSrcDrawable, pDstDrawable, pGC, srcx, srcy, width, height,
- dstx, dsty)
- DrawablePtr pSrcDrawable;
- DrawablePtr pDstDrawable;
- GC *pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
-{
- void (*doBitBlt)();
-
- switch (pGC->alu) {
- case GXcopy:
- doBitBlt = afbDoBitbltCopy;
- break;
- case GXxor:
- doBitBlt = afbDoBitbltXor;
- break;
- case GXcopyInverted:
- doBitBlt = afbDoBitbltCopyInverted;
- break;
- case GXor:
- doBitBlt = afbDoBitbltOr;
- break;
- default:
- doBitBlt = afbDoBitbltGeneral;
- break;
- }
-
- return(afbBitBlt(pSrcDrawable, pDstDrawable, pGC, srcx, srcy,
- width, height, dstx, dsty, doBitBlt, pGC->planemask));
-}
-
-RegionPtr
-afbBitBlt(pSrcDrawable, pDstDrawable, pGC, srcx, srcy, width, height,
- dstx, dsty, doBitBlt, planemask)
- register DrawablePtr pSrcDrawable;
- register DrawablePtr pDstDrawable;
- register GC *pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
- void (*doBitBlt)();
- unsigned long planemask;
-{
- RegionPtr prgnSrcClip = NULL; /* may be a new region, or just a copy */
- Bool freeSrcClip = FALSE;
-
- RegionPtr prgnExposed;
- RegionRec rgnDst;
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- register BoxPtr pbox;
- int i;
- register int dx;
- register int dy;
- xRectangle origSource;
- DDXPointRec origDest;
- int numRects;
- BoxRec fastBox;
- int fastClip = 0; /* for fast clipping with pixmap source */
- int fastExpose = 0; /* for fast exposures with pixmap source */
-
- origSource.x = srcx;
- origSource.y = srcy;
- origSource.width = width;
- origSource.height = height;
- origDest.x = dstx;
- origDest.y = dsty;
-
- if ((pSrcDrawable != pDstDrawable) && pSrcDrawable->pScreen->SourceValidate)
- (*pSrcDrawable->pScreen->SourceValidate)(pSrcDrawable, srcx, srcy, width,
- height);
-
- srcx += pSrcDrawable->x;
- srcy += pSrcDrawable->y;
-
- /* clip the source */
-
- if (pSrcDrawable->type == DRAWABLE_PIXMAP)
- if ((pSrcDrawable == pDstDrawable) && (pGC->clientClipType == CT_NONE))
- prgnSrcClip = pGC->pCompositeClip;
- else
- fastClip = 1;
- else if (pGC->subWindowMode == IncludeInferiors)
- if (!((WindowPtr)pSrcDrawable)->parent)
- /*
- * special case bitblt from root window in
- * IncludeInferiors mode; just like from a pixmap
- */
- fastClip = 1;
- else if ((pSrcDrawable == pDstDrawable) && (pGC->clientClipType == CT_NONE))
- prgnSrcClip = pGC->pCompositeClip;
- else {
- prgnSrcClip = NotClippedByChildren((WindowPtr)pSrcDrawable);
- freeSrcClip = TRUE;
- }
- else
- prgnSrcClip = &((WindowPtr)pSrcDrawable)->clipList;
-
- fastBox.x1 = srcx;
- fastBox.y1 = srcy;
- fastBox.x2 = srcx + width;
- fastBox.y2 = srcy + height;
-
- /* Don't create a source region if we are doing a fast clip */
- if (fastClip) {
- fastExpose = 1;
- /*
- * clip the source; if regions extend beyond the source size,
- * make sure exposure events get sent
- */
- if (fastBox.x1 < pSrcDrawable->x) {
- fastBox.x1 = pSrcDrawable->x;
- fastExpose = 0;
- }
- if (fastBox.y1 < pSrcDrawable->y) {
- fastBox.y1 = pSrcDrawable->y;
- fastExpose = 0;
- }
- if (fastBox.x2 > pSrcDrawable->x + (int)pSrcDrawable->width) {
- fastBox.x2 = pSrcDrawable->x + (int)pSrcDrawable->width;
- fastExpose = 0;
- }
- if (fastBox.y2 > pSrcDrawable->y + (int)pSrcDrawable->height) {
- fastBox.y2 = pSrcDrawable->y + (int)pSrcDrawable->height;
- fastExpose = 0;
- }
- } else {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, prgnSrcClip);
- }
-
- dstx += pDstDrawable->x;
- dsty += pDstDrawable->y;
-
- if (pDstDrawable->type == DRAWABLE_WINDOW)
- if (!((WindowPtr)pDstDrawable)->realized) {
- if (!fastClip)
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
-
- dx = srcx - dstx;
- dy = srcy - dsty;
-
- /* Translate and clip the dst to the destination composite clip */
- if (fastClip) {
- RegionPtr cclip;
-
- /* Translate the region directly */
- fastBox.x1 -= dx;
- fastBox.x2 -= dx;
- fastBox.y1 -= dy;
- fastBox.y2 -= dy;
-
- /* If the destination composite clip is one rectangle we can
- do the clip directly. Otherwise we have to create a full
- blown region and call intersect */
- cclip = pGC->pCompositeClip;
- if (REGION_NUM_RECTS(cclip) == 1) {
- BoxPtr pBox = REGION_RECTS(cclip);
-
- if (fastBox.x1 < pBox->x1)
- fastBox.x1 = pBox->x1;
- if (fastBox.x2 > pBox->x2)
- fastBox.x2 = pBox->x2;
- if (fastBox.y1 < pBox->y1)
- fastBox.y1 = pBox->y1;
- if (fastBox.y2 > pBox->y2)
- fastBox.y2 = pBox->y2;
-
- /* Check to see if the region is empty */
- if (fastBox.x1 >= fastBox.x2 || fastBox.y1 >= fastBox.y2) {
- REGION_NULL(pGC->pScreen, &rgnDst);
- } else {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- }
- } else {
- /* We must turn off fastClip now, since we must create
- a full blown region. It is intersected with the
- composite clip below. */
- fastClip = 0;
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox,1);
- }
- } else
- REGION_TRANSLATE(pGC->pScreen, &rgnDst, -dx, -dy);
-
- if (!fastClip) {
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst,
- pGC->pCompositeClip);
- }
-
- /* Do bit blitting */
- numRects = REGION_NUM_RECTS(&rgnDst);
- if (numRects && width && height) {
- if(!(pptSrc = (DDXPointPtr)ALLOCATE_LOCAL(numRects *
- sizeof(DDXPointRec)))) {
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
- pbox = REGION_RECTS(&rgnDst);
- ppt = pptSrc;
- for (i = numRects; --i >= 0; pbox++, ppt++) {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- (*doBitBlt)(pSrcDrawable, pDstDrawable, pGC->alu, &rgnDst, pptSrc,
- planemask);
-
- DEALLOCATE_LOCAL(pptSrc);
- }
-
- prgnExposed = NULL;
- if (pGC->fExpose) {
- /* Pixmap sources generate a NoExposed (we return NULL to do this) */
- if (!fastExpose)
- prgnExposed = miHandleExposures(pSrcDrawable, pDstDrawable, pGC,
- origSource.x, origSource.y,
- (int)origSource.width,
- (int)origSource.height, origDest.x,
- origDest.y, (unsigned long)0);
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return prgnExposed;
-}
-
-RegionPtr
-afbCopyPlane(pSrcDrawable, pDstDrawable, pGC, srcx, srcy, width, height,
- dstx, dsty, plane)
-DrawablePtr pSrcDrawable, pDstDrawable;
-register GC *pGC;
-int srcx, srcy;
-int width, height;
-int dstx, dsty;
-unsigned long plane;
-{
- int alu;
- RegionPtr prgnExposed = NULL;
- unsigned long old_planemask;
-
- if (pDstDrawable->depth == 1) {
- old_planemask = pGC->planemask;
- pGC->planemask = plane;
- if ((pGC->fgPixel & 1) == 1 && (pGC->bgPixel & 1) == 0) {
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty);
- } else if ((pGC->fgPixel & 1) == (pGC->bgPixel & 1)) {
- unsigned char rop;
-
- afbReduceRop(pGC->alu, pGC->fgPixel, 1, 1, &rop);
- alu = pGC->alu;
- pGC->alu = rop;
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable, pGC,
- srcx, srcy, width, height, dstx,
- dsty);
- pGC->alu = alu;
- } else { /* need to invert the src */
- alu = pGC->alu;
- pGC->alu = afbInverseAlu[alu];
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable, pGC,
- srcx, srcy, width, height, dstx,
- dsty);
- pGC->alu = alu;
- }
- pGC->planemask = old_planemask;
- } else {
- int free_pixmap = FALSE;
- PixmapPtr pBitmap = (PixmapPtr)pSrcDrawable;
- ScreenPtr pScreen = pSrcDrawable->pScreen;
- GCPtr pGC1 = NULL;
-
- if (pSrcDrawable == pDstDrawable ||
- pSrcDrawable->type == DRAWABLE_WINDOW || pSrcDrawable->depth != 1) {
- /* Copy a plane from source drawable to a tmp 1-bit deep pixmap */
- /* XXX: Range check width and height */
- pBitmap = (*pScreen->CreatePixmap)(pScreen, width, height, 1);
-
- if (!pBitmap)
- return(NULL);
- pGC1 = GetScratchGC(1, pScreen);
- if (!pGC1) {
- (*pScreen->DestroyPixmap)(pBitmap);
- return(NULL);
- }
- ValidateGC((DrawablePtr)pBitmap, pGC1);
- (void)afbBitBlt(pSrcDrawable, (DrawablePtr)pBitmap, pGC1, srcx, srcy,
- width, height, 0, 0, afbDoBitbltCopy, plane);
- free_pixmap = TRUE;
- }
-#if 0
- else {
- /* XXX: could cope with N-deep pixmap source case without using tmp
- * src bitmap by setting up a scratch pixmap header and fiddle
- * around with the pbits pointer.
- */
- }
-#endif
- afbReduceOpaqueStipple(pGC->fgPixel, pGC->bgPixel, pGC->planemask,
- pGC->depth, afbRropsOS);
- (void)afbBitBlt((DrawablePtr)pBitmap, pDstDrawable, pGC, 0, 0, width,
- height, dstx, dsty, afbCopy1ToN, pGC->planemask);
- if (free_pixmap) {
- (*pScreen->DestroyPixmap)(pBitmap);
- FreeScratchGC(pGC1);
- }
-
- if (pGC->fExpose)
- prgnExposed = miHandleExposures(pSrcDrawable, pDstDrawable, pGC, srcx,
- srcy, width, height, dstx, dsty,
- plane);
- }
- return prgnExposed;
-}
-
-void
-afbCopy1ToN(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- int numRects = REGION_NUM_RECTS(prgnDst);
- BoxPtr pbox = REGION_RECTS(prgnDst);
- int r;
-
- for (r = 0; r < numRects; r++, pbox++, pptSrc++) {
- int dx = pptSrc->x;
- int dy = pptSrc->y;
-
- if (alu == GXcopy)
- afbOpaqueStippleAreaCopy(pDst, 1, pbox, alu, (PixmapPtr)pSrc, dx, dy,
- afbRropsOS, planemask);
- else
- afbOpaqueStippleAreaGeneral(pDst, 1, pbox, alu, (PixmapPtr)pSrc, dx,
- dy, afbRropsOS, planemask);
- }
-}
diff --git a/nx-X11/programs/Xserver/afb/afbblt.c b/nx-X11/programs/Xserver/afb/afbblt.c
deleted file mode 100644
index 6cbb0a878..000000000
--- a/nx-X11/programs/Xserver/afb/afbblt.c
+++ /dev/null
@@ -1,563 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbblt.c,v 3.0 1996/08/18 01:45:24 dawes Exp $ */
-/*
- * afb copy area
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-Author: Keith Packard
-
-*/
-/* $XConsortium: afbblt.c,v 1.11 94/04/17 20:28:16 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "afb.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-#include "fastblt.h"
-#include "mergerop.h"
-
-void
-MROP_NAME(afbDoBitblt)(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- PixelType *psrcBase, *pdstBase; /* start of src and dst bitmaps */
- int widthSrc, widthDst; /* add to get to same position in next line */
- int sizeSrc, sizeDst;
-
- BoxPtr pbox;
- int nbox;
-
- BoxPtr pboxTmp, pboxNext, pboxBase, pboxNew1, pboxNew2;
- /* temporaries for shuffling rectangles */
- DDXPointPtr pptTmp, pptNew1, pptNew2;
- /* shuffling boxes entails shuffling the
- source points too */
- int w, h;
- int xdir; /* 1 = left right, -1 = right left/ */
- int ydir; /* 1 = top down, -1 = bottom up */
-
- PixelType *psrcLine, *pdstLine;
- /* pointers to line with current src and dst */
- register PixelType *psrc; /* pointer to current src longword */
- register PixelType *pdst; /* pointer to current dst longword */
-
- MROP_DECLARE_REG()
-
- /* following used for looping through a line */
- PixelType startmask, endmask; /* masks for writing ends of dst */
- int nlMiddle; /* whole longwords in dst */
- int xoffSrc, xoffDst;
- register int leftShift, rightShift;
- register PixelType bits;
- register PixelType bits1;
- register int nl; /* temp copy of nlMiddle */
-
- int careful;
- int depthSrc;
- int depthDst;
-
- MROP_INITIALIZE(alu,0);
-
- afbGetPixelWidthSizeDepthAndPointer(pSrc, widthSrc, sizeSrc, depthSrc,
- psrcBase);
- afbGetPixelWidthSizeDepthAndPointer(pDst, widthDst, sizeDst, depthDst,
- pdstBase);
-
- /* Special case where depth of dest pixmap is 1 but source pixmap isn't
- * Used for GetImage to copy a plane from a source pixmap to a particular
- * dest pixmap plane.
- * Note: planemask should have only one bit set or several planes from
- * the source will be copied to the same dest plane.
- */
- if (depthDst == 1 && depthDst != depthSrc)
- sizeDst = 0;
-
- /* XXX we have to err on the side of safety when both are windows,
- * because we don't know if IncludeInferiors is being used.
- */
- careful = ((pSrc == pDst) ||
- ((pSrc->type == DRAWABLE_WINDOW) &&
- (pDst->type == DRAWABLE_WINDOW)));
-
- pbox = REGION_RECTS(prgnDst);
- nbox = REGION_NUM_RECTS(prgnDst);
-
- pboxNew1 = NULL;
- pptNew1 = NULL;
- pboxNew2 = NULL;
- pptNew2 = NULL;
- if (careful && (pptSrc->y < pbox->y1)) {
- /* walk source botttom to top */
- ydir = -1;
- widthSrc = -widthSrc;
- widthDst = -widthDst;
-
- if (nbox > 1) {
- /* keep ordering in each band, reverse order of bands */
- pboxNew1 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec)*nbox);
- if(!pboxNew1)
- return;
- pptNew1 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec)*nbox);
- if(!pptNew1) {
- DEALLOCATE_LOCAL(pboxNew1);
- return;
- }
- pboxBase = pboxNext = pbox+nbox-1;
- while (pboxBase >= pbox) {
- while ((pboxNext >= pbox) &&
- (pboxBase->y1 == pboxNext->y1))
- pboxNext--;
- pboxTmp = pboxNext+1;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp <= pboxBase) {
- *pboxNew1++ = *pboxTmp++;
- *pptNew1++ = *pptTmp++;
- }
- pboxBase = pboxNext;
- }
- pboxNew1 -= nbox;
- pbox = pboxNew1;
- pptNew1 -= nbox;
- pptSrc = pptNew1;
- }
- } else {
- /* walk source top to bottom */
- ydir = 1;
- }
-
- if (careful && (pptSrc->x < pbox->x1)) {
- /* walk source right to left */
- xdir = -1;
-
- if (nbox > 1) {
- /* reverse order of rects in each band */
- pboxNew2 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox);
- pptNew2 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox);
- if(!pboxNew2 || !pptNew2) {
- if (pptNew2)
- DEALLOCATE_LOCAL(pptNew2);
- if (pboxNew2)
- DEALLOCATE_LOCAL(pboxNew2);
- if (pboxNew1) {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(pboxNew1);
- }
- return;
- }
- pboxBase = pboxNext = pbox;
- while (pboxBase < pbox+nbox) {
- while ((pboxNext < pbox+nbox) && (pboxNext->y1 == pboxBase->y1))
- pboxNext++;
- pboxTmp = pboxNext;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp != pboxBase) {
- *pboxNew2++ = *--pboxTmp;
- *pptNew2++ = *--pptTmp;
- }
- pboxBase = pboxNext;
- }
- pboxNew2 -= nbox;
- pbox = pboxNew2;
- pptNew2 -= nbox;
- pptSrc = pptNew2;
- }
- } else {
- /* walk source left to right */
- xdir = 1;
- }
-
- while(nbox--) {
- int d;
- for (d = 0; d < depthSrc; d++) {
- PixelType *psrcB;
- PixelType *pdstB;
-
- if (!(planemask & (1 << d)))
- continue;
-
- psrcB = psrcBase + sizeSrc * d; /* @@@ NEXT PLANE @@@ */
- pdstB = pdstBase + sizeDst * d; /* @@@ NEXT PLANE @@@ */
-
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
-
- if (ydir == -1) { /* start at last scanline of rectangle */
- psrcLine = afbScanlineDeltaSrc(psrcB, -(pptSrc->y+h-1), widthSrc);
- pdstLine = afbScanlineDeltaDst(pdstB, -(pbox->y2-1), widthDst);
- } else { /* start at first scanline */
- psrcLine = afbScanlineDeltaSrc(psrcB, pptSrc->y, widthSrc);
- pdstLine = afbScanlineDeltaDst(pdstB, pbox->y1, widthDst);
- }
- if ((pbox->x1 & PIM) + w <= PPW) {
- maskpartialbits (pbox->x1, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlMiddle);
- }
- if (xdir == 1) {
- xoffSrc = pptSrc->x & PIM;
- xoffDst = pbox->x1 & PIM;
- pdstLine += (pbox->x1 >> PWSH);
- psrcLine += (pptSrc->x >> PWSH);
-#ifdef DO_UNALIGNED_BITBLT
- nl = xoffSrc - xoffDst;
- psrcLine = (PixelType *)(((unsigned char *) psrcLine) + nl);
-#else
- if (xoffSrc == xoffDst)
-#endif
- {
- while (h--) {
- psrc = psrcLine;
- pdst = pdstLine;
- if (startmask) {
- *pdst = MROP_MASK(*psrc, *pdst, startmask);
- psrc++;
- pdst++;
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-#define BodyEven(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) *pdst = MROP_SOLID (*psrc, *pdst); pdst++; psrc++;
-#define BodyEven(n) BodyOdd(n)
-
-#define LoopReset ;
-
-#endif
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
-#ifdef NOTDEF
- /* you'd think this would be faster --
- * a single instruction instead of 6
- * but measurements show it to be ~15% slower
- */
- while ((nl -= 6) >= 0) {
- asm ("moveml %1+,#0x0c0f;moveml#0x0c0f,%0"
- : "=m" (*(char *)pdst)
- : "m" (*(char *)psrc)
- : "d0", "d1", "d2", "d3",
- "a2", "a3");
- pdst += 6;
- }
- nl += 6;
- while (nl--)
- *pdst++ = *psrc++;
-#endif
- DuffL(nl, label1,
- *pdst = MROP_SOLID (*psrc, *pdst);
- pdst++; psrc++;)
-#endif
-
- if (endmask)
- *pdst = MROP_MASK(*psrc, *pdst, endmask);
- afbScanlineIncDst(pdstLine, widthDst);
- afbScanlineIncSrc(psrcLine, widthSrc);
- }
- }
-#ifndef DO_UNALIGNED_BITBLT
- else {
- if (xoffSrc > xoffDst) {
- leftShift = (xoffSrc - xoffDst);
- rightShift = PPW - leftShift;
- } else {
- rightShift = (xoffDst - xoffSrc);
- leftShift = PPW - rightShift;
- }
- while (h--) {
- psrc = psrcLine;
- pdst = pdstLine;
- bits = 0;
- if (xoffSrc > xoffDst)
- bits = *psrc++;
- if (startmask) {
- bits1 = BitLeft(bits,leftShift);
- bits = *psrc++;
- bits1 |= BitRight(bits,rightShift);
- *pdst = MROP_MASK(bits1, *pdst, startmask);
- pdst++;
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
- bits1 = bits;
-
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) \
-bits = psrc[-n]; \
-pdst[-n] = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), pdst[-n]);
-
-#define BodyEven(n) \
-bits1 = psrc[-n]; \
-pdst[-n] = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), pdst[-n]);
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) \
-bits = *psrc++; \
-*pdst = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), *pdst); \
-pdst++;
-
-#define BodyEven(n) \
-bits1 = *psrc++; \
-*pdst = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), *pdst); \
-pdst++;
-
-#define LoopReset ;
-
-#endif /* !FAST_CONSTANT_OFFSET_MODE */
-
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL(nl,label2,
- bits1 = BitLeft(bits, leftShift);
- bits = *psrc++;
- *pdst = MROP_SOLID (bits1 | BitRight(bits, rightShift), *pdst);
- pdst++;
- )
-#endif
-
- if (endmask) {
- bits1 = BitLeft(bits, leftShift);
- if (BitLeft(endmask, rightShift)) {
- bits = *psrc;
- bits1 |= BitRight(bits, rightShift);
- }
- *pdst = MROP_MASK (bits1, *pdst, endmask);
- }
- afbScanlineIncDst(pdstLine, widthDst);
- afbScanlineIncSrc(psrcLine, widthSrc);
- }
- }
-#endif /* DO_UNALIGNED_BITBLT */
- } else { /* xdir == -1 */
- xoffSrc = (pptSrc->x + w - 1) & PIM;
- xoffDst = (pbox->x2 - 1) & PIM;
- pdstLine += ((pbox->x2-1) >> PWSH) + 1;
- psrcLine += ((pptSrc->x+w - 1) >> PWSH) + 1;
-#ifdef DO_UNALIGNED_BITBLT
- nl = xoffSrc - xoffDst;
- psrcLine = (PixelType *)
- (((unsigned char *) psrcLine) + nl);
-#else
- if (xoffSrc == xoffDst)
-#endif
- {
- while (h--) {
- psrc = psrcLine;
- pdst = pdstLine;
- if (endmask) {
- pdst--;
- psrc--;
- *pdst = MROP_MASK (*psrc, *pdst, endmask);
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
-#ifdef FAST_CONSTANT_OFFSET_MODE
- psrc -= nl & (UNROLL - 1);
- pdst -= nl & (UNROLL - 1);
-
-#define BodyOdd(n) pdst[n-1] = MROP_SOLID (psrc[n-1], pdst[n-1]);
-
-#define BodyEven(n) BodyOdd(n)
-
-#define LoopReset \
-pdst -= UNROLL;\
-psrc -= UNROLL;
-
-#else
-
-#define BodyOdd(n) --pdst; --psrc; *pdst = MROP_SOLID(*psrc, *pdst);
-#define BodyEven(n) BodyOdd(n)
-#define LoopReset ;
-
-#endif
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL(nl,label3,
- --pdst; --psrc; *pdst = MROP_SOLID (*psrc, *pdst);)
-#endif
-
- if (startmask) {
- --pdst;
- --psrc;
- *pdst = MROP_MASK(*psrc, *pdst, startmask);
- }
- afbScanlineIncDst(pdstLine, widthDst);
- afbScanlineIncSrc(psrcLine, widthSrc);
- }
- }
-#ifndef DO_UNALIGNED_BITBLT
- else {
- if (xoffDst > xoffSrc) {
- rightShift = (xoffDst - xoffSrc);
- leftShift = PPW - rightShift;
- } else {
- leftShift = (xoffSrc - xoffDst);
- rightShift = PPW - leftShift;
- }
- while (h--) {
- psrc = psrcLine;
- pdst = pdstLine;
- bits = 0;
- if (xoffDst > xoffSrc)
- bits = *--psrc;
- if (endmask) {
- bits1 = BitRight(bits, rightShift);
- bits = *--psrc;
- bits1 |= BitLeft(bits, leftShift);
- pdst--;
- *pdst = MROP_MASK(bits1, *pdst, endmask);
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
- bits1 = bits;
-#ifdef FAST_CONSTANT_OFFSET_MODE
- psrc -= nl & (UNROLL - 1);
- pdst -= nl & (UNROLL - 1);
-
-#define BodyOdd(n) \
-bits = psrc[n-1]; \
-pdst[n-1] = MROP_SOLID(BitRight(bits1, rightShift) | BitLeft(bits, leftShift),pdst[n-1]);
-
-#define BodyEven(n) \
-bits1 = psrc[n-1]; \
-pdst[n-1] = MROP_SOLID(BitRight(bits, rightShift) | BitLeft(bits1, leftShift),pdst[n-1]);
-
-#define LoopReset \
-pdst -= UNROLL; \
-psrc -= UNROLL;
-
-#else
-
-#define BodyOdd(n) \
-bits = *--psrc; --pdst; \
-*pdst = MROP_SOLID(BitRight(bits1, rightShift) | BitLeft(bits, leftShift),*pdst);
-
-#define BodyEven(n) \
-bits1 = *--psrc; --pdst; \
-*pdst = MROP_SOLID(BitRight(bits, rightShift) | BitLeft(bits1, leftShift),*pdst);
-
-#define LoopReset ;
-
-#endif
-
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL(nl, label4,
- bits1 = BitRight(bits, rightShift);
- bits = *--psrc;
- --pdst;
- *pdst = MROP_SOLID(bits1 | BitLeft(bits, leftShift),*pdst);
- )
-#endif
-
- if (startmask) {
- bits1 = BitRight(bits, rightShift);
- if (BitRight (startmask, leftShift)) {
- bits = *--psrc;
- bits1 |= BitLeft(bits, leftShift);
- }
- --pdst;
- *pdst = MROP_MASK(bits1, *pdst, startmask);
- }
- afbScanlineIncDst(pdstLine, widthDst);
- afbScanlineIncSrc(psrcLine, widthSrc);
- }
- }
-#endif
- }
- }
- pbox++;
- pptSrc++;
- }
- if (pboxNew2) {
- DEALLOCATE_LOCAL(pptNew2);
- DEALLOCATE_LOCAL(pboxNew2);
- }
- if (pboxNew1) {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(pboxNew1);
- }
-}
diff --git a/nx-X11/programs/Xserver/afb/afbbres.c b/nx-X11/programs/Xserver/afb/afbbres.c
deleted file mode 100644
index 6ee09b9e4..000000000
--- a/nx-X11/programs/Xserver/afb/afbbres.c
+++ /dev/null
@@ -1,325 +0,0 @@
-/* $XFree86$ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbbres.c,v 1.22 94/04/17 20:28:17 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "afb.h"
-#include "maskbits.h"
-#include "miline.h"
-
-/* Solid bresenham line */
-/* NOTES
- e2 is used less often than e1, so it's not in a register
-*/
-
-void
-afbBresS(addrlbase, nlwidth, sizeDst, depthDst, signdx, signdy, axis, x1, y1,
- e, e1, e2, len, rrops)
-PixelType *addrlbase; /* pointer to base of bitmap */
-int nlwidth; /* width in longwords of bitmap */
-int sizeDst;
-int depthDst;
-int signdx, signdy; /* signs of directions */
-int axis; /* major axis (Y_AXIS or X_AXIS) */
-int x1, y1; /* initial point */
-register int e; /* error accumulator */
-register int e1; /* bresenham increments */
-int e2;
-int len; /* length of line */
-unsigned char *rrops;
-{
- register int yinc; /* increment to next scanline, in bytes */
- register PixelType *addrl; /* bitmask long pointer */
- register PixelType bit; /* current bit being set/cleared/etc. */
- PixelType leftbit = mfbGetmask(0); /* leftmost bit to process in new word */
- PixelType rightbit = mfbGetmask(PPW-1); /* rightmost bit to process in new word */
-
- register int e3 = e2-e1;
- PixelType tmp;
- int saveE;
- int saveLen;
- int d;
-
- /* point to longword containing first point */
- yinc = signdy * nlwidth;
- e = e-e1; /* to make looping easier */
-
- if (!len)
- return;
-
- saveLen = len;
- saveE = e;
-
- for (d = 0; d < depthDst; d++) {
- addrl = afbScanline(addrlbase, x1, y1, nlwidth);
- addrlbase += sizeDst; /* @@@ NEXT PLANE @@@ */
- len = saveLen;
- e = saveE;
- bit = mfbGetmask(x1 & PIM);
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if (axis == X_AXIS) {
- if (signdx > 0) {
- tmp = *addrl;
- for (;;) {
- tmp &= ~bit;
- if (!--len)
- break;
- bit = SCRRIGHT(bit,1);
- e += e1;
- if (e >= 0) {
- *addrl = tmp;
- afbScanlineInc(addrl, yinc);
- e += e3;
- if (!bit) {
- bit = leftbit;
- addrl ++;
- }
- tmp = *addrl;
- } else if (!bit) {
- *addrl = tmp;
- bit = leftbit;
- addrl ++;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- } else {
- tmp = *addrl;
- for (;;) {
- tmp &= ~bit;
- if (!--len)
- break;
- e += e1;
- bit = SCRLEFT(bit,1);
- if (e >= 0) {
- *addrl = tmp;
- afbScanlineInc(addrl, yinc);
- e += e3;
- if (!bit) {
- bit = rightbit;
- addrl --;
- }
- tmp = *addrl;
- } else if (!bit) {
- *addrl = tmp;
- bit = rightbit;
- addrl --;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- }
- } /* if X_AXIS */ else {
- if (signdx > 0) {
- while(len--) {
- *addrl &= ~bit;
- e += e1;
- if (e >= 0) {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- afbScanlineInc(addrl, yinc);
- }
- } else {
- while(len--) {
- *addrl &= ~bit;
- e += e1;
- if (e >= 0) {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- afbScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- break;
-
- case RROP_WHITE:
- if (axis == X_AXIS) {
- if (signdx > 0) {
- tmp = *addrl;
- for (;;) {
- tmp |= bit;
- if (!--len)
- break;
- e += e1;
- bit = SCRRIGHT(bit,1);
- if (e >= 0) {
- *addrl = tmp;
- afbScanlineInc(addrl, yinc);
- e += e3;
- if (!bit) {
- bit = leftbit;
- addrl ++;
- }
- tmp = *addrl;
- } else if (!bit) {
- *addrl = tmp;
- bit = leftbit;
- addrl ++;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- } else {
- tmp = *addrl;
- for (;;) {
- tmp |= bit;
- if (!--len)
- break;
- e += e1;
- bit = SCRLEFT(bit,1);
- if (e >= 0) {
- *addrl = tmp;
- afbScanlineInc(addrl, yinc);
- e += e3;
- if (!bit) {
- bit = rightbit;
- addrl --;
- }
- tmp = *addrl;
- } else if (!bit) {
- *addrl = tmp;
- bit = rightbit;
- addrl --;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- }
- } /* if X_AXIS */ else {
- if (signdx > 0) {
- while(len--) {
- *addrl |= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- afbScanlineInc(addrl, yinc);
- }
- } else {
- while(len--) {
- *addrl |= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- afbScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- break;
-
- case RROP_INVERT:
- if (axis == X_AXIS) {
- if (signdx > 0) {
- while(len--) {
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- afbScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- }
- } else {
- while(len--) {
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- afbScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- }
- }
- } /* if X_AXIS */ else {
- if (signdx > 0) {
- while(len--) {
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- afbScanlineInc(addrl, yinc);
- }
- } else {
- while(len--) {
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit; addrl --; }
- e += e3;
- }
- afbScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- } /* switch */
- } /* for (d = ... ) */
-}
diff --git a/nx-X11/programs/Xserver/afb/afbbresd.c b/nx-X11/programs/Xserver/afb/afbbresd.c
deleted file mode 100644
index 52cb62cab..000000000
--- a/nx-X11/programs/Xserver/afb/afbbresd.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbbresd.c,v 1.10 94/04/17 20:28:18 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "afb.h"
-#include "maskbits.h"
-#include "miline.h"
-
-/* Dashed bresenham line */
-
-#define StepDash\
- if (!--dashRemaining) { \
- if (++ dashIndex == numInDashList) \
- dashIndex = 0; \
- dashRemaining = pDash[dashIndex]; \
- rop = fgrop; \
- if (dashIndex & 1) \
- rop = bgrop; \
- }
-
-void
-afbBresD(pdashIndex, pDash, numInDashList, pdashOffset, isDoubleDash,
- addrlbase, nlwidth, sizeDst, depthDst,
- signdx, signdy, axis, x1, y1, e, e1, e2, len, rrops, bgrrops)
-int *pdashIndex; /* current dash */
-unsigned char *pDash; /* dash list */
-int numInDashList; /* total length of dash list */
-int *pdashOffset; /* offset into current dash */
-int isDoubleDash;
-PixelType *addrlbase; /* pointer to base of bitmap */
-int nlwidth; /* width in longwords of bitmap */
-int sizeDst;
-int depthDst;
-int signdx, signdy; /* signs of directions */
-int axis; /* major axis (Y_AXIS or X_AXIS) */
-int x1, y1; /* initial point */
-register int e; /* error accumulator */
-register int e1; /* bresenham increments */
-int e2;
-int len; /* length of line */
-unsigned char *rrops;
-unsigned char *bgrrops;
-{
- register int yinc; /* increment to next scanline, in bytes */
- register PixelType *addrl;
- register int e3 = e2-e1;
- register unsigned long bit;
- PixelType leftbit = mfbGetmask(0); /* leftmost bit to process in new word */
- PixelType rightbit = mfbGetmask(PPW-1); /* rightmost bit to process in new word */
- int dashIndex;
- int dashOffset;
- int dashRemaining;
- int rop;
- int fgrop;
- int bgrop;
- int saveE;
- int saveLen;
- int d;
-
- dashOffset = *pdashOffset;
- dashIndex = *pdashIndex;
- dashRemaining = pDash[dashIndex] - dashOffset;
- /* point to longword containing first point */
-
- yinc = signdy * nlwidth;
- e = e-e1; /* to make looping easier */
-
- saveE = e;
- saveLen = len;
-
- for (d = 0; d < depthDst; d++) {
- addrl = afbScanline(addrlbase, x1, y1, nlwidth);
- addrlbase += sizeDst; /* @@@ NEXT PLANE @@@ */
-
- fgrop = rrops[d];
- bgrop = bgrrops[d];
-
- e = saveE;
- len = saveLen;
- bit = mfbGetmask(x1 & PIM);
-
- rop = fgrop;
- if (!isDoubleDash)
- bgrop = -1;
- if (dashIndex & 1)
- rop = bgrop;
-
- if (axis == X_AXIS) {
- if (signdx > 0) {
- while(len--) {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- afbScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- StepDash
- }
- } else {
- while(len--) {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- afbScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- StepDash
- }
- }
- } /* if X_AXIS */ else {
- if (signdx > 0) {
- while(len--) {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- afbScanlineInc(addrl, yinc);
- StepDash
- }
- } else {
- while(len--) {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- afbScanlineInc(addrl, yinc);
- StepDash
- }
- }
- } /* else Y_AXIS */
- } /* for (d = ...) */
- *pdashIndex = dashIndex;
- *pdashOffset = pDash[dashIndex] - dashRemaining;
-}
diff --git a/nx-X11/programs/Xserver/afb/afbbstore.c b/nx-X11/programs/Xserver/afb/afbbstore.c
deleted file mode 100644
index a74a9d9b8..000000000
--- a/nx-X11/programs/Xserver/afb/afbbstore.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: afbbstore.c,v 5.7 94/04/17 20:28:18 dpw Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/*
-
-Copyright (c) 1987 X Consortium
-
-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 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 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 X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "afb.h"
-#include <X11/X.h>
-#include "mibstore.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-
-/*-
- *-----------------------------------------------------------------------
- * afbSaveAreas --
- * Function called by miSaveAreas to actually fetch the areas to be
- * saved into the backing pixmap. This is very simple to do, since
- * afbDoBitblt is designed for this very thing. The region to save is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the screen
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the screen into the pixmap.
- *
- *-----------------------------------------------------------------------
- */
-void
-afbSaveAreas(pPixmap, prgnSave, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnSave; /* Region to save (pixmap-relative) */
- int xorg; /* X origin of region */
- int yorg; /* Y origin of region */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int numRects;
-
- numRects = REGION_NUM_RECTS(prgnSave);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(numRects * sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnSave);
- pPt = pPtsInit;
- while (numRects--) {
- pPt->x = pBox->x1 + xorg;
- pPt->y = pBox->y1 + yorg;
- pPt++;
- pBox++;
- }
-
- afbDoBitblt((DrawablePtr)pPixmap->drawable.pScreen->devPrivates[afbScreenPrivateIndex].ptr,
- (DrawablePtr)pPixmap,
- GXcopy,
- prgnSave,
- pPtsInit, wBackingBitPlanes (pWin));
-
- DEALLOCATE_LOCAL(pPtsInit);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * afbRestoreAreas --
- * Function called by miRestoreAreas to actually fetch the areas to be
- * restored from the backing pixmap. This is very simple to do, since
- * afbDoBitblt is designed for this very thing. The region to restore is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the pixmap
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the pixmap into the screen.
- *
- *-----------------------------------------------------------------------
- */
-void
-afbRestoreAreas(pPixmap, prgnRestore, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnRestore; /* Region to restore (screen-relative)*/
- int xorg; /* X origin of window */
- int yorg; /* Y origin of window */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int numRects;
-
- numRects = REGION_NUM_RECTS(prgnRestore);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(numRects*sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnRestore);
- pPt = pPtsInit;
- while (numRects--) {
- pPt->x = pBox->x1 - xorg;
- pPt->y = pBox->y1 - yorg;
- pPt++;
- pBox++;
- }
-
- afbDoBitblt((DrawablePtr)pPixmap,
- (DrawablePtr)pPixmap->drawable.pScreen->devPrivates[afbScreenPrivateIndex].ptr,
- GXcopy,
- prgnRestore,
- pPtsInit, wBackingBitPlanes (pWin));
-
- DEALLOCATE_LOCAL(pPtsInit);
-}
diff --git a/nx-X11/programs/Xserver/afb/afbclip.c b/nx-X11/programs/Xserver/afb/afbclip.c
deleted file mode 100644
index ea7413233..000000000
--- a/nx-X11/programs/Xserver/afb/afbclip.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbclip.c,v 3.2 2001/10/28 03:32:57 tsi Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbclip.c,v 5.6 94/04/17 20:28:19 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "gc.h"
-#include "maskbits.h"
-#include "mi.h"
-#include "afb.h"
-
-#define ADDRECT(reg,r,fr,rx1,ry1,rx2,ry2) \
-if (((rx1) < (rx2)) && ((ry1) < (ry2)) && \
- (!((reg)->data->numRects && \
- ((r-1)->y1 == (ry1)) && \
- ((r-1)->y2 == (ry2)) && \
- ((r-1)->x1 <= (rx1)) && \
- ((r-1)->x2 >= (rx2))))) \
-{ \
- if ((reg)->data->numRects == (reg)->data->size) \
- { \
- miRectAlloc(reg, 1); \
- fr = REGION_BOXPTR(reg); \
- r = fr + (reg)->data->numRects; \
- } \
- r->x1 = (rx1); \
- r->y1 = (ry1); \
- r->x2 = (rx2); \
- r->y2 = (ry2); \
- (reg)->data->numRects++; \
- if(r->x1 < (reg)->extents.x1) \
- (reg)->extents.x1 = r->x1; \
- if(r->x2 > (reg)->extents.x2) \
- (reg)->extents.x2 = r->x2; \
- r++; \
-}
-
-/* Convert bitmap clip mask into clipping region.
- * First, goes through each line and makes boxes by noting the transitions
- * from 0 to 1 and 1 to 0.
- * Then it coalesces the current line with the previous if they have boxes
- * at the same X coordinates.
- */
-RegionPtr
-afbPixmapToRegion(pPix)
- PixmapPtr pPix;
-{
- register RegionPtr pReg;
- register PixelType *pw, w;
- register int ib;
- int width, h, base, rx1 = 0, crects;
- PixelType *pwLineEnd;
- int irectPrevStart, irectLineStart;
- register BoxPtr prectO, prectN;
- BoxPtr FirstRect, rects, prectLineStart;
- Bool fInBox, fSame;
- register PixelType mask0 = mfbGetmask(0);
- PixelType *pwLine;
- int nWidth;
-
- pReg = REGION_CREATE(pPix->drawable.pScreen, NULL, 1);
- if(!pReg)
- return NullRegion;
- FirstRect = REGION_BOXPTR(pReg);
- rects = FirstRect;
-
- pwLine = (PixelType *) pPix->devPrivate.ptr;
- nWidth = pPix->devKind / PGSZB;
-
- width = pPix->drawable.width;
- pReg->extents.x1 = width - 1;
- pReg->extents.x2 = 0;
- irectPrevStart = -1;
- for(h = 0; h < pPix->drawable.height; h++) {
- pw = pwLine;
- pwLine += nWidth;
- irectLineStart = rects - FirstRect;
- /* If the Screen left most bit of the word is set, we're starting in
- * a box */
- if(*pw & mask0) {
- fInBox = TRUE;
- rx1 = 0;
- }
- else
- fInBox = FALSE;
- /* Process all words which are fully in the pixmap */
- pwLineEnd = pw + (width >> PWSH);
- for (base = 0; pw < pwLineEnd; base += PPW) {
- w = *pw++;
- if (fInBox) {
- if (!~w)
- continue;
- } else {
- if (!w)
- continue;
- }
- for(ib = 0; ib < PPW; ib++) {
- /* If the Screen left most bit of the word is set, we're
- * starting a box */
- if(w & mask0) {
- if(!fInBox) {
- rx1 = base + ib;
- /* start new box */
- fInBox = TRUE;
- }
- } else {
- if(fInBox) {
- /* end box */
- ADDRECT(pReg, rects, FirstRect,
- rx1, h, base + ib, h + 1);
- fInBox = FALSE;
- }
- }
- /* Shift the word VISUALLY left one. */
- w = SCRLEFT(w, 1);
- }
- }
- if(width & PIM) {
- /* Process final partial word on line */
- w = *pw++;
- for(ib = 0; ib < (width & PIM); ib++) {
- /* If the Screen left most bit of the word is set, we're
- * starting a box */
- if(w & mask0) {
- if(!fInBox) {
- rx1 = base + ib;
- /* start new box */
- fInBox = TRUE;
- }
- } else {
- if(fInBox) {
- /* end box */
- ADDRECT(pReg, rects, FirstRect,
- rx1, h, base + ib, h + 1);
- fInBox = FALSE;
- }
- }
- /* Shift the word VISUALLY left one. */
- w = SCRLEFT(w, 1);
- }
- }
- /* If scanline ended with last bit set, end the box */
- if(fInBox) {
- ADDRECT(pReg, rects, FirstRect,
- rx1, h, base + (width & PIM), h + 1);
- }
- /* if all rectangles on this line have the same x-coords as
- * those on the previous line, then add 1 to all the previous y2s and
- * throw away all the rectangles from this line
- */
- fSame = FALSE;
- if(irectPrevStart != -1) {
- crects = irectLineStart - irectPrevStart;
- if(crects == ((rects - FirstRect) - irectLineStart)) {
- prectO = FirstRect + irectPrevStart;
- prectN = prectLineStart = FirstRect + irectLineStart;
- fSame = TRUE;
- while(prectO < prectLineStart) {
- if((prectO->x1 != prectN->x1) || (prectO->x2 != prectN->x2)) {
- fSame = FALSE;
- break;
- }
- prectO++;
- prectN++;
- }
- if (fSame) {
- prectO = FirstRect + irectPrevStart;
- while(prectO < prectLineStart) {
- prectO->y2 += 1;
- prectO++;
- }
- rects -= crects;
- pReg->data->numRects -= crects;
- }
- }
- }
- if(!fSame)
- irectPrevStart = irectLineStart;
- }
- if (!pReg->data->numRects)
- pReg->extents.x1 = pReg->extents.x2 = 0;
- else
- {
- pReg->extents.y1 = REGION_BOXPTR(pReg)->y1;
- pReg->extents.y2 = REGION_END(pReg)->y2;
- if (pReg->data->numRects == 1) {
- xfree(pReg->data);
- pReg->data = (RegDataPtr)NULL;
- }
- }
-#ifdef DEBUG
- if (!miValidRegion(pReg))
- FatalError("Assertion failed file %s, line %d: expr\n", __FILE__, __LINE__);
-#endif
- return(pReg);
-}
diff --git a/nx-X11/programs/Xserver/afb/afbcmap.c b/nx-X11/programs/Xserver/afb/afbcmap.c
deleted file mode 100644
index 69b5d7ca4..000000000
--- a/nx-X11/programs/Xserver/afb/afbcmap.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbcmap.c,v 3.0 1996/08/18 01:45:30 dawes Exp $ */
-/* $XConsortium: afbcmap.c,v 4.19 94/04/17 20:28:46 dpw Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or X Consortium
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and X Consortium make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "scrnintstr.h"
-#include "colormapst.h"
-#include "resource.h"
-#include "micmap.h"
-
-int
-afbListInstalledColormaps(pScreen, pmaps)
- ScreenPtr pScreen;
- Colormap *pmaps;
-{
- return miListInstalledColormaps(pScreen, pmaps);
-}
-
-
-void
-afbInstallColormap(pmap)
- ColormapPtr pmap;
-{
- miInstallColormap(pmap);
-}
-
-void
-afbUninstallColormap(pmap)
- ColormapPtr pmap;
-{
- miUninstallColormap(pmap);
-}
-
-void
-afbResolveColor(pred, pgreen, pblue, pVisual)
- unsigned short *pred, *pgreen, *pblue;
- register VisualPtr pVisual;
-{
- miResolveColor(pred, pgreen, pblue, pVisual);
-}
-
-Bool
-afbInitializeColormap(pmap)
- register ColormapPtr pmap;
-{
- return miInitializeColormap(pmap);
-}
-
-int
-afbExpandDirectColors(pmap, ndef, indefs, outdefs)
- ColormapPtr pmap;
- int ndef;
- xColorItem *indefs, *outdefs;
-{
- return miExpandDirectColors(pmap, ndef, indefs, outdefs);
-}
-
-Bool
-afbCreateDefColormap(pScreen)
- ScreenPtr pScreen;
-{
- return miCreateDefColormap(pScreen);
-}
-
-Bool
-afbSetVisualTypes(depth, visuals, bitsPerRGB)
- int depth;
- int visuals;
- int bitsPerRGB;
-{
- return miSetVisualTypes(depth, visuals, bitsPerRGB, -1);
-}
-
-/*
- * Given a list of formats for a screen, create a list
- * of visuals and depths for the screen which correspond to
- * the set which can be used with this version of afb.
- */
-
-Bool
-afbInitVisuals(visualp, depthp, nvisualp, ndepthp, rootDepthp, defaultVisp,
- sizes, bitsPerRGB)
- VisualPtr *visualp;
- DepthPtr *depthp;
- int *nvisualp, *ndepthp;
- int *rootDepthp;
- VisualID *defaultVisp;
- unsigned long sizes;
- int bitsPerRGB;
-{
- return miInitVisuals(visualp, depthp, nvisualp, ndepthp, rootDepthp,
- defaultVisp, sizes, bitsPerRGB, -1);
-}
diff --git a/nx-X11/programs/Xserver/afb/afbfillarc.c b/nx-X11/programs/Xserver/afb/afbfillarc.c
deleted file mode 100644
index 17b4902d9..000000000
--- a/nx-X11/programs/Xserver/afb/afbfillarc.c
+++ /dev/null
@@ -1,359 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbfillarc.c,v 3.1 1998/03/20 21:04:54 hohndel Exp $ */
-/************************************************************
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-********************************************************/
-
-/* $XConsortium: afbfillarc.c,v 5.14 94/04/17 20:28:20 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "afb.h"
-#include "maskbits.h"
-#include "mifillarc.h"
-#include "mi.h"
-
-static void
-afbFillEllipseSolid(pDraw, arc, rrops)
- DrawablePtr pDraw;
- xArc *arc;
- register unsigned char *rrops;
-{
- int x, y, e;
- int yk, xk, ym, xm, dx, dy, xorg, yorg;
- register int slw;
- miFillArcRec info;
- PixelType *addrlt, *addrlb;
- register PixelType *pdst;
- PixelType *addrl;
- register int n;
- register int d;
- int nlwidth;
- register int xpos;
- PixelType startmask, endmask;
- int nlmiddle;
- int depthDst;
- int sizeDst;
-
- afbGetPixelWidthSizeDepthAndPointer(pDraw, nlwidth, sizeDst, depthDst,
- addrlt);
- miFillArcSetup(arc, &info);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrlb = addrlt;
- addrlt += nlwidth * (yorg - y);
- addrlb += nlwidth * (yorg + y + dy);
- while (y) {
- addrlt += nlwidth;
- addrlb -= nlwidth;
- MIFILLARCSTEP(slw);
- if (!slw)
- continue;
- xpos = xorg - x;
- pdst = addrl = afbScanlineOffset(addrlt, (xpos >> PWSH));
- if (((xpos & PIM) + slw) < PPW) {
- maskpartialbits(xpos, slw, startmask);
- for (d = 0; d < depthDst; d++, pdst += sizeDst) { /* @@@ NEXT PLANE @@@ */
- switch (rrops[d]) {
- case RROP_BLACK:
- *pdst &= ~startmask;
- break;
- case RROP_WHITE:
- *pdst |= startmask;
- break;
- case RROP_INVERT:
- *pdst ^= startmask;
- break;
- case RROP_NOP:
- break;
- }
- }
- if (miFillArcLower(slw)) {
- pdst = afbScanlineOffset(addrlb, (xpos >> PWSH));
-
- for (d = 0; d < depthDst; d++, pdst += sizeDst) { /* @@@ NEXT PLANE @@@ */
- switch (rrops[d]) {
- case RROP_BLACK:
- *pdst &= ~startmask;
- break;
- case RROP_WHITE:
- *pdst |= startmask;
- break;
- case RROP_INVERT:
- *pdst ^= startmask;
- break;
- case RROP_NOP:
- break;
- }
- }
- }
- continue;
- }
- maskbits(xpos, slw, startmask, endmask, nlmiddle);
- for (d = 0; d < depthDst; d++, addrl += sizeDst) { /* @@@ NEXT PLANE @@@ */
- n = nlmiddle;
- pdst = addrl;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if (startmask)
- *pdst++ &= ~startmask;
- while (n--)
- *pdst++ = 0;
- if (endmask)
- *pdst &= ~endmask;
- break;
-
- case RROP_WHITE:
- if (startmask)
- *pdst++ |= startmask;
- while (n--)
- *pdst++ = ~0;
- if (endmask)
- *pdst |= endmask;
- break;
-
- case RROP_INVERT:
- if (startmask)
- *pdst++ ^= startmask;
- while (n--)
- *pdst++ ^= ~0;
- if (endmask)
- *pdst ^= endmask;
- break;
-
- case RROP_NOP:
- break;
- }
- }
- if (!miFillArcLower(slw))
- continue;
- addrl = afbScanlineOffset(addrlb, (xpos >> PWSH));
- for (d = 0; d < depthDst; d++, addrl += sizeDst) { /* @@@ NEXT PLANE @@@ */
- n = nlmiddle;
- pdst = addrl;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if (startmask)
- *pdst++ &= ~startmask;
- while (n--)
- *pdst++ = 0;
- if (endmask)
- *pdst &= ~endmask;
- break;
-
- case RROP_WHITE:
- if (startmask)
- *pdst++ |= startmask;
- while (n--)
- *pdst++ = ~0;
- if (endmask)
- *pdst |= endmask;
- break;
-
- case RROP_INVERT:
- if (startmask)
- *pdst++ ^= startmask;
- while (n--)
- *pdst++ ^= ~0;
- if (endmask)
- *pdst ^= endmask;
- break;
-
- case RROP_NOP:
- break;
- }
- }
- }
-}
-
-#define FILLSPAN(xl,xr,addr) \
- if (xr >= xl) { \
- width = xr - xl + 1; \
- addrl = afbScanlineOffset(addr, (xl >> PWSH)); \
- if (((xl & PIM) + width) < PPW) { \
- maskpartialbits(xl, width, startmask); \
- for (pdst = addrl, d = 0; d < depthDst; d++, pdst += sizeDst) { /* @@@ NEXT PLANE @@@ */ \
- switch (rrops[d]) { \
- case RROP_BLACK: \
- *pdst &= ~startmask; \
- break; \
- case RROP_WHITE: \
- *pdst |= startmask; \
- break; \
- case RROP_INVERT: \
- *pdst ^= startmask; \
- break; \
- case RROP_NOP: \
- break; \
- } \
- } \
- } else { \
- maskbits(xl, width, startmask, endmask, nlmiddle); \
- for (d = 0; d < depthDst; d++, addrl += sizeDst) { /* @@@ NEXT PLANE @@@ */ \
- n = nlmiddle; \
- pdst = addrl; \
- switch (rrops[d]) { \
- case RROP_BLACK: \
- if (startmask) \
- *pdst++ &= ~startmask; \
- while (n--) \
- *pdst++ = 0; \
- if (endmask) \
- *pdst &= ~endmask; \
- break; \
- case RROP_WHITE: \
- if (startmask) \
- *pdst++ |= startmask; \
- while (n--) \
- *pdst++ = ~0; \
- if (endmask) \
- *pdst |= endmask; \
- break; \
- case RROP_INVERT: \
- if (startmask) \
- *pdst++ ^= startmask; \
- while (n--) \
- *pdst++ ^= ~0; \
- if (endmask) \
- *pdst ^= endmask; \
- break; \
- case RROP_NOP: \
- break; \
- } \
- } \
- } \
- }
-
-#define FILLSLICESPANS(flip,addr) \
- if (!flip) { \
- FILLSPAN(xl, xr, addr); \
- } else { \
- xc = xorg - x; \
- FILLSPAN(xc, xr, addr); \
- xc += slw - 1; \
- FILLSPAN(xl, xc, addr); \
- }
-
-static void
-afbFillArcSliceSolidCopy(pDraw, pGC, arc, rrops)
- DrawablePtr pDraw;
- GCPtr pGC;
- xArc *arc;
- register unsigned char *rrops;
-{
- PixelType *addrl;
- register PixelType *pdst;
- register int n;
- register int d;
- int yk, xk, ym, xm, dx, dy, xorg, yorg, slw;
- register int x, y, e;
- miFillArcRec info;
- miArcSliceRec slice;
- int xl, xr, xc;
- PixelType *addrlt, *addrlb;
- int nlwidth;
- int width;
- PixelType startmask, endmask;
- int nlmiddle;
- int sizeDst;
- int depthDst;
-
- afbGetPixelWidthSizeDepthAndPointer(pDraw, nlwidth, sizeDst, depthDst,
- addrlt);
- miFillArcSetup(arc, &info);
- miFillArcSliceSetup(arc, &slice, pGC);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrlb = addrlt;
- addrlt = afbScanlineDeltaNoBankSwitch(addrlt, yorg - y, nlwidth);
- addrlb = afbScanlineDeltaNoBankSwitch(addrlb, yorg + y + dy, nlwidth);
- slice.edge1.x += pDraw->x;
- slice.edge2.x += pDraw->x;
- while (y > 0) {
- afbScanlineIncNoBankSwitch(addrlt, nlwidth);
- afbScanlineIncNoBankSwitch(addrlb, -nlwidth);
- MIFILLARCSTEP(slw);
- MIARCSLICESTEP(slice.edge1);
- MIARCSLICESTEP(slice.edge2);
- if (miFillSliceUpper(slice)) {
- MIARCSLICEUPPER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_top, addrlt);
- }
- if (miFillSliceLower(slice)) {
- MIARCSLICELOWER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_bot, addrlb);
- }
- }
-}
-
-void
-afbPolyFillArcSolid(pDraw, pGC, narcs, parcs)
- register DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- afbPrivGC *priv;
- register xArc *arc;
- register int i;
- BoxRec box;
- RegionPtr cclip;
- unsigned char *rrops;
-
- priv = (afbPrivGC *) pGC->devPrivates[afbGCPrivateIndex].ptr;
- rrops = priv->rrops;
- cclip = pGC->pCompositeClip;
- for (arc = parcs, i = narcs; --i >= 0; arc++) {
- if (miFillArcEmpty(arc))
- continue;
- if (miCanFillArc(arc)) {
- box.x1 = arc->x + pDraw->x;
- box.y1 = arc->y + pDraw->y;
- box.x2 = box.x1 + (int)arc->width + 1;
- box.y2 = box.y1 + (int)arc->height + 1;
- if (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) {
- if ((arc->angle2 >= FULLCIRCLE) ||
- (arc->angle2 <= -FULLCIRCLE))
- afbFillEllipseSolid(pDraw, arc, rrops);
- else
- afbFillArcSliceSolidCopy(pDraw, pGC, arc, rrops);
- continue;
- }
- }
- miPolyFillArc(pDraw, pGC, 1, arc);
- }
-}
diff --git a/nx-X11/programs/Xserver/afb/afbfillrct.c b/nx-X11/programs/Xserver/afb/afbfillrct.c
deleted file mode 100644
index 3646d78c6..000000000
--- a/nx-X11/programs/Xserver/afb/afbfillrct.c
+++ /dev/null
@@ -1,294 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbfillrct.c,v 3.2tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbfillrct.c,v 5.10 94/04/17 20:28:21 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "pixmapstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-
-#include "afb.h"
-#include "maskbits.h"
-
-#define MODEQ(a, b) ((a) %= (b))
-void afbPaintOddSize();
-
-/*
- filled rectangles.
- translate the rectangles, clip them, and call the
-helper function in the GC.
-*/
-
-#define NUM_STACK_RECTS 1024
-
-void
-afbPolyFillRect(pDrawable, pGC, nrectFill, prectInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nrectFill; /* number of rectangles to fill */
- xRectangle *prectInit; /* Pointer to first rectangle to fill */
-{
- xRectangle *prect;
- RegionPtr prgnClip;
- register BoxPtr pbox;
- register BoxPtr pboxClipped;
- BoxPtr pboxClippedBase;
- BoxPtr pextent;
- BoxRec stackRects[NUM_STACK_RECTS];
- int numRects;
- int n;
- int xorg, yorg;
- afbPrivGC *priv;
- unsigned char *rrops;
- unsigned char *rropsOS;
-
- priv = (afbPrivGC *)pGC->devPrivates[afbGCPrivateIndex].ptr;
- prgnClip = pGC->pCompositeClip;
- rrops = priv->rrops;
- rropsOS = priv->rropOS;
-
- prect = prectInit;
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- if (xorg || yorg) {
- prect = prectInit;
- n = nrectFill;
- Duff(n, prect->x += xorg; prect->y += yorg; prect++);
- }
-
- prect = prectInit;
-
- numRects = REGION_NUM_RECTS(prgnClip) * nrectFill;
- if (numRects > NUM_STACK_RECTS) {
- pboxClippedBase = (BoxPtr)ALLOCATE_LOCAL(numRects * sizeof(BoxRec));
- if (!pboxClippedBase)
- return;
- }
- else
- pboxClippedBase = stackRects;
-
- pboxClipped = pboxClippedBase;
-
- if (REGION_NUM_RECTS(prgnClip) == 1) {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_RECTS(prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--) {
- if ((pboxClipped->x1 = prect->x) < x1)
- pboxClipped->x1 = x1;
-
- if ((pboxClipped->y1 = prect->y) < y1)
- pboxClipped->y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- pboxClipped->x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- pboxClipped->y2 = by2;
-
- prect++;
- if ((pboxClipped->x1 < pboxClipped->x2) &&
- (pboxClipped->y1 < pboxClipped->y2)) {
- pboxClipped++;
- }
- }
- } else {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_EXTENTS(pGC->pScreen, prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--) {
- BoxRec box;
-
- if ((box.x1 = prect->x) < x1)
- box.x1 = x1;
-
- if ((box.y1 = prect->y) < y1)
- box.y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- box.x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- box.y2 = by2;
-
- prect++;
-
- if ((box.x1 >= box.x2) || (box.y1 >= box.y2))
- continue;
-
- n = REGION_NUM_RECTS (prgnClip);
- pbox = REGION_RECTS(prgnClip);
-
- /* clip the rectangle to each box in the clip region
- this is logically equivalent to calling Intersect()
- */
- while(n--) {
- pboxClipped->x1 = max(box.x1, pbox->x1);
- pboxClipped->y1 = max(box.y1, pbox->y1);
- pboxClipped->x2 = min(box.x2, pbox->x2);
- pboxClipped->y2 = min(box.y2, pbox->y2);
- pbox++;
-
- /* see if clipping left anything */
- if(pboxClipped->x1 < pboxClipped->x2 &&
- pboxClipped->y1 < pboxClipped->y2) {
- pboxClipped++;
- }
- }
- }
- }
- if (pboxClipped != pboxClippedBase) {
- switch (pGC->fillStyle) {
- case FillSolid:
- afbSolidFillArea(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, rrops);
- break;
- case FillTiled:
- switch (pGC->alu) {
- case GXcopy:
- if (pGC->pRotatedPixmap)
- afbTileAreaPPWCopy(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, GXcopy,
- pGC->pRotatedPixmap, pGC->planemask);
- else
- afbTileAreaCopy (pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, GXcopy,
- pGC->tile.pixmap,
- pGC->patOrg.x, pGC->patOrg.y,
- pGC->planemask);
- break;
-
- default:
- if (pGC->pRotatedPixmap)
- afbTileAreaPPWGeneral(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->alu,
- pGC->pRotatedPixmap,
- pGC->planemask);
- else
- afbTileAreaGeneral(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->alu,
- pGC->tile.pixmap,
- pGC->patOrg.x, pGC->patOrg.y,
- pGC->planemask);
- break;
- } /* switch (alu) */
- break;
-
- case FillStippled:
- if (pGC->pRotatedPixmap)
- afbStippleAreaPPW(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->pRotatedPixmap, rrops);
- else
- afbStippleArea(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->stipple,
- pGC->patOrg.x, pGC->patOrg.y, rrops);
- break;
-
- case FillOpaqueStippled:
- switch (pGC->alu) {
- case GXcopy:
- if (pGC->pRotatedPixmap)
- afbOpaqueStippleAreaPPWCopy(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, GXcopy,
- pGC->pRotatedPixmap,
- rropsOS, pGC->planemask);
- else
- afbOpaqueStippleAreaCopy(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, GXcopy,
- pGC->stipple,
- pGC->patOrg.x, pGC->patOrg.y, rropsOS,
- pGC->planemask);
- break;
-
- default:
- if (pGC->pRotatedPixmap)
- afbOpaqueStippleAreaPPWGeneral(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->alu,
- pGC->pRotatedPixmap,
- rropsOS,
- pGC->planemask);
- else
- afbOpaqueStippleAreaGeneral(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->alu,
- pGC->stipple,
- pGC->patOrg.x, pGC->patOrg.y,
- rropsOS,
- pGC->planemask);
- break;
- } /* switch (alu) */
- break;
- }
- }
- if (pboxClippedBase != stackRects)
- DEALLOCATE_LOCAL(pboxClippedBase);
-}
diff --git a/nx-X11/programs/Xserver/afb/afbfillsp.c b/nx-X11/programs/Xserver/afb/afbfillsp.c
deleted file mode 100644
index ffb633409..000000000
--- a/nx-X11/programs/Xserver/afb/afbfillsp.c
+++ /dev/null
@@ -1,1131 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbfillsp.c,v 3.3 2000/11/22 00:58:12 tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbfillsp.c,v 5.13 94/04/17 20:28:21 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "afb.h"
-
-#include "maskbits.h"
-
-#include "mergerop.h"
-
-#include "servermd.h"
-#include "mi.h"
-#include "mispans.h"
-
-/* scanline filling for monochrome frame buffer
- written by drewry, oct 1986
-
- these routines all clip. they assume that anything that has called
-them has already translated the points (i.e. pGC->miTranslate is
-non-zero, which is howit gets set in afbCreateGC().)
-
- the number of new scnalines created by clipping ==
-MaxRectsPerBand * nSpans.
-
-*/
-
-
-void
-afbSolidFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl;/* pointer to current longword in bitmap */
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int depthDst;
- int sizeDst;
- int d;
- unsigned char *rrops;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree) {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, nlwidth, sizeDst, depthDst,
- pBase);
- rrops = ((afbPrivGC *)(pGC->devPrivates[afbGCPrivateIndex].ptr))->rrops;
- while (n--) {
- addrlBase = afbScanline(pBase, ppt->x, ppt->y, nlwidth);
-
- for (d = 0; d < depthDst; d++, addrlBase += sizeDst) { /* @@@ NEXT PLANE @@@ */
- if (*pwidth) {
- addrl = addrlBase;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- /* all bits inside same longword */
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl &= ~startmask;
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ &= ~startmask;
- Duff (nlmiddle, *addrl++ = 0x0);
- if (endmask)
- *addrl &= ~endmask;
- }
- break;
-
- case RROP_WHITE:
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- /* all bits inside same longword */
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl |= startmask;
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ |= startmask;
- Duff (nlmiddle, *addrl++ = ~0);
- if (endmask)
- *addrl |= endmask;
- }
- break;
- case RROP_INVERT:
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- /* all bits inside same longword */
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl ^= startmask;
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ ^= startmask;
- Duff (nlmiddle, *addrl++ ^= ~0);
- if (endmask)
- *addrl ^= endmask;
- }
- break;
- case RROP_NOP:
- break;
- }
- }
- }
- pwidth++;
- ppt++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-void
-afbStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl;/* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pStipple;
- PixelType *psrc;
- int tileHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int d;
- int depthDst;
- int sizeDst;
- unsigned char *rrops;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree) {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, nlwidth, sizeDst, depthDst,
- pBase);
-
- pStipple = pGC->pRotatedPixmap;
- tileHeight = pStipple->drawable.height;
- psrc = (PixelType *)(pStipple->devPrivate.ptr);
-
- rrops = ((afbPrivGC *)(pGC->devPrivates[afbGCPrivateIndex].ptr))->rrops;
-
- while (n--) {
- src = psrc[ppt->y % tileHeight];
- addrlBase = afbScanline(pBase, ppt->x, ppt->y, nlwidth);
- for (d = 0; d < depthDst; d++, addrlBase += sizeDst) { /* @@@ NEXT PLANE @@@ */
- addrl = addrlBase;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- /* all bits inside same longword */
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl &= ~(src & startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ &= ~(src & startmask);
- Duff (nlmiddle, *addrl++ &= ~src);
- if (endmask)
- *addrl &= ~(src & endmask);
- }
- break;
- case RROP_WHITE:
- /* all bits inside same longword */
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl |= (src & startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ |= (src & startmask);
- Duff (nlmiddle, *addrl++ |= src);
- if (endmask)
- *addrl |= (src & endmask);
- }
- break;
- case RROP_INVERT:
- /* all bits inside same longword */
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl ^= (src & startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ ^= (src & startmask);
- Duff (nlmiddle, *addrl++ ^= src);
- if (endmask)
- *addrl ^= (src & endmask);
- }
- break;
-
- case RROP_NOP:
- break;
- }
- }
- pwidth++;
- ppt++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-void
-afbTileFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl; /* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pTile;
- PixelType *psrc;
- int tileHeight;
- int rop;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int sizeDst;
- int depthDst;
- int d;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree) {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, nlwidth, sizeDst, depthDst,
- pBase);
-
- pTile = pGC->pRotatedPixmap;
- tileHeight = pTile->drawable.height;
- psrc = (PixelType *)(pTile->devPrivate.ptr);
- rop = pGC->alu;
-
- switch(rop) {
- case GXcopy:
-#define DoMaskCopyRop(src,dst,mask) (((dst) & ~(mask)) | ((src) & (mask)))
- while (n--) {
- if (*pwidth) {
- addrlBase = afbScanline(pBase, ppt->x, ppt->y, nlwidth);
-
- for (d = 0; d < depthDst; d++, addrlBase += sizeDst) { /* @@@ NEXT PLANE @@@ */
- if (!(pGC->planemask & (1 << d)))
- continue;
-
- addrl = addrlBase;
- src = psrc[ppt->y % tileHeight + tileHeight * d];
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl = DoMaskCopyRop (src, *addrl, startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask) {
- *addrl = DoMaskCopyRop (src, *addrl, startmask);
- addrl++;
- }
- while (nlmiddle--) {
- *addrl = src;
- addrl++;
- }
- if (endmask)
- *addrl = DoMaskCopyRop (src, *addrl, endmask);
- }
- }
- }
- pwidth++;
- ppt++;
- }
- break;
-
- default:
- {
- register DeclareMergeRop ();
-
- InitializeMergeRop(rop,~0);
- while (n--) {
- if (*pwidth) {
- addrlBase = afbScanline(pBase, ppt->x, ppt->y, nlwidth);
- for (d = 0; d < depthDst; d++, addrlBase += sizeDst) { /* @@@ NEXT PLANE @@@ */
- if (!(pGC->planemask & (1 << d)))
- continue;
-
- addrl = addrlBase;
-
- src = psrc[ppt->y % tileHeight + tileHeight * d];
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl = DoMaskMergeRop (src, *addrl, startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask) {
- *addrl = DoMaskMergeRop (src, *addrl, startmask);
- addrl++;
- }
- while (nlmiddle--) {
- *addrl = DoMergeRop (src, *addrl);
- addrl++;
- }
- if (endmask)
- *addrl = DoMaskMergeRop (src, *addrl, endmask);
- }
- }
- }
- pwidth++;
- ppt++;
- }
- break;
- }
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-void
-afbOpaqueStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl; /* pointer to current longword in bitmap */
- register PixelType src = 0;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pTile;
- PixelType *psrc;
- int tileHeight;
- int rop;
- unsigned char *rropsOS;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int sizeDst;
- int depthDst;
- int d;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree) {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, nlwidth, sizeDst, depthDst,
- pBase);
-
- pTile = pGC->pRotatedPixmap;
- tileHeight = pTile->drawable.height;
- psrc = (PixelType *)(pTile->devPrivate.ptr);
- rop = pGC->alu;
- rropsOS = ((afbPrivGC *)(pGC->devPrivates[afbGCPrivateIndex].ptr))->rropOS;
-
- switch(rop) {
- case GXcopy:
- while (n--) {
- addrlBase = afbScanline(pBase, ppt->x, ppt->y, nlwidth);
- if (*pwidth) {
- for (d = 0; d < depthDst; d++, addrlBase += sizeDst) { /* @@@ NEXT PLANE @@@ */
- switch (rropsOS[d]) {
- case RROP_BLACK:
- src = 0;
- break;
- case RROP_WHITE:
- src = ~0;
- break;
- case RROP_INVERT:
- src = ~psrc[ppt->y % tileHeight];
- break;
- case RROP_COPY:
- src = psrc[ppt->y % tileHeight];
- break;
- case RROP_NOP:
- continue;
- }
-
- addrl = addrlBase;
-
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl = DoMaskCopyRop (src, *addrl, startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask) {
- *addrl = DoMaskCopyRop (src, *addrl, startmask);
- addrl++;
- }
- while (nlmiddle--) {
- *addrl = src;
- addrl++;
- }
- if (endmask)
- *addrl = DoMaskCopyRop (src, *addrl, endmask);
- }
- } /* for (d = ...) */
- }
-
- pwidth++;
- ppt++;
- }
- break;
-
- default:
- {
- register DeclareMergeRop ();
-
- InitializeMergeRop(rop,~0);
- while (n--) {
- addrlBase = afbScanline(pBase, ppt->x, ppt->y, nlwidth);
- if (*pwidth) {
- for (d = 0; d < depthDst; d++, addrlBase += sizeDst) { /* @@@ NEXT PLANE @@@ */
- switch (rropsOS[d]) {
- case RROP_BLACK:
- src = 0;
- break;
- case RROP_WHITE:
- src = ~0;
- break;
- case RROP_INVERT:
- src = ~psrc[ppt->y % tileHeight];
- break;
- case RROP_COPY:
- src = psrc[ppt->y % tileHeight];
- break;
- case RROP_NOP:
- continue;
- }
-
- addrl = addrlBase;
-
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl = DoMaskMergeRop (src, *addrl, startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask) {
- *addrl = DoMaskMergeRop (src, *addrl, startmask);
- addrl++;
- }
- while (nlmiddle--) {
- *addrl = DoMergeRop (src, *addrl);
- addrl++;
- }
- if (endmask)
- *addrl = DoMaskMergeRop (src, *addrl, endmask);
- }
- } /* for (d = ...) */
- }
- pwidth++;
- ppt++;
- } /* while (n) */
- break;
- }
- } /* switch (rop) */
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-/* Fill spans with tiles that aren't PPW bits wide */
-void
-afbUnnaturalTileFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- int iline; /* first line of tile to use */
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *pdst;/* pointer to current word in bitmap */
- register PixelType *psrc;/* pointer to current word in tile */
- register int nlMiddle;
- register int rop, nstart;
- PixelType startmask;
- PixmapPtr pTile; /* pointer to tile we want to fill with */
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- PixelType endmask, *psrcT;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int sizeDst;
- int sizeTile;
- int depthDst;
- register int d;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree) {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- pTile = pGC->tile.pixmap;
- tlwidth = pTile->devKind / PGSZB;
- rop = pGC->alu;
-
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, nlwidth, sizeDst, depthDst,
- pBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
- sizeTile = tlwidth * tileHeight;
-
- /* this replaces rotating the tile. Instead we just adjust the offset
- * at which we start grabbing bits from the tile.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and rem always stay within the tile bounds.
- */
- xSrc += (pGC->patOrg.x % tileWidth) - tileWidth;
- ySrc += (pGC->patOrg.y % tileHeight) - tileHeight;
-
- while (n--) {
- iline = (ppt->y - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- addrlBase = afbScanline(pBase, ppt->x, ppt->y, nlwidth);
-
- for (d = 0; d < depthDst; d++, psrcT += sizeTile, addrlBase += sizeDst) { /* @@@ NEXT PLANE @@@ */
- if (!(pGC->planemask & (1 << d)))
- continue;
-
- if (*pwidth) {
- x = ppt->x;
- pdst = addrlBase;
- width = *pwidth;
- while(width > 0) {
- psrc = psrcT;
- w = min(tileWidth, width);
- if((rem = (x - xSrc) % tileWidth) != 0) {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
- getandputrop((psrc+endinc), (rem&PIM), (x & PIM), w, pdst, rop);
- if((x & PIM) + w >= PPW)
- pdst++;
- } else if(((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- putbitsrop(*psrc, x & PIM, w, pdst, rop);
- } else {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if(startmask) {
- putbitsrop(*psrc, (x & PIM), nstart, pdst, rop);
- pdst++;
- if(srcStartOver)
- psrc++;
- }
-
- while(nlMiddle--) {
- getandputrop0(psrc, nstart, PPW, pdst, rop);
- pdst++;
- psrc++;
- }
- if(endmask) {
- getandputrop0(psrc, nstart, nend, pdst, rop);
- }
- }
- x += w;
- width -= w;
- }
- }
- }
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-/* Fill spans with stipples that aren't PPW bits wide */
-void
-afbUnnaturalStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- int iline; /* first line of tile to use */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *pdst; /* pointer to current word in bitmap */
- register PixelType *psrc; /* pointer to current word in tile */
- register int nlMiddle;
- register int rop, nstart;
- PixelType startmask;
- PixmapPtr pTile; /* pointer to tile we want to fill with */
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- PixelType endmask, *psrcT;
- int tlwidth, rem, tileWidth, endinc;
- int tileHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- unsigned char *rrops;
- register int d;
- int sizeDst;
- int depthDst;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree) {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- pTile = pGC->stipple;
- tlwidth = pTile->devKind / PGSZB;
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, nlwidth, sizeDst, depthDst,
- pBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
- rrops = ((afbPrivGC *)(pGC->devPrivates[afbGCPrivateIndex].ptr))->rrops;
-
- /* this replaces rotating the stipple. Instead, we just adjust the offset
- * at which we start grabbing bits from the stipple.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and rem always stay within the tile bounds.
- */
- xSrc += (pGC->patOrg.x % tileWidth) - tileWidth;
- ySrc += (pGC->patOrg.y % tileHeight) - tileHeight;
- while (n--) {
- iline = (ppt->y - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- addrlBase = afbScanline(pBase, ppt->x, ppt->y, nlwidth);
-
- for (d = 0; d < depthDst; d++, addrlBase += sizeDst) { /* @@@ NEXT PLANE @@@ */
- rop = rrops[d];
- if (rop == RROP_NOP)
- continue;
-
- pdst = addrlBase;
- x = ppt->x;
-
- if (*pwidth) {
- width = *pwidth;
- while(width > 0) {
- psrc = psrcT;
- w = min(tileWidth, width);
- if((rem = (x - xSrc) % tileWidth) != 0) {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
- getandputrrop((psrc + endinc), (rem & PIM), (x & PIM),
- w, pdst, rop)
- if((x & PIM) + w >= PPW)
- pdst++;
- } else if(((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- putbitsrrop(*psrc, x & PIM, w, pdst, rop);
- } else {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if(startmask) {
- putbitsrrop(*psrc, (x & PIM), nstart, pdst, rop);
- pdst++;
- if(srcStartOver)
- psrc++;
- }
-
- while(nlMiddle--) {
- getandputrrop0(psrc, nstart, PPW, pdst, rop);
- pdst++;
- psrc++;
- }
- if(endmask) {
- getandputrrop0(psrc, nstart, nend, pdst, rop);
- }
- }
- x += w;
- width -= w;
- }
- }
- }
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-/* Fill spans with OpaqueStipples that aren't PPW bits wide */
-void
-afbUnnaturalOpaqueStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- int iline; /* first line of tile to use */
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *pdst;/* pointer to current word in bitmap */
- register PixelType *psrc;/* pointer to current word in tile */
- register int nlMiddle;
- register int d;
- register PixelType tmpsrc = 0;
- register PixelType tmpdst;
- register int alu, nstart;
- register unsigned char *rropsOS;
- PixelType startmask;
- PixmapPtr pTile; /* pointer to tile we want to fill with */
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- PixelType endmask, *psrcT;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int sizeDst;
- int depthDst;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree) {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- pTile = pGC->stipple;
- tlwidth = pTile->devKind / PGSZB;
- alu = pGC->alu;
-
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, nlwidth, sizeDst, depthDst,
- pBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
- rropsOS = afbGetGCPrivate(pGC)->rropOS;
-
- /* this replaces rotating the tile. Instead we just adjust the offset
- * at which we start grabbing bits from the tile.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and rem always stay within the tile bounds.
- */
- xSrc += (pGC->patOrg.x % tileWidth) - tileWidth;
- ySrc += (pGC->patOrg.y % tileHeight) - tileHeight;
-
- while (n--) {
- iline = (ppt->y - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- addrlBase = afbScanline(pBase, ppt->x, ppt->y, nlwidth);
-
- for (d = 0; d < depthDst; d++, addrlBase += sizeDst) { /* @@@ NEXT PLANE @@@ */
- if (!(pGC->planemask & (1 << d)))
- continue;
-
- if (*pwidth) {
- x = ppt->x;
- pdst = addrlBase;
- width = *pwidth;
- while(width > 0) {
- psrc = psrcT;
- w = min(tileWidth, width);
- if((rem = (x - xSrc) % tileWidth) != 0) {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
-
- case RROP_COPY:
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
- break;
-
- case RROP_INVERT:
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
-
- if (alu != GXcopy) {
- getbits (pdst, (x & PIM), w, tmpdst);
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
-
- putbits (tmpsrc, (x & PIM), w, pdst);
- if((x & PIM) + w >= PPW)
- pdst++;
- } else if(((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- tmpsrc = *psrc;
- break;
- case RROP_INVERT:
- tmpsrc = ~*psrc;
- break;
- }
- if (alu != GXcopy) {
- getbits (pdst, (x & PIM), w, tmpdst);
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
- putbits (tmpsrc, (x & PIM), w, pdst);
- } else {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if(startmask) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- tmpsrc = *psrc;
- break;
- case RROP_INVERT:
- tmpsrc = ~*psrc;
- break;
- }
- if (alu != GXcopy) {
- getbits (pdst, (x & PIM), nstart, tmpdst);
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
- putbits (tmpsrc, (x & PIM), nstart, pdst);
- pdst++;
- if(srcStartOver)
- psrc++;
- }
-
- while(nlMiddle--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- getbits (psrc, nstart, PPW, tmpsrc);
- break;
- case RROP_INVERT:
- getbits (psrc, nstart, PPW, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
- if (alu != GXcopy) {
- tmpdst = *pdst;
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
- *pdst++ = tmpsrc;
- /*putbits (tmpsrc, 0, PPW, pdst);
- pdst++;*/
- psrc++;
- }
- if(endmask) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
-
- case RROP_COPY:
- getbits (psrc, nstart, nend, tmpsrc);
- break;
-
- case RROP_INVERT:
- getbits (psrc, nstart, nend, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
- if (alu != GXcopy) {
- tmpdst = *pdst;
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
- putbits (tmpsrc, 0, nend, pdst);
- }
- }
- x += w;
- width -= w;
- }
- }
- }
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
diff --git a/nx-X11/programs/Xserver/afb/afbfont.c b/nx-X11/programs/Xserver/afb/afbfont.c
deleted file mode 100644
index bf77825f1..000000000
--- a/nx-X11/programs/Xserver/afb/afbfont.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* $XFree86$ */
-/*
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-*/
-/* $XConsortium: afbfont.c,v 1.18 94/04/17 20:28:22 keith Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "afb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "scrnintstr.h"
-
-/*ARGSUSED*/
-Bool
-afbRealizeFont( pscr, pFont)
- ScreenPtr pscr;
- FontPtr pFont;
-{
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-afbUnrealizeFont( pscr, pFont)
- ScreenPtr pscr;
- FontPtr pFont;
-{
- return (TRUE);
-}
diff --git a/nx-X11/programs/Xserver/afb/afbgc.c b/nx-X11/programs/Xserver/afb/afbgc.c
deleted file mode 100644
index e9f4c52b7..000000000
--- a/nx-X11/programs/Xserver/afb/afbgc.c
+++ /dev/null
@@ -1,711 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbgc.c,v 3.2 1999/06/20 15:02:46 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbgc.c,v 5.35 94/04/17 20:28:23 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "afb.h"
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "region.h"
-
-#include "mistruct.h"
-#include "migc.h"
-
-#include "maskbits.h"
-
-static GCFuncs afbFuncs = {
- afbValidateGC,
- miChangeGC,
- miCopyGC,
- afbDestroyGC,
- miChangeClip,
- miDestroyClip,
- miCopyClip
-};
-
-static GCOps afbGCOps = {
- afbSolidFS,
- afbSetSpans,
- afbPutImage,
- afbCopyArea,
- miCopyPlane,
- afbPolyPoint,
- afbLineSS,
- afbSegmentSS,
- miPolyRectangle,
- afbZeroPolyArcSS,
- afbFillPolygonSolid,
- afbPolyFillRect,
- afbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- afbTEGlyphBlt,
- afbPolyGlyphBlt,
- afbPushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-
-Bool
-afbCreateGC(pGC)
- register GCPtr pGC;
-{
- afbPrivGC *pPriv;
-
- pGC->clientClip = NULL;
- pGC->clientClipType = CT_NONE;
-
- /* some of the output primitives aren't really necessary, since
- they will be filled in ValidateGC because of dix/CreateGC()
- setting all the change bits. Others are necessary because although
- they depend on being a monochrome frame buffer, they don't change
- */
-
- pGC->ops = &afbGCOps;
- pGC->funcs = &afbFuncs;
-
- /* afb wants to translate before scan convesion */
- pGC->miTranslate = 1;
-
- pPriv = (afbPrivGC *)(pGC->devPrivates[afbGCPrivateIndex].ptr);
- afbReduceRop(pGC->alu, pGC->fgPixel, pGC->planemask, pGC->depth,
- pPriv->rrops);
- afbReduceOpaqueStipple(pGC->fgPixel, pGC->bgPixel, pGC->planemask,
- pGC->depth, pPriv->rropOS);
-
- pGC->fExpose = TRUE;
- pGC->pRotatedPixmap = NullPixmap;
- pGC->freeCompClip = FALSE;
- return TRUE;
-}
-
-/* Clipping conventions
- if the drawable is a window
- CT_REGION ==> pCompositeClip really is the composite
- CT_other ==> pCompositeClip is the window clip region
- if the drawable is a pixmap
- CT_REGION ==> pCompositeClip is the translated client region
- clipped to the pixmap boundary
- CT_other ==> pCompositeClip is the pixmap bounding box
-*/
-
-/*ARGSUSED*/
-void
-afbValidateGC(pGC, changes, pDrawable)
- register GCPtr pGC;
- unsigned long changes;
- DrawablePtr pDrawable;
-{
- register afbPrivGCPtr devPriv;
- int mask; /* stateChanges */
- int index; /* used for stepping through bitfields */
- int xrot, yrot; /* rotations for tile and stipple pattern */
- /* flags for changing the proc vector
- and updating things in devPriv
- */
- int new_rotate, new_rrop, new_line, new_text, new_fill;
- DDXPointRec oldOrg; /* origin of thing GC was last used with */
-
- oldOrg = pGC->lastWinOrg;
-
- pGC->lastWinOrg.x = pDrawable->x;
- pGC->lastWinOrg.y = pDrawable->y;
-
- /* we need to re-rotate the tile if the previous window/pixmap
- origin (oldOrg) differs from the new window/pixmap origin
- (pGC->lastWinOrg)
- */
- new_rotate = (oldOrg.x != pGC->lastWinOrg.x) ||
- (oldOrg.y != pGC->lastWinOrg.y);
-
-
- devPriv = ((afbPrivGCPtr)(pGC->devPrivates[afbGCPrivateIndex].ptr));
-
-
- /*
- if the client clip is different or moved OR
- the subwindowMode has changed OR
- the window's clip has changed since the last validation
- we need to recompute the composite clip
- */
- if ((changes & (GCClipXOrigin|GCClipYOrigin|GCClipMask|GCSubwindowMode)) ||
- (pDrawable->serialNumber != (pGC->serialNumber & DRAWABLE_SERIAL_BITS)))
- afbComputeCompositeClip(pGC, pDrawable);
-
- new_rrop = FALSE;
- new_line = FALSE;
- new_text = FALSE;
- new_fill = FALSE;
-
- mask = changes;
- while (mask) {
- index = lowbit(mask);
- mask &= ~index;
-
- /* this switch acculmulates a list of which procedures
- might have to change due to changes in the GC. in
- some cases (e.g. changing one 16 bit tile for another)
- we might not really need a change, but the code is
- being paranoid.
- this sort of batching wins if, for example, the alu
- and the font have been changed, or any other pair
- of items that both change the same thing.
- */
- switch (index) {
- case GCPlaneMask:
- case GCFunction:
- case GCForeground:
- new_rrop = TRUE;
- break;
- case GCBackground:
- new_rrop = TRUE; /* for opaque stipples */
- break;
- case GCLineStyle:
- case GCLineWidth:
- case GCJoinStyle:
- new_line = TRUE;
- break;
- case GCCapStyle:
- break;
- case GCFillStyle:
- new_fill = TRUE;
- break;
- case GCFillRule:
- break;
- case GCTile:
- if(pGC->tileIsPixel)
- break;
- new_rotate = TRUE;
- new_fill = TRUE;
- break;
-
- case GCStipple:
- if(pGC->stipple == (PixmapPtr)NULL)
- break;
- new_rotate = TRUE;
- new_fill = TRUE;
- break;
-
- case GCTileStipXOrigin:
- new_rotate = TRUE;
- break;
-
- case GCTileStipYOrigin:
- new_rotate = TRUE;
- break;
-
- case GCFont:
- new_text = TRUE;
- break;
- case GCSubwindowMode:
- break;
- case GCGraphicsExposures:
- break;
- case GCClipXOrigin:
- break;
- case GCClipYOrigin:
- break;
- case GCClipMask:
- break;
- case GCDashOffset:
- break;
- case GCDashList:
- break;
- case GCArcMode:
- break;
- default:
- break;
- }
- }
-
- /* deal with the changes we've collected .
- new_rrop must be done first because subsequent things
- depend on it.
- */
-
- if(new_rotate || new_fill) {
- Bool new_pix = FALSE;
-
- /* figure out how much to rotate */
- xrot = pGC->patOrg.x;
- yrot = pGC->patOrg.y;
- xrot += pDrawable->x;
- yrot += pDrawable->y;
-
- switch (pGC->fillStyle) {
- case FillTiled:
- /* copy current tile and stipple */
- if (!pGC->tileIsPixel &&
- (pGC->tile.pixmap->drawable.width <= PPW) &&
- !(pGC->tile.pixmap->drawable.width &
- (pGC->tile.pixmap->drawable.width - 1))) {
- afbCopyRotatePixmap(pGC->tile.pixmap, &pGC->pRotatedPixmap,
- xrot, yrot);
- new_pix = TRUE;
- }
- break;
- case FillStippled:
- case FillOpaqueStippled:
- if (pGC->stipple && (pGC->stipple->drawable.width <= PPW) &&
- !(pGC->stipple->drawable.width &
- (pGC->stipple->drawable.width - 1))) {
- afbCopyRotatePixmap(pGC->stipple, &pGC->pRotatedPixmap,
- xrot, yrot);
- new_pix = TRUE;
- }
- }
- /* destroy any previously rotated tile or stipple */
- if (!new_pix && pGC->pRotatedPixmap) {
- (*pDrawable->pScreen->DestroyPixmap)(pGC->pRotatedPixmap);
- pGC->pRotatedPixmap = (PixmapPtr)NULL;
- }
- }
-
- /*
- * duck out here when the GC is unchanged
- */
-
- if (!changes)
- return;
-
- if (new_rrop || new_fill) {
- afbReduceRop(pGC->alu, pGC->fgPixel, pGC->planemask, pDrawable->depth,
- devPriv->rrops);
- afbReduceOpaqueStipple(pGC->fgPixel, pGC->bgPixel, pGC->planemask,
- pGC->depth, devPriv->rropOS);
- new_fill = TRUE;
- }
-
- if (new_line || new_fill || new_text) {
- if (!pGC->ops->devPrivate.val) {
- pGC->ops = miCreateGCOps(pGC->ops);
- pGC->ops->devPrivate.val = 1;
- }
- }
-
- if (new_line || new_fill) {
- if (pGC->lineWidth == 0) {
- if (pGC->lineStyle == LineSolid && pGC->fillStyle == FillSolid)
- pGC->ops->PolyArc = afbZeroPolyArcSS;
- else
- pGC->ops->PolyArc = miZeroPolyArc;
- } else
- pGC->ops->PolyArc = miPolyArc;
- if (pGC->lineStyle == LineSolid) {
- if(pGC->lineWidth == 0) {
- if (pGC->fillStyle == FillSolid) {
- pGC->ops->PolySegment = afbSegmentSS;
- pGC->ops->Polylines = afbLineSS;
- }
- else
- {
- pGC->ops->PolySegment = miPolySegment;
- pGC->ops->Polylines = miZeroLine;
- }
- } else {
- pGC->ops->PolySegment = miPolySegment;
- pGC->ops->Polylines = miWideLine;
- }
- } else {
- if(pGC->lineWidth == 0 && pGC->fillStyle == FillSolid) {
- pGC->ops->PolySegment = afbSegmentSD;
- pGC->ops->Polylines = afbLineSD;
- } else {
- pGC->ops->PolySegment = miPolySegment;
- pGC->ops->Polylines = miWideDash;
- }
- }
- }
-
- if (new_text || new_fill) {
- if ((pGC->font) &&
- (FONTMAXBOUNDS(pGC->font,rightSideBearing) -
- FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 ||
- FONTMINBOUNDS(pGC->font,characterWidth) < 0)) {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- pGC->ops->ImageGlyphBlt = miImageGlyphBlt;
- } else {
- /* special case ImageGlyphBlt for terminal emulator fonts */
- if ((pGC->font) &&
- TERMINALFONT(pGC->font)) {
- pGC->ops->ImageGlyphBlt = afbTEGlyphBlt;
- } else {
- pGC->ops->ImageGlyphBlt = afbImageGlyphBlt;
- }
-
- /* now do PolyGlyphBlt */
- if (pGC->fillStyle == FillSolid) {
- pGC->ops->PolyGlyphBlt = afbPolyGlyphBlt;
- } else {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- }
- }
- }
-
- if (new_fill) {
- /* install a suitable fillspans and pushpixels */
- pGC->ops->PushPixels = afbPushPixels;
- pGC->ops->FillPolygon = miFillPolygon;
- pGC->ops->PolyFillArc = miPolyFillArc;
-
- switch (pGC->fillStyle) {
- case FillSolid:
- pGC->ops->FillSpans = afbSolidFS;
- pGC->ops->FillPolygon = afbFillPolygonSolid;
- pGC->ops->PolyFillArc = afbPolyFillArcSolid;
- break;
- case FillTiled:
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = afbTileFS;
- else
- pGC->ops->FillSpans = afbUnnaturalTileFS;
- break;
- case FillOpaqueStippled:
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = afbOpaqueStippleFS;
- else
- pGC->ops->FillSpans = afbUnnaturalOpaqueStippleFS;
- break;
-
- case FillStippled:
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = afbStippleFS;
- else
- pGC->ops->FillSpans = afbUnnaturalStippleFS;
- break;
- }
- } /* end of new_fill */
-}
-
-void
-afbDestroyGC(pGC)
- GCPtr pGC;
-{
- if (pGC->pRotatedPixmap)
- (*pGC->pScreen->DestroyPixmap)(pGC->pRotatedPixmap);
- if (pGC->freeCompClip)
- REGION_DESTROY(pGC->pScreen, pGC->pCompositeClip);
- miDestroyGCOps(pGC->ops);
-}
-
-/* table to map alu(src, dst) to alu(~src, dst) */
-int afbInverseAlu[16] = {
- GXclear,
- GXandInverted,
- GXnor,
- GXcopyInverted,
- GXand,
- GXnoop,
- GXequiv,
- GXorInverted,
- GXandReverse,
- GXxor,
- GXinvert,
- GXnand,
- GXcopy,
- GXor,
- GXorReverse,
- GXset
-};
-
-void
-afbReduceOpaqueStipple(fg, bg, planemask, depth, rop)
-register PixelType fg;
-register PixelType bg;
-register unsigned long planemask;
-int depth;
-register unsigned char *rop;
-{
- register int d;
- register Pixel mask = 1;
-
- bg ^= fg;
-
- for (d = 0; d < depth; d++, mask <<= 1) {
- if (!(planemask & mask))
- rop[d] = RROP_NOP;
- else if (!(bg & mask)) {
- /* Both fg and bg have a 0 or 1 in this plane */
- if (fg & mask)
- rop[d] = RROP_WHITE;
- else
- rop[d] = RROP_BLACK;
- } else {
- /* Both fg and bg have different bits on this plane */
- if (fg & mask)
- rop[d] = RROP_COPY;
- else
- rop[d] = RROP_INVERT;
- }
- }
-}
-
-void
-afbReduceRop(alu, src, planemask, depth, rop)
- register int alu;
- register Pixel src;
- register unsigned long planemask;
- int depth;
- register unsigned char *rop;
-{
- register int d;
- register Pixel mask = 1;
-
- for (d = 0; d < depth; d++, mask <<= 1) {
- if (!(planemask & mask))
- rop[d] = RROP_NOP;
- else if ((src & mask) == 0) /* src is black */
- switch (alu) {
- case GXclear:
- rop[d] = RROP_BLACK;
- break;
- case GXand:
- rop[d] = RROP_BLACK;
- break;
- case GXandReverse:
- rop[d] = RROP_BLACK;
- break;
- case GXcopy:
- rop[d] = RROP_BLACK;
- break;
- case GXandInverted:
- rop[d] = RROP_NOP;
- break;
- case GXnoop:
- rop[d] = RROP_NOP;
- break;
- case GXxor:
- rop[d] = RROP_NOP;
- break;
- case GXor:
- rop[d] = RROP_NOP;
- break;
- case GXnor:
- rop[d] = RROP_INVERT;
- break;
- case GXequiv:
- rop[d] = RROP_INVERT;
- break;
- case GXinvert:
- rop[d] = RROP_INVERT;
- break;
- case GXorReverse:
- rop[d] = RROP_INVERT;
- break;
- case GXcopyInverted:
- rop[d] = RROP_WHITE;
- break;
- case GXorInverted:
- rop[d] = RROP_WHITE;
- break;
- case GXnand:
- rop[d] = RROP_WHITE;
- break;
- case GXset:
- rop[d] = RROP_WHITE;
- break;
- }
- else /* src is white */
- switch (alu) {
- case GXclear:
- rop[d] = RROP_BLACK;
- break;
- case GXand:
- rop[d] = RROP_NOP;
- break;
- case GXandReverse:
- rop[d] = RROP_INVERT;
- break;
- case GXcopy:
- rop[d] = RROP_WHITE;
- break;
- case GXandInverted:
- rop[d] = RROP_BLACK;
- break;
- case GXnoop:
- rop[d] = RROP_NOP;
- break;
- case GXxor:
- rop[d] = RROP_INVERT;
- break;
- case GXor:
- rop[d] = RROP_WHITE;
- break;
- case GXnor:
- rop[d] = RROP_BLACK;
- break;
- case GXequiv:
- rop[d] = RROP_NOP;
- break;
- case GXinvert:
- rop[d] = RROP_INVERT;
- break;
- case GXorReverse:
- rop[d] = RROP_WHITE;
- break;
- case GXcopyInverted:
- rop[d] = RROP_BLACK;
- break;
- case GXorInverted:
- rop[d] = RROP_NOP;
- break;
- case GXnand:
- rop[d] = RROP_INVERT;
- break;
- case GXset:
- rop[d] = RROP_WHITE;
- break;
- }
- }
-}
-
-void
-afbComputeCompositeClip(pGC, pDrawable)
- GCPtr pGC;
- DrawablePtr pDrawable;
-{
- if (pDrawable->type == DRAWABLE_WINDOW) {
- WindowPtr pWin = (WindowPtr) pDrawable;
- RegionPtr pregWin;
- Bool freeTmpClip, freeCompClip;
-
- if (pGC->subWindowMode == IncludeInferiors) {
- pregWin = NotClippedByChildren(pWin);
- freeTmpClip = TRUE;
- } else {
- pregWin = &pWin->clipList;
- freeTmpClip = FALSE;
- }
- freeCompClip = pGC->freeCompClip;
-
- /*
- * if there is no client clip, we can get by with just keeping the
- * pointer we got, and remembering whether or not should destroy (or
- * maybe re-use) it later. this way, we avoid unnecessary copying of
- * regions. (this wins especially if many clients clip by children
- * and have no client clip.)
- */
- if (pGC->clientClipType == CT_NONE) {
- if (freeCompClip)
- REGION_DESTROY(pGC->pScreen, pGC->pCompositeClip);
- pGC->pCompositeClip = pregWin;
- pGC->freeCompClip = freeTmpClip;
- } else {
- /*
- * we need one 'real' region to put into the composite clip. if
- * pregWin the current composite clip are real, we can get rid of
- * one. if pregWin is real and the current composite clip isn't,
- * use pregWin for the composite clip. if the current composite
- * clip is real and pregWin isn't, use the current composite
- * clip. if neither is real, create a new region.
- */
-
- REGION_TRANSLATE(pGC->pScreen, pGC->clientClip,
- pDrawable->x + pGC->clipOrg.x,
- pDrawable->y + pGC->clipOrg.y);
-
- if (freeCompClip) {
- REGION_INTERSECT(pGC->pScreen, pGC->pCompositeClip, pregWin,
- pGC->clientClip);
- if (freeTmpClip)
- REGION_DESTROY(pGC->pScreen, pregWin);
- } else if (freeTmpClip) {
- REGION_INTERSECT(pGC->pScreen, pregWin, pregWin, pGC->clientClip);
- pGC->pCompositeClip = pregWin;
- } else {
- pGC->pCompositeClip = REGION_CREATE(pGC->pScreen, NullBox, 0);
- REGION_INTERSECT(pGC->pScreen, pGC->pCompositeClip,
- pregWin, pGC->clientClip);
- }
- pGC->freeCompClip = TRUE;
- REGION_TRANSLATE(pGC->pScreen, pGC->clientClip,
- -(pDrawable->x + pGC->clipOrg.x),
- -(pDrawable->y + pGC->clipOrg.y));
- }
- } /* end of composite clip for a window */
- else {
- BoxRec pixbounds;
-
- /* XXX should we translate by drawable.x/y here ? */
- pixbounds.x1 = 0;
- pixbounds.y1 = 0;
- pixbounds.x2 = pDrawable->width;
- pixbounds.y2 = pDrawable->height;
-
- if (pGC->freeCompClip) {
- REGION_RESET(pGC->pScreen, pGC->pCompositeClip, &pixbounds);
- } else {
- pGC->freeCompClip = TRUE;
- pGC->pCompositeClip = REGION_CREATE(pGC->pScreen, &pixbounds, 1);
- }
-
- if (pGC->clientClipType == CT_REGION) {
- REGION_TRANSLATE(pGC->pScreen, pGC->pCompositeClip, -pGC->clipOrg.x,
- -pGC->clipOrg.y);
- REGION_INTERSECT(pGC->pScreen, pGC->pCompositeClip,
- pGC->pCompositeClip, pGC->clientClip);
- REGION_TRANSLATE(pGC->pScreen, pGC->pCompositeClip, pGC->clipOrg.x,
- pGC->clipOrg.y);
- }
- } /* end of composite clip for pixmap */
-} /* end afbComputeCompositeClip */
diff --git a/nx-X11/programs/Xserver/afb/afbgetsp.c b/nx-X11/programs/Xserver/afb/afbgetsp.c
deleted file mode 100644
index 3cc2e2f6e..000000000
--- a/nx-X11/programs/Xserver/afb/afbgetsp.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbgetsp.c,v 3.0 1996/08/18 01:45:37 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbgetsp.c,v 5.10 94/04/17 20:28:24 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "misc.h"
-#include "region.h"
-#include "gc.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "afb.h"
-#include "maskbits.h"
-
-#include "servermd.h"
-
-/* GetSpans -- for each span, gets bits from drawable starting at ppt[i]
- * and continuing for pwidth[i] bits
- * Each scanline returned will be server scanline padded, i.e., it will come
- * out to an integral number of words.
- */
-/*ARGSUSED*/
-void
-afbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pchardstStart)
- DrawablePtr pDrawable; /* drawable from which to get bits */
- int wMax; /* largest value of all *pwidths */
- register DDXPointPtr ppt; /* points to start copying from */
- int *pwidth; /* list of number of bits to copy */
- int nspans; /* number of scanlines to copy */
- char *pchardstStart; /* where to put the bits */
-{
- PixelType *pdstStart = (PixelType *)pchardstStart;
- register PixelType *pdst; /* where to put the bits */
- register PixelType *psrc; /* where to get the bits */
- register PixelType tmpSrc; /* scratch buffer for bits */
- PixelType *psrcBase; /* start of src bitmap */
- int widthSrc; /* width of pixmap in bytes */
- int sizeSrc;
- int depthSrc;
- register DDXPointPtr pptLast; /* one past last point to get */
- int xEnd; /* last pixel to copy from */
- register int nstart;
- register int d;
- int nend = 0;
- int srcStartOver;
- PixelType startmask, endmask;
- unsigned int srcBit;
- int nlMiddle, nl;
- int w;
-
- pptLast = ppt + nspans;
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, widthSrc, sizeSrc, depthSrc,
- psrcBase);
- pdst = pdstStart;
-
- while(ppt < pptLast) {
- /* XXX should this really be << PWSH, or * 8, or * PGSZB? */
- xEnd = min(ppt->x + *pwidth, widthSrc << PWSH);
- pwidth++;
- for (d = 0; d < depthSrc; d++) {
- psrc = afbScanline(psrcBase, ppt->x, ppt->y, widthSrc);
- psrcBase += sizeSrc; /* @@@ NEXT PLANE @@@ */
- w = xEnd - ppt->x;
- srcBit = ppt->x & PIM;
-
- if (srcBit + w <= PPW)
- {
- getandputbits0(psrc, srcBit, w, pdst);
- pdst++;
- }
- else
- {
-
- maskbits(ppt->x, w, startmask, endmask, nlMiddle);
- if (startmask)
- nstart = PPW - srcBit;
- else
- nstart = 0;
- if (endmask)
- nend = xEnd & PIM;
- srcStartOver = srcBit + nstart > PLST;
- if (startmask)
- {
- getandputbits0(psrc, srcBit, nstart, pdst);
- if(srcStartOver)
- psrc++;
- }
- nl = nlMiddle;
-#ifdef FASTPUTBITS
- Duff(nl, putbits(*psrc, nstart, PPW, pdst); psrc++; pdst++;);
-#else
- while (nl--)
- {
- tmpSrc = *psrc;
- putbits(tmpSrc, nstart, PPW, pdst);
- psrc++;
- pdst++;
- }
-#endif
- if (endmask)
- {
- putbits(*psrc, nstart, nend, pdst);
- if(nstart + nend > PPW)
- pdst++;
- }
- if (startmask || endmask)
- pdst++;
- }
- }
- ppt++;
- }
-}
diff --git a/nx-X11/programs/Xserver/afb/afbhrzvert.c b/nx-X11/programs/Xserver/afb/afbhrzvert.c
deleted file mode 100644
index d7ddce1a1..000000000
--- a/nx-X11/programs/Xserver/afb/afbhrzvert.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbhrzvert.c,v 3.0 1996/08/18 01:45:38 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbhrzvert.c,v 1.15 94/04/17 20:28:24 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gc.h"
-#include "window.h"
-#include "pixmap.h"
-#include "region.h"
-
-#include "afb.h"
-#include "maskbits.h"
-
-/* horizontal solid line
- abs(len) > 1
-*/
-void
-afbHorzS(pbase, nlwidth, sizeDst, depthDst, x1, y1, len, rrops)
-PixelType *pbase; /* pointer to base of bitmap */
-register int nlwidth; /* width in longwords of bitmap */
-int sizeDst;
-int depthDst;
-int x1; /* initial point */
-int y1;
-int len; /* length of line */
-register unsigned char *rrops;
-{
- register PixelType *addrl;
- register PixelType startmask;
- register PixelType endmask;
- register int nlmiddle;
- register int d;
- int saveNLmiddle;
-
- /* force the line to go left to right
- but don't draw the last point
- */
- if (len < 0) {
- x1 += len;
- x1 += 1;
- len = -len;
- }
-
- /* all bits inside same longword */
- if ( ((x1 & PIM) + len) < PPW) {
- maskpartialbits(x1, len, startmask);
-
- for (d = 0; d < depthDst; d++) {
- addrl = afbScanline(pbase, x1, y1, nlwidth);
- pbase += sizeDst; /* @@@ NEXT PLANE @@@ */
-
- switch (rrops[d]) {
- case RROP_BLACK:
- *addrl &= ~startmask;
- break;
- case RROP_WHITE:
- *addrl |= startmask;
- break;
- case RROP_INVERT:
- *addrl ^= startmask;
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
- } else {
- maskbits(x1, len, startmask, endmask, nlmiddle);
- saveNLmiddle = nlmiddle;
-
- for (d = 0; d < depthDst; d++) {
- addrl = afbScanline(pbase, x1, y1, nlwidth);
- pbase += sizeDst; /* @@@ NEXT PLANE @@@ */
- nlmiddle = saveNLmiddle;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if (startmask)
- *addrl++ &= ~startmask;
- Duff (nlmiddle, *addrl++ = 0x0);
- if (endmask)
- *addrl &= ~endmask;
- break;
-
- case RROP_WHITE:
- if (startmask)
- *addrl++ |= startmask;
- Duff (nlmiddle, *addrl++ = ~0);
- if (endmask)
- *addrl |= endmask;
- break;
-
- case RROP_INVERT:
- if (startmask)
- *addrl++ ^= startmask;
- Duff (nlmiddle, *addrl++ ^= ~0);
- if (endmask)
- *addrl ^= endmask;
- break;
-
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ... ) */
- }
-}
-
-/* vertical solid line
- this uses do loops because pcc (Ultrix 1.2, bsd 4.2) generates
- better code. sigh. we know that len will never be 0 or 1, so
- it's OK to use it.
-*/
-void
-afbVertS(pbase, nlwidth, sizeDst, depthDst, x1, y1, len, rrops)
-PixelType *pbase; /* pointer to base of bitmap */
-register int nlwidth; /* width in longwords of bitmap */
-int sizeDst;
-int depthDst;
-int x1, y1; /* initial point */
-register int len; /* length of line */
-unsigned char *rrops;
-{
- register PixelType *addrl;
- register PixelType bitmask;
- int saveLen;
- int d;
-
- if (len < 0) {
- nlwidth = -nlwidth;
- len = -len;
- }
-
- saveLen = len;
-
- for (d = 0; d < depthDst; d++) {
- addrl = afbScanline(pbase, x1, y1, nlwidth);
- pbase += sizeDst; /* @@@ NEXT PLANE @@@ */
- len = saveLen;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- bitmask = mfbGetrmask(x1 & PIM);
- Duff(len, *addrl &= bitmask; afbScanlineInc(addrl, nlwidth) );
- break;
-
- case RROP_WHITE:
- bitmask = mfbGetmask(x1 & PIM);
- Duff(len, *addrl |= bitmask; afbScanlineInc(addrl, nlwidth) );
- break;
-
- case RROP_INVERT:
- bitmask = mfbGetmask(x1 & PIM);
- Duff(len, *addrl ^= bitmask; afbScanlineInc(addrl, nlwidth) );
- break;
-
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
-}
diff --git a/nx-X11/programs/Xserver/afb/afbimage.c b/nx-X11/programs/Xserver/afb/afbimage.c
deleted file mode 100644
index 353fd6f89..000000000
--- a/nx-X11/programs/Xserver/afb/afbimage.c
+++ /dev/null
@@ -1,301 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbimage.c,v 3.2 1998/03/20 21:04:55 hohndel Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "gcstruct.h"
-#include "afb.h"
-#include "maskbits.h"
-#include "servermd.h"
-#include "mfb.h"
-
-void
-afbPutImage(pDraw, pGC, depth, x, y, width, height, leftPad, format, pImage)
- DrawablePtr pDraw;
- GCPtr pGC;
- int depth, x, y, width, height;
- int leftPad;
- int format;
- char *pImage;
-{
- PixmapPtr pPixmap;
-
- if ((width == 0) || (height == 0))
- return;
-
- if (format != ZPixmap || depth == 1 || pDraw->depth == 1) {
- pPixmap = GetScratchPixmapHeader(pDraw->pScreen, width+leftPad, height,
- depth, depth,
- BitmapBytePad(width+leftPad),
- (pointer)pImage);
- if (!pPixmap)
- return;
-
- pGC->fExpose = FALSE;
- if (format == XYBitmap)
- (void)(*pGC->ops->CopyPlane)((DrawablePtr)pPixmap, pDraw, pGC, leftPad,
- 0, width, height, x, y, 1);
- else {
-#if 0
- /* XXX: bit plane order wronge ! */
- pPixmap->drawable.depth = 1;
- pPixmap->drawable.bitsPerPixel = 1;
-
- switch (pGC->alu) {
- case GXcopy:
- doBitBlt = afbDoBitbltCopy;
- break;
- case GXxor:
- doBitBlt = afbDoBitbltXor;
- break;
- case GXcopyInverted:
- doBitBlt = afbDoBitbltCopyInverted;
- break;
- case GXor:
- doBitBlt = afbDoBitbltOr;
- break;
- default:
- doBitBlt = afbDoBitbltGeneral;
- break;
- }
-
- for (plane = (1L << (pPixmap->drawable.depth - 1)); plane;
- plane >>= 1) {
- (void)afbBitBlt((DrawablePtr)pPixmap, pDraw, pGC, leftPad, 0,
- width, height, x, y, doBitBlt, plane);
- /* pDraw->devKind += sizeDst; */
- }
-#else
- (void)(*pGC->ops->CopyArea)((DrawablePtr)pPixmap, pDraw, pGC, leftPad,
- 0, width, height, x, y);
-#endif
- }
-
- pGC->fExpose = TRUE;
- FreeScratchPixmapHeader(pPixmap);
- } else {
- /* Chunky to planar conversion required */
-
- PixmapPtr pPixmap;
- ScreenPtr pScreen = pDraw->pScreen;
- int widthSrc;
- int start_srcshift;
- register int b;
- register int dstshift;
- register int shift_step;
- register PixelType dst;
- register PixelType srcbits;
- register PixelType *pdst;
- register PixelType *psrc;
- int start_bit;
- register int nl;
- register int h;
- register int d;
- int sizeDst;
- PixelType *pdstBase;
- int widthDst;
- int depthDst;
-
- /* Create a tmp pixmap */
- pPixmap = (pScreen->CreatePixmap)(pScreen, width, height, depth);
- if (!pPixmap)
- return;
-
- afbGetPixelWidthSizeDepthAndPointer((DrawablePtr)pPixmap, widthDst,
- sizeDst, depthDst, pdstBase);
-
- widthSrc = PixmapWidthInPadUnits(width, depth);
- /* XXX: if depth == 8, use fast chunky to planar assembly function.*/
- if (depth > 4) {
- start_srcshift = 24;
- shift_step = 8;
- } else {
- start_srcshift = 28;
- shift_step = 4;
- }
-
- for (d = 0; d < depth; d++, pdstBase += sizeDst) { /* @@@ NEXT PLANE @@@ */
- start_bit = start_srcshift + d;
- psrc = (PixelType *)pImage;
- pdst = pdstBase;
- h = height;
-
- while (h--) {
- dstshift = PPW - 1;
- dst = 0;
- nl = widthSrc;
- while (nl--) {
- srcbits = *psrc++;
- for (b = start_bit; b >= 0; b -= shift_step) {
- dst |= ((srcbits >> b) & 1) << dstshift;
- if (--dstshift < 0) {
- dstshift = PPW - 1;
- *pdst++ = dst;
- dst = 0;
- }
- }
- }
- if (dstshift != PPW - 1)
- *pdst++ = dst;
- }
- } /* for (d = ...) */
-
- pGC->fExpose = FALSE;
- (void)(*pGC->ops->CopyArea)((DrawablePtr)pPixmap, pDraw, pGC, leftPad, 0,
- width, height, x, y);
- pGC->fExpose = TRUE;
- (*pScreen->DestroyPixmap)(pPixmap);
- }
-}
-
-void
-afbGetImage(pDrawable, sx, sy, width, height, format, planemask, pdstLine)
- DrawablePtr pDrawable;
- int sx, sy, width, height;
- unsigned int format;
- unsigned long planemask;
- char *pdstLine;
-{
- BoxRec box;
- DDXPointRec ptSrc;
- RegionRec rgnDst;
- ScreenPtr pScreen;
- PixmapPtr pPixmap;
-
- if ((width == 0) || (height == 0))
- return;
-
- pScreen = pDrawable->pScreen;
- sx += pDrawable->x;
- sy += pDrawable->y;
-
- if (format == XYPixmap || pDrawable->depth == 1) {
- pPixmap = GetScratchPixmapHeader(pScreen, width, height, 1, 1,
- BitmapBytePad(width), (pointer)pdstLine);
- if (!pPixmap)
- return;
-
- ptSrc.x = sx;
- ptSrc.y = sy;
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = width;
- box.y2 = height;
- REGION_INIT(pScreen, &rgnDst, &box, 1);
-
- pPixmap->drawable.depth = 1;
- pPixmap->drawable.bitsPerPixel = 1;
- /* dix layer only ever calls GetImage with 1 bit set in planemask
- * when format is XYPixmap.
- */
- afbDoBitblt(pDrawable, (DrawablePtr)pPixmap, GXcopy, &rgnDst, &ptSrc,
- planemask);
-
- FreeScratchPixmapHeader(pPixmap);
- REGION_UNINIT(pScreen, &rgnDst);
- } else {
- /* Planar to chunky conversion required */
-
- PixelType *psrcBits;
- PixelType *psrcLine;
- PixelType startmask, endmask;
- int depthSrc;
- int widthSrc;
- int sizeSrc;
- int sizeDst;
- int widthDst;
- register PixelType *psrc;
- register PixelType *pdst;
- register PixelType dst;
- register PixelType srcbits;
- register int d;
- register int b;
- register int dstshift;
- register int shift_step;
- register int start_endbit;
- int start_startbit;
- register int end_endbit = 0;
- register int start_dstshift;
- register int nl;
- register int h;
- int nlmiddle;
-
- widthDst = PixmapWidthInPadUnits(width, pDrawable->depth);
- sizeDst = widthDst * height;
-
- /* Clear the dest image */
- bzero(pdstLine, sizeDst << 2);
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, widthSrc, sizeSrc,
- depthSrc, psrcBits);
-
- psrcBits = afbScanline(psrcBits, sx, sy, widthSrc);
-
- start_startbit = PPW - 1 - (sx & PIM);
- if ((sx & PIM) + width < PPW) {
- maskpartialbits(sx, width, startmask);
- nlmiddle = 0;
- endmask = 0;
- start_endbit = PPW - ((sx + width) & PIM);
- } else {
- maskbits(sx, width, startmask, endmask, nlmiddle);
- start_endbit = 0;
- end_endbit = PPW - ((sx + width) & PIM);
- }
- /* ZPixmap images have either 4 or 8 bits per pixel dependent on
- * depth.
- */
- if (depthSrc > 4) {
- start_dstshift = 24;
- shift_step = 8;
- } else {
- start_dstshift = 28;
- shift_step = 4;
- }
-#define SHIFT_BITS(start_bit,end_bit) \
-for (b = (start_bit); b >= (end_bit); b--) { \
- dst |= ((srcbits >> b) & 1) << dstshift; \
- if ((dstshift -= shift_step) < 0) { \
- dstshift = start_dstshift + d; \
- *pdst++ = dst; \
- dst = *pdst; \
- } \
-} \
-
- for (d = 0; d < depthSrc; d++, psrcBits += sizeSrc) { /* @@@ NEXT PLANE @@@ */
- psrcLine = psrcBits;
- pdst = (PixelType *)pdstLine;
- h = height;
-
- while (h--) {
- psrc = psrcLine;
- psrcLine += widthSrc;
- dst = *pdst;
- dstshift = start_dstshift + d;
-
- if (startmask) {
- srcbits = *psrc++ & startmask;
- SHIFT_BITS(start_startbit, start_endbit);
- }
-
- nl = nlmiddle;
- while (nl--) {
- srcbits = *psrc++;
- SHIFT_BITS(PPW - 1, 0);
- }
- if (endmask) {
- srcbits = *psrc & endmask;
- SHIFT_BITS(PPW - 1, end_endbit);
- }
-
- if (dstshift != start_dstshift + d)
- *pdst++ = dst;
- } /* while (h--) */
- } /* for (d = ...) */
- }
-}
diff --git a/nx-X11/programs/Xserver/afb/afbimggblt.c b/nx-X11/programs/Xserver/afb/afbimggblt.c
deleted file mode 100644
index 28113b448..000000000
--- a/nx-X11/programs/Xserver/afb/afbimggblt.c
+++ /dev/null
@@ -1,474 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbimggblt.c,v 3.1tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbimggblt.c,v 5.17 94/04/17 20:28:25 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "afb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-/*
- we should eventually special-case fixed-width fonts for ImageText.
-
- this works for fonts with glyphs <= 32 bits wide.
-
- the clipping calculations are done for worst-case fonts.
-we make no assumptions about the heights, widths, or bearings
-of the glyphs. if we knew that the glyphs are all the same height,
-we could clip the tops and bottoms per clipping box, rather
-than per character per clipping box. if we knew that the glyphs'
-left and right bearings were wlle-behaved, we could clip a single
-character at the start, output until the last unclipped
-character, and then clip the last one. this is all straightforward
-to determine based on max-bounds and min-bounds from the font.
- there is some inefficiency introduced in the per-character
-clipping to make what's going on clearer.
-
- (it is possible, for example, for a font to be defined in which the
-next-to-last character in a font would be clipped out, but the last
-one wouldn't. the code below deals with this.)
-
- Image text looks at the bits in the glyph and the fg and bg in the
-GC. it paints a rectangle, as defined in the protocol dcoument,
-and the paints the characters.
-
- the register allocations for startmask and endmask may not
-be the right thing. are there two other deserving candidates?
-xoff, pdst, pglyph, and tmpSrc seem like the right things, though.
-*/
-
-void
-afbImageGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- ExtentInfoRec info; /* used by QueryGlyphExtents() */
- BoxRec bbox; /* string's bounding box */
- xRectangle backrect;/* backing rectangle to paint.
- in the general case, NOT necessarily
- the same as the string's bounding box
- */
-
- CharInfoPtr pci;
- int xorg, yorg; /* origin of drawable in bitmap */
- int widthDst; /* width of dst in longwords */
-
- /* these keep track of the character origin */
- PixelType *pdstBase;
- /* points to longword with character origin */
- int xchar; /* xorigin of char (mod 32) */
-
- /* these are used for placing the glyph */
- register int xoff; /* x offset of left edge of glyph (mod 32) */
- register PixelType *pdst;
- /* pointer to current longword in dst */
-
- register int d;
- int depthDst;
- int sizeDst;
- int hSave;
- int w; /* width of glyph in bits */
- int h; /* height of glyph */
- int widthGlyph; /* width of glyph, in bytes */
- unsigned char rrops[AFB_MAX_DEPTH];
- register unsigned char *pglyph;
- /* pointer to current row of glyph */
- unsigned char *pglyphSave;
-
- /* used for putting down glyph */
- register PixelType tmpSrc;
- /* for getting bits from glyph */
- register PixelType startmask;
- register PixelType endmask;
-
- register int nFirst;/* bits of glyph in current longword */
- PixelType *pdstSave;
- int oldFill;
- afbPrivGC *pPriv = (afbPrivGC *)(pGC->devPrivates[afbGCPrivateIndex].ptr);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, widthDst, sizeDst, depthDst,
- pdstBase);
-
- QueryGlyphExtents(pGC->font, ppci, (unsigned long)nglyph, &info);
-
- backrect.x = x;
- backrect.y = y - FONTASCENT(pGC->font);
- backrect.width = info.overallWidth;
- backrect.height = FONTASCENT(pGC->font) + FONTDESCENT(pGC->font);
-
- x += xorg;
- y += yorg;
-
- bbox.x1 = x + info.overallLeft;
- bbox.x2 = x + info.overallRight;
- bbox.y1 = y - info.overallAscent;
- bbox.y2 = y + info.overallDescent;
-
- oldFill = pGC->fillStyle;
- pGC->fillStyle = FillSolid;
- afbReduceRop (pGC->alu, pGC->bgPixel, pGC->planemask, pGC->depth,
- pPriv->rrops);
- afbPolyFillRect(pDrawable, pGC, 1, &backrect);
- pGC->fillStyle = oldFill;
- afbReduceRop (pGC->alu, pGC->fgPixel, pGC->planemask, pGC->depth,
- pPriv->rrops);
- afbReduceRop (GXcopy, pGC->fgPixel, pGC->planemask, pGC->depth, rrops);
-
- /* the faint-hearted can open their eyes now */
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox)) {
- case rgnOUT:
- break;
- case rgnIN:
- pdstBase = afbScanlineNoBankSwitch(pdstBase, x, y, widthDst);
- xchar = x & PIM;
-
- while(nglyph--) {
- pci = *ppci;
- pglyphSave = FONTGLYPHBITS(pglyphBase, pci);
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- hSave = pci->metrics.ascent + pci->metrics.descent;
- widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
- /* start at top scanline of glyph */
- pdstSave = afbScanlineDelta(pdstBase, -pci->metrics.ascent,
- widthDst);
-
- /* find correct word in scanline and x offset within it
- for left edge of glyph
- */
- xoff = xchar + pci->metrics.leftSideBearing;
- if (xoff > PLST) {
- pdstSave++;
- xoff &= PIM;
- } else if (xoff < 0) {
- xoff += PPW;
- pdstSave--;
- }
-
- for (d = 0; d < depthDst; d++) {
- h = hSave;
- pdst = pdstSave;
- pdstSave += sizeDst; /* @@@ NEXT PLANE @@@ */
- pglyph = pglyphSave;
-
- if ((xoff + w) <= PPW) {
- /* glyph all in one longword */
- maskpartialbits(xoff, w, startmask);
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst |= SCRRIGHT(tmpSrc, xoff) & startmask;
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_NOP:
- break;
- }
- } else {
- /* glyph crosses longword boundary */
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) &= ~(SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst |= SCRRIGHT(tmpSrc, xoff) & startmask;
- *(pdst+1) |= SCRLEFT(tmpSrc, nFirst) & endmask;
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_NOP:
- break;
- }
- } /* glyph crosses longwords boundary */
- } /* depth loop */
- /* update character origin */
- x += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST) {
- xchar -= PPW;
- pdstBase++;
- } else if (xchar < 0) {
- xchar += PPW;
- pdstBase--;
- }
- ppci++;
- } /* while nglyph-- */
- break;
- case rgnPART:
- {
- afbTEXTPOS *ppos;
- int nbox;
- BoxPtr pbox;
- RegionPtr cclip;
- int xpos; /* x position of char origin */
- int i;
- BoxRec clip;
- int leftEdge, rightEdge;
- int topEdge, bottomEdge;
- int glyphRow; /* first row of glyph not wholly
- clipped out */
- int glyphCol; /* leftmost visible column of glyph */
-#if GETLEFTBITS_ALIGNMENT > 1
- int getWidth; /* bits to get from glyph */
-#endif
-
- if(!(ppos = (afbTEXTPOS *)ALLOCATE_LOCAL(nglyph * sizeof(afbTEXTPOS))))
- return;
-
- pdstBase = afbScanlineNoBankSwitch(pdstBase, x, y, widthDst);
- xpos = x;
- xchar = xpos & PIM;
-
- for (i = 0; i < nglyph; i++) {
- pci = ppci[i];
-
- ppos[i].xpos = xpos;
- ppos[i].xchar = xchar;
- ppos[i].leftEdge = xpos + pci->metrics.leftSideBearing;
- ppos[i].rightEdge = xpos + pci->metrics.rightSideBearing;
- ppos[i].topEdge = y - pci->metrics.ascent;
- ppos[i].bottomEdge = y + pci->metrics.descent;
- ppos[i].pdstBase = pdstBase;
- ppos[i].widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
-
- xpos += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST) {
- xchar &= PIM;
- pdstBase++;
- } else if (xchar < 0) {
- xchar += PPW;
- pdstBase--;
- }
- }
-
- cclip = pGC->pCompositeClip;
- pbox = REGION_RECTS(cclip);
- nbox = REGION_NUM_RECTS(cclip);
-
- /* HACK ALERT
- since we continue out of the loop below so often, it
- is easier to increment pbox at the top than at the end.
- don't try this at home.
- */
- pbox--;
- while(nbox--) {
- pbox++;
- clip.x1 = max(bbox.x1, pbox->x1);
- clip.y1 = max(bbox.y1, pbox->y1);
- clip.x2 = min(bbox.x2, pbox->x2);
- clip.y2 = min(bbox.y2, pbox->y2);
- if ((clip.x2<=clip.x1) || (clip.y2<=clip.y1))
- continue;
-
- for(i=0; i<nglyph; i++) {
- pci = ppci[i];
- xchar = ppos[i].xchar;
-
- /* clip the left and right edges */
- if (ppos[i].leftEdge < clip.x1)
- leftEdge = clip.x1;
- else
- leftEdge = ppos[i].leftEdge;
-
- if (ppos[i].rightEdge > clip.x2)
- rightEdge = clip.x2;
- else
- rightEdge = ppos[i].rightEdge;
-
- w = rightEdge - leftEdge;
- if (w <= 0)
- continue;
-
- /* clip the top and bottom edges */
- if (ppos[i].topEdge < clip.y1)
- topEdge = clip.y1;
- else
- topEdge = ppos[i].topEdge;
-
- if (ppos[i].bottomEdge > clip.y2)
- bottomEdge = clip.y2;
- else
- bottomEdge = ppos[i].bottomEdge;
-
- hSave = bottomEdge - topEdge;
- if (hSave <= 0)
- continue;
-
- glyphRow = (topEdge - y) + pci->metrics.ascent;
- widthGlyph = ppos[i].widthGlyph;
- pglyphSave = FONTGLYPHBITS(pglyphBase, pci);
- pglyphSave += (glyphRow * widthGlyph);
-
- glyphCol = (leftEdge - ppos[i].xpos) -
- (pci->metrics.leftSideBearing);
-#if GETLEFTBITS_ALIGNMENT > 1
- getWidth = w + glyphCol;
-#endif
-
- pdstSave = afbScanlineDelta(ppos[i].pdstBase, -(y-topEdge),
- widthDst);
- xoff = xchar + (leftEdge - ppos[i].xpos);
- if (xoff > PLST) {
- xoff &= PIM;
- pdstSave++;
- } else if (xoff < 0) {
- xoff += PPW;
- pdstSave--;
- }
-
- for (d = 0; d < depthDst; d++) {
- h = hSave;
- pdst = pdstSave;
- pdstSave += sizeDst; /* @@@ NEXT PLANE @@@ */
- pglyph = pglyphSave;
-
- if ((xoff + w) <= PPW) {
- maskpartialbits(xoff, w, startmask);
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst |= SCRRIGHT(tmpSrc, xoff) & startmask;
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_NOP:
- break;
- }
- } else {
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) &= ~(SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst |= SCRRIGHT(tmpSrc, xoff) & startmask;
- *(pdst+1) |= SCRLEFT(tmpSrc, nFirst) & endmask;
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_NOP:
- break;
- }
- }
- } /* depth */
- } /* for each glyph */
- } /* while nbox-- */
- DEALLOCATE_LOCAL(ppos);
- break;
- }
-
- default:
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/afb/afbline.c b/nx-X11/programs/Xserver/afb/afbline.c
deleted file mode 100644
index 255ea21c1..000000000
--- a/nx-X11/programs/Xserver/afb/afbline.c
+++ /dev/null
@@ -1,706 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbline.c,v 3.1 1998/03/20 21:04:55 hohndel Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbline.c,v 5.18 94/04/17 20:28:26 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "afb.h"
-#include "maskbits.h"
-#include "miline.h"
-
-/* single-pixel lines on a color frame buffer
-
- NON-SLOPED LINES
- horizontal lines are always drawn left to right; we have to
-move the endpoints right by one after they're swapped.
- horizontal lines will be confined to a single band of a
-region. the code finds that band (giving up if the lower
-bound of the band is above the line we're drawing); then it
-finds the first box in that band that contains part of the
-line. we clip the line to subsequent boxes in that band.
- vertical lines are always drawn top to bottom (y-increasing.)
-this requires adding one to the y-coordinate of each endpoint
-after swapping.
-
- SLOPED LINES
- when clipping a sloped line, we bring the second point inside
-the clipping box, rather than one beyond it, and then add 1 to
-the length of the line before drawing it. this lets us use
-the same box for finding the outcodes for both endpoints. since
-the equation for clipping the second endpoint to an edge gives us
-1 beyond the edge, we then have to move the point towards the
-first point by one step on the major axis.
- eventually, there will be a diagram here to explain what's going
-on. the method uses Cohen-Sutherland outcodes to determine
-outsideness, and a method similar to Pike's layers for doing the
-actual clipping.
-
-*/
-
-void
-#ifdef POLYSEGMENT
-afbSegmentSS(pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-afbLineSS(pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit;
-#endif
-{
- int nboxInit;
- register int nbox;
- BoxPtr pboxInit;
- register BoxPtr pbox;
-#ifndef POLYSEGMENT
- register DDXPointPtr ppt; /* pointer to list of translated points */
-#endif
-
- unsigned int oc1; /* outcode of point 1 */
- unsigned int oc2; /* outcode of point 2 */
-
- PixelType *addrlBase; /* pointer to start of drawable */
- int nlwidth; /* width in longwords of destination pixmap */
- int xorg, yorg; /* origin of window */
-
- int adx; /* abs values of dx and dy */
- int ady;
- int signdx; /* sign of dx and dy */
- int signdy;
- int e, e1, e2; /* bresenham error and increments */
- int len; /* length of segment */
- int axis; /* major axis */
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
- int depthDst;
-#ifndef POLYSEGMENT
- PixelType *addrl; /* address of destination pixmap */
- int d;
-#endif
- int sizeDst;
- unsigned char *rrops;
-
- /* a bunch of temporaries */
- register int y1, y2;
- register int x1, x2;
- RegionPtr cclip;
-
- cclip = pGC->pCompositeClip;
- rrops = ((afbPrivGC *)(pGC->devPrivates[afbGCPrivateIndex].ptr))->rrops;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, nlwidth, sizeDst, depthDst,
- addrlBase);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-#ifdef POLYSEGMENT
- while (nseg--)
-#else
- ppt = pptInit;
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
- while(--npt)
-#endif
- {
- nbox = nboxInit;
- pbox = pboxInit;
-
-#ifdef POLYSEGMENT
- x1 = pSeg->x1 + xorg;
- y1 = pSeg->y1 + yorg;
- x2 = pSeg->x2 + xorg;
- y2 = pSeg->y2 + yorg;
- pSeg++;
-#else
- x1 = x2;
- y1 = y2;
- ++ppt;
- if (mode == CoordModePrevious) {
- xorg = x1;
- yorg = y1;
- }
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
-#endif
-
- if (x1 == x2) /* vertical line */
- {
- /* make the line go top to bottom of screen, keeping
- endpoint semantics
- */
- if (y1 > y2) {
- register int tmp;
-
- tmp = y2;
- y2 = y1 + 1;
- y1 = tmp + 1;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- y1--;
-#endif
- }
-#ifdef POLYSEGMENT
- else if (pGC->capStyle != CapNotLast)
- y2++;
-#endif
- /* get to first band that might contain part of line */
- while ((nbox) && (pbox->y2 <= y1)) {
- pbox++;
- nbox--;
- }
-
- if (nbox) {
- /* stop when lower edge of box is beyond end of line */
- while((nbox) && (y2 >= pbox->y1)) {
- if ((x1 >= pbox->x1) && (x1 < pbox->x2)) {
- int y1t, y2t;
- /* this box has part of the line in it */
- y1t = max(y1, pbox->y1);
- y2t = min(y2, pbox->y2);
- if (y1t != y2t)
- afbVertS(addrlBase, nlwidth, sizeDst, depthDst, x1, y1t,
- y2t-y1t, rrops); /* @@@ NEXT PLANE PASSED @@@ */
- }
- nbox--;
- pbox++;
- }
- }
-#ifndef POLYSEGMENT
- y2 = ppt->y + yorg;
-#endif
- } else if (y1 == y2) /* horizontal line */ {
- /* force line from left to right, keeping
- endpoint semantics
- */
- if (x1 > x2) {
- register int tmp;
-
- tmp = x2;
- x2 = x1 + 1;
- x1 = tmp + 1;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- x1--;
-#endif
- }
-#ifdef POLYSEGMENT
- else if (pGC->capStyle != CapNotLast)
- x2++;
-#endif
-
- /* find the correct band */
- while( (nbox) && (pbox->y2 <= y1)) {
- pbox++;
- nbox--;
- }
-
- /* try to draw the line, if we haven't gone beyond it */
- if ((nbox) && (pbox->y1 <= y1)) {
- int tmp;
-
- /* when we leave this band, we're done */
- tmp = pbox->y1;
- while((nbox) && (pbox->y1 == tmp)) {
- int x1t, x2t;
-
- if (pbox->x2 <= x1) {
- /* skip boxes until one might contain start point */
- nbox--;
- pbox++;
- continue;
- }
-
- /* stop if left of box is beyond right of line */
- if (pbox->x1 >= x2) {
- nbox = 0;
- break;
- }
-
- x1t = max(x1, pbox->x1);
- x2t = min(x2, pbox->x2);
- if (x1t != x2t)
- afbHorzS(addrlBase, nlwidth, sizeDst, depthDst, x1t, y1,
- x2t-x1t, rrops); /* @@@ NEXT PLANE PASSED @@@ */
- nbox--;
- pbox++;
- }
- }
-#ifndef POLYSEGMENT
- x2 = ppt->x + xorg;
-#endif
- }
- else /* sloped line */
- {
- CalcLineDeltas(x1, y1, x2, y2, adx, ady,
- signdx, signdy, 1, 1, octant);
-
- if (adx > ady) {
- axis = X_AXIS;
- e1 = ady << 1;
- e2 = e1 - (adx << 1);
- e = e1 - adx;
- } else {
- axis = Y_AXIS;
- e1 = adx << 1;
- e2 = e1 - (ady << 1);
- e = e1 - ady;
- SetYMajorOctant(octant);
- }
-
- FIXUP_ERROR(e, octant, bias);
-
- /* we have bresenham parameters and two points.
- all we have to do now is clip and draw.
- */
-
- while(nbox--) {
- oc1 = 0;
- oc2 = 0;
- OUTCODES(oc1, x1, y1, pbox);
- OUTCODES(oc2, x2, y2, pbox);
- if ((oc1 | oc2) == 0) {
- if (axis == X_AXIS)
- len = adx;
- else
- len = ady;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- len++;
-#endif
- afbBresS(addrlBase, nlwidth, sizeDst, depthDst, signdx, signdy,
- axis, x1, y1, e, e1, e2, len, rrops); /* @@@ NEXT PLANE PASSED @@@ */
- break;
- } else if (oc1 & oc2) {
- pbox++;
- } else {
- int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2;
- int clip1 = 0, clip2 = 0;
- int clipdx, clipdy;
- int err;
-
- if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1,
- pbox->y2-1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady, &clip1, &clip2,
- octant, bias, oc1, oc2) == -1) {
- pbox++;
- continue;
- }
-
- if (axis == X_AXIS)
- len = abs(new_x2 - new_x1);
- else
- len = abs(new_y2 - new_y1);
-#ifdef POLYSEGMENT
- if (clip2 != 0 || pGC->capStyle != CapNotLast)
- len++;
-#else
- len += (clip2 != 0);
-#endif
- if (len) {
- /* unwind bresenham error term to first point */
- if (clip1) {
- clipdx = abs(new_x1 - x1);
- clipdy = abs(new_y1 - y1);
- if (axis == X_AXIS)
- err = e+((clipdy*e2) + ((clipdx-clipdy)*e1));
- else
- err = e+((clipdx*e2) + ((clipdy-clipdx)*e1));
- }
- else
- err = e;
- afbBresS(addrlBase, nlwidth, sizeDst, depthDst, signdx,
- signdy, axis, new_x1, new_y1, err, e1, e2, len,
- rrops); /* @@@ NEXT PLANE PASSED @@@ */
- }
- pbox++;
- }
- } /* while (nbox--) */
- } /* sloped line */
- } /* while (nline--) */
-
-#ifndef POLYSEGMENT
-
- /* paint the last point if the end style isn't CapNotLast.
- (Assume that a projecting, butt, or round cap that is one
- pixel wide is the same as the single pixel of the endpoint.)
- */
-
- if ((pGC->capStyle != CapNotLast) &&
- ((ppt->x + xorg != pptInit->x + pDrawable->x) ||
- (ppt->y + yorg != pptInit->y + pDrawable->y) ||
- (ppt == pptInit + 1))) {
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--) {
- if ((x2 >= pbox->x1) && (y2 >= pbox->y1) && (x2 < pbox->x2) &&
- (y2 < pbox->y2)) {
- for (d = 0; d < depthDst; d++) {
- addrl = afbScanline(addrlBase, x2, y2, nlwidth);
- addrlBase += sizeDst; /* @@@ NEXT PLANE @@@ */
-
- switch(rrops[d]) {
- case RROP_BLACK:
- *addrl &= mfbGetrmask(x2 & PIM);
- break;
- case RROP_WHITE:
- *addrl |= mfbGetmask(x2 & PIM);
- break;
- case RROP_INVERT:
- *addrl ^= mfbGetmask(x2 & PIM);
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
- break;
- } else
- pbox++;
- }
- }
-#endif
-}
-
-/*
- * Draw dashed 1-pixel lines.
- */
-
-void
-#ifdef POLYSEGMENT
-afbSegmentSD(pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-afbLineSD(pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit;
-#endif
-{
- int nboxInit;
- register int nbox;
- BoxPtr pboxInit;
- register BoxPtr pbox;
-#ifndef POLYSEGMENT
- register DDXPointPtr ppt; /* pointer to list of translated points */
-#endif
-
- register unsigned int oc1; /* outcode of point 1 */
- register unsigned int oc2; /* outcode of point 2 */
-
- PixelType *addrlBase; /* address of destination pixmap */
- int nlwidth; /* width in longwords of destination pixmap */
- int sizeDst;
- int depthDst;
- int xorg, yorg; /* origin of window */
-
- int adx; /* abs values of dx and dy */
- int ady;
- int signdx; /* sign of dx and dy */
- int signdy;
- int e, e1, e2; /* bresenham error and increments */
- int len; /* length of segment */
- int axis; /* major axis */
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
- int x1, x2, y1, y2;
- RegionPtr cclip;
- unsigned char *rrops;
- unsigned char bgrrops[AFB_MAX_DEPTH];
- unsigned char *pDash;
- int dashOffset;
- int numInDashList;
- int dashIndex;
- int isDoubleDash;
- int dashIndexTmp, dashOffsetTmp;
- int unclippedlen;
-#ifndef POLYSEGMENT
- PixelType *addrl;
- int d;
-#endif
-
- cclip = pGC->pCompositeClip;
- rrops = ((afbPrivGC *)(pGC->devPrivates[afbGCPrivateIndex].ptr))->rrops;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, nlwidth, sizeDst, depthDst,
- addrlBase);
-
- /* compute initial dash values */
-
- pDash = (unsigned char *) pGC->dash;
- numInDashList = pGC->numInDashList;
- isDoubleDash = (pGC->lineStyle == LineDoubleDash);
- dashIndex = 0;
- dashOffset = 0;
- miStepDash ((int)pGC->dashOffset, &dashIndex, pDash,
- numInDashList, &dashOffset);
-
- if (isDoubleDash)
- afbReduceRop (pGC->alu, pGC->bgPixel, pGC->planemask, pGC->depth,
- bgrrops);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-#ifdef POLYSEGMENT
- while (nseg--)
-#else
- ppt = pptInit;
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
- while(--npt)
-#endif
- {
- nbox = nboxInit;
- pbox = pboxInit;
-
-#ifdef POLYSEGMENT
- x1 = pSeg->x1 + xorg;
- y1 = pSeg->y1 + yorg;
- x2 = pSeg->x2 + xorg;
- y2 = pSeg->y2 + yorg;
- pSeg++;
-#else
- x1 = x2;
- y1 = y2;
- ++ppt;
- if (mode == CoordModePrevious) {
- xorg = x1;
- yorg = y1;
- }
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
-#endif
-
- CalcLineDeltas(x1, y1, x2, y2, adx, ady, signdx, signdy,
- 1, 1, octant);
-
- if (adx > ady) {
- axis = X_AXIS;
- e1 = ady << 1;
- e2 = e1 - (adx << 1);
- e = e1 - adx;
- unclippedlen = adx;
- } else {
- axis = Y_AXIS;
- e1 = adx << 1;
- e2 = e1 - (ady << 1);
- e = e1 - ady;
- unclippedlen = ady;
- SetYMajorOctant(octant);
- }
-
- FIXUP_ERROR(e, octant, bias);
-
- /* we have bresenham parameters and two points.
- all we have to do now is clip and draw.
- */
-
- while(nbox--) {
- oc1 = 0;
- oc2 = 0;
- OUTCODES(oc1, x1, y1, pbox);
- OUTCODES(oc2, x2, y2, pbox);
- if ((oc1 | oc2) == 0) {
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- unclippedlen++;
- dashIndexTmp = dashIndex;
- dashOffsetTmp = dashOffset;
- afbBresD(&dashIndexTmp, pDash, numInDashList, &dashOffsetTmp,
- isDoubleDash, addrlBase, nlwidth, sizeDst, depthDst,
- signdx, signdy, axis, x1, y1, e, e1, e2, unclippedlen,
- rrops, bgrrops); /* @@@ NEXT PLANE PASSED @@@ */
- break;
-#else
- afbBresD(&dashIndex, pDash, numInDashList, &dashOffset,
- isDoubleDash, addrlBase, nlwidth, sizeDst, depthDst,
- signdx, signdy, axis, x1, y1, e, e1, e2, unclippedlen,
- rrops, bgrrops); /* @@@ NEXT PLANE PASSED @@@ */
- goto dontStep;
-#endif
- } else if (oc1 & oc2) {
- pbox++;
- } else /* have to clip */ {
- int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2;
- int clip1 = 0, clip2 = 0;
- int clipdx, clipdy;
- int err;
-
- if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1, pbox->y2-1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady, &clip1, &clip2,
- octant, bias, oc1, oc2) == -1) {
- pbox++;
- continue;
- }
- dashIndexTmp = dashIndex;
- dashOffsetTmp = dashOffset;
- if (clip1) {
- int dlen;
-
- if (axis == X_AXIS)
- dlen = abs(new_x1 - x1);
- else
- dlen = abs(new_y1 - y1);
- miStepDash (dlen, &dashIndexTmp, pDash,
- numInDashList, &dashOffsetTmp);
- }
- if (axis == X_AXIS)
- len = abs(new_x2 - new_x1);
- else
- len = abs(new_y2 - new_y1);
-#ifdef POLYSEGMENT
- if (clip2 != 0 || pGC->capStyle != CapNotLast)
- len++;
-#else
- len += (clip2 != 0);
-#endif
- if (len) {
- /* unwind bresenham error term to first point */
- if (clip1) {
- clipdx = abs(new_x1 - x1);
- clipdy = abs(new_y1 - y1);
- if (axis == X_AXIS)
- err = e+((clipdy*e2) + ((clipdx-clipdy)*e1));
- else
- err = e+((clipdx*e2) + ((clipdy-clipdx)*e1));
- }
- else
- err = e;
- afbBresD(&dashIndexTmp, pDash, numInDashList, &dashOffsetTmp,
- isDoubleDash, addrlBase, nlwidth, sizeDst, depthDst,
- signdx, signdy, axis, new_x1, new_y1, err, e1, e2,
- len, rrops, bgrrops); /* @@@ NEXT PLANE PASSED @@@ */
- }
- pbox++;
- }
- } /* while (nbox--) */
-#ifndef POLYSEGMENT
- /*
- * walk the dash list around to the next line
- */
- miStepDash (unclippedlen, &dashIndex, pDash,
- numInDashList, &dashOffset);
-dontStep: ;
-#endif
- } /* while (nline--) */
-
-#ifndef POLYSEGMENT
- /* paint the last point if the end style isn't CapNotLast.
- (Assume that a projecting, butt, or round cap that is one
- pixel wide is the same as the single pixel of the endpoint.)
- */
-
- if ((pGC->capStyle != CapNotLast) &&
- ((dashIndex & 1) == 0 || isDoubleDash) &&
- ((ppt->x + xorg != pptInit->x + pDrawable->x) ||
- (ppt->y + yorg != pptInit->y + pDrawable->y) ||
- (ppt == pptInit + 1))) {
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--) {
- if ((x2 >= pbox->x1) && (y2 >= pbox->y1) && (x2 < pbox->x2) &&
- (y2 < pbox->y2)) {
- int rop;
-
- for (d = 0; d < depthDst; d++) {
- addrl = afbScanline(addrlBase, x2, y2, nlwidth);
- addrlBase += sizeDst; /* @@@ NEXT PLANE @@@ */
-
- rop = rrops[d];
- if (dashIndex & 1)
- rop = bgrrops[d];
-
- switch (rop) {
- case RROP_BLACK:
- *addrl &= mfbGetrmask(x2 & PIM);
- break;
- case RROP_WHITE:
- *addrl |= mfbGetmask(x2 & PIM);
- break;
-
- case RROP_INVERT:
- *addrl ^= mfbGetmask(x2 & PIM);
- break;
-
- case RROP_NOP:
- break;
- }
- } /* for (d = ...) */
- break;
- } else
- pbox++;
- }
- }
-#endif
-}
diff --git a/nx-X11/programs/Xserver/afb/afbmisc.c b/nx-X11/programs/Xserver/afb/afbmisc.c
deleted file mode 100644
index e5a4f492d..000000000
--- a/nx-X11/programs/Xserver/afb/afbmisc.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbmisc.c,v 5.4 94/04/17 20:28:27 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "cursor.h"
-#include "scrnintstr.h"
-
-#include "afb.h"
-
-/*ARGSUSED*/
-void
-afbQueryBestSize(class, pwidth, pheight, pScreen)
-int class;
-unsigned short *pwidth;
-unsigned short *pheight;
-ScreenPtr pScreen;
-{
- unsigned width, test;
-
- switch(class) {
- case CursorShape:
- if (*pwidth > pScreen->width)
- *pwidth = pScreen->width;
- if (*pheight > pScreen->height)
- *pheight = pScreen->height;
- break;
- case TileShape:
- case StippleShape:
- width = *pwidth;
- if (!width) break;
- /* Return the closes power of two not less than what they gave me */
- test = 0x80000000;
- /* Find the highest 1 bit in the width given */
- while(!(test & width))
- test >>= 1;
- /* If their number is greater than that, bump up to the next
- * power of two */
- if((test - 1) & width)
- test <<= 1;
- *pwidth = test;
- /* We don't care what height they use */
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/afb/afbmodule.c b/nx-X11/programs/Xserver/afb/afbmodule.c
deleted file mode 100644
index d9cdbf9c3..000000000
--- a/nx-X11/programs/Xserver/afb/afbmodule.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbmodule.c,v 1.1 1999/06/13 13:47:38 dawes Exp $ */
-/*
- * Copyright (C) 1998 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef XFree86LOADER
-
-#include "xf86Module.h"
-#include "afb.h"
-
-static MODULESETUPPROTO(afbSetup);
-
-static XF86ModuleVersionInfo VersRec =
-{
- "afb",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- 1, 0, 0,
- ABI_CLASS_ANSIC, /* Only need the ansic layer */
- ABI_ANSIC_VERSION,
- MOD_CLASS_NONE,
- {0,0,0,0} /* signature, to be patched into the file by a tool */
-};
-
-XF86ModuleData afbModuleData = { &VersRec, afbSetup, NULL };
-
-static pointer
-afbSetup(pointer module, pointer opts, int *errmaj, int *errmin)
-{
- /* This modules requires mfb, so load it */
- return LoadSubModule(module, "mfb", NULL, NULL, NULL, NULL,
- errmaj, errmin);
-}
-
-#endif
diff --git a/nx-X11/programs/Xserver/afb/afbpixmap.c b/nx-X11/programs/Xserver/afb/afbpixmap.c
deleted file mode 100644
index c6ae8481c..000000000
--- a/nx-X11/programs/Xserver/afb/afbpixmap.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbpixmap.c,v 3.0 1996/08/18 01:45:45 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbpixmap.c,v 5.13 94/04/17 20:28:28 dpw Exp $ */
-
-/* pixmap management
- written by drewry, september 1986
-
- on a monchrome device, a pixmap is a bitmap.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/Xmd.h>
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "maskbits.h"
-
-#include "afb.h"
-#include "mi.h"
-
-#include "servermd.h"
-#include "mfb.h"
-
-PixmapPtr
-afbCreatePixmap(pScreen, width, height, depth)
- ScreenPtr pScreen;
- int width;
- int height;
- int depth;
-{
- PixmapPtr pPixmap;
- size_t datasize;
- size_t paddedWidth;
-
- paddedWidth = BitmapBytePad(width);
-
- if (paddedWidth > 32767 || height > 32767 || depth > 4)
- return NullPixmap;
-
- datasize = height * paddedWidth * depth;
- pPixmap = AllocatePixmap(pScreen, datasize);
- if (!pPixmap)
- return(NullPixmap);
- pPixmap->drawable.type = DRAWABLE_PIXMAP;
- pPixmap->drawable.class = 0;
- pPixmap->drawable.pScreen = pScreen;
- pPixmap->drawable.depth = depth;
- pPixmap->drawable.bitsPerPixel = depth;
- pPixmap->drawable.id = 0;
- pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- pPixmap->drawable.x = 0;
- pPixmap->drawable.y = 0;
- pPixmap->drawable.width = width;
- pPixmap->drawable.height = height;
- pPixmap->devKind = paddedWidth;
- pPixmap->refcnt = 1;
-#ifdef PIXPRIV
- pPixmap->devPrivate.ptr = datasize ?
- (pointer)((char *)pPixmap + pScreen->totalPixmapSize) : NULL;
-#else
- pPixmap->devPrivate.ptr = (pointer)(pPixmap + 1);
-#endif
- return(pPixmap);
-}
-
-Bool
-afbDestroyPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- if(--pPixmap->refcnt)
- return(TRUE);
- xfree(pPixmap);
- return(TRUE);
-}
-
-
-PixmapPtr
-afbCopyPixmap(pSrc)
- register PixmapPtr pSrc;
-{
- register PixmapPtr pDst;
- int size;
- ScreenPtr pScreen;
-
- size = pSrc->drawable.height * pSrc->devKind * pSrc->drawable.depth;
- pScreen = pSrc->drawable.pScreen;
- pDst = (*pScreen->CreatePixmap)(pScreen, pSrc->drawable.width,
- pSrc->drawable.height, pSrc->drawable.depth);
- if (!pDst)
- return(NullPixmap);
- memmove((char *)pDst->devPrivate.ptr, (char *)pSrc->devPrivate.ptr, size);
- return(pDst);
-}
-
-
-/* replicates a pattern to be a full 32 bits wide.
- relies on the fact that each scnaline is longword padded.
- doesn't do anything if pixmap is not a factor of 32 wide.
- changes width field of pixmap if successful, so that the fast
- XRotatePixmap code gets used if we rotate the pixmap later.
-
- calculate number of times to repeat
- for each scanline of pattern
- zero out area to be filled with replicate
- left shift and or in original as many times as needed
-*/
-void
-afbPadPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- register int width = pPixmap->drawable.width;
- register int h;
- register PixelType mask;
- register PixelType *p;
- register PixelType bits; /* real pattern bits */
- register int i;
- int d;
- int rep; /* repeat count for pattern */
-
- if (width >= PPW)
- return;
-
- rep = PPW/width;
- if (rep*width != PPW)
- return;
-
- mask = mfbGetendtab(width);
-
- p = (PixelType *)(pPixmap->devPrivate.ptr);
-
- for (d = 0; d < pPixmap->drawable.depth; d++) {
- for (h = 0; h < pPixmap->drawable.height; h++) {
- *p &= mask;
- bits = *p;
- for(i = 1; i < rep; i++) {
- bits = SCRRIGHT(bits, width);
- *p |= bits;
- }
- p++; /* @@@ NEXT PLANE @@@ */
- }
- }
- pPixmap->drawable.width = PPW;
-}
-
-/* Rotates pixmap pPix by w pixels to the right on the screen. Assumes that
- * words are PPW bits wide, and that the least significant bit appears on the
- * left.
- */
-void
-afbXRotatePixmap(pPix, rw)
- PixmapPtr pPix;
- register int rw;
-{
- register PixelType *pw, *pwFinal;
- register PixelType t;
-
- if (pPix == NullPixmap)
- return;
-
- pw = (PixelType *)pPix->devPrivate.ptr;
- rw %= (int)pPix->drawable.width;
- if (rw < 0)
- rw += (int)pPix->drawable.width;
- if(pPix->drawable.width == PPW) {
- pwFinal = pw + pPix->drawable.height * pPix->drawable.depth;
- while(pw < pwFinal) {
- t = *pw;
- *pw++ = SCRRIGHT(t, rw) |
- (SCRLEFT(t, (PPW-rw)) & mfbGetendtab(rw));
- }
- } else {
- /* We no longer do this. Validate doesn't try to rotate odd-size
- * tiles or stipples. afbUnnatural<tile/stipple>FS works directly off
- * the unrotate tile/stipple in the GC
- */
- ErrorF("X internal error: trying to rotate odd-sized pixmap.\n");
- }
-
-}
-
-/* Rotates pixmap pPix by h lines. Assumes that h is always less than
- pPix->height
- works on any width.
- */
-void
-afbYRotatePixmap(pPix, rh)
- register PixmapPtr pPix;
- int rh;
-{
- int nbyDown; /* bytes to move down to row 0; also offset of
- row rh */
- int nbyUp; /* bytes to move up to line rh; also
- offset of first line moved down to 0 */
- char *pbase;
- char *ptmp;
- int height;
- int d;
-
- if (pPix == NullPixmap)
- return;
- height = (int) pPix->drawable.height;
- rh %= height;
- if (rh < 0)
- rh += height;
-
- nbyDown = rh * pPix->devKind;
- nbyUp = (pPix->devKind * height) - nbyDown;
-
- if(!(ptmp = (char *)ALLOCATE_LOCAL(nbyUp)))
- return;
-
- for (d = 0; d < pPix->drawable.depth; d++) {
- pbase = (char *)pPix->devPrivate.ptr + pPix->devKind * height * d; /* @@@ NEXT PLANE @@@ */
-
- memmove(ptmp, pbase, nbyUp); /* save the low rows */
- memmove(pbase, pbase+nbyUp, nbyDown); /* slide the top rows down */
- memmove(pbase+nbyDown, ptmp, nbyUp); /* move lower rows up to row rh */
- }
- DEALLOCATE_LOCAL(ptmp);
-}
-
-void
-afbCopyRotatePixmap(psrcPix, ppdstPix, xrot, yrot)
- register PixmapPtr psrcPix, *ppdstPix;
- int xrot, yrot;
-{
- register PixmapPtr pdstPix;
-
- if ((pdstPix = *ppdstPix) &&
- (pdstPix->devKind == psrcPix->devKind) &&
- (pdstPix->drawable.height == psrcPix->drawable.height) &&
- (pdstPix->drawable.depth == psrcPix->drawable.depth)) {
- memmove((char *)pdstPix->devPrivate.ptr,
- (char *)psrcPix->devPrivate.ptr,
- psrcPix->drawable.height * psrcPix->devKind *
- psrcPix->drawable.depth);
- pdstPix->drawable.width = psrcPix->drawable.width;
- pdstPix->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- } else {
- if (pdstPix)
- /* FIX XBUG 6168 */
- (*pdstPix->drawable.pScreen->DestroyPixmap)(pdstPix);
- *ppdstPix = pdstPix = afbCopyPixmap(psrcPix);
- if (!pdstPix)
- return;
- }
- afbPadPixmap(pdstPix);
- if (xrot)
- afbXRotatePixmap(pdstPix, xrot);
- if (yrot)
- afbYRotatePixmap(pdstPix, yrot);
-}
diff --git a/nx-X11/programs/Xserver/afb/afbply1rct.c b/nx-X11/programs/Xserver/afb/afbply1rct.c
deleted file mode 100644
index 90e55cf8e..000000000
--- a/nx-X11/programs/Xserver/afb/afbply1rct.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbply1rct.c,v 3.1 1998/03/20 21:04:56 hohndel Exp $ */
-/*
- * $XConsortium: afbply1rct.c,v 1.9 94/04/17 20:28:28 dpw Exp $
- *
-Copyright (c) 1990 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "afb.h"
-#include "maskbits.h"
-
-#if defined(mips) || defined(sparc)
-#define GetHighWord(x) (((int)(x)) >> 16)
-#else
-#define GetHighWord(x) (((int)(x)) / 65536)
-#endif
-
-#if IMAGE_BYTE_ORDER == MSBFirst
-#define intToCoord(i,x,y) (((x) = GetHighWord(i)), ((y) = (int)((short) (i))))
-#define coordToInt(x,y) (((x) << 16) | (y))
-#define intToX(i) (GetHighWord(i))
-#define intToY(i) ((int)((short) i))
-#else
-#define intToCoord(i,x,y) (((x) = (int)((short) (i))), ((y) = GetHighWord(i)))
-#define coordToInt(x,y) (((y) << 16) | (x))
-#define intToX(i) ((int)((short) (i)))
-#define intToY(i) (GetHighWord(i))
-#endif
-
-void
-afbFillPolygonSolid (pDrawable, pGC, shape, mode, count, ptsIn)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int shape;
- int mode;
- int count;
- DDXPointPtr ptsIn;
-{
- afbPrivGCPtr devPriv;
- int nlwidth;
- PixelType *addrl, *addr;
- int maxy;
- int origin;
- register int vertex1, vertex2;
- int c;
- BoxPtr extents;
- int clip;
- int y;
- int *vertex1p = NULL, *vertex2p;
- int *endp;
- int x1 = 0, x2 = 0;
- int dx1 = 0, dx2 = 0;
- int dy1 = 0, dy2 = 0;
- int e1 = 0, e2 = 0;
- int step1 = 0, step2 = 0;
- int sign1 = 0, sign2 = 0;
- int h;
- int l, r;
- PixelType mask, bits = ~((PixelType)0);
- int nmiddle;
- register unsigned char *rrops;
- register int n;
- register int d;
- int sizeDst;
- int depthDst;
- register PixelType *pdst;
-
- devPriv = (afbPrivGC *)(pGC->devPrivates[afbGCPrivateIndex].ptr);
-
- if (mode == CoordModePrevious || shape != Convex ||
- REGION_NUM_RECTS(pGC->pCompositeClip) != 1) {
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
- origin = *((int *) &pDrawable->x);
- origin -= (origin & 0x8000) << 1;
- extents = &pGC->pCompositeClip->extents;
- vertex1 = *((int *) &extents->x1) - origin;
- vertex2 = *((int *) &extents->x2) - origin - 0x00010001;
- clip = 0;
- y = 32767;
- maxy = 0;
- vertex2p = (int *) ptsIn;
- endp = vertex2p + count;
- while (count--) {
- c = *vertex2p;
- clip |= (c - vertex1) | (vertex2 - c);
- c = intToY(c);
- if (c < y) {
- y = c;
- vertex1p = vertex2p;
- }
- vertex2p++;
- if (c > maxy)
- maxy = c;
- }
- if (y == maxy)
- return;
-
- if (clip & 0x80008000) {
- miFillPolygon (pDrawable, pGC, shape, mode, vertex2p - (int *) ptsIn, ptsIn);
- return;
- }
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, nlwidth, sizeDst, depthDst,
- addrl);
- rrops = devPriv->rrops;
- addrl = afbScanlineDelta(addrl, y + pDrawable->y, nlwidth);
- origin = intToX(origin);
- vertex2p = vertex1p;
- vertex2 = vertex1 = *vertex2p++;
- if (vertex2p == endp)
- vertex2p = (int *) ptsIn;
-#define Setup(c,x,vertex,dx,dy,e,sign,step) {\
- x = intToX(vertex); \
- if ((dy = intToY(c) - y)) { \
- dx = intToX(c) - x; \
- step = 0; \
- if (dx >= 0) { \
- e = 0; \
- sign = 1; \
- if (dx >= dy) {\
- step = dx / dy; \
- dx = dx % dy; \
- } \
- } else { \
- e = 1 - dy; \
- sign = -1; \
- dx = -dx; \
- if (dx >= dy) { \
- step = - (dx / dy); \
- dx = dx % dy; \
- } \
- } \
- } \
- x += origin; \
- vertex = c; \
-}
-
-#define Step(x,dx,dy,e,sign,step) {\
- x += step; \
- if ((e += dx) > 0) { \
- x += sign; \
- e -= dy; \
- } \
-}
- for (;;) {
- if (y == intToY(vertex1)) {
- do {
- if (vertex1p == (int *) ptsIn)
- vertex1p = endp;
- c = *--vertex1p;
- Setup (c,x1,vertex1,dx1,dy1,e1,sign1,step1)
- } while (y >= intToY(vertex1));
- h = dy1;
- } else {
- Step(x1,dx1,dy1,e1,sign1,step1)
- h = intToY(vertex1) - y;
- }
- if (y == intToY(vertex2)) {
- do {
- c = *vertex2p++;
- if (vertex2p == endp)
- vertex2p = (int *) ptsIn;
- Setup (c,x2,vertex2,dx2,dy2,e2,sign2,step2)
- } while (y >= intToY(vertex2));
- if (dy2 < h)
- h = dy2;
- } else {
- Step(x2,dx2,dy2,e2,sign2,step2)
- if ((c = (intToY(vertex2) - y)) < h)
- h = c;
- }
- /* fill spans for this segment */
- y += h;
- for (;;) {
- l = x1;
- r = x2;
- nmiddle = x2 - x1;
- if (nmiddle < 0) {
- nmiddle = -nmiddle;
- l = x2;
- r = x1;
- }
- c = l & PIM;
- l -= c;
- l = l >> PWSH;
- addr = addrl + l;
- if (c + nmiddle < PPW) {
- mask = SCRRIGHT (bits,c) ^ SCRRIGHT (bits,c+nmiddle);
- for (pdst = addr, d = 0; d < depthDst; d++, pdst += sizeDst) { /* @@@ NEXT PLANE @@@ */
- switch (rrops[d]) {
- case RROP_BLACK:
- *pdst &= ~mask;
- break;
- case RROP_WHITE:
- *pdst |= mask;
- break;
- case RROP_INVERT:
- *pdst ^= mask;
- break;
- case RROP_NOP:
- break;
- }
- }
- } else {
- if (c) {
- mask = SCRRIGHT(bits, c);
- for (pdst = addr, d = 0; d < depthDst; d++, pdst += sizeDst) { /* @@@ NEXT PLANE @@@ */
- switch (rrops[d]) {
- case RROP_BLACK:
- *pdst &= ~mask;
- break;
- case RROP_WHITE:
- *pdst |= mask;
- break;
- case RROP_INVERT:
- *pdst ^= mask;
- break;
- case RROP_NOP:
- break;
- }
- }
- nmiddle += c - PPW;
- addr++;
- }
- nmiddle >>= PWSH;
- mask = ~SCRRIGHT(bits, r & PIM);
-
- for (d = 0; d < depthDst; d++, addr += sizeDst) { /* @@@ NEXT PLANE @@@ */
- n = nmiddle;
- pdst = addr;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- Duff (n, *pdst++ = 0;)
- if (mask)
- *pdst &= ~mask;
- break;
- case RROP_WHITE:
- Duff (n, *pdst++ = ~0;);
- if (mask)
- *pdst |= mask;
- break;
- case RROP_INVERT:
- Duff (n, *pdst++ ^= ~0;);
- if (mask)
- *pdst ^= mask;
- break;
- case RROP_NOP:
- break;
- }
- }
- }
- if (!--h)
- break;
- afbScanlineInc(addrl, nlwidth);
- Step(x1,dx1,dy1,e1,sign1,step1)
- Step(x2,dx2,dy2,e2,sign2,step2)
- }
- if (y == maxy)
- break;
- afbScanlineInc(addrl, nlwidth);
- }
-}
diff --git a/nx-X11/programs/Xserver/afb/afbplygblt.c b/nx-X11/programs/Xserver/afb/afbplygblt.c
deleted file mode 100644
index 7d4f5ddd7..000000000
--- a/nx-X11/programs/Xserver/afb/afbplygblt.c
+++ /dev/null
@@ -1,465 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbplygblt.c,v 3.2tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbimggblt.c,v 5.17 94/04/17 20:28:25 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "afb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-/*
- this works for fonts with glyphs <= 32 bits wide.
-
- the clipping calculations are done for worst-case fonts.
-we make no assumptions about the heights, widths, or bearings
-of the glyphs. if we knew that the glyphs are all the same height,
-we could clip the tops and bottoms per clipping box, rather
-than per character per clipping box. if we knew that the glyphs'
-left and right bearings were wlle-behaved, we could clip a single
-character at the start, output until the last unclipped
-character, and then clip the last one. this is all straightforward
-to determine based on max-bounds and min-bounds from the font.
- there is some inefficiency introduced in the per-character
-clipping to make what's going on clearer.
-
- (it is possible, for example, for a font to be defined in which the
-next-to-last character in a font would be clipped out, but the last
-one wouldn't. the code below deals with this.)
-
-*/
-
-void
-afbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- ExtentInfoRec info; /* used by QueryGlyphExtents() */
- BoxRec bbox; /* string's bounding box */
-
- CharInfoPtr pci;
- int xorg, yorg; /* origin of drawable in bitmap */
- int widthDst; /* width of dst in longwords */
-
- /* these keep track of the character origin */
- PixelType *pdstBase;
- /* points to longword with character origin */
- int xchar; /* xorigin of char (mod 32) */
-
- /* these are used for placing the glyph */
- register int xoff; /* x offset of left edge of glyph (mod 32) */
- register PixelType *pdst; /* pointer to current longword in dst */
-
- register int d;
- int depthDst;
- int sizeDst;
- int hSave;
- int w; /* width of glyph in bits */
- int h; /* height of glyph */
- int widthGlyph; /* width of glyph, in bytes */
- unsigned char *rrops;
- register unsigned char *pglyph;
- /* pointer to current row of glyph */
- unsigned char *pglyphSave;
-
- /* used for putting down glyph */
- register PixelType tmpSrc;
- /* for getting bits from glyph */
- register PixelType startmask;
- register PixelType endmask;
-
- register int nFirst; /* bits of glyph in current longword */
- PixelType *pdstSave;
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, widthDst, sizeDst, depthDst,
- pdstBase);
-
- QueryGlyphExtents(pGC->font, ppci, (unsigned long)nglyph, &info);
-
- x += xorg;
- y += yorg;
-
- bbox.x1 = x + info.overallLeft;
- bbox.x2 = x + info.overallRight;
- bbox.y1 = y - info.overallAscent;
- bbox.y2 = y + info.overallDescent;
-
- rrops = ((afbPrivGCPtr) pGC->devPrivates[afbGCPrivateIndex].ptr)->rrops;
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox)) {
- case rgnOUT:
- break;
- case rgnIN:
- pdstBase = afbScanlineNoBankSwitch(pdstBase, x, y, widthDst);
- xchar = x & PIM;
-
- while(nglyph--) {
- pci = *ppci;
- pglyphSave = FONTGLYPHBITS(pglyphBase, pci);
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- hSave = pci->metrics.ascent + pci->metrics.descent;
- widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
- /* start at top scanline of glyph */
- pdstSave = afbScanlineDelta(pdstBase, -pci->metrics.ascent,
- widthDst);
-
- /* find correct word in scanline and x offset within it
- for left edge of glyph
- */
- xoff = xchar + pci->metrics.leftSideBearing;
- if (xoff > PLST) {
- pdstSave++;
- xoff &= PIM;
- } else if (xoff < 0) {
- xoff += PPW;
- pdstSave--;
- }
-
- for (d = 0; d < depthDst; d++) {
- h = hSave;
- pdst = pdstSave;
- pdstSave += sizeDst; /* @@@ NEXT PLANE @@@ */
- pglyph = pglyphSave;
-
- if ((xoff + w) <= PPW) {
- /* glyph all in one longword */
- maskpartialbits(xoff, w, startmask);
- switch (rrops[d]) {
- case RROP_WHITE:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst |= (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_BLACK:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst ^= (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- }
- } else {
- /* glyph crosses longword boundary */
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- switch (rrops[d]) {
- case RROP_WHITE:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst |= (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) |= (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_BLACK:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) &= ~(SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst ^= (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) ^= (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- }
- } /* glyph crosses longwords boundary */
- } /* depth loop */
- /* update character origin */
- x += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST) {
- xchar -= PPW;
- pdstBase++;
- } else if (xchar < 0) {
- xchar += PPW;
- pdstBase--;
- }
- ppci++;
- } /* while nglyph-- */
- break;
- case rgnPART:
- {
- afbTEXTPOS *ppos;
- int nbox;
- BoxPtr pbox;
- RegionPtr cclip;
- int xpos; /* x position of char origin */
- int i;
- BoxRec clip;
- int leftEdge, rightEdge;
- int topEdge, bottomEdge;
- int glyphRow; /* first row of glyph not wholly
- clipped out */
- int glyphCol; /* leftmost visible column of glyph */
-#if GETLEFTBITS_ALIGNMENT > 1
- int getWidth; /* bits to get from glyph */
-#endif
-
- if(!(ppos = (afbTEXTPOS *)ALLOCATE_LOCAL(nglyph * sizeof(afbTEXTPOS))))
- return;
-
- pdstBase = afbScanlineNoBankSwitch(pdstBase, x, y, widthDst);
- xpos = x;
- xchar = xpos & PIM;
-
- for (i = 0; i < nglyph; i++) {
- pci = ppci[i];
-
- ppos[i].xpos = xpos;
- ppos[i].xchar = xchar;
- ppos[i].leftEdge = xpos + pci->metrics.leftSideBearing;
- ppos[i].rightEdge = xpos + pci->metrics.rightSideBearing;
- ppos[i].topEdge = y - pci->metrics.ascent;
- ppos[i].bottomEdge = y + pci->metrics.descent;
- ppos[i].pdstBase = pdstBase;
- ppos[i].widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
-
- xpos += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST) {
- xchar &= PIM;
- pdstBase++;
- } else if (xchar < 0) {
- xchar += PPW;
- pdstBase--;
- }
- }
-
- cclip = pGC->pCompositeClip;
- pbox = REGION_RECTS(cclip);
- nbox = REGION_NUM_RECTS(cclip);
-
- /* HACK ALERT
- since we continue out of the loop below so often, it
- is easier to increment pbox at the top than at the end.
- don't try this at home.
- */
- pbox--;
- while(nbox--) {
- pbox++;
- clip.x1 = max(bbox.x1, pbox->x1);
- clip.y1 = max(bbox.y1, pbox->y1);
- clip.x2 = min(bbox.x2, pbox->x2);
- clip.y2 = min(bbox.y2, pbox->y2);
- if ((clip.x2<=clip.x1) || (clip.y2<=clip.y1))
- continue;
-
- for(i=0; i<nglyph; i++) {
- pci = ppci[i];
- xchar = ppos[i].xchar;
-
- /* clip the left and right edges */
- if (ppos[i].leftEdge < clip.x1)
- leftEdge = clip.x1;
- else
- leftEdge = ppos[i].leftEdge;
-
- if (ppos[i].rightEdge > clip.x2)
- rightEdge = clip.x2;
- else
- rightEdge = ppos[i].rightEdge;
-
- w = rightEdge - leftEdge;
- if (w <= 0)
- continue;
-
- /* clip the top and bottom edges */
- if (ppos[i].topEdge < clip.y1)
- topEdge = clip.y1;
- else
- topEdge = ppos[i].topEdge;
-
- if (ppos[i].bottomEdge > clip.y2)
- bottomEdge = clip.y2;
- else
- bottomEdge = ppos[i].bottomEdge;
-
- hSave = bottomEdge - topEdge;
- if (hSave <= 0)
- continue;
-
- glyphRow = (topEdge - y) + pci->metrics.ascent;
- widthGlyph = ppos[i].widthGlyph;
- pglyphSave = FONTGLYPHBITS(pglyphBase, pci);
- pglyphSave += (glyphRow * widthGlyph);
-
- glyphCol = (leftEdge - ppos[i].xpos) -
- (pci->metrics.leftSideBearing);
-#if GETLEFTBITS_ALIGNMENT > 1
- getWidth = w + glyphCol;
-#endif
-
- pdstSave = afbScanlineDelta(ppos[i].pdstBase, -(y-topEdge),
- widthDst);
- xoff = xchar + (leftEdge - ppos[i].xpos);
- if (xoff > PLST) {
- xoff &= PIM;
- pdstSave++;
- } else if (xoff < 0) {
- xoff += PPW;
- pdstSave--;
- }
-
- for (d = 0; d < depthDst; d++) {
- h = hSave;
- pdst = pdstSave;
- pdstSave += sizeDst; /* @@@ NEXT PLANE @@@ */
- pglyph = pglyphSave;
-
- if ((xoff + w) <= PPW) {
- maskpartialbits(xoff, w, startmask);
- switch (rrops[d]) {
- case RROP_WHITE:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst |= (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_BLACK:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst ^= (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- }
- } else {
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- switch (rrops[d]) {
- case RROP_WHITE:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst |= (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) |= (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_BLACK:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) &= ~(SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst ^= (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) ^= (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- afbScanlineInc(pdst, widthDst);
- }
- break;
- }
- }
- } /* depth */
- } /* for each glyph */
- } /* while nbox-- */
- DEALLOCATE_LOCAL(ppos);
- break;
- }
-
- default:
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/afb/afbpntarea.c b/nx-X11/programs/Xserver/afb/afbpntarea.c
deleted file mode 100644
index 648a2d19c..000000000
--- a/nx-X11/programs/Xserver/afb/afbpntarea.c
+++ /dev/null
@@ -1,657 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbpntarea.c,v 3.0 1996/08/18 01:45:49 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbpntarea.c,v 5.7 94/04/17 20:28:29 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "afb.h"
-#include "maskbits.h"
-
-/*
- the solid fillers are called for rectangles and window backgrounds.
- the boxes are already translated.
- maybe this should always take a pixmap instead of a drawable?
-
- NOTE:
- iy = ++iy < tileHeight ? iy : 0
-is equivalent to iy%= tileheight, and saves a division.
-*/
-
-/*ARGSUSED*/
-void
-afbSolidFillArea (pDraw, nbox, pbox, rrops)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- register unsigned char *rrops;
-{
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- register int h; /* height of current box */
- register PixelType *p; /* pointer to bits we're writing */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType startmask;
- register PixelType endmask;
- /* masks for reggedy bits at either end of line */
- register int nlwExtra;
- /* to get from right of box to left of next span */
- int nlwMiddle; /* number of longwords between sides of boxes */
- PixelType *pbits; /* pointer to start of drawable */
- PixelType *saveP;
- int saveH;
- int depthDst;
- int sizeDst;
- register int d;
-
- afbGetPixelWidthSizeDepthAndPointer(pDraw, nlwidth, sizeDst, depthDst,
- pbits);
-
- while (nbox--) {
- w = pbox->x2 - pbox->x1;
- saveH = pbox->y2 - pbox->y1;
-
- saveP = afbScanline(pbits, pbox->x1, pbox->y1, nlwidth);
-
- if ( ((pbox->x1 & PIM) + w) < PPW) {
- for (d = 0; d < depthDst; d++) {
- h = saveH;
- p = saveP;
- saveP += sizeDst; /* @@@ NEXT PLANE @@@ */
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = nlwidth;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- Duff(h, *p &= ~startmask; afbScanlineInc(p, nlwExtra));
- break;
- case RROP_WHITE:
- Duff(h, *p |= startmask; afbScanlineInc(p, nlwExtra));
- break;
- case RROP_INVERT:
- Duff(h, *p ^= startmask; afbScanlineInc(p, nlwExtra));
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ..) */
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
-
- for (d = 0; d < depthDst; d++) {
- h = saveH;
- p = saveP;
- saveP += sizeDst; /* @@@ NEXT PLANE @@@ */
- nlwExtra = nlwidth - nlwMiddle;
-
- if (startmask && endmask) {
- nlwExtra -= 1;
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- nlw = nlwMiddle;
- *p &= ~startmask;
- p++;
- Duff(nlw, *p++ = 0);
- *p &= ~endmask;
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- nlw = nlwMiddle;
- *p |= startmask;
- p++;
- Duff(nlw, *p++ = ~0);
- *p |= endmask;
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- nlw = nlwMiddle;
- *p ^= startmask;
- p++;
- Duff(nlw, *p++ ^= ~0);
- *p ^= endmask;
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- }
- } else if (startmask && !endmask) {
- nlwExtra -= 1;
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- nlw = nlwMiddle;
- *p &= ~startmask;
- p++;
- Duff(nlw, *p++ = 0);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- nlw = nlwMiddle;
- *p |= startmask;
- p++;
- Duff(nlw, *p++ = ~0);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- nlw = nlwMiddle;
- *p ^= startmask;
- p++;
- Duff(nlw, *p++ ^= ~0);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- }
- } else if (!startmask && endmask) {
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ = 0);
- *p &= ~endmask;
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ = ~0);
- *p |= endmask;
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ ^= ~0);
- *p ^= endmask;
- afbScanlineInc(p, nlwExtra);
- }
- case RROP_NOP:
- break;
- }
- } else { /* no ragged bits at either end */
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ = 0);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ = ~0);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ ^= ~0);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- }
- } /* for (d = 0 ... ) */
- }
- pbox++;
- }
-}
-
-/* stipple a list of boxes -
-
-you can use the reduced rasterop for stipples. if rrop is
-black, AND the destination with (not stipple pattern). if rrop is
-white OR the destination with the stipple pattern. if rrop is invert,
-XOR the destination with the stipple pattern.
-*/
-
-/*ARGSUSED*/
-void
-afbStippleAreaPPW (pDraw, nbox, pbox, pstipple, rrops)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- PixmapPtr pstipple;
- unsigned char *rrops;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
- register PixelType srcpix;
-
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType *p; /* pointer to bits we're writing */
- register int h; /* height of current box */
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwExtra; /* to get from right of box to left of next span */
- int sizeDst;
- int depthDst;
- int d;
- int saveIy;
- register int iy; /* index of current scanline in tile */
- PixelType *pbits; /* pointer to start of drawable */
- PixelType *pBase;
-
- afbGetPixelWidthSizeDepthAndPointer(pDraw, nlwidth, sizeDst, depthDst,
- pBase);
-
- tileHeight = pstipple->drawable.height;
- psrc = (PixelType *)(pstipple->devPrivate.ptr);
-
- while (nbox--) {
- w = pbox->x2 - pbox->x1;
- saveIy = pbox->y1 % tileHeight;
- pbits = pBase;
-
- if ( ((pbox->x1 & PIM) + w) < PPW) {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = nlwidth;
- for (d = 0; d < depthDst; d++) {
- p = afbScanline(pbits, pbox->x1, pbox->y1, nlwidth);
- pbits += sizeDst; /* @@@ NEXT PLANE @@@ */
- iy = saveIy;
- h = pbox->y2 - pbox->y1;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- *p &= ~(srcpix & startmask);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- *p |= (srcpix & startmask);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- *p ^= (srcpix & startmask);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
-
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
-
- for (d = 0; d < depthDst; d++) {
- nlwExtra = nlwidth - nlwMiddle;
- p = afbScanline(pbits, pbox->x1, pbox->y1, nlwidth);
- pbits += sizeDst; /* @@@ NEXT PLANE @@@ */
- iy = saveIy;
- h = pbox->y2 - pbox->y1;
-
- if (startmask && endmask) {
- nlwExtra -= 1;
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p &= ~(srcpix & startmask);
- p++;
- Duff (nlw, *p++ &= ~srcpix);
- *p &= ~(srcpix & endmask);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p |= (srcpix & startmask);
- p++;
- Duff (nlw, *p++ |= srcpix);
- *p |= (srcpix & endmask);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p ^= (srcpix & startmask);
- p++;
- Duff (nlw, *p++ ^= srcpix);
- *p ^= (srcpix & endmask);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } else if (startmask && !endmask) {
- nlwExtra -= 1;
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p &= ~(srcpix & startmask);
- p++;
- Duff(nlw, *p++ &= ~srcpix);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p |= (srcpix & startmask);
- p++;
- Duff(nlw, *p++ |= srcpix);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p ^= (srcpix & startmask);
- p++;
- Duff(nlw, *p++ ^= srcpix);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } else if (!startmask && endmask) {
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ &= ~srcpix);
- *p &= ~(srcpix & endmask);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ |= srcpix);
- *p |= (srcpix & endmask);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ ^= srcpix);
- *p ^= (srcpix & endmask);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } else { /* no ragged bits at either end */
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ &= ~srcpix);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ |= srcpix);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ ^= srcpix);
- afbScanlineInc(p, nlwExtra);
- }
- break;
- } /* switch */
- }
- } /* for (d = ...) */
- }
- pbox++;
- }
-}
-
-void
-afbStippleArea (pDraw, nbox, pbox, pTile, xOff, yOff, rrops)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- PixmapPtr pTile;
- int xOff;
- int yOff;
- unsigned char *rrops;
-{
- register PixelType *psrc; /* pointer to bits in tile, if needed */
- int nlwidth; /* width in longwords of the drawable */
- register int h; /* height of current box */
- register PixelType *pdst; /* pointer to bits we're writing */
- int sizeDst;
- int depthDst;
- int tileLine;
- int iline;
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- int saveW;
- register int rop;
- PixelType *psrcT;
- int d;
- int nstart;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
- int iy;
- PixelType *pBase; /* pointer to start of drawable */
- PixelType *saveP;
- PixelType *pStartDst;
- PixelType *pStartTile;
- int saveH;
-
- afbGetPixelWidthSizeDepthAndPointer(pDraw, nlwidth, sizeDst, depthDst,
- pBase);
-
- tileHeight = pTile->drawable.height;
- tileWidth = pTile->drawable.width;
- tlwidth = pTile->devKind / sizeof (PixelType);
-
- xSrc = pDraw->x + ((xOff % tileWidth) - tileWidth);
- ySrc = pDraw->y + ((yOff % tileHeight) - tileHeight);
-
- while (nbox--) {
- saveW = pbox->x2 - pbox->x1;
- iline = (pbox->y1 - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr;
- tileLine = iline * tlwidth;
- saveH = pbox->y2 - pbox->y1;
- saveP = afbScanline(pBase, pbox->x1, pbox->y1, nlwidth);
-
- for (d = 0; d < depthDst; d++, saveP += sizeDst) { /* @@@ NEXT PLANE @@@ */
- h = saveH;
- pStartDst = saveP;
- pStartTile = psrcT + tileLine;
- iy = iline;
-
- while (h--) {
- x = pbox->x1;
- width = saveW;
- pdst = pStartDst;
- rop = rrops[d];
-
- while(width > 0) {
- psrc = pStartTile;
- w = min(tileWidth, width);
- if((rem = (x - xSrc) % tileWidth) != 0) {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
- getandputrrop((psrc + endinc), (rem & PIM), (x & PIM),
- w, pdst, rop)
- if((x & PIM) + w >= PPW)
- pdst++;
- } else if(((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- putbitsrrop(*psrc, x & PIM, w, pdst, rop);
- } else {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if(startmask) {
- putbitsrrop(*psrc, (x & PIM), nstart, pdst, rop);
- pdst++;
- if(srcStartOver)
- psrc++;
- }
-
- while(nlMiddle--) {
- getandputrrop0(psrc, nstart, PPW, pdst, rop);
- pdst++;
- psrc++;
- }
-
- if(endmask) {
- getandputrrop0(psrc, nstart, nend, pdst, rop);
- }
- }
- x += w;
- width -= w;
- } /* while (width > 0) */
-
- pStartDst += nlwidth;
- if (++iy >= tileHeight) {
- iy = 0;
- pStartTile = psrcT;
- } else
- pStartTile += tlwidth;
-
- } /* while (h) */
- } /* for (d = ... ) */
- pbox++;
- } /* for each box */
-}
diff --git a/nx-X11/programs/Xserver/afb/afbpntwin.c b/nx-X11/programs/Xserver/afb/afbpntwin.c
deleted file mode 100644
index aaa6847a9..000000000
--- a/nx-X11/programs/Xserver/afb/afbpntwin.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: afbpntwin.c,v 5.12 94/04/17 20:28:30 dpw Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "afb.h"
-#include "maskbits.h"
-#include "mi.h"
-
-void
-afbPaintWindow(pWin, pRegion, what)
- WindowPtr pWin;
- RegionPtr pRegion;
- int what;
-{
- register afbPrivWin *pPrivWin;
- unsigned char rrops[AFB_MAX_DEPTH];
-
- pPrivWin = (afbPrivWin *)(pWin->devPrivates[afbWindowPrivateIndex].ptr);
-
- switch (what) {
- case PW_BACKGROUND:
- switch (pWin->backgroundState) {
- case None:
- return;
- case ParentRelative:
- do {
- pWin = pWin->parent;
- } while (pWin->backgroundState == ParentRelative);
- (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion,
- what);
- return;
- case BackgroundPixmap:
- if (pPrivWin->fastBackground) {
- afbTileAreaPPWCopy((DrawablePtr)pWin,
- REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXcopy,
- pPrivWin->pRotatedBackground, ~0);
- return;
- } else {
- afbTileAreaCopy((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXcopy,
- pWin->background.pixmap, 0, 0, ~0);
- return;
- }
- break;
- case BackgroundPixel:
- afbReduceRop(GXcopy, pWin->background.pixel, ~0,
- pWin->drawable.depth, rrops);
- afbSolidFillArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), rrops);
- return;
- }
- break;
- case PW_BORDER:
- if (pWin->borderIsPixel) {
- afbReduceRop(GXcopy, pWin->border.pixel, ~0, pWin->drawable.depth,
- rrops);
- afbSolidFillArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), rrops);
- return;
- } else if (pPrivWin->fastBorder) {
- afbTileAreaPPWCopy((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXcopy,
- pPrivWin->pRotatedBorder, ~0);
- return;
- }
- break;
- }
- miPaintWindow(pWin, pRegion, what);
-}
diff --git a/nx-X11/programs/Xserver/afb/afbpolypnt.c b/nx-X11/programs/Xserver/afb/afbpolypnt.c
deleted file mode 100644
index 4e9fa0310..000000000
--- a/nx-X11/programs/Xserver/afb/afbpolypnt.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbpolypnt.c,v 3.1 1998/03/20 21:04:56 hohndel Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbpolypnt.c,v 5.6 94/04/17 20:28:30 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "pixmapstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-
-#include "afb.h"
-#include "maskbits.h"
-
-void
-afbPolyPoint(pDrawable, pGC, mode, npt, pptInit)
- register DrawablePtr pDrawable;
- GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt;
- xPoint *pptInit;
-{
-
- register BoxPtr pbox;
- register int nbox;
- register int d;
-
- register PixelType *addrl;
- PixelType *pBase;
- PixelType *pBaseSave;
- int nlwidth;
- int sizeDst;
- int depthDst;
-
- int nptTmp;
- register xPoint *ppt;
-
- register int x;
- register int y;
- register unsigned char *rrops;
- afbPrivGC *pGCPriv;
-
- pGCPriv = (afbPrivGC *) pGC->devPrivates[afbGCPrivateIndex].ptr;
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, nlwidth, sizeDst, depthDst,
- pBaseSave);
-
- rrops = pGCPriv->rrops;
- if ((mode == CoordModePrevious) && (npt > 1))
- for (ppt = pptInit + 1, nptTmp = npt - 1; --nptTmp >= 0; ppt++) {
- ppt->x += (ppt-1)->x;
- ppt->y += (ppt-1)->y;
- }
-
- nbox = REGION_NUM_RECTS(pGC->pCompositeClip);
- pbox = REGION_RECTS(pGC->pCompositeClip);
- for (; --nbox >= 0; pbox++)
- for (d = 0, pBase = pBaseSave; d < depthDst; d++, pBase += sizeDst) { /* @@@ NEXT PLANE @@@ */
- addrl = pBase;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++) {
- x = ppt->x + pDrawable->x;
- y = ppt->y + pDrawable->y;
- if ((x >= pbox->x1) && (x < pbox->x2) &&
- (y >= pbox->y1) && (y < pbox->y2))
- *afbScanline(addrl, x, y, nlwidth) &= mfbGetrmask(x & PIM);
- }
- break;
-
- case RROP_WHITE:
- for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++) {
- x = ppt->x + pDrawable->x;
- y = ppt->y + pDrawable->y;
- if ((x >= pbox->x1) && (x < pbox->x2) &&
- (y >= pbox->y1) && (y < pbox->y2))
- *afbScanline(addrl, x, y, nlwidth) |= mfbGetmask(x & PIM);
- }
- break;
-
- case RROP_INVERT:
- for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++) {
- x = ppt->x + pDrawable->x;
- y = ppt->y + pDrawable->y;
- if ((x >= pbox->x1) && (x < pbox->x2) &&
- (y >= pbox->y1) && (y < pbox->y2))
- *afbScanline(addrl, x, y, nlwidth) ^= mfbGetmask(x & PIM);
- }
- break;
-
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
-}
diff --git a/nx-X11/programs/Xserver/afb/afbpushpxl.c b/nx-X11/programs/Xserver/afb/afbpushpxl.c
deleted file mode 100644
index e62181188..000000000
--- a/nx-X11/programs/Xserver/afb/afbpushpxl.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbpushpxl.c,v 3.1 1998/03/20 21:04:56 hohndel Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbpushpxl.c,v 5.6 94/04/17 20:28:31 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "gcstruct.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-#include "afb.h"
-
-/* afbSolidPP is courtesy of xhacks@csri.toronto.edu
-
- For fillStyle==FillSolid, a monochrome PushPixels can be reduced to
- a ROP in the following way: (Note that the ROP is the same as the
- result of ROP(src=0x3,dst=0x5))
-
- src=0011 0000 0011
- dst=0101 0101 0101
- rop fg=0 fg=1
- GXclear 0x0 0000 0100 0100 0
- GXand 0x1 0001 0100 0101 s&d
- GXandReverse 0x2 0010 0100 0110 s&~d
- GXcopy 0x3 0011 0100 0111 s
- GXandInverted 0x4 0100 0101 0100 ~s&d
- GXnoop 0x5 0101 0101 0101 d
- GXxor 0x6 0110 0101 0110 s^d
- GXor 0x7 0111 0101 0111 s|d
- GXnor 0x8 1000 0110 0100 ~s&~d
- GXequiv 0x9 1001 0110 0101 ~s^d
- GXinvert 0xa 1010 0110 0110 ~d
- GXorReverse 0xb 1011 0110 0111 s|~d
- GXcopyInverted 0xc 1100 0111 0100 ~s
- GXorInverted 0xd 1101 0111 0101 ~s|d
- GXnand 0xe 1110 0111 0110 ~s|~d
- GXset 0xf 1111 0111 0111 1
-
-For src=0: newRop = 0x4|(rop>>2)
-For src=1: newRop = 0x4|(rop&3)
-*/
-
-/* afbSolidPP -- squeegees the forground color of pGC through pBitMap
- * into pDrawable. pBitMap is a stencil (dx by dy of it is used, it may
- * be bigger) which is placed on the drawable at xOrg, yOrg. Where a 1 bit
- * is set in the bitmap, the fill style is put onto the drawable using
- * the GC's logical function. The drawable is not changed where the bitmap
- * has a zero bit or outside the area covered by the stencil.
- */
-void
-afbSolidPP(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
- GCPtr pGC;
- PixmapPtr pBitMap;
- DrawablePtr pDrawable;
- int dx, dy, xOrg, yOrg;
-{
- unsigned char alu;
- RegionRec rgnDst;
- DDXPointPtr pptSrc;
- BoxRec srcBox;
- register DDXPointPtr ppt;
- register BoxPtr pbox;
- int i;
-
- if (!pGC->planemask & 1) return;
-
- /* compute the reduced rop function */
- alu = pGC->alu;
- if (!(pGC->fgPixel&1)) alu >>= 2;
- alu = (alu & 0x3) | 0x4;
- if (alu == GXnoop) return;
-
- srcBox.x1 = xOrg;
- srcBox.y1 = yOrg;
- srcBox.x2 = xOrg + dx;
- srcBox.y2 = yOrg + dy;
- REGION_INIT(pGC->pScreen, &rgnDst, &srcBox, 1);
-
- /* clip the shape of the dst to the destination composite clip */
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, pGC->pCompositeClip);
-
- if (!REGION_NIL(&rgnDst)) {
- i = REGION_NUM_RECTS(&rgnDst);
- pptSrc = (DDXPointPtr)ALLOCATE_LOCAL(i * sizeof(DDXPointRec));
- if(pptSrc) {
- for (pbox = REGION_RECTS(&rgnDst), ppt = pptSrc; --i >= 0;
- pbox++, ppt++) {
- ppt->x = pbox->x1 - xOrg;
- ppt->y = pbox->y1 - yOrg;
- }
- afbDoBitblt((DrawablePtr)pBitMap, pDrawable, alu, &rgnDst, pptSrc,
- pGC->planemask);
- DEALLOCATE_LOCAL(pptSrc);
- }
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
-}
-
-#define NPT 128
-
-/* afbPushPixels -- squeegees the forground color of pGC through pBitMap
- * into pDrawable. pBitMap is a stencil (dx by dy of it is used, it may
- * be bigger) which is placed on the drawable at xOrg, yOrg. Where a 1 bit
- * is set in the bitmap, the fill style is put onto the drawable using
- * the GC's logical function. The drawable is not changed where the bitmap
- * has a zero bit or outside the area covered by the stencil.
- */
-void
-afbPushPixels(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
- GCPtr pGC;
- PixmapPtr pBitMap;
- DrawablePtr pDrawable;
- int dx, dy, xOrg, yOrg;
-{
- int h, dxDivPPW, ibEnd;
- PixelType *pwLineStart;
- register PixelType *pw, *pwEnd;
- register PixelType mask;
- register int ib;
- register PixelType w;
- register int ipt; /* index into above arrays */
- Bool fInBox;
- DDXPointRec pt[NPT];
- int width[NPT];
-
- /* Now scan convert the pixmap and use the result to call fillspans in
- * in the drawable with the original GC */
- ipt = 0;
- dxDivPPW = dx/PPW;
- for (h = 0; h < dy; h++) {
-
- pw = (PixelType *)
- (((char *)(pBitMap->devPrivate.ptr))+(h * pBitMap->devKind));
- pwLineStart = pw;
- /* Process all words which are fully in the pixmap */
-
- fInBox = FALSE;
- pwEnd = pwLineStart + dxDivPPW;
- while(pw < pwEnd) {
- w = *pw;
- mask = mfbGetendtab(1);
- for(ib = 0; ib < PPW; ib++) {
- if(w & mask) {
- if(!fInBox) {
- pt[ipt].x = ((pw - pwLineStart) << PWSH) + ib + xOrg;
- pt[ipt].y = h + yOrg;
- /* start new box */
- fInBox = TRUE;
- }
- } else {
- if(fInBox) {
- width[ipt] = ((pw - pwLineStart) << PWSH) +
- ib + xOrg - pt[ipt].x;
- if (++ipt >= NPT) {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt,
- width, TRUE);
- ipt = 0;
- }
- /* end box */
- fInBox = FALSE;
- }
- }
- mask = SCRRIGHT(mask, 1);
- }
- pw++;
- }
- ibEnd = dx & PIM;
- if(ibEnd) {
- /* Process final partial word on line */
- w = *pw;
- mask = mfbGetendtab(1);
- for(ib = 0; ib < ibEnd; ib++) {
- if(w & mask) {
- if(!fInBox) {
- /* start new box */
- pt[ipt].x = ((pw - pwLineStart) << PWSH) + ib + xOrg;
- pt[ipt].y = h + yOrg;
- fInBox = TRUE;
- }
- } else {
- if(fInBox) {
- /* end box */
- width[ipt] = ((pw - pwLineStart) << PWSH) +
- ib + xOrg - pt[ipt].x;
- if (++ipt >= NPT) {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt,
- width, TRUE);
- ipt = 0;
- }
- fInBox = FALSE;
- }
- }
- mask = SCRRIGHT(mask, 1);
- }
- }
- /* If scanline ended with last bit set, end the box */
- if(fInBox) {
- width[ipt] = dx + xOrg - pt[ipt].x;
- if (++ipt >= NPT) {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt, width, TRUE);
- ipt = 0;
- }
- }
- }
- /* Flush any remaining spans */
- if (ipt) {
- (*pGC->ops->FillSpans)(pDrawable, pGC, ipt, pt, width, TRUE);
- }
-}
diff --git a/nx-X11/programs/Xserver/afb/afbscrinit.c b/nx-X11/programs/Xserver/afb/afbscrinit.c
deleted file mode 100644
index 2e10ad885..000000000
--- a/nx-X11/programs/Xserver/afb/afbscrinit.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbscrinit.c,v 3.4 1998/07/25 08:50:27 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbscrinit.c,v 5.17 94/04/17 20:28:34 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h> /* for xColorItem */
-#include <X11/Xmd.h>
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-#include "resource.h"
-#include "colormap.h"
-#include "afb.h"
-#include "mistruct.h"
-#include "dix.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "migc.h"
-#include "servermd.h"
-
-#ifdef PIXMAP_PER_WINDOW
-int frameWindowPrivateIndex;
-#endif
-int afbWindowPrivateIndex;
-int afbGCPrivateIndex;
-int afbScreenPrivateIndex;
-
-static unsigned long afbGeneration = 0;
-
-BSFuncRec afbBSFuncRec = {
- afbSaveAreas,
- afbRestoreAreas,
- (BackingStoreSetClipmaskRgnProcPtr) 0,
- (BackingStoreGetImagePixmapProcPtr) 0,
- (BackingStoreGetSpansPixmapProcPtr) 0,
-};
-
-Bool
-afbCloseScreen(index, pScreen)
- int index;
- ScreenPtr pScreen;
-{
- int d;
- DepthPtr depths = pScreen->allowedDepths;
-
- for (d = 0; d < pScreen->numDepths; d++)
- xfree(depths[d].vids);
- xfree(depths);
- xfree(pScreen->visuals);
- xfree(pScreen->devPrivates[afbScreenPrivateIndex].ptr);
- return(TRUE);
-}
-
-Bool
-afbCreateScreenResources(pScreen)
- ScreenPtr pScreen;
-{
- Bool retval;
-
- pointer oldDevPrivate = pScreen->devPrivate;
-
- pScreen->devPrivate = pScreen->devPrivates[afbScreenPrivateIndex].ptr;
- retval = miCreateScreenResources(pScreen);
-
- /* Modify screen's pixmap devKind value stored off devPrivate to
- * be the width of a single plane in longs rather than the width
- * of a chunky screen in longs as incorrectly setup by the mi routine.
- */
- ((PixmapPtr)pScreen->devPrivate)->devKind = BitmapBytePad(pScreen->width);
- pScreen->devPrivates[afbScreenPrivateIndex].ptr = pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
- return(retval);
-}
-
-Bool
-afbAllocatePrivates(pScreen, pWinIndex, pGCIndex)
- ScreenPtr pScreen;
- int *pWinIndex, *pGCIndex;
-{
- if (afbGeneration != serverGeneration) {
-#ifdef PIXMAP_PER_WINDOW
- frameWindowPrivateIndex = AllocateWindowPrivateIndex();
-#endif
- afbWindowPrivateIndex = AllocateWindowPrivateIndex();
- afbGCPrivateIndex = AllocateGCPrivateIndex();
- afbGeneration = serverGeneration;
- }
- if (pWinIndex)
- *pWinIndex = afbWindowPrivateIndex;
- if (pGCIndex)
- *pGCIndex = afbGCPrivateIndex;
-
- afbScreenPrivateIndex = AllocateScreenPrivateIndex();
- pScreen->GetWindowPixmap = afbGetWindowPixmap;
- pScreen->SetWindowPixmap = afbSetWindowPixmap;
- return(AllocateWindowPrivate(pScreen, afbWindowPrivateIndex, sizeof(afbPrivWin)) &&
- AllocateGCPrivate(pScreen, afbGCPrivateIndex, sizeof(afbPrivGC)));
-}
-
-/* dts * (inch/dot) * (25.4 mm / inch) = mm */
-Bool
-afbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
-{
- VisualPtr visuals;
- DepthPtr depths;
- int nvisuals;
- int ndepths;
- int rootdepth;
- VisualID defaultVisual;
- pointer oldDevPrivate;
-
- rootdepth = 0;
- if (!afbInitVisuals(&visuals, &depths, &nvisuals, &ndepths, &rootdepth,
- &defaultVisual, 256, 8)) {
- ErrorF("afbInitVisuals: FALSE\n");
- return FALSE;
- }
- if (!afbAllocatePrivates(pScreen,(int *)NULL, (int *)NULL)) {
- ErrorF("afbAllocatePrivates: FALSE\n");
- return FALSE;
- }
-
- pScreen->defColormap = (Colormap)FakeClientID(0);
- /* whitePixel, blackPixel */
- pScreen->blackPixel = 0;
- pScreen->whitePixel = 0;
- pScreen->QueryBestSize = afbQueryBestSize;
- /* SaveScreen */
- pScreen->GetImage = afbGetImage;
- pScreen->GetSpans = afbGetSpans;
- pScreen->CreateWindow = afbCreateWindow;
- pScreen->DestroyWindow = afbDestroyWindow;
- pScreen->PositionWindow = afbPositionWindow;
- pScreen->ChangeWindowAttributes = afbChangeWindowAttributes;
- pScreen->RealizeWindow = afbMapWindow;
- pScreen->UnrealizeWindow = afbUnmapWindow;
- pScreen->PaintWindowBackground = afbPaintWindow;
- pScreen->PaintWindowBorder = afbPaintWindow;
- pScreen->CopyWindow = afbCopyWindow;
- pScreen->CreatePixmap = afbCreatePixmap;
- pScreen->DestroyPixmap = afbDestroyPixmap;
- pScreen->RealizeFont = afbRealizeFont;
- pScreen->UnrealizeFont = afbUnrealizeFont;
- pScreen->CreateGC = afbCreateGC;
- pScreen->CreateColormap = afbInitializeColormap;
- pScreen->DestroyColormap = (void (*)())NoopDDA;
- pScreen->InstallColormap = afbInstallColormap;
- pScreen->UninstallColormap = afbUninstallColormap;
- pScreen->ListInstalledColormaps = afbListInstalledColormaps;
- pScreen->StoreColors = (void (*)())NoopDDA;
- pScreen->ResolveColor = afbResolveColor;
- pScreen->BitmapToRegion = afbPixmapToRegion;
- oldDevPrivate = pScreen->devPrivate;
- if (!miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, rootdepth,
- ndepths, depths, defaultVisual, nvisuals, visuals)) {
- ErrorF("miScreenInit: FALSE\n");
- return FALSE;
- }
-
- pScreen->CloseScreen = afbCloseScreen;
- pScreen->CreateScreenResources = afbCreateScreenResources;
- pScreen->BackingStoreFuncs = afbBSFuncRec;
-
- pScreen->devPrivates[afbScreenPrivateIndex].ptr = pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
-
- return TRUE;
-}
-
-PixmapPtr
-afbGetWindowPixmap(pWin)
- WindowPtr pWin;
-{
-#ifdef PIXMAP_PER_WINDOW
- return (PixmapPtr)(pWin->devPrivates[frameWindowPrivateIndex].ptr);
-#else
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- return (* pScreen->GetScreenPixmap)(pScreen);
-#endif
-}
-
-void
-afbSetWindowPixmap(pWin, pPix)
- WindowPtr pWin;
- PixmapPtr pPix;
-{
-#ifdef PIXMAP_PER_WINDOW
- pWin->devPrivates[frameWindowPrivateIndex].ptr = (pointer)pPix;
-#else
- (* pWin->drawable.pScreen->SetScreenPixmap)(pPix);
-#endif
-}
diff --git a/nx-X11/programs/Xserver/afb/afbsetsp.c b/nx-X11/programs/Xserver/afb/afbsetsp.c
deleted file mode 100644
index 3a078ffa9..000000000
--- a/nx-X11/programs/Xserver/afb/afbsetsp.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbsetsp.c,v 3.2 2001/08/01 00:44:47 tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbsetsp.c,v 5.8 94/04/17 20:28:34 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "misc.h"
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "afb.h"
-#include "maskbits.h"
-
-#include "servermd.h"
-
-
-/* afbSetScanline -- copies the bits from psrc to the drawable starting at
- * (xStart, y) and continuing to (xEnd, y). xOrigin tells us where psrc
- * starts on the scanline. (I.e., if this scanline passes through multiple
- * boxes, we may not want to start grabbing bits at psrc but at some offset
- * further on.)
- */
-void
-afbSetScanline(y, xOrigin, xStart, xEnd, psrc, alu, pdstBase, widthDst,
- sizeDst, depthDst, sizeSrc)
- int y;
- int xOrigin; /* where this scanline starts */
- int xStart; /* first bit to use from scanline */
- int xEnd; /* last bit to use from scanline + 1 */
- register PixelType *psrc;
- register int alu; /* raster op */
- PixelType *pdstBase; /* start of the drawable */
- int widthDst; /* width of drawable in words */
- int sizeDst;
- int depthDst;
- int sizeSrc;
-{
- int w; /* width of scanline in bits */
- register PixelType *pdst; /* where to put the bits */
- register PixelType tmpSrc; /* scratch buffer to collect bits in */
- int dstBit; /* offset in bits from beginning of
- * word */
- register int nstart; /* number of bits from first partial */
- register int nend; /* " " last partial word */
- int offSrc;
- PixelType startmask, endmask;
- PixelType *savePsrc = psrc + ((xStart - xOrigin) >> PWSH);
- int nlMiddle, nl;
- int d;
-
- for (d = 0; d < depthDst; d++) {
- pdst = afbScanline(pdstBase, xStart, y, widthDst) + sizeDst * d; /* @@@ NEXT PLANE @@@ */
- psrc = savePsrc + sizeSrc * d; /* @@@ NEXT PLANE @@@ */
- offSrc = (xStart - xOrigin) & PIM;
- w = xEnd - xStart;
- dstBit = xStart & PIM;
-
- if (dstBit + w <= PPW) {
- getandputrop(psrc, offSrc, dstBit, w, pdst, alu)
- } else {
- maskbits(xStart, w, startmask, endmask, nlMiddle);
- if (startmask)
- nstart = PPW - dstBit;
- else
- nstart = 0;
- if (endmask)
- nend = xEnd & PIM;
- else
- nend = 0;
- if (startmask) {
- getandputrop(psrc, offSrc, dstBit, nstart, pdst, alu)
- pdst++;
- offSrc += nstart;
- if (offSrc > PLST) {
- psrc++;
- offSrc -= PPW;
- }
- }
- nl = nlMiddle;
- while (nl--) {
- getbits(psrc, offSrc, PPW, tmpSrc);
- DoRop(*pdst, alu, tmpSrc, *pdst);
- pdst++;
- psrc++;
- }
- if (endmask) {
- getandputrop0(psrc, offSrc, nend, pdst, alu);
- }
- }
- }
-}
-
-
-
-/* SetSpans -- for each span copy pwidth[i] bits from psrc to pDrawable at
- * ppt[i] using the raster op from the GC. If fSorted is TRUE, the scanlines
- * are in increasing Y order.
- * Source bit lines are server scanline padded so that they always begin
- * on a word boundary.
- */
-void
-afbSetSpans(pDrawable, pGC, pcharsrc, ppt, pwidth, nspans, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- char *pcharsrc;
- register DDXPointPtr ppt;
- int *pwidth;
- int nspans;
- int fSorted;
-{
- PixelType *psrc = (PixelType *)pcharsrc;
- PixelType *pdstBase; /* start of dst bitmap */
- int widthDst; /* width of bitmap in words */
- int sizeDst;
- int depthDst;
- int sizeSrc = 0;
- register BoxPtr pbox, pboxLast, pboxTest;
- register DDXPointPtr pptLast;
- int alu;
- RegionPtr prgnDst;
- int xStart, xEnd;
- int yMax;
-
- alu = pGC->alu;
- prgnDst = pGC->pCompositeClip;
-
- pptLast = ppt + nspans;
-
- yMax = pDrawable->y + (int) pDrawable->height;
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, widthDst, sizeDst, depthDst,
- pdstBase);
-
- pbox = REGION_RECTS(prgnDst);
- pboxLast = pbox + REGION_NUM_RECTS(prgnDst);
-
- if(fSorted) {
- /* scan lines sorted in ascending order. Because they are sorted, we
- * don't have to check each scanline against each clip box. We can be
- * sure that this scanline only has to be clipped to boxes at or after the
- * beginning of this y-band
- */
- pboxTest = pbox;
- while(ppt < pptLast) {
- pbox = pboxTest;
- if(ppt->y >= yMax)
- break;
- while(pbox < pboxLast) {
- if(pbox->y1 > ppt->y) {
- /* scanline is before clip box */
- break;
- } else if(pbox->y2 <= ppt->y) {
- /* clip box is before scanline */
- pboxTest = ++pbox;
- continue;
- } else if(pbox->x1 > ppt->x + *pwidth) {
- /* clip box is to right of scanline */
- break;
- } else if(pbox->x2 <= ppt->x) {
- /* scanline is to right of clip box */
- pbox++;
- continue;
- }
-
- /* at least some of the scanline is in the current clip box */
- xStart = max(pbox->x1, ppt->x);
- xEnd = min(ppt->x + *pwidth, pbox->x2);
- sizeSrc = PixmapWidthInPadUnits(*pwidth, 1);
- afbSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu, pdstBase,
- widthDst, sizeDst, depthDst, sizeSrc);
- if(ppt->x + *pwidth <= pbox->x2) {
- /* End of the line, as it were */
- break;
- } else
- pbox++;
- }
- /* We've tried this line against every box; it must be outside them
- * all. move on to the next point */
- ppt++;
- psrc += sizeSrc * depthDst;
- pwidth++;
- }
- } else {
- /* scan lines not sorted. We must clip each line against all the boxes */
- while(ppt < pptLast) {
- if(ppt->y >= 0 && ppt->y < yMax) {
- for(pbox = REGION_RECTS(prgnDst); pbox< pboxLast; pbox++) {
- if(pbox->y1 > ppt->y) {
- /* rest of clip region is above this scanline,
- * skip it */
- break;
- }
- if(pbox->y2 <= ppt->y) {
- /* clip box is below scanline */
- pbox++;
- break;
- }
- if(pbox->x1 <= ppt->x + *pwidth &&
- pbox->x2 > ppt->x) {
- xStart = max(pbox->x1, ppt->x);
- xEnd = min(pbox->x2, ppt->x + *pwidth);
- sizeSrc = PixmapWidthInPadUnits(*pwidth, 1);
- afbSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu,
- pdstBase, widthDst, sizeDst, depthDst,
- sizeSrc);
- }
-
- }
- }
- psrc += sizeSrc * depthDst;
- ppt++;
- pwidth++;
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/afb/afbtegblt.c b/nx-X11/programs/Xserver/afb/afbtegblt.c
deleted file mode 100644
index 16f6ca4ea..000000000
--- a/nx-X11/programs/Xserver/afb/afbtegblt.c
+++ /dev/null
@@ -1,588 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbtegblt.c,v 3.1 1998/03/20 21:04:57 hohndel Exp $ */
-/* $XConsortium: afbtegblt.c,v 5.14 94/04/17 20:28:35 dpw Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "afb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-/*
- this works for fonts with glyphs <= PPW bits wide.
-
- This should be called only with a terminal-emulator font;
-this means that the FIXED_METRICS flag is set, and that
-glyphbounds == charbounds.
-
- in theory, this goes faster; even if it doesn't, it reduces the
-flicker caused by writing a string over itself with image text (since
-the background gets repainted per character instead of per string.)
-this seems to be important for some converted X10 applications.
-
- Image text looks at the bits in the glyph and the fg and bg in the
-GC. it paints a rectangle, as defined in the protocol dcoument,
-and the paints the characters.
-
-*/
-
-#if defined(NO_3_60_CG4) && defined(FASTPUTBITS) && defined(FASTGETBITS)
-#define FASTCHARS
-#endif
-
-/*
- * this macro "knows" that only characters <= 8 bits wide will
- * fit this case (which is why it is independent of GLYPHPADBYTES)
- */
-
-#if (BITMAP_BIT_ORDER == MSBFirst) && (GLYPHPADBYTES != 4)
-#if GLYPHPADBYTES == 1
-#define ShiftAmnt 24
-#else
-#define ShiftAmnt 16
-#endif
-
-/*
- * Note: for BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER, SCRRIGHT() evaluates its
- * first argument more than once. Thus the imbedded char++ have to be moved.
- * (DHD)
- */
-#if BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER
-#if PPW == 32
-#define GetBits4 c = (*char1++ << ShiftAmnt) | \
- SCRRIGHT (*char2++ << ShiftAmnt, xoff2) | \
- SCRRIGHT (*char3++ << ShiftAmnt, xoff3) | \
- SCRRIGHT (*char4++ << ShiftAmnt, xoff4);
-#else /* PPW */
-#define GetBits4 c = ((unsigned long)(*char1++ << ShiftAmnt) << 32 ) | \
- (SCRRIGHT (*char2++ << ShiftAmnt, xoff2) << 32 ) | \
- (SCRRIGHT (*char3++ << ShiftAmnt, xoff3) << 32 ) | \
- (SCRRIGHT (*char4++ << ShiftAmnt, xoff4) << 32 ) | \
- (*char5++ << ShiftAmnt) | \
- SCRRIGHT (*char6++ << ShiftAmnt, xoff6) | \
- SCRRIGHT (*char7++ << ShiftAmnt, xoff7) | \
- SCRRIGHT (*char8++ << ShiftAmnt, xoff8);
-#endif /* PPW */
-#else /* BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER */
-#if PPW == 32
-#define GetBits4 c = (*char1++ << ShiftAmnt) | \
- SCRRIGHT (*char2 << ShiftAmnt, xoff2) | \
- SCRRIGHT (*char3 << ShiftAmnt, xoff3) | \
- SCRRIGHT (*char4 << ShiftAmnt, xoff4); \
- char2++; char3++; char4++;
-#else /* PPW == 64 */
-#define GetBits4 c = ((unsigned long)(*char1++ << ShiftAmnt) << 32 ) | \
- (SCRRIGHT (*char2 << ShiftAmnt, xoff2) << 32 ) | \
- (SCRRIGHT (*char3 << ShiftAmnt, xoff3) << 32 ) | \
- (SCRRIGHT (*char4 << ShiftAmnt, xoff4) << 32 ) | \
- (*char5++ << ShiftAmnt) | \
- SCRRIGHT (*char6 << ShiftAmnt, xoff6) | \
- SCRRIGHT (*char7 << ShiftAmnt, xoff7) | \
- SCRRIGHT (*char8 << ShiftAmnt, xoff8); \
- char2++; char3++; char4++; char6++; char7++; char8++;
-#endif /* PPW */
-#endif /* BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER */
-
-#else /* (BITMAP_BIT_ORDER != MSBFirst) || (GLYPHPADBYTES == 4) */
-
-#if BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER
-#if PPW == 32
-#define GetBits4 c = *char1++ | \
- SCRRIGHT (*char2++, xoff2) | \
- SCRRIGHT (*char3++, xoff3) | \
- SCRRIGHT (*char4++, xoff4);
-#else /* PPW == 64 */
-#define GetBits4 c = (unsigned long)(((*char1++) << 64 ) | \
- (SCRRIGHT (*char2++, xoff2) << 64 ) | \
- (SCRRIGHT (*char3++, xoff3) << 64 ) | \
- (SCRRIGHT (*char4++, xoff4) << 64 ) | \
- SCRRIGHT (*char5++, xoff5) | \
- SCRRIGHT (*char6++, xoff6) | \
- SCRRIGHT (*char7++, xoff7) | \
- SCRRIGHT (*char8++, xoff8));
-#endif /* PPW */
-#else /* BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER */
-#if PPW == 32
-#define GetBits4 c = *char1++ | \
- SCRRIGHT (*char2, xoff2) | \
- SCRRIGHT (*char3, xoff3) | \
- SCRRIGHT (*char4, xoff4); \
- char2++; char3++; char4++;
-#else /* PPW == 64 */
-#define GetBits4 c = (unsigned long)(((*char1++) << 64 ) | \
- (SCRRIGHT (*char2, xoff2) << 64 ) | \
- (SCRRIGHT (*char3, xoff3) << 64 ) | \
- (SCRRIGHT (*char4, xoff4) << 64 ) | \
- SCRRIGHT (*char5, xoff5) | \
- SCRRIGHT (*char6, xoff6) | \
- SCRRIGHT (*char7, xoff7) | \
- SCRRIGHT (*char8, xoff8)); \
- char2++; char3++; char4++; \
- char5++; char6++; char7++; char8++;
-#endif /* PPW */
-#endif /* BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER */
-
-#endif /* BITMAP_BIT_ORDER && GLYPHPADBYTES */
-
-
-#if GLYPHPADBYTES == 1
-typedef unsigned char *glyphPointer;
-#define USE_LEFTBITS
-#endif
-
-#if GLYPHPADBYTES == 2
-typedef unsigned short *glyphPointer;
-#define USE_LEFTBITS
-#endif
-
-#if GLYPHPADBYTES == 4
-typedef unsigned int *glyphPointer;
-#endif
-
-#ifdef USE_LEFTBITS
-#define GetBits1 getleftbits (char1, widthGlyph, c); \
- c &= glyphMask; \
- char1 = (glyphPointer) (((char *) char1) + glyphBytes);
-#else
-#define GetBits1 c = *char1++;
-#endif
-
-void
-afbTEGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- FontPtr pfont = pGC->font;
- int widthDst;
- PixelType *pdstBase; /* pointer to longword with top row
- of current glyph */
-
- int h; /* height of glyph and char */
- register int xpos; /* current x */
- int ypos; /* current y */
- int widthGlyph;
-
- int hTmp; /* counter for height */
- register PixelType startmask, endmask;
- int nfirst; /* used if glyphs spans a longword boundary */
- BoxRec bbox; /* for clipping */
- int widthGlyphs;
- int sizeDst;
- int depthDst;
- PixelType *saveDst;
- register PixelType *dst;
- register PixelType c;
- register int d;
- register int xoff1, xoff2, xoff3, xoff4;
- register glyphPointer char1, char2, char3, char4;
- glyphPointer schar1, schar2, schar3, schar4;
-#if PPW == 64
- register int xoff5, xoff6, xoff7, xoff8;
- register glyphPointer char5, char6, char7, char8;
- glyphPointer schar5, schar6, schar7, schar8;
-#endif /* PPW */
-
- unsigned char *rrops;
-#ifdef USE_LEFTBITS
- register PixelType glyphMask;
- register PixelType tmpSrc;
- register int glyphBytes;
-#endif
-
- afbGetPixelWidthSizeDepthAndPointer(pDrawable, widthDst, sizeDst, depthDst,
- pdstBase);
-
- xpos = x + pDrawable->x;
- ypos = y + pDrawable->y;
-
- widthGlyph = FONTMAXBOUNDS(pfont,characterWidth);
- h = FONTASCENT(pfont) + FONTDESCENT(pfont);
-
- xpos += FONTMAXBOUNDS(pfont,leftSideBearing);
- ypos -= FONTASCENT(pfont);
-
- rrops = ((afbPrivGCPtr) pGC->devPrivates[afbGCPrivateIndex].ptr)->rropOS;
-
- bbox.x1 = xpos;
- bbox.x2 = xpos + (widthGlyph * nglyph);
- bbox.y1 = ypos;
- bbox.y2 = ypos + h;
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox)) {
- case rgnPART:
- /* this is the WRONG thing to do, but it works.
- calling the non-terminal text is easy, but slow, given
- what we know about the font.
-
- the right thing to do is something like:
- for each clip rectangle
- compute at which row the glyph starts to be in it,
- and at which row the glyph ceases to be in it
- compute which is the first glyph inside the left
- edge, and the last one inside the right edge
- draw a fractional first glyph, using only
- the rows we know are in
- draw all the whole glyphs, using the appropriate rows
- draw any pieces of the last glyph, using the right rows
-
- this way, the code would take advantage of knowing that
- all glyphs are the same height and don't overlap.
-
- one day...
- */
- afbImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
- case rgnOUT:
- return;
- }
- pdstBase = afbScanlineDeltaNoBankSwitch(pdstBase, ypos, widthDst);
- widthGlyphs = widthGlyph * PGSZB;
-
-#ifdef USE_LEFTBITS
- glyphMask = mfbGetendtab(widthGlyph);
- glyphBytes = GLYPHWIDTHBYTESPADDED(*ppci);
-#endif
-
- if (nglyph >= PGSZB && widthGlyphs <= PPW) {
- while (nglyph >= PGSZB) {
- nglyph -= PGSZB;
- xoff1 = xpos & PIM;
- xoff2 = widthGlyph;
- xoff3 = xoff2 + widthGlyph;
- xoff4 = xoff3 + widthGlyph;
-#if PPW == 64
- xoff5 = xoff4 + widthGlyph;
- xoff6 = xoff5 + widthGlyph;
- xoff7 = xoff6 + widthGlyph;
- xoff8 = xoff7 + widthGlyph;
-#endif /* PPW */
- schar1 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar2 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar3 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar4 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
-#if PPW == 64
- schar5 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar6 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar7 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar8 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
-#endif /* PPW */
-
- hTmp = h;
- saveDst = afbScanlineOffset(pdstBase, (xpos >> PWSH)); /* switch now */
-
-#ifndef FASTCHARS
- if (xoff1 + widthGlyphs <= PPW) {
- maskpartialbits (xoff1, widthGlyphs, startmask);
-#endif
- for (d = 0; d < depthDst; d++) {
- hTmp = h;
- dst = saveDst;
- saveDst += sizeDst; /* @@@ NEXT PLANE @@@ */
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (hTmp--) {
-#ifdef FASTCHARS
- FASTPUTBITS(0, xoff1, widthGlyphs, dst);
-#else
- *(dst) &= ~startmask;
-#endif
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_WHITE:
- while (hTmp--) {
-#ifdef FASTCHARS
- FASTPUTBITS(~0, xoff1, widthGlyphs, dst);
-#else
- *(dst) |= startmask;
-#endif
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_INVERT:
- char1 = schar1;
- char2 = schar2;
- char3 = schar3;
- char4 = schar4;
- /* XXX */
- while (hTmp--) {
- GetBits4
-#ifdef FASTCHARS
-# if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyphs;
-# endif
- FASTPUTBITS(~c, xoff1, widthGlyphs, dst);
-#else
- *(dst) = ((*dst) & ~startmask) | (~SCRRIGHT(c, xoff1) & startmask);
-#endif
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_COPY:
- char1 = schar1;
- char2 = schar2;
- char3 = schar3;
- char4 = schar4;
-
- while (hTmp--) {
- GetBits4
-#ifdef FASTCHARS
-# if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyphs;
-#endif
- FASTPUTBITS(c, xoff1, widthGlyphs, dst);
-#else
- *(dst) = ((*dst) & ~startmask) | (SCRRIGHT(c, xoff1) & startmask);
-#endif
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch (rrops[d]) */
- } /* for (d = ... ) */
-#ifndef FASTCHARS
- } else {
- maskPPWbits (xoff1, widthGlyphs, startmask, endmask);
- nfirst = PPW - xoff1;
- for (d = 0; d < depthDst; d++) {
- hTmp = h;
- dst = saveDst;
- saveDst += sizeDst; /* @@@ NEXT PLANE @@@ */
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (hTmp--) {
- dst[0] &= ~startmask;
- dst[1] &= ~endmask;
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_WHITE:
- while (hTmp--) {
- dst[0] |= startmask;
- dst[1] |= endmask;
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_INVERT:
- char1 = schar1;
- char2 = schar2;
- char3 = schar3;
- char4 = schar4;
-
- while (hTmp--) {
- GetBits4
- dst[0] = (dst[0] & ~startmask) | (~SCRRIGHT(c,xoff1) & startmask);
- dst[1] = (dst[1] & ~endmask) | (~SCRLEFT(c,nfirst) & endmask);
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_COPY:
- char1 = schar1;
- char2 = schar2;
- char3 = schar3;
- char4 = schar4;
-
- while (hTmp--) {
- GetBits4
- dst[0] = (dst[0] & ~startmask) | (SCRRIGHT(c,xoff1) & startmask);
- dst[1] = (dst[1] & ~endmask) | (SCRLEFT(c,nfirst) & endmask);
- afbScanlineInc(dst, widthDst);
- }
- break;
-
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ... ) */
- }
-#endif
- xpos += widthGlyphs;
- }
- }
-
- while(nglyph--) {
- xoff1 = xpos & PIM;
- schar1 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
- hTmp = h;
- saveDst = afbScanlineOffset(pdstBase, (xpos >> PWSH));
-
- if (xoff1 + widthGlyph <= PPW) {
- maskpartialbits (xoff1, widthGlyph, startmask);
-
- for (d = 0; d < depthDst; d++) {
- hTmp = h;
- dst = saveDst;
- saveDst += sizeDst; /* @@@ NEXT PLANE @@@ */
- char1 = schar1;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (hTmp--) {
- (*dst) &= ~startmask;
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_WHITE:
- while (hTmp--) {
- (*dst) |= startmask;
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_INVERT:
- while (hTmp--) {
-#ifdef FASTCHARS
-#ifdef USE_LEFTBITS
- FASTGETBITS (char1,0,widthGlyph,c);
- char1 = (glyphPointer) (((char *) char1) + glyphBytes);
-#else
- c = *char1++;
-#if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyph;
-#endif
-#endif
- FASTPUTBITS (~c,xoff1,widthGlyph,dst);
-#else
- GetBits1
- (*dst) = ((*dst) & ~startmask) | (~SCRRIGHT(c, xoff1) & startmask);
-#endif
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_COPY:
- while (hTmp--) {
-#ifdef FASTCHARS
-#ifdef USE_LEFTBITS
- FASTGETBITS (char1,0,widthGlyph,c);
- char1 = (glyphPointer) (((char *) char1) + glyphBytes);
-#else
- c = *char1++;
-#if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyph;
-#endif
-#endif
- FASTPUTBITS (c,xoff1,widthGlyph,dst);
-#else
- GetBits1
- (*dst) = ((*dst) & ~startmask) | (SCRRIGHT(c, xoff1) & startmask);
-#endif
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
- } else {
- maskPPWbits (xoff1, widthGlyph, startmask, endmask);
- nfirst = PPW - xoff1;
-
- for (d = 0; d < depthDst; d++) {
- hTmp = h;
- dst = saveDst;
- saveDst += sizeDst; /* @@@ NEXT PLANE @@@ */
- char1 = schar1;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (hTmp--) {
- dst[0] &= ~startmask;
- dst[1] &= ~endmask;
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_WHITE:
- while (hTmp--) {
- dst[0] |= startmask;
- dst[1] |= endmask;
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_INVERT:
- while (hTmp--) {
- GetBits1
- dst[0] = (dst[0] & ~startmask) | (~SCRRIGHT(c,xoff1) & startmask);
- dst[1] = (dst[1] & ~endmask) | (~SCRLEFT(c,nfirst) & endmask);
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_COPY:
- while (hTmp--) {
- GetBits1
- dst[0] = (dst[0] & ~startmask) | (SCRRIGHT(c,xoff1) & startmask);
- dst[1] = (dst[1] & ~endmask) | (SCRLEFT(c,nfirst) & endmask);
- afbScanlineInc(dst, widthDst);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
- }
-
- xpos += widthGlyph;
- }
-}
diff --git a/nx-X11/programs/Xserver/afb/afbtile.c b/nx-X11/programs/Xserver/afb/afbtile.c
deleted file mode 100644
index 11d76abdf..000000000
--- a/nx-X11/programs/Xserver/afb/afbtile.c
+++ /dev/null
@@ -1,859 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbtile.c,v 3.3tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: afbtile.c,v 5.8 94/04/17 20:28:36 dpw Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "afb.h"
-
-#include "maskbits.h"
-
-#include "mergerop.h"
-/*
-
- the boxes are already translated.
-
- NOTE:
- iy = ++iy < tileHeight ? iy : 0
-is equivalent to iy%= tileheight, and saves a division.
-*/
-
-/*
- tile area with a PPW bit wide pixmap
-*/
-void
-MROP_NAME(afbTileAreaPPW)(pDraw, nbox, pbox, alu, ptile, planemask)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr ptile;
- unsigned long planemask;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
- register PixelType srcpix;
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- MROP_DECLARE_REG ()
- register int h; /* height of current box */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType *p; /* pointer to bits we're writing */
- int sizeDst;
- int depthDst;
- register int d;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwExtra; /* to get from right of box to left of next span */
- register int iy; /* index of current scanline in tile */
- PixelType *pbits; /* pointer to start of drawable */
- PixelType *saveP;
- PixelType *pSaveSrc;
- int saveH;
- int saveIY;
-
- afbGetPixelWidthSizeDepthAndPointer(pDraw, nlwidth, sizeDst, depthDst,
- pbits);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = ptile->drawable.height;
- pSaveSrc = (PixelType *)(ptile->devPrivate.ptr);
-
- while (nbox--) {
- w = pbox->x2 - pbox->x1;
- saveH = pbox->y2 - pbox->y1;
- saveIY = pbox->y1 % tileHeight;
- saveP = afbScanline(pbits, pbox->x1, pbox->y1, nlwidth);
- psrc = pSaveSrc;
-
- if (((pbox->x1 & PIM) + w) < PPW) {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = nlwidth;
- for (d = 0; d < depthDst; d++, saveP += sizeDst, psrc += tileHeight) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- p = saveP;
- h = saveH;
- iy = saveIY;
-
- while (h--) {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- *p = MROP_MASK(srcpix,*p,startmask);
- afbScanlineInc(p, nlwExtra);
- }
- }
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
-
- for (d = 0; d < depthDst; d++, saveP += sizeDst, psrc += tileHeight) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- p = saveP;
- h = saveH;
- iy = saveIY;
- nlwExtra = nlwidth - nlwMiddle;
-
- if (startmask && endmask) {
- nlwExtra -= 1;
- while (h--) {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK (srcpix,*p,startmask);
- p++;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- afbScanlineInc(p, nlwExtra);
- }
- } else if (startmask && !endmask) {
- nlwExtra -= 1;
- while (h--) {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK(srcpix,*p,startmask);
- p++;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
- afbScanlineInc(p, nlwExtra);
- }
- } else if (!startmask && endmask) {
- while (h--) {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- afbScanlineInc(p, nlwExtra);
- }
- } else { /* no ragged bits at either end */
- while (h--) {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--) {
- *p = MROP_SOLID (srcpix,*p);
- p++;
- }
- afbScanlineInc(p, nlwExtra);
- }
- }
- } /* for (d = ...) */
- }
- pbox++;
- }
-}
-
-void
-MROP_NAME(afbTileArea)(pDraw, nbox, pbox, alu, pTile, xOff, yOff, planemask)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr pTile;
- int xOff;
- int yOff;
- unsigned long planemask;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int nlwidth; /* width in longwords of the drawable */
- MROP_DECLARE_REG ()
- register int h; /* height of current box */
- register PixelType *pdst; /* pointer to bits we're writing */
- register PixelType tmpsrc;
-#if (MROP) != Mcopy
- register PixelType tmpdst;
-#endif
- int sizeDst;
- int depthDst;
- int sizeTile;
- int tileLine;
- int iline;
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- int saveW;
- PixelType *psrcT;
- int d;
- int nstart;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
- int iy;
- PixelType *pBase; /* pointer to start of drawable */
- PixelType *saveP;
- PixelType *pStartDst;
- PixelType *pStartTile;
- int saveH;
-
- afbGetPixelWidthSizeDepthAndPointer(pDraw, nlwidth, sizeDst, depthDst,
- pBase);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = pTile->drawable.height;
- tileWidth = pTile->drawable.width;
- tlwidth = pTile->devKind / sizeof (PixelType);
- sizeTile = tlwidth * tileHeight;
-
- xSrc = pDraw->x + ((xOff % tileWidth) - tileWidth);
- ySrc = pDraw->y + ((yOff % tileHeight) - tileHeight);
-
- while (nbox--) {
- saveW = pbox->x2 - pbox->x1;
- iline = (pbox->y1 - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr;
- tileLine = iline * tlwidth;
- saveH = pbox->y2 - pbox->y1;
- saveP = afbScanline(pBase, pbox->x1, pbox->y1, nlwidth);
-
- for (d = 0; d < depthDst; d++, psrcT += sizeTile, saveP += sizeDst) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- h = saveH;
- pStartDst = saveP;
- pStartTile = psrcT + tileLine;
- iy = iline;
-
- while (h--) {
- x = pbox->x1;
- width = saveW;
- pdst = pStartDst;
- while(width > 0) {
- psrc = pStartTile;
- w = min(tileWidth, width);
- if((rem = (x - xSrc) % tileWidth) != 0) {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
-
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), w, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), w, pdst);
-
- if((x & PIM) + w >= PPW)
- pdst++;
- } else if(((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- tmpsrc = *psrc;
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), w, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), w, pdst);
- } else {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if(startmask) {
- tmpsrc = *psrc;
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), nstart, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), nstart, pdst);
- pdst++;
- if(srcStartOver)
- psrc++;
- }
-
- while(nlMiddle--) {
- getbits (psrc, nstart, PPW, tmpsrc);
-#if (MROP) != Mcopy
- tmpdst = *pdst;
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- *pdst++ = tmpsrc;
- /*putbits (tmpsrc, 0, PPW, pdst);
- pdst++;*/
- psrc++;
- }
-
- if(endmask) {
- getbits (psrc, nstart, nend, tmpsrc);
-#if (MROP) != Mcopy
- tmpdst = *pdst;
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, 0, nend, pdst);
- }
- }
- x += w;
- width -= w;
- } /* while (width > 0) */
-
- pStartDst += nlwidth;
- if (++iy >= tileHeight) {
- iy = 0;
- pStartTile = psrcT;
- } else
- pStartTile += tlwidth;
-
- } /* while (h) */
- } /* for (d = ... ) */
- pbox++;
- } /* for each box */
-}
-
-void
-MROP_NAME(afbOpaqueStippleAreaPPW)(pDraw, nbox, pbox, alu, ptile,
- rropsOS, planemask)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr ptile;
- register unsigned char *rropsOS;
- unsigned long planemask;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
- register PixelType srcpix = 0;
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- MROP_DECLARE_REG ()
- register int h; /* height of current box */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType *p; /* pointer to bits we're writing */
- int sizeDst;
- int depthDst;
- register int d;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwExtra; /* to get from right of box to left of next span */
- register int iy; /* index of current scanline in tile */
- PixelType *pbits; /* pointer to start of drawable */
- PixelType *saveP;
- int saveH;
- int saveIY;
-
- afbGetPixelWidthSizeDepthAndPointer(pDraw, nlwidth, sizeDst, depthDst,
- pbits);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = ptile->drawable.height;
- psrc = (PixelType *)(ptile->devPrivate.ptr);
-
- while (nbox--) {
- w = pbox->x2 - pbox->x1;
- saveH = pbox->y2 - pbox->y1;
- saveIY = pbox->y1 % tileHeight;
- saveP = afbScanline(pbits, pbox->x1, pbox->y1, nlwidth);
-
- if ( ((pbox->x1 & PIM) + w) < PPW) {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = nlwidth;
- for (d = 0; d < depthDst; d++, saveP += sizeDst) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- p = saveP;
- h = saveH;
- iy = saveIY;
-
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- *p = MROP_MASK(srcpix,*p,startmask);
- afbScanlineInc(p, nlwExtra);
- }
- }
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
-
- for (d = 0; d < depthDst; d++, saveP += sizeDst) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- p = saveP;
- h = saveH;
- iy = saveIY;
- nlwExtra = nlwidth - nlwMiddle;
-
- if (startmask && endmask) {
- nlwExtra -= 1;
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK (srcpix,*p,startmask);
- p++;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- afbScanlineInc(p, nlwExtra);
- }
- } else if (startmask && !endmask) {
- nlwExtra -= 1;
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK(srcpix,*p,startmask);
- p++;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
- afbScanlineInc(p, nlwExtra);
- }
- } else if (!startmask && endmask) {
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- afbScanlineInc(p, nlwExtra);
- }
- } else { /* no ragged bits at either end */
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--) {
- *p = MROP_SOLID (srcpix,*p);
- p++;
- }
- afbScanlineInc(p, nlwExtra);
- }
- }
- } /* for (d = ...) */
- }
- pbox++;
- }
-}
-
-void
-MROP_NAME(afbOpaqueStippleArea)(pDraw, nbox, pbox, alu, pTile, xOff, yOff,
- rropsOS, planemask)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr pTile;
- int xOff;
- int yOff;
- register unsigned char *rropsOS;
- unsigned long planemask;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int nlwidth; /* width in longwords of the drawable */
- MROP_DECLARE_REG ()
- register int h; /* height of current box */
- register PixelType *pdst; /* pointer to bits we're writing */
- register PixelType tmpsrc = 0;
-#if (MROP) != Mcopy
- register PixelType tmpdst;
-#endif
- int sizeDst;
- int depthDst;
- int tileLine;
- int iline;
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- int saveW;
- PixelType *psrcT;
- int d;
- int nstart;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
- int iy;
- PixelType *pBase; /* pointer to start of drawable */
- PixelType *saveP;
- PixelType *pStartDst;
- PixelType *pStartTile;
- int saveH;
-
- afbGetPixelWidthSizeDepthAndPointer(pDraw, nlwidth, sizeDst, depthDst,
- pBase);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = pTile->drawable.height;
- tileWidth = pTile->drawable.width;
- tlwidth = pTile->devKind / sizeof (PixelType);
-
- xSrc = pDraw->x + ((xOff % tileWidth) - tileWidth);
- ySrc = pDraw->y + ((yOff % tileHeight) - tileHeight);
-
- while (nbox--) {
- saveW = pbox->x2 - pbox->x1;
- iline = (pbox->y1 - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr;
- tileLine = iline * tlwidth;
- saveH = pbox->y2 - pbox->y1;
- saveP = afbScanline(pBase, pbox->x1, pbox->y1, nlwidth);
-
- for (d = 0; d < depthDst; d++, saveP += sizeDst) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- h = saveH;
- pStartDst = saveP;
- pStartTile = psrcT + tileLine;
- iy = iline;
-
- while (h--) {
- x = pbox->x1;
- width = saveW;
- pdst = pStartDst;
- while(width > 0) {
- psrc = pStartTile;
- w = min(tileWidth, width);
- if((rem = (x - xSrc) % tileWidth) != 0) {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
-
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
-
- case RROP_COPY:
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
- break;
-
- case RROP_INVERT:
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), w, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), w, pdst);
-
- if((x & PIM) + w >= PPW)
- pdst++;
- } else if(((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- tmpsrc = *psrc;
- break;
- case RROP_INVERT:
- tmpsrc = ~*psrc;
- break;
- }
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), w, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), w, pdst);
- } else {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if(startmask) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- tmpsrc = *psrc;
- break;
- case RROP_INVERT:
- tmpsrc = ~*psrc;
- break;
- }
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), nstart, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), nstart, pdst);
- pdst++;
- if(srcStartOver)
- psrc++;
- }
-
- while(nlMiddle--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- getbits (psrc, nstart, PPW, tmpsrc);
- break;
- case RROP_INVERT:
- getbits (psrc, nstart, PPW, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
-#if (MROP) != Mcopy
- tmpdst = *pdst;
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- *pdst++ = tmpsrc;
- /*putbits (tmpsrc, 0, PPW, pdst);
- pdst++; */
- psrc++;
- }
-
- if(endmask) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
-
- case RROP_COPY:
- getbits (psrc, nstart, nend, tmpsrc);
- break;
-
- case RROP_INVERT:
- getbits (psrc, nstart, nend, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
-#if (MROP) != Mcopy
- tmpdst = *pdst;
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, 0, nend, pdst);
- }
- }
- x += w;
- width -= w;
- } /* while (width > 0) */
-
- pStartDst += nlwidth;
- if (++iy >= tileHeight) {
- iy = 0;
- pStartTile = psrcT;
- } else
- pStartTile += tlwidth;
-
- } /* while (h) */
- } /* for (d = ... ) */
- pbox++;
- } /* for each box */
-}
diff --git a/nx-X11/programs/Xserver/afb/afbwindow.c b/nx-X11/programs/Xserver/afb/afbwindow.c
deleted file mode 100644
index 443dd5aed..000000000
--- a/nx-X11/programs/Xserver/afb/afbwindow.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbwindow.c,v 3.0 1996/08/18 01:45:58 dawes Exp $ */
-/* $XConsortium: afbwindow.c,v 5.14 94/04/17 20:28:36 dpw Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "afb.h"
-#include "mistruct.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-Bool
-afbCreateWindow(pWin)
- register WindowPtr pWin;
-{
- register afbPrivWin *pPrivWin;
-
- pPrivWin = (afbPrivWin *)(pWin->devPrivates[afbWindowPrivateIndex].ptr);
- pPrivWin->pRotatedBorder = NullPixmap;
- pPrivWin->pRotatedBackground = NullPixmap;
- pPrivWin->fastBackground = FALSE;
- pPrivWin->fastBorder = FALSE;
-#ifdef PIXMAP_PER_WINDOW
- pWin->devPrivates[frameWindowPrivateIndex].ptr =
- pWin->pDrawable.pScreen->devPrivates[afbScreenPrivateIndex].ptr;
-#endif
-
- return (TRUE);
-}
-
-/* This always returns true, because Xfree can't fail. It might be possible
- * on some devices for Destroy to fail */
-Bool
-afbDestroyWindow(pWin)
- WindowPtr pWin;
-{
- register afbPrivWin *pPrivWin;
-
- pPrivWin = (afbPrivWin *)(pWin->devPrivates[afbWindowPrivateIndex].ptr);
-
- if (pPrivWin->pRotatedBorder)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBorder);
- if (pPrivWin->pRotatedBackground)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBackground);
-
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-afbMapWindow(pWindow)
- WindowPtr pWindow;
-{
- return (TRUE);
-}
-
-/* (x, y) is the upper left corner of the window on the screen
- do we really need to pass this? (is it a;ready in pWin->absCorner?)
- we only do the rotation for pixmaps that are 32 bits wide (padded
-or otherwise.)
- afbChangeWindowAttributes() has already put a copy of the pixmap
-in pPrivWin->pRotated*
-*/
-
-/*ARGSUSED*/
-Bool
-afbPositionWindow(pWin, x, y)
- WindowPtr pWin;
- int x, y;
-{
- register afbPrivWin *pPrivWin;
- int reset = 0;
-
- pPrivWin = (afbPrivWin *)(pWin->devPrivates[afbWindowPrivateIndex].ptr);
- if (pWin->backgroundState == BackgroundPixmap && pPrivWin->fastBackground) {
- afbXRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- afbYRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- reset = 1;
- }
-
- if (!pWin->borderIsPixel && pPrivWin->fastBorder) {
- while (pWin->backgroundState == ParentRelative)
- pWin = pWin->parent;
- afbXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- afbYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- reset = 1;
- }
- if (reset) {
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
-
- /* This is the "wrong" fix to the right problem, but it doesn't really
- * cost very much. When the window is moved, we need to invalidate any
- * RotatedPixmap that exists in any GC currently validated against this
- * window.
- */
- pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER;
-
- /* Again, we have no failure modes indicated by any of the routines
- * we've called, so we have to assume it worked */
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-afbUnmapWindow(pWindow)
- WindowPtr pWindow;
-{
- return (TRUE);
-}
-
-/* UNCLEAN!
- this code calls the bitblt helper code directly.
-
- afbCopyWindow copies only the parts of the destination that are
-visible in the source.
-*/
-
-
-void
-afbCopyWindow(pWin, ptOldOrg, prgnSrc)
- WindowPtr pWin;
- DDXPointRec ptOldOrg;
- RegionPtr prgnSrc;
-{
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- RegionPtr prgnDst;
- register BoxPtr pbox;
- register int dx, dy;
- register int i, nbox;
- WindowPtr pwinRoot;
-
- pwinRoot = WindowTable[pWin->drawable.pScreen->myNum];
-
- prgnDst = REGION_CREATE(pWin->drawable.pScreen, NULL, 1);
-
- dx = ptOldOrg.x - pWin->drawable.x;
- dy = ptOldOrg.y - pWin->drawable.y;
- REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, -dx, -dy);
- REGION_INTERSECT(pWin->drawable.pScreen, prgnDst, &pWin->borderClip,
- prgnSrc);
-
- pbox = REGION_RECTS(prgnDst);
- nbox = REGION_NUM_RECTS(prgnDst);
- if(!(pptSrc = (DDXPointPtr )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec))))
- return;
- ppt = pptSrc;
-
- for (i=nbox; --i >= 0; ppt++, pbox++) {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- afbDoBitblt((DrawablePtr)pwinRoot, (DrawablePtr)pwinRoot, GXcopy, prgnDst,
- pptSrc, ~0);
- DEALLOCATE_LOCAL(pptSrc);
- REGION_DESTROY(pWin->drawable.pScreen, prgnDst);
-}
-
-
-
-/* swap in correct PaintWindow* routine. If we can use a fast output
-routine (i.e. the pixmap is paddable to 32 bits), also pre-rotate a copy
-of it in devPrivate.
-*/
-Bool
-afbChangeWindowAttributes(pWin, mask)
- register WindowPtr pWin;
- register unsigned long mask;
-{
- register unsigned long index;
- register afbPrivWin *pPrivWin;
- WindowPtr pBgWin;
-
- pPrivWin = (afbPrivWin *)(pWin->devPrivates[afbWindowPrivateIndex].ptr);
- /*
- * When background state changes from ParentRelative and
- * we had previously rotated the fast border pixmap to match
- * the parent relative origin, rerotate to match window
- */
- if (mask & (CWBackPixmap | CWBackPixel) &&
- pWin->backgroundState != ParentRelative && pPrivWin->fastBorder &&
- (pPrivWin->oldRotate.x != pWin->drawable.x ||
- pPrivWin->oldRotate.y != pWin->drawable.y)) {
- afbXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- afbYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- while(mask) {
- index = lowbit (mask);
- mask &= ~index;
- switch(index) {
- case CWBackPixmap:
- if (pWin->backgroundState == None)
- pPrivWin->fastBackground = FALSE;
- else if (pWin->backgroundState == ParentRelative) {
- pPrivWin->fastBackground = FALSE;
- /* Rotate border to match parent origin */
- if (pPrivWin->pRotatedBorder) {
- for (pBgWin = pWin->parent;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- afbXRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.x - pPrivWin->oldRotate.x);
- afbYRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- }
- } else if ((pWin->background.pixmap->drawable.width <= PPW) &&
- !(pWin->background.pixmap->drawable.width &
- (pWin->background.pixmap->drawable.width - 1))) {
- afbCopyRotatePixmap(pWin->background.pixmap,
- &pPrivWin->pRotatedBackground,
- pWin->drawable.x, pWin->drawable.y);
- if (pPrivWin->pRotatedBackground) {
- pPrivWin->fastBackground = TRUE;
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- } else
- pPrivWin->fastBackground = FALSE;
- } else
- pPrivWin->fastBackground = FALSE;
- break;
-
- case CWBackPixel:
- pPrivWin->fastBackground = FALSE;
- break;
-
- case CWBorderPixmap:
- if ((pWin->border.pixmap->drawable.width <= PPW) &&
- !(pWin->border.pixmap->drawable.width &
- (pWin->border.pixmap->drawable.width - 1))) {
- for (pBgWin = pWin;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- afbCopyRotatePixmap(pWin->border.pixmap,
- &pPrivWin->pRotatedBorder,
- pBgWin->drawable.x, pBgWin->drawable.y);
- if (pPrivWin->pRotatedBorder) {
- pPrivWin->fastBorder = TRUE;
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- } else
- pPrivWin->fastBorder = FALSE;
- } else
- pPrivWin->fastBorder = FALSE;
- break;
- case CWBorderPixel:
- pPrivWin->fastBorder = FALSE;
- break;
- }
- }
- /* Again, we have no failure modes indicated by any of the routines
- * we've called, so we have to assume it worked */
- return (TRUE);
-}
diff --git a/nx-X11/programs/Xserver/afb/afbzerarc.c b/nx-X11/programs/Xserver/afb/afbzerarc.c
deleted file mode 100644
index ef62238db..000000000
--- a/nx-X11/programs/Xserver/afb/afbzerarc.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/* $XFree86: xc/programs/Xserver/afb/afbzerarc.c,v 3.2 2001/10/28 03:32:59 tsi Exp $ */
-/************************************************************
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-********************************************************/
-
-/* $XConsortium: afbzerarc.c,v 5.19 94/04/17 20:28:37 dpw Exp $ */
-
-/* Derived from:
- * "Algorithm for drawing ellipses or hyperbolae with a digital plotter"
- * by M. L. V. Pitteway
- * The Computer Journal, November 1967, Volume 10, Number 3, pp. 282-289
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "afb.h"
-#include "maskbits.h"
-#include "mizerarc.h"
-#include "mi.h"
-
-/*
- * Note: LEFTMOST must be the bit leftmost in the actual screen
- * representation. This depends also on the IMAGE_BYTE_ORDER.
- * LONG2CHARS() takes care of the re-ordering as required. (DHD)
- */
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define LEFTMOST ((PixelType) LONG2CHARS((1 << PLST)))
-#else
-#define LEFTMOST ((PixelType) LONG2CHARS(1))
-#endif
-
-#define Pixelate(base,yoff,xoff) \
-{ \
- paddr = afbScanlineOffset(base, (yoff) + ((xoff)>>PWSH)); \
- pmask = SCRRIGHT(LEFTMOST, (xoff) & PIM); \
- for (de = 0; de < depthDst; de++, paddr += sizeDst) /* @@@ NEXT PLANE @@@ */ \
- switch (rrops[de]) { \
- case RROP_BLACK: \
- *paddr &= ~pmask; \
- break; \
- case RROP_WHITE: \
- *paddr |= pmask; \
- break; \
- case RROP_INVERT: \
- *paddr ^= pmask; \
- break; \
- case RROP_NOP: \
- break; \
- } \
-}
-
-#define DoPix(bit,base,yoff,xoff) if (mask & bit) Pixelate(base,yoff,xoff);
-
-static void
-afbZeroArcSS(pDraw, pGC, arc)
- DrawablePtr pDraw;
- GCPtr pGC;
- xArc *arc;
-{
- miZeroArcRec info;
- Bool do360;
- register int de;
- register int x, y, a, b, d, mask;
- register int k1, k3, dx, dy;
- PixelType *addrl;
- PixelType *yorgl, *yorgol;
- int nlwidth, yoffset, dyoffset;
- int sizeDst, depthDst;
- PixelType pmask;
- register PixelType *paddr;
- register unsigned char *rrops;
-
- rrops = ((afbPrivGC *)(pGC->devPrivates[afbGCPrivateIndex].ptr))->rrops;
-
- afbGetPixelWidthSizeDepthAndPointer(pDraw, nlwidth, sizeDst, depthDst,
- addrl);
- do360 = miZeroArcSetup(arc, &info, TRUE);
- yorgl = addrl + ((info.yorg + pDraw->y) * nlwidth);
- yorgol = addrl + ((info.yorgo + pDraw->y) * nlwidth);
- info.xorg += pDraw->x;
- info.xorgo += pDraw->x;
- MIARCSETUP();
- yoffset = y ? nlwidth : 0;
- dyoffset = 0;
- mask = info.initialMask;
- if (!(arc->width & 1)) {
- DoPix(2, yorgl, 0, info.xorgo);
- DoPix(8, yorgol, 0, info.xorgo);
- }
- if (!info.end.x || !info.end.y) {
- mask = info.end.mask;
- info.end = info.altend;
- }
- if (do360 && (arc->width == arc->height) && !(arc->width & 1)) {
- int xoffset = nlwidth;
- PixelType *yorghl = afbScanlineDeltaNoBankSwitch(yorgl, info.h, nlwidth);
- int xorghp = info.xorg + info.h;
- int xorghn = info.xorg - info.h;
-
- while (1) {
- Pixelate(yorgl, yoffset, info.xorg + x);
- Pixelate(yorgl, yoffset, info.xorg - x);
- Pixelate(yorgol, -yoffset, info.xorg - x);
- Pixelate(yorgol, -yoffset, info.xorg + x);
- if (a < 0)
- break;
- Pixelate(yorghl, -xoffset, xorghp - y);
- Pixelate(yorghl, -xoffset, xorghn + y);
- Pixelate(yorghl, xoffset, xorghn + y);
- Pixelate(yorghl, xoffset, xorghp - y);
- xoffset += nlwidth;
- MIARCCIRCLESTEP(yoffset += nlwidth;);
- }
- x = info.w;
- yoffset = info.h * nlwidth;
- } else if (do360) {
- while (y < info.h || x < info.w) {
- MIARCOCTANTSHIFT(dyoffset = nlwidth;);
- Pixelate(yorgl, yoffset, info.xorg + x);
- Pixelate(yorgl, yoffset, info.xorgo - x);
- Pixelate(yorgol, -yoffset, info.xorgo - x);
- Pixelate(yorgol, -yoffset, info.xorg + x);
- MIARCSTEP(yoffset += dyoffset;, yoffset += nlwidth;);
- }
- } else {
- while (y < info.h || x < info.w) {
- MIARCOCTANTSHIFT(dyoffset = nlwidth;);
- if ((x == info.start.x) || (y == info.start.y)) {
- mask = info.start.mask;
- info.start = info.altstart;
- }
- DoPix(1, yorgl, yoffset, info.xorg + x);
- DoPix(2, yorgl, yoffset, info.xorgo - x);
- DoPix(4, yorgol, -yoffset, info.xorgo - x);
- DoPix(8, yorgol, -yoffset, info.xorg + x);
- if ((x == info.end.x) || (y == info.end.y)) {
- mask = info.end.mask;
- info.end = info.altend;
- }
- MIARCSTEP(yoffset += dyoffset;, yoffset += nlwidth;);
- }
- }
- if ((x == info.start.x) || (y == info.start.y))
- mask = info.start.mask;
- DoPix(1, yorgl, yoffset, info.xorg + x);
- DoPix(4, yorgol, -yoffset, info.xorgo - x);
- if (arc->height & 1) {
- DoPix(2, yorgl, yoffset, info.xorgo - x);
- DoPix(8, yorgol, -yoffset, info.xorg + x);
- }
-}
-
-void
-afbZeroPolyArcSS(pDraw, pGC, narcs, parcs)
- DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- register xArc *arc;
- register int i;
- BoxRec box;
- RegionPtr cclip;
-
- cclip = pGC->pCompositeClip;
- for (arc = parcs, i = narcs; --i >= 0; arc++) {
- if (miCanZeroArc(arc)) {
- box.x1 = arc->x + pDraw->x;
- box.y1 = arc->y + pDraw->y;
- box.x2 = box.x1 + (int)arc->width + 1;
- box.y2 = box.y1 + (int)arc->height + 1;
- if (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN)
- afbZeroArcSS(pDraw, pGC, arc);
- else
- miZeroPolyArc(pDraw, pGC, 1, arc);
- } else
- miPolyArc(pDraw, pGC, 1, arc);
- }
-}
diff --git a/nx-X11/programs/Xserver/cfb/Imakefile b/nx-X11/programs/Xserver/cfb/Imakefile
deleted file mode 100644
index 5295c35da..000000000
--- a/nx-X11/programs/Xserver/cfb/Imakefile
+++ /dev/null
@@ -1,6 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/cfb/Imakefile,v 3.27 2002/05/31 15:12:55 dawes Exp $
-
-#define PixelSize 8
-
-#include "Imakefile.inc"
-
diff --git a/nx-X11/programs/Xserver/cfb/Imakefile.inc b/nx-X11/programs/Xserver/cfb/Imakefile.inc
deleted file mode 100644
index bfb6c315e..000000000
--- a/nx-X11/programs/Xserver/cfb/Imakefile.inc
+++ /dev/null
@@ -1,303 +0,0 @@
-XCOMM $XdotOrg: xc/programs/Xserver/cfb/Imakefile.inc,v 1.5 2005/07/11 19:13:26 ajax Exp $
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:12 cpqbld Exp $
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/cfb/Imakefile.inc,v 1.3tsi Exp $
-
-#if DoLoadableServer
-#if !BuildModuleInSubdir
-#define IHaveModules
-#elif !defined(IHaveModules)
-#define IHaveSubdirs
-SUBDIRS = module
-#endif
-#endif
-
-#include <Server.tmpl>
-
-#ifndef PixelSize
-#define PixelSize 8
-#endif
-
-#if PixelSize == 8
-PSZSRCS = cfb8bit.c cfbteblt8.c cfbglrop8.c cfbpush8.c cfbrctstp8.c
-PSZOBJS = cfb8bit.o cfbteblt8.o cfbglrop8.o cfbpush8.o cfbrctstp8.o
-#ifdef MipsArchitecture
-#ifndef ArcArchitecture
-#ifndef Mips64Architecture
-STIPPLESRC = stipmips.s stipmipste.s
-STIPPLEOBJ = stipmips.o stipmipste.o
-STIPPLEDEF = -DHAS_STIPPLE_CODE
-#endif
-#endif
-#endif
-#ifdef SparcArchitecture
-#ifndef Sparc64Architecture
-STIPPLESRC = stipsparc.s stipsparcte.s
-STIPPLEOBJ = stipsparc.o stipsparcte.o
-STIPPLEDEF = -DHAS_STIPPLE_CODE
-#endif
-#endif
-#endif
-
-#if PixelSize == 32
-#ifdef SparcArchitecture
-#ifndef Sparc64Architecture
-STIPPLESRC = stipsprc32.s stipsprcte32.s
-STIPPLEOBJ = stipsprc32.o stipsprcte32.o
-STIPPLEDEF = -DHAS_STIPPLE_CODE
-#endif
-#endif
-#endif
-
-#ifdef SparcArchitecture
-# if DoLoadableServer && MakeDllModules
-# define SharedAsmDefines -DSHAREDCODE
-# else
-# define SharedAsmDefines /**/
-# endif
-ASMDEFINES = AsmDefines SharedAsmDefines
-#endif
-
-#if defined(IHaveModules)
-XFMODSRC = cfbmodule.c
-XFMODOBJ = cfbmodule.o
-#endif
-
-XCOMM THIS IS STUPID
-#if !(defined(IHaveModules) && defined(LinkDirectory))
-CFBCMAP = cfbcmap.o
-#endif
-
-SRCS = cfbgc.c cfbrrop.c cfbwindow.c \
- cfbpntwin.c cfbmskbits.c cfbpixmap.c cfbbitblt.c \
- cfbfillsp.c cfbsetsp.c cfbscrinit.c cfballpriv.c \
- cfbgetsp.c cfbfillrct.c \
- cfbsolidC.c cfbsolidX.c cfbsolidG.c \
- cfbtileoddC.c cfbtileoddG.c cfbtile32C.c cfbtile32G.c \
- cfbcmap.c cfbzerarcC.c cfbzerarcX.c cfbzerarcG.c \
- cfbfillarcC.c cfbfillarcG.c \
- cfbigblt8.c cfbglblt8.c cfbtegblt.c cfbbstore.c \
- cfbbltC.c cfbbltX.c cfbbltO.c cfbbltG.c \
- cfbpolypnt.c \
- cfbbres.c cfbline.c cfbhrzvert.c cfbbresd.c cfbimage.c cfbseg.c \
- cfb8lineCO.c cfb8lineX.c cfb8lineG.c cfb8lineCP.c \
- cfb8segC.c cfb8segX.c cfb8segG.c cfb8segCS.c \
- cfbply1rctC.c cfbply1rctG.c cfbcppl.c $(PSZSRCS) $(XFMODSRC)
-
-OBJS = cfbgc.o cfbrrop.o cfbwindow.o \
- cfbgetsp.o cfbfillrct.o \
- cfbsolidC.o cfbsolidX.o cfbsolidG.o \
- cfbtileoddC.o cfbtileoddG.o cfbtile32C.o cfbtile32G.o \
- cfbfillsp.o cfbsetsp.o cfbscrinit.o cfballpriv.o \
- cfbpntwin.o cfbmskbits.o cfbpixmap.o \
- cfbcmap.o cfbzerarcC.o cfbzerarcX.o cfbzerarcG.o \
- cfbfillarcC.o cfbfillarcG.o \
- cfbigblt8.o cfbglblt8.o cfbtegblt.o cfbbstore.o \
- cfbpolypnt.o \
- cfbbres.o cfbline.o cfbhrzvert.o cfbbresd.o cfbimage.o cfbseg.o \
- cfb8lineCO.o cfb8lineX.o cfb8lineG.o cfb8lineCP.o \
- cfb8segCS.o cfb8segX.o cfb8segG.o cfb8segC.o \
- cfbbitblt.o cfbbltC.o cfbbltX.o cfbbltO.o cfbbltG.o \
- cfbply1rctC.o cfbply1rctG.o cfbcppl.o $(PSZOBJS) $(STIPPLEOBJ) \
- $(XFMODOBJ)
-
-#if (defined(XFree86Version) || defined(XorgVersion))
-PLATFORMDEFS = -DXFREE86
-#endif
-
- INCLUDES = -I$(SERVERSRC)/cfb -I$(SERVERSRC)/mfb -I$(SERVERSRC)/mi \
- -I$(SERVERSRC)/cfb24 -I$(SERVERSRC)/include -I$(XINCLUDESRC) \
- -I$(FONTINCSRC) -I$(EXTINCSRC) -I$(SERVERSRC)/Xext
- LINTLIBS = $(SERVERSRC)/dix/llib-ldix.ln $(SERVERSRC)/os/llib-los.ln \
- $(SERVERSRC)/mfb/llib-lmfb.ln $(SERVERSRC)/mi/llib-lmi.ln
- DEFINES = $(LMDEFINES) -DPSZ=PixelSize $(PLATFORMDEFS)
-
-#if PixelSize == 8
-CFBNAME = cfb
-#elif PixelSize == 16
-CFBNAME = cfb16
-#elif PixelSize == 24
-CFBNAME = cfb24
-#elif PixelSize == 32
-CFBNAME = cfb32
-#endif
-
-#ifdef IHaveModules
-ModuleObjectRule()
-LibraryModuleTarget($(CFBNAME),$(OBJS))
-#else
-NormalLibraryObjectRule()
-NormalLibraryTarget($(CFBNAME),$(OBJS))
-#endif
-
-LintLibraryTarget($(CFBNAME),$(SRCS))
-
-NormalLintTarget($(SRCS))
-
-#ifdef LinkDirectory
-
-LinkSourceFile(cfballpriv.c,LinkDirectory)
-LinkSourceFile(cfbbitblt.c,LinkDirectory)
-LinkSourceFile(cfbblt.c,LinkDirectory)
-LinkSourceFile(cfbbres.c,LinkDirectory)
-LinkSourceFile(cfbbresd.c,LinkDirectory)
-LinkSourceFile(cfbbstore.c,LinkDirectory)
-LinkSourceFile(cfbcmap.c,LinkDirectory)
-LinkSourceFile(cfbcppl.c,LinkDirectory)
-LinkSourceFile(cfbfillarc.c,LinkDirectory)
-LinkSourceFile(cfbfillrct.c,LinkDirectory)
-LinkSourceFile(cfbfillsp.c,LinkDirectory)
-LinkSourceFile(cfbgc.c,LinkDirectory)
-LinkSourceFile(cfbgetsp.c,LinkDirectory)
-LinkSourceFile(cfbhrzvert.c,LinkDirectory)
-LinkSourceFile(cfbimage.c,LinkDirectory)
-LinkSourceFile(cfbline.c,LinkDirectory)
-LinkSourceFile(cfb8line.c,LinkDirectory)
-LinkSourceFile(cfbmskbits.c,LinkDirectory)
-LinkSourceFile(cfbpixmap.c,LinkDirectory)
-LinkSourceFile(cfbply1rct.c,LinkDirectory)
-LinkSourceFile(cfbpntwin.c,LinkDirectory)
-LinkSourceFile(cfbpolypnt.c,LinkDirectory)
-LinkSourceFile(cfbrrop.c,LinkDirectory)
-LinkSourceFile(cfbscrinit.c,LinkDirectory)
-LinkSourceFile(cfbsetsp.c,LinkDirectory)
-LinkSourceFile(cfbsolid.c,LinkDirectory)
-LinkSourceFile(cfbigblt8.c,LinkDirectory)
-LinkSourceFile(cfbglblt8.c,LinkDirectory)
-LinkSourceFile(cfbtegblt.c,LinkDirectory)
-LinkSourceFile(cfbtileodd.c,LinkDirectory)
-LinkSourceFile(cfbtile32.c,LinkDirectory)
-LinkSourceFile(cfbwindow.c,LinkDirectory)
-LinkSourceFile(cfbzerarc.c,LinkDirectory)
-#if PixelSize == 8
-LinkSourceFile(cfb8bit.c,LinkDirectory)
-LinkSourceFile(cfbpush8.c,LinkDirectory)
-LinkSourceFile(cfbrctstp8.c,LinkDirectory)
-LinkSourceFile(cfbteblt8.c,LinkDirectory)
-#ifdef MipsArchitecture
-LinkSourceFile(stipmips.s,LinkDirectory)
-#endif
-#ifdef SparcArchitecture
-LinkSourceFile(stipsparc.s,LinkDirectory)
-#endif
-#endif
-#if PixelSize == 32
-#ifdef SparcArchitecture
-LinkSourceFile(stipsprc32.s,LinkDirectory)
-#endif
-#endif
-#endif
-
-#if defined(IHaveModules) && BuildModuleInSubdir
-LinkSourceFile(cfbmodule.c,..)
-#endif
-
-ObjectFromSpecialSource(cfbseg,cfbline,-DPOLYSEGMENT)
-
-ObjectFromSpecialSource(cfbfillarcC,cfbfillarc,-DRROP=GXcopy)
-ObjectFromSpecialSource(cfbfillarcG,cfbfillarc,-DRROP=GXset)
-
-ObjectFromSpecialSource(cfbzerarcC,cfbzerarc,-DRROP=GXcopy)
-ObjectFromSpecialSource(cfbzerarcX,cfbzerarc,-DRROP=GXxor)
-ObjectFromSpecialSource(cfbzerarcG,cfbzerarc,-DRROP=GXset)
-
-ObjectFromSpecialSource(cfbbltC,cfbblt,-DMROP=Mcopy)
-ObjectFromSpecialSource(cfbbltX,cfbblt,-DMROP=Mxor)
-ObjectFromSpecialSource(cfbbltO,cfbblt,-DMROP=Mor)
-ObjectFromSpecialSource(cfbbltG,cfbblt,-DMROP=0)
-
-ObjectFromSpecialSource(cfbsolidC,cfbsolid,-DRROP=GXcopy)
-ObjectFromSpecialSource(cfbsolidX,cfbsolid,-DRROP=GXxor)
-ObjectFromSpecialSource(cfbsolidG,cfbsolid,-DRROP=GXset)
-
-ObjectFromSpecialSource(cfbtileoddC,cfbtileodd,-DMROP=Mcopy)
-ObjectFromSpecialSource(cfbtileoddG,cfbtileodd,-DMROP=0)
-
-ObjectFromSpecialSource(cfbtile32C,cfbtile32,-DMROP=Mcopy)
-ObjectFromSpecialSource(cfbtile32G,cfbtile32,-DMROP=0)
-
-ObjectFromSpecialSource(cfb8lineCO,cfb8line,-DRROP=GXcopy)
-ObjectFromSpecialSource(cfb8lineCP,cfb8line,-DRROP=GXcopy -DPREVIOUS)
-ObjectFromSpecialSource(cfb8lineX,cfb8line,-DRROP=GXxor)
-ObjectFromSpecialSource(cfb8lineG,cfb8line,-DRROP=GXset)
-
-ObjectFromSpecialSource(cfb8segCS,cfb8line,-DRROP=GXcopy -DPOLYSEGMENT -DWIDTH_SHIFT)
-ObjectFromSpecialSource(cfb8segC,cfb8line,-DRROP=GXcopy -DPOLYSEGMENT)
-ObjectFromSpecialSource(cfb8segX,cfb8line,-DRROP=GXxor -DPOLYSEGMENT)
-ObjectFromSpecialSource(cfb8segG,cfb8line,-DRROP=GXset -DPOLYSEGMENT)
-
-ObjectFromSpecialSource(cfbply1rctC,cfbply1rct,-DRROP=GXcopy)
-ObjectFromSpecialSource(cfbply1rctG,cfbply1rct,-DRROP=GXset)
-
-SpecialCObjectRule(cfbglblt8,$(_NOOP_),$(STIPPLEDEF))
-SpecialCObjectRule(cfbpixmap,$(ICONFIGFILES),$(_NOOP_))
-SpecialCObjectRule(cfbcmap,$(ICONFIGFILES),$(EXT_DEFINES) $(GLX_DEFINES))
-
-#if PixelSize == 8
-ObjectFromSpecialSource(cfbglrop8,cfbglblt8,-DGLYPHROP)
-
-#ifdef MipsArchitecture
-stipmipste.s: stipmips.s
- $(RM) $@
- $(LN) stipmips.s stipmipste.s
-clean::
- $(RM) stipmipste.s
-
-stipmipste.o: stipmipste.s
- $(AS) -o $@ -DTETEXT stipmipste.s
-#endif
-
-#ifdef SparcArchitecture
-stipsparcte.s: stipsparc.s
- $(RM) $@
- $(LN) stipsparc.s stipsparcte.s
-clean::
- $(RM) stipsparcte.s
-
-stipsparc.o: stipsparc.s
- $(CPP) stipsparc.s $(ASMDEFINES) | $(AS) -o $@ -
-
-stipsparcte.o: stipsparcte.s
- $(CPP) -DTETEXT stipsparcte.s $(ASMDEFINES) | $(AS) -o $@ -
-#endif
-#endif
-
-#if PixelSize == 32
-#ifdef SparcArchitecture
-stipsprcte32.s: stipsprc32.s
- $(RM) $@
- $(LN) stipsprc32.s stipsprcte32.s
-clean::
- $(RM) stipsprcte32.s
-
-stipsprc32.o: stipsprc32.s
- $(CPP) stipsprc32.s $(ASMDEFINES) | $(AS) -o $@ -
-
-stipsprcte32.o: stipsprcte32.s
- $(CPP) -DTETEXT stipsprcte32.s $(ASMDEFINES) | $(AS) -o $@ -
-#endif
-#endif
-
-#ifdef IHaveModules
-InstallLibraryModule($(CFBNAME),$(MODULEDIR),.)
-#endif
-
-DependTarget()
-
-#ifdef IHaveSubdirs
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-#endif
-
-InstallDriverSDKLibraryModule($(CFBNAME),$(DRIVERSDKMODULEDIR),.)
-
-#if PixelSize == 8
-InstallDriverSDKNonExecFile(cfb.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(cfb16.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(cfb24.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(cfb32.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(cfbmap.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(cfbunmap.h,$(DRIVERSDKINCLUDEDIR))
-#endif
diff --git a/nx-X11/programs/Xserver/cfb/cfb.h b/nx-X11/programs/Xserver/cfb/cfb.h
deleted file mode 100644
index 960f6756b..000000000
--- a/nx-X11/programs/Xserver/cfb/cfb.h
+++ /dev/null
@@ -1,1327 +0,0 @@
-/* $Xorg: cfb.h,v 1.3 2000/08/17 19:48:12 cpqbld Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-/* $XFree86: xc/programs/Xserver/cfb/cfb.h,v 3.29tsi Exp $ */
-
-#if !defined(__CFB_H__) || defined(CFB_PROTOTYPES_ONLY)
-
-#include <X11/X.h>
-#include "globals.h"
-#include "pixmap.h"
-#include "region.h"
-#include "gc.h"
-#include "colormap.h"
-#include "miscstruct.h"
-#include "servermd.h"
-#include "windowstr.h"
-#include "mfb.h"
-#undef PixelType
-
-#include "cfbmap.h"
-
-#ifndef CfbBits
-#define CfbBits CARD32
-#endif
-
-#ifndef CFB_PROTOTYPES_ONLY
-#define __CFB_H__
-/*
- private filed of pixmap
- pixmap.devPrivate = (unsigned int *)pointer_to_bits
- pixmap.devKind = width_of_pixmap_in_bytes
-*/
-
-extern int cfbGCPrivateIndex;
-extern int cfbWindowPrivateIndex;
-
-/* private field of GC */
-typedef struct {
- unsigned char rop; /* special case rop values */
- /* next two values unused in cfb, included for compatibility with mfb */
- unsigned char ropOpStip; /* rop for opaque stipple */
- /* this value is ropFillArea in mfb, usurped for cfb */
- unsigned char oneRect; /* drawable has one clip rect */
- CfbBits xor, and; /* reduced rop values */
- } cfbPrivGC;
-
-typedef cfbPrivGC *cfbPrivGCPtr;
-
-#define cfbGetGCPrivate(pGC) ((cfbPrivGCPtr)\
- (pGC)->devPrivates[cfbGCPrivateIndex].ptr)
-
-#define cfbGetCompositeClip(pGC) ((pGC)->pCompositeClip)
-
-/* way to carry RROP info around */
-typedef struct {
- unsigned char rop;
- CfbBits xor, and;
-} cfbRRopRec, *cfbRRopPtr;
-
-/* private field of window */
-typedef struct {
- unsigned char fastBorder; /* non-zero if border is 32 bits wide */
- unsigned char fastBackground;
- unsigned short unused; /* pad for alignment with Sun compiler */
- DDXPointRec oldRotate;
- PixmapPtr pRotatedBackground;
- PixmapPtr pRotatedBorder;
- } cfbPrivWin;
-
-#define cfbGetWindowPrivate(_pWin) ((cfbPrivWin *)\
- (_pWin)->devPrivates[cfbWindowPrivateIndex].ptr)
-
-
-/* cfb8bit.c */
-
-extern int cfbSetStipple(
- int /*alu*/,
- CfbBits /*fg*/,
- CfbBits /*planemask*/
-);
-
-extern int cfbSetOpaqueStipple(
- int /*alu*/,
- CfbBits /*fg*/,
- CfbBits /*bg*/,
- CfbBits /*planemask*/
-);
-
-extern int cfbComputeClipMasks32(
- BoxPtr /*pBox*/,
- int /*numRects*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- CARD32 * /*clips*/
-);
-#endif /* !CFB_PROTOTYPES_ONLY */
-/* cfb8cppl.c */
-
-extern void cfbCopyImagePlane(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- int /*rop*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-
-#ifndef CFB_PROTOTYPES_ONLY
-extern void cfbCopyPlane8to1(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- int /*rop*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/,
- unsigned long /*bitPlane*/
-);
-
-extern void cfbCopyPlane16to1(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- int /*rop*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/,
- unsigned long /*bitPlane*/
-);
-
-extern void cfbCopyPlane24to1(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- int /*rop*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/,
- unsigned long /*bitPlane*/
-);
-
-extern void cfbCopyPlane32to1(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- int /*rop*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/,
- unsigned long /*bitPlane*/
-);
-#endif
-
-/* cfb8lineCO.c */
-
-extern int cfb8LineSS1RectCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/,
- DDXPointPtr /*pptInitOrig*/,
- int * /*x1p*/,
- int * /*y1p*/,
- int * /*x2p*/,
- int * /*y2p*/
-);
-
-extern void cfb8LineSS1Rect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-extern void cfb8ClippedLineCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x1*/,
- int /*y1*/,
- int /*x2*/,
- int /*y2*/,
- BoxPtr /*boxp*/,
- Bool /*shorten*/
-);
-/* cfb8lineCP.c */
-
-extern int cfb8LineSS1RectPreviousCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/,
- DDXPointPtr /*pptInitOrig*/,
- int * /*x1p*/,
- int * /*y1p*/,
- int * /*x2p*/,
- int * /*y2p*/
-);
-/* cfb8lineG.c */
-
-extern int cfb8LineSS1RectGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/,
- DDXPointPtr /*pptInitOrig*/,
- int * /*x1p*/,
- int * /*y1p*/,
- int * /*x2p*/,
- int * /*y2p*/
-);
-
-extern void cfb8ClippedLineGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x1*/,
- int /*y1*/,
- int /*x2*/,
- int /*y2*/,
- BoxPtr /*boxp*/,
- Bool /*shorten*/
-);
-/* cfb8lineX.c */
-
-extern int cfb8LineSS1RectXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/,
- DDXPointPtr /*pptInitOrig*/,
- int * /*x1p*/,
- int * /*y1p*/,
- int * /*x2p*/,
- int * /*y2p*/
-);
-
-extern void cfb8ClippedLineXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x1*/,
- int /*y1*/,
- int /*x2*/,
- int /*y2*/,
- BoxPtr /*boxp*/,
- Bool /*shorten*/
-);
-/* cfb8segC.c */
-
-extern int cfb8SegmentSS1RectCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-/* cfb8segCS.c */
-
-extern int cfb8SegmentSS1RectShiftCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-
-extern void cfb8SegmentSS1Rect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-/* cfb8segG.c */
-
-extern int cfb8SegmentSS1RectGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-/* cfbsegX.c */
-
-extern int cfb8SegmentSS1RectXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-/* cfballpriv.c */
-
-extern Bool cfbAllocatePrivates(
- ScreenPtr /*pScreen*/,
- int * /*window_index*/,
- int * /*gc_index*/
-);
-/* cfbbitblt.c */
-
-extern RegionPtr cfbBitBlt(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- void (* /*doBitBlt*/)(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
- ),
- unsigned long /*bitPlane*/
-);
-
-#define cfbCopyPlaneExpand cfbBitBlt
-
-extern RegionPtr cfbCopyPlaneReduce(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr /*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- void (* /*doCopyPlane*/)(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/,
- unsigned long /*bitPlane*/ /* We must know which plane to reduce! */
- ),
- unsigned long /*bitPlane*/
-);
-
-extern void cfbDoBitblt(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-
-extern RegionPtr cfbCopyArea(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/
-);
-
-#ifndef CFB_PROTOTYPES_ONLY
-extern void cfbCopyPlane1to8(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- int /*rop*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-#endif
-
-extern RegionPtr cfbCopyPlane(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr /*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- unsigned long /*bitPlane*/
-);
-/* cfbbltC.c */
-
-extern void cfbDoBitbltCopy(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* cfbbltG.c */
-
-extern void cfbDoBitbltGeneral(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* cfbbltO.c */
-
-extern void cfbDoBitbltOr(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* cfbbltX.c */
-
-extern void cfbDoBitbltXor(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* cfbbres.c */
-
-extern void cfbBresS(
- int /*rop*/,
- CfbBits /*and*/,
- CfbBits /*xor*/,
- CfbBits * /*addrl*/,
- int /*nlwidth*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/
-);
-/* cfbbresd.c */
-
-extern void cfbBresD(
- cfbRRopPtr /*rrops*/,
- int * /*pdashIndex*/,
- unsigned char * /*pDash*/,
- int /*numInDashList*/,
- int * /*pdashOffset*/,
- int /*isDoubleDash*/,
- CfbBits * /*addrl*/,
- int /*nlwidth*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/
-);
-/* cfbbstore.c */
-
-extern void cfbSaveAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnSave*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-
-extern void cfbRestoreAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnRestore*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-/* cfbcmap.c */
-
-#ifndef CFB_PROTOTYPES_ONLY
-extern int cfbListInstalledColormaps(
- ScreenPtr /*pScreen*/,
- Colormap * /*pmaps*/
-);
-
-extern void cfbInstallColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void cfbUninstallColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void cfbResolveColor(
- unsigned short * /*pred*/,
- unsigned short * /*pgreen*/,
- unsigned short * /*pblue*/,
- VisualPtr /*pVisual*/
-);
-
-extern Bool cfbInitializeColormap(
- ColormapPtr /*pmap*/
-);
-
-extern int cfbExpandDirectColors(
- ColormapPtr /*pmap*/,
- int /*ndef*/,
- xColorItem * /*indefs*/,
- xColorItem * /*outdefs*/
-);
-
-extern Bool cfbCreateDefColormap(
- ScreenPtr /*pScreen*/
-);
-
-extern Bool cfbSetVisualTypes(
- int /*depth*/,
- int /*visuals*/,
- int /*bitsPerRGB*/
-);
-
-extern void cfbClearVisualTypes(void);
-
-extern Bool cfbInitVisuals(
- VisualPtr * /*visualp*/,
- DepthPtr * /*depthp*/,
- int * /*nvisualp*/,
- int * /*ndepthp*/,
- int * /*rootDepthp*/,
- VisualID * /*defaultVisp*/,
- unsigned long /*sizes*/,
- int /*bitsPerRGB*/
-);
-#endif
-/* cfbfillarcC.c */
-
-extern void cfbPolyFillArcSolidCopy(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* cfbfillarcG.c */
-
-extern void cfbPolyFillArcSolidGeneral(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* cfbfillrct.c */
-
-extern void cfbFillBoxTileOdd(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- BoxPtr /*rects*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/
-);
-
-extern void cfbFillRectTileOdd(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void cfbPolyFillRect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nrectFill*/,
- xRectangle * /*prectInit*/
-);
-/* cfbfillsp.c */
-
-extern void cfbUnnaturalTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void cfbUnnaturalStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-#ifndef CFB_PROTOTYPES_ONLY
-extern void cfb8Stipple32FS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void cfb8OpaqueStipple32FS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-#endif
-/* cfbgc.c */
-
-extern GCOpsPtr cfbMatchCommon(
- GCPtr /*pGC*/,
- cfbPrivGCPtr /*devPriv*/
-);
-
-extern Bool cfbCreateGC(
- GCPtr /*pGC*/
-);
-
-extern void cfbValidateGC(
- GCPtr /*pGC*/,
- unsigned long /*changes*/,
- DrawablePtr /*pDrawable*/
-);
-
-/* cfbgetsp.c */
-
-extern void cfbGetSpans(
- DrawablePtr /*pDrawable*/,
- int /*wMax*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- char * /*pdstStart*/
-);
-/* cfbglblt8.c */
-
-extern void cfbPolyGlyphBlt8(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* cfbglrop8.c */
-
-extern void cfbPolyGlyphRop8(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* cfbhrzvert.c */
-
-extern void cfbHorzS(
- int /*rop*/,
- CfbBits /*and*/,
- CfbBits /*xor*/,
- CfbBits * /*addrl*/,
- int /*nlwidth*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/
-);
-
-extern void cfbVertS(
- int /*rop*/,
- CfbBits /*and*/,
- CfbBits /*xor*/,
- CfbBits * /*addrl*/,
- int /*nlwidth*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/
-);
-/* cfbigblt8.c */
-
-extern void cfbImageGlyphBlt8(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* cfbimage.c */
-
-extern void cfbPutImage(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*depth*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- int /*leftPad*/,
- int /*format*/,
- char * /*pImage*/
-);
-
-extern void cfbGetImage(
- DrawablePtr /*pDrawable*/,
- int /*sx*/,
- int /*sy*/,
- int /*w*/,
- int /*h*/,
- unsigned int /*format*/,
- unsigned long /*planeMask*/,
- char * /*pdstLine*/
-);
-/* cfbline.c */
-
-extern void cfbLineSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-extern void cfbLineSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-/* cfbmskbits.c */
-/* cfbpixmap.c */
-
-extern PixmapPtr cfbCreatePixmap(
- ScreenPtr /*pScreen*/,
- int /*width*/,
- int /*height*/,
- int /*depth*/
-);
-
-extern Bool cfbDestroyPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern PixmapPtr cfbCopyPixmap(
- PixmapPtr /*pSrc*/
-);
-
-extern void cfbPadPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern void cfbXRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rw*/
-);
-
-extern void cfbYRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rh*/
-);
-
-extern void cfbCopyRotatePixmap(
- PixmapPtr /*psrcPix*/,
- PixmapPtr * /*ppdstPix*/,
- int /*xrot*/,
- int /*yrot*/
-);
-/* cfbply1rctC.c */
-
-extern void cfbFillPoly1RectCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*shape*/,
- int /*mode*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-/* cfbply1rctG.c */
-
-extern void cfbFillPoly1RectGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*shape*/,
- int /*mode*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-/* cfbpntwin.c */
-
-extern void cfbPaintWindow(
- WindowPtr /*pWin*/,
- RegionPtr /*pRegion*/,
- int /*what*/
-);
-
-extern void cfbFillBoxSolid(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- unsigned long /*pixel*/
-);
-
-extern void cfbFillBoxTile32(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/
-);
-/* cfbpolypnt.c */
-
-extern void cfbPolyPoint(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- xPoint * /*pptInit*/
-);
-/* cfbpush8.c */
-
-#ifndef CFB_PROTOTYPES_ONLY
-extern void cfbPushPixels8(
- GCPtr /*pGC*/,
- PixmapPtr /*pBitmap*/,
- DrawablePtr /*pDrawable*/,
- int /*dx*/,
- int /*dy*/,
- int /*xOrg*/,
- int /*yOrg*/
-);
-/* cfbrctstp8.c */
-
-extern void cfb8FillRectOpaqueStippled32(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void cfb8FillRectTransparentStippled32(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void cfb8FillRectStippledUnnatural(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-#endif
-/* cfbrrop.c */
-
-extern int cfbReduceRasterOp(
- int /*rop*/,
- CfbBits /*fg*/,
- CfbBits /*pm*/,
- CfbBits * /*andp*/,
- CfbBits * /*xorp*/
-);
-/* cfbscrinit.c */
-
-extern Bool cfbCloseScreen(
- int /*index*/,
- ScreenPtr /*pScreen*/
-);
-
-extern Bool cfbSetupScreen(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern Bool cfbFinishScreenInit(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern Bool cfbScreenInit(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern PixmapPtr cfbGetScreenPixmap(
- ScreenPtr /*pScreen*/
-);
-
-extern void cfbSetScreenPixmap(
- PixmapPtr /*pPix*/
-);
-
-/* cfbseg.c */
-
-extern void cfbSegmentSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-
-extern void cfbSegmentSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-/* cfbsetsp.c */
-
-extern void cfbSetScanline(
- int /*y*/,
- int /*xOrigin*/,
- int /*xStart*/,
- int /*xEnd*/,
- unsigned int * /*psrc*/,
- int /*alu*/,
- int * /*pdstBase*/,
- int /*widthDst*/,
- unsigned long /*planemask*/
-);
-
-extern void cfbSetSpans(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- char * /*psrc*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- int /*fSorted*/
-);
-/* cfbsolidC.c */
-
-extern void cfbFillRectSolidCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void cfbSolidSpansCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* cfbsolidG.c */
-
-extern void cfbFillRectSolidGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void cfbSolidSpansGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* cfbsolidX.c */
-
-extern void cfbFillRectSolidXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void cfbSolidSpansXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* cfbteblt8.c */
-
-#ifndef CFB_PROTOTYPES_ONLY
-extern void cfbTEGlyphBlt8(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*xInit*/,
- int /*yInit*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-#endif
-/* cfbtegblt.c */
-
-extern void cfbTEGlyphBlt(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* cfbtile32C.c */
-
-extern void cfbFillRectTile32Copy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void cfbTile32FSCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* cfbtile32G.c */
-
-extern void cfbFillRectTile32General(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void cfbTile32FSGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* cfbtileoddC.c */
-
-extern void cfbFillBoxTileOddCopy(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void cfbFillSpanTileOddCopy(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void cfbFillBoxTile32sCopy(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void cfbFillSpanTile32sCopy(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-/* cfbtileoddG.c */
-
-extern void cfbFillBoxTileOddGeneral(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void cfbFillSpanTileOddGeneral(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void cfbFillBoxTile32sGeneral(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void cfbFillSpanTile32sGeneral(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-/* cfbwindow.c */
-
-extern Bool cfbCreateWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool cfbDestroyWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool cfbMapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern Bool cfbPositionWindow(
- WindowPtr /*pWin*/,
- int /*x*/,
- int /*y*/
-);
-
-extern Bool cfbUnmapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern void cfbCopyWindow(
- WindowPtr /*pWin*/,
- DDXPointRec /*ptOldOrg*/,
- RegionPtr /*prgnSrc*/
-);
-
-extern Bool cfbChangeWindowAttributes(
- WindowPtr /*pWin*/,
- unsigned long /*mask*/
-);
-/* cfbzerarcC.c */
-
-extern void cfbZeroPolyArcSS8Copy(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* cfbzerarcG.c */
-
-extern void cfbZeroPolyArcSS8General(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* cfbzerarcX.c */
-
-extern void cfbZeroPolyArcSS8Xor(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-
-#if (!defined(SINGLEDEPTH) && PSZ != 8) || defined(FORCE_SEPARATE_PRIVATE)
-
-#define CFB_NEED_SCREEN_PRIVATE
-
-extern int cfbScreenPrivateIndex;
-#endif
-
-#ifndef CFB_PROTOTYPES_ONLY
-
-/* Common macros for extracting drawing information */
-
-#define cfbGetWindowPixmap(d) \
- ((* ((DrawablePtr)(d))->pScreen->GetWindowPixmap)((WindowPtr)(d)))
-
-#define cfbGetTypedWidth(pDrawable,wtype) (\
- (((pDrawable)->type != DRAWABLE_PIXMAP) ? \
- (int) (cfbGetWindowPixmap(pDrawable)->devKind) : \
- (int)(((PixmapPtr)pDrawable)->devKind)) / sizeof (wtype))
-
-#define cfbGetByteWidth(pDrawable) cfbGetTypedWidth(pDrawable, unsigned char)
-
-#define cfbGetPixelWidth(pDrawable) cfbGetTypedWidth(pDrawable, PixelType)
-
-#define cfbGetLongWidth(pDrawable) cfbGetTypedWidth(pDrawable, CfbBits)
-
-#define cfbGetTypedWidthAndPointer(pDrawable, width, pointer, wtype, ptype) {\
- PixmapPtr _pPix; \
- if ((pDrawable)->type != DRAWABLE_PIXMAP) \
- _pPix = cfbGetWindowPixmap(pDrawable); \
- else \
- _pPix = (PixmapPtr) (pDrawable); \
- (pointer) = (ptype *) _pPix->devPrivate.ptr; \
- (width) = ((int) _pPix->devKind) / sizeof (wtype); \
-}
-
-#define cfbGetByteWidthAndPointer(pDrawable, width, pointer) \
- cfbGetTypedWidthAndPointer(pDrawable, width, pointer, unsigned char, unsigned char)
-
-#define cfbGetLongWidthAndPointer(pDrawable, width, pointer) \
- cfbGetTypedWidthAndPointer(pDrawable, width, pointer, CfbBits, CfbBits)
-
-#define cfbGetPixelWidthAndPointer(pDrawable, width, pointer) \
- cfbGetTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
-
-#define cfbGetWindowTypedWidthAndPointer(pWin, width, pointer, wtype, ptype) {\
- PixmapPtr _pPix = cfbGetWindowPixmap((DrawablePtr) (pWin)); \
- (pointer) = (ptype *) _pPix->devPrivate.ptr; \
- (width) = ((int) _pPix->devKind) / sizeof (wtype); \
-}
-
-#define cfbGetWindowLongWidthAndPointer(pWin, width, pointer) \
- cfbGetWindowTypedWidthAndPointer(pWin, width, pointer, CfbBits, CfbBits)
-
-#define cfbGetWindowByteWidthAndPointer(pWin, width, pointer) \
- cfbGetWindowTypedWidthAndPointer(pWin, width, pointer, unsigned char, unsigned char)
-
-#define cfbGetWindowPixelWidthAndPointer(pDrawable, width, pointer) \
- cfbGetWindowTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
-
-/*
- * XFree86 empties the root BorderClip when the VT is inactive,
- * here's a macro which uses that to disable GetImage and GetSpans
- */
-#define cfbWindowEnabled(pWin) \
- REGION_NOTEMPTY((pWin)->drawable.pScreen, \
- &WindowTable[(pWin)->drawable.pScreen->myNum]->borderClip)
-
-#define cfbDrawableEnabled(pDrawable) \
- ((pDrawable)->type == DRAWABLE_PIXMAP ? \
- TRUE : cfbWindowEnabled((WindowPtr) pDrawable))
-
-#include "micoord.h"
-
-/*
- * if CFB is built as a module, it shouldn't call libc functions.
- */
-#ifdef XFree86LOADER
-#include "xf86_ansic.h"
-#endif
-#endif /* !CFB_PROTOTYPES_ONLY */
-
-#endif
diff --git a/nx-X11/programs/Xserver/cfb/cfb16.h b/nx-X11/programs/Xserver/cfb/cfb16.h
deleted file mode 100644
index 3d51cd142..000000000
--- a/nx-X11/programs/Xserver/cfb/cfb16.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfb16.h,v 1.4 1998/11/28 10:42:50 dawes Exp $ */
-/*
- * Copyright (C) 1994-1998 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifndef _CFB16_H_
-#define _CFB16_H_
-
-/*
- * C's preprocessing language substitutes >text<, not values...
- */
-
-#ifdef OLDPSZ
-# undef OLDPSZ
-#endif
-
-#ifdef PSZ
-
-# if (PSZ == 8)
-# define OLDPSZ 8
-# endif
-
-# if (PSZ == 16)
-# define OLDPSZ 16
-# endif
-
-# if (PSZ == 24)
-# define OLDPSZ 24
-# endif
-
-# if (PSZ == 32)
-# define OLDPSZ 32
-# endif
-
-# ifndef OLDPSZ
- /* Maybe an #error here ? */
-# endif
-
-# undef PSZ
-
-#endif
-
-#define PSZ 16
-#define CFB_PROTOTYPES_ONLY
-#include "cfb.h"
-#undef CFB_PROTOTYPES_ONLY
-#include "cfbunmap.h"
-
-#undef PSZ
-#ifdef OLDPSZ
-
-# if (OLDPSZ == 8)
-# define PSZ 8
-# endif
-
-# if (OLDPSZ == 16)
-# define PSZ 16
-# endif
-
-# if (OLDPSZ == 24)
-# define PSZ 24
-# endif
-
-# if (OLDPSZ == 32)
-# define PSZ 32
-# endif
-
-# undef OLDPSZ
-
-#endif
-
-#endif /* _CFB16_H_ */
diff --git a/nx-X11/programs/Xserver/cfb/cfb24.h b/nx-X11/programs/Xserver/cfb/cfb24.h
deleted file mode 100644
index 3a99934b7..000000000
--- a/nx-X11/programs/Xserver/cfb/cfb24.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfb24.h,v 1.4 1998/11/28 10:42:51 dawes Exp $ */
-/*
- * Copyright (C) 1994-1998 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _CFB24_H_
-#define _CFB24_H_
-
-/*
- * C's preprocessing language substitutes >text<, not values...
- */
-
-#ifdef OLDPSZ
-# undef OLDPSZ
-#endif
-
-#ifdef PSZ
-
-# if (PSZ == 8)
-# define OLDPSZ 8
-# endif
-
-# if (PSZ == 16)
-# define OLDPSZ 16
-# endif
-
-# if (PSZ == 24)
-# define OLDPSZ 24
-# endif
-
-# if (PSZ == 32)
-# define OLDPSZ 32
-# endif
-
-# ifndef OLDPSZ
- /* Maybe an #error here ? */
-# endif
-
-# undef PSZ
-
-#endif
-
-#define PSZ 24
-#define CFB_PROTOTYPES_ONLY
-#include "cfb.h"
-#undef CFB_PROTOTYPES_ONLY
-#include "cfbunmap.h"
-
-#undef PSZ
-#ifdef OLDPSZ
-
-# if (OLDPSZ == 8)
-# define PSZ 8
-# endif
-
-# if (OLDPSZ == 16)
-# define PSZ 16
-# endif
-
-# if (OLDPSZ == 24)
-# define PSZ 24
-# endif
-
-# if (OLDPSZ == 32)
-# define PSZ 32
-# endif
-
-# undef OLDPSZ
-
-#endif
-
-#endif /* _CFB24_H_ */
diff --git a/nx-X11/programs/Xserver/cfb/cfb32.h b/nx-X11/programs/Xserver/cfb/cfb32.h
deleted file mode 100644
index 5ea4c13c8..000000000
--- a/nx-X11/programs/Xserver/cfb/cfb32.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfb32.h,v 1.4 1998/11/28 10:42:51 dawes Exp $ */
-/*
- * Copyright (C) 1994-1998 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifndef _CFB32_H_
-#define _CFB32_H_
-
-/*
- * C's preprocessing language substitutes >text<, not values...
- */
-
-#ifdef OLDPSZ
-# undef OLDPSZ
-#endif
-
-#ifdef PSZ
-
-# if (PSZ == 8)
-# define OLDPSZ 8
-# endif
-
-# if (PSZ == 16)
-# define OLDPSZ 16
-# endif
-
-# if (PSZ == 24)
-# define OLDPSZ 24
-# endif
-
-# if (PSZ == 32)
-# define OLDPSZ 32
-# endif
-
-# ifndef OLDPSZ
- /* Maybe an #error here ? */
-# endif
-
-# undef PSZ
-
-#endif
-
-#define PSZ 32
-#define CFB_PROTOTYPES_ONLY
-#include "cfb.h"
-#undef CFB_PROTOTYPES_ONLY
-#include "cfbunmap.h"
-
-#undef PSZ
-#ifdef OLDPSZ
-
-# if (OLDPSZ == 8)
-# define PSZ 8
-# endif
-
-# if (OLDPSZ == 16)
-# define PSZ 16
-# endif
-
-# if (OLDPSZ == 24)
-# define PSZ 24
-# endif
-
-# if (OLDPSZ == 32)
-# define PSZ 32
-# endif
-
-# undef OLDPSZ
-
-#endif
-
-#endif /* _CFB32_H_ */
diff --git a/nx-X11/programs/Xserver/cfb/cfb8bit.c b/nx-X11/programs/Xserver/cfb/cfb8bit.c
deleted file mode 100644
index 0bc5debbb..000000000
--- a/nx-X11/programs/Xserver/cfb/cfb8bit.c
+++ /dev/null
@@ -1,471 +0,0 @@
-/* $Xorg: cfb8bit.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
-/*
-
-Copyright 1989, 1994, 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.
-
-*/
-/* $XFree86: xc/programs/Xserver/cfb/cfb8bit.c,v 1.4 2001/01/17 22:36:34 dawes Exp $ */
-
-/*
- * cfb8bit.c
- *
- * 8 bit color frame buffer utility routines
- */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if PSZ == 8
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "cfb8bit.h"
-
-PixelGroup cfb8StippleMasks[NUM_MASKS] = {
-#if NUM_MASKS == 16
- 0x00000000, 0x000000ff, 0x0000ff00, 0x0000ffff,
- 0x00ff0000, 0x00ff00ff, 0x00ffff00, 0x00ffffff,
- 0xff000000, 0xff0000ff, 0xff00ff00, 0xff00ffff,
- 0xffff0000, 0xffff00ff, 0xffffff00, 0xffffffff
-#else /* NUM_MASKS == 256 */
- 0x0000000000000000, 0x00000000000000ff,
- 0x000000000000ff00, 0x000000000000ffff,
- 0x0000000000ff0000, 0x0000000000ff00ff,
- 0x0000000000ffff00, 0x0000000000ffffff,
- 0x00000000ff000000, 0x00000000ff0000ff,
- 0x00000000ff00ff00, 0x00000000ff00ffff,
- 0x00000000ffff0000, 0x00000000ffff00ff,
- 0x00000000ffffff00, 0x00000000ffffffff,
- 0x000000ff00000000, 0x000000ff000000ff,
- 0x000000ff0000ff00, 0x000000ff0000ffff,
- 0x000000ff00ff0000, 0x000000ff00ff00ff,
- 0x000000ff00ffff00, 0x000000ff00ffffff,
- 0x000000ffff000000, 0x000000ffff0000ff,
- 0x000000ffff00ff00, 0x000000ffff00ffff,
- 0x000000ffffff0000, 0x000000ffffff00ff,
- 0x000000ffffffff00, 0x000000ffffffffff,
- 0x0000ff0000000000, 0x0000ff00000000ff,
- 0x0000ff000000ff00, 0x0000ff000000ffff,
- 0x0000ff0000ff0000, 0x0000ff0000ff00ff,
- 0x0000ff0000ffff00, 0x0000ff0000ffffff,
- 0x0000ff00ff000000, 0x0000ff00ff0000ff,
- 0x0000ff00ff00ff00, 0x0000ff00ff00ffff,
- 0x0000ff00ffff0000, 0x0000ff00ffff00ff,
- 0x0000ff00ffffff00, 0x0000ff00ffffffff,
- 0x0000ffff00000000, 0x0000ffff000000ff,
- 0x0000ffff0000ff00, 0x0000ffff0000ffff,
- 0x0000ffff00ff0000, 0x0000ffff00ff00ff,
- 0x0000ffff00ffff00, 0x0000ffff00ffffff,
- 0x0000ffffff000000, 0x0000ffffff0000ff,
- 0x0000ffffff00ff00, 0x0000ffffff00ffff,
- 0x0000ffffffff0000, 0x0000ffffffff00ff,
- 0x0000ffffffffff00, 0x0000ffffffffffff,
- 0x00ff000000000000, 0x00ff0000000000ff,
- 0x00ff00000000ff00, 0x00ff00000000ffff,
- 0x00ff000000ff0000, 0x00ff000000ff00ff,
- 0x00ff000000ffff00, 0x00ff000000ffffff,
- 0x00ff0000ff000000, 0x00ff0000ff0000ff,
- 0x00ff0000ff00ff00, 0x00ff0000ff00ffff,
- 0x00ff0000ffff0000, 0x00ff0000ffff00ff,
- 0x00ff0000ffffff00, 0x00ff0000ffffffff,
- 0x00ff00ff00000000, 0x00ff00ff000000ff,
- 0x00ff00ff0000ff00, 0x00ff00ff0000ffff,
- 0x00ff00ff00ff0000, 0x00ff00ff00ff00ff,
- 0x00ff00ff00ffff00, 0x00ff00ff00ffffff,
- 0x00ff00ffff000000, 0x00ff00ffff0000ff,
- 0x00ff00ffff00ff00, 0x00ff00ffff00ffff,
- 0x00ff00ffffff0000, 0x00ff00ffffff00ff,
- 0x00ff00ffffffff00, 0x00ff00ffffffffff,
- 0x00ffff0000000000, 0x00ffff00000000ff,
- 0x00ffff000000ff00, 0x00ffff000000ffff,
- 0x00ffff0000ff0000, 0x00ffff0000ff00ff,
- 0x00ffff0000ffff00, 0x00ffff0000ffffff,
- 0x00ffff00ff000000, 0x00ffff00ff0000ff,
- 0x00ffff00ff00ff00, 0x00ffff00ff00ffff,
- 0x00ffff00ffff0000, 0x00ffff00ffff00ff,
- 0x00ffff00ffffff00, 0x00ffff00ffffffff,
- 0x00ffffff00000000, 0x00ffffff000000ff,
- 0x00ffffff0000ff00, 0x00ffffff0000ffff,
- 0x00ffffff00ff0000, 0x00ffffff00ff00ff,
- 0x00ffffff00ffff00, 0x00ffffff00ffffff,
- 0x00ffffffff000000, 0x00ffffffff0000ff,
- 0x00ffffffff00ff00, 0x00ffffffff00ffff,
- 0x00ffffffffff0000, 0x00ffffffffff00ff,
- 0x00ffffffffffff00, 0x00ffffffffffffff,
- 0xff00000000000000, 0xff000000000000ff,
- 0xff0000000000ff00, 0xff0000000000ffff,
- 0xff00000000ff0000, 0xff00000000ff00ff,
- 0xff00000000ffff00, 0xff00000000ffffff,
- 0xff000000ff000000, 0xff000000ff0000ff,
- 0xff000000ff00ff00, 0xff000000ff00ffff,
- 0xff000000ffff0000, 0xff000000ffff00ff,
- 0xff000000ffffff00, 0xff000000ffffffff,
- 0xff0000ff00000000, 0xff0000ff000000ff,
- 0xff0000ff0000ff00, 0xff0000ff0000ffff,
- 0xff0000ff00ff0000, 0xff0000ff00ff00ff,
- 0xff0000ff00ffff00, 0xff0000ff00ffffff,
- 0xff0000ffff000000, 0xff0000ffff0000ff,
- 0xff0000ffff00ff00, 0xff0000ffff00ffff,
- 0xff0000ffffff0000, 0xff0000ffffff00ff,
- 0xff0000ffffffff00, 0xff0000ffffffffff,
- 0xff00ff0000000000, 0xff00ff00000000ff,
- 0xff00ff000000ff00, 0xff00ff000000ffff,
- 0xff00ff0000ff0000, 0xff00ff0000ff00ff,
- 0xff00ff0000ffff00, 0xff00ff0000ffffff,
- 0xff00ff00ff000000, 0xff00ff00ff0000ff,
- 0xff00ff00ff00ff00, 0xff00ff00ff00ffff,
- 0xff00ff00ffff0000, 0xff00ff00ffff00ff,
- 0xff00ff00ffffff00, 0xff00ff00ffffffff,
- 0xff00ffff00000000, 0xff00ffff000000ff,
- 0xff00ffff0000ff00, 0xff00ffff0000ffff,
- 0xff00ffff00ff0000, 0xff00ffff00ff00ff,
- 0xff00ffff00ffff00, 0xff00ffff00ffffff,
- 0xff00ffffff000000, 0xff00ffffff0000ff,
- 0xff00ffffff00ff00, 0xff00ffffff00ffff,
- 0xff00ffffffff0000, 0xff00ffffffff00ff,
- 0xff00ffffffffff00, 0xff00ffffffffffff,
- 0xffff000000000000, 0xffff0000000000ff,
- 0xffff00000000ff00, 0xffff00000000ffff,
- 0xffff000000ff0000, 0xffff000000ff00ff,
- 0xffff000000ffff00, 0xffff000000ffffff,
- 0xffff0000ff000000, 0xffff0000ff0000ff,
- 0xffff0000ff00ff00, 0xffff0000ff00ffff,
- 0xffff0000ffff0000, 0xffff0000ffff00ff,
- 0xffff0000ffffff00, 0xffff0000ffffffff,
- 0xffff00ff00000000, 0xffff00ff000000ff,
- 0xffff00ff0000ff00, 0xffff00ff0000ffff,
- 0xffff00ff00ff0000, 0xffff00ff00ff00ff,
- 0xffff00ff00ffff00, 0xffff00ff00ffffff,
- 0xffff00ffff000000, 0xffff00ffff0000ff,
- 0xffff00ffff00ff00, 0xffff00ffff00ffff,
- 0xffff00ffffff0000, 0xffff00ffffff00ff,
- 0xffff00ffffffff00, 0xffff00ffffffffff,
- 0xffffff0000000000, 0xffffff00000000ff,
- 0xffffff000000ff00, 0xffffff000000ffff,
- 0xffffff0000ff0000, 0xffffff0000ff00ff,
- 0xffffff0000ffff00, 0xffffff0000ffffff,
- 0xffffff00ff000000, 0xffffff00ff0000ff,
- 0xffffff00ff00ff00, 0xffffff00ff00ffff,
- 0xffffff00ffff0000, 0xffffff00ffff00ff,
- 0xffffff00ffffff00, 0xffffff00ffffffff,
- 0xffffffff00000000, 0xffffffff000000ff,
- 0xffffffff0000ff00, 0xffffffff0000ffff,
- 0xffffffff00ff0000, 0xffffffff00ff00ff,
- 0xffffffff00ffff00, 0xffffffff00ffffff,
- 0xffffffffff000000, 0xffffffffff0000ff,
- 0xffffffffff00ff00, 0xffffffffff00ffff,
- 0xffffffffffff0000, 0xffffffffffff00ff,
- 0xffffffffffffff00, 0xffffffffffffffff
-#endif
-};
-
-int cfb8StippleMode, cfb8StippleAlu, cfb8StippleRRop;
-PixelGroup cfb8StippleFg, cfb8StippleBg, cfb8StipplePm;
-PixelGroup cfb8StippleAnd[NUM_MASKS], cfb8StippleXor[NUM_MASKS];
-
-int
-cfb8SetStipple (alu, fg, planemask)
-int alu;
-CfbBits fg, planemask;
-{
- CfbBits and, xor, rrop;
- int s;
- CfbBits c;
-
- cfb8StippleMode = FillStippled;
- cfb8StippleAlu = alu;
- cfb8StippleFg = fg & PMSK;
- cfb8StipplePm = planemask & PMSK;
- rrop = cfbReduceRasterOp (alu, fg, planemask, &and, &xor);
- cfb8StippleRRop = rrop;
- /*
- * create the appropriate pixel-fill bits for current
- * foreground
- */
- for (s = 0; s < NUM_MASKS; s++)
- {
- c = cfb8StippleMasks[s];
- cfb8StippleAnd[s] = and | ~c;
- cfb8StippleXor[s] = xor & c;
- }
- return TRUE;
-}
-
-
-int
-cfb8SetOpaqueStipple (alu, fg, bg, planemask)
-int alu;
-CfbBits fg, bg, planemask;
-{
- CfbBits andfg, xorfg, andbg, xorbg, rropfg, rropbg;
- int s;
- CfbBits c;
-
- cfb8StippleMode = FillOpaqueStippled;
- cfb8StippleAlu = alu;
- cfb8StippleFg = fg & PMSK;
- cfb8StippleBg = bg & PMSK;
- cfb8StipplePm = planemask & PMSK;
- rropfg = cfbReduceRasterOp (alu, cfb8StippleFg, cfb8StipplePm, &andfg, &xorfg);
- rropbg = cfbReduceRasterOp (alu, cfb8StippleBg, cfb8StipplePm, &andbg, &xorbg);
- if (rropfg == rropbg)
- cfb8StippleRRop = rropfg;
- else
- cfb8StippleRRop = GXset;
- /*
- * create the appropriate pixel-fill bits for current
- * foreground
- */
- for (s = 0; s < NUM_MASKS; s++)
- {
- c = cfb8StippleMasks[s];
- cfb8StippleAnd[s] = (andfg | ~c) & (andbg | c);
- cfb8StippleXor[s] = (xorfg & c) | (xorbg & ~c);
- }
- return TRUE;
-}
-
-/*
- * a grungy little routine. This computes clip masks
- * for partial character blts. Returns rgnOUT if the
- * entire character is clipped; returns rgnIN if the entire
- * character is unclipped; returns rgnPART if a portion of
- * the character is visible. Computes clip masks for each
- * longword of the character -- and those with the
- * contents of the glyph to compute the visible bits.
- */
-
-#if PGSZ == 32
-#if (BITMAP_BIT_ORDER == MSBFirst)
-PixelGroup cfb8BitLenMasks[PGSZ] = {
- 0xffffffff, 0x7fffffff, 0x3fffffff, 0x1fffffff,
- 0x0fffffff, 0x07ffffff, 0x03ffffff, 0x01ffffff,
- 0x00ffffff, 0x007fffff, 0x003fffff, 0x001fffff,
- 0x000fffff, 0x0007ffff, 0x0003ffff, 0x0001ffff,
- 0x0000ffff, 0x00007fff, 0x00003fff, 0x00001fff,
- 0x00000fff, 0x000007ff, 0x000003ff, 0x000001ff,
- 0x000000ff, 0x0000007f, 0x0000003f, 0x0000001f,
- 0x0000000f, 0x00000007, 0x00000003, 0x00000001,
-};
-#else
-PixelGroup cfb8BitLenMasks[PGSZ] = {
- 0xffffffff, 0xfffffffe, 0xfffffffc, 0xfffffff8,
- 0xfffffff0, 0xffffffe0, 0xffffffc0, 0xffffff80,
- 0xffffff00, 0xfffffe00, 0xfffffc00, 0xfffff800,
- 0xfffff000, 0xffffe000, 0xffffc000, 0xffff8000,
- 0xffff0000, 0xfffe0000, 0xfffc0000, 0xfff80000,
- 0xfff00000, 0xffe00000, 0xffc00000, 0xff800000,
- 0xff000000, 0xfe000000, 0xfc000000, 0xf8000000,
- 0xf0000000, 0xe0000000, 0xc0000000, 0x80000000,
-};
-#endif /* BITMAP_BIT_ORDER */
-#else /* PGSZ == 64 */
-#if (BITMAP_BIT_ORDER == MSBFirst)
-PixelGroup cfb8BitLenMasks[PGSZ] = {
- 0xffffffffffffffff, 0x7fffffffffffffff,
- 0x3fffffffffffffff, 0x1fffffffffffffff,
- 0x0fffffffffffffff, 0x07ffffffffffffff,
- 0x03ffffffffffffff, 0x01ffffffffffffff,
- 0x00ffffffffffffff, 0x007fffffffffffff,
- 0x003fffffffffffff, 0x001fffffffffffff,
- 0x000fffffffffffff, 0x0007ffffffffffff,
- 0x0003ffffffffffff, 0x0001ffffffffffff,
- 0x0000ffffffffffff, 0x00007fffffffffff,
- 0x00003fffffffffff, 0x00001fffffffffff,
- 0x00000fffffffffff, 0x000007ffffffffff,
- 0x000003ffffffffff, 0x000001ffffffffff,
- 0x000000ffffffffff, 0x0000007fffffffff,
- 0x0000003fffffffff, 0x0000001fffffffff,
- 0x0000000fffffffff, 0x00000007ffffffff,
- 0x00000003ffffffff, 0x00000001ffffffff,
- 0x00000000ffffffff, 0x000000007fffffff,
- 0x000000003fffffff, 0x000000001fffffff,
- 0x000000000fffffff, 0x0000000007ffffff,
- 0x0000000003ffffff, 0x0000000001ffffff,
- 0x0000000000ffffff, 0x00000000007fffff,
- 0x00000000003fffff, 0x00000000001fffff,
- 0x00000000000fffff, 0x000000000007ffff,
- 0x000000000003ffff, 0x000000000001ffff,
- 0x000000000000ffff, 0x0000000000007fff,
- 0x0000000000003fff, 0x0000000000001fff,
- 0x0000000000000fff, 0x00000000000007ff,
- 0x00000000000003ff, 0x00000000000001ff,
- 0x00000000000000ff, 0x000000000000007f,
- 0x000000000000003f, 0x000000000000001f,
- 0x000000000000000f, 0x0000000000000007,
- 0x0000000000000003, 0x0000000000000001
-};
-#else
-PixelGroup cfb8BitLenMasks[PGSZ] = {
- 0xffffffffffffffff, 0xfffffffffffffffe,
- 0xfffffffffffffffc, 0xfffffffffffffff8,
- 0xfffffffffffffff0, 0xffffffffffffffe0,
- 0xffffffffffffffc0, 0xffffffffffffff80,
- 0xffffffffffffff00, 0xfffffffffffffe00,
- 0xfffffffffffffc00, 0xfffffffffffff800,
- 0xfffffffffffff000, 0xffffffffffffe000,
- 0xffffffffffffc000, 0xffffffffffff8000,
- 0xffffffffffff0000, 0xfffffffffffe0000,
- 0xfffffffffffc0000, 0xfffffffffff80000,
- 0xfffffffffff00000, 0xffffffffffe00000,
- 0xffffffffffc00000, 0xffffffffff800000,
- 0xffffffffff000000, 0xfffffffffe000000,
- 0xfffffffffc000000, 0xfffffffff8000000,
- 0xfffffffff0000000, 0xffffffffe0000000,
- 0xffffffffc0000000, 0xffffffff80000000,
- 0xffffffff00000000, 0xfffffffe00000000,
- 0xfffffffc00000000, 0xfffffff800000000,
- 0xfffffff000000000, 0xffffffe000000000,
- 0xffffffc000000000, 0xffffff8000000000,
- 0xffffff0000000000, 0xfffffe0000000000,
- 0xfffffc0000000000, 0xfffff80000000000,
- 0xfffff00000000000, 0xffffe00000000000,
- 0xffffc00000000000, 0xffff800000000000,
- 0xffff000000000000, 0xfffe000000000000,
- 0xfffc000000000000, 0xfff8000000000000,
- 0xfff0000000000000, 0xffe0000000000000,
- 0xffc0000000000000, 0xff80000000000000,
- 0xff00000000000000, 0xfe00000000000000,
- 0xfc00000000000000, 0xf800000000000000,
- 0xf000000000000000, 0xe000000000000000,
- 0xc000000000000000, 0x8000000000000000
-};
-#endif /* BITMAP_BIT_ORDER */
-#endif /* PGSZ */
-
-
-
-int
-cfb8ComputeClipMasks32 (pBox, numRects, x, y, w, h, clips)
- BoxPtr pBox;
- int numRects;
- int x, y, w, h;
- CARD32 *clips;
-{
- int yBand, yBandBot;
- int ch;
- CfbBits clip;
- int partIN = FALSE, partOUT = FALSE;
- int result;
-
- if (numRects == 0)
- return rgnOUT;
- while (numRects && pBox->y2 <= y)
- {
- --numRects;
- ++pBox;
- }
- if (!numRects || pBox->y1 >= y + h)
- return rgnOUT;
- yBand = pBox->y1;
- while (numRects && pBox->y1 == yBand && pBox->x2 <= x)
- {
- --numRects;
- ++pBox;
- }
- if (!numRects || pBox->y1 >= y + h)
- return rgnOUT;
- if (numRects &&
- x >= pBox->x1 &&
- x + w <= pBox->x2 &&
- y >= pBox->y1 &&
- y + h <= pBox->y2)
- {
- return rgnIN;
- }
- ch = 0;
- while (numRects && pBox->y1 < y + h)
- {
- yBand = pBox->y1;
- yBandBot = pBox->y2;
- while (ch < h && y + ch < yBand)
- {
- partOUT = TRUE;
- clips[ch++] = 0;
- }
- if (ch >= h)
- break;
- while (numRects && pBox->y1 == yBand && pBox->x2 <= x)
- {
- --numRects;
- ++pBox;
- }
- if (!numRects)
- break;
- clip = 0;
- while (numRects && pBox->y1 == yBand && pBox->x1 < x + w)
- {
- if (x < pBox->x1)
- if (pBox->x2 < x + w)
- clip |= cfb8BitLenMasks[pBox->x1 - x] & ~cfb8BitLenMasks[pBox->x2 - x];
- else
- clip |= cfb8BitLenMasks[pBox->x1 - x];
- else
- if (pBox->x2 < x + w)
- clip |= ~cfb8BitLenMasks[pBox->x2 - x];
- else
- clip = ~0;
- --numRects;
- ++pBox;
- }
- if (clip != 0)
- partIN = TRUE;
- if (clip != ~0)
- partOUT = TRUE;
- while (ch < h && y + ch < yBandBot)
- clips[ch++] = clip;
- while (numRects && pBox->y1 == yBand)
- {
- --numRects;
- ++pBox;
- }
- }
- while (ch < h)
- {
- partOUT = TRUE;
- clips[ch++] = 0;
- }
- result = rgnOUT;
- if (partIN)
- {
- if (partOUT)
- result = rgnPART;
- else
- result = rgnIN;
- }
- return result;
-}
-
-#endif /* PSZ == 8 */
diff --git a/nx-X11/programs/Xserver/cfb/cfb8bit.h b/nx-X11/programs/Xserver/cfb/cfb8bit.h
deleted file mode 100644
index 767549af7..000000000
--- a/nx-X11/programs/Xserver/cfb/cfb8bit.h
+++ /dev/null
@@ -1,1572 +0,0 @@
-/*
- * cfb8bit.h
- *
- * Defines which are only useful to 8 bit color frame buffers
- *
- * That doesn't seem to be true any more. Some of the macros in here
- * are used for depths other than 8. Perhaps the file should be
- * renamed. dpw
- */
-/* $XFree86: xc/programs/Xserver/cfb/cfb8bit.h,v 3.7 2001/12/14 19:59:20 dawes Exp $ */
-
-/*
-
-Copyright 1989, 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.
-*/
-
-/* $Xorg: cfb8bit.h,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "servermd.h"
-
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define GetBitGroup(x) (((PixelGroup) (x)) >> (PGSZ - PGSZB))
-#define NextBitGroup(x) ((x) <<= PGSZB)
-#define NextSomeBits(x,n) ((x) <<= (n))
-#else
-#define GetBitGroup(x) ((x) & PGSZBMSK)
-#define NextBitGroup(x) ((x) >>= PGSZB)
-#define NextSomeBits(x,n) ((x) >>= (n))
-#endif
-
-#define RotBitsLeft(x,k) ((x) = BitLeft (x,k) | \
- BitRight (x, PGSZ-(k)))
-
-#if defined(__GNUC__) && defined(mc68020)
-#undef RotBitsLeft
-#define RotBitsLeft(x,k) asm("rol%.l %2,%0" \
- : "=d" (x) \
- : "0" (x), "dI" (k))
-#endif
-
-#if PSZ == 8
-
-#define GetPixelGroup(x) (cfb8StippleXor[GetBitGroup(x)])
-#define RRopPixels(dst,x) (DoRRop(dst,cfb8StippleAnd[x], cfb8StippleXor[x]))
-#define RRopPixelGroup(dst,x) (RRopPixels(dst,GetBitGroup(x)))
-#define MaskRRopPixels(dst,x,mask) (DoMaskRRop(dst,cfb8StippleAnd[x], cfb8StippleXor[x], mask))
-
-#define NUM_MASKS (1<<PPW) /* XXX goes in cfbmskbits.h? */
-extern int cfb8StippleMode, cfb8StippleAlu;
-extern PixelGroup cfb8StippleFg, cfb8StippleBg, cfb8StipplePm;
-extern PixelGroup cfb8StippleMasks[NUM_MASKS];
-extern PixelGroup cfb8StippleAnd[NUM_MASKS], cfb8StippleXor[NUM_MASKS];
-extern int cfb8StippleRRop;
-
-#define cfb8PixelMasks cfb8StippleMasks
-#define cfb8Pixels cfb8StippleXor
-
-#define cfb8CheckPixels(fg, bg) \
- (FillOpaqueStippled == cfb8StippleMode && \
- GXcopy == cfb8StippleAlu && \
- ((fg) & PMSK) == cfb8StippleFg && \
- ((bg) & PMSK) == cfb8StippleBg && \
- PMSK == cfb8StipplePm)
-
-#define cfb8CheckOpaqueStipple(alu,fg,bg,pm) \
- ((FillOpaqueStippled == cfb8StippleMode && \
- (alu) == cfb8StippleAlu && \
- ((fg) & PMSK) == cfb8StippleFg && \
- ((bg) & PMSK) == cfb8StippleBg && \
- ((pm) & PMSK) == cfb8StipplePm) ? 0 : cfb8SetOpaqueStipple(alu,fg,bg,pm))
-
-#define cfb8CheckStipple(alu,fg,pm) \
- ((FillStippled == cfb8StippleMode && \
- (alu) == cfb8StippleAlu && \
- ((fg) & PMSK) == cfb8StippleFg && \
- ((pm) & PMSK) == cfb8StipplePm) ? 0 : cfb8SetStipple(alu,fg,pm))
-
-#define cfb8SetPixels(fg,bg) cfb8SetOpaqueStipple(GXcopy,fg,bg,PMSK)
-
-/*
- * These macros are shared between the unnatural spans code
- * and the unnatural rectangle code. No reasonable person
- * would attempt to use them anyplace else.
- */
-
-#define NextUnnaturalStippleWord \
- if (bitsLeft >= MFB_PPW) \
- { \
- inputBits = *srcTemp++; \
- bitsLeft -= MFB_PPW; \
- partBitsLeft = MFB_PPW; \
- } \
- else \
- { \
- inputBits = 0; \
- if (bitsLeft) \
- inputBits = *srcTemp & ~cfb8BitLenMasks[bitsLeft]; \
- srcTemp = srcStart; \
- partBitsLeft = bitsLeft; \
- bitsLeft = bitsWhole; \
- }
-
-#define NextUnnaturalStippleBits \
- if (partBitsLeft >= PPW) { \
- bits = GetBitGroup (inputBits); \
- NextBitGroup (inputBits); \
- partBitsLeft -= PPW; \
- } else { \
- bits = GetBitGroup (inputBits); \
- nextPartBits = PPW - partBitsLeft; \
- NextUnnaturalStippleWord \
- if (partBitsLeft < nextPartBits) { \
- if (partBitsLeft) {\
- bits |= BitRight (GetBitGroup (inputBits), \
- PPW - nextPartBits) & PPWMSK;\
- nextPartBits -= partBitsLeft; \
- } \
- NextUnnaturalStippleWord \
- } \
- bits |= BitRight (GetBitGroup (inputBits), \
- PPW - nextPartBits) & PPWMSK; \
- NextSomeBits (inputBits, nextPartBits); \
- partBitsLeft -= nextPartBits; \
- }
-
-#define NextUnnaturalStippleBitsFast \
- if (partBitsLeft >= PPW) { \
- bits = GetBitGroup(inputBits); \
- NextBitGroup(inputBits); \
- partBitsLeft -= PPW; \
- } else { \
- bits = GetBitGroup (inputBits); \
- nextPartBits = PPW - partBitsLeft; \
- inputBits = *srcTemp++; \
- bits |= BitRight (GetBitGroup (inputBits), \
- partBitsLeft) & PPWMSK; \
- NextSomeBits (inputBits, nextPartBits); \
- partBitsLeft = MFB_PPW - nextPartBits; \
- }
-
-/*
- * WriteBitGroup takes the destination address, a pixel
- * value (which must be 8 bits duplicated 4 time with PFILL)
- * and the PPW bits to write, which must be in the low order
- * bits of the register (probably from GetBitGroup) and writes
- * the appropriate locations in memory with the pixel value. This
- * is a copy-mode only operation.
- */
-
-#define RRopBitGroup(dst,bits) \
- { \
- *(dst) = RRopPixels(*(dst),bits); \
- }
-
-#define MaskRRopBitGroup(dst,bits,mask) \
- { \
- *(dst) = MaskRRopPixels(*(dst),bits,mask); \
- }
-#endif /* PSZ == 8 */
-
-#if !defined(AVOID_MEMORY_READ) && PSZ == 8
-
-#define WriteBitGroup(dst,pixel,bits) \
- { \
- register PixelGroup _maskTmp = cfb8PixelMasks[(bits)]; \
- *(dst) = (*(dst) & ~_maskTmp) | ((pixel) & _maskTmp); \
- }
-
-#define SwitchBitGroup(dst,pixel,bits) \
- { \
- register PixelGroup _maskTmp = cfb8PixelMasks[(bits)]; \
- register PixelGroup _pixTmp = ((pixel) & _maskTmp); \
- _maskTmp = ~_maskTmp; \
- SwitchBitsLoop (*(dst) = (*(dst) & _maskTmp) | _pixTmp;) \
- }
-
-#else /* AVOID_MEMORY_READ */
-
-#if PGSZ == 32
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define SinglePixel0 3
-#define SinglePixel1 2
-#define SinglePixel2 1
-#define SinglePixel3 0
-#define SinglePixel4 7
-#define SinglePixel5 6
-#define SinglePixel6 5
-#define SinglePixel7 4
-#define SinglePixel8 0xB
-#define SinglePixel9 0xA
-#define DoublePixel0 1
-#define DoublePixel1 0
-#define DoublePixel2 3
-#define DoublePixel3 2
-#define DoublePixel4 5
-#define DoublePixel5 4
-#else
-#define SinglePixel0 0
-#define SinglePixel1 1
-#define SinglePixel2 2
-#define SinglePixel3 3
-#define SinglePixel4 4
-#define SinglePixel5 5
-#define SinglePixel6 6
-#define SinglePixel7 7
-#define SinglePixel8 8
-#define SinglePixel9 9
-#define DoublePixel0 0
-#define DoublePixel1 1
-#define DoublePixel2 2
-#define DoublePixel3 3
-#define DoublePixel4 4
-#define DoublePixel5 5
-#endif
-#define QuadPixel0 0
-#define QuadPixel1 1
-#define QuadPixel2 2
-#else /* PGSZ == 64 */
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define SinglePixel0 7
-#define SinglePixel1 6
-#define SinglePixel2 5
-#define SinglePixel3 4
-#define SinglePixel4 3
-#define SinglePixel5 2
-#define SinglePixel6 1
-#define SinglePixel7 0
-#define DoublePixel0 3
-#define DoublePixel1 2
-#define DoublePixel2 1
-#define DoublePixel3 0
-#define QuadPixel0 1
-#define QuadPixel1 0
-#else
-#define SinglePixel0 0
-#define SinglePixel1 1
-#define SinglePixel2 2
-#define SinglePixel3 3
-#define SinglePixel4 4
-#define SinglePixel5 5
-#define SinglePixel6 6
-#define SinglePixel7 7
-#define DoublePixel0 0
-#define DoublePixel1 1
-#define DoublePixel2 2
-#define DoublePixel3 3
-#define QuadPixel0 0
-#define QuadPixel1 1
-#endif
-#define OctaPixel0 0
-#endif /* PGSZ == 64 */
-
-#if PSZ == 8
-
-#if PGSZ == 32
-#define WriteBitGroup(dst,pixel,bits) \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- break; \
- case 4: \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 13: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 14: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[0] = (pixel); \
- break; \
- }
-#else /* PGSZ == 64 */
-#define WriteBitGroup(dst,pixel,bits) \
- if ( bits == 0xff ) \
- ((PixelGroup *) (dst))[OctaPixel0] = (pixel); \
- else { \
- switch (bits & 0x0f) { \
- case 0: \
- break; \
- case 1: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- break; \
- case 4: \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 13: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 14: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[QuadPixel0] = (pixel); \
- break; \
- } \
- switch ((bits & 0xf0) >> 4) { \
- case 0: \
- break; \
- case 1: \
- ((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- break; \
- case 2: \
- ((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- break; \
- case 3: \
- ((CARD16 *) (dst))[DoublePixel2] = (pixel); \
- break; \
- case 4: \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 5: \
- ((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 6: \
- ((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 7: \
- ((CARD16 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 8: \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 9: \
- ((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 10: \
- ((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 11: \
- ((CARD16 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 12: \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- case 13: \
- ((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- case 14: \
- ((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[QuadPixel1] = (pixel); \
- break; \
- } \
- }
-#endif /* PGSZ == 64 */
-
-#if PGSZ == 32
-#define SwitchBitGroup(dst,pixel,bits) { \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel);) \
- break; \
- case 2: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel);) \
- break; \
- case 3: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel);) \
- break; \
- case 4: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 5: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 6: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 7: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 8: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 9: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 10: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 11: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 12: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- case 13: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- case 14: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- case 15: \
- SwitchBitsLoop (((CARD32 *) (dst))[0] = (pixel);) \
- break; \
- } \
-}
-#else /* PGSZ == 64 */
-#define SwitchBitGroup(dst,pixel,bits) { \
- if ( bits == 0xff ) \
- SwitchBitsLoop (((PixelGroup *) (dst))[OctaPixel0] = (pixel);) \
- else { \
- switch (bits & 0x0f) { \
- case 0: \
- break; \
- case 1: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel);) \
- break; \
- case 2: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel);) \
- break; \
- case 3: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel);)\
- break; \
- case 4: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 5: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 6: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 7: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 8: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 9: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 10: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 11: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 12: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel1] = (pixel);)\
- break; \
- case 13: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel);)\
- break; \
- case 14: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel);)\
- break; \
- case 15: \
- SwitchBitsLoop (((CARD32 *) (dst))[QuadPixel0] = (pixel);) \
- break; \
- } \
- switch ((bits & 0xf0) >> 4) { \
- case 0: \
- break; \
- case 1: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel4] = (pixel);) \
- break; \
- case 2: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel5] = (pixel);) \
- break; \
- case 3: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel2] = (pixel);)\
- break; \
- case 4: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel6] = (pixel);) \
- break; \
- case 5: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel);) \
- break; \
- case 6: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel);) \
- break; \
- case 7: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel);) \
- break; \
- case 8: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel7] = (pixel);) \
- break; \
- case 9: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel);) \
- break; \
- case 10: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel);) \
- break; \
- case 11: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel);) \
- break; \
- case 12: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel3] = (pixel);)\
- break; \
- case 13: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel);)\
- break; \
- case 14: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel);)\
- break; \
- case 15: \
- SwitchBitsLoop (((CARD32 *) (dst))[QuadPixel1] = (pixel);) \
- break; \
- } \
- } \
-}
-#endif /* PGSZ == 64 */
-#endif /* PSZ == 8 */
-
-#if PSZ == 16
-
-#if PGSZ == 32
-#define WriteBitGroup(dst,pixel,bits) \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- break; \
- case 4: \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 13: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 14: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- }
-#else /* PGSZ == 64 */
-#define WriteBitGroup(dst,pixel,bits) \
- if ( bits == 0xff ) { \
- ((PixelGroup *) (dst))[QuadPixel0] = (pixel); \
- ((PixelGroup *) (dst))[QuadPixel1] = (pixel); \
- } \
- else { \
- switch (bits & 0x0f) { \
- case 0: \
- break; \
- case 1: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- break; \
- case 4: \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 13: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 14: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- } \
- switch ((bits & 0xf0) >> 4) { \
- case 0: \
- break; \
- case 1: \
- ((CARD16 *) (dst))[SinglePixel4] = (pixel); \
- break; \
- case 2: \
- ((CARD16 *) (dst))[SinglePixel5] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[DoublePixel2] = (pixel); \
- break; \
- case 4: \
- ((CARD16 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 5: \
- ((CARD16 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 6: \
- ((CARD16 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 8: \
- ((CARD16 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 9: \
- ((CARD16 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 10: \
- ((CARD16 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- case 13: \
- ((CARD16 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- case 14: \
- ((CARD16 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- } \
- }
-#endif /* PGSZ */
-
-#if PGSZ == 32
-#define SwitchBitGroup(dst,pixel,bits) { \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel0] = (pixel);) \
- break; \
- case 2: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel1] = (pixel);) \
- break; \
- case 3: \
- SwitchBitsLoop (((CARD32 *) (dst))[DoublePixel0] = (pixel);) \
- break; \
- case 4: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 5: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 6: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 7: \
- SwitchBitsLoop (((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 8: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 9: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 10: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 11: \
- SwitchBitsLoop (((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 12: \
- SwitchBitsLoop (((CARD32 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- case 13: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- case 14: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- case 15: \
- SwitchBitsLoop (((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- } \
-}
-#else /* PGSZ == 64 */
-#define SwitchBitGroup(dst,pixel,bits) { \
- cfb cannot hack 64-bit SwitchBitGroup psz=PSZ
-#endif /* PGSZ */
-
-#endif /* PSZ == 16 */
-
-#if PSZ == 24
-/* 32 000011112222*/
-/* 24 000111222333*/
-/* 16 001122334455*/
-/* 8 0123456789AB*/
-#if PGSZ == 32
-#define WriteBitGroup(dst,pixel,bits) \
- { \
- register CARD32 reg_pixel = (pixel); \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- ((CARD16 *) (dst))[DoublePixel0] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel2] = ((reg_pixel>>16)&0xFF); \
- break; \
- case 2: \
- ((CARD8 *) (dst))[SinglePixel3] = reg_pixel&0xFF; \
- ((CARD16 *) (dst))[DoublePixel2] = (reg_pixel>>8)&0xFFFF; \
- break; \
- case 3: \
- ((CARD8 *) (dst))[SinglePixel3] = reg_pixel & 0xFF; \
- ((CARD16 *) (dst))[DoublePixel0] = reg_pixel; \
- ((CARD16 *) (dst))[DoublePixel2] = (reg_pixel>>8)&0xFFFF; \
- ((CARD8 *) (dst))[SinglePixel2] = (reg_pixel>>16&0xFF); \
- break; \
- case 4: \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel8] = (reg_pixel>>16)&0xFF; \
- break; \
- case 5: \
- ((CARD16 *) (dst))[DoublePixel0] = \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- reg_pixel >>= 16; \
- ((CARD8 *) (dst))[SinglePixel2] = \
- ((CARD8 *) (dst))[SinglePixel8] = reg_pixel&0xFF; \
- break; \
- case 6: \
- ((CARD8 *) (dst))[SinglePixel3] = reg_pixel; \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel2] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel8] = reg_pixel&0xFF; \
- break; \
- case 7: \
- ((CARD16 *) (dst))[DoublePixel0] = \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel3] = reg_pixel&0xFF; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel2] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel2] = \
- ((CARD8 *) (dst))[SinglePixel8] = reg_pixel&0xFF; \
- break; \
- case 8: \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel&0xFF; \
- ((CARD16 *) (dst))[DoublePixel5] = (reg_pixel>>8); \
- break; \
- case 9: \
- ((CARD16 *) (dst))[DoublePixel0] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel&0xFF; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel2] = reg_pixel&0xFF; \
- break; \
- case 10: \
- ((CARD8 *) (dst))[SinglePixel3] = \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel&0xFF; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel2] = \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- break; \
- case 11: \
- ((CARD8 *) (dst))[SinglePixel3] = \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel; \
- ((CARD16 *) (dst))[DoublePixel0] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel2] = \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel2] = reg_pixel; \
- break; \
- case 12: \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel8] = reg_pixel; \
- break; \
- case 13: \
- ((CARD16 *) (dst))[DoublePixel0] = \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel2] = \
- ((CARD8 *) (dst))[SinglePixel8] = reg_pixel; \
- break; \
- case 14: \
- ((CARD8 *) (dst))[SinglePixel3] = \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel; \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel2] = \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel8] = reg_pixel; \
- break; \
- case 15: \
- ((CARD16 *) (dst))[DoublePixel0] = \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel3] = \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel2] = \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel8] = \
- ((CARD8 *) (dst))[SinglePixel2] = reg_pixel; \
- break; \
- } \
- }
-#else /* PGSZ == 64 */
-#define WriteBitGroup(dst,pixel,bits) \
- if ( bits == 0xff ) { \
- ((PixelGroup *) (dst))[DoublePixel0] = (pixel); \
- ((PixelGroup *) (dst))[DoublePixel1] = (pixel); \
- ((PixelGroup *) (dst))[DoublePixel2] = (pixel); \
- ((PixelGroup *) (dst))[DoublePixel3] = (pixel); \
- } \
- else { \
- switch (bits & 0x0f) { \
- case 0: \
- break; \
- case 1: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 4: \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 13: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 14: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- } \
- switch ((bits & 0xf0) >> 4) { \
- case 0: \
- break; \
- case 1: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- break; \
- case 2: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- break; \
- case 4: \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 5: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 6: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 8: \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 9: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 10: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 13: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 14: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- } \
- }
-#endif /* PGSZ */
-
-#if PGSZ == 32
-#define SwitchBitGroup(dst,pixel,bits) { \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 2: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel2] = (pixel);) \
- break; \
- case 3: \
- SwitchBitsLoop (((CARD32 *) (dst))[QuadPixel0] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel2] = (pixel);) \
- break; \
- case 4: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel8] = (pixel);) \
- break; \
- case 5: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel8] = (pixel);) \
- break; \
- case 6: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel8] = (pixel);) \
- break; \
- case 7: \
- SwitchBitsLoop (((CARD32 *) (dst))[QuadPixel0] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel8] = (pixel);) \
- break; \
- case 8: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel9] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel5] = (pixel);) \
- break; \
- case 9: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel9] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel5] = (pixel);) \
- break; \
- case 10: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel9] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel5] = (pixel);) \
- break; \
- case 11: \
- SwitchBitsLoop (((CARD32 *) (dst))[QuadPixel0] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel);) \
- ((CARD8 *) (dst))[SinglePixel9] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel5] = (pixel);) \
- break; \
- case 12: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel2] = (pixel);) \
- break; \
- case 13: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel2] = (pixel);) \
- break; \
- case 14: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel1] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel2] = (pixel);) \
- break; \
- case 15: \
- SwitchBitsLoop (((CARD32 *) (dst))[QuadPixel0] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel1] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel2] = (pixel);) \
- break; \
- } \
-}
-#else /* PGSZ == 64 */
-#define SwitchBitGroup(dst,pixel,bits) { \
- cfb cannot hack 64-bit SwitchBitGroup psz=PSZ
-#endif /* PGSZ */
-
-#endif /* PSZ == 24 */
-
-#if PSZ == 32
-
-#if PGSZ == 32
-#define WriteBitGroup(dst,pixel,bits) \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 4: \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 13: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 14: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- }
-#else /* PGSZ == 64 */
-#define WriteBitGroup(dst,pixel,bits) \
- if ( bits == 0xff ) { \
- ((PixelGroup *) (dst))[DoublePixel0] = (pixel); \
- ((PixelGroup *) (dst))[DoublePixel1] = (pixel); \
- ((PixelGroup *) (dst))[DoublePixel2] = (pixel); \
- ((PixelGroup *) (dst))[DoublePixel3] = (pixel); \
- } \
- else { \
- switch (bits & 0x0f) { \
- case 0: \
- break; \
- case 1: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 4: \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 13: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 14: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- } \
- switch ((bits & 0xf0) >> 4) { \
- case 0: \
- break; \
- case 1: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- break; \
- case 2: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- break; \
- case 4: \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 5: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 6: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 8: \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 9: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 10: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 13: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 14: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- } \
- }
-#endif /* PGSZ */
-
-#if PGSZ == 32
-#define SwitchBitGroup(dst,pixel,bits) { \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel);) \
- break; \
- case 2: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel1] = (pixel);) \
- break; \
- case 3: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel);) \
- break; \
- case 4: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 5: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 6: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 7: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 8: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 9: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 10: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 11: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 12: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 13: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 14: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 15: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- } \
-}
-#else /* PGSZ == 64 */
-#define SwitchBitGroup(dst,pixel,bits) { \
- cfb cannot hack 64-bit SwitchBitGroup psz=PSZ
-#endif /* PGSZ */
-
-#endif /* PSZ == 32 */
-#endif /* AVOID_MEMORY_READ */
-
-extern PixelGroup cfb8BitLenMasks[PGSZ];
-
-extern int cfb8SetStipple (
- int /*alu*/,
- CfbBits /*fg*/,
- CfbBits /*planemask*/
-);
-
-extern int cfb8SetOpaqueStipple (
- int /*alu*/,
- CfbBits /*fg*/,
- CfbBits /*bg*/,
- CfbBits /*planemask*/
-);
-
-extern int cfb8ComputeClipMasks32 (
- BoxPtr /*pBox*/,
- int /*numRects*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- CARD32 * /*clips*/
-);
diff --git a/nx-X11/programs/Xserver/cfb/cfb8line.c b/nx-X11/programs/Xserver/cfb/cfb8line.c
deleted file mode 100644
index 0f27f1d47..000000000
--- a/nx-X11/programs/Xserver/cfb/cfb8line.c
+++ /dev/null
@@ -1,1504 +0,0 @@
-/*
- * $Xorg: cfb8line.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $
- *
-Copyright 1990, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- *
- * $XFree86: xc/programs/Xserver/cfb/cfb8line.c,v 3.18tsi Exp $
- * Jeff Anton'x fixes: cfb8line.c 97/02/07
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "cfbrrop.h"
-#include "miline.h"
-
-#ifdef PIXEL_ADDR
-
-#if defined(__GNUC__) && defined(mc68020)
-#define STUPID volatile
-#define REARRANGE
-#else
-#define STUPID
-#endif
-
-#ifdef __GNUC__
-/* lame compiler doesn't even look at 'register' attributes */
-#define I_H do{
-#define I_T }while(0);
-#define IMPORTANT_START I_H I_H I_H I_H I_H I_H I_H I_H I_H I_H
-#define IMPORTANT_END I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T
-#else
-#define IMPORTANT_START
-#define IMPORTANT_END
-#endif
-
-#define isClipped(c,ul,lr) ((((c) - (ul)) | ((lr) - (c))) & ClipMask)
-
-#ifdef POLYSEGMENT
-
-# if (defined(sun) || defined(__bsdi__)) && \
- (defined(sparc) || defined(__sparc__))
-# define WIDTH_FAST 1152
-# endif
-
-# ifdef ultrix
-# define WIDTH_FAST 1024
-# endif
-
-# ifdef Mips
-# define WIDTH_FAST 4096
-# endif
-# ifdef WIDTH_FAST
-# if WIDTH_FAST == 1024
-# define FAST_MUL(y) ((y) << 10)
-# endif
-
-# if WIDTH_FAST == 1152
-# define FAST_MUL(y) (((y) << 10) + ((y) << 7))
-# endif
-
-# if WIDTH_FAST == 1280
-# define FAST_MUL(y) (((y) << 10) + ((y) << 8))
-# endif
-
-# if WIDTH_FAST == 2048
-# define FAST_MUL(y) ((y) << 11)
-# endif
-
-# if WIDTH_FAST == 4096
-# define FAST_MUL(y) ((y) << 12)
-# endif
-# endif
-
-# if defined(WIDTH_SHIFT)
-# ifdef FAST_MUL
-# define FUNC_NAME(e) RROP_NAME(RROP_NAME_CAT(e,Shift))
-# if RROP == GXcopy
-# define INCLUDE_OTHERS
-# define SERIOUS_UNROLLING
-# endif
-# define INCLUDE_DRAW
-# define NWIDTH(nwidth) WIDTH_FAST
-# define WIDTH_MUL(y,w) FAST_MUL(y)
-# endif
-# else
-# define FUNC_NAME(e) RROP_NAME(e)
-# define WIDTH_MUL(y,w) ((y) * (w))
-# define NWIDTH(nwidth) (nwidth)
-# define INCLUDE_DRAW
-# if !defined (FAST_MUL) && RROP == GXcopy
-# define INCLUDE_OTHERS
-# define SERIOUS_UNROLLING
-# endif
-# endif
-#else
-
-# define INCLUDE_DRAW
-# define WIDTH_MUL(y,w) ((y) * (w))
-# define NWIDTH(nwidth) nwidth
-# ifdef PREVIOUS
-# define FUNC_NAME(e) RROP_NAME(RROP_NAME_CAT(e,Previous))
-# else
-# define FUNC_NAME(e) RROP_NAME(e)
-# if RROP == GXcopy
-# define INCLUDE_OTHERS
-# ifdef PLENTIFUL_REGISTERS
-# define SAVE_X2Y2
-# endif
-# define ORIGIN
-# define SERIOUS_UNROLLING
-# else
-# define EITHER_MODE
-# endif
-# endif
-#endif
-
-#if PSZ == 24
-#define PXL2ADR(x) ((x)*3 >> 2)
-
-#if RROP == GXcopy
-#define body_rop \
- addrp = (PixelType *)((unsigned long)addrb & ~0x03); \
- switch((unsigned long)addrb & 3){ \
- case 0: \
- *addrp = (*addrp & 0xFF000000)|(piQxelXor[0] & 0xFFFFFF); \
- break; \
- case 1: \
- *addrp = (*addrp & 0xFF)|(piQxelXor[2] & 0xFFFFFF00); \
- break; \
- case 3: \
- *addrp = (*addrp & 0xFFFFFF)|(piQxelXor[0] & 0xFF000000); \
- *(addrp+1)=(*(addrp+1) & 0xFFFF0000)|(piQxelXor[1] & 0xFFFF); \
- break; \
- case 2: \
- *addrp = (*addrp & 0xFFFF)|(piQxelXor[1] & 0xFFFF0000); \
- *(addrp+1)=(*(addrp+1) & 0xFFFFFF00)|(piQxelXor[2] & 0xFF); \
- break; \
- }
-#endif
-#if RROP == GXxor
-#define body_rop \
- addrp = (PixelType *)((unsigned long)addrb & ~0x03); \
- switch((unsigned long)addrb & 3){ \
- case 0: \
- *addrp ^= piQxelXor[0] & 0xFFFFFF; \
- break; \
- case 1: \
- *addrp ^= piQxelXor[2] & 0xFFFFFF00; \
- break; \
- case 3: \
- *addrp ^= piQxelXor[0] & 0xFF000000; \
- *(addrp+1) ^= piQxelXor[1] & 0xFFFF; \
- break; \
- case 2: \
- *addrp ^= piQxelXor[1] & 0xFFFF0000; \
- *(addrp+1) ^= piQxelXor[2] & 0xFF; \
- break; \
- }
-#endif
-#if RROP == GXand
-#define body_rop \
- addrp = (PixelType *)((unsigned long)addrb & ~0x03); \
- switch((unsigned long)addrb & 3){ \
- case 0: \
- *addrp &= piQxelAnd[0] | 0xFF000000; \
- break; \
- case 1: \
- *addrp &= piQxelAnd[2] | 0xFF; \
- break; \
- case 3: \
- *addrp &= 0xFFFFFF | piQxelAnd[0]; \
- *(addrp+1) &= 0xFFFF0000 | piQxelAnd[1]; \
- break; \
- case 2: \
- *addrp &= 0xFFFF | piQxelAnd[1]; \
- *(addrp+1) &= 0xFFFFFF00 | piQxelAnd[2]; \
- break; \
- }
-#endif
-#if RROP == GXor
-#define body_rop \
- addrp = (PixelType *)((unsigned long)addrb & ~0x03); \
- switch((unsigned long)addrb & 3){ \
- case 0: \
- *addrp |= piQxelOr[0] & 0xFFFFFF; \
- break; \
- case 1: \
- *addrp |= piQxelOr[2] & 0xFFFFFF00; \
- break; \
- case 3: \
- *addrp |= piQxelOr[0] & 0xFF000000; \
- *(addrp+1) |= piQxelOr[1] & 0xFFFF; \
- break; \
- case 2: \
- *addrp |= piQxelOr[1] & 0xFFFF0000; \
- *(addrp+1) |= piQxelOr[2] & 0xFF; \
- break; \
- }
-#endif
-#if RROP == GXset
-#define body_rop \
- addrp = (PixelType *)((unsigned long)addrb & ~0x03); \
- switch((unsigned long)addrb & 3){ \
- case 0: \
- *addrp = (*addrp & (piQxelAnd[0]|0xFF000000)) \
- ^ (piQxelXor[0] & 0xFFFFFF); \
- break; \
- case 1: \
- *addrp = (*addrp & (piQxelAnd[2]|0xFF)) \
- ^ (piQxelXor[2] & 0xFFFFFF00); \
- break; \
- case 3: \
- *addrp = (*addrp & (piQxelAnd[0]|0xFFFFFF)) \
- ^ (piQxelXor[0] & 0xFF000000); \
- *(addrp+1) = (*(addrp+1) & (piQxelAnd[1]|0xFFFF0000)) \
- ^ (piQxelXor[1] & 0xFFFF); \
- break; \
- case 2: \
- *addrp = (*addrp & (piQxelAnd[1]|0xFFFF)) \
- ^ (piQxelXor[1] & 0xFFFF0000); \
- *(addrp+1) = (*(addrp+1) & (piQxelAnd[2]|0xFFFFFF00)) \
- ^ (piQxelXor[2] & 0xFF); \
- break; \
- }
-#endif
-#endif /* PSZ == 24 */
-
-#define BUGFIX_clip
-
-#ifdef INCLUDE_DRAW
-
-int
-#ifdef POLYSEGMENT
-FUNC_NAME(cfb8SegmentSS1Rect) (pDrawable, pGC, nseg, pSegInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nseg;
- xSegment *pSegInit;
-#else
-FUNC_NAME(cfb8LineSS1Rect) (pDrawable, pGC, mode, npt, pptInit, pptInitOrig,
- x1p,y1p,x2p,y2p)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit, pptInitOrig;
- int *x1p, *y1p, *x2p, *y2p;
-#endif /* POLYSEGMENT */
-{
- register long e;
- register int y1_or_e1;
- register PixelType *addrp;
- register int stepmajor;
- register int stepminor;
-#ifndef REARRANGE
- register long e3;
-#endif
-#ifdef mc68000
- register short x1_or_len;
-#else
- register int x1_or_len;
-#endif
- RROP_DECLARE
-
-#ifdef SAVE_X2Y2
-# define c2 y2
-#else
- register int c2;
-#endif
-#if !defined(ORIGIN) && !defined(POLYSEGMENT)
- register int _x1 = 0, _y1 = 0, _x2 = 0, _y2 = 0;
- int extents_x1, extents_y1, extents_x2, extents_y2;
-#endif /* !ORIGIN */
-#ifndef PREVIOUS
- register int upperleft, lowerright;
- CARD32 ClipMask = 0x80008000;
-#endif /* !PREVIOUS */
-#ifdef POLYSEGMENT
- register int capStyle;
-#endif /* POLYSEGMENT */
-#ifdef SAVE_X2Y2
- register int x2, y2;
-# define X1 x1_or_len
-# define Y1 y1_or_e1
-# define X2 x2
-# define Y2 y2
-#else
-# ifdef POLYSEGMENT
-# define X1 x1_or_len
-# define Y1 y1_or_e1
-# else
-# define X1 intToX(y1_or_e1)
-# define Y1 intToY(y1_or_e1)
-# endif /* POLYSEGMENT */
-# define X2 intToX(c2)
-# define Y2 intToY(c2)
-#endif /* SAVE_X2Y2 */
- PixelType *addr;
- int nwidth;
- cfbPrivGCPtr devPriv;
- BoxPtr extents;
- int *ppt;
-#if PSZ == 24
- int xBase; /* x of addr */
- int xOffset; /* x of addrp */
- PixelType *addrLineEnd;
- char *addrb;
- int stepmajor3, stepminor3, majordx, minordx;
-#endif
-#ifndef POLYSEGMENT
-#ifndef ORIGIN
-#ifdef BUGFIX_clip
- int ex_x1, ex_y1, ex_x2, ex_y2;
-#endif
-#endif
-#endif
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
-
- devPriv = cfbGetGCPrivate(pGC);
- cfbGetPixelWidthAndPointer (pDrawable, nwidth, addr);
-#ifndef REARRANGE
- RROP_FETCH_GCPRIV(devPriv);
-#endif
- extents = &pGC->pCompositeClip->extents;
-#ifndef PREVIOUS
- c2 = *((int *) &pDrawable->x);
- c2 -= (c2 & 0x8000) << 1;
- upperleft = *((int *) &extents->x1) - c2;
- lowerright = *((int *) &extents->x2) - c2 - 0x00010001;
-#endif /* !PREVIOUS */
-#ifndef POLYSEGMENT
-#ifndef ORIGIN
-#ifdef BUGFIX_clip
- ex_x1 = extents->x1 - pDrawable->x;
- ex_y1 = extents->y1 - pDrawable->y;
- ex_x2 = extents->x2 - pDrawable->x;
- ex_y2 = extents->y2 - pDrawable->y;
-#endif
-#endif
-#endif
-#if PSZ == 24
- xBase = pDrawable->x;
- addr += WIDTH_MUL(pDrawable->y,nwidth);
-#else
- addr = addr + WIDTH_MUL(pDrawable->y,nwidth) + pDrawable->x;
-#endif
-#ifdef POLYSEGMENT
- capStyle = pGC->capStyle - CapNotLast;
- ppt = (int *) pSegInit;
- while (nseg--)
-#else /* POLYSEGMENT */
-#ifdef EITHER_MODE
- mode -= CoordModePrevious;
- if (!mode)
-#endif /* EITHER_MODE */
-#ifndef ORIGIN
- { /* CoordModePrevious */
- ppt = (int *)pptInit + 1;
- _x1 = *x1p;
- _y1 = *y1p;
- extents_x1 = extents->x1 - pDrawable->x;
- extents_x2 = extents->x2 - pDrawable->x;
- extents_y1 = extents->y1 - pDrawable->y;
- extents_y2 = extents->y2 - pDrawable->y;
- if (_x1 < extents_x1 || _x1 >= extents_x2 ||
- _y1 < extents_y1 || _y1 >= extents_y2)
- {
- c2 = *ppt++;
- intToCoord(c2, _x2, _y2);
- *x2p = _x1 + _x2;
- *y2p = _y1 + _y2;
- return 1;
- }
-#if PSZ == 24
- addrLineEnd = addr + WIDTH_MUL(_y1, nwidth);
- xOffset = xBase + _x1;
- addrb = (char *)addrLineEnd + xOffset * 3;
- addrp = (PixelType *)((unsigned long)addrb & ~0x03);
-#else
- addrp = addr + WIDTH_MUL(_y1, nwidth) + _x1;
-#endif
- _x2 = _x1;
- _y2 = _y1;
- }
-#endif /* !ORIGIN */
-#ifdef EITHER_MODE
- else
-#endif /* EITHER_MODE */
-#ifndef PREVIOUS
- {
- ppt = (int *) pptInit;
- c2 = *ppt++;
- if (isClipped (c2, upperleft, lowerright))
- {
- return 1;
- }
-#ifdef SAVE_X2Y2
- intToCoord(c2,x2,y2);
-#endif
-#if PSZ == 24
- addrLineEnd = addr + WIDTH_MUL(Y2, nwidth);
- xOffset = xBase + X2;
- addrb = (char *)addrLineEnd + xOffset * 3;
- addrp = (PixelType *)((unsigned long)addrb & ~0x03);
-#else
- addrp = addr + WIDTH_MUL(Y2, nwidth) + X2;
-#endif
- }
-#endif /* !PREVIOUS */
- while (--npt)
-#endif /* POLYSEGMENT */
- {
-#ifdef POLYSEGMENT
- y1_or_e1 = ppt[0];
- c2 = ppt[1];
- ppt += 2;
- if (isClipped(y1_or_e1,upperleft,lowerright)|isClipped(c2,upperleft,lowerright))
- break;
- intToCoord(y1_or_e1,x1_or_len,y1_or_e1);
- /* compute now to avoid needing x1, y1 later */
-#if PSZ == 24
- addrLineEnd = addr + WIDTH_MUL(y1_or_e1, nwidth);
- xOffset = xBase + x1_or_len;
- addrb = (char *)addrLineEnd + xOffset * 3;
- addrp = (PixelType *)((unsigned long)addrb & ~0x03);
-#else
- addrp = addr + WIDTH_MUL(y1_or_e1, nwidth) + x1_or_len;
-#endif
-#else /* !POLYSEGMENT */
-#ifdef EITHER_MODE
- if (!mode)
-#endif /* EITHER_MODE */
-#ifndef ORIGIN
- {
- /* CoordModePrevious */
- _x1 = _x2;
- _y1 = _y2;
- c2 = *ppt++;
- intToCoord(c2, _x2, _y2);
- _x2 = _x1 + _x2;
- _y2 = _y1 + _y2;
-
-#ifdef BUGFIX_clip
- if (_x2 < ex_x1 || _x2 >= ex_x2 ||
- _y2 < ex_y1 || _y2 >= ex_y2)
-#else
- if (_x2 < extents_x1 || _x2 >= extents_x2 ||
- _y2 < extents_y1 || _y2 >= extents_y2)
-#endif
- {
- break;
- }
- CalcLineDeltas(_x1, _y1, _x2, _y2, x1_or_len, y1_or_e1,
- stepmajor, stepminor, 1, NWIDTH(nwidth), octant);
- }
-#endif /* !ORIGIN */
-#ifdef EITHER_MODE
- else
-#endif /* EITHER_MODE */
-#ifndef PREVIOUS
- {
-#ifndef SAVE_X2Y2
- y1_or_e1 = c2;
-#else
- y1_or_e1 = y2;
- x1_or_len = x2;
-#endif /* SAVE_X2Y2 */
- c2 = *ppt++;
-
- if (isClipped (c2, upperleft, lowerright))
- break;
-#ifdef SAVE_X2Y2
- intToCoord(c2,x2,y2);
-#endif
- CalcLineDeltas(X1, Y1, X2, Y2, x1_or_len, y1_or_e1,
- stepmajor, stepminor, 1, NWIDTH(nwidth), octant);
- }
-#endif /* !PREVIOUS */
-#endif /* POLYSEGMENT */
-
-#ifdef POLYSEGMENT
- CalcLineDeltas(X1, Y1, X2, Y2, x1_or_len, y1_or_e1,
- stepmajor, stepminor, 1, NWIDTH(nwidth), octant);
- /*
- * although the horizontal code works for polyline, it
- * slows down 10 pixel lines by 15%. Thus, this
- * code is optimized for horizontal segments and
- * random orientation lines, which seems like a reasonable
- * assumption
- */
- if (y1_or_e1 != 0)
- {
-#endif /* POLYSEGMENT */
- if (x1_or_len < y1_or_e1)
- {
-#ifdef REARRANGE
- register int e3;
-#endif
-
- e3 = x1_or_len;
- x1_or_len = y1_or_e1;
- y1_or_e1 = e3;
-
- e3 = stepminor;
- stepminor = stepmajor;
- stepmajor = e3;
- SetYMajorOctant(octant);
- }
-
- e = -x1_or_len;
-#ifdef POLYSEGMENT
- if (!capStyle)
- x1_or_len--;
-#endif
-
- {
-#ifdef REARRANGE
- register int e3;
- RROP_DECLARE
- RROP_FETCH_GCPRIV(devPriv);
-#endif
-
- y1_or_e1 = y1_or_e1 << 1;
- e3 = e << 1;
-
- FIXUP_ERROR(e, octant, bias);
-
-#if PSZ == 24
- if (stepmajor == 1 || stepmajor == -1){
- stepmajor3 = stepmajor * 3;
- stepminor3 = stepminor * sizeof (CfbBits);
- majordx = stepmajor; minordx = 0;
- } else {
- stepmajor3 = stepmajor * sizeof (CfbBits);
- stepminor3 = stepminor * 3;
- majordx = 0; minordx = stepminor;
- }
-#endif
-
-#if PSZ == 24
-#define body {\
- body_rop \
- addrb += stepmajor3; \
- xOffset += majordx; \
- e += y1_or_e1; \
- if (e >= 0){ \
- addrb += stepminor3; \
- xOffset += minordx; \
- e += e3; \
- } \
- }
-#else /* PSZ == 24 */
-
-#define body {\
- RROP_SOLID(addrp); \
- addrp += stepmajor; \
- e += y1_or_e1; \
- if (e >= 0) \
- { \
- addrp += stepminor; \
- e += e3; \
- } \
- }
-#endif /* PSZ == 24 */
-
-#ifdef LARGE_INSTRUCTION_CACHE
-
-# ifdef SERIOUS_UNROLLING
-# define UNROLL 16
-# else
-# define UNROLL 4
-# endif
-#define CASE(n) case -n: body
-
- while ((x1_or_len -= UNROLL) >= 0)
- {
- body body body body
-# if UNROLL >= 8
- body body body body
-# endif
-# if UNROLL >= 12
- body body body body
-# endif
-# if UNROLL >= 16
- body body body body
-# endif
- }
- switch (x1_or_len)
- {
- CASE(1) CASE(2) CASE(3)
-# if UNROLL >= 8
- CASE(4) CASE(5) CASE(6) CASE(7)
-# endif
-# if UNROLL >= 12
- CASE(8) CASE(9) CASE(10) CASE(11)
-# endif
-# if UNROLL >= 16
- CASE(12) CASE(13) CASE(14) CASE(15)
-# endif
- }
-#else /* !LARGE_INSTRUCTION_CACHE */
-
- IMPORTANT_START
- IMPORTANT_START
-
- if (x1_or_len & 1)
- body
- x1_or_len >>= 1;
- while (x1_or_len--) {
- body body
- }
-
- IMPORTANT_END
- IMPORTANT_END
-#endif /* LARGE_INSTRUCTION_CACHE */
-
-#ifdef POLYSEGMENT
-#if PSZ == 24
- body_rop
-#else
- RROP_SOLID(addrp);
-#endif
-#endif
-#if PSZ == 24
- addrp = (PixelType *)((unsigned long)addrb & ~0x03);
-#endif
- }
-#undef body
-#ifdef POLYSEGMENT
- }
- else /* Polysegment horizontal line optimization */
- {
-# ifdef REARRANGE
- register int e3;
- RROP_DECLARE
- RROP_FETCH_GCPRIV(devPriv);
-# endif /* REARRANGE */
- if (stepmajor < 0)
- {
-#if PSZ == 24
- xOffset -= x1_or_len;
- addrp = addrLineEnd + PXL2ADR(xOffset);
-#else
- addrp -= x1_or_len;
-#endif
- if (capStyle)
- x1_or_len++;
- else
-#if PSZ == 24
- xOffset++;
- addrp = addrLineEnd + PXL2ADR(xOffset);
-#else
- addrp++;
-#endif
- }
- else
- {
-#if PSZ == 24
- addrp = addrLineEnd + PXL2ADR(xOffset);
-#endif
- if (capStyle)
- x1_or_len++;
- }
-# if PSZ == 24
- y1_or_e1 = xOffset & 3;
-# else
-# if PGSZ == 64 /* PIM value from <cfbmskbits.h> is not it! (for 16/32 PSZ)*/
- y1_or_e1 = ((long) addrp) & 0x7;
- addrp = (PixelType *) (((unsigned char *) addrp) - y1_or_e1);
-# else
- y1_or_e1 = ((long) addrp) & PIM;
- addrp = (PixelType *) (((unsigned char *) addrp) - y1_or_e1);
-# endif
-#if PGSZ == 32
-# if PWSH != 2
- y1_or_e1 >>= (2 - PWSH);
-# endif
-#else /* PGSZ == 64 */
-# if PWSH != 3
- y1_or_e1 >>= (3 - PWSH);
-# endif
-#endif /* PGSZ */
-# endif /* PSZ == 24 */
-#if PSZ == 24
- {
-#if RROP == GXcopy
- register int nlmiddle;
- int leftIndex = xOffset & 3;
- int rightIndex = (xOffset + x1_or_len) & 3;
-#else
- register int pidx;
-#endif
-
-#if RROP == GXcopy
- nlmiddle = x1_or_len;
- if(leftIndex){
- nlmiddle -= (4 - leftIndex);
- }
- if(rightIndex){
- nlmiddle -= rightIndex;
- }
-
- nlmiddle >>= 2;
- switch(leftIndex+x1_or_len){
- case 4:
- switch(leftIndex){
- case 0:
- *addrp++ = piQxelXor[0];
- *addrp++ = piQxelXor[1];
- *addrp = piQxelXor[2];
- break;
- case 1:
- *addrp = ((*addrp) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- addrp++;
- *addrp = piQxelXor[1];
- addrp++;
- *addrp = piQxelXor[2];
- break;
- case 2:
- *addrp = ((*addrp) & 0xFFFF) | (piQxelXor[1] & 0xFFFF0000);
- addrp++;
- *addrp = piQxelXor[2];
- break;
- case 3:
- *addrp = ((*addrp) & 0xFF) | (piQxelXor[2] & 0xFFFFFF00);
- break;
- }
- break;
- case 3:
- switch(leftIndex){
- case 0:
- *addrp++ = piQxelXor[0];
- *addrp++ = piQxelXor[1];
- *addrp = ((*addrp) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- break;
- case 1:
- *addrp = ((*addrp) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- addrp++;
- *addrp = piQxelXor[1];
- addrp++;
- *addrp = ((*addrp) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- break;
- case 2:
- *addrp = ((*addrp) & 0xFFFF) | (piQxelXor[1] & 0xFFFF0000);
- addrp++;
- *addrp = ((*addrp) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- break;
- }
- break;
- case 2:
- switch(leftIndex){
-/*
- case 2:
- *addrp = ((*addrp) & 0xFFFF) | (piQxelXor[1] & 0xFFFF0000);
- addrp++;
- *addrp = ((*addrp) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- break;
-*/
- case 1:
- *addrp = ((*addrp) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- addrp++;
- *addrp = ((*addrp) & 0xFFFF0000) | (piQxelXor[1] & 0xFFFF);
- break;
- case 0:
- *addrp++ = piQxelXor[0];
- *addrp = ((*addrp) & 0xFFFF0000) | (piQxelXor[1] & 0xFFFF);
- break;
- }
- break;
- case 1: /*only if leftIndex = 0 and w = 1*/
- if(x1_or_len){
- *addrp = ((*addrp) & 0xFF000000) | (piQxelXor[0] & 0xFFFFFF);
- }
-/*
- else{
- *addrp = ((*addrp) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- addrp++;
- *addrp = ((*addrp) & 0xFFFF0000) | (piQxelXor[1] & 0xFFFF);
- }
-*/
- break;
- case 0: /*never*/
- break;
- default:
- {
-/*
- maskbits(y1_or_e1, x1_or_len, e, e3, x1_or_len)
-*/
- switch(leftIndex){
- case 0:
- break;
- case 1:
- *addrp = ((*addrp) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- addrp++;
- *addrp = piQxelXor[1];
- addrp++;
- *addrp = piQxelXor[2];
- addrp++;
- break;
- case 2:
- *addrp = ((*addrp) & 0xFFFF) | (piQxelXor[1] & 0xFFFF0000);
- addrp++;
- *addrp = piQxelXor[2];
- addrp++;
- break;
- case 3:
- *addrp = ((*addrp) & 0xFF) | (piQxelXor[2] & 0xFFFFFF00);
- addrp++;
- break;
- }
- while(nlmiddle--){
- *addrp++ = piQxelXor[0];
- *addrp++ = piQxelXor[1];
- *addrp++ = piQxelXor[2];
- }
- switch(rightIndex++){
- case 0:
- break;
- case 1:
- *addrp = ((*addrp) & 0xFF000000) | (piQxelXor[0] & 0xFFFFFF);
- break;
- case 2:
- *addrp++ = piQxelXor[0];
- *addrp = ((*addrp) & 0xFFFF0000) | (piQxelXor[1] & 0xFFFF);
- break;
- case 3:
- *addrp++ = piQxelXor[0];
- *addrp++ = piQxelXor[1];
- *addrp = ((*addrp) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- break;
- }
-/*
- if (e3){
- e3 &= 0xFFFFFF;
- switch(rightIndex&3){
- case 0:
- *addrp = ((*addrp) & (0xFF000000 | ~e3))
- | (piQxelXor[0] & 0xFFFFFF & e3);
- break;
- case 1:
- *addrp = ((*addrp) & (0xFFFFFF | ~(e3<<24)))
- + (piQxelXor[0] & 0xFF000000 & (e3<<24));
- addrp++;
- *addrp = ((*addrp) & (0xFFFF0000|~(e3 >> 8)))
- | (piQxelXor[1] & 0xFFFF & (e3 >> 8));
- break;
- case 2:
- *addrp = ((*addrp) & (0xFFFF|~(e3 << 16)))
- | (piQxelXor[1] & 0xFFFF0000 & (e3 << 16));
- addrp++;
- *addrp = ((*addrp) & (0xFFFFFF00|~(e3>>16)))
- | (piQxelXor[2] & 0xFF & (e3 >> 16));
- break;
- case 3:
- *addrp = ((*addrp) & (0xFF|~(e3<<8)))
- | (piQxelXor[2] & 0xFFFFFF00 & (e3<<8));
- addrp++;
- break;
- }
- }
-*/
- }
- }
-#else /* GXcopy */
- addrp = (PixelType *)((char *)addrLineEnd + ((xOffset * 3) & ~0x03));
- if (x1_or_len <= 1){
- if (x1_or_len)
- RROP_SOLID24(addrp, xOffset);
- } else {
- maskbits(xOffset, x1_or_len, e, e3, x1_or_len);
- pidx = xOffset & 3;
- if (e){
- RROP_SOLID_MASK(addrp, e, pidx-1);
- addrp++;
- if (pidx == 3)
- pidx = 0;
- }
- while (--x1_or_len >= 0){
- RROP_SOLID(addrp, pidx);
- addrp++;
- if (++pidx == 3)
- pidx = 0;
- }
- if (e3)
- RROP_SOLID_MASK(addrp, e3, pidx);
- }
-#endif /* GXcopy */
- }
-#else /* PSZ == 24 */
- if (y1_or_e1 + x1_or_len <= PPW)
- {
- if (x1_or_len)
- {
- maskpartialbits(y1_or_e1, x1_or_len, e)
- RROP_SOLID_MASK((CfbBits *) addrp, e);
- }
- }
- else
- {
- maskbits(y1_or_e1, x1_or_len, e, e3, x1_or_len)
- if (e)
- {
- RROP_SOLID_MASK((CfbBits *) addrp, e);
- addrp += PPW;
- }
- RROP_SPAN(addrp, x1_or_len)
- if (e3)
- RROP_SOLID_MASK((CfbBits *) addrp, e3);
- }
-#endif /* PSZ == 24 */
- }
-#endif /* POLYSEGMENT */
- }
-#ifdef POLYSEGMENT
- if (nseg >= 0)
- return (xSegment *) ppt - pSegInit;
-#else
- if (npt)
- {
-#ifdef EITHER_MODE
- if (!mode)
-#endif /* EITHER_MODE */
-#ifndef ORIGIN
- {
- *x1p = _x1;
- *y1p = _y1;
- *x2p = _x2;
- *y2p = _y2;
- }
-#endif /* !ORIGIN */
- return ((DDXPointPtr) ppt - pptInit) - 1;
- }
-
-# ifndef ORIGIN
-# define C2 c2
-# else
-# define C2 ppt[-1]
-# endif
-#ifdef EITHER_MODE
- if (pGC->capStyle != CapNotLast &&
- ((mode ? (C2 != *((int *) pptInitOrig))
- : ((_x2 != pptInitOrig->x) ||
- (_y2 != pptInitOrig->y)))
- || (ppt == ((int *)pptInitOrig) + 2)))
-#endif /* EITHER_MODE */
-#ifdef PREVIOUS
- if (pGC->capStyle != CapNotLast &&
- ((_x2 != pptInitOrig->x) ||
- (_y2 != pptInitOrig->y) ||
- (ppt == ((int *)pptInitOrig) + 2)))
-#endif /* PREVIOUS */
-#ifdef ORIGIN
- if (pGC->capStyle != CapNotLast &&
- ((C2 != *((int *) pptInitOrig)) ||
- (ppt == ((int *)pptInitOrig) + 2)))
-#endif /* !PREVIOUS */
- {
-# ifdef REARRANGE
- RROP_DECLARE
-
- RROP_FETCH_GCPRIV(devPriv);
-# endif
-#if PSZ == 24
-#if RROP == GXcopy
- switch(xOffset & 3){
- case 0:
- *addrp = ((*addrp)&0xFF000000)|(piQxelXor[0] & 0xFFFFFF);
- break;
- case 3:
- *addrp = ((*addrp)&0xFF)|(piQxelXor[2] & 0xFFFFFF00);
- break;
- case 1:
- *addrp = ((*addrp)&0xFFFFFF)|(piQxelXor[0] & 0xFF000000);
- *(addrp+1) = ((*(addrp+1))&0xFFFF0000)|(piQxelXor[1] & 0xFFFF);
- break;
- case 2:
- *addrp = ((*addrp)&0xFFFF)|(piQxelXor[1] & 0xFFFF0000);
- *(addrp+1) = ((*(addrp+1))&0xFFFFFF00)|(piQxelXor[2] & 0xFF);
- break;
- }
-#endif
-#if RROP == GXxor
- switch(xOffset & 3){
- case 0:
- *addrp ^= (piQxelXor[0] & 0xFFFFFF);
- break;
- case 3:
- *addrp ^= (piQxelXor[2] & 0xFFFFFF00);
- break;
- case 1:
- *addrp ^= (piQxelXor[0] & 0xFF000000);
- *(addrp+1) ^= (piQxelXor[1] & 0xFFFF);
- break;
- case 2:
- *addrp ^= (piQxelXor[1] & 0xFFFF0000);
- *(addrp+1) ^= (piQxelXor[2] & 0xFF);
- break;
- }
-#endif
-#if RROP == GXand
- switch(xOffset & 3){
- case 0:
- *addrp &= (piQxelAnd[0] | 0xFF000000);
- break;
- case 3:
- *addrp &= (piQxelAnd[2] | 0xFF);
- break;
- case 1:
- *addrp &= (0xFFFFFF|piQxelAnd[0]);
- *(addrp+1) &= (0xFFFF0000|piQxelAnd[1]);
- break;
- case 2:
- *addrp &= (0xFFFF|piQxelAnd[1]);
- *(addrp+1) &= (0xFFFFFF00|piQxelAnd[2]);
- break;
- }
-#endif
-#if RROP == GXor
- switch(xOffset & 3){
- case 0:
- *addrp |= (piQxelOr[0] & 0xFFFFFF);
- break;
- case 3:
- *addrp |= (piQxelOr[2] & 0xFFFFFF00);
- break;
- case 1:
- *addrp |= (piQxelOr[0] & 0xFF000000);
- *(addrp+1) |= (piQxelOr[1] & 0xFFFF);
- break;
- case 2:
- *addrp |= (piQxelOr[1] & 0xFFFF0000);
- *(addrp+1) |= (piQxelOr[2] & 0xFF);
- break;
- }
-#endif
-#if RROP == GXset
- switch(xOffset & 3){
- case 0:
- *addrp = (((*addrp)&(piQxelAnd[0] |0xFF000000))^(piQxelXor[0] & 0xFFFFFF));
- break;
- case 3:
- *addrp = (((*addrp)&(piQxelAnd[2]|0xFF))^(piQxelXor[2] & 0xFFFFFF00));
- break;
- case 1:
- *addrp = (((*addrp)&(piQxelAnd[0]|0xFFFFFF))^(piQxelXor[0] & 0xFF000000));
- *(addrp+1) = (((*(addrp+1))&(piQxelAnd[1]|0xFFFF0000))^(piQxelXor[1] & 0xFFFF));
- break;
- case 2:
- *addrp = (((*addrp)&(piQxelAnd[1]|0xFFFF))^(piQxelXor[1] & 0xFFFF0000));
- *(addrp+1) = (((*(addrp+1))&(piQxelAnd[2]|0xFFFFFF00))^(piQxelXor[2] & 0xFF));
- break;
- }
-#endif
-#else
- RROP_SOLID (addrp);
-# endif
- }
-#endif /* !POLYSEGMENT */
- RROP_UNDECLARE;
- return -1;
-}
-
-#endif /* INCLUDE_DRAW */
-
-
-#ifdef INCLUDE_OTHERS
-
-#ifdef POLYSEGMENT
-
-void
-cfb8SegmentSS1Rect (pDrawable, pGC, nseg, pSegInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nseg;
- xSegment *pSegInit;
-{
- int (*func)(DrawablePtr, GCPtr, int, xSegment *);
- void (*clip)(DrawablePtr, GCPtr, int, int, int, int, BoxPtr, Bool);
- int drawn;
- cfbPrivGCPtr devPriv;
-
-#if defined(__arm32__) && PSZ != 8
- /* XXX -JJK */
- /* There is a painting bug when PSZ != 8; I need to track it down! */
- cfbSegmentSS(pDrawable, pGC, nseg, pSegInit);
- return;
-#endif
-
- devPriv = cfbGetGCPrivate(pGC);
-#ifdef NO_ONE_RECT
- if (REGION_NUM_RECTS(pGC->pCompositeClip) != 1)
- {
- cfbSegmentSS(pDrawable, pGC, nseg, pSegInit);
- return;
- }
-#endif
- switch (devPriv->rop)
- {
- case GXcopy:
- func = cfb8SegmentSS1RectCopy;
- clip = cfb8ClippedLineCopy;
-#ifdef FAST_MUL
- if (cfbGetPixelWidth (pDrawable) == WIDTH_FAST)
- func = cfb8SegmentSS1RectShiftCopy;
-#endif
- break;
- case GXxor:
- func = cfb8SegmentSS1RectXor;
- clip = cfb8ClippedLineXor;
- break;
- default:
- func = cfb8SegmentSS1RectGeneral;
- clip = cfb8ClippedLineGeneral;
- break;
- }
- while (nseg)
- {
- drawn = (*func) (pDrawable, pGC, nseg, pSegInit);
- if (drawn == -1)
- break;
- (*clip) (pDrawable, pGC,
- pSegInit[drawn-1].x1, pSegInit[drawn-1].y1,
- pSegInit[drawn-1].x2, pSegInit[drawn-1].y2,
- &pGC->pCompositeClip->extents,
- pGC->capStyle == CapNotLast);
- pSegInit += drawn;
- nseg -= drawn;
- }
-}
-
-#else /* POLYSEGMENT */
-
-void
-cfb8LineSS1Rect (pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode;
- int npt;
- DDXPointPtr pptInit;
-{
- int (*func)(DrawablePtr, GCPtr, int, int,
- DDXPointPtr, DDXPointPtr,
- int *, int *, int *, int *);
- void (*clip)(DrawablePtr, GCPtr, int, int, int, int, BoxPtr, Bool);
- int drawn;
- cfbPrivGCPtr devPriv;
- int x1, y1, x2, y2;
- DDXPointPtr pptInitOrig = pptInit;
-
-#if defined(__arm32__) && PSZ != 8
- /* XXX -JJK */
- /* There is a painting bug when PSZ != 8; I need to track it down! */
- cfbLineSS(pDrawable, pGC, mode, npt, pptInit);
- return;
-#endif
-
- devPriv = cfbGetGCPrivate(pGC);
-#ifdef NO_ONE_RECT
- if (REGION_NUM_RECTS(pGC->pCompositeClip) != 1)
- {
- cfbLineSS(pDrawable, pGC, mode, npt, pptInit);
- return;
- }
-#endif
- switch (devPriv->rop)
- {
- case GXcopy:
- func = cfb8LineSS1RectCopy;
- clip = cfb8ClippedLineCopy;
- if (mode == CoordModePrevious)
- func = cfb8LineSS1RectPreviousCopy;
- break;
- case GXxor:
- func = cfb8LineSS1RectXor;
- clip = cfb8ClippedLineXor;
- break;
- default:
- func = cfb8LineSS1RectGeneral;
- clip = cfb8ClippedLineGeneral;
- break;
- }
- if (mode == CoordModePrevious)
- {
- x1 = pptInit->x;
- y1 = pptInit->y;
- while (npt > 1)
- {
- drawn = (*func) (pDrawable, pGC, mode, npt, pptInit, pptInitOrig,
- &x1, &y1, &x2, &y2);
- if (drawn == -1)
- break;
- (*clip) (pDrawable, pGC, x1, y1, x2, y2,
- &pGC->pCompositeClip->extents,
- drawn != npt - 1 || pGC->capStyle == CapNotLast);
- pptInit += drawn;
- npt -= drawn;
- x1 = x2;
- y1 = y2;
- }
- }
- else
- {
- while (npt > 1)
- {
- drawn = (*func) (pDrawable, pGC, mode, npt, pptInit, pptInitOrig,
- &x1, &y1, &x2, &y2);
- if (drawn == -1)
- break;
- (*clip) (pDrawable, pGC,
- pptInit[drawn-1].x, pptInit[drawn-1].y,
- pptInit[drawn].x, pptInit[drawn].y,
- &pGC->pCompositeClip->extents,
- drawn != npt - 1 || pGC->capStyle == CapNotLast);
- pptInit += drawn;
- npt -= drawn;
- }
- }
-}
-
-#endif /* else POLYSEGMENT */
-#endif /* INCLUDE_OTHERS */
-
-#if !defined(POLYSEGMENT) && !defined (PREVIOUS)
-
-void
-RROP_NAME (cfb8ClippedLine) (pDrawable, pGC, x1, y1, x2, y2, boxp, shorten)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int x1, y1, x2, y2;
- BoxPtr boxp;
- Bool shorten;
-{
- int oc1, oc2;
- int e, e1, e3, len;
- int adx, ady;
-
- PixelType *addr;
- int nwidth;
- int stepx, stepy;
- int xorg, yorg;
- int new_x1, new_y1, new_x2, new_y2;
- Bool pt1_clipped, pt2_clipped;
- int changex, changey, result;
-#if PSZ == 24
- PixelType *addrLineEnd;
- char *addrb;
- int stepx3, stepy3;
-#endif
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
-
- cfbGetPixelWidthAndPointer(pDrawable, nwidth, addr);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- x1 += xorg;
- y1 += yorg;
- x2 += xorg;
- y2 += yorg;
- oc1 = 0;
- oc2 = 0;
- OUTCODES (oc1, x1, y1, boxp);
- OUTCODES (oc2, x2, y2, boxp);
-
- if (oc1 & oc2)
- return;
-
- CalcLineDeltas(x1, y1, x2, y2, adx, ady, stepx, stepy, 1, nwidth, octant);
-
- if (adx <= ady)
- {
- int t;
-
- t = adx;
- adx = ady;
- ady = t;
-
- t = stepx;
- stepx = stepy;
- stepy = t;
-
- SetYMajorOctant(octant);
- }
- e = - adx;
- e1 = ady << 1;
- e3 = - (adx << 1);
-
- FIXUP_ERROR(e, octant, bias);
-
- new_x1 = x1;
- new_y1 = y1;
- new_x2 = x2;
- new_y2 = y2;
- pt1_clipped = 0;
- pt2_clipped = 0;
-
- if (IsXMajorOctant(octant))
- {
- result = miZeroClipLine(boxp->x1, boxp->y1, boxp->x2 - 1, boxp->y2 - 1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady,
- &pt1_clipped, &pt2_clipped,
- octant, bias, oc1, oc2);
- if (result == -1)
- return;
-
- len = abs(new_x2 - new_x1) - 1; /* this routine needs the "-1" */
-
- /* if we've clipped the endpoint, always draw the full length
- * of the segment, because then the capstyle doesn't matter
- * if x2,y2 isn't clipped, use the capstyle
- * (shorten == TRUE <--> CapNotLast)
- */
- if (pt2_clipped || !shorten)
- len++;
-
- if (pt1_clipped)
- {
- /* must calculate new error terms */
- changex = abs(new_x1 - x1);
- changey = abs(new_y1 - y1);
- e = e + changey * e3 + changex * e1;
- }
- }
- else /* Y_AXIS */
- {
- result = miZeroClipLine(boxp->x1, boxp->y1, boxp->x2 - 1, boxp->y2 - 1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- ady, adx,
- &pt1_clipped, &pt2_clipped,
- octant, bias, oc1, oc2);
- if (result == -1)
- return;
-
- len = abs(new_y2 - new_y1) - 1; /* this routine needs the "-1" */
-
- /* if we've clipped the endpoint, always draw the full length
- * of the segment, because then the capstyle doesn't matter
- * if x2,y2 isn't clipped, use the capstyle
- * (shorten == TRUE <--> CapNotLast)
- */
- if (pt2_clipped || !shorten)
- len++;
-
- if (pt1_clipped)
- {
- /* must calculate new error terms */
- changex = abs(new_x1 - x1);
- changey = abs(new_y1 - y1);
- e = e + changex * e3 + changey * e1;
- }
- }
- x1 = new_x1;
- y1 = new_y1;
- {
- register PixelType *addrp;
- RROP_DECLARE
-
- RROP_FETCH_GC(pGC);
-
-#if PSZ == 24
- addrLineEnd = addr + (y1 * nwidth);
- addrb = (char *)addrLineEnd + x1 * 3;
- if (stepx == 1 || stepx == -1){
- stepx3 = stepx * 3;
- stepy3 = stepy * sizeof (CfbBits);
- } else {
- stepx3 = stepx * sizeof (CfbBits);
- stepy3 = stepy * 3;
- }
-#else
- addrp = addr + (y1 * nwidth) + x1;
-#endif
-
-#ifndef REARRANGE
- if (!ady)
- {
-#if PSZ == 24
-#define body {\
- body_rop \
- addrb += stepx3; \
- }
-#else
-#define body { RROP_SOLID(addrp); addrp += stepx; }
-#endif
- while (len >= PGSZB)
- {
- body body body body
-#if PGSZ == 64
- body body body body
-#endif
- len -= PGSZB;
- }
- switch (len)
- {
-#if PGSZ == 64
- case 7: body case 6: body case 5: body case 4: body
-#endif
- case 3: body case 2: body case 1: body
- }
-#undef body
- }
- else
-#endif /* !REARRANGE */
- {
-#if PSZ == 24
-#define body {\
- body_rop \
- addrb += stepx3; \
- e += e1; \
- if (e >= 0) \
- { \
- addrb += stepy3; \
- e += e3; \
- } \
- }
-#else
-#define body {\
- RROP_SOLID(addrp); \
- addrp += stepx; \
- e += e1; \
- if (e >= 0) \
- { \
- addrp += stepy; \
- e += e3; \
- } \
- }
-#endif
-
-#ifdef LARGE_INSTRUCTION_CACHE
- while ((len -= PGSZB) >= 0)
- {
- body body body body
-#if PGSZ == 64
- body body body body
-#endif
- }
- switch (len)
- {
- case -1: body case -2: body case -3: body
-#if PGSZ == 64
- case -4: body case -5: body case -6: body case -7: body
-#endif
- }
-#else /* !LARGE_INSTRUCTION_CACHE */
- IMPORTANT_START;
-
- while ((len -= 2) >= 0)
- {
- body body;
- }
- if (len & 1)
- body;
-
- IMPORTANT_END;
-#endif /* LARGE_INSTRUCTION_CACHE */
- }
-#if PSZ == 24
- body_rop
-#else
- RROP_SOLID(addrp);
-#endif
-#undef body
- RROP_UNDECLARE
- }
-}
-
-#endif /* !POLYSEGMENT && !PREVIOUS */
-#endif /* PIXEL_ADDR */
diff --git a/nx-X11/programs/Xserver/cfb/cfballpriv.c b/nx-X11/programs/Xserver/cfb/cfballpriv.c
deleted file mode 100644
index 68edb281b..000000000
--- a/nx-X11/programs/Xserver/cfb/cfballpriv.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * $Xorg: cfballpriv.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $
- *
-Copyright 1991, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-/* $XFree86: xc/programs/Xserver/cfb/cfballpriv.c,v 1.11 2001/01/30 22:06:15 tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "resource.h"
-#include "colormap.h"
-#include "colormapst.h"
-#include "cfb.h"
-#include "mi.h"
-#include "mistruct.h"
-#include "dix.h"
-#include "cfbmskbits.h"
-#include "mibstore.h"
-
-#if 1 || PSZ==8
-int cfbWindowPrivateIndex = -1;
-int cfbGCPrivateIndex = -1;
-#endif
-#ifdef CFB_NEED_SCREEN_PRIVATE
-int cfbScreenPrivateIndex = -1;
-static unsigned long cfbGeneration = 0;
-#endif
-
-
-Bool
-cfbAllocatePrivates(pScreen, window_index, gc_index)
- ScreenPtr pScreen;
- int *window_index, *gc_index;
-{
- if (!window_index || !gc_index ||
- (*window_index == -1 && *gc_index == -1))
- {
- if (!mfbAllocatePrivates(pScreen,
- &cfbWindowPrivateIndex, &cfbGCPrivateIndex))
- return FALSE;
- if (window_index)
- *window_index = cfbWindowPrivateIndex;
- if (gc_index)
- *gc_index = cfbGCPrivateIndex;
- }
- else
- {
- cfbWindowPrivateIndex = *window_index;
- cfbGCPrivateIndex = *gc_index;
- }
- if (!AllocateWindowPrivate(pScreen, cfbWindowPrivateIndex,
- sizeof(cfbPrivWin)) ||
- !AllocateGCPrivate(pScreen, cfbGCPrivateIndex, sizeof(cfbPrivGC)))
- return FALSE;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- if (cfbGeneration != serverGeneration)
- {
- cfbScreenPrivateIndex = AllocateScreenPrivateIndex ();
- cfbGeneration = serverGeneration;
- }
- if (cfbScreenPrivateIndex == -1)
- return FALSE;
-#endif
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbbitblt.c b/nx-X11/programs/Xserver/cfb/cfbbitblt.c
deleted file mode 100644
index a9dd438fe..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbbitblt.c
+++ /dev/null
@@ -1,1454 +0,0 @@
-/*
- * cfb copy area
- */
-
-/* $XFree86: xc/programs/Xserver/cfb/cfbbitblt.c,v 1.19tsi Exp $ */
-
-/*
-
-Copyright 1989, 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.
-
-Author: Keith Packard
-
-*/
-/* $Xorg: cfbbitblt.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "mi.h"
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "cfb8bit.h"
-#include "fastblt.h"
-#define MFB_CONSTS_ONLY
-#include "maskbits.h"
-
-#if PSZ == 8
-#define cfbCopyPlane1toN cfbCopyPlane1to8
-#define cfbCopyPlaneNto1 cfbCopyPlane8to1
-#else
-static unsigned int FgPixel, BgPixel;
-# if PSZ == 16
-#define cfbCopyPlane1toN cfbCopyPlane1to16
-#define cfbCopyPlaneNto1 cfbCopyPlane16to1
-# endif
-# if PSZ == 24
-#define cfbCopyPlane1toN cfbCopyPlane1to24
-#define cfbCopyPlaneNto1 cfbCopyPlane24to1
-# endif
-# if PSZ == 32
-#define cfbCopyPlane1toN cfbCopyPlane1to32
-#define cfbCopyPlaneNto1 cfbCopyPlane32to1
-# endif
-#endif
-
-/* cfbBitBltcfb == cfbCopyPlaneExpand */
-RegionPtr
-cfbBitBlt (
- register DrawablePtr pSrcDrawable,
- register DrawablePtr pDstDrawable,
- GC *pGC,
- int srcx, int srcy,
- int width, int height,
- int dstx, int dsty,
- void (*doBitBlt)(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/),
- unsigned long bitPlane)
-{
- RegionPtr prgnSrcClip = NULL; /* may be a new region, or just a copy */
- Bool freeSrcClip = FALSE;
-
- RegionPtr prgnExposed;
- RegionRec rgnDst;
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- register BoxPtr pbox;
- int i;
- register int dx;
- register int dy;
- xRectangle origSource;
- DDXPointRec origDest;
- int numRects;
- BoxRec fastBox;
- int fastClip = 0; /* for fast clipping with pixmap source */
- int fastExpose = 0; /* for fast exposures with pixmap source */
-
- origSource.x = srcx;
- origSource.y = srcy;
- origSource.width = width;
- origSource.height = height;
- origDest.x = dstx;
- origDest.y = dsty;
-
- if ((pSrcDrawable != pDstDrawable) &&
- pSrcDrawable->pScreen->SourceValidate)
- {
- (*pSrcDrawable->pScreen->SourceValidate) (pSrcDrawable, srcx, srcy, width, height);
- }
-
- srcx += pSrcDrawable->x;
- srcy += pSrcDrawable->y;
-
- /* clip the source */
-
- if (pSrcDrawable->type == DRAWABLE_PIXMAP)
- {
- if ((pSrcDrawable == pDstDrawable) &&
- (pGC->clientClipType == CT_NONE))
- {
- prgnSrcClip = cfbGetCompositeClip(pGC);
- }
- else
- {
- fastClip = 1;
- }
- }
- else
- {
- if (pGC->subWindowMode == IncludeInferiors)
- {
- /*
- * XFree86 DDX empties the border clip when the
- * VT is inactive
- */
- if (!((WindowPtr) pSrcDrawable)->parent &&
- REGION_NOTEMPTY (pSrcDrawable->pScreen,
- &((WindowPtr) pSrcDrawable)->borderClip))
- {
- /*
- * special case bitblt from root window in
- * IncludeInferiors mode; just like from a pixmap
- */
- fastClip = 1;
- }
- else if ((pSrcDrawable == pDstDrawable) &&
- (pGC->clientClipType == CT_NONE))
- {
- prgnSrcClip = cfbGetCompositeClip(pGC);
- }
- else
- {
- prgnSrcClip = NotClippedByChildren((WindowPtr)pSrcDrawable);
- freeSrcClip = TRUE;
- }
- }
- else
- {
- prgnSrcClip = &((WindowPtr)pSrcDrawable)->clipList;
- }
- }
-
- fastBox.x1 = srcx;
- fastBox.y1 = srcy;
- fastBox.x2 = srcx + width;
- fastBox.y2 = srcy + height;
-
- /* Don't create a source region if we are doing a fast clip */
- if (fastClip)
- {
- fastExpose = 1;
- /*
- * clip the source; if regions extend beyond the source size,
- * make sure exposure events get sent
- */
- if (fastBox.x1 < pSrcDrawable->x)
- {
- fastBox.x1 = pSrcDrawable->x;
- fastExpose = 0;
- }
- if (fastBox.y1 < pSrcDrawable->y)
- {
- fastBox.y1 = pSrcDrawable->y;
- fastExpose = 0;
- }
- if (fastBox.x2 > pSrcDrawable->x + (int) pSrcDrawable->width)
- {
- fastBox.x2 = pSrcDrawable->x + (int) pSrcDrawable->width;
- fastExpose = 0;
- }
- if (fastBox.y2 > pSrcDrawable->y + (int) pSrcDrawable->height)
- {
- fastBox.y2 = pSrcDrawable->y + (int) pSrcDrawable->height;
- fastExpose = 0;
- }
- }
- else
- {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, prgnSrcClip);
- }
-
- dstx += pDstDrawable->x;
- dsty += pDstDrawable->y;
-
- if (pDstDrawable->type == DRAWABLE_WINDOW)
- {
- if (!((WindowPtr)pDstDrawable)->realized)
- {
- if (!fastClip)
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
- }
-
- dx = srcx - dstx;
- dy = srcy - dsty;
-
- /* Translate and clip the dst to the destination composite clip */
- if (fastClip)
- {
- RegionPtr cclip;
-
- /* Translate the region directly */
- fastBox.x1 -= dx;
- fastBox.x2 -= dx;
- fastBox.y1 -= dy;
- fastBox.y2 -= dy;
-
- /* If the destination composite clip is one rectangle we can
- do the clip directly. Otherwise we have to create a full
- blown region and call intersect */
-
- /* XXX because CopyPlane uses this routine for 8-to-1 bit
- * copies, this next line *must* also correctly fetch the
- * composite clip from an mfb gc
- */
-
- cclip = cfbGetCompositeClip(pGC);
- if (REGION_NUM_RECTS(cclip) == 1)
- {
- BoxPtr pBox = REGION_RECTS(cclip);
-
- if (fastBox.x1 < pBox->x1) fastBox.x1 = pBox->x1;
- if (fastBox.x2 > pBox->x2) fastBox.x2 = pBox->x2;
- if (fastBox.y1 < pBox->y1) fastBox.y1 = pBox->y1;
- if (fastBox.y2 > pBox->y2) fastBox.y2 = pBox->y2;
-
- /* Check to see if the region is empty */
- if (fastBox.x1 >= fastBox.x2 || fastBox.y1 >= fastBox.y2)
- {
- REGION_NULL(pGC->pScreen, &rgnDst);
- }
- else
- {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- }
- }
- else
- {
- /* We must turn off fastClip now, since we must create
- a full blown region. It is intersected with the
- composite clip below. */
- fastClip = 0;
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox,1);
- }
- }
- else
- {
- REGION_TRANSLATE(pGC->pScreen, &rgnDst, -dx, -dy);
- }
-
- if (!fastClip)
- {
- REGION_INTERSECT(pGC->pScreen, &rgnDst,
- &rgnDst,
- cfbGetCompositeClip(pGC));
- }
-
- /* Do bit blitting */
- numRects = REGION_NUM_RECTS(&rgnDst);
- if (numRects && width && height)
- {
- if(!(pptSrc = (DDXPointPtr)ALLOCATE_LOCAL(numRects *
- sizeof(DDXPointRec))))
- {
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
- pbox = REGION_RECTS(&rgnDst);
- ppt = pptSrc;
- for (i = numRects; --i >= 0; pbox++, ppt++)
- {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- (*doBitBlt) (pSrcDrawable, pDstDrawable, pGC->alu, &rgnDst, pptSrc, pGC->planemask);
- DEALLOCATE_LOCAL(pptSrc);
- }
-
- prgnExposed = NULL;
- if (pGC->fExpose)
- {
- /* Pixmap sources generate a NoExposed (we return NULL to do this) */
- if (!fastExpose)
- prgnExposed =
- miHandleExposures(pSrcDrawable, pDstDrawable, pGC,
- origSource.x, origSource.y,
- (int)origSource.width,
- (int)origSource.height,
- origDest.x, origDest.y, bitPlane);
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return prgnExposed;
-}
-
-
-RegionPtr
-cfbCopyPlaneReduce (
- register DrawablePtr pSrcDrawable,
- register DrawablePtr pDstDrawable,
- GC *pGC,
- int srcx, int srcy,
- int width, int height,
- int dstx, int dsty,
- void (*doCopyPlane)(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/,
- unsigned long /*bitPlane*/),
- unsigned long bitPlane)
-{
- RegionPtr prgnSrcClip = NULL; /* may be a new region, or just a copy */
- Bool freeSrcClip = FALSE;
-
- RegionPtr prgnExposed;
- RegionRec rgnDst;
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- register BoxPtr pbox;
- int i;
- register int dx;
- register int dy;
- xRectangle origSource;
- DDXPointRec origDest;
- int numRects;
- BoxRec fastBox;
- int fastClip = 0; /* for fast clipping with pixmap source */
- int fastExpose = 0; /* for fast exposures with pixmap source */
-
- origSource.x = srcx;
- origSource.y = srcy;
- origSource.width = width;
- origSource.height = height;
- origDest.x = dstx;
- origDest.y = dsty;
-
- if ((pSrcDrawable != pDstDrawable) &&
- pSrcDrawable->pScreen->SourceValidate)
- {
- (*pSrcDrawable->pScreen->SourceValidate) (pSrcDrawable, srcx, srcy, width, height);
- }
-
- srcx += pSrcDrawable->x;
- srcy += pSrcDrawable->y;
-
- /* clip the source */
-
- if (pSrcDrawable->type == DRAWABLE_PIXMAP)
- {
- if ((pSrcDrawable == pDstDrawable) &&
- (pGC->clientClipType == CT_NONE))
- {
- prgnSrcClip = cfbGetCompositeClip(pGC);
- }
- else
- {
- fastClip = 1;
- }
- }
- else
- {
- if (pGC->subWindowMode == IncludeInferiors)
- {
- /*
- * XFree86 DDX empties the border clip when the
- * VT is inactive
- */
- if (!((WindowPtr) pSrcDrawable)->parent &&
- REGION_NOTEMPTY (pSrcDrawable->pScreen,
- &((WindowPtr) pSrcDrawable)->borderClip))
- {
- /*
- * special case bitblt from root window in
- * IncludeInferiors mode; just like from a pixmap
- */
- fastClip = 1;
- }
- else if ((pSrcDrawable == pDstDrawable) &&
- (pGC->clientClipType == CT_NONE))
- {
- prgnSrcClip = cfbGetCompositeClip(pGC);
- }
- else
- {
- prgnSrcClip = NotClippedByChildren((WindowPtr)pSrcDrawable);
- freeSrcClip = TRUE;
- }
- }
- else
- {
- prgnSrcClip = &((WindowPtr)pSrcDrawable)->clipList;
- }
- }
-
- fastBox.x1 = srcx;
- fastBox.y1 = srcy;
- fastBox.x2 = srcx + width;
- fastBox.y2 = srcy + height;
-
- /* Don't create a source region if we are doing a fast clip */
- if (fastClip)
- {
- fastExpose = 1;
- /*
- * clip the source; if regions extend beyond the source size,
- * make sure exposure events get sent
- */
- if (fastBox.x1 < pSrcDrawable->x)
- {
- fastBox.x1 = pSrcDrawable->x;
- fastExpose = 0;
- }
- if (fastBox.y1 < pSrcDrawable->y)
- {
- fastBox.y1 = pSrcDrawable->y;
- fastExpose = 0;
- }
- if (fastBox.x2 > pSrcDrawable->x + (int) pSrcDrawable->width)
- {
- fastBox.x2 = pSrcDrawable->x + (int) pSrcDrawable->width;
- fastExpose = 0;
- }
- if (fastBox.y2 > pSrcDrawable->y + (int) pSrcDrawable->height)
- {
- fastBox.y2 = pSrcDrawable->y + (int) pSrcDrawable->height;
- fastExpose = 0;
- }
- }
- else
- {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, prgnSrcClip);
- }
-
- dstx += pDstDrawable->x;
- dsty += pDstDrawable->y;
-
- if (pDstDrawable->type == DRAWABLE_WINDOW)
- {
- if (!((WindowPtr)pDstDrawable)->realized)
- {
- if (!fastClip)
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
- }
-
- dx = srcx - dstx;
- dy = srcy - dsty;
-
- /* Translate and clip the dst to the destination composite clip */
- if (fastClip)
- {
- RegionPtr cclip;
-
- /* Translate the region directly */
- fastBox.x1 -= dx;
- fastBox.x2 -= dx;
- fastBox.y1 -= dy;
- fastBox.y2 -= dy;
-
- /* If the destination composite clip is one rectangle we can
- do the clip directly. Otherwise we have to create a full
- blown region and call intersect */
-
- /* XXX because CopyPlane uses this routine for 8-to-1 bit
- * copies, this next line *must* also correctly fetch the
- * composite clip from an mfb gc
- */
-
- cclip = cfbGetCompositeClip(pGC);
- if (REGION_NUM_RECTS(cclip) == 1)
- {
- BoxPtr pBox = REGION_RECTS(cclip);
-
- if (fastBox.x1 < pBox->x1) fastBox.x1 = pBox->x1;
- if (fastBox.x2 > pBox->x2) fastBox.x2 = pBox->x2;
- if (fastBox.y1 < pBox->y1) fastBox.y1 = pBox->y1;
- if (fastBox.y2 > pBox->y2) fastBox.y2 = pBox->y2;
-
- /* Check to see if the region is empty */
- if (fastBox.x1 >= fastBox.x2 || fastBox.y1 >= fastBox.y2)
- {
- REGION_NULL(pGC->pScreen, &rgnDst);
- }
- else
- {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- }
- }
- else
- {
- /* We must turn off fastClip now, since we must create
- a full blown region. It is intersected with the
- composite clip below. */
- fastClip = 0;
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- }
- }
- else
- {
- REGION_TRANSLATE(pGC->pScreen, &rgnDst, -dx, -dy);
- }
-
- if (!fastClip)
- {
- REGION_INTERSECT(pGC->pScreen, &rgnDst,
- &rgnDst,
- cfbGetCompositeClip(pGC));
- }
-
- /* Do bit blitting */
- numRects = REGION_NUM_RECTS(&rgnDst);
- if (numRects && width && height)
- {
- if(!(pptSrc = (DDXPointPtr)ALLOCATE_LOCAL(numRects *
- sizeof(DDXPointRec))))
- {
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
- pbox = REGION_RECTS(&rgnDst);
- ppt = pptSrc;
- for (i = numRects; --i >= 0; pbox++, ppt++)
- {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- (*doCopyPlane) (pSrcDrawable, pDstDrawable, pGC->alu, &rgnDst, pptSrc, pGC->planemask, bitPlane);
- DEALLOCATE_LOCAL(pptSrc);
- }
-
- prgnExposed = NULL;
- if (pGC->fExpose)
- {
- /* Pixmap sources generate a NoExposed (we return NULL to do this) */
- if (!fastExpose)
- prgnExposed =
- miHandleExposures(pSrcDrawable, pDstDrawable, pGC,
- origSource.x, origSource.y,
- (int)origSource.width,
- (int)origSource.height,
- origDest.x, origDest.y, bitPlane);
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return prgnExposed;
-}
-
-
-void
-cfbDoBitblt (pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- void (*doBitBlt)(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/)
- = cfbDoBitbltGeneral;
-
- if ((planemask & PMSK) == PMSK) {
- switch (alu) {
- case GXcopy:
- doBitBlt = cfbDoBitbltCopy;
- break;
- case GXxor:
- doBitBlt = cfbDoBitbltXor;
- break;
- case GXor:
- doBitBlt = cfbDoBitbltOr;
- break;
- }
- }
- (*doBitBlt) (pSrc, pDst, alu, prgnDst, pptSrc, planemask);
-}
-
-RegionPtr
-cfbCopyArea(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty)
- register DrawablePtr pSrcDrawable;
- register DrawablePtr pDstDrawable;
- GC *pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
-{
- void (*doBitBlt) (
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/);
-
- doBitBlt = cfbDoBitbltCopy;
- if (pGC->alu != GXcopy || (pGC->planemask & PMSK) != PMSK)
- {
- doBitBlt = cfbDoBitbltGeneral;
- if ((pGC->planemask & PMSK) == PMSK)
- {
- switch (pGC->alu) {
- case GXxor:
- doBitBlt = cfbDoBitbltXor;
- break;
- case GXor:
- doBitBlt = cfbDoBitbltOr;
- break;
- }
- }
- }
- return cfbBitBlt (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, doBitBlt, 0L);
-}
-
-#if PSZ == 8
-void
-cfbCopyPlane1to8 (pSrcDrawable, pDstDrawable, rop, prgnDst, pptSrc, planemask)
- DrawablePtr pSrcDrawable; /* must be a bitmap */
- DrawablePtr pDstDrawable; /* must be depth 8 drawable */
- int rop; /* not used; caller must call cfb8CheckOpaqueStipple
- * beforehand to get cfb8StippleRRop set correctly */
- RegionPtr prgnDst; /* region in destination to draw to;
- * screen relative coords. if dest is a window;
- * drawable relative if dest is a pixmap */
- DDXPointPtr pptSrc; /* drawable relative src coords to copy from;
- * must be one point for each box in prgnDst */
- unsigned long planemask; /* to apply to destination writes */
-{
- int srcx, srcy; /* upper left corner of box being copied in source */
- int dstx, dsty; /* upper left corner of box being copied in dest */
- int width, height; /* in pixels, unpadded, of box being copied */
- int xoffSrc; /* bit # in leftmost word of row from which copying starts */
- int xoffDst; /* byte # in leftmost word of row from which copying starts */
- CfbBits *psrcBase, *pdstBase; /* start of drawable's pixel data */
- int widthSrc; /* # of groups of 32 pixels (1 bit/pixel) in src bitmap*/
- int widthDst; /* # of groups of 4 pixels (8 bits/pixel) in dst */
- CfbBits *psrcLine, *pdstLine; /* steps a row at a time thru src/dst;
- * may point into middle of row */
- register CfbBits *psrc, *pdst; /* steps within the row */
- register CfbBits bits, tmp; /* bits from source */
- register int leftShift;
- register int rightShift;
- CfbBits startmask; /* left edge pixel mask */
- CfbBits endmask; /* right edge pixel mask */
- register int nlMiddle; /* number of words in middle of the row to draw */
- register int nl;
- int firstoff = 0;
- int secondoff = 0;
- CfbBits src;
- int nbox; /* number of boxes in region to copy */
- BoxPtr pbox; /* steps thru boxes in region */
- int pixelsRemainingOnRightEdge; /* # pixels to be drawn on a row after
- * the main "middle" loop */
-
- cfbGetLongWidthAndPointer (pSrcDrawable, widthSrc, psrcBase)
- cfbGetLongWidthAndPointer (pDstDrawable, widthDst, pdstBase)
-
- nbox = REGION_NUM_RECTS(prgnDst);
- pbox = REGION_RECTS(prgnDst);
- while (nbox--)
- {
- dstx = pbox->x1;
- dsty = pbox->y1;
- srcx = pptSrc->x;
- srcy = pptSrc->y;
- width = pbox->x2 - pbox->x1;
- height = pbox->y2 - pbox->y1;
- pbox++;
- pptSrc++;
-
- psrcLine = psrcBase + srcy * widthSrc + (srcx >> MFB_PWSH);
- pdstLine = pdstBase + dsty * widthDst + (dstx >> PWSH);
- xoffSrc = srcx & MFB_PIM; /* finds starting bit in src */
- xoffDst = dstx & PIM; /* finds starting byte in dst */
-
- /* compute startmask, endmask, nlMiddle */
-
- if (xoffDst + width < PPW) /* XXX should this be '<= PPW' ? */
- { /* the copy only affects one word per row in destination */
- maskpartialbits(dstx, width, startmask);
- endmask = 0; /* nothing on right edge */
- nlMiddle = 0; /* nothing in middle */
- }
- else
- { /* the copy will affect multiple words per row in destination */
- maskbits(dstx, width, startmask, endmask, nlMiddle);
- }
-
- /*
- * compute constants for the first four bits to be
- * copied. This avoids troubles with partial first
- * writes, and difficult shift computation
- */
- if (startmask)
- {
- firstoff = xoffSrc - xoffDst;
- if (firstoff > (MFB_PPW-PPW))
- secondoff = MFB_PPW - firstoff;
- if (xoffDst)
- {
- srcx += (PPW-xoffDst);
- xoffSrc = srcx & MFB_PIM;
- }
- }
- leftShift = xoffSrc;
- rightShift = MFB_PPW - leftShift;
-
- pixelsRemainingOnRightEdge = (nlMiddle & 7) * PPW +
- ((dstx + width) & PIM);
-
- /* setup is done; now let's move some bits */
-
- /* caller must call cfb8CheckOpaqueStipple before this function
- * to set cfb8StippleRRop!
- */
-
- if (cfb8StippleRRop == GXcopy)
- {
- while (height--)
- { /* one iteration of this loop copies one row */
- psrc = psrcLine;
- pdst = pdstLine;
- psrcLine += widthSrc;
- pdstLine += widthDst;
- bits = *psrc++;
- if (startmask)
- {
- if (firstoff < 0)
- tmp = BitRight (bits, -firstoff);
- else
- {
- tmp = BitLeft (bits, firstoff);
- /*
- * need a more cautious test for partialmask
- * case...
- */
- if (firstoff >= (MFB_PPW-PPW))
- {
- bits = *psrc++;
- if (firstoff != (MFB_PPW-PPW))
- tmp |= BitRight (bits, secondoff);
- }
- }
- *pdst = (*pdst & ~startmask) | (GetPixelGroup(tmp) & startmask);
- pdst++;
- }
- nl = nlMiddle;
- while (nl >= 8)
- {
- nl -= 8;
- tmp = BitLeft(bits, leftShift);
- bits = *psrc++;
- if (rightShift != MFB_PPW)
- tmp |= BitRight(bits, rightShift);
-
-#ifdef FAST_CONSTANT_OFFSET_MODE
-# define StorePixels(pdst,o,pixels) (pdst)[o] = (pixels)
-# define EndStep(pdst,o) (pdst) += (o)
-# define StoreRopPixels(pdst,o,and,xor) (pdst)[o] = DoRRop((pdst)[o],and,xor);
-#else
-# define StorePixels(pdst,o,pixels) *(pdst)++ = (pixels)
-# define EndStep(pdst,o)
-# define StoreRopPixels(pdst,o,and,xor) *(pdst) = DoRRop(*(pdst),and,xor); (pdst)++;
-#endif
-
-#define Step(c) NextBitGroup(c);
-#define StoreBitsPlain(o,c) StorePixels(pdst,o,GetPixelGroup(c))
-#define StoreRopBitsPlain(o,c) StoreRopPixels(pdst,o,\
- cfb8StippleAnd[GetBitGroup(c)], \
- cfb8StippleXor[GetBitGroup(c)])
-#define StoreBits0(c) StoreBitsPlain(0,c)
-#define StoreRopBits0(c) StoreRopBitsPlain(0,c)
-
-#if (BITMAP_BIT_ORDER == MSBFirst)
-# define StoreBits(o,c) StoreBitsPlain(o,c)
-# define StoreRopBits(o,c) StoreRopBitsPlain(o,c)
-# define FirstStep(c) Step(c)
-#else /* BITMAP_BIT_ORDER == LSBFirst */
-#if PGSZ == 64
-# define StoreBits(o,c) StorePixels(pdst,o, (cfb8Pixels[c & 0xff]))
-# define StoreRopBits(o,c) StoreRopPixels(pdst,o, \
- (cfb8StippleAnd[c & 0xff]), \
- (cfb8StippleXor[c & 0xff]))
-# define FirstStep(c) c = BitLeft (c, 8);
-#else
-/* 0x3c is 0xf << 2 (4 bits, long word) */
-# define StoreBits(o,c) StorePixels(pdst,o,*((CfbBits *)\
- (((char *) cfb8Pixels) + (c & 0x3c))))
-# define StoreRopBits(o,c) StoreRopPixels(pdst,o, \
- *((CfbBits *) (((char *) cfb8StippleAnd) + (c & 0x3c))), \
- *((CfbBits *) (((char *) cfb8StippleXor) + (c & 0x3c))))
-# define FirstStep(c) c = BitLeft (c, 2);
-#endif /* PGSZ */
-#endif /* BITMAP_BIT_ORDER */
-
- StoreBits0(tmp); FirstStep(tmp);
- StoreBits(1,tmp); Step(tmp);
- StoreBits(2,tmp); Step(tmp);
- StoreBits(3,tmp); Step(tmp);
- StoreBits(4,tmp); Step(tmp);
- StoreBits(5,tmp); Step(tmp);
- StoreBits(6,tmp); Step(tmp);
- StoreBits(7,tmp); EndStep (pdst,8);
- }
-
- /* do rest of middle and partial word on right edge */
-
- if (pixelsRemainingOnRightEdge)
- {
- tmp = BitLeft(bits, leftShift);
-
- if (pixelsRemainingOnRightEdge > rightShift)
- {
- bits = *psrc++;
- tmp |= BitRight (bits, rightShift);
- }
- EndStep (pdst, nl);
- switch (nl)
- {
- case 7:
- StoreBitsPlain(-7,tmp); Step(tmp);
- case 6:
- StoreBitsPlain(-6,tmp); Step(tmp);
- case 5:
- StoreBitsPlain(-5,tmp); Step(tmp);
- case 4:
- StoreBitsPlain(-4,tmp); Step(tmp);
- case 3:
- StoreBitsPlain(-3,tmp); Step(tmp);
- case 2:
- StoreBitsPlain(-2,tmp); Step(tmp);
- case 1:
- StoreBitsPlain(-1,tmp); Step(tmp);
- }
- if (endmask)
- *pdst = (*pdst & ~endmask) | (GetPixelGroup(tmp) & endmask);
- }
- }
- }
- else /* cfb8StippleRRop != GXcopy */
- {
- while (height--)
- { /* one iteration of this loop copies one row */
- psrc = psrcLine;
- pdst = pdstLine;
- psrcLine += widthSrc;
- pdstLine += widthDst;
- bits = *psrc++;
-
- /* do partial word on left edge */
-
- if (startmask)
- {
- if (firstoff < 0)
- tmp = BitRight (bits, -firstoff);
- else
- {
- tmp = BitLeft (bits, firstoff);
- if (firstoff >= (MFB_PPW-PPW))
- {
- bits = *psrc++;
- if (firstoff != (MFB_PPW-PPW))
- tmp |= BitRight (bits, secondoff);
- }
- }
- src = GetBitGroup(tmp);
- *pdst = MaskRRopPixels (*pdst, src, startmask);
- pdst++;
- }
-
- /* do middle of row */
-
- nl = nlMiddle;
- while (nl >= 8)
- {
- nl -= 8;
- tmp = BitLeft(bits, leftShift);
- bits = *psrc++;
- if (rightShift != MFB_PPW)
- tmp |= BitRight(bits, rightShift);
- StoreRopBits0(tmp); FirstStep(tmp);
- StoreRopBits(1,tmp); Step(tmp);
- StoreRopBits(2,tmp); Step(tmp);
- StoreRopBits(3,tmp); Step(tmp);
- StoreRopBits(4,tmp); Step(tmp);
- StoreRopBits(5,tmp); Step(tmp);
- StoreRopBits(6,tmp); Step(tmp);
- StoreRopBits(7,tmp); EndStep(pdst,8);
- }
-
- /* do rest of middle and partial word on right edge */
-
- if (pixelsRemainingOnRightEdge)
- {
- tmp = BitLeft(bits, leftShift);
-
- if (pixelsRemainingOnRightEdge > rightShift)
- {
- bits = *psrc++; /* XXX purify abr here */
- tmp |= BitRight (bits, rightShift);
- }
- while (nl--)
- {
- src = GetBitGroup (tmp);
- *pdst = RRopPixels (*pdst, src);
- pdst++;
- NextBitGroup(tmp);
- }
- if (endmask)
- {
- src = GetBitGroup (tmp);
- *pdst = MaskRRopPixels (*pdst, src, endmask);
- }
- }
- } /* end copy one row */
- } /* end alu is non-copy-mode case */
- } /* end iteration over region boxes */
-}
-
-#else /* PSZ == 8 */
-
-#define mfbmaskbits(x, w, startmask, endmask, nlw) \
- startmask = mfbGetstarttab((x)&0x1f); \
- endmask = mfbGetendtab(((x)+(w)) & 0x1f); \
- if (startmask) \
- nlw = (((w) - (32 - ((x)&0x1f))) >> 5); \
- else \
- nlw = (w) >> 5;
-
-#define mfbmaskpartialbits(x, w, mask) \
- mask = mfbGetpartmasks((x)&0x1f,(w)&0x1f);
-
-#define LeftMost 0
-#define StepBit(bit, inc) ((bit) += (inc))
-
-
-#define GetBits(psrc, nBits, curBit, bitPos, bits) {\
- bits = 0; \
- while (nBits--) \
- { \
- bits |= ((*psrc++ >> bitPos) & 1) << curBit; \
- StepBit (curBit, 1); \
- } \
-}
-
-/******************************************************************/
-
-static void
-#if PSZ == 16
-cfbCopyPlane1to16
-#endif
-#if PSZ == 24
-cfbCopyPlane1to24
-#endif
-#if PSZ == 32
-cfbCopyPlane1to32
-#endif
-(
- DrawablePtr pSrcDrawable,
- DrawablePtr pDstDrawable,
- int rop,
- RegionPtr prgnDst,
- DDXPointPtr pptSrc,
- unsigned long planemask)
-{
- int srcx, srcy, dstx, dsty;
- int width, height;
- int xoffSrc;
- CfbBits *psrcBase, *pdstBase;
- int widthSrc, widthDst;
- unsigned int *psrcLine;
- register unsigned int *psrc;
-#if PSZ == 16
- unsigned short *pdstLine;
- register unsigned short *pdst;
-#endif
-#if PSZ == 32
- unsigned int *pdstLine;
- register unsigned int *pdst;
-#endif
-#if PSZ == 24
- unsigned char *pdstLine;
- register unsigned char *pdst;
-#endif
- register unsigned int bits, tmp;
- register unsigned int fgpixel, bgpixel;
- register unsigned int src;
-#if PSZ == 24
- register unsigned int dst;
-#endif
- register int leftShift, rightShift;
- register int i, nl;
- int nbox;
- BoxPtr pbox;
- int result;
-
-#if PSZ == 16
- unsigned int doublet[4]; /* Pixel values for 16bpp expansion. */
-#endif
-#if PSZ == 32
- unsigned int doublet[8]; /* Pixel values for 32bpp expansion */
-#endif
-
- fgpixel = FgPixel & planemask;
- bgpixel = BgPixel & planemask;
-
-#if PSZ == 16
- if (rop == GXcopy && (planemask & PMSK) == PMSK) {
- doublet[0] = bgpixel | (bgpixel << 16);
- doublet[1] = fgpixel | (bgpixel << 16);
- doublet[2] = bgpixel | (fgpixel << 16);
- doublet[3] = fgpixel | (fgpixel << 16);
- }
-#endif
-#if PSZ == 32
- if (rop == GXcopy && (planemask & PMSK) == PMSK) {
- doublet[0] = bgpixel; doublet[1] = bgpixel;
- doublet[2] = fgpixel; doublet[3] = bgpixel;
- doublet[4] = bgpixel; doublet[5] = fgpixel;
- doublet[6] = fgpixel; doublet[7] = fgpixel;
- }
-#endif
-
- /* must explicitly ask for "int" widths, as code below expects it */
- /* on some machines (Alpha), "long" and "int" are not the same size */
- cfbGetTypedWidthAndPointer (pSrcDrawable, widthSrc, psrcBase, int, CfbBits)
- cfbGetTypedWidthAndPointer (pDstDrawable, widthDst, pdstBase, int, CfbBits)
-
-#if PSZ == 16
- widthDst <<= 1;
-#endif
-#if PSZ == 24
- widthDst <<= 2;
-#endif
-
- nbox = REGION_NUM_RECTS(prgnDst);
- pbox = REGION_RECTS(prgnDst);
-
- while (nbox--)
- {
- dstx = pbox->x1;
- dsty = pbox->y1;
- srcx = pptSrc->x;
- srcy = pptSrc->y;
- width = pbox->x2 - pbox->x1;
- height = pbox->y2 - pbox->y1;
- pbox++;
- pptSrc++;
- psrcLine = (unsigned int *)psrcBase + srcy * widthSrc + (srcx >> 5);
-#if PSZ == 16
- pdstLine = (unsigned short *)pdstBase + dsty * widthDst + dstx;
-#endif
-#if PSZ == 24
- pdstLine = (unsigned char *)pdstBase + dsty * widthDst + dstx * 3;
-#endif
-#if PSZ == 32
- pdstLine = (unsigned int *)pdstBase + dsty * widthDst + dstx;
-#endif
- xoffSrc = srcx & 0x1f;
-
- /*
- * compute constants for the first four bits to be
- * copied. This avoids troubles with partial first
- * writes, and difficult shift computation
- */
- leftShift = xoffSrc;
- rightShift = 32 - leftShift;
-
- if (rop == GXcopy && (planemask & PMSK) == PMSK)
- {
- while (height--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- psrcLine += widthSrc;
- pdstLine += widthDst;
- bits = *psrc++;
- nl = width;
- while (nl >= 32)
- {
- tmp = BitLeft(bits, leftShift);
- bits = *psrc++;
- if (rightShift != 32)
- tmp |= BitRight(bits, rightShift);
- i = 0;
-#if PSZ == 16
- /*
- * I've thrown in some optimization to at least write
- * some aligned 32-bit words instead of 16-bit shorts.
- */
- if ((unsigned long)psrc & 2) {
- /* Write unaligned 16-bit word at left edge. */
- if (tmp & 0x01)
- *pdst = fgpixel;
- else
- *pdst = bgpixel;
- pdst++;
- i++;
- }
- while (i <= 24)
- {
- unsigned tmpbits = tmp >> i;
- *(unsigned int *)pdst = doublet[tmpbits & 0x03];
- *(unsigned int *)(pdst + 2) =
- doublet[(tmpbits >> 2) & 0x03];
- *(unsigned int *)(pdst + 4) =
- doublet[(tmpbits >> 4) & 0x03];
- *(unsigned int *)(pdst + 6) =
- doublet[(tmpbits >> 6) & 0x03];
- pdst += 8; /* Advance four 32-bit words. */
- i += 8;
- }
- while (i <= 30)
- {
- *(unsigned int *)pdst =
- doublet[(tmp >> i) & 0x03];
- pdst += 2; /* Advance one 32-bit word. */
- i += 2;
- }
- if (i == 31) {
- if ((tmp >> 31) & 0x01)
- *pdst = fgpixel;
- else
- *pdst = bgpixel;
- pdst++;
- }
-#endif
-#if PSZ == 24
- while (i < 32) {
- if ((tmp >> i) & 0x01) {
- *pdst = fgpixel;
- *(pdst + 1) = fgpixel >> 8;
- *(pdst + 2) = fgpixel >> 16;
- }
- else {
- *pdst = bgpixel;
- *(pdst + 1) = bgpixel >> 8;
- *(pdst + 2) = bgpixel >> 16;
- }
- pdst += 3;
- i++;
- }
-#endif
-#if PSZ == 32
- while (i <= 28) {
- int pair;
- pair = (tmp >> i) & 0x03;
- *pdst = doublet[pair * 2];
- *(pdst + 1) = doublet[pair * 2 + 1];
- pair = (tmp >> (i + 2)) & 0x03;
- *(pdst + 2) = doublet[pair * 2];
- *(pdst + 3) = doublet[pair * 2 + 1];
- pdst += 4;
- i += 4;
- }
- while (i < 32) {
- *pdst = ((tmp >> i) & 0x01) ? fgpixel : bgpixel;
- pdst++;
- i++;
- }
-#endif
- nl -= 32;
- }
-
- if (nl)
- {
- tmp = BitLeft(bits, leftShift);
- /*
- * better condition needed -- mustn't run
- * off the end of the source...
- */
- if (rightShift != 32)
- {
- bits = *psrc++;
- tmp |= BitRight (bits, rightShift);
- }
- i = 32;
- while (nl--)
- {
- --i;
-#if PSZ == 24
- if ((tmp >> (31 - i)) & 0x01) {
- *pdst = fgpixel;
- *(pdst + 1) = fgpixel >> 8;
- *(pdst + 2) = fgpixel >> 16;
- }
- else {
- *pdst = bgpixel;
- *(pdst + 1) = bgpixel >> 8;
- *(pdst + 2) = bgpixel >> 16;
- }
- pdst += 3;
-#else
- *pdst = ((tmp >> (31 - i)) & 0x01) ? fgpixel : bgpixel;
- pdst++;
-#endif
- }
- }
- }
- }
- else
- {
- while (height--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- psrcLine += widthSrc;
- pdstLine += widthDst;
- bits = *psrc++;
- nl = width;
- while (nl >= 32)
- {
- tmp = BitLeft(bits, leftShift);
- bits = *psrc++;
- if (rightShift != 32)
- tmp |= BitRight(bits, rightShift);
- i = 32;
- while (i--)
- {
- src = ((tmp >> (31 - i)) & 0x01) ? fgpixel : bgpixel;
-#if PSZ == 24
- dst = *pdst;
- dst |= (*(pdst + 1)) << 8;
- dst |= (*(pdst + 2)) << 16;
- DoRop (result, rop, src, dst);
- *pdst = (dst & ~planemask) |
- (result & planemask);
- *(pdst+1) = ((dst & ~planemask) >> 8) |
- ((result & planemask) >> 8);
- *(pdst+2) = ((dst & ~planemask) >> 16) |
- ((result & planemask) >> 16);
- pdst += 3;
-#else
- DoRop (result, rop, src, *pdst);
-
- *pdst = (*pdst & ~planemask) |
- (result & planemask);
- pdst++;
-#endif
- }
- nl -= 32;
- }
-
- if (nl)
- {
- tmp = BitLeft(bits, leftShift);
- /*
- * better condition needed -- mustn't run
- * off the end of the source...
- */
- if (rightShift != 32)
- {
- bits = *psrc++;
- tmp |= BitRight (bits, rightShift);
- }
- i = 32;
- while (nl--)
- {
- --i;
- src = ((tmp >> (31 - i)) & 0x01) ? fgpixel : bgpixel;
-#if PSZ == 24
- dst = *pdst;
- dst |= (*(pdst + 1)) << 8;
- dst |= (*(pdst + 2)) << 16;
- DoRop (result, rop, src, dst);
- *pdst = (dst & ~planemask) |
- (result & planemask);
- *(pdst+1) = ((dst & ~planemask) >> 8) |
- ((result & planemask) >> 8);
- *(pdst+2) = ((dst & ~planemask) >> 16) |
- ((result & planemask) >> 16);
- pdst += 3;
-#else
- DoRop (result, rop, src, *pdst);
-
- *pdst = (*pdst & ~planemask) |
- (result & planemask);
- pdst++;
-#endif
- }
- }
- }
- }
- }
-}
-
-#endif /* PSZ == 8 */
-
-/* shared among all different cfb depths through linker magic */
-
-RegionPtr cfbCopyPlane(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, bitPlane)
- DrawablePtr pSrcDrawable;
- DrawablePtr pDstDrawable;
- GCPtr pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
- unsigned long bitPlane;
-{
- RegionPtr ret;
-
-#if IMAGE_BYTE_ORDER == LSBFirst
-
- void (*doCopyPlaneExpand)(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/);
-
- if (pSrcDrawable->bitsPerPixel == 1 && pDstDrawable->bitsPerPixel == PSZ)
- {
- if (bitPlane == 1)
- {
- doCopyPlaneExpand = cfbCopyPlane1toN;
-#if PSZ == 8
- cfb8CheckOpaqueStipple (pGC->alu,
- pGC->fgPixel, pGC->bgPixel,
- pGC->planemask);
-#else
- FgPixel = pGC->fgPixel;
- BgPixel = pGC->bgPixel;
-#endif
- ret = cfbCopyPlaneExpand (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, doCopyPlaneExpand, bitPlane);
- }
- else
- ret = miHandleExposures (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, bitPlane);
- }
- else if (pSrcDrawable->bitsPerPixel == PSZ && pDstDrawable->bitsPerPixel == 1)
- {
- int oldalu;
-
- oldalu = pGC->alu;
- if ((pGC->fgPixel & 1) == 0 && (pGC->bgPixel&1) == 1)
- pGC->alu = mfbGetInverseAlu(pGC->alu);
- else if ((pGC->fgPixel & 1) == (pGC->bgPixel & 1))
- pGC->alu = mfbReduceRop(pGC->alu, pGC->fgPixel);
- ret = cfbCopyPlaneReduce(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty,
- cfbCopyPlaneNto1, bitPlane);
- pGC->alu = oldalu;
- }
- else if (pSrcDrawable->bitsPerPixel == PSZ && pDstDrawable->bitsPerPixel == PSZ)
- {
- PixmapPtr pBitmap;
- ScreenPtr pScreen = pSrcDrawable->pScreen;
- GCPtr pGC1;
-
- pBitmap = (*pScreen->CreatePixmap) (pScreen, width, height, 1);
- if (!pBitmap)
- return NULL;
- pGC1 = GetScratchGC (1, pScreen);
- if (!pGC1)
- {
- (*pScreen->DestroyPixmap) (pBitmap);
- return NULL;
- }
- /*
- * don't need to set pGC->fgPixel,bgPixel as copyPlaneNto1
- * ignores pixel values, expecting the rop to "do the
- * right thing", which GXcopy will.
- */
- ValidateGC ((DrawablePtr) pBitmap, pGC1);
- /* no exposures here, scratch GC's don't get graphics expose */
- cfbCopyPlaneReduce(pSrcDrawable, (DrawablePtr) pBitmap,
- pGC1, srcx, srcy, width, height, 0, 0,
- cfbCopyPlaneNto1, bitPlane);
-#if PSZ == 8
- cfb8CheckOpaqueStipple (pGC->alu,
- pGC->fgPixel, pGC->bgPixel,
- pGC->planemask);
-#else
- FgPixel = pGC->fgPixel;
- BgPixel = pGC->bgPixel;
-#endif
- /* no exposures here, copy bits from inside a pixmap */
- cfbCopyPlaneExpand((DrawablePtr) pBitmap, pDstDrawable, pGC,
- 0, 0, width, height, dstx, dsty, cfbCopyPlane1toN, 1);
- FreeScratchGC (pGC1);
- (*pScreen->DestroyPixmap) (pBitmap);
- /* compute resultant exposures */
- ret = miHandleExposures (pSrcDrawable, pDstDrawable, pGC,
- srcx, srcy, width, height,
- dstx, dsty, bitPlane);
- }
- else
-#endif
- ret = miCopyPlane (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, bitPlane);
- return ret;
-}
-
-
diff --git a/nx-X11/programs/Xserver/cfb/cfbblt.c b/nx-X11/programs/Xserver/cfb/cfbblt.c
deleted file mode 100644
index 7a0b192cc..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbblt.c
+++ /dev/null
@@ -1,933 +0,0 @@
-/*
- * cfb copy area
- */
-/* $XFree86: xc/programs/Xserver/cfb/cfbblt.c,v 3.13tsi Exp $ */
-
-/*
-
-Copyright 1989, 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.
-
-Author: Keith Packard
-
-*/
-/* $Xorg: cfbblt.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
-
-/* 24-bit bug fixes: Peter Wainwright, 1998/11/28 */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "cfb8bit.h"
-#include "fastblt.h"
-#include "mergerop.h"
-
-#ifdef notdef /* XXX fails right now, walks off end of pixmaps */
-#if defined (FAST_UNALIGNED_READS) && PSZ == 8
-#define DO_UNALIGNED_BITBLT
-#endif
-#endif
-
-#if defined(FAST_MEMCPY) && (MROP == Mcopy) && PSZ == 8
-#define DO_MEMCPY
-#endif
-
-/* ................................................. */
-/* SPECIAL CODE FOR 24 BITS by Peter Wainwright */
-
-#if PSZ == 24 && (MROP) == 0
-
-/* The default macros are defined in mergerop.h, and none of them are
- really appropriate for what we want to do.
-
- There are two ways of fixing this: either define SLOW_24BIT_COPY
- to copy pixel by pixel, or (by default) use the following macros
- modified from mergerop.h
-
- MROP_SOLID and MROP_MASK are defined for each of the operations,
- i.e. each value of MROP.
-
- There are special cases for Mcopy, McopyInverted, Mxor, and Mor.
- There is a completely generic version for MROP=0, and a simplified
- generic version which works for (Mcopy|Mxor|MandReverse|Mor).
-
- However, the generic version does not work for the 24-bit case
- because the pixels cannot be packed exactly into a machine word (32
- bits).
-
- Alternative macros MROP_SOLID24 and MROP_MASK24 are provided for
- the 24-bit case. However, these each copy a single *pixel*, not a
- single machine word. They take an rvalue source pixel, an lvalue
- destination, and the pixel index. The latter is used to find the
- position of the pixel data within the two words *dst and *(dst+1).
-
- Further macros MROP_SOLID24P and MROP_MASK24P are used to copy from
- an lvalue source to an lvalue destination. MROP_PIXEL24 is used to
- assemble the source pixel from the adjacent words *src and
- *(src+1), and this is then split between the destination words
- using the non-P macros above.
-
- But we want to copy entire words for the sake of efficiency.
- Unfortunately if a plane mask is specified this must be shifted
- from one word to the next. Fortunately the pattern repeats after 3
- words, so we unroll the planemask here and redefine MROP_SOLID
- and MROP_MASK. */
-
-
-#endif /* MROP == 0 && PSZ == 24 */
-
-/* ................................................. */
-
-#if PSZ == 24
-#define BYPP 3
-#if PGSZ == 32
-#define P3W 4 /* pixels in 3 machine words */
-#define PAM 3 /* pixel align mask; PAM = P3W -1 */
-#define P2WSH 2
-#else
-#define P3W 8 /* pixels in 3 machine words */
-#define PAM 7 /* pixel align mask; PAM = P3W -1 */
-#define P2WSH 3
-#endif
-#endif
-
-void
-MROP_NAME(cfbDoBitblt)(
- DrawablePtr pSrc,
- DrawablePtr pDst,
- int alu,
- RegionPtr prgnDst,
- DDXPointPtr pptSrc,
- unsigned long planemask)
-{
- CfbBits *psrcBase, *pdstBase;
- /* start of src and dst bitmaps */
- int widthSrc, widthDst; /* add to get to same position in next line */
-
- BoxPtr pbox;
- int nbox;
-
- BoxPtr pboxTmp, pboxNext, pboxBase, pboxNew1, pboxNew2;
- /* temporaries for shuffling rectangles */
- DDXPointPtr pptTmp, pptNew1, pptNew2;
- /* shuffling boxes entails shuffling the
- source points too */
- int w, h;
- int xdir; /* 1 = left right, -1 = right left/ */
- int ydir; /* 1 = top down, -1 = bottom up */
-
- CfbBits *psrcLine, *pdstLine;
- /* pointers to line with current src and dst */
- register CfbBits *psrc;/* pointer to current src longword */
- register CfbBits *pdst;/* pointer to current dst longword */
-
- MROP_DECLARE_REG()
-
- /* following used for looping through a line */
- CfbBits startmask, endmask; /* masks for writing ends of dst */
- int nlMiddle; /* whole longwords in dst */
- int xoffSrc, xoffDst;
- register int nl; /* temp copy of nlMiddle */
- int careful;
-
-#if (PSZ != 24) || (MROP != 0)
- register int leftShift, rightShift;
- register CfbBits bits;
- register CfbBits bits1;
-#endif
-
-#if PSZ == 24
-#ifdef DO_MEMCPY
- int w2;
-#endif
-
-#if MROP == 0
- int widthSrcBytes = cfbGetByteWidth(pSrc);
- int widthDstBytes = cfbGetByteWidth(pDst);
-#endif
-#endif
-
- MROP_INITIALIZE(alu,planemask)
-
- cfbGetLongWidthAndPointer (pSrc, widthSrc, psrcBase)
-
- cfbGetLongWidthAndPointer (pDst, widthDst, pdstBase)
-
- /* XXX we have to err on the side of safety when both are windows,
- * because we don't know if IncludeInferiors is being used.
- */
- careful = ((pSrc == pDst) ||
- ((pSrc->type == DRAWABLE_WINDOW) &&
- (pDst->type == DRAWABLE_WINDOW)));
-
- pbox = REGION_RECTS(prgnDst);
- nbox = REGION_NUM_RECTS(prgnDst);
-
- pboxNew1 = NULL;
- pptNew1 = NULL;
- pboxNew2 = NULL;
- pptNew2 = NULL;
- if (careful && (pptSrc->y < pbox->y1))
- {
- /* walk source botttom to top */
- ydir = -1;
- widthSrc = -widthSrc;
- widthDst = -widthDst;
-
- if (nbox > 1)
- {
- /* keep ordering in each band, reverse order of bands */
- pboxNew1 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox);
- if(!pboxNew1)
- return;
- pptNew1 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox);
- if(!pptNew1)
- {
- DEALLOCATE_LOCAL(pboxNew1);
- return;
- }
- pboxBase = pboxNext = pbox+nbox-1;
- while (pboxBase >= pbox)
- {
- while ((pboxNext >= pbox) &&
- (pboxBase->y1 == pboxNext->y1))
- pboxNext--;
- pboxTmp = pboxNext+1;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp <= pboxBase)
- {
- *pboxNew1++ = *pboxTmp++;
- *pptNew1++ = *pptTmp++;
- }
- pboxBase = pboxNext;
- }
- pboxNew1 -= nbox;
- pbox = pboxNew1;
- pptNew1 -= nbox;
- pptSrc = pptNew1;
- }
- }
- else
- {
- /* walk source top to bottom */
- ydir = 1;
- }
-
- if (careful && (pptSrc->x < pbox->x1))
- {
- /* walk source right to left */
- xdir = -1;
-
- if (nbox > 1)
- {
- /* reverse order of rects in each band */
- pboxNew2 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox);
- pptNew2 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox);
- if(!pboxNew2 || !pptNew2)
- {
- if (pptNew2) DEALLOCATE_LOCAL(pptNew2);
- if (pboxNew2) DEALLOCATE_LOCAL(pboxNew2);
- if (pboxNew1)
- {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(pboxNew1);
- }
- return;
- }
- pboxBase = pboxNext = pbox;
- while (pboxBase < pbox+nbox)
- {
- while ((pboxNext < pbox+nbox) &&
- (pboxNext->y1 == pboxBase->y1))
- pboxNext++;
- pboxTmp = pboxNext;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp != pboxBase)
- {
- *pboxNew2++ = *--pboxTmp;
- *pptNew2++ = *--pptTmp;
- }
- pboxBase = pboxNext;
- }
- pboxNew2 -= nbox;
- pbox = pboxNew2;
- pptNew2 -= nbox;
- pptSrc = pptNew2;
- }
- }
- else
- {
- /* walk source left to right */
- xdir = 1;
- }
-
- while(nbox--)
- {
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
-
-#if PSZ == 24
-#ifdef DO_MEMCPY
- w2 = w * BYPP;
-#endif
-#endif
- if (ydir == -1) /* start at last scanline of rectangle */
- {
- psrcLine = psrcBase + ((pptSrc->y+h-1) * -widthSrc);
- pdstLine = pdstBase + ((pbox->y2-1) * -widthDst);
- }
- else /* start at first scanline */
- {
- psrcLine = psrcBase + (pptSrc->y * widthSrc);
- pdstLine = pdstBase + (pbox->y1 * widthDst);
- }
-#if PSZ == 24
- if (w == 1 && ((pbox->x1 & PAM) == 0 || (pbox->x1 & PAM) == PAM))
-#else
- if ((pbox->x1 & PIM) + w <= PPW)
-#endif
- {
- maskpartialbits (pbox->x1, w, endmask);
- startmask = 0;
- nlMiddle = 0;
- }
- else
- {
- maskbits(pbox->x1, w, startmask, endmask, nlMiddle);
- }
-
-#if PSZ == 24
-#if 0
- nlMiddle = w - (pbox->x2 &PAM);;
- if(pbox->x1 & PAM){
- nlMiddle -= (PAM+1 - (pbox->x1 &PAM));
- }
- nlMiddle >>= P2WSH;
- if(nlMiddle < 0)
- nlMiddle = 0;
-#endif
-#endif
-
-#ifdef DO_MEMCPY
- /* If the src and dst scanline don't overlap, do forward case. */
-
- if ((xdir == 1) || (pptSrc->y != pbox->y1)
- || (pptSrc->x + w <= pbox->x1))
- {
-#if PSZ == 24
- char *psrc = (char *) psrcLine + (pptSrc->x * BYPP);
- char *pdst = (char *) pdstLine + (pbox->x1 * BYPP);
-#else
- char *psrc = (char *) psrcLine + pptSrc->x;
- char *pdst = (char *) pdstLine + pbox->x1;
-#endif
- while (h--)
- {
-#if PSZ == 24
- memcpy(pdst, psrc, w2);
-#else
- memcpy(pdst, psrc, w);
-#endif
- pdst += widthDst << PWSH;
- psrc += widthSrc << PWSH;
- }
- }
-#else /* ! DO_MEMCPY */
- if (xdir == 1)
- {
-#if PSZ == 24 && MROP == 0
- /* Note: x is a pixel number; the byte offset is 3*x;
- therefore the offset within a word is (3*x) & 3 ==
- (4*x-x) & 3 == (-x) & 3. The offsets therefore
- DECREASE by 1 for each pixel.
- */
- xoffSrc = ( - pptSrc->x) & PAM;
- xoffDst = ( - pbox->x1) & PAM;
-#if 1
- if((int)xoffSrc != (int)xoffDst /* Alignments must be same. */
- || ((widthDstBytes & PAM) != (widthSrcBytes & PAM) && h > 1))
-#else
- if(1)
-#endif
- /* Width also must be same, if hight > 1 */
- {
- /* ...otherwise, pixel by pixel operation */
- while (h--)
- {
- register int i, si, sii, di;
-
- for (i = 0, si = pptSrc->x, di = pbox->x1;
- i < w;
- i++, si++, di++) {
- psrc = psrcLine + ((si * BYPP) >> P2WSH);
- pdst = pdstLine + ((di * BYPP) >> P2WSH);
- sii = (si & 3);
- MROP_SOLID24P(psrc, pdst, sii, di);
- }
- pdstLine += widthDst;
- psrcLine += widthSrc;
- }
- }
- else
-#endif
- {
-
-#if PSZ == 24
-
-#if MROP != 0
- xoffSrc = ( - pptSrc->x) & PAM;
- xoffDst = ( - pbox->x1) & PAM;
-#endif
- pdstLine += (pbox->x1 * BYPP) >> P2WSH;
- psrcLine += (pptSrc->x * BYPP) >> P2WSH;
-#else
- xoffSrc = pptSrc->x & PIM;
- xoffDst = pbox->x1 & PIM;
- pdstLine += (pbox->x1 >> PWSH);
- psrcLine += (pptSrc->x >> PWSH);
-#endif
-#ifdef DO_UNALIGNED_BITBLT
- nl = xoffSrc - xoffDst;
- psrcLine = (CfbBits *)
- (((unsigned char *) psrcLine) + nl);
-#else
-#if PSZ == 24 && MROP == 0
- /* alredy satisfied */
-#else
- if (xoffSrc == xoffDst)
-#endif
-#endif
- {
- while (h--)
- {
-#if PSZ == 24 && MROP == 0
- register int index;
- register int im3;
-#endif /* PSZ == 24 && MROP == 0 */
- psrc = psrcLine;
- pdst = pdstLine;
- pdstLine += widthDst;
- psrcLine += widthSrc;
-#if PSZ == 24 && MROP == 0
- index = (int)(pdst - pdstBase);
- im3 = index % 3;
-#endif /* PSZ == 24 && MROP == 0 */
- if (startmask)
- {
-#if PSZ == 24 && MROP == 0
- *pdst = DoMaskMergeRop24u(*psrc, *pdst, startmask, im3);
- index++;
- im3 = index % 3;
-#else /* PSZ != 24 || MROP != 0 */
- *pdst = MROP_MASK(*psrc, *pdst, startmask);
-#endif /* PSZ == 24 && MROP == 0 */
- psrc++;
- pdst++;
- }
-
- nl = nlMiddle;
-#ifdef LARGE_INSTRUCTION_CACHE
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#if PSZ == 24 && MROP == 0
-#define BodyOdd(n) pdst[-n] = DoMergeRop24u(psrc[-n], pdst[-n], ((int)(pdst - n - pdstBase))%3);
-#define BodyEven(n) pdst[-n] = DoMergeRop24u(psrc[-n], pdst[-n], ((int)(pdst - n - pdstBase))%3);
-#else /* PSZ != 24 || MROP != 0 */
-#define BodyOdd(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-#define BodyEven(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-#endif /* PSZ == 24 && MROP == 0 */
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#if PSZ == 24 && MROP == 0
-#define BodyOdd(n) *pdst = DoMergeRop24u(*psrc, *pdst, im3); pdst++; psrc++; index++; im3 = index % 3;
-#define BodyEven(n) BodyOdd(n)
-#else /* PSZ != 24 || MROP != 0 */
-#define BodyOdd(n) *pdst = MROP_SOLID (*psrc, *pdst); pdst++; psrc++;
-#define BodyEven(n) BodyOdd(n)
-#endif /* PSZ == 24 && MROP == 0 */
-
-#define LoopReset ;
-
-#endif
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
-#ifdef NOTDEF
- /* you'd think this would be faster --
- * a single instruction instead of 6
- * but measurements show it to be ~15% slower
- */
- while ((nl -= 6) >= 0)
- {
- asm ("moveml %1+,#0x0c0f;moveml#0x0c0f,%0"
- : "=m" (*(char *)pdst)
- : "m" (*(char *)psrc)
- : "d0", "d1", "d2", "d3",
- "a2", "a3");
- pdst += 6;
- }
- nl += 6;
- while (nl--)
- *pdst++ = *psrc++;
-#endif
-#if 0 /*PSZ == 24 && MROP == 0*/
- DuffL(nl, label1,
- *pdst = DoMergeRop24u(*psrc, *pdst, im3);
- pdst++; psrc++; index++;im3 = index % 3;)
-#else /* !(PSZ == 24 && MROP == 0) */
- DuffL(nl, label1,
- *pdst = MROP_SOLID (*psrc, *pdst);
- pdst++; psrc++;)
-#endif /* PSZ == 24 && MROP == 0 */
-#endif
-
- if (endmask)
-#if PSZ == 24 && MROP == 0
- *pdst = DoMaskMergeRop24u(*psrc, *pdst, endmask, (int)(pdst - pdstBase) % 3);
-#else /* !(PSZ == 24 && MROP == 0) */
- *pdst = MROP_MASK(*psrc, *pdst, endmask);
-#endif /* PSZ == 24 && MROP == 0 */
- }
- }
-#ifndef DO_UNALIGNED_BITBLT
-#if PSZ == 24 && MROP == 0
- /* can not happen */
-#else /* !(PSZ == 24 && MROP == 0) */
- else /* xoffSrc != xoffDst */
- {
- if (xoffSrc > xoffDst)
- {
-#if PSZ == 24
- leftShift = (xoffSrc - xoffDst) << 3;
-#else
-#if PGSZ == 32
- leftShift = (xoffSrc - xoffDst) << (5 - PWSH);
-#else /* PGSZ == 64 */
- leftShift = (xoffSrc - xoffDst) << (6 - PWSH);
-#endif /* PGSZ */
-#endif
- rightShift = PGSZ - leftShift;
- }
- else
- {
-#if PSZ == 24
- rightShift = (xoffDst - xoffSrc) << 3;
-#else
-#if PGSZ == 32
- rightShift = (xoffDst - xoffSrc) << (5 - PWSH);
-#else /* PGSZ == 64 */
- rightShift = (xoffDst - xoffSrc) << (6 - PWSH);
-#endif /* PGSZ */
-#endif
- leftShift = PGSZ - rightShift;
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- pdstLine += widthDst;
- psrcLine += widthSrc;
- bits = 0;
- if (xoffSrc > xoffDst)
- bits = *psrc++;
- if (startmask)
- {
- bits1 = BitLeft(bits,leftShift);
- bits = *psrc++;
- bits1 |= BitRight(bits,rightShift);
- *pdst = MROP_MASK(bits1, *pdst, startmask);
- pdst++;
- }
- nl = nlMiddle;
-#ifdef LARGE_INSTRUCTION_CACHE
- bits1 = bits;
-
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) \
-bits = psrc[-n]; \
-pdst[-n] = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), pdst[-n]);
-
-#define BodyEven(n) \
-bits1 = psrc[-n]; \
-pdst[-n] = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), pdst[-n]);
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) \
-bits = *psrc++; \
-*pdst = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), *pdst); \
-pdst++;
-
-#define BodyEven(n) \
-bits1 = *psrc++; \
-*pdst = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), *pdst); \
-pdst++;
-
-#define LoopReset ;
-
-#endif /* !FAST_CONSTANT_OFFSET_MODE */
-
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL (nl,label2,
- bits1 = BitLeft(bits, leftShift);
- bits = *psrc++;
- *pdst = MROP_SOLID (bits1 | BitRight(bits, rightShift), *pdst);
- pdst++;
- )
-#endif
-
- if (endmask)
- {
- bits1 = BitLeft(bits, leftShift);
- if (BitLeft(endmask, rightShift))
- {
- bits = *psrc;
- bits1 |= BitRight(bits, rightShift);
- }
- *pdst = MROP_MASK (bits1, *pdst, endmask);
- }
- }
- }
-#endif /* (PSZ == 24 && MROP == 0) */
-#endif /* DO_UNALIGNED_BITBLT */
-
- }
- }
-#endif /* ! DO_MEMCPY */
- else /* xdir == -1 */
- {
-#if PSZ == 24 && MROP == 0
- xoffSrc = (-(pptSrc->x + w)) & PAM;
- xoffDst = (-pbox->x2) & PAM;
-#if 1
- if(xoffSrc != xoffDst /* Alignments must be same. */
- || ((widthDstBytes & PAM) != (widthSrcBytes & PAM) && h > 1))
-#else
- if(1)
-#endif
- /* Width also must be same, if hight > 1 */
- {
- /* ...otherwise, pixel by pixel operation */
- while (h--)
- {
- register int i, si, sii, di;
-
- for (i = 0, si = pptSrc->x + w - 1, di = pbox->x2 - 1;
- i < w;
- i++, si--, di--) {
- psrc = psrcLine + ((si * BYPP) >> P2WSH);
- pdst = pdstLine + ((di * BYPP) >> P2WSH);
- sii = (si & PAM);
- MROP_SOLID24P(psrc, pdst, sii, di);
- }
- psrcLine += widthSrc;
- pdstLine += widthDst;
- }
- }else
-#endif /* MROP == 0 && PSZ == 24 */
- {
-
-#if PSZ == 24
-#if MROP == 0
- /* already calculated */
-#else
- xoffSrc = (pptSrc->x + w) & PAM;
- xoffDst = pbox->x2 & PAM;
-#endif
- pdstLine += ((pbox->x2 * BYPP - 1) >> P2WSH) + 1;
- psrcLine += (((pptSrc->x+w) * BYPP - 1) >> P2WSH) + 1;
-#else
- xoffSrc = (pptSrc->x + w - 1) & PIM;
- xoffDst = (pbox->x2 - 1) & PIM;
- pdstLine += ((pbox->x2-1) >> PWSH) + 1;
- psrcLine += ((pptSrc->x+w - 1) >> PWSH) + 1;
-#endif
-#ifdef DO_UNALIGNED_BITBLT
-#if PSZ == 24
- nl = xoffDst - xoffSrc;
-#else
- nl = xoffSrc - xoffDst;
-#endif
- psrcLine = (CfbBits *)
- (((unsigned char *) psrcLine) + nl);
-#else
-#if PSZ == 24 && MROP == 0
- /* already satisfied */
-#else
- if (xoffSrc == xoffDst)
-#endif
-#endif
- {
- while (h--)
- {
-#if PSZ == 24 && MROP == 0
- register int index;
- register int im3;
-#endif /* PSZ == 24 && MROP == 0 */
- psrc = psrcLine;
- pdst = pdstLine;
- pdstLine += widthDst;
- psrcLine += widthSrc;
-#if PSZ == 24 && MROP == 0
- index = (int)(pdst - pdstBase);
-#endif /* PSZ == 24 && MROP == 0 */
-
- if (endmask)
- {
- pdst--;
- psrc--;
-#if PSZ == 24 && MROP == 0
- index--;
- im3 = index % 3;
- *pdst = DoMaskMergeRop24u(*psrc, *pdst, endmask, im3);
-#else /* !(PSZ == 24 && MROP == 0) */
- *pdst = MROP_MASK (*psrc, *pdst, endmask);
-#endif /* PSZ == 24 && MROP == 0 */
- }
- nl = nlMiddle;
-#ifdef LARGE_INSTRUCTION_CACHE
-#ifdef FAST_CONSTANT_OFFSET_MODE
- psrc -= nl & (UNROLL - 1);
- pdst -= nl & (UNROLL - 1);
-
-#if PSZ == 24 && MROP == 0
-#define BodyOdd(n) pdst[n-1] = DoMergeRop24u(psrc[n-1], pdst[n-1], ((int)(pdst - (n - 1) -pdstBase)) % 3);
-#else /* !(PSZ == 24 && MROP == 0) */
-#define BodyOdd(n) pdst[n-1] = MROP_SOLID (psrc[n-1], pdst[n-1]);
-#endif /* PSZ == 24 && MROP == 0 */
-
-#define BodyEven(n) BodyOdd(n)
-
-#define LoopReset \
-pdst -= UNROLL;\
-psrc -= UNROLL;
-
-#else
-
-#if PSZ == 24 && MROP == 0
-#define BodyOdd(n) --pdst; --psrc; --index; im3 = index % 3;*pdst = DoMergeRop24u(*psrc, *pdst, im3);
-#else /* !(PSZ == 24 && MROP == 0) */
-#define BodyOdd(n) --pdst; --psrc; *pdst = MROP_SOLID(*psrc, *pdst);
-#endif /* PSZ == 24 && MROP == 0 */
-#define BodyEven(n) BodyOdd(n)
-#define LoopReset ;
-
-#endif
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
-#if PSZ == 24 && MROP == 0
- DuffL(nl,label3,
- --pdst; --psrc; --index; im3= index%3;*pdst = DoMergeRop24u(*psrc, *pdst, im3);)
-#else /* !(PSZ == 24 && MROP == 0) */
- DuffL(nl,label3,
- --pdst; --psrc; *pdst = MROP_SOLID (*psrc, *pdst);)
-#endif /* PSZ == 24 && MROP == 0 */
-#endif
-
- if (startmask)
- {
- --pdst;
- --psrc;
-#if PSZ == 24 && MROP == 0
- *pdst = DoMaskMergeRop24u(*psrc, *pdst, startmask, (int)(pdst - pdstBase) % 3);
-#else /* !(PSZ == 24 && MROP == 0) */
- *pdst = MROP_MASK(*psrc, *pdst, startmask);
-#endif /* PSZ == 24 && MROP == 0 */
- }
- }
- }
-#ifndef DO_UNALIGNED_BITBLT
-#if PSZ == 24 && MROP == 0
- /* can not happen */
-#else /* !( PSZ == 24 && MROP == 0) */
- else
- {
- if (xoffDst > xoffSrc)
- {
-#if PSZ == 24
- leftShift = (xoffDst - xoffSrc) << 3;
- rightShift = PGSZ - leftShift;
-#else
-#if PGSZ == 32
- rightShift = (xoffDst - xoffSrc) << (5 - PWSH);
-#else /* PGSZ == 64 */
- rightShift = (xoffDst - xoffSrc) << (6 - PWSH);
-#endif /* PGSZ */
- leftShift = PGSZ - rightShift;
-#endif
- }
- else
- {
-#if PSZ == 24
- rightShift = (xoffSrc - xoffDst) << 3;
- leftShift = PGSZ - rightShift;
-#else
-#if PGSZ == 32
- leftShift = (xoffSrc - xoffDst) << (5 - PWSH);
-#else /* PGSZ == 64 */
- leftShift = (xoffSrc - xoffDst) << (6 - PWSH);
-#endif /* PGSZ */
- rightShift = PGSZ - leftShift;
-#endif
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- pdstLine += widthDst;
- psrcLine += widthSrc;
- bits = 0;
-#if PSZ == 24
- if (xoffSrc > xoffDst)
-#else
- if (xoffDst > xoffSrc)
-#endif
- bits = *--psrc;
- if (endmask)
- {
- bits1 = BitRight(bits, rightShift);
- bits = *--psrc;
- bits1 |= BitLeft(bits, leftShift);
- pdst--;
- *pdst = MROP_MASK(bits1, *pdst, endmask);
- }
- nl = nlMiddle;
-#ifdef LARGE_INSTRUCTION_CACHE
- bits1 = bits;
-#ifdef FAST_CONSTANT_OFFSET_MODE
- psrc -= nl & (UNROLL - 1);
- pdst -= nl & (UNROLL - 1);
-
-#define BodyOdd(n) \
-bits = psrc[n-1]; \
-pdst[n-1] = MROP_SOLID(BitRight(bits1, rightShift) | BitLeft(bits, leftShift),pdst[n-1]);
-
-#define BodyEven(n) \
-bits1 = psrc[n-1]; \
-pdst[n-1] = MROP_SOLID(BitRight(bits, rightShift) | BitLeft(bits1, leftShift),pdst[n-1]);
-
-#define LoopReset \
-pdst -= UNROLL; \
-psrc -= UNROLL;
-
-#else
-
-#define BodyOdd(n) \
-bits = *--psrc; --pdst; \
-*pdst = MROP_SOLID(BitRight(bits1, rightShift) | BitLeft(bits, leftShift),*pdst);
-
-#define BodyEven(n) \
-bits1 = *--psrc; --pdst; \
-*pdst = MROP_SOLID(BitRight(bits, rightShift) | BitLeft(bits1, leftShift),*pdst);
-
-#define LoopReset ;
-
-#endif
-
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL (nl, label4,
- bits1 = BitRight(bits, rightShift);
- bits = *--psrc;
- --pdst;
- *pdst = MROP_SOLID(bits1 | BitLeft(bits, leftShift),*pdst);
- )
-#endif
-
- if (startmask)
- {
- bits1 = BitRight(bits, rightShift);
- if (BitRight (startmask, leftShift))
- {
- bits = *--psrc;
- bits1 |= BitLeft(bits, leftShift);
- }
- --pdst;
- *pdst = MROP_MASK(bits1, *pdst, startmask);
- }
- }
- }
-#endif /* PSZ == 24 && MROP == 0 */
-#endif
- }
- }
- pbox++;
- pptSrc++;
- }
- if (pboxNew2)
- {
- DEALLOCATE_LOCAL(pptNew2);
- DEALLOCATE_LOCAL(pboxNew2);
- }
- if (pboxNew1)
- {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(pboxNew1);
- }
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbbres.c b/nx-X11/programs/Xserver/cfb/cfbbres.c
deleted file mode 100644
index 2251fb885..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbbres.c
+++ /dev/null
@@ -1,342 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbbres.c,v 3.4 2001/01/17 22:36:34 dawes Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: cfbbres.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "servermd.h"
-#include "miline.h"
-
-/* Solid bresenham line */
-/* NOTES
- e2 is used less often than e1, so it's not in a register
-*/
-
-void
-cfbBresS(rop, and, xor, addrl, nlwidth, signdx, signdy, axis, x1, y1, e, e1,
- e2, len)
- int rop;
- CfbBits and, xor;
- CfbBits *addrl; /* pointer to base of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register int signdx;
- int signdy; /* signs of directions */
- int axis; /* major axis (Y_AXIS or X_AXIS) */
- int x1, y1; /* initial point */
- register int e; /* error accumulator */
- register int e1; /* bresenham increments */
- int e2;
- int len; /* length of line */
-{
- register int e3 = e2-e1;
-#if PSZ == 24
- CfbBits piQxelXor[3],piQxelAnd[3];
- char *addrb;
- int nlwidth3, signdx3;
-#endif
-#ifdef PIXEL_ADDR
- register PixelType *addrp; /* Pixel pointer */
-
- if (len == 0)
- return;
- /* point to first point */
- nlwidth <<= PWSH;
-#if PSZ == 24
- addrp = (PixelType *)(addrl) + (y1 * nlwidth);
- addrb = (char *)addrp + x1 * 3;
-
- piQxelXor[0] = (xor << 24) | xor;
- piQxelXor[1] = (xor << 16)| (xor >> 8);
- piQxelXor[2] = (xor << 8) | (xor >> 16);
- piQxelAnd[0] = (and << 24) | and;
- piQxelAnd[1] = (and << 16)| (and >> 8);
- piQxelAnd[2] = (and << 8) | (and >> 16);
-#else
- addrp = (PixelType *)(addrl) + (y1 * nlwidth) + x1;
-#endif
- if (signdy < 0)
- nlwidth = -nlwidth;
- e = e-e1; /* to make looping easier */
-#if PSZ == 24
- nlwidth3 = nlwidth * sizeof (CfbBits);
- signdx3 = signdx * 3;
-#endif
-
- if (axis == Y_AXIS)
- {
- int t;
-
- t = nlwidth;
- nlwidth = signdx;
- signdx = t;
-#if PSZ == 24
- t = nlwidth3;
- nlwidth3 = signdx3;
- signdx3 = t;
-#endif
- }
- if (rop == GXcopy)
- {
- --len;
-#if PSZ == 24
-#define body_copy \
- addrp = (PixelType *)((unsigned long)addrb & ~0x03); \
- switch((unsigned long)addrb & 3){ \
- case 0: \
- *addrp = ((*addrp)&0xFF000000)|(piQxelXor[0] & 0xFFFFFF); \
- break; \
- case 1: \
- *addrp = ((*addrp)&0xFF)|(piQxelXor[2] & 0xFFFFFF00); \
- break; \
- case 3: \
- *addrp = ((*addrp)&0xFFFFFF)|(piQxelXor[0] & 0xFF000000); \
- *(addrp+1) = ((*(addrp+1))&0xFFFF0000)|(piQxelXor[1] & 0xFFFF); \
- break; \
- case 2: \
- *addrp = ((*addrp)&0xFFFF)|(piQxelXor[1] & 0xFFFF0000); \
- *(addrp+1) = ((*(addrp+1))&0xFFFFFF00)|(piQxelXor[2] & 0xFF); \
- break; \
- }
-#define body {\
- body_copy \
- addrb += signdx3; \
- e += e1; \
- if (e >= 0) \
- { \
- addrb += nlwidth3; \
- e += e3; \
- } \
- }
-#else /* PSZ == 24 */
-#define body {\
- *addrp = xor; \
- addrp += signdx; \
- e += e1; \
- if (e >= 0) \
- { \
- addrp += nlwidth; \
- e += e3; \
- } \
- }
-#endif /* PSZ == 24 */
- while (len >= 4)
- {
- body body body body
- len -= 4;
- }
- switch (len)
- {
- case 3: body case 2: body case 1: body
- }
-#undef body
-#if PSZ == 24
- body_copy
-# undef body_copy
-#else
- *addrp = xor;
-#endif
- }
- else /* not GXcopy */
- {
- while(len--)
- {
-#if PSZ == 24
- addrp = (PixelType *)((unsigned long)addrb & ~0x03);
- switch((unsigned long)addrb & 3){
- case 0:
- *addrp = (*addrp & (piQxelAnd[0]|0xFF000000))
- ^ (piQxelXor[0] & 0xFFFFFF);
- break;
- case 1:
- *addrp = (*addrp & (piQxelAnd[2]|0xFF))
- ^ (piQxelXor[2] & 0xFFFFFF00);
- break;
- case 3:
- *addrp = (*addrp & (piQxelAnd[0]|0xFFFFFF))
- ^ (piQxelXor[0] & 0xFF000000);
- *(addrp+1) = (*(addrp+1) & (piQxelAnd[1]|0xFFFF0000))
- ^ (piQxelXor[1] & 0xFFFF);
- break;
- case 2:
- *addrp = (*addrp & (piQxelAnd[1]|0xFFFF))
- ^ (piQxelXor[1] & 0xFFFF0000);
- *(addrp+1) = (*(addrp+1) & (piQxelAnd[2]|0xFFFFFF00))
- ^ (piQxelXor[2] & 0xFF);
- break;
- }
- e += e1;
- if (e >= 0)
- {
- addrb += nlwidth3;
- e += e3;
- }
- addrb += signdx3;
-#else /* PSZ == 24 */
- *addrp = DoRRop (*addrp, and, xor);
- e += e1;
- if (e >= 0)
- {
- addrp += nlwidth;
- e += e3;
- }
- addrp += signdx;
-#endif /* PSZ == 24 */
- }
- }
-#else /* !PIXEL_ADDR */
- register CfbBits tmp, bit;
- CfbBits leftbit, rightbit;
-
- /* point to longword containing first point */
-#if PSZ == 24
- addrl = (addrl + (y1 * nlwidth) + ((x1 * 3) >>2);
-#else
- addrl = (addrl + (y1 * nlwidth) + (x1 >> PWSH));
-#endif
- if (signdy < 0)
- nlwidth = -nlwidth;
- e = e-e1; /* to make looping easier */
-
- leftbit = cfbmask[0];
-#if PSZ == 24
- rightbit = cfbmask[(PPW-1)<<1];
- bit = cfbmask[(x1 & 3)<<1];
-#else
- rightbit = cfbmask[PPW-1];
- bit = cfbmask[x1 & PIM];
-#endif
-
- if (axis == X_AXIS)
- {
- if (signdx > 0)
- {
- while (len--)
- {
- *addrl = DoMaskRRop (*addrl, and, xor, bit);
- bit = SCRRIGHT(bit,1);
- e += e1;
- if (e >= 0)
- {
- addrl += nlwidth;
- e += e3;
- }
- if (!bit)
- {
- bit = leftbit;
- addrl++;
- }
- }
- }
- else
- {
- while (len--)
- {
- *addrl = DoMaskRRop (*addrl, and, xor, bit);
- e += e1;
- bit = SCRLEFT(bit,1);
- if (e >= 0)
- {
- addrl += nlwidth;
- e += e3;
- }
- if (!bit)
- {
- bit = rightbit;
- addrl--;
- }
- }
- }
- } /* if X_AXIS */
- else
- {
- if (signdx > 0)
- {
- while(len--)
- {
- *addrl = DoMaskRRop (*addrl, and, xor, bit);
- e += e1;
- if (e >= 0)
- {
- bit = SCRRIGHT(bit,1);
- if (!bit)
- {
- bit = leftbit;
- addrl++;
- }
- e += e3;
- }
- addrl += nlwidth;
- }
- }
- else
- {
- while(len--)
- {
- *addrl = DoMaskRRop (*addrl, and, xor, bit);
- e += e1;
- if (e >= 0)
- {
- bit = SCRLEFT(bit,1);
- if (!bit)
- {
- bit = rightbit;
- addrl--;
- }
- e += e3;
- }
- addrl += nlwidth;
- }
- }
- } /* else Y_AXIS */
-#endif
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbbresd.c b/nx-X11/programs/Xserver/cfb/cfbbresd.c
deleted file mode 100644
index cc27eb5dc..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbbresd.c
+++ /dev/null
@@ -1,406 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbbresd.c,v 3.5 2001/01/17 22:36:34 dawes Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: cfbbresd.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "miline.h"
-
-/* Dashed bresenham line */
-
-void
-cfbBresD(rrops,
- pdashIndex, pDash, numInDashList, pdashOffset, isDoubleDash,
- addrl, nlwidth,
- signdx, signdy, axis, x1, y1, e, e1, e2, len)
- cfbRRopPtr rrops;
- int *pdashIndex; /* current dash */
- unsigned char *pDash; /* dash list */
- int numInDashList; /* total length of dash list */
- int *pdashOffset; /* offset into current dash */
- int isDoubleDash;
- CfbBits *addrl; /* pointer to base of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- int signdx, signdy; /* signs of directions */
- int axis; /* major axis (Y_AXIS or X_AXIS) */
- int x1, y1; /* initial point */
- register int e; /* error accumulator */
- register int e1; /* bresenham increments */
- int e2;
- int len; /* length of line */
-{
-#ifdef PIXEL_ADDR
- register PixelType *addrp;
-#endif
- register int e3 = e2-e1;
- int dashIndex;
- int dashOffset;
- int dashRemaining;
- CfbBits xorFg, andFg, xorBg, andBg;
- Bool isCopy;
- int thisDash;
-#if PSZ == 24
- CfbBits xorPiQxlFg[3], andPiQxlFg[3], xorPiQxlBg[3], andPiQxlBg[3];
- char *addrb;
- int signdx3, signdy3;
-#endif
-
- dashOffset = *pdashOffset;
- dashIndex = *pdashIndex;
- isCopy = (rrops[0].rop == GXcopy && rrops[1].rop == GXcopy);
-#if PSZ == 24
- xorFg = rrops[0].xor & 0xffffff;
- andFg = rrops[0].and & 0xffffff;
- xorBg = rrops[1].xor & 0xffffff;
- andBg = rrops[1].and & 0xffffff;
- xorPiQxlFg[0] = xorFg | (xorFg << 24);
- xorPiQxlFg[1] = (xorFg >> 8) | (xorFg << 16);
- xorPiQxlFg[2] = (xorFg >> 16) | (xorFg << 8);
- andPiQxlFg[0] = andFg | (andFg << 24);
- andPiQxlFg[1] = (andFg >> 8) | (andFg << 16);
- andPiQxlFg[2] = (andFg >> 16) | (andFg << 8);
- xorPiQxlBg[0] = xorBg | (xorBg << 24);
- xorPiQxlBg[1] = (xorBg >> 8) | (xorBg << 16);
- xorPiQxlBg[2] = (xorBg >> 16) | (xorBg << 8);
- andPiQxlBg[0] = andBg | (andBg << 24);
- andPiQxlBg[1] = (andBg >> 8) | (andBg << 16);
- andPiQxlBg[2] = (andFg >> 16) | (andBg << 8);
-#else
- xorFg = rrops[0].xor;
- andFg = rrops[0].and;
- xorBg = rrops[1].xor;
- andBg = rrops[1].and;
-#endif
- dashRemaining = pDash[dashIndex] - dashOffset;
- if ((thisDash = dashRemaining) >= len)
- {
- thisDash = len;
- dashRemaining -= len;
- }
- e = e-e1; /* to make looping easier */
-
-#define BresStep(minor,major) {if ((e += e1) >= 0) { e += e3; minor; } major;}
-
-#define NextDash {\
- dashIndex++; \
- if (dashIndex == numInDashList) \
- dashIndex = 0; \
- dashRemaining = pDash[dashIndex]; \
- if ((thisDash = dashRemaining) >= len) \
- { \
- dashRemaining -= len; \
- thisDash = len; \
- } \
-}
-
-#ifdef PIXEL_ADDR
-
-#if PSZ == 24
-#define Loop(store) while (thisDash--) {\
- store; \
- BresStep(addrb+=signdy3,addrb+=signdx3) \
- }
- /* point to first point */
- nlwidth <<= PWSH;
- addrp = (PixelType *)(addrl) + (y1 * nlwidth);
- addrb = (char *)addrp + x1 * 3;
-
-#else
-#define Loop(store) while (thisDash--) {\
- store; \
- BresStep(addrp+=signdy,addrp+=signdx) \
- }
- /* point to first point */
- nlwidth <<= PWSH;
- addrp = (PixelType *)(addrl) + (y1 * nlwidth) + x1;
-#endif
- signdy *= nlwidth;
-#if PSZ == 24
- signdx3 = signdx * 3;
- signdy3 = signdy * sizeof (CfbBits);
-#endif
- if (axis == Y_AXIS)
- {
- int t;
-
- t = signdx;
- signdx = signdy;
- signdy = t;
-#if PSZ == 24
- t = signdx3;
- signdx3 = signdy3;
- signdy3 = t;
-#endif
- }
-
- if (isCopy)
- {
-#if PSZ == 24
-#define body_copy(pix) { \
- addrp = (PixelType *)((unsigned long)addrb & ~0x03); \
- switch((unsigned long)addrb & 3){ \
- case 0: \
- *addrp = (*addrp & 0xFF000000)|((pix)[0] & 0xFFFFFF); \
- break; \
- case 1: \
- *addrp = (*addrp & 0xFF)|((pix)[2] & 0xFFFFFF00); \
- break; \
- case 3: \
- *addrp = (*addrp & 0xFFFFFF)|((pix)[0] & 0xFF000000); \
- *(addrp+1) = (*(addrp+1) & 0xFFFF0000)|((pix)[1] & 0xFFFF); \
- break; \
- case 2: \
- *addrp = (*addrp & 0xFFFF)|((pix)[1] & 0xFFFF0000); \
- *(addrp+1) = (*(addrp+1) & 0xFFFFFF00)|((pix)[2] & 0xFF); \
- break; \
- } \
-}
-#endif /* PSZ == 24 */
-
- for (;;)
- {
- len -= thisDash;
- if (dashIndex & 1) {
- if (isDoubleDash) {
-#if PSZ == 24
- Loop(body_copy(xorPiQxlBg))
-#else
- Loop(*addrp = xorBg)
-#endif
- } else {
- Loop(;)
- }
- } else {
-#if PSZ == 24
- Loop(body_copy(xorPiQxlFg))
-#else
- Loop(*addrp = xorFg)
-#endif
- }
- if (!len)
- break;
- NextDash
- }
-#undef body_copy
- }
- else
- {
-#define body_set(and, xor) { \
- addrp = (PixelType *)((unsigned long)addrb & ~0x03); \
- switch((unsigned long)addrb & 3){ \
- case 0: \
- *addrp = (*addrp & ((and)[0]|0xFF000000)) ^ ((xor)[0] & 0xFFFFFF); \
- break; \
- case 1: \
- *addrp = (*addrp & ((and)[2]|0xFF)) ^ ((xor)[2] & 0xFFFFFF00); \
- break; \
- case 3: \
- *addrp = (*addrp & ((and)[0]|0xFFFFFF)) ^ ((xor)[0] & 0xFF000000); \
- *(addrp+1)=(*(addrp+1)&((and)[1]|0xFFFF0000)) ^ ((xor)[1]&0xFFFF); \
- break; \
- case 2: \
- *addrp = (*addrp & ((and)[1]|0xFFFF)) ^ ((xor)[1] & 0xFFFF0000); \
- *(addrp+1)=(*(addrp+1)&((and)[2]|0xFFFFFF00)) ^ ((xor)[2] & 0xFF); \
- break; \
- } \
-}
-
- for (;;)
- {
- len -= thisDash;
- if (dashIndex & 1) {
- if (isDoubleDash) {
-#if PSZ == 24
- Loop(body_set(andPiQxlBg, xorPiQxlBg))
-#else
- Loop(*addrp = DoRRop(*addrp,andBg, xorBg))
-#endif
- } else {
- Loop(;)
- }
- } else {
-#if PSZ == 24
- Loop(body_set(andPiQxlFg, xorPiQxlFg))
-#else
- Loop(*addrp = DoRRop(*addrp,andFg, xorFg))
-#endif
- }
- if (!len)
- break;
- NextDash
- }
-#undef body_set
- }
-#else /* !PIXEL_ADDR */
- {
- register CfbBits tmp;
- CfbBits startbit, bit;
-
- /* point to longword containing first point */
-#if PSZ == 24
- addrl = (addrl + (y1 * nlwidth) + ((x1*3) >> 2);
-#else
- addrl = (addrl + (y1 * nlwidth) + (x1 >> PWSH));
-#endif
- signdy = signdy * nlwidth;
-
- if (signdx > 0)
- startbit = cfbmask[0];
- else
-#if PSZ == 24
- startbit = cfbmask[(PPW-1)<<1];
- bit = cfbmask[(x1 & 3)<<1];
-#else
- startbit = cfbmask[PPW-1];
- bit = cfbmask[x1 & PIM];
-#endif
-
-#if PSZ == 24
-#define X_Loop(store) while(thisDash--) {\
- store; \
- BresStep(addrl += signdy, \
- if (signdx > 0) \
- bit = SCRRIGHT(bit,1); \
- else \
- bit = SCRLEFT(bit,1); \
- if (!bit) \
- { \
- bit = startbit; \
- addrl += signdx; \
- }) \
- }
-#define Y_Loop(store) while(thisDash--) {\
- store; \
- BresStep(if (signdx > 0) \
- bit = SCRRIGHT(bit,1); \
- else \
- bit = SCRLEFT(bit,1); \
- if (!bit) \
- { \
- bit = startbit; \
- addrl += signdx; \
- }, \
- addrl += signdy) \
- }
-#else
-#define X_Loop(store) while(thisDash--) {\
- store; \
- BresStep(addrl += signdy, \
- if (signdx > 0) \
- bit = SCRRIGHT(bit,1); \
- else \
- bit = SCRLEFT(bit,1); \
- if (!bit) \
- { \
- bit = startbit; \
- addrl += signdx; \
- }) \
- }
-#define Y_Loop(store) while(thisDash--) {\
- store; \
- BresStep(if (signdx > 0) \
- bit = SCRRIGHT(bit,1); \
- else \
- bit = SCRLEFT(bit,1); \
- if (!bit) \
- { \
- bit = startbit; \
- addrl += signdx; \
- }, \
- addrl += signdy) \
- }
-#endif
-
- if (axis == X_AXIS)
- {
- for (;;)
- {
- len -= thisDash;
- if (dashIndex & 1) {
- if (isDoubleDash) {
- X_Loop(*addrl = DoMaskRRop(*addrl, andBg, xorBg, bit));
- } else {
- X_Loop(;)
- }
- } else {
- X_Loop(*addrl = DoMaskRRop(*addrl, andFg, xorFg, bit));
- }
- if (!len)
- break;
- NextDash
- }
- } /* if X_AXIS */
- else
- {
- for (;;)
- {
- len -= thisDash;
- if (dashIndex & 1) {
- if (isDoubleDash) {
- Y_Loop(*addrl = DoMaskRRop(*addrl, andBg, xorBg, bit));
- } else {
- Y_Loop(;)
- }
- } else {
- Y_Loop(*addrl = DoMaskRRop(*addrl, andFg, xorFg, bit));
- }
- if (!len)
- break;
- NextDash
- }
- } /* else Y_AXIS */
- }
-#endif
- *pdashIndex = dashIndex;
- *pdashOffset = pDash[dashIndex] - dashRemaining;
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbbstore.c b/nx-X11/programs/Xserver/cfb/cfbbstore.c
deleted file mode 100644
index 64adc4050..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbbstore.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbbstore.c,v 1.4 1999/01/31 12:21:41 dawes Exp $ */
-/*-
- * cfbbstore.c --
- * Functions required by the backing-store implementation in MI.
- *
- * Copyright (c) 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- *
- */
-/* $Xorg: cfbbstore.c,v 1.3 2000/08/17 19:48:13 cpqbld Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "cfb.h"
-#include <X11/X.h>
-#include "mibstore.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-
-/*-
- *-----------------------------------------------------------------------
- * cfbSaveAreas --
- * Function called by miSaveAreas to actually fetch the areas to be
- * saved into the backing pixmap. This is very simple to do, since
- * cfbDoBitblt is designed for this very thing. The region to save is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the screen
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the screen into the pixmap.
- *
- *-----------------------------------------------------------------------
- */
-void
-cfbSaveAreas(pPixmap, prgnSave, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnSave; /* Region to save (pixmap-relative) */
- int xorg; /* X origin of region */
- int yorg; /* Y origin of region */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int i;
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- PixmapPtr pScrPix;
-
- i = REGION_NUM_RECTS(prgnSave);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(i * sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnSave);
- pPt = pPtsInit;
- while (--i >= 0) {
- pPt->x = pBox->x1 + xorg;
- pPt->y = pBox->y1 + yorg;
- pPt++;
- pBox++;
- }
-
- pScrPix = (*pScreen->GetWindowPixmap)(pWin);
-
-
- cfbDoBitbltCopy((DrawablePtr) pScrPix, (DrawablePtr)pPixmap,
- GXcopy, prgnSave, pPtsInit, ~0L);
-
- DEALLOCATE_LOCAL (pPtsInit);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * cfbRestoreAreas --
- * Function called by miRestoreAreas to actually fetch the areas to be
- * restored from the backing pixmap. This is very simple to do, since
- * cfbDoBitblt is designed for this very thing. The region to restore is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the pixmap
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the pixmap into the screen.
- *
- *-----------------------------------------------------------------------
- */
-void
-cfbRestoreAreas(pPixmap, prgnRestore, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnRestore; /* Region to restore (screen-relative)*/
- int xorg; /* X origin of window */
- int yorg; /* Y origin of window */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int i;
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- PixmapPtr pScrPix;
-
- i = REGION_NUM_RECTS(prgnRestore);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(i*sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnRestore);
- pPt = pPtsInit;
- while (--i >= 0) {
- pPt->x = pBox->x1 - xorg;
- pPt->y = pBox->y1 - yorg;
- pPt++;
- pBox++;
- }
-
- pScrPix = (*pScreen->GetWindowPixmap)(pWin);
-
- cfbDoBitbltCopy((DrawablePtr)pPixmap, (DrawablePtr) pScrPix,
- GXcopy, prgnRestore, pPtsInit, ~0L);
-
- DEALLOCATE_LOCAL (pPtsInit);
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbcmap.c b/nx-X11/programs/Xserver/cfb/cfbcmap.c
deleted file mode 100644
index a7777eda8..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbcmap.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/* $Xorg: cfbcmap.c,v 1.3 2000/08/17 19:48:13 cpqbld Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-/* $XFree86: xc/programs/Xserver/cfb/cfbcmap.c,v 3.12 2000/02/12 03:39:23 dawes Exp $ */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "scrnintstr.h"
-#include "colormapst.h"
-#include "resource.h"
-#include "micmap.h"
-#include "cfb.h"
-
-int
-cfbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps)
-{
- return miListInstalledColormaps(pScreen, pmaps);
-}
-
-void
-cfbInstallColormap(ColormapPtr pmap)
-{
- miInstallColormap(pmap);
-}
-
-void
-cfbUninstallColormap(ColormapPtr pmap)
-{
- miUninstallColormap(pmap);
-}
-
-void
-cfbResolveColor(unsigned short *pred,
- unsigned short *pgreen,
- unsigned short *pblue,
- VisualPtr pVisual)
-{
- miResolveColor(pred, pgreen, pblue, pVisual);
-}
-
-Bool
-cfbInitializeColormap(ColormapPtr pmap)
-{
- return miInitializeColormap(pmap);
-}
-
-int
-cfbExpandDirectColors (ColormapPtr pmap, int ndef,
- xColorItem *indefs, xColorItem *outdefs)
-{
- return miExpandDirectColors(pmap, ndef, indefs, outdefs);
-}
-
-Bool
-cfbCreateDefColormap(ScreenPtr pScreen)
-{
- return miCreateDefColormap(pScreen);
-}
-
-void
-cfbClearVisualTypes(void)
-{
- miClearVisualTypes();
-}
-
-Bool
-cfbSetVisualTypes (int depth, int visuals, int bitsPerRGB)
-{
- return miSetVisualTypes(depth, visuals, bitsPerRGB, -1);
-}
-
-/*
- * Given a list of formats for a screen, create a list
- * of visuals and depths for the screen which coorespond to
- * the set which can be used with this version of cfb.
- */
-
-Bool
-cfbInitVisuals (VisualPtr *visualp,
- DepthPtr *depthp,
- int *nvisualp,
- int *ndepthp,
- int *rootDepthp,
- VisualID *defaultVisp,
- unsigned long sizes,
- int bitsPerRGB)
-{
- return miInitVisuals(visualp, depthp, nvisualp, ndepthp, rootDepthp,
- defaultVisp, sizes, bitsPerRGB, -1);
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbcppl.c b/nx-X11/programs/Xserver/cfb/cfbcppl.c
deleted file mode 100644
index 037a516f2..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbcppl.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
- * $TOG: cfb8cppl.c /main/16 1998/02/09 14:04:13 kaleb $
- *
-Copyright 1990, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-/* $XFree86: xc/programs/Xserver/cfb/cfbcppl.c,v 1.6 2001/12/14 19:59:22 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "cfb.h"
-#if PSZ == 8
-#undef PSZ /* for maskbits.h */
-#include "maskbits.h"
-#define PSZ 8
-#include "mergerop.h"
-#else /* PSZ==8 */
-#include "cfbtab.h" /* provides starttab, endttab, partmasks */
-#endif /* PSZ==8 */
-
-
-void
-cfbCopyImagePlane(
- DrawablePtr pSrcDrawable,
- DrawablePtr pDstDrawable,
- int rop,
- RegionPtr prgnDst,
- DDXPointPtr pptSrc,
- unsigned long planemask)
-{
- /* note: there must be some sort of trick behind,
- passing a planemask value with all bits set
- whilst using the current planemask for the bitPlane value. */
-#if PSZ == 8
- cfbCopyPlane8to1 (pSrcDrawable, pDstDrawable, rop, prgnDst, pptSrc,
- (unsigned long) ~0L, planemask);
-#endif
-#if PSZ == 16
- cfbCopyPlane16to1 (pSrcDrawable, pDstDrawable, rop, prgnDst, pptSrc,
- (unsigned long) ~0L, planemask);
-#endif
-#if PSZ == 24
- cfbCopyPlane24to1 (pSrcDrawable, pDstDrawable, rop, prgnDst, pptSrc,
- (unsigned long) ~0L, planemask);
-#endif
-#if PSZ == 32
- cfbCopyPlane32to1 (pSrcDrawable, pDstDrawable, rop, prgnDst, pptSrc,
- (unsigned long) ~0L, planemask);
-#endif
-}
-
-#if PSZ == 8
-
-#if BITMAP_BIT_ORDER == MSBFirst
-#define LeftMost (MFB_PPW-1)
-#define StepBit(bit, inc) ((bit) -= (inc))
-#else
-#define LeftMost 0
-#define StepBit(bit, inc) ((bit) += (inc))
-#endif
-
-#define GetBits(psrc, nBits, curBit, bitPos, bits) {\
- bits = 0; \
- while (nBits--) \
- { \
- bits |= (PixelType)(((*psrc++ >> bitPos) & 1)) << curBit; \
- StepBit (curBit, 1); \
- } \
-}
-
-void
-cfbCopyPlane8to1(
- DrawablePtr pSrcDrawable,
- DrawablePtr pDstDrawable,
- int rop,
- RegionPtr prgnDst,
- DDXPointPtr pptSrc,
- unsigned long planemask,
- unsigned long bitPlane)
-{
- int srcx, srcy, dstx, dsty, width, height;
- unsigned char *psrcBase;
- PixelType *pdstBase;
- int widthSrc, widthDst;
- unsigned char *psrcLine;
- PixelType *pdstLine;
- register unsigned char *psrc;
- register int i;
- register int curBit;
- register int bitPos;
- register CfbBits bits;
- register PixelType *pdst;
- PixelType startmask, endmask;
- int niStart = 0, niEnd = 0;
- int bitStart = 0, bitEnd = 0;
- int nl, nlMiddle;
- int nbox;
- BoxPtr pbox;
- MROP_DECLARE()
-
- if (!(planemask & 1))
- return;
-
- if (rop != GXcopy)
- MROP_INITIALIZE (rop, planemask);
-
- cfbGetByteWidthAndPointer (pSrcDrawable, widthSrc, psrcBase)
-
- mfbGetPixelWidthAndPointer (pDstDrawable, widthDst, pdstBase)
-
- bitPos = ffs (bitPlane) - 1;
-
- nbox = REGION_NUM_RECTS(prgnDst);
- pbox = REGION_RECTS(prgnDst);
- while (nbox--)
- {
- dstx = pbox->x1;
- dsty = pbox->y1;
- srcx = pptSrc->x;
- srcy = pptSrc->y;
- width = pbox->x2 - pbox->x1;
- height = pbox->y2 - pbox->y1;
- pbox++;
- pptSrc++;
- psrcLine = psrcBase + srcy * widthSrc + srcx;
- pdstLine = mfbScanline(pdstBase, dstx, dsty, widthDst);
- dstx &= MFB_PIM;
- if (dstx + width <= MFB_PPW)
- {
- maskpartialbits(dstx, width, startmask);
- nlMiddle = 0;
- endmask = 0;
- }
- else
- {
- maskbits (dstx, width, startmask, endmask, nlMiddle);
- }
- if (startmask)
- {
- niStart = min(MFB_PPW - dstx, width);
- bitStart = LeftMost;
- StepBit (bitStart, dstx);
- }
- if (endmask)
- {
- niEnd = (dstx + width) & MFB_PIM;
- bitEnd = LeftMost;
- }
- if (rop == GXcopy)
- {
- while (height--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- psrcLine += widthSrc;
- mfbScanlineInc(pdstLine, widthDst);
- if (startmask)
- {
- i = niStart;
- curBit = bitStart;
- GetBits (psrc, i, curBit, bitPos, bits);
- *pdst = (*pdst & ~startmask) | bits;
- pdst++;
- }
- nl = nlMiddle;
- while (nl--)
- {
- i = MFB_PPW;
- curBit = LeftMost;
- GetBits (psrc, i, curBit, bitPos, bits);
- *pdst++ = bits;
- }
- if (endmask)
- {
- i = niEnd;
- curBit = bitEnd;
- GetBits (psrc, i, curBit, bitPos, bits);
- *pdst = (*pdst & ~endmask) | bits;
- }
- }
- }
- else
- {
- while (height--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- psrcLine += widthSrc;
- mfbScanlineInc(pdstLine, widthDst);
- if (startmask)
- {
- i = niStart;
- curBit = bitStart;
- GetBits (psrc, i, curBit, bitPos, bits);
- *pdst = MROP_MASK(bits, *pdst, startmask);
- pdst++;
- }
- nl = nlMiddle;
- while (nl--)
- {
- i = MFB_PPW;
- curBit = LeftMost;
- GetBits (psrc, i, curBit, bitPos, bits);
- *pdst = MROP_SOLID(bits, *pdst);
- pdst++;
- }
- if (endmask)
- {
- i = niEnd;
- curBit = bitEnd;
- GetBits (psrc, i, curBit, bitPos, bits);
- *pdst = MROP_MASK (bits, *pdst, endmask);
- }
- }
- }
- }
-}
-
-#else /* PSZ == 8 */
-
-#define mfbmaskbits(x, w, startmask, endmask, nlw) \
- startmask = mfbGetstarttab((x)&0x1f); \
- endmask = mfbGetendtab(((x)+(w)) & 0x1f); \
- if (startmask) \
- nlw = (((w) - (32 - ((x)&0x1f))) >> 5); \
- else \
- nlw = (w) >> 5;
-
-#define mfbmaskpartialbits(x, w, mask) \
- mask = mfbGetpartmasks((x)&0x1f,(w)&0x1f);
-
-#define LeftMost 0
-#define StepBit(bit, inc) ((bit) += (inc))
-
-
-#if PSZ == 24
-#define GetBits(psrc, nBits, curBit, bitPos, bits) {\
- bits = 0; \
- while (nBits--) \
- { \
- if (bitPos < 8) \
- { \
- bits |= ((*psrc++ >> bitPos) & 1) << curBit; \
- psrc += 2; \
- } \
- else if (bitPos < 16) \
- { \
- psrc++; \
- bits |= ((*psrc++ >> (bitPos - 8)) & 1) << curBit; \
- psrc++; \
- } \
- else \
- { \
- psrc += 2; \
- bits |= ((*psrc++ >> (bitPos - 16)) & 1) << curBit; \
- } \
- StepBit (curBit, 1); \
- } \
-}
-#else
-#define GetBits(psrc, nBits, curBit, bitPos, bits) {\
- bits = 0; \
- while (nBits--) \
- { \
- bits |= ((*psrc++ >> bitPos) & 1) << curBit; \
- StepBit (curBit, 1); \
- } \
-}
-#endif
-
-void
-#if PSZ == 16
-cfbCopyPlane16to1
-#endif
-#if PSZ == 24
-cfbCopyPlane24to1
-#endif
-#if PSZ == 32
-cfbCopyPlane32to1
-#endif
-(
- DrawablePtr pSrcDrawable,
- DrawablePtr pDstDrawable,
- int rop,
- RegionPtr prgnDst,
- DDXPointPtr pptSrc,
- unsigned long planemask,
- unsigned long bitPlane)
-{
- int srcx, srcy, dstx, dsty, width, height;
- CfbBits *psrcBase;
- CfbBits *pdstBase;
- int widthSrc, widthDst;
-#if PSZ == 16
- unsigned short *psrcLine;
- register unsigned short *psrc;
-#endif
-#if PSZ == 24
- unsigned char *psrcLine;
- register unsigned char *psrc;
-#endif
-#if PSZ == 32
- unsigned int *psrcLine;
- register unsigned int *psrc;
-#endif
- unsigned int *pdstLine;
- register unsigned int *pdst;
- register int i;
- register int curBit;
- register int bitPos;
- register unsigned int bits;
- unsigned int startmask = 0, endmask = 0;
- int niStart = 0, niEnd = 0;
- int bitStart = 0, bitEnd = 0;
- int nl, nlMiddle;
- int nbox;
- BoxPtr pbox;
- int result;
-
-
- if (!(planemask & 1))
- return;
-
- /* must explicitly ask for "int" widths, as code below expects it */
- /* on some machines (Alpha), "long" and "int" are not the same size */
- cfbGetTypedWidthAndPointer (pSrcDrawable, widthSrc, psrcBase, int, CfbBits)
- cfbGetTypedWidthAndPointer (pDstDrawable, widthDst, pdstBase, int, CfbBits)
-
-#if PSZ == 16
- widthSrc <<= 1;
-#endif
-#if PSZ == 24
- widthSrc <<= 2;
-#endif
-
- bitPos = ffs (bitPlane) - 1;
-
- nbox = REGION_NUM_RECTS(prgnDst);
- pbox = REGION_RECTS(prgnDst);
- while (nbox--)
- {
- dstx = pbox->x1;
- dsty = pbox->y1;
- srcx = pptSrc->x;
- srcy = pptSrc->y;
- width = pbox->x2 - pbox->x1;
- height = pbox->y2 - pbox->y1;
- pbox++;
- pptSrc++;
-#if PSZ == 16
- psrcLine = (unsigned short *)psrcBase + srcy * widthSrc + srcx;
-#endif
-#if PSZ == 24
- psrcLine = (unsigned char *)psrcBase + srcy * widthSrc + srcx * 3;
-#endif
-#if PSZ == 32
- psrcLine = (unsigned int *)psrcBase + srcy * widthSrc + srcx;
-#endif
- pdstLine = (unsigned int *)pdstBase + dsty * widthDst + (dstx >> 5);
- if (dstx + width <= 32)
- {
- mfbmaskpartialbits(dstx, width, startmask);
- nlMiddle = 0;
- endmask = 0;
- }
- else
- {
- mfbmaskbits (dstx, width, startmask, endmask, nlMiddle);
- }
- if (startmask)
- {
- niStart = 32 - (dstx & 0x1f);
- bitStart = LeftMost;
- StepBit (bitStart, (dstx & 0x1f));
- }
- if (endmask)
- {
- niEnd = (dstx + width) & 0x1f;
- bitEnd = LeftMost;
- }
- if (rop == GXcopy)
- {
- while (height--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- psrcLine += widthSrc;
- pdstLine += widthDst;
- if (startmask)
- {
- i = niStart;
- curBit = bitStart;
- GetBits (psrc, i, curBit, bitPos, bits);
-
- *pdst = (*pdst & ~startmask) | bits;
- pdst++;
- }
- nl = nlMiddle;
- while (nl--)
- {
- i = 32;
- curBit = LeftMost;
- GetBits (psrc, i, curBit, bitPos, bits);
- *pdst++ = bits;
- }
- if (endmask)
- {
- i = niEnd;
- curBit = bitEnd;
- GetBits (psrc, i, curBit, bitPos, bits);
-
- *pdst = (*pdst & ~endmask) | bits;
- }
- }
- }
- else
- {
- while (height--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- psrcLine += widthSrc;
- pdstLine += widthDst;
- if (startmask)
- {
- i = niStart;
- curBit = bitStart;
- GetBits (psrc, i, curBit, bitPos, bits);
- DoRop (result, rop, bits, *pdst);
-
- *pdst = (*pdst & ~startmask) |
- (result & startmask);
- pdst++;
- }
- nl = nlMiddle;
- while (nl--)
- {
- i = 32;
- curBit = LeftMost;
- GetBits (psrc, i, curBit, bitPos, bits);
- DoRop (result, rop, bits, *pdst);
- *pdst = result;
- ++pdst;
- }
- if (endmask)
- {
- i = niEnd;
- curBit = bitEnd;
- GetBits (psrc, i, curBit, bitPos, bits);
- DoRop (result, rop, bits, *pdst);
-
- *pdst = (*pdst & ~endmask) |
- (result & endmask);
- }
- }
- }
- }
-}
-
-#endif /* PSZ == 8 */
diff --git a/nx-X11/programs/Xserver/cfb/cfbfillarc.c b/nx-X11/programs/Xserver/cfb/cfbfillarc.c
deleted file mode 100644
index 6fb6bb728..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbfillarc.c
+++ /dev/null
@@ -1,374 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbfillarc.c,v 3.6tsi Exp $ */
-/************************************************************
-
-Copyright 1989, 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.
-
-********************************************************/
-
-/* $Xorg: cfbfillarc.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "mifillarc.h"
-#include "cfbrrop.h"
-#include "mi.h"
-
-/* gcc 1.35 is stupid */
-#if defined(__GNUC__) && __GNUC__ < 2 && defined(mc68020)
-#define STUPID volatile
-#else
-#define STUPID
-#endif
-
-static void
-RROP_NAME(cfbFillEllipseSolid)(
- DrawablePtr pDraw,
- GCPtr pGC,
- xArc *arc)
-{
- STUPID int x, y, e;
- STUPID int yk, xk, ym, xm, dx, dy, xorg, yorg;
- miFillArcRec info;
-#if PSZ == 24
- unsigned char *addrlt, *addrlb;
-#else
- CfbBits *addrlt, *addrlb;
-#endif
- register CfbBits *addrl;
- register int n;
- int nlwidth;
- RROP_DECLARE
- register int xpos;
- register int slw;
- CfbBits startmask, endmask;
- int nlmiddle;
-#if PSZ == 24
- register int pidx;
- int xpos3;
-#endif
-
-#if PSZ == 24
- cfbGetByteWidthAndPointer (pDraw, nlwidth, addrlt)
-#else
- cfbGetLongWidthAndPointer (pDraw, nlwidth, addrlt)
-#endif
-
- RROP_FETCH_GC(pGC);
- miFillArcSetup(arc, &info);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrlb = addrlt;
- addrlt += nlwidth * (yorg - y);
- addrlb += nlwidth * (yorg + y + dy);
- while (y)
- {
- addrlt += nlwidth;
- addrlb -= nlwidth;
- MIFILLARCSTEP(slw);
- if (!slw)
- continue;
- xpos = xorg - x;
-#if PSZ == 24
- xpos3 = (xpos * 3) & ~0x03;
- addrl = (CfbBits *)((char *)addrlt + xpos3);
- if (slw == 1){
- RROP_SOLID24(addrl, xpos);
- if (miFillArcLower(slw)){
- addrl = (CfbBits *)((char *)addrlb + xpos3);
- RROP_SOLID24(addrl, xpos);
- }
- continue;
- }
- maskbits(xpos, slw, startmask, endmask, nlmiddle);
- xpos &= 3;
- pidx = xpos;
- if (startmask){
- RROP_SOLID_MASK(addrl, startmask, pidx-1);
- addrl++;
- if (pidx == 3)
- pidx = 0;
- }
- n = nlmiddle;
- while (--n >= 0){
- RROP_SOLID(addrl, pidx);
- addrl++;
- if (++pidx == 3)
- pidx = 0;
- }
- if (endmask)
- RROP_SOLID_MASK(addrl, endmask, pidx);
- if (!miFillArcLower(slw))
- continue;
- addrl = (CfbBits *)((char *)addrlb + xpos3);
- pidx = xpos;
- if (startmask){
- RROP_SOLID_MASK(addrl, startmask, pidx-1);
- addrl++;
- if (pidx == 3)
- pidx = 0;
- }
- n = nlmiddle;
- while (--n >= 0){
- RROP_SOLID(addrl, pidx);
- addrl++;
- if (++pidx == 3)
- pidx = 0;
- }
- if (endmask)
- RROP_SOLID_MASK(addrl, endmask, pidx);
-#else /* PSZ == 24 */
- addrl = addrlt + (xpos >> PWSH);
- if (((xpos & PIM) + slw) <= PPW)
- {
- maskpartialbits(xpos, slw, startmask);
- RROP_SOLID_MASK(addrl,startmask);
- if (miFillArcLower(slw))
- {
- addrl = addrlb + (xpos >> PWSH);
- RROP_SOLID_MASK(addrl, startmask);
- }
- continue;
- }
- maskbits(xpos, slw, startmask, endmask, nlmiddle);
- if (startmask)
- {
- RROP_SOLID_MASK(addrl, startmask);
- addrl++;
- }
- n = nlmiddle;
- RROP_SPAN(addrl,n)
-
- if (endmask)
- RROP_SOLID_MASK(addrl, endmask);
- if (!miFillArcLower(slw))
- continue;
- addrl = addrlb + (xpos >> PWSH);
- if (startmask)
- {
- RROP_SOLID_MASK(addrl, startmask);
- addrl++;
- }
- n = nlmiddle;
- RROP_SPAN(addrl, n);
- if (endmask)
- RROP_SOLID_MASK(addrl, endmask);
-#endif /* PSZ == 24 */
- }
- RROP_UNDECLARE
-}
-
-#if PSZ == 24
-#define FILLSPAN(xl,xr,addr) \
- if (xr >= xl){ \
- n = xr - xl + 1; \
- addrl = (CfbBits *)((char *)addr + ((xl * 3) & ~0x03)); \
- if (n <= 1){ \
- if (n) \
- RROP_SOLID24(addrl, xl); \
- } else { \
- maskbits(xl, n, startmask, endmask, n); \
- pidx = xl & 3; \
- if (startmask){ \
- RROP_SOLID_MASK(addrl, startmask, pidx-1); \
- addrl++; \
- if (pidx == 3) \
- pidx = 0; \
- } \
- while (--n >= 0){ \
- RROP_SOLID(addrl, pidx); \
- addrl++; \
- if (++pidx == 3) \
- pidx = 0; \
- } \
- if (endmask) \
- RROP_SOLID_MASK(addrl, endmask, pidx); \
- } \
- }
-#else /* PSZ == 24 */
-#define FILLSPAN(xl,xr,addr) \
- if (xr >= xl) \
- { \
- n = xr - xl + 1; \
- addrl = addr + (xl >> PWSH); \
- if (((xl & PIM) + n) <= PPW) \
- { \
- maskpartialbits(xl, n, startmask); \
- RROP_SOLID_MASK(addrl, startmask); \
- } \
- else \
- { \
- maskbits(xl, n, startmask, endmask, n); \
- if (startmask) \
- { \
- RROP_SOLID_MASK(addrl, startmask); \
- addrl++; \
- } \
- while (n--) \
- { \
- RROP_SOLID(addrl); \
- ++addrl; \
- } \
- if (endmask) \
- RROP_SOLID_MASK(addrl, endmask); \
- } \
- }
-#endif /* PSZ == 24 */
-
-#define FILLSLICESPANS(flip,addr) \
- if (!flip) \
- { \
- FILLSPAN(xl, xr, addr); \
- } \
- else \
- { \
- xc = xorg - x; \
- FILLSPAN(xc, xr, addr); \
- xc += slw - 1; \
- FILLSPAN(xl, xc, addr); \
- }
-
-static void
-RROP_NAME(cfbFillArcSliceSolid)(
- DrawablePtr pDraw,
- GCPtr pGC,
- xArc *arc)
-{
- int yk, xk, ym, xm, dx, dy, xorg, yorg, slw;
- register int x, y, e;
- miFillArcRec info;
- miArcSliceRec slice;
- int xl, xr, xc;
-#if PSZ == 24
- unsigned char *addrlt, *addrlb;
-#else
- CfbBits *addrlt, *addrlb;
-#endif
- register CfbBits *addrl;
- register int n;
- int nlwidth;
- RROP_DECLARE
- CfbBits startmask, endmask;
-#if PSZ == 24
- register int pidx;
-#endif /* PSZ == 24 */
-
-#if PSZ == 24
- cfbGetByteWidthAndPointer (pDraw, nlwidth, addrlt)
-#else
- cfbGetLongWidthAndPointer (pDraw, nlwidth, addrlt)
-#endif
-
- RROP_FETCH_GC(pGC);
- miFillArcSetup(arc, &info);
- miFillArcSliceSetup(arc, &slice, pGC);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrlb = addrlt;
- addrlt += nlwidth * (yorg - y);
- addrlb += nlwidth * (yorg + y + dy);
- slice.edge1.x += pDraw->x;
- slice.edge2.x += pDraw->x;
- while (y > 0)
- {
- addrlt += nlwidth;
- addrlb -= nlwidth;
- MIFILLARCSTEP(slw);
- MIARCSLICESTEP(slice.edge1);
- MIARCSLICESTEP(slice.edge2);
- if (miFillSliceUpper(slice))
- {
- MIARCSLICEUPPER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_top, addrlt);
- }
- if (miFillSliceLower(slice))
- {
- MIARCSLICELOWER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_bot, addrlb);
- }
- }
- RROP_UNDECLARE
-}
-
-void
-RROP_NAME(cfbPolyFillArcSolid) (pDraw, pGC, narcs, parcs)
- DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- register xArc *arc;
- register int i;
- int x2, y2;
- BoxRec box;
- RegionPtr cclip;
-
- cclip = cfbGetCompositeClip(pGC);
- for (arc = parcs, i = narcs; --i >= 0; arc++)
- {
- if (miFillArcEmpty(arc))
- continue;
- if (miCanFillArc(arc))
- {
- box.x1 = arc->x + pDraw->x;
- box.y1 = arc->y + pDraw->y;
- /*
- * Because box.x2 and box.y2 get truncated to 16 bits, and the
- * RECT_IN_REGION test treats the resulting number as a signed
- * integer, the RECT_IN_REGION test alone can go the wrong way.
- * This can result in a server crash because the rendering
- * routines in this file deal directly with cpu addresses
- * of pixels to be stored, and do not clip or otherwise check
- * that all such addresses are within their respective pixmaps.
- * So we only allow the RECT_IN_REGION test to be used for
- * values that can be expressed correctly in a signed short.
- */
- x2 = box.x1 + (int)arc->width + 1;
- box.x2 = x2;
- y2 = box.y1 + (int)arc->height + 1;
- box.y2 = y2;
- if ( (x2 <= MAXSHORT) && (y2 <= MAXSHORT) &&
- (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) )
- {
- if ((arc->angle2 >= FULLCIRCLE) ||
- (arc->angle2 <= -FULLCIRCLE))
- RROP_NAME(cfbFillEllipseSolid)(pDraw, pGC, arc);
- else
- RROP_NAME(cfbFillArcSliceSolid)(pDraw, pGC, arc);
- continue;
- }
- }
- miPolyFillArc(pDraw, pGC, 1, arc);
- }
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbfillrct.c b/nx-X11/programs/Xserver/cfb/cfbfillrct.c
deleted file mode 100644
index 657865114..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbfillrct.c
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * Fill rectangles.
- */
-/* $XFree86: xc/programs/Xserver/cfb/cfbfillrct.c,v 3.7 2001/01/17 22:36:35 dawes Exp $ */
-
-/*
-
-Copyright 1989, 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.
-*/
-
-/* $Xorg: cfbfillrct.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "mi.h"
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "mergerop.h"
-
-
-void
-cfbFillBoxTileOdd (pDrawable, n, rects, tile, xrot, yrot)
- DrawablePtr pDrawable;
- int n;
- BoxPtr rects;
- PixmapPtr tile;
- int xrot, yrot;
-{
-#if PSZ == 24
- if (tile->drawable.width & 3)
-#else
- if (tile->drawable.width & PIM)
-#endif
- cfbFillBoxTileOddCopy (pDrawable, n, rects, tile, xrot, yrot, GXcopy, ~0L);
- else
- cfbFillBoxTile32sCopy (pDrawable, n, rects, tile, xrot, yrot, GXcopy, ~0L);
-}
-
-void
-cfbFillRectTileOdd (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox;
- BoxPtr pBox;
-{
- int xrot, yrot;
- void (*fill)(DrawablePtr, int, BoxPtr, PixmapPtr, int, int, int, unsigned long);
-
- xrot = pDrawable->x + pGC->patOrg.x;
- yrot = pDrawable->y + pGC->patOrg.y;
-#if PSZ == 24
- if (pGC->tile.pixmap->drawable.width & 3)
-#else
- if (pGC->tile.pixmap->drawable.width & PIM)
-#endif
- {
- fill = cfbFillBoxTileOddGeneral;
- if ((pGC->planemask & PMSK) == PMSK)
- {
- if (pGC->alu == GXcopy)
- fill = cfbFillBoxTileOddCopy;
- }
- }
- else
- {
- fill = cfbFillBoxTile32sGeneral;
- if ((pGC->planemask & PMSK) == PMSK)
- {
- if (pGC->alu == GXcopy)
- fill = cfbFillBoxTile32sCopy;
- }
- }
- (*fill) (pDrawable, nBox, pBox, pGC->tile.pixmap, xrot, yrot, pGC->alu, pGC->planemask);
-}
-
-#define NUM_STACK_RECTS 1024
-
-void
-cfbPolyFillRect(pDrawable, pGC, nrectFill, prectInit)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int nrectFill; /* number of rectangles to fill */
- xRectangle *prectInit; /* Pointer to first rectangle to fill */
-{
- xRectangle *prect;
- RegionPtr prgnClip;
- register BoxPtr pbox;
- register BoxPtr pboxClipped;
- BoxPtr pboxClippedBase;
- BoxPtr pextent;
- BoxRec stackRects[NUM_STACK_RECTS];
- cfbPrivGC *priv;
- int numRects;
- void (*BoxFill)(DrawablePtr, GCPtr, int, BoxPtr);
- int n;
- int xorg, yorg;
-
-#if PSZ != 8
- if ((pGC->fillStyle == FillStippled) ||
- (pGC->fillStyle == FillOpaqueStippled)) {
- miPolyFillRect(pDrawable, pGC, nrectFill, prectInit);
- return;
- }
-#endif
-
- priv = cfbGetGCPrivate(pGC);
- prgnClip = pGC->pCompositeClip;
-
- BoxFill = 0;
- switch (pGC->fillStyle)
- {
- case FillSolid:
- switch (priv->rop) {
- case GXcopy:
- BoxFill = cfbFillRectSolidCopy;
- break;
- case GXxor:
- BoxFill = cfbFillRectSolidXor;
- break;
- default:
- BoxFill = cfbFillRectSolidGeneral;
- break;
- }
- break;
- case FillTiled:
- if (!pGC->pRotatedPixmap)
- BoxFill = cfbFillRectTileOdd;
- else
- {
- if (pGC->alu == GXcopy && (pGC->planemask & PMSK) == PMSK)
- BoxFill = cfbFillRectTile32Copy;
- else
- BoxFill = cfbFillRectTile32General;
- }
- break;
-#if PSZ == 8
- case FillStippled:
- if (!pGC->pRotatedPixmap)
- BoxFill = cfb8FillRectStippledUnnatural;
- else
- BoxFill = cfb8FillRectTransparentStippled32;
- break;
- case FillOpaqueStippled:
- if (!pGC->pRotatedPixmap)
- BoxFill = cfb8FillRectStippledUnnatural;
- else
- BoxFill = cfb8FillRectOpaqueStippled32;
- break;
-#endif
- }
- prect = prectInit;
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- if (xorg || yorg)
- {
- prect = prectInit;
- n = nrectFill;
- while(n--)
- {
- prect->x += xorg;
- prect->y += yorg;
- prect++;
- }
- }
-
- prect = prectInit;
-
- numRects = REGION_NUM_RECTS(prgnClip) * nrectFill;
- if (numRects > NUM_STACK_RECTS)
- {
- pboxClippedBase = (BoxPtr)ALLOCATE_LOCAL(numRects * sizeof(BoxRec));
- if (!pboxClippedBase)
- return;
- }
- else
- pboxClippedBase = stackRects;
-
- pboxClipped = pboxClippedBase;
-
- if (REGION_NUM_RECTS(prgnClip) == 1)
- {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_RECTS(prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--)
- {
- if ((pboxClipped->x1 = prect->x) < x1)
- pboxClipped->x1 = x1;
-
- if ((pboxClipped->y1 = prect->y) < y1)
- pboxClipped->y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- pboxClipped->x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- pboxClipped->y2 = by2;
-
- prect++;
- if ((pboxClipped->x1 < pboxClipped->x2) &&
- (pboxClipped->y1 < pboxClipped->y2))
- {
- pboxClipped++;
- }
- }
- }
- else
- {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_EXTENTS(pGC->pScreen, prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--)
- {
- BoxRec box;
-
- if ((box.x1 = prect->x) < x1)
- box.x1 = x1;
-
- if ((box.y1 = prect->y) < y1)
- box.y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- box.x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- box.y2 = by2;
-
- prect++;
-
- if ((box.x1 >= box.x2) || (box.y1 >= box.y2))
- continue;
-
- n = REGION_NUM_RECTS (prgnClip);
- pbox = REGION_RECTS(prgnClip);
-
- /* clip the rectangle to each box in the clip region
- this is logically equivalent to calling Intersect()
- */
- while(n--)
- {
- pboxClipped->x1 = max(box.x1, pbox->x1);
- pboxClipped->y1 = max(box.y1, pbox->y1);
- pboxClipped->x2 = min(box.x2, pbox->x2);
- pboxClipped->y2 = min(box.y2, pbox->y2);
- pbox++;
-
- /* see if clipping left anything */
- if(pboxClipped->x1 < pboxClipped->x2 &&
- pboxClipped->y1 < pboxClipped->y2)
- {
- pboxClipped++;
- }
- }
- }
- }
- if (pboxClipped != pboxClippedBase)
- (*BoxFill) (pDrawable, pGC,
- pboxClipped-pboxClippedBase, pboxClippedBase);
- if (pboxClippedBase != stackRects)
- DEALLOCATE_LOCAL(pboxClippedBase);
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbfillsp.c b/nx-X11/programs/Xserver/cfb/cfbfillsp.c
deleted file mode 100644
index efb462b6c..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbfillsp.c
+++ /dev/null
@@ -1,1006 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbfillsp.c,v 3.7tsi Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* $Xorg: cfbfillsp.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "cfb.h"
-#include "cfbmskbits.h"
-
-#include "mergerop.h"
-
-#if PSZ == 8
-#include "cfb8bit.h"
-#endif
-
-#define MFB_CONSTS_ONLY
-#include "maskbits.h"
-
-#include "mi.h"
-#include "mispans.h"
-
-/* scanline filling for color frame buffer
- written by drewry, oct 1986 modified by smarks
- changes for compatibility with Little-endian systems Jul 1987; MIT:yba.
-
- these routines all clip. they assume that anything that has called
-them has already translated the points (i.e. pGC->miTranslate is
-non-zero, which is howit gets set in cfbCreateGC().)
-
- the number of new scnalines created by clipping ==
-MaxRectsPerBand * nSpans.
-
- FillSolid is overloaded to be used for OpaqueStipple as well,
-if fgPixel == bgPixel.
-Note that for solids, PrivGC.rop == PrivGC.ropOpStip
-
-
- FillTiled is overloaded to be used for OpaqueStipple, if
-fgPixel != bgPixel. based on the fill style, it uses
-{RotatedTile, gc.alu} or {RotatedStipple, PrivGC.ropOpStip}
-*/
-
-#ifdef notdef
-#include <stdio.h>
-static
-dumpspans(n, ppt, pwidth)
- int n;
- DDXPointPtr ppt;
- int *pwidth;
-{
- fprintf(stderr,"%d spans\n", n);
- while (n--) {
- fprintf(stderr, "[%d,%d] %d\n", ppt->x, ppt->y, *pwidth);
- ppt++;
- pwidth++;
- }
- fprintf(stderr, "\n");
-}
-#endif
-
-/* Fill spans with tiles that aren't 32 bits wide */
-void
-cfbUnnaturalTileFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
-DrawablePtr pDrawable;
-GC *pGC;
-int nInit; /* number of spans to fill */
-DDXPointPtr pptInit; /* pointer to list of start points */
-int *pwidthInit; /* pointer to list of n widths */
-int fSorted;
-{
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- void (*fill)(DrawablePtr, int, DDXPointPtr, int *, PixmapPtr, int, int, int, unsigned long);
- int xrot, yrot;
-
- if (!(pGC->planemask))
- return;
-
-#if PSZ == 24
- if (pGC->tile.pixmap->drawable.width & 3)
-#else
- if (pGC->tile.pixmap->drawable.width & PIM)
-#endif
- {
- fill = cfbFillSpanTileOddGeneral;
- if ((pGC->planemask & PMSK) == PMSK)
- {
- if (pGC->alu == GXcopy)
- fill = cfbFillSpanTileOddCopy;
- }
- }
- else
- {
- fill = cfbFillSpanTile32sGeneral;
- if ((pGC->planemask & PMSK) == PMSK)
- {
- if (pGC->alu == GXcopy)
- fill = cfbFillSpanTile32sCopy;
- }
- }
- n = nInit * miFindMaxBand( cfbGetCompositeClip(pGC) );
- if ( n == 0 )
- return;
- pwidth = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- ppt = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!ppt || !pwidth)
- {
- if (ppt) DEALLOCATE_LOCAL(ppt);
- if (pwidth) DEALLOCATE_LOCAL(pwidth);
- return;
- }
- n = miClipSpans( cfbGetCompositeClip(pGC),
- pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- xrot = pDrawable->x + pGC->patOrg.x;
- yrot = pDrawable->y + pGC->patOrg.y;
-
- (*fill) (pDrawable, n, ppt, pwidth, pGC->tile.pixmap, xrot, yrot, pGC->alu, pGC->planemask);
-
- DEALLOCATE_LOCAL(ppt);
- DEALLOCATE_LOCAL(pwidth);
-}
-
-#if PSZ == 8
-
-void
-cfbUnnaturalStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
-DrawablePtr pDrawable;
-GC *pGC;
-int nInit; /* number of spans to fill */
-DDXPointPtr pptInit; /* pointer to list of start points */
-int *pwidthInit; /* pointer to list of n widths */
-int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- DDXPointPtr ppt; /* pointer to list of start points */
- int *pwidth; /* pointer to list of n widths */
- int *pwidthFree;/* copies of the pointers to free */
- DDXPointPtr pptFree;
- CfbBits *pdstBase; /* pointer to start of bitmap */
- int nlwDst; /* width in longwords of bitmap */
- register CfbBits *pdst; /* pointer to current word in bitmap */
- PixmapPtr pStipple; /* pointer to stipple we want to fill with */
- int nlw;
- int x, y, w, xrem, xSrc, ySrc;
- int stwidth, stippleWidth;
- int stippleHeight;
- register CfbBits bits, inputBits;
- register int partBitsLeft;
- int nextPartBits;
- int bitsLeft, bitsWhole;
- CfbBits *srcTemp, *srcStart;
- CfbBits *psrcBase;
- CfbBits startmask, endmask;
-
- if (pGC->fillStyle == FillStippled)
- cfb8CheckStipple (pGC->alu, pGC->fgPixel, pGC->planemask);
- else
- cfb8CheckOpaqueStipple (pGC->alu, pGC->fgPixel, pGC->bgPixel, pGC->planemask);
-
- if (cfb8StippleRRop == GXnoop)
- return;
-
- n = nInit * miFindMaxBand( cfbGetCompositeClip(pGC) );
- if ( n == 0 )
- return;
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
-
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans( cfbGetCompositeClip(pGC),
- pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- /*
- * OK, so what's going on here? We have two Drawables:
- *
- * The Stipple:
- * Depth = 1
- * Width = stippleWidth
- * Words per scanline = stwidth
- * Pointer to pixels = pStipple->devPrivate.ptr
- */
-
- pStipple = pGC->stipple;
-
- stwidth = pStipple->devKind >> PWSH;
- stippleWidth = pStipple->drawable.width;
- stippleHeight = pStipple->drawable.height;
- psrcBase = (CfbBits *) pStipple->devPrivate.ptr;
-
- /*
- * The Target:
- * Depth = PSZ
- * Width = determined from *pwidth
- * Words per scanline = nlwDst
- * Pointer to pixels = addrlBase
- */
-
- cfbGetLongWidthAndPointer (pDrawable, nlwDst, pdstBase)
-
- /* this replaces rotating the stipple. Instead we just adjust the offset
- * at which we start grabbing bits from the stipple.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and xrem always stay within the stipple bounds.
- */
-
- modulus (pGC->patOrg.x, stippleWidth, xSrc);
- xSrc += pDrawable->x - stippleWidth;
- modulus (pGC->patOrg.y, stippleHeight, ySrc);
- ySrc += pDrawable->y - stippleHeight;
-
- bitsWhole = stippleWidth;
-
- while (n--)
- {
- x = ppt->x;
- y = ppt->y;
- ppt++;
- w = *pwidth++;
- pdst = pdstBase + y * nlwDst + (x >> PWSH);
- y = (y - ySrc) % stippleHeight;
- srcStart = psrcBase + y * stwidth;
- xrem = ((x & ~(PGSZB-1)) - xSrc) % stippleWidth;
- srcTemp = srcStart + (xrem >> MFB_PWSH);
- bitsLeft = stippleWidth - (xrem & ~MFB_PIM);
- xrem &= MFB_PIM;
- NextUnnaturalStippleWord
- if (partBitsLeft < xrem)
- FatalError ("cfbUnnaturalStippleFS bad partBitsLeft %d xrem %d",
- partBitsLeft, xrem);
- NextSomeBits (inputBits, xrem);
- partBitsLeft -= xrem;
- if (((x & PIM) + w) <= PPW)
- {
- maskpartialbits (x, w, startmask)
- NextUnnaturalStippleBits
- *pdst = MaskRRopPixels(*pdst,bits,startmask);
- }
- else
- {
- maskbits (x, w, startmask, endmask, nlw);
- nextPartBits = (x & (PGSZB-1)) + w;
- if (nextPartBits < partBitsLeft)
- {
- if (startmask)
- {
- MaskRRopBitGroup(pdst,GetBitGroup(inputBits),startmask)
- pdst++;
- NextBitGroup (inputBits);
- }
- while (nlw--)
- {
- RRopBitGroup (pdst, GetBitGroup (inputBits));
- pdst++;
- NextBitGroup (inputBits);
- }
- if (endmask)
- {
- MaskRRopBitGroup(pdst,GetBitGroup(inputBits),endmask)
- }
- }
- else if (bitsLeft != bitsWhole && nextPartBits < partBitsLeft + bitsLeft)
- {
- NextUnnaturalStippleBitsFast
- if (startmask)
- {
- *pdst = MaskRRopPixels(*pdst,bits,startmask);
- pdst++;
- NextUnnaturalStippleBitsFast
- }
- while (nlw--)
- {
- *pdst = RRopPixels(*pdst,bits);
- pdst++;
- NextUnnaturalStippleBitsFast
- }
- if (endmask)
- *pdst = MaskRRopPixels (*pdst,bits,endmask);
- }
- else
- {
- NextUnnaturalStippleBits
- if (startmask)
- {
- *pdst = MaskRRopPixels(*pdst,bits,startmask);
- pdst++;
- NextUnnaturalStippleBits
- }
- while (nlw--)
- {
- *pdst = RRopPixels(*pdst,bits);
- pdst++;
- NextUnnaturalStippleBits
- }
- if (endmask)
- *pdst = MaskRRopPixels(*pdst,bits,endmask);
- }
- }
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-#else /* PSZ != 8 */
-
-/* Fill spans with stipples that aren't 32 bits wide */
-void
-cfbUnnaturalStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
-DrawablePtr pDrawable;
-GC *pGC;
-int nInit; /* number of spans to fill */
-DDXPointPtr pptInit; /* pointer to list of start points */
-int *pwidthInit; /* pointer to list of n widths */
-int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- int iline; /* first line of tile to use */
- CfbBits *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register CfbBits *pdst; /* pointer to current word in bitmap */
- PixmapPtr pStipple; /* pointer to stipple we want to fill with */
- register int w;
- int width, x, xrem, xSrc, ySrc;
- CfbBits tmpSrc, tmpDst1, tmpDst2;
- int stwidth, stippleWidth;
- CfbBits *psrcS;
- int rop, stiprop = 0;
- int stippleHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- CfbBits fgfill, bgfill;
-
- if (!(pGC->planemask))
- return;
-
- n = nInit * miFindMaxBand( cfbGetCompositeClip(pGC) );
- if ( n == 0 )
- return;
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans( cfbGetCompositeClip(pGC),
- pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
- rop = pGC->alu;
- if (pGC->fillStyle == FillStippled) {
- switch (rop) {
- case GXand:
- case GXcopy:
- case GXnoop:
- case GXor:
- stiprop = rop;
- break;
- default:
- stiprop = rop;
- rop = GXcopy;
- }
- }
- fgfill = PFILL(pGC->fgPixel);
- bgfill = PFILL(pGC->bgPixel);
-
- /*
- * OK, so what's going on here? We have two Drawables:
- *
- * The Stipple:
- * Depth = 1
- * Width = stippleWidth
- * Words per scanline = stwidth
- * Pointer to pixels = pStipple->devPrivate.ptr
- */
- pStipple = pGC->stipple;
-
- stwidth = pStipple->devKind / PGSZB;
- stippleWidth = pStipple->drawable.width;
- stippleHeight = pStipple->drawable.height;
-
- /*
- * The Target:
- * Depth = PSZ
- * Width = determined from *pwidth
- * Words per scanline = nlwidth
- * Pointer to pixels = addrlBase
- */
-
- cfbGetLongWidthAndPointer (pDrawable, nlwidth, addrlBase)
-
- /* this replaces rotating the stipple. Instead we just adjust the offset
- * at which we start grabbing bits from the stipple.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and xrem always stay within the stipple bounds.
- */
- modulus (pGC->patOrg.x, stippleWidth, xSrc);
- xSrc += pDrawable->x - stippleWidth;
- modulus (pGC->patOrg.y, stippleHeight, ySrc);
- ySrc += pDrawable->y - stippleHeight;
-
- while (n--)
- {
- iline = (ppt->y - ySrc) % stippleHeight;
- x = ppt->x;
- pdst = addrlBase + (ppt->y * nlwidth);
- psrcS = (CfbBits *) pStipple->devPrivate.ptr + (iline * stwidth);
-
- if (*pwidth)
- {
- width = *pwidth;
- while(width > 0)
- {
- int xtemp;
-#if PSZ != 32 || PPW != 1
- int tmpx;
-#endif
- register CfbBits *ptemp;
- register CfbBits *pdsttmp;
- /*
- * Do a stripe through the stipple & destination w pixels
- * wide. w is not more than:
- * - the width of the destination
- * - the width of the stipple
- * - the distance between x and the next word
- * boundary in the destination
- * - the distance between x and the next word
- * boundary in the stipple
- */
-
- /* width of dest/stipple */
- xrem = (x - xSrc) % stippleWidth;
-#if PSZ == 24
- w = 1;
-#else
- w = min((stippleWidth - xrem), width);
- /* dist to word bound in dest */
- w = min(w, PPW - (x & PIM));
- /* dist to word bound in stip */
- w = min(w, MFB_PPW - (x & MFB_PIM));
-#endif
-
- xtemp = (xrem & MFB_PIM);
- ptemp = (CfbBits *)(psrcS + (xrem >> MFB_PWSH));
-#if PSZ == 24
- tmpx = x & 3;
- pdsttmp = pdst + ((x * 3)>>2);
-#else
-#if PSZ != 32 || PPW != 1
- tmpx = x & PIM;
-#endif
- pdsttmp = pdst + (x>>PWSH);
-#endif
- switch ( pGC->fillStyle ) {
- case FillOpaqueStippled:
-#if PSZ == 24
- getstipplepixels24(ptemp, xtemp, 0, &bgfill, &tmpDst1, xrem);
- getstipplepixels24(ptemp, xtemp, 1, &fgfill, &tmpDst2, xrem);
-#else
- getstipplepixels(ptemp, xtemp, w, 0, &bgfill, &tmpDst1);
- getstipplepixels(ptemp, xtemp, w, 1, &fgfill, &tmpDst2);
-#endif
- break;
- case FillStippled:
- /* Fill tmpSrc with the source pixels */
-#if PSZ == 24
- getbits24(pdsttmp, tmpSrc, x);
- getstipplepixels24(ptemp, xtemp, 0, &tmpSrc, &tmpDst1, xrem);
-#else
- getbits(pdsttmp, tmpx, w, tmpSrc);
- getstipplepixels(ptemp, xtemp, w, 0, &tmpSrc, &tmpDst1);
-#endif
- if (rop != stiprop) {
-#if PSZ == 24
- putbitsrop24(fgfill, 0, &tmpSrc, pGC->planemask, stiprop);
-#else
- putbitsrop(fgfill, 0, w, &tmpSrc, pGC->planemask, stiprop);
-#endif
- } else {
- tmpSrc = fgfill;
- }
-#if PSZ == 24
- getstipplepixels24(ptemp, xtemp, 1, &tmpSrc, &tmpDst2, xrem);
-#else
- getstipplepixels(ptemp, xtemp, w, 1, &tmpSrc, &tmpDst2);
-#endif
- break;
- }
- tmpDst2 |= tmpDst1;
-#if PSZ == 24
- putbitsrop24(tmpDst2, tmpx, pdsttmp, pGC->planemask, rop);
-#else
- putbitsrop(tmpDst2, tmpx, w, pdsttmp, pGC->planemask, rop);
-#endif
- x += w;
- width -= w;
- }
- }
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-#endif /* PSZ == 8 */
-
-#if PSZ == 8
-
-void
-cfb8Stipple32FS (pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- DDXPointPtr ppt; /* pointer to list of start points */
- int *pwidth; /* pointer to list of n widths */
- CfbBits *src; /* pointer to bits in stipple, if needed */
- int stippleHeight; /* height of the stipple */
- PixmapPtr stipple;
-
- int nlwDst; /* width in longwords of the dest pixmap */
- int x,y,w; /* current span */
- CfbBits startmask;
- CfbBits endmask;
- register CfbBits *dst; /* pointer to bits we're writing */
- register int nlw;
- CfbBits *dstTmp;
- int nlwTmp;
-
- CfbBits *pbits; /* pointer to start of pixmap */
- register CfbBits xor;
- register CfbBits mask;
- register CfbBits bits; /* bits from stipple */
- int wEnd;
-
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- cfbPrivGCPtr devPriv;
-
- devPriv = cfbGetGCPrivate(pGC);
- cfb8CheckStipple (pGC->alu, pGC->fgPixel, pGC->planemask);
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- if ( n == 0 )
- return;
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- stipple = pGC->pRotatedPixmap;
- src = (CfbBits *)stipple->devPrivate.ptr;
- stippleHeight = stipple->drawable.height;
-
- cfbGetLongWidthAndPointer (pDrawable, nlwDst, pbits)
-
- while (n--)
- {
- w = *pwidth++;
- x = ppt->x;
- y = ppt->y;
- ppt++;
- dst = pbits + (y * nlwDst) + (x >> PWSH);
- if (((x & PIM) + w) <= PPW)
- {
- maskpartialbits(x, w, startmask);
- endmask = 0;
- nlw = 0;
- }
- else
- {
- maskbits (x, w, startmask, endmask, nlw);
- }
- bits = src[y % stippleHeight];
- RotBitsLeft (bits, (x & ((PGSZ-1) & ~PIM)));
-#if PPW == 4
- if (cfb8StippleRRop == GXcopy)
- {
- xor = devPriv->xor;
- if (w < (PGSZ*2))
- {
- if (startmask)
- {
- mask = cfb8PixelMasks[GetBitGroup(bits)];
- *dst = (*dst & ~(mask & startmask)) |
- (xor & (mask & startmask));
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- while (nlw--)
- {
- WriteBitGroup (dst,xor,GetBitGroup(bits))
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- if (endmask)
- {
- mask = cfb8PixelMasks[GetBitGroup(bits)];
- *dst = (*dst & ~(mask & endmask)) |
- (xor & (mask & endmask));
- }
- }
- else
- { /* XXX constants probably not OK here */
- wEnd = 7 - (nlw & 7);
- nlw = (nlw >> 3) + 1;
- dstTmp = dst;
- nlwTmp = nlw;
- if (startmask)
- {
- mask = cfb8PixelMasks[GetBitGroup(bits)];
- *dstTmp = (*dstTmp & ~(mask & startmask)) |
- (xor & (mask & startmask));
- dstTmp++;
- RotBitsLeft (bits, PGSZB);
- }
- w = 7 - wEnd;
- while (w--)
- {
- dst = dstTmp;
- dstTmp++;
- nlw = nlwTmp;
-#if defined(__GNUC__) && defined(mc68020)
- mask = cfb8PixelMasks[GetBitGroup(bits)];
- xor = xor & mask;
- mask = ~mask;
- while (nlw--)
- {
- *dst = (*dst & mask) | xor;
- dst += 8;
- }
- xor = devPriv->xor;
-#else
-#define SwitchBitsLoop(body) \
- while (nlw--) \
- { \
- body \
- dst += 8; \
- }
- SwitchBitGroup(dst, xor, GetBitGroup(bits));
-#undef SwitchBitsLoop
-#endif
- NextBitGroup (bits);
- }
- nlwTmp--;
- w = wEnd + 1;
- if (endmask)
- {
- mask = cfb8PixelMasks[GetBitGroup(bits)];
- dst = dstTmp + (nlwTmp << 3);
- *dst = (*dst & ~(mask & endmask)) |
- (xor & (mask & endmask));
- }
- while (w--)
- {
- nlw = nlwTmp;
- dst = dstTmp;
- dstTmp++;
-#if defined(__GNUC__) && defined(mc68020)
- mask = cfb8PixelMasks[GetBitGroup(bits)];
- xor = xor & mask;
- mask = ~mask;
- while (nlw--)
- {
- *dst = (*dst & mask) | xor;
- dst += 8;
- }
- xor = devPriv->xor;
-#else
-#define SwitchBitsLoop(body) \
- while (nlw--) \
- { \
- body \
- dst += 8; \
- }
- SwitchBitGroup(dst, xor, GetBitGroup(bits));
-#undef SwitchBitsLoop
-#endif
- NextBitGroup (bits);
- }
- }
- }
- else
-#endif /* PPW == 4 */
- {
- if (startmask)
- {
- xor = GetBitGroup(bits);
- *dst = MaskRRopPixels(*dst, xor, startmask);
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- while (nlw--)
- {
- RRopBitGroup(dst, GetBitGroup(bits));
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- if (endmask)
- {
- xor = GetBitGroup(bits);
- *dst = MaskRRopPixels(*dst, xor, endmask);
- }
- }
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-void
-cfb8OpaqueStipple32FS (pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- DDXPointPtr ppt; /* pointer to list of start points */
- int *pwidth; /* pointer to list of n widths */
- CfbBits *src; /* pointer to bits in stipple, if needed */
- int stippleHeight; /* height of the stipple */
- PixmapPtr stipple;
-
- int nlwDst; /* width in longwords of the dest pixmap */
- int x,y,w; /* current span */
- CfbBits startmask;
- CfbBits endmask;
- register CfbBits *dst; /* pointer to bits we're writing */
- register int nlw;
- CfbBits *dstTmp;
- int nlwTmp;
-
- CfbBits *pbits; /* pointer to start of pixmap */
- register CfbBits xor;
- register CfbBits bits; /* bits from stipple */
- int wEnd;
-
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- cfbPrivGCPtr devPriv;
-
- devPriv = cfbGetGCPrivate(pGC);
-
- cfb8CheckOpaqueStipple(pGC->alu, pGC->fgPixel, pGC->bgPixel, pGC->planemask);
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- if ( n == 0 )
- return;
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- stipple = pGC->pRotatedPixmap;
- src = (CfbBits *)stipple->devPrivate.ptr;
- stippleHeight = stipple->drawable.height;
-
- cfbGetLongWidthAndPointer (pDrawable, nlwDst, pbits)
-
- while (n--)
- {
- w = *pwidth++;
- x = ppt->x;
- y = ppt->y;
- ppt++;
- dst = pbits + (y * nlwDst) + (x >> PWSH);
- if (((x & PIM) + w) <= PPW)
- {
- maskpartialbits(x, w, startmask);
- endmask = 0;
- nlw = 0;
- }
- else
- {
- maskbits (x, w, startmask, endmask, nlw);
- }
- bits = src[y % stippleHeight];
- RotBitsLeft (bits, (x & ((PGSZ-1) & ~PIM)));
-#if PPW == 4
- if (cfb8StippleRRop == GXcopy)
- {
- xor = devPriv->xor;
- if (w < PGSZ*2)
- {
- if (startmask)
- {
- *dst = (*dst & ~startmask) |
- (GetPixelGroup (bits) & startmask);
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- while (nlw--)
- {
- *dst++ = GetPixelGroup(bits);
- RotBitsLeft (bits, PGSZB);
- }
- if (endmask)
- {
- *dst = (*dst & ~endmask) |
- (GetPixelGroup (bits) & endmask);
- }
- }
- else
- { /* XXX consts probably not OK here */
- wEnd = 7 - (nlw & 7);
- nlw = (nlw >> 3) + 1;
- dstTmp = dst;
- nlwTmp = nlw;
- if (startmask)
- {
- *dstTmp = (*dstTmp & ~startmask) |
- (GetPixelGroup (bits) & startmask);
- dstTmp++;
- RotBitsLeft (bits, PGSZB);
- }
- w = 7 - wEnd;
- while (w--)
- {
- nlw = nlwTmp;
- dst = dstTmp;
- dstTmp++;
- xor = GetPixelGroup (bits);
- while (nlw--)
- {
- *dst = xor;
- dst += 8;
- }
- NextBitGroup (bits);
- }
- nlwTmp--;
- w = wEnd + 1;
- if (endmask)
- {
- dst = dstTmp + (nlwTmp << 3);
- *dst = (*dst & ~endmask) |
- (GetPixelGroup (bits) & endmask);
- }
- while (w--)
- {
- nlw = nlwTmp;
- dst = dstTmp;
- dstTmp++;
- xor = GetPixelGroup (bits);
- while (nlw--)
- {
- *dst = xor;
- dst += 8;
- }
- NextBitGroup (bits);
- }
- }
- }
- else
-#endif /* PPW == 4 */
- {
- if (startmask)
- {
- xor = GetBitGroup(bits);
- *dst = MaskRRopPixels(*dst, xor, startmask);
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- while (nlw--)
- {
- RRopBitGroup(dst, GetBitGroup(bits));
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- if (endmask)
- {
- xor = GetBitGroup(bits);
- *dst = MaskRRopPixels(*dst, xor, endmask);
- }
- }
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-#endif /* PSZ == 8 */
diff --git a/nx-X11/programs/Xserver/cfb/cfbgc.c b/nx-X11/programs/Xserver/cfb/cfbgc.c
deleted file mode 100644
index 9cf53d35b..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbgc.c
+++ /dev/null
@@ -1,811 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbgc.c,v 1.5 2001/01/17 22:36:35 dawes Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* $Xorg: cfbgc.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "cfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "region.h"
-
-#include "mistruct.h"
-#include "mibstore.h"
-#include "migc.h"
-
-#include "cfbmskbits.h"
-#include "cfb8bit.h"
-
-#if PSZ == 8
-# define useTEGlyphBlt cfbTEGlyphBlt8
-#else
-# ifdef WriteBitGroup
-# define useTEGlyphBlt cfbImageGlyphBlt8
-# else
-# define useTEGlyphBlt cfbTEGlyphBlt
-# endif
-#endif
-
-#ifdef WriteBitGroup
-# define useImageGlyphBlt cfbImageGlyphBlt8
-# define usePolyGlyphBlt cfbPolyGlyphBlt8
-#else
-# define useImageGlyphBlt miImageGlyphBlt
-# define usePolyGlyphBlt miPolyGlyphBlt
-#endif
-
-static void cfbUnPushPixels (GCPtr, PixmapPtr, DrawablePtr, int, int, int, int);
-
-#ifdef FOUR_BIT_CODE
-# define usePushPixels cfbPushPixels8
-#else
-# define usePushPixels cfbUnPushPixels
-#endif
-
-#ifdef PIXEL_ADDR
-# define ZeroPolyArc cfbZeroPolyArcSS8Copy
-#else
-# define ZeroPolyArc miZeroPolyArc
-#endif
-
-GCFuncs cfbGCFuncs = {
- cfbValidateGC,
- miChangeGC,
- miCopyGC,
- miDestroyGC,
- miChangeClip,
- miDestroyClip,
- miCopyClip,
-};
-
-GCOps cfbTEOps1Rect = {
- cfbSolidSpansCopy,
- cfbSetSpans,
- cfbPutImage,
- cfbCopyArea,
- cfbCopyPlane,
- cfbPolyPoint,
-#ifdef PIXEL_ADDR
- cfb8LineSS1Rect,
- cfb8SegmentSS1Rect,
-#else
- cfbLineSS,
- cfbSegmentSS,
-#endif
- miPolyRectangle,
- ZeroPolyArc,
- cfbFillPoly1RectCopy,
- cfbPolyFillRect,
- cfbPolyFillArcSolidCopy,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- useTEGlyphBlt,
- usePolyGlyphBlt,
- usePushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps cfbNonTEOps1Rect = {
- cfbSolidSpansCopy,
- cfbSetSpans,
- cfbPutImage,
- cfbCopyArea,
- cfbCopyPlane,
- cfbPolyPoint,
-#ifdef PIXEL_ADDR
- cfb8LineSS1Rect,
- cfb8SegmentSS1Rect,
-#else
- cfbLineSS,
- cfbSegmentSS,
-#endif
- miPolyRectangle,
- ZeroPolyArc,
- cfbFillPoly1RectCopy,
- cfbPolyFillRect,
- cfbPolyFillArcSolidCopy,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- useImageGlyphBlt,
- usePolyGlyphBlt,
- usePushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps cfbTEOps = {
- cfbSolidSpansCopy,
- cfbSetSpans,
- cfbPutImage,
- cfbCopyArea,
- cfbCopyPlane,
- cfbPolyPoint,
- cfbLineSS,
- cfbSegmentSS,
- miPolyRectangle,
- ZeroPolyArc,
- miFillPolygon,
- cfbPolyFillRect,
- cfbPolyFillArcSolidCopy,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- useTEGlyphBlt,
- usePolyGlyphBlt,
- usePushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps cfbNonTEOps = {
- cfbSolidSpansCopy,
- cfbSetSpans,
- cfbPutImage,
- cfbCopyArea,
- cfbCopyPlane,
- cfbPolyPoint,
- cfbLineSS,
- cfbSegmentSS,
- miPolyRectangle,
-#ifdef PIXEL_ADDR
- cfbZeroPolyArcSS8Copy,
-#else
- miZeroPolyArc,
-#endif
- miFillPolygon,
- cfbPolyFillRect,
- cfbPolyFillArcSolidCopy,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- useImageGlyphBlt,
- usePolyGlyphBlt,
- usePushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps *
-cfbMatchCommon (pGC, devPriv)
- GCPtr pGC;
- cfbPrivGCPtr devPriv;
-{
- if (pGC->lineWidth != 0)
- return 0;
- if (pGC->lineStyle != LineSolid)
- return 0;
- if (pGC->fillStyle != FillSolid)
- return 0;
- if (devPriv->rop != GXcopy)
- return 0;
- if (pGC->font &&
- FONTMAXBOUNDS(pGC->font,rightSideBearing) -
- FONTMINBOUNDS(pGC->font,leftSideBearing) <= 32 &&
- FONTMINBOUNDS(pGC->font,characterWidth) >= 0)
- {
- if (TERMINALFONT(pGC->font)
-#ifdef FOUR_BIT_CODE
- && FONTMAXBOUNDS(pGC->font,characterWidth) >= PGSZB
-#endif
- )
-#ifdef NO_ONE_RECT
- return &cfbTEOps1Rect;
-#else
- if (devPriv->oneRect)
- return &cfbTEOps1Rect;
- else
- return &cfbTEOps;
-#endif
- else
-#ifdef NO_ONE_RECT
- return &cfbNonTEOps1Rect;
-#else
- if (devPriv->oneRect)
- return &cfbNonTEOps1Rect;
- else
- return &cfbNonTEOps;
-#endif
- }
- return 0;
-}
-
-Bool
-cfbCreateGC(pGC)
- register GCPtr pGC;
-{
- cfbPrivGC *pPriv;
-
- if (PixmapWidthPaddingInfo[pGC->depth].padPixelsLog2 == LOG2_BITMAP_PAD)
- return (mfbCreateGC(pGC));
- pGC->clientClip = NULL;
- pGC->clientClipType = CT_NONE;
-
- if (cfbNonTEOps.PushPixels == cfbUnPushPixels)
- {
- cfbTEOps1Rect.PushPixels = mfbPushPixelsWeak();
- cfbNonTEOps1Rect.PushPixels = mfbPushPixelsWeak();
- cfbTEOps.PushPixels = mfbPushPixelsWeak();
- cfbNonTEOps.PushPixels = mfbPushPixelsWeak();
- }
-
- /*
- * some of the output primitives aren't really necessary, since they
- * will be filled in ValidateGC because of dix/CreateGC() setting all
- * the change bits. Others are necessary because although they depend
- * on being a color frame buffer, they don't change
- */
-
- pGC->ops = &cfbNonTEOps;
- pGC->funcs = &cfbGCFuncs;
-
- /* cfb wants to translate before scan conversion */
- pGC->miTranslate = 1;
-
- pPriv = cfbGetGCPrivate(pGC);
- pPriv->rop = pGC->alu;
- pPriv->oneRect = FALSE;
- pGC->fExpose = TRUE;
- pGC->freeCompClip = FALSE;
- pGC->pRotatedPixmap = (PixmapPtr) NULL;
- return TRUE;
-}
-
-/* Clipping conventions
- if the drawable is a window
- CT_REGION ==> pCompositeClip really is the composite
- CT_other ==> pCompositeClip is the window clip region
- if the drawable is a pixmap
- CT_REGION ==> pCompositeClip is the translated client region
- clipped to the pixmap boundary
- CT_other ==> pCompositeClip is the pixmap bounding box
-*/
-
-void
-cfbValidateGC(pGC, changes, pDrawable)
- register GCPtr pGC;
- unsigned long changes;
- DrawablePtr pDrawable;
-{
- int mask; /* stateChanges */
- int index; /* used for stepping through bitfields */
- int new_rrop;
- int new_line, new_text, new_fillspans, new_fillarea;
- int new_rotate;
- int xrot, yrot;
- /* flags for changing the proc vector */
- cfbPrivGCPtr devPriv;
- int oneRect;
-
- new_rotate = pGC->lastWinOrg.x != pDrawable->x ||
- pGC->lastWinOrg.y != pDrawable->y;
-
- pGC->lastWinOrg.x = pDrawable->x;
- pGC->lastWinOrg.y = pDrawable->y;
- devPriv = cfbGetGCPrivate(pGC);
-
- new_rrop = FALSE;
- new_line = FALSE;
- new_text = FALSE;
- new_fillspans = FALSE;
- new_fillarea = FALSE;
-
- /*
- * if the client clip is different or moved OR the subwindowMode has
- * changed OR the window's clip has changed since the last validation
- * we need to recompute the composite clip
- */
-
- if ((changes & (GCClipXOrigin|GCClipYOrigin|GCClipMask|GCSubwindowMode)) ||
- (pDrawable->serialNumber != (pGC->serialNumber & DRAWABLE_SERIAL_BITS))
- )
- {
- miComputeCompositeClip (pGC, pDrawable);
-#ifdef NO_ONE_RECT
- devPriv->oneRect = FALSE;
-#else
- oneRect = REGION_NUM_RECTS(pGC->pCompositeClip) == 1;
- if (oneRect != devPriv->oneRect)
- new_line = TRUE;
- devPriv->oneRect = oneRect;
-#endif
- }
-
- mask = changes;
- while (mask) {
- index = lowbit (mask);
- mask &= ~index;
-
- /*
- * this switch acculmulates a list of which procedures might have
- * to change due to changes in the GC. in some cases (e.g.
- * changing one 16 bit tile for another) we might not really need
- * a change, but the code is being paranoid. this sort of batching
- * wins if, for example, the alu and the font have been changed,
- * or any other pair of items that both change the same thing.
- */
- switch (index) {
- case GCFunction:
- case GCForeground:
- new_rrop = TRUE;
- break;
- case GCPlaneMask:
- new_rrop = TRUE;
- new_text = TRUE;
- break;
- case GCBackground:
- break;
- case GCLineStyle:
- case GCLineWidth:
- new_line = TRUE;
- break;
- case GCJoinStyle:
- case GCCapStyle:
- break;
- case GCFillStyle:
- new_text = TRUE;
- new_fillspans = TRUE;
- new_line = TRUE;
- new_fillarea = TRUE;
- break;
- case GCFillRule:
- break;
- case GCTile:
- new_fillspans = TRUE;
- new_fillarea = TRUE;
- break;
-
- case GCStipple:
- if (pGC->stipple)
- {
- int width = pGC->stipple->drawable.width;
- PixmapPtr nstipple;
-
- if ((width <= PGSZ) && !(width & (width - 1)) &&
- (nstipple = cfbCopyPixmap(pGC->stipple)))
- {
- cfbPadPixmap(nstipple);
- (*pGC->pScreen->DestroyPixmap)(pGC->stipple);
- pGC->stipple = nstipple;
- }
- }
- new_fillspans = TRUE;
- new_fillarea = TRUE;
- break;
-
- case GCTileStipXOrigin:
- new_rotate = TRUE;
- break;
-
- case GCTileStipYOrigin:
- new_rotate = TRUE;
- break;
-
- case GCFont:
- new_text = TRUE;
- break;
- case GCSubwindowMode:
- break;
- case GCGraphicsExposures:
- break;
- case GCClipXOrigin:
- break;
- case GCClipYOrigin:
- break;
- case GCClipMask:
- break;
- case GCDashOffset:
- break;
- case GCDashList:
- break;
- case GCArcMode:
- break;
- default:
- break;
- }
- }
-
- /*
- * If the drawable has changed, ensure suitable
- * entries are in the proc vector.
- */
- if (pDrawable->serialNumber != (pGC->serialNumber & (DRAWABLE_SERIAL_BITS))) {
- new_fillspans = TRUE; /* deal with FillSpans later */
- }
-
- if (new_rotate || new_fillspans)
- {
- Bool new_pix = FALSE;
-
- xrot = pGC->patOrg.x + pDrawable->x;
- yrot = pGC->patOrg.y + pDrawable->y;
-
- switch (pGC->fillStyle)
- {
- case FillTiled:
- if (!pGC->tileIsPixel)
- {
- int width = pGC->tile.pixmap->drawable.width * PSZ;
-
- if ((width <= PGSZ) && !(width & (width - 1)))
- {
- cfbCopyRotatePixmap(pGC->tile.pixmap, &pGC->pRotatedPixmap,
- xrot, yrot);
- new_pix = TRUE;
- }
- }
- break;
-#ifdef FOUR_BIT_CODE
- case FillStippled:
- case FillOpaqueStippled:
- {
- int width = pGC->stipple->drawable.width;
-
- if ((width <= PGSZ) && !(width & (width - 1)))
- {
- mfbCopyRotatePixmap(pGC->stipple, &pGC->pRotatedPixmap,
- xrot, yrot);
- new_pix = TRUE;
- }
- }
- break;
-#endif
- }
- if (!new_pix && pGC->pRotatedPixmap)
- {
- (*pGC->pScreen->DestroyPixmap)(pGC->pRotatedPixmap);
- pGC->pRotatedPixmap = (PixmapPtr) NULL;
- }
- }
-
- if (new_rrop)
- {
- int old_rrop;
-
- old_rrop = devPriv->rop;
- devPriv->rop = cfbReduceRasterOp (pGC->alu, pGC->fgPixel,
- pGC->planemask,
- &devPriv->and, &devPriv->xor);
- if (old_rrop == devPriv->rop)
- new_rrop = FALSE;
- else
- {
-#ifdef PIXEL_ADDR
- new_line = TRUE;
-#endif
-#ifdef WriteBitGroup
- new_text = TRUE;
-#endif
- new_fillspans = TRUE;
- new_fillarea = TRUE;
- }
- }
-
- if (new_rrop || new_fillspans || new_text || new_fillarea || new_line)
- {
- GCOps *newops;
-
- if ((newops = cfbMatchCommon (pGC, devPriv)))
- {
- if (pGC->ops->devPrivate.val)
- miDestroyGCOps (pGC->ops);
- pGC->ops = newops;
- new_rrop = new_line = new_fillspans = new_text = new_fillarea = 0;
- }
- else
- {
- if (!pGC->ops->devPrivate.val)
- {
- pGC->ops = miCreateGCOps (pGC->ops);
- pGC->ops->devPrivate.val = 1;
- }
- }
- }
-
- /* deal with the changes we've collected */
- if (new_line)
- {
- pGC->ops->FillPolygon = miFillPolygon;
-#ifdef NO_ONE_RECT
- if (pGC->fillStyle == FillSolid)
- {
- switch (devPriv->rop) {
- case GXcopy:
- pGC->ops->FillPolygon = cfbFillPoly1RectCopy;
- break;
- default:
- pGC->ops->FillPolygon = cfbFillPoly1RectGeneral;
- break;
- }
- }
-#else
- if (devPriv->oneRect && pGC->fillStyle == FillSolid)
- {
- switch (devPriv->rop) {
- case GXcopy:
- pGC->ops->FillPolygon = cfbFillPoly1RectCopy;
- break;
- default:
- pGC->ops->FillPolygon = cfbFillPoly1RectGeneral;
- break;
- }
- }
-#endif
- if (pGC->lineWidth == 0)
- {
-#ifdef PIXEL_ADDR
- if ((pGC->lineStyle == LineSolid) && (pGC->fillStyle == FillSolid))
- {
- switch (devPriv->rop)
- {
- case GXxor:
- pGC->ops->PolyArc = cfbZeroPolyArcSS8Xor;
- break;
- case GXcopy:
- pGC->ops->PolyArc = cfbZeroPolyArcSS8Copy;
- break;
- default:
- pGC->ops->PolyArc = cfbZeroPolyArcSS8General;
- break;
- }
- }
- else
-#endif
- pGC->ops->PolyArc = miZeroPolyArc;
- }
- else
- pGC->ops->PolyArc = miPolyArc;
- pGC->ops->PolySegment = miPolySegment;
- switch (pGC->lineStyle)
- {
- case LineSolid:
- if(pGC->lineWidth == 0)
- {
- if (pGC->fillStyle == FillSolid)
- {
-#if defined(PIXEL_ADDR) && !defined(NO_ONE_RECT)
- if (devPriv->oneRect &&
- ((pDrawable->x >= pGC->pScreen->width - 32768) &&
- (pDrawable->y >= pGC->pScreen->height - 32768)))
- {
- pGC->ops->Polylines = cfb8LineSS1Rect;
- pGC->ops->PolySegment = cfb8SegmentSS1Rect;
- } else
-#endif
-#ifdef NO_ONE_RECT
- {
- pGC->ops->Polylines = cfb8LineSS1Rect;
- pGC->ops->PolySegment = cfb8SegmentSS1Rect;
- }
-#else
- {
- pGC->ops->Polylines = cfbLineSS;
- pGC->ops->PolySegment = cfbSegmentSS;
- }
-#endif
- }
- else
- pGC->ops->Polylines = miZeroLine;
- }
- else
- pGC->ops->Polylines = miWideLine;
- break;
- case LineOnOffDash:
- case LineDoubleDash:
- if (pGC->lineWidth == 0 && pGC->fillStyle == FillSolid)
- {
- pGC->ops->Polylines = cfbLineSD;
- pGC->ops->PolySegment = cfbSegmentSD;
- } else
- pGC->ops->Polylines = miWideDash;
- break;
- }
- }
-
- if (new_text && (pGC->font))
- {
- if (FONTMAXBOUNDS(pGC->font,rightSideBearing) -
- FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 ||
- FONTMINBOUNDS(pGC->font,characterWidth) < 0)
- {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- pGC->ops->ImageGlyphBlt = miImageGlyphBlt;
- }
- else
- {
-#ifdef WriteBitGroup
- if (pGC->fillStyle == FillSolid)
- {
- if (devPriv->rop == GXcopy)
- pGC->ops->PolyGlyphBlt = cfbPolyGlyphBlt8;
- else
-#ifdef FOUR_BIT_CODE
- pGC->ops->PolyGlyphBlt = cfbPolyGlyphRop8;
-#else
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
-#endif
- }
- else
-#endif
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- /* special case ImageGlyphBlt for terminal emulator fonts */
-#if !defined(WriteBitGroup) || PSZ == 8
- if (TERMINALFONT(pGC->font) &&
- (pGC->planemask & PMSK) == PMSK
-#ifdef FOUR_BIT_CODE
- && FONTMAXBOUNDS(pGC->font,characterWidth) >= PGSZB
-#endif
- )
- {
- pGC->ops->ImageGlyphBlt = useTEGlyphBlt;
- }
- else
-#endif
- {
-#ifdef WriteBitGroup
- if (devPriv->rop == GXcopy &&
- pGC->fillStyle == FillSolid &&
- (pGC->planemask & PMSK) == PMSK)
- pGC->ops->ImageGlyphBlt = cfbImageGlyphBlt8;
- else
-#endif
- pGC->ops->ImageGlyphBlt = miImageGlyphBlt;
- }
- }
- }
-
-
- if (new_fillspans) {
- switch (pGC->fillStyle) {
- case FillSolid:
- switch (devPriv->rop) {
- case GXcopy:
- pGC->ops->FillSpans = cfbSolidSpansCopy;
- break;
- case GXxor:
- pGC->ops->FillSpans = cfbSolidSpansXor;
- break;
- default:
- pGC->ops->FillSpans = cfbSolidSpansGeneral;
- break;
- }
- break;
- case FillTiled:
- if (pGC->pRotatedPixmap)
- {
- if (pGC->alu == GXcopy && (pGC->planemask & PMSK) == PMSK)
- pGC->ops->FillSpans = cfbTile32FSCopy;
- else
- pGC->ops->FillSpans = cfbTile32FSGeneral;
- }
- else
- pGC->ops->FillSpans = cfbUnnaturalTileFS;
- break;
- case FillStippled:
-#ifdef FOUR_BIT_CODE
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = cfb8Stipple32FS;
- else
-#endif
- pGC->ops->FillSpans = cfbUnnaturalStippleFS;
- break;
- case FillOpaqueStippled:
-#ifdef FOUR_BIT_CODE
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = cfb8OpaqueStipple32FS;
- else
-#endif
- pGC->ops->FillSpans = cfbUnnaturalStippleFS;
- break;
- default:
- FatalError("cfbValidateGC: illegal fillStyle\n");
- }
- } /* end of new_fillspans */
-
- if (new_fillarea) {
-#ifndef FOUR_BIT_CODE
- pGC->ops->PolyFillRect = miPolyFillRect;
- if (pGC->fillStyle == FillSolid || pGC->fillStyle == FillTiled)
- {
- pGC->ops->PolyFillRect = cfbPolyFillRect;
- }
-#endif
-#ifdef FOUR_BIT_CODE
- pGC->ops->PushPixels = mfbPushPixelsWeak();
- if (pGC->fillStyle == FillSolid && devPriv->rop == GXcopy)
- pGC->ops->PushPixels = cfbPushPixels8;
-#endif
- pGC->ops->PolyFillArc = miPolyFillArc;
- if (pGC->fillStyle == FillSolid)
- {
- switch (devPriv->rop)
- {
- case GXcopy:
- pGC->ops->PolyFillArc = cfbPolyFillArcSolidCopy;
- break;
- default:
- pGC->ops->PolyFillArc = cfbPolyFillArcSolidGeneral;
- break;
- }
- }
- }
-}
-
-/*
- * this is never called, it just exists to have its address
- * taken in mfbCreateGC.
- */
-static void
-cfbUnPushPixels (pGC, pBitmap, pDrawable, dx, dy, xOrg, yOrg)
- GCPtr pGC;
- PixmapPtr pBitmap;
- DrawablePtr pDrawable;
- int dx, dy, xOrg, yOrg;
-{
- return;
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbgetsp.c b/nx-X11/programs/Xserver/cfb/cfbgetsp.c
deleted file mode 100644
index 44e31a241..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbgetsp.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* $Xorg: cfbgetsp.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XFree86: xc/programs/Xserver/cfb/cfbgetsp.c,v 3.9tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-
-#include "misc.h"
-#include "region.h"
-#include "gc.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "cfb.h"
-#include "cfbmskbits.h"
-
-/* GetSpans -- for each span, gets bits from drawable starting at ppt[i]
- * and continuing for pwidth[i] bits
- * Each scanline returned will be server scanline padded, i.e., it will come
- * out to an integral number of words.
- */
-void
-cfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pchardstStart)
- DrawablePtr pDrawable; /* drawable from which to get bits */
- int wMax; /* largest value of all *pwidths */
- register DDXPointPtr ppt; /* points to start copying from */
- int *pwidth; /* list of number of bits to copy */
- int nspans; /* number of scanlines to copy */
- char *pchardstStart; /* where to put the bits */
-{
- PixelGroup *pdstStart = (PixelGroup *)pchardstStart;
- register PixelGroup *pdst; /* where to put the bits */
- register PixelGroup *psrc; /* where to get the bits */
- register PixelGroup tmpSrc; /* scratch buffer for bits */
- PixelGroup *psrcBase; /* start of src bitmap */
- int widthSrc; /* width of pixmap in bytes */
- register DDXPointPtr pptLast; /* one past last point to get */
- int xEnd; /* last pixel to copy from */
- int nl, srcBit;
- int w;
- PixelGroup *pdstNext;
-#if PSZ == 24
- register char *psrcb, *pdstb;
- register int xIndex = 0;
-#else
- register int nstart;
-#if PSZ != 32 || PPW != 1
- int nend;
-#endif
- PixelGroup startmask, endmask;
- int nlMiddle;
-#endif
-
- switch (pDrawable->bitsPerPixel) {
- case 1:
- mfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pchardstStart);
- return;
- case PSZ:
- break;
- default:
- FatalError("cfbGetSpans: invalid depth\n");
- }
-
- /*
- * XFree86 DDX empties the root borderClip when the VT is
- * switched away; this checks for that case
- */
- if (!cfbDrawableEnabled(pDrawable))
- return;
-
- cfbGetLongWidthAndPointer (pDrawable, widthSrc, psrcBase)
-
-#ifdef PIXEL_ADDR
-# if PSZ != 24
- if ((nspans == 1) && (*pwidth == 1))
- {
- tmpSrc = *((PixelType *)(psrcBase + (ppt->y * widthSrc))
- + ppt->x);
-#if BITMAP_BIT_ORDER == MSBFirst
- tmpSrc <<= (sizeof (CfbBits) - sizeof (PixelType)) * 8;
-#endif
- *pdstStart = tmpSrc;
- return;
- }
-# endif /* PSZ != 24 */
-#endif
- pdst = pdstStart;
- pptLast = ppt + nspans;
- while(ppt < pptLast)
- {
-#if PSZ == 24
- xEnd = min(ppt->x + *pwidth, widthSrc * sizeof(CfbBits) / 3);
- w = xEnd - ppt->x;
- psrc = psrcBase + ppt->y * widthSrc;
- srcBit = ppt->x;
- psrcb = (char *)psrc + (ppt->x * 3);
- xIndex = 0;
- pdstb = (char *)pdst;
- pdstNext = pdst + ((w * 3 + 3) >> 2);
-#else
- xEnd = min(ppt->x + *pwidth, widthSrc << PWSH);
- w = xEnd - ppt->x;
- psrc = psrcBase + ppt->y * widthSrc + (ppt->x >> PWSH);
- srcBit = ppt->x & PIM;
- pdstNext = pdst + ((w + PPW - 1) >> PWSH);
-#endif
-
-#if PSZ == 24
- if (w < 0)
- FatalError("cfb24GetSpans: Internal error (w < 0)\n");
- nl = w;
- while (nl--){
- psrc = (PixelGroup *)((unsigned long)psrcb & ~0x03);
- getbits24(psrc, tmpSrc, srcBit);
- pdst = (PixelGroup *)((unsigned long)pdstb & ~0x03);
- putbits24(tmpSrc, PPW, pdst, ~((CfbBits)0), xIndex);
- srcBit++;
- psrcb += 3;
- xIndex++;
- pdstb += 3;
- }
- pdst = pdstNext;
-#else /* PSZ == 24 */
- if (srcBit + w <= PPW)
- {
- getbits(psrc, srcBit, w, tmpSrc);
- putbits(tmpSrc, 0, w, pdst, ~((CfbBits)0));
- pdst++;
- }
- else
- {
- maskbits(ppt->x, w, startmask, endmask, nlMiddle);
- nstart = 0;
- if (startmask)
- {
- nstart = PPW - srcBit;
- getbits(psrc, srcBit, nstart, tmpSrc);
- putbits(tmpSrc, 0, nstart, pdst, ~((CfbBits)0));
- if(srcBit + nstart >= PPW)
- psrc++;
- }
- nl = nlMiddle;
- while (nl--)
- {
- tmpSrc = *psrc;
- putbits(tmpSrc, nstart, PPW, pdst, ~((CfbBits)0));
- psrc++;
- pdst++;
- }
- if (endmask)
- {
-#if PSZ != 32 || PPW != 1
- nend = xEnd & PIM;
-#endif
- getbits(psrc, 0, nend, tmpSrc);
- putbits(tmpSrc, nstart, nend, pdst, ~((CfbBits)0));
- }
- pdst = pdstNext;
- }
-#endif /* PSZ == 24 */
- ppt++;
- pwidth++;
- }
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbglblt8.c b/nx-X11/programs/Xserver/cfb/cfbglblt8.c
deleted file mode 100644
index fda848fde..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbglblt8.c
+++ /dev/null
@@ -1,479 +0,0 @@
-/* $Xorg: cfbglblt8.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
-/*
-
-Copyright 1989, 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.
-*/
-/* $XFree86: xc/programs/Xserver/cfb/cfbglblt8.c,v 3.7 2003/07/16 01:38:37 dawes Exp $ */
-
-/*
- * Poly glyph blt. Accepts an arbitrary font <= 32 bits wide, in Copy mode
- * only.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "cfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "cfbmskbits.h"
-#include "cfb8bit.h"
-
-#define BOX_OVERLAP(box1, box2, xoffset, yoffset) \
- ((box1)->x1 <= ((int) (box2)->x2 + (xoffset)) && \
- ((int) (box2)->x1 + (xoffset)) <= (box1)->x2 && \
- (box1)->y1 <= ((int) (box2)->y2 + (yoffset)) && \
- ((int) (box2)->y1 + (yoffset)) <= (box1)->y2)
-
-#define BOX_CONTAINS(box1, box2, xoffset, yoffset) \
- ((box1)->x1 <= ((int) (box2)->x1 + (xoffset)) && \
- ((int) (box2)->x2 + (xoffset)) <= (box1)->x2 && \
- (box1)->y1 <= ((int) (box2)->y1 + (yoffset)) && \
- ((int) (box2)->y2 + (yoffset)) <= (box1)->y2)
-
-#if defined(FOUR_BIT_CODE) || defined(WriteBitGroup) && !defined(GLYPHROP)
-
-#if GLYPHPADBYTES != 4
-#define USE_LEFTBITS
-#endif
-
-#ifdef USE_LEFTBITS
-typedef unsigned char *glyphPointer;
-
-#define GlyphBits(bits,width,dst) getleftbits(bits,width,dst); \
- (dst) &= widthMask; \
- (bits) += widthGlyph;
-#define GlyphBitsS(bits,width,dst,off) GlyphBits(bits,width,dst); \
- dst = BitRight (dst, off);
-#else
-typedef CARD32 *glyphPointer;
-
-#define GlyphBits(bits,width,dst) dst = *bits++;
-#define GlyphBitsS(bits,width,dst,off) dst = BitRight(*bits++, off);
-#endif
-
-#ifdef GLYPHROP
-#define cfbPolyGlyphBlt8 cfbPolyGlyphRop8
-#define cfbPolyGlyphBlt8Clipped cfbPolyGlyphRop8Clipped
-
-#undef WriteBitGroup
-#define WriteBitGroup(dst,pixel,bits) RRopBitGroup(dst,bits)
-
-#endif
-
-static void cfbPolyGlyphBlt8Clipped(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- unsigned int nglyph,
- CharInfoPtr *ppci, /* array of character info */
- unsigned char *pglyphBase); /* start of array of glyphs */
-
-#if defined(HAS_STIPPLE_CODE) && !defined(GLYPHROP) && !defined(USE_LEFTBITS)
-#define USE_STIPPLE_CODE
-#endif
-
-#if defined(__GNUC__) && !defined(GLYPHROP) && (defined(mc68020) || defined(mc68000) || defined(__mc68000__)) && PSZ == 8 && !defined(USE_LEFTBITS)
-#ifdef USE_STIPPLE_CODE
-#undef USE_STIPPLE_CODE
-#endif
-#include "stip68kgnu.h"
-#endif
-
-#if PSZ == 24
-#define DST_INC 3
-#else
-#define DST_INC (PGSZB >> PWSH)
-#endif
-
-/* cfbStippleStack/cfbStippleStackTE are coded in assembly language.
- * They are only provided on some architecures.
- */
-#ifdef USE_STIPPLE_CODE
-extern void cfbStippleStack (), cfbStippleStackTE ();
-#endif
-
-void
-cfbPolyGlyphBlt8 (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
-#ifndef GLYPHROP
- register CfbBits pixel;
-#endif
-#if !defined(STIPPLE) && !defined(USE_STIPPLE_CODE)
- register CfbBits c;
- register CfbBits *dst;
-#endif
- register glyphPointer glyphBits;
- register int xoff;
-
- FontPtr pfont = pGC->font;
- CharInfoPtr pci;
- CfbBits *dstLine;
- CfbBits *pdstBase;
- int hTmp;
- int bwidthDst;
- int widthDst;
- int h;
- BoxRec bbox; /* for clipping */
- int w;
- RegionPtr clip;
- BoxPtr extents;
-#ifdef USE_LEFTBITS
- int widthGlyph;
- CfbBits widthMask;
-#endif
-#ifndef STIPPLE
-#ifdef USE_STIPPLE_CODE
- void (*stipple)();
-
- stipple = cfbStippleStack;
- if (FONTCONSTMETRICS(pfont))
- stipple = cfbStippleStackTE;
-#endif
-#endif
-
- x += pDrawable->x;
- y += pDrawable->y;
-
- /* compute an approximate (but covering) bounding box */
- bbox.x1 = 0;
- if ((ppci[0]->metrics.leftSideBearing < 0))
- bbox.x1 = ppci[0]->metrics.leftSideBearing;
- h = nglyph - 1;
- w = ppci[h]->metrics.rightSideBearing;
- while (--h >= 0)
- w += ppci[h]->metrics.characterWidth;
- bbox.x2 = w;
- bbox.y1 = -FONTMAXBOUNDS(pfont,ascent);
- bbox.y2 = FONTMAXBOUNDS(pfont,descent);
-
- clip = cfbGetCompositeClip(pGC);
- extents = &clip->extents;
-
- if (!clip->data)
- {
- if (!BOX_CONTAINS(extents, &bbox, x, y))
- {
- if (BOX_OVERLAP (extents, &bbox, x, y))
- cfbPolyGlyphBlt8Clipped(pDrawable, pGC, x, y,
- nglyph, ppci, pglyphBase);
- return;
- }
- }
- else
- {
- /* check to make sure some of the text appears on the screen */
- if (!BOX_OVERLAP (extents, &bbox, x, y))
- return;
-
- bbox.x1 += x;
- bbox.x2 += x;
- bbox.y1 += y;
- bbox.y2 += y;
-
- switch (RECT_IN_REGION(pGC->pScreen, clip, &bbox))
- {
- case rgnPART:
- cfbPolyGlyphBlt8Clipped(pDrawable, pGC, x, y,
- nglyph, ppci, pglyphBase);
- case rgnOUT:
- return;
- }
- }
-
-#ifdef GLYPHROP
- cfb8CheckStipple (pGC->alu, pGC->fgPixel, pGC->planemask);
-#else
- pixel = cfbGetGCPrivate(pGC)->xor;
-#endif
-
- cfbGetTypedWidthAndPointer (pDrawable, bwidthDst, pdstBase, char, CfbBits)
-
- widthDst = bwidthDst / PGSZB;
- while (nglyph--)
- {
- pci = *ppci++;
- glyphBits = (glyphPointer) FONTGLYPHBITS(pglyphBase,pci);
- xoff = x + pci->metrics.leftSideBearing;
-#if PSZ == 24
- dstLine = pdstBase + (y - pci->metrics.ascent) * widthDst +((xoff>> 2)*3);
-#else
- dstLine = pdstBase +
- (y - pci->metrics.ascent) * widthDst + (xoff >> PWSH);
-#endif
- x += pci->metrics.characterWidth;
- if ((hTmp = pci->metrics.descent + pci->metrics.ascent))
- {
-#if PSZ == 24
- xoff &= 0x03;
-#else
- xoff &= PIM;
-#endif /* PSZ == 24 */
-#ifdef STIPPLE
- STIPPLE(dstLine,glyphBits,pixel,bwidthDst,hTmp,xoff);
-#else
-#ifdef USE_STIPPLE_CODE
- (*stipple)(dstLine,glyphBits,pixel,bwidthDst,hTmp,xoff);
-#else
-#ifdef USE_LEFTBITS
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- widthGlyph = PADGLYPHWIDTHBYTES(w);
- widthMask = mfbGetendtab(w);
-#endif
- do {
- dst = dstLine;
- dstLine = (CfbBits *) (((char *) dstLine) + bwidthDst);
- GlyphBits(glyphBits, w, c)
- WriteBitGroup(dst, pixel, GetBitGroup(BitRight(c,xoff)));
- dst += DST_INC;
- c = BitLeft(c,PGSZB - xoff);
- while (c)
- {
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst += DST_INC;
- }
- } while (--hTmp);
-#endif /* USE_STIPPLE_CODE else */
-#endif /* STIPPLE else */
- }
- }
-}
-
-static void
-cfbPolyGlyphBlt8Clipped(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- unsigned int nglyph,
- CharInfoPtr *ppci, /* array of character info */
- unsigned char *pglyphBase) /* start of array of glyphs */
-{
-#ifndef GLYPHROP
- register CfbBits pixel;
-#endif
-#if !defined(STIPPLE) && !defined(USE_STIPPLE_CODE)
- register CfbBits c;
-#endif
- register glyphPointer glyphBits;
- register int xoff;
-#if defined(USE_LEFTBITS) || (!defined(STIPPLE) && !defined(USE_STIPPLE_CODE))
- register CfbBits *dst;
-#endif
-
- CharInfoPtr pci;
- FontPtr pfont = pGC->font;
- CfbBits *dstLine;
- CfbBits *pdstBase;
-#ifdef USE_LEFTBITS
- CARD32 *cTmp;
-#endif
- CARD32 *clips;
- int maxAscent, maxDescent;
- int minLeftBearing;
- int hTmp;
- int widthDst;
- int bwidthDst;
- int xG, yG;
- BoxPtr pBox;
- int numRects;
- int w;
- RegionPtr pRegion;
- int yBand;
-#ifdef GLYPHROP
- CfbBits bits;
-#endif
-#ifdef USE_LEFTBITS
- int widthGlyph;
- CfbBits widthMask;
-#endif
-
-#ifdef GLYPHROP
- cfb8CheckStipple (pGC->alu, pGC->fgPixel, pGC->planemask);
-#else
- pixel = cfbGetGCPrivate(pGC)->xor;
-#endif
-
- cfbGetTypedWidthAndPointer (pDrawable, bwidthDst, pdstBase, char, CfbBits)
-
- widthDst = bwidthDst / PGSZB;
- maxAscent = FONTMAXBOUNDS(pfont,ascent);
- maxDescent = FONTMAXBOUNDS(pfont,descent);
- minLeftBearing = FONTMINBOUNDS(pfont,leftSideBearing);
-
- pRegion = cfbGetCompositeClip(pGC);
-
- pBox = REGION_RECTS(pRegion);
- numRects = REGION_NUM_RECTS (pRegion);
- while (numRects && pBox->y2 <= y - maxAscent)
- {
- ++pBox;
- --numRects;
- }
- if (!numRects || pBox->y1 >= y + maxDescent)
- return;
- yBand = pBox->y1;
- while (numRects && pBox->y1 == yBand && pBox->x2 <= x + minLeftBearing)
- {
- ++pBox;
- --numRects;
- }
- if (!numRects)
- return;
- clips = (CARD32 *)ALLOCATE_LOCAL ((maxAscent + maxDescent) *
- sizeof (CARD32));
- while (nglyph--)
- {
- pci = *ppci++;
- glyphBits = (glyphPointer) FONTGLYPHBITS(pglyphBase,pci);
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- xG = x + pci->metrics.leftSideBearing;
- yG = y - pci->metrics.ascent;
- x += pci->metrics.characterWidth;
- if ((hTmp = pci->metrics.descent + pci->metrics.ascent))
- {
-#if PSZ == 24
- dstLine = pdstBase + yG * widthDst + ((xG>> 2)*3);
- /* never use (xG*3)>>2 */
-#else
- dstLine = pdstBase + yG * widthDst + (xG >> PWSH);
-#endif
-#if PSZ == 24
- xoff = xG & 3;
-#else
- xoff = xG & PIM;
-#endif
-#ifdef USE_LEFTBITS
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- widthGlyph = PADGLYPHWIDTHBYTES(w);
- widthMask = mfbGetendtab(w);
-#endif
- switch (cfb8ComputeClipMasks32 (pBox, numRects, xG, yG, w, hTmp, clips))
- {
- case rgnPART:
-#ifdef USE_LEFTBITS
- cTmp = clips;
- do {
- dst = dstLine;
- dstLine = (CfbBits *) (((char *) dstLine) + bwidthDst);
- GlyphBits(glyphBits, w, c)
- c &= *cTmp++;
- if (c)
- {
- WriteBitGroup(dst, pixel, GetBitGroup(BitRight(c,xoff)));
- c = BitLeft(c,PGSZB - xoff);
- dst += DST_INC;
- while (c)
- {
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst += DST_INC;
- }
- }
- } while (--hTmp);
- break;
-#else /* !USE_LEFTBITS */
- {
- int h;
-
- h = hTmp;
- do
- {
- --h;
- clips[h] = clips[h] & glyphBits[h];
- } while (h);
- }
- glyphBits = clips;
- /* fall through */
-#endif /* USE_LEFTBITS */
- case rgnIN:
-#ifdef STIPPLE
- STIPPLE(dstLine,glyphBits,pixel,bwidthDst,hTmp,xoff);
-#else
-#ifdef USE_STIPPLE_CODE
- cfbStippleStackTE(dstLine,glyphBits,pixel,bwidthDst,hTmp,xoff);
-#else
- do {
- dst = dstLine;
- dstLine = (CfbBits *) (((char *) dstLine) + bwidthDst);
- GlyphBits(glyphBits, w, c)
- if (c)
- {
- /* This code originally could read memory locations
- * that were not mapped. Hence we have to check the
- * trailing bits to see whether they are zero and if
- * then skip them correctly. This is no problem for
- * the GXcopy case, since there only the pixels that
- * are non-zero are written ...
- */
-#ifndef GLYPHROP
- WriteBitGroup(dst, pixel, GetBitGroup(BitRight(c,xoff)));
- c = BitLeft(c,PGSZB - xoff);
- dst += DST_INC;
-#else /* GLYPHROP */
- if ((bits = GetBitGroup(BitRight(c,xoff))))
- WriteBitGroup(dst, pixel, bits);
- c = BitLeft(c,PGSZB - xoff);
- dst += DST_INC;
-
- while (c && ((bits = GetBitGroup(c)) == 0))
- {
- NextBitGroup(c);
- dst += DST_INC;
- }
-#endif /* GLYPHROP */
- while (c)
- {
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst += DST_INC;
- }
- }
- } while (--hTmp);
-#endif /* USE_STIPPLE_CODE else */
-#endif /* STIPPLE else */
- break;
- }
- }
- }
- DEALLOCATE_LOCAL (clips);
-}
-
-#endif /* FOUR_BIT_CODE */
diff --git a/nx-X11/programs/Xserver/cfb/cfbhrzvert.c b/nx-X11/programs/Xserver/cfb/cfbhrzvert.c
deleted file mode 100644
index 4df991b00..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbhrzvert.c
+++ /dev/null
@@ -1,556 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbhrzvert.c,v 3.6 2001/10/28 03:33:00 tsi Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: cfbhrzvert.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gc.h"
-#include "window.h"
-#include "pixmap.h"
-#include "region.h"
-
-#include "cfb.h"
-#include "cfbmskbits.h"
-
-/* horizontal solid line
- abs(len) > 1
-*/
-void
-cfbHorzS(rop, and, xor, addrl, nlwidth, x1, y1, len)
-register int rop;
-register CfbBits and;
-register CfbBits xor;
-register CfbBits *addrl; /* pointer to base of bitmap */
-int nlwidth; /* width in longwords of bitmap */
-int x1; /* initial point */
-int y1;
-int len; /* length of line */
-{
- register int nlmiddle;
-
-#if PSZ == 24
-
- int leftIndex, rightIndex;
- CfbBits piQxelAnd[3], piQxelXor[3];
- piQxelAnd[0] = (and & 0xFFFFFF) | ((and<<24) & 0xFF000000);
- piQxelAnd[1] = ((and>>8) & 0xFFFF)| ((and<<16) & 0xFFFF0000);
- piQxelAnd[2] = ((and<<8) & 0xFFFFFF00) | ((and>>16) & 0xFF);
-
- piQxelXor[0] = (xor & 0xFFFFFF) | ((xor<<24) & 0xFF000000);
- piQxelXor[1] = ((xor>>8) & 0xFFFF)| ((xor<<16) & 0xFFFF0000);
- piQxelXor[2] = ((xor<<8) & 0xFFFFFF00) | ((xor>>16) & 0xFF);
-
- leftIndex = x1 & 3;
- rightIndex = ((x1 + len) < 5)?0:(x1 + len)&3;
- nlmiddle = len;
- if(leftIndex){
- nlmiddle -= (4 - leftIndex);
- }
- if(rightIndex){
- nlmiddle -= rightIndex;
- }
- if (nlmiddle < 0)
- nlmiddle = 0;
-
- nlmiddle >>= 2;
-
- addrl += (y1 * nlwidth) + (x1 >> 2)*3 + (leftIndex?leftIndex-1:0);
-
- switch(leftIndex+len){
- case 4:
- switch(leftIndex){
- case 0:
- *addrl = DoRRop (*addrl, piQxelAnd[0], piQxelXor[0]);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[1], piQxelXor[1]);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[2], piQxelXor[2]);
- break;
- case 1:
- *addrl = DoMaskRRop (*addrl, piQxelAnd[0], piQxelXor[0], 0xFF000000);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[1], piQxelXor[1]);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[2], piQxelXor[2]);
- break;
- case 2:
- *addrl = DoMaskRRop (*addrl, piQxelAnd[1], piQxelXor[1], 0xFFFF0000);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[2], piQxelXor[2]);
- break;
- case 3:
- *addrl = DoMaskRRop (*addrl, piQxelAnd[2], piQxelXor[2], 0xFFFFFF00);
- break;
- }
- break;
- case 3:
- switch(leftIndex){
- case 0:
- *addrl = DoRRop (*addrl, piQxelAnd[0], piQxelXor[0]);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[1], piQxelXor[1]);
- addrl++;
- *addrl = DoMaskRRop (*addrl, piQxelAnd[2], piQxelXor[2], 0xFF);
- break;
- case 1:
- *addrl = DoMaskRRop (*addrl, piQxelAnd[0], piQxelXor[0], 0xFF000000);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[1], piQxelXor[1]);
- addrl++;
- *addrl = DoMaskRRop (*addrl, piQxelAnd[2], piQxelXor[2], 0xFF);
- break;
- case 2:
- *addrl = DoMaskRRop (*addrl, piQxelAnd[1], piQxelXor[1], 0xFFFF0000);
- addrl++;
- *addrl = DoMaskRRop (*addrl, piQxelAnd[2], piQxelXor[2], 0xFF);
- break;
- }
- break;
- case 2:
- if(leftIndex){
- *addrl = DoMaskRRop (*addrl, piQxelAnd[0], piQxelXor[0], 0xFF000000);
- addrl++;
- }
- else{
- *addrl = DoRRop (*addrl, piQxelAnd[0], piQxelXor[0]);
- addrl++;
- }
- *addrl = DoMaskRRop (*addrl, piQxelAnd[1], piQxelXor[1], 0xFFFF);
- break;
- case 1: /*only if leftIndex = 0 and w = 1*/
- *addrl = DoMaskRRop (*addrl, piQxelAnd[0], piQxelXor[0], 0xFFFFFF);
- break;
- case 0: /*never*/
- break;
- default:
- {
- if (rop == GXcopy){
- switch(leftIndex){
- case 0:
- break;
- case 1:
- *addrl = ((*addrl) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- addrl++;
- *addrl++ = piQxelXor[1];
- *addrl++ = piQxelXor[2];
- break;
- case 2:
- *addrl = ((*addrl) & 0xFFFF) | (piQxelXor[1] & 0xFFFF0000);
- addrl++;
- *addrl++ = piQxelXor[2];
- break;
- case 3:
- *addrl = ((*addrl) & 0xFF) | (piQxelXor[2] & 0xFFFFFF00);
- addrl++;
- break;
- }
- while(nlmiddle--){
- *addrl++ = piQxelXor[0];
- *addrl++ = piQxelXor[1];
- *addrl++ = piQxelXor[2];
- }
- switch(rightIndex){
- case 0:
- break;
- case 1:
- *addrl = ((*addrl) & 0xFF000000) | (piQxelXor[0] & 0xFFFFFF);
- break;
- case 2:
- *addrl++ = piQxelXor[0];
- *addrl = ((*addrl) & 0xFFFF0000) | (piQxelXor[1] & 0xFFFF);
- break;
- case 3:
- *addrl++ = piQxelXor[0];
- *addrl++ = piQxelXor[1];
- *addrl = ((*addrl) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- break;
- }
- }
- else{
- if(rop == GXxor){
- switch(leftIndex){
- case 0:
- break;
- case 1:
- *addrl++ ^= (piQxelXor[0]&0xFF000000);
- *addrl++ ^= piQxelXor[1];
- *addrl++ ^= piQxelXor[2];
- break;
- case 2:
- *addrl++ ^= (piQxelXor[1]& 0xFFFF0000);
- *addrl++ ^= piQxelXor[2];
- break;
- case 3:
- *addrl++ ^= (piQxelXor[2]& 0xFFFFFF00);
- break;
- }
- while(nlmiddle--){
- *addrl++ ^= piQxelXor[0];
- *addrl++ ^= piQxelXor[1];
- *addrl++ ^= piQxelXor[2];
- }
- switch(rightIndex){
- case 0:
- break;
- case 1:
- *addrl ^= (piQxelXor[0]& 0xFFFFFF);
- break;
- case 2:
- *addrl++ ^= piQxelXor[0];
- *addrl ^= (piQxelXor[1]&0xFFFF);
- break;
- case 3:
- *addrl++ ^= piQxelXor[0];
- *addrl++ ^= piQxelXor[1];
- *addrl ^= (piQxelXor[2]&0xFF);
- break;
- }
- }
- else{
- switch(leftIndex){
- case 0:
- break;
- case 1:
- *addrl = DoMaskRRop (*addrl, piQxelAnd[0], piQxelXor[0], 0xFF000000);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[1], piQxelXor[1]);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[2], piQxelXor[2]);
- addrl++;
- break;
- case 2:
- *addrl = DoMaskRRop (*addrl, piQxelAnd[1], piQxelXor[1], 0xFFFF0000);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[2], piQxelXor[2]);
- addrl++;
- break;
- case 3:
- *addrl = DoMaskRRop (*addrl, piQxelAnd[2], piQxelXor[2], 0xFFFFFF00);
- addrl++;
- break;
- }
- while(nlmiddle--){
- *addrl = DoRRop (*addrl, piQxelAnd[0], piQxelXor[0]);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[1], piQxelXor[1]);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[2], piQxelXor[2]);
- addrl++;
- }
- switch(rightIndex){
- case 0:
- break;
- case 1:
- *addrl = DoMaskRRop (*addrl, piQxelAnd[0], piQxelXor[0], 0xFFFFFF);
- addrl++;
- break;
- case 2:
- *addrl = DoRRop (*addrl, piQxelAnd[0], piQxelXor[0]);
- addrl++;
- *addrl = DoMaskRRop (*addrl, piQxelAnd[1], piQxelXor[1], 0xFFFF);
- break;
- case 3:
- *addrl = DoRRop (*addrl, piQxelAnd[0], piQxelXor[0]);
- addrl++;
- *addrl = DoRRop (*addrl, piQxelAnd[1], piQxelXor[1]);
- addrl++;
- *addrl = DoMaskRRop (*addrl, piQxelAnd[2], piQxelXor[2], 0xFF);
- break;
- }
-
- }
- }
- }
- }
-#else
- register CfbBits startmask;
- register CfbBits endmask;
-
- addrl = addrl + (y1 * nlwidth) + (x1 >> PWSH);
-
- /* all bits inside same longword */
- if ( ((x1 & PIM) + len) < PPW)
- {
- maskpartialbits(x1, len, startmask);
- *addrl = DoMaskRRop (*addrl, and, xor, startmask);
- }
- else
- {
- maskbits(x1, len, startmask, endmask, nlmiddle);
- if (rop == GXcopy)
- {
- if (startmask)
- {
- *addrl = (*addrl & ~startmask) | (xor & startmask);
- addrl++;
- }
- while (nlmiddle--)
- *addrl++ = xor;
- if (endmask)
- *addrl = (*addrl & ~endmask) | (xor & endmask);
- }
- else
- {
- if (startmask)
- {
- *addrl = DoMaskRRop (*addrl, and, xor, startmask);
- addrl++;
- }
- if (rop == GXxor)
- {
- while (nlmiddle--)
- *addrl++ ^= xor;
- }
- else
- {
- while (nlmiddle--)
- {
- *addrl = DoRRop (*addrl, and, xor);
- addrl++;
- }
- }
- if (endmask)
- *addrl = DoMaskRRop (*addrl, and, xor, endmask);
- }
- }
-#endif
-}
-
-/* vertical solid line */
-
-void
-cfbVertS(rop, and, xor, addrl, nlwidth, x1, y1, len)
-int rop;
-register CfbBits and, xor;
-register CfbBits *addrl; /* pointer to base of bitmap */
-register int nlwidth; /* width in longwords of bitmap */
-int x1, y1; /* initial point */
-register int len; /* length of line */
-{
-#if PSZ == 24
- int xIdx;
- CfbBits and2 = 0, xor2 = 0, mask = 0, mask2;
-#endif
-#ifdef PIXEL_ADDR
- register PixelType *bits = (PixelType *) addrl;
-
-#if PSZ == 24
- nlwidth <<= PWSH;
- xIdx = x1 & 3;
- bits = (PixelType *)(addrl + (y1 * nlwidth) + ((x1*3) >> 2));
-#else
- nlwidth <<= PWSH;
- bits = bits + (y1 * nlwidth) + x1;
-#endif
-#if PSZ == 24
- mask2 = 0;
- switch(xIdx){
- case 0:
- mask = 0xFF000000;
- xor &= 0xFFFFFF;
- and |= 0xFF000000;
- break;
- case 3:
- mask = 0xFF;
- xor &= 0xFFFFFF;
- xor <<= 8;
- and <<= 8;
- and |= 0xFF;
- break;
- case 1:
- mask = 0xFFFFFF;
- mask2 = 0xFFFF0000;
- xor2 = (xor>>8) & 0xFFFF;
- xor &= 0xFF;
- xor <<= 24;
- and2 = (and >> 8 ) | 0xFFFF0000;
- and <<= 24;
- and |= 0xFFFFFF;
- break;
- case 2:
- mask = 0x0000FFFF;
- mask2 = 0xFFFFFF00;
- xor2 = (xor >> 16) & 0xFF;
- xor <<= 16;
- xor &= 0xFFFF0000;
- and2 = (and >> 16) | 0xFFFFFF00;
- and <<= 16;
- and |= 0xFFFF;
- break;
- }
-#endif
-
- /*
- * special case copy and xor to avoid a test per pixel
- */
- if (rop == GXcopy)
- {
-#if PSZ == 24
- switch(xIdx){
- case 0:
- case 3:
- while (len--){
- *bits = (*bits & mask)| xor;
- bits += nlwidth;
- }
- break;
- case 1:
- case 2:
- while (len--){
- *bits = (*bits & mask)| xor;
- bits++;
- *bits = (*bits & mask2)| xor2;
- bits--;
- bits += nlwidth;
- }
- break;
- }
-#else
- while (len--)
- {
- *bits = xor;
- bits += nlwidth;
- }
-#endif
- }
- else if (rop == GXxor)
- {
-#if PSZ == 24
- switch(xIdx){
- case 0:
- case 3:
- while (len--){
- *bits ^= xor;
- bits += nlwidth;
- }
- break;
- case 1:
- case 2:
- while (len--){
- *bits ^= xor;
- bits++;
- *bits ^= xor2;
- bits--;
- bits += nlwidth;
- }
- break;
- }
-#else
- while (len--)
- {
- *bits ^= xor;
- bits += nlwidth;
- }
-#endif
- }
- else
- {
-#if PSZ == 24
- switch(xIdx){
- case 0:
- while (len--){
- *bits = DoMaskRRop(*bits, and, xor, 0x00FFFFFF);
- bits += nlwidth;
- }
- break;
- case 3:
- while (len--){
- *bits = DoMaskRRop(*bits, and, xor, 0xFFFFFF00);
- bits += nlwidth;
- }
- break;
- case 1:
- while (len--){
- *bits = DoMaskRRop(*bits, and, xor, 0xFF000000);
- bits++;
- *bits = DoMaskRRop(*bits, and2, xor2, 0x0000FFFF);
- bits--;
- bits += nlwidth;
- }
- break;
- case 2:
- while (len--){
- *bits = DoMaskRRop(*bits, and, xor, 0xFFFF0000);
- bits++;
- *bits = DoMaskRRop(*bits, and2, xor2, 0x000000FF);
- bits--;
- bits += nlwidth;
- }
- break;
- }
-#else
- while (len--)
- {
- *bits = DoRRop(*bits, and, xor);
- bits += nlwidth;
- }
-#endif
- }
-#else /* !PIXEL_ADDR */
-#if PSZ == 24
- addrl = addrl + (y1 * nlwidth) + ((x1*3) >>2);
-
- and |= ~cfbmask[(x1 & 3)<<1];
- xor &= cfbmask[(x1 & 3)<<1];
-#else
- addrl = addrl + (y1 * nlwidth) + (x1 >> PWSH);
-
- and |= ~cfbmask[x1 & PIM];
- xor &= cfbmask[x1 & PIM];
-#endif
-
- while (len--)
- {
- *addrl = DoRRop (*addrl, and, xor);
- addrl += nlwidth;
- }
-#endif
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbigblt8.c b/nx-X11/programs/Xserver/cfb/cfbigblt8.c
deleted file mode 100644
index 97356e8bd..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbigblt8.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * $Xorg: cfbigblt8.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $
- *
-Copyright 1990, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* $XFree86: xc/programs/Xserver/cfb/cfbigblt8.c,v 1.5 2001/10/28 03:33:01 tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mi.h"
-#include "cfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "cfbmskbits.h"
-#include "cfb8bit.h"
-
-void
-cfbImageGlyphBlt8 (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci;
- pointer pglyphBase;
-{
- ExtentInfoRec info; /* used by QueryGlyphExtents() */
- xRectangle backrect;
- int fgPixel;
- cfbPrivGC *priv;
-
- /*
- * We can't avoid GC validations if calling mi functions.
- */
- if ((pGC->ops->PolyFillRect == miPolyFillRect) ||
- (pGC->ops->PolyGlyphBlt == miPolyGlyphBlt))
- {
- miImageGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
- return;
- }
-
- QueryGlyphExtents(pGC->font, ppci, (unsigned long)nglyph, &info);
-
- if (info.overallWidth >= 0)
- {
- backrect.x = x;
- backrect.width = info.overallWidth;
- }
- else
- {
- backrect.x = x + info.overallWidth;
- backrect.width = -info.overallWidth;
- }
- backrect.y = y - FONTASCENT(pGC->font);
- backrect.height = FONTASCENT(pGC->font) + FONTDESCENT(pGC->font);
-
- priv = cfbGetGCPrivate(pGC);
-
- /* this code cheats by knowing that ValidateGC isn't
- * necessary for PolyFillRect
- */
-
- fgPixel = pGC->fgPixel;
-
- pGC->fgPixel = pGC->bgPixel;
- priv->xor = PFILL(pGC->bgPixel);
-
- (*pGC->ops->PolyFillRect) (pDrawable, pGC, 1, &backrect);
-
- pGC->fgPixel = fgPixel;
-
- priv->xor = PFILL(pGC->fgPixel);
-
- (*pGC->ops->PolyGlyphBlt) (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
-
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbimage.c b/nx-X11/programs/Xserver/cfb/cfbimage.c
deleted file mode 100644
index ce3909e63..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbimage.c
+++ /dev/null
@@ -1,206 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbimage.c,v 1.12 2001/10/28 03:33:01 tsi Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: cfbimage.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "gcstruct.h"
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "servermd.h"
-#include "mi.h"
-
-void
-cfbPutImage(pDraw, pGC, depth, x, y, w, h, leftPad, format, pImage)
- DrawablePtr pDraw;
- GCPtr pGC;
- int depth, x, y, w, h;
- int leftPad;
- int format;
- char *pImage;
-{
- PixmapPtr pPixmap;
-
- if ((w == 0) || (h == 0))
- return;
-
- if (format != XYPixmap)
- {
- pPixmap = GetScratchPixmapHeader(pDraw->pScreen, w+leftPad, h, depth,
- BitsPerPixel(depth), PixmapBytePad(w+leftPad, depth),
- (pointer)pImage);
- if (!pPixmap)
- return;
-
- pGC->fExpose = FALSE;
- if (format == ZPixmap)
- (void)(*pGC->ops->CopyArea)((DrawablePtr)pPixmap, pDraw, pGC,
- leftPad, 0, w, h, x, y);
- else
- (void)(*pGC->ops->CopyPlane)((DrawablePtr)pPixmap, pDraw, pGC,
- leftPad, 0, w, h, x, y, 1);
- pGC->fExpose = TRUE;
- FreeScratchPixmapHeader(pPixmap);
- }
- else
- {
- CfbBits oldFg, oldBg;
- XID gcv[3];
- CfbBits oldPlanemask;
- unsigned long i;
- long bytesPer;
-
- depth = pGC->depth;
- oldPlanemask = pGC->planemask;
- oldFg = pGC->fgPixel;
- oldBg = pGC->bgPixel;
- gcv[0] = ~0L;
- gcv[1] = 0;
- DoChangeGC(pGC, GCForeground | GCBackground, gcv, 0);
- bytesPer = (long)h * BitmapBytePad(w + leftPad);
-
- for (i = 1 << (depth-1); i != 0; i >>= 1, pImage += bytesPer)
- {
- if (i & oldPlanemask)
- {
- gcv[0] = i;
- DoChangeGC(pGC, GCPlaneMask, gcv, 0);
- ValidateGC(pDraw, pGC);
- (*pGC->ops->PutImage)(pDraw, pGC, 1, x, y, w, h, leftPad,
- XYBitmap, pImage);
- }
- }
- gcv[0] = oldPlanemask;
- gcv[1] = oldFg;
- gcv[2] = oldBg;
- DoChangeGC(pGC, GCPlaneMask | GCForeground | GCBackground, gcv, 0);
- ValidateGC(pDraw, pGC);
- }
-}
-
-void
-cfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine)
- DrawablePtr pDrawable;
- int sx, sy, w, h;
- unsigned int format;
- unsigned long planeMask;
- char *pdstLine;
-{
- BoxRec box;
- DDXPointRec ptSrc;
- RegionRec rgnDst;
- ScreenPtr pScreen;
- PixmapPtr pPixmap;
-
- if ((w == 0) || (h == 0))
- return;
- if (pDrawable->bitsPerPixel == 1)
- {
- mfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- return;
- }
- pScreen = pDrawable->pScreen;
- /*
- * XFree86 DDX empties the root borderClip when the VT is
- * switched away; this checks for that case
- */
- if (!cfbDrawableEnabled (pDrawable))
- return;
- if (format == ZPixmap)
- {
- pPixmap = GetScratchPixmapHeader(pScreen, w, h,
- pDrawable->depth, pDrawable->bitsPerPixel,
- PixmapBytePad(w,pDrawable->depth), (pointer)pdstLine);
- if (!pPixmap)
- return;
- if ((planeMask & PMSK) != PMSK)
- bzero((char *)pdstLine, pPixmap->devKind * h);
- ptSrc.x = sx + pDrawable->x;
- ptSrc.y = sy + pDrawable->y;
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = w;
- box.y2 = h;
- REGION_INIT(pScreen, &rgnDst, &box, 1);
- cfbDoBitblt(pDrawable, (DrawablePtr)pPixmap, GXcopy, &rgnDst,
- &ptSrc, planeMask);
- REGION_UNINIT(pScreen, &rgnDst);
- FreeScratchPixmapHeader(pPixmap);
- }
- else
- {
-
-#if IMAGE_BYTE_ORDER == LSBFirst
-
- pPixmap = GetScratchPixmapHeader(pScreen, w, h, /*depth*/ 1,
- /*bpp*/ 1, BitmapBytePad(w), (pointer)pdstLine);
- if (!pPixmap)
- return;
-
- ptSrc.x = sx + pDrawable->x;
- ptSrc.y = sy + pDrawable->y;
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = w;
- box.y2 = h;
- REGION_INIT(pScreen, &rgnDst, &box, 1);
- cfbCopyImagePlane (pDrawable, (DrawablePtr)pPixmap, GXcopy, &rgnDst,
- &ptSrc, planeMask);
- REGION_UNINIT(pScreen, &rgnDst);
- FreeScratchPixmapHeader(pPixmap);
-#else
- miGetImage (pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
-#endif
- }
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbline.c b/nx-X11/programs/Xserver/cfb/cfbline.c
deleted file mode 100644
index 392fe483e..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbline.c
+++ /dev/null
@@ -1,757 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbline.c,v 3.5 2001/10/28 03:33:01 tsi Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: cfbline.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "miline.h"
-
-/* single-pixel lines on a color frame buffer
-
- NON-SLOPED LINES
- horizontal lines are always drawn left to right; we have to
-move the endpoints right by one after they're swapped.
- horizontal lines will be confined to a single band of a
-region. the code finds that band (giving up if the lower
-bound of the band is above the line we're drawing); then it
-finds the first box in that band that contains part of the
-line. we clip the line to subsequent boxes in that band.
- vertical lines are always drawn top to bottom (y-increasing.)
-this requires adding one to the y-coordinate of each endpoint
-after swapping.
-
- SLOPED LINES
- when clipping a sloped line, we bring the second point inside
-the clipping box, rather than one beyond it, and then add 1 to
-the length of the line before drawing it. this lets us use
-the same box for finding the outcodes for both endpoints. since
-the equation for clipping the second endpoint to an edge gives us
-1 beyond the edge, we then have to move the point towards the
-first point by one step on the major axis.
- eventually, there will be a diagram here to explain what's going
-on. the method uses Cohen-Sutherland outcodes to determine
-outsideness, and a method similar to Pike's layers for doing the
-actual clipping.
-
-*/
-
-void
-#ifdef POLYSEGMENT
-cfbSegmentSS (pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-cfbLineSS (pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit;
-#endif
-{
- int nboxInit;
- register int nbox;
- BoxPtr pboxInit;
- register BoxPtr pbox;
-#ifndef POLYSEGMENT
- register DDXPointPtr ppt; /* pointer to list of translated points */
-#endif
-
- unsigned int oc1; /* outcode of point 1 */
- unsigned int oc2; /* outcode of point 2 */
-
- CfbBits *addrl; /* address of destination pixmap */
- int nlwidth; /* width in longwords of destination pixmap */
- int xorg, yorg; /* origin of window */
-
- int adx; /* abs values of dx and dy */
- int ady;
- int signdx; /* sign of dx and dy */
- int signdy;
- int e, e1, e2; /* bresenham error and increments */
- int len; /* length of segment */
- int axis; /* major axis */
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
-
- /* a bunch of temporaries */
- int tmp;
- register int y1, y2;
- register int x1, x2;
- RegionPtr cclip;
- cfbPrivGCPtr devPriv;
- CfbBits xor, and;
- int alu;
-
- devPriv = cfbGetGCPrivate(pGC);
- cclip = pGC->pCompositeClip;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- cfbGetLongWidthAndPointer (pDrawable, nlwidth, addrl)
-
- alu = devPriv->rop;
- xor = devPriv->xor;
- and = devPriv->and;
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-#ifdef POLYSEGMENT
- while (nseg--)
-#else
- ppt = pptInit;
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
- while(--npt)
-#endif
- {
- nbox = nboxInit;
- pbox = pboxInit;
-
-#ifdef POLYSEGMENT
- x1 = pSeg->x1 + xorg;
- y1 = pSeg->y1 + yorg;
- x2 = pSeg->x2 + xorg;
- y2 = pSeg->y2 + yorg;
- pSeg++;
-#else
- x1 = x2;
- y1 = y2;
- ++ppt;
- if (mode == CoordModePrevious)
- {
- xorg = x1;
- yorg = y1;
- }
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
-#endif
-
- if (x1 == x2) /* vertical line */
- {
- /* make the line go top to bottom of screen, keeping
- endpoint semantics
- */
- if (y1 > y2)
- {
- register int tmp;
-
- tmp = y2;
- y2 = y1 + 1;
- y1 = tmp + 1;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- y1--;
-#endif
- }
-#ifdef POLYSEGMENT
- else if (pGC->capStyle != CapNotLast)
- y2++;
-#endif
- /* get to first band that might contain part of line */
- while ((nbox) && (pbox->y2 <= y1))
- {
- pbox++;
- nbox--;
- }
-
- if (nbox)
- {
- /* stop when lower edge of box is beyond end of line */
- while((nbox) && (y2 >= pbox->y1))
- {
- if ((x1 >= pbox->x1) && (x1 < pbox->x2))
- {
- int y1t, y2t;
- /* this box has part of the line in it */
- y1t = max(y1, pbox->y1);
- y2t = min(y2, pbox->y2);
- if (y1t != y2t)
- {
- cfbVertS (alu, and, xor,
- addrl, nlwidth,
- x1, y1t, y2t-y1t);
- }
- }
- nbox--;
- pbox++;
- }
- }
-#ifndef POLYSEGMENT
- y2 = ppt->y + yorg;
-#endif
- }
- else if (y1 == y2) /* horizontal line */
- {
- /* force line from left to right, keeping
- endpoint semantics
- */
- if (x1 > x2)
- {
- register int tmp;
-
- tmp = x2;
- x2 = x1 + 1;
- x1 = tmp + 1;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- x1--;
-#endif
- }
-#ifdef POLYSEGMENT
- else if (pGC->capStyle != CapNotLast)
- x2++;
-#endif
-
- /* find the correct band */
- while( (nbox) && (pbox->y2 <= y1))
- {
- pbox++;
- nbox--;
- }
-
- /* try to draw the line, if we haven't gone beyond it */
- if ((nbox) && (pbox->y1 <= y1))
- {
- /* when we leave this band, we're done */
- tmp = pbox->y1;
- while((nbox) && (pbox->y1 == tmp))
- {
- int x1t, x2t;
-
- if (pbox->x2 <= x1)
- {
- /* skip boxes until one might contain start point */
- nbox--;
- pbox++;
- continue;
- }
-
- /* stop if left of box is beyond right of line */
- if (pbox->x1 >= x2)
- {
- nbox = 0;
- break;
- }
-
- x1t = max(x1, pbox->x1);
- x2t = min(x2, pbox->x2);
- if (x1t != x2t)
- {
- cfbHorzS (alu, and, xor,
- addrl, nlwidth,
- x1t, y1, x2t-x1t);
- }
- nbox--;
- pbox++;
- }
- }
-#ifndef POLYSEGMENT
- x2 = ppt->x + xorg;
-#endif
- }
- else /* sloped line */
- {
- CalcLineDeltas(x1, y1, x2, y2, adx, ady, signdx, signdy,
- 1, 1, octant);
-
- if (adx > ady)
- {
- axis = X_AXIS;
- e1 = ady << 1;
- e2 = e1 - (adx << 1);
- e = e1 - adx;
- }
- else
- {
- axis = Y_AXIS;
- e1 = adx << 1;
- e2 = e1 - (ady << 1);
- e = e1 - ady;
- SetYMajorOctant(octant);
- }
-
- FIXUP_ERROR(e, octant, bias);
-
- /* we have bresenham parameters and two points.
- all we have to do now is clip and draw.
- */
-
- while(nbox--)
- {
- oc1 = 0;
- oc2 = 0;
- OUTCODES(oc1, x1, y1, pbox);
- OUTCODES(oc2, x2, y2, pbox);
- if ((oc1 | oc2) == 0)
- {
- if (axis == X_AXIS)
- len = adx;
- else
- len = ady;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- len++;
-#endif
- cfbBresS (alu, and, xor,
- addrl, nlwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, len);
- break;
- }
- else if (oc1 & oc2)
- {
- pbox++;
- }
- else
- {
- int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2;
- int clip1 = 0, clip2 = 0;
- int clipdx, clipdy;
- int err;
-
- if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1,
- pbox->y2-1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady, &clip1, &clip2,
- octant, bias, oc1, oc2) == -1)
- {
- pbox++;
- continue;
- }
-
- if (axis == X_AXIS)
- len = abs(new_x2 - new_x1);
- else
- len = abs(new_y2 - new_y1);
-#ifdef POLYSEGMENT
- if (clip2 != 0 || pGC->capStyle != CapNotLast)
- len++;
-#else
- len += (clip2 != 0);
-#endif
- if (len)
- {
- /* unwind bresenham error term to first point */
- if (clip1)
- {
- clipdx = abs(new_x1 - x1);
- clipdy = abs(new_y1 - y1);
- if (axis == X_AXIS)
- err = e+((clipdy*e2) + ((clipdx-clipdy)*e1));
- else
- err = e+((clipdx*e2) + ((clipdy-clipdx)*e1));
- }
- else
- err = e;
- cfbBresS(alu, and, xor,
- addrl, nlwidth,
- signdx, signdy, axis, new_x1, new_y1,
- err, e1, e2, len);
- }
- pbox++;
- }
- } /* while (nbox--) */
- } /* sloped line */
- } /* while (nline--) */
-
-#ifndef POLYSEGMENT
- /* paint the last point if the end style isn't CapNotLast.
- (Assume that a projecting, butt, or round cap that is one
- pixel wide is the same as the single pixel of the endpoint.)
- */
-
- if ((pGC->capStyle != CapNotLast) &&
- ((ppt->x + xorg != pptInit->x + pDrawable->x) ||
- (ppt->y + yorg != pptInit->y + pDrawable->y) ||
- (ppt == pptInit + 1)))
- {
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--)
- {
- if ((x2 >= pbox->x1) &&
- (y2 >= pbox->y1) &&
- (x2 < pbox->x2) &&
- (y2 < pbox->y2))
- {
- CfbBits mask;
- CfbBits scrbits;
-
-#if PSZ == 24
- mask = cfbmask[(x2 & 3)<<1];
- addrl += (y2 * nlwidth) + ((x2*3) >> 2);
-#else
- mask = cfbmask[x2 & PIM];
- addrl += (y2 * nlwidth) + (x2 >> PWSH);
-#endif
- scrbits = *addrl;
- *addrl = (scrbits & ~mask) |
- (DoRRop (scrbits, and, xor) & mask);
- break;
- }
- else
- pbox++;
- }
- }
-#endif
-}
-
-/*
- * Draw dashed 1-pixel lines.
- */
-
-void
-#ifdef POLYSEGMENT
-cfbSegmentSD (pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-cfbLineSD( pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit;
-#endif
-{
- int nboxInit;
- register int nbox;
- BoxPtr pboxInit;
- register BoxPtr pbox;
-#ifndef POLYSEGMENT
- register DDXPointPtr ppt; /* pointer to list of translated points */
-#endif
-
- register unsigned int oc1; /* outcode of point 1 */
- register unsigned int oc2; /* outcode of point 2 */
-
- CfbBits *addrl; /* address of destination pixmap */
- int nlwidth; /* width in longwords of destination pixmap */
- int xorg, yorg; /* origin of window */
-
- int adx; /* abs values of dx and dy */
- int ady;
- int signdx; /* sign of dx and dy */
- int signdy;
- int e, e1, e2; /* bresenham error and increments */
- int len; /* length of segment */
- int axis; /* major axis */
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
- int x1, x2, y1, y2;
- RegionPtr cclip;
- cfbRRopRec rrops[2];
- unsigned char *pDash;
- int dashOffset;
- int numInDashList;
- int dashIndex;
- int isDoubleDash;
- int dashIndexTmp, dashOffsetTmp;
- int unclippedlen;
- cfbPrivGCPtr devPriv;
-
- devPriv = cfbGetGCPrivate(pGC);
- cclip = pGC->pCompositeClip;
- rrops[0].rop = devPriv->rop;
- rrops[0].and = devPriv->and;
- rrops[0].xor = devPriv->xor;
- if (pGC->alu == GXcopy)
- {
- rrops[1].rop = GXcopy;
- rrops[1].and = 0;
- rrops[1].xor = PFILL (pGC->bgPixel);
- }
- else
- {
- rrops[1].rop = cfbReduceRasterOp (pGC->alu,
- pGC->bgPixel, pGC->planemask,
- &rrops[1].and, &rrops[1].xor);
- }
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- cfbGetLongWidthAndPointer (pDrawable, nlwidth, addrl)
-
- /* compute initial dash values */
-
- pDash = (unsigned char *) pGC->dash;
- numInDashList = pGC->numInDashList;
- isDoubleDash = (pGC->lineStyle == LineDoubleDash);
- dashIndex = 0;
- dashOffset = 0;
- miStepDash ((int)pGC->dashOffset, &dashIndex, pDash,
- numInDashList, &dashOffset);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-#ifdef POLYSEGMENT
- while (nseg--)
-#else
- ppt = pptInit;
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
- while(--npt)
-#endif
- {
- nbox = nboxInit;
- pbox = pboxInit;
-
-#ifdef POLYSEGMENT
- x1 = pSeg->x1 + xorg;
- y1 = pSeg->y1 + yorg;
- x2 = pSeg->x2 + xorg;
- y2 = pSeg->y2 + yorg;
- pSeg++;
-#else
- x1 = x2;
- y1 = y2;
- ++ppt;
- if (mode == CoordModePrevious)
- {
- xorg = x1;
- yorg = y1;
- }
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
-#endif
-
- CalcLineDeltas(x1, y1, x2, y2, adx, ady, signdx, signdy, 1, 1, octant);
-
- if (adx > ady)
- {
- axis = X_AXIS;
- e1 = ady << 1;
- e2 = e1 - (adx << 1);
- e = e1 - adx;
- unclippedlen = adx;
- }
- else
- {
- axis = Y_AXIS;
- e1 = adx << 1;
- e2 = e1 - (ady << 1);
- e = e1 - ady;
- unclippedlen = ady;
- SetYMajorOctant(octant);
- }
-
- FIXUP_ERROR(e, octant, bias);
-
- /* we have bresenham parameters and two points.
- all we have to do now is clip and draw.
- */
-
- while(nbox--)
- {
- oc1 = 0;
- oc2 = 0;
- OUTCODES(oc1, x1, y1, pbox);
- OUTCODES(oc2, x2, y2, pbox);
- if ((oc1 | oc2) == 0)
- {
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- unclippedlen++;
- dashIndexTmp = dashIndex;
- dashOffsetTmp = dashOffset;
- cfbBresD (rrops,
- &dashIndexTmp, pDash, numInDashList,
- &dashOffsetTmp, isDoubleDash,
- addrl, nlwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, unclippedlen);
- break;
-#else
- cfbBresD (rrops,
- &dashIndex, pDash, numInDashList,
- &dashOffset, isDoubleDash,
- addrl, nlwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, unclippedlen);
- goto dontStep;
-#endif
- }
- else if (oc1 & oc2)
- {
- pbox++;
- }
- else /* have to clip */
- {
- int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2;
- int clip1 = 0, clip2 = 0;
- int clipdx, clipdy;
- int err;
-
- if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1,
- pbox->y2-1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady, &clip1, &clip2,
- octant, bias, oc1, oc2) == -1)
- {
- pbox++;
- continue;
- }
-
- dashIndexTmp = dashIndex;
- dashOffsetTmp = dashOffset;
-
- if (clip1)
- {
- int dlen;
-
- if (axis == X_AXIS)
- dlen = abs(new_x1 - x1);
- else
- dlen = abs(new_y1 - y1);
- miStepDash (dlen, &dashIndexTmp, pDash,
- numInDashList, &dashOffsetTmp);
- }
-
- if (axis == X_AXIS)
- len = abs(new_x2 - new_x1);
- else
- len = abs(new_y2 - new_y1);
-#ifdef POLYSEGMENT
- if (clip2 != 0 || pGC->capStyle != CapNotLast)
- len++;
-#else
- len += (clip2 != 0);
-#endif
- if (len)
- {
- /* unwind bresenham error term to first point */
- if (clip1)
- {
- clipdx = abs(new_x1 - x1);
- clipdy = abs(new_y1 - y1);
- if (axis == X_AXIS)
- err = e+((clipdy*e2) + ((clipdx-clipdy)*e1));
- else
- err = e+((clipdx*e2) + ((clipdy-clipdx)*e1));
- }
- else
- err = e;
- cfbBresD (rrops,
- &dashIndexTmp, pDash, numInDashList,
- &dashOffsetTmp, isDoubleDash,
- addrl, nlwidth,
- signdx, signdy, axis, new_x1, new_y1,
- err, e1, e2, len);
- }
- pbox++;
- }
- } /* while (nbox--) */
-#ifndef POLYSEGMENT
- /*
- * walk the dash list around to the next line
- */
- miStepDash (unclippedlen, &dashIndex, pDash,
- numInDashList, &dashOffset);
-dontStep: ;
-#endif
- } /* while (nline--) */
-
-#ifndef POLYSEGMENT
- /* paint the last point if the end style isn't CapNotLast.
- (Assume that a projecting, butt, or round cap that is one
- pixel wide is the same as the single pixel of the endpoint.)
- */
-
- if ((pGC->capStyle != CapNotLast) &&
- ((dashIndex & 1) == 0 || isDoubleDash) &&
- ((ppt->x + xorg != pptInit->x + pDrawable->x) ||
- (ppt->y + yorg != pptInit->y + pDrawable->y) ||
- (ppt == pptInit + 1)))
- {
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--)
- {
- if ((x2 >= pbox->x1) &&
- (y2 >= pbox->y1) &&
- (x2 < pbox->x2) &&
- (y2 < pbox->y2))
- {
- CfbBits mask;
- int pix;
-
- pix = 0;
- if (dashIndex & 1)
- pix = 1;
-#if PSZ == 24
- mask = cfbmask[(x2 & 3)<<1];
- addrl += (y2 * nlwidth) + ((x2 *3)>> 2);
-#else
- mask = cfbmask[x2 & PIM];
- addrl += (y2 * nlwidth) + (x2 >> PWSH);
-#endif
- *addrl = DoMaskRRop (*addrl, rrops[pix].and, rrops[pix].xor, mask);
- break;
- }
- else
- pbox++;
- }
- }
-#endif
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbmap.h b/nx-X11/programs/Xserver/cfb/cfbmap.h
deleted file mode 100644
index 802517aac..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbmap.h
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * $Xorg: cfbmap.h,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $
- *
-Copyright 1991, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* $XFree86: xc/programs/Xserver/cfb/cfbmap.h,v 3.11tsi Exp $ */
-
-/*
- * Map names around so that multiple depths can be supported simultaneously
- */
-
-#if 0
-#undef QuartetBitsTable
-#undef QuartetPixelMaskTable
-#undef cfb8ClippedLineCopy
-#undef cfb8ClippedLineGeneral
-#undef cfb8ClippedLineXor
-#undef cfb8LineSS1Rect
-#undef cfb8LineSS1RectCopy
-#undef cfb8LineSS1RectGeneral
-#undef cfb8LineSS1RectPreviousCopy
-#undef cfb8LineSS1RectXor
-#undef cfb8SegmentSS1Rect
-#undef cfb8SegmentSS1RectCopy
-#undef cfb8SegmentSS1RectGeneral
-#undef cfb8SegmentSS1RectShiftCopy
-#undef cfb8SegmentSS1RectXor
-#undef cfbAllocatePrivates
-#undef cfbBSFuncRec
-#undef cfbBitBlt
-#undef cfbBresD
-#undef cfbBresS
-#undef cfbChangeWindowAttributes
-#undef cfbCloseScreen
-#undef cfbCopyArea
-#undef cfbCopyImagePlane
-#undef cfbCopyPixmap
-#undef cfbCopyPlane
-#undef cfbCopyPlaneReduce
-#undef cfbCopyRotatePixmap
-#undef cfbCopyWindow
-#undef cfbCreateGC
-#undef cfbCreatePixmap
-#undef cfbCreateScreenResources
-#undef cfbCreateWindow
-#undef cfbDestroyPixmap
-#undef cfbDestroyWindow
-#undef cfbDoBitblt
-#undef cfbDoBitbltCopy
-#undef cfbDoBitbltGeneral
-#undef cfbDoBitbltOr
-#undef cfbDoBitbltXor
-#undef cfbFillBoxSolid
-#undef cfbFillBoxTile32
-#undef cfbFillBoxTile32sCopy
-#undef cfbFillBoxTile32sGeneral
-#undef cfbFillBoxTileOdd
-#undef cfbFillBoxTileOddCopy
-#undef cfbFillBoxTileOddGeneral
-#undef cfbFillPoly1RectCopy
-#undef cfbFillPoly1RectGeneral
-#undef cfbFillRectSolidCopy
-#undef cfbFillRectSolidGeneral
-#undef cfbFillRectSolidXor
-#undef cfbFillRectTile32Copy
-#undef cfbFillRectTile32General
-#undef cfbFillRectTileOdd
-#undef cfbFillSpanTile32sCopy
-#undef cfbFillSpanTile32sGeneral
-#undef cfbFillSpanTileOddCopy
-#undef cfbFillSpanTileOddGeneral
-#undef cfbFinishScreenInit
-#undef cfbGCFuncs
-#undef cfbGCPrivateIndex
-#undef cfbGetImage
-#undef cfbGetScreenPixmap
-#undef cfbGetSpans
-#undef cfbHorzS
-#undef cfbImageGlyphBlt8
-#undef cfbInitializeColormap
-#undef cfbInstallColormap
-#undef cfbLineSD
-#undef cfbLineSS
-#undef cfbListInstalledColormaps
-#undef cfbMapWindow
-#undef cfbMatchCommon
-#undef cfbNonTEOps
-#undef cfbNonTEOps1Rect
-#undef cfbPadPixmap
-#undef cfbPaintWindow
-#undef cfbPolyFillArcSolidCopy
-#undef cfbPolyFillArcSolidGeneral
-#undef cfbPolyFillRect
-#undef cfbPolyGlyphBlt8
-#undef cfbPolyGlyphRop8
-#undef cfbPolyPoint
-#undef cfbPositionWindow
-#undef cfbPutImage
-#undef cfbReduceRasterOp
-#undef cfbResolveColor
-#undef cfbRestoreAreas
-#undef cfbSaveAreas
-#undef cfbScreenInit
-#undef cfbScreenPrivateIndex
-#undef cfbSegmentSD
-#undef cfbSegmentSS
-#undef cfbSetScanline
-#undef cfbSetScreenPixmap
-#undef cfbSetSpans
-#undef cfbSetupScreen
-#undef cfbSolidSpansCopy
-#undef cfbSolidSpansGeneral
-#undef cfbSolidSpansXor
-#undef cfbStippleStack
-#undef cfbStippleStackTE
-#undef cfbTEGlyphBlt
-#undef cfbTEOps
-#undef cfbTEOps1Rect
-#undef cfbTile32FSCopy
-#undef cfbTile32FSGeneral
-#undef cfbUninstallColormap
-#undef cfbUnmapWindow
-#undef cfbUnnaturalStippleFS
-#undef cfbUnnaturalTileFS
-#undef cfbValidateGC
-#undef cfbVertS
-#undef cfbWindowPrivateIndex
-#undef cfbXRotatePixmap
-#undef cfbYRotatePixmap
-#undef cfbZeroPolyArcSS8Copy
-#undef cfbZeroPolyArcSS8General
-#undef cfbZeroPolyArcSS8Xor
-#undef cfbendpartial
-#undef cfbendtab
-#undef cfbmask
-#undef cfbrmask
-#undef cfbstartpartial
-#undef cfbstarttab
-#endif
-
-/* a losing vendor cpp dumps core if we define CFBNAME in terms of CATNAME */
-
-#if PSZ != 8
-
-#if PSZ == 32
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define CFBNAME(subname) cfb32##subname
-#else
-#define CFBNAME(subname) cfb32/**/subname
-#endif
-#endif
-
-#if PSZ == 24
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define CFBNAME(subname) cfb24##subname
-#else
-#define CFBNAME(subname) cfb24/**/subname
-#endif
-#endif
-
-#if PSZ == 16
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define CFBNAME(subname) cfb16##subname
-#else
-#define CFBNAME(subname) cfb16/**/subname
-#endif
-#endif
-
-#if PSZ == 4
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define CFBNAME(subname) cfb4##subname
-#else
-#define CFBNAME(subname) cfb4/**/subname
-#endif
-#endif
-
-#ifndef CFBNAME
-cfb can not hack PSZ yet
-#endif
-
-#undef CATNAME
-
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define CATNAME(prefix,subname) prefix##subname
-#else
-#define CATNAME(prefix,subname) prefix/**/subname
-#endif
-
-#define QuartetBitsTable CFBNAME(QuartetBitsTable)
-#define QuartetPixelMaskTable CFBNAME(QuartetPixelMaskTable)
-#define cfb8ClippedLineCopy CFBNAME(ClippedLineCopy)
-#define cfb8ClippedLineGeneral CFBNAME(ClippedLineGeneral )
-#define cfb8ClippedLineXor CFBNAME(ClippedLineXor)
-#define cfb8LineSS1Rect CFBNAME(LineSS1Rect)
-#define cfb8LineSS1RectCopy CFBNAME(LineSS1RectCopy)
-#define cfb8LineSS1RectGeneral CFBNAME(LineSS1RectGeneral )
-#define cfb8LineSS1RectPreviousCopy CFBNAME(LineSS1RectPreviousCopy)
-#define cfb8LineSS1RectXor CFBNAME(LineSS1RectXor)
-#define cfb8SegmentSS1Rect CFBNAME(SegmentSS1Rect)
-#define cfb8SegmentSS1RectCopy CFBNAME(SegmentSS1RectCopy)
-#define cfb8SegmentSS1RectGeneral CFBNAME(SegmentSS1RectGeneral )
-#define cfb8SegmentSS1RectShiftCopy CFBNAME(SegmentSS1RectShiftCopy)
-#define cfb8SegmentSS1RectXor CFBNAME(SegmentSS1RectXor)
-#define cfbAllocatePrivates CFBNAME(AllocatePrivates)
-#define cfbBSFuncRec CFBNAME(BSFuncRec)
-#define cfbBitBlt CFBNAME(BitBlt)
-#define cfbBresD CFBNAME(BresD)
-#define cfbBresS CFBNAME(BresS)
-#define cfbChangeWindowAttributes CFBNAME(ChangeWindowAttributes)
-#define cfbClearVisualTypes CFBNAME(cfbClearVisualTypes)
-#define cfbCloseScreen CFBNAME(CloseScreen)
-#define cfbCreateDefColormap CFBNAME (cfbCreateDefColormap)
-#define cfbCopyArea CFBNAME(CopyArea)
-#define cfbCopyImagePlane CFBNAME(CopyImagePlane)
-#define cfbCopyPixmap CFBNAME(CopyPixmap)
-#define cfbCopyPlane CFBNAME(CopyPlane)
-#define cfbCopyPlaneReduce CFBNAME(CopyPlaneReduce)
-#define cfbCopyRotatePixmap CFBNAME(CopyRotatePixmap)
-#define cfbCopyWindow CFBNAME(CopyWindow)
-#define cfbCreateGC CFBNAME(CreateGC)
-#define cfbCreatePixmap CFBNAME(CreatePixmap)
-#define cfbCreateScreenResources CFBNAME(CreateScreenResources)
-#define cfbCreateWindow CFBNAME(CreateWindow)
-#define cfbDestroyPixmap CFBNAME(DestroyPixmap)
-#define cfbDestroyWindow CFBNAME(DestroyWindow)
-#define cfbDoBitblt CFBNAME(DoBitblt)
-#define cfbDoBitbltCopy CFBNAME(DoBitbltCopy)
-#define cfbDoBitbltGeneral CFBNAME(DoBitbltGeneral)
-#define cfbDoBitbltOr CFBNAME(DoBitbltOr)
-#define cfbDoBitbltXor CFBNAME(DoBitbltXor)
-#define cfbExpandDirectColors CFBNAME(cfbExpandDirectColors)
-#define cfbFillBoxSolid CFBNAME(FillBoxSolid)
-#define cfbFillBoxTile32 CFBNAME(FillBoxTile32)
-#define cfbFillBoxTile32sCopy CFBNAME(FillBoxTile32sCopy)
-#define cfbFillBoxTile32sGeneral CFBNAME(FillBoxTile32sGeneral)
-#define cfbFillBoxTileOdd CFBNAME(FillBoxTileOdd)
-#define cfbFillBoxTileOddCopy CFBNAME(FillBoxTileOddCopy)
-#define cfbFillBoxTileOddGeneral CFBNAME(FillBoxTileOddGeneral)
-#define cfbFillPoly1RectCopy CFBNAME(FillPoly1RectCopy)
-#define cfbFillPoly1RectGeneral CFBNAME(FillPoly1RectGeneral)
-#define cfbFillRectSolidCopy CFBNAME(FillRectSolidCopy)
-#define cfbFillRectSolidGeneral CFBNAME(FillRectSolidGeneral)
-#define cfbFillRectSolidXor CFBNAME(FillRectSolidXor)
-#define cfbFillRectTile32Copy CFBNAME(FillRectTile32Copy)
-#define cfbFillRectTile32General CFBNAME(FillRectTile32General)
-#define cfbFillRectTileOdd CFBNAME(FillRectTileOdd)
-#define cfbFillSpanTile32sCopy CFBNAME(FillSpanTile32sCopy)
-#define cfbFillSpanTile32sGeneral CFBNAME(FillSpanTile32sGeneral)
-#define cfbFillSpanTileOddCopy CFBNAME(FillSpanTileOddCopy)
-#define cfbFillSpanTileOddGeneral CFBNAME(FillSpanTileOddGeneral)
-#define cfbFinishScreenInit CFBNAME(FinishScreenInit)
-#define cfbGCFuncs CFBNAME(GCFuncs)
-#define cfbGCPrivateIndex CFBNAME(GCPrivateIndex)
-#define cfbGetImage CFBNAME(GetImage)
-#define cfbGetScreenPixmap CFBNAME(GetScreenPixmap)
-#define cfbGetSpans CFBNAME(GetSpans)
-#define cfbHorzS CFBNAME(HorzS)
-#define cfbImageGlyphBlt8 CFBNAME(ImageGlyphBlt8)
-#define cfbInitializeColormap CFBNAME(InitializeColormap)
-#define cfbInitVisuals CFBNAME(cfbInitVisuals)
-#define cfbInstallColormap CFBNAME(InstallColormap)
-#define cfbLineSD CFBNAME(LineSD)
-#define cfbLineSS CFBNAME(LineSS)
-#define cfbListInstalledColormaps CFBNAME(ListInstalledColormaps)
-#define cfbMapWindow CFBNAME(MapWindow)
-#define cfbMatchCommon CFBNAME(MatchCommon)
-#define cfbNonTEOps CFBNAME(NonTEOps)
-#define cfbNonTEOps1Rect CFBNAME(NonTEOps1Rect)
-#define cfbPadPixmap CFBNAME(PadPixmap)
-#define cfbPaintWindow CFBNAME(PaintWindow)
-#define cfbPolyFillArcSolidCopy CFBNAME(PolyFillArcSolidCopy)
-#define cfbPolyFillArcSolidGeneral CFBNAME(PolyFillArcSolidGeneral)
-#define cfbPolyFillRect CFBNAME(PolyFillRect)
-#define cfbPolyGlyphBlt8 CFBNAME(PolyGlyphBlt8)
-#define cfbPolyGlyphRop8 CFBNAME(PolyGlyphRop8)
-#define cfbPolyPoint CFBNAME(PolyPoint)
-#define cfbPositionWindow CFBNAME(PositionWindow)
-#define cfbPutImage CFBNAME(PutImage)
-#define cfbReduceRasterOp CFBNAME(ReduceRasterOp)
-#define cfbResolveColor CFBNAME(ResolveColor)
-#define cfbRestoreAreas CFBNAME(RestoreAreas)
-#define cfbSaveAreas CFBNAME(SaveAreas)
-#define cfbScreenInit CFBNAME(ScreenInit)
-#define cfbScreenPrivateIndex CFBNAME(ScreenPrivateIndex)
-#define cfbSegmentSD CFBNAME(SegmentSD)
-#define cfbSegmentSS CFBNAME(SegmentSS)
-#define cfbSetScanline CFBNAME(SetScanline)
-#define cfbSetScreenPixmap CFBNAME(SetScreenPixmap)
-#define cfbSetSpans CFBNAME(SetSpans)
-#define cfbSetVisualTypes CFBNAME(cfbSetVisualTypes)
-#define cfbSetupScreen CFBNAME(SetupScreen)
-#define cfbSolidSpansCopy CFBNAME(SolidSpansCopy)
-#define cfbSolidSpansGeneral CFBNAME(SolidSpansGeneral)
-#define cfbSolidSpansXor CFBNAME(SolidSpansXor)
-#define cfbStippleStack CFBNAME(StippleStack)
-#define cfbStippleStackTE CFBNAME(StippleStackTE)
-#define cfbTEGlyphBlt CFBNAME(TEGlyphBlt)
-#define cfbTEOps CFBNAME(TEOps)
-#define cfbTEOps1Rect CFBNAME(TEOps1Rect)
-#define cfbTile32FSCopy CFBNAME(Tile32FSCopy)
-#define cfbTile32FSGeneral CFBNAME(Tile32FSGeneral)
-#define cfbUninstallColormap CFBNAME(UninstallColormap)
-#define cfbUnmapWindow CFBNAME(UnmapWindow)
-#define cfbUnnaturalStippleFS CFBNAME(UnnaturalStippleFS)
-#define cfbUnnaturalTileFS CFBNAME(UnnaturalTileFS)
-#define cfbValidateGC CFBNAME(ValidateGC)
-#define cfbVertS CFBNAME(VertS)
-#define cfbWindowPrivateIndex CFBNAME(WindowPrivateIndex)
-#define cfbXRotatePixmap CFBNAME(XRotatePixmap)
-#define cfbYRotatePixmap CFBNAME(YRotatePixmap)
-#define cfbZeroPolyArcSS8Copy CFBNAME(ZeroPolyArcSSCopy)
-#define cfbZeroPolyArcSS8General CFBNAME(ZeroPolyArcSSGeneral)
-#define cfbZeroPolyArcSS8Xor CFBNAME(ZeroPolyArcSSXor)
-#define cfbendpartial CFBNAME(endpartial)
-#define cfbendtab CFBNAME(endtab)
-#define cfbmask CFBNAME(mask)
-#define cfbrmask CFBNAME(rmask)
-#define cfbstartpartial CFBNAME(startpartial)
-#define cfbstarttab CFBNAME(starttab)
-
-#endif /* PSZ != 8 */
diff --git a/nx-X11/programs/Xserver/cfb/cfbmodule.c b/nx-X11/programs/Xserver/cfb/cfbmodule.c
deleted file mode 100644
index 095bc8416..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbmodule.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbmodule.c,v 1.8 1999/01/26 05:53:48 dawes Exp $ */
-/*
- * Copyright (C) 1998 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#define PSZ 8
-
-#ifdef XFree86LOADER
-
-#include "xf86Module.h"
-#include "cfb.h"
-
-static MODULESETUPPROTO(cfbSetup);
-
-static XF86ModuleVersionInfo VersRec =
-{
- "cfb",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- 1, 0, 0,
- ABI_CLASS_ANSIC, /* Only need the ansic layer */
- ABI_ANSIC_VERSION,
- MOD_CLASS_NONE,
- {0,0,0,0} /* signature, to be patched into the file by a tool */
-};
-
-XF86ModuleData cfbModuleData = { &VersRec, cfbSetup, NULL };
-
-static pointer
-cfbSetup(pointer module, pointer opts, int *errmaj, int *errmin)
-{
- /* This modules requires mfb, so load it */
- return LoadSubModule(module, "mfb", NULL, NULL, NULL, NULL,
- errmaj, errmin);
-}
-
-#endif
diff --git a/nx-X11/programs/Xserver/cfb/cfbmskbits.c b/nx-X11/programs/Xserver/cfb/cfbmskbits.c
deleted file mode 100644
index 05954e62c..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbmskbits.c
+++ /dev/null
@@ -1,1402 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbmskbits.c,v 3.1 1998/10/04 09:37:46 dawes Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/* $Xorg: cfbmskbits.c,v 1.3 2000/08/17 19:48:14 cpqbld Exp $ */
-
-/*
- * ==========================================================================
- * Converted to Color Frame Buffer by smarks@sun, April-May 1987. The "bit
- * numbering" in the doc below really means "byte numbering" now.
- * ==========================================================================
- */
-
-/*
- these tables are used by several macros in the cfb code.
-
- the vax numbers everything left to right, so bit indices on the
-screen match bit indices in longwords. the pc-rt and Sun number
-bits on the screen the way they would be written on paper,
-(i.e. msb to the left), and so a bit index n on the screen is
-bit index 32-n in a longword
-
- see also cfbmskbits.h
-*/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <servermd.h>
-#include "cfb.h"
-#include "cfbmskbits.h"
-
-#define _cfbBits(a) (PixelGroup)(a)
-
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define cfbBits(v) _cfbBits(v)
-#else /* BITMAP_BIT_ORDER == LSBFirst */
-#define cfbFlip2(a) ((((a) & 0x1) << 1) | (((a) & 0x2) >> 1))
-#define cfbFlip4(a) ((cfbFlip2(a) << 2) | cfbFlip2(a >> 2))
-#define cfbFlip8(a) ((cfbFlip4(a) << 4) | cfbFlip4(a >> 4))
-#define cfbFlip16(a) ((cfbFlip8(a) << 8) | cfbFlip8(a >> 8))
-#define cfbFlip32(a) ((cfbFlip16(a) << 16) | cfbFlip16(a >> 16))
-#if PGSZ == 32
-#define cfbBits(a) cfbFlip32(_cfbBits(a))
-#else /* PGSZ == 64 */
-#define cfbFlip64(a) ((cfbFlip32(a) << 32) | cfbFlip32(a >> 32))
-#define cfbBits(a) cfbFlip64(_cfbBits(a))
-#endif /* PGSZ */
-#endif /* BITMAP_BIT_ORDER */
-
-/* NOTE:
-the first element in starttab could be 0xffffffff. making it 0
-lets us deal with a full first word in the middle loop, rather
-than having to do the multiple reads and masks that we'd
-have to do if we thought it was partial.
-*/
-#if PSZ == 4
-#if PGSZ == 32
-PixelGroup cfbstarttab[] =
- {
- cfbBits(0x00000000),
- cfbBits(0x0FFFFFFF),
- cfbBits(0x00FFFFFF),
- cfbBits(0x000FFFFF),
- cfbBits(0x0000FFFF),
- cfbBits(0x00000FFF),
- cfbBits(0x000000FF),
- cfbBits(0x0000000F)
- };
-PixelGroup cfbendtab[] =
- {
- cfbBits(0x00000000),
- cfbBits(0xF0000000),
- cfbBits(0xFF000000),
- cfbBits(0xFFF00000),
- cfbBits(0xFFFF0000),
- cfbBits(0xFFFFF000),
- cfbBits(0xFFFFFF00),
- cfbBits(0xFFFFFFF0)
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbstarttab[] =
- {
- cfbBits(0x0000000000000000),
- cfbBits(0x0FFFFFFFFFFFFFFF),
- cfbBits(0x00FFFFFFFFFFFFFF),
- cfbBits(0x000FFFFFFFFFFFFF),
- cfbBits(0x0000FFFFFFFFFFFF),
- cfbBits(0x00000FFFFFFFFFFF),
- cfbBits(0x000000FFFFFFFFFF),
- cfbBits(0x0000000FFFFFFFFF),
- cfbBits(0x00000000FFFFFFFF),
- cfbBits(0x000000000FFFFFFF),
- cfbBits(0x0000000000FFFFFF),
- cfbBits(0x00000000000FFFFF),
- cfbBits(0x000000000000FFFF),
- cfbBits(0x0000000000000FFF),
- cfbBits(0x00000000000000FF),
- cfbBits(0x000000000000000F),
- };
-PixelGroup cfbendtab[] =
- {
- cfbBits(0x0000000000000000),
- cfbBits(0xF000000000000000),
- cfbBits(0xFF00000000000000),
- cfbBits(0xFFF0000000000000),
- cfbBits(0xFFFF000000000000),
- cfbBits(0xFFFFF00000000000),
- cfbBits(0xFFFFFF0000000000),
- cfbBits(0xFFFFFFF000000000),
- cfbBits(0xFFFFFFFF00000000),
- cfbBits(0xFFFFFFFFF0000000),
- cfbBits(0xFFFFFFFFFF000000),
- cfbBits(0xFFFFFFFFFFF00000),
- cfbBits(0xFFFFFFFFFFFF0000),
- cfbBits(0xFFFFFFFFFFFFF000),
- cfbBits(0xFFFFFFFFFFFFFF00),
- cfbBits(0xFFFFFFFFFFFFFFF0),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 4 */
-
-#if PSZ == 8
-#if PGSZ == 32
-PixelGroup cfbstarttab[] =
- {
- cfbBits(0x00000000),
- cfbBits(0x00FFFFFF),
- cfbBits(0x0000FFFF),
- cfbBits(0x000000FF)
- };
-PixelGroup cfbendtab[] =
- {
- cfbBits(0x00000000),
- cfbBits(0xFF000000),
- cfbBits(0xFFFF0000),
- cfbBits(0xFFFFFF00)
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbstarttab[] =
- {
- cfbBits(0x0000000000000000),
- cfbBits(0x00FFFFFFFFFFFFFF),
- cfbBits(0x0000FFFFFFFFFFFF),
- cfbBits(0x000000FFFFFFFFFF),
- cfbBits(0x00000000FFFFFFFF),
- cfbBits(0x0000000000FFFFFF),
- cfbBits(0x000000000000FFFF),
- cfbBits(0x00000000000000FF)
- };
-PixelGroup cfbendtab[] =
- {
- cfbBits(0x0000000000000000),
- cfbBits(0xFF00000000000000),
- cfbBits(0xFFFF000000000000),
- cfbBits(0xFFFFFF0000000000),
- cfbBits(0xFFFFFFFF00000000),
- cfbBits(0xFFFFFFFFFF000000),
- cfbBits(0xFFFFFFFFFFFF0000),
- cfbBits(0xFFFFFFFFFFFFFF00)
- };
-#endif /* PGSZ */
-#endif /* PSZ == 8 */
-
-#if PSZ == 16
-#if PGSZ == 32
-PixelGroup cfbstarttab[] =
- {
- cfbBits(0x00000000),
- cfbBits(0x0000FFFF),
- };
-PixelGroup cfbendtab[] =
- {
- cfbBits(0x00000000),
- cfbBits(0xFFFF0000),
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbstarttab[] =
- {
- cfbBits(0x0000000000000000),
- cfbBits(0x0000FFFFFFFFFFFF),
- cfbBits(0x00000000FFFFFFFF),
- cfbBits(0x000000000000FFFF),
- };
-PixelGroup cfbendtab[] =
- {
- cfbBits(0x0000000000000000),
- cfbBits(0xFFFF000000000000),
- cfbBits(0xFFFFFFFF00000000),
- cfbBits(0xFFFFFFFFFFFF0000),
- };
-#endif /* PGSZ */
-#endif
-
-#if PSZ == 24
-#if PGSZ == 32
-PixelGroup cfbstarttab[] =
- {
- cfbBits(0x00000000),
- cfbBits(0x000000FF),
- cfbBits(0x0000FFFF),
- cfbBits(0x00FFFFFF),
- };
-PixelGroup cfbendtab[] =
- {
- cfbBits(0x00000000),
- cfbBits(0xFFFFFF00),
- cfbBits(0xFFFF0000),
- cfbBits(0xFF000000),
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbstarttab[] =
- {
- cfbBits(0x0000000000000000),
- cfbBits(0x000000FFFFFFFFFF),
- cfbBits(0x000000000000FFFF),
- };
-PixelGroup cfbendtab[] =
- {
- cfbBits(0x0000000000000000),
- cfbBits(0xFFFFFFFFFF000000),
- cfbBits(0xFFFF000000000000),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 24 */
-
-#if PSZ == 32
-#if PGSZ == 32
-PixelGroup cfbstarttab[] =
- {
- cfbBits(0x00000000),
- };
-PixelGroup cfbendtab[] =
- {
- cfbBits(0x00000000),
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbstarttab[] =
- {
- cfbBits(0x0000000000000000),
- cfbBits(0x00000000FFFFFFFF),
- };
-PixelGroup cfbendtab[] =
- {
- cfbBits(0x0000000000000000),
- cfbBits(0xFFFFFFFF00000000),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 32 */
-
-/* a hack, for now, since the entries for 0 need to be all
- 1 bits, not all zeros.
- this means the code DOES NOT WORK for segments of length
- 0 (which is only a problem in the horizontal line code.)
-*/
-#if PSZ == 4
-#if PGSZ == 32
-PixelGroup cfbstartpartial[] =
- {
- cfbBits(0xFFFFFFFF),
- cfbBits(0x0FFFFFFF),
- cfbBits(0x00FFFFFF),
- cfbBits(0x000FFFFF),
- cfbBits(0x0000FFFF),
- cfbBits(0x00000FFF),
- cfbBits(0x000000FF),
- cfbBits(0x0000000F)
- };
-
-PixelGroup cfbendpartial[] =
- {
- cfbBits(0xFFFFFFFF),
- cfbBits(0xF0000000),
- cfbBits(0xFF000000),
- cfbBits(0xFFF00000),
- cfbBits(0xFFFF0000),
- cfbBits(0xFFFFF000),
- cfbBits(0xFFFFFF00),
- cfbBits(0xFFFFFFF0)
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbstartpartial[] =
- {
- cfbBits(0xFFFFFFFFFFFFFFFF),
- cfbBits(0x0FFFFFFFFFFFFFFF),
- cfbBits(0x00FFFFFFFFFFFFFF),
- cfbBits(0x000FFFFFFFFFFFFF),
- cfbBits(0x0000FFFFFFFFFFFF),
- cfbBits(0x00000FFFFFFFFFFF),
- cfbBits(0x000000FFFFFFFFFF),
- cfbBits(0x0000000FFFFFFFFF),
- cfbBits(0x00000000FFFFFFFF),
- cfbBits(0x000000000FFFFFFF),
- cfbBits(0x0000000000FFFFFF),
- cfbBits(0x00000000000FFFFF),
- cfbBits(0x000000000000FFFF),
- cfbBits(0x0000000000000FFF),
- cfbBits(0x00000000000000FF),
- cfbBits(0x000000000000000F),
- };
-
-PixelGroup cfbendpartial[] =
- {
- cfbBits(0xFFFFFFFFFFFFFFFF),
- cfbBits(0xF000000000000000),
- cfbBits(0xFF00000000000000),
- cfbBits(0xFFF0000000000000),
- cfbBits(0xFFFF000000000000),
- cfbBits(0xFFFFF00000000000),
- cfbBits(0xFFFFFF0000000000),
- cfbBits(0xFFFFFFF000000000),
- cfbBits(0xFFFFFFFF00000000),
- cfbBits(0xFFFFFFFFF0000000),
- cfbBits(0xFFFFFFFFFF000000),
- cfbBits(0xFFFFFFFFFFF00000),
- cfbBits(0xFFFFFFFFFFFF0000),
- cfbBits(0xFFFFFFFFFFFFF000),
- cfbBits(0xFFFFFFFFFFFFFF00),
- cfbBits(0xFFFFFFFFFFFFFFF0),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 4 */
-
-#if PSZ == 8
-#if PGSZ == 32
-PixelGroup cfbstartpartial[] =
- {
- cfbBits(0xFFFFFFFF),
- cfbBits(0x00FFFFFF),
- cfbBits(0x0000FFFF),
- cfbBits(0x000000FF)
- };
-
-PixelGroup cfbendpartial[] =
- {
- cfbBits(0xFFFFFFFF),
- cfbBits(0xFF000000),
- cfbBits(0xFFFF0000),
- cfbBits(0xFFFFFF00)
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbstartpartial[] =
- {
- cfbBits(0xFFFFFFFFFFFFFFFF),
- cfbBits(0x00FFFFFFFFFFFFFF),
- cfbBits(0x0000FFFFFFFFFFFF),
- cfbBits(0x000000FFFFFFFFFF),
- cfbBits(0x00000000FFFFFFFF),
- cfbBits(0x0000000000FFFFFF),
- cfbBits(0x000000000000FFFF),
- cfbBits(0x00000000000000FF),
- };
-
-PixelGroup cfbendpartial[] =
- {
- cfbBits(0xFFFFFFFFFFFFFFFF),
- cfbBits(0xFF00000000000000),
- cfbBits(0xFFFF000000000000),
- cfbBits(0xFFFFFF0000000000),
- cfbBits(0xFFFFFFFF00000000),
- cfbBits(0xFFFFFFFFFF000000),
- cfbBits(0xFFFFFFFFFFFF0000),
- cfbBits(0xFFFFFFFFFFFFFF00),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 8 */
-
-#if PSZ == 16
-#if PGSZ == 32
-PixelGroup cfbstartpartial[] =
- {
- cfbBits(0xFFFFFFFF),
- cfbBits(0x0000FFFF),
- };
-
-PixelGroup cfbendpartial[] =
- {
- cfbBits(0xFFFFFFFF),
- cfbBits(0xFFFF0000),
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbstartpartial[] =
- {
- cfbBits(0xFFFFFFFFFFFFFFFF),
- cfbBits(0x0000FFFFFFFFFFFF),
- cfbBits(0x00000000FFFFFFFF),
- cfbBits(0x000000000000FFFF),
- };
-
-PixelGroup cfbendpartial[] =
- {
- cfbBits(0xFFFFFFFFFFFFFFFF),
- cfbBits(0xFFFF000000000000),
- cfbBits(0xFFFFFFFF00000000),
- cfbBits(0xFFFFFFFFFFFF0000),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 16 */
-
-#if PSZ == 24
-#if PGSZ == 32
-PixelGroup cfbstartpartial[] =
- {
- cfbBits(0xFFFFFFFF),
- cfbBits(0x000000FF),
- cfbBits(0x0000FFFF),
- cfbBits(0x00FFFFFF),
- };
-
-PixelGroup cfbendpartial[] =
- {
- cfbBits(0xFFFFFFFF),
- cfbBits(0xFFFFFF00),
- cfbBits(0xFFFF0000),
- cfbBits(0xFF000000),
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbstartpartial[] =
- {
- cfbBits(0xFFFFFFFFFFFFFFFF),
- cfbBits(0x0000FFFFFFFFFFFF),
- cfbBits(0x000000FFFFFFFFFF),
- cfbBits(0x00000000FFFFFFFF),
- cfbBits(0x0000000000FFFFFF),
- cfbBits(0x000000000000FFFF),
- cfbBits(0x00000000000000FF),
- };
-
-PixelGroup cfbendpartial[] =
- {
- cfbBits(0xFFFFFFFFFFFFFFFF),
- cfbBits(0xFFFFFFFFFFFF0000),
- cfbBits(0xFFFFFFFFFF000000),
- cfbBits(0xFFFFFFFF00000000),
- cfbBits(0xFFFFFF0000000000),
- cfbBits(0xFFFF000000000000),
- cfbBits(0xFF00000000000000),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 24 */
-
-#if PSZ == 32
-#if PGSZ == 32
-PixelGroup cfbstartpartial[] =
- {
- cfbBits(0xFFFFFFFF),
- };
-
-PixelGroup cfbendpartial[] =
- {
- cfbBits(0xFFFFFFFF),
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbstartpartial[] =
- {
- cfbBits(0xFFFFFFFFFFFFFFFF),
- cfbBits(0x00000000FFFFFFFF),
- };
-
-PixelGroup cfbendpartial[] =
- {
- cfbBits(0xFFFFFFFFFFFFFFFF),
- cfbBits(0xFFFFFFFF00000000),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 32 */
-
-/* used for masking bits in bresenham lines
- mask[n] is used to mask out all but bit n in a longword (n is a
-screen position).
- rmask[n] is used to mask out the single bit at position n (n
-is a screen posiotion.)
-*/
-
-#if PSZ == 4
-#if PGSZ == 32
-PixelGroup cfbmask[] =
- {
- cfbBits(0xF0000000),
- cfbBits(0x0F000000),
- cfbBits(0x00F00000),
- cfbBits(0x000F0000),
- cfbBits(0x0000F000),
- cfbBits(0x00000F00),
- cfbBits(0x000000F0),
- cfbBits(0x0000000F)
- };
-PixelGroup cfbrmask[] =
- {
- cfbBits(0x0FFFFFFF),
- cfbBits(0xF0FFFFFF),
- cfbBits(0xFF0FFFFF),
- cfbBits(0xFFF0FFFF),
- cfbBits(0xFFFF0FFF),
- cfbBits(0xFFFFF0FF),
- cfbBits(0xFFFFFF0F),
- cfbBits(0xFFFFFFF0)
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbmask[] =
- {
- cfbBits(0xF000000000000000),
- cfbBits(0x0F00000000000000),
- cfbBits(0x00F0000000000000),
- cfbBits(0x000F000000000000),
- cfbBits(0x0000F00000000000),
- cfbBits(0x00000F0000000000),
- cfbBits(0x000000F000000000),
- cfbBits(0x0000000F00000000),
- cfbBits(0x00000000F0000000),
- cfbBits(0x000000000F000000),
- cfbBits(0x0000000000F00000),
- cfbBits(0x00000000000F0000),
- cfbBits(0x000000000000F000),
- cfbBits(0x0000000000000F00),
- cfbBits(0x00000000000000F0),
- cfbBits(0x000000000000000F),
- };
-PixelGroup cfbrmask[] =
- {
- cfbBits(0x0FFFFFFFFFFFFFFF),
- cfbBits(0xF0FFFFFFFFFFFFFF),
- cfbBits(0xFF0FFFFFFFFFFFFF),
- cfbBits(0xFFF0FFFFFFFFFFFF),
- cfbBits(0xFFFF0FFFFFFFFFFF),
- cfbBits(0xFFFFF0FFFFFFFFFF),
- cfbBits(0xFFFFFF0FFFFFFFFF),
- cfbBits(0xFFFFFFF0FFFFFFFF),
- cfbBits(0xFFFFFFFF0FFFFFFF),
- cfbBits(0xFFFFFFFFF0FFFFFF),
- cfbBits(0xFFFFFFFFFF0FFFFF),
- cfbBits(0xFFFFFFFFFFF0FFFF),
- cfbBits(0xFFFFFFFFFFFF0FFF),
- cfbBits(0xFFFFFFFFFFFFF0FF),
- cfbBits(0xFFFFFFFFFFFFFF0F),
- cfbBits(0xFFFFFFFFFFFFFFF0),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 4 */
-
-#if PSZ == 8
-#if PGSZ == 32
-PixelGroup cfbmask[] =
- {
- cfbBits(0xFF000000),
- cfbBits(0x00FF0000),
- cfbBits(0x0000FF00),
- cfbBits(0x000000FF)
- };
-PixelGroup cfbrmask[] =
- {
- cfbBits(0x00FFFFFF),
- cfbBits(0xFF00FFFF),
- cfbBits(0xFFFF00FF),
- cfbBits(0xFFFFFF00)
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbmask[] =
- {
- cfbBits(0xFF00000000000000),
- cfbBits(0x00FF000000000000),
- cfbBits(0x0000FF0000000000),
- cfbBits(0x000000FF00000000),
- cfbBits(0x00000000FF000000),
- cfbBits(0x0000000000FF0000),
- cfbBits(0x000000000000FF00),
- cfbBits(0x00000000000000FF),
- };
-PixelGroup cfbrmask[] =
- {
- cfbBits(0x00FFFFFFFFFFFFFF),
- cfbBits(0xFF00FFFFFFFFFFFF),
- cfbBits(0xFFFF00FFFFFFFFFF),
- cfbBits(0xFFFFFF00FFFFFFFF),
- cfbBits(0xFFFFFFFF00FFFFFF),
- cfbBits(0xFFFFFFFFFF00FFFF),
- cfbBits(0xFFFFFFFFFFFF00FF),
- cfbBits(0xFFFFFFFFFFFFFF00),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 8 */
-
-#if PSZ == 16
-#if PGSZ == 32
-PixelGroup cfbmask[] =
- {
- cfbBits(0xFFFF0000),
- cfbBits(0x0000FFFF),
- };
-PixelGroup cfbrmask[] =
- {
- cfbBits(0x0000FFFF),
- cfbBits(0xFFFF0000),
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbmask[] =
- {
- cfbBits(0xFFFF000000000000),
- cfbBits(0x0000FFFF00000000),
- cfbBits(0x00000000FFFF0000),
- cfbBits(0x000000000000FFFF),
- };
-PixelGroup cfbrmask[] =
- {
- cfbBits(0x0000FFFFFFFFFFFF),
- cfbBits(0xFFFF0000FFFFFFFF),
- cfbBits(0xFFFFFFFF0000FFFF),
- cfbBits(0xFFFFFFFFFFFF0000),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 16 */
-
-#if PSZ == 24
-#if PGSZ == 32
-PixelGroup cfbmask[] =
- {
- cfbBits(0xFFFFFF00),
- cfbBits(0x00000000),
- cfbBits(0x000000FF),
- cfbBits(0xFFFF0000),
- cfbBits(0x0000FFFF),
- cfbBits(0xFF000000),
- cfbBits(0x00FFFFFF),
- cfbBits(0x00000000),
- };
-PixelGroup cfbrmask[] =
- {
- cfbBits(0x000000FF),
- cfbBits(0xFFFFFFFF),
- cfbBits(0xFFFFFF00),
- cfbBits(0x0000FFFF),
- cfbBits(0xFFFF0000),
- cfbBits(0x00FFFFFF),
- cfbBits(0xFF000000),
- cfbBits(0xFFFFFFFF),
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbmask[] =
- {
- cfbBits(0xFFFFFF0000000000),
- cfbBits(0x000000FFFFFF0000),
- cfbBits(0x000000000000FFFF),
- };
-PixelGroup cfbmask2[] =
- {
- cfbBits(0x0000000000000000),
- cfbBits(0x0000000000000000),
- cfbBits(0xFF00000000000000),
- };
-PixelGroup cfbrmask[] =
- {
- cfbBits(0x000000FFFFFFFFFF),
- cfbBits(0xFFFFFF000000FFFF),
- cfbBits(0xFFFFFFFFFFFF0000),
- };
-PixelGroup cfbrmask2[] =
- {
- cfbBits(0x0000000000000000),
- cfbBits(0x0000000000000000),
- cfbBits(0x00FFFFFFFFFFFFFF),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 24 */
-
-#if PSZ == 32
-#if PGSZ == 32
-PixelGroup cfbmask[] =
- {
- cfbBits(0xFFFFFFFF),
- };
-PixelGroup cfbrmask[] =
- {
- cfbBits(0xFFFFFFFF),
- };
-#else /* PGSZ == 64 */
-PixelGroup cfbmask[] =
- {
- cfbBits(0xFFFFFFFF00000000),
- cfbBits(0x00000000FFFFFFFF),
- };
-PixelGroup cfbrmask[] =
- {
- cfbBits(0x00000000FFFFFFFF),
- cfbBits(0xFFFFFFFF00000000),
- };
-#endif /* PGSZ */
-#endif /* PSZ == 32 */
-
-/*
- * QuartetBitsTable contains PPW+1 masks whose binary values are masks in the
- * low order quartet that contain the number of bits specified in the
- * index. This table is used by getstipplepixels.
- */
-#if PSZ == 4
-PixelGroup QuartetBitsTable[] = {
-#if PGSZ == 32
-#if (BITMAP_BIT_ORDER == MSBFirst)
- 0x00000000, /* 0 - 00000000 */
- 0x00000080, /* 1 - 10000000 */
- 0x000000C0, /* 2 - 11000000 */
- 0x000000E0, /* 3 - 11100000 */
- 0x000000F0, /* 4 - 11110000 */
- 0x000000F8, /* 5 - 11111000 */
- 0x000000FC, /* 6 - 11111100 */
- 0x000000FE, /* 7 - 11111110 */
- 0x000000FF /* 8 - 11111111 */
-#else /* (BITMAP_BIT_ORDER == LSBFirst */
- 0x00000000, /* 0 - 00000000 */
- 0x00000001, /* 1 - 00000001 */
- 0x00000003, /* 2 - 00000011 */
- 0x00000007, /* 3 - 00000111 */
- 0x0000000F, /* 4 - 00001111 */
- 0x0000001F, /* 5 - 00011111 */
- 0x0000003F, /* 6 - 00111111 */
- 0x0000007F, /* 7 - 01111111 */
- 0x000000FF /* 8 - 11111111 */
-#endif /* (BITMAP_BIT_ORDER == MSBFirst) */
-#else /* PGSZ == 64 */
-#if (BITMAP_BIT_ORDER == MSBFirst)
- 0x00000000, /* 0 - 0000000000000000 */
- 0x00008000, /* 1 - 1000000000000000 */
- 0x0000C000, /* 2 - 1100000000000000 */
- 0x0000E000, /* 3 - 1110000000000000 */
- 0x0000F000, /* 4 - 1111000000000000 */
- 0x0000F800, /* 5 - 1111100000000000 */
- 0x0000FC00, /* 6 - 1111110000000000 */
- 0x0000FE00, /* 7 - 1111111000000000 */
- 0x0000FF00, /* 8 - 1111111100000000 */
- 0x0000FF80, /* 9 - 1111111110000000 */
- 0x0000FFC0, /* 10- 1111111111000000 */
- 0x0000FFE0, /* 11- 1111111111100000 */
- 0x0000FFF0, /* 12- 1111111111110000 */
- 0x0000FFF8, /* 13- 1111111111111000 */
- 0x0000FFFC, /* 14- 1111111111111100 */
- 0x0000FFFE, /* 15- 1111111111111110 */
- 0x0000FFFF, /* 16- 1111111111111111 */
-#else /* (BITMAP_BIT_ORDER == LSBFirst */
- 0x00000000, /* 0 - 0000000000000000 */
- 0x00000001, /* 1 - 0000000000000001 */
- 0x00000003, /* 2 - 0000000000000011 */
- 0x00000007, /* 3 - 0000000000000111 */
- 0x0000000F, /* 4 - 0000000000001111 */
- 0x0000001F, /* 5 - 0000000000011111 */
- 0x0000003F, /* 6 - 0000000000111111 */
- 0x0000007F, /* 7 - 0000000001111111 */
- 0x000000FF, /* 8 - 0000000011111111 */
- 0x000001FF, /* 9 - 0000000111111111 */
- 0x000003FF, /* 10- 0000001111111111 */
- 0x000007FF, /* 11- 0000011111111111 */
- 0x00000FFF, /* 12- 0000111111111111 */
- 0x00001FFF, /* 13- 0001111111111111 */
- 0x00003FFF, /* 14- 0011111111111111 */
- 0x00007FFF, /* 15- 0111111111111111 */
- 0x0000FFFF, /* 16- 1111111111111111 */
-#endif /* (BITMAP_BIT_ORDER == MSBFirst) */
-#endif /* PGSZ */
-};
-#endif /* PSZ == 4 */
-
-#if PSZ == 8
-PixelGroup QuartetBitsTable[] = {
-#if PGSZ == 32
-#if (BITMAP_BIT_ORDER == MSBFirst)
- 0x00000000, /* 0 - 0000 */
- 0x00000008, /* 1 - 1000 */
- 0x0000000C, /* 2 - 1100 */
- 0x0000000E, /* 3 - 1110 */
- 0x0000000F /* 4 - 1111 */
-#else /* (BITMAP_BIT_ORDER == LSBFirst */
- 0x00000000, /* 0 - 0000 */
- 0x00000001, /* 1 - 0001 */
- 0x00000003, /* 2 - 0011 */
- 0x00000007, /* 3 - 0111 */
- 0x0000000F /* 4 - 1111 */
-#endif /* (BITMAP_BIT_ORDER == MSBFirst) */
-#else /* PGSZ == 64 */
-#if (BITMAP_BIT_ORDER == MSBFirst)
- 0x00000000, /* 0 - 00000000 */
- 0x00000080, /* 1 - 10000000 */
- 0x000000C0, /* 2 - 11000000 */
- 0x000000E0, /* 3 - 11100000 */
- 0x000000F0, /* 4 - 11110000 */
- 0x000000F8, /* 5 - 11111000 */
- 0x000000FC, /* 6 - 11111100 */
- 0x000000FE, /* 7 - 11111110 */
- 0x000000FF /* 8 - 11111111 */
-#else /* (BITMAP_BIT_ORDER == LSBFirst */
- 0x00000000, /* 0 - 00000000 */
- 0x00000001, /* 1 - 00000001 */
- 0x00000003, /* 2 - 00000011 */
- 0x00000007, /* 3 - 00000111 */
- 0x0000000F, /* 4 - 10000111 */
- 0x0000001F, /* 5 - 00011111 */
- 0x0000003F, /* 6 - 00111111 */
- 0x0000007F, /* 7 - 01111111 */
- 0x000000FF /* 8 - 11111111 */
-#endif /* (BITMAP_BIT_ORDER == MSBFirst) */
-#endif /* PGSZ */
-};
-#endif /* PSZ == 8 */
-
-#if PSZ == 16
-PixelGroup QuartetBitsTable[] = {
-#if PGSZ == 32
-#if (BITMAP_BIT_ORDER == MSBFirst)
- 0x00000000, /* 0 - 00 */
- 0x00000002, /* 1 - 10 */
- 0x00000003, /* 2 - 11 */
-#else /* (BITMAP_BIT_ORDER == LSBFirst */
- 0x00000000, /* 0 - 00 */
- 0x00000001, /* 1 - 01 */
- 0x00000003, /* 2 - 11 */
-#endif /* (BITMAP_BIT_ORDER == MSBFirst) */
-#else /* PGSZ == 64 */
-#if (BITMAP_BIT_ORDER == MSBFirst)
- 0x00000000, /* 0 - 0000 */
- 0x00000008, /* 1 - 1000 */
- 0x0000000C, /* 2 - 1100 */
- 0x0000000E, /* 3 - 1110 */
- 0x0000000F, /* 4 - 1111 */
-#else /* (BITMAP_BIT_ORDER == LSBFirst */
- 0x00000000, /* 0 - 0000 */
- 0x00000001, /* 1 - 0001 */
- 0x00000003, /* 2 - 0011 */
- 0x00000007, /* 3 - 0111 */
- 0x0000000F, /* 4 - 1111 */
-#endif /* (BITMAP_BIT_ORDER == MSBFirst) */
-#endif /* PGSZ */
-};
-#endif /* PSZ == 16 */
-
-#if PSZ == 24
-PixelGroup QuartetBitsTable[] = {
-#if PGSZ == 32
-#if (BITMAP_BIT_ORDER == MSBFirst)
- 0x00000000, /* 0 - 0 */
- 0x00000001, /* 1 - 1 */
-#else /* (BITMAP_BIT_ORDER == LSBFirst */
- 0x00000000, /* 0 - 0 */
- 0x00000001, /* 1 - 1 */
-#endif /* (BITMAP_BIT_ORDER == MSBFirst) */
-#else /* PGSZ == 64 */
-#if (BITMAP_BIT_ORDER == MSBFirst)
- 0x00000000, /* 0 - 00 */
- 0x00000002, /* 1 - 10 */
- 0x00000003, /* 2 - 11*/
-#else /* (BITMAP_BIT_ORDER == LSBFirst */
- 0x00000000, /* 0 - 00 */
- 0x00000001, /* 1 - 01 */
- 0x00000003, /* 2 - 11 */
-#endif /* (BITMAP_BIT_ORDER == MSBFirst) */
-#endif /* PGSZ */
-};
-#endif /* PSZ == 24 */
-
-#if PSZ == 32
-PixelGroup QuartetBitsTable[] = {
-#if PGSZ == 32
-#if (BITMAP_BIT_ORDER == MSBFirst)
- 0x00000000, /* 0 - 0 */
- 0x00000001, /* 1 - 1 */
-#else /* (BITMAP_BIT_ORDER == LSBFirst */
- 0x00000000, /* 0 - 0 */
- 0x00000001, /* 1 - 1 */
-#endif /* (BITMAP_BIT_ORDER == MSBFirst) */
-#else /* PGSZ == 64 */
-#if (BITMAP_BIT_ORDER == MSBFirst)
- 0x00000000, /* 0 - 00 */
- 0x00000002, /* 1 - 10 */
- 0x00000003, /* 2 - 11*/
-#else /* (BITMAP_BIT_ORDER == LSBFirst */
- 0x00000000, /* 0 - 00 */
- 0x00000001, /* 1 - 01 */
- 0x00000003, /* 2 - 11 */
-#endif /* (BITMAP_BIT_ORDER == MSBFirst) */
-#endif /* PGSZ */
-};
-#endif /* PSZ == 32 */
-
-/*
- * QuartetPixelMaskTable is used by getstipplepixels to get a pixel mask
- * corresponding to a quartet of bits. Note: the bit/byte order dependency
- * is handled by QuartetBitsTable above.
- */
-#if PSZ == 4
-#if PGSZ == 32
-PixelGroup QuartetPixelMaskTable[] = {
- 0x00000000,
- 0x0000000F,
- 0x000000F0,
- 0x000000FF,
- 0x00000F00,
- 0x00000F0F,
- 0x00000FF0,
- 0x00000FFF,
- 0x0000F000,
- 0x0000F00F,
- 0x0000F0F0,
- 0x0000F0FF,
- 0x0000FF00,
- 0x0000FF0F,
- 0x0000FFF0,
- 0x0000FFFF,
- 0x000F0000,
- 0x000F000F,
- 0x000F00F0,
- 0x000F00FF,
- 0x000F0F00,
- 0x000F0F0F,
- 0x000F0FF0,
- 0x000F0FFF,
- 0x000FF000,
- 0x000FF00F,
- 0x000FF0F0,
- 0x000FF0FF,
- 0x000FFF00,
- 0x000FFF0F,
- 0x000FFFF0,
- 0x000FFFFF,
- 0x00F00000,
- 0x00F0000F,
- 0x00F000F0,
- 0x00F000FF,
- 0x00F00F00,
- 0x00F00F0F,
- 0x00F00FF0,
- 0x00F00FFF,
- 0x00F0F000,
- 0x00F0F00F,
- 0x00F0F0F0,
- 0x00F0F0FF,
- 0x00F0FF00,
- 0x00F0FF0F,
- 0x00F0FFF0,
- 0x00F0FFFF,
- 0x00FF0000,
- 0x00FF000F,
- 0x00FF00F0,
- 0x00FF00FF,
- 0x00FF0F00,
- 0x00FF0F0F,
- 0x00FF0FF0,
- 0x00FF0FFF,
- 0x00FFF000,
- 0x00FFF00F,
- 0x00FFF0F0,
- 0x00FFF0FF,
- 0x00FFFF00,
- 0x00FFFF0F,
- 0x00FFFFF0,
- 0x00FFFFFF,
- 0x0F000000,
- 0x0F00000F,
- 0x0F0000F0,
- 0x0F0000FF,
- 0x0F000F00,
- 0x0F000F0F,
- 0x0F000FF0,
- 0x0F000FFF,
- 0x0F00F000,
- 0x0F00F00F,
- 0x0F00F0F0,
- 0x0F00F0FF,
- 0x0F00FF00,
- 0x0F00FF0F,
- 0x0F00FFF0,
- 0x0F00FFFF,
- 0x0F0F0000,
- 0x0F0F000F,
- 0x0F0F00F0,
- 0x0F0F00FF,
- 0x0F0F0F00,
- 0x0F0F0F0F,
- 0x0F0F0FF0,
- 0x0F0F0FFF,
- 0x0F0FF000,
- 0x0F0FF00F,
- 0x0F0FF0F0,
- 0x0F0FF0FF,
- 0x0F0FFF00,
- 0x0F0FFF0F,
- 0x0F0FFFF0,
- 0x0F0FFFFF,
- 0x0FF00000,
- 0x0FF0000F,
- 0x0FF000F0,
- 0x0FF000FF,
- 0x0FF00F00,
- 0x0FF00F0F,
- 0x0FF00FF0,
- 0x0FF00FFF,
- 0x0FF0F000,
- 0x0FF0F00F,
- 0x0FF0F0F0,
- 0x0FF0F0FF,
- 0x0FF0FF00,
- 0x0FF0FF0F,
- 0x0FF0FFF0,
- 0x0FF0FFFF,
- 0x0FFF0000,
- 0x0FFF000F,
- 0x0FFF00F0,
- 0x0FFF00FF,
- 0x0FFF0F00,
- 0x0FFF0F0F,
- 0x0FFF0FF0,
- 0x0FFF0FFF,
- 0x0FFFF000,
- 0x0FFFF00F,
- 0x0FFFF0F0,
- 0x0FFFF0FF,
- 0x0FFFFF00,
- 0x0FFFFF0F,
- 0x0FFFFFF0,
- 0x0FFFFFFF,
- 0xF0000000,
- 0xF000000F,
- 0xF00000F0,
- 0xF00000FF,
- 0xF0000F00,
- 0xF0000F0F,
- 0xF0000FF0,
- 0xF0000FFF,
- 0xF000F000,
- 0xF000F00F,
- 0xF000F0F0,
- 0xF000F0FF,
- 0xF000FF00,
- 0xF000FF0F,
- 0xF000FFF0,
- 0xF000FFFF,
- 0xF00F0000,
- 0xF00F000F,
- 0xF00F00F0,
- 0xF00F00FF,
- 0xF00F0F00,
- 0xF00F0F0F,
- 0xF00F0FF0,
- 0xF00F0FFF,
- 0xF00FF000,
- 0xF00FF00F,
- 0xF00FF0F0,
- 0xF00FF0FF,
- 0xF00FFF00,
- 0xF00FFF0F,
- 0xF00FFFF0,
- 0xF00FFFFF,
- 0xF0F00000,
- 0xF0F0000F,
- 0xF0F000F0,
- 0xF0F000FF,
- 0xF0F00F00,
- 0xF0F00F0F,
- 0xF0F00FF0,
- 0xF0F00FFF,
- 0xF0F0F000,
- 0xF0F0F00F,
- 0xF0F0F0F0,
- 0xF0F0F0FF,
- 0xF0F0FF00,
- 0xF0F0FF0F,
- 0xF0F0FFF0,
- 0xF0F0FFFF,
- 0xF0FF0000,
- 0xF0FF000F,
- 0xF0FF00F0,
- 0xF0FF00FF,
- 0xF0FF0F00,
- 0xF0FF0F0F,
- 0xF0FF0FF0,
- 0xF0FF0FFF,
- 0xF0FFF000,
- 0xF0FFF00F,
- 0xF0FFF0F0,
- 0xF0FFF0FF,
- 0xF0FFFF00,
- 0xF0FFFF0F,
- 0xF0FFFFF0,
- 0xF0FFFFFF,
- 0xFF000000,
- 0xFF00000F,
- 0xFF0000F0,
- 0xFF0000FF,
- 0xFF000F00,
- 0xFF000F0F,
- 0xFF000FF0,
- 0xFF000FFF,
- 0xFF00F000,
- 0xFF00F00F,
- 0xFF00F0F0,
- 0xFF00F0FF,
- 0xFF00FF00,
- 0xFF00FF0F,
- 0xFF00FFF0,
- 0xFF00FFFF,
- 0xFF0F0000,
- 0xFF0F000F,
- 0xFF0F00F0,
- 0xFF0F00FF,
- 0xFF0F0F00,
- 0xFF0F0F0F,
- 0xFF0F0FF0,
- 0xFF0F0FFF,
- 0xFF0FF000,
- 0xFF0FF00F,
- 0xFF0FF0F0,
- 0xFF0FF0FF,
- 0xFF0FFF00,
- 0xFF0FFF0F,
- 0xFF0FFFF0,
- 0xFF0FFFFF,
- 0xFFF00000,
- 0xFFF0000F,
- 0xFFF000F0,
- 0xFFF000FF,
- 0xFFF00F00,
- 0xFFF00F0F,
- 0xFFF00FF0,
- 0xFFF00FFF,
- 0xFFF0F000,
- 0xFFF0F00F,
- 0xFFF0F0F0,
- 0xFFF0F0FF,
- 0xFFF0FF00,
- 0xFFF0FF0F,
- 0xFFF0FFF0,
- 0xFFF0FFFF,
- 0xFFFF0000,
- 0xFFFF000F,
- 0xFFFF00F0,
- 0xFFFF00FF,
- 0xFFFF0F00,
- 0xFFFF0F0F,
- 0xFFFF0FF0,
- 0xFFFF0FFF,
- 0xFFFFF000,
- 0xFFFFF00F,
- 0xFFFFF0F0,
- 0xFFFFF0FF,
- 0xFFFFFF00,
- 0xFFFFFF0F,
- 0xFFFFFFF0,
- 0xFFFFFFFF,
-};
-#else /* PGSZ == 64 */
-No QuartetPixelMaskTable for psz=PSZ
-this would be a 64K entry table, a bit much I think.
-Try breaking things in two:
-mask = table[index&0xff00]<<32 | table[index&0xff]
-#endif /* PGSZ */
-#endif /* PSZ == 4 */
-
-#if PSZ == 8
-PixelGroup QuartetPixelMaskTable[] = {
-#if PGSZ == 32
- 0x00000000,
- 0x000000FF,
- 0x0000FF00,
- 0x0000FFFF,
- 0x00FF0000,
- 0x00FF00FF,
- 0x00FFFF00,
- 0x00FFFFFF,
- 0xFF000000,
- 0xFF0000FF,
- 0xFF00FF00,
- 0xFF00FFFF,
- 0xFFFF0000,
- 0xFFFF00FF,
- 0xFFFFFF00,
- 0xFFFFFFFF
-#else /* PGSZ == 64 */
- 0x0000000000000000, 0x00000000000000FF,
- 0x000000000000FF00, 0x000000000000FFFF,
- 0x0000000000FF0000, 0x0000000000FF00FF,
- 0x0000000000FFFF00, 0x0000000000FFFFFF,
- 0x00000000FF000000, 0x00000000FF0000FF,
- 0x00000000FF00FF00, 0x00000000FF00FFFF,
- 0x00000000FFFF0000, 0x00000000FFFF00FF,
- 0x00000000FFFFFF00, 0x00000000FFFFFFFF,
- 0x000000FF00000000, 0x000000FF000000FF,
- 0x000000FF0000FF00, 0x000000FF0000FFFF,
- 0x000000FF00FF0000, 0x000000FF00FF00FF,
- 0x000000FF00FFFF00, 0x000000FF00FFFFFF,
- 0x000000FFFF000000, 0x000000FFFF0000FF,
- 0x000000FFFF00FF00, 0x000000FFFF00FFFF,
- 0x000000FFFFFF0000, 0x000000FFFFFF00FF,
- 0x000000FFFFFFFF00, 0x000000FFFFFFFFFF,
- 0x0000FF0000000000, 0x0000FF00000000FF,
- 0x0000FF000000FF00, 0x0000FF000000FFFF,
- 0x0000FF0000FF0000, 0x0000FF0000FF00FF,
- 0x0000FF0000FFFF00, 0x0000FF0000FFFFFF,
- 0x0000FF00FF000000, 0x0000FF00FF0000FF,
- 0x0000FF00FF00FF00, 0x0000FF00FF00FFFF,
- 0x0000FF00FFFF0000, 0x0000FF00FFFF00FF,
- 0x0000FF00FFFFFF00, 0x0000FF00FFFFFFFF,
- 0x0000FFFF00000000, 0x0000FFFF000000FF,
- 0x0000FFFF0000FF00, 0x0000FFFF0000FFFF,
- 0x0000FFFF00FF0000, 0x0000FFFF00FF00FF,
- 0x0000FFFF00FFFF00, 0x0000FFFF00FFFFFF,
- 0x0000FFFFFF000000, 0x0000FFFFFF0000FF,
- 0x0000FFFFFF00FF00, 0x0000FFFFFF00FFFF,
- 0x0000FFFFFFFF0000, 0x0000FFFFFFFF00FF,
- 0x0000FFFFFFFFFF00, 0x0000FFFFFFFFFFFF,
- 0x00FF000000000000, 0x00FF0000000000FF,
- 0x00FF00000000FF00, 0x00FF00000000FFFF,
- 0x00FF000000FF0000, 0x00FF000000FF00FF,
- 0x00FF000000FFFF00, 0x00FF000000FFFFFF,
- 0x00FF0000FF000000, 0x00FF0000FF0000FF,
- 0x00FF0000FF00FF00, 0x00FF0000FF00FFFF,
- 0x00FF0000FFFF0000, 0x00FF0000FFFF00FF,
- 0x00FF0000FFFFFF00, 0x00FF0000FFFFFFFF,
- 0x00FF00FF00000000, 0x00FF00FF000000FF,
- 0x00FF00FF0000FF00, 0x00FF00FF0000FFFF,
- 0x00FF00FF00FF0000, 0x00FF00FF00FF00FF,
- 0x00FF00FF00FFFF00, 0x00FF00FF00FFFFFF,
- 0x00FF00FFFF000000, 0x00FF00FFFF0000FF,
- 0x00FF00FFFF00FF00, 0x00FF00FFFF00FFFF,
- 0x00FF00FFFFFF0000, 0x00FF00FFFFFF00FF,
- 0x00FF00FFFFFFFF00, 0x00FF00FFFFFFFFFF,
- 0x00FFFF0000000000, 0x00FFFF00000000FF,
- 0x00FFFF000000FF00, 0x00FFFF000000FFFF,
- 0x00FFFF0000FF0000, 0x00FFFF0000FF00FF,
- 0x00FFFF0000FFFF00, 0x00FFFF0000FFFFFF,
- 0x00FFFF00FF000000, 0x00FFFF00FF0000FF,
- 0x00FFFF00FF00FF00, 0x00FFFF00FF00FFFF,
- 0x00FFFF00FFFF0000, 0x00FFFF00FFFF00FF,
- 0x00FFFF00FFFFFF00, 0x00FFFF00FFFFFFFF,
- 0x00FFFFFF00000000, 0x00FFFFFF000000FF,
- 0x00FFFFFF0000FF00, 0x00FFFFFF0000FFFF,
- 0x00FFFFFF00FF0000, 0x00FFFFFF00FF00FF,
- 0x00FFFFFF00FFFF00, 0x00FFFFFF00FFFFFF,
- 0x00FFFFFFFF000000, 0x00FFFFFFFF0000FF,
- 0x00FFFFFFFF00FF00, 0x00FFFFFFFF00FFFF,
- 0x00FFFFFFFFFF0000, 0x00FFFFFFFFFF00FF,
- 0x00FFFFFFFFFFFF00, 0x00FFFFFFFFFFFFFF,
- 0xFF00000000000000, 0xFF000000000000FF,
- 0xFF0000000000FF00, 0xFF0000000000FFFF,
- 0xFF00000000FF0000, 0xFF00000000FF00FF,
- 0xFF00000000FFFF00, 0xFF00000000FFFFFF,
- 0xFF000000FF000000, 0xFF000000FF0000FF,
- 0xFF000000FF00FF00, 0xFF000000FF00FFFF,
- 0xFF000000FFFF0000, 0xFF000000FFFF00FF,
- 0xFF000000FFFFFF00, 0xFF000000FFFFFFFF,
- 0xFF0000FF00000000, 0xFF0000FF000000FF,
- 0xFF0000FF0000FF00, 0xFF0000FF0000FFFF,
- 0xFF0000FF00FF0000, 0xFF0000FF00FF00FF,
- 0xFF0000FF00FFFF00, 0xFF0000FF00FFFFFF,
- 0xFF0000FFFF000000, 0xFF0000FFFF0000FF,
- 0xFF0000FFFF00FF00, 0xFF0000FFFF00FFFF,
- 0xFF0000FFFFFF0000, 0xFF0000FFFFFF00FF,
- 0xFF0000FFFFFFFF00, 0xFF0000FFFFFFFFFF,
- 0xFF00FF0000000000, 0xFF00FF00000000FF,
- 0xFF00FF000000FF00, 0xFF00FF000000FFFF,
- 0xFF00FF0000FF0000, 0xFF00FF0000FF00FF,
- 0xFF00FF0000FFFF00, 0xFF00FF0000FFFFFF,
- 0xFF00FF00FF000000, 0xFF00FF00FF0000FF,
- 0xFF00FF00FF00FF00, 0xFF00FF00FF00FFFF,
- 0xFF00FF00FFFF0000, 0xFF00FF00FFFF00FF,
- 0xFF00FF00FFFFFF00, 0xFF00FF00FFFFFFFF,
- 0xFF00FFFF00000000, 0xFF00FFFF000000FF,
- 0xFF00FFFF0000FF00, 0xFF00FFFF0000FFFF,
- 0xFF00FFFF00FF0000, 0xFF00FFFF00FF00FF,
- 0xFF00FFFF00FFFF00, 0xFF00FFFF00FFFFFF,
- 0xFF00FFFFFF000000, 0xFF00FFFFFF0000FF,
- 0xFF00FFFFFF00FF00, 0xFF00FFFFFF00FFFF,
- 0xFF00FFFFFFFF0000, 0xFF00FFFFFFFF00FF,
- 0xFF00FFFFFFFFFF00, 0xFF00FFFFFFFFFFFF,
- 0xFFFF000000000000, 0xFFFF0000000000FF,
- 0xFFFF00000000FF00, 0xFFFF00000000FFFF,
- 0xFFFF000000FF0000, 0xFFFF000000FF00FF,
- 0xFFFF000000FFFF00, 0xFFFF000000FFFFFF,
- 0xFFFF0000FF000000, 0xFFFF0000FF0000FF,
- 0xFFFF0000FF00FF00, 0xFFFF0000FF00FFFF,
- 0xFFFF0000FFFF0000, 0xFFFF0000FFFF00FF,
- 0xFFFF0000FFFFFF00, 0xFFFF0000FFFFFFFF,
- 0xFFFF00FF00000000, 0xFFFF00FF000000FF,
- 0xFFFF00FF0000FF00, 0xFFFF00FF0000FFFF,
- 0xFFFF00FF00FF0000, 0xFFFF00FF00FF00FF,
- 0xFFFF00FF00FFFF00, 0xFFFF00FF00FFFFFF,
- 0xFFFF00FFFF000000, 0xFFFF00FFFF0000FF,
- 0xFFFF00FFFF00FF00, 0xFFFF00FFFF00FFFF,
- 0xFFFF00FFFFFF0000, 0xFFFF00FFFFFF00FF,
- 0xFFFF00FFFFFFFF00, 0xFFFF00FFFFFFFFFF,
- 0xFFFFFF0000000000, 0xFFFFFF00000000FF,
- 0xFFFFFF000000FF00, 0xFFFFFF000000FFFF,
- 0xFFFFFF0000FF0000, 0xFFFFFF0000FF00FF,
- 0xFFFFFF0000FFFF00, 0xFFFFFF0000FFFFFF,
- 0xFFFFFF00FF000000, 0xFFFFFF00FF0000FF,
- 0xFFFFFF00FF00FF00, 0xFFFFFF00FF00FFFF,
- 0xFFFFFF00FFFF0000, 0xFFFFFF00FFFF00FF,
- 0xFFFFFF00FFFFFF00, 0xFFFFFF00FFFFFFFF,
- 0xFFFFFFFF00000000, 0xFFFFFFFF000000FF,
- 0xFFFFFFFF0000FF00, 0xFFFFFFFF0000FFFF,
- 0xFFFFFFFF00FF0000, 0xFFFFFFFF00FF00FF,
- 0xFFFFFFFF00FFFF00, 0xFFFFFFFF00FFFFFF,
- 0xFFFFFFFFFF000000, 0xFFFFFFFFFF0000FF,
- 0xFFFFFFFFFF00FF00, 0xFFFFFFFFFF00FFFF,
- 0xFFFFFFFFFFFF0000, 0xFFFFFFFFFFFF00FF,
- 0xFFFFFFFFFFFFFF00, 0xFFFFFFFFFFFFFFFF,
-#endif /* PGSZ */
-};
-#endif /* PSZ == 8 */
-
-#if PSZ == 16
-PixelGroup QuartetPixelMaskTable[] = {
-#if PGSZ == 32
- 0x00000000,
- 0x0000FFFF,
- 0xFFFF0000,
- 0xFFFFFFFF,
-#else /* PGSZ == 64 */
- 0x0000000000000000, 0x000000000000FFFF,
- 0x00000000FFFF0000, 0x00000000FFFFFFFF,
- 0x0000FFFF00000000, 0x0000FFFF0000FFFF,
- 0x0000FFFFFFFF0000, 0x0000FFFFFFFFFFFF,
- 0xFFFF000000000000, 0xFFFF00000000FFFF,
- 0xFFFF0000FFFF0000, 0xFFFF0000FFFFFFFF,
- 0xFFFFFFFF00000000, 0xFFFFFFFF0000FFFF,
- 0xFFFFFFFFFFFF0000, 0xFFFFFFFFFFFFFFFF,
-#endif /* PGSZ */
-};
-#endif /* PSZ == 16 */
-
-#if PSZ == 24
-PixelGroup QuartetPixelMaskTable[] = {
-#if PGSZ == 32
-/* Four pixels consist three pixel groups....*/
- 0x00000000, 0x00FFFFFF, /*0x00000000, *//*0*/
-/* 0x00000000, 0x00000000, 0x00000000,*/ /*0*/
-/* 0x00FFFFFF, 0x00000000, 0x00000000,*/ /*1*/
-/* 0xFF000000, 0x0000FFFF, 0x00000000,*/ /*2*/
-/* 0xFFFFFFFF, 0x0000FFFF, 0x00000000,*/ /*3*/
-/* 0x00000000, 0xFFFF0000, 0x000000FF,*/ /*4*/
-/* 0x00FFFFFF, 0xFFFF0000, 0x000000FF,*/ /*5*/
-/* 0xFF000000, 0xFFFFFFFF, 0x000000FF,*/ /*6*/
-/* 0xFFFFFFFF, 0xFFFFFFFF, 0x000000FF,*/ /*7*/
-/* 0x00000000, 0x00000000, 0xFFFFFF00,*/ /*8*/
-/* 0x00FFFFFF, 0x00000000, 0xFFFFFF00,*/ /*9*/
-/* 0xFF000000, 0x0000FFFF, 0xFFFFFF00,*/ /*10*/
-/* 0xFFFFFFFF, 0x0000FFFF, 0xFFFFFF00,*/ /*11*/
-/* 0x00000000, 0xFFFF0000, 0xFFFFFFFF,*/ /*12*/
-/* 0x00FFFFFF, 0xFFFF0000, 0xFFFFFFFF,*/ /*13*/
-/* 0xFF000000, 0xFFFFFFFF, 0xFFFFFFFF,*/ /*14*/
-/* 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,*/ /*15*/
-#else /* PGSZ == 64 */
- 0x0000000000000000, 0x0000000000FFFFFF,
- 0x0000FFFFFF000000, 0xFFFFFFFFFFFFFFFF
-#endif /* PGSZ */
-};
-#endif /* PSZ == 24 */
-
-#if PSZ == 32
-PixelGroup QuartetPixelMaskTable[] = {
-#if PGSZ == 32
- 0x00000000,
- 0xFFFFFFFF,
-#else /* PGSZ == 64 */
- 0x0000000000000000,
- 0x00000000FFFFFFFF,
- 0xFFFFFFFF00000000,
- 0xFFFFFFFFFFFFFFFF
-#endif /* PGSZ */
-};
-#endif /* PSZ == 32 */
-
-#if PSZ == 24
-int cfb24Shift[] =
-#if (BITMAP_BIT_ORDER == MSBFirst)
-{8,0,16,16,8,24,0,0};
-#else /* (BITMAP_BIT_ORDER == LSBFirst) */
-{0,0,24,8,16,16,8,0};
-#endif /* (BITMAP_BIT_ORDER == MSBFirst) */
-#endif
diff --git a/nx-X11/programs/Xserver/cfb/cfbmskbits.h b/nx-X11/programs/Xserver/cfb/cfbmskbits.h
deleted file mode 100644
index a803cac72..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbmskbits.h
+++ /dev/null
@@ -1,897 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbmskbits.h,v 3.13tsi Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/* $Xorg: cfbmskbits.h,v 1.3 2000/08/17 19:48:14 cpqbld Exp $ */
-/* Optimizations for PSZ == 32 added by Kyle Marvin (marvin@vitec.com) */
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#if defined(XFREE86) || ( defined(__OpenBSD__) && defined(__alpha__) ) \
- || (defined(__bsdi__))
-#include "xf86_ansic.h"
-#include "compiler.h"
-#endif
-
-/*
- * ==========================================================================
- * Converted from mfb to support memory-mapped color framebuffer by smarks@sun,
- * April-May 1987.
- *
- * The way I did the conversion was to consider each longword as an
- * array of four bytes instead of an array of 32 one-bit pixels. So
- * getbits() and putbits() retain much the same calling sequence, but
- * they move bytes around instead of bits. Of course, this entails the
- * removal of all of the one-bit-pixel dependencies from the other
- * files, but the major bit-hacking stuff should be covered here.
- *
- * I've created some new macros that make it easier to understand what's
- * going on in the pixel calculations, and that make it easier to change the
- * pixel size.
- *
- * name explanation
- * ---- -----------
- * PSZ pixel size (in bits)
- * PGSZ pixel group size (in bits)
- * PGSZB pixel group size (in bytes)
- * PGSZBMSK mask with lowest PGSZB bits set to 1
- * PPW pixels per word (pixels per pixel group)
- * PPWMSK mask with lowest PPW bits set to 1
- * PLST index of last pixel in a word (should be PPW-1)
- * PIM pixel index mask (index within a pixel group)
- * PWSH pixel-to-word shift (should be log2(PPW))
- * PMSK mask with lowest PSZ bits set to 1
- *
- *
- * Here are some sample values. In the notation cfbA,B: A is PSZ, and
- * B is PGSZB. All the other values are derived from these
- * two. This table does not show all combinations!
- *
- * name cfb8,4 cfb24,4 cfb32,4 cfb8,8 cfb24,8 cfb32,8
- * ---- ------ ------- ------ ------ ------ -------
- * PSZ 8 24 32 8 24 32
- * PGSZ 32 32 32 64 64 64
- * PGSZB 4 4 4 8 8 8
- * PGSZBMSK 0xF 0xF? 0xF 0xFF 0xFF 0xFF
- * PPW 4 1 1 8 2 2
- * PPWMSK 0xF 0x1 0x1 0xFF 0x3? 0x3
- * PLST 3 0 0 7 1 1
- * PIM 0x3 0x0 0x0 0x7 0x1? 0x1
- * PWSH 2 0 0 3 1 1
- * PMSK 0xFF 0xFFFFFF 0xFFFFFFFF 0xFF 0xFFFFFF 0xFFFFFFFF
- *
- *
- * I have also added a new macro, PFILL, that takes one pixel and
- * replicates it throughout a word. This macro definition is dependent
- * upon pixel and word size; it doesn't use macros like PPW and so
- * forth. Examples: for monochrome, PFILL(1) => 0xffffffff, PFILL(0) =>
- * 0x00000000. For 8-bit color, PFILL(0x5d) => 0x5d5d5d5d. This macro
- * is used primarily for replicating a plane mask into a word.
- *
- * Color framebuffers operations also support the notion of a plane
- * mask. This mask determines which planes of the framebuffer can be
- * altered; the others are left unchanged. I have added another
- * parameter to the putbits and putbitsrop macros that is the plane
- * mask.
- * ==========================================================================
- *
- * Keith Packard (keithp@suse.com)
- * 64bit code is no longer supported; it requires DIX support
- * for repadding images which significantly impacts performance
- */
-
-/*
- * PSZ needs to be defined before we get here. Usually it comes from a
- * -DPSZ=foo on the compilation command line.
- */
-
-#ifndef PSZ
-#define PSZ 8
-#endif
-
-/*
- * PixelGroup is the data type used to operate on groups of pixels.
- * We typedef it here to CARD32 with the assumption that you
- * want to manipulate 32 bits worth of pixels at a time as you can. If CARD32
- * is not appropriate for your server, define it to something else
- * before including this file. In this case you will also have to define
- * PGSZB to the size in bytes of PixelGroup.
- */
-#ifndef PixelGroup
-#define PixelGroup CARD32
-#define PGSZB 4
-#endif /* PixelGroup */
-
-#ifndef CfbBits
-#define CfbBits CARD32
-#endif
-
-#define PGSZ (PGSZB << 3)
-#define PPW (PGSZ/PSZ)
-#define PLST (PPW-1)
-#define PIM PLST
-#define PMSK (((PixelGroup)1 << PSZ) - 1)
-#define PPWMSK (((PixelGroup)1 << PPW) - 1) /* instead of BITMSK */
-#define PGSZBMSK (((PixelGroup)1 << PGSZB) - 1)
-
-/* set PWSH = log2(PPW) using brute force */
-
-#if PPW == 1
-#define PWSH 0
-#else
-#if PPW == 2
-#define PWSH 1
-#else
-#if PPW == 4
-#define PWSH 2
-#else
-#if PPW == 8
-#define PWSH 3
-#else
-#if PPW == 16
-#define PWSH 4
-#endif /* PPW == 16 */
-#endif /* PPW == 8 */
-#endif /* PPW == 4 */
-#endif /* PPW == 2 */
-#endif /* PPW == 1 */
-
-/* Defining PIXEL_ADDR means that individual pixels are addressable by this
- * machine (as type PixelType). A possible CFB architecture which supported
- * 8-bits-per-pixel on a non byte-addressable machine would not have this
- * defined.
- *
- * Defining FOUR_BIT_CODE means that cfb knows how to stipple on this machine;
- * eventually, stippling code for 16 and 32 bit devices should be written
- * which would allow them to also use FOUR_BIT_CODE. There isn't that
- * much to do in those cases, but it would make them quite a bit faster.
- */
-
-#if PSZ == 8
-#define PIXEL_ADDR
-typedef CARD8 PixelType;
-#define FOUR_BIT_CODE
-#endif
-
-#if PSZ == 16
-#define PIXEL_ADDR
-typedef CARD16 PixelType;
-#endif
-
-#if PSZ == 24
-#undef PMSK
-#define PMSK 0xFFFFFF
-/*#undef PIM
-#define PIM 3*/
-#define PIXEL_ADDR
-typedef CARD32 PixelType;
-#endif
-
-#if PSZ == 32
-#undef PMSK
-#define PMSK 0xFFFFFFFF
-#define PIXEL_ADDR
-typedef CARD32 PixelType;
-#endif
-
-
-/* the following notes use the following conventions:
-SCREEN LEFT SCREEN RIGHT
-in this file and maskbits.c, left and right refer to screen coordinates,
-NOT bit numbering in registers.
-
-cfbstarttab[n]
- pixels[0,n-1] = 0's pixels[n,PPW-1] = 1's
-cfbendtab[n] =
- pixels[0,n-1] = 1's pixels[n,PPW-1] = 0's
-
-cfbstartpartial[], cfbendpartial[]
- these are used as accelerators for doing putbits and masking out
-bits that are all contained between longword boudaries. the extra
-256 bytes of data seems a small price to pay -- code is smaller,
-and narrow things (e.g. window borders) go faster.
-
-the names may seem misleading; they are derived not from which end
-of the word the bits are turned on, but at which end of a scanline
-the table tends to be used.
-
-look at the tables and macros to understand boundary conditions.
-(careful readers will note that starttab[n] = ~endtab[n] for n != 0)
-
------------------------------------------------------------------------
-these two macros depend on the screen's bit ordering.
-in both of them x is a screen position. they are used to
-combine bits collected from multiple longwords into a
-single destination longword, and to unpack a single
-source longword into multiple destinations.
-
-SCRLEFT(dst, x)
- takes dst[x, PPW] and moves them to dst[0, PPW-x]
- the contents of the rest of dst are 0 ONLY IF
- dst is UNSIGNED.
- is cast as an unsigned.
- this is a right shift on the VAX, left shift on
- Sun and pc-rt.
-
-SCRRIGHT(dst, x)
- takes dst[0,x] and moves them to dst[PPW-x, PPW]
- the contents of the rest of dst are 0 ONLY IF
- dst is UNSIGNED.
- this is a left shift on the VAX, right shift on
- Sun and pc-rt.
-
-
-the remaining macros are cpu-independent; all bit order dependencies
-are built into the tables and the two macros above.
-
-maskbits(x, w, startmask, endmask, nlw)
- for a span of width w starting at position x, returns
-a mask for ragged pixels at start, mask for ragged pixels at end,
-and the number of whole longwords between the ends.
-
-maskpartialbits(x, w, mask)
- works like maskbits(), except all the pixels are in the
- same longword (i.e. (x&0xPIM + w) <= PPW)
-
-mask32bits(x, w, startmask, endmask, nlw)
- as maskbits, but does not calculate nlw. it is used by
- cfbGlyphBlt to put down glyphs <= PPW bits wide.
-
-getbits(psrc, x, w, dst)
- starting at position x in psrc (x < PPW), collect w
- pixels and put them in the screen left portion of dst.
- psrc is a longword pointer. this may span longword boundaries.
- it special-cases fetching all w bits from one longword.
-
- +--------+--------+ +--------+
- | | m |n| | ==> | m |n| |
- +--------+--------+ +--------+
- x x+w 0 w
- psrc psrc+1 dst
- m = PPW - x
- n = w - m
-
- implementation:
- get m pixels, move to screen-left of dst, zeroing rest of dst;
- get n pixels from next word, move screen-right by m, zeroing
- lower m pixels of word.
- OR the two things together.
-
-putbits(src, x, w, pdst, planemask)
- starting at position x in pdst, put down the screen-leftmost
- w bits of src. pdst is a longword pointer. this may
- span longword boundaries.
- it special-cases putting all w bits into the same longword.
-
- +--------+ +--------+--------+
- | m |n| | ==> | | m |n| |
- +--------+ +--------+--------+
- 0 w x x+w
- dst pdst pdst+1
- m = PPW - x
- n = w - m
-
- implementation:
- get m pixels, shift screen-right by x, zero screen-leftmost x
- pixels; zero rightmost m bits of *pdst and OR in stuff
- from before the semicolon.
- shift src screen-left by m, zero bits n-32;
- zero leftmost n pixels of *(pdst+1) and OR in the
- stuff from before the semicolon.
-
-putbitsrop(src, x, w, pdst, planemask, ROP)
- like putbits but calls DoRop with the rasterop ROP (see cfb.h for
- DoRop)
-
-getleftbits(psrc, w, dst)
- get the leftmost w (w<=PPW) bits from *psrc and put them
- in dst. this is used by the cfbGlyphBlt code for glyphs
- <=PPW bits wide.
-*/
-
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define BitRight(lw,n) ((lw) >> (n))
-#define BitLeft(lw,n) ((lw) << (n))
-#else /* (BITMAP_BIT_ORDER == LSBFirst) */
-#define BitRight(lw,n) ((lw) << (n))
-#define BitLeft(lw,n) ((lw) >> (n))
-#endif /* (BITMAP_BIT_ORDER == MSBFirst) */
-
-#define SCRLEFT(lw, n) BitLeft (lw, (n) * PSZ)
-#define SCRRIGHT(lw, n) BitRight(lw, (n) * PSZ)
-
-/*
- * Note that the shift direction is independent of the byte ordering of the
- * machine. The following is portable code.
- */
-#if PPW == 16
-#define PFILL(p) ( ((p)&PMSK) | \
- ((p)&PMSK) << PSZ | \
- ((p)&PMSK) << 2*PSZ | \
- ((p)&PMSK) << 3*PSZ | \
- ((p)&PMSK) << 4*PSZ | \
- ((p)&PMSK) << 5*PSZ | \
- ((p)&PMSK) << 6*PSZ | \
- ((p)&PMSK) << 7*PSZ | \
- ((p)&PMSK) << 8*PSZ | \
- ((p)&PMSK) << 9*PSZ | \
- ((p)&PMSK) << 10*PSZ | \
- ((p)&PMSK) << 11*PSZ | \
- ((p)&PMSK) << 12*PSZ | \
- ((p)&PMSK) << 13*PSZ | \
- ((p)&PMSK) << 14*PSZ | \
- ((p)&PMSK) << 15*PSZ )
-#define PFILL2(p, pf) { \
- pf = (p) & PMSK; \
- pf |= (pf << PSZ); \
- pf |= (pf << 2*PSZ); \
- pf |= (pf << 4*PSZ); \
- pf |= (pf << 8*PSZ); \
-}
-#endif /* PPW == 16 */
-#if PPW == 8
-#define PFILL(p) ( ((p)&PMSK) | \
- ((p)&PMSK) << PSZ | \
- ((p)&PMSK) << 2*PSZ | \
- ((p)&PMSK) << 3*PSZ | \
- ((p)&PMSK) << 4*PSZ | \
- ((p)&PMSK) << 5*PSZ | \
- ((p)&PMSK) << 6*PSZ | \
- ((p)&PMSK) << 7*PSZ )
-#define PFILL2(p, pf) { \
- pf = (p) & PMSK; \
- pf |= (pf << PSZ); \
- pf |= (pf << 2*PSZ); \
- pf |= (pf << 4*PSZ); \
-}
-#endif
-#if PPW == 4
-#define PFILL(p) ( ((p)&PMSK) | \
- ((p)&PMSK) << PSZ | \
- ((p)&PMSK) << 2*PSZ | \
- ((p)&PMSK) << 3*PSZ )
-#define PFILL2(p, pf) { \
- pf = (p) & PMSK; \
- pf |= (pf << PSZ); \
- pf |= (pf << 2*PSZ); \
-}
-#endif
-#if PPW == 2
-#define PFILL(p) ( ((p)&PMSK) | \
- ((p)&PMSK) << PSZ )
-#define PFILL2(p, pf) { \
- pf = (p) & PMSK; \
- pf |= (pf << PSZ); \
-}
-#endif
-#if PPW == 1
-#define PFILL(p) (p)
-#define PFILL2(p,pf) (pf = (p))
-#endif
-
-/*
- * Reduced raster op - using precomputed values, perform the above
- * in three instructions
- */
-
-#define DoRRop(dst, and, xor) (((dst) & (and)) ^ (xor))
-
-#define DoMaskRRop(dst, and, xor, mask) \
- (((dst) & ((and) | ~(mask))) ^ (xor & mask))
-
-#if PSZ != 32 || PPW != 1
-
-# if (PSZ == 24 && PPW == 1)
-#define maskbits(x, w, startmask, endmask, nlw) {\
- startmask = cfbstarttab[(x)&3]; \
- endmask = cfbendtab[((x)+(w)) & 3]; \
- nlw = ((((x)+(w))*3)>>2) - (((x)*3 +3)>>2); \
-}
-
-#define mask32bits(x, w, startmask, endmask) \
- startmask = cfbstarttab[(x)&3]; \
- endmask = cfbendtab[((x)+(w)) & 3];
-
-#define maskpartialbits(x, w, mask) \
- mask = cfbstartpartial[(x) & 3] & cfbendpartial[((x)+(w)) & 3];
-
-#define maskbits24(x, w, startmask, endmask, nlw) \
- startmask = cfbstarttab24[(x) & 3]; \
- endmask = cfbendtab24[((x)+(w)) & 3]; \
- if (startmask){ \
- nlw = (((w) - (4 - ((x) & 3))) >> 2); \
- } else { \
- nlw = (w) >> 2; \
- }
-
-#define getbits24(psrc, dst, index) {\
- register int idx; \
- switch(idx = ((index)&3)<<1){ \
- case 0: \
- dst = (*(psrc) &cfbmask[idx]); \
- break; \
- case 6: \
- dst = BitLeft((*(psrc) &cfbmask[idx]), cfb24Shift[idx]); \
- break; \
- default: \
- dst = BitLeft((*(psrc) &cfbmask[idx]), cfb24Shift[idx]) | \
- BitRight(((*((psrc)+1)) &cfbmask[idx+1]), cfb24Shift[idx+1]); \
- }; \
-}
-
-#define putbits24(src, w, pdst, planemask, index) {\
- register PixelGroup dstpixel; \
- register unsigned int idx; \
- switch(idx = ((index)&3)<<1){ \
- case 0: \
- dstpixel = (*(pdst) &cfbmask[idx]); \
- break; \
- case 6: \
- dstpixel = BitLeft((*(pdst) &cfbmask[idx]), cfb24Shift[idx]); \
- break; \
- default: \
- dstpixel = BitLeft((*(pdst) &cfbmask[idx]), cfb24Shift[idx])| \
- BitRight(((*((pdst)+1)) &cfbmask[idx+1]), cfb24Shift[idx+1]); \
- }; \
- dstpixel &= ~(planemask); \
- dstpixel |= (src & planemask); \
- *(pdst) &= cfbrmask[idx]; \
- switch(idx){ \
- case 0: \
- *(pdst) |= (dstpixel & cfbmask[idx]); \
- break; \
- case 2: \
- case 4: \
- pdst++;idx++; \
- *(pdst) = ((*(pdst)) & cfbrmask[idx]) | \
- (BitLeft(dstpixel, cfb24Shift[idx]) & cfbmask[idx]); \
- pdst--;idx--; \
- case 6: \
- *(pdst) |= (BitRight(dstpixel, cfb24Shift[idx]) & cfbmask[idx]); \
- break; \
- }; \
-}
-
-#define putbitsrop24(src, x, pdst, planemask, rop) \
-{ \
- register PixelGroup t1, dstpixel; \
- register unsigned int idx; \
- switch(idx = (x)<<1){ \
- case 0: \
- dstpixel = (*(pdst) &cfbmask[idx]); \
- break; \
- case 6: \
- dstpixel = BitLeft((*(pdst) &cfbmask[idx]), cfb24Shift[idx]); \
- break; \
- default: \
- dstpixel = BitLeft((*(pdst) &cfbmask[idx]), cfb24Shift[idx])| \
- BitRight(((*((pdst)+1)) &cfbmask[idx+1]), cfb24Shift[idx+1]); \
- }; \
- DoRop(t1, rop, (src), dstpixel); \
- dstpixel &= ~planemask; \
- dstpixel |= (t1 & planemask); \
- *(pdst) &= cfbrmask[idx]; \
- switch(idx){ \
- case 0: \
- *(pdst) |= (dstpixel & cfbmask[idx]); \
- break; \
- case 2: \
- case 4: \
- *((pdst)+1) = ((*((pdst)+1)) & cfbrmask[idx+1]) | \
- (BitLeft(dstpixel, cfb24Shift[idx+1]) & (cfbmask[idx+1])); \
- case 6: \
- *(pdst) |= (BitRight(dstpixel, cfb24Shift[idx]) & cfbmask[idx]); \
- }; \
-}
-# else /* PSZ == 24 && PPW == 1 */
-#define maskbits(x, w, startmask, endmask, nlw) \
- startmask = cfbstarttab[(x)&PIM]; \
- endmask = cfbendtab[((x)+(w)) & PIM]; \
- if (startmask) \
- nlw = (((w) - (PPW - ((x)&PIM))) >> PWSH); \
- else \
- nlw = (w) >> PWSH;
-
-#define maskpartialbits(x, w, mask) \
- mask = cfbstartpartial[(x) & PIM] & cfbendpartial[((x) + (w)) & PIM];
-
-#define mask32bits(x, w, startmask, endmask) \
- startmask = cfbstarttab[(x)&PIM]; \
- endmask = cfbendtab[((x)+(w)) & PIM];
-
-/* FIXME */
-#define maskbits24(x, w, startmask, endmask, nlw) \
- abort()
-#define getbits24(psrc, dst, index) \
- abort()
-#define putbits24(src, w, pdst, planemask, index) \
- abort()
-#define putbitsrop24(src, x, pdst, planemask, rop) \
- abort()
-
-#endif /* PSZ == 24 && PPW == 1 */
-
-#define getbits(psrc, x, w, dst) \
-if ( ((x) + (w)) <= PPW) \
-{ \
- dst = SCRLEFT(*(psrc), (x)); \
-} \
-else \
-{ \
- int m; \
- m = PPW-(x); \
- dst = (SCRLEFT(*(psrc), (x)) & cfbendtab[m]) | \
- (SCRRIGHT(*((psrc)+1), m) & cfbstarttab[m]); \
-}
-
-
-#define putbits(src, x, w, pdst, planemask) \
-if ( ((x)+(w)) <= PPW) \
-{ \
- PixelGroup tmpmask; \
- maskpartialbits((x), (w), tmpmask); \
- tmpmask &= PFILL(planemask); \
- *(pdst) = (*(pdst) & ~tmpmask) | (SCRRIGHT(src, x) & tmpmask); \
-} \
-else \
-{ \
- unsigned int m; \
- unsigned int n; \
- PixelGroup pm = PFILL(planemask); \
- m = PPW-(x); \
- n = (w) - m; \
- *(pdst) = (*(pdst) & (cfbendtab[x] | ~pm)) | \
- (SCRRIGHT(src, x) & (cfbstarttab[x] & pm)); \
- *((pdst)+1) = (*((pdst)+1) & (cfbstarttab[n] | ~pm)) | \
- (SCRLEFT(src, m) & (cfbendtab[n] & pm)); \
-}
-#if defined(__GNUC__) && defined(mc68020)
-#undef getbits
-#define FASTGETBITS(psrc, x, w, dst) \
- asm ("bfextu %3{%1:%2},%0" \
- : "=d" (dst) : "di" (x), "di" (w), "o" (*(char *)(psrc)))
-
-#define getbits(psrc,x,w,dst) \
-{ \
- FASTGETBITS(psrc, (x) * PSZ, (w) * PSZ, dst); \
- dst = SCRLEFT(dst,PPW-(w)); \
-}
-
-#define FASTPUTBITS(src, x, w, pdst) \
- asm ("bfins %3,%0{%1:%2}" \
- : "=o" (*(char *)(pdst)) \
- : "di" (x), "di" (w), "d" (src), "0" (*(char *) (pdst)))
-
-#undef putbits
-#define putbits(src, x, w, pdst, planemask) \
-{ \
- if (planemask != PMSK) { \
- PixelGroup _m, _pm; \
- FASTGETBITS(pdst, (x) * PSZ , (w) * PSZ, _m); \
- PFILL2(planemask, _pm); \
- _m &= (~_pm); \
- _m |= (SCRRIGHT(src, PPW-(w)) & _pm); \
- FASTPUTBITS(_m, (x) * PSZ, (w) * PSZ, pdst); \
- } else { \
- FASTPUTBITS(SCRRIGHT(src, PPW-(w)), (x) * PSZ, (w) * PSZ, pdst); \
- } \
-}
-
-
-#endif /* mc68020 */
-
-#define putbitsrop(src, x, w, pdst, planemask, rop) \
-if ( ((x)+(w)) <= PPW) \
-{ \
- PixelGroup tmpmask; \
- PixelGroup t1, t2; \
- maskpartialbits((x), (w), tmpmask); \
- PFILL2(planemask, t1); \
- tmpmask &= t1; \
- t1 = SCRRIGHT((src), (x)); \
- DoRop(t2, rop, t1, *(pdst)); \
- *(pdst) = (*(pdst) & ~tmpmask) | (t2 & tmpmask); \
-} \
-else \
-{ \
- CfbBits m; \
- CfbBits n; \
- PixelGroup t1, t2; \
- PixelGroup pm; \
- PFILL2(planemask, pm); \
- m = PPW-(x); \
- n = (w) - m; \
- t1 = SCRRIGHT((src), (x)); \
- DoRop(t2, rop, t1, *(pdst)); \
- *(pdst) = (*(pdst) & (cfbendtab[x] | ~pm)) | (t2 & (cfbstarttab[x] & pm));\
- t1 = SCRLEFT((src), m); \
- DoRop(t2, rop, t1, *((pdst) + 1)); \
- *((pdst)+1) = (*((pdst)+1) & (cfbstarttab[n] | ~pm)) | \
- (t2 & (cfbendtab[n] & pm)); \
-}
-
-#else /* PSZ == 32 && PPW == 1*/
-
-/*
- * These macros can be optimized for 32-bit pixels since there is no
- * need to worry about left/right edge masking. These macros were
- * derived from the above using the following reductions:
- *
- * - x & PIW = 0 [since PIW = 0]
- * - all masking tables are only indexed by 0 [ due to above ]
- * - cfbstartab[0] and cfbendtab[0] = 0 [ no left/right edge masks]
- * - cfbstartpartial[0] and cfbendpartial[0] = ~0 [no partial pixel mask]
- *
- * Macro reduction based upon constants cannot be performed automatically
- * by the compiler since it does not know the contents of the masking
- * arrays in cfbmskbits.c.
- */
-#define maskbits(x, w, startmask, endmask, nlw) \
- startmask = endmask = 0; \
- nlw = (w);
-
-#define maskpartialbits(x, w, mask) \
- mask = 0xFFFFFFFF;
-
-#define mask32bits(x, w, startmask, endmask) \
- startmask = endmask = 0;
-
-/*
- * For 32-bit operations, getbits(), putbits(), and putbitsrop()
- * will only be invoked with x = 0 and w = PPW (1). The getbits()
- * macro is only called within left/right edge logic, which doesn't
- * happen for 32-bit pixels.
- */
-#define getbits(psrc, x, w, dst) (dst) = *(psrc)
-
-#define putbits(src, x, w, pdst, planemask) \
- *(pdst) = (*(pdst) & ~planemask) | (src & planemask);
-
-#define putbitsrop(src, x, w, pdst, planemask, rop) \
-{ \
- PixelGroup t1; \
- DoRop(t1, rop, (src), *(pdst)); \
- *(pdst) = (*(pdst) & ~planemask) | (t1 & planemask); \
-}
-
-#endif /* PSZ != 32 */
-
-/*
- * Use these macros only when you're using the MergeRop stuff
- * in ../mfb/mergerop.h
- */
-
-/* useful only when not spanning destination longwords */
-#if PSZ == 24
-#define putbitsmropshort24(src,x,w,pdst,index) {\
- PixelGroup _tmpmask; \
- PixelGroup _t1; \
- maskpartialbits ((x), (w), _tmpmask); \
- _t1 = SCRRIGHT((src), (x)); \
- DoMaskMergeRop24(_t1, pdst, _tmpmask, index); \
-}
-#endif
-#define putbitsmropshort(src,x,w,pdst) {\
- PixelGroup _tmpmask; \
- PixelGroup _t1; \
- maskpartialbits ((x), (w), _tmpmask); \
- _t1 = SCRRIGHT((src), (x)); \
- *pdst = DoMaskMergeRop(_t1, *pdst, _tmpmask); \
-}
-
-/* useful only when spanning destination longwords */
-#define putbitsmroplong(src,x,w,pdst) { \
- PixelGroup _startmask, _endmask; \
- int _m; \
- PixelGroup _t1; \
- _m = PPW - (x); \
- _startmask = cfbstarttab[x]; \
- _endmask = cfbendtab[(w) - _m]; \
- _t1 = SCRRIGHT((src), (x)); \
- pdst[0] = DoMaskMergeRop(_t1,pdst[0],_startmask); \
- _t1 = SCRLEFT ((src),_m); \
- pdst[1] = DoMaskMergeRop(_t1,pdst[1],_endmask); \
-}
-
-#define putbitsmrop(src,x,w,pdst) \
-if ((x) + (w) <= PPW) {\
- putbitsmropshort(src,x,w,pdst); \
-} else { \
- putbitsmroplong(src,x,w,pdst); \
-}
-
-#if GETLEFTBITS_ALIGNMENT == 1
-#define getleftbits(psrc, w, dst) dst = *((unsigned int *) psrc)
-#define getleftbits24(psrc, w, dst, idx){ \
- regiseter int index; \
- switch(index = ((idx)&3)<<1){ \
- case 0: \
- dst = (*((unsigned int *) psrc))&cfbmask[index]; \
- break; \
- case 2: \
- case 4: \
- dst = BitLeft(((*((unsigned int *) psrc))&cfbmask[index]), cfb24Shift[index]); \
- dst |= BitRight(((*((unsigned int *) psrc)+1)&cfbmask[index]), cfb4Shift[index]); \
- break; \
- case 6: \
- dst = BitLeft((*((unsigned int *) psrc)),cfb24Shift[index]); \
- break; \
- }; \
-}
-#endif /* GETLEFTBITS_ALIGNMENT == 1 */
-
-#define getglyphbits(psrc, x, w, dst) \
-{ \
- dst = BitLeft((unsigned) *(psrc), (x)); \
- if ( ((x) + (w)) > 32) \
- dst |= (BitRight((unsigned) *((psrc)+1), 32-(x))); \
-}
-#if GETLEFTBITS_ALIGNMENT == 2
-#define getleftbits(psrc, w, dst) \
- { \
- if ( ((int)(psrc)) & 0x01 ) \
- getglyphbits( ((unsigned int *)(((char *)(psrc))-1)), 8, (w), (dst) ); \
- else \
- dst = *((unsigned int *) psrc); \
- }
-#endif /* GETLEFTBITS_ALIGNMENT == 2 */
-
-#if GETLEFTBITS_ALIGNMENT == 4
-#define getleftbits(psrc, w, dst) \
- { \
- int off, off_b; \
- off_b = (off = ( ((int)(psrc)) & 0x03)) << 3; \
- getglyphbits( \
- (unsigned int *)( ((char *)(psrc)) - off), \
- (off_b), (w), (dst) \
- ); \
- }
-#endif /* GETLEFTBITS_ALIGNMENT == 4 */
-
-/*
- * getstipplepixels( psrcstip, x, w, ones, psrcpix, destpix )
- *
- * Converts bits to pixels in a reasonable way. Takes w (1 <= w <= PPW)
- * bits from *psrcstip, starting at bit x; call this a quartet of bits.
- * Then, takes the pixels from *psrcpix corresponding to the one-bits (if
- * ones is TRUE) or the zero-bits (if ones is FALSE) of the quartet
- * and puts these pixels into destpix.
- *
- * Example:
- *
- * getstipplepixels( &(0x08192A3B), 17, 4, 1, &(0x4C5D6E7F), dest )
- *
- * 0x08192A3B = 0000 1000 0001 1001 0010 1010 0011 1011
- *
- * This will take 4 bits starting at bit 17, so the quartet is 0x5 = 0101.
- * It will take pixels from 0x4C5D6E7F corresponding to the one-bits in this
- * quartet, so dest = 0x005D007F.
- *
- * XXX Works with both byte order.
- * XXX This works for all values of x and w within a doubleword.
- */
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define getstipplepixels( psrcstip, x, w, ones, psrcpix, destpix ) \
-{ \
- PixelGroup q; \
- int m; \
- if ((m = ((x) - ((PPW*PSZ)-PPW))) > 0) { \
- q = (*(psrcstip)) << m; \
- if ( (x)+(w) > (PPW*PSZ) ) \
- q |= *((psrcstip)+1) >> ((PPW*PSZ)-m); \
- } \
- else \
- q = (*(psrcstip)) >> -m; \
- q = QuartetBitsTable[(w)] & ((ones) ? q : ~q); \
- *(destpix) = (*(psrcpix)) & QuartetPixelMaskTable[q]; \
-}
-/* I just copied this to get the linker satisfied on PowerPC,
- * so this may not be correct at all.
- */
-#define getstipplepixels24(psrcstip,xt,ones,psrcpix,destpix,stipindex) \
-{ \
- PixelGroup q; \
- q = *(psrcstip) >> (xt); \
- q = ((ones) ? q : ~q) & 1; \
- *(destpix) = (*(psrcpix)) & QuartetPixelMaskTable[q]; \
-}
-#else /* BITMAP_BIT_ORDER == LSB */
-
-/* this must load 32 bits worth; for most machines, thats an int */
-#define CfbFetchUnaligned(x) ldl_u(x)
-
-#define getstipplepixels( psrcstip, xt, w, ones, psrcpix, destpix ) \
-{ \
- PixelGroup q; \
- q = CfbFetchUnaligned(psrcstip) >> (xt); \
- if ( ((xt)+(w)) > (PPW*PSZ) ) \
- q |= (CfbFetchUnaligned((psrcstip)+1)) << ((PPW*PSZ)-(xt)); \
- q = QuartetBitsTable[(w)] & ((ones) ? q : ~q); \
- *(destpix) = (*(psrcpix)) & QuartetPixelMaskTable[q]; \
-}
-#if PSZ == 24
-# if 0
-#define getstipplepixels24(psrcstip,xt,w,ones,psrcpix,destpix,stipindex,srcindex,dstindex) \
-{ \
- PixelGroup q; \
- CfbBits src; \
- register unsigned int sidx; \
- register unsigned int didx; \
- sidx = ((srcindex) & 3)<<1; \
- didx = ((dstindex) & 3)<<1; \
- q = *(psrcstip) >> (xt); \
-/* if((srcindex)!=0)*/ \
-/* src = (((*(psrcpix)) << cfb24Shift[sidx]) & (cfbmask[sidx])) |*/ \
-/* (((*((psrcpix)+1)) << cfb24Shift[sidx+1]) & (cfbmask[sidx+1])); */\
-/* else */\
- src = (*(psrcpix))&0xFFFFFF; \
- if ( ((xt)+(w)) > PGSZ ) \
- q |= (*((psrcstip)+1)) << (PGSZ -(xt)); \
- q = QuartetBitsTable[(w)] & ((ones) ? q : ~q); \
- src &= QuartetPixelMaskTable[q]; \
- *(destpix) &= cfbrmask[didx]; \
- switch(didx) {\
- case 0: \
- *(destpix) |= (src &cfbmask[didx]); \
- break; \
- case 2: \
- case 4: \
- destpix++;didx++; \
- *(destpix) = ((*(destpix)) & (cfbrmask[didx]))| \
- (BitLeft(src, cfb24Shift[didx]) & (cfbmask[didx])); \
- destpix--; didx--;\
- case 6: \
- *(destpix) |= (BitRight(src, cfb24Shift[didx]) & cfbmask[didx]); \
- break; \
- }; \
-}
-# else
-#define getstipplepixels24(psrcstip,xt,ones,psrcpix,destpix,stipindex) \
-{ \
- PixelGroup q; \
- q = *(psrcstip) >> (xt); \
- q = ((ones) ? q : ~q) & 1; \
- *(destpix) = (*(psrcpix)) & QuartetPixelMaskTable[q]; \
-}
-# endif
-#endif /* PSZ == 24 */
-#endif
-
-extern PixelGroup cfbstarttab[];
-extern PixelGroup cfbendtab[];
-extern PixelGroup cfbstartpartial[];
-extern PixelGroup cfbendpartial[];
-extern PixelGroup cfbrmask[];
-extern PixelGroup cfbmask[];
-extern PixelGroup QuartetBitsTable[];
-extern PixelGroup QuartetPixelMaskTable[];
-#if PSZ == 24
-extern int cfb24Shift[];
-#endif
diff --git a/nx-X11/programs/Xserver/cfb/cfbpixmap.c b/nx-X11/programs/Xserver/cfb/cfbpixmap.c
deleted file mode 100644
index 704ab4eda..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbpixmap.c
+++ /dev/null
@@ -1,376 +0,0 @@
-/* $Xorg: cfbpixmap.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XFree86: xc/programs/Xserver/cfb/cfbpixmap.c,v 1.4 2001/01/17 22:36:36 dawes Exp $ */
-/* pixmap management
- written by drewry, september 1986
-
- on a monchrome device, a pixmap is a bitmap.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "mi.h"
-#include "cfb.h"
-#include "cfbmskbits.h"
-
-PixmapPtr
-cfbCreatePixmap (pScreen, width, height, depth)
- ScreenPtr pScreen;
- int width;
- int height;
- int depth;
-{
- PixmapPtr pPixmap;
- size_t datasize;
- size_t paddedWidth;
-
- paddedWidth = PixmapBytePad(width, depth);
-
- if (paddedWidth / 4 > 32767 || height > 32767)
- return NullPixmap;
- datasize = height * paddedWidth;
- pPixmap = AllocatePixmap(pScreen, datasize);
- if (!pPixmap)
- return NullPixmap;
- pPixmap->drawable.type = DRAWABLE_PIXMAP;
- pPixmap->drawable.class = 0;
- pPixmap->drawable.pScreen = pScreen;
- pPixmap->drawable.depth = depth;
- pPixmap->drawable.bitsPerPixel = BitsPerPixel(depth);
- pPixmap->drawable.id = 0;
- pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- pPixmap->drawable.x = 0;
- pPixmap->drawable.y = 0;
- pPixmap->drawable.width = width;
- pPixmap->drawable.height = height;
- pPixmap->devKind = paddedWidth;
- pPixmap->refcnt = 1;
-#ifdef PIXPRIV
- pPixmap->devPrivate.ptr = datasize ?
- (pointer)((char *)pPixmap + pScreen->totalPixmapSize) : NULL;
-#else
- pPixmap->devPrivate.ptr = (pointer)(pPixmap + 1);
-#endif
- return pPixmap;
-}
-
-Bool
-cfbDestroyPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- if(--pPixmap->refcnt)
- return TRUE;
- xfree(pPixmap);
- return TRUE;
-}
-
-PixmapPtr
-cfbCopyPixmap(pSrc)
- register PixmapPtr pSrc;
-{
- register PixmapPtr pDst;
- int size;
- ScreenPtr pScreen;
-
- size = pSrc->drawable.height * pSrc->devKind;
- pScreen = pSrc->drawable.pScreen;
- pDst = (*pScreen->CreatePixmap) (pScreen, pSrc->drawable.width,
- pSrc->drawable.height, pSrc->drawable.depth);
- if (!pDst)
- return NullPixmap;
- memmove((char *)pDst->devPrivate.ptr, (char *)pSrc->devPrivate.ptr, size);
- return pDst;
-}
-
-
-/* replicates a pattern to be a full 32 bits wide.
- relies on the fact that each scnaline is longword padded.
- doesn't do anything if pixmap is not a factor of 32 wide.
- changes width field of pixmap if successful, so that the fast
- cfbXRotatePixmap code gets used if we rotate the pixmap later.
- cfbYRotatePixmap code gets used if we rotate the pixmap later.
-
- calculate number of times to repeat
- for each scanline of pattern
- zero out area to be filled with replicate
- left shift and or in original as many times as needed
-*/
-void
-cfbPadPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- register int width = (pPixmap->drawable.width) * (pPixmap->drawable.bitsPerPixel);
- register int h;
- register CfbBits mask;
- register CfbBits *p;
- register CfbBits bits; /* real pattern bits */
- register int i;
- int rep; /* repeat count for pattern */
-
- if (width >= PGSZ)
- return;
-
- rep = PGSZ/width;
- if (rep*width != PGSZ)
- return;
-
- mask = mfbGetendtab(width);
-
- p = (CfbBits *)(pPixmap->devPrivate.ptr);
- for (h=0; h < pPixmap->drawable.height; h++)
- {
- *p &= mask;
- bits = *p;
- for(i=1; i<rep; i++)
- {
-#if (BITMAP_BIT_ORDER == MSBFirst)
- bits >>= width;
-#else
- bits <<= width;
-#endif
- *p |= bits;
- }
- p++;
- }
- pPixmap->drawable.width = PGSZ/(pPixmap->drawable.bitsPerPixel);
-}
-
-
-#ifdef notdef
-/*
- * cfb debugging routine -- assumes pixmap is 1 byte deep
- */
-static cfbdumppixmap(pPix)
- PixmapPtr pPix;
-{
- unsigned int *pw;
- char *psrc, *pdst;
- int i, j;
- char line[66];
-
- ErrorF( "pPixmap: 0x%x\n", pPix);
- ErrorF( "%d wide %d high\n", pPix->drawable.width, pPix->drawable.height);
- if (pPix->drawable.width > 64)
- {
- ErrorF( "too wide to see\n");
- return;
- }
-
- pw = (unsigned int *) pPix->devPrivate.ptr;
- psrc = (char *) pw;
-
-/*
- for ( i=0; i<pPix->drawable.height; ++i )
- ErrorF( "0x%x\n", pw[i] );
-*/
-
- for ( i = 0; i < pPix->drawable.height; ++i ) {
- pdst = line;
- for(j = 0; j < pPix->drawable.width; j++) {
- *pdst++ = *psrc++ ? 'X' : ' ' ;
- }
- *pdst++ = '\n';
- *pdst++ = '\0';
- ErrorF( "%s", line);
- }
-}
-#endif /* notdef */
-
-/* Rotates pixmap pPix by w pixels to the right on the screen. Assumes that
- * words are PGSZ bits wide, and that the least significant bit appears on the
- * left.
- */
-void
-cfbXRotatePixmap(pPix, rw)
- PixmapPtr pPix;
- register int rw;
-{
- register CfbBits *pw, *pwFinal;
- register CfbBits t;
- int rot;
-
- if (pPix == NullPixmap)
- return;
-
- switch (((DrawablePtr) pPix)->bitsPerPixel) {
- case PSZ:
- break;
- case 1:
- mfbXRotatePixmap(pPix, rw);
- return;
- default:
- ErrorF("cfbXRotatePixmap: unsupported bitsPerPixel %d\n", ((DrawablePtr) pPix)->bitsPerPixel);
- return;
- }
- pw = (CfbBits *)pPix->devPrivate.ptr;
- modulus (rw, (int) pPix->drawable.width, rot);
- if(pPix->drawable.width == PPW)
- {
- pwFinal = pw + pPix->drawable.height;
- while(pw < pwFinal)
- {
- t = *pw;
- *pw++ = SCRRIGHT(t, rot) |
- (SCRLEFT(t, (PPW-rot)) & cfbendtab[rot]);
- }
- }
- else
- {
- ErrorF("cfb internal error: trying to rotate odd-sized pixmap.\n");
-#ifdef notdef
- register CfbBits *pwTmp;
- int size, tsize;
-
- tsize = PixmapBytePad(pPix->drawable.width - rot, pPix->drawable.depth);
- pwTmp = (CfbBits *) ALLOCATE_LOCAL(pPix->drawable.height * tsize);
- if (!pwTmp)
- return;
- /* divide pw (the pixmap) in two vertically at (w - rot) and swap */
- tsize >>= 2;
- size = pPix->devKind >> SIZE0F(PixelGroup);
- cfbQuickBlt((CfbBits *)pw, (CfbBits *)pwTmp,
- 0, 0, 0, 0,
- (int)pPix->drawable.width - rot, (int)pPix->drawable.height,
- size, tsize);
- cfbQuickBlt((CfbBits *)pw, (CfbBits *)pw,
- (int)pPix->drawable.width - rot, 0, 0, 0,
- rot, (int)pPix->drawable.height,
- size, size);
- cfbQuickBlt((CfbBits *)pwTmp, (CfbBits *)pw,
- 0, 0, rot, 0,
- (int)pPix->drawable.width - rot, (int)pPix->drawable.height,
- tsize, size);
- DEALLOCATE_LOCAL(pwTmp);
-#endif
- }
-}
-
-/* Rotates pixmap pPix by h lines. Assumes that h is always less than
- pPix->drawable.height
- works on any width.
- */
-void
-cfbYRotatePixmap(pPix, rh)
- register PixmapPtr pPix;
- int rh;
-{
- int nbyDown; /* bytes to move down to row 0; also offset of
- row rh */
- int nbyUp; /* bytes to move up to line rh; also
- offset of first line moved down to 0 */
- char *pbase;
- char *ptmp;
- int rot;
-
- if (pPix == NullPixmap)
- return;
- switch (((DrawablePtr) pPix)->bitsPerPixel) {
- case PSZ:
- break;
- case 1:
- mfbYRotatePixmap(pPix, rh);
- return;
- default:
- ErrorF("cfbYRotatePixmap: unsupported bitsPerPixel %d\n", ((DrawablePtr) pPix)->bitsPerPixel);
- return;
- }
-
- modulus (rh, (int) pPix->drawable.height, rot);
- pbase = (char *)pPix->devPrivate.ptr;
-
- nbyDown = rot * pPix->devKind;
- nbyUp = (pPix->devKind * pPix->drawable.height) - nbyDown;
- if(!(ptmp = (char *)ALLOCATE_LOCAL(nbyUp)))
- return;
-
- memmove(ptmp, pbase, nbyUp); /* save the low rows */
- memmove(pbase, pbase+nbyUp, nbyDown); /* slide the top rows down */
- memmove(pbase+nbyDown, ptmp, nbyUp); /* move lower rows up to row rot */
- DEALLOCATE_LOCAL(ptmp);
-}
-
-void
-cfbCopyRotatePixmap(psrcPix, ppdstPix, xrot, yrot)
- register PixmapPtr psrcPix, *ppdstPix;
- int xrot, yrot;
-{
- register PixmapPtr pdstPix;
-
- if ((pdstPix = *ppdstPix) &&
- (pdstPix->devKind == psrcPix->devKind) &&
- (pdstPix->drawable.height == psrcPix->drawable.height))
- {
- memmove((char *)pdstPix->devPrivate.ptr,
- (char *)psrcPix->devPrivate.ptr,
- psrcPix->drawable.height * psrcPix->devKind);
- pdstPix->drawable.width = psrcPix->drawable.width;
- pdstPix->drawable.depth = psrcPix->drawable.depth;
- pdstPix->drawable.bitsPerPixel = psrcPix->drawable.bitsPerPixel;
- pdstPix->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- }
- else
- {
- if (pdstPix)
- /* FIX XBUG 6168 */
- (*pdstPix->drawable.pScreen->DestroyPixmap)(pdstPix);
- *ppdstPix = pdstPix = cfbCopyPixmap(psrcPix);
- if (!pdstPix)
- return;
- }
- cfbPadPixmap(pdstPix);
- if (xrot)
- cfbXRotatePixmap(pdstPix, xrot);
- if (yrot)
- cfbYRotatePixmap(pdstPix, yrot);
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbply1rct.c b/nx-X11/programs/Xserver/cfb/cfbply1rct.c
deleted file mode 100644
index 99a2379c9..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbply1rct.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * $Xorg: cfbply1rct.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $
- *
-Copyright 1990, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-/* $XFree86: xc/programs/Xserver/cfb/cfbply1rct.c,v 3.10 2003/10/29 22:44:53 tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "cfbrrop.h"
-
-void
-RROP_NAME(cfbFillPoly1Rect) (pDrawable, pGC, shape, mode, count, ptsIn)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int shape;
- int mode;
- int count;
- DDXPointPtr ptsIn;
-{
- cfbPrivGCPtr devPriv;
- int nwidth;
- CfbBits *addrl, *addr;
-#if PSZ == 24
- CfbBits startmask, endmask;
- register int pidx;
-#else
-#if PPW > 1
- CfbBits mask, bits = ~((CfbBits)0);
-#endif
-#endif
- int maxy;
- int origin;
- register int vertex1, vertex2;
- int c = 0;
- BoxPtr extents;
- int clip;
- int y;
- int *vertex1p = NULL, *vertex2p;
- int *endp;
- int x1 = 0, x2 = 0;
- int dx1 = 0, dx2 = 0;
- int dy1 = 0, dy2 = 0;
- int e1 = 0, e2 = 0;
- int step1 = 0, step2 = 0;
- int sign1 = 0, sign2 = 0;
- int h;
- int l;
-#if PSZ != 24 && PPW > 1
- int r;
-#endif
- int nmiddle;
- RROP_DECLARE
-
- if (mode == CoordModePrevious)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
-
- devPriv = cfbGetGCPrivate(pGC);
-#ifdef NO_ONE_RECT
- if (REGION_NUM_RECTS(pGC->pCompositeClip) != 1)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
-#endif
- origin = *((int *) &pDrawable->x);
- vertex2 = origin - ((origin & 0x8000) << 1);
- extents = &pGC->pCompositeClip->extents;
- RROP_FETCH_GCPRIV(devPriv);
- vertex1 = *((int *) &extents->x1) - vertex2;
- vertex2 = *((int *) &extents->x2) - vertex2 - 0x00010001;
- clip = 0;
- y = 32767;
- maxy = 0;
- vertex2p = (int *) ptsIn;
- endp = vertex2p + count;
- if (shape == Convex)
- {
- while (count--)
- {
- c = *vertex2p;
- clip |= (c - vertex1) | (vertex2 - c);
- c = intToY(c);
- if (c < y)
- {
- y = c;
- vertex1p = vertex2p;
- }
- vertex2p++;
- if (c > maxy)
- maxy = c;
- }
- }
- else
- {
- int yFlip = 0;
- dx1 = 1;
- x2 = -1;
- x1 = -1;
- while (count--)
- {
- c = *vertex2p;
- clip |= (c - vertex1) | (vertex2 - c);
- c = intToY(c);
- if (c < y)
- {
- y = c;
- vertex1p = vertex2p;
- }
- vertex2p++;
- if (c > maxy)
- maxy = c;
- if (c == x1)
- continue;
- if (dx1 > 0)
- {
- if (x2 < 0)
- x2 = c;
- else
- dx2 = dx1 = (c - x1) >> 31;
- }
- else
- if ((c - x1) >> 31 != dx1)
- {
- dx1 = ~dx1;
- yFlip++;
- }
- x1 = c;
- }
- x1 = (x2 - c) >> 31;
- if (x1 != dx1)
- yFlip++;
- if (x1 != dx2)
- yFlip++;
- if (yFlip != 2)
- clip = 0x8000;
- }
- if (y == maxy)
- return;
-
- if (clip & 0x80008000)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, vertex2p - (int *) ptsIn, ptsIn);
- return;
- }
-
-#define AddrYPlus(a,y) (CfbBits *) (((unsigned char *) (a)) + (y) * nwidth)
-
- cfbGetTypedWidthAndPointer(pDrawable, nwidth, addrl, unsigned char, CfbBits);
- addrl = AddrYPlus(addrl,y + pDrawable->y);
- origin = intToX(origin);
- vertex2p = vertex1p;
- vertex2 = vertex1 = *vertex2p++;
- if (vertex2p == endp)
- vertex2p = (int *) ptsIn;
-#define Setup(c,x,vertex,dx,dy,e,sign,step) {\
- x = intToX(vertex); \
- if ((dy = intToY(c) - y)) { \
- dx = intToX(c) - x; \
- step = 0; \
- if (dx >= 0) \
- { \
- e = 0; \
- sign = 1; \
- if (dx >= dy) {\
- step = dx / dy; \
- dx = dx % dy; \
- } \
- } \
- else \
- { \
- e = 1 - dy; \
- sign = -1; \
- dx = -dx; \
- if (dx >= dy) { \
- step = - (dx / dy); \
- dx = dx % dy; \
- } \
- } \
- } \
- x += origin; \
- vertex = c; \
-}
-
-#define Step(x,dx,dy,e,sign,step) {\
- x += step; \
- if ((e += dx) > 0) \
- { \
- x += sign; \
- e -= dy; \
- } \
-}
- for (;;)
- {
- if (y == intToY(vertex1))
- {
- do
- {
- if (vertex1p == (int *) ptsIn)
- vertex1p = endp;
- c = *--vertex1p;
- Setup (c,x1,vertex1,dx1,dy1,e1,sign1,step1)
- } while (y >= intToY(vertex1));
- h = dy1;
- }
- else
- {
- Step(x1,dx1,dy1,e1,sign1,step1)
- h = intToY(vertex1) - y;
- }
- if (y == intToY(vertex2))
- {
- do
- {
- c = *vertex2p++;
- if (vertex2p == endp)
- vertex2p = (int *) ptsIn;
- Setup (c,x2,vertex2,dx2,dy2,e2,sign2,step2)
- } while (y >= intToY(vertex2));
- if (dy2 < h)
- h = dy2;
- }
- else
- {
- Step(x2,dx2,dy2,e2,sign2,step2)
- if ((c = (intToY(vertex2) - y)) < h)
- h = c;
- }
- /* fill spans for this segment */
- y += h;
- for (;;)
- {
- l = x1;
-#if PSZ != 24 && PPW > 1
- r = x2;
-#endif
- nmiddle = x2 - x1;
- if (nmiddle < 0)
- {
- nmiddle = -nmiddle;
- l = x2;
-#if PSZ != 24 && PPW > 1
- r = x1;
-#endif
- }
-#if PPW > 1
- c = l & PIM;
- l -= c;
-#endif
-
-#if PGSZ == 32
-#define LWRD_SHIFT 2
-#else /* PGSZ == 64 */
-#define LWRD_SHIFT 3
-#endif /* PGSZ */
-
-#if PSZ == 24
- addr = (CfbBits *)((char *)addrl + ((l * 3) & ~0x03));
- if (nmiddle <= 1){
- if (nmiddle)
- RROP_SOLID24(addr, l);
- } else {
- maskbits(l, nmiddle, startmask, endmask, nmiddle);
- pidx = l & 3;
- if (startmask){
- RROP_SOLID_MASK(addr, startmask, pidx-1);
- addr++;
- if (pidx == 3)
- pidx = 0;
- }
- while (--nmiddle >= 0){
- RROP_SOLID(addr, pidx);
- addr++;
- if (++pidx == 3)
- pidx = 0;
- }
- if (endmask)
- RROP_SOLID_MASK(addr, endmask, pidx);
- }
-#else /* PSZ == 24 */
-#if PWSH > LWRD_SHIFT
- l = l >> (PWSH - LWRD_SHIFT);
-#endif
-#if PWSH < LWRD_SHIFT
- l = l << (LWRD_SHIFT - PWSH);
-#endif
- addr = (CfbBits *) (((char *) addrl) + l);
-#if PPW > 1
- if (c + nmiddle < PPW)
- {
- mask = SCRRIGHT (bits,c) ^ SCRRIGHT (bits,c+nmiddle);
- RROP_SOLID_MASK(addr,mask);
- }
- else
- {
- if (c)
- {
- mask = SCRRIGHT(bits, c);
- RROP_SOLID_MASK(addr,mask);
- nmiddle += c - PPW;
- addr++;
- }
-#endif
- nmiddle >>= PWSH;
- while (--nmiddle >= 0) {
- RROP_SOLID(addr); addr++;
- }
-#if PPW > 1
- if ((mask = ~SCRRIGHT(bits, r & PIM)))
- RROP_SOLID_MASK(addr,mask);
- }
-#endif
-#endif /* PSZ == 24 */
- if (!--h)
- break;
- addrl = AddrYPlus (addrl, 1);
- Step(x1,dx1,dy1,e1,sign1,step1)
- Step(x2,dx2,dy2,e2,sign2,step2)
- }
- if (y == maxy)
- break;
- addrl = AddrYPlus (addrl, 1);
- }
- RROP_UNDECLARE
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbpntwin.c b/nx-X11/programs/Xserver/cfb/cfbpntwin.c
deleted file mode 100644
index 01b948361..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbpntwin.c
+++ /dev/null
@@ -1,771 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/cfb/cfbpntwin.c,v 1.5 2005/07/03 07:01:15 daniels Exp $ */
-/* $Xorg: cfbpntwin.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XFree86: xc/programs/Xserver/cfb/cfbpntwin.c,v 3.7tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "mi.h"
-
-#ifdef PANORAMIX
-#include "panoramiX.h"
-#include "panoramiXsrv.h"
-#endif
-
-void
-cfbPaintWindow(pWin, pRegion, what)
- WindowPtr pWin;
- RegionPtr pRegion;
- int what;
-{
- register cfbPrivWin *pPrivWin;
- WindowPtr pBgWin;
-
- pPrivWin = cfbGetWindowPrivate(pWin);
-
-
- switch (what) {
- case PW_BACKGROUND:
- switch (pWin->backgroundState) {
- case None:
- break;
- case ParentRelative:
- do {
- pWin = pWin->parent;
- } while (pWin->backgroundState == ParentRelative);
- (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion,
- what);
- break;
- case BackgroundPixmap:
- if (pPrivWin->fastBackground)
- {
- cfbFillBoxTile32 ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pPrivWin->pRotatedBackground);
- }
- else
- {
- int xorg = pWin->drawable.x;
- int yorg = pWin->drawable.y;
-#ifdef PANORAMIX
- if(!noPanoramiXExtension) {
- int index = pWin->drawable.pScreen->myNum;
- if(WindowTable[index] == pWin) {
- xorg -= panoramiXdataPtr[index].x;
- yorg -= panoramiXdataPtr[index].y;
- }
- }
-#endif
- cfbFillBoxTileOdd ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->background.pixmap,
- xorg, yorg);
- }
- break;
- case BackgroundPixel:
- cfbFillBoxSolid ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->background.pixel);
- break;
- }
- break;
- case PW_BORDER:
- if (pWin->borderIsPixel)
- {
- cfbFillBoxSolid ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->border.pixel);
- }
- else if (pPrivWin->fastBorder)
- {
- cfbFillBoxTile32 ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pPrivWin->pRotatedBorder);
- }
- else
- {
- int xorg, yorg;
-
- for (pBgWin = pWin;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
-
- xorg = pBgWin->drawable.x;
- yorg = pBgWin->drawable.y;
-
-#ifdef PANORAMIX
- if(!noPanoramiXExtension) {
- int index = pWin->drawable.pScreen->myNum;
- if(WindowTable[index] == pBgWin) {
- xorg -= panoramiXdataPtr[index].x;
- yorg -= panoramiXdataPtr[index].y;
- }
- }
-#endif
-
- cfbFillBoxTileOdd ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->border.pixmap,
- xorg, yorg);
- }
- break;
- }
-}
-
-/*
- * Use the RROP macros in copy mode
- */
-
-#define RROP GXcopy
-#include "cfbrrop.h"
-
-#ifdef RROP_UNROLL
-# define Expand(left,right,leftAdjust) {\
- int part = nmiddle & RROP_UNROLL_MASK; \
- int widthStep; \
- widthStep = widthDst - nmiddle - leftAdjust; \
- nmiddle >>= RROP_UNROLL_SHIFT; \
- while (h--) { \
- left \
- pdst += part; \
- switch (part) { \
- RROP_UNROLL_CASE(pdst) \
- } \
- m = nmiddle; \
- while (m) { \
- pdst += RROP_UNROLL; \
- RROP_UNROLL_LOOP(pdst) \
- m--; \
- } \
- right \
- pdst += widthStep; \
- } \
-}
-
-#else
-# define Expand(left, right, leftAdjust) { \
- int widthStep; \
- widthStep = widthDst - nmiddle - leftAdjust; \
- while (h--) { \
- left \
- m = nmiddle; \
- while (m--) {\
- RROP_SOLID(pdst); \
- pdst++; \
- } \
- right \
- pdst += widthStep; \
- } \
-}
-#endif
-
-void
-cfbFillBoxSolid (pDrawable, nBox, pBox, pixel)
- DrawablePtr pDrawable;
- int nBox;
- BoxPtr pBox;
- unsigned long pixel;
-{
- CfbBits *pdstBase;
- int widthDst;
- register int h;
- register CfbBits *pdst;
- int nmiddle;
- int w;
-#if PSZ == 24
- int leftIndex, rightIndex;
- CfbBits piQxelArray[3], *pdstULC; /*upper left corner*/
-
- piQxelArray[0] = (pixel&0xFFFFFF) | ((pixel&0xFF)<<24);
- piQxelArray[1] = ((pixel&0xFFFF00)>>8) | ((pixel&0xFFFF)<<16);
- piQxelArray[2] = ((pixel&0xFFFFFF)<<8) | ((pixel&0xFF0000)>>16);
-#else
- register CfbBits rrop_xor;
- register CfbBits leftMask, rightMask;
- register int m;
-#endif
-
- cfbGetLongWidthAndPointer(pDrawable, widthDst, pdstBase);
-
-#if PSZ != 24
- rrop_xor = PFILL(pixel);
-#endif
- for (; nBox; nBox--, pBox++)
- {
- pdst = pdstBase + pBox->y1 * widthDst;
- h = pBox->y2 - pBox->y1;
- w = pBox->x2 - pBox->x1;
-#if PSZ == 8
- if (w == 1)
- {
- register char *pdstb = ((char *) pdst) + pBox->x1;
- int incr = widthDst * PGSZB;
-
- while (h--)
- {
- *pdstb = rrop_xor;
- pdstb += incr;
- }
- }
- else
- {
-#endif
-#if PSZ == 24
-/* _Box has x1, y1, x2, y2*/
- leftIndex = pBox->x1 & 3;
- rightIndex = ((leftIndex+w)<5)?0:(pBox->x2 &3);
- nmiddle = w - rightIndex;
- if(leftIndex){
- nmiddle -= (4 - leftIndex);
- }
- nmiddle >>= 2;
- if(nmiddle < 0)
- nmiddle = 0;
-
- pdst = pdstBase + pBox->y1 * widthDst + ((pBox->x1*3) >> 2);
-
- switch(leftIndex+w){
- case 4:
- switch(leftIndex){
- case 0:
- while(h--){
- *pdst++ = piQxelArray[0];
- *pdst++ = piQxelArray[1];
- *pdst = piQxelArray[2];
- pdst -=2;
- pdst += widthDst;
- }
- break;
- case 1:
- while(h--){
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelArray[0] & 0xFF000000);
- pdst++;
- *pdst++ = piQxelArray[1];
- *pdst = piQxelArray[2];
- pdst -=2;
- pdst += widthDst;
- }
- break;
- case 2:
- while(h--){
- *pdst = ((*pdst) & 0xFFFF) | (piQxelArray[1] & 0xFFFF0000);
- pdst++;
- *pdst-- = piQxelArray[2];
- pdst += widthDst;
- }
- break;
- case 3:
- while(h--){
- *pdst = ((*pdst) & 0xFF) | (piQxelArray[2] & 0xFFFFFF00);
- pdst += widthDst;
- }
- break;
- }
- break;
- case 3:
- switch(leftIndex){
- case 0:
- while(h--){
- *pdst++ = piQxelArray[0];
- *pdst++ = piQxelArray[1];
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);
- pdst--;
- pdst--;
- pdst += widthDst;
- }
- break;
- case 1:
- while(h--){
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelArray[0] & 0xFF000000);
- pdst++;
- *pdst++ = piQxelArray[1];
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);
- pdst--;
- pdst--;
- pdst += widthDst;
- }
- break;
- case 2:
- while(h--){
- *pdst = ((*pdst) & 0xFFFF) | (piQxelArray[1] & 0xFFFF0000);
- pdst++;
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);
- pdst--;
- pdst += widthDst;
- }
- break;
- }
- break;
- case 2:
- while(h--){
- if(leftIndex){
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelArray[0] & 0xFF000000);
- pdst++;
- }
- else{
- *pdst++ = piQxelArray[0];
- }
- *pdst = ((*pdst) & 0xFFFF0000) | (piQxelArray[1] & 0xFFFF);
- pdst--;
- pdst += widthDst;
- }
- break;
- case 1: /*only if leftIndex = 0 and w = 1*/
- while(h--){
- *pdst = ((*pdst) & 0xFF000000) | (piQxelArray[0] & 0xFFFFFF);
- pdst += widthDst;
- }
- break;
- case 0: /*never*/
- break;
- default:
- {
- w = nmiddle;
- pdstULC = pdst;
-/* maskbits (pBox->x1, w, leftMask, rightMask, nmiddle);*/
- while(h--){
- nmiddle = w;
- pdst = pdstULC;
- switch(leftIndex){
- case 0:
- break;
- case 1:
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelArray[0] & 0xFF000000);
- pdst++;
- *pdst++ = piQxelArray[1];
- *pdst++ = piQxelArray[2];
- break;
- case 2:
- *pdst = ((*pdst) & 0xFFFF) | (piQxelArray[1] & 0xFFFF0000);
- pdst++;
- *pdst++ = piQxelArray[2];
- break;
- case 3:
- *pdst = ((*pdst) & 0xFF) | (piQxelArray[2] & 0xFFFFFF00);
- pdst++;
- break;
- }
- while(nmiddle--){
- *pdst++ = piQxelArray[0];
- *pdst++ = piQxelArray[1];
- *pdst++ = piQxelArray[2];
- }
- switch(rightIndex){
- case 0:
- break;
- case 1:
- *pdst = ((*pdst) & 0xFF000000) | (piQxelArray[0] & 0xFFFFFF);
- break;
- case 2:
- *pdst++ = piQxelArray[0];
- *pdst = ((*pdst) & 0xFFFF0000) | (piQxelArray[1] & 0xFFFF);
- break;
- case 3:
- *pdst++ = piQxelArray[0];
- *pdst++ = piQxelArray[1];
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);
- break;
- }
- pdstULC += widthDst;
- }
-
- }
- }
-#else
- pdst += (pBox->x1 >> PWSH);
- if ((pBox->x1 & PIM) + w <= PPW)
- {
- maskpartialbits(pBox->x1, w, leftMask);
- while (h--) {
- *pdst = (*pdst & ~leftMask) | (rrop_xor & leftMask);
- pdst += widthDst;
- }
- }
- else
- {
- maskbits (pBox->x1, w, leftMask, rightMask, nmiddle);
- if (leftMask)
- {
- if (rightMask)
- {
- Expand (RROP_SOLID_MASK (pdst, leftMask); pdst++; ,
- RROP_SOLID_MASK (pdst, rightMask); ,
- 1)
- }
- else
- {
- Expand (RROP_SOLID_MASK (pdst, leftMask); pdst++;,
- ;,
- 1)
- }
- }
- else
- {
- if (rightMask)
- {
- Expand (;,
- RROP_SOLID_MASK (pdst, rightMask);,
- 0)
- }
- else
- {
- Expand (;,
- ;,
- 0)
- }
- }
- }
-#endif
-#if PSZ == 8
- }
-#endif
- }
-}
-
-void
-cfbFillBoxTile32 (pDrawable, nBox, pBox, tile)
- DrawablePtr pDrawable;
- int nBox; /* number of boxes to fill */
- BoxPtr pBox; /* pointer to list of boxes to fill */
- PixmapPtr tile; /* rotated, expanded tile */
-{
- register CfbBits *pdst;
- CfbBits *psrc;
- int tileHeight;
-
- int widthDst;
- int w;
- int h;
- int nmiddle;
- int y;
- int srcy;
-
- CfbBits *pdstBase;
-#if PSZ == 24
- int leftIndex, rightIndex;
- CfbBits piQxelArray[3], *pdstULC;
-#else
- register CfbBits rrop_xor;
- register CfbBits leftMask;
- register CfbBits rightMask;
- register int m;
-#endif
-
- tileHeight = tile->drawable.height;
- psrc = (CfbBits *)tile->devPrivate.ptr;
-
- cfbGetLongWidthAndPointer (pDrawable, widthDst, pdstBase);
-
- while (nBox--)
- {
-#if PSZ == 24
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
- y = pBox->y1;
- leftIndex = pBox->x1 & 3;
-/* rightIndex = ((leftIndex+w)<5)?0:pBox->x2 &3;*/
- rightIndex = pBox->x2 &3;
- nmiddle = w - rightIndex;
- if(leftIndex){
- nmiddle -= (4 - leftIndex);
- }
- nmiddle >>= 2;
- if(nmiddle < 0)
- nmiddle = 0;
-
- pdst = pdstBase + ((pBox->x1 *3)>> 2) + pBox->y1 * widthDst;
- srcy = y % tileHeight;
-
-#define StepTile piQxelArray[0] = (psrc[srcy] & 0xFFFFFF) | ((psrc[srcy] & 0xFF)<<24); \
- piQxelArray[1] = (psrc[srcy] & 0xFFFF00) | ((psrc[srcy] & 0xFFFF)<<16); \
- piQxelArray[2] = ((psrc[srcy] & 0xFF0000)>>16) | \
- ((psrc[srcy] & 0xFFFFFF)<<8); \
- /*rrop_xor = psrc[srcy];*/ \
- ++srcy; \
- if (srcy == tileHeight) \
- srcy = 0;
-
- switch(leftIndex+w){
- case 4:
- switch(leftIndex){
- case 0:
- while(h--){
- StepTile
- *pdst++ = piQxelArray[0];
- *pdst++ = piQxelArray[1];
- *pdst = piQxelArray[2];
- pdst-=2;
- pdst += widthDst;
- }
- break;
- case 1:
- while(h--){
- StepTile
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelArray[0] & 0xFF000000);
- pdst++;
- *pdst++ = piQxelArray[1];
- *pdst = piQxelArray[2];
- pdst-=2;
- pdst += widthDst;
- }
- break;
- case 2:
- while(h--){
- StepTile
- *pdst = ((*pdst) & 0xFFFF) | (piQxelArray[1] & 0xFFFF0000);
- pdst++;
- *pdst-- = piQxelArray[2];
- pdst += widthDst;
- }
- break;
- case 3:
- while(h--){
- StepTile
- *pdst = ((*pdst) & 0xFF) | (piQxelArray[2] & 0xFFFFFF00);
- pdst += widthDst;
- }
- break;
- }
- break;
- case 3:
- switch(leftIndex){
- case 0:
- while(h--){
- StepTile
- *pdst++ = piQxelArray[0];
- *pdst++ = piQxelArray[1];
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);
- pdst--;
- pdst--;
- pdst += widthDst;
- }
- break;
- case 1:
- while(h--){
- StepTile
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelArray[0] & 0xFF000000);
- pdst++;
- *pdst++ = piQxelArray[1];
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);
- pdst--;
- pdst--;
- pdst += widthDst;
- }
- break;
- case 2:
- while(h--){
- StepTile
- *pdst = ((*pdst) & 0xFFFF) | (piQxelArray[1] & 0xFFFF0000);
- pdst++;
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);
- pdst--;
- pdst += widthDst;
- }
- break;
- }
- break;
- case 2:
- while(h--){
- StepTile
- if(leftIndex){
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelArray[0] & 0xFF000000);
- pdst++;
- }
- else{
- *pdst++ = piQxelArray[0];
- }
- *pdst = ((*pdst) & 0xFFFF0000) | (piQxelArray[1] & 0xFFFF);
- pdst--;
- pdst += widthDst;
- }
- break;
- case 1: /*only if leftIndex = 0 and w = 1*/
- while(h--){
- StepTile
- *pdst = ((*pdst) & 0xFF000000) | (piQxelArray[0] & 0xFFFFFF);
- pdst += widthDst;
- }
- break;
- case 0: /*never*/
- break;
- default:
- {
- w = nmiddle;
- pdstULC = pdst;
-
- while(h--){
- StepTile
- nmiddle = w;
- pdst = pdstULC;
- switch(leftIndex){
- case 0:
- break;
- case 1:
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelArray[0] & 0xFF000000);
- pdst++;
- *pdst++ = piQxelArray[1];
- *pdst++ = piQxelArray[2];
- break;
- case 2:
- *pdst = ((*pdst) & 0xFFFF) | (piQxelArray[1] & 0xFFFF0000);
- pdst++;
- *pdst++ = piQxelArray[2];
- break;
- case 3:
- *pdst = ((*pdst) & 0xFF) | (piQxelArray[2] & 0xFFFFFF00);
- pdst++;
- break;
- }
- while(nmiddle--){
- *pdst++ = piQxelArray[0];
- *pdst++ = piQxelArray[1];
- *pdst++ = piQxelArray[2];
- }
- switch(rightIndex){
- case 0:
- break;
- case 1:
- *pdst = ((*pdst) & 0xFF000000) | (piQxelArray[0] & 0xFFFFFF);
- break;
- case 2:
- *pdst++ = piQxelArray[0];
- *pdst = ((*pdst) & 0xFFFF0000) | (piQxelArray[1] & 0xFFFF);
- break;
- case 3:
- *pdst++ = piQxelArray[0];
- *pdst++ = piQxelArray[1];
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);
- break;
- }
- pdstULC += widthDst;
- }
- }
- }
-#else
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
- y = pBox->y1;
- pdst = pdstBase + (pBox->y1 * widthDst) + (pBox->x1 >> PWSH);
- srcy = y % tileHeight;
-
-#define StepTile rrop_xor = psrc[srcy]; \
- ++srcy; \
- if (srcy == tileHeight) \
- srcy = 0;
-
- if ( ((pBox->x1 & PIM) + w) < PPW)
- {
- maskpartialbits(pBox->x1, w, leftMask);
- rightMask = ~leftMask;
- while (h--)
- {
- StepTile
- *pdst = (*pdst & rightMask) | (rrop_xor & leftMask);
- pdst += widthDst;
- }
- }
- else
- {
- maskbits(pBox->x1, w, leftMask, rightMask, nmiddle);
-
- if (leftMask)
- {
- if (rightMask)
- {
- Expand (StepTile
- RROP_SOLID_MASK(pdst, leftMask); pdst++;,
- RROP_SOLID_MASK(pdst, rightMask);,
- 1)
- }
- else
- {
- Expand (StepTile
- RROP_SOLID_MASK(pdst, leftMask); pdst++;,
- ;,
- 1)
- }
- }
- else
- {
- if (rightMask)
- {
- Expand (StepTile
- ,
- RROP_SOLID_MASK(pdst, rightMask);,
- 0)
- }
- else
- {
- Expand (StepTile
- ,
- ;,
- 0)
- }
- }
- }
-#endif
- pBox++;
- }
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbpolypnt.c b/nx-X11/programs/Xserver/cfb/cfbpolypnt.c
deleted file mode 100644
index 59ef0cf89..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbpolypnt.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbpolypnt.c,v 3.5 2001/10/28 03:33:01 tsi Exp $ */
-/************************************************************
-
-Copyright 1989, 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.
-
-********************************************************/
-
-/* $Xorg: cfbpolypnt.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "cfb.h"
-#include "cfbmskbits.h"
-
-#define isClipped(c,ul,lr) ((((c) - (ul)) | ((lr) - (c))) & ClipMask)
-
-/* WARNING: pbox contains two shorts. This code assumes they are packed
- * and can be referenced together as an INT32.
- */
-
-#define PointLoop(fill) { \
- for (nbox = REGION_NUM_RECTS(cclip), pbox = REGION_RECTS(cclip); \
- --nbox >= 0; \
- pbox++) \
- { \
- c1 = *((INT32 *) &pbox->x1) - off; \
- c2 = *((INT32 *) &pbox->x2) - off - 0x00010001; \
- for (ppt = (INT32 *) pptInit, i = npt; --i >= 0;) \
- { \
- pt = *ppt++; \
- if (!isClipped(pt,c1,c2)) { \
- fill \
- } \
- } \
- } \
-}
-
-#if PSZ == 24
-# include "cfbrrop24.h"
-#endif
-
-void
-cfbPolyPoint(pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode;
- int npt;
- xPoint *pptInit;
-{
- register INT32 pt;
- register INT32 c1, c2;
- register CARD32 ClipMask = 0x80008000;
- register CfbBits xor;
-#ifdef PIXEL_ADDR
- register PixelType *addrp;
- register int npwidth;
-#if PSZ != 24
- PixelType *addrpt;
-#endif
-#else
- register CfbBits *addrl;
- register int nlwidth;
- register int xoffset;
- CfbBits *addrlt;
-#endif
-#if PSZ == 24
- RROP_DECLARE
- register int xtmp;
- register PixelType *p;
-#endif
- register INT32 *ppt;
- RegionPtr cclip;
- int nbox;
- register int i;
- register BoxPtr pbox;
- CfbBits and;
- int rop = pGC->alu;
- int off;
- cfbPrivGCPtr devPriv;
- xPoint *pptPrev;
-
- devPriv =cfbGetGCPrivate(pGC);
- rop = devPriv->rop;
- if (rop == GXnoop)
- return;
- cclip = pGC->pCompositeClip;
- xor = devPriv->xor;
- if ((mode == CoordModePrevious) && (npt > 1))
- {
- for (pptPrev = pptInit + 1, i = npt - 1; --i >= 0; pptPrev++)
- {
- pptPrev->x += (pptPrev-1)->x;
- pptPrev->y += (pptPrev-1)->y;
- }
- }
- off = *((int *) &pDrawable->x);
- off -= (off & 0x8000) << 1;
-#ifdef PIXEL_ADDR
- cfbGetPixelWidthAndPointer(pDrawable, npwidth, addrp);
-#if PSZ == 24
- addrp = addrp + pDrawable->y * npwidth;
-#else
- addrp = addrp + pDrawable->y * npwidth + pDrawable->x;
-#endif
- if (rop == GXcopy)
- {
-#if PSZ == 24
- RROP_COPY_SETUP(xor)
-#endif
- if (!(npwidth & (npwidth - 1)))
- {
- npwidth = ffs(npwidth) - 1;
-#if PSZ == 24
- PointLoop(
- xtmp = pDrawable->x + intToX(pt);
- p = addrp + (intToY(pt) << npwidth) + ((xtmp * 3) >>2);
- RROP_SOLID24_COPY(p, xtmp))
-#else
- PointLoop(*(addrp + (intToY(pt) << npwidth) + intToX(pt)) = xor;)
-#endif
- }
-#ifdef sun
- else if (npwidth == 1152)
- {
- register int y;
- PointLoop(y = intToY(pt); *(addrp + (y << 10) + (y << 7) + intToX(pt)) = xor;)
- }
-#endif
- else
- {
-#if PSZ == 24
- PointLoop(
- xtmp = pDrawable->x + intToX(pt);
- p = addrp + intToY(pt) * npwidth + ((xtmp * 3) >> 2);
- RROP_SOLID24_COPY(p, xtmp))
-#else
- PointLoop(*(addrp + intToY(pt) * npwidth + intToX(pt)) = xor;)
-#endif
- }
- }
- else
- {
- and = devPriv->and;
-#if PSZ == 24
- RROP_SET_SETUP(xor, and)
- PointLoop(
- xtmp = pDrawable->x + intToX(pt);
- p = addrp + intToY(pt) * npwidth + ((xtmp * 3) >> 2);
- RROP_SOLID24_SET(p, xtmp))
-#else
- PointLoop( addrpt = addrp + intToY(pt) * npwidth + intToX(pt);
- *addrpt = DoRRop (*addrpt, and, xor);)
-#endif
- }
-#else /* !PIXEL_ADDR */
- cfbGetLongWidthAndPointer(pDrawable, nlwidth, addrl);
- addrl = addrl + pDrawable->y * nlwidth + (pDrawable->x >> PWSH);
- xoffset = pDrawable->x & PIM;
- and = devPriv->and;
-#if PSZ == 24
- PointLoop( addrlt = addrl + intToY(pt) * nlwidth
- + ((intToX(pt) + xoffset) >> PWSH);
- *addrlt = DoRRop (*addrlt,
- and | ~cfbmask[(intToX(pt) + xoffset) & PIM],
- xor & cfbmask[(intToX(pt) + xoffset) & PIM]);
- )
-#else
- PointLoop( addrlt = addrl + intToY(pt) * nlwidth
- + ((intToX(pt) + xoffset) >> PWSH);
- *addrlt = DoRRop (*addrlt,
- and | ~cfbmask[((intToX(pt) + xoffset) & 3)<<1],
- xor & cfbmask[((intToX(pt) + xoffset) & 3)<<1]);
- )
-#endif
-#endif /* PIXEL_ADDR */
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbpush8.c b/nx-X11/programs/Xserver/cfb/cfbpush8.c
deleted file mode 100644
index 3492c8e25..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbpush8.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Push Pixels for 8 bit displays.
- */
-
-/* $XFree86: xc/programs/Xserver/cfb/cfbpush8.c,v 1.5 2001/01/17 22:36:36 dawes Exp $ */
-
-/*
-
-Copyright 1989, 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.
-*/
-/* $Xorg: cfbpush8.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if PSZ == 8
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "cfb8bit.h"
-#define MFB_CONSTS_ONLY
-#include "maskbits.h"
-
-void
-cfbPushPixels8 (pGC, pBitmap, pDrawable, dx, dy, xOrg, yOrg)
- GCPtr pGC;
- PixmapPtr pBitmap;
- DrawablePtr pDrawable;
- int dx, dy, xOrg, yOrg;
-{
- register CfbBits *src, *dst;
- register CfbBits pixel;
- register CfbBits c, bits;
- CfbBits *pdstLine, *psrcLine;
- CfbBits *pdstBase;
- int srcWidth;
- int dstWidth;
- int xoff;
- int nBitmapLongs, nPixmapLongs;
- int nBitmapTmp, nPixmapTmp;
- CfbBits rightMask;
- BoxRec bbox;
- cfbPrivGCPtr devPriv;
-
- bbox.x1 = xOrg;
- bbox.y1 = yOrg;
- bbox.x2 = bbox.x1 + dx;
- bbox.y2 = bbox.y1 + dy;
- devPriv = cfbGetGCPrivate(pGC);
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox))
- {
- case rgnPART:
- mfbPushPixels(pGC, pBitmap, pDrawable, dx, dy, xOrg, yOrg);
- case rgnOUT:
- return;
- }
-
- cfbGetLongWidthAndPointer (pDrawable, dstWidth, pdstBase)
-
- psrcLine = (CfbBits *) pBitmap->devPrivate.ptr;
- srcWidth = (int) pBitmap->devKind >> PWSH;
-
- pixel = devPriv->xor;
- xoff = xOrg & PIM;
- nBitmapLongs = (dx + xoff) >> MFB_PWSH;
- nPixmapLongs = (dx + PGSZB + xoff) >> PWSH;
-
- rightMask = ~cfb8BitLenMasks[((dx + xoff) & MFB_PIM)];
-
- pdstLine = pdstBase + (yOrg * dstWidth) + (xOrg >> PWSH);
-
- while (dy--)
- {
- c = 0;
- nPixmapTmp = nPixmapLongs;
- nBitmapTmp = nBitmapLongs;
- src = psrcLine;
- dst = pdstLine;
- while (nBitmapTmp--)
- {
- bits = *src++;
- c |= BitRight (bits, xoff);
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- nPixmapTmp -= 8;
- c = 0;
- if (xoff)
- c = BitLeft (bits, PGSZ - xoff);
- }
- if (BitLeft (rightMask, xoff))
- c |= BitRight (*src, xoff);
- c &= rightMask;
- switch (nPixmapTmp) {
- case 8:
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- case 7:
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- case 6:
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- case 5:
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- case 4:
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- case 3:
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- case 2:
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- case 1:
- WriteBitGroup(dst, pixel, GetBitGroup(c));
- NextBitGroup(c);
- dst++;
- case 0:
- break;
- }
- pdstLine += dstWidth;
- psrcLine += srcWidth;
- }
-}
-
-#endif
diff --git a/nx-X11/programs/Xserver/cfb/cfbrctstp8.c b/nx-X11/programs/Xserver/cfb/cfbrctstp8.c
deleted file mode 100644
index 9f753cdd7..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbrctstp8.c
+++ /dev/null
@@ -1,595 +0,0 @@
-/*
- * Fill 32 bit stippled rectangles for 8 bit frame buffers
- */
-/* $XFree86: xc/programs/Xserver/cfb/cfbrctstp8.c,v 3.5 2001/10/28 03:33:01 tsi Exp $ */
-/*
-
-Copyright 1989, 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.
-
-Author: Keith Packard, MIT X Consortium
-
-*/
-
-/* $Xorg: cfbrctstp8.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if PSZ == 8
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "cfb8bit.h"
-
-#define MFB_CONSTS_ONLY
-#include "maskbits.h"
-
-void
-cfb8FillRectOpaqueStippled32 (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox; /* number of boxes to fill */
- register BoxPtr pBox; /* pointer to list of boxes to fill */
-{
- CfbBits *src;
- int stippleHeight;
-
- int nlwDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- register int h; /* height of current box */
- CfbBits startmask;
- CfbBits endmask; /* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- register int nlw; /* loop version of nlwMiddle */
- CfbBits *dstLine;
- register CfbBits *dst; /* pointer to bits we're writing */
- CfbBits *dstTmp;
- int y; /* current scan line */
-
- CfbBits *pbits;/* pointer to start of pixmap */
- register CfbBits bits; /* bits from stipple */
- int rot;
- register CfbBits xor;
- PixmapPtr stipple;
- int wEnd;
-
- stipple = pGC->pRotatedPixmap;
-
- cfb8CheckOpaqueStipple(pGC->alu, pGC->fgPixel, pGC->bgPixel, pGC->planemask);
-
- stippleHeight = stipple->drawable.height;
- src = (CfbBits *)stipple->devPrivate.ptr;
-
- cfbGetLongWidthAndPointer (pDrawable, nlwDst, pbits)
-
- while (nBox--)
- {
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
- y = pBox->y1;
- dstLine = pbits + (pBox->y1 * nlwDst) + ((pBox->x1 & ~PIM) >> PWSH);
- if (((pBox->x1 & PIM) + w) <= PPW)
- {
- maskpartialbits(pBox->x1, w, startmask);
- nlwMiddle = 0;
- endmask = 0;
- }
- else
- {
- maskbits (pBox->x1, w, startmask, endmask, nlwMiddle);
- }
- rot = (pBox->x1 & ((PGSZ-1) & ~PIM));
- pBox++;
- y = y % stippleHeight;
-#if PPW == 4
- if (cfb8StippleRRop == GXcopy)
- {
- if (w < PGSZ*2)
- {
- while (h--)
- {
- bits = src[y];
- y++;
- if (y == stippleHeight)
- y = 0;
- if (rot)
- RotBitsLeft(bits,rot);
- dst = dstLine;
- dstLine += nlwDst;
- if (startmask)
- {
- *dst = (*dst & ~startmask) |
- (GetPixelGroup (bits) & startmask);
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- nlw = nlwMiddle;
- while (nlw--)
- {
- *dst++ = GetPixelGroup(bits);
- RotBitsLeft (bits, PGSZB);
- }
- if (endmask)
- {
- *dst = (*dst & ~endmask) |
- (GetPixelGroup (bits) & endmask);
- }
- }
- }
- else
- {
- wEnd = 7 - (nlwMiddle & 7);
- nlwMiddle = (nlwMiddle >> 3) + 1;
- while (h--)
- {
- bits = src[y];
- y++;
- if (y == stippleHeight)
- y = 0;
- if (rot != 0)
- RotBitsLeft (bits, rot);
- dstTmp = dstLine;
- dstLine += nlwDst;
- if (startmask)
- {
- *dstTmp = (*dstTmp & ~startmask) |
- (GetPixelGroup (bits) & startmask);
- dstTmp++;
- RotBitsLeft (bits, PGSZB);
- }
- w = 7 - wEnd;
- while (w--)
- {
- nlw = nlwMiddle;
- dst = dstTmp;
- dstTmp++;
- xor = GetPixelGroup (bits);
- while (nlw--)
- {
- *dst = xor;
- dst += 8;
- }
- NextBitGroup (bits);
- }
- nlwMiddle--;
- w = wEnd + 1;
- if (endmask)
- {
- dst = dstTmp + (nlwMiddle << 3);
- *dst = (*dst & ~endmask) |
- (GetPixelGroup(bits) & endmask);
- }
- while (w--)
- {
- nlw = nlwMiddle;
- dst = dstTmp;
- dstTmp++;
- xor = GetPixelGroup (bits);
- while (nlw--)
- {
- *dst = xor;
- dst += 8;
- }
- NextBitGroup (bits);
- }
- nlwMiddle++;
- }
- }
- }
- else
-#endif /* PPW == 4 */
- {
- while (h--)
- {
- bits = src[y];
- y++;
- if (y == stippleHeight)
- y = 0;
- if (rot)
- RotBitsLeft(bits,rot);
- dst = dstLine;
- dstLine += nlwDst;
- if (startmask)
- {
- xor = GetBitGroup(bits);
- *dst = MaskRRopPixels(*dst, xor, startmask);
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- nlw = nlwMiddle;
- while (nlw--)
- {
- RRopBitGroup(dst, GetBitGroup(bits));
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- if (endmask)
- {
- xor = GetBitGroup(bits);
- *dst = MaskRRopPixels(*dst, xor, endmask);
- }
- }
- }
- }
-}
-
-void
-cfb8FillRectTransparentStippled32 (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox; /* number of boxes to fill */
- BoxPtr pBox; /* pointer to list of boxes to fill */
-{
- int x, y, w, h;
- int nlwMiddle, nlwDst;
- CfbBits startmask, endmask;
- register CfbBits *dst;
- CfbBits *dstLine, *pbits, *dstTmp;
- CfbBits *src;
- register CfbBits xor;
- register CfbBits bits, mask;
- int rot;
- int wEnd;
- cfbPrivGCPtr devPriv;
- PixmapPtr stipple;
- int stippleHeight;
- register int nlw;
-
- devPriv = cfbGetGCPrivate(pGC);
- stipple = pGC->pRotatedPixmap;
- src = (CfbBits *)stipple->devPrivate.ptr;
- stippleHeight = stipple->drawable.height;
-
- cfb8CheckStipple (pGC->alu, pGC->fgPixel, pGC->planemask);
-
- cfbGetLongWidthAndPointer (pDrawable, nlwDst, pbits)
-
- while (nBox--)
- {
- x = pBox->x1;
- w = pBox->x2 - x;
- if (((x & PIM) + w) <= PPW)
- {
- maskpartialbits(x, w, startmask);
- endmask = 0;
- nlwMiddle = 0;
- }
- else
- {
- maskbits (x, w, startmask, endmask, nlwMiddle);
- }
- rot = (x & ((PGSZ-1) & ~PIM));
- y = pBox->y1;
- dstLine = pbits + (y * nlwDst) + (x >> PWSH);
- h = pBox->y2 - y;
- pBox++;
- y %= stippleHeight;
-#if PPW == 4
- if (cfb8StippleRRop == GXcopy)
- {
- xor = devPriv->xor;
- if (w < PGSZ*2)
- {
- while (h--)
- {
- bits = src[y];
- y++;
- if (y == stippleHeight)
- y = 0;
- if (rot != 0)
- RotBitsLeft (bits, rot);
- dst = dstLine;
- dstLine += nlwDst;
- if (startmask)
- {
- mask = cfb8PixelMasks[GetBitGroup(bits)];
- *dst = (*dst & ~(mask & startmask)) |
- (xor & (mask & startmask));
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- nlw = nlwMiddle;
- while (nlw--)
- {
- WriteBitGroup (dst,xor,GetBitGroup(bits))
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- if (endmask)
- {
- mask = cfb8PixelMasks[GetBitGroup(bits)];
- *dst = (*dst & ~(mask & endmask)) |
- (xor & (mask & endmask));
- }
- }
- }
- else
- {
- wEnd = 7 - (nlwMiddle & 7);
- nlwMiddle = (nlwMiddle >> 3) + 1;
- while (h--)
- {
- bits = src[y];
- y++;
- if (y == stippleHeight)
- y = 0;
- if (rot != 0)
- RotBitsLeft (bits, rot);
- dstTmp = dstLine;
- dstLine += nlwDst;
- if (startmask)
- {
- mask = cfb8PixelMasks[GetBitGroup(bits)];
- *dstTmp = (*dstTmp & ~(mask & startmask)) |
- (xor & (mask & startmask));
- dstTmp++;
- RotBitsLeft (bits, PGSZB);
- }
- w = 7 - wEnd;
- while (w--)
- {
- nlw = nlwMiddle;
- dst = dstTmp;
- dstTmp++;
-#if defined(__GNUC__) && defined(mc68020)
- mask = cfb8PixelMasks[GetBitGroup(bits)];
- xor = xor & mask;
- mask = ~mask;
- while (nlw--)
- {
- *dst = (*dst & mask) | xor;
- dst += 8;
- }
- xor = devPriv->xor;
-#else
-#define SwitchBitsLoop(body) \
- while (nlw--) \
- { \
- body \
- dst += 8; \
- }
- SwitchBitGroup(dst, xor, GetBitGroup(bits));
-#undef SwitchBitsLoop
-#endif
- NextBitGroup (bits);
- }
- nlwMiddle--;
- w = wEnd + 1;
- if (endmask)
- {
- mask = cfb8PixelMasks[GetBitGroup(bits)];
- dst = dstTmp + (nlwMiddle << 3);
- *dst = (*dst & ~(mask & endmask)) |
- (xor & (mask & endmask));
- }
- while (w--)
- {
- nlw = nlwMiddle;
- dst = dstTmp;
- dstTmp++;
-#if defined(__GNUC__) && defined(mc68020)
- mask = cfb8PixelMasks[GetBitGroup(bits)];
- xor = xor & mask;
- mask = ~mask;
- while (nlw--)
- {
- *dst = (*dst & mask) | xor;
- dst += 8;
- }
- xor = devPriv->xor;
-#else
-#define SwitchBitsLoop(body) \
- while (nlw--) \
- { \
- body \
- dst += 8; \
- }
- SwitchBitGroup(dst, xor, GetBitGroup(bits));
-#undef SwitchBitsLoop
-#endif
- NextBitGroup (bits);
- }
- nlwMiddle++;
- }
- }
- }
- else
-#endif /* PPW == 4 */
- {
- while (h--)
- {
- bits = src[y];
- y++;
- if (y == stippleHeight)
- y = 0;
- if (rot != 0)
- RotBitsLeft (bits, rot);
- dst = dstLine;
- dstLine += nlwDst;
- if (startmask)
- {
- xor = GetBitGroup(bits);
- *dst = MaskRRopPixels(*dst, xor, startmask);
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- nlw = nlwMiddle;
- while (nlw--)
- {
- RRopBitGroup(dst, GetBitGroup(bits));
- dst++;
- RotBitsLeft (bits, PGSZB);
- }
- if (endmask)
- {
- xor = GetBitGroup(bits);
- *dst = MaskRRopPixels(*dst, xor, endmask);
- }
- }
- }
- }
-}
-
-
-void
-cfb8FillRectStippledUnnatural (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox;
- register BoxPtr pBox;
-{
- CfbBits *pdstBase; /* pointer to start of bitmap */
- CfbBits *pdstLine; /* current destination line */
- int nlwDst; /* width in longwords of bitmap */
- PixmapPtr pStipple; /* pointer to stipple we want to fill with */
- int nlwMiddle;
- register int nlw;
- int x, y, w, h, xrem, xSrc, ySrc;
- int stwidth, stippleWidth;
- int stippleHeight;
- register CfbBits bits, inputBits;
- register int partBitsLeft;
- int nextPartBits;
- int bitsLeft, bitsWhole;
- register CfbBits *pdst; /* pointer to current word in bitmap */
- CfbBits *srcTemp, *srcStart;
- CfbBits *psrcBase;
- CfbBits startmask, endmask;
-
- if (pGC->fillStyle == FillStippled)
- cfb8CheckStipple (pGC->alu, pGC->fgPixel, pGC->planemask);
- else
- cfb8CheckOpaqueStipple (pGC->alu, pGC->fgPixel, pGC->bgPixel, pGC->planemask);
-
- if (cfb8StippleRRop == GXnoop)
- return;
-
- /*
- * OK, so what's going on here? We have two Drawables:
- *
- * The Stipple:
- * Depth = 1
- * Width = stippleWidth
- * Words per scanline = stwidth
- * Pointer to pixels = pStipple->devPrivate.ptr
- */
-
- pStipple = pGC->stipple;
-
- stwidth = pStipple->devKind >> PWSH;
- stippleWidth = pStipple->drawable.width;
- stippleHeight = pStipple->drawable.height;
- psrcBase = (CfbBits *) pStipple->devPrivate.ptr;
-
- /*
- * The Target:
- * Depth = PSZ
- * Width = determined from *pwidth
- * Words per scanline = nlwDst
- * Pointer to pixels = addrlBase
- */
-
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
-
- cfbGetLongWidthAndPointer (pDrawable, nlwDst, pdstBase)
-
- /* this replaces rotating the stipple. Instead we just adjust the offset
- * at which we start grabbing bits from the stipple.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and xrem always stay within the stipple bounds.
- */
-
- xSrc += (pGC->patOrg.x % stippleWidth) - stippleWidth;
- ySrc += (pGC->patOrg.y % stippleHeight) - stippleHeight;
-
- bitsWhole = stippleWidth;
-
- while (nBox--)
- {
- x = pBox->x1;
- y = pBox->y1;
- w = pBox->x2 - x;
- h = pBox->y2 - y;
- pBox++;
- pdstLine = pdstBase + y * nlwDst + (x >> PWSH);
- y = (y - ySrc) % stippleHeight;
- srcStart = psrcBase + y * stwidth;
- xrem = ((x & ~PIM) - xSrc) % stippleWidth;
- if (((x & PIM) + w) < PPW)
- {
- maskpartialbits (x, w, startmask);
- nlwMiddle = 0;
- endmask = 0;
- }
- else
- {
- maskbits (x, w, startmask, endmask, nlwMiddle);
- }
- while (h--)
- {
- srcTemp = srcStart + (xrem >> MFB_PWSH);
- bitsLeft = stippleWidth - (xrem & ~MFB_PIM);
- NextUnnaturalStippleWord
- NextSomeBits (inputBits, (xrem & MFB_PIM));
- partBitsLeft -= (xrem & MFB_PIM);
- NextUnnaturalStippleBits
- nlw = nlwMiddle;
- pdst = pdstLine;
- if (startmask)
- {
- *pdst = MaskRRopPixels(*pdst,bits,startmask);
- pdst++;
- NextUnnaturalStippleBits
- }
- while (nlw--)
- {
- *pdst = RRopPixels(*pdst,bits);
- pdst++;
- NextUnnaturalStippleBits
- }
- if (endmask)
- *pdst = MaskRRopPixels(*pdst,bits,endmask);
- pdstLine += nlwDst;
- y++;
- srcStart += stwidth;
- if (y == stippleHeight)
- {
- y = 0;
- srcStart = psrcBase;
- }
- }
- }
-}
-
-#endif /* PSZ == 8 */
diff --git a/nx-X11/programs/Xserver/cfb/cfbrrop.c b/nx-X11/programs/Xserver/cfb/cfbrrop.c
deleted file mode 100644
index 77487bc6a..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbrrop.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * $Xorg: cfbrrop.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $
- *
-Copyright 1989, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-/* $XFree86: xc/programs/Xserver/cfb/cfbrrop.c,v 1.5 2001/10/28 03:33:02 tsi Exp $ */
-
-/* cfb reduced rasterop computations */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "cfb.h"
-#include "cfbmskbits.h"
-
-/* A description:
- *
- * There are four possible operations on each bit in the destination word,
- *
- * 1 2 3 4
- *
- * 0 0 0 1 1
- * 1 0 1 0 1
- *
- * On examination of the reduced rop equation (dst = (dst & and) ^ xor),
- * these four fall to reduced rops as follows:
- *
- * and 0 1 1 0
- * xor 0 0 1 1
- *
- * or, (if 'and' is expensive) (dst = (dst | or) ^ xor)
- *
- * or 1 0 0 1
- * xor 1 0 1 0
- *
- * The trouble with using this later equation is that trivial
- * rasterop reduction is more difficult; some common rasterops
- * use complicated expressions of xor/and instead of the simple
- * ones while other common rasterops are not made any simpler:
- *
- * GXcopy: *dst = ~xor instead of *dst = xor
- * GXand: *dst = *dst & ~or instead of *dst = *dst & and
- * GXor: *dst = *dst | or instead of *dst = *dst | xor
- * GXxor: *dst = *dst ^ xor instead of *dst = *dst ^ xor
- *
- * If you're really set on using this second mechanism, the changes
- * are pretty simple.
- *
- * All that remains is to provide a mechanism for computing and/xor values
- * based on the raster op and foreground value.
- *
- * The 16 rops fall as follows, with the associated reduced
- * rop and/xor and or/xor values. The values in parenthesis following the
- * reduced values gives an equation using the source value for
- * the reduced value, and is one of {0, src, ~src, 1} as appropriate.
- *
- * clear and andReverse copy
- * src 0 1 0 1 0 1 0 1
- * dst 0 0 0 0 0 0 0 0 1 0 0 1
- * 1 0 0 1 0 1 1 0 0 1 0 1
- *
- * and 0 0 (0) 0 1 (src) 0 1 (src) 0 0 (0)
- * xor 0 0 (0) 0 0 (0) 0 1 (src) 0 1 (src)
- *
- * or 1 1 (1) 1 0 (~src) 1 0 (~src) 1 1 (1)
- * xor 1 1 (1) 1 0 (~src) 1 1 (1) 1 0 (~src)
- *
- * andInverted noop xor or
- * src 0 1 0 1 0 1 0 1
- * dst 0 0 0 0 0 0 0 0 1 0 0 1
- * 1 1 0 1 1 1 1 1 0 1 1 1
- *
- * and 1 0 (~src) 1 1 (1) 1 1 (1) 1 0 (~src)
- * xor 0 0 (0) 0 0 (0) 0 1 (src) 0 1 (src)
- *
- * or 0 1 (src) 0 0 (0) 0 0 (0) 0 1 (src)
- * xor 0 1 (src) 0 0 (0) 0 1 (src) 0 0 (0)
- *
- * nor equiv invert orReverse
- * src 0 1 0 1 0 1 0 1
- * dst 0 1 0 0 1 0 0 1 1 0 1 1
- * 1 0 0 1 0 1 1 0 0 1 0 1
- *
- * and 1 0 (~src) 1 1 (1) 1 1 (1) 1 0 (~src)
- * xor 1 0 (~src) 1 0 (~src) 1 1 (1) 1 1 (1)
- *
- * or 0 1 (src) 0 0 (0) 0 0 (0) 0 1 (src)
- * xor 1 1 (1) 1 0 (~src) 1 1 (1) 1 0 (~src)
- *
- * copyInverted orInverted nand set
- * src 0 1 0 1 0 1 0 1
- * dst 0 1 0 0 1 0 0 1 1 0 1 1
- * 1 1 0 1 1 1 1 1 0 1 1 1
- *
- * and 0 0 (0) 0 1 (src) 0 1 (src) 0 0 (0)
- * xor 1 0 (~src) 1 0 (~src) 1 1 (1) 1 1 (1)
- *
- * or 1 1 (1) 1 0 (~src) 1 0 (~src) 1 1 (1)
- * xor 0 1 (src) 0 0 (0) 0 1 (src) 0 0 (0)
- */
-
-int
-cfbReduceRasterOp (rop, fg, pm, andp, xorp)
- int rop;
- CfbBits fg, pm;
- CfbBits *andp, *xorp;
-{
- CfbBits and, xor;
- int rrop;
-
- fg = PFILL (fg);
- pm = PFILL (pm);
- switch (rop)
- {
- case GXclear:
- and = 0;
- xor = 0;
- break;
- case GXand:
- and = fg;
- xor = 0;
- break;
- case GXandReverse:
- and = fg;
- xor = fg;
- break;
- case GXcopy:
- and = 0;
- xor = fg;
- break;
- case GXandInverted:
- and = ~fg;
- xor = 0;
- break;
- case GXnoop:
- and = ~0;
- xor = 0;
- break;
- case GXxor:
- and = ~0;
- xor = fg;
- break;
- case GXor:
- and = ~fg;
- xor = fg;
- break;
- case GXnor:
- and = ~fg;
- xor = ~fg;
- break;
- case GXequiv:
- and = ~0;
- xor = ~fg;
- break;
- case GXinvert:
- and = ~0;
- xor = ~0;
- break;
- case GXorReverse:
- and = ~fg;
- xor = ~0;
- break;
- case GXcopyInverted:
- and = 0;
- xor = ~fg;
- break;
- case GXorInverted:
- and = fg;
- xor = ~fg;
- break;
- case GXnand:
- and = fg;
- xor = ~0;
- break;
- case GXset:
- and = 0;
- xor = ~0;
- break;
- default:
- and = xor = 0;
- break;
- }
- and |= ~pm;
- xor &= pm;
- *andp = and;
- *xorp = xor;
- /* check for some special cases to reduce computation */
- if (and == 0)
- rrop = GXcopy;
- /* nothing checks for GXnoop
- else if (and == ~0 && xor == 0)
- rrop = GXnoop;
- */
- else if (and == ~0)
- rrop = GXxor;
- else if (xor == 0)
- rrop = GXand;
- else if ( (and ^ xor) == ~0) /* fix XBUG 6541 */
- rrop = GXor;
- else
- rrop = GXset; /* rop not reduced */
- return rrop;
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbrrop.h b/nx-X11/programs/Xserver/cfb/cfbrrop.h
deleted file mode 100644
index 6deb7b899..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbrrop.h
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * $Xorg: cfbrrop.h,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $
- *
-Copyright 1989, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* $XFree86: xc/programs/Xserver/cfb/cfbrrop.h,v 3.10tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef GXcopy
-#include <X11/X.h>
-#endif
-
-#define RROP_FETCH_GC(gc) \
- RROP_FETCH_GCPRIV(((cfbPrivGCPtr)(gc)->devPrivates[cfbGCPrivateIndex].ptr))
-
-#ifndef RROP
-#define RROP GXset
-#endif
-
-#if RROP == GXcopy
-#if PSZ == 24
-#define RROP_DECLARE register CfbBits rrop_xor; \
- CfbBits piQxelXor[3], spiQxelXor[8];
-#define RROP_FETCH_GCPRIV(devPriv) rrop_xor = (devPriv)->xor; \
- spiQxelXor[0] = rrop_xor & 0xFFFFFF; \
- spiQxelXor[2] = rrop_xor << 24; \
- spiQxelXor[3] = (rrop_xor & 0xFFFF00)>> 8; \
- spiQxelXor[4] = rrop_xor << 16; \
- spiQxelXor[5] = (rrop_xor & 0xFF0000)>> 16; \
- spiQxelXor[6] = rrop_xor << 8; \
- spiQxelXor[1] = spiQxelXor[7] = 0; \
- piQxelXor[0] = (rrop_xor & 0xFFFFFF)|(rrop_xor << 24); \
- piQxelXor[1] = (rrop_xor << 16)|((rrop_xor & 0xFFFF00)>> 8); \
- piQxelXor[2] = (rrop_xor << 8)|((rrop_xor & 0xFF0000)>> 16);
-#define RROP_SOLID24(dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- *(dst) = (*(dst) & cfbrmask[idx])|spiQxelXor[idx]; \
- if (idx == 2 || idx == 4){ \
- idx++; \
- *((dst)+1) = (*((dst)+1) & cfbrmask[idx])|spiQxelXor[idx]; \
- } \
- }
-#define RROP_SOLID(dst, idx) \
- (*(dst) = piQxelXor[(idx)])
-#define RROP_SOLID_MASK(dst,mask,idx) \
- (*(dst) = (*(dst) & ~(mask))|(piQxelXor[(idx)] & (mask)))
-#define RROP_UNDECLARE (void)piQxelXor; (void)spiQxelXor;
-#else
-#define RROP_FETCH_GCPRIV(devPriv) rrop_xor = (devPriv)->xor;
-#define RROP_DECLARE register CfbBits rrop_xor;
-#define RROP_SOLID(dst) (*(dst) = (rrop_xor))
-#define RROP_SOLID_MASK(dst,mask) (*(dst) = (*(dst) & ~(mask)) | ((rrop_xor) & (mask)))
-#define RROP_UNDECLARE
-#endif
-#define RROP_NAME(prefix) RROP_NAME_CAT(prefix,Copy)
-#endif /* GXcopy */
-
-#if RROP == GXxor
-#if PSZ == 24
-#define RROP_DECLARE register CfbBits rrop_xor; \
- CfbBits piQxelXor[3], spiQxelXor[8];
-#define RROP_FETCH_GCPRIV(devPriv) rrop_xor = (devPriv)->xor; \
- spiQxelXor[0] = rrop_xor & 0xFFFFFF; \
- spiQxelXor[2] = rrop_xor << 24; \
- spiQxelXor[3] = (rrop_xor & 0xFFFF00)>> 8; \
- spiQxelXor[4] = rrop_xor << 16; \
- spiQxelXor[5] = (rrop_xor & 0xFF0000)>> 16; \
- spiQxelXor[6] = rrop_xor << 8; \
- spiQxelXor[1] = spiQxelXor[7] = 0; \
- piQxelXor[0] = (rrop_xor & 0xFFFFFF)|(rrop_xor << 24); \
- piQxelXor[1] = (rrop_xor << 16)|((rrop_xor & 0xFFFF00)>> 8); \
- piQxelXor[2] = (rrop_xor << 8)|((rrop_xor & 0xFF0000)>> 16);
-#define RROP_SOLID24(dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- *(dst) ^= spiQxelXor[idx]; \
- if (idx == 2 || idx == 4) \
- *((dst)+1) ^= spiQxelXor[idx+1]; \
- }
-#define RROP_SOLID(dst,idx) \
- (*(dst) ^= piQxelXor[(idx)])
-#define RROP_SOLID_MASK(dst,mask,idx) \
- (*(dst) ^= (piQxelXor[(idx)] & (mask)))
-#define RROP_UNDECLARE (void)piQxelXor; (void)spiQxelXor;
-#else
-#define RROP_DECLARE register CfbBits rrop_xor;
-#define RROP_FETCH_GCPRIV(devPriv) rrop_xor = (devPriv)->xor;
-#define RROP_SOLID(dst) (*(dst) ^= (rrop_xor))
-#define RROP_SOLID_MASK(dst,mask) (*(dst) ^= ((rrop_xor) & (mask)))
-#define RROP_UNDECLARE
-#endif
-#define RROP_NAME(prefix) RROP_NAME_CAT(prefix,Xor)
-#endif /* GXxor */
-
-#if RROP == GXand
-#if PSZ == 24
-#define RROP_DECLARE register CfbBits rrop_and; \
- CfbBits piQxelAnd[3], spiQxelAnd[6];
-#define RROP_FETCH_GCPRIV(devPriv) rrop_and = (devPriv)->and; \
- spiQxelAnd[0] = (rrop_and & 0xFFFFFF) | 0xFF000000; \
- spiQxelAnd[2] = (rrop_and << 24) | 0xFFFFFF; \
- spiQxelAnd[3] = ((rrop_and & 0xFFFF00)>> 8) | 0xFFFF0000; \
- spiQxelAnd[4] = (rrop_and << 16) | 0xFFFF; \
- spiQxelAnd[5] = ((rrop_and & 0xFF0000)>> 16) | 0xFFFFFF00; \
- spiQxelAnd[1] = (rrop_and << 8) | 0xFF; \
- piQxelAnd[0] = (rrop_and & 0xFFFFFF)|(rrop_and << 24); \
- piQxelAnd[1] = (rrop_and << 16)|((rrop_and & 0xFFFF00)>> 8); \
- piQxelAnd[2] = (rrop_and << 8)|((rrop_and & 0xFF0000)>> 16);
-#define RROP_SOLID24(dst,index) {\
- switch((index) & 3){ \
- case 0: \
- *(dst) &= spiQxelAnd[0]; \
- break; \
- case 3: \
- *(dst) &= spiQxelAnd[1]; \
- break; \
- case 1: \
- *(dst) &= spiQxelAnd[2]; \
- *((dst)+1) &= spiQxelAnd[3]; \
- break; \
- case 2: \
- *(dst) &= spiQxelAnd[4]; \
- *((dst)+1) &= spiQxelAnd[5]; \
- break; \
- } \
- }
-#define RROP_SOLID(dst,idx) \
- (*(dst) &= piQxelAnd[(idx)])
-#define RROP_SOLID_MASK(dst,mask,idx) \
- (*(dst) &= (piQxelAnd[(idx)] | ~(mask)))
-#define RROP_UNDECLARE (void)piQxelAnd; (void)spiQxelAnd;
-#else
-#define RROP_DECLARE register CfbBits rrop_and;
-#define RROP_FETCH_GCPRIV(devPriv) rrop_and = (devPriv)->and;
-#define RROP_SOLID(dst) (*(dst) &= (rrop_and))
-#define RROP_SOLID_MASK(dst,mask) (*(dst) &= ((rrop_and) | ~(mask)))
-#define RROP_UNDECLARE
-#endif
-#define RROP_NAME(prefix) RROP_NAME_CAT(prefix,And)
-#endif /* GXand */
-
-#if RROP == GXor
-#if PSZ == 24
-#define RROP_DECLARE register CfbBits rrop_or; \
- CfbBits piQxelOr[3], spiQxelOr[6];
-#define RROP_FETCH_GCPRIV(devPriv) rrop_or = (devPriv)->xor; \
- spiQxelOr[0] = rrop_or & 0xFFFFFF; \
- spiQxelOr[1] = rrop_or << 24; \
- spiQxelOr[2] = rrop_or << 16; \
- spiQxelOr[3] = rrop_or << 8; \
- spiQxelOr[4] = (rrop_or & 0xFFFF00)>> 8; \
- spiQxelOr[5] = (rrop_or & 0xFF0000)>> 16; \
- piQxelOr[0] = (rrop_or & 0xFFFFFF)|(rrop_or << 24); \
- piQxelOr[1] = (rrop_or << 16)|((rrop_or & 0xFFFF00)>> 8); \
- piQxelOr[2] = (rrop_or << 8)|((rrop_or & 0xFF0000)>> 16);
-#define RROP_SOLID24(dst,index) {\
- switch((index) & 3){ \
- case 0: \
- *(dst) |= spiQxelOr[0]; \
- break; \
- case 3: \
- *(dst) |= spiQxelOr[3]; \
- break; \
- case 1: \
- *(dst) |= spiQxelOr[1]; \
- *((dst)+1) |= spiQxelOr[4]; \
- break; \
- case 2: \
- *(dst) |= spiQxelOr[2]; \
- *((dst)+1) |= spiQxelOr[5]; \
- break; \
- } \
- }
-#define RROP_SOLID(dst,idx) \
- (*(dst) |= piQxelOr[(idx)])
-#define RROP_SOLID_MASK(dst,mask,idx) \
- (*(dst) |= (piQxelOr[(idx)] & (mask)))
-#define RROP_UNDECLARE (void)piQxelOr; (void)spiQxelOr;
-#else
-#define RROP_DECLARE register CfbBits rrop_or;
-#define RROP_FETCH_GCPRIV(devPriv) rrop_or = (devPriv)->xor;
-#define RROP_SOLID(dst) (*(dst) |= (rrop_or))
-#define RROP_SOLID_MASK(dst,mask) (*(dst) |= ((rrop_or) & (mask)))
-#define RROP_UNDECLARE
-#endif
-#define RROP_NAME(prefix) RROP_NAME_CAT(prefix,Or)
-#endif /* GXor */
-
-#if RROP == GXnoop
-#define RROP_DECLARE
-#define RROP_FETCH_GCPRIV(devPriv)
-#define RROP_SOLID(dst)
-#define RROP_SOLID_MASK(dst,mask)
-#define RROP_NAME(prefix) RROP_NAME_CAT(prefix,Noop)
-#define RROP_UNDECLARE
-#endif /* GXnoop */
-
-#if RROP == GXset
-#if PSZ == 24
-#define RROP_DECLARE register CfbBits rrop_and, rrop_xor; \
- CfbBits piQxelAnd[3], piQxelXor[3], spiQxelAnd[6], spiQxelXor[6];
-#define RROP_FETCH_GCPRIV(devPriv) rrop_and = (devPriv)->and; \
- rrop_xor = (devPriv)->xor; \
- spiQxelXor[0] = rrop_xor & 0xFFFFFF; \
- spiQxelXor[1] = rrop_xor << 24; \
- spiQxelXor[2] = rrop_xor << 16; \
- spiQxelXor[3] = rrop_xor << 8; \
- spiQxelXor[4] = (rrop_xor & 0xFFFF00)>> 8; \
- spiQxelXor[5] = (rrop_xor & 0xFF0000)>> 16; \
- spiQxelAnd[0] = (rrop_and & 0xFFFFFF) | 0xFF000000; \
- spiQxelAnd[1] = (rrop_and << 24) | 0xFFFFFF; \
- spiQxelAnd[2] = (rrop_and << 16) | 0xFFFF; \
- spiQxelAnd[3] = (rrop_and << 8) | 0xFF; \
- spiQxelAnd[4] = ((rrop_and & 0xFFFF00)>> 8) | 0xFFFF0000; \
- spiQxelAnd[5] = ((rrop_and & 0xFF0000)>> 16) | 0xFFFFFF00; \
- piQxelAnd[0] = (rrop_and & 0xFFFFFF)|(rrop_and << 24); \
- piQxelAnd[1] = (rrop_and << 16)|((rrop_and & 0xFFFF00)>> 8); \
- piQxelAnd[2] = (rrop_and << 8)|((rrop_and & 0xFF0000)>> 16); \
- piQxelXor[0] = (rrop_xor & 0xFFFFFF)|(rrop_xor << 24); \
- piQxelXor[1] = (rrop_xor << 16)|((rrop_xor & 0xFFFF00)>> 8); \
- piQxelXor[2] = (rrop_xor << 8)|((rrop_xor & 0xFF0000)>> 16);
-#define RROP_SOLID24(dst,index) {\
- switch((index) & 3){ \
- case 0: \
- *(dst) = ((*(dst) & (piQxelAnd[0] |0xFF000000))^(piQxelXor[0] & 0xFFFFFF)); \
- break; \
- case 3: \
- *(dst) = ((*(dst) & (piQxelAnd[2]|0xFF))^(piQxelXor[2] & 0xFFFFFF00)); \
- break; \
- case 1: \
- *(dst) = ((*(dst) & (piQxelAnd[0]|0xFFFFFF))^(piQxelXor[0] & 0xFF000000)); \
- *((dst)+1) = ((*((dst)+1) & (piQxelAnd[1]|0xFFFF0000))^(piQxelXor[1] & 0xFFFF)); \
- break; \
- case 2: \
- *(dst) = ((*(dst) & (piQxelAnd[1]|0xFFFF))^(piQxelXor[1] & 0xFFFF0000)); \
- *((dst)+1) = ((*((dst)+1) & (piQxelAnd[2]|0xFFFFFF00))^(piQxelXor[2] & 0xFF)); \
- break; \
- } \
- }
-#define RROP_SOLID(dst,idx) \
- (*(dst) = DoRRop (*(dst), piQxelAnd[(idx)], piQxelXor[(idx)]))
-#define RROP_SOLID_MASK(dst,mask,idx) \
- (*(dst) = DoMaskRRop (*(dst), piQxelAnd[(idx)], piQxelXor[(idx)], (mask)))
-#define RROP_UNDECLARE (void)piQxelAnd; (void)piQxelXor; \
- (void)spiQxelAnd; (void)spiQxelXor;
-#else
-#define RROP_DECLARE register CfbBits rrop_and, rrop_xor;
-#define RROP_FETCH_GCPRIV(devPriv) rrop_and = (devPriv)->and; \
- rrop_xor = (devPriv)->xor;
-#define RROP_SOLID(dst) (*(dst) = DoRRop (*(dst), rrop_and, rrop_xor))
-#define RROP_SOLID_MASK(dst,mask) (*(dst) = DoMaskRRop (*(dst), rrop_and, rrop_xor, (mask)))
-#define RROP_UNDECLARE
-#endif
-#define RROP_NAME(prefix) RROP_NAME_CAT(prefix,General)
-#endif /* GXset */
-
-#define RROP_UNROLL_CASE1(p,i) case (i): RROP_SOLID((p) - (i));
-#define RROP_UNROLL_CASE2(p,i) RROP_UNROLL_CASE1(p,(i)+1) RROP_UNROLL_CASE1(p,i)
-#define RROP_UNROLL_CASE4(p,i) RROP_UNROLL_CASE2(p,(i)+2) RROP_UNROLL_CASE2(p,i)
-#define RROP_UNROLL_CASE8(p,i) RROP_UNROLL_CASE4(p,(i)+4) RROP_UNROLL_CASE4(p,i)
-#define RROP_UNROLL_CASE16(p,i) RROP_UNROLL_CASE8(p,(i)+8) RROP_UNROLL_CASE8(p,i)
-#define RROP_UNROLL_CASE3(p) RROP_UNROLL_CASE2(p,2) RROP_UNROLL_CASE1(p,1)
-#define RROP_UNROLL_CASE7(p) RROP_UNROLL_CASE4(p,4) RROP_UNROLL_CASE3(p)
-#define RROP_UNROLL_CASE15(p) RROP_UNROLL_CASE8(p,8) RROP_UNROLL_CASE7(p)
-#define RROP_UNROLL_CASE31(p) RROP_UNROLL_CASE16(p,16) RROP_UNROLL_CASE15(p)
-#ifdef LONG64
-#define RROP_UNROLL_CASE63(p) RROP_UNROLL_CASE32(p,32) RROP_UNROLL_CASE31(p)
-#endif /* LONG64 */
-
-#define RROP_UNROLL_LOOP1(p,i) RROP_SOLID((p) + (i));
-#define RROP_UNROLL_LOOP2(p,i) RROP_UNROLL_LOOP1(p,(i)) RROP_UNROLL_LOOP1(p,(i)+1)
-#define RROP_UNROLL_LOOP4(p,i) RROP_UNROLL_LOOP2(p,(i)) RROP_UNROLL_LOOP2(p,(i)+2)
-#define RROP_UNROLL_LOOP8(p,i) RROP_UNROLL_LOOP4(p,(i)) RROP_UNROLL_LOOP4(p,(i)+4)
-#define RROP_UNROLL_LOOP16(p,i) RROP_UNROLL_LOOP8(p,(i)) RROP_UNROLL_LOOP8(p,(i)+8)
-#define RROP_UNROLL_LOOP32(p,i) RROP_UNROLL_LOOP16(p,(i)) RROP_UNROLL_LOOP16(p,(i)+16)
-#ifdef LONG64
-#define RROP_UNROLL_LOOP64(p,i) RROP_UNROLL_LOOP32(p,(i)) RROP_UNROLL_LOOP32(p,(i)+32)
-#endif /* LONG64 */
-
-#if defined (FAST_CONSTANT_OFFSET_MODE) && defined (SHARED_IDCACHE) && (RROP == GXcopy)
-
-#ifdef LONG64
-#define RROP_UNROLL_SHIFT 6
-#define RROP_UNROLL_CASE(p) RROP_UNROLL_CASE63(p)
-#define RROP_UNROLL_LOOP(p) RROP_UNROLL_LOOP64(p,-64)
-#else /* not LONG64 */
-#define RROP_UNROLL_SHIFT 5
-#define RROP_UNROLL_CASE(p) RROP_UNROLL_CASE31(p)
-#define RROP_UNROLL_LOOP(p) RROP_UNROLL_LOOP32(p,-32)
-#endif /* LONG64 */
-#define RROP_UNROLL (1<<RROP_UNROLL_SHIFT)
-#define RROP_UNROLL_MASK (RROP_UNROLL-1)
-
-#define RROP_SPAN(pdst,nmiddle) {\
- int part = (nmiddle) & RROP_UNROLL_MASK; \
- (nmiddle) >>= RROP_UNROLL_SHIFT; \
- (pdst) += part * (sizeof (CfbBits) / sizeof (*pdst)); \
- switch (part) {\
- RROP_UNROLL_CASE((CfbBits *) (pdst)) \
- } \
- while (--(nmiddle) >= 0) { \
- (pdst) += RROP_UNROLL * (sizeof (CfbBits) / sizeof (*pdst)); \
- RROP_UNROLL_LOOP((CfbBits *) (pdst)) \
- } \
-}
-#else
-#define RROP_SPAN(pdst,nmiddle) \
- while (--(nmiddle) >= 0) { \
- RROP_SOLID((CfbBits *) (pdst)); \
- (pdst) += sizeof (CfbBits) / sizeof (*pdst); \
- }
-#endif
-
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define RROP_NAME_CAT(prefix,suffix) prefix##suffix
-#else
-#define RROP_NAME_CAT(prefix,suffix) prefix/**/suffix
-#endif
diff --git a/nx-X11/programs/Xserver/cfb/cfbscrinit.c b/nx-X11/programs/Xserver/cfb/cfbscrinit.c
deleted file mode 100644
index 7299bbdf8..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbscrinit.c
+++ /dev/null
@@ -1,232 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbscrinit.c,v 1.19 2001/01/17 22:36:36 dawes Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-/* $Xorg: cfbscrinit.c,v 1.3 2000/08/17 19:48:15 cpqbld Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "resource.h"
-#include "colormap.h"
-#include "colormapst.h"
-#include "cfb.h"
-#include "mi.h"
-#include "mistruct.h"
-#include "dix.h"
-#include "cfbmskbits.h"
-#include "mibstore.h"
-
-BSFuncRec cfbBSFuncRec = {
- cfbSaveAreas,
- cfbRestoreAreas,
- (BackingStoreSetClipmaskRgnProcPtr) 0,
- (BackingStoreGetImagePixmapProcPtr) 0,
- (BackingStoreGetSpansPixmapProcPtr) 0,
-};
-
-Bool
-cfbCloseScreen (index, pScreen)
- int index;
- ScreenPtr pScreen;
-{
- int d;
- DepthPtr depths = pScreen->allowedDepths;
-
- for (d = 0; d < pScreen->numDepths; d++)
- xfree (depths[d].vids);
- xfree (depths);
- xfree (pScreen->visuals);
-#ifdef CFB_NEED_SCREEN_PRIVATE
- xfree (pScreen->devPrivates[cfbScreenPrivateIndex].ptr);
-#else
- xfree (pScreen->devPrivate);
-#endif
- return TRUE;
-}
-
-static void DestroyColormapNoop(
- ColormapPtr pColormap)
-{
- /* NOOP */
-}
-
-static void StoreColorsNoop(
- ColormapPtr pColormap,
- int ndef,
- xColorItem * pdef)
-{
- /* NOOP */
-}
-
-Bool
-cfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
-{
- if (!cfbAllocatePrivates(pScreen, (int *) 0, (int *) 0))
- return FALSE;
- pScreen->defColormap = FakeClientID(0);
- /* let CreateDefColormap do whatever it wants for pixels */
- pScreen->blackPixel = pScreen->whitePixel = (Pixel) 0;
- pScreen->QueryBestSize = mfbQueryBestSizeWeak();
- /* SaveScreen */
- pScreen->GetImage = cfbGetImage;
- pScreen->GetSpans = cfbGetSpans;
- pScreen->CreateWindow = cfbCreateWindow;
- pScreen->DestroyWindow = cfbDestroyWindow;
- pScreen->PositionWindow = cfbPositionWindow;
- pScreen->ChangeWindowAttributes = cfbChangeWindowAttributes;
- pScreen->RealizeWindow = cfbMapWindow;
- pScreen->UnrealizeWindow = cfbUnmapWindow;
- pScreen->PaintWindowBackground = cfbPaintWindow;
- pScreen->PaintWindowBorder = cfbPaintWindow;
- pScreen->CopyWindow = cfbCopyWindow;
- pScreen->CreatePixmap = cfbCreatePixmap;
- pScreen->DestroyPixmap = cfbDestroyPixmap;
- pScreen->RealizeFont = mfbRealizeFontWeak();
- pScreen->UnrealizeFont = mfbUnrealizeFontWeak();
- pScreen->CreateGC = cfbCreateGC;
- pScreen->CreateColormap = cfbInitializeColormap;
- pScreen->DestroyColormap = DestroyColormapNoop;
- pScreen->InstallColormap = cfbInstallColormap;
- pScreen->UninstallColormap = cfbUninstallColormap;
- pScreen->ListInstalledColormaps = cfbListInstalledColormaps;
- pScreen->StoreColors = StoreColorsNoop;
- pScreen->ResolveColor = cfbResolveColor;
- pScreen->BitmapToRegion = mfbPixmapToRegionWeak();
-
- mfbRegisterCopyPlaneProc (pScreen, cfbCopyPlane);
- return TRUE;
-}
-
-#ifdef CFB_NEED_SCREEN_PRIVATE
-Bool
-cfbCreateScreenResources(pScreen)
- ScreenPtr pScreen;
-{
- Bool retval;
-
- pointer oldDevPrivate = pScreen->devPrivate;
- pScreen->devPrivate = pScreen->devPrivates[cfbScreenPrivateIndex].ptr;
- retval = miCreateScreenResources(pScreen);
- pScreen->devPrivates[cfbScreenPrivateIndex].ptr = pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
- return retval;
-}
-#endif
-
-Bool
-cfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
-{
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pointer oldDevPrivate;
-#endif
- VisualPtr visuals;
- DepthPtr depths;
- int nvisuals;
- int ndepths;
- int rootdepth;
- VisualID defaultVisual;
-
- rootdepth = 0;
- if (!cfbInitVisuals (&visuals, &depths, &nvisuals, &ndepths, &rootdepth,
- &defaultVisual,((unsigned long)1<<(PSZ-1)), 8))
- return FALSE;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- oldDevPrivate = pScreen->devPrivate;
-#endif
- if (! miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width,
- rootdepth, ndepths, depths,
- defaultVisual, nvisuals, visuals))
- return FALSE;
- /* overwrite miCloseScreen with our own */
- pScreen->CloseScreen = cfbCloseScreen;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pScreen->CreateScreenResources = cfbCreateScreenResources;
- pScreen->devPrivates[cfbScreenPrivateIndex].ptr = pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
-#endif
- pScreen->BackingStoreFuncs = cfbBSFuncRec;
- pScreen->GetScreenPixmap = cfbGetScreenPixmap;
- pScreen->SetScreenPixmap = cfbSetScreenPixmap;
- return TRUE;
-}
-
-/* dts * (inch/dot) * (25.4 mm / inch) = mm */
-Bool
-cfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
-{
- if (!cfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width))
- return FALSE;
- return cfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
-}
-
-PixmapPtr
-cfbGetScreenPixmap(pScreen)
- ScreenPtr pScreen;
-{
-#ifdef CFB_NEED_SCREEN_PRIVATE
- return (PixmapPtr)pScreen->devPrivates[cfbScreenPrivateIndex].ptr;
-#else
- return (PixmapPtr)pScreen->devPrivate;
-#endif
-}
-
-void
-cfbSetScreenPixmap(pPix)
- PixmapPtr pPix;
-{
-#ifdef CFB_NEED_SCREEN_PRIVATE
- if (pPix)
- pPix->drawable.pScreen->devPrivates[cfbScreenPrivateIndex].ptr =
- (pointer)pPix;
-#else
- if (pPix)
- pPix->drawable.pScreen->devPrivate = (pointer)pPix;
-#endif
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbsetsp.c b/nx-X11/programs/Xserver/cfb/cfbsetsp.c
deleted file mode 100644
index 56317cb91..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbsetsp.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/* $Xorg: cfbsetsp.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XFree86: xc/programs/Xserver/cfb/cfbsetsp.c,v 3.5tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-
-#include "misc.h"
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include <mergerop.h>
-
-/* cfbSetScanline -- copies the bits from psrc to the drawable starting at
- * (xStart, y) and continuing to (xEnd, y). xOrigin tells us where psrc
- * starts on the scanline. (I.e., if this scanline passes through multiple
- * boxes, we may not want to start grabbing bits at psrc but at some offset
- * further on.)
- */
-void
-cfbSetScanline(y, xOrigin, xStart, xEnd, psrc, alu, pdstBase, widthDst, planemask)
- int y;
- int xOrigin; /* where this scanline starts */
- int xStart; /* first bit to use from scanline */
- int xEnd; /* last bit to use from scanline + 1 */
- register unsigned int *psrc;
- register int alu; /* raster op */
- int *pdstBase; /* start of the drawable */
- int widthDst; /* width of drawable in words */
- unsigned long planemask;
-{
- int w; /* width of scanline in bits */
- register int *pdst; /* where to put the bits */
- register int tmpSrc; /* scratch buffer to collect bits in */
- int offSrc;
- int nl;
-#if PSZ == 24
- register char *psrcb, *pdstb;
- register int xIndex;
-#else
- int dstBit; /* offset in bits from beginning of
- * word */
- register int nstart; /* number of bits from first partial */
-#if PSZ != 32 || PPW != 1
- register int nend; /* " " last partial word */
-#endif
- int startmask, endmask, nlMiddle;
-#endif
- DeclareMergeRop()
-
- InitializeMergeRop(alu,planemask);
-#if PSZ == 24
- pdst = pdstBase + (y * widthDst);
- xIndex = xStart;
- pdstb = (char *)pdst + (xStart * 3);
- offSrc = xStart - xOrigin;
- psrcb = (char *)psrc + (offSrc * 3);
-#else
- pdst = pdstBase + (y * widthDst) + (xStart >> PWSH);
- psrc += (xStart - xOrigin) >> PWSH;
- offSrc = (xStart - xOrigin) & PIM;
-#endif
- w = xEnd - xStart;
-
-#if PSZ == 24
- nl = w;
- while (nl--){
- psrc = (unsigned int *)((unsigned long)psrcb & ~0x03);
- getbits24(psrc, tmpSrc, offSrc);
- pdst = (int *)((unsigned long)pdstb & ~0x03);
- DoMergeRop24(tmpSrc, pdst, xIndex);
- offSrc++;
- psrcb += 3;
- xIndex++;
- pdstb += 3;
- }
-#else /* PSZ == 24 */
- dstBit = xStart & PIM;
- if (dstBit + w <= PPW)
- {
- maskpartialbits(dstBit, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- }
- else
- {
- maskbits(xStart, w, startmask, endmask, nlMiddle);
- }
- if (startmask)
- nstart = PPW - dstBit;
- else
- nstart = 0;
-#if PSZ != 32 || PPW != 1
- if (endmask)
- nend = xEnd & PIM;
- else
- nend = 0;
-#endif
- if (startmask)
- {
- getbits(psrc, offSrc, nstart, tmpSrc);
- putbitsmropshort(tmpSrc, dstBit, nstart, pdst);
- pdst++;
- offSrc += nstart;
- if (offSrc > PLST)
- {
- psrc++;
- offSrc -= PPW;
- }
- }
- nl = nlMiddle;
- while (nl--)
- {
- getbits(psrc, offSrc, PPW, tmpSrc);
- *pdst = DoMergeRop(tmpSrc, *pdst);
- pdst++;
- psrc++;
- }
- if (endmask)
- {
- getbits(psrc, offSrc, nend, tmpSrc);
- putbitsmropshort(tmpSrc, 0, nend, pdst);
- }
-#endif /* PSZ == 24 */
-}
-
-
-
-/* SetSpans -- for each span copy pwidth[i] bits from psrc to pDrawable at
- * ppt[i] using the raster op from the GC. If fSorted is TRUE, the scanlines
- * are in increasing Y order.
- * Source bit lines are server scanline padded so that they always begin
- * on a word boundary.
- */
-void
-cfbSetSpans(pDrawable, pGC, pcharsrc, ppt, pwidth, nspans, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- char *pcharsrc;
- register DDXPointPtr ppt;
- int *pwidth;
- int nspans;
- int fSorted;
-{
- unsigned int *psrc = (unsigned int *)pcharsrc;
- CfbBits *pdstBase; /* start of dst bitmap */
- int widthDst; /* width of bitmap in words */
- register BoxPtr pbox, pboxLast, pboxTest;
- register DDXPointPtr pptLast;
- int alu;
- RegionPtr prgnDst;
- int xStart, xEnd;
- int yMax;
-
- alu = pGC->alu;
- prgnDst = cfbGetCompositeClip(pGC);
- pptLast = ppt + nspans;
-
- cfbGetLongWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- yMax = (int) pDrawable->y + (int) pDrawable->height;
-
- pbox = REGION_RECTS(prgnDst);
- pboxLast = pbox + REGION_NUM_RECTS(prgnDst);
-
- if(fSorted)
- {
- /* scan lines sorted in ascending order. Because they are sorted, we
- * don't have to check each scanline against each clip box. We can be
- * sure that this scanline only has to be clipped to boxes at or after the
- * beginning of this y-band
- */
- pboxTest = pbox;
- while(ppt < pptLast)
- {
- pbox = pboxTest;
- if(ppt->y >= yMax)
- break;
- while(pbox < pboxLast)
- {
- if(pbox->y1 > ppt->y)
- {
- /* scanline is before clip box */
- break;
- }
- else if(pbox->y2 <= ppt->y)
- {
- /* clip box is before scanline */
- pboxTest = ++pbox;
- continue;
- }
- else if(pbox->x1 > ppt->x + *pwidth)
- {
- /* clip box is to right of scanline */
- break;
- }
- else if(pbox->x2 <= ppt->x)
- {
- /* scanline is to right of clip box */
- pbox++;
- continue;
- }
-
- /* at least some of the scanline is in the current clip box */
- xStart = max(pbox->x1, ppt->x);
- xEnd = min(ppt->x + *pwidth, pbox->x2);
- cfbSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu,
- (int *)pdstBase, widthDst, pGC->planemask);
- if(ppt->x + *pwidth <= pbox->x2)
- {
- /* End of the line, as it were */
- break;
- }
- else
- pbox++;
- }
- /* We've tried this line against every box; it must be outside them
- * all. move on to the next point */
- ppt++;
- psrc += PixmapWidthInPadUnits(*pwidth, pDrawable->depth);
- pwidth++;
- }
- }
- else
- {
- /* scan lines not sorted. We must clip each line against all the boxes */
- while(ppt < pptLast)
- {
- if(ppt->y >= 0 && ppt->y < yMax)
- {
-
- for(pbox = REGION_RECTS(prgnDst); pbox< pboxLast; pbox++)
- {
- if(pbox->y1 > ppt->y)
- {
- /* rest of clip region is above this scanline,
- * skip it */
- break;
- }
- if(pbox->y2 <= ppt->y)
- {
- /* clip box is below scanline */
- pbox++;
- break;
- }
- if(pbox->x1 <= ppt->x + *pwidth &&
- pbox->x2 > ppt->x)
- {
- xStart = max(pbox->x1, ppt->x);
- xEnd = min(pbox->x2, ppt->x + *pwidth);
- cfbSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu,
- (int *)pdstBase, widthDst, pGC->planemask);
- }
-
- }
- }
- psrc += PixmapWidthInPadUnits(*pwidth, pDrawable->depth);
- ppt++;
- pwidth++;
- }
- }
-}
-
diff --git a/nx-X11/programs/Xserver/cfb/cfbsolid.c b/nx-X11/programs/Xserver/cfb/cfbsolid.c
deleted file mode 100644
index 9f9093647..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbsolid.c
+++ /dev/null
@@ -1,1367 +0,0 @@
-/*
- * $Xorg: cfbsolid.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $
- *
-Copyright 1990, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-/* $XFree86: xc/programs/Xserver/cfb/cfbsolid.c,v 3.8tsi Exp $ */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "cfbrrop.h"
-
-#include "mi.h"
-#include "mispans.h"
-
-#if defined(FAST_CONSTANT_OFFSET_MODE) && (RROP != GXcopy)
-# define Expand(left,right,leftAdjust) {\
- int part = nmiddle & 3; \
- int widthStep; \
- widthStep = widthDst - nmiddle - leftAdjust; \
- nmiddle >>= 2; \
- pdst = pdstRect; \
- while (h--) { \
- left \
- pdst += part; \
- switch (part) { \
- RROP_UNROLL_CASE3(pdst) \
- } \
- m = nmiddle; \
- while (m) { \
- pdst += 4; \
- RROP_UNROLL_LOOP4(pdst,-4) \
- m--; \
- } \
- right \
- pdst += widthStep; \
- } \
-}
-#else
-# ifdef RROP_UNROLL
-# define Expand(left,right,leftAdjust) {\
- int part = nmiddle & RROP_UNROLL_MASK; \
- int widthStep; \
- widthStep = widthDst - nmiddle - leftAdjust; \
- nmiddle >>= RROP_UNROLL_SHIFT; \
- pdst = pdstRect; \
- while (h--) { \
- left \
- pdst += part; \
- switch (part) { \
- RROP_UNROLL_CASE(pdst) \
- } \
- m = nmiddle; \
- while (m) { \
- pdst += RROP_UNROLL; \
- RROP_UNROLL_LOOP(pdst) \
- m--; \
- } \
- right \
- pdst += widthStep; \
- } \
-}
-
-# else
-# define Expand(left, right, leftAdjust) { \
- while (h--) { \
- pdst = pdstRect; \
- left \
- m = nmiddle; \
- while (m--) {\
- RROP_SOLID(pdst); \
- pdst++; \
- } \
- right \
- pdstRect += widthDst; \
- } \
-}
-# endif
-#endif
-
-
-void
-RROP_NAME(cfbFillRectSolid) (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox;
- BoxPtr pBox;
-{
- register int m;
- register CfbBits *pdst;
- RROP_DECLARE
- CfbBits *pdstBase, *pdstRect;
- int nmiddle;
- int h;
- int w;
- int widthDst;
-#if PSZ == 24
- int leftIndex, rightIndex;
-#else
- register CfbBits leftMask, rightMask;
-#endif
-
- cfbGetLongWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- RROP_FETCH_GC(pGC)
-
- for (; nBox; nBox--, pBox++)
- {
- pdstRect = pdstBase + pBox->y1 * widthDst;
- h = pBox->y2 - pBox->y1;
- w = pBox->x2 - pBox->x1;
-#if PSZ == 8
- if (w == 1)
- {
- register char *pdstb = ((char *) pdstRect) + pBox->x1;
- int incr = widthDst * PGSZB;
-
- while (h--)
- {
- RROP_SOLID (pdstb);
- pdstb += incr;
- }
- }
- else
- {
-#endif
-#if PSZ == 24
- leftIndex = pBox->x1 &3;
-/* rightIndex = ((leftIndex+w)<5)?0:pBox->x2 &3;*/
- rightIndex = pBox->x2 &3;
-
- nmiddle = w - rightIndex;
- if(leftIndex){
- nmiddle -= (4 - leftIndex);
- }
- nmiddle >>= 2;
- if(nmiddle < 0)
- nmiddle = 0;
-
- pdstRect += (pBox->x1 * 3) >> 2;
- pdst = pdstRect;
- switch(leftIndex+w){
- case 4:
- switch(leftIndex){
- case 0:
- while(h--){
-#if RROP == GXcopy
- *pdst++ = piQxelXor[0];
- *pdst++ = piQxelXor[1];
- *pdst-- = piQxelXor[2];
-#endif
-#if RROP == GXxor
- *pdst++ ^= piQxelXor[0];
- *pdst++ ^= piQxelXor[1];
- *pdst-- ^= piQxelXor[2];
-#endif
-#if RROP == GXand
- *pdst++ &= piQxelAnd[0];
- *pdst++ &= piQxelAnd[1];
- *pdst-- &= piQxelAnd[2];
-#endif
-#if RROP == GXor
- *pdst++ |= piQxelOr[0];
- *pdst++ |= piQxelOr[1];
- *pdst-- |= piQxelOr[2];
-#endif
-#if RROP == GXset
- *pdst = DoRRop((*pdst), piQxelAnd[0], piQxelXor[0]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[2], piQxelXor[2]);
- pdst--;
-#endif
- pdst--;
- pdst += widthDst;
- }
- break;
- case 1:
- while(h--){
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- pdst++;
- *pdst++ = piQxelXor[1];
- *pdst-- = piQxelXor[2];
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[0] & 0xFF000000);
- *pdst++ ^= piQxelXor[1];
- *pdst-- ^= piQxelXor[2];
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[0] | 0x00FFFFFF);
- *pdst++ &= piQxelAnd[1];
- *pdst-- &= piQxelAnd[2];
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[0] & 0xFF000000);
- *pdst++ |= piQxelOr[1];
- *pdst-- |= piQxelOr[2];
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[0], piQxelXor[0], 0xFF000000);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[2], piQxelXor[2]);
- pdst--;
-#endif
- pdst--;
- pdst += widthDst;
- }
- break;
- case 2:
- while(h--){
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFF) | (piQxelXor[1] & 0xFFFF0000);
- pdst++;
- *pdst-- = piQxelXor[2];
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[1] & 0xFFFF0000);
- *pdst-- ^= piQxelXor[2];
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[1] | 0xFFFF);
- *pdst-- &= piQxelAnd[2];
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[1] & 0xFFFF0000);
- *pdst-- |= piQxelOr[2];
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF0000);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[2], piQxelXor[2]);
- pdst--;
-#endif
- pdst += widthDst;
- }
- break;
- case 3:
- while(h--){
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFF) | (piQxelXor[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXxor
- *pdst ^= (piQxelXor[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXand
- *pdst &= (piQxelAnd[2] | 0xFF);
-#endif
-#if RROP == GXor
- *pdst |= (piQxelOr[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFFFFFF00);
-#endif
- pdst += widthDst;
- }
- break;
- }
- break;
- case 3:
- switch(leftIndex){
- case 0:
- while(h--){
-#if RROP == GXcopy
- *pdst++ = piQxelXor[0];
- *pdst++ = piQxelXor[1];
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- pdst--;
-#endif
-#if RROP == GXxor
- *pdst++ ^= piQxelXor[0];
- *pdst++ ^= piQxelXor[1];
- *pdst-- ^= (piQxelXor[2] & 0xFF);
-#endif
-#if RROP == GXand
- *pdst++ &= piQxelAnd[0];
- *pdst++ &= piQxelAnd[1];
- *pdst-- &= (piQxeAnd[2] | 0xFFFFFF00);
-#endif
-#if RROP == GXor
- *pdst++ |= piQxelOr[0];
- *pdst++ |= piQxelOr[1];
- *pdst-- |= (piQxelOr[2] & 0xFF);
-#endif
-#if RROP == GXset
- *pdst = DoRRop((*pdst), piQxelAnd[0], piQxelXor[0]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFF);
- pdst--;
-#endif
- pdst--;
- pdst += widthDst;
- }
- break;
- case 1:
- while(h--){
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- pdst++;
- *pdst++ = piQxelXor[1];
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- pdst--;
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[0] & 0xFF000000);
- *pdst++ ^= piQxelXor[1];
- *pdst-- ^= (piQxelXor[2] & 0xFF);
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[0] | 0x00FFFFFF);
- *pdst++ &= piQxelAnd[1];
- *pdst-- &= (piQxelAnd[2] | 0xFFFFFF00);
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[0] & 0xFF000000);
- *pdst++ |= piQxelOr[1];
- *pdst-- |= (piQxelOr[2] & 0xFF);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[0], piQxelXor[0], 0xFF000000);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFF);
- pdst--;
-#endif
- pdst--;
- pdst += widthDst;
- }
- break;
- case 2:
- while(h--){
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFF) | (piQxelXor[1] & 0xFFFF0000);
- pdst++;
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- pdst--;
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[1] & 0xFFFF0000);
- *pdst-- ^= (piQxelXor[2] & 0xFF);
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[1] | 0xFFFF);
- *pdst-- &= (piQxelAnd[2] | 0xFFFFFF00);
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[1] & 0xFFFF0000);
- *pdst-- |= (piQxelOr[2] & 0xFF);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF0000);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFF);
- pdst--;
-#endif
- pdst += widthDst;
- }
- break;
- case 3:
- while(h--){
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFF) | (piQxelXor[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXxor
- *pdst ^= (piQxelXor[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXand
- *pdst &= (piQxelAnd[2] | 0xFF);
-#endif
-#if RROP == GXor
- *pdst |= (piQxelOr[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFFFFFF00);
-#endif
- pdst += widthDst;
- }
- break;
- }
- break;
- case 2: /* leftIndex + w = 2*/
- switch(leftIndex){
- case 2:
- while(h--){
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFF) | (piQxelXor[1] & 0xFFFF0000);
- pdst++;
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- pdst--;
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[1] & 0xFFFF0000);
- *pdst-- ^= (piQxelXor[2] & 0xFF);
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[1] | 0xFFFF0000);
- *pdst-- &= (piQxelAnd[2] | 0xFF);
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[1] & 0xFFFF0000);
- *pdst-- |= (piQxelOr[2] & 0xFF);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF0000);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFF);
- pdst--;
-#endif
- pdst += widthDst;
- }
- break;
- case 1:
- while(h--){
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- pdst++;
- *pdst = ((*pdst) & 0xFFFF0000) | (piQxelXor[1] & 0xFFFF);
- pdst--;
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[0] & 0xFF000000);
- *pdst-- ^= (piQxelXor[1] & 0xFFFF);
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[0] | 0xFFFFFF);
- *pdst-- &= (piQxelAnd[1] | 0xFFFF0000);
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[0] & 0xFF000000);
- *pdst-- |= (piQxelOr[1] & 0xFFFF);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[0], piQxelXor[0], 0xFF000000);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF);
- pdst--;
-#endif
- pdst += widthDst;
- }
- break;
- case 0: /*case 2 leftIndex == 0 */
- while(h--){
-#if RROP == GXcopy
- *pdst++ = piQxelXor[0];
- *pdst = ((*pdst) & 0xFFFF0000) | (piQxelXor[1] & 0xFFFF);
- pdst--;
-#endif
-#if RROP == GXxor
- *pdst++ ^= piQxelXor[0];
- *pdst-- ^= (piQxelXor[1] & 0xFFFF);
-#endif
-#if RROP == GXand
- *pdst++ &= piQxelAnd[0];
- *pdst-- &= (piQxelAnd[1] | 0xFFFF0000);
-#endif
-#if RROP == GXor
- *pdst++ |= piQxelOr[0];
- *pdst-- |= (piQxelOr[1] & 0xFFFF);
-#endif
-#if RROP == GXset
- *pdst = DoRRop((*pdst), piQxelAnd[0], piQxelXor[0]);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF);
- pdst--;
-#endif
- pdst += widthDst;
- }
- break;
- }
- break;
- case 1: /*only if leftIndex = 0 and w = 1*/
- while(h--){
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFF000000) | (piQxelXor[0] & 0xFFFFFF);
-#endif
-#if RROP == GXxor
- *pdst ^= (piQxelXor[0] & 0xFFFFFF);
-#endif
-#if RROP == GXand
- *pdst &= (piQxelAnd[0] | 0xFF000000);
-#endif
-#if RROP == GXor
- *pdst |= (piQxelOr[0] & 0xFFFFFF);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[0], piQxelXor[0], 0xFFFFFF);
-#endif
- pdst += widthDst;
- }
- break;
- case 0: /*never*/
- break;
- default:
- {
- while(h--){
- pdst = pdstRect;
- switch(leftIndex){
- case 0:
- break;
- case 1:
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- pdst++;
- *pdst++ = piQxelXor[1];
- *pdst++ = piQxelXor[2];
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[0] & 0xFF000000);
- *pdst++ ^= piQxelXor[1];
- *pdst++ ^= piQxelXor[2];
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[0] | 0xFFFFFF);
- *pdst++ &= piQxelAnd[1];
- *pdst++ &= piQxelAnd[2];
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[0] & 0xFF000000);
- *pdst++ |= piQxelOr[1];
- *pdst++ |= piQxelOr[2];
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[0], piQxelXor[0], 0xFF000000);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[2], piQxelXor[2]);
- pdst++;
-#endif
- break;
- case 2:
-#if RROP == GXcopy
- *pdst = (((*pdst) & 0xFFFF) | (piQxelXor[1] & 0xFFFF0000));
- pdst++;
- *pdst++ = piQxelXor[2];
-#endif
-#if RROP == GXxor
- *pdst++ ^=(piQxelXor[1] & 0xFFFF0000);
- *pdst++ ^= piQxelXor[2];
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[1] | 0xFFFF);
- *pdst++ &= piQxelAnd[2];
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[1] & 0xFFFF0000);
- *pdst++ |= piQxelOr[2];
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF0000);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[2], piQxelXor[2]);
- pdst++;
-#endif
- break;
- case 3:
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFF) | (piQxelXor[2] & 0xFFFFFF00);
- pdst++;
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[2] | 0xFF);
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFFFFFF00);
- pdst++;
-#endif
- break;
- }
- m = nmiddle;
- while(m--){
-#if RROP == GXcopy
- *pdst++ = piQxelXor[0];
- *pdst++ = piQxelXor[1];
- *pdst++ = piQxelXor[2];
-#endif
-#if RROP == GXxor
- *pdst++ ^= piQxelXor[0];
- *pdst++ ^= piQxelXor[1];
- *pdst++ ^= piQxelXor[2];
-#endif
-#if RROP == GXand
- *pdst++ &= piQxelAnd[0];
- *pdst++ &= piQxelAnd[1];
- *pdst++ &= piQxelAnd[2];
-#endif
-#if RROP == GXor
- *pdst++ |= piQxelOr[0];
- *pdst++ |= piQxelOr[1];
- *pdst++ |= piQxelOr[2];
-#endif
-#if RROP == GXset
- *pdst = DoRRop((*pdst), piQxelAnd[0], piQxelXor[0]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[2], piQxelXor[2]);
- pdst++;
-#endif
- }
- switch(rightIndex){
- case 0:
- break;
- case 1:
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFF000000) | (piQxelXor[0] & 0xFFFFFF);
- pdst++;
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[0] & 0xFFFFFF);
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[0] | 0xFF);
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[0] & 0xFFFFFF);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[0], piQxelXor[0], 0xFFFFFF);
- pdst++;
-#endif
- break;
- case 2:
-#if RROP == GXcopy
- *pdst++ = piQxelXor[0];
- *pdst = ((*pdst) & 0xFFFF0000) | (piQxelXor[1] & 0xFFFF);
- pdst++;
-#endif
-#if RROP == GXxor
- *pdst++ ^= piQxelXor[0];
- *pdst++ ^= (piQxelXor[1] & 0xFFFF);
-#endif
-#if RROP == GXand
- *pdst++ &= piQxelAnd[0];
- *pdst++ &= (piQxelAnd[1] | 0xFFFF0000);
-#endif
-#if RROP == GXor
- *pdst++ |= piQxelOr[0];
- *pdst++ |= (piQxelOr[1] & 0xFFFF);
-#endif
-#if RROP == GXset
- *pdst = DoRRop((*pdst), piQxelAnd[0], piQxelXor[0]);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF);
- pdst++;
-#endif
- break;
- case 3:
-#if RROP == GXcopy
- *pdst++ = piQxelXor[0];
- *pdst++ = piQxelXor[1];
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- pdst++;
-#endif
-#if RROP == GXxor
- *pdst++ ^= piQxelXor[0];
- *pdst++ ^= piQxelXor[1];
- *pdst++ ^= (piQxelXor[2] & 0xFF);
-#endif
-#if RROP == GXand
- *pdst++ &= piQxelAnd[0];
- *pdst++ &= piQxelAnd[1];
- *pdst++ &= (piQxelAnd[2] | 0xFFFFFF00);
-#endif
-#if RROP == GXor
- *pdst++ |= piQxelOr[0];
- *pdst++ |= piQxelOr[1];
- *pdst++ |= (piQxelOr[2] & 0xFF);
-#endif
-#if RROP == GXset
- *pdst = DoRRop((*pdst), piQxelAnd[0], piQxelXor[0]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFF);
- pdst++;
-#endif
- break;
- }
- pdstRect += widthDst;
- }
- }
- }
-#else /* PSZ != 24 */
- pdstRect += (pBox->x1 >> PWSH);
- if ((pBox->x1 & PIM) + w <= PPW)
- {
- maskpartialbits(pBox->x1, w, leftMask);
- pdst = pdstRect;
- while (h--) {
- RROP_SOLID_MASK (pdst, leftMask);
- pdst += widthDst;
- }
- }
- else
- {
- maskbits (pBox->x1, w, leftMask, rightMask, nmiddle);
- if (leftMask)
- {
- if (rightMask) /* left mask and right mask */
- {
- Expand(RROP_SOLID_MASK (pdst, leftMask); pdst++;,
- RROP_SOLID_MASK (pdst, rightMask);, 1)
- }
- else /* left mask and no right mask */
- {
- Expand(RROP_SOLID_MASK (pdst, leftMask); pdst++;,
- ;, 1)
- }
- }
- else
- {
- if (rightMask) /* no left mask and right mask */
- {
- Expand(;,
- RROP_SOLID_MASK (pdst, rightMask);, 0)
- }
- else /* no left mask and no right mask */
- {
- Expand(;,
- ;, 0)
- }
- }
- }
-#endif
-#if PSZ == 8
- }
-#endif
- }
- RROP_UNDECLARE
-}
-
-void
-RROP_NAME(cfbSolidSpans) (pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- CfbBits *pdstBase;
- int widthDst;
-
- RROP_DECLARE
-
- register CfbBits *pdst;
- register int nlmiddle;
- register int w;
- int x;
-
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- DDXPointPtr ppt; /* pointer to list of start points */
- int *pwidthFree;/* copies of the pointers to free */
- DDXPointPtr pptFree;
- int *pwidth;
- cfbPrivGCPtr devPriv;
-#if PSZ == 24
- int leftIndex, rightIndex;
-#else
- register CfbBits startmask, endmask;
-#endif
-
- devPriv = cfbGetGCPrivate(pGC);
- RROP_FETCH_GCPRIV(devPriv)
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- cfbGetLongWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- while (n--)
- {
- x = ppt->x;
- pdst = pdstBase + (ppt->y * widthDst);
- ++ppt;
- w = *pwidth++;
- if (!w)
- continue;
-#if PSZ == 24
- leftIndex = x &3;
-/* rightIndex = ((leftIndex+w)<5)?0:(x+w)&3;*/
- rightIndex = (x+w)&3;
-
- nlmiddle = w - rightIndex;
- if(leftIndex){
- nlmiddle -= (4 - leftIndex);
- }
-/* nlmiddle += 3;*/
- nlmiddle >>= 2;
- if(nlmiddle < 0)
- nlmiddle = 0;
-
- pdst += (x >> 2)*3;
- pdst += leftIndex? (leftIndex -1):0;
- switch(leftIndex+w){
- case 4:
- switch(leftIndex){
- case 0:
-#if RROP == GXcopy
- *pdst++ = piQxelXor[0];
- *pdst++ = piQxelXor[1];
- *pdst-- = piQxelXor[2];
-#endif
-#if RROP == GXxor
- *pdst++ ^= piQxelXor[0];
- *pdst++ ^= piQxelXor[1];
- *pdst-- ^= piQxelXor[2];
-#endif
-#if RROP == GXand
- *pdst++ &= piQxelAnd[0];
- *pdst++ &= piQxelAnd[1];
- *pdst-- &= piQxelAnd[2];
-#endif
-#if RROP == GXor
- *pdst++ |= piQxelOr[0];
- *pdst++ |= piQxelOr[1];
- *pdst-- |= piQxelOr[2];
-#endif
-#if RROP == GXset
- *pdst = DoRRop((*pdst), piQxelAnd[0], piQxelXor[0]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[2], piQxelXor[2]);
- pdst--;
-#endif
- pdst--;
- break;
- case 1:
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- pdst++;
- *pdst++ = piQxelXor[1];
- *pdst-- = piQxelXor[2];
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[0] & 0xFF000000);
- *pdst++ ^= piQxelXor[1];
- *pdst-- ^= piQxelXor[2];
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[0] | 0x00FFFFFF);
- *pdst++ &= piQxelAnd[1];
- *pdst-- &= piQxelAnd[2];
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[0] & 0xFF000000);
- *pdst++ |= piQxelOr[1];
- *pdst-- |= piQxelOr[2];
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[0], piQxelXor[0], 0xFF000000);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[2], piQxelXor[2]);
- pdst--;
-#endif
- pdst--;
- break;
- case 2:
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFF) | (piQxelXor[1] & 0xFFFF0000);
- pdst++;
- *pdst-- = piQxelXor[2];
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[1] & 0xFFFF0000);
- *pdst-- ^= piQxelXor[2];
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[1] | 0xFFFF);
- *pdst-- &= piQxelAnd[2];
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[1] & 0xFFFF0000);
- *pdst-- |= piQxelOr[2];
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF0000);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[2], piQxelXor[2]);
- pdst--;
-#endif
- break;
- case 3:
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFF) | (piQxelXor[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXxor
- *pdst ^= (piQxelXor[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXand
- *pdst &= (piQxelAnd[2] | 0xFF);
-#endif
-#if RROP == GXor
- *pdst |= (piQxelOr[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFFFFFF00);
-#endif
- break;
- }
- break;
- case 3:
- switch(leftIndex){
- case 0:
-#if RROP == GXcopy
- *pdst++ = piQxelXor[0];
- *pdst++ = piQxelXor[1];
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- pdst--;
-#endif
-#if RROP == GXxor
- *pdst++ ^= piQxelXor[0];
- *pdst++ ^= piQxelXor[1];
- *pdst-- ^= (piQxelXor[2] & 0xFF);
-#endif
-#if RROP == GXand
- *pdst++ &= piQxelAnd[0];
- *pdst++ &= piQxelAnd[1];
- *pdst-- &= (piQxelAnd[2] | 0xFFFFFF00);
-#endif
-#if RROP == GXor
- *pdst++ |= piQxelOr[0];
- *pdst++ |= piQxelOr[1];
-
- *pdst-- |= (piQxelOr[2] & 0xFF);
-#endif
-#if RROP == GXset
- *pdst = DoRRop((*pdst), piQxelAnd[0], piQxelXor[0]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFF);
- pdst--;
-#endif
- pdst--;
- break;
- case 1:
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- pdst++;
- *pdst++ = piQxelXor[1];
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- pdst--;
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[0] & 0xFF000000);
- *pdst++ ^= piQxelXor[1];
- *pdst-- ^= (piQxelXor[2] & 0xFF);
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[0] | 0x00FFFFFF);
- *pdst++ &= piQxelAnd[1];
- *pdst-- &= (piQxelAnd[2] | 0xFFFFFF00);
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[0] & 0xFF000000);
- *pdst++ |= piQxelOr[1];
- *pdst-- |= (piQxelOr[2] & 0xFF);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[0], piQxelXor[0], 0xFF000000);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFF);
- pdst--;
-#endif
- pdst--;
- break;
- case 2:
-/* pdst++;*/
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFF) | (piQxelXor[1] & 0xFFFF0000);
- pdst++;
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- pdst--;
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[1] & 0xFFFF0000);
- *pdst-- ^= (piQxelXor[2] & 0xFF);
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[1] | 0xFFFF);
- *pdst-- &= (piQxelAnd[2] | 0xFFFFFF00);
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[1] & 0xFFFF0000);
- *pdst-- |= (piQxelOr[2] & 0xFF);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF0000);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFF);
- pdst--;
-#endif
- break;
- }
- break;
- case 2: /* leftIndex + w = 2*/
- if(leftIndex){
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- pdst++;
- *pdst = ((*pdst) & 0xFFFF0000) | (piQxelXor[1] & 0xFFFF);
- pdst--;
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[0] & 0xFF000000);
- *pdst-- ^= (piQxelXor[1] & 0xFFFF);
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[0] | 0xFFFFFF);
- *pdst-- &= (piQxelAnd[1] | 0xFFFF0000);
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[0] & 0xFF000000);
- *pdst-- |= (piQxelOr[1] & 0xFFFF);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[0], piQxelXor[0], 0xFF000000);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF);
- pdst--;
-#endif
- }
- else{ /*case 2 leftIndex === 0 */
-#if RROP == GXcopy
- *pdst++ = piQxelXor[0];
- *pdst = ((*pdst) & 0xFFFF0000) | (piQxelXor[1] & 0xFFFF);
- pdst--;
-#endif
-#if RROP == GXxor
- *pdst++ ^= piQxelXor[0];
- *pdst-- ^= (piQxelXor[1] & 0xFFFF);
-#endif
-#if RROP == GXand
- *pdst++ &= piQxelAnd[0];
- *pdst-- &= (piQxelAnd[1] | 0xFFFF0000);
-#endif
-#if RROP == GXor
- *pdst++ |= piQxelOr[0];
- *pdst-- |= (piQxelOr[1] & 0xFFFF);
-#endif
-#if RROP == GXset
- *pdst = DoRRop((*pdst), piQxelAnd[0], piQxelXor[0]);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF);
- pdst--;
-#endif
- }
- break;
- case 1: /*only if leftIndex = 0 and w = 1*/
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFF000000) | (piQxelXor[0] & 0xFFFFFF);
-#endif
-#if RROP == GXxor
- *pdst ^= (piQxelXor[0] & 0xFFFFFF);
-#endif
-#if RROP == GXand
- *pdst &= (piQxelAnd[0] | 0xFF000000);
-#endif
-#if RROP == GXor
- *pdst |= (piQxelOr[0] & 0xFFFFFF);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[0], piQxelXor[0], 0xFFFFFF);
-#endif
- break;
- case 0: /*never*/
- break;
- default:
- {
- switch(leftIndex){
- case 0:
- break;
- case 1:
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFFFFFF) | (piQxelXor[0] & 0xFF000000);
- pdst++;
- *pdst++ = piQxelXor[1];
- *pdst++ = piQxelXor[2];
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[0] & 0xFF000000);
- *pdst++ ^= piQxelXor[1];
- *pdst++ ^= piQxelXor[2];
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[0] | 0xFFFFFF);
- *pdst++ &= piQxelAnd[1];
- *pdst++ &= piQxelAnd[2];
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[0] & 0xFF000000);
- *pdst++ |= piQxelOr[1];
- *pdst++ |= piQxelOr[2];
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[0], piQxelXor[0], 0xFF000000);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[2], piQxelXor[2]);
- pdst++;
-#endif
- break;
- case 2:
-#if RROP == GXcopy
- *pdst = (((*pdst) & 0xFFFF) | (piQxelXor[1] & 0xFFFF0000));
- pdst++;
- *pdst++ = piQxelXor[2];
-#endif
-#if RROP == GXxor
- *pdst++ ^=(piQxelXor[1] & 0xFFFF0000);
- *pdst++ ^= piQxelXor[2];
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[1] | 0xFFFF);
- *pdst++ &= piQxelAnd[2];
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[1] & 0xFFFF0000);
- *pdst++ |= piQxelOr[2];
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF0000);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[2], piQxelXor[2]);
- pdst++;
-#endif
- break;
- case 3:
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFF) | (piQxelXor[2] & 0xFFFFFF00);
- pdst++;
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[2] | 0xFF);
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[2] & 0xFFFFFF00);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFFFFFF00);
- pdst++;
-#endif
- break;
- }
- while(nlmiddle--){
-#if RROP == GXcopy
- *pdst++ = piQxelXor[0];
- *pdst++ = piQxelXor[1];
- *pdst++ = piQxelXor[2];
-#endif
-#if RROP == GXxor
- *pdst++ ^= piQxelXor[0];
- *pdst++ ^= piQxelXor[1];
- *pdst++ ^= piQxelXor[2];
-#endif
-#if RROP == GXand
- *pdst++ &= piQxelAnd[0];
- *pdst++ &= piQxelAnd[1];
- *pdst++ &= piQxelAnd[2];
-#endif
-#if RROP == GXor
- *pdst++ |= piQxelOr[0];
- *pdst++ |= piQxelOr[1];
- *pdst++ |= piQxelOr[2];
-#endif
-#if RROP == GXset
- *pdst = DoRRop((*pdst), piQxelAnd[0], piQxelXor[0]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[2], piQxelXor[2]);
- pdst++;
-#endif
- }
- switch(rightIndex){
- case 0:
- break;
- case 1:
-#if RROP == GXcopy
- *pdst = ((*pdst) & 0xFF000000) | (piQxelXor[0] & 0xFFFFFF);
- pdst++;
-#endif
-#if RROP == GXxor
- *pdst++ ^= (piQxelXor[0] & 0xFFFFFF);
-#endif
-#if RROP == GXand
- *pdst++ &= (piQxelAnd[0] | 0xFF);
-#endif
-#if RROP == GXor
- *pdst++ |= (piQxelOr[0] & 0xFFFFFF);
-#endif
-#if RROP == GXset
- *pdst = DoMaskRRop((*pdst), piQxelAnd[0], piQxelXor[0], 0xFFFFFF);
-#endif
- break;
- case 2:
-#if RROP == GXcopy
- *pdst++ = piQxelXor[0];
- *pdst = ((*pdst) & 0xFFFF0000) | (piQxelXor[1] & 0xFFFF);
- pdst++;
-#endif
-#if RROP == GXxor
- *pdst++ ^= piQxelXor[0];
- *pdst++ ^= (piQxelXor[1] & 0xFFFF);
-#endif
-#if RROP == GXand
- *pdst++ &= piQxelAnd[0];
- *pdst++ &= (piQxelAnd[1] | 0xFFFF0000);
-#endif
-#if RROP == GXor
- *pdst++ |= piQxelOr[0];
- *pdst++ |= (piQxelOr[1] & 0xFFFF);
-#endif
-#if RROP == GXset
- *pdst = DoRRop((*pdst), piQxelAnd[0], piQxelXor[0]);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[1], piQxelXor[1], 0xFFFF);
- pdst++;
-#endif
- break;
- case 3:
-#if RROP == GXcopy
- *pdst++ = piQxelXor[0];
- *pdst++ = piQxelXor[1];
- *pdst = ((*pdst) & 0xFFFFFF00) | (piQxelXor[2] & 0xFF);
- pdst++;
-#endif
-#if RROP == GXxor
- *pdst++ ^= piQxelXor[0];
- *pdst++ ^= piQxelXor[1];
- *pdst++ ^= (piQxelXor[2] & 0xFF);
-#endif
-#if RROP == GXand
- *pdst++ &= piQxelAnd[0];
- *pdst++ &= piQxelAnd[1];
- *pdst++ &= (piQxelAnd[2] | 0xFFFFFF00);
-#endif
-#if RROP == GXor
- *pdst++ |= piQxelOr[0];
- *pdst++ |= piQxelOr[1];
- *pdst++ |= (piQxelOr[2] & 0xFF);
-#endif
-#if RROP == GXset
- *pdst = DoRRop((*pdst), piQxelAnd[0], piQxelXor[0]);
- pdst++;
- *pdst = DoRRop((*pdst), piQxelAnd[1], piQxelXor[1]);
- pdst++;
- *pdst = DoMaskRRop((*pdst), piQxelAnd[2], piQxelXor[2], 0xFF);
- pdst++;
-#endif
- break;
- }
- }
-}
-#else
-#if PSZ == 8
- if (w <= PGSZB)
- {
- register char *addrb;
-
- addrb = ((char *) pdst) + x;
- while (w--)
- {
- RROP_SOLID (addrb);
- addrb++;
- }
- }
-#else
- if ((x & PIM) + w <= PPW)
- {
- pdst += x >> PWSH;
- maskpartialbits (x, w, startmask);
- RROP_SOLID_MASK (pdst, startmask);
- }
-#endif
- else
- {
- pdst += x >> PWSH;
- maskbits (x, w, startmask, endmask, nlmiddle);
- if (startmask)
- {
- RROP_SOLID_MASK (pdst, startmask);
- ++pdst;
- }
-
- RROP_SPAN(pdst,nlmiddle)
- if (endmask)
- {
- RROP_SOLID_MASK (pdst, endmask);
- }
- }
-#endif
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
- RROP_UNDECLARE
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbtab.h b/nx-X11/programs/Xserver/cfb/cfbtab.h
deleted file mode 100644
index d95efd66d..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbtab.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* $XFree86$ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _CFBTAB_H_
-#define _CFBTAB_H_
-
-/* prototypes */
-#if 0
-extern int starttab[32], endtab[32];
-extern unsigned int partmasks[32][32];
-#endif
-
-#endif /* _CFBTAB_H_ */
diff --git a/nx-X11/programs/Xserver/cfb/cfbteblt8.c b/nx-X11/programs/Xserver/cfb/cfbteblt8.c
deleted file mode 100644
index f58a07dc6..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbteblt8.c
+++ /dev/null
@@ -1,591 +0,0 @@
-/*
- * TEGblt - ImageText expanded glyph fonts only. For
- * 8 bit displays, in Copy mode with no clipping.
- */
-
-/* $XFree86: xc/programs/Xserver/cfb/cfbteblt8.c,v 1.5 2001/10/28 03:33:02 tsi Exp $ */
-/*
-
-Copyright 1989, 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.
-*/
-
-/* $Xorg: cfbteblt8.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if PSZ == 8
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "cfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "cfbmskbits.h"
-#include "cfb8bit.h"
-
-/*
- * this code supports up to 5 characters at a time. The performance
- * differences between 4 and 5 is usually small (~7% on PMAX) and
- * frequently negative (SPARC and Sun3), so this file is compiled
- * only once for now. If you want to use the other options, you'll
- * need to hack cfbgc.c as well.
- */
-
-#ifndef NGLYPHS
-#define NGLYPHS 4
-#define DO_COMMON
-#endif
-
-#ifdef DO_COMMON
-#define CFBTEGBLT8 cfbTEGlyphBlt8
-#endif
-
-/*
- * On little-endian machines (or where fonts are padded to 32-bit
- * boundaries) we can use some magic to avoid the expense of getleftbits
- */
-
-#if ((BITMAP_BIT_ORDER == LSBFirst && NGLYPHS >= 4) || GLYPHPADBYTES == 4)
-
-#if GLYPHPADBYTES == 1
-typedef unsigned char *glyphPointer;
-#define USE_LEFTBITS
-#endif
-
-#if GLYPHPADBYTES == 2
-typedef unsigned short *glyphPointer;
-#define USE_LEFTBITS
-#endif
-
-#if GLYPHPADBYTES == 4
-typedef unsigned int *glyphPointer;
-#endif
-
-#define GetBitsL c = BitLeft (*leftChar++, lshift)
-#define NGetBits1S(r) c = BitRight(*char1++ r, xoff1)
-#define NGetBits1L(r) GetBitsL | BitRight(*char1++ r, xoff1)
-#define NGetBits1U(r) c = *char1++ r
-#define NGetBits2S(r) NGetBits1S(| BitRight(*char2++ r, widthGlyph))
-#define NGetBits2L(r) NGetBits1L(| BitRight(*char2++ r, widthGlyph))
-#define NGetBits2U(r) NGetBits1U(| BitRight(*char2++ r, widthGlyph))
-#define NGetBits3S(r) NGetBits2S(| BitRight(*char3++ r, widthGlyph))
-#define NGetBits3L(r) NGetBits2L(| BitRight(*char3++ r, widthGlyph))
-#define NGetBits3U(r) NGetBits2U(| BitRight(*char3++ r, widthGlyph))
-#define NGetBits4S(r) NGetBits3S(| BitRight(*char4++ r, widthGlyph))
-#define NGetBits4L(r) NGetBits3L(| BitRight(*char4++ r, widthGlyph))
-#define NGetBits4U(r) NGetBits3U(| BitRight(*char4++ r, widthGlyph))
-#define NGetBits5S(r) NGetBits4S(| BitRight(*char5++ r, widthGlyph))
-#define NGetBits5L(r) NGetBits4L(| BitRight(*char5++ r, widthGlyph))
-#define NGetBits5U(r) NGetBits4U(| BitRight(*char5++ r, widthGlyph))
-#define GetBits1S c = BitRight(*char1++, xoff1)
-#define GetBits1L GetBitsL | BitRight(*char1++, xoff1)
-#define GetBits1U c = *char1++
-#define GetBits2S NGetBits1S(| BitRight(*char2++, widthGlyph))
-#define GetBits2L NGetBits1L(| BitRight(*char2++, widthGlyph))
-#define GetBits2U NGetBits1U(| BitRight(*char2++, widthGlyph))
-#define GetBits3S NGetBits2S(| BitRight(*char3++, widthGlyph))
-#define GetBits3L NGetBits2L(| BitRight(*char3++, widthGlyph))
-#define GetBits3U NGetBits2U(| BitRight(*char3++, widthGlyph))
-#define GetBits4S NGetBits3S(| BitRight(*char4++, widthGlyph))
-#define GetBits4L NGetBits3L(| BitRight(*char4++, widthGlyph))
-#define GetBits4U NGetBits3U(| BitRight(*char4++, widthGlyph))
-#define GetBits5S NGetBits4S(| BitRight(*char5++, widthGlyph))
-#define GetBits5L NGetBits4L(| BitRight(*char5++, widthGlyph))
-#define GetBits5U NGetBits4U(| BitRight(*char5++, widthGlyph))
-
-#else
-
-typedef unsigned int *glyphPointer;
-
-#define USE_LEFTBITS
-#define ALL_LEFTBITS
-
-#define GetBitsL WGetBitsL
-#define GetBits1S WGetBits1S
-#define GetBits1L WGetBits1L
-#define GetBits1U WGetBits1U
-
-#define GetBits2S GetBits1S Get1Bits (char2, tmpSrc) \
- c |= BitRight(tmpSrc, xoff2);
-#define GetBits2L GetBits1L Get1Bits (char2, tmpSrc) \
- c |= BitRight(tmpSrc, xoff2);
-#define GetBits2U GetBits1U Get1Bits (char2, tmpSrc) \
- c |= BitRight(tmpSrc, xoff2);
-
-#define GetBits3S GetBits2S Get1Bits (char3, tmpSrc) \
- c |= BitRight(tmpSrc, xoff3);
-#define GetBits3L GetBits2L Get1Bits (char3, tmpSrc) \
- c |= BitRight(tmpSrc, xoff3);
-#define GetBits3U GetBits2U Get1Bits (char3, tmpSrc) \
- c |= BitRight(tmpSrc, xoff3);
-
-#define GetBits4S GetBits3S Get1Bits (char4, tmpSrc) \
- c |= BitRight(tmpSrc, xoff4);
-#define GetBits4L GetBits3L Get1Bits (char4, tmpSrc) \
- c |= BitRight(tmpSrc, xoff4);
-#define GetBits4U GetBits3U Get1Bits (char4, tmpSrc) \
- c |= BitRight(tmpSrc, xoff4);
-
-#define GetBits5S GetBits4S Get1Bits (char5, tmpSrc) \
- c |= BitRight(tmpSrc, xoff5);
-#define GetBits5L GetBits4L Get1Bits (char5, tmpSrc) \
- c |= BitRight(tmpSrc, xoff5);
-#define GetBits5U GetBits4U Get1Bits (char5, tmpSrc) \
- c |= BitRight(tmpSrc, xoff5);
-
-#endif
-
-#ifdef USE_LEFTBITS
-
-#define IncChar(c) (c = (glyphPointer) (((char *) c) + glyphBytes))
-
-#define Get1Bits(ch,dst) glyphbits (ch, widthGlyph, glyphMask, dst); \
- IncChar (ch);
-
-#define glyphbits(bits,width,mask,dst) getleftbits(bits,width,dst); \
- dst &= mask;
-
-#define WGetBitsL Get1Bits(leftChar,c); \
- c = BitLeft (c, lshift);
-#define WGetBits1S Get1Bits (char1, c) \
- c = BitRight (c, xoff1);
-#define WGetBits1L WGetBitsL Get1Bits (char1, tmpSrc) \
- c |= BitRight (tmpSrc, xoff1);
-#define WGetBits1U Get1Bits (char1, c)
-
-#else
-#define WGetBitsL GetBitsL
-#define WGetBits1S GetBits1S
-#define WGetBits1L GetBits1L
-#define WGetBits1U GetBits1U
-#endif
-
-#if NGLYPHS == 2
-# define GetBitsNS GetBits2S
-# define GetBitsNL GetBits2L
-# define GetBitsNU GetBits2U
-# define LastChar char2
-#ifndef CFBTEGBLT8
-# define CFBTEGBLT8 cfbTEGlyphBlt8x2
-#endif
-#endif
-#if NGLYPHS == 3
-# define GetBitsNS GetBits3S
-# define GetBitsNL GetBits3L
-# define GetBitsNU GetBits3U
-# define LastChar char3
-#ifndef CFBTEGBLT8
-# define CFBTEGBLT8 cfbTEGlyphBlt8x3
-#endif
-#endif
-#if NGLYPHS == 4
-# define GetBitsNS GetBits4S
-# define GetBitsNL GetBits4L
-# define GetBitsNU GetBits4U
-# define LastChar char4
-#ifndef CFBTEGBLT8
-# define CFBTEGBLT8 cfbTEGlyphBlt8x4
-#endif
-#endif
-#if NGLYPHS == 5
-# define GetBitsNS GetBits5S
-# define GetBitsNL GetBits5L
-# define GetBitsNU GetBits5U
-# define LastChar char5
-#ifndef CFBTEGBLT8
-# define CFBTEGBLT8 cfbTEGlyphBlt8x5
-#endif
-#endif
-
-/* another ugly giant macro */
-#define SwitchEm switch (ew) \
- { \
- case 0: \
- break; \
- case 1: \
- while (hTmp--) { \
- GetBits; \
- StoreBits0 \
- Loop \
- } \
- break; \
- case 2: \
- while (hTmp--) { \
- GetBits; \
- StoreBits0 FirstStep StoreBits(1) \
- Loop \
- } \
- break; \
- case 3: \
- while (hTmp--) { \
- GetBits; \
- StoreBits0 FirstStep StoreBits(1) Step StoreBits(2) \
- Loop \
- } \
- break; \
- case 4: \
- while (hTmp--) { \
- GetBits; \
- StoreBits0 FirstStep StoreBits(1) Step \
- StoreBits(2) Step StoreBits(3) \
- Loop \
- } \
- break; \
- case 5: \
- while (hTmp--) { \
- GetBits; \
- StoreBits0 FirstStep StoreBits(1) Step \
- StoreBits(2) Step StoreBits(3) Step \
- StoreBits(4) \
- Loop \
- } \
- break; \
- case 6: \
- while (hTmp--) { \
- GetBits; \
- StoreBits0 FirstStep StoreBits(1) Step \
- StoreBits(2) Step StoreBits(3) Step \
- StoreBits(4) Step StoreBits(5) \
- Loop \
- } \
- break; \
- case 7: \
- while (hTmp--) { \
- GetBits; \
- StoreBits0 FirstStep StoreBits(1) Step \
- StoreBits(2) Step StoreBits(3) Step \
- StoreBits(4) Step StoreBits(5) Step \
- StoreBits(6) \
- Loop \
- } \
- break; \
- case 8: \
- while (hTmp--) { \
- GetBits; \
- StoreBits0 FirstStep StoreBits(1) Step \
- StoreBits(2) Step StoreBits(3) Step \
- StoreBits(4) Step StoreBits(5) Step \
- StoreBits(6) Step StoreBits(7) \
- Loop \
- } \
- break; \
- }
-
-#ifdef FAST_CONSTANT_OFFSET_MODE
-#define StorePixels(o,p) dst[o] = p
-#define Loop dst += widthDst;
-#else
-#define StorePixels(o,p) *dst++ = (p)
-#define Loop dst += widthLeft;
-#endif
-
-#define Step NextBitGroup(c);
-
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define StoreBits(o) StorePixels(o,GetPixelGroup(c));
-#define FirstStep Step
-#else
-#if PGSZ == 64
-#define StoreBits(o) StorePixels(o,cfb8Pixels[(c) & PGSZBMSK]);
-#define FirstStep Step
-#else /* PGSZ == 32 */
-#define StoreBits(o) StorePixels(o,*((CfbBits *) (((char *) cfb8Pixels) + (c & 0x3c))));
-#define FirstStep c = BitLeft (c, 2);
-#endif /* PGSZ */
-#endif /* BITMAP_BIT_ORDER */
-
-
-void
-CFBTEGBLT8 (pDrawable, pGC, xInit, yInit, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int xInit, yInit;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- register CfbBits c;
- register CfbBits *dst;
- register CfbBits leftMask, rightMask;
- register int hTmp;
- register int xoff1;
- register glyphPointer char1;
- register glyphPointer char2;
-#if NGLYPHS >= 3
- register glyphPointer char3;
-#endif
-#if NGLYPHS >= 4
- register glyphPointer char4;
-#endif
-#if NGLYPHS >= 5
- register glyphPointer char5;
-#endif
-#ifdef ALL_LEFTBITS
- int xoff2, xoff3, xoff4, xoff5;
-#endif
-
- FontPtr pfont = pGC->font;
- CfbBits *dstLine;
- glyphPointer oldRightChar;
- CfbBits *pdstBase;
- glyphPointer leftChar;
- int widthDst;
-#ifndef FAST_CONSTANT_OFFSET_MODE
- int widthLeft;
-#endif
- int widthGlyph;
- int h;
- int ew;
- int x, y;
- BoxRec bbox; /* for clipping */
- int lshift;
- int widthGlyphs;
-#ifdef USE_LEFTBITS
- register CfbBits glyphMask;
- register CfbBits tmpSrc;
- register int glyphBytes;
-#endif
-
- widthGlyph = FONTMAXBOUNDS(pfont,characterWidth);
- h = FONTASCENT(pfont) + FONTDESCENT(pfont);
- if (!h)
- return;
- x = xInit + FONTMAXBOUNDS(pfont,leftSideBearing) + pDrawable->x;
- y = yInit - FONTASCENT(pfont) + pDrawable->y;
- bbox.x1 = x;
- bbox.x2 = x + (widthGlyph * nglyph);
- bbox.y1 = y;
- bbox.y2 = y + h;
-
- switch (RECT_IN_REGION(pGC->pScreen, cfbGetCompositeClip(pGC), &bbox))
- {
- case rgnPART:
- cfbImageGlyphBlt8(pDrawable, pGC, xInit, yInit, nglyph, ppci, pglyphBase);
- case rgnOUT:
- return;
- }
-
- if (!cfb8CheckPixels (pGC->fgPixel, pGC->bgPixel))
- cfb8SetPixels (pGC->fgPixel, pGC->bgPixel);
-
- leftChar = 0;
-
- cfbGetLongWidthAndPointer(pDrawable, widthDst, pdstBase)
-
-#if NGLYPHS == 2
- widthGlyphs = widthGlyph << 1;
-#else
-#if NGLYPHS == 4
- widthGlyphs = widthGlyph << 2;
-#else
- widthGlyphs = widthGlyph * NGLYPHS;
-#endif
-#endif
-
-#ifdef USE_LEFTBITS
- glyphMask = mfbGetendtab(widthGlyph);
- glyphBytes = GLYPHWIDTHBYTESPADDED(*ppci);
-#endif
-
- pdstBase += y * widthDst;
-#ifdef DO_COMMON
- if (widthGlyphs <= 32)
-#endif
- while (nglyph >= NGLYPHS)
- {
- nglyph -= NGLYPHS;
- hTmp = h;
- dstLine = pdstBase + (x >> PWSH);
- xoff1 = x & PIM;
- char1 = (glyphPointer) FONTGLYPHBITS(pglyphBase, *ppci++);
- char2 = (glyphPointer) FONTGLYPHBITS(pglyphBase, *ppci++);
-#ifdef ALL_LEFTBITS
- xoff2 = xoff1 + widthGlyph;
-#endif
-#if NGLYPHS >= 3
- char3 = (glyphPointer) FONTGLYPHBITS(pglyphBase, *ppci++);
-#ifdef ALL_LEFTBITS
- xoff3 = xoff2 + widthGlyph;
-#endif
-#endif
-#if NGLYPHS >= 4
- char4 = (glyphPointer) FONTGLYPHBITS(pglyphBase, *ppci++);
-#ifdef ALL_LEFTBITS
- xoff4 = xoff3 + widthGlyph;
-#endif
-#endif
-#if NGLYPHS >= 5
- char5 = (glyphPointer) FONTGLYPHBITS(pglyphBase, *ppci++);
-#ifdef ALL_LEFTBITS
- xoff5 = xoff4 + widthGlyph;
-#endif
-#endif
- oldRightChar = LastChar;
- dst = dstLine;
- if (xoff1)
- {
- ew = ((widthGlyphs - (PGSZB - xoff1)) >> PWSH) + 1;
-#ifndef FAST_CONSTANT_OFFSET_MODE
- widthLeft = widthDst - ew;
-#endif
- if (!leftChar)
- {
- leftMask = cfbendtab[xoff1];
- rightMask = cfbstarttab[xoff1];
-
-#define StoreBits0 StorePixels (0, (dst[0] & leftMask) | \
- (GetPixelGroup(c) & rightMask));
-#define GetBits GetBitsNS
-
- SwitchEm
-
-#undef GetBits
-#undef StoreBits0
-
- }
- else
- {
- lshift = widthGlyph - xoff1;
-
-#define StoreBits0 StorePixels (0,GetPixelGroup(c));
-#define GetBits GetBitsNL
-
- SwitchEm
-
-#undef GetBits
-#undef StoreBits0
-
- }
- }
- else
- {
-#if NGLYPHS == 4 && PGSZ == 32
- ew = widthGlyph; /* widthGlyphs >> 2 */
-#else
- ew = widthGlyphs >> PWSH;
-#endif
-#ifndef FAST_CONSTANT_OFFSET_MODE
- widthLeft = widthDst - ew;
-#endif
-
-#define StoreBits0 StorePixels (0,GetPixelGroup(c));
-#define GetBits GetBitsNU
-
- SwitchEm
-
-#undef GetBits
-#undef StoreBits0
-
- }
- x += widthGlyphs;
- leftChar = oldRightChar;
- }
- while (nglyph--)
- {
- xoff1 = x & PIM;
- char1 = (glyphPointer) FONTGLYPHBITS(pglyphBase, *ppci++);
- hTmp = h;
- dstLine = pdstBase + (x >> PWSH);
- oldRightChar = char1;
- dst = dstLine;
- if (xoff1)
- {
- ew = ((widthGlyph - (PGSZB - xoff1)) >> PWSH) + 1;
-#ifndef FAST_CONSTANT_OFFSET_MODE
- widthLeft = widthDst - ew;
-#endif
- if (!leftChar)
- {
- leftMask = cfbendtab[xoff1];
- rightMask = cfbstarttab[xoff1];
-
-#define StoreBits0 StorePixels (0, (dst[0] & leftMask) | \
- (GetPixelGroup(c) & rightMask));
-#define GetBits WGetBits1S
-
- SwitchEm
-#undef GetBits
-#undef StoreBits0
-
- }
- else
- {
- lshift = widthGlyph - xoff1;
-
-#define StoreBits0 StorePixels (0,GetPixelGroup(c));
-#define GetBits WGetBits1L
-
- SwitchEm
-#undef GetBits
-#undef StoreBits0
-
- }
- }
- else
- {
- ew = widthGlyph >> PWSH;
-
-#ifndef FAST_CONSTANT_OFFSET_MODE
- widthLeft = widthDst - ew;
-#endif
-
-#define StoreBits0 StorePixels (0,GetPixelGroup(c));
-#define GetBits WGetBits1U
-
- SwitchEm
-
-#undef GetBits
-#undef StoreBits0
-
- }
- x += widthGlyph;
- leftChar = oldRightChar;
- }
- /*
- * draw the tail of the last character
- */
- xoff1 = x & PIM;
- if (xoff1)
- {
- rightMask = cfbstarttab[xoff1];
- leftMask = cfbendtab[xoff1];
- lshift = widthGlyph - xoff1;
- dst = pdstBase + (x >> PWSH);
- hTmp = h;
- while (hTmp--)
- {
- GetBitsL;
- *dst = (*dst & rightMask) | (GetPixelGroup(c) & leftMask);
- dst += widthDst;
- }
- }
-}
-#endif /* PSZ == 8 */
diff --git a/nx-X11/programs/Xserver/cfb/cfbtegblt.c b/nx-X11/programs/Xserver/cfb/cfbtegblt.c
deleted file mode 100644
index e3fb06f59..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbtegblt.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* $Xorg: cfbtegblt.c,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XFree86: xc/programs/Xserver/cfb/cfbtegblt.c,v 3.6tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "cfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "cfbmskbits.h"
-#include "mi.h"
-#define MFB_CONSTS_ONLY
-#include "maskbits.h"
-
-/*
- this works for fonts with glyphs <= 32 bits wide, on an
- arbitrarily deep display. Use cfbTEGlyphBlt8 for 8 bit displays.
-
- This should be called only with a terminal-emulator font;
-this means that the FIXED_METRICS flag is set, and that
-glyphbounds == charbounds.
-
- in theory, this goes faster; even if it doesn't, it reduces the
-flicker caused by writing a string over itself with image text (since
-the background gets repainted per character instead of per string.)
-this seems to be important for some converted X10 applications.
-
- Image text looks at the bits in the glyph and the fg and bg in the
-GC. it paints a rectangle, as defined in the protocol dcoument,
-and the paints the characters.
-
-*/
-
-void
-cfbTEGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- FontPtr pfont = pGC->font;
- int widthDst;
- CfbBits *pdstBase; /* pointer to longword with top row
- of current glyph */
-
- int w; /* width of glyph and char */
- int h; /* height of glyph and char */
- register int xpos=x; /* current x%32 */
- int ypos=y; /* current y%32 */
- register unsigned char *pglyph;
- int widthGlyph;
-
- register CfbBits *pdst;/* pointer to current longword in dst */
- int hTmp; /* counter for height */
- BoxRec bbox; /* for clipping */
-
- register int wtmp,xtemp,width;
- CfbBits bgfill,fgfill,*ptemp,tmpDst1,tmpDst2,*pdtmp;
-#if PSZ != 24
- int tmpx;
-#endif
-
- xpos += pDrawable->x;
- ypos += pDrawable->y;
-
- cfbGetLongWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- wtmp = FONTMAXBOUNDS(pfont,characterWidth);
- h = FONTASCENT(pfont) + FONTDESCENT(pfont);
- widthGlyph = GLYPHWIDTHBYTESPADDED(*ppci);
-
- xpos += FONTMAXBOUNDS(pfont,leftSideBearing);
- ypos -= FONTASCENT(pfont);
-
- bbox.x1 = xpos;
- bbox.x2 = xpos + (wtmp * nglyph);
- bbox.y1 = ypos;
- bbox.y2 = ypos + h;
-
- fgfill = PFILL(pGC->fgPixel);
- bgfill = PFILL(pGC->bgPixel);
-
- switch (RECT_IN_REGION(pGC->pScreen, cfbGetCompositeClip(pGC), &bbox))
- {
- case rgnOUT:
- break;
- case rgnPART:
- /* this is the WRONG thing to do, but it works.
- calling the non-terminal text is easy, but slow, given
- what we know about the font.
-
- the right thing to do is something like:
- for each clip rectangle
- compute at which row the glyph starts to be in it,
- and at which row the glyph ceases to be in it
- compute which is the first glyph inside the left
- edge, and the last one inside the right edge
- draw a fractional first glyph, using only
- the rows we know are in
- draw all the whole glyphs, using the appropriate rows
- draw any pieces of the last glyph, using the right rows
-
- this way, the code would take advantage of knowing that
- all glyphs are the same height and don't overlap.
-
- one day...
- */
- cfbImageGlyphBlt8(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
- break;
- case rgnIN:
-
- pdtmp = pdstBase + (widthDst * ypos);
- while(nglyph--)
- {
-
- pglyph = FONTGLYPHBITS(pglyphBase, *ppci++);
- pdst = pdtmp;
- hTmp = h;
-
- while (hTmp--)
- {
- x = xpos;
- width = wtmp;
- xtemp = 0;
-
- while (width > 0)
- {
-#if PSZ == 24
- w = 1;
- ptemp = (CfbBits *)(pglyph + ((xtemp *3)>> 2));
- getstipplepixels24(ptemp,xtemp,0,&bgfill,&tmpDst1, xtemp);
- getstipplepixels24(ptemp,xtemp,1,&fgfill,&tmpDst2, xtemp);
-#else
- tmpx = x & PIM;
- w = min(width, PPW - tmpx);
- w = min(w, (PGSZ - xtemp));
- ptemp = (CfbBits *)(pglyph + (xtemp >> MFB_PWSH));
- getstipplepixels(ptemp,xtemp,w,0,&bgfill,&tmpDst1);
- getstipplepixels(ptemp,xtemp,w,1,&fgfill,&tmpDst2);
-#endif
-
- {
- CfbBits tmpDst = tmpDst1 | tmpDst2;
-#if PSZ == 24
- CfbBits *pdsttmp = pdst + ((x*3) >> 2);
- putbits24(tmpDst,w,pdsttmp,pGC->planemask,x);
-#else
- CfbBits *pdsttmp = pdst + (x >> PWSH);
- putbits(tmpDst,tmpx,w,pdsttmp,pGC->planemask);
-#endif
- }
- x += w;
- xtemp += w;
- width -= w;
- }
- pglyph += widthGlyph;
- pdst += widthDst;
- }
- xpos += wtmp;
- }
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbtile32.c b/nx-X11/programs/Xserver/cfb/cfbtile32.c
deleted file mode 100644
index 96e5620b7..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbtile32.c
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * Fill 32 bit tiled rectangles. Used by both PolyFillRect and PaintWindow.
- * no depth dependencies.
- */
-/* $XFree86: xc/programs/Xserver/cfb/cfbtile32.c,v 3.6tsi Exp $ */
-
-/*
-
-Copyright 1989, 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.
-*/
-
-/* $Xorg: cfbtile32.c,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "cfb8bit.h"
-
-#include "mergerop.h"
-
-#include "mi.h"
-#include "mispans.h"
-
-#ifdef sparc
-#define SHARED_IDCACHE
-#endif
-
-#if PSZ == 24
-#define STORE(p) (*(p) = MROP_PREBUILT_SOLID(srcpix,*(p)))
-/*#define STORE24(p,index) {\
- register int idx = ((index) & 3)<< 1; \
- *(p) = (((MROP_PREBUILT_SOLID(srcpix,*(p))<<cfb24Shift[idx])&cfbmask[idx])| \
- (*(p)&cfbrmask[idx])); \
- idx++; \
- (p)++; \
- *(p) = (((MROP_PREBUILT_SOLID(srcpix,*(p))>>cfb24Shift[idx])&cfbmask[idx])| \
- (*(p)&cfbrmask[idx])); \
- (p)--; \
- }*/
-#define STORE24(p,index) MROP_PREBUILT_SOLID24(srcpix, (p), index)
-
-#define STORE_MASK(p,mask) (*(p) = MROP_PREBUILT_MASK(srcpix,*(p),(mask)))
-#define QSTORE(p) ((*(p) = MROP_PREBUILT_SOLID(((srcpix<<24)|srcpix),*(p))), \
- (p)++,(*(p) = MROP_PREBUILT_SOLID(((srcpix<<16)|(srcpix>>8)),*(p))), \
- (p)++,(*(p) = MROP_PREBUILT_SOLID(((srcpix<<8)|(srcpix>>16)),*(p))))
-
-#if (MROP == Mcopy) && defined(FAST_CONSTANT_OFFSET_MODE) && defined(SHARED_IDCACHE)
-# define Expand(left,right) {\
- int part = nlwMiddle & ((PGSZB*2)-1); \
- nlwMiddle *= 3; \
- nlwMiddle >>= PWSH + 3; \
- while (h--) { \
- srcpix = psrc[srcy]; \
- MROP_PREBUILD(srcpix); \
- ++srcy; \
- if (srcy == tileHeight) \
- srcy = 0; \
- left \
- p += part; \
- switch (part) { \
- case 7: \
- STORE24(p - 7, xtmp - 7); \
- case 6: \
- STORE24(p - 6, xtmp - 6); \
- case 5: \
- STORE24(p - 5, xtmp - 5); \
- case 4: \
- STORE24(p - 4, xtmp - 4); \
- case 3: \
- STORE24(p - 3, xtmp - 3); \
- case 2: \
- STORE24(p - 2, xtmp - 2); \
- case 1: \
- STORE24(p - 1, xtmp - 1); \
- } \
- nlw = nlwMiddle; \
- while (nlw) { \
- STORE24 (p + 0, xtmp + 0); \
- STORE24 (p + 1, xtmp + 1); \
- STORE24 (p + 2, xtmp + 2); \
- STORE24 (p + 3, xtmp + 3); \
- STORE24 (p + 4, xtmp + 4); \
- STORE24 (p + 5, xtmp + 5); \
- STORE24 (p + 6, xtmp + 6); \
- STORE24 (p + 7, xtmp + 7); \
- p += 8; \
- xtmp += 8; \
- nlw--; \
- } \
- right \
- p += nlwExtra; \
- } \
-}
-#else
-#define Expand(left,right) {\
- while (h--) { \
- srcpix = psrc[srcy]; \
- MROP_PREBUILD(srcpix); \
- ++srcy; \
- if (srcy == tileHeight) \
- srcy = 0; \
- left \
- while (nlw--) \
- { \
- STORE24(p,xtmp); \
- if(xtmp&3) p++; \
- xtmp++; \
- } \
- right \
- p += nlwExtra; \
- } \
-}
-#endif
-#else /*PSZ != 24*/
-#define STORE(p) (*(p) = MROP_PREBUILT_SOLID(srcpix,*(p)))
-
-#if (MROP == Mcopy) && defined(FAST_CONSTANT_OFFSET_MODE) && defined(SHARED_IDCACHE)
-# define Expand(left,right) {\
- int part = nlwMiddle & ((PGSZB*2)-1); \
- nlwMiddle >>= PWSH + 1; \
- while (h--) { \
- srcpix = psrc[srcy]; \
- MROP_PREBUILD(srcpix); \
- ++srcy; \
- if (srcy == tileHeight) \
- srcy = 0; \
- left \
- p += part; \
- switch (part) { \
- case 7: \
- STORE(p - 7); \
- case 6: \
- STORE(p - 6); \
- case 5: \
- STORE(p - 5); \
- case 4: \
- STORE(p - 4); \
- case 3: \
- STORE(p - 3); \
- case 2: \
- STORE(p - 2); \
- case 1: \
- STORE(p - 1); \
- } \
- nlw = nlwMiddle; \
- while (nlw) { \
- STORE (p + 0); \
- STORE (p + 1); \
- STORE (p + 2); \
- STORE (p + 3); \
- STORE (p + 4); \
- STORE (p + 5); \
- STORE (p + 6); \
- STORE (p + 7); \
- p += 8; \
- nlw--; \
- } \
- right \
- p += nlwExtra; \
- } \
-}
-#else
-#define Expand(left,right) {\
- while (h--) { \
- srcpix = psrc[srcy]; \
- MROP_PREBUILD(srcpix); \
- ++srcy; \
- if (srcy == tileHeight) \
- srcy = 0; \
- left \
- nlw = nlwMiddle; \
- while (nlw--) \
- { \
- STORE(p); \
- p++; \
- } \
- right \
- p += nlwExtra; \
- } \
-}
-#endif
-#endif /*PSZ == 24*/
-
-void
-MROP_NAME(cfbFillRectTile32) (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox; /* number of boxes to fill */
- BoxPtr pBox; /* pointer to list of boxes to fill */
-{
- register CfbBits srcpix;
- CfbBits *psrc; /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
-
- int nlwDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- register int h; /* height of current box */
- register CfbBits startmask;
- register CfbBits endmask; /* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwExtra; /* to get from right of box to left of next span */
- register int nlw = 0; /* loop version of nlwMiddle */
- register CfbBits *p; /* pointer to bits we're writing */
- int y; /* current scan line */
- int srcy; /* current tile position */
-
- CfbBits *pbits;/* pointer to start of pixmap */
- PixmapPtr tile; /* rotated, expanded tile */
-#if MROP == 0 && PSZ == 24
- DeclareMergeRop()
-#else
- MROP_DECLARE_REG()
-#endif
- MROP_PREBUILT_DECLARE()
-#if PSZ == 24
- CfbBits xtmp;
-#endif
-
- tile = pGC->pRotatedPixmap;
- tileHeight = tile->drawable.height;
- psrc = (CfbBits *)tile->devPrivate.ptr;
-
-#if MROP == 0 && PSZ == 24
- InitializeMergeRop(pGC->alu, pGC->planemask);
-#else
- MROP_INITIALIZE(pGC->alu, pGC->planemask);
-#endif
-
- cfbGetLongWidthAndPointer (pDrawable, nlwDst, pbits)
-
- while (nBox--)
- {
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
- y = pBox->y1;
-#if PSZ == 24
- xtmp = pBox->x1;
- p = pbits + (y * nlwDst) + ((pBox->x1*3) >> 2);
-/* p = pbits + (y * nlwDst) + ((pBox->x1>> 2)*3);*/
-#else
- p = pbits + (y * nlwDst) + (pBox->x1 >> PWSH);
-#endif
- srcy = y % tileHeight;
-
-#if PSZ == 24
- if (w == 1 && ((pBox->x1 & 3) == 0 || (pBox->x1 & 3) == 3))
-#else
- if ( ((pBox->x1 & PIM) + w) <= PPW)
-#endif
- {
- maskpartialbits(pBox->x1, w, startmask);
- nlwExtra = nlwDst;
- while (h--)
- {
- srcpix = psrc[srcy];
- MROP_PREBUILD(srcpix);
- ++srcy;
- if (srcy == tileHeight)
- srcy = 0;
- *p = MROP_PREBUILT_MASK (srcpix, *p, startmask);
- p += nlwExtra;
- }
- }
- else
- {
- maskbits(pBox->x1, w, startmask, endmask, nlwMiddle);
- nlwExtra = nlwDst - nlwMiddle;
-
- if (startmask)
- {
- nlwExtra -= 1;
- if (endmask)
- {
- Expand(*p = MROP_PREBUILT_MASK(srcpix, *p, startmask); p++;,
- *p = MROP_PREBUILT_MASK(srcpix, *p, endmask);)
- }
- else
- {
- Expand(*p = MROP_PREBUILT_MASK(srcpix, *p, startmask); p++;,
- ;)
- }
- }
- else
- {
- if (endmask)
- {
- Expand(;,
- *p = MROP_PREBUILT_MASK(srcpix, *p, endmask);)
- }
- else
- {
- Expand(;,
- ;)
- }
- }
- }
- pBox++;
- }
-}
-
-void
-MROP_NAME(cfbTile32FS)(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- DDXPointPtr ppt; /* pointer to list of start points */
- int *pwidth;/* pointer to list of n widths */
- CfbBits *pbits; /* pointer to start of bitmap */
- int nlwDst; /* width in longwords of bitmap */
- register CfbBits *p; /* pointer to current longword in bitmap */
- register int w; /* current span width */
- register int nlw;
- register int x;
- register CfbBits startmask;
- register CfbBits endmask;
- register CfbBits srcpix;
- int y;
- int *pwidthFree;/* copies of the pointers to free */
- DDXPointPtr pptFree;
- PixmapPtr tile;
- CfbBits *psrc; /* pointer to bits in tile */
- int tileHeight;/* height of the tile */
-#if MROP == 0 && PSZ == 24
- DeclareMergeRop()
-#else
- MROP_DECLARE_REG()
-#endif
- MROP_PREBUILT_DECLARE()
-#if PSZ == 24
- CfbBits xtmp;
-#endif
-
- n = nInit * miFindMaxBand( cfbGetCompositeClip(pGC) );
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans( cfbGetCompositeClip(pGC),
- pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- tile = pGC->pRotatedPixmap;
- tileHeight = tile->drawable.height;
- psrc = (CfbBits *)tile->devPrivate.ptr;
-
-#if MROP == 0 && PSZ == 24
- InitializeMergeRop(pGC->alu, pGC->planemask);
-#else
- MROP_INITIALIZE(pGC->alu, pGC->planemask);
-#endif
-
- cfbGetLongWidthAndPointer (pDrawable, nlwDst, pbits)
-
-#if MROP == Mcopy
- if (!(tileHeight & (tileHeight-1)))
- {
- tileHeight--;
- while (n--)
- {
- x = ppt->x;
- y = ppt->y;
- ++ppt;
- w = *pwidth++;
-#if PSZ == 24
-/* p = pbits + (y * nlwDst) + ((x*3) >> 2);*/
- xtmp = x;
- p = pbits + (y * nlwDst) + ((x >> 2)*3);
-#else
- p = pbits + (y * nlwDst) + (x >> PWSH);
-#endif
- srcpix = psrc[y & tileHeight];
- MROP_PREBUILD(srcpix);
-
-#if PSZ == 24
- if ((x & 3) + w < 5)
-#else
- if ((x & PIM) + w < PPW)
-#endif
- {
- maskpartialbits(x, w, startmask);
- *p = MROP_PREBUILT_MASK (srcpix, *p, startmask);
- }
- else
- {
- maskbits(x, w, startmask, endmask, nlw);
- if (startmask)
- {
- *p = MROP_PREBUILT_MASK(srcpix, *p, startmask);
-#if PSZ == 24
- if(xtmp&3) p++;
- xtmp++;
-#else
- p++;
-#endif
- }
- while (nlw--)
- {
-#if PSZ == 24
- STORE24(p,xtmp);
- if(xtmp&3) p++;
- ++xtmp;
-#else
- STORE(p);
- ++p;
-#endif
- }
- if (endmask)
- {
- *p = MROP_PREBUILT_MASK(srcpix, *p, endmask);
- }
- }
- }
- }
- else
-#endif
- {
- while (n--)
- {
- x = ppt->x;
- y = ppt->y;
- ++ppt;
- w = *pwidth++;
-#if PSZ == 24
-/* p = pbits + (y * nlwDst) + ((x *3)>> 2);*/
- p = pbits + (y * nlwDst) + ((x >> 2)*3);
- xtmp = x;
-#else
- p = pbits + (y * nlwDst) + (x >> PWSH);
-#endif
- srcpix = psrc[y % tileHeight];
- MROP_PREBUILD(srcpix);
-
-#if PSZ == 24
- if ((x & 3) + w < 5)
-#else
- if ((x & PIM) + w < PPW)
-#endif
- {
- maskpartialbits(x, w, startmask);
- *p = MROP_PREBUILT_MASK (srcpix, *p, startmask);
- }
- else
- {
- maskbits(x, w, startmask, endmask, nlw);
- if (startmask)
- {
- *p = MROP_PREBUILT_MASK(srcpix, *p, startmask);
-#if PSZ == 24
- if(xtmp&3)p++;
- xtmp++;
-#else
- p++;
-#endif
- }
- while (nlw--)
- {
-#if PSZ == 24
- STORE24(p,xtmp);
- if(xtmp&3)p++;
- xtmp++;
-#else
- STORE(p);
- ++p;
-#endif
- }
- if (endmask)
- {
- *p = MROP_PREBUILT_MASK(srcpix, *p, endmask);
- }
- }
- }
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbtileodd.c b/nx-X11/programs/Xserver/cfb/cfbtileodd.c
deleted file mode 100644
index 6c46aa4db..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbtileodd.c
+++ /dev/null
@@ -1,1247 +0,0 @@
-/*
- * Fill odd tiled rectangles and spans.
- * no depth dependencies.
- */
-/* $XFree86: xc/programs/Xserver/cfb/cfbtileodd.c,v 3.6tsi Exp $ */
-
-/*
-
-Copyright 1989, 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.
-*/
-
-/* $Xorg: cfbtileodd.c,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "cfb8bit.h"
-
-#include "mergerop.h"
-
-#if PSZ == 24
-#define LEFTSHIFT_AMT (3)
-#else /* PSZ != 24 */
-#define LEFTSHIFT_AMT (5 - PWSH)
-#endif /* PSZ == 24*/
-
-#define LastTileBits {\
- tmp = bits; \
- if (tileEndPart) \
- bits = (*pSrc & tileEndMask) | BitRight (*pSrcLine, tileEndLeftShift); \
- else \
- bits = *pSrc; \
-}
-
-#if PSZ == 24
-#define ResetTileBits {\
- pSrc = pSrcLine; \
- nlwSrc = widthSrc;\
- if (tileEndPart) { \
- if (4 - xoff + tileEndPart <= 4) {\
- bits = *pSrc++; \
- nlwSrc--; \
- } else \
- bits = BitLeft(tmp, tileEndLeftShift) | \
- BitRight(bits, tileEndRightShift); \
- xoff = (xoff + xoffStep) & 3; \
- leftShift = xoff << LEFTSHIFT_AMT; \
- rightShift = PGSZ - leftShift; \
- }\
-}
-#else
-#define ResetTileBits {\
- pSrc = pSrcLine; \
- nlwSrc = widthSrc;\
- if (tileEndPart) { \
- if (PPW - xoff + tileEndPart <= PPW) {\
- bits = *pSrc++; \
- nlwSrc--; \
- } else \
- bits = BitLeft(tmp, tileEndLeftShift) | \
- BitRight(bits, tileEndRightShift); \
- xoff = (xoff + xoffStep) & PIM; \
- leftShift = xoff << LEFTSHIFT_AMT; \
- rightShift = PGSZ - leftShift; \
- }\
-}
-#endif
-
-#define NextTileBits {\
- if (nlwSrc == 1) {\
- LastTileBits\
- } else { \
- if (nlwSrc == 0) {\
- ResetTileBits\
- } \
- if (nlwSrc == 1) {\
- LastTileBits\
- } else {\
- tmp = bits; \
- bits = *pSrc++; \
- }\
- }\
- nlwSrc--; \
-}
-
-void
-MROP_NAME(cfbFillBoxTileOdd) (pDrawable, nBox, pBox, tile, xrot, yrot, alu, planemask)
- DrawablePtr pDrawable;
- int nBox; /* number of boxes to fill */
- register BoxPtr pBox; /* pointer to list of boxes to fill */
- PixmapPtr tile; /* tile */
- int xrot, yrot;
- int alu;
- unsigned long planemask;
-{
- int tileWidth; /* width of tile in pixels */
- int tileHeight; /* height of the tile */
- int widthSrc;
-
- int widthDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- int h; /* height of current box */
- CfbBits startmask;
- CfbBits endmask;/* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwSrc; /* number of whole longwords in source */
-
- register int nlw; /* loop version of nlwMiddle */
- int srcy; /* current tile y position */
- int srcx; /* current tile x position */
- int xoffDst, xoffSrc;
- int leftShift, rightShift;
-
-#if MROP == 0 && PSZ == 24
- DeclareMergeRop24()
-#else
- MROP_DECLARE_REG()
-#endif
-
- CfbBits *pdstBase; /* pointer to start of dest */
- CfbBits *pDstLine; /* poitner to start of dest box */
- CfbBits *pSrcBase; /* pointer to start of source */
- CfbBits *pSrcLine; /* pointer to start of source line */
- register CfbBits *pDst;
- register CfbBits *pSrc;
- register CfbBits bits, tmp = 0;
- int xoffStart, xoff;
- int leftShiftStart, rightShiftStart, nlwSrcStart;
- CfbBits tileEndMask;
- int tileEndLeftShift, tileEndRightShift;
- int xoffStep;
- int tileEndPart;
- int needFirst;
- CfbBits narrow[2];
- CfbBits narrowMask = 0;
- int narrowShift = 0;
- Bool narrowTile;
-
-#if MROP == 0 && PSZ == 24
- InitializeMergeRop24 (alu, planemask)
-#else
- MROP_INITIALIZE (alu, planemask)
-#endif
-
- tileHeight = tile->drawable.height;
- tileWidth = tile->drawable.width;
- widthSrc = tile->devKind / PGSZB;
- narrowTile = FALSE;
- if (widthSrc == 1)
- {
- narrowShift = tileWidth;
- narrowMask = cfbendpartial [tileWidth];
- tileWidth *= 2;
- widthSrc = 2;
- narrowTile = TRUE;
- }
- pSrcBase = (CfbBits *)tile->devPrivate.ptr;
-
- cfbGetLongWidthAndPointer (pDrawable, widthDst, pdstBase)
-
-#if PSZ == 24
- tileEndPart = (4 - tileWidth) & 3;
- tileEndMask = cfbendpartial[tileWidth & 3];
-#else
- tileEndPart = tileWidth & PIM;
- tileEndMask = cfbendpartial[tileEndPart];
-#endif /* PSZ == 24 */
- tileEndLeftShift = (tileEndPart) << LEFTSHIFT_AMT;
- tileEndRightShift = PGSZ - tileEndLeftShift;
-#if PSZ == 24
- xoffStep = 4 - tileEndPart;
-#else
- xoffStep = PPW - tileEndPart;
-#endif /* PSZ == 24 */
- /*
- * current assumptions: tile > 32 bits wide.
- */
- while (nBox--)
- {
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
- modulus (pBox->x1 - xrot, tileWidth, srcx);
- modulus (pBox->y1 - yrot, tileHeight, srcy);
-#if PSZ == 24
- xoffDst = (4 - pBox->x1) & 3;
- if (w == 1 && (xoffDst == 0 || xoffDst == 1))
-#else
- xoffDst = pBox->x1 & PIM;
- if (xoffDst + w < PPW)
-#endif
- {
- maskpartialbits(pBox->x1, w, startmask);
- endmask = 0;
- nlwMiddle = 0;
- }
- else
- {
- maskbits (pBox->x1, w, startmask, endmask, nlwMiddle)
- }
-#if PSZ == 24
- pDstLine = pdstBase + (pBox->y1 * widthDst) + ((pBox->x1*3) >> 2);
-#else
- pDstLine = pdstBase + (pBox->y1 * widthDst) + (pBox->x1 >> PWSH);
-#endif
- pSrcLine = pSrcBase + (srcy * widthSrc);
-#if PSZ == 24
- xoffSrc = (4 - srcx) & 3;
-#else
- xoffSrc = srcx & PIM;
-#endif
- if (xoffSrc >= xoffDst)
- {
- xoffStart = xoffSrc - xoffDst;
- needFirst = 1;
- }
- else
- {
-#if PSZ == 24
- xoffStart = 4 - (xoffDst - xoffSrc);
-#else
- xoffStart = PPW - (xoffDst - xoffSrc);
-#endif
- needFirst = 0;
- }
- leftShiftStart = (xoffStart) << LEFTSHIFT_AMT;
- rightShiftStart = PGSZ - leftShiftStart;
-#if PSZ == 24
- nlwSrcStart = widthSrc - ((srcx*3) >> 2);
-#else
- nlwSrcStart = widthSrc - (srcx >> PWSH);
-#endif
- while (h--)
- {
- /* XXX only works when narrowShift >= PPW/2 */
- if (narrowTile)
- {
- tmp = pSrcBase[srcy] & narrowMask; /* source width == 1 */
- narrow[0] = tmp | SCRRIGHT (tmp, narrowShift);
-#if PSZ == 24
- narrow[1] = BitLeft (tmp, 8) |
- BitRight(tmp, 16);
-#else
- narrow[1] = SCRLEFT (tmp, PPW - narrowShift) |
- SCRRIGHT(tmp, 2 * narrowShift - PPW);
-#endif
- pSrcLine = narrow;
- }
- xoff = xoffStart;
- leftShift = leftShiftStart;
- rightShift = rightShiftStart;
- nlwSrc = nlwSrcStart;
-#if PSZ == 24
- pSrc = pSrcLine + ((srcx * 3) >> 2);
-#else
- pSrc = pSrcLine + (srcx >> PWSH);
-#endif
- pDst = pDstLine;
- bits = 0;
- if (needFirst)
- {
- NextTileBits
- }
- if (startmask)
- {
- NextTileBits
- tmp = BitLeft(tmp, leftShift);
- if (rightShift != PGSZ)
- tmp |= BitRight(bits,rightShift);
- *pDst = MROP_MASK (tmp, *pDst, startmask);
- ++pDst;
- }
- nlw = nlwMiddle;
- while (nlw)
- {
-#if MROP == Mcopy
- if (nlwSrc > 1)
- {
- int nlwPart = nlw;
-
- if (nlwPart >= nlwSrc)
- nlwPart = nlwSrc - 1;
- nlw -= nlwPart;
- nlwSrc -= nlwPart;
- if (rightShift != PGSZ)
- {
- while (nlwPart--)
- {
- tmp = bits;
- bits = *pSrc++;
- *pDst = MROP_SOLID(BitLeft(tmp, leftShift) |
- BitRight (bits, rightShift),
- *pDst);
- ++pDst;
- }
- }
- else
- {
- if (nlwPart)
- {
- *pDst = MROP_SOLID (bits, *pDst);
- ++pDst;
- nlwPart--;
- while (nlwPart--)
- {
- *pDst = MROP_SOLID(*pSrc, *pDst);
- ++pDst; ++pSrc;
- }
- bits = *pSrc++;
- }
- }
- }
- else
-#endif
- {
- NextTileBits
- if (rightShift != PGSZ)
- {
- *pDst = MROP_SOLID(BitLeft(tmp, leftShift) |
- BitRight(bits, rightShift),
- *pDst);
- }
- else
- {
- *pDst = MROP_SOLID (tmp, *pDst);
- }
- ++pDst;
- nlw--;
- }
- }
- if (endmask)
- {
- NextTileBits
- if (rightShift == PGSZ)
- bits = 0;
- *pDst = MROP_MASK (BitLeft(tmp, leftShift) |
- BitRight(bits,rightShift),
- *pDst, endmask);
- }
- pDstLine += widthDst;
- pSrcLine += widthSrc;
- if (++srcy == tileHeight)
- {
- srcy = 0;
- pSrcLine = pSrcBase;
- }
- }
- pBox++;
- }
-}
-
-void
-MROP_NAME(cfbFillSpanTileOdd) (pDrawable, n, ppt, pwidth, tile, xrot, yrot, alu, planemask)
- DrawablePtr pDrawable;
- int n;
- DDXPointPtr ppt;
- int *pwidth;
- PixmapPtr tile;
- int xrot, yrot;
- int alu;
- unsigned long planemask;
-{
- int tileWidth; /* width of tile in pixels */
- int tileHeight; /* height of the tile */
- int widthSrc;
-
- int widthDst; /* width in longwords of the dest pixmap */
- int w; /* width of current span */
- CfbBits startmask;
- CfbBits endmask; /* masks for reggedy bits at either end of line */
- int nlwSrc; /* number of whole longwords in source */
-
- register int nlw; /* loop version of nlwMiddle */
- int srcy; /* current tile y position */
- int srcx; /* current tile x position */
- int xoffDst, xoffSrc;
- int leftShift, rightShift;
-
-#if MROP == 0 && PSZ == 24
- DeclareMergeRop24()
-#else
- MROP_DECLARE_REG()
-#endif
-
- CfbBits *pdstBase; /* pointer to start of dest */
- CfbBits *pDstLine; /* poitner to start of dest box */
- CfbBits *pSrcBase; /* pointer to start of source */
- CfbBits *pSrcLine; /* pointer to start of source line */
- register CfbBits *pDst;
- register CfbBits *pSrc;
- register CfbBits bits, tmp = 0;
- int xoffStart, xoff;
- int leftShiftStart, rightShiftStart, nlwSrcStart;
- CfbBits tileEndMask;
- int tileEndLeftShift, tileEndRightShift;
- int xoffStep;
- int tileEndPart;
- int needFirst;
- CfbBits narrow[2];
- CfbBits narrowMask = 0;
- int narrowShift = 0;
- Bool narrowTile;
-
-#if MROP == 0 && PSZ == 24
- InitializeMergeRop24 (alu, planemask)
-#else
- MROP_INITIALIZE (alu, planemask)
-#endif
-
- tileHeight = tile->drawable.height;
- tileWidth = tile->drawable.width;
- widthSrc = tile->devKind / PGSZB;
- narrowTile = FALSE;
- if (widthSrc == 1)
- {
- narrowShift = tileWidth;
- narrowMask = cfbendpartial [tileWidth];
- tileWidth *= 2;
- widthSrc = 2;
- narrowTile = TRUE;
- }
- pSrcBase = (CfbBits *)tile->devPrivate.ptr;
-
- cfbGetLongWidthAndPointer (pDrawable, widthDst, pdstBase)
-
-#if PSZ == 24
- tileEndPart = (4 - tileWidth) & 3;
- tileEndMask = cfbendpartial[tileWidth & 3];
-#else
- tileEndPart = tileWidth & PIM;
- tileEndMask = cfbendpartial[tileEndPart];
-#endif
- tileEndLeftShift = (tileEndPart) << LEFTSHIFT_AMT;
- tileEndRightShift = PGSZ - tileEndLeftShift;
-#if PSZ == 24
- xoffStep = 4 - tileEndPart;
-#else
- xoffStep = PPW - tileEndPart;
-#endif
- while (n--)
- {
- w = *pwidth++;
- modulus (ppt->x - xrot, tileWidth, srcx);
- modulus (ppt->y - yrot, tileHeight, srcy);
-#if PSZ == 24
- xoffDst = (4 - ppt->x) & 3;
- if (w == 1 && (xoffDst == 0 || xoffDst == 1))
-#else
- xoffDst = ppt->x & PIM;
- if (xoffDst + w < PPW)
-#endif
- {
- maskpartialbits(ppt->x, w, startmask);
- endmask = 0;
- nlw = 0;
- }
- else
- {
- maskbits (ppt->x, w, startmask, endmask, nlw)
- }
-#if PSZ == 24
- pDstLine = pdstBase + (ppt->y * widthDst) + ((ppt->x *3)>> 2);
-#else
- pDstLine = pdstBase + (ppt->y * widthDst) + (ppt->x >> PWSH);
-#endif
- pSrcLine = pSrcBase + (srcy * widthSrc);
-#if PSZ == 24
- xoffSrc = (4 - srcx) & 3;
-#else
- xoffSrc = srcx & PIM;
-#endif
- if (xoffSrc >= xoffDst)
- {
- xoffStart = xoffSrc - xoffDst;
- needFirst = 1;
- }
- else
- {
-#if PSZ == 24
- xoffStart = 4 - (xoffDst - xoffSrc);
-#else
- xoffStart = PPW - (xoffDst - xoffSrc);
-#endif
- needFirst = 0;
- }
- leftShiftStart = (xoffStart) << LEFTSHIFT_AMT;
- rightShiftStart = PGSZ - leftShiftStart;
-#if PSZ == 24
- nlwSrcStart = widthSrc - ((srcx*3) >> 2);
-#else
- nlwSrcStart = widthSrc - (srcx >> PWSH);
-#endif
- /* XXX only works when narrowShift >= PPW/2 */
- if (narrowTile)
- {
- tmp = pSrcBase[srcy] & narrowMask; /* source width == 1 */
- narrow[0] = tmp | SCRRIGHT (tmp, narrowShift);
-#if PSZ == 24
- narrow[1] = BitLeft (tmp, 8) |
- BitRight(tmp, 16);
-#else
- narrow[1] = SCRLEFT (tmp, PPW - narrowShift) |
- SCRRIGHT(tmp, 2 * narrowShift - PPW);
-#endif
- pSrcLine = narrow;
- }
- xoff = xoffStart;
- leftShift = leftShiftStart;
- rightShift = rightShiftStart;
- nlwSrc = nlwSrcStart;
-#if PSZ == 24
- pSrc = pSrcLine + ((srcx * 3) >> 2);
-#else
- pSrc = pSrcLine + (srcx >> PWSH);
-#endif
- pDst = pDstLine;
- bits = 0;
- if (needFirst)
- {
- NextTileBits
- }
- if (startmask)
- {
- NextTileBits
- tmp = BitLeft(tmp, leftShift);
- if (rightShift != PGSZ)
- tmp |= BitRight(bits,rightShift);
- *pDst = MROP_MASK (tmp, *pDst, startmask);
- ++pDst;
- }
- while (nlw)
- {
-#if MROP == Mcopy
- if (nlwSrc > 1)
- {
- int nlwPart = nlw;
-
- if (nlwPart >= nlwSrc)
- nlwPart = nlwSrc - 1;
- nlw -= nlwPart;
- nlwSrc -= nlwPart;
- if (rightShift != PGSZ)
- {
- while (nlwPart--)
- {
- tmp = bits;
- bits = *pSrc++;
- *pDst = MROP_SOLID(BitLeft(tmp, leftShift) |
- BitRight (bits, rightShift),
- *pDst);
- ++pDst;
- }
- }
- else
- {
- if (nlwPart)
- {
- *pDst = MROP_SOLID (bits, *pDst);
- ++pDst;
- nlwPart--;
- while (nlwPart--)
- {
- *pDst = MROP_SOLID(*pSrc, *pDst);
- ++pDst; ++pSrc;
- }
- bits = *pSrc++;
- }
- }
- }
- else
-#endif
- {
- NextTileBits
- if (rightShift != PGSZ)
- {
- *pDst = MROP_SOLID(BitLeft(tmp, leftShift) |
- BitRight(bits, rightShift),
- *pDst);
- ++pDst;
- }
- else
- {
- *pDst = MROP_SOLID (tmp, *pDst);
- ++pDst;
- }
- nlw--;
- }
- }
- if (endmask)
- {
- NextTileBits
- if (rightShift == PGSZ)
- bits = 0;
- *pDst = MROP_MASK (BitLeft(tmp, leftShift) |
- BitRight(bits,rightShift),
- *pDst, endmask);
- }
- ppt++;
- }
-}
-
-# include "fastblt.h"
-
-#define IncSrcPtr psrc++; if (!--srcRemaining) { srcRemaining = widthSrc; psrc = psrcStart; }
-
-void
-MROP_NAME(cfbFillBoxTile32s) (pDrawable, nBox, pBox, tile, xrot, yrot, alu, planemask)
- DrawablePtr pDrawable;
- int nBox; /* number of boxes to fill */
- register BoxPtr pBox; /* pointer to list of boxes to fill */
- PixmapPtr tile; /* tile */
- int xrot, yrot;
- int alu;
- unsigned long planemask;
-{
- int tileWidth; /* width of tile */
- int tileHeight; /* height of the tile */
- int widthSrc; /* width in longwords of the source tile */
-
- int widthDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- int h; /* height of current box */
- CfbBits startmask;
- CfbBits endmask;/* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
-
- register int nl; /* loop version of nlMiddle */
- int srcy; /* current tile y position */
- int srcx; /* current tile x position */
- int srcRemaining; /* number of longwords remaining in source */
- int xoffDst, xoffSrc;
- int srcStart; /* number of longwords source offset at left of box */
- int leftShift, rightShift;
-
-#if MROP == 0 && PSZ == 24
- DeclareMergeRop24()
-#else
- MROP_DECLARE_REG()
-#endif
-
- CfbBits *pdstBase; /* pointer to start of dest */
- CfbBits *pdstLine; /* poitner to start of dest box */
- CfbBits *psrcBase; /* pointer to start of source */
- CfbBits *psrcLine; /* pointer to fetch point of source */
- CfbBits *psrcStart; /* pointer to start of source line */
- register CfbBits *pdst;
- register CfbBits *psrc;
- register CfbBits bits, bits1;
- register int nlTemp;
-
-#if MROP == 0 && PSZ == 24
- InitializeMergeRop24 (alu, planemask)
-#else
- MROP_INITIALIZE (alu, planemask)
-#endif
-
- psrcBase = (CfbBits *)tile->devPrivate.ptr;
- tileHeight = tile->drawable.height;
- tileWidth = tile->drawable.width;
-#if PSZ == 24
- widthSrc = tile->devKind / PGSZB;
-#else
- widthSrc = tileWidth >> PWSH;
-#endif
-
- cfbGetLongWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- while (nBox--)
- {
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
-
- /* set up source */
- modulus (pBox->x1 - xrot, tileWidth, srcx);
- modulus (pBox->y1 - yrot, tileHeight, srcy);
-#if PSZ == 24
- xoffSrc = (4 - srcx) & 3;
- srcStart = (srcx * 3) >> 2;
-#else
- xoffSrc = srcx & PIM;
- srcStart = (srcx >> PWSH);
-#endif
- psrcStart = psrcBase + (srcy * widthSrc);
- psrcLine = psrcStart + srcStart;
-
- /* set up dest */
-#if PSZ == 24
- xoffDst = (4 - pBox->x1) & 3;
- pdstLine = pdstBase + (pBox->y1 * widthDst) + ((pBox->x1*3) >> 2);
-#else
- xoffDst = pBox->x1 & PIM;
- pdstLine = pdstBase + (pBox->y1 * widthDst) + (pBox->x1 >> PWSH);
-#endif
- /* set up masks */
-#if PSZ == 24
- if (w == 1 && (xoffDst == 0 || xoffDst == 1))
-#else
- if (xoffDst + w < PPW)
-#endif
- {
- maskpartialbits(pBox->x1, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- }
- else
- {
- maskbits (pBox->x1, w, startmask, endmask, nlMiddle)
- }
- if (xoffSrc == xoffDst)
- {
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- srcRemaining = widthSrc - srcStart;
- if (startmask)
- {
- *pdst = MROP_MASK (*psrc, *pdst, startmask);
- pdst++;
- IncSrcPtr
- }
- nlTemp = nlMiddle;
- while (nlTemp)
- {
- nl = nlTemp;
- if (nl > srcRemaining)
- nl = srcRemaining;
-
- nlTemp -= nl;
- srcRemaining -= nl;
-
-#if MROP == Mcopy
-#ifdef LARGE_INSTRUCTION_CACHE
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-#define BodyEven(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) *pdst = MROP_SOLID (*psrc, *pdst); pdst++; psrc++;
-#define BodyEven(n) BodyOdd(n)
-
-#define LoopReset ;
-
-#endif
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL(nl, label1,
- *pdst = MROP_SOLID (*psrc, *pdst);
- pdst++; psrc++;)
-#endif
-#else
- while (nl--) {
- *pdst = MROP_SOLID (*psrc, *pdst);
- pdst++; psrc++;
- }
-#endif
- if (!srcRemaining)
- {
- srcRemaining = widthSrc;
- psrc = psrcStart;
- }
- }
- if (endmask)
- {
- *pdst = MROP_MASK (*psrc, *pdst, endmask);
- }
- pdstLine += widthDst;
- psrcLine += widthSrc;
- psrcStart += widthSrc;
- if (++srcy == tileHeight)
- {
- psrcStart = psrcBase;
- psrcLine = psrcStart + srcStart;
- srcy = 0;
- }
- }
- }
- else
- {
- if (xoffSrc > xoffDst)
- {
- leftShift = (xoffSrc - xoffDst) << LEFTSHIFT_AMT;
- rightShift = PGSZ - leftShift;
- }
- else
- {
- rightShift = (xoffDst - xoffSrc) << LEFTSHIFT_AMT;
- leftShift = PGSZ - rightShift;
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- bits = 0;
- srcRemaining = widthSrc - srcStart;
- if (xoffSrc > xoffDst)
- {
- bits = *psrc;
- IncSrcPtr
- }
- if (startmask)
- {
- bits1 = BitLeft(bits,leftShift);
- bits = *psrc;
- IncSrcPtr
- bits1 |= BitRight(bits,rightShift);
- *pdst = MROP_MASK(bits1, *pdst, startmask);
- pdst++;
- }
- nlTemp = nlMiddle;
- while (nlTemp)
- {
- nl = nlTemp;
- if (nl > srcRemaining)
- nl = srcRemaining;
-
- nlTemp -= nl;
- srcRemaining -= nl;
-
-#if MROP == Mcopy
-#ifdef LARGE_INSTRUCTION_CACHE
- bits1 = bits;
-
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) \
- bits = psrc[-n]; \
- pdst[-n] = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), pdst[-n]);
-
-#define BodyEven(n) \
- bits1 = psrc[-n]; \
- pdst[-n] = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), pdst[-n]);
-
-#define LoopReset \
- pdst += UNROLL; \
- psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) \
- bits = *psrc++; \
- *pdst = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), *pdst); \
- pdst++;
-
-#define BodyEven(n) \
- bits1 = *psrc++; \
- *pdst = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), *pdst); \
- pdst++;
-
-#define LoopReset ;
-
-#endif /* !FAST_CONSTANT_OFFSET_MODE */
-
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL (nl,label2,
- bits1 = BitLeft(bits, leftShift);
- bits = *psrc++;
- *pdst = MROP_SOLID (bits1 | BitRight(bits, rightShift), *pdst);
- pdst++;
- )
-#endif
-#else
- while (nl--) {
- bits1 = BitLeft(bits, leftShift);
- bits = *psrc++;
- *pdst = MROP_SOLID (bits1 | BitRight(bits, rightShift), *pdst);
- pdst++;
- }
-#endif
- if (!srcRemaining)
- {
- srcRemaining = widthSrc;
- psrc = psrcStart;
- }
- }
-
- if (endmask)
- {
- bits1 = BitLeft(bits, leftShift);
- if (BitLeft(endmask, rightShift))
- {
- bits = *psrc;
- bits1 |= BitRight(bits, rightShift);
- }
- *pdst = MROP_MASK (bits1, *pdst, endmask);
- }
- pdstLine += widthDst;
- psrcLine += widthSrc;
- psrcStart += widthSrc;
- if (++srcy == tileHeight)
- {
- psrcStart = psrcBase;
- psrcLine = psrcStart + srcStart;
- srcy = 0;
- }
- }
- }
- pBox++;
- }
-}
-
-void
-MROP_NAME(cfbFillSpanTile32s) (pDrawable, n, ppt, pwidth, tile, xrot, yrot, alu, planemask)
- DrawablePtr pDrawable;
- int n;
- DDXPointPtr ppt;
- int *pwidth;
- PixmapPtr tile;
- int xrot, yrot;
- int alu;
- unsigned long planemask;
-{
- int tileWidth; /* width of tile */
- int tileHeight; /* height of the tile */
- int widthSrc; /* width in longwords of the source tile */
-
- int widthDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- CfbBits startmask;
- CfbBits endmask;/* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
-
- register int nl; /* loop version of nlMiddle */
- int srcy; /* current tile y position */
- int srcx; /* current tile x position */
- int srcRemaining; /* number of longwords remaining in source */
- int xoffDst, xoffSrc;
- int srcStart; /* number of longwords source offset at left of box */
- int leftShift, rightShift;
-
-#if MROP == 0 && PSZ == 24
- DeclareMergeRop24()
-#else
- MROP_DECLARE_REG()
-#endif
-
- CfbBits *pdstBase; /* pointer to start of dest */
- CfbBits *pdstLine; /* poitner to start of dest box */
- CfbBits *psrcBase; /* pointer to start of source */
- CfbBits *psrcLine; /* pointer to fetch point of source */
- CfbBits *psrcStart; /* pointer to start of source line */
- register CfbBits *pdst;
- register CfbBits *psrc;
- register CfbBits bits, bits1;
- register int nlTemp;
-
-#if MROP == 0 && PSZ == 24
- InitializeMergeRop24 (alu, planemask)
-#else
- MROP_INITIALIZE (alu, planemask)
-#endif
-
- psrcBase = (CfbBits *)tile->devPrivate.ptr;
- tileHeight = tile->drawable.height;
- tileWidth = tile->drawable.width;
-#if PSZ == 24
- widthSrc = tile->devKind / PGSZB;
-#else
- widthSrc = tileWidth >> PWSH;
-#endif
-
- cfbGetLongWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- while (n--)
- {
- w = *pwidth++;
-
- /* set up source */
- modulus (ppt->x - xrot, tileWidth, srcx);
- modulus (ppt->y - yrot, tileHeight, srcy);
-#if PSZ == 24
- xoffSrc = (4 - srcx) & 3;
- srcStart = (srcx * 3) >> 2;
-#else
- xoffSrc = srcx & PIM;
- srcStart = (srcx >> PWSH);
-#endif
- psrcStart = psrcBase + (srcy * widthSrc);
- psrcLine = psrcStart + srcStart;
-
- /* set up dest */
-#if PSZ == 24
- xoffDst = (4 - ppt->x) & 3;
- pdstLine = pdstBase + (ppt->y * widthDst) + ((ppt->x *3) >> 2);
- /* set up masks */
- if (w == 1 && (xoffDst == 0 || xoffDst == 1))
-#else
- xoffDst = ppt->x & PIM;
- pdstLine = pdstBase + (ppt->y * widthDst) + (ppt->x >> PWSH);
- /* set up masks */
- if (xoffDst + w < PPW)
-#endif
- {
- maskpartialbits(ppt->x, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- }
- else
- {
- maskbits (ppt->x, w, startmask, endmask, nlMiddle)
- }
-
- if (xoffSrc == xoffDst)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- srcRemaining = widthSrc - srcStart;
- if (startmask)
- {
- *pdst = MROP_MASK (*psrc, *pdst, startmask);
- pdst++;
- IncSrcPtr
- }
- nlTemp = nlMiddle;
- while (nlTemp)
- {
- nl = nlTemp;
- if (nl > srcRemaining)
- nl = srcRemaining;
-
- nlTemp -= nl;
- srcRemaining -= nl;
-
-#if MROP == Mcopy
-#ifdef LARGE_INSTRUCTION_CACHE
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-#define BodyEven(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) *pdst = MROP_SOLID (*psrc, *pdst); pdst++; psrc++;
-#define BodyEven(n) BodyOdd(n)
-
-#define LoopReset ;
-
-#endif
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL(nl, label1,
- *pdst = MROP_SOLID (*psrc, *pdst);
- pdst++; psrc++;)
-#endif
-#else
- while (nl--) {
- *pdst = MROP_SOLID (*psrc, *pdst);
- pdst++; psrc++;
- }
-#endif
- if (!srcRemaining)
- {
- srcRemaining = widthSrc;
- psrc = psrcStart;
- }
- }
- if (endmask)
- {
- *pdst = MROP_MASK (*psrc, *pdst, endmask);
- }
- }
- else
- {
- if (xoffSrc > xoffDst)
- {
- leftShift = (xoffSrc - xoffDst) << LEFTSHIFT_AMT;
- rightShift = PGSZ - leftShift;
- }
- else
- {
- rightShift = (xoffDst - xoffSrc) << LEFTSHIFT_AMT;
- leftShift = PGSZ - rightShift;
- }
- psrc = psrcLine;
- pdst = pdstLine;
- bits = 0;
- srcRemaining = widthSrc - srcStart;
- if (xoffSrc > xoffDst)
- {
- bits = *psrc;
- IncSrcPtr
- }
- if (startmask)
- {
- bits1 = BitLeft(bits,leftShift);
- bits = *psrc;
- IncSrcPtr
- bits1 |= BitRight(bits,rightShift);
- *pdst = MROP_MASK(bits1, *pdst, startmask);
- pdst++;
- }
- nlTemp = nlMiddle;
- while (nlTemp)
- {
- nl = nlTemp;
- if (nl > srcRemaining)
- nl = srcRemaining;
-
- nlTemp -= nl;
- srcRemaining -= nl;
-
-#if MROP == Mcopy
-#ifdef LARGE_INSTRUCTION_CACHE
- bits1 = bits;
-
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) \
-bits = psrc[-n]; \
-pdst[-n] = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), pdst[-n]);
-
-#define BodyEven(n) \
-bits1 = psrc[-n]; \
-pdst[-n] = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), pdst[-n]);
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) \
-bits = *psrc++; \
-*pdst = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), *pdst); \
-pdst++;
-
-#define BodyEven(n) \
-bits1 = *psrc++; \
-*pdst = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), *pdst); \
-pdst++;
-
-#define LoopReset ;
-
-#endif /* !FAST_CONSTANT_OFFSET_MODE */
-
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL (nl,label2,
- bits1 = BitLeft(bits, leftShift);
- bits = *psrc++;
- *pdst = MROP_SOLID (bits1 | BitRight(bits, rightShift), *pdst);
- pdst++;
- )
-#endif
-#else
- while (nl--) {
- bits1 = BitLeft(bits,leftShift);
- bits = *psrc++;
- *pdst = MROP_SOLID(bits1|BitRight(bits,rightShift), *pdst);
- pdst++;
- }
-#endif
- if (!srcRemaining)
- {
- srcRemaining = widthSrc;
- psrc = psrcStart;
- }
- }
-
- if (endmask)
- {
- bits1 = BitLeft(bits, leftShift);
- if (BitLeft(endmask, rightShift))
- {
- bits = *psrc;
- bits1 |= BitRight(bits, rightShift);
- }
- *pdst = MROP_MASK (bits1, *pdst, endmask);
- }
- }
- ppt++;
- }
-}
diff --git a/nx-X11/programs/Xserver/cfb/cfbunmap.h b/nx-X11/programs/Xserver/cfb/cfbunmap.h
deleted file mode 100644
index bccdf0f0f..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbunmap.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbunmap.h,v 1.6 2003/07/19 13:22:28 tsi Exp $ */
-/*
- * Copyright (C) 1994-1998 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-/*
- * Unmap names
- */
-
-#undef CFBNAME
-#undef CATNAME
-
-#undef QuartetBitsTable
-#undef QuartetPixelMaskTable
-#undef cfb8ClippedLineCopy
-#undef cfb8ClippedLineGeneral
-#undef cfb8ClippedLineXor
-#undef cfb8LineSS1Rect
-#undef cfb8LineSS1RectCopy
-#undef cfb8LineSS1RectGeneral
-#undef cfb8LineSS1RectPreviousCopy
-#undef cfb8LineSS1RectXor
-#undef cfb8SegmentSS1Rect
-#undef cfb8SegmentSS1RectCopy
-#undef cfb8SegmentSS1RectGeneral
-#undef cfb8SegmentSS1RectShiftCopy
-#undef cfb8SegmentSS1RectXor
-#undef cfbAllocatePrivates
-#undef cfbBSFuncRec
-#undef cfbBitBlt
-#undef cfbBresD
-#undef cfbBresS
-#undef cfbChangeWindowAttributes
-#undef cfbClearVisualTypes
-#undef cfbCloseScreen
-#undef cfbCreateDefColormap
-#undef cfbCopyArea
-#undef cfbCopyImagePlane
-#undef cfbCopyPixmap
-#undef cfbCopyPlane
-#undef cfbCopyPlaneReduce
-#undef cfbCopyRotatePixmap
-#undef cfbCopyWindow
-#undef cfbCreateGC
-#undef cfbCreatePixmap
-#undef cfbCreateScreenResources
-#undef cfbCreateWindow
-#undef cfbDestroyPixmap
-#undef cfbDestroyWindow
-#undef cfbDoBitblt
-#undef cfbDoBitbltCopy
-#undef cfbDoBitbltGeneral
-#undef cfbDoBitbltOr
-#undef cfbDoBitbltXor
-#undef cfbExpandDirectColors
-#undef cfbFillBoxSolid
-#undef cfbFillBoxTile32
-#undef cfbFillBoxTile32sCopy
-#undef cfbFillBoxTile32sGeneral
-#undef cfbFillBoxTileOdd
-#undef cfbFillBoxTileOddCopy
-#undef cfbFillBoxTileOddGeneral
-#undef cfbFillPoly1RectCopy
-#undef cfbFillPoly1RectGeneral
-#undef cfbFillRectSolidCopy
-#undef cfbFillRectSolidGeneral
-#undef cfbFillRectSolidXor
-#undef cfbFillRectTile32Copy
-#undef cfbFillRectTile32General
-#undef cfbFillRectTileOdd
-#undef cfbFillSpanTile32sCopy
-#undef cfbFillSpanTile32sGeneral
-#undef cfbFillSpanTileOddCopy
-#undef cfbFillSpanTileOddGeneral
-#undef cfbFinishScreenInit
-#undef cfbGCFuncs
-#undef cfbGCPrivateIndex
-#undef cfbGetImage
-#undef cfbGetScreenPixmap
-#undef cfbGetSpans
-#undef cfbHorzS
-#undef cfbImageGlyphBlt8
-#undef cfbInitializeColormap
-#undef cfbInitVisuals
-#undef cfbInstallColormap
-#undef cfbLineSD
-#undef cfbLineSS
-#undef cfbListInstalledColormaps
-#undef cfbMapWindow
-#undef cfbMatchCommon
-#undef cfbNonTEOps
-#undef cfbNonTEOps1Rect
-#undef cfbPadPixmap
-#undef cfbPaintWindow
-#undef cfbPolyFillArcSolidCopy
-#undef cfbPolyFillArcSolidGeneral
-#undef cfbPolyFillRect
-#undef cfbPolyGlyphBlt8
-#undef cfbPolyGlyphRop8
-#undef cfbPolyPoint
-#undef cfbPositionWindow
-#undef cfbPutImage
-#undef cfbReduceRasterOp
-#undef cfbResolveColor
-#undef cfbRestoreAreas
-#undef cfbSaveAreas
-#undef cfbScreenInit
-#undef cfbScreenPrivateIndex
-#undef cfbSegmentSD
-#undef cfbSegmentSS
-#undef cfbSetScanline
-#undef cfbSetScreenPixmap
-#undef cfbSetSpans
-#undef cfbSetVisualTypes
-#undef cfbSetupScreen
-#undef cfbSolidSpansCopy
-#undef cfbSolidSpansGeneral
-#undef cfbSolidSpansXor
-#undef cfbStippleStack
-#undef cfbStippleStackTE
-#undef cfbTEGlyphBlt
-#undef cfbTEOps
-#undef cfbTEOps1Rect
-#undef cfbTile32FSCopy
-#undef cfbTile32FSGeneral
-#undef cfbUninstallColormap
-#undef cfbUnmapWindow
-#undef cfbUnnaturalStippleFS
-#undef cfbUnnaturalTileFS
-#undef cfbValidateGC
-#undef cfbVertS
-#undef cfbWindowPrivateIndex
-#undef cfbXRotatePixmap
-#undef cfbYRotatePixmap
-#undef cfbZeroPolyArcSS8Copy
-#undef cfbZeroPolyArcSS8General
-#undef cfbZeroPolyArcSS8Xor
-#undef cfbendpartial
-#undef cfbendtab
-#undef cfbmask
-#undef cfbrmask
-#undef cfbstartpartial
-#undef cfbstarttab
diff --git a/nx-X11/programs/Xserver/cfb/cfbwindow.c b/nx-X11/programs/Xserver/cfb/cfbwindow.c
deleted file mode 100644
index 7160f5436..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbwindow.c
+++ /dev/null
@@ -1,337 +0,0 @@
-/* $Xorg: cfbwindow.c,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XFree86: xc/programs/Xserver/cfb/cfbwindow.c,v 1.5tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "cfb.h"
-#include "mistruct.h"
-#include "regionstr.h"
-#include "cfbmskbits.h"
-
-Bool
-cfbCreateWindow(pWin)
- WindowPtr pWin;
-{
- cfbPrivWin *pPrivWin;
-
- pPrivWin = cfbGetWindowPrivate(pWin);
- pPrivWin->pRotatedBorder = NullPixmap;
- pPrivWin->pRotatedBackground = NullPixmap;
- pPrivWin->fastBackground = FALSE;
- pPrivWin->fastBorder = FALSE;
- pPrivWin->oldRotate.x = 0;
- pPrivWin->oldRotate.y = 0;
-
-#ifdef PIXMAP_PER_WINDOW
- /* Setup pointer to Screen pixmap */
- pWin->devPrivates[frameWindowPrivateIndex].ptr =
- (pointer) cfbGetScreenPixmap(pWin->drawable.pScreen);
-#endif
-
- return TRUE;
-}
-
-Bool
-cfbDestroyWindow(pWin)
- WindowPtr pWin;
-{
- cfbPrivWin *pPrivWin;
-
- pPrivWin = cfbGetWindowPrivate(pWin);
-
- if (pPrivWin->pRotatedBorder)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBorder);
- if (pPrivWin->pRotatedBackground)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBackground);
- return(TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-cfbMapWindow(pWindow)
- WindowPtr pWindow;
-{
- return(TRUE);
-}
-
-/* (x, y) is the upper left corner of the window on the screen
- do we really need to pass this? (is it a;ready in pWin->absCorner?)
- we only do the rotation for pixmaps that are 32 bits wide (padded
-or otherwise.)
- cfbChangeWindowAttributes() has already put a copy of the pixmap
-in pPrivWin->pRotated*
-*/
-/*ARGSUSED*/
-Bool
-cfbPositionWindow(pWin, x, y)
- WindowPtr pWin;
- int x, y;
-{
- cfbPrivWin *pPrivWin;
- int setxy = 0;
-
- pPrivWin = cfbGetWindowPrivate(pWin);
- if (pWin->backgroundState == BackgroundPixmap && pPrivWin->fastBackground)
- {
- cfbXRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- cfbYRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- setxy = 1;
- }
-
- if (!pWin->borderIsPixel && pPrivWin->fastBorder)
- {
- while (pWin->backgroundState == ParentRelative)
- pWin = pWin->parent;
- cfbXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- cfbYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- setxy = 1;
- }
- if (setxy)
- {
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-cfbUnmapWindow(pWindow)
- WindowPtr pWindow;
-{
- return (TRUE);
-}
-
-/* UNCLEAN!
- this code calls the bitblt helper code directly.
-
- cfbCopyWindow copies only the parts of the destination that are
-visible in the source.
-*/
-
-
-void
-cfbCopyWindow(pWin, ptOldOrg, prgnSrc)
- WindowPtr pWin;
- DDXPointRec ptOldOrg;
- RegionPtr prgnSrc;
-{
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- RegionRec rgnDst;
- register BoxPtr pbox;
- register int dx, dy;
- register int i, nbox;
- WindowPtr pwinRoot;
-
- pwinRoot = WindowTable[pWin->drawable.pScreen->myNum];
-
- REGION_NULL(pWin->drawable.pScreen, &rgnDst);
-
- dx = ptOldOrg.x - pWin->drawable.x;
- dy = ptOldOrg.y - pWin->drawable.y;
- REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, -dx, -dy);
- REGION_INTERSECT(pWin->drawable.pScreen, &rgnDst, &pWin->borderClip, prgnSrc);
-
- pbox = REGION_RECTS(&rgnDst);
- nbox = REGION_NUM_RECTS(&rgnDst);
- if(!nbox || !(pptSrc = (DDXPointPtr )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec))))
- {
- REGION_UNINIT(pWin->drawable.pScreen, &rgnDst);
- return;
- }
- ppt = pptSrc;
-
- for (i = nbox; --i >= 0; ppt++, pbox++)
- {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- cfbDoBitbltCopy((DrawablePtr)pwinRoot, (DrawablePtr)pwinRoot,
- GXcopy, &rgnDst, pptSrc, ~0L);
- DEALLOCATE_LOCAL(pptSrc);
- REGION_UNINIT(pWin->drawable.pScreen, &rgnDst);
-}
-
-
-
-/* swap in correct PaintWindow* routine. If we can use a fast output
-routine (i.e. the pixmap is paddable to 32 bits), also pre-rotate a copy
-of it in devPrivates[cfbWindowPrivateIndex].ptr.
-*/
-Bool
-cfbChangeWindowAttributes(pWin, mask)
- WindowPtr pWin;
- unsigned long mask;
-{
- register unsigned long index;
- register cfbPrivWin *pPrivWin;
- int width;
- WindowPtr pBgWin;
-
- pPrivWin = cfbGetWindowPrivate(pWin);
-
- /*
- * When background state changes from ParentRelative and
- * we had previously rotated the fast border pixmap to match
- * the parent relative origin, rerotate to match window
- */
- if (mask & (CWBackPixmap | CWBackPixel) &&
- pWin->backgroundState != ParentRelative &&
- pPrivWin->fastBorder &&
- (pPrivWin->oldRotate.x != pWin->drawable.x ||
- pPrivWin->oldRotate.y != pWin->drawable.y))
- {
- cfbXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- cfbYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- while(mask)
- {
- index = lowbit (mask);
- mask &= ~index;
- switch(index)
- {
- case CWBackPixmap:
- if (pWin->backgroundState == None)
- {
- pPrivWin->fastBackground = FALSE;
- }
- else if (pWin->backgroundState == ParentRelative)
- {
- pPrivWin->fastBackground = FALSE;
- /* Rotate border to match parent origin */
- if (pPrivWin->pRotatedBorder) {
- for (pBgWin = pWin->parent;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- cfbXRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.x - pPrivWin->oldRotate.x);
- cfbYRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- }
- }
- else if (((width = (pWin->background.pixmap->drawable.width * PSZ))
- <= PGSZ) && !(width & (width - 1)))
- {
- cfbCopyRotatePixmap(pWin->background.pixmap,
- &pPrivWin->pRotatedBackground,
- pWin->drawable.x,
- pWin->drawable.y);
- if (pPrivWin->pRotatedBackground)
- {
- pPrivWin->fastBackground = TRUE;
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- else
- {
- pPrivWin->fastBackground = FALSE;
- }
- }
- else
- {
- pPrivWin->fastBackground = FALSE;
- }
- break;
-
- case CWBackPixel:
- pPrivWin->fastBackground = FALSE;
- break;
-
- case CWBorderPixmap:
- if (((width = (pWin->border.pixmap->drawable.width * PSZ)) <= PGSZ) &&
- !(width & (width - 1)))
- {
- for (pBgWin = pWin;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- cfbCopyRotatePixmap(pWin->border.pixmap,
- &pPrivWin->pRotatedBorder,
- pBgWin->drawable.x,
- pBgWin->drawable.y);
- if (pPrivWin->pRotatedBorder)
- {
- pPrivWin->fastBorder = TRUE;
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- }
- else
- {
- pPrivWin->fastBorder = FALSE;
- }
- }
- else
- {
- pPrivWin->fastBorder = FALSE;
- }
- break;
- case CWBorderPixel:
- pPrivWin->fastBorder = FALSE;
- break;
- }
- }
- return (TRUE);
-}
-
diff --git a/nx-X11/programs/Xserver/cfb/cfbzerarc.c b/nx-X11/programs/Xserver/cfb/cfbzerarc.c
deleted file mode 100644
index a9e0b2f9d..000000000
--- a/nx-X11/programs/Xserver/cfb/cfbzerarc.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbzerarc.c,v 3.4tsi Exp $ */
-/************************************************************
-
-Copyright 1989, 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.
-
-********************************************************/
-
-/* $Xorg: cfbzerarc.c,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $ */
-
-/* Derived from:
- * "Algorithm for drawing ellipses or hyperbolae with a digital plotter"
- * by M. L. V. Pitteway
- * The Computer Journal, November 1967, Volume 10, Number 3, pp. 282-289
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "cfb.h"
-#include "cfbmskbits.h"
-#include "mizerarc.h"
-#include "cfbrrop.h"
-#include "mi.h"
-
-#ifdef PIXEL_ADDR
-
-static void
-RROP_NAME(cfbZeroArcSS8)(
- DrawablePtr pDraw,
- GCPtr pGC,
- xArc *arc)
-{
- miZeroArcRec info;
- Bool do360;
- register int x;
- PixelType *addrp;
- register PixelType *yorgp, *yorgop;
-#if PSZ == 24
- int xorg, xorg3, xorgo, xorgo3;
- register int xtmp;
-#endif
- RROP_DECLARE
- register int yoffset;
- int npwidth, dyoffset;
- register int y, a, b, d, mask;
- register int k1, k3, dx, dy;
-
- cfbGetPixelWidthAndPointer(pDraw,npwidth, addrp)
-
- RROP_FETCH_GC (pGC);
- do360 = miZeroArcSetup(arc, &info, TRUE);
- yorgp = addrp + ((info.yorg + pDraw->y) * npwidth);
- yorgop = addrp + ((info.yorgo + pDraw->y) * npwidth);
- info.xorg += pDraw->x;
- info.xorgo += pDraw->x;
-#if PSZ == 24
- xorg = info.xorg;
- xorg3 = xorg * 3;
- info.xorg = (info.xorg * 3) >> 2;
- xorgo = info.xorgo;
- xorgo3 = xorgo * 3;
- info.xorgo = (info.xorgo * 3) >> 2;
-#endif
- MIARCSETUP();
- yoffset = y ? npwidth : 0;
- dyoffset = 0;
- mask = info.initialMask;
- if (!(arc->width & 1))
- {
-#if PSZ == 24
- if (mask & 2)
- RROP_SOLID24((yorgp + info.xorgo), xorgo);
- if (mask & 8)
- RROP_SOLID24((yorgop + info.xorgo), xorgo);
-#else
- if (mask & 2)
- RROP_SOLID((yorgp + info.xorgo));
- if (mask & 8)
- RROP_SOLID((yorgop + info.xorgo));
-#endif /* PSZ == 24 */
- }
- if (!info.end.x || !info.end.y)
- {
- mask = info.end.mask;
- info.end = info.altend;
- }
- if (do360 && (arc->width == arc->height) && !(arc->width & 1))
- {
- register int xoffset = npwidth;
-#if PSZ == 24
- PixelType *yorghb = yorgp + (info.h * npwidth);
- register int tmp1, tmp2, tmp1_3, tmp2_3;
-
- tmp1 = xorg + info.h;
- tmp1_3 = tmp1 * 3;
- tmp2 = xorg - info.h;
- tmp2_3 = tmp2 * 3;
- while (1)
- {
- xtmp = (xorg3 + x * 3) >> 2;
- RROP_SOLID24(yorgp + yoffset + xtmp, xorg + x);
- RROP_SOLID24(yorgop - yoffset + xtmp, xorg + x);
- xtmp = (xorg3 - x * 3) >> 2;
- RROP_SOLID24(yorgp + yoffset + xtmp, xorg - x);
- RROP_SOLID24(yorgop - yoffset + xtmp, xorg - x);
- if (a < 0)
- break;
- xtmp = (tmp1_3 - y * 3) >> 2;
- RROP_SOLID24(yorghb - xoffset + xtmp, tmp1 - y);
- RROP_SOLID24(yorghb + xoffset + xtmp, tmp1 - y);
- xtmp = (tmp2_3 + y * 3) >> 2;
- RROP_SOLID24(yorghb - xoffset + xtmp, tmp2 + y);
- RROP_SOLID24(yorghb + xoffset + xtmp, tmp2 + y);
- xoffset += npwidth;
- MIARCCIRCLESTEP(yoffset += npwidth;);
- }
-#else
- PixelType *yorghb = yorgp + (info.h * npwidth) + info.xorg;
- PixelType *yorgohb = yorghb - info.h;
-
- yorgp += info.xorg;
- yorgop += info.xorg;
- yorghb += info.h;
- while (1)
- {
- RROP_SOLID(yorgp + yoffset + x);
- RROP_SOLID(yorgp + yoffset - x);
- RROP_SOLID(yorgop - yoffset - x);
- RROP_SOLID(yorgop - yoffset + x);
- if (a < 0)
- break;
- RROP_SOLID(yorghb - xoffset - y);
- RROP_SOLID(yorgohb - xoffset + y);
- RROP_SOLID(yorgohb + xoffset + y);
- RROP_SOLID(yorghb + xoffset - y);
- xoffset += npwidth;
- MIARCCIRCLESTEP(yoffset += npwidth;);
- }
- yorgp -= info.xorg;
- yorgop -= info.xorg;
-#endif /* PSZ == 24 */
- x = info.w;
- yoffset = info.h * npwidth;
- }
- else if (do360)
- {
- while (y < info.h || x < info.w)
- {
- MIARCOCTANTSHIFT(dyoffset = npwidth;);
-#if PSZ == 24
- xtmp = (xorg3 + x * 3) >> 2;
- RROP_SOLID24(yorgp + yoffset + xtmp, xorg + x);
- RROP_SOLID24(yorgop - yoffset + xtmp, xorg + x);
- xtmp = (xorgo3 - x * 3) >> 2;
- RROP_SOLID24(yorgp + yoffset + xtmp, xorgo - x);
- RROP_SOLID24(yorgop - yoffset + xtmp, xorgo - x);
-#else
- RROP_SOLID(yorgp + yoffset + info.xorg + x);
- RROP_SOLID(yorgp + yoffset + info.xorgo - x);
- RROP_SOLID(yorgop - yoffset + info.xorgo - x);
- RROP_SOLID(yorgop - yoffset + info.xorg + x);
-#endif
- MIARCSTEP(yoffset += dyoffset;, yoffset += npwidth;);
- }
- }
- else
- {
- while (y < info.h || x < info.w)
- {
- MIARCOCTANTSHIFT(dyoffset = npwidth;);
- if ((x == info.start.x) || (y == info.start.y))
- {
- mask = info.start.mask;
- info.start = info.altstart;
- }
-#if PSZ == 24
- if (mask & 1){
- xtmp = (xorg3 + x * 3) >> 2;
- RROP_SOLID24(yorgp + yoffset + xtmp, xorg + x);
- }
- if (mask & 2){
- xtmp = (xorgo3 - x * 3) >> 2;
- RROP_SOLID24(yorgp + yoffset + xtmp, xorgo - x);
- }
- if (mask & 4){
- xtmp = (xorgo3 - x * 3) >> 2;
- RROP_SOLID24(yorgop - yoffset + xtmp, xorgo - x);
- }
- if (mask & 8){
- xtmp = (xorg3 + x * 3) >> 2;
- RROP_SOLID24(yorgop - yoffset + xtmp, xorg + x);
- }
-#else
- if (mask & 1)
- RROP_SOLID(yorgp + yoffset + info.xorg + x);
- if (mask & 2)
- RROP_SOLID(yorgp + yoffset + info.xorgo - x);
- if (mask & 4)
- RROP_SOLID(yorgop - yoffset + info.xorgo - x);
- if (mask & 8)
- RROP_SOLID(yorgop - yoffset + info.xorg + x);
-#endif /* PSZ == 24 */
- if ((x == info.end.x) || (y == info.end.y))
- {
- mask = info.end.mask;
- info.end = info.altend;
- }
- MIARCSTEP(yoffset += dyoffset;, yoffset += npwidth;);
- }
- }
- if ((x == info.start.x) || (y == info.start.y))
- mask = info.start.mask;
-#if PSZ == 24
- if (mask & 1){
- xtmp = (xorg3 + x * 3) >> 2;
- RROP_SOLID24(yorgp + yoffset + xtmp, xorg + x);
- }
- if (mask & 4){
- xtmp = (xorgo3 - x * 3) >> 2;
- RROP_SOLID24(yorgop - yoffset + xtmp, xorgo - x);
- }
-#else
- if (mask & 1)
- RROP_SOLID(yorgp + yoffset + info.xorg + x);
- if (mask & 4)
- RROP_SOLID(yorgop - yoffset + info.xorgo - x);
-#endif /* PSZ == 24 */
- if (arc->height & 1)
- {
-#if PSZ == 24
- if (mask & 2){
- xtmp = (xorgo3 - x * 3) >> 2;
- RROP_SOLID24(yorgp + yoffset + xtmp, xorgo - x);
- }
- if (mask & 8){
- xtmp = (xorg3 + x * 3) >> 2;
- RROP_SOLID24(yorgop - yoffset + xtmp, xorg + x);
- }
-#else
- if (mask & 2)
- RROP_SOLID(yorgp + yoffset + info.xorgo - x);
- if (mask & 8)
- RROP_SOLID(yorgop - yoffset + info.xorg + x);
-#endif /* PSZ == 24 */
- }
- RROP_UNDECLARE
-}
-
-void
-RROP_NAME (cfbZeroPolyArcSS8) (pDraw, pGC, narcs, parcs)
- register DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- register xArc *arc;
- register int i;
- BoxRec box;
- int x2, y2;
- RegionPtr cclip;
-
- cclip = cfbGetCompositeClip(pGC);
- for (arc = parcs, i = narcs; --i >= 0; arc++)
- {
- if (miCanZeroArc(arc))
- {
- box.x1 = arc->x + pDraw->x;
- box.y1 = arc->y + pDraw->y;
- /*
- * Because box.x2 and box.y2 get truncated to 16 bits, and the
- * RECT_IN_REGION test treats the resulting number as a signed
- * integer, the RECT_IN_REGION test alone can go the wrong way.
- * This can result in a server crash because the rendering
- * routines in this file deal directly with cpu addresses
- * of pixels to be stored, and do not clip or otherwise check
- * that all such addresses are within their respective pixmaps.
- * So we only allow the RECT_IN_REGION test to be used for
- * values that can be expressed correctly in a signed short.
- */
- x2 = box.x1 + (int)arc->width + 1;
- box.x2 = x2;
- y2 = box.y1 + (int)arc->height + 1;
- box.y2 = y2;
- if ( (x2 <= MAXSHORT) && (y2 <= MAXSHORT) &&
- (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) )
- RROP_NAME (cfbZeroArcSS8) (pDraw, pGC, arc);
- else
- miZeroPolyArc(pDraw, pGC, 1, arc);
- }
- else
- miPolyArc(pDraw, pGC, 1, arc);
- }
-}
-
-#endif
diff --git a/nx-X11/programs/Xserver/cfb/module/Imakefile b/nx-X11/programs/Xserver/cfb/module/Imakefile
deleted file mode 100644
index feb27baa3..000000000
--- a/nx-X11/programs/Xserver/cfb/module/Imakefile
+++ /dev/null
@@ -1,11 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/cfb/module/Imakefile,v 1.1 2002/05/31 15:12:56 dawes Exp $
-
-#define IHaveModules
-
-#define PixelSize 8
-#define LinkDirectory ..
-#ifdef OS2Architecture
-CFBCMAP = cfbcmap.o
-#endif
-
-#include "../Imakefile.inc"
diff --git a/nx-X11/programs/Xserver/cfb/stip68kgnu.h b/nx-X11/programs/Xserver/cfb/stip68kgnu.h
deleted file mode 100644
index 01bb939e8..000000000
--- a/nx-X11/programs/Xserver/cfb/stip68kgnu.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * $Xorg: stip68kgnu.h,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $
- *
-Copyright 1990, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-/* $XFree86: xc/programs/Xserver/cfb/stip68kgnu.h,v 3.3 2001/01/17 22:36:37 dawes Exp $ */
-
-/*
- * Stipple stack macro for 68k GCC
- */
-
-#define STIPPLE(addr,stipple,value,width,count,shift) \
- __asm volatile ( \
- "lea 5f,%/a1\n\
- moveq #28,%/d2\n\
- addl %2,%/d2\n\
- moveq #28,%/d3\n\
- subql #4,%2\n\
- negl %2\n\
-1:\n\
- movel %0,%/a0\n\
- addl %6,%0\n\
- movel %3@+,%/d1\n\
- jeq 3f\n\
- movel %/d1,%/d0\n\
- lsrl %/d2,%/d0\n\
- lsll #5,%/d0\n\
- lsll %2,%/d1\n\
- jmp %/a1@(%/d0:l)\n\
-2:\n\
- addl #4,%/a0\n\
- movel %/d1,%/d0\n\
- lsrl %/d3,%/d0\n\
- lsll #5,%/d0\n\
- lsll #4,%/d1\n\
- jmp %/a1@(%/d0:l)\n\
-5:\n\
- jne 2b ; dbra %1,1b ; jra 4f\n\
- . = 5b + 0x20\n\
- moveb %5,%/a0@(3)\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f\n\
- . = 5b + 0x40\n\
- moveb %5,%/a0@(2)\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f\n\
- . = 5b + 0x60\n\
- movew %5,%/a0@(2)\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f\n\
- . = 5b + 0x80\n\
- moveb %5,%/a0@(1)\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f ;\n\
- . = 5b + 0xa0\n\
- moveb %5,%/a0@(3) ; moveb %5,%/a0@(1)\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f ;\n\
- . = 5b + 0xc0\n\
- movew %5,%/a0@(1)\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f ;\n\
- . = 5b + 0xe0\n\
- movew %5,%/a0@(2) ; moveb %5,%/a0@(1)\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f ;\n\
- . = 5b + 0x100\n\
- moveb %5,%/a0@\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f ;\n\
- . = 5b + 0x120\n\
- moveb %5,%/a0@(3) ; moveb %5,%/a0@\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f ;\n\
- . = 5b + 0x140\n\
- moveb %5,%/a0@(2) ; moveb %5,%/a0@\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f ;\n\
- . = 5b + 0x160\n\
- movew %5,%/a0@(2) ; moveb %5,%/a0@\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f ;\n\
- . = 5b + 0x180\n\
- movew %5,%/a0@\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f ;\n\
- . = 5b + 0x1a0\n\
- moveb %5,%/a0@(3) ; movew %5,%/a0@\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f ;\n\
- . = 5b + 0x1c0\n\
- moveb %5,%/a0@(2) ; movew %5,%/a0@\n\
- andl %/d1,%/d1 ; jne 2b ; dbra %1,1b ; jra 4f ;\n\
- . = 5b + 0x1e0\n\
- movel %5,%/a0@\n\
- andl %/d1,%/d1 ; jne 2b ; \n\
-3: dbra %1,1b ; \n\
-4:\n"\
- : "=a" (addr), /* %0 */ \
- "=d" (count), /* %1 */ \
- "=d" (shift), /* %2 */ \
- "=a" (stipple) /* %3 */ \
- : "0" (addr), /* %4 */ \
- "d" (value), /* %5 */ \
- "a" (width), /* %6 */ \
- "1" (count-1), /* %7 */ \
- "2" (shift), /* %8 */ \
- "3" (stipple) /* %9 */ \
- : /* ctemp */ "d0", \
- /* c */ "d1", \
- /* lshift */ "d2", \
- /* rshift */ "d3", \
- /* atemp */ "a0", \
- /* case */ "a1")
diff --git a/nx-X11/programs/Xserver/cfb/stipmips.s b/nx-X11/programs/Xserver/cfb/stipmips.s
deleted file mode 100644
index c42d9b5ae..000000000
--- a/nx-X11/programs/Xserver/cfb/stipmips.s
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * $Xorg: stipmips.s,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $
- *
-Copyright 1990, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/*
- * MIPS assembly code for optimized text rendering.
- *
- * Other stippling could be done in assembly, but the payoff is
- * not nearly as large. Mostly because large areas are heavily
- * optimized already.
- */
-
-#ifdef MIPSEL
-# define BitsR sll
-# define BitsL srl
-# define BO(o) o
-# define HO(o) o
-# define WO(o) o
-# define FourBits(dest,bits) and dest, bits, 0xf
-#else
-# define BitsR srl
-# define BitsL sll
-# define BO(o) 3-o
-# define HO(o) 2-o
-# define WO(o) o
-# define FourBits(dest,bits) srl dest, bits, 28
-#endif
-
-/* reordering instructions would be fatal here */
- .set noreorder
-
-
-/*
- * cfbStippleStack(addr, stipple, value, stride, Count, Shift)
- * 4 5 6 7 16(sp) 20(sp)
- *
- * Apply successive 32-bit stipples starting at addr, addr+stride, ...
- *
- * Used for text rendering, but only when no data could be lost
- * when the stipple is shifted left by Shift bits
- */
-/* arguments */
-#define addr $4
-#define stipple $5
-#define value $6
-#define stride $7
-#define Count 16($sp)
-#define Shift 20($sp)
-
-/* local variables */
-#define count $14
-#define shift $13
-#define atemp $12
-#define bits $11
-#define lshift $9
-#define sbase $8
-#define stemp $2
-
-#define CASE_SIZE 5 /* case blocks are 2^5 bytes each */
-#define CASE_MASK 0x1e0 /* first case mask */
-
-#define ForEachLine $200
-#define NextLine $201
-#define NextLine1 $202
-#define CaseBegin $203
-#define ForEachBits $204
-#define ForEachBits1 $205
-#define NextBits $206
-
-#ifdef TETEXT
-#define cfbStippleStack cfbStippleStackTE
-#endif
-
- .globl cfbStippleStack
- .ent cfbStippleStack 2
-cfbStippleStack:
- .frame $sp, 0, $31
- lw count, Count /* fetch stack params */
- la sbase,CaseBegin /* load up switch table */
- lw shift, Shift
- li lshift, 4 /* compute offset within */
- subu lshift, lshift, shift /* stipple of remaining bits */
-#ifdef MIPSEL
- addu shift, shift, CASE_SIZE /* first shift for LSB */
-#else
- addu shift, shift, 28-CASE_SIZE /* first shift for MSB */
-#endif
- /* do ... while (--count > 0); */
-ForEachLine:
- lw bits, 0(stipple) /* get stipple bits */
- move atemp, addr /* set up for this line */
-#ifdef TETEXT
- /* Terminal emulator fonts are expanded and have many 0 rows */
- beqz bits, NextLine /* skip out early on 0 */
-#endif
- addu addr, addr, stride /* step for the loop */
- BitsR stemp, bits, shift /* get first bits */
- and stemp, stemp, CASE_MASK /* compute first branch */
- addu stemp, stemp, sbase /* ... */
- j stemp /* ... */
- BitsL bits, bits, lshift /* set remaining bits */
-
-ForEachBits:
- addu atemp, atemp, 4
-ForEachBits1:
- FourBits(stemp, bits) /* compute jump for */
- sll stemp, stemp, CASE_SIZE /* next four bits */
- addu stemp, stemp, sbase /* ... */
- j stemp /* ... */
- BitsL bits, bits, 4 /* step for remaining bits */
-CaseBegin:
- bnez bits, ForEachBits1 /* 0 */
- addu atemp, atemp, 4
-NextLine:
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
- nop
-
- bnez bits, ForEachBits /* 1 */
- sb value, BO(0)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
- nop
-
- bnez bits, ForEachBits /* 2 */
- sb value, BO(1)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
- nop
-
- bnez bits, ForEachBits /* 3 */
- sh value, HO(0)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
- nop
-
- bnez bits, ForEachBits /* 4 */
- sb value, BO(2)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
- nop
-
- sb value, BO(0)(atemp) /* 5 */
- bnez bits, ForEachBits
- sb value, BO(2)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
-
- sb value, BO(1)(atemp) /* 6 */
- bnez bits, ForEachBits
- sb value, BO(2)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
-
- bnez bits, ForEachBits /* 7 */
- swl value, BO(2)(atemp) /* untested on MSB */
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
- nop
-
- bnez bits, ForEachBits /* 8 */
- sb value, BO(3)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
- nop
-
- sb value, BO(0)(atemp) /* 9 */
- bnez bits, ForEachBits
- sb value, BO(3)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
-
- sb value, BO(1)(atemp) /* a */
- bnez bits, ForEachBits
- sb value, BO(3)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
-
- sh value, HO(0)(atemp) /* b */
- bnez bits, ForEachBits
- sb value, BO(3)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
-
- bnez bits, ForEachBits /* c */
- sh value, HO(2)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
- nop
-
- sb value, BO(0)(atemp) /* d */
- bnez bits, ForEachBits
- sh value, HO(2)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
-
- bnez bits, ForEachBits /* e */
- swr value, BO(1)(atemp) /* untested on MSB */
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
- nop
-
- bnez bits, ForEachBits /* f */
- sw value, WO(0)(atemp)
- addu count, count, -1
- bnez count, ForEachLine
- addu stipple, stipple, 4
- j $31
- nop
- nop
-
- .end cfbStippleStack
diff --git a/nx-X11/programs/Xserver/cfb/stipple68k.s b/nx-X11/programs/Xserver/cfb/stipple68k.s
deleted file mode 100644
index 2f892b386..000000000
--- a/nx-X11/programs/Xserver/cfb/stipple68k.s
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * $Xorg: stipple68k.s,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $
- *
-Copyright 1990, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-/* $XFree86: xc/programs/Xserver/cfb/stipple68k.s,v 3.2 2001/01/17 22:36:38 dawes Exp $ */
-
-/*
- * Stipple code for 68k processors
- */
-
-#ifdef __ELF__
-#ifdef TETEXT
-#define _cfbStippleStack cfbStippleStackTE
-#else
-#define _cfbStippleStack cfbStippleStack
-#endif
-#else
-#ifdef TETEXT
-#define _cfbStippleStack _cfbStippleStackTE
-#endif
-#endif
-
-
-#define atemp a0
-#define addr a1
-#define stipple a2
-#define stride a3
-#define case a4
-
-#define ctemp d0
-#define value d1
-#define count d2
-#define shift d3
-#define c d4
-#define lshift d5
-#define rshift d6
-
-#define PushMask #0x3e38
-#define PopMask #0x1c7c
-#define NumReg 8
-#define arg0 36
-#define arg1 40
-#define arg2 44
-#define arg3 48
-#define arg4 52
-#define arg5 56
-#define arg6 60
-
-#ifdef __ELF__
-#define ForEachLine .L2
-#define ForEachBits .L5
-#define a0 %A0
-#define a1 %A1
-#define a2 %A2
-#define a3 %A3
-#define a4 %A4
-#define a5 %A5
-#define a6 %A6
-#define sp %SP
-#define d0 %D0
-#define d1 %D1
-#define d2 %D2
-#define d3 %D3
-#define d4 %D4
-#define d5 %D5
-#define d6 %D6
-#define d7 %D7
-#else
-#define ForEachLine L2
-#define ForEachBits L5
-#endif
-#define CASE_SIZE 5
-
-.text
- .even
- .globl _cfbStippleStack
-_cfbStippleStack:
- moveml PushMask,sp@-
- movel sp@(arg0),addr
- movel sp@(arg1),stipple
- movel sp@(arg2),value
- movel sp@(arg3),stride
- movew sp@(arg4+2),count
- movel sp@(arg5),shift
- subqw #1,count /* predecrement count */
- lea CaseBegin,case
- movew #28,lshift
- addl shift,lshift
- movew #28,rshift
- subql #4,shift
- negl shift
-ForEachLine:
- movel addr,atemp
- addl stride,addr
- movel stipple@+,c
-#ifdef TETEXT
- jeq NextLine
-#endif
- /* Get first few bits */
- movel c,ctemp
- lsrl lshift,ctemp
- lsll #CASE_SIZE,ctemp
- lsll shift,c /* set up for next bits */
- jmp case@(ctemp:l)
-
-ForEachBits:
- addl #4,atemp
- movel c,ctemp
- lsrl rshift,ctemp /* better than lsrl, andi */
- lsll #CASE_SIZE,ctemp
- lsll #4,c /* set up for next bits */
- jmp case@(ctemp:l)
-
-#define Break \
- andl c,c ; \
- jne ForEachBits ; \
- dbra count,ForEachLine ; \
- moveml sp@+,PopMask ; \
- rts ;
-
-CaseBegin:
- jne ForEachBits /* 0 */
-NextLine:
- dbra count,ForEachLine
- moveml sp@+,PopMask
- rts
-
- . = CaseBegin + 0x20
-
- moveb value,atemp@(3) /* 1 */
- Break
-
- . = CaseBegin + 0x40
-
- moveb value,atemp@(2) /* 2 */
- Break
-
- . = CaseBegin + 0x60
-
- movew value,atemp@(2) /* 3 */
- Break
-
- . = CaseBegin + 0x80
-
- moveb value,atemp@(1) /* 4 */
- Break
-
- . = CaseBegin + 0xa0
-
- moveb value,atemp@(3) /* 5 */
- moveb value,atemp@(1)
- Break
-
- . = CaseBegin + 0xc0
-
- movew value,atemp@(1) /* 6 */
- Break
-
- . = CaseBegin + 0xe0
-
- movew value,atemp@(2) /* 7 */
- moveb value,atemp@(1)
- Break
-
- . = CaseBegin + 0x100
-
- moveb value,atemp@ /* 8 */
- Break
-
- . = CaseBegin + 0x120
-
- moveb value,atemp@(3) /* 9 */
- moveb value,atemp@
- Break
-
- . = CaseBegin + 0x140
-
- moveb value,atemp@(2) /* a */
- moveb value,atemp@
- Break
-
- . = CaseBegin + 0x160
-
- movew value,atemp@(2) /* b */
- moveb value,atemp@
- Break
-
- . = CaseBegin + 0x180
-
- movew value,atemp@ /* c */
- Break
-
- . = CaseBegin + 0x1a0
-
- moveb value,atemp@(3) /* d */
- movew value,atemp@
- Break
-
- . = CaseBegin + 0x1c0
-
- moveb value,atemp@(2) /* e */
- movew value,atemp@
- Break
-
- . = CaseBegin + 0x1e0
-
- movel value,atemp@ /* f */
- Break
diff --git a/nx-X11/programs/Xserver/cfb/stipsparc.s b/nx-X11/programs/Xserver/cfb/stipsparc.s
deleted file mode 100644
index 8ee5e2698..000000000
--- a/nx-X11/programs/Xserver/cfb/stipsparc.s
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * $Xorg: stipsparc.s,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $
- * $XdotOrg: xc/programs/Xserver/cfb/stipsparc.s,v 1.3 2004/04/26 02:39:58 alanc Exp $
- *
-Copyright 1990, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-/* $XFree86: xc/programs/Xserver/cfb/stipsparc.s,v 1.4 2001/01/17 22:36:38 dawes Exp $ */
-
-/*
- * SPARC assembly code for optimized text rendering.
- *
- * Other stippling could be done in assembly, but the payoff is
- * not nearly as large. Mostly because large areas are heavily
- * optimized already.
- */
-
-/* not that I expect to ever see an LSB SPARC, but ... */
-#ifdef LITTLE_ENDIAN
-# define BitsR sll
-# define BitsL srl
-# define BO(o) o
-# define HO(o) o
-# define WO(o) o
-# define FourBits(dest,bits) and bits, 0xf, dest
-#else
-# define BitsR srl
-# define BitsL sll
-# define BO(o) 3-o
-# define HO(o) 2-o
-# define WO(o) o
-# define FourBits(dest,bits) srl bits, 28, dest
-#endif
-
-/*
- * cfbStippleStack(addr, stipple, value, stride, Count, Shift)
- * 4 5 6 7 16(sp) 20(sp)
- *
- * Apply successive 32-bit stipples starting at addr, addr+stride, ...
- *
- * Used for text rendering, but only when no data could be lost
- * when the stipple is shifted left by Shift bits
- */
-/* arguments */
-#define addr %i0
-#define stipple %i1
-#define value %i2
-#define stride %i3
-#define count %i4
-#define shift %i5
-
-/* local variables */
-#define atemp %l0
-#define bits %l1
-#define lshift %l2
-#define sbase %l3
-#define stemp %l4
-
-#define CASE_SIZE 5 /* case blocks are 2^5 bytes each */
-#define CASE_MASK 0x1e0 /* first case mask */
-
-#define ForEachLine LY1
-#define NextLine LY2
-#define CaseBegin LY3
-#define ForEachBits LY4
-#define NextBits LY5
-
-#if defined(SVR4) || defined(__ELF__)
-#ifdef TETEXT
-#define _cfbStippleStack cfbStippleStackTE
-#else
-#define _cfbStippleStack cfbStippleStack
-#endif
-#else
-#ifdef TETEXT
-#define _cfbStippleStack _cfbStippleStackTE
-#endif
-#endif
- .seg "text"
- .proc 16
- .globl _cfbStippleStack
-_cfbStippleStack:
- save %sp,-64,%sp
-#ifdef SHAREDCODE
-1:
- call 2f
- nop
-2:
- mov %o7,sbase /* sbase = 1b(1:) */
- add sbase, CaseBegin-1b, sbase
-#else /* !SHAREDCODE */
- sethi %hi(CaseBegin),sbase /* load up switch table */
- or sbase,%lo(CaseBegin),sbase
-#endif /* SHAREDCODE */
- mov 4,lshift /* compute offset within */
- sub lshift, shift, lshift /* stipple of remaining bits */
-#ifdef LITTLE_ENDIAN
- inc CASE_SIZE, shift /* first shift for LSB */
-#else
- inc 28-CASE_SIZE, shift /* first shift for MSB */
-#endif
- /* do ... while (--count > 0); */
-ForEachLine:
- ld [stipple],bits /* get stipple bits */
- mov addr,atemp /* set up for this line */
-#ifdef TETEXT
- /* Terminal emulator fonts are expanded and have many 0 rows */
- tst bits
- bz NextLine /* skip out early on 0 */
-#endif
- add addr, stride, addr /* step for the loop */
- BitsR bits, shift, stemp /* get first bits */
- and stemp, CASE_MASK, stemp /* compute first jump */
- BitsL bits, lshift, bits /* set remaining bits */
- jmp sbase+stemp /* ... */
- tst bits
-
-ForEachBits:
- inc 4, atemp
-ForEachBits1:
- FourBits(stemp, bits) /* compute jump for */
- sll stemp, CASE_SIZE, stemp /* these four bits */
- BitsL bits, 4, bits /* step for remaining bits */
- jmp sbase+stemp /* jump */
- tst bits
-CaseBegin:
- bnz,a ForEachBits1 /* 0 */
- inc 4, atemp
-NextLine:
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
- nop
-
- bnz ForEachBits /* 1 */
- stb value, [atemp+BO(0)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
- nop
-
- bnz ForEachBits /* 2 */
- stb value, [atemp+BO(1)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
- nop
-
- bnz ForEachBits /* 3 */
- sth value, [atemp+HO(0)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
- nop
-
- bnz ForEachBits /* 4 */
- stb value, [atemp+BO(2)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
- nop
-
- stb value, [atemp+BO(0)] /* 5 */
- bnz ForEachBits
- stb value, [atemp+BO(2)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- stb value, [atemp+BO(1)] /* 6 */
- bnz ForEachBits
- stb value, [atemp+BO(2)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- sth value, [atemp+HO(0)] /* 7 */
- bnz ForEachBits
- stb value, [atemp+BO(2)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- bnz ForEachBits /* 8 */
- stb value, [atemp+BO(3)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
- nop
-
- stb value, [atemp+BO(0)] /* 9 */
- bnz ForEachBits
- stb value, [atemp+BO(3)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- stb value, [atemp+BO(1)] /* a */
- bnz ForEachBits
- stb value, [atemp+BO(3)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- sth value, [atemp+HO(0)] /* b */
- bnz ForEachBits
- stb value, [atemp+BO(3)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- bnz ForEachBits /* c */
- sth value, [atemp+HO(2)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
- nop
-
- stb value, [atemp+BO(0)] /* d */
- bnz ForEachBits
- sth value, [atemp+HO(2)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- stb value, [atemp+BO(1)] /* e */
- bnz ForEachBits
- sth value, [atemp+HO(2)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- bnz ForEachBits /* f */
- st value, [atemp+WO(0)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
diff --git a/nx-X11/programs/Xserver/cfb/stipsprc32.s b/nx-X11/programs/Xserver/cfb/stipsprc32.s
deleted file mode 100644
index 59d953f3b..000000000
--- a/nx-X11/programs/Xserver/cfb/stipsprc32.s
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * $Xorg: stipsprc32.s,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $
- * $XdotOrg: xc/programs/Xserver/cfb/stipsprc32.s,v 1.3 2004/04/26 02:39:58 alanc Exp $
- *
-Copyright 1990, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-/* $XFree86: xc/programs/Xserver/cfb/stipsprc32.s,v 1.4 2001/01/17 22:36:38 dawes Exp $ */
-
-/*
- * SPARC assembly code for optimized text rendering.
- *
- * Other stippling could be done in assembly, but the payoff is
- * not nearly as large. Mostly because large areas are heavily
- * optimized already.
- */
-
-/* not that I expect to ever see an LSB SPARC, but ... */
-#ifdef LITTLE_ENDIAN
-# define BitsR sll
-# define BitsL srl
-# define WO(o) 3-o
-# define FourBits(dest,bits) and bits, 0xf, dest
-#else
-# define BitsR srl
-# define BitsL sll
-# define WO(o) o
-# define FourBits(dest,bits) srl bits, 28, dest
-#endif
-
-/*
- * cfb32StippleStack(addr, stipple, value, stride, Count, Shift)
- * 4 5 6 7 16(sp) 20(sp)
- *
- * Apply successive 32-bit stipples starting at addr, addr+stride, ...
- *
- * Used for text rendering, but only when no data could be lost
- * when the stipple is shifted left by Shift bits
- */
-/* arguments */
-#define addr %i0
-#define stipple %i1
-#define value %i2
-#define stride %i3
-#define count %i4
-#define shift %i5
-
-/* local variables */
-#define atemp %l0
-#define bits %l1
-#define lshift %l2
-#define sbase %l3
-#define stemp %l4
-
-#define CASE_SIZE 5 /* case blocks are 2^5 bytes each */
-#define CASE_MASK 0x1e0 /* first case mask */
-
-#define ForEachLine LY1
-#define NextLine LY2
-#define CaseBegin LY3
-#define ForEachBits LY4
-#define NextBits LY5
-
-#if defined(SVR4) || defined(__ELF__)
-#ifdef TETEXT
-#define _cfb32StippleStack cfb32StippleStackTE
-#else
-#define _cfb32StippleStack cfb32StippleStack
-#endif
-#else
-#ifdef TETEXT
-#define _cfb32StippleStack _cfb32StippleStackTE
-#endif
-#endif
-
- .seg "text"
- .proc 16
- .globl _cfb32StippleStack
-_cfb32StippleStack:
- save %sp,-64,%sp
-#ifdef SHAREDCODE
-1:
- call 2f
- nop
-2:
- mov %o7,sbase /* sbase = 1b(1:) */
- add sbase, CaseBegin-1b, sbase
-#else /* !SHAREDCODE */
- sethi %hi(CaseBegin),sbase /* load up switch table */
- or sbase,%lo(CaseBegin),sbase
-#endif /* !SHAREDCODE */
- mov 4,lshift /* compute offset within */
- sub lshift, shift, lshift /* stipple of remaining bits */
-#ifdef LITTLE_ENDIAN
- inc CASE_SIZE, shift /* first shift for LSB */
-#else
- inc 28-CASE_SIZE, shift /* first shift for MSB */
-#endif
- /* do ... while (--count > 0); */
-ForEachLine:
- ld [stipple],bits /* get stipple bits */
- mov addr,atemp /* set up for this line */
-#ifdef TETEXT
- /* Terminal emulator fonts are expanded and have many 0 rows */
- tst bits
- bz NextLine /* skip out early on 0 */
-#endif
- add addr, stride, addr /* step for the loop */
- BitsR bits, shift, stemp /* get first bits */
- and stemp, CASE_MASK, stemp /* compute first jump */
- BitsL bits, lshift, bits /* set remaining bits */
- jmp sbase+stemp /* ... */
- tst bits
-
-ForEachBits:
- inc 16, atemp
-ForEachBits1:
- FourBits(stemp, bits) /* compute jump for */
- sll stemp, CASE_SIZE, stemp /* these four bits */
- BitsL bits, 4, bits /* step for remaining bits */
- jmp sbase+stemp /* jump */
- tst bits
-CaseBegin:
- bnz,a ForEachBits1 /* 0 */
- inc 16, atemp
-NextLine:
- deccc 1, count
-NextLine1:
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
- nop
-
- bnz ForEachBits /* 1 */
- st value, [atemp+WO(12)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
- nop
-
- bnz ForEachBits /* 2 */
- st value, [atemp+WO(8)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
- nop
-
- st value, [atemp+WO(8)] /* 3 */
- bnz ForEachBits
- st value, [atemp+WO(12)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- bnz ForEachBits /* 4 */
- st value, [atemp+WO(4)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
- nop
-
- st value, [atemp+WO(4)] /* 5 */
- bnz ForEachBits
- st value, [atemp+WO(12)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- st value, [atemp+WO(4)] /* 6 */
- bnz ForEachBits
- st value, [atemp+WO(8)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- st value, [atemp+WO(4)] /* 7 */
- st value, [atemp+WO(8)]
- bnz ForEachBits
- st value, [atemp+WO(12)]
- b NextLine1
- deccc 1, count
- nop
- nop
-
- bnz ForEachBits /* 8 */
- st value, [atemp+WO(0)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
- nop
-
- st value, [atemp+WO(0)] /* 9 */
- bnz ForEachBits
- st value, [atemp+WO(12)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- st value, [atemp+WO(0)] /* a */
- bnz ForEachBits
- st value, [atemp+WO(8)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- st value, [atemp+WO(0)] /* b */
- st value, [atemp+WO(8)]
- bnz ForEachBits
- st value, [atemp+WO(12)]
- b NextLine1
- deccc 1, count
- nop
- nop
-
- st value, [atemp+WO(0)] /* c */
- bnz ForEachBits
- st value, [atemp+WO(4)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
-
- st value, [atemp+WO(0)] /* d */
- st value, [atemp+WO(4)]
- bnz ForEachBits
- st value, [atemp+WO(12)]
- b NextLine1
- deccc 1, count
- nop
- nop
-
- st value, [atemp+WO(0)] /* e */
- st value, [atemp+WO(4)]
- bnz ForEachBits
- st value, [atemp+WO(8)]
- b NextLine1
- deccc 1, count
- nop
- nop
-
- st value, [atemp+WO(0)] /* f */
- st value, [atemp+WO(4)]
- st value, [atemp+WO(8)]
- bnz ForEachBits
- st value, [atemp+WO(12)]
- deccc 1, count
- bnz,a ForEachLine
- inc 4, stipple
- ret
- restore
diff --git a/nx-X11/programs/Xserver/cfb16/Imakefile b/nx-X11/programs/Xserver/cfb16/Imakefile
deleted file mode 100644
index 06f129986..000000000
--- a/nx-X11/programs/Xserver/cfb16/Imakefile
+++ /dev/null
@@ -1,10 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:16 cpqbld Exp $
-
-
-
-XCOMM $XFree86$
-
-#define PixelSize 16
-#define LinkDirectory ../cfb
-
-#include "../cfb/Imakefile.inc"
diff --git a/nx-X11/programs/Xserver/cfb16/cfbmodule.c b/nx-X11/programs/Xserver/cfb16/cfbmodule.c
deleted file mode 100644
index f5ad48f4d..000000000
--- a/nx-X11/programs/Xserver/cfb16/cfbmodule.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb16/cfbmodule.c,v 1.8 1999/01/26 05:53:49 dawes Exp $ */
-/*
- * Copyright (C) 1998 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#define PSZ 16
-
-#ifdef XFree86LOADER
-
-#include "xf86Module.h"
-#include "cfb.h"
-
-static MODULESETUPPROTO(cfb16Setup);
-
-static XF86ModuleVersionInfo VersRec =
-{
- "cfb16",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- 1, 0, 0,
- ABI_CLASS_ANSIC, /* Only need the ansic layer */
- ABI_ANSIC_VERSION,
- MOD_CLASS_NONE,
- {0,0,0,0} /* signature, to be patched into the file by a tool */
-};
-
-XF86ModuleData cfb16ModuleData = { &VersRec, cfb16Setup, NULL };
-
-static pointer
-cfb16Setup(pointer module, pointer opts, int *errmaj, int *errmin)
-{
- /* This modules requires cfb, so load it */
- return LoadSubModule(module, "cfb", NULL, NULL, NULL, NULL,
- errmaj, errmin);
-}
-
-#endif
diff --git a/nx-X11/programs/Xserver/cfb16/module/Imakefile b/nx-X11/programs/Xserver/cfb16/module/Imakefile
deleted file mode 100644
index 55105034f..000000000
--- a/nx-X11/programs/Xserver/cfb16/module/Imakefile
+++ /dev/null
@@ -1,12 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:16 cpqbld Exp $
-
-
-
-XCOMM $XFree86$
-
-#define IHaveModules
-
-#define PixelSize 16
-#define LinkDirectory ../../cfb
-
-#include "../../cfb/Imakefile.inc"
diff --git a/nx-X11/programs/Xserver/cfb24/Imakefile b/nx-X11/programs/Xserver/cfb24/Imakefile
deleted file mode 100644
index af31096be..000000000
--- a/nx-X11/programs/Xserver/cfb24/Imakefile
+++ /dev/null
@@ -1,6 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/cfb24/Imakefile,v 3.1 2002/05/31 15:12:56 dawes Exp $
-
-#define PixelSize 24
-#define LinkDirectory ../cfb
-
-#include "../cfb/Imakefile.inc"
diff --git a/nx-X11/programs/Xserver/cfb24/cfbmodule.c b/nx-X11/programs/Xserver/cfb24/cfbmodule.c
deleted file mode 100644
index c2fb2bcf5..000000000
--- a/nx-X11/programs/Xserver/cfb24/cfbmodule.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb24/cfbmodule.c,v 1.8 1999/01/26 05:53:49 dawes Exp $ */
-/*
- * Copyright (C) 1998 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#define PSZ 24
-
-#ifdef XFree86LOADER
-
-#include "xf86Module.h"
-#include "cfb.h"
-
-static MODULESETUPPROTO(cfb24Setup);
-
-static XF86ModuleVersionInfo VersRec =
-{
- "cfb24",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- 1, 0, 0,
- ABI_CLASS_ANSIC, /* Only need the ansic layer */
- ABI_ANSIC_VERSION,
- MOD_CLASS_NONE,
- {0,0,0,0} /* signature, to be patched into the file by a tool */
-};
-
-XF86ModuleData cfb24ModuleData = { &VersRec, cfb24Setup, NULL };
-
-static pointer
-cfb24Setup(pointer module, pointer opts, int *errmaj, int *errmin)
-{
- /* This modules requires cfb, so load it */
- return LoadSubModule(module, "cfb", NULL, NULL, NULL, NULL,
- errmaj, errmin);
-}
-
-#endif
diff --git a/nx-X11/programs/Xserver/cfb24/cfbrrop24.h b/nx-X11/programs/Xserver/cfb24/cfbrrop24.h
deleted file mode 100644
index 9f15d1a82..000000000
--- a/nx-X11/programs/Xserver/cfb24/cfbrrop24.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb24/cfbrrop24.h,v 3.1tsi Exp $ */
-
-#define RROP_DECLARE \
- unsigned long piQxelAnd[3], piQxelXor[3], spiQxelXor[8];
-
-#define RROP_COPY_SETUP(ptn) \
- spiQxelXor[0] = ptn & 0xFFFFFF; \
- spiQxelXor[2] = ptn << 24; \
- spiQxelXor[3] = (ptn & 0xFFFF00)>> 8; \
- spiQxelXor[4] = ptn << 16; \
- spiQxelXor[5] = (ptn & 0xFF0000)>> 16; \
- spiQxelXor[6] = ptn << 8; \
- spiQxelXor[1] = spiQxelXor[7] = 0;
-
-#define RROP_SOLID24_COPY(dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- *(dst) = (*(dst) & cfbrmask[idx])|spiQxelXor[idx]; \
- idx++; \
- *((dst)+1) = (*((dst)+1) & cfbrmask[idx])|spiQxelXor[idx]; \
- }
-
-#define RROP_SET_SETUP(xor, and) \
- spiQxelXor[0] = xor & 0xFFFFFF; \
- spiQxelXor[1] = xor << 24; \
- spiQxelXor[2] = xor << 16; \
- spiQxelXor[3] = xor << 8; \
- spiQxelXor[4] = (xor >> 8) & 0xFFFF; \
- spiQxelXor[5] = (xor >> 16) & 0xFF; \
- piQxelAnd[0] = (and & 0xFFFFFF)|(and << 24); \
- piQxelAnd[1] = (and << 16)|((and >> 8) & 0xFFFF); \
- piQxelAnd[2] = (and << 8)|((and >> 16) & 0xFF); \
- piQxelXor[0] = (xor & 0xFFFFFF)|(xor << 24); \
- piQxelXor[1] = (xor << 16)|((xor >> 8) & 0xFFFF); \
- piQxelXor[2] = (xor << 8)|((xor >> 16) & 0xFF);
-
-
-#define RROP_SOLID24_SET(dst,index) {\
- switch((index) & 3){ \
- case 0: \
- *(dst) = ((*(dst) & (piQxelAnd[0] |0xFF000000))^(piQxelXor[0] & 0xFFFFFF)); \
- break; \
- case 3: \
- *(dst) = ((*(dst) & (piQxelAnd[2]|0xFF))^(piQxelXor[2] & 0xFFFFFF00)); \
- break; \
- case 1: \
- *(dst) = ((*(dst) & (piQxelAnd[0]|0xFFFFFF))^(piQxelXor[0] & 0xFF000000)); \
- *((dst)+1) = ((*((dst)+1) & (piQxelAnd[1]|0xFFFF0000))^(piQxelXor[1] & 0xFFFF)); \
- break; \
- case 2: \
- *(dst) = ((*(dst) & (piQxelAnd[1]|0xFFFF))^(piQxelXor[1] & 0xFFFF0000)); \
- *((dst)+1) = ((*((dst)+1) & (piQxelAnd[2]|0xFFFFFF00))^(piQxelXor[2] & 0xFF)); \
- break; \
- } \
- }
diff --git a/nx-X11/programs/Xserver/cfb24/module/Imakefile b/nx-X11/programs/Xserver/cfb24/module/Imakefile
deleted file mode 100644
index d9da99214..000000000
--- a/nx-X11/programs/Xserver/cfb24/module/Imakefile
+++ /dev/null
@@ -1,12 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:16 cpqbld Exp $
-
-
-
-XCOMM $XFree86$
-
-#define IHaveModules
-
-#define PixelSize 24
-#define LinkDirectory ../../cfb
-
-#include "../../cfb/Imakefile.inc"
diff --git a/nx-X11/programs/Xserver/cfb32/Imakefile b/nx-X11/programs/Xserver/cfb32/Imakefile
deleted file mode 100644
index 865b714ea..000000000
--- a/nx-X11/programs/Xserver/cfb32/Imakefile
+++ /dev/null
@@ -1,10 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:16 cpqbld Exp $
-
-
-
-XCOMM $XFree86$
-
-#define PixelSize 32
-#define LinkDirectory ../cfb
-
-#include "../cfb/Imakefile.inc"
diff --git a/nx-X11/programs/Xserver/cfb32/cfbmodule.c b/nx-X11/programs/Xserver/cfb32/cfbmodule.c
deleted file mode 100644
index 0ead3ef93..000000000
--- a/nx-X11/programs/Xserver/cfb32/cfbmodule.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $XFree86: xc/programs/Xserver/cfb32/cfbmodule.c,v 1.8 1999/01/26 05:53:49 dawes Exp $ */
-/*
- * Copyright (C) 1998 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#define PSZ 32
-
-#ifdef XFree86LOADER
-
-#include "xf86Module.h"
-#include "cfb.h"
-
-static MODULESETUPPROTO(cfb32Setup);
-
-static XF86ModuleVersionInfo VersRec =
-{
- "cfb32",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- 1, 0, 0,
- ABI_CLASS_ANSIC, /* Only need the ansic layer */
- ABI_ANSIC_VERSION,
- MOD_CLASS_NONE,
- {0,0,0,0} /* signature, to be patched into the file by a tool */
-};
-
-XF86ModuleData cfb32ModuleData = { &VersRec, cfb32Setup, NULL };
-
-static pointer
-cfb32Setup(pointer module, pointer opts, int *errmaj, int *errmin)
-{
- /* This modules requires cfb, so load it */
- return LoadSubModule(module, "cfb", NULL, NULL, NULL, NULL,
- errmaj, errmin);
-}
-
-#endif
diff --git a/nx-X11/programs/Xserver/cfb32/module/Imakefile b/nx-X11/programs/Xserver/cfb32/module/Imakefile
deleted file mode 100644
index 58c6a6f06..000000000
--- a/nx-X11/programs/Xserver/cfb32/module/Imakefile
+++ /dev/null
@@ -1,12 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:16 cpqbld Exp $
-
-
-
-XCOMM $XFree86$
-
-#define IHaveModules
-
-#define PixelSize 32
-#define LinkDirectory ../../cfb
-
-#include "../../cfb/Imakefile.inc"
diff --git a/nx-X11/programs/Xserver/hw/darwin/Imakefile b/nx-X11/programs/Xserver/hw/darwin/Imakefile
deleted file mode 100644
index 213816647..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/Imakefile
+++ /dev/null
@@ -1,92 +0,0 @@
-XCOMM $XdotOrg: xc/programs/Xserver/hw/darwin/Imakefile,v 1.6 2004/11/08 06:35:27 fabbione Exp $
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/Imakefile,v 1.19 2003/05/14 05:27:55 torrey Exp $
-
-#include <Server.tmpl>
-#define IHaveSubdirs
-
-LinkSourceFile(Xorg.man,../xfree86)
-
-/* The version of miinitext.c in mi is built with many extensions off. */
-LinkSourceFile(miinitext.c,$(SERVERSRC)/mi)
-SpecialCObjectRule(miinitext,$(ICONFIGFILES),$(EXT_DEFINES))
-
-#if BuildXInputExt
-XINPUTSRCS = darwinXinput.c
-XINPUTOBJS = darwinXinput.o
-#endif
-
-SRCS = darwin.c \
- darwinEvents.c \
- darwinKeyboard.c \
- miinitext.c \
- $(XINPUTSRCS)
-
-OBJS = darwin.o \
- darwinEvents.o \
- darwinKeyboard.o \
- miinitext.o \
- $(XINPUTOBJS)
-
-INCLUDES = -I. -I$(SERVERSRC)/mi -I$(SERVERSRC)/fb -I$(EXTINCSRC) \
- -I$(SERVERSRC)/render -I$(SERVERSRC)/include -I$(XINCLUDESRC) \
- -I$(SERVERSRC)/os -I$(INCLUDESRC) -I$(FONTINCSRC) \
- -I$(SERVERSRC)/miext/shadow -I$(SERVERSRC)/hw/xfree86 \
- -I$(SERVERSRC)/Xi
-
-OSNAME = OSName
-OSVENDOR = OSVendor
-OSNAMEDEF = -DOSNAME='" $(OSNAME)"' -DOSVENDOR='" $(OSVENDOR)"'
-#if defined(XorgCustomVersion) || defined(XFree86CustomVersion)
-# if defined(XorgCustomVersion)
-CUSTOMVERSION = XorgCustomVersion
-# else
-CUSTOMVERSION = XFree86CustomVersion
-# endif /* XorgCustomVersion */
-CUSTOMVERDEF = -DXORG_CUSTOM_VERSION='$(CUSTOMVERSION)'
-#endif /* XorgCustomVersion || XFree86CustomVersion */
-#if defined(BuilderString)
-BUILDERSTRING = BuilderString
-BUILDERMSG = -DBUILDERSTRING='$(BUILDERSTRING)'
-#endif
-XORGREL = XOrgReleaseString
-XORGREL_DEF = -DXORG_RELEASE="\"$(XORGREL)\""
-
-#if defined(BuildDate)
- BUILD_DATE = BuildDate
-#else
- BUILD_DATE = 0
-#endif
-
-#if defined(ChangelogDate)
- CLOG_DATE = ChangelogDate
-#else
- CLOG_DATE = 0
-#endif
-
-#if OSMajorVersion >= 6
-CLUTDEF = -DUSE_NEW_CLUT
-#endif
-
-#if DarwinQuartzSupport
-SUBDIRS = iokit bundle quartz utils
-QUARTZDEF = -DDARWIN_WITH_QUARTZ
-#else
-SUBDIRS = iokit utils
-#endif
-
-DEFINES = $(QUARTZDEF) $(VENDORSUPPORTDEFS)
-EXTRAMANDEFS = $(QUARTZDEF) -D__logdir__=$(LOGDIRECTORY)
-
-SpecialCObjectRule(darwin,$(ICONFIGFILES),$(OSNAMEDEF) $(BUILDERMSG) \
- $(CUSTOMVERDEF) $(XORGREL_DEF) $(CLUTDEF) $(VENDOR_DEFINES))
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(darwin,$(OBJS))
-
-InstallManPage(XDarwin,$(MANDIR))
-InstallManPage(Xorg,$(MANDIR))
-
-DependTarget()
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
diff --git a/nx-X11/programs/Xserver/hw/darwin/XDarwin.man b/nx-X11/programs/Xserver/hw/darwin/XDarwin.man
deleted file mode 100644
index eb1b9dcb8..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/XDarwin.man
+++ /dev/null
@@ -1,205 +0,0 @@
-.\" $XFree86: xc/programs/Xserver/hw/darwin/XDarwin.man,v 1.3 2001/09/23 23:02:37 torrey Exp $
-.\"
-.TH XDARWIN 1 __vendorversion__
-.SH NAME
-XDarwin \- X window system server for Darwin operating system
-.SH SYNOPSIS
-.B XDarwin
-[ options ] ...
-.SH DESCRIPTION
-#ifdef DARWIN_WITH_QUARTZ
-.I XDarwin
-is the X window server for Mac OS X and the Darwin operating system
-provided by the X.Org Foundation.
-.I XDarwin
-can run in three different modes. On Mac OS X,
-.I XDarwin
-runs in parallel with Aqua in full screen or rootless modes. These modes
-are called Quartz modes, named after the Quartz 2D compositing engine used
-by Aqua. XDarwin can also be run from the Darwin text console in IOKit mode.
-.PP
-When running from the console,
-.I XDarwin
-acts as the window server and uses IOKit services to access the display
-framebuffer, mouse and keyboard and to provide a layer of hardware
-abstraction. In console mode,
-.I XDarwin
-will normally be started by the \fIxdm(1)\fP display manager or by a script
-that runs the program \fIxinit(1)\fP.
-.PP
-When running with the Mac OS X Aqua GUI,
-.I XDarwin
-will normally be started by launching from the Finder, but it may also be
-started from the command line with the \fB\-quartz\fP, \fB\-fullscreen\fP, or
-\fB\-rootless\fP options. Note that the defaults for various command line
-options are set by the
-.I XDarwin
-application preferences in the Quartz modes.
-.PP
-In full screen Quartz mode, when the X Window System is active, it takes over
-the entire screen. CoreGraphics is used to capture and draw to the screen. The
-.I XDarwin
-application allows easy switching between the Mac OS X and X window
-desktops. More information is available in the Help menu of the
-.I XDarwin
-application.
-.PP
-In rootless mode, the X window system and Aqua share your display. The root
-window of the X11 display is the size of the screen and contains all the
-other windows. The X11 root window is not displayed in rootless mode as Aqua
-handles the desktop background.
-#else
-.I XDarwin
-is the X window server for Mac OS X and the Darwin operating system
-provided by the X.Org Foundation. This version of
-.I XDarwin
-can only be started from the Darwin text console. The Mac OS X Aqua GUI, if
-present, must be shut down.
-.I XDarwin
-uses IOKit services to access the display
-framebuffer, mouse and keyboard and to provide a layer of hardware
-abstraction.
-.I XDarwin
-will normally be started by the \fIxdm(1)\fP display manager or by a script
-that runs the program \fIxinit(1)\fP.
-#endif
-.SH OPTIONS
-.PP
-In addition to the normal server options described in the \fIXserver(1)\fP
-manual page, \fIXDarwin\fP accepts the following command line switches:
-.TP 8
-.B \-fakebuttons
-Emulates a 3 button mouse using modifier keys. By default, the Command modifier
-is used to emulate button 2 and Option is used for button 3. Thus, clicking the
-first mouse button while holding down Command will act like clicking
-button 2. Holding down Option will simulate button 3.
-.TP 8
-.B \-nofakebuttons
-Do not emulate a 3 button mouse. This is the default.
-.TP 8
-.B "\-fakemouse2 \fImodifiers\fP"
-Change the modifier keys used to emulate the second mouse button. By default,
-Command is used to emulate the second button. Any combination of the following
-modifier names may be used: Shift, Option, Control, Command, Fn. For example,
-.B \-fakemouse2 """Option,Shift""
-will set holding Option, Shift and clicking on button one as equivalent to
-clicking the second mouse button.
-.TP 8
-.B "\-fakemouse3 \fImodifiers\fP"
-Change the modifier keys used to emulate the third mouse button. By default,
-Option is used to emulate the third button. Any combination of the following
-modifier names may be used: Shift, Option, Control, Command, Fn. For example,
-.B \-fakemouse3 """Control,Shift""
-will set holding Control, Shift and clicking on button one as equivalent to
-clicking the third mouse button.
-.TP 8
-.B "\-keymap \fIfile\fP"
-On startup \fIXDarwin\fP translates a Darwin keymapping into an X keymap.
-The default is to read this keymapping from USA.keymapping. With this option
-the keymapping will be read from \fIfile\fP instead. If the file's path is
-not specified, it will be searched for in Library/Keyboards/ underneath the
-following directories (in order): ~, /, /Network, /System.
-.TP 8
-.B \-nokeymap
-On startup \fIXDarwin\fP translates a Darwin keymapping into an X keymap.
-With this option XDarwin queries the kernel for the current keymapping
-instead of reading it from a file. This will often fail on newer kernels.
-#ifdef DARWIN_WITH_QUARTZ
-.TP 8
-.B "\-size \fIwidth\fP \fIheight\fP"
-Sets the screen resolution for the X server to use.
-Ignored in rootless mode.
-.TP 8
-.B "\-depth \fIdepth\fP"
-Specifies the color bit depth to use. Currently only 8, 15, and 24 color bits
-per pixel are supported.
-Ignored in rootless mode.
-.TP 8
-.B "\-refresh \fIrate\fP"
-Gives the refresh rate to use in Hz. For LCD displays this should be 0.
-Ignored in rootless mode.
-.TP 8
-.B \-fullscreen
-Run full screen in parallel with Mac OS X Aqua GUI.
-.TP 8
-.B \-rootless
-Run rootless inside Mac OS X Aqua GUI.
-.TP 8
-.B \-quartz
-Run in parallel with the Mac OS X Aqua GUI using the default mode.
-#else
-.TP 8
-.B "\-size \fIwidth\fP \fIheight\fP"
-Sets the screen resolution for the X server to use.
-.TP 8
-.B "\-depth \fIdepth\fP"
-Specifies the color bit depth to use. Currently only 8, 15, and 24 color bits
-per pixel are supported.
-.TP 8
-.B "\-refresh \fIrate\fP"
-Gives the refresh rate to use in Hz. For LCD displays this should be 0.
-#endif
-.TP 8
-.B \-showconfig
-Print out the server version and patchlevel.
-.TP 8
-.B \-version
-Same as \fB\-showconfig\fP.
-.SH "SEE ALSO"
-.PP
-X(__miscmansuffix__), Xorg(1), Xserver(1), xdm(1), xinit(1)
-.SH BUGS
-.I XDarwin
-and this man page still have many limitations. Some of the more obvious
-ones are:
-.br
-- The display mode cannot be changed once the X server has started.
-.br
-- A screen saver is not supported.
-.PP
-.SH AUTHORS
-XFree86 was originally ported to Mac OS X Server by John Carmack. Dave
-Zarzycki used this as the basis of his port of XFree86 4.0 to Darwin 1.0.
-Torrey T. Lyons improved and integrated this code into the XFree86
-Project's mainline for the 4.0.2 release.
-.PP
-The following members of the XonX Team contributed to the following
-releases (in alphabetical order):
-.TP 4
-XFree86 4.1.0:
-.br
-Rob Braun - Darwin x86 support
-.br
-Torrey T. Lyons - Project Lead
-.br
-Andreas Monitzer - Cocoa version of XDarwin front end
-.br
-Gregory Robert Parker - Original Quartz implementation
-.br
-Christoph Pfisterer - Dynamic shared X libraries
-.br
-Toshimitsu Tanaka - Japanese localization
-.TP 4
-XFree86 4.2.0:
-.br
-Rob Braun - Darwin x86 support
-.br
-Pablo Di Noto - Spanish localization
-.br
-Paul Edens - Dutch localization
-.br
-Kyunghwan Kim - Korean localization
-.br
-Mario Klebsch - Non-US keyboard support
-.br
-Torrey T. Lyons - Project Lead
-.br
-Andreas Monitzer - German localization
-.br
-Patrik Montgomery - Swedish localization
-.br
-Greg Parker - Rootless support
-.br
-Toshimitsu Tanaka - Japanese localization
-.br
-Olivier Verdier - French localization
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/Credits.rtf b/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/Credits.rtf
deleted file mode 100644
index 5858e5933..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/Credits.rtf
+++ /dev/null
@@ -1,168 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww9000\viewh9000\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Darwin x86 support
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i Spanish localization
-\f0\i0 \
-Paul Edens\
-
-\f2\i Dutch localization
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i Korean localization
-\f0\i0 \
-Mario Klebsch\
-
-\f2\i Non-US keyboard support
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i German localization
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i Swedish localization
-\f0\i0 \
-Greg Parker\
-
-\f2\i Rootless support
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Japanese localization
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i French localization
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i Installer
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Darwin x86 support
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i Cocoa version of XDarwin front end
-\f0\i0 \
-Greg Parker\
-
-\f2\i Original Quartz implementation
-\f0\i0 \
-Christoph Pfisterer\
-
-\f2\i Dynamic shared libraries
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Japanese localization
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-
-\f2\i XDarwin icon
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 History:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-
-\f2\i Original XFree86 port to Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-
-\f2\i XFree86 4.0 port to Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Integration into XFree86 Project for 4.0.2} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/Imakefile b/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/Imakefile
deleted file mode 100644
index d367fbcee..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/Imakefile
+++ /dev/null
@@ -1,36 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile,v 1.1 2001/05/21 01:42:17 torrey Exp $
-
-#include <Server.tmpl>
-
-LinkSourceFile(InfoPlist.strings.cpp,../English.lproj)
-
-INCLUDES = -I$(SERVERSRC)/include
-
-#if defined (XorgVersionString)
-VERS = XorgVersionString
-PRE = XORG_VERSION_SNAP
-NAME = "X Version 11"
-LINK = '<a HREF="http://wiki.x.org/">X.Org Foundation</a>'
-#elif defined XFree86VersionString
-VERS = XFree86VersionString
-PRE = XF86_VERSION_SNAP
-NAME = "XFree86"
-LINK = '<a HREF="http://www.XFree86.Org/">XFree86 Project, Inc.</a>'
-#endif
-DATE = XFree86DateString
-X_DEFS = $(INCLUDES) -DX_VERSION=$(VERS) -DX_PRE_RELEASE=$(PRE) \
- -DX_REL_DATE=$(DATE) -DX_VENDOR_NAME=$(NAME) -DX_VENDOR_LINK=$(LINK)
-
-AllTarget(XDarwinHelp.html)
-CppFileTarget(XDarwinHelp.html,XDarwinHelp.html.cpp,$(X_DEFS), \
- NullParameter)
-
-AllTarget(InfoPlist.strings)
-InfoPlist.strings: InfoPlist.strings.cpp
- RemoveFile($@)
- ClearmakeOSName \
- $(CPP) CppNoLineInfoOption $(X_DEFS) <InfoPlist.strings.cpp | \
- CppSedMagic | sed 's/__quote__/"/g' >$@
-
-clean::
- RemoveFiles(InfoPlist.strings)
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/Localizable.strings b/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/Localizable.strings
deleted file mode 100644
index 6abd91072..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/Localizable.strings
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/classes.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a4e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- IBClasses = (
- {
- ACTIONS = {showHelp = id; };
- CLASS = FirstResponder;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
- CLASS = Preferences;
- LANGUAGE = ObjC;
- OUTLETS = {
- addToPathButton = id;
- addToPathField = id;
- button2ModifiersMatrix = id;
- button3ModifiersMatrix = id;
- depthButton = id;
- displayField = id;
- dockSwitchButton = id;
- fakeButton = id;
- keymapFileField = id;
- modeMatrix = id;
- modeWindowButton = id;
- mouseAccelChangeButton = id;
- startupHelpButton = id;
- switchKeyButton = id;
- systemBeepButton = id;
- useDefaultShellMatrix = id;
- useOtherShellField = id;
- useXineramaButton = id;
- window = id;
- };
- SUPERCLASS = NSObject;
- },
- {
- CLASS = XApplication;
- LANGUAGE = ObjC;
- OUTLETS = {preferences = id; xserver = id; };
- SUPERCLASS = NSApplication;
- },
- {
- ACTIONS = {
- bringAllToFront = id;
- closeHelpAndShow = id;
- itemSelected = id;
- nextWindow = id;
- previousWindow = id;
- showAction = id;
- showSwitchPanel = id;
- startFullScreen = id;
- startRootless = id;
- };
- CLASS = XServer;
- LANGUAGE = ObjC;
- OUTLETS = {
- dockMenu = NSMenu;
- helpWindow = NSWindow;
- modeWindow = NSWindow;
- startFullScreenButton = NSButton;
- startRootlessButton = NSButton;
- startupHelpButton = NSButton;
- startupModeButton = NSButton;
- switchWindow = NSPanel;
- windowMenu = NSMenu;
- windowSeparator = NSMenuItem;
- };
- SUPERCLASS = NSObject;
- }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/objects.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 8e9224cb6..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/objects.nib
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp b/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 1113b8ae6..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-<!-- $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp,v 1.2 2001/11/04 07:02:28 torrey Exp $ -->
-
-<html>
-<head>
-<title>XDarwin Help</title>
-</head>
-<body>
-<center>
- <h1>XDarwin X Server for Mac OS X</h1>
- X_VENDOR_NAME X_VERSION<br>
- Release Date: X_REL_DATE
-</center>
-<h2>Inhoud</h2>
-<ol>
- <li><A HREF="#notice">Belangrijke Informatie</A></li>
- <li><A HREF="#usage">Gebruik</A></li>
- <li><A HREF="#path">Instellen van het Path</A></li>
- <li><A HREF="#prefs">Voorkeursinstellingen</A></li>
- <li><A HREF="#license">Licentie</A></li>
-</ol>
-<center>
- <h2><a NAME="notice">Belangrijke Informatie</a></h2>
-</center>
-<blockquote>
-#if X_PRE_RELEASE
-Dit is een pre-release van XDarwin, waarvoor geen ondersteuning beschikbaar is. Rapporteren van bugs en aanleveren van patches kan op de <A HREF="http://sourceforge.net/projects/xonx/">XonX project pagina</A> bij SourceForge. Kijk alvorens een bug te rapporteren in een pre-release eerst of een nieuwe versie beschikbaar is bij <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> of de X_VENDOR_LINK.
-#else
-Als de server ouder is dan 6-12 maanden, of als uw hardware nieuwer is dan de bovenstaande datum, kijk dan of een nieuwe versie beschikbaar is voor u een probleem aanmeldt. Rapporteren van bugs en aanleveren van patches kan op de <A HREF="http://sourceforge.net/projects/xonx/">XonX project pagina</A> bij SourceForge.
-#endif
-</blockquote>
-<blockquote>
-Deze software is beschikbaar gesteld onder de voorwaarden van de <A HREF="#license">MIT X11 / X Consortium Licentie</A> en is beschikbaar 'AS IS',zonder enige garantie. Lees s.v.p. de <A HREF="#license">Licentie</A> voor gebruik.</blockquote>
-
-<h2><a NAME="usage">Gebruik</a></h2>
-<p>XDarwin is een open-source X server van het <a HREF="http://www.x.org/">X Window Systeem</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin werkt op Mac OS X in schermvullende of rootless modus.</p>
-<p>Het X window systeem in schermvullende modus neemt het hele beeldscherm in beslag. U schakelt terug naar de Mac OS X desktop door de toesten Command-Option-A in te drukken. Deze toetsencombinatie kunt u veranderen in de Voorkeuren. Op de Mac OS X desktop klikt u op de XDarwin icoon in de Dock om weer naar het X window systeem te schakelen. (In de Voorkeuren kunt er voor kiezen om een apart XDarwin schakelpaneel te gebruiken op de Mac OS X desktop.)</p>
-<p>In rootless modus verschijnen het X window systeem en Aqua (de Mac OS X desktop) tegelijk op het scherm. Het achtergrondscherm van X11, waarbinnen alle X11 vensters vallen, is net zo groot als het gehele scherm, maar het achtergrondscherm zelf is onzichtbaar.</p>
-
-<h3>Meerknopsmuis emulatie</h3>
-<p>Voor veel X11 programma's hebt u een 3-knops muis nodig. Met een 1-knops muis kunt u een 3-knops muis nabootsen door een toets in te drukken terwijl u klikt met de muis. Het instellen hiervan kan bij Voorkeuren, "Meerknopsmuis emulatie" in "Algemeen". Emulatie is standaard ingeschakeld: ingedrukt houden van de "command" toets terwijl u klikt emuleert knop 2, ingedrukt houden van "option" emuleert knop 3. Deze toetsen kunt u dus wijzigen in de Voorkeuren. Let op: als u xmodmap gebruikt om de indeling van het toetsenbord te wijzigen, moet u toch de oorspronkelijke toetsen op het toetsenbord gebruiken voor deze functie.</p>
-
-<h2><a NAME="path">Instellen van het Path</a></h2>
-<p>Het path is de lijst van directories waarin gezocht wordt naar commando's. De X11 commando's staan in de directory <code>/usr/X11R6/bin</code>, die dus aan uw path moet worden toegevoegd. XDarwin doet dit automatisch voor u en kan extra directories toevoegen waarin u commando's hebt ge&iuml;nstalleerd.</p>
-
-<p>Ervaren gebruikers zullen het path al correct hebben ingesteld in de configuratiebestanden voor hun shell. In dat geval kunt u XDarwin via de Voorkeuren vertellen het path niet te wijzigen. XDarwin start de eerste X11 clients binnen de standaard login shell van de gebruiker (bij de Voorkeuren kunt u een afwijkende shell opgeven). Het instellen van het path is afhankelijk van de shell. Zie hiervoor de man pages voor de shell.</p>
-
-<p>Het kan handig zijn de manualpages voor X11 toe te voegen aan de lijst waarin gezocht wordt als u documentatie opvraagt. De manualpages voor X11 staan in <code>/usr/X11R6/man</code> en de <code>MANPATH</code> environment variable bevat de lijst van directories waarin naar documentatie wordt gezocht.</p>
-
-<h2><a NAME="prefs">Voorkeursinstellingen</a></h2>
-<p>Een aantal instellingen kan worden gewijzigd door "Voorkeuren..." te kiezen in het "XDarwin" menu. Wijzigingen van de instellingen genoemd onder "Start" gaan pas in als u XDarwin opnieuw hebt gestart. Een wijziging van de overige instellingen is direct effectief. Hier onder vindt u de verschillende mogelijkheden beschreven:</p>
-
-<h3>Algemeen</h3>
-<ul>
- <li><b>Gebruik systeempiep voor X11:</b> Als u dit inschakelt wordt het Mac OS X waarschuwingssignaal ook gebruikt door X11, anders gebruikt X11 een simpele pieptoon (dit is de standaardinstelling).</li>
- <li><b>Wijzigen muis-versnelling door X11 mogelijk:</b> In een standaard X window systeem kan de window manager de muis-versnelling aanpassen. Dit kan verwarrend zijn omdat de snelheid onder X11 dan verschillend kan zijn van de snelheid die u in Mac OS X bij Systeemvoorkeuren hebt ingesteld. Om verwarring te voorkomen is de standaardinstelling dat X11 de versnelling niet kan wijzigen.</li>
- <li><b>Meerknopsmuis emulatie:</b> Dit is hierboven beschreven bij <a HREF="#usage">Gebruik</a>. Als emulatie is ingeschakeld moet u de gekozen toetsen ingedrukt houden terwijl u met de muis klikt om de tweede en derde muisknop na te bootsen.</li>
-</ul>
-
-<h3>Start</h3>
-<ul>
- <li><b>Standaard modus:</b> Hier kiest u de standaard scherm-modus: schermvullend of rootless (hierboven beschreven bij <a HREF="#usage">Gebruik</a>). U kunt ook kiezen tijdens het starten van XDarwin, zie de optie hieronder.</li>
- <li><b>Kies scherm-modus tijdens start:</b> Dit is standaard ingeschakeld zodat u tijdens het starten van XDarwin kunt kiezen tussen schermvullend en rootless scherm-modus. Als u dit uitschakelt start XDarwin in de standaard modus zonder u iets te vragen.</li>
- <li><b>X11 scherm nummer:</b> Met X11 kunnen meerdere schermen worden aangestuurd door verschillende X servers op dezelfde computer. Als u meerdere X servers tegelijk wilt gebruiken stelt u hier het scherm nummer in dat door XDarwin wordt gebruikt.</li>
- <li><b>Xinerama multi-monitor ondersteuning mogelijk:</b> XDarwin ondersteunt het gebruik van meerdere monitoren met Xinerama, waarbij elke monitor wordt gezien als deel van &eacute;&eacute;n groot rechthoekig scherm. U kunt Xinerama hier uitschakelen, maar XDarwin werkt op dit moment zonder Xinerama niet goed met meerdere monitoren. Als u maar 1 monitor gebruikt is deze instelling automatisch uitgeschakeld.</li>
- <li><b>Toetsenbordindeling-bestand:</b> Een toetsenbordindeling-bestand wordt bij het starten geladen en omgezet naar een X11 toetsenbordindeling. Voor verschillende talen vindt u toetsenbordindelingen in de directory <code>/System/Library/Keyboards</code>.</li>
- <li><b>Bij starten eerste X11 clients:</b> Als XDarwin start, wordt <code>xinit</code> uitgevoerd om de X window manager en andere X clients te starten (zie "<code>man xinit</code>"). Voordat XDarwin <code>xinit</code> uitvoert voegt het de opgegeven directories toe aan het path. Standaard wordt alleen <code>/usr/X11R6/bin</code> toegevoegd. U kunt meerdere directories opgeven, gescheiden door een dubbelepunt. X clients worden gestart met de standaard login shell van de gebruiker met gebruik van de configuratiebestanden voor die shell. U kunt een afwijkende shell opgeven.</li>
-</ul>
-
-<h3>Schermvullend</h3>
-<ul>
- <li><b>Toetscombinatie knop:</b> Klik op deze knop om de toetscombinatie te wijzigen waarmee u tussen de Mac OS X desktop en X11 schakelt. Als toetscombinatie kunt u elke combinatie gebruiken van de shift, control, command en option toetsen samen met &eacute;&eacute;n normale toets.</li>
- <li><b>Klikken op icoon in Dock schakelt naar X11:</b> Hiermee is een klik op de XDarwin icoon in de Dock voldoende om naar X11 te schakelen. In sommige versies van Mac OS X verdwijnt soms de cursor als u deze mogelijkheid gebruikt en daarna terugkeert naar de Mac OS X desktop.</li>
- <li><b>Toon help bij schermvullend starten:</b> Hiermee wordt een inleidend scherm getoond als XDarwin schermvullend start.</li>
- <li><b>Kleurdiepte:</b> In de schermvullende modus kan X11 een andere kleurdiepte gebruiken dan Aqua (en de Mac OS X desktop). Als u "Huidig" kiest, neemt XDarwin bij het starten de kleurdiepte over van Aqua. U kunt ook kiezen voor 8, 15 of 24 bits.</li>
-</ul>
-
-<h2><a NAME="license">Licentie</a></h2>
-The main license for XDarwin is one based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
-<H3><A NAME="3"></A>X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>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 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:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>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 X CONSORTIUM 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.</p>
-<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
-
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/Credits.rtf b/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/Credits.rtf
deleted file mode 100644
index 34408e78c..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/Credits.rtf
+++ /dev/null
@@ -1,168 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5160\viewh6300\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Darwin x86 support
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i Spanish localization
-\f0\i0 \
-Paul Edens\
-
-\f2\i Dutch localization
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i Korean localization
-\f0\i0 \
-Mario Klebsch\
-
-\f2\i Non-US keyboard support
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i German localization
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i Swedish localization
-\f0\i0 \
-Greg Parker\
-
-\f2\i Rootless support
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Japanese localization
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i French localization
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i Installer
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Darwin x86 support
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i Cocoa version of XDarwin front end
-\f0\i0 \
-Greg Parker\
-
-\f2\i Original Quartz implementation
-\f0\i0 \
-Christoph Pfisterer\
-
-\f2\i Dynamic shared libraries
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Japanese localization
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-
-\f2\i XDarwin icon
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 History:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-
-\f2\i Original XFree86 port to Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-
-\f2\i XFree86 4.0 port to Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Integration into XFree86 Project for 4.0.2} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile b/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile
deleted file mode 100644
index 66a7a6baf..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile
+++ /dev/null
@@ -1,34 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile,v 1.1 2001/05/21 01:42:17 torrey Exp $
-
-#include <Server.tmpl>
-
-INCLUDES = -I$(SERVERSRC)/include
-
-#if defined (XorgVersionString)
-VERS = XorgVersionString
-PRE = XORG_VERSION_SNAP
-NAME = "X Version 11"
-LINK = '<a HREF="http://wiki.x.org/">X.Org Foundation</a>'
-#elif defined XFree86VersionString
-VERS = XFree86VersionString
-PRE = XF86_VERSION_SNAP
-NAME = "XFree86"
-LINK = '<a HREF="http://www.XFree86.Org/">XFree86 Project, Inc.</a>'
-#endif
-DATE = XFree86DateString
-X_DEFS = $(INCLUDES) -DX_VERSION=$(VERS) -DX_PRE_RELEASE=$(PRE) \
- -DX_REL_DATE=$(DATE) -DX_VENDOR_NAME=$(NAME) -DX_VENDOR_LINK=$(LINK)
-
-AllTarget(XDarwinHelp.html)
-CppFileTarget(XDarwinHelp.html,XDarwinHelp.html.cpp,$(X_DEFS), \
- NullParameter)
-
-AllTarget(InfoPlist.strings)
-InfoPlist.strings: InfoPlist.strings.cpp
- RemoveFile($@)
- ClearmakeOSName \
- $(CPP) CppNoLineInfoOption $(X_DEFS) <InfoPlist.strings.cpp | \
- CppSedMagic | sed 's/__quote__/"/g' >$@
-
-clean::
- RemoveFiles(InfoPlist.strings)
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp b/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp
deleted file mode 100644
index aeb210342..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp
+++ /dev/null
@@ -1,5 +0,0 @@
-/* English versions of the Info.plist keys; used by most localizations. */
-/* Most of these are set in the target application settings. */
-/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp,v 1.3 2002/07/17 01:24:55 torrey Exp $ */
-
-NSHumanReadableCopyright = __quote__ X_VENDOR_NAME X_VERSION __quote__;
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/Localizable.strings b/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/Localizable.strings
deleted file mode 100644
index 2c25c1dc3..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/Localizable.strings
+++ /dev/null
@@ -1,23 +0,0 @@
-/* English localized versions of strings used by the Mac OS X front end. */
-/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/Localizable.strings,v 1.3 2002/01/30 06:50:46 torrey Exp $ */
-
-/* Title of alert panel */
-"Quit X server?" = "Quit X server?";
-
-/* Text of alert panel */
-"Quitting the X server will terminate any running X Window System programs." = "Quitting the X server will terminate any running X Window System programs.";
-
-/* Quit */
-"Quit" = "Quit";
-
-/* Cancel */
-"Cancel" = "Cancel";
-
-/* Default keymapping file */
-"USA.keymapping" = "USA.keymapping";
-
-/* Default switch string */
-"Cmd-Opt-a" = "Cmd-Opt-a";
-
-/* Button title when changing switch key */
-"Press key" = "Press key";
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/MainMenu.nib/classes.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a4e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- IBClasses = (
- {
- ACTIONS = {showHelp = id; };
- CLASS = FirstResponder;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
- CLASS = Preferences;
- LANGUAGE = ObjC;
- OUTLETS = {
- addToPathButton = id;
- addToPathField = id;
- button2ModifiersMatrix = id;
- button3ModifiersMatrix = id;
- depthButton = id;
- displayField = id;
- dockSwitchButton = id;
- fakeButton = id;
- keymapFileField = id;
- modeMatrix = id;
- modeWindowButton = id;
- mouseAccelChangeButton = id;
- startupHelpButton = id;
- switchKeyButton = id;
- systemBeepButton = id;
- useDefaultShellMatrix = id;
- useOtherShellField = id;
- useXineramaButton = id;
- window = id;
- };
- SUPERCLASS = NSObject;
- },
- {
- CLASS = XApplication;
- LANGUAGE = ObjC;
- OUTLETS = {preferences = id; xserver = id; };
- SUPERCLASS = NSApplication;
- },
- {
- ACTIONS = {
- bringAllToFront = id;
- closeHelpAndShow = id;
- itemSelected = id;
- nextWindow = id;
- previousWindow = id;
- showAction = id;
- showSwitchPanel = id;
- startFullScreen = id;
- startRootless = id;
- };
- CLASS = XServer;
- LANGUAGE = ObjC;
- OUTLETS = {
- dockMenu = NSMenu;
- helpWindow = NSWindow;
- modeWindow = NSWindow;
- startFullScreenButton = NSButton;
- startRootlessButton = NSButton;
- startupHelpButton = NSButton;
- startupModeButton = NSButton;
- switchWindow = NSPanel;
- windowMenu = NSMenu;
- windowSeparator = NSMenuItem;
- };
- SUPERCLASS = NSObject;
- }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/MainMenu.nib/objects.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index ebbfd8317..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/MainMenu.nib/objects.nib
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp b/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 5996285ae..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-<!-- $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp,v 1.1 2001/05/21 01:42:17 torrey Exp $ -->
-
-<html>
-<head>
-<title>XDarwin Help</title>
-</head>
-<body>
-<center>
- <h1>XDarwin X Server for Mac OS X</h1>
- X_VENDOR_NAME X_VERSION<br>
- Release Date: X_REL_DATE
-</center>
-<h2>Contents</h2>
-<ol>
- <li><A HREF="#notice">Important Notice</A></li>
- <li><A HREF="#usage">Usage</A></li>
- <li><A HREF="#path">Setting Your Path</A></li>
- <li><A HREF="#prefs">User Preferences</A></li>
- <li><A HREF="#license">License</A></li>
-</ol>
-<center>
- <h2><a NAME="notice">Important Notice</a></h2>
-</center>
-<blockquote>
-#if X_PRE_RELEASE
-This is a pre-release version of XDarwin, and is not supported in any way. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge. Before reporting bugs in pre-release versions, please check the latest version from <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> or the X_VENDOR_LINK.
-#else
-If the server is older than 6-12 months, or if your hardware is newer than the above date, look for a newer version before reporting problems. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge.
-#endif
-</blockquote>
-<blockquote>
-This software is distributed under the terms of the <A HREF="#license">MIT X11 / X Consortium License</A> and is provided AS IS, with no warranty. Please read the <A HREF="#license">License</A> before using.</blockquote>
-
-<h2><a NAME="usage">Usage</a></h2>
-<p>XDarwin is a freely redistributable open-source X server for the <a HREF="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin runs on Mac OS X in full screen or rootless modes.</p>
-<p>In full screen mode, when the X window system is active, it takes over the entire screen. You can switch back to the Mac OS X desktop by holding down Command-Option-A. This key combination can be changed in the user preferences. From the Mac OS X desktop, click on the XDarwin icon in the Dock to switch back to the X window system. (You can change this behavior in the user preferences so that you must click the XDarwin icon in the floating switch window instead.)</p>
-<p>In rootless mode, the X window system and Aqua share your display. The root window of the X11 display is the size of the screen and contains all the other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background.</p>
-<h3>Multi-Button Mouse Emulation</h3>
-<p>Many X11 applications rely on the use of a 3-button mouse. You can emulate a 3-button mouse with a single button by holding down various modifier keys while you click the mouse button. This is controlled by settings in the "Multi-Button Mouse Emulation" section of the "General" preferences. By default, emulation is on and holding down the command key and clicking the mouse button will simulate clicking the second mouse button. Holding down the option key and clicking will simulate the third button. You can change to any combination of modifiers to emulate buttons two and three in the preferences. Note, even if the modifiers keys are mapped to some other key with xmodmap, you still must use the actual keys specified in the preferences for multi-button mouse emulation.</p>
-
-<h2><a NAME="path">Setting Your Path</a></h2>
-<p>Your path is the list of directories to be searched for executable commands. The X11 commands are located in <code>/usr/X11R6/bin</code>, which needs to be added to your path. XDarwin does this for you by default and can also add additional directories where you have installed command line applications.</p>
-<p>More experienced users will have already set their path correctly using the initialization files for their shell. In this case, you can inform XDarwin not to modify your path in the preferences. XDarwin launches the initial X11 clients in the user's default login shell. (An alternate shell can also be specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell.</p>
-<p>In addition you may also want to add the X11 man pages to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in <code>/usr/X11R6/man</code> and the <code>MANPATH</code> environment variable contains the list of directories to search.</p>
-
-<h2><a NAME="prefs">User Preferences</a></h2>
-<p>A number of options may be set from the user preferences, accessible from the "Preferences..." menu item in the "XDarwin" menu. The options listed as start up options will not take effect until you have restarted XDarwin. All other options take effect immediately. The various options are described below:</p>
-<h3>General</h3>
-<ul>
- <li><b>Use System beep for X11:</b> When enabled the standard Mac OS X alert sound is used as the X11 bell. When disabled (default) a simple tone is used.</li>
- <li><b>Allow X11 to change mouse acceleration:</b> In a standard X window system implementation, the window manager can change the mouse acceleration. This can lead to confusion as the mouse acceleration may be set to different values by the Mac OS X System Preferences and the X window manager. By default, X11 is not allowed to change the mouse acceleration to avoid this problem.</li>
- <li><b>Multi-Button Mouse Emulation:</b> This is described above under <a HREF="#usage">Usage</a>. When emulation is enabled the selected modifiers must be held down when the mouse button is pushed to emulate the second or third mouse buttons.</li>
-</ul>
-<h3>Start Up</h3>
-<ul>
- <li><b>Default Mode:</b> If the user does not indicate whether to run in full screen or rootless mode, the mode specified here will be used.</li>
- <li><b>Show mode pick panel on startup:</b> By default, a panel is displayed when XDarwin is started to allow the user to choose between full screen or rootless mode. If this option is turned off, the default mode will be started automatically.</li>
- <li><b>X11 Display number:</b> X11 allows there to be multiple displays managed by separate X servers on a single computer. The user may specify an integer display number for XDarwin to use if more than one X server is going to be run simultaneously.</li>
- <li><b>Allow Xinerama multiple monitor support:</b> XDarwin supports multiple monitors with Xinerama, which treats all monitors as being part of one large rectangular screen. You can disable Xinerama with this option, but currently XDarwin does not handle multiple monitors correctly without it. If you only have a single monitor, Xinerama is automatically disabled.</li>
- <li><b>Keymapping File:</b> A keymapping file is read at startup and translated to an X11 keymap. Keymapping files, available for a wide variety of languages, are found in <code>/System/Library/Keyboards</code>.</li>
- <li><b>Starting First X11 Clients:</b> When XDarwin is started from the Finder, it will run <code>xinit</code> to launch the X window manager and other X clients. (See "<code>man xinit</code>" for more information.) Before XDarwin runs <code>xinit</code> it will add the specified directories to the user's path. By default only <code>/usr/X11R6/bin</code> is added. Additional directories may added, separated by a colon. The X clients are started in the user's default login shell so that the user's shell initialization files are read. If desired, an alternate shell may be specified.</li>
-</ul>
-<h3>Full Screen</h3>
-<ul>
- <li><b>Key combination button:</b> Click this button and then press any number of modifiers followed by a standard key to change the key combination to switch between Aqua and X11.</li>
- <li><b>Click on icon in Dock switches to X11:</b> Enable this to activate switching to X11 by clicking on the XDarwin icon in the Dock. On some versions of Mac OS X, switching by clicking in the Dock can cause the cursor to disappear on returning to Aqua.</li>
- <li><b>Show help on startup:</b> This will show an introductory splash screen when XDarwin is started in full screen mode.</li>
- <li><b>Color bit depth:</b> In full screen mode, the X11 display can use a different color bit depth than is used by Aqua. If "Current" is specified, the depth used by Aqua when XDarwin starts will be used. Otherwise 8, 15, or 24 bits may be specified.</li>
-</ul>
-
-<h2><a NAME="license">License</a></h2>
-The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
-<H3><A NAME="3"></A>X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>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 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:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>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 X CONSORTIUM 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.</p>
-<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/Credits.rtf b/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/Credits.rtf
deleted file mode 100644
index 17e0a0d70..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/Credits.rtf
+++ /dev/null
@@ -1,166 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5160\viewh4480\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 \
-Participants \'88 XonX pour XFree86 4.2 :
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Version pour Darwin x86
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i Traduction en espagnol
-\f0\i0 \
-Paul Edens\
-
-\f2\i Traduction en allemand
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i Traduction en cor\'8een
-\f0\i0 \
-Mario Klebsch\
-
-\f2\i Claviers non-US
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Direction du projet
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i Traduction en allemand
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i Traduction en su\'8edois
-\f0\i0 \
-Greg Parker\
-
-\f2\i Version \'c7 rootless \'c8
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Traduction en japonais
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i Traduction en fran\'8dais
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Remerciements :
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman et Zero G Software, Inc.\
-
-\f2\i Installeur
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Participants \'88 XonX pour XFree86 4.2 :
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Version pour Darwin x86
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Direction du projet
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i Version Cocoa de l'interface de XDarwin
-\f0\i0 \
-Greg Parker\
-
-\f2\i Impl\'8ementation initiale sur Quartz
-\f0\i0 \
-Christoph Pfisterer\
-
-\f2\i Librairies partag\'8ees dynamiquement
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Traduction en japonais
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Remerciements :
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
- Ic\'99ne
-\f2\i XDarwin
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Historique :
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-
-\f2\i Premi\'8fre adaptation de XFree86 sur Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-
-\f2\i Adaptation de Free86 4.0 pour Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Int\'8egration dans le projet XFree86 pour la version 4.0.2} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/Imakefile b/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/Imakefile
deleted file mode 100644
index d367fbcee..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/Imakefile
+++ /dev/null
@@ -1,36 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile,v 1.1 2001/05/21 01:42:17 torrey Exp $
-
-#include <Server.tmpl>
-
-LinkSourceFile(InfoPlist.strings.cpp,../English.lproj)
-
-INCLUDES = -I$(SERVERSRC)/include
-
-#if defined (XorgVersionString)
-VERS = XorgVersionString
-PRE = XORG_VERSION_SNAP
-NAME = "X Version 11"
-LINK = '<a HREF="http://wiki.x.org/">X.Org Foundation</a>'
-#elif defined XFree86VersionString
-VERS = XFree86VersionString
-PRE = XF86_VERSION_SNAP
-NAME = "XFree86"
-LINK = '<a HREF="http://www.XFree86.Org/">XFree86 Project, Inc.</a>'
-#endif
-DATE = XFree86DateString
-X_DEFS = $(INCLUDES) -DX_VERSION=$(VERS) -DX_PRE_RELEASE=$(PRE) \
- -DX_REL_DATE=$(DATE) -DX_VENDOR_NAME=$(NAME) -DX_VENDOR_LINK=$(LINK)
-
-AllTarget(XDarwinHelp.html)
-CppFileTarget(XDarwinHelp.html,XDarwinHelp.html.cpp,$(X_DEFS), \
- NullParameter)
-
-AllTarget(InfoPlist.strings)
-InfoPlist.strings: InfoPlist.strings.cpp
- RemoveFile($@)
- ClearmakeOSName \
- $(CPP) CppNoLineInfoOption $(X_DEFS) <InfoPlist.strings.cpp | \
- CppSedMagic | sed 's/__quote__/"/g' >$@
-
-clean::
- RemoveFiles(InfoPlist.strings)
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/Localizable.strings b/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/Localizable.strings
deleted file mode 100644
index 21c4a99c1..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/Localizable.strings
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/MainMenu.nib/classes.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a4e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- IBClasses = (
- {
- ACTIONS = {showHelp = id; };
- CLASS = FirstResponder;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
- CLASS = Preferences;
- LANGUAGE = ObjC;
- OUTLETS = {
- addToPathButton = id;
- addToPathField = id;
- button2ModifiersMatrix = id;
- button3ModifiersMatrix = id;
- depthButton = id;
- displayField = id;
- dockSwitchButton = id;
- fakeButton = id;
- keymapFileField = id;
- modeMatrix = id;
- modeWindowButton = id;
- mouseAccelChangeButton = id;
- startupHelpButton = id;
- switchKeyButton = id;
- systemBeepButton = id;
- useDefaultShellMatrix = id;
- useOtherShellField = id;
- useXineramaButton = id;
- window = id;
- };
- SUPERCLASS = NSObject;
- },
- {
- CLASS = XApplication;
- LANGUAGE = ObjC;
- OUTLETS = {preferences = id; xserver = id; };
- SUPERCLASS = NSApplication;
- },
- {
- ACTIONS = {
- bringAllToFront = id;
- closeHelpAndShow = id;
- itemSelected = id;
- nextWindow = id;
- previousWindow = id;
- showAction = id;
- showSwitchPanel = id;
- startFullScreen = id;
- startRootless = id;
- };
- CLASS = XServer;
- LANGUAGE = ObjC;
- OUTLETS = {
- dockMenu = NSMenu;
- helpWindow = NSWindow;
- modeWindow = NSWindow;
- startFullScreenButton = NSButton;
- startRootlessButton = NSButton;
- startupHelpButton = NSButton;
- startupModeButton = NSButton;
- switchWindow = NSPanel;
- windowMenu = NSMenu;
- windowSeparator = NSMenuItem;
- };
- SUPERCLASS = NSObject;
- }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/MainMenu.nib/objects.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 109d5cc6f..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/MainMenu.nib/objects.nib
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp b/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 2a14793db..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-<!-- $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp,v 1.2 2001/11/04 07:02:28 torrey Exp $ -->
-
-<html>
-<head><META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">
-<title>XDarwin Help</title>
-</head>
-<body>
-<center>
- <h1>XDarwin X Server pour Mac OS X</h1>
- X_VENDOR_NAME X_VERSION<br>
- Date : X_REL_DATE
-</center>
-<h2>Sommaire</h2>
-<ol>
- <li><A HREF="#notice">Avertissement</A></li>
- <li><A HREF="#usage">Utilisation</A></li>
- <li><A HREF="#path">Chemins d'accès</A></li>
- <li><A HREF="#prefs">Préférences</A></li>
- <li><A HREF="#license">Licence</A></li>
-</ol>
-<center>
- <h2><a NAME="notice">Avertissement</a></h2>
-</center>
-<blockquote>
-#if PRE_RELEASE
-Ceci est une pré-version de XDarwin et ne fait par conséquent l'objet d'aucun support client. Les bogues peuvent être signalés et des patches peuvent être soumis sur la
-<A HREF="http://sourceforge.net/projects/xonx/">page du projet XonX</A> chez SourceForge. Veuillez prendre connaissance de la dernière version sur <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> ou le X_VENDOR_LINK avant de signaler un bogue d'une pré-version.
-#else
-Si le serveur date de plus de 6-12 mois ou si votre matériel est plus récent que la date indiquée ci-dessus, veuillez vous procurer une version plus récente avant de signaler toute anomalie. Les bogues peuvent être signalés et des patches peuvent être soumis sur la <A HREF="http://sourceforge.net/projects/xonx/">page du projet XonX</A> chez SourceForge.
-#endif
-</blockquote>
-<blockquote>
-Ce logiciel est distribué sous la
-<A HREF="#license">Licence du Consortium X/X11 du MIT</A> et est fourni TEL QUEL, sans garanties. Veuillez prendre connaissance de la <A HREF="#license">Licence</A> avant toute utilisation.</blockquote>
-
-<h2><a NAME="usage">Utilisation</a></h2>
-<p>XDarwin est une X server libre et distribuable sans contrainte du <a HREF
-="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin fonctionne sous Mac OS X en mode « rootless » ou plein écran.</p>
-<p>Lorsque le système X window est actif en mode plein écran, il prend en charge la totalité de l'écran. Il est possible de revenir sur le bureau de Mac OS X en appuyant sur Commande-Option-A. Cette combinaison de touches peut être modifiée dans les préférences. Pour revenir dans X window, cliquer sur l'icône de XDarwin dans le Dock de Mac OS X. (Un réglage des préférences permet d'effectuer cette opération en cliquant dans une fenêtre flottante au lieu de l'icône du Dock)</p>
-<p>En mode « rootless », X window system et Aqua utilisent le même affichage. La fenêtre-mère de l'affichage X11 est de la taille de l'écran et contient toutes les autre fenêtres. En mode « rootless » cette fenêtre-mère n'est pas affichée car Aqua gère le fond d'écran.</p>
-<h3>Émulation de souris à plusieurs boutons</h3>
-<p>Le fonctionnement de la plupart des applications X11 repose sur l'utilisation d'une souris à 3 boutons. Il est possible d'émuler une souris à 3 boutons avec un seul bouton en appuyant sur des touches de modification. Ceci est réglé dans la section "Émulation de souris à plusieurs boutons" de l'onglet "Général" des préférences. L'émulation est activée par défaut. Dans ce cas, cliquer en appuyant simultanément sur la touche "commande" simulera le bouton du milieu. Cliquer en appuyant simultanément sur la touche "option" simulera le bouton de droite. Les préférences permettent de régler n'importe quelle combinaison de touches de modification pour émuler les boutons du milieu et de droite. Notez que même si les touches de modifications sont mises en correspondance avec d'autres touches par xmodmap, ce sont les touches originelles spécifiées dans les préférences qui assureront l'émulation d'une souris à plusieurs boutons.
-
-<h2><a NAME="path">Réglage du chemin d'accès</a></h2>
-<p>Le chemin d'accès est une liste de répertoires utilisés pour la recherche d'exécutables. Les commandes X11 sont situées dans <code>/usr/X11R6/bin</code>, qui doit être ajouté à votre chemin d'accès. XDarwin fait cela par défaut, et peut également ajouter d'autres répertoires dans lesquels vous auriez installé d'autre commandes unix.</p>
-<p>Les utilisateurs plus expérimentés auront déjà réglé leur chemin d'accès correctement par le biais des fichiers d'initialisation de leur shell. Dans ce cas, il est possible de demander à XDarwin de ne pas modifier le chemin d'accès initial. XDarwin lance les premiers clients X11 dans le shell d'ouverture de session par défaut. (Un shell de remplacement peut être spécifié dans les préférences.) La façon de régler le chemin d'accès dépend du shell utilisé. Ceci est documenté dans les pages "man" du shell.</p>
-<p>De plus, il est possible d'ajouter les pages "man" de X11 à la liste des pages recherchées pour la documentation "man". Les pages "man" X11 se trouvent dans <code>/usr/X11R6/man</code> et la variable d'environnement <code>MANPATH</code> contient la liste des répertoires dans lesquels chercher.</p>
-
-
-<h2><a NAME="prefs">Préférences</a></h2>
-<p>Un certain nombre d'options peuvent être réglées dans les préférences. On accède aux préférences en choisissant "Préférences..." dans le menu "XDarwin". Les options décrites comme options de démarrage ne prendront pas effet avant le redémarrage de XDarwin. Les autres options prennent immédiatement effet. Les différentes options sont détaillées ci-après :</p>
-<h3>Général</h3>
-<ul>
- <li><b>Utiliser le bip d'alerte Système dans X11 :</b> Cocher cette option pour que le son d'alerte standard de Mac OS X soit utilisé à la place du son d'alerte de X11. L'option n'est pas cochée ar défaut. Dans ce cas, un simple signal sonore est utilisé.</li>
- <li><b>Autoriser X11 à changer la vitesse de la souris :</b> Dans une implémentation classique du sytème X window, le gestionnaire de fenêtres peut modifier la vitesse de la souris. Cela peut s'avérer déroutant puisque le réglage de la vitesse de la souris peut être différent dans les préférences de Mac OS X et dans le gestionnaire X window. Par défaut, X11 n'est pas autorisé à changer la vitesse de la souris.</li>
- <li><b>Émulation de souris à plusieurs boutons :</b> Ceci est décrit ci-dessus à la rubrique <a HREF="#usage">Usage</a>. Lorsque l'émulation est activée, il suffit d'appuyer simultanément sur les touches modificatrices sélectionnées et sur le bouton de la souris afin d'émuler les boutons du milieu et de droite.</li>
-</ul>
-<h3>Démarrage</h3>
-<ul>
- <li><b>Mode par défaut :</b> Le mode spécifié à cet endroit sera utilisé si l'utilisateur ne l'indique pas au démarrage.</li>
- <li><b>Choix du mode d'affichage au démarrage</b> Par défaut, une fenêtre de dialogue est affichée au démarrage de XDarwin pour permettre à l'utilisateur de choisir entre le mode plein écran et le mode « rootless ». Si cette option est désactivée, le mode par défaut sera automatiquement utilisé.</li>
- <li><b>Numéro d'affichage (Display)</b> X11 offre la possibilité de plusieurs serveurs X sur un ordinateur. L'utilisateur doit spécifier ici le numéro d'affichage utilisé par XDarwin dans le cas où plusieurs serveurs X seraient en service simultanément.</li>
- <li><b>Autoriser la prise en charge Xinerama de plusieurs moniteurs :</b> XDarwin peut être utilisé avec plusieurs moniteur avec Xinerama, qui considère les différents moniteurs comme des parties d'un écran rectugulaire plus grand. Cette option permet de désactiver Xinerama mais XDarwin ne prend alors pour l'instant pas correctement en charge l'affichage sur plusieurs écrans. Si il n'y a qu'un seul moniteur, Xinerama est automatiquement désactivé.</li>
- <li><b>Fichier clavier :</b> Un fichier de correspondance de clavier est lu au démarrage puis transformé en un fihcier de correspondance clavier pour X11. Les fichiers de correspondance clavier, disponibles pour de nombreuses langues, se trouvent dans <code>/System/Library/Keyboards</code>.</li>
- <li><b>Démarrage des premiers clients X11 :</b> Lorsque XDarwin est démarré à partir du Finder, il lance <code>xinit</code> qui lance à son tour le gestionnaire X window ainsi que d'autres clients X. (Voir "<code>man xinit</code>" pour plus d'informations.) Avant de lancer <code>xinit</code>, XDarwin ajoute les répertoires ainsi spécifiés au chemin d'accès de l'utilisateur. Par défaut, seul <code>/usr/X11R6/bin</code> est ajouté. Il est possible d'ajouter d'autres répertoires en les séparants à l'aide de deux points (<code>:</code>). Les clients X sont démarrés à partir du shell par défaut de l'utilisateur. Ainsi, le fichier d'initialisation de shell de l'utilisateur est lu. Un autre shell peut éventuellement être spécifié.</li>
-</ul>
-<h3>Plein écran</h3>
-<ul>
- <li><b>Combinaison de touches :</b> Appuyer sur ce bouton, puis appuyer sur une ou plusieurs touches modificatrices suivies d'une touche ordinaire. Cette combinaison de touche servira à commuter entre Aqua et X11.</li>
- <li><b>Basculer dans X11 en cliquant sur l'icône du Dock :</b> Cette option permet de passer dans X11 en cliquant dans l'icône de XDarwin dans le Dock. Sur certaines versions de Mac OS X, la commutation en utilisant le Dock peut faire disparaître le curseur lors du retour dans Aqua.</li>
- <li><b>Afficher l'aide du mode plein écran au démarrage :</b> Permet l'affichage d'une fenêtre d'introduction lorsque XDarwin est démarré en mode plein écran.</li>
- <li><b>Profondeur de couleur :</b> En mode plein écran, l'affichage X11 peut utiliser une autre profondeur de couleur que celle employée par Aqua. Si "Actuelle" est choisi, XDarwin utilisera la même profondeur de couleur qu'Aqua. Les autres choix sont 8 (256 couleurs), 15 (milliers de couleurs) et 24 bits (millions de couleurs). </li>
-</ul>
-
-<h2><a NAME="license">Licence</a></h2>
-The main license for XDarwin is one based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
-<H3><A NAME="3"></A>X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>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 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:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>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 X CONSORTIUM 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.</p>
-<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
-
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/Credits.rtf b/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/Credits.rtf
deleted file mode 100644
index 34408e78c..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/Credits.rtf
+++ /dev/null
@@ -1,168 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5160\viewh6300\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Darwin x86 support
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i Spanish localization
-\f0\i0 \
-Paul Edens\
-
-\f2\i Dutch localization
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i Korean localization
-\f0\i0 \
-Mario Klebsch\
-
-\f2\i Non-US keyboard support
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i German localization
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i Swedish localization
-\f0\i0 \
-Greg Parker\
-
-\f2\i Rootless support
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Japanese localization
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i French localization
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i Installer
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Darwin x86 support
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i Cocoa version of XDarwin front end
-\f0\i0 \
-Greg Parker\
-
-\f2\i Original Quartz implementation
-\f0\i0 \
-Christoph Pfisterer\
-
-\f2\i Dynamic shared libraries
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Japanese localization
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-
-\f2\i XDarwin icon
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 History:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-
-\f2\i Original XFree86 port to Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-
-\f2\i XFree86 4.0 port to Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Integration into XFree86 Project for 4.0.2} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/Imakefile b/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/Imakefile
deleted file mode 100644
index d367fbcee..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/Imakefile
+++ /dev/null
@@ -1,36 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile,v 1.1 2001/05/21 01:42:17 torrey Exp $
-
-#include <Server.tmpl>
-
-LinkSourceFile(InfoPlist.strings.cpp,../English.lproj)
-
-INCLUDES = -I$(SERVERSRC)/include
-
-#if defined (XorgVersionString)
-VERS = XorgVersionString
-PRE = XORG_VERSION_SNAP
-NAME = "X Version 11"
-LINK = '<a HREF="http://wiki.x.org/">X.Org Foundation</a>'
-#elif defined XFree86VersionString
-VERS = XFree86VersionString
-PRE = XF86_VERSION_SNAP
-NAME = "XFree86"
-LINK = '<a HREF="http://www.XFree86.Org/">XFree86 Project, Inc.</a>'
-#endif
-DATE = XFree86DateString
-X_DEFS = $(INCLUDES) -DX_VERSION=$(VERS) -DX_PRE_RELEASE=$(PRE) \
- -DX_REL_DATE=$(DATE) -DX_VENDOR_NAME=$(NAME) -DX_VENDOR_LINK=$(LINK)
-
-AllTarget(XDarwinHelp.html)
-CppFileTarget(XDarwinHelp.html,XDarwinHelp.html.cpp,$(X_DEFS), \
- NullParameter)
-
-AllTarget(InfoPlist.strings)
-InfoPlist.strings: InfoPlist.strings.cpp
- RemoveFile($@)
- ClearmakeOSName \
- $(CPP) CppNoLineInfoOption $(X_DEFS) <InfoPlist.strings.cpp | \
- CppSedMagic | sed 's/__quote__/"/g' >$@
-
-clean::
- RemoveFiles(InfoPlist.strings)
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/Localizable.strings b/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/Localizable.strings
deleted file mode 100644
index 5db6306ec..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/Localizable.strings
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/MainMenu.nib/classes.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a4e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- IBClasses = (
- {
- ACTIONS = {showHelp = id; };
- CLASS = FirstResponder;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
- CLASS = Preferences;
- LANGUAGE = ObjC;
- OUTLETS = {
- addToPathButton = id;
- addToPathField = id;
- button2ModifiersMatrix = id;
- button3ModifiersMatrix = id;
- depthButton = id;
- displayField = id;
- dockSwitchButton = id;
- fakeButton = id;
- keymapFileField = id;
- modeMatrix = id;
- modeWindowButton = id;
- mouseAccelChangeButton = id;
- startupHelpButton = id;
- switchKeyButton = id;
- systemBeepButton = id;
- useDefaultShellMatrix = id;
- useOtherShellField = id;
- useXineramaButton = id;
- window = id;
- };
- SUPERCLASS = NSObject;
- },
- {
- CLASS = XApplication;
- LANGUAGE = ObjC;
- OUTLETS = {preferences = id; xserver = id; };
- SUPERCLASS = NSApplication;
- },
- {
- ACTIONS = {
- bringAllToFront = id;
- closeHelpAndShow = id;
- itemSelected = id;
- nextWindow = id;
- previousWindow = id;
- showAction = id;
- showSwitchPanel = id;
- startFullScreen = id;
- startRootless = id;
- };
- CLASS = XServer;
- LANGUAGE = ObjC;
- OUTLETS = {
- dockMenu = NSMenu;
- helpWindow = NSWindow;
- modeWindow = NSWindow;
- startFullScreenButton = NSButton;
- startRootlessButton = NSButton;
- startupHelpButton = NSButton;
- startupModeButton = NSButton;
- switchWindow = NSPanel;
- windowMenu = NSMenu;
- windowSeparator = NSMenuItem;
- };
- SUPERCLASS = NSObject;
- }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/MainMenu.nib/objects.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 28fff8920..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/MainMenu.nib/objects.nib
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp b/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 5996285ae..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-<!-- $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp,v 1.1 2001/05/21 01:42:17 torrey Exp $ -->
-
-<html>
-<head>
-<title>XDarwin Help</title>
-</head>
-<body>
-<center>
- <h1>XDarwin X Server for Mac OS X</h1>
- X_VENDOR_NAME X_VERSION<br>
- Release Date: X_REL_DATE
-</center>
-<h2>Contents</h2>
-<ol>
- <li><A HREF="#notice">Important Notice</A></li>
- <li><A HREF="#usage">Usage</A></li>
- <li><A HREF="#path">Setting Your Path</A></li>
- <li><A HREF="#prefs">User Preferences</A></li>
- <li><A HREF="#license">License</A></li>
-</ol>
-<center>
- <h2><a NAME="notice">Important Notice</a></h2>
-</center>
-<blockquote>
-#if X_PRE_RELEASE
-This is a pre-release version of XDarwin, and is not supported in any way. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge. Before reporting bugs in pre-release versions, please check the latest version from <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> or the X_VENDOR_LINK.
-#else
-If the server is older than 6-12 months, or if your hardware is newer than the above date, look for a newer version before reporting problems. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge.
-#endif
-</blockquote>
-<blockquote>
-This software is distributed under the terms of the <A HREF="#license">MIT X11 / X Consortium License</A> and is provided AS IS, with no warranty. Please read the <A HREF="#license">License</A> before using.</blockquote>
-
-<h2><a NAME="usage">Usage</a></h2>
-<p>XDarwin is a freely redistributable open-source X server for the <a HREF="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin runs on Mac OS X in full screen or rootless modes.</p>
-<p>In full screen mode, when the X window system is active, it takes over the entire screen. You can switch back to the Mac OS X desktop by holding down Command-Option-A. This key combination can be changed in the user preferences. From the Mac OS X desktop, click on the XDarwin icon in the Dock to switch back to the X window system. (You can change this behavior in the user preferences so that you must click the XDarwin icon in the floating switch window instead.)</p>
-<p>In rootless mode, the X window system and Aqua share your display. The root window of the X11 display is the size of the screen and contains all the other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background.</p>
-<h3>Multi-Button Mouse Emulation</h3>
-<p>Many X11 applications rely on the use of a 3-button mouse. You can emulate a 3-button mouse with a single button by holding down various modifier keys while you click the mouse button. This is controlled by settings in the "Multi-Button Mouse Emulation" section of the "General" preferences. By default, emulation is on and holding down the command key and clicking the mouse button will simulate clicking the second mouse button. Holding down the option key and clicking will simulate the third button. You can change to any combination of modifiers to emulate buttons two and three in the preferences. Note, even if the modifiers keys are mapped to some other key with xmodmap, you still must use the actual keys specified in the preferences for multi-button mouse emulation.</p>
-
-<h2><a NAME="path">Setting Your Path</a></h2>
-<p>Your path is the list of directories to be searched for executable commands. The X11 commands are located in <code>/usr/X11R6/bin</code>, which needs to be added to your path. XDarwin does this for you by default and can also add additional directories where you have installed command line applications.</p>
-<p>More experienced users will have already set their path correctly using the initialization files for their shell. In this case, you can inform XDarwin not to modify your path in the preferences. XDarwin launches the initial X11 clients in the user's default login shell. (An alternate shell can also be specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell.</p>
-<p>In addition you may also want to add the X11 man pages to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in <code>/usr/X11R6/man</code> and the <code>MANPATH</code> environment variable contains the list of directories to search.</p>
-
-<h2><a NAME="prefs">User Preferences</a></h2>
-<p>A number of options may be set from the user preferences, accessible from the "Preferences..." menu item in the "XDarwin" menu. The options listed as start up options will not take effect until you have restarted XDarwin. All other options take effect immediately. The various options are described below:</p>
-<h3>General</h3>
-<ul>
- <li><b>Use System beep for X11:</b> When enabled the standard Mac OS X alert sound is used as the X11 bell. When disabled (default) a simple tone is used.</li>
- <li><b>Allow X11 to change mouse acceleration:</b> In a standard X window system implementation, the window manager can change the mouse acceleration. This can lead to confusion as the mouse acceleration may be set to different values by the Mac OS X System Preferences and the X window manager. By default, X11 is not allowed to change the mouse acceleration to avoid this problem.</li>
- <li><b>Multi-Button Mouse Emulation:</b> This is described above under <a HREF="#usage">Usage</a>. When emulation is enabled the selected modifiers must be held down when the mouse button is pushed to emulate the second or third mouse buttons.</li>
-</ul>
-<h3>Start Up</h3>
-<ul>
- <li><b>Default Mode:</b> If the user does not indicate whether to run in full screen or rootless mode, the mode specified here will be used.</li>
- <li><b>Show mode pick panel on startup:</b> By default, a panel is displayed when XDarwin is started to allow the user to choose between full screen or rootless mode. If this option is turned off, the default mode will be started automatically.</li>
- <li><b>X11 Display number:</b> X11 allows there to be multiple displays managed by separate X servers on a single computer. The user may specify an integer display number for XDarwin to use if more than one X server is going to be run simultaneously.</li>
- <li><b>Allow Xinerama multiple monitor support:</b> XDarwin supports multiple monitors with Xinerama, which treats all monitors as being part of one large rectangular screen. You can disable Xinerama with this option, but currently XDarwin does not handle multiple monitors correctly without it. If you only have a single monitor, Xinerama is automatically disabled.</li>
- <li><b>Keymapping File:</b> A keymapping file is read at startup and translated to an X11 keymap. Keymapping files, available for a wide variety of languages, are found in <code>/System/Library/Keyboards</code>.</li>
- <li><b>Starting First X11 Clients:</b> When XDarwin is started from the Finder, it will run <code>xinit</code> to launch the X window manager and other X clients. (See "<code>man xinit</code>" for more information.) Before XDarwin runs <code>xinit</code> it will add the specified directories to the user's path. By default only <code>/usr/X11R6/bin</code> is added. Additional directories may added, separated by a colon. The X clients are started in the user's default login shell so that the user's shell initialization files are read. If desired, an alternate shell may be specified.</li>
-</ul>
-<h3>Full Screen</h3>
-<ul>
- <li><b>Key combination button:</b> Click this button and then press any number of modifiers followed by a standard key to change the key combination to switch between Aqua and X11.</li>
- <li><b>Click on icon in Dock switches to X11:</b> Enable this to activate switching to X11 by clicking on the XDarwin icon in the Dock. On some versions of Mac OS X, switching by clicking in the Dock can cause the cursor to disappear on returning to Aqua.</li>
- <li><b>Show help on startup:</b> This will show an introductory splash screen when XDarwin is started in full screen mode.</li>
- <li><b>Color bit depth:</b> In full screen mode, the X11 display can use a different color bit depth than is used by Aqua. If "Current" is specified, the depth used by Aqua when XDarwin starts will be used. Otherwise 8, 15, or 24 bits may be specified.</li>
-</ul>
-
-<h2><a NAME="license">License</a></h2>
-The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
-<H3><A NAME="3"></A>X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>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 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:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>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 X CONSORTIUM 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.</p>
-<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Imakefile b/nx-X11/programs/Xserver/hw/darwin/bundle/Imakefile
deleted file mode 100644
index 5c50dd296..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Imakefile
+++ /dev/null
@@ -1,15 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/bundle/Imakefile,v 1.24 2002/02/17 03:15:18 torrey Exp $
-
-#include <Server.tmpl>
-#define IHaveSubdirs
-
-SUBDIRS = Dutch.lproj English.lproj French.lproj German.lproj Japanese.lproj \
- ko.lproj Portuguese.lproj Spanish.lproj Swedish.lproj
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-
-AllTarget(startXClients)
-MakeScriptFromCpp(startXClients, -DXINITDIR=$(XINITDIR) -DXBINDIR=$(BINDIR))
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Credits.rtf b/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Credits.rtf
deleted file mode 100644
index cf9eae207..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Credits.rtf
+++ /dev/null
@@ -1,193 +0,0 @@
-{\rtf1\mac\ansicpg10001\cocoartf102
-{\fonttbl\f0\fnil\fcharset78 HiraKakuPro-W3;\f1\fswiss\fcharset77 Helvetica;\f2\fswiss\fcharset77 Helvetica-Bold;
-\f3\fswiss\fcharset77 Helvetica-Oblique;}
-{\colortbl;\red255\green255\blue255;}
-\vieww13980\viewh11160\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 \'82\'b1\'82\'cc\'90\'bb\'95\'69\'82\'cd
-\f1 XFree86
-\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67
-\f1 (http://www.xfree86.org/)
-\f0 \'82\'a8\'82\'e6\'82\'d1\'82\'bb\'82\'cc\'8d\'76\'8c\'a3\'8e\'d2\'82\'c9\'82\'e6\'82\'c1\'82\'c4\'8a\'4a\'94\'ad\'82\'b3\'82\'ea\'82\'bd\'83\'5c\'83\'74\'83\'67\'83\'45\'83\'46\'83\'41\'82\'f0\'8a\'dc\'82\'f1\'82\'c5\'82\'a2\'82\'dc\'82\'b7\'81\'42\'8e\'9f\'82\'cc\'90\'6c\'81\'58\'82\'cd Darwin
-\f1 /Mac OS X
-\f0 \'82\'cc\'83\'54\'83\'7c\'81\'5b\'83\'67\'82\'c9\'8d\'76\'8c\'a3\'82\'b5\'82\'dc\'82\'b5\'82\'bd\'81\'42
-\f1 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f2\b \cf0 Contributors to Xorg Foundation Release:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-
-\f0 \'8d\'b6\'89\'45\'82\'cc Ctrl,Alt(Option),Meta(Command) \'82\'a8\'82\'e6\'82\'d1 Shift \'83\'4c\'81\'5b\'82\'cc\'93\'ae\'8d\'ec
-\f1 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f2\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Contributors to XFree86 4.4:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper
-\f3\i \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f0\i0 \cf0 \'83\'8b\'81\'5b\'83\'67\'83\'8c\'83\'58 \'83\'41\'83\'4e\'83\'5a\'83\'89\'83\'8c\'81\'5b\'83\'56\'83\'87\'83\'93 \'82\'a8\'82\'e6\'82\'d1 Apple-WM \'8a\'67\'92\'a3
-\f1 \
-Torrey T. Lyons\
-
-\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 \'83\'8a\'81\'5b\'83\'5f\'81\'5b\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f2\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-
-\f0 \'83\'7c\'83\'8b\'83\'67\'83\'4b\'83\'8b\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Michael Oland\
-
-\f0 \'90\'56\'82\'b5\'82\'a2
-\f1 XDarwin
-\f0 \'83\'41\'83\'43\'83\'52\'83\'93
-\f1 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f2\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
- Darwin x86
-\f3\i
-\f0\i0 \'83\'54\'83\'7c\'81\'5b\'83\'67
-\f1 \
-Pablo Di Noto\
-
-\f3\i
-\f0\i0 \'83\'58\'83\'79\'83\'43\'83\'93\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Paul Edens\
-
-\f3\i
-\f0\i0 \'83\'49\'83\'89\'83\'93\'83\'5f\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Kyunghwan Kim\
-
-\f3\i
-\f0\i0 \'8a\'d8\'8d\'91\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Mario Klebsch\
-
-\f0 \'94\'f1US\'83\'4c\'81\'5b\'83\'7b\'81\'5b\'83\'68 \'83\'54\'83\'7c\'81\'5b\'83\'67
-\f1 \
-Torrey T. Lyons\
-
-\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 \'83\'8a\'81\'5b\'83\'5f\'81\'5b
-\f1 \
-Andreas Monitzer\
-
-\f0 \'83\'68\'83\'43\'83\'63\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Patrik Montgomery\
-
-\f3\i
-\f0\i0 \'83\'58\'83\'45\'83\'46\'81\'5b\'83\'66\'83\'93\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Greg Parker\
-
-\f0 \'83\'8b\'81\'5b\'83\'67\'83\'8c\'83\'58 \'83\'54\'83\'7c\'81\'5b\'83\'67
-\f1 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f0 \cf0 \'93\'63\'92\'86 \'8f\'72\'8c\'f5
-\f1 \
-
-\f0 \'93\'fa\'96\'7b\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-Olivier Verdier\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f3\i \cf0
-\f0\i0 \'83\'74\'83\'89\'83\'93\'83\'58\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f2\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f3\i
-\f0\i0 \'83\'43\'83\'93\'83\'58\'83\'67\'81\'5b\'83\'89
-\f1 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f2\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
- Darwin x86
-\f0 \'83\'54\'83\'7c\'81\'5b\'83\'67
-\f1 \
-Torrey T. Lyons\
-
-\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 \'83\'8a\'81\'5b\'83\'5f\'81\'5b
-\f1 \
-Andreas Monitzer\
- Cocoa
-\f0 \'94\'c5 XDarwin \'83\'74\'83\'8d\'83\'93\'83\'67\'83\'47\'83\'93\'83\'68
-\f1 \
-Greg Parker\
-
-\f0 \'8d\'c5\'8f\'89\'82\'cc Quartz \'83\'43\'83\'93\'83\'76\'83\'8a\'83\'81\'83\'93\'83\'67
-\f1 \
-Christoph Pfisterer\
-
-\f0 \'8b\'a4\'97\'4c\'83\'89\'83\'43\'83\'75\'83\'89\'83\'8a
-\f1 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f0 \cf0 \'93\'63\'92\'86 \'8f\'72\'8c\'f5
-\f1 \
-
-\f0 \'93\'fa\'96\'7b\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
-\f1 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f2\b \cf0 Special Thanks:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
- XDarwin
-\f0 \'83\'41\'83\'43\'83\'52\'83\'93
-\f1 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f2\b \cf0 History:
-\f1\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-
-\f0 XFree86 \'82\'cc Mac OS X Server \'82\'d6\'82\'cc\'8d\'c5\'8f\'89\'82\'cc\'88\'da\'90\'41
-\f1 \
-Dave Zarzycki\
- XFree86 4.0
-\f0 \'82\'f0 Darwin 1.0 \'82\'c9\'88\'da\'90\'41
-\f1 \
-Torrey T. Lyons\
- XFree86 4.0.2
-\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67\'82\'d6\'82\'cc\'93\'9d\'8d\'87} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Imakefile b/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Imakefile
deleted file mode 100644
index d367fbcee..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Imakefile
+++ /dev/null
@@ -1,36 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile,v 1.1 2001/05/21 01:42:17 torrey Exp $
-
-#include <Server.tmpl>
-
-LinkSourceFile(InfoPlist.strings.cpp,../English.lproj)
-
-INCLUDES = -I$(SERVERSRC)/include
-
-#if defined (XorgVersionString)
-VERS = XorgVersionString
-PRE = XORG_VERSION_SNAP
-NAME = "X Version 11"
-LINK = '<a HREF="http://wiki.x.org/">X.Org Foundation</a>'
-#elif defined XFree86VersionString
-VERS = XFree86VersionString
-PRE = XF86_VERSION_SNAP
-NAME = "XFree86"
-LINK = '<a HREF="http://www.XFree86.Org/">XFree86 Project, Inc.</a>'
-#endif
-DATE = XFree86DateString
-X_DEFS = $(INCLUDES) -DX_VERSION=$(VERS) -DX_PRE_RELEASE=$(PRE) \
- -DX_REL_DATE=$(DATE) -DX_VENDOR_NAME=$(NAME) -DX_VENDOR_LINK=$(LINK)
-
-AllTarget(XDarwinHelp.html)
-CppFileTarget(XDarwinHelp.html,XDarwinHelp.html.cpp,$(X_DEFS), \
- NullParameter)
-
-AllTarget(InfoPlist.strings)
-InfoPlist.strings: InfoPlist.strings.cpp
- RemoveFile($@)
- ClearmakeOSName \
- $(CPP) CppNoLineInfoOption $(X_DEFS) <InfoPlist.strings.cpp | \
- CppSedMagic | sed 's/__quote__/"/g' >$@
-
-clean::
- RemoveFiles(InfoPlist.strings)
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Localizable.strings b/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Localizable.strings
deleted file mode 100644
index c5c26d61a..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/Localizable.strings
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/classes.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a4e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- IBClasses = (
- {
- ACTIONS = {showHelp = id; };
- CLASS = FirstResponder;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
- CLASS = Preferences;
- LANGUAGE = ObjC;
- OUTLETS = {
- addToPathButton = id;
- addToPathField = id;
- button2ModifiersMatrix = id;
- button3ModifiersMatrix = id;
- depthButton = id;
- displayField = id;
- dockSwitchButton = id;
- fakeButton = id;
- keymapFileField = id;
- modeMatrix = id;
- modeWindowButton = id;
- mouseAccelChangeButton = id;
- startupHelpButton = id;
- switchKeyButton = id;
- systemBeepButton = id;
- useDefaultShellMatrix = id;
- useOtherShellField = id;
- useXineramaButton = id;
- window = id;
- };
- SUPERCLASS = NSObject;
- },
- {
- CLASS = XApplication;
- LANGUAGE = ObjC;
- OUTLETS = {preferences = id; xserver = id; };
- SUPERCLASS = NSApplication;
- },
- {
- ACTIONS = {
- bringAllToFront = id;
- closeHelpAndShow = id;
- itemSelected = id;
- nextWindow = id;
- previousWindow = id;
- showAction = id;
- showSwitchPanel = id;
- startFullScreen = id;
- startRootless = id;
- };
- CLASS = XServer;
- LANGUAGE = ObjC;
- OUTLETS = {
- dockMenu = NSMenu;
- helpWindow = NSWindow;
- modeWindow = NSWindow;
- startFullScreenButton = NSButton;
- startRootlessButton = NSButton;
- startupHelpButton = NSButton;
- startupModeButton = NSButton;
- switchWindow = NSPanel;
- windowMenu = NSMenu;
- windowSeparator = NSMenuItem;
- };
- SUPERCLASS = NSObject;
- }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/objects.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 357002706..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/MainMenu.nib/objects.nib
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp b/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 6653f5bea..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-<!-- $XFree86: xc/programs/Xserver/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp,v 1.4 2001/11/27 07:27:46 torrey Exp $ -->
-
-<html>
-<head>
-<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
-<title>
-XDarwin Help</title></head>
-<body>
-<center>
- <h1>XDarwin X Server for Mac OS X</h1>
- X_VENDOR_NAME X_VERSION<br>
- Release Date: X_REL_DATE
-</center>
-<h2>Ìܼ¡</h2>
-<ol>
- <li><A HREF="#notice">Ãí°Õ»ö¹à</A></li>
- <li><A HREF="#usage">»ÈÍÑË¡</A></li>
- <li><A HREF="#path">¥Ñ¥¹¤ÎÀßÄê</A></li>
- <li><A HREF="#prefs">´Ä¶­ÀßÄê</A></li>
- <li><A HREF="#license">¥é¥¤¥»¥ó¥¹</A></li>
-</ol>
-<center>
- <h2><a NAME="notice">Ãí°Õ»ö¹à</a></h2>
-</center>
-<blockquote>
-#if X_PRE_RELEASE
-¤³¤ì¤Ï¡¤XDarwin ¤Î¥×¥ì¥ê¥ê¡¼¥¹¥Ð¡¼¥¸¥ç¥ó¤Ç¤¢¤ê¡¤¤¤¤«¤Ê¤ë¾ì¹ç¤Ë¤ª¤¤¤Æ¤â¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó¡£
-¥Ð¥°¤ÎÊó¹ð¤ä¥Ñ¥Ã¥Á¤¬ SourceForge ¤Î <A HREF="http://sourceforge.net/projects/xonx/">XonX ¥×¥í¥¸¥§¥¯¥È¥Ú¡¼¥¸</A>¤ËÄó½Ð¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
-¥×¥ì¥ê¥ê¡¼¥¹¥Ð¡¼¥¸¥ç¥ó¤Î¥Ð¥°¤òÊó¹ð¤¹¤ëÁ°¤Ë¡¤<A HREF="http://sourceforge.net/projects/xonx/">XonX</A> ¥×¥í¥¸¥§¥¯¥È¥Ú¡¼¥¸¤Þ¤¿¤Ï X_VENDOR_LINK¤ÇºÇ¿·ÈǤΥÁ¥§¥Ã¥¯¤ò¤·¤Æ²¼¤µ¤¤¡£
-#else
-¤â¤·¡¤¥µ¡¼¥Ð¡¼¤¬ 6 -12 ¥ö·î°Ê¾åÁ°¤Î¤â¤Î¤«¡¤¤Þ¤¿¤Ï¤¢¤Ê¤¿¤Î¥Ï¡¼¥É¥¦¥§¥¢¤¬¾åµ­¤ÎÆüÉÕ¤è¤ê¤â¿·¤·¤¤¤â¤Î¤Ê¤é¤Ð¡¤ÌäÂê¤òÊó¹ð¤¹¤ëÁ°¤Ë¤è¤ê¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤òõ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
-¥Ð¥°¤ÎÊó¹ð¤ä¥Ñ¥Ã¥Á¤¬ SourceForge ¤Î <A HREF="http://sourceforge.net/projects/xonx/">XonX ¥×¥í¥¸¥§¥¯¥È¥Ú¡¼¥¸</A>¤ËÄó½Ð¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
-#endif
-</blockquote>
-<blockquote>
-ËÜ¥½¥Õ¥È¥¦¥§¥¢¤Ï¡¤<A HREF="#license">MIT X11/X Consortium License</A> ¤Î¾ò·ï¤Ë´ð¤Å¤­¡¤ÌµÊݾڤǡ¤¡Ö¤½¤Î¤Þ¤Þ¡×¤Î·Á¤Ç¶¡µë¤µ¤ì¤Þ¤¹¡£
-¤´»ÈÍѤˤʤëÁ°¤Ë¡¤<A HREF="#license">¥é¥¤¥»¥ó¥¹¾ò·ï</A>¤ò¤ªÆɤ߲¼¤µ¤¤¡£
-</blockquote>
-
-<h2><a NAME="usage">»ÈÍÑË¡</a></h2>
-<p>XDarwin ¤Ï¡¤ºÆÇÛÉÛ²Äǽ¤Ê¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î <a HREF="http://www.x.org/">X Window System</a> ¤Î¤¿¤á¤Î X ¥µ¡¼¥Ð¡¼¤Î¼ÂÁõ¤Ç¤¹¡£¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Î XDarwin ¤Ï X_VENDOR_LINK ¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤Þ¤·¤¿¡£XDarwin ¤Ï¡¤Mac OS X ¾å¤Ç¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Þ¤¿¤Ï¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤ÇÆ°ºî¤·¤Þ¤¹¡£</p>
-
-<p>¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Ç¤Ï¡¤X Window System ¤¬¥¢¥¯¥Æ¥£¥Ö¤Ê»þ¡¤¤½¤ì¤ÏÁ´²èÌ̤òÀêÍ­¤·¤Þ¤¹¡£
-¤¢¤Ê¤¿¤Ï¡¤Command-Option-A ¥­¡¼¤ò²¡¤¹¤³¤È¤Ë¤è¤Ã¤Æ Mac OS X ¥Ç¥¹¥¯¥È¥Ã¥×¤ØÀÚ¤êÂؤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¥­¡¼¤ÎÁȤ߹ç¤ï¤»¤Ï¡¤´Ä¶­ÀßÄê¤ÇÊѹ¹²Äǽ¤Ç¤¹¡£
-Mac OS X ¥Ç¥¹¥¯¥È¥Ã¥×¤«¤é X Window System ¤ØÀÚ¤êÂؤ¨¤ë¾ì¹ç¤Ï¡¤¥É¥Ã¥¯¤Ëɽ¼¨¤µ¤ì¤¿ XDarwin ¥¢¥¤¥³¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ²¼¤µ¤¤¡£
-¡Ê´Ä¶­ÀßÄê¤Ç¡¤¥Õ¥í¡¼¥Æ¥£¥ó¥°¡¦¥¦¥£¥ó¥É¥¦¤Ëɽ¼¨¤µ¤ì¤¿ XDarwin ¥¢¥¤¥³¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤è¤¦¤ËÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Ë</p>
-
-<p>¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Ç¤Ï¡¤X Window System ¤È Aqua ¤Ï²èÌ̤ò¶¦Í­¤·¤Þ¤¹¡£
-X11 ¤¬É½¼¨¤¹¤ë¥ë¡¼¥È¥¦¥£¥ó¥É¥¦¤Ï²èÌ̤Υµ¥¤¥º¤Ç¤¢¤ê¡¤Â¾¤ÎÁ´¤Æ¤Î¥¦¥£¥ó¥É¥¦¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£
-Aqua ¤¬¥Ç¥¹¥¯¥È¥Ã¥×¤ÎÇطʤòÀ©¸æ¤¹¤ë¤Î¤Ç¡¤X11 ¤Î¥ë¡¼¥È¥¦¥£¥ó¥É¥¦¤Ï¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Ç¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£</p>
-
-<h3>Ê£¿ô¥Ü¥¿¥ó¥Þ¥¦¥¹¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó</h3>
-<p>¿¤¯¤Î X11 ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¤3 ¥Ü¥¿¥ó¥Þ¥¦¥¹¤òɬÍפȤ·¤Þ¤¹¡£
-¤¢¤Ê¤¿¤Ï¥Þ¥¦¥¹¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤ÈƱ»þ¤Ë¤¤¤¯¤Ä¤«¤Î½¤¾þ¥­¡¼¤ò²¡¤¹¤³¤È¤Ë¤è¤Ã¤Æ¡¤°ì¤Ä¤Î¥Ü¥¿¥ó¤Ç 3 ¥Ü¥¿¥ó¥Þ¥¦¥¹¤ò¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-¤³¤ì¤Ï¡¤´Ä¶­ÀßÄê¤Î¡Ö°ìÈÌÀßÄê¡×¤Î¡ÖÊ£¿ô¥Ü¥¿¥ó¥Þ¥¦¥¹¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¡×¥»¥¯¥·¥ç¥ó¤ÇÀßÄꤷ¤Þ¤¹¡£
-¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¤¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤ÏÍ­¸ú¤Ç¡¤¥³¥Þ¥ó¥É¥­¡¼¤ò²¡¤·¤Ê¤¬¤é¥Þ¥¦¥¹¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤ÏÂè 2 ¥Þ¥¦¥¹¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤ËÁêÅö¤·¤Þ¤¹¡£
-¥ª¥×¥·¥ç¥ó¥­¡¼¤ò²¡¤·¤Ê¤¬¤é¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤ÏÂè 3 ¥Þ¥¦¥¹¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤ËÁêÅö¤·¤Þ¤¹¡£
-¤¢¤Ê¤¿¤Ï¡¤´Ä¶­ÀßÄê¤Ç¥Ü¥¿¥ó 2 ¤È 3 ¤ò¥¨¥ß¥å¥ì¡¼¥È¤¹¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë½¤¾þ¥­¡¼¤ÎÁȹ礻¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-Ãí¡§½¤¾þ¥­¡¼¤ò xmodmap ¤Ç¾¤Î¥­¡¼¤Ë³ä¤êÅö¤Æ¤Æ¤¤¤ë¾ì¹ç¤Ç¤â¡¤Ê£¿ô¥Ü¥¿¥ó¥Þ¥¦¥¹¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤Ç¤ÏËÜÍè¤Î¥³¥Þ¥ó¥É¥­¡¼¤ä¥ª¥×¥·¥ç¥ó¥­¡¼¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£</p>
-
-<h2><a NAME="path">¥Ñ¥¹¤ÎÀßÄê</a></h2>
-<p>¥Ñ¥¹¤Ï¡¤ ¼Â¹Ô²Äǽ¤Ê¥³¥Þ¥ó¥É¤ò¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤Ç¤¹¡£
-X11 ¥Ð¥¤¥Ê¥ê¤Ï¡¤<code>/usr/X11R6/bin</code> ¤ËÃÖ¤«¤ì¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¤½¤ì¤ò¥Ñ¥¹¤Ë²Ã¤¨¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
-XDarwin ¤Ï¡¤¤³¤ì¤ò¥Ç¥Õ¥©¥ë¥È¤Ç¹Ô¤¤¤Þ¤¹¡£¤Þ¤¿¡¤¤¢¤Ê¤¿¤¬¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿ÄɲäΥǥ£¥ì¥¯¥È¥ê¤ò²Ã¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£</p>
-
-<p>·Ð¸³Ë­¤«¤Ê¥æ¡¼¥¶¡¼¤Ï¡¤¤¹¤Ç¤Ë¼«¤é¤Î¥·¥§¥ë¤Î¤¿¤á¤Ë½é´ü²½¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤Æ¥Ñ¥¹¤òÀßÄꤷ¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¡£
-¤³¤Î¾ì¹ç¡¤¤¢¤Ê¤¿¤Ï´Ä¶­ÀßÄê¤Ç XDarwin ¤¬¤¢¤Ê¤¿¤Î¥Ñ¥¹¤òÊѹ¹¤·¤Ê¤¤¤è¤¦¤ËÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-XDarwin ¤Ï¡¤¥æ¡¼¥¶¡¼¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥í¥°¥¤¥ó¥·¥§¥ë¤ÇºÇ½é¤Î X11 ¥¯¥é¥¤¥¢¥ó¥È¤ò³«»Ï¤·¤Þ¤¹¡£
-¡Ê´Ä¶­ÀßÄê¤ÇÂå¤ï¤ê¤Î¥·¥§¥ë¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Ë
-¥Ñ¥¹¤òÀßÄꤹ¤ëÊýË¡¤Ï¡¤¤¢¤Ê¤¿¤¬»ÈÍѤ·¤Æ¤¤¤ë¥·¥§¥ë¤Ë°Í¸¤·¤Þ¤¹¡£
-¤³¤ì¤Ï¡¤¥·¥§¥ë¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¥É¥­¥å¥á¥ó¥È¤Ëµ­ºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
-
-<p>¤Þ¤¿¡¤¤¢¤Ê¤¿¤Ï¥É¥­¥å¥á¥ó¥È¤òõ¤·¤Æ¤¤¤ë»þ¡¤X11 ¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤ò¸¡º÷¤µ¤ì¤ë¥Ú¡¼¥¸¤Î¥ê¥¹¥È¤ËÄɲä·¤¿¤¤¤È»×¤¦¤«¤â¤·¤ì¤Þ¤»¤ó¡£
-X11 ¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Ï <code>/usr/X11R6/man</code> ¤ËÃÖ¤«¤ì¤Þ¤¹¡£¤½¤·¤Æ <code>MANPATH</code> ´Ä¶­ÊÑ¿ô¤Ï¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£</p>
-
-<h2><a NAME="prefs">´Ä¶­ÀßÄê</a></h2>
-<p>¡ÖXDarwin¡×¥á¥Ë¥å¡¼¤Î¡Ö´Ä¶­ÀßÄê...¡×¥á¥Ë¥å¡¼¹àÌܤ«¤é¥¢¥¯¥»¥¹¤Ç¤­¤ë´Ä¶­ÀßÄê¥Ñ¥Í¥ë¤Ç¡¤¤¤¤¯¤Ä¤«¤Î¥ª¥×¥·¥ç¥ó¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-¡Öµ¯Æ°¥ª¥×¥·¥ç¥ó¡×¤ÎÆâÍƤϡ¤XDarwin ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤ÇÍ­¸ú¤È¤Ê¤ê¤Þ¤»¤ó¡£
-¾¤ÎÁ´¤Æ¤Î¥ª¥×¥·¥ç¥ó¤ÎÆâÍƤϡ¤Ä¾¤Á¤ËÍ­¸ú¤È¤Ê¤ê¤Þ¤¹¡£
-°Ê²¼¡¤¤½¤ì¤¾¤ì¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹:</p>
-
-<h3>°ìÈÌÀßÄê</h3>
-<ul>
- <li><b>X11 ¤Ç¥·¥¹¥Æ¥à¤Î¥Ó¡¼¥×²»¤ò»ÈÍѤ¹¤ë:</b> ¥ª¥ó¤Î¾ì¹ç¡¤Mac OS X ¤Î¥Ó¡¼¥×²»¤¬ X11 ¤Î¥Ù¥ë¤È¤·¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£¥ª¥Õ¤Î¾ì¹ç¡Ê¥Ç¥Õ¥©¥ë¥È¡Ë¡¤¥·¥ó¥×¥ë ¥È¡¼¥ó¤¬»È¤ï¤ì¤Þ¤¹¡£</li>
- <li><b>X11 ¤Î¥Þ¥¦¥¹¥¢¥¯¥»¥é¥ì¡¼¥·¥ç¥ó¤òÍ­¸ú¤Ë¤¹¤ë:</b> ɸ½àŪ¤Ê X Window System ¤Î¼ÂÁõ¤Ç¤Ï¡¤¥¦¥£¥ó¥É¥¦¥Þ¥Í¡¼¥¸¥ã¡¼¤Ï¥Þ¥¦¥¹¤Î²Ã®ÅÙ¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
- ¥Þ¥¦¥¹¤Î²Ã®ÅÙ¤Ë Mac OS X ¤Î¥·¥¹¥Æ¥à´Ä¶­ÀßÄê¤È X ¥¦¥£¥ó¥É¥¦¥Þ¥Í¡¼¥¸¥ã¡¼¤¬°Û¤Ê¤ëÃͤòÀßÄꤷ¤¿¾ì¹ç¡¤¤³¤ì¤Ïº®Íð¤ò¾·¤­¤Þ¤¹¡£
- ¤³¤ÎÌäÂê¤òÈò¤±¤ë¤¿¤á¡¤¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï X11 ¤Î¥Þ¥¦¥¹¥¢¥¯¥»¥é¥ì¡¼¥·¥ç¥ó¤òÍ­¸ú¤È¤·¤Þ¤»¤ó¡£</li>
- <li><b>Ê£¿ô¥Ü¥¿¥ó¥Þ¥¦¥¹¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó:</b> <a HREF="#usage">»ÈÍÑË¡</a>¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£¥ª¥ó¤Î¾ì¹ç¡¤¥Þ¥¦¥¹¥Ü¥¿¥ó¤¬Âè 2 ¤Þ¤¿¤ÏÂè 3 ¤Î¥Þ¥¦¥¹¥Ü¥¿¥ó¤ò¥¨¥ß¥å¥ì¡¼¥È¤¹¤ë»þ¤Ë¡¤ÁªÂò¤·¤¿½¤¾þ¥­¡¼¤òƱ»þ¤Ë²¡¤·¤Þ¤¹¡£</li>
-</ul>
-
-<h3>µ¯Æ°¥ª¥×¥·¥ç¥ó</h3>
-<ul>
- <li><b>²èÌ̥⡼¥É:</b> ¥æ¡¼¥¶¡¼¤¬¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Þ¤¿¤Ï¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Î¤É¤Á¤é¤ò»ÈÍѤ¹¤ë¤«¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¤¤³¤³¤Ç»ØÄꤵ¤ì¤¿¥â¡¼¥É¤¬»È¤ï¤ì¤Þ¤¹¡£</li>
- <li><b>µ¯Æ°»þ¤Ë¥â¡¼¥ÉÁªÂò¥Ñ¥Í¥ë¤òɽ¼¨¤¹¤ë:</b> ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¤XDarwin ¤Îµ¯Æ°»þ¤Ë¥æ¡¼¥¶¡¼¤¬¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Þ¤¿¤Ï¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Î¤É¤Á¤é¤ò»ÈÍѤ¹¤ë¤«¤òÁªÂò¤¹¤ë¥Ñ¥Í¥ë¤òɽ¼¨¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬¥ª¥Õ¤Î¾ì¹ç¡¤²èÌ̥⡼¥É¤Ç»ØÄꤷ¤¿¥â¡¼¥É¤Çµ¯Æ°¤·¤Þ¤¹¡£</li>
- <li><b>X11 ¥Ç¥£¥¹¥×¥ì¥¤ÈÖ¹æ:</b> X11¤Ï¡¤°ì¤Ä¤Î¥³¥ó¥Ô¥å¡¼¥¿¾å¤ÇÊÌ¡¹¤Î X ¥µ¡¼¥Ð¡¼¤¬´ÉÍý¤¹¤ëÊ£¿ô¤Î¥Ç¥£¥¹¥×¥ì¥¤¤¬Â¸ºß¤¹¤ë¤³¤È¤òµö¤·¤Þ¤¹¡£Ê£¿ô¤Î X ¥µ¡¼¥Ð¡¼¤¬Æ±»þ¤Ë¼Â¹Ô¤·¤Æ¤¤¤ë»þ¡¤XDarwin ¤¬»ÈÍѤ¹¤ë¥Ç¥£¥¹¥×¥ì¥¤¤ÎÈÖ¹æ¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£</li>
- <li><b>Xinerama ¥Þ¥ë¥Á¥â¥Ë¥¿¥µ¥Ý¡¼¥È¤òÍ­¸ú¤Ë¤¹¤ë:</b> XDarwin ¤Ï¡¤Xinerama ¥Þ¥ë¥Á¥â¥Ë¥¿¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¤½¤ì¤ÏÁ´¤Æ¤Î¥â¥Ë¥¿¤ò°ì¤Ä¤ÎÂ礭¤Ê²èÌ̤ΰìÉô¤È¤ß¤Ê¤·¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç Xinerama ¤ò̵¸ú¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤¿¤À¤·¡¤¸½ºß XDarwin ¤Ï¤½¤ì̵¤·¤ÇÀµ¤·¤¯Ê£¿ô¤Î¥â¥Ë¥¿¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£¤â¤·¡¤¤¢¤Ê¤¿¤¬°ì¤Ä¤Î¥â¥Ë¥¿¤ò»È¤¦¤À¤±¤Ê¤é¤Ð¡¤Xinerama ¤Ï¼«Æ°Åª¤Ë̵¸ú¤È¤Ê¤ê¤Þ¤¹¡£</li>
- <li><b>¥­¡¼¥Þ¥Ã¥Ô¥ó¥°¥Õ¥¡¥¤¥ë:</b> ¥­¡¼¥Þ¥Ã¥Ô¥ó¥°¥Õ¥¡¥¤¥ë¤Ïµ¯Æ°»þ¤ËÆɤ߹þ¤Þ¤ì¡¤X11 ¥­¡¼¥Þ¥Ã¥×¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£Â¾¸À¸ì¤ËÂбþ¤·¤¿¥­¡¼¥Þ¥Ã¥Ô¥ó¥°¥Õ¥¡¥¤¥ë¤Ï <code>/System/Library/Keyboards</code> ¤Ë¤¢¤ê¤Þ¤¹¡£¡ÊÌõÃí¡§¥­¡¼¥Þ¥Ã¥Ô¥ó¥°¤Ç Japanese ¤òÁªÂò¤¹¤ë¤È¡¤°ìÉô¤Î¥­¡¼¤¬¸ú¤«¤Ê¤¤Åù¤ÎÉÔ¶ñ¹ç¤¬È¯À¸¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ï USA ¤òÁªÂò¤·¤¿¾å¤Ç ~/.Xmodmap ¤òŬÍѤ·¤Æ²¼¤µ¤¤¡£¡Ë</li>
- <li><b>ºÇ½é¤Î X11 ¥¯¥é¥¤¥¢¥ó¥È¤Îµ¯Æ°:</b> XDarwin ¤¬ Finder¤«¤éµ¯Æ°¤¹¤ë»þ¡¤X ¥¦¥£¥ó¥É¥¦¥Þ¥Í¡¼¥¸¥ã¡¼¤È X ¥¯¥é¥¤¥¢¥ó¥È¤Îµ¯Æ°¤Ï <code>xinit</code> ¤ò¼Â¹Ô¤·¤Þ¤¹¡£¡Ê¾ÜºÙ¤Ï "<code>man xinit</code>" ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£¡ËXDarwin ¤Ï <code>xinit</code> ¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¡¤»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ò¥æ¡¼¥¶¡¼¤Î¥Ñ¥¹¤ËÄɲä·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï <code>/usr/X11R6/bin</code> ¤À¤±¤òÄɲä·¤Þ¤¹¡£Â¾¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÄɲä·¤¿¤¤¾ì¹ç¤Ï¡¤¥³¥í¥ó¤Ç¶èÀڤäƻØÄꤷ¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤Î¥·¥§¥ë½é´ü²½¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤¿¤á¤Ë¡¤X ¥¯¥é¥¤¥¢¥ó¥È¤Ï¥æ¡¼¥¶¡¼¤Î¥Ç¥Õ¥©¥ë¥È¥í¥°¥¤¥ó¥·¥§¥ë¤Çµ¯Æ°¤µ¤ì¤Þ¤¹¡£É¬ÍפǤ¢¤ì¤Ð¡¤Âå¤ï¤ê¤Î¥·¥§¥ë¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£</li>
-</ul>
-
-<h3>¥Õ¥ë¥¹¥¯¥ê¡¼¥ó</h3>
-<ul>
- <li><b>¥­¡¼ÀßÄê¥Ü¥¿¥ó:</b> X11 ¤È Aqua ¤òÀÚ¤êÂؤ¨¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¥Ü¥¿¥ó¤ÎÁȤ߹ç¤ï¤»¤ò»ØÄꤷ¤Þ¤¹¡£
- ¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¡¤Ç¤°Õ¤Î¿ô¤Î½¤¾þ¥­¡¼¤Ë³¤¤¤ÆÄ̾ï¤Î¥­¡¼¤ò²¡¤·¤Þ¤¹¡£</li>
- <li><b>¥É¥Ã¥¯¤Î¥¢¥¤¥³¥ó¤Î¥¯¥ê¥Ã¥¯¤Ç X11 ¤ËÌá¤ë:</b> ¥ª¥ó¤Î¾ì¹ç¡¤¥É¥Ã¥¯¤Ëɽ¼¨¤µ¤ì¤¿ XDarwin ¥¢¥¤¥³¥ó¤Î¥¯¥ê¥Ã¥¯¤Ç X11 ¤Ø¤ÎÀڤ괹¤¨¤¬²Äǽ¤È¤Ê¤ê¤Þ¤¹¡£Mac OS X ¤Î¤¤¤¯¤Ä¤«¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¤¥É¥Ã¥¯¤Î¥¢¥¤¥³¥ó¤Î¥¯¥ê¥Ã¥¯¤Ç Aqua ¤ËÌá¤Ã¤¿»þ¡¤¥«¡¼¥½¥ë¤¬¾Ã¼º¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£</li>
- <li><b>µ¯Æ°»þ¤Ë¥Ø¥ë¥×¤òɽ¼¨¤¹¤ë:</b> XDarwin ¤¬¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Çµ¯Æ°¤¹¤ë»þ¡¤¥¹¥×¥é¥Ã¥·¥å¥¹¥¯¥ê¡¼¥ó¤òɽ¼¨¤·¤Þ¤¹¡£</li>
- <li><b>¿§¿¼ÅÙ:</b> ¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Ç¤Ï¡¤X11 ¥Ç¥£¥¹¥×¥ì¥¤¤¬ Aqua ¤È°Û¤Ê¤ë¿§¿¼ÅÙ¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡ÖÊѹ¹¤Ê¤·¡×¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¤XDarwin ¤Ï Aqua ¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤ë¿§¿¼ÅÙ¤ò»È¤¤¤Þ¤¹¡£¤³¤ì°Ê³°¤Ë 8¡¤15 ¤Þ¤¿¤Ï24 ¥Ó¥Ã¥È¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£</li>
-</ul>
-
-<h2>
-<a NAME="license">¥é¥¤¥»¥ó¥¹</a>
-</h2>
-XDarwin ¤Î¼çÍפʥ饤¥»¥ó¥¹¤ÏÅÁÅýŪ¤Ê MIT X11/X Consortium License ¤Ë´ð¤Å¤­¤Þ¤¹¡£
-¤½¤ì¤Ï½¤Àµ¤Þ¤¿¤ÏºÆÇÛÉÛ¤µ¤ì¤ë¥½¡¼¥¹¥³¡¼¥É¤Þ¤¿¤Ï¥Ð¥¤¥Ê¥ê¤Ë¡¤¤½¤ÎÃøºî¸¢/¥é¥¤¥»¥ó¥¹É½¼¨¤¬¤½¤Î¤Þ¤Þ»Ä¤µ¤ì¤ë¤³¤È¤òÍ׵᤹¤ë°Ê³°¤Î¾ò·ï¤ò¶¯À©¤·¤Þ¤»¤ó¡£
-¤è¤ê¿¤¯¤Î¾ðÊó¤È¡¤¥³¡¼¥É¤Î°ìÉô¤ò¥«¥Ð¡¼¤¹¤ëÄɲäÎÃøºî¸¢/¥é¥¤¥»¥ó¥¹É½¼¨¤Î¤¿¤á¤Ë¡¤¥½¡¼¥¹¥³¡¼¥É¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£
-<H3>
-<A NAME="3"></A>
-X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>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 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:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>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 X CONSORTIUM 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.</p>
-<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/Credits.rtf b/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/Credits.rtf
deleted file mode 100644
index 8dcddc2f7..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/Credits.rtf
+++ /dev/null
@@ -1,171 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5140\viewh4980\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Contribuidores do XonX ao XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro
-\f1\b \
-
-\f2\i\b0 Localiza\'8d\'8bo para o Portugu\'90s\
-
-\f0\i0 Michael Oland\
-
-\f2\i New XDarwin icon
-\f1\i0\b \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Contribuidores do XonX ao XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Suporte para o Darwin x86\
-
-\f0\i0 Pablo Di Noto\
-
-\f2\i Localiza\'8d\'8bo para o Espanhol
-\f0\i0 \
-Paul Edens\
-
-\f2\i Localiza\'8d\'8bo para o Holand\'90s
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i Localiza\'8d\'8bo para o Coreano
-\f0\i0 \
-Mario Klebsch\
-
-\f2\i Suporte para teclados Non-US
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i L\'92der de Projeto
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i Localiza\'8d\'8bo para o Alem\'8bo
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i Localiza\'8d\'8bo para o Sueco
-\f0\i0 \
-Greg Parker\
-
-\f2\i Suporte ao modo Compartilhado (Rootless)
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Localiza\'8d\'8bo para o Japon\'90s
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i Localiza\'8d\'8bo para o Fran\'8d\'90s
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Agradecimentos Especiais:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i Instalador
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Membros do Time XonX\
-Contribuindo com o XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Suporte ao Darwin x86\
-
-\f0\i0 Torrey T. Lyons\
-
-\f2\i L\'92der de Projeto
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i Vers\'8bo Cocoa da interface XDarwin
-\f0\i0 \
-Greg Parker\
-
-\f2\i Implementa\'8d\'8bo Original
-\f0\i0
-\f2\i ao Quartz \
-
-\f0\i0 Christoph Pfisterer\
-
-\f2\i Bibliotecas Din\'89micas Compartilhadas
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Localiza\'8d\'8bo para o Japon\'90s
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Agradecimento Especial:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-
-\f2\i \'eacone do XDarwin
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Hist\'97rico:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-
-\f2\i Suporte Original do XFree86 no Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-
-\f2\i Suporte ao
-\f0\i0
-\f2\i XFree86 4.0 no Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Integra\'8d\'8bo dentro do Projeto XFree86 na vers\'8bo 4.0.2} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/Imakefile b/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/Imakefile
deleted file mode 100644
index d367fbcee..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/Imakefile
+++ /dev/null
@@ -1,36 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile,v 1.1 2001/05/21 01:42:17 torrey Exp $
-
-#include <Server.tmpl>
-
-LinkSourceFile(InfoPlist.strings.cpp,../English.lproj)
-
-INCLUDES = -I$(SERVERSRC)/include
-
-#if defined (XorgVersionString)
-VERS = XorgVersionString
-PRE = XORG_VERSION_SNAP
-NAME = "X Version 11"
-LINK = '<a HREF="http://wiki.x.org/">X.Org Foundation</a>'
-#elif defined XFree86VersionString
-VERS = XFree86VersionString
-PRE = XF86_VERSION_SNAP
-NAME = "XFree86"
-LINK = '<a HREF="http://www.XFree86.Org/">XFree86 Project, Inc.</a>'
-#endif
-DATE = XFree86DateString
-X_DEFS = $(INCLUDES) -DX_VERSION=$(VERS) -DX_PRE_RELEASE=$(PRE) \
- -DX_REL_DATE=$(DATE) -DX_VENDOR_NAME=$(NAME) -DX_VENDOR_LINK=$(LINK)
-
-AllTarget(XDarwinHelp.html)
-CppFileTarget(XDarwinHelp.html,XDarwinHelp.html.cpp,$(X_DEFS), \
- NullParameter)
-
-AllTarget(InfoPlist.strings)
-InfoPlist.strings: InfoPlist.strings.cpp
- RemoveFile($@)
- ClearmakeOSName \
- $(CPP) CppNoLineInfoOption $(X_DEFS) <InfoPlist.strings.cpp | \
- CppSedMagic | sed 's/__quote__/"/g' >$@
-
-clean::
- RemoveFiles(InfoPlist.strings)
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/Localizable.strings b/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/Localizable.strings
deleted file mode 100644
index c79b282f6..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/Localizable.strings
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/classes.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a4e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- IBClasses = (
- {
- ACTIONS = {showHelp = id; };
- CLASS = FirstResponder;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
- CLASS = Preferences;
- LANGUAGE = ObjC;
- OUTLETS = {
- addToPathButton = id;
- addToPathField = id;
- button2ModifiersMatrix = id;
- button3ModifiersMatrix = id;
- depthButton = id;
- displayField = id;
- dockSwitchButton = id;
- fakeButton = id;
- keymapFileField = id;
- modeMatrix = id;
- modeWindowButton = id;
- mouseAccelChangeButton = id;
- startupHelpButton = id;
- switchKeyButton = id;
- systemBeepButton = id;
- useDefaultShellMatrix = id;
- useOtherShellField = id;
- useXineramaButton = id;
- window = id;
- };
- SUPERCLASS = NSObject;
- },
- {
- CLASS = XApplication;
- LANGUAGE = ObjC;
- OUTLETS = {preferences = id; xserver = id; };
- SUPERCLASS = NSApplication;
- },
- {
- ACTIONS = {
- bringAllToFront = id;
- closeHelpAndShow = id;
- itemSelected = id;
- nextWindow = id;
- previousWindow = id;
- showAction = id;
- showSwitchPanel = id;
- startFullScreen = id;
- startRootless = id;
- };
- CLASS = XServer;
- LANGUAGE = ObjC;
- OUTLETS = {
- dockMenu = NSMenu;
- helpWindow = NSWindow;
- modeWindow = NSWindow;
- startFullScreenButton = NSButton;
- startRootlessButton = NSButton;
- startupHelpButton = NSButton;
- startupModeButton = NSButton;
- switchWindow = NSPanel;
- windowMenu = NSMenu;
- windowSeparator = NSMenuItem;
- };
- SUPERCLASS = NSObject;
- }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/objects.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 9cb67cf89..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/objects.nib
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp b/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 7ef1ba5d8..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-<!-- $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp,v 1.2 2001/11/04 07:02:28 torrey Exp $ --><html><body>
-
-<head>
-<title>XDarwin Help</title>
-</head>
-
-<center>
-
- <h1>XDarwin X Server para Mac OS X</h1>
- X_VENDOR_NAME X_VERSION<br>
- Release Date: X_REL_DATE
-</center>
-<h2>&Iacute;ndice</h2>
-<ol>
- <li><A HREF="#notice">Notas importantes</A></li>
- <li><A HREF="#usage">Uso</A></li>
- <li><A HREF="#path">Ajustando seu Path</A></li>
-
- <li><A HREF="#prefs">Prefer&ecirc;ncias do usu&aacute;rio</A></li>
- <li><A HREF="#license">Licen&ccedil;a</A></li>
-</ol>
-<center>
- <h2><a NAME="notice">Notas importantes</a></h2>
-</center>
-<blockquote>
-#if PRE_RELEASE
- Essa &eacute; uma vers&atilde;o pr&eacute;-lancamento
- do XDarwin, e ela n&atilde;o &eacute; suportada de nenhuma forma. Bugs podem
- ser reportados e corre&ccedil;&otilde;es podem ser enviadas para <A HREF="http://sourceforge.net/projects/xonx/">P&aacute;gina
- do projeto XonX</A> no SourceForge. Antes de informar bugs em vers&otilde;es
- pr&eacute;-lancamento, por favor verifique a þltima vers&atilde;o em <A HREF="http://sourceforge.net/projects/xonx/">XonX</A>
- or X_VENDOR_LINK.
-#else
-Se o servidor &eacute; mais velho que 6-12 semanas, ou seu hardware &eacute;
- mais novo que a data acima, procure por uma nova vers&atilde;o antes de informar
- problemas. Bugs podem ser reportados e corre&ccedil;&otilde;es podem ser enviadas
- para a <A HREF="http://sourceforge.net/projects/xonx/">P&aacute;gina do projeto
- XonX</A> na SourceForge.
-#endif
-</blockquote>
-<blockquote> Este software &eacute; distribu&iacute;do sob os termos da <a href="#license">licen&ccedil;a
- MIT X11 / X Consortium</a> e &eacute; provido, sem nenhuma garantia. Por favor
- leia a <a href="#license">Licen&ccedil;a</a> antes de come&ccedil;ar a usar
- o programa.</blockquote>
-
-<h2><a NAME="usage">Uso</a></h2>
-<p>O XDarwin &eacute; uma X server &quot;open-source&quot; livremente
- redistribu&iacute;da do <a HREF
-="http://www.x.org/">Sistema X Window</a>. This version of XDarwin was produced by the X_VENDOR_LINK.
- XDarwin roda sobre Mac OS X no modo Tela Cheia ou no modo Compartilhado.</p>
-<p>No modo Tela Cheia, quando o sistema X window est&aacute; ativo, ele ocupa
- a tela toda. Voc&ecirc; pode voltar ao desktop do Mac OS X clicando Command-Option-A.
- Essa combina&ccedil;&atilde;o de teclas pode ser mudada nas prefer&ecirc;ncias.
- Pelo desktop Mac OS X, clique no &iacute;cone XDarwin no Dock para voltar ao
- sistema X window. (Voc&ecirc; pode mudar esse comportamento nas prefer&ecirc;ncias
- da&iacute; voc&ecirc; dever&aacute; clicar no &iacute;cone XDarwin na janela
- flutuante que aparecer&aacute;.)</p>
-<p>No modo Compartilhado, o sistema X window e Aqua dividem a mesma tela. A janela
- raiz da tela X11 est&aacute; do tamanho da tela (monitor) e cont&eacute;m todas
- as outras janelas. A janela raiz do X11 no modo compartilhado n&atilde;o &eacute;
- mostrada pois o Aqua controla o fundo de tela.</p>
-<h3>Emula&ccedil;&atilde;o de Mouse Multi-Bot&otilde;es</h3>
-<p>Muitas aplica&ccedil;&otilde;es X11 insistem em usar um mouse de 3 bot&otilde;es.
- Voc&ecirc; pode emular um mouse de 3 bot&otilde;es com um simples bot&atilde;o,
- mantendo pressionando teclas modificadoras enquanto voc&ecirc; clica no bot&atilde;o
- do mouse. Isto &eacute; controlado pela configura&ccedil;&atilde;o da &quot;Emula&ccedil;&atilde;o
- de Mouse Multi-Bot&otilde;es&quot; da prefer&ecirc;ncia &quot;Geral&quot;. Por
- padr&atilde;o, a emula&ccedil;&atilde;o est&aacute; habilitada e mantendo pressionada
- a tecla Command e clicando no bot&atilde;o do mouse ele simular&aacute; o clique
- no segundo bot&atilde;o do mouse. Mantendo pressionada a tecla Option e clicando
- no bot&atilde;o do mouse ele simular&aacute; o terceiro bot&atilde;o. Voc&ecirc;
- pode mudar a combina&ccedil;&atilde;o de teclas modificadoras para emular os
- bot&otilde;es dois e tr&ecirc;s nas prefer&ecirc;ncias. Nota, se a tecla modificadora
- foi mapeada para alguma outra tecla no xmodmap, voc&ecirc; ainda ter&aacute;
- que usar a tecla atual especificada nas prefer&ecirc;ncias para a emula&ccedil;&atilde;o
- do mouse multi-bot&otilde;es.</p>
-<h2><a NAME="path">Ajustando seu Path</a></h2>
-<p>Seu path &eacute; a lista de diret&oacute;rios a serem procurados por arquivos
- execut&aacute;veis. O comando X11 est&aacute; localizado em <code>/usr/X11R6/bin</code>,
- que precisa ser adicionado ao seu path. XDarwin faz isso para voc&ecirc; por
- padr&atilde;o e pode-se tamb&eacute;m adicionar diret&oacute;rios onde voc&ecirc;
- instalou aplica&ccedil;&otilde;es de linha de comando.</p>
-<p>Usu&aacute;rios experientes j&aacute; ter&atilde;o configurado corretamente
- seu path usando arquivos de inicializa&ccedil;&atilde;o de seu shell. Neste
- caso, voc&ecirc; pode informar o XDarwin para n&atilde;o modificar seu path
- nas prefer&ecirc;ncias. O XDarwin inicia o cliente inicial X11 no shell padr&atilde;o
- do usu&aacute;rio corrente. (Um shell alternativo pode ser tamb&eacute;m expecificado
- nas prefer&ecirc;ncias.) O modo para ajustar o path depende do shell que voc&ecirc;
- est&aacute; usando. Isto &eacute; descrito na man page do seu shell.</p>
-<p>Voc&ecirc; pode tamb&eacute;m querer adicionar as man pages do X11 para
- a lista de p&aacute;ginas a serem procuradas quando voc&ecirc; est&aacute; procurando
- por documenta&ccedil;&atilde;o. As man pages do X11 est&atilde;o localizadas
- em <code>/usr/X11R6/man</code> e a vari&aacute;vel de ambiente <code>MANPATH</code>
- cont&eacute;m a lista de diret&oacute;rios a buscar.</p>
-<h2><a NAME="prefs">Prefer&ecirc;ncias do Usu&aacute;rio</a></h2>
-<p>V&aacute;rias op&ccedil;&otilde;es podem ser ajustadas nas prefer&ecirc;ncias
- do usu&aacute;rio, acess&iacute;vel pelo item &quot;Prefer&ecirc;ncias...&quot;
- no menu &quot;XDarwin&quot;. As op&ccedil;&otilde;es listadas como op&ccedil;&otilde;es
- de inicializa&ccedil;&atilde;o, n&atilde;o ter&atilde;o efeito at&eacute; voc&ecirc;
- reiniciar o XDarwin. Todas as outras op&ccedil;&otilde;es ter&atilde;o efeito
- imediatamente. V&aacute;rias das op&ccedil;&otilde;es est&atilde;o descritas
- abaixo:</p>
-<h3>Geral</h3>
-<ul>
- <li><b>Usar o Beep do Sistema para o X11: </b>Quando habilitado som de alerta
- padr&atilde;o do Mac OS X ser&aacute; usado como alerta no X11. Quando desabilitado
- (padr&atilde;o) um tom simples ser&aacute; usado.</li>
- <li><b>Permitir o X11 mudar a acelera&ccedil;&atilde;o do mouse: </b>Por implementa&ccedil;&atilde;o
- padr&atilde;o no sistema X window, o gerenciador de janelas pode mudar a acelera&ccedil;&atilde;o
- do mouse. Isso pode gerar uma confus&atilde;o pois a acelera&ccedil;&atilde;o
- do mouse pode ser ajustada diferentemente nas prefer&ecirc;ncias do Mac OS
- X e nas prefer&ecirc;ncias do X window. Por padr&atilde;o, o X11 n&atilde;o
- est&aacute; habilitado a mudar a acelera&ccedil;&atilde;o do mouse para evitar
- este problema.</li>
- <li><b>Emula&ccedil;&atilde;o de Mouse de Multi-Bot&otilde;es: </b>Esta op&ccedil;&atilde;o
- est&aacute; escrita acima em <a href="#usage">Uso</a>. Quando a emula&ccedil;&atilde;o
- est&aacute; habilitada as teclas modificadoras selecionadas tem que estar
- pressionadas quando o bot&atilde;o do mouse for pressionado, para emular o
- segundo e terceiro bot&otilde;es.</li>
-</ul>
-<h3>Inicial</h3>
-<ul>
- <li><b>Modo Padr&atilde;o: </b>Se o usu&aacute;rio n&atilde;o indicar qual modo
- de exibi&ccedil;&atilde;o quer usar (Tela Cheia ou Compartilhado) o modo especificado
- aqui ser&aacute; usado .</li>
- <li><b>Mostrar o painel de escolha na inicializa&ccedil;&atilde;o: </b> Por
- padr&atilde;o, uma painel &eacute; mostrado quando o XDarwin &eacute;
- iniciado para permitir que o usu&aacute;rio escolha ente o modo tela cheia
- ou modo compartilhado. Se esta op&ccedil;&atilde;o estiver desligada, o modo
- padr&atilde;o ser&aacute; inicializado automaticamente.</li>
- <li><b>N&uacute;mero do Monitor X11: </b>O X11 permite ser administrado em multiplos
- monitores por servidores X separados num mesmo computador. O usu&aacute;rio
- pode indicar o n&uacute;mero do monitor para o XDarwin usar se mais de um
- servidor X se estiver rodando simultaneamente.</li>
- <li><b>Habilitar suporte a m&uacute;ltiplos monitores pelo Xinerama: </b>o XDarwin
- suporta m&uacute;ltiplos monitores com o Xinerama, que trata todos os monitores
- como parte de uma grande e retangular tela. Voc&ecirc; pode desabilitar o
- Xinerama com est&aacute; op&ccedil;&atilde;o, mas normalmente o XDarwin n&atilde;o
- controla m&uacute;ltiplos monitores corretamente sem est&aacute; op&ccedil;&atilde;o.
- Se voc&ecirc; s&oacute; tiver um monotor, Xinerama &eacute; automaticamente
- desabilitado. </li>
- <li><b>Arquivo de Mapa de Teclado: </b> O mapa de teclado &eacute; lido na inicializa&ccedil;&atilde;o
- e traduzido para um mapa de teclado X11. Arquivos de mapa de teclado, est&atilde;o
- dispon&iacute;veis numa grande variedade de l&iacute;nguas e s&atilde;o encontradas
- em <code>/System/Library/Keyboards</code>.</li>
- <li><b>Iniciando Clientes X11 primeiro: </b>Quando o XDrawin &eacute; inicializado
- pelo Finder, ele ir&aacute; rodar o <code>xinit</code> para abrir o controlador
- X window e outros clientes X. (Veja o manual "<code>man xinit</code>" para
- mais informa&ccedil;&otilde;es.) Antes do XDarwin rodar o <code>xinit</code>
- ele ir&aacute; adicionar espec&iacute;ficos diret&oacute;rios a seu path.
- Por padr&atilde;o somente o <code>/usr/X11R6/bin</code> &eacute; adicionado.
- separado por um ponto-e-v&iacute;rgula. Os clientes X s&atilde;o inicializados
- no shell padr&atilde;o do usu&aacute;rio e os arquivos de inicializa&ccedil;&atilde;o
- do shell ser&atilde;o lidos. Se desejado, um shell alternativo pode ser especificado.</li>
-</ul>
-<h3>Tela Cheia</h3>
-<ul>
- <li><b>Bot&atilde;o de Combina&ccedil;&atilde;o de Teclas: </b> Clique no bot&atilde;o
- e pressione qualquer quantidade de teclas modificadoras seguidas por uma tecla
- padr&atilde;o para modificar a combina&ccedil;&atilde;o quando se quer mudar
- entre o Aqua e X11.</li>
- <li><b>Clique no &Iacute;cone no Dock para mudar para o X11: </b>Habilitando
- esta op&ccedil;&atilde;o voc&ecirc; ir&aacute; ativar a mudan&ccedil;a para
- o X11 clicando no &iacute;cone do XDarwin no Dock. Em algumas vers&otilde;es
- do Mac OS X, mudando pelo clique no Dock pode causar o desaparecimento do
- cursor quando retornar ao Aqua.</li>
- <li><b>Mostrar a Ajuda na inicializa&ccedil;&atilde;o: </b>Isto ir&aacute; mostrar
- uma tela introdut&oacute;ria quando o XDarwin for inicializado no modo Tela
- Cheia. </li>
- <li><b>Profundidade de Cores em bits: </b> No modo Tela Cheia, a tela do X11
- pode usar uma profundiadde de cor diferente da usada no Aqua. Se a op&ccedil;&atilde;o
- &quot;Atual&quot; est&aacute; especificada, a profundidade usada pelo Aqua
- quando o XDarwin iniciar ser&aacute; a mesma. Al&eacute;m das op&ccedil;&otilde;es
- 8, 15 ou 24 bits que podem ser especificadas.</li>
-</ul>
-
-<h2><a NAME="license">Licen&ccedil;a</a></h2>
-<p>A licen&ccedil;a
- principal n&oacute;s por XDarwin baseada na licen&ccedil;a tradicional MIT X11
- / X Consortium, que n&atilde;o imp&otilde;e nenhuma condi&ccedil;&atilde;o sobre
- modifica&ccedil;&otilde;es ou redistribui&ccedil;&atilde;o do c&oacute;digo-fonte
- ou dos bin&aacute;rios desde que o copyright/licen&ccedil;a sejam mantidos intactos.
- Para mais informa&ccedil;&otilde;es e not&iacute;cias adicionais de copyright/licensing
- em algumas se&ccedil;&atilde;o do c&oacute;digo, por favor refer to the source code.</p>
-<H3><A NAME="3"></A>Licen&ccedil;a do X Consortium</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>Permiss&otilde;es s&atilde;o em virtude garantidas, livre de mudan&ccedil;as,
- para qualquer pessoa que possua uma c&oacute;pia deste software e aos arquivos
- de documenta&ccedil;&atilde;o associada (o &quot;Software&quot;), para lidar
- com o software sem restri&ccedil;&otilde;es, incluindo limita&ccedil;&otilde;es
- dos direitos de uso, c&oacute;pia, modifica&ccedil;&atilde;o, inclus&atilde;o,
- publica&ccedil;&atilde;o, distribui&ccedil;&atilde;o, sub licen&ccedil;a, e/ou
- venda de c&oacute;pias deste Software, e permitir pessoas to whom o Software
- &eacute; fornecido para ser desta forma, verifique as seguintes condi&ccedil;&otilde;es:</p>
-<p>O nota de copyright abaixo e a permiss&atilde;o dever&atilde;o ser inclu&iacute;das
- em todas as c&oacute;pias ou substanciais por&ccedil;&otilde;es do Software.</p>
-<p>O SOFTWARE 'E PROVIDO &quot;COMO TAL&quot;, SEM GARANTIAS DE NENHUM TIPO, EXPLICITA
- OU IMPLICITA, INCLUINDO MAS N&Atilde;O LIMITADO NOS AVISOS DE COM&Eacute;RCIO,
- TAMANHO OU PARA PROPOSTAS PARTICULARES E N&Atilde;O INFRA&Ccedil;&Atilde;O.
- EM NENHUM ACONTECIMENTO O X CONSORTIUM SER&Aacute; RESPONSAV&Eacute;L POR NENHUMA
- RECLAMA&Ccedil;&Atilde;O, DANOS OU OUTRAS RESPONSABILIDADES, SE NUMA A&Ccedil;&Atilde;O
- DE CONTRATO, OU OUTRA COISA, SURGINDO DE, FORA DE OU EM CONEX&Atilde;O COM O
- SOFTWARE OU O USO OU OUTRO MODO DE LIDAR COM O SOFTWARE.</p>
-<p>Exceto o contido nesta nota, o nome do X Consortium n&atilde;o pode ser usado
- em propagandas ou outra forma de promo&ccedil;&atilde;o de vendas, uso ou outro
- modo de lidar com este Software sem ter recebido uma autoriza&ccedil;&atilde;o
- escrita pelo X Consortium.</p>
-<p>O Sistema X Window &eacute; marca registrada do X Consortium, Inc.</p>
-</body>
-</html>
-
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/Credits.rtf b/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/Credits.rtf
deleted file mode 100644
index 34408e78c..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/Credits.rtf
+++ /dev/null
@@ -1,168 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5160\viewh6300\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Darwin x86 support
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i Spanish localization
-\f0\i0 \
-Paul Edens\
-
-\f2\i Dutch localization
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i Korean localization
-\f0\i0 \
-Mario Klebsch\
-
-\f2\i Non-US keyboard support
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i German localization
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i Swedish localization
-\f0\i0 \
-Greg Parker\
-
-\f2\i Rootless support
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Japanese localization
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i French localization
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i Installer
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Darwin x86 support
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i Cocoa version of XDarwin front end
-\f0\i0 \
-Greg Parker\
-
-\f2\i Original Quartz implementation
-\f0\i0 \
-Christoph Pfisterer\
-
-\f2\i Dynamic shared libraries
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Japanese localization
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-
-\f2\i XDarwin icon
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 History:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-
-\f2\i Original XFree86 port to Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-
-\f2\i XFree86 4.0 port to Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Integration into XFree86 Project for 4.0.2} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/Imakefile b/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/Imakefile
deleted file mode 100644
index d367fbcee..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/Imakefile
+++ /dev/null
@@ -1,36 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile,v 1.1 2001/05/21 01:42:17 torrey Exp $
-
-#include <Server.tmpl>
-
-LinkSourceFile(InfoPlist.strings.cpp,../English.lproj)
-
-INCLUDES = -I$(SERVERSRC)/include
-
-#if defined (XorgVersionString)
-VERS = XorgVersionString
-PRE = XORG_VERSION_SNAP
-NAME = "X Version 11"
-LINK = '<a HREF="http://wiki.x.org/">X.Org Foundation</a>'
-#elif defined XFree86VersionString
-VERS = XFree86VersionString
-PRE = XF86_VERSION_SNAP
-NAME = "XFree86"
-LINK = '<a HREF="http://www.XFree86.Org/">XFree86 Project, Inc.</a>'
-#endif
-DATE = XFree86DateString
-X_DEFS = $(INCLUDES) -DX_VERSION=$(VERS) -DX_PRE_RELEASE=$(PRE) \
- -DX_REL_DATE=$(DATE) -DX_VENDOR_NAME=$(NAME) -DX_VENDOR_LINK=$(LINK)
-
-AllTarget(XDarwinHelp.html)
-CppFileTarget(XDarwinHelp.html,XDarwinHelp.html.cpp,$(X_DEFS), \
- NullParameter)
-
-AllTarget(InfoPlist.strings)
-InfoPlist.strings: InfoPlist.strings.cpp
- RemoveFile($@)
- ClearmakeOSName \
- $(CPP) CppNoLineInfoOption $(X_DEFS) <InfoPlist.strings.cpp | \
- CppSedMagic | sed 's/__quote__/"/g' >$@
-
-clean::
- RemoveFiles(InfoPlist.strings)
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/Localizable.strings b/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/Localizable.strings
deleted file mode 100644
index 5bf813f1f..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/Localizable.strings
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/classes.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a4e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- IBClasses = (
- {
- ACTIONS = {showHelp = id; };
- CLASS = FirstResponder;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
- CLASS = Preferences;
- LANGUAGE = ObjC;
- OUTLETS = {
- addToPathButton = id;
- addToPathField = id;
- button2ModifiersMatrix = id;
- button3ModifiersMatrix = id;
- depthButton = id;
- displayField = id;
- dockSwitchButton = id;
- fakeButton = id;
- keymapFileField = id;
- modeMatrix = id;
- modeWindowButton = id;
- mouseAccelChangeButton = id;
- startupHelpButton = id;
- switchKeyButton = id;
- systemBeepButton = id;
- useDefaultShellMatrix = id;
- useOtherShellField = id;
- useXineramaButton = id;
- window = id;
- };
- SUPERCLASS = NSObject;
- },
- {
- CLASS = XApplication;
- LANGUAGE = ObjC;
- OUTLETS = {preferences = id; xserver = id; };
- SUPERCLASS = NSApplication;
- },
- {
- ACTIONS = {
- bringAllToFront = id;
- closeHelpAndShow = id;
- itemSelected = id;
- nextWindow = id;
- previousWindow = id;
- showAction = id;
- showSwitchPanel = id;
- startFullScreen = id;
- startRootless = id;
- };
- CLASS = XServer;
- LANGUAGE = ObjC;
- OUTLETS = {
- dockMenu = NSMenu;
- helpWindow = NSWindow;
- modeWindow = NSWindow;
- startFullScreenButton = NSButton;
- startRootlessButton = NSButton;
- startupHelpButton = NSButton;
- startupModeButton = NSButton;
- switchWindow = NSPanel;
- windowMenu = NSMenu;
- windowSeparator = NSMenuItem;
- };
- SUPERCLASS = NSObject;
- }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/objects.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 2df75ee0c..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/objects.nib
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp b/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 5cd27862d..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-<!-- $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp,v 1.2 2001/11/04 07:02:28 torrey Exp $ -->
-
-<html>
-<head>
-<title>XDarwin Ayuda</title>
-</head>
-<body>
-<center>
- <h1>XDarwin X Server for Mac OS X</h1>
- X_VENDOR_NAME X_VERSION<br>
- Fecha de release: X_REL_DATE
-</center>
-<h2>Contenido</h2>
-<ol>
- <li><A HREF="#notice">Aviso Importante</A></li>
- <li><A HREF="#usage">Modo de uso</A></li>
- <li><A HREF="#path">Configurando su Path</A></li>
- <li><A HREF="#prefs">Preferencias del Usuario</A></li>
- <li><A HREF="#license">Licencia</A></li>
-</ol>
-<center>
- <h2><a NAME="notice">Aviso Importante</a></h2>
-</center>
-<blockquote>
-#if PRE_RELEASE
-Esta es una versi&oacuten pre-release de XDarwin, y no tiene ning&uacuten soporte. Patches y reportes de error pueden ser enviados a la <A HREF="http://sourceforge.net/projects/xonx/">p&aacutegina del proyecto XonX</A> en SourceForge. Antes de reportar errores en versiones pre-release, por favor verifique la ultima versi&oacuten en <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> o bien el X_VENDOR_LINK.
-#else
-Si el server el m&aacutes antiguo que 6 a 12 meses, o si su hardware es posterior a la fecha indicada m&aacutes arriba, por favor verifique la &uacuteltima versi&oacuten antes de reportar problemas. Patches y reportes de error pueden ser enviados a la <A HREF="http://sourceforge.net/projects/xonx/">p&aacutegina del proyecto XonX</A> en SourceForge.
-#endif
-</blockquote>
-<blockquote>
-Este software es distribuido bajo los t&eacuterminos de la <A HREF="#license">Licencia MIT X11 / X Consortium</A> y es provisto sin garant&iacutea alguna y en el estado en que se encuentra. Por favor lea la <A HREF="#license">Licencia</A> antes de utilizarlo.</blockquote>
-
-<h2><a NAME="usage">Modo de uso</a></h2>
-<p>XDarwin es una X server open-source de distribuci&oacuten libre del <a HREF
-="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin funciona en Mac OS X en modo pantalla completa o en modo rootless (integrado al escritorio).</p>
-<p>En modo pantalla completa, el X window system toma control total de la pantalla mientras esta activo. Presionando Command-Option-A puede regresar al Escritorio de Mac OS X. Esta combinaci&oacuten de teclas puede cambiarse en las Preferencias de Usuario. Desde el Escritorio de Mac OS X, haga click en &iacutecono de XDarwin en el Dock para volver al X window system. (Puede cambiar esta comportamiento en las Preferencias de Usuario y configurar que XDarwin vuelva al X window system haciendo click en la ventana flotante con el logo X.)</p>
-<p>En modo rootless, el X window system comparte la pantalla con Aqua. La ventana root de X11 es del tama&ntildeo de la pantalla y contiene a todas las dem&aacutes ventanas. La ventana root de X11 no se muestra en este modo, ya que Aqua maneja el fondo de pantalla.</p>
-<h3>Emulaci&oacuten de mouse multi-bot&oacuten</h3>
-<p>Muchas aplicaciones X11 requieren del uso de un mouse de 3 botones. Es posible emular un mouse de 3 botones con un mouse de solo un bot&oacuten presionando teclas modificadoras mientras hace click. Esto es controlado en de la seccion "Emulaci&oacuten mouse" dentro de la secci&oacuten "General" de las Preferencias del Usuario. Por defecto, la emulaci&oacuten est&aacute activa y utiliza la tecla Command para simular el 2do bot&oacuten y la tecla Option para simlar el 3er bot&oacuten. La conbinaci&oacuten para simular el 2do y 3er bot&oacuten pueden ser modificada por cualquier combinaci&oacuten de teclas modificadoras dentro de las Preferencias del Usuario. Tenga en cuenta que aunque las teclas modificadoras hayan sido mapeadas a otras teclas con xmodmap, las teclas configuradas en las Preferencias del Usuario seguir&aacuten siendo las utilizadas por la emulaci&oacuten de mouse multi-bot&oacuten.</p>
-
-<h2><a NAME="path">Configurando su Path</a></h2>
-<p>El path es la lista de directorios donde se buscar&aacuten los comandos ejecutables. Los comandos de X11 se encuentran en <code>/usr/X11R6/bin</code>, y &eacuteste necesita estar dentro de su path. XDarwin hace &eacutesto autom&aacuteticamente por defecto, y puede adem&aacutes agregar directorios adicionales donde tenga otros comandos de l&iacutenea.</p>
-<p>Usuarios experimentados pueden tener su path correctamente configurado mediante los archivos de inicio de su interprete de comandos. En este caso, puede informarle a XDarwin en las Preferencias de Usuario para que no modifique su path. XDarwin arrancar&aacute los clientes X11 iniciales usando el int&eacuterprete de comandos del usuario, seg&uacuten su configuraci&oacuten de login. Un int&eacuterprete de comandos alternativo puede ser especificado en las Preferencias del Usuario. La manera de configurar el path de su int&eacuterprete de comandos depende de cual est&aacute usando, y es generalmente descripta en las p&aacuteginas man del mismo.</p>
-<p>Adem&aacutes, Ud. puede agregar las p&aacuteginas man de X11 a la lista de p&aacuteginas que son consultadas. Estas est&aacuten ubicadas en <code>/usr/X11R6/man</code> y <code>MANPATH</code> es la variable de entorno que contiene los directorios que son consultados.</p>
-
-<h2><a NAME="prefs">Preferencias del Usuario</a></h2>
-<p>Ciertas opciones pueden definirse dentro de "Preferencias...", en el men&uacute de XDarwin. Las opciones dentro de de "Inicio" no surtir&aacuten efecto hasta que la aplicaci&oacuten se reinicie. Las restantes opciones surten efecto inmediatamente. Las diferentes opciones se describen a continuaci&oacuten:</p>
-<h3>General</h3>
-<ul>
- <li><b>Usar beep del sistema en X11:</b> Cuando esta opci&oacuten est&aacute activa, el sonido de alerta est&aacutendar de Mac OS X se usar&aacute como alerta de X11. Cuando est&aacute desactivada, un simple tono es utilizado (esta es la opci&oacuten por defecto).</li>
- <li><b>Permitir que X11 cambie la aceleraci&oacuten del mouse:</b> En una implementaci&oacuten est&aacutendard de X11, el window manager puede cambiar la aceleraci&oacuten del mouse. Esto puede llevar a una gran confusi&oacuten si la aceleraci&oacuten es diferente en XDarwin y en Mac OS X. Por defecto, no se le permite a X11 alterar la aceleraci&oacuten para evitar este inconveniente.</li>
- <li><b>Emulaci&oacuten de mouse multi-bot&oacuten:</b> Esta opci&oacuten es descripta m&aacutes arriba bajo <a HREF="#usage">Modo de Uso</a>. Cuando esta emulaci&oacuten est&aacute activa los modificadores seleccionados deben ser presionados cuando se hace click para emular el bot&oacuten 2 o el bot&oacuten 3.</li>
-</ul>
-<h3>Inicio</h3>
-<ul>
- <li><b>Modo inicial:</b> Si el usuario no indica si desea utilizar la Pantalla Completa o el modo Rootless, el modo especificado aqu&iacute ser&aacute el usado.</li>
- <li><b>Mostrar panel de selecci&oacuten al inicio:</b> Por defecto, un di&aacutelogo permite al usuario elegir entre Pantalla Completa o Rootless al inicio. Si esta opci&oacuten esta desactivada, XDarwin arrancar&aacute utilizando el modo por defecto sin consultar al usuario.</li>
- <li><b>N&uacutemero de display X11:</b> X11 permite que existan m&uacuteltiples pantallas manejadas por servidores X11 separados funcionando en una misma computadora. El usuario puede especificar aqui un n&uacutemero entero para indicar el n&uacutemero de pantalla (display) que XDarwin utilizar&aacute si m&aacutes de un servidor X funciona en forma simult&aacutenea.</li>
- <li><b>Habilitar soporte Xinerama para m&uacuteltipes monitores:</b> XDarwin suporta m&uacuteltiple monitores con Xinerama, que maneja todos los monitores como si fueran parte de una gran pantalla rectangular. Puede deshabilitar Xinerama con esta opci&oacuten, pero XDarwin no maneja m&uacuteltiples monitores en forma correcta sin esta opci&oacuten habilitada. Si tiene solo un monitor, Xinerama es autom&aacuteticamente deshabilitado.</li>
- <li><b>Archivo de mapa de teclado:</b> Un archivo de mapa de teclas es le&iacutedo al inicio y es traducido a un keymap X11 (un archivo est&aacutendard de X11 para especificar la funci&oacuten de cada tecla). Estos archivos, disponibles para una amplia variedad de lenguajes, pueden encontrarse en <code>/System/Library/Keyboards</code>.</li>
- <li><b>Al iniciar clientes X11:</b> Cuando XDarwin arranca desde el Finder, &eacuteste ejecutar&aacute <code>xinit</code> para a su vez arrancar el window manager y otros clientes. (Vea en "<code>man xinit</code>" para mayor informaci&oacuten). Antes de ejecutar <code>xinit</code> XDarwin agregar&aacute los directorios especificados al path del usuario. Por defecto, solo <code>/usr/X11R6/bin</code> es agregado. Otros directorios adicionales puede agregarse separados por dos puntos (:). Los clientes X son ejecutados con el int&eacuterprete de comandos del usuario, por lo que los archivos de inicio de &eacuteste son le&iacutedos. Si se desea, un int&eacuterprete de comandos diferente puede ser especificado.</li>
-</ul>
-<h3>Pantalla Completa</h3>
-<ul>
- <li><b>Bot&oacuten para definir combinaci&oacuten de teclas:</b> Haga click en este bot&oacuten y luego presione cualquier combinaci&oacuten de modificadores seguidos de una tecla convencional para definir que combinaci&oacuten usar&aacute para intercambiar entre X11 y Aqua.</li>
- <li><b>Click en el &iacutecono del Dock cambia a X11:</b> Habilite esta opci&oacuten para volver a X11 al hacer click en &iacutecono de XDarwin en el Dock. En algunas versiones de Mac OS X, al volver haciendo click en el Dock puede causar al desaparci&oacuten del cursor al volver a Aqua.</li>
- <li><b>Mostrar ayuda al inicio:</b> Esta opci&oacuten habilitada har&aacute que una pantalla inicial de introducci&oacuten aparezca cuando XDarwin es arrancado en modo Pantalla Completa.</li>
- <li><b>Profundidad de color (bits):</b> En modo Pantalla Completa, el display X11 puede utilizar una profundidad de color diferente de la utilizada por Aqua. Si se especifica "Actual", la misma profundidad de color que Aqua utiliza ser&aacute adoptada por X11. Al contrario, puede especificar 8, 15, o 24 bits.</li>
-</ul>
-
-<h2><a NAME="license">Licencia</a></h2>
-La licencia principal de XDarwin es basada en la Licencia MIT X11 tradicional, que no impone condiciones a la modificaci&oacuten o redistribuci&oacuten del c&oacutedigo fuente o de archivos binarios m&aacutes all&aacute de requerir que los mensajes de Licencia y Copyright se mantengan intactos. Para mayor informaci&oacuten y para mensajes adicionales de Licencia y Copyright que cubren algunas secciones del c&oacutedigo fuente, por favor consulte the source code.
-<H3><A NAME="3"></A>Licencia del X Consortium</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>Se otorga aqui permiso, libre de costo, a toda persona que obtenga una copia de este Software y los archivos de documentaci&oacuten asociados (el "Software"),
-para utilizar el Software sin restricciones, incluyendo sin l&iacutemites los derechos de usar, copiar, modificar, integrar con otros productos, publicar, distribuir, sub-licenciar y/o comercializar copias del Software, y de permitir a las personas que lo reciben para hacer lo propio, sujeto a las siguientes condiciones:</p>
-<p>El mensaje de Copyright indicado m&aacutes arriba y este permiso ser&aacute inclu&iacutedo en todas las copias o porciones sustanciales del Software.</p>
-<p>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 X CONSORTIUM 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.</p>
-<p>Excepto lo indicado en este mensaje, el nombre del X Consortium no ser&aacute utilizado en propaganda o como medio de promoci&oacuten para la venta, utilizaci&oacuten u otros manejos de este Software sin previa autorizaci&oacuten escrita del X Consortium.</p>
-<p>X Window System es una marca registrada de X Consortium, Inc.</p>
-<H3><A NAME="3"></A>X Consortium License (English)</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>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 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:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>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 X CONSORTIUM 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.</p>
-<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/Credits.rtf b/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/Credits.rtf
deleted file mode 100644
index 34408e78c..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/Credits.rtf
+++ /dev/null
@@ -1,168 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5160\viewh6300\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Darwin x86 support
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i Spanish localization
-\f0\i0 \
-Paul Edens\
-
-\f2\i Dutch localization
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i Korean localization
-\f0\i0 \
-Mario Klebsch\
-
-\f2\i Non-US keyboard support
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i German localization
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i Swedish localization
-\f0\i0 \
-Greg Parker\
-
-\f2\i Rootless support
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Japanese localization
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i French localization
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i Installer
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Darwin x86 support
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i Cocoa version of XDarwin front end
-\f0\i0 \
-Greg Parker\
-
-\f2\i Original Quartz implementation
-\f0\i0 \
-Christoph Pfisterer\
-
-\f2\i Dynamic shared libraries
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Japanese localization
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-
-\f2\i XDarwin icon
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 History:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-
-\f2\i Original XFree86 port to Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-
-\f2\i XFree86 4.0 port to Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Integration into XFree86 Project for 4.0.2} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/Imakefile b/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/Imakefile
deleted file mode 100644
index d367fbcee..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/Imakefile
+++ /dev/null
@@ -1,36 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile,v 1.1 2001/05/21 01:42:17 torrey Exp $
-
-#include <Server.tmpl>
-
-LinkSourceFile(InfoPlist.strings.cpp,../English.lproj)
-
-INCLUDES = -I$(SERVERSRC)/include
-
-#if defined (XorgVersionString)
-VERS = XorgVersionString
-PRE = XORG_VERSION_SNAP
-NAME = "X Version 11"
-LINK = '<a HREF="http://wiki.x.org/">X.Org Foundation</a>'
-#elif defined XFree86VersionString
-VERS = XFree86VersionString
-PRE = XF86_VERSION_SNAP
-NAME = "XFree86"
-LINK = '<a HREF="http://www.XFree86.Org/">XFree86 Project, Inc.</a>'
-#endif
-DATE = XFree86DateString
-X_DEFS = $(INCLUDES) -DX_VERSION=$(VERS) -DX_PRE_RELEASE=$(PRE) \
- -DX_REL_DATE=$(DATE) -DX_VENDOR_NAME=$(NAME) -DX_VENDOR_LINK=$(LINK)
-
-AllTarget(XDarwinHelp.html)
-CppFileTarget(XDarwinHelp.html,XDarwinHelp.html.cpp,$(X_DEFS), \
- NullParameter)
-
-AllTarget(InfoPlist.strings)
-InfoPlist.strings: InfoPlist.strings.cpp
- RemoveFile($@)
- ClearmakeOSName \
- $(CPP) CppNoLineInfoOption $(X_DEFS) <InfoPlist.strings.cpp | \
- CppSedMagic | sed 's/__quote__/"/g' >$@
-
-clean::
- RemoveFiles(InfoPlist.strings)
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/Localizable.strings b/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/Localizable.strings
deleted file mode 100644
index 9709e5469..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/Localizable.strings
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/classes.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a4e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- IBClasses = (
- {
- ACTIONS = {showHelp = id; };
- CLASS = FirstResponder;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
- CLASS = Preferences;
- LANGUAGE = ObjC;
- OUTLETS = {
- addToPathButton = id;
- addToPathField = id;
- button2ModifiersMatrix = id;
- button3ModifiersMatrix = id;
- depthButton = id;
- displayField = id;
- dockSwitchButton = id;
- fakeButton = id;
- keymapFileField = id;
- modeMatrix = id;
- modeWindowButton = id;
- mouseAccelChangeButton = id;
- startupHelpButton = id;
- switchKeyButton = id;
- systemBeepButton = id;
- useDefaultShellMatrix = id;
- useOtherShellField = id;
- useXineramaButton = id;
- window = id;
- };
- SUPERCLASS = NSObject;
- },
- {
- CLASS = XApplication;
- LANGUAGE = ObjC;
- OUTLETS = {preferences = id; xserver = id; };
- SUPERCLASS = NSApplication;
- },
- {
- ACTIONS = {
- bringAllToFront = id;
- closeHelpAndShow = id;
- itemSelected = id;
- nextWindow = id;
- previousWindow = id;
- showAction = id;
- showSwitchPanel = id;
- startFullScreen = id;
- startRootless = id;
- };
- CLASS = XServer;
- LANGUAGE = ObjC;
- OUTLETS = {
- dockMenu = NSMenu;
- helpWindow = NSWindow;
- modeWindow = NSWindow;
- startFullScreenButton = NSButton;
- startRootlessButton = NSButton;
- startupHelpButton = NSButton;
- startupModeButton = NSButton;
- switchWindow = NSPanel;
- windowMenu = NSMenu;
- windowSeparator = NSMenuItem;
- };
- SUPERCLASS = NSObject;
- }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 3157d72cb..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp b/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 4210878c0..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-<!-- $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp,v 1.2 2001/11/04 07:02:28 torrey Exp $ -->
-
-<html>
-<head>
-<title>XDarwin Help</title>
-</head>
-<body>
-<center>
- <h1>XDarwin X Server for Mac OS X</h1>
- X_VENDOR_NAME X_VERSION<br>
- F&auml;rdigst&auml;llt: X_REL_DATE
-</center>
-<h2>Inneh&aring;ll</h2>
-<ol>
- <li><A HREF="#notice">Viktigt!</A></li>
- <li><A HREF="#usage">Anv&auml;ndande</A></li>
- <li><A HREF="#path">Att st&auml;lla in sin s&ouml;kv&auml;g</A></li>
- <li><A HREF="#prefs">Inst&auml;llningar</A></li>
- <li><A HREF="#license">Licens</A></li>
-</ol>
-<center>
- <h2><a NAME="notice">Viktigt!</a></h2>
-</center>
-<blockquote>
-#if PRE_RELEASE
-Detta &auml;r en testversion av XDarwin, och du kan inte garranteras n&aring;gon som helst support f&ouml;r den. Buggar och fel kan rapporteras och f&ouml;rslag till fixar kan skickas till <A HREF="http://sourceforge.net/projects/xonx/">XonX-projektets sida</A> p&aring; SourceForge. Innan du rapporterar buggar i testversioner, var god pr&ouml;va den senaste versionen fr&aring;n <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> eller i X_VENDOR_LINK.
-#else
-Om servern &auml;r &auml;ldre &auml;n 6-12 m&aring;nader, eller om din h&aring;rdvara &auml;r nyare &auml;n datumet ovan, leta efter en nyare version innan du rapporterar fel. Buggar och fel kan rapporteras och f&ouml;rslag till fixar kan skickas till <A HREF="http://sourceforge.net/projects/xonx/">XonX-projektets sida</A> p&aring; SourceForge.
-#endif
-</blockquote>
-<blockquote>
-Denna programvara distrubueras i enlighet med <A HREF="#license">MIT X11 / X Consortium License</A> och tilhandh&aring;lls som den &auml;r, helt utan garantier. Var god l&auml;s igenom <A HREF="#license">licensdokumentet (engelska)</A> innan du anv&auml;nder programmet.</blockquote>
-
-<h2><a NAME="usage">Anv&auml;ndande</a></h2>
-<p>XDarwin &auml;r en fritt spridd X server av <a HREF
-="http://www.x.org/">X Window-systemet</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin kan k&ouml;ras p&aring; Mac OS X i fullsk&auml;rmsl&auml;ge eller rotl&ouml;st l&auml;ge.</p>
-<p>I fullsk&auml;rmsl&auml;ge kommer X window-systemet att ta &ouml;ver hela sk&auml;rmen n&auml;r det &auml;r aktivt. Du kan byta tillbaka till Mac OS Xs skrivbord genom att trycka Kommando-Alt-A. Denna tangentkombination kan &auml;ndra i inst&auml;llningarna. N&auml;r du &auml;r p&aring; Mac OS Xs skrivbord kan du klicka p&aring; XDarwin-ikonen i dockan f&ouml;r att byta tillbaka till X Window-systemet. (Du kan f&ouml;r&auml;ndra detta beteende i inst&auml;llningarna s&aring; att du ist&auml;llet m&aring;ste klicka i det fltande bytesf&ouml;nstret ist&auml;llet.)</p>
-<p>I rotl&ouml;stl&auml;ge delar X11 och Aqua p&aring; din sk&auml;rm. Rotf&ouml;nstret p&aring; X11-sk&auml;rmen &auml;r av samma storlek som hela sk&auml;rmen och inneh&aring;ller alla andra f&ouml;nster - det fungerar som bakgrund. I rotl&ouml;stl&auml;ge visas inte detta rotf&ouml;nster, eftersom Aqua hanterar skrvbordbakgrunden.</p>
-
-<h3>Emulering av flerknapparsmus</h3>
-<p>M&aring;nga X11-program utnyttjar en treknapparsmus. Du kan emulera en treknapparsmus med en knapp genom att h&aring;lla ner olika knappar p&aring; tangentbordet medan du klickar med musens enda knapp. Denna funktion styrs av inst&auml;llningarna i "Emulera flerknapparsmus" under fliken "Diverse" i inst&auml;llningarna. Grundinst&auml;llningen &auml;r att emulationen &auml;r aktiv och att ett kommando-klick (H&aring;ll ner kommando och klicka) simulerar den andra musknappen. Den tredje musknappen f&aring;s genom att h&aring;lla ner alt och klicka. Du kan &auml;ndra detta till n&aring;gon annan kombination av de fem tangenterna kommando, alt, kontrol, skift och fn (Powerbook/iBook). Notera att om dessa knappar har flyttats med hj&auml;lp av kommandot xmodmap kommer denna f&ouml;r&auml;ndring inte att p&aring;verka vilka knappar som anv&auml;nds vid flerknappsemulationen.</p>
-
-<h2><a NAME="path">Att st&auml;lla in sin s&ouml;kv&auml;g</a></h2>
-<p>Din s&ouml;kv&auml;g &auml;r en lista av kataloger som s&ouml;ks igenom n&auml;r terminalen letar efter kommandon att exekvera. Kommandon som h&ouml;r till X11 ligger i <code>/usr/X11R6/bin</code>, en katalog som inte ligger i din s&ouml;kv&auml;g fr&aring;n b&ouml;rjan. XDarwin l&auml;gger till denna katalog &aring;t dig, och du kan ocks&aring; l&auml;gga till ytterligare kataloger i vilka du lagt program som skall k&ouml;ras fr&aring;n kommandoraden.</p>
-<p>Mer erfarna anv&auml;ndare har antagligen redan st&auml;llt in sin s&ouml;kv&auml;g i skalets inst&auml;llningsfiler. Om detta g&auml;ller dig kan st&auml;lla in XDarwin s&aring; att din s&ouml;kv&auml;g inte modifieras. XDarwin startar de f&ouml;rsta X11-klienterna i anv&auml;ndarens inloggningsskal (Vill du anv&auml;nda ett alternativt skall, kan du specificera detta i inst&auml;llningarna). Hur du st&auml;ller in din s&ouml;kv&auml;g beror p&aring; vilket skal du anv&auml;nder. Exakt hur beskrivs i skalets man-sidor.</p>
-
-<p>Ut&ouml;ver detta kan du ocks&aring; vilja l&auml;gga till X11s man-sidor (dokumentation) till listan &auml;ver sidor som som skall s&ouml;kas n&auml;r du vill l&auml;sa efter dokumentationen. X11s man-sidor ligger i <code>/usr/X11R6/man</code> och listan &auml;ver kataloger att s&ouml;ka best&auml;mms av variabeln<code>MANPATH</code>.</p>
-
-<h2><a NAME="prefs">Inst&auml;llningar</a></h2>
-<p>I inst&auml;llningarna finns ett antal alternativ d&auml;r du kan p&aring;verka hur XDarwin beter sig i vissa fall. Inst&auml;llningarna kommer du till genom att v&auml;lja "Inst&auml;llningar..." i menyn "XDarwin". De alternativ som finns under fliken "Starta" tr&auml;der inte i kraft f&ouml;rr&auml;n du startat om programmet. Alla andra alternativ tr&auml;der i kraft omedelbart. De olika alternativen beskrivs nedan:</p>
-<h3>Diverse</h3>
-<ul>
- <li><b>Anv&auml;nd Mac OS varningsljud i X11:</b> N&auml;r detta alternativ &auml;r valt anv&auml;nds Mac OS vanliga varningsljud &auml;r X11s varningsljud (bell). N&auml;r detta alternativ inte &auml;r valt (f&ouml;rvalt) anv&auml;nds en vanlig ton.</li>
- <li><b>Till&aring;t X11 att &auml;ndra musens acceleration:</b> I ett vanligt X11-system kan f&ouml;nsterhanteraren &auml;ndra musens acceleration. Detta kan vara f&ouml;rvirrande eftersom musens acceleration kan vara olika i Mac OS Xs System Preferences och i f&ouml;nsterhanteraren i X11. F&ouml;rvalet &auml;r att X11 inte kan &auml;ndra musens acceleration f&ouml;r att p&aring; detta s&auml;tt undvika detta problem.</li>
- <li><b>Emulera flerknapparsmus:</b> Detta beskrivs ovan under <a HREF="#usage">Anv&auml;ndande</a>. N&auml;r emulationen &auml;r aktiv m&aring;ste du h&aring;lla ner de valda knapparna f&ouml;r att emulera en andra eller tredje musknapp.</li>
-</ul>
-<h3>Starta</h3>
-<ul>
- <li><b>F&ouml;rvalt l&auml;ge:</b> Om anv&auml;ndaren inte p&aring; annat s&auml;tt v&auml;ljer vilket l&auml;ge som skall anv&auml;ndas kommer alternativet h&auml;r att anv&auml;ndas.</li>
- <li><b>Visa val av sk&auml;rml&auml;ge vid start:</b> F&ouml;rvalet &auml;r att visa ett f&ouml;nster n&auml;r XDarwin startar som l&aring;ter anv&auml;ndaren v&auml;lja mellan fullsk&auml;rmsl&auml;ge och rotl&ouml;st l&auml;ge. Om detta alternativ inte &auml;r aktivt kommer XDarwin automatiskt att startas i det l&auml;ge som valts ovan.</li>
- <li><b>Sk&auml;rmnummer i X11:</b> X11 till&aring;ter att det finns flera sk&auml;rmar styrda av varsin X-server p&aring; en och samma dator. Anv&auml;ndaren kan ange vilket nummer XDarwin skall anv&auml;nda om mer &auml;n en X-server skall anv&auml;ndas samtidigt.</li>
- <li><b>Aktivera Xinerama (st&ouml;d f&ouml;r flera sk&auml;rmar):</b> XDarwin st&ouml;djer flera sk&auml;rmar genom Xinerama, vilket hanterar alla skr&auml;mar som delar av en enda stor rektangul&auml;r sk&auml;rm. Du kan anv&auml;nda detta alternativ f&ouml;r att st&auml;nga av Xinerama, men f&ouml;r n&auml;rvarande kan inte XDarwin hantera flera sk&auml;rmar utan det. Om du bara har en sk&auml;rm kommer Xinerama automatiskt att deaktiveras.</li>
- <li><b>Fil med tangentbordsupps&auml;ttning:</b> En fil som anger tangentbordsupps&auml;ttning l&auml;ses vid start och &ouml;vers&auml;tts till en tangentborsupps&auml;ttningsfil f&ouml;r X11. Filer med tangentbordsupps&auml;ttningar f&ouml;r ett stort antal spr&aring;k finns i <code>/System/Library/Keyboards</code>.</li>
- <li><b>Startar f&ouml;rsta X11-klienterna:</b> N&auml;r X11 startas fr&aring;n Finder kommer det att exekvera filen <code>xinit</code> f&ouml;r att starta f&ouml;nsterhanteraren i X11 och andra program. (Se "<code>man xinit</code>" f&ouml;r mer information.) Innan XDarwin k&ouml;r xinit kommer det att l&auml;gga till katalogern h&auml;r till anv&auml;ndarens s&ouml;kv&auml;g. F&ouml;rvalet &auml;r att endast l&auml;gga till katalogen <code>/usr/X11R6/bin</code>. Ytterligare kataloger kan l&auml;ggas till - separera dem med kolon. X11-klienterna startas i anv&auml;ndarens inloggningsskal s&aring; att anv&auml;ndarens inst&auml;llningsfiler i skalet l&auml;ses. Om s&aring; &ouml;nskas kan de startas i ett annat skal.</li>
-</ul>
-<h3>Fullsk&auml;rm</h3>
-<ul>
- <li><b>Tangentkombinationsknappen:</b> Tryck p&aring; denna knapp och en tangentkombination f&ouml;r att &auml;ndra den tangentkombination som anv&auml;nds f&ouml;r att byta mellan X11 och Aqua.</li>
- <li><b>Klick p&aring; ikonen i dockan byter till X11:</b> Aktivera detta alternativ f&ouml;r att byta till X11 genom att klicka p&aring; ikonen i dockan. I vissa versioner av Mac OS X kommer ett bte p&aring; detta s&auml;tt att g&ouml;mma pekaren n&auml;r du &aring;terv&auml;nder till Aqua.</li>
- <li><b>Visa fullsk&auml;rmshj&auml;lp vid start:</b> Detta kommer att visa en informationsruta n&auml;r XDarwin startas i fullsk&auml;rmsl&auml;ge.</li>
- <li><b>F&auml;rgdjup:</b> I fullsk&auml;rmsl&auml;ge kan X11 anv&auml;nda ett annat f&auml;rgdjup &auml;n Aquas. Om du v&auml;jer "Nuvarande" kommer X11 att anv&auml;nda det f&auml;rgdjup som Aqua har just d&aring;. Annars kan du v&auml;lja 8, 15, eller 24 bitare f&auml;rg.</li>
-</ul>
-
-<h2><a NAME="license">Licens (svenska)</a></h2>
-<p>Den huvudsakliga licens vi anv&auml;nder oss av &auml;r baserad p&aring; den traditionella MIT X11 / XConsortium-licensen, vilken inte p&aring; n&aring;got s&auml;tt begr&auml;nsar f&ouml;r&auml;ndringar eller vidarespridning av vare sig k&auml;llkod eller kompilerad programvara annat &auml;n genom att kr&auml;va att delarna som r&ouml;r copyright och licensiering l&auml;mnas intakta. F&ouml;r mer information och ytterligare copyright/licensieringsinfromation r&ouml;rande vissa speciella delar av koden, se the source code.</p>
-
-<h3>Licence (english)</h3>
-<p>The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.</p>
-
-<H3><A NAME="3"></A>X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>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 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:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>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 X CONSORTIUM 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.</p>
-<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/XDarwin.icns b/nx-X11/programs/Xserver/hw/darwin/bundle/XDarwin.icns
deleted file mode 100644
index 9c560846e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/XDarwin.icns
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/Credits.rtf b/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/Credits.rtf
deleted file mode 100644
index 34408e78c..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/Credits.rtf
+++ /dev/null
@@ -1,168 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
-}
-{\colortbl;\red255\green255\blue255;}
-\vieww5160\viewh6300\viewkind0
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-
-\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Contributors to Xorg Foundation Release:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Kaleb KEITHLEY\
-
-\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\f1\b \cf0 Contributors to XFree86 4.4:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Harper\
-
-\f2\i Rootless acceleration and Apple-WM extension
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Additional XonX Contributors to XFree86 4.3:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Fabr\'92cio Luis de Castro\
-
-\f2\i Portuguese localization
-\f0\i0 \
-Michael Oland\
-
-\f2\i New XDarwin icon
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Contributors to XFree86 4.2:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Darwin x86 support
-\f0\i0 \
-Pablo Di Noto\
-
-\f2\i Spanish localization
-\f0\i0 \
-Paul Edens\
-
-\f2\i Dutch localization
-\f0\i0 \
-Kyunghwan Kim\
-
-\f2\i Korean localization
-\f0\i0 \
-Mario Klebsch\
-
-\f2\i Non-US keyboard support
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i German localization
-\f0\i0 \
-Patrik Montgomery\
-
-\f2\i Swedish localization
-\f0\i0 \
-Greg Parker\
-
-\f2\i Rootless support
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Japanese localization
-\f0\i0 \
-Olivier Verdier\
-
-\f2\i French localization
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Devin Poolman and Zero G Software, Inc.\
-
-\f2\i Installer
-\f0\i0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-
-\f1\b \cf0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-\cf0 XonX Team Members\
-Contributing to XFree86 4.1:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Rob Braun\
-
-\f2\i Darwin x86 support
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Project Lead
-\f0\i0 \
-Andreas Monitzer\
-
-\f2\i Cocoa version of XDarwin front end
-\f0\i0 \
-Greg Parker\
-
-\f2\i Original Quartz implementation
-\f0\i0 \
-Christoph Pfisterer\
-
-\f2\i Dynamic shared libraries
-\f0\i0 \
-Toshimitsu Tanaka\
-
-\f2\i Japanese localization
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 Special Thanks:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 Tiago Ribeiro\
-
-\f2\i XDarwin icon
-\f0\i0 \
-\
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
-
-\f1\b \cf0 History:
-\f0\b0 \
-\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
-\cf0 John Carmack\
-
-\f2\i Original XFree86 port to Mac OS X Server
-\f0\i0 \
-Dave Zarzycki\
-
-\f2\i XFree86 4.0 port to Darwin 1.0
-\f0\i0 \
-Torrey T. Lyons\
-
-\f2\i Integration into XFree86 Project for 4.0.2} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/Imakefile b/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/Imakefile
deleted file mode 100644
index d367fbcee..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/Imakefile
+++ /dev/null
@@ -1,36 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/Imakefile,v 1.1 2001/05/21 01:42:17 torrey Exp $
-
-#include <Server.tmpl>
-
-LinkSourceFile(InfoPlist.strings.cpp,../English.lproj)
-
-INCLUDES = -I$(SERVERSRC)/include
-
-#if defined (XorgVersionString)
-VERS = XorgVersionString
-PRE = XORG_VERSION_SNAP
-NAME = "X Version 11"
-LINK = '<a HREF="http://wiki.x.org/">X.Org Foundation</a>'
-#elif defined XFree86VersionString
-VERS = XFree86VersionString
-PRE = XF86_VERSION_SNAP
-NAME = "XFree86"
-LINK = '<a HREF="http://www.XFree86.Org/">XFree86 Project, Inc.</a>'
-#endif
-DATE = XFree86DateString
-X_DEFS = $(INCLUDES) -DX_VERSION=$(VERS) -DX_PRE_RELEASE=$(PRE) \
- -DX_REL_DATE=$(DATE) -DX_VENDOR_NAME=$(NAME) -DX_VENDOR_LINK=$(LINK)
-
-AllTarget(XDarwinHelp.html)
-CppFileTarget(XDarwinHelp.html,XDarwinHelp.html.cpp,$(X_DEFS), \
- NullParameter)
-
-AllTarget(InfoPlist.strings)
-InfoPlist.strings: InfoPlist.strings.cpp
- RemoveFile($@)
- ClearmakeOSName \
- $(CPP) CppNoLineInfoOption $(X_DEFS) <InfoPlist.strings.cpp | \
- CppSedMagic | sed 's/__quote__/"/g' >$@
-
-clean::
- RemoveFiles(InfoPlist.strings)
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/Localizable.strings b/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/Localizable.strings
deleted file mode 100644
index fb8c77e0d..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/Localizable.strings
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 77f345a4e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- IBClasses = (
- {
- ACTIONS = {showHelp = id; };
- CLASS = FirstResponder;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
- CLASS = Preferences;
- LANGUAGE = ObjC;
- OUTLETS = {
- addToPathButton = id;
- addToPathField = id;
- button2ModifiersMatrix = id;
- button3ModifiersMatrix = id;
- depthButton = id;
- displayField = id;
- dockSwitchButton = id;
- fakeButton = id;
- keymapFileField = id;
- modeMatrix = id;
- modeWindowButton = id;
- mouseAccelChangeButton = id;
- startupHelpButton = id;
- switchKeyButton = id;
- systemBeepButton = id;
- useDefaultShellMatrix = id;
- useOtherShellField = id;
- useXineramaButton = id;
- window = id;
- };
- SUPERCLASS = NSObject;
- },
- {
- CLASS = XApplication;
- LANGUAGE = ObjC;
- OUTLETS = {preferences = id; xserver = id; };
- SUPERCLASS = NSApplication;
- },
- {
- ACTIONS = {
- bringAllToFront = id;
- closeHelpAndShow = id;
- itemSelected = id;
- nextWindow = id;
- previousWindow = id;
- showAction = id;
- showSwitchPanel = id;
- startFullScreen = id;
- startRootless = id;
- };
- CLASS = XServer;
- LANGUAGE = ObjC;
- OUTLETS = {
- dockMenu = NSMenu;
- helpWindow = NSWindow;
- modeWindow = NSWindow;
- startFullScreenButton = NSButton;
- startRootlessButton = NSButton;
- startupHelpButton = NSButton;
- startupModeButton = NSButton;
- switchWindow = NSPanel;
- windowMenu = NSMenu;
- windowSeparator = NSMenuItem;
- };
- SUPERCLASS = NSObject;
- }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/MainMenu.nib/objects.nib b/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index 8f9b5e01c..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/MainMenu.nib/objects.nib
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp b/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp
deleted file mode 100644
index 5996285ae..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-<!-- $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp,v 1.1 2001/05/21 01:42:17 torrey Exp $ -->
-
-<html>
-<head>
-<title>XDarwin Help</title>
-</head>
-<body>
-<center>
- <h1>XDarwin X Server for Mac OS X</h1>
- X_VENDOR_NAME X_VERSION<br>
- Release Date: X_REL_DATE
-</center>
-<h2>Contents</h2>
-<ol>
- <li><A HREF="#notice">Important Notice</A></li>
- <li><A HREF="#usage">Usage</A></li>
- <li><A HREF="#path">Setting Your Path</A></li>
- <li><A HREF="#prefs">User Preferences</A></li>
- <li><A HREF="#license">License</A></li>
-</ol>
-<center>
- <h2><a NAME="notice">Important Notice</a></h2>
-</center>
-<blockquote>
-#if X_PRE_RELEASE
-This is a pre-release version of XDarwin, and is not supported in any way. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge. Before reporting bugs in pre-release versions, please check the latest version from <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> or the X_VENDOR_LINK.
-#else
-If the server is older than 6-12 months, or if your hardware is newer than the above date, look for a newer version before reporting problems. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge.
-#endif
-</blockquote>
-<blockquote>
-This software is distributed under the terms of the <A HREF="#license">MIT X11 / X Consortium License</A> and is provided AS IS, with no warranty. Please read the <A HREF="#license">License</A> before using.</blockquote>
-
-<h2><a NAME="usage">Usage</a></h2>
-<p>XDarwin is a freely redistributable open-source X server for the <a HREF="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin runs on Mac OS X in full screen or rootless modes.</p>
-<p>In full screen mode, when the X window system is active, it takes over the entire screen. You can switch back to the Mac OS X desktop by holding down Command-Option-A. This key combination can be changed in the user preferences. From the Mac OS X desktop, click on the XDarwin icon in the Dock to switch back to the X window system. (You can change this behavior in the user preferences so that you must click the XDarwin icon in the floating switch window instead.)</p>
-<p>In rootless mode, the X window system and Aqua share your display. The root window of the X11 display is the size of the screen and contains all the other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background.</p>
-<h3>Multi-Button Mouse Emulation</h3>
-<p>Many X11 applications rely on the use of a 3-button mouse. You can emulate a 3-button mouse with a single button by holding down various modifier keys while you click the mouse button. This is controlled by settings in the "Multi-Button Mouse Emulation" section of the "General" preferences. By default, emulation is on and holding down the command key and clicking the mouse button will simulate clicking the second mouse button. Holding down the option key and clicking will simulate the third button. You can change to any combination of modifiers to emulate buttons two and three in the preferences. Note, even if the modifiers keys are mapped to some other key with xmodmap, you still must use the actual keys specified in the preferences for multi-button mouse emulation.</p>
-
-<h2><a NAME="path">Setting Your Path</a></h2>
-<p>Your path is the list of directories to be searched for executable commands. The X11 commands are located in <code>/usr/X11R6/bin</code>, which needs to be added to your path. XDarwin does this for you by default and can also add additional directories where you have installed command line applications.</p>
-<p>More experienced users will have already set their path correctly using the initialization files for their shell. In this case, you can inform XDarwin not to modify your path in the preferences. XDarwin launches the initial X11 clients in the user's default login shell. (An alternate shell can also be specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell.</p>
-<p>In addition you may also want to add the X11 man pages to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in <code>/usr/X11R6/man</code> and the <code>MANPATH</code> environment variable contains the list of directories to search.</p>
-
-<h2><a NAME="prefs">User Preferences</a></h2>
-<p>A number of options may be set from the user preferences, accessible from the "Preferences..." menu item in the "XDarwin" menu. The options listed as start up options will not take effect until you have restarted XDarwin. All other options take effect immediately. The various options are described below:</p>
-<h3>General</h3>
-<ul>
- <li><b>Use System beep for X11:</b> When enabled the standard Mac OS X alert sound is used as the X11 bell. When disabled (default) a simple tone is used.</li>
- <li><b>Allow X11 to change mouse acceleration:</b> In a standard X window system implementation, the window manager can change the mouse acceleration. This can lead to confusion as the mouse acceleration may be set to different values by the Mac OS X System Preferences and the X window manager. By default, X11 is not allowed to change the mouse acceleration to avoid this problem.</li>
- <li><b>Multi-Button Mouse Emulation:</b> This is described above under <a HREF="#usage">Usage</a>. When emulation is enabled the selected modifiers must be held down when the mouse button is pushed to emulate the second or third mouse buttons.</li>
-</ul>
-<h3>Start Up</h3>
-<ul>
- <li><b>Default Mode:</b> If the user does not indicate whether to run in full screen or rootless mode, the mode specified here will be used.</li>
- <li><b>Show mode pick panel on startup:</b> By default, a panel is displayed when XDarwin is started to allow the user to choose between full screen or rootless mode. If this option is turned off, the default mode will be started automatically.</li>
- <li><b>X11 Display number:</b> X11 allows there to be multiple displays managed by separate X servers on a single computer. The user may specify an integer display number for XDarwin to use if more than one X server is going to be run simultaneously.</li>
- <li><b>Allow Xinerama multiple monitor support:</b> XDarwin supports multiple monitors with Xinerama, which treats all monitors as being part of one large rectangular screen. You can disable Xinerama with this option, but currently XDarwin does not handle multiple monitors correctly without it. If you only have a single monitor, Xinerama is automatically disabled.</li>
- <li><b>Keymapping File:</b> A keymapping file is read at startup and translated to an X11 keymap. Keymapping files, available for a wide variety of languages, are found in <code>/System/Library/Keyboards</code>.</li>
- <li><b>Starting First X11 Clients:</b> When XDarwin is started from the Finder, it will run <code>xinit</code> to launch the X window manager and other X clients. (See "<code>man xinit</code>" for more information.) Before XDarwin runs <code>xinit</code> it will add the specified directories to the user's path. By default only <code>/usr/X11R6/bin</code> is added. Additional directories may added, separated by a colon. The X clients are started in the user's default login shell so that the user's shell initialization files are read. If desired, an alternate shell may be specified.</li>
-</ul>
-<h3>Full Screen</h3>
-<ul>
- <li><b>Key combination button:</b> Click this button and then press any number of modifiers followed by a standard key to change the key combination to switch between Aqua and X11.</li>
- <li><b>Click on icon in Dock switches to X11:</b> Enable this to activate switching to X11 by clicking on the XDarwin icon in the Dock. On some versions of Mac OS X, switching by clicking in the Dock can cause the cursor to disappear on returning to Aqua.</li>
- <li><b>Show help on startup:</b> This will show an introductory splash screen when XDarwin is started in full screen mode.</li>
- <li><b>Color bit depth:</b> In full screen mode, the X11 display can use a different color bit depth than is used by Aqua. If "Current" is specified, the depth used by Aqua when XDarwin starts will be used. Otherwise 8, 15, or 24 bits may be specified.</li>
-</ul>
-
-<h2><a NAME="license">License</a></h2>
-The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
-<H3><A NAME="3"></A>X Consortium License</H3>
-<p>Copyright (C) 1996 X Consortium</p>
-<p>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 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:</p>
-<p>The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.</p>
-<p>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 X CONSORTIUM 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.</p>
-<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
-<p>X Window System is a trademark of X Consortium, Inc.</p>
-</body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/darwin/bundle/startXClients.cpp b/nx-X11/programs/Xserver/hw/darwin/bundle/startXClients.cpp
deleted file mode 100644
index 51cdb5c9e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/bundle/startXClients.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-XCOMM!/bin/sh
-
-XCOMM This script is used by XDarwin to start X clients when XDarwin is
-XCOMM launched from the Finder.
-XCOMM
-XCOMM $XFree86: $
-
-userclientrc=$HOME/.xinitrc
-sysclientrc=XINITDIR/xinitrc
-clientargs=""
-
-if [ -f $userclientrc ]; then
- clientargs=$userclientrc
-else if [ -f $sysclientrc ]; then
- clientargs=$sysclientrc
-fi
-fi
-
-if [ "x$2" != "x" ]; then
- PATH="$PATH:$2"
- export PATH
-fi
-
-exec xinit $clientargs -- XBINDIR/XDarwinStartup "$1" -idle
diff --git a/nx-X11/programs/Xserver/hw/darwin/darwin.c b/nx-X11/programs/Xserver/hw/darwin/darwin.c
deleted file mode 100644
index 99241d927..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/darwin.c
+++ /dev/null
@@ -1,1108 +0,0 @@
-/**************************************************************
- *
- * Shared code for the Darwin X Server
- * running with Quartz or IOKit display mode
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2004 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/darwin.c,v 1.8 2005/07/03 08:53:38 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/darwin/darwin.c,v 1.55 2003/11/15 00:07:09 torrey Exp $ */
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "os.h"
-#include "servermd.h"
-#include "inputstr.h"
-#include "scrnintstr.h"
-#include "mibstore.h" // mi backing store implementation
-#include "mipointer.h" // mi software cursor
-#include "micmap.h" // mi colormap code
-#include "fb.h" // fb framebuffer code
-#include "site.h"
-#include "globals.h"
-#include "xorgVersion.h"
-#include "xf86Date.h"
-#include "dix.h"
-
-#ifdef XINPUT
-# include <X11/extensions/XI.h>
-# include <X11/extensions/XIproto.h>
-# include "exevents.h"
-# include "extinit.h"
-#endif
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/syslimits.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-#define HAS_UTSNAME 1
-#include <sys/utsname.h>
-
-#define NO_CFPLUGIN
-#include <IOKit/IOKitLib.h>
-#include <IOKit/hidsystem/IOHIDLib.h>
-#include <IOKit/hidsystem/ev_keymap.h>
-
-#include "darwin.h"
-#include "darwinClut8.h"
-
-/*
- * X server shared global variables
- */
-int darwinScreensFound = 0;
-int darwinScreenIndex = 0;
-io_connect_t darwinParamConnect = 0;
-int darwinEventReadFD = -1;
-int darwinEventWriteFD = -1;
-int darwinMouseAccelChange = 1;
-int darwinFakeButtons = 0;
-
-// location of X11's (0,0) point in global screen coordinates
-int darwinMainScreenX = 0;
-int darwinMainScreenY = 0;
-
-// parameters read from the command line or user preferences
-unsigned int darwinDesiredWidth = 0, darwinDesiredHeight = 0;
-int darwinDesiredDepth = -1;
-int darwinDesiredRefresh = -1;
-char *darwinKeymapFile = "USA.keymapping";
-int darwinSyncKeymap = FALSE;
-int darwinSwapAltMeta = FALSE;
-
-// modifier masks for faking mouse buttons
-int darwinFakeMouse2Mask = NX_COMMANDMASK;
-int darwinFakeMouse3Mask = NX_ALTERNATEMASK;
-
-// devices
-DeviceIntPtr darwinPointer = NULL;
-DeviceIntPtr darwinKeyboard = NULL;
-
-// Common pixmap formats
-static PixmapFormatRec formats[] = {
- { 1, 1, BITMAP_SCANLINE_PAD },
- { 4, 8, BITMAP_SCANLINE_PAD },
- { 8, 8, BITMAP_SCANLINE_PAD },
- { 15, 16, BITMAP_SCANLINE_PAD },
- { 16, 16, BITMAP_SCANLINE_PAD },
- { 24, 32, BITMAP_SCANLINE_PAD },
- { 32, 32, BITMAP_SCANLINE_PAD }
-};
-const int NUMFORMATS = sizeof(formats)/sizeof(formats[0]);
-
-#ifndef OSNAME
-#define OSNAME " Darwin"
-#endif
-#ifndef OSVENDOR
-#define OSVENDOR ""
-#endif
-#ifndef PRE_RELEASE
-#define PRE_RELEASE XORG_VERSION_SNAP
-#endif
-
-void
-DarwinPrintBanner()
-{
-#if PRE_RELEASE
- ErrorF("\n"
- "This is a pre-release version of the " XVENDORNAME " X11.\n"
- "Portions of this release are based on XFree86 4.4RC2 and selected\n"
- "files from XFree86 4.4RC3. It is not supported in any way.\n"
- "Bugs may be filed in the bugzilla at http://bugs.freedesktop.org/.\n"
- "Select the \"xorg\" product for bugs you find in this release.\n"
- "Before reporting bugs in pre-release versions please check the\n"
- "latest version in the " XVENDORNAME " \"monolithic tree\" CVS\n"
- "repository hosted at http://www.freedesktop.org/Software/xorg/");
-#endif
-#if XORG_VERSION_SNAP > 0
- ErrorF(".%d", XORG_VERSION_SNAP);
-#endif
-
-#if XORG_VERSION_SNAP >= 900
- ErrorF(" (%d.%d.0 RC %d)", XORG_VERSION_MAJOR, XORG_VERSION_MINOR + 1,
- XORG_VERSION_SNAP - 900);
-#endif
-
-#ifdef XORG_CUSTOM_VERSION
- ErrorF(" (%s)", XF86_CUSTOM_VERSION);
-#endif
- ErrorF("\nRelease Date: %s\n", XF86_DATE);
- ErrorF("X Protocol Version %d, Revision %d, %s\n",
- X_PROTOCOL, X_PROTOCOL_REVISION, XORG_RELEASE );
- ErrorF("Build Operating System:%s%s\n", OSNAME, OSVENDOR);
-#ifdef HAS_UTSNAME
- {
- struct utsname name;
-
- if (uname(&name) == 0) {
- ErrorF("Current Operating System: %s %s %s %s %s\n",
- name.sysname, name.nodename, name.release, name.version, name.machine);
- }
- }
-#endif
-#if defined(BUILD_DATE) && (BUILD_DATE > 19000000)
- {
- struct tm t;
- char buf[100];
-
- bzero(&t, sizeof(t));
- bzero(buf, sizeof(buf));
- t.tm_mday = BUILD_DATE % 100;
- t.tm_mon = (BUILD_DATE / 100) % 100 - 1;
- t.tm_year = BUILD_DATE / 10000 - 1900;
- if (strftime(buf, sizeof(buf), "%d %B %Y", &t))
- ErrorF("Build Date: %s\n", buf);
- }
-#endif
-#if defined(CLOG_DATE) && (CLOG_DATE > 19000000)
- {
- struct tm t;
- char buf[100];
-
- bzero(&t, sizeof(t));
- bzero(buf, sizeof(buf));
- t.tm_mday = CLOG_DATE % 100;
- t.tm_mon = (CLOG_DATE / 100) % 100 - 1;
- t.tm_year = CLOG_DATE / 10000 - 1900;
- if (strftime(buf, sizeof(buf), "%d %B %Y", &t))
- ErrorF("Changelog Date: %s\n", buf);
- }
-#endif
-#if defined(BUILDERSTRING)
- ErrorF("%s \n",BUILDERSTRING);
-#endif
- ErrorF("\tBefore reporting problems, check "__VENDORDWEBSUPPORT__"\n"
- "\tto make sure that you have the latest version.\n");
-}
-
-
-/*
- * DarwinSaveScreen
- * X screensaver support. Not implemented.
- */
-static Bool DarwinSaveScreen(ScreenPtr pScreen, int on)
-{
- // FIXME
- if (on == SCREEN_SAVER_FORCER) {
- } else if (on == SCREEN_SAVER_ON) {
- } else {
- }
- return TRUE;
-}
-
-
-/*
- * DarwinAddScreen
- * This is a callback from dix during AddScreen() from InitOutput().
- * Initialize the screen and communicate information about it back to dix.
- */
-static Bool DarwinAddScreen(
- int index,
- ScreenPtr pScreen,
- int argc,
- char **argv )
-{
- int bitsPerRGB, i, dpi;
- static int foundIndex = 0;
- Bool ret;
- VisualPtr visual;
- ColormapPtr pmap;
- DarwinFramebufferPtr dfb;
-
- // reset index of found screens for each server generation
- if (index == 0) foundIndex = 0;
-
- // allocate space for private per screen storage
- dfb = xalloc(sizeof(DarwinFramebufferRec));
- SCREEN_PRIV(pScreen) = dfb;
-
- // setup hardware/mode specific details
- ret = DarwinModeAddScreen(foundIndex, pScreen);
- foundIndex++;
- if (! ret)
- return FALSE;
-
- bitsPerRGB = dfb->bitsPerComponent;
-
- // reset the visual list
- miClearVisualTypes();
-
- // setup a single visual appropriate for our pixel type
- if (dfb->colorType == TrueColor) {
- if (!miSetVisualTypes( dfb->colorBitsPerPixel, TrueColorMask,
- bitsPerRGB, TrueColor )) {
- return FALSE;
- }
- } else if (dfb->colorType == PseudoColor) {
- if (!miSetVisualTypes( dfb->colorBitsPerPixel, PseudoColorMask,
- bitsPerRGB, PseudoColor )) {
- return FALSE;
- }
- } else if (dfb->colorType == StaticColor) {
- if (!miSetVisualTypes( dfb->colorBitsPerPixel, StaticColorMask,
- bitsPerRGB, StaticColor )) {
- return FALSE;
- }
- } else {
- return FALSE;
- }
-
- miSetPixmapDepths();
-
- // machine independent screen init
- // setup _Screen structure in pScreen
- if (monitorResolution)
- dpi = monitorResolution;
- else
- dpi = 75;
-
- // initialize fb
- if (! fbScreenInit(pScreen,
- dfb->framebuffer, // pointer to screen bitmap
- dfb->width, dfb->height, // screen size in pixels
- dpi, dpi, // dots per inch
- dfb->pitch/(dfb->bitsPerPixel/8), // pixel width of framebuffer
- dfb->bitsPerPixel)) // bits per pixel for screen
- {
- return FALSE;
- }
-
- // set the RGB order correctly for TrueColor
- if (dfb->bitsPerPixel > 8) {
- for (i = 0, visual = pScreen->visuals; // someday we may have more than 1
- i < pScreen->numVisuals; i++, visual++) {
- if (visual->class == TrueColor) {
- visual->offsetRed = bitsPerRGB * 2;
- visual->offsetGreen = bitsPerRGB;
- visual->offsetBlue = 0;
- visual->redMask = ((1<<bitsPerRGB)-1) << visual->offsetRed;
- visual->greenMask = ((1<<bitsPerRGB)-1) << visual->offsetGreen;
- visual->blueMask = ((1<<bitsPerRGB)-1) << visual->offsetBlue;
- }
- }
- }
-
-#ifdef RENDER
- if (! fbPictureInit(pScreen, 0, 0)) {
- return FALSE;
- }
-#endif
-
-#ifdef MITSHM
- ShmRegisterFbFuncs(pScreen);
-#endif
-
- // this must be initialized (why doesn't X have a default?)
- pScreen->SaveScreen = DarwinSaveScreen;
-
- // finish mode dependent screen setup including cursor support
- if (!DarwinModeSetupScreen(index, pScreen)) {
- return FALSE;
- }
-
- // create and install the default colormap and
- // set pScreen->blackPixel / pScreen->white
- if (!miCreateDefColormap( pScreen )) {
- return FALSE;
- }
-
- /* Set the colormap to the statically defined one if we're in 8 bit
- * mode and we're using a fixed color map. Essentially this translates
- * to Darwin/x86 in 8-bit mode.
- */
- if( (dfb->colorBitsPerPixel == 8) &&
- (dfb->colorType == StaticColor) )
- {
- pmap = miInstalledMaps[pScreen->myNum];
- visual = pmap->pVisual;
- for( i = 0; i < visual->ColormapEntries; i++ ) {
- pmap->red[i].co.local.red = darwinClut8[i].red;
- pmap->red[i].co.local.green = darwinClut8[i].green;
- pmap->red[i].co.local.blue = darwinClut8[i].blue;
- }
- }
-
- dixScreenOrigins[index].x = dfb->x;
- dixScreenOrigins[index].y = dfb->y;
-
- ErrorF("Screen %d added: %dx%d @ (%d,%d)\n",
- index, dfb->width, dfb->height, dfb->x, dfb->y);
-
- return TRUE;
-}
-
-/*
- =============================================================================
-
- mouse and keyboard callbacks
-
- =============================================================================
-*/
-
-/*
- * DarwinChangePointerControl
- * Set mouse acceleration and thresholding
- * FIXME: We currently ignore the threshold in ctrl->threshold.
- */
-static void DarwinChangePointerControl(
- DeviceIntPtr device,
- PtrCtrl *ctrl )
-{
- kern_return_t kr;
- double acceleration;
-
- if (!darwinMouseAccelChange)
- return;
-
- acceleration = ctrl->num / ctrl->den;
- kr = IOHIDSetMouseAcceleration( darwinParamConnect, acceleration );
- if (kr != KERN_SUCCESS)
- ErrorF( "Could not set mouse acceleration with kernel return = 0x%x.\n", kr );
-}
-
-
-/*
- * DarwinMouseProc
- * Handle the initialization, etc. of a mouse
- */
-static int DarwinMouseProc(
- DeviceIntPtr pPointer,
- int what )
-{
- char map[6];
-
- switch (what) {
-
- case DEVICE_INIT:
- pPointer->public.on = FALSE;
-
- // Set button map.
- map[1] = 1;
- map[2] = 2;
- map[3] = 3;
- map[4] = 4;
- map[5] = 5;
- InitPointerDeviceStruct( (DevicePtr)pPointer,
- map,
- 5, // numbuttons (4 & 5 are scroll wheel)
- miPointerGetMotionEvents,
- DarwinChangePointerControl,
- 0 );
-#ifdef XINPUT
- InitValuatorAxisStruct( pPointer,
- 0, // X axis
- 0, // min value
- 16000, // max value (fixme screen size?)
- 1, // resolution (fixme ?)
- 1, // min resolution
- 1 ); // max resolution
- InitValuatorAxisStruct( pPointer,
- 1, // X axis
- 0, // min value
- 16000, // max value (fixme screen size?)
- 1, // resolution (fixme ?)
- 1, // min resolution
- 1 ); // max resolution
-#endif
- break;
-
- case DEVICE_ON:
- pPointer->public.on = TRUE;
- AddEnabledDevice( darwinEventReadFD );
- return Success;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- pPointer->public.on = FALSE;
- RemoveEnabledDevice( darwinEventReadFD );
- return Success;
- }
-
- return Success;
-}
-
-
-/*
- * DarwinKeybdProc
- * Callback from X
- */
-static int DarwinKeybdProc( DeviceIntPtr pDev, int onoff )
-{
- switch ( onoff ) {
- case DEVICE_INIT:
- DarwinKeyboardInit( pDev );
- break;
- case DEVICE_ON:
- pDev->public.on = TRUE;
- AddEnabledDevice( darwinEventReadFD );
- break;
- case DEVICE_OFF:
- pDev->public.on = FALSE;
- RemoveEnabledDevice( darwinEventReadFD );
- break;
- case DEVICE_CLOSE:
- break;
- }
-
- return Success;
-}
-
-/*
-===========================================================================
-
- Utility routines
-
-===========================================================================
-*/
-
-/*
- * DarwinFindLibraryFile
- * Search for a file in the standard Library paths, which are (in order):
- *
- * ~/Library/ user specific
- * /Library/ host specific
- * /Network/Library/ LAN specific
- * /System/Library/ OS specific
- *
- * A sub-path can be specified to search in below the various Library
- * directories. Returns a new character string (owned by the caller)
- * containing the full path to the first file found.
- */
-static char * DarwinFindLibraryFile(
- const char *file,
- const char *pathext )
-{
- // Library search paths
- char *pathList[] = {
- "",
- "/Network",
- "/System",
- NULL
- };
- char *home;
- char *fullPath;
- int i = 0;
-
- // Return the file name as is if it is already a fully qualified path.
- if (!access(file, F_OK)) {
- fullPath = xalloc(strlen(file)+1);
- strcpy(fullPath, file);
- return fullPath;
- }
-
- fullPath = xalloc(PATH_MAX);
-
- home = getenv("HOME");
- if (home) {
- snprintf(fullPath, PATH_MAX, "%s/Library/%s/%s", home, pathext, file);
- if (!access(fullPath, F_OK))
- return fullPath;
- }
-
- while (pathList[i]) {
- snprintf(fullPath, PATH_MAX, "%s/Library/%s/%s", pathList[i++],
- pathext, file);
- if (!access(fullPath, F_OK))
- return fullPath;
- }
-
- xfree(fullPath);
- return NULL;
-}
-
-
-/*
- * DarwinParseModifierList
- * Parse a list of modifier names and return a corresponding modifier mask
- */
-int DarwinParseModifierList(
- const char *constmodifiers) // string containing list of modifier names
-{
- int result = 0;
-
- if (constmodifiers) {
- char *modifiers = strdup(constmodifiers);
- char *modifier;
- int nxkey;
- char *p = modifiers;
-
- while (p) {
- modifier = strsep(&p, " ,+&|/"); // allow lots of separators
- nxkey = DarwinModifierStringToNXKey(modifier);
- if (nxkey != -1)
- result |= DarwinModifierNXKeyToNXMask(nxkey);
- else
- ErrorF("fakebuttons: Unknown modifier \"%s\"\n", modifier);
- }
- free(modifiers);
- }
- return result;
-}
-
-/*
-===========================================================================
-
- Functions needed to link against device independent X
-
-===========================================================================
-*/
-
-/*
- * InitInput
- * Register the keyboard and mouse devices
- */
-void InitInput( int argc, char **argv )
-{
- darwinPointer = AddInputDevice(DarwinMouseProc, TRUE);
- RegisterPointerDevice( darwinPointer );
-
- darwinKeyboard = AddInputDevice(DarwinKeybdProc, TRUE);
- RegisterKeyboardDevice( darwinKeyboard );
-
- DarwinEQInit( (DevicePtr)darwinKeyboard, (DevicePtr)darwinPointer );
-
- DarwinModeInitInput(argc, argv);
-}
-
-
-/*
- * DarwinAdjustScreenOrigins
- * Shift all screens so the X11 (0, 0) coordinate is at the top
- * left of the global screen coordinates.
- *
- * Screens can be arranged so the top left isn't on any screen, so
- * instead use the top left of the leftmost screen as (0,0). This
- * may mean some screen space is in -y, but it's better that (0,0)
- * be onscreen, or else default xterms disappear. It's better that
- * -y be used than -x, because when popup menus are forced
- * "onscreen" by dumb window managers like twm, they'll shift the
- * menus down instead of left, which still looks funny but is an
- * easier target to hit.
- */
-void
-DarwinAdjustScreenOrigins(ScreenInfo *pScreenInfo)
-{
- int i, left, top;
-
- left = dixScreenOrigins[0].x;
- top = dixScreenOrigins[0].y;
-
- /* Find leftmost screen. If there's a tie, take the topmost of the two. */
- for (i = 1; i < pScreenInfo->numScreens; i++) {
- if (dixScreenOrigins[i].x < left ||
- (dixScreenOrigins[i].x == left &&
- dixScreenOrigins[i].y < top))
- {
- left = dixScreenOrigins[i].x;
- top = dixScreenOrigins[i].y;
- }
- }
-
- darwinMainScreenX = left;
- darwinMainScreenY = top;
-
- /* Shift all screens so that there is a screen whose top left
- is at X11 (0,0) and at global screen coordinate
- (darwinMainScreenX, darwinMainScreenY). */
-
- if (darwinMainScreenX != 0 || darwinMainScreenY != 0) {
- for (i = 0; i < pScreenInfo->numScreens; i++) {
- dixScreenOrigins[i].x -= darwinMainScreenX;
- dixScreenOrigins[i].y -= darwinMainScreenY;
- ErrorF("Screen %d placed at X11 coordinate (%d,%d).\n",
- i, dixScreenOrigins[i].x, dixScreenOrigins[i].y);
- }
- }
-}
-
-
-/*
- * InitOutput
- * Initialize screenInfo for all actually accessible framebuffers.
- *
- * The display mode dependent code gets called three times. The mode
- * specific InitOutput routines are expected to discover the number
- * of potentially useful screens and cache routes to them internally.
- * Inside DarwinAddScreen are two other mode specific calls.
- * A mode specific AddScreen routine is called for each screen to
- * actually initialize the screen with the ScreenPtr structure.
- * After other screen setup has been done, a mode specific
- * SetupScreen function can be called to finalize screen setup.
- */
-void InitOutput( ScreenInfo *pScreenInfo, int argc, char **argv )
-{
- int i;
- static unsigned long generation = 0;
-
- pScreenInfo->imageByteOrder = IMAGE_BYTE_ORDER;
- pScreenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
- pScreenInfo->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
- pScreenInfo->bitmapBitOrder = BITMAP_BIT_ORDER;
-
- // List how we want common pixmap formats to be padded
- pScreenInfo->numPixmapFormats = NUMFORMATS;
- for (i = 0; i < NUMFORMATS; i++)
- pScreenInfo->formats[i] = formats[i];
-
- // Allocate private storage for each screen's Darwin specific info
- if (generation != serverGeneration) {
- darwinScreenIndex = AllocateScreenPrivateIndex();
- generation = serverGeneration;
- }
-
- // Discover screens and do mode specific initialization
- DarwinModeInitOutput(argc, argv);
-
- // Add screens
- for (i = 0; i < darwinScreensFound; i++) {
- AddScreen( DarwinAddScreen, argc, argv );
- }
-
- DarwinAdjustScreenOrigins(pScreenInfo);
-}
-
-
-/*
- * OsVendorFataError
- */
-void OsVendorFatalError( void )
-{
- ErrorF( " OsVendorFatalError\n" );
-}
-
-
-/*
- * OsVendorInit
- * Initialization of Darwin OS support.
- */
-void OsVendorInit(void)
-{
- if (serverGeneration == 1) {
- DarwinPrintBanner();
- }
-
- // Find the full path to the keymapping file.
- if ( darwinKeymapFile ) {
- char *tempStr = DarwinFindLibraryFile(darwinKeymapFile, "Keyboards");
- if ( !tempStr ) {
- ErrorF("Could not find keymapping file %s.\n", darwinKeymapFile);
- } else {
- ErrorF("Using keymapping provided in %s.\n", tempStr);
- }
- darwinKeymapFile = tempStr;
- }
-
- if ( !darwinKeymapFile ) {
- ErrorF("Reading keymap from the system.\n");
- }
-}
-
-
-/*
- * ddxInitGlobals
- * Called by InitGlobals() from os/util.c.
- */
-void ddxInitGlobals(void)
-{
-}
-
-
-/*
- * ddxProcessArgument
- * Process device-dependent command line args. Returns 0 if argument is
- * not device dependent, otherwise Count of number of elements of argv
- * that are part of a device dependent commandline option.
- */
-int ddxProcessArgument( int argc, char *argv[], int i )
-{
- int numDone;
-
- if ((numDone = DarwinModeProcessArgument( argc, argv, i )))
- return numDone;
-
- if ( !strcmp( argv[i], "-fakebuttons" ) ) {
- darwinFakeButtons = TRUE;
- ErrorF( "Faking a three button mouse\n" );
- return 1;
- }
-
- if ( !strcmp( argv[i], "-nofakebuttons" ) ) {
- darwinFakeButtons = FALSE;
- ErrorF( "Not faking a three button mouse\n" );
- return 1;
- }
-
- if (!strcmp( argv[i], "-fakemouse2" ) ) {
- if ( i == argc-1 ) {
- FatalError( "-fakemouse2 must be followed by a modifer list\n" );
- }
- if (!strcasecmp(argv[i+1], "none") || !strcmp(argv[i+1], ""))
- darwinFakeMouse2Mask = 0;
- else
- darwinFakeMouse2Mask = DarwinParseModifierList(argv[i+1]);
- ErrorF("Modifier mask to fake mouse button 2 = 0x%x\n",
- darwinFakeMouse2Mask);
- return 2;
- }
-
- if (!strcmp( argv[i], "-fakemouse3" ) ) {
- if ( i == argc-1 ) {
- FatalError( "-fakemouse3 must be followed by a modifer list\n" );
- }
- if (!strcasecmp(argv[i+1], "none") || !strcmp(argv[i+1], ""))
- darwinFakeMouse3Mask = 0;
- else
- darwinFakeMouse3Mask = DarwinParseModifierList(argv[i+1]);
- ErrorF("Modifier mask to fake mouse button 3 = 0x%x\n",
- darwinFakeMouse3Mask);
- return 2;
- }
-
- if ( !strcmp( argv[i], "-swapAltMeta" ) ) {
- darwinSwapAltMeta = 1;
- return 1;
- }
-
- if ( !strcmp( argv[i], "-keymap" ) ) {
- if ( i == argc-1 ) {
- FatalError( "-keymap must be followed by a filename\n" );
- }
- darwinKeymapFile = argv[i+1];
- return 2;
- }
-
- if ( !strcmp( argv[i], "-nokeymap" ) ) {
- darwinKeymapFile = NULL;
- return 1;
- }
-
- if ( !strcmp( argv[i], "+synckeymap" ) ) {
- darwinSyncKeymap = TRUE;
- return 1;
- }
-
- if ( !strcmp( argv[i], "-synckeymap" ) ) {
- darwinSyncKeymap = FALSE;
- return 1;
- }
-
- if ( !strcmp( argv[i], "-size" ) ) {
- if ( i >= argc-2 ) {
- FatalError( "-size must be followed by two numbers\n" );
- }
-#ifdef OLD_POWERBOOK_G3
- ErrorF( "Ignoring unsupported -size option on old PowerBook G3\n" );
-#else
- darwinDesiredWidth = atoi( argv[i+1] );
- darwinDesiredHeight = atoi( argv[i+2] );
- ErrorF( "Attempting to use width x height = %i x %i\n",
- darwinDesiredWidth, darwinDesiredHeight );
-#endif
- return 3;
- }
-
- if ( !strcmp( argv[i], "-depth" ) ) {
- int bitDepth;
-
- if ( i == argc-1 ) {
- FatalError( "-depth must be followed by a number\n" );
- }
-#ifdef OLD_POWERBOOK_G3
- ErrorF( "Ignoring unsupported -depth option on old PowerBook G3\n");
-#else
- bitDepth = atoi( argv[i+1] );
- if (bitDepth == 8)
- darwinDesiredDepth = 0;
- else if (bitDepth == 15)
- darwinDesiredDepth = 1;
- else if (bitDepth == 24)
- darwinDesiredDepth = 2;
- else
- FatalError( "Unsupported pixel depth. Use 8, 15, or 24 bits\n" );
- ErrorF( "Attempting to use pixel depth of %i\n", bitDepth );
-#endif
- return 2;
- }
-
- if ( !strcmp( argv[i], "-refresh" ) ) {
- if ( i == argc-1 ) {
- FatalError( "-refresh must be followed by a number\n" );
- }
-#ifdef OLD_POWERBOOK_G3
- ErrorF( "Ignoring unsupported -refresh option on old PowerBook G3\n");
-#else
- darwinDesiredRefresh = atoi( argv[i+1] );
- ErrorF( "Attempting to use refresh rate of %i\n", darwinDesiredRefresh );
-#endif
- return 2;
- }
-
- if (!strcmp( argv[i], "-showconfig" ) || !strcmp( argv[i], "-version" )) {
- DarwinPrintBanner();
- exit(0);
- }
-
- // XDarwinStartup uses this argument to indicate the IOKit X server
- // should be started. Ignore it here.
- if ( !strcmp( argv[i], "-iokit" ) ) {
- return 1;
- }
-
- return 0;
-}
-
-
-/*
- * ddxUseMsg --
- * Print out correct use of device dependent commandline options.
- * Maybe the user now knows what really to do ...
- */
-void ddxUseMsg( void )
-{
- ErrorF("\n");
- ErrorF("\n");
- ErrorF("Device Dependent Usage:\n");
- ErrorF("\n");
- ErrorF("-fakebuttons : fake a three button mouse with Command and Option keys.\n");
- ErrorF("-nofakebuttons : don't fake a three button mouse.\n");
- ErrorF("-fakemouse2 <modifiers> : fake middle mouse button with modifier keys.\n");
- ErrorF("-fakemouse3 <modifiers> : fake right mouse button with modifier keys.\n");
- ErrorF(" ex: -fakemouse2 \"option,shift\" = option-shift-click is middle button.\n");
- ErrorF("-keymap <file> : read the keymapping from a file instead of the kernel.\n");
- ErrorF("-version : show the server version.\n");
- ErrorF("\n");
-#ifdef DARWIN_WITH_QUARTZ
- ErrorF("Quartz modes:\n");
- ErrorF("-fullscreen : run full screen in parallel with Mac OS X window server.\n");
- ErrorF("-rootless : run rootless inside Mac OS X window server.\n");
- ErrorF("-quartz : use default Mac OS X window server mode\n");
- ErrorF("\n");
- ErrorF("Options ignored in rootless mode:\n");
-#endif
- ErrorF("-size <height> <width> : use a screen resolution of <height> x <width>.\n");
- ErrorF("-depth <8,15,24> : use this bit depth.\n");
- ErrorF("-refresh <rate> : use a monitor refresh rate of <rate> Hz.\n");
- ErrorF("\n");
-}
-
-
-/*
- * ddxGiveUp --
- * Device dependent cleanup. Called by dix before normal server death.
- */
-void ddxGiveUp( void )
-{
- ErrorF( "Quitting XDarwin...\n" );
-
- DarwinModeGiveUp();
-}
-
-
-/*
- * AbortDDX --
- * DDX - specific abort routine. Called by AbortServer(). The attempt is
- * made to restore all original setting of the displays. Also all devices
- * are closed.
- */
-void AbortDDX( void )
-{
- ErrorF( " AbortDDX\n" );
- /*
- * This is needed for a abnormal server exit, since the normal exit stuff
- * MUST also be performed (i.e. the vt must be left in a defined state)
- */
- ddxGiveUp();
-}
-
-
-#ifdef DPMSExtension
-/*
- * DPMS extension stubs
- */
-Bool DPMSSupported(void)
-{
- return FALSE;
-}
-
-void DPMSSet(int level)
-{
-}
-
-int DPMSGet(int *level)
-{
- return -1;
-}
-#endif
-
-
-#include "mivalidate.h" // for union _Validate used by windowstr.h
-#include "windowstr.h" // for struct _Window
-#include "scrnintstr.h" // for struct _Screen
-
-// This is copied from Xserver/hw/xfree86/common/xf86Helper.c.
-// Quartz mode uses this when switching in and out of Quartz.
-// Quartz or IOKit can use this when waking from sleep.
-// Copyright (c) 1997-1998 by The XFree86 Project, Inc.
-
-/*
- * xf86SetRootClip --
- * Enable or disable rendering to the screen by
- * setting the root clip list and revalidating
- * all of the windows
- */
-
-void
-xf86SetRootClip (ScreenPtr pScreen, BOOL enable)
-{
- WindowPtr pWin = WindowTable[pScreen->myNum];
- WindowPtr pChild;
- Bool WasViewable = (Bool)(pWin->viewable);
- Bool anyMarked = TRUE;
- RegionPtr pOldClip = NULL, bsExposed;
-#ifdef DO_SAVE_UNDERS
- Bool dosave = FALSE;
-#endif
- WindowPtr pLayerWin;
- BoxRec box;
-
- if (WasViewable)
- {
- for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib)
- {
- (void) (*pScreen->MarkOverlappedWindows)(pChild,
- pChild,
- &pLayerWin);
- }
- (*pScreen->MarkWindow) (pWin);
- anyMarked = TRUE;
- if (pWin->valdata)
- {
- if (HasBorder (pWin))
- {
- RegionPtr borderVisible;
-
- borderVisible = REGION_CREATE(pScreen, NullBox, 1);
- REGION_SUBTRACT(pScreen, borderVisible,
- &pWin->borderClip, &pWin->winSize);
- pWin->valdata->before.borderVisible = borderVisible;
- }
- pWin->valdata->before.resized = TRUE;
- }
- }
-
- /*
- * Use REGION_BREAK to avoid optimizations in ValidateTree
- * that assume the root borderClip can't change well, normally
- * it doesn't...)
- */
- if (enable)
- {
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = pScreen->width;
- box.y2 = pScreen->height;
- REGION_RESET(pScreen, &pWin->borderClip, &box);
- REGION_BREAK (pWin->drawable.pScreen, &pWin->clipList);
- }
- else
- {
- REGION_EMPTY(pScreen, &pWin->borderClip);
- REGION_BREAK (pWin->drawable.pScreen, &pWin->clipList);
- }
-
- ResizeChildrenWinSize (pWin, 0, 0, 0, 0);
-
- if (WasViewable)
- {
- if (pWin->backStorage)
- {
- pOldClip = REGION_CREATE(pScreen, NullBox, 1);
- REGION_COPY(pScreen, pOldClip, &pWin->clipList);
- }
-
- if (pWin->firstChild)
- {
- anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin->firstChild,
- pWin->firstChild,
- (WindowPtr *)NULL);
- }
- else
- {
- (*pScreen->MarkWindow) (pWin);
- anyMarked = TRUE;
- }
-
-#ifdef DO_SAVE_UNDERS
- if (DO_SAVE_UNDERS(pWin))
- {
- dosave = (*pScreen->ChangeSaveUnder)(pLayerWin, pLayerWin);
- }
-#endif /* DO_SAVE_UNDERS */
-
- if (anyMarked)
- (*pScreen->ValidateTree)(pWin, NullWindow, VTOther);
- }
-
- if (pWin->backStorage &&
- ((pWin->backingStore == Always) || WasViewable))
- {
- if (!WasViewable)
- pOldClip = &pWin->clipList; /* a convenient empty region */
- bsExposed = (*pScreen->TranslateBackingStore)
- (pWin, 0, 0, pOldClip,
- pWin->drawable.x, pWin->drawable.y);
- if (WasViewable)
- REGION_DESTROY(pScreen, pOldClip);
- if (bsExposed)
- {
- RegionPtr valExposed = NullRegion;
-
- if (pWin->valdata)
- valExposed = &pWin->valdata->after.exposed;
- (*pScreen->WindowExposures) (pWin, valExposed, bsExposed);
- if (valExposed)
- REGION_EMPTY(pScreen, valExposed);
- REGION_DESTROY(pScreen, bsExposed);
- }
- }
- if (WasViewable)
- {
- if (anyMarked)
- (*pScreen->HandleExposures)(pWin);
-#ifdef DO_SAVE_UNDERS
- if (dosave)
- (*pScreen->PostChangeSaveUnder)(pLayerWin, pLayerWin);
-#endif /* DO_SAVE_UNDERS */
- if (anyMarked && pScreen->PostValidateTree)
- (*pScreen->PostValidateTree)(pWin, NullWindow, VTOther);
- }
- if (pWin->realized)
- WindowsRestructured ();
- FlushAllOutput ();
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/darwin.h b/nx-X11/programs/Xserver/hw/darwin/darwin.h
deleted file mode 100644
index 4f4e9b91f..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/darwin.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (c) 2001-2004 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/darwin.h,v 1.20 2003/11/15 00:07:09 torrey Exp $ */
-
-#ifndef _DARWIN_H
-#define _DARWIN_H
-
-#include <IOKit/IOTypes.h>
-#include "inputstr.h"
-#include "scrnintstr.h"
-#include <X11/extensions/XKB.h>
-
-typedef struct {
- void *framebuffer;
- int x;
- int y;
- int width;
- int height;
- int pitch;
- int colorType;
- int bitsPerPixel;
- int colorBitsPerPixel;
- int bitsPerComponent;
-} DarwinFramebufferRec, *DarwinFramebufferPtr;
-
-
-// From darwin.c
-void DarwinPrintBanner();
-int DarwinParseModifierList(const char *constmodifiers);
-void DarwinAdjustScreenOrigins(ScreenInfo *pScreenInfo);
-void xf86SetRootClip (ScreenPtr pScreen, BOOL enable);
-
-// From darwinEvents.c
-Bool DarwinEQInit(DevicePtr pKbd, DevicePtr pPtr);
-void DarwinEQEnqueue(const xEvent *e);
-void DarwinEQPointerPost(xEvent *e);
-void DarwinEQSwitchScreen(ScreenPtr pScreen, Bool fromDIX);
-
-// From darwinKeyboard.c
-int DarwinModifierNXKeyToNXKeycode(int key, int side);
-void DarwinKeyboardInit(DeviceIntPtr pDev);
-int DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide);
-int DarwinModifierNXKeyToNXMask(int key);
-int DarwinModifierNXMaskToNXKey(int mask);
-int DarwinModifierStringToNXKey(const char *string);
-
-// Mode specific functions
-Bool DarwinModeAddScreen(int index, ScreenPtr pScreen);
-Bool DarwinModeSetupScreen(int index, ScreenPtr pScreen);
-void DarwinModeInitOutput(int argc,char **argv);
-void DarwinModeInitInput(int argc, char **argv);
-int DarwinModeProcessArgument(int argc, char *argv[], int i);
-void DarwinModeProcessEvent(xEvent *xe);
-void DarwinModeGiveUp(void);
-void DarwinModeBell(int volume, DeviceIntPtr pDevice, pointer ctrl, int class);
-
-
-#undef assert
-#define assert(x) { if ((x) == 0) \
- FatalError("assert failed on line %d of %s!\n", __LINE__, __FILE__); }
-#define kern_assert(x) { if ((x) != KERN_SUCCESS) \
- FatalError("assert failed on line %d of %s with kernel return 0x%x!\n", \
- __LINE__, __FILE__, x); }
-#define SCREEN_PRIV(pScreen) \
- ((DarwinFramebufferPtr)pScreen->devPrivates[darwinScreenIndex].ptr)
-
-
-#define MIN_KEYCODE XkbMinLegalKeyCode // unfortunately, this isn't 0...
-
-
-/*
- * Global variables from darwin.c
- */
-extern int darwinScreenIndex; // index into pScreen.devPrivates
-extern int darwinScreensFound;
-extern io_connect_t darwinParamConnect;
-extern int darwinEventReadFD;
-extern int darwinEventWriteFD;
-extern DeviceIntPtr darwinPointer;
-extern DeviceIntPtr darwinKeyboard;
-
-// User preferences
-extern int darwinMouseAccelChange;
-extern int darwinFakeButtons;
-extern int darwinFakeMouse2Mask;
-extern int darwinFakeMouse3Mask;
-extern int darwinSwapAltMeta;
-extern char *darwinKeymapFile;
-extern int darwinSyncKeymap;
-extern unsigned int darwinDesiredWidth, darwinDesiredHeight;
-extern int darwinDesiredDepth;
-extern int darwinDesiredRefresh;
-
-// location of X11's (0,0) point in global screen coordinates
-extern int darwinMainScreenX;
-extern int darwinMainScreenY;
-
-
-/*
- * Special ddx events understood by the X server
- */
-enum {
- kXDarwinUpdateModifiers // update all modifier keys
- = LASTEvent+1, // (from X.h list of event names)
- kXDarwinUpdateButtons, // update state of mouse buttons 2 and up
- kXDarwinScrollWheel, // scroll wheel event
-
- /*
- * Quartz-specific events -- not used in IOKit mode
- */
- kXDarwinActivate, // restore X drawing and cursor
- kXDarwinDeactivate, // clip X drawing and switch to Aqua cursor
- kXDarwinSetRootClip, // enable or disable drawing to the X screen
- kXDarwinQuit, // kill the X server and release the display
- kXDarwinReadPasteboard, // copy Mac OS X pasteboard into X cut buffer
- kXDarwinWritePasteboard, // copy X cut buffer onto Mac OS X pasteboard
- /*
- * AppleWM events
- */
- kXDarwinControllerNotify, // send an AppleWMControllerNotify event
- kXDarwinPasteboardNotify, // notify the WM to copy or paste
- /*
- * Xplugin notification events
- */
- kXDarwinDisplayChanged, // display configuration has changed
- kXDarwinWindowState, // window visibility state has changed
- kXDarwinWindowMoved // window has moved on screen
-};
-
-#endif /* _DARWIN_H */
diff --git a/nx-X11/programs/Xserver/hw/darwin/darwinClut8.h b/nx-X11/programs/Xserver/hw/darwin/darwinClut8.h
deleted file mode 100644
index 06e7b71c5..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/darwinClut8.h
+++ /dev/null
@@ -1,532 +0,0 @@
-/*
- * Darwin default 8-bit Colormap for StaticColor
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/darwinClut8.h,v 1.1.8.1 2003/03/04 01:31:43 torrey Exp $ */
-
-#ifndef _DARWIN_CLUT8_
-#define _DARWIN_CLUT8_
-
-#ifdef USE_NEW_CLUT
-
-static xColorItem darwinClut8[] = {
- { 0, 0xffff, 0xffff, 0xffff, 0, 0 },
- { 1, 0xfefe, 0xfefe, 0xfefe, 0, 0 },
- { 2, 0xfdfd, 0xfdfd, 0xfdfd, 0, 0 },
- { 3, 0xb8b8, 0x2727, 0x2b2b, 0, 0 },
- { 4, 0xfcfc, 0xfcfc, 0xfcfc, 0, 0 },
- { 5, 0xffff, 0xffff, 0x0, 0, 0 },
- { 6, 0xfafa, 0xfafa, 0xfafa, 0, 0 },
- { 7, 0xf9f9, 0xf9f9, 0xf9f9, 0, 0 },
- { 8, 0xf8f8, 0xf8f8, 0xf8f8, 0, 0 },
- { 9, 0xf7f7, 0xf7f7, 0xf7f7, 0, 0 },
- { 10, 0xf6f6, 0xf6f6, 0xf6f6, 0, 0 },
- { 11, 0xf5f5, 0xf5f5, 0xf5f5, 0, 0 },
- { 12, 0xf4f4, 0xf4f4, 0xf4f4, 0, 0 },
- { 13, 0xf2f2, 0xf2f2, 0xf2f2, 0, 0 },
- { 14, 0xf1f1, 0xf1f1, 0xf1f1, 0, 0 },
- { 15, 0x0, 0x0, 0x0, 0, 0 },
- { 16, 0xefef, 0xefef, 0xefef, 0, 0 },
- { 17, 0xeeee, 0xeeee, 0xeeee, 0, 0 },
- { 18, 0xeded, 0xeded, 0xeded, 0, 0 },
- { 19, 0xebeb, 0xebeb, 0xebeb, 0, 0 },
- { 20, 0xe8e8, 0xe8e8, 0xe8e8, 0, 0 },
- { 21, 0xe7e7, 0xe7e7, 0xe7e7, 0, 0 },
- { 22, 0xc9c9, 0x3838, 0x3e3e, 0, 0 },
- { 23, 0xe5e5, 0xe5e5, 0xe5e5, 0, 0 },
- { 24, 0xffff, 0x0, 0xffff, 0, 0 },
- { 25, 0xfbfb, 0xfbfb, 0xfbfb, 0, 0 },
- { 26, 0xdede, 0x6c6c, 0x7272, 0, 0 },
- { 27, 0xe0e0, 0xe0e0, 0xe0e0, 0, 0 },
- { 28, 0xe8e8, 0x8686, 0x9090, 0, 0 },
- { 29, 0xdede, 0xdede, 0xdede, 0, 0 },
- { 30, 0xdddd, 0xdddd, 0xdddd, 0, 0 },
- { 31, 0xd3d3, 0x7e7e, 0x8d8d, 0, 0 },
- { 32, 0xd9d9, 0xd9d9, 0xd9d9, 0, 0 },
- { 33, 0xf3f3, 0x9696, 0xa6a6, 0, 0 },
- { 34, 0xb1b1, 0x1c1c, 0x3939, 0, 0 },
- { 35, 0xffff, 0x0, 0x0, 0, 0 },
- { 36, 0xbebe, 0x5e5e, 0x7272, 0, 0 },
- { 37, 0xd3d3, 0xd3d3, 0xd3d3, 0, 0 },
- { 38, 0xc6c6, 0x2e2e, 0x6767, 0, 0 },
- { 39, 0xd1d1, 0xd1d1, 0xd1d1, 0, 0 },
- { 40, 0xa3a3, 0x606, 0x4545, 0, 0 },
- { 41, 0xcece, 0xcece, 0xcece, 0, 0 },
- { 42, 0xcccc, 0xcccc, 0xffff, 0, 0 },
- { 43, 0xcccc, 0xcccc, 0xcccc, 0, 0 },
- { 44, 0xc6c6, 0x8f8f, 0xa7a7, 0, 0 },
- { 45, 0xe1e1, 0xd3d3, 0xd9d9, 0, 0 },
- { 46, 0xcece, 0x9e9e, 0xb4b4, 0, 0 },
- { 47, 0xcaca, 0xcaca, 0xcaca, 0, 0 },
- { 48, 0xbfbf, 0x3f3f, 0x7d7d, 0, 0 },
- { 49, 0xc9c9, 0xc9c9, 0xc9c9, 0, 0 },
- { 50, 0xf4f4, 0x8989, 0xbebe, 0, 0 },
- { 51, 0xc6c6, 0xc6c6, 0xc6c6, 0, 0 },
- { 52, 0xd6d6, 0x5151, 0x9797, 0, 0 },
- { 53, 0xc9c9, 0x2c2c, 0x8484, 0, 0 },
- { 54, 0x9696, 0x1a1a, 0x6a6a, 0, 0 },
- { 55, 0xc2c2, 0xc2c2, 0xc2c2, 0, 0 },
- { 56, 0xf3f3, 0x6f6f, 0xc6c6, 0, 0 },
- { 57, 0xe5e5, 0x4c4c, 0xbbbb, 0, 0 },
- { 58, 0xb7b7, 0x5a5a, 0x9c9c, 0, 0 },
- { 59, 0xbfbf, 0xbfbf, 0xbfbf, 0, 0 },
- { 60, 0xbebe, 0xbebe, 0xbebe, 0, 0 },
- { 61, 0xbdbd, 0xbdbd, 0xbdbd, 0, 0 },
- { 62, 0xb8b8, 0x2121, 0xa2a2, 0, 0 },
- { 63, 0xd3d3, 0x4444, 0xc0c0, 0, 0 },
- { 64, 0xc2c2, 0x6666, 0xb7b7, 0, 0 },
- { 65, 0xf4f4, 0x6666, 0xe6e6, 0, 0 },
- { 66, 0xfcfc, 0x7373, 0xfdfd, 0, 0 },
- { 67, 0xb9b9, 0xb9b9, 0xb9b9, 0, 0 },
- { 68, 0xeaea, 0xdfdf, 0xeaea, 0, 0 },
- { 69, 0xd4d4, 0x7171, 0xd5d5, 0, 0 },
- { 70, 0xf9f9, 0x8b8b, 0xffff, 0, 0 },
- { 71, 0xf5f5, 0xadad, 0xffff, 0, 0 },
- { 72, 0xbcbc, 0x9292, 0xc2c2, 0, 0 },
- { 73, 0xc7c7, 0x4f4f, 0xd9d9, 0, 0 },
- { 74, 0xa0a0, 0x4444, 0xafaf, 0, 0 },
- { 75, 0xc8c8, 0x8c8c, 0xd5d5, 0, 0 },
- { 76, 0xd7d7, 0x7474, 0xf7f7, 0, 0 },
- { 77, 0xb4b4, 0xb4b4, 0xb4b4, 0, 0 },
- { 78, 0xdada, 0x9595, 0xf9f9, 0, 0 },
- { 79, 0xeded, 0xcbcb, 0xffff, 0, 0 },
- { 80, 0xb2b2, 0xb2b2, 0xb2b2, 0, 0 },
- { 81, 0xa1a1, 0x6161, 0xd7d7, 0, 0 },
- { 82, 0xb2b2, 0x8585, 0xe2e2, 0, 0 },
- { 83, 0x5959, 0x2626, 0x9c9c, 0, 0 },
- { 84, 0x7c7c, 0x5151, 0xcccc, 0, 0 },
- { 85, 0xb0b0, 0xb0b0, 0xb0b0, 0, 0 },
- { 86, 0xb4b4, 0x8e8e, 0xfcfc, 0, 0 },
- { 87, 0xd5d5, 0xc0c0, 0xffff, 0, 0 },
- { 88, 0x5d5d, 0x3232, 0xcccc, 0, 0 },
- { 89, 0x7b7b, 0x5c5c, 0xe5e5, 0, 0 },
- { 90, 0xc0c0, 0xb0b0, 0xfdfd, 0, 0 },
- { 91, 0x6060, 0x5353, 0xadad, 0, 0 },
- { 92, 0x1212, 0xc0c, 0x7e7e, 0, 0 },
- { 93, 0x2e2e, 0x2929, 0x9999, 0, 0 },
- { 94, 0x7979, 0x7878, 0xe9e9, 0, 0 },
- { 95, 0x5b5b, 0x5c5c, 0xd0d0, 0, 0 },
- { 96, 0x6969, 0x6a6a, 0xcccc, 0, 0 },
- { 97, 0x9393, 0x9494, 0xf8f8, 0, 0 },
- { 98, 0x9292, 0x9292, 0xc3c3, 0, 0 },
- { 99, 0x4141, 0x4444, 0xbaba, 0, 0 },
- { 100, 0xa8a8, 0xabab, 0xffff, 0, 0 },
- { 101, 0xa3a3, 0xa3a3, 0xa3a3, 0, 0 },
- { 102, 0xdbdb, 0xdddd, 0xeaea, 0, 0 },
- { 103, 0x3131, 0x4949, 0xaaaa, 0, 0 },
- { 104, 0x7070, 0x8f8f, 0xf9f9, 0, 0 },
- { 105, 0x4848, 0x6666, 0xc1c1, 0, 0 },
- { 106, 0x5c5c, 0x7e7e, 0xe9e9, 0, 0 },
- { 107, 0xe2e2, 0xe5e5, 0xebeb, 0, 0 },
- { 108, 0xb0b0, 0xcdcd, 0xffff, 0, 0 },
- { 109, 0x6c6c, 0x8989, 0xb7b7, 0, 0 },
- { 110, 0x3434, 0x6565, 0xafaf, 0, 0 },
- { 111, 0x8c8c, 0xb9b9, 0xffff, 0, 0 },
- { 112, 0x3737, 0x7979, 0xd4d4, 0, 0 },
- { 113, 0x5a5a, 0x9999, 0xeaea, 0, 0 },
- { 114, 0xe0e, 0x4c4c, 0x9595, 0, 0 },
- { 115, 0x7979, 0xb9b9, 0xffff, 0, 0 },
- { 116, 0x8a8a, 0xa3a3, 0xbcbc, 0, 0 },
- { 117, 0x2020, 0x6161, 0x9d9d, 0, 0 },
- { 118, 0x8f8f, 0xaeae, 0xcaca, 0, 0 },
- { 119, 0xa0a, 0x6060, 0xa8a8, 0, 0 },
- { 120, 0x3f3f, 0x9494, 0xd9d9, 0, 0 },
- { 121, 0x6363, 0xb5b5, 0xf9f9, 0, 0 },
- { 122, 0xe2e2, 0xe8e8, 0xeded, 0, 0 },
- { 123, 0x2828, 0x6a6a, 0x9999, 0, 0 },
- { 124, 0x5555, 0xb2b2, 0xe7e7, 0, 0 },
- { 125, 0x3232, 0x8989, 0xa9a9, 0, 0 },
- { 126, 0xcfcf, 0xdada, 0xdede, 0, 0 },
- { 127, 0x2929, 0xa1a1, 0xc7c7, 0, 0 },
- { 128, 0x8686, 0xa9a9, 0xb4b4, 0, 0 },
- { 129, 0x0, 0x5f5f, 0x7979, 0, 0 },
- { 130, 0xc0c, 0x7777, 0x8e8e, 0, 0 },
- { 131, 0x1212, 0x8f8f, 0xabab, 0, 0 },
- { 132, 0x4141, 0xbaba, 0xd5d5, 0, 0 },
- { 133, 0x2424, 0x8282, 0x8383, 0, 0 },
- { 134, 0x2c2c, 0xc4c4, 0xc3c3, 0, 0 },
- { 135, 0x1a1a, 0xabab, 0xa6a6, 0, 0 },
- { 136, 0x4b4b, 0xa8a8, 0xa2a2, 0, 0 },
- { 137, 0xa0a, 0x9393, 0x8585, 0, 0 },
- { 138, 0xd0d, 0xa5a5, 0x9696, 0, 0 },
- { 139, 0x2626, 0xbcbc, 0xacac, 0, 0 },
- { 140, 0x404, 0x8181, 0x7272, 0, 0 },
- { 141, 0x1919, 0xb3b3, 0x8686, 0, 0 },
- { 142, 0x2929, 0xc1c1, 0x9494, 0, 0 },
- { 143, 0x2121, 0x9c9c, 0x7171, 0, 0 },
- { 144, 0x202, 0x8c8c, 0x5050, 0, 0 },
- { 145, 0x3535, 0xd0d0, 0x8989, 0, 0 },
- { 146, 0x4646, 0xa5a5, 0x7676, 0, 0 },
- { 147, 0x202, 0x7d7d, 0x3939, 0, 0 },
- { 148, 0x2929, 0xc9c9, 0x7171, 0, 0 },
- { 149, 0x5757, 0xd6d6, 0x8f8f, 0, 0 },
- { 150, 0xa2a2, 0xb5b5, 0xaaaa, 0, 0 },
- { 151, 0x101, 0x8888, 0x2a2a, 0, 0 },
- { 152, 0x7474, 0xbebe, 0x8a8a, 0, 0 },
- { 153, 0x1919, 0xb6b6, 0x4747, 0, 0 },
- { 154, 0x2d2d, 0xc6c6, 0x5151, 0, 0 },
- { 155, 0x3838, 0xdede, 0x5d5d, 0, 0 },
- { 156, 0x4c4c, 0xf4f4, 0x6f6f, 0, 0 },
- { 157, 0x9191, 0x9c9c, 0x9393, 0, 0 },
- { 158, 0x0, 0x8e8e, 0x1919, 0, 0 },
- { 159, 0x1010, 0xafaf, 0x2828, 0, 0 },
- { 160, 0xe3e3, 0xe3e3, 0xe3e3, 0, 0 },
- { 161, 0x808, 0xa1a1, 0x1a1a, 0, 0 },
- { 162, 0x5959, 0xc2c2, 0x6161, 0, 0 },
- { 163, 0xf0f0, 0xf0f0, 0xf0f0, 0, 0 },
- { 164, 0x8f8f, 0x9c9c, 0x9090, 0, 0 },
- { 165, 0x2323, 0xcece, 0x2a2a, 0, 0 },
- { 166, 0x1212, 0xbaba, 0x1717, 0, 0 },
- { 167, 0x101, 0x8a8a, 0x202, 0, 0 },
- { 168, 0x303, 0x9a9a, 0x202, 0, 0 },
- { 169, 0x4040, 0xe4e4, 0x4040, 0, 0 },
- { 170, 0x808, 0xb2b2, 0x505, 0, 0 },
- { 171, 0x1313, 0xcccc, 0xf0f, 0, 0 },
- { 172, 0x3636, 0xd7d7, 0x3232, 0, 0 },
- { 173, 0x2828, 0xe9e9, 0x1f1f, 0, 0 },
- { 174, 0x5353, 0xfbfb, 0x4c4c, 0, 0 },
- { 175, 0x6f6f, 0xafaf, 0x6a6a, 0, 0 },
- { 176, 0x7171, 0xe0e0, 0x6767, 0, 0 },
- { 177, 0x3232, 0xc0c0, 0x1212, 0, 0 },
- { 178, 0x2929, 0xa5a5, 0x808, 0, 0 },
- { 179, 0x5c5c, 0xdddd, 0x3535, 0, 0 },
- { 180, 0x0, 0xffff, 0xffff, 0, 0 },
- { 181, 0x6363, 0xc8c8, 0x4545, 0, 0 },
- { 182, 0x8686, 0xfdfd, 0x5b5b, 0, 0 },
- { 183, 0x7171, 0xf6f6, 0x3939, 0, 0 },
- { 184, 0x5555, 0xcccc, 0x1515, 0, 0 },
- { 185, 0x0, 0xffff, 0x0, 0, 0 },
- { 186, 0x9090, 0xcaca, 0x6e6e, 0, 0 },
- { 187, 0x4343, 0xa7a7, 0x101, 0, 0 },
- { 188, 0x8d8d, 0xe4e4, 0x3737, 0, 0 },
- { 189, 0xb3b3, 0xf0f0, 0x6464, 0, 0 },
- { 190, 0x8585, 0x8e8e, 0x7a7a, 0, 0 },
- { 191, 0xb0b0, 0xfafa, 0x4d4d, 0, 0 },
- { 192, 0xd6d6, 0xd6d6, 0xd6d6, 0, 0 },
- { 193, 0x8888, 0xd0d0, 0x1a1a, 0, 0 },
- { 194, 0x6a6a, 0xa7a7, 0x303, 0, 0 },
- { 195, 0x9898, 0xbfbf, 0x4141, 0, 0 },
- { 196, 0xcdcd, 0xf8f8, 0x5151, 0, 0 },
- { 197, 0x9494, 0xa4a4, 0x5555, 0, 0 },
- { 198, 0x9191, 0xb0b0, 0xa0a, 0, 0 },
- { 199, 0xdada, 0xf1f1, 0x3c3c, 0, 0 },
- { 200, 0xbaba, 0xcaca, 0x5353, 0, 0 },
- { 201, 0xb9b9, 0xc3c3, 0x2828, 0, 0 },
- { 202, 0xb1b1, 0xbaba, 0x1212, 0, 0 },
- { 203, 0xd2d2, 0xd9d9, 0x2626, 0, 0 },
- { 204, 0xe8e8, 0xecec, 0x2d2d, 0, 0 },
- { 205, 0x9898, 0x9696, 0x202, 0, 0 },
- { 206, 0xadad, 0xadad, 0x5c5c, 0, 0 },
- { 207, 0xe2e2, 0xd8d8, 0x3838, 0, 0 },
- { 208, 0xd9d9, 0xc4c4, 0x3838, 0, 0 },
- { 209, 0xa8a8, 0x9a9a, 0x5050, 0, 0 },
- { 210, 0x0, 0x0, 0xffff, 0, 0 },
- { 211, 0xbebe, 0xaeae, 0x5e5e, 0, 0 },
- { 212, 0x9a9a, 0x9898, 0x8e8e, 0, 0 },
- { 213, 0xacac, 0x8d8d, 0xd0d, 0, 0 },
- { 214, 0xc5c5, 0xa0a0, 0x2b2b, 0, 0 },
- { 215, 0xdbdb, 0xb5b5, 0x4848, 0, 0 },
- { 216, 0xdddd, 0x0, 0x0, 0, 0 },
- { 217, 0x9c9c, 0x6d6d, 0x303, 0, 0 },
- { 218, 0xd4d4, 0xa8a8, 0x4747, 0, 0 },
- { 219, 0xb7b7, 0x7171, 0x1717, 0, 0 },
- { 220, 0xdcdc, 0xa1a1, 0x5a5a, 0, 0 },
- { 221, 0xb9b9, 0x9c9c, 0x7c7c, 0, 0 },
- { 222, 0xb4b4, 0xabab, 0xa2a2, 0, 0 },
- { 223, 0x9e9e, 0x4b4b, 0x101, 0, 0 },
- { 224, 0xc8c8, 0x7878, 0x3535, 0, 0 },
- { 225, 0xd2d2, 0x8d8d, 0x5151, 0, 0 },
- { 226, 0xadad, 0x5252, 0xf0f, 0, 0 },
- { 227, 0x0, 0xbbbb, 0x0, 0, 0 },
- { 228, 0xb2b2, 0x6666, 0x3838, 0, 0 },
- { 229, 0xb1b1, 0xa6a6, 0x9f9f, 0, 0 },
- { 230, 0xb1b1, 0x8787, 0x6f6f, 0, 0 },
- { 231, 0xa4a4, 0x3434, 0x303, 0, 0 },
- { 232, 0xeeee, 0x9e9e, 0x8585, 0, 0 },
- { 233, 0xc9c9, 0x7373, 0x5a5a, 0, 0 },
- { 234, 0xe6e6, 0x9494, 0x7c7c, 0, 0 },
- { 235, 0xa9a9, 0x2222, 0x606, 0, 0 },
- { 236, 0xdbdb, 0x8787, 0x7474, 0, 0 },
- { 237, 0xb0b0, 0x2e2e, 0x1515, 0, 0 },
- { 238, 0xb7b7, 0x5a5a, 0x5050, 0, 0 },
- { 239, 0xb2b2, 0x4242, 0x3b3b, 0, 0 },
- { 240, 0xcdcd, 0x7373, 0x6e6e, 0, 0 },
- { 241, 0xd9d9, 0x5858, 0x5858, 0, 0 },
- { 242, 0xacac, 0xacac, 0xacac, 0, 0 },
- { 243, 0xa0a0, 0xa0a0, 0xa0a0, 0, 0 },
- { 244, 0x9a9a, 0x9a9a, 0x9a9a, 0, 0 },
- { 245, 0x9292, 0x9292, 0x9292, 0, 0 },
- { 246, 0x8e8e, 0x8e8e, 0x8e8e, 0, 0 },
- { 247, 0xbbbb, 0xbbbb, 0xbbbb, 0, 0 },
- { 248, 0x8181, 0x8181, 0x8181, 0, 0 },
- { 249, 0x8888, 0x8888, 0x8888, 0, 0 },
- { 250, 0x7777, 0x7777, 0x7777, 0, 0 },
- { 251, 0x5555, 0x5555, 0x5555, 0, 0 },
- { 252, 0x4444, 0x4444, 0x4444, 0, 0 },
- { 253, 0x2222, 0x2222, 0x2222, 0, 0 },
- { 254, 0x7b7b, 0x7b7b, 0x7b7b, 0, 0 },
- { 255, 0x0, 0x0, 0x0, 0, 0 },
-};
-
-#else /* !USE_NEW_CLUT */
-
-static xColorItem darwinClut8[] = {
- { 0, 0x0000, 0x0000, 0x0000, 0, 0 },
- { 1, 0xffff, 0xffff, 0xcccc, 0, 0 },
- { 2, 0xffff, 0xffff, 0x9999, 0, 0 },
- { 3, 0xffff, 0xffff, 0x6666, 0, 0 },
- { 4, 0xffff, 0xffff, 0x3333, 0, 0 },
- { 5, 0xffff, 0xffff, 0x0000, 0, 0 },
- { 6, 0xffff, 0xcccc, 0xffff, 0, 0 },
- { 7, 0xffff, 0xcccc, 0xcccc, 0, 0 },
- { 8, 0xffff, 0xcccc, 0x9999, 0, 0 },
- { 9, 0xffff, 0xcccc, 0x6666, 0, 0 },
- { 10, 0xffff, 0xcccc, 0x3333, 0, 0 },
- { 11, 0xffff, 0xcccc, 0x0000, 0, 0 },
- { 12, 0xffff, 0x9999, 0xffff, 0, 0 },
- { 13, 0xffff, 0x9999, 0xcccc, 0, 0 },
- { 14, 0xffff, 0x9999, 0x9999, 0, 0 },
- { 15, 0xffff, 0x9999, 0x6666, 0, 0 },
- { 16, 0xffff, 0x9999, 0x3333, 0, 0 },
- { 17, 0xffff, 0x9999, 0x0000, 0, 0 },
- { 18, 0xffff, 0x6666, 0xffff, 0, 0 },
- { 19, 0xffff, 0x6666, 0xcccc, 0, 0 },
- { 20, 0xffff, 0x6666, 0x9999, 0, 0 },
- { 21, 0xffff, 0x6666, 0x6666, 0, 0 },
- { 22, 0xffff, 0x6666, 0x3333, 0, 0 },
- { 23, 0xffff, 0x6666, 0x0000, 0, 0 },
- { 24, 0xffff, 0x3333, 0xffff, 0, 0 },
- { 25, 0xffff, 0x3333, 0xcccc, 0, 0 },
- { 26, 0xffff, 0x3333, 0x9999, 0, 0 },
- { 27, 0xffff, 0x3333, 0x6666, 0, 0 },
- { 28, 0xffff, 0x3333, 0x3333, 0, 0 },
- { 29, 0xffff, 0x3333, 0x0000, 0, 0 },
- { 30, 0xffff, 0x0000, 0xffff, 0, 0 },
- { 31, 0xffff, 0x0000, 0xcccc, 0, 0 },
- { 32, 0xffff, 0x0000, 0x9999, 0, 0 },
- { 33, 0xffff, 0x0000, 0x6666, 0, 0 },
- { 34, 0xffff, 0x0000, 0x3333, 0, 0 },
- { 35, 0xffff, 0x0000, 0x0000, 0, 0 },
- { 36, 0xcccc, 0xffff, 0xffff, 0, 0 },
- { 37, 0xcccc, 0xffff, 0xcccc, 0, 0 },
- { 38, 0xcccc, 0xffff, 0x9999, 0, 0 },
- { 39, 0xcccc, 0xffff, 0x6666, 0, 0 },
- { 40, 0xcccc, 0xffff, 0x3333, 0, 0 },
- { 41, 0xcccc, 0xffff, 0x0000, 0, 0 },
- { 42, 0xcccc, 0xcccc, 0xffff, 0, 0 },
- { 43, 0xcccc, 0xcccc, 0xcccc, 0, 0 },
- { 44, 0xcccc, 0xcccc, 0x9999, 0, 0 },
- { 45, 0xcccc, 0xcccc, 0x6666, 0, 0 },
- { 46, 0xcccc, 0xcccc, 0x3333, 0, 0 },
- { 47, 0xcccc, 0xcccc, 0x0000, 0, 0 },
- { 48, 0xcccc, 0x9999, 0xffff, 0, 0 },
- { 49, 0xcccc, 0x9999, 0xcccc, 0, 0 },
- { 50, 0xcccc, 0x9999, 0x9999, 0, 0 },
- { 51, 0xcccc, 0x9999, 0x6666, 0, 0 },
- { 52, 0xcccc, 0x9999, 0x3333, 0, 0 },
- { 53, 0xcccc, 0x9999, 0x0000, 0, 0 },
- { 54, 0xcccc, 0x6666, 0xffff, 0, 0 },
- { 55, 0xcccc, 0x6666, 0xcccc, 0, 0 },
- { 56, 0xcccc, 0x6666, 0x9999, 0, 0 },
- { 57, 0xcccc, 0x6666, 0x6666, 0, 0 },
- { 58, 0xcccc, 0x6666, 0x3333, 0, 0 },
- { 59, 0xcccc, 0x6666, 0x0000, 0, 0 },
- { 60, 0xcccc, 0x3333, 0xffff, 0, 0 },
- { 61, 0xcccc, 0x3333, 0xcccc, 0, 0 },
- { 62, 0xcccc, 0x3333, 0x9999, 0, 0 },
- { 63, 0xcccc, 0x3333, 0x6666, 0, 0 },
- { 64, 0xcccc, 0x3333, 0x3333, 0, 0 },
- { 65, 0xcccc, 0x3333, 0x0000, 0, 0 },
- { 66, 0xcccc, 0x0000, 0xffff, 0, 0 },
- { 67, 0xcccc, 0x0000, 0xcccc, 0, 0 },
- { 68, 0xcccc, 0x0000, 0x9999, 0, 0 },
- { 69, 0xcccc, 0x0000, 0x6666, 0, 0 },
- { 70, 0xcccc, 0x0000, 0x3333, 0, 0 },
- { 71, 0xcccc, 0x0000, 0x0000, 0, 0 },
- { 72, 0x9999, 0xffff, 0xffff, 0, 0 },
- { 73, 0x9999, 0xffff, 0xcccc, 0, 0 },
- { 74, 0x9999, 0xffff, 0x9999, 0, 0 },
- { 75, 0x9999, 0xffff, 0x6666, 0, 0 },
- { 76, 0x9999, 0xffff, 0x3333, 0, 0 },
- { 77, 0x9999, 0xffff, 0x0000, 0, 0 },
- { 78, 0x9999, 0xcccc, 0xffff, 0, 0 },
- { 79, 0x9999, 0xcccc, 0xcccc, 0, 0 },
- { 80, 0x9999, 0xcccc, 0x9999, 0, 0 },
- { 81, 0x9999, 0xcccc, 0x6666, 0, 0 },
- { 82, 0x9999, 0xcccc, 0x3333, 0, 0 },
- { 83, 0x9999, 0xcccc, 0x0000, 0, 0 },
- { 84, 0x9999, 0x9999, 0xffff, 0, 0 },
- { 85, 0x9999, 0x9999, 0xcccc, 0, 0 },
- { 86, 0x9999, 0x9999, 0x9999, 0, 0 },
- { 87, 0x9999, 0x9999, 0x6666, 0, 0 },
- { 88, 0x9999, 0x9999, 0x3333, 0, 0 },
- { 89, 0x9999, 0x9999, 0x0000, 0, 0 },
- { 90, 0x9999, 0x6666, 0xffff, 0, 0 },
- { 91, 0x9999, 0x6666, 0xcccc, 0, 0 },
- { 92, 0x9999, 0x6666, 0x9999, 0, 0 },
- { 93, 0x9999, 0x6666, 0x6666, 0, 0 },
- { 94, 0x9999, 0x6666, 0x3333, 0, 0 },
- { 95, 0x9999, 0x6666, 0x0000, 0, 0 },
- { 96, 0x9999, 0x3333, 0xffff, 0, 0 },
- { 97, 0x9999, 0x3333, 0xcccc, 0, 0 },
- { 98, 0x9999, 0x3333, 0x9999, 0, 0 },
- { 99, 0x9999, 0x3333, 0x6666, 0, 0 },
- { 100, 0x9999, 0x3333, 0x3333, 0, 0 },
- { 101, 0x9999, 0x3333, 0x0000, 0, 0 },
- { 102, 0x9999, 0x0000, 0xffff, 0, 0 },
- { 103, 0x9999, 0x0000, 0xcccc, 0, 0 },
- { 104, 0x9999, 0x0000, 0x9999, 0, 0 },
- { 105, 0x9999, 0x0000, 0x6666, 0, 0 },
- { 106, 0x9999, 0x0000, 0x3333, 0, 0 },
- { 107, 0x9999, 0x0000, 0x0000, 0, 0 },
- { 108, 0x6666, 0xffff, 0xffff, 0, 0 },
- { 109, 0x6666, 0xffff, 0xcccc, 0, 0 },
- { 110, 0x6666, 0xffff, 0x9999, 0, 0 },
- { 111, 0x6666, 0xffff, 0x6666, 0, 0 },
- { 112, 0x6666, 0xffff, 0x3333, 0, 0 },
- { 113, 0x6666, 0xffff, 0x0000, 0, 0 },
- { 114, 0x6666, 0xcccc, 0xffff, 0, 0 },
- { 115, 0x6666, 0xcccc, 0xcccc, 0, 0 },
- { 116, 0x6666, 0xcccc, 0x9999, 0, 0 },
- { 117, 0x6666, 0xcccc, 0x6666, 0, 0 },
- { 118, 0x6666, 0xcccc, 0x3333, 0, 0 },
- { 119, 0x6666, 0xcccc, 0x0000, 0, 0 },
- { 120, 0x6666, 0x9999, 0xffff, 0, 0 },
- { 121, 0x6666, 0x9999, 0xcccc, 0, 0 },
- { 122, 0x6666, 0x9999, 0x9999, 0, 0 },
- { 123, 0x6666, 0x9999, 0x6666, 0, 0 },
- { 124, 0x6666, 0x9999, 0x3333, 0, 0 },
- { 125, 0x6666, 0x9999, 0x0000, 0, 0 },
- { 126, 0x6666, 0x6666, 0xffff, 0, 0 },
- { 127, 0x6666, 0x6666, 0xcccc, 0, 0 },
- { 128, 0x6666, 0x6666, 0x9999, 0, 0 },
- { 129, 0x6666, 0x6666, 0x6666, 0, 0 },
- { 130, 0x6666, 0x6666, 0x3333, 0, 0 },
- { 131, 0x6666, 0x6666, 0x0000, 0, 0 },
- { 132, 0x6666, 0x3333, 0xffff, 0, 0 },
- { 133, 0x6666, 0x3333, 0xcccc, 0, 0 },
- { 134, 0x6666, 0x3333, 0x9999, 0, 0 },
- { 135, 0x6666, 0x3333, 0x6666, 0, 0 },
- { 136, 0x6666, 0x3333, 0x3333, 0, 0 },
- { 137, 0x6666, 0x3333, 0x0000, 0, 0 },
- { 138, 0x6666, 0x0000, 0xffff, 0, 0 },
- { 139, 0x6666, 0x0000, 0xcccc, 0, 0 },
- { 140, 0x6666, 0x0000, 0x9999, 0, 0 },
- { 141, 0x6666, 0x0000, 0x6666, 0, 0 },
- { 142, 0x6666, 0x0000, 0x3333, 0, 0 },
- { 143, 0x6666, 0x0000, 0x0000, 0, 0 },
- { 144, 0x3333, 0xffff, 0xffff, 0, 0 },
- { 145, 0x3333, 0xffff, 0xcccc, 0, 0 },
- { 146, 0x3333, 0xffff, 0x9999, 0, 0 },
- { 147, 0x3333, 0xffff, 0x6666, 0, 0 },
- { 148, 0x3333, 0xffff, 0x3333, 0, 0 },
- { 149, 0x3333, 0xffff, 0x0000, 0, 0 },
- { 150, 0x3333, 0xcccc, 0xffff, 0, 0 },
- { 151, 0x3333, 0xcccc, 0xcccc, 0, 0 },
- { 152, 0x3333, 0xcccc, 0x9999, 0, 0 },
- { 153, 0x3333, 0xcccc, 0x6666, 0, 0 },
- { 154, 0x3333, 0xcccc, 0x3333, 0, 0 },
- { 155, 0x3333, 0xcccc, 0x0000, 0, 0 },
- { 156, 0x3333, 0x9999, 0xffff, 0, 0 },
- { 157, 0x3333, 0x9999, 0xcccc, 0, 0 },
- { 158, 0x3333, 0x9999, 0x9999, 0, 0 },
- { 159, 0x3333, 0x9999, 0x6666, 0, 0 },
- { 160, 0x3333, 0x9999, 0x3333, 0, 0 },
- { 161, 0x3333, 0x9999, 0x0000, 0, 0 },
- { 162, 0x3333, 0x6666, 0xffff, 0, 0 },
- { 163, 0x3333, 0x6666, 0xcccc, 0, 0 },
- { 164, 0x3333, 0x6666, 0x9999, 0, 0 },
- { 165, 0x3333, 0x6666, 0x6666, 0, 0 },
- { 166, 0x3333, 0x6666, 0x3333, 0, 0 },
- { 167, 0x3333, 0x6666, 0x0000, 0, 0 },
- { 168, 0x3333, 0x3333, 0xffff, 0, 0 },
- { 169, 0x3333, 0x3333, 0xcccc, 0, 0 },
- { 170, 0x3333, 0x3333, 0x9999, 0, 0 },
- { 171, 0x3333, 0x3333, 0x6666, 0, 0 },
- { 172, 0x3333, 0x3333, 0x3333, 0, 0 },
- { 173, 0x3333, 0x3333, 0x0000, 0, 0 },
- { 174, 0x3333, 0x0000, 0xffff, 0, 0 },
- { 175, 0x3333, 0x0000, 0xcccc, 0, 0 },
- { 176, 0x3333, 0x0000, 0x9999, 0, 0 },
- { 177, 0x3333, 0x0000, 0x6666, 0, 0 },
- { 178, 0x3333, 0x0000, 0x3333, 0, 0 },
- { 179, 0x3333, 0x0000, 0x0000, 0, 0 },
- { 180, 0x0000, 0xffff, 0xffff, 0, 0 },
- { 181, 0x0000, 0xffff, 0xcccc, 0, 0 },
- { 182, 0x0000, 0xffff, 0x9999, 0, 0 },
- { 183, 0x0000, 0xffff, 0x6666, 0, 0 },
- { 184, 0x0000, 0xffff, 0x3333, 0, 0 },
- { 185, 0x0000, 0xffff, 0x0000, 0, 0 },
- { 186, 0x0000, 0xcccc, 0xffff, 0, 0 },
- { 187, 0x0000, 0xcccc, 0xcccc, 0, 0 },
- { 188, 0x0000, 0xcccc, 0x9999, 0, 0 },
- { 189, 0x0000, 0xcccc, 0x6666, 0, 0 },
- { 190, 0x0000, 0xcccc, 0x3333, 0, 0 },
- { 191, 0x0000, 0xcccc, 0x0000, 0, 0 },
- { 192, 0x0000, 0x9999, 0xffff, 0, 0 },
- { 193, 0x0000, 0x9999, 0xcccc, 0, 0 },
- { 194, 0x0000, 0x9999, 0x9999, 0, 0 },
- { 195, 0x0000, 0x9999, 0x6666, 0, 0 },
- { 196, 0x0000, 0x9999, 0x3333, 0, 0 },
- { 197, 0x0000, 0x9999, 0x0000, 0, 0 },
- { 198, 0x0000, 0x6666, 0xffff, 0, 0 },
- { 199, 0x0000, 0x6666, 0xcccc, 0, 0 },
- { 200, 0x0000, 0x6666, 0x9999, 0, 0 },
- { 201, 0x0000, 0x6666, 0x6666, 0, 0 },
- { 202, 0x0000, 0x6666, 0x3333, 0, 0 },
- { 203, 0x0000, 0x6666, 0x0000, 0, 0 },
- { 204, 0x0000, 0x3333, 0xffff, 0, 0 },
- { 205, 0x0000, 0x3333, 0xcccc, 0, 0 },
- { 206, 0x0000, 0x3333, 0x9999, 0, 0 },
- { 207, 0x0000, 0x3333, 0x6666, 0, 0 },
- { 208, 0x0000, 0x3333, 0x3333, 0, 0 },
- { 209, 0x0000, 0x3333, 0x0000, 0, 0 },
- { 210, 0x0000, 0x0000, 0xffff, 0, 0 },
- { 211, 0x0000, 0x0000, 0xcccc, 0, 0 },
- { 212, 0x0000, 0x0000, 0x9999, 0, 0 },
- { 213, 0x0000, 0x0000, 0x6666, 0, 0 },
- { 214, 0x0000, 0x0000, 0x3333, 0, 0 },
- { 215, 0xeeee, 0x0000, 0x0000, 0, 0 },
- { 216, 0xdddd, 0x0000, 0x0000, 0, 0 },
- { 217, 0xbbbb, 0x0000, 0x0000, 0, 0 },
- { 218, 0xaaaa, 0x0000, 0x0000, 0, 0 },
- { 219, 0x8888, 0x0000, 0x0000, 0, 0 },
- { 220, 0x7777, 0x0000, 0x0000, 0, 0 },
- { 221, 0x5555, 0x0000, 0x0000, 0, 0 },
- { 222, 0x4444, 0x0000, 0x0000, 0, 0 },
- { 223, 0x2222, 0x0000, 0x0000, 0, 0 },
- { 224, 0x1111, 0x0000, 0x0000, 0, 0 },
- { 225, 0x0000, 0xeeee, 0x0000, 0, 0 },
- { 226, 0x0000, 0xdddd, 0x0000, 0, 0 },
- { 227, 0x0000, 0xbbbb, 0x0000, 0, 0 },
- { 228, 0x0000, 0xaaaa, 0x0000, 0, 0 },
- { 229, 0x0000, 0x8888, 0x0000, 0, 0 },
- { 230, 0x0000, 0x7777, 0x0000, 0, 0 },
- { 231, 0x0000, 0x5555, 0x0000, 0, 0 },
- { 232, 0x0000, 0x4444, 0x0000, 0, 0 },
- { 233, 0x0000, 0x2222, 0x0000, 0, 0 },
- { 234, 0x0000, 0x1111, 0x0000, 0, 0 },
- { 235, 0x0000, 0x0000, 0xeeee, 0, 0 },
- { 236, 0x0000, 0x0000, 0xdddd, 0, 0 },
- { 237, 0x0000, 0x0000, 0xbbbb, 0, 0 },
- { 238, 0x0000, 0x0000, 0xaaaa, 0, 0 },
- { 239, 0x0000, 0x0000, 0x8888, 0, 0 },
- { 240, 0x0000, 0x0000, 0x7777, 0, 0 },
- { 241, 0x0000, 0x0000, 0x5555, 0, 0 },
- { 242, 0x0000, 0x0000, 0x4444, 0, 0 },
- { 243, 0x0000, 0x0000, 0x2222, 0, 0 },
- { 244, 0x0000, 0x0000, 0x1111, 0, 0 },
- { 245, 0xeeee, 0xeeee, 0xeeee, 0, 0 },
- { 246, 0xdddd, 0xdddd, 0xdddd, 0, 0 },
- { 247, 0xbbbb, 0xbbbb, 0xbbbb, 0, 0 },
- { 248, 0xaaaa, 0xaaaa, 0xaaaa, 0, 0 },
- { 249, 0x8888, 0x8888, 0x8888, 0, 0 },
- { 250, 0x7777, 0x7777, 0x7777, 0, 0 },
- { 251, 0x5555, 0x5555, 0x5555, 0, 0 },
- { 252, 0x4444, 0x4444, 0x4444, 0, 0 },
- { 253, 0x2222, 0x2222, 0x2222, 0, 0 },
- { 254, 0x1111, 0x1111, 0x1111, 0, 0 },
- { 255, 0xffff, 0xffff, 0xffff, 0, 0 }
-};
-#endif /* USE_NEW_CLUT */
-
-#endif /* _DARWIN_CLUT8_ */
diff --git a/nx-X11/programs/Xserver/hw/darwin/darwinEvents.c b/nx-X11/programs/Xserver/hw/darwin/darwinEvents.c
deleted file mode 100644
index 61100d9b3..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/darwinEvents.c
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Darwin event queue and event handling
- */
-/*
-Copyright (c) 2002-2004 Torrey T. Lyons. All Rights Reserved.
-Copyright 2004 Kaleb S. KEITHLEY. All Rights Reserved.
-
-This file is based on mieq.c by Keith Packard,
-which contains the following copyright:
-Copyright 1990, 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.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/darwinEvents.c,v 1.6 2004/03/31 22:29:09 torrey Exp $ */
-
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "inputstr.h"
-#include "mi.h"
-#include "scrnintstr.h"
-#include "mipointer.h"
-
-#include "darwin.h"
-#include "darwinKeyboard.h"
-
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <unistd.h>
-#include <IOKit/hidsystem/IOLLEvent.h>
-
-/* Fake button press/release for scroll wheel move. */
-#define SCROLLWHEELUPFAKE 4
-#define SCROLLWHEELDOWNFAKE 5
-
-#define QUEUE_SIZE 256
-
-typedef struct _Event {
- xEvent event;
- ScreenPtr pScreen;
-} EventRec, *EventPtr;
-
-typedef struct _EventQueue {
- HWEventQueueType head, tail; /* long for SetInputCheck */
- CARD32 lastEventTime; /* to avoid time running backwards */
- Bool lastMotion;
- EventRec events[QUEUE_SIZE]; /* static allocation for signals */
- DevicePtr pKbd, pPtr; /* device pointer, to get funcs */
- ScreenPtr pEnqueueScreen; /* screen events are being delivered to */
- ScreenPtr pDequeueScreen; /* screen events are being dispatched to */
-} EventQueueRec, *EventQueuePtr;
-
-static EventQueueRec darwinEventQueue;
-
-
-/*
- * DarwinPressModifierMask
- * Press or release the given modifier key, specified by its mask.
- */
-static void DarwinPressModifierMask(
- xEvent *xe, // must already have type, time and mouse location
- int mask) // one of NX_*MASK constants
-{
- int key = DarwinModifierNXMaskToNXKey(mask);
-
- if (key != -1) {
- int keycode = DarwinModifierNXKeyToNXKeycode(key, 0);
- if (keycode != 0) {
- xe->u.u.detail = keycode + MIN_KEYCODE;
- (*darwinEventQueue.pKbd->processInputProc)(xe,
- (DeviceIntPtr)darwinEventQueue.pKbd, 1);
- }
- }
-}
-
-#ifdef NX_DEVICELCTLKEYMASK
-#define CONTROL_MASK(flags) (flags & (NX_DEVICELCTLKEYMASK|NX_DEVICERCTLKEYMASK))
-#else
-#define CONTROL_MASK(flags) (NX_CONTROLMASK)
-#endif /* NX_DEVICELCTLKEYMASK */
-
-#ifdef NX_DEVICELSHIFTKEYMASK
-#define SHIFT_MASK(flags) (flags & (NX_DEVICELSHIFTKEYMASK|NX_DEVICERSHIFTKEYMASK))
-#else
-#define SHIFT_MASK(flags) (NX_SHIFTMASK)
-#endif /* NX_DEVICELSHIFTKEYMASK */
-
-#ifdef NX_DEVICELCMDKEYMASK
-#define COMMAND_MASK(flags) (flags & (NX_DEVICELCMDKEYMASK|NX_DEVICERCMDKEYMASK))
-#else
-#define COMMAND_MASK(flags) (NX_COMMANDMASK)
-#endif /* NX_DEVICELCMDKEYMASK */
-
-#ifdef NX_DEVICELALTKEYMASK
-#define ALTERNATE_MASK(flags) (flags & (NX_DEVICELALTKEYMASK|NX_DEVICERALTKEYMASK))
-#else
-#define ALTERNATE_MASK(flags) (NX_ALTERNATEMASK)
-#endif /* NX_DEVICELALTKEYMASK */
-
-/*
- * DarwinUpdateModifiers
- * Send events to update the modifier state.
- */
-static void DarwinUpdateModifiers(
- xEvent *xe, // event template with time and mouse position set
- int pressed, // KeyPress or KeyRelease
- int flags ) // modifier flags that have changed
-{
- xe->u.u.type = pressed;
- if (flags & NX_ALPHASHIFTMASK) {
- DarwinPressModifierMask(xe, NX_ALPHASHIFTMASK);
- }
- if (flags & NX_COMMANDMASK) {
- DarwinPressModifierMask(xe, COMMAND_MASK(flags));
- }
- if (flags & NX_CONTROLMASK) {
- DarwinPressModifierMask(xe, CONTROL_MASK(flags));
- }
- if (flags & NX_ALTERNATEMASK) {
- DarwinPressModifierMask(xe, ALTERNATE_MASK(flags));
- }
- if (flags & NX_SHIFTMASK) {
- DarwinPressModifierMask(xe, SHIFT_MASK(flags));
- }
- if (flags & NX_SECONDARYFNMASK) {
- DarwinPressModifierMask(xe, NX_SECONDARYFNMASK);
- }
-}
-
-
-/*
- * DarwinSimulateMouseClick
- * Send a mouse click to X when multiple mouse buttons are simulated
- * with modifier-clicks, such as command-click for button 2. The dix
- * layer is told that the previously pressed modifier key(s) are
- * released, the simulated click event is sent. After the mouse button
- * is released, the modifier keys are reverted to their actual state,
- * which may or may not be pressed at that point. This is usually
- * closest to what the user wants. Ie. the user typically wants to
- * simulate a button 2 press instead of Command-button 2.
- */
-static void DarwinSimulateMouseClick(
- xEvent *xe, // event template with time and
- // mouse position filled in
- int whichButton, // mouse button to be pressed
- int modifierMask) // modifiers used for the fake click
-{
- // first fool X into forgetting about the keys
- DarwinUpdateModifiers(xe, KeyRelease, modifierMask);
-
- // push the mouse button
- xe->u.u.type = ButtonPress;
- xe->u.u.detail = whichButton;
- (*darwinEventQueue.pPtr->processInputProc)
- (xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1);
-}
-
-
-Bool
-DarwinEQInit(
- DevicePtr pKbd,
- DevicePtr pPtr)
-{
- darwinEventQueue.head = darwinEventQueue.tail = 0;
- darwinEventQueue.lastEventTime = GetTimeInMillis ();
- darwinEventQueue.pKbd = pKbd;
- darwinEventQueue.pPtr = pPtr;
- darwinEventQueue.pEnqueueScreen = screenInfo.screens[0];
- darwinEventQueue.pDequeueScreen = darwinEventQueue.pEnqueueScreen;
- SetInputCheck (&darwinEventQueue.head, &darwinEventQueue.tail);
- return TRUE;
-}
-
-
-/*
- * DarwinEQEnqueue
- * Must be thread safe with ProcessInputEvents.
- * DarwinEQEnqueue - called from event gathering thread
- * ProcessInputEvents - called from X server thread
- * DarwinEQEnqueue should never be called from more than one thread.
- */
-void
-DarwinEQEnqueue(
- const xEvent *e)
-{
- HWEventQueueType oldtail, newtail;
- char byte = 0;
-
- oldtail = darwinEventQueue.tail;
-
- // mieqEnqueue() collapses successive motion events into one event.
- // This is difficult to do in a thread-safe way and rarely useful.
-
- newtail = oldtail + 1;
- if (newtail == QUEUE_SIZE)
- newtail = 0;
- /* Toss events which come in late */
- if (newtail == darwinEventQueue.head)
- return;
-
- darwinEventQueue.events[oldtail].event = *e;
- /*
- * Make sure that event times don't go backwards - this
- * is "unnecessary", but very useful
- */
- if (e->u.keyButtonPointer.time < darwinEventQueue.lastEventTime &&
- darwinEventQueue.lastEventTime - e->u.keyButtonPointer.time < 10000)
- {
- darwinEventQueue.events[oldtail].event.u.keyButtonPointer.time =
- darwinEventQueue.lastEventTime;
- }
- darwinEventQueue.events[oldtail].pScreen = darwinEventQueue.pEnqueueScreen;
-
- // Update the tail after the event is prepared
- darwinEventQueue.tail = newtail;
-
- // Signal there is an event ready to handle
- write(darwinEventWriteFD, &byte, 1);
-}
-
-
-/*
- * DarwinEQPointerPost
- * Post a pointer event. Used by the mipointer.c routines.
- */
-void
-DarwinEQPointerPost(
- xEvent *e)
-{
- (*darwinEventQueue.pPtr->processInputProc)
- (e, (DeviceIntPtr)darwinEventQueue.pPtr, 1);
-}
-
-
-void
-DarwinEQSwitchScreen(
- ScreenPtr pScreen,
- Bool fromDIX)
-{
- darwinEventQueue.pEnqueueScreen = pScreen;
- if (fromDIX)
- darwinEventQueue.pDequeueScreen = pScreen;
-}
-
-
-/*
- * ProcessInputEvents
- * Read and process events from the event queue until it is empty.
- */
-void ProcessInputEvents(void)
-{
- EventRec *e;
- int x, y;
- xEvent xe;
- static int old_flags = 0; // last known modifier state
- // button number and modifier mask of currently pressed fake button
- static int darwinFakeMouseButtonDown = 0;
- static int darwinFakeMouseButtonMask = 0;
-
- // Empty the signaling pipe
- x = sizeof(xe);
- while (x == sizeof(xe)) {
- x = read(darwinEventReadFD, &xe, sizeof(xe));
- }
-
- while (darwinEventQueue.head != darwinEventQueue.tail)
- {
- if (screenIsSaved == SCREEN_SAVER_ON)
- SaveScreens (SCREEN_SAVER_OFF, ScreenSaverReset);
-
- e = &darwinEventQueue.events[darwinEventQueue.head];
- xe = e->event;
-
- // Shift from global screen coordinates to coordinates relative to
- // the origin of the current screen.
- xe.u.keyButtonPointer.rootX -= darwinMainScreenX +
- dixScreenOrigins[miPointerCurrentScreen()->myNum].x;
- xe.u.keyButtonPointer.rootY -= darwinMainScreenY +
- dixScreenOrigins[miPointerCurrentScreen()->myNum].y;
-
- /*
- * Assumption - screen switching can only occur on motion events
- */
- if (e->pScreen != darwinEventQueue.pDequeueScreen)
- {
- darwinEventQueue.pDequeueScreen = e->pScreen;
- x = xe.u.keyButtonPointer.rootX;
- y = xe.u.keyButtonPointer.rootY;
- if (darwinEventQueue.head == QUEUE_SIZE - 1)
- darwinEventQueue.head = 0;
- else
- ++darwinEventQueue.head;
- NewCurrentScreen (darwinEventQueue.pDequeueScreen, x, y);
- }
- else
- {
- if (darwinEventQueue.head == QUEUE_SIZE - 1)
- darwinEventQueue.head = 0;
- else
- ++darwinEventQueue.head;
- switch (xe.u.u.type)
- {
- case KeyPress:
- if (old_flags == 0
- && darwinSyncKeymap && darwinKeymapFile == NULL)
- {
- /* See if keymap has changed. */
-
- static unsigned int last_seed;
- unsigned int this_seed;
-
- this_seed = DarwinModeSystemKeymapSeed();
- if (this_seed != last_seed)
- {
- last_seed = this_seed;
- DarwinKeyboardReload(darwinKeyboard);
- }
- }
- /* fall through */
-
- case KeyRelease:
- xe.u.u.detail += MIN_KEYCODE;
- (*darwinEventQueue.pKbd->processInputProc)
- (&xe, (DeviceIntPtr)darwinEventQueue.pKbd, 1);
- break;
-
- case ButtonPress:
- miPointerAbsoluteCursor(xe.u.keyButtonPointer.rootX,
- xe.u.keyButtonPointer.rootY,
- xe.u.keyButtonPointer.time);
- if (darwinFakeButtons && xe.u.u.detail == 1) {
- // Mimic multi-button mouse with modifier-clicks
- // If both sets of modifiers are pressed,
- // button 2 is clicked.
- if ((old_flags & darwinFakeMouse2Mask) ==
- darwinFakeMouse2Mask)
- {
- DarwinSimulateMouseClick(&xe, 2, darwinFakeMouse2Mask);
- darwinFakeMouseButtonDown = 2;
- darwinFakeMouseButtonMask = darwinFakeMouse2Mask;
- break;
- }
- else if ((old_flags & darwinFakeMouse3Mask) ==
- darwinFakeMouse3Mask)
- {
- DarwinSimulateMouseClick(&xe, 3, darwinFakeMouse3Mask);
- darwinFakeMouseButtonDown = 3;
- darwinFakeMouseButtonMask = darwinFakeMouse3Mask;
- break;
- }
- }
- (*darwinEventQueue.pPtr->processInputProc)
- (&xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1);
- break;
-
- case ButtonRelease:
- miPointerAbsoluteCursor(xe.u.keyButtonPointer.rootX,
- xe.u.keyButtonPointer.rootY,
- xe.u.keyButtonPointer.time);
- if (darwinFakeButtons && xe.u.u.detail == 1 &&
- darwinFakeMouseButtonDown)
- {
- // If last mousedown was a fake click, don't check for
- // mouse modifiers here. The user may have released the
- // modifiers before the mouse button.
- xe.u.u.detail = darwinFakeMouseButtonDown;
- darwinFakeMouseButtonDown = 0;
- (*darwinEventQueue.pPtr->processInputProc)
- (&xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1);
-
- // Bring modifiers back up to date
- DarwinUpdateModifiers(&xe, KeyPress,
- darwinFakeMouseButtonMask & old_flags);
- darwinFakeMouseButtonMask = 0;
- } else {
- (*darwinEventQueue.pPtr->processInputProc)
- (&xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1);
- }
- break;
-
- case MotionNotify:
- miPointerAbsoluteCursor(xe.u.keyButtonPointer.rootX,
- xe.u.keyButtonPointer.rootY,
- xe.u.keyButtonPointer.time);
- break;
-
- case kXDarwinUpdateModifiers:
- {
- // Update modifier state.
- // Any amount of modifiers may have changed.
- int flags = xe.u.clientMessage.u.l.longs0;
- DarwinUpdateModifiers(&xe, KeyRelease,
- old_flags & ~flags);
- DarwinUpdateModifiers(&xe, KeyPress,
- ~old_flags & flags);
- old_flags = flags;
- break;
- }
-
- case kXDarwinUpdateButtons:
- {
- long hwDelta = xe.u.clientMessage.u.l.longs0;
- long hwButtons = xe.u.clientMessage.u.l.longs1;
- int i;
-
- for (i = 1; i < 5; i++) {
- if (hwDelta & (1 << i)) {
- // IOKit and X have different numbering for the
- // middle and right mouse buttons.
- if (i == 1) {
- xe.u.u.detail = 3;
- } else if (i == 2) {
- xe.u.u.detail = 2;
- } else {
- xe.u.u.detail = i + 1;
- }
- if (hwButtons & (1 << i)) {
- xe.u.u.type = ButtonPress;
- } else {
- xe.u.u.type = ButtonRelease;
- }
- (*darwinEventQueue.pPtr->processInputProc)
- (&xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1);
- }
- }
- break;
- }
-
- case kXDarwinScrollWheel:
- {
- short count = xe.u.clientMessage.u.s.shorts0;
-
- if (count > 0) {
- xe.u.u.detail = SCROLLWHEELUPFAKE;
- } else {
- xe.u.u.detail = SCROLLWHEELDOWNFAKE;
- count = -count;
- }
-
- for (; count; --count) {
- xe.u.u.type = ButtonPress;
- (*darwinEventQueue.pPtr->processInputProc)
- (&xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1);
- xe.u.u.type = ButtonRelease;
- (*darwinEventQueue.pPtr->processInputProc)
- (&xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1);
- }
- break;
- }
-
- default:
- // Check for mode specific event
- DarwinModeProcessEvent(&xe);
- }
- }
- }
-
- miPointerUpdate();
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/darwinKeyboard.c b/nx-X11/programs/Xserver/hw/darwin/darwinKeyboard.c
deleted file mode 100644
index dbc449dc3..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/darwinKeyboard.c
+++ /dev/null
@@ -1,1027 +0,0 @@
-//=============================================================================
-//
-// Keyboard support for the Darwin X Server
-//
-// Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved.
-// Copyright (c) 2003 Apple Computer, Inc. All Rights Reserved.
-// Copyright 2004 Kaleb S. KEITHLEY. All Rights Reserved.
-//
-// The code to parse the Darwin keymap is derived from dumpkeymap.c
-// by Eric Sunshine, which includes the following copyright:
-//
-// Copyright (C) 1999,2000 by Eric Sunshine <sunshine@sunshineco.com>
-// All rights reserved.
-//
-//-----------------------------------------------------------------------------
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-// 3. The name of the author may not be used to endorse or promote products
-// derived from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-// NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-//=============================================================================
-
-/* $XFree86: xc/programs/Xserver/hw/darwin/darwinKeyboard.c,v 1.21 2004/04/01 00:05:22 torrey Exp $ */
-
-/*
-===========================================================================
-
- An X keyCode must be in the range XkbMinLegalKeyCode (8) to
- XkbMaxLegalKeyCode(255).
-
- The keyCodes we get from the kernel range from 0 to 127, so we need to
- offset the range before passing the keyCode to X.
-
- An X KeySym is an extended ascii code that is device independent.
-
- The modifier map is accessed by the keyCode, but the normal map is
- accessed by keyCode - MIN_KEYCODE. Sigh.
-
-===========================================================================
-*/
-
-// Define this to get a diagnostic output to stderr which is helpful
-// in determining how the X server is interpreting the Darwin keymap.
-#undef DUMP_DARWIN_KEYMAP
-
-/* Define this to use Alt for Mode_switch. */
-#define ALT_IS_MODE_SWITCH 1
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <IOKit/hidsystem/event_status_driver.h>
-#include <IOKit/hidsystem/ev_keymap.h>
-#include <architecture/byte_order.h> // For the NXSwap*
-#include "darwin.h"
-#include "darwinKeyboard.h"
-
-#define AltMask Mod1Mask
-#define MetaMask Mod2Mask
-#define FunctionMask Mod3Mask
-
-// FIXME: It would be nice to support some of the extra keys in XF86keysym.h,
-// at least the volume controls that now ship on every Apple keyboard.
-
-#define UK(a) NoSymbol // unknown symbol
-
-static KeySym const next_to_x[256] = {
- NoSymbol, NoSymbol, NoSymbol, XK_KP_Enter,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
- NoSymbol, XK_Return, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_Escape,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
- XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
- XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
- XK_comma, XK_minus, XK_period, XK_slash,
- XK_0, XK_1, XK_2, XK_3,
- XK_4, XK_5, XK_6, XK_7,
- XK_8, XK_9, XK_colon, XK_semicolon,
- XK_less, XK_equal, XK_greater, XK_question,
- XK_at, XK_A, XK_B, XK_C,
- XK_D, XK_E, XK_F, XK_G,
- XK_H, XK_I, XK_J, XK_K,
- XK_L, XK_M, XK_N, XK_O,
- XK_P, XK_Q, XK_R, XK_S,
- XK_T, XK_U, XK_V, XK_W,
- XK_X, XK_Y, XK_Z, XK_bracketleft,
- XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
- XK_grave, XK_a, XK_b, XK_c,
- XK_d, XK_e, XK_f, XK_g,
- XK_h, XK_i, XK_j, XK_k,
- XK_l, XK_m, XK_n, XK_o,
- XK_p, XK_q, XK_r, XK_s,
- XK_t, XK_u, XK_v, XK_w,
- XK_x, XK_y, XK_z, XK_braceleft,
- XK_bar, XK_braceright, XK_asciitilde, XK_BackSpace,
-// 128
- NoSymbol, XK_Agrave, XK_Aacute, XK_Acircumflex,
- XK_Atilde, XK_Adiaeresis, XK_Aring, XK_Ccedilla,
- XK_Egrave, XK_Eacute, XK_Ecircumflex, XK_Ediaeresis,
- XK_Igrave, XK_Iacute, XK_Icircumflex, XK_Idiaeresis,
-// 144
- XK_ETH, XK_Ntilde, XK_Ograve, XK_Oacute,
- XK_Ocircumflex, XK_Otilde, XK_Odiaeresis, XK_Ugrave,
- XK_Uacute, XK_Ucircumflex, XK_Udiaeresis, XK_Yacute,
- XK_THORN, XK_mu, XK_multiply, XK_division,
-// 160
- XK_copyright, XK_exclamdown, XK_cent, XK_sterling,
- UK(fraction), XK_yen, UK(fhook), XK_section,
- XK_currency, XK_rightsinglequotemark,
- XK_leftdoublequotemark,
- XK_guillemotleft,
- XK_leftanglebracket,
- XK_rightanglebracket,
- UK(filigature), UK(flligature),
-// 176
- XK_registered, XK_endash, XK_dagger, XK_doubledagger,
- XK_periodcentered,XK_brokenbar, XK_paragraph, UK(bullet),
- XK_singlelowquotemark,
- XK_doublelowquotemark,
- XK_rightdoublequotemark,
- XK_guillemotright,
- XK_ellipsis, UK(permille), XK_notsign, XK_questiondown,
-// 192
- XK_onesuperior, XK_dead_grave, XK_dead_acute, XK_dead_circumflex,
- XK_dead_tilde, XK_dead_macron, XK_dead_breve, XK_dead_abovedot,
- XK_dead_diaeresis,
- XK_twosuperior, XK_dead_abovering,
- XK_dead_cedilla,
- XK_threesuperior,
- XK_dead_doubleacute,
- XK_dead_ogonek, XK_dead_caron,
-// 208
- XK_emdash, XK_plusminus, XK_onequarter, XK_onehalf,
- XK_threequarters,
- XK_agrave, XK_aacute, XK_acircumflex,
- XK_atilde, XK_adiaeresis, XK_aring, XK_ccedilla,
- XK_egrave, XK_eacute, XK_ecircumflex, XK_ediaeresis,
-// 224
- XK_igrave, XK_AE, XK_iacute, XK_ordfeminine,
- XK_icircumflex, XK_idiaeresis, XK_eth, XK_ntilde,
- XK_Lstroke, XK_Ooblique, XK_OE, XK_masculine,
- XK_ograve, XK_oacute, XK_ocircumflex, XK_otilde,
-// 240
- XK_odiaeresis, XK_ae, XK_ugrave, XK_uacute,
- XK_ucircumflex, XK_idotless, XK_udiaeresis, XK_ygrave,
- XK_lstroke, XK_ooblique, XK_oe, XK_ssharp,
- XK_thorn, XK_ydiaeresis, NoSymbol, NoSymbol,
- };
-
-#define MIN_SYMBOL 0xAC
-static KeySym const symbol_to_x[] = {
- XK_Left, XK_Up, XK_Right, XK_Down
- };
-int const NUM_SYMBOL = sizeof(symbol_to_x) / sizeof(symbol_to_x[0]);
-
-#define MIN_FUNCKEY 0x20
-static KeySym const funckey_to_x[] = {
- XK_F1, XK_F2, XK_F3, XK_F4,
- XK_F5, XK_F6, XK_F7, XK_F8,
- XK_F9, XK_F10, XK_F11, XK_F12,
- XK_Insert, XK_Delete, XK_Home, XK_End,
- XK_Page_Up, XK_Page_Down, XK_F13, XK_F14,
- XK_F15
- };
-int const NUM_FUNCKEY = sizeof(funckey_to_x) / sizeof(funckey_to_x[0]);
-
-typedef struct {
- KeySym normalSym;
- KeySym keypadSym;
-} darwinKeyPad_t;
-
-static darwinKeyPad_t const normal_to_keypad[] = {
- { XK_0, XK_KP_0 },
- { XK_1, XK_KP_1 },
- { XK_2, XK_KP_2 },
- { XK_3, XK_KP_3 },
- { XK_4, XK_KP_4 },
- { XK_5, XK_KP_5 },
- { XK_6, XK_KP_6 },
- { XK_7, XK_KP_7 },
- { XK_8, XK_KP_8 },
- { XK_9, XK_KP_9 },
- { XK_equal, XK_KP_Equal },
- { XK_asterisk, XK_KP_Multiply },
- { XK_plus, XK_KP_Add },
- { XK_comma, XK_KP_Separator },
- { XK_minus, XK_KP_Subtract },
- { XK_period, XK_KP_Decimal },
- { XK_slash, XK_KP_Divide }
-};
-int const NUM_KEYPAD = sizeof(normal_to_keypad) / sizeof(normal_to_keypad[0]);
-
-static void DarwinChangeKeyboardControl( DeviceIntPtr device, KeybdCtrl *ctrl )
-{
- // keyclick, bell volume / pitch, autorepead, LED's
-}
-
-static darwinKeyboardInfo keyInfo;
-static FILE *fref = NULL;
-static char *inBuffer = NULL;
-
-//-----------------------------------------------------------------------------
-// Data Stream Object
-// Can be configured to treat embedded "numbers" as being composed of
-// either 1, 2, or 4 bytes, apiece.
-//-----------------------------------------------------------------------------
-typedef struct _DataStream
-{
- unsigned char const *data;
- unsigned char const *data_end;
- short number_size; // Size in bytes of a "number" in the stream.
-} DataStream;
-
-static DataStream* new_data_stream( unsigned char const* data, int size )
-{
- DataStream* s = (DataStream*)xalloc( sizeof(DataStream) );
- s->data = data;
- s->data_end = data + size;
- s->number_size = 1; // Default to byte-sized numbers.
- return s;
-}
-
-static void destroy_data_stream( DataStream* s )
-{
- xfree(s);
-}
-
-static unsigned char get_byte( DataStream* s )
-{
- assert(s->data + 1 <= s->data_end);
- return *s->data++;
-}
-
-static short get_word( DataStream* s )
-{
- short hi, lo;
- assert(s->data + 2 <= s->data_end);
- hi = *s->data++;
- lo = *s->data++;
- return ((hi << 8) | lo);
-}
-
-static int get_dword( DataStream* s )
-{
- int b1, b2, b3, b4;
- assert(s->data + 4 <= s->data_end);
- b4 = *s->data++;
- b3 = *s->data++;
- b2 = *s->data++;
- b1 = *s->data++;
- return ((b4 << 24) | (b3 << 16) | (b2 << 8) | b1);
-}
-
-static int get_number( DataStream* s )
-{
- switch (s->number_size) {
- case 4: return get_dword(s);
- case 2: return get_word(s);
- default: return get_byte(s);
- }
-}
-
-//-----------------------------------------------------------------------------
-// Utility functions to help parse Darwin keymap
-//-----------------------------------------------------------------------------
-
-/*
- * bits_set
- * Calculate number of bits set in the modifier mask.
- */
-static short bits_set( short mask )
-{
- short n = 0;
-
- for ( ; mask != 0; mask >>= 1)
- if ((mask & 0x01) != 0)
- n++;
- return n;
-}
-
-/*
- * parse_next_char_code
- * Read the next character code from the Darwin keymapping
- * and write it to the X keymap.
- */
-static void parse_next_char_code(
- DataStream *s,
- KeySym *k )
-{
- const short charSet = get_number(s);
- const short charCode = get_number(s);
-
- if (charSet == 0) { // ascii character
- if (charCode >= 0 && charCode < 256)
- *k = next_to_x[charCode];
- } else if (charSet == 0x01) { // symbol character
- if (charCode >= MIN_SYMBOL &&
- charCode <= MIN_SYMBOL + NUM_SYMBOL)
- *k = symbol_to_x[charCode - MIN_SYMBOL];
- } else if (charSet == 0xFE) { // function key
- if (charCode >= MIN_FUNCKEY &&
- charCode <= MIN_FUNCKEY + NUM_FUNCKEY)
- *k = funckey_to_x[charCode - MIN_FUNCKEY];
- }
-}
-
-
-/*
- * DarwinReadKeymapFile
- * Read the appropriate keymapping from a keymapping file.
- */
-Bool DarwinReadKeymapFile(
- NXKeyMapping *keyMap)
-{
- struct stat st;
- NXEventSystemDevice info[20];
- int interface = 0, handler_id = 0;
- int map_interface, map_handler_id, map_size = 0;
- unsigned int i, size;
- int *bufferEnd;
- union km_tag {
- int *intP;
- char *charP;
- } km;
-
- fref = fopen( darwinKeymapFile, "rb" );
- if (fref == NULL) {
- ErrorF("Unable to open keymapping file '%s' (errno %d).\n",
- darwinKeymapFile, errno);
- return FALSE;
- }
- if (fstat(fileno(fref), &st) == -1) {
- ErrorF("Could not stat keymapping file '%s' (errno %d).\n",
- darwinKeymapFile, errno);
- return FALSE;
- }
-
- // check to make sure we don't crash later
- if (st.st_size <= 16*sizeof(int)) {
- ErrorF("Keymapping file '%s' is invalid (too small).\n",
- darwinKeymapFile);
- return FALSE;
- }
-
- inBuffer = (char*) xalloc( st.st_size );
- bufferEnd = (int *) (inBuffer + st.st_size);
- if (fread(inBuffer, st.st_size, 1, fref) != 1) {
- ErrorF("Could not read %qd bytes from keymapping file '%s' (errno %d).\n",
- st.st_size, darwinKeymapFile, errno);
- return FALSE;
- }
-
- if (strncmp( inBuffer, "KYM1", 4 ) == 0) {
- // Magic number OK.
- } else if (strncmp( inBuffer, "KYMP", 4 ) == 0) {
- ErrorF("Keymapping file '%s' is intended for use with the original NeXT keyboards and cannot be used by XDarwin.\n", darwinKeymapFile);
- return FALSE;
- } else {
- ErrorF("Keymapping file '%s' has a bad magic number and cannot be used by XDarwin.\n", darwinKeymapFile);
- return FALSE;
- }
-
- // find the keyboard interface and handler id
- size = sizeof( info ) / sizeof( int );
- if (!NXEventSystemInfo( darwinParamConnect, NX_EVS_DEVICE_INFO,
- (NXEventSystemInfoType) info, &size )) {
- ErrorF("Error reading event status driver info.\n");
- return FALSE;
- }
-
- size = size * sizeof( int ) / sizeof( info[0] );
- for( i = 0; i < size; i++) {
- if (info[i].dev_type == NX_EVS_DEVICE_TYPE_KEYBOARD) {
- Bool hasInterface = FALSE;
- Bool hasMatch = FALSE;
-
- interface = info[i].interface;
- handler_id = info[i].id;
-
- // Find an appropriate keymapping:
- // The first time we try to match both interface and handler_id.
- // If we can't match both, we take the first match for interface.
-
- do {
- km.charP = inBuffer;
- km.intP++;
- while (km.intP+3 < bufferEnd) {
- map_interface = NXSwapBigIntToHost(*(km.intP++));
- map_handler_id = NXSwapBigIntToHost(*(km.intP++));
- map_size = NXSwapBigIntToHost(*(km.intP++));
- if (map_interface == interface) {
- if (map_handler_id == handler_id || hasInterface) {
- hasMatch = TRUE;
- break;
- } else {
- hasInterface = TRUE;
- }
- }
- km.charP += map_size;
- }
- } while (hasInterface && !hasMatch);
-
- if (hasMatch) {
- // fill in NXKeyMapping structure
- keyMap->size = map_size;
- keyMap->mapping = (char*) xalloc(map_size);
- memcpy(keyMap->mapping, km.charP, map_size);
- return TRUE;
- }
- } // if dev_id == keyboard device
- } // foreach info struct
-
- // The keymapping file didn't match any of the info structs
- // returned by NXEventSystemInfo.
- ErrorF("Keymapping file '%s' did not contain appropriate keyboard interface.\n", darwinKeymapFile);
- return FALSE;
-}
-
-
-/*
- * DarwinParseNXKeyMapping
- */
-Bool DarwinParseNXKeyMapping(
- darwinKeyboardInfo *info)
-{
- KeySym *k;
- int i;
- short numMods, numKeys, numPadKeys = 0;
- Bool haveKeymap = FALSE;
- NXKeyMapping keyMap;
- DataStream *keyMapStream;
- unsigned char const *numPadStart = 0;
-
- if (darwinKeymapFile) {
- haveKeymap = DarwinReadKeymapFile(&keyMap);
- if (fref)
- fclose(fref);
- if (inBuffer)
- xfree(inBuffer);
- if (!haveKeymap) {
- ErrorF("Reverting to kernel keymapping.\n");
- }
- }
-
- if (!haveKeymap) {
- // get the Darwin keyboard map
- keyMap.size = NXKeyMappingLength( darwinParamConnect );
- keyMap.mapping = (char*) xalloc( keyMap.size );
- if (!NXGetKeyMapping( darwinParamConnect, &keyMap )) {
- return FALSE;
- }
- }
-
- keyMapStream = new_data_stream( (unsigned char const*)keyMap.mapping,
- keyMap.size );
-
- // check the type of map
- if (get_word(keyMapStream)) {
- keyMapStream->number_size = 2;
- ErrorF("Current 16-bit keymapping may not be interpreted correctly.\n");
- }
-
- // Insert X modifier KeySyms into the keyboard map.
- numMods = get_number(keyMapStream);
- while (numMods-- > 0) {
- int left = 1; // first keycode is left
- short const charCode = get_number(keyMapStream);
- short numKeyCodes = get_number(keyMapStream);
-
- // This is just a marker, not a real modifier.
- // Store numeric keypad keys for later.
- if (charCode == NX_MODIFIERKEY_NUMERICPAD) {
- numPadStart = keyMapStream->data;
- numPadKeys = numKeyCodes;
- }
-
- while (numKeyCodes-- > 0) {
- const short keyCode = get_number(keyMapStream);
- if (charCode != NX_MODIFIERKEY_NUMERICPAD) {
- switch (charCode) {
- case NX_MODIFIERKEY_ALPHALOCK:
- info->keyMap[keyCode * GLYPHS_PER_KEY] = XK_Caps_Lock;
- break;
- case NX_MODIFIERKEY_SHIFT:
- info->keyMap[keyCode * GLYPHS_PER_KEY] =
- (left ? XK_Shift_L : XK_Shift_R);
- break;
- case NX_MODIFIERKEY_CONTROL:
- info->keyMap[keyCode * GLYPHS_PER_KEY] =
- (left ? XK_Control_L : XK_Control_R);
- break;
- case NX_MODIFIERKEY_ALTERNATE:
- info->keyMap[keyCode * GLYPHS_PER_KEY] =
- (left ? XK_Mode_switch : XK_Alt_R);
- break;
- case NX_MODIFIERKEY_COMMAND:
- info->keyMap[keyCode * GLYPHS_PER_KEY] =
- (left ? XK_Meta_L : XK_Meta_R);
- break;
- case NX_MODIFIERKEY_SECONDARYFN:
- info->keyMap[keyCode * GLYPHS_PER_KEY] =
- (left ? XK_Control_L : XK_Control_R);
- break;
- case NX_MODIFIERKEY_HELP:
- // Help is not an X11 modifier; treat as normal key
- info->keyMap[keyCode * GLYPHS_PER_KEY] = XK_Help;
- break;
- }
- }
- left = 0;
- }
- }
-
- // Convert the Darwin keyboard mapping to an X keyboard map.
- // A key can have a different character code for each combination of
- // modifiers. We currently ignore all modifier combinations except
- // those with Shift, AlphaLock, and Alt.
- numKeys = get_number(keyMapStream);
- for (i = 0, k = info->keyMap; i < numKeys; i++, k += GLYPHS_PER_KEY) {
- short const charGenMask = get_number(keyMapStream);
- if (charGenMask != 0xFF) { // is key bound?
- short numKeyCodes = 1 << bits_set(charGenMask);
-
- // Record unmodified case
- parse_next_char_code( keyMapStream, k );
- numKeyCodes--;
-
- // If AlphaLock and Shift modifiers produce different codes,
- // we record the Shift case since X handles AlphaLock.
- if (charGenMask & 0x01) { // AlphaLock
- parse_next_char_code( keyMapStream, k+1 );
- numKeyCodes--;
- }
-
- if (charGenMask & 0x02) { // Shift
- parse_next_char_code( keyMapStream, k+1 );
- numKeyCodes--;
-
- if (charGenMask & 0x01) { // Shift-AlphaLock
- get_number(keyMapStream); get_number(keyMapStream);
- numKeyCodes--;
- }
- }
-
- // Skip the Control cases
- if (charGenMask & 0x04) { // Control
- get_number(keyMapStream); get_number(keyMapStream);
- numKeyCodes--;
-
- if (charGenMask & 0x01) { // Control-AlphaLock
- get_number(keyMapStream); get_number(keyMapStream);
- numKeyCodes--;
- }
-
- if (charGenMask & 0x02) { // Control-Shift
- get_number(keyMapStream); get_number(keyMapStream);
- numKeyCodes--;
-
- if (charGenMask & 0x01) { // Shift-Control-AlphaLock
- get_number(keyMapStream); get_number(keyMapStream);
- numKeyCodes--;
- }
- }
- }
-
- // Process Alt cases
- if (charGenMask & 0x08) { // Alt
- parse_next_char_code( keyMapStream, k+2 );
- numKeyCodes--;
-
- if (charGenMask & 0x01) { // Alt-AlphaLock
- parse_next_char_code( keyMapStream, k+3 );
- numKeyCodes--;
- }
-
- if (charGenMask & 0x02) { // Alt-Shift
- parse_next_char_code( keyMapStream, k+3 );
- numKeyCodes--;
-
- if (charGenMask & 0x01) { // Alt-Shift-AlphaLock
- get_number(keyMapStream); get_number(keyMapStream);
- numKeyCodes--;
- }
- }
- }
-
- while (numKeyCodes-- > 0) {
- get_number(keyMapStream); get_number(keyMapStream);
- }
-
- if (k[3] == k[2]) k[3] = NoSymbol;
- if (k[2] == k[1]) k[2] = NoSymbol;
- if (k[1] == k[0]) k[1] = NoSymbol;
- if (k[0] == k[2] && k[1] == k[3]) k[2] = k[3] = NoSymbol;
- }
- }
-
- // Now we have to go back through the list of keycodes that are on the
- // numeric keypad and update the X keymap.
- keyMapStream->data = numPadStart;
- while(numPadKeys-- > 0) {
- const short keyCode = get_number(keyMapStream);
- k = &info->keyMap[keyCode * GLYPHS_PER_KEY];
- for (i = 0; i < NUM_KEYPAD; i++) {
- if (*k == normal_to_keypad[i].normalSym) {
- k[0] = normal_to_keypad[i].keypadSym;
- break;
- }
- }
- }
-
- // free Darwin keyboard map
- destroy_data_stream( keyMapStream );
- xfree( keyMap.mapping );
-
- return TRUE;
-}
-
-
-/*
- * DarwinBuildModifierMaps
- * Use the keyMap field of keyboard info structure to populate
- * the modMap and modifierKeycodes fields.
- */
-static void
-DarwinBuildModifierMaps(
- darwinKeyboardInfo *info)
-{
- int i;
- KeySym *k;
-
- memset(info->modMap, NoSymbol, sizeof(info->modMap));
- memset(info->modifierKeycodes, 0, sizeof(info->modifierKeycodes));
-
- for (i = 0; i < NUM_KEYCODES; i++)
- {
- k = info->keyMap + i * GLYPHS_PER_KEY;
-
- switch (k[0]) {
- case XK_Shift_L:
- info->modifierKeycodes[NX_MODIFIERKEY_SHIFT][0] = i;
- info->modMap[MIN_KEYCODE + i] = ShiftMask;
- break;
-
- case XK_Shift_R:
-#ifdef NX_MODIFIERKEY_RSHIFT
- info->modifierKeycodes[NX_MODIFIERKEY_RSHIFT][0] = i;
-#else
- info->modifierKeycodes[NX_MODIFIERKEY_SHIFT][0] = i;
-#endif
- info->modMap[MIN_KEYCODE + i] = ShiftMask;
- break;
-
- case XK_Control_L:
- info->modifierKeycodes[NX_MODIFIERKEY_CONTROL][0] = i;
- info->modMap[MIN_KEYCODE + i] = ControlMask;
- break;
-
- case XK_Control_R:
-#ifdef NX_MODIFIERKEY_RCONTROL
- info->modifierKeycodes[NX_MODIFIERKEY_RCONTROL][0] = i;
-#else
- info->modifierKeycodes[NX_MODIFIERKEY_CONTROL][0] = i;
-#endif
- info->modMap[MIN_KEYCODE + i] = ControlMask;
- break;
-
- case XK_Caps_Lock:
- info->modifierKeycodes[NX_MODIFIERKEY_ALPHALOCK][0] = i;
- info->modMap[MIN_KEYCODE + i] = LockMask;
- break;
-
- case XK_Alt_L:
- info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i;
- info->modMap[MIN_KEYCODE + i] = Mod1Mask;
- break;
-
- case XK_Alt_R:
-#ifdef NX_MODIFIERKEY_RALTERNATE
- info->modifierKeycodes[NX_MODIFIERKEY_RALTERNATE][0] = i;
-#else
- info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i;
-#endif
- info->modMap[MIN_KEYCODE + i] = Mod1Mask;
- break;
-
- case XK_Mode_switch:
- info->modMap[MIN_KEYCODE + i] = Mod1Mask;
- break;
-
- case XK_Meta_L:
- info->modifierKeycodes[NX_MODIFIERKEY_COMMAND][0] = i;
- info->modMap[MIN_KEYCODE + i] = Mod2Mask;
- break;
-
- case XK_Meta_R:
-#ifdef NX_MODIFIERKEY_RCOMMAND
- info->modifierKeycodes[NX_MODIFIERKEY_RCOMMAND][0] = i;
-#else
- info->modifierKeycodes[NX_MODIFIERKEY_COMMAND][0] = i;
-#endif
- info->modMap[MIN_KEYCODE + i] = Mod2Mask;
- break;
-
- case XK_Num_Lock:
- info->modMap[MIN_KEYCODE + i] = Mod3Mask;
- break;
- }
-
- if (darwinSwapAltMeta)
- {
- switch (k[0])
- {
- case XK_Alt_L:
- k[0] = XK_Meta_L;
- break;
- case XK_Alt_R:
- k[0] = XK_Meta_R;
- break;
- case XK_Meta_L:
- k[0] = XK_Alt_L;
- break;
- case XK_Meta_R:
- k[0] = XK_Alt_R;
- break;
- }
- }
-
-#if ALT_IS_MODE_SWITCH
- if (k[0] == XK_Alt_L)
- k[0] = XK_Mode_switch;
-#endif
- }
-}
-
-
-/*
- * DarwinLoadKeyboardMapping
- * Load the keyboard map from a file or system and convert
- * it to an equivalent X keyboard map and modifier map.
- */
-static void
-DarwinLoadKeyboardMapping(KeySymsRec *keySyms)
-{
- memset(keyInfo.keyMap, 0, sizeof(keyInfo.keyMap));
-
- if (!DarwinParseNXKeyMapping(&keyInfo)) {
- if (!DarwinModeReadSystemKeymap(&keyInfo)) {
- FatalError("Could not build a valid keymap.");
- }
- }
-
- DarwinBuildModifierMaps(&keyInfo);
-
-#ifdef DUMP_DARWIN_KEYMAP
- ErrorF("Darwin -> X converted keyboard map\n");
- for (i = 0, k = info->keyMap; i < NX_NUMKEYCODES;
- i++, k += GLYPHS_PER_KEY)
- {
- int j;
- ErrorF("0x%02x:", i);
- for (j = 0; j < GLYPHS_PER_KEY; j++) {
- if (k[j] == NoSymbol) {
- ErrorF("\tNoSym");
- } else {
- ErrorF("\t0x%x", k[j]);
- }
- }
- ErrorF("\n");
- }
-#endif
-
- keySyms->map = keyInfo.keyMap;
- keySyms->mapWidth = GLYPHS_PER_KEY;
- keySyms->minKeyCode = MIN_KEYCODE;
- keySyms->maxKeyCode = MAX_KEYCODE;
-}
-
-
-/*
- * DarwinKeyboardInit
- * Get the Darwin keyboard map and compute an equivalent
- * X keyboard map and modifier map. Set the new keyboard
- * device structure.
- */
-void DarwinKeyboardInit(
- DeviceIntPtr pDev )
-{
- KeySymsRec keySyms;
-
- // Open a shared connection to the HID System.
- // Note that the Event Status Driver is really just a wrapper
- // for a kIOHIDParamConnectType connection.
- assert( darwinParamConnect = NXOpenEventStatus() );
-
- DarwinLoadKeyboardMapping(&keySyms);
-
- /* Initialize the seed, so we don't reload the keymap unnecessarily
- (and possibly overwrite xinitrc changes) */
- DarwinModeSystemKeymapSeed();
-
- assert( InitKeyboardDeviceStruct( (DevicePtr)pDev, &keySyms,
- keyInfo.modMap, DarwinModeBell,
- DarwinChangeKeyboardControl ));
-}
-
-
-/* Borrowed from dix/devices.c */
-static Bool
-InitModMap(register KeyClassPtr keyc)
-{
- int i, j;
- CARD8 keysPerModifier[8];
- CARD8 mask;
-
- if (keyc->modifierKeyMap != NULL)
- xfree (keyc->modifierKeyMap);
-
- keyc->maxKeysPerModifier = 0;
- for (i = 0; i < 8; i++)
- keysPerModifier[i] = 0;
- for (i = 8; i < MAP_LENGTH; i++)
- {
- for (j = 0, mask = 1; j < 8; j++, mask <<= 1)
- {
- if (mask & keyc->modifierMap[i])
- {
- if (++keysPerModifier[j] > keyc->maxKeysPerModifier)
- keyc->maxKeysPerModifier = keysPerModifier[j];
- }
- }
- }
- keyc->modifierKeyMap = (KeyCode *)xalloc(8*keyc->maxKeysPerModifier);
- if (!keyc->modifierKeyMap && keyc->maxKeysPerModifier)
- return (FALSE);
- bzero((char *)keyc->modifierKeyMap, 8*(int)keyc->maxKeysPerModifier);
- for (i = 0; i < 8; i++)
- keysPerModifier[i] = 0;
- for (i = 8; i < MAP_LENGTH; i++)
- {
- for (j = 0, mask = 1; j < 8; j++, mask <<= 1)
- {
- if (mask & keyc->modifierMap[i])
- {
- keyc->modifierKeyMap[(j*keyc->maxKeysPerModifier) +
- keysPerModifier[j]] = i;
- keysPerModifier[j]++;
- }
- }
- }
- return TRUE;
-}
-
-
-void
-DarwinKeyboardReload(DeviceIntPtr pDev)
-{
- KeySymsRec keySyms;
-
- DarwinLoadKeyboardMapping(&keySyms);
-
- if (SetKeySymsMap(&pDev->key->curKeySyms, &keySyms)) {
- /* now try to update modifiers. */
-
- memmove(pDev->key->modifierMap, keyInfo.modMap, MAP_LENGTH);
- InitModMap(pDev->key);
- }
-
- SendMappingNotify(MappingKeyboard, MIN_KEYCODE, NUM_KEYCODES, 0);
- SendMappingNotify(MappingModifier, 0, 0, 0);
-}
-
-
-//-----------------------------------------------------------------------------
-// Modifier translation functions
-//
-// There are three different ways to specify a Mac modifier key:
-// keycode - specifies hardware key, read from keymapping
-// key - NX_MODIFIERKEY_*, really an index
-// mask - NX_*MASK, mask for modifier flags in event record
-// Left and right side have different keycodes but the same key and mask.
-//-----------------------------------------------------------------------------
-
-/*
- * DarwinModifierNXKeyToNXKeycode
- * Return the keycode for an NX_MODIFIERKEY_* modifier.
- * side = 0 for left or 1 for right.
- * Returns 0 if key+side is not a known modifier.
- */
-int DarwinModifierNXKeyToNXKeycode(int key, int side)
-{
- return keyInfo.modifierKeycodes[key][side];
-}
-
-/*
- * DarwinModifierNXKeycodeToNXKey
- * Returns -1 if keycode+side is not a modifier key
- * outSide may be NULL, else it gets 0 for left and 1 for right.
- */
-int DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide)
-{
- int key, side;
-
- keycode += MIN_KEYCODE;
- // search modifierKeycodes for this keycode+side
- for (key = 0; key < NX_NUMMODIFIERS; key++) {
- for (side = 0; side <= 1; side++) {
- if (keyInfo.modifierKeycodes[key][side] == keycode) break;
- }
- }
- if (key == NX_NUMMODIFIERS) return -1;
- if (outSide) *outSide = side;
- return key;
-}
-
-/*
- * DarwinModifierNXMaskToNXKey
- * Returns -1 if mask is not a known modifier mask.
- */
-int DarwinModifierNXMaskToNXKey(int mask)
-{
- switch (mask) {
- case NX_ALPHASHIFTMASK: return NX_MODIFIERKEY_ALPHALOCK;
- case NX_SHIFTMASK: return NX_MODIFIERKEY_SHIFT;
-#ifdef NX_DEVICELSHIFTKEYMASK
- case NX_DEVICELSHIFTKEYMASK: return NX_MODIFIERKEY_SHIFT;
- case NX_DEVICERSHIFTKEYMASK: return NX_MODIFIERKEY_RSHIFT;
-#endif
- case NX_CONTROLMASK: return NX_MODIFIERKEY_CONTROL;
-#ifdef NX_DEVICELCTLKEYMASK
- case NX_DEVICELCTLKEYMASK: return NX_MODIFIERKEY_CONTROL;
- case NX_DEVICERCTLKEYMASK: return NX_MODIFIERKEY_RCONTROL;
-#endif
- case NX_ALTERNATEMASK: return NX_MODIFIERKEY_ALTERNATE;
-#ifdef NX_DEVICELALTKEYMASK
- case NX_DEVICELALTKEYMASK: return NX_MODIFIERKEY_ALTERNATE;
- case NX_DEVICERALTKEYMASK: return NX_MODIFIERKEY_RALTERNATE;
-#endif
- case NX_COMMANDMASK: return NX_MODIFIERKEY_COMMAND;
-#ifdef NX_DEVICELCMDKEYMASK
- case NX_DEVICELCMDKEYMASK: return NX_MODIFIERKEY_COMMAND;
- case NX_DEVICERCMDKEYMASK: return NX_MODIFIERKEY_RCOMMAND;
-#endif
- case NX_NUMERICPADMASK: return NX_MODIFIERKEY_NUMERICPAD;
- case NX_HELPMASK: return NX_MODIFIERKEY_HELP;
- case NX_SECONDARYFNMASK: return NX_MODIFIERKEY_SECONDARYFN;
- }
- return -1;
-}
-
-/*
- * DarwinModifierNXKeyToNXMask
- * Returns 0 if key is not a known modifier key.
- */
-int DarwinModifierNXKeyToNXMask(int key)
-{
- switch (key) {
- case NX_MODIFIERKEY_ALPHALOCK: return NX_ALPHASHIFTMASK;
- case NX_MODIFIERKEY_SHIFT: return NX_SHIFTMASK;
-#ifdef NX_MODIFIERKEY_RSHIFT
- case NX_MODIFIERKEY_RSHIFT: return NX_SHIFTMASK;
-#endif
- case NX_MODIFIERKEY_CONTROL: return NX_CONTROLMASK;
-#ifdef NX_MODIFIERKEY_RCONTROL
- case NX_MODIFIERKEY_RCONTROL: return NX_CONTROLMASK;
-#endif
- case NX_MODIFIERKEY_ALTERNATE: return NX_ALTERNATEMASK;
-#ifdef NX_MODIFIERKEY_RALTERNATE
- case NX_MODIFIERKEY_RALTERNATE: return NX_ALTERNATEMASK;
-#endif
- case NX_MODIFIERKEY_COMMAND: return NX_COMMANDMASK;
-#ifdef NX_MODIFIERKEY_RCOMMAND
- case NX_MODIFIERKEY_RCOMMAND: return NX_COMMANDMASK;
-#endif
- case NX_MODIFIERKEY_NUMERICPAD: return NX_NUMERICPADMASK;
- case NX_MODIFIERKEY_HELP: return NX_HELPMASK;
- case NX_MODIFIERKEY_SECONDARYFN: return NX_SECONDARYFNMASK;
- }
- return 0;
-}
-
-/*
- * DarwinModifierStringToNXKey
- * Returns -1 if string is not a known modifier.
- */
-int DarwinModifierStringToNXKey(const char *str)
-{
- if (!strcasecmp(str, "shift")) return NX_MODIFIERKEY_SHIFT;
- else if (!strcasecmp(str, "control")) return NX_MODIFIERKEY_CONTROL;
- else if (!strcasecmp(str, "option")) return NX_MODIFIERKEY_ALTERNATE;
- else if (!strcasecmp(str, "command")) return NX_MODIFIERKEY_COMMAND;
- else if (!strcasecmp(str, "fn")) return NX_MODIFIERKEY_SECONDARYFN;
- else return -1;
-}
-
-/*
- * LegalModifier
- * This allows the ddx layer to prevent some keys from being remapped
- * as modifier keys.
- */
-Bool LegalModifier(unsigned int key, DevicePtr pDev)
-{
- return 1;
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/darwinKeyboard.h b/nx-X11/programs/Xserver/hw/darwin/darwinKeyboard.h
deleted file mode 100644
index 0ea9c1d60..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/darwinKeyboard.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2003-2004 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/darwinKeyboard.c,v 1.18 2003/05/14 05:27:55 torrey Exp $ */
-
-#ifndef DARWIN_KEYBOARD_H
-#define DARWIN_KEYBOARD_H 1
-
-#define XK_TECHNICAL // needed to get XK_Escape
-#define XK_PUBLISHING
-#include "keysym.h"
-#include "inputstr.h"
-
-// Each key can generate 4 glyphs. They are, in order:
-// unshifted, shifted, modeswitch unshifted, modeswitch shifted
-#define GLYPHS_PER_KEY 4
-#define NUM_KEYCODES 248 // NX_NUMKEYCODES might be better
-#define MAX_KEYCODE NUM_KEYCODES + MIN_KEYCODE - 1
-
-typedef struct darwinKeyboardInfo_struct {
- CARD8 modMap[MAP_LENGTH];
- KeySym keyMap[MAP_LENGTH * GLYPHS_PER_KEY];
- unsigned char modifierKeycodes[32][2];
-} darwinKeyboardInfo;
-
-void DarwinKeyboardReload(DeviceIntPtr pDev);
-unsigned int DarwinModeSystemKeymapSeed(void);
-Bool DarwinModeReadSystemKeymap(darwinKeyboardInfo *info);
-
-#endif /* DARWIN_KEYBOARD_H */
diff --git a/nx-X11/programs/Xserver/hw/darwin/darwinXinput.c b/nx-X11/programs/Xserver/hw/darwin/darwinXinput.c
deleted file mode 100644
index d3716a1d4..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/darwinXinput.c
+++ /dev/null
@@ -1,310 +0,0 @@
-/* $Xorg: stubs.c,v 1.4 2001/02/09 02:04:35 xorgcvs Exp $ */
-
-/*
- * X server support of the XINPUT extension for Darwin
- *
- * This is currently a copy of mi/stubs.c, but eventually this
- * should include more complete XINPUT support.
- */
-
-/************************************************************
-
-Copyright 1989, 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 1989 by Hewlett-Packard Company, Palo Alto, California.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Hewlett-Packard not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-********************************************************/
-/* $XFree86: xc/programs/Xserver/hw/darwin/darwinXinput.c,v 1.1 2004/05/28 07:44:00 torrey Exp $ */
-
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "inputstr.h"
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#include "XIstubs.h"
-
-/***********************************************************************
- *
- * Caller: ProcXChangeKeyboardDevice
- *
- * This procedure does the implementation-dependent portion of the work
- * needed to change the keyboard device.
- *
- * The X keyboard device has a FocusRec. If the device that has been
- * made into the new X keyboard did not have a FocusRec,
- * ProcXChangeKeyboardDevice will allocate one for it.
- *
- * If you do not want clients to be able to focus the old X keyboard
- * device, call DeleteFocusClassDeviceStruct to free the FocusRec.
- *
- * If you support input devices with keys that you do not want to be
- * used as the X keyboard, you need to check for them here and return
- * a BadDevice error.
- *
- * The default implementation is to do nothing (assume you do want
- * clients to be able to focus the old X keyboard). The commented-out
- * sample code shows what you might do if you don't want the default.
- *
- */
-
-int
-ChangeKeyboardDevice (old_dev, new_dev)
- DeviceIntPtr old_dev;
- DeviceIntPtr new_dev;
- {
- /***********************************************************************
- DeleteFocusClassDeviceStruct(old_dev); * defined in xchgptr.c *
- **********************************************************************/
- return BadMatch;
- }
-
-
-/***********************************************************************
- *
- * Caller: ProcXChangePointerDevice
- *
- * This procedure does the implementation-dependent portion of the work
- * needed to change the pointer device.
- *
- * The X pointer device does not have a FocusRec. If the device that
- * has been made into the new X pointer had a FocusRec,
- * ProcXChangePointerDevice will free it.
- *
- * If you want clients to be able to focus the old pointer device that
- * has now become accessible through the input extension, you need to
- * add a FocusRec to it here.
- *
- * The XChangePointerDevice protocol request also allows the client
- * to choose which axes of the new pointer device are used to move
- * the X cursor in the X- and Y- directions. If the axes are different
- * than the default ones, you need to keep track of that here.
- *
- * If you support input devices with valuators that you do not want to be
- * used as the X pointer, you need to check for them here and return a
- * BadDevice error.
- *
- * The default implementation is to do nothing (assume you don't want
- * clients to be able to focus the old X pointer). The commented-out
- * sample code shows what you might do if you don't want the default.
- *
- */
-
-int
-ChangePointerDevice (
- DeviceIntPtr old_dev,
- DeviceIntPtr new_dev,
- unsigned char x,
- unsigned char y)
- {
- /***********************************************************************
- InitFocusClassDeviceStruct(old_dev); * allow focusing old ptr*
-
- x_axis = x; * keep track of new x-axis*
- y_axis = y; * keep track of new y-axis*
- if (x_axis != 0 || y_axis != 1)
- axes_changed = TRUE; * remember axes have changed*
- else
- axes_changed = FALSE;
- *************************************************************************/
- return BadMatch;
- }
-
-/***********************************************************************
- *
- * Caller: ProcXCloseDevice
- *
- * Take care of implementation-dependent details of closing a device.
- * Some implementations may actually close the device, others may just
- * remove this clients interest in that device.
- *
- * The default implementation is to do nothing (assume all input devices
- * are initialized during X server initialization and kept open).
- *
- */
-
-void
-CloseInputDevice (d, client)
- DeviceIntPtr d;
- ClientPtr client;
- {
- }
-
-/***********************************************************************
- *
- * Caller: ProcXListInputDevices
- *
- * This is the implementation-dependent routine to initialize an input
- * device to the point that information about it can be listed.
- * Some implementations open all input devices when the server is first
- * initialized, and never close them. Other implementations open only
- * the X pointer and keyboard devices during server initialization,
- * and only open other input devices when some client makes an
- * XOpenDevice request. If some other process has the device open, the
- * server may not be able to get information about the device to list it.
- *
- * This procedure should be used by implementations that do not initialize
- * all input devices at server startup. It should do device-dependent
- * initialization for any devices not previously initialized, and call
- * AddInputDevice for each of those devices so that a DeviceIntRec will be
- * created for them.
- *
- * The default implementation is to do nothing (assume all input devices
- * are initialized during X server initialization and kept open).
- * The commented-out sample code shows what you might do if you don't want
- * the default.
- *
- */
-
-void
-AddOtherInputDevices ()
- {
- /**********************************************************************
- for each uninitialized device, do something like:
-
- DeviceIntPtr dev;
- DeviceProc deviceProc;
- pointer private;
-
- dev = (DeviceIntPtr) AddInputDevice(deviceProc, TRUE);
- dev->public.devicePrivate = private;
- RegisterOtherDevice(dev);
- dev->inited = ((*dev->deviceProc)(dev, DEVICE_INIT) == Success);
- ************************************************************************/
-
- }
-
-/***********************************************************************
- *
- * Caller: ProcXOpenDevice
- *
- * This is the implementation-dependent routine to open an input device.
- * Some implementations open all input devices when the server is first
- * initialized, and never close them. Other implementations open only
- * the X pointer and keyboard devices during server initialization,
- * and only open other input devices when some client makes an
- * XOpenDevice request. This entry point is for the latter type of
- * implementation.
- *
- * If the physical device is not already open, do it here. In this case,
- * you need to keep track of the fact that one or more clients has the
- * device open, and physically close it when the last client that has
- * it open does an XCloseDevice.
- *
- * The default implementation is to do nothing (assume all input devices
- * are opened during X server initialization and kept open).
- *
- */
-
-void
-OpenInputDevice (dev, client, status)
- DeviceIntPtr dev;
- ClientPtr client;
- int *status;
- {
- }
-
-/****************************************************************************
- *
- * Caller: ProcXSetDeviceMode
- *
- * Change the mode of an extension device.
- * This function is used to change the mode of a device from reporting
- * relative motion to reporting absolute positional information, and
- * vice versa.
- * The default implementation below is that no such devices are supported.
- *
- */
-
-int
-SetDeviceMode (client, dev, mode)
- register ClientPtr client;
- DeviceIntPtr dev;
- int mode;
- {
- return BadMatch;
- }
-
-/****************************************************************************
- *
- * Caller: ProcXSetDeviceValuators
- *
- * Set the value of valuators on an extension input device.
- * This function is used to set the initial value of valuators on
- * those input devices that are capable of reporting either relative
- * motion or an absolute position, and allow an initial position to be set.
- * The default implementation below is that no such devices are supported.
- *
- */
-
-int
-SetDeviceValuators (client, dev, valuators, first_valuator, num_valuators)
- register ClientPtr client;
- DeviceIntPtr dev;
- int *valuators;
- int first_valuator;
- int num_valuators;
- {
- return BadMatch;
- }
-
-/****************************************************************************
- *
- * Caller: ProcXChangeDeviceControl
- *
- * Change the specified device controls on an extension input device.
- *
- */
-
-int
-ChangeDeviceControl (client, dev, control)
- register ClientPtr client;
- DeviceIntPtr dev;
- xDeviceCtl *control;
- {
- switch (control->control)
- {
- case DEVICE_RESOLUTION:
- return (BadMatch);
- default:
- return (BadMatch);
- }
- }
diff --git a/nx-X11/programs/Xserver/hw/darwin/iokit/Imakefile b/nx-X11/programs/Xserver/hw/darwin/iokit/Imakefile
deleted file mode 100644
index 061874e75..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/iokit/Imakefile
+++ /dev/null
@@ -1,25 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/Imakefile,v 1.18 2003/03/15 18:02:08 torrey Exp $
-
-#include <Server.tmpl>
-
-SRCS = xfIOKit.c \
- xfIOKitCursor.c \
- xfIOKitStartup.c
-
-OBJS = xfIOKit.o \
- xfIOKitCursor.o \
- xfIOKitStartup.o
-
-INCLUDES = -I. -I$(SERVERSRC)/mi -I$(SERVERSRC)/fb -I$(EXTINCSRC) \
- -I$(SERVERSRC)/render -I$(SERVERSRC)/include -I$(XINCLUDESRC) \
- -I$(SERVERSRC)/os -I$(INCLUDESRC) -I$(FONTINCSRC) \
- -I$(SERVERSRC)/miext/shadow -I..
-
-#if DarwinQuartzSupport
-DEFINES = -DDARWIN_WITH_QUARTZ
-#endif
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(iokit,$(OBJS))
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKit.c b/nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKit.c
deleted file mode 100644
index 2f0fc11a3..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKit.c
+++ /dev/null
@@ -1,772 +0,0 @@
-/**************************************************************
- *
- * IOKit support for the Darwin X Server
- *
- * HISTORY:
- * Original port to Mac OS X Server by John Carmack
- * Port to Darwin 1.0 by Dave Zarzycki
- * Significantly rewritten for XFree86 4.0.1 by Torrey Lyons
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2004 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/iokit/xfIOKit.c,v 1.6 2005/07/03 08:53:39 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/darwin/iokit/xfIOKit.c,v 1.2 2003/10/16 23:50:09 torrey Exp $ */
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "os.h"
-#include "servermd.h"
-#include "inputstr.h"
-#include "scrnintstr.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "mipointer.h"
-#include "micmap.h"
-#include "shadow.h"
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <pthread.h>
-
-#include <mach/mach_interface.h>
-
-#define NO_CFPLUGIN
-#include <IOKit/IOKitLib.h>
-#include <IOKit/hidsystem/IOHIDShared.h>
-#include <IOKit/graphics/IOGraphicsLib.h>
-#include <drivers/event_status_driver.h>
-
-// Define this to work around bugs in the display drivers for
-// older PowerBook G3's. If the X server starts without this
-// #define, you don't need it.
-#undef OLD_POWERBOOK_G3
-
-#include "darwin.h"
-#include "xfIOKit.h"
-
-// Globals
-int xfIOKitScreenIndex = 0;
-io_connect_t xfIOKitInputConnect = 0;
-
-static pthread_t inputThread;
-static EvGlobals * evg;
-static mach_port_t masterPort;
-static mach_port_t notificationPort;
-static IONotificationPortRef NotificationPortRef;
-static mach_port_t pmNotificationPort;
-static io_iterator_t fbIter;
-
-
-/*
- * XFIOKitStoreColors
- * This is a callback from X to change the hardware colormap
- * when using PsuedoColor.
- */
-static void XFIOKitStoreColors(
- ColormapPtr pmap,
- int numEntries,
- xColorItem *pdefs)
-{
- kern_return_t kr;
- int i;
- IOColorEntry *newColors;
- ScreenPtr pScreen = pmap->pScreen;
- XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
-
- assert( newColors = (IOColorEntry *)
- xalloc( numEntries*sizeof(IOColorEntry) ));
-
- // Convert xColorItem values to IOColorEntry
- // assume the colormap is PsuedoColor
- // as we do not support DirectColor
- for (i = 0; i < numEntries; i++) {
- newColors[i].index = pdefs[i].pixel;
- newColors[i].red = pdefs[i].red;
- newColors[i].green = pdefs[i].green;
- newColors[i].blue = pdefs[i].blue;
- }
-
- kr = IOFBSetCLUT( iokitScreen->fbService, 0, numEntries,
- kSetCLUTByValue, newColors );
- kern_assert( kr );
-
- xfree( newColors );
-}
-
-
-/*
- * DarwinModeBell
- * FIXME
- */
-void DarwinModeBell(
- int loud,
- DeviceIntPtr pDevice,
- pointer ctrl,
- int fbclass)
-{
-}
-
-
-/*
- * DarwinModeGiveUp
- * Closes the connections to IOKit services
- */
-void DarwinModeGiveUp( void )
-{
- int i;
-
- // we must close the HID System first
- // because it is a client of the framebuffer
- NXCloseEventStatus( darwinParamConnect );
- IOServiceClose( xfIOKitInputConnect );
- for (i = 0; i < screenInfo.numScreens; i++) {
- XFIOKitScreenPtr iokitScreen =
- XFIOKIT_SCREEN_PRIV(screenInfo.screens[i]);
- IOServiceClose( iokitScreen->fbService );
- }
-}
-
-
-/*
- * ClearEvent
- * Clear an event from the HID System event queue
- */
-static void ClearEvent(NXEvent * ep)
-{
- static NXEvent nullEvent = {NX_NULLEVENT, {0, 0 }, 0, -1, 0 };
-
- *ep = nullEvent;
- ep->data.compound.subType = ep->data.compound.misc.L[0] =
- ep->data.compound.misc.L[1] = 0;
-}
-
-
-/*
- * XFIOKitHIDThread
- * Read the HID System event queue, translate it to an X event,
- * and queue it for processing.
- */
-static void *XFIOKitHIDThread(void *unused)
-{
- for (;;) {
- NXEQElement *oldHead;
- mach_msg_return_t kr;
- mach_msg_empty_rcv_t msg;
-
- kr = mach_msg((mach_msg_header_t*) &msg, MACH_RCV_MSG, 0,
- sizeof(msg), notificationPort, 0, MACH_PORT_NULL);
- kern_assert(kr);
-
- while (evg->LLEHead != evg->LLETail) {
- NXEvent ev;
- xEvent xe;
-
- // Extract the next event from the kernel queue
- oldHead = (NXEQElement*)&evg->lleq[evg->LLEHead];
- ev_lock(&oldHead->sema);
- ev = oldHead->event;
- ClearEvent(&oldHead->event);
- evg->LLEHead = oldHead->next;
- ev_unlock(&oldHead->sema);
-
- memset(&xe, 0, sizeof(xe));
-
- // These fields should be filled in for every event
- xe.u.keyButtonPointer.rootX = ev.location.x;
- xe.u.keyButtonPointer.rootY = ev.location.y;
- xe.u.keyButtonPointer.time = GetTimeInMillis();
-
- switch( ev.type ) {
- case NX_MOUSEMOVED:
- xe.u.u.type = MotionNotify;
- break;
-
- case NX_LMOUSEDOWN:
- xe.u.u.type = ButtonPress;
- xe.u.u.detail = 1;
- break;
-
- case NX_LMOUSEUP:
- xe.u.u.type = ButtonRelease;
- xe.u.u.detail = 1;
- break;
-
- // A newer kernel generates multi-button events with
- // NX_SYSDEFINED. Button 2 isn't handled correctly by
- // older kernels anyway. Just let NX_SYSDEFINED events
- // handle these.
-#if 0
- case NX_RMOUSEDOWN:
- xe.u.u.type = ButtonPress;
- xe.u.u.detail = 2;
- break;
-
- case NX_RMOUSEUP:
- xe.u.u.type = ButtonRelease;
- xe.u.u.detail = 2;
- break;
-#endif
-
- case NX_KEYDOWN:
- xe.u.u.type = KeyPress;
- xe.u.u.detail = ev.data.key.keyCode;
- break;
-
- case NX_KEYUP:
- xe.u.u.type = KeyRelease;
- xe.u.u.detail = ev.data.key.keyCode;
- break;
-
- case NX_FLAGSCHANGED:
- xe.u.u.type = kXDarwinUpdateModifiers;
- xe.u.clientMessage.u.l.longs0 = ev.flags;
- break;
-
- case NX_SYSDEFINED:
- if (ev.data.compound.subType == 7) {
- xe.u.u.type = kXDarwinUpdateButtons;
- xe.u.clientMessage.u.l.longs0 =
- ev.data.compound.misc.L[0];
- xe.u.clientMessage.u.l.longs1 =
- ev.data.compound.misc.L[1];
- } else {
- continue;
- }
- break;
-
- case NX_SCROLLWHEELMOVED:
- xe.u.u.type = kXDarwinScrollWheel;
- xe.u.clientMessage.u.s.shorts0 =
- ev.data.scrollWheel.deltaAxis1;
- break;
-
- default:
- continue;
- }
-
- DarwinEQEnqueue(&xe);
- }
- }
-
- return NULL;
-}
-
-
-/*
- * XFIOKitPMThread
- * Handle power state notifications
- */
-static void *XFIOKitPMThread(void *arg)
-{
- ScreenPtr pScreen = (ScreenPtr)arg;
- XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
-
- for (;;) {
- mach_msg_return_t kr;
- mach_msg_empty_rcv_t msg;
-
- kr = mach_msg((mach_msg_header_t*) &msg, MACH_RCV_MSG, 0,
- sizeof(msg), pmNotificationPort, 0, MACH_PORT_NULL);
- kern_assert(kr);
-
- // display is powering down
- if (msg.header.msgh_id == 0) {
- IOFBAcknowledgePM( iokitScreen->fbService );
- xf86SetRootClip(pScreen, FALSE);
- }
- // display just woke up
- else if (msg.header.msgh_id == 1) {
- xf86SetRootClip(pScreen, TRUE);
- }
- }
- return NULL;
-}
-
-
-/*
- * SetupFBandHID
- * Setup an IOFramebuffer service and connect the HID system to it.
- */
-static Bool SetupFBandHID(
- int index,
- DarwinFramebufferPtr dfb,
- XFIOKitScreenPtr iokitScreen)
-{
- kern_return_t kr;
- io_service_t service;
- io_connect_t fbService;
- vm_address_t vram;
- vm_size_t shmemSize;
- int i;
- UInt32 numModes;
- IODisplayModeInformation modeInfo;
- IODisplayModeID displayMode, *allModes;
- IOIndex displayDepth;
- IOFramebufferInformation fbInfo;
- IOPixelInformation pixelInfo;
- StdFBShmem_t *cshmem;
-
- // find and open the IOFrameBuffer service
- service = IOIteratorNext(fbIter);
- if (service == 0)
- return FALSE;
-
- kr = IOServiceOpen( service, mach_task_self(),
- kIOFBServerConnectType, &iokitScreen->fbService );
- IOObjectRelease( service );
- if (kr != KERN_SUCCESS) {
- ErrorF("Failed to connect as window server to screen %i.\n", index);
- return FALSE;
- }
- fbService = iokitScreen->fbService;
-
- // create the slice of shared memory containing cursor state data
- kr = IOFBCreateSharedCursor( fbService,
- kIOFBCurrentShmemVersion,
- 32, 32 );
- if (kr != KERN_SUCCESS)
- return FALSE;
-
- // Register for power management events for the framebuffer's device
- kr = IOCreateReceivePort(kOSNotificationMessageID, &pmNotificationPort);
- kern_assert(kr);
- kr = IOConnectSetNotificationPort( fbService, 0,
- pmNotificationPort, 0 );
- if (kr != KERN_SUCCESS) {
- ErrorF("Power management registration failed.\n");
- }
-
- // SET THE SCREEN PARAMETERS
- // get the current screen resolution, refresh rate and depth
- kr = IOFBGetCurrentDisplayModeAndDepth( fbService,
- &displayMode,
- &displayDepth );
- if (kr != KERN_SUCCESS)
- return FALSE;
-
- // use the current screen resolution if the user
- // only wants to change the refresh rate
- if (darwinDesiredRefresh != -1 && darwinDesiredWidth == 0) {
- kr = IOFBGetDisplayModeInformation( fbService,
- displayMode,
- &modeInfo );
- if (kr != KERN_SUCCESS)
- return FALSE;
- darwinDesiredWidth = modeInfo.nominalWidth;
- darwinDesiredHeight = modeInfo.nominalHeight;
- }
-
- // use the current resolution and refresh rate
- // if the user doesn't have a preference
- if (darwinDesiredWidth == 0) {
-
- // change the pixel depth if desired
- if (darwinDesiredDepth != -1) {
- kr = IOFBGetDisplayModeInformation( fbService,
- displayMode,
- &modeInfo );
- if (kr != KERN_SUCCESS)
- return FALSE;
- if (modeInfo.maxDepthIndex < darwinDesiredDepth) {
- ErrorF("Discarding screen %i:\n", index);
- ErrorF("Current screen resolution does not support desired pixel depth.\n");
- return FALSE;
- }
-
- displayDepth = darwinDesiredDepth;
- kr = IOFBSetDisplayModeAndDepth( fbService, displayMode,
- displayDepth );
- if (kr != KERN_SUCCESS)
- return FALSE;
- }
-
- // look for display mode with correct resolution and refresh rate
- } else {
-
- // get an array of all supported display modes
- kr = IOFBGetDisplayModeCount( fbService, &numModes );
- if (kr != KERN_SUCCESS)
- return FALSE;
- assert(allModes = (IODisplayModeID *)
- xalloc( numModes * sizeof(IODisplayModeID) ));
- kr = IOFBGetDisplayModes( fbService, numModes, allModes );
- if (kr != KERN_SUCCESS)
- return FALSE;
-
- for (i = 0; i < numModes; i++) {
- kr = IOFBGetDisplayModeInformation( fbService, allModes[i],
- &modeInfo );
- if (kr != KERN_SUCCESS)
- return FALSE;
-
- if (modeInfo.flags & kDisplayModeValidFlag &&
- modeInfo.nominalWidth == darwinDesiredWidth &&
- modeInfo.nominalHeight == darwinDesiredHeight) {
-
- if (darwinDesiredDepth == -1)
- darwinDesiredDepth = modeInfo.maxDepthIndex;
- if (modeInfo.maxDepthIndex < darwinDesiredDepth) {
- ErrorF("Discarding screen %i:\n", index);
- ErrorF("Desired screen resolution does not support desired pixel depth.\n");
- return FALSE;
- }
-
- if ((darwinDesiredRefresh == -1 ||
- (darwinDesiredRefresh << 16) == modeInfo.refreshRate)) {
- displayMode = allModes[i];
- displayDepth = darwinDesiredDepth;
- kr = IOFBSetDisplayModeAndDepth(fbService,
- displayMode,
- displayDepth);
- if (kr != KERN_SUCCESS)
- return FALSE;
- break;
- }
- }
- }
-
- xfree( allModes );
- if (i >= numModes) {
- ErrorF("Discarding screen %i:\n", index);
- ErrorF("Desired screen resolution or refresh rate is not supported.\n");
- return FALSE;
- }
- }
-
- kr = IOFBGetPixelInformation( fbService, displayMode, displayDepth,
- kIOFBSystemAperture, &pixelInfo );
- if (kr != KERN_SUCCESS)
- return FALSE;
-
-#ifdef __i386__
- /* x86 in 8bit mode currently needs fixed color map... */
- if (pixelInfo.bitsPerComponent == 8 &&
- pixelInfo.componentCount == 1)
- {
- pixelInfo.pixelType = kIOFixedCLUTPixels;
- }
-#endif
-
-#ifdef OLD_POWERBOOK_G3
- if (pixelInfo.pixelType == kIOCLUTPixels)
- pixelInfo.pixelType = kIOFixedCLUTPixels;
-#endif
-
- kr = IOFBGetFramebufferInformationForAperture( fbService,
- kIOFBSystemAperture,
- &fbInfo );
- if (kr != KERN_SUCCESS)
- return FALSE;
-
- // FIXME: 1x1 IOFramebuffers are sometimes used to indicate video
- // outputs without a monitor connected to them. Since IOKit Xinerama
- // does not really work, this often causes problems on PowerBooks.
- // For now we explicitly check and ignore these screens.
- if (fbInfo.activeWidth <= 1 || fbInfo.activeHeight <= 1) {
- ErrorF("Discarding screen %i:\n", index);
- ErrorF("Invalid width or height.\n");
- return FALSE;
- }
-
- kr = IOConnectMapMemory( fbService, kIOFBCursorMemory,
- mach_task_self(), (vm_address_t *) &cshmem,
- &shmemSize, kIOMapAnywhere );
- if (kr != KERN_SUCCESS)
- return FALSE;
- iokitScreen->cursorShmem = cshmem;
-
- kr = IOConnectMapMemory( fbService, kIOFBSystemAperture,
- mach_task_self(), &vram, &shmemSize,
- kIOMapAnywhere );
- if (kr != KERN_SUCCESS)
- return FALSE;
-
- iokitScreen->framebuffer = (void*)vram;
- dfb->x = cshmem->screenBounds.minx;
- dfb->y = cshmem->screenBounds.miny;
- dfb->width = fbInfo.activeWidth;
- dfb->height = fbInfo.activeHeight;
- dfb->pitch = fbInfo.bytesPerRow;
- dfb->bitsPerPixel = fbInfo.bitsPerPixel;
- dfb->colorBitsPerPixel = pixelInfo.componentCount *
- pixelInfo.bitsPerComponent;
- dfb->bitsPerComponent = pixelInfo.bitsPerComponent;
-
- // allocate shadow framebuffer
- iokitScreen->shadowPtr = xalloc(dfb->pitch * dfb->height);
- dfb->framebuffer = iokitScreen->shadowPtr;
-
- // Note: Darwin kIORGBDirectPixels = X TrueColor, not DirectColor
- if (pixelInfo.pixelType == kIORGBDirectPixels) {
- dfb->colorType = TrueColor;
- } else if (pixelInfo.pixelType == kIOCLUTPixels) {
- dfb->colorType = PseudoColor;
- } else if (pixelInfo.pixelType == kIOFixedCLUTPixels) {
- dfb->colorType = StaticColor;
- }
-
- // Inform the HID system that the framebuffer is also connected to it.
- kr = IOConnectAddClient( xfIOKitInputConnect, fbService );
- kern_assert( kr );
-
- // We have to have added at least one screen
- // before we can enable the cursor.
- kr = IOHIDSetCursorEnable(xfIOKitInputConnect, TRUE);
- kern_assert( kr );
-
- return TRUE;
-}
-
-
-/*
- * DarwinModeAddScreen
- * IOKit specific initialization for each screen.
- */
-Bool DarwinModeAddScreen(
- int index,
- ScreenPtr pScreen)
-{
- DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
- XFIOKitScreenPtr iokitScreen;
-
- // allocate space for private per screen storage
- iokitScreen = xalloc(sizeof(XFIOKitScreenRec));
- XFIOKIT_SCREEN_PRIV(pScreen) = iokitScreen;
-
- // setup hardware framebuffer
- iokitScreen->fbService = 0;
- if (! SetupFBandHID(index, dfb, iokitScreen)) {
- if (iokitScreen->fbService) {
- IOServiceClose(iokitScreen->fbService);
- }
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/*
- * XFIOKitShadowUpdate
- * Update the damaged regions of the shadow framebuffer on the screen.
- */
-static void XFIOKitShadowUpdate(ScreenPtr pScreen,
- shadowBufPtr pBuf)
-{
- DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
- XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
- RegionPtr damage = &pBuf->damage;
- int numBox = REGION_NUM_RECTS(damage);
- BoxPtr pBox = REGION_RECTS(damage);
- int pitch = dfb->pitch;
- int bpp = dfb->bitsPerPixel/8;
-
- // Loop through all the damaged boxes
- while (numBox--) {
- int width, height, offset;
- unsigned char *src, *dst;
-
- width = (pBox->x2 - pBox->x1) * bpp;
- height = pBox->y2 - pBox->y1;
- offset = (pBox->y1 * pitch) + (pBox->x1 * bpp);
- src = iokitScreen->shadowPtr + offset;
- dst = iokitScreen->framebuffer + offset;
-
- while (height--) {
- memcpy(dst, src, width);
- dst += pitch;
- src += pitch;
- }
-
- // Get the next box
- pBox++;
- }
-}
-
-
-/*
- * DarwinModeSetupScreen
- * Finalize IOKit specific initialization of each screen.
- */
-Bool DarwinModeSetupScreen(
- int index,
- ScreenPtr pScreen)
-{
- DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
- pthread_t pmThread;
-
- // initalize cursor support
- if (! XFIOKitInitCursor(pScreen)) {
- return FALSE;
- }
-
- // initialize shadow framebuffer support
- if (! shadowInit(pScreen, XFIOKitShadowUpdate, NULL)) {
- ErrorF("Failed to initalize shadow framebuffer for screen %i.\n",
- index);
- return FALSE;
- }
-
- // initialize colormap handling as needed
- if (dfb->colorType == PseudoColor) {
- pScreen->StoreColors = XFIOKitStoreColors;
- }
-
- // initialize power manager handling
- pthread_create( &pmThread, NULL, XFIOKitPMThread,
- (void *) pScreen );
-
- return TRUE;
-}
-
-
-/*
- * DarwinModeInitOutput
- * One-time initialization of IOKit output support.
- */
-void DarwinModeInitOutput(
- int argc,
- char **argv)
-{
- static unsigned long generation = 0;
- kern_return_t kr;
- io_iterator_t iter;
- io_service_t service;
- vm_address_t shmem;
- vm_size_t shmemSize;
-
- ErrorF("Display mode: IOKit\n");
-
- // Allocate private storage for each screen's IOKit specific info
- if (generation != serverGeneration) {
- xfIOKitScreenIndex = AllocateScreenPrivateIndex();
- generation = serverGeneration;
- }
-
- kr = IOMasterPort(bootstrap_port, &masterPort);
- kern_assert( kr );
-
- // Find and open the HID System Service
- // Do this now to be sure the Mac OS X window server is not running.
- kr = IOServiceGetMatchingServices( masterPort,
- IOServiceMatching( kIOHIDSystemClass ),
- &iter );
- kern_assert( kr );
-
- assert( service = IOIteratorNext( iter ) );
-
- kr = IOServiceOpen( service, mach_task_self(), kIOHIDServerConnectType,
- &xfIOKitInputConnect );
- if (kr != KERN_SUCCESS) {
- ErrorF("Failed to connect to the HID System as the window server!\n");
-#ifdef DARWIN_WITH_QUARTZ
- FatalError("Quit the Mac OS X window server or use the -quartz option.\n");
-#else
- FatalError("Make sure you have quit the Mac OS X window server.\n");
-#endif
- }
-
- IOObjectRelease( service );
- IOObjectRelease( iter );
-
- // Setup the event queue in memory shared by the kernel and X server
- kr = IOHIDCreateSharedMemory( xfIOKitInputConnect,
- kIOHIDCurrentShmemVersion );
- kern_assert( kr );
-
- kr = IOConnectMapMemory( xfIOKitInputConnect, kIOHIDGlobalMemory,
- mach_task_self(), &shmem, &shmemSize,
- kIOMapAnywhere );
- kern_assert( kr );
-
- evg = (EvGlobals *)(shmem + ((EvOffsets *)shmem)->evGlobalsOffset);
-
- assert(sizeof(EvGlobals) == evg->structSize);
-
- NotificationPortRef = IONotificationPortCreate( masterPort );
-
- notificationPort = IONotificationPortGetMachPort(NotificationPortRef);
-
- kr = IOConnectSetNotificationPort( xfIOKitInputConnect,
- kIOHIDEventNotification,
- notificationPort, 0 );
- kern_assert( kr );
-
- evg->movedMask |= NX_MOUSEMOVEDMASK;
-
- // find number of framebuffers
- kr = IOServiceGetMatchingServices( masterPort,
- IOServiceMatching( IOFRAMEBUFFER_CONFORMSTO ),
- &fbIter );
- kern_assert( kr );
-
- darwinScreensFound = 0;
- while ((service = IOIteratorNext(fbIter))) {
- IOObjectRelease( service );
- darwinScreensFound++;
- }
- IOIteratorReset(fbIter);
-}
-
-
-/*
- * DarwinModeInitInput
- * One-time initialization of IOKit input support.
- */
-void DarwinModeInitInput(
- int argc,
- char **argv)
-{
- kern_return_t kr;
- int fd[2];
-
- kr = IOHIDSetEventsEnable(xfIOKitInputConnect, TRUE);
- kern_assert( kr );
-
- // Start event passing thread
- assert( pipe(fd) == 0 );
- darwinEventReadFD = fd[0];
- darwinEventWriteFD = fd[1];
- fcntl(darwinEventReadFD, F_SETFL, O_NONBLOCK);
- pthread_create(&inputThread, NULL,
- XFIOKitHIDThread, NULL);
-
-}
-
-
-/*
- * DarwinModeProcessEvent
- * Process IOKit specific events.
- */
-void DarwinModeProcessEvent(
- xEvent *xe)
-{
- // No mode specific events
- ErrorF("Unknown X event caught: %d\n", xe->u.u.type);
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKit.h b/nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKit.h
deleted file mode 100644
index 288063da1..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKit.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- xfIOKit.h
-
- IOKit specific functions and definitions
-*/
-/*
- * Copyright (c) 2001-2002 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/xfIOKit.h,v 1.10 2003/03/15 18:02:08 torrey Exp $ */
-
-#ifndef _XFIOKIT_H
-#define _XFIOKIT_H
-
-#include <pthread.h>
-#include <IOKit/graphics/IOFramebufferShared.h>
-#include <X11/Xproto.h>
-#include "screenint.h"
-#include "darwin.h"
-
-typedef struct {
- io_connect_t fbService;
- StdFBShmem_t *cursorShmem;
- unsigned char *framebuffer;
- unsigned char *shadowPtr;
-} XFIOKitScreenRec, *XFIOKitScreenPtr;
-
-#define XFIOKIT_SCREEN_PRIV(pScreen) \
- ((XFIOKitScreenPtr)pScreen->devPrivates[xfIOKitScreenIndex].ptr)
-
-extern int xfIOKitScreenIndex; // index into pScreen.devPrivates
-extern io_connect_t xfIOKitInputConnect;
-
-Bool XFIOKitInitCursor(ScreenPtr pScreen);
-
-#endif /* _XFIOKIT_H */
diff --git a/nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKitCursor.c b/nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKitCursor.c
deleted file mode 100644
index 69eb41d2f..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKitCursor.c
+++ /dev/null
@@ -1,735 +0,0 @@
-/**************************************************************
- *
- * Cursor support for Darwin X Server
- *
- * Three different cursor modes are possible:
- * X (0) - tracking via Darwin kernel,
- * display via X machine independent
- * Kernel (1) - tracking and display via Darwin kernel
- * (not currently supported)
- * Hardware (2) - tracking and display via hardware
- *
- * The X software cursor uses the Darwin software cursor
- * routines in IOFramebuffer.cpp to track the cursor, but
- * displays the cursor image using the X machine
- * independent display cursor routines in midispcur.c.
- *
- * The kernel cursor uses IOFramebuffer.cpp routines to
- * track and display the cursor. This gives better
- * performance as the display calls don't have to cross
- * the kernel boundary. Unfortunately, this mode has
- * synchronization issues with the user land X server
- * and isn't currently used.
- *
- * Hardware cursor support lets the hardware handle these
- * details.
- *
- * Kernel and hardware cursor mode only work for cursors
- * up to a certain size, currently 16x16 pixels. If a
- * bigger cursor is set, we fallback to X cursor mode.
- *
- * HISTORY:
- * 1.0 by Torrey T. Lyons, October 30, 2000
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2002 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/xfIOKitCursor.c,v 1.6 2002/12/10 00:00:39 torrey Exp $ */
-
-#include "scrnintstr.h"
-#include "cursorstr.h"
-#include "mipointrst.h"
-#include "micmap.h"
-#define NO_CFPLUGIN
-#include <IOKit/graphics/IOGraphicsLib.h>
-#include <IOKit/hidsystem/IOHIDLib.h>
-#include "darwin.h"
-#include "xfIOKit.h"
-
-#define DUMP_DARWIN_CURSOR FALSE
-
-#define CURSOR_PRIV(pScreen) \
- ((XFIOKitCursorScreenPtr)pScreen->devPrivates[darwinCursorScreenIndex].ptr)
-
-// The cursors format are documented in IOFramebufferShared.h.
-#define RGBto34WithGamma(red, green, blue) \
- ( 0x000F \
- | (((red) & 0xF) << 12) \
- | (((green) & 0xF) << 8) \
- | (((blue) & 0xF) << 4) )
-#define RGBto38WithGamma(red, green, blue) \
- ( 0xFF << 24 \
- | (((red) & 0xFF) << 16) \
- | (((green) & 0xFF) << 8) \
- | (((blue) & 0xFF)) )
-#define HighBitOf32 0x80000000
-
-typedef struct {
- Bool canHWCursor;
- short cursorMode;
- RecolorCursorProcPtr RecolorCursor;
- InstallColormapProcPtr InstallColormap;
- QueryBestSizeProcPtr QueryBestSize;
- miPointerSpriteFuncPtr spriteFuncs;
- ColormapPtr pInstalledMap;
-} XFIOKitCursorScreenRec, *XFIOKitCursorScreenPtr;
-
-static int darwinCursorScreenIndex = -1;
-static unsigned long darwinCursorGeneration = 0;
-
-/*
-===========================================================================
-
- Pointer sprite functions
-
-===========================================================================
-*/
-
-/*
- Realizing the Darwin hardware cursor (ie. converting from the
- X representation to the IOKit representation) is complicated
- by the fact that we have three different potential cursor
- formats to go to, one for each bit depth (8, 15, or 24).
- The IOKit formats are documented in IOFramebufferShared.h.
- X cursors are represented as two pieces, a source and a mask.
- The mask is a bitmap indicating which parts of the cursor are
- transparent and which parts are drawn. The source is a bitmap
- indicating which parts of the non-transparent portion of the the
- cursor should be painted in the foreground color and which should
- be painted in the background color. The bitmaps are given in
- 32-bit format with least significant byte and bit first.
- (This is opposite PowerPC Darwin.)
-*/
-
-typedef struct {
- unsigned char image[CURSORWIDTH*CURSORHEIGHT];
- unsigned char mask[CURSORWIDTH*CURSORHEIGHT];
-} cursorPrivRec, *cursorPrivPtr;
-
-/*
- * XFIOKitRealizeCursor8
- * Convert the X cursor representation to an 8-bit depth
- * format for Darwin. This function assumes the maximum cursor
- * width is a multiple of 8.
- */
-static Bool
-XFIOKitRealizeCursor8(
- ScreenPtr pScreen,
- CursorPtr pCursor)
-{
- cursorPrivPtr newCursor;
- unsigned char *newSourceP, *newMaskP;
- CARD32 *oldSourceP, *oldMaskP;
- xColorItem fgColor, bgColor;
- int index, x, y, rowPad;
- int cursorWidth, cursorHeight;
- ColormapPtr pmap;
-
- // check cursor size just to be sure
- cursorWidth = pCursor->bits->width;
- cursorHeight = pCursor->bits->height;
- if (cursorHeight > CURSORHEIGHT || cursorWidth > CURSORWIDTH)
- return FALSE;
-
- // get cursor colors in colormap
- index = pScreen->myNum;
- pmap = miInstalledMaps[index];
- if (!pmap) return FALSE;
-
- fgColor.red = pCursor->foreRed;
- fgColor.green = pCursor->foreGreen;
- fgColor.blue = pCursor->foreBlue;
- FakeAllocColor(pmap, &fgColor);
- bgColor.red = pCursor->backRed;
- bgColor.green = pCursor->backGreen;
- bgColor.blue = pCursor->backBlue;
- FakeAllocColor(pmap, &bgColor);
- FakeFreeColor(pmap, fgColor.pixel);
- FakeFreeColor(pmap, bgColor.pixel);
-
- // allocate memory for new cursor image
- newCursor = xalloc( sizeof(cursorPrivRec) );
- if (!newCursor)
- return FALSE;
- memset( newCursor->image, pScreen->blackPixel, CURSORWIDTH*CURSORHEIGHT );
- memset( newCursor->mask, 0, CURSORWIDTH*CURSORHEIGHT );
-
- // convert to 8-bit Darwin cursor format
- oldSourceP = (CARD32 *) pCursor->bits->source;
- oldMaskP = (CARD32 *) pCursor->bits->mask;
- newSourceP = newCursor->image;
- newMaskP = newCursor->mask;
- rowPad = CURSORWIDTH - cursorWidth;
-
- for (y = 0; y < cursorHeight; y++) {
- for (x = 0; x < cursorWidth; x++) {
- if (*oldSourceP & (HighBitOf32 >> x))
- *newSourceP = fgColor.pixel;
- else
- *newSourceP = bgColor.pixel;
- if (*oldMaskP & (HighBitOf32 >> x))
- *newMaskP = 255;
- else
- *newSourceP = pScreen->blackPixel;
- newSourceP++; newMaskP++;
- }
- oldSourceP++; oldMaskP++;
- newSourceP += rowPad; newMaskP += rowPad;
- }
-
- // save the result
- pCursor->devPriv[pScreen->myNum] = (pointer) newCursor;
- return TRUE;
-}
-
-
-/*
- * XFIOKitRealizeCursor15
- * Convert the X cursor representation to an 15-bit depth
- * format for Darwin.
- */
-static Bool
-XFIOKitRealizeCursor15(
- ScreenPtr pScreen,
- CursorPtr pCursor)
-{
- unsigned short *newCursor;
- unsigned short fgPixel, bgPixel;
- unsigned short *newSourceP;
- CARD32 *oldSourceP, *oldMaskP;
- int x, y, rowPad;
- int cursorWidth, cursorHeight;
-
- // check cursor size just to be sure
- cursorWidth = pCursor->bits->width;
- cursorHeight = pCursor->bits->height;
- if (cursorHeight > CURSORHEIGHT || cursorWidth > CURSORWIDTH)
- return FALSE;
-
- // allocate memory for new cursor image
- newCursor = xalloc( CURSORWIDTH*CURSORHEIGHT*sizeof(short) );
- if (!newCursor)
- return FALSE;
- memset( newCursor, 0, CURSORWIDTH*CURSORHEIGHT*sizeof(short) );
-
- // calculate pixel values
- fgPixel = RGBto34WithGamma( pCursor->foreRed, pCursor->foreGreen,
- pCursor->foreBlue );
- bgPixel = RGBto34WithGamma( pCursor->backRed, pCursor->backGreen,
- pCursor->backBlue );
-
- // convert to 15-bit Darwin cursor format
- oldSourceP = (CARD32 *) pCursor->bits->source;
- oldMaskP = (CARD32 *) pCursor->bits->mask;
- newSourceP = newCursor;
- rowPad = CURSORWIDTH - cursorWidth;
-
- for (y = 0; y < cursorHeight; y++) {
- for (x = 0; x < cursorWidth; x++) {
- if (*oldMaskP & (HighBitOf32 >> x)) {
- if (*oldSourceP & (HighBitOf32 >> x))
- *newSourceP = fgPixel;
- else
- *newSourceP = bgPixel;
- } else {
- *newSourceP = 0;
- }
- newSourceP++;
- }
- oldSourceP++; oldMaskP++;
- newSourceP += rowPad;
- }
-
-#if DUMP_DARWIN_CURSOR
- // Write out the cursor
- ErrorF("Cursor: 0x%x\n", pCursor);
- ErrorF("Width = %i, Height = %i, RowPad = %i\n", cursorWidth,
- cursorHeight, rowPad);
- for (y = 0; y < cursorHeight; y++) {
- newSourceP = newCursor + y*CURSORWIDTH;
- for (x = 0; x < cursorWidth; x++) {
- if (*newSourceP == fgPixel)
- ErrorF("x");
- else if (*newSourceP == bgPixel)
- ErrorF("o");
- else
- ErrorF(" ");
- newSourceP++;
- }
- ErrorF("\n");
- }
-#endif
-
- // save the result
- pCursor->devPriv[pScreen->myNum] = (pointer) newCursor;
- return TRUE;
-}
-
-
-/*
- * XFIOKitRealizeCursor24
- * Convert the X cursor representation to an 24-bit depth
- * format for Darwin. This function assumes the maximum cursor
- * width is a multiple of 8.
- */
-static Bool
-XFIOKitRealizeCursor24(
- ScreenPtr pScreen,
- CursorPtr pCursor)
-{
- unsigned int *newCursor;
- unsigned int fgPixel, bgPixel;
- unsigned int *newSourceP;
- CARD32 *oldSourceP, *oldMaskP;
- int x, y, rowPad;
- int cursorWidth, cursorHeight;
-
- // check cursor size just to be sure
- cursorWidth = pCursor->bits->width;
- cursorHeight = pCursor->bits->height;
- if (cursorHeight > CURSORHEIGHT || cursorWidth > CURSORWIDTH)
- return FALSE;
-
- // allocate memory for new cursor image
- newCursor = xalloc( CURSORWIDTH*CURSORHEIGHT*sizeof(int) );
- if (!newCursor)
- return FALSE;
- memset( newCursor, 0, CURSORWIDTH*CURSORHEIGHT*sizeof(int) );
-
- // calculate pixel values
- fgPixel = RGBto38WithGamma( pCursor->foreRed, pCursor->foreGreen,
- pCursor->foreBlue );
- bgPixel = RGBto38WithGamma( pCursor->backRed, pCursor->backGreen,
- pCursor->backBlue );
-
- // convert to 24-bit Darwin cursor format
- oldSourceP = (CARD32 *) pCursor->bits->source;
- oldMaskP = (CARD32 *) pCursor->bits->mask;
- newSourceP = newCursor;
- rowPad = CURSORWIDTH - cursorWidth;
-
- for (y = 0; y < cursorHeight; y++) {
- for (x = 0; x < cursorWidth; x++) {
- if (*oldMaskP & (HighBitOf32 >> x)) {
- if (*oldSourceP & (HighBitOf32 >> x))
- *newSourceP = fgPixel;
- else
- *newSourceP = bgPixel;
- } else {
- *newSourceP = 0;
- }
- newSourceP++;
- }
- oldSourceP++; oldMaskP++;
- newSourceP += rowPad;
- }
-
-#if DUMP_DARWIN_CURSOR
- // Write out the cursor
- ErrorF("Cursor: 0x%x\n", pCursor);
- ErrorF("Width = %i, Height = %i, RowPad = %i\n", cursorWidth,
- cursorHeight, rowPad);
- for (y = 0; y < cursorHeight; y++) {
- newSourceP = newCursor + y*CURSORWIDTH;
- for (x = 0; x < cursorWidth; x++) {
- if (*newSourceP == fgPixel)
- ErrorF("x");
- else if (*newSourceP == bgPixel)
- ErrorF("o");
- else
- ErrorF(" ");
- newSourceP++;
- }
- ErrorF("\n");
- }
-#endif
-
- // save the result
- pCursor->devPriv[pScreen->myNum] = (pointer) newCursor;
- return TRUE;
-}
-
-
-/*
- * XFIOKitRealizeCursor
- *
- */
-static Bool
-XFIOKitRealizeCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor)
-{
- Bool result;
- XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
- DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
-
- if ((pCursor->bits->height > CURSORHEIGHT) ||
- (pCursor->bits->width > CURSORWIDTH) ||
- // FIXME: this condition is not needed after kernel cursor works
- !ScreenPriv->canHWCursor) {
- result = (*ScreenPriv->spriteFuncs->RealizeCursor)(pScreen, pCursor);
- } else if (dfb->bitsPerPixel == 8) {
- result = XFIOKitRealizeCursor8(pScreen, pCursor);
- } else if (dfb->bitsPerPixel == 16) {
- result = XFIOKitRealizeCursor15(pScreen, pCursor);
- } else {
- result = XFIOKitRealizeCursor24(pScreen, pCursor);
- }
-
- return result;
-}
-
-
-/*
- * XFIOKitUnrealizeCursor
- *
- */
-static Bool
-XFIOKitUnrealizeCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor)
-{
- Bool result;
- XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- if ((pCursor->bits->height > CURSORHEIGHT) ||
- (pCursor->bits->width > CURSORWIDTH) ||
- // FIXME: this condition is not needed after kernel cursor works
- !ScreenPriv->canHWCursor) {
- result = (*ScreenPriv->spriteFuncs->UnrealizeCursor)(pScreen, pCursor);
- } else {
- xfree( pCursor->devPriv[pScreen->myNum] );
- result = TRUE;
- }
-
- return result;
-}
-
-
-/*
- * XFIOKitSetCursor
- * Set the cursor sprite and position
- * Use hardware cursor if possible
- */
-static void
-XFIOKitSetCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor,
- int x,
- int y)
-{
- kern_return_t kr;
- DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
- XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
- StdFBShmem_t *cshmem = iokitScreen->cursorShmem;
- XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- // are we supposed to remove the cursor?
- if (!pCursor) {
- if (ScreenPriv->cursorMode == 0)
- (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y);
- else {
- if (!cshmem->cursorShow) {
- cshmem->cursorShow++;
- if (cshmem->hardwareCursorActive) {
- kr = IOFBSetCursorVisible(iokitScreen->fbService, FALSE);
- kern_assert( kr );
- }
- }
- }
- return;
- }
-
- // can we use the kernel or hardware cursor?
- if ((pCursor->bits->height <= CURSORHEIGHT) &&
- (pCursor->bits->width <= CURSORWIDTH) &&
- // FIXME: condition not needed when kernel cursor works
- ScreenPriv->canHWCursor) {
-
- if (ScreenPriv->cursorMode == 0) // remove the X cursor
- (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y);
- ScreenPriv->cursorMode = 1; // kernel cursor
-
- // change the cursor image in shared memory
- if (dfb->bitsPerPixel == 8) {
- cursorPrivPtr newCursor =
- (cursorPrivPtr) pCursor->devPriv[pScreen->myNum];
- memcpy(cshmem->cursor.bw8.image[0], newCursor->image,
- CURSORWIDTH*CURSORHEIGHT);
- memcpy(cshmem->cursor.bw8.mask[0], newCursor->mask,
- CURSORWIDTH*CURSORHEIGHT);
- } else if (dfb->bitsPerPixel == 16) {
- unsigned short *newCursor =
- (unsigned short *) pCursor->devPriv[pScreen->myNum];
- memcpy(cshmem->cursor.rgb.image[0], newCursor,
- 2*CURSORWIDTH*CURSORHEIGHT);
- } else {
- unsigned int *newCursor =
- (unsigned int *) pCursor->devPriv[pScreen->myNum];
- memcpy(cshmem->cursor.rgb24.image[0], newCursor,
- 4*CURSORWIDTH*CURSORHEIGHT);
- }
-
- // FIXME: We always use a full size cursor, even if the image
- // is smaller because I couldn't get the padding to come out
- // right otherwise.
- cshmem->cursorSize[0].width = CURSORWIDTH;
- cshmem->cursorSize[0].height = CURSORHEIGHT;
- cshmem->hotSpot[0].x = pCursor->bits->xhot;
- cshmem->hotSpot[0].y = pCursor->bits->yhot;
-
- // try to use a hardware cursor
- if (ScreenPriv->canHWCursor) {
- kr = IOFBSetNewCursor(iokitScreen->fbService, 0, 0, 0);
- // FIXME: this is a fatal error without the kernel cursor
- kern_assert( kr );
-#if 0
- if (kr != KERN_SUCCESS) {
- ErrorF("Could not set new cursor with kernel return 0x%x.\n", kr);
- ScreenPriv->canHWCursor = FALSE;
- }
-#endif
- }
-
- // make the new cursor visible
- if (cshmem->cursorShow)
- cshmem->cursorShow--;
-
- if (!cshmem->cursorShow && ScreenPriv->canHWCursor) {
- kr = IOFBSetCursorVisible(iokitScreen->fbService, TRUE);
- // FIXME: this is a fatal error without the kernel cursor
- kern_assert( kr );
-#if 0
- if (kr != KERN_SUCCESS) {
- ErrorF("Couldn't set hardware cursor visible with kernel return 0x%x.\n", kr);
- ScreenPriv->canHWCursor = FALSE;
- } else
-#endif
- ScreenPriv->cursorMode = 2; // hardware cursor
- }
-
- return;
- }
-
- // otherwise we use a software cursor
- if (ScreenPriv->cursorMode) {
- /* remove the kernel or hardware cursor */
- XFIOKitSetCursor(pScreen, 0, x, y);
- }
-
- ScreenPriv->cursorMode = 0;
- (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, pCursor, x, y);
-}
-
-
-/*
- * XFIOKitMoveCursor
- * Move the cursor. This is a noop for a kernel or hardware cursor.
- */
-static void
-XFIOKitMoveCursor(
- ScreenPtr pScreen,
- int x,
- int y)
-{
- XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- // only the X cursor needs to be explicitly moved
- if (!ScreenPriv->cursorMode)
- (*ScreenPriv->spriteFuncs->MoveCursor)(pScreen, x, y);
-}
-
-static miPointerSpriteFuncRec darwinSpriteFuncsRec = {
- XFIOKitRealizeCursor,
- XFIOKitUnrealizeCursor,
- XFIOKitSetCursor,
- XFIOKitMoveCursor
-};
-
-
-/*
-===========================================================================
-
- Pointer screen functions
-
-===========================================================================
-*/
-
-/*
- * XFIOKitCursorOffScreen
- */
-static Bool XFIOKitCursorOffScreen(ScreenPtr *pScreen, int *x, int *y)
-{ return FALSE;
-}
-
-
-/*
- * XFIOKitCrossScreen
- */
-static void XFIOKitCrossScreen(ScreenPtr pScreen, Bool entering)
-{ return;
-}
-
-
-/*
- * XFIOKitWarpCursor
- * Change the cursor position without generating an event or motion history
- */
-static void
-XFIOKitWarpCursor(
- ScreenPtr pScreen,
- int x,
- int y)
-{
- kern_return_t kr;
-
- kr = IOHIDSetMouseLocation( xfIOKitInputConnect, x, y );
- if (kr != KERN_SUCCESS) {
- ErrorF("Could not set cursor position with kernel return 0x%x.\n", kr);
- }
- miPointerWarpCursor(pScreen, x, y);
-}
-
-static miPointerScreenFuncRec darwinScreenFuncsRec = {
- XFIOKitCursorOffScreen,
- XFIOKitCrossScreen,
- XFIOKitWarpCursor,
- DarwinEQPointerPost,
- DarwinEQSwitchScreen
-};
-
-
-/*
-===========================================================================
-
- Other screen functions
-
-===========================================================================
-*/
-
-/*
- * XFIOKitCursorQueryBestSize
- * Handle queries for best cursor size
- */
-static void
-XFIOKitCursorQueryBestSize(
- int class,
- unsigned short *width,
- unsigned short *height,
- ScreenPtr pScreen)
-{
- XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- if (class == CursorShape) {
- *width = CURSORWIDTH;
- *height = CURSORHEIGHT;
- } else
- (*ScreenPriv->QueryBestSize)(class, width, height, pScreen);
-}
-
-
-/*
- * XFIOKitInitCursor
- * Initialize cursor support
- */
-Bool
-XFIOKitInitCursor(
- ScreenPtr pScreen)
-{
- XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
- XFIOKitCursorScreenPtr ScreenPriv;
- miPointerScreenPtr PointPriv;
- kern_return_t kr;
-
- // start with no cursor displayed
- if (!iokitScreen->cursorShmem->cursorShow++) {
- if (iokitScreen->cursorShmem->hardwareCursorActive) {
- kr = IOFBSetCursorVisible(iokitScreen->fbService, FALSE);
- kern_assert( kr );
- }
- }
-
- // initialize software cursor handling (always needed as backup)
- if (!miDCInitialize(pScreen, &darwinScreenFuncsRec)) {
- return FALSE;
- }
-
- // allocate private storage for this screen's hardware cursor info
- if (darwinCursorGeneration != serverGeneration) {
- if ((darwinCursorScreenIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- darwinCursorGeneration = serverGeneration;
- }
-
- ScreenPriv = xcalloc( 1, sizeof(XFIOKitCursorScreenRec) );
- if (!ScreenPriv) return FALSE;
-
- pScreen->devPrivates[darwinCursorScreenIndex].ptr = (pointer) ScreenPriv;
-
- // check if a hardware cursor is supported
- if (!iokitScreen->cursorShmem->hardwareCursorCapable) {
- ScreenPriv->canHWCursor = FALSE;
- ErrorF("Hardware cursor not supported.\n");
- } else {
- // we need to make sure that the hardware cursor really works
- ScreenPriv->canHWCursor = TRUE;
- kr = IOFBSetNewCursor(iokitScreen->fbService, 0, 0, 0);
- if (kr != KERN_SUCCESS) {
- ErrorF("Could not set hardware cursor with kernel return 0x%x.\n", kr);
- ScreenPriv->canHWCursor = FALSE;
- }
- kr = IOFBSetCursorVisible(iokitScreen->fbService, TRUE);
- if (kr != KERN_SUCCESS) {
- ErrorF("Couldn't set hardware cursor visible with kernel return 0x%x.\n", kr);
- ScreenPriv->canHWCursor = FALSE;
- }
- IOFBSetCursorVisible(iokitScreen->fbService, FALSE);
- }
-
- ScreenPriv->cursorMode = 0;
- ScreenPriv->pInstalledMap = NULL;
-
- // override some screen procedures
- ScreenPriv->QueryBestSize = pScreen->QueryBestSize;
- pScreen->QueryBestSize = XFIOKitCursorQueryBestSize;
-// ScreenPriv->ConstrainCursor = pScreen->ConstrainCursor;
-// pScreen->ConstrainCursor = XFIOKitConstrainCursor;
-
- // initialize hardware cursor handling
- PointPriv = (miPointerScreenPtr)
- pScreen->devPrivates[miPointerScreenIndex].ptr;
-
- ScreenPriv->spriteFuncs = PointPriv->spriteFuncs;
- PointPriv->spriteFuncs = &darwinSpriteFuncsRec;
-
- /* Other routines that might be overridden */
-/*
- CursorLimitsProcPtr CursorLimits;
- RecolorCursorProcPtr RecolorCursor;
-*/
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKitStartup.c b/nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKitStartup.c
deleted file mode 100644
index 09c5daa1c..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/iokit/xfIOKitStartup.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/**************************************************************
- *
- * Startup code for the IOKit Darwin X Server
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2004 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/iokit/xfIOKitStartup.c,v 1.1 2003/05/14 05:27:56 torrey Exp $ */
-
-#include "darwin.h"
-#include "darwinKeyboard.h"
-#include "micmap.h"
-
-void GlxExtensionInit(void);
-void GlxWrapInitVisuals(miInitVisualsProcPtr *procPtr);
-
-
-/*
- * DarwinHandleGUI
- * This function is called first from main().
- * It does nothing for the IOKit X server.
- */
-void DarwinHandleGUI(
- int argc,
- char *argv[],
- char *envp[] )
-{
-}
-
-
-/*
- * DarwinGlxExtensionInit
- * Initialize the GLX extension.
- * Mesa is linked into the IOKit mode X server so we just call directly.
- */
-void DarwinGlxExtensionInit(void)
-{
- GlxExtensionInit();
-}
-
-
-/*
- * DarwinGlxWrapInitVisuals
- */
-void DarwinGlxWrapInitVisuals(
- miInitVisualsProcPtr *procPtr)
-{
- GlxWrapInitVisuals(procPtr);
-}
-
-
-/*
- * DarwinModeProcessArgument
- * Process IOKit specific command line arguments.
- */
-int DarwinModeProcessArgument(
- int argc,
- char *argv[],
- int i)
-{
-#ifdef DARWIN_WITH_QUARTZ
- // XDarwinStartup uses these arguments to indicate which X server
- // should be started. Ignore them here.
- if (!strcmp( argv[i], "-fullscreen" ) ||
- !strcmp( argv[i], "-rootless" ) ||
- !strcmp( argv[i], "-quartz" ))
- {
- return 1;
- }
-#else
- if (!strcmp( argv[i], "-fullscreen" ) ||
- !strcmp( argv[i], "-rootless" ) ||
- !strcmp( argv[i], "-quartz" ))
- {
- FatalError("Command line option %s is not available without Quartz "
- "support.\n", argv[i]);
- }
-#endif
-
- return 0;
-}
-
-
-/*
- * DarwinModeSystemKeymapSeed
- * Changes to NXKeyMapping are not tracked.
- */
-unsigned int
-DarwinModeSystemKeymapSeed(void)
-{
- return 0;
-}
-
-
-/*
- * DarwinModeReadSystemKeymap
- * IOKit has no alternative to NXKeyMapping API.
- */
-Bool DarwinModeReadSystemKeymap(
- darwinKeyboardInfo *info)
-{
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/Imakefile b/nx-X11/programs/Xserver/hw/darwin/quartz/Imakefile
deleted file mode 100644
index d12b04f6b..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/Imakefile
+++ /dev/null
@@ -1,113 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/quartz/Imakefile,v 1.12 2003/11/11 01:29:47 torrey Exp $
-
-#include <Server.tmpl>
-#define IHaveSubdirs
-
-SRCS = Preferences.m \
- XApplication.m \
- XServer.m \
- applewm.c \
- keysym2ucs.c \
- quartz.c \
- quartzAudio.c \
- quartzCocoa.m \
- quartzPasteboard.c \
- quartzKeyboard.c \
- quartzStartup.c \
- pseudoramiX.c
-
-OBJS = Preferences.o \
- XApplication.o \
- XServer.o \
- applewm.o \
- keysym2ucs.o \
- quartz.o \
- quartzAudio.o \
- quartzCocoa.o \
- quartzPasteboard.o \
- quartzKeyboard.o \
- quartzStartup.o \
- pseudoramiX.o
-
-INCLUDES = -I. -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(SERVERSRC)/render \
- -I$(SERVERSRC)/miext/shadow -I$(EXTINCSRC) -I$(SERVERSRC)/Xext \
- -I.. -I$(APPLEWMLIBSRC)
-
-#if defined(XorgCustomVersion) || defined(XFree86CustomVersion)
-# if defined(XorgCustomVersion)
-CUSTOMVERSION = XorgCustomVersion
-# else
-CUSTOMVERSION = XFree86CustomVersion
-# endif /* XorgCustomVersion */
-CUSTOMVERDEF = -DXORG_CUSTOM_VERSION='$(CUSTOMVERSION)'
-#endif /* XorgCustomVersion || XFree86CustomVersion */
-
-#if XFree86Devel
-BUILDSTYLE = -buildstyle Development
-DEBUGDEFINES = -DROOTLESSDEBUG
-#else
-BUILDSTYLE = -buildstyle Deployment
-#endif
-
-#if OSMajorVersion >= 7
-PROJ_TARGET = -project XDarwin.pbproj -target XDarwin
-#else
-PROJ_TARGET = -target XDarwin
-#endif
-
-#if (OSMajorVersion == 1 && OSMinorVersion >= 4) || OSMajorVersion >= 5
-QUARTZDEFINES = -DHAS_CG_MACH_PORT
-#endif
-
-#if HasXplugin
-XPRDEFINES = -DBUILD_XPR
-#endif
-
-#if OSMajorVersion >= 6
-KLDEFINES = -DHAS_KL_API
-#endif
-
-DEFINES = $(CUSTOMVERDEF) -DXBINDIR=$(BINDIR) -DXINITDIR=$(XINITDIR) \
- $(QUARTZDEFINES) $(DEBUGDEFINES) $(XPRDEFINES) $(KLDEFINES)
-EXTRAMANDEFS = -D__XBinDir__=$(BINDIR)
-#if NothingOutsideProjectRoot
-XDARWINROOT = $(BINDIR)
-#else
-XDARWINROOT = /Applications
-#endif
-
-#if HasXplugin
-SUBDIRS = cr fullscreen xpr
-#else
-SUBDIRS = cr fullscreen
-#endif
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(XQuartz,$(OBJS))
-
-AllTarget(XDarwinStartup)
-NormalProgramTarget(XDarwinStartup,XDarwinStartup.o, \
- NullParameter,NullParameter, \
- -framework CoreFoundation -framework ApplicationServices)
-InstallProgram(XDarwinStartup,$(BINDIR))
-install::
- -(cd $(DESTDIR)$(BINDIR); $(RM) X; $(LN) XDarwinStartup X)
-
-AllTarget(XDarwin)
-XDarwin:
- $(PROJ_BUILD) $(PROJ_TARGET) $(BUILDSTYLE)
-
-install::
- $(PROJ_BUILD) install $(PROJ_TARGET) $(BUILDSTYLE) \
- DSTROOT=$(DESTDIR)$(XDARWINROOT)
-
-InstallManPage(XDarwinStartup,$(MANDIR))
-
-clean::
- $(PROJ_BUILD) "clean" $(PROJ_TARGET) $(BUILDSTYLE)
-
-DependTarget()
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/Preferences.h b/nx-X11/programs/Xserver/hw/darwin/quartz/Preferences.h
deleted file mode 100644
index d8c3c2ea2..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/Preferences.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 2002-2003 Torrey T. Lyons. 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/Preferences.h,v 1.2 2003/01/15 02:34:05 torrey Exp $ */
-
-#import <Cocoa/Cocoa.h>
-
-@interface Preferences : NSObject
-{
- IBOutlet NSPanel *window;
- IBOutlet id displayField;
- IBOutlet id dockSwitchButton;
- IBOutlet id fakeButton;
- IBOutlet id button2ModifiersMatrix;
- IBOutlet id button3ModifiersMatrix;
- IBOutlet id switchKeyButton;
- IBOutlet id keymapFileField;
- IBOutlet id modeMatrix;
- IBOutlet id modeWindowButton;
- IBOutlet id startupHelpButton;
- IBOutlet id systemBeepButton;
- IBOutlet id mouseAccelChangeButton;
- IBOutlet id useXineramaButton;
- IBOutlet id addToPathButton;
- IBOutlet id addToPathField;
- IBOutlet id useDefaultShellMatrix;
- IBOutlet id useOtherShellField;
- IBOutlet id depthButton;
-
- BOOL isGettingKeyCode;
- int keyCode;
- int modifiers;
- NSMutableString *switchString;
-}
-
-- (IBAction)close:(id)sender;
-- (IBAction)pickFile:(id)sender;
-- (IBAction)saveChanges:(id)sender;
-- (IBAction)setKey:(id)sender;
-
-- (BOOL)sendEvent:(NSEvent *)anEvent;
-
-- (void)awakeFromNib;
-- (void)windowWillClose:(NSNotification *)aNotification;
-
-+ (void)setUseKeymapFile:(BOOL)newUseKeymapFile;
-+ (void)setKeymapFile:(NSString *)newFile;
-+ (void)setSwitchString:(NSString *)newString;
-+ (void)setKeyCode:(int)newKeyCode;
-+ (void)setModifiers:(int)newModifiers;
-+ (void)setDisplay:(int)newDisplay;
-+ (void)setDockSwitch:(BOOL)newDockSwitch;
-+ (void)setFakeButtons:(BOOL)newFakeButtons;
-+ (void)setButton2Mask:(int)newFakeMask;
-+ (void)setButton3Mask:(int)newFakeMask;
-+ (void)setMouseAccelChange:(BOOL)newMouseAccelChange;
-+ (void)setUseQDCursor:(int)newUseQDCursor;
-+ (void)setRootless:(BOOL)newRootless;
-+ (void)setUseAGL:(BOOL)newUseAGL;
-+ (void)setModeWindow:(BOOL)newModeWindow;
-+ (void)setStartupHelp:(BOOL)newStartupHelp;
-+ (void)setSystemBeep:(BOOL)newSystemBeep;
-+ (void)setEnableKeyEquivalents:(BOOL)newKeyEquivs;
-+ (void)setXinerama:(BOOL)newXinerama;
-+ (void)setAddToPath:(BOOL)newAddToPath;
-+ (void)setAddToPathString:(NSString *)newAddToPathString;
-+ (void)setUseDefaultShell:(BOOL)newUseDefaultShell;
-+ (void)setShellString:(NSString *)newShellString;
-+ (void)setDepth:(int)newDepth;
-+ (void)setDisplayModeBundles:(NSArray *)newBundles;
-+ (void)saveToDisk;
-
-+ (BOOL)useKeymapFile;
-+ (NSString *)keymapFile;
-+ (NSString *)switchString;
-+ (unsigned int)keyCode;
-+ (unsigned int)modifiers;
-+ (int)display;
-+ (BOOL)dockSwitch;
-+ (BOOL)fakeButtons;
-+ (int)button2Mask;
-+ (int)button3Mask;
-+ (BOOL)mouseAccelChange;
-+ (int)useQDCursor;
-+ (BOOL)rootless;
-+ (BOOL)useAGL;
-+ (BOOL)modeWindow;
-+ (BOOL)startupHelp;
-+ (BOOL)systemBeep;
-+ (BOOL)enableKeyEquivalents;
-+ (BOOL)xinerama;
-+ (BOOL)addToPath;
-+ (NSString *)addToPathString;
-+ (BOOL)useDefaultShell;
-+ (NSString *)shellString;
-+ (int)depth;
-+ (NSArray *)displayModeBundles;
-
-@end
-
-// Possible settings for useQDCursor
-enum {
- qdCursor_Never, // never use QuickDraw cursor
- qdCursor_Not8Bit, // don't try to use QuickDraw with 8-bit depth
- qdCursor_Always // always try to use QuickDraw cursor
-};
-
-// Possible settings for depth
-enum {
- depth_Current,
- depth_8Bit,
- depth_15Bit,
- depth_24Bit
-};
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/Preferences.m b/nx-X11/programs/Xserver/hw/darwin/quartz/Preferences.m
deleted file mode 100644
index 6c14f4982..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/Preferences.m
+++ /dev/null
@@ -1,597 +0,0 @@
-//
-// Preferences.m
-//
-// This class keeps track of the user preferences.
-//
-/*
- * Copyright (c) 2002-2004 Torrey T. Lyons. 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/Preferences.m,v 1.5 2004/06/08 22:58:10 torrey Exp $ */
-
-#import "quartzCommon.h"
-
-#define BOOL xBOOL
-#include "darwin.h"
-#undef BOOL
-
-#import "Preferences.h"
-
-#include <IOKit/hidsystem/IOLLEvent.h> // for modifier masks
-
-// Macros to build the path name
-#ifndef XBINDIR
-#define XBINDIR /usr/X11R6/bin
-#endif
-#define STR(s) #s
-#define XSTRPATH(s) STR(s)
-
-// Keys for user defaults dictionary
-static NSString *X11EnableKeyEquivalentsKey = @"EnableKeyEquivalents";
-
-
-@implementation Preferences
-
-+ (void)initialize
-{
- // Provide user defaults if needed
- NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
- [NSNumber numberWithInt:0], @"Display",
- @"YES", @"FakeButtons",
- [NSNumber numberWithInt:NX_COMMANDMASK], @"Button2Mask",
- [NSNumber numberWithInt:NX_ALTERNATEMASK], @"Button3Mask",
- NSLocalizedString(@"USA.keymapping",@""), @"KeymappingFile",
- @"YES", @"UseKeymappingFile",
- NSLocalizedString(@"Cmd-Opt-a",@""), @"SwitchString",
- @"YES", @"UseRootlessMode",
- @"YES", @"UseAGLforGLX",
- @"YES", @"ShowModePickWindow",
- @"YES", @"ShowStartupHelp",
- [NSNumber numberWithInt:0], @"SwitchKeyCode",
- [NSNumber numberWithInt:(NSCommandKeyMask | NSAlternateKeyMask)],
- @"SwitchModifiers", @"NO", @"UseSystemBeep",
- @"YES", X11EnableKeyEquivalentsKey,
- @"YES", @"DockSwitch",
- @"NO", @"AllowMouseAccelChange",
- [NSNumber numberWithInt:qdCursor_Not8Bit], @"UseQDCursor",
- @"YES", @"Xinerama",
- @"YES", @"AddToPath",
- [NSString stringWithCString:XSTRPATH(XBINDIR)], @"AddToPathString",
- @"YES", @"UseDefaultShell",
- @"/bin/tcsh", @"Shell",
- [NSNumber numberWithInt:depth_Current], @"Depth",
-#ifdef BUILD_XPR
- [NSArray arrayWithObjects:@"xpr.bundle", @"cr.bundle", nil],
-#else
- [NSArray arrayWithObjects:@"cr.bundle", nil],
-#endif
- @"DisplayModeBundles", nil];
-
- [super initialize];
- [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
-}
-
-// Initialize internal state info of switch key button
-- (void)initSwitchKey
-{
- keyCode = [Preferences keyCode];
- modifiers = [Preferences modifiers];
- [switchString setString:[Preferences switchString]];
-}
-
-- (id)init
-{
- self = [super init];
-
- isGettingKeyCode=NO;
- switchString=[[NSMutableString alloc] init];
- [self initSwitchKey];
-
- return self;
-}
-
-// Set a modifiers checkbox matrix to match a modifier mask
-- (void)resetMatrix:(NSMatrix *)aMatrix withMask:(int)aMask
-{
- [aMatrix setState:(aMask & NX_SHIFTMASK) atRow:0 column:0];
- [aMatrix setState:(aMask & NX_CONTROLMASK) atRow:1 column:0];
- [aMatrix setState:(aMask & NX_COMMANDMASK) atRow:2 column:0];
- [aMatrix setState:(aMask & NX_ALTERNATEMASK) atRow:3 column:0];
- [aMatrix setState:(aMask & NX_SECONDARYFNMASK) atRow:4 column:0];
-}
-
-// Generate a modifiers mask from a modifiers checkbox matrix
-- (int)getMaskFromMatrix:(NSMatrix *)aMatrix
-{
- int theMask = 0;
-
- if ([[aMatrix cellAtRow:0 column:0] state])
- theMask |= NX_SHIFTMASK;
- if ([[aMatrix cellAtRow:1 column:0] state])
- theMask |= NX_CONTROLMASK;
- if ([[aMatrix cellAtRow:2 column:0] state])
- theMask |= NX_COMMANDMASK;
- if ([[aMatrix cellAtRow:3 column:0] state])
- theMask |= NX_ALTERNATEMASK;
- if ([[aMatrix cellAtRow:4 column:0] state])
- theMask |= NX_SECONDARYFNMASK;
-
- return theMask;
-}
-
-// Set the window controls to the state in user defaults
-- (void)resetWindow
-{
- if ([Preferences keymapFile] == nil)
- [keymapFileField setStringValue:@" "];
- else
- [keymapFileField setStringValue:[Preferences keymapFile]];
-
- if ([Preferences switchString] == nil)
- [switchKeyButton setTitle:@"--"];
- else
- [switchKeyButton setTitle:[Preferences switchString]];
-
- [displayField setIntValue:[Preferences display]];
- [dockSwitchButton setIntValue:[Preferences dockSwitch]];
- [fakeButton setIntValue:[Preferences fakeButtons]];
- [self resetMatrix:button2ModifiersMatrix
- withMask:[Preferences button2Mask]];
- [self resetMatrix:button3ModifiersMatrix
- withMask:[Preferences button3Mask]];
- [modeMatrix setState:[Preferences rootless] atRow:0 column:1];
- [startupHelpButton setIntValue:[Preferences startupHelp]];
- [modeWindowButton setIntValue:[Preferences modeWindow]];
- [systemBeepButton setIntValue:[Preferences systemBeep]];
- [mouseAccelChangeButton setIntValue:[Preferences mouseAccelChange]];
- [useXineramaButton setIntValue:[Preferences xinerama]];
- [addToPathButton setIntValue:[Preferences addToPath]];
- [addToPathField setStringValue:[Preferences addToPathString]];
- [useDefaultShellMatrix setState:![Preferences useDefaultShell]
- atRow:1 column:0];
- [useOtherShellField setStringValue:[Preferences shellString]];
- [depthButton selectItemAtIndex:[Preferences depth]];
-}
-
-- (void)awakeFromNib
-{
- [self resetWindow];
-}
-
-// Preference window delegate
-- (void)windowWillClose:(NSNotification *)aNotification
-{
- [self resetWindow];
- [self initSwitchKey];
-}
-
-// User cancelled the changes
-- (IBAction)close:(id)sender
-{
- [window orderOut:nil];
- [self resetWindow]; // reset window controls
- [self initSwitchKey]; // reset switch key state
-}
-
-// Pick keymapping file
-- (IBAction)pickFile:(id)sender
-{
- int result;
- NSArray *fileTypes = [NSArray arrayWithObject:@"keymapping"];
- NSOpenPanel *oPanel = [NSOpenPanel openPanel];
-
- [oPanel setAllowsMultipleSelection:NO];
- result = [oPanel runModalForDirectory:@"/System/Library/Keyboards"
- file:nil types:fileTypes];
- if (result == NSOKButton) {
- [keymapFileField setStringValue:[oPanel filename]];
- }
-}
-
-// User saved changes
-- (IBAction)saveChanges:(id)sender
-{
- [Preferences setKeyCode:keyCode];
- [Preferences setModifiers:modifiers];
- [Preferences setSwitchString:switchString];
- [Preferences setKeymapFile:[keymapFileField stringValue]];
- [Preferences setUseKeymapFile:YES];
- [Preferences setDisplay:[displayField intValue]];
- [Preferences setDockSwitch:[dockSwitchButton intValue]];
- [Preferences setFakeButtons:[fakeButton intValue]];
- [Preferences setButton2Mask:
- [self getMaskFromMatrix:button2ModifiersMatrix]];
- [Preferences setButton3Mask:
- [self getMaskFromMatrix:button3ModifiersMatrix]];
- [Preferences setRootless:[[modeMatrix cellAtRow:0 column:1] state]];
- [Preferences setModeWindow:[modeWindowButton intValue]];
- [Preferences setStartupHelp:[startupHelpButton intValue]];
- [Preferences setSystemBeep:[systemBeepButton intValue]];
- [Preferences setMouseAccelChange:[mouseAccelChangeButton intValue]];
- [Preferences setXinerama:[useXineramaButton intValue]];
- [Preferences setAddToPath:[addToPathButton intValue]];
- [Preferences setAddToPathString:[addToPathField stringValue]];
- [Preferences setUseDefaultShell:
- [[useDefaultShellMatrix cellAtRow:0 column:0] state]];
- [Preferences setShellString:[useOtherShellField stringValue]];
- [Preferences setDepth:[depthButton indexOfSelectedItem]];
- [Preferences saveToDisk];
-
- [window orderOut:nil];
-}
-
-- (IBAction)setKey:(id)sender
-{
- [switchKeyButton setTitle:NSLocalizedString(@"Press key",@"")];
- isGettingKeyCode=YES;
- [switchString setString:@""];
-}
-
-- (BOOL)sendEvent:(NSEvent *)anEvent
-{
- if(isGettingKeyCode) {
- if([anEvent type]==NSKeyDown) // wait for keyup
- return YES;
- if([anEvent type]!=NSKeyUp)
- return NO;
-
- if([anEvent modifierFlags] & NSCommandKeyMask)
- [switchString appendString:@"Cmd-"];
- if([anEvent modifierFlags] & NSControlKeyMask)
- [switchString appendString:@"Ctrl-"];
- if([anEvent modifierFlags] & NSAlternateKeyMask)
- [switchString appendString:@"Opt-"];
- if([anEvent modifierFlags] & NSNumericPadKeyMask) // doesn't work
- [switchString appendString:@"Num-"];
- if([anEvent modifierFlags] & NSHelpKeyMask)
- [switchString appendString:@"Help-"];
- if([anEvent modifierFlags] & NSFunctionKeyMask) // powerbooks only
- [switchString appendString:@"Fn-"];
-
- [switchString appendString:[anEvent charactersIgnoringModifiers]];
- [switchKeyButton setTitle:switchString];
-
- keyCode = [anEvent keyCode];
- modifiers = [anEvent modifierFlags];
- isGettingKeyCode=NO;
-
- return YES;
- }
- return NO;
-}
-
-+ (void)setKeymapFile:(NSString *)newFile
-{
- [[NSUserDefaults standardUserDefaults] setObject:newFile
- forKey:@"KeymappingFile"];
-}
-
-+ (void)setUseKeymapFile:(BOOL)newUseKeymapFile
-{
- [[NSUserDefaults standardUserDefaults] setBool:newUseKeymapFile
- forKey:@"UseKeymappingFile"];
-}
-
-+ (void)setSwitchString:(NSString *)newString
-{
- [[NSUserDefaults standardUserDefaults] setObject:newString
- forKey:@"SwitchString"];
-}
-
-+ (void)setKeyCode:(int)newKeyCode
-{
- [[NSUserDefaults standardUserDefaults] setInteger:newKeyCode
- forKey:@"SwitchKeyCode"];
-}
-
-+ (void)setModifiers:(int)newModifiers
-{
- [[NSUserDefaults standardUserDefaults] setInteger:newModifiers
- forKey:@"SwitchModifiers"];
-}
-
-+ (void)setDisplay:(int)newDisplay
-{
- [[NSUserDefaults standardUserDefaults] setInteger:newDisplay
- forKey:@"Display"];
-}
-
-+ (void)setDockSwitch:(BOOL)newDockSwitch
-{
- [[NSUserDefaults standardUserDefaults] setBool:newDockSwitch
- forKey:@"DockSwitch"];
-}
-
-+ (void)setFakeButtons:(BOOL)newFakeButtons
-{
- [[NSUserDefaults standardUserDefaults] setBool:newFakeButtons
- forKey:@"FakeButtons"];
- // Update the setting used by the X server thread
- darwinFakeButtons = newFakeButtons;
-}
-
-+ (void)setButton2Mask:(int)newFakeMask
-{
- [[NSUserDefaults standardUserDefaults] setInteger:newFakeMask
- forKey:@"Button2Mask"];
- // Update the setting used by the X server thread
- darwinFakeMouse2Mask = newFakeMask;
-}
-
-+ (void)setButton3Mask:(int)newFakeMask
-{
- [[NSUserDefaults standardUserDefaults] setInteger:newFakeMask
- forKey:@"Button3Mask"];
- // Update the setting used by the X server thread
- darwinFakeMouse3Mask = newFakeMask;
-}
-
-+ (void)setMouseAccelChange:(BOOL)newMouseAccelChange
-{
- [[NSUserDefaults standardUserDefaults] setBool:newMouseAccelChange
- forKey:@"AllowMouseAccelChange"];
- // Update the setting used by the X server thread
- darwinMouseAccelChange = newMouseAccelChange;
-}
-
-+ (void)setUseQDCursor:(int)newUseQDCursor
-{
- [[NSUserDefaults standardUserDefaults] setInteger:newUseQDCursor
- forKey:@"UseQDCursor"];
-}
-
-+ (void)setModeWindow:(BOOL)newModeWindow
-{
- [[NSUserDefaults standardUserDefaults] setBool:newModeWindow
- forKey:@"ShowModePickWindow"];
-}
-
-+ (void)setRootless:(BOOL)newRootless
-{
- [[NSUserDefaults standardUserDefaults] setBool:newRootless
- forKey:@"UseRootlessMode"];
-}
-
-+ (void)setUseAGL:(BOOL)newUseAGL
-{
- [[NSUserDefaults standardUserDefaults] setBool:newUseAGL
- forKey:@"UseAGLforGLX"];
-}
-
-+ (void)setStartupHelp:(BOOL)newStartupHelp
-{
- [[NSUserDefaults standardUserDefaults] setBool:newStartupHelp
- forKey:@"ShowStartupHelp"];
-}
-
-+ (void)setSystemBeep:(BOOL)newSystemBeep
-{
- [[NSUserDefaults standardUserDefaults] setBool:newSystemBeep
- forKey:@"UseSystemBeep"];
- // Update the setting used by the X server thread
- quartzUseSysBeep = newSystemBeep;
-}
-
-+ (void)setEnableKeyEquivalents:(BOOL)newKeyEquivs
-{
- [[NSUserDefaults standardUserDefaults] setBool:newKeyEquivs
- forKey:X11EnableKeyEquivalentsKey];
- // Update the setting used by the X server thread
- quartzEnableKeyEquivalents = newKeyEquivs;
-}
-
-+ (void)setXinerama:(BOOL)newXinerama
-{
- [[NSUserDefaults standardUserDefaults] setBool:newXinerama
- forKey:@"Xinerama"];
-}
-
-+ (void)setAddToPath:(BOOL)newAddToPath
-{
- [[NSUserDefaults standardUserDefaults] setBool:newAddToPath
- forKey:@"AddToPath"];
-}
-
-+ (void)setAddToPathString:(NSString *)newAddToPathString
-{
- [[NSUserDefaults standardUserDefaults] setObject:newAddToPathString
- forKey:@"AddToPathString"];
-}
-
-+ (void)setUseDefaultShell:(BOOL)newUseDefaultShell
-{
- [[NSUserDefaults standardUserDefaults] setBool:newUseDefaultShell
- forKey:@"UseDefaultShell"];
-}
-
-+ (void)setShellString:(NSString *)newShellString
-{
- [[NSUserDefaults standardUserDefaults] setObject:newShellString
- forKey:@"Shell"];
-}
-
-+ (void)setDepth:(int)newDepth
-{
- [[NSUserDefaults standardUserDefaults] setInteger:newDepth
- forKey:@"Depth"];
-}
-
-+ (void)setDisplayModeBundles:(NSArray *)newBundles
-{
- [[NSUserDefaults standardUserDefaults] setObject:newBundles
- forKey:@"DisplayModeBundles"];
-}
-
-+ (void)saveToDisk
-{
- [[NSUserDefaults standardUserDefaults] synchronize];
-}
-
-+ (BOOL)useKeymapFile
-{
- return [[NSUserDefaults standardUserDefaults]
- boolForKey:@"UseKeymappingFile"];
-}
-
-+ (NSString *)keymapFile
-{
- return [[NSUserDefaults standardUserDefaults]
- stringForKey:@"KeymappingFile"];
-}
-
-+ (NSString *)switchString
-{
- return [[NSUserDefaults standardUserDefaults]
- stringForKey:@"SwitchString"];
-}
-
-+ (unsigned int)keyCode
-{
- return [[NSUserDefaults standardUserDefaults]
- integerForKey:@"SwitchKeyCode"];
-}
-
-+ (unsigned int)modifiers
-{
- return [[NSUserDefaults standardUserDefaults]
- integerForKey:@"SwitchModifiers"];
-}
-
-+ (int)display
-{
- return [[NSUserDefaults standardUserDefaults]
- integerForKey:@"Display"];
-}
-
-+ (BOOL)dockSwitch
-{
- return [[NSUserDefaults standardUserDefaults] boolForKey:@"DockSwitch"];
-}
-
-+ (BOOL)fakeButtons
-{
- return [[NSUserDefaults standardUserDefaults] boolForKey:@"FakeButtons"];
-}
-
-+ (int)button2Mask
-{
- return [[NSUserDefaults standardUserDefaults]
- integerForKey:@"Button2Mask"];
-}
-
-+ (int)button3Mask
-{
- return [[NSUserDefaults standardUserDefaults]
- integerForKey:@"Button3Mask"];
-}
-
-+ (BOOL)mouseAccelChange
-{
- return [[NSUserDefaults standardUserDefaults]
- boolForKey:@"AllowMouseAccelChange"];
-}
-
-+ (int)useQDCursor
-{
- return [[NSUserDefaults standardUserDefaults]
- integerForKey:@"UseQDCursor"];
-}
-
-+ (BOOL)rootless
-{
- return [[NSUserDefaults standardUserDefaults]
- boolForKey:@"UseRootlessMode"];
-}
-
-+ (BOOL)useAGL
-{
- return [[NSUserDefaults standardUserDefaults]
- boolForKey:@"UseAGLforGLX"];
-}
-
-+ (BOOL)modeWindow
-{
- return [[NSUserDefaults standardUserDefaults]
- boolForKey:@"ShowModePickWindow"];
-}
-
-+ (BOOL)startupHelp
-{
- return [[NSUserDefaults standardUserDefaults]
- boolForKey:@"ShowStartupHelp"];
-}
-
-+ (BOOL)systemBeep
-{
- return [[NSUserDefaults standardUserDefaults] boolForKey:@"UseSystemBeep"];
-}
-
-+ (BOOL)enableKeyEquivalents
-{
- return [[NSUserDefaults standardUserDefaults] boolForKey:X11EnableKeyEquivalentsKey];
-}
-
-+ (BOOL)xinerama
-{
- return [[NSUserDefaults standardUserDefaults] boolForKey:@"Xinerama"];
-}
-
-+ (BOOL)addToPath
-{
- return [[NSUserDefaults standardUserDefaults] boolForKey:@"AddToPath"];
-}
-
-+ (NSString *)addToPathString
-{
- return [[NSUserDefaults standardUserDefaults]
- stringForKey:@"AddToPathString"];
-}
-
-+ (BOOL)useDefaultShell
-{
- return [[NSUserDefaults standardUserDefaults]
- boolForKey:@"UseDefaultShell"];
-}
-
-+ (NSString *)shellString
-{
- return [[NSUserDefaults standardUserDefaults]
- stringForKey:@"Shell"];
-}
-
-+ (int)depth
-{
- return [[NSUserDefaults standardUserDefaults]
- integerForKey:@"Depth"];
-}
-
-+ (NSArray *)displayModeBundles
-{
- return [[NSUserDefaults standardUserDefaults]
- objectForKey:@"DisplayModeBundles"];
-}
-
-@end
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/XApplication.h b/nx-X11/programs/Xserver/hw/darwin/quartz/XApplication.h
deleted file mode 100644
index a2622e060..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/XApplication.h
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// XApplication.h
-//
-// Created by Andreas Monitzer on January 6, 2001.
-//
-/*
- * Copyright (c) 2001 Andreas Monitzer. 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-/* $XFree86: $ */
-
-#import <Cocoa/Cocoa.h>
-
-#import "XServer.h"
-#import "Preferences.h"
-
-@interface XApplication : NSApplication {
- IBOutlet XServer *xserver;
- IBOutlet Preferences *preferences;
-}
-
-- (void)sendEvent:(NSEvent *)anEvent;
-
-@end
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/XApplication.m b/nx-X11/programs/Xserver/hw/darwin/quartz/XApplication.m
deleted file mode 100644
index e0ee8d9c6..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/XApplication.m
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// XApplication.m
-//
-// Created by Andreas Monitzer on January 6, 2001.
-//
-/*
- * Copyright (c) 2001 Andreas Monitzer. 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-/* $XFree86: $ */
-
-#import "XApplication.h"
-
-
-@implementation XApplication
-
-- (void)sendEvent:(NSEvent *)anEvent {
- if (![xserver translateEvent:anEvent]) {
- if (![preferences sendEvent:anEvent])
- [super sendEvent:anEvent];
- }
-}
-
-@end
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj b/nx-X11/programs/Xserver/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj
deleted file mode 100644
index 90002db56..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj
+++ /dev/null
@@ -1,2519 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 39;
- objects = {
- 01279092000747AA0A000002 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.objc;
- path = XServer.m;
- refType = 4;
- sourceTree = "<group>";
- };
- 0127909600074AF60A000002 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.objc;
- path = XApplication.m;
- refType = 4;
- sourceTree = "<group>";
- };
- 0127909800074B1A0A000002 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = XApplication.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 015698ED003DF345CE6F79C2 = {
- isa = PBXFileReference;
- lastKnownFileType = image.icns;
- path = XDarwin.icns;
- refType = 4;
- sourceTree = "<group>";
- };
- 0157A37D002CF6D7CE6F79C2 = {
- children = (
- F533214601A4B45401000001,
- 0157A37E002CF6D7CE6F79C2,
- F58D65DF018F79B101000001,
- F533213D0193CBE001000001,
- 43B962E200617B93416877C2,
- F5ACD263C5BE031F01000001,
- F51BF62E02026E3501000001,
- F5ACD25CC5B5E96601000001,
- F587E16401924C6901000001,
- );
- isa = PBXVariantGroup;
- name = Credits.rtf;
- path = "";
- refType = 4;
- sourceTree = "<group>";
- };
- 0157A37E002CF6D7CE6F79C2 = {
- isa = PBXFileReference;
- lastKnownFileType = text.rtf;
- name = English;
- path = English.lproj/Credits.rtf;
- refType = 4;
- sourceTree = "<group>";
- };
- 015EDCEA004203A8CE6F79C2 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = IOKit.framework;
- path = /System/Library/Frameworks/IOKit.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- 018F40F2003E1902CE6F79C2 = {
- children = (
- 018F40F3003E1916CE6F79C2,
- 021D6BA9003E1BACCE6F79C2,
- 3E74E03600863F047F000001,
- F5A94EF10314BAC70100011B,
- 018F40F6003E1974CE6F79C2,
- 6E5F5F0005537A1A008FEAD7,
- );
- isa = PBXGroup;
- name = "X Server";
- path = ..;
- refType = 4;
- sourceTree = "<group>";
- };
- 018F40F3003E1916CE6F79C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = darwin.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 018F40F6003E1974CE6F79C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = darwinKeyboard.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 018F40F8003E1979CE6F79C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = quartz.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 018F40FA003E197ECE6F79C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = quartz.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 018F40FC003E1983CE6F79C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = xfIOKit.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 018F40FE003E1988CE6F79C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = xfIOKit.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 018F4100003E19E4CE6F79C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = xfIOKitCursor.c;
- refType = 4;
- sourceTree = "<group>";
- };
-//010
-//011
-//012
-//013
-//014
-//020
-//021
-//022
-//023
-//024
- 021D6BA9003E1BACCE6F79C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = darwin.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 02A1FEA6006D34BE416877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = xfIOKitStartup.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 02A1FEA8006D38F0416877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = quartzStartup.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 02E03CA000348209CE6F79C2 = {
- children = (
- F533214701A4B48301000001,
- 02E03CA100348209CE6F79C2,
- F58D65E0018F79C001000001,
- F533213E0193CBF401000001,
- 43B962E300617B93416877C2,
- F5ACD268C5BE046401000001,
- F51BF62F02026E5C01000001,
- F5ACD261C5B5EA2001000001,
- F587E16501924C7401000001,
- );
- isa = PBXVariantGroup;
- name = XDarwinHelp.html;
- path = "";
- refType = 4;
- sourceTree = "<group>";
- };
- 02E03CA100348209CE6F79C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.html;
- name = English;
- path = English.lproj/XDarwinHelp.html;
- refType = 4;
- sourceTree = "<group>";
- };
-//020
-//021
-//022
-//023
-//024
-//030
-//031
-//032
-//033
-//034
- 0338412F0083BFE57F000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = quartzCursor.h;
- refType = 4;
- sourceTree = "<group>";
- };
-//030
-//031
-//032
-//033
-//034
-//040
-//041
-//042
-//043
-//044
- 04329610000763920A000002 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.objc;
- path = Preferences.m;
- refType = 4;
- sourceTree = "<group>";
- };
- 04329611000763920A000002 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = Preferences.h;
- refType = 4;
- sourceTree = "<group>";
- };
-//040
-//041
-//042
-//043
-//044
-//080
-//081
-//082
-//083
-//084
- 080E96DDFE201D6D7F000001 = {
- children = (
- 04329610000763920A000002,
- 04329611000763920A000002,
- 0127909600074AF60A000002,
- 0127909800074B1A0A000002,
- 01279092000747AA0A000002,
- 1C4A3109004D8F24CE6F79C2,
- );
- isa = PBXGroup;
- name = Classes;
- refType = 4;
- sourceTree = "<group>";
- };
- 089C165CFE840E0CC02AAC07 = {
- children = (
- F533214301A4B3F001000001,
- 089C165DFE840E0CC02AAC07,
- F58D65DD018F798F01000001,
- F533213A0193CBA201000001,
- 43B962E100617B49416877C2,
- F5ACD269C5BE049301000001,
- F51BF62B02026DDA01000001,
- F5ACD262C5B5EA4D01000001,
- F587E16101924C2F01000001,
- );
- isa = PBXVariantGroup;
- name = InfoPlist.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- 089C165DFE840E0CC02AAC07 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = English;
- path = English.lproj/InfoPlist.strings;
- refType = 4;
- sourceTree = "<group>";
- };
-//080
-//081
-//082
-//083
-//084
-//0A0
-//0A1
-//0A2
-//0A3
-//0A4
- 0A79E19E004499A1CE6F79C2 = {
- explicitFileType = wrapper.application;
- isa = PBXFileReference;
- path = XDarwin.app;
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- 0A79E19F004499A1CE6F79C2 = {
- buildPhases = (
- 0A79E1A0004499A1CE6F79C2,
- 0A79E1A1004499A1CE6F79C2,
- 0A79E1A2004499A1CE6F79C2,
- 0A79E1A3004499A1CE6F79C2,
- 0A79E1A4004499A1CE6F79C2,
- );
- buildSettings = {
- INSTALL_PATH = /;
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = XDarwin;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- WRAPPER_EXTENSION = app;
- };
- dependencies = (
- 6EF065C903D4F0CA006877C2,
- 6EF065C703D4EE19006877C2,
- 6E11A986048BDFFB006877C2,
- 6E7904110500F33B00EEC080,
- );
- isa = PBXApplicationTarget;
- name = XDarwin;
- productInstallPath = /;
- productName = XDarwin;
- productReference = 0A79E19E004499A1CE6F79C2;
- productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleDocumentTypes</key>
- <array>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>x11app</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>X11 Application</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>****</string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>tool</string>
- <string>*</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>UNIX Application</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>****</string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- </dict>
- </array>
- <key>CFBundleExecutable</key>
- <string>XDarwin</string>
- <key>CFBundleGetInfoString</key>
- <string>XDarwin 1.4.0, X.Org Foundation</string>
- <key>CFBundleIconFile</key>
- <string>XDarwin.icns</string>
- <key>CFBundleIdentifier</key>
- <string>org.xfree86.XDarwin</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>XDarwin</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>XDarwin 1.4.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string></string>
- <key>NSHelpFile</key>
- <string>XDarwinHelp.html</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>XApplication</string>
-</dict>
-</plist>
-";
- };
- 0A79E1A0004499A1CE6F79C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 0A79E1A1004499A1CE6F79C2 = {
- buildActionMask = 2147483647;
- files = (
- 0A79E1A600449EB2CE6F79C2,
- 0A79E1A700449EB2CE6F79C2,
- 0A79E1A800449EB2CE6F79C2,
- 0A79E1A900449EB2CE6F79C2,
- 0A79E1AA00449EB2CE6F79C2,
- 1220774500712D2D416877C2,
- F54BF6ED017D506E01000001,
- );
- isa = PBXResourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 0A79E1A2004499A1CE6F79C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 0A79E1A3004499A1CE6F79C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 0A79E1A4004499A1CE6F79C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXRezBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 0A79E1A600449EB2CE6F79C2 = {
- fileRef = 29B97318FDCFA39411CA2CEA;
- isa = PBXBuildFile;
- settings = {
- };
- };
- 0A79E1A700449EB2CE6F79C2 = {
- fileRef = 089C165CFE840E0CC02AAC07;
- isa = PBXBuildFile;
- settings = {
- };
- };
- 0A79E1A800449EB2CE6F79C2 = {
- fileRef = 0157A37D002CF6D7CE6F79C2;
- isa = PBXBuildFile;
- settings = {
- };
- };
- 0A79E1A900449EB2CE6F79C2 = {
- fileRef = 02E03CA000348209CE6F79C2;
- isa = PBXBuildFile;
- settings = {
- };
- };
- 0A79E1AA00449EB2CE6F79C2 = {
- fileRef = 015698ED003DF345CE6F79C2;
- isa = PBXBuildFile;
- settings = {
- };
- };
-//0A0
-//0A1
-//0A2
-//0A3
-//0A4
-//100
-//101
-//102
-//103
-//104
- 1058C7A0FEA54F0111CA2CBB = {
- children = (
- F53321400193CCF001000001,
- 1BE4F84D0006C9890A000002,
- 1058C7A1FEA54F0111CA2CBB,
- F53321410193CCF001000001,
- 015EDCEA004203A8CE6F79C2,
- );
- isa = PBXGroup;
- name = "Linked Frameworks";
- refType = 4;
- sourceTree = "<group>";
- };
- 1058C7A1FEA54F0111CA2CBB = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = Cocoa.framework;
- path = /System/Library/Frameworks/Cocoa.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- 1058C7A2FEA54F0111CA2CBB = {
- children = (
- 29B97325FDCFA39411CA2CEA,
- 29B97324FDCFA39411CA2CEA,
- );
- isa = PBXGroup;
- name = "Other Frameworks";
- refType = 4;
- sourceTree = "<group>";
- };
-//100
-//101
-//102
-//103
-//104
-//120
-//121
-//122
-//123
-//124
- 1220774300712D2D416877C2 = {
- children = (
- F533214501A4B42501000001,
- 1220774400712D2D416877C2,
- F58D65DE018F79A001000001,
- F533213C0193CBC901000001,
- 1220774600712D75416877C2,
- F5ACD266C5BE03C501000001,
- F51BF62D02026E1C01000001,
- F5ACD25FC5B5E9AA01000001,
- F587E16301924C5E01000001,
- );
- isa = PBXVariantGroup;
- name = Localizable.strings;
- path = "";
- refType = 4;
- sourceTree = "<group>";
- };
- 1220774400712D2D416877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = English;
- path = English.lproj/Localizable.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- 1220774500712D2D416877C2 = {
- fileRef = 1220774300712D2D416877C2;
- isa = PBXBuildFile;
- settings = {
- };
- };
- 1220774600712D75416877C2 = {
- fileEncoding = 10;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = Japanese;
- path = Japanese.lproj/Localizable.strings;
- refType = 4;
- sourceTree = "<group>";
- };
-//120
-//121
-//122
-//123
-//124
-//170
-//171
-//172
-//173
-//174
- 170DFAFF00729A35416877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = XDarwinStartup.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 170DFB0000729C86416877C2 = {
- children = (
- 018F40FC003E1983CE6F79C2,
- 018F40FE003E1988CE6F79C2,
- 018F4100003E19E4CE6F79C2,
- 02A1FEA6006D34BE416877C2,
- );
- isa = PBXGroup;
- name = IOKit;
- path = ../iokit;
- refType = 4;
- sourceTree = "<group>";
- };
-//170
-//171
-//172
-//173
-//174
-//190
-//191
-//192
-//193
-//194
- 19C28FACFE9D520D11CA2CBB = {
- children = (
- 0A79E19E004499A1CE6F79C2,
- 6EF7C58703D3BC6D00000104,
- 6EF065C603D4EE19006877C2,
- 6E11A985048BDFEE006877C2,
- 6E7904100500F05600EEC080,
- );
- isa = PBXGroup;
- name = Products;
- refType = 4;
- sourceTree = "<group>";
- };
-//190
-//191
-//192
-//193
-//194
-//1B0
-//1B1
-//1B2
-//1B3
-//1B4
- 1BD8DE4200B8A3567F000001 = {
- children = (
- F533214401A4B40F01000001,
- 1BD8DE4300B8A3567F000001,
- F58D65DC018F794D01000001,
- F533213B0193CBB401000001,
- 1BD8DE4700B8A3C77F000001,
- F5ACD264C5BE035B01000001,
- F51BF62C02026E0601000001,
- F5ACD25DC5B5E97701000001,
- F587E16201924C5301000001,
- );
- isa = PBXVariantGroup;
- name = InfoPlist.strings.cpp;
- path = "";
- refType = 4;
- sourceTree = "<group>";
- };
- 1BD8DE4300B8A3567F000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = English;
- path = English.lproj/InfoPlist.strings.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- 1BD8DE4400B8A38E7F000001 = {
- children = (
- F533214801A4B4D701000001,
- 1BD8DE4500B8A38E7F000001,
- F58D65E1018F79E001000001,
- F533213F0193CC2501000001,
- 1BD8DE4800B8A4167F000001,
- F5ACD267C5BE03FC01000001,
- F51BF63002026E8D01000001,
- F5ACD260C5B5E9DF01000001,
- F587E16601924C9D01000001,
- );
- isa = PBXVariantGroup;
- name = XDarwinHelp.html.cpp;
- path = "";
- refType = 4;
- sourceTree = "<group>";
- };
- 1BD8DE4500B8A38E7F000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = English;
- path = English.lproj/XDarwinHelp.html.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- 1BD8DE4700B8A3C77F000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = Japanese;
- path = Japanese.lproj/InfoPlist.strings.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- 1BD8DE4800B8A4167F000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = Japanese;
- path = Japanese.lproj/XDarwinHelp.html.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- 1BE4F84D0006C9890A000002 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = Carbon.framework;
- path = /System/Library/Frameworks/Carbon.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
-//1B0
-//1B1
-//1B2
-//1B3
-//1B4
-//1C0
-//1C1
-//1C2
-//1C3
-//1C4
- 1C4A3109004D8F24CE6F79C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = XServer.h;
- refType = 4;
- sourceTree = "<group>";
- };
-//1C0
-//1C1
-//1C2
-//1C3
-//1C4
-//230
-//231
-//232
-//233
-//234
- 237A34C10076E37E7F000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = quartzAudio.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 237A34C20076E37E7F000001 = {
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- OPTIMIZATION_CFLAGS = "-O0";
- ZERO_LINK = YES;
- };
- isa = PBXBuildStyle;
- name = Development;
- };
- 237A34C30076E37E7F000001 = {
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- ZERO_LINK = NO;
- };
- isa = PBXBuildStyle;
- name = Deployment;
- };
- 237A34C40076F4F07F000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = quartzAudio.h;
- refType = 4;
- sourceTree = "<group>";
- };
-//230
-//231
-//232
-//233
-//234
-//290
-//291
-//292
-//293
-//294
- 29B97313FDCFA39411CA2CEA = {
- buildSettings = {
- };
- buildStyles = (
- 237A34C20076E37E7F000001,
- 237A34C30076E37E7F000001,
- );
- hasScannedForEncodings = 1;
- isa = PBXProject;
- knownRegions = (
- English,
- Japanese,
- French,
- German,
- Swedish,
- Dutch,
- Spanish,
- ko,
- Portuguese,
- );
- mainGroup = 29B97314FDCFA39411CA2CEA;
- projectDirPath = "";
- targets = (
- 0A79E19F004499A1CE6F79C2,
- 6EF7C58603D3BC6D00000104,
- 6E11A984048BDFEE006877C2,
- 6EF065C503D4EE19006877C2,
- 6E79040F0500F05600EEC080,
- );
- };
- 29B97314FDCFA39411CA2CEA = {
- children = (
- 080E96DDFE201D6D7F000001,
- 018F40F2003E1902CE6F79C2,
- 170DFB0000729C86416877C2,
- 43B962CE00617089416877C2,
- F5614B3D025112D901000114,
- 6EC4A64C042A9597006877C2,
- 32FEE13C00E07C3E7F000001,
- 6EE1214104968658006877C2,
- 6EC4A66D042A97FC006877C2,
- 29B97315FDCFA39411CA2CEA,
- 29B97317FDCFA39411CA2CEA,
- 29B97323FDCFA39411CA2CEA,
- 19C28FACFE9D520D11CA2CBB,
- );
- isa = PBXGroup;
- name = "Xmaster-Cocoa";
- path = "";
- refType = 4;
- sourceTree = "<group>";
- };
- 29B97315FDCFA39411CA2CEA = {
- children = (
- 170DFAFF00729A35416877C2,
- );
- isa = PBXGroup;
- name = "Other Sources";
- path = "";
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- 29B97317FDCFA39411CA2CEA = {
- children = (
- 29B97318FDCFA39411CA2CEA,
- 089C165CFE840E0CC02AAC07,
- 1BD8DE4200B8A3567F000001,
- 1220774300712D2D416877C2,
- 0157A37D002CF6D7CE6F79C2,
- 02E03CA000348209CE6F79C2,
- 1BD8DE4400B8A38E7F000001,
- 015698ED003DF345CE6F79C2,
- F54BF6EA017D500901000001,
- F54BF6EC017D506E01000001,
- );
- isa = PBXGroup;
- name = Resources;
- path = ../bundle;
- refType = 4;
- sourceTree = "<group>";
- };
- 29B97318FDCFA39411CA2CEA = {
- children = (
- F533214201A4B3CE01000001,
- 29B97319FDCFA39411CA2CEA,
- F58D65DB018F793801000001,
- F53321390193CB6A01000001,
- 43B962E000617B49416877C2,
- F5ACD265C5BE038601000001,
- F51BF62A02026DAF01000001,
- F5ACD25EC5B5E98D01000001,
- F587E16001924C1D01000001,
- );
- isa = PBXVariantGroup;
- name = MainMenu.nib;
- path = "";
- refType = 4;
- sourceTree = "<group>";
- };
- 29B97319FDCFA39411CA2CEA = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.nib;
- name = English;
- path = English.lproj/MainMenu.nib;
- refType = 4;
- sourceTree = "<group>";
- };
- 29B97323FDCFA39411CA2CEA = {
- children = (
- 1058C7A0FEA54F0111CA2CBB,
- 1058C7A2FEA54F0111CA2CBB,
- );
- isa = PBXGroup;
- name = Frameworks;
- path = "";
- refType = 4;
- sourceTree = "<group>";
- };
- 29B97324FDCFA39411CA2CEA = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = AppKit.framework;
- path = /System/Library/Frameworks/AppKit.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- 29B97325FDCFA39411CA2CEA = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = Foundation.framework;
- path = /System/Library/Frameworks/Foundation.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
-//290
-//291
-//292
-//293
-//294
-//320
-//321
-//322
-//323
-//324
- 32FEE13C00E07C3E7F000001 = {
- children = (
- F5269C2D01D5BC3501000001,
- F5269C2E01D5BC3501000001,
- );
- isa = PBXGroup;
- name = "Old Cocoa Imp";
- path = "";
- refType = 4;
- sourceTree = "<group>";
- };
-//320
-//321
-//322
-//323
-//324
-//350
-//351
-//352
-//353
-//354
- 3576829A0077B8F17F000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = quartzCursor.c;
- refType = 4;
- sourceTree = "<group>";
- };
-//350
-//351
-//352
-//353
-//354
-//3E0
-//3E1
-//3E2
-//3E3
-//3E4
- 3E74E03600863F047F000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = darwinClut8.h;
- refType = 4;
- sourceTree = "<group>";
- };
-//3E0
-//3E1
-//3E2
-//3E3
-//3E4
-//430
-//431
-//432
-//433
-//434
- 43B962CE00617089416877C2 = {
- children = (
- 6EE9B21604E859C200CA7FEA,
- 6E97A0F505079F9100B8294C,
- 6E5F5F030553815A008FEAD7,
- 6E5F5F040553815A008FEAD7,
- 018F40F8003E1979CE6F79C2,
- 018F40FA003E197ECE6F79C2,
- 237A34C10076E37E7F000001,
- 237A34C40076F4F07F000001,
- 43B962CF00617089416877C2,
- F5582948015DAD3B01000001,
- 6E5F5F0105537A5F008FEAD7,
- 43B962D000617089416877C2,
- 43B962D100617089416877C2,
- 02A1FEA8006D38F0416877C2,
- );
- isa = PBXGroup;
- name = Quartz;
- path = "";
- refType = 4;
- sourceTree = "<group>";
- };
- 43B962CF00617089416877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.objc;
- path = quartzCocoa.m;
- refType = 4;
- sourceTree = "<group>";
- };
- 43B962D000617089416877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = quartzPasteboard.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 43B962D100617089416877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = quartzPasteboard.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 43B962E000617B49416877C2 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.nib;
- name = Japanese;
- path = Japanese.lproj/MainMenu.nib;
- refType = 4;
- sourceTree = "<group>";
- };
- 43B962E100617B49416877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = Japanese;
- path = Japanese.lproj/InfoPlist.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- 43B962E200617B93416877C2 = {
- isa = PBXFileReference;
- lastKnownFileType = text.rtf;
- name = Japanese;
- path = Japanese.lproj/Credits.rtf;
- refType = 4;
- sourceTree = "<group>";
- };
- 43B962E300617B93416877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.html;
- name = Japanese;
- path = Japanese.lproj/XDarwinHelp.html;
- refType = 4;
- sourceTree = "<group>";
- };
-//430
-//431
-//432
-//433
-//434
-//6E0
-//6E1
-//6E2
-//6E3
-//6E4
- 6E11A97F048BDFEE006877C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6E11A980048BDFEE006877C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXResourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6E11A981048BDFEE006877C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6E11A982048BDFEE006877C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6E11A983048BDFEE006877C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXRezBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6E11A984048BDFEE006877C2 = {
- buildPhases = (
- 6E11A97F048BDFEE006877C2,
- 6E11A980048BDFEE006877C2,
- 6E11A981048BDFEE006877C2,
- 6E11A982048BDFEE006877C2,
- 6E11A983048BDFEE006877C2,
- );
- buildSettings = {
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = glxCGL;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- WRAPPER_EXTENSION = bundle;
- };
- dependencies = (
- );
- isa = PBXBundleTarget;
- name = glxCGL;
- productInstallPath = "$(USER_LIBRARY_DIR)/Bundles";
- productName = glxCGL;
- productReference = 6E11A985048BDFEE006877C2;
- productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>glxCGL</string>
- <key>CFBundleGetInfoString</key>
- <string></string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string></string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>GLX bundle using Apple's OpenGL</string>
- <key>CFBundlePackageType</key>
- <string>BNDL</string>
- <key>CFBundleShortVersionString</key>
- <string>0.1</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>0.1</string>
-</dict>
-</plist>
-";
- };
- 6E11A985048BDFEE006877C2 = {
- explicitFileType = wrapper.cfbundle;
- isa = PBXFileReference;
- path = glxCGL.bundle;
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- 6E11A986048BDFFB006877C2 = {
- isa = PBXTargetDependency;
- target = 6E11A984048BDFEE006877C2;
- targetProxy = 6E4CAF650702464F001A7398;
- };
- 6E4CAF630702464F001A7398 = {
- containerPortal = 29B97313FDCFA39411CA2CEA;
- isa = PBXContainerItemProxy;
- proxyType = 1;
- remoteGlobalIDString = 6EF7C58603D3BC6D00000104;
- remoteInfo = glxAGL;
- };
- 6E4CAF640702464F001A7398 = {
- containerPortal = 29B97313FDCFA39411CA2CEA;
- isa = PBXContainerItemProxy;
- proxyType = 1;
- remoteGlobalIDString = 6E79040F0500F05600EEC080;
- remoteInfo = xpr;
- };
- 6E4CAF650702464F001A7398 = {
- containerPortal = 29B97313FDCFA39411CA2CEA;
- isa = PBXContainerItemProxy;
- proxyType = 1;
- remoteGlobalIDString = 6E11A984048BDFEE006877C2;
- remoteInfo = glxCGL;
- };
- 6E4CAF660702464F001A7398 = {
- containerPortal = 29B97313FDCFA39411CA2CEA;
- isa = PBXContainerItemProxy;
- proxyType = 1;
- remoteGlobalIDString = 6EF065C503D4EE19006877C2;
- remoteInfo = glxMesa;
- };
- 6E5F5F0005537A1A008FEAD7 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = darwinKeyboard.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E5F5F0105537A5F008FEAD7 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = quartzKeyboard.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E5F5F030553815A008FEAD7 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = keysym2ucs.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E5F5F040553815A008FEAD7 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = keysym2ucs.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E6656EC048832CF006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = "x-hook.c";
- refType = 4;
- sourceTree = "<group>";
- };
- 6E6656ED048832CF006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = "x-hook.h";
- refType = 4;
- sourceTree = "<group>";
- };
- 6E6656F0048832EC006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = dri.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E6656F1048832EC006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = dri.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E6656F2048832EC006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = dristruct.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E6656F3048832F9006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = appledri.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E79040104FD5ED900EEC080 = {
- children = (
- 6E79040204FD5EDA00EEC080,
- 6E79040304FD5EDA00EEC080,
- 6E79040404FD5EDA00EEC080,
- );
- isa = PBXGroup;
- name = "Safe Alpha";
- path = safeAlpha;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E79040204FD5EDA00EEC080 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = safeAlpha.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E79040304FD5EDA00EEC080 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = safeAlphaPicture.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E79040404FD5EDA00EEC080 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = safeAlphaWindow.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E79040A0500F05600EEC080 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6E79040B0500F05600EEC080 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXResourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6E79040C0500F05600EEC080 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6E79040D0500F05600EEC080 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6E79040E0500F05600EEC080 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXRezBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6E79040F0500F05600EEC080 = {
- buildPhases = (
- 6E79040A0500F05600EEC080,
- 6E79040B0500F05600EEC080,
- 6E79040C0500F05600EEC080,
- 6E79040D0500F05600EEC080,
- 6E79040E0500F05600EEC080,
- );
- buildSettings = {
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = xpr;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- WRAPPER_EXTENSION = bundle;
- };
- dependencies = (
- );
- isa = PBXBundleTarget;
- name = xpr;
- productInstallPath = "$(USER_LIBRARY_DIR)/Bundles";
- productName = xpr;
- productReference = 6E7904100500F05600EEC080;
- productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>xpr</string>
- <key>CFBundleGetInfoString</key>
- <string></string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string></string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>Xplugin rootless implementation</string>
- <key>CFBundlePackageType</key>
- <string>BNDL</string>
- <key>CFBundleShortVersionString</key>
- <string>0.1</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>0.1</string>
-</dict>
-</plist>
-";
- };
- 6E7904100500F05600EEC080 = {
- explicitFileType = wrapper.cfbundle;
- isa = PBXFileReference;
- path = xpr.bundle;
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- 6E7904110500F33B00EEC080 = {
- isa = PBXTargetDependency;
- target = 6E79040F0500F05600EEC080;
- targetProxy = 6E4CAF640702464F001A7398;
- };
- 6E97A0F2050798B100B8294C = {
- fileEncoding = 4;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = xprAppleWM.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E97A0F305079B6500B8294C = {
- fileEncoding = 4;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.objc;
- path = crAppleWM.m;
- refType = 4;
- sourceTree = "<group>";
- };
- 6E97A0F505079F9100B8294C = {
- fileEncoding = 4;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = applewmExt.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EA0B3AF0544A9CC006877C2 = {
- children = (
- 6EA0B3B00544A9CC006877C2,
- 6EA0B3B10544A9CC006877C2,
- 6EA0B3B20544A9CC006877C2,
- 6EA0B3B30544A9CC006877C2,
- 6EA0B3B40544A9CC006877C2,
- 6EA0B3B50544A9CC006877C2,
- 6EA0B3B60544A9CC006877C2,
- 6EA0B3B70544A9CC006877C2,
- );
- isa = PBXGroup;
- name = Acceleration;
- path = accel;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EA0B3B00544A9CC006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = rlAccel.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EA0B3B10544A9CC006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = rlBlt.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EA0B3B20544A9CC006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = rlCopy.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EA0B3B30544A9CC006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = rlFill.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EA0B3B40544A9CC006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = rlFillRect.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EA0B3B50544A9CC006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = rlFillSpans.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EA0B3B60544A9CC006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = rlGlyph.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EA0B3B70544A9CC006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = rlSolid.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EA8EEC80445E25C006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = rootlessConfig.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EC4A64C042A9597006877C2 = {
- children = (
- 6EC4A65D042A9654006877C2,
- 6EC4A65E042A9654006877C2,
- 6EC4A65F042A9654006877C2,
- 6EA8EEC80445E25C006877C2,
- 6EC4A661042A9654006877C2,
- 6EC4A662042A9654006877C2,
- 6EC4A660042A9654006877C2,
- 6EC4A663042A9654006877C2,
- 6EC4A664042A9654006877C2,
- 6EA0B3AF0544A9CC006877C2,
- 6E79040104FD5ED900EEC080,
- );
- isa = PBXGroup;
- name = Rootless;
- path = ../../../miext/rootless;
- refType = 2;
- sourceTree = SOURCE_ROOT;
- };
- 6EC4A65D042A9654006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = rootless.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EC4A65E042A9654006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = rootlessCommon.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EC4A65F042A9654006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = rootlessCommon.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EC4A660042A9654006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = rootlessWindow.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EC4A661042A9654006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = rootlessScreen.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EC4A662042A9654006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = rootlessWindow.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EC4A663042A9654006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = rootlessGC.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EC4A664042A9654006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = rootlessValTree.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EC4A66D042A97FC006877C2 = {
- children = (
- 6EF471A004478DE0006877C2,
- 6E6656F3048832F9006877C2,
- 6E6656F0048832EC006877C2,
- 6E6656F1048832EC006877C2,
- 6E6656F2048832EC006877C2,
- 6ECF218404589E4D006877C2,
- 6E97A0F2050798B100B8294C,
- 6ECF218604589F40006877C2,
- 6EF4719E04478B08006877C2,
- 6EDDB2DF04508B2C006877C2,
- 6EF471A204479263006877C2,
- 6EF471A404479263006877C2,
- 6E6656EC048832CF006877C2,
- 6E6656ED048832CF006877C2,
- 6EF471A504479263006877C2,
- 6EF471A304479263006877C2,
- );
- isa = PBXGroup;
- path = xpr;
- refType = 4;
- sourceTree = "<group>";
- };
- 6ECF218404589E4D006877C2 = {
- fileEncoding = 4;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = xpr.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6ECF218604589F40006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = xprCursor.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EDDB2DF04508B2C006877C2 = {
- fileEncoding = 4;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = xprScreen.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EE1214104968658006877C2 = {
- children = (
- 6EE1214304968692006877C2,
- 6EE1214404968692006877C2,
- 6EE1214204968692006877C2,
- 6E97A0F305079B6500B8294C,
- 6EE1214504968692006877C2,
- 6EE1214604968692006877C2,
- );
- isa = PBXGroup;
- path = cr;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EE1214204968692006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = cr.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EE1214304968692006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.objc;
- path = XView.m;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EE1214404968692006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = XView.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EE1214504968692006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.objc;
- path = crFrame.m;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EE1214604968692006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.objc;
- path = crScreen.m;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EE9B21604E859C200CA7FEA = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = applewm.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EF065C003D4EE19006877C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6EF065C103D4EE19006877C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXResourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6EF065C203D4EE19006877C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6EF065C303D4EE19006877C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6EF065C403D4EE19006877C2 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXRezBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6EF065C503D4EE19006877C2 = {
- buildPhases = (
- 6EF065C003D4EE19006877C2,
- 6EF065C103D4EE19006877C2,
- 6EF065C203D4EE19006877C2,
- 6EF065C303D4EE19006877C2,
- 6EF065C403D4EE19006877C2,
- );
- buildSettings = {
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = glxMesa;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- WRAPPER_EXTENSION = bundle;
- };
- dependencies = (
- );
- isa = PBXBundleTarget;
- name = glxMesa;
- productInstallPath = "$(USER_LIBRARY_DIR)/Bundles";
- productName = glxMesa;
- productReference = 6EF065C603D4EE19006877C2;
- productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>glxMesa</string>
- <key>CFBundleGetInfoString</key>
- <string></string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string></string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>GLX bundle with Mesa</string>
- <key>CFBundlePackageType</key>
- <string>BNDL</string>
- <key>CFBundleShortVersionString</key>
- <string>0.1</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>0.1</string>
-</dict>
-</plist>
-";
- };
- 6EF065C603D4EE19006877C2 = {
- explicitFileType = wrapper.cfbundle;
- isa = PBXFileReference;
- path = glxMesa.bundle;
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- 6EF065C703D4EE19006877C2 = {
- isa = PBXTargetDependency;
- target = 6EF065C503D4EE19006877C2;
- targetProxy = 6E4CAF660702464F001A7398;
- };
- 6EF065C903D4F0CA006877C2 = {
- isa = PBXTargetDependency;
- target = 6EF7C58603D3BC6D00000104;
- targetProxy = 6E4CAF630702464F001A7398;
- };
- 6EF4719E04478B08006877C2 = {
- fileEncoding = 4;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = xprFrame.c;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EF471A004478DE0006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = Xplugin.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 6EF471A204479263006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = "x-hash.c";
- refType = 4;
- sourceTree = "<group>";
- };
- 6EF471A304479263006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = "x-list.h";
- refType = 4;
- sourceTree = "<group>";
- };
- 6EF471A404479263006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = "x-hash.h";
- refType = 4;
- sourceTree = "<group>";
- };
- 6EF471A504479263006877C2 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = "x-list.c";
- refType = 4;
- sourceTree = "<group>";
- };
- 6EF7C58103D3BC6D00000104 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXHeadersBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6EF7C58203D3BC6D00000104 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXResourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6EF7C58303D3BC6D00000104 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXSourcesBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6EF7C58403D3BC6D00000104 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXFrameworksBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6EF7C58503D3BC6D00000104 = {
- buildActionMask = 2147483647;
- files = (
- );
- isa = PBXRezBuildPhase;
- runOnlyForDeploymentPostprocessing = 0;
- };
- 6EF7C58603D3BC6D00000104 = {
- buildPhases = (
- 6EF7C58103D3BC6D00000104,
- 6EF7C58203D3BC6D00000104,
- 6EF7C58303D3BC6D00000104,
- 6EF7C58403D3BC6D00000104,
- 6EF7C58503D3BC6D00000104,
- );
- buildSettings = {
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = glxAGL;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
- WRAPPER_EXTENSION = bundle;
- };
- dependencies = (
- );
- isa = PBXBundleTarget;
- name = glxAGL;
- productName = glxAGL;
- productReference = 6EF7C58703D3BC6D00000104;
- productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>glxAGL</string>
- <key>CFBundleGetInfoString</key>
- <string></string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string></string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>GLX bundle using AGL framework</string>
- <key>CFBundlePackageType</key>
- <string>BNDL</string>
- <key>CFBundleShortVersionString</key>
- <string>0.1</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>0.1</string>
-</dict>
-</plist>
-";
- };
- 6EF7C58703D3BC6D00000104 = {
- explicitFileType = wrapper.cfbundle;
- isa = PBXFileReference;
- path = glxAGL.bundle;
- refType = 3;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
-//6E0
-//6E1
-//6E2
-//6E3
-//6E4
-//F50
-//F51
-//F52
-//F53
-//F54
- F51BF62A02026DAF01000001 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.nib;
- name = Portuguese;
- path = Portuguese.lproj/MainMenu.nib;
- refType = 4;
- sourceTree = "<group>";
- };
- F51BF62B02026DDA01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = Portuguese;
- path = Portuguese.lproj/InfoPlist.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F51BF62C02026E0601000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = Portuguese;
- path = Portuguese.lproj/InfoPlist.strings.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F51BF62D02026E1C01000001 = {
- fileEncoding = 10;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = Portuguese;
- path = Portuguese.lproj/Localizable.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F51BF62E02026E3501000001 = {
- isa = PBXFileReference;
- lastKnownFileType = text.rtf;
- name = Portuguese;
- path = Portuguese.lproj/Credits.rtf;
- refType = 4;
- sourceTree = "<group>";
- };
- F51BF62F02026E5C01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.html;
- name = Portuguese;
- path = Portuguese.lproj/XDarwinHelp.html;
- refType = 4;
- sourceTree = "<group>";
- };
- F51BF63002026E8D01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = Portuguese;
- path = Portuguese.lproj/XDarwinHelp.html.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F5269C2D01D5BC3501000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = pseudoramiX.c;
- refType = 4;
- sourceTree = "<group>";
- };
- F5269C2E01D5BC3501000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = pseudoramiX.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F53321390193CB6A01000001 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.nib;
- name = German;
- path = German.lproj/MainMenu.nib;
- refType = 4;
- sourceTree = "<group>";
- };
- F533213A0193CBA201000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = German;
- path = German.lproj/InfoPlist.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F533213B0193CBB401000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = German;
- path = German.lproj/InfoPlist.strings.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F533213C0193CBC901000001 = {
- fileEncoding = 10;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = German;
- path = German.lproj/Localizable.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F533213D0193CBE001000001 = {
- isa = PBXFileReference;
- lastKnownFileType = text.rtf;
- name = German;
- path = German.lproj/Credits.rtf;
- refType = 4;
- sourceTree = "<group>";
- };
- F533213E0193CBF401000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.html;
- name = German;
- path = German.lproj/XDarwinHelp.html;
- refType = 4;
- sourceTree = "<group>";
- };
- F533213F0193CC2501000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = German;
- path = German.lproj/XDarwinHelp.html.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F53321400193CCF001000001 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = ApplicationServices.framework;
- path = /System/Library/Frameworks/ApplicationServices.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- F53321410193CCF001000001 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = CoreAudio.framework;
- path = /System/Library/Frameworks/CoreAudio.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- F533214201A4B3CE01000001 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.nib;
- name = Dutch;
- path = Dutch.lproj/MainMenu.nib;
- refType = 4;
- sourceTree = "<group>";
- };
- F533214301A4B3F001000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = Dutch;
- path = Dutch.lproj/InfoPlist.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F533214401A4B40F01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = Dutch;
- path = Dutch.lproj/InfoPlist.strings.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F533214501A4B42501000001 = {
- fileEncoding = 10;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = Dutch;
- path = Dutch.lproj/Localizable.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F533214601A4B45401000001 = {
- isa = PBXFileReference;
- lastKnownFileType = text.rtf;
- name = Dutch;
- path = Dutch.lproj/Credits.rtf;
- refType = 4;
- sourceTree = "<group>";
- };
- F533214701A4B48301000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.html;
- name = Dutch;
- path = Dutch.lproj/XDarwinHelp.html;
- refType = 4;
- sourceTree = "<group>";
- };
- F533214801A4B4D701000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = Dutch;
- path = Dutch.lproj/XDarwinHelp.html.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F54BF6EA017D500901000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- path = startXClients.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F54BF6EC017D506E01000001 = {
- isa = PBXFileReference;
- lastKnownFileType = text.script.sh;
- path = startXClients;
- refType = 4;
- sourceTree = "<group>";
- };
- F54BF6ED017D506E01000001 = {
- fileRef = F54BF6EC017D506E01000001;
- isa = PBXBuildFile;
- settings = {
- };
- };
- F5582948015DAD3B01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- path = quartzCommon.h;
- refType = 4;
- sourceTree = "<group>";
- };
- F5614B3B0251124C01000114 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = fullscreen.c;
- refType = 4;
- sourceTree = "<group>";
- };
- F5614B3D025112D901000114 = {
- children = (
- F5614B3B0251124C01000114,
- 3576829A0077B8F17F000001,
- 0338412F0083BFE57F000001,
- );
- isa = PBXGroup;
- path = fullscreen;
- refType = 4;
- sourceTree = "<group>";
- };
- F587E16001924C1D01000001 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.nib;
- name = Swedish;
- path = Swedish.lproj/MainMenu.nib;
- refType = 4;
- sourceTree = "<group>";
- };
- F587E16101924C2F01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = Swedish;
- path = Swedish.lproj/InfoPlist.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F587E16201924C5301000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = Swedish;
- path = Swedish.lproj/InfoPlist.strings.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F587E16301924C5E01000001 = {
- fileEncoding = 10;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = Swedish;
- path = Swedish.lproj/Localizable.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F587E16401924C6901000001 = {
- isa = PBXFileReference;
- lastKnownFileType = text.rtf;
- name = Swedish;
- path = Swedish.lproj/Credits.rtf;
- refType = 4;
- sourceTree = "<group>";
- };
- F587E16501924C7401000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.html;
- name = Swedish;
- path = Swedish.lproj/XDarwinHelp.html;
- refType = 4;
- sourceTree = "<group>";
- };
- F587E16601924C9D01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = Swedish;
- path = Swedish.lproj/XDarwinHelp.html.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F58D65DB018F793801000001 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.nib;
- name = French;
- path = French.lproj/MainMenu.nib;
- refType = 4;
- sourceTree = "<group>";
- };
- F58D65DC018F794D01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = French;
- path = French.lproj/InfoPlist.strings.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F58D65DD018F798F01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = French;
- path = French.lproj/InfoPlist.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F58D65DE018F79A001000001 = {
- fileEncoding = 10;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = French;
- path = French.lproj/Localizable.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F58D65DF018F79B101000001 = {
- isa = PBXFileReference;
- lastKnownFileType = text.rtf;
- name = French;
- path = French.lproj/Credits.rtf;
- refType = 4;
- sourceTree = "<group>";
- };
- F58D65E0018F79C001000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.html;
- name = French;
- path = French.lproj/XDarwinHelp.html;
- refType = 4;
- sourceTree = "<group>";
- };
- F58D65E1018F79E001000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = French;
- path = French.lproj/XDarwinHelp.html.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F5A94EF10314BAC70100011B = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- path = darwinEvents.c;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD25CC5B5E96601000001 = {
- isa = PBXFileReference;
- lastKnownFileType = text.rtf;
- name = Spanish;
- path = Spanish.lproj/Credits.rtf;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD25DC5B5E97701000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = Spanish;
- path = Spanish.lproj/InfoPlist.strings.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD25EC5B5E98D01000001 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.nib;
- name = Spanish;
- path = Spanish.lproj/MainMenu.nib;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD25FC5B5E9AA01000001 = {
- fileEncoding = 10;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = Spanish;
- path = Spanish.lproj/Localizable.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD260C5B5E9DF01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = Spanish;
- path = Spanish.lproj/XDarwinHelp.html.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD261C5B5EA2001000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.html;
- name = Spanish;
- path = Spanish.lproj/XDarwinHelp.html;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD262C5B5EA4D01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = Spanish;
- path = Spanish.lproj/InfoPlist.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD263C5BE031F01000001 = {
- isa = PBXFileReference;
- lastKnownFileType = text.rtf;
- name = ko;
- path = ko.lproj/Credits.rtf;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD264C5BE035B01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = ko;
- path = ko.lproj/InfoPlist.strings.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD265C5BE038601000001 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.nib;
- name = ko;
- path = ko.lproj/MainMenu.nib;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD266C5BE03C501000001 = {
- fileEncoding = 10;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = ko;
- path = ko.lproj/Localizable.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD267C5BE03FC01000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = ko;
- path = ko.lproj/XDarwinHelp.html.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD268C5BE046401000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.html;
- name = ko;
- path = ko.lproj/XDarwinHelp.html;
- refType = 4;
- sourceTree = "<group>";
- };
- F5ACD269C5BE049301000001 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = text.plist.strings;
- name = ko;
- path = ko.lproj/InfoPlist.strings;
- refType = 4;
- sourceTree = "<group>";
- };
- };
- rootObject = 29B97313FDCFA39411CA2CEA;
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/XDarwinStartup.c b/nx-X11/programs/Xserver/hw/darwin/quartz/XDarwinStartup.c
deleted file mode 100644
index 0adb4c212..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/XDarwinStartup.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/**************************************************************
- *
- * Startup program for Darwin X servers
- *
- * This program selects the appropriate X server to launch:
- * XDarwin IOKit X server (default)
- * XDarwinQuartz A soft link to the Quartz X server
- * executable (-quartz etc. option)
- *
- * If told to idle, the program will simply pause and not
- * launch any X server. This is to support startx being
- * run by XDarwin.app.
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2002 Torrey T. Lyons. 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
- * 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 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
- * TORREY T. LYONS 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 Torrey T. Lyons shall not
- * be used in advertising or otherwise to promote the sale, use or other
- * dealings in this Software without prior written authorization from
- * Torrey T. Lyons.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/XDarwinStartup.c,v 1.1 2002/03/28 02:21:18 torrey Exp $ */
-
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/syslimits.h>
-#include <ApplicationServices/ApplicationServices.h>
-
-// Macros to build the path name
-#ifndef XBINDIR
-#define XBINDIR /usr/X11R6/bin
-#endif
-#define STR(s) #s
-#define XSTRPATH(s) STR(s) "/"
-#define XPATH(file) XSTRPATH(XBINDIR) STR(file)
-
-int main(
- int argc,
- char *argv[] )
-{
- int i, j, quartzMode = -1;
- char **newargv;
-
- // Check if we are going to run in Quartz mode or idle
- // to support startx from the Quartz server. The last
- // parameter in the list is the one used.
- for (i = argc-1; i; i--) {
- if (!strcmp(argv[i], "-idle")) {
- pause();
- return 0;
-
- } else if (!strcmp(argv[i], "-quartz") ||
- !strcmp(argv[i], "-rootless") ||
- !strcmp(argv[i], "-fullscreen"))
- {
- quartzMode = 1;
- break;
-
- } else if (!strcmp(argv[i], "-iokit")) {
- quartzMode = 0;
- break;
- }
- }
-
- if (quartzMode == -1) {
-#ifdef HAS_CG_MACH_PORT
- // Check if the CoreGraphics window server is running.
- // Mike Paquette says this is the fastest way to determine if it is running.
- CFMachPortRef cgMachPortRef = CGWindowServerCFMachPort();
- if (cgMachPortRef == NULL)
- quartzMode = 0;
- else
- quartzMode = 1;
-#else
- // On older systems we assume IOKit mode.
- quartzMode = 0;
-#endif
- }
-
- if (quartzMode) {
- // Launch the X server for the quartz modes
-
- char quartzPath[PATH_MAX+1];
- int pathLength;
- OSStatus theStatus;
- CFURLRef appURL;
- CFStringRef appPath;
- Boolean success;
-
- // Build the new argument list
- newargv = (char **) malloc((argc+2) * sizeof(char *));
- for (j = argc; j; j--)
- newargv[j] = argv[j];
- newargv[argc] = "-nostartx";
- newargv[argc+1] = NULL;
-
- // Use the XDarwinQuartz soft link if it is valid
- pathLength = readlink(XPATH(XDarwinQuartz), quartzPath, PATH_MAX);
- if (pathLength != -1) {
- quartzPath[pathLength] = '\0';
- newargv[0] = quartzPath;
- execv(newargv[0], newargv);
- }
-
- // Otherwise query LaunchServices for the location of the XDarwin application
- theStatus = LSFindApplicationForInfo(kLSUnknownCreator,
- CFSTR("org.xfree86.XDarwin"),
- NULL, NULL, &appURL);
- if (theStatus) {
- fprintf(stderr, "Could not find the XDarwin application. (Error = 0x%lx)\n", theStatus);
- fprintf(stderr, "Launch XDarwin once from the Finder.\n");
- return theStatus;
- }
-
- appPath = CFURLCopyFileSystemPath (appURL, kCFURLPOSIXPathStyle);
- success = CFStringGetCString(appPath, quartzPath, PATH_MAX, CFStringGetSystemEncoding());
- if (! success) {
- fprintf(stderr, "Could not find path to XDarwin application.\n");
- return success;
- }
-
- // Launch the XDarwin application
- strncat(quartzPath, "/Contents/MacOS/XDarwin", PATH_MAX);
- newargv[0] = quartzPath;
- execv(newargv[0], newargv);
- fprintf(stderr, "Could not start XDarwin application at %s.\n", newargv[0]);
- return errno;
-
- } else {
-
- // Build the new argument list
- newargv = (char **) malloc((argc+1) * sizeof(char *));
- for (j = argc; j; j--)
- newargv[j] = argv[j];
- newargv[0] = "XDarwin";
- newargv[argc] = NULL;
-
- // Launch the IOKit X server
- execvp(newargv[0], newargv);
- fprintf(stderr, "Could not start XDarwin IOKit X server.\n");
- return errno;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/XDarwinStartup.man b/nx-X11/programs/Xserver/hw/darwin/quartz/XDarwinStartup.man
deleted file mode 100644
index 28efd1edf..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/XDarwinStartup.man
+++ /dev/null
@@ -1,75 +0,0 @@
-.\" $XFree86: xc/programs/Xserver/hw/darwin/bundle/XDarwinStartup.man,v 1.1 2002/02/05 19:16:14 torrey Exp $
-.TH XDarwinStartup 1
-.SH NAME
-XDarwinStartup - Startup program for the XDarwin X window server
-.SH SYNOPSIS
-.B XDarwinStartup
-[\fI-iokit\fP]
-[\fI-fullscreen\fP]
-[\fI-rootless\fP]
-[\fI-quartz\fP]
-[\fI-idle\fP]
-[\fIoptions\fP]
-.SH DESCRIPTION
-The \fIXDarwin(1)\fP X window server can be run in a variety of different
-modes and is actually two different executables. The IOKit X server,
-XDarwin, is used when running from the console. It is most commonly
-located in __XBinDir__. The Quartz X server, for running in parallel with
-Aqua, is a full-fledged Mac OS X application that can be started from
-the Finder. Its application bundle is XDarwin.app, which is typically
-located in /Applications.
-.I XDarwinStartup
-allows easy switching between these X servers and auto-detection of the
-appropriate one to use when launching from the command line.
-When run without any arguments,
-.I XDarwinStartup
-will start the Quartz X server if the Core Graphics window server
-is currently running. Otherwise it will start the IOKit X server.
-.PP
-To locate the Quartz X server,
-.I XDarwinStartup
-will try to read the soft link at __XBinDir__/XDarwinQuartz.
-This is typically a soft link to the executable of the XDarwin.app
-application. If this fails,
-.I XDarwinStartup
-will call Launch Services to locate XDarwin.app.
-.PP
-To start the IOKit X server,
-.I XDarwinStartup
-will run the XDarwin execuatable, which should be present in the
-user's path.
-.SH OPTIONS
-.I XDarwinStartup
-accepts and passes on all options to the X server it
-launches. In addition the following options have specific effects:
-.TP 8
-.B \-iokit
-Launch the IOKit X server.
-.TP 8
-.B \-fullscreen
-Launch the Quartz X server to run in full screen mode.
-.TP 8
-.B \-rootless
-Launch the Quartz X server to run in rootless mode.
-.TP 8
-.B \-quartz
-Launch the Quartz X server.
-.TP 8
-.B \-idle
-Pause and do nothing. This option is used by XDarwin.app when it is
-started from the Finder.
-.SH FILES
-.TP 30
-__XBinDir__/XDarwin
-IOKit mode X server
-.TP 30
-/Applications/XDarwin.app
-Quartz mode X server
-.TP 30
-__XBinDir__/XDarwinQuartz
-Soft link to Quartz mode X server executable
-.SH SEE ALSO
-XDarwin(1)
-.SH BUGS
-The path to XDarwinQuartz should not be hard coded.
-
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/XServer.h b/nx-X11/programs/Xserver/hw/darwin/quartz/XServer.h
deleted file mode 100644
index 8b45ffc55..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/XServer.h
+++ /dev/null
@@ -1,138 +0,0 @@
-//
-// XServer.h
-//
-/*
- * Copyright (c) 2001 Andreas Monitzer. All Rights Reserved.
- * Copyright (c) 2002-2003 Torrey T. Lyons. 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/XServer.h,v 1.5 2005/07/01 22:43:07 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/XServer.h,v 1.16 2003/11/23 06:04:01 torrey Exp $ */
-
-#define BOOL xBOOL
-#include <X11/Xproto.h>
-#undef BOOL
-
-#import <Cocoa/Cocoa.h>
-
-@interface XServer : NSObject {
- // Server state
- int serverState;
- NSRecursiveLock *serverLock;
- NSMutableArray *pendingClients;
- BOOL serverVisible;
- BOOL rootlessMenuBarVisible;
- BOOL queueShowServer;
- BOOL quitWithoutQuery;
- BOOL pendingAppQuitReply;
- UInt32 mouseState;
- unsigned short swallowedKey;
- BOOL sendServerEvents;
- BOOL x11Active;
-
- // Aqua interface
- IBOutlet NSWindow *modeWindow;
- IBOutlet NSButton *startupModeButton;
- IBOutlet NSButton *startFullScreenButton;
- IBOutlet NSButton *startRootlessButton;
- IBOutlet NSWindow *helpWindow;
- IBOutlet NSButton *startupHelpButton;
- IBOutlet NSPanel *switchWindow;
-
- // Menu elements setable by Apple-WM extension
- IBOutlet NSMenu *windowMenu;
- IBOutlet NSMenuItem *windowSeparator;
- IBOutlet NSMenu *dockMenu;
- int checkedWindowItem;
-}
-
-- (id)init;
-
-- (BOOL)translateEvent:(NSEvent *)anEvent;
-- (BOOL)getMousePosition:(xEvent *)xe fromEvent:(NSEvent *)anEvent;
-
-- (NSString *)makeSafePath:(NSString *)path;
-
-- (BOOL)loadDisplayBundle;
-- (void)startX;
-- (void)finishStartX;
-- (BOOL)startXClients;
-- (void)runClient:(NSString *)filename;
-- (void)run;
-- (void)toggle;
-- (void)showServer:(BOOL)show;
-- (void)forceShowServer:(BOOL)show;
-- (void)setRootClip:(BOOL)enable;
-- (void)readPasteboard;
-- (void)writePasteboard;
-- (void)quitServer;
-- (void)sendXEvent:(xEvent *)xe;
-- (void)sendShowHide:(BOOL)show;
-- (void)clientProcessDone:(int)clientStatus;
-- (void)activateX11:(BOOL)state;
-- (void)windowBecameKey:(NSNotification *)notification;
-- (void)setX11WindowList:(NSArray *)list;
-- (void)setX11WindowCheck:(NSNumber *)nn;
-
-// Aqua interface actions
-- (IBAction)startFullScreen:(id)sender;
-- (IBAction)startRootless:(id)sender;
-- (IBAction)closeHelpAndShow:(id)sender;
-- (IBAction)showSwitchPanel:(id)sender;
-- (IBAction)showAction:(id)sender;
-- (IBAction)itemSelected:(id)sender;
-- (IBAction)nextWindow:(id)sender;
-- (IBAction)previousWindow:(id)sender;
-- (IBAction)performClose:(id)sender;
-- (IBAction)performMiniaturize:(id)sender;
-- (IBAction)performZoom:(id)sender;
-- (IBAction)bringAllToFront:(id)sender;
-- (IBAction)copy:(id)sender;
-
-// NSApplication delegate
-- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
-- (void)applicationWillTerminate:(NSNotification *)aNotification;
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification;
-- (void)applicationDidHide:(NSNotification *)aNotification;
-- (void)applicationDidUnhide:(NSNotification *)aNotification;
-- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag;
-- (void)applicationWillResignActive:(NSNotification *)aNotification;
-- (void)applicationWillBecomeActive:(NSNotification *)aNotification;
-- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename;
-
-// NSPort delegate
-- (void)handlePortMessage:(NSPortMessage *)portMessage;
-
-@end
-
-// X server states
-enum {
- server_NotStarted,
- server_Starting,
- server_Running,
- server_Quitting,
- server_Done
-};
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/XServer.m b/nx-X11/programs/Xserver/hw/darwin/quartz/XServer.m
deleted file mode 100644
index 613c9c830..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/XServer.m
+++ /dev/null
@@ -1,1539 +0,0 @@
-//
-// XServer.m
-//
-// This class handles the interaction between the Cocoa front-end
-// and the Darwin X server thread.
-//
-// Created by Andreas Monitzer on January 6, 2001.
-//
-/*
- * Copyright (c) 2001 Andreas Monitzer. All Rights Reserved.
- * Copyright (c) 2002-2005 Torrey T. Lyons. 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/XServer.m,v 1.4 2005/04/02 02:29:24 torrey Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/XServer.m,v 1.19 2003/11/24 05:39:01 torrey Exp $ */
-
-#include "quartzCommon.h"
-
-#define BOOL xBOOL
-#include "X.h"
-#include "Xproto.h"
-#include "os.h"
-#include "opaque.h"
-#include "darwin.h"
-#include "quartz.h"
-#define _APPLEWM_SERVER_
-#include "applewm.h"
-#include "applewmExt.h"
-#undef BOOL
-
-#import "XServer.h"
-#import "Preferences.h"
-
-#include <unistd.h>
-#include <stdio.h>
-#include <sys/syslimits.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <pwd.h>
-#include <signal.h>
-#include <fcntl.h>
-
-// For power management notifications
-#import <mach/mach_port.h>
-#import <mach/mach_interface.h>
-#import <mach/mach_init.h>
-#import <IOKit/pwr_mgt/IOPMLib.h>
-#import <IOKit/IOMessage.h>
-
-// Types of shells
-enum {
- shell_Unknown,
- shell_Bourne,
- shell_C
-};
-
-typedef struct {
- char *name;
- int type;
-} shellList_t;
-
-static shellList_t const shellList[] = {
- { "csh", shell_C }, // standard C shell
- { "tcsh", shell_C }, // ... needs no introduction
- { "sh", shell_Bourne }, // standard Bourne shell
- { "zsh", shell_Bourne }, // Z shell
- { "bash", shell_Bourne }, // GNU Bourne again shell
- { NULL, shell_Unknown }
-};
-
-extern int argcGlobal;
-extern char **argvGlobal;
-extern char **envpGlobal;
-extern int main(int argc, char *argv[], char *envp[]);
-extern void HideMenuBar(void);
-extern void ShowMenuBar(void);
-static void childDone(int sig);
-static void powerDidChange(void *x, io_service_t y, natural_t messageType,
- void *messageArgument);
-
-static NSPort *signalPort;
-static NSPort *returnPort;
-static NSPortMessage *signalMessage;
-static pid_t clientPID;
-static XServer *oneXServer;
-static NSRect aquaMenuBarBox;
-static io_connect_t root_port;
-
-
-@implementation XServer
-
-- (id)init
-{
- self = [super init];
- oneXServer = self;
-
- serverState = server_NotStarted;
- serverLock = [[NSRecursiveLock alloc] init];
- pendingClients = nil;
- clientPID = 0;
- sendServerEvents = NO;
- x11Active = YES;
- serverVisible = NO;
- rootlessMenuBarVisible = YES;
- queueShowServer = YES;
- quartzServerQuitting = NO;
- pendingAppQuitReply = NO;
- mouseState = 0;
-
- // set up a port to safely send messages to main thread from server thread
- signalPort = [[NSPort port] retain];
- returnPort = [[NSPort port] retain];
- signalMessage = [[NSPortMessage alloc] initWithSendPort:signalPort
- receivePort:returnPort components:nil];
-
- // set up receiving end
- [signalPort setDelegate:self];
- [[NSRunLoop currentRunLoop] addPort:signalPort
- forMode:NSDefaultRunLoopMode];
- [[NSRunLoop currentRunLoop] addPort:signalPort
- forMode:NSModalPanelRunLoopMode];
-
- return self;
-}
-
-- (NSApplicationTerminateReply)
- applicationShouldTerminate:(NSApplication *)sender
-{
- // Quit if the X server is not running
- if ([serverLock tryLock]) {
- quartzServerQuitting = YES;
- serverState = server_Done;
- if (clientPID != 0)
- kill(clientPID, SIGINT);
- return NSTerminateNow;
- }
-
- // Hide the X server and stop sending it events
- [self showServer:NO];
- sendServerEvents = NO;
-
- if (!quitWithoutQuery && (clientPID != 0 || !quartzStartClients)) {
- int but;
-
- but = NSRunAlertPanel(NSLocalizedString(@"Quit X server?",@""),
- NSLocalizedString(@"Quitting the X server will terminate any running X Window System programs.",@""),
- NSLocalizedString(@"Quit",@""),
- NSLocalizedString(@"Cancel",@""),
- nil);
-
- switch (but) {
- case NSAlertDefaultReturn: // quit
- break;
- case NSAlertAlternateReturn: // cancel
- if (serverState == server_Running)
- sendServerEvents = YES;
- return NSTerminateCancel;
- }
- }
-
- quartzServerQuitting = YES;
- if (clientPID != 0)
- kill(clientPID, SIGINT);
-
- // At this point the X server is either running or starting.
- if (serverState == server_Starting) {
- // Quit will be queued later when server is running
- pendingAppQuitReply = YES;
- return NSTerminateLater;
- } else if (serverState == server_Running) {
- [self quitServer];
- }
-
- return NSTerminateNow;
-}
-
-// Ensure that everything has quit cleanly
-- (void)applicationWillTerminate:(NSNotification *)aNotification
-{
- // Make sure the client process has finished
- if (clientPID != 0) {
- NSLog(@"Waiting on client process...");
- sleep(2);
-
- // If the client process hasn't finished yet, kill it off
- if (clientPID != 0) {
- int clientStatus;
- NSLog(@"Killing client process...");
- killpg(clientPID, SIGKILL);
- waitpid(clientPID, &clientStatus, 0);
- }
- }
-
- // Wait until the X server thread quits
- [serverLock lock];
-}
-
-// returns YES when event was handled
-- (BOOL)translateEvent:(NSEvent *)anEvent
-{
- xEvent xe;
- static BOOL mouse1Pressed = NO;
- NSEventType type;
- unsigned int flags;
-
- if (!sendServerEvents) {
- return NO;
- }
-
- type = [anEvent type];
- flags = [anEvent modifierFlags];
-
- if (!quartzRootless) {
- // Check for switch keypress
- if ((type == NSKeyDown) && (![anEvent isARepeat]) &&
- ([anEvent keyCode] == [Preferences keyCode]))
- {
- unsigned int switchFlags = [Preferences modifiers];
-
- // Switch if all the switch modifiers are pressed, while none are
- // pressed that should not be, except for caps lock.
- if (((flags & switchFlags) == switchFlags) &&
- ((flags & ~(switchFlags | NSAlphaShiftKeyMask)) == 0))
- {
- [self toggle];
- return YES;
- }
- }
-
- if (!serverVisible)
- return NO;
- }
-
- memset(&xe, 0, sizeof(xe));
-
- switch (type) {
- case NSLeftMouseUp:
- if (quartzRootless && !mouse1Pressed) {
- // MouseUp after MouseDown in menu - ignore
- return NO;
- }
- mouse1Pressed = NO;
- [self getMousePosition:&xe fromEvent:anEvent];
- xe.u.u.type = ButtonRelease;
- xe.u.u.detail = 1;
- break;
-
- case NSLeftMouseDown:
- if (quartzRootless) {
- // Check that event is in X11 window
- if (!quartzProcs->IsX11Window([anEvent window],
- [anEvent windowNumber]))
- {
- if (x11Active)
- [self activateX11:NO];
- return NO;
- } else {
- if (!x11Active)
- [self activateX11:YES];
- }
- }
- mouse1Pressed = YES;
- [self getMousePosition:&xe fromEvent:anEvent];
- xe.u.u.type = ButtonPress;
- xe.u.u.detail = 1;
- break;
-
- case NSRightMouseUp:
- [self getMousePosition:&xe fromEvent:anEvent];
- xe.u.u.type = ButtonRelease;
- xe.u.u.detail = 3;
- break;
-
- case NSRightMouseDown:
- [self getMousePosition:&xe fromEvent:anEvent];
- xe.u.u.type = ButtonPress;
- xe.u.u.detail = 3;
- break;
-
- case NSOtherMouseUp:
- {
- int hwButton = [anEvent buttonNumber];
-
- [self getMousePosition:&xe fromEvent:anEvent];
- xe.u.u.type = ButtonRelease;
- xe.u.u.detail = (hwButton == 2) ? hwButton : hwButton + 1;
- break;
- }
-
- case NSOtherMouseDown:
- {
- int hwButton = [anEvent buttonNumber];
-
- [self getMousePosition:&xe fromEvent:anEvent];
- xe.u.u.type = ButtonPress;
- xe.u.u.detail = (hwButton == 2) ? hwButton : hwButton + 1;
- break;
- }
-
- case NSMouseMoved:
- case NSLeftMouseDragged:
- case NSRightMouseDragged:
- case NSOtherMouseDragged:
- [self getMousePosition:&xe fromEvent:anEvent];
- xe.u.u.type = MotionNotify;
- break;
-
- case NSScrollWheel:
- [self getMousePosition:&xe fromEvent:anEvent];
- xe.u.u.type = kXDarwinScrollWheel;
- xe.u.clientMessage.u.s.shorts0 = [anEvent deltaX] +
- [anEvent deltaY];
- break;
-
- case NSKeyDown:
- case NSKeyUp:
- if (!x11Active) {
- swallowedKey = 0;
- return NO;
- }
-
- if (type == NSKeyDown) {
- // If the mouse is not on the valid X display area,
- // don't send the X server key events.
- if (![self getMousePosition:&xe fromEvent:nil]) {
- swallowedKey = [anEvent keyCode];
- return NO;
- }
-
- // See if there are any global shortcuts for this key combo.
- if (quartzEnableKeyEquivalents
- && [[NSApp mainMenu] performKeyEquivalent:anEvent])
- {
- swallowedKey = [anEvent keyCode];
- return YES;
- }
- } else {
- // If the down key event was a valid key combo,
- // don't pass the up event to X11.
- if (swallowedKey != 0 && [anEvent keyCode] == swallowedKey) {
- swallowedKey = 0;
- return NO;
- }
- }
-
- xe.u.u.type = (type == NSKeyDown) ? KeyPress : KeyRelease;
- xe.u.u.detail = [anEvent keyCode];
- break;
-
- case NSFlagsChanged:
- if (!x11Active)
- return NO;
- xe.u.u.type = kXDarwinUpdateModifiers;
- xe.u.clientMessage.u.l.longs0 = flags;
- break;
-
- default:
- return NO;
- }
-
- [self sendXEvent:&xe];
-
- // Rootless: Send first NSLeftMouseDown to Cocoa windows and views so
- // window ordering can be suppressed.
- // Don't pass further events - they (incorrectly?) bring the window
- // forward no matter what.
- if (quartzRootless &&
- (type == NSLeftMouseDown || type == NSLeftMouseUp) &&
- [anEvent clickCount] == 1 && [anEvent window])
- {
- return NO;
- }
-
- return YES;
-}
-
-// Return mouse coordinates, inverting y coordinate.
-// The coordinates are extracted from an event or the current mouse position.
-// For rootless mode, the menu bar is treated as not part of the usable
-// X display area and the cursor position is adjusted accordingly.
-// Returns YES if the cursor is not in the menu bar.
-- (BOOL)getMousePosition:(xEvent *)xe fromEvent:(NSEvent *)anEvent
-{
- NSPoint pt;
-
- if (anEvent) {
- NSWindow *eventWindow = [anEvent window];
-
- if (eventWindow) {
- pt = [anEvent locationInWindow];
- pt.x += [eventWindow frame].origin.x;
- pt.y += [eventWindow frame].origin.y;
- } else {
- pt = [NSEvent mouseLocation];
- }
- } else {
- pt = [NSEvent mouseLocation];
- }
-
- xe->u.keyButtonPointer.rootX = (int)(pt.x);
-
- if (quartzRootless && NSMouseInRect(pt, aquaMenuBarBox, NO)) {
- // mouse in menu bar - tell X11 that it's just below instead
- xe->u.keyButtonPointer.rootY = aquaMenuBarHeight;
- return NO;
- } else {
- xe->u.keyButtonPointer.rootY =
- NSHeight([[NSScreen mainScreen] frame]) - (int)(pt.y);
- return YES;
- }
-}
-
-
-// Make a safe path
-//
-// Return the path in single quotes in case there are problematic characters in it.
-// We still have to worry about there being single quotes in the path. So, replace
-// all instances of the ' character in the path with '\''.
-- (NSString *)makeSafePath:(NSString *)path
-{
- NSMutableString *safePath = [NSMutableString stringWithString:path];
- NSRange aRange = NSMakeRange(0, [safePath length]);
-
- while (aRange.length) {
- aRange = [safePath rangeOfString:@"'" options:0 range:aRange];
- if (!aRange.length)
- break;
- [safePath replaceCharactersInRange:aRange
- withString:@"\'\\'\'"];
- aRange.location += 4;
- aRange.length = [safePath length] - aRange.location;
- }
-
- safePath = [NSMutableString stringWithFormat:@"'%@'", safePath];
-
- return safePath;
-}
-
-
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
-{
- // Block SIGPIPE
- // SIGPIPE repeatably killed the (rootless) server when closing a
- // dozen xterms in rapid succession. Those SIGPIPEs should have been
- // sent to the X server thread, which ignores them, but somehow they
- // ended up in this thread instead.
- {
- sigset_t set;
- sigemptyset(&set);
- sigaddset(&set, SIGPIPE);
- // pthread_sigmask not implemented yet
- // pthread_sigmask(SIG_BLOCK, &set, NULL);
- sigprocmask(SIG_BLOCK, &set, NULL);
- }
-
- if (quartzRootless == -1) {
- // The display mode was not set from the command line.
- // Show mode pick panel?
- if ([Preferences modeWindow]) {
- if ([Preferences rootless])
- [startRootlessButton setKeyEquivalent:@"\r"];
- else
- [startFullScreenButton setKeyEquivalent:@"\r"];
- [modeWindow makeKeyAndOrderFront:nil];
- } else {
- // Otherwise use default mode
- quartzRootless = [Preferences rootless];
- [self startX];
- }
- } else {
- [self startX];
- }
-}
-
-
-// Load the appropriate display mode bundle
-- (BOOL)loadDisplayBundle
-{
- if (quartzRootless) {
- NSEnumerator *enumerator = [[Preferences displayModeBundles]
- objectEnumerator];
- NSString *bundleName;
-
- while ((bundleName = [enumerator nextObject])) {
- if (QuartzLoadDisplayBundle([bundleName cString]))
- return YES;
- }
-
- return NO;
- } else {
- return QuartzLoadDisplayBundle("fullscreen.bundle");
- }
-}
-
-
-// Start the X server thread and the client process
-- (void)startX
-{
- NSDictionary *appDictionary;
- NSString *appVersion;
-
- [modeWindow close];
-
- // Calculate the height of the menu bar so rootless mode can avoid it
- if (quartzRootless) {
- aquaMenuBarHeight = NSHeight([[NSScreen mainScreen] frame]) -
- NSMaxY([[NSScreen mainScreen] visibleFrame]) - 1;
- aquaMenuBarBox =
- NSMakeRect(0, NSMaxY([[NSScreen mainScreen] visibleFrame]) + 1,
- NSWidth([[NSScreen mainScreen] frame]),
- aquaMenuBarHeight);
- }
-
- // Write the XDarwin version to the console log
- appDictionary = [[NSBundle mainBundle] infoDictionary];
- appVersion = [appDictionary objectForKey:@"CFBundleShortVersionString"];
- if (appVersion)
- NSLog(@"\n%@", appVersion);
- else
- NSLog(@"No version");
-
- if (![self loadDisplayBundle])
- [NSApp terminate:nil];
-
- if (quartzRootless) {
- // We need to track whether the key window is an X11 window
- [[NSNotificationCenter defaultCenter]
- addObserver:self
- selector:@selector(windowBecameKey:)
- name:NSWindowDidBecomeKeyNotification
- object:nil];
-
- // Request notification of screen layout changes even when this
- // is not the active application
- [[NSDistributedNotificationCenter defaultCenter]
- addObserver:self
- selector:@selector(applicationDidChangeScreenParameters:)
- name:NSApplicationDidChangeScreenParametersNotification
- object:nil];
- }
-
- // Start the X server thread
- serverState = server_Starting;
- [NSThread detachNewThreadSelector:@selector(run) toTarget:self
- withObject:nil];
-
- // Start the X clients if started from GUI
- if (quartzStartClients) {
- [self startXClients];
- }
-
- if (quartzRootless) {
- // There is no help window for rootless; just start
- [helpWindow close];
- helpWindow = nil;
- } else {
- IONotificationPortRef notify;
- io_object_t anIterator;
-
- // Register for system power notifications
- root_port = IORegisterForSystemPower(0, &notify, powerDidChange,
- &anIterator);
- if (root_port) {
- CFRunLoopAddSource([[NSRunLoop currentRunLoop] getCFRunLoop],
- IONotificationPortGetRunLoopSource(notify),
- kCFRunLoopDefaultMode);
- } else {
- NSLog(@"Failed to register for system power notifications.");
- }
-
- // Show the X switch window if not using dock icon switching
- if (![Preferences dockSwitch])
- [switchWindow orderFront:nil];
-
- if ([Preferences startupHelp]) {
- // display the full screen mode help
- [helpWindow makeKeyAndOrderFront:nil];
- queueShowServer = NO;
- } else {
- // start running full screen and make sure X is visible
- ShowMenuBar();
- [self closeHelpAndShow:nil];
- }
- }
-}
-
-// Finish starting the X server thread
-// This includes anything that must be done after the X server is
-// ready to process events after the first or subsequent generations.
-- (void)finishStartX
-{
- sendServerEvents = YES;
- serverState = server_Running;
-
- if (quartzRootless) {
- [self forceShowServer:[NSApp isActive]];
- } else {
- [self forceShowServer:queueShowServer];
- }
-
- if (quartzServerQuitting) {
- [self quitServer];
- if (pendingAppQuitReply)
- [NSApp replyToApplicationShouldTerminate:YES];
- return;
- }
-
- if (pendingClients) {
- NSEnumerator *enumerator = [pendingClients objectEnumerator];
- NSString *filename;
-
- while ((filename = [enumerator nextObject])) {
- [self runClient:filename];
- }
-
- [pendingClients release];
- pendingClients = nil;
- }
-}
-
-// Start the first X clients in a separate process
-- (BOOL)startXClients
-{
- struct passwd *passwdUser;
- NSString *shellPath, *dashShellName, *commandStr, *startXPath;
- NSString *safeStartXPath;
- NSBundle *thisBundle;
- const char *shellPathStr, *newargv[3], *shellNameStr;
- int fd[2], outFD, length, shellType, i;
-
- // Register to catch the signal when the client processs finishes
- signal(SIGCHLD, childDone);
-
- // Get user's password database entry
- passwdUser = getpwuid(getuid());
-
- // Find the shell to use
- if ([Preferences useDefaultShell])
- shellPath = [NSString stringWithCString:passwdUser->pw_shell];
- else
- shellPath = [Preferences shellString];
-
- dashShellName = [NSString stringWithFormat:@"-%@",
- [shellPath lastPathComponent]];
- shellPathStr = [shellPath cString];
- shellNameStr = [[shellPath lastPathComponent] cString];
-
- if (access(shellPathStr, X_OK)) {
- NSLog(@"Shell %s is not valid!", shellPathStr);
- return NO;
- }
-
- // Find the type of shell
- for (i = 0; shellList[i].name; i++) {
- if (!strcmp(shellNameStr, shellList[i].name))
- break;
- }
- shellType = shellList[i].type;
-
- newargv[0] = [dashShellName cString];
- if (shellType == shell_Bourne) {
- // Bourne shells need to be told they are interactive to make
- // sure they read all their initialization files.
- newargv[1] = "-i";
- newargv[2] = NULL;
- } else {
- newargv[1] = NULL;
- }
-
- // Create a pipe to communicate with the X client process
- NSAssert(pipe(fd) == 0, @"Could not create new pipe.");
-
- // Open a file descriptor for writing to stdout and stderr
- outFD = open("/dev/console", O_WRONLY, 0);
- if (outFD == -1) {
- outFD = open("/dev/null", O_WRONLY, 0);
- NSAssert(outFD != -1, @"Could not open shell output.");
- }
-
- // Fork process to start X clients in user's default shell
- // Sadly we can't use NSTask because we need to start a login shell.
- // Login shells are started by passing "-" as the first character of
- // argument 0. NSTask forces argument 0 to be the shell's name.
- clientPID = vfork();
- if (clientPID == 0) {
-
- // Inside the new process:
- if (fd[0] != STDIN_FILENO) {
- dup2(fd[0], STDIN_FILENO); // Take stdin from pipe
- close(fd[0]);
- }
- close(fd[1]); // Close write end of pipe
- if (outFD == STDOUT_FILENO) { // Setup stdout and stderr
- dup2(outFD, STDERR_FILENO);
- } else if (outFD == STDERR_FILENO) {
- dup2(outFD, STDOUT_FILENO);
- } else {
- dup2(outFD, STDERR_FILENO);
- dup2(outFD, STDOUT_FILENO);
- close(outFD);
- }
-
- // Setup environment
- setenv("HOME", passwdUser->pw_dir, 1);
- setenv("SHELL", shellPathStr, 1);
- setenv("LOGNAME", passwdUser->pw_name, 1);
- setenv("USER", passwdUser->pw_name, 1);
- setenv("TERM", "unknown", 1);
- if (chdir(passwdUser->pw_dir)) // Change to user's home dir
- NSLog(@"Could not change to user's home directory.");
-
- execv(shellPathStr, (char * const *)newargv); // Start user's shell
-
- NSLog(@"Could not start X client process with errno = %i.", errno);
- _exit(127);
- }
-
- // In parent process:
- close(fd[0]); // Close read end of pipe
- close(outFD); // Close output file descriptor
-
- thisBundle = [NSBundle bundleForClass:[self class]];
- startXPath = [thisBundle pathForResource:@"startXClients" ofType:nil];
- if (!startXPath) {
- NSLog(@"Could not find startXClients in application bundle!");
- return NO;
- }
-
- safeStartXPath = [self makeSafePath:startXPath];
-
- if ([Preferences addToPath]) {
- commandStr = [NSString stringWithFormat:@"%@ :%d %@\n",
- safeStartXPath, [Preferences display],
- [Preferences addToPathString]];
- } else {
- commandStr = [NSString stringWithFormat:@"%@ :%d\n",
- safeStartXPath, [Preferences display]];
- }
-
- length = [commandStr cStringLength];
- if (write(fd[1], [commandStr cString], length) != length) {
- NSLog(@"Write to X client process failed.");
- return NO;
- }
-
- // Close the pipe so that shell will terminate when xinit quits
- close(fd[1]);
-
- return YES;
-}
-
-// Start the specified client in its own task
-// FIXME: This should be unified with startXClients
-- (void)runClient:(NSString *)filename
-{
- const char *command = [[self makeSafePath:filename] UTF8String];
- const char *shell;
- const char *argv[5];
- int child1, child2 = 0;
- int status;
-
- shell = getenv("SHELL");
- if (shell == NULL)
- shell = "/bin/bash";
-
- /* At least [ba]sh, [t]csh and zsh all work with this syntax. We
- need to use an interactive shell to force it to load the user's
- environment. */
-
- argv[0] = shell;
- argv[1] = "-i";
- argv[2] = "-c";
- argv[3] = command;
- argv[4] = NULL;
-
- /* Do the fork-twice trick to avoid having to reap zombies */
-
- child1 = fork();
-
- switch (child1) {
- case -1: /* error */
- break;
-
- case 0: /* child1 */
- child2 = fork();
-
- switch (child2) {
- int max_files, i;
- char buf[1024], *tem;
-
- case -1: /* error */
- _exit(1);
-
- case 0: /* child2 */
- /* close all open files except for standard streams */
- max_files = sysconf(_SC_OPEN_MAX);
- for (i = 3; i < max_files; i++)
- close(i);
-
- /* ensure stdin is on /dev/null */
- close(0);
- open("/dev/null", O_RDONLY);
-
- /* cd $HOME */
- tem = getenv("HOME");
- if (tem != NULL)
- chdir(tem);
-
- /* Setup environment */
- snprintf(buf, sizeof(buf), ":%s", display);
- setenv("DISPLAY", buf, TRUE);
- tem = getenv("PATH");
- if (tem != NULL && tem[0] != NULL)
- snprintf(buf, sizeof(buf), "%s:/usr/X11R6/bin", tem);
- else
- snprintf(buf, sizeof(buf), "/bin:/usr/bin:/usr/X11R6/bin");
- setenv("PATH", buf, TRUE);
-
- execvp(argv[0], (char **const) argv);
-
- _exit(2);
-
- default: /* parent (child1) */
- _exit(0);
- }
- break;
-
- default: /* parent */
- waitpid(child1, &status, 0);
- }
-}
-
-// Run the X server thread
-- (void)run
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- [serverLock lock];
- main(argcGlobal, argvGlobal, envpGlobal);
- serverVisible = NO;
- [pool release];
- [serverLock unlock];
- QuartzMessageMainThread(kQuartzServerDied, nil, 0);
-}
-
-// Full screen mode was picked in the mode pick panel
-- (IBAction)startFullScreen:(id)sender
-{
- [Preferences setModeWindow:[startupModeButton intValue]];
- [Preferences saveToDisk];
- quartzRootless = FALSE;
- [self startX];
-}
-
-// Rootless mode was picked in the mode pick panel
-- (IBAction)startRootless:(id)sender
-{
- [Preferences setModeWindow:[startupModeButton intValue]];
- [Preferences saveToDisk];
- quartzRootless = TRUE;
- [self startX];
-}
-
-// Close the help splash screen and show the X server
-- (IBAction)closeHelpAndShow:(id)sender
-{
- if (sender) {
- int helpVal = [startupHelpButton intValue];
- [Preferences setStartupHelp:helpVal];
- [Preferences saveToDisk];
- }
- [helpWindow close];
- helpWindow = nil;
-
- [self forceShowServer:YES];
- [NSApp activateIgnoringOtherApps:YES];
-}
-
-// Show the Aqua-X11 switch panel useful for fullscreen mode
-- (IBAction)showSwitchPanel:(id)sender
-{
- [switchWindow orderFront:nil];
-}
-
-// Show the X server when sent message from GUI
-- (IBAction)showAction:(id)sender
-{
- [self forceShowServer:YES];
-}
-
-// Show or hide the X server or menu bar in rootless mode
-- (void)toggle
-{
- if (quartzRootless) {
-#if 0
- // FIXME: Remove or add option to not dodge menubar
- if (rootlessMenuBarVisible)
- HideMenuBar();
- else
- ShowMenuBar();
- rootlessMenuBarVisible = !rootlessMenuBarVisible;
-#endif
- } else {
- [self showServer:!serverVisible];
- }
-}
-
-// Show or hide the X server on screen
-- (void)showServer:(BOOL)show
-{
- // Do not show or hide multiple times in a row
- if (serverVisible == show)
- return;
-
- if (sendServerEvents) {
- [self sendShowHide:show];
- } else if (serverState == server_Starting) {
- queueShowServer = show;
- }
-}
-
-// Show or hide the X server irregardless of the current state
-- (void)forceShowServer:(BOOL)show
-{
- serverVisible = !show;
- [self showServer:show];
-}
-
-// Tell the X server to show or hide itself.
-// This ignores the current X server visible state.
-//
-// In full screen mode, the order we do things is important and must be
-// preserved between the threads. X drawing operations have to be performed
-// in the X server thread. It appears that we have the additional
-// constraint that we must hide and show the menu bar in the main thread.
-//
-// To show the X server:
-// 1. Capture the displays. (Main thread)
-// 2. Hide the menu bar. (Must be in main thread)
-// 3. Send event to X server thread to redraw X screen.
-// 4. Redraw the X screen. (Must be in X server thread)
-//
-// To hide the X server:
-// 1. Send event to X server thread to stop drawing.
-// 2. Stop drawing to the X screen. (Must be in X server thread)
-// 3. Message main thread that drawing is stopped.
-// 4. If main thread still wants X server hidden:
-// a. Release the displays. (Main thread)
-// b. Unhide the menu bar. (Must be in main thread)
-// Otherwise we have already queued an event to start drawing again.
-//
-- (void)sendShowHide:(BOOL)show
-{
- xEvent xe;
-
- [self getMousePosition:&xe fromEvent:nil];
-
- if (show) {
- if (!quartzRootless) {
- quartzProcs->CaptureScreens();
- HideMenuBar();
- }
- [self activateX11:YES];
-
- // the mouse location will have moved; track it
- xe.u.u.type = MotionNotify;
- [self sendXEvent:&xe];
-
- // inform the X server of the current modifier state
- xe.u.u.type = kXDarwinUpdateModifiers;
- xe.u.clientMessage.u.l.longs0 = [[NSApp currentEvent] modifierFlags];
- [self sendXEvent:&xe];
-
- // If there is no AppleWM-aware cut and paste manager, do what we can.
- if ((AppleWMSelectedEvents() & AppleWMPasteboardNotifyMask) == 0) {
- // put the pasteboard into the X cut buffer
- [self readPasteboard];
- }
- } else {
- // If there is no AppleWM-aware cut and paste manager, do what we can.
- if ((AppleWMSelectedEvents() & AppleWMPasteboardNotifyMask) == 0) {
- // put the X cut buffer on the pasteboard
- [self writePasteboard];
- }
-
- [self activateX11:NO];
- }
-
- serverVisible = show;
-}
-
-// Enable or disable rendering to the X screen
-- (void)setRootClip:(BOOL)enable
-{
- xEvent xe;
-
- xe.u.u.type = kXDarwinSetRootClip;
- xe.u.clientMessage.u.l.longs0 = enable;
- [self sendXEvent:&xe];
-}
-
-// Tell the X server to read from the pasteboard into the X cut buffer
-- (void)readPasteboard
-{
- xEvent xe;
-
- xe.u.u.type = kXDarwinReadPasteboard;
- [self sendXEvent:&xe];
-}
-
-// Tell the X server to write the X cut buffer into the pasteboard
-- (void)writePasteboard
-{
- xEvent xe;
-
- xe.u.u.type = kXDarwinWritePasteboard;
- [self sendXEvent:&xe];
-}
-
-- (void)quitServer
-{
- xEvent xe;
-
- xe.u.u.type = kXDarwinQuit;
- [self sendXEvent:&xe];
-
- // Revert to the Mac OS X arrow cursor. The main thread sets the cursor
- // and it won't be responding to future requests to change it.
- [[NSCursor arrowCursor] set];
-
- serverState = server_Quitting;
-}
-
-- (void)sendXEvent:(xEvent *)xe
-{
- // This field should be filled in for every event
- xe->u.keyButtonPointer.time = GetTimeInMillis();
-
- DarwinEQEnqueue(xe);
-}
-
-// Handle messages from the X server thread
-- (void)handlePortMessage:(NSPortMessage *)portMessage
-{
- unsigned msg = [portMessage msgid];
-
- switch (msg) {
- case kQuartzServerHidden:
- // Make sure the X server wasn't queued to be shown again while
- // the hide was pending.
- if (!quartzRootless && !serverVisible) {
- quartzProcs->ReleaseScreens();
- ShowMenuBar();
- }
- break;
-
- case kQuartzServerStarted:
- [self finishStartX];
- break;
-
- case kQuartzServerDied:
- sendServerEvents = NO;
- serverState = server_Done;
- if (!quartzServerQuitting) {
- [NSApp terminate:nil]; // quit if we aren't already
- }
- break;
-
- case kQuartzCursorUpdate:
- if (quartzProcs->CursorUpdate)
- quartzProcs->CursorUpdate();
- break;
-
- case kQuartzPostEvent:
- {
- const xEvent *xe = [[[portMessage components] lastObject] bytes];
- DarwinEQEnqueue(xe);
- break;
- }
-
- case kQuartzSetWindowMenu:
- {
- NSArray *list;
- [[[portMessage components] lastObject] getBytes:&list];
- [self setX11WindowList:list];
- [list release];
- break;
- }
-
- case kQuartzSetWindowMenuCheck:
- {
- int n;
- [[[portMessage components] lastObject] getBytes:&n];
- [self setX11WindowCheck:[NSNumber numberWithInt:n]];
- break;
- }
-
- case kQuartzSetFrontProcess:
- [NSApp activateIgnoringOtherApps:YES];
- break;
-
- case kQuartzSetCanQuit:
- {
- int n;
- [[[portMessage components] lastObject] getBytes:&n];
- quitWithoutQuery = (BOOL) n;
- break;
- }
-
- default:
- NSLog(@"Unknown message from server thread.");
- }
-}
-
-// Quit the X server when the X client process finishes
-- (void)clientProcessDone:(int)clientStatus
-{
- if (WIFEXITED(clientStatus)) {
- int exitStatus = WEXITSTATUS(clientStatus);
- if (exitStatus != 0)
- NSLog(@"X client process terminated with status %i.", exitStatus);
- } else {
- NSLog(@"X client process terminated abnormally.");
- }
-
- if (!quartzServerQuitting) {
- [NSApp terminate:nil]; // quit if we aren't already
- }
-}
-
-// User selected an X11 window from a menu
-- (IBAction)itemSelected:(id)sender
-{
- xEvent xe;
-
- [NSApp activateIgnoringOtherApps:YES];
-
- // Notify the client of the change through the X server thread
- xe.u.u.type = kXDarwinControllerNotify;
- xe.u.clientMessage.u.l.longs0 = AppleWMWindowMenuItem;
- xe.u.clientMessage.u.l.longs1 = [sender tag];
- [self sendXEvent:&xe];
-}
-
-// User selected Next from window menu
-- (IBAction)nextWindow:(id)sender
-{
- QuartzMessageServerThread(kXDarwinControllerNotify, 1,
- AppleWMNextWindow);
-}
-
-// User selected Previous from window menu
-- (IBAction)previousWindow:(id)sender
-{
- QuartzMessageServerThread(kXDarwinControllerNotify, 1,
- AppleWMPreviousWindow);
-}
-
-/*
- * The XPR implementation handles close, minimize, and zoom actions for X11
- * windows here, while CR handles these in the NSWindow class.
- */
-
-// Handle Close from window menu for X11 window in XPR implementation
-- (IBAction)performClose:(id)sender
-{
- QuartzMessageServerThread(kXDarwinControllerNotify, 1,
- AppleWMCloseWindow);
-}
-
-// Handle Minimize from window menu for X11 window in XPR implementation
-- (IBAction)performMiniaturize:(id)sender
-{
- QuartzMessageServerThread(kXDarwinControllerNotify, 1,
- AppleWMMinimizeWindow);
-}
-
-// Handle Zoom from window menu for X11 window in XPR implementation
-- (IBAction)performZoom:(id)sender
-{
- QuartzMessageServerThread(kXDarwinControllerNotify, 1,
- AppleWMZoomWindow);
-}
-
-// Handle "Bring All to Front" from window menu
-- (IBAction)bringAllToFront:(id)sender
-{
- if ((AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0) {
- QuartzMessageServerThread(kXDarwinControllerNotify, 1,
- AppleWMBringAllToFront);
- } else {
- [NSApp arrangeInFront:nil];
- }
-}
-
-// This ends up at the end of the responder chain.
-- (IBAction)copy:(id)sender
-{
- QuartzMessageServerThread(kXDarwinPasteboardNotify, 1,
- AppleWMCopyToPasteboard);
-}
-
-// Set whether or not X11 is active and should receive all key events
-- (void)activateX11:(BOOL)state
-{
- if (state) {
- QuartzMessageServerThread(kXDarwinActivate, 0);
- }
- else {
- QuartzMessageServerThread(kXDarwinDeactivate, 0);
- }
-
- x11Active = state;
-}
-
-// Some NSWindow became the key window
-- (void)windowBecameKey:(NSNotification *)notification
-{
- NSWindow *window = [notification object];
-
- if (quartzProcs->IsX11Window(window, [window windowNumber])) {
- if (!x11Active)
- [self activateX11:YES];
- } else {
- if (x11Active)
- [self activateX11:NO];
- }
-}
-
-// Set the Apple-WM specifiable part of the window menu
-- (void)setX11WindowList:(NSArray *)list
-{
- NSMenuItem *item;
- int first, count, i;
- xEvent xe;
-
- /* Work backwards so we don't mess up the indices */
- first = [windowMenu indexOfItem:windowSeparator] + 1;
- if (first > 0) {
- count = [windowMenu numberOfItems];
- for (i = count - 1; i >= first; i--)
- [windowMenu removeItemAtIndex:i];
- } else {
- windowSeparator = (NSMenuItem *)[windowMenu addItemWithTitle:@""
- action:nil
- keyEquivalent:@""];
- }
-
- count = [dockMenu numberOfItems];
- for (i = 0; i < count; i++)
- [dockMenu removeItemAtIndex:0];
-
- count = [list count];
-
- for (i = 0; i < count; i++)
- {
- NSString *name, *shortcut;
-
- name = [[list objectAtIndex:i] objectAtIndex:0];
- shortcut = [[list objectAtIndex:i] objectAtIndex:1];
-
- item = (NSMenuItem *)[windowMenu addItemWithTitle:name
- action:@selector(itemSelected:)
- keyEquivalent:shortcut];
- [item setTarget:self];
- [item setTag:i];
- [item setEnabled:YES];
-
- item = (NSMenuItem *)[dockMenu insertItemWithTitle:name
- action:@selector(itemSelected:)
- keyEquivalent:shortcut atIndex:i];
- [item setTarget:self];
- [item setTag:i];
- [item setEnabled:YES];
- }
-
- if (checkedWindowItem >= 0 && checkedWindowItem < count)
- {
- item = (NSMenuItem *)[windowMenu itemAtIndex:first + checkedWindowItem];
- [item setState:NSOnState];
- item = (NSMenuItem *)[dockMenu itemAtIndex:checkedWindowItem];
- [item setState:NSOnState];
- }
-
- // Notify the client of the change through the X server thread
- xe.u.u.type = kXDarwinControllerNotify;
- xe.u.clientMessage.u.l.longs0 = AppleWMWindowMenuNotify;
- [self sendXEvent:&xe];
-}
-
-// Set the checked item on the Apple-WM specifiable window menu
-- (void)setX11WindowCheck:(NSNumber *)nn
-{
- NSMenuItem *item;
- int first, count;
- int n = [nn intValue];
-
- first = [windowMenu indexOfItem:windowSeparator] + 1;
- count = [windowMenu numberOfItems] - first;
-
- if (checkedWindowItem >= 0 && checkedWindowItem < count)
- {
- item = (NSMenuItem *)[windowMenu itemAtIndex:first + checkedWindowItem];
- [item setState:NSOffState];
- item = (NSMenuItem *)[dockMenu itemAtIndex:checkedWindowItem];
- [item setState:NSOffState];
- }
- if (n >= 0 && n < count)
- {
- item = (NSMenuItem *)[windowMenu itemAtIndex:first + n];
- [item setState:NSOnState];
- item = (NSMenuItem *)[dockMenu itemAtIndex:n];
- [item setState:NSOnState];
- }
- checkedWindowItem = n;
-}
-
-// Return whether or not a menu item should be enabled
-- (BOOL)validateMenuItem:(NSMenuItem *)item
-{
- NSMenu *menu = [item menu];
-
- if (menu == windowMenu && [item tag] == 30) {
- // Mode switch panel is for fullscreen only
- return !quartzRootless;
- }
- else if ((menu == windowMenu && [item tag] != 40) || menu == dockMenu) {
- // The special window and dock menu items should not be active unless
- // there is an AppleWM-aware window manager running.
- return (AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0;
- }
- else {
- return TRUE;
- }
-}
-
-/*
- * Application Delegate Methods
- */
-
-- (void)applicationDidChangeScreenParameters:(NSNotification *)aNotification
-{
- if (quartzProcs->ScreenChanged)
- quartzProcs->ScreenChanged();
-}
-
-- (void)applicationDidHide:(NSNotification *)aNotification
-{
- if ((AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0) {
- QuartzMessageServerThread(kXDarwinControllerNotify, 1,
- AppleWMHideAll);
- } else {
- if (quartzProcs->HideWindows)
- quartzProcs->HideWindows(YES);
- }
-}
-
-- (void)applicationDidUnhide:(NSNotification *)aNotification
-{
- if ((AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0) {
- QuartzMessageServerThread(kXDarwinControllerNotify, 1,
- AppleWMShowAll);
- } else {
- if (quartzProcs->HideWindows)
- quartzProcs->HideWindows(NO);
- }
-}
-
-// Called when the user clicks the application icon,
-// but not when Cmd-Tab is used.
-// Rootless: Don't switch until applicationWillBecomeActive.
-- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication
- hasVisibleWindows:(BOOL)flag
-{
- if ([Preferences dockSwitch] && !quartzRootless) {
- [self showServer:YES];
- }
- return NO;
-}
-
-- (void)applicationWillResignActive:(NSNotification *)aNotification
-{
- [self showServer:NO];
-}
-
-- (void)applicationWillBecomeActive:(NSNotification *)aNotification
-{
- if (quartzRootless) {
- [self showServer:YES];
-
- // If there is no AppleWM-aware window manager, we can't allow
- // interleaving of Aqua and X11 windows.
- if ((AppleWMSelectedEvents() & AppleWMControllerNotifyMask) == 0) {
- [NSApp arrangeInFront:nil];
- }
- }
-}
-
-// Called when the user opens a document type that we claim (ie. an X11 executable).
-- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
-{
- if (serverState == server_Running) {
- [self runClient:filename];
- return YES;
- }
- else if (serverState == server_NotStarted || serverState == server_Starting) {
- if ([filename UTF8String][0] != ':') { // Ignore display names
- if (!pendingClients) {
- pendingClients = [[NSMutableArray alloc] initWithCapacity:1];
- }
- [pendingClients addObject:filename];
- return YES; // Assume it will launch successfully
- }
- return NO;
- }
-
- // If the server is quitting or done,
- // its too late to launch new clients this time.
- return NO;
-}
-
-@end
-
-
-// Send a message to the main thread, which calls handlePortMessage in
-// response. Must only be called from the X server thread because
-// NSPort is not thread safe.
-void QuartzMessageMainThread(unsigned msg, void *data, unsigned length)
-{
- if (length > 0) {
- NSData *eventData = [NSData dataWithBytes:data length:length];
- NSArray *eventArray = [NSArray arrayWithObject:eventData];
- NSPortMessage *newMessage =
- [[NSPortMessage alloc]
- initWithSendPort:signalPort
- receivePort:returnPort components:eventArray];
- [newMessage setMsgid:msg];
- [newMessage sendBeforeDate:[NSDate distantPast]];
- [newMessage release];
- } else {
- [signalMessage setMsgid:msg];
- [signalMessage sendBeforeDate:[NSDate distantPast]];
- }
-}
-
-void
-QuartzSetWindowMenu(int nitems, const char **items,
- const char *shortcuts)
-{
- NSMutableArray *array;
- int i;
-
- array = [[NSMutableArray alloc] initWithCapacity:nitems];
-
- for (i = 0; i < nitems; i++) {
- NSMutableArray *subarray = [NSMutableArray arrayWithCapacity:2];
- NSString *string = [NSString stringWithUTF8String:items[i]];
-
- [subarray addObject:string];
-
- if (shortcuts[i] != 0) {
- NSString *number = [NSString stringWithFormat:@"%d",
- shortcuts[i]];
- [subarray addObject:number];
- } else
- [subarray addObject:@""];
-
- [array addObject:subarray];
- }
-
- /* Send the array of strings over to the main thread. */
- /* Will be released in main thread. */
- QuartzMessageMainThread(kQuartzSetWindowMenu, &array, sizeof(NSArray *));
-}
-
-// Handle SIGCHLD signals
-static void childDone(int sig)
-{
- int clientStatus;
-
- if (clientPID == 0)
- return;
-
- // Make sure it was the client task that finished
- if (waitpid(clientPID, &clientStatus, WNOHANG) == clientPID) {
- if (WIFSTOPPED(clientStatus))
- return;
- clientPID = 0;
- [oneXServer clientProcessDone:clientStatus];
- }
-}
-
-static void powerDidChange(
- void *x,
- io_service_t y,
- natural_t messageType,
- void *messageArgument)
-{
- switch (messageType) {
- case kIOMessageSystemWillSleep:
- if (!quartzRootless) {
- [oneXServer setRootClip:FALSE];
- }
- IOAllowPowerChange(root_port, (long)messageArgument);
- break;
- case kIOMessageCanSystemSleep:
- IOAllowPowerChange(root_port, (long)messageArgument);
- break;
- case kIOMessageSystemHasPoweredOn:
- if (!quartzRootless) {
- [oneXServer setRootClip:TRUE];
- }
- break;
- }
-
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/applewm.c b/nx-X11/programs/Xserver/hw/darwin/quartz/applewm.c
deleted file mode 100644
index d79df4cee..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/applewm.c
+++ /dev/null
@@ -1,722 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/applewm.c,v 1.2 2003/09/16 00:36:13 torrey Exp $ */
-/**************************************************************************
-
-Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved.
-Copyright (c) 2003 Torrey T. Lyons. 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 the rights to use, copy, modify, merge, publish,
-distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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.
-
-**************************************************************************/
-
-#include "quartzCommon.h"
-
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include "misc.h"
-#include "dixstruct.h"
-#include "globals.h"
-#include "extnsionst.h"
-#include "colormapst.h"
-#include "cursorstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "servermd.h"
-#include "swaprep.h"
-#include "propertyst.h"
-#include <X11/Xatom.h>
-#include "darwin.h"
-#define _APPLEWM_SERVER_
-#include "applewmstr.h"
-#include "applewmExt.h"
-
-#define DEFINE_ATOM_HELPER(func,atom_name) \
-static Atom func (void) { \
- static int generation; \
- static Atom atom; \
- if (generation != serverGeneration) { \
- generation = serverGeneration; \
- atom = MakeAtom (atom_name, strlen (atom_name), TRUE); \
- } \
- return atom; \
-}
-
-DEFINE_ATOM_HELPER(xa_native_screen_origin, "_NATIVE_SCREEN_ORIGIN")
-DEFINE_ATOM_HELPER (xa_apple_no_order_in, "_APPLE_NO_ORDER_IN")
-
-static AppleWMProcsPtr appleWMProcs;
-
-static int WMErrorBase;
-
-static DISPATCH_PROC(ProcAppleWMDispatch);
-static DISPATCH_PROC(SProcAppleWMDispatch);
-
-static void AppleWMResetProc(ExtensionEntry* extEntry);
-
-static unsigned char WMReqCode = 0;
-static int WMEventBase = 0;
-
-static RESTYPE ClientType, EventType; /* resource types for event masks */
-static XID eventResource;
-
-/* Currently selected events */
-static unsigned int eventMask = 0;
-
-static int WMFreeClient (pointer data, XID id);
-static int WMFreeEvents (pointer data, XID id);
-static void SNotifyEvent(xAppleWMNotifyEvent *from, xAppleWMNotifyEvent *to);
-
-typedef struct _WMEvent *WMEventPtr;
-typedef struct _WMEvent {
- WMEventPtr next;
- ClientPtr client;
- XID clientResource;
- unsigned int mask;
-} WMEventRec;
-
-static inline BoxRec
-make_box (int x, int y, int w, int h)
-{
- BoxRec r;
- r.x1 = x;
- r.y1 = y;
- r.x2 = x + w;
- r.y2 = y + h;
- return r;
-}
-
-void
-AppleWMExtensionInit(
- AppleWMProcsPtr procsPtr)
-{
- ExtensionEntry* extEntry;
-
- ClientType = CreateNewResourceType(WMFreeClient);
- EventType = CreateNewResourceType(WMFreeEvents);
- eventResource = FakeClientID(0);
-
- if (ClientType && EventType &&
- (extEntry = AddExtension(APPLEWMNAME,
- AppleWMNumberEvents,
- AppleWMNumberErrors,
- ProcAppleWMDispatch,
- SProcAppleWMDispatch,
- AppleWMResetProc,
- StandardMinorOpcode)))
- {
- WMReqCode = (unsigned char)extEntry->base;
- WMErrorBase = extEntry->errorBase;
- WMEventBase = extEntry->eventBase;
- EventSwapVector[WMEventBase] = (EventSwapPtr) SNotifyEvent;
- appleWMProcs = procsPtr;
- }
-}
-
-/*ARGSUSED*/
-static void
-AppleWMResetProc (
- ExtensionEntry* extEntry
-)
-{
-}
-
-/* Updates the _NATIVE_SCREEN_ORIGIN property on the given root window. */
-void
-AppleWMSetScreenOrigin(
- WindowPtr pWin
-)
-{
- long data[2];
-
- data[0] = (dixScreenOrigins[pWin->drawable.pScreen->myNum].x
- + darwinMainScreenX);
- data[1] = (dixScreenOrigins[pWin->drawable.pScreen->myNum].y
- + darwinMainScreenY);
-
- ChangeWindowProperty(pWin, xa_native_screen_origin(), XA_INTEGER,
- 32, PropModeReplace, 2, data, TRUE);
-}
-
-/* Window managers can set the _APPLE_NO_ORDER_IN property on windows
- that are being genie-restored from the Dock. We want them to
- be mapped but remain ordered-out until the animation
- completes (when the Dock will order them in). */
-Bool
-AppleWMDoReorderWindow(
- WindowPtr pWin
-)
-{
- Atom atom;
- PropertyPtr prop;
-
- atom = xa_apple_no_order_in();
- for (prop = wUserProps(pWin); prop != NULL; prop = prop->next)
- {
- if (prop->propertyName == atom && prop->type == atom)
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-static int
-ProcAppleWMQueryVersion(
- register ClientPtr client
-)
-{
- xAppleWMQueryVersionReply rep;
- register int n;
-
- REQUEST_SIZE_MATCH(xAppleWMQueryVersionReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.majorVersion = APPLE_WM_MAJOR_VERSION;
- rep.minorVersion = APPLE_WM_MINOR_VERSION;
- rep.patchVersion = APPLE_WM_PATCH_VERSION;
- if (client->swapped) {
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, n);
- }
- WriteToClient(client, sizeof(xAppleWMQueryVersionReply), (char *)&rep);
- return (client->noClientException);
-}
-
-
-/* events */
-
-static inline void
-updateEventMask (WMEventPtr *pHead)
-{
- WMEventPtr pCur;
-
- eventMask = 0;
- for (pCur = *pHead; pCur != NULL; pCur = pCur->next)
- eventMask |= pCur->mask;
-}
-
-/*ARGSUSED*/
-static int
-WMFreeClient (data, id)
- pointer data;
- XID id;
-{
- WMEventPtr pEvent;
- WMEventPtr *pHead, pCur, pPrev;
-
- pEvent = (WMEventPtr) data;
- pHead = (WMEventPtr *) LookupIDByType(eventResource, EventType);
- if (pHead) {
- pPrev = 0;
- for (pCur = *pHead; pCur && pCur != pEvent; pCur=pCur->next)
- pPrev = pCur;
- if (pCur) {
- if (pPrev)
- pPrev->next = pEvent->next;
- else
- *pHead = pEvent->next;
- }
- updateEventMask (pHead);
- }
- xfree ((pointer) pEvent);
- return 1;
-}
-
-/*ARGSUSED*/
-static int
-WMFreeEvents (data, id)
- pointer data;
- XID id;
-{
- WMEventPtr *pHead, pCur, pNext;
-
- pHead = (WMEventPtr *) data;
- for (pCur = *pHead; pCur; pCur = pNext) {
- pNext = pCur->next;
- FreeResource (pCur->clientResource, ClientType);
- xfree ((pointer) pCur);
- }
- xfree ((pointer) pHead);
- eventMask = 0;
- return 1;
-}
-
-static int
-ProcAppleWMSelectInput (client)
- register ClientPtr client;
-{
- REQUEST(xAppleWMSelectInputReq);
- WMEventPtr pEvent, pNewEvent, *pHead;
- XID clientResource;
-
- REQUEST_SIZE_MATCH (xAppleWMSelectInputReq);
- pHead = (WMEventPtr *)SecurityLookupIDByType(client,
- eventResource, EventType, SecurityWriteAccess);
- if (stuff->mask != 0) {
- if (pHead) {
- /* check for existing entry. */
- for (pEvent = *pHead; pEvent; pEvent = pEvent->next)
- {
- if (pEvent->client == client)
- {
- pEvent->mask = stuff->mask;
- updateEventMask (pHead);
- return Success;
- }
- }
- }
-
- /* build the entry */
- pNewEvent = (WMEventPtr) xalloc (sizeof (WMEventRec));
- if (!pNewEvent)
- return BadAlloc;
- pNewEvent->next = 0;
- pNewEvent->client = client;
- pNewEvent->mask = stuff->mask;
- /*
- * add a resource that will be deleted when
- * the client goes away
- */
- clientResource = FakeClientID (client->index);
- pNewEvent->clientResource = clientResource;
- if (!AddResource (clientResource, ClientType, (pointer)pNewEvent))
- return BadAlloc;
- /*
- * create a resource to contain a pointer to the list
- * of clients selecting input. This must be indirect as
- * the list may be arbitrarily rearranged which cannot be
- * done through the resource database.
- */
- if (!pHead)
- {
- pHead = (WMEventPtr *) xalloc (sizeof (WMEventPtr));
- if (!pHead ||
- !AddResource (eventResource, EventType, (pointer)pHead))
- {
- FreeResource (clientResource, RT_NONE);
- return BadAlloc;
- }
- *pHead = 0;
- }
- pNewEvent->next = *pHead;
- *pHead = pNewEvent;
- updateEventMask (pHead);
- } else if (stuff->mask == 0) {
- /* delete the interest */
- if (pHead) {
- pNewEvent = 0;
- for (pEvent = *pHead; pEvent; pEvent = pEvent->next) {
- if (pEvent->client == client)
- break;
- pNewEvent = pEvent;
- }
- if (pEvent) {
- FreeResource (pEvent->clientResource, ClientType);
- if (pNewEvent)
- pNewEvent->next = pEvent->next;
- else
- *pHead = pEvent->next;
- xfree (pEvent);
- updateEventMask (pHead);
- }
- }
- } else {
- client->errorValue = stuff->mask;
- return BadValue;
- }
- return Success;
-}
-
-/*
- * deliver the event
- */
-
-void
-AppleWMSendEvent (type, mask, which, arg)
- int type, which, arg;
- unsigned int mask;
-{
- WMEventPtr *pHead, pEvent;
- ClientPtr client;
- xAppleWMNotifyEvent se;
-
- pHead = (WMEventPtr *) LookupIDByType(eventResource, EventType);
- if (!pHead)
- return;
- for (pEvent = *pHead; pEvent; pEvent = pEvent->next) {
- client = pEvent->client;
- if ((pEvent->mask & mask) == 0
- || client == serverClient || client->clientGone)
- {
- continue;
- }
- se.type = type + WMEventBase;
- se.kind = which;
- se.arg = arg;
- se.sequenceNumber = client->sequence;
- se.time = currentTime.milliseconds;
- WriteEventsToClient (client, 1, (xEvent *) &se);
- }
-}
-
-/* Safe to call from any thread. */
-unsigned int
-AppleWMSelectedEvents (void)
-{
- return eventMask;
-}
-
-
-/* general utility functions */
-
-static int
-ProcAppleWMDisableUpdate(
- register ClientPtr client
-)
-{
- REQUEST_SIZE_MATCH(xAppleWMDisableUpdateReq);
-
- appleWMProcs->DisableUpdate();
-
- return (client->noClientException);
-}
-
-static int
-ProcAppleWMReenableUpdate(
- register ClientPtr client
-)
-{
- REQUEST_SIZE_MATCH(xAppleWMReenableUpdateReq);
-
- appleWMProcs->EnableUpdate();
-
- return (client->noClientException);
-}
-
-
-/* window functions */
-
-static int
-ProcAppleWMSetWindowMenu(
- register ClientPtr client
-)
-{
- const char *bytes, **items;
- char *shortcuts;
- int max_len, nitems, i, j;
- REQUEST(xAppleWMSetWindowMenuReq);
-
- REQUEST_AT_LEAST_SIZE(xAppleWMSetWindowMenuReq);
-
- nitems = stuff->nitems;
- items = xalloc (sizeof (char *) * nitems);
- shortcuts = xalloc (sizeof (char) * nitems);
-
- max_len = (stuff->length << 2) - sizeof(xAppleWMSetWindowMenuReq);
- bytes = (char *) &stuff[1];
-
- for (i = j = 0; i < max_len && j < nitems;)
- {
- shortcuts[j] = bytes[i++];
- items[j++] = bytes + i;
-
- while (i < max_len)
- {
- if (bytes[i++] == 0)
- break;
- }
- }
-
- QuartzSetWindowMenu (nitems, items, shortcuts);
-
- free(items);
- free(shortcuts);
-
- return (client->noClientException);
-}
-
-static int
-ProcAppleWMSetWindowMenuCheck(
- register ClientPtr client
-)
-{
- REQUEST(xAppleWMSetWindowMenuCheckReq);
-
- REQUEST_SIZE_MATCH(xAppleWMSetWindowMenuCheckReq);
-
- QuartzMessageMainThread(kQuartzSetWindowMenuCheck, &stuff->index,
- sizeof(stuff->index));
-
- return (client->noClientException);
-}
-
-static int
-ProcAppleWMSetFrontProcess(
- register ClientPtr client
-)
-{
- REQUEST_SIZE_MATCH(xAppleWMSetFrontProcessReq);
-
- QuartzMessageMainThread(kQuartzSetFrontProcess, NULL, 0);
-
- return (client->noClientException);
-}
-
-static int
-ProcAppleWMSetWindowLevel(
- register ClientPtr client
-)
-{
- REQUEST(xAppleWMSetWindowLevelReq);
- WindowPtr pWin;
- int errno;
-
- REQUEST_SIZE_MATCH(xAppleWMSetWindowLevelReq);
-
- if (!(pWin = SecurityLookupWindow((Drawable)stuff->window,
- client, SecurityReadAccess)))
- {
- return BadValue;
- }
-
- if (stuff->level < 0 || stuff->level >= AppleWMNumWindowLevels) {
- return BadValue;
- }
-
- errno = appleWMProcs->SetWindowLevel(pWin, stuff->level);
- if (errno != Success) {
- return errno;
- }
-
- return (client->noClientException);
-}
-
-static int
-ProcAppleWMSetCanQuit(
- register ClientPtr client
-)
-{
- REQUEST(xAppleWMSetCanQuitReq);
-
- REQUEST_SIZE_MATCH(xAppleWMSetCanQuitReq);
-
- QuartzMessageMainThread(kQuartzSetCanQuit, &stuff->state,
- sizeof(stuff->state));
-
- return (client->noClientException);
-}
-
-
-/* frame functions */
-
-static int
-ProcAppleWMFrameGetRect(
- register ClientPtr client
-)
-{
- xAppleWMFrameGetRectReply rep;
- BoxRec ir, or, rr;
- REQUEST(xAppleWMFrameGetRectReq);
-
- REQUEST_SIZE_MATCH(xAppleWMFrameGetRectReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- ir = make_box (stuff->ix, stuff->iy, stuff->iw, stuff->ih);
- or = make_box (stuff->ox, stuff->oy, stuff->ow, stuff->oh);
-
- if (appleWMProcs->FrameGetRect(stuff->frame_rect,
- stuff->frame_class,
- &or, &ir, &rr) != Success)
- {
- return BadValue;
- }
-
- rep.x = rr.x1;
- rep.y = rr.y1;
- rep.w = rr.x2 - rr.x1;
- rep.h = rr.y2 - rr.y1;
-
- WriteToClient(client, sizeof(xAppleWMFrameGetRectReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-ProcAppleWMFrameHitTest(
- register ClientPtr client
-)
-{
- xAppleWMFrameHitTestReply rep;
- BoxRec ir, or;
- int ret;
- REQUEST(xAppleWMFrameHitTestReq);
-
- REQUEST_SIZE_MATCH(xAppleWMFrameHitTestReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- ir = make_box (stuff->ix, stuff->iy, stuff->iw, stuff->ih);
- or = make_box (stuff->ox, stuff->oy, stuff->ow, stuff->oh);
-
- if (appleWMProcs->FrameHitTest(stuff->frame_class, stuff->px,
- stuff->py, &or, &ir, &ret) != Success)
- {
- return BadValue;
- }
-
- rep.ret = ret;
-
- WriteToClient(client, sizeof(xAppleWMFrameHitTestReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-ProcAppleWMFrameDraw(
- register ClientPtr client
-)
-{
- BoxRec ir, or;
- unsigned int title_length, title_max;
- unsigned char *title_bytes;
- REQUEST(xAppleWMFrameDrawReq);
- WindowPtr pWin;
-
- REQUEST_AT_LEAST_SIZE(xAppleWMFrameDrawReq);
-
- if (!(pWin = SecurityLookupWindow((Drawable)stuff->window,
- client, SecurityReadAccess)))
- {
- return BadValue;
- }
-
- ir = make_box (stuff->ix, stuff->iy, stuff->iw, stuff->ih);
- or = make_box (stuff->ox, stuff->oy, stuff->ow, stuff->oh);
-
- title_length = stuff->title_length;
- title_max = (stuff->length << 2) - sizeof(xAppleWMFrameDrawReq);
-
- if (title_max < title_length)
- return BadValue;
-
- title_bytes = (unsigned char *) &stuff[1];
-
- errno = appleWMProcs->FrameDraw(pWin, stuff->frame_class,
- stuff->frame_attr, &or, &ir,
- title_length, title_bytes);
- if (errno != Success) {
- return errno;
- }
-
- return (client->noClientException);
-}
-
-
-/* dispatch */
-
-static int
-ProcAppleWMDispatch (
- register ClientPtr client
-)
-{
- REQUEST(xReq);
-
- switch (stuff->data)
- {
- case X_AppleWMQueryVersion:
- return ProcAppleWMQueryVersion(client);
- }
-
- if (!LocalClient(client))
- return WMErrorBase + AppleWMClientNotLocal;
-
- switch (stuff->data)
- {
- case X_AppleWMSelectInput:
- return ProcAppleWMSelectInput(client);
- case X_AppleWMDisableUpdate:
- return ProcAppleWMDisableUpdate(client);
- case X_AppleWMReenableUpdate:
- return ProcAppleWMReenableUpdate(client);
- case X_AppleWMSetWindowMenu:
- return ProcAppleWMSetWindowMenu(client);
- case X_AppleWMSetWindowMenuCheck:
- return ProcAppleWMSetWindowMenuCheck(client);
- case X_AppleWMSetFrontProcess:
- return ProcAppleWMSetFrontProcess(client);
- case X_AppleWMSetWindowLevel:
- return ProcAppleWMSetWindowLevel(client);
- case X_AppleWMSetCanQuit:
- return ProcAppleWMSetCanQuit(client);
- case X_AppleWMFrameGetRect:
- return ProcAppleWMFrameGetRect(client);
- case X_AppleWMFrameHitTest:
- return ProcAppleWMFrameHitTest(client);
- case X_AppleWMFrameDraw:
- return ProcAppleWMFrameDraw(client);
- default:
- return BadRequest;
- }
-}
-
-static void
-SNotifyEvent(from, to)
- xAppleWMNotifyEvent *from, *to;
-{
- to->type = from->type;
- to->kind = from->kind;
- cpswaps (from->sequenceNumber, to->sequenceNumber);
- cpswapl (from->time, to->time);
- cpswapl (from->arg, to->arg);
-}
-
-static int
-SProcAppleWMQueryVersion(
- register ClientPtr client
-)
-{
- register int n;
- REQUEST(xAppleWMQueryVersionReq);
- swaps(&stuff->length, n);
- return ProcAppleWMQueryVersion(client);
-}
-
-static int
-SProcAppleWMDispatch (
- register ClientPtr client
-)
-{
- REQUEST(xReq);
-
- /* It is bound to be non-local when there is byte swapping */
- if (!LocalClient(client))
- return WMErrorBase + AppleWMClientNotLocal;
-
- /* only local clients are allowed WM access */
- switch (stuff->data)
- {
- case X_AppleWMQueryVersion:
- return SProcAppleWMQueryVersion(client);
- default:
- return BadRequest;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/applewmExt.h b/nx-X11/programs/Xserver/hw/darwin/quartz/applewmExt.h
deleted file mode 100644
index b27083ac7..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/applewmExt.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * External interface for the server's AppleWM support
- */
-/**************************************************************************
-
-Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved.
-Copyright (c) 2003-2004 Torrey T. Lyons. 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 the rights to use, copy, modify, merge, publish,
-distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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.
-
-**************************************************************************/
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/applewmExt.h,v 1.2 2003/11/11 23:48:41 torrey Exp $ */
-
-#ifndef _APPLEWMEXT_H_
-#define _APPLEWMEXT_H_
-
-#include "window.h"
-
-typedef int (*DisableUpdateProc)(void);
-typedef int (*EnableUpdateProc)(void);
-typedef int (*SetWindowLevelProc)(WindowPtr pWin, int level);
-typedef int (*FrameGetRectProc)(int type, int class, const BoxRec *outer,
- const BoxRec *inner, BoxRec *ret);
-typedef int (*FrameHitTestProc)(int class, int x, int y,
- const BoxRec *outer,
- const BoxRec *inner, int *ret);
-typedef int (*FrameDrawProc)(WindowPtr pWin, int class, unsigned int attr,
- const BoxRec *outer, const BoxRec *inner,
- unsigned int title_len,
- const unsigned char *title_bytes);
-
-/*
- * AppleWM implementation function list
- */
-typedef struct _AppleWMProcs {
- DisableUpdateProc DisableUpdate;
- EnableUpdateProc EnableUpdate;
- SetWindowLevelProc SetWindowLevel;
- FrameGetRectProc FrameGetRect;
- FrameHitTestProc FrameHitTest;
- FrameDrawProc FrameDraw;
-} AppleWMProcsRec, *AppleWMProcsPtr;
-
-void AppleWMExtensionInit(
- AppleWMProcsPtr procsPtr
-);
-
-void AppleWMSetScreenOrigin(
- WindowPtr pWin
-);
-
-Bool AppleWMDoReorderWindow(
- WindowPtr pWin
-);
-
-void AppleWMSendEvent(
- int /* type */,
- unsigned int /* mask */,
- int /* which */,
- int /* arg */
-);
-
-unsigned int AppleWMSelectedEvents(
- void
-);
-
-#endif /* _APPLEWMEXT_H_ */
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/Imakefile b/nx-X11/programs/Xserver/hw/darwin/quartz/cr/Imakefile
deleted file mode 100644
index 8746063a8..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/Imakefile
+++ /dev/null
@@ -1,35 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/quartz/cr/Imakefile,v 1.3 2004/03/19 02:05:29 torrey Exp $
-
-#include <Server.tmpl>
-
-LinkSourceFile(quartzCursor.c,../fullscreen)
-LinkSourceFile(quartzCursor.h,../fullscreen)
-
-SRCS = crAppleWM.m \
- crFrame.m \
- crScreen.m \
- quartzCursor.c \
- XView.m
-
-OBJS = crAppleWM.o \
- crFrame.o \
- crScreen.o \
- quartzCursor.o \
- XView.o
-
-INCLUDES = -I. -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(SERVERSRC)/render \
- -I$(SERVERSRC)/miext/rootless -I$(SERVERSRC)/miext/damage \
- -I$(EXTINCSRC) -I.. -I../.. \
- -I$(SERVERSRC)/miext/rootless/safeAlpha -I$(SERVERSRC)/Xext \
- -I$(APPLEWMLIBSRC)
-
-#if OSMajorVersion < 6
-DEFINES = -DDEFER_NSWINDOW
-#endif
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(cr,$(OBJS))
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/XView.h b/nx-X11/programs/Xserver/hw/darwin/quartz/cr/XView.h
deleted file mode 100644
index 01f5b04b4..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/XView.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * NSView subclass for Mac OS X rootless X server
- *
- * Copyright (c) 2001 Greg Parker. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/XView.h,v 1.2 2002/07/15 19:58:31 torrey Exp $ */
-
-#import <Cocoa/Cocoa.h>
-
-@interface XView : NSQuickDrawView
-
-- (BOOL)isFlipped;
-- (BOOL)isOpaque;
-- (BOOL)acceptsFirstResponder;
-- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent;
-- (BOOL)shouldDelayWindowOrderingForEvent:(NSEvent *)theEvent;
-
-- (void)mouseDown:(NSEvent *)anEvent;
-
-@end
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/XView.m b/nx-X11/programs/Xserver/hw/darwin/quartz/cr/XView.m
deleted file mode 100644
index 5feac6b42..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/XView.m
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * NSView subclass for Mac OS X rootless X server
- *
- * Each rootless window contains an instance of this class.
- * This class handles events while drawing is handled by Carbon
- * code in the rootless Aqua implementation.
- *
- * Copyright (c) 2001 Greg Parker. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/cr/XView.m,v 1.1 2003/06/07 05:49:07 torrey Exp $ */
-
-#import "XView.h"
-
-
-@implementation XView
-
-- (BOOL)isFlipped
-{
- return NO;
-}
-
-- (BOOL)isOpaque
-{
- return YES;
-}
-
-- (BOOL)acceptsFirstResponder
-{
- return YES;
-}
-
-- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
-{
- return YES;
-}
-
-- (BOOL)shouldDelayWindowOrderingForEvent:(NSEvent *)theEvent
-{
- return YES;
-}
-
-- (void)mouseDown:(NSEvent *)anEvent
-{
- // Only X is allowed to restack windows.
- [NSApp preventWindowOrdering];
- if (! [NSApp isActive]) {
- [NSApp activateIgnoringOtherApps:YES];
- }
- [[self nextResponder] mouseDown:anEvent];
-}
-
-@end
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/cr.h b/nx-X11/programs/Xserver/hw/darwin/quartz/cr/cr.h
deleted file mode 100644
index 94133e4af..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/cr.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Internal definitions of the Cocoa rootless implementation
- */
-/*
- * Copyright (c) 2003 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86$ */
-
-#ifndef _CR_H
-#define _CR_H
-
-#ifdef __OBJC__
-#import <Cocoa/Cocoa.h>
-#import "XView.h"
-#else
-typedef struct OpaqueNSWindow NSWindow;
-typedef struct OpaqueXView XView;
-#endif
-
-#undef BOOL
-#define BOOL xBOOL
-#include "screenint.h"
-#include "window.h"
-#undef BOOL
-
-// Predefined style for the window which is about to be framed
-extern WindowPtr nextWindowToFrame;
-extern unsigned int nextWindowStyle;
-
-typedef struct {
- NSWindow *window;
- XView *view;
- GrafPtr port;
- CGContextRef context;
-} CRWindowRec, *CRWindowPtr;
-
-Bool CRInit(ScreenPtr pScreen);
-void CRAppleWMInit(void);
-
-#endif /* _CR_H */
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/crAppleWM.m b/nx-X11/programs/Xserver/hw/darwin/quartz/cr/crAppleWM.m
deleted file mode 100644
index a2e97ff81..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/crAppleWM.m
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Cocoa rootless implementation functions for AppleWM extension
- */
-/*
- * Copyright (c) 2003 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c,v 1.2 2003/06/30 01:45:13 torrey Exp $ */
-
-#include "quartzCommon.h"
-#include "cr.h"
-
-#undef BOOL
-#define BOOL xBOOL
-#include "rootless.h"
-#include "X.h"
-#define _APPLEWM_SERVER_
-#include "applewm.h"
-#include "applewmExt.h"
-#undef BOOL
-
-#define StdDocumentStyleMask (NSTitledWindowMask | \
- NSClosableWindowMask | \
- NSMiniaturizableWindowMask | \
- NSResizableWindowMask)
-
-static int
-CRDisableUpdate(void)
-{
- return Success;
-}
-
-
-static int
-CREnableUpdate(void)
-{
- return Success;
-}
-
-
-static int CRSetWindowLevel(
- WindowPtr pWin,
- int level)
-{
- CRWindowPtr crWinPtr;
-
- crWinPtr = (CRWindowPtr) RootlessFrameForWindow(pWin, TRUE);
- if (crWinPtr == 0)
- return BadWindow;
-
- RootlessStopDrawing(pWin, FALSE);
-
- [crWinPtr->window setLevel:level];
-
- return Success;
-}
-
-
-static int CRFrameGetRect(
- int type,
- int class,
- const BoxRec *outer,
- const BoxRec *inner,
- BoxRec *ret)
-{
- return Success;
-}
-
-
-static int CRFrameHitTest(
- int class,
- int x,
- int y,
- const BoxRec *outer,
- const BoxRec *inner,
- int *ret)
-{
- return 0;
-}
-
-
-static int CRFrameDraw(
- WindowPtr pWin,
- int class,
- unsigned int attr,
- const BoxRec *outer,
- const BoxRec *inner,
- unsigned int title_len,
- const unsigned char *title_bytes)
-{
- CRWindowPtr crWinPtr;
- NSWindow *window;
- Bool hasResizeIndicator;
-
- /* We assume the window has not yet been framed so
- RootlessFrameForWindow() will cause it to be. Record the window
- style so that the appropriate one will be used when it is framed.
- If the window is already framed, we can't change the window
- style and the following will have no effect. */
-
- nextWindowToFrame = pWin;
- if (class == AppleWMFrameClassDocument)
- nextWindowStyle = StdDocumentStyleMask;
- else
- nextWindowStyle = NSBorderlessWindowMask;
-
- crWinPtr = (CRWindowPtr) RootlessFrameForWindow(pWin, TRUE);
- if (crWinPtr == 0)
- return BadWindow;
-
- window = crWinPtr->window;
-
- [window setTitle:[NSString stringWithCString:title_bytes
- length:title_len]];
-
- hasResizeIndicator = (attr & AppleWMFrameGrowBox) ? YES : NO;
- [window setShowsResizeIndicator:hasResizeIndicator];
-
- return Success;
-}
-
-
-static AppleWMProcsRec crAppleWMProcs = {
- CRDisableUpdate,
- CREnableUpdate,
- CRSetWindowLevel,
- CRFrameGetRect,
- CRFrameHitTest,
- CRFrameDraw
-};
-
-
-void CRAppleWMInit(void)
-{
- AppleWMExtensionInit(&crAppleWMProcs);
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/crFrame.m b/nx-X11/programs/Xserver/hw/darwin/quartz/cr/crFrame.m
deleted file mode 100644
index 9427b2e1d..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/crFrame.m
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * Cocoa rootless implementation frame functions
- */
-/*
- * Copyright (c) 2001 Greg Parker. All Rights Reserved.
- * Copyright (c) 2002-2003 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/cr/crFrame.m,v 1.3 2004/10/08 00:35:05 torrey Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/cr/crFrame.m,v 1.9 2004/03/19 02:05:29 torrey Exp $ */
-
-#include "quartzCommon.h"
-#include "cr.h"
-
-#undef BOOL
-#define BOOL xBOOL
-#include "rootless.h"
-#include "applewmExt.h"
-#include "windowstr.h"
-#undef BOOL
-
-WindowPtr nextWindowToFrame = NULL;
-unsigned int nextWindowStyle = 0;
-
-static void CRReshapeFrame(RootlessFrameID wid, RegionPtr pShape);
-
-
-/*
- * CRCreateFrame
- * Create a new physical window.
- * Rootless windows must not autodisplay! Autodisplay can cause a deadlock.
- * Event thread - autodisplay: locks view hierarchy, then window
- * X Server thread - window resize: locks window, then view hierarchy
- * Deadlock occurs if each thread gets one lock and waits for the other.
- */
-static Bool
-CRCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen,
- int newX, int newY, RegionPtr pShape)
-{
- CRWindowPtr crWinPtr;
- NSRect bounds;
- NSWindow *theWindow;
- XView *theView;
- unsigned int theStyleMask = NSBorderlessWindowMask;
-
- crWinPtr = (CRWindowPtr) xalloc(sizeof(CRWindowRec));
-
- bounds = NSMakeRect(newX,
- NSHeight([[NSScreen mainScreen] frame]) -
- newY - pFrame->height,
- pFrame->width, pFrame->height);
-
- // Check if AppleWM has specified a style for this window
- if (pFrame->win == nextWindowToFrame) {
- theStyleMask = nextWindowStyle;
- }
- nextWindowToFrame = NULL;
-
- // Create an NSWindow for the new X11 window
- theWindow = [[NSWindow alloc] initWithContentRect:bounds
- styleMask:theStyleMask
- backing:NSBackingStoreBuffered
-#ifdef DEFER_NSWINDOW
- defer:YES];
-#else
- defer:NO];
-#endif
-
- if (!theWindow) return FALSE;
-
- [theWindow setBackgroundColor:[NSColor clearColor]]; // erase transparent
- [theWindow setAlphaValue:1.0]; // draw opaque
- [theWindow setOpaque:YES]; // changed when window is shaped
-
- [theWindow useOptimizedDrawing:YES]; // Has no overlapping sub-views
- [theWindow setAutodisplay:NO]; // See comment above
- [theWindow disableFlushWindow]; // We do all the flushing manually
- [theWindow setHasShadow:YES]; // All windows have shadows
- [theWindow setReleasedWhenClosed:YES]; // Default, but we want to be sure
-
- theView = [[XView alloc] initWithFrame:bounds];
- [theWindow setContentView:theView];
- [theWindow setInitialFirstResponder:theView];
-
-#ifdef DEFER_NSWINDOW
- // We need the NSWindow to actually be created now.
- // If we had to defer creating it, we have to order it
- // onto the screen to force it to be created.
-
- if (pFrame->win->prevSib) {
- CRWindowPtr crWinPtr = (CRWindowPtr) RootlessFrameForWindow(
- pFrame->win->prevSib, FALSE);
- int upperNum = [crWinPtr->window windowNumber];
- [theWindow orderWindow:NSWindowBelow relativeTo:upperNum];
- } else {
- [theWindow orderFront:nil];
- }
-#endif
-
- [theWindow setAcceptsMouseMovedEvents:YES];
-
- crWinPtr->window = theWindow;
- crWinPtr->view = theView;
-
- [theView lockFocus];
- // Fill the window with white to make sure alpha channel is set
- NSEraseRect(bounds);
- crWinPtr->port = [theView qdPort];
- crWinPtr->context = [[NSGraphicsContext currentContext] graphicsPort];
- // CreateCGContextForPort(crWinPtr->port, &crWinPtr->context);
- [theView unlockFocus];
-
- // Store the implementation private frame ID
- pFrame->wid = (RootlessFrameID) crWinPtr;
-
- // Reshape the frame if it was created shaped.
- if (pShape != NULL)
- CRReshapeFrame(pFrame->wid, pShape);
-
- return TRUE;
-}
-
-
-/*
- * CRDestroyFrame
- * Destroy a frame.
- */
-static void
-CRDestroyFrame(RootlessFrameID wid)
-{
- CRWindowPtr crWinPtr = (CRWindowPtr) wid;
-
- [crWinPtr->window orderOut:nil];
- [crWinPtr->window close];
- [crWinPtr->view release];
- free(crWinPtr);
-}
-
-
-/*
- * CRMoveFrame
- * Move a frame on screen.
- */
-static void
-CRMoveFrame(RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY)
-{
- CRWindowPtr crWinPtr = (CRWindowPtr) wid;
- NSPoint topLeft;
-
- topLeft = NSMakePoint(newX,
- NSHeight([[NSScreen mainScreen] frame]) - newY);
-
- [crWinPtr->window setFrameTopLeftPoint:topLeft];
-}
-
-
-/*
- * CRResizeFrame
- * Move and resize a frame.
- */
-static void
-CRResizeFrame(RootlessFrameID wid, ScreenPtr pScreen,
- int newX, int newY, unsigned int newW, unsigned int newH,
- unsigned int gravity)
-{
- CRWindowPtr crWinPtr = (CRWindowPtr) wid;
- NSRect bounds = NSMakeRect(newX, NSHeight([[NSScreen mainScreen] frame]) -
- newY - newH, newW, newH);
-
- [crWinPtr->window setFrame:bounds display:NO];
-}
-
-
-/*
- * CRRestackFrame
- * Change the frame order. Put the frame behind nextWid or on top if
- * it is NULL. Unmapped frames are mapped by restacking them.
- */
-static void
-CRRestackFrame(RootlessFrameID wid, RootlessFrameID nextWid)
-{
- CRWindowPtr crWinPtr = (CRWindowPtr) wid;
- CRWindowPtr crNextWinPtr = (CRWindowPtr) nextWid;
-
- if (crNextWinPtr) {
- int upperNum = [crNextWinPtr->window windowNumber];
-
- [crWinPtr->window orderWindow:NSWindowBelow relativeTo:upperNum];
- } else {
- [crWinPtr->window makeKeyAndOrderFront:nil];
- }
-}
-
-
-/*
- * CRReshapeFrame
- * Set the shape of a frame.
- */
-static void
-CRReshapeFrame(RootlessFrameID wid, RegionPtr pShape)
-{
- CRWindowPtr crWinPtr = (CRWindowPtr) wid;
- NSRect bounds = [crWinPtr->view frame];
- int winHeight = NSHeight(bounds);
- BoxRec localBox = {0, 0, NSWidth(bounds), winHeight};
-
- [crWinPtr->view lockFocus];
-
- if (pShape != NULL) {
- // Calculate the region outside the new shape.
- miInverse(pShape, pShape, &localBox);
- }
-
- // If window is currently shaped we need to undo the previous shape.
- if (![crWinPtr->window isOpaque]) {
- [[NSColor whiteColor] set];
- NSRectFillUsingOperation(bounds, NSCompositeDestinationAtop);
- }
-
- if (pShape != NULL) {
- int count = REGION_NUM_RECTS(pShape);
- BoxRec *extRects = REGION_RECTS(pShape);
- BoxRec *rects, *end;
-
- // Make transparent if window is now shaped.
- [crWinPtr->window setOpaque:NO];
-
- // Clear the areas outside the window shape
- [[NSColor clearColor] set];
- for (rects = extRects, end = extRects+count; rects < end; rects++) {
- int rectHeight = rects->y2 - rects->y1;
- NSRectFill( NSMakeRect(rects->x1,
- winHeight - rects->y1 - rectHeight,
- rects->x2 - rects->x1, rectHeight) );
- }
- [[NSGraphicsContext currentContext] flushGraphics];
-
- // force update of window shadow
- [crWinPtr->window setHasShadow:NO];
- [crWinPtr->window setHasShadow:YES];
-
- } else {
- [crWinPtr->window setOpaque:YES];
- [[NSGraphicsContext currentContext] flushGraphics];
- }
-
- [crWinPtr->view unlockFocus];
-}
-
-
-/*
- * CRUnmapFrame
- * Unmap a frame.
- */
-static void
-CRUnmapFrame(RootlessFrameID wid)
-{
- CRWindowPtr crWinPtr = (CRWindowPtr) wid;
-
- [crWinPtr->window orderOut:nil];
-}
-
-
-/*
- * CRStartDrawing
- * When a window's buffer is not being drawn to, the CoreGraphics
- * window server may compress or move it. Call this routine
- * to lock down the buffer during direct drawing. It returns
- * a pointer to the backing buffer.
- */
-static void
-CRStartDrawing(RootlessFrameID wid, char **pixelData, int *bytesPerRow)
-{
- CRWindowPtr crWinPtr = (CRWindowPtr) wid;
- PixMapHandle pix;
-
- [crWinPtr->view lockFocus];
- crWinPtr->port = [crWinPtr->view qdPort];
- LockPortBits(crWinPtr->port);
- [crWinPtr->view unlockFocus];
- pix = GetPortPixMap(crWinPtr->port);
-
- *pixelData = GetPixBaseAddr(pix);
- *bytesPerRow = GetPixRowBytes(pix) & 0x3fff; // fixme is mask needed?
-}
-
-
-/*
- * CRStopDrawing
- * When direct access to a window's buffer is no longer needed, this
- * routine should be called to allow CoreGraphics to compress or
- * move it.
- */
-static void
-CRStopDrawing(RootlessFrameID wid, Bool flush)
-{
- CRWindowPtr crWinPtr = (CRWindowPtr) wid;
-
- UnlockPortBits(crWinPtr->port);
-
- if (flush) {
- QDFlushPortBuffer(crWinPtr->port, NULL);
- }
-}
-
-
-/*
- * CRUpdateRegion
- * Flush a region from a window's backing buffer to the screen.
- */
-static void
-CRUpdateRegion(RootlessFrameID wid, RegionPtr pDamage)
-{
- CRWindowPtr crWinPtr = (CRWindowPtr) wid;
-
-#ifdef ROOTLESS_TRACK_DAMAGE
- int count = REGION_NUM_RECTS(pDamage);
- BoxRec *rects = REGION_RECTS(pDamage);
- BoxRec *end;
-
- static RgnHandle rgn = NULL;
- static RgnHandle box = NULL;
-
- if (!rgn) rgn = NewRgn();
- if (!box) box = NewRgn();
-
- for (end = rects+count; rects < end; rects++) {
- Rect qdRect;
- qdRect.left = rects->x1;
- qdRect.top = rects->y1;
- qdRect.right = rects->x2;
- qdRect.bottom = rects->y2;
-
- RectRgn(box, &qdRect);
- UnionRgn(rgn, box, rgn);
- }
-
- QDFlushPortBuffer(crWinPtr->port, rgn);
-
- SetEmptyRgn(rgn);
- SetEmptyRgn(box);
-
-#else /* !ROOTLESS_TRACK_DAMAGE */
- QDFlushPortBuffer(crWinPtr->port, NULL);
-#endif
-}
-
-
-/*
- * CRDamageRects
- * Mark damaged rectangles as requiring redisplay to screen.
- */
-static void
-CRDamageRects(RootlessFrameID wid, int count, const BoxRec *rects,
- int shift_x, int shift_y)
-{
- CRWindowPtr crWinPtr = (CRWindowPtr) wid;
- const BoxRec *end;
-
- for (end = rects + count; rects < end; rects++) {
- Rect qdRect;
- qdRect.left = rects->x1 + shift_x;
- qdRect.top = rects->y1 + shift_y;
- qdRect.right = rects->x2 + shift_x;
- qdRect.bottom = rects->y2 + shift_y;
-
- QDAddRectToDirtyRegion(crWinPtr->port, &qdRect);
- }
-}
-
-
-/*
- * Called to check if the frame should be reordered when it is restacked.
- */
-Bool CRDoReorderWindow(RootlessWindowPtr pFrame)
-{
- WindowPtr pWin = pFrame->win;
-
- return AppleWMDoReorderWindow(pWin);
-}
-
-
-static RootlessFrameProcsRec CRRootlessProcs = {
- CRCreateFrame,
- CRDestroyFrame,
- CRMoveFrame,
- CRResizeFrame,
- CRRestackFrame,
- CRReshapeFrame,
- CRUnmapFrame,
- CRStartDrawing,
- CRStopDrawing,
- CRUpdateRegion,
- CRDamageRects,
- NULL,
- CRDoReorderWindow,
- NULL,
- NULL,
- NULL,
- NULL
-};
-
-
-/*
- * Initialize CR implementation
- */
-Bool
-CRInit(ScreenPtr pScreen)
-{
- RootlessInit(pScreen, &CRRootlessProcs);
-
- rootless_CopyBytes_threshold = 0;
- rootless_FillBytes_threshold = 0;
- rootless_CompositePixels_threshold = 0;
- rootless_CopyWindow_threshold = 0;
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/crScreen.m b/nx-X11/programs/Xserver/hw/darwin/quartz/cr/crScreen.m
deleted file mode 100644
index caf26f123..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/cr/crScreen.m
+++ /dev/null
@@ -1,381 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/cr/crScreen.m,v 1.5 2004/09/18 00:38:30 torrey Exp $ */
-/*
- * Cocoa rootless implementation initialization
- */
-/*
- * Copyright (c) 2001 Greg Parker. All Rights Reserved.
- * Copyright (c) 2002-2004 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/cr/crScreen.m,v 1.5 2003/11/12 20:21:52 torrey Exp $ */
-
-#include "quartzCommon.h"
-#include "cr.h"
-
-#undef BOOL
-#define BOOL xBOOL
-#include "darwin.h"
-#include "quartz.h"
-#include "quartzCursor.h"
-#include "rootless.h"
-#include "safeAlpha.h"
-#include "pseudoramiX.h"
-#include "applewmExt.h"
-
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "picturestr.h"
-#include "globals.h"
-#ifdef DAMAGE
-# include "damage.h"
-#endif
-#undef BOOL
-
-// Name of GLX bundle using AGL framework
-static const char *crOpenGLBundle = "glxAGL.bundle";
-
-static Class classXView = nil;
-
-
-/*
- * CRDisplayInit
- * Find all screens.
- *
- * Multihead note: When rootless mode uses PseudoramiX, the
- * X server only sees one screen; only PseudoramiX itself knows
- * about all of the screens.
- */
-static void
-CRDisplayInit(void)
-{
- ErrorF("Display mode: Rootless Quartz -- Cocoa implementation\n");
-
- if (noPseudoramiXExtension) {
- darwinScreensFound = [[NSScreen screens] count];
- } else {
- darwinScreensFound = 1; // only PseudoramiX knows about the rest
- }
-
- CRAppleWMInit();
-}
-
-
-/*
- * CRAddPseudoramiXScreens
- * Add a single virtual screen encompassing all the physical screens
- * with PseudoramiX.
- */
-static void
-CRAddPseudoramiXScreens(int *x, int *y, int *width, int *height)
-{
- int i;
- NSRect unionRect = NSMakeRect(0, 0, 0, 0);
- NSArray *screens = [NSScreen screens];
-
- // Get the union of all screens (minus the menu bar on main screen)
- for (i = 0; i < [screens count]; i++) {
- NSScreen *screen = [screens objectAtIndex:i];
- NSRect frame = [screen frame];
- frame.origin.y = [[NSScreen mainScreen] frame].size.height -
- frame.size.height - frame.origin.y;
- if (NSEqualRects([screen frame], [[NSScreen mainScreen] frame])) {
- frame.origin.y += aquaMenuBarHeight;
- frame.size.height -= aquaMenuBarHeight;
- }
- unionRect = NSUnionRect(unionRect, frame);
- }
-
- // Use unionRect as the screen size for the X server.
- *x = unionRect.origin.x;
- *y = unionRect.origin.y;
- *width = unionRect.size.width;
- *height = unionRect.size.height;
-
- // Tell PseudoramiX about the real screens.
- // InitOutput() will move the big screen to (0,0),
- // so compensate for that here.
- for (i = 0; i < [screens count]; i++) {
- NSScreen *screen = [screens objectAtIndex:i];
- NSRect frame = [screen frame];
- int j;
-
- // Skip this screen if it's a mirrored copy of an earlier screen.
- for (j = 0; j < i; j++) {
- if (NSEqualRects(frame, [[screens objectAtIndex:j] frame])) {
- ErrorF("PseudoramiX screen %d is a mirror of screen %d.\n",
- i, j);
- break;
- }
- }
- if (j < i) continue; // this screen is a mirrored copy
-
- frame.origin.y = [[NSScreen mainScreen] frame].size.height -
- frame.size.height - frame.origin.y;
-
- if (NSEqualRects([screen frame], [[NSScreen mainScreen] frame])) {
- frame.origin.y += aquaMenuBarHeight;
- frame.size.height -= aquaMenuBarHeight;
- }
-
- ErrorF("PseudoramiX screen %d added: %dx%d @ (%d,%d).\n", i,
- (int)frame.size.width, (int)frame.size.height,
- (int)frame.origin.x, (int)frame.origin.y);
-
- frame.origin.x -= unionRect.origin.x;
- frame.origin.y -= unionRect.origin.y;
-
- ErrorF("PseudoramiX screen %d placed at X11 coordinate (%d,%d).\n",
- i, (int)frame.origin.x, (int)frame.origin.y);
-
- PseudoramiXAddScreen(frame.origin.x, frame.origin.y,
- frame.size.width, frame.size.height);
- }
-}
-
-
-/*
- * CRScreenParams
- * Set the basic screen parameters.
- */
-static void
-CRScreenParams(int index, DarwinFramebufferPtr dfb)
-{
- dfb->bitsPerComponent = CGDisplayBitsPerSample(kCGDirectMainDisplay);
- dfb->bitsPerPixel = CGDisplayBitsPerPixel(kCGDirectMainDisplay);
- dfb->colorBitsPerPixel = 3 * dfb->bitsPerComponent;
-
- if (noPseudoramiXExtension) {
- NSScreen *screen = [[NSScreen screens] objectAtIndex:index];
- NSRect frame = [screen frame];
-
- // set x, y so (0,0) is top left of main screen
- dfb->x = NSMinX(frame);
- dfb->y = NSHeight([[NSScreen mainScreen] frame]) -
- NSHeight(frame) - NSMinY(frame);
-
- dfb->width = NSWidth(frame);
- dfb->height = NSHeight(frame);
-
- // Shift the usable part of main screen down to avoid the menu bar.
- if (NSEqualRects(frame, [[NSScreen mainScreen] frame])) {
- dfb->y += aquaMenuBarHeight;
- dfb->height -= aquaMenuBarHeight;
- }
-
- } else {
- CRAddPseudoramiXScreens(&dfb->x, &dfb->y, &dfb->width, &dfb->height);
- }
-}
-
-
-/*
- * CRAddScreen
- * Init the framebuffer and record pixmap parameters for the screen.
- */
-static Bool
-CRAddScreen(int index, ScreenPtr pScreen)
-{
- DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
- QuartzScreenPtr displayInfo = QUARTZ_PRIV(pScreen);
- CGRect cgRect;
- CGDisplayCount numDisplays;
- CGDisplayCount allocatedDisplays = 0;
- CGDirectDisplayID *displays = NULL;
- CGDisplayErr cgErr;
-
- CRScreenParams(index, dfb);
-
- dfb->colorType = TrueColor;
-
- /* Passing zero width (pitch) makes miCreateScreenResources set the
- screen pixmap to the framebuffer pointer, i.e. NULL. The generic
- rootless code takes care of making this work. */
- dfb->pitch = 0;
- dfb->framebuffer = NULL;
-
- // Get all CoreGraphics displays covered by this X11 display.
- cgRect = CGRectMake(dfb->x, dfb->y, dfb->width, dfb->height);
- do {
- cgErr = CGGetDisplaysWithRect(cgRect, 0, NULL, &numDisplays);
- if (cgErr) break;
- allocatedDisplays = numDisplays;
- displays = xrealloc(displays,
- numDisplays * sizeof(CGDirectDisplayID));
- cgErr = CGGetDisplaysWithRect(cgRect, allocatedDisplays, displays,
- &numDisplays);
- if (cgErr != CGDisplayNoErr) break;
- } while (numDisplays > allocatedDisplays);
-
- if (cgErr != CGDisplayNoErr || numDisplays == 0) {
- ErrorF("Could not find CGDirectDisplayID(s) for X11 screen %d: %dx%d @ %d,%d.\n",
- index, dfb->width, dfb->height, dfb->x, dfb->y);
- return FALSE;
- }
-
- // This X11 screen covers all CoreGraphics displays we just found.
- // If there's more than one CG display, then video mirroring is on
- // or PseudoramiX is on.
- displayInfo->displayCount = allocatedDisplays;
- displayInfo->displayIDs = displays;
-
- return TRUE;
-}
-
-
-/*
- * CRSetupScreen
- * Setup the screen for rootless access.
- */
-static Bool
-CRSetupScreen(int index, ScreenPtr pScreen)
-{
- // Add alpha protecting replacements for fb screen functions
- pScreen->PaintWindowBackground = SafeAlphaPaintWindow;
- pScreen->PaintWindowBorder = SafeAlphaPaintWindow;
-
-#ifdef RENDER
- {
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- ps->Composite = SafeAlphaComposite;
- }
-#endif /* RENDER */
-
- // Initialize accelerated rootless drawing
- // Note that this must be done before DamageSetup().
- RootlessAccelInit(pScreen);
-
-#ifdef DAMAGE
- // The Damage extension needs to wrap underneath the
- // generic rootless layer, so do it now.
- if (!DamageSetup(pScreen))
- return FALSE;
-#endif
-
- // Initialize generic rootless code
- return CRInit(pScreen);
-}
-
-
-/*
- * CRScreenChanged
- * Configuration of displays has changed.
- */
-static void
-CRScreenChanged(void)
-{
- QuartzMessageServerThread(kXDarwinDisplayChanged, 0);
-}
-
-
-/*
- * CRUpdateScreen
- * Update screen after configuation change.
- */
-static void
-CRUpdateScreen(ScreenPtr pScreen)
-{
- rootlessGlobalOffsetX = darwinMainScreenX;
- rootlessGlobalOffsetY = darwinMainScreenY;
-
- AppleWMSetScreenOrigin(WindowTable[pScreen->myNum]);
-
- RootlessRepositionWindows(pScreen);
- RootlessUpdateScreenPixmap(pScreen);
-}
-
-
-/*
- * CRInitInput
- * Finalize CR specific setup.
- */
-static void
-CRInitInput(int argc, char **argv)
-{
- int i;
-
- rootlessGlobalOffsetX = darwinMainScreenX;
- rootlessGlobalOffsetY = darwinMainScreenY;
-
- for (i = 0; i < screenInfo.numScreens; i++)
- AppleWMSetScreenOrigin(WindowTable[i]);
-}
-
-
-/*
- * CRIsX11Window
- * Returns TRUE if cr is displaying this window.
- */
-static Bool
-CRIsX11Window(void *nsWindow, int windowNumber)
-{
- NSWindow *theWindow = nsWindow;
-
- if (!theWindow)
- return FALSE;
-
- if ([[theWindow contentView] isKindOfClass:classXView])
- return TRUE;
- else
- return FALSE;
-}
-
-
-/*
- * Quartz display mode function list.
- */
-static QuartzModeProcsRec crModeProcs = {
- CRDisplayInit,
- CRAddScreen,
- CRSetupScreen,
- CRInitInput,
- QuartzInitCursor,
- QuartzReallySetCursor,
- QuartzSuspendXCursor,
- QuartzResumeXCursor,
- NULL, // No capture or release in rootless mode
- NULL,
- CRScreenChanged,
- CRAddPseudoramiXScreens,
- CRUpdateScreen,
- CRIsX11Window,
- NULL, // Cocoa NSWindows hide themselves
- RootlessFrameForWindow,
- TopLevelParent,
- NULL, // No support for DRI surfaces
- NULL
-};
-
-
-/*
- * QuartzModeBundleInit
- * Initialize the display mode bundle after loading.
- */
-Bool
-QuartzModeBundleInit(void)
-{
- quartzProcs = &crModeProcs;
- quartzOpenGLBundle = crOpenGLBundle;
- classXView = [XView class];
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/Imakefile b/nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/Imakefile
deleted file mode 100644
index 59c295050..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/Imakefile
+++ /dev/null
@@ -1,19 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/quartz/cr/Imakefile,v 1.1 2003/06/07 05:49:07 torrey Exp $
-
-#include <Server.tmpl>
-
-SRCS = fullscreen.c \
- quartzCursor.c
-
-OBJS = fullscreen.o \
- quartzCursor.o
-
-INCLUDES = -I. -I$(SERVERSRC)/mi -I$(SERVERSRC)/include -I$(XINCLUDESRC) \
- -I$(FONTINCSRC) -I$(SERVERSRC)/render -I$(SERVERSRC)/miext/shadow \
- -I$(EXTINCSRC) -I.. -I../..
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(fullscreen,$(OBJS))
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/fullscreen.c b/nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/fullscreen.c
deleted file mode 100644
index fc0744ca5..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/fullscreen.c
+++ /dev/null
@@ -1,569 +0,0 @@
-/*
- * Screen routines for full screen Quartz mode
- *
- * Copyright (c) 2002-2003 Torrey T. Lyons. 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
- * 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 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
- * TORREY T. LYONS 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/fullscreen/fullscreen.c,v 1.4 2005/07/01 22:43:08 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/fullscreen/fullscreen.c,v 1.3 2003/11/27 01:59:53 torrey Exp $ */
-
-#include "quartzCommon.h"
-#include "darwin.h"
-#include "quartz.h"
-#include "quartzCursor.h"
-#include "colormapst.h"
-#include "scrnintstr.h"
-#include "micmap.h"
-#include "shadow.h"
-
-// Full screen specific per screen storage structure
-typedef struct {
- CGDirectDisplayID displayID;
- CFDictionaryRef xDisplayMode;
- CFDictionaryRef aquaDisplayMode;
- CGDirectPaletteRef xPalette;
- CGDirectPaletteRef aquaPalette;
- unsigned char *framebuffer;
- unsigned char *shadowPtr;
-} FSScreenRec, *FSScreenPtr;
-
-#define FULLSCREEN_PRIV(pScreen) \
- ((FSScreenPtr)pScreen->devPrivates[fsScreenIndex].ptr)
-
-static int fsScreenIndex;
-static CGDirectDisplayID *quartzDisplayList = NULL;
-static int quartzNumScreens = 0;
-static FSScreenPtr quartzScreens[MAXSCREENS];
-
-static int darwinCmapPrivateIndex = -1;
-static unsigned long darwinCmapGeneration = 0;
-
-#define CMAP_PRIV(pCmap) \
- ((CGDirectPaletteRef) (pCmap)->devPrivates[darwinCmapPrivateIndex].ptr)
-
-/*
- =============================================================================
-
- Colormap handling
-
- =============================================================================
-*/
-
-/*
- * FSInitCmapPrivates
- * Colormap privates may be allocated after the default colormap has
- * already been created for some screens. This initialization procedure
- * is called for each default colormap that is found.
- */
-static Bool
-FSInitCmapPrivates(
- ColormapPtr pCmap)
-{
- return TRUE;
-}
-
-
-/*
- * FSCreateColormap
- * This is a callback from X after a new colormap is created.
- * We allocate a new CoreGraphics pallete for each colormap.
- */
-static Bool
-FSCreateColormap(
- ColormapPtr pCmap)
-{
- CGDirectPaletteRef pallete;
-
- // Allocate private storage for the hardware dependent colormap info.
- if (darwinCmapGeneration != serverGeneration) {
- if ((darwinCmapPrivateIndex =
- AllocateColormapPrivateIndex(FSInitCmapPrivates)) < 0)
- {
- return FALSE;
- }
- darwinCmapGeneration = serverGeneration;
- }
-
- pallete = CGPaletteCreateDefaultColorPalette();
- if (!pallete) return FALSE;
-
- CMAP_PRIV(pCmap) = pallete;
- return TRUE;
-}
-
-
-/*
- * FSDestroyColormap
- * This is called by DIX FreeColormap after it has uninstalled a colormap
- * and notified all interested parties. We deallocated the corresponding
- * CoreGraphics pallete.
- */
-static void
-FSDestroyColormap(
- ColormapPtr pCmap)
-{
- CGPaletteRelease( CMAP_PRIV(pCmap) );
-}
-
-
-/*
- * FSInstallColormap
- * Set the current CoreGraphics pallete to the pallete corresponding
- * to the provided colormap.
- */
-static void
-FSInstallColormap(
- ColormapPtr pCmap)
-{
- CGDirectPaletteRef palette = CMAP_PRIV(pCmap);
- ScreenPtr pScreen = pCmap->pScreen;
- FSScreenPtr fsDisplayInfo = FULLSCREEN_PRIV(pScreen);
-
- // Inform all interested parties that the map is being changed.
- miInstallColormap(pCmap);
-
- if (quartzServerVisible)
- CGDisplaySetPalette(fsDisplayInfo->displayID, palette);
-
- fsDisplayInfo->xPalette = palette;
-}
-
-
-/*
- * FSStoreColors
- * This is a callback from X to change the hardware colormap
- * when using PsuedoColor in full screen mode.
- */
-static void
-FSStoreColors(
- ColormapPtr pCmap,
- int numEntries,
- xColorItem *pdefs)
-{
- CGDirectPaletteRef palette = CMAP_PRIV(pCmap);
- ScreenPtr pScreen = pCmap->pScreen;
- FSScreenPtr fsDisplayInfo = FULLSCREEN_PRIV(pScreen);
- CGDeviceColor color;
- int i;
-
- if (! palette)
- return;
-
- for (i = 0; i < numEntries; i++) {
- color.red = pdefs[i].red / 65535.0;
- color.green = pdefs[i].green / 65535.0;
- color.blue = pdefs[i].blue / 65535.0;
- CGPaletteSetColorAtIndex(palette, color, pdefs[i].pixel);
- }
-
- // Update hardware colormap
- if (quartzServerVisible)
- CGDisplaySetPalette(fsDisplayInfo->displayID, palette);
-}
-
-
-/*
- =============================================================================
-
- Switching between Aqua and X
-
- =============================================================================
-*/
-
-/*
- * FSCapture
- * Capture the screen so we can draw. Called directly from the main thread
- * to synchronize with hiding the menubar.
- */
-static void FSCapture(void)
-{
- int i;
-
- if (quartzRootless) return;
-
- for (i = 0; i < quartzNumScreens; i++) {
- FSScreenPtr fsDisplayInfo = quartzScreens[i];
- CGDirectDisplayID cgID = fsDisplayInfo->displayID;
-
- if (!CGDisplayIsCaptured(cgID)) {
- CGDisplayCapture(cgID);
- fsDisplayInfo->aquaDisplayMode = CGDisplayCurrentMode(cgID);
- if (fsDisplayInfo->xDisplayMode != fsDisplayInfo->aquaDisplayMode)
- CGDisplaySwitchToMode(cgID, fsDisplayInfo->xDisplayMode);
- if (fsDisplayInfo->xPalette)
- CGDisplaySetPalette(cgID, fsDisplayInfo->xPalette);
- }
- }
-}
-
-
-/*
- * FSRelease
- * Release the screen so others can draw.
- */
-static void FSRelease(void)
-{
- int i;
-
- if (quartzRootless) return;
-
- for (i = 0; i < quartzNumScreens; i++) {
- FSScreenPtr fsDisplayInfo = quartzScreens[i];
- CGDirectDisplayID cgID = fsDisplayInfo->displayID;
-
- if (CGDisplayIsCaptured(cgID)) {
- if (fsDisplayInfo->xDisplayMode != fsDisplayInfo->aquaDisplayMode)
- CGDisplaySwitchToMode(cgID, fsDisplayInfo->aquaDisplayMode);
- if (fsDisplayInfo->aquaPalette)
- CGDisplaySetPalette(cgID, fsDisplayInfo->aquaPalette);
- CGDisplayRelease(cgID);
- }
- }
-}
-
-
-/*
- * FSSuspendScreen
- * Suspend X11 cursor and drawing to the screen.
- */
-static void FSSuspendScreen(
- ScreenPtr pScreen)
-{
- QuartzSuspendXCursor(pScreen);
- xf86SetRootClip(pScreen, FALSE);
-}
-
-
-/*
- * FSResumeScreen
- * Resume X11 cursor and drawing to the screen.
- */
-static void FSResumeScreen(
- ScreenPtr pScreen,
- int x, // cursor location
- int y )
-{
- QuartzResumeXCursor(pScreen, x, y);
- xf86SetRootClip(pScreen, TRUE);
-}
-
-
-/*
- =============================================================================
-
- Screen initialization
-
- =============================================================================
-*/
-
-/*
- * FSDisplayInit
- * Full screen specific initialization called from InitOutput.
- */
-static void FSDisplayInit(void)
-{
- static unsigned long generation = 0;
- CGDisplayCount quartzDisplayCount = 0;
-
- ErrorF("Display mode: Full screen Quartz -- Direct Display\n");
-
- // Allocate private storage for each screen's mode specific info
- if (generation != serverGeneration) {
- fsScreenIndex = AllocateScreenPrivateIndex();
- generation = serverGeneration;
- }
-
- // Find all the CoreGraphics displays
- CGGetActiveDisplayList(0, NULL, &quartzDisplayCount);
- quartzDisplayList = xalloc(quartzDisplayCount * sizeof(CGDirectDisplayID));
- CGGetActiveDisplayList(quartzDisplayCount, quartzDisplayList,
- &quartzDisplayCount);
-
- darwinScreensFound = quartzDisplayCount;
- atexit(FSRelease);
-}
-
-
-/*
- * FSFindDisplayMode
- * Find the appropriate display mode to use in full screen mode.
- * If display mode is not the same as the current Aqua mode, switch
- * to the new mode.
- */
-static Bool FSFindDisplayMode(
- FSScreenPtr fsDisplayInfo)
-{
- CGDirectDisplayID cgID = fsDisplayInfo->displayID;
- size_t height, width, bpp;
- boolean_t exactMatch;
-
- fsDisplayInfo->aquaDisplayMode = CGDisplayCurrentMode(cgID);
-
- // If no user options, use current display mode
- if (darwinDesiredWidth == 0 && darwinDesiredDepth == -1 &&
- darwinDesiredRefresh == -1)
- {
- fsDisplayInfo->xDisplayMode = fsDisplayInfo->aquaDisplayMode;
- return TRUE;
- }
-
- // If the user has no choice for size, use current
- if (darwinDesiredWidth == 0) {
- width = CGDisplayPixelsWide(cgID);
- height = CGDisplayPixelsHigh(cgID);
- } else {
- width = darwinDesiredWidth;
- height = darwinDesiredHeight;
- }
-
- switch (darwinDesiredDepth) {
- case 0:
- bpp = 8;
- break;
- case 1:
- bpp = 16;
- break;
- case 2:
- bpp = 32;
- break;
- default:
- bpp = CGDisplayBitsPerPixel(cgID);
- }
-
- if (darwinDesiredRefresh == -1) {
- fsDisplayInfo->xDisplayMode =
- CGDisplayBestModeForParameters(cgID, bpp, width, height,
- &exactMatch);
- } else {
- fsDisplayInfo->xDisplayMode =
- CGDisplayBestModeForParametersAndRefreshRate(cgID, bpp,
- width, height, darwinDesiredRefresh, &exactMatch);
- }
- if (!exactMatch) {
- fsDisplayInfo->xDisplayMode = fsDisplayInfo->aquaDisplayMode;
- return FALSE;
- }
-
- // Switch to the new display mode
- CGDisplaySwitchToMode(cgID, fsDisplayInfo->xDisplayMode);
- return TRUE;
-}
-
-
-/*
- * FSAddScreen
- * Do initialization of each screen for Quartz in full screen mode.
- */
-static Bool FSAddScreen(
- int index,
- ScreenPtr pScreen)
-{
- DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
- QuartzScreenPtr displayInfo = QUARTZ_PRIV(pScreen);
- CGDirectDisplayID cgID = quartzDisplayList[index];
- CGRect bounds;
- FSScreenPtr fsDisplayInfo;
-
- // Allocate space for private per screen fullscreen specific storage.
- fsDisplayInfo = xalloc(sizeof(FSScreenRec));
- FULLSCREEN_PRIV(pScreen) = fsDisplayInfo;
-
- displayInfo->displayCount = 1;
- displayInfo->displayIDs = xrealloc(displayInfo->displayIDs,
- 1 * sizeof(CGDirectDisplayID));
- displayInfo->displayIDs[0] = cgID;
-
- fsDisplayInfo->displayID = cgID;
- fsDisplayInfo->xDisplayMode = 0;
- fsDisplayInfo->aquaDisplayMode = 0;
- fsDisplayInfo->xPalette = 0;
- fsDisplayInfo->aquaPalette = 0;
-
- // Capture full screen because X doesn't like read-only framebuffer.
- // We need to do this before we (potentially) switch the display mode.
- CGDisplayCapture(cgID);
-
- if (! FSFindDisplayMode(fsDisplayInfo)) {
- ErrorF("Could not support specified display mode on screen %i.\n",
- index);
- xfree(fsDisplayInfo);
- return FALSE;
- }
-
- // Don't need to flip y-coordinate as CoreGraphics treats (0, 0)
- // as the top left of main screen.
- bounds = CGDisplayBounds(cgID);
- dfb->x = bounds.origin.x;
- dfb->y = bounds.origin.y;
- dfb->width = bounds.size.width;
- dfb->height = bounds.size.height;
- dfb->pitch = CGDisplayBytesPerRow(cgID);
- dfb->bitsPerPixel = CGDisplayBitsPerPixel(cgID);
-
- if (dfb->bitsPerPixel == 8) {
- if (CGDisplayCanSetPalette(cgID)) {
- dfb->colorType = PseudoColor;
- } else {
- dfb->colorType = StaticColor;
- }
- dfb->bitsPerComponent = 8;
- dfb->colorBitsPerPixel = 8;
- } else {
- dfb->colorType = TrueColor;
- dfb->bitsPerComponent = CGDisplayBitsPerSample(cgID);
- dfb->colorBitsPerPixel = CGDisplaySamplesPerPixel(cgID) *
- dfb->bitsPerComponent;
- }
-
- fsDisplayInfo->framebuffer = CGDisplayBaseAddress(cgID);
-
- // allocate shadow framebuffer
- fsDisplayInfo->shadowPtr = xalloc(dfb->pitch * dfb->height);
- dfb->framebuffer = fsDisplayInfo->shadowPtr;
-
- return TRUE;
-}
-
-
-/*
- * FSShadowUpdate
- * Update the damaged regions of the shadow framebuffer on the display.
- */
-static void FSShadowUpdate(
- ScreenPtr pScreen,
- shadowBufPtr pBuf)
-{
- DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
- FSScreenPtr fsDisplayInfo = FULLSCREEN_PRIV(pScreen);
- RegionPtr damage = &pBuf->damage;
- int numBox = REGION_NUM_RECTS(damage);
- BoxPtr pBox = REGION_RECTS(damage);
- int pitch = dfb->pitch;
- int bpp = dfb->bitsPerPixel/8;
-
- // Don't update if the X server is not visible
- if (!quartzServerVisible)
- return;
-
- // Loop through all the damaged boxes
- while (numBox--) {
- int width, height, offset;
- unsigned char *src, *dst;
-
- width = (pBox->x2 - pBox->x1) * bpp;
- height = pBox->y2 - pBox->y1;
- offset = (pBox->y1 * pitch) + (pBox->x1 * bpp);
- src = fsDisplayInfo->shadowPtr + offset;
- dst = fsDisplayInfo->framebuffer + offset;
-
- while (height--) {
- memcpy(dst, src, width);
- dst += pitch;
- src += pitch;
- }
-
- // Get the next box
- pBox++;
- }
-}
-
-
-/*
- * FSSetupScreen
- * Finalize full screen specific setup of each screen.
- */
-static Bool FSSetupScreen(
- int index,
- ScreenPtr pScreen)
-{
- DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
- FSScreenPtr fsDisplayInfo = FULLSCREEN_PRIV(pScreen);
- CGDirectDisplayID cgID = fsDisplayInfo->displayID;
-
- // Initialize shadow framebuffer support
- if (! shadowInit(pScreen, FSShadowUpdate, NULL)) {
- ErrorF("Failed to initalize shadow framebuffer for screen %i.\n",
- index);
- return FALSE;
- }
-
- if (dfb->colorType == PseudoColor) {
- // Initialize colormap handling
- size_t aquaBpp;
-
- // If Aqua is using 8 bits we need to keep track of its pallete.
- CFNumberGetValue(CFDictionaryGetValue(fsDisplayInfo->aquaDisplayMode,
- kCGDisplayBitsPerPixel), kCFNumberLongType, &aquaBpp);
- if (aquaBpp <= 8)
- fsDisplayInfo->aquaPalette = CGPaletteCreateWithDisplay(cgID);
-
- pScreen->CreateColormap = FSCreateColormap;
- pScreen->DestroyColormap = FSDestroyColormap;
- pScreen->InstallColormap = FSInstallColormap;
- pScreen->StoreColors = FSStoreColors;
-
- }
-
- quartzScreens[quartzNumScreens++] = fsDisplayInfo;
- return TRUE;
-}
-
-
-/*
- * Quartz display mode function list.
- */
-static QuartzModeProcsRec fsModeProcs = {
- FSDisplayInit,
- FSAddScreen,
- FSSetupScreen,
- NULL, // Not needed
- QuartzInitCursor,
- QuartzReallySetCursor,
- FSSuspendScreen,
- FSResumeScreen,
- FSCapture,
- FSRelease,
- NULL, // No dynamic screen change support
- NULL,
- NULL,
- NULL, // No rootless code in fullscreen
- NULL,
- NULL,
- NULL,
- NULL, // No support for DRI surfaces
- NULL
-};
-
-
-/*
- * QuartzModeBundleInit
- * Initialize the display mode bundle after loading.
- */
-Bool
-QuartzModeBundleInit(void)
-{
- quartzProcs = &fsModeProcs;
- quartzOpenGLBundle = NULL; // Only Mesa support for now
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/quartzCursor.c b/nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/quartzCursor.c
deleted file mode 100644
index 8abce2318..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/quartzCursor.c
+++ /dev/null
@@ -1,653 +0,0 @@
-/**************************************************************
- *
- * Support for using the Quartz Window Manager cursor
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2003 Torrey T. Lyons and Greg Parker.
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCursor.c,v 1.5 2003/01/23 00:34:26 torrey Exp $ */
-
-#include "quartzCommon.h"
-#include "quartzCursor.h"
-#include "darwin.h"
-
-#include <pthread.h>
-
-#include "mi.h"
-#include "scrnintstr.h"
-#include "cursorstr.h"
-#include "mipointrst.h"
-#include "globals.h"
-
-// Size of the QuickDraw cursor
-#define CURSORWIDTH 16
-#define CURSORHEIGHT 16
-
-typedef struct {
- int qdCursorMode;
- int qdCursorVisible;
- int useQDCursor;
- QueryBestSizeProcPtr QueryBestSize;
- miPointerSpriteFuncPtr spriteFuncs;
-} QuartzCursorScreenRec, *QuartzCursorScreenPtr;
-
-static int darwinCursorScreenIndex = -1;
-static unsigned long darwinCursorGeneration = 0;
-static CursorPtr quartzLatentCursor = NULL;
-static QD_Cursor gQDArrow; // QuickDraw arrow cursor
-
-// Cursor for the main thread to set (NULL = arrow cursor).
-static CCrsrHandle currentCursor = NULL;
-static pthread_mutex_t cursorMutex;
-static pthread_cond_t cursorCondition;
-
-#define CURSOR_PRIV(pScreen) \
- ((QuartzCursorScreenPtr)pScreen->devPrivates[darwinCursorScreenIndex].ptr)
-
-#define HIDE_QD_CURSOR(pScreen, visible) \
- if (visible) { \
- int ix; \
- for (ix = 0; ix < QUARTZ_PRIV(pScreen)->displayCount; ix++) { \
- CGDisplayHideCursor(QUARTZ_PRIV(pScreen)->displayIDs[ix]); \
- } \
- visible = FALSE; \
- } ((void)0)
-
-#define SHOW_QD_CURSOR(pScreen, visible) \
- { \
- int ix; \
- for (ix = 0; ix < QUARTZ_PRIV(pScreen)->displayCount; ix++) { \
- CGDisplayShowCursor(QUARTZ_PRIV(pScreen)->displayIDs[ix]); \
- } \
- visible = TRUE; \
- } ((void)0)
-
-#define CHANGE_QD_CURSOR(cursorH) \
- if (!quartzServerQuitting) { \
- /* Acquire lock and tell the main thread to change cursor */ \
- pthread_mutex_lock(&cursorMutex); \
- currentCursor = (CCrsrHandle) (cursorH); \
- QuartzMessageMainThread(kQuartzCursorUpdate, NULL, 0); \
- \
- /* Wait for the main thread to change the cursor */ \
- pthread_cond_wait(&cursorCondition, &cursorMutex); \
- pthread_mutex_unlock(&cursorMutex); \
- } ((void)0)
-
-
-/*
- * MakeQDCursor helpers: CTAB_ENTER, interleave
- */
-
-// Add a color entry to a ctab
-#define CTAB_ENTER(ctab, index, r, g, b) \
- ctab->ctTable[index].value = index; \
- ctab->ctTable[index].rgb.red = r; \
- ctab->ctTable[index].rgb.green = g; \
- ctab->ctTable[index].rgb.blue = b
-
-// Make an unsigned short by interleaving the bits of bytes c1 and c2.
-// High bit of c1 is first; low bit of c2 is last.
-// Interleave is a built-in INTERCAL operator.
-static unsigned short
-interleave(
- unsigned char c1,
- unsigned char c2 )
-{
- return
- ((c1 & 0x80) << 8) | ((c2 & 0x80) << 7) |
- ((c1 & 0x40) << 7) | ((c2 & 0x40) << 6) |
- ((c1 & 0x20) << 6) | ((c2 & 0x20) << 5) |
- ((c1 & 0x10) << 5) | ((c2 & 0x10) << 4) |
- ((c1 & 0x08) << 4) | ((c2 & 0x08) << 3) |
- ((c1 & 0x04) << 3) | ((c2 & 0x04) << 2) |
- ((c1 & 0x02) << 2) | ((c2 & 0x02) << 1) |
- ((c1 & 0x01) << 1) | ((c2 & 0x01) << 0) ;
-}
-
-/*
- * MakeQDCursor
- * Make a QuickDraw color cursor from the given X11 cursor.
- * Warning: This code is nasty. Color cursors were meant to be read
- * from resources; constructing the structures programmatically is messy.
- */
-/*
- QuickDraw cursor representation:
- Our color cursor is a 2 bit per pixel pixmap.
- Each pixel's bits are (source<<1 | mask) from the original X cursor pixel.
- The cursor's color table maps the colors like this:
- (2-bit value | X result | colortable | Mac result)
- 00 | transparent | white | transparent (white outside mask)
- 01 | back color | back color | back color
- 10 | undefined | black | invert background (just for fun)
- 11 | fore color | fore color | fore color
-*/
-static CCrsrHandle
-MakeQDCursor(
- CursorPtr pCursor )
-{
- CCrsrHandle result;
- CCrsrPtr curs;
- int i, w, h;
- unsigned short rowMask;
- PixMap *pix;
- ColorTable *ctab;
- unsigned short *image;
-
- result = (CCrsrHandle) NewHandleClear(sizeof(CCrsr));
- if (!result) return NULL;
- HLock((Handle)result);
- curs = *result;
-
- // Initialize CCrsr
- curs->crsrType = 0x8001; // 0x8000 = b&w, 0x8001 = color
- curs->crsrMap = (PixMapHandle) NewHandleClear(sizeof(PixMap));
- if (!curs->crsrMap) goto pixAllocFailed;
- HLock((Handle)curs->crsrMap);
- pix = *curs->crsrMap;
- curs->crsrData = NULL; // raw cursor image data (set below)
- curs->crsrXData = NULL; // QD's processed data
- curs->crsrXValid = 0; // zero means QD must re-process cursor data
- curs->crsrXHandle = NULL; // reserved
- memset(curs->crsr1Data, 0, CURSORWIDTH*CURSORHEIGHT/8); // b&w data
- memset(curs->crsrMask, 0, CURSORWIDTH*CURSORHEIGHT/8); // b&w & color mask
- curs->crsrHotSpot.h = min(CURSORWIDTH, pCursor->bits->xhot); // hot spot
- curs->crsrHotSpot.v = min(CURSORHEIGHT, pCursor->bits->yhot); // hot spot
- curs->crsrXTable = 0; // reserved
- curs->crsrID = GetCTSeed(); // unique ID from Color Manager
-
- // Set the b&w data and mask
- w = min(pCursor->bits->width, CURSORWIDTH);
- h = min(pCursor->bits->height, CURSORHEIGHT);
- rowMask = ~((1 << (CURSORWIDTH - w)) - 1);
- for (i = 0; i < h; i++) {
- curs->crsr1Data[i] = rowMask &
- ((pCursor->bits->source[i*4]<<8) | pCursor->bits->source[i*4+1]);
- curs->crsrMask[i] = rowMask &
- ((pCursor->bits->mask[i*4]<<8) | pCursor->bits->mask[i*4+1]);
- }
-
- // Set the color data and mask
- // crsrMap: defines bit depth and size and colortable only
- pix->rowBytes = (CURSORWIDTH * 2 / 8) | 0x8000; // last bit on means PixMap
- SetRect(&pix->bounds, 0, 0, CURSORWIDTH, CURSORHEIGHT); // see TN 1020
- pix->pixelSize = 2;
- pix->cmpCount = 1;
- pix->cmpSize = 2;
- // pix->pmTable set below
-
- // crsrData is the pixel data. crsrMap's baseAddr is not used.
- curs->crsrData = NewHandleClear(CURSORWIDTH*CURSORHEIGHT * 2 / 8);
- if (!curs->crsrData) goto imageAllocFailed;
- HLock((Handle)curs->crsrData);
- image = (unsigned short *) *curs->crsrData;
- // Pixel data is just 1-bit data and mask interleaved (see above)
- for (i = 0; i < h; i++) {
- unsigned char s, m;
- s = pCursor->bits->source[i*4] & (rowMask >> 8);
- m = pCursor->bits->mask[i*4] & (rowMask >> 8);
- image[2*i] = interleave(s, m);
- s = pCursor->bits->source[i*4+1] & (rowMask & 0x00ff);
- m = pCursor->bits->mask[i*4+1] & (rowMask & 0x00ff);
- image[2*i+1] = interleave(s, m);
- }
-
- // Build the color table (entries described above)
- // NewPixMap allocates a color table handle.
- pix->pmTable = (CTabHandle) NewHandleClear(sizeof(ColorTable) + 3
- * sizeof(ColorSpec));
- if (!pix->pmTable) goto ctabAllocFailed;
- HLock((Handle)pix->pmTable);
- ctab = *pix->pmTable;
- ctab->ctSeed = GetCTSeed();
- ctab->ctFlags = 0;
- ctab->ctSize = 3; // color count - 1
- CTAB_ENTER(ctab, 0, 0xffff, 0xffff, 0xffff);
- CTAB_ENTER(ctab, 1, pCursor->backRed, pCursor->backGreen,
- pCursor->backBlue);
- CTAB_ENTER(ctab, 2, 0x0000, 0x0000, 0x0000);
- CTAB_ENTER(ctab, 3, pCursor->foreRed, pCursor->foreGreen,
- pCursor->foreBlue);
-
- HUnlock((Handle)pix->pmTable); // ctab
- HUnlock((Handle)curs->crsrData); // image data
- HUnlock((Handle)curs->crsrMap); // pix
- HUnlock((Handle)result); // cursor
-
- return result;
-
- // "What we have here is a failure to allocate"
-ctabAllocFailed:
- HUnlock((Handle)curs->crsrData);
- DisposeHandle((Handle)curs->crsrData);
-imageAllocFailed:
- HUnlock((Handle)curs->crsrMap);
- DisposeHandle((Handle)curs->crsrMap);
-pixAllocFailed:
- HUnlock((Handle)result);
- DisposeHandle((Handle)result);
- return NULL;
-}
-
-
-/*
- * FreeQDCursor
- * Destroy a QuickDraw color cursor created with MakeQDCursor().
- * The cursor must not currently be on screen.
- */
-static void FreeQDCursor(CCrsrHandle cursHandle)
-{
- CCrsrPtr curs;
- PixMap *pix;
-
- HLock((Handle)cursHandle);
- curs = *cursHandle;
- HLock((Handle)curs->crsrMap);
- pix = *curs->crsrMap;
- DisposeHandle((Handle)pix->pmTable);
- HUnlock((Handle)curs->crsrMap);
- DisposeHandle((Handle)curs->crsrMap);
- DisposeHandle((Handle)curs->crsrData);
- HUnlock((Handle)cursHandle);
- DisposeHandle((Handle)cursHandle);
-}
-
-
-/*
-===========================================================================
-
- Pointer sprite functions
-
-===========================================================================
-*/
-
-/*
- * QuartzRealizeCursor
- * Convert the X cursor representation to QuickDraw format if possible.
- */
-Bool
-QuartzRealizeCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor )
-{
- CCrsrHandle qdCursor;
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- if(!pCursor || !pCursor->bits)
- return FALSE;
-
- // if the cursor is too big we use a software cursor
- if ((pCursor->bits->height > CURSORHEIGHT) ||
- (pCursor->bits->width > CURSORWIDTH) || !ScreenPriv->useQDCursor)
- {
- if (quartzRootless) {
- // rootless can't use a software cursor
- return TRUE;
- } else {
- return (*ScreenPriv->spriteFuncs->RealizeCursor)
- (pScreen, pCursor);
- }
- }
-
- // make new cursor image
- qdCursor = MakeQDCursor(pCursor);
- if (!qdCursor) return FALSE;
-
- // save the result
- pCursor->devPriv[pScreen->myNum] = (pointer) qdCursor;
-
- return TRUE;
-}
-
-
-/*
- * QuartzUnrealizeCursor
- * Free the storage space associated with a realized cursor.
- */
-Bool
-QuartzUnrealizeCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor )
-{
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- if ((pCursor->bits->height > CURSORHEIGHT) ||
- (pCursor->bits->width > CURSORWIDTH) || !ScreenPriv->useQDCursor)
- {
- if (quartzRootless) {
- return TRUE;
- } else {
- return (*ScreenPriv->spriteFuncs->UnrealizeCursor)
- (pScreen, pCursor);
- }
- } else {
- CCrsrHandle oldCursor = (CCrsrHandle) pCursor->devPriv[pScreen->myNum];
-
- if (currentCursor != oldCursor) {
- // This should only fail when quitting, in which case we just leak.
- FreeQDCursor(oldCursor);
- }
- pCursor->devPriv[pScreen->myNum] = NULL;
- return TRUE;
- }
-}
-
-
-/*
- * QuartzSetCursor
- * Set the cursor sprite and position.
- * Use QuickDraw cursor if possible.
- */
-static void
-QuartzSetCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor,
- int x,
- int y)
-{
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- quartzLatentCursor = pCursor;
-
- // Don't touch Mac OS cursor if X is hidden!
- if (!quartzServerVisible)
- return;
-
- if (!pCursor) {
- // Remove the cursor completely.
- HIDE_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
- if (! ScreenPriv->qdCursorMode)
- (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y);
- }
- else if ((pCursor->bits->height <= CURSORHEIGHT) &&
- (pCursor->bits->width <= CURSORWIDTH) && ScreenPriv->useQDCursor)
- {
- // Cursor is small enough to use QuickDraw directly.
- if (! ScreenPriv->qdCursorMode) // remove the X cursor
- (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y);
- ScreenPriv->qdCursorMode = TRUE;
-
- CHANGE_QD_CURSOR(pCursor->devPriv[pScreen->myNum]);
- SHOW_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
- }
- else if (quartzRootless) {
- // Rootless can't use a software cursor, so we just use Mac OS arrow.
- CHANGE_QD_CURSOR(NULL);
- SHOW_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
- }
- else {
- // Cursor is too big for QuickDraw. Use X software cursor.
- HIDE_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
- ScreenPriv->qdCursorMode = FALSE;
- (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, pCursor, x, y);
- }
-}
-
-
-/*
- * QuartzReallySetCursor
- * Set the QuickDraw cursor. Called from the main thread since changing the
- * cursor with QuickDraw is not thread safe on dual processor machines.
- */
-void
-QuartzReallySetCursor()
-{
- pthread_mutex_lock(&cursorMutex);
-
- if (currentCursor) {
- SetCCursor(currentCursor);
- } else {
- SetCursor(&gQDArrow);
- }
-
- pthread_cond_signal(&cursorCondition);
- pthread_mutex_unlock(&cursorMutex);
-}
-
-
-/*
- * QuartzMoveCursor
- * Move the cursor. This is a noop for QuickDraw.
- */
-static void
-QuartzMoveCursor(
- ScreenPtr pScreen,
- int x,
- int y)
-{
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- // only the X cursor needs to be explicitly moved
- if (!ScreenPriv->qdCursorMode)
- (*ScreenPriv->spriteFuncs->MoveCursor)(pScreen, x, y);
-}
-
-
-static miPointerSpriteFuncRec quartzSpriteFuncsRec = {
- QuartzRealizeCursor,
- QuartzUnrealizeCursor,
- QuartzSetCursor,
- QuartzMoveCursor
-};
-
-
-/*
-===========================================================================
-
- Pointer screen functions
-
-===========================================================================
-*/
-
-/*
- * QuartzCursorOffScreen
- */
-static Bool QuartzCursorOffScreen(ScreenPtr *pScreen, int *x, int *y)
-{
- return FALSE;
-}
-
-
-/*
- * QuartzCrossScreen
- */
-static void QuartzCrossScreen(ScreenPtr pScreen, Bool entering)
-{
- return;
-}
-
-
-/*
- * QuartzWarpCursor
- * Change the cursor position without generating an event or motion history.
- * The input coordinates (x,y) are in pScreen-local X11 coordinates.
- *
- */
-static void
-QuartzWarpCursor(
- ScreenPtr pScreen,
- int x,
- int y)
-{
- static int neverMoved = TRUE;
-
- if (neverMoved) {
- // Don't move the cursor the first time. This is the jump-to-center
- // initialization, and it's annoying because we may still be in MacOS.
- neverMoved = FALSE;
- return;
- }
-
- if (quartzServerVisible) {
- CGDisplayErr cgErr;
- CGPoint cgPoint;
- // Only need to do this for one display. Any display will do.
- CGDirectDisplayID cgID = QUARTZ_PRIV(pScreen)->displayIDs[0];
- CGRect cgRect = CGDisplayBounds(cgID);
-
- // Convert (x,y) to CoreGraphics screen-local CG coordinates.
- // This is necessary because the X11 screen and CG screen may not
- // coincide. (e.g. X11 screen may be moved to dodge the menu bar)
-
- // Make point in X11 global coordinates
- cgPoint = CGPointMake(x + dixScreenOrigins[pScreen->myNum].x,
- y + dixScreenOrigins[pScreen->myNum].y);
- // Shift to CoreGraphics global screen coordinates
- cgPoint.x += darwinMainScreenX;
- cgPoint.y += darwinMainScreenY;
- // Shift to CoreGraphics screen-local coordinates
- cgPoint.x -= cgRect.origin.x;
- cgPoint.y -= cgRect.origin.y;
-
- cgErr = CGDisplayMoveCursorToPoint(cgID, cgPoint);
- if (cgErr != CGDisplayNoErr) {
- ErrorF("Could not set cursor position with error code 0x%x.\n",
- cgErr);
- }
- }
-
- miPointerWarpCursor(pScreen, x, y);
- miPointerUpdate();
-}
-
-
-static miPointerScreenFuncRec quartzScreenFuncsRec = {
- QuartzCursorOffScreen,
- QuartzCrossScreen,
- QuartzWarpCursor,
- DarwinEQPointerPost,
- DarwinEQSwitchScreen
-};
-
-
-/*
-===========================================================================
-
- Other screen functions
-
-===========================================================================
-*/
-
-/*
- * QuartzCursorQueryBestSize
- * Handle queries for best cursor size
- */
-static void
-QuartzCursorQueryBestSize(
- int class,
- unsigned short *width,
- unsigned short *height,
- ScreenPtr pScreen)
-{
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- if (class == CursorShape) {
- *width = CURSORWIDTH;
- *height = CURSORHEIGHT;
- } else {
- (*ScreenPriv->QueryBestSize)(class, width, height, pScreen);
- }
-}
-
-
-/*
- * QuartzInitCursor
- * Initialize cursor support
- */
-Bool
-QuartzInitCursor(
- ScreenPtr pScreen )
-{
- QuartzCursorScreenPtr ScreenPriv;
- miPointerScreenPtr PointPriv;
- DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
-
- // initialize software cursor handling (always needed as backup)
- if (!miDCInitialize(pScreen, &quartzScreenFuncsRec)) {
- return FALSE;
- }
-
- // allocate private storage for this screen's QuickDraw cursor info
- if (darwinCursorGeneration != serverGeneration) {
- if ((darwinCursorScreenIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- darwinCursorGeneration = serverGeneration;
- }
-
- ScreenPriv = xcalloc( 1, sizeof(QuartzCursorScreenRec) );
- if (!ScreenPriv) return FALSE;
-
- CURSOR_PRIV(pScreen) = ScreenPriv;
-
- // override some screen procedures
- ScreenPriv->QueryBestSize = pScreen->QueryBestSize;
- pScreen->QueryBestSize = QuartzCursorQueryBestSize;
-
- // initialize QuickDraw cursor handling
- GetQDGlobalsArrow(&gQDArrow);
- PointPriv = (miPointerScreenPtr)
- pScreen->devPrivates[miPointerScreenIndex].ptr;
-
- ScreenPriv->spriteFuncs = PointPriv->spriteFuncs;
- PointPriv->spriteFuncs = &quartzSpriteFuncsRec;
-
- if (!quartzRootless)
- ScreenPriv->useQDCursor = QuartzFSUseQDCursor(dfb->colorBitsPerPixel);
- else
- ScreenPriv->useQDCursor = TRUE;
- ScreenPriv->qdCursorMode = TRUE;
- ScreenPriv->qdCursorVisible = TRUE;
-
- // initialize cursor mutex lock
- pthread_mutex_init(&cursorMutex, NULL);
-
- // initialize condition for waiting
- pthread_cond_init(&cursorCondition, NULL);
-
- return TRUE;
-}
-
-
-// X server is hiding. Restore the Aqua cursor.
-void QuartzSuspendXCursor(
- ScreenPtr pScreen )
-{
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- CHANGE_QD_CURSOR(NULL);
- SHOW_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
-}
-
-
-// X server is showing. Restore the X cursor.
-void QuartzResumeXCursor(
- ScreenPtr pScreen,
- int x,
- int y )
-{
- QuartzSetCursor(pScreen, quartzLatentCursor, x, y);
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/quartzCursor.h b/nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/quartzCursor.h
deleted file mode 100644
index efcc4435e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/fullscreen/quartzCursor.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * quartzCursor.h
- *
- * External interface for Quartz hardware cursor
- */
-/*
- * Copyright (c) 2001 Torrey T. Lyons and Greg Parker.
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCursor.h,v 1.1 2002/03/28 02:21:19 torrey Exp $ */
-
-#ifndef QUARTZCURSOR_H
-#define QUARTZCURSOR_H
-
-#include "screenint.h"
-
-Bool QuartzInitCursor(ScreenPtr pScreen);
-void QuartzReallySetCursor(void);
-void QuartzSuspendXCursor(ScreenPtr pScreen);
-void QuartzResumeXCursor(ScreenPtr pScreen, int x, int y);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/keysym2ucs.c b/nx-X11/programs/Xserver/hw/darwin/quartz/keysym2ucs.c
deleted file mode 100644
index 98b8b6fee..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/keysym2ucs.c
+++ /dev/null
@@ -1,909 +0,0 @@
-/* $XFree86: $
- *
- * This module converts keysym values into the corresponding ISO 10646
- * (UCS, Unicode) values.
- *
- * The array keysymtab[] contains pairs of X11 keysym values for graphical
- * characters and the corresponding Unicode value. The function
- * keysym2ucs() maps a keysym onto a Unicode value using a binary search,
- * therefore keysymtab[] must remain SORTED by keysym value.
- *
- * The keysym -> UTF-8 conversion will hopefully one day be provided
- * by Xlib via XmbLookupString() and should ideally not have to be
- * done in X applications. But we are not there yet.
- *
- * We allow to represent any UCS character in the range U-00000000 to
- * U-00FFFFFF by a keysym value in the range 0x01000000 to 0x01ffffff.
- * This admittedly does not cover the entire 31-bit space of UCS, but
- * it does cover all of the characters up to U-10FFFF, which can be
- * represented by UTF-16, and more, and it is very unlikely that higher
- * UCS codes will ever be assigned by ISO. So to get Unicode character
- * U+ABCD you can directly use keysym 0x0100abcd.
- *
- * NOTE: The comments in the table below contain the actual character
- * encoded in UTF-8, so for viewing and editing best use an editor in
- * UTF-8 mode.
- *
- * Author: Markus G. Kuhn <mkuhn@acm.org>, University of Cambridge, April 2001
- *
- * Special thanks to Richard Verhoeven <river@win.tue.nl> for preparing
- * an initial draft of the mapping table.
- *
- * This software is in the public domain. Share and enjoy!
- *
- * AUTOMATICALLY GENERATED FILE, DO NOT EDIT !!! (unicode/convmap.pl)
- */
-
-#include "keysym2ucs.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-struct codepair {
- unsigned short keysym;
- unsigned short ucs;
-};
-
-const static struct codepair keysymtab[] = {
- { 0x01a1, 0x0104 },
- { 0x01a2, 0x02d8 },
- { 0x01a3, 0x0141 },
- { 0x01a5, 0x013d },
- { 0x01a6, 0x015a },
- { 0x01a9, 0x0160 },
- { 0x01aa, 0x015e },
- { 0x01ab, 0x0164 },
- { 0x01ac, 0x0179 },
- { 0x01ae, 0x017d },
- { 0x01af, 0x017b },
- { 0x01b1, 0x0105 },
- { 0x01b2, 0x02db },
- { 0x01b3, 0x0142 },
- { 0x01b5, 0x013e },
- { 0x01b6, 0x015b },
- { 0x01b7, 0x02c7 },
- { 0x01b9, 0x0161 },
- { 0x01ba, 0x015f },
- { 0x01bb, 0x0165 },
- { 0x01bc, 0x017a },
- { 0x01bd, 0x02dd },
- { 0x01be, 0x017e },
- { 0x01bf, 0x017c },
- { 0x01c0, 0x0154 },
- { 0x01c3, 0x0102 },
- { 0x01c5, 0x0139 },
- { 0x01c6, 0x0106 },
- { 0x01c8, 0x010c },
- { 0x01ca, 0x0118 },
- { 0x01cc, 0x011a },
- { 0x01cf, 0x010e },
- { 0x01d0, 0x0110 },
- { 0x01d1, 0x0143 },
- { 0x01d2, 0x0147 },
- { 0x01d5, 0x0150 },
- { 0x01d8, 0x0158 },
- { 0x01d9, 0x016e },
- { 0x01db, 0x0170 },
- { 0x01de, 0x0162 },
- { 0x01e0, 0x0155 },
- { 0x01e3, 0x0103 },
- { 0x01e5, 0x013a },
- { 0x01e6, 0x0107 },
- { 0x01e8, 0x010d },
- { 0x01ea, 0x0119 },
- { 0x01ec, 0x011b },
- { 0x01ef, 0x010f },
- { 0x01f0, 0x0111 },
- { 0x01f1, 0x0144 },
- { 0x01f2, 0x0148 },
- { 0x01f5, 0x0151 },
- { 0x01f8, 0x0159 },
- { 0x01f9, 0x016f },
- { 0x01fb, 0x0171 },
- { 0x01fe, 0x0163 },
- { 0x01ff, 0x02d9 },
- { 0x02a1, 0x0126 },
- { 0x02a6, 0x0124 },
- { 0x02a9, 0x0130 },
- { 0x02ab, 0x011e },
- { 0x02ac, 0x0134 },
- { 0x02b1, 0x0127 },
- { 0x02b6, 0x0125 },
- { 0x02b9, 0x0131 },
- { 0x02bb, 0x011f },
- { 0x02bc, 0x0135 },
- { 0x02c5, 0x010a },
- { 0x02c6, 0x0108 },
- { 0x02d5, 0x0120 },
- { 0x02d8, 0x011c },
- { 0x02dd, 0x016c },
- { 0x02de, 0x015c },
- { 0x02e5, 0x010b },
- { 0x02e6, 0x0109 },
- { 0x02f5, 0x0121 },
- { 0x02f8, 0x011d },
- { 0x02fd, 0x016d },
- { 0x02fe, 0x015d },
- { 0x03a2, 0x0138 },
- { 0x03a3, 0x0156 },
- { 0x03a5, 0x0128 },
- { 0x03a6, 0x013b },
- { 0x03aa, 0x0112 },
- { 0x03ab, 0x0122 },
- { 0x03ac, 0x0166 },
- { 0x03b3, 0x0157 },
- { 0x03b5, 0x0129 },
- { 0x03b6, 0x013c },
- { 0x03ba, 0x0113 },
- { 0x03bb, 0x0123 },
- { 0x03bc, 0x0167 },
- { 0x03bd, 0x014a },
- { 0x03bf, 0x014b },
- { 0x03c0, 0x0100 },
- { 0x03c7, 0x012e },
- { 0x03cc, 0x0116 },
- { 0x03cf, 0x012a },
- { 0x03d1, 0x0145 },
- { 0x03d2, 0x014c },
- { 0x03d3, 0x0136 },
- { 0x03d9, 0x0172 },
- { 0x03dd, 0x0168 },
- { 0x03de, 0x016a },
- { 0x03e0, 0x0101 },
- { 0x03e7, 0x012f },
- { 0x03ec, 0x0117 },
- { 0x03ef, 0x012b },
- { 0x03f1, 0x0146 },
- { 0x03f2, 0x014d },
- { 0x03f3, 0x0137 },
- { 0x03f9, 0x0173 },
- { 0x03fd, 0x0169 },
- { 0x03fe, 0x016b },
- { 0x047e, 0x203e },
- { 0x04a1, 0x3002 },
- { 0x04a2, 0x300c },
- { 0x04a3, 0x300d },
- { 0x04a4, 0x3001 },
- { 0x04a5, 0x30fb },
- { 0x04a6, 0x30f2 },
- { 0x04a7, 0x30a1 },
- { 0x04a8, 0x30a3 },
- { 0x04a9, 0x30a5 },
- { 0x04aa, 0x30a7 },
- { 0x04ab, 0x30a9 },
- { 0x04ac, 0x30e3 },
- { 0x04ad, 0x30e5 },
- { 0x04ae, 0x30e7 },
- { 0x04af, 0x30c3 },
- { 0x04b0, 0x30fc },
- { 0x04b1, 0x30a2 },
- { 0x04b2, 0x30a4 },
- { 0x04b3, 0x30a6 },
- { 0x04b4, 0x30a8 },
- { 0x04b5, 0x30aa },
- { 0x04b6, 0x30ab },
- { 0x04b7, 0x30ad },
- { 0x04b8, 0x30af },
- { 0x04b9, 0x30b1 },
- { 0x04ba, 0x30b3 },
- { 0x04bb, 0x30b5 },
- { 0x04bc, 0x30b7 },
- { 0x04bd, 0x30b9 },
- { 0x04be, 0x30bb },
- { 0x04bf, 0x30bd },
- { 0x04c0, 0x30bf },
- { 0x04c1, 0x30c1 },
- { 0x04c2, 0x30c4 },
- { 0x04c3, 0x30c6 },
- { 0x04c4, 0x30c8 },
- { 0x04c5, 0x30ca },
- { 0x04c6, 0x30cb },
- { 0x04c7, 0x30cc },
- { 0x04c8, 0x30cd },
- { 0x04c9, 0x30ce },
- { 0x04ca, 0x30cf },
- { 0x04cb, 0x30d2 },
- { 0x04cc, 0x30d5 },
- { 0x04cd, 0x30d8 },
- { 0x04ce, 0x30db },
- { 0x04cf, 0x30de },
- { 0x04d0, 0x30df },
- { 0x04d1, 0x30e0 },
- { 0x04d2, 0x30e1 },
- { 0x04d3, 0x30e2 },
- { 0x04d4, 0x30e4 },
- { 0x04d5, 0x30e6 },
- { 0x04d6, 0x30e8 },
- { 0x04d7, 0x30e9 },
- { 0x04d8, 0x30ea },
- { 0x04d9, 0x30eb },
- { 0x04da, 0x30ec },
- { 0x04db, 0x30ed },
- { 0x04dc, 0x30ef },
- { 0x04dd, 0x30f3 },
- { 0x04de, 0x309b },
- { 0x04df, 0x309c },
- { 0x05ac, 0x060c },
- { 0x05bb, 0x061b },
- { 0x05bf, 0x061f },
- { 0x05c1, 0x0621 },
- { 0x05c2, 0x0622 },
- { 0x05c3, 0x0623 },
- { 0x05c4, 0x0624 },
- { 0x05c5, 0x0625 },
- { 0x05c6, 0x0626 },
- { 0x05c7, 0x0627 },
- { 0x05c8, 0x0628 },
- { 0x05c9, 0x0629 },
- { 0x05ca, 0x062a },
- { 0x05cb, 0x062b },
- { 0x05cc, 0x062c },
- { 0x05cd, 0x062d },
- { 0x05ce, 0x062e },
- { 0x05cf, 0x062f },
- { 0x05d0, 0x0630 },
- { 0x05d1, 0x0631 },
- { 0x05d2, 0x0632 },
- { 0x05d3, 0x0633 },
- { 0x05d4, 0x0634 },
- { 0x05d5, 0x0635 },
- { 0x05d6, 0x0636 },
- { 0x05d7, 0x0637 },
- { 0x05d8, 0x0638 },
- { 0x05d9, 0x0639 },
- { 0x05da, 0x063a },
- { 0x05e0, 0x0640 },
- { 0x05e1, 0x0641 },
- { 0x05e2, 0x0642 },
- { 0x05e3, 0x0643 },
- { 0x05e4, 0x0644 },
- { 0x05e5, 0x0645 },
- { 0x05e6, 0x0646 },
- { 0x05e7, 0x0647 },
- { 0x05e8, 0x0648 },
- { 0x05e9, 0x0649 },
- { 0x05ea, 0x064a },
- { 0x05eb, 0x064b },
- { 0x05ec, 0x064c },
- { 0x05ed, 0x064d },
- { 0x05ee, 0x064e },
- { 0x05ef, 0x064f },
- { 0x05f0, 0x0650 },
- { 0x05f1, 0x0651 },
- { 0x05f2, 0x0652 },
- { 0x06a1, 0x0452 },
- { 0x06a2, 0x0453 },
- { 0x06a3, 0x0451 },
- { 0x06a4, 0x0454 },
- { 0x06a5, 0x0455 },
- { 0x06a6, 0x0456 },
- { 0x06a7, 0x0457 },
- { 0x06a8, 0x0458 },
- { 0x06a9, 0x0459 },
- { 0x06aa, 0x045a },
- { 0x06ab, 0x045b },
- { 0x06ac, 0x045c },
- { 0x06ae, 0x045e },
- { 0x06af, 0x045f },
- { 0x06b0, 0x2116 },
- { 0x06b1, 0x0402 },
- { 0x06b2, 0x0403 },
- { 0x06b3, 0x0401 },
- { 0x06b4, 0x0404 },
- { 0x06b5, 0x0405 },
- { 0x06b6, 0x0406 },
- { 0x06b7, 0x0407 },
- { 0x06b8, 0x0408 },
- { 0x06b9, 0x0409 },
- { 0x06ba, 0x040a },
- { 0x06bb, 0x040b },
- { 0x06bc, 0x040c },
- { 0x06be, 0x040e },
- { 0x06bf, 0x040f },
- { 0x06c0, 0x044e },
- { 0x06c1, 0x0430 },
- { 0x06c2, 0x0431 },
- { 0x06c3, 0x0446 },
- { 0x06c4, 0x0434 },
- { 0x06c5, 0x0435 },
- { 0x06c6, 0x0444 },
- { 0x06c7, 0x0433 },
- { 0x06c8, 0x0445 },
- { 0x06c9, 0x0438 },
- { 0x06ca, 0x0439 },
- { 0x06cb, 0x043a },
- { 0x06cc, 0x043b },
- { 0x06cd, 0x043c },
- { 0x06ce, 0x043d },
- { 0x06cf, 0x043e },
- { 0x06d0, 0x043f },
- { 0x06d1, 0x044f },
- { 0x06d2, 0x0440 },
- { 0x06d3, 0x0441 },
- { 0x06d4, 0x0442 },
- { 0x06d5, 0x0443 },
- { 0x06d6, 0x0436 },
- { 0x06d7, 0x0432 },
- { 0x06d8, 0x044c },
- { 0x06d9, 0x044b },
- { 0x06da, 0x0437 },
- { 0x06db, 0x0448 },
- { 0x06dc, 0x044d },
- { 0x06dd, 0x0449 },
- { 0x06de, 0x0447 },
- { 0x06df, 0x044a },
- { 0x06e0, 0x042e },
- { 0x06e1, 0x0410 },
- { 0x06e2, 0x0411 },
- { 0x06e3, 0x0426 },
- { 0x06e4, 0x0414 },
- { 0x06e5, 0x0415 },
- { 0x06e6, 0x0424 },
- { 0x06e7, 0x0413 },
- { 0x06e8, 0x0425 },
- { 0x06e9, 0x0418 },
- { 0x06ea, 0x0419 },
- { 0x06eb, 0x041a },
- { 0x06ec, 0x041b },
- { 0x06ed, 0x041c },
- { 0x06ee, 0x041d },
- { 0x06ef, 0x041e },
- { 0x06f0, 0x041f },
- { 0x06f1, 0x042f },
- { 0x06f2, 0x0420 },
- { 0x06f3, 0x0421 },
- { 0x06f4, 0x0422 },
- { 0x06f5, 0x0423 },
- { 0x06f6, 0x0416 },
- { 0x06f7, 0x0412 },
- { 0x06f8, 0x042c },
- { 0x06f9, 0x042b },
- { 0x06fa, 0x0417 },
- { 0x06fb, 0x0428 },
- { 0x06fc, 0x042d },
- { 0x06fd, 0x0429 },
- { 0x06fe, 0x0427 },
- { 0x06ff, 0x042a },
- { 0x07a1, 0x0386 },
- { 0x07a2, 0x0388 },
- { 0x07a3, 0x0389 },
- { 0x07a4, 0x038a },
- { 0x07a5, 0x03aa },
- { 0x07a7, 0x038c },
- { 0x07a8, 0x038e },
- { 0x07a9, 0x03ab },
- { 0x07ab, 0x038f },
- { 0x07ae, 0x0385 },
- { 0x07af, 0x2015 },
- { 0x07b1, 0x03ac },
- { 0x07b2, 0x03ad },
- { 0x07b3, 0x03ae },
- { 0x07b4, 0x03af },
- { 0x07b5, 0x03ca },
- { 0x07b6, 0x0390 },
- { 0x07b7, 0x03cc },
- { 0x07b8, 0x03cd },
- { 0x07b9, 0x03cb },
- { 0x07ba, 0x03b0 },
- { 0x07bb, 0x03ce },
- { 0x07c1, 0x0391 },
- { 0x07c2, 0x0392 },
- { 0x07c3, 0x0393 },
- { 0x07c4, 0x0394 },
- { 0x07c5, 0x0395 },
- { 0x07c6, 0x0396 },
- { 0x07c7, 0x0397 },
- { 0x07c8, 0x0398 },
- { 0x07c9, 0x0399 },
- { 0x07ca, 0x039a },
- { 0x07cb, 0x039b },
- { 0x07cc, 0x039c },
- { 0x07cd, 0x039d },
- { 0x07ce, 0x039e },
- { 0x07cf, 0x039f },
- { 0x07d0, 0x03a0 },
- { 0x07d1, 0x03a1 },
- { 0x07d2, 0x03a3 },
- { 0x07d4, 0x03a4 },
- { 0x07d5, 0x03a5 },
- { 0x07d6, 0x03a6 },
- { 0x07d7, 0x03a7 },
- { 0x07d8, 0x03a8 },
- { 0x07d9, 0x03a9 },
- { 0x07e1, 0x03b1 },
- { 0x07e2, 0x03b2 },
- { 0x07e3, 0x03b3 },
- { 0x07e4, 0x03b4 },
- { 0x07e5, 0x03b5 },
- { 0x07e6, 0x03b6 },
- { 0x07e7, 0x03b7 },
- { 0x07e8, 0x03b8 },
- { 0x07e9, 0x03b9 },
- { 0x07ea, 0x03ba },
- { 0x07eb, 0x03bb },
- { 0x07ec, 0x03bc },
- { 0x07ed, 0x03bd },
- { 0x07ee, 0x03be },
- { 0x07ef, 0x03bf },
- { 0x07f0, 0x03c0 },
- { 0x07f1, 0x03c1 },
- { 0x07f2, 0x03c3 },
- { 0x07f3, 0x03c2 },
- { 0x07f4, 0x03c4 },
- { 0x07f5, 0x03c5 },
- { 0x07f6, 0x03c6 },
- { 0x07f7, 0x03c7 },
- { 0x07f8, 0x03c8 },
- { 0x07f9, 0x03c9 },
- { 0x08a1, 0x23b7 },
- { 0x08a2, 0x250c },
- { 0x08a3, 0x2500 },
- { 0x08a4, 0x2320 },
- { 0x08a5, 0x2321 },
- { 0x08a6, 0x2502 },
- { 0x08a7, 0x23a1 },
- { 0x08a8, 0x23a3 },
- { 0x08a9, 0x23a4 },
- { 0x08aa, 0x23a6 },
- { 0x08ab, 0x239b },
- { 0x08ac, 0x239d },
- { 0x08ad, 0x239e },
- { 0x08ae, 0x23a0 },
- { 0x08af, 0x23a8 },
- { 0x08b0, 0x23ac },
- { 0x08bc, 0x2264 },
- { 0x08bd, 0x2260 },
- { 0x08be, 0x2265 },
- { 0x08bf, 0x222b },
- { 0x08c0, 0x2234 },
- { 0x08c1, 0x221d },
- { 0x08c2, 0x221e },
- { 0x08c5, 0x2207 },
- { 0x08c8, 0x223c },
- { 0x08c9, 0x2243 },
- { 0x08cd, 0x21d4 },
- { 0x08ce, 0x21d2 },
- { 0x08cf, 0x2261 },
- { 0x08d6, 0x221a },
- { 0x08da, 0x2282 },
- { 0x08db, 0x2283 },
- { 0x08dc, 0x2229 },
- { 0x08dd, 0x222a },
- { 0x08de, 0x2227 },
- { 0x08df, 0x2228 },
- { 0x08ef, 0x2202 },
- { 0x08f6, 0x0192 },
- { 0x08fb, 0x2190 },
- { 0x08fc, 0x2191 },
- { 0x08fd, 0x2192 },
- { 0x08fe, 0x2193 },
- { 0x09e0, 0x25c6 },
- { 0x09e1, 0x2592 },
- { 0x09e2, 0x2409 },
- { 0x09e3, 0x240c },
- { 0x09e4, 0x240d },
- { 0x09e5, 0x240a },
- { 0x09e8, 0x2424 },
- { 0x09e9, 0x240b },
- { 0x09ea, 0x2518 },
- { 0x09eb, 0x2510 },
- { 0x09ec, 0x250c },
- { 0x09ed, 0x2514 },
- { 0x09ee, 0x253c },
- { 0x09ef, 0x23ba },
- { 0x09f0, 0x23bb },
- { 0x09f1, 0x2500 },
- { 0x09f2, 0x23bc },
- { 0x09f3, 0x23bd },
- { 0x09f4, 0x251c },
- { 0x09f5, 0x2524 },
- { 0x09f6, 0x2534 },
- { 0x09f7, 0x252c },
- { 0x09f8, 0x2502 },
- { 0x0aa1, 0x2003 },
- { 0x0aa2, 0x2002 },
- { 0x0aa3, 0x2004 },
- { 0x0aa4, 0x2005 },
- { 0x0aa5, 0x2007 },
- { 0x0aa6, 0x2008 },
- { 0x0aa7, 0x2009 },
- { 0x0aa8, 0x200a },
- { 0x0aa9, 0x2014 },
- { 0x0aaa, 0x2013 },
- { 0x0aae, 0x2026 },
- { 0x0aaf, 0x2025 },
- { 0x0ab0, 0x2153 },
- { 0x0ab1, 0x2154 },
- { 0x0ab2, 0x2155 },
- { 0x0ab3, 0x2156 },
- { 0x0ab4, 0x2157 },
- { 0x0ab5, 0x2158 },
- { 0x0ab6, 0x2159 },
- { 0x0ab7, 0x215a },
- { 0x0ab8, 0x2105 },
- { 0x0abb, 0x2012 },
- { 0x0abc, 0x2329 },
- { 0x0abe, 0x232a },
- { 0x0ac3, 0x215b },
- { 0x0ac4, 0x215c },
- { 0x0ac5, 0x215d },
- { 0x0ac6, 0x215e },
- { 0x0ac9, 0x2122 },
- { 0x0aca, 0x2613 },
- { 0x0acc, 0x25c1 },
- { 0x0acd, 0x25b7 },
- { 0x0ace, 0x25cb },
- { 0x0acf, 0x25af },
- { 0x0ad0, 0x2018 },
- { 0x0ad1, 0x2019 },
- { 0x0ad2, 0x201c },
- { 0x0ad3, 0x201d },
- { 0x0ad4, 0x211e },
- { 0x0ad6, 0x2032 },
- { 0x0ad7, 0x2033 },
- { 0x0ad9, 0x271d },
- { 0x0adb, 0x25ac },
- { 0x0adc, 0x25c0 },
- { 0x0add, 0x25b6 },
- { 0x0ade, 0x25cf },
- { 0x0adf, 0x25ae },
- { 0x0ae0, 0x25e6 },
- { 0x0ae1, 0x25ab },
- { 0x0ae2, 0x25ad },
- { 0x0ae3, 0x25b3 },
- { 0x0ae4, 0x25bd },
- { 0x0ae5, 0x2606 },
- { 0x0ae6, 0x2022 },
- { 0x0ae7, 0x25aa },
- { 0x0ae8, 0x25b2 },
- { 0x0ae9, 0x25bc },
- { 0x0aea, 0x261c },
- { 0x0aeb, 0x261e },
- { 0x0aec, 0x2663 },
- { 0x0aed, 0x2666 },
- { 0x0aee, 0x2665 },
- { 0x0af0, 0x2720 },
- { 0x0af1, 0x2020 },
- { 0x0af2, 0x2021 },
- { 0x0af3, 0x2713 },
- { 0x0af4, 0x2717 },
- { 0x0af5, 0x266f },
- { 0x0af6, 0x266d },
- { 0x0af7, 0x2642 },
- { 0x0af8, 0x2640 },
- { 0x0af9, 0x260e },
- { 0x0afa, 0x2315 },
- { 0x0afb, 0x2117 },
- { 0x0afc, 0x2038 },
- { 0x0afd, 0x201a },
- { 0x0afe, 0x201e },
- { 0x0ba3, 0x003c },
- { 0x0ba6, 0x003e },
- { 0x0ba8, 0x2228 },
- { 0x0ba9, 0x2227 },
- { 0x0bc0, 0x00af },
- { 0x0bc2, 0x22a5 },
- { 0x0bc3, 0x2229 },
- { 0x0bc4, 0x230a },
- { 0x0bc6, 0x005f },
- { 0x0bca, 0x2218 },
- { 0x0bcc, 0x2395 },
- { 0x0bce, 0x22a4 },
- { 0x0bcf, 0x25cb },
- { 0x0bd3, 0x2308 },
- { 0x0bd6, 0x222a },
- { 0x0bd8, 0x2283 },
- { 0x0bda, 0x2282 },
- { 0x0bdc, 0x22a2 },
- { 0x0bfc, 0x22a3 },
- { 0x0cdf, 0x2017 },
- { 0x0ce0, 0x05d0 },
- { 0x0ce1, 0x05d1 },
- { 0x0ce2, 0x05d2 },
- { 0x0ce3, 0x05d3 },
- { 0x0ce4, 0x05d4 },
- { 0x0ce5, 0x05d5 },
- { 0x0ce6, 0x05d6 },
- { 0x0ce7, 0x05d7 },
- { 0x0ce8, 0x05d8 },
- { 0x0ce9, 0x05d9 },
- { 0x0cea, 0x05da },
- { 0x0ceb, 0x05db },
- { 0x0cec, 0x05dc },
- { 0x0ced, 0x05dd },
- { 0x0cee, 0x05de },
- { 0x0cef, 0x05df },
- { 0x0cf0, 0x05e0 },
- { 0x0cf1, 0x05e1 },
- { 0x0cf2, 0x05e2 },
- { 0x0cf3, 0x05e3 },
- { 0x0cf4, 0x05e4 },
- { 0x0cf5, 0x05e5 },
- { 0x0cf6, 0x05e6 },
- { 0x0cf7, 0x05e7 },
- { 0x0cf8, 0x05e8 },
- { 0x0cf9, 0x05e9 },
- { 0x0cfa, 0x05ea },
- { 0x0da1, 0x0e01 },
- { 0x0da2, 0x0e02 },
- { 0x0da3, 0x0e03 },
- { 0x0da4, 0x0e04 },
- { 0x0da5, 0x0e05 },
- { 0x0da6, 0x0e06 },
- { 0x0da7, 0x0e07 },
- { 0x0da8, 0x0e08 },
- { 0x0da9, 0x0e09 },
- { 0x0daa, 0x0e0a },
- { 0x0dab, 0x0e0b },
- { 0x0dac, 0x0e0c },
- { 0x0dad, 0x0e0d },
- { 0x0dae, 0x0e0e },
- { 0x0daf, 0x0e0f },
- { 0x0db0, 0x0e10 },
- { 0x0db1, 0x0e11 },
- { 0x0db2, 0x0e12 },
- { 0x0db3, 0x0e13 },
- { 0x0db4, 0x0e14 },
- { 0x0db5, 0x0e15 },
- { 0x0db6, 0x0e16 },
- { 0x0db7, 0x0e17 },
- { 0x0db8, 0x0e18 },
- { 0x0db9, 0x0e19 },
- { 0x0dba, 0x0e1a },
- { 0x0dbb, 0x0e1b },
- { 0x0dbc, 0x0e1c },
- { 0x0dbd, 0x0e1d },
- { 0x0dbe, 0x0e1e },
- { 0x0dbf, 0x0e1f },
- { 0x0dc0, 0x0e20 },
- { 0x0dc1, 0x0e21 },
- { 0x0dc2, 0x0e22 },
- { 0x0dc3, 0x0e23 },
- { 0x0dc4, 0x0e24 },
- { 0x0dc5, 0x0e25 },
- { 0x0dc6, 0x0e26 },
- { 0x0dc7, 0x0e27 },
- { 0x0dc8, 0x0e28 },
- { 0x0dc9, 0x0e29 },
- { 0x0dca, 0x0e2a },
- { 0x0dcb, 0x0e2b },
- { 0x0dcc, 0x0e2c },
- { 0x0dcd, 0x0e2d },
- { 0x0dce, 0x0e2e },
- { 0x0dcf, 0x0e2f },
- { 0x0dd0, 0x0e30 },
- { 0x0dd1, 0x0e31 },
- { 0x0dd2, 0x0e32 },
- { 0x0dd3, 0x0e33 },
- { 0x0dd4, 0x0e34 },
- { 0x0dd5, 0x0e35 },
- { 0x0dd6, 0x0e36 },
- { 0x0dd7, 0x0e37 },
- { 0x0dd8, 0x0e38 },
- { 0x0dd9, 0x0e39 },
- { 0x0dda, 0x0e3a },
- { 0x0ddf, 0x0e3f },
- { 0x0de0, 0x0e40 },
- { 0x0de1, 0x0e41 },
- { 0x0de2, 0x0e42 },
- { 0x0de3, 0x0e43 },
- { 0x0de4, 0x0e44 },
- { 0x0de5, 0x0e45 },
- { 0x0de6, 0x0e46 },
- { 0x0de7, 0x0e47 },
- { 0x0de8, 0x0e48 },
- { 0x0de9, 0x0e49 },
- { 0x0dea, 0x0e4a },
- { 0x0deb, 0x0e4b },
- { 0x0dec, 0x0e4c },
- { 0x0ded, 0x0e4d },
- { 0x0df0, 0x0e50 },
- { 0x0df1, 0x0e51 },
- { 0x0df2, 0x0e52 },
- { 0x0df3, 0x0e53 },
- { 0x0df4, 0x0e54 },
- { 0x0df5, 0x0e55 },
- { 0x0df6, 0x0e56 },
- { 0x0df7, 0x0e57 },
- { 0x0df8, 0x0e58 },
- { 0x0df9, 0x0e59 },
- { 0x0ea1, 0x3131 },
- { 0x0ea2, 0x3132 },
- { 0x0ea3, 0x3133 },
- { 0x0ea4, 0x3134 },
- { 0x0ea5, 0x3135 },
- { 0x0ea6, 0x3136 },
- { 0x0ea7, 0x3137 },
- { 0x0ea8, 0x3138 },
- { 0x0ea9, 0x3139 },
- { 0x0eaa, 0x313a },
- { 0x0eab, 0x313b },
- { 0x0eac, 0x313c },
- { 0x0ead, 0x313d },
- { 0x0eae, 0x313e },
- { 0x0eaf, 0x313f },
- { 0x0eb0, 0x3140 },
- { 0x0eb1, 0x3141 },
- { 0x0eb2, 0x3142 },
- { 0x0eb3, 0x3143 },
- { 0x0eb4, 0x3144 },
- { 0x0eb5, 0x3145 },
- { 0x0eb6, 0x3146 },
- { 0x0eb7, 0x3147 },
- { 0x0eb8, 0x3148 },
- { 0x0eb9, 0x3149 },
- { 0x0eba, 0x314a },
- { 0x0ebb, 0x314b },
- { 0x0ebc, 0x314c },
- { 0x0ebd, 0x314d },
- { 0x0ebe, 0x314e },
- { 0x0ebf, 0x314f },
- { 0x0ec0, 0x3150 },
- { 0x0ec1, 0x3151 },
- { 0x0ec2, 0x3152 },
- { 0x0ec3, 0x3153 },
- { 0x0ec4, 0x3154 },
- { 0x0ec5, 0x3155 },
- { 0x0ec6, 0x3156 },
- { 0x0ec7, 0x3157 },
- { 0x0ec8, 0x3158 },
- { 0x0ec9, 0x3159 },
- { 0x0eca, 0x315a },
- { 0x0ecb, 0x315b },
- { 0x0ecc, 0x315c },
- { 0x0ecd, 0x315d },
- { 0x0ece, 0x315e },
- { 0x0ecf, 0x315f },
- { 0x0ed0, 0x3160 },
- { 0x0ed1, 0x3161 },
- { 0x0ed2, 0x3162 },
- { 0x0ed3, 0x3163 },
- { 0x0ed4, 0x11a8 },
- { 0x0ed5, 0x11a9 },
- { 0x0ed6, 0x11aa },
- { 0x0ed7, 0x11ab },
- { 0x0ed8, 0x11ac },
- { 0x0ed9, 0x11ad },
- { 0x0eda, 0x11ae },
- { 0x0edb, 0x11af },
- { 0x0edc, 0x11b0 },
- { 0x0edd, 0x11b1 },
- { 0x0ede, 0x11b2 },
- { 0x0edf, 0x11b3 },
- { 0x0ee0, 0x11b4 },
- { 0x0ee1, 0x11b5 },
- { 0x0ee2, 0x11b6 },
- { 0x0ee3, 0x11b7 },
- { 0x0ee4, 0x11b8 },
- { 0x0ee5, 0x11b9 },
- { 0x0ee6, 0x11ba },
- { 0x0ee7, 0x11bb },
- { 0x0ee8, 0x11bc },
- { 0x0ee9, 0x11bd },
- { 0x0eea, 0x11be },
- { 0x0eeb, 0x11bf },
- { 0x0eec, 0x11c0 },
- { 0x0eed, 0x11c1 },
- { 0x0eee, 0x11c2 },
- { 0x0eef, 0x316d },
- { 0x0ef0, 0x3171 },
- { 0x0ef1, 0x3178 },
- { 0x0ef2, 0x317f },
- { 0x0ef3, 0x3181 },
- { 0x0ef4, 0x3184 },
- { 0x0ef5, 0x3186 },
- { 0x0ef6, 0x318d },
- { 0x0ef7, 0x318e },
- { 0x0ef8, 0x11eb },
- { 0x0ef9, 0x11f0 },
- { 0x0efa, 0x11f9 },
- { 0x0eff, 0x20a9 },
-#if 0
- /* FIXME: there is no keysym 0x13a4? But 0x20ac is EuroSign in both
- keysym and Unicode */
- { 0x13a4, 0x20ac },
-#endif
- { 0x13bc, 0x0152 },
- { 0x13bd, 0x0153 },
- { 0x13be, 0x0178 },
- { 0x20ac, 0x20ac },
-
- /* Special function keys. */
-
- { 0xff08, 0x0008 }, /* XK_BackSpace */
- { 0xff09, 0x0009 }, /* XK_Tab */
- { 0xff0a, 0x000a }, /* XK_Linefeed */
- { 0xff0d, 0x000d }, /* XK_Return */
- { 0xff13, 0x0013 }, /* XK_Pause */
- { 0xff1b, 0x001b }, /* XK_Escape */
- { 0xff50, 0x0001 }, /* XK_Home */
- { 0xff51, 0x001c }, /* XK_Left */
- { 0xff52, 0x001e }, /* XK_Up */
- { 0xff53, 0x001d }, /* XK_Right */
- { 0xff54, 0x001f }, /* XK_Down */
- { 0xff55, 0x000b }, /* XK_Prior */
- { 0xff56, 0x000c }, /* XK_Next */
- { 0xff57, 0x0004 }, /* XK_End */
- { 0xff6a, 0x0005 }, /* XK_Help */
- { 0xffff, 0x007f }, /* XK_Delete */
-};
-
-long keysym2ucs(int keysym)
-{
- int min = 0;
- int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
- int mid;
-
- /* first check for Latin-1 characters (1:1 mapping) */
- if ((keysym >= 0x0020 && keysym <= 0x007e) ||
- (keysym >= 0x00a0 && keysym <= 0x00ff))
- return keysym;
-
- /* also check for directly encoded 24-bit UCS characters */
- if ((keysym & 0xff000000) == 0x01000000)
- return keysym & 0x00ffffff;
-
- /* binary search in table */
- while (max >= min) {
- mid = (min + max) / 2;
- if (keysymtab[mid].keysym < keysym)
- min = mid + 1;
- else if (keysymtab[mid].keysym > keysym)
- max = mid - 1;
- else {
- /* found it */
- return keysymtab[mid].ucs;
- }
- }
-
- /* no matching Unicode value found */
- return -1;
-}
-
-static int reverse_compare (const void *a, const void *b)
-{
- const struct codepair *ca = a, *cb = b;
-
- return ca->ucs - cb->ucs;
-}
-
-int ucs2keysym(long ucs)
-{
- static struct codepair *reverse_keysymtab;
-
- int min = 0;
- int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
- int mid;
-
- if (reverse_keysymtab == NULL)
- {
- reverse_keysymtab = malloc (sizeof (keysymtab));
- memcpy (reverse_keysymtab, keysymtab, sizeof (keysymtab));
-
- qsort (reverse_keysymtab,
- sizeof (keysymtab) / sizeof (struct codepair),
- sizeof (struct codepair),
- reverse_compare);
- }
-
- /* first check for Latin-1 characters (1:1 mapping) */
- if ((ucs >= 0x0020 && ucs <= 0x007e) ||
- (ucs >= 0x00a0 && ucs <= 0x00ff))
- return ucs;
-
- /* binary search in table */
- while (max >= min) {
- mid = (min + max) / 2;
- if (reverse_keysymtab[mid].ucs < ucs)
- min = mid + 1;
- else if (reverse_keysymtab[mid].ucs > ucs)
- max = mid - 1;
- else {
- /* found it */
- return reverse_keysymtab[mid].keysym;
- }
- }
-
- /* finally, assume a directly encoded 24-bit UCS character */
- return ucs | 0x01000000;
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/keysym2ucs.h b/nx-X11/programs/Xserver/hw/darwin/quartz/keysym2ucs.h
deleted file mode 100644
index c7ff6f3b3..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/keysym2ucs.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* $XFree86: $
- *
- * This module converts keysym values into the corresponding ISO 10646
- * (UCS, Unicode) values.
- *
- * The array keysymtab[] contains pairs of X11 keysym values for graphical
- * characters and the corresponding Unicode value. The function
- * keysym2ucs() maps a keysym onto a Unicode value using a binary search,
- * therefore keysymtab[] must remain SORTED by keysym value.
- *
- * The keysym -> UTF-8 conversion will hopefully one day be provided
- * by Xlib via XmbLookupString() and should ideally not have to be
- * done in X applications. But we are not there yet.
- *
- * We allow to represent any UCS character in the range U-00000000 to
- * U-00FFFFFF by a keysym value in the range 0x01000000 to 0x01ffffff.
- * This admittedly does not cover the entire 31-bit space of UCS, but
- * it does cover all of the characters up to U-10FFFF, which can be
- * represented by UTF-16, and more, and it is very unlikely that higher
- * UCS codes will ever be assigned by ISO. So to get Unicode character
- * U+ABCD you can directly use keysym 0x0100abcd.
- *
- * Author: Markus G. Kuhn <mkuhn@acm.org>, University of Cambridge, April 2001
- *
- * Special thanks to Richard Verhoeven <river@win.tue.nl> for preparing
- * an initial draft of the mapping table.
- *
- * This software is in the public domain. Share and enjoy!
- */
-
-#ifndef KEYSYM2UCS_H
-#define KEYSYM2UCS_H 1
-
-extern long keysym2ucs(int keysym);
-extern int ucs2keysym(long ucs);
-
-#endif /* KEYSYM2UCS_H */
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/pseudoramiX.c b/nx-X11/programs/Xserver/hw/darwin/quartz/pseudoramiX.c
deleted file mode 100644
index 71093f5fb..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/pseudoramiX.c
+++ /dev/null
@@ -1,430 +0,0 @@
-/*
- * Minimal implementation of PanoramiX/Xinerama
- *
- * This is used in rootless mode where the underlying window server
- * already provides an abstracted view of multiple screens as one
- * large screen area.
- *
- * This code is largely based on panoramiX.c, which contains the
- * following copyright notice:
- */
-/*****************************************************************
-Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
-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 the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software.
-
-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
-DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
-BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
-shall not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from Digital
-Equipment Corporation.
-******************************************************************/
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/pseudoramiX.c,v 1.4 2004/07/02 01:30:33 torrey Exp $ */
-
-#include "pseudoramiX.h"
-
-#include "extnsionst.h"
-#include "dixstruct.h"
-#include "window.h"
-#include <X11/extensions/panoramiXproto.h>
-#include "globals.h"
-
-extern int ProcPanoramiXQueryVersion (ClientPtr client);
-
-static void PseudoramiXResetProc(ExtensionEntry *extEntry);
-
-static int ProcPseudoramiXQueryVersion(ClientPtr client);
-static int ProcPseudoramiXGetState(ClientPtr client);
-static int ProcPseudoramiXGetScreenCount(ClientPtr client);
-static int ProcPseudoramiXGetScreenSize(ClientPtr client);
-static int ProcPseudoramiXIsActive(ClientPtr client);
-static int ProcPseudoramiXQueryScreens(ClientPtr client);
-static int ProcPseudoramiXDispatch(ClientPtr client);
-
-static int SProcPseudoramiXQueryVersion(ClientPtr client);
-static int SProcPseudoramiXGetState(ClientPtr client);
-static int SProcPseudoramiXGetScreenCount(ClientPtr client);
-static int SProcPseudoramiXGetScreenSize(ClientPtr client);
-static int SProcPseudoramiXIsActive(ClientPtr client);
-static int SProcPseudoramiXQueryScreens(ClientPtr client);
-static int SProcPseudoramiXDispatch(ClientPtr client);
-
-
-typedef struct {
- int x;
- int y;
- int w;
- int h;
-} PseudoramiXScreenRec;
-
-static PseudoramiXScreenRec *pseudoramiXScreens = NULL;
-static int pseudoramiXScreensAllocated = 0;
-static int pseudoramiXNumScreens = 0;
-static unsigned long pseudoramiXGeneration = 0;
-
-
-// Add a PseudoramiX screen.
-// The rest of the X server will know nothing about this screen.
-// Can be called before or after extension init.
-// Screens must be re-added once per generation.
-void
-PseudoramiXAddScreen(int x, int y, int w, int h)
-{
- PseudoramiXScreenRec *s;
-
- if (noPseudoramiXExtension) return;
-
- if (pseudoramiXNumScreens == pseudoramiXScreensAllocated) {
- pseudoramiXScreensAllocated += pseudoramiXScreensAllocated + 1;
- pseudoramiXScreens = xrealloc(pseudoramiXScreens,
- pseudoramiXScreensAllocated *
- sizeof(PseudoramiXScreenRec));
- }
-
- s = &pseudoramiXScreens[pseudoramiXNumScreens++];
- s->x = x;
- s->y = y;
- s->w = w;
- s->h = h;
-}
-
-
-// Initialize PseudoramiX.
-// Copied from PanoramiXExtensionInit
-void PseudoramiXExtensionInit(int argc, char *argv[])
-{
- Bool success = FALSE;
- ExtensionEntry *extEntry;
-
- if (noPseudoramiXExtension) return;
-
- /* Even with only one screen we need to enable PseudoramiX to allow
- dynamic screen configuration changes. */
-#if 0
- if (pseudoramiXNumScreens == 1) {
- // Only one screen - disable Xinerama extension.
- noPseudoramiXExtension = TRUE;
- return;
- }
-#endif
-
- // The server must not run the PanoramiX operations.
- noPanoramiXExtension = TRUE;
-
- if (pseudoramiXGeneration != serverGeneration) {
- extEntry = AddExtension(PANORAMIX_PROTOCOL_NAME, 0, 0,
- ProcPseudoramiXDispatch,
- SProcPseudoramiXDispatch,
- PseudoramiXResetProc,
- StandardMinorOpcode);
- if (!extEntry) {
- ErrorF("PseudoramiXExtensionInit(): AddExtension failed\n");
- } else {
- pseudoramiXGeneration = serverGeneration;
- success = TRUE;
- }
- }
-
- if (!success) {
- ErrorF("%s Extension (PseudoramiX) failed to initialize\n",
- PANORAMIX_PROTOCOL_NAME);
- return;
- }
-}
-
-
-void PseudoramiXResetScreens(void)
-{
- pseudoramiXNumScreens = 0;
-}
-
-
-static void PseudoramiXResetProc(ExtensionEntry *extEntry)
-{
- PseudoramiXResetScreens();
-}
-
-
-// was PanoramiX
-static int ProcPseudoramiXQueryVersion(ClientPtr client)
-{
- return ProcPanoramiXQueryVersion(client);
-}
-
-
-// was PanoramiX
-static int ProcPseudoramiXGetState(ClientPtr client)
-{
- REQUEST(xPanoramiXGetStateReq);
- WindowPtr pWin;
- xPanoramiXGetStateReply rep;
- register int n;
-
- REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.state = !noPseudoramiXExtension;
- if (client->swapped) {
- swaps (&rep.sequenceNumber, n);
- swapl (&rep.length, n);
- swaps (&rep.state, n);
- }
- WriteToClient (client, sizeof (xPanoramiXGetStateReply), (char *) &rep);
- return client->noClientException;
-}
-
-
-// was PanoramiX
-static int ProcPseudoramiXGetScreenCount(ClientPtr client)
-{
- REQUEST(xPanoramiXGetScreenCountReq);
- WindowPtr pWin;
- xPanoramiXGetScreenCountReply rep;
- register int n;
-
- REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.ScreenCount = pseudoramiXNumScreens;
- if (client->swapped) {
- swaps (&rep.sequenceNumber, n);
- swapl (&rep.length, n);
- swaps (&rep.ScreenCount, n);
- }
- WriteToClient (client, sizeof(xPanoramiXGetScreenCountReply), (char *)&rep);
- return client->noClientException;
-}
-
-
-// was PanoramiX
-static int ProcPseudoramiXGetScreenSize(ClientPtr client)
-{
- REQUEST(xPanoramiXGetScreenSizeReq);
- WindowPtr pWin;
- xPanoramiXGetScreenSizeReply rep;
- register int n;
-
- REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- /* screen dimensions */
- rep.width = pseudoramiXScreens[stuff->screen].w;
- // was panoramiXdataPtr[stuff->screen].width;
- rep.height = pseudoramiXScreens[stuff->screen].h;
- // was panoramiXdataPtr[stuff->screen].height;
- if (client->swapped) {
- swaps (&rep.sequenceNumber, n);
- swapl (&rep.length, n);
- swaps (&rep.width, n);
- swaps (&rep.height, n);
- }
- WriteToClient (client, sizeof(xPanoramiXGetScreenSizeReply), (char *)&rep);
- return client->noClientException;
-}
-
-
-// was Xinerama
-static int ProcPseudoramiXIsActive(ClientPtr client)
-{
- /* REQUEST(xXineramaIsActiveReq); */
- xXineramaIsActiveReply rep;
-
- REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
-
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.state = !noPseudoramiXExtension;
- if (client->swapped) {
- register int n;
- swaps (&rep.sequenceNumber, n);
- swapl (&rep.length, n);
- swapl (&rep.state, n);
- }
- WriteToClient (client, sizeof (xXineramaIsActiveReply), (char *) &rep);
- return client->noClientException;
-}
-
-
-// was Xinerama
-static int ProcPseudoramiXQueryScreens(ClientPtr client)
-{
- /* REQUEST(xXineramaQueryScreensReq); */
- xXineramaQueryScreensReply rep;
-
- REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
-
- rep.type = X_Reply;
- rep.sequenceNumber = client->sequence;
- rep.number = noPseudoramiXExtension ? 0 : pseudoramiXNumScreens;
- rep.length = rep.number * sz_XineramaScreenInfo >> 2;
- if (client->swapped) {
- register int n;
- swaps (&rep.sequenceNumber, n);
- swapl (&rep.length, n);
- swapl (&rep.number, n);
- }
- WriteToClient (client, sizeof (xXineramaQueryScreensReply), (char *) &rep);
-
- if (!noPseudoramiXExtension) {
- xXineramaScreenInfo scratch;
- int i;
-
- for(i = 0; i < pseudoramiXNumScreens; i++) {
- scratch.x_org = pseudoramiXScreens[i].x;
- scratch.y_org = pseudoramiXScreens[i].y;
- scratch.width = pseudoramiXScreens[i].w;
- scratch.height = pseudoramiXScreens[i].h;
-
- if(client->swapped) {
- register int n;
- swaps (&scratch.x_org, n);
- swaps (&scratch.y_org, n);
- swaps (&scratch.width, n);
- swaps (&scratch.height, n);
- }
- WriteToClient (client, sz_XineramaScreenInfo, (char *) &scratch);
- }
- }
-
- return client->noClientException;
-}
-
-
-// was PanoramiX
-static int ProcPseudoramiXDispatch (ClientPtr client)
-{ REQUEST(xReq);
- switch (stuff->data)
- {
- case X_PanoramiXQueryVersion:
- return ProcPseudoramiXQueryVersion(client);
- case X_PanoramiXGetState:
- return ProcPseudoramiXGetState(client);
- case X_PanoramiXGetScreenCount:
- return ProcPseudoramiXGetScreenCount(client);
- case X_PanoramiXGetScreenSize:
- return ProcPseudoramiXGetScreenSize(client);
- case X_XineramaIsActive:
- return ProcPseudoramiXIsActive(client);
- case X_XineramaQueryScreens:
- return ProcPseudoramiXQueryScreens(client);
- }
- return BadRequest;
-}
-
-
-
-static int
-SProcPseudoramiXQueryVersion (ClientPtr client)
-{
- REQUEST(xPanoramiXQueryVersionReq);
- register int n;
-
- swaps(&stuff->length,n);
- REQUEST_SIZE_MATCH (xPanoramiXQueryVersionReq);
- return ProcPseudoramiXQueryVersion(client);
-}
-
-static int
-SProcPseudoramiXGetState(ClientPtr client)
-{
- REQUEST(xPanoramiXGetStateReq);
- register int n;
-
- swaps (&stuff->length, n);
- REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
- return ProcPseudoramiXGetState(client);
-}
-
-static int
-SProcPseudoramiXGetScreenCount(ClientPtr client)
-{
- REQUEST(xPanoramiXGetScreenCountReq);
- register int n;
-
- swaps (&stuff->length, n);
- REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
- return ProcPseudoramiXGetScreenCount(client);
-}
-
-static int
-SProcPseudoramiXGetScreenSize(ClientPtr client)
-{
- REQUEST(xPanoramiXGetScreenSizeReq);
- register int n;
-
- swaps (&stuff->length, n);
- REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
- return ProcPseudoramiXGetScreenSize(client);
-}
-
-
-static int
-SProcPseudoramiXIsActive(ClientPtr client)
-{
- REQUEST(xXineramaIsActiveReq);
- register int n;
-
- swaps (&stuff->length, n);
- REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
- return ProcPseudoramiXIsActive(client);
-}
-
-
-static int
-SProcPseudoramiXQueryScreens(ClientPtr client)
-{
- REQUEST(xXineramaQueryScreensReq);
- register int n;
-
- swaps (&stuff->length, n);
- REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
- return ProcPseudoramiXQueryScreens(client);
-}
-
-
-static int
-SProcPseudoramiXDispatch (ClientPtr client)
-{ REQUEST(xReq);
- switch (stuff->data)
- {
- case X_PanoramiXQueryVersion:
- return SProcPseudoramiXQueryVersion(client);
- case X_PanoramiXGetState:
- return SProcPseudoramiXGetState(client);
- case X_PanoramiXGetScreenCount:
- return SProcPseudoramiXGetScreenCount(client);
- case X_PanoramiXGetScreenSize:
- return SProcPseudoramiXGetScreenSize(client);
- case X_XineramaIsActive:
- return SProcPseudoramiXIsActive(client);
- case X_XineramaQueryScreens:
- return SProcPseudoramiXQueryScreens(client);
- }
- return BadRequest;
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/pseudoramiX.h b/nx-X11/programs/Xserver/hw/darwin/quartz/pseudoramiX.h
deleted file mode 100644
index c2943369d..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/pseudoramiX.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
- * Minimal implementation of PanoramiX/Xinerama
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/pseudoramiX.h,v 1.3 2004/07/02 01:30:33 torrey Exp $ */
-
-extern int noPseudoramiXExtension;
-
-void PseudoramiXAddScreen(int x, int y, int w, int h);
-void PseudoramiXExtensionInit(int argc, char *argv[]);
-void PseudoramiXResetScreens(void);
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/quartz.c b/nx-X11/programs/Xserver/hw/darwin/quartz/quartz.c
deleted file mode 100644
index 7a0155f98..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/quartz.c
+++ /dev/null
@@ -1,426 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/quartz.c,v 1.4 2005/07/01 22:43:07 daniels Exp $ */
-/**************************************************************
- *
- * Quartz-specific support for the Darwin X Server
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2004 Greg Parker and Torrey T. Lyons.
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartz.c,v 1.16 2004/07/02 01:30:33 torrey Exp $ */
-
-#include "quartzCommon.h"
-#include "quartz.h"
-#include "darwin.h"
-#include "quartzAudio.h"
-#include "pseudoramiX.h"
-#define _APPLEWM_SERVER_
-#include "applewm.h"
-#include "applewmExt.h"
-
-// X headers
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "colormapst.h"
-#include "globals.h"
-
-// System headers
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <IOKit/pwr_mgt/IOPMLib.h>
-
-// Shared global variables for Quartz modes
-int quartzEventWriteFD = -1;
-int quartzStartClients = 1;
-int quartzRootless = -1;
-int quartzUseSysBeep = 0;
-int quartzUseAGL = 1;
-int quartzEnableKeyEquivalents = 1;
-int quartzServerVisible = TRUE;
-int quartzServerQuitting = FALSE;
-int quartzScreenIndex = 0;
-int aquaMenuBarHeight = 0;
-int noPseudoramiXExtension = TRUE;
-QuartzModeProcsPtr quartzProcs = NULL;
-const char *quartzOpenGLBundle = NULL;
-
-/*
-===========================================================================
-
- Screen functions
-
-===========================================================================
-*/
-
-/*
- * DarwinModeAddScreen
- * Do mode dependent initialization of each screen for Quartz.
- */
-Bool DarwinModeAddScreen(
- int index,
- ScreenPtr pScreen)
-{
- // allocate space for private per screen Quartz specific storage
- QuartzScreenPtr displayInfo = xcalloc(sizeof(QuartzScreenRec), 1);
- QUARTZ_PRIV(pScreen) = displayInfo;
-
- // do Quartz mode specific initialization
- return quartzProcs->AddScreen(index, pScreen);
-}
-
-
-/*
- * DarwinModeSetupScreen
- * Finalize mode specific setup of each screen.
- */
-Bool DarwinModeSetupScreen(
- int index,
- ScreenPtr pScreen)
-{
- // do Quartz mode specific setup
- if (! quartzProcs->SetupScreen(index, pScreen))
- return FALSE;
-
- // setup cursor support
- if (! quartzProcs->InitCursor(pScreen))
- return FALSE;
-
- return TRUE;
-}
-
-
-/*
- * DarwinModeInitOutput
- * Quartz display initialization.
- */
-void DarwinModeInitOutput(
- int argc,
- char **argv )
-{
- static unsigned long generation = 0;
-
- // Allocate private storage for each screen's Quartz specific info
- if (generation != serverGeneration) {
- quartzScreenIndex = AllocateScreenPrivateIndex();
- generation = serverGeneration;
- }
-
- if (serverGeneration == 0) {
- QuartzAudioInit();
- }
-
- if (!RegisterBlockAndWakeupHandlers(QuartzBlockHandler,
- QuartzWakeupHandler,
- NULL))
- {
- FatalError("Could not register block and wakeup handlers.");
- }
-
- // Do display mode specific initialization
- quartzProcs->DisplayInit();
-
- // Init PseudoramiX implementation of Xinerama.
- // This should be in InitExtensions, but that causes link errors
- // for servers that don't link in pseudoramiX.c.
- if (!noPseudoramiXExtension) {
- PseudoramiXExtensionInit(argc, argv);
- }
-}
-
-
-/*
- * DarwinModeInitInput
- * Inform the main thread the X server is ready to handle events.
- */
-void DarwinModeInitInput(
- int argc,
- char **argv )
-{
- QuartzMessageMainThread(kQuartzServerStarted, NULL, 0);
-
- // Do final display mode specific initialization before handling events
- if (quartzProcs->InitInput)
- quartzProcs->InitInput(argc, argv);
-}
-
-
-/*
- * QuartzUpdateScreens
- * Adjust for screen arrangement changes.
- */
-static void QuartzUpdateScreens(void)
-{
- ScreenPtr pScreen;
- WindowPtr pRoot;
- int x, y, width, height, sx, sy;
- xEvent e;
-
- if (noPseudoramiXExtension || screenInfo.numScreens != 1)
- {
- /* FIXME: if not using Xinerama, we have multiple screens, and
- to do this properly may need to add or remove screens. Which
- isn't possible. So don't do anything. Another reason why
- we default to running with Xinerama. */
-
- return;
- }
-
- pScreen = screenInfo.screens[0];
-
- PseudoramiXResetScreens();
- quartzProcs->AddPseudoramiXScreens(&x, &y, &width, &height);
-
- dixScreenOrigins[pScreen->myNum].x = x;
- dixScreenOrigins[pScreen->myNum].y = y;
- pScreen->mmWidth = pScreen->mmWidth * ((double) width / pScreen->width);
- pScreen->mmHeight = pScreen->mmHeight * ((double) height / pScreen->height);
- pScreen->width = width;
- pScreen->height = height;
-
- /* FIXME: should probably do something with RandR here. */
-
- DarwinAdjustScreenOrigins(&screenInfo);
- quartzProcs->UpdateScreen(pScreen);
-
- sx = dixScreenOrigins[pScreen->myNum].x + darwinMainScreenX;
- sy = dixScreenOrigins[pScreen->myNum].y + darwinMainScreenY;
-
- /* Adjust the root window. */
- pRoot = WindowTable[pScreen->myNum];
- AppleWMSetScreenOrigin(pRoot);
- pScreen->ResizeWindow(pRoot, x - sx, y - sy, width, height, NULL);
- pScreen->PaintWindowBackground(pRoot, &pRoot->borderClip, PW_BACKGROUND);
-// QuartzIgnoreNextWarpCursor();
- DefineInitialRootWindow(pRoot);
-
- /* Send an event for the root reconfigure */
- e.u.u.type = ConfigureNotify;
- e.u.configureNotify.window = pRoot->drawable.id;
- e.u.configureNotify.aboveSibling = None;
- e.u.configureNotify.x = x - sx;
- e.u.configureNotify.y = y - sy;
- e.u.configureNotify.width = width;
- e.u.configureNotify.height = height;
- e.u.configureNotify.borderWidth = wBorderWidth(pRoot);
- e.u.configureNotify.override = pRoot->overrideRedirect;
- DeliverEvents(pRoot, &e, 1, NullWindow);
-
- /* FIXME: Should we use RREditConnectionInfo(pScreen)? */
-}
-
-
-/*
- * QuartzShow
- * Show the X server on screen. Does nothing if already shown.
- * Calls mode specific screen resume to restore the X clip regions
- * (if needed) and the X server cursor state.
- */
-static void QuartzShow(
- int x, // cursor location
- int y )
-{
- int i;
-
- if (!quartzServerVisible) {
- quartzServerVisible = TRUE;
- for (i = 0; i < screenInfo.numScreens; i++) {
- if (screenInfo.screens[i]) {
- quartzProcs->ResumeScreen(screenInfo.screens[i], x, y);
- }
- }
- }
-}
-
-
-/*
- * QuartzHide
- * Remove the X server display from the screen. Does nothing if already
- * hidden. Calls mode specific screen suspend to set X clip regions to
- * prevent drawing (if needed) and restore the Aqua cursor.
- */
-static void QuartzHide(void)
-{
- int i;
-
- if (quartzServerVisible) {
- for (i = 0; i < screenInfo.numScreens; i++) {
- if (screenInfo.screens[i]) {
- quartzProcs->SuspendScreen(screenInfo.screens[i]);
- }
- }
- }
- quartzServerVisible = FALSE;
- QuartzMessageMainThread(kQuartzServerHidden, NULL, 0);
-}
-
-
-/*
- * QuartzSetRootClip
- * Enable or disable rendering to the X screen.
- */
-static void QuartzSetRootClip(
- BOOL enable)
-{
- int i;
-
- if (!quartzServerVisible)
- return;
-
- for (i = 0; i < screenInfo.numScreens; i++) {
- if (screenInfo.screens[i]) {
- xf86SetRootClip(screenInfo.screens[i], enable);
- }
- }
-}
-
-
-/*
- * QuartzMessageServerThread
- * Send the X server thread a message by placing it on the event queue.
- */
-void
-QuartzMessageServerThread(
- int type,
- int argc, ...)
-{
- xEvent xe;
- INT32 *argv;
- int i, max_args;
- va_list args;
-
- memset(&xe, 0, sizeof(xe));
- xe.u.u.type = type;
- xe.u.clientMessage.u.l.type = type;
-
- argv = &xe.u.clientMessage.u.l.longs0;
- max_args = 4;
-
- if (argc > 0 && argc <= max_args) {
- va_start (args, argc);
- for (i = 0; i < argc; i++)
- argv[i] = (int) va_arg (args, int);
- va_end (args);
- }
-
- DarwinEQEnqueue(&xe);
-}
-
-
-/*
- * DarwinModeProcessEvent
- * Process Quartz specific events.
- */
-void DarwinModeProcessEvent(
- xEvent *xe)
-{
- switch (xe->u.u.type) {
-
- case kXDarwinActivate:
- QuartzShow(xe->u.keyButtonPointer.rootX,
- xe->u.keyButtonPointer.rootY);
- AppleWMSendEvent(AppleWMActivationNotify,
- AppleWMActivationNotifyMask,
- AppleWMIsActive, 0);
- break;
-
- case kXDarwinDeactivate:
- AppleWMSendEvent(AppleWMActivationNotify,
- AppleWMActivationNotifyMask,
- AppleWMIsInactive, 0);
- QuartzHide();
- break;
-
- case kXDarwinSetRootClip:
- QuartzSetRootClip((BOOL)xe->u.clientMessage.u.l.longs0);
- break;
-
- case kXDarwinQuit:
- GiveUp(0);
- break;
-
- case kXDarwinReadPasteboard:
- QuartzReadPasteboard();
- break;
-
- case kXDarwinWritePasteboard:
- QuartzWritePasteboard();
- break;
-
- /*
- * AppleWM events
- */
- case kXDarwinControllerNotify:
- AppleWMSendEvent(AppleWMControllerNotify,
- AppleWMControllerNotifyMask,
- xe->u.clientMessage.u.l.longs0,
- xe->u.clientMessage.u.l.longs1);
- break;
-
- case kXDarwinPasteboardNotify:
- AppleWMSendEvent(AppleWMPasteboardNotify,
- AppleWMPasteboardNotifyMask,
- xe->u.clientMessage.u.l.longs0,
- xe->u.clientMessage.u.l.longs1);
- break;
-
- case kXDarwinDisplayChanged:
- QuartzUpdateScreens();
- break;
-
- case kXDarwinWindowState:
- case kXDarwinWindowMoved:
- // FIXME: Not implemented yet
- break;
-
- default:
- ErrorF("Unknown application defined event type %d.\n",
- xe->u.u.type);
- }
-}
-
-
-/*
- * DarwinModeGiveUp
- * Cleanup before X server shutdown
- * Release the screen and restore the Aqua cursor.
- */
-void DarwinModeGiveUp(void)
-{
-#if 0
-// Trying to switch cursors when quitting causes deadlock
- int i;
-
- for (i = 0; i < screenInfo.numScreens; i++) {
- if (screenInfo.screens[i]) {
- QuartzSuspendXCursor(screenInfo.screens[i]);
- }
- }
-#endif
-
- if (!quartzRootless)
- quartzProcs->ReleaseScreens();
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/quartz.h b/nx-X11/programs/Xserver/hw/darwin/quartz/quartz.h
deleted file mode 100644
index 9e2f90f78..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/quartz.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * quartz.h
- *
- * External interface of the Quartz display modes seen by the generic, mode
- * independent parts of the Darwin X server.
- */
-/*
- * Copyright (c) 2001-2003 Greg Parker and Torrey T. Lyons.
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/quartz.h,v 1.4 2005/07/01 22:43:07 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartz.h,v 1.7 2003/11/12 20:21:51 torrey Exp $ */
-
-#ifndef _QUARTZ_H
-#define _QUARTZ_H
-
-#include "quartzPasteboard.h"
-
-#include "screenint.h"
-#include "window.h"
-
-/*------------------------------------------
- Quartz display mode function types
- ------------------------------------------*/
-
-/*
- * Display mode initialization
- */
-typedef void (*DisplayInitProc)(void);
-typedef Bool (*AddScreenProc)(int index, ScreenPtr pScreen);
-typedef Bool (*SetupScreenProc)(int index, ScreenPtr pScreen);
-typedef void (*InitInputProc)(int argc, char **argv);
-
-/*
- * Cursor functions
- */
-typedef Bool (*InitCursorProc)(ScreenPtr pScreen);
-typedef void (*CursorUpdateProc)(void);
-
-/*
- * Suspend and resume X11 activity
- */
-typedef void (*SuspendScreenProc)(ScreenPtr pScreen);
-typedef void (*ResumeScreenProc)(ScreenPtr pScreen, int x, int y);
-typedef void (*CaptureScreensProc)(void);
-typedef void (*ReleaseScreensProc)(void);
-
-/*
- * Screen state change support
- */
-typedef void (*ScreenChangedProc)(void);
-typedef void (*AddPseudoramiXScreensProc)(int *x, int *y, int *width, int *height);
-typedef void (*UpdateScreenProc)(ScreenPtr pScreen);
-
-/*
- * Rootless helper functions
- */
-typedef Bool (*IsX11WindowProc)(void *nsWindow, int windowNumber);
-typedef void (*HideWindowsProc)(Bool hide);
-
-/*
- * Rootless functions for optional export to GLX layer
- */
-typedef void * (*FrameForWindowProc)(WindowPtr pWin, Bool create);
-typedef WindowPtr (*TopLevelParentProc)(WindowPtr pWindow);
-typedef Bool (*CreateSurfaceProc)
- (ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable,
- unsigned int client_id, unsigned int *surface_id,
- unsigned int key[2], void (*notify) (void *arg, void *data),
- void *notify_data);
-typedef Bool (*DestroySurfaceProc)
- (ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable,
- void (*notify) (void *arg, void *data), void *notify_data);
-
-/*
- * Quartz display mode function list
- */
-typedef struct _QuartzModeProcs {
- DisplayInitProc DisplayInit;
- AddScreenProc AddScreen;
- SetupScreenProc SetupScreen;
- InitInputProc InitInput;
-
- InitCursorProc InitCursor;
- CursorUpdateProc CursorUpdate; // Not used if NULL
-
- SuspendScreenProc SuspendScreen;
- ResumeScreenProc ResumeScreen;
- CaptureScreensProc CaptureScreens; // Only called in fullscreen
- ReleaseScreensProc ReleaseScreens; // Only called in fullscreen
-
- ScreenChangedProc ScreenChanged;
- AddPseudoramiXScreensProc AddPseudoramiXScreens;
- UpdateScreenProc UpdateScreen;
-
- IsX11WindowProc IsX11Window;
- HideWindowsProc HideWindows;
-
- FrameForWindowProc FrameForWindow;
- TopLevelParentProc TopLevelParent;
- CreateSurfaceProc CreateSurface;
- DestroySurfaceProc DestroySurface;
-} QuartzModeProcsRec, *QuartzModeProcsPtr;
-
-extern QuartzModeProcsPtr quartzProcs;
-
-Bool QuartzLoadDisplayBundle(const char *dpyBundleName);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzAudio.c b/nx-X11/programs/Xserver/hw/darwin/quartz/quartzAudio.c
deleted file mode 100644
index 2106dfad4..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzAudio.c
+++ /dev/null
@@ -1,342 +0,0 @@
-//
-// QuartzAudio.m
-//
-// X Window bell support using CoreAudio or AppKit.
-// Greg Parker gparker@cs.stanford.edu 19 Feb 2001
-//
-// Info about sine wave sound playback:
-// CoreAudio code derived from macosx-dev posting by Tim Wood
-// http://www.omnigroup.com/mailman/archive/macosx-dev/2000-May/002004.html
-// Smoothing transitions between sounds
-// http://www.wam.umd.edu/~mphoenix/dss/dss.html
-//
-/*
- * Copyright (c) 2001 Greg Parker. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzAudio.c,v 1.1 2002/03/28 02:21:18 torrey Exp $ */
-
-#include "quartzCommon.h"
-#include "quartzAudio.h"
-
-#include <CoreAudio/CoreAudio.h>
-#include <pthread.h>
-
-#include "inputstr.h"
-#include <X11/extensions/XI.h>
-
-void NSBeep();
-
-typedef struct QuartzAudioRec {
- double frequency;
- double amplitude;
-
- UInt32 curFrame;
- UInt32 remainingFrames;
- UInt32 totalFrames;
- UInt32 bytesPerFrame;
- double sampleRate;
- UInt32 fadeLength;
-
- UInt32 bufferByteCount;
- Boolean playing;
- pthread_mutex_t lock;
-
- // used to fade out interrupted sound and avoid 'pop'
- double prevFrequency;
- double prevAmplitude;
- UInt32 prevFrame;
-} QuartzAudioRec;
-
-static AudioDeviceID quartzAudioDevice = kAudioDeviceUnknown;
-static QuartzAudioRec data;
-
-
-/*
- * QuartzAudioEnvelope
- * Fade sound in and out to avoid pop.
- * Sounds with shorter duration will never reach full amplitude. Deal.
- */
-static double QuartzAudioEnvelope(
- UInt32 curFrame,
- UInt32 totalFrames,
- UInt32 fadeLength )
-{
- double fadeFrames = min(fadeLength, totalFrames / 2);
- if (fadeFrames < 1) return 0;
-
- if (curFrame < fadeFrames) {
- return curFrame / fadeFrames;
- } else if (curFrame > totalFrames - fadeFrames) {
- return (totalFrames-curFrame) / fadeFrames;
- } else {
- return 1.0;
- }
-}
-
-
-/*
- * QuartzFillBuffer
- * Fill this buffer with data and update the data position.
- * FIXME: this is ugly
- */
-static void QuartzFillBuffer(
- AudioBuffer *audiobuffer,
- QuartzAudioRec *data )
-{
- float *buffer, *b;
- unsigned int frame, frameCount;
- unsigned int bufferFrameCount;
- float multiplier, v;
- int i;
-
- buffer = (float *)audiobuffer->mData;
- bufferFrameCount = audiobuffer->mDataByteSize / data->bytesPerFrame;
-
- frameCount = min(bufferFrameCount, data->remainingFrames);
-
- // Fade out previous sine wave, if any.
- b = buffer;
- if (data->prevFrame) {
- multiplier = 2*M_PI*(data->prevFrequency/data->sampleRate);
- for (frame = 0; frame < data->fadeLength; frame++) {
- v = data->prevAmplitude *
- QuartzAudioEnvelope(frame+data->fadeLength,
- 2*data->fadeLength,
- data->fadeLength) *
- sin(multiplier * (data->prevFrame+frame));
- for (i = 0; i < audiobuffer->mNumberChannels; i++) {
- *b++ = v;
- }
- }
- // no more prev fade
- data->prevFrame = 0;
-
- // adjust for space eaten by prev fade
- buffer += audiobuffer->mNumberChannels*frame;
- bufferFrameCount -= frame;
- frameCount = min(bufferFrameCount, data->remainingFrames);
- }
-
- // Write a sine wave with the specified frequency and amplitude
- multiplier = 2*M_PI*(data->frequency/data->sampleRate);
- for (frame = 0; frame < frameCount; frame++) {
- v = data->amplitude *
- QuartzAudioEnvelope(data->curFrame+frame, data->totalFrames,
- data->fadeLength) *
- sin(multiplier * (data->curFrame+frame));
- for (i = 0; i < audiobuffer->mNumberChannels; i++) {
- *b++ = v;
- }
- }
-
- // Zero out the rest of the buffer, if any
- memset(b, 0, sizeof(float) * audiobuffer->mNumberChannels *
- (bufferFrameCount-frame));
-
- data->curFrame += frameCount;
- data->remainingFrames -= frameCount;
- if (data->remainingFrames == 0) {
- data->playing = FALSE;
- data->curFrame = 0;
- }
-}
-
-
-/*
- * QuartzAudioIOProc
- * Callback function for audio playback.
- * FIXME: use inOutputTime to correct for skipping
- */
-static OSStatus
-QuartzAudioIOProc(
- AudioDeviceID inDevice,
- const AudioTimeStamp *inNow,
- const AudioBufferList *inInputData,
- const AudioTimeStamp *inInputTime,
- AudioBufferList *outOutputData,
- const AudioTimeStamp *inOutputTime,
- void *inClientData )
-{
- QuartzAudioRec *data = (QuartzAudioRec *)inClientData;
- int i;
- Boolean wasPlaying;
-
- pthread_mutex_lock(&data->lock);
- wasPlaying = data->playing;
- for (i = 0; i < outOutputData->mNumberBuffers; i++) {
- if (data->playing) {
- QuartzFillBuffer(outOutputData->mBuffers+i, data);
- }
- else {
- memset(outOutputData->mBuffers[i].mData, 0,
- outOutputData->mBuffers[i].mDataByteSize);
- }
- }
- if (wasPlaying && !data->playing) {
- OSStatus err;
- err = AudioDeviceStop(inDevice, QuartzAudioIOProc);
- }
- pthread_mutex_unlock(&data->lock);
- return 0;
-}
-
-
-/*
- * QuartzCoreAudioBell
- * Play a tone using the CoreAudio API
- */
-static void QuartzCoreAudioBell(
- int volume, // volume is % of max
- int pitch, // pitch is Hz
- int duration ) // duration is milliseconds
-{
- if (quartzAudioDevice == kAudioDeviceUnknown) return;
-
- pthread_mutex_lock(&data.lock);
-
- // fade previous sound, if any
- data.prevFrequency = data.frequency;
- data.prevAmplitude = data.amplitude;
- data.prevFrame = data.curFrame;
-
- // set new sound
- data.frequency = pitch;
- data.amplitude = volume / 100.0;
- data.curFrame = 0;
- data.totalFrames = (int)(data.sampleRate * duration / 1000.0);
- data.remainingFrames = data.totalFrames;
-
- if (! data.playing) {
- OSStatus status;
- status = AudioDeviceStart(quartzAudioDevice, QuartzAudioIOProc);
- if (status) {
- ErrorF("QuartzAudioBell: AudioDeviceStart returned %ld\n", status);
- } else {
- data.playing = TRUE;
- }
- }
- pthread_mutex_unlock(&data.lock);
-}
-
-
-/*
- * DarwinModeBell
- * Ring the bell
- */
-void DarwinModeBell(
- int volume, // volume in percent of max
- DeviceIntPtr pDevice,
- pointer ctrl,
- int class )
-{
- int pitch; // pitch in Hz
- int duration; // duration in milliseconds
-
- if (class == BellFeedbackClass) {
- pitch = ((BellCtrl*)ctrl)->pitch;
- duration = ((BellCtrl*)ctrl)->duration;
- } else if (class == KbdFeedbackClass) {
- pitch = ((KeybdCtrl*)ctrl)->bell_pitch;
- duration = ((KeybdCtrl*)ctrl)->bell_duration;
- } else {
- ErrorF("QuartzBell: bad bell class %d\n", class);
- return;
- }
-
- if (quartzUseSysBeep) {
- if (volume)
- NSBeep();
- } else {
- QuartzCoreAudioBell(volume, pitch, duration);
- }
-}
-
-
-/*
- * QuartzAudioInit
- * Prepare to play the bell with the CoreAudio API
- */
-void QuartzAudioInit(void)
-{
- UInt32 propertySize;
- OSStatus status;
- AudioDeviceID outputDevice;
- AudioStreamBasicDescription outputStreamDescription;
- double sampleRate;
-
- // Get the default output device
- propertySize = sizeof(outputDevice);
- status = AudioHardwareGetProperty(
- kAudioHardwarePropertyDefaultOutputDevice,
- &propertySize, &outputDevice);
- if (status) {
- ErrorF("QuartzAudioInit: AudioHardwareGetProperty returned %ld\n",
- status);
- return;
- }
- if (outputDevice == kAudioDeviceUnknown) {
- ErrorF("QuartzAudioInit: No audio output devices available.\n");
- return;
- }
-
- // Get the basic device description
- propertySize = sizeof(outputStreamDescription);
- status = AudioDeviceGetProperty(outputDevice, 0, FALSE,
- kAudioDevicePropertyStreamFormat,
- &propertySize, &outputStreamDescription);
- if (status) {
- ErrorF("QuartzAudioInit: GetProperty(stream format) returned %ld\n",
- status);
- return;
- }
- sampleRate = outputStreamDescription.mSampleRate;
-
- // Fill in the playback data
- data.frequency = 0;
- data.amplitude = 0;
- data.curFrame = 0;
- data.remainingFrames = 0;
- data.bytesPerFrame = outputStreamDescription.mBytesPerFrame;
- data.sampleRate = sampleRate;
- // data.bufferByteCount = bufferByteCount;
- data.playing = FALSE;
- data.prevAmplitude = 0;
- data.prevFrame = 0;
- data.prevFrequency = 0;
- data.fadeLength = data.sampleRate / 200;
- pthread_mutex_init(&data.lock, NULL); // fixme error check
-
- // fixme assert fadeLength<framesPerBuffer
-
- // Prepare for playback
- status = AudioDeviceAddIOProc(outputDevice, QuartzAudioIOProc, &data);
- if (status) {
- ErrorF("QuartzAudioInit: AddIOProc returned %ld\n", status);
- return;
- }
-
- // success!
- quartzAudioDevice = outputDevice;
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzAudio.h b/nx-X11/programs/Xserver/hw/darwin/quartz/quartzAudio.h
deleted file mode 100644
index e20c21ad2..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzAudio.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// QuartzAudio.h
-//
-// X Window bell support using CoreAudio or AppKit.
-// Greg Parker gparker@cs.stanford.edu 19 Feb 2001
-/*
- * Copyright (c) 2001 Greg Parker. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/quartzAudio.h,v 1.2 2001/04/01 20:45:43 tsi Exp $ */
-
-#ifndef _QUARTZAUDIO_H
-#define _QUARTZAUDIO_H
-
-#include "input.h"
-
-void QuartzAudioInit(void);
-void QuartzBell(int volume, DeviceIntPtr pDevice, pointer ctrl, int class);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzCocoa.m b/nx-X11/programs/Xserver/hw/darwin/quartz/quartzCocoa.m
deleted file mode 100644
index 52832ccd6..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzCocoa.m
+++ /dev/null
@@ -1,205 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/quartzCocoa.m,v 1.3 2004/07/30 19:12:17 torrey Exp $ */
-/**************************************************************
- *
- * Quartz-specific support for the Darwin X Server
- * that requires Cocoa and Objective-C.
- *
- * This file is separate from the parts of Quartz support
- * that use X include files to avoid symbol collisions.
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2004 Torrey T. Lyons and Greg Parker.
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCocoa.m,v 1.5 2004/06/08 22:58:10 torrey Exp $ */
-
-#include "quartzCommon.h"
-
-#define BOOL xBOOL
-#include "darwin.h"
-#undef BOOL
-
-#include <Cocoa/Cocoa.h>
-
-#import "Preferences.h"
-#include "pseudoramiX.h"
-
-extern void FatalError(const char *, ...);
-extern char *display;
-extern int noPanoramiXExtension;
-
-
-/*
- * QuartzReadPreferences
- * Read the user preferences from the Cocoa front end.
- */
-void QuartzReadPreferences(void)
-{
- char *fileString;
-
- darwinFakeButtons = [Preferences fakeButtons];
- darwinFakeMouse2Mask = [Preferences button2Mask];
- darwinFakeMouse3Mask = [Preferences button3Mask];
- darwinMouseAccelChange = [Preferences mouseAccelChange];
- quartzUseSysBeep = [Preferences systemBeep];
- quartzEnableKeyEquivalents = [Preferences enableKeyEquivalents];
-
- // quartzRootless has already been set
- if (quartzRootless) {
- // Use PseudoramiX instead of Xinerama
- noPanoramiXExtension = TRUE;
- noPseudoramiXExtension = ![Preferences xinerama];
-
- quartzUseAGL = [Preferences useAGL];
- } else {
- noPanoramiXExtension = ![Preferences xinerama];
- noPseudoramiXExtension = TRUE;
-
- // Full screen can't use AGL for GLX
- quartzUseAGL = FALSE;
- }
-
- if ([Preferences useKeymapFile]) {
- fileString = (char *) [[Preferences keymapFile] lossyCString];
- darwinKeymapFile = (char *) malloc(strlen(fileString)+1);
- if (! darwinKeymapFile)
- FatalError("malloc failed in QuartzReadPreferences()!\n");
- strcpy(darwinKeymapFile, fileString);
- }
-
- display = (char *) malloc(8);
- if (! display)
- FatalError("malloc failed in QuartzReadPreferences()!\n");
- snprintf(display, 8, "%i", [Preferences display]);
-
- darwinDesiredDepth = [Preferences depth] - 1;
-}
-
-
-/*
- * QuartzWriteCocoaPasteboard
- * Write text to the Mac OS X pasteboard.
- */
-void QuartzWriteCocoaPasteboard(
- char *text)
-{
- NSPasteboard *pasteboard;
- NSArray *pasteboardTypes;
- NSString *string;
-
- if (! text) return;
- pasteboard = [NSPasteboard generalPasteboard];
- if (! pasteboard) return;
- string = [NSString stringWithCString:text];
- if (! string) return;
- pasteboardTypes = [NSArray arrayWithObject:NSStringPboardType];
-
- // nil owner because we don't provide type translations
- [pasteboard declareTypes:pasteboardTypes owner:nil];
- [pasteboard setString:string forType:NSStringPboardType];
-}
-
-
-/*
- * QuartzReadCocoaPasteboard
- * Read text from the Mac OS X pasteboard and return it as a heap string.
- * The caller must free the string.
- */
-char *QuartzReadCocoaPasteboard(void)
-{
- NSPasteboard *pasteboard;
- NSArray *pasteboardTypes;
- NSString *existingType;
- char *text = NULL;
-
- pasteboardTypes = [NSArray arrayWithObject:NSStringPboardType];
- pasteboard = [NSPasteboard generalPasteboard];
- if (! pasteboard) return NULL;
-
- existingType = [pasteboard availableTypeFromArray:pasteboardTypes];
- if (existingType) {
- NSString *string = [pasteboard stringForType:existingType];
- char *buffer;
-
- if (! string) return NULL;
- buffer = (char *) [string lossyCString];
- text = (char *) malloc(strlen(buffer)+1);
- if (text)
- strcpy(text, buffer);
- }
-
- return text;
-}
-
-
-/*
- * QuartzFSUseQDCursor
- * Return whether the screen should use a QuickDraw cursor.
- */
-int QuartzFSUseQDCursor(
- int depth) // screen depth
-{
- switch ([Preferences useQDCursor]) {
- case qdCursor_Always:
- return TRUE;
- case qdCursor_Never:
- return FALSE;
- case qdCursor_Not8Bit:
- if (depth > 8)
- return TRUE;
- else
- return FALSE;
- }
- return TRUE;
-}
-
-
-/*
- * QuartzBlockHandler
- * Clean out any autoreleased objects.
- */
-void QuartzBlockHandler(
- void *blockData,
- void *pTimeout,
- void *pReadmask)
-{
- static NSAutoreleasePool *aPool = nil;
-
- [aPool release];
- aPool = [[NSAutoreleasePool alloc] init];
-}
-
-
-/*
- * QuartzWakeupHandler
- */
-void QuartzWakeupHandler(
- void *blockData,
- int result,
- void *pReadmask)
-{
- // nothing here
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzCommon.h b/nx-X11/programs/Xserver/hw/darwin/quartz/quartzCommon.h
deleted file mode 100644
index d0f743662..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzCommon.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/quartzCommon.h,v 1.4 2005/07/01 22:43:07 daniels Exp $ */
-/*
- * quartzCommon.h
- *
- * Common definitions used internally by all Quartz modes
- *
- * This file should be included before any X11 or IOKit headers
- * so that it can avoid symbol conflicts.
- *
- * Copyright (c) 2001-2004 Torrey T. Lyons and Greg Parker.
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCommon.h,v 1.15 2004/06/08 22:58:10 torrey Exp $ */
-
-#ifndef _QUARTZCOMMON_H
-#define _QUARTZCOMMON_H
-
-// QuickDraw in ApplicationServices has the following conflicts with
-// the basic X server headers. Use QD_<name> to use the QuickDraw
-// definition of any of these symbols, or the normal name for the
-// X11 definition.
-#define Cursor QD_Cursor
-#define WindowPtr QD_WindowPtr
-#define Picture QD_Picture
-#include <ApplicationServices/ApplicationServices.h>
-#undef Cursor
-#undef WindowPtr
-#undef Picture
-
-// Quartz specific per screen storage structure
-typedef struct {
- // List of CoreGraphics displays that this X11 screen covers.
- // This is more than one CG display for video mirroring and
- // rootless PseudoramiX mode.
- // No CG display will be covered by more than one X11 screen.
- int displayCount;
- CGDirectDisplayID *displayIDs;
-} QuartzScreenRec, *QuartzScreenPtr;
-
-#define QUARTZ_PRIV(pScreen) \
- ((QuartzScreenPtr)pScreen->devPrivates[quartzScreenIndex].ptr)
-
-// Data stored at startup for Cocoa front end
-extern int quartzEventWriteFD;
-extern int quartzStartClients;
-
-// User preferences used by Quartz modes
-extern int quartzRootless;
-extern int quartzUseSysBeep;
-extern int quartzUseAGL;
-extern int quartzEnableKeyEquivalents;
-
-// Other shared data
-extern int quartzServerVisible;
-extern int quartzServerQuitting;
-extern int quartzScreenIndex;
-extern int aquaMenuBarHeight;
-
-// Name of GLX bundle for native OpenGL
-extern const char *quartzOpenGLBundle;
-
-void QuartzReadPreferences(void);
-void QuartzMessageMainThread(unsigned msg, void *data, unsigned length);
-void QuartzMessageServerThread(int type, int argc, ...);
-void QuartzSetWindowMenu(int nitems, const char **items,
- const char *shortcuts);
-void QuartzFSCapture(void);
-void QuartzFSRelease(void);
-int QuartzFSUseQDCursor(int depth);
-void QuartzBlockHandler(void *blockData, void *pTimeout, void *pReadmask);
-void QuartzWakeupHandler(void *blockData, int result, void *pReadmask);
-
-// Messages that can be sent to the main thread.
-enum {
- kQuartzServerHidden,
- kQuartzServerStarted,
- kQuartzServerDied,
- kQuartzCursorUpdate,
- kQuartzPostEvent,
- kQuartzSetWindowMenu,
- kQuartzSetWindowMenuCheck,
- kQuartzSetFrontProcess,
- kQuartzSetCanQuit
-};
-
-#endif /* _QUARTZCOMMON_H */
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzCursor.c b/nx-X11/programs/Xserver/hw/darwin/quartz/quartzCursor.c
deleted file mode 100644
index 711ce64f0..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzCursor.c
+++ /dev/null
@@ -1,653 +0,0 @@
-/**************************************************************
- *
- * Support for using the Quartz Window Manager cursor
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2003 Torrey T. Lyons and Greg Parker.
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCursor.c,v 1.4 2002/11/19 23:01:30 torrey Exp $ */
-
-#include "quartzCommon.h"
-#include "quartzCursor.h"
-#include "darwin.h"
-
-#include <pthread.h>
-
-#include "mi.h"
-#include "scrnintstr.h"
-#include "cursorstr.h"
-#include "mipointrst.h"
-#include "globals.h"
-
-// Size of the QuickDraw cursor
-#define CURSORWIDTH 16
-#define CURSORHEIGHT 16
-
-typedef struct {
- int qdCursorMode;
- int qdCursorVisible;
- int useQDCursor;
- QueryBestSizeProcPtr QueryBestSize;
- miPointerSpriteFuncPtr spriteFuncs;
-} QuartzCursorScreenRec, *QuartzCursorScreenPtr;
-
-static int darwinCursorScreenIndex = -1;
-static unsigned long darwinCursorGeneration = 0;
-static CursorPtr quartzLatentCursor = NULL;
-static QD_Cursor gQDArrow; // QuickDraw arrow cursor
-
-// Cursor for the main thread to set (NULL = arrow cursor).
-static CCrsrHandle currentCursor = NULL;
-static pthread_mutex_t cursorMutex;
-static pthread_cond_t cursorCondition;
-
-#define CURSOR_PRIV(pScreen) \
- ((QuartzCursorScreenPtr)pScreen->devPrivates[darwinCursorScreenIndex].ptr)
-
-#define HIDE_QD_CURSOR(pScreen, visible) \
- if (visible) { \
- int ix; \
- for (ix = 0; ix < QUARTZ_PRIV(pScreen)->displayCount; ix++) { \
- CGDisplayHideCursor(QUARTZ_PRIV(pScreen)->displayIDs[ix]); \
- } \
- visible = FALSE; \
- } ((void)0)
-
-#define SHOW_QD_CURSOR(pScreen, visible) \
- { \
- int ix; \
- for (ix = 0; ix < QUARTZ_PRIV(pScreen)->displayCount; ix++) { \
- CGDisplayShowCursor(QUARTZ_PRIV(pScreen)->displayIDs[ix]); \
- } \
- visible = TRUE; \
- } ((void)0)
-
-#define CHANGE_QD_CURSOR(cursorH) \
- if (!quartzServerQuitting) { \
- /* Acquire lock and tell the main thread to change cursor */ \
- pthread_mutex_lock(&cursorMutex); \
- currentCursor = (CCrsrHandle) (cursorH); \
- QuartzMessageMainThread(kQuartzCursorUpdate, NULL, 0); \
- \
- /* Wait for the main thread to change the cursor */ \
- pthread_cond_wait(&cursorCondition, &cursorMutex); \
- pthread_mutex_unlock(&cursorMutex); \
- } ((void)0)
-
-
-/*
- * MakeQDCursor helpers: CTAB_ENTER, interleave
- */
-
-// Add a color entry to a ctab
-#define CTAB_ENTER(ctab, index, r, g, b) \
- ctab->ctTable[index].value = index; \
- ctab->ctTable[index].rgb.red = r; \
- ctab->ctTable[index].rgb.green = g; \
- ctab->ctTable[index].rgb.blue = b
-
-// Make an unsigned short by interleaving the bits of bytes c1 and c2.
-// High bit of c1 is first; low bit of c2 is last.
-// Interleave is a built-in INTERCAL operator.
-static unsigned short
-interleave(
- unsigned char c1,
- unsigned char c2 )
-{
- return
- ((c1 & 0x80) << 8) | ((c2 & 0x80) << 7) |
- ((c1 & 0x40) << 7) | ((c2 & 0x40) << 6) |
- ((c1 & 0x20) << 6) | ((c2 & 0x20) << 5) |
- ((c1 & 0x10) << 5) | ((c2 & 0x10) << 4) |
- ((c1 & 0x08) << 4) | ((c2 & 0x08) << 3) |
- ((c1 & 0x04) << 3) | ((c2 & 0x04) << 2) |
- ((c1 & 0x02) << 2) | ((c2 & 0x02) << 1) |
- ((c1 & 0x01) << 1) | ((c2 & 0x01) << 0) ;
-}
-
-/*
- * MakeQDCursor
- * Make a QuickDraw color cursor from the given X11 cursor.
- * Warning: This code is nasty. Color cursors were meant to be read
- * from resources; constructing the structures programmatically is messy.
- */
-/*
- QuickDraw cursor representation:
- Our color cursor is a 2 bit per pixel pixmap.
- Each pixel's bits are (source<<1 | mask) from the original X cursor pixel.
- The cursor's color table maps the colors like this:
- (2-bit value | X result | colortable | Mac result)
- 00 | transparent | white | transparent (white outside mask)
- 01 | back color | back color | back color
- 10 | undefined | black | invert background (just for fun)
- 11 | fore color | fore color | fore color
-*/
-static CCrsrHandle
-MakeQDCursor(
- CursorPtr pCursor )
-{
- CCrsrHandle result;
- CCrsrPtr curs;
- int i, w, h;
- unsigned short rowMask;
- PixMap *pix;
- ColorTable *ctab;
- unsigned short *image;
-
- result = (CCrsrHandle) NewHandleClear(sizeof(CCrsr));
- if (!result) return NULL;
- HLock((Handle)result);
- curs = *result;
-
- // Initialize CCrsr
- curs->crsrType = 0x8001; // 0x8000 = b&w, 0x8001 = color
- curs->crsrMap = (PixMapHandle) NewHandleClear(sizeof(PixMap));
- if (!curs->crsrMap) goto pixAllocFailed;
- HLock((Handle)curs->crsrMap);
- pix = *curs->crsrMap;
- curs->crsrData = NULL; // raw cursor image data (set below)
- curs->crsrXData = NULL; // QD's processed data
- curs->crsrXValid = 0; // zero means QD must re-process cursor data
- curs->crsrXHandle = NULL; // reserved
- memset(curs->crsr1Data, 0, CURSORWIDTH*CURSORHEIGHT/8); // b&w data
- memset(curs->crsrMask, 0, CURSORWIDTH*CURSORHEIGHT/8); // b&w & color mask
- curs->crsrHotSpot.h = min(CURSORWIDTH, pCursor->bits->xhot); // hot spot
- curs->crsrHotSpot.v = min(CURSORHEIGHT, pCursor->bits->yhot); // hot spot
- curs->crsrXTable = 0; // reserved
- curs->crsrID = GetCTSeed(); // unique ID from Color Manager
-
- // Set the b&w data and mask
- w = min(pCursor->bits->width, CURSORWIDTH);
- h = min(pCursor->bits->height, CURSORHEIGHT);
- rowMask = ~((1 << (CURSORWIDTH - w)) - 1);
- for (i = 0; i < h; i++) {
- curs->crsr1Data[i] = rowMask &
- ((pCursor->bits->source[i*4]<<8) | pCursor->bits->source[i*4+1]);
- curs->crsrMask[i] = rowMask &
- ((pCursor->bits->mask[i*4]<<8) | pCursor->bits->mask[i*4+1]);
- }
-
- // Set the color data and mask
- // crsrMap: defines bit depth and size and colortable only
- pix->rowBytes = (CURSORWIDTH * 2 / 8) | 0x8000; // last bit on means PixMap
- SetRect(&pix->bounds, 0, 0, CURSORWIDTH, CURSORHEIGHT); // see TN 1020
- pix->pixelSize = 2;
- pix->cmpCount = 1;
- pix->cmpSize = 2;
- // pix->pmTable set below
-
- // crsrData is the pixel data. crsrMap's baseAddr is not used.
- curs->crsrData = NewHandleClear(CURSORWIDTH*CURSORHEIGHT * 2 / 8);
- if (!curs->crsrData) goto imageAllocFailed;
- HLock((Handle)curs->crsrData);
- image = (unsigned short *) *curs->crsrData;
- // Pixel data is just 1-bit data and mask interleaved (see above)
- for (i = 0; i < h; i++) {
- unsigned char s, m;
- s = pCursor->bits->source[i*4] & (rowMask >> 8);
- m = pCursor->bits->mask[i*4] & (rowMask >> 8);
- image[2*i] = interleave(s, m);
- s = pCursor->bits->source[i*4+1] & (rowMask & 0x00ff);
- m = pCursor->bits->mask[i*4+1] & (rowMask & 0x00ff);
- image[2*i+1] = interleave(s, m);
- }
-
- // Build the color table (entries described above)
- // NewPixMap allocates a color table handle.
- pix->pmTable = (CTabHandle) NewHandleClear(sizeof(ColorTable) + 3
- * sizeof(ColorSpec));
- if (!pix->pmTable) goto ctabAllocFailed;
- HLock((Handle)pix->pmTable);
- ctab = *pix->pmTable;
- ctab->ctSeed = GetCTSeed();
- ctab->ctFlags = 0;
- ctab->ctSize = 3; // color count - 1
- CTAB_ENTER(ctab, 0, 0xffff, 0xffff, 0xffff);
- CTAB_ENTER(ctab, 1, pCursor->backRed, pCursor->backGreen,
- pCursor->backBlue);
- CTAB_ENTER(ctab, 2, 0x0000, 0x0000, 0x0000);
- CTAB_ENTER(ctab, 3, pCursor->foreRed, pCursor->foreGreen,
- pCursor->foreBlue);
-
- HUnlock((Handle)pix->pmTable); // ctab
- HUnlock((Handle)curs->crsrData); // image data
- HUnlock((Handle)curs->crsrMap); // pix
- HUnlock((Handle)result); // cursor
-
- return result;
-
- // "What we have here is a failure to allocate"
-ctabAllocFailed:
- HUnlock((Handle)curs->crsrData);
- DisposeHandle((Handle)curs->crsrData);
-imageAllocFailed:
- HUnlock((Handle)curs->crsrMap);
- DisposeHandle((Handle)curs->crsrMap);
-pixAllocFailed:
- HUnlock((Handle)result);
- DisposeHandle((Handle)result);
- return NULL;
-}
-
-
-/*
- * FreeQDCursor
- * Destroy a QuickDraw color cursor created with MakeQDCursor().
- * The cursor must not currently be on screen.
- */
-static void FreeQDCursor(CCrsrHandle cursHandle)
-{
- CCrsrPtr curs;
- PixMap *pix;
-
- HLock((Handle)cursHandle);
- curs = *cursHandle;
- HLock((Handle)curs->crsrMap);
- pix = *curs->crsrMap;
- DisposeHandle((Handle)pix->pmTable);
- HUnlock((Handle)curs->crsrMap);
- DisposeHandle((Handle)curs->crsrMap);
- DisposeHandle((Handle)curs->crsrData);
- HUnlock((Handle)cursHandle);
- DisposeHandle((Handle)cursHandle);
-}
-
-
-/*
-===========================================================================
-
- Pointer sprite functions
-
-===========================================================================
-*/
-
-/*
- * QuartzRealizeCursor
- * Convert the X cursor representation to QuickDraw format if possible.
- */
-Bool
-QuartzRealizeCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor )
-{
- CCrsrHandle qdCursor;
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- if(!pCursor || !pCursor->bits)
- return FALSE;
-
- // if the cursor is too big we use a software cursor
- if ((pCursor->bits->height > CURSORHEIGHT) ||
- (pCursor->bits->width > CURSORWIDTH) || !ScreenPriv->useQDCursor)
- {
- if (quartzRootless) {
- // rootless can't use a software cursor
- return TRUE;
- } else {
- return (*ScreenPriv->spriteFuncs->RealizeCursor)
- (pScreen, pCursor);
- }
- }
-
- // make new cursor image
- qdCursor = MakeQDCursor(pCursor);
- if (!qdCursor) return FALSE;
-
- // save the result
- pCursor->devPriv[pScreen->myNum] = (pointer) qdCursor;
-
- return TRUE;
-}
-
-
-/*
- * QuartzUnrealizeCursor
- * Free the storage space associated with a realized cursor.
- */
-Bool
-QuartzUnrealizeCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor )
-{
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- if ((pCursor->bits->height > CURSORHEIGHT) ||
- (pCursor->bits->width > CURSORWIDTH) || !ScreenPriv->useQDCursor)
- {
- if (quartzRootless) {
- return TRUE;
- } else {
- return (*ScreenPriv->spriteFuncs->UnrealizeCursor)
- (pScreen, pCursor);
- }
- } else {
- CCrsrHandle oldCursor = (CCrsrHandle) pCursor->devPriv[pScreen->myNum];
-
- if (currentCursor != oldCursor) {
- // This should only fail when quitting, in which case we just leak.
- FreeQDCursor(oldCursor);
- }
- pCursor->devPriv[pScreen->myNum] = NULL;
- return TRUE;
- }
-}
-
-
-/*
- * QuartzSetCursor
- * Set the cursor sprite and position.
- * Use QuickDraw cursor if possible.
- */
-static void
-QuartzSetCursor(
- ScreenPtr pScreen,
- CursorPtr pCursor,
- int x,
- int y)
-{
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- quartzLatentCursor = pCursor;
-
- // Don't touch Mac OS cursor if X is hidden!
- if (!quartzServerVisible)
- return;
-
- if (!pCursor) {
- // Remove the cursor completely.
- HIDE_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
- if (! ScreenPriv->qdCursorMode)
- (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y);
- }
- else if ((pCursor->bits->height <= CURSORHEIGHT) &&
- (pCursor->bits->width <= CURSORWIDTH) && ScreenPriv->useQDCursor)
- {
- // Cursor is small enough to use QuickDraw directly.
- if (! ScreenPriv->qdCursorMode) // remove the X cursor
- (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y);
- ScreenPriv->qdCursorMode = TRUE;
-
- CHANGE_QD_CURSOR(pCursor->devPriv[pScreen->myNum]);
- SHOW_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
- }
- else if (quartzRootless) {
- // Rootless can't use a software cursor, so we just use Mac OS arrow.
- CHANGE_QD_CURSOR(NULL);
- SHOW_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
- }
- else {
- // Cursor is too big for QuickDraw. Use X software cursor.
- HIDE_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
- ScreenPriv->qdCursorMode = FALSE;
- (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, pCursor, x, y);
- }
-}
-
-
-/*
- * QuartzReallySetCursor
- * Set the QuickDraw cursor. Called from the main thread since changing the
- * cursor with QuickDraw is not thread safe on dual processor machines.
- */
-void
-QuartzReallySetCursor()
-{
- pthread_mutex_lock(&cursorMutex);
-
- if (currentCursor) {
- SetCCursor(currentCursor);
- } else {
- SetCursor(&gQDArrow);
- }
-
- pthread_cond_signal(&cursorCondition);
- pthread_mutex_unlock(&cursorMutex);
-}
-
-
-/*
- * QuartzMoveCursor
- * Move the cursor. This is a noop for QuickDraw.
- */
-static void
-QuartzMoveCursor(
- ScreenPtr pScreen,
- int x,
- int y)
-{
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- // only the X cursor needs to be explicitly moved
- if (!ScreenPriv->qdCursorMode)
- (*ScreenPriv->spriteFuncs->MoveCursor)(pScreen, x, y);
-}
-
-
-static miPointerSpriteFuncRec quartzSpriteFuncsRec = {
- QuartzRealizeCursor,
- QuartzUnrealizeCursor,
- QuartzSetCursor,
- QuartzMoveCursor
-};
-
-
-/*
-===========================================================================
-
- Pointer screen functions
-
-===========================================================================
-*/
-
-/*
- * QuartzCursorOffScreen
- */
-static Bool QuartzCursorOffScreen(ScreenPtr *pScreen, int *x, int *y)
-{
- return FALSE;
-}
-
-
-/*
- * QuartzCrossScreen
- */
-static void QuartzCrossScreen(ScreenPtr pScreen, Bool entering)
-{
- return;
-}
-
-
-/*
- * QuartzWarpCursor
- * Change the cursor position without generating an event or motion history.
- * The input coordinates (x,y) are in pScreen-local X11 coordinates.
- *
- */
-static void
-QuartzWarpCursor(
- ScreenPtr pScreen,
- int x,
- int y)
-{
- static int neverMoved = TRUE;
-
- if (neverMoved) {
- // Don't move the cursor the first time. This is the jump-to-center
- // initialization, and it's annoying because we may still be in MacOS.
- neverMoved = FALSE;
- return;
- }
-
- if (quartzServerVisible) {
- CGDisplayErr cgErr;
- CGPoint cgPoint;
- // Only need to do this for one display. Any display will do.
- CGDirectDisplayID cgID = QUARTZ_PRIV(pScreen)->displayIDs[0];
- CGRect cgRect = CGDisplayBounds(cgID);
-
- // Convert (x,y) to CoreGraphics screen-local CG coordinates.
- // This is necessary because the X11 screen and CG screen may not
- // coincide. (e.g. X11 screen may be moved to dodge the menu bar)
-
- // Make point in X11 global coordinates
- cgPoint = CGPointMake(x + dixScreenOrigins[pScreen->myNum].x,
- y + dixScreenOrigins[pScreen->myNum].y);
- // Shift to CoreGraphics global screen coordinates
- cgPoint.x += darwinMainScreenX;
- cgPoint.y += darwinMainScreenY;
- // Shift to CoreGraphics screen-local coordinates
- cgPoint.x -= cgRect.origin.x;
- cgPoint.y -= cgRect.origin.y;
-
- cgErr = CGDisplayMoveCursorToPoint(cgID, cgPoint);
- if (cgErr != CGDisplayNoErr) {
- ErrorF("Could not set cursor position with error code 0x%x.\n",
- cgErr);
- }
- }
-
- miPointerWarpCursor(pScreen, x, y);
- miPointerUpdate();
-}
-
-
-static miPointerScreenFuncRec quartzScreenFuncsRec = {
- QuartzCursorOffScreen,
- QuartzCrossScreen,
- QuartzWarpCursor,
- DarwinEQPointerPost,
- DarwinEQSwitchScreen
-};
-
-
-/*
-===========================================================================
-
- Other screen functions
-
-===========================================================================
-*/
-
-/*
- * QuartzCursorQueryBestSize
- * Handle queries for best cursor size
- */
-static void
-QuartzCursorQueryBestSize(
- int class,
- unsigned short *width,
- unsigned short *height,
- ScreenPtr pScreen)
-{
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- if (class == CursorShape) {
- *width = CURSORWIDTH;
- *height = CURSORHEIGHT;
- } else {
- (*ScreenPriv->QueryBestSize)(class, width, height, pScreen);
- }
-}
-
-
-/*
- * QuartzInitCursor
- * Initialize cursor support
- */
-Bool
-QuartzInitCursor(
- ScreenPtr pScreen )
-{
- QuartzCursorScreenPtr ScreenPriv;
- miPointerScreenPtr PointPriv;
- DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
-
- // initialize software cursor handling (always needed as backup)
- if (!miDCInitialize(pScreen, &quartzScreenFuncsRec)) {
- return FALSE;
- }
-
- // allocate private storage for this screen's QuickDraw cursor info
- if (darwinCursorGeneration != serverGeneration) {
- if ((darwinCursorScreenIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- darwinCursorGeneration = serverGeneration;
- }
-
- ScreenPriv = xcalloc( 1, sizeof(QuartzCursorScreenRec) );
- if (!ScreenPriv) return FALSE;
-
- CURSOR_PRIV(pScreen) = ScreenPriv;
-
- // override some screen procedures
- ScreenPriv->QueryBestSize = pScreen->QueryBestSize;
- pScreen->QueryBestSize = QuartzCursorQueryBestSize;
-
- // initialize QuickDraw cursor handling
- GetQDGlobalsArrow(&gQDArrow);
- PointPriv = (miPointerScreenPtr)
- pScreen->devPrivates[miPointerScreenIndex].ptr;
-
- ScreenPriv->spriteFuncs = PointPriv->spriteFuncs;
- PointPriv->spriteFuncs = &quartzSpriteFuncsRec;
-
- if (!quartzRootless)
- ScreenPriv->useQDCursor = QuartzFSUseQDCursor(dfb->colorBitsPerPixel);
- else
- ScreenPriv->useQDCursor = TRUE;
- ScreenPriv->qdCursorMode = TRUE;
- ScreenPriv->qdCursorVisible = TRUE;
-
- // initialize cursor mutex lock
- pthread_mutex_init(&cursorMutex, NULL);
-
- // initialize condition for waiting
- pthread_cond_init(&cursorCondition, NULL);
-
- return TRUE;
-}
-
-
-// X server is hiding. Restore the Aqua cursor.
-void QuartzSuspendXCursor(
- ScreenPtr pScreen )
-{
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- CHANGE_QD_CURSOR(NULL);
- SHOW_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
-}
-
-
-// X server is showing. Restore the X cursor.
-void QuartzResumeXCursor(
- ScreenPtr pScreen,
- int x,
- int y )
-{
- QuartzSetCursor(pScreen, quartzLatentCursor, x, y);
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzCursor.h b/nx-X11/programs/Xserver/hw/darwin/quartz/quartzCursor.h
deleted file mode 100644
index 4db5531fa..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzCursor.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * quartzCursor.h
- *
- * External interface for Quartz hardware cursor
- */
-/*
- * Copyright (c) 2001 Torrey T. Lyons and Greg Parker.
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/quartzCursor.h,v 1.2 2001/09/23 04:04:49 torrey Exp $ */
-
-#ifndef QUARTZCURSOR_H
-#define QUARTZCURSOR_H
-
-#include "screenint.h"
-
-Bool QuartzInitCursor(ScreenPtr pScreen);
-void QuartzSuspendXCursor(ScreenPtr pScreen);
-void QuartzResumeXCursor(ScreenPtr pScreen, int x, int y);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzKeyboard.c b/nx-X11/programs/Xserver/hw/darwin/quartz/quartzKeyboard.c
deleted file mode 100644
index f960b496f..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzKeyboard.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
- quartzKeyboard.c
- $Id: quartzKeyboard.c,v 1.4 2005/07/01 22:43:07 daniels Exp $
-
- Code to build a keymap using the Carbon Keyboard Layout API,
- which is supported on Mac OS X 10.2 and newer.
-
- Copyright (c) 2003 Apple Computer, Inc. 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 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 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 ABOVE LISTED COPYRIGHT
- HOLDER(S) 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(s) of the above
- copyright holders shall not be used in advertising or otherwise to
- promote the sale, use or other dealings in this Software without
- prior written authorization.
-*/
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzKeyboard.c,v 1.1 2003/11/01 08:13:08 torrey Exp $ */
-
-#include "quartzCommon.h"
-
-#include <CoreServices/CoreServices.h>
-#include <Carbon/Carbon.h>
-
-#include "darwinKeyboard.h"
-#include "keysym.h"
-#include "keysym2ucs.h"
-
-#ifdef HAS_KL_API
-
-#define HACK_MISSING 1
-#define HACK_KEYPAD 1
-
-enum {
- MOD_COMMAND = 256,
- MOD_SHIFT = 512,
- MOD_OPTION = 2048,
- MOD_CONTROL = 4096,
-};
-
-#define UKEYSYM(u) ((u) | 0x01000000)
-
-/* Table of keycode->keysym mappings we use to fallback on for important
- keys that are often not in the Unicode mapping. */
-
-const static struct {
- unsigned short keycode;
- KeySym keysym;
-} known_keys[] = {
- {55, XK_Meta_L},
- {56, XK_Shift_L},
- {57, XK_Caps_Lock},
- {58, XK_Alt_L},
- {59, XK_Control_L},
-
- {60, XK_Shift_R},
- {61, XK_Alt_R},
- {62, XK_Control_R},
- {63, XK_Meta_R},
-
- {122, XK_F1},
- {120, XK_F2},
- {99, XK_F3},
- {118, XK_F4},
- {96, XK_F5},
- {97, XK_F6},
- {98, XK_F7},
- {100, XK_F8},
- {101, XK_F9},
- {109, XK_F10},
- {103, XK_F11},
- {111, XK_F12},
- {105, XK_F13},
- {107, XK_F14},
- {113, XK_F15},
-};
-
-/* Table of keycode->old,new-keysym mappings we use to fixup the numeric
- keypad entries. */
-
-const static struct {
- unsigned short keycode;
- KeySym normal, keypad;
-} known_numeric_keys[] = {
- {65, XK_period, XK_KP_Decimal},
- {67, XK_asterisk, XK_KP_Multiply},
- {69, XK_plus, XK_KP_Add},
- {75, XK_slash, XK_KP_Divide},
- {76, 0x01000003, XK_KP_Enter},
- {78, XK_minus, XK_KP_Subtract},
- {81, XK_equal, XK_KP_Equal},
- {82, XK_0, XK_KP_0},
- {83, XK_1, XK_KP_1},
- {84, XK_2, XK_KP_2},
- {85, XK_3, XK_KP_3},
- {86, XK_4, XK_KP_4},
- {87, XK_5, XK_KP_5},
- {88, XK_6, XK_KP_6},
- {89, XK_7, XK_KP_7},
- {91, XK_8, XK_KP_8},
- {92, XK_9, XK_KP_9},
-};
-
-/* Table mapping normal keysyms to their dead equivalents.
- FIXME: all the unicode keysyms (apart from circumflex) were guessed. */
-
-const static struct {
- KeySym normal, dead;
-} dead_keys[] = {
- {XK_grave, XK_dead_grave},
- {XK_acute, XK_dead_acute},
- {XK_asciicircum, XK_dead_circumflex},
- {UKEYSYM (0x2c6), XK_dead_circumflex}, /* MODIFIER LETTER CIRCUMFLEX ACCENT */
- {XK_asciitilde, XK_dead_tilde},
- {UKEYSYM (0x2dc), XK_dead_tilde}, /* SMALL TILDE */
- {XK_macron, XK_dead_macron},
- {XK_breve, XK_dead_breve},
- {XK_abovedot, XK_dead_abovedot},
- {XK_diaeresis, XK_dead_diaeresis},
- {UKEYSYM (0x2da), XK_dead_abovering}, /* DOT ABOVE */
- {XK_doubleacute, XK_dead_doubleacute},
- {XK_caron, XK_dead_caron},
- {XK_cedilla, XK_dead_cedilla},
- {XK_ogonek, XK_dead_ogonek},
- {UKEYSYM (0x269), XK_dead_iota}, /* LATIN SMALL LETTER IOTA */
- {UKEYSYM (0x2ec), XK_dead_voiced_sound}, /* MODIFIER LETTER VOICING */
-/* {XK_semivoiced_sound, XK_dead_semivoiced_sound}, */
- {UKEYSYM (0x323), XK_dead_belowdot}, /* COMBINING DOT BELOW */
- {UKEYSYM (0x309), XK_dead_hook}, /* COMBINING HOOK ABOVE */
- {UKEYSYM (0x31b), XK_dead_horn}, /* COMBINING HORN */
-};
-
-unsigned int
-DarwinModeSystemKeymapSeed (void)
-{
- static unsigned int seed;
-
- static KeyboardLayoutRef last_key_layout;
- KeyboardLayoutRef key_layout;
-
- KLGetCurrentKeyboardLayout (&key_layout);
-
- if (key_layout != last_key_layout)
- seed++;
-
- last_key_layout = key_layout;
-
- return seed;
-}
-
-static inline UniChar
-macroman2ucs (unsigned char c)
-{
- /* Precalculated table mapping MacRoman-128 to Unicode. Generated
- by creating single element CFStringRefs then extracting the
- first character. */
-
- static const unsigned short table[128] = {
- 0xc4, 0xc5, 0xc7, 0xc9, 0xd1, 0xd6, 0xdc, 0xe1,
- 0xe0, 0xe2, 0xe4, 0xe3, 0xe5, 0xe7, 0xe9, 0xe8,
- 0xea, 0xeb, 0xed, 0xec, 0xee, 0xef, 0xf1, 0xf3,
- 0xf2, 0xf4, 0xf6, 0xf5, 0xfa, 0xf9, 0xfb, 0xfc,
- 0x2020, 0xb0, 0xa2, 0xa3, 0xa7, 0x2022, 0xb6, 0xdf,
- 0xae, 0xa9, 0x2122, 0xb4, 0xa8, 0x2260, 0xc6, 0xd8,
- 0x221e, 0xb1, 0x2264, 0x2265, 0xa5, 0xb5, 0x2202, 0x2211,
- 0x220f, 0x3c0, 0x222b, 0xaa, 0xba, 0x3a9, 0xe6, 0xf8,
- 0xbf, 0xa1, 0xac, 0x221a, 0x192, 0x2248, 0x2206, 0xab,
- 0xbb, 0x2026, 0xa0, 0xc0, 0xc3, 0xd5, 0x152, 0x153,
- 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0xf7, 0x25ca,
- 0xff, 0x178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01, 0xfb02,
- 0x2021, 0xb7, 0x201a, 0x201e, 0x2030, 0xc2, 0xca, 0xc1,
- 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 0xcc, 0xd3, 0xd4,
- 0xf8ff, 0xd2, 0xda, 0xdb, 0xd9, 0x131, 0x2c6, 0x2dc,
- 0xaf, 0x2d8, 0x2d9, 0x2da, 0xb8, 0x2dd, 0x2db, 0x2c7,
- };
-
- if (c < 128)
- return c;
- else
- return table[c - 128];
-}
-
-static KeySym
-make_dead_key (KeySym in)
-{
- int i;
-
- for (i = 0; i < sizeof (dead_keys) / sizeof (dead_keys[0]); i++)
- {
- if (dead_keys[i].normal == in)
- return dead_keys[i].dead;
- }
-
- return in;
-}
-
-Bool
-DarwinModeReadSystemKeymap (darwinKeyboardInfo *info)
-{
- KeyboardLayoutRef key_layout;
- const void *chr_data;
- int num_keycodes = NUM_KEYCODES;
- UInt32 keyboard_type = 0;
- int is_uchr, i, j;
- OSStatus err;
- KeySym *k;
-
- KLGetCurrentKeyboardLayout (&key_layout);
- KLGetKeyboardLayoutProperty (key_layout, kKLuchrData, &chr_data);
-
- if (chr_data != NULL)
- {
- is_uchr = 1;
- keyboard_type = LMGetKbdType ();
- }
- else
- {
- KLGetKeyboardLayoutProperty (key_layout, kKLKCHRData, &chr_data);
-
- if (chr_data == NULL)
- {
- ErrorF ( "Couldn't get uchr or kchr resource\n");
- return FALSE;
- }
-
- is_uchr = 0;
- num_keycodes = 128;
- }
-
-
- /* Scan the keycode range for the Unicode character that each
- key produces in the four shift states. Then convert that to
- an X11 keysym (which may just the bit that says "this is
- Unicode" if it can't find the real symbol.) */
-
- for (i = 0; i < num_keycodes; i++)
- {
- static const int mods[4] = {0, MOD_SHIFT, MOD_OPTION,
- MOD_OPTION | MOD_SHIFT};
-
- k = info->keyMap + i * GLYPHS_PER_KEY;
-
- for (j = 0; j < 4; j++)
- {
- if (is_uchr)
- {
- UniChar s[8];
- UniCharCount len;
- UInt32 dead_key_state, extra_dead;
-
- dead_key_state = 0;
- err = UCKeyTranslate (chr_data, i, kUCKeyActionDown,
- mods[j] >> 8, keyboard_type, 0,
- &dead_key_state, 8, &len, s);
- if (err != noErr)
- continue;
-
- if (len == 0 && dead_key_state != 0)
- {
- /* Found a dead key. Work out which one it is, but
- remembering that it's dead. */
-
- extra_dead = 0;
- err = UCKeyTranslate (chr_data, i, kUCKeyActionDown,
- mods[j] >> 8, keyboard_type,
- kUCKeyTranslateNoDeadKeysMask,
- &extra_dead, 8, &len, s);
- if (err != noErr)
- continue;
- }
-
- if (len > 0 && s[0] != 0x0010)
- {
- k[j] = ucs2keysym (s[0]);
-
- if (dead_key_state != 0)
- k[j] = make_dead_key (k[j]);
- }
- }
- else
- {
- UInt32 c, state = 0;
- UInt16 code;
-
- code = i | mods[j];
- c = KeyTranslate (chr_data, code, &state);
-
- /* Dead keys are only processed on key-down, so ask
- to translate those events. When we find a dead key,
- translating the matching key up event will give
- us the actual dead character. */
-
- if (state != 0)
- {
- UInt32 state2 = 0;
- c = KeyTranslate (chr_data, code | 128, &state2);
- }
-
- /* Characters seem to be in MacRoman encoding. */
-
- if (c != 0 && c != 0x0010)
- {
- k[j] = ucs2keysym (macroman2ucs (c & 255));
-
- if (state != 0)
- k[j] = make_dead_key (k[j]);
- }
- }
- }
-
- if (k[3] == k[2])
- k[3] = NoSymbol;
- if (k[2] == k[1])
- k[2] = NoSymbol;
- if (k[1] == k[0])
- k[1] = NoSymbol;
- if (k[0] == k[2] && k[1] == k[3])
- k[2] = k[3] = NoSymbol;
- }
-
- /* Fix up some things that are normally missing.. */
-
- if (HACK_MISSING)
- {
- for (i = 0; i < sizeof (known_keys) / sizeof (known_keys[0]); i++)
- {
- k = info->keyMap + known_keys[i].keycode * GLYPHS_PER_KEY;
-
- if (k[0] == NoSymbol && k[1] == NoSymbol
- && k[2] == NoSymbol && k[3] == NoSymbol)
- {
- k[0] = known_keys[i].keysym;
- }
- }
- }
-
- /* And some more things. We find the right symbols for the numeric
- keypad, but not the KP_ keysyms. So try to convert known keycodes. */
-
- if (HACK_KEYPAD)
- {
- for (i = 0; i < sizeof (known_numeric_keys)
- / sizeof (known_numeric_keys[0]); i++)
- {
- k = info->keyMap + known_numeric_keys[i].keycode * GLYPHS_PER_KEY;
-
- if (k[0] == known_numeric_keys[i].normal)
- {
- k[0] = known_numeric_keys[i].keypad;
- }
- }
- }
-
- return TRUE;
-}
-
-#else /* !HAS_KL_API */
-
-unsigned int
-DarwinModeSystemKeymapSeed (void)
-{
- return 0;
-}
-
-Bool
-DarwinModeReadSystemKeymap (darwinKeyboardInfo *info)
-{
- return FALSE;
-}
-
-#endif /* HAS_KL_API */
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzPasteboard.c b/nx-X11/programs/Xserver/hw/darwin/quartz/quartzPasteboard.c
deleted file mode 100644
index 536dcc336..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzPasteboard.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/**************************************************************
- * quartzPasteboard.c
- *
- * Aqua pasteboard <-> X cut buffer
- * Greg Parker gparker@cs.stanford.edu March 8, 2001
- **************************************************************/
-/*
- * Copyright (c) 2001 Greg Parker. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/quartzPasteboard.c,v 1.3 2001/09/23 04:04:49 torrey Exp $ */
-
-#include "quartzPasteboard.h"
-
-#include <X11/Xatom.h>
-#include "windowstr.h"
-#include "propertyst.h"
-#include "scrnintstr.h"
-#include "selection.h"
-#include "globals.h"
-
-extern Selection *CurrentSelections;
-extern int NumCurrentSelections;
-
-
-// Helper function to read the X11 cut buffer
-// FIXME: What about multiple screens? Currently, this reads the first
-// CUT_BUFFER0 from the first screen where the buffer content is a string.
-// Returns a string on the heap that the caller must free.
-// Returns NULL if there is no cut text or there is not enough memory.
-static char * QuartzReadCutBuffer(void)
-{
- int i;
- char *text = NULL;
-
- for (i = 0; i < screenInfo.numScreens; i++) {
- ScreenPtr pScreen = screenInfo.screens[i];
- PropertyPtr pProp;
-
- pProp = wUserProps (WindowTable[pScreen->myNum]);
- while (pProp && pProp->propertyName != XA_CUT_BUFFER0) {
- pProp = pProp->next;
- }
- if (! pProp) continue;
- if (pProp->type != XA_STRING) continue;
- if (pProp->format != 8) continue;
-
- text = xalloc(1 + pProp->size);
- if (! text) continue;
- memcpy(text, pProp->data, pProp->size);
- text[pProp->size] = '\0';
- return text;
- }
-
- // didn't find any text
- return NULL;
-}
-
-// Write X cut buffer to Mac OS X pasteboard
-// Called by ProcessInputEvents() in response to request from X server thread.
-void QuartzWritePasteboard(void)
-{
- char *text;
- text = QuartzReadCutBuffer();
- if (text) {
- QuartzWriteCocoaPasteboard(text);
- free(text);
- }
-}
-
-#define strequal(a, b) (0 == strcmp((a), (b)))
-
-// Read Mac OS X pasteboard into X cut buffer
-// Called by ProcessInputEvents() in response to request from X server thread.
-void QuartzReadPasteboard(void)
-{
- char *oldText = QuartzReadCutBuffer();
- char *text = QuartzReadCocoaPasteboard();
-
- // Compare text with current cut buffer contents.
- // Change the buffer if both exist and are different
- // OR if there is new text but no old text.
- // Otherwise, don't clear the selection unnecessarily.
-
- if ((text && oldText && !strequal(text, oldText)) ||
- (text && !oldText)) {
- int scrn, sel;
-
- for (scrn = 0; scrn < screenInfo.numScreens; scrn++) {
- ScreenPtr pScreen = screenInfo.screens[scrn];
- // Set the cut buffers on each screen
- // fixme really on each screen?
- ChangeWindowProperty(WindowTable[pScreen->myNum], XA_CUT_BUFFER0,
- XA_STRING, 8, PropModeReplace,
- strlen(text), (pointer)text, TRUE);
- }
-
- // Undo any current X selection (similar to code in dispatch.c)
- // FIXME: what about secondary selection?
- // FIXME: only touch first XA_PRIMARY selection?
- sel = 0;
- while ((sel < NumCurrentSelections) &&
- CurrentSelections[sel].selection != XA_PRIMARY)
- sel++;
- if (sel < NumCurrentSelections) {
- // Notify client if necessary
- if (CurrentSelections[sel].client) {
- xEvent event;
-
- event.u.u.type = SelectionClear;
- event.u.selectionClear.time = GetTimeInMillis();
- event.u.selectionClear.window = CurrentSelections[sel].window;
- event.u.selectionClear.atom = CurrentSelections[sel].selection;
- TryClientEvents(CurrentSelections[sel].client, &event, 1,
- NoEventMask, NoEventMask /*CantBeFiltered*/,
- NullGrab);
- }
-
- // Erase it
- // FIXME: need to erase .selection too? dispatch.c doesn't
- CurrentSelections[sel].pWin = NullWindow;
- CurrentSelections[sel].window = None;
- CurrentSelections[sel].client = NullClient;
- }
- }
-
- if (text) free(text);
- if (oldText) free(oldText);
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzPasteboard.h b/nx-X11/programs/Xserver/hw/darwin/quartz/quartzPasteboard.h
deleted file mode 100644
index 296c52c17..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzPasteboard.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- QuartzPasteboard.h
-
- Mac OS X pasteboard <-> X cut buffer
- Greg Parker gparker@cs.stanford.edu March 8, 2001
-*/
-/*
- * Copyright (c) 2001 Greg Parker. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/quartzPasteboard.h,v 1.1 2001/03/15 22:24:27 torrey Exp $ */
-
-#ifndef _QUARTZPASTEBOARD_H
-#define _QUARTZPASTEBOARD_H
-
-// Aqua->X
-void QuartzReadPasteboard();
-char * QuartzReadCocoaPasteboard(void); // caller must free string
-
-// X->Aqua
-void QuartzWritePasteboard();
-void QuartzWriteCocoaPasteboard(char *text);
-
-#endif /* _QUARTZPASTEBOARD_H */ \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzStartup.c b/nx-X11/programs/Xserver/hw/darwin/quartz/quartzStartup.c
deleted file mode 100644
index cd58701b1..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/quartzStartup.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/**************************************************************
- *
- * Startup code for the Quartz Darwin X Server
- *
- **************************************************************/
-/*
- * Copyright (c) 2001-2004 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzStartup.c,v 1.8 2003/11/05 00:15:00 torrey Exp $ */
-
-#include <fcntl.h>
-#include <unistd.h>
-#include <CoreFoundation/CoreFoundation.h>
-#include "quartzCommon.h"
-#include "darwin.h"
-#include "quartz.h"
-#include "opaque.h"
-#include "micmap.h"
-
-int NSApplicationMain(int argc, char *argv[]);
-
-char **envpGlobal; // argcGlobal and argvGlobal
- // are from dix/globals.c
-
-// GLX bundle function pointers
-typedef void (*GlxExtensionInitPtr)(void);
-static GlxExtensionInitPtr GlxExtensionInit = NULL;
-
-typedef void (*GlxWrapInitVisualsPtr)(miInitVisualsProcPtr *);
-static GlxWrapInitVisualsPtr GlxWrapInitVisuals = NULL;
-
-typedef Bool (*QuartzModeBundleInitPtr)(void);
-
-
-/*
- * DarwinHandleGUI
- * This function is called first from main(). The first time
- * it is called we start the Mac OS X front end. The front end
- * will call main() again from another thread to run the X
- * server. On the second call this function loads the user
- * preferences set by the Mac OS X front end.
- */
-void DarwinHandleGUI(
- int argc,
- char *argv[],
- char *envp[] )
-{
- static Bool been_here = FALSE;
- int main_exit, i;
- int fd[2];
-
- if (been_here) {
- QuartzReadPreferences();
- return;
- }
- been_here = TRUE;
-
- // Make a pipe to pass events
- assert( pipe(fd) == 0 );
- darwinEventReadFD = fd[0];
- darwinEventWriteFD = fd[1];
- fcntl(darwinEventReadFD, F_SETFL, O_NONBLOCK);
-
- // Store command line arguments to pass back to main()
- argcGlobal = argc;
- argvGlobal = argv;
- envpGlobal = envp;
-
- quartzStartClients = 1;
- for (i = 1; i < argc; i++) {
- // Display version info without starting Mac OS X UI if requested
- if (!strcmp( argv[i], "-showconfig" ) || !strcmp( argv[i], "-version" )) {
- DarwinPrintBanner();
- exit(0);
- }
-
- // Determine if we need to start X clients
- // and what display mode to use
- if (!strcmp(argv[i], "-nostartx")) {
- quartzStartClients = 0;
- } else if (!strcmp( argv[i], "-fullscreen")) {
- quartzRootless = 0;
- } else if (!strcmp( argv[i], "-rootless")) {
- quartzRootless = 1;
- }
- }
-
- main_exit = NSApplicationMain(argc, argv);
- exit(main_exit);
-}
-
-
-/*
- * QuartzLoadDisplayBundle
- * Try to load the appropriate bundle containing the back end display code.
- */
-Bool QuartzLoadDisplayBundle(
- const char *dpyBundleName)
-{
- CFBundleRef mainBundle;
- CFStringRef bundleName;
- CFURLRef bundleURL;
- CFBundleRef dpyBundle;
- QuartzModeBundleInitPtr bundleInit;
-
- // Get the main bundle for the application
- mainBundle = CFBundleGetMainBundle();
-
- // Make CFString from bundle name
- bundleName = CFStringCreateWithCStringNoCopy(kCFAllocatorDefault,
- dpyBundleName,
- kCFStringEncodingASCII,
- kCFAllocatorNull);
-
- // Look for the appropriate bundle in the main bundle
- bundleURL = CFBundleCopyResourceURL(mainBundle, bundleName,
- NULL, NULL);
- if (!bundleURL) {
- ErrorF("Could not find display mode bundle %s.\n", dpyBundleName);
- return FALSE;
- }
-
- // Make a bundle instance using the URLRef
- dpyBundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
-
- if (!CFBundleLoadExecutable(dpyBundle)) {
- ErrorF("Could not load display mode bundle %s.\n", dpyBundleName);
- return FALSE;
- }
-
- // Lookup the bundle initialization function
- bundleInit = (void *)
- CFBundleGetFunctionPointerForName(dpyBundle,
- CFSTR("QuartzModeBundleInit"));
- if (!bundleInit) {
- ErrorF("Could not initialize display mode bundle %s.\n",
- dpyBundleName);
- return FALSE;
- }
- if (!bundleInit())
- return FALSE;
-
- // Release the CF objects
- CFRelease(bundleName);
- CFRelease(bundleURL);
-
- return TRUE;
-}
-
-
-/*
- * LoadGlxBundle
- * The Quartz mode X server needs to dynamically load the appropriate
- * bundle before initializing GLX.
- */
-static void LoadGlxBundle(void)
-{
- CFBundleRef mainBundle;
- CFStringRef bundleName;
- CFURLRef bundleURL;
- CFBundleRef glxBundle;
-
- // Get the main bundle for the application
- mainBundle = CFBundleGetMainBundle();
-
- // Choose the bundle to load
- ErrorF("Loading GLX bundle ");
- if (quartzUseAGL) {
- bundleName = CFStringCreateWithCStringNoCopy(kCFAllocatorDefault,
- quartzOpenGLBundle,
- kCFStringEncodingASCII,
- kCFAllocatorNull);
- ErrorF("%s (using Apple's OpenGL)\n", quartzOpenGLBundle);
- } else {
- bundleName = CFSTR("glxMesa.bundle");
- CFRetain(bundleName); // so we can release later
- ErrorF("glxMesa.bundle (using Mesa)\n");
- }
-
- // Look for the appropriate GLX bundle in the main bundle by name
- bundleURL = CFBundleCopyResourceURL(mainBundle, bundleName,
- NULL, NULL);
- if (!bundleURL) {
- FatalError("Could not find GLX bundle.");
- }
-
- // Make a bundle instance using the URLRef
- glxBundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
-
- if (!CFBundleLoadExecutable(glxBundle)) {
- FatalError("Could not load GLX bundle.");
- }
-
- // Find the GLX init functions
- GlxExtensionInit = (void *) CFBundleGetFunctionPointerForName(
- glxBundle, CFSTR("GlxExtensionInit"));
-
- GlxWrapInitVisuals = (void *) CFBundleGetFunctionPointerForName(
- glxBundle, CFSTR("GlxWrapInitVisuals"));
-
- if (!GlxExtensionInit || !GlxWrapInitVisuals) {
- FatalError("Could not initialize GLX bundle.");
- }
-
- // Release the CF objects
- CFRelease(bundleName);
- CFRelease(bundleURL);
-}
-
-
-/*
- * DarwinGlxExtensionInit
- * Initialize the GLX extension.
- */
-void DarwinGlxExtensionInit(void)
-{
- if (!GlxExtensionInit)
- LoadGlxBundle();
-
- GlxExtensionInit();
-}
-
-
-/*
- * DarwinGlxWrapInitVisuals
- */
-void DarwinGlxWrapInitVisuals(
- miInitVisualsProcPtr *procPtr)
-{
- if (!GlxWrapInitVisuals)
- LoadGlxBundle();
-
- GlxWrapInitVisuals(procPtr);
-}
-
-
-int DarwinModeProcessArgument( int argc, char *argv[], int i )
-{
- // fullscreen: CoreGraphics full-screen mode
- // rootless: Cocoa rootless mode
- // quartz: Default, either fullscreen or rootless
-
- if ( !strcmp( argv[i], "-fullscreen" ) ) {
- ErrorF( "Running full screen in parallel with Mac OS X Quartz window server.\n" );
- return 1;
- }
-
- if ( !strcmp( argv[i], "-rootless" ) ) {
- ErrorF( "Running rootless inside Mac OS X window server.\n" );
- return 1;
- }
-
- if ( !strcmp( argv[i], "-quartz" ) ) {
- ErrorF( "Running in parallel with Mac OS X Quartz window server.\n" );
- return 1;
- }
-
- // The Mac OS X front end uses this argument, which we just ignore here.
- if ( !strcmp( argv[i], "-nostartx" ) ) {
- return 1;
- }
-
- // This command line arg is passed when launched from the Aqua GUI.
- if ( !strncmp( argv[i], "-psn_", 5 ) ) {
- return 1;
- }
-
- return 0;
-} \ No newline at end of file
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/Imakefile b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/Imakefile
deleted file mode 100644
index 77a420958..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/Imakefile
+++ /dev/null
@@ -1,35 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/Imakefile,v 1.3 2003/08/12 23:47:10 torrey Exp $
-
-#include <Server.tmpl>
-
-SRCS = appledir.c \
- dri.c \
- xprAppleWM.c \
- xprCursor.c \
- xprFrame.c \
- xprScreen.c \
- x-hash.c \
- x-hook.c \
- x-list.c
-
-OBJS = appledri.o \
- dri.o \
- xprAppleWM.o \
- xprCursor.o \
- xprFrame.o \
- xprScreen.o \
- x-hash.o \
- x-hook.o \
- x-list.o
-
-INCLUDES = -I. -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(SERVERSRC)/render \
- -I$(SERVERSRC)/miext/rootless -I$(SERVERSRC)/miext/damage \
- -I$(EXTINCSRC) -I.. -I../.. \
- -I$(SERVERSRC)/miext/rootless/safeAlpha \
- -I$(SERVERSRC)/Xext -I$(LIBSRC)/GL/apple -I$(APPLEWMLIBSRC)
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(xpr,$(OBJS))
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/Xplugin.h b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/Xplugin.h
deleted file mode 100644
index 7673a0de3..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/Xplugin.h
+++ /dev/null
@@ -1,591 +0,0 @@
-/* Xplugin.h -- windowing API for rootless X11 server
- $Id: Xplugin.h,v 1.3 2005/07/01 22:43:08 daniels Exp $
-
- Copyright (c) 2002 Apple Computer, Inc. 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 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 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 ABOVE LISTED COPYRIGHT
- HOLDER(S) 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(s) of the above
- copyright holders shall not be used in advertising or otherwise to
- promote the sale, use or other dealings in this Software without
- prior written authorization.
-
- Note that these interfaces are provided solely for the use of the
- X11 server. Any other uses are unsupported and strongly discouraged. */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/Xplugin.h,v 1.2 2003/05/02 00:08:49 torrey Exp $ */
-
-#ifndef XPLUGIN_H
-#define XPLUGIN_H 1
-
-#include <stdint.h>
-
-/* By default we use the X server definition of BoxRec to define xp_box,
- so that the compiler can silently convert between the two. But if
- XP_NO_X_HEADERS is defined, we'll define it ourselves. */
-
-#ifndef XP_NO_X_HEADERS
-# include "miscstruct.h"
- typedef BoxRec xp_box;
-#else
- struct xp_box_struct {
- short x1, y1, x2, y2;
- };
- typedef struct xp_box_struct xp_box;
-#endif
-
-typedef unsigned int xp_resource_id;
-typedef xp_resource_id xp_window_id;
-typedef xp_resource_id xp_surface_id;
-typedef unsigned int xp_client_id;
-typedef unsigned int xp_request_type;
-typedef int xp_error;
-typedef int xp_bool;
-
-
-/* Error codes that the functions declared here may return. They all
- numerically match their X equivalents, i.e. the XP_ can be dropped
- if <X11/X.h> has been included. */
-
-enum xp_error_enum {
- XP_Success = 0,
- XP_BadRequest = 1,
- XP_BadValue = 2,
- XP_BadWindow = 3,
- XP_BadMatch = 8,
- XP_BadAccess = 10,
- XP_BadImplementation = 17,
-};
-
-
-/* Event types generated by the plugin. */
-
-enum xp_event_type_enum {
- /* The global display configuration changed somehow. */
- XP_EVENT_DISPLAY_CHANGED = 1 << 0,
-
- /* A window changed state. Argument is xp_window_state_event */
- XP_EVENT_WINDOW_STATE_CHANGED = 1 << 1,
-
- /* An async request encountered an error. Argument is of type
- xp_async_error_event */
- XP_EVENT_ASYNC_ERROR = 1 << 2,
-
- /* Sent when a surface is destroyed as a side effect of destroying
- a window. Arg is of type xp_surface_id. */
- XP_EVENT_SURFACE_DESTROYED = 1 << 3,
-
- /* Sent when any GL contexts pointing at the given surface need to
- call xp_update_gl_context () to refresh their state (because the
- window moved or was resized. Arg is of type xp_surface_id. */
- XP_EVENT_SURFACE_CHANGED = 1 << 4,
-
- /* Sent when a window has been moved. Arg is of type xp_window_id. */
- XP_EVENT_WINDOW_MOVED = 1 << 5,
-};
-
-/* Function type used to receive events. */
-
-typedef void (xp_event_fun) (unsigned int type, const void *arg,
- unsigned int arg_size, void *user_data);
-
-
-/* Operation types. Used when reporting errors asynchronously. */
-
-enum xp_request_type_enum {
- XP_REQUEST_NIL = 0,
- XP_REQUEST_DESTROY_WINDOW = 1,
- XP_REQUEST_CONFIGURE_WINDOW = 2,
- XP_REQUEST_FLUSH_WINDOW = 3,
- XP_REQUEST_COPY_WINDOW = 4,
- XP_REQUEST_UNLOCK_WINDOW = 5,
- XP_REQUEST_DISABLE_UPDATE = 6,
- XP_REQUEST_REENABLE_UPDATE = 7,
- XP_REQUEST_HIDE_CURSOR = 8,
- XP_REQUEST_SHOW_CURSOR = 9,
- XP_REQUEST_FRAME_DRAW = 10,
-};
-
-/* Structure used to report an error asynchronously. Passed as the "arg"
- of an XP_EVENT_ASYNC_ERROR event. */
-
-struct xp_async_error_event_struct {
- xp_request_type request_type;
- xp_resource_id id;
- xp_error error;
-};
-
-typedef struct xp_async_error_event_struct xp_async_error_event;
-
-
-/* Possible window states. */
-
-enum xp_window_state_enum {
- /* The window is not in the global list of possibly-visible windows. */
- XP_WINDOW_STATE_OFFSCREEN = 1 << 0,
-
- /* Parts of the window may be obscured by other windows. */
- XP_WINDOW_STATE_OBSCURED = 1 << 1,
-};
-
-/* Structure passed as argument of an XP_EVENT_WINDOW_STATE_CHANGED event. */
-
-struct xp_window_state_event_struct {
- xp_window_id id;
- unsigned int state;
-};
-
-typedef struct xp_window_state_event_struct xp_window_state_event;
-
-
-/* Function type used to supply a colormap for indexed drawables. */
-
-typedef xp_error (xp_colormap_fun) (void *data, int first_color,
- int n_colors, uint32_t *colors);
-
-
-/* Window attributes structure. Used when creating and configuring windows.
- Also used when configuring surfaces attached to windows. Functions that
- take one of these structures also take a bit mask defining which
- fields are set to meaningful values. */
-
-enum xp_window_changes_enum {
- XP_ORIGIN = 1 << 0,
- XP_SIZE = 1 << 1,
- XP_BOUNDS = XP_ORIGIN | XP_SIZE,
- XP_SHAPE = 1 << 2,
- XP_STACKING = 1 << 3,
- XP_DEPTH = 1 << 4,
- XP_COLORMAP = 1 << 5,
- XP_WINDOW_LEVEL = 1 << 6,
-};
-
-struct xp_window_changes_struct {
- /* XP_ORIGIN */
- int x, y;
-
- /* XP_SIZE */
- unsigned int width, height;
- int bit_gravity; /* how to resize the backing store */
-
- /* XP_SHAPE */
- int shape_nrects; /* -1 = remove shape */
- xp_box *shape_rects;
- int shape_tx, shape_ty; /* translation for shape */
-
- /* XP_STACKING */
- int stack_mode;
- xp_window_id sibling; /* may be zero; in ABOVE/BELOW modes
- it may specify a relative window */
- /* XP_DEPTH, window-only */
- unsigned int depth;
-
- /* XP_COLORMAP, window-only */
- xp_colormap_fun *colormap;
- void *colormap_data;
-
- /* XP_WINDOW_LEVEL, window-only */
- int window_level;
-};
-
-typedef struct xp_window_changes_struct xp_window_changes;
-
-/* Values for bit_gravity field */
-
-enum xp_bit_gravity_enum {
- XP_GRAVITY_NONE = 0, /* no gravity, fill everything */
- XP_GRAVITY_NORTH_WEST = 1, /* anchor to top-left corner */
- XP_GRAVITY_NORTH_EAST = 2, /* anchor to top-right corner */
- XP_GRAVITY_SOUTH_EAST = 3, /* anchor to bottom-right corner */
- XP_GRAVITY_SOUTH_WEST = 4, /* anchor to bottom-left corner */
-};
-
-/* Values for stack_mode field */
-
-enum xp_window_stack_mode_enum {
- XP_UNMAPPED = 0, /* remove the window */
- XP_MAPPED_ABOVE = 1, /* display the window on top */
- XP_MAPPED_BELOW = 2, /* display the window at bottom */
-};
-
-/* Data formats for depth field and composite functions */
-
-enum xp_depth_enum {
- XP_DEPTH_NIL = 0, /* null source when compositing */
- XP_DEPTH_ARGB8888,
- XP_DEPTH_RGB555,
- XP_DEPTH_A8, /* for masks when compositing */
- XP_DEPTH_INDEX8,
-};
-
-/* Options that may be passed to the xp_init () function. */
-
-enum xp_init_options_enum {
- /* Don't mark that this process can be in the foreground. */
- XP_IN_BACKGROUND = 1 << 0,
-
- /* Deliver background pointer events to this process. */
- XP_BACKGROUND_EVENTS = 1 << 1,
-};
-
-
-
-/* Miscellaneous functions */
-
-/* Initialize the plugin library. Only the copy/fill/composite functions
- may be called without having previously called xp_init () */
-
-extern xp_error xp_init (unsigned int options);
-
-/* Sets the current set of requested notifications to MASK. When any of
- these arrive, CALLBACK will be invoked with CALLBACK-DATA. Note that
- calling this function cancels any previously requested notifications
- that aren't set in MASK. */
-
-extern xp_error xp_select_events (unsigned int mask,
- xp_event_fun *callback,
- void *callback_data);
-
-/* Waits for all initiated operations to complete. */
-
-extern xp_error xp_synchronize (void);
-
-/* Causes any display update initiated through the plugin libary to be
- queued until update is reenabled. Note that calls to these functions
- nest. */
-
-extern xp_error xp_disable_update (void);
-extern xp_error xp_reenable_update (void);
-
-
-
-/* Cursor functions. */
-
-/* Installs the specified cursor. ARGB-DATA should point to 32-bit
- premultiplied big-endian ARGB data. The HOT-X,HOT-Y parameters
- specify the offset to the cursor's hot spot from its top-left
- corner. */
-
-extern xp_error xp_set_cursor (unsigned int width, unsigned int height,
- unsigned int hot_x, unsigned int hot_y,
- const uint32_t *argb_data,
- unsigned int rowbytes);
-
-/* Hide and show the cursor if it's owned by the current process. Calls
- to these functions nest. */
-
-extern xp_error xp_hide_cursor (void);
-extern xp_error xp_show_cursor (void);
-
-
-
-/* Window functions. */
-
-/* Create a new window as defined by MASK and VALUES. MASK must contain
- XP_BOUNDS or an error is raised. The id of the newly created window
- is stored in *RET-ID if this function returns XP_Success. */
-
-extern xp_error xp_create_window (unsigned int mask,
- const xp_window_changes *values,
- xp_window_id *ret_id);
-
-/* Destroys the window identified by ID. */
-
-extern xp_error xp_destroy_window (xp_window_id id);
-
-/* Reconfigures the given window according to MASK and VALUES. */
-
-extern xp_error xp_configure_window (xp_window_id id, unsigned int mask,
- const xp_window_changes *values);
-
-
-/* Returns true if NATIVE-ID is a window created by the plugin library.
- If so and RET-ID is non-null, stores the id of the window in *RET-ID. */
-
-extern xp_bool xp_lookup_native_window (unsigned int native_id,
- xp_window_id *ret_id);
-
-/* If ID names a window created by the plugin library, stores it's native
- window id in *RET-NATIVE-ID. */
-
-extern xp_error xp_get_native_window (xp_window_id id,
- unsigned int *ret_native_id);
-
-
-/* Locks the rectangle IN-RECT (or, if null, the entire window) of the
- given window's backing store. Any other non-null parameters are filled
- in as follows:
-
- DEPTH = format of returned data. Currently either XP_DEPTH_ARGB8888
- or XP_DEPTH_RGB565 (possibly with 8 bit planar alpha). Data is
- always stored in native byte order.
-
- BITS[0] = pointer to top-left pixel of locked color data
- BITS[1] = pointer to top-left of locked alpha data, or null if window
- has no alpha. If the alpha data is meshed, then BITS[1] = BITS[0].
-
- ROWBYTES[0,1] = size in bytes of each row of color,alpha data
-
- OUT-RECT = rectangle specifying the current position and size of the
- locked region relative to the window origin.
-
- Note that an error is raised when trying to lock an already locked
- window. While the window is locked, the only operations that may
- be performed on it are to modify, access or flush its marked region. */
-
-extern xp_error xp_lock_window (xp_window_id id,
- const xp_box *in_rect,
- unsigned int *depth,
- void *bits[2],
- unsigned int rowbytes[2],
- xp_box *out_rect);
-
-/* Mark that the region specified by SHAPE-NRECTS, SHAPE-RECTS,
- SHAPE-TX, and SHAPE-TY in the specified window has been updated, and
- will need to subsequently be redisplayed. */
-
-extern xp_error xp_mark_window (xp_window_id id, int shape_nrects,
- const xp_box *shape_rects,
- int shape_tx, int shape_ty);
-
-/* Unlocks the specified window. If FLUSH is true, then any marked
- regions are immediately redisplayed. Note that it's an error to
- unlock an already unlocked window. */
-
-extern xp_error xp_unlock_window (xp_window_id id, xp_bool flush);
-
-/* If anything is marked in the given window for redisplay, do it now. */
-
-extern xp_error xp_flush_window (xp_window_id id);
-
-/* Moves the contents of the region DX,DY pixels away from that specified
- by DST_RECTS and DST_NRECTS in the window with SRC-ID to the
- destination region in the window DST-ID. Note that currently source
- and destination windows must be the same. */
-
-extern xp_error xp_copy_window (xp_window_id src_id, xp_window_id dst_id,
- int dst_nrects, const xp_box *dst_rects,
- int dx, int dy);
-
-/* Returns true if the given window has any regions marked for
- redisplay. */
-
-extern xp_bool xp_is_window_marked (xp_window_id id);
-
-/* If successful returns a superset of the region marked for update in
- the given window. Use xp_free_region () to release the returned data. */
-
-extern xp_error xp_get_marked_shape (xp_window_id id,
- int *ret_nrects, xp_box **ret_rects);
-
-extern void xp_free_shape (int nrects, xp_box *rects);
-
-/* Searches for the first window below ABOVE-ID containing the point X,Y,
- and returns it's window id in *RET-ID. If no window is found, *RET-ID
- is set to zero. If ABOVE-ID is zero, finds the topmost window
- containing the given point. */
-
-extern xp_error xp_find_window (int x, int y, xp_window_id above_id,
- xp_window_id *ret_id);
-
-/* Returns the current origin and size of the window ID in *BOUNDS-RET if
- successful. */
-extern xp_error xp_get_window_bounds (xp_window_id id, xp_box *bounds_ret);
-
-
-
-/* Window surface functions. */
-
-/* Create a new VRAM surface on the specified window. If successful,
- returns the identifier of the new surface in *RET-SID. */
-
-extern xp_error xp_create_surface (xp_window_id id, xp_surface_id *ret_sid);
-
-/* Destroys the specified surface. */
-
-extern xp_error xp_destroy_surface (xp_surface_id sid);
-
-/* Reconfigures the specified surface as defined by MASK and VALUES.
- Note that specifying XP_DEPTH is an error. */
-
-extern xp_error xp_configure_surface (xp_surface_id sid, unsigned int mask,
- const xp_window_changes *values);
-
-/* If successful, places the client identifier of the current process
- in *RET-CLIENT. */
-
-extern xp_error xp_get_client_id (xp_client_id *ret_client);
-
-/* Given a valid window,surface combination created by the current
- process, attempts to allow the specified external client access
- to that surface. If successful, returns two integers in RET-KEY
- which the client can use to import the surface into their process. */
-
-extern xp_error xp_export_surface (xp_window_id wid, xp_surface_id sid,
- xp_client_id client,
- unsigned int ret_key[2]);
-
-/* Given a two integer key returned from xp_export_surface (), tries
- to import the surface into the current process. If successful the
- local surface identifier is stored in *SID-RET. */
-
-extern xp_error xp_import_surface (const unsigned int key[2],
- xp_surface_id *sid_ret);
-
-/* If successful, stores the number of surfaces attached to the
- specified window in *RET. */
-
-extern xp_error xp_get_window_surface_count (xp_window_id id,
- unsigned int *ret);
-
-/* Attaches the CGLContextObj CGL-CTX to the specified surface. */
-
-extern xp_error xp_attach_gl_context (void *cgl_ctx, xp_surface_id sid);
-
-/* Updates the CGLContextObj CGL-CTX to reflect any recent changes to
- the surface it's attached to. */
-
-extern xp_error xp_update_gl_context (void *cgl_ctx);
-
-
-
-/* Window frame functions. */
-
-/* Possible arguments to xp_frame_get_rect (). */
-
-enum xp_frame_rect_enum {
- XP_FRAME_RECT_TITLEBAR = 1,
- XP_FRAME_RECT_TRACKING = 2,
- XP_FRAME_RECT_GROWBOX = 3,
-};
-
-/* Classes of window frame. */
-
-enum xp_frame_class_enum {
- XP_FRAME_CLASS_DOCUMENT = 1 << 0,
- XP_FRAME_CLASS_DIALOG = 1 << 1,
- XP_FRAME_CLASS_MODAL_DIALOG = 1 << 2,
- XP_FRAME_CLASS_SYSTEM_MODAL_DIALOG = 1 << 3,
- XP_FRAME_CLASS_UTILITY = 1 << 4,
- XP_FRAME_CLASS_TOOLBAR = 1 << 5,
- XP_FRAME_CLASS_MENU = 1 << 6,
- XP_FRAME_CLASS_SPLASH = 1 << 7,
- XP_FRAME_CLASS_BORDERLESS = 1 << 8,
-};
-
-/* Attributes of window frames. */
-
-enum xp_frame_attr_enum {
- XP_FRAME_ACTIVE = 0x0001,
- XP_FRAME_URGENT = 0x0002,
- XP_FRAME_TITLE = 0x0004,
- XP_FRAME_PRELIGHT = 0x0008,
- XP_FRAME_SHADED = 0x0010,
- XP_FRAME_CLOSE_BOX = 0x0100,
- XP_FRAME_COLLAPSE = 0x0200,
- XP_FRAME_ZOOM = 0x0400,
- XP_FRAME_ANY_BUTTON = 0x0700,
- XP_FRAME_CLOSE_BOX_CLICKED = 0x0800,
- XP_FRAME_COLLAPSE_BOX_CLICKED = 0x1000,
- XP_FRAME_ZOOM_BOX_CLICKED = 0x2000,
- XP_FRAME_ANY_CLICKED = 0x3800,
- XP_FRAME_GROW_BOX = 0x4000,
-};
-
-#define XP_FRAME_ATTR_IS_SET(a,b) (((a) & (b)) == (b))
-#define XP_FRAME_ATTR_IS_CLICKED(a,m) ((a) & ((m) << 3))
-#define XP_FRAME_ATTR_SET_CLICKED(a,m) ((a) |= ((m) << 3))
-#define XP_FRAME_ATTR_UNSET_CLICKED(a,m) ((a) &= ~((m) << 3))
-
-#define XP_FRAME_POINTER_ATTRS (XP_FRAME_PRELIGHT \
- | XP_FRAME_ANY_BUTTON \
- | XP_FRAME_ANY_CLICKED)
-
-extern xp_error xp_frame_get_rect (int type, int class, const xp_box *outer,
- const xp_box *inner, xp_box *ret);
-extern xp_error xp_frame_hit_test (int class, int x, int y,
- const xp_box *outer,
- const xp_box *inner, int *ret);
-extern xp_error xp_frame_draw (xp_window_id wid, int class, unsigned int attr,
- const xp_box *outer, const xp_box *inner,
- unsigned int title_len,
- const unsigned char *title_bytes);
-
-
-
-/* Memory manipulation functions. */
-
-enum xp_composite_op_enum {
- XP_COMPOSITE_SRC = 0,
- XP_COMPOSITE_OVER,
-};
-
-#define XP_COMPOSITE_FUNCTION(op, src_depth, mask_depth, dest_depth) \
- (((op) << 24) | ((src_depth) << 16) \
- | ((mask_depth) << 8) | ((dest_depth) << 0))
-
-#define XP_COMPOSITE_FUNCTION_OP(f) (((f) >> 24) & 255)
-#define XP_COMPOSITE_FUNCTION_SRC_DEPTH(f) (((f) >> 16) & 255)
-#define XP_COMPOSITE_FUNCTION_MASK_DEPTH(f) (((f) >> 8) & 255)
-#define XP_COMPOSITE_FUNCTION_DEST_DEPTH(f) (((f) >> 0) & 255)
-
-/* Composite WIDTH by HEIGHT pixels from source and mask to destination
- using a specified function (if source and destination overlap,
- undefined behavior results).
-
- For SRC and DEST, the first element of the array is the color data. If
- the second element is non-null it implies that there is alpha data
- (which may be meshed or planar). Data without alpha is assumed to be
- opaque.
-
- Passing a null SRC-ROWBYTES pointer implies that the data SRC points
- to is a single element.
-
- Operations that are not supported will return XP_BadImplementation. */
-
-extern xp_error xp_composite_pixels (unsigned int width, unsigned int height,
- unsigned int function,
- void *src[2], unsigned int src_rowbytes[2],
- void *mask, unsigned int mask_rowbytes,
- void *dest[2], unsigned int dest_rowbytes[2]);
-
-/* Fill HEIGHT rows of data starting at DST. Each row will have WIDTH
- bytes filled with the 32-bit pattern VALUE. Each row is DST-ROWBYTES
- wide in total. */
-
-extern void xp_fill_bytes (unsigned int width,
- unsigned int height, uint32_t value,
- void *dst, unsigned int dst_rowbytes);
-
-/* Copy HEIGHT rows of bytes from SRC to DST. Each row will have WIDTH
- bytes copied. SRC and DST may overlap, and the right thing will happen. */
-
-extern void xp_copy_bytes (unsigned int width, unsigned int height,
- const void *src, unsigned int src_rowbytes,
- void *dst, unsigned int dst_rowbytes);
-
-/* Suggestions for the minimum number of bytes or pixels for which it
- makes sense to use some of the xp_ functions */
-
-extern unsigned int xp_fill_bytes_threshold, xp_copy_bytes_threshold,
- xp_composite_area_threshold, xp_scroll_area_threshold;
-
-
-#endif /* XPLUGIN_H */
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/appledri.c b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/appledri.c
deleted file mode 100644
index d4cd27b8f..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/appledri.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/xf86dri.c,v 1.10 2000/12/07 20:26:14 dawes Exp $ */
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-Copyright 2000 VA Linux Systems, Inc.
-Copyright (c) 2002 Apple Computer, Inc.
-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 the rights to use, copy, modify, merge, publish,
-distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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:
- * Kevin E. Martin <martin@valinux.com>
- * Jens Owen <jens@valinux.com>
- * Rickard E. (Rik) Faith <faith@valinux.com>
- *
- */
-
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "dixstruct.h"
-#include "extnsionst.h"
-#include "colormapst.h"
-#include "cursorstr.h"
-#include "scrnintstr.h"
-#include "servermd.h"
-#define _APPLEDRI_SERVER_
-#include "appledristr.h"
-#include "swaprep.h"
-#include "dri.h"
-#include "dristruct.h"
-
-static int DRIErrorBase = 0;
-
-static DISPATCH_PROC(ProcAppleDRIDispatch);
-static DISPATCH_PROC(SProcAppleDRIDispatch);
-
-static void AppleDRIResetProc(ExtensionEntry* extEntry);
-
-static unsigned char DRIReqCode = 0;
-static int DRIEventBase = 0;
-
-static void SNotifyEvent(xAppleDRINotifyEvent *from, xAppleDRINotifyEvent *to);
-
-typedef struct _DRIEvent *DRIEventPtr;
-typedef struct _DRIEvent {
- DRIEventPtr next;
- ClientPtr client;
- XID clientResource;
- unsigned int mask;
-} DRIEventRec;
-
-
-void
-AppleDRIExtensionInit(void)
-{
- ExtensionEntry* extEntry;
-
- if (DRIExtensionInit() &&
- (extEntry = AddExtension(APPLEDRINAME,
- AppleDRINumberEvents,
- AppleDRINumberErrors,
- ProcAppleDRIDispatch,
- SProcAppleDRIDispatch,
- AppleDRIResetProc,
- StandardMinorOpcode))) {
- DRIReqCode = (unsigned char)extEntry->base;
- DRIErrorBase = extEntry->errorBase;
- DRIEventBase = extEntry->eventBase;
- EventSwapVector[DRIEventBase] = (EventSwapPtr) SNotifyEvent;
- }
-}
-
-/*ARGSUSED*/
-static void
-AppleDRIResetProc (
- ExtensionEntry* extEntry
-)
-{
- DRIReset();
-}
-
-static int
-ProcAppleDRIQueryVersion(
- register ClientPtr client
-)
-{
- xAppleDRIQueryVersionReply rep;
- register int n;
-
- REQUEST_SIZE_MATCH(xAppleDRIQueryVersionReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.majorVersion = APPLE_DRI_MAJOR_VERSION;
- rep.minorVersion = APPLE_DRI_MINOR_VERSION;
- rep.patchVersion = APPLE_DRI_PATCH_VERSION;
- if (client->swapped) {
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, n);
- }
- WriteToClient(client, sizeof(xAppleDRIQueryVersionReply), (char *)&rep);
- return (client->noClientException);
-}
-
-
-/* surfaces */
-
-static int
-ProcAppleDRIQueryDirectRenderingCapable(
- register ClientPtr client
-)
-{
- xAppleDRIQueryDirectRenderingCapableReply rep;
- Bool isCapable;
-
- REQUEST(xAppleDRIQueryDirectRenderingCapableReq);
- REQUEST_SIZE_MATCH(xAppleDRIQueryDirectRenderingCapableReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- if (!DRIQueryDirectRenderingCapable( screenInfo.screens[stuff->screen],
- &isCapable)) {
- return BadValue;
- }
- rep.isCapable = isCapable;
-
- if (!LocalClient(client))
- rep.isCapable = 0;
-
- WriteToClient(client,
- sizeof(xAppleDRIQueryDirectRenderingCapableReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-ProcAppleDRIAuthConnection(
- register ClientPtr client
-)
-{
- xAppleDRIAuthConnectionReply rep;
-
- REQUEST(xAppleDRIAuthConnectionReq);
- REQUEST_SIZE_MATCH(xAppleDRIAuthConnectionReq);
-
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.authenticated = 1;
-
- if (!DRIAuthConnection( screenInfo.screens[stuff->screen], stuff->magic)) {
- ErrorF("Failed to authenticate %u\n", stuff->magic);
- rep.authenticated = 0;
- }
- WriteToClient(client, sizeof(xAppleDRIAuthConnectionReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static void surface_notify(
- void *_arg,
- void *data
-)
-{
- DRISurfaceNotifyArg *arg = _arg;
- int client_index = (int) data;
- ClientPtr client;
- xAppleDRINotifyEvent se;
-
- if (client_index < 0 || client_index >= currentMaxClients)
- return;
-
- client = clients[client_index];
- if (client == NULL || client == serverClient || client->clientGone)
- return;
-
- se.type = DRIEventBase + AppleDRISurfaceNotify;
- se.kind = arg->kind;
- se.arg = arg->id;
- se.sequenceNumber = client->sequence;
- se.time = currentTime.milliseconds;
- WriteEventsToClient (client, 1, (xEvent *) &se);
-}
-
-static int
-ProcAppleDRICreateSurface(
- ClientPtr client
-)
-{
- xAppleDRICreateSurfaceReply rep;
- DrawablePtr pDrawable;
- xp_surface_id sid;
- unsigned int key[2];
-
- REQUEST(xAppleDRICreateSurfaceReq);
- REQUEST_SIZE_MATCH(xAppleDRICreateSurfaceReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- if (!(pDrawable = (DrawablePtr)SecurityLookupDrawable(
- (Drawable)stuff->drawable,
- client,
- SecurityReadAccess))) {
- return BadValue;
- }
-
- rep.key_0 = rep.key_1 = rep.uid = 0;
-
- if (!DRICreateSurface( screenInfo.screens[stuff->screen],
- (Drawable)stuff->drawable, pDrawable,
- stuff->client_id, &sid, key,
- surface_notify, (void *) client->index)) {
- return BadValue;
- }
-
- rep.key_0 = key[0];
- rep.key_1 = key[1];
- rep.uid = sid;
-
- WriteToClient(client, sizeof(xAppleDRICreateSurfaceReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-ProcAppleDRIDestroySurface(
- register ClientPtr client
-)
-{
- REQUEST(xAppleDRIDestroySurfaceReq);
- DrawablePtr pDrawable;
- REQUEST_SIZE_MATCH(xAppleDRIDestroySurfaceReq);
-
- if (!(pDrawable = (DrawablePtr)SecurityLookupDrawable(
- (Drawable)stuff->drawable,
- client,
- SecurityReadAccess))) {
- return BadValue;
- }
-
- if (!DRIDestroySurface( screenInfo.screens[stuff->screen],
- (Drawable)stuff->drawable,
- pDrawable, NULL, NULL)) {
- return BadValue;
- }
-
- return (client->noClientException);
-}
-
-
-/* dispatch */
-
-static int
-ProcAppleDRIDispatch (
- register ClientPtr client
-)
-{
- REQUEST(xReq);
-
- switch (stuff->data)
- {
- case X_AppleDRIQueryVersion:
- return ProcAppleDRIQueryVersion(client);
- case X_AppleDRIQueryDirectRenderingCapable:
- return ProcAppleDRIQueryDirectRenderingCapable(client);
- }
-
- if (!LocalClient(client))
- return DRIErrorBase + AppleDRIClientNotLocal;
-
- switch (stuff->data)
- {
- case X_AppleDRIAuthConnection:
- return ProcAppleDRIAuthConnection(client);
- case X_AppleDRICreateSurface:
- return ProcAppleDRICreateSurface(client);
- case X_AppleDRIDestroySurface:
- return ProcAppleDRIDestroySurface(client);
- default:
- return BadRequest;
- }
-}
-
-static void
-SNotifyEvent(
- xAppleDRINotifyEvent *from,
- xAppleDRINotifyEvent *to
-)
-{
- to->type = from->type;
- to->kind = from->kind;
- cpswaps (from->sequenceNumber, to->sequenceNumber);
- cpswapl (from->time, to->time);
- cpswapl (from->arg, to->arg);
-}
-
-static int
-SProcAppleDRIQueryVersion(
- register ClientPtr client
-)
-{
- register int n;
- REQUEST(xAppleDRIQueryVersionReq);
- swaps(&stuff->length, n);
- return ProcAppleDRIQueryVersion(client);
-}
-
-static int
-SProcAppleDRIDispatch (
- register ClientPtr client
-)
-{
- REQUEST(xReq);
-
- /* It is bound to be non-local when there is byte swapping */
- if (!LocalClient(client))
- return DRIErrorBase + AppleDRIClientNotLocal;
-
- /* only local clients are allowed DRI access */
- switch (stuff->data)
- {
- case X_AppleDRIQueryVersion:
- return SProcAppleDRIQueryVersion(client);
- default:
- return BadRequest;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/dri.c b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/dri.c
deleted file mode 100644
index e8e49f965..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/dri.c
+++ /dev/null
@@ -1,757 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/dri.c,v 1.34 2001/12/10 19:07:19 dawes Exp $ */
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-Copyright 2000 VA Linux Systems, Inc.
-Copyright (c) 2002 Apple Computer, Inc.
-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 the rights to use, copy, modify, merge, publish,
-distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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:
- * Jens Owen <jens@valinux.com>
- * Rickard E. (Rik) Faith <faith@valinux.com>
- *
- */
-
-#ifdef XFree86LOADER
-#include "xf86.h"
-#include "xf86_ansic.h"
-#else
-#include <sys/time.h>
-#include <unistd.h>
-#endif
-
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "dixstruct.h"
-#include "extnsionst.h"
-#include "colormapst.h"
-#include "cursorstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "servermd.h"
-#define _APPLEDRI_SERVER_
-#include "appledristr.h"
-#include "swaprep.h"
-#include "dri.h"
-#include "dristruct.h"
-#include "mi.h"
-#include "mipointer.h"
-#include "rootless.h"
-#include "x-hash.h"
-#include "x-hook.h"
-
-#include <AvailabilityMacros.h>
-
-static int DRIScreenPrivIndex = -1;
-static int DRIWindowPrivIndex = -1;
-static int DRIPixmapPrivIndex = -1;
-
-static RESTYPE DRIDrawablePrivResType;
-
-static x_hash_table *surface_hash; /* maps surface ids -> drawablePrivs */
-
-/* FIXME: don't hardcode this? */
-#define CG_INFO_FILE "/System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework/Resources/Info-macos.plist"
-
-/* Corresponds to SU Jaguar Green */
-#define CG_REQUIRED_MAJOR 1
-#define CG_REQUIRED_MINOR 157
-#define CG_REQUIRED_MICRO 11
-
-/* Returns version as major.minor.micro in 10.10.10 fixed form */
-static unsigned int
-get_cg_version (void)
-{
- static unsigned int version;
-
- FILE *fh;
- char *ptr;
-
- if (version != 0)
- return version;
-
- /* I tried CFBundleGetVersion, but it returns zero, so.. */
-
- fh = fopen (CG_INFO_FILE, "r");
- if (fh != NULL)
- {
- char buf[256];
-
- while (fgets (buf, sizeof (buf), fh) != NULL)
- {
- unsigned char c;
-
- if (!strstr (buf, "<key>CFBundleShortVersionString</key>")
- || fgets (buf, sizeof (buf), fh) == NULL)
- {
- continue;
- }
-
- ptr = strstr (buf, "<string>");
- if (ptr == NULL)
- continue;
-
- ptr += strlen ("<string>");
-
- /* Now PTR points to "MAJOR.MINOR.MICRO". */
-
- version = 0;
-
- again:
- switch ((c = *ptr++))
- {
- case '.':
- version = version * 1024;
- goto again;
-
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- version = ((version & ~0x3ff)
- + (version & 0x3ff) * 10 + (c - '0'));
- goto again;
- }
- break;
- }
-
- fclose (fh);
- }
-
- return version;
-}
-
-static Bool
-test_cg_version (unsigned int major, unsigned int minor, unsigned int micro)
-{
- unsigned int cg_ver = get_cg_version ();
-
- unsigned int cg_major = (cg_ver >> 20) & 0x3ff;
- unsigned int cg_minor = (cg_ver >> 10) & 0x3ff;
- unsigned int cg_micro = cg_ver & 0x3ff;
-
- if (cg_major > major)
- return TRUE;
- else if (cg_major < major)
- return FALSE;
-
- /* cg_major == major */
-
- if (cg_minor > minor)
- return TRUE;
- else if (cg_minor < minor)
- return FALSE;
-
- /* cg_minor == minor */
-
- if (cg_micro < micro)
- return FALSE;
-
- return TRUE;
-}
-
-Bool
-DRIScreenInit(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv;
- int i;
-
- pDRIPriv = (DRIScreenPrivPtr) xcalloc(1, sizeof(DRIScreenPrivRec));
- if (!pDRIPriv) {
- pScreen->devPrivates[DRIScreenPrivIndex].ptr = NULL;
- return FALSE;
- }
-
- pScreen->devPrivates[DRIScreenPrivIndex].ptr = (pointer) pDRIPriv;
- pDRIPriv->directRenderingSupport = TRUE;
- pDRIPriv->nrWindows = 0;
-
- /* Need recent cg for window access update */
- if (!test_cg_version (CG_REQUIRED_MAJOR,
- CG_REQUIRED_MINOR,
- CG_REQUIRED_MICRO))
- {
- ErrorF ("[DRI] disabled direct rendering; requires CoreGraphics %d.%d.%d\n",
- CG_REQUIRED_MAJOR, CG_REQUIRED_MINOR, CG_REQUIRED_MICRO);
-
- pDRIPriv->directRenderingSupport = FALSE;
-
- /* Note we don't nuke the dri private, since we need it for
- managing indirect surfaces. */
- }
-
- /* Initialize drawable tables */
- for (i = 0; i < DRI_MAX_DRAWABLES; i++) {
- pDRIPriv->DRIDrawables[i] = NULL;
- }
-
- return TRUE;
-}
-
-Bool
-DRIFinishScreenInit(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- /* Allocate zero sized private area for each window. Should a window
- * become a DRI window, we'll hang a DRIWindowPrivateRec off of this
- * private index.
- */
- if (!AllocateWindowPrivate(pScreen, DRIWindowPrivIndex, 0))
- return FALSE;
-
- /* Wrap DRI support */
- pDRIPriv->wrap.ValidateTree = pScreen->ValidateTree;
- pScreen->ValidateTree = DRIValidateTree;
-
- pDRIPriv->wrap.PostValidateTree = pScreen->PostValidateTree;
- pScreen->PostValidateTree = DRIPostValidateTree;
-
- pDRIPriv->wrap.WindowExposures = pScreen->WindowExposures;
- pScreen->WindowExposures = DRIWindowExposures;
-
- pDRIPriv->wrap.CopyWindow = pScreen->CopyWindow;
- pScreen->CopyWindow = DRICopyWindow;
-
- pDRIPriv->wrap.ClipNotify = pScreen->ClipNotify;
- pScreen->ClipNotify = DRIClipNotify;
-
- ErrorF("[DRI] screen %d installation complete\n", pScreen->myNum);
-
- return TRUE;
-}
-
-void
-DRICloseScreen(ScreenPtr pScreen)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- if (pDRIPriv && pDRIPriv->directRenderingSupport) {
- xfree(pDRIPriv);
- pScreen->devPrivates[DRIScreenPrivIndex].ptr = NULL;
- }
-}
-
-Bool
-DRIExtensionInit(void)
-{
- static unsigned long DRIGeneration = 0;
-
- if (DRIGeneration != serverGeneration) {
- if ((DRIScreenPrivIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- DRIGeneration = serverGeneration;
- }
-
- /*
- * Allocate a window private index with a zero sized private area for
- * each window, then should a window become a DRI window, we'll hang
- * a DRIWindowPrivateRec off of this private index. Do same for pixmaps.
- */
- if ((DRIWindowPrivIndex = AllocateWindowPrivateIndex()) < 0)
- return FALSE;
- if ((DRIPixmapPrivIndex = AllocatePixmapPrivateIndex()) < 0)
- return FALSE;
-
- DRIDrawablePrivResType = CreateNewResourceType(DRIDrawablePrivDelete);
-
- return TRUE;
-}
-
-void
-DRIReset(void)
-{
- /*
- * This stub routine is called when the X Server recycles, resources
- * allocated by DRIExtensionInit need to be managed here.
- *
- * Currently this routine is a stub because all the interesting resources
- * are managed via the screen init process.
- */
-}
-
-Bool
-DRIQueryDirectRenderingCapable(ScreenPtr pScreen, Bool* isCapable)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- if (pDRIPriv)
- *isCapable = pDRIPriv->directRenderingSupport;
- else
- *isCapable = FALSE;
-
- return TRUE;
-}
-
-Bool
-DRIAuthConnection(ScreenPtr pScreen, unsigned int magic)
-{
-#if 0
- /* FIXME: something? */
-
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- if (drmAuthMagic(pDRIPriv->drmFD, magic)) return FALSE;
-#endif
- return TRUE;
-}
-
-static void
-DRIUpdateSurface(DRIDrawablePrivPtr pDRIDrawablePriv, DrawablePtr pDraw)
-{
- xp_window_changes wc;
- unsigned int flags = 0;
-
- if (pDRIDrawablePriv->sid == 0)
- return;
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
- wc.depth = (pDraw->bitsPerPixel == 32 ? XP_DEPTH_ARGB8888
- : pDraw->bitsPerPixel == 16 ? XP_DEPTH_RGB555 : XP_DEPTH_NIL);
- if (wc.depth != XP_DEPTH_NIL)
- flags |= XP_DEPTH;
-#endif
-
- if (pDraw->type == DRAWABLE_WINDOW) {
- WindowPtr pWin = (WindowPtr) pDraw;
- WindowPtr pTopWin = TopLevelParent(pWin);
-
- wc.x = pWin->drawable.x - (pTopWin->drawable.x - pTopWin->borderWidth);
- wc.y = pWin->drawable.y - (pTopWin->drawable.y - pTopWin->borderWidth);
- wc.width = pWin->drawable.width + 2 * pWin->borderWidth;
- wc.height = pWin->drawable.height + 2 * pWin->borderWidth;
- wc.bit_gravity = XP_GRAVITY_NONE;
-
- wc.shape_nrects = REGION_NUM_RECTS(&pWin->clipList);
- wc.shape_rects = REGION_RECTS(&pWin->clipList);
- wc.shape_tx = - (pTopWin->drawable.x - pTopWin->borderWidth);
- wc.shape_ty = - (pTopWin->drawable.y - pTopWin->borderWidth);
-
- flags |= XP_BOUNDS | XP_SHAPE;
-
- } else if (pDraw->type == DRAWABLE_PIXMAP) {
- wc.x = 0;
- wc.y = 0;
- wc.width = pDraw->width;
- wc.height = pDraw->height;
- wc.bit_gravity = XP_GRAVITY_NONE;
- flags |= XP_BOUNDS;
- }
-
- xp_configure_surface(pDRIDrawablePriv->sid, flags, &wc);
-}
-
-Bool
-DRICreateSurface(ScreenPtr pScreen, Drawable id,
- DrawablePtr pDrawable, xp_client_id client_id,
- xp_surface_id *surface_id, unsigned int ret_key[2],
- void (*notify) (void *arg, void *data), void *notify_data)
-{
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIDrawablePrivPtr pDRIDrawablePriv;
- xp_window_id wid = 0;
-
- if (pDrawable->type == DRAWABLE_WINDOW) {
- WindowPtr pWin = (WindowPtr)pDrawable;
-
- pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin);
- if (pDRIDrawablePriv == NULL) {
- xp_error err;
- xp_window_changes wc;
-
- /* allocate a DRI Window Private record */
- if (!(pDRIDrawablePriv = xalloc(sizeof(DRIDrawablePrivRec)))) {
- return FALSE;
- }
-
- pDRIDrawablePriv->pDraw = pDrawable;
- pDRIDrawablePriv->pScreen = pScreen;
- pDRIDrawablePriv->refCount = 0;
- pDRIDrawablePriv->drawableIndex = -1;
- pDRIDrawablePriv->notifiers = NULL;
-
- /* find the physical window */
- wid = (xp_window_id) RootlessFrameForWindow(pWin, TRUE);
- if (wid == 0) {
- xfree(pDRIDrawablePriv);
- return FALSE;
- }
-
- /* allocate the physical surface */
- err = xp_create_surface(wid, &pDRIDrawablePriv->sid);
- if (err != Success) {
- xfree(pDRIDrawablePriv);
- return FALSE;
- }
-
- /* Make it visible */
- wc.stack_mode = XP_MAPPED_ABOVE;
- wc.sibling = 0;
- err = xp_configure_surface(pDRIDrawablePriv->sid, XP_STACKING, &wc);
- if (err != Success)
- {
- xp_destroy_surface(pDRIDrawablePriv->sid);
- xfree(pDRIDrawablePriv);
- return FALSE;
- }
-
- /* save private off of preallocated index */
- pWin->devPrivates[DRIWindowPrivIndex].ptr = (pointer)pDRIDrawablePriv;
- }
- }
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
- else if (pDrawable->type == DRAWABLE_PIXMAP) {
- PixmapPtr pPix = (PixmapPtr)pDrawable;
-
- pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_PIXMAP(pPix);
- if (pDRIDrawablePriv == NULL) {
- xp_error err;
-
- /* allocate a DRI Window Private record */
- if (!(pDRIDrawablePriv = xcalloc(1, sizeof(DRIDrawablePrivRec)))) {
- return FALSE;
- }
-
- pDRIDrawablePriv->pDraw = pDrawable;
- pDRIDrawablePriv->pScreen = pScreen;
- pDRIDrawablePriv->refCount = 0;
- pDRIDrawablePriv->drawableIndex = -1;
- pDRIDrawablePriv->notifiers = NULL;
-
- /* Passing a null window id to Xplugin in 10.3+ asks for
- an accelerated offscreen surface. */
-
- err = xp_create_surface(0, &pDRIDrawablePriv->sid);
- if (err != Success) {
- xfree(pDRIDrawablePriv);
- return FALSE;
- }
-
- /* save private off of preallocated index */
- pPix->devPrivates[DRIPixmapPrivIndex].ptr = (pointer)pDRIDrawablePriv;
- }
- }
-#endif
-
- else { /* for GLX 1.3, a PBuffer */
- /* NOT_DONE */
- return FALSE;
- }
-
- /* Finish initialization of new surfaces */
- if (pDRIDrawablePriv->refCount == 0) {
- unsigned int key[2] = {0};
- xp_error err;
-
- /* try to give the client access to the surface */
- if (client_id != 0 && wid != 0)
- {
- err = xp_export_surface(wid, pDRIDrawablePriv->sid,
- client_id, key);
- if (err != Success) {
- xp_destroy_surface(pDRIDrawablePriv->sid);
- xfree(pDRIDrawablePriv);
- return FALSE;
- }
- }
-
- pDRIDrawablePriv->key[0] = key[0];
- pDRIDrawablePriv->key[1] = key[1];
-
- ++pDRIPriv->nrWindows;
-
- /* and stash it by surface id */
- if (surface_hash == NULL)
- surface_hash = x_hash_table_new(NULL, NULL, NULL, NULL);
- x_hash_table_insert(surface_hash,
- (void *) pDRIDrawablePriv->sid, pDRIDrawablePriv);
-
- /* track this in case this window is destroyed */
- AddResource(id, DRIDrawablePrivResType, (pointer)pDrawable);
-
- /* Initialize shape */
- DRIUpdateSurface(pDRIDrawablePriv, pDrawable);
- }
-
- pDRIDrawablePriv->refCount++;
-
- *surface_id = pDRIDrawablePriv->sid;
-
- if (ret_key != NULL) {
- ret_key[0] = pDRIDrawablePriv->key[0];
- ret_key[1] = pDRIDrawablePriv->key[1];
- }
-
- if (notify != NULL) {
- pDRIDrawablePriv->notifiers = x_hook_add(pDRIDrawablePriv->notifiers,
- notify, notify_data);
- }
-
- return TRUE;
-}
-
-Bool
-DRIDestroySurface(ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable,
- void (*notify) (void *, void *), void *notify_data)
-{
- DRIDrawablePrivPtr pDRIDrawablePriv;
-
- if (pDrawable->type == DRAWABLE_WINDOW) {
- pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW((WindowPtr)pDrawable);
- } else if (pDrawable->type == DRAWABLE_PIXMAP) {
- pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_PIXMAP((PixmapPtr)pDrawable);
- } else {
- return FALSE;
- }
-
- if (pDRIDrawablePriv != NULL) {
- if (notify != NULL) {
- pDRIDrawablePriv->notifiers = x_hook_remove(pDRIDrawablePriv->notifiers,
- notify, notify_data);
- }
- if (--pDRIDrawablePriv->refCount <= 0) {
- /* This calls back to DRIDrawablePrivDelete
- which frees the private area */
- FreeResourceByType(id, DRIDrawablePrivResType, FALSE);
- }
- }
-
- return TRUE;
-}
-
-Bool
-DRIDrawablePrivDelete(pointer pResource, XID id)
-{
- DrawablePtr pDrawable = (DrawablePtr)pResource;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pDrawable->pScreen);
- DRIDrawablePrivPtr pDRIDrawablePriv = NULL;
- WindowPtr pWin = NULL;
- PixmapPtr pPix = NULL;
-
- if (pDrawable->type == DRAWABLE_WINDOW) {
- pWin = (WindowPtr)pDrawable;
- pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin);
- } else if (pDrawable->type == DRAWABLE_PIXMAP) {
- pPix = (PixmapPtr)pDrawable;
- pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_PIXMAP(pPix);
- }
-
- if (pDRIDrawablePriv == NULL)
- return FALSE;
-
- if (pDRIDrawablePriv->drawableIndex != -1) {
- /* release drawable table entry */
- pDRIPriv->DRIDrawables[pDRIDrawablePriv->drawableIndex] = NULL;
- }
-
- if (pDRIDrawablePriv->sid != 0) {
- xp_destroy_surface(pDRIDrawablePriv->sid);
- x_hash_table_remove(surface_hash, (void *) pDRIDrawablePriv->sid);
- }
-
- if (pDRIDrawablePriv->notifiers != NULL)
- x_hook_free(pDRIDrawablePriv->notifiers);
-
- xfree(pDRIDrawablePriv);
-
- if (pDrawable->type == DRAWABLE_WINDOW) {
- pWin->devPrivates[DRIWindowPrivIndex].ptr = NULL;
- } else if (pDrawable->type == DRAWABLE_PIXMAP) {
- pPix->devPrivates[DRIPixmapPrivIndex].ptr = NULL;
- }
-
- --pDRIPriv->nrWindows;
-
- return TRUE;
-}
-
-void
-DRIWindowExposures(WindowPtr pWin, RegionPtr prgn, RegionPtr bsreg)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIDrawablePrivPtr pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin);
-
- if (pDRIDrawablePriv) {
- /* FIXME: something? */
- }
-
- pScreen->WindowExposures = pDRIPriv->wrap.WindowExposures;
-
- (*pScreen->WindowExposures)(pWin, prgn, bsreg);
-
- pDRIPriv->wrap.WindowExposures = pScreen->WindowExposures;
- pScreen->WindowExposures = DRIWindowExposures;
-}
-
-void
-DRICopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIDrawablePrivPtr pDRIDrawablePriv;
-
- if (pDRIPriv->nrWindows > 0) {
- pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin);
- if (pDRIDrawablePriv != NULL) {
- DRIUpdateSurface(pDRIDrawablePriv, &pWin->drawable);
- }
- }
-
- /* unwrap */
- pScreen->CopyWindow = pDRIPriv->wrap.CopyWindow;
-
- /* call lower layers */
- (*pScreen->CopyWindow)(pWin, ptOldOrg, prgnSrc);
-
- /* rewrap */
- pDRIPriv->wrap.CopyWindow = pScreen->CopyWindow;
- pScreen->CopyWindow = DRICopyWindow;
-}
-
-int
-DRIValidateTree(WindowPtr pParent, WindowPtr pChild, VTKind kind)
-{
- ScreenPtr pScreen = pParent->drawable.pScreen;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- int returnValue;
-
- /* unwrap */
- pScreen->ValidateTree = pDRIPriv->wrap.ValidateTree;
-
- /* call lower layers */
- returnValue = (*pScreen->ValidateTree)(pParent, pChild, kind);
-
- /* rewrap */
- pDRIPriv->wrap.ValidateTree = pScreen->ValidateTree;
- pScreen->ValidateTree = DRIValidateTree;
-
- return returnValue;
-}
-
-void
-DRIPostValidateTree(WindowPtr pParent, WindowPtr pChild, VTKind kind)
-{
- ScreenPtr pScreen;
- DRIScreenPrivPtr pDRIPriv;
-
- if (pParent) {
- pScreen = pParent->drawable.pScreen;
- } else {
- pScreen = pChild->drawable.pScreen;
- }
- pDRIPriv = DRI_SCREEN_PRIV(pScreen);
-
- if (pDRIPriv->wrap.PostValidateTree) {
- /* unwrap */
- pScreen->PostValidateTree = pDRIPriv->wrap.PostValidateTree;
-
- /* call lower layers */
- (*pScreen->PostValidateTree)(pParent, pChild, kind);
-
- /* rewrap */
- pDRIPriv->wrap.PostValidateTree = pScreen->PostValidateTree;
- pScreen->PostValidateTree = DRIPostValidateTree;
- }
-}
-
-void
-DRIClipNotify(WindowPtr pWin, int dx, int dy)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- DRIDrawablePrivPtr pDRIDrawablePriv;
-
- if ((pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin))) {
- DRIUpdateSurface(pDRIDrawablePriv, &pWin->drawable);
- }
-
- if (pDRIPriv->wrap.ClipNotify) {
- pScreen->ClipNotify = pDRIPriv->wrap.ClipNotify;
-
- (*pScreen->ClipNotify)(pWin, dx, dy);
-
- pDRIPriv->wrap.ClipNotify = pScreen->ClipNotify;
- pScreen->ClipNotify = DRIClipNotify;
- }
-}
-
-/* This lets us get at the unwrapped functions so that they can correctly
- * call the lower level functions, and choose whether they will be
- * called at every level of recursion (eg in validatetree).
- */
-DRIWrappedFuncsRec *
-DRIGetWrappedFuncs(ScreenPtr pScreen)
-{
- return &(DRI_SCREEN_PRIV(pScreen)->wrap);
-}
-
-void
-DRIQueryVersion(int *majorVersion,
- int *minorVersion,
- int *patchVersion)
-{
- *majorVersion = APPLE_DRI_MAJOR_VERSION;
- *minorVersion = APPLE_DRI_MINOR_VERSION;
- *patchVersion = APPLE_DRI_PATCH_VERSION;
-}
-
-void
-DRISurfaceNotify(xp_surface_id id, int kind)
-{
- DRIDrawablePrivPtr pDRIDrawablePriv = NULL;
- DRISurfaceNotifyArg arg;
-
- arg.id = id;
- arg.kind = kind;
-
- if (surface_hash != NULL)
- {
- pDRIDrawablePriv = x_hash_table_lookup(surface_hash,
- (void *) id, NULL);
- }
-
- if (pDRIDrawablePriv == NULL)
- return;
-
- if (kind == AppleDRISurfaceNotifyDestroyed)
- {
- pDRIDrawablePriv->sid = 0;
- x_hash_table_remove(surface_hash, (void *) id);
- }
-
- x_hook_run(pDRIDrawablePriv->notifiers, &arg);
-
- if (kind == AppleDRISurfaceNotifyDestroyed)
- {
- /* Kill off the handle. */
-
- FreeResourceByType(pDRIDrawablePriv->pDraw->id,
- DRIDrawablePrivResType, FALSE);
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/dri.h b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/dri.h
deleted file mode 100644
index f826167f6..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/dri.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/dri.h,v 1.18 2001/03/21 16:21:40 dawes Exp $ */
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-Copyright (c) 2002 Apple Computer, Inc.
-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 the rights to use, copy, modify, merge, publish,
-distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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:
- * Jens Owen <jens@precisioninsight.com>
- *
- */
-
-/* Prototypes for AppleDRI functions */
-
-#ifndef _DRI_H_
-#define _DRI_H_
-
-#include <X11/Xdefs.h>
-#include "scrnintstr.h"
-#define _APPLEDRI_SERVER_
-#include "appledri.h"
-#include "Xplugin.h"
-
-typedef void (*ClipNotifyPtr)( WindowPtr, int, int );
-
-
-/*
- * These functions can be wrapped by the DRI. Each of these have
- * generic default funcs (initialized in DRICreateInfoRec) and can be
- * overridden by the driver in its [driver]DRIScreenInit function.
- */
-typedef struct {
- WindowExposuresProcPtr WindowExposures;
- CopyWindowProcPtr CopyWindow;
- ValidateTreeProcPtr ValidateTree;
- PostValidateTreeProcPtr PostValidateTree;
- ClipNotifyProcPtr ClipNotify;
-} DRIWrappedFuncsRec, *DRIWrappedFuncsPtr;
-
-typedef struct {
- xp_surface_id id;
- int kind;
-} DRISurfaceNotifyArg;
-
-extern Bool DRIScreenInit(ScreenPtr pScreen);
-
-extern Bool DRIFinishScreenInit(ScreenPtr pScreen);
-
-extern void DRICloseScreen(ScreenPtr pScreen);
-
-extern Bool DRIExtensionInit(void);
-
-extern void DRIReset(void);
-
-extern Bool DRIQueryDirectRenderingCapable(ScreenPtr pScreen,
- Bool *isCapable);
-
-extern Bool DRIAuthConnection(ScreenPtr pScreen, unsigned int magic);
-
-extern Bool DRICreateSurface(ScreenPtr pScreen,
- Drawable id,
- DrawablePtr pDrawable,
- xp_client_id client_id,
- xp_surface_id *surface_id,
- unsigned int key[2],
- void (*notify) (void *arg, void *data),
- void *notify_data);
-
-extern Bool DRIDestroySurface(ScreenPtr pScreen,
- Drawable id,
- DrawablePtr pDrawable,
- void (*notify) (void *arg, void *data),
- void *notify_data);
-
-extern Bool DRIDrawablePrivDelete(pointer pResource,
- XID id);
-
-extern DRIWrappedFuncsRec *DRIGetWrappedFuncs(ScreenPtr pScreen);
-
-extern void DRICopyWindow(WindowPtr pWin,
- DDXPointRec ptOldOrg,
- RegionPtr prgnSrc);
-
-extern int DRIValidateTree(WindowPtr pParent,
- WindowPtr pChild,
- VTKind kind);
-
-extern void DRIPostValidateTree(WindowPtr pParent,
- WindowPtr pChild,
- VTKind kind);
-
-extern void DRIClipNotify(WindowPtr pWin,
- int dx,
- int dy);
-
-extern void DRIWindowExposures(WindowPtr pWin,
- RegionPtr prgn,
- RegionPtr bsreg);
-
-extern void DRISurfaceNotify (xp_surface_id id, int kind);
-
-extern void DRIQueryVersion(int *majorVersion,
- int *minorVersion,
- int *patchVersion);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/dristruct.h b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/dristruct.h
deleted file mode 100644
index 0df8f1890..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/dristruct.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/dristruct.h,v 1.10 2001/03/21 16:21:40 dawes Exp $ */
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-Copyright (c) 2002 Apple Computer, Inc.
-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 the rights to use, copy, modify, merge, publish,
-distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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:
- * Jens Owen <jens@precisioninsight.com>
- *
- */
-
-#ifndef DRI_STRUCT_H
-#define DRI_STRUCT_H
-
-#include "dri.h"
-#include "x-list.h"
-
-#define DRI_MAX_DRAWABLES 256
-
-#define DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin) \
- ((DRIWindowPrivIndex < 0) ? \
- NULL : \
- ((DRIDrawablePrivPtr)((pWin)->devPrivates[DRIWindowPrivIndex].ptr)))
-
-#define DRI_DRAWABLE_PRIV_FROM_PIXMAP(pPix) \
- ((DRIPixmapPrivIndex < 0) ? \
- NULL : \
- ((DRIDrawablePrivPtr)((pPix)->devPrivates[DRIPixmapPrivIndex].ptr)))
-
-typedef struct _DRIDrawablePrivRec
-{
- xp_surface_id sid;
- int drawableIndex;
- DrawablePtr pDraw;
- ScreenPtr pScreen;
- int refCount;
- unsigned int key[2];
- x_list *notifiers; /* list of (FUN . DATA) */
-} DRIDrawablePrivRec, *DRIDrawablePrivPtr;
-
-#define DRI_SCREEN_PRIV(pScreen) \
- ((DRIScreenPrivIndex < 0) ? \
- NULL : \
- ((DRIScreenPrivPtr)((pScreen)->devPrivates[DRIScreenPrivIndex].ptr)))
-
-#define DRI_SCREEN_PRIV_FROM_INDEX(screenIndex) ((DRIScreenPrivPtr) \
- (screenInfo.screens[screenIndex]->devPrivates[DRIScreenPrivIndex].ptr))
-
-
-typedef struct _DRIScreenPrivRec
-{
- Bool directRenderingSupport;
- int nrWindows;
- DRIWrappedFuncsRec wrap;
- DrawablePtr DRIDrawables[DRI_MAX_DRAWABLES];
-} DRIScreenPrivRec, *DRIScreenPrivPtr;
-
-#endif /* DRI_STRUCT_H */
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hash.c b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hash.c
deleted file mode 100644
index a1c6655f7..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hash.c
+++ /dev/null
@@ -1,341 +0,0 @@
-/* x-hash.c - basic hash tables
- $Id: x-hash.c,v 1.5 2005/07/01 22:43:08 daniels Exp $
-
- Copyright (c) 2002 Apple Computer, Inc. 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 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 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 ABOVE LISTED COPYRIGHT
- HOLDER(S) 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(s) of the above
- copyright holders shall not be used in advertising or otherwise to
- promote the sale, use or other dealings in this Software without
- prior written authorization. */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-hash.c,v 1.1 2003/04/30 23:15:42 torrey Exp $ */
-
-#include "x-hash.h"
-#include "x-list.h"
-#include <stdlib.h>
-#include <assert.h>
-
-struct x_hash_table_struct {
- unsigned int bucket_index;
- unsigned int total_keys;
- x_list **buckets;
-
- x_hash_fun *hash_key;
- x_compare_fun *compare_keys;
- x_destroy_fun *destroy_key;
- x_destroy_fun *destroy_value;
-};
-
-#define ITEM_NEW(k, v) X_PFX (list_prepend) ((x_list *) (k), v)
-#define ITEM_FREE(i) X_PFX (list_free_1) (i)
-#define ITEM_KEY(i) ((void *) (i)->next)
-#define ITEM_VALUE(i) ((i)->data)
-
-#define SPLIT_THRESHOLD_FACTOR 2
-
-/* http://planetmath.org/?op=getobj&from=objects&name=GoodHashTablePrimes */
-static const unsigned int bucket_sizes[] = {
- 29, 53, 97, 193, 389, 769, 1543, 3079, 6151, 12289, 24593, 49157,
- 98317, 196613, 393241, 786433, 1572869, 3145739, 6291469, 12582917,
- 25165843, 50331653, 100663319, 201326611, 402653189, 805306457,
- 1610612741
-};
-
-#define N_BUCKET_SIZES (sizeof (bucket_sizes) / sizeof (bucket_sizes[0]))
-
-static inline unsigned int
-hash_table_total_buckets (x_hash_table *h)
-{
- return bucket_sizes[h->bucket_index];
-}
-
-static inline void
-hash_table_destroy_item (x_hash_table *h, void *k, void *v)
-{
- if (h->destroy_key != 0)
- (*h->destroy_key) (k);
-
- if (h->destroy_value != 0)
- (*h->destroy_value) (v);
-}
-
-static inline unsigned int
-hash_table_hash_key (x_hash_table *h, void *k)
-{
- if (h->hash_key != 0)
- return (*h->hash_key) (k);
- else
- return (unsigned int) k;
-}
-
-static inline int
-hash_table_compare_keys (x_hash_table *h, void *k1, void *k2)
-{
- if (h->compare_keys == 0)
- return k1 == k2;
- else
- return (*h->compare_keys) (k1, k2) == 0;
-}
-
-static void
-hash_table_split (x_hash_table *h)
-{
- x_list **new, **old;
- x_list *node, *item, *next;
- int new_size, old_size;
- unsigned int b;
- int i;
-
- if (h->bucket_index == N_BUCKET_SIZES - 1)
- return;
-
- old_size = hash_table_total_buckets (h);
- old = h->buckets;
-
- h->bucket_index++;
-
- new_size = hash_table_total_buckets (h);
- new = calloc (new_size, sizeof (x_list *));
-
- if (new == 0)
- {
- h->bucket_index--;
- return;
- }
-
- for (i = 0; i < old_size; i++)
- {
- for (node = old[i]; node != 0; node = next)
- {
- next = node->next;
- item = node->data;
-
- b = hash_table_hash_key (h, ITEM_KEY (item)) % new_size;
-
- node->next = new[b];
- new[b] = node;
- }
- }
-
- h->buckets = new;
- free (old);
-}
-
-X_EXTERN x_hash_table *
-X_PFX (hash_table_new) (x_hash_fun *hash,
- x_compare_fun *compare,
- x_destroy_fun *key_destroy,
- x_destroy_fun *value_destroy)
-{
- x_hash_table *h;
-
- h = calloc (1, sizeof (x_hash_table));
- if (h == 0)
- return 0;
-
- h->bucket_index = 0;
- h->buckets = calloc (hash_table_total_buckets (h), sizeof (x_list *));
-
- if (h->buckets == 0)
- {
- free (h);
- return 0;
- }
-
- h->hash_key = hash;
- h->compare_keys = compare;
- h->destroy_key = key_destroy;
- h->destroy_value = value_destroy;
-
- return h;
-}
-
-X_EXTERN void
-X_PFX (hash_table_free) (x_hash_table *h)
-{
- int n, i;
- x_list *node, *item;
-
- assert (h != NULL);
-
- n = hash_table_total_buckets (h);
-
- for (i = 0; i < n; i++)
- {
- for (node = h->buckets[i]; node != 0; node = node->next)
- {
- item = node->data;
- hash_table_destroy_item (h, ITEM_KEY (item), ITEM_VALUE (item));
- ITEM_FREE (item);
- }
- X_PFX (list_free) (h->buckets[i]);
- }
-
- free (h->buckets);
- free (h);
-}
-
-X_EXTERN unsigned int
-X_PFX (hash_table_size) (x_hash_table *h)
-{
- assert (h != NULL);
-
- return h->total_keys;
-}
-
-static void
-hash_table_modify (x_hash_table *h, void *k, void *v, int replace)
-{
- unsigned int hash_value;
- x_list *node, *item;
-
- assert (h != NULL);
-
- hash_value = hash_table_hash_key (h, k);
-
- for (node = h->buckets[hash_value % hash_table_total_buckets (h)];
- node != 0; node = node->next)
- {
- item = node->data;
-
- if (hash_table_compare_keys (h, ITEM_KEY (item), k))
- {
- if (replace)
- {
- hash_table_destroy_item (h, ITEM_KEY (item),
- ITEM_VALUE (item));
- item->next = k;
- ITEM_VALUE (item) = v;
- }
- else
- {
- hash_table_destroy_item (h, k, ITEM_VALUE (item));
- ITEM_VALUE (item) = v;
- }
- return;
- }
- }
-
- /* Key isn't already in the table. Insert it. */
-
- if (h->total_keys + 1
- > hash_table_total_buckets (h) * SPLIT_THRESHOLD_FACTOR)
- {
- hash_table_split (h);
- }
-
- hash_value = hash_value % hash_table_total_buckets (h);
- h->buckets[hash_value] = X_PFX (list_prepend) (h->buckets[hash_value],
- ITEM_NEW (k, v));
- h->total_keys++;
-}
-
-X_EXTERN void
-X_PFX (hash_table_insert) (x_hash_table *h, void *k, void *v)
-{
- hash_table_modify (h, k, v, 0);
-}
-
-X_EXTERN void
-X_PFX (hash_table_replace) (x_hash_table *h, void *k, void *v)
-{
- hash_table_modify (h, k, v, 1);
-}
-
-X_EXTERN void
-X_PFX (hash_table_remove) (x_hash_table *h, void *k)
-{
- unsigned int hash_value;
- x_list **ptr, *item;
-
- assert (h != NULL);
-
- hash_value = hash_table_hash_key (h, k);
-
- for (ptr = &h->buckets[hash_value % hash_table_total_buckets (h)];
- *ptr != 0; ptr = &((*ptr)->next))
- {
- item = (*ptr)->data;
-
- if (hash_table_compare_keys (h, ITEM_KEY (item), k))
- {
- hash_table_destroy_item (h, ITEM_KEY (item), ITEM_VALUE (item));
- ITEM_FREE (item);
- item = *ptr;
- *ptr = item->next;
- X_PFX (list_free_1) (item);
- h->total_keys--;
- return;
- }
- }
-}
-
-X_EXTERN void *
-X_PFX (hash_table_lookup) (x_hash_table *h, void *k, void **k_ret)
-{
- unsigned int hash_value;
- x_list *node, *item;
-
- assert (h != NULL);
-
- hash_value = hash_table_hash_key (h, k);
-
- for (node = h->buckets[hash_value % hash_table_total_buckets (h)];
- node != 0; node = node->next)
- {
- item = node->data;
-
- if (hash_table_compare_keys (h, ITEM_KEY (item), k))
- {
- if (k_ret != 0)
- *k_ret = ITEM_KEY (item);
-
- return ITEM_VALUE (item);
- }
- }
-
- if (k_ret != 0)
- *k_ret = 0;
-
- return 0;
-}
-
-X_EXTERN void
-X_PFX (hash_table_foreach) (x_hash_table *h,
- x_hash_foreach_fun *fun, void *data)
-{
- int i, n;
- x_list *node, *item;
-
- assert (h != NULL);
-
- n = hash_table_total_buckets (h);
-
- for (i = 0; i < n; i++)
- {
- for (node = h->buckets[i]; node != 0; node = node->next)
- {
- item = node->data;
- (*fun) (ITEM_KEY (item), ITEM_VALUE (item), data);
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hash.h b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hash.h
deleted file mode 100644
index 5ee069cda..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hash.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* x-hash.h -- basic hash table class
- $Id: x-hash.h,v 1.3 2005/07/01 22:43:08 daniels Exp $
-
- Copyright (c) 2002 Apple Computer, Inc. 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 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 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 ABOVE LISTED COPYRIGHT
- HOLDER(S) 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(s) of the above
- copyright holders shall not be used in advertising or otherwise to
- promote the sale, use or other dealings in this Software without
- prior written authorization. */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-hash.h,v 1.1 2003/04/30 23:15:42 torrey Exp $ */
-
-#ifndef X_HASH_H
-#define X_HASH_H 1
-
-typedef struct x_hash_table_struct x_hash_table;
-
-typedef int (x_compare_fun) (const void *a, const void *b);
-typedef unsigned int (x_hash_fun) (const void *k);
-typedef void (x_destroy_fun) (void *x);
-typedef void (x_hash_foreach_fun) (void *k, void *v, void *data);
-
-/* for X_PFX and X_EXTERN */
-#include "x-list.h"
-
-X_EXTERN x_hash_table *X_PFX (hash_table_new) (x_hash_fun *hash,
- x_compare_fun *compare,
- x_destroy_fun *key_destroy,
- x_destroy_fun *value_destroy);
-X_EXTERN void X_PFX (hash_table_free) (x_hash_table *h);
-
-X_EXTERN unsigned int X_PFX (hash_table_size) (x_hash_table *h);
-
-X_EXTERN void X_PFX (hash_table_insert) (x_hash_table *h, void *k, void *v);
-X_EXTERN void X_PFX (hash_table_replace) (x_hash_table *h, void *k, void *v);
-X_EXTERN void X_PFX (hash_table_remove) (x_hash_table *h, void *k);
-X_EXTERN void *X_PFX (hash_table_lookup) (x_hash_table *h,
- void *k, void **k_ret);
-X_EXTERN void X_PFX (hash_table_foreach) (x_hash_table *h,
- x_hash_foreach_fun *fun,
- void *data);
-
-#endif /* X_HASH_H */
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hook.c b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hook.c
deleted file mode 100644
index b4e6673eb..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hook.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/* x-hook.c
- $Id: x-hook.c,v 1.3 2005/07/01 22:43:08 daniels Exp $
-
- Copyright (c) 2003 Apple Computer, Inc. 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 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 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 ABOVE LISTED COPYRIGHT
- HOLDER(S) 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(s) of the above
- copyright holders shall not be used in advertising or otherwise to
- promote the sale, use or other dealings in this Software without
- prior written authorization. */
-/* $XFree86: $ */
-
-#include "x-hook.h"
-#include <stdlib.h>
-#include <assert.h>
-
-#define CELL_NEW(f,d) X_PFX (list_prepend) ((x_list *) (f), (d))
-#define CELL_FREE(c) X_PFX (list_free_1) (c)
-#define CELL_FUN(c) ((x_hook_function *) ((c)->next))
-#define CELL_DATA(c) ((c)->data)
-
-X_EXTERN x_list *
-X_PFX (hook_add) (x_list *lst, x_hook_function *fun, void *data)
-{
- return X_PFX (list_prepend) (lst, CELL_NEW (fun, data));
-}
-
-X_EXTERN x_list *
-X_PFX (hook_remove) (x_list *lst, x_hook_function *fun, void *data)
-{
- x_list *node, *cell;
- x_list *to_delete = NULL;
-
- for (node = lst; node != NULL; node = node->next)
- {
- cell = node->data;
- if (CELL_FUN (cell) == fun && CELL_DATA (cell) == data)
- to_delete = X_PFX (list_prepend) (to_delete, cell);
- }
-
- for (node = to_delete; node != NULL; node = node->next)
- {
- cell = node->data;
- lst = X_PFX (list_remove) (lst, cell);
- CELL_FREE (cell);
- }
-
- X_PFX (list_free) (to_delete);
-}
-
-X_EXTERN void
-X_PFX (hook_run) (x_list *lst, void *arg)
-{
- x_list *node, *cell;
- x_hook_function **fun;
- void **data;
- int length, i;
-
- length = X_PFX (list_length) (lst);
- fun = alloca (sizeof (x_hook_function *) * length);
- data = alloca (sizeof (void *) * length);
-
- for (i = 0, node = lst; node != NULL; node = node->next, i++)
- {
- cell = node->data;
- fun[i] = CELL_FUN (cell);
- data[i] = CELL_DATA (cell);
- }
-
- for (i = 0; i < length; i++)
- {
- (*fun[i]) (arg, data[i]);
- }
-}
-
-X_EXTERN void
-X_PFX (hook_free) (x_list *lst)
-{
- x_list *node;
-
- for (node = lst; node != NULL; node = node->next)
- {
- CELL_FREE (node->data);
- }
-
- X_PFX (list_free) (lst);
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hook.h b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hook.h
deleted file mode 100644
index 08b29a94e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-hook.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* x-hook.h -- lists of function,data pairs to call.
- $Id: x-hook.h,v 1.3 2005/07/01 22:43:08 daniels Exp $
-
- Copyright (c) 2003 Apple Computer, Inc. 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 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 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 ABOVE LISTED COPYRIGHT
- HOLDER(S) 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(s) of the above
- copyright holders shall not be used in advertising or otherwise to
- promote the sale, use or other dealings in this Software without
- prior written authorization. */
-/* $XFree86: $ */
-
-#ifndef X_HOOK_H
-#define X_HOOK_H 1
-
-#include "x-list.h"
-
-typedef void x_hook_function (void *arg, void *data);
-
-X_EXTERN x_list *X_PFX (hook_add) (x_list *lst, x_hook_function *fun, void *data);
-X_EXTERN x_list *X_PFX (hook_remove) (x_list *lst, x_hook_function *fun, void *data);
-X_EXTERN void X_PFX (hook_run) (x_list *lst, void *arg);
-X_EXTERN void X_PFX (hook_free) (x_list *lst);
-
-#endif /* X_HOOK_H */
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-list.c b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-list.c
deleted file mode 100644
index fdadee212..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-list.c
+++ /dev/null
@@ -1,335 +0,0 @@
-/* x-list.c
- $Id: x-list.c,v 1.4 2005/07/01 22:43:08 daniels Exp $
-
- Copyright (c) 2002 Apple Computer, Inc. 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 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 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 ABOVE LISTED COPYRIGHT
- HOLDER(S) 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(s) of the above
- copyright holders shall not be used in advertising or otherwise to
- promote the sale, use or other dealings in this Software without
- prior written authorization. */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-list.c,v 1.1 2003/04/30 23:15:42 torrey Exp $ */
-
-#include "x-list.h"
-#include <stdlib.h>
-#include <assert.h>
-#include <pthread.h>
-
-/* Allocate in ~4k blocks */
-#define NODES_PER_BLOCK 508
-
-typedef struct x_list_block_struct x_list_block;
-
-struct x_list_block_struct {
- x_list l[NODES_PER_BLOCK];
-};
-
-static x_list *freelist;
-
-static pthread_mutex_t freelist_lock = PTHREAD_MUTEX_INITIALIZER;
-
-static inline void
-list_free_1 (x_list *node)
-{
- node->next = freelist;
- freelist = node;
-}
-
-X_EXTERN void
-X_PFX (list_free_1) (x_list *node)
-{
- assert (node != NULL);
-
- pthread_mutex_lock (&freelist_lock);
-
- list_free_1 (node);
-
- pthread_mutex_unlock (&freelist_lock);
-}
-
-X_EXTERN void
-X_PFX (list_free) (x_list *lst)
-{
- x_list *next;
-
- pthread_mutex_lock (&freelist_lock);
-
- for (; lst != NULL; lst = next)
- {
- next = lst->next;
- list_free_1 (lst);
- }
-
- pthread_mutex_unlock (&freelist_lock);
-}
-
-X_EXTERN x_list *
-X_PFX (list_prepend) (x_list *lst, void *data)
-{
- x_list *node;
-
- pthread_mutex_lock (&freelist_lock);
-
- if (freelist == NULL)
- {
- x_list_block *b;
- int i;
-
- b = malloc (sizeof (x_list_block));
-
- for (i = 0; i < NODES_PER_BLOCK - 1; i++)
- b->l[i].next = &(b->l[i+1]);
- b->l[i].next = NULL;
-
- freelist = b->l;
- }
-
- node = freelist;
- freelist = node->next;
-
- pthread_mutex_unlock (&freelist_lock);
-
- node->next = lst;
- node->data = data;
-
- return node;
-}
-
-X_EXTERN x_list *
-X_PFX (list_append) (x_list *lst, void *data)
-{
- x_list *head = lst;
-
- if (lst == NULL)
- return X_PFX (list_prepend) (NULL, data);
-
- while (lst->next != NULL)
- lst = lst->next;
-
- lst->next = X_PFX (list_prepend) (NULL, data);
-
- return head;
-}
-
-X_EXTERN x_list *
-X_PFX (list_reverse) (x_list *lst)
-{
- x_list *head = NULL, *next;
-
- while (lst != NULL)
- {
- next = lst->next;
- lst->next = head;
- head = lst;
- lst = next;
- }
-
- return head;
-}
-
-X_EXTERN x_list *
-X_PFX (list_find) (x_list *lst, void *data)
-{
- for (; lst != NULL; lst = lst->next)
- {
- if (lst->data == data)
- return lst;
- }
-
- return NULL;
-}
-
-X_EXTERN x_list *
-X_PFX (list_nth) (x_list *lst, int n)
-{
- while (n-- > 0 && lst != NULL)
- lst = lst->next;
-
- return lst;
-}
-
-X_EXTERN x_list *
-X_PFX (list_pop) (x_list *lst, void **data_ret)
-{
- void *data = NULL;
-
- if (lst != NULL)
- {
- x_list *tem = lst;
- data = lst->data;
- lst = lst->next;
- X_PFX (list_free_1) (tem);
- }
-
- if (data_ret != NULL)
- *data_ret = data;
-
- return lst;
-}
-
-X_EXTERN x_list *
-X_PFX (list_filter) (x_list *lst,
- int (*pred) (void *item, void *data), void *data)
-{
- x_list *ret = NULL, *node;
-
- for (node = lst; node != NULL; node = node->next)
- {
- if ((*pred) (node->data, data))
- ret = X_PFX (list_prepend) (ret, node->data);
- }
-
- return X_PFX (list_reverse) (ret);
-}
-
-X_EXTERN x_list *
-X_PFX (list_map) (x_list *lst,
- void *(*fun) (void *item, void *data), void *data)
-{
- x_list *ret = NULL, *node;
-
- for (node = lst; node != NULL; node = node->next)
- {
- X_PFX (list_prepend) (ret, fun (node->data, data));
- }
-
- return X_PFX (list_reverse) (ret);
-}
-
-X_EXTERN x_list *
-X_PFX (list_copy) (x_list *lst)
-{
- x_list *copy = NULL;
-
- for (; lst != NULL; lst = lst->next)
- {
- copy = X_PFX (list_prepend) (copy, lst->data);
- }
-
- return X_PFX (list_reverse) (copy);
-}
-
-X_EXTERN x_list *
-X_PFX (list_remove) (x_list *lst, void *data)
-{
- x_list **ptr, *node;
-
- for (ptr = &lst; *ptr != NULL;)
- {
- node = *ptr;
-
- if (node->data == data)
- {
- *ptr = node->next;
- X_PFX (list_free_1) (node);
- }
- else
- ptr = &((*ptr)->next);
- }
-
- return lst;
-}
-
-X_EXTERN unsigned int
-X_PFX (list_length) (x_list *lst)
-{
- unsigned int n;
-
- n = 0;
- for (; lst != NULL; lst = lst->next)
- n++;
-
- return n;
-}
-
-X_EXTERN void
-X_PFX (list_foreach) (x_list *lst,
- void (*fun) (void *data, void *user_data),
- void *user_data)
-{
- for (; lst != NULL; lst = lst->next)
- {
- (*fun) (lst->data, user_data);
- }
-}
-
-static x_list *
-list_sort_1 (x_list *lst, int length,
- int (*less) (const void *, const void *))
-{
- x_list *mid, *ptr;
- x_list *out_head, *out;
- int mid_point, i;
-
- /* This is a standard (stable) list merge sort */
-
- if (length < 2)
- return lst;
-
- /* Calculate the halfway point. Split the list into two sub-lists. */
-
- mid_point = length / 2;
- ptr = lst;
- for (i = mid_point - 1; i > 0; i--)
- ptr = ptr->next;
- mid = ptr->next;
- ptr->next = NULL;
-
- /* Sort each sub-list. */
-
- lst = list_sort_1 (lst, mid_point, less);
- mid = list_sort_1 (mid, length - mid_point, less);
-
- /* Then merge them back together. */
-
- assert (lst != NULL && mid != NULL);
-
- if ((*less) (mid->data, lst->data))
- out = out_head = mid, mid = mid->next;
- else
- out = out_head = lst, lst = lst->next;
-
- while (lst != NULL && mid != NULL)
- {
- if ((*less) (mid->data, lst->data))
- out = out->next = mid, mid = mid->next;
- else
- out = out->next = lst, lst = lst->next;
- }
-
- if (lst != NULL)
- out->next = lst;
- else
- out->next = mid;
-
- return out_head;
-}
-
-X_EXTERN x_list *
-X_PFX (list_sort) (x_list *lst, int (*less) (const void *, const void *))
-{
- int length;
-
- length = X_PFX (list_length) (lst);
-
- return list_sort_1 (lst, length, less);
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-list.h b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-list.h
deleted file mode 100644
index 8da37a91b..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/x-list.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* x-list.h -- simple list type
- $Id: x-list.h,v 1.4 2005/07/01 22:43:08 daniels Exp $
-
- Copyright (c) 2002 Apple Computer, Inc. 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 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 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 ABOVE LISTED COPYRIGHT
- HOLDER(S) 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(s) of the above
- copyright holders shall not be used in advertising or otherwise to
- promote the sale, use or other dealings in this Software without
- prior written authorization. */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-list.h,v 1.1 2003/04/30 23:15:42 torrey Exp $ */
-
-#ifndef X_LIST_H
-#define X_LIST_H 1
-
-/* This is just a cons. */
-
-typedef struct x_list_struct x_list;
-
-struct x_list_struct {
- void *data;
- x_list *next;
-};
-
-#ifndef X_PFX
-# define X_PFX(x) x_ ## x
-#endif
-
-#ifndef X_EXTERN
-# define X_EXTERN __private_extern__
-#endif
-
-X_EXTERN void X_PFX (list_free_1) (x_list *node);
-X_EXTERN x_list *X_PFX (list_prepend) (x_list *lst, void *data);
-
-X_EXTERN x_list *X_PFX (list_append) (x_list *lst, void *data);
-X_EXTERN x_list *X_PFX (list_remove) (x_list *lst, void *data);
-X_EXTERN void X_PFX (list_free) (x_list *lst);
-X_EXTERN x_list *X_PFX (list_pop) (x_list *lst, void **data_ret);
-
-X_EXTERN x_list *X_PFX (list_copy) (x_list *lst);
-X_EXTERN x_list *X_PFX (list_reverse) (x_list *lst);
-X_EXTERN x_list *X_PFX (list_find) (x_list *lst, void *data);
-X_EXTERN x_list *X_PFX (list_nth) (x_list *lst, int n);
-X_EXTERN x_list *X_PFX (list_filter) (x_list *src,
- int (*pred) (void *item, void *data),
- void *data);
-X_EXTERN x_list *X_PFX (list_map) (x_list *src,
- void *(*fun) (void *item, void *data),
- void *data);
-
-X_EXTERN unsigned int X_PFX (list_length) (x_list *lst);
-X_EXTERN void X_PFX (list_foreach) (x_list *lst, void (*fun)
- (void *data, void *user_data),
- void *user_data);
-
-X_EXTERN x_list *X_PFX (list_sort) (x_list *lst, int (*less) (const void *,
- const void *));
-
-#endif /* X_LIST_H */
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xpr.h b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xpr.h
deleted file mode 100644
index ac7e74f08..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xpr.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Xplugin rootless implementation
- */
-/*
- * Copyright (c) 2003 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/xpr/xpr.h,v 1.3 2005/07/01 22:43:08 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xpr.h,v 1.4 2003/11/12 20:21:52 torrey Exp $ */
-
-#ifndef XPR_H
-#define XPR_H
-
-#include "screenint.h"
-
-extern Bool QuartzModeBundleInit(void);
-
-void AppleDRIExtensionInit(void);
-void xprAppleWMInit(void);
-Bool xprInit(ScreenPtr pScreen);
-Bool xprIsX11Window(void *nsWindow, int windowNumber);
-void xprHideWindows(Bool hide);
-
-Bool QuartzInitCursor(ScreenPtr pScreen);
-void QuartzSuspendXCursor(ScreenPtr pScreen);
-void QuartzResumeXCursor(ScreenPtr pScreen, int x, int y);
-
-#endif /* XPR_H */
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprAppleWM.c b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprAppleWM.c
deleted file mode 100644
index 2db6a2432..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprAppleWM.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Xplugin rootless implementation functions for AppleWM extension
- */
-/*
- * Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
- * Copyright (c) 2003 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c,v 1.2 2003/06/30 01:45:13 torrey Exp $ */
-
-#include "xpr.h"
-#include "applewmExt.h"
-#include "rootless.h"
-#include "Xplugin.h"
-#include <X11/X.h>
-
-
-static int xprSetWindowLevel(
- WindowPtr pWin,
- int level)
-{
- xp_window_id wid;
- xp_window_changes wc;
-
- wid = (xp_window_id) RootlessFrameForWindow (pWin, TRUE);
- if (wid == 0)
- return BadWindow;
-
- RootlessStopDrawing (pWin, FALSE);
-
- wc.window_level = level;
- if (xp_configure_window (wid, XP_WINDOW_LEVEL, &wc) != Success) {
- return BadValue;
- }
-
- return Success;
-}
-
-
-static int xprFrameDraw(
- WindowPtr pWin,
- int class,
- unsigned int attr,
- const BoxRec *outer,
- const BoxRec *inner,
- unsigned int title_len,
- const unsigned char *title_bytes)
-{
- xp_window_id wid;
-
- wid = (xp_window_id) RootlessFrameForWindow (pWin, FALSE);
- if (wid == 0)
- return BadWindow;
-
- if (xp_frame_draw (wid, class, attr, outer, inner,
- title_len, title_bytes) != Success)
- {
- return BadValue;
- }
-
- return Success;
-}
-
-
-static AppleWMProcsRec xprAppleWMProcs = {
- xp_disable_update,
- xp_reenable_update,
- xprSetWindowLevel,
- xp_frame_get_rect,
- xp_frame_hit_test,
- xprFrameDraw
-};
-
-
-void xprAppleWMInit(void)
-{
- AppleWMExtensionInit(&xprAppleWMProcs);
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprCursor.c b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprCursor.c
deleted file mode 100644
index ee06043df..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprCursor.c
+++ /dev/null
@@ -1,420 +0,0 @@
-/**************************************************************
- *
- * Xplugin cursor support
- *
- **************************************************************/
-/*
- * Copyright (c) 2001 Torrey T. Lyons and Greg Parker.
- * Copyright (c) 2002 Apple Computer, Inc.
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprCursor.c,v 1.1 2003/04/30 23:15:42 torrey Exp $ */
-
-#include "quartzCommon.h"
-#include "xpr.h"
-#include "darwin.h"
-#include "Xplugin.h"
-
-#include "mi.h"
-#include "scrnintstr.h"
-#include "cursorstr.h"
-#include "mipointrst.h"
-#include "windowstr.h"
-#include "globals.h"
-#include "servermd.h"
-#include "dixevents.h"
-
-typedef struct {
- int cursorVisible;
- QueryBestSizeProcPtr QueryBestSize;
- miPointerSpriteFuncPtr spriteFuncs;
-} QuartzCursorScreenRec, *QuartzCursorScreenPtr;
-
-static int darwinCursorScreenIndex = -1;
-static unsigned long darwinCursorGeneration = 0;
-
-#define CURSOR_PRIV(pScreen) \
- ((QuartzCursorScreenPtr)pScreen->devPrivates[darwinCursorScreenIndex].ptr)
-
-
-static Bool
-load_cursor(CursorPtr src, int screen)
-{
- uint32_t *data;
- uint32_t rowbytes;
- int width, height;
- int hot_x, hot_y;
-
- uint32_t fg_color, bg_color;
- uint8_t *srow, *sptr;
- uint8_t *mrow, *mptr;
- uint32_t *drow, *dptr;
- unsigned xcount, ycount;
-
- xp_error err;
-
- width = src->bits->width;
- height = src->bits->height;
- hot_x = src->bits->xhot;
- hot_y = src->bits->yhot;
-
-#ifdef ARGB_CURSOR
- if (src->bits->argb != NULL)
- {
- rowbytes = src->bits->width * sizeof(CARD32);
- data = (uint32_t *) src->bits->argb;
- }
- else
-#endif
- {
- fg_color = 0xFF00 | (src->foreRed >> 8);
- fg_color <<= 16;
- fg_color |= src->foreGreen & 0xFF00;
- fg_color |= src->foreBlue >> 8;
-
- bg_color = 0xFF00 | (src->backRed >> 8);
- bg_color <<= 16;
- bg_color |= src->backGreen & 0xFF00;
- bg_color |= src->backBlue >> 8;
-
- fg_color = htonl(fg_color);
- bg_color = htonl(bg_color);
-
- /* round up to 8 pixel boundary so we can convert whole bytes */
- rowbytes = ((src->bits->width * 4) + 31) & ~31;
- data = alloca(rowbytes * src->bits->height);
-
- if (!src->bits->emptyMask)
- {
- ycount = src->bits->height;
- srow = src->bits->source; mrow = src->bits->mask;
- drow = data;
-
- while (ycount-- > 0)
- {
- xcount = (src->bits->width + 7) / 8;
- sptr = srow; mptr = mrow;
- dptr = drow;
-
- while (xcount-- > 0)
- {
- uint8_t s, m;
- int i;
-
- s = *sptr++; m = *mptr++;
- for (i = 0; i < 8; i++)
- {
-#if BITMAP_BIT_ORDER == MSBFirst
- if (m & 128)
- *dptr++ = (s & 128) ? fg_color : bg_color;
- else
- *dptr++ = 0;
- s <<= 1; m <<= 1;
-#else
- if (m & 1)
- *dptr++ = (s & 1) ? fg_color : bg_color;
- else
- *dptr++ = 0;
- s >>= 1; m >>= 1;
-#endif
- }
- }
-
- srow += BitmapBytePad(src->bits->width);
- mrow += BitmapBytePad(src->bits->width);
- drow = (uint32_t *) ((char *) drow + rowbytes);
- }
- }
- else
- {
- memset(data, 0, src->bits->height * rowbytes);
- }
- }
-
- err = xp_set_cursor(width, height, hot_x, hot_y, data, rowbytes);
- return err == Success;
-}
-
-
-/*
-===========================================================================
-
- Pointer sprite functions
-
-===========================================================================
-*/
-
-/*
- * QuartzRealizeCursor
- * Convert the X cursor representation to native format if possible.
- */
-static Bool
-QuartzRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
-{
- if(pCursor == NULL || pCursor->bits == NULL)
- return FALSE;
-
- /* FIXME: cache ARGB8888 representation? */
-
- return TRUE;
-}
-
-
-/*
- * QuartzUnrealizeCursor
- * Free the storage space associated with a realized cursor.
- */
-static Bool
-QuartzUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
-{
- return TRUE;
-}
-
-
-/*
- * QuartzSetCursor
- * Set the cursor sprite and position.
- */
-static void
-QuartzSetCursor(ScreenPtr pScreen, CursorPtr pCursor, int x, int y)
-{
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- if (!quartzServerVisible)
- return;
-
- if (pCursor == NULL)
- {
- if (ScreenPriv->cursorVisible)
- {
- xp_hide_cursor();
- ScreenPriv->cursorVisible = FALSE;
- }
- }
- else
- {
- load_cursor(pCursor, pScreen->myNum);
-
- if (!ScreenPriv->cursorVisible)
- {
- xp_show_cursor();
- ScreenPriv->cursorVisible = TRUE;
- }
- }
-}
-
-
-/*
- * QuartzMoveCursor
- * Move the cursor. This is a noop for us.
- */
-static void
-QuartzMoveCursor(ScreenPtr pScreen, int x, int y)
-{
-}
-
-
-static miPointerSpriteFuncRec quartzSpriteFuncsRec = {
- QuartzRealizeCursor,
- QuartzUnrealizeCursor,
- QuartzSetCursor,
- QuartzMoveCursor
-};
-
-
-/*
-===========================================================================
-
- Pointer screen functions
-
-===========================================================================
-*/
-
-/*
- * QuartzCursorOffScreen
- */
-static Bool
-QuartzCursorOffScreen(ScreenPtr *pScreen, int *x, int *y)
-{
- return FALSE;
-}
-
-
-/*
- * QuartzCrossScreen
- */
-static void
-QuartzCrossScreen(ScreenPtr pScreen, Bool entering)
-{
- return;
-}
-
-
-/*
- * QuartzWarpCursor
- * Change the cursor position without generating an event or motion history.
- * The input coordinates (x,y) are in pScreen-local X11 coordinates.
- *
- */
-static void
-QuartzWarpCursor(ScreenPtr pScreen, int x, int y)
-{
- static Bool neverMoved = TRUE;
-
- if (neverMoved)
- {
- /* Don't move the cursor the first time. This is the
- jump-to-center initialization, and it's annoying. */
- neverMoved = FALSE;
- return;
- }
-
- if (quartzServerVisible)
- {
- int sx, sy;
-
- sx = dixScreenOrigins[pScreen->myNum].x + darwinMainScreenX;
- sy = dixScreenOrigins[pScreen->myNum].y + darwinMainScreenY;
-
- CGWarpMouseCursorPosition(CGPointMake(sx + x, sy + y));
- }
-
- miPointerWarpCursor(pScreen, x, y);
- miPointerUpdate();
-}
-
-
-static miPointerScreenFuncRec quartzScreenFuncsRec = {
- QuartzCursorOffScreen,
- QuartzCrossScreen,
- QuartzWarpCursor,
- DarwinEQPointerPost,
- DarwinEQSwitchScreen
-};
-
-
-/*
-===========================================================================
-
- Other screen functions
-
-===========================================================================
-*/
-
-/*
- * QuartzCursorQueryBestSize
- * Handle queries for best cursor size
- */
-static void
-QuartzCursorQueryBestSize(int class, unsigned short *width,
- unsigned short *height, ScreenPtr pScreen)
-{
- QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
-
- if (class == CursorShape)
- {
- /* FIXME: query window server? */
- *width = 32;
- *height = 32;
- }
- else
- {
- (*ScreenPriv->QueryBestSize)(class, width, height, pScreen);
- }
-}
-
-/*
- * QuartzInitCursor
- * Initialize cursor support
- */
-Bool
-QuartzInitCursor(ScreenPtr pScreen)
-{
- QuartzCursorScreenPtr ScreenPriv;
- miPointerScreenPtr PointPriv;
-
- /* initialize software cursor handling (always needed as backup) */
- if (!miDCInitialize(pScreen, &quartzScreenFuncsRec))
- return FALSE;
-
- /* allocate private storage for this screen's QuickDraw cursor info */
- if (darwinCursorGeneration != serverGeneration)
- {
- if ((darwinCursorScreenIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
-
- darwinCursorGeneration = serverGeneration;
- }
-
- ScreenPriv = xcalloc(1, sizeof(QuartzCursorScreenRec));
- if (ScreenPriv == NULL)
- return FALSE;
-
- CURSOR_PRIV(pScreen) = ScreenPriv;
-
- /* override some screen procedures */
- ScreenPriv->QueryBestSize = pScreen->QueryBestSize;
- pScreen->QueryBestSize = QuartzCursorQueryBestSize;
-
- PointPriv = (miPointerScreenPtr) pScreen->devPrivates[miPointerScreenIndex].ptr;
-
- ScreenPriv->spriteFuncs = PointPriv->spriteFuncs;
- PointPriv->spriteFuncs = &quartzSpriteFuncsRec;
-
- ScreenPriv->cursorVisible = TRUE;
- return TRUE;
-}
-
-
-/*
- * QuartzSuspendXCursor
- * X server is hiding. Restore the Aqua cursor.
- */
-void
-QuartzSuspendXCursor(ScreenPtr pScreen)
-{
-}
-
-
-/*
- * QuartzResumeXCursor
- * X server is showing. Restore the X cursor.
- */
-void
-QuartzResumeXCursor(ScreenPtr pScreen, int x, int y)
-{
- WindowPtr pWin;
- CursorPtr pCursor;
-
- pWin = GetSpriteWindow();
- if (pWin->drawable.pScreen != pScreen)
- return;
-
- pCursor = GetSpriteCursor();
- if (pCursor == NULL)
- return;
-
- QuartzSetCursor(pScreen, pCursor, x, y);
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c
deleted file mode 100644
index 7836091f6..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
- * Xplugin rootless implementation frame functions
- */
-/*
- * Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
- * Copyright (c) 2003 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c,v 1.5 2005/07/01 22:43:08 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c,v 1.4 2003/11/12 20:21:52 torrey Exp $ */
-
-#include "xpr.h"
-#include "rootlessCommon.h"
-#include "Xplugin.h"
-#include "x-hash.h"
-#include "x-list.h"
-#include "applewmExt.h"
-
-#include "propertyst.h"
-#include "dix.h"
-#include <X11/Xatom.h>
-#include "windowstr.h"
-
-#include <pthread.h>
-
-#define DEFINE_ATOM_HELPER(func,atom_name) \
-static Atom func (void) { \
- static int generation; \
- static Atom atom; \
- if (generation != serverGeneration) { \
- generation = serverGeneration; \
- atom = MakeAtom (atom_name, strlen (atom_name), TRUE); \
- } \
- return atom; \
-}
-
-DEFINE_ATOM_HELPER(xa_native_window_id, "_NATIVE_WINDOW_ID")
-
-/* Maps xp_window_id -> RootlessWindowRec */
-static x_hash_table *window_hash;
-static pthread_mutex_t window_hash_mutex;
-
-static Bool no_configure_window;
-
-
-static inline xp_error
-xprConfigureWindow(xp_window_id id, unsigned int mask,
- const xp_window_changes *values)
-{
- if (!no_configure_window)
- return xp_configure_window(id, mask, values);
- else
- return XP_Success;
-}
-
-
-static void
-xprSetNativeProperty(RootlessWindowPtr pFrame)
-{
- xp_error err;
- unsigned int native_id;
- long data;
-
- err = xp_get_native_window((xp_window_id) pFrame->wid, &native_id);
- if (err == Success)
- {
- /* FIXME: move this to AppleWM extension */
-
- data = native_id;
- ChangeWindowProperty(pFrame->win, xa_native_window_id(),
- XA_INTEGER, 32, PropModeReplace, 1, &data, TRUE);
- }
-}
-
-
-/*
- * Create and display a new frame.
- */
-Bool
-xprCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen,
- int newX, int newY, RegionPtr pShape)
-{
- WindowPtr pWin = pFrame->win;
- xp_window_changes wc;
- unsigned int mask = 0;
- xp_error err;
-
- wc.x = newX;
- wc.y = newY;
- wc.width = pFrame->width;
- wc.height = pFrame->height;
- wc.bit_gravity = XP_GRAVITY_NONE;
- mask |= XP_BOUNDS;
-
- if (pWin->drawable.depth == 8)
- {
- wc.depth = XP_DEPTH_INDEX8;
-#if 0
- wc.colormap = xprColormapCallback;
- wc.colormap_data = pScreen;
- mask |= XP_COLORMAP;
-#endif
- }
- else if (pWin->drawable.depth == 15)
- wc.depth = XP_DEPTH_RGB555;
- else if (pWin->drawable.depth == 24)
- wc.depth = XP_DEPTH_ARGB8888;
- else
- wc.depth = XP_DEPTH_NIL;
- mask |= XP_DEPTH;
-
- if (pShape != NULL)
- {
- wc.shape_nrects = REGION_NUM_RECTS(pShape);
- wc.shape_rects = REGION_RECTS(pShape);
- wc.shape_tx = wc.shape_ty = 0;
- mask |= XP_SHAPE;
- }
-
- err = xp_create_window(mask, &wc, (xp_window_id *) &pFrame->wid);
-
- if (err != Success)
- {
- return FALSE;
- }
-
- if (window_hash == NULL)
- {
- window_hash = x_hash_table_new(NULL, NULL, NULL, NULL);
- pthread_mutex_init(&window_hash_mutex, NULL);
- }
-
- pthread_mutex_lock(&window_hash_mutex);
- x_hash_table_insert(window_hash, pFrame->wid, pFrame);
- pthread_mutex_unlock(&window_hash_mutex);
-
- xprSetNativeProperty(pFrame);
-
- return TRUE;
-}
-
-
-/*
- * Destroy a frame.
- */
-void
-xprDestroyFrame(RootlessFrameID wid)
-{
- pthread_mutex_lock(&window_hash_mutex);
- x_hash_table_remove(window_hash, wid);
- pthread_mutex_unlock(&window_hash_mutex);
-
- xp_destroy_window((xp_window_id) wid);
-}
-
-
-/*
- * Move a frame on screen.
- */
-void
-xprMoveFrame(RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY)
-{
- xp_window_changes wc;
-
- wc.x = newX;
- wc.y = newY;
-
- xprConfigureWindow((xp_window_id) wid, XP_ORIGIN, &wc);
-}
-
-
-/*
- * Resize and move a frame.
- */
-void
-xprResizeFrame(RootlessFrameID wid, ScreenPtr pScreen,
- int newX, int newY, unsigned int newW, unsigned int newH,
- unsigned int gravity)
-{
- xp_window_changes wc;
-
- wc.x = newX;
- wc.y = newY;
- wc.width = newW;
- wc.height = newH;
- wc.bit_gravity = gravity;
-
- /* It's unlikely that being async will save us anything here.
- But it can't hurt. */
-
- xprConfigureWindow((xp_window_id) wid, XP_BOUNDS, &wc);
-}
-
-
-/*
- * Change frame stacking.
- */
-void
-xprRestackFrame(RootlessFrameID wid, RootlessFrameID nextWid)
-{
- xp_window_changes wc;
-
- /* Stack frame below nextWid it if it exists, or raise
- frame above everything otherwise. */
-
- if (nextWid == NULL)
- {
- wc.stack_mode = XP_MAPPED_ABOVE;
- wc.sibling = 0;
- }
- else
- {
- wc.stack_mode = XP_MAPPED_BELOW;
- wc.sibling = (xp_window_id) nextWid;
- }
-
- xprConfigureWindow((xp_window_id) wid, XP_STACKING, &wc);
-}
-
-
-/*
- * Change the frame's shape.
- */
-void
-xprReshapeFrame(RootlessFrameID wid, RegionPtr pShape)
-{
- xp_window_changes wc;
-
- if (pShape != NULL)
- {
- wc.shape_nrects = REGION_NUM_RECTS(pShape);
- wc.shape_rects = REGION_RECTS(pShape);
- }
- else
- {
- wc.shape_nrects = -1;
- wc.shape_rects = NULL;
- }
-
- wc.shape_tx = wc.shape_ty = 0;
-
- xprConfigureWindow((xp_window_id) wid, XP_SHAPE, &wc);
-}
-
-
-/*
- * Unmap a frame.
- */
-void
-xprUnmapFrame(RootlessFrameID wid)
-{
- xp_window_changes wc;
-
- wc.stack_mode = XP_UNMAPPED;
- wc.sibling = 0;
-
- xprConfigureWindow((xp_window_id) wid, XP_STACKING, &wc);
-}
-
-
-/*
- * Start drawing to a frame.
- * Prepare for direct access to its backing buffer.
- */
-void
-xprStartDrawing(RootlessFrameID wid, char **pixelData, int *bytesPerRow)
-{
- void *data[2];
- unsigned int rowbytes[2];
- xp_error err;
-
- err = xp_lock_window((xp_window_id) wid, NULL, NULL, data, rowbytes, NULL);
- if (err != Success)
- FatalError("Could not lock window %i for drawing.", (int) wid);
-
- *pixelData = data[0];
- *bytesPerRow = rowbytes[0];
-}
-
-
-/*
- * Stop drawing to a frame.
- */
-void
-xprStopDrawing(RootlessFrameID wid, Bool flush)
-{
- xp_unlock_window((xp_window_id) wid, flush);
-}
-
-
-/*
- * Flush drawing updates to the screen.
- */
-void
-xprUpdateRegion(RootlessFrameID wid, RegionPtr pDamage)
-{
- xp_flush_window((xp_window_id) wid);
-}
-
-
-/*
- * Mark damaged rectangles as requiring redisplay to screen.
- */
-void
-xprDamageRects(RootlessFrameID wid, int nrects, const BoxRec *rects,
- int shift_x, int shift_y)
-{
- xp_mark_window((xp_window_id) wid, nrects, rects, shift_x, shift_y);
-}
-
-
-/*
- * Called after the window associated with a frame has been switched
- * to a new top-level parent.
- */
-void
-xprSwitchWindow(RootlessWindowPtr pFrame, WindowPtr oldWin)
-{
- DeleteProperty(oldWin, xa_native_window_id());
-
- xprSetNativeProperty(pFrame);
-}
-
-
-/*
- * Called to check if the frame should be reordered when it is restacked.
- */
-Bool xprDoReorderWindow(RootlessWindowPtr pFrame)
-{
- WindowPtr pWin = pFrame->win;
-
- return AppleWMDoReorderWindow(pWin);
-}
-
-
-/*
- * Copy area in frame to another part of frame.
- * Used to accelerate scrolling.
- */
-void
-xprCopyWindow(RootlessFrameID wid, int dstNrects, const BoxRec *dstRects,
- int dx, int dy)
-{
- xp_copy_window((xp_window_id) wid, (xp_window_id) wid,
- dstNrects, dstRects, dx, dy);
-}
-
-
-static RootlessFrameProcsRec xprRootlessProcs = {
- xprCreateFrame,
- xprDestroyFrame,
- xprMoveFrame,
- xprResizeFrame,
- xprRestackFrame,
- xprReshapeFrame,
- xprUnmapFrame,
- xprStartDrawing,
- xprStopDrawing,
- xprUpdateRegion,
- xprDamageRects,
- xprSwitchWindow,
- xprDoReorderWindow,
- xp_copy_bytes,
- xp_fill_bytes,
- xp_composite_pixels,
- xprCopyWindow
-};
-
-
-/*
- * Initialize XPR implementation
- */
-Bool
-xprInit(ScreenPtr pScreen)
-{
- RootlessInit(pScreen, &xprRootlessProcs);
-
- rootless_CopyBytes_threshold = xp_copy_bytes_threshold;
- rootless_FillBytes_threshold = xp_fill_bytes_threshold;
- rootless_CompositePixels_threshold = xp_composite_area_threshold;
- rootless_CopyWindow_threshold = xp_scroll_area_threshold;
-
- no_configure_window = FALSE;
-
- return TRUE;
-}
-
-
-/*
- * Given the id of a physical window, try to find the top-level (or root)
- * X window that it represents.
- */
-static WindowPtr
-xprGetXWindow(xp_window_id wid)
-{
- RootlessWindowRec *winRec;
-
- if (window_hash == NULL)
- return NULL;
-
- winRec = x_hash_table_lookup(window_hash, (void *) wid, NULL);
-
- return winRec != NULL ? winRec->win : NULL;
-}
-
-
-/*
- * The windowNumber is an AppKit window number. Returns TRUE if xpr is
- * displaying a window with that number.
- */
-Bool
-xprIsX11Window(void *nsWindow, int windowNumber)
-{
- Bool ret;
- xp_window_id wid;
-
- if (window_hash == NULL)
- return FALSE;
-
- /* need to lock, since this function can be called by any thread */
-
- pthread_mutex_lock(&window_hash_mutex);
-
- if (xp_lookup_native_window(windowNumber, &wid))
- ret = xprGetXWindow(wid) != NULL;
- else
- ret = FALSE;
-
- pthread_mutex_unlock(&window_hash_mutex);
-
- return ret;
-}
-
-
-/*
- * xprHideWindows
- * Hide or unhide all top level windows. This is called for application hide/
- * unhide events if the window manager is not Apple-WM aware. Xplugin windows
- * do not hide or unhide themselves.
- */
-void
-xprHideWindows(Bool hide)
-{
- int screen;
- WindowPtr pRoot, pWin;
-
- for (screen = 0; screen < screenInfo.numScreens; screen++) {
- pRoot = WindowTable[screenInfo.screens[screen]->myNum];
- RootlessFrameID prevWid = NULL;
-
- for (pWin = pRoot->firstChild; pWin; pWin = pWin->nextSib) {
- RootlessWindowRec *winRec = WINREC(pWin);
-
- if (winRec != NULL) {
- if (hide) {
- xprUnmapFrame(winRec->wid);
- } else {
- BoxRec box;
-
- xprRestackFrame(winRec->wid, prevWid);
- prevWid = winRec->wid;
-
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = winRec->width;
- box.y2 = winRec->height;
-
- xprDamageRects(winRec->wid, 1, &box, 0, 0);
- RootlessQueueRedisplay(screenInfo.screens[screen]);
- }
- }
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprScreen.c b/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprScreen.c
deleted file mode 100644
index ba89fd38f..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/quartz/xpr/xprScreen.c
+++ /dev/null
@@ -1,417 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/xpr/xprScreen.c,v 1.6 2005/07/01 22:43:08 daniels Exp $ */
-/*
- * Xplugin rootless implementation screen functions
- */
-/*
- * Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved.
- * Copyright (c) 2004 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprScreen.c,v 1.11 2004/07/15 18:53:25 torrey Exp $ */
-
-#include "quartzCommon.h"
-#include "quartz.h"
-#include "xpr.h"
-#include "pseudoramiX.h"
-#include "darwin.h"
-#include "rootless.h"
-#include "safeAlpha.h"
-#include "dri.h"
-#include "globals.h"
-#include "Xplugin.h"
-#include "applewmExt.h"
-
-#ifdef DAMAGE
-# include "damage.h"
-#endif
-
-// Name of GLX bundle for native OpenGL
-static const char *xprOpenGLBundle = "glxCGL.bundle";
-
-
-/*
- * eventHandler
- * Callback handler for Xplugin events.
- */
-static void
-eventHandler(unsigned int type, const void *arg,
- unsigned int arg_size, void *data)
-{
- switch (type)
- {
- case XP_EVENT_DISPLAY_CHANGED:
- QuartzMessageServerThread(kXDarwinDisplayChanged, 0);
- break;
-
- case XP_EVENT_WINDOW_STATE_CHANGED:
- if (arg_size >= sizeof(xp_window_state_event))
- {
- const xp_window_state_event *ws_arg = arg;
-
- QuartzMessageServerThread(kXDarwinWindowState, 2,
- ws_arg->id, ws_arg->state);
- }
- break;
-
- case XP_EVENT_WINDOW_MOVED:
- if (arg_size == sizeof(xp_window_id))
- {
- xp_window_id id = * (xp_window_id *) arg;
-
- QuartzMessageServerThread(kXDarwinWindowMoved, 1, id);
- }
- break;
-
- case XP_EVENT_SURFACE_DESTROYED:
- case XP_EVENT_SURFACE_CHANGED:
- if (arg_size == sizeof(xp_surface_id))
- {
- int kind;
-
- if (type == XP_EVENT_SURFACE_DESTROYED)
- kind = AppleDRISurfaceNotifyDestroyed;
- else
- kind = AppleDRISurfaceNotifyChanged;
-
- DRISurfaceNotify(*(xp_surface_id *) arg, kind);
- }
- break;
- }
-}
-
-
-/*
- * displayScreenBounds
- * Return the display ID for a particular display index.
- */
-static CGDirectDisplayID
-displayAtIndex(int index)
-{
- CGError err;
- CGDisplayCount cnt;
- CGDirectDisplayID dpy[index+1];
-
- err = CGGetActiveDisplayList(index + 1, dpy, &cnt);
- if (err == kCGErrorSuccess && cnt == index + 1)
- return dpy[index];
- else
- return kCGNullDirectDisplay;
-}
-
-
-/*
- * displayScreenBounds
- * Return the bounds of a particular display.
- */
-static CGRect
-displayScreenBounds(CGDirectDisplayID id)
-{
- CGRect frame;
-
- frame = CGDisplayBounds(id);
-
- /* Remove menubar to help standard X11 window managers. */
-
- if (frame.origin.x == 0 && frame.origin.y == 0)
- {
- frame.origin.y += aquaMenuBarHeight;
- frame.size.height -= aquaMenuBarHeight;
- }
-
- return frame;
-}
-
-
-/*
- * xprAddPseudoramiXScreens
- * Add a single virtual screen encompassing all the physical screens
- * with PseudoramiX.
- */
-static void
-xprAddPseudoramiXScreens(int *x, int *y, int *width, int *height)
-{
- CGDisplayCount i, displayCount;
- CGDirectDisplayID *displayList = NULL;
- CGRect unionRect = CGRectNull, frame;
-
- // Find all the CoreGraphics displays
- CGGetActiveDisplayList(0, NULL, &displayCount);
- displayList = xalloc(displayCount * sizeof(CGDirectDisplayID));
- CGGetActiveDisplayList(displayCount, displayList, &displayCount);
-
- /* Get the union of all screens */
- for (i = 0; i < displayCount; i++)
- {
- CGDirectDisplayID dpy = displayList[i];
- frame = displayScreenBounds(dpy);
- unionRect = CGRectUnion(unionRect, frame);
- }
-
- /* Use unionRect as the screen size for the X server. */
- *x = unionRect.origin.x;
- *y = unionRect.origin.y;
- *width = unionRect.size.width;
- *height = unionRect.size.height;
-
- /* Tell PseudoramiX about the real screens. */
- for (i = 0; i < displayCount; i++)
- {
- CGDirectDisplayID dpy = displayList[i];
-
- frame = displayScreenBounds(dpy);
-
- ErrorF("PseudoramiX screen %d added: %dx%d @ (%d,%d).\n", i,
- (int)frame.size.width, (int)frame.size.height,
- (int)frame.origin.x, (int)frame.origin.y);
-
- frame.origin.x -= unionRect.origin.x;
- frame.origin.y -= unionRect.origin.y;
-
- ErrorF("PseudoramiX screen %d placed at X11 coordinate (%d,%d).\n",
- i, (int)frame.origin.x, (int)frame.origin.y);
-
- PseudoramiXAddScreen(frame.origin.x, frame.origin.y,
- frame.size.width, frame.size.height);
- }
-
- xfree(displayList);
-}
-
-
-/*
- * xprDisplayInit
- * Find number of CoreGraphics displays and initialize Xplugin.
- */
-static void
-xprDisplayInit(void)
-{
- CGDisplayCount displayCount;
-
- ErrorF("Display mode: Rootless Quartz -- Xplugin implementation\n");
-
- CGGetActiveDisplayList(0, NULL, &displayCount);
-
- /* With PseudoramiX, the X server only sees one screen; only PseudoramiX
- itself knows about all of the screens. */
-
- if (noPseudoramiXExtension)
- darwinScreensFound = displayCount;
- else
- darwinScreensFound = 1;
-
- if (xp_init(XP_IN_BACKGROUND) != Success)
- {
- FatalError("Could not initialize the Xplugin library.");
- }
-
- xp_select_events(XP_EVENT_DISPLAY_CHANGED
- | XP_EVENT_WINDOW_STATE_CHANGED
- | XP_EVENT_WINDOW_MOVED
- | XP_EVENT_SURFACE_CHANGED
- | XP_EVENT_SURFACE_DESTROYED,
- eventHandler, NULL);
-
- AppleDRIExtensionInit();
- xprAppleWMInit();
-}
-
-
-/*
- * xprAddScreen
- * Init the framebuffer and record pixmap parameters for the screen.
- */
-static Bool
-xprAddScreen(int index, ScreenPtr pScreen)
-{
- DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
-
- /* If no specific depth chosen, look for the depth of the main display.
- Else if 16bpp specified, use that. Else use 32bpp. */
-
- dfb->colorType = TrueColor;
- dfb->bitsPerComponent = 8;
- dfb->bitsPerPixel = 32;
- dfb->colorBitsPerPixel = 24;
-
- if (darwinDesiredDepth == -1)
- {
- dfb->bitsPerComponent = CGDisplayBitsPerSample(kCGDirectMainDisplay);
- dfb->bitsPerPixel = CGDisplayBitsPerPixel(kCGDirectMainDisplay);
- dfb->colorBitsPerPixel =
- CGDisplaySamplesPerPixel(kCGDirectMainDisplay) *
- dfb->bitsPerComponent;
- }
- else if (darwinDesiredDepth == 15)
- {
- dfb->bitsPerComponent = 5;
- dfb->bitsPerPixel = 16;
- dfb->colorBitsPerPixel = 15;
- }
- else if (darwinDesiredDepth == 8)
- {
- dfb->colorType = PseudoColor;
- dfb->bitsPerComponent = 8;
- dfb->bitsPerPixel = 8;
- dfb->colorBitsPerPixel = 8;
- }
-
- if (noPseudoramiXExtension)
- {
- CGDirectDisplayID dpy;
- CGRect frame;
-
- dpy = displayAtIndex(index);
-
- frame = displayScreenBounds(dpy);
-
- dfb->x = frame.origin.x;
- dfb->y = frame.origin.y;
- dfb->width = frame.size.width;
- dfb->height = frame.size.height;
- }
- else
- {
- xprAddPseudoramiXScreens(&dfb->x, &dfb->y, &dfb->width, &dfb->height);
- }
-
- /* Passing zero width (pitch) makes miCreateScreenResources set the
- screen pixmap to the framebuffer pointer, i.e. NULL. The generic
- rootless code takes care of making this work. */
- dfb->pitch = 0;
- dfb->framebuffer = NULL;
-
- DRIScreenInit(pScreen);
-
- return TRUE;
-}
-
-
-/*
- * xprSetupScreen
- * Setup the screen for rootless access.
- */
-static Bool
-xprSetupScreen(int index, ScreenPtr pScreen)
-{
- // Add alpha protecting replacements for fb screen functions
- pScreen->PaintWindowBackground = SafeAlphaPaintWindow;
- pScreen->PaintWindowBorder = SafeAlphaPaintWindow;
-
-#ifdef RENDER
- {
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- ps->Composite = SafeAlphaComposite;
- }
-#endif /* RENDER */
-
- // Initialize accelerated rootless drawing
- // Note that this must be done before DamageSetup().
- RootlessAccelInit(pScreen);
-
-#ifdef DAMAGE
- // The Damage extension needs to wrap underneath the
- // generic rootless layer, so do it now.
- if (!DamageSetup(pScreen))
- return FALSE;
-#endif
-
- // Initialize generic rootless code
- if (!xprInit(pScreen))
- return FALSE;
-
- return DRIFinishScreenInit(pScreen);
-}
-
-
-/*
- * xprUpdateScreen
- * Update screen after configuation change.
- */
-static void
-xprUpdateScreen(ScreenPtr pScreen)
-{
- rootlessGlobalOffsetX = darwinMainScreenX;
- rootlessGlobalOffsetY = darwinMainScreenY;
-
- AppleWMSetScreenOrigin(WindowTable[pScreen->myNum]);
-
- RootlessRepositionWindows(pScreen);
- RootlessUpdateScreenPixmap(pScreen);
-}
-
-
-/*
- * xprInitInput
- * Finalize xpr specific setup.
- */
-static void
-xprInitInput(int argc, char **argv)
-{
- int i;
-
- rootlessGlobalOffsetX = darwinMainScreenX;
- rootlessGlobalOffsetY = darwinMainScreenY;
-
- for (i = 0; i < screenInfo.numScreens; i++)
- AppleWMSetScreenOrigin(WindowTable[i]);
-}
-
-
-/*
- * Quartz display mode function list.
- */
-static QuartzModeProcsRec xprModeProcs = {
- xprDisplayInit,
- xprAddScreen,
- xprSetupScreen,
- xprInitInput,
- QuartzInitCursor,
- NULL, // No need to update cursor
- QuartzSuspendXCursor,
- QuartzResumeXCursor,
- NULL, // No capture or release in rootless mode
- NULL,
- NULL, // Xplugin sends screen change events directly
- xprAddPseudoramiXScreens,
- xprUpdateScreen,
- xprIsX11Window,
- xprHideWindows,
- RootlessFrameForWindow,
- TopLevelParent,
- DRICreateSurface,
- DRIDestroySurface
-};
-
-
-/*
- * QuartzModeBundleInit
- * Initialize the display mode bundle after loading.
- */
-Bool
-QuartzModeBundleInit(void)
-{
- quartzProcs = &xprModeProcs;
- quartzOpenGLBundle = xprOpenGLBundle;
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/darwin/utils/Imakefile b/nx-X11/programs/Xserver/hw/darwin/utils/Imakefile
deleted file mode 100644
index b6ad53d8b..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/utils/Imakefile
+++ /dev/null
@@ -1,10 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/darwin/utils/Imakefile,v 1.2 2000/11/16 03:22:18 dawes Exp $
-
- SRCS = dumpkeymap.c
- OBJS = dumpkeymap.o
-EXTRA_LOAD_FLAGS = -framework IOKit
-
-AllTarget(ProgramTargetName(dumpkeymap))
-
-SimpleProgramTarget(dumpkeymap)
-
diff --git a/nx-X11/programs/Xserver/hw/darwin/utils/README.txt b/nx-X11/programs/Xserver/hw/darwin/utils/README.txt
deleted file mode 100644
index fb6d4399e..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/utils/README.txt
+++ /dev/null
@@ -1,111 +0,0 @@
-dumpkeymap - Diagnostic dump and detailed description of .keymapping files
-Version 4
-
-Copyright (C)1999,2000 by Eric Sunshine <sunshine@sunshineco.com>
-Eric Sunshine, 1 December 2000
-
-OVERVIEW
-========
-This package contains the diagnostic utility dumpkeymap, as well as highly
-detailed documentation describing the internal layout of the Apple/NeXT
-.keymapping file.
-
-The dumpkeymap utility displays detailed information about each .keymapping
-file mentioned on the command-line. On Apple and NeXT platforms, if no
-.keymapping files are mentioned on the command-line, then it will instead
-dissect the key mapping currently in use by the WindowServer and AppKit.
-
-Documentation includes a thorough and detailed description of the internal
-layout of the .keymapping file, as well as an explanation of how to interpret
-the output of dumpkeymap.
-
-The complete set of documentation is available for perusal via dumpkeymap's
-manual page (dumpkeymap.1), as well as via the command-line options described
-below.
-
- --help
- Usage summary.
- --help-keymapping
- Detailed discussion of the internal format of a .keymapping file.
- --help-output
- Explanation of dumpkeymap's output.
- --help-files
- List of key mapping-related files and directories.
- --help-diagnostics
- Explanation of diagnostic messages.
-
-Once the manual page is been installed, documentation can also be accessed
-with the Unix `man' command:
-
- % man dumpkeymap
-
-
-COMPILATION
-===========
-MacOS/X, Darwin
-
- cc -Wall -o dumpkeymap dumpkeymap.c -framework IOKit
-
-MacOS/X DP4 (Developer Preview 4)
-
- cc -Wall -o dumpkeymap dumpkeymap.c -FKernel -framework IOKit
-
-MacOS/X Server, OpenStep, NextStep
-
- cc -Wall -o dumpkeymap dumpkeymap.c
-
-By default, dumpkeymap is configured to interface with the HID driver (Apple)
-or event-status driver (NeXT), thus allowing it to dump the key mapping which
-is currently in use by the WindowServer and AppKit. However, these facilities
-are specific to Apple/NeXT. In order to build dumpkeymap for non-Apple/NeXT
-platforms, you must define the DUMPKEYMAP_FILE_ONLY flag when compiling the
-program. This flag inhibits use of the HID and event-status drivers and
-configures dumpkeymap to work strictly with raw key mapping files.
-
-For example, to compile for Linux:
-
- gcc -Wall -DDUMPKEYMAP_FILE_ONLY -o dumpkeymap dumpkeymap.c
-
-
-INSTALLATION
-============
-Install the dumpkeymap executable image in a location mentioned in the PATH
-environment variable. Typicall locations for executable files are:
-
- /usr/local/bin
- $(HOME)/bin
-
-Install the manual page, dumpkeymap.1, in the `man1' subdirectory one of the
-standard manual page locations or in any other location mentioned by the
-MANPATH environment variable.
-
-Typical locations for manual pages on most Unix platforms are:
-
- /usr/local/man/man1
-
-Typical locations for manual pages on MacOS/X, Darwin, and MacOS/X Server are:
-
- /usr/local/man/man1
- /Local/Documentation/ManPages/man1
- /Network/Documentation/ManPages/man1
-
-Typical locations for manual pages on OpenStep and NextStep are:
-
- /usr/local/man/man1
- /LocalLibrary/Documentation/ManPages/man1
- /LocalDeveloper/Documentation/ManPages/man1
-
-
-CONCLUSION
-==========
-This program and its accompanying documentation were written by Eric Sunshine
-and are copyright (C)1999,2000 by Eric Sunshine <sunshine@sunshineco.com>.
-
-The implementation of dumpkeymap is based upon information gathered on
-September 3, 1997 by Eric Sunshine <sunshine@sunshineco.com> and Paul S.
-McCarthy <zarnuk@zarnuk.com> during an effort to reverse engineer the format
-of the NeXT .keymapping file.
-
-
-
-$XFree86: xc/programs/Xserver/hw/darwin/utils/README.txt,v 1.1 2000/12/01 19:47:39 dawes Exp $
diff --git a/nx-X11/programs/Xserver/hw/darwin/utils/dumpkeymap.c b/nx-X11/programs/Xserver/hw/darwin/utils/dumpkeymap.c
deleted file mode 100644
index 8f3340b15..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/utils/dumpkeymap.c
+++ /dev/null
@@ -1,1454 +0,0 @@
-// $XFree86: dumpkeymap.c,v 1.3 2000/12/05 21:18:34 dawes Exp $
-//=============================================================================
-//
-// Copyright (C) 1999,2000 by Eric Sunshine <sunshine@sunshineco.com>
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-// 3. The name of the author may not be used to endorse or promote products
-// derived from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-// NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-//=============================================================================
-//-----------------------------------------------------------------------------
-// dumpkeymap.c
-//
-// Prints a textual representation of each Apple/NeXT .keymapping file
-// mentioned on the command-line. If no files are mentioned and if the
-// local machine is an Apple or NeXT installation, then the key mapping
-// currently in use by the WindowServer and the AppKit is printed
-// instead.
-//
-// Invoke dumpkeymap with one of the options listed below in order to
-// view detailed documentation about .keymapping files and the use of
-// this program.
-//
-// --help: Usage summary.
-// --help-keymapping: Detailed discussion of the internal format of a
-// .keymapping file.
-// --help-output: Explanation of dumpkeymap's output.
-// --help-files: List of key mapping-related files and directories.
-// --help-diagnostics: Explanation of diagnostic messages.
-//
-// COMPILATION INSTRUCTIONS
-//
-// MacOS/X, Darwin
-// cc -Wall -o dumpkeymap dumpkeymap.c -framework IOKit
-//
-// MacOS/X DP4 (Developer Preview 4)
-// cc -Wall -o dumpkeymap dumpkeymap.c -FKernel -framework IOKit
-//
-// MacOS/X Server, OpenStep, NextStep
-// cc -Wall -o dumpkeymap dumpkeymap.c
-//
-// By default, dumpkeymap is configured to interface with the HID driver
-// (Apple) or event-status driver (NeXT), thus allowing it to dump the
-// key mapping which is currently in use by the WindowServer and AppKit.
-// However, these facilities are specific to Apple/NeXT. In order to
-// build dumpkeymap for non-Apple/NeXT platforms, you must define the
-// DUMPKEYMAP_FILE_ONLY flag when compiling the program. This flag
-// inhibits use of the HID and event-status drivers and configures
-// dumpkeymap to work strictly with raw key mapping files.
-//
-// For example, to compile for Linux:
-// gcc -Wall -DDUMPKEYMAP_FILE_ONLY -o dumpkeymap dumpkeymap.c
-//
-// CONCLUSION
-//
-// This program and its accompanying documentation were written by Eric
-// Sunshine and are copyright (C)1999,2000 by Eric Sunshine
-// <sunshine@sunshineco.com>.
-//
-// The implementation of dumpkeymap is based upon information gathered
-// on September 3, 1997 by Eric Sunshine <sunshine@sunshineco.com> and
-// Paul S. McCarthy <zarnuk@zarnuk.com> during an effort to reverse
-// engineer the format of the NeXT .keymapping file.
-//
-// HISTORY
-//
-// v4 2000/12/01 Eric Sunshine <sunshine@sunshineco.com>
-// Updated manual page to work with `rman', the `man' to `HTML'
-// translator. Unfortunately, however, rman is missing important
-// roff features such as diversions, indentation, and tab stops,
-// and is also hideously buggy, so getting the manual to work with
-// rman required quite a few work-arounds.
-// The manual page has now been tested with nroff (plain text), troff
-// (PostScript, etc.), groff (PostScript), and rman (HTML, etc.)
-//
-// v3 2000/11/28 Eric Sunshine <sunshine@sunshineco.com>
-// Considerably expanded the documentation.
-// Augmented the existing description of .keymapping internals.
-// Added these new documentation topics:
-// - Output: Very important section describing how to interpret
-// the output of dumpkeymap.
-// - Files: Lists files and directories related to key mappings.
-// - Diagnostics: Explains diagnostic messages issued by
-// dumpkeymap.
-// Created a manual page (dumpkeymap.1) which contains the complete
-// set of documentation for key mapping files and dumpkeymap.
-// Added command-line options (--help, --help-keymapping,
-// --help-output, --help-files, --help-diagnostics) which allow
-// access to all key mapping documentation. Previously the
-// description of the internal layout of a .keymapping file was
-// only available as source code comments.
-// Added --version option.
-// Ported to non-Apple/NeXT platforms. Defining the pre-processor
-// flag DUMPKEYMAP_FILE_ONLY at compilation time inhibits use of
-// Apple/NeXT-specific API.
-// Added a README file.
-//
-// v2 2000/11/13 Eric Sunshine <sunshine@sunshineco.com>
-// Converted from C++ to plain-C.
-// Now parses and takes into account the "number-size" flag stored
-// with each key map. This flag indicates the size, in bytes, of
-// all remaining numeric values in the mapping. Updated all code
-// to respect this flag. (Previously, the purpose of this field
-// was unknown, and it was thus denoted as
-// `KeyMapping::fill[2]'.)
-// Updated all documentation; especially the "KEY MAPPING
-// DESCRIPTION" section. Added discussion of the "number-size"
-// flag and revamped all structure definitions to use the generic
-// data type `number' instead of `uchar' or 'byte'. Clarified
-// several sections of the documentation and added missing
-// discussions about type definitions and the relationship of
-// `interface' and `handler_id' to .keymapping and .keyboard
-// files.
-// Updated compilation instructions to include directions for all
-// platforms on which this program might be built.
-// Now published under the formal BSD license rather than a
-// home-grown license.
-//
-// v1 1999/09/08 Eric Sunshine <sunshine@sunshineco.com>
-// Created.
-//-----------------------------------------------------------------------------
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#if !defined(DUMPKEYMAP_FILE_ONLY)
-#include <drivers/event_status_driver.h>
-#endif
-
-#define PROG_NAME "dumpkeymap"
-#define PROG_VERSION "4"
-#define AUTHOR_NAME "Eric Sunshine"
-#define AUTHOR_EMAIL "sunshine@sunshineco.com"
-#define AUTHOR_INFO AUTHOR_NAME " <" AUTHOR_EMAIL ">"
-#define COPYRIGHT "Copyright (C) 1999,2000 by " AUTHOR_INFO
-
-typedef unsigned char byte;
-typedef unsigned short word;
-typedef unsigned int natural;
-typedef unsigned long dword;
-typedef dword number;
-
-#define ASCII_SET 0x00
-#define BIND_FUNCTION 0xfe
-#define BIND_SPECIAL 0xff
-
-#define OPT_SWITCH(X) { char const* switched_str__=(X); if (0) {
-#define OPT_CASE(X,Y) } else if (strcmp(switched_str__,(#X)) == 0 || \
- strcmp(switched_str__,(#Y)) == 0) {
-#define OPT_DEFAULT } else {
-#define OPT_SWITCH_END }}
-
-//-----------------------------------------------------------------------------
-// Translation Tables
-//-----------------------------------------------------------------------------
-static char const* const SPECIAL_CODE[] =
- {
- "sound-up",
- "sound-down",
- "brightness-up",
- "brightness-down",
- "alpha-lock",
- "help",
- "power",
- "secondary-up-arrow",
- "secondary-down-arrow"
- };
-#define N_SPECIAL_CODE (sizeof(SPECIAL_CODE) / sizeof(SPECIAL_CODE[0]))
-
-static char const* const MODIFIER_CODE[] =
- {
- "alpha-lock",
- "shift",
- "control",
- "alternate",
- "command",
- "keypad",
- "help"
- };
-#define N_MODIFIER_CODE (sizeof(MODIFIER_CODE) / sizeof(MODIFIER_CODE[0]))
-
-static char const* const MODIFIER_MASK[] =
- {
- "-----", // R = carriage-return
- "----L", // A = alternate
- "---S-", // C = control
- "---SL", // S = shift
- "--C--", // L = alpha-lock
- "--C-L",
- "--CS-",
- "--CSL",
- "-A---",
- "-A--L",
- "-A-S-",
- "-A-SL",
- "-AC--",
- "-AC-L",
- "-ACS-",
- "-ACSL",
- "R----",
- "R---L",
- "R--S-",
- "R--SL",
- "R-C--",
- "R-C-L",
- "R-CS-",
- "R-CSL",
- "RA---",
- "RA--L",
- "RA-S-",
- "RA-SL",
- "RAC--",
- "RAC-L",
- "RACS-",
- "RACSL",
- };
-#define N_MODIFIER_MASK (sizeof(MODIFIER_MASK) / sizeof(MODIFIER_MASK[0]))
-
-#define FUNCTION_KEY_FIRST 0x20
-static char const* const FUNCTION_KEY[] =
- {
- "F1", // 0x20
- "F2", // 0x21
- "F3", // 0x22
- "F4", // 0x23
- "F5", // 0x24
- "F6", // 0x25
- "F7", // 0x26
- "F8", // 0x27
- "F9", // 0x28
- "F10", // 0x29
- "F11", // 0x2a
- "F12", // 0x2b
- "insert", // 0x2c
- "delete", // 0x2d
- "home", // 0x2e
- "end", // 0x2f
- "page up", // 0x30
- "page down", // 0x31
- "print screen", // 0x32
- "scroll lock", // 0x33
- "pause", // 0x34
- "sys-request", // 0x35
- "break", // 0x36
- "reset (HIL)", // 0x37
- "stop (HIL)", // 0x38
- "menu (HIL)", // 0x39
- "user (HIL)", // 0x3a
- "system (HIL)", // 0x3b
- "print (HIL)", // 0x3c
- "clear line (HIL)", // 0x3d
- "clear display (HIL)", // 0x3e
- "insert line (HIL)", // 0x3f
- "delete line (HIL)", // 0x40
- "insert char (HIL)", // 0x41
- "delete char (HIL)", // 0x42
- "prev (HIL)", // 0x43
- "next (HIL)", // 0x44
- "select (HIL)", // 0x45
- };
-#define N_FUNCTION_KEY (sizeof(FUNCTION_KEY) / sizeof(FUNCTION_KEY[0]))
-
-
-//-----------------------------------------------------------------------------
-// Data Stream Object
-// Can be configured to treat embedded "numbers" as being composed of
-// either 1, 2, or 4 bytes, apiece.
-//-----------------------------------------------------------------------------
-typedef struct _DataStream
- {
- byte const* data;
- byte const* data_end;
- natural number_size; // Size in bytes of a "number" in the stream.
- } DataStream;
-
-static DataStream* new_data_stream( byte const* data, int size )
- {
- DataStream* s = (DataStream*)malloc( sizeof(DataStream) );
- s->data = data;
- s->data_end = data + size;
- s->number_size = 1; // Default to byte-sized numbers.
- return s;
- }
-
-static void destroy_data_stream( DataStream* s )
- {
- free(s);
- }
-
-static int end_of_stream( DataStream* s )
- {
- return (s->data >= s->data_end);
- }
-
-static void expect_nbytes( DataStream* s, int nbytes )
- {
- if (s->data + nbytes > s->data_end)
- {
- fputs( "Insufficient data in keymapping data stream.\n", stderr );
- exit(-1);
- }
- }
-
-static byte get_byte( DataStream* s )
- {
- expect_nbytes( s, 1 );
- return *s->data++;
- }
-
-static word get_word( DataStream* s )
- {
- word hi, lo;
- expect_nbytes( s, 2 );
- hi = *s->data++;
- lo = *s->data++;
- return ((hi << 8) | lo);
- }
-
-static dword get_dword( DataStream* s )
- {
- dword b1, b2, b3, b4;
- expect_nbytes( s, 4 );
- b4 = *s->data++;
- b3 = *s->data++;
- b2 = *s->data++;
- b1 = *s->data++;
- return ((b4 << 24) | (b3 << 16) | (b2 << 8) | b1);
- }
-
-static number get_number( DataStream* s )
- {
- switch (s->number_size)
- {
- case 4: return get_dword(s);
- case 2: return get_word(s);
- default: return get_byte(s);
- }
- }
-
-
-//-----------------------------------------------------------------------------
-// Translation Utility Functions
-//-----------------------------------------------------------------------------
-static char const* special_code_desc( number n )
- {
- if (n < N_SPECIAL_CODE)
- return SPECIAL_CODE[n];
- else
- return "invalid";
- }
-
-static char const* modifier_code_desc( number n )
- {
- if (n < N_MODIFIER_CODE)
- return MODIFIER_CODE[n];
- else
- return "invalid";
- }
-
-static char const* modifier_mask_desc( number n )
- {
- if (n < N_MODIFIER_MASK)
- return MODIFIER_MASK[n];
- else
- return "?????";
- }
-
-static char const* function_key_desc( number n )
- {
- if (n >= FUNCTION_KEY_FIRST && n < N_FUNCTION_KEY + FUNCTION_KEY_FIRST)
- return FUNCTION_KEY[ n - FUNCTION_KEY_FIRST ];
- else
- return "unknown";
- }
-
-static number bits_set( number mask )
- {
- number n = 0;
- for ( ; mask != 0; mask >>= 1)
- if ((mask & 0x01) != 0)
- n++;
- return n;
- }
-
-
-//-----------------------------------------------------------------------------
-// Unparse a list of Modifier records.
-//-----------------------------------------------------------------------------
-static void unparse_modifiers( DataStream* s )
- {
- number nmod = get_number(s); // Modifier count
- printf( "MODIFIERS [%lu]\n", nmod );
- while (nmod-- > 0)
- {
- number nscan;
- number const code = get_number(s);
- printf( "%s:", modifier_code_desc(code) );
- nscan = get_number(s);
- while (nscan-- > 0)
- printf( " 0x%02x", (natural)get_number(s) );
- putchar( '\n' );
- }
- putchar( '\n' );
- }
-
-
-//-----------------------------------------------------------------------------
-// Unparse a list of Character records.
-//-----------------------------------------------------------------------------
-typedef void (*UnparseSpecialFunc)( number code );
-
-static void unparse_char_codes(
- DataStream* s, number ncodes, UnparseSpecialFunc unparse_special )
- {
- if (ncodes != 0)
- {
- while (ncodes-- > 0)
- {
- number const char_set = get_number(s);
- number const code = get_number(s);
- putchar(' ');
- switch (char_set)
- {
- case ASCII_SET:
- {
- int const c = (int)code;
- if (isprint(c))
- printf( "\"%c\"", c );
- else if (code < ' ')
- printf( "\"^%c\"", c + '@' );
- else
- printf( "%02x", c );
- break;
- }
- case BIND_FUNCTION:
- printf( "[%s]", function_key_desc(code) );
- break;
- case BIND_SPECIAL:
- unparse_special( code );
- break;
- default:
- printf( "%02x/%02x", (natural)char_set, (natural)code );
- break;
- }
- }
- }
- }
-
-
-//-----------------------------------------------------------------------------
-// Unparse a list of scan code bindings.
-//-----------------------------------------------------------------------------
-static void unparse_key_special( number code )
- {
- printf( "{seq#%lu}", code );
- }
-
-static void unparse_characters( DataStream* s )
- {
- number const NOT_BOUND = 0xff;
- number const nscans = get_number(s);
- number scan;
- printf( "CHARACTERS [%lu]\n", nscans );
- for (scan = 0; scan < nscans; scan++)
- {
- number const mask = get_number(s);
- printf( "scan 0x%02x: ", (natural)scan );
- if (mask == NOT_BOUND)
- fputs( "not-bound\n", stdout );
- else
- {
- number const bits = bits_set( mask );
- number const codes = 1 << bits;
- printf( "%s ", modifier_mask_desc(mask) );
- unparse_char_codes( s, codes, unparse_key_special );
- putchar( '\n' );
- }
- }
- putchar( '\n' );
- }
-
-
-//-----------------------------------------------------------------------------
-// Unparse a list of key sequences.
-//-----------------------------------------------------------------------------
-static void unparse_sequence_special( number code )
- {
- printf( "{%s}", (code == 0 ? "unmodify" : modifier_code_desc(code)) );
- }
-
-static void unparse_sequences( DataStream* s )
- {
- number const nseqs = get_number(s);
- number seq;
- printf( "SEQUENCES [%lu]\n", nseqs );
- for (seq = 0; seq < nseqs; seq++)
- {
- number const nchars = get_number(s);
- printf( "sequence %lu:", seq );
- unparse_char_codes( s, nchars, unparse_sequence_special );
- putchar( '\n' );
- }
- putchar( '\n' );
- }
-
-
-//-----------------------------------------------------------------------------
-// Unparse a list of special keys.
-//-----------------------------------------------------------------------------
-static void unparse_specials( DataStream* s )
- {
- number nspecials = get_number(s);
- printf( "SPECIALS [%lu]\n", nspecials );
- while (nspecials-- > 0)
- {
- number const special = get_number(s);
- number const scan = get_number(s);
- printf( "%s: 0x%02x\n", special_code_desc(special), (natural)scan );
- }
- putchar( '\n' );
- }
-
-
-//-----------------------------------------------------------------------------
-// Unparse the number-size flag.
-//-----------------------------------------------------------------------------
-static void unparse_numeric_size( DataStream* s )
- {
- word const numbers_are_shorts = get_word(s);
- s->number_size = numbers_are_shorts ? 2 : 1;
- }
-
-
-//-----------------------------------------------------------------------------
-// Unparse an entire key map.
-//-----------------------------------------------------------------------------
-static void unparse_keymap_data( DataStream* s )
- {
- unparse_numeric_size(s);
- unparse_modifiers(s);
- unparse_characters(s);
- unparse_sequences(s);
- unparse_specials(s);
- }
-
-
-//-----------------------------------------------------------------------------
-// Unparse the active key map.
-//-----------------------------------------------------------------------------
-#if !defined(DUMPKEYMAP_FILE_ONLY)
-static int unparse_active_keymap( void )
- {
- int rc = 1;
- NXEventHandle const h = NXOpenEventStatus();
- if (h == 0)
- fputs( "Unable to open event status driver.\n", stderr );
- else
- {
- NXKeyMapping km;
- km.size = NXKeyMappingLength(h);
- if (km.size <= 0)
- fprintf( stderr, "Bad key mapping length (%d).\n", km.size );
- else
- {
- km.mapping = (char*)malloc( km.size );
- if (NXGetKeyMapping( h, &km ) == 0)
- fputs( "Unable to get current key mapping.\n", stderr );
- else
- {
- DataStream* stream =
- new_data_stream( (byte const*)km.mapping, km.size );
- fputs( "=============\nACTIVE KEYMAP\n=============\n\n",
- stdout);
- unparse_keymap_data( stream );
- destroy_data_stream( stream );
- rc = 0;
- }
- free( km.mapping );
- }
- NXCloseEventStatus(h);
- }
- return rc;
- }
-#endif
-
-
-//-----------------------------------------------------------------------------
-// Unparse one key map from a keymapping file.
-//-----------------------------------------------------------------------------
-static void unparse_keymap( DataStream* s )
- {
- dword const interface = get_dword(s);
- dword const handler_id = get_dword(s);
- dword const map_size = get_dword(s);
- printf( "interface: 0x%02lx\nhandler_id: 0x%02lx\nmap_size: %lu bytes\n\n",
- interface, handler_id, map_size );
- unparse_keymap_data(s);
- }
-
-
-//-----------------------------------------------------------------------------
-// Check the magic number of a keymapping file.
-//-----------------------------------------------------------------------------
-static int check_magic_number( DataStream* s )
- {
- return (get_byte(s) == 'K' &&
- get_byte(s) == 'Y' &&
- get_byte(s) == 'M' &&
- get_byte(s) == '1');
- }
-
-
-//-----------------------------------------------------------------------------
-// Unparse all key maps within a keymapping file.
-//-----------------------------------------------------------------------------
-static int unparse_keymaps( DataStream* s )
- {
- int rc = 0;
- if (check_magic_number(s))
- {
- int n = 1;
- while (!end_of_stream(s))
- {
- printf( "---------\nKEYMAP #%d\n---------\n", n++ );
- unparse_keymap(s);
- }
- }
- else
- {
- fputs( "Bad magic number.\n", stderr );
- rc = 1;
- }
- return rc;
- }
-
-
-//-----------------------------------------------------------------------------
-// Unparse a keymapping file.
-//-----------------------------------------------------------------------------
-static int unparse_keymap_file( char const* const path )
- {
- int rc = 1;
- FILE* file;
- printf( "===========\nKEYMAP FILE\n===========\n%s\n\n", path );
- file = fopen( path, "rb" );
- if (file == 0)
- perror( "Unable to open key mapping file" );
- else
- {
- struct stat st;
- if (fstat( fileno(file), &st ) != 0)
- perror( "Unable to determine key mapping file size" );
- else
- {
- byte* buffer = (byte*)malloc( st.st_size );
- if (fread( buffer, st.st_size, 1, file ) != 1)
- perror( "Unable to read key mapping file" );
- else
- {
- DataStream* stream = new_data_stream(buffer, (int)st.st_size);
- fclose( file ); file = 0;
- rc = unparse_keymaps( stream );
- destroy_data_stream( stream );
- }
- free( buffer );
- }
- if (file != 0)
- fclose( file );
- }
- return rc;
- }
-
-
-//-----------------------------------------------------------------------------
-// Handle the case when no documents are mentioned on the command-line. For
-// Apple/NeXT platforms, dump the currently active key mapping; else display
-// an error message.
-//-----------------------------------------------------------------------------
-static int handle_empty_document_list( void )
- {
-#if !defined(DUMPKEYMAP_FILE_ONLY)
- return unparse_active_keymap();
-#else
- fputs( "ERROR: Must specify at least one .keymapping file.\n\n", stderr );
- return 1;
-#endif
- }
-
-
-//-----------------------------------------------------------------------------
-// Print a detailed description of the internal layout of a key mapping.
-//-----------------------------------------------------------------------------
-static void print_internal_layout_info( FILE* f )
- {
- fputs(
-"What follows is a detailed descriptions of the internal layout of an\n"
-"Apple/NeXT .keymapping file.\n"
-"\n"
-"Types and Data\n"
-"--------------\n"
-"The following type definitions are employed throughout this discussion:\n"
-"\n"
-" typedef unsigned char byte;\n"
-" typedef unsigned short word;\n"
-" typedef unsigned long dword;\n"
-"\n"
-"Additionally, the type definition `number' is used generically to indicate\n"
-"a numeric value. The actual size of the `number' type may be one or two\n"
-"bytes depending upon how the data is stored in the key map. Although most\n"
-"key maps use byte-sized numeric values, word-sized values are also allowed.\n"
-"\n"
-"Multi-byte values in a key mapping file are stored in big-endian byte\n"
-"order.\n"
-"\n"
-"Key Mapping File and Device Mapping\n"
-"-----------------------------------\n"
-"A key mapping file begins with a magic-number and continues with a variable\n"
-"number of device-specific key mappings.\n"
-"\n"
-" struct KeyMappingFile {\n"
-" char magic_number[4]; // `KYM1'\n"
-" DeviceMapping maps[...]; // Variable number of maps\n"
-" };\n"
-"\n"
-" struct DeviceMapping {\n"
-" dword interface; // Interface type\n"
-" dword handler_id; // Interface subtype\n"
-" dword map_size; // Byte count of `map' (below)\n"
-" KeyMapping map;\n"
-" };\n"
-"\n"
-"The value of `interface' represents a family of keyboard device types\n"
-"(such as Intel PC, ADB, NeXT, Sun Type5, etc.), and is generally\n"
-"specified as one of the constant values NX_EVS_DEVICE_INTERFACE_ADB,\n"
-"NX_EVS_DEVICE_INTERFACE_ACE, etc., which are are defined in IOHIDTypes.h on\n"
-"MacOS/X and Darwin, and in ev_types.h on MacOS/X Server, OpenStep, and\n"
-"NextStep.\n"
-"\n"
-"The value of `handler_id' represents a specific keyboard layout within the\n"
-"much broader `interface' family. For instance, for a 101-key Intel PC\n"
-"keyboard (of type NX_EVS_DEVICE_INTERFACE_ACE) the `handler_id' is '0',\n"
-"whereas for a 102-key keyboard it is `1'.\n"
-"\n"
-"Together, `interface' and `handler_id' identify the exact keyboard hardware\n"
-"to which this mapping applies. Programs which display a visual\n"
-"representation of a keyboard layout, match `interface' and `handler_id'\n"
-"from the .keymapping file against the `interface' and `handler_id' values\n"
-"found in each .keyboard file.\n"
-"\n"
-"Key Mapping\n"
-"-----------\n"
-"A key mapping completely defines the relationship of all scan codes with\n"
-"their associated functionality. A KeyMapping structure is embedded within\n"
-"the DeviceMapping structure in a KeyMappingFile. The key mapping currently\n"
-"in use by the WindowServer and AppKit is also represented by a KeyMapping\n"
-"structure, and can be referred to directly by calling NXGetKeyMapping() and\n"
-"accessing the `mapping' data member of the returned NXKeyMapping structure.\n"
-"\n"
-" struct KeyMapping {\n"
-" word number_size; // 0=1 byte, non-zero=2 bytes\n"
-" number num_modifier_groups; // Modifier groups\n"
-" ModifierGroup modifier_groups[...];\n"
-" number num_scan_codes; // Scan groups\n"
-" ScanGroup scan_table[...];\n"
-" number num_sequence_lists; // Sequence lists\n"
-" Sequence sequence_lists[...];\n"
-" number num_special_keys; // Special keys\n"
-" SpecialKey special_key[...];\n"
-" };\n"
-"\n"
-"The `number_size' flag determines the size, in bytes, of all remaining\n"
-"numeric values (denoted by the type definition `number') within the key\n"
-"mapping. If its value is zero, then numbers are represented by a single\n"
-"byte. If it is non-zero, then numbers are represented by a word (two\n"
-"bytes).\n"
-"\n"
-"Modifier Group\n"
-"--------------\n"
-"A modifier group defines all scan codes which map to a particular type of\n"
-"modifier, such as `shift', `control', etc.\n"
-"\n"
-" enum Modifier {\n"
-" ALPHALOCK = 0,\n"
-" SHIFT,\n"
-" CONTROL,\n"
-" ALTERNATE,\n"
-" COMMAND,\n"
-" KEYPAD,\n"
-" HELP\n"
-" };\n"
-"\n"
-" struct ModifierGroup {\n"
-" number modifier; // A Modifier constant\n"
-" number num_scan_codes;\n"
-" number scan_codes[...]; // Variable number of scan codes\n"
-" };\n"
-"\n"
-"The scan_codes[] array contains a list of all scan codes which map to the\n"
-"specified modifier. The `shift', `command', and `alternate' modifiers are\n"
-"frequently mapped to two different scan codes, apiece, since these\n"
-"modifiers often appear on both the left and right sides of the keyboard.\n"
-"\n"
-"Scan Group\n"
-"----------\n"
-"There is one ScanGroup for each scan code generated by the given keyboard.\n"
-"This number is given by KeyMapping::num_scan_codes. The first scan group\n"
-"represents hardware scan code 0, the second represents scan code 1, etc.\n"
-"\n"
-" enum ModifierMask {\n"
-" ALPHALOCK_MASK = 1 << 0,\n"
-" SHIFT_MASK = 1 << 1,\n"
-" CONTROL_MASK = 1 << 2,\n"
-" ALTERNATE_MASK = 1 << 3,\n"
-" CARRIAGE_RETURN_MASK = 1 << 4\n"
-" };\n"
-" #define NOT_BOUND 0xff\n"
-"\n"
-" struct ScanGroup {\n"
-" number mask;\n"
-" Character characters[...];\n"
-" };\n"
-"\n"
-"For each scan code, `mask' defines which modifier combinations generate\n"
-"characters. If `mask' is NOT_BOUND (0xff) then then this scan code does\n"
-"not generate any characters ever, and its characters[] array is zero\n"
-"length. Otherwise, the characters[] array contains one Character record\n"
-"for each modifier combination.\n"
-"\n"
-"The number of records in characters[] is determined by computing (1 <<\n"
-"bits_set_in_mask). In other words, if mask is zero, then zero bits are\n"
-"set, so characters[] contains only one record. If `mask' is (SHIFT_MASK |\n"
-"CONTROL_MASK), then two bits are set, so characters[] contains four\n"
-"records.\n"
-"\n"
-"The first record always represents the character which is generated by that\n"
-"key when no modifiers are active. The remaining records represent\n"
-"characters generated by the various modifier combinations. Using the\n"
-"example with the `shift' and `control' masks set, record two would\n"
-"represent the character with the `shift' modifier active; record three, the\n"
-"`control' modifier active; and record four, both the `shift' and `control'\n"
-"modifiers active.\n"
-"\n"
-"As a special case, ALPHALOCK_MASK implies SHIFT_MASK, though only\n"
-"ALPHALOCK_MASK appears in `mask'. In this case the same character is\n"
-"generated for both the `shift' and `alpha-lock' modifiers, but only needs\n"
-"to appear once in the characters[] array.\n"
-"\n"
-"CARRIAGE_RETURN_MASK does not actually refer to a modifier key. Instead,\n"
-"it is used to distinguish the scan code which is given the special\n"
-"pseudo-designation of `carriage return' key. Typically, this mask appears\n"
-"solo in a ScanGroup record and only the two Character records for control-M\n"
-"and control-C follow. This flag may be a throwback to an earlier time or\n"
-"may be specially interpreted by the low-level keyboard driver, but its\n"
-"purpose is otherwise enigmatic.\n"
-"Character\n"
-"---------\n"
-"Each Character record indicates the character generated when this key is\n"
-"pressed, as well as the character set which contains the character. Well\n"
-"known character sets are `ASCII' and `Symbol'. The character set can also\n"
-"be one of the meta values FUNCTION_KEY or KEY_SEQUENCE. If it is\n"
-"FUNCTION_KEY then `char_code' represents a generally well-known function\n"
-"key such as those enumerated by FunctionKey. If the character set is\n"
-"KEY_SEQUENCE then `char_code' represents a zero-base index into\n"
-"KeyMapping::sequence_lists[].\n"
-"\n"
-" enum CharacterSet {\n"
-" ASCII = 0x00,\n"
-" SYMBOL = 0x01,\n"
-" ...\n"
-" FUNCTION_KEY = 0xfe,\n"
-" KEY_SEQUENCE = 0xff\n"
-" };\n"
-"\n"
-" struct Character {\n"
-" number set; // CharacterSet of generated character\n"
-" number char_code; // Actual character generated\n"
-" };\n"
-"\n"
-" enum FunctionKey {\n"
-" F1 = 0x20, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,\n"
-" INSERT, DELETE, HOME, END, PAGE_UP, PAGE_DOWN, PRINT_SCREEN,\n"
-" SCROLL_LOCK, PAUSE, SYS_REQUEST, BREAK, RESET, STOP, MENU, USER,\n"
-" SYSTEM, PRINT, CLEAR_LINE, CLEAR_DISPLAY, INSERT_LINE,\n"
-" DELETE_LINE, INSERT_CHAR, DELETE_CHAR, PREV, NEXT, SELECT\n"
-" };\n"
-"\n"
-"Sequence\n"
-"--------\n"
-"When Character::set contains the meta value KEY_SEQUENCE, the scan code is\n"
-"bound to a sequence of keys rather than a single character. A sequence is\n"
-"a series of modifiers and characters which are automatically generated when\n"
-"the associated key is depressed.\n"
-"\n"
-" #define MODIFIER_KEY 0xff\n"
-"\n"
-" struct Sequence {\n"
-" number num_chars;\n"
-" Character characters[...];\n"
-" };\n"
-"\n"
-"Each generated Character is represented as previously described, with the\n"
-"exception that MODIFIER_KEY may appear in place of KEY_SEQUENCE. When the\n"
-"value of Character::set is MODIFIER_KEY then Character::char_code\n"
-"represents a modifier key rather than an actual character. If the modifier\n"
-"represented by `char_code' is non-zero, then it indicates that the\n"
-"associated modifier key has been depressed. In this case, the value is one\n"
-"of the constants enumerated by Modifier (SHIFT, CONTROL, ALTERNATE, etc.).\n"
-"If the value is zero then it means that the modifier keys have been\n"
-"released.\n"
-"\n"
-"Special Key\n"
-"-----------\n"
-"A special key is one which is scanned directly by the Mach kernel rather\n"
-"than by the WindowServer. In general, events are not generated for special\n"
-"keys.\n"
-"\n"
-" enum SpecialKeyType {\n"
-" VOLUME_UP = 0,\n"
-" VOLUME_DOWN,\n"
-" BRIGHTNESS_UP,\n"
-" BRIGHTNESS_DOWN,\n"
-" ALPHA_LOCK,\n"
-" HELP,\n"
-" POWER,\n"
-" SECONDARY_ARROW_UP,\n"
-" SECONDARY_ARROW_DOWN\n"
-" };\n"
-"\n"
-" struct SpecialKey {\n"
-" number type; // A SpecialKeyType constant\n"
-" number scan_code; // Actual scan code\n"
-" };\n"
-"\n", f );
- }
-
-
-//-----------------------------------------------------------------------------
-// Print an explanation of the output generated by this program.
-//-----------------------------------------------------------------------------
-static void print_output_info( FILE* f )
- {
- fputs(
-"What follows is an explanation and description of the various pieces of\n"
-"information emitted by dumpkeymap.\n"
-"\n"
-"For a more thorough discussion of any particular piece of information\n"
-"described here, refer to the detailed description of the internal layout of\n"
-"a key mapping given by the --help-layout option.\n"
-"\n"
-"Conventions\n"
-"-----------\n"
-"Depending upon context, some numeric values are displayed in decimal\n"
-"notation, whereas others are displayed in hexadecimal notation.\n"
-"Hexadecimal numbers are denoted by a `0x' prefix (for instance, `0x7b'),\n"
-"except when explicitly noted otherwise.\n"
-"\n"
-"Key Mapping Source\n"
-"------------------\n"
-"The first piece of information presented about a particular key mapping is\n"
-"the source from which the data was gleaned. For a .keymapping file, the\n"
-"title `KEYMAP FILE' is emitted along with the path and name of the file in\n"
-"question. For the key mapping currently in use by the WindowServer and\n"
-"AppKit, the title `ACTIVE KEYMAP' is emitted instead.\n"
-"\n"
-"Device Information\n"
-"------------------\n"
-"Each .keymapping file may contain one or more raw key mappings. For\n"
-"example, a file which maps keys to a Dvorak-style layout might contain raw\n"
-"mappings for Intel PC, ADB, NeXT, and Sun Type5 keyboards.\n"
-"\n"
-"For each raw mapping, the following information is emitted:\n"
-"\n"
-" o The title `KEYMAP' along with the mapping's relative position in the\n"
-" .keymapping file.\n"
-" o The `interface' identifier.\n"
-" o The `handler_id' sub-identifier.\n"
-" o The size of the raw mapping resource counted in bytes.\n"
-"\n"
-"The `interface' and `handler_id' values, taken together, define a specific\n"
-"keyboard device. A .keyboard file, which describes the visual layout of a\n"
-"keyboard, also contains `interface' and `handler_id' identifiers. The\n"
-".keyboard file corresponding to a particular key mapping can be found by\n"
-"matching the `interface' and `handler_id' values from each resource.\n"
-"\n"
-"Modifiers\n"
-"---------\n"
-"Each mapping may contain zero or more modifier records which associate\n"
-"hardware scan codes with modifier descriptions such as `shift', `control',\n"
-"`alternate', etc. The title `MODIFIERS' is printed along with the count of\n"
-"modifier records which follow. For each modifier record, the modifier's\n"
-"name is printed along with a list of scan codes, in hexadecimal format,\n"
-"which generate that modifier value. For example:\n"
-"\n"
-" MODIFIERS [4]\n"
-" alternate: 0x1d 0x60\n"
-" control: 0x3a\n"
-" keypad: 0x52 0x53 ... 0x63 0x62\n"
-" shift: 0x2a 0x36\n"
-"\n"
-"Characters\n"
-"----------\n"
-"Each mapping may contain zero or more character records which associate\n"
-"hardware scan codes with the actual characters generated by those scan\n"
-"codes in the presence or absence of various modifier combinations. The\n"
-"title `CHARACTERS' is printed along with the count of character records\n"
-"which follow. Here is a highly abbreviated example:\n"
-"\n"
-" CHARACTERS [9]\n"
-" scan 0x00: -AC-L \"a\" \"A\" \"^A\" \"^A\" ca c7 \"^A\" \"^A\"\n"
-" scan 0x07: -AC-L \"x\" \"X\" \"^X\" \"^X\" 01/b4 01/ce \"^X\" \"^X\"\n"
-" scan 0x0a: ---S- \"<\" \">\"\n"
-" scan 0x13: -ACS- \"2\" \"@\" \"^@\" \"^@\" b2 b3 \"^@\" \"^@\"\n"
-" scan 0x24: R---- \"^M\" \"^C\"\n"
-" scan 0x3e: ----- [F4]\n"
-" scan 0x4a: ----- [page up]\n"
-" scan 0x60: ----- {seq#3}\n"
-" scan 0x68: not-bound\n"
-"\n"
-"For each record, the hexadecimal value of the hardware scan code is\n"
-"printed, followed by a list of modifier flag combinations and the actual\n"
-"characters generated by this scan code with and without modifiers applied.\n"
-"\n"
-"The modifier flags field is composed of a combination of single letter\n"
-"representations of the various modifier types. The letters stand for:\n"
-"\n"
-" L - alpha-lock\n"
-" S - shift\n"
-" C - control\n"
-" A - alternate\n"
-" R - carriage-return\n"
-"\n"
-"As a special case, the `alpha-lock' flag also implies the `shift' flag, so\n"
-"these two flags never appear together in the same record.\n"
-"\n"
-"The combination of modifier flags determines the meaning and number of\n"
-"fields which follow. The first field after the modifier flags always\n"
-"represents the character that will be generated if no modifier keys are\n"
-"depressed. The remaining fields represent characters generated by the\n"
-"various modifier combinations. The order of the fields follows this\n"
-"general pattern:\n"
-"\n"
-" o The character generated by this scan code when no modifiers are in\n"
-" effect is listed first.\n"
-"\n"
-" o If the `L' or `S' flag is active, then the shifted character\n"
-" generated by this scan code is listed next.\n"
-"\n"
-" o If the `C' flag is active, then the control-character generated by\n"
-" this scan code is listed next. Furthermore, if the `L' or `S' flag\n"
-" is also active, then the shifted control-character is listed after\n"
-" that.\n"
-"\n"
-" o If the `A' flag is active, then the alternate-character generated by\n"
-" this scan code is listed next. Furthermore, if the `L' or `S' flag\n"
-" is active, then the shifted alternate-character is listed after that.\n"
-" If the `C' flag is also active, then the alternate-control-character\n"
-" is listed next. Finally, if the `C' and `L' or `C' and `S' flags are\n"
-" also active, then the shifted alternate-control-character is listed.\n"
-"\n"
-"The `R' flag does not actually refer to a modifier key. Instead, it is\n"
-"used to distinguish the scan code which is given the special\n"
-"pseudo-designation of `carriage return' key. Typically, this mask appears\n"
-"solo and only the two fields for control-M and control-C follow. This flag\n"
-"may be a throwback to an earlier time or may be specially interpreted by\n"
-"the low-level keyboard driver, but its purpose is otherwise enigmatic.\n"
-"\n"
-"Recalling the example from above, the following fields can be identified:\n"
-"\n"
-" scan 0x00: -AC-L \"a\" \"A\" \"^A\" \"^A\" ca c7 \"^A\" \"^A\"\n"
-"\n"
-" o Lower-case `a' is generated when no modifiers are active.\n"
-" o Upper-case `A' is generated when `shift' or `alpha-lock' are active.\n"
-" o Control-A is generated when `control' is active.\n"
-" o Control-A is generated when `control' and `shift' are active.\n"
-" o The character represented by the hexadecimal code 0xca is generated\n"
-" when `alternate' is active.\n"
-" o The character represented by 0xc7 is generated when `alternate' and\n"
-" `shift' (or `alpha-lock') are active.\n"
-" o Control-A is generated when `alternate' and `control' are active.\n"
-" o Control-A is generated when `alternate', `control' and `shift' (or\n"
-" `alpha-lock') are active.\n"
-"\n"
-"The notation used to represent a particular generated character varies.\n"
-"\n"
-" o Printable ASCII characters are quoted, as in \"x\" or \"X\".\n"
-"\n"
-" o Control-characters are quoted and prefixed with `^', as in \"^X\".\n"
-"\n"
-" o Characters with values greater than 127 (0x7f) are displayed as\n"
-" hexadecimal values without the `0x' prefix.\n"
-"\n"
-" o Characters in a non-ASCII character set (such as `Symbol') are\n"
-" displayed as two hexadecimal numbers separated by a slash, as in\n"
-" `01/4a'. The first number is the character set's identification code\n"
-" (such as `01' for the `Symbol' set), and the second number is the\n"
-" value of the generated character.\n"
-"\n"
-" o Non-printing special function characters are displayed with the\n"
-" function's common name enclosed in brackets, as in `[page up]' or\n"
-" `[F4]'.\n"
-"\n"
-" o If the binding represents a key sequence rather than a single\n"
-" character, then the sequence's identification number is enclosed in\n"
-" braces, as in `{seq#3}'.\n"
-"\n"
-"Recalling a few examples from above, the following interpretations can be\n"
-"made:\n"
-"\n"
-" scan 0x07: -AC-L \"x\" \"X\" \"^X\" \"^X\" 01/b4 01/ce \"^X\" \"^X\"\n"
-" scan 0x3e: ----- [F4]\n"
-" scan 0x4a: ----- [page up]\n"
-" scan 0x60: ----- {seq#3}\n"
-"\n"
-" o \"x\" and \"X\" are printable ASCII characters.\n"
-" o \"^X\" is a control-character.\n"
-" o `01/b4' and `01/ce' represent the character codes 0xb4 and 0xce in\n"
-" the `Symbol' character set.\n"
-" o Scan code 0x3e generates function-key `F4', and scan code 0x4a\n"
-" generates function-key `page up'.\n"
-" o Scan code 0x60 is bound to key sequence #3.\n"
-"\n"
-"Finally, if a scan code is not bound to any characters, then it is\n"
-"annotated with the label `not-bound', as with example scan code 0x68 from\n"
-"above.\n"
-"\n"
-"Sequences\n"
-"---------\n"
-"A scan code (modified and unmodified) can be bound to a key sequence rather\n"
-"than generating a single character or acting as a modifier. When it is\n"
-"bound to a key sequence, a series of character invocations and modifier\n"
-"actions are automatically generated rather than a single keystroke.\n"
-"\n"
-"Each mapping may contain zero or more key sequence records. The title\n"
-"`SEQUENCES' is printed along with the count of sequence records which\n"
-"follow. For example:\n"
-"\n"
-" SEQUENCES [3]\n"
-" sequence 0: \"f\" \"o\" \"o\"\n"
-" sequence 1: {alternate} \"b\" \"a\" \"r\" {unmodify}\n"
-" sequence 2: [home] \"b\" \"a\" \"z\"\n"
-"\n"
-"The notation used to represent the sequence of generated characters is\n"
-"identical to the notation already described in the `Characters' section\n"
-"above, with the exception that modifier actions may be interposed between\n"
-"generated characters. Such modifier actions are represented by the\n"
-"modifier's name enclosed in braces. The special name `{unmodify}'\n"
-"indicates the release of the modifier keys.\n"
-"\n"
-"Thus, the sequences in the above example can be interpreted as follows:\n"
-"\n"
-" o Sequence #0 generates `foo'.\n"
-" o Sequence #1 invokes the `alternate' modifier, generates `bar', and\n"
-" then releases `alternate'.\n"
-" o Sequence #2 invokes the `home' key and then generates `baz'. In a\n"
-" text editor, this would probably result in `baz' being prepended to\n"
-" the line of text on which the cursor resides.\n"
-"\n"
-"Special Keys\n"
-"------------\n"
-"Certain keyboards feature keys which perform some type of special purpose\n"
-"function rather than generating a character or acting as a modifier. For\n"
-"instance, Apple keyboards often contain a `power' key, and NeXT keyboards\n"
-"have historically featured screen brightness and volume control keys.\n"
-"\n"
-"Each mapping may contain zero or more special-key records which associate\n"
-"hardware scan codes with such special purpose functions. The title\n"
-"`SPECIALS' is printed along with the count of records which follow. For\n"
-"each record, the special function's name is printed along with a list of\n"
-"scan codes, in hexadecimal format, which are bound to that function. For\n"
-"example:\n"
-"\n"
-" SPECIALS [6]\n"
-" alpha-lock: 0x39\n"
-" brightness-down: 0x79\n"
-" brightness-up: 0x74\n"
-" power: 0x7f\n"
-" sound-down: 0x77\n"
-" sound-up: 0x73\n"
-"\n", f );
- }
-
-
-//-----------------------------------------------------------------------------
-// Print a summary of the various files and directories which are related to
-// key mappings.
-//-----------------------------------------------------------------------------
-static void print_files_info( FILE* f )
- {
- fputs(
-"This is a summary of the various files and directories which are related to\n"
-"key mappings.\n"
-"\n"
-"*.keymapping\n"
-" A key mapping file which precisely defines the relationship of all\n"
-" hardware-specific keyboard scan-codes with their associated\n"
-" functionality.\n"
-"\n"
-"*.keyboard\n"
-" A file describing the physical layout of keys on a particular type of\n"
-" keyboard. Each `key' token in this file defines the position and shape\n"
-" of the key on the keyboard, as well as the associated scan code which\n"
-" that key generates. A .keymapping file, on the other hand, defines the\n"
-" characters which are generated by a particular scan code depending upon\n"
-" the state of the various modifier keys (such as shift, control, etc.).\n"
-" The `interface' and `handler_id' values from a .keymapping file are\n"
-" matched against those in each .keyboard file in order to associate a\n"
-" particular .keyboard file with a key mapping. Various GUI programs use\n"
-" the .keyboard file to display a visual representation of a keyboard for\n"
-" the user. Since these files are just plain text, they can be easily\n"
-" viewed and interpreted without the aid of a specialized program, thus\n"
-" dumpkeymap leaves these files alone.\n"
-"\n"
-"/System/Library/Keyboards\n"
-"/Network/Library/Keyboards\n"
-"/Local/Library/Keyboards\n"
-"/Library/Keyboards\n"
-" Repositories for .keymapping and .keyboard files for MacOS/X, Darwin,\n"
-" and MacOS/X Server.\n"
-"\n"
-"/NextLibrary/Keyboards\n"
-"/LocalLibrary/Keyboards\n"
-" Repositories for .keymapping and .keyboard files for OpenStep and\n"
-" NextStep.\n"
-"\n"
-"$(HOME)/Library/Keyboards\n"
-" Repository for personal .keymapping and .keyboard files.\n"
-"\n", f );
- }
-
-
-//-----------------------------------------------------------------------------
-// Print a list of the various diagnostic messages which may be emitted.
-//-----------------------------------------------------------------------------
-static void print_diagnostics_info( FILE* f )
- {
- fputs(
-"The following diagnostic messages may be issued to the standard error\n"
-"stream.\n"
-"\n"
-"Unrecognized option.\n"
-" An unrecognized option was specified on the command-line. Invoke\n"
-" dumpkeymap with the --help option to view a list of valid options.\n"
-"\n"
-"Insufficient data in keymapping data stream.\n"
-" The key mapping file or data stream is corrupt. Either the file has\n"
-" been incorrectly truncated or a field, such as those which indicates\n"
-" the number of variable records which follow, contains a corrupt value.\n"
-"\n"
-"The following diagnostic messages have significance only when trying to\n"
-"print .keymapping files mentioned on the command-line.\n"
-"\n"
-"Bad magic number.\n"
-" The mentioned file is not a .keymapping file. The file's content does\n"
-" not start with the string `KYM1'.\n"
-"\n"
-"Unable to open key mapping file.\n"
-" The call to fopen() failed; probably because the specified path is\n"
-" invalid or dumpkeymap does not have permission to read the file.\n"
-"\n"
-"Unable to determine key mapping file size.\n"
-" The call to fstat() failed, thus memory can not be allocated for\n"
-" loading the file.\n"
-"\n"
-"Unable to read key mapping file.\n"
-" The call to fread() failed.\n"
-"\n"
-"The following diagnostic messages have significance only when trying to\n"
-"print the currently active key mapping when no .keymapping files have been\n"
-"mentioned on the command-line.\n"
-"\n"
-"Unable to open event status driver.\n"
-" The call to NXOpenEventStatus() failed.\n"
-"\n"
-"Bad key mapping length.\n"
-" The call to NXKeyMappingLength() returned a bogus value.\n"
-"\n"
-"Unable to get current key mapping.\n"
-" The call to NXGetKeyMapping() failed.\n"
-"\n"
-"The following diagnostic messages have significance only when using\n"
-"dumpkeymap on a non-Apple/NeXT platform.\n"
-"\n"
-"Must specify at least one .keymapping file.\n"
-" No .keymapping files were mentioned on the command-line. On\n"
-" non-Apple/NeXT platforms, there is no concept of a currently active\n"
-" .keymapping file, so at least one file must be mentioned on the\n"
-" command-line.\n"
-"\n", f );
- }
-
-
-//-----------------------------------------------------------------------------
-// Print warranty.
-//-----------------------------------------------------------------------------
-static void print_warranty( FILE* f )
- {
- fputs(
-"This software is provided by the author `AS IS' and any express or implied\n"
-"WARRANTIES, including, but not limited to, the implied warranties of\n"
-"MERCHANTABILITY and FITNESS FOR A PARTICULAR PURPOSE are DISCLAIMED. In NO\n"
-"EVENT shall the author be LIABLE for any DIRECT, INDIRECT, INCIDENTAL,\n"
-"SPECIAL, EXEMPLARY, or CONSEQUENTIAL damages (including, but not limited\n"
-"to, procurement of substitute goods or services; loss of use, data, or\n"
-"profits; or business interruption) however caused and on any theory of\n"
-"liability, whether in contract, strict liability, or tort (including\n"
-"negligence or otherwise) arising in any way out of the use of this\n"
-"software, even if advised of the possibility of such damage.\n"
-"\n", f );
- }
-
-
-//-----------------------------------------------------------------------------
-// Print this program's version number.
-//-----------------------------------------------------------------------------
-static void print_version( FILE* f )
- {
- fputs( "Version " PROG_VERSION " (built " __DATE__ ")\n\n", f );
- }
-
-
-//-----------------------------------------------------------------------------
-// Print a usage summary.
-//-----------------------------------------------------------------------------
-static void print_usage( FILE* f )
- {
- fputs(
-"Usage: dumpkeymap [options] [-] [file ...]\n"
-"\n"
-"Prints a textual representation of each Apple/NeXT .keymapping file\n"
-"mentioned on the command-line. If no files are mentioned and if the local\n"
-"machine is an Apple or NeXT installation, then the key mapping currently in\n"
-"use by the WindowServer and the AppKit is printed instead.\n"
-"\n"
-"Options:\n"
-" -h --help\n"
-" Display general program instructions and option summary.\n"
-"\n"
-" -k --help-keymapping\n"
-" Display a detailed description of the internal layout of a\n"
-" .keymapping file.\n"
-"\n"
-" -o --help-output\n"
-" Display an explanation of the output generated by dumpkeymap when\n"
-" dissecting a .keymapping file.\n"
-"\n"
-" -f --help-files\n"
-" Display a summary of the various files and directories which are\n"
-" related to key mappings.\n"
-"\n"
-" -d --help-diagnostics\n"
-" Display a list of the various diagnostic messages which may be\n"
-" emitted by dumpkeymap.\n"
-"\n"
-" -v --version\n"
-" Display the dumpkeymap version number and warranty information.\n"
-"\n"
-" - --\n"
-" Inhibit processing of options at this point in the argument list.\n"
-" An occurrence of `-' or `--' in the argument list causes all\n"
-" following arguments to be treated as file names even if an argument\n"
-" begins with a `-' character.\n"
-"\n", f );
- }
-
-
-//-----------------------------------------------------------------------------
-// Print an informational banner.
-//-----------------------------------------------------------------------------
-static void print_banner( FILE* f )
- {
- fputs( "\n" PROG_NAME " v" PROG_VERSION " by " AUTHOR_INFO "\n"
- COPYRIGHT "\n\n", f );
- }
-
-
-//-----------------------------------------------------------------------------
-// Process command-line arguments. Examine options first; collecting files
-// along the way. If all is well, process collected file list.
-//-----------------------------------------------------------------------------
-int main( int const argc, char const* const argv[] )
- {
- int rc = 0, i, nfiles = 0, more_options = 1, process_files = 1;
- int* files = (int*)calloc( argc - 1, sizeof(int) );
- print_banner( stdout );
-
- for (i = 1; i < argc; i++)
- {
- char const* const s = argv[i];
- if (!more_options || *s != '-')
- files[ nfiles++ ] = i;
- else
- {
- OPT_SWITCH(s)
- OPT_CASE(-,--)
- more_options = 0;
- OPT_CASE(-h,--help)
- print_usage( stdout );
- process_files = 0;
- OPT_CASE(-k,--help-keymapping)
- print_internal_layout_info( stdout );
- process_files = 0;
- OPT_CASE(-o,--help-output)
- print_output_info( stdout );
- process_files = 0;
- OPT_CASE(-f,--help-files)
- print_files_info( stdout );
- process_files = 0;
- OPT_CASE(-d,--help-diagnostics)
- print_diagnostics_info( stdout );
- process_files = 0;
- OPT_CASE(-v,--version)
- print_version( stdout );
- print_warranty( stdout );
- process_files = 0;
- OPT_DEFAULT
- fprintf( stderr, "ERROR: Unrecognized option: %s\n\n", s );
- process_files = 0;
- rc = 1;
- OPT_SWITCH_END
- }
- }
-
- if (process_files)
- {
- if (nfiles == 0)
- rc = handle_empty_document_list();
- else
- for (i = 0; i < nfiles; i++)
- rc |= unparse_keymap_file( argv[files[i]] );
- }
-
- free( files );
- return rc;
- }
diff --git a/nx-X11/programs/Xserver/hw/darwin/utils/dumpkeymap.man b/nx-X11/programs/Xserver/hw/darwin/utils/dumpkeymap.man
deleted file mode 100644
index 12983bada..000000000
--- a/nx-X11/programs/Xserver/hw/darwin/utils/dumpkeymap.man
+++ /dev/null
@@ -1,1004 +0,0 @@
-.ig
-//=============================================================================
-//
-// Manual page for `dumpkeymap'.
-//
-// Copyright (C) 1999,2000 by Eric Sunshine <sunshine@sunshineco.com>
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-// 3. The name of the author may not be used to endorse or promote products
-// derived from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-//=============================================================================
-//
-// $XFree86$
-//
-..
-.ig
-//-----------------------------------------------------------------------------
-// Local identification information.
-//-----------------------------------------------------------------------------
-..
-.nr VE 4 \" Version number
-.TH DUMPKEYMAP 1 "v\n(VE \-\- 1 December 2000" "Version \n(VE"
-.de UP
-1 December 2000
-..
-.ig
-//-----------------------------------------------------------------------------
-// Annotation Macros
-// -----------------
-// Facilitate creation of annotated, non-filled blocks of text. An
-// annotated block is initiated with the `AS' macro. Each annotated,
-// non-filled line within the block must be introduced with the `AN' macro
-// which takes three arguments. The first argument is the detail text to
-// be annotated. The second is a string of spaces used to align the
-// annotations by certain (broken) roff interpreters which fail to
-// implement the proper set of roff commands (such as diversions,
-// indentation, and tab stops). It is assumed that the spaces will be
-// used with fixed-point font. The third argument is the annotation
-// itself. The block should be terminated with the `AE' macro. For all
-// roff interpreters which properly implement diversions, indentation, and
-// tab stops, all anotations within the block are automatically aligned at
-// the same horizontal position. This position is guaranteed to be just
-// to the right of the widest `AN' detail line. For broken roff
-// interpreters, such as `rman', the string of spaces from the second
-// argument are used to align the annotations. Finally, the `AZ' macro,
-// which takes a single argument, can be used to to insert a non-annotated
-// line into the block which does not play a part in the calculation of
-// the horizontal annotation alignment.
-//
-// Implementation Notes
-// --------------------
-// *1* These macros utilize a diversion (named `AD'). Since the prevailing
-// indentation is stored along with the diverted text, we must muck with
-// the indentation level in order to prevent the indentation from being
-// applied to the text a second time when `AD' is finally emitted.
-//
-// *2* Unfortunately, `.if' strips leading whitespace from following text, so
-// `AN' uses \& to preserve the whitespace.
-//
-// *3* This manual page has been tested for proper formatting with troff,
-// groff, nroff and rman (the `man' to `HTML' converter). Unfortunately,
-// rman fails to implement many useful features such as diversions,
-// indentation, and tab stops, and is also hideously buggy. Furthermore
-// it identifies itself as nroff and fails to provide any further
-// identification, so there is no way to create macros which specifically
-// work around its limitations. Following is a list of several bugs in
-// rman which the implementation of these macros must avoid:
-// o Fails with multi-line conditionals within macros.
-// o Fails on macro definition within multi-line conditionals.
-// o Fails when macro arguments are not delimited by exactly 1 space.
-// o String definition `.ds' ignores the value; uses empty "" instead.
-// As a consequence of these problems, the following macros are written
-// using a series of ugly single-line `.if' conditionals rather than the
-// more natural multi-line `.if' and `.ie' conditionals. Also, rman fails
-// to understand the common idiom of `.\"' to introduce a comment, which
-// is why all comments in this file are wrapped in ignore `.ig' blocks.
-//-----------------------------------------------------------------------------
-..
-.de AS
-.if t .nr AW 0
-.if t .nr AI \\n(.i
-.if t .in -\\n(AI
-.nf
-..
-.de AN
-.if t .if \w'\\$1'>\\n(AW .nr AW \w'\\$1'
-.if t .da AD
-.if t \\&\\$1\\t\\$3
-.if t .da
-.if n \\&\\$1 \\$2\\$3
-..
-.de AZ
-.if t .da AD
-\\$1
-.if t .da
-..
-.de AE
-.if t .in +\\n(AIu
-.if t .if \\n(AW .ta \\n(AWu+\w'\\(em'u
-.if t .AD
-.if t .DT
-.if t .rm AD
-.if t .rm AW
-.fi
-..
-.ig
-//-----------------------------------------------------------------------------
-// Bulleted list macros -- `BG' begins a bulleted list; `BU' delimits
-// bulleted entries; `BE' ends a bulleted list.
-//-----------------------------------------------------------------------------
-..
-.de BG
-.PP
-.RS
-..
-.de BU
-.HP
-\\(bu\\ \\c
-..
-.de BE
-.RE
-.PP
-..
-.ig
-//-----------------------------------------------------------------------------
-// Indented paragraph with stylized hanging tag macro. `TG' takes a single
-// argument and treats it as the hanging tag of the indented paragraph.
-// The tag is italicized in troff but not in nroff.
-//-----------------------------------------------------------------------------
-..
-.de TG
-.TP
-.ie t .I "\\$1"
-.el \\$1
-..
-.ig
-//-----------------------------------------------------------------------------
-// Manual page for `dumpkeymap'.
-//-----------------------------------------------------------------------------
-..
-.SH NAME
-dumpkeymap \- Dianostic dump of a .keymapping file
-.SH SYNOPSIS
-.B dumpkeymap
-.RI [ options "] [-] [" file "...]"
-.SH DESCRIPTION
-.I dumpkeymap
-prints a textual representation of each Apple/\c
-.SM NeXT
-.I .keymapping
-file mentioned on the command-line. If no files are mentioned and if the
-local machine is an Apple or
-.SM NeXT
-installation, then the key mapping currently in use by the WindowServer and the
-AppKit is printed instead.
-.SH OPTIONS
-.TP
-.B "\-h \-\^\-help"
-Display general program instructions and option summary.
-.TP
-.B "\-k \-\^\-help\-keymapping"
-Display a detailed description of the internal layout of a
-.I .keymapping
-file. This is the same information as that presented in the
-.I "Key Mapping Description"
-section of this document.
-.TP
-.B "\-o \-\^\-help\-output"
-Display an explanation of the output generated by
-.I dumpkeymap
-when dissecting a
-.I .keymapping
-file. This is the same information as that presented in the
-.I "Output Description"
-section of this document.
-.TP
-.B "\-f \-\^\-help\-files"
-Display a summary of the various files and directories which are related to
-key mappings. This is the same information as that presented in the
-.I "Files"
-section of this document.
-.TP
-.B "\-d \-\^\-help\-diagnostics"
-Display a list of the various diagnostic messages which may be emitted by
-.I dumpkeymap.
-This is the same information as that presented in the
-.I "Diagnostics"
-section of this document.
-.TP
-.B "\-v \-\^\-version"
-Display the
-.I dumpkeymap
-version number and warranty information.
-.TP
-.B "\- \-\^\-"
-Inhibit processing of options at this point in the argument list. An
-occurrence of `\-' or `\-\^\-' in the argument list causes all following
-arguments to be treated as file names even if an argument begins with a `\-'
-character.
-.SH "KEY MAPPING DESCRIPTION"
-The following sections describe, in complete detail, the format of a raw key
-mapping resource, as well as the format of the
-.I .keymapping
-file which encapsulates one or more raw mappings.
-.SH "Types and Data"
-The following type definitions are employed throughout this discussion:
-.PP
-.RS
-.AS
-.AZ "typedef unsigned char byte;"
-.AZ "typedef unsigned short word;"
-.AZ "typedef unsigned long dword;"
-.AE
-.RE
-.PP
-Additionally, the type definition
-.RI ` number '
-is used generically to
-indicate a numeric value. The actual size of the
-.RI ` number '
-type may be one or two bytes depending upon how the data is stored in the key
-map. Although most key maps use byte-sized numeric values, word-sized values
-are also allowed.
-.PP
-Multi-byte values in a key mapping file are stored in big-endian byte order.
-.SH "Key Mapping File and Device Mapping"
-A key mapping file begins with a magic-number and continues with a
-variable number of device-specific key mappings.
-.PP
-.RS
-.AS
-.AZ "struct KeyMappingFile {"
-.AN " char magic_number[4];" " " "// `KYM1'"
-.AN " DeviceMapping maps[...];" "" "// Variable number of maps"
-.AZ };
-.AE
-.PP
-.AS
-.AZ "struct DeviceMapping {"
-.AN " dword interface;" " " "// Interface type"
-.AN " dword handler_id;" "" "// Interface subtype"
-.AN " dword map_size;" " " "// Byte count of `map' (below)"
-.AN " KeyMapping map;"
-.AZ };
-.AE
-.RE
-.PP
-The value of `interface' represents a family of keyboard device types
-(such as Intel
-.SM "PC, ADB, NeXT,"
-Sun Type5, etc.), and is generally specified as one of the constant values
-.SM "NX_EVS_DEVICE_INTERFACE_ADB, NX_EVS_DEVICE_INTERFACE_ACE,"
-etc., which are are defined in IOHIDTypes.h on MacOS/X and Darwin, and in
-ev_types.h on MacOS/X Server, OpenStep, and NextStep.
-.PP
-The value of `handler_id' represents a specific keyboard layout within the
-much broader `interface' family. For instance, for a 101-key Intel
-.SM PC
-keyboard (of type
-.SM NX_EVS_DEVICE_INTERFACE_ACE\c
-) the `handler_id' is '0', whereas for a 102-key keyboard it is `1'.
-.PP
-Together, `interface' and `handler_id' identify the exact keyboard hardware to
-which this mapping applies. Programs which display a visual representation of
-a keyboard layout, match `interface' and `handler_id' from the
-.I .keymapping
-file against the `interface' and `handler_id' values found in each
-.I .keyboard
-file.
-.SH "Key Mapping"
-A key mapping completely defines the relationship of all scan codes with their
-associated functionality. A
-.I KeyMapping
-structure is embedded within the
-.I DeviceMapping
-structure in a
-.IR KeyMappingFile .
-The key mapping currently in use by the WindowServer and AppKit is also
-represented by a
-.I KeyMapping
-structure, and can be referred to directly by calling NXGetKeyMapping() and
-accessing the `mapping' data member of the returned
-.I NXKeyMapping
-structure.
-.PP
-.RS
-.AS
-.AZ "struct KeyMapping {"
-.AN " word number_size;" " " "// 0=1 byte, non-zero=2 bytes"
-.AN " number num_modifier_groups;" "" "// Modifier groups"
-.AZ " ModifierGroup modifier_groups[...];"
-.AN " number num_scan_codes;" " " "// Scan groups"
-.AN " ScanGroup scan_table[...];"
-.AN " number num_sequence_lists;" " " "// Sequence lists"
-.AN " Sequence sequence_lists[...];"
-.AN " number num_special_keys;" " " "// Special keys"
-.AN " SpecialKey special_key[...];"
-.AZ };
-.AE
-.RE
-.PP
-The `number_size' flag determines the size, in bytes, of all remaining numeric
-values (denoted by the type definition
-.RI ` number ')
-within the
-key mapping. If its value is zero, then numbers are represented by a single
-byte. If it is non-zero, then numbers are represented by a word (two bytes).
-.SH "Modifier Group"
-A modifier group defines all scan codes which map to a particular type of
-modifier, such as
-.IR shift ,
-.IR control ,
-etc.
-.PP
-.RS
-.AS
-.AZ "enum Modifier {"
-.AZ " ALPHALOCK = 0,"
-.AZ " SHIFT,"
-.AZ " CONTROL,"
-.AZ " ALTERNATE,"
-.AZ " COMMAND,"
-.AZ " KEYPAD,"
-.AZ " HELP"
-.AZ };
-.AE
-.PP
-.AS
-.AZ "struct ModifierGroup {"
-.AN " number modifier;" " " "// A Modifier constant"
-.AN " number num_scan_codes;"
-.AN " number scan_codes[...];" "" "// Variable number of scan codes"
-.AZ };
-.AE
-.RE
-.PP
-The scan_codes[] array contains a list of all scan codes which map to the
-specified modifier. The
-.IR shift ", " command ", and " alternate
-modifiers are frequently mapped to two different scan codes, apiece,
-since these modifiers often appear on both the left and right sides of
-the keyboard.
-.SH "Scan Group"
-There is one
-.I ScanGroup
-for each scan code generated by the given keyboard. This number is given by
-KeyMapping::num_scan_codes. The first scan group represents hardware scan
-code 0, the second represents scan code 1, etc.
-.PP
-.RS
-.AS
-.AZ "enum ModifierMask {"
-.AN " ALPHALOCK_MASK" " " "= 1 << 0,"
-.AN " SHIFT_MASK" " " "= 1 << 1,"
-.AN " CONTROL_MASK" " " "= 1 << 2,"
-.AN " ALTERNATE_MASK" " " "= 1 << 3,"
-.AN " CARRIAGE_RETURN_MASK" "" "= 1 << 4"
-.AZ };
-.AZ "#define NOT_BOUND 0xff"
-.AE
-.PP
-.AS
-.AZ "struct ScanGroup {"
-.AN " number mask;"
-.AN " Character characters[...];"
-.AZ };
-.AE
-.RE
-.PP
-For each scan code, `mask' defines which modifier combinations generate
-characters. If `mask' is
-.SM NOT_BOUND
-(0xff) then then this scan code does not generate any characters ever, and its
-characters[] array is zero length. Otherwise, the characters[] array contains
-one
-.I Character
-record for each modifier combination.
-.PP
-The number of records in characters[] is determined by computing (1 <<
-bits_set_in_mask). In other words, if mask is zero, then zero bits are set,
-so characters[] contains only one record. If `mask' is
-.SM "(SHIFT_MASK | CONTROL_MASK),"
-then two bits are set, so characters[] contains four records.
-.PP
-The first record always represents the character which is generated by that
-key when no modifiers are active. The remaining records represent characters
-generated by the various modifier combinations. Using the example with the
-.I shift
-and
-.I control
-masks set, record two would represent the character with the
-.I shift
-modifier active; record three, the
-.I control
-modifier active; and record four, both the
-.I shift
-and
-.I control
-modifiers active.
-.PP
-As a special case,
-.SM ALPHALOCK_MASK
-implies
-.SM SHIFT_MASK,
-though only
-.SM ALPHALOCK_MASK
-appears in `mask'. In this case the same character is generated for both the
-.I shift
-and
-.I alpha-lock
-modifiers, but only needs to appear once in the characters[] array.
-.PP
-.SM CARRIAGE_RETURN_MASK
-does not actually refer to a modifier key. Instead, it is used to
-distinguish the scan code which is given the special pseudo-designation of
-.I "carriage return"
-key. Typically, this mask appears solo in a
-.I ScanGroup
-record and only the two
-.I Character
-records for control-M and control-C follow. This flag may be a throwback to
-an earlier time or may be specially interpreted by the low-level keyboard
-driver, but its purpose is otherwise enigmatic.
-.SH Character
-Each
-.I Character
-record indicates the character generated when this key is pressed, as well as
-the character set which contains the character. Well known character sets are
-.SM `ASCII'
-and `Symbol'. The character set can also be one of the meta values
-.SM FUNCTION_KEY
-or
-.SM KEY_SEQUENCE.
-If it is
-.SM FUNCTION_KEY
-then `char_code' represents a generally well-known function key such as those
-enumerated by
-.I FunctionKey.
-If the character set is
-.SM KEY_SEQUENCE
-then `char_code' represents is a zero-base index into
-KeyMapping::sequence_lists[].
-.PP
-.RS
-.AS
-.AZ "enum CharacterSet {"
-.AN " ASCII" " " "= 0x00,"
-.AN " SYMBOL" " " "= 0x01,"
-.AN " ..."
-.AN " FUNCTION_KEY" "" "= 0xfe,"
-.AN " KEY_SEQUENCE" "" "= 0xff"
-.AZ };
-.AE
-.PP
-.AS
-.AZ "struct Character {"
-.AN " number set;" " " "// CharacterSet of generated character"
-.AN " number char_code;" "" "// Actual character generated"
-.AZ };
-.AE
-.PP
-.AS
-.AZ "enum FunctionKey {"
-.AZ " F1 = 0x20, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,"
-.AZ " INSERT, DELETE, HOME, END, PAGE_UP, PAGE_DOWN, PRINT_SCREEN,"
-.AZ " SCROLL_LOCK, PAUSE, SYS_REQUEST, BREAK, RESET, STOP, MENU,"
-.AZ " USER, SYSTEM, PRINT, CLEAR_LINE, CLEAR_DISPLAY, INSERT_LINE,"
-.AZ " DELETE_LINE, INSERT_CHAR, DELETE_CHAR, PREV, NEXT, SELECT"
-.AZ };
-.AE
-.RE
-.SH Sequence
-When Character::set contains the meta value
-.SM KEY_SEQUENCE,
-the scan code is bound to a sequence of keys rather than a single character.
-A sequence is a series of modifiers and characters which are automatically
-generated when the associated key is depressed.
-.PP
-.RS
-.AS
-.AZ "#define MODIFIER_KEY 0xff"
-.AE
-.PP
-.AS
-.AZ "struct Sequence {"
-.AN " number num_chars;"
-.AN " Character characters[...];"
-.AZ };
-.AE
-.RE
-.PP
-Each generated
-.I Character
-is represented as previously described, with the exception that
-.SM MODIFIER_KEY
-may appear in place of
-.SM KEY_SEQUENCE.
-When the value of Character::set is
-.SM MODIFIER_KEY
-then Character::char_code represents a modifier key rather than an actual
-character. If the modifier represented by `char_code' is non-zero, then it
-indicates that the associated modifier key has been depressed. In this case,
-the value is one of the constants enumerated by
-.I Modifier
-(\c
-.SM "SHIFT, CONTROL, ALTERNATE,"
-etc.). If the value is zero then it means that the modifier keys have been
-released.
-.SH "Special Key"
-A special key is one which is scanned directly by the Mach kernel rather than
-by the WindowServer. In general, events are not generated for special keys.
-.PP
-.RS
-.AS
-.AZ "enum SpecialKeyType {"
-.AZ " VOLUME_UP = 0,"
-.AZ " VOLUME_DOWN,"
-.AZ " BRIGHTNESS_UP,"
-.AZ " BRIGHTNESS_DOWN,"
-.AZ " ALPHA_LOCK,"
-.AZ " HELP,"
-.AZ " POWER,"
-.AZ " SECONDARY_ARROW_UP,"
-.AZ " SECONDARY_ARROW_DOWN"
-.AZ };
-.AE
-.PP
-.AS
-.AZ "struct SpecialKey {"
-.AN " number type;" " " "// A SpecialKeyType constant"
-.AN " number scan_code;" "" "// Actual scan code"
-.AZ };
-.AE
-.RE
-.SH OUTPUT
-What follows is an explanation and description of the various pieces of
-information emitted by
-.I dumpkeymap.
-.PP
-For a more thorough discussion of any particular piece of information described
-here, refer to the detailed description of the internal layout of a key mapping
-provided by the
-.I "Key Mapping Description"
-section above.
-.SH Conventions
-Depending upon context, some numeric values are displayed in decimal
-notation, whereas others are displayed in hexadecimal notation.
-Hexadecimal numbers are denoted by a `0x' prefix (for instance, `0x7b'),
-except when explicitly noted otherwise.
-.SH "Key Mapping Source"
-The first piece of information presented about a particular key mapping is the
-source from which the data was gleaned. For a
-.I .keymapping
-file, the title
-.SM "`KEYMAP FILE'"
-is emitted along with the path and name of the file in question. For the key
-mapping currently in use by the WindowServer and AppKit, the title
-.SM "`ACTIVE KEYMAP'"
-is emitted instead.
-.SH "Device Information"
-Each
-.I .keymapping
-file may contain one or more raw key mappings. For example, a file which maps
-keys to a Dvorak-style layout might contain raw mappings for Intel
-.SM "PC, ADB, NeXT,"
-and Sun Type5 keyboards.
-.PP
-For each raw mapping, the following information is emitted:
-.BG
-.BU
-The title
-.SM `KEYMAP'
-along with the mapping's relative position in the
-.I .keymapping
-file.
-.BU
-The `interface' identifier.
-.BU
-The `handler_id' sub-identifier.
-.BU
-The size of the raw mapping resource counted in bytes.
-.BE
-The `interface' and `handler_id' values, taken together, define a specific
-keyboard device. A
-.I .keyboard
-file, which describes the visual layout of a keyboard, also contains
-`interface' and `handler_id' identifiers. The
-.I .keyboard
-file corresponding to a particular key mapping can be found by matching the
-`interface' and `handler_id' values from each resource.
-.SH Modifiers
-Each mapping may contain zero or more modifier records which associate hardware
-scan codes with modifier descriptions such as
-.I "shift, control, alternate,"
-etc. The title
-.SM `MODIFIERS'
-is printed along with the count of modifier records which follow. For each
-modifier record, the modifier's name is printed along with a list of scan
-codes, in hexadecimal format, which generate that modifier value. For example:
-.PP
-.RS
-.nf
-MODIFIERS [4]
-alternate: 0x1d 0x60
-control: 0x3a
-keypad: 0x52 0x53 ... 0x63 0x62
-shift: 0x2a 0x36
-.fi
-.RE
-.SH Characters
-Each mapping may contain zero or more character records which associate
-hardware scan codes with the actual characters generated by those scan
-codes in the presence or absence of various modifier combinations. The
-title
-.SM `CHARACTERS'
-is printed along with the count of character records which follow. Here is a
-highly abbreviated example:
-.PP
-.RS
-.nf
-CHARACTERS [9]
-scan 0x00: -AC-L "a" "A" "^A" "^A" ca c7 "^A" "^A"
-scan 0x07: -AC-L "x" "X" "^X" "^X" 01/b4 01/ce "^X" "^X"
-scan 0x0a: ---S- "<" ">"
-scan 0x13: -ACS- "2" "@" "^@" "^@" b2 b3 "^@" "^@"
-scan 0x24: R---- "^M" "^C"
-scan 0x3e: ----- [F4]
-scan 0x4a: ----- [page up]
-scan 0x60: ----- {seq#3}
-scan 0x68: not-bound
-.fi
-.RE
-.PP
-For each record, the hexadecimal value of the hardware scan code is printed,
-followed by a list of modifier flag combinations and the actual characters
-generated by this scan code with and without modifiers applied.
-.PP
-The modifier flags field is composed of a combination of single letter
-representations of the various modifier types. The letters stand for:
-.PP
-.RS
-.nf
-L \- alpha-lock
-S \- shift
-C \- control
-A \- alternate
-R \- carriage-return
-.fi
-.RE
-.PP
-As a special case, the
-.I alpha-lock
-flag also implies the
-.I shift
-flag, so these two flags never appear together in the same record.
-.PP
-The combination of modifier flags determines the meaning and number of fields
-which follow. The first field after the modifier flags always represents the
-character that will be generated if no modifier keys are depressed. The
-remaining fields represent characters generated by the various modifier
-combinations. The order of the fields follows this general pattern:
-.BG
-.BU
-The character generated by this scan code when no modifiers are in effect is
-listed first.
-.BU
-If the `L' or `S' flag is active, then the shifted character generated by this
-scan code is listed next.
-.BU
-If the `C' flag is active, then the control-character generated by this scan
-code is listed next. Furthermore, if the `L' or `S' flag is also active, then
-the shifted control-character is listed after that.
-.BU
-If the `A' flag is active, then the alternate-character generated by this scan
-code is listed next. Furthermore, if the `L' or `S' flag is active, then the
-shifted alternate-character is listed after that. If the `C' flag is also
-active, then the alternate-control-character is listed next. Finally, if the
-`C' and `L' or `C' and `S' flags are also active, then the shifted
-alternate-control-character is listed.
-.BE
-The `R' flag does not actually refer to a modifier key. Instead, it is used to
-distinguish the scan code which is given the special pseudo-designation of
-.I "carriage return"
-key. Typically, this mask appears solo and only the two fields for control-M
-and control-C follow. This flag may be a throwback to an earlier time or may
-be specially interpreted by the low-level keyboard driver, but its purpose is
-otherwise enigmatic.
-.PP
-Recalling the example from above, the following fields can be identified:
-.PP
-.RS
-.nf
-scan 0x00: -AC-L "a" "A" "^A" "^A" ca c7 "^A" "^A"
-.fi
-.RE
-.BG
-.BU
-Lower-case `a' is generated when no modifiers are active.
-.BU
-Upper-case `A' is generated when
-.IR shift " or " alpha-lock
-are active.
-.BU
-Control-A is generated when
-.I control
-is active.
-.BU
-Control-A is generated when
-.IR control " and " shift
-are active.
-.BU
-The character represented by the hexadecimal code 0xca is generated when
-.I alternate
-is active.
-.BU
-The character represented by 0xc7 is generated when
-.IR alternate " and " shift " (or " alpha-lock ") are active."
-.BU
-Control-A is generated when
-.IR alternate " and " control
-are active.
-.BU
-Control-A is generated when
-.IR "alternate, control" " and " shift " (or " alpha-lock ") are active."
-.BE
-The notation used to represent a particular generated character varies.
-.BG
-.BU
-Printable
-.SM ASCII
-characters are quoted, as in "x" or "X".
-.BU
-Control-characters are quoted and prefixed with `^', as in "^X".
-.BU
-Characters with values greater than 127 (0x7f) are displayed as hexadecimal
-values without the `0x' prefix.
-.BU
-Characters in a non-\c
-.SM ASCII
-character set (such as `Symbol') are displayed as two hexadecimal numbers
-separated by a slash, as in `01/4a'. The first number is the character set's
-identification code (such as `01' for the `Symbol' set), and the second number
-is the value of the generated character.
-.BU
-Non-printing special function characters are displayed with the function's
-common name enclosed in brackets, as in `[page up]' or `[F4]'.
-.BU
-If the binding represents a key sequence rather than a single character, then
-the sequence's identification number is enclosed in braces, as in `{seq#3}'.
-.BE
-Recalling a few examples from above, the following interpretations can be made:
-.PP
-.RS
-.nf
-scan 0x07: -AC-L "x" "X" "^X" "^X" 01/b4 01/ce "^X" "^X"
-scan 0x3e: ----- [F4]
-scan 0x4a: ----- [page up]
-scan 0x60: ----- {seq#3}
-.fi
-.RE
-.BG
-.BU
-"x" and "X" are printable
-.SM ASCII
-characters.
-.BU
-"^X" is a control-character.
-.BU
-`01/b4' and `01/ce' represent the character codes 0xb4 and 0xce in the `Symbol'
-character set.
-.BU
-Scan code 0x3e generates function-key `F4', and scan code 0x4a generates
-function-key `page up'.
-.BU
-Scan code 0x60 is bound to key sequence #3.
-.BE
-Finally, if a scan code is not bound to any characters, then it is annotated
-with the label `not-bound', as with example scan code 0x68 from above.
-.SH Sequences
-A scan code (modified and unmodified) can be bound to a key sequence rather
-than generating a single character or acting as a modifier. When it is bound
-to a key sequence, a series of character invocations and modifier actions are
-automatically generated rather than a single keystroke.
-.PP
-Each mapping may contain zero or more key sequence records. The title
-.SM `SEQUENCES'
-is printed along with the count of sequence records which follow. For example:
-.PP
-.RS
-.nf
-SEQUENCES [3]
-sequence 0: "f" "o" "o"
-sequence 1: {alternate} "b" "a" "r" {unmodify}
-sequence 2: [home] "b" "a" "z"
-.fi
-.RE
-.PP
-The notation used to represent the sequence of generated characters is
-identical to the notation already described in the
-.I Characters
-section above, with the exception that modifier actions may be interposed
-between generated characters. Such modifier actions are represented by the
-modifier's name enclosed in braces. The special name `{unmodify}' indicates
-the release of the modifier keys.
-.PP
-Thus, the sequences in the above example can be interpreted as follows:
-.BG
-.BU
-Sequence\ #0 generates `foo'.
-.BU
-Sequence\ #1 invokes the
-.I alternate
-modifier, generates `bar', and then releases
-.I alternate.
-.BU
-Sequence\ #2 invokes the
-.I home
-key and then generates `baz'. In a text editor, this would probably result in
-`baz' being prepended to the line of text on which the cursor resides.
-.BE
-.SH Special Keys
-Certain keyboards feature keys which perform some type of special purpose
-function rather than generating a character or acting as a modifier. For
-instance, Apple keyboards often contain a
-.I power
-key, and
-.SM NeXT
-keyboards have historically featured screen brightness and volume control keys.
-.PP
-Each mapping may contain zero or more special-key records which associate
-hardware scan codes with such special purpose functions. The title
-.SM `SPECIALS'
-is printed along with the count of records which follow. For each record, the
-special function's name is printed along with a list of scan codes, in
-hexadecimal format, which are bound to that function. For example:
-.PP
-.RS
-.nf
-SPECIALS [6]
-alpha-lock: 0x39
-brightness-down: 0x79
-brightness-up: 0x74
-power: 0x7f
-sound-down: 0x77
-sound-up: 0x73
-.fi
-.RE
-.SH FILES
-.IP *.keymapping
-A key mapping file which precisely defines the relationship of all
-hardware-specific keyboard scan-codes with their associated functionality.
-.IP *.keyboard
-A file describing the physical layout of keys on a particular type of
-keyboard. Each `key' token in this file defines the position and shape of the
-key on the keyboard, as well as the associated scan code which that key
-generates. A
-.I .keymapping
-file, on the other hand, defines the characters which are generated by a
-particular scan code depending upon the state of the various modifier keys
-(such as
-.I shift,
-.I control,
-etc.). The `interface' and `handler_id' values from a
-.I .keymapping
-file are matched against those in each
-.I .keyboard
-file in order to associate a particular
-.I .keyboard
-file with a key mapping. Various
-.SM GUI
-programs use the
-.I .keyboard
-file to display a visual representation of a keyboard for the user. Since
-these files are just plain text, they can be easily viewed and interpreted
-without the aid of a specialized program, thus
-.I dumpkeymap
-leaves these files alone.
-.PP
-/System/Library/Keyboards
-.br
-/Network/Library/Keyboards
-.br
-/Local/Library/Keyboards
-.br
-/Library/Keyboards
-.RS
-Repositories for
-.I .keymapping
-and
-.I .keyboard
-files for MacOS/X, Darwin, and MacOS/X Server.
-.RE
-.PP
-/NextLibrary/Keyboards
-.br
-/LocalLibrary/Keyboards
-.RS
-Repositories for
-.I .keymapping
-and
-.I .keyboard
-files for OpenStep and NextStep.
-.RE
-.IP $(HOME)/Library/Keyboards
-Repository for personal
-.I .keymapping
-and
-.I .keyboard
-files.
-.SH DIGANOSTICS
-The following diagnostic messages may be issued to the standard error stream.
-.TG "Unrecognized option."
-An unrecognized option was specified on the command-line. Invoke
-.I dumpkeymap
-with the
-.B "\-\^\-help"
-option to view a list of valid options.
-.TG "Insufficient data in keymapping data stream."
-The key mapping file or data stream is corrupt. Either the file has been
-incorrectly truncated or a field, such as those which indicates the number of
-variable records which follow, contains a corrupt value.
-.PP
-The following diagnostic messages have significance only when trying to print
-.I .keymapping
-files mentioned on the command-line.
-.TG "Bad magic number."
-The mentioned file is not a
-.I .keymapping
-file. The file's content does not start with the string `KYM1'.
-.TG "Unable to open key mapping file."
-The call to fopen() failed; probably because the specified path is invalid or
-.I dumpkeymap
-does not have permission to read the file.
-.TG "Unable to determine key mapping file size."
-The call to fstat() failed, thus memory can not be allocated for loading the
-file.
-.TG "Unable to read key mapping file."
-The call to fread() failed.
-.PP
-The following diagnostic messages have significance only when trying to print
-the currently active key mapping when no
-.I .keymapping
-files have been mentioned on the command-line.
-.TG "Unable to open event status driver."
-The call to NXOpenEventStatus() failed.
-.TG "Bad key mapping length."
-The call to NXKeyMappingLength() returned a bogus value.
-.TG "Unable to get current key mapping."
-The call to NXGetKeyMapping() failed.
-.PP
-The following diagnostic messages have significance only when using
-.I dumpkeymap
-on a non-Apple/\c
-.SM NeXT
-platform.
-.TG "Must specify at least one .keymapping file."
-No
-.I .keymapping
-files were mentioned on the command-line. On non-Apple/\c
-.SM NeXT
-platforms, there is no concept of a currently active
-.I .keymapping
-file, so at least one file must be mentioned on the command-line.
-.SH AUTHOR
-Eric Sunshine <sunshine@sunshineco.com> wrote
-.I dumpkeymap
-and this document, the
-.I "dumpkeymap user's manual."
-Both
-.I dumpkeymap
-and this document are copyright \(co1999,2000 by Eric Sunshine
-<sunshine@sunshineco.com>. All rights reserved.
-.PP
-The implementation of
-.I dumpkeymap
-is based upon information gathered on September 3, 1997 by Eric Sunshine
-<sunshine@sunshineco.com> and Paul S. McCarthy <zarnuk@zarnuk.com> during an
-effort to reverse engineer the format of the
-.SM NeXT
-.I .keymapping
-file.
-.if n .PP
-.if n Version \n(VE \-\-
-.if n .UP
diff --git a/nx-X11/programs/Xserver/hw/dmx/Imakefile b/nx-X11/programs/Xserver/hw/dmx/Imakefile
deleted file mode 100644
index b8c16dd53..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/Imakefile
+++ /dev/null
@@ -1,125 +0,0 @@
-XCOMM $XFree86$
-
-#include <Server.tmpl>
-
-#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 <dmx.cf>
-
-#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
deleted file mode 100644
index 9c8bdea00..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/Xdmx.man
+++ /dev/null
@@ -1,741 +0,0 @@
-.\" $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 <kem@redhat.com>,
-David H. Dawes
-.I <dawes@xfree86.org>,
-and
-Rickard E. (Rik) Faith
-.IR <faith@redhat.com> .
-.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
deleted file mode 100644
index 4dccd7382..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/Canvas.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- * This file was originally taken from xc/lib/Xaw/Template.c
- */
-
-#include <X11/IntrinsicP.h>
-#include <X11/StringDefs.h>
-#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[] =
-"<Key>: canvas()\n\
-<Motion>: canvas()\n\
-<BtnDown>: canvas()\n\
-<BtnUp>: 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
deleted file mode 100644
index a36851a6d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/Canvas.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- * This file was originally taken from xc/lib/Xaw/Template.h
- */
-
-#ifndef _Canvas_h
-#define _Canvas_h
-
-#include <X11/Intrinsic.h>
-
-#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
deleted file mode 100644
index 98f95b94e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/CanvasP.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- * 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 <X11/CoreP.h>
-
-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
deleted file mode 100644
index 08039c03e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/Imakefile
+++ /dev/null
@@ -1,101 +0,0 @@
-XCOMM $XFree86$
-
-#include <Server.tmpl>
-#include <lnxdoc.rules>
-
-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 <dmx.cf>
-
-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
deleted file mode 100644
index 2998ff4a0..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/TODO
+++ /dev/null
@@ -1,7 +0,0 @@
-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
deleted file mode 100644
index 3681e8aa2..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/* $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 <faith@redhat.com>
- */
-
-/** \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 <dmx-config.h>
-#endif
-
-#include "dmxconfig.h"
-#include "dmxparse.h"
-#include "dmxcompat.h"
-#include "parser.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-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
deleted file mode 100644
index 416ec7873..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/dmxcompat.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \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
deleted file mode 100644
index 353ce11db..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.c
+++ /dev/null
@@ -1,499 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Provides interface for reading DMX configuration files and for
- * combining that information with command-line configuration parameters. */
-
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#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 : "<noname>";
- 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
deleted file mode 100644
index b5c0c1f1c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/dmxconfig.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \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
deleted file mode 100644
index 1acb6d13e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/dmxparse.c
+++ /dev/null
@@ -1,611 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \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 <dmx-config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#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
deleted file mode 100644
index 8ea84f4e3..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/dmxparse.h
+++ /dev/null
@@ -1,298 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to DMX configuration file parser. \see dmxparse.c */
-
-#ifndef _DMXPARSE_H_
-#define _DMXPARSE_H_
-
-#include <stdio.h> /* 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
deleted file mode 100644
index ed3fc213d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/dmxprint.c
+++ /dev/null
@@ -1,456 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \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 <dmx-config.h>
-#endif
-
-#include "dmxconfig.h"
-#include "dmxparse.h"
-#include "dmxprint.h"
-#include "parser.h"
-#include <stdio.h>
-#include <stdarg.h>
-#include <ctype.h>
-
-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
deleted file mode 100644
index b68c29620..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/dmxprint.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \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
deleted file mode 100644
index 706c49908..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- * 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
deleted file mode 100644
index 68c7f5b40..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/dmxtodmx.man
+++ /dev/null
@@ -1,41 +0,0 @@
-.\" $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 <faith@redhat.com>
-.\"
-.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
deleted file mode 100644
index ac2441017..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/parser.y
+++ /dev/null
@@ -1,226 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-%{
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmxparse.h"
-#include <string.h>
-#include <stdlib.h>
-#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 <token> '{' '}' ';' '/' T_VIRTUAL T_DISPLAY T_WALL T_OPTION T_PARAM
-%token <string> T_STRING
-%token <pair> T_DIMENSION T_OFFSET T_ORIGIN
-%token <comment> T_COMMENT T_LINE_COMMENT
-
- /* Non-termials */
-%type <token> Display Wall Terminal Open Close
-%type <string> NameList Name
-%type <pair> Dimension Offset Origin
-%type <pdim> PartialDim
-%type <fdim> FullDim
-%type <display> DisplayEntry
-%type <option> OptionEntry
-%type <param> ParamEntry ParamList Param
-%type <subentry> SubList Sub
-%type <wall> WallEntry
-%type <virtual> Virtual
-%type <entry> Program EntryList Entry
-
-%%
-
-Program : EntryList { dmxConfigEntry = $1; }
- ;
-
-EntryList : Entry
- | EntryList Entry { APPEND(DMXConfigEntryPtr,$1,$2); $$ = $1; }
- ;
-
-Entry : Virtual { $$ = dmxConfigEntryVirtual($1); }
- | T_LINE_COMMENT { $$ = dmxConfigEntryComment($1); }
- ;
-
-Virtual : T_VIRTUAL Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, NULL, NULL, $2, $3, $4); }
- | T_VIRTUAL Dimension Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, NULL, $2, $3, $4, $5); }
- | T_VIRTUAL Name Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, $2, NULL, $3, $4, $5); }
- | T_VIRTUAL Name Dimension Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, $2, $3, $4, $5, $6 ); }
- ;
-
-SubList : Sub
- | SubList Sub { APPEND(DMXConfigSubPtr,$1,$2); $$ = $1; }
- ;
-
-Sub : T_LINE_COMMENT { $$ = dmxConfigSubComment($1); }
- | DisplayEntry { $$ = dmxConfigSubDisplay($1); }
- | WallEntry { $$ = dmxConfigSubWall($1); }
- | OptionEntry { $$ = dmxConfigSubOption($1); }
- | ParamEntry { $$ = dmxConfigSubParam($1); }
- ;
-
-OptionEntry : T_OPTION NameList Terminal
- { $$ = dmxConfigCreateOption($1, $2, $3); }
- ;
-
-ParamEntry : T_PARAM NameList Terminal
- { $$ = dmxConfigCreateParam($1, NULL, $2, NULL, $3); }
- | T_PARAM Open ParamList Close
- { $$ = dmxConfigCreateParam($1, $2, NULL, $4, NULL);
- $$->next = $3;
- }
- ;
-
-ParamList : Param
- | ParamList Param { APPEND(DMXConfigParamPtr,$1,$2); $$ = $1; }
- ;
-
-Param : NameList Terminal
- { $$ = dmxConfigCreateParam(NULL, NULL, $1, NULL, $2); }
- ;
-
-PartialDim : Dimension Offset
- { $$ = dmxConfigCreatePartDim($1, $2); }
- | Dimension
- { $$ = dmxConfigCreatePartDim($1, NULL); }
- | Offset
- { $$ = dmxConfigCreatePartDim(NULL, $1); }
- ;
-
-FullDim : PartialDim '/' PartialDim
- { $$ = dmxConfigCreateFullDim($1, $3); }
- | '/' PartialDim
- { $$ = dmxConfigCreateFullDim(NULL, $2); }
- | PartialDim
- { $$ = dmxConfigCreateFullDim($1, NULL); }
- ;
-
-DisplayEntry : Display Name FullDim Origin Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, $3, $4, $5); }
- | Display FullDim Origin Terminal
- { $$ = dmxConfigCreateDisplay($1, NULL, $2, $3, $4); }
- | Display Name Origin Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, NULL, $3, $4); }
-
- | Display Name FullDim Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, $3, NULL, $4); }
- | Display FullDim Terminal
- { $$ = dmxConfigCreateDisplay($1, NULL, $2, NULL, $3); }
- | Display Name Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, NULL, NULL, $3); }
- | Display Terminal
- { $$ = dmxConfigCreateDisplay($1, NULL, NULL, NULL, $2); }
- ;
-
-WallEntry : Wall Dimension Dimension NameList Terminal
- { $$ = dmxConfigCreateWall($1, $2, $3, $4, $5); }
- | Wall Dimension NameList Terminal
- { $$ = dmxConfigCreateWall($1, $2, NULL, $3, $4); }
- | Wall NameList Terminal
- { $$ = dmxConfigCreateWall($1, NULL, NULL, $2, $3); }
- ;
-
-Display : T_DISPLAY
- | T_DISPLAY T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Name : T_STRING
- | T_STRING T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Dimension : T_DIMENSION
- | T_DIMENSION T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Offset : T_OFFSET
- | T_OFFSET T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Origin : T_ORIGIN
- | T_ORIGIN T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Terminal : ';'
- | ';' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Open : '{'
- | '{' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Close : '}'
- | '}' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Wall : T_WALL
- | T_WALL T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-NameList : Name
- | NameList Name { APPEND(DMXConfigStringPtr, $1, $2); $$ = $1; }
- ;
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/scanner.l b/nx-X11/programs/Xserver/hw/dmx/config/scanner.l
deleted file mode 100644
index ec450243a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/scanner.l
+++ /dev/null
@@ -1,183 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-%{
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmxparse.h"
-#include "parser.h"
-#include <string.h>
-#include <ctype.h>
-static int getdimension(int token, const char *text, int leng);
-static int getstring(int token, const char *text, int leng);
-static int gettoken(int token, const char *text, int leng);
-static int getcomment(int token, const char *text, int leng);
-static int lineno = 1;
-%}
-%s OTHER
-comment #.*
-word ([[:alpha:]_/:\-\+\.\*][[:alnum:]_/:\-\+\.\*]+)
-string \"(([^\"\n])|\"\")*\"
-badstring \"(([^\"\n])|\"\")*
-number [[:digit:]x]+
-dimension [[:digit:]]+[[:blank:]]*x[[:blank:]]*[[:digit:]]+
-offset [+-][[:digit:]]+[[:blank:]]*[+-][[:blank:]]*[[:digit:]]+
-origin @[[:blank:]]*[[:digit:]]+[[:blank:]]*[[:blank:]]*x[[:digit:]]+
-NL \n
-WS [[:blank:]]+
-%%
-virtual return gettoken(T_VIRTUAL, yytext, yyleng);
-display return gettoken(T_DISPLAY, yytext, yyleng);
-wall return gettoken(T_WALL, yytext, yyleng);
-option return gettoken(T_OPTION, yytext, yyleng);
-param return gettoken(T_PARAM, yytext, yyleng);
-{dimension} return getdimension(T_DIMENSION, yytext, yyleng);
-{offset} return getdimension(T_OFFSET, yytext+1, yyleng-1);
-{origin} return getdimension(T_ORIGIN, yytext+1, yyleng-1);
-{word} return getstring(T_STRING, yytext, yyleng);
-{string} return getstring(T_STRING, yytext+1, yyleng-2);
-{NL} ++lineno;
-{WS}
-\{ return gettoken(yytext[0], yytext, yyleng);
-\} return gettoken(yytext[0], yytext, yyleng);
-\; return gettoken(yytext[0], yytext, yyleng);
-\/ return gettoken(yytext[0], yytext, yyleng);
-^{comment} return getcomment(T_LINE_COMMENT, yytext, yyleng);
-{comment} return getcomment(T_COMMENT, yytext, yyleng);
-. return getstring(T_STRING, yytext, yyleng);
-<<EOF>> return 0;
-%%
-int yywrap(void)
-{
- return 1;
-}
-
-void yyerror(const char *message)
-{
- const char *pt, *end;
- struct _entry {
- const char *from;
- const char *to;
- } *entry, list[] = {
- { "T_VIRTUAL", "\"virtual\"" },
- { "T_DISPLAY", "\"display\"" },
- { "T_WALL", "\"wall\"" },
- { "T_OPTION", "\"option\"" },
- { "T_PARAM", "\"param\"" },
- { "T_DIMENSION", "dimension (e.g., 2x2 or 1024x768)" },
- { "T_OFFSET", "display offset (e.g., +10-10)" },
- { "T_ORIGIN", "tile origin (e.g., @1280x1024)" },
- { "T_STRING", "string" },
- { "T_COMMENT", "comment (e.g., #...)" },
- { "T_LINE_COMMENT", "comment (e.g., #...)" },
- { NULL, NULL }
- };
-
- fprintf(stderr, "parse error on line %d at token \"%*.*s\"\n",
- lineno, yyleng, yyleng, yytext);
- end = message + strlen(message);
- for (pt = message; *pt; pt++) {
- if (pt[0] == 'T' && pt[1] == '_') {
- const char *next = strchr(pt, ' ');
- if (!next || !*next) next = strchr(pt, '\0');
- if (!next) goto bail;
- --next;
- if (next-pt == 1 && next[1]
- && next[2] == '\'' && next[3] == '\'') {
- fprintf(stderr, "\"%c\"", next[1]);
- pt += 4;
- goto cnt;
- }
- for (entry = list; entry->from; ++entry) {
- if (!strncmp(entry->from, pt, strlen(entry->from))) {
- fprintf(stderr, "%s", entry->to);
- pt = next;
- goto cnt;
- }
- }
- } else if (end-pt >= 5 && pt[0] == '\'' && pt[1] == '\'' && pt[3]
- && pt[4] == '\'' && pt[5] == '\'') {
- fprintf(stderr, "\"%c\"", pt[3]);
- pt += 5;
- } else if (end-pt >= 3 && pt[0] == '\'' && pt[1] && pt[2] == '\'') {
- fprintf(stderr, "\"%c\"", pt[1]);
- pt += 3;
- }
- bail:
- putc(*pt, stderr);
- cnt:
- ;
- }
- fprintf(stderr, "\n");
- exit( 1 );
-}
-
-static int getdimension(int token, const char *text, int leng)
-{
- char *endptr;
- char *tmp = dmxConfigAlloc(leng+1);
- int x, y;
-
- strncpy(tmp, text, leng);
- x = strtol(tmp, &endptr, 10);
- while (*endptr && !isdigit(*endptr)) ++endptr;
- y = strtol(endptr, NULL, 10);
- dmxConfigFree(tmp);
- yylval.pair = dmxConfigCreatePair(token, lineno, NULL, x, y, 1, 1);
- return token;
-}
-
-static int getstring(int token, const char *text, int leng)
-{
- yylval.string = dmxConfigCreateString(token, lineno, NULL,
- dmxConfigCopyString(leng ? text : "",
- leng));
- return token;
-}
-
-static int gettoken(int token, const char *text, int leng)
-{
- yylval.token = dmxConfigCreateToken(token, lineno, NULL);
- return token;
-}
-
-static int getcomment(int token, const char *text, int leng)
-{
- yylval.comment = dmxConfigCreateComment(token, lineno,
- dmxConfigCopyString(text + 1,
- leng - 1));
- return token;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-a.in b/nx-X11/programs/Xserver/hw/dmx/config/test-a.in
deleted file mode 100644
index 827675374..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-a.in
+++ /dev/null
@@ -1 +0,0 @@
-error
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-a.out b/nx-X11/programs/Xserver/hw/dmx/config/test-a.out
deleted file mode 100644
index d35b29fc0..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-a.out
+++ /dev/null
@@ -1,2 +0,0 @@
-parse error on line 1 at token "error"
-syntax error, unexpected string expecting "virtual" or comment (e.g., #...)
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-b.in b/nx-X11/programs/Xserver/hw/dmx/config/test-b.in
deleted file mode 100644
index 308ec1db4..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-b.in
+++ /dev/null
@@ -1 +0,0 @@
-# comment
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-b.out b/nx-X11/programs/Xserver/hw/dmx/config/test-b.out
deleted file mode 100644
index 308ec1db4..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-b.out
+++ /dev/null
@@ -1 +0,0 @@
-# comment
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-c.in b/nx-X11/programs/Xserver/hw/dmx/config/test-c.in
deleted file mode 100644
index e07ae5ba6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-c.in
+++ /dev/null
@@ -1 +0,0 @@
-virtual
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-c.out b/nx-X11/programs/Xserver/hw/dmx/config/test-c.out
deleted file mode 100644
index 7390397a4..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-c.out
+++ /dev/null
@@ -1,2 +0,0 @@
-parse error on line 2 at token " "
-syntax error, unexpected $end, expecting "{" or string or dimension (e.g., 2x2 or 1024x768)
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-d.in b/nx-X11/programs/Xserver/hw/dmx/config/test-d.in
deleted file mode 100644
index 6827503b1..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-d.in
+++ /dev/null
@@ -1 +0,0 @@
-display
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-d.out b/nx-X11/programs/Xserver/hw/dmx/config/test-d.out
deleted file mode 100644
index f3219b301..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-d.out
+++ /dev/null
@@ -1,2 +0,0 @@
-parse error on line 1 at token "display"
-syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-e.in b/nx-X11/programs/Xserver/hw/dmx/config/test-e.in
deleted file mode 100644
index 21dbde95c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-e.in
+++ /dev/null
@@ -1 +0,0 @@
-display;
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-e.out b/nx-X11/programs/Xserver/hw/dmx/config/test-e.out
deleted file mode 100644
index f3219b301..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-e.out
+++ /dev/null
@@ -1,2 +0,0 @@
-parse error on line 1 at token "display"
-syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-f.in b/nx-X11/programs/Xserver/hw/dmx/config/test-f.in
deleted file mode 100644
index 17f6c6327..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-f.in
+++ /dev/null
@@ -1,2 +0,0 @@
-virtual {
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-f.out b/nx-X11/programs/Xserver/hw/dmx/config/test-f.out
deleted file mode 100644
index ba3f441d7..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-f.out
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-g.in b/nx-X11/programs/Xserver/hw/dmx/config/test-g.in
deleted file mode 100644
index 453d8121c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-g.in
+++ /dev/null
@@ -1,4 +0,0 @@
-virtual a {
- display d0:0 1280x1024;
- display d1:0 1280x1024;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-g.out b/nx-X11/programs/Xserver/hw/dmx/config/test-g.out
deleted file mode 100644
index 453d8121c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-g.out
+++ /dev/null
@@ -1,4 +0,0 @@
-virtual a {
- display d0:0 1280x1024;
- display d1:0 1280x1024;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-h.in b/nx-X11/programs/Xserver/hw/dmx/config/test-h.in
deleted file mode 100644
index 1193d309e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-h.in
+++ /dev/null
@@ -1,7 +0,0 @@
-# comment a
-# comment b
-## comment c
-# <-- tab
-# Next comment is empty
-#
-# Non empty
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-h.out b/nx-X11/programs/Xserver/hw/dmx/config/test-h.out
deleted file mode 100644
index 1193d309e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-h.out
+++ /dev/null
@@ -1,7 +0,0 @@
-# comment a
-# comment b
-## comment c
-# <-- tab
-# Next comment is empty
-#
-# Non empty
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-i.in b/nx-X11/programs/Xserver/hw/dmx/config/test-i.in
deleted file mode 100644
index b65967e62..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-i.in
+++ /dev/null
@@ -1,3 +0,0 @@
-virtual a {
- param a b; # comment
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-i.out b/nx-X11/programs/Xserver/hw/dmx/config/test-i.out
deleted file mode 100644
index b65967e62..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-i.out
+++ /dev/null
@@ -1,3 +0,0 @@
-virtual a {
- param a b; # comment
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-j.in b/nx-X11/programs/Xserver/hw/dmx/config/test-j.in
deleted file mode 100644
index cc1cdd0ea..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-j.in
+++ /dev/null
@@ -1,13 +0,0 @@
-virtual a {
- option aaa # bbb
- aa cc;
- param { # comment 1
- a b;
- c d;
- x y z; # comment 2
- }
- param e f g h; # comment 3
- param e f g hlskdjflskdfjsd #comment 4
- flksdjf sldkfjsldkfjsdlf
- "lsdkfjsldkfjlsdkjflskdjflsdkjfl" "lkjsdlfjsdlfkjsdlfj";
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-j.out b/nx-X11/programs/Xserver/hw/dmx/config/test-j.out
deleted file mode 100644
index 9acaa009b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-j.out
+++ /dev/null
@@ -1,11 +0,0 @@
-virtual a {
- option "aaa aa cc";
- param { # comment 1
- a b;
- c d;
- x y z; # comment 2
- }
- param e f g h; # comment 3
- param e f g hlskdjflskdfjsd #comment 4
- flksdjf sldkfjsldkfjsdlf lsdkfjsldkfjlsdkjflskdjflsdkjfl lkjsdlfjsdlfkjsdlfj;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-k.in b/nx-X11/programs/Xserver/hw/dmx/config/test-k.in
deleted file mode 100644
index 2218d26d9..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-k.in
+++ /dev/null
@@ -1,3 +0,0 @@
-virtual a {
- option +xinerama -syncbatch 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-k.out b/nx-X11/programs/Xserver/hw/dmx/config/test-k.out
deleted file mode 100644
index ebd743923..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-k.out
+++ /dev/null
@@ -1,3 +0,0 @@
-virtual a {
- option "+xinerama -syncbatch 0";
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-l.in b/nx-X11/programs/Xserver/hw/dmx/config/test-l.in
deleted file mode 100644
index 7bf05139b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-l.in
+++ /dev/null
@@ -1,12 +0,0 @@
-virtual a {
- display d0:0 1x2;
- display d1:0 +3+4;
- display d2:0 100x200 @1x1;
- display d3:0 +3+4 @2x2;
- display d4:0 100x200+3+4 @3x3;
- display d5:0 / 1x2+3+4;
- display d6:0 / 1x2;
- display d7:0 / +3+4;
- display d8:0 / 1x2+3+4 @4x4;
- display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/test-l.out b/nx-X11/programs/Xserver/hw/dmx/config/test-l.out
deleted file mode 100644
index 7bf05139b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/test-l.out
+++ /dev/null
@@ -1,12 +0,0 @@
-virtual a {
- display d0:0 1x2;
- display d1:0 +3+4;
- display d2:0 100x200 @1x1;
- display d3:0 +3+4 @2x2;
- display d4:0 100x200+3+4 @3x3;
- display d5:0 / 1x2+3+4;
- display d6:0 / 1x2;
- display d7:0 / +3+4;
- display d8:0 / 1x2+3+4 @4x4;
- display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/vdltodmx.c b/nx-X11/programs/Xserver/hw/dmx/config/vdltodmx.c
deleted file mode 100644
index 33cd8fe8a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/vdltodmx.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-#include "dmxconfig.h"
-#include "dmxparse.h"
-#include "dmxprint.h"
-#include "dmxcompat.h"
-
-int main(int argc, char **argv)
-{
- DMXConfigEntryPtr entry;
- FILE *str;
-
- if (argc != 2 && argc !=3) {
- fprintf(stderr, "Usage: vdltodmx inFile [outFile]\n");
- return 1;
- }
- if (argc == 2) {
- str = stdout;
- } else if (!(str = fopen(argv[2], "w"))) {
- fprintf(stderr, "Cannot open %s for write\n", argv[2]);
- return 2;
- }
- entry = dmxVDLRead(argv[1]);
- dmxConfigPrint(str, entry);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/vdltodmx.man b/nx-X11/programs/Xserver/hw/dmx/config/vdltodmx.man
deleted file mode 100644
index b733db7ab..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/vdltodmx.man
+++ /dev/null
@@ -1,95 +0,0 @@
-.\" $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 <faith@redhat.com>
-.\"
-.TH vdltodmx 1 __vendorversion__
-.SH NAME
-vdltodmx - dmx configuration file parser and printer
-.SH SYNOPSIS
-.B vdltodmx
-.I infile
-.I outfile
-.SH DESCRIPTION
-.I vdltodmx
-reads the input file, which should be in VDL configuration file format.
-After a successful parse, a file in Xdmx configuration file format is
-written to the output file.
-.P
-The VDL file format is used with
-.IR xmovie ,
-which is available from
-http://www.llnl.gov/icc/lc/img/xmovie/xmovie.html
-.SH EXAMPLE
-Given the following VDL-format file:
-.RS
-.nf
-0
-2
-#
-#
-2560 2048 Left two-thirds [restrict=*:2]
-2
-:2.1 1280 2048 0 0 0 0
-:2.2 1280 2048 1280 0 0 0
-4
-1280 1024 0 0
-1280 1024 0 1024
-1280 1024 1280 0
-1280 1024 1280 1024
-#
-2560 2048 Right two-thirds [restrict=*:2]
-2
-:2.2 1280 2048 0 0 0 0
-:2.3 1280 2048 1280 0 0 0
-4
-1280 1024 1280 0
-1280 1024 1280 1024
-1280 1024 2560 0
-1280 1024 2560 1024
-.fi
-.RE
-the following DMX-format file will be produced:
-.RS
-.nf
-#
-#
-virtual "Left two-thirds" 2560x2048 {
- display :2.1 1280x2048;
- display :2.2 1280x2048 @1280x0;
-}
-#
-virtual "Right two-thirds" 2560x2048 {
- display :2.2 1280x2048;
- display :2.3 1280x2048 @1280x0;
-}
-.fi
-.RE
-.SH BUGS
-If the VDL file is not in the expected format, the program will probably
-dump core.
-.SH "SEE ALSO"
-Xdmx(1), xdmxconfig(1), vdl(3), xmovie(1)
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/xdmxconfig.c b/nx-X11/programs/Xserver/hw/dmx/config/xdmxconfig.c
deleted file mode 100644
index 4ba9ee5f8..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/xdmxconfig.c
+++ /dev/null
@@ -1,1192 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-#include <X11/Xaw/Form.h>
-#include <X11/Xaw/Box.h>
-/* #include <X11/Xaw/Paned.h> */
-#include <X11/Xaw/Command.h>
-#include <X11/Xaw/SimpleMenu.h>
-#include <X11/Xaw/SmeBSB.h>
-#include <X11/Xaw/MenuButton.h>
-#include <X11/Xaw/Viewport.h>
-#include <X11/Xaw/Dialog.h>
-#include <X11/keysym.h>
-#include <X11/Xmu/SysUtil.h>
-#include "Canvas.h"
-
-#include "dmxparse.h"
-#include "dmxprint.h"
-#include "dmxlog.h"
-
-extern int yyparse(void);
-extern FILE *yyin;
-
-#define DMX_INFO "xdmxconfig v0.9\nCopyright 2002 Red Hat Inc.\n$Id: xdmxconfig.c,v 1.3 2005/10/06 02:40:41 kem Exp $"
-
-#define DMX_MAIN_WIDTH 800
-#define DMX_MAIN_HEIGHT 600
-#define DMX_DATA_WIDTH 200
-#define DMX_DATA_HEIGHT 200
-#define DMX_CANVAS_WIDTH 400
-#define DMX_CANVAS_HEIGHT 500
-
-DMXConfigEntryPtr dmxConfigEntry;
-static DMXConfigVirtualPtr dmxConfigCurrent, dmxConfigNewVirtual;
-static DMXConfigDisplayPtr dmxConfigCurrentDisplay, dmxConfigNewDisplay;
-static int dmxConfigGrabbed, dmxConfigGrabbedFine;
-static int dmxConfigGrabbedX, dmxConfigGrabbedY;
-static char *dmxConfigFilename;
-static GC dmxConfigGC, dmxConfigGCRev, dmxConfigGCHL;
-static int dmxConfigGCInit = 0;
-static Dimension dmxConfigWidgetWidth, dmxConfigWidgetHeight;
-static Dimension dmxConfigWallWidth, dmxConfigWallHeight;
-static double dmxConfigScaleX, dmxConfigScaleY;
-static int dmxConfigNotSaved;
-static enum {
- dmxConfigStateOpen,
- dmxConfigStateSave
-} dmxConfigState;
-
-/* Global widgets */
-static Widget canvas;
-static Widget cnamebox, cdimbox;
-static Widget openpopup, opendialog;
-static Widget namebox, dimbox, rtbox, origbox;
-static Widget okbutton, buttonpopup;
-static Widget ecbutton, dcbutton;
-static Widget ndbutton0, ndbutton1, edbutton, ddbutton;
-static Widget ecpopup, ecdialog0, ecdialog1;
-static Widget edpopup, eddialog0, eddialog1, eddialog2;
-static Widget aboutpopup, quitpopup;
-
-static void dmxConfigCanvasGCs(void)
-{
- Display *dpy = XtDisplay(canvas);
- Window win = XtWindow(canvas);
- XGCValues gcvals;
- unsigned long mask;
- Colormap colormap;
- XColor fg, bg, hl, tmp;
-
- if (dmxConfigGCInit++) return;
-
- XtVaGetValues(canvas, XtNcolormap, &colormap, NULL);
- XAllocNamedColor(XtDisplay(canvas), colormap, "black", &bg, &tmp);
- XAllocNamedColor(XtDisplay(canvas), colormap, "white", &fg, &tmp);
- XAllocNamedColor(XtDisplay(canvas), colormap, "red", &hl, &tmp);
-
- mask = (GCFunction | GCPlaneMask | GCClipMask | GCForeground |
- GCBackground | GCLineWidth | GCLineStyle | GCCapStyle |
- GCFillStyle);
-
- /* FIXME: copy this from widget */
- gcvals.function = GXcopy;
- gcvals.plane_mask = AllPlanes;
- gcvals.clip_mask = None;
- gcvals.foreground = fg.pixel;
- gcvals.background = bg.pixel;
- gcvals.line_width = 0;
- gcvals.line_style = LineSolid;
- gcvals.cap_style = CapNotLast;
- gcvals.fill_style = FillSolid;
-
- dmxConfigGC = XCreateGC(dpy, win, mask, &gcvals);
- gcvals.foreground = hl.pixel;
- dmxConfigGCHL = XCreateGC(dpy, win, mask, &gcvals);
- gcvals.foreground = bg.pixel;
- gcvals.background = fg.pixel;
- dmxConfigGCRev = XCreateGC(dpy, win, mask, &gcvals);
-}
-
-static void dmxConfigGetDims(int *maxWidth, int *maxHeight)
-{
- DMXConfigSubPtr pt;
- DMXConfigEntryPtr e;
-
- *maxWidth = dmxConfigWallWidth = 0;
- *maxWidth = dmxConfigWallHeight = 0;
- if (!dmxConfigCurrent) return;
-
- dmxConfigWallWidth = dmxConfigCurrent->width;
- dmxConfigWallHeight = dmxConfigCurrent->height;
- if (!dmxConfigWallWidth || !dmxConfigWallHeight) {
- for (pt = dmxConfigCurrent->subentry; pt; pt = pt->next) {
- if (pt->type == dmxConfigDisplay) {
- int x = pt->display->scrnWidth + pt->display->rootXOrigin;
- int y = pt->display->scrnHeight + pt->display->rootYOrigin;
- if (x > dmxConfigWallWidth) dmxConfigWallWidth = x;
- if (y > dmxConfigWallHeight) dmxConfigWallHeight = y;
- }
- }
- }
- /* Compute maximums */
- *maxWidth = *maxHeight = 0;
- for (e = dmxConfigEntry; e; e = e->next) {
- if (e->type != dmxConfigVirtual) continue;
- for (pt = e->virtual->subentry; pt; pt = pt->next) {
- if (pt->type == dmxConfigDisplay) {
- int x = pt->display->scrnWidth + pt->display->rootXOrigin;
- int y = pt->display->scrnHeight + pt->display->rootYOrigin;
- if (x > *maxWidth) *maxWidth = x;
- if (y > *maxHeight) *maxHeight = y;
- }
- }
- }
- if (dmxConfigWallWidth > *maxWidth) *maxWidth = dmxConfigWallWidth;
- if (dmxConfigWallHeight > *maxHeight) *maxHeight = dmxConfigWallHeight;
-}
-
-static int scalex(int x) { return (int)((x * dmxConfigScaleX) + .5); }
-static int scaley(int y) { return (int)((y * dmxConfigScaleY) + .5); }
-static int unscalex(int x) { return (int)((x / dmxConfigScaleX) + .5); }
-static int unscaley(int y) { return (int)((y / dmxConfigScaleY) + .5); }
-
-static void dmxConfigDataUpdate(void)
-{
- /* FIXME: could result in buffer overflows */
- char cnambuf[512];
- char cdimbuf[128];
- char nambuf[512];
- char dimbuf[128];
- char rtbuf[128];
- char offbuf[128];
- const char *name;
-
- if (!dmxConfigCurrent) {
- XtVaSetValues(cnamebox, XtNlabel, "", XtNsensitive, False, NULL);
- XtVaSetValues(cdimbox, XtNlabel, "", XtNsensitive, False, NULL);
- XtVaSetValues(ecbutton, XtNsensitive, False, NULL);
- XtVaSetValues(dcbutton, XtNsensitive, False, NULL);
- XtVaSetValues(ndbutton0, XtNsensitive, False, NULL);
- XtVaSetValues(ndbutton1, XtNsensitive, False, NULL);
- } else {
- name = dmxConfigCurrent->name;
- XmuSnprintf(cnambuf, sizeof(cnambuf), "%s", name ? name : "");
- XmuSnprintf(cdimbuf, sizeof(cdimbuf), "%dx%d",
- dmxConfigWallWidth, dmxConfigWallHeight);
- XtVaSetValues(cnamebox, XtNlabel, cnambuf, XtNsensitive, True, NULL);
- XtVaSetValues(cdimbox, XtNlabel, cdimbuf, XtNsensitive, True, NULL);
- XtVaSetValues(ecbutton, XtNsensitive, True, NULL);
- XtVaSetValues(dcbutton, XtNsensitive, True, NULL);
- XtVaSetValues(ndbutton0, XtNsensitive, True, NULL);
- XtVaSetValues(ndbutton1, XtNsensitive, True, NULL);
- }
-
- if (!dmxConfigCurrentDisplay) {
- XtVaSetValues(namebox, XtNlabel, "", XtNsensitive, False, NULL);
- XtVaSetValues(dimbox, XtNlabel, "", XtNsensitive, False, NULL);
- XtVaSetValues(rtbox, XtNlabel, "", XtNsensitive, False, NULL);
- XtVaSetValues(origbox, XtNlabel, "", XtNsensitive, False, NULL);
- XtVaSetValues(edbutton, XtNsensitive, False, NULL);
- XtVaSetValues(ddbutton, XtNsensitive, False, NULL);
- } else {
- name = dmxConfigCurrentDisplay->name;
- XmuSnprintf(nambuf, sizeof(nambuf), "%s", name ? name : "");
- XmuSnprintf(dimbuf, sizeof(dimbuf), "%dx%d%c%d%c%d",
- dmxConfigCurrentDisplay->scrnWidth,
- dmxConfigCurrentDisplay->scrnHeight,
- dmxConfigCurrentDisplay->scrnXSign < 0 ? '-' : '+',
- dmxConfigCurrentDisplay->scrnX,
- dmxConfigCurrentDisplay->scrnYSign < 0 ? '-' : '+',
- dmxConfigCurrentDisplay->scrnY);
- XmuSnprintf(rtbuf, sizeof(dimbuf), "%dx%d%c%d%c%d",
- dmxConfigCurrentDisplay->rootWidth,
- dmxConfigCurrentDisplay->rootHeight,
- dmxConfigCurrentDisplay->rootXSign < 0 ? '-' : '+',
- dmxConfigCurrentDisplay->rootX,
- dmxConfigCurrentDisplay->rootYSign < 0 ? '-' : '+',
- dmxConfigCurrentDisplay->rootY);
- XmuSnprintf(offbuf, sizeof(offbuf), "@%dx%d",
- dmxConfigCurrentDisplay->rootXOrigin,
- dmxConfigCurrentDisplay->rootYOrigin);
- XtVaSetValues(namebox, XtNlabel, nambuf, XtNsensitive, True, NULL);
- XtVaSetValues(dimbox, XtNlabel, dimbuf, XtNsensitive, True, NULL);
- XtVaSetValues(rtbox, XtNlabel, rtbuf, XtNsensitive, True, NULL);
- XtVaSetValues(origbox, XtNlabel, offbuf, XtNsensitive, True, NULL);
- XtVaSetValues(edbutton, XtNsensitive, True, NULL);
- XtVaSetValues(ddbutton, XtNsensitive, True, NULL);
- }
-}
-
-static void dmxConfigCanvasUpdate(void)
-{
- DMXConfigSubPtr pt;
- Display *dpy = XtDisplay(canvas);
- Window win = XtWindow(canvas);
- GContext gcontext = XGContextFromGC(dmxConfigGC);
- XFontStruct *fs;
- int w, h;
-
- XFillRectangle(dpy, win, dmxConfigGCRev,
- 0, 0, dmxConfigWidgetWidth, dmxConfigWidgetHeight);
- dmxConfigDataUpdate();
- if (!dmxConfigCurrent) return;
-
- w = scalex(dmxConfigWallWidth);
- h = scaley(dmxConfigWallHeight);
- if (w > dmxConfigWidgetWidth - 1) w = dmxConfigWidgetWidth - 1;
- if (h > dmxConfigWidgetHeight - 1) h = dmxConfigWidgetHeight - 1;
- XDrawRectangle(dpy, win, dmxConfigGC, 0, 0, w, h);
- fs = XQueryFont(dpy, gcontext);
- for (pt = dmxConfigCurrent->subentry; pt; pt = pt->next) {
- int x, y, len;
- int xo = 3, yo = fs->ascent + fs->descent + 2;
- GC gc;
-
- if (pt->type != dmxConfigDisplay) continue;
- gc = (pt->display == dmxConfigCurrentDisplay
- ? dmxConfigGCHL
- : dmxConfigGC);
- x = scalex(pt->display->rootXOrigin);
- y = scaley(pt->display->rootYOrigin);
- w = scalex(pt->display->scrnWidth);
- h = scaley(pt->display->scrnHeight);
- len = pt->display->name ? strlen(pt->display->name) : 0;
- if (x > dmxConfigWidgetWidth - 1) x = dmxConfigWidgetWidth - 1;
- if (y > dmxConfigWidgetHeight - 1) y = dmxConfigWidgetHeight - 1;
- XDrawRectangle(dpy, win, gc, x, y, w, h);
- if (fs && len) {
- while (len && XTextWidth(fs, pt->display->name, len) >= w - 2 * xo)
- --len;
- if (len)
- XDrawString(dpy, win, gc, x+xo, y+yo, pt->display->name, len);
- }
- }
- if (fs) XFreeFontInfo(NULL, fs, 0);
-}
-
-static void dmxConfigCanvasDraw(Region region)
-{
- Display *dpy = XtDisplay(canvas);
- int maxWidth, maxHeight;
-
- dmxConfigCanvasGCs();
- if (region) {
- XSetRegion(dpy, dmxConfigGC, region);
- XSetRegion(dpy, dmxConfigGCRev, region);
- XSetRegion(dpy, dmxConfigGCHL, region);
- }
- XtVaGetValues(canvas,
- XtNwidth, &dmxConfigWidgetWidth,
- XtNheight, &dmxConfigWidgetHeight,
- NULL);
- dmxConfigGetDims(&maxWidth, &maxHeight);
- dmxConfigScaleX = (double)dmxConfigWidgetWidth / maxWidth;
- dmxConfigScaleY = (double)dmxConfigWidgetHeight / maxHeight;
- if (dmxConfigScaleX > dmxConfigScaleY) dmxConfigScaleX = dmxConfigScaleY;
- if (dmxConfigScaleY > dmxConfigScaleX) dmxConfigScaleY = dmxConfigScaleX;
- dmxConfigCanvasUpdate();
- if (region) {
- XSetClipMask(dpy, dmxConfigGC, None);
- XSetClipMask(dpy, dmxConfigGCRev, None);
- XSetClipMask(dpy, dmxConfigGCHL, None);
- }
-}
-
-static void dmxConfigSelectCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- dmxConfigCurrent = closure;
- dmxConfigVirtualPrint(stdout, dmxConfigCurrent);
- dmxConfigCanvasDraw(NULL);
-}
-
-static void dmxConfigCopystrings(void)
-{
- DMXConfigEntryPtr pt;
- DMXConfigSubPtr sub;
-
- if (!dmxConfigCurrent) return;
-
- /* FIXME: this is all a per-config file
- * memory leak */
- for (pt = dmxConfigEntry; pt; pt = pt->next) {
- if (pt->type == dmxConfigVirtual) {
- pt->virtual->name = XtNewString(pt->virtual->name
- ? pt->virtual->name
- : "");
-
- for (sub = pt->virtual->subentry; sub; sub = sub->next) {
- if (sub->type != dmxConfigDisplay) continue;
- sub->display->name = XtNewString(sub->display->name
- ? sub->display->name
- : "");
- }
- }
- }
-}
-
-static void dmxConfigGetValueString(char **d, Widget w)
-{
- const char *tmp = XawDialogGetValueString(w);
- if (*d) XtFree(*d);
- *d = XtNewString(tmp);
-}
-
-static void dmxConfigSetupCnamemenu(void)
-{
- static Widget cnamemenu = NULL;
- Widget w;
- DMXConfigEntryPtr pt;
-
- if (cnamemenu) XtDestroyWidget(cnamemenu);
- cnamemenu = NULL;
-
- if (!dmxConfigCurrent) return;
- cnamemenu = XtVaCreatePopupShell("cnamemenu", simpleMenuWidgetClass,
- cnamebox,
- NULL);
-
- for (pt = dmxConfigEntry; pt; pt = pt->next) {
- if (pt->type == dmxConfigVirtual) {
- w = XtVaCreateManagedWidget(pt->virtual->name
- ? pt->virtual->name
- : "",
- smeBSBObjectClass, cnamemenu,
- NULL);
- XtAddCallback(w, XtNcallback,
- dmxConfigSelectCallback, pt->virtual);
- }
- }
-}
-
-static void dmxConfigReadFile(void)
-{
- FILE *str;
- DMXConfigEntryPtr pt;
-
- if (!(str = fopen(dmxConfigFilename, "r"))) {
- dmxLog(dmxWarning, "Unable to read configuration file %s\n",
- dmxConfigFilename);
- return;
- }
- yyin = str;
- yydebug = 0;
- yyparse();
- fclose(str);
- dmxLog(dmxInfo, "Read configuration file %s\n", dmxConfigFilename);
-
- for (pt = dmxConfigEntry; pt; pt = pt->next) {
- if (pt->type == dmxConfigVirtual) {
- dmxConfigCurrent = pt->virtual;
- break;
- }
- }
-
-
-
- if (XtIsRealized(canvas)) {
- dmxConfigCopystrings();
- dmxConfigSetupCnamemenu();
- dmxConfigCanvasDraw(NULL);
- }
- dmxConfigVirtualPrint(stdout, dmxConfigCurrent);
-}
-
-static void dmxConfigWriteFile(void)
-{
- FILE *str;
-
- if (!(str = fopen(dmxConfigFilename, "w"))) {
- dmxLog(dmxWarning, "Unable to write configuration file %s\n",
- dmxConfigFilename);
- return;
- }
- dmxConfigPrint(str, dmxConfigEntry);
- fclose(str);
-}
-
-static DMXConfigDisplayPtr dmxConfigFindDisplay(int x, int y)
-{
- DMXConfigSubPtr pt;
-
- if (!dmxConfigCurrent) return NULL;
- for (pt = dmxConfigCurrent->subentry; pt; pt = pt->next) {
- DMXConfigDisplayPtr d = pt->display;
- if (pt->type != dmxConfigDisplay) continue;
- if (x >= scalex(d->rootXOrigin)
- && x <= scalex(d->rootXOrigin + d->scrnWidth)
- && y >= scaley(d->rootYOrigin)
- && y <= scaley(d->rootYOrigin + d->scrnHeight)) return d;
- }
- return NULL;
-}
-
-static void dmxConfigSetPopupPosition(Widget popup)
-{
- Position x, y;
- Window t1, t2;
- int root_x, root_y;
- int temp_x, temp_y;
- unsigned int temp;
-
-
- XtRealizeWidget(popup);
- if (!XQueryPointer(XtDisplay(popup), XtWindow(popup), &t1, &t2,
- &root_x, &root_y, &temp_x, &temp_y, &temp))
- root_x = root_y = 0;
-
- x = root_x - 5;
- y = root_y - 5;
- XtVaSetValues(popup, XtNx, x, XtNy, y, NULL);
-}
-
-static void dmxConfigPlaceMenu(Widget w, XEvent *event,
- String *params, Cardinal *num_params)
-{
- dmxConfigSetPopupPosition(buttonpopup);
-}
-
-static void dmxConfigMove(int deltaX, int deltaY)
-{
- dmxConfigCurrentDisplay->rootXOrigin += deltaX;
- dmxConfigCurrentDisplay->rootYOrigin += deltaY;
- if (dmxConfigCurrentDisplay->rootXOrigin < 0)
- dmxConfigCurrentDisplay->rootXOrigin = 0;
- if (dmxConfigCurrentDisplay->rootYOrigin < 0)
- dmxConfigCurrentDisplay->rootYOrigin = 0;
- if (dmxConfigWallWidth && dmxConfigWallHeight) {
- if (dmxConfigCurrentDisplay->rootXOrigin >= dmxConfigWallWidth)
- dmxConfigCurrentDisplay->rootXOrigin = dmxConfigWallWidth - 1;
- if (dmxConfigCurrentDisplay->rootYOrigin >= dmxConfigWallHeight)
- dmxConfigCurrentDisplay->rootYOrigin = dmxConfigWallHeight - 1;
- }
- dmxConfigCanvasUpdate();
- dmxConfigNotSaved = 1;
-}
-
-static void dmxConfigCanvasInput(Widget w, XtPointer closure,
- XtPointer callData)
-{
- XEvent *e = (XEvent *)callData;
- DMXConfigDisplayPtr display = NULL;
-
- switch (e->type) {
- case ButtonPress:
- if (e->xbutton.button == Button1) {
- dmxConfigGrabbed = 1;
- dmxConfigGrabbedFine = 0;
- dmxConfigGrabbedX = e->xbutton.x;
- dmxConfigGrabbedY = e->xbutton.y;
- }
- if (e->xbutton.button == Button2) {
- dmxConfigGrabbed = 1;
- dmxConfigGrabbedFine = 1;
- dmxConfigGrabbedX = e->xbutton.x;
- dmxConfigGrabbedY = e->xbutton.y;
- }
- break;
- case ButtonRelease:
- if (e->xbutton.button == Button1) dmxConfigGrabbed = 0;
- if (e->xbutton.button == Button2) dmxConfigGrabbed = 0;
- break;
- case MotionNotify:
- if (dmxConfigGrabbed && dmxConfigCurrentDisplay) {
- int deltaX = e->xmotion.x - dmxConfigGrabbedX;
- int deltaY = e->xmotion.y - dmxConfigGrabbedY;
- dmxConfigMove(dmxConfigGrabbedFine ? deltaX : unscalex(deltaX),
- dmxConfigGrabbedFine ? deltaY : unscaley(deltaY));
- dmxConfigGrabbedX = e->xmotion.x;
- dmxConfigGrabbedY = e->xmotion.y;
- } else {
- display = dmxConfigFindDisplay(e->xmotion.x, e->xmotion.y);
- if (display != dmxConfigCurrentDisplay) {
- dmxConfigCurrentDisplay = display;
- dmxConfigCanvasUpdate();
- }
- }
- break;
- case KeyPress:
- switch (XLookupKeysym(&e->xkey, 0)) {
- case XK_Right: dmxConfigMove(1,0); break;
- case XK_Left: dmxConfigMove(-1,0); break;
- case XK_Down: dmxConfigMove(0,1); break;
- case XK_Up: dmxConfigMove(0,-1); break;
- }
- break;
- }
-}
-
-static void dmxConfigCanvasResize(Widget w, XtPointer closure,
- XtPointer callData)
-{
- dmxConfigCanvasDraw(NULL);
-}
-
-static void dmxConfigCanvasExpose(Widget w, XtPointer closure,
- XtPointer callData)
-{
- CanvasExposeDataPtr data = (CanvasExposeDataPtr)callData;
-
- dmxConfigCanvasDraw(data->region);
-}
-
-static void dmxConfigOpenCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- dmxConfigState = dmxConfigStateOpen;
- XtVaSetValues(okbutton, XtNlabel, "Open", NULL);
- dmxConfigSetPopupPosition(openpopup);
- XtPopup(openpopup, XtGrabExclusive);
-}
-
-static void dmxConfigSaveCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- dmxConfigState = dmxConfigStateSave;
- XtVaSetValues(okbutton, XtNlabel, "Save", NULL);
- dmxConfigSetPopupPosition(openpopup);
- XtPopup(openpopup, XtGrabExclusive);
-}
-
-static void dmxConfigOkCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- dmxConfigGetValueString(&dmxConfigFilename, opendialog);
- XtPopdown(openpopup);
- if (dmxConfigState == dmxConfigStateOpen) dmxConfigReadFile();
- else dmxConfigWriteFile();
- dmxConfigNotSaved = 0;
-}
-
-static void dmxConfigCanCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- XtPopdown(openpopup);
-}
-
-static void dmxConfigECCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- char buf[256]; /* RATS: Only used in XmuSnprintf */
-
- if (!dmxConfigCurrent) return;
- dmxConfigSetPopupPosition(ecpopup);
- XtVaSetValues(ecdialog0, XtNvalue,
- dmxConfigCurrent->name ? dmxConfigCurrent->name : "",
- NULL);
- XmuSnprintf(buf, sizeof(buf), "%dx%d",
- dmxConfigCurrent->width, dmxConfigCurrent->height);
- XtVaSetValues(ecdialog1, XtNvalue, buf, NULL);
- XtPopup(ecpopup, XtGrabExclusive);
-}
-
-static void dmxConfigNCCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- int width = 1280*2, height = 1024*2;
-
- if (dmxConfigCurrent) {
- width = dmxConfigCurrent->width;
- height = dmxConfigCurrent->height;
- }
-
- dmxConfigCurrent = dmxConfigCreateVirtual(NULL, NULL, NULL,
- NULL, NULL, NULL);
- dmxConfigNewVirtual = dmxConfigCurrent;
- dmxConfigCurrent->width = width;
- dmxConfigCurrent->height = height;
- dmxConfigEntry = dmxConfigAddEntry(dmxConfigEntry, dmxConfigVirtual, NULL,
- dmxConfigCurrent);
- dmxConfigECCallback(w, closure, callData);
-}
-
-static void dmxConfigDCCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- DMXConfigEntryPtr pt;
-
- if (!dmxConfigEntry) return;
- if (dmxConfigEntry
- && dmxConfigEntry->type == dmxConfigVirtual
- && dmxConfigEntry->virtual == dmxConfigCurrent) {
- dmxConfigEntry = dmxConfigEntry->next;
- } else {
- for (pt = dmxConfigEntry; pt && pt->next; pt = pt->next)
- if (pt->next->type == dmxConfigVirtual
- && pt->next->virtual == dmxConfigCurrent) {
- pt->next = pt->next->next;
- break;
- }
- }
- dmxConfigFreeVirtual(dmxConfigCurrent);
- dmxConfigCurrent = NULL;
- dmxConfigCurrentDisplay = NULL;
-
- /* Make the first entry current */
- for (pt = dmxConfigEntry; pt; pt = pt->next) {
- if (pt->type == dmxConfigVirtual) {
- dmxConfigCurrent = pt->virtual;
- break;
- }
- }
-
- dmxConfigSetupCnamemenu();
- dmxConfigCanvasDraw(NULL);
-}
-
-static void dmxConfigECOkCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- const char *value;
- char *endpt;
-
- dmxConfigGetValueString((char **)&dmxConfigCurrent->name, ecdialog0);
- value = XawDialogGetValueString(ecdialog1);
- dmxConfigCurrent->width = strtol(value, &endpt, 10);
- dmxConfigCurrent->height = strtol(endpt+1, NULL, 10);
- XtPopdown(ecpopup);
- dmxConfigCurrentDisplay = NULL;
- dmxConfigNewVirtual = NULL;
- dmxConfigSetupCnamemenu();
- dmxConfigCanvasDraw(NULL);
- dmxConfigNotSaved = 1;
-}
-
-static void dmxConfigECCanCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- if (dmxConfigNewVirtual) dmxConfigDCCallback(w, closure, callData);
- dmxConfigNewVirtual = NULL;
- XtPopdown(ecpopup);
-}
-
-static void dmxConfigEDCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- char buf[256]; /* RATS: Only used in XmuSnprintf */
-
- if (!dmxConfigCurrent || !dmxConfigCurrentDisplay) return;
- dmxConfigSetPopupPosition(edpopup);
- XtVaSetValues(eddialog0, XtNvalue,
- dmxConfigCurrentDisplay->name
- ? dmxConfigCurrentDisplay->name
- : "",
- NULL);
- XmuSnprintf(buf, sizeof(buf), "%dx%d%c%d%c%d",
- dmxConfigCurrentDisplay->scrnWidth,
- dmxConfigCurrentDisplay->scrnHeight,
- dmxConfigCurrentDisplay->scrnXSign < 0 ? '-' : '+',
- dmxConfigCurrentDisplay->scrnY,
- dmxConfigCurrentDisplay->scrnYSign < 0 ? '-' : '+',
- dmxConfigCurrentDisplay->scrnY);
- XtVaSetValues(eddialog1, XtNvalue, buf, NULL);
- XmuSnprintf(buf, sizeof(buf), "@%dx%d",
- dmxConfigCurrentDisplay->rootXOrigin,
- dmxConfigCurrentDisplay->rootYOrigin);
- XtVaSetValues(eddialog2, XtNvalue, buf, NULL);
- XtPopup(edpopup, XtGrabExclusive);
-}
-
-static void dmxConfigNDCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- int width = 1280, height = 1024;
-
- if (!dmxConfigCurrent) return;
- if (dmxConfigCurrentDisplay) {
- width = dmxConfigCurrentDisplay->scrnWidth;
- height = dmxConfigCurrentDisplay->scrnHeight;
- }
- dmxConfigCurrentDisplay = dmxConfigCreateDisplay(NULL, NULL, NULL,
- NULL, NULL);
- dmxConfigNewDisplay = dmxConfigCurrentDisplay;
- dmxConfigCurrentDisplay->scrnWidth = width;
- dmxConfigCurrentDisplay->scrnHeight = height;
-
- dmxConfigCurrent->subentry
- = dmxConfigAddSub(dmxConfigCurrent->subentry,
- dmxConfigSubDisplay(dmxConfigCurrentDisplay));
- dmxConfigEDCallback(w, closure, callData);
-}
-
-static void dmxConfigDDCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- DMXConfigSubPtr pt;
-
- if (!dmxConfigCurrent || !dmxConfigCurrentDisplay) return;
- /* First */
- if (dmxConfigCurrent->subentry
- && dmxConfigCurrent->subentry->type == dmxConfigDisplay
- && dmxConfigCurrent->subentry->display == dmxConfigCurrentDisplay) {
- dmxConfigCurrent->subentry = dmxConfigCurrent->subentry->next;
- } else {
- for (pt = dmxConfigCurrent->subentry; pt && pt->next; pt = pt->next)
- if (pt->next->type == dmxConfigDisplay
- && pt->next->display == dmxConfigCurrentDisplay) {
- pt->next = pt->next->next;
- break;
- }
- }
- dmxConfigFreeDisplay(dmxConfigCurrentDisplay);
- dmxConfigCurrentDisplay = NULL;
- dmxConfigSetupCnamemenu();
- dmxConfigCanvasDraw(NULL);
-}
-
-static void dmxConfigAboutCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- dmxConfigSetPopupPosition(aboutpopup);
- XtPopup(aboutpopup, XtGrabExclusive);
-}
-
-static void dmxConfigAboutOkCallback(Widget w, XtPointer closure,
- XtPointer CallData)
-{
- XtPopdown(aboutpopup);
-}
-
-static void dmxConfigQuitCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- if (dmxConfigNotSaved) {
- dmxConfigSetPopupPosition(quitpopup);
- XtPopup(quitpopup, XtGrabExclusive);
- return;
- }
- exit(0);
-}
-
-static void dmxConfigQuitOkCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- XtPopdown(quitpopup);
- exit(0);
-}
-
-static void dmxConfigQuitCanCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- XtPopdown(quitpopup);
-}
-
-static void dmxConfigEDOkCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- char *value;
- char *endpt;
-
- dmxConfigNewDisplay = NULL;
- dmxConfigGetValueString((char **)&dmxConfigCurrentDisplay->name,
- eddialog0);
- value = XawDialogGetValueString(eddialog1);
- if (*value == '-' || *value == '+') {
- dmxConfigCurrentDisplay->scrnWidth = 0;
- dmxConfigCurrentDisplay->scrnHeight = 0;
- endpt = value;
- } else {
- dmxConfigCurrentDisplay->scrnWidth = strtol(value, &endpt, 10);
- dmxConfigCurrentDisplay->scrnHeight = strtol(endpt+1, &endpt, 10);
- }
- if (*endpt) {
- dmxConfigCurrentDisplay->scrnXSign = (*endpt == '-') ? -1 : 1;
- dmxConfigCurrentDisplay->scrnX = strtol(endpt+1, &endpt, 10);
- dmxConfigCurrentDisplay->scrnYSign = (*endpt == '-') ? -1 : 1;
- dmxConfigCurrentDisplay->scrnY = strtol(endpt+1, NULL, 10);
- }
- if (dmxConfigCurrentDisplay->scrnX < 0)
- dmxConfigCurrentDisplay->scrnX = -dmxConfigCurrentDisplay->scrnX;
- if (dmxConfigCurrentDisplay->scrnY < 0)
- dmxConfigCurrentDisplay->scrnY = -dmxConfigCurrentDisplay->scrnY;
- value = XawDialogGetValueString(eddialog2);
- dmxConfigCurrentDisplay->rootXOrigin = strtol(value+1, &endpt, 10);
- dmxConfigCurrentDisplay->rootYOrigin = strtol(endpt+1, NULL, 10);
- XtPopdown(edpopup);
- dmxConfigSetupCnamemenu();
- dmxConfigCanvasDraw(NULL);
- dmxConfigNotSaved = 1;
-}
-
-static void dmxConfigEDCanCallback(Widget w, XtPointer closure,
- XtPointer callData)
-{
- if (dmxConfigNewDisplay) dmxConfigDDCallback(w, closure, callData);
- dmxConfigNewDisplay = NULL;
- XtPopdown(edpopup);
-}
-
-static void dmxConfigOkAction(Widget w, XEvent *event,
- String *params, Cardinal *num_params)
-{
- Widget p = XtParent(w);
- Widget t;
-
- if (p == opendialog) dmxConfigOkCallback(w, NULL, NULL);
-
- if (p == ecdialog0) {
- t = XtNameToWidget(ecdialog1, "value");
- XWarpPointer(XtDisplay(t), None, XtWindow(t), 0, 0, 0, 0, 0, 10);
- }
- if (p == ecdialog1) dmxConfigECOkCallback(w, NULL, NULL);
-
- if (p == eddialog0) {
- t = XtNameToWidget(eddialog1, "value");
- XWarpPointer(XtDisplay(t), None, XtWindow(t), 0, 0, 0, 0, 0, 10);
- }
- if (p == eddialog1) {
- t = XtNameToWidget(eddialog2, "value");
- XWarpPointer(XtDisplay(t), None, XtWindow(t), 0, 0, 0, 0, 0, 10);
- }
- if (p == eddialog2) dmxConfigEDOkCallback(w, NULL, NULL);
-}
-
-int main(int argc, char **argv)
-{
- XtAppContext appContext;
- Widget toplevel;
- Widget parent, menubox, bottombox, databox, canvasbox;
- Widget filebutton, helpbutton;
- Widget filemenu, openbutton, savebutton, quitbutton;
- Widget helpmenu, aboutbutton, aboutbox, abouttext, aboutok;
- Widget quitbox, quittext, quitok, quitcan;
- Widget ncbutton;
- Widget canbutton;
- Widget ecbox, ecokbutton, eccanbutton;
- Widget edbox, edokbutton;
- Widget edcanbutton;
- /* FIXME: add meta-i, ctrl,meta-z,v? */
- const char *opentrans = "<Key>Return: openOk()\n\
- <Key>Linefeed: openOk()\n\
- Ctrl<Key>M: openOk()\n\
- Ctrl<Key>J: openOk()\n\
- Ctrl<Key>O: noop()\n\
- Ctrl<Key>N: noop()\n\
- Ctrl<Key>P: noop()";
- const char *canvastrans =
- "<Btn3Down>: placeMenu() XtMenuPopup(buttonpopup)";
- XtActionsRec actiontable[] = {
- { "openOk", dmxConfigOkAction },
- { "placeMenu", dmxConfigPlaceMenu },
- { "noop", NULL }
- };
-
- dmxConfigFilename = XtNewString((argc >= 2) ? argv[1] : "");
-
- toplevel = XtVaAppInitialize(&appContext, "XDmxconfig",
- NULL, 0,
- &argc, argv,
- NULL,
- NULL);
-
- /* Main boxes */
- parent = XtVaCreateManagedWidget("parent", formWidgetClass, toplevel,
- XtNorientation, XtorientVertical,
- XtNwidth, DMX_MAIN_WIDTH,
- XtNheight, DMX_MAIN_HEIGHT,
- NULL);
- menubox = XtVaCreateManagedWidget("menubox", boxWidgetClass, parent,
- XtNborderWidth, 0,
- XtNorientation, XtorientHorizontal,
- XtNtop, XtChainTop,
- NULL);
- bottombox = XtVaCreateManagedWidget("bottombox", formWidgetClass, parent,
- XtNborderWidth, 0,
- XtNfromVert, menubox,
- XtNorientation, XtorientHorizontal,
- NULL);
- databox = XtVaCreateManagedWidget("databox", formWidgetClass,
- bottombox,
- XtNborderWidth, 0,
- XtNhorizDistance, 0,
- XtNwidth, DMX_DATA_WIDTH,
- XtNheight, DMX_DATA_HEIGHT,
- XtNleft, XtChainLeft,
- XtNorientation, XtorientVertical,
- NULL);
-
- /* Data */
- cnamebox = XtVaCreateManagedWidget("cnamebox", menuButtonWidgetClass,
- databox,
- XtNtop, XtChainTop,
- XtNjustify, XtJustifyLeft,
- XtNwidth, DMX_DATA_WIDTH,
- XtNlabel, "",
- XtNmenuName, "cnamemenu",
- NULL);
- cdimbox = XtVaCreateManagedWidget("cdimbox", labelWidgetClass,
- databox,
- XtNfromVert, cnamebox,
- XtNjustify, XtJustifyLeft,
- XtNwidth, DMX_DATA_WIDTH,
- XtNlabel, "",
- NULL);
- namebox = XtVaCreateManagedWidget("namebox", labelWidgetClass, databox,
- XtNfromVert, cdimbox,
- XtNjustify, XtJustifyLeft,
- XtNwidth, DMX_DATA_WIDTH,
- XtNlabel, "",
- NULL);
- dimbox = XtVaCreateManagedWidget("dimbox", labelWidgetClass,
- databox,
- XtNfromVert, namebox,
- XtNjustify, XtJustifyLeft,
- XtNwidth, DMX_DATA_WIDTH,
- XtNlabel, "",
- NULL);
- rtbox = XtVaCreateManagedWidget("rtbox", labelWidgetClass,
- databox,
- XtNfromVert, dimbox,
- XtNjustify, XtJustifyLeft,
- XtNwidth, DMX_DATA_WIDTH,
- XtNlabel, "",
- NULL);
- origbox = XtVaCreateManagedWidget("origbox", labelWidgetClass,
- databox,
- XtNfromVert, rtbox,
- XtNjustify, XtJustifyLeft,
- XtNwidth, DMX_DATA_WIDTH,
- XtNlabel, "",
- NULL);
-
- /* Canvas */
- canvasbox = XtVaCreateManagedWidget("canvasbox", boxWidgetClass,
- bottombox,
- XtNborderWidth, 0,
- XtNwidth, DMX_CANVAS_WIDTH,
- XtNheight, DMX_CANVAS_HEIGHT,
- XtNfromHoriz, databox,
- NULL);
-
- canvas = XtVaCreateManagedWidget("canvas", canvasWidgetClass,
- canvasbox,
- XtNwidth, DMX_CANVAS_WIDTH,
- XtNheight, DMX_CANVAS_HEIGHT,
- NULL);
-
-
- /* Main menu buttons */
- filebutton = XtVaCreateManagedWidget("File", menuButtonWidgetClass,
- menubox,
- XtNmenuName, "filemenu",
- NULL);
- helpbutton = XtVaCreateManagedWidget("Help", menuButtonWidgetClass,
- menubox,
- XtNmenuName, "helpmenu",
- NULL);
-
-
- /* File submenu buttons */
- filemenu = XtVaCreatePopupShell("filemenu", simpleMenuWidgetClass,
- filebutton, NULL);
- openbutton = XtVaCreateManagedWidget("Open File", smeBSBObjectClass,
- filemenu, NULL);
- savebutton = XtVaCreateManagedWidget("Save File", smeBSBObjectClass,
- filemenu,
- NULL);
- ncbutton = XtVaCreateManagedWidget("New Global", smeBSBObjectClass,
- filemenu, NULL);
- ecbutton = XtVaCreateManagedWidget("Edit Global", smeBSBObjectClass,
- filemenu,
- NULL);
- dcbutton = XtVaCreateManagedWidget("Delete Global", smeBSBObjectClass,
- filemenu,
- NULL);
- ndbutton0 = XtVaCreateManagedWidget("New Display", smeBSBObjectClass,
- filemenu,
- NULL);
- quitbutton = XtVaCreateManagedWidget("Quit", smeBSBObjectClass,
- filemenu, NULL);
-
- /* Help submenu button */
- helpmenu = XtVaCreatePopupShell("helpmenu", simpleMenuWidgetClass,
- helpbutton, NULL);
- aboutbutton = XtVaCreateManagedWidget("About", smeBSBObjectClass,
- helpmenu, NULL);
-
- /* Open popup */
- openpopup = XtVaCreatePopupShell("openpopup", transientShellWidgetClass,
- toplevel, NULL);
- opendialog = XtVaCreateManagedWidget("opendialog", dialogWidgetClass,
- openpopup,
- XtNlabel, "Filename: ",
- XtNvalue, dmxConfigFilename,
- NULL);
- okbutton = XtVaCreateManagedWidget("Open", commandWidgetClass,
- opendialog, NULL);
- canbutton = XtVaCreateManagedWidget("Cancel", commandWidgetClass,
- opendialog, NULL);
-
- /* EC popup */
- ecpopup = XtVaCreatePopupShell("ecpopup", transientShellWidgetClass,
- toplevel, NULL);
- ecbox = XtVaCreateManagedWidget("ecbox", boxWidgetClass,
- ecpopup, NULL);
- ecdialog0 = XtVaCreateManagedWidget("ecdialog0", dialogWidgetClass,
- ecbox,
- XtNlabel, "Name: ",
- XtNvalue, "",
- NULL);
- ecdialog1 = XtVaCreateManagedWidget("ecdialog1", dialogWidgetClass,
- ecbox,
- XtNlabel, "Dimension: ",
- XtNvalue, "",
- NULL);
- ecokbutton = XtVaCreateManagedWidget("OK", commandWidgetClass,
- ecbox, NULL);
- eccanbutton = XtVaCreateManagedWidget("Cancel", commandWidgetClass,
- ecbox, NULL);
-
- /* ED popup */
- edpopup = XtVaCreatePopupShell("edpopup", transientShellWidgetClass,
- toplevel, NULL);
- edbox = XtVaCreateManagedWidget("edbox", boxWidgetClass,
- edpopup, NULL);
- eddialog0 = XtVaCreateManagedWidget("eddialog0", dialogWidgetClass,
- edbox,
- XtNlabel, "Display Name: ",
- XtNvalue, "",
- NULL);
- eddialog1 = XtVaCreateManagedWidget("eddialog1", dialogWidgetClass,
- edbox,
- XtNlabel, "Geometry: ",
- XtNvalue, "",
- NULL);
- eddialog2 = XtVaCreateManagedWidget("eddialog2", dialogWidgetClass,
- edbox,
- XtNlabel, "Offset: ",
- XtNvalue, "",
- NULL);
- edokbutton = XtVaCreateManagedWidget("OK", commandWidgetClass,
- edbox, NULL);
- edcanbutton = XtVaCreateManagedWidget("Cancel", commandWidgetClass,
- edbox, NULL);
-
- /* About popup */
- aboutpopup = XtVaCreatePopupShell("aboutpopup",transientShellWidgetClass,
- toplevel, NULL);
- aboutbox = XtVaCreateManagedWidget("aboutbox", boxWidgetClass,
- aboutpopup, NULL);
- abouttext = XtVaCreateManagedWidget("abouttext", labelWidgetClass,
- aboutbox,
- XtNlabel, DMX_INFO,
- NULL);
- aboutok = XtVaCreateManagedWidget("OK", commandWidgetClass,
- aboutbox, NULL);
-
- /* Quit popup */
- quitpopup = XtVaCreatePopupShell("quitpopup",transientShellWidgetClass,
- toplevel, NULL);
- quitbox = XtVaCreateManagedWidget("quitbox", boxWidgetClass,
- quitpopup, NULL);
- quittext = XtVaCreateManagedWidget("quittext", labelWidgetClass,
- quitbox,
- XtNlabel,
- "Changes to the configuration\n"
- "been made that have not yet\n"
- "been saved. Do you want to\n"
- "quit without saving?",
- NULL);
- quitok = XtVaCreateManagedWidget("Quit WITHOUT Saving",
- commandWidgetClass,
- quitbox, NULL);
- quitcan = XtVaCreateManagedWidget("Continue Editing",
- commandWidgetClass,
- quitbox, NULL);
-
- /* Button popup */
- buttonpopup = XtVaCreatePopupShell("buttonpopup", simpleMenuWidgetClass,
- toplevel, NULL);
- ndbutton1 = XtVaCreateManagedWidget("New Display", smeBSBObjectClass,
- buttonpopup,
- NULL);
- edbutton = XtVaCreateManagedWidget("Edit Display", smeBSBObjectClass,
- buttonpopup,
- NULL);
- ddbutton = XtVaCreateManagedWidget("Delete Display", smeBSBObjectClass,
- buttonpopup,
- NULL);
-
- /* Callbacks */
- XtAddCallback(openbutton, XtNcallback, dmxConfigOpenCallback, NULL);
- XtAddCallback(savebutton, XtNcallback, dmxConfigSaveCallback, NULL);
- XtAddCallback(okbutton, XtNcallback, dmxConfigOkCallback, NULL);
- XtAddCallback(canbutton, XtNcallback, dmxConfigCanCallback, NULL);
-
- XtAppAddActions(appContext, actiontable, XtNumber(actiontable));
- XtOverrideTranslations(canvas, XtParseTranslationTable(canvastrans));
- XtOverrideTranslations(XtNameToWidget(opendialog, "value"),
- XtParseTranslationTable(opentrans));
- XtOverrideTranslations(XtNameToWidget(ecdialog0, "value"),
- XtParseTranslationTable(opentrans));
- XtOverrideTranslations(XtNameToWidget(ecdialog1, "value"),
- XtParseTranslationTable(opentrans));
- XtOverrideTranslations(XtNameToWidget(eddialog0, "value"),
- XtParseTranslationTable(opentrans));
- XtOverrideTranslations(XtNameToWidget(eddialog1, "value"),
- XtParseTranslationTable(opentrans));
- XtOverrideTranslations(XtNameToWidget(eddialog2, "value"),
- XtParseTranslationTable(opentrans));
-
- XtAddCallback(ncbutton, XtNcallback, dmxConfigNCCallback, NULL);
- XtAddCallback(ecbutton, XtNcallback, dmxConfigECCallback, NULL);
- XtAddCallback(ecokbutton, XtNcallback, dmxConfigECOkCallback, NULL);
- XtAddCallback(eccanbutton, XtNcallback, dmxConfigECCanCallback, NULL);
- XtAddCallback(dcbutton, XtNcallback, dmxConfigDCCallback, NULL);
-
- XtAddCallback(ndbutton0, XtNcallback, dmxConfigNDCallback, NULL);
- XtAddCallback(ndbutton1, XtNcallback, dmxConfigNDCallback, NULL);
- XtAddCallback(edbutton, XtNcallback, dmxConfigEDCallback, NULL);
- XtAddCallback(ddbutton, XtNcallback, dmxConfigDDCallback, NULL);
- XtAddCallback(edokbutton, XtNcallback, dmxConfigEDOkCallback, NULL);
- XtAddCallback(edcanbutton, XtNcallback, dmxConfigEDCanCallback, NULL);
-
- XtAddCallback(aboutbutton, XtNcallback, dmxConfigAboutCallback, NULL);
- XtAddCallback(aboutok, XtNcallback, dmxConfigAboutOkCallback, NULL);
- XtAddCallback(quitok, XtNcallback, dmxConfigQuitOkCallback, NULL);
- XtAddCallback(quitcan, XtNcallback, dmxConfigQuitCanCallback, NULL);
-
- XtAddCallback(quitbutton, XtNcallback, dmxConfigQuitCallback, NULL);
-
- XtAddCallback(canvas, XtNcallback, dmxConfigCanvasInput, NULL);
- XtAddCallback(canvas, XtNcanvasExposeCallback, dmxConfigCanvasExpose,NULL);
- XtAddCallback(canvas, XtNcanvasResizeCallback, dmxConfigCanvasResize,NULL);
-
- if (dmxConfigFilename) dmxConfigReadFile();
-
- XtRealizeWidget(toplevel);
- dmxConfigCopystrings();
- dmxConfigSetupCnamemenu();
- XtAppMainLoop(appContext);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/config/xdmxconfig.man b/nx-X11/programs/Xserver/hw/dmx/config/xdmxconfig.man
deleted file mode 100644
index dcceea0e3..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/config/xdmxconfig.man
+++ /dev/null
@@ -1,63 +0,0 @@
-.\" $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 <faith@redhat.com>
-.\"
-.TH xdmxconfig 1 __vendorversion__
-.SH NAME
-xdmxconfig - a graphical configuration tool for Xdmx configuration files
-.SH SYNOPSIS
-.B xdmxconfig
-[filename]
-.SH DESCRIPTION
-.I xdmxconfig
-reads, edits, and writes configuration files for the Xdmx server. The
-grammar for the configuration file is specified in the Xdmx(1) manual
-page.
-.PP
-To start from scratch, create a "New Global" and specify the name and
-overall dimensions for the configuration. Then use "New Display" to
-enter more displays.
-.PP
-If there is more than one configuration, the configuration name button
-will bring up a selection menu.
-.PP
-In the right-hand pannel, the left mouse button will move the
-highlighted display at "tool resolution"; the middle mouse button will
-move the highlighted display by a single pixel (at "wall resolution");
-and the right mouse button will bring up a menu allowing the highlighted
-display to be edited or deleted. The arrow keys will also move the
-highlighted display by a single pixel.
-.SH BUGS
-Currently, entries with the
-.B wall
-keyword are not editable, but will be preserved in the new output file.
-The tool will quit when requested by the user, even if a configuration
-file has not been written out (i.e., without warning). The menu
-interaction should be improved (menu entries that don't currently work
-should be greyed-out, for example). The Help button does not work.
-.SH "SEE ALSO"
-Xdmx(1), vdltodmx(1)
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmx.h b/nx-X11/programs/Xserver/hw/dmx/dmx.h
deleted file mode 100644
index 18e75de90..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmx.h
+++ /dev/null
@@ -1,374 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001-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:
- * Kevin E. Martin <kem@redhat.com>
- * David H. Dawes <dawes@xfree86.org>
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * Main header file included by all other DMX-related files.
- */
-
-/** \mainpage
- * - <a href="http://dmx.sourceforge.net">DMX Home Page</a>
- * - <a href="http://sourceforge.net/projects/dmx">DMX Project Page (on
- * Source Forge)</a>
- * - <a href="http://dmx.sourceforge.net/dmx.html">Distributed Multihead
- * X design</a>, the design document for DMX
- * - <a href="http://dmx.sourceforge.net/DMXSpec.txt">Client-to-Server
- * DMX Extension to the X Protocol</a>
- */
-
-#ifndef DMX_H
-#define DMX_H
-
-#include "gcstruct.h"
-
-/* Handle client-side include files in one place. */
-#include "dmxclient.h"
-
-#include "globals.h"
-#include "scrnintstr.h"
-
-#ifdef RENDER
-#include "picturestr.h"
-#endif
-
-#ifdef GLXEXT
-#include <GL/glx.h>
-#include <GL/glxint.h>
-#endif
-
-typedef enum {
- PosNone = -1,
- PosAbsolute = 0,
- PosRightOf,
- PosLeftOf,
- PosAbove,
- PosBelow,
- PosRelative
-} PositionType;
-
-/** Provide the typedef globally, but keep the contents opaque outside
- * of the input routines. \see dmxinput.h */
-typedef struct _DMXInputInfo DMXInputInfo;
-
-/** Provide the typedef globally, but keep the contents opaque outside
- * of the XSync statistic routines. \see dmxstat.c */
-typedef struct _DMXStatInfo DMXStatInfo;
-
-/** Global structure containing information about each backend screen. */
-typedef struct _DMXScreenInfo {
- const char *name; /**< Name from command line or config file */
- int index; /**< Index into dmxScreens global */
-
- /*---------- Back-end X server information ----------*/
-
- Display *beDisplay; /**< Back-end X server's display */
- int beWidth; /**< Width of BE display */
- int beHeight; /**< Height of BE display */
- int beDepth; /**< Depth of BE display */
- int beBPP; /**< Bits per pixel of BE display */
- int beXDPI; /**< Horizontal dots per inch of BE */
- int beYDPI; /**< Vertical dots per inch of BE */
-
- int beNumDepths; /**< Number of depths on BE server */
- int *beDepths; /**< Depths from BE server */
-
- int beNumPixmapFormats; /**< Number of pixmap formats on BE */
- XPixmapFormatValues *bePixmapFormats; /**< Pixmap formats on BE */
-
- int beNumVisuals; /**< Number of visuals on BE */
- XVisualInfo *beVisuals; /**< Visuals from BE server */
- int beDefVisualIndex; /**< Default visual index of BE */
-
- int beNumDefColormaps; /**< Number of default colormaps */
- Colormap *beDefColormaps; /**< Default colormaps for DMX server */
-
- Pixel beBlackPixel; /**< Default black pixel for BE */
- Pixel beWhitePixel; /**< Default white pixel for BE */
-
- /*---------- Screen window information ----------*/
-
- Window scrnWin; /**< "Screen" window on backend display */
- int scrnX; /**< X offset of "screen" WRT BE display */
- int scrnY; /**< Y offset of "screen" WRT BE display */
- int scrnWidth; /**< Width of "screen" */
- int scrnHeight; /**< Height of "screen" */
- int scrnXSign; /**< X offset sign of "screen" */
- int scrnYSign; /**< Y offset sign of "screen" */
-
- /** Default drawables for "screen" */
- Drawable scrnDefDrawables[MAXFORMATS];
-
- struct _DMXScreenInfo *next; /**< List of "screens" on same display */
- struct _DMXScreenInfo *over; /**< List of "screens" that overlap */
-
- /*---------- Root window information ----------*/
-
- Window rootWin; /**< "Root" window on backend display */
- int rootX; /**< X offset of "root" window WRT "screen"*/
- int rootY; /**< Y offset of "root" window WRT "screen"*/
- int rootWidth; /**< Width of "root" window */
- int rootHeight; /**< Height of "root" window */
-
- int rootXOrigin; /**< Global X origin of "root" window */
- int rootYOrigin; /**< Global Y origin of "root" window */
-
- /*---------- Shadow framebuffer information ----------*/
-
- void *shadow; /**< Shadow framebuffer data (if enabled) */
- XlibGC shadowGC; /**< Default GC used by shadow FB code */
- XImage *shadowFBImage; /**< Screen image used by shadow FB code */
-
- /*---------- Other related information ----------*/
-
- int shared; /**< Non-zero if another Xdmx is running */
-
- Bool WMRunningOnBE;
-
- Cursor noCursor;
- Cursor curCursor;
- /* Support for cursors on overlapped
- * backend displays. */
- CursorPtr cursor;
- int cursorVisible;
- int cursorNotShared; /* for overlapping screens on a backend */
-
- PositionType where; /**< Relative layout information */
- int whereX; /**< Relative layout information */
- int whereY; /**< Relative layout information */
- int whereRefScreen; /**< Relative layout information */
-
- int savedTimeout; /**< Original screen saver timeout */
- int dpmsCapable; /**< Non-zero if backend is DPMS capable */
- int dpmsEnabled; /**< Non-zero if DPMS enabled */
- int dpmsStandby; /**< Original DPMS standby value */
- int dpmsSuspend; /**< Original DPMS suspend value */
- int dpmsOff; /**< Original DPMS off value */
-
- DMXStatInfo *stat; /**< Statistics about XSync */
- Bool needsSync; /**< True if an XSync is pending */
-
-#ifdef GLXEXT
- /** Visual information for glxProxy */
- int numGlxVisuals;
- __GLXvisualConfig *glxVisuals;
- int glxMajorOpcode;
- int glxErrorBase;
-
- /** FB config information for glxProxy */
- __GLXFBConfig *fbconfigs;
- int numFBConfigs;
-#endif
-
- /** Function pointers to wrapped screen
- * functions */
- CloseScreenProcPtr CloseScreen;
- SaveScreenProcPtr SaveScreen;
-
- CreateGCProcPtr CreateGC;
-
- CreateWindowProcPtr CreateWindow;
- DestroyWindowProcPtr DestroyWindow;
- PositionWindowProcPtr PositionWindow;
- ChangeWindowAttributesProcPtr ChangeWindowAttributes;
- RealizeWindowProcPtr RealizeWindow;
- UnrealizeWindowProcPtr UnrealizeWindow;
- RestackWindowProcPtr RestackWindow;
- WindowExposuresProcPtr WindowExposures;
- PaintWindowBackgroundProcPtr PaintWindowBackground;
- PaintWindowBorderProcPtr PaintWindowBorder;
- CopyWindowProcPtr CopyWindow;
-
- ResizeWindowProcPtr ResizeWindow;
- ReparentWindowProcPtr ReparentWindow;
-
- ChangeBorderWidthProcPtr ChangeBorderWidth;
-
- GetImageProcPtr GetImage;
- GetSpansProcPtr GetSpans;
-
- CreatePixmapProcPtr CreatePixmap;
- DestroyPixmapProcPtr DestroyPixmap;
- BitmapToRegionProcPtr BitmapToRegion;
-
- RealizeFontProcPtr RealizeFont;
- UnrealizeFontProcPtr UnrealizeFont;
-
- CreateColormapProcPtr CreateColormap;
- DestroyColormapProcPtr DestroyColormap;
- InstallColormapProcPtr InstallColormap;
- StoreColorsProcPtr StoreColors;
-
-#ifdef SHAPE
- SetShapeProcPtr SetShape;
-#endif
-
-#ifdef RENDER
- CreatePictureProcPtr CreatePicture;
- DestroyPictureProcPtr DestroyPicture;
- ChangePictureClipProcPtr ChangePictureClip;
- DestroyPictureClipProcPtr DestroyPictureClip;
-
- ChangePictureProcPtr ChangePicture;
- ValidatePictureProcPtr ValidatePicture;
-
- CompositeProcPtr Composite;
- GlyphsProcPtr Glyphs;
- CompositeRectsProcPtr CompositeRects;
-
- InitIndexedProcPtr InitIndexed;
- CloseIndexedProcPtr CloseIndexed;
- UpdateIndexedProcPtr UpdateIndexed;
-
- TrapezoidsProcPtr Trapezoids;
- TrianglesProcPtr Triangles;
- TriStripProcPtr TriStrip;
- TriFanProcPtr TriFan;
-#endif
-} DMXScreenInfo;
-
-/* Global variables available to all Xserver/hw/dmx routines. */
-extern int dmxNumScreens; /**< Number of dmxScreens */
-extern DMXScreenInfo *dmxScreens; /**< List of outputs */
-extern int dmxShadowFB; /**< Non-zero if using
- * shadow frame-buffer
- * (deprecated) */
-extern XErrorEvent dmxLastErrorEvent; /**< Last error that
- * occurred */
-extern Bool dmxErrorOccurred; /**< True if an error
- * occurred */
-extern Bool dmxOffScreenOpt; /**< True if using off
- * screen
- * optimizations */
-extern Bool dmxSubdividePrimitives; /**< True if using the
- * primitive subdivision
- * optimization */
-extern Bool dmxLazyWindowCreation; /**< True if using the
- * lazy window creation
- * optimization */
-extern Bool dmxUseXKB; /**< True if the XKB
- * extension should be
- * used with the backend
- * servers */
-extern int dmxDepth; /**< Requested depth if
- * non-zero */
-#ifdef GLXEXT
-extern Bool dmxGLXProxy; /**< True if glxProxy
- * support is enabled */
-extern Bool dmxGLXSwapGroupSupport; /**< True if glxProxy
- * support for swap
- * groups and barriers
- * is enabled */
-extern Bool dmxGLXSyncSwap; /**< True if glxProxy
- * should force an XSync
- * request after each
- * swap buffers call */
-extern Bool dmxGLXFinishSwap; /**< True if glxProxy
- * should force a
- * glFinish request
- * after each swap
- * buffers call */
-#endif
-extern char *dmxFontPath; /**< NULL if no font
- * path is set on the
- * command line;
- * otherwise, a string
- * of comma separated
- * paths built from the
- * command line
- * specified font
- * paths */
-extern Bool dmxIgnoreBadFontPaths; /**< True if bad font
- * paths should be
- * ignored during server
- * init */
-extern Bool dmxAddRemoveScreens; /**< True if add and
- * remove screens support
- * is enabled */
-
-/** Wrap screen or GC function pointer */
-#define DMX_WRAP(_entry, _newfunc, _saved, _actual) \
-do { \
- (_saved)->_entry = (_actual)->_entry; \
- (_actual)->_entry = (_newfunc); \
-} while (0)
-
-/** Unwrap screen or GC function pointer */
-#define DMX_UNWRAP(_entry, _saved, _actual) \
-do { \
- (_actual)->_entry = (_saved)->_entry; \
-} while (0)
-
-/* Define the MAXSCREENSALLOC/FREE macros, when MAXSCREENS patch has not
- * been applied to sources. */
-#ifdef MAXSCREENS
-#define MAXSCREEN_MAKECONSTSTR1(x) #x
-#define MAXSCREEN_MAKECONSTSTR2(x) MAXSCREEN_MAKECONSTSTR1(x)
-
-#define MAXSCREEN_FAILED_TXT "Failed at [" \
- MAXSCREEN_MAKECONSTSTR2(__LINE__) ":" __FILE__ "] to allocate object: "
-
-#define _MAXSCREENSALLOCF(o,size,fatal) \
- do { \
- if (!o) { \
- o = xalloc((size) * sizeof(*(o))); \
- if (o) memset(o, 0, (size) * sizeof(*(o))); \
- if (!o && fatal) FatalError(MAXSCREEN_FAILED_TXT #o); \
- } \
- } while (0)
-#define _MAXSCREENSALLOCR(o,size,retval) \
- do { \
- if (!o) { \
- o = xalloc((size) * sizeof(*(o))); \
- if (o) memset(o, 0, (size) * sizeof(*(o))); \
- if (!o) return retval; \
- } \
- } while (0)
-
-#define MAXSCREENSFREE(o) \
- do { \
- if (o) xfree(o); \
- o = NULL; \
- } while (0)
-
-#define MAXSCREENSALLOC(o) _MAXSCREENSALLOCF(o,MAXSCREENS, 0)
-#define MAXSCREENSALLOC_FATAL(o) _MAXSCREENSALLOCF(o,MAXSCREENS, 1)
-#define MAXSCREENSALLOC_RETURN(o,r) _MAXSCREENSALLOCR(o,MAXSCREENS, (r))
-#define MAXSCREENSALLOCPLUSONE(o) _MAXSCREENSALLOCF(o,MAXSCREENS+1,0)
-#define MAXSCREENSALLOCPLUSONE_FATAL(o) _MAXSCREENSALLOCF(o,MAXSCREENS+1,1)
-#define MAXSCREENSCALLOC(o,m) _MAXSCREENSALLOCF(o,MAXSCREENS*(m),0)
-#define MAXSCREENSCALLOC_FATAL(o,m) _MAXSCREENSALLOCF(o,MAXSCREENS*(m),1)
-#endif
-
-#endif /* DMX_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmx_glxvisuals.c b/nx-X11/programs/Xserver/hw/dmx/dmx_glxvisuals.c
deleted file mode 100644
index 1e0cbbc1b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmx_glxvisuals.c
+++ /dev/null
@@ -1,606 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include <GL/glx.h>
-#include <GL/glxproto.h>
-#include <X11/extensions/Xext.h>
-#include <X11/extensions/extutil.h>
-
-#include "dmx_glxvisuals.h"
-
-__GLXvisualConfig *GetGLXVisualConfigs(Display *dpy, int screen, int *nconfigs)
-{
- xGLXGetVisualConfigsReq *req;
- xGLXGetVisualConfigsReply reply;
- __GLXvisualConfig *config, *configs;
- GLint i, j, nvisuals, nprops;
- INT32 *props, *p;
- int majorOpcode, dummy;
- int num_good_visuals;
-
- if (!XQueryExtension(dpy, "GLX", &majorOpcode, &dummy, &dummy)) {
- return(NULL);
- }
-
- /* Send the glXGetVisualConfigs request */
- LockDisplay(dpy);
- GetReq(GLXGetVisualConfigs,req);
- req->reqType = majorOpcode;
- req->glxCode = X_GLXGetVisualConfigs;
- req->screen = screen;
- if (!_XReply(dpy, (xReply*) &reply, 0, False)) {
- /* Something is busted. Punt. */
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
-
- nvisuals = (int)reply.numVisuals;
- if (!nvisuals) {
- /* This screen does not support GL rendering */
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
-
- /* Check number of properties per visual */
- nprops = (int)reply.numProps;
- if (nprops < __GLX_MIN_CONFIG_PROPS) {
- /* Huh? Not in protocol defined limits. Punt */
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
- props = (INT32*) Xmalloc(nprops * __GLX_SIZE_CARD32);
- if (!props) {
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
-
- /* Allocate memory for our config structure */
- config = (__GLXvisualConfig*)
- Xmalloc(nvisuals * sizeof(__GLXvisualConfig));
- if (!config) {
- Xfree(props);
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
- memset(config, 0, nvisuals * sizeof(__GLXvisualConfig));
- configs = config;
- num_good_visuals = 0;
-
- /* Convert config structure into our format */
- for (i=0; i<nvisuals; i++) {
-
- /* Read config structure */
- _XRead(dpy, (char *)props, (nprops * __GLX_SIZE_CARD32));
-
- /* fill in default values */
- config->visualRating = GLX_NONE_EXT;
- config->transparentPixel = GLX_NONE_EXT;
-
- /* Copy in the first set of properties */
- config->vid = props[0];
- config->class = props[1];
-
- config->rgba = (Bool) props[2];
-
- config->redSize = props[3];
- config->greenSize = props[4];
- config->blueSize = props[5];
- config->alphaSize = props[6];
-
- config->accumRedSize = props[7];
- config->accumGreenSize = props[8];
- config->accumBlueSize = props[9];
- config->accumAlphaSize = props[10];
-
- config->doubleBuffer = (Bool) props[11];
- config->stereo = (Bool) props[12];
-
- config->bufferSize = props[13];
- config->depthSize = props[14];
- config->stencilSize = props[15];
-
- config->auxBuffers = props[16];
- config->level = props[17];
-
- /* Process remaining properties */
- p = &props[18];
- for (j=__GLX_MIN_CONFIG_PROPS; j<nprops; j+=2) {
- int property = *p++;
- int value = *p++;
-
- switch (property) {
- case GLX_SAMPLES_SGIS:
- config->multiSampleSize = value;
- break;
- case GLX_SAMPLE_BUFFERS_SGIS:
- config->nMultiSampleBuffers = value;
- break;
-
- case GLX_TRANSPARENT_TYPE_EXT:
- config->transparentPixel = value;
- break;
- case GLX_TRANSPARENT_INDEX_VALUE_EXT:
- config->transparentIndex = value;
- break;
- case GLX_TRANSPARENT_RED_VALUE_EXT:
- config->transparentRed = value;
- break;
- case GLX_TRANSPARENT_GREEN_VALUE_EXT:
- config->transparentGreen = value;
- break;
- case GLX_TRANSPARENT_BLUE_VALUE_EXT:
- config->transparentBlue = value;
- break;
- case GLX_TRANSPARENT_ALPHA_VALUE_EXT:
- config->transparentAlpha = value;
- break;
-
- case GLX_VISUAL_CAVEAT_EXT:
- config->visualRating = value;
- break;
-
- /* visualSelectGroup is an internal used property */
- case GLX_VISUAL_SELECT_GROUP_SGIX:
- config->visualSelectGroup = value;
- break;
-
- default :
- /* Ignore properties we don't recognize */
- break;
- }
- } /* for j */
-
- /*
- // filter out overlay visuals (dmx does not support overlays)
- */
- if (config->level == 0) {
- config++;
- num_good_visuals++;
- }
-
- } /* for i */
-
- UnlockDisplay(dpy);
-
- nvisuals = num_good_visuals;
-
- config = configs;
- for (i=0; i<nvisuals; i++) {
- /* XXX hack to fill-in mask info (need a better way to do this) */
- {
- XVisualInfo *vis, template;
- int n;
-
- template.screen = screen;
- template.visualid = config->vid;
- vis = XGetVisualInfo(dpy, VisualScreenMask|VisualIDMask,
- &template, &n);
-
- if (vis != NULL) {
- config->redMask = vis->red_mask;
- config->greenMask = vis->green_mask;
- config->blueMask = vis->blue_mask;
- config->alphaMask = 0; /* XXX */
- free(vis);
- }
- }
- config++;
- } /* for i */
-
- XFree(props);
- SyncHandle();
-
- *nconfigs = nvisuals;
- return( configs );
-}
-
-
-__GLXFBConfig *GetGLXFBConfigs(Display *dpy, int glxMajorOpcode, int *nconfigs)
-{
- xGLXGetFBConfigsReq *req;
- xGLXGetFBConfigsReply reply;
- __GLXFBConfig *config, *fbconfigs;
- GLint i, j, numFBConfigs, numAttribs;
- INT32 *attrs, *p;
- int screen = DefaultScreen( dpy );
- int numValidConfigs = 0;
-
- /* Send the glXGetFBConfigs request */
- LockDisplay(dpy);
- GetReq(GLXGetFBConfigs, req);
- req->reqType = glxMajorOpcode;
- req->glxCode = X_GLXGetFBConfigs;
- req->screen = screen;
-
- *nconfigs = 0;
-
- if (!_XReply(dpy, (xReply*) &reply, 0, False)) {
- /* Something is busted. Punt. */
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
-
- numFBConfigs = (int)reply.numFBConfigs;
- if (!numFBConfigs) {
- /* This screen does not support GL rendering */
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
-
- numAttribs = (int)reply.numAttribs;
- if (!numAttribs) {
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
-
- attrs = (INT32*) Xmalloc(2*numAttribs * __GLX_SIZE_CARD32);
- if (!attrs) {
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
-
- /* Allocate memory for our config structure */
- config = (__GLXFBConfig*)
- Xmalloc(numFBConfigs * sizeof(__GLXFBConfig));
- if (!config) {
- Xfree(attrs);
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
- memset(config, 0, numFBConfigs * sizeof(__GLXFBConfig));
- fbconfigs = config;
-
- /* Convert attribute list into our format */
- for (i=0; i<numFBConfigs; i++) {
-
- /* Fill in default properties */
- config->transparentType = GLX_NONE_EXT;
- config->visualCaveat = GLX_NONE_EXT;
- config->minRed = 0.;
- config->maxRed = 1.;
- config->minGreen = 0.;
- config->maxGreen = 1.;
- config->minBlue = 0.;
- config->maxBlue = 1.;
- config->minAlpha = 0.;
- config->maxAlpha = 1.;
-
- /* Read attribute list */
- _XRead(dpy, (char *)attrs, (2*numAttribs * __GLX_SIZE_CARD32));
-
- p = attrs;
- for (j=0; j<numAttribs; j++) {
- int attribute = *p++;
- int value = *p++;
-
- switch (attribute) {
- /* core attributes */
- case GLX_FBCONFIG_ID:
- config->id = value;
- break;
- case GLX_BUFFER_SIZE:
- config->indexBits = value;
- break;
- case GLX_LEVEL:
- config->level = value;
- break;
- case GLX_DOUBLEBUFFER:
- config->doubleBufferMode = value;
- break;
- case GLX_STEREO:
- config->stereoMode = value;
- break;
- case GLX_AUX_BUFFERS:
- config->maxAuxBuffers = value;
- break;
- case GLX_RED_SIZE:
- config->redBits = value;
- break;
- case GLX_GREEN_SIZE:
- config->greenBits = value;
- break;
- case GLX_BLUE_SIZE:
- config->blueBits = value;
- break;
- case GLX_ALPHA_SIZE:
- config->alphaBits = value;
- break;
- case GLX_DEPTH_SIZE:
- config->depthBits = value;
- break;
- case GLX_STENCIL_SIZE:
- config->stencilBits = value;
- break;
- case GLX_ACCUM_RED_SIZE:
- config->accumRedBits = value;
- break;
- case GLX_ACCUM_GREEN_SIZE:
- config->accumGreenBits = value;
- break;
- case GLX_ACCUM_BLUE_SIZE:
- config->accumBlueBits = value;
- break;
- case GLX_ACCUM_ALPHA_SIZE:
- config->accumAlphaBits = value;
- break;
- case GLX_RENDER_TYPE:
- config->renderType = value;
- break;
- case GLX_DRAWABLE_TYPE:
- config->drawableType = value;
- break;
- case GLX_X_VISUAL_TYPE:
- config->visualType = value;
- break;
- case GLX_CONFIG_CAVEAT:
- config->visualCaveat = value;
- break;
- case GLX_TRANSPARENT_TYPE:
- config->transparentType = value;
- break;
- case GLX_TRANSPARENT_INDEX_VALUE:
- config->transparentIndex = value;
- break;
- case GLX_TRANSPARENT_RED_VALUE:
- config->transparentRed = value;
- break;
- case GLX_TRANSPARENT_GREEN_VALUE:
- config->transparentGreen = value;
- break;
- case GLX_TRANSPARENT_BLUE_VALUE:
- config->transparentBlue = value;
- break;
- case GLX_TRANSPARENT_ALPHA_VALUE:
- config->transparentAlpha = value;
- break;
- case GLX_MAX_PBUFFER_WIDTH:
- config->maxPbufferWidth = value;
- break;
- case GLX_MAX_PBUFFER_HEIGHT:
- config->maxPbufferHeight = value;
- break;
- case GLX_MAX_PBUFFER_PIXELS:
- config->maxPbufferPixels = value;
- break;
- case GLX_VISUAL_ID:
- config->associatedVisualId = value;
- break;
-
- /* visualSelectGroup is an internal used property */
- case GLX_VISUAL_SELECT_GROUP_SGIX:
- config->visualSelectGroup = value;
- break;
-
- /* SGIS_multisample attributes */
- case GLX_SAMPLES_SGIS:
- config->multiSampleSize = value;
- break;
- case GLX_SAMPLE_BUFFERS_SGIS:
- config->nMultiSampleBuffers = value;
- break;
-
- /* SGIX_pbuffer specific attributes */
- case GLX_OPTIMAL_PBUFFER_WIDTH_SGIX:
- config->optimalPbufferWidth = value;
- break;
- case GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX:
- config->optimalPbufferHeight = value;
- break;
-
- default:
- /* Ignore attributes we don't recognize */
- break;
- }
- } /* for j */
-
- /* Fill in derived values */
- config->screen = screen;
-
- config->rgbMode = config->renderType & GLX_RGBA_BIT;
- config->colorIndexMode = !config->rgbMode;
-
- config->haveAccumBuffer =
- config->accumRedBits > 0 ||
- config->accumGreenBits > 0 ||
- config->accumBlueBits > 0;
- /* Can't have alpha without color */
-
- config->haveDepthBuffer = config->depthBits > 0;
- config->haveStencilBuffer = config->stencilBits > 0;
-
- /* overlay visuals are not valid for now */
- if (!config->level) {
- config++;
- numValidConfigs++;
- }
-
- } /* for i */
- UnlockDisplay(dpy);
-
- config = fbconfigs;
- for (i=0; i<numValidConfigs; i++) {
-
- /* XXX hack to fill-in mask info (need a better way to do this) */
- if (config->associatedVisualId != 0) {
- XVisualInfo *vis, template;
- int n;
-
- template.screen = screen;
- template.visualid = config->associatedVisualId;
- vis = XGetVisualInfo(dpy, VisualScreenMask|VisualIDMask,
- &template, &n);
-
- if (vis != NULL) {
- config->redMask = (GLuint)vis->red_mask;
- config->greenMask = (GLuint)vis->green_mask;
- config->blueMask = (GLuint)vis->blue_mask;
- config->alphaMask = 0; /* XXX */
- free(vis);
- }
- }
-
- config++;
- } /* for i */
-
- XFree(attrs);
- SyncHandle();
-
- *nconfigs = numValidConfigs;
- return fbconfigs;
-}
-
-__GLXvisualConfig *
-GetGLXVisualConfigsFromFBConfigs(__GLXFBConfig *fbconfigs, int nfbconfigs,
- XVisualInfo *visuals, int nvisuals,
- __GLXvisualConfig *glxConfigs, int nGlxConfigs,
- int *nconfigs)
-{
- __GLXvisualConfig *configs = NULL;
- int i;
-
- if (!fbconfigs || !nfbconfigs || !nconfigs) return(NULL);
- *nconfigs = 0;
-
- /* Allocate memory for our config structure */
- configs = (__GLXvisualConfig*)
- Xmalloc(nfbconfigs * sizeof(__GLXvisualConfig));
- if (!configs) {
- return NULL;
- }
- memset(configs, 0, nfbconfigs * sizeof(__GLXvisualConfig));
-
- for (i=0; i<nfbconfigs; i++) {
- __GLXFBConfig *fbcfg = &fbconfigs[i];
-
- if (fbcfg->associatedVisualId > 0) {
- __GLXvisualConfig *cfg = configs + (*nconfigs);
- int j;
- XVisualInfo *vinfo = NULL;
-
- for (j=0; j<nvisuals; j++) {
- if (visuals[j].visualid == fbcfg->associatedVisualId) {
- vinfo = &visuals[j];
- break;
- }
- }
- if (!vinfo) continue;
-
- /* skip 16 bit colormap visuals */
- if (vinfo->depth == 16 &&
- vinfo->class != TrueColor &&
- vinfo->class != DirectColor ) {
- continue;
- }
-
- (*nconfigs)++;
-
- /*
- * if the same visualid exists in the glx configs,
- * copy the glx attributes from the glx config
- */
- for (j=0; j<nGlxConfigs; j++) {
- if (glxConfigs[j].vid == vinfo->visualid)
- break;
- }
- if (j < nGlxConfigs) {
- memcpy(cfg, &glxConfigs[j], sizeof(__GLXvisualConfig) );
- continue;
- }
-
- /*
- * make glx attributes from the FB config attributes
- */
- cfg->vid = fbcfg->associatedVisualId;
- cfg->class = vinfo->class;
- cfg->rgba = !(fbcfg->renderType & GLX_COLOR_INDEX_BIT_SGIX);
- cfg->redSize = fbcfg->redBits;
- cfg->greenSize = fbcfg->greenBits;
- cfg->blueSize = fbcfg->blueBits;
- cfg->alphaSize = fbcfg->alphaBits;
- cfg->redMask = fbcfg->redMask;
- cfg->greenMask = fbcfg->greenMask;
- cfg->blueMask = fbcfg->blueMask;
- cfg->alphaMask = fbcfg->alphaMask;
- cfg->accumRedSize = fbcfg->accumRedBits;
- cfg->accumGreenSize = fbcfg->accumGreenBits;
- cfg->accumBlueSize = fbcfg->accumBlueBits;
- cfg->accumAlphaSize = fbcfg->accumAlphaBits;
- cfg->doubleBuffer = fbcfg->doubleBufferMode;
- cfg->stereo = fbcfg->stereoMode;
- if (vinfo->class == TrueColor || vinfo->class == DirectColor) {
- cfg->bufferSize = (fbcfg->rgbMode ? (fbcfg->redBits +
- fbcfg->greenBits +
- fbcfg->blueBits +
- fbcfg->alphaBits)
- : fbcfg->indexBits );
- }
- else {
- cfg->bufferSize = vinfo->depth;
- }
- cfg->depthSize = fbcfg->depthBits;
- cfg->stencilSize = fbcfg->stencilBits;
- cfg->auxBuffers = fbcfg->maxAuxBuffers;
- cfg->level = fbcfg->level;
- cfg->visualRating = fbcfg->visualCaveat;
- cfg->transparentPixel = fbcfg->transparentType;
- cfg->transparentRed = fbcfg->transparentRed;
- cfg->transparentGreen = fbcfg->transparentGreen;
- cfg->transparentBlue = fbcfg->transparentBlue;
- cfg->transparentAlpha = fbcfg->transparentAlpha;
- cfg->transparentIndex = fbcfg->transparentIndex;
- cfg->multiSampleSize = fbcfg->multiSampleSize;
- cfg->nMultiSampleBuffers = fbcfg->nMultiSampleBuffers;
- cfg->visualSelectGroup = fbcfg->visualSelectGroup;
- }
- }
-
- return( configs );
-}
-
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmx_glxvisuals.h b/nx-X11/programs/Xserver/hw/dmx/dmx_glxvisuals.h
deleted file mode 100644
index a9ac2e9ac..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmx_glxvisuals.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#ifndef _GLXVISUALS_H
-#define _GLXVISUALS_H
-
-#include <GL/glxint.h>
-
-/** GLX Visual private area. */
-typedef struct {
- int x_visual_depth;
- int x_visual_class;
-} dmxGlxVisualPrivate;
-
-__GLXvisualConfig *GetGLXVisualConfigs(Display *dpy,
- int screen,
- int *nconfigs);
-
-__GLXFBConfig *GetGLXFBConfigs(Display *dpy,
- int glxMajorOpcode,
- int *nconfigs);
-
-__GLXvisualConfig *GetGLXVisualConfigsFromFBConfigs(__GLXFBConfig *fbconfigs,
- int nfbconfigs,
- XVisualInfo *visuals,
- int nvisuals,
- __GLXvisualConfig
- *glxConfigs,
- int nGlxConfigs,
- int *nconfigs);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxcb.c b/nx-X11/programs/Xserver/hw/dmx/dmxcb.c
deleted file mode 100644
index b1f47bde4..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxcb.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/* $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:
- *
- * 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 <faith@redhat.com>
- *
- */
-
-/** \file
- * This code queries and modifies the connection block. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxcb.h"
-#include "dmxinput.h"
-#include "dmxlog.h"
-
-extern char *ConnectionInfo;
-extern int connBlockScreenStart;
-
-#ifdef PANORAMIX
-extern int PanoramiXPixWidth;
-extern int PanoramiXPixHeight;
-extern int PanoramiXNumScreens;
-#endif
-
- int dmxGlobalWidth, dmxGlobalHeight;
-
-/** We may want the wall dimensions to be different from the bounding
- * box dimensions that Xinerama computes, so save those and update them
- * here.
- */
-void dmxSetWidthHeight(int width, int height)
-{
- dmxGlobalWidth = width;
- dmxGlobalHeight = height;
-}
-
-/** Computes the global bounding box for DMX. This may be larger than
- * the one computed by Xinerama because of the DMX configuration
- * file. */
-void dmxComputeWidthHeight(DMXRecomputeFlag flag)
-{
- int i;
- DMXScreenInfo *dmxScreen;
- int w = 0;
- int h = 0;
-
- for (i = 0; i < dmxNumScreens; i++) {
- /* Don't use root* here because this is
- * the global bounding box. */
- dmxScreen = &dmxScreens[i];
- if (w < dmxScreen->scrnWidth + dmxScreen->rootXOrigin)
- w = dmxScreen->scrnWidth + dmxScreen->rootXOrigin;
- if (h < dmxScreen->scrnHeight + dmxScreen->rootYOrigin)
- h = dmxScreen->scrnHeight + dmxScreen->rootYOrigin;
- }
- if (!dmxGlobalWidth && !dmxGlobalHeight) {
- dmxLog(dmxInfo, "Using %dx%d as global bounding box\n", w, h);
- } else {
- switch (flag) {
- case DMX_NO_RECOMPUTE_BOUNDING_BOX:
- dmxLog(dmxInfo,
- "Using old bounding box (%dx%d) instead of new (%dx%d)\n",
- dmxGlobalWidth, dmxGlobalHeight, w, h);
- w = dmxGlobalWidth;
- h = dmxGlobalHeight;
- break;
- case DMX_RECOMPUTE_BOUNDING_BOX:
- dmxLog(dmxInfo,
- "Using %dx%d as global bounding box, instead of %dx%d\n",
- w, h, dmxGlobalWidth, dmxGlobalHeight);
- break;
- }
- }
-
- dmxGlobalWidth = w;
- dmxGlobalHeight = h;
-}
-
-/** A callback routine that hooks into Xinerama and provides a
- * convenient place to print summary log information during server
- * startup. This routine does not modify any values. */
-void dmxConnectionBlockCallback(void)
-{
- xWindowRoot *root = (xWindowRoot *)(ConnectionInfo+connBlockScreenStart);
- int offset = connBlockScreenStart + sizeof(xWindowRoot);
- int i;
- Bool *found = NULL;
-
- MAXSCREENSALLOC(found);
- if (!found)
- dmxLog(dmxFatal, "dmxConnectionBlockCallback: out of memory\n");
-
- dmxLog(dmxInfo, "===== Start of Summary =====\n");
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- if (dmxGlobalWidth && dmxGlobalHeight
- && (dmxGlobalWidth != PanoramiXPixWidth
- || dmxGlobalHeight != PanoramiXPixHeight)) {
- dmxLog(dmxInfo,
- "Changing Xinerama dimensions from %d %d to %d %d\n",
- PanoramiXPixWidth, PanoramiXPixHeight,
- dmxGlobalWidth, dmxGlobalHeight);
- PanoramiXPixWidth = root->pixWidth = dmxGlobalWidth;
- PanoramiXPixHeight = root->pixHeight = dmxGlobalHeight;
- } else {
- dmxGlobalWidth = PanoramiXPixWidth;
- dmxGlobalHeight = PanoramiXPixHeight;
- }
- dmxLog(dmxInfo, "%d screens configured with Xinerama (%d %d)\n",
- PanoramiXNumScreens, PanoramiXPixWidth, PanoramiXPixHeight);
- for (i = 0; i < PanoramiXNumScreens; i++) found[i] = FALSE;
- } else {
-#endif
- /* This never happens because we're
- * either called from a Xinerama
- * callback or during reconfiguration
- * (which only works with Xinerama on).
- * In any case, be reasonable. */
- dmxLog(dmxInfo, "%d screens configured (%d %d)\n",
- screenInfo.numScreens, root->pixWidth, root->pixHeight);
-#ifdef PANORAMIX
- }
-#endif
-
- for (i = 0; i < root->nDepths; i++) {
- xDepth *depth = (xDepth *)(ConnectionInfo + offset);
- int voffset = offset + sizeof(xDepth);
- xVisualType *visual = (xVisualType *)(ConnectionInfo + voffset);
- int j;
-
- dmxLog(dmxInfo, "%d visuals at depth %d:\n",
- depth->nVisuals, depth->depth);
- for (j = 0; j < depth->nVisuals; j++, visual++) {
- XVisualInfo vi;
-
- vi.visual = NULL;
- vi.visualid = visual->visualID;
- vi.screen = 0;
- vi.depth = depth->depth;
- vi.class = visual->class;
- vi.red_mask = visual->redMask;
- vi.green_mask = visual->greenMask;
- vi.blue_mask = visual->blueMask;
- vi.colormap_size = visual->colormapEntries;
- vi.bits_per_rgb = visual->bitsPerRGB;
- dmxLogVisual(NULL, &vi, 0);
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- int k;
- for (k = 0; k < PanoramiXNumScreens; k++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[k];
-
- if (dmxScreen->beDisplay) {
- XVisualInfo *pvi =
- &dmxScreen->beVisuals[dmxScreen->beDefVisualIndex];
- if (pvi->depth == depth->depth &&
- pvi->class == visual->class)
- found[k] = TRUE;
- } else {
- /* Screen #k is detatched, so it always succeeds */
- found[k] = TRUE;
- }
- }
- }
-#endif
- }
- offset = voffset + depth->nVisuals * sizeof(xVisualType);
- }
-
- dmxInputLogDevices();
- dmxLog(dmxInfo, "===== End of Summary =====\n");
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- Bool fatal = FALSE;
- for (i = 0; i < PanoramiXNumScreens; i++) {
- fatal |= !found[i];
- if (!found[i]) {
- dmxLog(dmxError,
- "The default visual for screen #%d does not match "
- "any of the\n", i);
- dmxLog(dmxError,
- "consolidated visuals from Xinerama (listed above)\n");
- }
- }
- if (fatal)
- dmxLog(dmxFatal,
- "dmxConnectionBlockCallback: invalid screen(s) found");
- }
-#endif
- MAXSCREENSFREE(found);
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxcb.h b/nx-X11/programs/Xserver/hw/dmx/dmxcb.h
deleted file mode 100644
index 38ffa5671..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxcb.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001,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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Header file for connection block functions. \see dmxcb.c.
- */
-
-#ifndef _DMXCB_H_
-#define _DMXCB_H_
-/** The cursor position, in global coordinates. */
-extern int dmxGlobalWidth, dmxGlobalHeight;
-
-/** #dmxComputeWidthHeight can either recompute the global bounding box
- * or not. */
-typedef enum {
- DMX_RECOMPUTE_BOUNDING_BOX,
- DMX_NO_RECOMPUTE_BOUNDING_BOX
-} DMXRecomputeFlag;
-
-extern void dmxSetWidthHeight(int width, int height);
-extern void dmxComputeWidthHeight(DMXRecomputeFlag flag);
-extern void dmxConnectionBlockCallback(void);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxclient.h b/nx-X11/programs/Xserver/hw/dmx/dmxclient.h
deleted file mode 100644
index 586b82990..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxclient.h
+++ /dev/null
@@ -1,152 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright (c) 1995 X Consortium
- * Copyright 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:
- *
- * 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
- * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT, THE X CONSORTIUM,
- * 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.
- *
- * Except as contained in this notice, the name of the X Consortium
- * 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 X Consortium.
- */
-
-/*
- * Derived from hw/xnest/Xnest.h by Rickard E. (Rik) Faith <faith@redhat.com>
- */
-
-/** \file
- * This file includes all client-side include files with proper wrapping.
- */
-
-#ifndef _DMXCLIENT_H_
-#define _DMXCLIENT_H_
-
-#define GC XlibGC
-
-#ifdef _XSERVER64
-#define DMX64
-#undef _XSERVER64
-typedef unsigned long XID64;
-typedef unsigned long Mask64;
-typedef unsigned long Atom64;
-typedef unsigned long VisualID64;
-typedef unsigned long Time64;
-#define XID XID64
-#define Mask Mask64
-#define Atom Atom64
-#define VisualID VisualID64
-#define Time Time64
-typedef XID Window64;
-typedef XID Drawable64;
-typedef XID Font64;
-typedef XID Pixmap64;
-typedef XID Cursor64;
-typedef XID Colormap64;
-typedef XID GContext64;
-typedef XID KeySym64;
-#define Window Window64
-#define Drawable Drawable64
-#define Font Font64
-#define Pixmap Pixmap64
-#define Cursor Cursor64
-#define Colormap Colormap64
-#define GContext GContext64
-#define KeySym KeySym64
-#endif
-
-#include <X11/Xlib.h>
-#include <X11/Xlibint.h> /* For _XExtension */
-#include <X11/X.h> /* from glxserver.h */
-#include <X11/Xmd.h> /* from glxserver.h */
-#include <X11/Xproto.h>
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-#include <X11/cursorfont.h>
-#include <X11/Xmu/SysUtil.h> /* For XmuSnprintf */
-
-#ifdef SHAPE
-#include <X11/extensions/shape.h>
-#endif
-
-#ifdef RENDER
-#include <X11/extensions/Xrender.h>
-#undef PictFormatType
-#endif
-
-#ifdef XKB
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
-#endif
-
-#ifdef XINPUT
-#include <X11/extensions/XI.h>
-#endif
-
-/* Always include these, since we query them even if we don't export XINPUT. */
-#include <X11/extensions/XInput.h> /* For XDevice */
-#include <X11/extensions/Xext.h>
-
-#undef GC
-
-#ifdef DMX64
-#define _XSERVER64
-#undef XID
-#undef Mask
-#undef Atom
-#undef VisualID
-#undef Time
-#undef Window
-#undef Drawable
-#undef Font
-#undef Pixmap
-#undef Cursor
-#undef Colormap
-#undef GContext
-#undef KeySym
-#endif
-
-/* These are in exglobals.h, but that conflicts with X11/extensions/XKBsrv.h */
-extern int ProximityIn;
-extern int ProximityOut;
-extern int DeviceValuator;
-extern int DeviceMotionNotify;
-extern int DeviceFocusIn;
-extern int DeviceFocusOut;
-extern int DeviceStateNotify;
-extern int DeviceMappingNotify;
-extern int ChangeDeviceNotify;
-
-/* Some protocol gets included last, after undefines. */
-#include <X11/XKBlib.h>
-#ifdef XKB
-#include <X11/extensions/XKBproto.h>
-#ifndef XKB_IN_SERVER
-#define XKB_IN_SERVER
-#endif
-#include <X11/extensions/XKBsrv.h>
-#undef XPointer
-#endif
-#include <X11/extensions/XIproto.h>
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxcmap.c b/nx-X11/programs/Xserver/hw/dmx/dmxcmap.c
deleted file mode 100644
index f46dc5411..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxcmap.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * Colormap support. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxsync.h"
-#include "dmxcmap.h"
-#include "dmxvisual.h"
-
-#include "micmap.h"
-
-static int dmxInitColormapPrivateFunc(ColormapPtr pColormap)
-{
- return TRUE;
-}
-
-static Bool dmxAllocateColormapPrivates(ColormapPtr pColormap)
-{
- static unsigned long dmxColormapGeneration;
- dmxColormapPrivPtr pCmapPriv;
-
- if (dmxColormapGeneration != serverGeneration) {
- if ((dmxColormapPrivateIndex
- = AllocateColormapPrivateIndex(dmxInitColormapPrivateFunc)) < 0)
- return FALSE;
-
- dmxColormapGeneration = serverGeneration;
- }
-
- pCmapPriv = (dmxColormapPrivPtr)xalloc(sizeof(*pCmapPriv));
- if (!pCmapPriv)
- return FALSE;
- pCmapPriv->cmap = (Colormap)0;
-
- DMX_SET_COLORMAP_PRIV(pColormap, pCmapPriv);
-
- return TRUE;
-}
-
-/** Create \a pColormap on the back-end server. */
-Bool dmxBECreateColormap(ColormapPtr pColormap)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxColormapPrivPtr pCmapPriv = DMX_GET_COLORMAP_PRIV(pColormap);
- VisualPtr pVisual = pColormap->pVisual;
- Visual *visual = dmxLookupVisual(pScreen, pVisual);
-
- pCmapPriv->cmap = XCreateColormap(dmxScreen->beDisplay,
- dmxScreen->scrnWin,
- visual,
- (pVisual->class & DynamicClass ?
- AllocAll : AllocNone));
- return (pCmapPriv->cmap != 0);
-}
-
-/** Create colormap on back-end server associated with \a pColormap's
- * screen. */
-Bool dmxCreateColormap(ColormapPtr pColormap)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- Bool ret = TRUE;
-
- if (!dmxAllocateColormapPrivates(pColormap))
- return FALSE;
-
- if (dmxScreen->beDisplay) {
- if (!dmxBECreateColormap(pColormap))
- return FALSE;
- }
-
- DMX_UNWRAP(CreateColormap, dmxScreen, pScreen);
- if (pScreen->CreateColormap)
- ret = pScreen->CreateColormap(pColormap);
- DMX_WRAP(CreateColormap, dmxCreateColormap, dmxScreen, pScreen);
-
- return ret;
-}
-
-/** Destroy \a pColormap on the back-end server. */
-Bool dmxBEFreeColormap(ColormapPtr pColormap)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxColormapPrivPtr pCmapPriv = DMX_GET_COLORMAP_PRIV(pColormap);
-
- if (pCmapPriv->cmap) {
- XFreeColormap(dmxScreen->beDisplay, pCmapPriv->cmap);
- pCmapPriv->cmap = (Colormap)0;
- return TRUE;
- }
-
- return FALSE;
-}
-
-/** Destroy colormap on back-end server associated with \a pColormap's
- * screen. */
-void dmxDestroyColormap(ColormapPtr pColormap)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxColormapPrivPtr pCmapPriv = DMX_GET_COLORMAP_PRIV(pColormap);
-
- if (dmxScreen->beDisplay)
- dmxBEFreeColormap(pColormap);
- xfree(pCmapPriv);
- DMX_SET_COLORMAP_PRIV(pColormap, NULL);
-
- DMX_UNWRAP(DestroyColormap, dmxScreen, pScreen);
- if (pScreen->DestroyColormap)
- pScreen->DestroyColormap(pColormap);
- DMX_WRAP(DestroyColormap, dmxDestroyColormap, dmxScreen, pScreen);
-}
-
-/** Install colormap on back-end server associated with \a pColormap's
- * screen. */
-void dmxInstallColormap(ColormapPtr pColormap)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxColormapPrivPtr pCmapPriv = DMX_GET_COLORMAP_PRIV(pColormap);
-
- DMX_UNWRAP(InstallColormap, dmxScreen, pScreen);
- if (pScreen->InstallColormap)
- pScreen->InstallColormap(pColormap);
- DMX_WRAP(InstallColormap, dmxInstallColormap, dmxScreen, pScreen);
-
- if (dmxScreen->beDisplay) {
- XInstallColormap(dmxScreen->beDisplay, pCmapPriv->cmap);
- dmxSync(dmxScreen, FALSE);
- }
-}
-
-/** Store colors in \a pColormap on back-end server associated with \a
- * pColormap's screen. */
-void dmxStoreColors(ColormapPtr pColormap, int ndef, xColorItem *pdef)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxColormapPrivPtr pCmapPriv = DMX_GET_COLORMAP_PRIV(pColormap);
-
- if (dmxScreen->beDisplay && (pColormap->pVisual->class & DynamicClass)) {
- XColor *color = xalloc(sizeof(*color) * ndef);
- int i;
-
- if (color) {
- for (i = 0; i < ndef; i++) {
- color[i].pixel = pdef[i].pixel;
- color[i].red = pdef[i].red;
- color[i].blue = pdef[i].blue;
- color[i].green = pdef[i].green;
- color[i].flags = pdef[i].flags;
- color[i].pad = pdef[i].pad;
- }
- XStoreColors(dmxScreen->beDisplay, pCmapPriv->cmap, color, ndef);
- xfree(color);
- } else { /* xalloc failed, so fallback */
- XColor c;
- for (i = 0; i < ndef; i++) {
- c.pixel = pdef[i].pixel;
- c.red = pdef[i].red;
- c.blue = pdef[i].blue;
- c.green = pdef[i].green;
- c.flags = pdef[i].flags;
- c.pad = pdef[i].pad;
- XStoreColor(dmxScreen->beDisplay, pCmapPriv->cmap, &c);
- }
- }
- dmxSync(dmxScreen, FALSE);
- }
-
- DMX_UNWRAP(StoreColors, dmxScreen, pScreen);
- if (pScreen->StoreColors)
- pScreen->StoreColors(pColormap, ndef, pdef);
- DMX_WRAP(StoreColors, dmxStoreColors, dmxScreen, pScreen);
-}
-
-/** Create the DMX server's default colormap. */
-Bool dmxCreateDefColormap(ScreenPtr pScreen)
-{
- return miCreateDefColormap(pScreen);
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxcmap.h b/nx-X11/programs/Xserver/hw/dmx/dmxcmap.h
deleted file mode 100644
index 09039e72b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxcmap.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2002-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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * Header file for colormap support. \see dmxcmap.c. */
-
-#ifndef DMXCMAP_H
-#define DMXCMAP_H
-
-#include "colormapst.h"
-
-/** Colormap private area. */
-typedef struct _dmxColormapPriv {
- Colormap cmap;
-} dmxColormapPrivRec, *dmxColormapPrivPtr;
-
-
-extern Bool dmxCreateColormap(ColormapPtr pColormap);
-extern void dmxDestroyColormap(ColormapPtr pColormap);
-extern void dmxInstallColormap(ColormapPtr pColormap);
-extern void dmxStoreColors(ColormapPtr pColormap, int ndef, xColorItem *pdef);
-
-extern Bool dmxCreateDefColormap(ScreenPtr pScreen);
-
-extern Bool dmxBECreateColormap(ColormapPtr pColormap);
-extern Bool dmxBEFreeColormap(ColormapPtr pColormap);
-
-/** Private index. \see dmxcmap.c \see dmxscrinit.c \see dmxwindow.c */
-extern int dmxColormapPrivateIndex;
-
-/** Set colormap private structure. */
-#define DMX_SET_COLORMAP_PRIV(_pCMap, _pCMapPriv) \
- (_pCMap)->devPrivates[dmxColormapPrivateIndex].ptr \
- = (pointer)(_pCMapPriv);
-
-/** Get colormap private structure. */
-#define DMX_GET_COLORMAP_PRIV(_pCMap) \
- (dmxColormapPrivPtr)(_pCMap)->devPrivates[dmxColormapPrivateIndex].ptr
-
-#endif /* DMXCMAP_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxcursor.c b/nx-X11/programs/Xserver/hw/dmx/dmxcursor.c
deleted file mode 100644
index a49fc9f43..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxcursor.c
+++ /dev/null
@@ -1,926 +0,0 @@
-/* $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:
- *
- * 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:
- * David H. Dawes <dawes@xfree86.org>
- * Kevin E. Martin <kem@redhat.com>
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * This file contains code than supports cursor movement, including the
- * code that initializes and reinitializes the screen positions and
- * computes screen overlap.
- *
- * "This code is based very closely on the XFree86 equivalent
- * (xfree86/common/xf86Cursor.c)." --David Dawes.
- *
- * "This code was then extensively re-written, as explained here."
- * --Rik Faith
- *
- * The code in xf86Cursor.c used edge lists to implement the
- * CursorOffScreen function. The edge list computation was complex
- * (especially in the face of arbitrarily overlapping screens) compared
- * with the speed savings in the CursorOffScreen function. The new
- * implementation has erred on the side of correctness, readability, and
- * maintainability over efficiency. For the common (non-edge) case, the
- * dmxCursorOffScreen function does avoid a loop over all the screens.
- * When the cursor has left the screen, all the screens are searched,
- * and the first screen (in dmxScreens order) containing the cursor will
- * be returned. If run-time profiling shows that this routing is a
- * performance bottle-neck, then an edge list may have to be
- * reimplemented. An edge list algorithm is O(edges) whereas the new
- * algorithm is O(dmxNumScreens). Since edges is usually 1-3 and
- * dmxNumScreens may be 30-60 for large backend walls, this trade off
- * may be compelling.
- *
- * The xf86InitOrigins routine uses bit masks during the computation and
- * is therefore limited to the length of a word (e.g., 32 or 64 bits)
- * screens. Because Xdmx is expected to be used with a large number of
- * backend displays, this limitation was removed. The new
- * implementation has erred on the side of readability over efficiency,
- * using the dmxSL* routines to manage a screen list instead of a
- * bitmap, and a function call to decrease the length of the main
- * routine. Both algorithms are of the same order, and both are called
- * only at server generation time, so trading clarity and long-term
- * maintainability for efficiency does not seem justified in this case.
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#define DMX_CURSOR_DEBUG 0
-
-#include "dmx.h"
-#include "dmxsync.h"
-#include "dmxcursor.h"
-#include "dmxlog.h"
-#include "dmxprop.h"
-#include "dmxinput.h"
-
-#include "mipointer.h"
-#include "windowstr.h"
-#include "globals.h"
-#include "cursorstr.h"
-#include "dixevents.h" /* For GetSpriteCursor() */
-
-#if DMX_CURSOR_DEBUG
-#define DMXDBG0(f) dmxLog(dmxDebug,f)
-#define DMXDBG1(f,a) dmxLog(dmxDebug,f,a)
-#define DMXDBG2(f,a,b) dmxLog(dmxDebug,f,a,b)
-#define DMXDBG3(f,a,b,c) dmxLog(dmxDebug,f,a,b,c)
-#define DMXDBG4(f,a,b,c,d) dmxLog(dmxDebug,f,a,b,c,d)
-#define DMXDBG5(f,a,b,c,d,e) dmxLog(dmxDebug,f,a,b,c,d,e)
-#define DMXDBG6(f,a,b,c,d,e,g) dmxLog(dmxDebug,f,a,b,c,d,e,g)
-#define DMXDBG7(f,a,b,c,d,e,g,h) dmxLog(dmxDebug,f,a,b,c,d,e,g,h)
-#else
-#define DMXDBG0(f)
-#define DMXDBG1(f,a)
-#define DMXDBG2(f,a,b)
-#define DMXDBG3(f,a,b,c)
-#define DMXDBG4(f,a,b,c,d)
-#define DMXDBG5(f,a,b,c,d,e)
-#define DMXDBG6(f,a,b,c,d,e,g)
-#define DMXDBG7(f,a,b,c,d,e,g,h)
-#endif
-
-static int dmxCursorDoMultiCursors = 1;
-
-/** Turn off support for displaying multiple cursors on overlapped
- back-end displays. See #dmxCursorDoMultiCursors. */
-void dmxCursorNoMulti(void)
-{
- dmxCursorDoMultiCursors = 0;
-}
-
-static Bool dmxCursorOffScreen(ScreenPtr *ppScreen, int *x, int *y)
-{
- DMXScreenInfo *dmxScreen;
- int i;
- int localX = *x;
- int localY = *y;
- int globalX;
- int globalY;
-
- if (screenInfo.numScreens == 1) return FALSE;
-
- /* On current screen? */
- dmxScreen = &dmxScreens[(*ppScreen)->myNum];
- if (localX >= 0
- && localX < dmxScreen->rootWidth
- && localY >= 0
- && localY < dmxScreen->rootHeight) return FALSE;
-
- /* Convert to global coordinate space */
- globalX = dmxScreen->rootXOrigin + localX;
- globalY = dmxScreen->rootYOrigin + localY;
-
- /* Is cursor on the current screen?
- * This efficiently exits this routine
- * for the most common case. */
- if (ppScreen && *ppScreen) {
- dmxScreen = &dmxScreens[(*ppScreen)->myNum];
- if (globalX >= dmxScreen->rootXOrigin
- && globalX < dmxScreen->rootXOrigin + dmxScreen->rootWidth
- && globalY >= dmxScreen->rootYOrigin
- && globalY < dmxScreen->rootYOrigin + dmxScreen->rootHeight)
- return FALSE;
- }
-
- /* Find first screen cursor is on */
- for (i = 0; i < dmxNumScreens; i++) {
- dmxScreen = &dmxScreens[i];
- if (globalX >= dmxScreen->rootXOrigin
- && globalX < dmxScreen->rootXOrigin + dmxScreen->rootWidth
- && globalY >= dmxScreen->rootYOrigin
- && globalY < dmxScreen->rootYOrigin + dmxScreen->rootHeight) {
- if (dmxScreen->index == (*ppScreen)->myNum) return FALSE;
- *ppScreen = screenInfo.screens[dmxScreen->index];
- *x = globalX - dmxScreen->rootXOrigin;
- *y = globalY - dmxScreen->rootYOrigin;
- return TRUE;
- }
- }
- return FALSE;
-}
-
-static void dmxCrossScreen(ScreenPtr pScreen, Bool entering)
-{
-}
-
-static void dmxWarpCursor(ScreenPtr pScreen, int x, int y)
-{
- DMXDBG3("dmxWarpCursor(%d,%d,%d)\n", pScreen->myNum, x, y);
- miPointerWarpCursor(pScreen, x, y);
-}
-
-miPointerScreenFuncRec dmxPointerCursorFuncs =
-{
- dmxCursorOffScreen,
- dmxCrossScreen,
- dmxWarpCursor,
- dmxeqEnqueue,
- dmxeqSwitchScreen
-};
-
-
-/** Create a list of screens that we'll manipulate. */
-static int *dmxSLCreate(void)
-{
- int *list = malloc(dmxNumScreens * sizeof(*list));
- int i;
-
- for (i = 0; i < dmxNumScreens; i++) list[i] = 1;
- return list;
-}
-
-/** Free list. */
-static void dmxSLFree(int *list)
-{
- free(list);
-}
-
-/** Find next uninitialized entry in list. */
-static int dmxSLFindNext(int *list)
-{
- int i;
- for (i = 0; i < dmxNumScreens; i++) if (list[i]) return i;
- return -1;
-}
-
-/** Make one pass over all the screens and return the number updated. */
-static int dmxTryComputeScreenOrigins(int *screensLeft)
-{
- ScreenPtr pScreen;
- DMXScreenInfo *screen;
- int i, ref;
- int changed = 0;
-
- for (i = 0; i < dmxNumScreens; i++) {
- if (!screensLeft[i]) continue;
- screen = &dmxScreens[i];
- switch (screen->where) {
- case PosAbsolute:
- dixScreenOrigins[i].x = screen->whereX;
- dixScreenOrigins[i].y = screen->whereY;
- ++changed, screensLeft[i] = 0;
- break;
- case PosRelative:
- ref = screen->whereRefScreen;
- if (screensLeft[ref]) break;
- dixScreenOrigins[i].x = dixScreenOrigins[ref].x + screen->whereX;
- dixScreenOrigins[i].y = dixScreenOrigins[ref].y + screen->whereY;
- ++changed, screensLeft[i] = 0;
- break;
- case PosRightOf:
- ref = screen->whereRefScreen;
- if (screensLeft[ref]) break;
- pScreen = screenInfo.screens[ref];
- dixScreenOrigins[i].x = dixScreenOrigins[ref].x + pScreen->width;
- dixScreenOrigins[i].y = dixScreenOrigins[ref].y;
- ++changed, screensLeft[i] = 0;
- break;
- case PosLeftOf:
- ref = screen->whereRefScreen;
- if (screensLeft[ref]) break;
- pScreen = screenInfo.screens[i];
- dixScreenOrigins[i].x = dixScreenOrigins[ref].x - pScreen->width;
- dixScreenOrigins[i].y = dixScreenOrigins[ref].y;
- ++changed, screensLeft[i] = 0;
- break;
- case PosBelow:
- ref = screen->whereRefScreen;
- if (screensLeft[ref]) break;
- pScreen = screenInfo.screens[ref];
- dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
- dixScreenOrigins[i].y = dixScreenOrigins[ref].y + pScreen->height;
- ++changed, screensLeft[i] = 0;
- break;
- case PosAbove:
- ref = screen->whereRefScreen;
- if (screensLeft[ref]) break;
- pScreen = screenInfo.screens[i];
- dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
- dixScreenOrigins[i].y = dixScreenOrigins[ref].y - pScreen->height;
- ++changed, screensLeft[i] = 0;
- break;
- case PosNone:
- dmxLog(dmxFatal, "No position information for screen %d\n", i);
- }
- }
- return changed;
-}
-
-static void dmxComputeScreenOrigins(void)
-{
- int *screensLeft;
- int i, ref;
- int minX, minY;
-
- /* Compute origins based on
- * configuration information. */
- screensLeft = dmxSLCreate();
- while ((i = dmxSLFindNext(screensLeft)) >= 0) {
- while (dmxTryComputeScreenOrigins(screensLeft));
- if ((i = dmxSLFindNext(screensLeft)) >= 0) {
- /* All of the remaining screens are referencing each other.
- * Assign a value to one of them and go through again. This
- * guarantees that we will eventually terminate.
- */
- ref = dmxScreens[i].whereRefScreen;
- dixScreenOrigins[ref].x = dixScreenOrigins[ref].y = 0;
- screensLeft[ref] = 0;
- }
- }
- dmxSLFree(screensLeft);
-
-
- /* Justify the topmost and leftmost to
- * (0,0). */
- minX = dixScreenOrigins[0].x;
- minY = dixScreenOrigins[0].y;
- for (i = 1; i < dmxNumScreens; i++) { /* Compute minX, minY */
- if (dixScreenOrigins[i].x < minX) minX = dixScreenOrigins[i].x;
- if (dixScreenOrigins[i].y < minY) minY = dixScreenOrigins[i].y;
- }
- if (minX || minY) {
- for (i = 0; i < dmxNumScreens; i++) {
- dixScreenOrigins[i].x -= minX;
- dixScreenOrigins[i].y -= minY;
- }
- }
-}
-
-/** Recompute origin information in the #dmxScreens list. This is
- * either called from #dmxInitOrigins() or from #dmxReconfig(). */
-void dmxReInitOrigins(void)
-{
- int i;
-
- if (dmxNumScreens > MAXSCREENS)
- dmxLog(dmxFatal, "dmxNumScreens = %d > MAXSCREENS = %d\n",
- dmxNumScreens, MAXSCREENS);
-
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
- dmxLogOutput(dmxScreen,
- "s=%dx%d%+d%+d r=%dx%d%+d%+d @%d,%d"
- " (be=%dx%d depth=%d bpp=%d)\n",
- dmxScreen->scrnWidth, dmxScreen->scrnHeight,
- dmxScreen->scrnX, dmxScreen->scrnY,
-
- dmxScreen->rootWidth, dmxScreen->rootHeight,
- dmxScreen->rootX, dmxScreen->rootY,
-
- dmxScreen->rootXOrigin, dmxScreen->rootYOrigin,
- dmxScreen->beWidth, dmxScreen->beHeight,
- dmxScreen->beDepth, dmxScreen->beBPP);
- }
-}
-
-/** Initialize screen origins (and relative position). This is called
- * for each server generation. For dynamic reconfiguration, use
- * #dmxReInitOrigins() instead. */
-void dmxInitOrigins(void)
-{
- int i;
-
- if (dmxNumScreens > MAXSCREENS)
- dmxLog(dmxFatal, "dmxNumScreens = %d > MAXSCREENS = %d\n",
- dmxNumScreens, MAXSCREENS);
-
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
- dmxLogOutput(dmxScreen,
- "(request) s=%dx%d%+d%+d r=%dx%d%+d%+d @%d,%d (%d)"
- " (be=%dx%d depth=%d bpp=%d)\n",
- dmxScreen->scrnWidth, dmxScreen->scrnHeight,
- dmxScreen->scrnX, dmxScreen->scrnY,
-
- dmxScreen->rootWidth, dmxScreen->rootHeight,
- dmxScreen->rootX, dmxScreen->rootY,
-
- dmxScreen->whereX, dmxScreen->whereY,
- dmxScreen->where,
-
- dmxScreen->beWidth, dmxScreen->beHeight,
- dmxScreen->beDepth, dmxScreen->beBPP);
- }
-
- dmxComputeScreenOrigins();
-
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
- dmxScreen->rootXOrigin = dixScreenOrigins[i].x;
- dmxScreen->rootYOrigin = dixScreenOrigins[i].y;
- }
-
- dmxReInitOrigins();
-}
-
-/** Returns non-zero if the global \a x, \a y coordinate is on the
- * screen window of the \a dmxScreen. */
-int dmxOnScreen(int x, int y, DMXScreenInfo *dmxScreen)
-{
-#if DMX_CURSOR_DEBUG > 1
- dmxLog(dmxDebug,
- "dmxOnScreen %d %d,%d (r=%dx%d%+d%+d@%d,%d s=%dx%d%+d%+d)\n",
- dmxScreen->index, x, y,
- dmxScreen->rootWidth, dmxScreen->rootHeight,
- dmxScreen->rootX, dmxScreen->rootY,
- dmxScreen->rootXOrigin, dmxScreen->rootYOrigin,
- dmxScreen->scrnWidth, dmxScreen->scrnHeight,
- dmxScreen->scrnX, dmxScreen->scrnY);
-#endif
- if (x >= dmxScreen->rootXOrigin
- && x < dmxScreen->rootXOrigin + dmxScreen->rootWidth
- && y >= dmxScreen->rootYOrigin
- && y < dmxScreen->rootYOrigin + dmxScreen->rootHeight) return 1;
- return 0;
-}
-
-/** Returns non-zero if \a a overlaps \a b. */
-static int dmxDoesOverlap(DMXScreenInfo *a, DMXScreenInfo *b)
-{
- if (dmxOnScreen(a->rootXOrigin,
- a->rootYOrigin, b)) return 1;
-
- if (dmxOnScreen(a->rootXOrigin,
- a->rootYOrigin + a->scrnWidth, b)) return 1;
-
- if (dmxOnScreen(a->rootXOrigin + a->scrnHeight,
- a->rootYOrigin, b)) return 1;
-
- if (dmxOnScreen(a->rootXOrigin + a->scrnHeight,
- a->rootYOrigin + a->scrnWidth, b)) return 1;
-
- if (dmxOnScreen(b->rootXOrigin,
- b->rootYOrigin, a)) return 1;
-
- if (dmxOnScreen(b->rootXOrigin,
- b->rootYOrigin + b->scrnWidth, a)) return 1;
-
- if (dmxOnScreen(b->rootXOrigin + b->scrnHeight,
- b->rootYOrigin, a)) return 1;
-
- if (dmxOnScreen(b->rootXOrigin + b->scrnHeight,
- b->rootYOrigin + b->scrnWidth, a)) return 1;
-
- return 0;
-}
-
-/** Used with #dmxInterateOverlap to print out a list of screens which
- * overlap each other. */
-static void *dmxPrintOverlap(DMXScreenInfo *dmxScreen, void *closure)
-{
- DMXScreenInfo *a = closure;
- if (dmxScreen != a) {
- if (dmxScreen->cursorNotShared)
- dmxLogOutputCont(a, " [%d/%s]", dmxScreen->index, dmxScreen->name);
- else
- dmxLogOutputCont(a, " %d/%s", dmxScreen->index, dmxScreen->name);
- }
- return NULL;
-}
-
-/** Iterate over the screens which overlap with the \a start screen,
- * calling \a f with the \a closure for each argument. Often used with
- * #dmxPrintOverlap. */
-static void *dmxIterateOverlap(DMXScreenInfo *start,
- void *(*f)(DMXScreenInfo *dmxScreen, void *),
- void *closure)
-{
- DMXScreenInfo *pt;
-
- if (!start->over) return f(start, closure);
-
- for (pt = start->over; /* condition at end of loop */; pt = pt->over) {
- void *retval;
- if ((retval = f(pt, closure))) return retval;
- if (pt == start) break;
- }
- return NULL;
-}
-
-/** Used with #dmxPropertyIterate to determine if screen \a a is the
- * same as the screen \a closure. */
-static void *dmxTestSameDisplay(DMXScreenInfo *a, void *closure)
-{
- DMXScreenInfo *b = closure;
-
- if (a == b) return a;
- return NULL;
-}
-
-/** Detects overlapping dmxScreens and creates circular lists. This
- * uses an O(dmxNumScreens^2) algorithm, but dmxNumScreens is < 100 and
- * the computation only needs to be performed for every server
- * generation or dynamic reconfiguration . */
-void dmxInitOverlap(void)
-{
- int i, j;
- DMXScreenInfo *a, *b, *pt;
-
- for (i = 0; i < dmxNumScreens; i++) dmxScreens[i].over = NULL;
-
- for (i = 0; i < dmxNumScreens; i++) {
- a = &dmxScreens[i];
-
- for (j = i+1; j < dmxNumScreens; j++) {
- b = &dmxScreens[j];
- if (b->over) continue;
-
- if (dmxDoesOverlap(a, b)) {
- DMXDBG6("%d overlaps %d: a=%p %p b=%p %p\n",
- a->index, b->index, a, a->over, b, b->over);
- b->over = (a->over ? a->over : a);
- a->over = b;
- }
- }
- }
-
- for (i = 0; i < dmxNumScreens; i++) {
- a = &dmxScreens[i];
-
- if (!a->over) continue;
-
- /* Flag all pairs that are on same display */
- for (pt = a->over; pt != a; pt = pt->over) {
- if (dmxPropertyIterate(a, dmxTestSameDisplay, pt)) {
- /* The ->over sets contain the transitive set of screens
- * that overlap. For screens that are on the same
- * backend display, we only want to exclude pairs of
- * screens that mutually overlap on the backend display,
- * so we call dmxDoesOverlap, which is stricter than the
- * ->over set. */
- if (!dmxDoesOverlap(a, pt)) continue;
- a->cursorNotShared = 1;
- pt->cursorNotShared = 1;
- dmxLog(dmxInfo,
- "Screen %d and %d overlap on %s\n",
- a->index, pt->index, a->name);
- }
- }
- }
-
- for (i = 0; i < dmxNumScreens; i++) {
- a = &dmxScreens[i];
-
- if (a->over) {
- dmxLogOutput(a, "Overlaps");
- dmxIterateOverlap(a, dmxPrintOverlap, a);
- dmxLogOutputCont(a, "\n");
- }
- }
-}
-
-/** Create \a pCursor on the back-end associated with \a pScreen. */
-void dmxBECreateCursor(ScreenPtr pScreen, CursorPtr pCursor)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxCursorPrivPtr pCursorPriv = DMX_GET_CURSOR_PRIV(pCursor, pScreen);
- CursorBitsPtr pBits = pCursor->bits;
- Pixmap src, msk;
- XColor fg, bg;
- XImage *img;
- XlibGC gc = NULL;
- XGCValues v;
- unsigned long m;
- int i;
-
- if (!pCursorPriv)
- return;
-
- m = GCFunction | GCPlaneMask | GCForeground | GCBackground | GCClipMask;
- v.function = GXcopy;
- v.plane_mask = AllPlanes;
- v.foreground = 1L;
- v.background = 0L;
- v.clip_mask = None;
-
- for (i = 0; i < dmxScreen->beNumPixmapFormats; i++) {
- if (dmxScreen->bePixmapFormats[i].depth == 1) {
- /* Create GC in the back-end servers */
- gc = XCreateGC(dmxScreen->beDisplay, dmxScreen->scrnDefDrawables[i],
- m, &v);
- break;
- }
- }
- if (!gc)
- dmxLog(dmxFatal, "dmxRealizeCursor: gc not initialized\n");
-
- src = XCreatePixmap(dmxScreen->beDisplay, dmxScreen->scrnWin,
- pBits->width, pBits->height, 1);
- msk = XCreatePixmap(dmxScreen->beDisplay, dmxScreen->scrnWin,
- pBits->width, pBits->height, 1);
-
- img = XCreateImage(dmxScreen->beDisplay,
- dmxScreen->beVisuals[dmxScreen->beDefVisualIndex].visual,
- 1, XYBitmap, 0, (char *)pBits->source,
- pBits->width, pBits->height,
- BitmapPad(dmxScreen->beDisplay), 0);
-
- XPutImage(dmxScreen->beDisplay, src, gc, img, 0, 0, 0, 0,
- pBits->width, pBits->height);
-
- XFree(img);
-
- img = XCreateImage(dmxScreen->beDisplay,
- dmxScreen->beVisuals[dmxScreen->beDefVisualIndex].visual,
- 1, XYBitmap, 0, (char *)pBits->mask,
- pBits->width, pBits->height,
- BitmapPad(dmxScreen->beDisplay), 0);
-
- XPutImage(dmxScreen->beDisplay, msk, gc, img, 0, 0, 0, 0,
- pBits->width, pBits->height);
-
- XFree(img);
-
- fg.red = pCursor->foreRed;
- fg.green = pCursor->foreGreen;
- fg.blue = pCursor->foreBlue;
-
- bg.red = pCursor->backRed;
- bg.green = pCursor->backGreen;
- bg.blue = pCursor->backBlue;
-
- pCursorPriv->cursor = XCreatePixmapCursor(dmxScreen->beDisplay,
- src, msk,
- &fg, &bg,
- pBits->xhot, pBits->yhot);
-
- XFreePixmap(dmxScreen->beDisplay, src);
- XFreePixmap(dmxScreen->beDisplay, msk);
- XFreeGC(dmxScreen->beDisplay, gc);
-
- dmxSync(dmxScreen, FALSE);
-}
-
-static Bool _dmxRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxCursorPrivPtr pCursorPriv;
-
- DMXDBG2("_dmxRealizeCursor(%d,%p)\n", pScreen->myNum, pCursor);
-
- pCursor->devPriv[pScreen->myNum] = xalloc(sizeof(*pCursorPriv));
- if (!pCursor->devPriv[pScreen->myNum])
- return FALSE;
-
- pCursorPriv = DMX_GET_CURSOR_PRIV(pCursor, pScreen);
- pCursorPriv->cursor = (Cursor)0;
-
- if (!dmxScreen->beDisplay)
- return TRUE;
-
- dmxBECreateCursor(pScreen, pCursor);
- return TRUE;
-}
-
-/** Free \a pCursor on the back-end associated with \a pScreen. */
-Bool dmxBEFreeCursor(ScreenPtr pScreen, CursorPtr pCursor)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxCursorPrivPtr pCursorPriv = DMX_GET_CURSOR_PRIV(pCursor, pScreen);
-
- if (pCursorPriv) {
- XFreeCursor(dmxScreen->beDisplay, pCursorPriv->cursor);
- pCursorPriv->cursor = (Cursor)0;
- return TRUE;
- }
-
- return FALSE;
-}
-
-static Bool _dmxUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
-
- DMXDBG3("_dmxUnrealizeCursor(%d,%p) %p\n",
- pScreen->myNum, pCursor, pCursorPriv);
-
- if (dmxScreen->beDisplay) {
- if (dmxBEFreeCursor(pScreen, pCursor))
- xfree(pCursor->devPriv[pScreen->myNum]);
- }
- pCursor->devPriv[pScreen->myNum] = NULL;
-
- return TRUE;
-}
-
-static void _dmxMoveCursor(ScreenPtr pScreen, int x, int y)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- int newX = x + dmxScreen->rootX;
- int newY = y + dmxScreen->rootY;
-
- if (newX < 0) newX = 0;
- if (newY < 0) newY = 0;
-
- DMXDBG5("_dmxMoveCursor(%d,%d,%d) -> %d,%d\n",
- pScreen->myNum, x, y, newX, newY);
- if (dmxScreen->beDisplay) {
- XWarpPointer(dmxScreen->beDisplay, None, dmxScreen->scrnWin,
- 0, 0, 0, 0, newX, newY);
- dmxSync(dmxScreen, TRUE);
- }
-}
-
-static void _dmxSetCursor(ScreenPtr pScreen, CursorPtr pCursor, int x, int y)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
-
- DMXDBG4("_dmxSetCursor(%d,%p,%d,%d)\n", pScreen->myNum, pCursor, x, y);
-
- if (pCursor) {
- dmxCursorPrivPtr pCursorPriv = DMX_GET_CURSOR_PRIV(pCursor, pScreen);
- if (dmxScreen->curCursor != pCursorPriv->cursor) {
- if (dmxScreen->beDisplay)
- XDefineCursor(dmxScreen->beDisplay, dmxScreen->scrnWin,
- pCursorPriv->cursor);
- dmxScreen->cursor = pCursor;
- dmxScreen->curCursor = pCursorPriv->cursor;
- dmxScreen->cursorVisible = 1;
- }
- _dmxMoveCursor(pScreen, x, y);
- } else {
- if (dmxScreen->beDisplay)
- XDefineCursor(dmxScreen->beDisplay, dmxScreen->scrnWin,
- dmxScreen->noCursor);
- dmxScreen->cursor = NULL;
- dmxScreen->curCursor = (Cursor)0;
- dmxScreen->cursorVisible = 0;
- }
- if (dmxScreen->beDisplay) dmxSync(dmxScreen, TRUE);
-}
-
-static Bool dmxRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
-{
- DMXScreenInfo *start = &dmxScreens[pScreen->myNum];
- DMXScreenInfo *pt;
-
- if (!start->over || !dmxCursorDoMultiCursors || start->cursorNotShared)
- return _dmxRealizeCursor(pScreen, pCursor);
-
- for (pt = start->over; /* condition at end of loop */; pt = pt->over) {
- if (pt->cursorNotShared) continue;
- _dmxRealizeCursor(screenInfo.screens[pt->index], pCursor);
- if (pt == start) break;
- }
- return TRUE;
-}
-
-static Bool dmxUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
-{
- DMXScreenInfo *start = &dmxScreens[pScreen->myNum];
- DMXScreenInfo *pt;
-
- if (!start->over || !dmxCursorDoMultiCursors || start->cursorNotShared)
- return _dmxUnrealizeCursor(pScreen, pCursor);
-
- for (pt = start->over; /* condition at end of loop */; pt = pt->over) {
- if (pt->cursorNotShared) continue;
- _dmxUnrealizeCursor(screenInfo.screens[pt->index], pCursor);
- if (pt == start) break;
- }
- return TRUE;
-}
-
-static CursorPtr dmxFindCursor(DMXScreenInfo *start)
-{
- DMXScreenInfo *pt;
-
- if (!start || !start->over) return GetSpriteCursor();
- for (pt = start->over; /* condition at end of loop */; pt = pt->over) {
- if (pt->cursor) return pt->cursor;
- if (pt == start) break;
- }
- return GetSpriteCursor();
-}
-
-/** Move the cursor to coordinates (\a x, \a y)on \a pScreen. This
- * function is usually called via #dmxPointerSpriteFuncs, except during
- * reconfiguration when the cursor is repositioned to force an update on
- * newley overlapping screens and on screens that no longer overlap. */
-void dmxMoveCursor(ScreenPtr pScreen, int x, int y)
-{
- DMXScreenInfo *start = &dmxScreens[pScreen->myNum];
- DMXScreenInfo *pt;
-
- DMXDBG3("dmxMoveCursor(%d,%d,%d)\n", pScreen->myNum, x, y);
-
- if (!start->over || !dmxCursorDoMultiCursors || start->cursorNotShared) {
- _dmxMoveCursor(pScreen, x, y);
- return;
- }
-
- for (pt = start->over; /* condition at end of loop */; pt = pt->over) {
- if (pt->cursorNotShared) continue;
- if (dmxOnScreen(x + start->rootXOrigin, y + start->rootYOrigin, pt)) {
- if (/* pt != start && */ !pt->cursorVisible) {
- if (!pt->cursor) {
- /* This only happens during
- * reconfiguration when a new overlap
- * occurs. */
- CursorPtr pCursor;
-
- if ((pCursor = dmxFindCursor(start)))
- _dmxRealizeCursor(screenInfo.screens[pt->index],
- pt->cursor = pCursor);
-
- }
- _dmxSetCursor(screenInfo.screens[pt->index],
- pt->cursor,
- x + start->rootXOrigin - pt->rootXOrigin,
- y + start->rootYOrigin - pt->rootYOrigin);
- }
- _dmxMoveCursor(screenInfo.screens[pt->index],
- x + start->rootXOrigin - pt->rootXOrigin,
- y + start->rootYOrigin - pt->rootYOrigin);
- } else if (/* pt != start && */ pt->cursorVisible) {
- _dmxSetCursor(screenInfo.screens[pt->index],
- NULL,
- x + start->rootXOrigin - pt->rootXOrigin,
- y + start->rootYOrigin - pt->rootYOrigin);
- }
- if (pt == start) break;
- }
-}
-
-static void dmxSetCursor(ScreenPtr pScreen, CursorPtr pCursor, int x, int y)
-{
- DMXScreenInfo *start = &dmxScreens[pScreen->myNum];
- DMXScreenInfo *pt;
- int GX, GY, gx, gy;
-
- DMXDBG5("dmxSetCursor(%d %p, %p,%d,%d)\n",
- pScreen->myNum, start, pCursor, x, y);
-
- /* We do this check here because of two cases:
- *
- * 1) if a client calls XWarpPointer()
- * and Xinerama is not running, we can
- * have mi's notion of the pointer
- * position out of phase with DMX's
- * notion.
- *
- * 2) if a down button is held while the
- * cursor moves outside the root window,
- * mi's notion of the pointer position
- * is out of phase with DMX's notion and
- * the cursor can remain visible when it
- * shouldn't be. */
-
- dmxGetGlobalPosition(&GX, &GY);
- gx = start->rootXOrigin + x;
- gy = start->rootYOrigin + y;
- if (x && y && (GX != gx || GY != gy))
- dmxCoreMotion(gx, gy, 0, DMX_NO_BLOCK);
-
- if (!start->over || !dmxCursorDoMultiCursors || start->cursorNotShared) {
- _dmxSetCursor(pScreen, pCursor, x, y);
- return;
- }
-
- for (pt = start->over; /* condition at end of loop */; pt = pt->over) {
- if (pt->cursorNotShared) continue;
- if (dmxOnScreen(x + start->rootXOrigin, y + start->rootYOrigin, pt)) {
- _dmxSetCursor(screenInfo.screens[pt->index], pCursor,
- x + start->rootXOrigin - pt->rootXOrigin,
- y + start->rootYOrigin - pt->rootYOrigin);
- } else {
- _dmxSetCursor(screenInfo.screens[pt->index], NULL,
- x + start->rootXOrigin - pt->rootXOrigin,
- y + start->rootYOrigin - pt->rootYOrigin);
- }
- if (pt == start) break;
- }
-}
-
-
-/** This routine is used by the backend input routines to hide the
- * cursor on a screen that is being used for relative input. \see
- * dmxbackend.c */
-void dmxHideCursor(DMXScreenInfo *dmxScreen)
-{
- int x, y;
- ScreenPtr pScreen = screenInfo.screens[dmxScreen->index];
-
- dmxGetGlobalPosition(&x, &y);
- _dmxSetCursor(pScreen, NULL, x, y);
-}
-
-/** This routine is called during reconfiguration to make sure the
- * cursor is visible. */
-void dmxCheckCursor(void)
-{
- int i;
- int x, y;
- ScreenPtr pScreen;
- DMXScreenInfo *firstScreen;
-
- dmxGetGlobalPosition(&x, &y);
- firstScreen = dmxFindFirstScreen(x, y);
-
- DMXDBG2("dmxCheckCursor %d %d\n", x, y);
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
- pScreen = screenInfo.screens[dmxScreen->index];
-
- if (!dmxOnScreen(x, y, dmxScreen)) {
- if (firstScreen && i == miPointerCurrentScreen()->myNum)
- miPointerSetNewScreen(firstScreen->index, x, y);
- _dmxSetCursor(pScreen, NULL,
- x - dmxScreen->rootXOrigin,
- y - dmxScreen->rootYOrigin);
- } else {
- if (!dmxScreen->cursor) {
- CursorPtr pCursor;
-
- if ((pCursor = dmxFindCursor(dmxScreen))) {
- _dmxRealizeCursor(pScreen, dmxScreen->cursor = pCursor);
- }
- }
- _dmxSetCursor(pScreen, dmxScreen->cursor,
- x - dmxScreen->rootXOrigin,
- y - dmxScreen->rootYOrigin);
- }
- }
- DMXDBG2(" leave dmxCheckCursor %d %d\n", x, y);
-}
-
-miPointerSpriteFuncRec dmxPointerSpriteFuncs =
-{
- dmxRealizeCursor,
- dmxUnrealizeCursor,
- dmxSetCursor,
- dmxMoveCursor,
-};
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxcursor.h b/nx-X11/programs/Xserver/hw/dmx/dmxcursor.h
deleted file mode 100644
index af076bd1c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxcursor.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* $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:
- *
- * 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:
- * David H. Dawes <dawes@xfree86.org>
- * Kevin E. Martin <kem@redhat.com>
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface for cursor support. \see dmxcursor.c. */
-
-#ifndef DMXCURSOR_H
-#define DMXCURSOR_H
-
-#include "mipointer.h"
-
-/** Cursor private area. */
-typedef struct _dmxCursorPriv {
- Cursor cursor;
-} dmxCursorPrivRec, *dmxCursorPrivPtr;
-
-/** Cursor functions for mi layer. \see dmxcursor.c \see dmxscrinit.c */
-extern miPointerScreenFuncRec dmxPointerCursorFuncs;
-/** Sprite functions for mi layer. \see dmxcursor.c \see dmxscrinit.c */
-extern miPointerSpriteFuncRec dmxPointerSpriteFuncs;
-
-extern void dmxReInitOrigins(void);
-extern void dmxInitOrigins(void);
-extern void dmxInitOverlap(void);
-extern void dmxCursorNoMulti(void);
-extern void dmxMoveCursor(ScreenPtr pScreen, int x, int y);
-extern void dmxCheckCursor(void);
-extern int dmxOnScreen(int x, int y, DMXScreenInfo *dmxScreen);
-extern void dmxHideCursor(DMXScreenInfo *dmxScreen);
-
-extern void dmxBECreateCursor(ScreenPtr pScreen, CursorPtr pCursor);
-extern Bool dmxBEFreeCursor(ScreenPtr pScreen, CursorPtr pCursor);
-
-#define DMX_GET_CURSOR_PRIV(_pCursor, _pScreen) \
- (dmxCursorPrivPtr)(_pCursor)->devPriv[(_pScreen)->myNum]
-
-#endif /* DMXCURSOR_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxdpms.c b/nx-X11/programs/Xserver/hw/dmx/dmxdpms.c
deleted file mode 100644
index 5bcce188d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxdpms.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2003-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:
- *
- * 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.
- */
-
-/*
- * Author:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * Provides DPMS support and unifies all DPMS and other screen-saver
- * support in one file. If -dpms is given on the command line, or the
- * Xdmx server is not compiled with DPMS support, then the DPMS extension
- * does not work for clients, but DPMS on the backends is still disables
- * (and restored at Xdmx server shutdown time).
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxdpms.h"
-#include "dmxlog.h"
-#include "dmxsync.h"
-#ifdef DPMSExtension
-#include "dpmsproc.h"
-#endif
-#include "windowstr.h" /* For screenIsSaved */
-#include <X11/extensions/dpms.h>
-
-static unsigned long dpmsGeneration = 0;
-static Bool dpmsSupported = TRUE;
-
-static void _dmxDPMSInit(DMXScreenInfo *dmxScreen)
-{
- int event_base, error_base;
- int major, minor;
- CARD16 level, standby, suspend, off;
- BOOL state;
- const char *monitor;
-
- if (dpmsGeneration != serverGeneration) {
- dpmsSupported = TRUE; /* On unless a backend doesn't support it */
- dpmsGeneration = serverGeneration;
- }
-
-#ifdef DPMSExtension
- if (DPMSDisabledSwitch) dpmsSupported = FALSE; /* -dpms turns off */
-#endif
-
- dmxScreen->dpmsCapable = 0;
-
- if (!dmxScreen->beDisplay) {
- dmxLogOutput(dmxScreen,
- "Cannot determine if DPMS supported (detached screen)\n");
- dpmsSupported = FALSE;
- return;
- }
-
- if (!DPMSQueryExtension(dmxScreen->beDisplay,
- &event_base, &error_base)) {
- dmxLogOutput(dmxScreen, "DPMS not supported\n");
- dpmsSupported = FALSE;
- return;
- }
- if (!DPMSGetVersion(dmxScreen->beDisplay, &major, &minor)) {
- dmxLogOutput(dmxScreen, "DPMS not supported\n");
- dpmsSupported = FALSE;
- return;
- }
- if (!DPMSCapable(dmxScreen->beDisplay)) {
- dmxLogOutput(dmxScreen, "DPMS %d.%d (not DPMS capable)\n",
- major, minor);
- dpmsSupported = FALSE;
- return;
- }
-
- DPMSInfo(dmxScreen->beDisplay, &level, &state);
- DPMSGetTimeouts(dmxScreen->beDisplay, &standby, &suspend, &off);
- DPMSSetTimeouts(dmxScreen->beDisplay, 0, 0, 0);
- DPMSEnable(dmxScreen->beDisplay);
- DPMSForceLevel(dmxScreen->beDisplay, DPMSModeOn);
- dmxScreen->dpmsCapable = 1;
- dmxScreen->dpmsEnabled = !!state;
- dmxScreen->dpmsStandby = standby;
- dmxScreen->dpmsSuspend = suspend;
- dmxScreen->dpmsOff = off;
-
- switch (level) {
- case DPMSModeOn: monitor = "on"; break;
- case DPMSModeStandby: monitor = "standby"; break;
- case DPMSModeSuspend: monitor = "suspend"; break;
- case DPMSModeOff: monitor = "off"; break;
- default: monitor = "unknown"; break;
- }
-
- dmxLogOutput(dmxScreen,
- "DPMS %d.%d (%s, %s, %d %d %d)\n",
- major, minor, monitor, state ? "enabled" : "disabled",
- standby, suspend, off);
-}
-
-/** Initialize DPMS support. We save the current settings and turn off
- * DPMS. The settings are restored in #dmxDPMSTerm. */
-void dmxDPMSInit(DMXScreenInfo *dmxScreen)
-{
- int interval, preferBlanking, allowExposures;
-
- /* Turn off DPMS */
- _dmxDPMSInit(dmxScreen);
-
- if (!dmxScreen->beDisplay)
- return;
-
- /* Turn off screen saver */
- XGetScreenSaver(dmxScreen->beDisplay, &dmxScreen->savedTimeout, &interval,
- &preferBlanking, &allowExposures);
- XSetScreenSaver(dmxScreen->beDisplay, 0, interval,
- preferBlanking, allowExposures);
- XResetScreenSaver(dmxScreen->beDisplay);
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Terminate DPMS support on \a dmxScreen. We restore the settings
- * saved in #dmxDPMSInit. */
-void dmxDPMSTerm(DMXScreenInfo *dmxScreen)
-{
- int timeout, interval, preferBlanking, allowExposures;
-
- if (!dmxScreen->beDisplay)
- return;
-
- XGetScreenSaver(dmxScreen->beDisplay, &timeout, &interval,
- &preferBlanking, &allowExposures);
- XSetScreenSaver(dmxScreen->beDisplay, dmxScreen->savedTimeout, interval,
- preferBlanking, allowExposures);
- if (dmxScreen->dpmsCapable) {
- /* Restore saved state */
- DPMSForceLevel(dmxScreen->beDisplay, DPMSModeOn);
- DPMSSetTimeouts(dmxScreen->beDisplay, dmxScreen->dpmsStandby,
- dmxScreen->dpmsSuspend, dmxScreen->dpmsOff);
- if (dmxScreen->dpmsEnabled) DPMSEnable(dmxScreen->beDisplay);
- else DPMSDisable(dmxScreen->beDisplay);
- }
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Called when activity is detected so that DPMS power-saving mode can
- * be deactivated. */
-void dmxDPMSWakeup(void)
-{
- if (screenIsSaved == SCREEN_SAVER_ON)
- SaveScreens(SCREEN_SAVER_OFF, ScreenSaverReset);
-#ifdef DPMSExtension
- if (DPMSPowerLevel) DPMSSet(0);
-#endif
-}
-
-#ifdef DPMSExtension
-/** This is called on each server generation. It should determine if
- * DPMS is supported on all of the backends and, if so, return TRUE. */
-Bool DPMSSupported(void)
-{
- return dpmsSupported;
-}
-
-/** This is used by clients (e.g., xset) to set the DPMS level. */
-void DPMSSet(int level)
-{
- int i;
-
- if (!dpmsSupported) return;
-
- if (level < 0) level = DPMSModeOn;
- if (level > 3) level = DPMSModeOff;
-
- DPMSPowerLevel = level;
-
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
- if (dmxScreen->beDisplay) {
- DPMSForceLevel(dmxScreen->beDisplay, level);
- dmxSync(dmxScreen, FALSE);
- }
- }
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxdpms.h b/nx-X11/programs/Xserver/hw/dmx/dmxdpms.h
deleted file mode 100644
index d3fa57d4a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxdpms.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 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.
- */
-
-/*
- * Author:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface for DPMS extension support. \see dmxdpms.c */
-
-#ifndef _DMXDPMS_H_
-#define _DMXDPMS_H_
-extern void dmxDPMSInit(DMXScreenInfo *dmxScreen);
-extern void dmxDPMSTerm(DMXScreenInfo *dmxScreen);
-extern void dmxDPMSWakeup(void); /* Call when input is processed */
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxextension.c b/nx-X11/programs/Xserver/hw/dmx/dmxextension.c
deleted file mode 100644
index feadb5e31..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxextension.c
+++ /dev/null
@@ -1,1497 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2003-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:
- *
- * 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.
- */
-
-/*
- * Author:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * This file provides the only interface to the X server extension support
- * in programs/Xserver/Xext. Those programs should only include dmxext.h
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxinit.h"
-#include "dmxextension.h"
-#include "dmxwindow.h"
-#include "dmxcb.h"
-#include "dmxcursor.h"
-#include "dmxpixmap.h"
-#include "dmxgc.h"
-#include "dmxfont.h"
-#include "dmxcmap.h"
-#ifdef RENDER
-#include "dmxpict.h"
-#endif
-#include "dmxinput.h"
-#include "dmxsync.h"
-#include "dmxscrinit.h"
-#include "input/dmxinputinit.h"
-
-#include "windowstr.h"
-#include "inputstr.h" /* For DeviceIntRec */
-#include <X11/extensions/dmxproto.h> /* For DMX_BAD_* */
-#include "cursorstr.h"
-
-/* The default font is declared in dix/globals.c, but is not included in
- * _any_ header files. */
-extern FontPtr defaultFont;
-
-/** This routine provides information to the DMX protocol extension
- * about a particular screen. */
-Bool dmxGetScreenAttributes(int physical, DMXScreenAttributesPtr attr)
-{
- DMXScreenInfo *dmxScreen;
-
- if (physical < 0 || physical >= dmxNumScreens) return FALSE;
-
- dmxScreen = &dmxScreens[physical];
- attr->displayName = dmxScreen->name;
-#ifdef PANORAMIX
- attr->logicalScreen = noPanoramiXExtension ? dmxScreen->index : 0;
-#else
- attr->logicalScreen = dmxScreen->index;
-#endif
-
- attr->screenWindowWidth = dmxScreen->scrnWidth;
- attr->screenWindowHeight = dmxScreen->scrnHeight;
- attr->screenWindowXoffset = dmxScreen->scrnX;
- attr->screenWindowYoffset = dmxScreen->scrnY;
-
- attr->rootWindowWidth = dmxScreen->rootWidth;
- attr->rootWindowHeight = dmxScreen->rootHeight;
- attr->rootWindowXoffset = dmxScreen->rootX;
- attr->rootWindowYoffset = dmxScreen->rootY;
-
- attr->rootWindowXorigin = dmxScreen->rootXOrigin;
- attr->rootWindowYorigin = dmxScreen->rootYOrigin;
-
- return TRUE;
-}
-
-/** This routine provides information to the DMX protocol extension
- * about a particular window. */
-Bool dmxGetWindowAttributes(WindowPtr pWindow, DMXWindowAttributesPtr attr)
-{
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
-
- attr->screen = pWindow->drawable.pScreen->myNum;
- attr->window = pWinPriv->window;
-
- attr->pos.x = pWindow->drawable.x;
- attr->pos.y = pWindow->drawable.y;
- attr->pos.width = pWindow->drawable.width;
- attr->pos.height = pWindow->drawable.height;
-
- if (!pWinPriv->window || pWinPriv->offscreen) {
- attr->vis.x = 0;
- attr->vis.y = 0;
- attr->vis.height = 0;
- attr->vis.width = 0;
- return pWinPriv->window ? TRUE : FALSE;
- }
-
- /* Compute display-relative coordinates */
- attr->vis.x = pWindow->drawable.x;
- attr->vis.y = pWindow->drawable.y;
- attr->vis.width = pWindow->drawable.width;
- attr->vis.height = pWindow->drawable.height;
-
- if (attr->pos.x < 0) {
- attr->vis.x -= attr->pos.x;
- attr->vis.width = attr->pos.x + attr->pos.width - attr->vis.x;
- }
- if (attr->pos.x + attr->pos.width > pWindow->drawable.pScreen->width) {
- if (attr->pos.x < 0)
- attr->vis.width = pWindow->drawable.pScreen->width;
- else
- attr->vis.width = pWindow->drawable.pScreen->width - attr->pos.x;
- }
- if (attr->pos.y < 0) {
- attr->vis.y -= attr->pos.y;
- attr->vis.height = attr->pos.y + attr->pos.height - attr->vis.y;
- }
- if (attr->pos.y + attr->pos.height > pWindow->drawable.pScreen->height) {
- if (attr->pos.y < 0)
- attr->vis.height = pWindow->drawable.pScreen->height;
- else
- attr->vis.height = pWindow->drawable.pScreen->height - attr->pos.y;
- }
-
- /* Convert to window-relative coordinates */
- attr->vis.x -= attr->pos.x;
- attr->vis.y -= attr->pos.y;
-
- return TRUE;
-}
-
-void dmxGetDesktopAttributes(DMXDesktopAttributesPtr attr)
-{
- attr->width = dmxGlobalWidth;
- attr->height = dmxGlobalHeight;
- attr->shiftX = 0; /* NOTE: The upper left hand corner of */
- attr->shiftY = 0; /* the desktop is always <0,0>. */
-}
-
-/** Return the total number of devices, not just #dmxNumInputs. The
- * number returned should be the same as that returned by
- * XListInputDevices. */
-int dmxGetInputCount(void)
-{
- int i, total;
-
- for (total = i = 0; i < dmxNumInputs; i++) total += dmxInputs[i].numDevs;
- return total;
-}
-
-/** Return information about the device with id = \a deviceId. This
- * information is primarily for the #ProcDMXGetInputAttributes()
- * function, which does not have access to the appropriate data
- * structure. */
-int dmxGetInputAttributes(int deviceId, DMXInputAttributesPtr attr)
-{
- int i, j;
- DMXInputInfo *dmxInput;
-
- if (deviceId < 0) return -1;
- for (i = 0; i < dmxNumInputs; i++) {
- dmxInput = &dmxInputs[i];
- for (j = 0; j < dmxInput->numDevs; j++) {
- DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[j];
- if (deviceId != dmxLocal->pDevice->id) continue;
- attr->isCore = !!dmxLocal->isCore;
- attr->sendsCore = !!dmxLocal->sendsCore;
- attr->detached = !!dmxInput->detached;
- attr->physicalScreen = -1;
- attr->physicalId = -1;
- attr->name = NULL;
- switch (dmxLocal->extType) {
- case DMX_LOCAL_TYPE_LOCAL:
- attr->inputType = 0;
- break;
- case DMX_LOCAL_TYPE_CONSOLE:
- attr->inputType = 1;
- attr->name = dmxInput->name;
- attr->physicalId = dmxLocal->deviceId;
- break;
- case DMX_LOCAL_TYPE_BACKEND:
- case DMX_LOCAL_TYPE_COMMON:
- attr->inputType = 2;
- attr->physicalScreen = dmxInput->scrnIdx;
- attr->name = dmxInput->name;
- attr->physicalId = dmxLocal->deviceId;
- break;
- }
- return 0; /* Success */
- }
- }
- return -1; /* Failure */
-}
-
-/** Reinitialized the cursor boundaries. */
-static void dmxAdjustCursorBoundaries(void)
-{
- int i;
-
- dmxReInitOrigins();
- dmxInitOverlap();
- dmxComputeWidthHeight(DMX_NO_RECOMPUTE_BOUNDING_BOX);
- dmxConnectionBlockCallback();
- for (i = 0; i < dmxNumInputs; i++) {
- DMXInputInfo *dmxInput = &dmxInputs[i];
- if (!dmxInput->detached) dmxInputReInit(dmxInput);
- }
-
- dmxCheckCursor();
-
- for (i = 0; i < dmxNumInputs; i++) {
- DMXInputInfo *dmxInput = &dmxInputs[i];
- if (!dmxInput->detached) dmxInputLateReInit(dmxInput);
- }
-}
-
-/** Add an input with the specified attributes. If the input is added,
- * the physical id is returned in \a deviceId. */
-int dmxAddInput(DMXInputAttributesPtr attr, int *id)
-{
- int retcode = BadValue;
-
- if (attr->inputType == 1) /* console */
- retcode = dmxInputAttachConsole(attr->name, attr->sendsCore, id);
- else if (attr->inputType == 2) /* backend */
- retcode = dmxInputAttachBackend(attr->physicalScreen,
- attr->sendsCore,id);
-
- if (retcode == Success) {
- /* Adjust the cursor boundaries */
- dmxAdjustCursorBoundaries();
-
- /* Force completion of the changes */
- dmxSync(NULL, TRUE);
- }
-
- return retcode;
-}
-
-/** Remove the input with physical id \a id. */
-int dmxRemoveInput(int id)
-{
- return dmxInputDetachId(id);
-}
-
-/** Return the value of #dmxNumScreens -- the total number of backend
- * screens in use (these are logical screens and may be larger than the
- * number of backend displays). */
-unsigned long dmxGetNumScreens(void)
-{
- return dmxNumScreens;
-}
-
-/** Make sure that #dmxCreateAndRealizeWindow has been called for \a
- * pWindow. */
-void dmxForceWindowCreation(WindowPtr pWindow)
-{
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- if (!pWinPriv->window) dmxCreateAndRealizeWindow(pWindow, TRUE);
-}
-
-/** Flush pending syncs for all screens. */
-void dmxFlushPendingSyncs(void)
-{
- dmxSync(NULL, TRUE);
-}
-
-/** Update DMX's screen resources to match those of the newly moved
- * and/or resized "root" window. */
-void dmxUpdateScreenResources(ScreenPtr pScreen, int x, int y, int w, int h)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- WindowPtr pRoot = WindowTable[pScreen->myNum];
- WindowPtr pChild;
- Bool anyMarked = FALSE;
-
- /* Handle special case where width and/or height are zero */
- if (w == 0 || h == 0) {
- w = 1;
- h = 1;
- }
-
- /* Change screen size */
- pScreen->width = w;
- pScreen->height = h;
-
- /* Reset the root window's drawable's size */
- pRoot->drawable.width = w;
- pRoot->drawable.height = h;
-
- /* Set the root window's new winSize and borderSize */
- pRoot->winSize.extents.x1 = 0;
- pRoot->winSize.extents.y1 = 0;
- pRoot->winSize.extents.x2 = w;
- pRoot->winSize.extents.y2 = h;
-
- pRoot->borderSize.extents.x1 = 0;
- pRoot->borderSize.extents.y1 = 0;
- pRoot->borderSize.extents.x2 = w;
- pRoot->borderSize.extents.y2 = h;
-
- /* Recompute this screen's mmWidth & mmHeight */
- pScreen->mmWidth =
- (w * 254 + dmxScreen->beXDPI * 5) / (dmxScreen->beXDPI * 10);
- pScreen->mmHeight =
- (h * 254 + dmxScreen->beYDPI * 5) / (dmxScreen->beYDPI * 10);
-
- /* Recompute this screen's window's clip rects as follows: */
- /* 1. Mark all of root's children's windows */
- for (pChild = pRoot->firstChild; pChild; pChild = pChild->nextSib)
- anyMarked |= pScreen->MarkOverlappedWindows(pChild, pChild,
- (WindowPtr *)NULL);
-
- /* 2. Set the root window's borderClip */
- pRoot->borderClip.extents.x1 = 0;
- pRoot->borderClip.extents.y1 = 0;
- pRoot->borderClip.extents.x2 = w;
- pRoot->borderClip.extents.y2 = h;
-
- /* 3. Set the root window's clipList */
- if (anyMarked) {
- /* If any windows have been marked, set the root window's
- * clipList to be broken since it will be recalculated in
- * ValidateTree()
- */
- REGION_BREAK(pScreen, &pRoot->clipList);
- } else {
- /* Otherwise, we just set it directly since there are no
- * windows visible on this screen
- */
- pRoot->clipList.extents.x1 = 0;
- pRoot->clipList.extents.y1 = 0;
- pRoot->clipList.extents.x2 = w;
- pRoot->clipList.extents.y2 = h;
- }
-
- /* 4. Revalidate all clip rects and generate expose events */
- if (anyMarked) {
- pScreen->ValidateTree(pRoot, NULL, VTBroken);
- pScreen->HandleExposures(pRoot);
- if (pScreen->PostValidateTree)
- pScreen->PostValidateTree(pRoot, NULL, VTBroken);
- }
-}
-
-#ifdef PANORAMIX
-#include "panoramiXsrv.h"
-
-/* Defined in dix/events.c */
-extern void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff);
-
-/** Change the "screen" window attributes by resizing the actual window
- * on the back-end display (if necessary). */
-static void dmxConfigureScreenWindow(int idx,
- int x, int y, int w, int h)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
- ScreenPtr pScreen = screenInfo.screens[idx];
-
- /* Resize "screen" window */
- if (dmxScreen->scrnX != x ||
- dmxScreen->scrnY != y ||
- dmxScreen->scrnWidth != w ||
- dmxScreen->scrnHeight != h) {
- dmxResizeScreenWindow(pScreen, x, y, w, h);
- }
-
- /* Change "screen" window values */
- dmxScreen->scrnX = x;
- dmxScreen->scrnY = y;
- dmxScreen->scrnWidth = w;
- dmxScreen->scrnHeight = h;
-}
-
-/** Change the "root" window position and size by resizing the actual
- * window on the back-end display (if necessary) and updating all of
- * DMX's resources by calling #dmxUpdateScreenResources. */
-static void dmxConfigureRootWindow(int idx, int x, int y, int w, int h)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
- WindowPtr pRoot = WindowTable[idx];
-
- /* NOTE: Either this function or the ones that it calls must handle
- * the case where w == 0 || h == 0. Currently, the functions that
- * this one calls handle that case. */
-
- /* 1. Resize "root" window */
- if (dmxScreen->rootX != x ||
- dmxScreen->rootY != y ||
- dmxScreen->rootWidth != w ||
- dmxScreen->rootHeight != h) {
- dmxResizeRootWindow(pRoot, x, y, w, h);
- }
-
- /* 2. Update all of the screen's resources associated with this root
- * window */
- if (dmxScreen->rootWidth != w ||
- dmxScreen->rootHeight != h) {
- dmxUpdateScreenResources(screenInfo.screens[idx], x, y, w, h);
- }
-
- /* Change "root" window values */
- dmxScreen->rootX = x;
- dmxScreen->rootY = y;
- dmxScreen->rootWidth = w;
- dmxScreen->rootHeight = h;
-}
-
-/** Change the "root" window's origin by updating DMX's internal data
- * structures (dix and Xinerama) to use the new origin and adjust the
- * positions of windows that overlap this "root" window. */
-static void dmxSetRootWindowOrigin(int idx, int x, int y)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
- ScreenPtr pScreen = screenInfo.screens[idx];
- WindowPtr pRoot = WindowTable[idx];
- WindowPtr pChild;
- int xoff;
- int yoff;
-
- /* Change "root" window's origin */
- dmxScreen->rootXOrigin = x;
- dmxScreen->rootYOrigin = y;
-
- /* Compute offsets here in case <x,y> has been changed above */
- xoff = x - dixScreenOrigins[idx].x;
- yoff = y - dixScreenOrigins[idx].y;
-
- /* Adjust the root window's position in dixScreenOrigins */
- dixScreenOrigins[idx].x = dmxScreen->rootXOrigin;
- dixScreenOrigins[idx].y = dmxScreen->rootYOrigin;
-
- /* Recalculate the Xinerama regions and data structs */
- XineramaReinitData(pScreen);
-
- /* Adjust each of the root window's children */
- if (!idx) ReinitializeRootWindow(WindowTable[0], xoff, yoff);
- pChild = pRoot->firstChild;
- while (pChild) {
- /* Adjust child window's position */
- pScreen->MoveWindow(pChild,
- pChild->origin.x - wBorderWidth(pChild) - xoff,
- pChild->origin.y - wBorderWidth(pChild) - yoff,
- pChild->nextSib,
- VTMove);
-
- /* Note that the call to MoveWindow will eventually call
- * dmxPositionWindow which will automatically create a
- * window if it is now exposed on screen (for lazy window
- * creation optimization) and it will properly set the
- * offscreen flag.
- */
-
- pChild = pChild->nextSib;
- }
-}
-
-/** Configure the attributes of each "screen" and "root" window. */
-int dmxConfigureScreenWindows(int nscreens,
- CARD32 *screens,
- DMXScreenAttributesPtr attribs,
- int *errorScreen)
-{
- int i;
-
- for (i = 0; i < nscreens; i++) {
- DMXScreenAttributesPtr attr = &attribs[i];
- int idx = screens[i];
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
-
- if (errorScreen) *errorScreen = i;
-
- if (!dmxScreen->beDisplay) return DMX_BAD_VALUE;
-
- /* Check for illegal values */
- if (idx < 0 || idx >= dmxNumScreens) return BadValue;
-
- /* The "screen" and "root" windows must have valid sizes */
- if (attr->screenWindowWidth <= 0 || attr->screenWindowHeight <= 0 ||
- attr->rootWindowWidth < 0 || attr->rootWindowHeight < 0)
- return DMX_BAD_VALUE;
-
- /* The "screen" window must fit entirely within the BE display */
- if (attr->screenWindowXoffset < 0 ||
- attr->screenWindowYoffset < 0 ||
- attr->screenWindowXoffset
- + attr->screenWindowWidth > (unsigned)dmxScreen->beWidth ||
- attr->screenWindowYoffset
- + attr->screenWindowHeight > (unsigned)dmxScreen->beHeight)
- return DMX_BAD_VALUE;
-
- /* The "root" window must fit entirely within the "screen" window */
- if (attr->rootWindowXoffset < 0 ||
- attr->rootWindowYoffset < 0 ||
- attr->rootWindowXoffset
- + attr->rootWindowWidth > attr->screenWindowWidth ||
- attr->rootWindowYoffset
- + attr->rootWindowHeight > attr->screenWindowHeight)
- return DMX_BAD_VALUE;
-
- /* The "root" window must not expose unaddressable coordinates */
- if (attr->rootWindowXorigin < 0 ||
- attr->rootWindowYorigin < 0 ||
- attr->rootWindowXorigin + attr->rootWindowWidth > 32767 ||
- attr->rootWindowYorigin + attr->rootWindowHeight > 32767)
- return DMX_BAD_VALUE;
-
- /* The "root" window must fit within the global bounding box */
- if (attr->rootWindowXorigin
- + attr->rootWindowWidth > (unsigned)dmxGlobalWidth ||
- attr->rootWindowYorigin
- + attr->rootWindowHeight > (unsigned)dmxGlobalHeight)
- return DMX_BAD_VALUE;
-
- /* FIXME: Handle the rest of the illegal value checking */
- }
-
- /* No illegal values found */
- if (errorScreen) *errorScreen = 0;
-
- for (i = 0; i < nscreens; i++) {
- DMXScreenAttributesPtr attr = &attribs[i];
- int idx = screens[i];
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
-
- dmxLog(dmxInfo, "Changing screen #%d attributes "
- "from %dx%d+%d+%d %dx%d+%d+%d +%d+%d "
- "to %dx%d+%d+%d %dx%d+%d+%d +%d+%d\n",
- idx,
- dmxScreen->scrnWidth, dmxScreen->scrnHeight,
- dmxScreen->scrnX, dmxScreen->scrnY,
- dmxScreen->rootWidth, dmxScreen->rootHeight,
- dmxScreen->rootX, dmxScreen->rootY,
- dmxScreen->rootXOrigin, dmxScreen->rootYOrigin,
- attr->screenWindowWidth, attr->screenWindowHeight,
- attr->screenWindowXoffset, attr->screenWindowYoffset,
- attr->rootWindowWidth, attr->rootWindowHeight,
- attr->rootWindowXoffset, attr->rootWindowYoffset,
- attr->rootWindowXorigin, attr->rootWindowYorigin);
-
- /* Configure "screen" window */
- dmxConfigureScreenWindow(idx,
- attr->screenWindowXoffset,
- attr->screenWindowYoffset,
- attr->screenWindowWidth,
- attr->screenWindowHeight);
-
- /* Configure "root" window */
- dmxConfigureRootWindow(idx,
- attr->rootWindowXoffset,
- attr->rootWindowYoffset,
- attr->rootWindowWidth,
- attr->rootWindowHeight);
-
-
- /* Set "root" window's origin */
- dmxSetRootWindowOrigin(idx,
- attr->rootWindowXorigin,
- attr->rootWindowYorigin);
- }
-
- /* Adjust the cursor boundaries */
- dmxAdjustCursorBoundaries();
-
- /* Force completion of the changes */
- dmxSync(NULL, TRUE);
-
- return Success;
-}
-
-/** Configure the attributes of the global desktop. */
-int dmxConfigureDesktop(DMXDesktopAttributesPtr attribs)
-{
- if (attribs->width <= 0 || attribs->width >= 32767 ||
- attribs->height <= 0 || attribs->height >= 32767)
- return DMX_BAD_VALUE;
-
- /* If the desktop is shrinking, adjust the "root" windows on each
- * "screen" window to only show the visible desktop. Also, handle
- * the special case where the desktop shrinks such that the it no
- * longer overlaps an portion of a "screen" window. */
- if (attribs->width < dmxGlobalWidth || attribs->height < dmxGlobalHeight) {
- int i;
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
- if (dmxScreen->rootXOrigin
- + dmxScreen->rootWidth > attribs->width ||
- dmxScreen->rootYOrigin
- + dmxScreen->rootHeight > attribs->height) {
- int w, h;
- if ((w = attribs->width - dmxScreen->rootXOrigin) < 0) w = 0;
- if ((h = attribs->height - dmxScreen->rootYOrigin) < 0) h = 0;
- if (w > dmxScreen->scrnWidth) w = dmxScreen->scrnWidth;
- if (h > dmxScreen->scrnHeight) h = dmxScreen->scrnHeight;
- if (w > dmxScreen->rootWidth) w = dmxScreen->rootWidth;
- if (h > dmxScreen->rootHeight) h = dmxScreen->rootHeight;
- dmxConfigureRootWindow(i,
- dmxScreen->rootX,
- dmxScreen->rootY,
- w, h);
- }
- }
- }
-
- /* Set the global width/height */
- dmxSetWidthHeight(attribs->width, attribs->height);
-
- /* Handle shift[XY] changes */
- if (attribs->shiftX || attribs->shiftY) {
- int i;
- for (i = 0; i < dmxNumScreens; i++) {
- ScreenPtr pScreen = screenInfo.screens[i];
- WindowPtr pChild = WindowTable[i]->firstChild;
- while (pChild) {
- /* Adjust child window's position */
- pScreen->MoveWindow(pChild,
- pChild->origin.x - wBorderWidth(pChild)
- - attribs->shiftX,
- pChild->origin.y - wBorderWidth(pChild)
- - attribs->shiftY,
- pChild->nextSib,
- VTMove);
-
- /* Note that the call to MoveWindow will eventually call
- * dmxPositionWindow which will automatically create a
- * window if it is now exposed on screen (for lazy
- * window creation optimization) and it will properly
- * set the offscreen flag.
- */
-
- pChild = pChild->nextSib;
- }
- }
- }
-
- /* Update connection block, Xinerama, etc. -- these appears to
- * already be handled in dmxConnectionBlockCallback(), which is
- * called from dmxAdjustCursorBoundaries() [below]. */
-
- /* Adjust the cursor boundaries */
- dmxAdjustCursorBoundaries();
-
- /* Force completion of the changes */
- dmxSync(NULL, TRUE);
-
- return Success;
-}
-#endif
-
-/** Create the scratch GCs per depth. */
-static void dmxBECreateScratchGCs(int scrnNum)
-{
- ScreenPtr pScreen = screenInfo.screens[scrnNum];
- GCPtr *ppGC = pScreen->GCperDepth;
- int i;
-
- for (i = 0; i <= pScreen->numDepths; i++)
- dmxBECreateGC(pScreen, ppGC[i]);
-}
-
-#ifdef PANORAMIX
-static Bool FoundPixImage;
-
-/** Search the Xinerama XRT_PIXMAP resources for the pixmap that needs
- * to have its image restored. When it is found, see if there is
- * another screen with the same image. If so, copy the pixmap image
- * from the existing screen to the newly created pixmap. */
-static void dmxBERestorePixmapImage(pointer value, XID id, RESTYPE type,
- pointer p)
-{
- if ((type & TypeMask) == (XRT_PIXMAP & TypeMask)) {
- PixmapPtr pDst = (PixmapPtr)p;
- int idx = pDst->drawable.pScreen->myNum;
- PanoramiXRes *pXinPix = (PanoramiXRes *)value;
- PixmapPtr pPix;
- int i;
-
- pPix = (PixmapPtr)LookupIDByType(pXinPix->info[idx].id, RT_PIXMAP);
- if (pPix != pDst) return; /* Not a match.... Next! */
-
- for (i = 0; i < PanoramiXNumScreens; i++) {
- PixmapPtr pSrc;
- dmxPixPrivPtr pSrcPriv = NULL;
-
- if (i == idx) continue; /* Self replication is bad */
-
- pSrc =
- (PixmapPtr)LookupIDByType(pXinPix->info[i].id, RT_PIXMAP);
- pSrcPriv = DMX_GET_PIXMAP_PRIV(pSrc);
- if (pSrcPriv->pixmap) {
- DMXScreenInfo *dmxSrcScreen = &dmxScreens[i];
- DMXScreenInfo *dmxDstScreen = &dmxScreens[idx];
- dmxPixPrivPtr pDstPriv = DMX_GET_PIXMAP_PRIV(pDst);
- XImage *img;
- int j;
- XlibGC gc = NULL;
-
- /* This should never happen, but just in case.... */
- if (pSrc->drawable.width != pDst->drawable.width ||
- pSrc->drawable.height != pDst->drawable.height)
- return;
-
- /* Copy from src pixmap to dst pixmap */
- img = XGetImage(dmxSrcScreen->beDisplay,
- pSrcPriv->pixmap,
- 0, 0,
- pSrc->drawable.width, pSrc->drawable.height,
- -1,
- ZPixmap);
-
- for (j = 0; j < dmxDstScreen->beNumPixmapFormats; j++) {
- if (dmxDstScreen->bePixmapFormats[j].depth == img->depth) {
- unsigned long m;
- XGCValues v;
-
- m = GCFunction | GCPlaneMask | GCClipMask;
- v.function = GXcopy;
- v.plane_mask = AllPlanes;
- v.clip_mask = None;
-
- gc = XCreateGC(dmxDstScreen->beDisplay,
- dmxDstScreen->scrnDefDrawables[j],
- m, &v);
- break;
- }
- }
-
- if (gc) {
- XPutImage(dmxDstScreen->beDisplay,
- pDstPriv->pixmap,
- gc, img, 0, 0, 0, 0,
- pDst->drawable.width, pDst->drawable.height);
- XFreeGC(dmxDstScreen->beDisplay, gc);
- FoundPixImage = True;
- } else {
- dmxLog(dmxWarning, "Could not create GC\n");
- }
-
- XDestroyImage(img);
- return;
- }
- }
- }
-}
-#endif
-
-/** Restore the pixmap image either from another screen or from an image
- * that was saved when the screen was previously detached. */
-static void dmxBERestorePixmap(PixmapPtr pPixmap)
-{
-#ifdef PANORAMIX
- int i;
-
- /* If Xinerama is not active, there's nothing we can do (see comment
- * in #else below for more info). */
- if (noPanoramiXExtension) {
- dmxLog(dmxWarning, "Cannot restore pixmap image\n");
- return;
- }
-
- FoundPixImage = False;
- for (i = currentMaxClients; --i >= 0; )
- if (clients[i])
- FindAllClientResources(clients[i], dmxBERestorePixmapImage,
- (pointer)pPixmap);
-
- /* No corresponding pixmap image was found on other screens, so we
- * need to copy it from the saved image when the screen was detached
- * (if available). */
- if (!FoundPixImage) {
- dmxPixPrivPtr pPixPriv = DMX_GET_PIXMAP_PRIV(pPixmap);
-
- if (pPixPriv->detachedImage) {
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- XlibGC gc = NULL;
-
- for (i = 0; i < dmxScreen->beNumPixmapFormats; i++) {
- if (dmxScreen->bePixmapFormats[i].depth ==
- pPixPriv->detachedImage->depth) {
- unsigned long m;
- XGCValues v;
-
- m = GCFunction | GCPlaneMask | GCClipMask;
- v.function = GXcopy;
- v.plane_mask = AllPlanes;
- v.clip_mask = None;
-
- gc = XCreateGC(dmxScreen->beDisplay,
- dmxScreen->scrnDefDrawables[i],
- m, &v);
- break;
- }
- }
-
- if (gc) {
- XPutImage(dmxScreen->beDisplay,
- pPixPriv->pixmap,
- gc,
- pPixPriv->detachedImage,
- 0, 0, 0, 0,
- pPixmap->drawable.width, pPixmap->drawable.height);
- XFreeGC(dmxScreen->beDisplay, gc);
- } else {
- dmxLog(dmxWarning, "Cannot restore pixmap image\n");
- }
-
- XDestroyImage(pPixPriv->detachedImage);
- pPixPriv->detachedImage = NULL;
- } else {
- dmxLog(dmxWarning, "Cannot restore pixmap image\n");
- }
- }
-#else
- /* If Xinerama is not enabled, then there is no other copy of the
- * pixmap image that we can restore. Saving all pixmap data is not
- * a feasible option since there is no mechanism for updating pixmap
- * data when a screen is detached, which means that the data that
- * was previously saved would most likely be out of date. */
- dmxLog(dmxWarning, "Cannot restore pixmap image\n");
- return;
-#endif
-}
-
-/** Create resources on the back-end server. This function is called
- * from #dmxAttachScreen() via the dix layer's FindAllResources
- * function. It walks all resources, compares them to the screen
- * number passed in as \a n and calls the appropriate DMX function to
- * create the associated resource on the back-end server. */
-static void dmxBECreateResources(pointer value, XID id, RESTYPE type,
- pointer n)
-{
- int scrnNum = (int)n;
- ScreenPtr pScreen = screenInfo.screens[scrnNum];
-
- if ((type & TypeMask) == (RT_WINDOW & TypeMask)) {
- /* Window resources are created below in dmxBECreateWindowTree */
- } else if ((type & TypeMask) == (RT_PIXMAP & TypeMask)) {
- PixmapPtr pPix = value;
- if (pPix->drawable.pScreen->myNum == scrnNum) {
- dmxBECreatePixmap(pPix);
- dmxBERestorePixmap(pPix);
- }
- } else if ((type & TypeMask) == (RT_GC & TypeMask)) {
- GCPtr pGC = value;
- if (pGC->pScreen->myNum == scrnNum) {
- /* Create the GC on the back-end server */
- dmxBECreateGC(pScreen, pGC);
- /* Create any pixmaps associated with this GC */
- if (!pGC->tileIsPixel) {
- dmxBECreatePixmap(pGC->tile.pixmap);
- dmxBERestorePixmap(pGC->tile.pixmap);
- }
- if (pGC->stipple != pScreen->PixmapPerDepth[0]) {
- dmxBECreatePixmap(pGC->stipple);
- dmxBERestorePixmap(pGC->stipple);
- }
- if (pGC->font != defaultFont) {
- (void)dmxBELoadFont(pScreen, pGC->font);
- }
- /* Update the GC on the back-end server */
- dmxChangeGC(pGC, -1L);
- }
- } else if ((type & TypeMask) == (RT_FONT & TypeMask)) {
- (void)dmxBELoadFont(pScreen, (FontPtr)value);
- } else if ((type & TypeMask) == (RT_CURSOR & TypeMask)) {
- dmxBECreateCursor(pScreen, (CursorPtr)value);
- } else if ((type & TypeMask) == (RT_COLORMAP & TypeMask)) {
- ColormapPtr pCmap = value;
- if (pCmap->pScreen->myNum == scrnNum)
- (void)dmxBECreateColormap((ColormapPtr)value);
-#if 0
-#ifdef RENDER
- /* TODO: Recreate Picture and GlyphSet resources */
- } else if ((type & TypeMask) == (PictureType & TypeMask)) {
- /* Picture resources are created when windows are created */
- } else if ((type & TypeMask) == (GlyphSetType & TypeMask)) {
- dmxBEFreeGlyphSet(pScreen, (GlyphSetPtr)value);
-#endif
-#endif
- } else {
- /* Other resource types??? */
- }
-}
-
-/** Create window hierachy on back-end server. The window tree is
- * created in a special order (bottom most subwindow first) so that the
- * #dmxCreateNonRootWindow() function does not need to recursively call
- * itself to create each window's parents. This is required so that we
- * have the opportunity to create each window's border and background
- * pixmaps (where appropriate) before the window is created. */
-static void dmxBECreateWindowTree(int idx)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
- WindowPtr pRoot = WindowTable[idx];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pRoot);
- WindowPtr pWin;
-
- /* Create the pixmaps associated with the root window */
- if (!pRoot->borderIsPixel) {
- dmxBECreatePixmap(pRoot->border.pixmap);
- dmxBERestorePixmap(pRoot->border.pixmap);
- }
- if (pRoot->backgroundState == BackgroundPixmap) {
- dmxBECreatePixmap(pRoot->background.pixmap);
- dmxBERestorePixmap(pRoot->background.pixmap);
- }
-
- /* Create root window first */
- dmxScreen->rootWin = pWinPriv->window = dmxCreateRootWindow(pRoot);
- XMapWindow(dmxScreen->beDisplay, dmxScreen->rootWin);
-
- pWin = pRoot->lastChild;
- while (pWin) {
- pWinPriv = DMX_GET_WINDOW_PRIV(pWin);
-
- /* Create the pixmaps regardless of whether or not the
- * window is created or not due to lazy window creation.
- */
- if (!pWin->borderIsPixel) {
- dmxBECreatePixmap(pWin->border.pixmap);
- dmxBERestorePixmap(pWin->border.pixmap);
- }
- if (pWin->backgroundState == BackgroundPixmap) {
- dmxBECreatePixmap(pWin->background.pixmap);
- dmxBERestorePixmap(pWin->background.pixmap);
- }
-
- /* Reset the window attributes */
- dmxGetDefaultWindowAttributes(pWin,
- &pWinPriv->cmap,
- &pWinPriv->visual);
-
- /* Create the window */
- if (pWinPriv->mapped && !pWinPriv->offscreen)
- dmxCreateAndRealizeWindow(pWin, TRUE);
-
- /* Next, create the bottom-most child */
- if (pWin->lastChild) {
- pWin = pWin->lastChild;
- continue;
- }
-
- /* If the window has no children, move on to the next higher window */
- while (!pWin->prevSib && (pWin != pRoot))
- pWin = pWin->parent;
-
- if (pWin->prevSib) {
- pWin = pWin->prevSib;
- continue;
- }
-
- /* When we reach the root window, we are finished */
- if (pWin == pRoot)
- break;
- }
-}
-
-/* Refresh screen by generating exposure events for all windows */
-static void dmxForceExposures(int idx)
-{
- ScreenPtr pScreen = screenInfo.screens[idx];
- WindowPtr pRoot = WindowTable[idx];
- Bool anyMarked = FALSE;
- WindowPtr pChild;
-
- for (pChild = pRoot->firstChild; pChild; pChild = pChild->nextSib)
- anyMarked |= pScreen->MarkOverlappedWindows(pChild, pChild,
- (WindowPtr *)NULL);
- if (anyMarked) {
- /* If any windows have been marked, set the root window's
- * clipList to be broken since it will be recalculated in
- * ValidateTree()
- */
- REGION_BREAK(pScreen, &pRoot->clipList);
- pScreen->ValidateTree(pRoot, NULL, VTBroken);
- pScreen->HandleExposures(pRoot);
- if (pScreen->PostValidateTree)
- pScreen->PostValidateTree(pRoot, NULL, VTBroken);
- }
-}
-
-/** Compare the new and old screens to see if they are compatible. */
-static Bool dmxCompareScreens(DMXScreenInfo *new, DMXScreenInfo *old)
-{
- int i;
-
- if (new->beWidth != old->beWidth) return FALSE;
- if (new->beHeight != old->beHeight) return FALSE;
- if (new->beDepth != old->beDepth) return FALSE;
- if (new->beBPP != old->beBPP) return FALSE;
-
- if (new->beNumDepths != old->beNumDepths) return FALSE;
- for (i = 0; i < old->beNumDepths; i++)
- if (new->beDepths[i] != old->beDepths[i]) return FALSE;
-
- if (new->beNumPixmapFormats != old->beNumPixmapFormats) return FALSE;
- for (i = 0; i < old->beNumPixmapFormats; i++) {
- if (new->bePixmapFormats[i].depth !=
- old->bePixmapFormats[i].depth) return FALSE;
- if (new->bePixmapFormats[i].bits_per_pixel !=
- old->bePixmapFormats[i].bits_per_pixel) return FALSE;
- if (new->bePixmapFormats[i].scanline_pad !=
- old->bePixmapFormats[i].scanline_pad) return FALSE;
- }
-
- if (new->beNumVisuals != old->beNumVisuals) return FALSE;
- for (i = 0; i < old->beNumVisuals; i++) {
- if (new->beVisuals[i].visualid !=
- old->beVisuals[i].visualid) return FALSE;
- if (new->beVisuals[i].screen !=
- old->beVisuals[i].screen) return FALSE;
- if (new->beVisuals[i].depth !=
- old->beVisuals[i].depth) return FALSE;
- if (new->beVisuals[i].class !=
- old->beVisuals[i].class) return FALSE;
- if (new->beVisuals[i].red_mask !=
- old->beVisuals[i].red_mask) return FALSE;
- if (new->beVisuals[i].green_mask !=
- old->beVisuals[i].green_mask) return FALSE;
- if (new->beVisuals[i].blue_mask !=
- old->beVisuals[i].blue_mask) return FALSE;
- if (new->beVisuals[i].colormap_size !=
- old->beVisuals[i].colormap_size) return FALSE;
- if (new->beVisuals[i].bits_per_rgb !=
- old->beVisuals[i].bits_per_rgb) return FALSE;
- }
-
- if (new->beDefVisualIndex != old->beDefVisualIndex) return FALSE;
-
- return TRUE;
-}
-
-/** Reattach previously detached back-end screen. */
-int dmxAttachScreen(int idx, DMXScreenAttributesPtr attr)
-{
- ScreenPtr pScreen = screenInfo.screens[idx];
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
- CARD32 scrnNum = idx;
- DMXScreenInfo oldDMXScreen;
- int i;
-
- /* Return failure if dynamic addition/removal of screens is disabled */
- if (!dmxAddRemoveScreens) {
- dmxLog(dmxWarning,
- "Attempting to add a screen, but the AddRemoveScreen\n");
- dmxLog(dmxWarning,
- "extension has not been enabled. To enable this extension\n");
- dmxLog(dmxWarning,
- "add the \"-addremovescreens\" option either to the command\n");
- dmxLog(dmxWarning,
- "line or in the configuration file.\n");
- return 1;
- }
-
- /* Cannot add a screen that does not exist */
- if (idx < 0 || idx >= dmxNumScreens) return 1;
-
- /* Cannot attach to a screen that is already opened */
- if (dmxScreen->beDisplay) {
- dmxLog(dmxWarning,
- "Attempting to add screen #%d but a screen already exists\n",
- idx);
- return 1;
- }
-
- dmxLogOutput(dmxScreen, "Attaching screen #%d\n", idx);
-
- /* Save old info */
- oldDMXScreen = *dmxScreen;
-
- /* Copy the name to the new screen */
- dmxScreen->name = strdup(attr->displayName);
-
- /* Open display and get all of the screen info */
- if (!dmxOpenDisplay(dmxScreen)) {
- dmxLog(dmxWarning,
- "dmxOpenDisplay: Unable to open display %s\n",
- dmxScreen->name);
-
- /* Restore the old screen */
- *dmxScreen = oldDMXScreen;
- return 1;
- }
-
- dmxSetErrorHandler(dmxScreen);
- dmxCheckForWM(dmxScreen);
- dmxGetScreenAttribs(dmxScreen);
-
- if (!dmxGetVisualInfo(dmxScreen)) {
- dmxLog(dmxWarning, "dmxGetVisualInfo: No matching visuals found\n");
- XFree(dmxScreen->beVisuals);
- XCloseDisplay(dmxScreen->beDisplay);
-
- /* Restore the old screen */
- *dmxScreen = oldDMXScreen;
- return 1;
- }
-
- dmxGetColormaps(dmxScreen);
- dmxGetPixmapFormats(dmxScreen);
-
- /* Verify that the screen to be added has the same info as the
- * previously added screen. */
- if (!dmxCompareScreens(dmxScreen, &oldDMXScreen)) {
- dmxLog(dmxWarning,
- "New screen data (%s) does not match previously\n",
- dmxScreen->name);
- dmxLog(dmxWarning,
- "attached screen data (%s)\n",
- oldDMXScreen.name);
- dmxLog(dmxWarning,
- "All data must match in order to attach to screen #%d\n",
- idx);
- XFree(dmxScreen->beVisuals);
- XFree(dmxScreen->beDepths);
- XFree(dmxScreen->bePixmapFormats);
- XCloseDisplay(dmxScreen->beDisplay);
-
- /* Restore the old screen */
- *dmxScreen = oldDMXScreen;
- return 1;
- }
-
- /* Initialize the BE screen resources */
- dmxBEScreenInit(idx, screenInfo.screens[idx]);
-
- /* TODO: Handle GLX visual initialization. GLXProxy needs to be
- * updated to handle dynamic addition/removal of screens. */
-
- /* Create default stipple */
- dmxBECreatePixmap(pScreen->PixmapPerDepth[0]);
- dmxBERestorePixmap(pScreen->PixmapPerDepth[0]);
-
- /* Create the scratch GCs */
- dmxBECreateScratchGCs(idx);
-
- /* Create the default font */
- (void)dmxBELoadFont(pScreen, defaultFont);
-
- /* Create all resources that don't depend on windows */
- for (i = currentMaxClients; --i >= 0; )
- if (clients[i])
- FindAllClientResources(clients[i], dmxBECreateResources,
- (pointer)idx);
-
- /* Create window hierarchy (top down) */
- dmxBECreateWindowTree(idx);
-
- /* Refresh screen by generating exposure events for all windows */
- dmxForceExposures(idx);
-
- dmxSync(&dmxScreens[idx], TRUE);
-
- /* We used these to compare the old and new screens. They are no
- * longer needed since we have a newly attached screen, so we can
- * now free the old screen's resources. */
- XFree(oldDMXScreen.beVisuals);
- XFree(oldDMXScreen.beDepths);
- XFree(oldDMXScreen.bePixmapFormats);
- /* TODO: should oldDMXScreen.name be freed?? */
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension)
- return dmxConfigureScreenWindows(1, &scrnNum, attr, NULL);
- else
-#endif
- return 0; /* Success */
-}
-
-/*
- * Resources that may have state on the BE server and need to be freed:
- *
- * RT_NONE
- * RT_WINDOW
- * RT_PIXMAP
- * RT_GC
- * RT_FONT
- * RT_CURSOR
- * RT_COLORMAP
- * RT_CMAPENTRY
- * RT_OTHERCLIENT
- * RT_PASSIVEGRAB
- * XRT_WINDOW
- * XRT_PIXMAP
- * XRT_GC
- * XRT_COLORMAP
- * XRT_PICTURE
- * PictureType
- * PictFormatType
- * GlyphSetType
- * ClientType
- * EventType
- * RT_INPUTCLIENT
- * XETrapType
- * RTCounter
- * RTAwait
- * RTAlarmClient
- * RT_XKBCLIENT
- * RTContext
- * TagResType
- * StalledResType
- * RT_APPGROUP
- * SecurityAuthorizationResType
- * RTEventClient
- * __glXContextRes
- * __glXClientRes
- * __glXPixmapRes
- * __glXWindowRes
- * __glXPbufferRes
- */
-
-#ifdef PANORAMIX
-/** Search the Xinerama XRT_PIXMAP resources for the pixmap that needs
- * to have its image saved. */
-static void dmxBEFindPixmapImage(pointer value, XID id, RESTYPE type,
- pointer p)
-{
- if ((type & TypeMask) == (XRT_PIXMAP & TypeMask)) {
- PixmapPtr pDst = (PixmapPtr)p;
- int idx = pDst->drawable.pScreen->myNum;
- PanoramiXRes *pXinPix = (PanoramiXRes *)value;
- PixmapPtr pPix;
- int i;
-
- pPix = (PixmapPtr)LookupIDByType(pXinPix->info[idx].id, RT_PIXMAP);
- if (pPix != pDst) return; /* Not a match.... Next! */
-
- for (i = 0; i < PanoramiXNumScreens; i++) {
- PixmapPtr pSrc;
- dmxPixPrivPtr pSrcPriv = NULL;
-
- if (i == idx) continue; /* Self replication is bad */
-
- pSrc =
- (PixmapPtr)LookupIDByType(pXinPix->info[i].id, RT_PIXMAP);
- pSrcPriv = DMX_GET_PIXMAP_PRIV(pSrc);
- if (pSrcPriv->pixmap) {
- FoundPixImage = True;
- return;
- }
- }
- }
-}
-#endif
-
-/** Save the pixmap image only when there is not another screen with
- * that pixmap from which the image can be read when the screen is
- * reattached. To do this, we first try to find a pixmap on another
- * screen corresponding to the one we are trying to save. If we find
- * one, then we do not need to save the image data since during
- * reattachment, the image data can be read from that other pixmap.
- * However, if we do not find one, then we need to save the image data.
- * The common case for these are for the default stipple and root
- * tile. */
-static void dmxBESavePixmap(PixmapPtr pPixmap)
-{
-#ifdef PANORAMIX
- int i;
-
- /* If Xinerama is not active, there's nothing we can do (see comment
- * in #else below for more info). */
- if (noPanoramiXExtension) return;
-
- FoundPixImage = False;
- for (i = currentMaxClients; --i >= 0; )
- if (clients[i])
- FindAllClientResources(clients[i], dmxBEFindPixmapImage,
- (pointer)pPixmap);
-
- /* Save the image only if there is no other screens that have a
- * pixmap that corresponds to the one we are trying to save. */
- if (!FoundPixImage) {
- dmxPixPrivPtr pPixPriv = DMX_GET_PIXMAP_PRIV(pPixmap);
-
- if (!pPixPriv->detachedImage) {
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
-
- pPixPriv->detachedImage = XGetImage(dmxScreen->beDisplay,
- pPixPriv->pixmap,
- 0, 0,
- pPixmap->drawable.width,
- pPixmap->drawable.height,
- -1,
- ZPixmap);
- if (!pPixPriv->detachedImage)
- dmxLog(dmxWarning, "Cannot save pixmap image\n");
- }
- }
-#else
- /* NOTE: The only time there is a pixmap on another screen that
- * corresponds to the one we are trying to save is when Xinerama is
- * active. Otherwise, the pixmap image data is only stored on a
- * single screen, which means that once it is detached, that data is
- * lost. We could save the data here, but then that would require
- * us to implement the ability for Xdmx to keep the pixmap up to
- * date while the screen is detached, which is beyond the scope of
- * the current project. */
- return;
-#endif
-}
-
-/** Destroy resources on the back-end server. This function is called
- * from #dmxDetachScreen() via the dix layer's FindAllResources
- * function. It walks all resources, compares them to the screen
- * number passed in as \a n and calls the appropriate DMX function to
- * free the associated resource on the back-end server. */
-static void dmxBEDestroyResources(pointer value, XID id, RESTYPE type,
- pointer n)
-{
- int scrnNum = (int)n;
- ScreenPtr pScreen = screenInfo.screens[scrnNum];
-
- if ((type & TypeMask) == (RT_WINDOW & TypeMask)) {
- /* Window resources are destroyed below in dmxBEDestroyWindowTree */
- } else if ((type & TypeMask) == (RT_PIXMAP & TypeMask)) {
- PixmapPtr pPix = value;
- if (pPix->drawable.pScreen->myNum == scrnNum) {
- dmxBESavePixmap(pPix);
- dmxBEFreePixmap(pPix);
- }
- } else if ((type & TypeMask) == (RT_GC & TypeMask)) {
- GCPtr pGC = value;
- if (pGC->pScreen->myNum == scrnNum)
- dmxBEFreeGC(pGC);
- } else if ((type & TypeMask) == (RT_FONT & TypeMask)) {
- dmxBEFreeFont(pScreen, (FontPtr)value);
- } else if ((type & TypeMask) == (RT_CURSOR & TypeMask)) {
- dmxBEFreeCursor(pScreen, (CursorPtr)value);
- } else if ((type & TypeMask) == (RT_COLORMAP & TypeMask)) {
- ColormapPtr pCmap = value;
- if (pCmap->pScreen->myNum == scrnNum)
- dmxBEFreeColormap((ColormapPtr)value);
-#ifdef RENDER
- } else if ((type & TypeMask) == (PictureType & TypeMask)) {
- PicturePtr pPict = value;
- if (pPict->pDrawable->pScreen->myNum == scrnNum)
- dmxBEFreePicture((PicturePtr)value);
- } else if ((type & TypeMask) == (GlyphSetType & TypeMask)) {
- dmxBEFreeGlyphSet(pScreen, (GlyphSetPtr)value);
-#endif
- } else {
- /* Other resource types??? */
- }
-}
-
-/** Destroy the scratch GCs that are created per depth. */
-static void dmxBEDestroyScratchGCs(int scrnNum)
-{
- ScreenPtr pScreen = screenInfo.screens[scrnNum];
- GCPtr *ppGC = pScreen->GCperDepth;
- int i;
-
- for (i = 0; i <= pScreen->numDepths; i++)
- dmxBEFreeGC(ppGC[i]);
-}
-
-/** Destroy window hierachy on back-end server. To ensure that all
- * XDestroyWindow() calls succeed, they must be performed in a bottom
- * up order so that windows are not destroyed before their children.
- * XDestroyWindow(), which is called from #dmxBEDestrowWindow(), will
- * destroy a window as well as all of it's children. */
-static void dmxBEDestroyWindowTree(int idx)
-{
- WindowPtr pWin = WindowTable[idx];
- WindowPtr pChild = pWin;
-
- while (1) {
- if (pChild->firstChild) {
- pChild = pChild->firstChild;
- continue;
- }
-
- /* Destroy the window */
- dmxBEDestroyWindow(pChild);
-
- /* Make sure we destroy the window's border and background
- * pixmaps if they exist */
- if (!pChild->borderIsPixel) {
- dmxBESavePixmap(pChild->border.pixmap);
- dmxBEFreePixmap(pChild->border.pixmap);
- }
- if (pChild->backgroundState == BackgroundPixmap) {
- dmxBESavePixmap(pChild->background.pixmap);
- dmxBEFreePixmap(pChild->background.pixmap);
- }
-
- while (!pChild->nextSib && (pChild != pWin)) {
- pChild = pChild->parent;
- dmxBEDestroyWindow(pChild);
- if (!pChild->borderIsPixel) {
- dmxBESavePixmap(pChild->border.pixmap);
- dmxBEFreePixmap(pChild->border.pixmap);
- }
- if (pChild->backgroundState == BackgroundPixmap) {
- dmxBESavePixmap(pChild->background.pixmap);
- dmxBEFreePixmap(pChild->background.pixmap);
- }
- }
-
- if (pChild == pWin)
- break;
-
- pChild = pChild->nextSib;
- }
-}
-
-/** Detach back-end screen. */
-int dmxDetachScreen(int idx)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
- int i;
-
- /* Return failure if dynamic addition/removal of screens is disabled */
- if (!dmxAddRemoveScreens) {
- dmxLog(dmxWarning,
- "Attempting to remove a screen, but the AddRemoveScreen\n");
- dmxLog(dmxWarning,
- "extension has not been enabled. To enable this extension\n");
- dmxLog(dmxWarning,
- "add the \"-addremovescreens\" option either to the command\n");
- dmxLog(dmxWarning,
- "line or in the configuration file.\n");
- return 1;
- }
-
- /* Cannot remove a screen that does not exist */
- if (idx < 0 || idx >= dmxNumScreens) return 1;
-
- /* Cannot detach from a screen that is not opened */
- if (!dmxScreen->beDisplay) {
- dmxLog(dmxWarning,
- "Attempting to remove screen #%d but it has not been opened\n",
- idx);
- return 1;
- }
-
- dmxLogOutput(dmxScreen, "Detaching screen #%d\n", idx);
-
- /* Detach input */
- dmxInputDetachAll(dmxScreen);
-
- /* Save all relevant state (TODO) */
-
- /* Free all non-window resources related to this screen */
- for (i = currentMaxClients; --i >= 0; )
- if (clients[i])
- FindAllClientResources(clients[i], dmxBEDestroyResources,
- (pointer)idx);
-
- /* Free scratch GCs */
- dmxBEDestroyScratchGCs(idx);
-
- /* Free window resources related to this screen */
- dmxBEDestroyWindowTree(idx);
-
- /* Free default stipple */
- dmxBESavePixmap(screenInfo.screens[idx]->PixmapPerDepth[0]);
- dmxBEFreePixmap(screenInfo.screens[idx]->PixmapPerDepth[0]);
-
- /* Free the remaining screen resources and close the screen */
- dmxBECloseScreen(screenInfo.screens[idx]);
-
- /* Adjust the cursor boundaries (paints detached console window) */
- dmxAdjustCursorBoundaries();
-
- return 0; /* Success */
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxextension.h b/nx-X11/programs/Xserver/hw/dmx/dmxextension.h
deleted file mode 100644
index 3ea0b83ec..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxextension.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2003-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:
- *
- * 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.
- */
-
-/*
- * Author:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * Interface for DMX extension support. These routines are called by
- * function in Xserver/Xext/dmx.c. \see dmxextension.c */
-
-#ifndef _DMXEXTENSION_H_
-#define _DMXEXTENSION_H_
-
-/** Screen attributes. Used by #ProcDMXGetScreenAttributes and
- * #ProcDMXChangeScreenAttributes. */
-typedef struct {
- const char *displayName;
- int logicalScreen;
-
- unsigned int screenWindowWidth; /* displayName's coordinate system */
- unsigned int screenWindowHeight; /* displayName's coordinate system */
- int screenWindowXoffset; /* displayName's coordinate system */
- int screenWindowYoffset; /* displayName's coordinate system */
-
- unsigned int rootWindowWidth; /* screenWindow's coordinate system */
- unsigned int rootWindowHeight; /* screenWindow's coordinate system */
- int rootWindowXoffset; /* screenWindow's coordinate system */
- int rootWindowYoffset; /* screenWindow's coordinate system */
-
- int rootWindowXorigin; /* global coordinate system */
- int rootWindowYorigin; /* global coordinate system */
-} DMXScreenAttributesRec, *DMXScreenAttributesPtr;
-
-/** Window attributes. Used by #ProcDMXGetWidowAttributes. */
-typedef struct {
- int screen;
- Window window;
- xRectangle pos;
- xRectangle vis;
-} DMXWindowAttributesRec, *DMXWindowAttributesPtr;
-
-/** Desktop attributes. Used by #ProcDMXGetDesktopAttributes and
- * #ProcDMXChangeDesktopAttributes. */
-typedef struct {
- int width;
- int height;
- int shiftX;
- int shiftY;
-} DMXDesktopAttributesRec, *DMXDesktopAttributesPtr;
-
-/** Input attributes. Used by #ProcDMXGetInputAttributes. */
-typedef struct {
- const char *name;
- int inputType;
- int physicalScreen;
- int physicalId;
- int isCore;
- int sendsCore;
- int detached;
-} DMXInputAttributesRec, *DMXInputAttributesPtr;
-
-
-extern unsigned long dmxGetNumScreens(void);
-extern void dmxForceWindowCreation(WindowPtr pWindow);
-extern void dmxFlushPendingSyncs(void);
-extern Bool dmxGetScreenAttributes(int physical,
- DMXScreenAttributesPtr attr);
-extern Bool dmxGetWindowAttributes(WindowPtr pWindow,
- DMXWindowAttributesPtr attr);
-extern void dmxGetDesktopAttributes(DMXDesktopAttributesPtr attr);
-extern int dmxGetInputCount(void);
-extern int dmxGetInputAttributes(int deviceId,
- DMXInputAttributesPtr attr);
-extern int dmxAddInput(DMXInputAttributesPtr attr, int *deviceId);
-extern int dmxRemoveInput(int deviceId);
-
-extern int dmxConfigureScreenWindows(int nscreens,
- CARD32 *screens,
- DMXScreenAttributesPtr attribs,
- int *errorScreen);
-
-extern int dmxConfigureDesktop(DMXDesktopAttributesPtr attribs);
-
-/* dmxUpdateScreenResources exposed for dmxCreateWindow in dmxwindow.c */
-extern void dmxUpdateScreenResources(ScreenPtr pScreen,
- int x, int y, int w, int h);
-
-extern int dmxAttachScreen(int idx, DMXScreenAttributesPtr attr);
-extern int dmxDetachScreen(int idx);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxfont.c b/nx-X11/programs/Xserver/hw/dmx/dmxfont.c
deleted file mode 100644
index 3dba61de4..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxfont.c
+++ /dev/null
@@ -1,559 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * This file provides support for fonts. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#define DMX_FONTPATH_DEBUG 0
-
-#include "dmx.h"
-#include "dmxsync.h"
-#include "dmxfont.h"
-#include "dmxlog.h"
-
-#include <X11/fonts/fontstruct.h>
-#include "dixfont.h"
-#include "dixstruct.h"
-
-static int (*dmxSaveProcVector[256])(ClientPtr);
-static int dmxFontLastError;
-
-static int dmxFontErrorHandler(Display *dpy, XErrorEvent *ev)
-{
- dmxFontLastError = ev->error_code;
-
- return 0;
-}
-
-static char **dmxGetFontPath(int *npaths)
-{
- char **fp;
- unsigned char *c, *paths;
- char *newfp;
- int len, l, i;
-
- paths = GetFontPath(npaths, &len);
-
- newfp = xalloc(*npaths + len);
- c = (unsigned char *)newfp;
- fp = xalloc(*npaths * sizeof(*fp));
-
- memmove(newfp, paths+1, *npaths + len - 1);
- l = *paths;
- for (i = 0; i < *npaths; i++) {
- fp[i] = (char *)c;
- c += l;
- l = *c;
- *c++ = '\0';
- }
-
-#if DMX_FONTPATH_DEBUG
- for (i = 0; i < *npaths; i++)
- dmxLog(dmxDebug, "FontPath[%d] = %s\n", i, fp[i]);
-#endif
-
- return fp;
-}
-
-static void dmxFreeFontPath(char **fp)
-{
- xfree(fp[0]);
- xfree(fp);
-}
-
-static Bool dmxCheckFontPathElement(DMXScreenInfo *dmxScreen, char *fp)
-{
- int (*oldErrorHandler)(Display *, XErrorEvent *);
-
- if (!dmxScreen->beDisplay)
- return TRUE;
-
- dmxFontLastError = 0;
- oldErrorHandler = XSetErrorHandler(dmxFontErrorHandler);
- XSetFontPath(dmxScreen->beDisplay, &fp, 1);
- dmxSync(dmxScreen, TRUE); /* Must complete before removing handler */
- XSetErrorHandler(oldErrorHandler);
-
- return (dmxFontLastError == 0);
-}
-
-static int dmxSetFontPath(DMXScreenInfo *dmxScreen)
-{
- int (*oldErrorHandler)(Display *, XErrorEvent *);
- char **fp;
- int result = Success;
- int npaths;
-
- if (!dmxScreen->beDisplay)
- return result;
-
- fp = dmxGetFontPath(&npaths);
- if (!fp) return BadAlloc;
-
- dmxFontLastError = 0;
- oldErrorHandler = XSetErrorHandler(dmxFontErrorHandler);
- XSetFontPath(dmxScreen->beDisplay, fp, npaths);
- dmxSync(dmxScreen, TRUE); /* Must complete before removing handler */
- XSetErrorHandler(oldErrorHandler);
-
- if (dmxFontLastError) {
- result = dmxFontLastError;
- /* We could set *error here to the offending path, but it is
- * ignored, so we don't bother figuring out which path is bad.
- * If we do add this support in the future, we'll need to add
- * error to the function's argument list.
- */
- }
-
- dmxFreeFontPath(fp);
-
- return result;
-}
-
-static int dmxCheckFontPath(DMXScreenInfo *dmxScreen, int *error)
-{
- char **oldFontPath;
- int nOldPaths;
- int result = Success;
-
- if (!dmxScreen->beDisplay)
- return result;
-
- /* Save old font path */
- oldFontPath = XGetFontPath(dmxScreen->beDisplay, &nOldPaths);
-
- result = dmxSetFontPath(dmxScreen);
-
- /* Restore old font path */
- XSetFontPath(dmxScreen->beDisplay, oldFontPath, nOldPaths);
- XFreeFontPath(oldFontPath);
- dmxSync(dmxScreen, FALSE);
-
- return result;
-}
-
-static int dmxProcSetFontPath(ClientPtr client)
-{
- unsigned char *ptr;
- unsigned long nbytes, total, n;
- long nfonts;
- int i, result;
- int error;
- unsigned char *oldFontPath, *tmpFontPath;
- int nOldPaths;
- int lenOldPaths;
- REQUEST(xSetFontPathReq);
-
- REQUEST_AT_LEAST_SIZE(xSetFontPathReq);
-
- nbytes = (client->req_len << 2) - sizeof(xSetFontPathReq);
- total = nbytes;
- ptr = (unsigned char *)&stuff[1];
- nfonts = stuff->nFonts;
-
- while (--nfonts >= 0) {
- if ((total == 0) || (total < (n = (*ptr + 1))))
- return BadLength;
- total -= n;
- ptr += n;
- }
- if (total >= 4)
- return BadLength;
-
- tmpFontPath = GetFontPath(&nOldPaths, &lenOldPaths);
- oldFontPath = xalloc(nOldPaths + lenOldPaths);
- memmove(oldFontPath, tmpFontPath, nOldPaths + lenOldPaths);
-
- result = SetFontPath(client, stuff->nFonts, (unsigned char *)&stuff[1],
- &error);
- if (!result) {
- for (i = 0; i < dmxNumScreens; i++)
- if ((result = dmxCheckFontPath(&dmxScreens[i], &error)))
- break;
-
- if (result) {
- int ignoreresult, ignoreerror;
-
- /* Restore old fontpath in the DMX server */
- ignoreresult = SetFontPath(client, nOldPaths, oldFontPath,
- &ignoreerror);
- } else {
- result = client->noClientException;
- client->errorValue = error;
- }
- }
-
- xfree(oldFontPath);
- return result;
-}
-
-/** Initialize font support. In addition to the screen function call
- * pointers, DMX also hooks in at the ProcVector[] level. Here the old
- * ProcVector function pointers are saved and the new ProcVector
- * function pointers are initialized. */
-void dmxInitFonts(void)
-{
- int i;
-
- for (i = 0; i < 256; i++)
- dmxSaveProcVector[i] = ProcVector[i];
-
- ProcVector[X_SetFontPath] = dmxProcSetFontPath;
-}
-
-/** Reset font support by restoring the original ProcVector function
- * pointers. */
-void dmxResetFonts(void)
-{
- int i;
-
- for (i = 0; i < 256; i++)
- ProcVector[i] = dmxSaveProcVector[i];
-}
-
-/** Load the font, \a pFont, on the back-end server associated with \a
- * pScreen. When a font is loaded, the font path on back-end server is
- * first initialized to that specified on the command line with the
- * -fontpath options, and then the font is loaded. */
-Bool dmxBELoadFont(ScreenPtr pScreen, FontPtr pFont)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxFontPrivPtr pFontPriv = FontGetPrivate(pFont, dmxFontPrivateIndex);
- char *name;
- char **oldFontPath = NULL;
- int nOldPaths;
- Atom name_atom, value_atom;
- int i;
-
- /* Make sure we have a font private struct to work with */
- if (!pFontPriv)
- return FALSE;
-
- /* Don't load a font over top of itself */
- if (pFontPriv->font[pScreen->myNum]) {
- return TRUE; /* Already loaded font */
- }
-
- /* Save old font path */
- oldFontPath = XGetFontPath(dmxScreen->beDisplay, &nOldPaths);
-
- /* Set the font path for the font about to be loaded on the back-end */
- if (dmxSetFontPath(dmxScreen)) {
- char **fp;
- int npaths;
- Bool *goodfps;
-
- /* This could fail only when first starting the X server and
- * loading the default font. If it fails here, then the default
- * font path is invalid, no default font path will be set, the
- * DMX server will fail to load the default font, and it will
- * exit with an error unless we remove the offending font paths
- * with the -ignorebadfontpaths command line option.
- */
-
- fp = dmxGetFontPath(&npaths);
- if (!fp) {
- dmxLog(dmxError,
- "No default font path set.\n");
- dmxLog(dmxError,
- "Please see the Xdmx man page for information on how to\n");
- dmxLog(dmxError,
- "initialize the DMX server's default font path.\n");
- XFreeFontPath(oldFontPath);
- return FALSE;
- }
-
- if (!dmxFontPath)
- dmxLog(dmxWarning, "No default font path is set.\n");
-
- goodfps = xalloc(npaths * sizeof(*goodfps));
-
- dmxLog(dmxError,
- "The DMX server failed to set the following font paths on "
- "screen #%d:\n", pScreen->myNum);
-
- for (i = 0; i < npaths; i++)
- if (!(goodfps[i] = dmxCheckFontPathElement(dmxScreen, fp[i])))
- dmxLog(dmxError, " %s\n", fp[i]);
-
- if (dmxIgnoreBadFontPaths) {
- char *newfp;
- int newnpaths = 0;
- int len = 0;
- int j = 0;
- int error;
-
- dmxLog(dmxError,
- "These font paths will not be used because the "
- "\"-ignorebadfontpaths\"\n");
- dmxLog(dmxError,
- "option is set.\n");
-
- for (i = 0; i < npaths; i++)
- if (goodfps[i]) {
- len += strlen(fp[i]) + 1;
- newnpaths++;
- }
-
- if (!newnpaths) {
- /* No valid font paths were found */
- dmxLog(dmxError,
- "After removing the font paths above, no valid font "
- "paths were\n");
- dmxLog(dmxError,
- "available. Please check that the font paths set on "
- "the command\n");
- dmxLog(dmxError,
- "line or in the configuration file via the "
- "\"-fontpath\" option\n");
- dmxLog(dmxError,
- "are valid on all back-end servers. See the Xdmx man "
- "page for\n");
- dmxLog(dmxError,
- "more information on font paths.\n");
- dmxFreeFontPath(fp);
- XFreeFontPath(oldFontPath);
- xfree(goodfps);
- return FALSE;
- }
-
- newfp = xalloc(len * sizeof(*newfp));
- for (i = 0; i < npaths; i++) {
- if (goodfps[i]) {
- int n = strlen(fp[i]);
- newfp[j++] = n;
- strncpy(&newfp[j], fp[i], n);
- j += n;
- }
- }
-
- if (SetFontPath(NULL, newnpaths, (unsigned char *)newfp, &error)) {
- /* Note that this should never happen since all of the
- * FPEs were previously valid. */
- dmxLog(dmxError, "Cannot reset the default font path.\n");
- }
- } else if (dmxFontPath) {
- dmxLog(dmxError,
- "Please remove these font paths from the command line "
- "or\n");
- dmxLog(dmxError,
- "configuration file, or set the \"-ignorebadfontpaths\" "
- "option to\n");
- dmxLog(dmxError,
- "ignore them. For more information on these options, see "
- "the\n");
- dmxLog(dmxError,
- "Xdmx man page.\n");
- } else {
- dmxLog(dmxError,
- "Please specify the font paths that are available on all "
- "back-end\n");
- dmxLog(dmxError,
- "servers with the \"-fontpath\" option, or use the "
- "\"-ignorebadfontpaths\"\n");
- dmxLog(dmxError,
- "to ignore bad defaults. For more information on "
- "these and other\n");
- dmxLog(dmxError,
- "font-path-related options, see the Xdmx man page.\n");
- }
-
- if (!dmxIgnoreBadFontPaths ||
- (dmxIgnoreBadFontPaths && dmxSetFontPath(dmxScreen))) {
- /* We still have errors so return with error */
- dmxFreeFontPath(fp);
- XFreeFontPath(oldFontPath);
- xfree(goodfps);
- return FALSE;
- }
- }
-
- /* Find requested font on back-end server */
- name_atom = MakeAtom("FONT", 4, TRUE);
- value_atom = 0L;
-
- for (i = 0; i < pFont->info.nprops; i++) {
- if ((Atom)pFont->info.props[i].name == name_atom) {
- value_atom = pFont->info.props[i].value;
- break;
- }
- }
- if (!value_atom) return FALSE;
-
- name = (char *)NameForAtom(value_atom);
- if (!name) return FALSE;
-
- pFontPriv->font[pScreen->myNum] =
- XLoadQueryFont(dmxScreen->beDisplay, name);
-
- /* Restore old font path */
- XSetFontPath(dmxScreen->beDisplay, oldFontPath, nOldPaths);
- XFreeFontPath(oldFontPath);
- dmxSync(dmxScreen, FALSE);
-
- if (!pFontPriv->font[pScreen->myNum]) return FALSE;
-
- return TRUE;
-}
-
-/** Realize the font, \a pFont, on the back-end server associated with
- * \a pScreen. */
-Bool dmxRealizeFont(ScreenPtr pScreen, FontPtr pFont)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxFontPrivPtr pFontPriv;
-
- if (!(pFontPriv = FontGetPrivate(pFont, dmxFontPrivateIndex))) {
- FontSetPrivate(pFont, dmxFontPrivateIndex, NULL);
- pFontPriv = xalloc(sizeof(dmxFontPrivRec));
- if (!pFontPriv) return FALSE;
- pFontPriv->font = NULL;
- MAXSCREENSALLOC(pFontPriv->font);
- if (!pFontPriv->font) {
- xfree(pFontPriv);
- return FALSE;
- }
- pFontPriv->refcnt = 0;
- }
-
- FontSetPrivate(pFont, dmxFontPrivateIndex, (pointer)pFontPriv);
-
- if (dmxScreen->beDisplay) {
- if (!dmxBELoadFont(pScreen, pFont))
- return FALSE;
-
- pFontPriv->refcnt++;
- } else {
- pFontPriv->font[pScreen->myNum] = NULL;
- }
-
- return TRUE;
-}
-
-/** Free \a pFont on the back-end associated with \a pScreen. */
-Bool dmxBEFreeFont(ScreenPtr pScreen, FontPtr pFont)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxFontPrivPtr pFontPriv = FontGetPrivate(pFont, dmxFontPrivateIndex);
-
- if (pFontPriv && pFontPriv->font[pScreen->myNum]) {
- XFreeFont(dmxScreen->beDisplay, pFontPriv->font[pScreen->myNum]);
- pFontPriv->font[pScreen->myNum] = NULL;
- return TRUE;
- }
-
- return FALSE;
-}
-
-/** Unrealize the font, \a pFont, on the back-end server associated with
- * \a pScreen. */
-Bool dmxUnrealizeFont(ScreenPtr pScreen, FontPtr pFont)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxFontPrivPtr pFontPriv;
-
- if ((pFontPriv = FontGetPrivate(pFont, dmxFontPrivateIndex))) {
- /* In case the font failed to load properly */
- if (!pFontPriv->refcnt) {
- MAXSCREENSFREE(pFontPriv->font);
- xfree(pFontPriv);
- FontSetPrivate(pFont, dmxFontPrivateIndex, NULL);
- } else if (pFontPriv->font[pScreen->myNum]) {
- if (dmxScreen->beDisplay)
- dmxBEFreeFont(pScreen, pFont);
-
- /* The code below is non-obvious, so here's an explanation...
- *
- * When creating the default GC, the server opens up the
- * default font once for each screen, which in turn calls
- * the RealizeFont function pointer once for each screen.
- * During this process both dix's font refcnt and DMX's font
- * refcnt are incremented once for each screen.
- *
- * Later, when shutting down the X server, dix shuts down
- * each screen in reverse order. During this shutdown
- * procedure, each screen's default GC is freed and then
- * that screen is closed by calling the CloseScreen function
- * pointer. screenInfo.numScreens is then decremented after
- * closing each screen. This procedure means that the dix's
- * font refcnt for the font used by the default GC's is
- * decremented once for each screen # greater than 0.
- * However, since dix's refcnt for the default font is not
- * yet 0 for each screen greater than 0, no call to the
- * UnrealizeFont function pointer is made for those screens.
- * Then, when screen 0 is being closed, dix's font refcnt
- * for the default GC's font is finally 0 and the font is
- * unrealized. However, since screenInfo.numScreens has
- * been decremented already down to 1, only one call to
- * UnrealizeFont is made (for screen 0). Thus, even though
- * RealizeFont was called once for each screen,
- * UnrealizeFont is only called for screen 0.
- *
- * This is a bug in dix.
- *
- * To avoid the memory leak of pFontPriv for each server
- * generation, we can also free pFontPriv if the refcnt is
- * not yet 0 but the # of screens is 1 -- i.e., the case
- * described in the dix bug above. This is only a temporary
- * workaround until the bug in dix is solved.
- *
- * The other problem is that the font structure allocated by
- * XLoadQueryFont() above is not freed for screens > 0.
- * This problem cannot be worked around here since the back-
- * end displays for screens > 0 have already been closed by
- * the time this code is called from dix.
- *
- * When the bug in dix described above is fixed, then we can
- * remove the "|| screenInfo.numScreens == 1" code below and
- * the memory leaks will be eliminated.
- */
- if (--pFontPriv->refcnt == 0
-#if 1
- /* Remove this code when the dix bug is fixed */
- || screenInfo.numScreens == 1
-#endif
- ) {
- MAXSCREENSFREE(pFontPriv->font);
- xfree(pFontPriv);
- FontSetPrivate(pFont, dmxFontPrivateIndex, NULL);
- }
- }
- }
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxfont.h b/nx-X11/programs/Xserver/hw/dmx/dmxfont.h
deleted file mode 100644
index f69aac196..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxfont.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * Interface for font-related functions. \see dmxfont.c */
-
-#ifndef DMXFONT_H
-#define DMXFONT_H
-
-#include <X11/fonts/fontstruct.h>
-
-/** Font private area. */
-typedef struct _dmxFontPriv {
- int refcnt;
- XFontStruct **font;
-} dmxFontPrivRec, *dmxFontPrivPtr;
-
-extern void dmxInitFonts(void);
-extern void dmxResetFonts(void);
-
-extern Bool dmxRealizeFont(ScreenPtr pScreen, FontPtr pFont);
-extern Bool dmxUnrealizeFont(ScreenPtr pScreen, FontPtr pFont);
-
-extern Bool dmxBELoadFont(ScreenPtr pScreen, FontPtr pFont);
-extern Bool dmxBEFreeFont(ScreenPtr pScreen, FontPtr pFont);
-
-extern int dmxFontPrivateIndex;
-
-#endif /* DMXFONT_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxgc.c b/nx-X11/programs/Xserver/hw/dmx/dmxgc.c
deleted file mode 100644
index d17b05164..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxgc.c
+++ /dev/null
@@ -1,424 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * This file provides support for GCs. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxsync.h"
-#include "dmxgc.h"
-#include "dmxgcops.h"
-#include "dmxpixmap.h"
-#include "dmxfont.h"
-
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "migc.h"
-
-static GCFuncs dmxGCFuncs = {
- dmxValidateGC,
- dmxChangeGC,
- dmxCopyGC,
- dmxDestroyGC,
- dmxChangeClip,
- dmxDestroyClip,
- dmxCopyClip,
-};
-
-static GCOps dmxGCOps = {
- dmxFillSpans,
- dmxSetSpans,
- dmxPutImage,
- dmxCopyArea,
- dmxCopyPlane,
- dmxPolyPoint,
- dmxPolylines,
- dmxPolySegment,
- dmxPolyRectangle,
- dmxPolyArc,
- dmxFillPolygon,
- dmxPolyFillRect,
- dmxPolyFillArc,
- dmxPolyText8,
- dmxPolyText16,
- dmxImageText8,
- dmxImageText16,
- dmxImageGlyphBlt,
- dmxPolyGlyphBlt,
- dmxPushPixels
-};
-
-/** Initialize the GC on \a pScreen, which currently involves allocating
- * the GC private associated with this screen. */
-Bool dmxInitGC(ScreenPtr pScreen)
-{
- if (!AllocateGCPrivate(pScreen, dmxGCPrivateIndex, sizeof(dmxGCPrivRec)))
- return FALSE;
-
- return TRUE;
-}
-
-/** Create the GC on the back-end server. */
-void dmxBECreateGC(ScreenPtr pScreen, GCPtr pGC)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- int i;
-
- for (i = 0; i < dmxScreen->beNumPixmapFormats; i++) {
- if (pGC->depth == dmxScreen->bePixmapFormats[i].depth) {
- unsigned long mask;
- XGCValues gcvals;
-
- mask = GCGraphicsExposures;
- gcvals.graphics_exposures = FALSE;
-
- /* Create GC in the back-end servers */
- pGCPriv->gc = XCreateGC(dmxScreen->beDisplay,
- dmxScreen->scrnDefDrawables[i],
- mask, &gcvals);
- break;
- }
- }
-}
-
-/** Create a graphics context on the back-end server associated /a pGC's
- * screen. */
-Bool dmxCreateGC(GCPtr pGC)
-{
- ScreenPtr pScreen = pGC->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Bool ret;
-
- DMX_UNWRAP(CreateGC, dmxScreen, pScreen);
- if ((ret = pScreen->CreateGC(pGC))) {
- /* Save the old funcs */
- pGCPriv->funcs = pGC->funcs;
- pGCPriv->ops = NULL;
-
- pGC->funcs = &dmxGCFuncs;
-
- if (dmxScreen->beDisplay) {
- dmxBECreateGC(pScreen, pGC);
- } else {
- pGCPriv->gc = NULL;
- }
-
- /* Check for "magic special case"
- * 1. see CreateGC in dix/gc.c for more info
- * 2. see dmxChangeGC for more info
- */
- pGCPriv->msc = (!pGC->tileIsPixel && !pGC->tile.pixmap);
- }
- DMX_WRAP(CreateGC, dmxCreateGC, dmxScreen, pScreen);
-
- return ret;
-}
-
-/** Validate a graphics context, \a pGC, locally in the DMX server and
- * recompute the composite clip, if necessary. */
-void dmxValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable)
-{
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
-
- DMX_GC_FUNC_PROLOGUE(pGC);
-#if 0
- pGC->funcs->ValidateGC(pGC, changes, pDrawable);
-#endif
-
- if (pDrawable->type == DRAWABLE_WINDOW ||
- pDrawable->type == DRAWABLE_PIXMAP) {
- /* Save the old ops, since we're about to change the ops in the
- * epilogue.
- */
- pGCPriv->ops = pGC->ops;
- } else {
- pGCPriv->ops = NULL;
- }
-
- /* If the client clip is different or moved OR the subwindowMode has
- * changed OR the window's clip has changed since the last
- * validation, then we need to recompute the composite clip.
- */
- if ((changes & (GCClipXOrigin |
- GCClipYOrigin |
- GCClipMask |
- GCSubwindowMode)) ||
- (pDrawable->serialNumber !=
- (pGC->serialNumber & DRAWABLE_SERIAL_BITS))) {
- miComputeCompositeClip(pGC, pDrawable);
- }
-
- DMX_GC_FUNC_EPILOGUE(pGC);
-}
-
-/** Set the values in the graphics context on the back-end server
- * associated with \a pGC's screen. */
-void dmxChangeGC(GCPtr pGC, unsigned long mask)
-{
- ScreenPtr pScreen = pGC->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- XGCValues v;
-
- DMX_GC_FUNC_PROLOGUE(pGC);
-#if 0
- pGC->funcs->ChangeGC(pGC, mask);
-#endif
-
- /* Handle "magic special case" from CreateGC */
- if (pGCPriv->msc) {
- /* The "magic special case" is used to handle the case where a
- * foreground pixel is set when the GC is created so that a
- * "pseudo default-tile" can be created and used in case the
- * fillstyle was set to FillTiled. This specific case is tested
- * in xtest (XCreateGC test #3). What has happened in dix by
- * the time it reaches here is (1) the pGC->tile.pixel has been
- * set to pGC->fgPixel and pGC->tileIsPixel is set, (2) if a
- * tile has also been set, then pGC->tileIsPixel is unset and
- * pGC->tile.pixmap is initialized; else, the default tile is
- * created and pGC->tileIsPixel is unset and pGC->tile.pixmap is
- * initialized to the "pseudo default-tile". In either case,
- * pGC->tile.pixmap is set; however, in the "magic special case"
- * the mask is not updated to allow us to detect that we should
- * initialize the GCTile in the back-end server. Thus, we catch
- * this case in dmxCreateGC and add GCTile to the mask here.
- * Are there any cases that I've missed?
- */
-
- /* Make sure that the tile.pixmap is set, just in case the user
- * set GCTile in the mask but forgot to set vals.pixmap
- */
- if (pGC->tile.pixmap) mask |= GCTile;
-
- /* This only happens once when the GC is created */
- pGCPriv->msc = FALSE;
- }
-
- /* Update back-end server's gc */
- if (mask & GCFunction) v.function = pGC->alu;
- if (mask & GCPlaneMask) v.plane_mask = pGC->planemask;
- if (mask & GCForeground) v.foreground = pGC->fgPixel;
- if (mask & GCBackground) v.background = pGC->bgPixel;
- if (mask & GCLineWidth) v.line_width = pGC->lineWidth;
- if (mask & GCLineStyle) v.line_style = pGC->lineStyle;
- if (mask & GCCapStyle) v.cap_style = pGC->capStyle;
- if (mask & GCJoinStyle) v.join_style = pGC->joinStyle;
- if (mask & GCFillStyle) v.fill_style = pGC->fillStyle;
- if (mask & GCFillRule) v.fill_rule = pGC->fillRule;
- if (mask & GCTile) {
- if (pGC->tileIsPixel) {
- mask &= ~GCTile;
- } else {
- dmxPixPrivPtr pPixPriv = DMX_GET_PIXMAP_PRIV(pGC->tile.pixmap);
- v.tile = (Drawable)pPixPriv->pixmap;
- }
- }
- if (mask & GCStipple) {
- dmxPixPrivPtr pPixPriv = DMX_GET_PIXMAP_PRIV(pGC->stipple);
- v.stipple = (Drawable)pPixPriv->pixmap;
- }
- if (mask & GCTileStipXOrigin) v.ts_x_origin = pGC->patOrg.x;
- if (mask & GCTileStipYOrigin) v.ts_y_origin = pGC->patOrg.y;
- if (mask & GCFont) {
- if (dmxScreen->beDisplay) {
- dmxFontPrivPtr pFontPriv;
- pFontPriv = FontGetPrivate(pGC->font, dmxFontPrivateIndex);
- v.font = pFontPriv->font[pScreen->myNum]->fid;
- } else {
- mask &= ~GCFont;
- }
- }
- if (mask & GCSubwindowMode) v.subwindow_mode = pGC->subWindowMode;
-
- /* Graphics exposures are not needed on the back-ends since they can
- be generated on the front-end thereby saving bandwidth. */
- if (mask & GCGraphicsExposures) mask &= ~GCGraphicsExposures;
-
- if (mask & GCClipXOrigin) v.clip_x_origin = pGC->clipOrg.x;
- if (mask & GCClipYOrigin) v.clip_y_origin = pGC->clipOrg.y;
- if (mask & GCClipMask) mask &= ~GCClipMask; /* See ChangeClip */
- if (mask & GCDashOffset) v.dash_offset = pGC->dashOffset;
- if (mask & GCDashList) {
- mask &= ~GCDashList;
- if (dmxScreen->beDisplay)
- XSetDashes(dmxScreen->beDisplay, pGCPriv->gc,
- pGC->dashOffset, (char *)pGC->dash,
- pGC->numInDashList);
- }
- if (mask & GCArcMode) v.arc_mode = pGC->arcMode;
-
- if (mask && dmxScreen->beDisplay) {
- XChangeGC(dmxScreen->beDisplay, pGCPriv->gc, mask, &v);
- dmxSync(dmxScreen, FALSE);
- }
-
- DMX_GC_FUNC_EPILOGUE(pGC);
-}
-
-/** Copy \a pGCSrc to \a pGCDst on the back-end server associated with
- * \a pGCSrc's screen. */
-void dmxCopyGC(GCPtr pGCSrc, unsigned long changes, GCPtr pGCDst)
-{
- ScreenPtr pScreen = pGCSrc->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxGCPrivPtr pGCSrcPriv = DMX_GET_GC_PRIV(pGCSrc);
- dmxGCPrivPtr pGCDstPriv = DMX_GET_GC_PRIV(pGCDst);
-
- DMX_GC_FUNC_PROLOGUE(pGCDst);
- pGCDst->funcs->CopyGC(pGCSrc, changes, pGCDst);
-
- /* Copy the GC on the back-end server */
- if (dmxScreen->beDisplay)
- XCopyGC(dmxScreen->beDisplay, pGCSrcPriv->gc, changes, pGCDstPriv->gc);
-
- DMX_GC_FUNC_EPILOGUE(pGCDst);
-}
-
-/** Free the \a pGC on the back-end server. */
-Bool dmxBEFreeGC(GCPtr pGC)
-{
- ScreenPtr pScreen = pGC->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
-
- if (pGCPriv->gc) {
- XFreeGC(dmxScreen->beDisplay, pGCPriv->gc);
- pGCPriv->gc = NULL;
- return TRUE;
- }
-
- return FALSE;
-}
-
-/** Destroy the graphics context, \a pGC and free the corresponding GC
- * on the back-end server. */
-void dmxDestroyGC(GCPtr pGC)
-{
- ScreenPtr pScreen = pGC->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
-
- DMX_GC_FUNC_PROLOGUE(pGC);
-
- /* Free the GC on the back-end server */
- if (dmxScreen->beDisplay)
- dmxBEFreeGC(pGC);
-
- pGC->funcs->DestroyGC(pGC);
- DMX_GC_FUNC_EPILOGUE(pGC);
-}
-
-/** Change the clip rects for a GC. */
-void dmxChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects)
-{
- ScreenPtr pScreen = pGC->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- XRectangle *pRects;
- BoxPtr pBox;
- int i, nRects;
-
- DMX_GC_FUNC_PROLOGUE(pGC);
- pGC->funcs->ChangeClip(pGC, type, pvalue, nrects);
-
- /* Set the client clip on the back-end server */
- switch (pGC->clientClipType) {
- case CT_NONE:
- if (dmxScreen->beDisplay)
- XSetClipMask(dmxScreen->beDisplay, pGCPriv->gc, None);
- break;
-
- case CT_REGION:
- if (dmxScreen->beDisplay) {
- nRects = REGION_NUM_RECTS((RegionPtr)pGC->clientClip);
- pRects = xalloc(nRects * sizeof(*pRects));
- pBox = REGION_RECTS((RegionPtr)pGC->clientClip);
-
- for (i = 0; i < nRects; i++) {
- pRects[i].x = pBox[i].x1;
- pRects[i].y = pBox[i].y1;
- pRects[i].width = pBox[i].x2 - pBox[i].x1;
- pRects[i].height = pBox[i].y2 - pBox[i].y1;
- }
-
- XSetClipRectangles(dmxScreen->beDisplay, pGCPriv->gc,
- pGC->clipOrg.x, pGC->clipOrg.y,
- pRects, nRects, Unsorted);
-
- xfree(pRects);
- }
- break;
-
- case CT_PIXMAP:
- case CT_UNSORTED:
- case CT_YSORTED:
- case CT_YXSORTED:
- case CT_YXBANDED:
- /* These clip types are condensed down to either NONE or REGION
- in the mi code */
- break;
- }
-
- DMX_GC_FUNC_EPILOGUE(pGC);
-}
-
-/** Destroy a GC's clip rects. */
-void dmxDestroyClip(GCPtr pGC)
-{
- ScreenPtr pScreen = pGC->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
-
- DMX_GC_FUNC_PROLOGUE(pGC);
- pGC->funcs->DestroyClip(pGC);
-
- /* Set the client clip on the back-end server to None */
- if (dmxScreen->beDisplay)
- XSetClipMask(dmxScreen->beDisplay, pGCPriv->gc, None);
-
- DMX_GC_FUNC_EPILOGUE(pGC);
-}
-
-/** Copy a GC's clip rects. */
-void dmxCopyClip(GCPtr pGCDst, GCPtr pGCSrc)
-{
- DMX_GC_FUNC_PROLOGUE(pGCDst);
- pGCDst->funcs->CopyClip(pGCDst, pGCSrc);
- DMX_GC_FUNC_EPILOGUE(pGCDst);
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxgc.h b/nx-X11/programs/Xserver/hw/dmx/dmxgc.h
deleted file mode 100644
index 5f54d7dc9..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxgc.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * Interface for GC support. \see dmxgc.c */
-
-#ifndef DMXGC_H
-#define DMXGC_H
-
-#include "gcstruct.h"
-
-/** GC private area. */
-typedef struct _dmxGCPriv {
- GCOps *ops;
- GCFuncs *funcs;
- XlibGC gc;
- Bool msc;
-} dmxGCPrivRec, *dmxGCPrivPtr;
-
-
-extern Bool dmxInitGC(ScreenPtr pScreen);
-
-extern Bool dmxCreateGC(GCPtr pGC);
-extern void dmxValidateGC(GCPtr pGC, unsigned long changes,
- DrawablePtr pDrawable);
-extern void dmxChangeGC(GCPtr pGC, unsigned long mask);
-extern void dmxCopyGC(GCPtr pGCSrc, unsigned long changes, GCPtr pGCDst);
-extern void dmxDestroyGC(GCPtr pGC);
-extern void dmxChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects);
-extern void dmxDestroyClip(GCPtr pGC);
-extern void dmxCopyClip(GCPtr pGCDst, GCPtr pGCSrc);
-
-extern void dmxBECreateGC(ScreenPtr pScreen, GCPtr pGC);
-extern Bool dmxBEFreeGC(GCPtr pGC);
-
-/** Private index. \see dmxgc.c \see dmxscrinit.c */
-extern int dmxGCPrivateIndex;
-
-/** Get private. */
-#define DMX_GET_GC_PRIV(_pGC) \
- (dmxGCPrivPtr)(_pGC)->devPrivates[dmxGCPrivateIndex].ptr
-
-#define DMX_GC_FUNC_PROLOGUE(_pGC) \
-do { \
- dmxGCPrivPtr _pGCPriv = DMX_GET_GC_PRIV(_pGC); \
- DMX_UNWRAP(funcs, _pGCPriv, (_pGC)); \
- if (_pGCPriv->ops) \
- DMX_UNWRAP(ops, _pGCPriv, (_pGC)); \
-} while (0)
-
-#define DMX_GC_FUNC_EPILOGUE(_pGC) \
-do { \
- dmxGCPrivPtr _pGCPriv = DMX_GET_GC_PRIV(_pGC); \
- DMX_WRAP(funcs, &dmxGCFuncs, _pGCPriv, (_pGC)); \
- if (_pGCPriv->ops) \
- DMX_WRAP(ops, &dmxGCOps, _pGCPriv, (_pGC)); \
-} while (0)
-
-#endif /* DMXGC_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxgcops.c b/nx-X11/programs/Xserver/hw/dmx/dmxgcops.c
deleted file mode 100644
index 75d9dfb73..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxgcops.c
+++ /dev/null
@@ -1,602 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * This file provides support for GC operations. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxsync.h"
-#include "dmxgc.h"
-#include "dmxgcops.h"
-#include "dmxwindow.h"
-#include "dmxpixmap.h"
-
-#include "mi.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "dixfontstr.h"
-
-#include "panoramiXsrv.h"
-
-#define DMX_GCOPS_SET_DRAWABLE(_pDraw, _draw) \
-do { \
- if ((_pDraw)->type == DRAWABLE_WINDOW) { \
- dmxWinPrivPtr pWinPriv = \
- DMX_GET_WINDOW_PRIV((WindowPtr)(_pDraw)); \
- (_draw) = (Drawable)pWinPriv->window; \
- } else { \
- dmxPixPrivPtr pPixPriv = \
- DMX_GET_PIXMAP_PRIV((PixmapPtr)(_pDraw)); \
- (_draw) = (Drawable)pPixPriv->pixmap; \
- } \
-} while (0)
-
-#define DMX_GCOPS_OFFSCREEN(_pDraw) \
- (!dmxScreens[(_pDraw)->pScreen->myNum].beDisplay || \
- (dmxOffScreenOpt && \
- (_pDraw)->type == DRAWABLE_WINDOW && \
- (DMX_GET_WINDOW_PRIV((WindowPtr)(_pDraw))->offscreen || \
- !DMX_GET_WINDOW_PRIV((WindowPtr)(_pDraw))->window)))
-
-/** Fill spans -- this function should never be called. */
-void dmxFillSpans(DrawablePtr pDrawable, GCPtr pGC,
- int nInit, DDXPointPtr pptInit, int *pwidthInit,
- int fSorted)
-{
- /* Error -- this should never happen! */
-}
-
-/** Set spans -- this function should never be called. */
-void dmxSetSpans(DrawablePtr pDrawable, GCPtr pGC,
- char *psrc, DDXPointPtr ppt, int *pwidth, int nspans,
- int fSorted)
-{
- /* Error -- this should never happen! */
-}
-
-/** Transfer \a pBits image to back-end server associated with \a
- * pDrawable's screen. If primitive subdivision optimization is
- * enabled, then only transfer the sections of \a pBits that are
- * visible (i.e., not-clipped) to the back-end server. */
-void dmxPutImage(DrawablePtr pDrawable, GCPtr pGC,
- int depth, int x, int y, int w, int h,
- int leftPad, int format, char *pBits)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- XImage *img;
-
- if (DMX_GCOPS_OFFSCREEN(pDrawable)) return;
-
- img = XCreateImage(dmxScreen->beDisplay,
- dmxScreen->beVisuals[dmxScreen->beDefVisualIndex].visual,
- depth, format, leftPad, pBits, w, h,
- BitmapPad(dmxScreen->beDisplay),
- (format == ZPixmap) ?
- PixmapBytePad(w, depth) : BitmapBytePad(w+leftPad));
-
- if (img) {
- Drawable draw;
-
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- if (dmxSubdividePrimitives && pGC->pCompositeClip) {
- RegionPtr pSubImages;
- RegionPtr pClip;
- BoxRec box;
- BoxPtr pBox;
- int nBox;
-
- box.x1 = x;
- box.y1 = y;
- box.x2 = x + w;
- box.y2 = y + h;
- pSubImages = REGION_CREATE(pGC->pScreen, &box, 1);
-
- pClip = REGION_CREATE(pGC->pScreen, NullBox, 1);
- REGION_COPY(pGC->pScreen, pClip, pGC->pCompositeClip);
- REGION_TRANSLATE(pGC->pScreen, pClip,
- -pDrawable->x, -pDrawable->y);
- REGION_INTERSECT(pGC->pScreen, pSubImages, pSubImages, pClip);
-
- nBox = REGION_NUM_RECTS(pSubImages);
- pBox = REGION_RECTS(pSubImages);
-
- while (nBox--) {
- XPutImage(dmxScreen->beDisplay, draw, pGCPriv->gc, img,
- pBox->x1 - box.x1,
- pBox->y1 - box.y1,
- pBox->x1,
- pBox->y1,
- pBox->x2 - pBox->x1,
- pBox->y2 - pBox->y1);
- pBox++;
- }
- REGION_DESTROY(pGC->pScreen, pClip);
- REGION_DESTROY(pGC->pScreen, pSubImages);
- } else {
- XPutImage(dmxScreen->beDisplay, draw, pGCPriv->gc,
- img, 0, 0, x, y, w, h);
- }
- XFree(img); /* Use XFree instead of XDestroyImage
- * because pBits is passed in from the
- * caller. */
-
- dmxSync(dmxScreen, FALSE);
- } else {
- /* Error -- this should not happen! */
- }
-}
-
-/** Copy area from \a pSrc drawable to \a pDst drawable on the back-end
- * server associated with \a pSrc drawable's screen. If the offscreen
- * optimization is enabled, only copy when both \a pSrc and \a pDst are
- * at least partially visible. */
-RegionPtr dmxCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
- int srcx, int srcy, int w, int h, int dstx, int dsty)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pSrc->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Drawable srcDraw, dstDraw;
-
- if (DMX_GCOPS_OFFSCREEN(pSrc) || DMX_GCOPS_OFFSCREEN(pDst))
- return miHandleExposures(pSrc, pDst, pGC, srcx, srcy, w, h,
- dstx, dsty, 0L);
-
- DMX_GCOPS_SET_DRAWABLE(pSrc, srcDraw);
- DMX_GCOPS_SET_DRAWABLE(pDst, dstDraw);
-
- XCopyArea(dmxScreen->beDisplay, srcDraw, dstDraw, pGCPriv->gc,
- srcx, srcy, w, h, dstx, dsty);
- dmxSync(dmxScreen, FALSE);
-
- return miHandleExposures(pSrc, pDst, pGC, srcx, srcy, w, h,
- dstx, dsty, 0L);
-}
-
-/** Copy plane number \a bitPlane from \a pSrc drawable to \a pDst
- * drawable on the back-end server associated with \a pSrc drawable's
- * screen. If the offscreen optimization is enabled, only copy when
- * both \a pSrc and \a pDst are at least partially visible. */
-RegionPtr dmxCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
- int srcx, int srcy, int width, int height,
- int dstx, int dsty, unsigned long bitPlane)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pSrc->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Drawable srcDraw, dstDraw;
-
- if (DMX_GCOPS_OFFSCREEN(pSrc) || DMX_GCOPS_OFFSCREEN(pDst))
- return miHandleExposures(pSrc, pDst, pGC, srcx, srcy, width, height,
- dstx, dsty, bitPlane);
-
- DMX_GCOPS_SET_DRAWABLE(pSrc, srcDraw);
- DMX_GCOPS_SET_DRAWABLE(pDst, dstDraw);
-
- XCopyPlane(dmxScreen->beDisplay, srcDraw, dstDraw, pGCPriv->gc,
- srcx, srcy, width, height, dstx, dsty, bitPlane);
- dmxSync(dmxScreen, FALSE);
-
- return miHandleExposures(pSrc, pDst, pGC, srcx, srcy, width, height,
- dstx, dsty, bitPlane);
-}
-
-/** Render list of points, \a pptInit in \a pDrawable on the back-end
- * server associated with \a pDrawable's screen. If the offscreen
- * optimization is enabled, only draw when \a pDrawable is at least
- * partially visible. */
-void dmxPolyPoint(DrawablePtr pDrawable, GCPtr pGC,
- int mode, int npt, DDXPointPtr pptInit)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Drawable draw;
-
- if (DMX_GCOPS_OFFSCREEN(pDrawable)) return;
-
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- XDrawPoints(dmxScreen->beDisplay, draw, pGCPriv->gc,
- (XPoint *)pptInit, npt, mode);
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Render list of connected lines, \a pptInit in \a pDrawable on the
- * back-end server associated with \a pDrawable's screen. If the
- * offscreen optimization is enabled, only draw when \a pDrawable is at
- * least partially visible. */
-void dmxPolylines(DrawablePtr pDrawable, GCPtr pGC,
- int mode, int npt, DDXPointPtr pptInit)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Drawable draw;
-
- if (DMX_GCOPS_OFFSCREEN(pDrawable)) return;
-
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- XDrawLines(dmxScreen->beDisplay, draw, pGCPriv->gc,
- (XPoint *)pptInit, npt, mode);
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Render list of disjoint segments, \a pSegs in \a pDrawable on the
- * back-end server associated with \a pDrawable's screen. If the
- * offscreen optimization is enabled, only draw when \a pDrawable is at
- * least partially visible. */
-void dmxPolySegment(DrawablePtr pDrawable, GCPtr pGC,
- int nseg, xSegment *pSegs)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Drawable draw;
-
- if (DMX_GCOPS_OFFSCREEN(pDrawable)) return;
-
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- XDrawSegments(dmxScreen->beDisplay, draw, pGCPriv->gc,
- (XSegment *)pSegs, nseg);
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Render list of rectangle outlines, \a pRects in \a pDrawable on the
- * back-end server associated with \a pDrawable's screen. If the
- * offscreen optimization is enabled, only draw when \a pDrawable is at
- * least partially visible. */
-void dmxPolyRectangle(DrawablePtr pDrawable, GCPtr pGC,
- int nrects, xRectangle *pRects)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Drawable draw;
-
- if (DMX_GCOPS_OFFSCREEN(pDrawable)) return;
-
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- XDrawRectangles(dmxScreen->beDisplay, draw, pGCPriv->gc,
- (XRectangle *)pRects, nrects);
-
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Render list of arc outlines, \a parcs in \a pDrawable on the
- * back-end server associated with \a pDrawable's screen. If the
- * offscreen optimization is enabled, only draw when \a pDrawable is at
- * least partially visible. */
-void dmxPolyArc(DrawablePtr pDrawable, GCPtr pGC,
- int narcs, xArc *parcs)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Drawable draw;
-
- if (DMX_GCOPS_OFFSCREEN(pDrawable)) return;
-
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- XDrawArcs(dmxScreen->beDisplay, draw, pGCPriv->gc,
- (XArc *)parcs, narcs);
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Render a filled polygons in \a pDrawable on the back-end server
- * associated with \a pDrawable's screen. If the offscreen
- * optimization is enabled, only draw when \a pDrawable is at least
- * partially visible. */
-void dmxFillPolygon(DrawablePtr pDrawable, GCPtr pGC,
- int shape, int mode, int count, DDXPointPtr pPts)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Drawable draw;
-
- if (DMX_GCOPS_OFFSCREEN(pDrawable)) return;
-
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- XFillPolygon(dmxScreen->beDisplay, draw, pGCPriv->gc,
- (XPoint *)pPts, count, shape, mode);
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Render list of filled rectangles, \a prectInit in \a pDrawable on
- * the back-end server associated with \a pDrawable's screen. If the
- * offscreen optimization is enabled, only draw when \a pDrawable is at
- * least partially visible. */
-void dmxPolyFillRect(DrawablePtr pDrawable, GCPtr pGC,
- int nrectFill, xRectangle *prectInit)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Drawable draw;
-
- if (DMX_GCOPS_OFFSCREEN(pDrawable)) return;
-
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- XFillRectangles(dmxScreen->beDisplay, draw, pGCPriv->gc,
- (XRectangle *)prectInit, nrectFill);
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Render list of filled arcs, \a parcs in \a pDrawable on the back-end
- * server associated with \a pDrawable's screen. If the offscreen
- * optimization is enabled, only draw when \a pDrawable is at least
- * partially visible. */
-void dmxPolyFillArc(DrawablePtr pDrawable, GCPtr pGC,
- int narcs, xArc *parcs)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Drawable draw;
-
- if (DMX_GCOPS_OFFSCREEN(pDrawable)) return;
-
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- XFillArcs(dmxScreen->beDisplay, draw, pGCPriv->gc,
- (XArc *)parcs, narcs);
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Render string of 8-bit \a chars (foreground only) in \a pDrawable on
- * the back-end server associated with \a pDrawable's screen. If the
- * offscreen optimization is enabled, only draw when \a pDrawable is at
- * least partially visible. */
-int dmxPolyText8(DrawablePtr pDrawable, GCPtr pGC,
- int x, int y, int count, char *chars)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- unsigned long n, i;
- int w;
- CharInfoPtr charinfo[255];
- Drawable draw;
-
- GetGlyphs(pGC->font, (unsigned long)count, (unsigned char *)chars,
- Linear8Bit, &n, charinfo);
-
- /* Calculate text width */
- w = 0;
- for (i = 0; i < n; i++) w += charinfo[i]->metrics.characterWidth;
-
- if (n != 0 && !DMX_GCOPS_OFFSCREEN(pDrawable)) {
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- XDrawString(dmxScreen->beDisplay, draw, pGCPriv->gc,
- x, y, chars, count);
- dmxSync(dmxScreen, FALSE);
- }
-
- return x+w;
-}
-
-/** Render string of 16-bit \a chars (foreground only) in \a pDrawable
- * on the back-end server associated with \a pDrawable's screen. If
- * the offscreen optimization is enabled, only draw when \a pDrawable
- * is at least partially visible. */
-int dmxPolyText16(DrawablePtr pDrawable, GCPtr pGC,
- int x, int y, int count, unsigned short *chars)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- unsigned long n, i;
- int w;
- CharInfoPtr charinfo[255];
- Drawable draw;
-
- GetGlyphs(pGC->font, (unsigned long)count, (unsigned char *)chars,
- (FONTLASTROW(pGC->font) == 0) ? Linear16Bit : TwoD16Bit,
- &n, charinfo);
-
- /* Calculate text width */
- w = 0;
- for (i = 0; i < n; i++) w += charinfo[i]->metrics.characterWidth;
-
- if (n != 0 && !DMX_GCOPS_OFFSCREEN(pDrawable)) {
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- XDrawString16(dmxScreen->beDisplay, draw, pGCPriv->gc,
- x, y, (XChar2b *)chars, count);
- dmxSync(dmxScreen, FALSE);
- }
-
- return x+w;
-}
-
-/** Render string of 8-bit \a chars (both foreground and background) in
- * \a pDrawable on the back-end server associated with \a pDrawable's
- * screen. If the offscreen optimization is enabled, only draw when \a
- * pDrawable is at least partially visible. */
-void dmxImageText8(DrawablePtr pDrawable, GCPtr pGC,
- int x, int y, int count, char *chars)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Drawable draw;
-
- if (DMX_GCOPS_OFFSCREEN(pDrawable)) return;
-
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- XDrawImageString(dmxScreen->beDisplay, draw, pGCPriv->gc,
- x, y, chars, count);
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Render string of 16-bit \a chars (both foreground and background) in
- * \a pDrawable on the back-end server associated with \a pDrawable's
- * screen. If the offscreen optimization is enabled, only draw when \a
- * pDrawable is at least partially visible. */
-void dmxImageText16(DrawablePtr pDrawable, GCPtr pGC,
- int x, int y, int count, unsigned short *chars)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC);
- Drawable draw;
-
- if (DMX_GCOPS_OFFSCREEN(pDrawable)) return;
-
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
-
- XDrawImageString16(dmxScreen->beDisplay, draw, pGCPriv->gc,
- x, y, (XChar2b *)chars, count);
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Image Glyph Blt -- this function should never be called. */
-void dmxImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC,
- int x, int y, unsigned int nglyph,
- CharInfoPtr *ppci, pointer pglyphBase)
-{
- /* Error -- this should never happen! */
-}
-
-/** Poly Glyph Blt -- this function should never be called. */
-void dmxPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC,
- int x, int y, unsigned int nglyph,
- CharInfoPtr *ppci, pointer pglyphBase)
-{
- /* Error -- this should never happen! */
-}
-
-/** Push Pixels -- this function should never be called. */
-void dmxPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDst,
- int w, int h, int x, int y)
-{
- /* Error -- this should never happen! */
-}
-
-/**********************************************************************
- * Miscellaneous drawing commands
- */
-
-/** When Xinerama is active, the client pixmaps are always obtained from
- * screen 0. When screen 0 is detached, the pixmaps must be obtained
- * from any other screen that is not detached. Usually, this is screen
- * 1. */
-static DMXScreenInfo *dmxFindAlternatePixmap(DrawablePtr pDrawable, XID *draw)
-{
-#ifdef PANORAMIX
- PanoramiXRes *pXinPix;
- int i;
- DMXScreenInfo *dmxScreen;
-
- if (noPanoramiXExtension) return NULL;
- if (pDrawable->type != DRAWABLE_PIXMAP) return NULL;
-
- if (!(pXinPix = (PanoramiXRes *)LookupIDByType(pDrawable->id, XRT_PIXMAP)))
- return NULL;
-
- for (i = 1; i < PanoramiXNumScreens; i++) {
- dmxScreen = &dmxScreens[i];
- if (dmxScreen->beDisplay) {
- PixmapPtr pSrc;
- dmxPixPrivPtr pSrcPriv;
-
- pSrc = (PixmapPtr)LookupIDByType(pXinPix->info[i].id,
- RT_PIXMAP);
- pSrcPriv = DMX_GET_PIXMAP_PRIV(pSrc);
- if (pSrcPriv->pixmap) {
- *draw = pSrcPriv->pixmap;
- return dmxScreen;
- }
- }
- }
-#endif
- return NULL;
-}
-
-/** Get an image from the back-end server associated with \a pDrawable's
- * screen. If \a pDrawable is a window, it must be viewable to get an
- * image from it. If it is not viewable, then get the image from the
- * first ancestor of \a pDrawable that is viewable. If no viewable
- * ancestor is found, then simply return without getting an image. */
-void dmxGetImage(DrawablePtr pDrawable, int sx, int sy, int w, int h,
- unsigned int format, unsigned long planeMask, char *pdstLine)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum];
- XImage *img;
- Drawable draw;
-
- /* Cannot get image from unviewable window */
- if (pDrawable->type == DRAWABLE_WINDOW) {
- WindowPtr pWindow = (WindowPtr)pDrawable;
- if (!pWindow->viewable) {
- while (!pWindow->viewable && pWindow->parent) {
- sx += pWindow->origin.x - wBorderWidth(pWindow);
- sx += pWindow->origin.y - wBorderWidth(pWindow);
- pWindow = pWindow->parent;
- }
- if (!pWindow->viewable) {
- return;
- }
- }
- DMX_GCOPS_SET_DRAWABLE(&pWindow->drawable, draw);
- if (DMX_GCOPS_OFFSCREEN(&pWindow->drawable))
- return;
- } else {
- DMX_GCOPS_SET_DRAWABLE(pDrawable, draw);
- if (DMX_GCOPS_OFFSCREEN(pDrawable)) {
- /* Try to find the pixmap on a non-detached Xinerama screen */
- dmxScreen = dmxFindAlternatePixmap(pDrawable, &draw);
- if (!dmxScreen) return;
- }
- }
-
- img = XGetImage(dmxScreen->beDisplay, draw,
- sx, sy, w, h, planeMask, format);
- if (img) {
- int len = img->bytes_per_line * img->height;
- memmove(pdstLine, img->data, len);
- XDestroyImage(img);
- }
-
- dmxSync(dmxScreen, FALSE);
-}
-
-/** Get Spans -- this function should never be called. */
-void dmxGetSpans(DrawablePtr pDrawable, int wMax,
- DDXPointPtr ppt, int *pwidth, int nspans,
- char *pdstStart)
-{
- /* Error -- this should never happen! */
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxgcops.h b/nx-X11/programs/Xserver/hw/dmx/dmxgcops.h
deleted file mode 100644
index 0754c44c1..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxgcops.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001,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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * Interface for gcops support. \see dmxgcops.c */
-
-#ifndef DMXGCOPS_H
-#define DMXGCOPS_H
-
-extern void dmxFillSpans(DrawablePtr pDrawable, GCPtr pGC,
- int nInit, DDXPointPtr pptInit, int *pwidthInit,
- int fSorted);
-extern void dmxSetSpans(DrawablePtr pDrawable, GCPtr pGC,
- char *psrc, DDXPointPtr ppt, int *pwidth, int nspans,
- int fSorted);
-extern void dmxPutImage(DrawablePtr pDrawable, GCPtr pGC,
- int depth, int x, int y, int w, int h,
- int leftPad, int format, char *pBits);
-extern RegionPtr dmxCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
- int srcx, int srcy, int w, int h,
- int dstx, int dsty);
-extern RegionPtr dmxCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
- int srcx, int srcy, int width, int height,
- int dstx, int dsty, unsigned long bitPlane);
-extern void dmxPolyPoint(DrawablePtr pDrawable, GCPtr pGC,
- int mode, int npt, DDXPointPtr pptInit);
-extern void dmxPolylines(DrawablePtr pDrawable, GCPtr pGC,
- int mode, int npt, DDXPointPtr pptInit);
-extern void dmxPolySegment(DrawablePtr pDrawable, GCPtr pGC,
- int nseg, xSegment *pSegs);
-extern void dmxPolyRectangle(DrawablePtr pDrawable, GCPtr pGC,
- int nrects, xRectangle *pRects);
-extern void dmxPolyArc(DrawablePtr pDrawable, GCPtr pGC,
- int narcs, xArc *parcs);
-extern void dmxFillPolygon(DrawablePtr pDrawable, GCPtr pGC,
- int shape, int mode, int count, DDXPointPtr pPts);
-extern void dmxPolyFillRect(DrawablePtr pDrawable, GCPtr pGC,
- int nrectFill, xRectangle *prectInit);
-extern void dmxPolyFillArc(DrawablePtr pDrawable, GCPtr pGC,
- int narcs, xArc *parcs);
-extern int dmxPolyText8(DrawablePtr pDrawable, GCPtr pGC,
- int x, int y, int count, char *chars);
-extern int dmxPolyText16(DrawablePtr pDrawable, GCPtr pGC,
- int x, int y, int count, unsigned short *chars);
-extern void dmxImageText8(DrawablePtr pDrawable, GCPtr pGC,
- int x, int y, int count, char *chars);
-extern void dmxImageText16(DrawablePtr pDrawable, GCPtr pGC,
- int x, int y, int count, unsigned short *chars);
-extern void dmxImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC,
- int x, int y, unsigned int nglyph,
- CharInfoPtr *ppci, pointer pglyphBase);
-extern void dmxPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC,
- int x, int y, unsigned int nglyph,
- CharInfoPtr *ppci, pointer pglyphBase);
-extern void dmxPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDst,
- int w, int h, int x, int y);
-
-extern void dmxGetImage(DrawablePtr pDrawable, int sx, int sy, int w, int h,
- unsigned int format, unsigned long planeMask,
- char *pdstLine);
-extern void dmxGetSpans(DrawablePtr pDrawable, int wMax,
- DDXPointPtr ppt, int *pwidth, int nspans,
- char *pdstStart);
-
-#endif /* DMXGCOPS_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxinit.c b/nx-X11/programs/Xserver/hw/dmx/dmxinit.c
deleted file mode 100644
index ddc4d2b04..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxinit.c
+++ /dev/null
@@ -1,1062 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- * David H. Dawes <dawes@xfree86.org>
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * Provide expected functions for initialization from the ddx layer and
- * global variables for the DMX server. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxinit.h"
-#include "dmxsync.h"
-#include "dmxlog.h"
-#include "dmxinput.h"
-#include "dmxscrinit.h"
-#include "dmxcursor.h"
-#include "dmxfont.h"
-#include "config/dmxconfig.h"
-#include "dmxcb.h"
-#include "dmxprop.h"
-#include "dmxstat.h"
-#ifdef RENDER
-#include "dmxpict.h"
-#endif
-
-#include <X11/Xos.h> /* For gettimeofday */
-#include "dixstruct.h"
-#include "panoramiXsrv.h"
-
-#include <signal.h> /* For SIGQUIT */
-
-#ifdef GLXEXT
-#include <GL/glx.h>
-#include <GL/glxint.h>
-#include "dmx_glxvisuals.h"
-#include <X11/extensions/Xext.h>
-#include <X11/extensions/extutil.h>
-
-extern void GlxSetVisualConfigs(
- int nconfigs,
- __GLXvisualConfig *configs,
- void **configprivs
-);
-#endif /* GLXEXT */
-
-extern void SetVendorRelease(int release); /* in dix/main.c */
-extern void SetVendorString(char *string); /* in dix/main.c */
-
-/* Global variables available to all Xserver/hw/dmx routines. */
-int dmxNumScreens;
-DMXScreenInfo *dmxScreens;
-
-int dmxNumInputs;
-DMXInputInfo *dmxInputs;
-
-int dmxShadowFB = FALSE;
-
-XErrorEvent dmxLastErrorEvent;
-Bool dmxErrorOccurred = FALSE;
-
-char *dmxFontPath = NULL;
-
-Bool dmxOffScreenOpt = TRUE;
-
-Bool dmxSubdividePrimitives = TRUE;
-
-Bool dmxLazyWindowCreation = TRUE;
-
-Bool dmxUseXKB = TRUE;
-
-int dmxDepth = 0;
-
-#ifndef GLXEXT
-static Bool dmxGLXProxy = FALSE;
-#else
-Bool dmxGLXProxy = TRUE;
-
-Bool dmxGLXSwapGroupSupport = TRUE;
-
-Bool dmxGLXSyncSwap = FALSE;
-
-Bool dmxGLXFinishSwap = FALSE;
-#endif
-
-Bool dmxIgnoreBadFontPaths = FALSE;
-
-Bool dmxAddRemoveScreens = FALSE;
-
-/* dmxErrorHandler catches errors that occur when calling one of the
- * back-end servers. Some of this code is based on _XPrintDefaultError
- * in xc/lib/X11/XlibInt.c */
-static int dmxErrorHandler(Display *dpy, XErrorEvent *ev)
-{
-#define DMX_ERROR_BUF_SIZE 256
- /* RATS: these buffers are only used in
- * length-limited calls. */
- char buf[DMX_ERROR_BUF_SIZE];
- char request[DMX_ERROR_BUF_SIZE];
- _XExtension *ext = NULL;
-
- dmxErrorOccurred = TRUE;
- dmxLastErrorEvent = *ev;
-
- XGetErrorText(dpy, ev->error_code, buf, sizeof(buf));
- dmxLog(dmxWarning, "dmxErrorHandler: %s\n", buf);
-
- /* Find major opcode name */
- if (ev->request_code < 128) {
- XmuSnprintf(request, sizeof(request), "%d", ev->request_code);
- XGetErrorDatabaseText(dpy, "XRequest", request, "", buf, sizeof(buf));
- } else {
- for (ext = dpy->ext_procs;
- ext && ext->codes.major_opcode != ev->request_code;
- ext = ext->next);
- if (ext) strncpy(buf, ext->name, sizeof(buf));
- else buf[0] = '\0';
- }
- dmxLog(dmxWarning, " Major opcode: %d (%s)\n",
- ev->request_code, buf);
-
- /* Find minor opcode name */
- if (ev->request_code >= 128 && ext) {
- XmuSnprintf(request, sizeof(request), "%d", ev->request_code);
- XmuSnprintf(request, sizeof(request), "%s.%d",
- ext->name, ev->minor_code);
- XGetErrorDatabaseText(dpy, "XRequest", request, "", buf, sizeof(buf));
- dmxLog(dmxWarning, " Minor opcode: %d (%s)\n",
- ev->minor_code, buf);
- }
-
- /* Provide value information */
- switch (ev->error_code) {
- case BadValue:
- dmxLog(dmxWarning, " Value: 0x%x\n",
- ev->resourceid);
- break;
- case BadAtom:
- dmxLog(dmxWarning, " AtomID: 0x%x\n",
- ev->resourceid);
- break;
- default:
- dmxLog(dmxWarning, " ResourceID: 0x%x\n",
- ev->resourceid);
- break;
- }
-
- /* Provide serial number information */
- dmxLog(dmxWarning, " Failed serial number: %d\n",
- ev->serial);
- dmxLog(dmxWarning, " Current serial number: %d\n",
- dpy->request);
- return 0;
-}
-
-#ifdef GLXEXT
-static int dmxNOPErrorHandler(Display *dpy, XErrorEvent *ev)
-{
- return 0;
-}
-#endif
-
-Bool dmxOpenDisplay(DMXScreenInfo *dmxScreen)
-{
- if (!(dmxScreen->beDisplay = XOpenDisplay(dmxScreen->name)))
- return FALSE;
-
- dmxPropertyDisplay(dmxScreen);
- return TRUE;
-}
-
-void dmxSetErrorHandler(DMXScreenInfo *dmxScreen)
-{
- XSetErrorHandler(dmxErrorHandler);
-}
-
-static void dmxPrintScreenInfo(DMXScreenInfo *dmxScreen)
-{
- XWindowAttributes attribs;
- int ndepths = 0, *depths = NULL;
- int i;
- Display *dpy = dmxScreen->beDisplay;
- Screen *s = DefaultScreenOfDisplay(dpy);
- int scr = DefaultScreen(dpy);
-
- XGetWindowAttributes(dpy, DefaultRootWindow(dpy), &attribs);
- if (!(depths = XListDepths(dpy, scr, &ndepths))) ndepths = 0;
-
- dmxLogOutput(dmxScreen, "Name of display: %s\n", DisplayString(dpy));
- dmxLogOutput(dmxScreen, "Version number: %d.%d\n",
- ProtocolVersion(dpy), ProtocolRevision(dpy));
- dmxLogOutput(dmxScreen, "Vendor string: %s\n", ServerVendor(dpy));
- if (!strstr(ServerVendor(dpy), "XFree86")) {
- dmxLogOutput(dmxScreen, "Vendor release: %d\n", VendorRelease(dpy));
- } else {
- /* This code based on xdpyinfo.c */
- int v = VendorRelease(dpy);
- int major = -1, minor = -1, patch = -1, subpatch = -1;
-
- if (v < 336)
- major = v / 100, minor = (v / 10) % 10, patch = v % 10;
- else if (v < 3900) {
- major = v / 1000;
- minor = (v / 100) % 10;
- if (((v / 10) % 10) || (v % 10)) {
- patch = (v / 10) % 10;
- if (v % 10) subpatch = v % 10;
- }
- } else if (v < 40000000) {
- major = v / 1000;
- minor = (v / 10) % 10;
- if (v % 10) patch = v % 10;
- } else {
- major = v / 10000000;
- minor = (v / 100000) % 100;
- patch = (v / 1000) % 100;
- if (v % 1000) subpatch = v % 1000;
- }
- dmxLogOutput(dmxScreen, "Vendor release: %d (XFree86 version: %d.%d",
- v, major, minor);
- if (patch > 0) dmxLogOutputCont(dmxScreen, ".%d", patch);
- if (subpatch > 0) dmxLogOutputCont(dmxScreen, ".%d", subpatch);
- dmxLogOutputCont(dmxScreen, ")\n");
- }
-
-
- dmxLogOutput(dmxScreen, "Dimensions: %dx%d pixels\n",
- attribs.width, attribs.height);
- dmxLogOutput(dmxScreen, "%d depths on screen %d: ", ndepths, scr);
- for (i = 0; i < ndepths; i++)
- dmxLogOutputCont(dmxScreen, "%c%d", i ? ',' : ' ', depths[i]);
- dmxLogOutputCont(dmxScreen, "\n");
- dmxLogOutput(dmxScreen, "Depth of root window: %d plane%s (%d)\n",
- attribs.depth, attribs.depth == 1 ? "" : "s",
- DisplayPlanes(dpy, scr));
- dmxLogOutput(dmxScreen, "Number of colormaps: %d min, %d max\n",
- MinCmapsOfScreen(s), MaxCmapsOfScreen(s));
- dmxLogOutput(dmxScreen, "Options: backing-store %s, save-unders %s\n",
- (DoesBackingStore (s) == NotUseful) ? "no" :
- ((DoesBackingStore (s) == Always) ? "yes" : "when mapped"),
- DoesSaveUnders (s) ? "yes" : "no");
- dmxLogOutput(dmxScreen, "Window Manager running: %s\n",
- (dmxScreen->WMRunningOnBE) ? "yes" : "no");
-
- if (dmxScreen->WMRunningOnBE) {
- dmxLogOutputWarning(dmxScreen,
- "Window manager running "
- "-- colormaps not supported\n");
- }
- XFree(depths);
-}
-
-void dmxGetScreenAttribs(DMXScreenInfo *dmxScreen)
-{
- XWindowAttributes attribs;
- Display *dpy = dmxScreen->beDisplay;
-#ifdef GLXEXT
- int dummy;
-#endif
-
- XGetWindowAttributes(dpy, DefaultRootWindow(dpy), &attribs);
-
- dmxScreen->beWidth = attribs.width;
- dmxScreen->beHeight = attribs.height;
-
- /* Fill in missing geometry information */
- if (dmxScreen->scrnXSign < 0) {
- if (dmxScreen->scrnWidth) {
- dmxScreen->scrnX = (attribs.width - dmxScreen->scrnWidth
- - dmxScreen->scrnX);
- } else {
- dmxScreen->scrnWidth = attribs.width - dmxScreen->scrnX;
- dmxScreen->scrnX = 0;
- }
- }
- if (dmxScreen->scrnYSign < 0) {
- if (dmxScreen->scrnHeight) {
- dmxScreen->scrnY = (attribs.height - dmxScreen->scrnHeight
- - dmxScreen->scrnY);
- } else {
- dmxScreen->scrnHeight = attribs.height - dmxScreen->scrnY;
- dmxScreen->scrnY = 0;
- }
- }
- if (!dmxScreen->scrnWidth)
- dmxScreen->scrnWidth = attribs.width - dmxScreen->scrnX;
- if (!dmxScreen->scrnHeight)
- dmxScreen->scrnHeight = attribs.height - dmxScreen->scrnY;
-
- if (!dmxScreen->rootWidth) dmxScreen->rootWidth = dmxScreen->scrnWidth;
- if (!dmxScreen->rootHeight) dmxScreen->rootHeight = dmxScreen->scrnHeight;
- if (dmxScreen->rootWidth + dmxScreen->rootX > dmxScreen->scrnWidth)
- dmxScreen->rootWidth = dmxScreen->scrnWidth - dmxScreen->rootX;
- if (dmxScreen->rootHeight + dmxScreen->rootY > dmxScreen->scrnHeight)
- dmxScreen->rootHeight = dmxScreen->scrnHeight - dmxScreen->rootY;
-
- /* FIXME: Get these from the back-end server */
- dmxScreen->beXDPI = 75;
- dmxScreen->beYDPI = 75;
-
- dmxScreen->beDepth = attribs.depth; /* FIXME: verify that this
- * works always. In
- * particular, this will work
- * well for depth=16, will fail
- * because of colormap issues
- * at depth 8. More work needs
- * to be done here. */
-
- if (dmxScreen->beDepth <= 8) dmxScreen->beBPP = 8;
- else if (dmxScreen->beDepth <= 16) dmxScreen->beBPP = 16;
- else dmxScreen->beBPP = 32;
-
-#ifdef GLXEXT
- /* get the majorOpcode for the back-end GLX extension */
- XQueryExtension(dpy, "GLX", &dmxScreen->glxMajorOpcode,
- &dummy, &dmxScreen->glxErrorBase);
-#endif
-
- dmxPrintScreenInfo(dmxScreen);
- dmxLogOutput(dmxScreen, "%dx%d+%d+%d on %dx%d at depth=%d, bpp=%d\n",
- dmxScreen->scrnWidth, dmxScreen->scrnHeight,
- dmxScreen->scrnX, dmxScreen->scrnY,
- dmxScreen->beWidth, dmxScreen->beHeight,
- dmxScreen->beDepth, dmxScreen->beBPP);
- if (dmxScreen->beDepth == 8)
- dmxLogOutputWarning(dmxScreen,
- "Support for depth == 8 is not complete\n");
-}
-
-Bool dmxGetVisualInfo(DMXScreenInfo *dmxScreen)
-{
- int i;
- XVisualInfo visinfo;
-
- visinfo.screen = DefaultScreen(dmxScreen->beDisplay);
- dmxScreen->beVisuals = XGetVisualInfo(dmxScreen->beDisplay,
- VisualScreenMask,
- &visinfo,
- &dmxScreen->beNumVisuals);
-
- dmxScreen->beDefVisualIndex = -1;
-
- if (defaultColorVisualClass >= 0 || dmxDepth > 0) {
- for (i = 0; i < dmxScreen->beNumVisuals; i++)
- if (defaultColorVisualClass >= 0) {
- if (dmxScreen->beVisuals[i].class == defaultColorVisualClass) {
- if (dmxDepth > 0) {
- if (dmxScreen->beVisuals[i].depth == dmxDepth) {
- dmxScreen->beDefVisualIndex = i;
- break;
- }
- } else {
- dmxScreen->beDefVisualIndex = i;
- break;
- }
- }
- } else if (dmxScreen->beVisuals[i].depth == dmxDepth) {
- dmxScreen->beDefVisualIndex = i;
- break;
- }
- } else {
- visinfo.visualid =
- XVisualIDFromVisual(DefaultVisual(dmxScreen->beDisplay,
- visinfo.screen));
-
- for (i = 0; i < dmxScreen->beNumVisuals; i++)
- if (visinfo.visualid == dmxScreen->beVisuals[i].visualid) {
- dmxScreen->beDefVisualIndex = i;
- break;
- }
- }
-
- for (i = 0; i < dmxScreen->beNumVisuals; i++)
- dmxLogVisual(dmxScreen, &dmxScreen->beVisuals[i],
- (i == dmxScreen->beDefVisualIndex));
-
- return (dmxScreen->beDefVisualIndex >= 0);
-}
-
-void dmxGetColormaps(DMXScreenInfo *dmxScreen)
-{
- int i;
-
- dmxScreen->beNumDefColormaps = dmxScreen->beNumVisuals;
- dmxScreen->beDefColormaps = xalloc(dmxScreen->beNumDefColormaps *
- sizeof(*dmxScreen->beDefColormaps));
-
- for (i = 0; i < dmxScreen->beNumDefColormaps; i++)
- dmxScreen->beDefColormaps[i] =
- XCreateColormap(dmxScreen->beDisplay,
- DefaultRootWindow(dmxScreen->beDisplay),
- dmxScreen->beVisuals[i].visual,
- AllocNone);
-
- dmxScreen->beBlackPixel = BlackPixel(dmxScreen->beDisplay,
- DefaultScreen(dmxScreen->beDisplay));
- dmxScreen->beWhitePixel = WhitePixel(dmxScreen->beDisplay,
- DefaultScreen(dmxScreen->beDisplay));
-}
-
-void dmxGetPixmapFormats(DMXScreenInfo *dmxScreen)
-{
- dmxScreen->beDepths =
- XListDepths(dmxScreen->beDisplay, DefaultScreen(dmxScreen->beDisplay),
- &dmxScreen->beNumDepths);
-
- dmxScreen->bePixmapFormats =
- XListPixmapFormats(dmxScreen->beDisplay,
- &dmxScreen->beNumPixmapFormats);
-}
-
-static Bool dmxSetPixmapFormats(ScreenInfo *pScreenInfo,
- DMXScreenInfo *dmxScreen)
-{
- XPixmapFormatValues *bePixmapFormat;
- PixmapFormatRec *format;
- int i, j;
-
- pScreenInfo->imageByteOrder = ImageByteOrder(dmxScreen->beDisplay);
- pScreenInfo->bitmapScanlineUnit = BitmapUnit(dmxScreen->beDisplay);
- pScreenInfo->bitmapScanlinePad = BitmapPad(dmxScreen->beDisplay);
- pScreenInfo->bitmapBitOrder = BitmapBitOrder(dmxScreen->beDisplay);
-
- pScreenInfo->numPixmapFormats = 0;
- for (i = 0; i < dmxScreen->beNumPixmapFormats; i++) {
- bePixmapFormat = &dmxScreen->bePixmapFormats[i];
- for (j = 0; j < dmxScreen->beNumDepths; j++)
- if ((bePixmapFormat->depth == 1) ||
- (bePixmapFormat->depth == dmxScreen->beDepths[j])) {
- format = &pScreenInfo->formats[pScreenInfo->numPixmapFormats];
-
- format->depth = bePixmapFormat->depth;
- format->bitsPerPixel = bePixmapFormat->bits_per_pixel;
- format->scanlinePad = bePixmapFormat->scanline_pad;
-
- pScreenInfo->numPixmapFormats++;
- break;
- }
- }
-
- return TRUE;
-}
-
-void dmxCheckForWM(DMXScreenInfo *dmxScreen)
-{
- Status status;
- XWindowAttributes xwa;
-
- status = XGetWindowAttributes(dmxScreen->beDisplay,
- DefaultRootWindow(dmxScreen->beDisplay),
- &xwa);
- dmxScreen->WMRunningOnBE =
- (status &&
- ((xwa.all_event_masks & SubstructureRedirectMask) ||
- (xwa.all_event_masks & SubstructureNotifyMask)));
-}
-
-/** Initialize the display and collect relevant information about the
- * display properties */
-static void dmxDisplayInit(DMXScreenInfo *dmxScreen)
-{
- if (!dmxOpenDisplay(dmxScreen))
- dmxLog(dmxFatal,
- "dmxOpenDisplay: Unable to open display %s\n",
- dmxScreen->name);
-
- dmxSetErrorHandler(dmxScreen);
- dmxCheckForWM(dmxScreen);
- dmxGetScreenAttribs(dmxScreen);
-
- if (!dmxGetVisualInfo(dmxScreen))
- dmxLog(dmxFatal, "dmxGetVisualInfo: No matching visuals found\n");
-
- dmxGetColormaps(dmxScreen);
- dmxGetPixmapFormats(dmxScreen);
-}
-
-/* If this doesn't compile, just add || defined(yoursystem) to the line
- * below. This information is to help with bug reports and is not
- * critical. */
-#if !defined(_POSIX_SOURCE) && !defined(__sgi)
-static const char *dmxExecOS(void) { return ""; }
-#else
-#include <sys/utsname.h>
-static const char *dmxExecOS(void)
-{
- static char buffer[128];
- static int initialized = 0;
- struct utsname u;
-
- if (!initialized++) {
- memset(buffer, 0, sizeof(buffer));
- uname(&u);
- XmuSnprintf(buffer, sizeof(buffer)-1, "%s %s %s",
- u.sysname, u.release, u.version);
- }
- return buffer;
-}
-#endif
-
-static const char *dmxBuildCompiler(void)
-{
- static char buffer[128];
- static int initialized = 0;
-
- if (!initialized++) {
- memset(buffer, 0, sizeof(buffer));
-#if defined(__GNUC__) && defined(__GNUC_MINOR__) &&defined(__GNUC_PATCHLEVEL__)
- XmuSnprintf(buffer, sizeof(buffer)-1, "gcc %d.%d.%d",
- __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
-#elif defined(__sgi) && defined(_COMPILER_VERSION) && !defined(__GNUC__)
- {
- int a = _COMPILER_VERSION / 100;
- int b = (_COMPILER_VERSION - a * 100) / 10;
- int c = _COMPILER_VERSION - a * 100 - b * 10;
- XmuSnprintf(buffer, sizeof(buffer)-1, "SGI MIPSpro %d.%d.%d",
- a, b, c);
- }
-#endif
- }
- return buffer;
-}
-
-static const char *dmxExecHost(void)
-{
- static char buffer[128];
- static int initialized = 0;
-
- if (!initialized++) {
- memset(buffer, 0, sizeof(buffer));
- XmuGetHostname(buffer, sizeof(buffer) - 1);
- }
- return buffer;
-}
-
-/** This routine is called in Xserver/dix/main.c from \a main(). */
-void InitOutput(ScreenInfo *pScreenInfo, int argc, char *argv[])
-{
- int i;
- static unsigned long dmxGeneration = 0;
-#ifdef GLXEXT
- Bool glxSupported = TRUE;
-#endif
-
- if (dmxGeneration != serverGeneration) {
- int vendrel = VENDOR_RELEASE;
- int major, minor, year, month, day;
-
- dmxGeneration = serverGeneration;
-
- major = vendrel / 100000000;
- vendrel -= major * 100000000;
- minor = vendrel / 1000000;
- vendrel -= minor * 1000000;
- year = vendrel / 10000;
- vendrel -= year * 10000;
- month = vendrel / 100;
- vendrel -= month * 100;
- day = vendrel;
-
- /* Add other epoch tests here */
- if (major > 0 && minor > 0) year += 2000;
-
- dmxLog(dmxInfo, "Generation: %d\n", dmxGeneration);
- dmxLog(dmxInfo, "DMX version: %d.%d.%02d%02d%02d (%s)\n",
- major, minor, year, month, day, VENDOR_STRING);
-
- SetVendorRelease(VENDOR_RELEASE);
- SetVendorString(VENDOR_STRING);
-
- if (dmxGeneration == 1) {
- dmxLog(dmxInfo, "DMX Build OS: %s (%s)\n", OSNAME, OSVENDOR);
- dmxLog(dmxInfo, "DMX Build Compiler: %s\n", dmxBuildCompiler());
- dmxLog(dmxInfo, "DMX Execution OS: %s\n", dmxExecOS());
- dmxLog(dmxInfo, "DMX Execution Host: %s\n", dmxExecHost());
- }
- dmxLog(dmxInfo, "MAXSCREENS: %d\n", MAXSCREENS);
-
- for (i = 0; i < dmxNumScreens; i++) {
- if (dmxScreens[i].beDisplay)
- dmxLog(dmxWarning, "Display \"%s\" still open\n",
- dmxScreens[i].name);
- dmxStatFree(dmxScreens[i].stat);
- dmxScreens[i].stat = NULL;
- }
- for (i = 0; i < dmxNumInputs; i++) dmxInputFree(&dmxInputs[i]);
- if (dmxScreens) free(dmxScreens);
- if (dmxInputs) free(dmxInputs);
- dmxScreens = NULL;
- dmxInputs = NULL;
- dmxNumScreens = 0;
- dmxNumInputs = 0;
- }
-
- /* Make sure that the command-line arguments are sane. */
- if (dmxAddRemoveScreens && (!noRenderExtension || dmxGLXProxy)) {
- /* Currently it is not possible to support GLX and Render
- * extensions with dynamic screen addition/removal due to the
- * state that each extension keeps, which cannot be restored. */
- dmxLog(dmxWarning,
- "GLX Proxy and Render extensions do not yet support dynamic\n");
- dmxLog(dmxWarning,
- "screen addition and removal. Please specify -noglxproxy\n");
- dmxLog(dmxWarning,
- "and -norender on the command line or in the configuration\n");
- dmxLog(dmxWarning,
- "file to disable these two extensions if you wish to use\n");
- dmxLog(dmxWarning,
- "the dynamic addition and removal of screens support.\n");
- dmxLog(dmxFatal,
- "Dynamic screen addition/removal error (see above).\n");
- }
-
- /* ddxProcessArgument has been called at this point, but any data
- * from the configuration file has not been applied. Do so, and be
- * sure we have at least one back-end display. */
- dmxConfigConfigure();
- if (!dmxNumScreens)
- dmxLog(dmxFatal, "InitOutput: no back-end displays found\n");
- if (!dmxNumInputs)
- dmxLog(dmxInfo, "InitOutput: no inputs found\n");
-
- /* Disable lazy window creation optimization if offscreen
- * optimization is disabled */
- if (!dmxOffScreenOpt && dmxLazyWindowCreation) {
- dmxLog(dmxInfo,
- "InitOutput: Disabling lazy window creation optimization\n");
- dmxLog(dmxInfo,
- " since it requires the offscreen optimization\n");
- dmxLog(dmxInfo,
- " to function properly.\n");
- dmxLazyWindowCreation = FALSE;
- }
-
- /* Open each display and gather information about it. */
- for (i = 0; i < dmxNumScreens; i++)
- dmxDisplayInit(&dmxScreens[i]);
-
-#if PANORAMIX
- /* Register a Xinerama callback which will run from within
- * PanoramiXCreateConnectionBlock. We can use the callback to
- * determine if Xinerama is loaded and to check the visuals
- * determined by PanoramiXConsolidate. */
- XineramaRegisterConnectionBlockCallback(dmxConnectionBlockCallback);
-#endif
-
- /* Since we only have a single screen thus far, we only need to set
- the pixmap formats to match that screen. FIXME: this isn't true.*/
- if (!dmxSetPixmapFormats(pScreenInfo, &dmxScreens[0])) return;
-
- /* Might want to install a signal handler to allow cleaning up after
- * unexpected signals. The DIX/OS layer already handles SIGINT and
- * SIGTERM, so everything is OK for expected signals. --DD
- *
- * SIGHUP, SIGINT, and SIGTERM are trapped in os/connection.c
- * SIGQUIT is another common signal that is sent from the keyboard.
- * Trap it here, to ensure that the keyboard modifier map and other
- * state for the input devices are restored. (This makes the
- * behavior of SIGQUIT somewhat unexpected, since it will be the
- * same as the behavior of SIGINT. However, leaving the modifier
- * map of the input devices empty is even more unexpected.) --RF
- */
- OsSignal(SIGQUIT, GiveUp);
-
-#ifdef GLXEXT
- /* Check if GLX extension exists on all back-end servers */
- for (i = 0; i < dmxNumScreens; i++)
- glxSupported &= (dmxScreens[i].glxMajorOpcode > 0);
-#endif
-
- /* Tell dix layer about the backend displays */
- for (i = 0; i < dmxNumScreens; i++) {
-
-#ifdef GLXEXT
- if (glxSupported) {
- /*
- * Builds GLX configurations from the list of visuals
- * supported by the back-end server, and give that
- * configuration list to the glx layer - so that he will
- * build the visuals accordingly.
- */
-
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
- __GLXvisualConfig *configs = NULL;
- dmxGlxVisualPrivate **configprivs = NULL;
- int nconfigs = 0;
- int (*oldErrorHandler)(Display *, XErrorEvent *);
- int i;
-
- /* Catch errors if when using an older GLX w/o FBconfigs */
- oldErrorHandler = XSetErrorHandler(dmxNOPErrorHandler);
-
- /* Get FBConfigs of the back-end server */
- dmxScreen->fbconfigs = GetGLXFBConfigs(dmxScreen->beDisplay,
- dmxScreen->glxMajorOpcode,
- &dmxScreen->numFBConfigs);
-
- XSetErrorHandler(oldErrorHandler);
-
- dmxScreen->glxVisuals =
- GetGLXVisualConfigs(dmxScreen->beDisplay,
- DefaultScreen(dmxScreen->beDisplay),
- &dmxScreen->numGlxVisuals);
-
- if (dmxScreen->fbconfigs) {
- configs =
- GetGLXVisualConfigsFromFBConfigs(dmxScreen->fbconfigs,
- dmxScreen->numFBConfigs,
- dmxScreen->beVisuals,
- dmxScreen->beNumVisuals,
- dmxScreen->glxVisuals,
- dmxScreen->numGlxVisuals,
- &nconfigs);
- } else {
- configs = dmxScreen->glxVisuals;
- nconfigs = dmxScreen->numGlxVisuals;
- }
-
- configprivs = xalloc(dmxScreen->beNumVisuals *
- sizeof(dmxGlxVisualPrivate*));
-
- if (configs != NULL && configprivs != NULL) {
-
- /* Initialize our private info for each visual
- * (currently only x_visual_depth and x_visual_class)
- */
- for (i = 0; i < nconfigs; i++) {
-
- configprivs[i] = (dmxGlxVisualPrivate *)
- xalloc(sizeof(dmxGlxVisualPrivate));
- configprivs[i]->x_visual_depth = 0;
- configprivs[i]->x_visual_class = 0;
-
- /* Find the visual depth */
- if (configs[i].vid > 0) {
- int j;
- for (j = 0; j < dmxScreen->beNumVisuals; j++) {
- if (dmxScreen->beVisuals[j].visualid ==
- configs[i].vid) {
- configprivs[i]->x_visual_depth =
- dmxScreen->beVisuals[j].depth;
- configprivs[i]->x_visual_class =
- dmxScreen->beVisuals[j].class;
- break;
- }
- }
- }
- }
-
- /* Hand out the glx configs to glx extension */
- GlxSetVisualConfigs(nconfigs, configs, (void**)configprivs);
- }
- }
-#endif /* GLXEXT */
-
- AddScreen(dmxScreenInit, argc, argv);
- }
-
- /* Compute origin information. */
- dmxInitOrigins();
-
- /* Compute overlap information. */
- dmxInitOverlap();
-
- /* Make sure there is a global width/height available */
- dmxComputeWidthHeight(DMX_NO_RECOMPUTE_BOUNDING_BOX);
-
- /* FIXME: The following is temporarily placed here. When the DMX
- * extension is available, it will be move there.
- */
- dmxInitFonts();
-
-#ifdef RENDER
- /* Initialize the render extension */
- if (!noRenderExtension)
- dmxInitRender();
-#endif
-
- /* Initialized things that need timer hooks */
- dmxStatInit();
- dmxSyncInit(); /* Calls RegisterBlockAndWakeupHandlers */
-
- dmxLog(dmxInfo, "Shadow framebuffer support %s\n",
- dmxShadowFB ? "enabled" : "disabled");
-}
-
-/* RATS: Assuming the fp string (which comes from the command-line argv
- vector) is NULL-terminated, the buffer is large enough for the
- strcpy. */
-static void dmxSetDefaultFontPath(char *fp)
-{
- int fplen = strlen(fp) + 1;
-
- if (dmxFontPath) {
- int len;
-
- len = strlen(dmxFontPath);
- dmxFontPath = xrealloc(dmxFontPath, len+fplen+1);
- dmxFontPath[len] = ',';
- strncpy(&dmxFontPath[len+1], fp, fplen);
- } else {
- dmxFontPath = xalloc(fplen);
- strncpy(dmxFontPath, fp, fplen);
- }
-
- defaultFontPath = dmxFontPath;
-}
-
-/** This function is called in Xserver/os/utils.c from \a AbortServer().
- * We must ensure that backend and console state is restored in the
- * event the server shutdown wasn't clean. */
-void AbortDDX(void)
-{
- int i;
-
- for (i=0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
-
- if (dmxScreen->beDisplay) XCloseDisplay(dmxScreen->beDisplay);
- dmxScreen->beDisplay = NULL;
- }
-}
-
-/** This function is called in Xserver/dix/main.c from \a main() when
- * dispatchException & DE_TERMINATE (which is the only way to exit the
- * main loop without an interruption. */
-void ddxGiveUp(void)
-{
- AbortDDX();
-}
-
-/** This function is called in Xserver/os/osinit.c from \a OsInit(). */
-void OsVendorInit(void)
-{
-}
-
-/** This function is called in Xserver/os/utils.c from \a FatalError()
- * and \a VFatalError(). (Note that setting the function pointer \a
- * OsVendorVErrorFProc will cause \a VErrorF() (which is called by the
- * two routines mentioned here, as well as by others) to use the
- * referenced routine instead of \a vfprintf().) */
-void OsVendorFatalError(void)
-{
-}
-
-/** This funciton is called by InitGlobals from Xserver/os/utils.c to
- * initialize any ddx specific globals at a very early point in the
- * server startup. */
-void ddxInitGlobals(void)
-{
-}
-
-/** Process our command line arguments. */
-int ddxProcessArgument(int argc, char *argv[], int i)
-{
- int retval = 0;
-
- if (!strcmp(argv[i], "-display")) {
- if (++i < argc) dmxConfigStoreDisplay(argv[i]);
- retval = 2;
- } else if (!strcmp(argv[i], "-inputfrom") || !strcmp(argv[i], "-input")) {
- if (++i < argc) dmxConfigStoreInput(argv[i]);
- retval = 2;
- } else if (!strcmp(argv[i], "-xinputfrom") || !strcmp(argv[i],"-xinput")) {
- if (++i < argc) dmxConfigStoreXInput(argv[i]);
- retval = 2;
- } else if (!strcmp(argv[i], "-noshadowfb")) {
- dmxLog(dmxWarning,
- "-noshadowfb has been deprecated "
- "since it is now the default\n");
- dmxShadowFB = FALSE;
- retval = 1;
- } else if (!strcmp(argv[i], "-nomulticursor")) {
- dmxCursorNoMulti();
- retval = 1;
- } else if (!strcmp(argv[i], "-shadowfb")) {
- dmxShadowFB = TRUE;
- retval = 1;
- } else if (!strcmp(argv[i], "-configfile")) {
- if (++i < argc) dmxConfigStoreFile(argv[i]);
- retval = 2;
- } else if (!strcmp(argv[i], "-config")) {
- if (++i < argc) dmxConfigStoreConfig(argv[i]);
- retval = 2;
- } else if (!strcmp(argv[i], "-fontpath")) {
- if (++i < argc) dmxSetDefaultFontPath(argv[i]);
- retval = 2;
- } else if (!strcmp(argv[i], "-stat")) {
- if ((i += 2) < argc) dmxStatActivate(argv[i-1], argv[i]);
- retval = 3;
- } else if (!strcmp(argv[i], "-syncbatch")) {
- if (++i < argc) dmxSyncActivate(argv[i]);
- retval = 2;
- } else if (!strcmp(argv[i], "-nooffscreenopt")) {
- dmxOffScreenOpt = FALSE;
- retval = 1;
- } else if (!strcmp(argv[i], "-nosubdivprims")) {
- dmxSubdividePrimitives = FALSE;
- retval = 1;
- } else if (!strcmp(argv[i], "-nowindowopt")) {
- dmxLazyWindowCreation = FALSE;
- retval = 1;
- } else if (!strcmp(argv[i], "-noxkb")) {
- dmxUseXKB = FALSE;
- retval = 1;
- } else if (!strcmp(argv[i], "-depth")) {
- if (++i < argc) dmxDepth = atoi(argv[i]);
- retval = 2;
- } else if (!strcmp(argv[i], "-norender")) {
- noRenderExtension = TRUE;
- retval = 1;
-#ifdef GLXEXT
- } else if (!strcmp(argv[i], "-noglxproxy")) {
- dmxGLXProxy = FALSE;
- retval = 1;
- } else if (!strcmp(argv[i], "-noglxswapgroup")) {
- dmxGLXSwapGroupSupport = FALSE;
- retval = 1;
- } else if (!strcmp(argv[i], "-glxsyncswap")) {
- dmxGLXSyncSwap = TRUE;
- retval = 1;
- } else if (!strcmp(argv[i], "-glxfinishswap")) {
- dmxGLXFinishSwap = TRUE;
- retval = 1;
-#endif
- } else if (!strcmp(argv[i], "-ignorebadfontpaths")) {
- dmxIgnoreBadFontPaths = TRUE;
- retval = 1;
- } else if (!strcmp(argv[i], "-addremovescreens")) {
- dmxAddRemoveScreens = TRUE;
- retval = 1;
- } else if (!strcmp(argv[i], "-param")) {
- if ((i += 2) < argc) {
- if (!strcasecmp(argv[i-1], "xkbrules"))
- dmxConfigSetXkbRules(argv[i]);
- else if (!strcasecmp(argv[i-1], "xkbmodel"))
- dmxConfigSetXkbModel(argv[i]);
- else if (!strcasecmp(argv[i-1], "xkblayout"))
- dmxConfigSetXkbLayout(argv[i]);
- else if (!strcasecmp(argv[i-1], "xkbvariant"))
- dmxConfigSetXkbVariant(argv[i]);
- else if (!strcasecmp(argv[i-1], "xkboptions"))
- dmxConfigSetXkbOptions(argv[i]);
- else
- dmxLog(dmxWarning,
- "-param requires: XkbRules, XkbModel, XkbLayout,"
- " XkbVariant, or XkbOptions\n");
- }
- retval = 3;
- }
- if (!serverGeneration) dmxConfigSetMaxScreens();
- return retval;
-}
-
-/** Provide succinct usage information for the DMX server. */
-void ddxUseMsg(void)
-{
- ErrorF("\n\nDevice Dependent Usage:\n");
- ErrorF("-display string Specify the back-end display(s)\n");
- ErrorF("-input string Specify input source for core device\n");
- ErrorF("-xinput string Specify input source for XInput device\n");
- ErrorF("-shadowfb Enable shadow frame buffer\n");
- ErrorF("-configfile file Read from a configuration file\n");
- ErrorF("-config config Select a specific configuration\n");
- ErrorF("-nomulticursor Turn of multiple cursor support\n");
- ErrorF("-fontpath Sets the default font path\n");
- ErrorF("-stat inter scrns Print out performance statistics\n");
- ErrorF("-syncbatch inter Set interval for XSync batching\n");
- ErrorF("-nooffscreenopt Disable offscreen optimization\n");
- ErrorF("-nosubdivprims Disable primitive subdivision\n");
- ErrorF(" optimization\n");
- ErrorF("-nowindowopt Disable lazy window creation optimization\n");
- ErrorF("-noxkb Disable use of the XKB extension with\n");
- ErrorF(" backend displays (cf. -kb).\n");
- ErrorF("-depth Specify the default root window depth\n");
- ErrorF("-norender Disable RENDER extension support\n");
-#ifdef GLXEXT
- ErrorF("-noglxproxy Disable GLX Proxy\n");
- ErrorF("-noglxswapgroup Disable swap group and swap barrier\n");
- ErrorF(" extensions in GLX proxy\n");
- ErrorF("-glxsyncswap Force XSync after swap buffers\n");
- ErrorF("-glxfinishswap Force glFinish after swap buffers\n");
-#endif
- ErrorF("-ignorebadfontpaths Ignore bad font paths during initialization\n");
- ErrorF("-addremovescreens Enable dynamic screen addition/removal\n");
- ErrorF("-param ... Specify configuration parameters (e.g.,\n");
- ErrorF(" XkbRules, XkbModel, XkbLayout, etc.)\n");
- ErrorF("\n");
- ErrorF(" If the -input string matches a -display string, then input\n"
- " is taken from that backend display. (XInput cannot be taken\n"
- " from a backend display.) Placing \",console\" after the\n"
- " display name will force a console window to be opened on\n"
- " that display in addition to the backend input. This is\n"
- " useful if the backend window does not cover the whole\n"
- " physical display.\n\n");
-
- ErrorF(" Otherwise, if the -input or -xinput string specifies another\n"
- " X display, then a console window will be created on that\n"
- " display. Placing \",windows\" or \",nowindows\" after the\n"
- " display name will control the display of window outlines in\n"
- " the console.\n\n");
-
- ErrorF(" -input or -xinput dummy specifies no input.\n");
- ErrorF(" -input or -xinput local specifies the use of a raw keyboard,\n"
- " mouse, or other (extension) device:\n"
- " -input local,kbd,ps2 will use a ps2 mouse\n"
- " -input local,kbd,ms will use a serial mouse\n"
- " -input local,usb-kbd,usb-mou will use USB devices \n"
- " -xinput local,usb-oth will use a non-mouse and\n"
- " non-keyboard USB device with XInput\n\n");
-
- ErrorF(" Special Keys:\n");
- ErrorF(" Ctrl-Alt-g Server grab/ungrab (console only)\n");
- ErrorF(" Ctrl-Alt-f Fine (1-pixel) mouse mode (console only)\n");
- ErrorF(" Ctrl-Alt-q Quit (core devices only)\n");
- ErrorF(" Ctrl-Alt-F* Switch to VC (local only)\n");
-}
-
-#ifdef DDXTIME
-/** Return wall-clock time in milliseconds. */
-CARD32 GetTimeInMillis(void)
-{
- struct timeval tp;
-
- gettimeofday(&tp, 0);
- return tp.tv_sec * 1000 + tp.tv_usec / 1000;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxinit.h b/nx-X11/programs/Xserver/hw/dmx/dmxinit.h
deleted file mode 100644
index e5bdb9957..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxinit.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2004 Red Hat Inc., Raleigh, 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * Interface for initialization. \see dmxinit.c */
-
-#ifndef DMXINIT_H
-#define DMXINIT_H
-
-#include "scrnintstr.h"
-
-extern Bool dmxOpenDisplay(DMXScreenInfo *dmxScreen);
-extern void dmxSetErrorHandler(DMXScreenInfo *dmxScreen);
-extern void dmxCheckForWM(DMXScreenInfo *dmxScreen);
-extern void dmxGetScreenAttribs(DMXScreenInfo *dmxScreen);
-extern Bool dmxGetVisualInfo(DMXScreenInfo *dmxScreen);
-extern void dmxGetColormaps(DMXScreenInfo *dmxScreen);
-extern void dmxGetPixmapFormats(DMXScreenInfo *dmxScreen);
-
-#endif /* DMXINIT_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxinput.c b/nx-X11/programs/Xserver/hw/dmx/dmxinput.c
deleted file mode 100644
index 7c376dee4..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxinput.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001,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:
- * David H. Dawes <dawes@xfree86.org>
- * Kevin E. Martin <kem@redhat.com>
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * Provide the main entry points for input initialization and processing
- * that arequired by the dix layer.
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxlog.h"
-#include "dmxinput.h"
-
-#include "inputstr.h"
-#include "input.h"
-
-/** Returns TRUE if the key is a valid modifier. For PC-class
- * keyboards, all keys can be used as modifiers, so return TRUE
- * always. */
-Bool LegalModifier(unsigned int key, DevicePtr pDev)
-{
- return TRUE;
-}
-
-/** Called from dix/main.c on each server generation to initialize
- * inputs. All the work is done in dmxInputInit. \see
- * dmxInputInit() */
-void InitInput(int argc, char **argv)
-{
- int i;
- DMXInputInfo *dmxInput;
-
- if (!dmxNumInputs)
- dmxLog(dmxFatal, "InitInput: no inputs specified\n");
-
- for (i = 0, dmxInput = &dmxInputs[0]; i < dmxNumInputs; i++, dmxInput++)
- dmxInputInit(dmxInput);
- if (!dmxeqInitialized()) {
- dmxLog(dmxWarning, "Use keyboard/mouse pair with the first -input\n");
- dmxLog(dmxFatal, "At least one core keyboard/mouse pair required\n");
- }
-}
-
-/** Called from dix/dispatch.c in Dispatch() whenever input events
- * require processing. All the work is done in the lower level
- * routines. */
-void ProcessInputEvents(void)
-{
- int i;
- DMXInputInfo *dmxInput;
-
- for (i = 0, dmxInput = &dmxInputs[0]; i < dmxNumInputs; i++, dmxInput++)
- if (!dmxInput->detached && dmxInput->processInputEvents)
- dmxInput->processInputEvents(dmxInput);
-}
-
-/** This routine is called from #dmxwindow.c whenever the layout of
- * windows on the display might have changed. This information is used
- * by input drivers (currently only the console driver) that provide
- * information about window layout to the user. */
-void dmxUpdateWindowInfo(DMXUpdateType type, WindowPtr pWindow)
-{
- int i;
- DMXInputInfo *dmxInput;
-
- for (i = 0, dmxInput = &dmxInputs[0]; i < dmxNumInputs; i++, dmxInput++)
- if (!dmxInput->detached && dmxInput->updateWindowInfo)
- dmxInput->updateWindowInfo(dmxInput, type, pWindow);
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxinput.h b/nx-X11/programs/Xserver/hw/dmx/dmxinput.h
deleted file mode 100644
index 59fa823d3..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxinput.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001,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:
- * David H. Dawes <dawes@xfree86.org>
- * Kevin E. Martin <kem@redhat.com>
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * This file provides access to:
- * - global variables available to all hw/dmx routines, and
- * - enumerations and typedefs needed by input routines in hw/dmx (and
- * hw/dmx/input).
- *
- * The goal is that no files in hw/dmx should include header files from
- * hw/dmx/input -- the interface defined here should be the only
- * interface exported to the hw/dmx layer. \see input/dmxinputinit.c.
- */
-
-#ifndef DMXINPUT_H
-#define DMXINPUT_H
-
-/** Maximum number of file descriptors for SIGIO handling */
-#define DMX_MAX_SIGIO_FDS 4
-
-struct _DMXInputInfo;
-
-/** Reason why window layout was updated. */
-typedef enum {
- DMX_UPDATE_REALIZE, /**< Window realized */
- DMX_UPDATE_UNREALIZE, /**< Window unrealized */
- DMX_UPDATE_RESTACK, /**< Stacking order changed */
- DMX_UPDATE_COPY, /**< Window copied */
- DMX_UPDATE_RESIZE, /**< Window resized */
- DMX_UPDATE_REPARENT /**< Window reparented */
-} DMXUpdateType;
-
-typedef void (*ProcessInputEventsProc)(struct _DMXInputInfo *);
-typedef void (*UpdateWindowInfoProc)(struct _DMXInputInfo *,
- DMXUpdateType, WindowPtr);
-
-/** An opaque structure that is only exposed in the dmx/input layer. */
-typedef struct _DMXLocalInputInfo *DMXLocalInputInfoPtr;
-
-/** State of the SIGIO engine */
-typedef enum {
- DMX_NOSIGIO = 0, /**< Device does not use SIGIO at all. */
- DMX_USESIGIO, /**< Device can use SIGIO, but is not
- * (e.g., because the VT is switch
- * away). */
- DMX_ACTIVESIGIO /**< Device is currently using SIGIO. */
-} dmxSigioState;
-
-/** DMXInputInfo is typedef'd in #dmx.h so that all routines can have
- * access to the global pointers. However, the elements are only
- * available to input-related routines. */
-struct _DMXInputInfo {
- const char *name; /**< Name of input display or device
- * (from command line or config
- * file) */
- Bool freename; /**< If true, free name on destroy */
- Bool detached; /**< If true, input screen is detached */
- int inputIdx; /**< Index into #dmxInputs global */
- int scrnIdx; /**< Index into #dmxScreens global */
- Bool core; /**< If True, initialize these
- * devices as devices that send core
- * events */
- Bool console; /**< True if console and backend
- * input share the same backend
- * display */
-
- Bool windows; /**< True if window outlines are
- * draw in console */
-
- ProcessInputEventsProc processInputEvents;
- UpdateWindowInfoProc updateWindowInfo;
-
- /* Local input information */
- dmxSigioState sigioState; /**< Current stat */
- int sigioFdCount; /**< Number of fds in use */
- int sigioFd[DMX_MAX_SIGIO_FDS]; /**< List of fds */
- Bool sigioAdded[DMX_MAX_SIGIO_FDS]; /**< Active fds */
-
-
- /** True if a VT switch is pending, but has not yet happened. */
- int vt_switch_pending;
-
- /** True if a VT switch has happened. */
- int vt_switched;
-
- /** Number of devices handled in this _DMXInputInfo structure. */
- int numDevs;
-
- /** List of actual input devices. Each _DMXInputInfo structure can
- * refer to more than one device. For example, the keyboard and the
- * pointer of a backend display; or all of the XInput extension
- * devices on a backend display. */
- DMXLocalInputInfoPtr *devs;
-
- char *keycodes; /**< XKB keycodes from command line */
- char *symbols; /**< XKB symbols from command line */
- char *geometry; /**< XKB geometry from command line */
-};
-
-extern int dmxNumInputs; /**< Number of #dmxInputs */
-extern DMXInputInfo *dmxInputs; /**< List of inputs */
-
-extern void dmxInputInit(DMXInputInfo *dmxInput);
-extern void dmxInputReInit(DMXInputInfo *dmxInput);
-extern void dmxInputLateReInit(DMXInputInfo *dmxInput);
-extern void dmxInputFree(DMXInputInfo *dmxInput);
-extern void dmxInputLogDevices(void);
-extern void dmxUpdateWindowInfo(DMXUpdateType type, WindowPtr pWindow);
-
-/* These functions are defined in input/dmxeq.c */
-extern Bool dmxeqInitialized(void);
-extern void dmxeqEnqueue(xEvent *e);
-extern void dmxeqSwitchScreen(ScreenPtr pScreen, Bool fromDIX);
-
-/* This type is used in input/dmxevents.c. Also, these functions are
- * defined in input/dmxevents.c */
-typedef enum {
- DMX_NO_BLOCK = 0,
- DMX_BLOCK = 1
-} DMXBlockType;
-
-extern void dmxGetGlobalPosition(int *x, int *y);
-extern DMXScreenInfo *dmxFindFirstScreen(int x, int y);
-extern void dmxCoreMotion(int x, int y, int delta,
- DMXBlockType block);
-
-/* Support for dynamic addition of inputs. This functions is defined in
- * config/dmxconfig.c */
-extern DMXInputInfo *dmxConfigAddInput(const char *name, int core);
-#endif /* DMXINPUT_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxlog.c b/nx-X11/programs/Xserver/hw/dmx/dmxlog.c
deleted file mode 100644
index 16d082daa..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxlog.c
+++ /dev/null
@@ -1,351 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001 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 <faith@redhat.com>
- *
- */
-
-/** \file
- * This file encapsulated all of the logging functions that are used by
- * DMX for informational, warning, and error messages. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxlog.h"
-#include "dmxinput.h"
-#ifdef XINPUT
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#endif
-
-static dmxLogLevel dmxCurrentLogLevel = dmxDebug;
-
-/** Set the default level for logging to #dmxLogLevel. Returns the
- * previous log level. */
-dmxLogLevel dmxSetLogLevel(dmxLogLevel newLevel)
-{
- dmxLogLevel oldLevel = dmxCurrentLogLevel;
- if (newLevel > dmxFatal) newLevel = dmxFatal;
- dmxCurrentLogLevel = newLevel;
- return oldLevel;
-}
-
-/** Returns the log level set by #dmxLogLevel. */
-dmxLogLevel dmxGetLogLevel(void)
-{
- return dmxCurrentLogLevel;
-}
-
-#ifdef DMX_LOG_STANDALONE
-/* When using this file as part of a stand-alone (i.e., non-X-Server
- * program, then the ultimate output routines have to be defined. */
-
-/** Provide an ErrorF function when used stand-alone. */
-void ErrorF(const char *format, ...)
-{
- va_list args;
-
- va_start(args, format);
- vfprintf(stderr, format, args); /* RATS: We assume the format string
- * is trusted, since it is always
- * from a log message in our code. */
- va_end(args);
-}
-
-/** Provide an VFatalError function when used stand-alone. */
-static void VFatalError(const char *format, va_list args)
-{
- vfprintf(stderr, format, args); /* RATS: We assume the format string
- * is trusted, since it is always
- * from a log message in our code. */
- exit(1);
-}
-
-/** Provide an VErrorF function when used stand-alone. */
-void VErrorF(const char *format, va_list args)
-{
- vfprintf(stderr, format, args); /* RATS: We assume the format string
- * is trusted, since it is always
- * from a log message in our code. */
-}
-#else
-/** This function was removed between XFree86 4.3.0 and XFree86 4.4.0. */
-extern void AbortServer(void);
-static void VFatalError(const char *format, va_list args)
-{
- VErrorF(format, args);
- ErrorF("\n");
-#ifdef DDXOSFATALERROR
- OsVendorFatalError();
-#endif
- AbortServer();
- /*NOTREACHED*/
-}
-#endif
-
-/* Prints a consistent header for each line. */
-static void dmxHeader(dmxLogLevel logLevel, DMXInputInfo *dmxInput,
- DMXScreenInfo *dmxScreen)
-{
- const char *type = "??";
-
- switch (logLevel) {
- case dmxDebug: type = ".."; break;
- case dmxInfo: type = "II"; break;
- case dmxWarning: type = "**"; break;
- case dmxError: type = "!!"; break;
- case dmxFatal: type = "Fatal Error"; break;
- }
-
- if (dmxInput && dmxScreen) {
- ErrorF("(%s) dmx[i%d/%s;o%d/%s]: ", type,
- dmxInput->inputIdx, dmxInput->name,
- dmxScreen->index, dmxScreen->name);
- } else if (dmxScreen) {
- ErrorF("(%s) dmx[o%d/%s]: ", type,
- dmxScreen->index, dmxScreen->name);
- } else if (dmxInput) {
- const char *pt = strchr(dmxInput->name, ',');
- int len = (pt
- ? (size_t)(pt-dmxInput->name)
- : strlen(dmxInput->name));
-
- ErrorF("(%s) dmx[i%d/%*.*s]: ", type,
- dmxInput->inputIdx, len, len, dmxInput->name);
- } else {
- ErrorF("(%s) dmx: ", type);
- }
-}
-
-/* Prints the error message with the appropriate low-level X output
- * routine. */
-static void dmxMessage(dmxLogLevel logLevel, const char *format, va_list args)
-{
- if (logLevel == dmxFatal || logLevel >= dmxCurrentLogLevel) {
- if (logLevel == dmxFatal) VFatalError(format, args);
- else VErrorF(format, args);
- }
-}
-
-/** Log the specified message at the specified \a logLevel. \a format
- * can be a printf-like format expression. */
-void dmxLog(dmxLogLevel logLevel, const char *format, ...)
-{
- va_list args;
-
- dmxHeader(logLevel, NULL, NULL);
- va_start(args, format);
- dmxMessage(logLevel, format, args);
- va_end(args);
-}
-
-/** Continue a log message without printing the message prefix. */
-void dmxLogCont(dmxLogLevel logLevel, const char *format, ...)
-{
- va_list args;
-
- va_start(args, format);
- dmxMessage(logLevel, format, args);
- va_end(args);
-}
-
-#ifndef DMX_LOG_STANDALONE
-/** Log an informational message (at level #dmxInfo) related to ouput.
- * The message prefix will contain backend information from \a
- * dmxScreen. */
-void dmxLogOutput(DMXScreenInfo *dmxScreen, const char *format, ...)
-{
- va_list args;
-
- dmxHeader(dmxInfo, NULL, dmxScreen);
- va_start(args, format);
- dmxMessage(dmxInfo, format, args);
- va_end(args);
-}
-
-/** Continue a message related to output without printing the message
- * prefix. */
-void dmxLogOutputCont(DMXScreenInfo *dmxScreen, const char *format, ...)
-{
- va_list args;
-
- va_start(args, format);
- dmxMessage(dmxInfo, format, args);
- va_end(args);
-}
-
-/** Log a warning message (at level #dmxWarning) related to output.
- * The message prefix will contain backend information from \a
- * dmxScreen. */
-void dmxLogOutputWarning(DMXScreenInfo *dmxScreen, const char *format, ...)
-{
- va_list args;
-
- dmxHeader(dmxWarning, NULL, dmxScreen);
- va_start(args, format);
- dmxMessage(dmxWarning, format, args);
- va_end(args);
-}
-
-/** Log an informational message (at level #dmxInfo) related to input.
- * The message prefix will contain information from \a dmxInput. */
-void dmxLogInput(DMXInputInfo *dmxInput, const char *format, ...)
-{
- va_list args;
-
- dmxHeader(dmxInfo, dmxInput, NULL);
- va_start(args, format);
- dmxMessage(dmxInfo, format, args);
- va_end(args);
-}
-
-/** Continue a message related to input without printing the message
- * prefix. */
-void dmxLogInputCont(DMXInputInfo *dmxInput, const char *format, ...)
-{
- va_list args;
-
- va_start(args, format);
- dmxMessage(dmxInfo, format, args);
- va_end(args);
-}
-
-/** Print \a argc messages, each describing an element in \a argv. This
- * is maingly for debugging purposes. */
-void dmxLogArgs(dmxLogLevel logLevel, int argc, char **argv)
-{
- int i;
- for (i = 0; i < argc; i++)
- dmxLog(logLevel, " Arg[%d] = \"%s\"\n", i, argv[i]);
-}
-
-/** Print messages at level #dmxInfo describing the visuals in \a vi. */
-void dmxLogVisual(DMXScreenInfo *dmxScreen, XVisualInfo *vi, int defaultVisual)
-{
- const char *class = "Unknown";
-
- switch (vi->class) {
- case StaticGray: class = "StaticGray "; break;
- case GrayScale: class = "GrayScale "; break;
- case StaticColor: class = "StaticColor"; break;
- case PseudoColor: class = "PseudoColor"; break;
- case TrueColor: class = "TrueColor "; break;
- case DirectColor: class = "DirectColor"; break;
- }
-
- if (dmxScreen) {
- dmxLogOutput(dmxScreen,
- "0x%02x %s %2db %db/rgb %3d 0x%04x 0x%04x 0x%04x%s\n",
- vi->visualid, class, vi->depth, vi->bits_per_rgb,
- vi->colormap_size,
- vi->red_mask, vi->green_mask, vi->blue_mask,
- defaultVisual ? " *" : "");
- } else {
- dmxLog(dmxInfo,
- " 0x%02x %s %2db %db/rgb %3d 0x%04x 0x%04x 0x%04x%s\n",
- vi->visualid, class, vi->depth, vi->bits_per_rgb,
- vi->colormap_size,
- vi->red_mask, vi->green_mask, vi->blue_mask,
- defaultVisual ? " *" : "");
- }
-}
-
-#ifdef XINPUT
-/** Translate a (normalized) XInput event \a type into a human-readable
- * string. */
-const char *dmxXInputEventName(int type)
-{
- switch (type) {
- case XI_DeviceValuator: return "XI_DeviceValuator";
- case XI_DeviceKeyPress: return "XI_DeviceKeyPress";
- case XI_DeviceKeyRelease: return "XI_DeviceKeyRelease";
- case XI_DeviceButtonPress: return "XI_DeviceButtonPress";
- case XI_DeviceButtonRelease: return "XI_DeviceButtonRelease";
- case XI_DeviceMotionNotify: return "XI_DeviceMotionNotify";
- case XI_DeviceFocusIn: return "XI_DeviceFocusIn";
- case XI_DeviceFocusOut: return "XI_DeviceFocusOut";
- case XI_ProximityIn: return "XI_ProximityIn";
- case XI_ProximityOut: return "XI_ProximityOut";
- case XI_DeviceStateNotify: return "XI_DeviceStateNotify";
- case XI_DeviceMappingNotify: return "XI_DeviceMappingNotify";
- case XI_ChangeDeviceNotify: return "XI_ChangeDeviceNotify";
- case XI_DeviceKeystateNotify: return "XI_DeviceKeystateNotify";
- case XI_DeviceButtonstateNotify: return "XI_DeviceButtonstateNotify";
- default: return "unknown";
- }
-}
-
-#endif
-#endif
-
-/** Translate an event \a type into a human-readable string. */
-const char *dmxEventName(int type)
-{
- switch (type) {
- case KeyPress: return "KeyPress";
- case KeyRelease: return "KeyRelease";
- case ButtonPress: return "ButtonPress";
- case ButtonRelease: return "ButtonRelease";
- case MotionNotify: return "MotionNotify";
- case EnterNotify: return "EnterNotify";
- case LeaveNotify: return "LeaveNotify";
- case FocusIn: return "FocusIn";
- case FocusOut: return "FocusOut";
- case KeymapNotify: return "KeymapNotify";
- case Expose: return "Expose";
- case GraphicsExpose: return "GraphicsExpose";
- case NoExpose: return "NoExpose";
- case VisibilityNotify: return "VisibilityNotify";
- case CreateNotify: return "CreateNotify";
- case DestroyNotify: return "DestroyNotify";
- case UnmapNotify: return "UnmapNotify";
- case MapNotify: return "MapNotify";
- case MapRequest: return "MapRequest";
- case ReparentNotify: return "ReparentNotify";
- case ConfigureNotify: return "ConfigureNotify";
- case ConfigureRequest: return "ConfigureRequest";
- case GravityNotify: return "GravityNotify";
- case ResizeRequest: return "ResizeRequest";
- case CirculateNotify: return "CirculateNotify";
- case CirculateRequest: return "CirculateRequest";
- case PropertyNotify: return "PropertyNotify";
- case SelectionClear: return "SelectionClear";
- case SelectionRequest: return "SelectionRequest";
- case SelectionNotify: return "SelectionNotify";
- case ColormapNotify: return "ColormapNotify";
- case ClientMessage: return "ClientMessage";
- case MappingNotify: return "MappingNotify";
- default: return "<unknown>";
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxlog.h b/nx-X11/programs/Xserver/hw/dmx/dmxlog.h
deleted file mode 100644
index 6b9ec6005..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxlog.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001 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 <faith@redhat.com>
- *
- */
-
-/** \file
- * This header is included by all files that need to use the DMX logging
- * facilities. */
-
-#ifndef _DMXLOG_H_
-#define _DMXLOG_H_
-
-/** Logging levels -- output is tunable with #dmxSetLogLevel. */
-typedef enum {
- dmxDebug, /**< Usually verbose debugging info */
- dmxInfo, /**< Non-warning information */
- dmxWarning, /**< A warning that may indicate DMX
- * will not function as the user
- * intends. */
- dmxError, /**< A non-fatal error that probably
- * indicates DMX will not function as
- * desired.*/
- dmxFatal /**< A fatal error that will cause DMX
- * to shut down. */
-} dmxLogLevel;
-
-/* Logging functions used by Xserver/hw/dmx routines. */
-extern dmxLogLevel dmxSetLogLevel(dmxLogLevel newLevel);
-extern dmxLogLevel dmxGetLogLevel(void);
-extern void dmxLog(dmxLogLevel logLevel, const char *format, ...);
-extern void dmxLogCont(dmxLogLevel logLevel, const char *format, ...);
-extern const char *dmxEventName(int type);
-
-#ifndef DMX_LOG_STANDALONE
-extern void dmxLogOutput(DMXScreenInfo *dmxScreen, const char *format, ...);
-extern void dmxLogOutputCont(DMXScreenInfo *dmxScreen, const char *format,
- ...);
-extern void dmxLogOutputWarning(DMXScreenInfo *dmxScreen, const char *format,
- ...);
-extern void dmxLogInput(DMXInputInfo *dmxInput, const char *format, ...);
-extern void dmxLogInputCont(DMXInputInfo *dmxInput, const char *format, ...);
-extern void dmxLogArgs(dmxLogLevel logLevel, int argc, char **argv);
-extern void dmxLogVisual(DMXScreenInfo *dmxScreen, XVisualInfo *vi,
- int defaultVisual);
-#ifdef XINPUT
-extern const char *dmxXInputEventName(int type);
-#endif
-#endif
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxpict.c b/nx-X11/programs/Xserver/hw/dmx/dmxpict.c
deleted file mode 100644
index 9a76a6696..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxpict.c
+++ /dev/null
@@ -1,1298 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * Provide support for the RENDER extension (version 0.8).
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxsync.h"
-#include "dmxpict.h"
-#include "dmxwindow.h"
-#include "dmxpixmap.h"
-
-#include "fb.h"
-#include "pixmapstr.h"
-#include "dixstruct.h"
-
-#include <X11/extensions/render.h>
-#include <X11/extensions/renderproto.h>
-#include "picture.h"
-#include "picturestr.h"
-#include "mipict.h"
-#include "fbpict.h"
-
-
-extern int RenderErrBase;
-extern int (*ProcRenderVector[RenderNumberRequests])(ClientPtr);
-
-static int (*dmxSaveRenderVector[RenderNumberRequests])(ClientPtr);
-
-
-static int dmxProcRenderCreateGlyphSet(ClientPtr client);
-static int dmxProcRenderFreeGlyphSet(ClientPtr client);
-static int dmxProcRenderAddGlyphs(ClientPtr client);
-static int dmxProcRenderFreeGlyphs(ClientPtr client);
-static int dmxProcRenderCompositeGlyphs(ClientPtr client);
-static int dmxProcRenderSetPictureTransform(ClientPtr client);
-static int dmxProcRenderSetPictureFilter(ClientPtr client);
-#if 0
-/* FIXME: Not (yet) supported */
-static int dmxProcRenderCreateCursor(ClientPtr client);
-static int dmxProcRenderCreateAnimCursor(ClientPtr client);
-#endif
-
-/** Catch errors that might occur when allocating Glyph Sets. Errors
- * are saved in dmxGlyphLastError for later handling. */
-static int dmxGlyphLastError;
-static int dmxGlyphErrorHandler(Display *dpy, XErrorEvent *ev)
-{
- dmxGlyphLastError = ev->error_code;
- return 0;
-}
-
-
-/** Initialize the Proc Vector for the RENDER extension. The functions
- * here cannot be handled by the mi layer RENDER hooks either because
- * the required information is no longer available when it reaches the
- * mi layer or no mi layer hooks exist. This function is called from
- * InitOutput() since it should be initialized only once per server
- * generation. */
-void dmxInitRender(void)
-{
- int i;
-
- for (i = 0; i < RenderNumberRequests; i++)
- dmxSaveRenderVector[i] = ProcRenderVector[i];
-
- ProcRenderVector[X_RenderCreateGlyphSet]
- = dmxProcRenderCreateGlyphSet;
- ProcRenderVector[X_RenderFreeGlyphSet]
- = dmxProcRenderFreeGlyphSet;
- ProcRenderVector[X_RenderAddGlyphs]
- = dmxProcRenderAddGlyphs;
- ProcRenderVector[X_RenderFreeGlyphs]
- = dmxProcRenderFreeGlyphs;
- ProcRenderVector[X_RenderCompositeGlyphs8]
- = dmxProcRenderCompositeGlyphs;
- ProcRenderVector[X_RenderCompositeGlyphs16]
- = dmxProcRenderCompositeGlyphs;
- ProcRenderVector[X_RenderCompositeGlyphs32]
- = dmxProcRenderCompositeGlyphs;
- ProcRenderVector[X_RenderSetPictureTransform]
- = dmxProcRenderSetPictureTransform;
- ProcRenderVector[X_RenderSetPictureFilter]
- = dmxProcRenderSetPictureFilter;
-}
-
-/** Reset the Proc Vector for the RENDER extension back to the original
- * functions. This function is called from dmxCloseScreen() during the
- * server reset (only for screen #0). */
-void dmxResetRender(void)
-{
- int i;
-
- for (i = 0; i < RenderNumberRequests; i++)
- ProcRenderVector[i] = dmxSaveRenderVector[i];
-}
-
-/** Initialize the RENDER extension, allocate the picture privates and
- * wrap mi function hooks. If the shadow frame buffer is used, then
- * call the appropriate fb initialization function. */
-Bool dmxPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps;
-
- /* The shadow framebuffer only relies on FB to be initialized */
- if (dmxShadowFB) return fbPictureInit(pScreen, formats, nformats);
-
- if (!miPictureInit(pScreen, formats, nformats))
- return FALSE;
-
- if (!AllocatePicturePrivate(pScreen, dmxPictPrivateIndex,
- sizeof(dmxPictPrivRec)))
- return FALSE;
-
- ps = GetPictureScreen(pScreen);
-
- DMX_WRAP(CreatePicture, dmxCreatePicture, dmxScreen, ps);
- DMX_WRAP(DestroyPicture, dmxDestroyPicture, dmxScreen, ps);
-
- DMX_WRAP(ChangePictureClip, dmxChangePictureClip, dmxScreen, ps);
- DMX_WRAP(DestroyPictureClip, dmxDestroyPictureClip, dmxScreen, ps);
-
- DMX_WRAP(ChangePicture, dmxChangePicture, dmxScreen, ps);
- DMX_WRAP(ValidatePicture, dmxValidatePicture, dmxScreen, ps);
-
- DMX_WRAP(Composite, dmxComposite, dmxScreen, ps);
- DMX_WRAP(Glyphs, dmxGlyphs, dmxScreen, ps);
- DMX_WRAP(CompositeRects, dmxCompositeRects, dmxScreen, ps);
-
- DMX_WRAP(Trapezoids, dmxTrapezoids, dmxScreen, ps);
- DMX_WRAP(Triangles, dmxTriangles, dmxScreen, ps);
- DMX_WRAP(TriStrip, dmxTriStrip, dmxScreen, ps);
- DMX_WRAP(TriFan, dmxTriFan, dmxScreen, ps);
-
- return TRUE;
-}
-
-
-/** Find the appropriate format on the requested screen given the
- * internal format requested. The list of formats is searched
- * sequentially as the XRenderFindFormat() function does not always
- * find the appropriate format when a specific format is requested. */
-static XRenderPictFormat *dmxFindFormat(DMXScreenInfo *dmxScreen,
- PictFormatPtr pFmt)
-{
- XRenderPictFormat *pFormat = NULL;
- int i = 0;
-
- if (!pFmt || !dmxScreen->beDisplay) return pFormat;
-
- while (1) {
- pFormat = XRenderFindFormat(dmxScreen->beDisplay, 0, 0, i++);
- if (!pFormat) break;
-
- if (pFormat->type != pFmt->type) continue;
- if (pFormat->depth != pFmt->depth) continue;
- if (pFormat->direct.red != pFmt->direct.red) continue;
- if (pFormat->direct.redMask != pFmt->direct.redMask) continue;
- if (pFormat->direct.green != pFmt->direct.green) continue;
- if (pFormat->direct.greenMask != pFmt->direct.greenMask) continue;
- if (pFormat->direct.blue != pFmt->direct.blue) continue;
- if (pFormat->direct.blueMask != pFmt->direct.blueMask) continue;
- if (pFormat->direct.alpha != pFmt->direct.alpha) continue;
- if (pFormat->direct.alphaMask != pFmt->direct.alphaMask) continue;
-
- /* We have a match! */
- break;
- }
-
- return pFormat;
-}
-
-/** Free \a glyphSet on back-end screen number \a idx. */
-Bool dmxBEFreeGlyphSet(ScreenPtr pScreen, GlyphSetPtr glyphSet)
-{
- dmxGlyphPrivPtr glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
- int idx = pScreen->myNum;
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
-
- if (glyphPriv->glyphSets[idx]) {
- XRenderFreeGlyphSet(dmxScreen->beDisplay, glyphPriv->glyphSets[idx]);
- glyphPriv->glyphSets[idx] = (GlyphSet)0;
- return TRUE;
- }
-
- return FALSE;
-}
-
-/** Create a Glyph Set on each screen. Save the glyphset ID from each
- * screen in the Glyph Set's private structure. Fail if the format
- * requested is not available or if the Glyph Set cannot be created on
- * the screen. */
-static int dmxProcRenderCreateGlyphSet(ClientPtr client)
-{
- int ret;
- REQUEST(xRenderCreateGlyphSetReq);
-
- ret = dmxSaveRenderVector[stuff->renderReqType](client);
-
- if (ret == Success) {
- int (*oldErrorHandler)(Display *, XErrorEvent *);
- GlyphSetPtr glyphSet;
- dmxGlyphPrivPtr glyphPriv;
- int i;
- PictFormatPtr pFmt;
- XRenderPictFormat *pFormat;
-
- /* Look up glyphSet that was just created ???? */
- /* Store glyphsets from backends in glyphSet->devPrivate ????? */
- /* Make sure we handle all errors here!! */
-
- glyphSet = SecurityLookupIDByType(client, stuff->gsid, GlyphSetType,
- SecurityDestroyAccess);
- glyphPriv = xalloc(sizeof(dmxGlyphPrivRec));
- if (!glyphPriv) return BadAlloc;
- glyphPriv->glyphSets = NULL;
- MAXSCREENSALLOC_RETURN(glyphPriv->glyphSets, BadAlloc);
- DMX_SET_GLYPH_PRIV(glyphSet, glyphPriv);
-
- pFmt = SecurityLookupIDByType(client, stuff->format, PictFormatType,
- SecurityReadAccess);
-
- oldErrorHandler = XSetErrorHandler(dmxGlyphErrorHandler);
-
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
-
- if (!dmxScreen->beDisplay) {
- glyphPriv->glyphSets[i] = 0;
- continue;
- }
-
- pFormat = dmxFindFormat(dmxScreen, pFmt);
- if (!pFormat) {
- int j;
-
- /* Free the glyph sets we've allocated thus far */
- for (j = 0; j < i; j++)
- dmxBEFreeGlyphSet(screenInfo.screens[j], glyphSet);
-
- /* Free the resource created by render */
- FreeResource(stuff->gsid, RT_NONE);
-
- ret = BadMatch;
- break;
- }
-
- /* Catch when this fails */
- glyphPriv->glyphSets[i]
- = XRenderCreateGlyphSet(dmxScreen->beDisplay, pFormat);
-
- if (dmxGlyphLastError) {
- int j;
-
- /* Free the glyph sets we've allocated thus far */
- for (j = 0; j < i; j++)
- dmxBEFreeGlyphSet(screenInfo.screens[j], glyphSet);
-
- /* Free the resource created by render */
- FreeResource(stuff->gsid, RT_NONE);
-
- ret = dmxGlyphLastError;
- break;
- }
- }
-
- XSetErrorHandler(oldErrorHandler);
- }
-
- return ret;
-}
-
-/** Free the previously allocated Glyph Sets for each screen. */
-static int dmxProcRenderFreeGlyphSet(ClientPtr client)
-{
- GlyphSetPtr glyphSet;
- REQUEST(xRenderFreeGlyphSetReq);
-
- REQUEST_SIZE_MATCH(xRenderFreeGlyphSetReq);
- glyphSet = SecurityLookupIDByType(client, stuff->glyphset, GlyphSetType,
- SecurityDestroyAccess);
-
- if (glyphSet && glyphSet->refcnt == 1) {
- dmxGlyphPrivPtr glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
- int i;
-
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
-
- if (dmxScreen->beDisplay) {
- if (dmxBEFreeGlyphSet(screenInfo.screens[i], glyphSet))
- dmxSync(dmxScreen, FALSE);
- }
- }
-
- MAXSCREENSFREE(glyphPriv->glyphSets);
- xfree(glyphPriv);
- DMX_SET_GLYPH_PRIV(glyphSet, NULL);
- }
-
- return dmxSaveRenderVector[stuff->renderReqType](client);
-}
-
-/** Add glyphs to the Glyph Set on each screen. */
-static int dmxProcRenderAddGlyphs(ClientPtr client)
-{
- int ret;
- REQUEST(xRenderAddGlyphsReq);
-
- ret = dmxSaveRenderVector[stuff->renderReqType](client);
-
- if (ret == Success) {
- GlyphSetPtr glyphSet;
- dmxGlyphPrivPtr glyphPriv;
- int i;
- int nglyphs;
- CARD32 *gids;
- Glyph *gidsCopy;
- xGlyphInfo *gi;
- CARD8 *bits;
- int nbytes;
-
- glyphSet = SecurityLookupIDByType(client, stuff->glyphset,
- GlyphSetType, SecurityReadAccess);
- glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
-
- nglyphs = stuff->nglyphs;
- gids = (CARD32 *)(stuff + 1);
- gi = (xGlyphInfo *)(gids + nglyphs);
- bits = (CARD8 *)(gi + nglyphs);
- nbytes = ((stuff->length << 2) -
- sizeof(xRenderAddGlyphsReq) -
- (sizeof(CARD32) + sizeof(xGlyphInfo)) * nglyphs);
-
- gidsCopy = xalloc(sizeof(*gidsCopy) * nglyphs);
- for (i = 0; i < nglyphs; i++) gidsCopy[i] = gids[i];
-
- /* FIXME: Will this ever fail? */
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
-
- if (dmxScreen->beDisplay) {
- XRenderAddGlyphs(dmxScreen->beDisplay,
- glyphPriv->glyphSets[i],
- gidsCopy,
- (XGlyphInfo *)gi,
- nglyphs,
- (char *)bits,
- nbytes);
- dmxSync(dmxScreen, FALSE);
- }
- }
- xfree(gidsCopy);
- }
-
- return ret;
-}
-
-/** Free glyphs from the Glyph Set for each screen. */
-static int dmxProcRenderFreeGlyphs(ClientPtr client)
-{
- GlyphSetPtr glyphSet;
- REQUEST(xRenderFreeGlyphsReq);
-
- REQUEST_AT_LEAST_SIZE(xRenderFreeGlyphsReq);
- glyphSet = SecurityLookupIDByType(client, stuff->glyphset, GlyphSetType,
- SecurityWriteAccess);
-
- if (glyphSet) {
- dmxGlyphPrivPtr glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
- int i;
- int nglyphs;
- Glyph *gids;
-
- nglyphs = ((client->req_len << 2) - sizeof(xRenderFreeGlyphsReq)) >> 2;
- if (nglyphs) {
- gids = xalloc(sizeof(*gids) * nglyphs);
- for (i = 0; i < nglyphs; i++)
- gids[i] = ((CARD32 *)(stuff + 1))[i];
-
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
-
- if (dmxScreen->beDisplay) {
- XRenderFreeGlyphs(dmxScreen->beDisplay,
- glyphPriv->glyphSets[i], gids, nglyphs);
- dmxSync(dmxScreen, FALSE);
- }
- }
- xfree(gids);
- }
- }
-
- return dmxSaveRenderVector[stuff->renderReqType](client);
-}
-
-/** Composite glyphs on each screen into the requested picture. If
- * either the src or dest picture has not been allocated due to lazy
- * window creation, this request will gracefully return. */
-static int dmxProcRenderCompositeGlyphs(ClientPtr client)
-{
- int ret;
- REQUEST(xRenderCompositeGlyphsReq);
-
- ret = dmxSaveRenderVector[stuff->renderReqType](client);
-
- /* For the following to work with PanoramiX, it assumes that Render
- * wraps the ProcRenderVector after dmxRenderInit has been called.
- */
- if (ret == Success) {
- PicturePtr pSrc;
- dmxPictPrivPtr pSrcPriv;
- PicturePtr pDst;
- dmxPictPrivPtr pDstPriv;
- PictFormatPtr pFmt;
- XRenderPictFormat *pFormat;
- int size;
-
- int scrnNum;
- DMXScreenInfo *dmxScreen;
-
- CARD8 *buffer;
- CARD8 *end;
- int space;
-
- int nglyph;
- char *glyphs;
- char *curGlyph;
-
- xGlyphElt *elt;
- int nelt;
- XGlyphElt8 *elts;
- XGlyphElt8 *curElt;
-
- GlyphSetPtr glyphSet;
- dmxGlyphPrivPtr glyphPriv;
-
- pSrc = SecurityLookupIDByType(client, stuff->src, PictureType,
- SecurityReadAccess);
- pSrcPriv = DMX_GET_PICT_PRIV(pSrc);
- if (!pSrcPriv->pict)
- return ret;
-
- pDst = SecurityLookupIDByType(client, stuff->dst, PictureType,
- SecurityWriteAccess);
- pDstPriv = DMX_GET_PICT_PRIV(pDst);
- if (!pDstPriv->pict)
- return ret;
-
- scrnNum = pDst->pDrawable->pScreen->myNum;
- dmxScreen = &dmxScreens[scrnNum];
-
- /* Note: If the back-end display has been detached, then it
- * should not be possible to reach here since the pSrcPriv->pict
- * and pDstPriv->pict will have already been set to 0.
- */
- if (!dmxScreen->beDisplay)
- return ret;
-
- if (stuff->maskFormat)
- pFmt = SecurityLookupIDByType(client, stuff->maskFormat,
- PictFormatType, SecurityReadAccess);
- else
- pFmt = NULL;
-
- pFormat = dmxFindFormat(dmxScreen, pFmt);
-
- switch (stuff->renderReqType) {
- case X_RenderCompositeGlyphs8: size = sizeof(CARD8); break;
- case X_RenderCompositeGlyphs16: size = sizeof(CARD16); break;
- case X_RenderCompositeGlyphs32: size = sizeof(CARD32); break;
- default: return BadPictOp; /* Can't happen */
- }
-
- buffer = (CARD8 *)(stuff + 1);
- end = (CARD8 *)stuff + (stuff->length << 2);
- nelt = 0;
- nglyph = 0;
- while (buffer + sizeof(xGlyphElt) < end) {
- elt = (xGlyphElt *)buffer;
- buffer += sizeof(xGlyphElt);
-
- if (elt->len == 0xff) {
- buffer += 4;
- } else {
- nelt++;
- nglyph += elt->len;
- space = size * elt->len;
- if (space & 3) space += 4 - (space & 3);
- buffer += space;
- }
- }
-
- /* The following only works for Render version > 0.2 */
-
- /* All of the XGlyphElt* structure sizes are identical */
- elts = ALLOCATE_LOCAL(nelt * sizeof(XGlyphElt8));
- if (!elts)
- return BadAlloc;
-
- glyphs = ALLOCATE_LOCAL(nglyph * size);
- if (!glyphs) {
- DEALLOCATE_LOCAL(elts);
- return BadAlloc;
- }
-
- buffer = (CARD8 *)(stuff + 1);
- end = (CARD8 *)stuff + (stuff->length << 2);
- curGlyph = glyphs;
- curElt = elts;
-
- glyphSet = SecurityLookupIDByType(client, stuff->glyphset,
- GlyphSetType, SecurityReadAccess);
- glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
-
- while (buffer + sizeof(xGlyphElt) < end) {
- elt = (xGlyphElt *)buffer;
- buffer += sizeof(xGlyphElt);
-
- if (elt->len == 0xff) {
- glyphSet = SecurityLookupIDByType(client,
- *((CARD32 *)buffer),
- GlyphSetType,
- SecurityReadAccess);
- glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
- buffer += 4;
- } else {
- curElt->glyphset = glyphPriv->glyphSets[scrnNum];
- curElt->xOff = elt->deltax;
- curElt->yOff = elt->deltay;
- curElt->nchars = elt->len;
- curElt->chars = curGlyph;
-
- memcpy(curGlyph, buffer, size*elt->len);
- curGlyph += size * elt->len;
-
- curElt++;
-
- space = size * elt->len;
- if (space & 3) space += 4 - (space & 3);
- buffer += space;
- }
- }
-
- switch (stuff->renderReqType) {
- case X_RenderCompositeGlyphs8:
- XRenderCompositeText8(dmxScreen->beDisplay, stuff->op,
- pSrcPriv->pict, pDstPriv->pict,
- pFormat,
- stuff->xSrc, stuff->ySrc,
- 0, 0, elts, nelt);
- break;
- case X_RenderCompositeGlyphs16:
- XRenderCompositeText16(dmxScreen->beDisplay, stuff->op,
- pSrcPriv->pict, pDstPriv->pict,
- pFormat,
- stuff->xSrc, stuff->ySrc,
- 0, 0, (XGlyphElt16 *)elts, nelt);
- break;
- case X_RenderCompositeGlyphs32:
- XRenderCompositeText32(dmxScreen->beDisplay, stuff->op,
- pSrcPriv->pict, pDstPriv->pict,
- pFormat,
- stuff->xSrc, stuff->ySrc,
- 0, 0, (XGlyphElt32 *)elts, nelt);
- break;
- }
-
- dmxSync(dmxScreen, FALSE);
-
- DEALLOCATE_LOCAL(elts);
- DEALLOCATE_LOCAL(glyphs);
- }
-
- return ret;
-}
-
-/** Set the picture transform on each screen. */
-static int dmxProcRenderSetPictureTransform(ClientPtr client)
-{
- DMXScreenInfo *dmxScreen;
- PicturePtr pPicture;
- dmxPictPrivPtr pPictPriv;
- XTransform xform;
- REQUEST(xRenderSetPictureTransformReq);
-
- REQUEST_SIZE_MATCH(xRenderSetPictureTransformReq);
- VERIFY_PICTURE(pPicture, stuff->picture, client, SecurityWriteAccess,
- RenderErrBase + BadPicture);
-
- /* For the following to work with PanoramiX, it assumes that Render
- * wraps the ProcRenderVector after dmxRenderInit has been called.
- */
- dmxScreen = &dmxScreens[pPicture->pDrawable->pScreen->myNum];
- pPictPriv = DMX_GET_PICT_PRIV(pPicture);
-
- if (pPictPriv->pict) {
- xform.matrix[0][0] = stuff->transform.matrix11;
- xform.matrix[0][1] = stuff->transform.matrix12;
- xform.matrix[0][2] = stuff->transform.matrix13;
- xform.matrix[1][0] = stuff->transform.matrix21;
- xform.matrix[1][1] = stuff->transform.matrix22;
- xform.matrix[1][2] = stuff->transform.matrix23;
- xform.matrix[2][0] = stuff->transform.matrix31;
- xform.matrix[2][1] = stuff->transform.matrix32;
- xform.matrix[2][2] = stuff->transform.matrix33;
-
- XRenderSetPictureTransform(dmxScreen->beDisplay,
- pPictPriv->pict,
- &xform);
- dmxSync(dmxScreen, FALSE);
- }
-
- return dmxSaveRenderVector[stuff->renderReqType](client);
-}
-
-/** Set the picture filter on each screen. */
-static int dmxProcRenderSetPictureFilter(ClientPtr client)
-{
- DMXScreenInfo *dmxScreen;
- PicturePtr pPicture;
- dmxPictPrivPtr pPictPriv;
- char *filter;
- XFixed *params;
- int nparams;
- REQUEST(xRenderSetPictureFilterReq);
-
- REQUEST_SIZE_MATCH(xRenderSetPictureFilterReq);
- VERIFY_PICTURE(pPicture, stuff->picture, client, SecurityWriteAccess,
- RenderErrBase + BadPicture);
-
- /* For the following to work with PanoramiX, it assumes that Render
- * wraps the ProcRenderVector after dmxRenderInit has been called.
- */
- dmxScreen = &dmxScreens[pPicture->pDrawable->pScreen->myNum];
- pPictPriv = DMX_GET_PICT_PRIV(pPicture);
-
- if (pPictPriv->pict) {
- filter = (char *)(stuff + 1);
- params = (XFixed *)(filter + ((stuff->nbytes + 3) & ~3));
- nparams = ((XFixed *)stuff + client->req_len) - params;
-
- XRenderSetPictureFilter(dmxScreen->beDisplay,
- pPictPriv->pict,
- filter,
- params,
- nparams);
- dmxSync(dmxScreen, FALSE);
- }
-
- return dmxSaveRenderVector[stuff->renderReqType](client);
-}
-
-
-/** Create a picture on the appropriate screen. This is the actual
- * function that creates the picture. However, if the associated
- * window has not yet been created due to lazy window creation, then
- * delay the picture creation until the window is mapped. */
-static Picture dmxDoCreatePicture(PicturePtr pPicture)
-{
- DrawablePtr pDraw = pPicture->pDrawable;
- ScreenPtr pScreen = pDraw->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- XRenderPictFormat *pFormat;
- Drawable draw;
-
- if (pPicture->pDrawable->type == DRAWABLE_WINDOW) {
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV((WindowPtr)(pDraw));
-
- if (!(draw = pWinPriv->window)) {
- /* Window has not been created yet due to the window
- * optimization. Delay picture creation until window is
- * mapped.
- */
- pWinPriv->hasPict = TRUE;
- return 0;
- }
- } else {
- dmxPixPrivPtr pPixPriv = DMX_GET_PIXMAP_PRIV((PixmapPtr)(pDraw));
-
- if (!(draw = pPixPriv->pixmap)) {
- /* FIXME: Zero width/height pixmap?? */
- return 0;
- }
- }
-
- /* This should not be reached if the back-end display has been
- * detached because the pWinPriv->window or the pPixPriv->pixmap
- * will be NULL; however, we add it here for completeness
- */
- if (!dmxScreen->beDisplay)
- return 0;
-
- pFormat = dmxFindFormat(dmxScreen, pPicture->pFormat);
-
- return XRenderCreatePicture(dmxScreen->beDisplay, draw, pFormat, 0, 0);
-}
-
-/** Create a list of pictures. This function is called by
- * dmxCreateAndRealizeWindow() during the lazy window creation
- * realization process. It creates the entire list of pictures that
- * are associated with the given window. */
-void dmxCreatePictureList(WindowPtr pWindow)
-{
- PicturePtr pPicture = GetPictureWindow(pWindow);
-
- while (pPicture) {
- dmxPictPrivPtr pPictPriv = DMX_GET_PICT_PRIV(pPicture);
-
- /* Create the picture for this window */
- pPictPriv->pict = dmxDoCreatePicture(pPicture);
-
- /* ValidatePicture takes care of the state changes */
-
- pPicture = pPicture->pNext;
- }
-}
-
-/** Create a picture. This function handles the CreatePicture
- * unwrapping/wrapping and calls dmxDoCreatePicture to actually create
- * the picture on the appropriate screen. */
-int dmxCreatePicture(PicturePtr pPicture)
-{
- ScreenPtr pScreen = pPicture->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- dmxPictPrivPtr pPictPriv = DMX_GET_PICT_PRIV(pPicture);
- int ret = Success;
-
- DMX_UNWRAP(CreatePicture, dmxScreen, ps);
-#if 1
- if (ps->CreatePicture)
- ret = ps->CreatePicture(pPicture);
-#endif
-
- /* Create picture on back-end server */
- pPictPriv->pict = dmxDoCreatePicture(pPicture);
- pPictPriv->savedMask = 0;
-
- DMX_WRAP(CreatePicture, dmxCreatePicture, dmxScreen, ps);
-
- return ret;
-}
-
-/** Destroy \a pPicture on the back-end server. */
-Bool dmxBEFreePicture(PicturePtr pPicture)
-{
- ScreenPtr pScreen = pPicture->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxPictPrivPtr pPictPriv = DMX_GET_PICT_PRIV(pPicture);
-
- if (pPictPriv->pict) {
- XRenderFreePicture(dmxScreen->beDisplay, pPictPriv->pict);
- pPictPriv->pict = (Picture)0;
- return TRUE;
- }
-
- return FALSE;
-}
-
-/** Destroy a list of pictures that are associated with the window that
- * is being destroyed. This function is called by #dmxDestroyWindow().
- * */
-Bool dmxDestroyPictureList(WindowPtr pWindow)
-{
- PicturePtr pPicture = GetPictureWindow(pWindow);
- Bool ret = FALSE;
-
- while (pPicture) {
- ret |= dmxBEFreePicture(pPicture);
- pPicture = pPicture->pNext;
- }
-
- return ret;
-}
-
-/** Destroy a picture. This function calls the wrapped function that
- * frees the resources in the DMX server associated with this
- * picture. */
-void dmxDestroyPicture(PicturePtr pPicture)
-{
- ScreenPtr pScreen = pPicture->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps = GetPictureScreen(pScreen);
-
- DMX_UNWRAP(DestroyPicture, dmxScreen, ps);
-
- /* Destroy picture on back-end server */
- if (dmxBEFreePicture(pPicture))
- dmxSync(dmxScreen, FALSE);
-
-#if 1
- if (ps->DestroyPicture)
- ps->DestroyPicture(pPicture);
-#endif
- DMX_WRAP(DestroyPicture, dmxDestroyPicture, dmxScreen, ps);
-}
-
-/** Change the picture's list of clip rectangles. */
-int dmxChangePictureClip(PicturePtr pPicture, int clipType,
- pointer value, int n)
-{
- ScreenPtr pScreen = pPicture->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- dmxPictPrivPtr pPictPriv = DMX_GET_PICT_PRIV(pPicture);
-
- DMX_UNWRAP(ChangePictureClip, dmxScreen, ps);
-#if 1
- if (ps->ChangePictureClip)
- ps->ChangePictureClip(pPicture, clipType, value, n);
-#endif
-
- /* Change picture clip rects on back-end server */
- if (pPictPriv->pict) {
- /* The clip has already been changed into a region by the mi
- * routine called above.
- */
- if (pPicture->clientClip) {
- RegionPtr pClip = pPicture->clientClip;
- BoxPtr pBox = REGION_RECTS(pClip);
- int nBox = REGION_NUM_RECTS(pClip);
- XRectangle *pRects;
- XRectangle *pRect;
- int nRects;
-
- nRects = nBox;
- pRects = pRect = xalloc(nRects * sizeof(*pRect));
-
- while (nBox--) {
- pRect->x = pBox->x1;
- pRect->y = pBox->y1;
- pRect->width = pBox->x2 - pBox->x1;
- pRect->height = pBox->y2 - pBox->y1;
- pBox++;
- pRect++;
- }
-
- XRenderSetPictureClipRectangles(dmxScreen->beDisplay,
- pPictPriv->pict,
- 0, 0,
- pRects,
- nRects);
- xfree(pRects);
- } else {
- XRenderSetPictureClipRectangles(dmxScreen->beDisplay,
- pPictPriv->pict,
- 0, 0, NULL, 0);
- }
- dmxSync(dmxScreen, FALSE);
- } else {
- /* FIXME: Handle saving clip region when offscreen */
- }
-
- DMX_WRAP(ChangePictureClip, dmxChangePictureClip, dmxScreen, ps);
-
- return Success;
-}
-
-/** Destroy the picture's list of clip rectangles. */
-void dmxDestroyPictureClip(PicturePtr pPicture)
-{
- ScreenPtr pScreen = pPicture->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- dmxPictPrivPtr pPictPriv = DMX_GET_PICT_PRIV(pPicture);
-
- DMX_UNWRAP(DestroyPictureClip, dmxScreen, ps);
-#if 1
- if (ps->DestroyPictureClip)
- ps->DestroyPictureClip(pPicture);
-#endif
-
- /* Destroy picture clip rects on back-end server */
- if (pPictPriv->pict) {
- XRenderSetPictureClipRectangles(dmxScreen->beDisplay,
- pPictPriv->pict,
- 0, 0, NULL, 0);
- dmxSync(dmxScreen, FALSE);
- } else {
- /* FIXME: Handle destroying clip region when offscreen */
- }
-
- DMX_WRAP(DestroyPictureClip, dmxDestroyPictureClip, dmxScreen, ps);
-}
-
-/** Change the attributes of the pictures. If the picture has not yet
- * been created due to lazy window creation, save the mask so that it
- * can be used to appropriately initialize the picture's attributes
- * when it is created later. */
-void dmxChangePicture(PicturePtr pPicture, Mask mask)
-{
- ScreenPtr pScreen = pPicture->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- dmxPictPrivPtr pPictPriv = DMX_GET_PICT_PRIV(pPicture);
-
- DMX_UNWRAP(ChangePicture, dmxScreen, ps);
-#if 1
- if (ps->ChangePicture)
- ps->ChangePicture(pPicture, mask);
-#endif
-
- /* Picture attribute changes are handled in ValidatePicture */
- pPictPriv->savedMask |= mask;
-
- DMX_WRAP(ChangePicture, dmxChangePicture, dmxScreen, ps);
-}
-
-/** Validate the picture's attributes before rendering to it. Update
- * any picture attributes that have been changed by one of the higher
- * layers. */
-void dmxValidatePicture(PicturePtr pPicture, Mask mask)
-{
- ScreenPtr pScreen = pPicture->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- dmxPictPrivPtr pPictPriv = DMX_GET_PICT_PRIV(pPicture);
-
- DMX_UNWRAP(ValidatePicture, dmxScreen, ps);
-
- /* Change picture attributes on back-end server */
- if (pPictPriv->pict) {
- XRenderPictureAttributes attribs;
-
- if (mask & CPRepeat) {
- attribs.repeat = pPicture->repeatType;
- }
- if (mask & CPAlphaMap) {
- if (pPicture->alphaMap) {
- dmxPictPrivPtr pAlphaPriv;
- pAlphaPriv = DMX_GET_PICT_PRIV(pPicture->alphaMap);
- if (pAlphaPriv->pict) {
- attribs.alpha_map = pAlphaPriv->pict;
- } else {
- /* FIXME: alpha picture drawable has not been created?? */
- return; /* or should this be: attribs.alpha_map = None; */
- }
- } else {
- attribs.alpha_map = None;
- }
- }
- if (mask & CPAlphaXOrigin)
- attribs.alpha_x_origin = pPicture->alphaOrigin.x;
- if (mask & CPAlphaYOrigin)
- attribs.alpha_y_origin = pPicture->alphaOrigin.y;
- if (mask & CPClipXOrigin)
- attribs.clip_x_origin = pPicture->clipOrigin.x;
- if (mask & CPClipYOrigin)
- attribs.clip_y_origin = pPicture->clipOrigin.y;
- if (mask & CPClipMask)
- mask &= ~CPClipMask; /* Handled in ChangePictureClip */
- if (mask & CPGraphicsExposure)
- attribs.graphics_exposures = pPicture->graphicsExposures;
- if (mask & CPSubwindowMode)
- attribs.subwindow_mode = pPicture->subWindowMode;
- if (mask & CPPolyEdge)
- attribs.poly_edge = pPicture->polyEdge;
- if (mask & CPPolyMode)
- attribs.poly_mode = pPicture->polyMode;
- if (mask & CPDither)
- attribs.dither = pPicture->dither;
- if (mask & CPComponentAlpha)
- attribs.component_alpha = pPicture->componentAlpha;
-
- XRenderChangePicture(dmxScreen->beDisplay, pPictPriv->pict,
- mask, &attribs);
- dmxSync(dmxScreen, FALSE);
- } else {
- pPictPriv->savedMask |= mask;
- }
-
-#if 1
- if (ps->ValidatePicture)
- ps->ValidatePicture(pPicture, mask);
-#endif
-
- DMX_WRAP(ValidatePicture, dmxValidatePicture, dmxScreen, ps);
-}
-
-/** Composite a picture on the appropriate screen by combining the
- * specified rectangle of the transformed src and mask operands with
- * the specified rectangle of the dst using op as the compositing
- * operator. For a complete description see the protocol document of
- * the RENDER library. */
-void dmxComposite(CARD8 op,
- PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
- INT16 xSrc, INT16 ySrc,
- INT16 xMask, INT16 yMask,
- INT16 xDst, INT16 yDst,
- CARD16 width, CARD16 height)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- dmxPictPrivPtr pSrcPriv = DMX_GET_PICT_PRIV(pSrc);
- dmxPictPrivPtr pMaskPriv = NULL;
- dmxPictPrivPtr pDstPriv = DMX_GET_PICT_PRIV(pDst);
-
- if (pMask) pMaskPriv = DMX_GET_PICT_PRIV(pMask);
-
- DMX_UNWRAP(Composite, dmxScreen, ps);
-#if 0
- if (ps->Composite)
- ps->Composite(op, pSrc, pMask, pDst,
- xSrc, ySrc, xMask, yMask, xDst, yDst,
- width, height);
-#endif
-
- /* Composite on back-end server */
- if (pSrcPriv->pict && pDstPriv->pict &&
- ((pMaskPriv && pMaskPriv->pict) || !pMaskPriv)) {
- XRenderComposite(dmxScreen->beDisplay,
- op,
- pSrcPriv->pict,
- pMaskPriv ? pMaskPriv->pict : None,
- pDstPriv->pict,
- xSrc, ySrc,
- xMask, yMask,
- xDst, yDst,
- width, height);
- dmxSync(dmxScreen, FALSE);
- }
-
-
- DMX_WRAP(Composite, dmxComposite, dmxScreen, ps);
-}
-
-/** Null function to catch when/if RENDER calls lower level mi hooks.
- * Compositing glyphs is handled by dmxProcRenderCompositeGlyphs().
- * This function should never be called. */
-void dmxGlyphs(CARD8 op,
- PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc,
- int nlists, GlyphListPtr lists, GlyphPtr *glyphs)
-{
- /* This won't work, so we need to wrap ProcRenderCompositeGlyphs */
-}
-
-/** Fill a rectangle on the appropriate screen by combining the color
- * with the dest picture in the area specified by the list of
- * rectangles. For a complete description see the protocol document of
- * the RENDER library. */
-void dmxCompositeRects(CARD8 op,
- PicturePtr pDst,
- xRenderColor *color,
- int nRect, xRectangle *rects)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- dmxPictPrivPtr pPictPriv = DMX_GET_PICT_PRIV(pDst);
-
- DMX_UNWRAP(CompositeRects, dmxScreen, ps);
-#if 0
- if (ps->CompositeRects)
- ps->CompositeRects(op, pDst, color, nRect, rects);
-#endif
-
- /* CompositeRects on back-end server */
- if (pPictPriv->pict) {
- XRenderFillRectangles(dmxScreen->beDisplay,
- op,
- pPictPriv->pict,
- (XRenderColor *)color,
- (XRectangle *)rects,
- nRect);
- dmxSync(dmxScreen, FALSE);
- }
-
- DMX_WRAP(CompositeRects, dmxCompositeRects, dmxScreen, ps);
-}
-
-/** Indexed color visuals are not yet supported. */
-Bool dmxInitIndexed(ScreenPtr pScreen, PictFormatPtr pFormat)
-{
- return TRUE;
-}
-
-/** Indexed color visuals are not yet supported. */
-void dmxCloseIndexed(ScreenPtr pScreen, PictFormatPtr pFormat)
-{
-}
-
-/** Indexed color visuals are not yet supported. */
-void dmxUpdateIndexed(ScreenPtr pScreen, PictFormatPtr pFormat,
- int ndef, xColorItem *pdef)
-{
-}
-
-/** Composite a list of trapezoids on the appropriate screen. For a
- * complete description see the protocol document of the RENDER
- * library. */
-void dmxTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc,
- int ntrap, xTrapezoid *traps)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- dmxPictPrivPtr pSrcPriv = DMX_GET_PICT_PRIV(pSrc);
- dmxPictPrivPtr pDstPriv = DMX_GET_PICT_PRIV(pDst);
-
- DMX_UNWRAP(Trapezoids, dmxScreen, ps);
-#if 0
- if (ps->Trapezoids)
- ps->Trapezoids(op, pSrc, pDst, maskFormat, xSrc, ySrc, ntrap, *traps);
-#endif
-
- /* Draw trapezoids on back-end server */
- if (pDstPriv->pict) {
- XRenderPictFormat *pFormat;
-
- pFormat = dmxFindFormat(dmxScreen, maskFormat);
- if (!pFormat) {
- /* FIXME: Error! */
- }
-
- XRenderCompositeTrapezoids(dmxScreen->beDisplay,
- op,
- pSrcPriv->pict,
- pDstPriv->pict,
- pFormat,
- xSrc, ySrc,
- (XTrapezoid *)traps,
- ntrap);
- dmxSync(dmxScreen, FALSE);
- }
-
- DMX_WRAP(Trapezoids, dmxTrapezoids, dmxScreen, ps);
-}
-
-/** Composite a list of triangles on the appropriate screen. For a
- * complete description see the protocol document of the RENDER
- * library. */
-void dmxTriangles(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc,
- int ntri, xTriangle *tris)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- dmxPictPrivPtr pSrcPriv = DMX_GET_PICT_PRIV(pSrc);
- dmxPictPrivPtr pDstPriv = DMX_GET_PICT_PRIV(pDst);
-
- DMX_UNWRAP(Triangles, dmxScreen, ps);
-#if 0
- if (ps->Triangles)
- ps->Triangles(op, pSrc, pDst, maskFormat, xSrc, ySrc, ntri, *tris);
-#endif
-
- /* Draw trapezoids on back-end server */
- if (pDstPriv->pict) {
- XRenderPictFormat *pFormat;
-
- pFormat = dmxFindFormat(dmxScreen, maskFormat);
- if (!pFormat) {
- /* FIXME: Error! */
- }
-
- XRenderCompositeTriangles(dmxScreen->beDisplay,
- op,
- pSrcPriv->pict,
- pDstPriv->pict,
- pFormat,
- xSrc, ySrc,
- (XTriangle *)tris,
- ntri);
- dmxSync(dmxScreen, FALSE);
- }
-
- DMX_WRAP(Triangles, dmxTriangles, dmxScreen, ps);
-}
-
-/** Composite a triangle strip on the appropriate screen. For a
- * complete description see the protocol document of the RENDER
- * library. */
-void dmxTriStrip(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc,
- int npoint, xPointFixed *points)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- dmxPictPrivPtr pSrcPriv = DMX_GET_PICT_PRIV(pSrc);
- dmxPictPrivPtr pDstPriv = DMX_GET_PICT_PRIV(pDst);
-
- DMX_UNWRAP(TriStrip, dmxScreen, ps);
-#if 0
- if (ps->TriStrip)
- ps->TriStrip(op, pSrc, pDst, maskFormat, xSrc, ySrc, npoint, *points);
-#endif
-
- /* Draw trapezoids on back-end server */
- if (pDstPriv->pict) {
- XRenderPictFormat *pFormat;
-
- pFormat = dmxFindFormat(dmxScreen, maskFormat);
- if (!pFormat) {
- /* FIXME: Error! */
- }
-
- XRenderCompositeTriStrip(dmxScreen->beDisplay,
- op,
- pSrcPriv->pict,
- pDstPriv->pict,
- pFormat,
- xSrc, ySrc,
- (XPointFixed *)points,
- npoint);
- dmxSync(dmxScreen, FALSE);
- }
-
- DMX_WRAP(TriStrip, dmxTriStrip, dmxScreen, ps);
-}
-
-/** Composite a triangle fan on the appropriate screen. For a complete
- * description see the protocol document of the RENDER library. */
-void dmxTriFan(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc,
- int npoint, xPointFixed *points)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- dmxPictPrivPtr pSrcPriv = DMX_GET_PICT_PRIV(pSrc);
- dmxPictPrivPtr pDstPriv = DMX_GET_PICT_PRIV(pDst);
-
- DMX_UNWRAP(TriFan, dmxScreen, ps);
-#if 0
- if (ps->TriFan)
- ps->TriFan(op, pSrc, pDst, maskFormat, xSrc, ySrc, npoint, *points);
-#endif
-
- /* Draw trapezoids on back-end server */
- if (pDstPriv->pict) {
- XRenderPictFormat *pFormat;
-
- pFormat = dmxFindFormat(dmxScreen, maskFormat);
- if (!pFormat) {
- /* FIXME: Error! */
- }
-
- XRenderCompositeTriFan(dmxScreen->beDisplay,
- op,
- pSrcPriv->pict,
- pDstPriv->pict,
- pFormat,
- xSrc, ySrc,
- (XPointFixed *)points,
- npoint);
- dmxSync(dmxScreen, FALSE);
- }
-
- DMX_WRAP(TriFan, dmxTriFan, dmxScreen, ps);
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxpict.h b/nx-X11/programs/Xserver/hw/dmx/dmxpict.h
deleted file mode 100644
index 2ca04ed87..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxpict.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * This file provides access to the externally visible RENDER support
- * functions, global variables and macros for DMX.
- *
- * FIXME: Move function definitions for non-externally visible function
- * to .c file. */
-
-#ifndef DMXPICT_H
-#define DMXPICT_H
-
-/** Picture private structure */
-typedef struct _dmxPictPriv {
- Picture pict; /**< Picture ID from back-end server */
- Mask savedMask; /**< Mask of picture attributes saved for
- * lazy window creation. */
-} dmxPictPrivRec, *dmxPictPrivPtr;
-
-
-/** Glyph Set private structure */
-typedef struct _dmxGlyphPriv {
- GlyphSet *glyphSets; /**< Glyph Set IDs from back-end server */
-} dmxGlyphPrivRec, *dmxGlyphPrivPtr;
-
-
-extern void dmxInitRender(void);
-extern void dmxResetRender(void);
-
-extern Bool dmxPictureInit(ScreenPtr pScreen,
- PictFormatPtr formats, int nformats);
-
-extern void dmxCreatePictureList(WindowPtr pWindow);
-extern Bool dmxDestroyPictureList(WindowPtr pWindow);
-
-extern int dmxCreatePicture(PicturePtr pPicture);
-extern void dmxDestroyPicture(PicturePtr pPicture);
-extern int dmxChangePictureClip(PicturePtr pPicture, int clipType,
- pointer value, int n);
-extern void dmxDestroyPictureClip(PicturePtr pPicture);
-extern void dmxChangePicture(PicturePtr pPicture, Mask mask);
-extern void dmxValidatePicture(PicturePtr pPicture, Mask mask);
-extern void dmxComposite(CARD8 op,
- PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
- INT16 xSrc, INT16 ySrc,
- INT16 xMask, INT16 yMask,
- INT16 xDst, INT16 yDst,
- CARD16 width, CARD16 height);
-extern void dmxGlyphs(CARD8 op,
- PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc,
- int nlists, GlyphListPtr lists, GlyphPtr *glyphs);
-extern void dmxCompositeRects(CARD8 op,
- PicturePtr pDst,
- xRenderColor *color,
- int nRect, xRectangle *rects);
-extern Bool dmxInitIndexed(ScreenPtr pScreen, PictFormatPtr pFormat);
-extern void dmxCloseIndexed(ScreenPtr pScreen, PictFormatPtr pFormat);
-extern void dmxUpdateIndexed(ScreenPtr pScreen, PictFormatPtr pFormat,
- int ndef, xColorItem *pdef);
-extern void dmxTrapezoids(CARD8 op,
- PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc,
- int ntrap, xTrapezoid *traps);
-extern void dmxTriangles(CARD8 op,
- PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc,
- int ntri, xTriangle *tris);
-extern void dmxTriStrip(CARD8 op,
- PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc,
- int npoint, xPointFixed *points);
-extern void dmxTriFan(CARD8 op,
- PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc,
- int npoint, xPointFixed *points);
-
-extern Bool dmxBEFreeGlyphSet(ScreenPtr pScreen, GlyphSetPtr glyphSet);
-extern Bool dmxBEFreePicture(PicturePtr pPicture);
-
-extern int dmxPictPrivateIndex; /**< Index for picture private data */
-extern int dmxGlyphSetPrivateIndex; /**< Index for glyphset private data */
-
-
-/** Get the picture private data given a picture pointer */
-#define DMX_GET_PICT_PRIV(_pPict) \
- (dmxPictPrivPtr)(_pPict)->devPrivates[dmxPictPrivateIndex].ptr
-
-/** Set the glyphset private data given a glyphset pointer */
-#define DMX_SET_GLYPH_PRIV(_pGlyph, _pPriv) \
- GlyphSetSetPrivate((_pGlyph), dmxGlyphSetPrivateIndex, (_pPriv))
-/** Get the glyphset private data given a glyphset pointer */
-#define DMX_GET_GLYPH_PRIV(_pGlyph) \
- (dmxGlyphPrivPtr)GlyphSetGetPrivate((_pGlyph), dmxGlyphSetPrivateIndex)
-
-#endif /* DMXPICT_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxpixmap.c b/nx-X11/programs/Xserver/hw/dmx/dmxpixmap.c
deleted file mode 100644
index e95ddd72e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxpixmap.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * Provides pixmap support. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxsync.h"
-#include "dmxpixmap.h"
-
-#include "pixmapstr.h"
-#include "servermd.h"
-
-/** Initialize a private area in \a pScreen for pixmap information. */
-Bool dmxInitPixmap(ScreenPtr pScreen)
-{
-#ifdef PIXPRIV
- if (!AllocatePixmapPrivate(pScreen, dmxPixPrivateIndex,
- sizeof(dmxPixPrivRec)))
- return FALSE;
-
- return TRUE;
-#else
-#error Must define PIXPRIV to compile DMX X server
-#endif
-}
-
-/** Create a pixmap on the back-end server. */
-void dmxBECreatePixmap(PixmapPtr pPixmap)
-{
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxPixPrivPtr pPixPriv = DMX_GET_PIXMAP_PRIV(pPixmap);
-
- /* Make sure we haven't already created this pixmap. This can
- * happen when the pixmap is used elsewhere (e.g., as a background
- * or border for a window) and the refcnt > 1.
- */
- if (pPixPriv->pixmap)
- return;
-
- if (pPixmap->drawable.width && pPixmap->drawable.height) {
- pPixPriv->pixmap = XCreatePixmap(dmxScreen->beDisplay,
- dmxScreen->scrnWin,
- pPixmap->drawable.width,
- pPixmap->drawable.height,
- pPixmap->drawable.depth);
- dmxSync(dmxScreen, FALSE);
- }
-}
-
-/** Create a pixmap for \a pScreen with the specified \a width, \a
- * height, and \a depth. */
-PixmapPtr dmxCreatePixmap(ScreenPtr pScreen, int width, int height, int depth)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- PixmapPtr pPixmap;
- int bpp;
- dmxPixPrivPtr pPixPriv;
-
-#if 0
- DMX_UNWRAP(CreatePixmap, dmxScreen, pScreen);
- if (pScreen->CreatePixmap)
- ret = pScreen->CreatePixmap(pPixmap);
-#endif
-
- /* Create pixmap on back-end server */
- if (depth == 24) bpp = 32;
- else bpp = depth;
-
- pPixmap = AllocatePixmap(pScreen, 0);
- if (!pPixmap)
- return NullPixmap;
-
- pPixmap->drawable.type = DRAWABLE_PIXMAP;
- pPixmap->drawable.class = 0;
- pPixmap->drawable.pScreen = pScreen;
- pPixmap->drawable.depth = depth;
- pPixmap->drawable.bitsPerPixel = bpp;
- pPixmap->drawable.id = 0;
- pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- pPixmap->drawable.x = 0;
- pPixmap->drawable.y = 0;
- pPixmap->drawable.width = width;
- pPixmap->drawable.height = height;
- pPixmap->devKind = PixmapBytePad(width, bpp);
- pPixmap->refcnt = 1;
-
- pPixPriv = DMX_GET_PIXMAP_PRIV(pPixmap);
- pPixPriv->pixmap = (Pixmap)0;
- pPixPriv->detachedImage = NULL;
-
- /* Create the pixmap on the back-end server */
- if (dmxScreen->beDisplay) {
- dmxBECreatePixmap(pPixmap);
- }
-
-#if 0
- DMX_WRAP(CreatePixmap, dmxCreatePixmap, dmxScreen, pScreen);
-#endif
-
- return pPixmap;
-}
-
-/** Destroy the pixmap on the back-end server. */
-Bool dmxBEFreePixmap(PixmapPtr pPixmap)
-{
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxPixPrivPtr pPixPriv = DMX_GET_PIXMAP_PRIV(pPixmap);
-
- if (pPixPriv->pixmap) {
- XFreePixmap(dmxScreen->beDisplay, pPixPriv->pixmap);
- pPixPriv->pixmap = (Pixmap)0;
- return TRUE;
- }
-
- return FALSE;
-}
-
-/** Destroy the pixmap pointed to by \a pPixmap. */
-Bool dmxDestroyPixmap(PixmapPtr pPixmap)
-{
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- Bool ret = TRUE;
-
-#if 0
- DMX_UNWRAP(DestroyPixmap, dmxScreen, pScreen);
-#endif
-
- if (--pPixmap->refcnt)
- return TRUE;
-
- /* Destroy pixmap on back-end server */
- if (dmxScreen->beDisplay) {
- if (dmxBEFreePixmap(pPixmap)) {
- /* Also make sure that we destroy any detached image */
- dmxPixPrivPtr pPixPriv = DMX_GET_PIXMAP_PRIV(pPixmap);
- if (pPixPriv->detachedImage)
- XDestroyImage(pPixPriv->detachedImage);
- dmxSync(dmxScreen, FALSE);
- }
- }
- xfree(pPixmap);
-
-#if 0
- if (pScreen->DestroyPixmap)
- ret = pScreen->DestroyPixmap(pPixmap);
- DMX_WRAP(DestroyPixmap, dmxDestroyPixmap, dmxScreen, pScreen);
-#endif
-
- return ret;
-}
-
-/** Create and return a region based on the pixmap pointed to by \a
- * pPixmap. */
-RegionPtr dmxBitmapToRegion(PixmapPtr pPixmap)
-{
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxPixPrivPtr pPixPriv = DMX_GET_PIXMAP_PRIV(pPixmap);
- XImage *ximage;
- RegionPtr pReg, pTmpReg;
- int x, y;
- unsigned long previousPixel, currentPixel;
- BoxRec Box;
- Bool overlap;
-
- if (!dmxScreen->beDisplay) {
- pReg = REGION_CREATE(pScreen, NullBox, 1);
- return pReg;
- }
-
- ximage = XGetImage(dmxScreen->beDisplay, pPixPriv->pixmap, 0, 0,
- pPixmap->drawable.width, pPixmap->drawable.height,
- 1, XYPixmap);
-
- pReg = REGION_CREATE(pScreen, NullBox, 1);
- pTmpReg = REGION_CREATE(pScreen, NullBox, 1);
- if(!pReg || !pTmpReg) return NullRegion;
-
- for (y = 0; y < pPixmap->drawable.height; y++) {
- Box.y1 = y;
- Box.y2 = y + 1;
- previousPixel = 0L;
- for (x = 0; x < pPixmap->drawable.width; x++) {
- currentPixel = XGetPixel(ximage, x, y);
- if (previousPixel != currentPixel) {
- if (previousPixel == 0L) {
- /* left edge */
- Box.x1 = x;
- } else if (currentPixel == 0L) {
- /* right edge */
- Box.x2 = x;
- REGION_RESET(pScreen, pTmpReg, &Box);
- REGION_APPEND(pScreen, pReg, pTmpReg);
- }
- previousPixel = currentPixel;
- }
- }
- if (previousPixel != 0L) {
- /* right edge because of the end of pixmap */
- Box.x2 = pPixmap->drawable.width;
- REGION_RESET(pScreen, pTmpReg, &Box);
- REGION_APPEND(pScreen, pReg, pTmpReg);
- }
- }
-
- REGION_DESTROY(pScreen, pTmpReg);
- XDestroyImage(ximage);
-
- REGION_VALIDATE(pScreen, pReg, &overlap);
-
- dmxSync(dmxScreen, FALSE);
- return(pReg);
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxpixmap.h b/nx-X11/programs/Xserver/hw/dmx/dmxpixmap.h
deleted file mode 100644
index 908d2cb2c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxpixmap.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * Interface for pixmap support. \see dmxpixmap.c */
-
-#ifndef DMXPIXMAP_H
-#define DMXPIXMAP_H
-
-#include "pixmapstr.h"
-
-/** Pixmap private area. */
-typedef struct _dmxPixPriv {
- Pixmap pixmap;
- XImage *detachedImage;
-} dmxPixPrivRec, *dmxPixPrivPtr;
-
-
-extern Bool dmxInitPixmap(ScreenPtr pScreen);
-
-extern PixmapPtr dmxCreatePixmap(ScreenPtr pScreen,
- int width, int height, int depth);
-extern Bool dmxDestroyPixmap(PixmapPtr pPixmap);
-extern RegionPtr dmxBitmapToRegion(PixmapPtr pPixmap);
-
-extern void dmxBECreatePixmap(PixmapPtr pPixmap);
-extern Bool dmxBEFreePixmap(PixmapPtr pPixmap);
-
-/** Private index. \see dmxpicmap.h \see dmxscrinit.c */
-extern int dmxPixPrivateIndex;
-
-/** Get pixmap private pointer. */
-#define DMX_GET_PIXMAP_PRIV(_pPix) \
- (dmxPixPrivPtr)(_pPix)->devPrivates[dmxPixPrivateIndex].ptr
-
-#endif /* DMXPIXMAP_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxprop.c b/nx-X11/programs/Xserver/hw/dmx/dmxprop.c
deleted file mode 100644
index 8d9e22a27..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxprop.c
+++ /dev/null
@@ -1,348 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * It is possible for one of the DMX "backend displays" to actually be
- * smaller than the dimensions of the backend X server. Therefore, it
- * is possible for more than one of the DMX "backend displays" to be
- * physically located on the same backend X server. This situation must
- * be detected so that cursor motion can be handled in an expected
- * fashion.
- *
- * We could analyze the names used for the DMX "backend displays" (e.g.,
- * the names passed to the -display command-line parameter), but there
- * are many possible names for a single X display, and failing to detect
- * sameness leads to very unexpected results. Therefore, whenever the
- * DMX server opens a window on a backend X server, a property value is
- * queried and set on that backend to detect when another window is
- * already open on that server.
- *
- * Further, it is possible that two different DMX server instantiations
- * both have windows on the same physical backend X server. This case
- * is also detected so that pointer input is not taken from that
- * particular backend X server.
- *
- * The routines in this file handle the property management. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxprop.h"
-#include "dmxlog.h"
-
-/** Holds the window id of all DMX windows on the backend X server. */
-#define DMX_ATOMNAME "DMX_NAME"
-
-/** The identification string of this DMX server */
-#define DMX_IDENT "Xdmx"
-
-extern char *display;
-
-static int dmxPropertyErrorHandler(Display *dpy, XErrorEvent *ev)
-{
- return 0;
-}
-
-static const unsigned char *dmxPropertyIdentifier(void)
-{
- /* RATS: These buffers are only used in
- * length-limited calls. */
- char hostname[256];
- static char buf[128];
- static int initialized = 0;
-
- if (initialized++) return (unsigned char *)buf;
-
- XmuGetHostname(hostname, sizeof(hostname));
- XmuSnprintf(buf, sizeof(buf), "%s:%s:%s", DMX_IDENT, hostname, display);
- return (unsigned char *)buf;
-}
-
-/** Starting with the \a start screen, iterate over all of the screens
- * on the same physical X server as \a start, calling \a f with the
- * screen and the \a closure. (The common case is that \a start is the
- * only DMX window on the backend X server.) */
-void *dmxPropertyIterate(DMXScreenInfo *start,
- void *(*f)(DMXScreenInfo *dmxScreen, void *),
- void *closure)
-{
- DMXScreenInfo *pt;
-
- if (!start->next) {
- if (!start->beDisplay) return NULL;
- return f(start, closure);
- }
-
- for (pt = start->next; /* condition at end of loop */; pt = pt->next) {
- void *retval;
- /* beDisplay ban be NULL if a screen was detached */
- dmxLog(dmxDebug, "pt = %p\n", pt);
- dmxLog(dmxDebug, "pt->beDisplay = %p\n", pt->beDisplay);
- if (pt->beDisplay && (retval = f(pt, closure))) return retval;
- if (pt == start) break;
- }
- return NULL;
-}
-
-/** Returns 0 if this is the only Xdmx session on the display; 1
- * otherwise. */
-static int dmxPropertyCheckOtherServers(DMXScreenInfo *dmxScreen, Atom atom)
-{
- Display *dpy = dmxScreen->beDisplay;
- XTextProperty tp;
- XTextProperty tproot;
- const char *pt;
- int retcode = 0;
- char **list = NULL;
- int count = 0;
- int i;
- int (*dmxOldHandler)(Display *, XErrorEvent *);
-
- if (!dpy)
- return 0;
-
- if (!XGetTextProperty(dpy, RootWindow(dpy,0), &tproot, atom)
- || !tproot.nitems) return 0;
-
- /* Ignore BadWindow errors for this
- * routine because the window id stored
- * in the property might be old */
- dmxOldHandler = XSetErrorHandler(dmxPropertyErrorHandler);
- for (pt = (const char *)tproot.value; pt && *pt; pt = pt ? pt + 1 : NULL) {
- if ((pt = strchr(pt, ','))) {
- Window win = strtol(pt+1, NULL, 10);
- if (XGetTextProperty(dpy, win, &tp, atom) && tp.nitems) {
- if (!strncmp((char *)tp.value, DMX_IDENT, strlen(DMX_IDENT))) {
- int flag = 0;
- for (i = 0; i < count; i++)
- if (!strcmp(list[i], (char *)tp.value)) {
- ++flag;
- break;
- }
- if (flag) continue;
- ++retcode;
- dmxLogOutputWarning(dmxScreen,
- "%s also running on %s\n",
- tp.value, dmxScreen->name);
- list = xrealloc(list, ++count * sizeof(*list));
- list[count-1] = xalloc(tp.nitems + 2);
- strncpy(list[count-1], (char *)tp.value, tp.nitems + 1);
- }
- XFree(tp.value);
- }
- }
- }
- XSetErrorHandler(dmxOldHandler);
-
- for (i = 0; i < count; i++) xfree(list[i]);
- xfree(list);
- XFree(tproot.value);
- if (!retcode)
- dmxLogOutput(dmxScreen, "No Xdmx server running on backend\n");
- return retcode;
-}
-
-/** Returns NULL if this is the only Xdmx window on the display.
- * Otherwise, returns a pointer to the dmxScreen of the other windows on
- * the display. */
-static DMXScreenInfo *dmxPropertyCheckOtherWindows(DMXScreenInfo *dmxScreen,
- Atom atom)
-{
- Display *dpy = dmxScreen->beDisplay;
- const unsigned char *id = dmxPropertyIdentifier();
- XTextProperty tproot;
- XTextProperty tp;
- const char *pt;
- int (*dmxOldHandler)(Display *, XErrorEvent *);
-
- if (!dpy)
- return NULL;
-
- if (!XGetTextProperty(dpy, RootWindow(dpy,0), &tproot, atom)
- || !tproot.nitems) return 0;
-
- /* Ignore BadWindow errors for this
- * routine because the window id stored
- * in the property might be old */
- dmxOldHandler = XSetErrorHandler(dmxPropertyErrorHandler);
- for (pt = (const char *)tproot.value; pt && *pt; pt = pt ? pt + 1 : NULL) {
- if ((pt = strchr(pt, ','))) {
- Window win = strtol(pt+1, NULL, 10);
- if (XGetTextProperty(dpy, win, &tp, atom) && tp.nitems) {
- dmxLog(dmxDebug,"On %s/%lu: %s\n",
- dmxScreen->name, win, tp.value);
- if (!strncmp((char *)tp.value, (char *)id,
- strlen((char *)id))) {
- int idx;
-
- if (!(pt = strchr((char *)tp.value, ','))) continue;
- idx = strtol(pt+1, NULL, 10);
- if (idx < 0 || idx >= dmxNumScreens) continue;
- if (dmxScreens[idx].scrnWin != win) continue;
- XSetErrorHandler(dmxOldHandler);
- return &dmxScreens[idx];
- }
- XFree(tp.value);
- }
- }
- }
- XSetErrorHandler(dmxOldHandler);
- XFree(tproot.value);
- return 0;
-}
-
-/** Returns 0 if this is the only Xdmx session on the display; 1
- * otherwise. */
-int dmxPropertyDisplay(DMXScreenInfo *dmxScreen)
-{
- Atom atom;
- const unsigned char *id = dmxPropertyIdentifier();
- Display *dpy = dmxScreen->beDisplay;
-
- if (!dpy)
- return 0;
-
- atom = XInternAtom(dpy, DMX_ATOMNAME, False);
- if (dmxPropertyCheckOtherServers(dmxScreen, atom)) {
- dmxScreen->shared = 1;
- return 1;
- }
- XChangeProperty(dpy, RootWindow(dpy,0), atom, XA_STRING, 8,
- PropModeReplace, id, strlen((char *)id));
- return 0;
-}
-
-/** Returns 1 if the dmxScreen and the display in \a name are on the
- * same display, or 0 otherwise. We can't just compare the display
- * names because there can be multiple synonyms for the same display,
- * some of which cannot be determined without accessing the display
- * itself (e.g., domain aliases or machines with multiple NICs). */
-int dmxPropertySameDisplay(DMXScreenInfo *dmxScreen, const char *name)
-{
- Display *dpy0 = dmxScreen->beDisplay;
- Atom atom0;
- XTextProperty tp0;
- Display *dpy1 = NULL;
- Atom atom1;
- XTextProperty tp1;
- int retval = 0;
-
- if (!dpy0)
- return 0;
-
- tp0.nitems = 0;
- tp1.nitems = 0;
-
- if ((atom0 = XInternAtom(dpy0, DMX_ATOMNAME, True)) == None) {
- dmxLog(dmxWarning, "No atom on %s\n", dmxScreen->name);
- return 0;
- }
- if (!XGetTextProperty(dpy0, RootWindow(dpy0,0), &tp0, atom0)
- || !tp0.nitems) {
- dmxLog(dmxWarning, "No text property on %s\n", dmxScreen->name);
- return 0;
- }
-
- if (!(dpy1 = XOpenDisplay(name))) {
- dmxLog(dmxWarning, "Cannot open %s\n", name);
- goto cleanup;
- }
- atom1 = XInternAtom(dpy1, DMX_ATOMNAME, True);
- if (atom1 == None) {
- dmxLog(dmxDebug, "No atom on %s\n", name);
- goto cleanup;
- }
- if (!XGetTextProperty(dpy1, RootWindow(dpy1,0), &tp1, atom1)
- || !tp1.nitems) {
- dmxLog(dmxDebug, "No text property on %s\n", name);
- goto cleanup;
- }
- if (!strcmp((char *)tp0.value, (char *)tp1.value)) retval = 1;
-
- cleanup:
- if (tp0.nitems) XFree(tp0.value);
- if (tp1.nitems) XFree(tp1.value);
- if (dpy1) XCloseDisplay(dpy1);
- return retval;
-}
-
-/** Prints a log message if \a dmxScreen is on the same backend X server
- * as some other DMX backend (output) screen. Modifies the property
- * (#DMX_ATOMNAME) on the backend X server to reflect the creation of \a
- * dmxScreen.
- *
- * The root window of the backend X server holds a list of window ids
- * for all DMX windows (on this DMX server or some other DMX server).
- *
- * This list can then be iterated, and the property for each window can
- * be examined. This property contains the following tuple (no quotes):
- *
- * "#DMX_IDENT:<hostname running DMX>:<display name of DMX>,<screen number>"
- */
-void dmxPropertyWindow(DMXScreenInfo *dmxScreen)
-{
- Atom atom;
- const unsigned char *id = dmxPropertyIdentifier();
- Display *dpy = dmxScreen->beDisplay;
- Window win = dmxScreen->scrnWin;
- DMXScreenInfo *other;
- char buf[128]; /* RATS: only used with XmuSnprintf */
-
- if (!dpy)
- return; /* FIXME: What should be done here if Xdmx is started
- * with this screen initially detached?
- */
-
- atom = XInternAtom(dpy, DMX_ATOMNAME, False);
- if ((other = dmxPropertyCheckOtherWindows(dmxScreen, atom))) {
- DMXScreenInfo *tmp = dmxScreen->next;
- dmxScreen->next = (other->next ? other->next : other);
- other->next = (tmp ? tmp : dmxScreen);
- dmxLog(dmxDebug, "%d/%s/%lu and %d/%s/%lu are on the same backend\n",
- dmxScreen->index, dmxScreen->name, dmxScreen->scrnWin,
- other->index, other->name, other->scrnWin);
- }
-
- XmuSnprintf(buf, sizeof(buf), ".%d,%lu", dmxScreen->index,
- (long unsigned)win);
- XChangeProperty(dpy, RootWindow(dpy,0), atom, XA_STRING, 8,
- PropModeAppend, (unsigned char *)buf, strlen(buf));
-
- XmuSnprintf(buf, sizeof(buf), "%s,%d", id, dmxScreen->index);
- XChangeProperty(dpy, win, atom, XA_STRING, 8,
- PropModeAppend, (unsigned char *)buf, strlen(buf));
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxprop.h b/nx-X11/programs/Xserver/hw/dmx/dmxprop.h
deleted file mode 100644
index f0c5afb95..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxprop.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface for property support. \see dmxprop.c */
-
-#ifndef _DMXPROP_H_
-#define _DMXPROP_H_
-extern int dmxPropertyDisplay(DMXScreenInfo *dmxScreen);
-extern void dmxPropertyWindow(DMXScreenInfo *dmxScreen);
-extern void *dmxPropertyIterate(DMXScreenInfo *start,
- void *(*f)(DMXScreenInfo *dmxScreen,
- void *closure),
- void *closure);
-extern int dmxPropertySameDisplay(DMXScreenInfo *dmxScreen, const char *name);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxscrinit.c b/nx-X11/programs/Xserver/hw/dmx/dmxscrinit.c
deleted file mode 100644
index 5bfb4df0a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxscrinit.c
+++ /dev/null
@@ -1,566 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- * David H. Dawes <dawes@xfree86.org>
- *
- */
-
-/** \file
- * This file provides support for screen initialization. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxsync.h"
-#include "dmxshadow.h"
-#include "dmxscrinit.h"
-#include "dmxcursor.h"
-#include "dmxgc.h"
-#include "dmxgcops.h"
-#include "dmxwindow.h"
-#include "dmxpixmap.h"
-#include "dmxfont.h"
-#include "dmxcmap.h"
-#include "dmxprop.h"
-#include "dmxdpms.h"
-
-#ifdef RENDER
-#include "dmxpict.h"
-#endif
-
-#include "fb.h"
-#include "mipointer.h"
-#include "micmap.h"
-
-extern Bool dmxCloseScreen(int idx, ScreenPtr pScreen);
-static Bool dmxSaveScreen(ScreenPtr pScreen, int what);
-
-static unsigned long dmxGeneration;
-static unsigned long *dmxCursorGeneration;
-
-int dmxGCPrivateIndex; /**< Private index for GCs */
-int dmxWinPrivateIndex; /**< Private index for Windows */
-#ifdef PIXPRIV
-int dmxPixPrivateIndex; /**< Private index for Pixmaps */
-#endif
-int dmxFontPrivateIndex; /**< Private index for Fonts */
-int dmxScreenPrivateIndex; /**< Private index for Screens */
-int dmxColormapPrivateIndex; /**< Private index for Colormaps */
-#ifdef RENDER
-int dmxPictPrivateIndex; /**< Private index for Picts */
-int dmxGlyphSetPrivateIndex; /**< Private index for GlyphSets */
-#endif
-
-/** Initialize the parts of screen \a idx that require access to the
- * back-end server. */
-void dmxBEScreenInit(int idx, ScreenPtr pScreen)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
- XSetWindowAttributes attribs;
- XGCValues gcvals;
- unsigned long mask;
- int i, j;
-
- /* FIXME: The dmxScreenInit() code currently assumes that it will
- * not be called if the Xdmx server is started with this screen
- * detached -- i.e., it assumes that dmxScreen->beDisplay is always
- * valid. This is not necessarily a valid assumption when full
- * addition/removal of screens is implemented, but when this code is
- * broken out for screen reattachment, then we will reevaluate this
- * assumption.
- */
-
- pScreen->mmWidth = DisplayWidthMM(dmxScreen->beDisplay,
- DefaultScreen(dmxScreen->beDisplay));
- pScreen->mmHeight = DisplayHeightMM(dmxScreen->beDisplay,
- DefaultScreen(dmxScreen->beDisplay));
-
- pScreen->whitePixel = dmxScreen->beWhitePixel;
- pScreen->blackPixel = dmxScreen->beBlackPixel;
-
- /* Handle screen savers and DPMS on the backend */
- dmxDPMSInit(dmxScreen);
-
- /* Create root window for screen */
- mask = CWBackPixel | CWEventMask | CWColormap | CWOverrideRedirect;
- attribs.background_pixel = dmxScreen->beBlackPixel;
- attribs.event_mask = (KeyPressMask
- | KeyReleaseMask
- | ButtonPressMask
- | ButtonReleaseMask
- | EnterWindowMask
- | LeaveWindowMask
- | PointerMotionMask
- | KeymapStateMask
- | FocusChangeMask);
- attribs.colormap = dmxScreen->beDefColormaps[dmxScreen->beDefVisualIndex];
- attribs.override_redirect = True;
-
- dmxScreen->scrnWin =
- XCreateWindow(dmxScreen->beDisplay,
- DefaultRootWindow(dmxScreen->beDisplay),
- dmxScreen->scrnX,
- dmxScreen->scrnY,
- dmxScreen->scrnWidth,
- dmxScreen->scrnHeight,
- 0,
- pScreen->rootDepth,
- InputOutput,
- dmxScreen->beVisuals[dmxScreen->beDefVisualIndex].visual,
- mask,
- &attribs);
- dmxPropertyWindow(dmxScreen);
-
- /*
- * This turns off the cursor by defining a cursor with no visible
- * components.
- */
- {
- char noCursorData[] = {0, 0, 0, 0,
- 0, 0, 0, 0};
- Pixmap pixmap;
- XColor color, tmp;
-
- pixmap = XCreateBitmapFromData(dmxScreen->beDisplay, dmxScreen->scrnWin,
- noCursorData, 8, 8);
- XAllocNamedColor(dmxScreen->beDisplay, dmxScreen->beDefColormaps[0],
- "black", &color, &tmp);
- dmxScreen->noCursor = XCreatePixmapCursor(dmxScreen->beDisplay,
- pixmap, pixmap,
- &color, &color, 0, 0);
- XDefineCursor(dmxScreen->beDisplay, dmxScreen->scrnWin,
- dmxScreen->noCursor);
-
- XFreePixmap(dmxScreen->beDisplay, pixmap);
- }
-
- XMapWindow(dmxScreen->beDisplay, dmxScreen->scrnWin);
-
- if (dmxShadowFB) {
- mask = (GCFunction
- | GCPlaneMask
- | GCClipMask);
- gcvals.function = GXcopy;
- gcvals.plane_mask = AllPlanes;
- gcvals.clip_mask = None;
-
- dmxScreen->shadowGC = XCreateGC(dmxScreen->beDisplay,
- dmxScreen->scrnWin,
- mask, &gcvals);
-
- dmxScreen->shadowFBImage =
- XCreateImage(dmxScreen->beDisplay,
- dmxScreen->beVisuals[dmxScreen->beDefVisualIndex].visual,
- dmxScreen->beDepth,
- ZPixmap,
- 0,
- (char *)dmxScreen->shadow,
- dmxScreen->scrnWidth, dmxScreen->scrnHeight,
- dmxScreen->beBPP,
- PixmapBytePad(dmxScreen->scrnWidth,
- dmxScreen->beBPP));
- } else {
- /* Create default drawables (used during GC creation) */
- for (i = 0; i < dmxScreen->beNumPixmapFormats; i++)
- for (j = 0; j < dmxScreen->beNumDepths; j++)
- if ((dmxScreen->bePixmapFormats[i].depth == 1) ||
- (dmxScreen->bePixmapFormats[i].depth ==
- dmxScreen->beDepths[j])) {
- dmxScreen->scrnDefDrawables[i] = (Drawable)
- XCreatePixmap(dmxScreen->beDisplay, dmxScreen->scrnWin,
- 1, 1, dmxScreen->bePixmapFormats[i].depth);
- break;
- }
- }
-}
-
-/** Initialize screen number \a idx. */
-Bool dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[])
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
- int i, j;
-
- if (dmxGeneration != serverGeneration) {
-#ifdef RENDER
- /* Allocate picture private index */
- dmxPictPrivateIndex = AllocatePicturePrivateIndex();
- if (dmxPictPrivateIndex == -1)
- return FALSE;
-
- /* Allocate glyph set private index */
- dmxGlyphSetPrivateIndex = AllocateGlyphSetPrivateIndex();
- if (dmxGlyphSetPrivateIndex == -1)
- return FALSE;
-#endif
-
- /* Allocate GC private index */
- dmxGCPrivateIndex = AllocateGCPrivateIndex();
- if (dmxGCPrivateIndex == -1)
- return FALSE;
-
- /* Allocate window private index */
- dmxWinPrivateIndex = AllocateWindowPrivateIndex();
- if (dmxWinPrivateIndex == -1)
- return FALSE;
-
-#ifdef PIXPRIV
- /* Allocate pixmap private index */
- dmxPixPrivateIndex = AllocatePixmapPrivateIndex();
- if (dmxPixPrivateIndex == -1)
- return FALSE;
-#else
-#error Must define PIXPRIV to compile DMX X server
-#endif
-
- /* Allocate font private index */
- dmxFontPrivateIndex = AllocateFontPrivateIndex();
- if (dmxFontPrivateIndex == -1)
- return FALSE;
-
- /* Allocate screen private index */
- dmxScreenPrivateIndex = AllocateScreenPrivateIndex();
- if (dmxScreenPrivateIndex == -1)
- return FALSE;
-
- dmxGeneration = serverGeneration;
- }
-
- if (dmxShadowFB) {
- dmxScreen->shadow = shadowAlloc(dmxScreen->scrnWidth,
- dmxScreen->scrnHeight,
- dmxScreen->beBPP);
- } else {
- if (!dmxInitGC(pScreen)) return FALSE;
- if (!dmxInitWindow(pScreen)) return FALSE;
- if (!dmxInitPixmap(pScreen)) return FALSE;
- }
-
- /*
- * Initalise the visual types. miSetVisualTypesAndMasks() requires
- * that all of the types for each depth be collected together. It's
- * intended for slightly different usage to what we would like here.
- * Maybe a miAddVisualTypeAndMask() function will be added to make
- * things easier here.
- */
- for (i = 0; i < dmxScreen->beNumDepths; i++) {
- int depth;
- int visuals = 0;
- int bitsPerRgb = 0;
- int preferredClass = -1;
- Pixel redMask = 0;
- Pixel greenMask = 0;
- Pixel blueMask = 0;
-
- depth = dmxScreen->beDepths[i];
- for (j = 0; j < dmxScreen->beNumVisuals; j++) {
- XVisualInfo *vi;
-
- vi = &dmxScreen->beVisuals[j];
- if (vi->depth == depth) {
- /* Assume the masks are all the same. */
- visuals |= (1 << vi->class);
- bitsPerRgb = vi->bits_per_rgb;
- redMask = vi->red_mask;
- greenMask = vi->green_mask;
- blueMask = vi->blue_mask;
- if (j == dmxScreen->beDefVisualIndex) {
- preferredClass = vi->class;
- }
- }
- }
- miSetVisualTypesAndMasks(depth, visuals, bitsPerRgb, preferredClass,
- redMask, greenMask, blueMask);
- }
-
- fbScreenInit(pScreen,
- dmxShadowFB ? dmxScreen->shadow : NULL,
- dmxScreen->scrnWidth,
- dmxScreen->scrnHeight,
- dmxScreen->beXDPI,
- dmxScreen->beXDPI,
- dmxScreen->scrnWidth,
- dmxScreen->beBPP);
-#ifdef RENDER
- (void)dmxPictureInit(pScreen, 0, 0);
-#endif
-
- if (dmxShadowFB && !shadowInit(pScreen, dmxShadowUpdateProc, NULL))
- return FALSE;
-
- miInitializeBackingStore(pScreen);
-
- if (dmxShadowFB) {
- miDCInitialize(pScreen, &dmxPointerCursorFuncs);
- } else {
- MAXSCREENSALLOC(dmxCursorGeneration);
- if (dmxCursorGeneration[idx] != serverGeneration) {
- if (!(miPointerInitialize(pScreen,
- &dmxPointerSpriteFuncs,
- &dmxPointerCursorFuncs,
- FALSE)))
- return FALSE;
-
- dmxCursorGeneration[idx] = serverGeneration;
- }
- }
-
- DMX_WRAP(CloseScreen, dmxCloseScreen, dmxScreen, pScreen);
- DMX_WRAP(SaveScreen, dmxSaveScreen, dmxScreen, pScreen);
-
- dmxBEScreenInit(idx, pScreen);
-
- if (!dmxShadowFB) {
- /* Wrap GC functions */
- DMX_WRAP(CreateGC, dmxCreateGC, dmxScreen, pScreen);
-
- /* Wrap Window functions */
- DMX_WRAP(CreateWindow, dmxCreateWindow, dmxScreen, pScreen);
- DMX_WRAP(DestroyWindow, dmxDestroyWindow, dmxScreen, pScreen);
- DMX_WRAP(PositionWindow, dmxPositionWindow, dmxScreen, pScreen);
- DMX_WRAP(ChangeWindowAttributes, dmxChangeWindowAttributes, dmxScreen,
- pScreen);
- DMX_WRAP(RealizeWindow, dmxRealizeWindow, dmxScreen, pScreen);
- DMX_WRAP(UnrealizeWindow, dmxUnrealizeWindow, dmxScreen, pScreen);
- DMX_WRAP(RestackWindow, dmxRestackWindow, dmxScreen, pScreen);
- DMX_WRAP(WindowExposures, dmxWindowExposures, dmxScreen, pScreen);
- DMX_WRAP(PaintWindowBackground, dmxPaintWindowBackground, dmxScreen,
- pScreen);
- DMX_WRAP(PaintWindowBorder, dmxPaintWindowBorder, dmxScreen, pScreen);
- DMX_WRAP(CopyWindow, dmxCopyWindow, dmxScreen, pScreen);
-
- DMX_WRAP(ResizeWindow, dmxResizeWindow, dmxScreen, pScreen);
- DMX_WRAP(ReparentWindow, dmxReparentWindow, dmxScreen, pScreen);
-
- DMX_WRAP(ChangeBorderWidth, dmxChangeBorderWidth, dmxScreen, pScreen);
-
- /* Wrap Image functions */
- DMX_WRAP(GetImage, dmxGetImage, dmxScreen, pScreen);
- DMX_WRAP(GetSpans, dmxGetSpans, dmxScreen, pScreen);
-
- /* Wrap Pixmap functions */
- DMX_WRAP(CreatePixmap, dmxCreatePixmap, dmxScreen, pScreen);
- DMX_WRAP(DestroyPixmap, dmxDestroyPixmap, dmxScreen, pScreen);
- DMX_WRAP(BitmapToRegion, dmxBitmapToRegion, dmxScreen, pScreen);
-
- /* Wrap Font functions */
- DMX_WRAP(RealizeFont, dmxRealizeFont, dmxScreen, pScreen);
- DMX_WRAP(UnrealizeFont, dmxUnrealizeFont, dmxScreen, pScreen);
-
- /* Wrap Colormap functions */
- DMX_WRAP(CreateColormap, dmxCreateColormap, dmxScreen, pScreen);
- DMX_WRAP(DestroyColormap, dmxDestroyColormap, dmxScreen, pScreen);
- DMX_WRAP(InstallColormap, dmxInstallColormap, dmxScreen, pScreen);
- DMX_WRAP(StoreColors, dmxStoreColors, dmxScreen, pScreen);
-
-#ifdef SHAPE
- /* Wrap Shape functions */
- DMX_WRAP(SetShape, dmxSetShape, dmxScreen, pScreen);
-#endif
- }
-
- if (!dmxCreateDefColormap(pScreen))
- return FALSE;
-
- return TRUE;
-}
-
-/** Close the \a pScreen resources on the back-end server. */
-void dmxBECloseScreen(ScreenPtr pScreen)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- int i;
-
- /* Restore the back-end screen-saver and DPMS state. */
- dmxDPMSTerm(dmxScreen);
-
- /* Free the screen resources */
-
- XFreeCursor(dmxScreen->beDisplay, dmxScreen->noCursor);
- dmxScreen->noCursor = (Cursor)0;
-
- XUnmapWindow(dmxScreen->beDisplay, dmxScreen->scrnWin);
- XDestroyWindow(dmxScreen->beDisplay, dmxScreen->scrnWin);
- dmxScreen->scrnWin = (Window)0;
-
- if (dmxShadowFB) {
- /* Free the shadow GC and image assocated with the back-end server */
- XFreeGC(dmxScreen->beDisplay, dmxScreen->shadowGC);
- dmxScreen->shadowGC = NULL;
- XFree(dmxScreen->shadowFBImage);
- dmxScreen->shadowFBImage = NULL;
- } else {
- /* Free the default drawables */
- for (i = 0; i < dmxScreen->beNumPixmapFormats; i++) {
- XFreePixmap(dmxScreen->beDisplay, dmxScreen->scrnDefDrawables[i]);
- dmxScreen->scrnDefDrawables[i] = (Drawable)0;
- }
- }
-
- /* Free resources allocated during initialization (in dmxinit.c) */
- for (i = 0; i < dmxScreen->beNumDefColormaps; i++)
- XFreeColormap(dmxScreen->beDisplay, dmxScreen->beDefColormaps[i]);
- xfree(dmxScreen->beDefColormaps);
- dmxScreen->beDefColormaps = NULL;
-
-#if 0
- /* Do not free visuals, depths and pixmap formats here. Free them
- * in dmxCloseScreen() instead -- see comment below. */
- XFree(dmxScreen->beVisuals);
- dmxScreen->beVisuals = NULL;
-
- XFree(dmxScreen->beDepths);
- dmxScreen->beDepths = NULL;
-
- XFree(dmxScreen->bePixmapFormats);
- dmxScreen->bePixmapFormats = NULL;
-#endif
-
-#ifdef GLXEXT
- if (dmxScreen->glxVisuals) {
- XFree(dmxScreen->glxVisuals);
- dmxScreen->glxVisuals = NULL;
- dmxScreen->numGlxVisuals = 0;
- }
-#endif
-
- /* Close display */
- XCloseDisplay(dmxScreen->beDisplay);
- dmxScreen->beDisplay = NULL;
-}
-
-/** Close screen number \a idx. */
-Bool dmxCloseScreen(int idx, ScreenPtr pScreen)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
-
- /* Reset the proc vectors */
- if (idx == 0) {
-#ifdef RENDER
- dmxResetRender();
-#endif
- dmxResetFonts();
- }
-
- if (dmxShadowFB) {
- /* Free the shadow framebuffer */
- xfree(dmxScreen->shadow);
- } else {
-
-#ifdef SHAPE
- /* Unwrap Shape functions */
- DMX_UNWRAP(SetShape, dmxScreen, pScreen);
-#endif
-
- /* Unwrap the pScreen functions */
- DMX_UNWRAP(CreateGC, dmxScreen, pScreen);
-
- DMX_UNWRAP(CreateWindow, dmxScreen, pScreen);
- DMX_UNWRAP(DestroyWindow, dmxScreen, pScreen);
- DMX_UNWRAP(PositionWindow, dmxScreen, pScreen);
- DMX_UNWRAP(ChangeWindowAttributes, dmxScreen, pScreen);
- DMX_UNWRAP(RealizeWindow, dmxScreen, pScreen);
- DMX_UNWRAP(UnrealizeWindow, dmxScreen, pScreen);
- DMX_UNWRAP(RestackWindow, dmxScreen, pScreen);
- DMX_UNWRAP(WindowExposures, dmxScreen, pScreen);
- DMX_UNWRAP(PaintWindowBackground, dmxScreen, pScreen);
- DMX_UNWRAP(PaintWindowBorder, dmxScreen, pScreen);
- DMX_UNWRAP(CopyWindow, dmxScreen, pScreen);
-
- DMX_UNWRAP(ResizeWindow, dmxScreen, pScreen);
- DMX_UNWRAP(ReparentWindow, dmxScreen, pScreen);
-
- DMX_UNWRAP(ChangeBorderWidth, dmxScreen, pScreen);
-
- DMX_UNWRAP(GetImage, dmxScreen, pScreen);
- DMX_UNWRAP(GetSpans, dmxScreen, pScreen);
-
- DMX_UNWRAP(CreatePixmap, dmxScreen, pScreen);
- DMX_UNWRAP(DestroyPixmap, dmxScreen, pScreen);
- DMX_UNWRAP(BitmapToRegion, dmxScreen, pScreen);
-
- DMX_UNWRAP(RealizeFont, dmxScreen, pScreen);
- DMX_UNWRAP(UnrealizeFont, dmxScreen, pScreen);
-
- DMX_UNWRAP(CreateColormap, dmxScreen, pScreen);
- DMX_UNWRAP(DestroyColormap, dmxScreen, pScreen);
- DMX_UNWRAP(InstallColormap, dmxScreen, pScreen);
- DMX_UNWRAP(StoreColors, dmxScreen, pScreen);
- }
-
- DMX_UNWRAP(SaveScreen, dmxScreen, pScreen);
-
- if (dmxScreen->beDisplay) {
- dmxBECloseScreen(pScreen);
-
-#if 1
- /* Free visuals, depths and pixmap formats here so that they
- * won't be freed when a screen is detached, thereby allowing
- * the screen to be reattached to be compared to the one
- * previously removed.
- */
- XFree(dmxScreen->beVisuals);
- dmxScreen->beVisuals = NULL;
-
- XFree(dmxScreen->beDepths);
- dmxScreen->beDepths = NULL;
-
- XFree(dmxScreen->bePixmapFormats);
- dmxScreen->bePixmapFormats = NULL;
-#endif
- }
-
- DMX_UNWRAP(CloseScreen, dmxScreen, pScreen);
- return pScreen->CloseScreen(idx, pScreen);
-}
-
-static Bool dmxSaveScreen(ScreenPtr pScreen, int what)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
-
- if (dmxScreen->beDisplay) {
- switch (what) {
- case SCREEN_SAVER_OFF:
- case SCREEN_SAVER_FORCER:
- XResetScreenSaver(dmxScreen->beDisplay);
- dmxSync(dmxScreen, FALSE);
- break;
- case SCREEN_SAVER_ON:
- case SCREEN_SAVER_CYCLE:
- XActivateScreenSaver(dmxScreen->beDisplay);
- dmxSync(dmxScreen, FALSE);
- break;
- }
- }
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxscrinit.h b/nx-X11/programs/Xserver/hw/dmx/dmxscrinit.h
deleted file mode 100644
index 91be0948c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxscrinit.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- * David H. Dawes <dawes@xfree86.org>
- *
- */
-
-/** \file
- * Interface for screen initialization. \see dmxscrinit.c */
-
-#ifndef DMXSCRINIT_H
-#define DMXSCRINIT_H
-
-#include "scrnintstr.h"
-
-/** Private index. \see dmxscrrinit.c \see input/dmxconcole.c */
-extern int dmxScreenPrivateIndex;
-
-extern Bool dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[]);
-
-extern void dmxBEScreenInit(int idx, ScreenPtr pScreen);
-extern void dmxBECloseScreen(ScreenPtr pScreen);
-
-#endif /* DMXSCRINIT_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxshadow.c b/nx-X11/programs/Xserver/hw/dmx/dmxshadow.c
deleted file mode 100644
index 8d1e147d1..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxshadow.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001 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:
- * Kevin E. Martin <kem@redhat.com>
- * David H. Dawes <dawes@xfree86.org>
- *
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxsync.h"
-#include "dmxshadow.h"
-
-/** \file
- * This file provides support for the shadow frame buffer. */
-
-/** Update the screen from the shadow frame buffer. */
-void dmxShadowUpdateProc(ScreenPtr pScreen, shadowBufPtr pBuf)
-{
- RegionPtr damage = &pBuf->damage;
- int nbox = REGION_NUM_RECTS(damage);
- BoxPtr pbox = REGION_RECTS(damage);
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
-
- if (!dmxScreen->beDisplay)
- return;
-
- while (nbox--) {
- XPutImage(dmxScreen->beDisplay,
- dmxScreen->scrnWin,
- dmxScreen->shadowGC,
- dmxScreen->shadowFBImage,
- pbox->x1, pbox->y1,
- pbox->x1, pbox->y1,
- pbox->x2 - pbox->x1,
- pbox->y2 - pbox->y1);
-
- pbox++;
- }
-
- dmxSync(dmxScreen, FALSE);
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxshadow.h b/nx-X11/programs/Xserver/hw/dmx/dmxshadow.h
deleted file mode 100644
index 4ba084c99..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxshadow.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001 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:
- * Kevin E. Martin <kem@redhat.com>
- * David H. Dawes <dawes@xfree86.org>
- *
- */
-
-/** \file
- * Interface for shadow framebuffer support. \see dmxshadow.c */
-
-#ifndef DMXSHADOW_H
-#define DMXSHADOW_H
-
-#include "shadow.h"
-#include "scrnintstr.h"
-
-extern void dmxShadowUpdateProc(ScreenPtr pScreen, shadowBufPtr pBuf);
-
-#endif /* DMXSHADOW_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxstat.c b/nx-X11/programs/Xserver/hw/dmx/dmxstat.c
deleted file mode 100644
index 3b092b2a8..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxstat.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * The DMX server code is written to call #dmxSync() whenever an XSync()
- * might be necessary. However, since XSync() requires a two way
- * communication with the other X server, eliminating unnecessary
- * XSync() calls is a key performance optimization. Support for this
- * optimization is provided in #dmxsync.c. This file provides routines
- * that evaluate this optimization by counting the number of XSync()
- * calls and monitoring their latency. This functionality can be turned
- * on using the -stat command-line parameter. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxstat.h"
-#include "dmxlog.h"
-#include <X11/Xos.h> /* For sys/time.h */
-
-/** Used to compute a running average of value. */
-typedef struct _DMXStatAvg {
- int pos;
- int count;
- unsigned long value[DMX_STAT_LENGTH];
-} DMXStatAvg;
-
-/** Statistical information about XSync calls. */
-struct _DMXStatInfo {
- unsigned long syncCount;
- unsigned long oldSyncCount;
-
- DMXStatAvg usec;
- DMXStatAvg pending;
-
- unsigned long bins[DMX_STAT_BINS];
-};
-
-/* Interval in mS between statistic message log entries. */
- int dmxStatInterval;
-static int dmxStatDisplays;
-static OsTimerPtr dmxStatTimer;
-
-/** Return the number of microseconds as an unsigned long.
- * Unfortunately, this is only useful for intervals < about 4 sec. */
-static unsigned long usec(struct timeval *stop, struct timeval *start)
-{
- return (stop->tv_sec - start->tv_sec) * 1000000
- + stop->tv_usec - start->tv_usec;
-}
-
-static unsigned long avg(DMXStatAvg *data, unsigned long *max)
-{
- unsigned long sum;
- int i;
-
- *max = 0;
- if (!data->count) return 0;
-
- for (i = 0, sum = 0; i < data->count; i++) {
- if (data->value[i] > *max) *max = data->value[i];
- sum += data->value[i];
- }
- return sum / data->count;
-}
-
-/** Turn on XSync statistic gathering and printing. Print every \a
- * interval seconds, with lines for the first \a displays. If \a
- * interval is NULL, 1 will be used. If \a displays is NULL, 0 will be
- * used (meaning a line for every display will be printed). Note that
- * this function takes string arguments because it will usually be
- * called from #ddxProcessArgument in #dmxinit.c. */
-void dmxStatActivate(const char *interval, const char *displays)
-{
- dmxStatInterval = (interval ? atoi(interval) : 1) * 1000;
- dmxStatDisplays = (displays ? atoi(displays) : 0);
-
- if (dmxStatInterval < 1000) dmxStatInterval = 1000;
- if (dmxStatDisplays < 0) dmxStatDisplays = 0;
-}
-
-/** Allocate a \a DMXStatInfo structure. */
-DMXStatInfo *dmxStatAlloc(void)
-{
- DMXStatInfo *pt = malloc(sizeof(*pt));
- memset(pt, 0, sizeof(*pt));
- return pt;
-}
-
-/** Free the memory used by a \a DMXStatInfo structure. */
-void dmxStatFree(DMXStatInfo *pt)
-{
- if (pt) free(pt);
-}
-
-static void dmxStatValue(DMXStatAvg *data, unsigned long value)
-{
- if (data->count != DMX_STAT_LENGTH) ++data->count;
- if (data->pos >= DMX_STAT_LENGTH-1) data->pos = 0;
- data->value[data->pos++] = value;
-}
-
-/** Note that a XSync() was just done on \a dmxScreen with the \a start
- * and \a stop times (from gettimeofday()) and the number of
- * pending-but-not-yet-processed XSync requests. This routine is called
- * from #dmxDoSync in #dmxsync.c */
-void dmxStatSync(DMXScreenInfo *dmxScreen,
- struct timeval *stop, struct timeval *start,
- unsigned long pending)
-{
- DMXStatInfo *s = dmxScreen->stat;
- unsigned long elapsed = usec(stop, start);
- unsigned long thresh;
- int i;
-
- ++s->syncCount;
- dmxStatValue(&s->usec, elapsed);
- dmxStatValue(&s->pending, pending);
-
- for (i = 0, thresh = DMX_STAT_BIN0; i < DMX_STAT_BINS-1; i++) {
- if (elapsed < thresh) {
- ++s->bins[i];
- break;
- }
- thresh *= DMX_STAT_BINMULT;
- }
- if (i == DMX_STAT_BINS-1) ++s->bins[i];
-}
-
-/* Actually do the work of printing out the human-readable message. */
-static CARD32 dmxStatCallback(OsTimerPtr timer, CARD32 t, pointer arg)
-{
- int i, j;
- static int header = 0;
- int limit = dmxNumScreens;
-
- if (!dmxNumScreens) {
- header = 0;
- return DMX_STAT_INTERVAL;
- }
-
- if (!header++ || !(header % 10)) {
- dmxLog(dmxDebug,
- " S SyncCount Sync/s avSync mxSync avPend mxPend | "
- "<10ms <1s >1s\n");
- }
-
- if (dmxStatDisplays && dmxStatDisplays < limit) limit = dmxStatDisplays;
- for (i = 0; i < limit; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
- DMXStatInfo *s = dmxScreen->stat;
- unsigned long aSync, mSync;
- unsigned long aPend, mPend;
-
- if (!s) continue;
-
- aSync = avg(&s->usec, &mSync);
- aPend = avg(&s->pending, &mPend);
- dmxLog(dmxDebug, "%2d %9lu %7lu %6lu %6lu %6lu %6lu |",
- i, /* S */
- s->syncCount, /* SyncCount */
- (s->syncCount
- - s->oldSyncCount) * 1000 / dmxStatInterval, /* Sync/s */
- aSync, /* us/Sync */
- mSync, /* max/Sync */
- aPend, /* avgPend */
- mPend); /* maxPend */
- for (j = 0; j < DMX_STAT_BINS; j++)
- dmxLogCont(dmxDebug, " %5lu", s->bins[j]);
- dmxLogCont(dmxDebug, "\n");
-
- /* Reset/clear */
- s->oldSyncCount = s->syncCount;
- for (j = 0; j < DMX_STAT_BINS; j++) s->bins[j] = 0;
- }
- return DMX_STAT_INTERVAL; /* Place on queue again */
-}
-
-/** Try to initialize the statistic gathering and printing routines.
- * Initialization only takes place if #dmxStatActivate has already been
- * called. We don't need the same generation protection that we used in
- * dmxSyncInit because our timer is always on a queue -- hence, server
- * generation will always free it. */
-void dmxStatInit(void)
-{
- if (dmxStatInterval)
- dmxStatTimer = TimerSet(NULL, 0,
- dmxStatInterval, dmxStatCallback, NULL);
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxstat.h b/nx-X11/programs/Xserver/hw/dmx/dmxstat.h
deleted file mode 100644
index 5411272ca..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxstat.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface for statistic gathering interface. \see dmxstat.c */
-
-#ifndef _DMXSTAT_H_
-#define _DMXSTAT_H_
-
-#define DMX_STAT_LENGTH 10 /**< number of events for moving average */
-#define DMX_STAT_INTERVAL 1000 /**< msec between printouts */
-#define DMX_STAT_BINS 3 /**< number of bins */
-#define DMX_STAT_BIN0 10000 /**< us for bin[0] */
-#define DMX_STAT_BINMULT 100 /**< multiplier for next bin[] */
-
-extern int dmxStatInterval; /**< Only for dmxstat.c and dmxsync.c */
-extern void dmxStatActivate(const char *interval, const char *displays);
-extern DMXStatInfo *dmxStatAlloc(void);
-extern void dmxStatFree(DMXStatInfo *);
-extern void dmxStatInit(void);
-extern void dmxStatSync(DMXScreenInfo *dmxScreen,
- struct timeval *stop, struct timeval *start,
- unsigned long pending);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxsync.c b/nx-X11/programs/Xserver/hw/dmx/dmxsync.c
deleted file mode 100644
index 02e244697..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxsync.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2002-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:
- *
- * 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 <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * The DMX server code is written to call #dmxSync() whenever an XSync()
- * might be necessary. However, since XSync() requires a two way
- * communication with the other X server, eliminating unnecessary
- * XSync() calls is a key performance optimization. Support for this
- * optimization is provided here. Statistics about XSync() calls and
- * latency are gathered in #dmxstat.c.
- *
- * During the initial conversion from calling XSync() immediately to the
- * XSync() batching method implemented in this file, it was noted that,
- * out of more than 300 \a x11perf tests, 8 tests became more than 100
- * times faster, with 68 more than 50X faster, 114 more than 10X faster,
- * and 181 more than 2X faster. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxsync.h"
-#include "dmxstat.h"
-#include "dmxlog.h"
-#include <sys/time.h>
-
-static int dmxSyncInterval = 100; /* Default interval in milliseconds */
-static OsTimerPtr dmxSyncTimer;
-static int dmxSyncPending;
-
-static void dmxDoSync(DMXScreenInfo *dmxScreen)
-{
- dmxScreen->needsSync = FALSE;
-
- if (!dmxScreen->beDisplay)
- return; /* FIXME: Is this correct behavior for sync stats? */
-
- if (!dmxStatInterval) {
- XSync(dmxScreen->beDisplay, False);
- } else {
- struct timeval start, stop;
-
- gettimeofday(&start, 0);
- XSync(dmxScreen->beDisplay, False);
- gettimeofday(&stop, 0);
- dmxStatSync(dmxScreen, &stop, &start, dmxSyncPending);
- }
-}
-
-static CARD32 dmxSyncCallback(OsTimerPtr timer, CARD32 time, pointer arg)
-{
- int i;
-
- if (dmxSyncPending) {
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
- if (dmxScreen->needsSync) dmxDoSync(dmxScreen);
- }
- }
- dmxSyncPending = 0;
- return 0; /* Do not place on queue again */
-}
-
-static void dmxSyncBlockHandler(pointer blockData, OSTimePtr pTimeout,
- pointer pReadMask)
-{
- TimerForce(dmxSyncTimer);
-}
-
-static void dmxSyncWakeupHandler(pointer blockData, int result,
- pointer pReadMask)
-{
-}
-
-/** Request the XSync() batching optimization with the specified \a
- * interval (in mS). If the \a interval is 0, 100mS is used. If the \a
- * interval is less than 0, then the XSync() batching optimization is
- * not requested (e.g., so the -syncbatch -1 command line option can
- * turn off the default 100mS XSync() batching).
- *
- * Note that the parameter to this routine is a string, since it will
- * usually be called from #ddxProcessArgument in #dmxinit.c */
-void dmxSyncActivate(const char *interval)
-{
- dmxSyncInterval = (interval ? atoi(interval) : 100);
-
- if (dmxSyncInterval < 0) dmxSyncInterval = 0;
-}
-
-/** Initialize the XSync() batching optimization, but only if
- * #dmxSyncActivate was last called with a non-negative value. */
-void dmxSyncInit(void)
-{
- if (dmxSyncInterval) {
- RegisterBlockAndWakeupHandlers(dmxSyncBlockHandler,
- dmxSyncWakeupHandler,
- NULL);
- dmxLog(dmxInfo, "XSync batching with %d ms interval\n",
- dmxSyncInterval);
- } else {
- dmxLog(dmxInfo, "XSync batching disabled\n");
- }
-}
-
-/** Request an XSync() to the display used by \a dmxScreen. If \a now
- * is TRUE, call XSync() immediately instead of waiting for the next
- * XSync() batching point. Note that if XSync() batching was deselected
- * with #dmxSyncActivate() before #dmxSyncInit() was called, then no
- * XSync() batching is performed and this function always calles XSync()
- * immediately.
- *
- * (Note that this function uses TimerSet but works correctly in the
- * face of a server generation. See the source for details.)
- *
- * If \a dmxScreen is \a NULL, then all pending syncs will be flushed
- * immediately.
- */
-void dmxSync(DMXScreenInfo *dmxScreen, Bool now)
-{
- static unsigned long dmxGeneration = 0;
-
- if (dmxSyncInterval) {
- if (dmxGeneration != serverGeneration) {
- /* Server generation does a TimerInit, which frees all
- * timers. So, at this point dmxSyncTimer is either:
- * 1) NULL, iff dmxGeneration == 0,
- * 2) freed, if it was on a queue (dmxSyncPending != 0), or
- * 3) allocated, if it wasn't on a queue (dmxSyncPending == 0)
- */
- if (dmxSyncTimer && !dmxSyncPending) xfree(dmxSyncTimer);
- dmxSyncTimer = NULL;
- now = TRUE;
- dmxGeneration = serverGeneration;
- }
- /* Queue sync */
- if (dmxScreen) {
- dmxScreen->needsSync = TRUE;
- ++dmxSyncPending;
- }
-
- /* Do sync or set time for later */
- if (now || !dmxScreen) {
- if (!TimerForce(dmxSyncTimer)) dmxSyncCallback(NULL, 0, NULL);
- /* At this point, dmxSyncPending == 0 because
- * dmxSyncCallback must have been called. */
- if (dmxSyncPending)
- dmxLog(dmxFatal, "dmxSync(%s,%d): dmxSyncPending = %d\n",
- dmxScreen ? dmxScreen->name : "", now, dmxSyncPending);
- } else {
- dmxScreen->needsSync = TRUE;
- if (dmxSyncPending == 1)
- dmxSyncTimer = TimerSet(dmxSyncTimer, 0, dmxSyncInterval,
- dmxSyncCallback, NULL);
- }
- } else {
- /* If dmxSyncInterval is not being used,
- * then all the backends are already
- * up-to-date. */
- if (dmxScreen) dmxDoSync(dmxScreen);
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxsync.h b/nx-X11/programs/Xserver/hw/dmx/dmxsync.h
deleted file mode 100644
index 85fd36c07..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxsync.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface for sync support. \see dmxsync.c */
-
-#ifndef _DMXSYNC_H_
-#define _DMXSYNC_H_
-
-extern void dmxSyncActivate(const char *interval);
-extern void dmxSyncInit(void);
-extern void dmxSync(DMXScreenInfo *dmxScreen, Bool now);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxvisual.c b/nx-X11/programs/Xserver/hw/dmx/dmxvisual.c
deleted file mode 100644
index 23ff0acfa..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxvisual.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2002-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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * This file provides support for visuals. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxvisual.h"
-
-#include "scrnintstr.h"
-
-#ifdef GLXEXT
-
-#include <GL/glxint.h>
-
-extern VisualID glxMatchVisualInConfigList(ScreenPtr pScreen,
- VisualPtr pVisual,
- __GLXvisualConfig *configs,
- int nconfigs);
-
-static Visual *dmxLookupGLXVisual(ScreenPtr pScreen, VisualPtr pVisual)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- int j;
- VisualID vid;
-
- vid = glxMatchVisualInConfigList(pScreen, pVisual,
- dmxScreen->glxVisuals,
- dmxScreen->numGlxVisuals);
- if (vid) {
- /* Find the X visual of the matching GLX visual */
- for (j = 0; j < dmxScreen->beNumVisuals; j++)
- if (vid == dmxScreen->beVisuals[j].visualid)
- return dmxScreen->beVisuals[j].visual;
- }
-
- /* No matching visual found */
- return NULL;
-}
-#endif
-
-/** Return the visual that matched \a pVisual. */
-Visual *dmxLookupVisual(ScreenPtr pScreen, VisualPtr pVisual)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- int i;
-#ifdef GLXEXT
- Visual *retval;
-#endif
-
- if (!dmxScreen->beDisplay)
- return NULL;
-
-#ifdef GLXEXT
- if ((retval = dmxLookupGLXVisual(pScreen, pVisual)))
- return retval;
-#endif
-
- for (i = 0; i < dmxScreen->beNumVisuals; i++) {
- if (pVisual->class == dmxScreen->beVisuals[i].class &&
- pVisual->bitsPerRGBValue == dmxScreen->beVisuals[i].bits_per_rgb &&
- pVisual->ColormapEntries == dmxScreen->beVisuals[i].colormap_size &&
- pVisual->nplanes == dmxScreen->beVisuals[i].depth &&
- pVisual->redMask == dmxScreen->beVisuals[i].red_mask &&
- pVisual->greenMask == dmxScreen->beVisuals[i].green_mask &&
- pVisual->blueMask == dmxScreen->beVisuals[i].blue_mask) {
- return dmxScreen->beVisuals[i].visual;
- }
- }
-
- return NULL;
-}
-
-/** Return the visual that matched the \a vid. */
-Visual *dmxLookupVisualFromID(ScreenPtr pScreen, VisualID vid)
-{
- Visual *visual;
- int i;
-
- if (!dmxScreens[pScreen->myNum].beDisplay)
- return NULL;
-
- for (i = 0; i < pScreen->numVisuals; i++) {
- if (pScreen->visuals[i].vid == vid) {
- visual = dmxLookupVisual(pScreen, &pScreen->visuals[i]);
- if (visual) return visual;
- }
- }
-
- return NULL;
-}
-
-/** Return the colormap for the \a visual. */
-Colormap dmxColormapFromDefaultVisual(ScreenPtr pScreen, Visual *visual)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- int i;
-
- if (dmxScreen->beDisplay) {
- for (i = 0; i < dmxScreen->beNumDefColormaps; i++)
- if (visual == dmxScreen->beVisuals[i].visual)
- return dmxScreen->beDefColormaps[i];
- }
-
- return None;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxvisual.h b/nx-X11/programs/Xserver/hw/dmx/dmxvisual.h
deleted file mode 100644
index 8701bf01f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxvisual.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* $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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * Interface for visual support. \see dmxvisual.c */
-
-#ifndef DMXVISUAL_H
-#define DMXVISUAL_H
-
-#include "scrnintstr.h"
-
-extern Visual *dmxLookupVisual(ScreenPtr pScreen, VisualPtr pVisual);
-extern Visual *dmxLookupVisualFromID(ScreenPtr pScreen, VisualID vid);
-extern Colormap dmxColormapFromDefaultVisual(ScreenPtr pScreen,
- Visual *visual);
-
-#endif /* DMXVISUAL_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxwindow.c b/nx-X11/programs/Xserver/hw/dmx/dmxwindow.c
deleted file mode 100644
index 25456e228..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxwindow.c
+++ /dev/null
@@ -1,1085 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * This file provides support for window-related functions. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxsync.h"
-#include "dmxwindow.h"
-#include "dmxpixmap.h"
-#include "dmxcmap.h"
-#include "dmxvisual.h"
-#include "dmxinput.h"
-#include "dmxextension.h"
-#ifdef RENDER
-#include "dmxpict.h"
-#endif
-
-#include "windowstr.h"
-
-static void dmxDoRestackWindow(WindowPtr pWindow);
-static void dmxDoChangeWindowAttributes(WindowPtr pWindow,
- unsigned long *mask,
- XSetWindowAttributes *attribs);
-
-#ifdef SHAPE
-static void dmxDoSetShape(WindowPtr pWindow);
-#endif
-
-/** Initialize the private area for the window functions. */
-Bool dmxInitWindow(ScreenPtr pScreen)
-{
- if (!AllocateWindowPrivate(pScreen, dmxWinPrivateIndex,
- sizeof(dmxWinPrivRec)))
- return FALSE;
-
- return TRUE;
-}
-
-
-Window dmxCreateRootWindow(WindowPtr pWindow)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- Window parent;
- Visual *visual;
- unsigned long mask;
- XSetWindowAttributes attribs;
- ColormapPtr pCmap;
- dmxColormapPrivPtr pCmapPriv;
-
- /* Create root window */
-
- parent = dmxScreen->scrnWin; /* This is our "Screen" window */
- visual = dmxScreen->beVisuals[dmxScreen->beDefVisualIndex].visual;
-
- pCmap = (ColormapPtr)LookupIDByType(wColormap(pWindow), RT_COLORMAP);
- pCmapPriv = DMX_GET_COLORMAP_PRIV(pCmap);
-
- mask = CWEventMask | CWBackingStore | CWColormap | CWBorderPixel;
- attribs.event_mask = ExposureMask;
- attribs.backing_store = NotUseful;
- attribs.colormap = pCmapPriv->cmap;
- attribs.border_pixel = 0;
-
- /* Incorporate new attributes, if needed */
- if (pWinPriv->attribMask) {
- dmxDoChangeWindowAttributes(pWindow, &pWinPriv->attribMask, &attribs);
- mask |= pWinPriv->attribMask;
- }
-
- return XCreateWindow(dmxScreen->beDisplay,
- parent,
- pWindow->origin.x - wBorderWidth(pWindow),
- pWindow->origin.y - wBorderWidth(pWindow),
- pWindow->drawable.width,
- pWindow->drawable.height,
- pWindow->borderWidth,
- pWindow->drawable.depth,
- pWindow->drawable.class,
- visual,
- mask,
- &attribs);
-}
-
-/** Change the location and size of the "screen" window. Called from
- * #dmxReconfigureScreenWindow(). */
-void dmxResizeScreenWindow(ScreenPtr pScreen,
- int x, int y, int w, int h)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- unsigned int m;
- XWindowChanges c;
-
- if (!dmxScreen->beDisplay)
- return;
-
- /* Handle resizing on back-end server */
- m = CWX | CWY | CWWidth | CWHeight;
- c.x = x;
- c.y = y;
- c.width = w;
- c.height = h;
-
- XConfigureWindow(dmxScreen->beDisplay, dmxScreen->scrnWin, m, &c);
- dmxSync(dmxScreen, False);
-}
-
-/** Change the location and size of the "root" window. Called from
- * #dmxReconfigureRootWindow(). */
-void dmxResizeRootWindow(WindowPtr pRoot,
- int x, int y, int w, int h)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[pRoot->drawable.pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pRoot);
- unsigned int m;
- XWindowChanges c;
-
- /* Handle resizing on back-end server */
- if (dmxScreen->beDisplay) {
- m = CWX | CWY | CWWidth | CWHeight;
- c.x = x;
- c.y = y;
- c.width = (w > 0) ? w : 1;
- c.height = (h > 0) ? h : 1;
-
- XConfigureWindow(dmxScreen->beDisplay, pWinPriv->window, m, &c);
- }
-
- if (w == 0 || h == 0) {
- if (pWinPriv->mapped) {
- if (dmxScreen->beDisplay)
- XUnmapWindow(dmxScreen->beDisplay, pWinPriv->window);
- pWinPriv->mapped = FALSE;
- }
- } else if (!pWinPriv->mapped) {
- if (dmxScreen->beDisplay)
- XMapWindow(dmxScreen->beDisplay, pWinPriv->window);
- pWinPriv->mapped = TRUE;
- }
-
- if (dmxScreen->beDisplay)
- dmxSync(dmxScreen, False);
-}
-
-void dmxGetDefaultWindowAttributes(WindowPtr pWindow,
- Colormap *cmap,
- Visual **visual)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
-
- if (pWindow->drawable.class != InputOnly &&
- pWindow->optional &&
- pWindow->optional->visual != wVisual(pWindow->parent)) {
-
- /* Find the matching visual */
- *visual = dmxLookupVisualFromID(pScreen, wVisual(pWindow));
-
- /* Handle optional colormaps */
- if (pWindow->optional->colormap) {
- ColormapPtr pCmap;
- dmxColormapPrivPtr pCmapPriv;
-
- pCmap = (ColormapPtr)LookupIDByType(wColormap(pWindow),
- RT_COLORMAP);
- pCmapPriv = DMX_GET_COLORMAP_PRIV(pCmap);
- *cmap = pCmapPriv->cmap;
- } else {
- *cmap = dmxColormapFromDefaultVisual(pScreen, *visual);
- }
- } else {
- *visual = CopyFromParent;
- *cmap = (Colormap)0;
- }
-}
-
-static Window dmxCreateNonRootWindow(WindowPtr pWindow)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- Window parent;
- unsigned long mask = 0L;
- XSetWindowAttributes attribs;
- dmxWinPrivPtr pParentPriv = DMX_GET_WINDOW_PRIV(pWindow->parent);
-
- /* Create window on back-end server */
-
- parent = pParentPriv->window;
-
- /* The parent won't exist if this call to CreateNonRootWindow came
- from ReparentWindow and the grandparent window has not yet been
- created */
- if (!parent) {
- dmxCreateAndRealizeWindow(pWindow->parent, FALSE);
- parent = pParentPriv->window;
- }
-
- /* Incorporate new attributes, if needed */
- if (pWinPriv->attribMask) {
- dmxDoChangeWindowAttributes(pWindow, &pWinPriv->attribMask, &attribs);
- mask |= pWinPriv->attribMask;
- }
-
- /* Add in default attributes */
- if (pWindow->drawable.class != InputOnly) {
- mask |= CWBackingStore;
- attribs.backing_store = NotUseful;
-
- if (!(mask & CWColormap) && pWinPriv->cmap) {
- mask |= CWColormap;
- attribs.colormap = pWinPriv->cmap;
- if (!(mask & CWBorderPixel)) {
- mask |= CWBorderPixel;
- attribs.border_pixel = 0;
- }
- }
- }
-
- /* Handle case where subwindows are being mapped, but created out of
- order -- if current window has a previous sibling, then it cannot
- be created on top of the stack, so we must restack the windows */
- pWinPriv->restacked = (pWindow->prevSib != NullWindow);
-
- return XCreateWindow(dmxScreen->beDisplay,
- parent,
- pWindow->origin.x - wBorderWidth(pWindow),
- pWindow->origin.y - wBorderWidth(pWindow),
- pWindow->drawable.width,
- pWindow->drawable.height,
- pWindow->borderWidth,
- pWindow->drawable.depth,
- pWindow->drawable.class,
- pWinPriv->visual,
- mask,
- &attribs);
-}
-
-/** This function handles lazy window creation and realization. Window
- * creation is handled by #dmxCreateNonRootWindow(). It also handles
- * any stacking changes that have occured since the window was
- * originally created by calling #dmxDoRestackWindow(). If the window
- * is shaped, the shape is set on the back-end server by calling
- * #dmxDoSetShape(), and if the window has pictures (from RENDER)
- * associated with it, those pictures are created on the back-end
- * server by calling #dmxCreatePictureList(). If \a doSync is TRUE,
- * then #dmxSync() is called. */
-void dmxCreateAndRealizeWindow(WindowPtr pWindow, Bool doSync)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
-
- if (!dmxScreen->beDisplay) return;
-
- pWinPriv->window = dmxCreateNonRootWindow(pWindow);
- if (pWinPriv->restacked) dmxDoRestackWindow(pWindow);
-#ifdef SHAPE
- if (pWinPriv->isShaped) dmxDoSetShape(pWindow);
-#endif
-#ifdef RENDER
- if (pWinPriv->hasPict) dmxCreatePictureList(pWindow);
-#endif
- if (pWinPriv->mapped) XMapWindow(dmxScreen->beDisplay,
- pWinPriv->window);
- if (doSync) dmxSync(dmxScreen, False);
-}
-
-/** Create \a pWindow on the back-end server. If the lazy window
- * creation optimization is enabled, then the actual creation and
- * realization of the window is handled by
- * #dmxCreateAndRealizeWindow(). */
-Bool dmxCreateWindow(WindowPtr pWindow)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- Bool ret = TRUE;
-
- DMX_UNWRAP(CreateWindow, dmxScreen, pScreen);
-#if 0
- if (pScreen->CreateWindow)
- ret = pScreen->CreateWindow(pWindow);
-#endif
-
- /* Set up the defaults */
- pWinPriv->window = (Window)0;
- pWinPriv->offscreen = TRUE;
- pWinPriv->mapped = FALSE;
- pWinPriv->restacked = FALSE;
- pWinPriv->attribMask = 0;
-#ifdef SHAPE
- pWinPriv->isShaped = FALSE;
-#endif
-#ifdef RENDER
- pWinPriv->hasPict = FALSE;
-#endif
-#ifdef GLXEXT
- pWinPriv->swapGroup = NULL;
- pWinPriv->barrier = 0;
-#endif
-
- if (dmxScreen->beDisplay) {
- /* Only create the root window at this stage -- non-root windows are
- created when they are mapped and are on-screen */
- if (!pWindow->parent) {
- dmxScreen->rootWin = pWinPriv->window
- = dmxCreateRootWindow(pWindow);
- if (dmxScreen->scrnX != dmxScreen->rootX
- || dmxScreen->scrnY != dmxScreen->rootY
- || dmxScreen->scrnWidth != dmxScreen->rootWidth
- || dmxScreen->scrnHeight != dmxScreen->rootHeight) {
- dmxResizeRootWindow(pWindow,
- dmxScreen->rootX,
- dmxScreen->rootY,
- dmxScreen->rootWidth,
- dmxScreen->rootHeight);
- dmxUpdateScreenResources(screenInfo.screens[dmxScreen->index],
- dmxScreen->rootX,
- dmxScreen->rootY,
- dmxScreen->rootWidth,
- dmxScreen->rootHeight);
- pWindow->origin.x = dmxScreen->rootX;
- pWindow->origin.y = dmxScreen->rootY;
- }
- } else {
- dmxGetDefaultWindowAttributes(pWindow,
- &pWinPriv->cmap,
- &pWinPriv->visual);
-
- if (dmxLazyWindowCreation) {
- /* Save parent's visual for use later */
- if (pWinPriv->visual == CopyFromParent)
- pWinPriv->visual =
- dmxLookupVisualFromID(pScreen,
- wVisual(pWindow->parent));
- } else {
- pWinPriv->window = dmxCreateNonRootWindow(pWindow);
- }
- }
-
- dmxSync(dmxScreen, False);
- }
-
- DMX_WRAP(CreateWindow, dmxCreateWindow, dmxScreen, pScreen);
-
- return ret;
-}
-
-/** Destroy \a pWindow on the back-end server. */
-Bool dmxBEDestroyWindow(WindowPtr pWindow)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
-
- if (pWinPriv->window) {
- XDestroyWindow(dmxScreen->beDisplay, pWinPriv->window);
- pWinPriv->window = (Window)0;
- return TRUE;
- }
-
- return FALSE;
-}
-
-/** Destroy \a pWindow on the back-end server. If any RENDER pictures
- were created, destroy them as well. */
-Bool dmxDestroyWindow(WindowPtr pWindow)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- Bool ret = TRUE;
- Bool needSync = FALSE;
-#ifdef GLXEXT
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
-#endif
-
- DMX_UNWRAP(DestroyWindow, dmxScreen, pScreen);
-
-#ifdef RENDER
- /* Destroy any picture list associated with this window */
- needSync |= dmxDestroyPictureList(pWindow);
-#endif
-
- /* Destroy window on back-end server */
- needSync |= dmxBEDestroyWindow(pWindow);
- if (needSync) dmxSync(dmxScreen, FALSE);
-
-#ifdef GLXEXT
- if (pWinPriv->swapGroup && pWinPriv->windowDestroyed)
- pWinPriv->windowDestroyed(pWindow);
-#endif
-
-#if 0
- if (pScreen->DestroyWindow)
- ret = pScreen->DestroyWindow(pWindow);
-#endif
- DMX_WRAP(DestroyWindow, dmxDestroyWindow, dmxScreen, pScreen);
-
- return ret;
-}
-
-/** Change the position of \a pWindow to be \a x, \a y. */
-Bool dmxPositionWindow(WindowPtr pWindow, int x, int y)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- Bool ret = TRUE;
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- unsigned int m;
- XWindowChanges c;
-
- DMX_UNWRAP(PositionWindow, dmxScreen, pScreen);
-#if 0
- if (pScreen->PositionWindow)
- ret = pScreen->PositionWindow(pWindow, x, y);
-#endif
-
- /* Determine if the window is completely off the visible portion of
- the screen */
- pWinPriv->offscreen = DMX_WINDOW_OFFSCREEN(pWindow);
-
- /* If the window is now on-screen and it is mapped and it has not
- been created yet, create it and map it */
- if (!pWinPriv->window && pWinPriv->mapped && !pWinPriv->offscreen) {
- dmxCreateAndRealizeWindow(pWindow, TRUE);
- } else if (pWinPriv->window) {
- /* Position window on back-end server */
- m = CWX | CWY | CWWidth | CWHeight;
- c.x = pWindow->origin.x - wBorderWidth(pWindow);
- c.y = pWindow->origin.y - wBorderWidth(pWindow);
- c.width = pWindow->drawable.width;
- c.height = pWindow->drawable.height;
- if (pWindow->drawable.class != InputOnly) {
- m |= CWBorderWidth;
- c.border_width = pWindow->borderWidth;
- }
-
- XConfigureWindow(dmxScreen->beDisplay, pWinPriv->window, m, &c);
- dmxSync(dmxScreen, False);
- }
-
- DMX_WRAP(PositionWindow, dmxPositionWindow, dmxScreen, pScreen);
-
- return ret;
-}
-
-static void dmxDoChangeWindowAttributes(WindowPtr pWindow,
- unsigned long *mask,
- XSetWindowAttributes *attribs)
-{
- dmxPixPrivPtr pPixPriv;
-
- if (*mask & CWBackPixmap) {
- switch (pWindow->backgroundState) {
- case None:
- attribs->background_pixmap = None;
- break;
-
- case ParentRelative:
- attribs->background_pixmap = ParentRelative;
- break;
-
- case BackgroundPixmap:
- pPixPriv = DMX_GET_PIXMAP_PRIV(pWindow->background.pixmap);
- attribs->background_pixmap = pPixPriv->pixmap;
- break;
-
- case BackgroundPixel:
- *mask &= ~CWBackPixmap;
- break;
- }
- }
-
- if (*mask & CWBackPixel) {
- if (pWindow->backgroundState == BackgroundPixel)
- attribs->background_pixel = pWindow->background.pixel;
- else
- *mask &= ~CWBackPixel;
- }
-
- if (*mask & CWBorderPixmap) {
- if (pWindow->borderIsPixel)
- *mask &= ~CWBorderPixmap;
- else {
- pPixPriv = DMX_GET_PIXMAP_PRIV(pWindow->border.pixmap);
- attribs->border_pixmap = pPixPriv->pixmap;
- }
- }
-
- if (*mask & CWBorderPixel) {
- if (pWindow->borderIsPixel)
- attribs->border_pixel = pWindow->border.pixel;
- else
- *mask &= ~CWBorderPixel;
- }
-
- if (*mask & CWBitGravity)
- attribs->bit_gravity = pWindow->bitGravity;
-
- if (*mask & CWWinGravity)
- *mask &= ~CWWinGravity; /* Handled by dix */
-
- if (*mask & CWBackingStore)
- *mask &= ~CWBackingStore; /* Backing store not supported */
-
- if (*mask & CWBackingPlanes)
- *mask &= ~CWBackingPlanes; /* Backing store not supported */
-
- if (*mask & CWBackingPixel)
- *mask &= ~CWBackingPixel; /* Backing store not supported */
-
- if (*mask & CWOverrideRedirect)
- attribs->override_redirect = pWindow->overrideRedirect;
-
- if (*mask & CWSaveUnder)
- *mask &= ~CWSaveUnder; /* Save unders not supported */
-
- if (*mask & CWEventMask)
- *mask &= ~CWEventMask; /* Events are handled by dix */
-
- if (*mask & CWDontPropagate)
- *mask &= ~CWDontPropagate; /* Events are handled by dix */
-
- if (*mask & CWColormap) {
- ColormapPtr pCmap;
- dmxColormapPrivPtr pCmapPriv;
-
- pCmap = (ColormapPtr)LookupIDByType(wColormap(pWindow), RT_COLORMAP);
- pCmapPriv = DMX_GET_COLORMAP_PRIV(pCmap);
- attribs->colormap = pCmapPriv->cmap;
- }
-
- if (*mask & CWCursor)
- *mask &= ~CWCursor; /* Handled by the cursor code */
-}
-
-/** Change the window attributes of \a pWindow. */
-Bool dmxChangeWindowAttributes(WindowPtr pWindow, unsigned long mask)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- Bool ret = TRUE;
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- XSetWindowAttributes attribs;
-
- DMX_UNWRAP(ChangeWindowAttributes, dmxScreen, pScreen);
-#if 0
- if (pScreen->ChangeWindowAttributes)
- ret = pScreen->ChangeWindowAttributes(pWindow, mask);
-#endif
-
- /* Change window attribs on back-end server */
- dmxDoChangeWindowAttributes(pWindow, &mask, &attribs);
-
- /* Save mask for lazy window creation optimization */
- pWinPriv->attribMask |= mask;
-
- if (mask && pWinPriv->window) {
- XChangeWindowAttributes(dmxScreen->beDisplay, pWinPriv->window,
- mask, &attribs);
- dmxSync(dmxScreen, False);
- }
-
- DMX_WRAP(ChangeWindowAttributes, dmxChangeWindowAttributes, dmxScreen,
- pScreen);
-
- return ret;
-}
-
-/** Realize \a pWindow on the back-end server. If the lazy window
- * creation optimization is enabled, the window is only realized when
- * it at least partially overlaps the screen. */
-Bool dmxRealizeWindow(WindowPtr pWindow)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- Bool ret = TRUE;
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
-
- DMX_UNWRAP(RealizeWindow, dmxScreen, pScreen);
-#if 0
- if (pScreen->RealizeWindow)
- ret = pScreen->RealizeWindow(pWindow);
-#endif
-
- /* Determine if the window is completely off the visible portion of
- the screen */
- pWinPriv->offscreen = DMX_WINDOW_OFFSCREEN(pWindow);
-
- /* If the window hasn't been created and it's not offscreen, then
- create it */
- if (!pWinPriv->window && !pWinPriv->offscreen) {
- dmxCreateAndRealizeWindow(pWindow, FALSE);
- }
-
- if (pWinPriv->window) {
- /* Realize window on back-end server */
- XMapWindow(dmxScreen->beDisplay, pWinPriv->window);
- dmxSync(dmxScreen, False);
- }
-
- /* Let the other functions know that the window is now mapped */
- pWinPriv->mapped = TRUE;
-
- DMX_WRAP(RealizeWindow, dmxRealizeWindow, dmxScreen, pScreen);
-
- dmxUpdateWindowInfo(DMX_UPDATE_REALIZE, pWindow);
- return ret;
-}
-
-/** Unrealize \a pWindow on the back-end server. */
-Bool dmxUnrealizeWindow(WindowPtr pWindow)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- Bool ret = TRUE;
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
-
- DMX_UNWRAP(UnrealizeWindow, dmxScreen, pScreen);
-#if 0
- if (pScreen->UnrealizeWindow)
- ret = pScreen->UnrealizeWindow(pWindow);
-#endif
-
- if (pWinPriv->window) {
- /* Unrealize window on back-end server */
- XUnmapWindow(dmxScreen->beDisplay, pWinPriv->window);
- dmxSync(dmxScreen, False);
- }
-
- /* When unrealized (i.e., unmapped), the window is always considered
- off of the visible portion of the screen */
- pWinPriv->offscreen = TRUE;
- pWinPriv->mapped = FALSE;
-
-#ifdef GLXEXT
- if (pWinPriv->swapGroup && pWinPriv->windowUnmapped)
- pWinPriv->windowUnmapped(pWindow);
-#endif
-
- DMX_WRAP(UnrealizeWindow, dmxUnrealizeWindow, dmxScreen, pScreen);
-
- dmxUpdateWindowInfo(DMX_UPDATE_UNREALIZE, pWindow);
- return ret;
-}
-
-static void dmxDoRestackWindow(WindowPtr pWindow)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- WindowPtr pNextSib = pWindow->nextSib;
- unsigned int m;
- XWindowChanges c;
-
- if (pNextSib == NullWindow) {
- /* Window is at the bottom of the stack */
- m = CWStackMode;
- c.sibling = (Window)0;
- c.stack_mode = Below;
- XConfigureWindow(dmxScreen->beDisplay, pWinPriv->window, m, &c);
- } else {
- /* Window is not at the bottom of the stack */
- dmxWinPrivPtr pNextSibPriv = DMX_GET_WINDOW_PRIV(pNextSib);
-
- /* Handle case where siblings have not yet been created due to
- lazy window creation optimization by first finding the next
- sibling in the sibling list that has been created (if any)
- and then putting the current window just above that sibling,
- and if no next siblings have been created yet, then put it at
- the bottom of the stack (since it might have a previous
- sibling that should be above it). */
- while (!pNextSibPriv->window) {
- pNextSib = pNextSib->nextSib;
- if (pNextSib == NullWindow) {
- /* Window is at the bottom of the stack */
- m = CWStackMode;
- c.sibling = (Window)0;
- c.stack_mode = Below;
- XConfigureWindow(dmxScreen->beDisplay, pWinPriv->window, m, &c);
- return;
- }
- pNextSibPriv = DMX_GET_WINDOW_PRIV(pNextSib);
- }
-
- m = CWStackMode | CWSibling;
- c.sibling = pNextSibPriv->window;
- c.stack_mode = Above;
- XConfigureWindow(dmxScreen->beDisplay, pWinPriv->window, m, &c);
- }
-}
-
-/** Handle window restacking. The actual restacking occurs in
- * #dmxDoRestackWindow(). */
-void dmxRestackWindow(WindowPtr pWindow, WindowPtr pOldNextSib)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
-
- DMX_UNWRAP(RestackWindow, dmxScreen, pScreen);
-#if 0
- if (pScreen->RestackWindow)
- pScreen->RestackWindow(pWindow, pOldNextSib);
-#endif
-
- if (pOldNextSib != pWindow->nextSib) {
- /* Track restacking for lazy window creation optimization */
- pWinPriv->restacked = TRUE;
-
- /* Restack window on back-end server */
- if (pWinPriv->window) {
- dmxDoRestackWindow(pWindow);
- dmxSync(dmxScreen, False);
- }
- }
-
- DMX_WRAP(RestackWindow, dmxRestackWindow, dmxScreen, pScreen);
- dmxUpdateWindowInfo(DMX_UPDATE_RESTACK, pWindow);
-}
-
-static Bool dmxWindowExposurePredicate(Display *dpy, XEvent *ev, XPointer ptr)
-{
- return (ev->type == Expose && ev->xexpose.window == *(Window *)ptr);
-}
-
-/** Handle exposures on \a pWindow. Since window exposures are handled
- * in DMX, the events that are generated by the back-end server are
- * redundant, so we eat them here. */
-void dmxWindowExposures(WindowPtr pWindow, RegionPtr prgn,
- RegionPtr other_exposed)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- XEvent ev;
-
- DMX_UNWRAP(WindowExposures, dmxScreen, pScreen);
-
- dmxSync(dmxScreen, False);
-
- if (pWinPriv->window) {
- while (XCheckIfEvent(dmxScreen->beDisplay, &ev,
- dmxWindowExposurePredicate,
- (XPointer)&pWinPriv->window)) {
- /* Handle expose events -- this should not be necessary
- since the base window in which the root window was
- created is guaranteed to be on top (override_redirect),
- so we should just swallow these events. If for some
- reason the window is not on top, then we'd need to
- collect these events and send them to the client later
- (e.g., during the block handler as Xnest does). */
- }
- }
-
-#if 1
- if (pScreen->WindowExposures)
- pScreen->WindowExposures(pWindow, prgn, other_exposed);
-#endif
- DMX_WRAP(WindowExposures, dmxWindowExposures, dmxScreen, pScreen);
-}
-
-/** Paint background of \a pWindow in \a pRegion. */
-void dmxPaintWindowBackground(WindowPtr pWindow, RegionPtr pRegion, int what)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- BoxPtr pBox;
- int nBox;
-
- DMX_UNWRAP(PaintWindowBackground, dmxScreen, pScreen);
-#if 0
- if (pScreen->PaintWindowBackground)
- pScreen->PaintWindowBackground(pWindow, pRegion, what);
-#endif
-
- if (pWinPriv->window) {
- /* Paint window background on back-end server */
- pBox = REGION_RECTS(pRegion);
- nBox = REGION_NUM_RECTS(pRegion);
- while (nBox--) {
- XClearArea(dmxScreen->beDisplay, pWinPriv->window,
- pBox->x1 - pWindow->drawable.x,
- pBox->y1 - pWindow->drawable.y,
- pBox->x2 - pBox->x1,
- pBox->y2 - pBox->y1,
- False);
- pBox++;
- }
- dmxSync(dmxScreen, False);
- }
-
- DMX_WRAP(PaintWindowBackground, dmxPaintWindowBackground, dmxScreen, pScreen);
-}
-
-/** Paint window border for \a pWindow in \a pRegion. */
-void dmxPaintWindowBorder(WindowPtr pWindow, RegionPtr pRegion, int what)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
-
- DMX_UNWRAP(PaintWindowBorder, dmxScreen, pScreen);
-#if 0
- if (pScreen->PaintWindowBorder)
- pScreen->PaintWindowBorder(pWindow, pRegion, what);
-#endif
-
- /* Paint window border on back-end server */
-
- DMX_WRAP(PaintWindowBorder, dmxPaintWindowBorder, dmxScreen, pScreen);
-}
-
-/** Move \a pWindow on the back-end server. Determine whether or not it
- * is on or offscreen, and realize it if it is newly on screen and the
- * lazy window creation optimization is enabled. */
-void dmxCopyWindow(WindowPtr pWindow, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- unsigned int m;
- XWindowChanges c;
-
- DMX_UNWRAP(CopyWindow, dmxScreen, pScreen);
-#if 0
- if (pScreen->CopyWindow)
- pScreen->CopyWindow(pWindow, ptOldOrg, prgnSrc);
-#endif
-
- /* Determine if the window is completely off the visible portion of
- the screen */
- pWinPriv->offscreen = DMX_WINDOW_OFFSCREEN(pWindow);
-
- /* If the window is now on-screen and it is mapped and it has not
- been created yet, create it and map it */
- if (!pWinPriv->window && pWinPriv->mapped && !pWinPriv->offscreen) {
- dmxCreateAndRealizeWindow(pWindow, TRUE);
- } else if (pWinPriv->window) {
- /* Move window on back-end server */
- m = CWX | CWY | CWWidth | CWHeight;
- c.x = pWindow->origin.x - wBorderWidth(pWindow);
- c.y = pWindow->origin.y - wBorderWidth(pWindow);
- c.width = pWindow->drawable.width;
- c.height = pWindow->drawable.height;
-
- XConfigureWindow(dmxScreen->beDisplay, pWinPriv->window, m, &c);
- dmxSync(dmxScreen, False);
- }
-
- DMX_WRAP(CopyWindow, dmxCopyWindow, dmxScreen, pScreen);
- dmxUpdateWindowInfo(DMX_UPDATE_COPY, pWindow);
-}
-
-/** Resize \a pWindow on the back-end server. Determine whether or not
- * it is on or offscreen, and realize it if it is newly on screen and
- * the lazy window creation optimization is enabled. */
-void dmxResizeWindow(WindowPtr pWindow, int x, int y,
- unsigned int w, unsigned int h, WindowPtr pSib)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- dmxWinPrivPtr pSibPriv;
- unsigned int m;
- XWindowChanges c;
-
- if (pSib)
- pSibPriv = DMX_GET_WINDOW_PRIV(pSib);
-
- DMX_UNWRAP(ResizeWindow, dmxScreen, pScreen);
-#if 1
- if (pScreen->ResizeWindow)
- pScreen->ResizeWindow(pWindow, x, y, w, h, pSib);
-#endif
-
- /* Determine if the window is completely off the visible portion of
- the screen */
- pWinPriv->offscreen = DMX_WINDOW_OFFSCREEN(pWindow);
-
- /* If the window is now on-screen and it is mapped and it has not
- been created yet, create it and map it */
- if (!pWinPriv->window && pWinPriv->mapped && !pWinPriv->offscreen) {
- dmxCreateAndRealizeWindow(pWindow, TRUE);
- } else if (pWinPriv->window) {
- /* Handle resizing on back-end server */
- m = CWX | CWY | CWWidth | CWHeight;
- c.x = pWindow->origin.x - wBorderWidth(pWindow);
- c.y = pWindow->origin.y - wBorderWidth(pWindow);
- c.width = pWindow->drawable.width;
- c.height = pWindow->drawable.height;
-
- XConfigureWindow(dmxScreen->beDisplay, pWinPriv->window, m, &c);
- dmxSync(dmxScreen, False);
- }
-
- DMX_WRAP(ResizeWindow, dmxResizeWindow, dmxScreen, pScreen);
- dmxUpdateWindowInfo(DMX_UPDATE_RESIZE, pWindow);
-}
-
-/** Reparent \a pWindow on the back-end server. */
-void dmxReparentWindow(WindowPtr pWindow, WindowPtr pPriorParent)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- dmxWinPrivPtr pParentPriv = DMX_GET_WINDOW_PRIV(pWindow->parent);
-
- DMX_UNWRAP(ReparentWindow, dmxScreen, pScreen);
-#if 0
- if (pScreen->ReparentWindow)
- pScreen->ReparentWindow(pWindow, pPriorParent);
-#endif
-
- if (pWinPriv->window) {
- if (!pParentPriv->window) {
- dmxCreateAndRealizeWindow(pWindow->parent, FALSE);
- }
-
- /* Handle reparenting on back-end server */
- XReparentWindow(dmxScreen->beDisplay, pWinPriv->window,
- pParentPriv->window,
- pWindow->origin.x - wBorderWidth(pWindow),
- pWindow->origin.x - wBorderWidth(pWindow));
- dmxSync(dmxScreen, False);
- }
-
- DMX_WRAP(ReparentWindow, dmxReparentWindow, dmxScreen, pScreen);
- dmxUpdateWindowInfo(DMX_UPDATE_REPARENT, pWindow);
-}
-
-/** Change border width for \a pWindow to \a width pixels. */
-void dmxChangeBorderWidth(WindowPtr pWindow, unsigned int width)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- unsigned int m;
- XWindowChanges c;
-
- DMX_UNWRAP(ChangeBorderWidth, dmxScreen, pScreen);
-#if 1
- if (pScreen->ChangeBorderWidth)
- pScreen->ChangeBorderWidth(pWindow, width);
-#endif
-
- /* NOTE: Do we need to check for on/off screen here? */
-
- if (pWinPriv->window) {
- /* Handle border width change on back-end server */
- m = CWBorderWidth;
- c.border_width = width;
-
- XConfigureWindow(dmxScreen->beDisplay, pWinPriv->window, m, &c);
- dmxSync(dmxScreen, False);
- }
-
- DMX_WRAP(ChangeBorderWidth, dmxChangeBorderWidth, dmxScreen, pScreen);
-}
-
-#ifdef SHAPE
-static void dmxDoSetShape(WindowPtr pWindow)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- int nBox;
- BoxPtr pBox;
- int nRect;
- XRectangle *pRect;
- XRectangle *pRectFirst;
-
- /* First, set the bounding shape */
- if (wBoundingShape(pWindow)) {
- pBox = REGION_RECTS(wBoundingShape(pWindow));
- nRect = nBox = REGION_NUM_RECTS(wBoundingShape(pWindow));
- pRectFirst = pRect = xalloc(nRect * sizeof(*pRect));
- while (nBox--) {
- pRect->x = pBox->x1;
- pRect->y = pBox->y1;
- pRect->width = pBox->x2 - pBox->x1;
- pRect->height = pBox->y2 - pBox->y1;
- pBox++;
- pRect++;
- }
- XShapeCombineRectangles(dmxScreen->beDisplay, pWinPriv->window,
- ShapeBounding, 0, 0,
- pRectFirst, nRect,
- ShapeSet, YXBanded);
- xfree(pRectFirst);
- } else {
- XShapeCombineMask(dmxScreen->beDisplay, pWinPriv->window,
- ShapeBounding, 0, 0, None, ShapeSet);
- }
-
- /* Next, set the clip shape */
- if (wClipShape(pWindow)) {
- pBox = REGION_RECTS(wClipShape(pWindow));
- nRect = nBox = REGION_NUM_RECTS(wClipShape(pWindow));
- pRectFirst = pRect = xalloc(nRect * sizeof(*pRect));
- while (nBox--) {
- pRect->x = pBox->x1;
- pRect->y = pBox->y1;
- pRect->width = pBox->x2 - pBox->x1;
- pRect->height = pBox->y2 - pBox->y1;
- pBox++;
- pRect++;
- }
- XShapeCombineRectangles(dmxScreen->beDisplay, pWinPriv->window,
- ShapeClip, 0, 0,
- pRectFirst, nRect,
- ShapeSet, YXBanded);
- xfree(pRectFirst);
- } else {
- XShapeCombineMask(dmxScreen->beDisplay, pWinPriv->window,
- ShapeClip, 0, 0, None, ShapeSet);
- }
-
- if (XShapeInputSelected(dmxScreen->beDisplay, pWinPriv->window)) {
- ErrorF("Input selected for window %x on Screen %d\n",
- (unsigned int)pWinPriv->window, pScreen->myNum);
- }
-}
-
-/** Set shape of \a pWindow on the back-end server. */
-void dmxSetShape(WindowPtr pWindow)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
-
- DMX_UNWRAP(SetShape, dmxScreen, pScreen);
-#if 1
- if (pScreen->SetShape)
- pScreen->SetShape(pWindow);
-#endif
-
- if (pWinPriv->window) {
- /* Handle setting the current shape on the back-end server */
- dmxDoSetShape(pWindow);
- dmxSync(dmxScreen, False);
- } else {
- pWinPriv->isShaped = TRUE;
- }
-
- DMX_WRAP(SetShape, dmxSetShape, dmxScreen, pScreen);
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/dmxwindow.h b/nx-X11/programs/Xserver/hw/dmx/dmxwindow.h
deleted file mode 100644
index e6302fe3f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/dmxwindow.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/* $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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-/** \file
- * Interface for window support. \see dmxwindow.c */
-
-#ifndef DMXWINDOW_H
-#define DMXWINDOW_H
-
-#include "windowstr.h"
-
-/** Window private area. */
-typedef struct _dmxWinPriv {
- Window window;
- Bool offscreen;
- Bool mapped;
- Bool restacked;
- unsigned long attribMask;
- Colormap cmap;
- Visual *visual;
-#ifdef SHAPE
- Bool isShaped;
-#endif
-#ifdef RENDER
- Bool hasPict;
-#endif
-#ifdef GLXEXT
- void *swapGroup;
- int barrier;
- void (*windowDestroyed)(WindowPtr);
- void (*windowUnmapped)(WindowPtr);
-#endif
-} dmxWinPrivRec, *dmxWinPrivPtr;
-
-
-extern Bool dmxInitWindow(ScreenPtr pScreen);
-
-extern Window dmxCreateRootWindow(WindowPtr pWindow);
-
-extern void dmxGetDefaultWindowAttributes(WindowPtr pWindow,
- Colormap *cmap,
- Visual **visual);
-extern void dmxCreateAndRealizeWindow(WindowPtr pWindow, Bool doSync);
-
-extern Bool dmxCreateWindow(WindowPtr pWindow);
-extern Bool dmxDestroyWindow(WindowPtr pWindow);
-extern Bool dmxPositionWindow(WindowPtr pWindow, int x, int y);
-extern Bool dmxChangeWindowAttributes(WindowPtr pWindow, unsigned long mask);
-extern Bool dmxRealizeWindow(WindowPtr pWindow);
-extern Bool dmxUnrealizeWindow(WindowPtr pWindow);
-extern void dmxRestackWindow(WindowPtr pWindow, WindowPtr pOldNextSib);
-extern void dmxWindowExposures(WindowPtr pWindow, RegionPtr prgn,
- RegionPtr other_exposed);
-extern void dmxPaintWindowBackground(WindowPtr pWindow, RegionPtr pRegion,
- int what);
-extern void dmxPaintWindowBorder(WindowPtr pWindow, RegionPtr pRegion,
- int what);
-extern void dmxCopyWindow(WindowPtr pWindow, DDXPointRec ptOldOrg,
- RegionPtr prgnSrc);
-
-extern void dmxResizeWindow(WindowPtr pWindow, int x, int y,
- unsigned int w, unsigned int h, WindowPtr pSib);
-extern void dmxReparentWindow(WindowPtr pWindow, WindowPtr pPriorParent);
-
-extern void dmxChangeBorderWidth(WindowPtr pWindow, unsigned int width);
-
-extern void dmxResizeScreenWindow(ScreenPtr pScreen,
- int x, int y, int w, int h);
-extern void dmxResizeRootWindow(WindowPtr pRoot,
- int x, int y, int w, int h);
-
-extern Bool dmxBEDestroyWindow(WindowPtr pWindow);
-
-#ifdef SHAPE
-/* Support for shape extension */
-extern void dmxSetShape(WindowPtr pWindow);
-#endif
-
-/** Private index. \see dmxwindow.c \see dmxscrinit.c */
-extern int dmxWinPrivateIndex;
-
-/** Get window private pointer. */
-#define DMX_GET_WINDOW_PRIV(_pWin) \
- ((dmxWinPrivPtr)(_pWin)->devPrivates[dmxWinPrivateIndex].ptr)
-
-/* All of these macros are only used in dmxwindow.c */
-#define DMX_WINDOW_FUNC_PROLOGUE(_pGC) \
-do { \
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(_pGC); \
- DMX_UNWRAP(funcs, pGCPriv, (_pGC)); \
- if (pGCPriv->ops) \
- DMX_UNWRAP(ops, pGCPriv, (_pGC)); \
-} while (0)
-
-#define DMX_WINDOW_FUNC_EPILOGUE(_pGC) \
-do { \
- dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(_pGC); \
- DMX_WRAP(funcs, &dmxGCFuncs, pGCPriv, (_pGC)); \
- if (pGCPriv->ops) \
- DMX_WRAP(ops, &dmxGCOps, pGCPriv, (_pGC)); \
-} while (0)
-
-#define DMX_WINDOW_X1(_pWin) \
- ((_pWin)->drawable.x - wBorderWidth(_pWin))
-#define DMX_WINDOW_Y1(_pWin) \
- ((_pWin)->drawable.y - wBorderWidth(_pWin))
-#define DMX_WINDOW_X2(_pWin) \
- ((_pWin)->drawable.x + wBorderWidth(_pWin) + (_pWin)->drawable.width)
-#define DMX_WINDOW_Y2(_pWin) \
- ((_pWin)->drawable.y + wBorderWidth(_pWin) + (_pWin)->drawable.height)
-
-#define DMX_WINDOW_OFFSCREEN(_pWin) \
- (DMX_WINDOW_X1(_pWin) >= (_pWin)->drawable.pScreen->width || \
- DMX_WINDOW_Y1(_pWin) >= (_pWin)->drawable.pScreen->height || \
- DMX_WINDOW_X2(_pWin) <= 0 || \
- DMX_WINDOW_Y2(_pWin) <= 0)
-
-#endif /* DMXWINDOW_H */
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/DMXSpec-v1.txt b/nx-X11/programs/Xserver/hw/dmx/doc/DMXSpec-v1.txt
deleted file mode 100644
index 423bc32f8..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/DMXSpec-v1.txt
+++ /dev/null
@@ -1,458 +0,0 @@
-
-
- Client-to-Server DMX Extension to the X Protocol
-
- $Date: 2004/06/30 20:06:54 $, $Revision: 1.1 $
-
- Rickard E. (Rik) Faith (faith@redhat.com)
- Kevin E. Martin (kem@redhat.com)
-
- Copyright 2002,2003 Red Hat Inc., Raleigh, North Carolina.
-
- 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.
-
-
-
-1. Overview
-
- The client-to-server DMX extension to the X protocol (DMX) provides
- normal client applications with the ability to determine information
- about the characteristics of the Xdmx server and the back-end X
- servers that DMX is using.
-
- The name for this extension is "DMX".
-
-
-
-2. Syntactic conventions
-
- This document uses the same syntactic conventions requests and data
- types as [X11R6.4].
-
-
-
-3. Data types
-
- No new data types are defined by this extension. All data types
- referenced in this document are defined in [X11R6.4].
-
-
-
-4. Requests
-
- DMXQueryVersion
- ==>
- majorVersion: CARD32
- minorVersion: CARD32
- patchVersion: CARD32
-
- The protocol this extension actually supports is indicated by
- majorVersion and minorVersion (patchVersion indicates the
- patchlevel and is for informational purposes only).
-
- Any incompatible changes to the protocol should be indicated by
- incrementing majorVersion.
-
- Small, upward-compatible changes should be indicated by incrementing
- minorVersion.
-
- Servers that support the protocol defined in this document will
- return a majorVersion of 1 and a minorVersion of 1.
-
-
-
- DMXGetScreenCount
- ==>
- screenCount: CARD32
-
- This request returns the number of back-end screens that the Xdmx
- server controls. A back-end screen may be managed as a regular X
- screen in the Xdmx server or may be joined with other back-end
- screens using Xinerama. (The information returned by this request
- does not change while Xdmx is running and may be cached on the
- client side.)
-
-
-
- DMXGetScreenInformation
- physicalScreen: CARD32
- ==>
- displayName: STRING8
- width: CARD16
- height: CARD16
- xoffset: INT16
- yoffset: INT16
- logicalScreen: CARD32
- xorigin: INT16
- yorigin: INT16
-
- Errors: Value
-
- This request returns information about individual back-end screens.
- The physicalScreen value is between 0 and screenCount-1, inclusive
- (values outside this range will result in a Value error). The
- displayname is the name used to open the display, either from the
- Xdmx command-line or from the configuration file. The width,
- height, xoffset, and yoffset values comprise a geometry
- specification (see X(7x)) for the location of the DMX window on the
- back-end screen. This request will always return non-negative
- (i.e., normalized) values for xoffset and yoffset. The
- logicalScreen value is the value of the screen that that Xdmx server
- exports to clients. When Xinerama is in use, this value is
- typically 0 for all values of physicalScreen. If Xinerama is in
- use, the xorigin and yorigin values specify where the physical
- screen is positioned in the global Xinerama coordinate system.
- Otherwise, these values are set to 0. (The information returned by
- this request does not change while Xdmx is running and may be cached
- on the client side.)
-
-
-
- DMXGetWindowInformation
- window: CARD32
- ==>
- screenCount: CARD32
- screens: LISTofCARD32
- windows: LISTofCARD32
- pos: LISTofRECTANGLE
- vis: LISTofRECTANGLE
-
- Errors: Window, Alloc
-
- This request computed the return values incorrectly for version 1.0
- of this protocol. Version 1.1 of this protocol conforms to this
- description.
-
- Given a window ID on the Xdmx server, this request returns data
- about how the window is represented on the back-end X servers. For
- each back-end X server that displays a portion of the window, the
- following information is returned:
- 1) the number of the physical screen containing that portion
- (which can be used with the DMXGetScreenInformation request
- to obtain more information about the screen),
- 2) the window ID on the back-end X server of the window
- containing that portion,
- 3) the position and dimensions of the window on the back-end, in
- screen coordinates, and
- 4) the visible area of the window on the back-end, in
- window-relative coordinates (all zeros for windows that are
- not visible)
- Note that DMX allows multiple back-end windows to overlap in their
- view of the DMX logical window. Further, a logical window does not
- have to be completely covered by back-end windows -- there may be
- gaps.
-
- As an example, consider a 500x500 window that spans the top two
- 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
- composed of 4 1024x768 back-end displays arranged in a cube:
- A B
- C D
-
- In this case, the DMXGetWindowInformation call would return the
- following information for the 500x500 window:
-
- display A: 500x500 window at 1024-250,0 (relative to back end)
- with 250x500 visible at 0,0 (relative to window origin)
-
- display B: 500x500 window at -250,0 (relative to back end)
- with 250x500 visible at 250,0 (relative to window origin)
-
- display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
-
- display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
-
- Note that if the specified window has not yet been mapped when
- DMXGetWindowInformation is called, then a subsequent XMapWindow call
- might be buffered in xlib while requests directly to the back-end X
- servers are processed. This race condition can be solved by calling
- DMXSync before talking directly to the back-end X servers.
-
-
- DMXGetInputCount
- ==>
- inputCount: CARD32
-
- This request was first supported in version 1.1 of this protocol.
-
- This request returns the number of input devices connected to the
- Xdmx server. This number is the same as that returned by
- XListInputDevices, but is available even when the XInput extension
- is not supported.
-
-
-
- DMXGetInputInformation
- deviceId: CARD32
- ==>
- inputType: CARD32
- physicalScreen: CARD32
- physicalId: CARD32
- isCore: BOOL
- sendsCore: BOOL
- name: STRING8
-
- Errors: Value
-
- This request was first supported in version 1.1 of this protocol.
-
- This request returns information about the specified input device
- that cannot be obtained from the XListInputDeivices call. The
- deviceId is the same as that used by the XListInputDevices call, and
- must be in the range 0 to inputCount-1, inclusive (values outside
- this range will result in a Value error).
-
- The value of inputType will always be value, and will be one of the
- following values:
- 0 for local (and dummy) devices,
- 1 for console devices, and
- 2 for back-end devices.
-
- For local devices, all other fields returned, except isCore and
- sendsCore, are invalid.
-
- For console devices, the physicalScreen and physicalID will be
- invalid, and the name will return the name of the X server on which
- the console window is displayed.
-
- For back-end devices, the physicalScreen will identify the back-end
- display and can be used as an argument to DMXGetScreenInformation to
- obtain more information; the physicalId will be the XInput device id
- on the back-end X server; and the name will be invalid (since it
- does not provide any additional information that cannot be obtained
- with DMXGetScreenInformation).
-
- If isCore is True, then this device is active as a true core input
- device and will send core events. If sendsCore is True, then this
- device queried an XInput extension device, but sends core events
- instead of extension events. Note that this behavior is different
- from that of XFree86, where XInput extension devices may send both
- extension events and core events.
-
-
-
- DMXForceWindowCreation
- window: CARD32
- ==>
-
- Errors: Window
-
- This request was first supported in version 1.2 of this protocol.
-
- When using the lazy window creation optimization, windows are not
- created on the back-end X servers until they are required. This
- request forces the immediate creation of the window requested.
-
-
-
- DMXReconfigureScreen
- screen: CARD32
- x: INT16
- y: INT16
- ==>
- status: CARD32
-
- Errors: Value
-
- This request was first supported in version 1.3 of this protocol.
-
- This request reconfigures the screen position to coordinates (x,y)
- when using the Xinerama extension. Otherwise, it is a NOP. Illegal
- values for screen will result in a BadValue error. Other non-fatal
- errors will be returned in status.
-
-
-
- DMXSync
- ==>
-
- This request was first supported in version 1.5 of this protocol.
-
- This request flushes all pending protocol requests between the Xdmx
- server and each back-end X server. It is used by a client that
- talks directly to back-end X servers
-
- To ensure proper synchronization semantics, this request has a
- reply, but the reply does not carry any information.
-
-
-
-5. Events
-
- No new events are defined by this extension.
-
-
-
-6. Errors
-
- No new events are defined by this extension.
-
-
-
-7. Encoding
-
- DMXQueryVersion
- 1 CARD8 opcode (X assigned)
- 1 0 DMX opcode (X_DMXQueryVersion)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 majorVersion
- 4 CARD32 minorVersion
- 4 CARD32 patchVersion
- 12 unused
-
- DMXGetScreenCount
- 1 CARD8 opcode (X assigned)
- 1 1 DMX opcode (X_DMXGetScreenCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 screenCount
- 20 unused
-
- DMXGetScreenInformation
- 1 CARD8 opcode (X assigned)
- 1 2 DMX opcode (X_DMXGetScreenInformation)
- 2 2 request length
- 4 CARD32 physicalScreen
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n/4+p reply length
- 4 n displayNameLength
- 2 CARD16 width
- 2 CARD16 height
- 2 INT16 xoffset
- 2 INT16 yoffset
- 4 CARD32 logicalScreen
- 2 INT16 xorigin
- 2 INT16 yorigin
- 4 unused
- n displayName
- p pad(n)
-
- DMXGetWindowInformation
- 1 CARD8 opcode (X assigned)
- 1 3 DMX opcode (X_DMXGetWindowInformation)
- 2 2 request length
- 4 CARD32 window
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n*6 reply length
- 4 n screenCount
- 20 unused
- n*4 LISTofCARD32 screens
- n*4 LISTofCARD32 windows
- n*8 LISTofRECTANGLE pos
- n*8 LISTofRECTANGLE vis
-
- DMXGetInputCount
- 1 CARD8 opcode (X assigned)
- 1 DMX opcode (X_DMXGetInputCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 inputCount
- 20 unused
-
- DMXGetInputInformation
- 1 CARD8 opcode (X assigned)
- 1 4 DMX opcode (X_DMXGetInputInformation)
- 2 2 request length
- 4 CARD32 deviceId
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n/4+p reply length
- 4 CARD32 inputType
- 4 CARD32 physicalScreen
- 4 CARD32 physicalId
- 4 n nameLength
- 1 BOOL isCore
- 1 BOOL sendsCore
- 6 unused
- n name
- p pad(n)
-
- DMXForceWindowCreation
- 1 CARD8 opcode (X assigned)
- 1 2 DMX opcode (X_DMXForceWindowCreation)
- 2 2 request length
- 4 CARD32 window
- ==>
-
- DMXReconfigureScreen
- 1 CARD8 opcode (X assigned)
- 1 2 DMX opcode (X_DMXReconfigureScreen)
- 2 2 request length
- 4 CARD32 screen
- 2 INT16 x
- 2 INT16 y
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXSync
- 1 CARD8 opcode (X assigned)
- 1 0 DMX opcode (X_DMXSync)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 24 unused
-
-
-8. Changes to existing requests/replies/events
-
- No changes to existing requests, replies, or events are necessitated
- by this extension.
-
-
-
-9. Acknowledgments
-
-
-
-10. References
-
- [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
- Standard, X Version 11, Release 6.4. Available from
- xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/DMXSpec.txt b/nx-X11/programs/Xserver/hw/dmx/doc/DMXSpec.txt
deleted file mode 100644
index 9283ce1ce..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/DMXSpec.txt
+++ /dev/null
@@ -1,875 +0,0 @@
-
-
- Client-to-Server DMX Extension to the X Protocol
-
- $Date: 2004/06/30 20:06:54 $, $Revision: 1.1 $
-
- Rickard E. (Rik) Faith (faith@redhat.com)
- Kevin E. Martin (kem@redhat.com)
-
- Copyright 2002-2004 Red Hat Inc., Raleigh, North Carolina.
-
- 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.
-
-
-
-1. Overview
-
- The client-to-server DMX extension to the X protocol (DMX) provides
- normal client applications with the ability to determine information
- about the characteristics of the Xdmx server and the back-end X
- servers that DMX is using.
-
- The name for this extension is "DMX".
-
-
-
-2. Syntactic conventions
-
- This document uses the same syntactic conventions requests and data
- types as [X11R6.4].
-
-
-
-3. Data types
-
- No new data types are defined by this extension. All data types
- referenced in this document are defined in [X11R6.4].
-
-
-
-4. Requests
-
- DMXQueryVersion
- ==>
- majorVersion: CARD32
- minorVersion: CARD32
- patchVersion: CARD32
-
- Errors: None
-
- The protocol this extension actually supports is indicated by
- majorVersion and minorVersion (patchVersion indicates the
- patchlevel and is for informational purposes only).
-
- Any incompatible changes to the protocol should be indicated by
- incrementing majorVersion.
-
- Small, upward-compatible changes should be indicated by incrementing
- minorVersion.
-
- Servers that support the protocol defined in this document will
- return a majorVersion of 2 and a minorVersion of 2.
-
- (Version 1.5 was the last version in the 1.x series; version 2.0 was
- a testing version that was poorly defined.)
-
-
-
- DMXSync
- ==>
- status: CARD32
-
- Errors: None
-
- This request was first supported in version 1.5 of this protocol.
- The status field in the reply was introduced in version 2.0 of this
- protocol. Since the status field is ignored, no changes to the
- underlying protocol were required.
-
- This request flushes all pending protocol requests between the Xdmx
- server and each back-end X server. It is used by clients that
- talk directly to back-end X servers to ensure that all pending Xdmx
- requests have reached all back-end servers and have been processed
- by those servers.
-
- The value of status is always 0.
-
-
-
- DMXForceWindowCreation
- window: CARD32
- ==>
- status: CARD32
-
- Errors: Window
-
- This request was first supported in version 1.2 of this protocol.
- This request was changed to have a reply in version 2.0 of this
- protocol. The old version of this request was deprecated and will
- return BadImplementation.
-
- When using the lazy window creation optimization, windows are not
- created on the back-end X servers until they are required. This
- request forces the immediate creation of the window requested.
-
- The value of status is always 0.
-
-
-
-
- DMXGetScreenCount
- ==>
- screenCount: CARD32
-
- Errors: None
-
- This request returns the number of screens that the Xdmx server
- controls. Since a DMX screen usually fills all of the available
- area on a back-end server, there is usually a one-to-one
- correspondence between DMX screens and backend servers. However, it
- is also possible for a DMX screen to cover only part of the
- available area on a back-end server, and for more than one DMX
- screen to occupy different parts of the visible area on the same
- back-end server.
-
- A DMX screen may be managed as a regular X screen in the Xdmx server
- or may be joined with other DMX screens using Xinerama.
-
-
-
- DMXGetScreenAttributes
- physicalScreen: CARD32
- ==>
- displayName: STRING8
- logicalScreen: CARD32
- screenWindowWidth: CARD16
- screenWindowHeight: CARD16
- screenWindowXoffset: INT16
- screenWindowYoffset: INT16
- rootWindowWidth: CARD16
- rootWindowHeight: CARD16
- rootWindowXoffset: INT16
- rootWindowYoffset: INT16
- rootWindowXorigin: INT16
- rootWindowYorigin: INT16
-
- Errors: Value
-
- This request is new in version 2.0 of this protocol. The old
- DMXGetScreenInformation request is deprecated and will now return
- BadImplementation.
-
- This request returns attributes about a single DMX screen.
-
- The physicalScreen value is between 0 and screenCount-1, inclusive
- (values outside this range will result in a Value error).
-
- The displayname is the name used to open the display, either from
- the Xdmx command-line or from the configuration file.
-
- The logicalScreen value is the value of the screen that that Xdmx
- server exports to clients. When Xinerama is in use, this value is
- typically 0 for all values of physicalScreen. If Xinerama is in
- use, the rootWindowXOrigin and rootWindowYOrigin values specify
- where the physical screen is positioned in the global Xinerama
- coordinate system. Otherwise, these values are set to 0.
-
- The screenWindow values comprise a geometry specification (see
- X(7x)) for the location of the DMX screen on the back-end screen.
- The coordinant system of the back-end display is used.
-
- The first four rootWindow values comprise a geometry specification
- (see X(7x)) for the location of the root window on the screen
- window. The coordinant system of the screen window is used. In
- most cases, the root window will have the same geometry as the DMX
- screen window, and will occupy the same area of the back-end
- display. (This would not be the case, for example, if automatic
- projector alignment is used.)
-
-
-
- DMXChangeScreensAttributes
- screenCount: CARD32
- maskCount: CARD32
- screens: LISTofCARD32
- valueMasks: LISTofCARD32
- valueList: LISTofVALUES
- ==>
- status: CARD32
- errorScreen: CARD32
-
- Errors: Length, Alloc
-
- This request was first supported in version 2.0 of this protocol.
- (A singular version of this request with the ability to change some
- RootWindow attributes was supported in version 1.3 of this protocol,
- has been deprecated, and will return BadImplementation.)
-
- This request changes the geometries and positions of the DMX screen
- and DMX root windows on the back-end X servers.
-
- The valueMask and valueList specify which attributes are to be
- changed. The possible values are:
-
- Attribute Type
-
- ScreenWindowWidth CARD16
- ScreenWindowHeight CARD16
- ScreenWindowXoffset INT16
- ScreenWindowYoffset INT16
- RootWindowWidth CARD16
- RootWindowHeight CARD16
- RootWindowXoffset INT16
- RootWindowYoffset INT16
- RootWindowXorigin INT16
- RootWindowYorigin INT16
-
- The attribute values have the same meaning as do the corresponding
- values for DMXGetScreenAttributes.
-
- Non-fatal errors will be returned in status (0 otherwise):
- DmxBadXinerama: Xinerama is not active
- DmxBadValue: The resulting position is not allowed
- (e.g., one corner is outside the bounding box)
- On error, errorScreen will contain the number of the screen that
- caused the first error.
-
-
-
- DMXAddScreen
- displayName: STRING8
- physicalScreen: CARD32
- valueMask: CARD32
- valueList: LISTofVALUES
- ==>
- status: CARD32
- physicalScreen: CARD32
-
- Errors: Length, Alloc, Value
-
- This request was first supported in version 2.2 of this protocol.
-
- This request re-attaches the back-end physicalScreen to the Xdmx
- server. Only back-end screens that have been previously detached
- with DMXRemoveScreen may be added. The name of the back-end display
- is given in displayName, and this will replace the name of the
- back-end screen that was detached. Both the displayName and
- physicalScreen must be correct for this request to work.
-
- The valueMask and valueList specify the attributes to be used. The
- possible values are:
-
- Attribute Type
-
- ScreenWindowWidth CARD16
- ScreenWindowHeight CARD16
- ScreenWindowXoffset INT16
- ScreenWindowYoffset INT16
- RootWindowWidth CARD16
- RootWindowHeight CARD16
- RootWindowXoffset INT16
- RootWindowYoffset INT16
- RootWindowXorigin INT16
- RootWindowYorigin INT16
-
- The attribute values have the same meaning as do the corresponding
- values for DMXGetScreenAttributes.
-
- On success, status will be 0 and physicalScreen will contain the new
- screen number. On failure, status will be non-zero. The status
- will be 1 if any of the following occured:
- * the -addremovescreens command-line option was not specified on
- the Xdmx command line
- * the value of physicalScreen is out of range
- * physicalScreen has not been detached (with DMXRemoveScreen)
- * displayName cannot be opened
- * the visuals of displayname do not match the visuals that Xdmx
- is using
- * the screen data for displayName does not match the data for the
- previously removed display
- The status will be DmxBadValue if the attribute values are out of
- range.
-
-
-
- DMXRemoveScreen
- physicalScreen: CARD32
- ==>
- status: CARD32
-
- Errors: None
-
- This request was first supported in version 2.2 of this protocol.
-
- This request detaches the physicalScreen screen.
-
- On success, status will be 0. On failure, the status will 1 if any
- of the following occur:
- * the -addremovescreens command-line option was not specified on
- the Xdmx command line
- * the value of physicalScreen is out of range
- * the back-end screen has already been detached.
-
-
-
- DMXGetWindowAttributes
- window: CARD32
- ==>
- screenCount: CARD32
- screens: LISTofCARD32
- windows: LISTofCARD32
- pos: LISTofRECTANGLE
- vis: LISTofRECTANGLE
-
- Errors: Window, Alloc
-
- This request computes the return values incorrectly for version 1.0
- of this protocol. Version 1.1 of this protocol conforms to this
- description. In version 2.0, the name of this request was changed
- from DMXGetWindowInformation. However, since the request itself did
- not change, no changes to the underlying protocol were made.
-
- Given a window ID on the Xdmx server, this request returns data
- about how the window is represented on the back-end X servers. For
- each back-end X server that displays a portion of the window, the
- following information is returned:
- 1) the number of the physical screen containing that portion
- (which can be used with the DMXGetScreenAttributes request
- to obtain more information about the screen),
- 2) the window ID on the back-end X server of the window
- containing that portion,
- 3) the position and dimensions of the window on the back-end, in
- screen coordinates, and
- 4) the visible area of the window on the back-end, in
- window-relative coordinates (all zeros for windows that are
- not visible).
- Note that DMX allows multiple back-end windows to overlap in their
- view of the DMX logical window. Further, a logical window does not
- have to be completely covered by back-end windows -- there may be
- gaps.
-
- As an example, consider a 500x500 window that spans the top two
- 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
- composed of 4 1024x768 back-end displays arranged in a cube:
- A B
- C D
-
- In this case, the DMXGetWindowAttributes call would return the
- following information for the 500x500 window:
-
- display A: 500x500 window at 1024-250,0 (relative to back end)
- with 250x500 visible at 0,0 (relative to window origin)
-
- display B: 500x500 window at -250,0 (relative to back end)
- with 250x500 visible at 250,0 (relative to window origin)
-
- display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
-
- display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
-
- Note that if the specified window has not yet been mapped when
- DMXGetWindowAttributes is called, then a subsequent XMapWindow call
- might be buffered in xlib while requests directly to the back-end X
- servers are processed. This race condition can be solved by calling
- DMXSync before talking directly to the back-end X servers.
-
-
-
- DMXGetDesktopAttributes
- ==>
- width: INT16
- height: INT16
- shiftX: INT16
- shiftY: INT16
-
- Errors: None
-
- This request was first supported in version 2.0 of this protocol.
-
- This request returns the size of the bounding box of the whole
- screen in width and height. The shiftX and shiftY values will
- always be 0. The global bounding box is computed whether or not
- Xinerama is active, and may be larger than the Xinerama screen size
- because of information in the configuration file.
-
-
-
- DMXChangeDesktopAttributes
- valueMask: BITMASK
- valueList: LISTofVALUE
- ==>
- status: CARD32
-
- Errors: Length, Value
-
- This request was first supported in version 2.0 of this protocol.
-
- This request resizes the bounding box of the whole screen when using
- the Xinerama extension. Otherwise, it has no effect on the screen
- layout. The valueMask and valueList specify which attributes are to
- be changed. The possible values are:
-
- Attriubute Type
-
- Width INT16
- Height INT16
- ShiftX INT16
- ShiftY INT16
-
- Width and Height specify the new width and height for the bounding
- box. ShiftX and ShiftY specify where the Xinerama origin will be
- placed with respect to the origin of the new bounding box. This
- allows the left and upper edges of the bounding box to be changed
- without changing the visual position of the windows on the desktop.
- If Width or Height is not specified, the current values will be
- used. If ShiftX or ShiftY is not specified, 0 will be used.
-
- All coordinants are in the global DMX coordinant system. If
- Xinerama is not active, this request is not useful.
-
- Non-fatal errors will be returned in status (0 otherwise):
- DmxBadXinerama: Xinerama is not active
- DmxBadValue: The size of the bounding box is too large
-
-
-
- DMXGetInputCount
- ==>
- inputCount: CARD32
-
- This request was first supported in version 1.1 of this protocol.
-
- This request returns the number of input devices connected to the
- Xdmx server. This number is the same as that returned by
- XListInputDevices, but is available even when the XInput extension
- is not supported.
-
-
-
- DMXGetInputAttributes
- deviceId: CARD32
- ==>
- inputType: CARD32
- physicalScreen: CARD32
- physicalId: CARD32
- isCore: BOOL
- sendsCore: BOOL
- detached: BOOL
- name: STRING8
-
- Errors: Value
-
- This request was first supported in version 1.1 of this protocol.
- In version 2.0, the name of this request was changed from
- DMXGetInputInformation. However, since the request itself did not
- change, no changes to the underlying protocol were made. In version
- 2.2, the name of detached was changed from reservation. There was
- no change in underlying protocol.
-
- This request returns information about the specified input device
- that cannot be obtained from the XListInputDeivices call. The
- deviceId is the same as that used by the XListInputDevices call, and
- must be in the range 0 to inputCount-1, inclusive (values outside
- this range will result in a Value error).
-
- The value of inputType will always be valid, and will be one of the
- following values:
- 0 for local (and dummy) devices,
- 1 for console devices, and
- 2 for back-end devices.
-
- For local devices, all other fields returned, except isCore and
- sendsCore, are invalid.
-
- For console devices, the physicalScreen and physicalID will be
- invalid, and the name will return the name of the X server on which
- the console window is displayed.
-
- For back-end devices, the physicalScreen will identify the back-end
- display and can be used as an argument to DMXGetScreenAttributes to
- obtain more information; the physicalId will be the XInput device id
- on the back-end X server; and the name will be invalid (since it
- does not provide any additional information that cannot be obtained
- with DMXGetScreenAttributes).
-
- If isCore is True, then this device is active as a true core input
- device and will send core events. If sendsCore is True, then this
- device is an XInput extension device, but sends core events instead
- of extension events. Note that this behavior is different from that
- of XFree86 or Xorg, where XInput extension devices may send both
- extension events and core events.
-
- If detached is True, then this device has been detached and is no
- longer producing input events. The device may be reattached using
- DMXAddInput.
-
-
-
- DMXAddInput
- displayName: STRING8
- valueMask: CARD32
- valueList: LISTofVALUES
- ==>
- status: CARD32
- physicalId: CARD32
-
- Errors: Value, Access
-
- This request was first supported in version 2.2 of this protocol.
-
- The valueMask and valueList specify the attributes to be used. The
- possible values are:
-
- Attribute Type
-
- InputType CARD32
- InputPhysicalScreen CARD32
- InputSendsCore BOOL
-
- This request attaches an input device to the Xdmx server. The value
- of inputType will be one:
- 1 for console devices, and
- 2 for back-end devices.
- Other values of InputType will return a BadValue error. Local
- devices (inputType=0 in DMXGetInputAttributes) cannot be attached or
- removed. For console devices, displayName will store the name of
- the display to be used.
-
- For back-end devices, InputPhysicalScreen will specify the screen
- number. BadValue will be returned if the screen number is out of
- range. BadAccess will be returned if the input has already been
- attached or if the backend screen is currently detached.
-
- If InputSendsCore is True, the new device will be added as a true
- core device.
-
- If a device was removed with DMXRemoveInput an attempt will be made
- to reconnect the previous devices (InputSendsCore is ignored in this
- case).
-
-
-
- DMXRemoveInput
- physicalId: CARD32
- ==>
- status: CARD32
-
- Errors: Value, Access
-
- This request was first supported in version 2.2 of this protocol.
-
- This request detaches the input device with physicalId, and all
- associated inputs (e.g., if the physicalId is a backend mouse, and a
- keyboard is also attached to the backend, then both devices will be
- detached). If the physicalId is outside the valid range (0 to one
- less than the value returned by DMXInputCount), BadValue is
- returned. If the physicalId has already been detached, BadAccess is
- returned. The status is always 0.
-
-
-
-5. Events
-
- No new events are defined by this extension.
-
-
-
-6. Errors
-
- No new events are defined by this extension.
-
-
-
-7. Encoding
-
- Deprecated DMX opcodes:
- DMXGetScreenInformation 2
- DMXForceWindowCreation 6
- DMXReconfigureScreen 7
-
- Valid DMX opcodes:
- DMXQueryVersion 0
- DMXSync 8
- DMXForceWindowCreation 9
-
- DMXGetScreenCount 1
- DMXGetScreenAttributes 10
- DMXChangeScreensAttributes 11
- DMXAddScreen 12
- DMXRemoveScreen 13
-
- DMXGetWindowAttributes 3
-
- DMXGetDesktopAttributes 14
- DMXChangeDesktopAttributes 15
-
- DMXGetInputCount 4
- DMXGetInputAttributes 5
- DMXAddInput 16
- DMXRemoveInput 17
-
- DMXQueryVersion
- 1 CARD8 opcode (X assigned)
- 1 0 DMX opcode (X_DMXQueryVersion)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 majorVersion
- 4 CARD32 minorVersion
- 4 CARD32 patchVersion
- 12 unused
-
- DMXSync
- 1 CARD8 opcode (X assigned)
- 1 8 DMX opcode (X_DMXSync)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXForceWindowCreation
- 1 CARD8 opcode (X assigned)
- 1 9 DMX opcode (X_DMXForceWindowCreation)
- 2 2 request length
- 4 CARD32 window
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
-
- DMXGetScreenCount
- 1 CARD8 opcode (X assigned)
- 1 1 DMX opcode (X_DMXGetScreenCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 screenCount
- 20 unused
-
- DMXGetScreenAttributes
- 1 CARD8 opcode (X assigned)
- 1 10 DMX opcode (X_DMXGetScreenAttributes)
- 2 2 request length
- 4 CARD32 physicalScreen
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 1+(n+p)/4 reply length
- 4 n displayNameLength
- 4 CARD32 logicalScreen
- 2 CARD16 screenWindowWidth
- 2 CARD16 screenWindowHeight
- 2 INT16 screenWindowXoffset
- 2 INT16 screenWindowYoffset
- 2 CARD16 rootWindowWidth
- 2 CARD16 rootWindowHeight
- 2 INT16 rootWindowXoffset
- 2 INT16 rootWindowYoffset
- 2 INT16 rootWindowXorigin
- 2 INT16 rootWindowYorigin
- n displayName
- p pad(n)
-
- DMXChangeScreensAttributes
- 1 CARD8 opcode (X assigned)
- 1 11 DMX opcode (X_DMXChangeScreenAttributes)
- 2 3+s+m+n request length
- 4 s screenCount
- 4 m maskCount
- 4s LISTofCARD32 screens
- 4m LISTofCARD32 valueMasks
- 4n LISTofVALUES valueList
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 4 CARD32 errorScreen
- 16 unused
-
-
- DMXAddScreen
- 1 CARD8 opcode (X assigned)
- 1 12 DMX opcode (X_DMXAddScreen)
- 2 3+m+(n+p)/4 request length
- 4 n displayNameLength
- 4 CARD32 physicalScreen
- 4 CARD32 valueMask
- 4m LISTofVALUES valueList
- n displayName
- p pad(n)
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 4 CARD32 physicalScreen
- 16 unused
-
- DMXRemoveScreen
- 1 CARD8 opcode (X assigned)
- 1 13 DMX opcode (X_DMXRemoveScreen)
- 2 2 request length
- 4 CARD32 physicalScreen
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXGetWindowAttributes
- 1 CARD8 opcode (X assigned)
- 1 3 DMX opcode (X_DMXGetWindowAttributes)
- 2 2 request length
- 4 CARD32 window
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n*6 reply length
- 4 n screenCount
- 20 unused
- n*4 LISTofCARD32 screens
- n*4 LISTofCARD32 windows
- n*8 LISTofRECTANGLE pos
- n*8 LISTofRECTANGLE vis
-
- DMXGetDesktopAttributes
- 1 CARD8 opcode (X assigned)
- 1 14 DMX opcode (X_DMXGetDesktopAttributes)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 2 INT16 width
- 2 INT16 height
- 2 INT16 shiftX
- 2 INT16 shiftY
- 16 unused
-
- DMXChangeDesktopAttributes
- 1 CARD8 opcode (X assigned)
- 1 15 DMX opcode (X_DMXChangeDesktopAttributes)
- 2 2+n request length
- 4 BITMASK valueMask
- 4n LISTofVALUES valueList
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXGetInputCount
- 1 CARD8 opcode (X assigned)
- 1 4 DMX opcode (X_DMXGetInputCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 inputCount
- 20 unused
-
- DMXGetInputAttributes
- 1 CARD8 opcode (X assigned)
- 1 5 DMX opcode (X_DMXGetInputAttributes)
- 2 2 request length
- 4 CARD32 deviceId
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 (n+p)/4 reply length
- 4 CARD32 inputType
- 4 CARD32 physicalScreen
- 4 CARD32 physicalId
- 4 n nameLength
- 1 BOOL isCore
- 1 BOOL sendsCore
- 1 BOOL detached
- 5 unused
- n name
- p pad(n)
-
- DMXAddInput
- 1 CARD8 opcode (X assigned)
- 1 16 DMX opcode (X_DMXAddInput)
- 2 3+m+(n+p)/4 request length
- 4 n displayNameLength
- 4 CARD32 valueMask
- 4m LISTofVALUES valueList
- n displayName
- p pad(n)
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 4 CARD32 physicalId
- 16 unused
-
- DMXRemoveInput
- 1 CARD8 opcode (X assigned)
- 1 17 DMX opcode (X_DMXRemoveInput)
- 2 3 request length
- 4 CARD32 physicalId
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
-
-8. Changes to existing requests/replies/events
-
- No changes to existing requests, replies, or events are necessitated
- by this extension.
-
-
-
-9. Acknowledgments
-
-
-
-10. References
-
- [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
- Standard, X Version 11, Release 6.4. Available from
- xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/Imakefile b/nx-X11/programs/Xserver/hw/dmx/doc/Imakefile
deleted file mode 100644
index bf70a4a23..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/Imakefile
+++ /dev/null
@@ -1,10 +0,0 @@
-XCOMM $XFree86$
-
-#include <Server.tmpl>
-#include <lnxdoc.rules>
-
-all::
-
-#if BuildSgmlDocs
-LinuxDocTarget(dmx)
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/Makefile.linux b/nx-X11/programs/Xserver/hw/dmx/doc/Makefile.linux
deleted file mode 100644
index e43901c66..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/Makefile.linux
+++ /dev/null
@@ -1,42 +0,0 @@
-# This is a temporary convenience Makefile that will be removed before
-# merging in to XFree86 tree.
-
-# For RedHat 7.2:
-SGML2TXT = GROFF_NO_SGR= sgml2txt
-SGML2LATEX = sgml2latex
-SGML2HTML = sgml2html
-
-# For RedHat 8.0:
-#SGML2TXT = GROFF_NO_SGR= linuxdoc -B txt
-#SGML2LATEX = linuxdoc -B latex
-#SGML2HTML = linuxdoc -B html
-
-FILES = dmx.sgml scaled.sgml
-
-TXT_FILES = $(FILES:.sgml=.txt)
-DVI_FILES = $(FILES:.sgml=.dvi)
-PS_FILES = $(FILES:.sgml=.ps)
-HTML_FILES = $(FILES:.sgml=.html)
-
-all: txt ps html
- doxygen doxygen.conf
-
-txt: $(TXT_FILES)
-dvi: $(DVI_FILES)
-ps: $(PS_FILES)
-html: $(HTML_FILES)
-
-%.txt: %.sgml
- $(SGML2TXT) $*
-
-%.dvi: %.sgml
- $(SGML2LATEX) --papersize=letter $*
-
-%.ps: %.sgml
- $(SGML2LATEX) --papersize=letter --output=ps $*
-
-%.html: %.sgml
- $(SGML2HTML) --split=0 $*
-
-clean:
- rm -f $(TXT_FILES) $(DVI_FILES) $(PS_FILES) # $(HTML_FILES)
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/dmx.sgml b/nx-X11/programs/Xserver/hw/dmx/doc/dmx.sgml
deleted file mode 100644
index ef66d1195..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/dmx.sgml
+++ /dev/null
@@ -1,2778 +0,0 @@
-<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN">
- <article>
-
- <!-- Title information -->
- <title>Distributed Multihead X design
- <author>Kevin E. Martin, David H. Dawes, and Rickard E. Faith
- <date>29 June 2004 (created 25 July 2001)
- <abstract>
- This document covers the motivation, background, design, and
- implementation of the distributed multihead X (DMX) system. It
- is a living document and describes the current design and
- implementation details of the DMX system. As the project
- progresses, this document will be continually updated to reflect
- the changes in the code and/or design. <it>Copyright 2001 by VA
- Linux Systems, Inc., Fremont, California. Copyright 2001-2004
- by Red Hat, Inc., Raleigh, North Carolina</it>
- </abstract>
-
- <!-- Table of contents -->
- <toc>
-
-<!-- Begin the document -->
-<sect>Introduction
-
-<sect1>The Distributed Multihead X Server
-
-<p>Current Open Source multihead solutions are limited to a single
-physical machine. A single X server controls multiple display devices,
-which can be arranged as independent heads or unified into a single
-desktop (with Xinerama). These solutions are limited to the number of
-physical devices that can co-exist in a single machine (e.g., due to the
-number of AGP/PCI slots available for graphics cards). Thus, large
-tiled displays are not currently possible. The work described in this
-paper will eliminate the requirement that the display devices reside in
-the same physical machine. This will be accomplished by developing a
-front-end proxy X server that will control multiple back-end X servers
-that make up the large display.
-
-<p>The overall structure of the distributed multihead X (DMX) project is
-as follows: A single front-end X server will act as a proxy to a set of
-back-end X servers, which handle all of the visible rendering. X
-clients will connect to the front-end server just as they normally would
-to a regular X server. The front-end server will present an abstracted
-view to the client of a single large display. This will ensure that all
-standard X clients will continue to operate without modification
-(limited, as always, by the visuals and extensions provided by the X
-server). Clients that are DMX-aware will be able to use an extension to
-obtain information about the back-end servers (e.g., for placement of
-pop-up windows, window alignments by the window manager, etc.).
-
-<p>The architecture of the DMX server is divided into two main sections:
-input (e.g., mouse and keyboard events) and output (e.g., rendering and
-windowing requests). Each of these are describe briefly below, and the
-rest of this design document will describe them in greater detail.
-
-<p>The DMX server can receive input from three general types of input
-devices: "local" devices that are physically attached to the machine on
-which DMX is running, "backend" devices that are physically attached to
-one or more of the back-end X servers (and that generate events via the
-X protocol stream from the backend), and "console" devices that can be
-abstracted from any non-back-end X server. Backend and console devices
-are treated differently because the pointer device on the back-end X
-server also controls the location of the hardware X cursor. Full
-support for XInput extension devices is provided.
-
-<p>Rendering requests will be accepted by the front-end server; however,
-rendering to visible windows will be broken down as needed and sent to
-the appropriate back-end server(s) via X11 library calls for actual
-rendering. The basic framework will follow a Xnest-style approach. GC
-state will be managed in the front-end server and sent to the
-appropriate back-end server(s) as required. Pixmap rendering will (at
-least initially) be handled by the front-end X server. Windowing
-requests (e.g., ordering, mapping, moving, etc.) will handled in the
-front-end server. If the request requires a visible change, the
-windowing operation will be translated into requests for the appropriate
-back-end server(s). Window state will be mirrored in the back-end
-server(s) as needed.
-
-<sect1>Layout of Paper
-
-<p>The next section describes the general development plan that was
-actually used for implementation. The final section discusses
-outstanding issues at the conclusion of development. The first appendix
-provides low-level technical detail that may be of interest to those
-intimately familiar with the X server architecture. The final appendix
-describes the four phases of development that were performed during the
-first two years of development.
-
-<p>The final year of work was divided into 9 tasks that are not
-described in specific sections of this document. The major tasks during
-that time were the enhancement of the reconfiguration ability added in
-Phase IV, addition of support for a dynamic number of back-end displays
-(instead of a hard-coded limit), and the support for back-end display
-and input removal and addition. This work is mentioned in this paper,
-but is not covered in detail.
-
-<!-- ============================================================ -->
-<sect>Development plan
-
-<p>This section describes the development plan from approximately June
-2001 through July 2003.
-
-<sect1>Bootstrap code
-
-<p>To allow for rapid development of the DMX server by multiple
-developers during the first development stage, the problem will be
-broken down into three tasks: the overall DMX framework, back-end
-rendering services and input device handling services. However, before
-the work begins on these tasks, a simple framework that each developer
-could use was implemented to bootstrap the development effort. This
-framework renders to a single back-end server and provides dummy input
-devices (i.e., the keyboard and mouse). The simple back-end rendering
-service was implemented using the shadow framebuffer support currently
-available in the XFree86 environment.
-
-<p>Using this bootstrapping framework, each developer has been able to
-work on each of the tasks listed above independently as follows: the
-framework will be extended to handle arbitrary back-end server
-configurations; the back-end rendering services will be transitioned to
-the more efficient Xnest-style implementation; and, an input device
-framework to handle various input devices via the input extension will
-be developed.
-
-<p>Status: The boot strap code is complete. <!-- August 2001 -->
-
-
-<sect1>Input device handling
-
-<p>An X server (including the front-end X server) requires two core
-input devices -- a keyboard and a pointer (mouse). These core devices
-are handled and required by the core X11 protocol. Additional types of
-input devices may be attached and utilized via the XInput extension.
-These are usually referred to as ``XInput extension devices'',
-
-<p>There are some options as to how the front-end X server gets its core
-input devices:
-
-<enum>
- <item>Local Input. The physical input devices (e.g., keyboard and
- mouse) can be attached directly to the front-end X server. In this
- case, the keyboard and mouse on the machine running the front-end X
- server will be used. The front-end will have drivers to read the
- raw input from those devices and convert it into the required X
- input events (e.g., key press/release, pointer button press/release,
- pointer motion). The front-end keyboard driver will keep track of
- keyboard properties such as key and modifier mappings, autorepeat
- state, keyboard sound and led state. Similarly the front-end
- pointer driver will keep track if pointer properties such as the
- button mapping and movement acceleration parameters. With this
- option, input is handled fully in the front-end X server, and the
- back-end X servers are used in a display-only mode. This option was
- implemented and works for a limited number of Linux-specific
- devices. Adding additional local input devices for other
- architectures is expected to be relatively simple.
-
- <p>The following options are available for implementing local input
- devices:
-
- <enum>
- <item>The XFree86 X server has modular input drivers that could
- be adapted for this purpose. The mouse driver supports a wide
- range of mouse types and interfaces, as well as a range of
- Operating System platforms. The keyboard driver in XFree86 is
- not currently as modular as the mouse driver, but could be made
- so. The XFree86 X server also has a range of other input
- drivers for extended input devices such as tablets and touch
- screens. Unfortunately, the XFree86 drivers are generally
- complex, often simultaneously providing support for multiple
- devices across multiple architectures; and rely so heavily on
- XFree86-specific helper-functions, that this option was not
- pursued.
-
-
- <item>The <tt/kdrive/ X server in XFree86 has built-in drivers that
- support PS/2 mice and keyboard under Linux. The mouse driver
- can indirectly handle other mouse types if the Linux utility
- <tt/gpm/ is used as to translate the native mouse protocol into
- PS/2 mouse format. These drivers could be adapted and built in
- to the front-end X server if this range of hardware and OS
- support is sufficient. While much simpler than the XFree86
- drivers, the <tt/kdrive/ drivers were not used for the DMX
- implementation.
-
- <item>Reimplementation of keyboard and mouse drivers from
- scratch for the DMX framework. Because keyboard and mouse
- drivers are relatively trivial to implement, this pathway was
- selected. Other drivers in the X source tree were referenced,
- and significant contributions from other drivers are noted in
- the DMX source code.
- </enum>
-
- <item>Backend Input. The front-end can make use of the core input
- devices attached to one or more of the back-end X servers. Core
- input events from multiple back-ends are merged into a single input
- event stream. This can work sanely when only a single set of input
- devices is used at any given time. The keyboard and pointer state
- will be handled in the front-end, with changes propagated to the
- back-end servers as needed. This option was implemented and works
- well. Because the core pointer on a back-end controls the hardware
- mouse on that back-end, core pointers cannot be treated as XInput
- extension devices. However, all back-end XInput extensions devices
- can be mapped to either DMX core or DMX XInput extension devices.
-
- <item>Console Input. The front-end server could create a console
- window that is displayed on an X server independent of the back-end
- X servers. This console window could display things like the
- physical screen layout, and the front-end could get its core input
- events from events delivered to the console window. This option was
- implemented and works well. To help the human navigate, window
- outlines are also displayed in the console window. Further, console
- windows can be used as either core or XInput extension devices.
-
- <item>Other options were initially explored, but they were all
- partial subsets of the options listed above and, hence, are
- irrelevant.
-
-</enum>
-
-<p>Although extended input devices are not specifically mentioned in the
-Distributed X requirements, the options above were all implemented so
-that XInput extension devices were supported.
-
-<p>The bootstrap code (Xdmx) had dummy input devices, and these are
-still supported in the final version. These do the necessary
-initialization to satisfy the X server's requirements for core pointer
-and keyboard devices, but no input events are ever generated.
-
-<p>Status: The input code is complete. Because of the complexity of the
-XFree86 input device drivers (and their heavy reliance on XFree86
-infrastructure), separate low-level device drivers were implemented for
-Xdmx. The following kinds of drivers are supported (in general, the
-devices can be treated arbitrarily as "core" input devices or as XInput
-"extension" devices; and multiple instances of different kinds of
-devices can be simultaneously available):
- <enum>
- <item> A "dummy" device drive that never generates events.
-
- <item> "Local" input is from the low-level hardware on which the
- Xdmx binary is running. This is the only area where using the
- XFree86 driver infrastructure would have been helpful, and then
- only partially, since good support for generic USB devices does
- not yet exist in XFree86 (in any case, XFree86 and kdrive driver
- code was used where possible). Currently, the following local
- devices are supported under Linux (porting to other operating
- systems should be fairly straightforward):
- <itemize>
- <item>Linux keyboard
- <item>Linux serial mouse (MS)
- <item>Linux PS/2 mouse
- <item>USB keyboard
- <item>USB mouse
- <item>USB generic device (e.g., joystick, gamepad, etc.)
- </itemize>
-
- <item> "Backend" input is taken from one or more of the back-end
- displays. In this case, events are taken from the back-end X
- server and are converted to Xdmx events. Care must be taken so
- that the sprite moves properly on the display from which input
- is being taken.
-
- <item> "Console" input is taken from an X window that Xdmx
- creates on the operator's display (i.e., on the machine running
- the Xdmx binary). When the operator's mouse is inside the
- console window, then those events are converted to Xdmx events.
- Several special features are available: the console can display
- outlines of windows that are on the Xdmx display (to facilitate
- navigation), the cursor can be confined to the console, and a
- "fine" mode can be activated to allow very precise cursor
- positioning.
- </enum>
-
-
-<!-- May 2002; July 2003 -->
-
-<sect1>Output device handling
-
-<p>The output of the DMX system displays rendering and windowing
-requests across multiple screens. The screens are typically arranged in
-a grid such that together they represent a single large display.
-
-<p>The output section of the DMX code consists of two parts. The first
-is in the front-end proxy X server (Xdmx), which accepts client
-connections, manages the windows, and potentially renders primitives but
-does not actually display any of the drawing primitives. The second
-part is the back-end X server(s), which accept commands from the
-front-end server and display the results on their screens.
-
-<sect2>Initialization
-
-<p>The DMX front-end must first initialize its screens by connecting to
-each of the back-end X servers and collecting information about each of
-these screens. However, the information collected from the back-end X
-servers might be inconsistent. Handling these cases can be difficult
-and/or inefficient. For example, a two screen system has one back-end X
-server running at 16bpp while the second is running at 32bpp.
-Converting rendering requests (e.g., XPutImage() or XGetImage()
-requests) to the appropriate bit depth can be very time consuming.
-Analyzing these cases to determine how or even if it is possible to
-handle them is required. The current Xinerama code handles many of
-these cases (e.g., in PanoramiXConsolidate()) and will be used as a
-starting point. In general, the best solution is to use homogeneous X
-servers and display devices. Using back-end servers with the same depth
-is a requirement of the final DMX implementation.
-
-<p>Once this screen consolidation is finished, the relative position of
-each back-end X server's screen in the unified screen is initialized. A
-full-screen window is opened on each of the back-end X servers, and the
-cursor on each screen is turned off. The final DMX implementation can
-also make use of a partial-screen window, or multiple windows per
-back-end screen.
-
-<sect2>Handling rendering requests
-
-<p>After initialization, X applications connect to the front-end server.
-There are two possible implementations of how rendering and windowing
-requests are handled in the DMX system:
-
-<enum>
- <item>A shadow framebuffer is used in the front-end server as the
- render target. In this option, all protocol requests are completely
- handled in the front-end server. All state and resources are
- maintained in the front-end including a shadow copy of the entire
- framebuffer. The framebuffers attached to the back-end servers are
- updated by XPutImage() calls with data taken directly from the
- shadow framebuffer.
-
- <p>This solution suffers from two main problems. First, it does not
- take advantage of any accelerated hardware available in the system.
- Second, the size of the XPutImage() calls can be quite large and
- thus will be limited by the bandwidth available.
-
- <p>The initial DMX implementation used a shadow framebuffer by
- default.
-
- <item>Rendering requests are sent to each back-end server for
- handling (as is done in the Xnest server described above). In this
- option, certain protocol requests are handled in the front-end
- server and certain requests are repackaged and then sent to the
- back-end servers. The framebuffer is distributed across the
- multiple back-end servers. Rendering to the framebuffer is handled
- on each back-end and can take advantage of any acceleration
- available on the back-end servers' graphics display device. State
- is maintained both in the front and back-end servers.
-
- <p>This solution suffers from two main drawbacks. First, protocol
- requests are sent to all back-end servers -- even those that will
- completely clip the rendering primitive -- which wastes bandwidth
- and processing time. Second, state is maintained both in the front-
- and back-end servers. These drawbacks are not as severe as in
- option 1 (above) and can either be overcome through optimizations or
- are acceptable. Therefore, this option will be used in the final
- implementation.
-
- <p>The final DMX implementation defaults to this mechanism, but also
- supports the shadow framebuffer mechanism. Several optimizations
- were implemented to eliminate the drawbacks of the default
- mechanism. These optimizations are described the section below and
- in Phase II of the Development Results (see appendix).
-
-</enum>
-
-<p>Status: Both the shadow framebuffer and Xnest-style code is complete.
-<!-- May 2002 -->
-
-
-<sect1>Optimizing DMX
-
-<p>Initially, the Xnest-style solution's performance will be measured
-and analyzed to determine where the performance bottlenecks exist.
-There are four main areas that will be addressed.
-
-<p>First, to obtain reasonable interactivity with the first development
-phase, XSync() was called after each protocol request. The XSync()
-function flushes any pending protocol requests. It then waits for the
-back-end to process the request and send a reply that the request has
-completed. This happens with each back-end server and performance
-greatly suffers. As a result of the way XSync() is called in the first
-development phase, the batching that the X11 library performs is
-effectively defeated. The XSync() call usage will be analyzed and
-optimized by batching calls and performing them at regular intervals,
-except where interactivity will suffer (e.g., on cursor movements).
-
-<p>Second, the initial Xnest-style solution described above sends the
-repackaged protocol requests to all back-end servers regardless of
-whether or not they would be completely clipped out. The requests that
-are trivially rejected on the back-end server wastes the limited
-bandwidth available. By tracking clipping changes in the DMX X server's
-windowing code (e.g., by opening, closing, moving or resizing windows),
-we can determine whether or not back-end windows are visible so that
-trivial tests in the front-end server's GC ops drawing functions can
-eliminate these unnecessary protocol requests.
-
-<p>Third, each protocol request will be analyzed to determine if it is
-possible to break the request into smaller pieces at display boundaries.
-The initial ones to be analyzed are put and get image requests since
-they will require the greatest bandwidth to transmit data between the
-front and back-end servers. Other protocol requests will be analyzed
-and those that will benefit from breaking them into smaller requests
-will be implemented.
-
-<p>Fourth, an extension is being considered that will allow font glyphs to
-be transferred from the front-end DMX X server to each back-end server.
-This extension will permit the front-end to handle all font requests and
-eliminate the requirement that all back-end X servers share the exact
-same fonts as the front-end server. We are investigating the
-feasibility of this extension during this development phase.
-
-<p>Other potential optimizations will be determined from the performance
-analysis.
-
-<p>Please note that in our initial design, we proposed optimizing BLT
-operations (e.g., XCopyArea() and window moves) by developing an
-extension that would allow individual back-end servers to directly copy
-pixel data to other back-end servers. This potential optimization was
-in response to the simple image movement implementation that required
-potentially many calls to GetImage() and PutImage(). However, the
-current Xinerama implementation handles these BLT operations
-differently. Instead of copying data to and from screens, they generate
-expose events -- just as happens in the case when a window is moved from
-off a screen to on screen. This approach saves the limited bandwidth
-available between front and back-end servers and is being standardized
-with Xinerama. It also eliminates the potential setup problems and
-security issues resulting from having each back-end server open
-connections to all other back-end servers. Therefore, we suggest
-accepting Xinerama's expose event solution.
-
-<p>Also note that the approach proposed in the second and third
-optimizations might cause backing store algorithms in the back-end to be
-defeated, so a DMX X server configuration flag will be added to disable
-these optimizations.
-
-<p>Status: The optimizations proposed above are complete. It was
-determined that the using the xfs font server was sufficient and
-creating a new mechanism to pass glyphs was redundant; therefore, the
-fourth optimization proposed above was not included in DMX.
-<!-- September 2002 -->
-
-
-<sect1>DMX X extension support
-
-<p>The DMX X server keeps track of all the windowing information on the
-back-end X servers, but does not currently export this information to
-any client applications. An extension will be developed to pass the
-screen information and back-end window IDs to DMX-aware clients. These
-clients can then use this information to directly connect to and render
-to the back-end windows. Bypassing the DMX X server allows DMX-aware
-clients to break up complex rendering requests on their own and send
-them directly to the windows on the back-end server's screens. An
-example of a client that can make effective use of this extension is
-Chromium.
-
-<p>Status: The extension, as implemented, is fully documented in
-"Client-to-Server DMX Extension to the X Protocol". Future changes
-might be required based on feedback and other proposed enhancements to
-DMX. Currently, the following facilities are supported:
-<enum>
- <item>
- Screen information (clipping rectangle for each screen relative
- to the virtual screen)
- <item>
- Window information (window IDs and clipping information for each
- back-end window that corresponds to each DMX window)
- <item>
- Input device information (mappings from DMX device IDs to
- back-end device IDs)
- <item>
- Force window creation (so that a client can override the
- server-side lazy window creation optimization)
- <item>
- Reconfiguration (so that a client can request that a screen
- position be changed)
- <item>
- Addition and removal of back-end servers and back-end and
- console inputs.
-</enum>
-<!-- September 2002; July 2003 -->
-
-
-<sect1>Common X extension support
-
-<p>The XInput, XKeyboard and Shape extensions are commonly used
-extensions to the base X11 protocol. XInput allows multiple and
-non-standard input devices to be accessed simultaneously. These input
-devices can be connected to either the front-end or back-end servers.
-XKeyboard allows much better keyboard mappings control. Shape adds
-support for arbitrarily shaped windows and is used by various window
-managers. Nearly all potential back-end X servers make these extensions
-available, and support for each one will be added to the DMX system.
-
-<p>In addition to the extensions listed above, support for the X
-Rendering extension (Render) is being developed. Render adds digital
-image composition to the rendering model used by the X Window System.
-While this extension is still under development by Keith Packard of HP,
-support for the current version will be added to the DMX system.
-
-<p>Support for the XTest extension was added during the first
-development phase.
-
-<!-- WARNING: this list is duplicated in the Phase IV discussion -->
-<p>Status: The following extensions are supported and are discussed in
-more detail in Phase IV of the Development Results (see appendix):
- BIG-REQUESTS,
- DEC-XTRAP,
- DMX,
- DPMS,
- Extended-Visual-Information,
- GLX,
- LBX,
- RECORD,
- RENDER,
- SECURITY,
- SHAPE,
- SYNC,
- X-Resource,
- XC-APPGROUP,
- XC-MISC,
- XFree86-Bigfont,
- XINERAMA,
- XInputExtension,
- XKEYBOARD, and
- XTEST.
-<!-- November 2002; updated February 2003, July 2003 -->
-
-<sect1>OpenGL support
-
-<p>OpenGL support using the Mesa code base exists in XFree86 release 4
-and later. Currently, the direct rendering infrastructure (DRI)
-provides accelerated OpenGL support for local clients and unaccelerated
-OpenGL support (i.e., software rendering) is provided for non-local
-clients.
-
-<p>The single head OpenGL support in XFree86 4.x will be extended to use
-the DMX system. When the front and back-end servers are on the same
-physical hardware, it is possible to use the DRI to directly render to
-the back-end servers. First, the existing DRI will be extended to
-support multiple display heads, and then to support the DMX system.
-OpenGL rendering requests will be direct rendering to each back-end X
-server. The DRI will request the screen layout (either from the
-existing Xinerama extension or a DMX-specific extension). Support for
-synchronized swap buffers will also be added (on hardware that supports
-it). Note that a single front-end server with a single back-end server
-on the same physical machine can emulate accelerated indirect rendering.
-
-<p>When the front and back-end servers are on different physical
-hardware or are using non-XFree86 4.x X servers, a mechanism to render
-primitives across the back-end servers will be provided. There are
-several options as to how this can be implemented.
-
-<enum>
- <item>The existing OpenGL support in each back-end server can be
- used by repackaging rendering primitives and sending them to each
- back-end server. This option is similar to the unoptimized
- Xnest-style approach mentioned above. Optimization of this solution
- is beyond the scope of this project and is better suited to other
- distributed rendering systems.
-
- <item>Rendering to a pixmap in the front-end server using the
- current XFree86 4.x code, and then displaying to the back-ends via
- calls to XPutImage() is another option. This option is similar to
- the shadow frame buffer approach mentioned above. It is slower and
- bandwidth intensive, but has the advantage that the back-end servers
- are not required to have OpenGL support.
-</enum>
-
-<p>These, and other, options will be investigated in this phase of the
-work.
-
-<p>Work by others have made Chromium DMX-aware. Chromium will use the
-DMX X protocol extension to obtain information about the back-end
-servers and will render directly to those servers, bypassing DMX.
-
-<p>Status: OpenGL support by the glxProxy extension was implemented by
-SGI and has been integrated into the DMX code base.
-<!-- May 2003-->
-
-
-<!-- ============================================================ -->
-<sect>Current issues
-
-<p>In this sections the current issues are outlined that require further
-investigation.
-
-<sect1>Fonts
-
-<p>The font path and glyphs need to be the same for the front-end and
-each of the back-end servers. Font glyphs could be sent to the back-end
-servers as necessary but this would consume a significant amount of
-available bandwidth during font rendering for clients that use many
-different fonts (e.g., Netscape). Initially, the font server (xfs) will
-be used to provide the fonts to both the front-end and back-end servers.
-Other possibilities will be investigated during development.
-
-<sect1>Zero width rendering primitives
-
-<p>To allow pixmap and on-screen rendering to be pixel perfect, all
-back-end servers must render zero width primitives exactly the same as
-the front-end renders the primitives to pixmaps. For those back-end
-servers that do not exactly match, zero width primitives will be
-automatically converted to one width primitives. This can be handled in
-the front-end server via the GC state.
-
-<sect1>Output scaling
-
-<p>With very large tiled displays, it might be difficult to read the
-information on the standard X desktop. In particular, the cursor can be
-easily lost and fonts could be difficult to read. Automatic primitive
-scaling might prove to be very useful. We will investigate the
-possibility of scaling the cursor and providing a set of alternate
-pre-scaled fonts to replace the standard fonts that many applications
-use (e.g., fixed). Other options for automatic scaling will also be
-investigated.
-
-<sect1>Per-screen colormaps
-
-<p>Each screen's default colormap in the set of back-end X servers
-should be able to be adjusted via a configuration utility. This support
-is would allow the back-end screens to be calibrated via custom gamma
-tables. On 24-bit systems that support a DirectColor visual, this type
-of correction can be accommodated. One possible implementation would be
-to advertise to X client of the DMX server a TrueColor visual while
-using DirectColor visuals on the back-end servers to implement this type
-of color correction. Other options will be investigated.
-
-<!-- ============================================================ -->
-<appendix>
-
-<sect>Background
-
-<p>This section describes the existing Open Source architectures that
-can be used to handle multiple screens and upon which this development
-project is based. This section was written before the implementation
-was finished, and may not reflect actual details of the implementation.
-It is left for historical interest only.
-
-<sect1>Core input device handling
-
-<p>The following is a description of how core input devices are handled
-by an X server.
-
-<sect2>InitInput()
-
-<p>InitInput() is a DDX function that is called at the start of each
-server generation from the X server's main() function. Its purpose is
-to determine what input devices are connected to the X server, register
-them with the DIX and MI layers, and initialize the input event queue.
-InitInput() does not have a return value, but the X server will abort if
-either a core keyboard device or a core pointer device are not
-registered. Extended input (XInput) devices can also be registered in
-InitInput().
-
-<p>InitInput() usually has implementation specific code to determine
-which input devices are available. For each input device it will be
-using, it calls AddInputDevice():
-
-<descrip>
-<tag/AddInputDevice()/ This DIX function allocates the device structure,
-registers a callback function (which handles device init, close, on and
-off), and returns the input handle, which can be treated as opaque. It
-is called once for each input device.
-</descrip>
-
-<p>Once input handles for core keyboard and core pointer devices have
-been obtained from AddInputDevice(), they are registered as core devices
-by calling RegisterPointerDevice() and RegisterKeyboardDevice(). Each
-of these should be called once. If both core devices are not
-registered, then the X server will exit with a fatal error when it
-attempts to start the input devices in InitAndStartDevices(), which is
-called directly after InitInput() (see below).
-
-<descrip>
-<tag/Register{Pointer,Keyboard}Device()/ These DIX functions take a
-handle returned from AddInputDevice() and initialize the core input
-device fields in inputInfo, and initialize the input processing and grab
-functions for each core input device.
-</descrip>
-
-<p>The core pointer device is then registered with the miPointer code
-(which does the high level cursor handling). While this registration
-is not necessary for correct miPointer operation in the current XFree86
-code, it is still done mostly for compatibility reasons.
-
-<descrip>
-<tag/miRegisterPointerDevice()/ This MI function registers the core
-pointer's input handle with with the miPointer code.
-</descrip>
-
-<p>The final part of InitInput() is the initialization of the input
-event queue handling. In most cases, the event queue handling provided
-in the MI layer is used. The primary XFree86 X server uses its own
-event queue handling to support some special cases related to the XInput
-extension and the XFree86-specific DGA extension. For our purposes, the
-MI event queue handling should be suitable. It is initialized by
-calling mieqInit():
-
-<descrip>
-<tag/mieqInit()/ This MI function initializes the MI event queue for the
-core devices, and is passed the public component of the input handles
-for the two core devices.
-</descrip>
-
-<p>If a wakeup handler is required to deliver synchronous input
-events, it can be registered here by calling the DIX function
-RegisterBlockAndWakeupHandlers(). (See the devReadInput() description
-below.)
-
-<sect2>InitAndStartDevices()
-
-<p>InitAndStartDevices() is a DIX function that is called immediately
-after InitInput() from the X server's main() function. Its purpose is
-to initialize each input device that was registered with
-AddInputDevice(), enable each input device that was successfully
-initialized, and create the list of enabled input devices. Once each
-registered device is processed in this way, the list of enabled input
-devices is checked to make sure that both a core keyboard device and
-core pointer device were registered and successfully enabled. If not,
-InitAndStartDevices() returns failure, and results in the the X server
-exiting with a fatal error.
-
-<p>Each registered device is initialized by calling its callback
-(dev-&gt;deviceProc) with the DEVICE_INIT argument:
-
-<descrip>
-<tag/(*dev-&gt;deviceProc)(dev, DEVICE_INIT)/ This function initializes the
-device structs with core information relevant to the device.
-
-<p>For pointer devices, this means specifying the number of buttons,
-default button mapping, the function used to get motion events (usually
-miPointerGetMotionEvents()), the function used to change/control the
-core pointer motion parameters (acceleration and threshold), and the
-motion buffer size.
-
-<p>For keyboard devices, this means specifying the keycode range,
-default keycode to keysym mapping, default modifier mapping, and the
-functions used to sound the keyboard bell and modify/control the
-keyboard parameters (LEDs, bell pitch and duration, key click, which
-keys are auto-repeating, etc).
-</descrip>
-
-<p>Each initialized device is enabled by calling EnableDevice():
-
-<descrip>
-<tag/EnableDevice()/ EnableDevice() calls the device callback with
-DEVICE_ON:
- <descrip>
- <tag/(*dev-&gt;deviceProc)(dev, DEVICE_ON)/ This typically opens and
- initializes the relevant physical device, and when appropriate,
- registers the device's file descriptor (or equivalent) as a valid
- input source.
- </descrip>
-
- <p>EnableDevice() then adds the device handle to the X server's
- global list of enabled devices.
-</descrip>
-
-<p>InitAndStartDevices() then verifies that a valid core keyboard and
-pointer has been initialized and enabled. It returns failure if either
-are missing.
-
-<sect2>devReadInput()
-
-<p>Each device will have some function that gets called to read its
-physical input. These may be called in a number of different ways. In
-the case of synchronous I/O, they will be called from a DDX
-wakeup-handler that gets called after the server detects that new input is
-available. In the case of asynchronous I/O, they will be called from a
-(SIGIO) signal handler triggered when new input is available. This
-function should do at least two things: make sure that input events get
-enqueued, and make sure that the cursor gets moved for motion events
-(except if these are handled later by the driver's own event queue
-processing function, which cannot be done when using the MI event queue
-handling).
-
-<p>Events are queued by calling mieqEnqueue():
-
-<descrip>
-<tag/mieqEnqueue()/ This MI function is used to add input events to the
-event queue. It is simply passed the event to be queued.
-</descrip>
-
-<p>The cursor position should be updated when motion events are
-enqueued, by calling either miPointerAbsoluteCursor() or
-miPointerDeltaCursor():
-
-<descrip>
-<tag/miPointerAbsoluteCursor()/ This MI function is used to move the
-cursor to the absolute coordinates provided.
-<tag/miPointerDeltaCursor()/ This MI function is used to move the cursor
-relative to its current position.
-</descrip>
-
-<sect2>ProcessInputEvents()
-
-<p>ProcessInputEvents() is a DDX function that is called from the X
-server's main dispatch loop when new events are available in the input
-event queue. It typically processes the enqueued events, and updates
-the cursor/pointer position. It may also do other DDX-specific event
-processing.
-
-<p>Enqueued events are processed by mieqProcessInputEvents() and passed
-to the DIX layer for transmission to clients:
-
-<descrip>
-<tag/mieqProcessInputEvents()/ This function processes each event in the
-event queue, and passes it to the device's input processing function.
-The DIX layer provides default functions to do this processing, and they
-handle the task of getting the events passed back to the relevant
-clients.
-<tag/miPointerUpdate()/ This function resynchronized the cursor position
-with the new pointer position. It also takes care of moving the cursor
-between screens when needed in multi-head configurations.
-</descrip>
-
-
-<sect2>DisableDevice()
-
-<p>DisableDevice is a DIX function that removes an input device from the
-list of enabled devices. The result of this is that the device no
-longer generates input events. The device's data structures are kept in
-place, and disabling a device like this can be reversed by calling
-EnableDevice(). DisableDevice() may be called from the DDX when it is
-desirable to do so (e.g., the XFree86 server does this when VT
-switching). Except for special cases, this is not normally called for
-core input devices.
-
-<p>DisableDevice() calls the device's callback function with
-<tt/DEVICE_OFF/:
-
-<descrip>
-<tag/(*dev-&gt;deviceProc)(dev, DEVICE_OFF)/ This typically closes the
-relevant physical device, and when appropriate, unregisters the device's
-file descriptor (or equivalent) as a valid input source.
-</descrip>
-
-<p>DisableDevice() then removes the device handle from the X server's
-global list of enabled devices.
-
-
-<sect2>CloseDevice()
-
-<p>CloseDevice is a DIX function that removes an input device from the
-list of available devices. It disables input from the device and frees
-all data structures associated with the device. This function is
-usually called from CloseDownDevices(), which is called from main() at
-the end of each server generation to close all input devices.
-
-<p>CloseDevice() calls the device's callback function with
-<tt/DEVICE_CLOSE/:
-
-<descrip>
-<tag/(*dev-&gt;deviceProc)(dev, DEVICE_CLOSE)/ This typically closes the
-relevant physical device, and when appropriate, unregisters the device's
-file descriptor (or equivalent) as a valid input source. If any device
-specific data structures were allocated when the device was initialized,
-they are freed here.
-</descrip>
-
-<p>CloseDevice() then frees the data structures that were allocated
-for the device when it was registered/initialized.
-
-
-<sect2>LegalModifier()
-<!-- dmx/dmxinput.c - currently returns TRUE -->
-<p>LegalModifier() is a required DDX function that can be used to
-restrict which keys may be modifier keys. This seems to be present for
-historical reasons, so this function should simply return TRUE
-unconditionally.
-
-
-<sect1>Output handling
-
-<p>The following sections describe the main functions required to
-initialize, use and close the output device(s) for each screen in the X
-server.
-
-<sect2>InitOutput()
-
-<p>This DDX function is called near the start of each server generation
-from the X server's main() function. InitOutput()'s main purpose is to
-initialize each screen and fill in the global screenInfo structure for
-each screen. It is passed three arguments: a pointer to the screenInfo
-struct, which it is to initialize, and argc and argv from main(), which
-can be used to determine additional configuration information.
-
-<p>The primary tasks for this function are outlined below:
-
-<enum>
- <item><bf/Parse configuration info:/ The first task of InitOutput()
- is to parses any configuration information from the configuration
- file. In addition to the XF86Config file, other configuration
- information can be taken from the command line. The command line
- options can be gathered either in InitOutput() or earlier in the
- ddxProcessArgument() function, which is called by
- ProcessCommandLine(). The configuration information determines the
- characteristics of the screen(s). For example, in the XFree86 X
- server, the XF86Config file specifies the monitor information, the
- screen resolution, the graphics devices and slots in which they are
- located, and, for Xinerama, the screens' layout.
-
- <item><bf/Initialize screen info:/ The next task is to initialize
- the screen-dependent internal data structures. For example, part of
- what the XFree86 X server does is to allocate its screen and pixmap
- private indices, probe for graphics devices, compare the probed
- devices to the ones listed in the XF86Config file, and add the ones that
- match to the internal xf86Screens&lsqb;&rsqb; structure.
-
- <item><bf/Set pixmap formats:/ The next task is to initialize the
- screenInfo's image byte order, bitmap bit order and bitmap scanline
- unit/pad. The screenInfo's pixmap format's depth, bits per pixel
- and scanline padding is also initialized at this stage.
-
- <item><bf/Unify screen info:/ An optional task that might be done at
- this stage is to compare all of the information from the various
- screens and determines if they are compatible (i.e., if the set of
- screens can be unified into a single desktop). This task has
- potential to be useful to the DMX front-end server, if Xinerama's
- PanoramiXConsolidate() function is not sufficient.
-</enum>
-
-<p>Once these tasks are complete, the valid screens are known and each
-of these screens can be initialized by calling AddScreen().
-
-<sect2>AddScreen()
-
-<p>This DIX function is called from InitOutput(), in the DDX layer, to
-add each new screen to the screenInfo structure. The DDX screen
-initialization function and command line arguments (i.e., argc and argv)
-are passed to it as arguments.
-
-<p>This function first allocates a new Screen structure and any privates
-that are required. It then initializes some of the fields in the Screen
-struct and sets up the pixmap padding information. Finally, it calls
-the DDX screen initialization function ScreenInit(), which is described
-below. It returns the number of the screen that were just added, or -1
-if there is insufficient memory to add the screen or if the DDX screen
-initialization fails.
-
-<sect2>ScreenInit()
-
-<p>This DDX function initializes the rest of the Screen structure with
-either generic or screen-specific functions (as necessary). It also
-fills in various screen attributes (e.g., width and height in
-millimeters, black and white pixel values).
-
-<p>The screen init function usually calls several functions to perform
-certain screen initialization functions. They are described below:
-
-<descrip>
-<tag/{mi,*fb}ScreenInit()/ The DDX layer's ScreenInit() function usually
-calls another layer's ScreenInit() function (e.g., miScreenInit() or
-fbScreenInit()) to initialize the fallbacks that the DDX driver does not
-specifically handle.
-
-<p>After calling another layer's ScreenInit() function, any
-screen-specific functions either wrap or replace the other layer's
-function pointers. If a function is to be wrapped, each of the old
-function pointers from the other layer are stored in a screen private
-area. Common functions to wrap are CloseScreen() and SaveScreen().
-
-<tag/miInitializeBackingStore()/ This MI function initializes the
-screen's backing storage functions, which are used to save areas of
-windows that are currently covered by other windows.
-
-<tag/miDCInitialize()/ This MI function initializes the MI cursor
-display structures and function pointers. If a hardware cursor is used,
-the DDX layer's ScreenInit() function will wrap additional screen and
-the MI cursor display function pointers.
-</descrip>
-
-<p>Another common task for ScreenInit() function is to initialize the
-output device state. For example, in the XFree86 X server, the
-ScreenInit() function saves the original state of the video card and
-then initializes the video mode of the graphics device.
-
-<sect2>CloseScreen()
-
-<p>This function restores any wrapped screen functions (and in
-particular the wrapped CloseScreen() function) and restores the state of
-the output device to its original state. It should also free any
-private data it created during the screen initialization.
-
-<sect2>GC operations
-
-<p>When the X server is requested to render drawing primitives, it does
-so by calling drawing functions through the graphics context's operation
-function pointer table (i.e., the GCOps functions). These functions
-render the basic graphics operations such as drawing rectangles, lines,
-text or copying pixmaps. Default routines are provided either by the MI
-layer, which draws indirectly through a simple span interface, or by the
-framebuffer layers (e.g., CFB, MFB, FB), which draw directly to a
-linearly mapped frame buffer.
-
-<p>To take advantage of special hardware on the graphics device,
-specific GCOps functions can be replaced by device specific code.
-However, many times the graphics devices can handle only a subset of the
-possible states of the GC, so during graphics context validation,
-appropriate routines are selected based on the state and capabilities of
-the hardware. For example, some graphics hardware can accelerate single
-pixel width lines with certain dash patterns. Thus, for dash patterns
-that are not supported by hardware or for width 2 or greater lines, the
-default routine is chosen during GC validation.
-
-<p>Note that some pointers to functions that draw to the screen are
-stored in the Screen structure. They include GetImage(), GetSpans(),
-PaintWindowBackground(), PaintWindowBorder(), CopyWindow() and
-RestoreAreas().
-
-<sect2>Xnest
-
-<p>The Xnest X server is a special proxy X server that relays the X
-protocol requests that it receives to a ``real'' X server that then
-processes the requests and displays the results, if applicable. To the X
-applications, Xnest appears as if it is a regular X server. However,
-Xnest is both server to the X application and client of the real X
-server, which will actually handle the requests.
-
-<p>The Xnest server implements all of the standard input and output
-initialization steps outlined above.
-
-<descrip>
-<tag/InitOutput()/ Xnest takes its configuration information from
-command line arguments via ddxProcessArguments(). This information
-includes the real X server display to connect to, its default visual
-class, the screen depth, the Xnest window's geometry, etc. Xnest then
-connects to the real X server and gathers visual, colormap, depth and
-pixmap information about that server's display, creates a window on that
-server, which will be used as the root window for Xnest.
-
-<p>Next, Xnest initializes its internal data structures and uses the
-data from the real X server's pixmaps to initialize its own pixmap
-formats. Finally, it calls AddScreen(xnestOpenScreen, argc, argv) to
-initialize each of its screens.
-
-<tag/ScreenInit()/ Xnest's ScreenInit() function is called
-xnestOpenScreen(). This function initializes its screen's depth and
-visual information, and then calls miScreenInit() to set up the default
-screen functions. It then calls miInitializeBackingStore() and
-miDCInitialize() to initialize backing store and the software cursor.
-Finally, it replaces many of the screen functions with its own
-functions that repackage and send the requests to the real X server to
-which Xnest is attached.
-
-<tag/CloseScreen()/ This function frees its internal data structure
-allocations. Since it replaces instead of wrapping screen functions,
-there are no function pointers to unwrap. This can potentially lead to
-problems during server regeneration.
-
-<tag/GC operations/ The GC operations in Xnest are very simple since
-they leave all of the drawing to the real X server to which Xnest is
-attached. Each of the GCOps takes the request and sends it to the
-real X server using standard Xlib calls. For example, the X
-application issues a XDrawLines() call. This function turns into a
-protocol request to Xnest, which calls the xnestPolylines() function
-through Xnest's GCOps function pointer table. The xnestPolylines()
-function is only a single line, which calls XDrawLines() using the same
-arguments that were passed into it. Other GCOps functions are very
-similar. Two exceptions to the simple GCOps functions described above
-are the image functions and the BLT operations.
-
-<p>The image functions, GetImage() and PutImage(), must use a temporary
-image to hold the image to be put of the image that was just grabbed
-from the screen while it is in transit to the real X server or the
-client. When the image has been transmitted, the temporary image is
-destroyed.
-
-<p>The BLT operations, CopyArea() and CopyPlane(), handle not only the
-copy function, which is the same as the simple cases described above,
-but also the graphics exposures that result when the GC's graphics
-exposure bit is set to True. Graphics exposures are handled in a helper
-function, xnestBitBlitHelper(). This function collects the exposure
-events from the real X server and, if any resulting in regions being
-exposed, then those regions are passed back to the MI layer so that it
-can generate exposure events for the X application.
-</descrip>
-
-<p>The Xnest server takes its input from the X server to which it is
-connected. When the mouse is in the Xnest server's window, keyboard and
-mouse events are received by the Xnest server, repackaged and sent back
-to any client that requests those events.
-
-<sect2>Shadow framebuffer
-
-<p>The most common type of framebuffer is a linear array memory that
-maps to the video memory on the graphics device. However, accessing
-that video memory over an I/O bus (e.g., ISA or PCI) can be slow. The
-shadow framebuffer layer allows the developer to keep the entire
-framebuffer in main memory and copy it back to video memory at regular
-intervals. It also has been extended to handle planar video memory and
-rotated framebuffers.
-
-<p>There are two main entry points to the shadow framebuffer code:
-
-<descrip>
-<tag/shadowAlloc(width, height, bpp)/ This function allocates the in
-memory copy of the framebuffer of size width*height*bpp. It returns a
-pointer to that memory, which will be used by the framebuffer
-ScreenInit() code during the screen's initialization.
-
-<tag/shadowInit(pScreen, updateProc, windowProc)/ This function
-initializes the shadow framebuffer layer. It wraps several screen
-drawing functions, and registers a block handler that will update the
-screen. The updateProc is a function that will copy the damaged regions
-to the screen, and the windowProc is a function that is used when the
-entire linear video memory range cannot be accessed simultaneously so
-that only a window into that memory is available (e.g., when using the
-VGA aperture).
-</descrip>
-
-<p>The shadow framebuffer code keeps track of the damaged area of each
-screen by calculating the bounding box of all drawing operations that
-have occurred since the last screen update. Then, when the block handler
-is next called, only the damaged portion of the screen is updated.
-
-<p>Note that since the shadow framebuffer is kept in main memory, all
-drawing operations are performed by the CPU and, thus, no accelerated
-hardware drawing operations are possible.
-
-
-<sect1>Xinerama
-
-<p>Xinerama is an X extension that allows multiple physical screens
-controlled by a single X server to appear as a single screen. Although
-the extension allows clients to find the physical screen layout via
-extension requests, it is completely transparent to clients at the core
-X11 protocol level. The original public implementation of Xinerama came
-from Digital/Compaq. XFree86 rewrote it, filling in some missing pieces
-and improving both X11 core protocol compliance and performance. The
-Xinerama extension will be passing through X.Org's standardization
-process in the near future, and the sample implementation will be based
-on this rewritten version.
-
-<p>The current implementation of Xinerama is based primarily in the DIX
-(device independent) and MI (machine independent) layers of the X
-server. With few exceptions the DDX layers do not need any changes to
-support Xinerama. X server extensions often do need modifications to
-provide full Xinerama functionality.
-
-<p>The following is a code-level description of how Xinerama functions.
-
-<p>Note: Because the Xinerama extension was originally called the
-PanoramiX extension, many of the Xinerama functions still have the
-PanoramiX prefix.
-
-<descrip>
- <tag/PanoramiXExtensionInit()/ PanoramiXExtensionInit() is a
- device-independent extension function that is called at the start of
- each server generation from InitExtensions(), which is called from
- the X server's main() function after all output devices have been
- initialized, but before any input devices have been initialized.
-
- <p>PanoramiXNumScreens is set to the number of physical screens. If
- only one physical screen is present, the extension is disabled, and
- PanoramiXExtensionInit() returns without doing anything else.
-
- <p>The Xinerama extension is registered by calling AddExtension().
-
- <p>A local per-screen array of data structures
- (panoramiXdataPtr&lsqb;&rsqb;)
- is allocated for each physical screen, and GC and Screen private
- indexes are allocated, and both GC and Screen private areas are
- allocated for each physical screen. These hold Xinerama-specific
- per-GC and per-Screen data. Each screen's CreateGC and CloseScreen
- functions are wrapped by XineramaCreateGC() and
- XineramaCloseScreen() respectively. Some new resource classes are
- created for Xinerama drawables and GCs, and resource types for
- Xinerama windows, pixmaps and colormaps.
-
- <p>A region (XineramaScreenRegions&lsqb;i&rsqb;) is initialized for each
- physical screen, and single region (PanoramiXScreenRegion) is
- initialized to be the union of the screen regions. The
- panoramiXdataPtr&lsqb;&rsqb; array is also initialized with the size and
- origin of each screen. The relative positioning information for the
- physical screens is taken from the array
- dixScreenOrigins&lsqb;&rsqb;, which
- the DDX layer must initialize in InitOutput(). The bounds of the
- combined screen is also calculated (PanoramiXPixWidth and
- PanoramiXPixHeight).
-
- <p>The DIX layer has a list of function pointers
- (ProcVector&lsqb;&rsqb;) that
- holds the entry points for the functions that process core protocol
- requests. The requests that Xinerama must intercept and break up
- into physical screen-specific requests are wrapped. The original
- set is copied to SavedProcVector&lsqb;&rsqb;. The types of requests
- intercepted are Window requests, GC requests, colormap requests,
- drawing requests, and some geometry-related requests. This wrapping
- allows the bulk of the protocol request processing to be handled
- transparently to the DIX layer. Some operations cannot be dealt with
- in this way and are handled with Xinerama-specific code within the
- DIX layer.
-
- <tag/PanoramiXConsolidate()/ PanoramiXConsolidate() is a
- device-independent extension function that is called directly from
- the X server's main() function after extensions and input/output
- devices have been initialized, and before the root windows are
- defined and initialized.
-
- <p>This function finds the set of depths (PanoramiXDepths&lsqb;&rsqb;) and
- visuals (PanoramiXVisuals&lsqb;&rsqb;)
- common to all of the physical screens.
- PanoramiXNumDepths is set to the number of common depths, and
- PanoramiXNumVisuals is set to the number of common visuals.
- Resources are created for the single root window and the default
- colormap. Each of these resources has per-physical screen entries.
-
- <tag/PanoramiXCreateConnectionBlock()/ PanoramiXConsolidate() is a
- device-independent extension function that is called directly from
- the X server's main() function after the per-physical screen root
- windows are created. It is called instead of the standard DIX
- CreateConnectionBlock() function. If this function returns FALSE,
- the X server exits with a fatal error. This function will return
- FALSE if no common depths were found in PanoramiXConsolidate().
- With no common depths, Xinerama mode is not possible.
-
- <p>The connection block holds the information that clients get when
- they open a connection to the X server. It includes information
- such as the supported pixmap formats, number of screens and the
- sizes, depths, visuals, default colormap information, etc, for each
- of the screens (much of information that <tt/xdpyinfo/ shows). The
- connection block is initialized with the combined single screen
- values that were calculated in the above two functions.
-
- <p>The Xinerama extension allows the registration of connection
- block callback functions. The purpose of these is to allow other
- extensions to do processing at this point. These callbacks can be
- registered by calling XineramaRegisterConnectionBlockCallback() from
- the other extension's ExtensionInit() function. Each registered
- connection block callback is called at the end of
- PanoramiXCreateConnectionBlock().
-</descrip>
-
-<sect2>Xinerama-specific changes to the DIX code
-
-<p>There are a few types of Xinerama-specific changes within the DIX
-code. The main ones are described here.
-
-<p>Functions that deal with colormap or GC -related operations outside of
-the intercepted protocol requests have a test added to only do the
-processing for screen numbers > 0. This is because they are handled for
-the single Xinerama screen and the processing is done once for screen 0.
-
-<p>The handling of motion events does some coordinate translation between
-the physical screen's origin and screen zero's origin. Also, motion
-events must be reported relative to the composite screen origin rather
-than the physical screen origins.
-
-<p>There is some special handling for cursor, window and event processing
-that cannot (either not at all or not conveniently) be done via the
-intercepted protocol requests. A particular case is the handling of
-pointers moving between physical screens.
-
-<sect2>Xinerama-specific changes to the MI code
-
-<p>The only Xinerama-specific change to the MI code is in miSendExposures()
-to handle the coordinate (and window ID) translation for expose events.
-
-<sect2>Intercepted DIX core requests
-
-<p>Xinerama breaks up drawing requests for dispatch to each physical
-screen. It also breaks up windows into pieces for each physical screen.
-GCs are translated into per-screen GCs. Colormaps are replicated on
-each physical screen. The functions handling the intercepted requests
-take care of breaking the requests and repackaging them so that they can
-be passed to the standard request handling functions for each screen in
-turn. In addition, and to aid the repackaging, the information from
-many of the intercepted requests is used to keep up to date the
-necessary state information for the single composite screen. Requests
-(usually those with replies) that can be satisfied completely from this
-stored state information do not call the standard request handling
-functions.
-
-<!-- ============================================================ -->
-
-<sect>Development Results
-
-<p>In this section the results of each phase of development are
-discussed. This development took place between approximately June 2001
-and July 2003.
-
-<sect1>Phase I
-
-<p>The initial development phase dealt with the basic implementation
-including the bootstrap code, which used the shadow framebuffer, and the
-unoptimized implementation, based on an Xnest-style implementation.
-
-<sect2>Scope
-
-<p>The goal of Phase I is to provide fundamental functionality that can
-act as a foundation for ongoing work:
-<enum>
- <item>Develop the proxy X server
- <itemize>
- <item>The proxy X server will operate on the X11 protocol and
- relay requests as necessary to correctly perform the request.
- <item>Work will be based on the existing work for Xinerama and
- Xnest.
- <item>Input events and windowing operations are handled in the
- proxy server and rendering requests are repackaged and sent to
- each of the back-end servers for display.
- <item>The multiple screen layout (including support for
- overlapping screens) will be user configurable via a
- configuration file or through the configuration tool.
- </itemize>
- <item>Develop graphical configuration tool
- <itemize>
- <item>There will be potentially a large number of X servers to
- configure into a single display. The tool will allow the user
- to specify which servers are involved in the configuration and
- how they should be laid out.
- </itemize>
- <item>Pass the X Test Suite
- <itemize>
- <item>The X Test Suite covers the basic X11 operations. All
- tests known to succeed must correctly operate in the distributed
- X environment.
- </itemize>
-</enum>
-
-<p>For this phase, the back-end X servers are assumed to be unmodified X
-servers that do not support any DMX-related protocol extensions; future
-optimization pathways are considered, but are not implemented; and the
-configuration tool is assumed to rely only on libraries in the X source
-tree (e.g., Xt).
-
-<sect2>Results
-
-<p>The proxy X server, Xdmx, was developed to distribute X11 protocol
-requests to the set of back-end X servers. It opens a window on each
-back-end server, which represents the part of the front-end's root
-window that is visible on that screen. It mirrors window, pixmap and
-other state in each back-end server. Drawing requests are sent to
-either windows or pixmaps on each back-end server. This code is based
-on Xnest and uses the existing Xinerama extension.
-
-<p>Input events can be taken from (1) devices attached to the back-end
-server, (2) core devices attached directly to the Xdmx server, or (3)
-from a ``console'' window on another X server. Events for these devices
-are gathered, processed and delivered to clients attached to the Xdmx
-server.
-
-<p>An intuitive configuration format was developed to help the user
-easily configure the multiple back-end X servers. It was defined (see
-grammar in Xdmx man page) and a parser was implemented that is used by
-the Xdmx server and by a standalone xdmxconfig utility. The parsing
-support was implemented such that it can be easily factored out of the X
-source tree for use with other tools (e.g., vdl). Support for
-converting legacy vdl-format configuration files to the DMX format is
-provided by the vdltodmx utility.
-
-<p>Originally, the configuration file was going to be a subsection of
-XFree86's XF86Config file, but that was not possible since Xdmx is a
-completely separate X server. Thus, a separate config file format was
-developed. In addition, a graphical configuration
-tool, xdmxconfig, was developed to allow the user to create and arrange
-the screens in the configuration file. The <bf/-configfile/ and <bf/-config/
-command-line options can be used to start Xdmx using a configuration
-file.
-
-<p>An extension that enables remote input testing is required for the X
-Test Suite to function. During this phase, this extension (XTEST) was
-implemented in the Xdmx server. The results from running the X Test
-Suite are described in detail below.
-
-<sect2>X Test Suite
-
- <sect3> Introduction
- <p>
- The X Test Suite contains tests that verify Xlib functions
- operate correctly. The test suite is designed to run on a
- single X server; however, since X applications will not be
- able to tell the difference between the DMX server and a
- standard X server, the X Test Suite should also run on the
- DMX server.
- <p>
- The Xdmx server was tested with the X Test Suite, and the
- existing failures are noted in this section. To put these
- results in perspective, we first discuss expected X Test
- failures and how errors in underlying systems can impact
- Xdmx test results.
-
- <sect3>Expected Failures for a Single Head
- <p>
- A correctly implemented X server with a single screen is
- expected to fail certain X Test tests. The following
- well-known errors occur because of rounding error in the X
- server code:
- <verb>
-XDrawArc: Tests 42, 63, 66, 73
-XDrawArcs: Tests 45, 66, 69, 76
- </verb>
- <p>
- The following failures occur because of the high-level X
- server implementation:
- <verb>
-XLoadQueryFont: Test 1
-XListFontsWithInfo: Tests 3, 4
-XQueryFont: Tests 1, 2
- </verb>
- <p>
- The following test fails when running the X server as root
- under Linux because of the way directory modes are
- interpreted:
- <verb>
-XWriteBitmapFile: Test 3
- </verb>
- <p>
- Depending on the video card used for the back-end, other
- failures may also occur because of bugs in the low-level
- driver implementation. Over time, failures of this kind
- are usually fixed by XFree86, but will show up in Xdmx
- testing until then.
-
- <sect3>Expected Failures for Xinerama
- <p>
- Xinerama fails several X Test Suite tests because of
- design decisions made for the current implementation of
- Xinerama. Over time, many of these errors will be
- corrected by XFree86 and the group working on a new
- Xinerama implementation. Therefore, Xdmx will also share
- X Suite Test failures with Xinerama.
- <p>
- We may be able to fix or work-around some of these
- failures at the Xdmx level, but this will require
- additional exploration that was not part of Phase I.
- <p>
- Xinerama is constantly improving, and the list of
- Xinerama-related failures depends on XFree86 version and
- the underlying graphics hardware. We tested with a
- variety of hardware, including nVidia, S3, ATI Radeon,
- and Matrox G400 (in dual-head mode). The list below
- includes only those failures that appear to be from the
- Xinerama layer, and does not include failures listed in
- the previous section, or failures that appear to be from
- the low-level graphics driver itself:
- <p>
- These failures were noted with multiple Xinerama
- configurations:
- <verb>
-XCopyPlane: Tests 13, 22, 31 (well-known Xinerama implementation issue)
-XSetFontPath: Test 4
-XGetDefault: Test 5
-XMatchVisualInfo: Test 1
- </verb>
- <p>
- These failures were noted only when using one dual-head
- video card with a 4.2.99.x XFree86 server:
- <verb>
-XListPixmapFormats: Test 1
-XDrawRectangles: Test 45
- </verb>
- <p>
- These failures were noted only when using two video cards
- from different vendors with a 4.1.99.x XFree86 server:
- <verb>
-XChangeWindowAttributes: Test 32
-XCreateWindow: Test 30
-XDrawLine: Test 22
-XFillArc: Test 22
-XChangeKeyboardControl: Tests 9, 10
-XRebindKeysym: Test 1
- </verb>
-
- <sect3>Additional Failures from Xdmx
- <p>
- When running Xdmx, no unexpected failures were noted.
- Since the Xdmx server is based on Xinerama, we expect to
- have most of the Xinerama failures present in the Xdmx
- server. Similarly, since the Xdmx server must rely on the
- low-level device drivers on each back-end server, we also
- expect that Xdmx will exhibit most of the back-end
- failures. Here is a summary:
- <verb>
-XListPixmapFormats: Test 1 (configuration dependent)
-XChangeWindowAttributes: Test 32
-XCreateWindow: Test 30
-XCopyPlane: Test 13, 22, 31
-XSetFontPath: Test 4
-XGetDefault: Test 5 (configuration dependent)
-XMatchVisualInfo: Test 1
-XRebindKeysym: Test 1 (configuration dependent)
- </verb>
- <p>
- Note that this list is shorter than the combined list for
- Xinerama because Xdmx uses different code paths to perform
- some Xinerama operations. Further, some Xinerama failures
- have been fixed in the XFree86 4.2.99.x CVS repository.
-
- <sect3>Summary and Future Work
- <p>
- Running the X Test Suite on Xdmx does not produce any
- failures that cannot be accounted for by the underlying
- Xinerama subsystem used by the front-end or by the
- low-level device-driver code running on the back-end X
- servers. The Xdmx server therefore is as ``correct'' as
- possible with respect to the standard set of X Test Suite
- tests.
- <p>
- During the following phases, we will continue to verify
- Xdmx correctness using the X Test Suite. We may also use
- other tests suites or write additional tests that run
- under the X Test Suite that specifically verify the
- expected behavior of DMX.
-
-<sect2>Fonts
-
-<p>In Phase I, fonts are handled directly by both the front-end and the
-back-end servers, which is required since we must treat each back-end
-server during this phase as a ``black box''. What this requires is that
-<bf/the front- and back-end servers must share the exact same font
-path/. There are two ways to help make sure that all servers share the
-same font path:
-
-<enum>
- <item>First, each server can be configured to use the same font
- server. The font server, xfs, can be configured to serve fonts to
- multiple X servers via TCP.
-
- <item>Second, each server can be configured to use the same font
- path and either those font paths can be copied to each back-end
- machine or they can be mounted (e.g., via NFS) on each back-end
- machine.
-</enum>
-
-<p>One additional concern is that a client program can set its own font
-path, and if it does so, then that font path must be available on each
-back-end machine.
-
-<p>The -fontpath command line option was added to allow users to
-initialize the font path of the front end server. This font path is
-propagated to each back-end server when the default font is loaded. If
-there are any problems, an error message is printed, which will describe
-the problem and list the current font path. For more information about
-setting the font path, see the -fontpath option description in the man
-page.
-
-<sect2>Performance
-
-<p>Phase I of development was not intended to optimize performance. Its
-focus was on completely and correctly handling the base X11 protocol in
-the Xdmx server. However, several insights were gained during Phase I,
-which are listed here for reference during the next phase of
-development.
-
-<enum>
- <item>Calls to XSync() can slow down rendering since it requires a
- complete round trip to and from a back-end server. This is
- especially problematic when communicating over long haul networks.
- <item>Sending drawing requests to only the screens that they overlap
- should improve performance.
-</enum>
-
-<sect2>Pixmaps
-
-<p>Pixmaps were originally expected to be handled entirely in the
-front-end X server; however, it was found that this overly complicated
-the rendering code and would have required sending potentially large
-images to each back server that required them when copying from pixmap
-to screen. Thus, pixmap state is mirrored in the back-end server just
-as it is with regular window state. With this implementation, the same
-rendering code that draws to windows can be used to draw to pixmaps on
-the back-end server, and no large image transfers are required to copy
-from pixmap to window.
-
-<!-- ============================================================ -->
-<sect1>Phase II
-
-<p>The second phase of development concentrates on performance
-optimizations. These optimizations are documented here, with
-<tt/x11perf/ data to show how the optimizations improve performance.
-
-<p>All benchmarks were performed by running Xdmx on a dual processor
-1.4GHz AMD Athlon machine with 1GB of RAM connecting over 100baseT to
-two single-processor 1GHz Pentium III machines with 256MB of RAM and ATI
-Rage 128 (RF) video cards. The front end was running Linux
-2.4.20-pre1-ac1 and the back ends were running Linux 2.4.7-10 and
-version 4.2.99.1 of XFree86 pulled from the XFree86 CVS repository on
-August 7, 2002. All systems were running Red Hat Linux 7.2.
-
-<sect2>Moving from XFree86 4.1.99.1 to 4.2.0.0
-
-<p>For phase II, the working source tree was moved to the branch tagged
-with dmx-1-0-branch and was updated from version 4.1.99.1 (20 August
-2001) of the XFree86 sources to version 4.2.0.0 (18 January 2002).
-After this update, the following tests were noted to be more than 10%
-faster:
- <verb>
-1.13 Fill 300x300 opaque stippled trapezoid (161x145 stipple)
-1.16 Fill 1x1 tiled trapezoid (161x145 tile)
-1.13 Fill 10x10 tiled trapezoid (161x145 tile)
-1.17 Fill 100x100 tiled trapezoid (161x145 tile)
-1.16 Fill 1x1 tiled trapezoid (216x208 tile)
-1.20 Fill 10x10 tiled trapezoid (216x208 tile)
-1.15 Fill 100x100 tiled trapezoid (216x208 tile)
-1.37 Circulate Unmapped window (200 kids)
- </verb>
-And the following tests were noted to be more than 10% slower:
- <verb>
-0.88 Unmap window via parent (25 kids)
-0.75 Circulate Unmapped window (4 kids)
-0.79 Circulate Unmapped window (16 kids)
-0.80 Circulate Unmapped window (25 kids)
-0.82 Circulate Unmapped window (50 kids)
-0.85 Circulate Unmapped window (75 kids)
- </verb>
-<p>These changes were not caused by any changes in the DMX system, and
-may point to changes in the XFree86 tree or to tests that have more
-"jitter" than most other <tt/x11perf/ tests.
-
-<sect2>Global changes
-
-<p>During the development of the Phase II DMX server, several global
-changes were made. These changes were also compared with the Phase I
-server. The following tests were noted to be more than 10% faster:
- <verb>
-1.13 Fill 300x300 opaque stippled trapezoid (161x145 stipple)
-1.15 Fill 1x1 tiled trapezoid (161x145 tile)
-1.13 Fill 10x10 tiled trapezoid (161x145 tile)
-1.17 Fill 100x100 tiled trapezoid (161x145 tile)
-1.16 Fill 1x1 tiled trapezoid (216x208 tile)
-1.19 Fill 10x10 tiled trapezoid (216x208 tile)
-1.15 Fill 100x100 tiled trapezoid (216x208 tile)
-1.15 Circulate Unmapped window (4 kids)
- </verb>
-
-<p>The following tests were noted to be more than 10% slower:
- <verb>
-0.69 Scroll 10x10 pixels
-0.68 Scroll 100x100 pixels
-0.68 Copy 10x10 from window to window
-0.68 Copy 100x100 from window to window
-0.76 Circulate Unmapped window (75 kids)
-0.83 Circulate Unmapped window (100 kids)
- </verb>
-
-<p>For the remainder of this analysis, the baseline of comparison will
-be the Phase II deliverable with all optimizations disabled (unless
-otherwise noted). This will highlight how the optimizations in
-isolation impact performance.
-
-<sect2>XSync() Batching
-
-<p>During the Phase I implementation, XSync() was called after every
-protocol request made by the DMX server. This provided the DMX server
-with an interactive feel, but defeated X11's protocol buffering system
-and introduced round-trip wire latency into every operation. During
-Phase II, DMX was changed so that protocol requests are no longer
-followed by calls to XSync(). Instead, the need for an XSync() is
-noted, and XSync() calls are only made every 100mS or when the DMX
-server specifically needs to make a call to guarantee interactivity.
-With this new system, X11 buffers protocol as much as possible during a
-100mS interval, and many unnecessary XSync() calls are avoided.
-
-<p>Out of more than 300 <tt/x11perf/ tests, 8 tests became more than 100
-times faster, with 68 more than 50X faster, 114 more than 10X faster,
-and 181 more than 2X faster. See table below for summary.
-
-<p>The following tests were noted to be more than 10% slower with
-XSync() batching on:
- <verb>
-0.88 500x500 tiled rectangle (161x145 tile)
-0.89 Copy 500x500 from window to window
- </verb>
-
-<sect2>Offscreen Optimization
-
-<p>Windows span one or more of the back-end servers' screens; however,
-during Phase I development, windows were created on every back-end
-server and every rendering request was sent to every window regardless
-of whether or not that window was visible. With the offscreen
-optimization, the DMX server tracks when a window is completely off of a
-back-end server's screen and, in that case, it does not send rendering
-requests to those back-end windows. This optimization saves bandwidth
-between the front and back-end servers, and it reduces the number of
-XSync() calls. The performance tests were run on a DMX system with only
-two back-end servers. Greater performance gains will be had as the
-number of back-end servers increases.
-
-<p>Out of more than 300 <tt/x11perf/ tests, 3 tests were at least twice as
-fast, and 146 tests were at least 10% faster. Two tests were more than
-10% slower with the offscreen optimization:
- <verb>
-0.88 Hide/expose window via popup (4 kids)
-0.89 Resize unmapped window (75 kids)
- </verb>
-
-<sect2>Lazy Window Creation Optimization
-
-<p>As mentioned above, during Phase I, windows were created on every
-back-end server even if they were not visible on that back-end. With
-the lazy window creation optimization, the DMX server does not create
-windows on a back-end server until they are either visible or they
-become the parents of a visible window. This optimization builds on the
-offscreen optimization (described above) and requires it to be enabled.
-
-<p>The lazy window creation optimization works by creating the window
-data structures in the front-end server when a client creates a window,
-but delays creation of the window on the back-end server(s). A private
-window structure in the DMX server saves the relevant window data and
-tracks changes to the window's attributes and stacking order for later
-use. The only times a window is created on a back-end server are (1)
-when it is mapped and is at least partially overlapping the back-end
-server's screen (tracked by the offscreen optimization), or (2) when the
-window becomes the parent of a previously visible window. The first
-case occurs when a window is mapped or when a visible window is copied,
-moved or resized and now overlaps the back-end server's screen. The
-second case occurs when starting a window manager after having created
-windows to which the window manager needs to add decorations.
-
-<p>When either case occurs, a window on the back-end server is created
-using the data saved in the DMX server's window private data structure.
-The stacking order is then adjusted to correctly place the window on the
-back-end and lastly the window is mapped. From this time forward, the
-window is handled exactly as if the window had been created at the time
-of the client's request.
-
-<p>Note that when a window is no longer visible on a back-end server's
-screen (e.g., it is moved offscreen), the window is not destroyed;
-rather, it is kept and reused later if the window once again becomes
-visible on the back-end server's screen. Originally with this
-optimization, destroying windows was implemented but was later rejected
-because it increased bandwidth when windows were opaquely moved or
-resized, which is common in many window managers.
-
-<p>The performance tests were run on a DMX system with only two back-end
-servers. Greater performance gains will be had as the number of
-back-end servers increases.
-
-<p>This optimization improved the following <tt/x11perf/ tests by more
-than 10%:
- <verb>
-1.10 500x500 rectangle outline
-1.12 Fill 100x100 stippled trapezoid (161x145 stipple)
-1.20 Circulate Unmapped window (50 kids)
-1.19 Circulate Unmapped window (75 kids)
- </verb>
-
-<sect2>Subdividing Rendering Primitives
-
-<p>X11 imaging requests transfer significant data between the client and
-the X server. During Phase I, the DMX server would then transfer the
-image data to each back-end server. Even with the offscreen
-optimization (above), these requests still required transferring
-significant data to each back-end server that contained a visible
-portion of the window. For example, if the client uses XPutImage() to
-copy an image to a window that overlaps the entire DMX screen, then the
-entire image is copied by the DMX server to every back-end server.
-
-<p>To reduce the amount of data transferred between the DMX server and
-the back-end servers when XPutImage() is called, the image data is
-subdivided and only the data that will be visible on a back-end server's
-screen is sent to that back-end server. Xinerama already implements a
-subdivision algorithm for XGetImage() and no further optimization was
-needed.
-
-<p>Other rendering primitives were analyzed, but the time required to
-subdivide these primitives was a significant proportion of the time
-required to send the entire rendering request to the back-end server, so
-this optimization was rejected for the other rendering primitives.
-
-<p>Again, the performance tests were run on a DMX system with only two
-back-end servers. Greater performance gains will be had as the number
-of back-end servers increases.
-
-<p>This optimization improved the following <tt/x11perf/ tests by more
-than 10%:
- <verb>
-1.12 Fill 100x100 stippled trapezoid (161x145 stipple)
-1.26 PutImage 10x10 square
-1.83 PutImage 100x100 square
-1.91 PutImage 500x500 square
-1.40 PutImage XY 10x10 square
-1.48 PutImage XY 100x100 square
-1.50 PutImage XY 500x500 square
-1.45 Circulate Unmapped window (75 kids)
-1.74 Circulate Unmapped window (100 kids)
- </verb>
-
-<p>The following test was noted to be more than 10% slower with this
-optimization:
- <verb>
-0.88 10-pixel fill chord partial circle
- </verb>
-
-<sect2>Summary of x11perf Data
-
-<p>With all of the optimizations on, 53 <tt/x11perf/ tests are more than
-100X faster than the unoptimized Phase II deliverable, with 69 more than
-50X faster, 73 more than 10X faster, and 199 more than twice as fast.
-No tests were more than 10% slower than the unoptimized Phase II
-deliverable. (Compared with the Phase I deliverable, only Circulate
-Unmapped window (100 kids) was more than 10% slower than the Phase II
-deliverable. As noted above, this test seems to have wider variability
-than other <tt/x11perf/ tests.)
-
-<p>The following table summarizes relative <tt/x11perf/ test changes for
-all optimizations individually and collectively. Note that some of the
-optimizations have a synergistic effect when used together.
- <verb>
-
-1: XSync() batching only
-2: Off screen optimizations only
-3: Window optimizations only
-4: Subdivprims only
-5: All optimizations
-
- 1 2 3 4 5 Operation
------- ---- ---- ---- ------ ---------
- 2.14 1.85 1.00 1.00 4.13 Dot
- 1.67 1.80 1.00 1.00 3.31 1x1 rectangle
- 2.38 1.43 1.00 1.00 2.44 10x10 rectangle
- 1.00 1.00 0.92 0.98 1.00 100x100 rectangle
- 1.00 1.00 1.00 1.00 1.00 500x500 rectangle
- 1.83 1.85 1.05 1.06 3.54 1x1 stippled rectangle (8x8 stipple)
- 2.43 1.43 1.00 1.00 2.41 10x10 stippled rectangle (8x8 stipple)
- 0.98 1.00 1.00 1.00 1.00 100x100 stippled rectangle (8x8 stipple)
- 1.00 1.00 1.00 1.00 0.98 500x500 stippled rectangle (8x8 stipple)
- 1.75 1.75 1.00 1.00 3.40 1x1 opaque stippled rectangle (8x8 stipple)
- 2.38 1.42 1.00 1.00 2.34 10x10 opaque stippled rectangle (8x8 stipple)
- 1.00 1.00 0.97 0.97 1.00 100x100 opaque stippled rectangle (8x8 stipple)
- 1.00 1.00 1.00 1.00 0.99 500x500 opaque stippled rectangle (8x8 stipple)
- 1.82 1.82 1.04 1.04 3.56 1x1 tiled rectangle (4x4 tile)
- 2.33 1.42 1.00 1.00 2.37 10x10 tiled rectangle (4x4 tile)
- 1.00 0.92 1.00 1.00 1.00 100x100 tiled rectangle (4x4 tile)
- 1.00 1.00 1.00 1.00 1.00 500x500 tiled rectangle (4x4 tile)
- 1.94 1.62 1.00 1.00 3.66 1x1 stippled rectangle (17x15 stipple)
- 1.74 1.28 1.00 1.00 1.73 10x10 stippled rectangle (17x15 stipple)
- 1.00 1.00 1.00 0.89 0.98 100x100 stippled rectangle (17x15 stipple)
- 1.00 1.00 1.00 1.00 0.98 500x500 stippled rectangle (17x15 stipple)
- 1.94 1.62 1.00 1.00 3.67 1x1 opaque stippled rectangle (17x15 stipple)
- 1.69 1.26 1.00 1.00 1.66 10x10 opaque stippled rectangle (17x15 stipple)
- 1.00 0.95 1.00 1.00 1.00 100x100 opaque stippled rectangle (17x15 stipple)
- 1.00 1.00 1.00 1.00 0.97 500x500 opaque stippled rectangle (17x15 stipple)
- 1.93 1.61 0.99 0.99 3.69 1x1 tiled rectangle (17x15 tile)
- 1.73 1.27 1.00 1.00 1.72 10x10 tiled rectangle (17x15 tile)
- 1.00 1.00 1.00 1.00 0.98 100x100 tiled rectangle (17x15 tile)
- 1.00 1.00 0.97 0.97 1.00 500x500 tiled rectangle (17x15 tile)
- 1.95 1.63 1.00 1.00 3.83 1x1 stippled rectangle (161x145 stipple)
- 1.80 1.30 1.00 1.00 1.83 10x10 stippled rectangle (161x145 stipple)
- 0.97 1.00 1.00 1.00 1.01 100x100 stippled rectangle (161x145 stipple)
- 1.00 1.00 1.00 1.00 0.98 500x500 stippled rectangle (161x145 stipple)
- 1.95 1.63 1.00 1.00 3.56 1x1 opaque stippled rectangle (161x145 stipple)
- 1.65 1.25 1.00 1.00 1.68 10x10 opaque stippled rectangle (161x145 stipple)
- 1.00 1.00 1.00 1.00 1.01 100x100 opaque stippled rectangle (161x145...
- 1.00 1.00 1.00 1.00 0.97 500x500 opaque stippled rectangle (161x145...
- 1.95 1.63 0.98 0.99 3.80 1x1 tiled rectangle (161x145 tile)
- 1.67 1.26 1.00 1.00 1.67 10x10 tiled rectangle (161x145 tile)
- 1.13 1.14 1.14 1.14 1.14 100x100 tiled rectangle (161x145 tile)
- 0.88 1.00 1.00 1.00 0.99 500x500 tiled rectangle (161x145 tile)
- 1.93 1.63 1.00 1.00 3.53 1x1 tiled rectangle (216x208 tile)
- 1.69 1.26 1.00 1.00 1.66 10x10 tiled rectangle (216x208 tile)
- 1.00 1.00 1.00 1.00 1.00 100x100 tiled rectangle (216x208 tile)
- 1.00 1.00 1.00 1.00 1.00 500x500 tiled rectangle (216x208 tile)
- 1.82 1.70 1.00 1.00 3.38 1-pixel line segment
- 2.07 1.56 0.90 1.00 3.31 10-pixel line segment
- 1.29 1.10 1.00 1.00 1.27 100-pixel line segment
- 1.05 1.06 1.03 1.03 1.09 500-pixel line segment
- 1.30 1.13 1.00 1.00 1.29 100-pixel line segment (1 kid)
- 1.32 1.15 1.00 1.00 1.32 100-pixel line segment (2 kids)
- 1.33 1.16 1.00 1.00 1.33 100-pixel line segment (3 kids)
- 1.92 1.64 1.00 1.00 3.73 10-pixel dashed segment
- 1.34 1.16 1.00 1.00 1.34 100-pixel dashed segment
- 1.24 1.11 0.99 0.97 1.23 100-pixel double-dashed segment
- 1.72 1.77 1.00 1.00 3.25 10-pixel horizontal line segment
- 1.83 1.66 1.01 1.00 3.54 100-pixel horizontal line segment
- 1.86 1.30 1.00 1.00 1.84 500-pixel horizontal line segment
- 2.11 1.52 1.00 0.99 3.02 10-pixel vertical line segment
- 1.21 1.10 1.00 1.00 1.20 100-pixel vertical line segment
- 1.03 1.03 1.00 1.00 1.02 500-pixel vertical line segment
- 4.42 1.68 1.00 1.01 4.64 10x1 wide horizontal line segment
- 1.83 1.31 1.00 1.00 1.83 100x10 wide horizontal line segment
- 1.07 1.00 0.96 1.00 1.07 500x50 wide horizontal line segment
- 4.10 1.67 1.00 1.00 4.62 10x1 wide vertical line segment
- 1.50 1.24 1.06 1.06 1.48 100x10 wide vertical line segment
- 1.06 1.03 1.00 1.00 1.05 500x50 wide vertical line segment
- 2.54 1.61 1.00 1.00 3.61 1-pixel line
- 2.71 1.48 1.00 1.00 2.67 10-pixel line
- 1.19 1.09 1.00 1.00 1.19 100-pixel line
- 1.04 1.02 1.00 1.00 1.03 500-pixel line
- 2.68 1.51 0.98 1.00 3.17 10-pixel dashed line
- 1.23 1.11 0.99 0.99 1.23 100-pixel dashed line
- 1.15 1.08 1.00 1.00 1.15 100-pixel double-dashed line
- 2.27 1.39 1.00 1.00 2.23 10x1 wide line
- 1.20 1.09 1.00 1.00 1.20 100x10 wide line
- 1.04 1.02 1.00 1.00 1.04 500x50 wide line
- 1.52 1.45 1.00 1.00 1.52 100x10 wide dashed line
- 1.54 1.47 1.00 1.00 1.54 100x10 wide double-dashed line
- 1.97 1.30 0.96 0.95 1.95 10x10 rectangle outline
- 1.44 1.27 1.00 1.00 1.43 100x100 rectangle outline
- 3.22 2.16 1.10 1.09 3.61 500x500 rectangle outline
- 1.95 1.34 1.00 1.00 1.90 10x10 wide rectangle outline
- 1.14 1.14 1.00 1.00 1.13 100x100 wide rectangle outline
- 1.00 1.00 1.00 1.00 1.00 500x500 wide rectangle outline
- 1.57 1.72 1.00 1.00 3.03 1-pixel circle
- 1.96 1.35 1.00 1.00 1.92 10-pixel circle
- 1.21 1.07 0.86 0.97 1.20 100-pixel circle
- 1.08 1.04 1.00 1.00 1.08 500-pixel circle
- 1.39 1.19 1.03 1.03 1.38 100-pixel dashed circle
- 1.21 1.11 1.00 1.00 1.23 100-pixel double-dashed circle
- 1.59 1.28 1.00 1.00 1.58 10-pixel wide circle
- 1.22 1.12 0.99 1.00 1.22 100-pixel wide circle
- 1.06 1.04 1.00 1.00 1.05 500-pixel wide circle
- 1.87 1.84 1.00 1.00 1.85 100-pixel wide dashed circle
- 1.90 1.93 1.01 1.01 1.90 100-pixel wide double-dashed circle
- 2.13 1.43 1.00 1.00 2.32 10-pixel partial circle
- 1.42 1.18 1.00 1.00 1.42 100-pixel partial circle
- 1.92 1.85 1.01 1.01 1.89 10-pixel wide partial circle
- 1.73 1.67 1.00 1.00 1.73 100-pixel wide partial circle
- 1.36 1.95 1.00 1.00 2.64 1-pixel solid circle
- 2.02 1.37 1.00 1.00 2.03 10-pixel solid circle
- 1.19 1.09 1.00 1.00 1.19 100-pixel solid circle
- 1.02 0.99 1.00 1.00 1.01 500-pixel solid circle
- 1.74 1.28 1.00 0.88 1.73 10-pixel fill chord partial circle
- 1.31 1.13 1.00 1.00 1.31 100-pixel fill chord partial circle
- 1.67 1.31 1.03 1.03 1.72 10-pixel fill slice partial circle
- 1.30 1.13 1.00 1.00 1.28 100-pixel fill slice partial circle
- 2.45 1.49 1.01 1.00 2.71 10-pixel ellipse
- 1.22 1.10 1.00 1.00 1.22 100-pixel ellipse
- 1.09 1.04 1.00 1.00 1.09 500-pixel ellipse
- 1.90 1.28 1.00 1.00 1.89 100-pixel dashed ellipse
- 1.62 1.24 0.96 0.97 1.61 100-pixel double-dashed ellipse
- 2.43 1.50 1.00 1.00 2.42 10-pixel wide ellipse
- 1.61 1.28 1.03 1.03 1.60 100-pixel wide ellipse
- 1.08 1.05 1.00 1.00 1.08 500-pixel wide ellipse
- 1.93 1.88 1.00 1.00 1.88 100-pixel wide dashed ellipse
- 1.94 1.89 1.01 1.00 1.94 100-pixel wide double-dashed ellipse
- 2.31 1.48 1.00 1.00 2.67 10-pixel partial ellipse
- 1.38 1.17 1.00 1.00 1.38 100-pixel partial ellipse
- 2.00 1.85 0.98 0.97 1.98 10-pixel wide partial ellipse
- 1.89 1.86 1.00 1.00 1.89 100-pixel wide partial ellipse
- 3.49 1.60 1.00 1.00 3.65 10-pixel filled ellipse
- 1.67 1.26 1.00 1.00 1.67 100-pixel filled ellipse
- 1.06 1.04 1.00 1.00 1.06 500-pixel filled ellipse
- 2.38 1.43 1.01 1.00 2.32 10-pixel fill chord partial ellipse
- 2.06 1.30 1.00 1.00 2.05 100-pixel fill chord partial ellipse
- 2.27 1.41 1.00 1.00 2.27 10-pixel fill slice partial ellipse
- 1.98 1.33 1.00 0.97 1.97 100-pixel fill slice partial ellipse
- 57.46 1.99 1.01 1.00 114.92 Fill 1x1 equivalent triangle
- 56.94 1.98 1.01 1.00 73.89 Fill 10x10 equivalent triangle
- 6.07 1.75 1.00 1.00 6.07 Fill 100x100 equivalent triangle
- 51.12 1.98 1.00 1.00 102.81 Fill 1x1 trapezoid
- 51.42 1.82 1.01 1.00 94.89 Fill 10x10 trapezoid
- 6.47 1.80 1.00 1.00 6.44 Fill 100x100 trapezoid
- 1.56 1.28 1.00 0.99 1.56 Fill 300x300 trapezoid
- 51.27 1.97 0.96 0.97 102.54 Fill 1x1 stippled trapezoid (8x8 stipple)
- 51.73 2.00 1.02 1.02 67.92 Fill 10x10 stippled trapezoid (8x8 stipple)
- 5.36 1.72 1.00 1.00 5.36 Fill 100x100 stippled trapezoid (8x8 stipple)
- 1.54 1.26 1.00 1.00 1.59 Fill 300x300 stippled trapezoid (8x8 stipple)
- 51.41 1.94 1.01 1.00 102.82 Fill 1x1 opaque stippled trapezoid (8x8 stipple)
- 50.71 1.95 0.99 1.00 65.44 Fill 10x10 opaque stippled trapezoid (8x8...
- 5.33 1.73 1.00 1.00 5.36 Fill 100x100 opaque stippled trapezoid (8x8...
- 1.58 1.25 1.00 1.00 1.58 Fill 300x300 opaque stippled trapezoid (8x8...
- 51.56 1.96 0.99 0.90 103.68 Fill 1x1 tiled trapezoid (4x4 tile)
- 51.59 1.99 1.01 1.01 62.25 Fill 10x10 tiled trapezoid (4x4 tile)
- 5.38 1.72 1.00 1.00 5.38 Fill 100x100 tiled trapezoid (4x4 tile)
- 1.54 1.25 1.00 0.99 1.58 Fill 300x300 tiled trapezoid (4x4 tile)
- 51.70 1.98 1.01 1.01 103.98 Fill 1x1 stippled trapezoid (17x15 stipple)
- 44.86 1.97 1.00 1.00 44.86 Fill 10x10 stippled trapezoid (17x15 stipple)
- 2.74 1.56 1.00 1.00 2.73 Fill 100x100 stippled trapezoid (17x15 stipple)
- 1.29 1.14 1.00 1.00 1.27 Fill 300x300 stippled trapezoid (17x15 stipple)
- 51.41 1.96 0.96 0.95 103.39 Fill 1x1 opaque stippled trapezoid (17x15...
- 45.14 1.96 1.01 1.00 45.14 Fill 10x10 opaque stippled trapezoid (17x15...
- 2.68 1.56 1.00 1.00 2.68 Fill 100x100 opaque stippled trapezoid (17x15...
- 1.26 1.10 1.00 1.00 1.28 Fill 300x300 opaque stippled trapezoid (17x15...
- 51.13 1.97 1.00 0.99 103.39 Fill 1x1 tiled trapezoid (17x15 tile)
- 47.58 1.96 1.00 1.00 47.86 Fill 10x10 tiled trapezoid (17x15 tile)
- 2.74 1.56 1.00 1.00 2.74 Fill 100x100 tiled trapezoid (17x15 tile)
- 1.29 1.14 1.00 1.00 1.28 Fill 300x300 tiled trapezoid (17x15 tile)
- 51.13 1.97 0.99 0.97 103.39 Fill 1x1 stippled trapezoid (161x145 stipple)
- 45.14 1.97 1.00 1.00 44.29 Fill 10x10 stippled trapezoid (161x145 stipple)
- 3.02 1.77 1.12 1.12 3.38 Fill 100x100 stippled trapezoid (161x145 stipple)
- 1.31 1.13 1.00 1.00 1.30 Fill 300x300 stippled trapezoid (161x145 stipple)
- 51.27 1.97 1.00 1.00 103.10 Fill 1x1 opaque stippled trapezoid (161x145...
- 45.01 1.97 1.00 1.00 45.01 Fill 10x10 opaque stippled trapezoid (161x145...
- 2.67 1.56 1.00 1.00 2.69 Fill 100x100 opaque stippled trapezoid (161x145..
- 1.29 1.13 1.00 1.01 1.27 Fill 300x300 opaque stippled trapezoid (161x145..
- 51.41 1.96 1.00 0.99 103.39 Fill 1x1 tiled trapezoid (161x145 tile)
- 45.01 1.96 0.98 1.00 45.01 Fill 10x10 tiled trapezoid (161x145 tile)
- 2.62 1.36 1.00 1.00 2.69 Fill 100x100 tiled trapezoid (161x145 tile)
- 1.27 1.13 1.00 1.00 1.22 Fill 300x300 tiled trapezoid (161x145 tile)
- 51.13 1.98 1.00 1.00 103.39 Fill 1x1 tiled trapezoid (216x208 tile)
- 45.14 1.97 1.01 0.99 45.14 Fill 10x10 tiled trapezoid (216x208 tile)
- 2.62 1.55 1.00 1.00 2.71 Fill 100x100 tiled trapezoid (216x208 tile)
- 1.28 1.13 1.00 1.00 1.20 Fill 300x300 tiled trapezoid (216x208 tile)
- 50.71 1.95 1.00 1.00 54.70 Fill 10x10 equivalent complex polygon
- 5.51 1.71 0.96 0.98 5.47 Fill 100x100 equivalent complex polygons
- 8.39 1.97 1.00 1.00 16.75 Fill 10x10 64-gon (Convex)
- 8.38 1.83 1.00 1.00 8.43 Fill 100x100 64-gon (Convex)
- 8.50 1.96 1.00 1.00 16.64 Fill 10x10 64-gon (Complex)
- 8.26 1.83 1.00 1.00 8.35 Fill 100x100 64-gon (Complex)
- 14.09 1.87 1.00 1.00 14.05 Char in 80-char line (6x13)
- 11.91 1.87 1.00 1.00 11.95 Char in 70-char line (8x13)
- 11.16 1.85 1.01 1.00 11.10 Char in 60-char line (9x15)
- 10.09 1.78 1.00 1.00 10.09 Char16 in 40-char line (k14)
- 6.15 1.75 1.00 1.00 6.31 Char16 in 23-char line (k24)
- 11.92 1.90 1.03 1.03 11.88 Char in 80-char line (TR 10)
- 8.18 1.78 1.00 0.99 8.17 Char in 30-char line (TR 24)
- 42.83 1.44 1.01 1.00 42.11 Char in 20/40/20 line (6x13, TR 10)
- 27.45 1.43 1.01 1.01 27.45 Char16 in 7/14/7 line (k14, k24)
- 12.13 1.85 1.00 1.00 12.05 Char in 80-char image line (6x13)
- 10.00 1.84 1.00 1.00 10.00 Char in 70-char image line (8x13)
- 9.18 1.83 1.00 1.00 9.12 Char in 60-char image line (9x15)
- 9.66 1.82 0.98 0.95 9.66 Char16 in 40-char image line (k14)
- 5.82 1.72 1.00 1.00 5.99 Char16 in 23-char image line (k24)
- 8.70 1.80 1.00 1.00 8.65 Char in 80-char image line (TR 10)
- 4.67 1.66 1.00 1.00 4.67 Char in 30-char image line (TR 24)
- 84.43 1.47 1.00 1.00 124.18 Scroll 10x10 pixels
- 3.73 1.50 1.00 0.98 3.73 Scroll 100x100 pixels
- 1.00 1.00 1.00 1.00 1.00 Scroll 500x500 pixels
- 84.43 1.51 1.00 1.00 134.02 Copy 10x10 from window to window
- 3.62 1.51 0.98 0.98 3.62 Copy 100x100 from window to window
- 0.89 1.00 1.00 1.00 1.00 Copy 500x500 from window to window
- 57.06 1.99 1.00 1.00 88.64 Copy 10x10 from pixmap to window
- 2.49 2.00 1.00 1.00 2.48 Copy 100x100 from pixmap to window
- 1.00 0.91 1.00 1.00 0.98 Copy 500x500 from pixmap to window
- 2.04 1.01 1.00 1.00 2.03 Copy 10x10 from window to pixmap
- 1.05 1.00 1.00 1.00 1.05 Copy 100x100 from window to pixmap
- 1.00 1.00 0.93 1.00 1.04 Copy 500x500 from window to pixmap
- 58.52 1.03 1.03 1.02 57.95 Copy 10x10 from pixmap to pixmap
- 2.40 1.00 1.00 1.00 2.45 Copy 100x100 from pixmap to pixmap
- 1.00 1.00 1.00 1.00 1.00 Copy 500x500 from pixmap to pixmap
- 51.57 1.92 1.00 1.00 85.75 Copy 10x10 1-bit deep plane
- 6.37 1.75 1.01 1.01 6.37 Copy 100x100 1-bit deep plane
- 1.26 1.11 1.00 1.00 1.24 Copy 500x500 1-bit deep plane
- 4.23 1.63 0.98 0.97 4.38 Copy 10x10 n-bit deep plane
- 1.04 1.02 1.00 1.00 1.04 Copy 100x100 n-bit deep plane
- 1.00 1.00 1.00 1.00 1.00 Copy 500x500 n-bit deep plane
- 6.45 1.98 1.00 1.26 12.80 PutImage 10x10 square
- 1.10 1.87 1.00 1.83 2.11 PutImage 100x100 square
- 1.02 1.93 1.00 1.91 1.91 PutImage 500x500 square
- 4.17 1.78 1.00 1.40 7.18 PutImage XY 10x10 square
- 1.27 1.49 0.97 1.48 2.10 PutImage XY 100x100 square
- 1.00 1.50 1.00 1.50 1.52 PutImage XY 500x500 square
- 1.07 1.01 1.00 1.00 1.06 GetImage 10x10 square
- 1.01 1.00 1.00 1.00 1.01 GetImage 100x100 square
- 1.00 1.00 1.00 1.00 1.00 GetImage 500x500 square
- 1.56 1.00 0.99 0.97 1.56 GetImage XY 10x10 square
- 1.02 1.00 1.00 1.00 1.02 GetImage XY 100x100 square
- 1.00 1.00 1.00 1.00 1.00 GetImage XY 500x500 square
- 1.00 1.00 1.01 0.98 0.95 X protocol NoOperation
- 1.02 1.03 1.04 1.03 1.00 QueryPointer
- 1.03 1.02 1.04 1.03 1.00 GetProperty
-100.41 1.51 1.00 1.00 198.76 Change graphics context
- 45.81 1.00 0.99 0.97 57.10 Create and map subwindows (4 kids)
- 78.45 1.01 1.02 1.02 63.07 Create and map subwindows (16 kids)
- 73.91 1.01 1.00 1.00 56.37 Create and map subwindows (25 kids)
- 73.22 1.00 1.00 1.00 49.07 Create and map subwindows (50 kids)
- 72.36 1.01 0.99 1.00 32.14 Create and map subwindows (75 kids)
- 70.34 1.00 1.00 1.00 30.12 Create and map subwindows (100 kids)
- 55.00 1.00 1.00 0.99 23.75 Create and map subwindows (200 kids)
- 55.30 1.01 1.00 1.00 141.03 Create unmapped window (4 kids)
- 55.38 1.01 1.01 1.00 163.25 Create unmapped window (16 kids)
- 54.75 0.96 1.00 0.99 166.95 Create unmapped window (25 kids)
- 54.83 1.00 1.00 0.99 178.81 Create unmapped window (50 kids)
- 55.38 1.01 1.01 1.00 181.20 Create unmapped window (75 kids)
- 55.38 1.01 1.01 1.00 181.20 Create unmapped window (100 kids)
- 54.87 1.01 1.01 1.00 182.05 Create unmapped window (200 kids)
- 28.13 1.00 1.00 1.00 30.75 Map window via parent (4 kids)
- 36.14 1.01 1.01 1.01 32.58 Map window via parent (16 kids)
- 26.13 1.00 0.98 0.95 29.85 Map window via parent (25 kids)
- 40.07 1.00 1.01 1.00 27.57 Map window via parent (50 kids)
- 23.26 0.99 1.00 1.00 18.23 Map window via parent (75 kids)
- 22.91 0.99 1.00 0.99 16.52 Map window via parent (100 kids)
- 27.79 1.00 1.00 0.99 12.50 Map window via parent (200 kids)
- 22.35 1.00 1.00 1.00 56.19 Unmap window via parent (4 kids)
- 9.57 1.00 0.99 1.00 89.78 Unmap window via parent (16 kids)
- 80.77 1.01 1.00 1.00 103.85 Unmap window via parent (25 kids)
- 96.34 1.00 1.00 1.00 116.06 Unmap window via parent (50 kids)
- 99.72 1.00 1.00 1.00 124.93 Unmap window via parent (75 kids)
-112.36 1.00 1.00 1.00 125.27 Unmap window via parent (100 kids)
-105.41 1.00 1.00 0.99 120.00 Unmap window via parent (200 kids)
- 51.29 1.03 1.02 1.02 74.19 Destroy window via parent (4 kids)
- 86.75 0.99 0.99 0.99 116.87 Destroy window via parent (16 kids)
-106.43 1.01 1.01 1.01 127.49 Destroy window via parent (25 kids)
-120.34 1.01 1.01 1.00 140.11 Destroy window via parent (50 kids)
-126.67 1.00 0.99 0.99 145.00 Destroy window via parent (75 kids)
-126.11 1.01 1.01 1.00 140.56 Destroy window via parent (100 kids)
-128.57 1.01 1.00 1.00 137.91 Destroy window via parent (200 kids)
- 16.04 0.88 1.00 1.00 20.36 Hide/expose window via popup (4 kids)
- 19.04 1.01 1.00 1.00 23.48 Hide/expose window via popup (16 kids)
- 19.22 1.00 1.00 1.00 20.44 Hide/expose window via popup (25 kids)
- 17.41 1.00 0.91 0.97 17.68 Hide/expose window via popup (50 kids)
- 17.29 1.01 1.00 1.01 17.07 Hide/expose window via popup (75 kids)
- 16.74 1.00 1.00 1.00 16.17 Hide/expose window via popup (100 kids)
- 10.30 1.00 1.00 1.00 10.51 Hide/expose window via popup (200 kids)
- 16.48 1.01 1.00 1.00 26.05 Move window (4 kids)
- 17.01 0.95 1.00 1.00 23.97 Move window (16 kids)
- 16.95 1.00 1.00 1.00 22.90 Move window (25 kids)
- 16.05 1.01 1.00 1.00 21.32 Move window (50 kids)
- 15.58 1.00 0.98 0.98 19.44 Move window (75 kids)
- 14.98 1.02 1.03 1.03 18.17 Move window (100 kids)
- 10.90 1.01 1.01 1.00 12.68 Move window (200 kids)
- 49.42 1.00 1.00 1.00 198.27 Moved unmapped window (4 kids)
- 50.72 0.97 1.00 1.00 193.66 Moved unmapped window (16 kids)
- 50.87 1.00 0.99 1.00 195.09 Moved unmapped window (25 kids)
- 50.72 1.00 1.00 1.00 189.34 Moved unmapped window (50 kids)
- 50.87 1.00 1.00 1.00 191.33 Moved unmapped window (75 kids)
- 50.87 1.00 1.00 0.90 186.71 Moved unmapped window (100 kids)
- 50.87 1.00 1.00 1.00 179.19 Moved unmapped window (200 kids)
- 41.04 1.00 1.00 1.00 56.61 Move window via parent (4 kids)
- 69.81 1.00 1.00 1.00 130.82 Move window via parent (16 kids)
- 95.81 1.00 1.00 1.00 141.92 Move window via parent (25 kids)
- 95.98 1.00 1.00 1.00 149.43 Move window via parent (50 kids)
- 96.59 1.01 1.01 1.00 153.98 Move window via parent (75 kids)
- 97.19 1.00 1.00 1.00 157.30 Move window via parent (100 kids)
- 96.67 1.00 0.99 0.96 159.44 Move window via parent (200 kids)
- 17.75 1.01 1.00 1.00 27.61 Resize window (4 kids)
- 17.94 1.00 1.00 0.99 25.42 Resize window (16 kids)
- 17.92 1.01 1.00 1.00 24.47 Resize window (25 kids)
- 17.24 0.97 1.00 1.00 24.14 Resize window (50 kids)
- 16.81 1.00 1.00 0.99 22.75 Resize window (75 kids)
- 16.08 1.00 1.00 1.00 21.20 Resize window (100 kids)
- 12.92 1.00 0.99 1.00 16.26 Resize window (200 kids)
- 52.94 1.01 1.00 1.00 327.12 Resize unmapped window (4 kids)
- 53.60 1.01 1.01 1.01 333.71 Resize unmapped window (16 kids)
- 52.99 1.00 1.00 1.00 337.29 Resize unmapped window (25 kids)
- 51.98 1.00 1.00 1.00 329.38 Resize unmapped window (50 kids)
- 53.05 0.89 1.00 1.00 322.60 Resize unmapped window (75 kids)
- 53.05 1.00 1.00 1.00 318.08 Resize unmapped window (100 kids)
- 53.11 1.00 1.00 0.99 306.21 Resize unmapped window (200 kids)
- 16.76 1.00 0.96 1.00 19.46 Circulate window (4 kids)
- 17.24 1.00 1.00 0.97 16.24 Circulate window (16 kids)
- 16.30 1.03 1.03 1.03 15.85 Circulate window (25 kids)
- 13.45 1.00 1.00 1.00 14.90 Circulate window (50 kids)
- 12.91 1.00 1.00 1.00 13.06 Circulate window (75 kids)
- 11.30 0.98 1.00 1.00 11.03 Circulate window (100 kids)
- 7.58 1.01 1.01 0.99 7.47 Circulate window (200 kids)
- 1.01 1.01 0.98 1.00 0.95 Circulate Unmapped window (4 kids)
- 1.07 1.07 1.01 1.07 1.02 Circulate Unmapped window (16 kids)
- 1.04 1.09 1.06 1.05 0.97 Circulate Unmapped window (25 kids)
- 1.04 1.23 1.20 1.18 1.05 Circulate Unmapped window (50 kids)
- 1.18 1.53 1.19 1.45 1.24 Circulate Unmapped window (75 kids)
- 1.08 1.02 1.01 1.74 1.01 Circulate Unmapped window (100 kids)
- 1.01 1.12 0.98 0.91 0.97 Circulate Unmapped window (200 kids)
- </verb>
-
-<sect2>Profiling with OProfile
-
-<p>OProfile (available from http://oprofile.sourceforge.net/) is a
-system-wide profiler for Linux systems that uses processor-level
-counters to collect sampling data. OProfile can provide information
-that is similar to that provided by <tt/gprof/, but without the
-necessity of recompiling the program with special instrumentation (i.e.,
-OProfile can collect statistical profiling information about optimized
-programs). A test harness was developed to collect OProfile data for
-each <tt/x11perf/ test individually.
-
-<p>Test runs were performed using the RETIRED_INSNS counter on the AMD
-Athlon and the CPU_CLK_HALTED counter on the Intel Pentium III (with a
-test configuration different from the one described above). We have
-examined OProfile output and have compared it with <tt/gprof/ output.
-This investigation has not produced results that yield performance
-increases in <tt/x11perf/ numbers.
-
-<!--
-<sect3>Retired Instructions
-
-<p>The initial tests using OProfile were done using the RETIRED_INSNS
-counter with DMX running on the dual-processor AMD Athlon machine - the
-same test configuration that was described above and that was used for
-other tests. The RETIRED_INSNS counter counts retired instructions and
-showed drawing, text, copying, and image tests to be dominated (&gt;
-30%) by calls to Hash(), SecurityLookupIDByClass(),
-SecurityLookupIDByType(), and StandardReadRequestFromClient(). Some of
-these tests also executed significant instructions in
-WaitForSomething().
-
-<p>In contrast, the window tests executed significant
-instructions in SecurityLookupIDByType(), Hash(),
-StandardReadRequestFromClient(), but also executed significant
-instructions in other routines, such as ConfigureWindow(). Some time
-was spent looking at Hash() function, but optimizations in this routine
-did not lead to a dramatic increase in <tt/x11perf/ performance.
--->
-
-<!--
-<sect3>Clock Cycles
-
-<p>Retired instructions can be misleading because Intel/AMD instructions
-execute in variable amounts of time. The OProfile tests were repeated
-using the Intel CPU_CLK_HALTED counter with DMX running on the second
-back-end machine. Note that this is a different test configuration that
-the one described above. However, these tests show the amount of time
-(as measured in CPU cycles) that are spent in each routine. Because
-<tt/x11perf/ was running on the first back-end machine and because
-window optimizations were on, the load on the second back-end machine
-was not significant.
-
-<p>Using CPU_CLK_HALTED, DMX showed simple drawing
-tests spending more than 10% of their time in
-StandardReadRequestFromClient(), with significant time (&gt; 20% total)
-spent in SecurityLookupIDByClass(), WaitForSomething(), and Dispatch().
-For these tests, &lt; 5% of the time was spent in Hash(), which explains
-why optimizing the Hash() routine did not impact <tt/x11perf/ results.
-
-<p>The trapezoid, text, scrolling, copying, and image tests were
-dominated by time in ProcFillPoly(), PanoramiXFillPoly(), dmxFillPolygon(),
-SecurityLookupIDByClass(), SecurityLookupIDByType(), and
-StandardReadRequestFromClient(). Hash() time was generally above 5% but
-less than 10% of total time.
--->
-
-<sect2>X Test Suite
-
-<p>The X Test Suite was run on the fully optimized DMX server using the
-configuration described above. The following failures were noted:
- <verb>
-XListPixmapFormats: Test 1 [1]
-XChangeWindowAttributes: Test 32 [1]
-XCreateWindow: Test 30 [1]
-XFreeColors: Test 4 [3]
-XCopyArea: Test 13, 17, 21, 25, 30 [2]
-XCopyPlane: Test 11, 15, 27, 31 [2]
-XSetFontPath: Test 4 [1]
-XChangeKeyboardControl: Test 9, 10 [1]
-
-[1] Previously documented errors expected from the Xinerama
- implementation (see Phase I discussion).
-[2] Newly noted errors that have been verified as expected
- behavior of the Xinerama implementation.
-[3] Newly noted error that has been verified as a Xinerama
- implementation bug.
- </verb>
-
-<!-- ============================================================ -->
-<sect1>Phase III
-
-<p>During the third phase of development, support was provided for the
-following extensions: SHAPE, RENDER, XKEYBOARD, XInput.
-
-<sect2>SHAPE
-
-<p>The SHAPE extension is supported. Test applications (e.g., xeyes and
-oclock) and window managers that make use of the SHAPE extension will
-work as expected.
-
-<sect2>RENDER
-
-<p>The RENDER extension is supported. The version included in the DMX
-CVS tree is version 0.2, and this version is fully supported by Xdmx.
-Applications using only version 0.2 functions will work correctly;
-however, some apps that make use of functions from later versions do not
-properly check the extension's major/minor version numbers. These apps
-will fail with a Bad Implementation error when using post-version 0.2
-functions. This is expected behavior. When the DMX CVS tree is updated
-to include newer versions of RENDER, support for these newer functions
-will be added to the DMX X server.
-
-<sect2>XKEYBOARD
-
-<p>The XKEYBOARD extension is supported. If present on the back-end X
-servers, the XKEYBOARD extension will be used to obtain information
-about the type of the keyboard for initialization. Otherwise, the
-keyboard will be initialized using defaults. Note that this departs
-from older behavior: when Xdmx is compiled without XKEYBOARD support,
-the map from the back-end X server will be preserved. With XKEYBOARD
-support, the map is not preserved because better information and control
-of the keyboard is available.
-
-<sect2>XInput
-
-<p>The XInput extension is supported. Any device can be used as a core
-device and be used as an XInput extension device, with the exception of
-core devices on the back-end servers. This limitation is present
-because cursor handling on the back-end requires that the back-end
-cursor sometimes track the Xdmx core cursor -- behavior that is
-incompatible with using the back-end pointer as a non-core device.
-
-<p>Currently, back-end extension devices are not available as Xdmx
-extension devices, but this limitation should be removed in the future.
-
-<p>To demonstrate the XInput extension, and to provide more examples for
-low-level input device driver writers, USB device drivers have been
-written for mice (usb-mou), keyboards (usb-kbd), and
-non-mouse/non-keyboard USB devices (usb-oth). Please see the man page
-for information on Linux kernel drivers that are required for using
-these Xdmx drivers.
-
-<sect2>DPMS
-
-<p>The DPMS extension is exported but does not do anything at this time.
-
-<sect2>Other Extensions
-
-<p>The LBX,
- SECURITY,
- XC-APPGROUP, and
- XFree86-Bigfont
-extensions do not require any special Xdmx support and have been exported.
-
-<p>The
- BIG-REQUESTS,
- DEC-XTRAP,
- DOUBLE-BUFFER,
- Extended-Visual-Information,
- FontCache,
- GLX,
- MIT-SCREEN-SAVER,
- MIT-SHM,
- MIT-SUNDRY-NONSTANDARD,
- RECORD,
- SECURITY,
- SGI-GLX,
- SYNC,
- TOG-CUP,
- X-Resource,
- XC-MISC,
- XFree86-DGA,
- XFree86-DRI,
- XFree86-Misc,
- XFree86-VidModeExtension, and
- XVideo
-extensions are <it/not/ supported at this time, but will be evaluated
-for inclusion in future DMX releases. <bf>See below for additional work
-on extensions after Phase III.</bf>
-
-<sect1>Phase IV
-
-<sect2>Moving to XFree86 4.3.0
-
-<p>For Phase IV, the recent release of XFree86 4.3.0 (27 February 2003)
-was merged onto the dmx.sourceforge.net CVS trunk and all work is
-proceeding using this tree.
-
-<sect2>Extensions
-
-<sect3>XC-MISC (supported)
-
-<p>XC-MISC is used internally by the X library to recycle XIDs from the
-X server. This is important for long-running X server sessions. Xdmx
-supports this extension. The X Test Suite passed and failed the exact
-same tests before and after this extension was enabled.
-<!-- Tested February/March 2003 -->
-
-<sect3>Extended-Visual-Information (supported)
-
-<p>The Extended-Visual-Information extension provides a method for an X
-client to obtain detailed visual information. Xdmx supports this
-extension. It was tested using the <tt>hw/dmx/examples/evi</tt> example
-program. <bf/Note that this extension is not Xinerama-aware/ -- it will
-return visual information for each screen even though Xinerama is
-causing the X server to export a single logical screen.
-<!-- Tested March 2003 -->
-
-<sect3>RES (supported)
-
-<p>The X-Resource extension provides a mechanism for a client to obtain
-detailed information about the resources used by other clients. This
-extension was tested with the <tt>hw/dmx/examples/res</tt> program. The
-X Test Suite passed and failed the exact same tests before and after
-this extension was enabled.
-<!-- Tested March 2003 -->
-
-<sect3>BIG-REQUESTS (supported)
-
-<p>This extension enables the X11 protocol to handle requests longer
-than 262140 bytes. The X Test Suite passed and failed the exact same
-tests before and after this extension was enabled.
-<!-- Tested March 2003 -->
-
-<sect3>XSYNC (supported)
-
-<p>This extension provides facilities for two different X clients to
-synchronize their requests. This extension was minimally tested with
-<tt/xdpyinfo/ and the X Test Suite passed and failed the exact same
-tests before and after this extension was enabled.
-<!-- Tested March 2003 -->
-
-<sect3>XTEST, RECORD, DEC-XTRAP (supported) and XTestExtension1 (not supported)
-
-<p>The XTEST and RECORD extension were developed by the X Consortium for
-use in the X Test Suite and are supported as a standard in the X11R6
-tree. They are also supported in Xdmx. When X Test Suite tests that
-make use of the XTEST extension are run, Xdmx passes and fails exactly
-the same tests as does a standard XFree86 X server. When the
-<tt/rcrdtest/ test (a part of the X Test Suite that verifies the RECORD
-extension) is run, Xdmx passes and fails exactly the same tests as does
-a standard XFree86 X server. <!-- Tested February/March 2003 -->
-
-<p>There are two older XTEST-like extensions: DEC-XTRAP and
-XTestExtension1. The XTestExtension1 extension was developed for use by
-the X Testing Consortium for use with a test suite that eventually
-became (part of?) the X Test Suite. Unlike XTEST, which only allows
-events to be sent to the server, the XTestExtension1 extension also
-allowed events to be recorded (similar to the RECORD extension). The
-second is the DEC-XTRAP extension that was developed by the Digital
-Equipment Corporation.
-
-<p>The DEC-XTRAP extension is available from Xdmx and has been tested
-with the <tt/xtrap*/ tools which are distributed as standard X11R6
-clients. <!-- Tested March 2003 -->
-
-<p>The XTestExtension1 is <em/not/ supported because it does not appear
-to be used by any modern X clients (the few that support it also support
-XTEST) and because there are no good methods available for testing that
-it functions correctly (unlike XTEST and DEC-XTRAP, the code for
-XTestExtension1 is not part of the standard X server source tree, so
-additional testing is important). <!-- Tested March 2003 -->
-
-<p>Most of these extensions are documented in the X11R6 source tree.
-Further, several original papers exist that this author was unable to
-locate -- for completeness and historical interest, citations are
-provide:
-<descrip>
-<tag/XRECORD/ Martha Zimet. Extending X For Recording. 8th Annual X
-Technical Conference Boston, MA January 24-26, 1994.
-<tag/DEC-XTRAP/ Dick Annicchiarico, Robert Chesler, Alan Jamison. XTrap
-Architecture. Digital Equipment Corporation, July 1991.
-<tag/XTestExtension1/ Larry Woestman. X11 Input Synthesis Extension
-Proposal. Hewlett Packard, November 1991.
-</descrip>
-
-<sect3>MIT-MISC (not supported)
-
-<p>The MIT-MISC extension is used to control a bug-compatibility flag
-that provides compatibility with xterm programs from X11R1 and X11R2.
-There does not appear to be a single client available that makes use of
-this extension and there is not way to verify that it works correctly.
-The Xdmx server does <em/not/ support MIT-MISC.
-
-<sect3>SCREENSAVER (not supported)
-
-<p>This extension provides special support for the X screen saver. It
-was tested with beforelight, which appears to be the only client that
-works with it. When Xinerama was not active, <tt/beforelight/ behaved
-as expected. However, when Xinerama was active, <tt/beforelight/ did
-not behave as expected. Further, when this extension is not active,
-<tt/xscreensaver/ (a widely-used X screen saver program) did not behave
-as expected. Since this extension is not Xinerama-aware and is not
-commonly used with expected results by clients, we have left this
-extension disabled at this time.
-
-<sect3>GLX (supported)
-
-<p>The GLX extension provides OpenGL and GLX windowing support. In
-Xdmx, the extension is called glxProxy, and it is Xinerama aware. It
-works by either feeding requests forward through Xdmx to each of the
-back-end servers or handling them locally. All rendering requests are
-handled on the back-end X servers. This code was donated to the DMX
-project by SGI. For the X Test Suite results comparison, see below.
-
-<sect3>RENDER (supported)
-
-<p>The X Rendering Extension (RENDER) provides support for digital image
-composition. Geometric and text rendering are supported. RENDER is
-partially Xinerama-aware, with text and the most basic compositing
-operator; however, its higher level primitives (triangles, triangle
-strips, and triangle fans) are not yet Xinerama-aware. The RENDER
-extension is still under development, and is currently at version 0.8.
-Additional support will be required in DMX as more primitives and/or
-requests are added to the extension.
-
-<p>There is currently no test suite for the X Rendering Extension;
-however, there has been discussion of developing a test suite as the
-extension matures. When that test suite becomes available, additional
-testing can be performed with Xdmx. The X Test Suite passed and failed
-the exact same tests before and after this extension was enabled.
-
-<sect3>Summary
-
-<!-- WARNING: this list is duplicated in the "Common X extension
-support" section -->
-<p>To summarize, the following extensions are currently supported:
- BIG-REQUESTS,
- DEC-XTRAP,
- DMX,
- DPMS,
- Extended-Visual-Information,
- GLX,
- LBX,
- RECORD,
- RENDER,
- SECURITY,
- SHAPE,
- SYNC,
- X-Resource,
- XC-APPGROUP,
- XC-MISC,
- XFree86-Bigfont,
- XINERAMA,
- XInputExtension,
- XKEYBOARD, and
- XTEST.
-
-<p>The following extensions are <em/not/ supported at this time:
- DOUBLE-BUFFER,
- FontCache,
- MIT-SCREEN-SAVER,
- MIT-SHM,
- MIT-SUNDRY-NONSTANDARD,
- TOG-CUP,
- XFree86-DGA,
- XFree86-Misc,
- XFree86-VidModeExtension,
- XTestExtensionExt1, and
- XVideo.
-
-<sect2>Additional Testing with the X Test Suite
-
-<sect3>XFree86 without XTEST
-
-<p>After the release of XFree86 4.3.0, we retested the XFree86 X server
-with and without using the XTEST extension. When the XTEST extension
-was <em/not/ used for testing, the XFree86 4.3.0 server running on our
-usual test system with a Radeon VE card reported unexpected failures in
-the following tests:
-<verb>
-XListPixmapFormats: Test 1
-XChangeKeyboardControl: Tests 9, 10
-XGetDefault: Test 5
-XRebindKeysym: Test 1
-</verb>
-
-<sect3>XFree86 with XTEST
-
-<p>When using the XTEST extension, the XFree86 4.3.0 server reported the
-following errors:
-<verb>
-XListPixmapFormats: Test 1
-XChangeKeyboardControl: Tests 9, 10
-XGetDefault: Test 5
-XRebindKeysym: Test 1
-
-XAllowEvents: Tests 20, 21, 24
-XGrabButton: Tests 5, 9-12, 14, 16, 19, 21-25
-XGrabKey: Test 8
-XSetPointerMapping: Test 3
-XUngrabButton: Test 4
-</verb>
-
-<p>While these errors may be important, they will probably be fixed
-eventually in the XFree86 source tree. We are particularly interested
-in demonstrating that the Xdmx server does not introduce additional
-failures that are not known Xinerama failures.
-
-<sect3>Xdmx with XTEST, without Xinerama, without GLX
-
-<p>Without Xinerama, but using the XTEST extension, the following errors
-were reported from Xdmx (note that these are the same as for the XFree86
-4.3.0, except that XGetDefault no longer fails):
-<verb>
-XListPixmapFormats: Test 1
-XChangeKeyboardControl: Tests 9, 10
-XRebindKeysym: Test 1
-
-XAllowEvents: Tests 20, 21, 24
-XGrabButton: Tests 5, 9-12, 14, 16, 19, 21-25
-XGrabKey: Test 8
-XSetPointerMapping: Test 3
-XUngrabButton: Test 4
-</verb>
-
-<sect3>Xdmx with XTEST, with Xinerama, without GLX
-
-<p>With Xinerama, using the XTEST extension, the following errors
-were reported from Xdmx:
-<verb>
-XListPixmapFormats: Test 1
-XChangeKeyboardControl: Tests 9, 10
-XRebindKeysym: Test 1
-
-XAllowEvents: Tests 20, 21, 24
-XGrabButton: Tests 5, 9-12, 14, 16, 19, 21-25
-XGrabKey: Test 8
-XSetPointerMapping: Test 3
-XUngrabButton: Test 4
-
-XCopyPlane: Tests 13, 22, 31 (well-known XTEST/Xinerama interaction issue)
-XDrawLine: Test 67
-XDrawLines: Test 91
-XDrawSegments: Test 68
-</verb>
-Note that the first two sets of errors are the same as for the XFree86
-4.3.0 server, and that the XCopyPlane error is a well-known error
-resulting from an XTEST/Xinerama interaction when the request crosses a
-screen boundary. The XDraw* errors are resolved when the tests are run
-individually and they do not cross a screen boundary. We will
-investigate these errors further to determine their cause.
-
-<sect3>Xdmx with XTEST, with Xinerama, with GLX
-
-<p>With GLX enabled, using the XTEST extension, the following errors
-were reported from Xdmx (these results are from early during the Phase
-IV development, but were confirmed with a late Phase IV snapshot):
-<verb>
-XListPixmapFormats: Test 1
-XChangeKeyboardControl: Tests 9, 10
-XRebindKeysym: Test 1
-
-XAllowEvents: Tests 20, 21, 24
-XGrabButton: Tests 5, 9-12, 14, 16, 19, 21-25
-XGrabKey: Test 8
-XSetPointerMapping: Test 3
-XUngrabButton: Test 4
-
-XClearArea: Test 8
-XCopyArea: Tests 4, 5, 11, 14, 17, 23, 25, 27, 30
-XCopyPlane: Tests 6, 7, 10, 19, 22, 31
-XDrawArcs: Tests 89, 100, 102
-XDrawLine: Test 67
-XDrawSegments: Test 68
-</verb>
-Note that the first two sets of errors are the same as for the XFree86
-4.3.0 server, and that the third set has different failures than when
-Xdmx does not include GLX support. Since the GLX extension adds new
-visuals to support GLX's visual configs and the X Test Suite runs tests
-over the entire set of visuals, additional rendering tests were run and
-presumably more of them crossed a screen boundary. This conclusion is
-supported by the fact that nearly all of the rendering errors reported
-are resolved when the tests are run individually and they do no cross a
-screen boundary.
-
-<p>Further, when hardware rendering is disabled on the back-end displays,
-many of the errors in the third set are eliminated, leaving only:
-<verb>
-XClearArea: Test 8
-XCopyArea: Test 4, 5, 11, 14, 17, 23, 25, 27, 30
-XCopyPlane: Test 6, 7, 10, 19, 22, 31
-</verb>
-
-<sect3>Conclusion
-
-<p>We conclude that all of the X Test Suite errors reported for Xdmx are
-the result of errors in the back-end X server or the Xinerama
-implementation. Further, all of these errors that can be reasonably
-fixed at the Xdmx layer have been. (Where appropriate, we have
-submitted patches to the XFree86 and Xinerama upstream maintainers.)
-
-<sect2>Dynamic Reconfiguration
-
-<p>During this development phase, dynamic reconfiguration support was
-added to DMX. This support allows an application to change the position
-and offset of a back-end server's screen. For example, if the
-application would like to shift a screen slightly to the left, it could
-query Xdmx for the screen's &lt;x,y&gt; position and then dynamically
-reconfigure that screen to be at position &lt;x+10,y&gt;. When a screen
-is dynamically reconfigured, input handling and a screen's root window
-dimensions are adjusted as needed. These adjustments are transparent to
-the user.
-
-<sect3>Dynamic reconfiguration extension
-
-<p>The application interface to DMX's dynamic reconfiguration is through
-a function in the DMX extension library:
-<verb>
-Bool DMXReconfigureScreen(Display *dpy, int screen, int x, int y)
-</verb>
-where <it/dpy/ is DMX server's display, <it/screen/ is the number of the
-screen to be reconfigured, and <it/x/ and <it/y/ are the new upper,
-left-hand coordinates of the screen to be reconfigured.
-
-<p>The coordinates are not limited other than as required by the X
-protocol, which limits all coordinates to a signed 16 bit number. In
-addition, all coordinates within a screen must also be legal values.
-Therefore, setting a screen's upper, left-hand coordinates such that the
-right or bottom edges of the screen is greater than 32,767 is illegal.
-
-<sect3>Bounding box
-
-<p>When the Xdmx server is started, a bounding box is calculated from
-the screens' layout given either on the command line or in the
-configuration file. This bounding box is currently fixed for the
-lifetime of the Xdmx server.
-
-<p>While it is possible to move a screen outside of the bounding box, it
-is currently not possible to change the dimensions of the bounding box.
-For example, it is possible to specify coordinates of &lt;-100,-100&gt;
-for the upper, left-hand corner of the bounding box, which was
-previously at coordinates &lt;0,0&gt;. As expected, the screen is moved
-down and to the right; however, since the bounding box is fixed, the
-left side and upper portions of the screen exposed by the
-reconfiguration are no longer accessible on that screen. Those
-inaccessible regions are filled with black.
-
-<p>This fixed bounding box limitation will be addressed in a future
-development phase.
-
-<sect3>Sample applications
-
-<p>An example of where this extension is useful is in setting up a video
-wall. It is not always possible to get everything perfectly aligned,
-and sometimes the positions are changed (e.g., someone might bump into a
-projector). Instead of physically moving projectors or monitors, it is
-now possible to adjust the positions of the back-end server's screens
-using the dynamic reconfiguration support in DMX.
-
-<p>Other applications, such as automatic setup and calibration tools,
-can make use of dynamic reconfiguration to correct for projector
-alignment problems, as long as the projectors are still arranged
-rectilinearly. Horizontal and vertical keystone correction could be
-applied to projectors to correct for non-rectilinear alignment problems;
-however, this must be done external to Xdmx.
-
-<p>A sample test program is included in the DMX server's examples
-directory to demonstrate the interface and how an application might use
-dynamic reconfiguration. See <tt/dmxreconfig.c/ for details.
-
-<sect3>Additional notes
-
-<p>In the original development plan, Phase IV was primarily devoted to
-adding OpenGL support to DMX; however, SGI became interested in the DMX
-project and developed code to support OpenGL/GLX. This code was later
-donated to the DMX project and integrated into the DMX code base, which
-freed the DMX developers to concentrate on dynamic reconfiguration (as
-described above).
-
-<sect2>Doxygen documentation
-
-<p>Doxygen is an open-source (GPL) documentation system for generating
-browseable documentation from stylized comments in the source code. We
-have placed all of the Xdmx server and DMX protocol source code files
-under Doxygen so that comprehensive documentation for the Xdmx source
-code is available in an easily browseable format.
-
-<sect2>Valgrind
-
-<p>Valgrind, an open-source (GPL) memory debugger for Linux, was used to
-search for memory management errors. Several memory leaks were detected
-and repaired. The following errors were not addressed:
-<enum>
- <item>
- When the X11 transport layer sends a reply to the client, only
- those fields that are required by the protocol are filled in --
- unused fields are left as uninitialized memory and are therefore
- noted by valgrind. These instances are not errors and were not
- repaired.
- <item>
- At each server generation, glxInitVisuals allocates memory that
- is never freed. The amount of memory lost each generation
- approximately equal to 128 bytes for each back-end visual.
- Because the code involved is automatically generated, this bug
- has not been fixed and will be referred to SGI.
- <item>
- At each server generation, dmxRealizeFont calls XLoadQueryFont,
- which allocates a font structure that is not freed.
- dmxUnrealizeFont can free the font structure for the first
- screen, but cannot free it for the other screens since they are
- already closed by the time dmxUnrealizeFont could free them.
- The amount of memory lost each generation is approximately equal
- to 80 bytes per font per back-end. When this bug is fixed in
- the the X server's device-independent (dix) code, DMX will be
- able to properly free the memory allocated by XLoadQueryFont.
-</enum>
-
-<sect2>RATS
-
-<p>RATS (Rough Auditing Tool for Security) is an open-source (GPL)
-security analysis tool that scans source code for common
-security-related programming errors (e.g., buffer overflows and TOCTOU
-races). RATS was used to audit all of the code in the hw/dmx directory
-and all "High" notations were checked manually. The code was either
-re-written to eliminate the warning, or a comment containing "RATS" was
-inserted on the line to indicate that a human had checked the code.
-Unrepaired warnings are as follows:
-<enum>
- <item>
- Fixed-size buffers are used in many areas, but code has been
- added to protect against buffer overflows (e.g., XmuSnprint).
- The only instances that have not yet been fixed are in
- config/xdmxconfig.c (which is not part of the Xdmx server) and
- input/usb-common.c.
- <item>
- vprintf and vfprintf are used in the logging routines. In
- general, all uses of these functions (e.g., dmxLog) provide a
- constant format string from a trusted source, so the use is
- relatively benign.
- <item>
- glxProxy/glxscreens.c uses getenv and strcat. The use of these
- functions is safe and will remain safe as long as
- ExtensionsString is longer then GLXServerExtensions (ensuring
- this may not be ovious to the casual programmer, but this is in
- automatically generated code, so we hope that the generator
- enforces this constraint).
-</enum>
-
- </article>
-
- <!-- Local Variables: -->
- <!-- fill-column: 72 -->
- <!-- End: -->
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/dmx.txt b/nx-X11/programs/Xserver/hw/dmx/doc/dmx.txt
deleted file mode 100644
index 568c75178..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/dmx.txt
+++ /dev/null
@@ -1,2989 +0,0 @@
- Distributed Multihead X design
- Kevin E. Martin, David H. Dawes, and Rickard E. Faith
-
- 29 June 2004 (created 25 July 2001)
-
- This document covers the motivation, background, design, and implemen-
- tation of the distributed multihead X (DMX) system. It is a living
- document and describes the current design and implementation details
- of the DMX system. As the project progresses, this document will be
- continually updated to reflect the changes in the code and/or design.
- _C_o_p_y_r_i_g_h_t _2_0_0_1 _b_y _V_A _L_i_n_u_x _S_y_s_t_e_m_s_, _I_n_c_._, _F_r_e_m_o_n_t_, _C_a_l_i_f_o_r_n_i_a_. _C_o_p_y_-
- _r_i_g_h_t _2_0_0_1_-_2_0_0_4 _b_y _R_e_d _H_a_t_, _I_n_c_._, _R_a_l_e_i_g_h_, _N_o_r_t_h _C_a_r_o_l_i_n_a
-
- ______________________________________________________________________
-
- Table of Contents
-
-
-
- 1. Introduction
- 1.1 The Distributed Multihead X Server
- 1.2 Layout of Paper
-
- 2. Development plan
- 2.1 Bootstrap code
- 2.2 Input device handling
- 2.3 Output device handling
- 2.3.1 Initialization
- 2.3.2 Handling rendering requests
- 2.4 Optimizing DMX
- 2.5 DMX X extension support
- 2.6 Common X extension support
- 2.7 OpenGL support
-
- 3. Current issues
- 3.1 Fonts
- 3.2 Zero width rendering primitives
- 3.3 Output scaling
- 3.4 Per-screen colormaps
-
- A. Background
- A.1 Core input device handling
- A.1.1 InitInput()
- A.1.2 InitAndStartDevices()
- A.1.3 devReadInput()
- A.1.4 ProcessInputEvents()
- A.1.5 DisableDevice()
- A.1.6 CloseDevice()
- A.1.7 LegalModifier()
- A.2 Output handling
- A.2.1 InitOutput()
- A.2.2 AddScreen()
- A.2.3 ScreenInit()
- A.2.4 CloseScreen()
- A.2.5 GC operations
- A.2.6 Xnest
- A.2.7 Shadow framebuffer
- A.3 Xinerama
- A.3.1 Xinerama-specific changes to the DIX code
- A.3.2 Xinerama-specific changes to the MI code
- A.3.3 Intercepted DIX core requests
-
- B. Development Results
- B.1 Phase I
- B.1.1 Scope
- B.1.2 Results
- B.1.3 X Test Suite
- B.1.3.1 Introduction
- B.1.3.2 Expected Failures for a Single Head
- B.1.3.3 Expected Failures for Xinerama
- B.1.3.4 Additional Failures from Xdmx
- B.1.3.5 Summary and Future Work
- B.1.4 Fonts
- B.1.5 Performance
- B.1.6 Pixmaps
- B.2 Phase II
- B.2.1 Moving from XFree86 4.1.99.1 to 4.2.0.0
- B.2.2 Global changes
- B.2.3 XSync() Batching
- B.2.4 Offscreen Optimization
- B.2.5 Lazy Window Creation Optimization
- B.2.6 Subdividing Rendering Primitives
- B.2.7 Summary of x11perf Data
- B.2.8 Profiling with OProfile
- B.2.9 X Test Suite
- B.3 Phase III
- B.3.1 SHAPE
- B.3.2 RENDER
- B.3.3 XKEYBOARD
- B.3.4 XInput
- B.3.5 DPMS
- B.3.6 Other Extensions
- B.4 Phase IV
- B.4.1 Moving to XFree86 4.3.0
- B.4.2 Extensions
- B.4.2.1 XC-MISC (supported)
- B.4.2.2 Extended-Visual-Information (supported)
- B.4.2.3 RES (supported)
- B.4.2.4 BIG-REQUESTS (supported)
- B.4.2.5 XSYNC (supported)
- B.4.2.6 XTEST, RECORD, DEC-XTRAP (supported) and XTestExtension1 (not supported)
- B.4.2.7 MIT-MISC (not supported)
- B.4.2.8 SCREENSAVER (not supported)
- B.4.2.9 GLX (supported)
- B.4.2.10 RENDER (supported)
- B.4.2.11 Summary
- B.4.3 Additional Testing with the X Test Suite
- B.4.3.1 XFree86 without XTEST
- B.4.3.2 XFree86 with XTEST
- B.4.3.3 Xdmx with XTEST, without Xinerama, without GLX
- B.4.3.4 Xdmx with XTEST, with Xinerama, without GLX
- B.4.3.5 Xdmx with XTEST, with Xinerama, with GLX
- B.4.3.6 Conclusion
- B.4.4 Dynamic Reconfiguration
- B.4.4.1 Dynamic reconfiguration extension
- B.4.4.2 Bounding box
- B.4.4.3 Sample applications
- B.4.4.4 Additional notes
- B.4.5 Doxygen documentation
- B.4.6 Valgrind
- B.4.7 RATS
-
-
- ______________________________________________________________________
-
- 11.. IInnttrroodduuccttiioonn
-
- 11..11.. TThhee DDiissttrriibbuutteedd MMuullttiihheeaadd XX SSeerrvveerr
-
- Current Open Source multihead solutions are limited to a single
- physical machine. A single X server controls multiple display
- devices, which can be arranged as independent heads or unified into a
- single desktop (with Xinerama). These solutions are limited to the
- number of physical devices that can co-exist in a single machine
- (e.g., due to the number of AGP/PCI slots available for graphics
- cards). Thus, large tiled displays are not currently possible. The
- work described in this paper will eliminate the requirement that the
- display devices reside in the same physical machine. This will be
- accomplished by developing a front-end proxy X server that will
- control multiple back-end X servers that make up the large display.
-
-
- The overall structure of the distributed multihead X (DMX) project is
- as follows: A single front-end X server will act as a proxy to a set
- of back-end X servers, which handle all of the visible rendering. X
- clients will connect to the front-end server just as they normally
- would to a regular X server. The front-end server will present an
- abstracted view to the client of a single large display. This will
- ensure that all standard X clients will continue to operate without
- modification (limited, as always, by the visuals and extensions
- provided by the X server). Clients that are DMX-aware will be able to
- use an extension to obtain information about the back-end servers
- (e.g., for placement of pop-up windows, window alignments by the
- window manager, etc.).
-
-
- The architecture of the DMX server is divided into two main sections:
- input (e.g., mouse and keyboard events) and output (e.g., rendering
- and windowing requests). Each of these are describe briefly below,
- and the rest of this design document will describe them in greater
- detail.
-
-
- The DMX server can receive input from three general types of input
- devices: "local" devices that are physically attached to the machine
- on which DMX is running, "backend" devices that are physically
- attached to one or more of the back-end X servers (and that generate
- events via the X protocol stream from the backend), and "console"
- devices that can be abstracted from any non-back-end X server.
- Backend and console devices are treated differently because the
- pointer device on the back-end X server also controls the location of
- the hardware X cursor. Full support for XInput extension devices is
- provided.
-
-
- Rendering requests will be accepted by the front-end server; however,
- rendering to visible windows will be broken down as needed and sent to
- the appropriate back-end server(s) via X11 library calls for actual
- rendering. The basic framework will follow a Xnest-style approach.
- GC state will be managed in the front-end server and sent to the
- appropriate back-end server(s) as required. Pixmap rendering will (at
- least initially) be handled by the front-end X server. Windowing
- requests (e.g., ordering, mapping, moving, etc.) will handled in the
- front-end server. If the request requires a visible change, the
- windowing operation will be translated into requests for the
- appropriate back-end server(s). Window state will be mirrored in the
- back-end server(s) as needed.
-
-
- 11..22.. LLaayyoouutt ooff PPaappeerr
-
- The next section describes the general development plan that was
- actually used for implementation. The final section discusses
- outstanding issues at the conclusion of development. The first
- appendix provides low-level technical detail that may be of interest
- to those intimately familiar with the X server architecture. The
- final appendix describes the four phases of development that were
- performed during the first two years of development.
-
-
- The final year of work was divided into 9 tasks that are not described
- in specific sections of this document. The major tasks during that
- time were the enhancement of the reconfiguration ability added in
- Phase IV, addition of support for a dynamic number of back-end
- displays (instead of a hard-coded limit), and the support for back-end
- display and input removal and addition. This work is mentioned in
- this paper, but is not covered in detail.
-
-
- 22.. DDeevveellooppmmeenntt ppllaann
-
- This section describes the development plan from approximately June
- 2001 through July 2003.
-
-
-
- 22..11.. BBoooottssttrraapp ccooddee
-
- To allow for rapid development of the DMX server by multiple
- developers during the first development stage, the problem will be
- broken down into three tasks: the overall DMX framework, back-end
- rendering services and input device handling services. However,
- before the work begins on these tasks, a simple framework that each
- developer could use was implemented to bootstrap the development
- effort. This framework renders to a single back-end server and
- provides dummy input devices (i.e., the keyboard and mouse). The
- simple back-end rendering service was implemented using the shadow
- framebuffer support currently available in the XFree86 environment.
-
-
- Using this bootstrapping framework, each developer has been able to
- work on each of the tasks listed above independently as follows: the
- framework will be extended to handle arbitrary back-end server
- configurations; the back-end rendering services will be transitioned
- to the more efficient Xnest-style implementation; and, an input device
- framework to handle various input devices via the input extension will
- be developed.
-
-
- Status: The boot strap code is complete.
-
-
-
- 22..22.. IInnppuutt ddeevviiccee hhaannddlliinngg
-
- An X server (including the front-end X server) requires two core input
- devices -- a keyboard and a pointer (mouse). These core devices are
- handled and required by the core X11 protocol. Additional types of
- input devices may be attached and utilized via the XInput extension.
- These are usually referred to as ``XInput extension devices'',
-
-
- There are some options as to how the front-end X server gets its core
- input devices:
-
-
- 1. Local Input. The physical input devices (e.g., keyboard and mouse)
- can be attached directly to the front-end X server. In this case,
- the keyboard and mouse on the machine running the front-end X
- server will be used. The front-end will have drivers to read the
- raw input from those devices and convert it into the required X
- input events (e.g., key press/release, pointer button
- press/release, pointer motion). The front-end keyboard driver will
- keep track of keyboard properties such as key and modifier
- mappings, autorepeat state, keyboard sound and led state.
- Similarly the front-end pointer driver will keep track if pointer
- properties such as the button mapping and movement acceleration
- parameters. With this option, input is handled fully in the front-
- end X server, and the back-end X servers are used in a display-only
- mode. This option was implemented and works for a limited number
- of Linux-specific devices. Adding additional local input devices
- for other architectures is expected to be relatively simple.
-
-
- The following options are available for implementing local input
- devices:
-
-
- a. The XFree86 X server has modular input drivers that could be
- adapted for this purpose. The mouse driver supports a wide
- range of mouse types and interfaces, as well as a range of
- Operating System platforms. The keyboard driver in XFree86 is
- not currently as modular as the mouse driver, but could be made
- so. The XFree86 X server also has a range of other input
- drivers for extended input devices such as tablets and touch
- screens. Unfortunately, the XFree86 drivers are generally
- complex, often simultaneously providing support for multiple
- devices across multiple architectures; and rely so heavily on
- XFree86-specific helper-functions, that this option was not
- pursued.
-
-
- b. The kdrive X server in XFree86 has built-in drivers that support
- PS/2 mice and keyboard under Linux. The mouse driver can
- indirectly handle other mouse types if the Linux utility gpm is
- used as to translate the native mouse protocol into PS/2 mouse
- format. These drivers could be adapted and built in to the
- front-end X server if this range of hardware and OS support is
- sufficient. While much simpler than the XFree86 drivers, the
- kdrive drivers were not used for the DMX implementation.
-
- c. Reimplementation of keyboard and mouse drivers from scratch for
- the DMX framework. Because keyboard and mouse drivers are
- relatively trivial to implement, this pathway was selected.
- Other drivers in the X source tree were referenced, and
- significant contributions from other drivers are noted in the
- DMX source code.
-
-
- 2. Backend Input. The front-end can make use of the core input
- devices attached to one or more of the back-end X servers. Core
- input events from multiple back-ends are merged into a single input
- event stream. This can work sanely when only a single set of input
- devices is used at any given time. The keyboard and pointer state
- will be handled in the front-end, with changes propagated to the
- back-end servers as needed. This option was implemented and works
- well. Because the core pointer on a back-end controls the hardware
- mouse on that back-end, core pointers cannot be treated as XInput
- extension devices. However, all back-end XInput extensions devices
- can be mapped to either DMX core or DMX XInput extension devices.
-
- 3. Console Input. The front-end server could create a console window
- that is displayed on an X server independent of the back-end X
- servers. This console window could display things like the
- physical screen layout, and the front-end could get its core input
- events from events delivered to the console window. This option
- was implemented and works well. To help the human navigate, window
- outlines are also displayed in the console window. Further,
- console windows can be used as either core or XInput extension
- devices.
-
- 4. Other options were initially explored, but they were all partial
- subsets of the options listed above and, hence, are irrelevant.
-
-
- Although extended input devices are not specifically mentioned in the
- Distributed X requirements, the options above were all implemented so
- that XInput extension devices were supported.
-
-
- The bootstrap code (Xdmx) had dummy input devices, and these are still
- supported in the final version. These do the necessary initialization
- to satisfy the X server's requirements for core pointer and keyboard
- devices, but no input events are ever generated.
-
-
- Status: The input code is complete. Because of the complexity of the
- XFree86 input device drivers (and their heavy reliance on XFree86
- infrastructure), separate low-level device drivers were implemented
- for Xdmx. The following kinds of drivers are supported (in general,
- the devices can be treated arbitrarily as "core" input devices or as
- XInput "extension" devices; and multiple instances of different kinds
- of devices can be simultaneously available):
-
- 1. A "dummy" device drive that never generates events.
-
- 2. "Local" input is from the low-level hardware on which the Xdmx
- binary is running. This is the only area where using the XFree86
- driver infrastructure would have been helpful, and then only
- partially, since good support for generic USB devices does not yet
- exist in XFree86 (in any case, XFree86 and kdrive driver code was
- used where possible). Currently, the following local devices are
- supported under Linux (porting to other operating systems should be
- fairly straightforward):
-
- +o Linux keyboard
-
- +o Linux serial mouse (MS)
-
- +o Linux PS/2 mouse
-
- +o USB keyboard
-
- +o USB mouse
-
- +o USB generic device (e.g., joystick, gamepad, etc.)
-
-
- 3. "Backend" input is taken from one or more of the back-end displays.
- In this case, events are taken from the back-end X server and are
- converted to Xdmx events. Care must be taken so that the sprite
- moves properly on the display from which input is being taken.
-
- 4. "Console" input is taken from an X window that Xdmx creates on the
- operator's display (i.e., on the machine running the Xdmx binary).
- When the operator's mouse is inside the console window, then those
- events are converted to Xdmx events. Several special features are
- available: the console can display outlines of windows that are on
- the Xdmx display (to facilitate navigation), the cursor can be
- confined to the console, and a "fine" mode can be activated to
- allow very precise cursor positioning.
-
-
-
- 22..33.. OOuuttppuutt ddeevviiccee hhaannddlliinngg
-
- The output of the DMX system displays rendering and windowing requests
- across multiple screens. The screens are typically arranged in a grid
- such that together they represent a single large display.
-
-
- The output section of the DMX code consists of two parts. The first
- is in the front-end proxy X server (Xdmx), which accepts client
- connections, manages the windows, and potentially renders primitives
- but does not actually display any of the drawing primitives. The
- second part is the back-end X server(s), which accept commands from
- the front-end server and display the results on their screens.
-
-
- 22..33..11.. IInniittiiaalliizzaattiioonn
-
- The DMX front-end must first initialize its screens by connecting to
- each of the back-end X servers and collecting information about each
- of these screens. However, the information collected from the back-
- end X servers might be inconsistent. Handling these cases can be
- difficult and/or inefficient. For example, a two screen system has
- one back-end X server running at 16bpp while the second is running at
- 32bpp. Converting rendering requests (e.g., XPutImage() or
- XGetImage() requests) to the appropriate bit depth can be very time
- consuming. Analyzing these cases to determine how or even if it is
- possible to handle them is required. The current Xinerama code
- handles many of these cases (e.g., in PanoramiXConsolidate()) and will
- be used as a starting point. In general, the best solution is to use
- homogeneous X servers and display devices. Using back-end servers
- with the same depth is a requirement of the final DMX implementation.
-
-
- Once this screen consolidation is finished, the relative position of
- each back-end X server's screen in the unified screen is initialized.
- A full-screen window is opened on each of the back-end X servers, and
- the cursor on each screen is turned off. The final DMX implementation
- can also make use of a partial-screen window, or multiple windows per
- back-end screen.
-
-
- 22..33..22.. HHaannddlliinngg rreennddeerriinngg rreeqquueessttss
-
- After initialization, X applications connect to the front-end server.
- There are two possible implementations of how rendering and windowing
- requests are handled in the DMX system:
-
-
- 1. A shadow framebuffer is used in the front-end server as the render
- target. In this option, all protocol requests are completely
- handled in the front-end server. All state and resources are
- maintained in the front-end including a shadow copy of the entire
- framebuffer. The framebuffers attached to the back-end servers are
- updated by XPutImage() calls with data taken directly from the
- shadow framebuffer.
-
-
- This solution suffers from two main problems. First, it does not
- take advantage of any accelerated hardware available in the system.
- Second, the size of the XPutImage() calls can be quite large and
- thus will be limited by the bandwidth available.
-
-
- The initial DMX implementation used a shadow framebuffer by
- default.
-
-
- 2. Rendering requests are sent to each back-end server for handling
- (as is done in the Xnest server described above). In this option,
- certain protocol requests are handled in the front-end server and
- certain requests are repackaged and then sent to the back-end
- servers. The framebuffer is distributed across the multiple back-
- end servers. Rendering to the framebuffer is handled on each back-
- end and can take advantage of any acceleration available on the
- back-end servers' graphics display device. State is maintained
- both in the front and back-end servers.
-
-
- This solution suffers from two main drawbacks. First, protocol
- requests are sent to all back-end servers -- even those that will
- completely clip the rendering primitive -- which wastes bandwidth
- and processing time. Second, state is maintained both in the
- front- and back-end servers. These drawbacks are not as severe as
- in option 1 (above) and can either be overcome through
- optimizations or are acceptable. Therefore, this option will be
- used in the final implementation.
-
-
- The final DMX implementation defaults to this mechanism, but also
- supports the shadow framebuffer mechanism. Several optimizations
- were implemented to eliminate the drawbacks of the default
- mechanism. These optimizations are described the section below and
- in Phase II of the Development Results (see appendix).
-
-
-
- Status: Both the shadow framebuffer and Xnest-style code is complete.
-
-
-
- 22..44.. OOppttiimmiizziinngg DDMMXX
-
- Initially, the Xnest-style solution's performance will be measured and
- analyzed to determine where the performance bottlenecks exist. There
- are four main areas that will be addressed.
-
-
- First, to obtain reasonable interactivity with the first development
- phase, XSync() was called after each protocol request. The XSync()
- function flushes any pending protocol requests. It then waits for the
- back-end to process the request and send a reply that the request has
- completed. This happens with each back-end server and performance
- greatly suffers. As a result of the way XSync() is called in the
- first development phase, the batching that the X11 library performs is
- effectively defeated. The XSync() call usage will be analyzed and
- optimized by batching calls and performing them at regular intervals,
- except where interactivity will suffer (e.g., on cursor movements).
-
-
- Second, the initial Xnest-style solution described above sends the
- repackaged protocol requests to all back-end servers regardless of
- whether or not they would be completely clipped out. The requests
- that are trivially rejected on the back-end server wastes the limited
- bandwidth available. By tracking clipping changes in the DMX X
- server's windowing code (e.g., by opening, closing, moving or resizing
- windows), we can determine whether or not back-end windows are visible
- so that trivial tests in the front-end server's GC ops drawing
- functions can eliminate these unnecessary protocol requests.
-
-
- Third, each protocol request will be analyzed to determine if it is
- possible to break the request into smaller pieces at display
- boundaries. The initial ones to be analyzed are put and get image
- requests since they will require the greatest bandwidth to transmit
- data between the front and back-end servers. Other protocol requests
- will be analyzed and those that will benefit from breaking them into
- smaller requests will be implemented.
-
-
- Fourth, an extension is being considered that will allow font glyphs
- to be transferred from the front-end DMX X server to each back-end
- server. This extension will permit the front-end to handle all font
- requests and eliminate the requirement that all back-end X servers
- share the exact same fonts as the front-end server. We are
- investigating the feasibility of this extension during this
- development phase.
-
-
- Other potential optimizations will be determined from the performance
- analysis.
-
- Please note that in our initial design, we proposed optimizing BLT
- operations (e.g., XCopyArea() and window moves) by developing an
- extension that would allow individual back-end servers to directly
- copy pixel data to other back-end servers. This potential
- optimization was in response to the simple image movement
- implementation that required potentially many calls to GetImage() and
- PutImage(). However, the current Xinerama implementation handles
- these BLT operations differently. Instead of copying data to and from
- screens, they generate expose events -- just as happens in the case
- when a window is moved from off a screen to on screen. This approach
- saves the limited bandwidth available between front and back-end
- servers and is being standardized with Xinerama. It also eliminates
- the potential setup problems and security issues resulting from having
- each back-end server open connections to all other back-end servers.
- Therefore, we suggest accepting Xinerama's expose event solution.
-
-
- Also note that the approach proposed in the second and third
- optimizations might cause backing store algorithms in the back-end to
- be defeated, so a DMX X server configuration flag will be added to
- disable these optimizations.
-
-
- Status: The optimizations proposed above are complete. It was
- determined that the using the xfs font server was sufficient and
- creating a new mechanism to pass glyphs was redundant; therefore, the
- fourth optimization proposed above was not included in DMX.
-
-
-
- 22..55.. DDMMXX XX eexxtteennssiioonn ssuuppppoorrtt
-
- The DMX X server keeps track of all the windowing information on the
- back-end X servers, but does not currently export this information to
- any client applications. An extension will be developed to pass the
- screen information and back-end window IDs to DMX-aware clients.
- These clients can then use this information to directly connect to and
- render to the back-end windows. Bypassing the DMX X server allows
- DMX-aware clients to break up complex rendering requests on their own
- and send them directly to the windows on the back-end server's
- screens. An example of a client that can make effective use of this
- extension is Chromium.
-
-
- Status: The extension, as implemented, is fully documented in "Client-
- to-Server DMX Extension to the X Protocol". Future changes might be
- required based on feedback and other proposed enhancements to DMX.
- Currently, the following facilities are supported:
-
- 1. Screen information (clipping rectangle for each screen relative to
- the virtual screen)
-
- 2. Window information (window IDs and clipping information for each
- back-end window that corresponds to each DMX window)
-
- 3. Input device information (mappings from DMX device IDs to back-end
- device IDs)
-
- 4. Force window creation (so that a client can override the server-
- side lazy window creation optimization)
-
- 5. Reconfiguration (so that a client can request that a screen
- position be changed)
-
- 6. Addition and removal of back-end servers and back-end and console
- inputs.
- 22..66.. CCoommmmoonn XX eexxtteennssiioonn ssuuppppoorrtt
-
- The XInput, XKeyboard and Shape extensions are commonly used
- extensions to the base X11 protocol. XInput allows multiple and non-
- standard input devices to be accessed simultaneously. These input
- devices can be connected to either the front-end or back-end servers.
- XKeyboard allows much better keyboard mappings control. Shape adds
- support for arbitrarily shaped windows and is used by various window
- managers. Nearly all potential back-end X servers make these
- extensions available, and support for each one will be added to the
- DMX system.
-
-
- In addition to the extensions listed above, support for the X
- Rendering extension (Render) is being developed. Render adds digital
- image composition to the rendering model used by the X Window System.
- While this extension is still under development by Keith Packard of
- HP, support for the current version will be added to the DMX system.
-
-
- Support for the XTest extension was added during the first development
- phase.
-
-
- Status: The following extensions are supported and are discussed in
- more detail in Phase IV of the Development Results (see appendix):
- BIG-REQUESTS, DEC-XTRAP, DMX, DPMS, Extended-Visual-Information, GLX,
- LBX, RECORD, RENDER, SECURITY, SHAPE, SYNC, X-Resource, XC-APPGROUP,
- XC-MISC, XFree86-Bigfont, XINERAMA, XInputExtension, XKEYBOARD, and
- XTEST.
-
-
- 22..77.. OOppeennGGLL ssuuppppoorrtt
-
- OpenGL support using the Mesa code base exists in XFree86 release 4
- and later. Currently, the direct rendering infrastructure (DRI)
- provides accelerated OpenGL support for local clients and
- unaccelerated OpenGL support (i.e., software rendering) is provided
- for non-local clients.
-
-
- The single head OpenGL support in XFree86 4.x will be extended to use
- the DMX system. When the front and back-end servers are on the same
- physical hardware, it is possible to use the DRI to directly render to
- the back-end servers. First, the existing DRI will be extended to
- support multiple display heads, and then to support the DMX system.
- OpenGL rendering requests will be direct rendering to each back-end X
- server. The DRI will request the screen layout (either from the
- existing Xinerama extension or a DMX-specific extension). Support for
- synchronized swap buffers will also be added (on hardware that
- supports it). Note that a single front-end server with a single back-
- end server on the same physical machine can emulate accelerated
- indirect rendering.
-
-
- When the front and back-end servers are on different physical hardware
- or are using non-XFree86 4.x X servers, a mechanism to render
- primitives across the back-end servers will be provided. There are
- several options as to how this can be implemented.
-
-
- 1. The existing OpenGL support in each back-end server can be used by
- repackaging rendering primitives and sending them to each back-end
- server. This option is similar to the unoptimized Xnest-style
- approach mentioned above. Optimization of this solution is beyond
- the scope of this project and is better suited to other distributed
- rendering systems.
-
- 2. Rendering to a pixmap in the front-end server using the current
- XFree86 4.x code, and then displaying to the back-ends via calls to
- XPutImage() is another option. This option is similar to the
- shadow frame buffer approach mentioned above. It is slower and
- bandwidth intensive, but has the advantage that the back-end
- servers are not required to have OpenGL support.
-
-
- These, and other, options will be investigated in this phase of the
- work.
-
-
- Work by others have made Chromium DMX-aware. Chromium will use the
- DMX X protocol extension to obtain information about the back-end
- servers and will render directly to those servers, bypassing DMX.
-
-
- Status: OpenGL support by the glxProxy extension was implemented by
- SGI and has been integrated into the DMX code base.
-
-
-
- 33.. CCuurrrreenntt iissssuueess
-
- In this sections the current issues are outlined that require further
- investigation.
-
-
- 33..11.. FFoonnttss
-
- The font path and glyphs need to be the same for the front-end and
- each of the back-end servers. Font glyphs could be sent to the back-
- end servers as necessary but this would consume a significant amount
- of available bandwidth during font rendering for clients that use many
- different fonts (e.g., Netscape). Initially, the font server (xfs)
- will be used to provide the fonts to both the front-end and back-end
- servers. Other possibilities will be investigated during development.
-
-
- 33..22.. ZZeerroo wwiiddtthh rreennddeerriinngg pprriimmiittiivveess
-
- To allow pixmap and on-screen rendering to be pixel perfect, all back-
- end servers must render zero width primitives exactly the same as the
- front-end renders the primitives to pixmaps. For those back-end
- servers that do not exactly match, zero width primitives will be
- automatically converted to one width primitives. This can be handled
- in the front-end server via the GC state.
-
-
- 33..33.. OOuuttppuutt ssccaalliinngg
-
- With very large tiled displays, it might be difficult to read the
- information on the standard X desktop. In particular, the cursor can
- be easily lost and fonts could be difficult to read. Automatic
- primitive scaling might prove to be very useful. We will investigate
- the possibility of scaling the cursor and providing a set of alternate
- pre-scaled fonts to replace the standard fonts that many applications
- use (e.g., fixed). Other options for automatic scaling will also be
- investigated.
-
-
-
- 33..44.. PPeerr--ssccrreeeenn ccoolloorrmmaappss
-
- Each screen's default colormap in the set of back-end X servers should
- be able to be adjusted via a configuration utility. This support is
- would allow the back-end screens to be calibrated via custom gamma
- tables. On 24-bit systems that support a DirectColor visual, this
- type of correction can be accommodated. One possible implementation
- would be to advertise to X client of the DMX server a TrueColor visual
- while using DirectColor visuals on the back-end servers to implement
- this type of color correction. Other options will be investigated.
-
-
- AA.. BBaacckkggrroouunndd
-
- This section describes the existing Open Source architectures that can
- be used to handle multiple screens and upon which this development
- project is based. This section was written before the implementation
- was finished, and may not reflect actual details of the
- implementation. It is left for historical interest only.
-
-
- AA..11.. CCoorree iinnppuutt ddeevviiccee hhaannddlliinngg
-
- The following is a description of how core input devices are handled
- by an X server.
-
-
- AA..11..11.. IInniittIInnppuutt(())
-
- InitInput() is a DDX function that is called at the start of each
- server generation from the X server's main() function. Its purpose is
- to determine what input devices are connected to the X server,
- register them with the DIX and MI layers, and initialize the input
- event queue. InitInput() does not have a return value, but the X
- server will abort if either a core keyboard device or a core pointer
- device are not registered. Extended input (XInput) devices can also
- be registered in InitInput().
-
-
- InitInput() usually has implementation specific code to determine
- which input devices are available. For each input device it will be
- using, it calls AddInputDevice():
-
-
- AAddddIInnppuuttDDeevviiccee(())
- This DIX function allocates the device structure, registers a
- callback function (which handles device init, close, on and
- off), and returns the input handle, which can be treated as
- opaque. It is called once for each input device.
-
-
- Once input handles for core keyboard and core pointer devices have
- been obtained from AddInputDevice(), they are registered as core
- devices by calling RegisterPointerDevice() and
- RegisterKeyboardDevice(). Each of these should be called once. If
- both core devices are not registered, then the X server will exit with
- a fatal error when it attempts to start the input devices in
- InitAndStartDevices(), which is called directly after InitInput() (see
- below).
-
-
- RReeggiisstteerr{{PPooiinntteerr,,KKeeyybbooaarrdd}}DDeevviiccee(())
- These DIX functions take a handle returned from AddInputDevice()
- and initialize the core input device fields in inputInfo, and
- initialize the input processing and grab functions for each core
- input device.
- The core pointer device is then registered with the miPointer code
- (which does the high level cursor handling). While this registration
- is not necessary for correct miPointer operation in the current
- XFree86 code, it is still done mostly for compatibility reasons.
-
-
- mmiiRReeggiisstteerrPPooiinntteerrDDeevviiccee(())
- This MI function registers the core pointer's input handle with
- with the miPointer code.
-
-
- The final part of InitInput() is the initialization of the input event
- queue handling. In most cases, the event queue handling provided in
- the MI layer is used. The primary XFree86 X server uses its own event
- queue handling to support some special cases related to the XInput
- extension and the XFree86-specific DGA extension. For our purposes,
- the MI event queue handling should be suitable. It is initialized by
- calling mieqInit():
-
-
- mmiieeqqIInniitt(())
- This MI function initializes the MI event queue for the core
- devices, and is passed the public component of the input handles
- for the two core devices.
-
-
- If a wakeup handler is required to deliver synchronous input events,
- it can be registered here by calling the DIX function
- RegisterBlockAndWakeupHandlers(). (See the devReadInput() description
- below.)
-
-
- AA..11..22.. IInniittAAnnddSSttaarrttDDeevviicceess(())
-
- InitAndStartDevices() is a DIX function that is called immediately
- after InitInput() from the X server's main() function. Its purpose is
- to initialize each input device that was registered with
- AddInputDevice(), enable each input device that was successfully
- initialized, and create the list of enabled input devices. Once each
- registered device is processed in this way, the list of enabled input
- devices is checked to make sure that both a core keyboard device and
- core pointer device were registered and successfully enabled. If not,
- InitAndStartDevices() returns failure, and results in the the X server
- exiting with a fatal error.
-
-
- Each registered device is initialized by calling its callback
- (dev->deviceProc) with the DEVICE_INIT argument:
-
-
- ((**ddeevv-->>ddeevviicceePPrroocc))((ddeevv,, DDEEVVIICCEE__IINNIITT))
- This function initializes the device structs with core
- information relevant to the device.
-
-
- For pointer devices, this means specifying the number of
- buttons, default button mapping, the function used to get motion
- events (usually miPointerGetMotionEvents()), the function used
- to change/control the core pointer motion parameters
- (acceleration and threshold), and the motion buffer size.
-
-
- For keyboard devices, this means specifying the keycode range,
- default keycode to keysym mapping, default modifier mapping, and
- the functions used to sound the keyboard bell and modify/control
- the keyboard parameters (LEDs, bell pitch and duration, key
- click, which keys are auto-repeating, etc).
-
-
- Each initialized device is enabled by calling EnableDevice():
-
-
- EEnnaabblleeDDeevviiccee(())
- EnableDevice() calls the device callback with DEVICE_ON:
-
- ((**ddeevv-->>ddeevviicceePPrroocc))((ddeevv,, DDEEVVIICCEE__OONN))
- This typically opens and initializes the relevant physical
- device, and when appropriate, registers the device's file
- descriptor (or equivalent) as a valid input source.
-
-
- EnableDevice() then adds the device handle to the X server's
- global list of enabled devices.
-
-
- InitAndStartDevices() then verifies that a valid core keyboard and
- pointer has been initialized and enabled. It returns failure if
- either are missing.
-
-
- AA..11..33.. ddeevvRReeaaddIInnppuutt(())
-
- Each device will have some function that gets called to read its
- physical input. These may be called in a number of different ways.
- In the case of synchronous I/O, they will be called from a DDX wakeup-
- handler that gets called after the server detects that new input is
- available. In the case of asynchronous I/O, they will be called from
- a (SIGIO) signal handler triggered when new input is available. This
- function should do at least two things: make sure that input events
- get enqueued, and make sure that the cursor gets moved for motion
- events (except if these are handled later by the driver's own event
- queue processing function, which cannot be done when using the MI
- event queue handling).
-
-
- Events are queued by calling mieqEnqueue():
-
-
- mmiieeqqEEnnqquueeuuee(())
- This MI function is used to add input events to the event queue.
- It is simply passed the event to be queued.
-
-
- The cursor position should be updated when motion events are enqueued,
- by calling either miPointerAbsoluteCursor() or miPointerDeltaCursor():
-
-
- mmiiPPooiinntteerrAAbbssoolluutteeCCuurrssoorr(())
- This MI function is used to move the cursor to the absolute
- coordinates provided.
-
- mmiiPPooiinntteerrDDeellttaaCCuurrssoorr(())
- This MI function is used to move the cursor relative to its
- current position.
-
-
- AA..11..44.. PPrroocceessssIInnppuuttEEvveennttss(())
-
- ProcessInputEvents() is a DDX function that is called from the X
- server's main dispatch loop when new events are available in the input
- event queue. It typically processes the enqueued events, and updates
- the cursor/pointer position. It may also do other DDX-specific event
- processing.
-
-
- Enqueued events are processed by mieqProcessInputEvents() and passed
- to the DIX layer for transmission to clients:
-
-
- mmiieeqqPPrroocceessssIInnppuuttEEvveennttss(())
- This function processes each event in the event queue, and
- passes it to the device's input processing function. The DIX
- layer provides default functions to do this processing, and they
- handle the task of getting the events passed back to the
- relevant clients.
-
- mmiiPPooiinntteerrUUppddaattee(())
- This function resynchronized the cursor position with the new
- pointer position. It also takes care of moving the cursor
- between screens when needed in multi-head configurations.
-
-
-
- AA..11..55.. DDiissaabblleeDDeevviiccee(())
-
- DisableDevice is a DIX function that removes an input device from the
- list of enabled devices. The result of this is that the device no
- longer generates input events. The device's data structures are kept
- in place, and disabling a device like this can be reversed by calling
- EnableDevice(). DisableDevice() may be called from the DDX when it is
- desirable to do so (e.g., the XFree86 server does this when VT
- switching). Except for special cases, this is not normally called for
- core input devices.
-
-
- DisableDevice() calls the device's callback function with DEVICE_OFF:
-
-
- ((**ddeevv-->>ddeevviicceePPrroocc))((ddeevv,, DDEEVVIICCEE__OOFFFF))
- This typically closes the relevant physical device, and when
- appropriate, unregisters the device's file descriptor (or
- equivalent) as a valid input source.
-
-
- DisableDevice() then removes the device handle from the X server's
- global list of enabled devices.
-
-
-
- AA..11..66.. CClloosseeDDeevviiccee(())
-
- CloseDevice is a DIX function that removes an input device from the
- list of available devices. It disables input from the device and
- frees all data structures associated with the device. This function
- is usually called from CloseDownDevices(), which is called from main()
- at the end of each server generation to close all input devices.
-
-
- CloseDevice() calls the device's callback function with DEVICE_CLOSE:
-
-
- ((**ddeevv-->>ddeevviicceePPrroocc))((ddeevv,, DDEEVVIICCEE__CCLLOOSSEE))
- This typically closes the relevant physical device, and when
- appropriate, unregisters the device's file descriptor (or
- equivalent) as a valid input source. If any device specific
- data structures were allocated when the device was initialized,
- they are freed here.
-
- CloseDevice() then frees the data structures that were allocated for
- the device when it was registered/initialized.
-
-
-
- AA..11..77.. LLeeggaallMMooddiiffiieerr(())
-
- LegalModifier() is a required DDX function that can be used to
- restrict which keys may be modifier keys. This seems to be present
- for historical reasons, so this function should simply return TRUE
- unconditionally.
-
-
-
- AA..22.. OOuuttppuutt hhaannddlliinngg
-
- The following sections describe the main functions required to
- initialize, use and close the output device(s) for each screen in the
- X server.
-
-
- AA..22..11.. IInniittOOuuttppuutt(())
-
- This DDX function is called near the start of each server generation
- from the X server's main() function. InitOutput()'s main purpose is
- to initialize each screen and fill in the global screenInfo structure
- for each screen. It is passed three arguments: a pointer to the
- screenInfo struct, which it is to initialize, and argc and argv from
- main(), which can be used to determine additional configuration
- information.
-
-
- The primary tasks for this function are outlined below:
-
-
- 1. PPaarrssee ccoonnffiigguurraattiioonn iinnffoo:: The first task of InitOutput() is to
- parses any configuration information from the configuration file.
- In addition to the XF86Config file, other configuration information
- can be taken from the command line. The command line options can
- be gathered either in InitOutput() or earlier in the
- ddxProcessArgument() function, which is called by
- ProcessCommandLine(). The configuration information determines the
- characteristics of the screen(s). For example, in the XFree86 X
- server, the XF86Config file specifies the monitor information, the
- screen resolution, the graphics devices and slots in which they are
- located, and, for Xinerama, the screens' layout.
-
- 2. IInniittiiaalliizzee ssccrreeeenn iinnffoo:: The next task is to initialize the screen-
- dependent internal data structures. For example, part of what the
- XFree86 X server does is to allocate its screen and pixmap private
- indices, probe for graphics devices, compare the probed devices to
- the ones listed in the XF86Config file, and add the ones that match
- to the internal xf86Screens[] structure.
-
- 3. SSeett ppiixxmmaapp ffoorrmmaattss:: The next task is to initialize the screenInfo's
- image byte order, bitmap bit order and bitmap scanline unit/pad.
- The screenInfo's pixmap format's depth, bits per pixel and scanline
- padding is also initialized at this stage.
-
- 4. UUnniiffyy ssccrreeeenn iinnffoo:: An optional task that might be done at this
- stage is to compare all of the information from the various screens
- and determines if they are compatible (i.e., if the set of screens
- can be unified into a single desktop). This task has potential to
- be useful to the DMX front-end server, if Xinerama's
- PanoramiXConsolidate() function is not sufficient.
-
- Once these tasks are complete, the valid screens are known and each of
- these screens can be initialized by calling AddScreen().
-
-
- AA..22..22.. AAddddSSccrreeeenn(())
-
- This DIX function is called from InitOutput(), in the DDX layer, to
- add each new screen to the screenInfo structure. The DDX screen
- initialization function and command line arguments (i.e., argc and
- argv) are passed to it as arguments.
-
-
- This function first allocates a new Screen structure and any privates
- that are required. It then initializes some of the fields in the
- Screen struct and sets up the pixmap padding information. Finally, it
- calls the DDX screen initialization function ScreenInit(), which is
- described below. It returns the number of the screen that were just
- added, or -1 if there is insufficient memory to add the screen or if
- the DDX screen initialization fails.
-
-
- AA..22..33.. SSccrreeeennIInniitt(())
-
- This DDX function initializes the rest of the Screen structure with
- either generic or screen-specific functions (as necessary). It also
- fills in various screen attributes (e.g., width and height in
- millimeters, black and white pixel values).
-
-
- The screen init function usually calls several functions to perform
- certain screen initialization functions. They are described below:
-
-
- {{mmii,,**ffbb}}SSccrreeeennIInniitt(())
- The DDX layer's ScreenInit() function usually calls another
- layer's ScreenInit() function (e.g., miScreenInit() or
- fbScreenInit()) to initialize the fallbacks that the DDX driver
- does not specifically handle.
-
-
- After calling another layer's ScreenInit() function, any screen-
- specific functions either wrap or replace the other layer's
- function pointers. If a function is to be wrapped, each of the
- old function pointers from the other layer are stored in a
- screen private area. Common functions to wrap are CloseScreen()
- and SaveScreen().
-
-
- mmiiIInniittiiaalliizzeeBBaacckkiinnggSSttoorree(())
- This MI function initializes the screen's backing storage
- functions, which are used to save areas of windows that are
- currently covered by other windows.
-
-
- mmiiDDCCIInniittiiaalliizzee(())
- This MI function initializes the MI cursor display structures
- and function pointers. If a hardware cursor is used, the DDX
- layer's ScreenInit() function will wrap additional screen and
- the MI cursor display function pointers.
-
-
- Another common task for ScreenInit() function is to initialize the
- output device state. For example, in the XFree86 X server, the
- ScreenInit() function saves the original state of the video card and
- then initializes the video mode of the graphics device.
-
- AA..22..44.. CClloosseeSSccrreeeenn(())
-
- This function restores any wrapped screen functions (and in particular
- the wrapped CloseScreen() function) and restores the state of the
- output device to its original state. It should also free any private
- data it created during the screen initialization.
-
-
- AA..22..55.. GGCC ooppeerraattiioonnss
-
- When the X server is requested to render drawing primitives, it does
- so by calling drawing functions through the graphics context's
- operation function pointer table (i.e., the GCOps functions). These
- functions render the basic graphics operations such as drawing
- rectangles, lines, text or copying pixmaps. Default routines are
- provided either by the MI layer, which draws indirectly through a
- simple span interface, or by the framebuffer layers (e.g., CFB, MFB,
- FB), which draw directly to a linearly mapped frame buffer.
-
-
- To take advantage of special hardware on the graphics device, specific
- GCOps functions can be replaced by device specific code. However,
- many times the graphics devices can handle only a subset of the
- possible states of the GC, so during graphics context validation,
- appropriate routines are selected based on the state and capabilities
- of the hardware. For example, some graphics hardware can accelerate
- single pixel width lines with certain dash patterns. Thus, for dash
- patterns that are not supported by hardware or for width 2 or greater
- lines, the default routine is chosen during GC validation.
-
-
- Note that some pointers to functions that draw to the screen are
- stored in the Screen structure. They include GetImage(), GetSpans(),
- PaintWindowBackground(), PaintWindowBorder(), CopyWindow() and
- RestoreAreas().
-
-
- AA..22..66.. XXnneesstt
-
- The Xnest X server is a special proxy X server that relays the X
- protocol requests that it receives to a ``real'' X server that then
- processes the requests and displays the results, if applicable. To
- the X applications, Xnest appears as if it is a regular X server.
- However, Xnest is both server to the X application and client of the
- real X server, which will actually handle the requests.
-
-
- The Xnest server implements all of the standard input and output
- initialization steps outlined above.
-
-
- IInniittOOuuttppuutt(())
- Xnest takes its configuration information from command line
- arguments via ddxProcessArguments(). This information includes
- the real X server display to connect to, its default visual
- class, the screen depth, the Xnest window's geometry, etc.
- Xnest then connects to the real X server and gathers visual,
- colormap, depth and pixmap information about that server's
- display, creates a window on that server, which will be used as
- the root window for Xnest.
-
-
- Next, Xnest initializes its internal data structures and uses
- the data from the real X server's pixmaps to initialize its own
- pixmap formats. Finally, it calls AddScreen(xnestOpenScreen,
- argc, argv) to initialize each of its screens.
- SSccrreeeennIInniitt(())
- Xnest's ScreenInit() function is called xnestOpenScreen(). This
- function initializes its screen's depth and visual information,
- and then calls miScreenInit() to set up the default screen
- functions. It then calls miInitializeBackingStore() and
- miDCInitialize() to initialize backing store and the software
- cursor. Finally, it replaces many of the screen functions with
- its own functions that repackage and send the requests to the
- real X server to which Xnest is attached.
-
-
- CClloosseeSSccrreeeenn(())
- This function frees its internal data structure allocations.
- Since it replaces instead of wrapping screen functions, there
- are no function pointers to unwrap. This can potentially lead
- to problems during server regeneration.
-
-
- GGCC ooppeerraattiioonnss
- The GC operations in Xnest are very simple since they leave all
- of the drawing to the real X server to which Xnest is attached.
- Each of the GCOps takes the request and sends it to the real X
- server using standard Xlib calls. For example, the X
- application issues a XDrawLines() call. This function turns
- into a protocol request to Xnest, which calls the
- xnestPolylines() function through Xnest's GCOps function pointer
- table. The xnestPolylines() function is only a single line,
- which calls XDrawLines() using the same arguments that were
- passed into it. Other GCOps functions are very similar. Two
- exceptions to the simple GCOps functions described above are the
- image functions and the BLT operations.
-
-
- The image functions, GetImage() and PutImage(), must use a
- temporary image to hold the image to be put of the image that
- was just grabbed from the screen while it is in transit to the
- real X server or the client. When the image has been
- transmitted, the temporary image is destroyed.
-
-
- The BLT operations, CopyArea() and CopyPlane(), handle not only
- the copy function, which is the same as the simple cases
- described above, but also the graphics exposures that result
- when the GC's graphics exposure bit is set to True. Graphics
- exposures are handled in a helper function,
- xnestBitBlitHelper(). This function collects the exposure
- events from the real X server and, if any resulting in regions
- being exposed, then those regions are passed back to the MI
- layer so that it can generate exposure events for the X
- application.
-
-
- The Xnest server takes its input from the X server to which it is
- connected. When the mouse is in the Xnest server's window, keyboard
- and mouse events are received by the Xnest server, repackaged and sent
- back to any client that requests those events.
-
-
- AA..22..77.. SShhaaddooww ffrraammeebbuuffffeerr
-
- The most common type of framebuffer is a linear array memory that maps
- to the video memory on the graphics device. However, accessing that
- video memory over an I/O bus (e.g., ISA or PCI) can be slow. The
- shadow framebuffer layer allows the developer to keep the entire
- framebuffer in main memory and copy it back to video memory at regular
- intervals. It also has been extended to handle planar video memory
- and rotated framebuffers.
-
-
- There are two main entry points to the shadow framebuffer code:
-
-
- sshhaaddoowwAAlllloocc((wwiiddtthh,, hheeiigghhtt,, bbpppp))
- This function allocates the in memory copy of the framebuffer of
- size width*height*bpp. It returns a pointer to that memory,
- which will be used by the framebuffer ScreenInit() code during
- the screen's initialization.
-
-
- sshhaaddoowwIInniitt((ppSSccrreeeenn,, uuppddaatteePPrroocc,, wwiinnddoowwPPrroocc))
- This function initializes the shadow framebuffer layer. It
- wraps several screen drawing functions, and registers a block
- handler that will update the screen. The updateProc is a
- function that will copy the damaged regions to the screen, and
- the windowProc is a function that is used when the entire linear
- video memory range cannot be accessed simultaneously so that
- only a window into that memory is available (e.g., when using
- the VGA aperture).
-
-
- The shadow framebuffer code keeps track of the damaged area of each
- screen by calculating the bounding box of all drawing operations that
- have occurred since the last screen update. Then, when the block
- handler is next called, only the damaged portion of the screen is
- updated.
-
-
- Note that since the shadow framebuffer is kept in main memory, all
- drawing operations are performed by the CPU and, thus, no accelerated
- hardware drawing operations are possible.
-
-
-
- AA..33.. XXiinneerraammaa
-
- Xinerama is an X extension that allows multiple physical screens
- controlled by a single X server to appear as a single screen.
- Although the extension allows clients to find the physical screen
- layout via extension requests, it is completely transparent to clients
- at the core X11 protocol level. The original public implementation of
- Xinerama came from Digital/Compaq. XFree86 rewrote it, filling in
- some missing pieces and improving both X11 core protocol compliance
- and performance. The Xinerama extension will be passing through
- X.Org's standardization process in the near future, and the sample
- implementation will be based on this rewritten version.
-
-
- The current implementation of Xinerama is based primarily in the DIX
- (device independent) and MI (machine independent) layers of the X
- server. With few exceptions the DDX layers do not need any changes to
- support Xinerama. X server extensions often do need modifications to
- provide full Xinerama functionality.
-
-
- The following is a code-level description of how Xinerama functions.
-
-
- Note: Because the Xinerama extension was originally called the
- PanoramiX extension, many of the Xinerama functions still have the
- PanoramiX prefix.
-
-
- PPaannoorraammiiXXEExxtteennssiioonnIInniitt(())
- PanoramiXExtensionInit() is a device-independent extension
- function that is called at the start of each server generation
- from InitExtensions(), which is called from the X server's
- main() function after all output devices have been initialized,
- but before any input devices have been initialized.
-
-
- PanoramiXNumScreens is set to the number of physical screens.
- If only one physical screen is present, the extension is
- disabled, and PanoramiXExtensionInit() returns without doing
- anything else.
-
-
- The Xinerama extension is registered by calling AddExtension().
-
-
- A local per-screen array of data structures (panoramiXdataPtr[])
- is allocated for each physical screen, and GC and Screen private
- indexes are allocated, and both GC and Screen private areas are
- allocated for each physical screen. These hold Xinerama-
- specific per-GC and per-Screen data. Each screen's CreateGC and
- CloseScreen functions are wrapped by XineramaCreateGC() and
- XineramaCloseScreen() respectively. Some new resource classes
- are created for Xinerama drawables and GCs, and resource types
- for Xinerama windows, pixmaps and colormaps.
-
-
- A region (XineramaScreenRegions[i]) is initialized for each
- physical screen, and single region (PanoramiXScreenRegion) is
- initialized to be the union of the screen regions. The
- panoramiXdataPtr[] array is also initialized with the size and
- origin of each screen. The relative positioning information for
- the physical screens is taken from the array dixScreenOrigins[],
- which the DDX layer must initialize in InitOutput(). The bounds
- of the combined screen is also calculated (PanoramiXPixWidth and
- PanoramiXPixHeight).
-
-
- The DIX layer has a list of function pointers (ProcVector[])
- that holds the entry points for the functions that process core
- protocol requests. The requests that Xinerama must intercept
- and break up into physical screen-specific requests are wrapped.
- The original set is copied to SavedProcVector[]. The types of
- requests intercepted are Window requests, GC requests, colormap
- requests, drawing requests, and some geometry-related requests.
- This wrapping allows the bulk of the protocol request processing
- to be handled transparently to the DIX layer. Some operations
- cannot be dealt with in this way and are handled with Xinerama-
- specific code within the DIX layer.
-
-
- PPaannoorraammiiXXCCoonnssoolliiddaattee(())
- PanoramiXConsolidate() is a device-independent extension
- function that is called directly from the X server's main()
- function after extensions and input/output devices have been
- initialized, and before the root windows are defined and
- initialized.
-
-
- This function finds the set of depths (PanoramiXDepths[]) and
- visuals (PanoramiXVisuals[]) common to all of the physical
- screens. PanoramiXNumDepths is set to the number of common
- depths, and PanoramiXNumVisuals is set to the number of common
- visuals. Resources are created for the single root window and
- the default colormap. Each of these resources has per-physical
- screen entries.
-
-
- PPaannoorraammiiXXCCrreeaatteeCCoonnnneeccttiioonnBBlloocckk(())
- PanoramiXConsolidate() is a device-independent extension
- function that is called directly from the X server's main()
- function after the per-physical screen root windows are created.
- It is called instead of the standard DIX CreateConnectionBlock()
- function. If this function returns FALSE, the X server exits
- with a fatal error. This function will return FALSE if no
- common depths were found in PanoramiXConsolidate(). With no
- common depths, Xinerama mode is not possible.
-
-
- The connection block holds the information that clients get when
- they open a connection to the X server. It includes information
- such as the supported pixmap formats, number of screens and the
- sizes, depths, visuals, default colormap information, etc, for
- each of the screens (much of information that xdpyinfo shows).
- The connection block is initialized with the combined single
- screen values that were calculated in the above two functions.
-
-
- The Xinerama extension allows the registration of connection
- block callback functions. The purpose of these is to allow
- other extensions to do processing at this point. These
- callbacks can be registered by calling
- XineramaRegisterConnectionBlockCallback() from the other
- extension's ExtensionInit() function. Each registered
- connection block callback is called at the end of
- PanoramiXCreateConnectionBlock().
-
-
- AA..33..11.. XXiinneerraammaa--ssppeecciiffiicc cchhaannggeess ttoo tthhee DDIIXX ccooddee
-
- There are a few types of Xinerama-specific changes within the DIX
- code. The main ones are described here.
-
-
- Functions that deal with colormap or GC -related operations outside of
- the intercepted protocol requests have a test added to only do the
- processing for screen numbers > 0. This is because they are handled
- for the single Xinerama screen and the processing is done once for
- screen 0.
-
-
- The handling of motion events does some coordinate translation between
- the physical screen's origin and screen zero's origin. Also, motion
- events must be reported relative to the composite screen origin rather
- than the physical screen origins.
-
-
- There is some special handling for cursor, window and event processing
- that cannot (either not at all or not conveniently) be done via the
- intercepted protocol requests. A particular case is the handling of
- pointers moving between physical screens.
-
-
- AA..33..22.. XXiinneerraammaa--ssppeecciiffiicc cchhaannggeess ttoo tthhee MMII ccooddee
-
- The only Xinerama-specific change to the MI code is in
- miSendExposures() to handle the coordinate (and window ID) translation
- for expose events.
-
-
-
- AA..33..33.. IInntteerrcceepptteedd DDIIXX ccoorree rreeqquueessttss
-
- Xinerama breaks up drawing requests for dispatch to each physical
- screen. It also breaks up windows into pieces for each physical
- screen. GCs are translated into per-screen GCs. Colormaps are
- replicated on each physical screen. The functions handling the
- intercepted requests take care of breaking the requests and
- repackaging them so that they can be passed to the standard request
- handling functions for each screen in turn. In addition, and to aid
- the repackaging, the information from many of the intercepted requests
- is used to keep up to date the necessary state information for the
- single composite screen. Requests (usually those with replies) that
- can be satisfied completely from this stored state information do not
- call the standard request handling functions.
-
-
-
- BB.. DDeevveellooppmmeenntt RReessuullttss
-
- In this section the results of each phase of development are
- discussed. This development took place between approximately June
- 2001 and July 2003.
-
-
- BB..11.. PPhhaassee II
-
- The initial development phase dealt with the basic implementation
- including the bootstrap code, which used the shadow framebuffer, and
- the unoptimized implementation, based on an Xnest-style
- implementation.
-
-
- BB..11..11.. SSccooppee
-
- The goal of Phase I is to provide fundamental functionality that can
- act as a foundation for ongoing work:
-
- 1. Develop the proxy X server
-
- +o The proxy X server will operate on the X11 protocol and relay
- requests as necessary to correctly perform the request.
-
- +o Work will be based on the existing work for Xinerama and Xnest.
-
- +o Input events and windowing operations are handled in the proxy
- server and rendering requests are repackaged and sent to each of
- the back-end servers for display.
-
- +o The multiple screen layout (including support for overlapping
- screens) will be user configurable via a configuration file or
- through the configuration tool.
-
- 2. Develop graphical configuration tool
-
- +o There will be potentially a large number of X servers to
- configure into a single display. The tool will allow the user
- to specify which servers are involved in the configuration and
- how they should be laid out.
-
- 3. Pass the X Test Suite
-
- +o The X Test Suite covers the basic X11 operations. All tests
- known to succeed must correctly operate in the distributed X
- environment.
-
-
- For this phase, the back-end X servers are assumed to be unmodified X
- servers that do not support any DMX-related protocol extensions;
- future optimization pathways are considered, but are not implemented;
- and the configuration tool is assumed to rely only on libraries in the
- X source tree (e.g., Xt).
-
-
- BB..11..22.. RReessuullttss
-
- The proxy X server, Xdmx, was developed to distribute X11 protocol
- requests to the set of back-end X servers. It opens a window on each
- back-end server, which represents the part of the front-end's root
- window that is visible on that screen. It mirrors window, pixmap and
- other state in each back-end server. Drawing requests are sent to
- either windows or pixmaps on each back-end server. This code is based
- on Xnest and uses the existing Xinerama extension.
-
-
- Input events can be taken from (1) devices attached to the back-end
- server, (2) core devices attached directly to the Xdmx server, or (3)
- from a ``console'' window on another X server. Events for these
- devices are gathered, processed and delivered to clients attached to
- the Xdmx server.
-
-
- An intuitive configuration format was developed to help the user
- easily configure the multiple back-end X servers. It was defined (see
- grammar in Xdmx man page) and a parser was implemented that is used by
- the Xdmx server and by a standalone xdmxconfig utility. The parsing
- support was implemented such that it can be easily factored out of the
- X source tree for use with other tools (e.g., vdl). Support for
- converting legacy vdl-format configuration files to the DMX format is
- provided by the vdltodmx utility.
-
-
- Originally, the configuration file was going to be a subsection of
- XFree86's XF86Config file, but that was not possible since Xdmx is a
- completely separate X server. Thus, a separate config file format was
- developed. In addition, a graphical configuration tool, xdmxconfig,
- was developed to allow the user to create and arrange the screens in
- the configuration file. The --ccoonnffiiggffiillee and --ccoonnffiigg command-line
- options can be used to start Xdmx using a configuration file.
-
-
- An extension that enables remote input testing is required for the X
- Test Suite to function. During this phase, this extension (XTEST) was
- implemented in the Xdmx server. The results from running the X Test
- Suite are described in detail below.
-
-
- BB..11..33.. XX TTeesstt SSuuiittee
-
- BB..11..33..11.. IInnttrroodduuccttiioonn
-
- The X Test Suite contains tests that verify Xlib functions operate
- correctly. The test suite is designed to run on a single X server;
- however, since X applications will not be able to tell the difference
- between the DMX server and a standard X server, the X Test Suite
- should also run on the DMX server.
-
- The Xdmx server was tested with the X Test Suite, and the existing
- failures are noted in this section. To put these results in
- perspective, we first discuss expected X Test failures and how errors
- in underlying systems can impact Xdmx test results.
-
-
- BB..11..33..22.. EExxppeecctteedd FFaaiilluurreess ffoorr aa SSiinnggllee HHeeaadd
-
- A correctly implemented X server with a single screen is expected to
- fail certain X Test tests. The following well-known errors occur
- because of rounding error in the X server code:
-
- XDrawArc: Tests 42, 63, 66, 73
- XDrawArcs: Tests 45, 66, 69, 76
-
-
-
- The following failures occur because of the high-level X server
- implementation:
-
- XLoadQueryFont: Test 1
- XListFontsWithInfo: Tests 3, 4
- XQueryFont: Tests 1, 2
-
-
-
- The following test fails when running the X server as root under Linux
- because of the way directory modes are interpreted:
-
- XWriteBitmapFile: Test 3
-
-
-
- Depending on the video card used for the back-end, other failures may
- also occur because of bugs in the low-level driver implementation.
- Over time, failures of this kind are usually fixed by XFree86, but
- will show up in Xdmx testing until then.
-
-
- BB..11..33..33.. EExxppeecctteedd FFaaiilluurreess ffoorr XXiinneerraammaa
-
- Xinerama fails several X Test Suite tests because of design decisions
- made for the current implementation of Xinerama. Over time, many of
- these errors will be corrected by XFree86 and the group working on a
- new Xinerama implementation. Therefore, Xdmx will also share X Suite
- Test failures with Xinerama.
-
- We may be able to fix or work-around some of these failures at the
- Xdmx level, but this will require additional exploration that was not
- part of Phase I.
-
- Xinerama is constantly improving, and the list of Xinerama-related
- failures depends on XFree86 version and the underlying graphics
- hardware. We tested with a variety of hardware, including nVidia, S3,
- ATI Radeon, and Matrox G400 (in dual-head mode). The list below
- includes only those failures that appear to be from the Xinerama
- layer, and does not include failures listed in the previous section,
- or failures that appear to be from the low-level graphics driver
- itself:
-
- These failures were noted with multiple Xinerama configurations:
-
- XCopyPlane: Tests 13, 22, 31 (well-known Xinerama implementation issue)
- XSetFontPath: Test 4
- XGetDefault: Test 5
- XMatchVisualInfo: Test 1
-
-
-
- These failures were noted only when using one dual-head video card
- with a 4.2.99.x XFree86 server:
-
- XListPixmapFormats: Test 1
- XDrawRectangles: Test 45
-
-
-
- These failures were noted only when using two video cards from
- different vendors with a 4.1.99.x XFree86 server:
-
- XChangeWindowAttributes: Test 32
- XCreateWindow: Test 30
- XDrawLine: Test 22
- XFillArc: Test 22
- XChangeKeyboardControl: Tests 9, 10
- XRebindKeysym: Test 1
-
-
-
- BB..11..33..44.. AAddddiittiioonnaall FFaaiilluurreess ffrroomm XXddmmxx
-
- When running Xdmx, no unexpected failures were noted. Since the Xdmx
- server is based on Xinerama, we expect to have most of the Xinerama
- failures present in the Xdmx server. Similarly, since the Xdmx server
- must rely on the low-level device drivers on each back-end server, we
- also expect that Xdmx will exhibit most of the back-end failures.
- Here is a summary:
-
- XListPixmapFormats: Test 1 (configuration dependent)
- XChangeWindowAttributes: Test 32
- XCreateWindow: Test 30
- XCopyPlane: Test 13, 22, 31
- XSetFontPath: Test 4
- XGetDefault: Test 5 (configuration dependent)
- XMatchVisualInfo: Test 1
- XRebindKeysym: Test 1 (configuration dependent)
-
-
-
- Note that this list is shorter than the combined list for Xinerama
- because Xdmx uses different code paths to perform some Xinerama
- operations. Further, some Xinerama failures have been fixed in the
- XFree86 4.2.99.x CVS repository.
-
-
- BB..11..33..55.. SSuummmmaarryy aanndd FFuuttuurree WWoorrkk
-
- Running the X Test Suite on Xdmx does not produce any failures that
- cannot be accounted for by the underlying Xinerama subsystem used by
- the front-end or by the low-level device-driver code running on the
- back-end X servers. The Xdmx server therefore is as ``correct'' as
- possible with respect to the standard set of X Test Suite tests.
-
- During the following phases, we will continue to verify Xdmx
- correctness using the X Test Suite. We may also use other tests
- suites or write additional tests that run under the X Test Suite that
- specifically verify the expected behavior of DMX.
-
-
-
- BB..11..44.. FFoonnttss
-
- In Phase I, fonts are handled directly by both the front-end and the
- back-end servers, which is required since we must treat each back-end
- server during this phase as a ``black box''. What this requires is
- that tthhee ffrroonntt-- aanndd bbaacckk--eenndd sseerrvveerrss mmuusstt sshhaarree tthhee eexxaacctt ssaammee ffoonntt
- ppaatthh. There are two ways to help make sure that all servers share the
- same font path:
-
-
- 1. First, each server can be configured to use the same font server.
- The font server, xfs, can be configured to serve fonts to multiple
- X servers via TCP.
-
- 2. Second, each server can be configured to use the same font path and
- either those font paths can be copied to each back-end machine or
- they can be mounted (e.g., via NFS) on each back-end machine.
-
-
- One additional concern is that a client program can set its own font
- path, and if it does so, then that font path must be available on each
- back-end machine.
-
-
- The -fontpath command line option was added to allow users to
- initialize the font path of the front end server. This font path is
- propagated to each back-end server when the default font is loaded.
- If there are any problems, an error message is printed, which will
- describe the problem and list the current font path. For more
- information about setting the font path, see the -fontpath option
- description in the man page.
-
-
- BB..11..55.. PPeerrffoorrmmaannccee
-
- Phase I of development was not intended to optimize performance. Its
- focus was on completely and correctly handling the base X11 protocol
- in the Xdmx server. However, several insights were gained during
- Phase I, which are listed here for reference during the next phase of
- development.
-
-
- 1. Calls to XSync() can slow down rendering since it requires a
- complete round trip to and from a back-end server. This is
- especially problematic when communicating over long haul networks.
-
- 2. Sending drawing requests to only the screens that they overlap
- should improve performance.
-
-
- BB..11..66.. PPiixxmmaappss
-
- Pixmaps were originally expected to be handled entirely in the front-
- end X server; however, it was found that this overly complicated the
- rendering code and would have required sending potentially large
- images to each back server that required them when copying from pixmap
- to screen. Thus, pixmap state is mirrored in the back-end server just
- as it is with regular window state. With this implementation, the
- same rendering code that draws to windows can be used to draw to
- pixmaps on the back-end server, and no large image transfers are
- required to copy from pixmap to window.
-
-
-
- BB..22.. PPhhaassee IIII
-
- The second phase of development concentrates on performance
- optimizations. These optimizations are documented here, with x11perf
- data to show how the optimizations improve performance.
-
-
- All benchmarks were performed by running Xdmx on a dual processor
- 1.4GHz AMD Athlon machine with 1GB of RAM connecting over 100baseT to
- two single-processor 1GHz Pentium III machines with 256MB of RAM and
- ATI Rage 128 (RF) video cards. The front end was running Linux
- 2.4.20-pre1-ac1 and the back ends were running Linux 2.4.7-10 and
- version 4.2.99.1 of XFree86 pulled from the XFree86 CVS repository on
- August 7, 2002. All systems were running Red Hat Linux 7.2.
-
-
- BB..22..11.. MMoovviinngg ffrroomm XXFFrreeee8866 44..11..9999..11 ttoo 44..22..00..00
-
- For phase II, the working source tree was moved to the branch tagged
- with dmx-1-0-branch and was updated from version 4.1.99.1 (20 August
- 2001) of the XFree86 sources to version 4.2.0.0 (18 January 2002).
- After this update, the following tests were noted to be more than 10%
- faster:
-
- 1.13 Fill 300x300 opaque stippled trapezoid (161x145 stipple)
- 1.16 Fill 1x1 tiled trapezoid (161x145 tile)
- 1.13 Fill 10x10 tiled trapezoid (161x145 tile)
- 1.17 Fill 100x100 tiled trapezoid (161x145 tile)
- 1.16 Fill 1x1 tiled trapezoid (216x208 tile)
- 1.20 Fill 10x10 tiled trapezoid (216x208 tile)
- 1.15 Fill 100x100 tiled trapezoid (216x208 tile)
- 1.37 Circulate Unmapped window (200 kids)
-
-
-
- And the following tests were noted to be more than 10% slower:
-
- 0.88 Unmap window via parent (25 kids)
- 0.75 Circulate Unmapped window (4 kids)
- 0.79 Circulate Unmapped window (16 kids)
- 0.80 Circulate Unmapped window (25 kids)
- 0.82 Circulate Unmapped window (50 kids)
- 0.85 Circulate Unmapped window (75 kids)
-
-
-
- These changes were not caused by any changes in the DMX system, and
- may point to changes in the XFree86 tree or to tests that have more
- "jitter" than most other x11perf tests.
-
-
- BB..22..22.. GGlloobbaall cchhaannggeess
-
- During the development of the Phase II DMX server, several global
- changes were made. These changes were also compared with the Phase I
- server. The following tests were noted to be more than 10% faster:
-
-
-
- 1.13 Fill 300x300 opaque stippled trapezoid (161x145 stipple)
- 1.15 Fill 1x1 tiled trapezoid (161x145 tile)
- 1.13 Fill 10x10 tiled trapezoid (161x145 tile)
- 1.17 Fill 100x100 tiled trapezoid (161x145 tile)
- 1.16 Fill 1x1 tiled trapezoid (216x208 tile)
- 1.19 Fill 10x10 tiled trapezoid (216x208 tile)
- 1.15 Fill 100x100 tiled trapezoid (216x208 tile)
- 1.15 Circulate Unmapped window (4 kids)
-
-
-
- The following tests were noted to be more than 10% slower:
-
- 0.69 Scroll 10x10 pixels
- 0.68 Scroll 100x100 pixels
- 0.68 Copy 10x10 from window to window
- 0.68 Copy 100x100 from window to window
- 0.76 Circulate Unmapped window (75 kids)
- 0.83 Circulate Unmapped window (100 kids)
-
-
-
- For the remainder of this analysis, the baseline of comparison will be
- the Phase II deliverable with all optimizations disabled (unless
- otherwise noted). This will highlight how the optimizations in
- isolation impact performance.
-
-
- BB..22..33.. XXSSyynncc(()) BBaattcchhiinngg
-
- During the Phase I implementation, XSync() was called after every
- protocol request made by the DMX server. This provided the DMX server
- with an interactive feel, but defeated X11's protocol buffering system
- and introduced round-trip wire latency into every operation. During
- Phase II, DMX was changed so that protocol requests are no longer
- followed by calls to XSync(). Instead, the need for an XSync() is
- noted, and XSync() calls are only made every 100mS or when the DMX
- server specifically needs to make a call to guarantee interactivity.
- With this new system, X11 buffers protocol as much as possible during
- a 100mS interval, and many unnecessary XSync() calls are avoided.
-
-
- Out of more than 300 x11perf tests, 8 tests became more than 100 times
- faster, with 68 more than 50X faster, 114 more than 10X faster, and
- 181 more than 2X faster. See table below for summary.
-
-
- The following tests were noted to be more than 10% slower with XSync()
- batching on:
-
- 0.88 500x500 tiled rectangle (161x145 tile)
- 0.89 Copy 500x500 from window to window
-
-
-
- BB..22..44.. OOffffssccrreeeenn OOppttiimmiizzaattiioonn
-
- Windows span one or more of the back-end servers' screens; however,
- during Phase I development, windows were created on every back-end
- server and every rendering request was sent to every window regardless
- of whether or not that window was visible. With the offscreen
- optimization, the DMX server tracks when a window is completely off of
- a back-end server's screen and, in that case, it does not send
- rendering requests to those back-end windows. This optimization saves
- bandwidth between the front and back-end servers, and it reduces the
- number of XSync() calls. The performance tests were run on a DMX
- system with only two back-end servers. Greater performance gains will
- be had as the number of back-end servers increases.
-
-
- Out of more than 300 x11perf tests, 3 tests were at least twice as
- fast, and 146 tests were at least 10% faster. Two tests were more
- than 10% slower with the offscreen optimization:
-
- 0.88 Hide/expose window via popup (4 kids)
- 0.89 Resize unmapped window (75 kids)
-
-
-
- BB..22..55.. LLaazzyy WWiinnddooww CCrreeaattiioonn OOppttiimmiizzaattiioonn
-
- As mentioned above, during Phase I, windows were created on every
- back-end server even if they were not visible on that back-end. With
- the lazy window creation optimization, the DMX server does not create
- windows on a back-end server until they are either visible or they
- become the parents of a visible window. This optimization builds on
- the offscreen optimization (described above) and requires it to be
- enabled.
-
-
- The lazy window creation optimization works by creating the window
- data structures in the front-end server when a client creates a
- window, but delays creation of the window on the back-end server(s).
- A private window structure in the DMX server saves the relevant window
- data and tracks changes to the window's attributes and stacking order
- for later use. The only times a window is created on a back-end
- server are (1) when it is mapped and is at least partially overlapping
- the back-end server's screen (tracked by the offscreen optimization),
- or (2) when the window becomes the parent of a previously visible
- window. The first case occurs when a window is mapped or when a
- visible window is copied, moved or resized and now overlaps the back-
- end server's screen. The second case occurs when starting a window
- manager after having created windows to which the window manager needs
- to add decorations.
-
-
- When either case occurs, a window on the back-end server is created
- using the data saved in the DMX server's window private data
- structure. The stacking order is then adjusted to correctly place the
- window on the back-end and lastly the window is mapped. From this
- time forward, the window is handled exactly as if the window had been
- created at the time of the client's request.
-
-
- Note that when a window is no longer visible on a back-end server's
- screen (e.g., it is moved offscreen), the window is not destroyed;
- rather, it is kept and reused later if the window once again becomes
- visible on the back-end server's screen. Originally with this
- optimization, destroying windows was implemented but was later
- rejected because it increased bandwidth when windows were opaquely
- moved or resized, which is common in many window managers.
-
-
-
- The performance tests were run on a DMX system with only two back-end
- servers. Greater performance gains will be had as the number of back-
- end servers increases.
-
-
- This optimization improved the following x11perf tests by more than
- 10%:
-
- 1.10 500x500 rectangle outline
- 1.12 Fill 100x100 stippled trapezoid (161x145 stipple)
- 1.20 Circulate Unmapped window (50 kids)
- 1.19 Circulate Unmapped window (75 kids)
-
-
-
- BB..22..66.. SSuubbddiivviiddiinngg RReennddeerriinngg PPrriimmiittiivveess
-
- X11 imaging requests transfer significant data between the client and
- the X server. During Phase I, the DMX server would then transfer the
- image data to each back-end server. Even with the offscreen
- optimization (above), these requests still required transferring
- significant data to each back-end server that contained a visible
- portion of the window. For example, if the client uses XPutImage() to
- copy an image to a window that overlaps the entire DMX screen, then
- the entire image is copied by the DMX server to every back-end server.
-
-
- To reduce the amount of data transferred between the DMX server and
- the back-end servers when XPutImage() is called, the image data is
- subdivided and only the data that will be visible on a back-end
- server's screen is sent to that back-end server. Xinerama already
- implements a subdivision algorithm for XGetImage() and no further
- optimization was needed.
-
-
- Other rendering primitives were analyzed, but the time required to
- subdivide these primitives was a significant proportion of the time
- required to send the entire rendering request to the back-end server,
- so this optimization was rejected for the other rendering primitives.
-
-
- Again, the performance tests were run on a DMX system with only two
- back-end servers. Greater performance gains will be had as the number
- of back-end servers increases.
-
-
- This optimization improved the following x11perf tests by more than
- 10%:
-
- 1.12 Fill 100x100 stippled trapezoid (161x145 stipple)
- 1.26 PutImage 10x10 square
- 1.83 PutImage 100x100 square
- 1.91 PutImage 500x500 square
- 1.40 PutImage XY 10x10 square
- 1.48 PutImage XY 100x100 square
- 1.50 PutImage XY 500x500 square
- 1.45 Circulate Unmapped window (75 kids)
- 1.74 Circulate Unmapped window (100 kids)
-
-
-
- The following test was noted to be more than 10% slower with this
- optimization:
-
- 0.88 10-pixel fill chord partial circle
-
-
-
- BB..22..77.. SSuummmmaarryy ooff xx1111ppeerrff DDaattaa
-
- With all of the optimizations on, 53 x11perf tests are more than 100X
- faster than the unoptimized Phase II deliverable, with 69 more than
- 50X faster, 73 more than 10X faster, and 199 more than twice as fast.
- No tests were more than 10% slower than the unoptimized Phase II
- deliverable. (Compared with the Phase I deliverable, only Circulate
- Unmapped window (100 kids) was more than 10% slower than the Phase II
- deliverable. As noted above, this test seems to have wider
- variability than other x11perf tests.)
-
-
- The following table summarizes relative x11perf test changes for all
- optimizations individually and collectively. Note that some of the
- optimizations have a synergistic effect when used together.
-
-
-
- 1: XSync() batching only
- 2: Off screen optimizations only
- 3: Window optimizations only
- 4: Subdivprims only
- 5: All optimizations
-
- 1 2 3 4 5 Operation
- ------ ---- ---- ---- ------ ---------
- 2.14 1.85 1.00 1.00 4.13 Dot
- 1.67 1.80 1.00 1.00 3.31 1x1 rectangle
- 2.38 1.43 1.00 1.00 2.44 10x10 rectangle
- 1.00 1.00 0.92 0.98 1.00 100x100 rectangle
- 1.00 1.00 1.00 1.00 1.00 500x500 rectangle
- 1.83 1.85 1.05 1.06 3.54 1x1 stippled rectangle (8x8 stipple)
- 2.43 1.43 1.00 1.00 2.41 10x10 stippled rectangle (8x8 stipple)
- 0.98 1.00 1.00 1.00 1.00 100x100 stippled rectangle (8x8 stipple)
- 1.00 1.00 1.00 1.00 0.98 500x500 stippled rectangle (8x8 stipple)
- 1.75 1.75 1.00 1.00 3.40 1x1 opaque stippled rectangle (8x8 stipple)
- 2.38 1.42 1.00 1.00 2.34 10x10 opaque stippled rectangle (8x8 stipple)
- 1.00 1.00 0.97 0.97 1.00 100x100 opaque stippled rectangle (8x8 stipple)
- 1.00 1.00 1.00 1.00 0.99 500x500 opaque stippled rectangle (8x8 stipple)
- 1.82 1.82 1.04 1.04 3.56 1x1 tiled rectangle (4x4 tile)
- 2.33 1.42 1.00 1.00 2.37 10x10 tiled rectangle (4x4 tile)
- 1.00 0.92 1.00 1.00 1.00 100x100 tiled rectangle (4x4 tile)
- 1.00 1.00 1.00 1.00 1.00 500x500 tiled rectangle (4x4 tile)
- 1.94 1.62 1.00 1.00 3.66 1x1 stippled rectangle (17x15 stipple)
- 1.74 1.28 1.00 1.00 1.73 10x10 stippled rectangle (17x15 stipple)
- 1.00 1.00 1.00 0.89 0.98 100x100 stippled rectangle (17x15 stipple)
- 1.00 1.00 1.00 1.00 0.98 500x500 stippled rectangle (17x15 stipple)
- 1.94 1.62 1.00 1.00 3.67 1x1 opaque stippled rectangle (17x15 stipple)
- 1.69 1.26 1.00 1.00 1.66 10x10 opaque stippled rectangle (17x15 stipple)
- 1.00 0.95 1.00 1.00 1.00 100x100 opaque stippled rectangle (17x15 stipple)
- 1.00 1.00 1.00 1.00 0.97 500x500 opaque stippled rectangle (17x15 stipple)
- 1.93 1.61 0.99 0.99 3.69 1x1 tiled rectangle (17x15 tile)
- 1.73 1.27 1.00 1.00 1.72 10x10 tiled rectangle (17x15 tile)
- 1.00 1.00 1.00 1.00 0.98 100x100 tiled rectangle (17x15 tile)
- 1.00 1.00 0.97 0.97 1.00 500x500 tiled rectangle (17x15 tile)
- 1.95 1.63 1.00 1.00 3.83 1x1 stippled rectangle (161x145 stipple)
- 1.80 1.30 1.00 1.00 1.83 10x10 stippled rectangle (161x145 stipple)
- 0.97 1.00 1.00 1.00 1.01 100x100 stippled rectangle (161x145 stipple)
- 1.00 1.00 1.00 1.00 0.98 500x500 stippled rectangle (161x145 stipple)
- 1.95 1.63 1.00 1.00 3.56 1x1 opaque stippled rectangle (161x145 stipple)
- 1.65 1.25 1.00 1.00 1.68 10x10 opaque stippled rectangle (161x145 stipple)
- 1.00 1.00 1.00 1.00 1.01 100x100 opaque stippled rectangle (161x145...
- 1.00 1.00 1.00 1.00 0.97 500x500 opaque stippled rectangle (161x145...
- 1.95 1.63 0.98 0.99 3.80 1x1 tiled rectangle (161x145 tile)
- 1.67 1.26 1.00 1.00 1.67 10x10 tiled rectangle (161x145 tile)
- 1.13 1.14 1.14 1.14 1.14 100x100 tiled rectangle (161x145 tile)
- 0.88 1.00 1.00 1.00 0.99 500x500 tiled rectangle (161x145 tile)
- 1.93 1.63 1.00 1.00 3.53 1x1 tiled rectangle (216x208 tile)
- 1.69 1.26 1.00 1.00 1.66 10x10 tiled rectangle (216x208 tile)
- 1.00 1.00 1.00 1.00 1.00 100x100 tiled rectangle (216x208 tile)
- 1.00 1.00 1.00 1.00 1.00 500x500 tiled rectangle (216x208 tile)
- 1.82 1.70 1.00 1.00 3.38 1-pixel line segment
- 2.07 1.56 0.90 1.00 3.31 10-pixel line segment
- 1.29 1.10 1.00 1.00 1.27 100-pixel line segment
- 1.05 1.06 1.03 1.03 1.09 500-pixel line segment
- 1.30 1.13 1.00 1.00 1.29 100-pixel line segment (1 kid)
- 1.32 1.15 1.00 1.00 1.32 100-pixel line segment (2 kids)
- 1.33 1.16 1.00 1.00 1.33 100-pixel line segment (3 kids)
- 1.92 1.64 1.00 1.00 3.73 10-pixel dashed segment
- 1.34 1.16 1.00 1.00 1.34 100-pixel dashed segment
- 1.24 1.11 0.99 0.97 1.23 100-pixel double-dashed segment
- 1.72 1.77 1.00 1.00 3.25 10-pixel horizontal line segment
- 1.83 1.66 1.01 1.00 3.54 100-pixel horizontal line segment
- 1.86 1.30 1.00 1.00 1.84 500-pixel horizontal line segment
- 2.11 1.52 1.00 0.99 3.02 10-pixel vertical line segment
- 1.21 1.10 1.00 1.00 1.20 100-pixel vertical line segment
- 1.03 1.03 1.00 1.00 1.02 500-pixel vertical line segment
- 4.42 1.68 1.00 1.01 4.64 10x1 wide horizontal line segment
- 1.83 1.31 1.00 1.00 1.83 100x10 wide horizontal line segment
- 1.07 1.00 0.96 1.00 1.07 500x50 wide horizontal line segment
- 4.10 1.67 1.00 1.00 4.62 10x1 wide vertical line segment
- 1.50 1.24 1.06 1.06 1.48 100x10 wide vertical line segment
- 1.06 1.03 1.00 1.00 1.05 500x50 wide vertical line segment
- 2.54 1.61 1.00 1.00 3.61 1-pixel line
- 2.71 1.48 1.00 1.00 2.67 10-pixel line
- 1.19 1.09 1.00 1.00 1.19 100-pixel line
- 1.04 1.02 1.00 1.00 1.03 500-pixel line
- 2.68 1.51 0.98 1.00 3.17 10-pixel dashed line
- 1.23 1.11 0.99 0.99 1.23 100-pixel dashed line
- 1.15 1.08 1.00 1.00 1.15 100-pixel double-dashed line
- 2.27 1.39 1.00 1.00 2.23 10x1 wide line
- 1.20 1.09 1.00 1.00 1.20 100x10 wide line
- 1.04 1.02 1.00 1.00 1.04 500x50 wide line
- 1.52 1.45 1.00 1.00 1.52 100x10 wide dashed line
- 1.54 1.47 1.00 1.00 1.54 100x10 wide double-dashed line
- 1.97 1.30 0.96 0.95 1.95 10x10 rectangle outline
- 1.44 1.27 1.00 1.00 1.43 100x100 rectangle outline
- 3.22 2.16 1.10 1.09 3.61 500x500 rectangle outline
- 1.95 1.34 1.00 1.00 1.90 10x10 wide rectangle outline
- 1.14 1.14 1.00 1.00 1.13 100x100 wide rectangle outline
- 1.00 1.00 1.00 1.00 1.00 500x500 wide rectangle outline
- 1.57 1.72 1.00 1.00 3.03 1-pixel circle
- 1.96 1.35 1.00 1.00 1.92 10-pixel circle
- 1.21 1.07 0.86 0.97 1.20 100-pixel circle
- 1.08 1.04 1.00 1.00 1.08 500-pixel circle
- 1.39 1.19 1.03 1.03 1.38 100-pixel dashed circle
- 1.21 1.11 1.00 1.00 1.23 100-pixel double-dashed circle
- 1.59 1.28 1.00 1.00 1.58 10-pixel wide circle
- 1.22 1.12 0.99 1.00 1.22 100-pixel wide circle
- 1.06 1.04 1.00 1.00 1.05 500-pixel wide circle
- 1.87 1.84 1.00 1.00 1.85 100-pixel wide dashed circle
- 1.90 1.93 1.01 1.01 1.90 100-pixel wide double-dashed circle
- 2.13 1.43 1.00 1.00 2.32 10-pixel partial circle
- 1.42 1.18 1.00 1.00 1.42 100-pixel partial circle
- 1.92 1.85 1.01 1.01 1.89 10-pixel wide partial circle
- 1.73 1.67 1.00 1.00 1.73 100-pixel wide partial circle
- 1.36 1.95 1.00 1.00 2.64 1-pixel solid circle
- 2.02 1.37 1.00 1.00 2.03 10-pixel solid circle
- 1.19 1.09 1.00 1.00 1.19 100-pixel solid circle
- 1.02 0.99 1.00 1.00 1.01 500-pixel solid circle
- 1.74 1.28 1.00 0.88 1.73 10-pixel fill chord partial circle
- 1.31 1.13 1.00 1.00 1.31 100-pixel fill chord partial circle
- 1.67 1.31 1.03 1.03 1.72 10-pixel fill slice partial circle
- 1.30 1.13 1.00 1.00 1.28 100-pixel fill slice partial circle
- 2.45 1.49 1.01 1.00 2.71 10-pixel ellipse
- 1.22 1.10 1.00 1.00 1.22 100-pixel ellipse
- 1.09 1.04 1.00 1.00 1.09 500-pixel ellipse
- 1.90 1.28 1.00 1.00 1.89 100-pixel dashed ellipse
- 1.62 1.24 0.96 0.97 1.61 100-pixel double-dashed ellipse
- 2.43 1.50 1.00 1.00 2.42 10-pixel wide ellipse
- 1.61 1.28 1.03 1.03 1.60 100-pixel wide ellipse
- 1.08 1.05 1.00 1.00 1.08 500-pixel wide ellipse
- 1.93 1.88 1.00 1.00 1.88 100-pixel wide dashed ellipse
- 1.94 1.89 1.01 1.00 1.94 100-pixel wide double-dashed ellipse
- 2.31 1.48 1.00 1.00 2.67 10-pixel partial ellipse
- 1.38 1.17 1.00 1.00 1.38 100-pixel partial ellipse
- 2.00 1.85 0.98 0.97 1.98 10-pixel wide partial ellipse
- 1.89 1.86 1.00 1.00 1.89 100-pixel wide partial ellipse
- 3.49 1.60 1.00 1.00 3.65 10-pixel filled ellipse
- 1.67 1.26 1.00 1.00 1.67 100-pixel filled ellipse
- 1.06 1.04 1.00 1.00 1.06 500-pixel filled ellipse
- 2.38 1.43 1.01 1.00 2.32 10-pixel fill chord partial ellipse
- 2.06 1.30 1.00 1.00 2.05 100-pixel fill chord partial ellipse
- 2.27 1.41 1.00 1.00 2.27 10-pixel fill slice partial ellipse
- 1.98 1.33 1.00 0.97 1.97 100-pixel fill slice partial ellipse
- 57.46 1.99 1.01 1.00 114.92 Fill 1x1 equivalent triangle
- 56.94 1.98 1.01 1.00 73.89 Fill 10x10 equivalent triangle
- 6.07 1.75 1.00 1.00 6.07 Fill 100x100 equivalent triangle
- 51.12 1.98 1.00 1.00 102.81 Fill 1x1 trapezoid
- 51.42 1.82 1.01 1.00 94.89 Fill 10x10 trapezoid
- 6.47 1.80 1.00 1.00 6.44 Fill 100x100 trapezoid
- 1.56 1.28 1.00 0.99 1.56 Fill 300x300 trapezoid
- 51.27 1.97 0.96 0.97 102.54 Fill 1x1 stippled trapezoid (8x8 stipple)
- 51.73 2.00 1.02 1.02 67.92 Fill 10x10 stippled trapezoid (8x8 stipple)
- 5.36 1.72 1.00 1.00 5.36 Fill 100x100 stippled trapezoid (8x8 stipple)
- 1.54 1.26 1.00 1.00 1.59 Fill 300x300 stippled trapezoid (8x8 stipple)
- 51.41 1.94 1.01 1.00 102.82 Fill 1x1 opaque stippled trapezoid (8x8 stipple)
- 50.71 1.95 0.99 1.00 65.44 Fill 10x10 opaque stippled trapezoid (8x8...
- 5.33 1.73 1.00 1.00 5.36 Fill 100x100 opaque stippled trapezoid (8x8...
- 1.58 1.25 1.00 1.00 1.58 Fill 300x300 opaque stippled trapezoid (8x8...
- 51.56 1.96 0.99 0.90 103.68 Fill 1x1 tiled trapezoid (4x4 tile)
- 51.59 1.99 1.01 1.01 62.25 Fill 10x10 tiled trapezoid (4x4 tile)
- 5.38 1.72 1.00 1.00 5.38 Fill 100x100 tiled trapezoid (4x4 tile)
- 1.54 1.25 1.00 0.99 1.58 Fill 300x300 tiled trapezoid (4x4 tile)
- 51.70 1.98 1.01 1.01 103.98 Fill 1x1 stippled trapezoid (17x15 stipple)
- 44.86 1.97 1.00 1.00 44.86 Fill 10x10 stippled trapezoid (17x15 stipple)
- 2.74 1.56 1.00 1.00 2.73 Fill 100x100 stippled trapezoid (17x15 stipple)
- 1.29 1.14 1.00 1.00 1.27 Fill 300x300 stippled trapezoid (17x15 stipple)
- 51.41 1.96 0.96 0.95 103.39 Fill 1x1 opaque stippled trapezoid (17x15...
- 45.14 1.96 1.01 1.00 45.14 Fill 10x10 opaque stippled trapezoid (17x15...
- 2.68 1.56 1.00 1.00 2.68 Fill 100x100 opaque stippled trapezoid (17x15...
- 1.26 1.10 1.00 1.00 1.28 Fill 300x300 opaque stippled trapezoid (17x15...
- 51.13 1.97 1.00 0.99 103.39 Fill 1x1 tiled trapezoid (17x15 tile)
- 47.58 1.96 1.00 1.00 47.86 Fill 10x10 tiled trapezoid (17x15 tile)
- 2.74 1.56 1.00 1.00 2.74 Fill 100x100 tiled trapezoid (17x15 tile)
- 1.29 1.14 1.00 1.00 1.28 Fill 300x300 tiled trapezoid (17x15 tile)
- 51.13 1.97 0.99 0.97 103.39 Fill 1x1 stippled trapezoid (161x145 stipple)
- 45.14 1.97 1.00 1.00 44.29 Fill 10x10 stippled trapezoid (161x145 stipple)
- 3.02 1.77 1.12 1.12 3.38 Fill 100x100 stippled trapezoid (161x145 stipple)
- 1.31 1.13 1.00 1.00 1.30 Fill 300x300 stippled trapezoid (161x145 stipple)
- 51.27 1.97 1.00 1.00 103.10 Fill 1x1 opaque stippled trapezoid (161x145...
- 45.01 1.97 1.00 1.00 45.01 Fill 10x10 opaque stippled trapezoid (161x145...
- 2.67 1.56 1.00 1.00 2.69 Fill 100x100 opaque stippled trapezoid (161x145..
- 1.29 1.13 1.00 1.01 1.27 Fill 300x300 opaque stippled trapezoid (161x145..
- 51.41 1.96 1.00 0.99 103.39 Fill 1x1 tiled trapezoid (161x145 tile)
- 45.01 1.96 0.98 1.00 45.01 Fill 10x10 tiled trapezoid (161x145 tile)
- 2.62 1.36 1.00 1.00 2.69 Fill 100x100 tiled trapezoid (161x145 tile)
- 1.27 1.13 1.00 1.00 1.22 Fill 300x300 tiled trapezoid (161x145 tile)
- 51.13 1.98 1.00 1.00 103.39 Fill 1x1 tiled trapezoid (216x208 tile)
- 45.14 1.97 1.01 0.99 45.14 Fill 10x10 tiled trapezoid (216x208 tile)
- 2.62 1.55 1.00 1.00 2.71 Fill 100x100 tiled trapezoid (216x208 tile)
- 1.28 1.13 1.00 1.00 1.20 Fill 300x300 tiled trapezoid (216x208 tile)
- 50.71 1.95 1.00 1.00 54.70 Fill 10x10 equivalent complex polygon
- 5.51 1.71 0.96 0.98 5.47 Fill 100x100 equivalent complex polygons
- 8.39 1.97 1.00 1.00 16.75 Fill 10x10 64-gon (Convex)
- 8.38 1.83 1.00 1.00 8.43 Fill 100x100 64-gon (Convex)
- 8.50 1.96 1.00 1.00 16.64 Fill 10x10 64-gon (Complex)
- 8.26 1.83 1.00 1.00 8.35 Fill 100x100 64-gon (Complex)
- 14.09 1.87 1.00 1.00 14.05 Char in 80-char line (6x13)
- 11.91 1.87 1.00 1.00 11.95 Char in 70-char line (8x13)
- 11.16 1.85 1.01 1.00 11.10 Char in 60-char line (9x15)
- 10.09 1.78 1.00 1.00 10.09 Char16 in 40-char line (k14)
- 6.15 1.75 1.00 1.00 6.31 Char16 in 23-char line (k24)
- 11.92 1.90 1.03 1.03 11.88 Char in 80-char line (TR 10)
- 8.18 1.78 1.00 0.99 8.17 Char in 30-char line (TR 24)
- 42.83 1.44 1.01 1.00 42.11 Char in 20/40/20 line (6x13, TR 10)
- 27.45 1.43 1.01 1.01 27.45 Char16 in 7/14/7 line (k14, k24)
- 12.13 1.85 1.00 1.00 12.05 Char in 80-char image line (6x13)
- 10.00 1.84 1.00 1.00 10.00 Char in 70-char image line (8x13)
- 9.18 1.83 1.00 1.00 9.12 Char in 60-char image line (9x15)
- 9.66 1.82 0.98 0.95 9.66 Char16 in 40-char image line (k14)
- 5.82 1.72 1.00 1.00 5.99 Char16 in 23-char image line (k24)
- 8.70 1.80 1.00 1.00 8.65 Char in 80-char image line (TR 10)
- 4.67 1.66 1.00 1.00 4.67 Char in 30-char image line (TR 24)
- 84.43 1.47 1.00 1.00 124.18 Scroll 10x10 pixels
- 3.73 1.50 1.00 0.98 3.73 Scroll 100x100 pixels
- 1.00 1.00 1.00 1.00 1.00 Scroll 500x500 pixels
- 84.43 1.51 1.00 1.00 134.02 Copy 10x10 from window to window
- 3.62 1.51 0.98 0.98 3.62 Copy 100x100 from window to window
- 0.89 1.00 1.00 1.00 1.00 Copy 500x500 from window to window
- 57.06 1.99 1.00 1.00 88.64 Copy 10x10 from pixmap to window
- 2.49 2.00 1.00 1.00 2.48 Copy 100x100 from pixmap to window
- 1.00 0.91 1.00 1.00 0.98 Copy 500x500 from pixmap to window
- 2.04 1.01 1.00 1.00 2.03 Copy 10x10 from window to pixmap
- 1.05 1.00 1.00 1.00 1.05 Copy 100x100 from window to pixmap
- 1.00 1.00 0.93 1.00 1.04 Copy 500x500 from window to pixmap
- 58.52 1.03 1.03 1.02 57.95 Copy 10x10 from pixmap to pixmap
- 2.40 1.00 1.00 1.00 2.45 Copy 100x100 from pixmap to pixmap
- 1.00 1.00 1.00 1.00 1.00 Copy 500x500 from pixmap to pixmap
- 51.57 1.92 1.00 1.00 85.75 Copy 10x10 1-bit deep plane
- 6.37 1.75 1.01 1.01 6.37 Copy 100x100 1-bit deep plane
- 1.26 1.11 1.00 1.00 1.24 Copy 500x500 1-bit deep plane
- 4.23 1.63 0.98 0.97 4.38 Copy 10x10 n-bit deep plane
- 1.04 1.02 1.00 1.00 1.04 Copy 100x100 n-bit deep plane
- 1.00 1.00 1.00 1.00 1.00 Copy 500x500 n-bit deep plane
- 6.45 1.98 1.00 1.26 12.80 PutImage 10x10 square
- 1.10 1.87 1.00 1.83 2.11 PutImage 100x100 square
- 1.02 1.93 1.00 1.91 1.91 PutImage 500x500 square
- 4.17 1.78 1.00 1.40 7.18 PutImage XY 10x10 square
- 1.27 1.49 0.97 1.48 2.10 PutImage XY 100x100 square
- 1.00 1.50 1.00 1.50 1.52 PutImage XY 500x500 square
- 1.07 1.01 1.00 1.00 1.06 GetImage 10x10 square
- 1.01 1.00 1.00 1.00 1.01 GetImage 100x100 square
- 1.00 1.00 1.00 1.00 1.00 GetImage 500x500 square
- 1.56 1.00 0.99 0.97 1.56 GetImage XY 10x10 square
- 1.02 1.00 1.00 1.00 1.02 GetImage XY 100x100 square
- 1.00 1.00 1.00 1.00 1.00 GetImage XY 500x500 square
- 1.00 1.00 1.01 0.98 0.95 X protocol NoOperation
- 1.02 1.03 1.04 1.03 1.00 QueryPointer
- 1.03 1.02 1.04 1.03 1.00 GetProperty
- 100.41 1.51 1.00 1.00 198.76 Change graphics context
- 45.81 1.00 0.99 0.97 57.10 Create and map subwindows (4 kids)
- 78.45 1.01 1.02 1.02 63.07 Create and map subwindows (16 kids)
- 73.91 1.01 1.00 1.00 56.37 Create and map subwindows (25 kids)
- 73.22 1.00 1.00 1.00 49.07 Create and map subwindows (50 kids)
- 72.36 1.01 0.99 1.00 32.14 Create and map subwindows (75 kids)
- 70.34 1.00 1.00 1.00 30.12 Create and map subwindows (100 kids)
- 55.00 1.00 1.00 0.99 23.75 Create and map subwindows (200 kids)
- 55.30 1.01 1.00 1.00 141.03 Create unmapped window (4 kids)
- 55.38 1.01 1.01 1.00 163.25 Create unmapped window (16 kids)
- 54.75 0.96 1.00 0.99 166.95 Create unmapped window (25 kids)
- 54.83 1.00 1.00 0.99 178.81 Create unmapped window (50 kids)
- 55.38 1.01 1.01 1.00 181.20 Create unmapped window (75 kids)
- 55.38 1.01 1.01 1.00 181.20 Create unmapped window (100 kids)
- 54.87 1.01 1.01 1.00 182.05 Create unmapped window (200 kids)
- 28.13 1.00 1.00 1.00 30.75 Map window via parent (4 kids)
- 36.14 1.01 1.01 1.01 32.58 Map window via parent (16 kids)
- 26.13 1.00 0.98 0.95 29.85 Map window via parent (25 kids)
- 40.07 1.00 1.01 1.00 27.57 Map window via parent (50 kids)
- 23.26 0.99 1.00 1.00 18.23 Map window via parent (75 kids)
- 22.91 0.99 1.00 0.99 16.52 Map window via parent (100 kids)
- 27.79 1.00 1.00 0.99 12.50 Map window via parent (200 kids)
- 22.35 1.00 1.00 1.00 56.19 Unmap window via parent (4 kids)
- 9.57 1.00 0.99 1.00 89.78 Unmap window via parent (16 kids)
- 80.77 1.01 1.00 1.00 103.85 Unmap window via parent (25 kids)
- 96.34 1.00 1.00 1.00 116.06 Unmap window via parent (50 kids)
- 99.72 1.00 1.00 1.00 124.93 Unmap window via parent (75 kids)
- 112.36 1.00 1.00 1.00 125.27 Unmap window via parent (100 kids)
- 105.41 1.00 1.00 0.99 120.00 Unmap window via parent (200 kids)
- 51.29 1.03 1.02 1.02 74.19 Destroy window via parent (4 kids)
- 86.75 0.99 0.99 0.99 116.87 Destroy window via parent (16 kids)
- 106.43 1.01 1.01 1.01 127.49 Destroy window via parent (25 kids)
- 120.34 1.01 1.01 1.00 140.11 Destroy window via parent (50 kids)
- 126.67 1.00 0.99 0.99 145.00 Destroy window via parent (75 kids)
- 126.11 1.01 1.01 1.00 140.56 Destroy window via parent (100 kids)
- 128.57 1.01 1.00 1.00 137.91 Destroy window via parent (200 kids)
- 16.04 0.88 1.00 1.00 20.36 Hide/expose window via popup (4 kids)
- 19.04 1.01 1.00 1.00 23.48 Hide/expose window via popup (16 kids)
- 19.22 1.00 1.00 1.00 20.44 Hide/expose window via popup (25 kids)
- 17.41 1.00 0.91 0.97 17.68 Hide/expose window via popup (50 kids)
- 17.29 1.01 1.00 1.01 17.07 Hide/expose window via popup (75 kids)
- 16.74 1.00 1.00 1.00 16.17 Hide/expose window via popup (100 kids)
- 10.30 1.00 1.00 1.00 10.51 Hide/expose window via popup (200 kids)
- 16.48 1.01 1.00 1.00 26.05 Move window (4 kids)
- 17.01 0.95 1.00 1.00 23.97 Move window (16 kids)
- 16.95 1.00 1.00 1.00 22.90 Move window (25 kids)
- 16.05 1.01 1.00 1.00 21.32 Move window (50 kids)
- 15.58 1.00 0.98 0.98 19.44 Move window (75 kids)
- 14.98 1.02 1.03 1.03 18.17 Move window (100 kids)
- 10.90 1.01 1.01 1.00 12.68 Move window (200 kids)
- 49.42 1.00 1.00 1.00 198.27 Moved unmapped window (4 kids)
- 50.72 0.97 1.00 1.00 193.66 Moved unmapped window (16 kids)
- 50.87 1.00 0.99 1.00 195.09 Moved unmapped window (25 kids)
- 50.72 1.00 1.00 1.00 189.34 Moved unmapped window (50 kids)
- 50.87 1.00 1.00 1.00 191.33 Moved unmapped window (75 kids)
- 50.87 1.00 1.00 0.90 186.71 Moved unmapped window (100 kids)
- 50.87 1.00 1.00 1.00 179.19 Moved unmapped window (200 kids)
- 41.04 1.00 1.00 1.00 56.61 Move window via parent (4 kids)
- 69.81 1.00 1.00 1.00 130.82 Move window via parent (16 kids)
- 95.81 1.00 1.00 1.00 141.92 Move window via parent (25 kids)
- 95.98 1.00 1.00 1.00 149.43 Move window via parent (50 kids)
- 96.59 1.01 1.01 1.00 153.98 Move window via parent (75 kids)
- 97.19 1.00 1.00 1.00 157.30 Move window via parent (100 kids)
- 96.67 1.00 0.99 0.96 159.44 Move window via parent (200 kids)
- 17.75 1.01 1.00 1.00 27.61 Resize window (4 kids)
- 17.94 1.00 1.00 0.99 25.42 Resize window (16 kids)
- 17.92 1.01 1.00 1.00 24.47 Resize window (25 kids)
- 17.24 0.97 1.00 1.00 24.14 Resize window (50 kids)
- 16.81 1.00 1.00 0.99 22.75 Resize window (75 kids)
- 16.08 1.00 1.00 1.00 21.20 Resize window (100 kids)
- 12.92 1.00 0.99 1.00 16.26 Resize window (200 kids)
- 52.94 1.01 1.00 1.00 327.12 Resize unmapped window (4 kids)
- 53.60 1.01 1.01 1.01 333.71 Resize unmapped window (16 kids)
- 52.99 1.00 1.00 1.00 337.29 Resize unmapped window (25 kids)
- 51.98 1.00 1.00 1.00 329.38 Resize unmapped window (50 kids)
- 53.05 0.89 1.00 1.00 322.60 Resize unmapped window (75 kids)
- 53.05 1.00 1.00 1.00 318.08 Resize unmapped window (100 kids)
- 53.11 1.00 1.00 0.99 306.21 Resize unmapped window (200 kids)
- 16.76 1.00 0.96 1.00 19.46 Circulate window (4 kids)
- 17.24 1.00 1.00 0.97 16.24 Circulate window (16 kids)
- 16.30 1.03 1.03 1.03 15.85 Circulate window (25 kids)
- 13.45 1.00 1.00 1.00 14.90 Circulate window (50 kids)
- 12.91 1.00 1.00 1.00 13.06 Circulate window (75 kids)
- 11.30 0.98 1.00 1.00 11.03 Circulate window (100 kids)
- 7.58 1.01 1.01 0.99 7.47 Circulate window (200 kids)
- 1.01 1.01 0.98 1.00 0.95 Circulate Unmapped window (4 kids)
- 1.07 1.07 1.01 1.07 1.02 Circulate Unmapped window (16 kids)
- 1.04 1.09 1.06 1.05 0.97 Circulate Unmapped window (25 kids)
- 1.04 1.23 1.20 1.18 1.05 Circulate Unmapped window (50 kids)
- 1.18 1.53 1.19 1.45 1.24 Circulate Unmapped window (75 kids)
- 1.08 1.02 1.01 1.74 1.01 Circulate Unmapped window (100 kids)
- 1.01 1.12 0.98 0.91 0.97 Circulate Unmapped window (200 kids)
-
-
-
- BB..22..88.. PPrrooffiilliinngg wwiitthh OOPPrrooffiillee
-
- OProfile (available from http://oprofile.sourceforge.net/) is a
- system-wide profiler for Linux systems that uses processor-level
- counters to collect sampling data. OProfile can provide information
- that is similar to that provided by gprof, but without the necessity
- of recompiling the program with special instrumentation (i.e.,
- OProfile can collect statistical profiling information about optimized
- programs). A test harness was developed to collect OProfile data for
- each x11perf test individually.
-
-
- Test runs were performed using the RETIRED_INSNS counter on the AMD
- Athlon and the CPU_CLK_HALTED counter on the Intel Pentium III (with a
- test configuration different from the one described above). We have
- examined OProfile output and have compared it with gprof output. This
- investigation has not produced results that yield performance
- increases in x11perf numbers.
-
-
-
- BB..22..99.. XX TTeesstt SSuuiittee
-
- The X Test Suite was run on the fully optimized DMX server using the
- configuration described above. The following failures were noted:
-
- XListPixmapFormats: Test 1 [1]
- XChangeWindowAttributes: Test 32 [1]
- XCreateWindow: Test 30 [1]
- XFreeColors: Test 4 [3]
- XCopyArea: Test 13, 17, 21, 25, 30 [2]
- XCopyPlane: Test 11, 15, 27, 31 [2]
- XSetFontPath: Test 4 [1]
- XChangeKeyboardControl: Test 9, 10 [1]
-
- [1] Previously documented errors expected from the Xinerama
- implementation (see Phase I discussion).
- [2] Newly noted errors that have been verified as expected
- behavior of the Xinerama implementation.
- [3] Newly noted error that has been verified as a Xinerama
- implementation bug.
-
-
-
- BB..33.. PPhhaassee IIIIII
-
- During the third phase of development, support was provided for the
- following extensions: SHAPE, RENDER, XKEYBOARD, XInput.
-
-
- BB..33..11.. SSHHAAPPEE
-
- The SHAPE extension is supported. Test applications (e.g., xeyes and
- oclock) and window managers that make use of the SHAPE extension will
- work as expected.
-
-
- BB..33..22.. RREENNDDEERR
-
- The RENDER extension is supported. The version included in the DMX
- CVS tree is version 0.2, and this version is fully supported by Xdmx.
- Applications using only version 0.2 functions will work correctly;
- however, some apps that make use of functions from later versions do
- not properly check the extension's major/minor version numbers. These
- apps will fail with a Bad Implementation error when using post-version
- 0.2 functions. This is expected behavior. When the DMX CVS tree is
- updated to include newer versions of RENDER, support for these newer
- functions will be added to the DMX X server.
-
-
- BB..33..33.. XXKKEEYYBBOOAARRDD
-
- The XKEYBOARD extension is supported. If present on the back-end X
- servers, the XKEYBOARD extension will be used to obtain information
- about the type of the keyboard for initialization. Otherwise, the
- keyboard will be initialized using defaults. Note that this departs
- from older behavior: when Xdmx is compiled without XKEYBOARD support,
- the map from the back-end X server will be preserved. With XKEYBOARD
- support, the map is not preserved because better information and
- control of the keyboard is available.
-
-
- BB..33..44.. XXIInnppuutt
-
- The XInput extension is supported. Any device can be used as a core
- device and be used as an XInput extension device, with the exception
- of core devices on the back-end servers. This limitation is present
- because cursor handling on the back-end requires that the back-end
- cursor sometimes track the Xdmx core cursor -- behavior that is
- incompatible with using the back-end pointer as a non-core device.
-
-
- Currently, back-end extension devices are not available as Xdmx
- extension devices, but this limitation should be removed in the
- future.
-
-
- To demonstrate the XInput extension, and to provide more examples for
- low-level input device driver writers, USB device drivers have been
- written for mice (usb-mou), keyboards (usb-kbd), and non-mouse/non-
- keyboard USB devices (usb-oth). Please see the man page for
- information on Linux kernel drivers that are required for using these
- Xdmx drivers.
-
-
- BB..33..55.. DDPPMMSS
-
- The DPMS extension is exported but does not do anything at this time.
-
-
- BB..33..66.. OOtthheerr EExxtteennssiioonnss
-
- The LBX, SECURITY, XC-APPGROUP, and XFree86-Bigfont extensions do not
- require any special Xdmx support and have been exported.
-
-
- The BIG-REQUESTS, DEC-XTRAP, DOUBLE-BUFFER, Extended-Visual-
- Information, FontCache, GLX, MIT-SCREEN-SAVER, MIT-SHM, MIT-SUNDRY-
- NONSTANDARD, RECORD, SECURITY, SGI-GLX, SYNC, TOG-CUP, X-Resource, XC-
- MISC, XFree86-DGA, XFree86-DRI, XFree86-Misc,
- XFree86-VidModeExtension, and XVideo extensions are _n_o_t supported at
- this time, but will be evaluated for inclusion in future DMX releases.
- SSeeee bbeellooww ffoorr aaddddiittiioonnaall wwoorrkk oonn eexxtteennssiioonnss aafftteerr PPhhaassee IIIIII..
-
-
- BB..44.. PPhhaassee IIVV
-
- BB..44..11.. MMoovviinngg ttoo XXFFrreeee8866 44..33..00
-
- For Phase IV, the recent release of XFree86 4.3.0 (27 February 2003)
- was merged onto the dmx.sourceforge.net CVS trunk and all work is
- proceeding using this tree.
-
-
- BB..44..22.. EExxtteennssiioonnss
-
- BB..44..22..11.. XXCC--MMIISSCC ((ssuuppppoorrtteedd))
-
- XC-MISC is used internally by the X library to recycle XIDs from the X
- server. This is important for long-running X server sessions. Xdmx
- supports this extension. The X Test Suite passed and failed the exact
- same tests before and after this extension was enabled.
-
-
- BB..44..22..22.. EExxtteennddeedd--VViissuuaall--IInnffoorrmmaattiioonn ((ssuuppppoorrtteedd))
-
- The Extended-Visual-Information extension provides a method for an X
- client to obtain detailed visual information. Xdmx supports this
- extension. It was tested using the hw/dmx/examples/evi example
- program. NNoottee tthhaatt tthhiiss eexxtteennssiioonn iiss nnoott XXiinneerraammaa--aawwaarree -- it will
- return visual information for each screen even though Xinerama is
- causing the X server to export a single logical screen.
-
-
- BB..44..22..33.. RREESS ((ssuuppppoorrtteedd))
-
- The X-Resource extension provides a mechanism for a client to obtain
- detailed information about the resources used by other clients. This
- extension was tested with the hw/dmx/examples/res program. The X Test
- Suite passed and failed the exact same tests before and after this
- extension was enabled.
-
-
- BB..44..22..44.. BBIIGG--RREEQQUUEESSTTSS ((ssuuppppoorrtteedd))
-
- This extension enables the X11 protocol to handle requests longer than
- 262140 bytes. The X Test Suite passed and failed the exact same tests
- before and after this extension was enabled.
-
-
- BB..44..22..55.. XXSSYYNNCC ((ssuuppppoorrtteedd))
-
- This extension provides facilities for two different X clients to
- synchronize their requests. This extension was minimally tested with
- xdpyinfo and the X Test Suite passed and failed the exact same tests
- before and after this extension was enabled.
-
-
- BB..44..22..66.. XXTTEESSTT,, RREECCOORRDD,, DDEECC--XXTTRRAAPP ((ssuuppppoorrtteedd)) aanndd XXTTeessttEExxtteennssiioonn11
- ((nnoott ssuuppppoorrtteedd))
-
- The XTEST and RECORD extension were developed by the X Consortium for
- use in the X Test Suite and are supported as a standard in the X11R6
- tree. They are also supported in Xdmx. When X Test Suite tests that
- make use of the XTEST extension are run, Xdmx passes and fails exactly
- the same tests as does a standard XFree86 X server. When the rcrdtest
- test (a part of the X Test Suite that verifies the RECORD extension)
- is run, Xdmx passes and fails exactly the same tests as does a
- standard XFree86 X server.
-
-
- There are two older XTEST-like extensions: DEC-XTRAP and
- XTestExtension1. The XTestExtension1 extension was developed for use
- by the X Testing Consortium for use with a test suite that eventually
- became (part of?) the X Test Suite. Unlike XTEST, which only allows
- events to be sent to the server, the XTestExtension1 extension also
- allowed events to be recorded (similar to the RECORD extension). The
- second is the DEC-XTRAP extension that was developed by the Digital
- Equipment Corporation.
-
-
- The DEC-XTRAP extension is available from Xdmx and has been tested
- with the xtrap* tools which are distributed as standard X11R6 clients.
-
-
- The XTestExtension1 is _n_o_t supported because it does not appear to be
- used by any modern X clients (the few that support it also support
- XTEST) and because there are no good methods available for testing
- that it functions correctly (unlike XTEST and DEC-XTRAP, the code for
- XTestExtension1 is not part of the standard X server source tree, so
- additional testing is important).
-
-
- Most of these extensions are documented in the X11R6 source tree.
- Further, several original papers exist that this author was unable to
- locate -- for completeness and historical interest, citations are
- provide:
-
- XXRREECCOORRDD
- Martha Zimet. Extending X For Recording. 8th Annual X Technical
- Conference Boston, MA January 24-26, 1994.
-
- DDEECC--XXTTRRAAPP
- Dick Annicchiarico, Robert Chesler, Alan Jamison. XTrap
- Architecture. Digital Equipment Corporation, July 1991.
-
- XXTTeessttEExxtteennssiioonn11
- Larry Woestman. X11 Input Synthesis Extension Proposal. Hewlett
- Packard, November 1991.
-
-
- BB..44..22..77.. MMIITT--MMIISSCC ((nnoott ssuuppppoorrtteedd))
-
- The MIT-MISC extension is used to control a bug-compatibility flag
- that provides compatibility with xterm programs from X11R1 and X11R2.
- There does not appear to be a single client available that makes use
- of this extension and there is not way to verify that it works
- correctly. The Xdmx server does _n_o_t support MIT-MISC.
-
-
- BB..44..22..88.. SSCCRREEEENNSSAAVVEERR ((nnoott ssuuppppoorrtteedd))
-
- This extension provides special support for the X screen saver. It
- was tested with beforelight, which appears to be the only client that
- works with it. When Xinerama was not active, beforelight behaved as
- expected. However, when Xinerama was active, beforelight did not
- behave as expected. Further, when this extension is not active,
- xscreensaver (a widely-used X screen saver program) did not behave as
- expected. Since this extension is not Xinerama-aware and is not
- commonly used with expected results by clients, we have left this
- extension disabled at this time.
-
- BB..44..22..99.. GGLLXX ((ssuuppppoorrtteedd))
-
- The GLX extension provides OpenGL and GLX windowing support. In Xdmx,
- the extension is called glxProxy, and it is Xinerama aware. It works
- by either feeding requests forward through Xdmx to each of the back-
- end servers or handling them locally. All rendering requests are
- handled on the back-end X servers. This code was donated to the DMX
- project by SGI. For the X Test Suite results comparison, see below.
-
-
- BB..44..22..1100.. RREENNDDEERR ((ssuuppppoorrtteedd))
-
- The X Rendering Extension (RENDER) provides support for digital image
- composition. Geometric and text rendering are supported. RENDER is
- partially Xinerama-aware, with text and the most basic compositing
- operator; however, its higher level primitives (triangles, triangle
- strips, and triangle fans) are not yet Xinerama-aware. The RENDER
- extension is still under development, and is currently at version 0.8.
- Additional support will be required in DMX as more primitives and/or
- requests are added to the extension.
-
-
- There is currently no test suite for the X Rendering Extension;
- however, there has been discussion of developing a test suite as the
- extension matures. When that test suite becomes available, additional
- testing can be performed with Xdmx. The X Test Suite passed and
- failed the exact same tests before and after this extension was
- enabled.
-
-
- BB..44..22..1111.. SSuummmmaarryy
-
- To summarize, the following extensions are currently supported: BIG-
- REQUESTS, DEC-XTRAP, DMX, DPMS, Extended-Visual-Information, GLX, LBX,
- RECORD, RENDER, SECURITY, SHAPE, SYNC, X-Resource, XC-APPGROUP, XC-
- MISC, XFree86-Bigfont, XINERAMA, XInputExtension, XKEYBOARD, and
- XTEST.
-
-
- The following extensions are _n_o_t supported at this time: DOUBLE-
- BUFFER, FontCache, MIT-SCREEN-SAVER, MIT-SHM, MIT-SUNDRY-NONSTANDARD,
- TOG-CUP, XFree86-DGA, XFree86-Misc, XFree86-VidModeExtension,
- XTestExtensionExt1, and XVideo.
-
-
- BB..44..33.. AAddddiittiioonnaall TTeessttiinngg wwiitthh tthhee XX TTeesstt SSuuiittee
-
- BB..44..33..11.. XXFFrreeee8866 wwiitthhoouutt XXTTEESSTT
-
- After the release of XFree86 4.3.0, we retested the XFree86 X server
- with and without using the XTEST extension. When the XTEST extension
- was _n_o_t used for testing, the XFree86 4.3.0 server running on our
- usual test system with a Radeon VE card reported unexpected failures
- in the following tests:
-
- XListPixmapFormats: Test 1
- XChangeKeyboardControl: Tests 9, 10
- XGetDefault: Test 5
- XRebindKeysym: Test 1
-
-
-
- BB..44..33..22.. XXFFrreeee8866 wwiitthh XXTTEESSTT
-
- When using the XTEST extension, the XFree86 4.3.0 server reported the
- following errors:
-
- XListPixmapFormats: Test 1
- XChangeKeyboardControl: Tests 9, 10
- XGetDefault: Test 5
- XRebindKeysym: Test 1
-
- XAllowEvents: Tests 20, 21, 24
- XGrabButton: Tests 5, 9-12, 14, 16, 19, 21-25
- XGrabKey: Test 8
- XSetPointerMapping: Test 3
- XUngrabButton: Test 4
-
-
-
- While these errors may be important, they will probably be fixed
- eventually in the XFree86 source tree. We are particularly interested
- in demonstrating that the Xdmx server does not introduce additional
- failures that are not known Xinerama failures.
-
-
- BB..44..33..33.. XXddmmxx wwiitthh XXTTEESSTT,, wwiitthhoouutt XXiinneerraammaa,, wwiitthhoouutt GGLLXX
-
- Without Xinerama, but using the XTEST extension, the following errors
- were reported from Xdmx (note that these are the same as for the
- XFree86 4.3.0, except that XGetDefault no longer fails):
-
- XListPixmapFormats: Test 1
- XChangeKeyboardControl: Tests 9, 10
- XRebindKeysym: Test 1
-
- XAllowEvents: Tests 20, 21, 24
- XGrabButton: Tests 5, 9-12, 14, 16, 19, 21-25
- XGrabKey: Test 8
- XSetPointerMapping: Test 3
- XUngrabButton: Test 4
-
-
-
- BB..44..33..44.. XXddmmxx wwiitthh XXTTEESSTT,, wwiitthh XXiinneerraammaa,, wwiitthhoouutt GGLLXX
-
- With Xinerama, using the XTEST extension, the following errors were
- reported from Xdmx:
-
- XListPixmapFormats: Test 1
- XChangeKeyboardControl: Tests 9, 10
- XRebindKeysym: Test 1
-
- XAllowEvents: Tests 20, 21, 24
- XGrabButton: Tests 5, 9-12, 14, 16, 19, 21-25
- XGrabKey: Test 8
- XSetPointerMapping: Test 3
- XUngrabButton: Test 4
-
- XCopyPlane: Tests 13, 22, 31 (well-known XTEST/Xinerama interaction issue)
- XDrawLine: Test 67
- XDrawLines: Test 91
- XDrawSegments: Test 68
-
-
-
- Note that the first two sets of errors are the same as for the XFree86
- 4.3.0 server, and that the XCopyPlane error is a well-known error
- resulting from an XTEST/Xinerama interaction when the request crosses
- a screen boundary. The XDraw* errors are resolved when the tests are
- run individually and they do not cross a screen boundary. We will
- investigate these errors further to determine their cause.
-
-
- BB..44..33..55.. XXddmmxx wwiitthh XXTTEESSTT,, wwiitthh XXiinneerraammaa,, wwiitthh GGLLXX
-
- With GLX enabled, using the XTEST extension, the following errors were
- reported from Xdmx (these results are from early during the Phase IV
- development, but were confirmed with a late Phase IV snapshot):
-
- XListPixmapFormats: Test 1
- XChangeKeyboardControl: Tests 9, 10
- XRebindKeysym: Test 1
-
- XAllowEvents: Tests 20, 21, 24
- XGrabButton: Tests 5, 9-12, 14, 16, 19, 21-25
- XGrabKey: Test 8
- XSetPointerMapping: Test 3
- XUngrabButton: Test 4
-
- XClearArea: Test 8
- XCopyArea: Tests 4, 5, 11, 14, 17, 23, 25, 27, 30
- XCopyPlane: Tests 6, 7, 10, 19, 22, 31
- XDrawArcs: Tests 89, 100, 102
- XDrawLine: Test 67
- XDrawSegments: Test 68
-
-
- Note that the first two sets of errors are the same as for the XFree86
- 4.3.0 server, and that the third set has different failures than when
- Xdmx does not include GLX support. Since the GLX extension adds new
- visuals to support GLX's visual configs and the X Test Suite runs
- tests over the entire set of visuals, additional rendering tests were
- run and presumably more of them crossed a screen boundary. This con-
- clusion is supported by the fact that nearly all of the rendering
- errors reported are resolved when the tests are run individually and
- they do no cross a screen boundary.
-
-
- Further, when hardware rendering is disabled on the back-end displays,
- many of the errors in the third set are eliminated, leaving only:
-
- XClearArea: Test 8
- XCopyArea: Test 4, 5, 11, 14, 17, 23, 25, 27, 30
- XCopyPlane: Test 6, 7, 10, 19, 22, 31
-
-
-
- BB..44..33..66.. CCoonncclluussiioonn
-
- We conclude that all of the X Test Suite errors reported for Xdmx are
- the result of errors in the back-end X server or the Xinerama
- implementation. Further, all of these errors that can be reasonably
- fixed at the Xdmx layer have been. (Where appropriate, we have
- submitted patches to the XFree86 and Xinerama upstream maintainers.)
-
-
- BB..44..44.. DDyynnaammiicc RReeccoonnffiigguurraattiioonn
-
- During this development phase, dynamic reconfiguration support was
- added to DMX. This support allows an application to change the
- position and offset of a back-end server's screen. For example, if
- the application would like to shift a screen slightly to the left, it
- could query Xdmx for the screen's <x,y> position and then dynamically
- reconfigure that screen to be at position <x+10,y>. When a screen is
- dynamically reconfigured, input handling and a screen's root window
- dimensions are adjusted as needed. These adjustments are transparent
- to the user.
-
-
- BB..44..44..11.. DDyynnaammiicc rreeccoonnffiigguurraattiioonn eexxtteennssiioonn
-
- The application interface to DMX's dynamic reconfiguration is through
- a function in the DMX extension library:
-
- Bool DMXReconfigureScreen(Display *dpy, int screen, int x, int y)
-
-
- where _d_p_y is DMX server's display, _s_c_r_e_e_n is the number of the screen
- to be reconfigured, and _x and _y are the new upper, left-hand coordi-
- nates of the screen to be reconfigured.
-
-
- The coordinates are not limited other than as required by the X
- protocol, which limits all coordinates to a signed 16 bit number. In
- addition, all coordinates within a screen must also be legal values.
- Therefore, setting a screen's upper, left-hand coordinates such that
- the right or bottom edges of the screen is greater than 32,767 is
- illegal.
-
-
- BB..44..44..22.. BBoouunnddiinngg bbooxx
-
- When the Xdmx server is started, a bounding box is calculated from the
- screens' layout given either on the command line or in the
- configuration file. This bounding box is currently fixed for the
- lifetime of the Xdmx server.
-
-
- While it is possible to move a screen outside of the bounding box, it
- is currently not possible to change the dimensions of the bounding
- box. For example, it is possible to specify coordinates of
- <-100,-100> for the upper, left-hand corner of the bounding box, which
- was previously at coordinates <0,0>. As expected, the screen is moved
- down and to the right; however, since the bounding box is fixed, the
- left side and upper portions of the screen exposed by the
- reconfiguration are no longer accessible on that screen. Those
- inaccessible regions are filled with black.
-
-
- This fixed bounding box limitation will be addressed in a future
- development phase.
-
-
- BB..44..44..33.. SSaammppllee aapppplliiccaattiioonnss
-
- An example of where this extension is useful is in setting up a video
- wall. It is not always possible to get everything perfectly aligned,
- and sometimes the positions are changed (e.g., someone might bump into
- a projector). Instead of physically moving projectors or monitors, it
- is now possible to adjust the positions of the back-end server's
- screens using the dynamic reconfiguration support in DMX.
-
-
- Other applications, such as automatic setup and calibration tools, can
- make use of dynamic reconfiguration to correct for projector alignment
- problems, as long as the projectors are still arranged rectilinearly.
- Horizontal and vertical keystone correction could be applied to
- projectors to correct for non-rectilinear alignment problems; however,
- this must be done external to Xdmx.
-
-
- A sample test program is included in the DMX server's examples
- directory to demonstrate the interface and how an application might
- use dynamic reconfiguration. See dmxreconfig.c for details.
-
-
- BB..44..44..44.. AAddddiittiioonnaall nnootteess
-
- In the original development plan, Phase IV was primarily devoted to
- adding OpenGL support to DMX; however, SGI became interested in the
- DMX project and developed code to support OpenGL/GLX. This code was
- later donated to the DMX project and integrated into the DMX code
- base, which freed the DMX developers to concentrate on dynamic
- reconfiguration (as described above).
-
-
- BB..44..55.. DDooxxyyggeenn ddooccuummeennttaattiioonn
-
- Doxygen is an open-source (GPL) documentation system for generating
- browseable documentation from stylized comments in the source code.
- We have placed all of the Xdmx server and DMX protocol source code
- files under Doxygen so that comprehensive documentation for the Xdmx
- source code is available in an easily browseable format.
-
-
- BB..44..66.. VVaallggrriinndd
-
- Valgrind, an open-source (GPL) memory debugger for Linux, was used to
- search for memory management errors. Several memory leaks were
- detected and repaired. The following errors were not addressed:
-
- 1. When the X11 transport layer sends a reply to the client, only
- those fields that are required by the protocol are filled in --
- unused fields are left as uninitialized memory and are therefore
- noted by valgrind. These instances are not errors and were not
- repaired.
-
- 2. At each server generation, glxInitVisuals allocates memory that is
- never freed. The amount of memory lost each generation
- approximately equal to 128 bytes for each back-end visual. Because
- the code involved is automatically generated, this bug has not been
- fixed and will be referred to SGI.
-
- 3. At each server generation, dmxRealizeFont calls XLoadQueryFont,
- which allocates a font structure that is not freed.
- dmxUnrealizeFont can free the font structure for the first screen,
- but cannot free it for the other screens since they are already
- closed by the time dmxUnrealizeFont could free them. The amount of
- memory lost each generation is approximately equal to 80 bytes per
- font per back-end. When this bug is fixed in the the X server's
- device-independent (dix) code, DMX will be able to properly free
- the memory allocated by XLoadQueryFont.
-
-
- BB..44..77.. RRAATTSS
-
- RATS (Rough Auditing Tool for Security) is an open-source (GPL)
- security analysis tool that scans source code for common security-
- related programming errors (e.g., buffer overflows and TOCTOU races).
- RATS was used to audit all of the code in the hw/dmx directory and all
- "High" notations were checked manually. The code was either re-
- written to eliminate the warning, or a comment containing "RATS" was
- inserted on the line to indicate that a human had checked the code.
- Unrepaired warnings are as follows:
-
- 1. Fixed-size buffers are used in many areas, but code has been added
- to protect against buffer overflows (e.g., XmuSnprint). The only
- instances that have not yet been fixed are in config/xdmxconfig.c
- (which is not part of the Xdmx server) and input/usb-common.c.
-
- 2. vprintf and vfprintf are used in the logging routines. In general,
- all uses of these functions (e.g., dmxLog) provide a constant
- format string from a trusted source, so the use is relatively
- benign.
-
- 3. glxProxy/glxscreens.c uses getenv and strcat. The use of these
- functions is safe and will remain safe as long as ExtensionsString
- is longer then GLXServerExtensions (ensuring this may not be ovious
- to the casual programmer, but this is in automatically generated
- code, so we hope that the generator enforces this constraint).
-
-
-
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/doxygen.conf b/nx-X11/programs/Xserver/hw/dmx/doc/doxygen.conf
deleted file mode 100644
index 5b706b6d6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/doxygen.conf
+++ /dev/null
@@ -1,1090 +0,0 @@
-# Doxyfile 1.3.4
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = "Distributed Multihead X"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER = "dmx-1-2-20040604 and later"
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY =
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch,
-# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en
-# (Japanese with English messages), Korean, Norwegian, Polish, Portuguese,
-# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE = English
-
-# This tag can be used to specify the encoding used in the generated output.
-# The encoding is not always determined by the language that is chosen,
-# but also whether or not the output is meant for Windows or non-Windows users.
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
-# forces the Windows encoding (this is the default for the Windows binary),
-# whereas setting the tag to NO uses a Unix-style encoding (the default for
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = YES
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited
-# members of a class in the documentation of that class as if those members were
-# ordinary class members. Constructors, destructors and assignment operators of
-# the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. It is allowed to use relative paths in the argument list.
-
-STRIP_FROM_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like the Qt-style comments (thus requiring an
-# explict @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
-DETAILS_AT_TOP = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# reimplements.
-
-INHERIT_DOCS = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
-# only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = YES
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = YES
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = YES
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text.
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT = .. \
- ../input \
- ../config \
- ../../../Xext/dmx.c \
- ../../../../../include/extensions/dmxproto.h \
- ../../../../../include/extensions/dmxext.h \
- ../../../../../lib/dmx
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp
-# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE = ../config/parser.c \
- ../config/parser.h \
- ../config/scanner.c
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories
-# that are symbolic links (a Unix filesystem feature) are excluded from the input.
-
-EXCLUDE_SYMLINKS = YES
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-
-EXCLUDE_PATTERNS = atKeynames.h \
- Canvas*.*
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
-
-INPUT_FILTER =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = YES
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER = doxygen.head
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER = doxygen.foot
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet
-
-HTML_STYLESHEET = doxygen.css
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output dir.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW = YES
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimised for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assigments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_PREDEFINED tags.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed.
-
-PREDEFINED = SHAPE \
- RENDER \
- XKB \
- XINPUT
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse the
-# parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::addtions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or
-# super classes. Setting the tag to NO turns the diagrams off. Note that this
-# option is superceded by the HAVE_DOT option below. This is only a fallback. It is
-# recommended to install and use dot, since it yields more powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = NO
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similiar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-
-CALL_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT = gif
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found on the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_WIDTH = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes that
-# lay further from the root node will be omitted. Note that setting this option to
-# 1 or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that a graph may be further truncated if the graph's image dimensions are
-# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT).
-# If 0 is used for the depth value (the default), the graph is not depth-constrained.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Configuration::addtions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/doxygen.css b/nx-X11/programs/Xserver/hw/dmx/doc/doxygen.css
deleted file mode 100644
index 841f709a7..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/doxygen.css
+++ /dev/null
@@ -1,49 +0,0 @@
-H1 { text-align: center; }
-CAPTION { font-weight: bold }
-A.qindex {}
-A.qindexRef {}
-A.el { text-decoration: none; font-weight: bold }
-A.elRef { font-weight: bold }
-A.code { text-decoration: none; font-weight: normal; color: #4444ee }
-A.codeRef { font-weight: normal; color: #4444ee }
-A:hover { text-decoration: none; background-color: #f2f2ff }
-DL.el { margin-left: -1cm }
-DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
-DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
-TD.md { background-color: #f2f2ff; font-weight: bold; }
-TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; }
-TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; }
-DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
-DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
-BODY { background: white }
-TD.indexkey {
- background-color: #eeeeff;
- font-weight: bold;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px
-}
-TD.indexvalue {
- background-color: #eeeeff;
- font-style: italic;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px
-}
-FONT.keyword { color: #008000 }
-FONT.keywordtype { color: #604020 }
-FONT.keywordflow { color: #e08000 }
-FONT.comment { color: #800000 }
-FONT.preprocessor { color: #806020 }
-FONT.stringliteral { color: #002080 }
-FONT.charliteral { color: #008080 }
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/doxygen.foot b/nx-X11/programs/Xserver/hw/dmx/doc/doxygen.foot
deleted file mode 100644
index 3aca11763..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/doxygen.foot
+++ /dev/null
@@ -1,12 +0,0 @@
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/doxygen.head b/nx-X11/programs/Xserver/hw/dmx/doc/doxygen.head
deleted file mode 100644
index 89bda8fda..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/doxygen.head
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8c.html
deleted file mode 100644
index 29fc27d63..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8c.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>ChkNotMaskEv.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="ChkNotMaskEv_8h-source.html">ChkNotMaskEv.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="ChkNotMaskEv_8c.html#a2">XCheckNotMaskEvent</a> (Display *dpy, long mask, XEvent *event)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides a <a class="el" href="ChkNotMaskEv_8h.html#a0">XCheckNotMaskEvent</a> function that is derived from the standard Xlib XCheckMaskEvent function.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a2" doxytag="ChkNotMaskEv.c::XCheckNotMaskEvent" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool XCheckNotMaskEvent </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>long&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>XEvent *&nbsp;</td>
- <td class="mdname" nowrap> <em>event</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Check existing events in queue to find if any match. If so, return. If not, flush buffer and see if any more events are readable. If one matches, return. If all else fails, tell the user no events found. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8h-source.html
deleted file mode 100644
index 4a4fc4c52..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8h-source.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>ChkNotMaskEv.h</h1><a href="ChkNotMaskEv_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _CHKNOTMASKEV_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _CHKNOTMASKEV_H_</span>
-00040 <span class="preprocessor"></span><span class="keyword">extern</span> Bool <a class="code" href="ChkNotMaskEv_8c.html#a2">XCheckNotMaskEvent</a> (Display *dpy, <span class="keywordtype">long</span> mask, XEvent *event);
-00041 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8h.html
deleted file mode 100644
index 658c94d9f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ChkNotMaskEv_8h.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>ChkNotMaskEv.h File Reference</h1>
-<p>
-<a href="ChkNotMaskEv_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="ChkNotMaskEv_8h.html#a0">XCheckNotMaskEvent</a> (Display *dpy, long mask, XEvent *event)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for <a class="el" href="ChkNotMaskEv_8h.html#a0">XCheckNotMaskEvent</a> function. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="ChkNotMaskEv_8c.html">ChkNotMaskEv.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="ChkNotMaskEv.h::XCheckNotMaskEvent" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool XCheckNotMaskEvent </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>long&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>XEvent *&nbsp;</td>
- <td class="mdname" nowrap> <em>event</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Check existing events in queue to find if any match. If so, return. If not, flush buffer and see if any more events are readable. If one matches, return. If all else fails, tell the user no events found. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/annotated.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/annotated.html
deleted file mode 100644
index 0bd5e9c98..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/annotated.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindexHL" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>Distributed Multihead X Data Structures</h1>Here are the data structures with brief descriptions:<table>
- <tr><td class="indexkey"><a class="el" href="struct__dmxArg.html">_dmxArg</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__dmxColormapPriv.html">_dmxColormapPriv</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigComment.html">_DMXConfigComment</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigDisplay.html">_DMXConfigDisplay</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigEntry.html">_DMXConfigEntry</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigFullDim.html">_DMXConfigFullDim</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigNumber.html">_DMXConfigNumber</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigOption.html">_DMXConfigOption</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigPair.html">_DMXConfigPair</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigParam.html">_DMXConfigParam</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigPartDim.html">_DMXConfigPartDim</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigString.html">_DMXConfigString</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigSub.html">_DMXConfigSub</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigToken.html">_DMXConfigToken</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigVirtual.html">_DMXConfigVirtual</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXConfigWall.html">_DMXConfigWall</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__dmxCursorPriv.html">_dmxCursorPriv</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXEventMap.html">_DMXEventMap</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__dmxFontPriv.html">_dmxFontPriv</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__dmxGCPriv.html">_dmxGCPriv</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__dmxGlyphPriv.html">_dmxGlyphPriv</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXInputInfo.html">_DMXInputInfo</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXLocalInitInfo.html">_DMXLocalInitInfo</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXLocalInputInfo.html">_DMXLocalInputInfo</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__dmxPictPriv.html">_dmxPictPriv</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__dmxPixPriv.html">_dmxPixPriv</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXScreenInfo.html">_DMXScreenInfo</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXStatAvg.html">_DMXStatAvg</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__DMXStatInfo.html">_DMXStatInfo</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__dmxWinPriv.html">_dmxWinPriv</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__Event.html">_Event</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__EventQueue.html">_EventQueue</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="struct__myPrivate.html">_myPrivate</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structDMXConfigCmdStruct.html">DMXConfigCmdStruct</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structDMXConfigListStruct.html">DMXConfigListStruct</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structDMXDesktopAttributesRec.html">DMXDesktopAttributesRec</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structdmxGlxVisualPrivate.html">dmxGlxVisualPrivate</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structDMXInputAttributes.html">DMXInputAttributes</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structDMXInputAttributesRec.html">DMXInputAttributesRec</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structDMXScreenAttributesRec.html">DMXScreenAttributesRec</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structDMXWindowAttributes.html">DMXWindowAttributes</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structDMXWindowAttributesRec.html">DMXWindowAttributesRec</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXAddInputReply.html">xDMXAddInputReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXAddInputReq.html">xDMXAddInputReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXAddScreenReply.html">xDMXAddScreenReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXAddScreenReq.html">xDMXAddScreenReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXChangeDesktopAttributesReply.html">xDMXChangeDesktopAttributesReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXChangeDesktopAttributesReq.html">xDMXChangeDesktopAttributesReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXChangeScreensAttributesReply.html">xDMXChangeScreensAttributesReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXChangeScreensAttributesReq.html">xDMXChangeScreensAttributesReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXForceWindowCreationReply.html">xDMXForceWindowCreationReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXForceWindowCreationReq.html">xDMXForceWindowCreationReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXGetDesktopAttributesReply.html">xDMXGetDesktopAttributesReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXGetDesktopAttributesReq.html">xDMXGetDesktopAttributesReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXGetInputAttributesReply.html">xDMXGetInputAttributesReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXGetInputAttributesReq.html">xDMXGetInputAttributesReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXGetInputCountReply.html">xDMXGetInputCountReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXGetInputCountReq.html">xDMXGetInputCountReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXGetScreenAttributesReply.html">xDMXGetScreenAttributesReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXGetScreenAttributesReq.html">xDMXGetScreenAttributesReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXGetScreenCountReply.html">xDMXGetScreenCountReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXGetScreenCountReq.html">xDMXGetScreenCountReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXGetWindowAttributesReply.html">xDMXGetWindowAttributesReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXGetWindowAttributesReq.html">xDMXGetWindowAttributesReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXQueryVersionReply.html">xDMXQueryVersionReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXQueryVersionReq.html">xDMXQueryVersionReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXRemoveInputReply.html">xDMXRemoveInputReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXRemoveInputReq.html">xDMXRemoveInputReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXRemoveScreenReply.html">xDMXRemoveScreenReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXRemoveScreenReq.html">xDMXRemoveScreenReq</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXSyncReply.html">xDMXSyncReply</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structxDMXSyncReq.html">xDMXSyncReq</a></td><td class="indexvalue"></td></tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/classes.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/classes.html
deleted file mode 100644
index d6632fb09..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/classes.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindexHL" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>Distributed Multihead X Data Structure Index</h1><table align=center width="95%" border="0" cellspacing="0" cellpadding="0">
-<tr><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;_&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="struct__DMXConfigWall.html">_DMXConfigWall</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__EventQueue.html">_EventQueue</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXAddInputReply.html">xDMXAddInputReply</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXGetInputCountReq.html">xDMXGetInputCountReq</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__dmxArg.html">_dmxArg</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__dmxCursorPriv.html">_dmxCursorPriv</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__myPrivate.html">_myPrivate</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXAddInputReq.html">xDMXAddInputReq</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXGetScreenAttributesReply.html">xDMXGetScreenAttributesReply</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__dmxColormapPriv.html">_dmxColormapPriv</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__DMXEventMap.html">_DMXEventMap</a>&nbsp;&nbsp;&nbsp;</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structxDMXAddScreenReply.html">xDMXAddScreenReply</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXGetScreenAttributesReq.html">xDMXGetScreenAttributesReq</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigComment.html">_DMXConfigComment</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__dmxFontPriv.html">_dmxFontPriv</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structDMXConfigCmdStruct.html">DMXConfigCmdStruct</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXAddScreenReq.html">xDMXAddScreenReq</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXGetScreenCountReply.html">xDMXGetScreenCountReply</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigDisplay.html">_DMXConfigDisplay</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__dmxGCPriv.html">_dmxGCPriv</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structDMXConfigListStruct.html">DMXConfigListStruct</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXChangeDesktopAttributesReply.html">xDMXChangeDesktopAttributesReply</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXGetScreenCountReq.html">xDMXGetScreenCountReq</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigEntry.html">_DMXConfigEntry</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__dmxGlyphPriv.html">_dmxGlyphPriv</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXChangeDesktopAttributesReq.html">xDMXChangeDesktopAttributesReq</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXGetWindowAttributesReply.html">xDMXGetWindowAttributesReply</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigFullDim.html">_DMXConfigFullDim</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__DMXInputInfo.html">_DMXInputInfo</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structDMXDesktopAttributesRec.html">DMXDesktopAttributesRec</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXChangeScreensAttributesReply.html">xDMXChangeScreensAttributesReply</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXGetWindowAttributesReq.html">xDMXGetWindowAttributesReq</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigNumber.html">_DMXConfigNumber</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__DMXLocalInitInfo.html">_DMXLocalInitInfo</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structdmxGlxVisualPrivate.html">dmxGlxVisualPrivate</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXChangeScreensAttributesReq.html">xDMXChangeScreensAttributesReq</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXQueryVersionReply.html">xDMXQueryVersionReply</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigOption.html">_DMXConfigOption</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__DMXLocalInputInfo.html">_DMXLocalInputInfo</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structDMXInputAttributes.html">DMXInputAttributes</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXForceWindowCreationReply.html">xDMXForceWindowCreationReply</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXQueryVersionReq.html">xDMXQueryVersionReq</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigPair.html">_DMXConfigPair</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__dmxPictPriv.html">_dmxPictPriv</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structDMXInputAttributesRec.html">DMXInputAttributesRec</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXForceWindowCreationReq.html">xDMXForceWindowCreationReq</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXRemoveInputReply.html">xDMXRemoveInputReply</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigParam.html">_DMXConfigParam</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__dmxPixPriv.html">_dmxPixPriv</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXGetDesktopAttributesReply.html">xDMXGetDesktopAttributesReply</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXRemoveInputReq.html">xDMXRemoveInputReq</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigPartDim.html">_DMXConfigPartDim</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__DMXScreenInfo.html">_DMXScreenInfo</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structDMXScreenAttributesRec.html">DMXScreenAttributesRec</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXGetDesktopAttributesReq.html">xDMXGetDesktopAttributesReq</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXRemoveScreenReply.html">xDMXRemoveScreenReply</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigString.html">_DMXConfigString</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__DMXStatAvg.html">_DMXStatAvg</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structDMXWindowAttributes.html">DMXWindowAttributes</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXGetInputAttributesReply.html">xDMXGetInputAttributesReply</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXRemoveScreenReq.html">xDMXRemoveScreenReq</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigSub.html">_DMXConfigSub</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__DMXStatInfo.html">_DMXStatInfo</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structDMXWindowAttributesRec.html">DMXWindowAttributesRec</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXGetInputAttributesReq.html">xDMXGetInputAttributesReq</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXSyncReply.html">xDMXSyncReply</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigToken.html">_DMXConfigToken</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__dmxWinPriv.html">_dmxWinPriv</a>&nbsp;&nbsp;&nbsp;</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;X&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structxDMXGetInputCountReply.html">xDMXGetInputCountReply</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structxDMXSyncReq.html">xDMXSyncReq</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="struct__DMXConfigVirtual.html">_DMXConfigVirtual</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="struct__Event.html">_Event</a>&nbsp;&nbsp;&nbsp;</td></tr></table> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmx_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmx_8h-source.html
deleted file mode 100644
index 3dc9b85ac..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmx_8h-source.html
+++ /dev/null
@@ -1,276 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmx.h</h1><a href="dmx_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001-2003 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00032 <span class="comment"> * David H. Dawes &lt;dawes@xfree86.org&gt;</span>
-00033 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00034 <span class="comment"> *</span>
-00035 <span class="comment"> */</span>
-00036
-00051 <span class="preprocessor">#ifndef DMX_H</span>
-00052 <span class="preprocessor"></span><span class="preprocessor">#define DMX_H</span>
-00053 <span class="preprocessor"></span>
-00054 <span class="preprocessor">#include "gcstruct.h"</span>
-00055
-00056 <span class="comment">/* Handle client-side include files in one place. */</span>
-00057 <span class="preprocessor">#include "<a class="code" href="dmxclient_8h.html">dmxclient.h</a>"</span>
-00058
-00059 <span class="preprocessor">#include "globals.h"</span>
-00060 <span class="preprocessor">#include "scrnintstr.h"</span>
-00061
-00062 <span class="preprocessor">#ifdef RENDER</span>
-00063 <span class="preprocessor"></span><span class="preprocessor">#include "picturestr.h"</span>
-00064 <span class="preprocessor">#endif</span>
-00065 <span class="preprocessor"></span>
-00066 <span class="preprocessor">#ifdef GLXEXT</span>
-00067 <span class="preprocessor"></span><span class="preprocessor">#include &lt;GL/glx.h&gt;</span>
-00068 <span class="preprocessor">#include &lt;GL/glxint.h&gt;</span>
-00069 <span class="preprocessor">#endif</span>
-00070 <span class="preprocessor"></span>
-00071 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00072 PosNone = -1,
-00073 PosAbsolute = 0,
-00074 PosRightOf,
-00075 PosLeftOf,
-00076 PosAbove,
-00077 PosBelow,
-00078 PosRelative
-00079 } PositionType;
-00080
-<a name="l00083"></a><a class="code" href="dmx_8h.html#a2">00083</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXInputInfo.html">_DMXInputInfo</a> <a class="code" href="dmx_8h.html#a2">DMXInputInfo</a>;
-00084
-<a name="l00087"></a><a class="code" href="dmx_8h.html#a3">00087</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXStatInfo.html">_DMXStatInfo</a> <a class="code" href="dmx_8h.html#a3">DMXStatInfo</a>;
-00088
-<a name="l00090"></a><a class="code" href="struct__DMXScreenInfo.html">00090</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXScreenInfo.html">_DMXScreenInfo</a> {
-<a name="l00091"></a><a class="code" href="struct__DMXScreenInfo.html#o0">00091</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="struct__DMXScreenInfo.html#o0">name</a>;
-<a name="l00092"></a><a class="code" href="struct__DMXScreenInfo.html#o1">00092</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o1">index</a>;
-00094 <span class="comment">/*---------- Back-end X server information ----------*/</span>
-00095
-<a name="l00096"></a><a class="code" href="struct__DMXScreenInfo.html#o2">00096</a> Display *<a class="code" href="struct__DMXScreenInfo.html#o2">beDisplay</a>;
-<a name="l00097"></a><a class="code" href="struct__DMXScreenInfo.html#o3">00097</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o3">beWidth</a>;
-<a name="l00098"></a><a class="code" href="struct__DMXScreenInfo.html#o4">00098</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o4">beHeight</a>;
-<a name="l00099"></a><a class="code" href="struct__DMXScreenInfo.html#o5">00099</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o5">beDepth</a>;
-<a name="l00100"></a><a class="code" href="struct__DMXScreenInfo.html#o6">00100</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o6">beBPP</a>;
-<a name="l00101"></a><a class="code" href="struct__DMXScreenInfo.html#o7">00101</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o7">beXDPI</a>;
-<a name="l00102"></a><a class="code" href="struct__DMXScreenInfo.html#o8">00102</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o8">beYDPI</a>;
-<a name="l00104"></a><a class="code" href="struct__DMXScreenInfo.html#o9">00104</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o9">beNumDepths</a>;
-<a name="l00105"></a><a class="code" href="struct__DMXScreenInfo.html#o10">00105</a> <span class="keywordtype">int</span> *<a class="code" href="struct__DMXScreenInfo.html#o10">beDepths</a>;
-<a name="l00107"></a><a class="code" href="struct__DMXScreenInfo.html#o11">00107</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o11">beNumPixmapFormats</a>;
-<a name="l00108"></a><a class="code" href="struct__DMXScreenInfo.html#o12">00108</a> XPixmapFormatValues *<a class="code" href="struct__DMXScreenInfo.html#o12">bePixmapFormats</a>;
-<a name="l00110"></a><a class="code" href="struct__DMXScreenInfo.html#o13">00110</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o13">beNumVisuals</a>;
-<a name="l00111"></a><a class="code" href="struct__DMXScreenInfo.html#o14">00111</a> XVisualInfo *<a class="code" href="struct__DMXScreenInfo.html#o14">beVisuals</a>;
-<a name="l00112"></a><a class="code" href="struct__DMXScreenInfo.html#o15">00112</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o15">beDefVisualIndex</a>;
-<a name="l00114"></a><a class="code" href="struct__DMXScreenInfo.html#o16">00114</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o16">beNumDefColormaps</a>;
-<a name="l00115"></a><a class="code" href="struct__DMXScreenInfo.html#o17">00115</a> Colormap *<a class="code" href="struct__DMXScreenInfo.html#o17">beDefColormaps</a>;
-<a name="l00117"></a><a class="code" href="struct__DMXScreenInfo.html#o18">00117</a> Pixel <a class="code" href="struct__DMXScreenInfo.html#o18">beBlackPixel</a>;
-<a name="l00118"></a><a class="code" href="struct__DMXScreenInfo.html#o19">00118</a> Pixel <a class="code" href="struct__DMXScreenInfo.html#o19">beWhitePixel</a>;
-00120 <span class="comment">/*---------- Screen window information ----------*/</span>
-00121
-<a name="l00122"></a><a class="code" href="struct__DMXScreenInfo.html#o20">00122</a> Window <a class="code" href="struct__DMXScreenInfo.html#o20">scrnWin</a>;
-<a name="l00123"></a><a class="code" href="struct__DMXScreenInfo.html#o21">00123</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o21">scrnX</a>;
-<a name="l00124"></a><a class="code" href="struct__DMXScreenInfo.html#o22">00124</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o22">scrnY</a>;
-<a name="l00125"></a><a class="code" href="struct__DMXScreenInfo.html#o23">00125</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o23">scrnWidth</a>;
-<a name="l00126"></a><a class="code" href="struct__DMXScreenInfo.html#o24">00126</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o24">scrnHeight</a>;
-<a name="l00127"></a><a class="code" href="struct__DMXScreenInfo.html#o25">00127</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o25">scrnXSign</a>;
-<a name="l00128"></a><a class="code" href="struct__DMXScreenInfo.html#o26">00128</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o26">scrnYSign</a>;
-<a name="l00131"></a><a class="code" href="struct__DMXScreenInfo.html#o27">00131</a> Drawable <a class="code" href="struct__DMXScreenInfo.html#o27">scrnDefDrawables</a>[MAXFORMATS];
-00132
-<a name="l00133"></a><a class="code" href="struct__DMXScreenInfo.html#o28">00133</a> <span class="keyword">struct </span><a class="code" href="struct__DMXScreenInfo.html">_DMXScreenInfo</a> *<a class="code" href="struct__DMXScreenInfo.html#o28">next</a>;
-<a name="l00134"></a><a class="code" href="struct__DMXScreenInfo.html#o29">00134</a> <span class="keyword">struct </span><a class="code" href="struct__DMXScreenInfo.html">_DMXScreenInfo</a> *<a class="code" href="struct__DMXScreenInfo.html#o29">over</a>;
-00136 <span class="comment">/*---------- Root window information ----------*/</span>
-00137
-<a name="l00138"></a><a class="code" href="struct__DMXScreenInfo.html#o30">00138</a> Window <a class="code" href="struct__DMXScreenInfo.html#o30">rootWin</a>;
-<a name="l00139"></a><a class="code" href="struct__DMXScreenInfo.html#o31">00139</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o31">rootX</a>;
-<a name="l00140"></a><a class="code" href="struct__DMXScreenInfo.html#o32">00140</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o32">rootY</a>;
-<a name="l00141"></a><a class="code" href="struct__DMXScreenInfo.html#o33">00141</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o33">rootWidth</a>;
-<a name="l00142"></a><a class="code" href="struct__DMXScreenInfo.html#o34">00142</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o34">rootHeight</a>;
-<a name="l00144"></a><a class="code" href="struct__DMXScreenInfo.html#o35">00144</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o35">rootXOrigin</a>;
-<a name="l00145"></a><a class="code" href="struct__DMXScreenInfo.html#o36">00145</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o36">rootYOrigin</a>;
-00147 <span class="comment">/*---------- Shadow framebuffer information ----------*/</span>
-00148
-<a name="l00149"></a><a class="code" href="struct__DMXScreenInfo.html#o37">00149</a> <span class="keywordtype">void</span> *<a class="code" href="struct__DMXScreenInfo.html#o37">shadow</a>;
-<a name="l00150"></a><a class="code" href="struct__DMXScreenInfo.html#o38">00150</a> XlibGC <a class="code" href="struct__DMXScreenInfo.html#o38">shadowGC</a>;
-<a name="l00151"></a><a class="code" href="struct__DMXScreenInfo.html#o39">00151</a> XImage *<a class="code" href="struct__DMXScreenInfo.html#o39">shadowFBImage</a>;
-00153 <span class="comment">/*---------- Other related information ----------*/</span>
-00154
-<a name="l00155"></a><a class="code" href="struct__DMXScreenInfo.html#o40">00155</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o40">shared</a>;
-00157 Bool WMRunningOnBE;
-00158
-00159 Cursor noCursor;
-00160 Cursor curCursor;
-00161 <span class="comment">/* Support for cursors on overlapped</span>
-00162 <span class="comment"> * backend displays. */</span>
-00163 CursorPtr cursor;
-00164 <span class="keywordtype">int</span> cursorVisible;
-00165 <span class="keywordtype">int</span> cursorNotShared; <span class="comment">/* for overlapping screens on a backend */</span>
-00166
-<a name="l00167"></a><a class="code" href="struct__DMXScreenInfo.html#o47">00167</a> PositionType <a class="code" href="struct__DMXScreenInfo.html#o47">where</a>;
-<a name="l00168"></a><a class="code" href="struct__DMXScreenInfo.html#o48">00168</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o48">whereX</a>;
-<a name="l00169"></a><a class="code" href="struct__DMXScreenInfo.html#o49">00169</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o49">whereY</a>;
-<a name="l00170"></a><a class="code" href="struct__DMXScreenInfo.html#o50">00170</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o50">whereRefScreen</a>;
-<a name="l00172"></a><a class="code" href="struct__DMXScreenInfo.html#o51">00172</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o51">savedTimeout</a>;
-<a name="l00173"></a><a class="code" href="struct__DMXScreenInfo.html#o52">00173</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o52">dpmsCapable</a>;
-<a name="l00174"></a><a class="code" href="struct__DMXScreenInfo.html#o53">00174</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o53">dpmsEnabled</a>;
-<a name="l00175"></a><a class="code" href="struct__DMXScreenInfo.html#o54">00175</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o54">dpmsStandby</a>;
-<a name="l00176"></a><a class="code" href="struct__DMXScreenInfo.html#o55">00176</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o55">dpmsSuspend</a>;
-<a name="l00177"></a><a class="code" href="struct__DMXScreenInfo.html#o56">00177</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXScreenInfo.html#o56">dpmsOff</a>;
-<a name="l00179"></a><a class="code" href="struct__DMXScreenInfo.html#o57">00179</a> <a class="code" href="dmx_8h.html#a3">DMXStatInfo</a> *<a class="code" href="struct__DMXScreenInfo.html#o57">stat</a>;
-<a name="l00180"></a><a class="code" href="struct__DMXScreenInfo.html#o58">00180</a> Bool <a class="code" href="struct__DMXScreenInfo.html#o58">needsSync</a>;
-00182 <span class="preprocessor">#ifdef GLXEXT</span>
-00183 <span class="preprocessor"></span>
-00184 <span class="keywordtype">int</span> numGlxVisuals;
-00185 __GLXvisualConfig *glxVisuals;
-00186 <span class="keywordtype">int</span> glxMajorOpcode;
-00187 <span class="keywordtype">int</span> glxErrorBase;
-00188
-00190 __GLXFBConfig *fbconfigs;
-00191 <span class="keywordtype">int</span> numFBConfigs;
-00192 <span class="preprocessor">#endif</span>
-00193 <span class="preprocessor"></span>
-<a name="l00196"></a><a class="code" href="struct__DMXScreenInfo.html#o59">00196</a> CloseScreenProcPtr <a class="code" href="struct__DMXScreenInfo.html#o59">CloseScreen</a>;
-00197 SaveScreenProcPtr SaveScreen;
-00198
-00199 CreateGCProcPtr CreateGC;
-00200
-00201 CreateWindowProcPtr CreateWindow;
-00202 DestroyWindowProcPtr DestroyWindow;
-00203 PositionWindowProcPtr PositionWindow;
-00204 ChangeWindowAttributesProcPtr ChangeWindowAttributes;
-00205 RealizeWindowProcPtr RealizeWindow;
-00206 UnrealizeWindowProcPtr UnrealizeWindow;
-00207 RestackWindowProcPtr RestackWindow;
-00208 WindowExposuresProcPtr WindowExposures;
-00209 PaintWindowBackgroundProcPtr PaintWindowBackground;
-00210 PaintWindowBorderProcPtr PaintWindowBorder;
-00211 CopyWindowProcPtr CopyWindow;
-00212
-00213 ResizeWindowProcPtr ResizeWindow;
-00214 ReparentWindowProcPtr ReparentWindow;
-00215
-00216 ChangeBorderWidthProcPtr ChangeBorderWidth;
-00217
-00218 GetImageProcPtr GetImage;
-00219 GetSpansProcPtr GetSpans;
-00220
-00221 CreatePixmapProcPtr CreatePixmap;
-00222 DestroyPixmapProcPtr DestroyPixmap;
-00223 BitmapToRegionProcPtr BitmapToRegion;
-00224
-00225 RealizeFontProcPtr RealizeFont;
-00226 UnrealizeFontProcPtr UnrealizeFont;
-00227
-00228 CreateColormapProcPtr CreateColormap;
-00229 DestroyColormapProcPtr DestroyColormap;
-00230 InstallColormapProcPtr InstallColormap;
-00231 StoreColorsProcPtr StoreColors;
-00232
-00233 <span class="preprocessor">#ifdef SHAPE</span>
-00234 <span class="preprocessor"></span> SetShapeProcPtr SetShape;
-00235 <span class="preprocessor">#endif</span>
-00236 <span class="preprocessor"></span>
-00237 <span class="preprocessor">#ifdef RENDER</span>
-00238 <span class="preprocessor"></span> CreatePictureProcPtr CreatePicture;
-00239 DestroyPictureProcPtr DestroyPicture;
-00240 ChangePictureClipProcPtr ChangePictureClip;
-00241 DestroyPictureClipProcPtr DestroyPictureClip;
-00242
-00243 ChangePictureProcPtr ChangePicture;
-00244 ValidatePictureProcPtr ValidatePicture;
-00245
-00246 CompositeProcPtr Composite;
-00247 GlyphsProcPtr Glyphs;
-00248 CompositeRectsProcPtr CompositeRects;
-00249
-00250 InitIndexedProcPtr InitIndexed;
-00251 CloseIndexedProcPtr CloseIndexed;
-00252 UpdateIndexedProcPtr UpdateIndexed;
-00253
-00254 TrapezoidsProcPtr Trapezoids;
-00255 TrianglesProcPtr Triangles;
-00256 TriStripProcPtr TriStrip;
-00257 TriFanProcPtr TriFan;
-00258 <span class="preprocessor">#endif</span>
-00259 <span class="preprocessor"></span>} <a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a>;
-00260
-00261 <span class="comment">/* Global variables available to all Xserver/hw/dmx routines. */</span>
-<a name="l00262"></a><a class="code" href="dmx_8h.html#a5">00262</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmx_8h.html#a5">dmxNumScreens</a>;
-<a name="l00263"></a><a class="code" href="dmx_8h.html#a6">00263</a> <span class="keyword">extern</span> <a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *<a class="code" href="dmx_8h.html#a6">dmxScreens</a>;
-<a name="l00264"></a><a class="code" href="dmx_8h.html#a7">00264</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmx_8h.html#a7">dmxShadowFB</a>;
-<a name="l00267"></a><a class="code" href="dmx_8h.html#a8">00267</a> <span class="keyword">extern</span> XErrorEvent <a class="code" href="dmx_8h.html#a8">dmxLastErrorEvent</a>;
-<a name="l00269"></a><a class="code" href="dmx_8h.html#a9">00269</a> <span class="keyword">extern</span> Bool <a class="code" href="dmx_8h.html#a9">dmxErrorOccurred</a>;
-<a name="l00271"></a><a class="code" href="dmx_8h.html#a10">00271</a> <span class="keyword">extern</span> Bool <a class="code" href="dmx_8h.html#a10">dmxOffScreenOpt</a>;
-<a name="l00274"></a><a class="code" href="dmx_8h.html#a11">00274</a> <span class="keyword">extern</span> Bool <a class="code" href="dmx_8h.html#a11">dmxSubdividePrimitives</a>;
-<a name="l00277"></a><a class="code" href="dmx_8h.html#a12">00277</a> <span class="keyword">extern</span> Bool <a class="code" href="dmx_8h.html#a12">dmxLazyWindowCreation</a>;
-<a name="l00280"></a><a class="code" href="dmx_8h.html#a13">00280</a> <span class="keyword">extern</span> Bool <a class="code" href="dmx_8h.html#a13">dmxUseXKB</a>;
-<a name="l00284"></a><a class="code" href="dmx_8h.html#a14">00284</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmx_8h.html#a14">dmxDepth</a>;
-<a name="l00286"></a><a class="code" href="dmx_8h.html#a15">00286</a> <span class="keyword">extern</span> Bool <a class="code" href="dmx_8h.html#a15">dmxNoRender</a>;
-00289 <span class="preprocessor">#ifdef GLXEXT</span>
-00290 <span class="preprocessor"></span><span class="keyword">extern</span> Bool dmxGLXProxy;
-00292 <span class="keyword">extern</span> Bool dmxGLXSwapGroupSupport;
-00296 <span class="keyword">extern</span> Bool dmxGLXSyncSwap;
-00300 <span class="keyword">extern</span> Bool dmxGLXFinishSwap;
-00305 <span class="preprocessor">#endif</span>
-<a name="l00306"></a><a class="code" href="dmx_8h.html#a16">00306</a> <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">char</span> *<a class="code" href="dmx_8h.html#a16">dmxFontPath</a>;
-<a name="l00315"></a><a class="code" href="dmx_8h.html#a17">00315</a> <span class="keyword">extern</span> Bool <a class="code" href="dmx_8h.html#a17">dmxIgnoreBadFontPaths</a>;
-<a name="l00319"></a><a class="code" href="dmx_8h.html#a18">00319</a> <span class="keyword">extern</span> Bool <a class="code" href="dmx_8h.html#a18">dmxAddRemoveScreens</a>;
-<a name="l00324"></a><a class="code" href="dmx_8h.html#a0">00324</a> <span class="preprocessor">#define DMX_WRAP(_entry, _newfunc, _saved, _actual) \</span>
-00325 <span class="preprocessor">do { \</span>
-00326 <span class="preprocessor"> (_saved)-&gt;_entry = (_actual)-&gt;_entry; \</span>
-00327 <span class="preprocessor"> (_actual)-&gt;_entry = (_newfunc); \</span>
-00328 <span class="preprocessor">} while (0)</span>
-00329 <span class="preprocessor"></span>
-<a name="l00331"></a><a class="code" href="dmx_8h.html#a1">00331</a> <span class="preprocessor">#define DMX_UNWRAP(_entry, _saved, _actual) \</span>
-00332 <span class="preprocessor">do { \</span>
-00333 <span class="preprocessor"> (_actual)-&gt;_entry = (_saved)-&gt;_entry; \</span>
-00334 <span class="preprocessor">} while (0)</span>
-00335 <span class="preprocessor"></span>
-00336 <span class="preprocessor">#endif </span><span class="comment">/* DMX_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmx_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmx_8h.html
deleted file mode 100644
index ecdde319d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmx_8h.html
+++ /dev/null
@@ -1,532 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmx.h File Reference</h1><code>#include "gcstruct.h"</code><br>
-<code>#include "<a class="el" href="dmxclient_8h-source.html">dmxclient.h</a>"</code><br>
-<code>#include "globals.h"</code><br>
-<code>#include "scrnintstr.h"</code><br>
-<code>#include "picturestr.h"</code><br>
-
-<p>
-<a href="dmx_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html">_DMXScreenInfo</a></td></tr>
-
-<tr><td colspan=2><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a0">DMX_WRAP</a>(_entry, _newfunc, _saved, _actual)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a1">DMX_UNWRAP</a>(_entry, _saved, _actual)</td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXInputInfo.html">_DMXInputInfo</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a2">DMXInputInfo</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXStatInfo.html">_DMXStatInfo</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a3">DMXStatInfo</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXScreenInfo.html">_DMXScreenInfo</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a4">DMXScreenInfo</a></td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a5">dmxNumScreens</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a6">dmxScreens</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a7">dmxShadowFB</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>XErrorEvent&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a8">dmxLastErrorEvent</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a9">dmxErrorOccurred</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a10">dmxOffScreenOpt</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a11">dmxSubdividePrimitives</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a12">dmxLazyWindowCreation</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a13">dmxUseXKB</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a14">dmxDepth</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a15">dmxNoRender</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a16">dmxFontPath</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a17">dmxIgnoreBadFontPaths</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmx_8h.html#a18">dmxAddRemoveScreens</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Main header file included by all other DMX-related files.<hr><h2>Define Documentation</h2>
-<a class="anchor" name="a1" doxytag="dmx.h::DMX_UNWRAP" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_UNWRAP</td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">_entry, <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>_saved, <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>_actual&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-<b>Value:</b><div class="fragment"><pre><span class="keywordflow">do</span> { \
- (_actual)-&gt;_entry = (_saved)-&gt;_entry; \
-} <span class="keywordflow">while</span> (0)
-</pre></div>Unwrap screen or GC function pointer </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmx.h::DMX_WRAP" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_WRAP</td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">_entry, <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>_newfunc, <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>_saved, <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>_actual&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-<b>Value:</b><div class="fragment"><pre><span class="keywordflow">do</span> { \
- (_saved)-&gt;_entry = (_actual)-&gt;_entry; \
- (_actual)-&gt;_entry = (_newfunc); \
-} <span class="keywordflow">while</span> (0)
-</pre></div>Wrap screen or GC function pointer </td>
- </tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a2" doxytag="dmx.h::DMXInputInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXInputInfo.html">_DMXInputInfo</a> <a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Provide the typedef globally, but keep the contents opaque outside of the input routines. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxinput_8h.html">dmxinput.h</a> </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmx.h::DMXScreenInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXScreenInfo.html">_DMXScreenInfo</a> <a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Global structure containing information about each backend screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmx.h::DMXStatInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXStatInfo.html">_DMXStatInfo</a> <a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Provide the typedef globally, but keep the contents opaque outside of the XSync statistic routines. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxstat_8c.html">dmxstat.c</a> </dd></dl>
- </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a18" doxytag="dmx.h::dmxAddRemoveScreens" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a17">dmxAddRemoveScreens</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if add and remove screens support is enabled </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmx.h::dmxDepth" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxinit_8c.html#a13">dmxDepth</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Requested depth if non-zero </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmx.h::dmxErrorOccurred" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a7">dmxErrorOccurred</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if an error occurred </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmx.h::dmxFontPath" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> char* <a class="el" href="dmxinit_8c.html#a8">dmxFontPath</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-NULL if no font path is set on the command line; otherwise, a string of comma separated paths built from the command line specified font paths </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmx.h::dmxIgnoreBadFontPaths" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a16">dmxIgnoreBadFontPaths</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if bad font paths should be ignored during server init </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmx.h::dmxLastErrorEvent" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> XErrorEvent <a class="el" href="dmxinit_8c.html#a6">dmxLastErrorEvent</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Last error that occurred </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmx.h::dmxLazyWindowCreation" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a11">dmxLazyWindowCreation</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if using the lazy window creation optimization </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmx.h::dmxNoRender" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a14">dmxNoRender</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if the RENDER extension should be disabled </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmx.h::dmxNumScreens" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxinit_8c.html#a1">dmxNumScreens</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of dmxScreens </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmx.h::dmxOffScreenOpt" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a9">dmxOffScreenOpt</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if using off screen optimizations </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmx.h::dmxScreens" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a>* <a class="el" href="dmxinit_8c.html#a2">dmxScreens</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-List of outputs </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmx.h::dmxShadowFB" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxinit_8c.html#a5">dmxShadowFB</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if using shadow frame-buffer (deprecated) </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmx.h::dmxSubdividePrimitives" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a10">dmxSubdividePrimitives</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if using the primitive subdivision optimization </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmx.h::dmxUseXKB" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a12">dmxUseXKB</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if the XKB extension should be used with the backend servers </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmx__glxvisuals_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmx__glxvisuals_8h-source.html
deleted file mode 100644
index 1885e30d7..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmx__glxvisuals_8h-source.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmx_glxvisuals.h</h1><div class="fragment"><pre>00001 <span class="comment">/*</span>
-00002 <span class="comment">** License Applicability. Except to the extent portions of this file are</span>
-00003 <span class="comment">** made subject to an alternative license as permitted in the SGI Free</span>
-00004 <span class="comment">** Software License B, Version 1.1 (the "License"), the contents of this</span>
-00005 <span class="comment">** file are subject only to the provisions of the License. You may not use</span>
-00006 <span class="comment">** this file except in compliance with the License. You may obtain a copy</span>
-00007 <span class="comment">** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600</span>
-00008 <span class="comment">** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:</span>
-00009 <span class="comment">**</span>
-00010 <span class="comment">** http://oss.sgi.com/projects/FreeB</span>
-00011 <span class="comment">**</span>
-00012 <span class="comment">** Note that, as provided in the License, the Software is distributed on an</span>
-00013 <span class="comment">** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS</span>
-00014 <span class="comment">** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND</span>
-00015 <span class="comment">** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A</span>
-00016 <span class="comment">** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.</span>
-00017 <span class="comment">**</span>
-00018 <span class="comment">** Original Code. The Original Code is: OpenGL Sample Implementation,</span>
-00019 <span class="comment">** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,</span>
-00020 <span class="comment">** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.</span>
-00021 <span class="comment">** Copyright in any portions created by third parties is as indicated</span>
-00022 <span class="comment">** elsewhere herein. All Rights Reserved.</span>
-00023 <span class="comment">**</span>
-00024 <span class="comment">** Additional Notice Provisions: The application programming interfaces</span>
-00025 <span class="comment">** established by SGI in conjunction with the Original Code are The</span>
-00026 <span class="comment">** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released</span>
-00027 <span class="comment">** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version</span>
-00028 <span class="comment">** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X</span>
-00029 <span class="comment">** Window System(R) (Version 1.3), released October 19, 1998. This software</span>
-00030 <span class="comment">** was created using the OpenGL(R) version 1.2.1 Sample Implementation</span>
-00031 <span class="comment">** published by SGI, but has not been independently verified as being</span>
-00032 <span class="comment">** compliant with the OpenGL(R) version 1.2.1 Specification.</span>
-00033 <span class="comment">**</span>
-00034 <span class="comment">*/</span>
-00035
-00036 <span class="preprocessor">#ifndef _GLXVISUALS_H</span>
-00037 <span class="preprocessor"></span><span class="preprocessor">#define _GLXVISUALS_H</span>
-00038 <span class="preprocessor"></span>
-00039 <span class="preprocessor">#include &lt;GL/glxint.h&gt;</span>
-00040
-<a name="l00042"></a><a class="code" href="structdmxGlxVisualPrivate.html">00042</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00043 <span class="keywordtype">int</span> x_visual_depth;
-00044 <span class="keywordtype">int</span> x_visual_class;
-00045 } <a class="code" href="structdmxGlxVisualPrivate.html">dmxGlxVisualPrivate</a>;
-00046
-00047 __GLXvisualConfig *GetGLXVisualConfigs(Display *dpy,
-00048 <span class="keywordtype">int</span> screen,
-00049 <span class="keywordtype">int</span> *nconfigs);
-00050
-00051 __GLXFBConfig *GetGLXFBConfigs(Display *dpy,
-00052 <span class="keywordtype">int</span> glxMajorOpcode,
-00053 <span class="keywordtype">int</span> *nconfigs);
-00054
-00055 __GLXvisualConfig *GetGLXVisualConfigsFromFBConfigs(__GLXFBConfig *fbconfigs,
-00056 <span class="keywordtype">int</span> nfbconfigs,
-00057 XVisualInfo *visuals,
-00058 <span class="keywordtype">int</span> nvisuals,
-00059 __GLXvisualConfig
-00060 *glxConfigs,
-00061 <span class="keywordtype">int</span> nGlxConfigs,
-00062 <span class="keywordtype">int</span> *nconfigs);
-00063
-00064 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8c.html
deleted file mode 100644
index db05599a6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8c.html
+++ /dev/null
@@ -1,239 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxarg.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxarg_8h-source.html">dmxarg.h</a>"</code><br>
-<code>#include &lt;stdio.h&gt;</code><br>
-<code>#include &lt;string.h&gt;</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxArg.html">_dmxArg</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__dmxArg.html">dmxArg</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxarg_8c.html#a1">dmxArgCreate</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxarg_8c.html#a2">dmxArgFree</a> (<a class="el" href="struct__dmxArg.html">dmxArg</a> a)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxarg_8c.html#a3">dmxArgAdd</a> (<a class="el" href="struct__dmxArg.html">dmxArg</a> a, const char *string)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>const char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxarg_8c.html#a4">dmxArgV</a> (<a class="el" href="struct__dmxArg.html">dmxArg</a> a, int item)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxarg_8c.html#a5">dmxArgC</a> (<a class="el" href="struct__dmxArg.html">dmxArg</a> a)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__dmxArg.html">dmxArg</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxarg_8c.html#a6">dmxArgParse</a> (const char *string)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Generic comma-delimited argument processing.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxarg.c::dmxArgAdd" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxArgAdd </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__dmxArg.html">dmxArg</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>a</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>string</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Add the <em>string</em> as the next argument in the <em>dmxArg</em> object. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxarg.c::dmxArgC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxArgC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__dmxArg.html">dmxArg</a>&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>a</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the number of arguments in the <em>dmxArg</em> object. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxarg.c::dmxArgCreate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__dmxArg.html">dmxArg</a> dmxArgCreate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create an (externally opaque) <em>dmxArg</em> object. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxarg.c::dmxArgFree" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxArgFree </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__dmxArg.html">dmxArg</a>&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>a</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free the specified <em>dmxArg</em> object. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxarg.c::dmxArgParse" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__dmxArg.html">dmxArg</a> dmxArgParse </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>string</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Parse a string into arguments delimited by commas. Return a new <em>dmxArg</em> object containing the arguments. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxarg.c::dmxArgV" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const char* dmxArgV </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__dmxArg.html">dmxArg</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>a</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>item</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the argument number <em>item</em> in the <em>dmxArg</em> object. Arguments are 0 based. NULL will be returned for values less than 0 or equal to or greater than the number of arguments in the object. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8h-source.html
deleted file mode 100644
index 1f2fbce39..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8h-source.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxarg.h</h1><a href="dmxarg_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXARG_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXARG_H_</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__dmxArg.html">_dmxArg</a> *<a class="code" href="struct__dmxArg.html">dmxArg</a>;
-00042
-00043 <span class="keyword">extern</span> <a class="code" href="struct__dmxArg.html">dmxArg</a> <a class="code" href="dmxarg_8c.html#a1">dmxArgCreate</a>(<span class="keywordtype">void</span>);
-00044 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxarg_8c.html#a2">dmxArgFree</a>(<a class="code" href="struct__dmxArg.html">dmxArg</a> a);
-00045 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxarg_8c.html#a3">dmxArgAdd</a>(<a class="code" href="struct__dmxArg.html">dmxArg</a> a, <span class="keyword">const</span> <span class="keywordtype">char</span> *string);
-00046 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="dmxarg_8c.html#a4">dmxArgV</a>(<a class="code" href="struct__dmxArg.html">dmxArg</a> a, <span class="keywordtype">int</span> item);
-00047 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxarg_8c.html#a5">dmxArgC</a>(<a class="code" href="struct__dmxArg.html">dmxArg</a> a);
-00048 <span class="keyword">extern</span> <a class="code" href="struct__dmxArg.html">dmxArg</a> <a class="code" href="dmxarg_8c.html#a6">dmxArgParse</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *string);
-00049
-00050 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8h.html
deleted file mode 100644
index 41fd707e9..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxarg_8h.html
+++ /dev/null
@@ -1,235 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxarg.h File Reference</h1>
-<p>
-<a href="dmxarg_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__dmxArg.html">dmxArg</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxarg_8h.html#a1">dmxArgCreate</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxarg_8h.html#a2">dmxArgFree</a> (<a class="el" href="struct__dmxArg.html">dmxArg</a> a)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxarg_8h.html#a3">dmxArgAdd</a> (<a class="el" href="struct__dmxArg.html">dmxArg</a> a, const char *string)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>const char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxarg_8h.html#a4">dmxArgV</a> (<a class="el" href="struct__dmxArg.html">dmxArg</a> a, int item)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxarg_8h.html#a5">dmxArgC</a> (<a class="el" href="struct__dmxArg.html">dmxArg</a> a)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__dmxArg.html">dmxArg</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxarg_8h.html#a6">dmxArgParse</a> (const char *string)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to argument handling functions. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxarg_8c.html">dmxarg.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxarg.h::dmxArgAdd" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxArgAdd </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__dmxArg.html">dmxArg</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>a</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>string</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Add the <em>string</em> as the next argument in the <em>dmxArg</em> object. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxarg.h::dmxArgC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxArgC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__dmxArg.html">dmxArg</a>&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>a</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the number of arguments in the <em>dmxArg</em> object. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxarg.h::dmxArgCreate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__dmxArg.html">dmxArg</a> dmxArgCreate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create an (externally opaque) <em>dmxArg</em> object. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxarg.h::dmxArgFree" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxArgFree </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__dmxArg.html">dmxArg</a>&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>a</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free the specified <em>dmxArg</em> object. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxarg.h::dmxArgParse" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__dmxArg.html">dmxArg</a> dmxArgParse </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>string</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Parse a string into arguments delimited by commas. Return a new <em>dmxArg</em> object containing the arguments. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxarg.h::dmxArgV" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const char* dmxArgV </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__dmxArg.html">dmxArg</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>a</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>item</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the argument number <em>item</em> in the <em>dmxArg</em> object. Arguments are 0 based. NULL will be returned for values less than 0 or equal to or greater than the number of arguments in the object. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8c.html
deleted file mode 100644
index 1fde71a99..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8c.html
+++ /dev/null
@@ -1,427 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxbackend.c File Reference</h1><code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxbackend_8h-source.html">dmxbackend.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcommon_8h-source.html">dmxcommon.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxconsole_8h-source.html">dmxconsole.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcursor_8h-source.html">dmxcursor.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxprop_8h-source.html">dmxprop.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcb_8h-source.html">dmxcb.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxevents_8h-source.html">dmxevents.h</a>"</code><br>
-<code>#include "<a class="el" href="ChkNotMaskEv_8h-source.html">ChkNotMaskEv.h</a>"</code><br>
-<code>#include "inputstr.h"</code><br>
-<code>#include "input.h"</code><br>
-<code>#include "keysym.h"</code><br>
-<code>#include "mipointer.h"</code><br>
-<code>#include "scrnintstr.h"</code><br>
-<code>#include "windowstr.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html">_myPrivate</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8c.html#a12">dmxBackendCreatePrivate</a> (DeviceIntPtr pDevice)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8c.html#a13">dmxBackendDestroyPrivate</a> (pointer private)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8c.html#a24">dmxBackendUpdatePosition</a> (pointer private, int x, int y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8c.html#a25">dmxBackendCollectEvents</a> (DevicePtr pDev, dmxMotionProcPtr motion, dmxEnqueueProcPtr enqueue, dmxCheckSpecialProcPtr checkspecial, DMXBlockType block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8c.html#a26">dmxBackendProcessInput</a> (pointer private)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8c.html#a29">dmxBackendLateReInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8c.html#a30">dmxBackendInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8c.html#a31">dmxBackendMouGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8c.html#a32">dmxBackendKbdGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8c.html#a33">dmxBackendFunctions</a> (pointer private, DMXFunctionType function)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-These routines support taking input from devices on the backend (output) displays. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxcommon_8c.html">dmxcommon.c</a>.</dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a25" doxytag="dmxbackend.c::dmxBackendCollectEvents" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendCollectEvents </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>dmxMotionProcPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>motion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>dmxEnqueueProcPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>enqueue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>dmxCheckSpecialProcPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>checkspecial</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXBlockType&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get events from the X queue on the backend servers and put the events into the DMX event queue. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxbackend.c::dmxBackendCreatePrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer dmxBackendCreatePrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDevice</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create and return a private data structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxbackend.c::dmxBackendDestroyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendDestroyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>private</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy the private data structure. No checking is performed to verify that the structure was actually created by <a class="el" href="dmxbackend_8h.html#a0">dmxBackendCreatePrivate</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a33" doxytag="dmxbackend.c::dmxBackendFunctions" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxBackendFunctions </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>private</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXFunctionType&nbsp;</td>
- <td class="mdname" nowrap> <em>function</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Process #DMXFunctionType functions. The only function handled here is to acknowledge a pending server shutdown. </td>
- </tr>
-</table>
-<a class="anchor" name="a30" doxytag="dmxbackend.c::dmxBackendInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialized the backend device described by <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a32" doxytag="dmxbackend.c::dmxBackendKbdGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendKbdGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get information about the backend keyboard (for initialization). </td>
- </tr>
-</table>
-<a class="anchor" name="a29" doxytag="dmxbackend.c::dmxBackendLateReInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendLateReInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Re-initialized the backend device described by <em>pDev</em> (after a reconfig). </td>
- </tr>
-</table>
-<a class="anchor" name="a31" doxytag="dmxbackend.c::dmxBackendMouGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendMouGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get information about the backend pointer (for initialization). </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="dmxbackend.c::dmxBackendProcessInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendProcessInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>private</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Called after input events are processed from the DMX queue. No event processing actually takes place here, but this is a convenient place to update the pointer. </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="dmxbackend.c::dmxBackendUpdatePosition" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendUpdatePosition </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>private</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is called from #dmxCoreMotion for each motion event. #x and #y are global coordinants. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8h-source.html
deleted file mode 100644
index 9b58dac3e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8h-source.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxbackend.h</h1><a href="dmxbackend_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00039 <span class="preprocessor">#ifndef _DMXBACKEND_H_</span>
-00040 <span class="preprocessor"></span><span class="preprocessor">#define _DMXBACKEND_H_</span>
-00041 <span class="preprocessor"></span>
-00042 <span class="keyword">extern</span> pointer <a class="code" href="dmxbackend_8c.html#a12">dmxBackendCreatePrivate</a>(DeviceIntPtr pDevice);
-00043 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxbackend_8c.html#a13">dmxBackendDestroyPrivate</a>(pointer <span class="keyword">private</span>);
-00044 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxbackend_8c.html#a30">dmxBackendInit</a>(DevicePtr pDev);
-00045 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxbackend_8c.html#a29">dmxBackendLateReInit</a>(DevicePtr pDev);
-00046 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxbackend_8c.html#a31">dmxBackendMouGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00047 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxbackend_8c.html#a32">dmxBackendKbdGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00048 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxbackend_8c.html#a25">dmxBackendCollectEvents</a>(DevicePtr pDev,
-00049 dmxMotionProcPtr motion,
-00050 dmxEnqueueProcPtr enqueue,
-00051 dmxCheckSpecialProcPtr checkspecial,
-00052 DMXBlockType block);
-00053 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxbackend_8c.html#a26">dmxBackendProcessInput</a>(pointer <span class="keyword">private</span>);
-00054 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxbackend_8c.html#a33">dmxBackendFunctions</a>(pointer <span class="keyword">private</span>, DMXFunctionType function);
-00055 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxbackend_8c.html#a24">dmxBackendUpdatePosition</a>(pointer <span class="keyword">private</span>, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
-00056
-00057 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8h.html
deleted file mode 100644
index 2a601be0c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxbackend_8h.html
+++ /dev/null
@@ -1,411 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxbackend.h File Reference</h1>
-<p>
-<a href="dmxbackend_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8h.html#a0">dmxBackendCreatePrivate</a> (DeviceIntPtr pDevice)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8h.html#a1">dmxBackendDestroyPrivate</a> (pointer private)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8h.html#a2">dmxBackendInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8h.html#a3">dmxBackendLateReInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8h.html#a4">dmxBackendMouGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8h.html#a5">dmxBackendKbdGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8h.html#a6">dmxBackendCollectEvents</a> (DevicePtr pDev, dmxMotionProcPtr motion, dmxEnqueueProcPtr enqueue, dmxCheckSpecialProcPtr checkspecial, DMXBlockType block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8h.html#a7">dmxBackendProcessInput</a> (pointer private)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8h.html#a8">dmxBackendFunctions</a> (pointer private, DMXFunctionType function)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxbackend_8h.html#a9">dmxBackendUpdatePosition</a> (pointer private, int x, int y)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to backend input device support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxbackend_8c.html">dmxbackend.c</a> <p>
-<a class="el" href="dmxcommon_8c.html">dmxcommon.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a6" doxytag="dmxbackend.h::dmxBackendCollectEvents" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendCollectEvents </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>dmxMotionProcPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>motion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>dmxEnqueueProcPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>enqueue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>dmxCheckSpecialProcPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>checkspecial</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXBlockType&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get events from the X queue on the backend servers and put the events into the DMX event queue. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxbackend.h::dmxBackendCreatePrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer dmxBackendCreatePrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDevice</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create and return a private data structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxbackend.h::dmxBackendDestroyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendDestroyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>private</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy the private data structure. No checking is performed to verify that the structure was actually created by <a class="el" href="dmxbackend_8h.html#a0">dmxBackendCreatePrivate</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxbackend.h::dmxBackendFunctions" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxBackendFunctions </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>private</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXFunctionType&nbsp;</td>
- <td class="mdname" nowrap> <em>function</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Process #DMXFunctionType functions. The only function handled here is to acknowledge a pending server shutdown. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxbackend.h::dmxBackendInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialized the backend device described by <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxbackend.h::dmxBackendKbdGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendKbdGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get information about the backend keyboard (for initialization). </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxbackend.h::dmxBackendLateReInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendLateReInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Re-initialized the backend device described by <em>pDev</em> (after a reconfig). </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxbackend.h::dmxBackendMouGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendMouGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get information about the backend pointer (for initialization). </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxbackend.h::dmxBackendProcessInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendProcessInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>private</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Called after input events are processed from the DMX queue. No event processing actually takes place here, but this is a convenient place to update the pointer. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxbackend.h::dmxBackendUpdatePosition" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBackendUpdatePosition </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>private</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is called from #dmxCoreMotion for each motion event. #x and #y are global coordinants. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8c.html
deleted file mode 100644
index 072c3ff06..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8c.html
+++ /dev/null
@@ -1,184 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcb.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcb_8h-source.html">dmxcb.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinput_8h-source.html">dmxinput.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcb_8c.html#a7">dmxSetWidthHeight</a> (int width, int height)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcb_8c.html#a8">dmxComputeWidthHeight</a> (<a class="el" href="dmxcb_8h.html#a7">DMXRecomputeFlag</a> flag)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcb_8c.html#a9">dmxConnectionBlockCallback</a> (void)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcb_8c.html#a5">dmxGlobalWidth</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcb_8c.html#a6">dmxGlobalHeight</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This code queries and modifies the connection block.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a8" doxytag="dmxcb.c::dmxComputeWidthHeight" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxComputeWidthHeight </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="dmxcb_8h.html#a7">DMXRecomputeFlag</a>&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>flag</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Computes the global bounding box for DMX. This may be larger than the one computed by Xinerama because of the DMX configuration file. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxcb.c::dmxConnectionBlockCallback" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConnectionBlockCallback </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-A callback routine that hooks into Xinerama and provides a convenient place to print summary log information during server startup. This routine does not modify any values. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxcb.c::dmxSetWidthHeight" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSetWidthHeight </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>width</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>height</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-We may want the wall dimensions to be different from the bounding box dimensions that Xinerama computes, so save those and update them here. </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a6" doxytag="dmxcb.c::dmxGlobalHeight" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxcb_8h.html#a1">dmxGlobalHeight</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-The cursor position, in global coordinates. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxcb.c::dmxGlobalWidth" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxcb_8h.html#a0">dmxGlobalWidth</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-The cursor position, in global coordinates. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8h-source.html
deleted file mode 100644
index ff57d4982..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8h-source.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcb.h</h1><a href="dmxcb_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001,2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00039 <span class="preprocessor">#ifndef _DMXCB_H_</span>
-00040 <span class="preprocessor"></span><span class="preprocessor">#define _DMXCB_H_</span>
-00041 <span class="preprocessor"></span>
-<a name="l00042"></a><a class="code" href="dmxcb_8h.html#a0">00042</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxcb_8c.html#a5">dmxGlobalWidth</a>, <a class="code" href="dmxcb_8c.html#a6">dmxGlobalHeight</a>;
-00043
-<a name="l00046"></a><a class="code" href="dmxcb_8h.html#a7">00046</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00047 DMX_RECOMPUTE_BOUNDING_BOX,
-00048 DMX_NO_RECOMPUTE_BOUNDING_BOX
-00049 } <a class="code" href="dmxcb_8h.html#a7">DMXRecomputeFlag</a>;
-00050
-00051 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcb_8c.html#a7">dmxSetWidthHeight</a>(<span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);
-00052 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcb_8c.html#a8">dmxComputeWidthHeight</a>(DMXRecomputeFlag flag);
-00053 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcb_8c.html#a9">dmxConnectionBlockCallback</a>(<span class="keywordtype">void</span>);
-00054 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8h.html
deleted file mode 100644
index 78eaf4f3a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcb_8h.html
+++ /dev/null
@@ -1,209 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcb.h File Reference</h1>
-<p>
-<a href="dmxcb_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcb_8h.html#a7">DMXRecomputeFlag</a> </td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcb_8h.html#a4">dmxSetWidthHeight</a> (int width, int height)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcb_8h.html#a5">dmxComputeWidthHeight</a> (<a class="el" href="dmxcb_8h.html#a7">DMXRecomputeFlag</a> flag)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcb_8h.html#a6">dmxConnectionBlockCallback</a> (void)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcb_8h.html#a0">dmxGlobalWidth</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcb_8h.html#a1">dmxGlobalHeight</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Header file for connection block functions. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxcb_8c.html">dmxcb.c</a>.</dd></dl>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="a7" doxytag="dmxcb.h::DMXRecomputeFlag" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> enum <a class="el" href="dmxcb_8h.html#a7">DMXRecomputeFlag</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-<a class="el" href="dmxcb_8h.html#a5">dmxComputeWidthHeight</a> can either recompute the global bounding box or not. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a5" doxytag="dmxcb.h::dmxComputeWidthHeight" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxComputeWidthHeight </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="dmxcb_8h.html#a7">DMXRecomputeFlag</a>&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>flag</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Computes the global bounding box for DMX. This may be larger than the one computed by Xinerama because of the DMX configuration file. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxcb.h::dmxConnectionBlockCallback" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConnectionBlockCallback </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-A callback routine that hooks into Xinerama and provides a convenient place to print summary log information during server startup. This routine does not modify any values. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxcb.h::dmxSetWidthHeight" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSetWidthHeight </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>width</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>height</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-We may want the wall dimensions to be different from the bounding box dimensions that Xinerama computes, so save those and update them here. </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a1" doxytag="dmxcb.h::dmxGlobalHeight" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxcb_8h.html#a1">dmxGlobalHeight</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-The cursor position, in global coordinates. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxcb.h::dmxGlobalWidth" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxcb_8h.html#a0">dmxGlobalWidth</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-The cursor position, in global coordinates. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxclient_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxclient_8h-source.html
deleted file mode 100644
index 39d1b3bc0..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxclient_8h-source.html
+++ /dev/null
@@ -1,168 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxclient.h</h1><a href="dmxclient_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright (c) 1995 X Consortium</span>
-00004 <span class="comment"> * Copyright 2004 Red Hat Inc., Durham, North Carolina.</span>
-00005 <span class="comment"> *</span>
-00006 <span class="comment"> * All Rights Reserved.</span>
-00007 <span class="comment"> *</span>
-00008 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00009 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00010 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00011 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00012 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00013 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00014 <span class="comment"> * subject to the following conditions:</span>
-00015 <span class="comment"> *</span>
-00016 <span class="comment"> * The above copyright notice and this permission notice shall be</span>
-00017 <span class="comment"> * included in all copies or substantial portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT, THE X CONSORTIUM,</span>
-00023 <span class="comment"> * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
-00024 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span>
-00025 <span class="comment"> * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span>
-00026 <span class="comment"> * OTHER DEALINGS IN THE SOFTWARE.</span>
-00027 <span class="comment"> *</span>
-00028 <span class="comment"> * Except as contained in this notice, the name of the X Consortium</span>
-00029 <span class="comment"> * shall not be used in advertising or otherwise to promote the sale,</span>
-00030 <span class="comment"> * use or other dealings in this Software without prior written</span>
-00031 <span class="comment"> * authorization from the X Consortium.</span>
-00032 <span class="comment"> */</span>
-00033
-00034 <span class="comment">/*</span>
-00035 <span class="comment"> * Derived from hw/xnest/Xnest.h by Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00036 <span class="comment"> */</span>
-00037
-00042 <span class="preprocessor">#ifndef _DMXCLIENT_H_</span>
-00043 <span class="preprocessor"></span><span class="preprocessor">#define _DMXCLIENT_H_</span>
-00044 <span class="preprocessor"></span>
-00045 <span class="preprocessor">#define GC XlibGC</span>
-00046 <span class="preprocessor"></span>
-00047 <span class="preprocessor">#ifdef _XSERVER64</span>
-00048 <span class="preprocessor"></span><span class="preprocessor">#define DMX64</span>
-00049 <span class="preprocessor"></span><span class="preprocessor">#undef _XSERVER64</span>
-00050 <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> XID64;
-00051 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> Mask64;
-00052 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> Atom64;
-00053 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> VisualID64;
-00054 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> Time64;
-00055 <span class="preprocessor">#define XID XID64</span>
-00056 <span class="preprocessor"></span><span class="preprocessor">#define Mask Mask64</span>
-00057 <span class="preprocessor"></span><span class="preprocessor">#define Atom Atom64</span>
-00058 <span class="preprocessor"></span><span class="preprocessor">#define VisualID VisualID64</span>
-00059 <span class="preprocessor"></span><span class="preprocessor">#define Time Time64</span>
-00060 <span class="preprocessor"></span><span class="keyword">typedef</span> XID Window64;
-00061 <span class="keyword">typedef</span> XID Drawable64;
-00062 <span class="keyword">typedef</span> XID Font64;
-00063 <span class="keyword">typedef</span> XID Pixmap64;
-00064 <span class="keyword">typedef</span> XID Cursor64;
-00065 <span class="keyword">typedef</span> XID Colormap64;
-00066 <span class="keyword">typedef</span> XID GContext64;
-00067 <span class="keyword">typedef</span> XID KeySym64;
-00068 <span class="preprocessor">#define Window Window64</span>
-00069 <span class="preprocessor"></span><span class="preprocessor">#define Drawable Drawable64</span>
-00070 <span class="preprocessor"></span><span class="preprocessor">#define Font Font64</span>
-00071 <span class="preprocessor"></span><span class="preprocessor">#define Pixmap Pixmap64</span>
-00072 <span class="preprocessor"></span><span class="preprocessor">#define Cursor Cursor64</span>
-00073 <span class="preprocessor"></span><span class="preprocessor">#define Colormap Colormap64</span>
-00074 <span class="preprocessor"></span><span class="preprocessor">#define GContext GContext64</span>
-00075 <span class="preprocessor"></span><span class="preprocessor">#define KeySym KeySym64</span>
-00076 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00077 <span class="preprocessor"></span>
-00078 <span class="preprocessor">#include &lt;X11/Xlib.h&gt;</span>
-00079 <span class="preprocessor">#include &lt;X11/Xlibint.h&gt;</span> <span class="comment">/* For _XExtension */</span>
-00080 <span class="preprocessor">#include &lt;X11/X.h&gt;</span> <span class="comment">/* from glxserver.h */</span>
-00081 <span class="preprocessor">#include &lt;X11/Xmd.h&gt;</span> <span class="comment">/* from glxserver.h */</span>
-00082 <span class="preprocessor">#include &lt;X11/Xproto.h&gt;</span>
-00083 <span class="preprocessor">#include &lt;X11/Xutil.h&gt;</span>
-00084 <span class="preprocessor">#include &lt;X11/Xatom.h&gt;</span>
-00085 <span class="preprocessor">#include &lt;X11/cursorfont.h&gt;</span>
-00086 <span class="preprocessor">#include &lt;X11/Xmu/SysUtil.h&gt;</span> <span class="comment">/* For XmuSnprintf */</span>
-00087
-00088 <span class="preprocessor">#ifdef SHAPE</span>
-00089 <span class="preprocessor"></span><span class="preprocessor">#include &lt;X11/extensions/shape.h&gt;</span>
-00090 <span class="preprocessor">#endif</span>
-00091 <span class="preprocessor"></span>
-00092 <span class="preprocessor">#ifdef RENDER</span>
-00093 <span class="preprocessor"></span><span class="preprocessor">#include &lt;X11/extensions/Xrender.h&gt;</span>
-00094 <span class="preprocessor">#undef PictFormatType</span>
-00095 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00096 <span class="preprocessor"></span>
-00097 <span class="preprocessor">#ifdef XKB</span>
-00098 <span class="preprocessor"></span><span class="preprocessor">#include &lt;X11/extensions/XKB.h&gt;</span>
-00099 <span class="preprocessor">#include &lt;X11/extensions/XKBstr.h&gt;</span>
-00100 <span class="preprocessor">#endif</span>
-00101 <span class="preprocessor"></span>
-00102 <span class="preprocessor">#ifdef XINPUT</span>
-00103 <span class="preprocessor"></span><span class="preprocessor">#include &lt;X11/extensions/XI.h&gt;</span>
-00104 <span class="preprocessor">#endif</span>
-00105 <span class="preprocessor"></span>
-00106 <span class="comment">/* Always include these, since we query them even if we don't export XINPUT. */</span>
-00107 <span class="preprocessor">#include &lt;X11/extensions/XInput.h&gt;</span> <span class="comment">/* For XDevice */</span>
-00108 <span class="preprocessor">#include &lt;X11/extensions/Xext.h&gt;</span>
-00109
-00110 <span class="preprocessor">#undef GC</span>
-00111 <span class="preprocessor"></span>
-00112 <span class="preprocessor">#ifdef DMX64</span>
-00113 <span class="preprocessor"></span><span class="preprocessor">#define _XSERVER64</span>
-00114 <span class="preprocessor"></span><span class="preprocessor">#undef XID</span>
-00115 <span class="preprocessor"></span><span class="preprocessor">#undef Mask</span>
-00116 <span class="preprocessor"></span><span class="preprocessor">#undef Atom</span>
-00117 <span class="preprocessor"></span><span class="preprocessor">#undef VisualID</span>
-00118 <span class="preprocessor"></span><span class="preprocessor">#undef Time</span>
-00119 <span class="preprocessor"></span><span class="preprocessor">#undef Window</span>
-00120 <span class="preprocessor"></span><span class="preprocessor">#undef Drawable</span>
-00121 <span class="preprocessor"></span><span class="preprocessor">#undef Font</span>
-00122 <span class="preprocessor"></span><span class="preprocessor">#undef Pixmap</span>
-00123 <span class="preprocessor"></span><span class="preprocessor">#undef Cursor</span>
-00124 <span class="preprocessor"></span><span class="preprocessor">#undef Colormap</span>
-00125 <span class="preprocessor"></span><span class="preprocessor">#undef GContext</span>
-00126 <span class="preprocessor"></span><span class="preprocessor">#undef KeySym</span>
-00127 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00128 <span class="preprocessor"></span>
-00129 <span class="comment">/* These are in exglobals.h, but that conflicts with X11/extensions/XKBsrv.h */</span>
-00130 <span class="keyword">extern</span> <span class="keywordtype">int</span> ProximityIn;
-00131 <span class="keyword">extern</span> <span class="keywordtype">int</span> ProximityOut;
-00132 <span class="keyword">extern</span> <span class="keywordtype">int</span> DeviceValuator;
-00133 <span class="keyword">extern</span> <span class="keywordtype">int</span> DeviceMotionNotify;
-00134 <span class="keyword">extern</span> <span class="keywordtype">int</span> DeviceFocusIn;
-00135 <span class="keyword">extern</span> <span class="keywordtype">int</span> DeviceFocusOut;
-00136 <span class="keyword">extern</span> <span class="keywordtype">int</span> DeviceStateNotify;
-00137 <span class="keyword">extern</span> <span class="keywordtype">int</span> DeviceMappingNotify;
-00138 <span class="keyword">extern</span> <span class="keywordtype">int</span> ChangeDeviceNotify;
-00139
-00140 <span class="comment">/* Some protocol gets included last, after undefines. */</span>
-00141 <span class="preprocessor">#include &lt;X11/XKBlib.h&gt;</span>
-00142 <span class="preprocessor">#ifdef XKB</span>
-00143 <span class="preprocessor"></span><span class="preprocessor">#include &lt;X11/extensions/XKBproto.h&gt;</span>
-00144 <span class="preprocessor">#define XKB_IN_SERVER</span>
-00145 <span class="preprocessor"></span><span class="preprocessor">#include &lt;X11/extensions/XKBsrv.h&gt;</span>
-00146 <span class="preprocessor">#undef XPointer</span>
-00147 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00148 <span class="preprocessor"></span><span class="preprocessor">#include &lt;X11/extensions/XIproto.h&gt;</span>
-00149
-00150 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxclient_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxclient_8h.html
deleted file mode 100644
index f5e62f572..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxclient_8h.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxclient.h File Reference</h1><code>#include &lt;X11/Xlib.h&gt;</code><br>
-<code>#include &lt;X11/Xlibint.h&gt;</code><br>
-<code>#include &lt;X11/X.h&gt;</code><br>
-<code>#include &lt;X11/Xmd.h&gt;</code><br>
-<code>#include &lt;X11/Xproto.h&gt;</code><br>
-<code>#include &lt;X11/Xutil.h&gt;</code><br>
-<code>#include &lt;X11/Xatom.h&gt;</code><br>
-<code>#include &lt;X11/cursorfont.h&gt;</code><br>
-<code>#include &lt;X11/Xmu/SysUtil.h&gt;</code><br>
-<code>#include &lt;X11/extensions/shape.h&gt;</code><br>
-<code>#include &lt;X11/extensions/Xrender.h&gt;</code><br>
-<code>#include &lt;X11/extensions/XKB.h&gt;</code><br>
-<code>#include &lt;X11/extensions/XKBstr.h&gt;</code><br>
-<code>#include &lt;X11/extensions/XI.h&gt;</code><br>
-<code>#include &lt;X11/extensions/XInput.h&gt;</code><br>
-<code>#include &lt;X11/extensions/Xext.h&gt;</code><br>
-<code>#include &lt;X11/XKBlib.h&gt;</code><br>
-<code>#include &lt;X11/extensions/XKBproto.h&gt;</code><br>
-<code>#include &lt;X11/extensions/XKBsrv.h&gt;</code><br>
-<code>#include &lt;X11/extensions/XIproto.h&gt;</code><br>
-
-<p>
-<a href="dmxclient_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file includes all client-side include files with proper wrapping. <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8c.html
deleted file mode 100644
index 40f62a633..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8c.html
+++ /dev/null
@@ -1,265 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcmap.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcmap_8h-source.html">dmxcmap.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxvisual_8h-source.html">dmxvisual.h</a>"</code><br>
-<code>#include "micmap.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8c.html#a2">dmxBECreateColormap</a> (ColormapPtr pColormap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8c.html#a3">dmxCreateColormap</a> (ColormapPtr pColormap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8c.html#a4">dmxBEFreeColormap</a> (ColormapPtr pColormap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8c.html#a5">dmxDestroyColormap</a> (ColormapPtr pColormap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8c.html#a6">dmxInstallColormap</a> (ColormapPtr pColormap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8c.html#a7">dmxStoreColors</a> (ColormapPtr pColormap, int ndef, xColorItem *pdef)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8c.html#a8">dmxCreateDefColormap</a> (ScreenPtr pScreen)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Colormap support.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a2" doxytag="dmxcmap.c::dmxBECreateColormap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBECreateColormap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ColormapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pColormap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create <em>pColormap</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxcmap.c::dmxBEFreeColormap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreeColormap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ColormapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pColormap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy <em>pColormap</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxcmap.c::dmxCreateColormap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxCreateColormap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ColormapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pColormap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create colormap on back-end server associated with <em>pColormap's</em> screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxcmap.c::dmxCreateDefColormap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxCreateDefColormap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create the DMX server's default colormap. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxcmap.c::dmxDestroyColormap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDestroyColormap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ColormapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pColormap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy colormap on back-end server associated with <em>pColormap's</em> screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxcmap.c::dmxInstallColormap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInstallColormap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ColormapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pColormap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Install colormap on back-end server associated with <em>pColormap's</em> screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxcmap.c::dmxStoreColors" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxStoreColors </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ColormapPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pColormap</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>ndef</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xColorItem *&nbsp;</td>
- <td class="mdname" nowrap> <em>pdef</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Store colors in <em>pColormap</em> on back-end server associated with <em>pColormap's</em> screen. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8h-source.html
deleted file mode 100644
index b3a9b291a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8h-source.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcmap.h</h1><a href="dmxcmap_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002-2004 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef DMXCMAP_H</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define DMXCMAP_H</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="preprocessor">#include "colormapst.h"</span>
-00042
-<a name="l00044"></a><a class="code" href="struct__dmxColormapPriv.html">00044</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__dmxColormapPriv.html">_dmxColormapPriv</a> {
-00045 Colormap cmap;
-00046 } <a class="code" href="struct__dmxColormapPriv.html">dmxColormapPrivRec</a>, *<a class="code" href="struct__dmxColormapPriv.html">dmxColormapPrivPtr</a>;
-00047
-00048
-00049 <span class="keyword">extern</span> Bool <a class="code" href="dmxcmap_8c.html#a3">dmxCreateColormap</a>(ColormapPtr pColormap);
-00050 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcmap_8c.html#a5">dmxDestroyColormap</a>(ColormapPtr pColormap);
-00051 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcmap_8c.html#a6">dmxInstallColormap</a>(ColormapPtr pColormap);
-00052 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcmap_8c.html#a7">dmxStoreColors</a>(ColormapPtr pColormap, <span class="keywordtype">int</span> ndef, xColorItem *pdef);
-00053
-00054 <span class="keyword">extern</span> Bool <a class="code" href="dmxcmap_8c.html#a8">dmxCreateDefColormap</a>(ScreenPtr pScreen);
-00055
-00056 <span class="keyword">extern</span> Bool <a class="code" href="dmxcmap_8c.html#a2">dmxBECreateColormap</a>(ColormapPtr pColormap);
-00057 <span class="keyword">extern</span> Bool <a class="code" href="dmxcmap_8c.html#a4">dmxBEFreeColormap</a>(ColormapPtr pColormap);
-00058
-<a name="l00060"></a><a class="code" href="dmxcmap_8h.html#a4">00060</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxcmap_8h.html#a4">dmxColormapPrivateIndex</a>;
-00061
-<a name="l00063"></a><a class="code" href="dmxcmap_8h.html#a0">00063</a> <span class="preprocessor">#define DMX_SET_COLORMAP_PRIV(_pCMap, _pCMapPriv) \</span>
-00064 <span class="preprocessor"> (_pCMap)-&gt;devPrivates[dmxColormapPrivateIndex].ptr \</span>
-00065 <span class="preprocessor"> = (pointer)(_pCMapPriv);</span>
-00066 <span class="preprocessor"></span>
-<a name="l00068"></a><a class="code" href="dmxcmap_8h.html#a1">00068</a> <span class="preprocessor">#define DMX_GET_COLORMAP_PRIV(_pCMap) \</span>
-00069 <span class="preprocessor"> (dmxColormapPrivPtr)(_pCMap)-&gt;devPrivates[dmxColormapPrivateIndex].ptr</span>
-00070 <span class="preprocessor"></span>
-00071 <span class="preprocessor">#endif </span><span class="comment">/* DMXCMAP_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8h.html
deleted file mode 100644
index f22a97b0e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcmap_8h.html
+++ /dev/null
@@ -1,408 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcmap.h File Reference</h1><code>#include "colormapst.h"</code><br>
-
-<p>
-<a href="dmxcmap_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxColormapPriv.html">_dmxColormapPriv</a></td></tr>
-
-<tr><td colspan=2><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8h.html#a0">DMX_SET_COLORMAP_PRIV</a>(_pCMap, _pCMapPriv)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8h.html#a1">DMX_GET_COLORMAP_PRIV</a>(_pCMap)&nbsp;&nbsp;&nbsp;(<a class="el" href="struct__dmxColormapPriv.html">dmxColormapPrivPtr</a>)(_pCMap)-&gt;devPrivates[<a class="el" href="dmxscrinit_8c.html#a6">dmxColormapPrivateIndex</a>].ptr</td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxColormapPriv.html">_dmxColormapPriv</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8h.html#a2">dmxColormapPrivRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxColormapPriv.html">_dmxColormapPriv</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8h.html#a3">dmxColormapPrivPtr</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8h.html#a5">dmxCreateColormap</a> (ColormapPtr pColormap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8h.html#a6">dmxDestroyColormap</a> (ColormapPtr pColormap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8h.html#a7">dmxInstallColormap</a> (ColormapPtr pColormap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8h.html#a8">dmxStoreColors</a> (ColormapPtr pColormap, int ndef, xColorItem *pdef)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8h.html#a9">dmxCreateDefColormap</a> (ScreenPtr pScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8h.html#a10">dmxBECreateColormap</a> (ColormapPtr pColormap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8h.html#a11">dmxBEFreeColormap</a> (ColormapPtr pColormap)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcmap_8h.html#a4">dmxColormapPrivateIndex</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Header file for colormap support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxcmap_8c.html">dmxcmap.c</a>.</dd></dl>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="a1" doxytag="dmxcmap.h::DMX_GET_COLORMAP_PRIV" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_GET_COLORMAP_PRIV</td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">_pCMap&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(<a class="el" href="struct__dmxColormapPriv.html">dmxColormapPrivPtr</a>)(_pCMap)-&gt;devPrivates[<a class="el" href="dmxscrinit_8c.html#a6">dmxColormapPrivateIndex</a>].ptr
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get colormap private structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxcmap.h::DMX_SET_COLORMAP_PRIV" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_SET_COLORMAP_PRIV</td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">_pCMap, <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>_pCMapPriv&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-<b>Value:</b><div class="fragment"><pre>(_pCMap)-&gt;devPrivates[<a class="code" href="dmxcmap_8h.html#a4">dmxColormapPrivateIndex</a>].ptr \
- = (pointer)(_pCMapPriv);
-</pre></div>Set colormap private structure. </td>
- </tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxcmap.h::dmxColormapPrivPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxColormapPriv.html">_dmxColormapPriv</a> * <a class="el" href="struct__dmxColormapPriv.html">dmxColormapPrivPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Colormap private area. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxcmap.h::dmxColormapPrivRec" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxColormapPriv.html">_dmxColormapPriv</a> <a class="el" href="struct__dmxColormapPriv.html">dmxColormapPrivRec</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Colormap private area. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a10" doxytag="dmxcmap.h::dmxBECreateColormap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBECreateColormap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ColormapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pColormap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create <em>pColormap</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxcmap.h::dmxBEFreeColormap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreeColormap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ColormapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pColormap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy <em>pColormap</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxcmap.h::dmxCreateColormap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxCreateColormap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ColormapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pColormap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create colormap on back-end server associated with <em>pColormap's</em> screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxcmap.h::dmxCreateDefColormap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxCreateDefColormap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create the DMX server's default colormap. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxcmap.h::dmxDestroyColormap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDestroyColormap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ColormapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pColormap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy colormap on back-end server associated with <em>pColormap's</em> screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxcmap.h::dmxInstallColormap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInstallColormap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ColormapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pColormap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Install colormap on back-end server associated with <em>pColormap's</em> screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxcmap.h::dmxStoreColors" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxStoreColors </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ColormapPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pColormap</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>ndef</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xColorItem *&nbsp;</td>
- <td class="mdname" nowrap> <em>pdef</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Store colors in <em>pColormap</em> on back-end server associated with <em>pColormap's</em> screen. </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a4" doxytag="dmxcmap.h::dmxColormapPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxscrinit_8c.html#a6">dmxColormapPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for Colormaps </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8c.html
deleted file mode 100644
index 3e0459c12..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8c.html
+++ /dev/null
@@ -1,701 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcommon.c File Reference</h1><code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcommon_8h-source.html">dmxcommon.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxconsole_8h-source.html">dmxconsole.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxprop_8h-source.html">dmxprop.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxmap_8h-source.html">dmxmap.h</a>"</code><br>
-<code>#include "inputstr.h"</code><br>
-<code>#include "input.h"</code><br>
-<code>#include "keysym.h"</code><br>
-<code>#include "mipointer.h"</code><br>
-<code>#include "scrnintstr.h"</code><br>
-<code>#include &lt;unistd.h&gt;</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html">_myPrivate</a></td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__myPrivate.html">_myPrivate</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a4">myPrivate</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a9">dmxCommonKbdCtrl</a> (DevicePtr pDev, KeybdCtrl *ctrl)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a10">dmxCommonMouCtrl</a> (DevicePtr pDev, PtrCtrl *ctrl)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a11">dmxCommonKbdBell</a> (DevicePtr pDev, int percent, int volume, int pitch, int duration)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a12">dmxCommonKbdGetMap</a> (DevicePtr pDev, KeySymsPtr pKeySyms, CARD8 *pModMap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a13">dmxCommonKbdGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a14">dmxCommonKbdOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a15">dmxCommonKbdOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a16">dmxCommonOthOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a17">dmxCommonOthOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a18">dmxCommonOthGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a19">dmxCommonMouGetMap</a> (DevicePtr pDev, unsigned char *map, int *nButtons)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a23">dmxCommonMouOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a24">dmxCommonMouOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a25">dmxFindPointerScreen</a> (int x, int y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a26">dmxCommonCopyPrivate</a> (DeviceIntPtr pDevice)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a27">dmxCommonSaveState</a> (pointer private)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8c.html#a28">dmxCommonRestoreState</a> (pointer private)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file implements common routines used by the backend and console input devices.<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a4" doxytag="dmxcommon.c::myPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__myPrivate.html">_myPrivate</a> <a class="el" href="struct__myPrivate.html">myPrivate</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Each device has a private area that is visible only from inside the driver code. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a26" doxytag="dmxcommon.c::dmxCommonCopyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer dmxCommonCopyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDevice</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Returns a pointer to the private area for the device that comes just prior to <em>pDevice</em> in the current <em>dmxInput</em> device list. This is used as the private area for the current device in some situations (e.g., when a keyboard and mouse form a pair that should share the same private area). If the requested private area cannot be located, then NULL is returned. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxcommon.c::dmxCommonKbdBell" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonKbdBell </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>percent</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>volume</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pitch</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>duration</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Sound they keyboard bell. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxcommon.c::dmxCommonKbdCtrl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonKbdCtrl </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeybdCtrl *&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Update the keyboard control. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxcommon.c::dmxCommonKbdGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonKbdGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill in the XKEYBOARD parts of the <em>info</em> structure for the specified <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxcommon.c::dmxCommonKbdGetMap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonKbdGetMap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeySymsPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pKeySyms</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CARD8 *&nbsp;</td>
- <td class="mdname" nowrap> <em>pModMap</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get the keyboard mapping. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmxcommon.c::dmxCommonKbdOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonKbdOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxcommon.c::dmxCommonKbdOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxCommonKbdOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxcommon.c::dmxCommonMouCtrl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonMouCtrl </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PtrCtrl *&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Update the mouse control. </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="dmxcommon.c::dmxCommonMouGetMap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonMouGetMap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned char *&nbsp;</td>
- <td class="mdname" nowrap> <em>map</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>nButtons</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Obtain the mouse button mapping. </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="dmxcommon.c::dmxCommonMouOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonMouOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off. </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxcommon.c::dmxCommonMouOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxCommonMouOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxcommon.c::dmxCommonOthGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonOthGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxcommon.c::dmxCommonOthOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonOthOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxcommon.c::dmxCommonOthOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxCommonOthOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a28" doxytag="dmxcommon.c::dmxCommonRestoreState" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonRestoreState </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>private</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine restores all the information saved by <a class="el" href="dmxcommon_8h.html#a28">dmxCommonSaveState</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a27" doxytag="dmxcommon.c::dmxCommonSaveState" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonSaveState </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>private</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine saves and resets some important state for the backend and console device drivers:<ul>
-<li>the modifier map is saved and set to 0 (so DMX controls the LEDs)</li><li>the key click, bell, led, and repeat masks are saved and set to the values that DMX claims to be using</li></ul>
-<p>
-This routine and <a class="el" href="dmxcommon_8h.html#a29">dmxCommonRestoreState</a> are used when the pointer enters and leaves the console window, or when the backend window is active or not active (for a full-screen window, this only happens at server startup and server shutdown). </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="dmxcommon.c::dmxFindPointerScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxFindPointerScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Given the global coordinates <em>x</em> and <em>y</em>, determine the screen with the lowest number on which those coordinates lie. If they are not on any screen, return -1. The number returned is an index into #dmxScreenInfo and is between -1 and <a class="el" href="dmxinit_8c.html#a1">dmxNumScreens</a> - 1, inclusive. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8h-source.html
deleted file mode 100644
index 72ac5378b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8h-source.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcommon.h</h1><a href="dmxcommon_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002,2003 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00039 <span class="preprocessor">#ifndef _DMXCOMMON_H_</span>
-00040 <span class="preprocessor"></span><span class="preprocessor">#define _DMXCOMMON_H_</span>
-00041 <span class="preprocessor"></span>
-00042 <span class="preprocessor">#define DMX_COMMON_OTHER \</span>
-00043 <span class="preprocessor"> Display *display; \</span>
-00044 <span class="preprocessor"> Window window; \</span>
-00045 <span class="preprocessor"> DMXScreenInfo *be; \</span>
-00046 <span class="preprocessor"> DMXLocalInputInfoPtr dmxLocal; \</span>
-00047 <span class="preprocessor"> int initPointerX; \</span>
-00048 <span class="preprocessor"> int initPointerY; \</span>
-00049 <span class="preprocessor"> long eventMask; \</span>
-00050 <span class="preprocessor"> KeybdCtrl kctrl; \</span>
-00051 <span class="preprocessor"> PtrCtrl mctrl; \</span>
-00052 <span class="preprocessor"> int kctrlset; \</span>
-00053 <span class="preprocessor"> int mctrlset; \</span>
-00054 <span class="preprocessor"> KeybdCtrl savedKctrl; \</span>
-00055 <span class="preprocessor"> XModifierKeymap *savedModMap; \</span>
-00056 <span class="preprocessor"> int stateSaved</span>
-00057 <span class="preprocessor"></span>
-00058 <span class="preprocessor">#ifdef XKB</span>
-00059 <span class="preprocessor"></span><span class="preprocessor">#define DMX_COMMON_XKB \</span>
-00060 <span class="preprocessor"> DMX_COMMON_OTHER; \</span>
-00061 <span class="preprocessor"> XkbDescPtr xkb; \</span>
-00062 <span class="preprocessor"> XkbIndicatorRec savedIndicators</span>
-00063 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-00064 <span class="preprocessor"></span><span class="preprocessor">#define DMX_COMMON_XKB DMX_COMMON_OTHER</span>
-00065 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00066 <span class="preprocessor"></span>
-00067 <span class="preprocessor">#ifdef XINPUT</span>
-00068 <span class="preprocessor"></span><span class="preprocessor">#define DMX_COMMON_PRIVATE \</span>
-00069 <span class="preprocessor"> DMX_COMMON_XKB; \</span>
-00070 <span class="preprocessor"> XDevice *xi</span>
-00071 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-00072 <span class="preprocessor"></span><span class="preprocessor">#define DMX_COMMON_PRIVATE DMX_COMMON_OTHER</span>
-00073 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00074 <span class="preprocessor"></span>
-00075 <span class="preprocessor">#define GETONLYPRIVFROMPRIVATE \</span>
-00076 <span class="preprocessor"> myPrivate *priv = private</span>
-00077 <span class="preprocessor"></span>
-00078 <span class="preprocessor">#define GETPRIVFROMPRIVATE \</span>
-00079 <span class="preprocessor"> GETONLYPRIVFROMPRIVATE; \</span>
-00080 <span class="preprocessor"> DMXInputInfo *dmxInput = &amp;dmxInputs[priv-&gt;dmxLocal-&gt;inputIdx]</span>
-00081 <span class="preprocessor"></span>
-00082 <span class="preprocessor">#define GETDMXLOCALFROMPDEVICE \</span>
-00083 <span class="preprocessor"> DevicePtr pDev = &amp;pDevice-&gt;public; \</span>
-00084 <span class="preprocessor"> DMXLocalInputInfoPtr dmxLocal = pDev-&gt;devicePrivate</span>
-00085 <span class="preprocessor"></span>
-00086 <span class="preprocessor">#define GETDMXINPUTFROMPRIV \</span>
-00087 <span class="preprocessor"> DMXInputInfo *dmxInput = &amp;dmxInputs[priv-&gt;dmxLocal-&gt;inputIdx]</span>
-00088 <span class="preprocessor"></span>
-00089 <span class="preprocessor">#define GETDMXINPUTFROMPDEVICE \</span>
-00090 <span class="preprocessor"> GETDMXLOCALFROMPDEVICE; \</span>
-00091 <span class="preprocessor"> DMXInputInfo *dmxInput = &amp;dmxInputs[dmxLocal-&gt;inputIdx]</span>
-00092 <span class="preprocessor"></span>
-00093 <span class="preprocessor">#define GETDMXLOCALFROMPDEV \</span>
-00094 <span class="preprocessor"> DMXLocalInputInfoPtr dmxLocal = pDev-&gt;devicePrivate</span>
-00095 <span class="preprocessor"></span>
-00096 <span class="preprocessor">#define GETDMXINPUTFROMPDEV \</span>
-00097 <span class="preprocessor"> GETDMXLOCALFROMPDEV; \</span>
-00098 <span class="preprocessor"> DMXInputInfo *dmxInput = &amp;dmxInputs[dmxLocal-&gt;inputIdx]</span>
-00099 <span class="preprocessor"></span>
-00100 <span class="preprocessor">#define GETPRIVFROMPDEV \</span>
-00101 <span class="preprocessor"> GETDMXLOCALFROMPDEV; \</span>
-00102 <span class="preprocessor"> myPrivate *priv = dmxLocal-&gt;private</span>
-00103 <span class="preprocessor"></span>
-00104 <span class="preprocessor">#define DMX_KEYBOARD_EVENT_MASK \</span>
-00105 <span class="preprocessor"> (KeyPressMask | KeyReleaseMask | KeymapStateMask)</span>
-00106 <span class="preprocessor"></span>
-00107 <span class="preprocessor">#define DMX_POINTER_EVENT_MASK \</span>
-00108 <span class="preprocessor"> (ButtonPressMask | ButtonReleaseMask | PointerMotionMask)</span>
-00109 <span class="preprocessor"></span>
-00110 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcommon_8c.html#a13">dmxCommonKbdGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00111 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcommon_8c.html#a12">dmxCommonKbdGetMap</a>(DevicePtr pDev,
-00112 KeySymsPtr pKeySyms, CARD8 *pModMap);
-00113 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcommon_8c.html#a9">dmxCommonKbdCtrl</a>(DevicePtr pDev, KeybdCtrl *ctrl);
-00114 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcommon_8c.html#a11">dmxCommonKbdBell</a>(DevicePtr pDev, <span class="keywordtype">int</span> percent,
-00115 <span class="keywordtype">int</span> volume, <span class="keywordtype">int</span> pitch, <span class="keywordtype">int</span> duration);
-00116 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxcommon_8c.html#a14">dmxCommonKbdOn</a>(DevicePtr pDev);
-00117 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcommon_8c.html#a15">dmxCommonKbdOff</a>(DevicePtr pDev);
-00118 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcommon_8c.html#a19">dmxCommonMouGetMap</a>(DevicePtr pDev,
-00119 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *map, <span class="keywordtype">int</span> *nButtons);
-00120 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcommon_8c.html#a10">dmxCommonMouCtrl</a>(DevicePtr pDev, PtrCtrl *ctrl);
-00121 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxcommon_8c.html#a23">dmxCommonMouOn</a>(DevicePtr pDev);
-00122 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcommon_8c.html#a24">dmxCommonMouOff</a>(DevicePtr pDev);
-00123 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxcommon_8c.html#a25">dmxFindPointerScreen</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
-00124
-00125 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxcommon_8c.html#a16">dmxCommonOthOn</a>(DevicePtr pDev);
-00126 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcommon_8c.html#a17">dmxCommonOthOff</a>(DevicePtr pDev);
-00127 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcommon_8c.html#a18">dmxCommonOthGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00128
-00129 <span class="comment">/* helper functions */</span>
-00130 <span class="keyword">extern</span> pointer <a class="code" href="dmxcommon_8c.html#a26">dmxCommonCopyPrivate</a>(DeviceIntPtr pDevice);
-00131 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcommon_8c.html#a27">dmxCommonSaveState</a>(pointer <span class="keyword">private</span>);
-00132 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcommon_8c.html#a28">dmxCommonRestoreState</a>(pointer <span class="keyword">private</span>);
-00133 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8h.html
deleted file mode 100644
index 9367b5d2c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcommon_8h.html
+++ /dev/null
@@ -1,665 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcommon.h File Reference</h1>
-<p>
-<a href="dmxcommon_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a13">dmxCommonKbdGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a14">dmxCommonKbdGetMap</a> (DevicePtr pDev, KeySymsPtr pKeySyms, CARD8 *pModMap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a15">dmxCommonKbdCtrl</a> (DevicePtr pDev, KeybdCtrl *ctrl)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a16">dmxCommonKbdBell</a> (DevicePtr pDev, int percent, int volume, int pitch, int duration)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a17">dmxCommonKbdOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a18">dmxCommonKbdOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a19">dmxCommonMouGetMap</a> (DevicePtr pDev, unsigned char *map, int *nButtons)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a20">dmxCommonMouCtrl</a> (DevicePtr pDev, PtrCtrl *ctrl)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a21">dmxCommonMouOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a22">dmxCommonMouOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a23">dmxFindPointerScreen</a> (int x, int y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a24">dmxCommonOthOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a25">dmxCommonOthOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a26">dmxCommonOthGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a27">dmxCommonCopyPrivate</a> (DeviceIntPtr pDevice)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a28">dmxCommonSaveState</a> (pointer private)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcommon_8h.html#a29">dmxCommonRestoreState</a> (pointer private)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to functions used by backend and console input devices. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxcommon_8c.html">dmxcommon.c</a> <p>
-<a class="el" href="dmxbackend_8c.html">dmxbackend.c</a> <p>
-<a class="el" href="dmxconsole_8c.html">dmxconsole.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a27" doxytag="dmxcommon.h::dmxCommonCopyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer dmxCommonCopyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDevice</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Returns a pointer to the private area for the device that comes just prior to <em>pDevice</em> in the current <em>dmxInput</em> device list. This is used as the private area for the current device in some situations (e.g., when a keyboard and mouse form a pair that should share the same private area). If the requested private area cannot be located, then NULL is returned. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxcommon.h::dmxCommonKbdBell" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonKbdBell </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>percent</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>volume</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pitch</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>duration</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Sound they keyboard bell. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmxcommon.h::dmxCommonKbdCtrl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonKbdCtrl </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeybdCtrl *&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Update the keyboard control. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxcommon.h::dmxCommonKbdGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonKbdGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill in the XKEYBOARD parts of the <em>info</em> structure for the specified <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxcommon.h::dmxCommonKbdGetMap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonKbdGetMap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeySymsPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pKeySyms</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CARD8 *&nbsp;</td>
- <td class="mdname" nowrap> <em>pModMap</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get the keyboard mapping. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxcommon.h::dmxCommonKbdOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonKbdOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off. </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxcommon.h::dmxCommonKbdOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxCommonKbdOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="dmxcommon.h::dmxCommonMouCtrl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonMouCtrl </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PtrCtrl *&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Update the mouse control. </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="dmxcommon.h::dmxCommonMouGetMap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonMouGetMap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned char *&nbsp;</td>
- <td class="mdname" nowrap> <em>map</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>nButtons</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Obtain the mouse button mapping. </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="dmxcommon.h::dmxCommonMouOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonMouOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="dmxcommon.h::dmxCommonMouOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxCommonMouOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="dmxcommon.h::dmxCommonOthGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonOthGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="dmxcommon.h::dmxCommonOthOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonOthOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off. </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="dmxcommon.h::dmxCommonOthOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxCommonOthOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a29" doxytag="dmxcommon.h::dmxCommonRestoreState" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonRestoreState </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>private</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine restores all the information saved by <a class="el" href="dmxcommon_8h.html#a28">dmxCommonSaveState</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a28" doxytag="dmxcommon.h::dmxCommonSaveState" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCommonSaveState </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>private</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine saves and resets some important state for the backend and console device drivers:<ul>
-<li>the modifier map is saved and set to 0 (so DMX controls the LEDs)</li><li>the key click, bell, led, and repeat masks are saved and set to the values that DMX claims to be using</li></ul>
-<p>
-This routine and <a class="el" href="dmxcommon_8h.html#a29">dmxCommonRestoreState</a> are used when the pointer enters and leaves the console window, or when the backend window is active or not active (for a full-screen window, this only happens at server startup and server shutdown). </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxcommon.h::dmxFindPointerScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxFindPointerScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Given the global coordinates <em>x</em> and <em>y</em>, determine the screen with the lowest number on which those coordinates lie. If they are not on any screen, return -1. The number returned is an index into #dmxScreenInfo and is between -1 and <a class="el" href="dmxinit_8c.html#a1">dmxNumScreens</a> - 1, inclusive. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8c.html
deleted file mode 100644
index fe1f991ea..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8c.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcompat.c File Reference</h1><code>#include "<a class="el" href="dmxconfig_8h-source.html">dmxconfig.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcompat_8h-source.html">dmxcompat.h</a>"</code><br>
-<code>#include "parser.h"</code><br>
-<code>#include &lt;stdio.h&gt;</code><br>
-<code>#include &lt;stdlib.h&gt;</code><br>
-<code>#include &lt;string.h&gt;</code><br>
-<code>#include &lt;ctype.h&gt;</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXConfigEntry.html">DMXConfigEntryPtr</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcompat_8c.html#a4">dmxVDLRead</a> (const char *filename)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides some compatibility support for reading VDL files that are used by xmovie (<a href="http://www.llnl.gov/icc/sdd/img/xmovie/xmovie.shtml">http://www.llnl.gov/icc/sdd/img/xmovie/xmovie.shtml</a>).<p>
-This file is not used by the DMX server.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a4" doxytag="dmxcompat.c::dmxVDLRead" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXConfigEntry.html">DMXConfigEntryPtr</a> dmxVDLRead </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>filename</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Read from the VDL format <em>filename</em> and return a newly allocated <em>DMXConfigEntryPtr</em> </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8h-source.html
deleted file mode 100644
index 5199ae022..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8h-source.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcompat.h</h1><a href="dmxcompat_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00041 <span class="preprocessor">#ifndef _DMXCOMPAT_H_</span>
-00042 <span class="preprocessor"></span><span class="preprocessor">#define _DMXCOMPAT_H_</span>
-00043 <span class="preprocessor"></span>
-00044 <span class="keyword">extern</span> <a class="code" href="struct__DMXConfigEntry.html">DMXConfigEntryPtr</a> <a class="code" href="dmxcompat_8c.html#a4">dmxVDLRead</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);
-00045 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8h.html
deleted file mode 100644
index ab3412ac7..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcompat_8h.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcompat.h File Reference</h1>
-<p>
-<a href="dmxcompat_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXConfigEntry.html">DMXConfigEntryPtr</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcompat_8h.html#a0">dmxVDLRead</a> (const char *filename)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to VDL compatibility support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxcompat_8c.html">dmxcompat.c</a></dd></dl>
-This file is not used by the DMX server.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxcompat.h::dmxVDLRead" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXConfigEntry.html">DMXConfigEntryPtr</a> dmxVDLRead </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>filename</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Read from the VDL format <em>filename</em> and return a newly allocated <em>DMXConfigEntryPtr</em> </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8c.html
deleted file mode 100644
index a20ab1c26..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8c.html
+++ /dev/null
@@ -1,402 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxconfig.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinput_8h-source.html">dmxinput.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxconfig_8h-source.html">dmxconfig.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcb_8h-source.html">dmxcb.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxstat_8h-source.html">dmxstat.h</a>"</code><br>
-<code>#include "parser.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structDMXConfigCmdStruct.html">DMXConfigCmdStruct</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structDMXConfigListStruct.html">DMXConfigListStruct</a></td></tr>
-
-<tr><td colspan=2><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8c.html#a0">GEN</a>(param, glob, def)</td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structDMXConfigListStruct.html">DMXConfigListStruct</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8c.html#a7">DMXConfigList</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structDMXConfigListStruct.html">DMXConfigListStruct</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8c.html#a8">DMXConfigListPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structDMXConfigCmdStruct.html">DMXConfigCmdStruct</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8c.html#a9">DMXConfigCmd</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structDMXConfigCmdStruct.html">DMXConfigCmdStruct</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8c.html#a10">DMXConfigCmdPtr</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8c.html#a15">dmxConfigStoreDisplay</a> (const char *display)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8c.html#a16">dmxConfigStoreInput</a> (const char *input)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8c.html#a17">dmxConfigStoreXInput</a> (const char *input)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8c.html#a18">dmxConfigStoreFile</a> (const char *file)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8c.html#a19">dmxConfigStoreConfig</a> (const char *config)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8c.html#a32">dmxConfigConfigure</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8c.html#a33">dmxConfigSetMaxScreens</a> (void)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Provides interface for reading DMX configuration files and for combining that information with command-line configuration parameters.<hr><h2>Define Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxconfig.c::GEN" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define GEN</td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">param, <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>glob, <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>def&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-<b>Value:</b><div class="fragment"><pre><span class="keywordtype">void</span> dmxConfigSet##glob(<span class="keyword">const</span> <span class="keywordtype">char</span> *param) { \
- <span class="keywordflow">if</span> (dmx##glob) free((<span class="keywordtype">void</span> *)dmx##glob); \
- dmx##glob = strdup(param); \
- } \
- <span class="keywordtype">char</span> *dmxConfigGet##glob(<span class="keywordtype">void</span>) { \
- <span class="keywordflow">return</span> (<span class="keywordtype">char</span> *)(dmx##glob ? dmx##glob : def); \
- }
-</pre></div>This macro is used to generate the following access methods:<ul>
-<li>dmxConfig{Set,Get}rules</li><li>dmxConfig{Set,Get}model</li><li>dmxConfig{Set,Get}layout</li><li>dmxConfig{Set,Get}variant</li><li>dmxConfig{Set,Get}options These methods are used to read and write information about the keyboard. </li></ul>
- </td>
- </tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a9" doxytag="dmxconfig.c::DMXConfigCmd" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="structDMXConfigCmdStruct.html">DMXConfigCmdStruct</a> <a class="el" href="structDMXConfigCmdStruct.html">DMXConfigCmd</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This stucture stores the parsed configuration information. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxconfig.c::DMXConfigCmdPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="structDMXConfigCmdStruct.html">DMXConfigCmdStruct</a> * <a class="el" href="structDMXConfigCmdStruct.html">DMXConfigCmdPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This stucture stores the parsed configuration information. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxconfig.c::DMXConfigList" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="structDMXConfigListStruct.html">DMXConfigListStruct</a> <a class="el" href="structDMXConfigListStruct.html">DMXConfigList</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores lists of configuration information. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxconfig.c::DMXConfigListPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="structDMXConfigListStruct.html">DMXConfigListStruct</a> * <a class="el" href="structDMXConfigListStruct.html">DMXConfigListPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores lists of configuration information. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a32" doxytag="dmxconfig.c::dmxConfigConfigure" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigConfigure </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-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. </td>
- </tr>
-</table>
-<a class="anchor" name="a33" doxytag="dmxconfig.c::dmxConfigSetMaxScreens" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigSetMaxScreens </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-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. </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="dmxconfig.c::dmxConfigStoreConfig" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigStoreConfig </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>config</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make a note that <em>config</em> should be used as the configuration for current instantiation of the DMX server. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmxconfig.c::dmxConfigStoreDisplay" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigStoreDisplay </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>display</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make a note that <em>display</em> is the name of an X11 display that should be initialized as a backend (output) display. Called from <a class="el" href="dmxinit_8c.html#a40">ddxProcessArgument</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxconfig.c::dmxConfigStoreFile" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigStoreFile </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>file</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make a note that <em>file</em> is the configuration file. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxconfig.c::dmxConfigStoreInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigStoreInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>input</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make a note that <em>input</em> is the name of an X11 display that should be used for input (either a backend or a console input device). </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxconfig.c::dmxConfigStoreXInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigStoreXInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>input</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make a note that <em>input</em> is the name of an X11 display that should be used for input from XInput extension devices. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8h-source.html
deleted file mode 100644
index eeaae6481..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8h-source.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxconfig.h</h1><a href="dmxconfig_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXCONFIG_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXCONFIG_H_</span>
-00040 <span class="preprocessor"></span><span class="preprocessor">#define DMX_DEFAULT_XKB_RULES "xfree86"</span>
-00041 <span class="preprocessor"></span><span class="preprocessor">#define DMX_DEFAULT_XKB_MODEL "pc101"</span>
-00042 <span class="preprocessor"></span><span class="preprocessor">#define DMX_DEFAULT_XKB_LAYOUT "us"</span>
-00043 <span class="preprocessor"></span><span class="preprocessor">#define DMX_DEFAULT_XKB_VARIANT NULL</span>
-00044 <span class="preprocessor"></span><span class="preprocessor">#define DMX_DEFAULT_XKB_OPTIONS NULL</span>
-00045 <span class="preprocessor"></span>
-00046 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconfig_8c.html#a15">dmxConfigStoreDisplay</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *display);
-00047 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconfig_8c.html#a16">dmxConfigStoreInput</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *input); <span class="comment">/* Core devices */</span>
-00048 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconfig_8c.html#a17">dmxConfigStoreXInput</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *input); <span class="comment">/* Non-core devices */</span>
-00049 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconfig_8c.html#a18">dmxConfigStoreFile</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *file);
-00050 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconfig_8c.html#a19">dmxConfigStoreConfig</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *config);
-00051 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconfig_8c.html#a32">dmxConfigConfigure</a>(<span class="keywordtype">void</span>);
-00052 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconfig_8c.html#a33">dmxConfigSetMaxScreens</a>(<span class="keywordtype">void</span>);
-00053
-00054 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigSetXkbRules(<span class="keyword">const</span> <span class="keywordtype">char</span> *rules);
-00055 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigSetXkbModel(<span class="keyword">const</span> <span class="keywordtype">char</span> *model);
-00056 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigSetXkbLayout(<span class="keyword">const</span> <span class="keywordtype">char</span> *layout);
-00057 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigSetXkbVariant(<span class="keyword">const</span> <span class="keywordtype">char</span> *variant);
-00058 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigSetXkbOptions(<span class="keyword">const</span> <span class="keywordtype">char</span> *options);
-00059
-00060 <span class="keyword">extern</span> <span class="keywordtype">char</span> *dmxConfigGetXkbRules(<span class="keywordtype">void</span>);
-00061 <span class="keyword">extern</span> <span class="keywordtype">char</span> *dmxConfigGetXkbModel(<span class="keywordtype">void</span>);
-00062 <span class="keyword">extern</span> <span class="keywordtype">char</span> *dmxConfigGetXkbLayout(<span class="keywordtype">void</span>);
-00063 <span class="keyword">extern</span> <span class="keywordtype">char</span> *dmxConfigGetXkbVariant(<span class="keywordtype">void</span>);
-00064 <span class="keyword">extern</span> <span class="keywordtype">char</span> *dmxConfigGetXkbOptions(<span class="keywordtype">void</span>);
-00065 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8h.html
deleted file mode 100644
index 76c2eb03d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconfig_8h.html
+++ /dev/null
@@ -1,248 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxconfig.h File Reference</h1>
-<p>
-<a href="dmxconfig_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8h.html#a5">dmxConfigStoreDisplay</a> (const char *display)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8h.html#a6">dmxConfigStoreInput</a> (const char *input)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8h.html#a7">dmxConfigStoreXInput</a> (const char *input)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8h.html#a8">dmxConfigStoreFile</a> (const char *file)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8h.html#a9">dmxConfigStoreConfig</a> (const char *config)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8h.html#a10">dmxConfigConfigure</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconfig_8h.html#a11">dmxConfigSetMaxScreens</a> (void)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for DMX configuration file support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxconfig_8c.html">dmxconfig.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a10" doxytag="dmxconfig.h::dmxConfigConfigure" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigConfigure </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-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. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxconfig.h::dmxConfigSetMaxScreens" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigSetMaxScreens </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-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. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxconfig.h::dmxConfigStoreConfig" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigStoreConfig </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>config</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make a note that <em>config</em> should be used as the configuration for current instantiation of the DMX server. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxconfig.h::dmxConfigStoreDisplay" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigStoreDisplay </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>display</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make a note that <em>display</em> is the name of an X11 display that should be initialized as a backend (output) display. Called from <a class="el" href="dmxinit_8c.html#a40">ddxProcessArgument</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxconfig.h::dmxConfigStoreFile" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigStoreFile </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>file</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make a note that <em>file</em> is the configuration file. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxconfig.h::dmxConfigStoreInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigStoreInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>input</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make a note that <em>input</em> is the name of an X11 display that should be used for input (either a backend or a console input device). </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxconfig.h::dmxConfigStoreXInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigStoreXInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>input</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make a note that <em>input</em> is the name of an X11 display that should be used for input from XInput extension devices. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8c.html
deleted file mode 100644
index 026847587..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8c.html
+++ /dev/null
@@ -1,498 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxconsole.c File Reference</h1><code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxevents_8h-source.html">dmxevents.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxconsole_8h-source.html">dmxconsole.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcommon_8h-source.html">dmxcommon.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxscrinit_8h-source.html">dmxscrinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcb_8h-source.html">dmxcb.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "inputstr.h"</code><br>
-<code>#include "input.h"</code><br>
-<code>#include "mipointer.h"</code><br>
-<code>#include "windowstr.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html">_myPrivate</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8c.html#a25">dmxConsoleCreatePrivate</a> (DeviceIntPtr pDevice)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8c.html#a26">dmxConsoleDestroyPrivate</a> (pointer private)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8c.html#a32">dmxConsoleUpdateInfo</a> (pointer private, <a class="el" href="dmxinput_8h.html#a30">DMXUpdateType</a> type, WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8c.html#a35">dmxConsoleUpdatePosition</a> (pointer private, int x, int y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8c.html#a36">dmxConsoleCollectEvents</a> (DevicePtr pDev, dmxMotionProcPtr motion, dmxEnqueueProcPtr enqueue, dmxCheckSpecialProcPtr checkspecial, DMXBlockType block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8c.html#a41">dmxConsoleReInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8c.html#a42">dmxConsoleInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8c.html#a43">dmxConsoleMouGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8c.html#a44">dmxConsoleKbdGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8c.html#a45">dmxConsoleFunctions</a> (pointer private, DMXFunctionType function)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8c.html#a47">dmxConsoleCapture</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8c.html#a48">dmxConsoleUncapture</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file implements the console input devices.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a47" doxytag="dmxconsole.c::dmxConsoleCapture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleCapture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is used to warp the pointer into the console window from anywhere on the screen. It is used when backend and console input are both being taken from the same X display. </td>
- </tr>
-</table>
-<a class="anchor" name="a36" doxytag="dmxconsole.c::dmxConsoleCollectEvents" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleCollectEvents </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>dmxMotionProcPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>motion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>dmxEnqueueProcPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>enqueue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>dmxCheckSpecialProcPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>checkspecial</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXBlockType&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Collect all pending events from the console's display. Plase these events on the server event queue using the <em>motion</em> and <em>enqueue</em> routines. The <em>checkspecial</em> routine is used to check for special keys that need handling. <em>block</em> tells if signals should be blocked when updating the event queue. </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="dmxconsole.c::dmxConsoleCreatePrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer dmxConsoleCreatePrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDevice</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create the private area for <em>pDevice</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="dmxconsole.c::dmxConsoleDestroyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleDestroyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>private</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If <em>private</em> is non-NULL, free its associated memory. </td>
- </tr>
-</table>
-<a class="anchor" name="a45" doxytag="dmxconsole.c::dmxConsoleFunctions" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxConsoleFunctions </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>private</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXFunctionType&nbsp;</td>
- <td class="mdname" nowrap> <em>function</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Handle special console-only keys. </td>
- </tr>
-</table>
-<a class="anchor" name="a42" doxytag="dmxconsole.c::dmxConsoleInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialized the console device described by <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a44" doxytag="dmxconsole.c::dmxConsoleKbdGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleKbdGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill in the <em>info</em> structure for the specified <em>pDev</em>. Only used for keyboard. </td>
- </tr>
-</table>
-<a class="anchor" name="a43" doxytag="dmxconsole.c::dmxConsoleMouGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleMouGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill in the <em>info</em> structure for the specified <em>pDev</em>. Only used for pointers. </td>
- </tr>
-</table>
-<a class="anchor" name="a41" doxytag="dmxconsole.c::dmxConsoleReInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleReInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Re-initialized the console device described by <em>pDev</em> (after a reconfig). </td>
- </tr>
-</table>
-<a class="anchor" name="a48" doxytag="dmxconsole.c::dmxConsoleUncapture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleUncapture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Undo the capture that was done by <a class="el" href="dmxconsole_8h.html#a10">dmxConsoleCapture</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a32" doxytag="dmxconsole.c::dmxConsoleUpdateInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleUpdateInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>private</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="dmxinput_8h.html#a30">DMXUpdateType</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>type</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Whenever the window layout (size, position, stacking order) might be changed, this routine is called with the <em>pWindow</em> that changed and the <em>type</em> of change. This routine is called in a conservative fashion: the actual layout of the windows of the screen might not have had any human-visible changes. </td>
- </tr>
-</table>
-<a class="anchor" name="a35" doxytag="dmxconsole.c::dmxConsoleUpdatePosition" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleUpdatePosition </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>private</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine gets called from #dmxCoreMotion for each motion. This allows the console's notion of the cursor postion to change when another input device actually caused the change. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8h-source.html
deleted file mode 100644
index b806b86fc..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8h-source.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxconsole.h</h1><a href="dmxconsole_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXCONSOLE_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXCONSOLE_H_</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="keyword">extern</span> pointer <a class="code" href="dmxconsole_8c.html#a25">dmxConsoleCreatePrivate</a>(DeviceIntPtr pDevice);
-00042 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconsole_8c.html#a26">dmxConsoleDestroyPrivate</a>(pointer <span class="keyword">private</span>);
-00043 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconsole_8c.html#a42">dmxConsoleInit</a>(DevicePtr pDev);
-00044 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconsole_8c.html#a41">dmxConsoleReInit</a>(DevicePtr pDev);
-00045 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconsole_8c.html#a43">dmxConsoleMouGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00046 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconsole_8c.html#a44">dmxConsoleKbdGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00047 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconsole_8c.html#a36">dmxConsoleCollectEvents</a>(DevicePtr pDev,
-00048 dmxMotionProcPtr motion,
-00049 dmxEnqueueProcPtr enqueue,
-00050 dmxCheckSpecialProcPtr checkspecial,
-00051 DMXBlockType block);
-00052 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxconsole_8c.html#a45">dmxConsoleFunctions</a>(pointer <span class="keyword">private</span>, DMXFunctionType function);
-00053 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconsole_8c.html#a35">dmxConsoleUpdatePosition</a>(pointer <span class="keyword">private</span>, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
-00054 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConsoleKbdSetCtrl(pointer <span class="keyword">private</span>, KeybdCtrl *ctrl);
-00055 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconsole_8c.html#a47">dmxConsoleCapture</a>(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput);
-00056 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconsole_8c.html#a48">dmxConsoleUncapture</a>(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput);
-00057 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxconsole_8c.html#a32">dmxConsoleUpdateInfo</a>(pointer <span class="keyword">private</span>,
-00058 DMXUpdateType, WindowPtr pWindow);
-00059
-00060 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8h.html
deleted file mode 100644
index 398f56a16..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxconsole_8h.html
+++ /dev/null
@@ -1,488 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxconsole.h File Reference</h1>
-<p>
-<a href="dmxconsole_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8h.html#a0">dmxConsoleCreatePrivate</a> (DeviceIntPtr pDevice)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8h.html#a1">dmxConsoleDestroyPrivate</a> (pointer private)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8h.html#a2">dmxConsoleInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8h.html#a3">dmxConsoleReInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8h.html#a4">dmxConsoleMouGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8h.html#a5">dmxConsoleKbdGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8h.html#a6">dmxConsoleCollectEvents</a> (DevicePtr pDev, dmxMotionProcPtr motion, dmxEnqueueProcPtr enqueue, dmxCheckSpecialProcPtr checkspecial, DMXBlockType block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8h.html#a7">dmxConsoleFunctions</a> (pointer private, DMXFunctionType function)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8h.html#a8">dmxConsoleUpdatePosition</a> (pointer private, int x, int y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8h.html#a10">dmxConsoleCapture</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8h.html#a11">dmxConsoleUncapture</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxconsole_8h.html#a12">dmxConsoleUpdateInfo</a> (pointer private, <a class="el" href="dmxinput_8h.html#a30">DMXUpdateType</a>, WindowPtr pWindow)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for console device support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxconsole_8c.html">dmxconsole.c</a> <p>
-<a class="el" href="dmxcommon_8c.html">dmxcommon.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a10" doxytag="dmxconsole.h::dmxConsoleCapture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleCapture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is used to warp the pointer into the console window from anywhere on the screen. It is used when backend and console input are both being taken from the same X display. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxconsole.h::dmxConsoleCollectEvents" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleCollectEvents </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>dmxMotionProcPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>motion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>dmxEnqueueProcPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>enqueue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>dmxCheckSpecialProcPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>checkspecial</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXBlockType&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Collect all pending events from the console's display. Plase these events on the server event queue using the <em>motion</em> and <em>enqueue</em> routines. The <em>checkspecial</em> routine is used to check for special keys that need handling. <em>block</em> tells if signals should be blocked when updating the event queue. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxconsole.h::dmxConsoleCreatePrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer dmxConsoleCreatePrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDevice</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create the private area for <em>pDevice</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxconsole.h::dmxConsoleDestroyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleDestroyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>private</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If <em>private</em> is non-NULL, free its associated memory. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxconsole.h::dmxConsoleFunctions" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxConsoleFunctions </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>private</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXFunctionType&nbsp;</td>
- <td class="mdname" nowrap> <em>function</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Handle special console-only keys. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxconsole.h::dmxConsoleInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialized the console device described by <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxconsole.h::dmxConsoleKbdGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleKbdGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill in the <em>info</em> structure for the specified <em>pDev</em>. Only used for keyboard. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxconsole.h::dmxConsoleMouGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleMouGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill in the <em>info</em> structure for the specified <em>pDev</em>. Only used for pointers. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxconsole.h::dmxConsoleReInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleReInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Re-initialized the console device described by <em>pDev</em> (after a reconfig). </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxconsole.h::dmxConsoleUncapture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleUncapture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Undo the capture that was done by <a class="el" href="dmxconsole_8h.html#a10">dmxConsoleCapture</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxconsole.h::dmxConsoleUpdateInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleUpdateInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>private</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="dmxinput_8h.html#a30">DMXUpdateType</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>type</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Whenever the window layout (size, position, stacking order) might be changed, this routine is called with the <em>pWindow</em> that changed and the <em>type</em> of change. This routine is called in a conservative fashion: the actual layout of the windows of the screen might not have had any human-visible changes. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxconsole.h::dmxConsoleUpdatePosition" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConsoleUpdatePosition </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>private</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine gets called from #dmxCoreMotion for each motion. This allows the console's notion of the cursor postion to change when another input device actually caused the change. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8c.html
deleted file mode 100644
index 744bc3547..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8c.html
+++ /dev/null
@@ -1,471 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcursor.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcursor_8h-source.html">dmxcursor.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxprop_8h-source.html">dmxprop.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinput_8h-source.html">dmxinput.h</a>"</code><br>
-<code>#include "mipointer.h"</code><br>
-<code>#include "windowstr.h"</code><br>
-<code>#include "globals.h"</code><br>
-<code>#include "cursorstr.h"</code><br>
-<code>#include "dixevents.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a12">dmxCursorNoMulti</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a21">dmxReInitOrigins</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a22">dmxInitOrigins</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a23">dmxOnScreen</a> (int x, int y, <a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a28">dmxInitOverlap</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a29">dmxBECreateCursor</a> (ScreenPtr pScreen, CursorPtr pCursor)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a31">dmxBEFreeCursor</a> (ScreenPtr pScreen, CursorPtr pCursor)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a38">dmxMoveCursor</a> (ScreenPtr pScreen, int x, int y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a40">dmxHideCursor</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a41">dmxCheckCursor</a> (void)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>miPointerScreenFuncRec&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a10">dmxPointerCursorFuncs</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>miPointerSpriteFuncRec&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a11">dmxPointerSpriteFuncs</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file contains code than supports cursor movement, including the code that initializes and reinitializes the screen positions and computes screen overlap.<p>
-"This code is based very closely on the XFree86 equivalent (xfree86/common/xf86Cursor.c)." --David Dawes.<p>
-"This code was then extensively re-written, as explained here." --Rik Faith<p>
-The code in xf86Cursor.c used edge lists to implement the CursorOffScreen function. The edge list computation was complex (especially in the face of arbitrarily overlapping screens) compared with the speed savings in the CursorOffScreen function. The new implementation has erred on the side of correctness, readability, and maintainability over efficiency. For the common (non-edge) case, the dmxCursorOffScreen function does avoid a loop over all the screens. When the cursor has left the screen, all the screens are searched, and the first screen (in dmxScreens order) containing the cursor will be returned. If run-time profiling shows that this routing is a performance bottle-neck, then an edge list may have to be reimplemented. An edge list algorithm is O(edges) whereas the new algorithm is O(dmxNumScreens). Since edges is usually 1-3 and dmxNumScreens may be 30-60 for large backend walls, this trade off may be compelling.<p>
-The xf86InitOrigins routine uses bit masks during the computation and is therefore limited to the length of a word (e.g., 32 or 64 bits) screens. Because Xdmx is expected to be used with a large number of backend displays, this limitation was removed. The new implementation has erred on the side of readability over efficiency, using the dmxSL* routines to manage a screen list instead of a bitmap, and a function call to decrease the length of the main routine. Both algorithms are of the same order, and both are called only at server generation time, so trading clarity and long-term maintainability for efficiency does not seem justified in this case.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a29" doxytag="dmxcursor.c::dmxBECreateCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBECreateCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CursorPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pCursor</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create <em>pCursor</em> on the back-end associated with <em>pScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a31" doxytag="dmxcursor.c::dmxBEFreeCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreeCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CursorPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pCursor</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free <em>pCursor</em> on the back-end associated with <em>pScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a41" doxytag="dmxcursor.c::dmxCheckCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCheckCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is called during reconfiguration to make sure the cursor is visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxcursor.c::dmxCursorNoMulti" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCursorNoMulti </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn off support for displaying multiple cursors on overlapped back-end displays. See #dmxCursorDoMultiCursors. </td>
- </tr>
-</table>
-<a class="anchor" name="a40" doxytag="dmxcursor.c::dmxHideCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxHideCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is used by the backend input routines to hide the cursor on a screen that is being used for relative input. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxbackend_8c.html">dmxbackend.c</a> </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="dmxcursor.c::dmxInitOrigins" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInitOrigins </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize screen origins (and relative position). This is called for each server generation. For dynamic reconfiguration, use <a class="el" href="dmxcursor_8c.html#a21">dmxReInitOrigins()</a> instead. </td>
- </tr>
-</table>
-<a class="anchor" name="a28" doxytag="dmxcursor.c::dmxInitOverlap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInitOverlap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Detects overlapping dmxScreens and creates circular lists. This uses an O(dmxNumScreens^2) algorithm, but dmxNumScreens is &lt; 100 and the computation only needs to be performed for every server generation or dynamic reconfiguration . </td>
- </tr>
-</table>
-<a class="anchor" name="a38" doxytag="dmxcursor.c::dmxMoveCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxMoveCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Move the cursor to coordinates (<em>x</em>, <em>y</em>)on <em>pScreen</em>. This function is usually called via <a class="el" href="dmxcursor_8h.html#a4">dmxPointerSpriteFuncs</a>, except during reconfiguration when the cursor is repositioned to force an update on newley overlapping screens and on screens that no longer overlap. </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxcursor.c::dmxOnScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxOnScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Returns non-zero if the global <em>x</em>, <em>y</em> coordinate is on the screen window of the <em>dmxScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="dmxcursor.c::dmxReInitOrigins" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxReInitOrigins </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Recompute origin information in the <a class="el" href="dmxinit_8c.html#a2">dmxScreens</a> list. This is either called from <a class="el" href="dmxcursor_8c.html#a22">dmxInitOrigins()</a> or from #dmxReconfig(). </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a10" doxytag="dmxcursor.c::dmxPointerCursorFuncs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> miPointerScreenFuncRec <a class="el" href="dmxcursor_8h.html#a3">dmxPointerCursorFuncs</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-<b>Initial value:</b><div class="fragment"><pre>
-{
- dmxCursorOffScreen,
- dmxCrossScreen,
- dmxWarpCursor,
- <a class="code" href="dmxeq_8c.html#a13">dmxeqEnqueue</a>,
- <a class="code" href="dmxeq_8c.html#a14">dmxeqSwitchScreen</a>
-}
-</pre></div>Cursor functions for mi layer. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxcursor_8c.html">dmxcursor.c</a> <p>
-<a class="el" href="dmxscrinit_8c.html">dmxscrinit.c</a> </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxcursor.c::dmxPointerSpriteFuncs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> miPointerSpriteFuncRec <a class="el" href="dmxcursor_8h.html#a4">dmxPointerSpriteFuncs</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-<b>Initial value:</b><div class="fragment"><pre>
-{
- dmxRealizeCursor,
- dmxUnrealizeCursor,
- dmxSetCursor,
- <a class="code" href="dmxcursor_8c.html#a38">dmxMoveCursor</a>,
-}
-</pre></div>Sprite functions for mi layer. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxcursor_8c.html">dmxcursor.c</a> <p>
-<a class="el" href="dmxscrinit_8c.html">dmxscrinit.c</a> </dd></dl>
- </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8h-source.html
deleted file mode 100644
index c9a7c8d4d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8h-source.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcursor.h</h1><a href="dmxcursor_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001-2004 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * David H. Dawes &lt;dawes@xfree86.org&gt;</span>
-00032 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00033 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00034 <span class="comment"> *</span>
-00035 <span class="comment"> */</span>
-00036
-00040 <span class="preprocessor">#ifndef DMXCURSOR_H</span>
-00041 <span class="preprocessor"></span><span class="preprocessor">#define DMXCURSOR_H</span>
-00042 <span class="preprocessor"></span>
-00043 <span class="preprocessor">#include "mipointer.h"</span>
-00044
-<a name="l00046"></a><a class="code" href="struct__dmxCursorPriv.html">00046</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__dmxCursorPriv.html">_dmxCursorPriv</a> {
-00047 Cursor cursor;
-00048 } <a class="code" href="struct__dmxCursorPriv.html">dmxCursorPrivRec</a>, *<a class="code" href="struct__dmxCursorPriv.html">dmxCursorPrivPtr</a>;
-00049
-<a name="l00051"></a><a class="code" href="dmxcursor_8h.html#a3">00051</a> <span class="keyword">extern</span> miPointerScreenFuncRec <a class="code" href="dmxcursor_8c.html#a10">dmxPointerCursorFuncs</a>;
-<a name="l00053"></a><a class="code" href="dmxcursor_8h.html#a4">00053</a> <span class="keyword">extern</span> miPointerSpriteFuncRec <a class="code" href="dmxcursor_8c.html#a11">dmxPointerSpriteFuncs</a>;
-00054
-00055 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcursor_8c.html#a21">dmxReInitOrigins</a>(<span class="keywordtype">void</span>);
-00056 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcursor_8c.html#a22">dmxInitOrigins</a>(<span class="keywordtype">void</span>);
-00057 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcursor_8c.html#a28">dmxInitOverlap</a>(<span class="keywordtype">void</span>);
-00058 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcursor_8c.html#a12">dmxCursorNoMulti</a>(<span class="keywordtype">void</span>);
-00059 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcursor_8c.html#a38">dmxMoveCursor</a>(ScreenPtr pScreen, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
-00060 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcursor_8c.html#a41">dmxCheckCursor</a>(<span class="keywordtype">void</span>);
-00061 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxcursor_8c.html#a23">dmxOnScreen</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00062 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcursor_8c.html#a40">dmxHideCursor</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00063
-00064 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxcursor_8c.html#a29">dmxBECreateCursor</a>(ScreenPtr pScreen, CursorPtr pCursor);
-00065 <span class="keyword">extern</span> Bool <a class="code" href="dmxcursor_8c.html#a31">dmxBEFreeCursor</a>(ScreenPtr pScreen, CursorPtr pCursor);
-00066
-00067 <span class="preprocessor">#define DMX_GET_CURSOR_PRIV(_pCursor, _pScreen) \</span>
-00068 <span class="preprocessor"> (dmxCursorPrivPtr)(_pCursor)-&gt;devPriv[(_pScreen)-&gt;myNum]</span>
-00069 <span class="preprocessor"></span>
-00070 <span class="preprocessor">#endif </span><span class="comment">/* DMXCURSOR_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8h.html
deleted file mode 100644
index 3bb81f00f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxcursor_8h.html
+++ /dev/null
@@ -1,498 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcursor.h File Reference</h1><code>#include "mipointer.h"</code><br>
-
-<p>
-<a href="dmxcursor_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxCursorPriv.html">_dmxCursorPriv</a></td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxCursorPriv.html">_dmxCursorPriv</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a1">dmxCursorPrivRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxCursorPriv.html">_dmxCursorPriv</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a2">dmxCursorPrivPtr</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a5">dmxReInitOrigins</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a6">dmxInitOrigins</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a7">dmxInitOverlap</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a8">dmxCursorNoMulti</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a9">dmxMoveCursor</a> (ScreenPtr pScreen, int x, int y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a10">dmxCheckCursor</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a11">dmxOnScreen</a> (int x, int y, <a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a12">dmxHideCursor</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a13">dmxBECreateCursor</a> (ScreenPtr pScreen, CursorPtr pCursor)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a14">dmxBEFreeCursor</a> (ScreenPtr pScreen, CursorPtr pCursor)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>miPointerScreenFuncRec&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a3">dmxPointerCursorFuncs</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>miPointerSpriteFuncRec&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8h.html#a4">dmxPointerSpriteFuncs</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for cursor support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxcursor_8c.html">dmxcursor.c</a>.</dd></dl>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a2" doxytag="dmxcursor.h::dmxCursorPrivPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxCursorPriv.html">_dmxCursorPriv</a> * <a class="el" href="struct__dmxCursorPriv.html">dmxCursorPrivPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Cursor private area. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxcursor.h::dmxCursorPrivRec" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxCursorPriv.html">_dmxCursorPriv</a> <a class="el" href="struct__dmxCursorPriv.html">dmxCursorPrivRec</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Cursor private area. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a13" doxytag="dmxcursor.h::dmxBECreateCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBECreateCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CursorPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pCursor</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create <em>pCursor</em> on the back-end associated with <em>pScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxcursor.h::dmxBEFreeCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreeCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CursorPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pCursor</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free <em>pCursor</em> on the back-end associated with <em>pScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxcursor.h::dmxCheckCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCheckCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is called during reconfiguration to make sure the cursor is visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxcursor.h::dmxCursorNoMulti" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCursorNoMulti </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn off support for displaying multiple cursors on overlapped back-end displays. See #dmxCursorDoMultiCursors. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxcursor.h::dmxHideCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxHideCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is used by the backend input routines to hide the cursor on a screen that is being used for relative input. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxbackend_8c.html">dmxbackend.c</a> </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxcursor.h::dmxInitOrigins" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInitOrigins </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize screen origins (and relative position). This is called for each server generation. For dynamic reconfiguration, use <a class="el" href="dmxcursor_8c.html#a21">dmxReInitOrigins()</a> instead. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxcursor.h::dmxInitOverlap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInitOverlap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Detects overlapping dmxScreens and creates circular lists. This uses an O(dmxNumScreens^2) algorithm, but dmxNumScreens is &lt; 100 and the computation only needs to be performed for every server generation or dynamic reconfiguration . </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxcursor.h::dmxMoveCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxMoveCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Move the cursor to coordinates (<em>x</em>, <em>y</em>)on <em>pScreen</em>. This function is usually called via <a class="el" href="dmxcursor_8h.html#a4">dmxPointerSpriteFuncs</a>, except during reconfiguration when the cursor is repositioned to force an update on newley overlapping screens and on screens that no longer overlap. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxcursor.h::dmxOnScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxOnScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Returns non-zero if the global <em>x</em>, <em>y</em> coordinate is on the screen window of the <em>dmxScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxcursor.h::dmxReInitOrigins" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxReInitOrigins </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Recompute origin information in the <a class="el" href="dmxinit_8c.html#a2">dmxScreens</a> list. This is either called from <a class="el" href="dmxcursor_8c.html#a22">dmxInitOrigins()</a> or from #dmxReconfig(). </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxcursor.h::dmxPointerCursorFuncs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> miPointerScreenFuncRec <a class="el" href="dmxcursor_8h.html#a3">dmxPointerCursorFuncs</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Cursor functions for mi layer. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxcursor_8c.html">dmxcursor.c</a> <p>
-<a class="el" href="dmxscrinit_8c.html">dmxscrinit.c</a> </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxcursor.h::dmxPointerSpriteFuncs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> miPointerSpriteFuncRec <a class="el" href="dmxcursor_8h.html#a4">dmxPointerSpriteFuncs</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Sprite functions for mi layer. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxcursor_8c.html">dmxcursor.c</a> <p>
-<a class="el" href="dmxscrinit_8c.html">dmxscrinit.c</a> </dd></dl>
- </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdetach_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdetach_8c.html
deleted file mode 100644
index e311a99bd..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdetach_8c.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxdetach.c File Reference</h1><code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxextension_8h-source.html">dmxextension.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxdetach_8c.html#a0">dmxInputDetach</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, Bool reserveId)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Provide support and helper functions for input detach and attach.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxdetach.c::dmxInputDetach" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputDetach </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Bool&nbsp;</td>
- <td class="mdname" nowrap> <em>reserveId</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Search for input associated with <em>dmxScreen</em>, and detach. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8c.html
deleted file mode 100644
index 4ad87da6d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8c.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxdpms.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxdpms_8h-source.html">dmxdpms.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "dpmsproc.h"</code><br>
-<code>#include "windowstr.h"</code><br>
-<code>#include "X11/extensions/dpms.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxdpms_8c.html#a3">dmxDPMSInit</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxdpms_8c.html#a4">dmxDPMSTerm</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxdpms_8c.html#a5">dmxDPMSWakeup</a> (void)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Provides DPMS support and unifies all DPMS and other screen-saver support in one file. If -dpms is given on the command line, or the Xdmx server is not compiled with DPMS support, then the DPMS extension does not work for clients, but DPMS on the backends is still disables (and restored at Xdmx server shutdown time).<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxdpms.c::dmxDPMSInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDPMSInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize DPMS support. We save the current settings and turn off DPMS. The settings are restored in <a class="el" href="dmxdpms_8h.html#a1">dmxDPMSTerm</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxdpms.c::dmxDPMSTerm" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDPMSTerm </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Terminate DPMS support on <em>dmxScreen</em>. We restore the settings saved in <a class="el" href="dmxdpms_8h.html#a0">dmxDPMSInit</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxdpms.c::dmxDPMSWakeup" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDPMSWakeup </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Called when activity is detected so that DPMS power-saving mode can be deactivated. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8h-source.html
deleted file mode 100644
index ff74d3ab5..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8h-source.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxdpms.h</h1><a href="dmxdpms_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2003 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Author:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXDPMS_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXDPMS_H_</span>
-00040 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxdpms_8c.html#a3">dmxDPMSInit</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00041 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxdpms_8c.html#a4">dmxDPMSTerm</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00042 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxdpms_8c.html#a5">dmxDPMSWakeup</a>(<span class="keywordtype">void</span>); <span class="comment">/* Call when input is processed */</span>
-00043 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8h.html
deleted file mode 100644
index 45b5a6495..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdpms_8h.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxdpms.h File Reference</h1>
-<p>
-<a href="dmxdpms_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxdpms_8h.html#a0">dmxDPMSInit</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxdpms_8h.html#a1">dmxDPMSTerm</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxdpms_8h.html#a2">dmxDPMSWakeup</a> (void)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for DPMS extension support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxdpms_8c.html">dmxdpms.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxdpms.h::dmxDPMSInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDPMSInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize DPMS support. We save the current settings and turn off DPMS. The settings are restored in <a class="el" href="dmxdpms_8h.html#a1">dmxDPMSTerm</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxdpms.h::dmxDPMSTerm" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDPMSTerm </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Terminate DPMS support on <em>dmxScreen</em>. We restore the settings saved in <a class="el" href="dmxdpms_8h.html#a0">dmxDPMSInit</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxdpms.h::dmxDPMSWakeup" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDPMSWakeup </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Called when activity is detected so that DPMS power-saving mode can be deactivated. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8c.html
deleted file mode 100644
index d497e154a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8c.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxdummy.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxdummy_8h-source.html">dmxdummy.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxdummy_8c.html#a0">dmxDummyKbdGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxdummy_8c.html#a1">dmxDummyMouGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Provide mouse and keyboard that are sufficient for starting the X server, but that don't actually provide any events. This is useful for testing.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxdummy.c::dmxDummyKbdGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDummyKbdGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return information about the dummy keyboard device specified in <em>pDev</em> into the structure pointed to by <em>info</em>. The keyboard is set up to have 1 valid key code that is <em>NoSymbol</em> </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxdummy.c::dmxDummyMouGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDummyMouGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return information about the dummy mouse device specified in <em>pDev</em> into the structure pointed to by <em>info</em>. They mouse has 3 buttons and two axes. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8h-source.html
deleted file mode 100644
index 907b0f0aa..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8h-source.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxdummy.h</h1><a href="dmxdummy_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXDUMMY_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXDUMMY_H_</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxdummy_8c.html#a1">dmxDummyMouGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00042 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxdummy_8c.html#a0">dmxDummyKbdGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00043
-00044 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8h.html
deleted file mode 100644
index ca868f943..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxdummy_8h.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxdummy.h File Reference</h1>
-<p>
-<a href="dmxdummy_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxdummy_8h.html#a0">dmxDummyMouGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxdummy_8h.html#a1">dmxDummyKbdGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to dummy input device support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxdummy_8c.html">dmxdummy.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a1" doxytag="dmxdummy.h::dmxDummyKbdGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDummyKbdGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return information about the dummy keyboard device specified in <em>pDev</em> into the structure pointed to by <em>info</em>. The keyboard is set up to have 1 valid key code that is <em>NoSymbol</em> </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxdummy.h::dmxDummyMouGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDummyMouGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return information about the dummy mouse device specified in <em>pDev</em> into the structure pointed to by <em>info</em>. They mouse has 3 buttons and two axes. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8c.html
deleted file mode 100644
index ccf71b829..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8c.html
+++ /dev/null
@@ -1,269 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxeq.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxeq_8h-source.html">dmxeq.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinput_8h-source.html">dmxinput.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxdpms_8h-source.html">dmxdpms.h</a>"</code><br>
-<code>#include "inputstr.h"</code><br>
-<code>#include "scrnintstr.h"</code><br>
-<code>#include "XIproto.h"</code><br>
-<code>#include "extinit.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__Event.html">_Event</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__EventQueue.html">_EventQueue</a></td></tr>
-
-<tr><td colspan=2><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxeq_8c.html#a4">QUEUE_SIZE</a>&nbsp;&nbsp;&nbsp;256</td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__Event.html">_Event</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxeq_8c.html#a5">EventRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__Event.html">_Event</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxeq_8c.html#a6">EventPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__EventQueue.html">_EventQueue</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxeq_8c.html#a7">EventQueueRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__EventQueue.html">_EventQueue</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxeq_8c.html#a8">EventQueuePtr</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxeq_8c.html#a13">dmxeqEnqueue</a> (xEvent *e)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxeq_8c.html#a14">dmxeqSwitchScreen</a> (ScreenPtr pScreen, Bool fromDIX)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxeq_8c.html#a16">dmxeqProcessInputEvents</a> (void)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides an event queue that knows about XInput events. All of the code is based on mi/mieq.c and was modified as little as possible to provide XInput event support (the copyright and some of the comments are from The Open Group, Keith Packard, MIT X Consortium). (Another example of similar code is provided in hw/xfree86/common/xf86Xinput.c.)<hr><h2>Define Documentation</h2>
-<a class="anchor" name="a4" doxytag="dmxeq.c::QUEUE_SIZE" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define QUEUE_SIZE&nbsp;&nbsp;&nbsp;256
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-The size of our queue. (The queue provided by mi/mieq.c has a size of 256.) </td>
- </tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a6" doxytag="dmxeq.c::EventPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__Event.html">_Event</a> * <a class="el" href="struct__Event.html">EventPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Information about the event. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxeq.c::EventQueuePtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__EventQueue.html">_EventQueue</a> * <a class="el" href="struct__EventQueue.html">EventQueuePtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Event queue. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxeq.c::EventQueueRec" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__EventQueue.html">_EventQueue</a> <a class="el" href="struct__EventQueue.html">EventQueueRec</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Event queue. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxeq.c::EventRec" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__Event.html">_Event</a> <a class="el" href="struct__Event.html">EventRec</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Information about the event. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a13" doxytag="dmxeq.c::dmxeqEnqueue" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxeqEnqueue </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">xEvent *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>e</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This function adds an event to the end of the queue. If the event is an XInput event, then the next event (the valuator event) is also stored in the queue. If the new event has a time before the time of the last event currently on the queue, then the time is updated for the new event.<p>
-Must be reentrant with ProcessInputEvents. Assumption: dmxeqEnqueue will never be interrupted. If this is called from both signal handlers and regular code, make sure the signal is suspended when called from regular code. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxeq.c::dmxeqProcessInputEvents" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxeqProcessInputEvents </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This function is called from <a class="el" href="dmxinput_8c.html#a2">ProcessInputEvents()</a> to remove events from the queue and process them. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxeq.c::dmxeqSwitchScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxeqSwitchScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Bool&nbsp;</td>
- <td class="mdname" nowrap> <em>fromDIX</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make <em>pScreen</em> the new screen for enqueueing events. If <em>fromDIX</em> is TRUE, also make <em>pScreen</em> the new screen for dequeuing events. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8h-source.html
deleted file mode 100644
index dc73d8e2a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8h-source.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxeq.h</h1><a href="dmxeq_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00040 <span class="preprocessor">#ifndef _DMXEQ_H_</span>
-00041 <span class="preprocessor"></span><span class="preprocessor">#define _DMXEQ_H_</span>
-00042 <span class="preprocessor"></span><span class="keyword">extern</span> Bool dmxeqInit(DevicePtr pKbd, DevicePtr pPtr);
-00043 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxeq_8c.html#a16">dmxeqProcessInputEvents</a>(<span class="keywordtype">void</span>);
-00044 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8h.html
deleted file mode 100644
index 255528ce9..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxeq_8h.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxeq.h File Reference</h1>
-<p>
-<a href="dmxeq_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxeq_8h.html#a1">dmxeqProcessInputEvents</a> (void)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to the event queue support. Some of these functions are included in <a class="el" href="dmxinput_8h.html">dmxinput.h</a>, since they are used by top-level .c files. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxeq_8c.html">dmxeq.c</a> <p>
-<a class="el" href="dmxinput_8h.html">dmxinput.h</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a1" doxytag="dmxeq.h::dmxeqProcessInputEvents" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxeqProcessInputEvents </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This function is called from <a class="el" href="dmxinput_8c.html#a2">ProcessInputEvents()</a> to remove events from the queue and process them. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8c.html
deleted file mode 100644
index 105749a00..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8c.html
+++ /dev/null
@@ -1,284 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxevents.c File Reference</h1><code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxevents_8h-source.html">dmxevents.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcb_8h-source.html">dmxcb.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcommon_8h-source.html">dmxcommon.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcursor_8h-source.html">dmxcursor.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxmotion_8h-source.html">dmxmotion.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxeq_8h-source.html">dmxeq.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsigio_8h-source.html">dmxsigio.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxmap_8h-source.html">dmxmap.h</a>"</code><br>
-<code>#include "keysym.h"</code><br>
-<code>#include "opaque.h"</code><br>
-<code>#include "inputstr.h"</code><br>
-<code>#include "mipointer.h"</code><br>
-<code>#include "XIstubs.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxevents_8c.html#a21">dmxGetGlobalPosition</a> (int *x, int *y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxevents_8c.html#a22">dmxInvalidateGlobalPosition</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxevents_8c.html#a23">dmxMotion</a> (DevicePtr pDev, int *v, int firstAxes, int axesCount, DMXMotionType type, DMXBlockType block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxevents_8c.html#a27">dmxEnqueue</a> (DevicePtr pDev, int type, int detail, KeySym keySym, XEvent *e, DMXBlockType block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxevents_8c.html#a28">dmxCheckSpecialKeys</a> (DevicePtr pDev, KeySym keySym)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Provide support and helper functions for enqueing events received by the low-level input drivers.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a28" doxytag="dmxevents.c::dmxCheckSpecialKeys" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxCheckSpecialKeys </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeySym&nbsp;</td>
- <td class="mdname" nowrap> <em>keySym</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-A pointer to this routine is passed to low-level input drivers so that all special keychecking is unified to this file. This function returns 0 if no special keys have been pressed. If the user has requested termination of the DMX server, -1 is returned. If the user has requested a switch to a VT, then the (1-based) number of that VT is returned. </td>
- </tr>
-</table>
-<a class="anchor" name="a27" doxytag="dmxevents.c::dmxEnqueue" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxEnqueue </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>type</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>detail</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeySym&nbsp;</td>
- <td class="mdname" nowrap> <em>keySym</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>XEvent *&nbsp;</td>
- <td class="mdname" nowrap> <em>e</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXBlockType&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Enqueue a non-motion event from the <em>pDev</em> device with the specified <em>type</em> and <em>detail</em>. If the event is a KeyPress or KeyRelease event, then the <em>keySym</em> is also specified.<p>
-If <em>block</em> is set to <em>DMX_BLOCK</em>, then the SIGIO handler will be blocked around calls to <a class="el" href="dmxinput_8h.html#a24">dmxeqEnqueue()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="dmxevents.c::dmxGetGlobalPosition" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxGetGlobalPosition </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int *&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return DMX's notion of the pointer position in the global coordinate space. </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="dmxevents.c::dmxInvalidateGlobalPosition" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInvalidateGlobalPosition </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Invalidate the global position for #dmxCoreMotion. </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxevents.c::dmxMotion" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxMotion </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>v</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>firstAxes</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>axesCount</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXMotionType&nbsp;</td>
- <td class="mdname" nowrap> <em>type</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXBlockType&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Enqueue a motion event for <em>pDev</em>. The <em>v</em> vector has length <em>axesCount</em>, and contains values for each of the axes, starting at <em>firstAxes</em>.<p>
-The <em>type</em> of the motion may be <em>DMX_RELATIVE</em>, <em>DMX_ABSOLUTE</em>, or <em>DMX_ABSOLUTE_CONFINED</em> (in the latter case, the pointer will not be allowed to move outside the global boundaires).<p>
-If <em>block</em> is set to <em>DMX_BLOCK</em>, then the SIGIO handler will be blocked around calls to <a class="el" href="dmxinput_8h.html#a24">dmxeqEnqueue()</a>. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8h-source.html
deleted file mode 100644
index ead3c2d9f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8h-source.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxevents.h</h1><a href="dmxevents_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXEVENTS_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXEVENTS_H_</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxevents_8c.html#a23">dmxMotion</a>(DevicePtr pDev, <span class="keywordtype">int</span> *v, <span class="keywordtype">int</span> firstAxis, <span class="keywordtype">int</span> axesCount,
-00042 DMXMotionType type, DMXBlockType block);
-00043 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxevents_8c.html#a27">dmxEnqueue</a>(DevicePtr pDev, <span class="keywordtype">int</span> type, <span class="keywordtype">int</span> detail, KeySym keySym,
-00044 XEvent *e, DMXBlockType block);
-00045 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxevents_8c.html#a28">dmxCheckSpecialKeys</a>(DevicePtr pDev, KeySym keySym);
-00046 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxevents_8c.html#a22">dmxInvalidateGlobalPosition</a>(<span class="keywordtype">void</span>);
-00047 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8h.html
deleted file mode 100644
index 2aa5910d1..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxevents_8h.html
+++ /dev/null
@@ -1,233 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxevents.h File Reference</h1>
-<p>
-<a href="dmxevents_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxevents_8h.html#a0">dmxMotion</a> (DevicePtr pDev, int *v, int firstAxis, int axesCount, DMXMotionType type, DMXBlockType block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxevents_8h.html#a1">dmxEnqueue</a> (DevicePtr pDev, int type, int detail, KeySym keySym, XEvent *e, DMXBlockType block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxevents_8h.html#a2">dmxCheckSpecialKeys</a> (DevicePtr pDev, KeySym keySym)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxevents_8h.html#a3">dmxInvalidateGlobalPosition</a> (void)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to event processing functions. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxevents_8h.html">dmxevents.h</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a2" doxytag="dmxevents.h::dmxCheckSpecialKeys" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxCheckSpecialKeys </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeySym&nbsp;</td>
- <td class="mdname" nowrap> <em>keySym</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-A pointer to this routine is passed to low-level input drivers so that all special keychecking is unified to this file. This function returns 0 if no special keys have been pressed. If the user has requested termination of the DMX server, -1 is returned. If the user has requested a switch to a VT, then the (1-based) number of that VT is returned. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxevents.h::dmxEnqueue" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxEnqueue </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>type</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>detail</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeySym&nbsp;</td>
- <td class="mdname" nowrap> <em>keySym</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>XEvent *&nbsp;</td>
- <td class="mdname" nowrap> <em>e</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXBlockType&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Enqueue a non-motion event from the <em>pDev</em> device with the specified <em>type</em> and <em>detail</em>. If the event is a KeyPress or KeyRelease event, then the <em>keySym</em> is also specified.<p>
-If <em>block</em> is set to <em>DMX_BLOCK</em>, then the SIGIO handler will be blocked around calls to <a class="el" href="dmxinput_8h.html#a24">dmxeqEnqueue()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxevents.h::dmxInvalidateGlobalPosition" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInvalidateGlobalPosition </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Invalidate the global position for #dmxCoreMotion. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxevents.h::dmxMotion" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxMotion </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>v</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>firstAxes</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>axesCount</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXMotionType&nbsp;</td>
- <td class="mdname" nowrap> <em>type</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXBlockType&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Enqueue a motion event for <em>pDev</em>. The <em>v</em> vector has length <em>axesCount</em>, and contains values for each of the axes, starting at <em>firstAxes</em>.<p>
-The <em>type</em> of the motion may be <em>DMX_RELATIVE</em>, <em>DMX_ABSOLUTE</em>, or <em>DMX_ABSOLUTE_CONFINED</em> (in the latter case, the pointer will not be allowed to move outside the global boundaires).<p>
-If <em>block</em> is set to <em>DMX_BLOCK</em>, then the SIGIO handler will be blocked around calls to <a class="el" href="dmxinput_8h.html#a24">dmxeqEnqueue()</a>. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxext_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxext_8h-source.html
deleted file mode 100644
index e18f0f785..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxext_8h-source.html
+++ /dev/null
@@ -1,197 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxext.h</h1><a href="dmxext_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002-2004 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00040 <span class="preprocessor">#ifndef _DMXEXT_H_</span>
-00041 <span class="preprocessor"></span><span class="preprocessor">#define _DMXEXT_H_</span>
-00042 <span class="preprocessor"></span>
-00043 <span class="comment">/* These values must be larger than LastExtensionError.</span>
-00044 <span class="comment"> The values in dmxext.h and dmxproto.h *MUST* match. */</span>
-00045 <span class="preprocessor">#define DmxBadXinerama 1001</span>
-00046 <span class="preprocessor"></span><span class="preprocessor">#define DmxBadValue 1002</span>
-00047 <span class="preprocessor"></span><span class="preprocessor">#define DmxBadReply 1003</span>
-00048 <span class="preprocessor"></span>
-00049 <span class="preprocessor">#define DMXScreenWindowWidth (1L&lt;&lt;0)</span>
-00050 <span class="preprocessor"></span><span class="preprocessor">#define DMXScreenWindowHeight (1L&lt;&lt;1)</span>
-00051 <span class="preprocessor"></span><span class="preprocessor">#define DMXScreenWindowXoffset (1L&lt;&lt;2)</span>
-00052 <span class="preprocessor"></span><span class="preprocessor">#define DMXScreenWindowYoffset (1L&lt;&lt;3)</span>
-00053 <span class="preprocessor"></span><span class="preprocessor">#define DMXRootWindowWidth (1L&lt;&lt;4)</span>
-00054 <span class="preprocessor"></span><span class="preprocessor">#define DMXRootWindowHeight (1L&lt;&lt;5)</span>
-00055 <span class="preprocessor"></span><span class="preprocessor">#define DMXRootWindowXoffset (1L&lt;&lt;6)</span>
-00056 <span class="preprocessor"></span><span class="preprocessor">#define DMXRootWindowYoffset (1L&lt;&lt;7)</span>
-00057 <span class="preprocessor"></span><span class="preprocessor">#define DMXRootWindowXorigin (1L&lt;&lt;8)</span>
-00058 <span class="preprocessor"></span><span class="preprocessor">#define DMXRootWindowYorigin (1L&lt;&lt;9)</span>
-00059 <span class="preprocessor"></span>
-00060 <span class="preprocessor">#define DMXDesktopWidth (1L&lt;&lt;0)</span>
-00061 <span class="preprocessor"></span><span class="preprocessor">#define DMXDesktopHeight (1L&lt;&lt;1)</span>
-00062 <span class="preprocessor"></span><span class="preprocessor">#define DMXDesktopShiftX (1L&lt;&lt;2)</span>
-00063 <span class="preprocessor"></span><span class="preprocessor">#define DMXDesktopShiftY (1L&lt;&lt;3)</span>
-00064 <span class="preprocessor"></span>
-00065 <span class="preprocessor">#define DMXInputType (1L&lt;&lt;0)</span>
-00066 <span class="preprocessor"></span><span class="preprocessor">#define DMXInputPhysicalScreen (1L&lt;&lt;1)</span>
-00067 <span class="preprocessor"></span><span class="preprocessor">#define DMXInputSendsCore (1L&lt;&lt;2)</span>
-00068 <span class="preprocessor"></span>
-00069 <span class="preprocessor">#ifndef _DMX_SERVER_</span>
-00070 <span class="preprocessor"></span>
-<a name="l00073"></a><a class="code" href="structDMXScreenAttributes.html">00073</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00074 <span class="keywordtype">char</span> *displayName;
-00075 <span class="keywordtype">int</span> logicalScreen;
-00076
-00077 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> screenWindowWidth; <span class="comment">/* displayName's coordinate system */</span>
-00078 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> screenWindowHeight; <span class="comment">/* displayName's coordinate system */</span>
-00079 <span class="keywordtype">int</span> screenWindowXoffset; <span class="comment">/* displayName's coordinate system */</span>
-00080 <span class="keywordtype">int</span> screenWindowYoffset; <span class="comment">/* displayName's coordinate system */</span>
-00081
-00082 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rootWindowWidth; <span class="comment">/* screenWindow's coordinate system */</span>
-00083 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rootWindowHeight; <span class="comment">/* screenWindow's coordinate system */</span>
-00084 <span class="keywordtype">int</span> rootWindowXoffset; <span class="comment">/* screenWindow's coordinate system */</span>
-00085 <span class="keywordtype">int</span> rootWindowYoffset; <span class="comment">/* screenWindow's coordinate system */</span>
-00086
-00087 <span class="keywordtype">int</span> rootWindowXorigin; <span class="comment">/* global coordinate system */</span>
-00088 <span class="keywordtype">int</span> rootWindowYorigin; <span class="comment">/* global coordinate system */</span>
-00089 } <a class="code" href="structDMXScreenAttributes.html">DMXScreenAttributes</a>;
-00090
-<a name="l00093"></a><a class="code" href="structDMXWindowAttributes.html">00093</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00094 <span class="keywordtype">int</span> screen;
-00095 Window window;
-00096 XRectangle pos, vis;
-00097 } <a class="code" href="structDMXWindowAttributes.html">DMXWindowAttributes</a>;
-00098
-<a name="l00101"></a><a class="code" href="structDMXDesktopAttributes.html">00101</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00102 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> width; <span class="comment">/* global coordinate system */</span>
-00103 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> height; <span class="comment">/* global coordinate system */</span>
-00104 <span class="keywordtype">int</span> shiftX; <span class="comment">/* global coordinate system */</span>
-00105 <span class="keywordtype">int</span> shiftY; <span class="comment">/* global coordinate system */</span>
-00106 } <a class="code" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a>;
-00107
-<a name="l00110"></a><a class="code" href="dmxext_8h.html#a41">00110</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00111 DMXLocalInputType,
-00112 DMXConsoleInputType,
-00113 DMXBackendInputType
-00114 } <a class="code" href="dmxext_8h.html#a41">DMXInputEnum</a>;
-00115
-<a name="l00118"></a><a class="code" href="structDMXInputAttributes.html">00118</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00119 <a class="code" href="dmxext_8h.html#a41">DMXInputEnum</a> inputType;
-00120 <span class="keywordtype">int</span> physicalScreen;
-00121 <span class="keywordtype">int</span> physicalId;
-00122 Bool isCore;
-00123 Bool sendsCore;
-00124 <span class="keyword">const</span> <span class="keywordtype">char</span> *name;
-00125 Bool detached;
-00126 } <a class="code" href="structDMXInputAttributes.html">DMXInputAttributes</a>;
-00127
-00128 _XFUNCPROTOBEGIN
-00129
-00130 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a10">DMXQueryExtension</a>(Display *dpy,
-00131 <span class="keywordtype">int</span> *event_basep, <span class="keywordtype">int</span> *error_basep);
-00132 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a11">DMXQueryVersion</a>(Display *dpy, <span class="keywordtype">int</span> *major_version,
-00133 <span class="keywordtype">int</span> *minor_version, <span class="keywordtype">int</span> *patch_version);
-00134 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a12">DMXSync</a>(Display *dpy);
-00135 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a13">DMXForceWindowCreation</a>(Display *dpy, Window window);
-00136
-00137
-00138 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a14">DMXGetScreenCount</a>(Display *dpy, <span class="keywordtype">int</span> *screen_count);
-00139 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a15">DMXGetScreenAttributes</a>(Display *dpy,
-00140 <span class="keywordtype">int</span> screen,
-00141 <a class="code" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *attr);
-00142 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="lib_2dmx_2dmx_8c.html#a20">DMXChangeScreensAttributes</a>(Display *dpy,
-00143 <span class="keywordtype">int</span> screen_count,
-00144 <span class="keywordtype">int</span> *screens,
-00145 <span class="keywordtype">int</span> mask_count,
-00146 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *masks,
-00147 <a class="code" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *attr, <span class="comment">/* vector */</span>
-00148 <span class="keywordtype">int</span> *error_screen);
-00149
-00150 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a21">DMXAddScreen</a>(Display *dpy,
-00151 <span class="keyword">const</span> <span class="keywordtype">char</span> *displayName,
-00152 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mask,
-00153 <a class="code" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *attr,
-00154 <span class="keywordtype">int</span> *screen);
-00155 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a22">DMXRemoveScreen</a>(Display *dpy, <span class="keywordtype">int</span> screen);
-00156
-00157 <span class="comment">/* Call DMXGetScreenWindowCount and allocate info to that size. Pass</span>
-00158 <span class="comment"> * the size in available_count. This call can generate a large amount</span>
-00159 <span class="comment"> * of wire traffic and should not be used called with available_count=0</span>
-00160 <span class="comment"> * just to determine the screen_count value -- use DMXGetScreenCount</span>
-00161 <span class="comment"> * instead. NOTE: Also see DMX protocol specification (DMXSpec.txt) for</span>
-00162 <span class="comment"> * usage of DMXSync to flush pending commands. */</span>
-00163 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a23">DMXGetWindowAttributes</a>(Display *dpy, Window window,
-00164 <span class="keywordtype">int</span> *screen_count, <span class="keywordtype">int</span> available_count,
-00165 <a class="code" href="structDMXWindowAttributes.html">DMXWindowAttributes</a> *attr);
-00166
-00167 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a24">DMXGetDesktopAttributes</a>(Display *dpy, <a class="code" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a> *attr);
-00168 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="lib_2dmx_2dmx_8c.html#a27">DMXChangeDesktopAttributes</a>(Display *dpy,
-00169 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mask,
-00170 <a class="code" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a> *attr);
-00171
-00172 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a28">DMXGetInputCount</a>(Display *dpy, <span class="keywordtype">int</span> *input_count);
-00173 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a29">DMXGetInputAttributes</a>(Display *dpy, <span class="keywordtype">int</span> id,
-00174 <a class="code" href="structDMXInputAttributes.html">DMXInputAttributes</a> *attr);
-00175
-00176 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a30">DMXAddInput</a>(Display *dpy,
-00177 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mask,
-00178 <a class="code" href="structDMXInputAttributes.html">DMXInputAttributes</a> *attr,
-00179 <span class="keywordtype">int</span> *id);
-00180 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a33">DMXRemoveInput</a>(Display *dpy, <span class="keywordtype">int</span> id);
-00181
-00182 <span class="comment">/* These are helper functions that call DMXAddInput. */</span>
-00183 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a31">DMXAddBackendInput</a>(Display *dpy, <span class="keywordtype">int</span> screen, <span class="keywordtype">int</span> sendsCore,
-00184 <span class="keywordtype">int</span> *newId);
-00185 <span class="keyword">extern</span> Bool <a class="code" href="lib_2dmx_2dmx_8c.html#a32">DMXAddConsoleInput</a>(Display *dpy, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">int</span> sendsCore,
-00186 <span class="keywordtype">int</span> *newId);
-00187
-00188 _XFUNCPROTOEND
-00189 <span class="preprocessor">#endif</span>
-00190 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxext_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxext_8h.html
deleted file mode 100644
index eb143283f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxext_8h.html
+++ /dev/null
@@ -1,926 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxext.h File Reference</h1>
-<p>
-<a href="dmxext_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structDMXInputAttributes.html">DMXInputAttributes</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structDMXWindowAttributes.html">DMXWindowAttributes</a></td></tr>
-
-<tr><td colspan=2><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a41">DMXInputEnum</a> </td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>_XFUNCPROTOBEGIN Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a23">DMXQueryExtension</a> (Display *dpy, int *event_basep, int *error_basep)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a24">DMXQueryVersion</a> (Display *dpy, int *major_version, int *minor_version, int *patch_version)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a25">DMXSync</a> (Display *dpy)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a26">DMXForceWindowCreation</a> (Display *dpy, Window window)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a27">DMXGetScreenCount</a> (Display *dpy, int *screen_count)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a28">DMXGetScreenAttributes</a> (Display *dpy, int screen, <a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a29">DMXChangeScreensAttributes</a> (Display *dpy, int screen_count, int *screens, int mask_count, unsigned int *masks, <a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *attr, int *error_screen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a30">DMXAddScreen</a> (Display *dpy, const char *displayName, unsigned int mask, <a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *attr, int *screen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a31">DMXRemoveScreen</a> (Display *dpy, int screen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a32">DMXGetWindowAttributes</a> (Display *dpy, Window window, int *screen_count, int available_count, <a class="el" href="structDMXWindowAttributes.html">DMXWindowAttributes</a> *attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a33">DMXGetDesktopAttributes</a> (Display *dpy, <a class="el" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a> *attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a34">DMXChangeDesktopAttributes</a> (Display *dpy, unsigned int mask, <a class="el" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a> *attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a35">DMXGetInputCount</a> (Display *dpy, int *input_count)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a36">DMXGetInputAttributes</a> (Display *dpy, int id, <a class="el" href="structDMXInputAttributes.html">DMXInputAttributes</a> *attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a37">DMXAddInput</a> (Display *dpy, unsigned int mask, <a class="el" href="structDMXInputAttributes.html">DMXInputAttributes</a> *attr, int *id)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a38">DMXRemoveInput</a> (Display *dpy, int id)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a39">DMXAddBackendInput</a> (Display *dpy, int screen, int sendsCore, int *newId)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxext_8h.html#a40">DMXAddConsoleInput</a> (Display *dpy, const char *name, int sendsCore, int *newId)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file describes the interface to the client-side libdmx.a library. All DMX-aware client-side applications should include this file.<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="a41" doxytag="dmxext.h::DMXInputEnum" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> enum <a class="el" href="dmxext_8h.html#a41">DMXInputEnum</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Enumeration for the #inputType field in the <a class="el" href="structDMXInputAttributes.html">DMXInputAttributes</a> structure. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a39" doxytag="dmxext.h::DMXAddBackendInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXAddBackendInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>screen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>sendsCore</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>newId</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Add backend input (a helper function that calls <a class="el" href="lib_2dmx_2dmx_8c.html#a30">DMXAddInput</a>). </td>
- </tr>
-</table>
-<a class="anchor" name="a40" doxytag="dmxext.h::DMXAddConsoleInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXAddConsoleInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>name</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>sendsCore</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>newId</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Add console input (a helper function that calls <a class="el" href="lib_2dmx_2dmx_8c.html#a30">DMXAddInput</a>). </td>
- </tr>
-</table>
-<a class="anchor" name="a37" doxytag="dmxext.h::DMXAddInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXAddInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXInputAttributes.html">DMXInputAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Add input. </td>
- </tr>
-</table>
-<a class="anchor" name="a30" doxytag="dmxext.h::DMXAddScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXAddScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>displayName</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>screen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Add a screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a34" doxytag="dmxext.h::DMXChangeDesktopAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int DMXChangeDesktopAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the global bounding box and origin offset.<p>
-Available in DMX Protocol Version 2.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a29" doxytag="dmxext.h::DMXChangeScreensAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int DMXChangeScreensAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>screen_count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>screens</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>mask_count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int *&nbsp;</td>
- <td class="mdname" nowrap> <em>masks</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>attrs</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>error_screen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change geometries and positions of the DMX screen and root windows on the back-end X server. </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="dmxext.h::DMXForceWindowCreation" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXForceWindowCreation </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Window&nbsp;</td>
- <td class="mdname" nowrap> <em>window</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-The creation of the specified <em>window</em> will be forced.<p>
-Available in DMX Protocol Version 1.2 Reply added in DMX Protocol Version 2.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a33" doxytag="dmxext.h::DMXGetDesktopAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXGetDesktopAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXGetDesktopAttributes protocol request returns information correctly, the information will be placed in <em>attr</em>, and True will be returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 2.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a36" doxytag="dmxext.h::DMXGetInputAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXGetInputAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>id</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXInputAttributes.html">DMXInputAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>inf</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXGetInputAttributes protocol request returns information about the input device with the specified <em>id</em>, information about the input device will be placed in <em>inf</em>, and True will be returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 1.1 </td>
- </tr>
-</table>
-<a class="anchor" name="a35" doxytag="dmxext.h::DMXGetInputCount" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXGetInputCount </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>input_count</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXGetInputCount protocol request returns the input count, the value will be placed in <em>input_count</em>, and True will be returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 1.1 </td>
- </tr>
-</table>
-<a class="anchor" name="a28" doxytag="dmxext.h::DMXGetScreenAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXGetScreenAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>physical_screen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXGetScreenAttributes protocol request returns information for the specified <em>physical_screen</em>, information about the screen will be placed in <em>attr</em>, and True will be returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 1.0; Modified in Version 2.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a27" doxytag="dmxext.h::DMXGetScreenCount" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXGetScreenCount </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>screen_count</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXGetScreenCount protocol request returns the screen count, the value will be placed in <em>screen_count</em>, and True will be returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 1.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a32" doxytag="dmxext.h::DMXGetWindowAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXGetWindowAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Window&nbsp;</td>
- <td class="mdname" nowrap> <em>window</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>screen_count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>available_count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXWindowAttributes.html">DMXWindowAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>inf</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXGetWindowAttributes protocol request returns information about the specified <em>window</em>, the number of screens for which information is available will be returned in <em>screen_count</em> and information about the first <em>available_count</em> of those screens will be placed in <em>inf</em>. Because this call transports a great deal of information over the wire, please call <a class="el" href="lib_2dmx_2dmx_8c.html#a14">DMXGetScreenCount</a> first, and make sure <em>inf</em> is that large.<p>
-Note that if the specified <em>window</em> has not yet been mapped when <a class="el" href="lib_2dmx_2dmx_8c.html#a23">DMXGetWindowAttributes</a> is called, then a subsequent XMapWindow call might be buffered in xlib while requests directly to the back-end X servers are processed. This race condition can be solved by calling <a class="el" href="lib_2dmx_2dmx_8c.html#a12">DMXSync</a> before talking directly to the back-end X servers.<p>
-Available in DMX Protocol Version 1.0, but not working correctly until DMX Protocol Version 1.4 </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxext.h::DMXQueryExtension" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> _XFUNCPROTOBEGIN Bool DMXQueryExtension </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>event_basep</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>error_basep</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the server has the DMX extension, the event and error bases will be placed in <em>event_basep</em> and <em>error_basep</em>, and True will be returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 1.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="dmxext.h::DMXQueryVersion" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXQueryVersion </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>majorVersion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>minorVersion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>patchVersion</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXQueryVersion protocol request returns version information from the server, <em>majorVersion</em>, <em>minorVersion</em>, and <em>patchVersion</em> are filled in with the appropriate information and True is returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 1.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a38" doxytag="dmxext.h::DMXRemoveInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXRemoveInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Remove an input. </td>
- </tr>
-</table>
-<a class="anchor" name="a31" doxytag="dmxext.h::DMXRemoveScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXRemoveScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>screen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Remove a screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="dmxext.h::DMXSync" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXSync </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dpy</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Flush all pending dmxSync requests in DMX server.<p>
-Available in DMX Protocol Version 1.5 </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8c.html
deleted file mode 100644
index 6bcf8f133..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8c.html
+++ /dev/null
@@ -1,433 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxextension.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinit_8h-source.html">dmxinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxextension_8h-source.html">dmxextension.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxwindow_8h-source.html">dmxwindow.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcb_8h-source.html">dmxcb.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcursor_8h-source.html">dmxcursor.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxpixmap_8h-source.html">dmxpixmap.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxgc_8h-source.html">dmxgc.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxfont_8h-source.html">dmxfont.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcmap_8h-source.html">dmxcmap.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxpict_8h-source.html">dmxpict.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinput_8h-source.html">dmxinput.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxscrinit_8h-source.html">dmxscrinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinputinit_8h-source.html">input/dmxinputinit.h</a>"</code><br>
-<code>#include "windowstr.h"</code><br>
-<code>#include "inputstr.h"</code><br>
-<code>#include "<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>"</code><br>
-<code>#include "cursorstr.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8c.html#a1">dmxGetScreenAttributes</a> (int physical, DMXScreenAttributesPtr attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8c.html#a2">dmxGetWindowAttributes</a> (WindowPtr pWindow, DMXWindowAttributesPtr attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8c.html#a4">dmxGetInputCount</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8c.html#a5">dmxGetInputAttributes</a> (int deviceId, DMXInputAttributesPtr attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8c.html#a7">dmxAddInput</a> (DMXInputAttributesPtr attr, int *id)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8c.html#a8">dmxRemoveInput</a> (int id)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>unsigned long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8c.html#a9">dmxGetNumScreens</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8c.html#a10">dmxForceWindowCreation</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8c.html#a11">dmxFlushPendingSyncs</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8c.html#a18">dmxAttachScreen</a> (int idx, DMXScreenAttributesPtr attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8c.html#a23">dmxDetachScreen</a> (int idx)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides the only interface to the X server extension support in programs/Xserver/Xext. Those programs should only include <a class="el" href="dmxext_8h.html">dmxext.h</a><hr><h2>Function Documentation</h2>
-<a class="anchor" name="a7" doxytag="dmxextension.c::dmxAddInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxAddInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DMXInputAttributesPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Add an input with the specified attributes. If the input is added, the physical id is returned in <em>deviceId</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxextension.c::dmxAttachScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxAttachScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>idx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXScreenAttributesPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Reattach previously detached back-end screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxextension.c::dmxDetachScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxDetachScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>idx</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Detach back-end screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxextension.c::dmxFlushPendingSyncs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxFlushPendingSyncs </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Flush pending syncs for all screens. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxextension.c::dmxForceWindowCreation" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxForceWindowCreation </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make sure that <a class="el" href="dmxwindow_8h.html#a14">dmxCreateAndRealizeWindow</a> has been called for <em>pWindow</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxextension.c::dmxGetInputAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxGetInputAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>deviceId</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXInputAttributesPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return information about the device with id = <em>deviceId</em>. This information is primarily for the <a class="el" href="programs_2Xserver_2Xext_2dmx_8c.html#a58">ProcDMXGetInputAttributes()</a> function, which does not have access to the appropriate data structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxextension.c::dmxGetInputCount" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxGetInputCount </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the total number of devices, not just <a class="el" href="dmxinput_8h.html#a4">dmxNumInputs</a>. The number returned should be the same as that returned by XListInputDevices. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxextension.c::dmxGetNumScreens" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> unsigned long dmxGetNumScreens </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the value of <a class="el" href="dmxinit_8c.html#a1">dmxNumScreens</a> -- the total number of backend screens in use (these are logical screens and may be larger than the number of backend displays). </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxextension.c::dmxGetScreenAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxGetScreenAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>physical</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXScreenAttributesPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine provides information to the DMX protocol extension about a particular screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxextension.c::dmxGetWindowAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxGetWindowAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXWindowAttributesPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine provides information to the DMX protocol extension about a particular window. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxextension.c::dmxRemoveInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxRemoveInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>id</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Remove the input with physical id <em>id</em>. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8h-source.html
deleted file mode 100644
index 4fd796af5..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8h-source.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxextension.h</h1><a href="dmxextension_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2003-2004 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Author:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00033 <span class="comment"> *</span>
-00034 <span class="comment"> */</span>
-00035
-00040 <span class="preprocessor">#ifndef _DMXEXTENSION_H_</span>
-00041 <span class="preprocessor"></span><span class="preprocessor">#define _DMXEXTENSION_H_</span>
-00042 <span class="preprocessor"></span>
-<a name="l00045"></a><a class="code" href="structDMXScreenAttributesRec.html">00045</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00046 <span class="keyword">const</span> <span class="keywordtype">char</span> *displayName;
-00047 <span class="keywordtype">int</span> logicalScreen;
-00048
-00049 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> screenWindowWidth; <span class="comment">/* displayName's coordinate system */</span>
-00050 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> screenWindowHeight; <span class="comment">/* displayName's coordinate system */</span>
-00051 <span class="keywordtype">int</span> screenWindowXoffset; <span class="comment">/* displayName's coordinate system */</span>
-00052 <span class="keywordtype">int</span> screenWindowYoffset; <span class="comment">/* displayName's coordinate system */</span>
-00053
-00054 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rootWindowWidth; <span class="comment">/* screenWindow's coordinate system */</span>
-00055 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rootWindowHeight; <span class="comment">/* screenWindow's coordinate system */</span>
-00056 <span class="keywordtype">int</span> rootWindowXoffset; <span class="comment">/* screenWindow's coordinate system */</span>
-00057 <span class="keywordtype">int</span> rootWindowYoffset; <span class="comment">/* screenWindow's coordinate system */</span>
-00058
-00059 <span class="keywordtype">int</span> rootWindowXorigin; <span class="comment">/* global coordinate system */</span>
-00060 <span class="keywordtype">int</span> rootWindowYorigin; <span class="comment">/* global coordinate system */</span>
-00061 } <a class="code" href="structDMXScreenAttributesRec.html">DMXScreenAttributesRec</a>, *DMXScreenAttributesPtr;
-00062
-<a name="l00064"></a><a class="code" href="structDMXWindowAttributesRec.html">00064</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00065 <span class="keywordtype">int</span> screen;
-00066 Window window;
-00067 xRectangle pos;
-00068 xRectangle vis;
-00069 } <a class="code" href="structDMXWindowAttributesRec.html">DMXWindowAttributesRec</a>, *DMXWindowAttributesPtr;
-00070
-<a name="l00073"></a><a class="code" href="structDMXDesktopAttributesRec.html">00073</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00074 <span class="keywordtype">int</span> width;
-00075 <span class="keywordtype">int</span> height;
-00076 <span class="keywordtype">int</span> shiftX;
-00077 <span class="keywordtype">int</span> shiftY;
-00078 } <a class="code" href="structDMXDesktopAttributesRec.html">DMXDesktopAttributesRec</a>, *DMXDesktopAttributesPtr;
-00079
-<a name="l00081"></a><a class="code" href="structDMXInputAttributesRec.html">00081</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00082 <span class="keyword">const</span> <span class="keywordtype">char</span> *name;
-00083 <span class="keywordtype">int</span> inputType;
-00084 <span class="keywordtype">int</span> physicalScreen;
-00085 <span class="keywordtype">int</span> physicalId;
-00086 <span class="keywordtype">int</span> isCore;
-00087 <span class="keywordtype">int</span> sendsCore;
-00088 <span class="keywordtype">int</span> detached;
-00089 } <a class="code" href="structDMXInputAttributesRec.html">DMXInputAttributesRec</a>, *DMXInputAttributesPtr;
-00090
-00091
-00092 <span class="keyword">extern</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="dmxextension_8c.html#a9">dmxGetNumScreens</a>(<span class="keywordtype">void</span>);
-00093 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxextension_8c.html#a10">dmxForceWindowCreation</a>(WindowPtr pWindow);
-00094 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxextension_8c.html#a11">dmxFlushPendingSyncs</a>(<span class="keywordtype">void</span>);
-00095 <span class="keyword">extern</span> Bool <a class="code" href="dmxextension_8c.html#a1">dmxGetScreenAttributes</a>(<span class="keywordtype">int</span> physical,
-00096 DMXScreenAttributesPtr attr);
-00097 <span class="keyword">extern</span> Bool <a class="code" href="dmxextension_8c.html#a2">dmxGetWindowAttributes</a>(WindowPtr pWindow,
-00098 DMXWindowAttributesPtr attr);
-00099 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxGetDesktopAttributes(DMXDesktopAttributesPtr attr);
-00100 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxextension_8c.html#a4">dmxGetInputCount</a>(<span class="keywordtype">void</span>);
-00101 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxextension_8c.html#a5">dmxGetInputAttributes</a>(<span class="keywordtype">int</span> deviceId,
-00102 DMXInputAttributesPtr attr);
-00103 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxextension_8c.html#a7">dmxAddInput</a>(DMXInputAttributesPtr attr, <span class="keywordtype">int</span> *deviceId);
-00104 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxextension_8c.html#a8">dmxRemoveInput</a>(<span class="keywordtype">int</span> deviceId);
-00105
-00106 <span class="keyword">extern</span> <span class="keywordtype">int</span> dmxConfigureScreenWindows(<span class="keywordtype">int</span> nscreens,
-00107 CARD32 *screens,
-00108 DMXScreenAttributesPtr attribs,
-00109 <span class="keywordtype">int</span> *errorScreen);
-00110
-00111 <span class="keyword">extern</span> <span class="keywordtype">int</span> dmxConfigureDesktop(DMXDesktopAttributesPtr attribs);
-00112
-00113 <span class="comment">/* dmxUpdateScreenResources exposed for dmxCreateWindow in dmxwindow.c */</span>
-00114 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxUpdateScreenResources(ScreenPtr pScreen,
-00115 <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> h);
-00116
-00117 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxextension_8c.html#a18">dmxAttachScreen</a>(<span class="keywordtype">int</span> idx, DMXScreenAttributesPtr attr);
-00118 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxextension_8c.html#a23">dmxDetachScreen</a>(<span class="keywordtype">int</span> idx);
-00119 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8h.html
deleted file mode 100644
index 41cdcd3eb..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxextension_8h.html
+++ /dev/null
@@ -1,426 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxextension.h File Reference</h1>
-<p>
-<a href="dmxextension_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structDMXDesktopAttributesRec.html">DMXDesktopAttributesRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structDMXInputAttributesRec.html">DMXInputAttributesRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structDMXScreenAttributesRec.html">DMXScreenAttributesRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structDMXWindowAttributesRec.html">DMXWindowAttributesRec</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>unsigned long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8h.html#a4">dmxGetNumScreens</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8h.html#a5">dmxForceWindowCreation</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8h.html#a6">dmxFlushPendingSyncs</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8h.html#a7">dmxGetScreenAttributes</a> (int physical, DMXScreenAttributesPtr attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8h.html#a8">dmxGetWindowAttributes</a> (WindowPtr pWindow, DMXWindowAttributesPtr attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8h.html#a10">dmxGetInputCount</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8h.html#a11">dmxGetInputAttributes</a> (int deviceId, DMXInputAttributesPtr attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8h.html#a12">dmxAddInput</a> (DMXInputAttributesPtr attr, int *deviceId)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8h.html#a13">dmxRemoveInput</a> (int deviceId)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8h.html#a17">dmxAttachScreen</a> (int idx, DMXScreenAttributesPtr attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxextension_8h.html#a18">dmxDetachScreen</a> (int idx)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for DMX extension support. These routines are called by function in Xserver/Xext/dmx.c. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxextension_8c.html">dmxextension.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a12" doxytag="dmxextension.h::dmxAddInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxAddInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DMXInputAttributesPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Add an input with the specified attributes. If the input is added, the physical id is returned in <em>deviceId</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxextension.h::dmxAttachScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxAttachScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>idx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXScreenAttributesPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Reattach previously detached back-end screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxextension.h::dmxDetachScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxDetachScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>idx</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Detach back-end screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxextension.h::dmxFlushPendingSyncs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxFlushPendingSyncs </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Flush pending syncs for all screens. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxextension.h::dmxForceWindowCreation" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxForceWindowCreation </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make sure that <a class="el" href="dmxwindow_8h.html#a14">dmxCreateAndRealizeWindow</a> has been called for <em>pWindow</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxextension.h::dmxGetInputAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxGetInputAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>deviceId</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXInputAttributesPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return information about the device with id = <em>deviceId</em>. This information is primarily for the <a class="el" href="programs_2Xserver_2Xext_2dmx_8c.html#a58">ProcDMXGetInputAttributes()</a> function, which does not have access to the appropriate data structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxextension.h::dmxGetInputCount" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxGetInputCount </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the total number of devices, not just <a class="el" href="dmxinput_8h.html#a4">dmxNumInputs</a>. The number returned should be the same as that returned by XListInputDevices. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxextension.h::dmxGetNumScreens" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> unsigned long dmxGetNumScreens </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the value of <a class="el" href="dmxinit_8c.html#a1">dmxNumScreens</a> -- the total number of backend screens in use (these are logical screens and may be larger than the number of backend displays). </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxextension.h::dmxGetScreenAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxGetScreenAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>physical</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXScreenAttributesPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine provides information to the DMX protocol extension about a particular screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxextension.h::dmxGetWindowAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxGetWindowAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DMXWindowAttributesPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine provides information to the DMX protocol extension about a particular window. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxextension.h::dmxRemoveInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxRemoveInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>id</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Remove the input with physical id <em>id</em>. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8c.html
deleted file mode 100644
index b1c6c9f87..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8c.html
+++ /dev/null
@@ -1,257 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxfont.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxfont_8h-source.html">dmxfont.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<code>#include "fontstruct.h"</code><br>
-<code>#include "dixfont.h"</code><br>
-<code>#include "dixstruct.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8c.html#a10">dmxInitFonts</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8c.html#a11">dmxResetFonts</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8c.html#a12">dmxBELoadFont</a> (ScreenPtr pScreen, FontPtr pFont)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8c.html#a13">dmxRealizeFont</a> (ScreenPtr pScreen, FontPtr pFont)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8c.html#a14">dmxBEFreeFont</a> (ScreenPtr pScreen, FontPtr pFont)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8c.html#a15">dmxUnrealizeFont</a> (ScreenPtr pScreen, FontPtr pFont)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides support for fonts.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a14" doxytag="dmxfont.c::dmxBEFreeFont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreeFont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>FontPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFont</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free <em>pFont</em> on the back-end associated with <em>pScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxfont.c::dmxBELoadFont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBELoadFont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>FontPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFont</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Load the font, <em>pFont</em>, on the back-end server associated with <em>pScreen</em>. When a font is loaded, the font path on back-end server is first initialized to that specified on the command line with the -fontpath options, and then the font is loaded. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxfont.c::dmxInitFonts" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInitFonts </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize font support. In addition to the screen function call pointers, DMX also hooks in at the ProcVector[] level. Here the old ProcVector function pointers are saved and the new ProcVector function pointers are initialized. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxfont.c::dmxRealizeFont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxRealizeFont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>FontPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFont</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Realize the font, <em>pFont</em>, on the back-end server associated with <em>pScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxfont.c::dmxResetFonts" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxResetFonts </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Reset font support by restoring the original ProcVector function pointers. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmxfont.c::dmxUnrealizeFont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxUnrealizeFont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>FontPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFont</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Unrealize the font, <em>pFont</em>, on the back-end server associated with <em>pScreen</em>. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8h-source.html
deleted file mode 100644
index 18412915d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8h-source.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxfont.h</h1><a href="dmxfont_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001-2004 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef DMXFONT_H</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define DMXFONT_H</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="preprocessor">#include "fontstruct.h"</span>
-00042
-<a name="l00044"></a><a class="code" href="struct__dmxFontPriv.html">00044</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__dmxFontPriv.html">_dmxFontPriv</a> {
-00045 <span class="keywordtype">int</span> refcnt;
-00046 XFontStruct **font;
-00047 } <a class="code" href="struct__dmxFontPriv.html">dmxFontPrivRec</a>, *<a class="code" href="struct__dmxFontPriv.html">dmxFontPrivPtr</a>;
-00048
-00049 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxfont_8c.html#a10">dmxInitFonts</a>(<span class="keywordtype">void</span>);
-00050 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxfont_8c.html#a11">dmxResetFonts</a>(<span class="keywordtype">void</span>);
-00051
-00052 <span class="keyword">extern</span> Bool <a class="code" href="dmxfont_8c.html#a13">dmxRealizeFont</a>(ScreenPtr pScreen, FontPtr pFont);
-00053 <span class="keyword">extern</span> Bool <a class="code" href="dmxfont_8c.html#a15">dmxUnrealizeFont</a>(ScreenPtr pScreen, FontPtr pFont);
-00054
-00055 <span class="keyword">extern</span> Bool <a class="code" href="dmxfont_8c.html#a12">dmxBELoadFont</a>(ScreenPtr pScreen, FontPtr pFont);
-00056 <span class="keyword">extern</span> Bool <a class="code" href="dmxfont_8c.html#a14">dmxBEFreeFont</a>(ScreenPtr pScreen, FontPtr pFont);
-00057
-<a name="l00058"></a><a class="code" href="dmxfont_8h.html#a2">00058</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxfont_8h.html#a2">dmxFontPrivateIndex</a>;
-00059
-00060 <span class="preprocessor">#endif </span><span class="comment">/* DMXFONT_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8h.html
deleted file mode 100644
index 503e94697..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxfont_8h.html
+++ /dev/null
@@ -1,333 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxfont.h File Reference</h1><code>#include "fontstruct.h"</code><br>
-
-<p>
-<a href="dmxfont_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxFontPriv.html">_dmxFontPriv</a></td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxFontPriv.html">_dmxFontPriv</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8h.html#a0">dmxFontPrivRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxFontPriv.html">_dmxFontPriv</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8h.html#a1">dmxFontPrivPtr</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8h.html#a3">dmxInitFonts</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8h.html#a4">dmxResetFonts</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8h.html#a5">dmxRealizeFont</a> (ScreenPtr pScreen, FontPtr pFont)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8h.html#a6">dmxUnrealizeFont</a> (ScreenPtr pScreen, FontPtr pFont)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8h.html#a7">dmxBELoadFont</a> (ScreenPtr pScreen, FontPtr pFont)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8h.html#a8">dmxBEFreeFont</a> (ScreenPtr pScreen, FontPtr pFont)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxfont_8h.html#a2">dmxFontPrivateIndex</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for font-related functions. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxfont_8c.html">dmxfont.c</a></dd></dl>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a1" doxytag="dmxfont.h::dmxFontPrivPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxFontPriv.html">_dmxFontPriv</a> * <a class="el" href="struct__dmxFontPriv.html">dmxFontPrivPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Font private area. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxfont.h::dmxFontPrivRec" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxFontPriv.html">_dmxFontPriv</a> <a class="el" href="struct__dmxFontPriv.html">dmxFontPrivRec</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Font private area. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a8" doxytag="dmxfont.h::dmxBEFreeFont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreeFont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>FontPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFont</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free <em>pFont</em> on the back-end associated with <em>pScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxfont.h::dmxBELoadFont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBELoadFont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>FontPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFont</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Load the font, <em>pFont</em>, on the back-end server associated with <em>pScreen</em>. When a font is loaded, the font path on back-end server is first initialized to that specified on the command line with the -fontpath options, and then the font is loaded. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxfont.h::dmxInitFonts" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInitFonts </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize font support. In addition to the screen function call pointers, DMX also hooks in at the ProcVector[] level. Here the old ProcVector function pointers are saved and the new ProcVector function pointers are initialized. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxfont.h::dmxRealizeFont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxRealizeFont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>FontPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFont</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Realize the font, <em>pFont</em>, on the back-end server associated with <em>pScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxfont.h::dmxResetFonts" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxResetFonts </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Reset font support by restoring the original ProcVector function pointers. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxfont.h::dmxUnrealizeFont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxUnrealizeFont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>FontPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFont</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Unrealize the font, <em>pFont</em>, on the back-end server associated with <em>pScreen</em>. </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a2" doxytag="dmxfont.h::dmxFontPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxscrinit_8c.html#a4">dmxFontPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for Fonts </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8c.html
deleted file mode 100644
index 1102958ed..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8c.html
+++ /dev/null
@@ -1,456 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxgc.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxgc_8h-source.html">dmxgc.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxgcops_8h-source.html">dmxgcops.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxpixmap_8h-source.html">dmxpixmap.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxfont_8h-source.html">dmxfont.h</a>"</code><br>
-<code>#include "gcstruct.h"</code><br>
-<code>#include "pixmapstr.h"</code><br>
-<code>#include "migc.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8c.html#a2">dmxInitGC</a> (ScreenPtr pScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8c.html#a3">dmxBECreateGC</a> (ScreenPtr pScreen, GCPtr pGC)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8c.html#a4">dmxCreateGC</a> (GCPtr pGC)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8c.html#a5">dmxValidateGC</a> (GCPtr pGC, unsigned long changes, DrawablePtr pDrawable)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8c.html#a6">dmxChangeGC</a> (GCPtr pGC, unsigned long mask)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8c.html#a7">dmxCopyGC</a> (GCPtr pGCSrc, unsigned long changes, GCPtr pGCDst)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8c.html#a8">dmxBEFreeGC</a> (GCPtr pGC)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8c.html#a9">dmxDestroyGC</a> (GCPtr pGC)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8c.html#a10">dmxChangeClip</a> (GCPtr pGC, int type, pointer pvalue, int nrects)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8c.html#a11">dmxDestroyClip</a> (GCPtr pGC)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8c.html#a12">dmxCopyClip</a> (GCPtr pGCDst, GCPtr pGCSrc)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides support for GCs.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxgc.c::dmxBECreateGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBECreateGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create the GC on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxgc.c::dmxBEFreeGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreeGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pGC</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free the <em>pGC</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxgc.c::dmxChangeClip" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxChangeClip </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>type</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>pvalue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nrects</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the clip rects for a GC. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxgc.c::dmxChangeGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxChangeGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set the values in the graphics context on the back-end server associated with <em>pGC's</em> screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxgc.c::dmxCopyClip" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCopyClip </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGCDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGCSrc</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Copy a GC's clip rects. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxgc.c::dmxCopyGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCopyGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGCSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>changes</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGCDst</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Copy <em>pGCSrc</em> to <em>pGCDst</em> on the back-end server associated with <em>pGCSrc's</em> screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxgc.c::dmxCreateGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxCreateGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pGC</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a graphics context on the back-end server associated /a pGC's screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxgc.c::dmxDestroyClip" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDestroyClip </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pGC</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a GC's clip rects. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxgc.c::dmxDestroyGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDestroyGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pGC</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy the graphics context, <em>pGC</em> and free the corresponding GC on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxgc.c::dmxInitGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxInitGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the GC on <em>pScreen</em>, which currently involves allocating the GC private associated with this screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxgc.c::dmxValidateGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxValidateGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>changes</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Validate a graphics context, <em>pGC</em>, locally in the DMX server and recompute the composite clip, if necessary. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8h-source.html
deleted file mode 100644
index 9e1df9e31..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8h-source.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxgc.h</h1><a href="dmxgc_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001-2004 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef DMXGC_H</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define DMXGC_H</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="preprocessor">#include "gcstruct.h"</span>
-00042
-<a name="l00044"></a><a class="code" href="struct__dmxGCPriv.html">00044</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__dmxGCPriv.html">_dmxGCPriv</a> {
-00045 GCOps *ops;
-00046 GCFuncs *funcs;
-00047 XlibGC gc;
-00048 Bool msc;
-00049 } <a class="code" href="struct__dmxGCPriv.html">dmxGCPrivRec</a>, *<a class="code" href="struct__dmxGCPriv.html">dmxGCPrivPtr</a>;
-00050
-00051
-00052 <span class="keyword">extern</span> Bool <a class="code" href="dmxgc_8c.html#a2">dmxInitGC</a>(ScreenPtr pScreen);
-00053
-00054 <span class="keyword">extern</span> Bool <a class="code" href="dmxgc_8c.html#a4">dmxCreateGC</a>(GCPtr pGC);
-00055 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgc_8c.html#a5">dmxValidateGC</a>(GCPtr pGC, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> changes,
-00056 DrawablePtr pDrawable);
-00057 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgc_8c.html#a6">dmxChangeGC</a>(GCPtr pGC, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> mask);
-00058 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgc_8c.html#a7">dmxCopyGC</a>(GCPtr pGCSrc, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> changes, GCPtr pGCDst);
-00059 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgc_8c.html#a9">dmxDestroyGC</a>(GCPtr pGC);
-00060 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgc_8c.html#a10">dmxChangeClip</a>(GCPtr pGC, <span class="keywordtype">int</span> type, pointer pvalue, <span class="keywordtype">int</span> nrects);
-00061 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgc_8c.html#a11">dmxDestroyClip</a>(GCPtr pGC);
-00062 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgc_8c.html#a12">dmxCopyClip</a>(GCPtr pGCDst, GCPtr pGCSrc);
-00063
-00064 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgc_8c.html#a3">dmxBECreateGC</a>(ScreenPtr pScreen, GCPtr pGC);
-00065 <span class="keyword">extern</span> Bool <a class="code" href="dmxgc_8c.html#a8">dmxBEFreeGC</a>(GCPtr pGC);
-00066
-<a name="l00068"></a><a class="code" href="dmxgc_8h.html#a5">00068</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxgc_8h.html#a5">dmxGCPrivateIndex</a>;
-00069
-<a name="l00071"></a><a class="code" href="dmxgc_8h.html#a0">00071</a> <span class="preprocessor">#define DMX_GET_GC_PRIV(_pGC) \</span>
-00072 <span class="preprocessor"> (dmxGCPrivPtr)(_pGC)-&gt;devPrivates[dmxGCPrivateIndex].ptr</span>
-00073 <span class="preprocessor"></span>
-00074 <span class="preprocessor">#define DMX_GC_FUNC_PROLOGUE(_pGC) \</span>
-00075 <span class="preprocessor">do { \</span>
-00076 <span class="preprocessor"> dmxGCPrivPtr _pGCPriv = DMX_GET_GC_PRIV(_pGC); \</span>
-00077 <span class="preprocessor"> DMX_UNWRAP(funcs, _pGCPriv, (_pGC)); \</span>
-00078 <span class="preprocessor"> if (_pGCPriv-&gt;ops) \</span>
-00079 <span class="preprocessor"> DMX_UNWRAP(ops, _pGCPriv, (_pGC)); \</span>
-00080 <span class="preprocessor">} while (0)</span>
-00081 <span class="preprocessor"></span>
-00082 <span class="preprocessor">#define DMX_GC_FUNC_EPILOGUE(_pGC) \</span>
-00083 <span class="preprocessor">do { \</span>
-00084 <span class="preprocessor"> dmxGCPrivPtr _pGCPriv = DMX_GET_GC_PRIV(_pGC); \</span>
-00085 <span class="preprocessor"> DMX_WRAP(funcs, &amp;dmxGCFuncs, _pGCPriv, (_pGC)); \</span>
-00086 <span class="preprocessor"> if (_pGCPriv-&gt;ops) \</span>
-00087 <span class="preprocessor"> DMX_WRAP(ops, &amp;dmxGCOps, _pGCPriv, (_pGC)); \</span>
-00088 <span class="preprocessor">} while (0)</span>
-00089 <span class="preprocessor"></span>
-00090 <span class="preprocessor">#endif </span><span class="comment">/* DMXGC_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8h.html
deleted file mode 100644
index f16d40d02..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgc_8h.html
+++ /dev/null
@@ -1,561 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxgc.h File Reference</h1><code>#include "gcstruct.h"</code><br>
-
-<p>
-<a href="dmxgc_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxGCPriv.html">_dmxGCPriv</a></td></tr>
-
-<tr><td colspan=2><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a0">DMX_GET_GC_PRIV</a>(_pGC)&nbsp;&nbsp;&nbsp;(<a class="el" href="struct__dmxGCPriv.html">dmxGCPrivPtr</a>)(_pGC)-&gt;devPrivates[<a class="el" href="dmxscrinit_8c.html#a2">dmxGCPrivateIndex</a>].ptr</td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxGCPriv.html">_dmxGCPriv</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a3">dmxGCPrivRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxGCPriv.html">_dmxGCPriv</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a4">dmxGCPrivPtr</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a6">dmxInitGC</a> (ScreenPtr pScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a7">dmxCreateGC</a> (GCPtr pGC)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a8">dmxValidateGC</a> (GCPtr pGC, unsigned long changes, DrawablePtr pDrawable)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a9">dmxChangeGC</a> (GCPtr pGC, unsigned long mask)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a10">dmxCopyGC</a> (GCPtr pGCSrc, unsigned long changes, GCPtr pGCDst)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a11">dmxDestroyGC</a> (GCPtr pGC)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a12">dmxChangeClip</a> (GCPtr pGC, int type, pointer pvalue, int nrects)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a13">dmxDestroyClip</a> (GCPtr pGC)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a14">dmxCopyClip</a> (GCPtr pGCDst, GCPtr pGCSrc)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a15">dmxBECreateGC</a> (ScreenPtr pScreen, GCPtr pGC)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a16">dmxBEFreeGC</a> (GCPtr pGC)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgc_8h.html#a5">dmxGCPrivateIndex</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for GC support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxgc_8c.html">dmxgc.c</a></dd></dl>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxgc.h::DMX_GET_GC_PRIV" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_GET_GC_PRIV</td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">_pGC&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(<a class="el" href="struct__dmxGCPriv.html">dmxGCPrivPtr</a>)(_pGC)-&gt;devPrivates[<a class="el" href="dmxscrinit_8c.html#a2">dmxGCPrivateIndex</a>].ptr
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get private. </td>
- </tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a4" doxytag="dmxgc.h::dmxGCPrivPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxGCPriv.html">_dmxGCPriv</a> * <a class="el" href="struct__dmxGCPriv.html">dmxGCPrivPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-GC private area. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxgc.h::dmxGCPrivRec" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxGCPriv.html">_dmxGCPriv</a> <a class="el" href="struct__dmxGCPriv.html">dmxGCPrivRec</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-GC private area. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a15" doxytag="dmxgc.h::dmxBECreateGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBECreateGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create the GC on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxgc.h::dmxBEFreeGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreeGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pGC</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free the <em>pGC</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxgc.h::dmxChangeClip" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxChangeClip </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>type</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>pvalue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nrects</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the clip rects for a GC. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxgc.h::dmxChangeGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxChangeGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set the values in the graphics context on the back-end server associated with <em>pGC's</em> screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxgc.h::dmxCopyClip" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCopyClip </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGCDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGCSrc</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Copy a GC's clip rects. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxgc.h::dmxCopyGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCopyGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGCSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>changes</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGCDst</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Copy <em>pGCSrc</em> to <em>pGCDst</em> on the back-end server associated with <em>pGCSrc's</em> screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxgc.h::dmxCreateGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxCreateGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pGC</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a graphics context on the back-end server associated /a pGC's screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxgc.h::dmxDestroyClip" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDestroyClip </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pGC</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a GC's clip rects. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxgc.h::dmxDestroyGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDestroyGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pGC</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy the graphics context, <em>pGC</em> and free the corresponding GC on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxgc.h::dmxInitGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxInitGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the GC on <em>pScreen</em>, which currently involves allocating the GC private associated with this screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxgc.h::dmxValidateGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxValidateGC </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>changes</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Validate a graphics context, <em>pGC</em>, locally in the DMX server and recompute the composite clip, if necessary. </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a5" doxytag="dmxgc.h::dmxGCPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxscrinit_8c.html#a2">dmxGCPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for GCs </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8c.html
deleted file mode 100644
index d24b53a2c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8c.html
+++ /dev/null
@@ -1,1476 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxgcops.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxgc_8h-source.html">dmxgc.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxgcops_8h-source.html">dmxgcops.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxwindow_8h-source.html">dmxwindow.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxpixmap_8h-source.html">dmxpixmap.h</a>"</code><br>
-<code>#include "mi.h"</code><br>
-<code>#include "gcstruct.h"</code><br>
-<code>#include "pixmapstr.h"</code><br>
-<code>#include "dixfontstr.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a2">dmxFillSpans</a> (DrawablePtr pDrawable, GCPtr pGC, int nInit, DDXPointPtr pptInit, int *pwidthInit, int fSorted)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a3">dmxSetSpans</a> (DrawablePtr pDrawable, GCPtr pGC, char *psrc, DDXPointPtr ppt, int *pwidth, int nspans, int fSorted)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a4">dmxPutImage</a> (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y, int w, int h, int leftPad, int format, char *pBits)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>RegionPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a5">dmxCopyArea</a> (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, int srcx, int srcy, int w, int h, int dstx, int dsty)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>RegionPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a6">dmxCopyPlane</a> (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, int srcx, int srcy, int width, int height, int dstx, int dsty, unsigned long bitPlane)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a7">dmxPolyPoint</a> (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, DDXPointPtr pptInit)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a8">dmxPolylines</a> (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, DDXPointPtr pptInit)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a9">dmxPolySegment</a> (DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment *pSegs)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a10">dmxPolyRectangle</a> (DrawablePtr pDrawable, GCPtr pGC, int nrects, xRectangle *pRects)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a11">dmxPolyArc</a> (DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc *parcs)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a12">dmxFillPolygon</a> (DrawablePtr pDrawable, GCPtr pGC, int shape, int mode, int count, DDXPointPtr pPts)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a13">dmxPolyFillRect</a> (DrawablePtr pDrawable, GCPtr pGC, int nrectFill, xRectangle *prectInit)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a14">dmxPolyFillArc</a> (DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc *parcs)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a15">dmxPolyText8</a> (DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, char *chars)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a16">dmxPolyText16</a> (DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, unsigned short *chars)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a17">dmxImageText8</a> (DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, char *chars)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a18">dmxImageText16</a> (DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, unsigned short *chars)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a19">dmxImageGlyphBlt</a> (DrawablePtr pDrawable, GCPtr pGC, int x, int y, unsigned int nglyph, CharInfoPtr *ppci, pointer pglyphBase)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a20">dmxPolyGlyphBlt</a> (DrawablePtr pDrawable, GCPtr pGC, int x, int y, unsigned int nglyph, CharInfoPtr *ppci, pointer pglyphBase)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a21">dmxPushPixels</a> (GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDst, int w, int h, int x, int y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a22">dmxGetImage</a> (DrawablePtr pDrawable, int sx, int sy, int w, int h, unsigned int format, unsigned long planeMask, char *pdstLine)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8c.html#a23">dmxGetSpans</a> (DrawablePtr pDrawable, int wMax, DDXPointPtr ppt, int *pwidth, int nspans, char *pdstStart)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides support for GC operations.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a5" doxytag="dmxgcops.c::dmxCopyArea" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> RegionPtr dmxCopyArea </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>srcx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>srcy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>dstx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>dsty</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Copy area from <em>pSrc</em> drawable to <em>pDst</em> drawable on the back-end server associated with <em>pSrc</em> drawable's screen. If the offscreen optimization is enabled, only copy when both <em>pSrc</em> and <em>pDst</em> are at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxgcops.c::dmxCopyPlane" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> RegionPtr dmxCopyPlane </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>srcx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>srcy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>width</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>height</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>dstx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>dsty</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>bitPlane</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Copy plane number <em>bitPlane</em> from <em>pSrc</em> drawable to <em>pDst</em> drawable on the back-end server associated with <em>pSrc</em> drawable's screen. If the offscreen optimization is enabled, only copy when both <em>pSrc</em> and <em>pDst</em> are at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxgcops.c::dmxFillPolygon" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxFillPolygon </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>shape</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>mode</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pPts</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render a filled polygons in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxgcops.c::dmxFillSpans" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxFillSpans </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nInit</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pptInit</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>pwidthInit</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>fSorted</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill spans -- this function should never be called. </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="dmxgcops.c::dmxGetImage" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxGetImage </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>sx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>sy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>planeMask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>pdstLine</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get an image from the back-end server associated with <em>pDrawable's</em> screen. If <em>pDrawable</em> is a window, it must be viewable to get an image from it. If it is not viewable, then get the image from the first ancestor of <em>pDrawable</em> that is viewable. If no viewable ancestor is found, then simply return without getting an image. </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxgcops.c::dmxGetSpans" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxGetSpans </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>wMax</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>ppt</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>pwidth</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nspans</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>pdstStart</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get Spans -- this function should never be called. </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="dmxgcops.c::dmxImageGlyphBlt" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxImageGlyphBlt </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>nglyph</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CharInfoPtr *&nbsp;</td>
- <td class="mdname" nowrap> <em>ppci</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>pglyphBase</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Image Glyph Blt -- this function should never be called. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxgcops.c::dmxImageText16" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxImageText16 </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned short *&nbsp;</td>
- <td class="mdname" nowrap> <em>chars</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render string of 16-bit <em>chars</em> (both foreground and background) in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxgcops.c::dmxImageText8" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxImageText8 </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>chars</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render string of 8-bit <em>chars</em> (both foreground and background) in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxgcops.c::dmxPolyArc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolyArc </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>narcs</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xArc *&nbsp;</td>
- <td class="mdname" nowrap> <em>parcs</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of arc outlines, <em>parcs</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxgcops.c::dmxPolyFillArc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolyFillArc </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>narcs</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xArc *&nbsp;</td>
- <td class="mdname" nowrap> <em>parcs</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of filled arcs, <em>parcs</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxgcops.c::dmxPolyFillRect" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolyFillRect </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nrectFill</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xRectangle *&nbsp;</td>
- <td class="mdname" nowrap> <em>prectInit</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of filled rectangles, <em>prectInit</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="dmxgcops.c::dmxPolyGlyphBlt" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolyGlyphBlt </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>nglyph</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CharInfoPtr *&nbsp;</td>
- <td class="mdname" nowrap> <em>ppci</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>pglyphBase</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Poly Glyph Blt -- this function should never be called. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxgcops.c::dmxPolylines" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolylines </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>mode</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>npt</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pptInit</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of connected lines, <em>pptInit</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxgcops.c::dmxPolyPoint" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolyPoint </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>mode</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>npt</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pptInit</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of points, <em>pptInit</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxgcops.c::dmxPolyRectangle" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolyRectangle </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nrects</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xRectangle *&nbsp;</td>
- <td class="mdname" nowrap> <em>pRects</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of rectangle outlines, <em>pRects</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxgcops.c::dmxPolySegment" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolySegment </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nseg</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xSegment *&nbsp;</td>
- <td class="mdname" nowrap> <em>pSegs</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of disjoint segments, <em>pSegs</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxgcops.c::dmxPolyText16" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxPolyText16 </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned short *&nbsp;</td>
- <td class="mdname" nowrap> <em>chars</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render string of 16-bit <em>chars</em> (foreground only) in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmxgcops.c::dmxPolyText8" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxPolyText8 </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>chars</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render string of 8-bit <em>chars</em> (foreground only) in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="dmxgcops.c::dmxPushPixels" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPushPixels </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PixmapPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pBitMap</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Push Pixels -- this function should never be called. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxgcops.c::dmxPutImage" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPutImage </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>depth</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>leftPad</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>pBits</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Transfer <em>pBits</em> image to back-end server associated with <em>pDrawable's</em> screen. If primitive subdivision optimization is enabled, then only transfer the sections of <em>pBits</em> that are visible (i.e., not-clipped) to the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxgcops.c::dmxSetSpans" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSetSpans </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>psrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>ppt</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>pwidth</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nspans</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>fSorted</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set spans -- this function should never be called. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8h-source.html
deleted file mode 100644
index b232f0b1b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8h-source.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxgcops.h</h1><a href="dmxgcops_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001,2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef DMXGCOPS_H</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define DMXGCOPS_H</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a2">dmxFillSpans</a>(DrawablePtr pDrawable, GCPtr pGC,
-00042 <span class="keywordtype">int</span> nInit, DDXPointPtr pptInit, <span class="keywordtype">int</span> *pwidthInit,
-00043 <span class="keywordtype">int</span> fSorted);
-00044 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a3">dmxSetSpans</a>(DrawablePtr pDrawable, GCPtr pGC,
-00045 <span class="keywordtype">char</span> *psrc, DDXPointPtr ppt, <span class="keywordtype">int</span> *pwidth, <span class="keywordtype">int</span> nspans,
-00046 <span class="keywordtype">int</span> fSorted);
-00047 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a4">dmxPutImage</a>(DrawablePtr pDrawable, GCPtr pGC,
-00048 <span class="keywordtype">int</span> depth, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> h,
-00049 <span class="keywordtype">int</span> leftPad, <span class="keywordtype">int</span> format, <span class="keywordtype">char</span> *pBits);
-00050 <span class="keyword">extern</span> RegionPtr <a class="code" href="dmxgcops_8c.html#a5">dmxCopyArea</a>(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
-00051 <span class="keywordtype">int</span> srcx, <span class="keywordtype">int</span> srcy, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> h,
-00052 <span class="keywordtype">int</span> dstx, <span class="keywordtype">int</span> dsty);
-00053 <span class="keyword">extern</span> RegionPtr <a class="code" href="dmxgcops_8c.html#a6">dmxCopyPlane</a>(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
-00054 <span class="keywordtype">int</span> srcx, <span class="keywordtype">int</span> srcy, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height,
-00055 <span class="keywordtype">int</span> dstx, <span class="keywordtype">int</span> dsty, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> bitPlane);
-00056 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a7">dmxPolyPoint</a>(DrawablePtr pDrawable, GCPtr pGC,
-00057 <span class="keywordtype">int</span> mode, <span class="keywordtype">int</span> npt, DDXPointPtr pptInit);
-00058 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a8">dmxPolylines</a>(DrawablePtr pDrawable, GCPtr pGC,
-00059 <span class="keywordtype">int</span> mode, <span class="keywordtype">int</span> npt, DDXPointPtr pptInit);
-00060 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a9">dmxPolySegment</a>(DrawablePtr pDrawable, GCPtr pGC,
-00061 <span class="keywordtype">int</span> nseg, xSegment *pSegs);
-00062 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a10">dmxPolyRectangle</a>(DrawablePtr pDrawable, GCPtr pGC,
-00063 <span class="keywordtype">int</span> nrects, xRectangle *pRects);
-00064 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a11">dmxPolyArc</a>(DrawablePtr pDrawable, GCPtr pGC,
-00065 <span class="keywordtype">int</span> narcs, xArc *parcs);
-00066 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a12">dmxFillPolygon</a>(DrawablePtr pDrawable, GCPtr pGC,
-00067 <span class="keywordtype">int</span> shape, <span class="keywordtype">int</span> mode, <span class="keywordtype">int</span> count, DDXPointPtr pPts);
-00068 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a13">dmxPolyFillRect</a>(DrawablePtr pDrawable, GCPtr pGC,
-00069 <span class="keywordtype">int</span> nrectFill, xRectangle *prectInit);
-00070 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a14">dmxPolyFillArc</a>(DrawablePtr pDrawable, GCPtr pGC,
-00071 <span class="keywordtype">int</span> narcs, xArc *parcs);
-00072 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxgcops_8c.html#a15">dmxPolyText8</a>(DrawablePtr pDrawable, GCPtr pGC,
-00073 <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> count, <span class="keywordtype">char</span> *chars);
-00074 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxgcops_8c.html#a16">dmxPolyText16</a>(DrawablePtr pDrawable, GCPtr pGC,
-00075 <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> count, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> *chars);
-00076 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a17">dmxImageText8</a>(DrawablePtr pDrawable, GCPtr pGC,
-00077 <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> count, <span class="keywordtype">char</span> *chars);
-00078 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a18">dmxImageText16</a>(DrawablePtr pDrawable, GCPtr pGC,
-00079 <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> count, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> *chars);
-00080 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a19">dmxImageGlyphBlt</a>(DrawablePtr pDrawable, GCPtr pGC,
-00081 <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nglyph,
-00082 CharInfoPtr *ppci, pointer pglyphBase);
-00083 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a20">dmxPolyGlyphBlt</a>(DrawablePtr pDrawable, GCPtr pGC,
-00084 <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nglyph,
-00085 CharInfoPtr *ppci, pointer pglyphBase);
-00086 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a21">dmxPushPixels</a>(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDst,
-00087 <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> h, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
-00088
-00089 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a22">dmxGetImage</a>(DrawablePtr pDrawable, <span class="keywordtype">int</span> sx, <span class="keywordtype">int</span> sy, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> h,
-00090 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> format, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> planeMask,
-00091 <span class="keywordtype">char</span> *pdstLine);
-00092 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxgcops_8c.html#a23">dmxGetSpans</a>(DrawablePtr pDrawable, <span class="keywordtype">int</span> wMax,
-00093 DDXPointPtr ppt, <span class="keywordtype">int</span> *pwidth, <span class="keywordtype">int</span> nspans,
-00094 <span class="keywordtype">char</span> *pdstStart);
-00095
-00096 <span class="preprocessor">#endif </span><span class="comment">/* DMXGCOPS_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8h.html
deleted file mode 100644
index 1f30f11a4..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxgcops_8h.html
+++ /dev/null
@@ -1,1469 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxgcops.h File Reference</h1>
-<p>
-<a href="dmxgcops_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a0">dmxFillSpans</a> (DrawablePtr pDrawable, GCPtr pGC, int nInit, DDXPointPtr pptInit, int *pwidthInit, int fSorted)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a1">dmxSetSpans</a> (DrawablePtr pDrawable, GCPtr pGC, char *psrc, DDXPointPtr ppt, int *pwidth, int nspans, int fSorted)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a2">dmxPutImage</a> (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y, int w, int h, int leftPad, int format, char *pBits)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>RegionPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a3">dmxCopyArea</a> (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, int srcx, int srcy, int w, int h, int dstx, int dsty)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>RegionPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a4">dmxCopyPlane</a> (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, int srcx, int srcy, int width, int height, int dstx, int dsty, unsigned long bitPlane)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a5">dmxPolyPoint</a> (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, DDXPointPtr pptInit)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a6">dmxPolylines</a> (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, DDXPointPtr pptInit)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a7">dmxPolySegment</a> (DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment *pSegs)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a8">dmxPolyRectangle</a> (DrawablePtr pDrawable, GCPtr pGC, int nrects, xRectangle *pRects)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a9">dmxPolyArc</a> (DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc *parcs)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a10">dmxFillPolygon</a> (DrawablePtr pDrawable, GCPtr pGC, int shape, int mode, int count, DDXPointPtr pPts)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a11">dmxPolyFillRect</a> (DrawablePtr pDrawable, GCPtr pGC, int nrectFill, xRectangle *prectInit)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a12">dmxPolyFillArc</a> (DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc *parcs)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a13">dmxPolyText8</a> (DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, char *chars)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a14">dmxPolyText16</a> (DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, unsigned short *chars)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a15">dmxImageText8</a> (DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, char *chars)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a16">dmxImageText16</a> (DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count, unsigned short *chars)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a17">dmxImageGlyphBlt</a> (DrawablePtr pDrawable, GCPtr pGC, int x, int y, unsigned int nglyph, CharInfoPtr *ppci, pointer pglyphBase)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a18">dmxPolyGlyphBlt</a> (DrawablePtr pDrawable, GCPtr pGC, int x, int y, unsigned int nglyph, CharInfoPtr *ppci, pointer pglyphBase)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a19">dmxPushPixels</a> (GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDst, int w, int h, int x, int y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a20">dmxGetImage</a> (DrawablePtr pDrawable, int sx, int sy, int w, int h, unsigned int format, unsigned long planeMask, char *pdstLine)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxgcops_8h.html#a21">dmxGetSpans</a> (DrawablePtr pDrawable, int wMax, DDXPointPtr ppt, int *pwidth, int nspans, char *pdstStart)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for gcops support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxgcops_8c.html">dmxgcops.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxgcops.h::dmxCopyArea" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> RegionPtr dmxCopyArea </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>srcx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>srcy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>dstx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>dsty</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Copy area from <em>pSrc</em> drawable to <em>pDst</em> drawable on the back-end server associated with <em>pSrc</em> drawable's screen. If the offscreen optimization is enabled, only copy when both <em>pSrc</em> and <em>pDst</em> are at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxgcops.h::dmxCopyPlane" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> RegionPtr dmxCopyPlane </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>srcx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>srcy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>width</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>height</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>dstx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>dsty</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>bitPlane</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Copy plane number <em>bitPlane</em> from <em>pSrc</em> drawable to <em>pDst</em> drawable on the back-end server associated with <em>pSrc</em> drawable's screen. If the offscreen optimization is enabled, only copy when both <em>pSrc</em> and <em>pDst</em> are at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxgcops.h::dmxFillPolygon" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxFillPolygon </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>shape</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>mode</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pPts</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render a filled polygons in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxgcops.h::dmxFillSpans" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxFillSpans </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nInit</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pptInit</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>pwidthInit</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>fSorted</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill spans -- this function should never be called. </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="dmxgcops.h::dmxGetImage" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxGetImage </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>sx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>sy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>planeMask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>pdstLine</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get an image from the back-end server associated with <em>pDrawable's</em> screen. If <em>pDrawable</em> is a window, it must be viewable to get an image from it. If it is not viewable, then get the image from the first ancestor of <em>pDrawable</em> that is viewable. If no viewable ancestor is found, then simply return without getting an image. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="dmxgcops.h::dmxGetSpans" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxGetSpans </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>wMax</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>ppt</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>pwidth</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nspans</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>pdstStart</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get Spans -- this function should never be called. </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxgcops.h::dmxImageGlyphBlt" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxImageGlyphBlt </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>nglyph</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CharInfoPtr *&nbsp;</td>
- <td class="mdname" nowrap> <em>ppci</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>pglyphBase</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Image Glyph Blt -- this function should never be called. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxgcops.h::dmxImageText16" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxImageText16 </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned short *&nbsp;</td>
- <td class="mdname" nowrap> <em>chars</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render string of 16-bit <em>chars</em> (both foreground and background) in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmxgcops.h::dmxImageText8" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxImageText8 </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>chars</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render string of 8-bit <em>chars</em> (both foreground and background) in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxgcops.h::dmxPolyArc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolyArc </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>narcs</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xArc *&nbsp;</td>
- <td class="mdname" nowrap> <em>parcs</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of arc outlines, <em>parcs</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxgcops.h::dmxPolyFillArc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolyFillArc </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>narcs</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xArc *&nbsp;</td>
- <td class="mdname" nowrap> <em>parcs</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of filled arcs, <em>parcs</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxgcops.h::dmxPolyFillRect" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolyFillRect </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nrectFill</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xRectangle *&nbsp;</td>
- <td class="mdname" nowrap> <em>prectInit</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of filled rectangles, <em>prectInit</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxgcops.h::dmxPolyGlyphBlt" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolyGlyphBlt </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>nglyph</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CharInfoPtr *&nbsp;</td>
- <td class="mdname" nowrap> <em>ppci</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>pglyphBase</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Poly Glyph Blt -- this function should never be called. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxgcops.h::dmxPolylines" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolylines </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>mode</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>npt</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pptInit</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of connected lines, <em>pptInit</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxgcops.h::dmxPolyPoint" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolyPoint </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>mode</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>npt</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pptInit</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of points, <em>pptInit</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxgcops.h::dmxPolyRectangle" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolyRectangle </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nrects</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xRectangle *&nbsp;</td>
- <td class="mdname" nowrap> <em>pRects</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of rectangle outlines, <em>pRects</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxgcops.h::dmxPolySegment" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPolySegment </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nseg</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xSegment *&nbsp;</td>
- <td class="mdname" nowrap> <em>pSegs</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render list of disjoint segments, <em>pSegs</em> in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxgcops.h::dmxPolyText16" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxPolyText16 </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned short *&nbsp;</td>
- <td class="mdname" nowrap> <em>chars</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render string of 16-bit <em>chars</em> (foreground only) in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxgcops.h::dmxPolyText8" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxPolyText8 </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>chars</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Render string of 8-bit <em>chars</em> (foreground only) in <em>pDrawable</em> on the back-end server associated with <em>pDrawable's</em> screen. If the offscreen optimization is enabled, only draw when <em>pDrawable</em> is at least partially visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="dmxgcops.h::dmxPushPixels" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPushPixels </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PixmapPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pBitMap</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Push Pixels -- this function should never be called. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxgcops.h::dmxPutImage" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPutImage </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>depth</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>leftPad</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>pBits</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Transfer <em>pBits</em> image to back-end server associated with <em>pDrawable's</em> screen. If primitive subdivision optimization is enabled, then only transfer the sections of <em>pBits</em> that are visible (i.e., not-clipped) to the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxgcops.h::dmxSetSpans" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSetSpans </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DrawablePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDrawable</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GCPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pGC</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>psrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>ppt</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>pwidth</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nspans</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>fSorted</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set spans -- this function should never be called. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8c.html
deleted file mode 100644
index 22928e654..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8c.html
+++ /dev/null
@@ -1,709 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxinit.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinit_8h-source.html">dmxinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinput_8h-source.html">dmxinput.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxscrinit_8h-source.html">dmxscrinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcursor_8h-source.html">dmxcursor.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxfont_8h-source.html">dmxfont.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxconfig_8h-source.html">config/dmxconfig.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcb_8h-source.html">dmxcb.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxprop_8h-source.html">dmxprop.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxstat_8h-source.html">dmxstat.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxpict_8h-source.html">dmxpict.h</a>"</code><br>
-<code>#include "Xos.h"</code><br>
-<code>#include "dixstruct.h"</code><br>
-<code>#include "panoramiXsrv.h"</code><br>
-<code>#include &lt;signal.h&gt;</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a34">InitOutput</a> (ScreenInfo *pScreenInfo, int argc, char *argv[])</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a36">AbortDDX</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a37">ddxGiveUp</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a38">OsVendorInit</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a39">OsVendorFatalError</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a40">ddxProcessArgument</a> (int argc, char *argv[], int i)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a41">ddxUseMsg</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>CARD32&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a42">GetTimeInMillis</a> (void)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a1">dmxNumScreens</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a2">dmxScreens</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a3">dmxNumInputs</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a4">dmxInputs</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a5">dmxShadowFB</a> = FALSE</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>XErrorEvent&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a6">dmxLastErrorEvent</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a7">dmxErrorOccurred</a> = FALSE</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a8">dmxFontPath</a> = NULL</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a9">dmxOffScreenOpt</a> = TRUE</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a10">dmxSubdividePrimitives</a> = TRUE</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a11">dmxLazyWindowCreation</a> = TRUE</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a12">dmxUseXKB</a> = TRUE</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a13">dmxDepth</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a14">dmxNoRender</a> = FALSE</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a16">dmxIgnoreBadFontPaths</a> = FALSE</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinit_8c.html#a17">dmxAddRemoveScreens</a> = FALSE</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Provide expected functions for initialization from the ddx layer and global variables for the DMX server.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a36" doxytag="dmxinit.c::AbortDDX" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void AbortDDX </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This function is called in Xserver/os/utils.c from <em><a class="el" href="dmxlog_8c.html#a3">AbortServer()</a></em>. We must ensure that backend and console state is restored in the event the server shutdown wasn't clean. </td>
- </tr>
-</table>
-<a class="anchor" name="a37" doxytag="dmxinit.c::ddxGiveUp" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ddxGiveUp </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This function is called in Xserver/dix/main.c from <em><a class="el" href="xdmxconfig_8c.html#a101">main()</a></em> when dispatchException &amp; DE_TERMINATE (which is the only way to exit the main loop without an interruption. </td>
- </tr>
-</table>
-<a class="anchor" name="a40" doxytag="dmxinit.c::ddxProcessArgument" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int ddxProcessArgument </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>argc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>argv</em>[], </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>i</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Process our command line arguments. </td>
- </tr>
-</table>
-<a class="anchor" name="a41" doxytag="dmxinit.c::ddxUseMsg" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ddxUseMsg </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Provide succinct usage information for the DMX server. </td>
- </tr>
-</table>
-<a class="anchor" name="a42" doxytag="dmxinit.c::GetTimeInMillis" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> CARD32 GetTimeInMillis </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return wall-clock time in milliseconds. </td>
- </tr>
-</table>
-<a class="anchor" name="a34" doxytag="dmxinit.c::InitOutput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void InitOutput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenInfo *&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreenInfo</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>argc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>argv</em>[]</td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is called in Xserver/dix/main.c from <em><a class="el" href="xdmxconfig_8c.html#a101">main()</a></em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a39" doxytag="dmxinit.c::OsVendorFatalError" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void OsVendorFatalError </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This function is called in Xserver/os/utils.c from <em>FatalError()</em> and <em><a class="el" href="dmxlog_8c.html#a4">VFatalError()</a></em>. (Note that setting the function pointer <em>OsVendorVErrorFProc</em> will cause <em>VErrorF()</em> (which is called by the two routines mentioned here, as well as by others) to use the referenced routine instead of <em>vfprintf()</em>.) </td>
- </tr>
-</table>
-<a class="anchor" name="a38" doxytag="dmxinit.c::OsVendorInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void OsVendorInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This function is called in Xserver/os/osinit.c from <em>OsInit()</em>. </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a17" doxytag="dmxinit.c::dmxAddRemoveScreens" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a17">dmxAddRemoveScreens</a> = FALSE
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if add and remove screens support is enabled </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxinit.c::dmxDepth" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxinit_8c.html#a13">dmxDepth</a> = 0
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Requested depth if non-zero </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxinit.c::dmxErrorOccurred" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a7">dmxErrorOccurred</a> = FALSE
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if an error occurred </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxinit.c::dmxFontPath" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> char* <a class="el" href="dmxinit_8c.html#a8">dmxFontPath</a> = NULL
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-NULL if no font path is set on the command line; otherwise, a string of comma separated paths built from the command line specified font paths </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxinit.c::dmxIgnoreBadFontPaths" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a16">dmxIgnoreBadFontPaths</a> = FALSE
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if bad font paths should be ignored during server init </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxinit.c::dmxInputs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a>* <a class="el" href="dmxinput_8h.html#a5">dmxInputs</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-List of inputs </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxinit.c::dmxLastErrorEvent" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> XErrorEvent <a class="el" href="dmxinit_8c.html#a6">dmxLastErrorEvent</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Last error that occurred </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxinit.c::dmxLazyWindowCreation" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a11">dmxLazyWindowCreation</a> = TRUE
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if using the lazy window creation optimization </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxinit.c::dmxNoRender" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a14">dmxNoRender</a> = FALSE
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if the RENDER extension should be disabled </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxinit.c::dmxNumInputs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxinput_8h.html#a4">dmxNumInputs</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of <a class="el" href="dmxinput_8h.html#a5">dmxInputs</a> </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxinit.c::dmxNumScreens" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxinit_8c.html#a1">dmxNumScreens</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of dmxScreens </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxinit.c::dmxOffScreenOpt" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a9">dmxOffScreenOpt</a> = TRUE
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if using off screen optimizations </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxinit.c::dmxScreens" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a>* <a class="el" href="dmxinit_8c.html#a2">dmxScreens</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-List of outputs </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxinit.c::dmxShadowFB" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxinit_8c.html#a5">dmxShadowFB</a> = FALSE
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if using shadow frame-buffer (deprecated) </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxinit.c::dmxSubdividePrimitives" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a10">dmxSubdividePrimitives</a> = TRUE
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if using the primitive subdivision optimization </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxinit.c::dmxUseXKB" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="dmxinit_8c.html#a12">dmxUseXKB</a> = TRUE
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if the XKB extension should be used with the backend servers </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8h-source.html
deleted file mode 100644
index 3217ef4cb..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8h-source.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxinit.h</h1><a href="dmxinit_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2004 Red Hat Inc., Raleigh, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef DMXINIT_H</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define DMXINIT_H</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="preprocessor">#include "scrnintstr.h"</span>
-00042
-00043 <span class="keyword">extern</span> Bool dmxOpenDisplay(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00044 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxSetErrorHandler(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00045 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxCheckForWM(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00046 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxGetScreenAttribs(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00047 <span class="keyword">extern</span> Bool dmxGetVisualInfo(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00048 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxGetColormaps(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00049 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxGetPixmapFormats(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00050
-00051 <span class="preprocessor">#endif </span><span class="comment">/* DMXINIT_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8h.html
deleted file mode 100644
index 2890be2c6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinit_8h.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxinit.h File Reference</h1><code>#include "scrnintstr.h"</code><br>
-
-<p>
-<a href="dmxinit_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for initialization. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxinit_8c.html">dmxinit.c</a></dd></dl>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8c.html
deleted file mode 100644
index 09a5ddd05..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8c.html
+++ /dev/null
@@ -1,185 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxinput.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinput_8h-source.html">dmxinput.h</a>"</code><br>
-<code>#include "inputstr.h"</code><br>
-<code>#include "input.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8c.html#a0">LegalModifier</a> (unsigned int key, DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8c.html#a1">InitInput</a> (int argc, char **argv)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8c.html#a2">ProcessInputEvents</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8c.html#a3">dmxUpdateWindowInfo</a> (<a class="el" href="dmxinput_8h.html#a30">DMXUpdateType</a> type, WindowPtr pWindow)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Provide the main entry points for input initialization and processing that arequired by the dix layer.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxinput.c::dmxUpdateWindowInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxUpdateWindowInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="dmxinput_8h.html#a30">DMXUpdateType</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>type</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is called from #dmxwindow.c whenever the layout of windows on the display might have changed. This information is used by input drivers (currently only the console driver) that provide information about window layout to the user. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxinput.c::InitInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void InitInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>argc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char **&nbsp;</td>
- <td class="mdname" nowrap> <em>argv</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Called from dix/main.c on each server generation to initialize inputs. All the work is done in dmxInputInit. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxinput_8h.html#a17">dmxInputInit()</a> </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxinput.c::LegalModifier" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool LegalModifier </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>key</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Returns TRUE if the key is a valid modifier. For PC-class keyboards, all keys can be used as modifiers, so return TRUE always. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxinput.c::ProcessInputEvents" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ProcessInputEvents </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Called from dix/dispatch.c in Dispatch() whenever input events require processing. All the work is done in the lower level routines. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8h-source.html
deleted file mode 100644
index 013912f37..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8h-source.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxinput.h</h1><a href="dmxinput_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001,2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * David H. Dawes &lt;dawes@xfree86.org&gt;</span>
-00032 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00033 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00034 <span class="comment"> *</span>
-00035 <span class="comment"> */</span>
-00036
-00048 <span class="preprocessor">#ifndef DMXINPUT_H</span>
-00049 <span class="preprocessor"></span><span class="preprocessor">#define DMXINPUT_H</span>
-00050 <span class="preprocessor"></span>
-<a name="l00052"></a><a class="code" href="dmxinput_8h.html#a0">00052</a> <span class="preprocessor">#define DMX_MAX_SIGIO_FDS 4</span>
-00053 <span class="preprocessor"></span>
-00054 <span class="keyword">struct </span><a class="code" href="struct__DMXInputInfo.html">_DMXInputInfo</a>;
-00055
-<a name="l00057"></a><a class="code" href="dmxinput_8h.html#a30">00057</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00058 <a class="code" href="dmxinput_8h.html#a30a6">DMX_UPDATE_REALIZE</a>,
-00059 <a class="code" href="dmxinput_8h.html#a30a7">DMX_UPDATE_UNREALIZE</a>,
-00060 <a class="code" href="dmxinput_8h.html#a30a8">DMX_UPDATE_RESTACK</a>,
-00061 <a class="code" href="dmxinput_8h.html#a30a9">DMX_UPDATE_COPY</a>,
-00062 <a class="code" href="dmxinput_8h.html#a30a10">DMX_UPDATE_RESIZE</a>,
-00063 <a class="code" href="dmxinput_8h.html#a30a11">DMX_UPDATE_REPARENT</a>
-00064 } <a class="code" href="dmxinput_8h.html#a30">DMXUpdateType</a>;
-00065
-00066 <span class="keyword">typedef</span> void (*ProcessInputEventsProc)(<span class="keyword">struct </span><a class="code" href="struct__DMXInputInfo.html">_DMXInputInfo</a> *);
-00067 <span class="keyword">typedef</span> void (*UpdateWindowInfoProc)(<span class="keyword">struct </span><a class="code" href="struct__DMXInputInfo.html">_DMXInputInfo</a> *,
-00068 <a class="code" href="dmxinput_8h.html#a30">DMXUpdateType</a>, WindowPtr);
-00069
-<a name="l00071"></a><a class="code" href="dmxinput_8h.html#a3">00071</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXLocalInputInfo.html">_DMXLocalInputInfo</a> *<a class="code" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>;
-00072
-<a name="l00074"></a><a class="code" href="dmxinput_8h.html#a31">00074</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00075 <a class="code" href="dmxinput_8h.html#a31a12">DMX_NOSIGIO</a> = 0,
-00076 <a class="code" href="dmxinput_8h.html#a31a13">DMX_USESIGIO</a>,
-00079 <a class="code" href="dmxinput_8h.html#a31a14">DMX_ACTIVESIGIO</a>
-00080 } <a class="code" href="dmxinput_8h.html#a31">dmxSigioState</a>;
-00081
-<a name="l00085"></a><a class="code" href="struct__DMXInputInfo.html">00085</a> <span class="keyword">struct </span><a class="code" href="struct__DMXInputInfo.html">_DMXInputInfo</a> {
-<a name="l00086"></a><a class="code" href="struct__DMXInputInfo.html#o0">00086</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="struct__DMXInputInfo.html#o0">name</a>;
-<a name="l00089"></a><a class="code" href="struct__DMXInputInfo.html#o1">00089</a> Bool <a class="code" href="struct__DMXInputInfo.html#o1">freename</a>;
-<a name="l00090"></a><a class="code" href="struct__DMXInputInfo.html#o2">00090</a> Bool <a class="code" href="struct__DMXInputInfo.html#o2">detached</a>;
-<a name="l00091"></a><a class="code" href="struct__DMXInputInfo.html#o3">00091</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXInputInfo.html#o3">inputIdx</a>;
-<a name="l00092"></a><a class="code" href="struct__DMXInputInfo.html#o4">00092</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXInputInfo.html#o4">scrnIdx</a>;
-<a name="l00093"></a><a class="code" href="struct__DMXInputInfo.html#o5">00093</a> Bool <a class="code" href="struct__DMXInputInfo.html#o5">core</a>;
-<a name="l00096"></a><a class="code" href="struct__DMXInputInfo.html#o6">00096</a> Bool <a class="code" href="struct__DMXInputInfo.html#o6">console</a>;
-<a name="l00100"></a><a class="code" href="struct__DMXInputInfo.html#o7">00100</a> Bool <a class="code" href="struct__DMXInputInfo.html#o7">windows</a>;
-00103 ProcessInputEventsProc processInputEvents;
-00104 UpdateWindowInfoProc updateWindowInfo;
-00105
-00106 <span class="comment">/* Local input information */</span>
-<a name="l00107"></a><a class="code" href="struct__DMXInputInfo.html#o10">00107</a> <a class="code" href="dmxinput_8h.html#a31">dmxSigioState</a> <a class="code" href="struct__DMXInputInfo.html#o10">sigioState</a>;
-<a name="l00108"></a><a class="code" href="struct__DMXInputInfo.html#o11">00108</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXInputInfo.html#o11">sigioFdCount</a>;
-<a name="l00109"></a><a class="code" href="struct__DMXInputInfo.html#o12">00109</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXInputInfo.html#o12">sigioFd</a>[<a class="code" href="dmxinput_8h.html#a0">DMX_MAX_SIGIO_FDS</a>];
-<a name="l00110"></a><a class="code" href="struct__DMXInputInfo.html#o13">00110</a> Bool <a class="code" href="struct__DMXInputInfo.html#o13">sigioAdded</a>[<a class="code" href="dmxinput_8h.html#a0">DMX_MAX_SIGIO_FDS</a>];
-<a name="l00114"></a><a class="code" href="struct__DMXInputInfo.html#o14">00114</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXInputInfo.html#o14">vt_switch_pending</a>;
-00115
-<a name="l00117"></a><a class="code" href="struct__DMXInputInfo.html#o15">00117</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXInputInfo.html#o15">vt_switched</a>;
-00118
-<a name="l00120"></a><a class="code" href="struct__DMXInputInfo.html#o16">00120</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXInputInfo.html#o16">numDevs</a>;
-00121
-<a name="l00126"></a><a class="code" href="struct__DMXInputInfo.html#o17">00126</a> <a class="code" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> *<a class="code" href="struct__DMXInputInfo.html#o17">devs</a>;
-00127
-<a name="l00128"></a><a class="code" href="struct__DMXInputInfo.html#o18">00128</a> <span class="keywordtype">char</span> *<a class="code" href="struct__DMXInputInfo.html#o18">keycodes</a>;
-<a name="l00129"></a><a class="code" href="struct__DMXInputInfo.html#o19">00129</a> <span class="keywordtype">char</span> *<a class="code" href="struct__DMXInputInfo.html#o19">symbols</a>;
-<a name="l00130"></a><a class="code" href="struct__DMXInputInfo.html#o20">00130</a> <span class="keywordtype">char</span> *<a class="code" href="struct__DMXInputInfo.html#o20">geometry</a>;
-00131 };
-00132
-<a name="l00133"></a><a class="code" href="dmxinput_8h.html#a4">00133</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxinit_8c.html#a3">dmxNumInputs</a>;
-<a name="l00134"></a><a class="code" href="dmxinput_8h.html#a5">00134</a> <span class="keyword">extern</span> <a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *<a class="code" href="dmxinit_8c.html#a4">dmxInputs</a>;
-00136 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxinputinit_8c.html#a39">dmxInputInit</a>(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput);
-00137 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxinputinit_8c.html#a37">dmxInputReInit</a>(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput);
-00138 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxinputinit_8c.html#a38">dmxInputLateReInit</a>(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput);
-00139 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxinputinit_8c.html#a41">dmxInputFree</a>(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput);
-00140 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxinputinit_8c.html#a42">dmxInputLogDevices</a>(<span class="keywordtype">void</span>);
-00141 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxinput_8c.html#a3">dmxUpdateWindowInfo</a>(DMXUpdateType type, WindowPtr pWindow);
-00142
-00143 <span class="comment">/* These functions are defined in input/dmxeq.c */</span>
-00144 <span class="keyword">extern</span> Bool dmxeqInitialized(<span class="keywordtype">void</span>);
-00145 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxeq_8c.html#a13">dmxeqEnqueue</a>(xEvent *e);
-00146 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxeq_8c.html#a14">dmxeqSwitchScreen</a>(ScreenPtr pScreen, Bool fromDIX);
-00147
-00148 <span class="comment">/* This type is used in input/dmxevents.c. Also, these functions are</span>
-00149 <span class="comment"> * defined in input/dmxevents.c */</span>
-00150 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00151 DMX_NO_BLOCK = 0,
-00152 DMX_BLOCK = 1
-00153 } DMXBlockType;
-00154
-00155 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxevents_8c.html#a21">dmxGetGlobalPosition</a>(<span class="keywordtype">int</span> *x, <span class="keywordtype">int</span> *y);
-00156 <span class="keyword">extern</span> <a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxFindFirstScreen(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
-00157 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxCoreMotion(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> delta,
-00158 DMXBlockType block);
-00159
-00160 <span class="comment">/* Support for dynamic addition of inputs. This functions is defined in</span>
-00161 <span class="comment"> * config/dmxconfig.c */</span>
-00162 <span class="keyword">extern</span> <a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxConfigAddInput(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">int</span> core);
-00163 <span class="preprocessor">#endif </span><span class="comment">/* DMXINPUT_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8h.html
deleted file mode 100644
index fab2a374d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinput_8h.html
+++ /dev/null
@@ -1,534 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxinput.h File Reference</h1>
-<p>
-<a href="dmxinput_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html">_DMXInputInfo</a></td></tr>
-
-<tr><td colspan=2><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a0">DMX_MAX_SIGIO_FDS</a>&nbsp;&nbsp;&nbsp;4</td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXLocalInputInfo.html">_DMXLocalInputInfo</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a3">DMXLocalInputInfoPtr</a></td></tr>
-
-<tr><td colspan=2><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a30">DMXUpdateType</a> { <br>
-&nbsp;&nbsp;<a class="el" href="dmxinput_8h.html#a30a6">DMX_UPDATE_REALIZE</a>,
-<a class="el" href="dmxinput_8h.html#a30a7">DMX_UPDATE_UNREALIZE</a>,
-<a class="el" href="dmxinput_8h.html#a30a8">DMX_UPDATE_RESTACK</a>,
-<a class="el" href="dmxinput_8h.html#a30a9">DMX_UPDATE_COPY</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="dmxinput_8h.html#a30a10">DMX_UPDATE_RESIZE</a>,
-<a class="el" href="dmxinput_8h.html#a30a11">DMX_UPDATE_REPARENT</a>
-<br>
- }</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a31">dmxSigioState</a> { <a class="el" href="dmxinput_8h.html#a31a12">DMX_NOSIGIO</a> = 0,
-<a class="el" href="dmxinput_8h.html#a31a13">DMX_USESIGIO</a>,
-<a class="el" href="dmxinput_8h.html#a31a14">DMX_ACTIVESIGIO</a>
- }</td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a17">dmxInputInit</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a18">dmxInputReInit</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a19">dmxInputLateReInit</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a20">dmxInputFree</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a21">dmxInputLogDevices</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a22">dmxUpdateWindowInfo</a> (<a class="el" href="dmxinput_8h.html#a30">DMXUpdateType</a> type, WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a24">dmxeqEnqueue</a> (xEvent *e)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a25">dmxeqSwitchScreen</a> (ScreenPtr pScreen, Bool fromDIX)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a26">dmxGetGlobalPosition</a> (int *x, int *y)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a4">dmxNumInputs</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinput_8h.html#a5">dmxInputs</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides access to:<ul>
-<li>global variables available to all hw/dmx routines, and</li><li>enumerations and typedefs needed by input routines in hw/dmx (and hw/dmx/input).</li></ul>
-<p>
-The goal is that no files in hw/dmx should include header files from hw/dmx/input -- the interface defined here should be the only interface exported to the hw/dmx layer. <dl compact><dt><b>See also:</b></dt><dd>input/dmxinputinit.c.</dd></dl>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxinput.h::DMX_MAX_SIGIO_FDS" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_MAX_SIGIO_FDS&nbsp;&nbsp;&nbsp;4
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Maximum number of file descriptors for SIGIO handling </td>
- </tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxinput.h::DMXLocalInputInfoPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXLocalInputInfo.html">_DMXLocalInputInfo</a>* <a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-An opaque structure that is only exposed in the dmx/input layer. </td>
- </tr>
-</table>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="a31" doxytag="dmxinput.h::dmxSigioState" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> enum <a class="el" href="dmxinput_8h.html#a31">dmxSigioState</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-State of the SIGIO engine <dl compact><dt><b>Enumeration values: </b></dt><dd>
-<table border=0 cellspacing=2 cellpadding=0>
-<tr><td valign=top><em><a class="anchor" name="a31a12" doxytag="DMX_NOSIGIO" ></a>DMX_NOSIGIO</em>&nbsp;</td><td>
-Device does not use SIGIO at all. </td></tr>
-<tr><td valign=top><em><a class="anchor" name="a31a13" doxytag="DMX_USESIGIO" ></a>DMX_USESIGIO</em>&nbsp;</td><td>
-Device can use SIGIO, but is not (e.g., because the VT is switch away). </td></tr>
-<tr><td valign=top><em><a class="anchor" name="a31a14" doxytag="DMX_ACTIVESIGIO" ></a>DMX_ACTIVESIGIO</em>&nbsp;</td><td>
-Device is currently using SIGIO. </td></tr>
-</table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a30" doxytag="dmxinput.h::DMXUpdateType" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> enum <a class="el" href="dmxinput_8h.html#a30">DMXUpdateType</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Reason why window layout was updated. <dl compact><dt><b>Enumeration values: </b></dt><dd>
-<table border=0 cellspacing=2 cellpadding=0>
-<tr><td valign=top><em><a class="anchor" name="a30a6" doxytag="DMX_UPDATE_REALIZE" ></a>DMX_UPDATE_REALIZE</em>&nbsp;</td><td>
-Window realized </td></tr>
-<tr><td valign=top><em><a class="anchor" name="a30a7" doxytag="DMX_UPDATE_UNREALIZE" ></a>DMX_UPDATE_UNREALIZE</em>&nbsp;</td><td>
-Window unrealized </td></tr>
-<tr><td valign=top><em><a class="anchor" name="a30a8" doxytag="DMX_UPDATE_RESTACK" ></a>DMX_UPDATE_RESTACK</em>&nbsp;</td><td>
-Stacking order changed </td></tr>
-<tr><td valign=top><em><a class="anchor" name="a30a9" doxytag="DMX_UPDATE_COPY" ></a>DMX_UPDATE_COPY</em>&nbsp;</td><td>
-Window copied </td></tr>
-<tr><td valign=top><em><a class="anchor" name="a30a10" doxytag="DMX_UPDATE_RESIZE" ></a>DMX_UPDATE_RESIZE</em>&nbsp;</td><td>
-Window resized </td></tr>
-<tr><td valign=top><em><a class="anchor" name="a30a11" doxytag="DMX_UPDATE_REPARENT" ></a>DMX_UPDATE_REPARENT</em>&nbsp;</td><td>
-Window reparented </td></tr>
-</table>
-</dl>
- </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a24" doxytag="dmxinput.h::dmxeqEnqueue" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxeqEnqueue </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">xEvent *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>e</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This function adds an event to the end of the queue. If the event is an XInput event, then the next event (the valuator event) is also stored in the queue. If the new event has a time before the time of the last event currently on the queue, then the time is updated for the new event.<p>
-Must be reentrant with ProcessInputEvents. Assumption: dmxeqEnqueue will never be interrupted. If this is called from both signal handlers and regular code, make sure the signal is suspended when called from regular code. </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="dmxinput.h::dmxeqSwitchScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxeqSwitchScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Bool&nbsp;</td>
- <td class="mdname" nowrap> <em>fromDIX</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make <em>pScreen</em> the new screen for enqueueing events. If <em>fromDIX</em> is TRUE, also make <em>pScreen</em> the new screen for dequeuing events. </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="dmxinput.h::dmxGetGlobalPosition" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxGetGlobalPosition </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int *&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return DMX's notion of the pointer position in the global coordinate space. </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="dmxinput.h::dmxInputFree" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputFree </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free all of the memory associated with <em>dmxInput</em> </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxinput.h::dmxInputInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize all of the devices described in <em>dmxInput</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="dmxinput.h::dmxInputLateReInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputLateReInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Re-initialize all the devices described in <em>dmxInput</em>. Called from #dmxReconfig after the cursor is redisplayed. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="dmxinput.h::dmxInputLogDevices" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputLogDevices </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Log information about all of the known devices using <a class="el" href="dmxlog_8c.html#a7">dmxLog()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxinput.h::dmxInputReInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputReInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Re-initialize all the devices described in <em>dmxInput</em>. Called from #dmxReconfig before the cursor is redisplayed. </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="dmxinput.h::dmxUpdateWindowInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxUpdateWindowInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="dmxinput_8h.html#a30">DMXUpdateType</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>type</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is called from #dmxwindow.c whenever the layout of windows on the display might have changed. This information is used by input drivers (currently only the console driver) that provide information about window layout to the user. </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a5" doxytag="dmxinput.h::dmxInputs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a>* <a class="el" href="dmxinput_8h.html#a5">dmxInputs</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-List of inputs </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxinput.h::dmxNumInputs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxinput_8h.html#a4">dmxNumInputs</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of <a class="el" href="dmxinput_8h.html#a5">dmxInputs</a> </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8c.html
deleted file mode 100644
index 9b06c5221..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8c.html
+++ /dev/null
@@ -1,477 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxinputinit.c File Reference</h1><code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxextension_8h-source.html">dmxextension.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxdummy_8h-source.html">dmxdummy.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxbackend_8h-source.html">dmxbackend.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxconsole_8h-source.html">dmxconsole.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcommon_8h-source.html">dmxcommon.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxevents_8h-source.html">dmxevents.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxmotion_8h-source.html">dmxmotion.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxeq_8h-source.html">dmxeq.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxprop_8h-source.html">dmxprop.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxconfig_8h-source.html">config/dmxconfig.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcursor_8h-source.html">dmxcursor.h</a>"</code><br>
-<code>#include "<a class="el" href="lnx-keyboard_8h-source.html">lnx-keyboard.h</a>"</code><br>
-<code>#include "<a class="el" href="lnx-ms_8h-source.html">lnx-ms.h</a>"</code><br>
-<code>#include "<a class="el" href="lnx-ps2_8h-source.html">lnx-ps2.h</a>"</code><br>
-<code>#include "<a class="el" href="usb-keyboard_8h-source.html">usb-keyboard.h</a>"</code><br>
-<code>#include "<a class="el" href="usb-mouse_8h-source.html">usb-mouse.h</a>"</code><br>
-<code>#include "<a class="el" href="usb-other_8h-source.html">usb-other.h</a>"</code><br>
-<code>#include "<a class="el" href="usb-common_8h-source.html">usb-common.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsigio_8h-source.html">dmxsigio.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxarg_8h-source.html">dmxarg.h</a>"</code><br>
-<code>#include "inputstr.h"</code><br>
-<code>#include "input.h"</code><br>
-<code>#include "mipointer.h"</code><br>
-<code>#include "windowstr.h"</code><br>
-<code>#include "XI.h"</code><br>
-<code>#include "XIproto.h"</code><br>
-<code>#include "exevents.h"</code><br>
-<code>#include "extinit.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8c.html#a16">dmxChangePointerControl</a> (DeviceIntPtr pDevice, PtrCtrl *ctrl)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8c.html#a18">dmxKeyboardKbdCtrlProc</a> (DeviceIntPtr pDevice, KeybdCtrl *ctrl)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8c.html#a20">dmxKeyboardBellProc</a> (int percent, DeviceIntPtr pDevice, pointer ctrl, int unknown)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8c.html#a33">dmxInputCopyLocal</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput, <a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> s)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8c.html#a37">dmxInputReInit</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8c.html#a38">dmxInputLateReInit</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8c.html#a39">dmxInputInit</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8c.html#a41">dmxInputFree</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8c.html#a42">dmxInputLogDevices</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8c.html#a43">dmxInputDetach</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8c.html#a44">dmxInputDetachAll</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8c.html#a45">dmxInputDetachId</a> (int id)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides generic input support. Functions here set up input and lead to the calling of low-level device drivers for input.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a16" doxytag="dmxinputinit.c::dmxChangePointerControl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxChangePointerControl </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDevice</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PtrCtrl *&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the pointer control information for the <em>pDevice</em>. If the device sends core events, then also change the control information for all of the pointer devices that send core events. </td>
- </tr>
-</table>
-<a class="anchor" name="a33" doxytag="dmxinputinit.c::dmxInputCopyLocal" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> dmxInputCopyLocal </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxInput</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>s</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Copy the local input information from <em>s</em> into a new <em>devs</em> slot in <em>dmxInput</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a43" doxytag="dmxinputinit.c::dmxInputDetach" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxInputDetach </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Detach an input </td>
- </tr>
-</table>
-<a class="anchor" name="a44" doxytag="dmxinputinit.c::dmxInputDetachAll" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputDetachAll </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Search for input associated with <em>dmxScreen</em>, and detach. </td>
- </tr>
-</table>
-<a class="anchor" name="a45" doxytag="dmxinputinit.c::dmxInputDetachId" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxInputDetachId </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>id</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Search for input associated with <em>deviceId</em>, and detach. </td>
- </tr>
-</table>
-<a class="anchor" name="a41" doxytag="dmxinputinit.c::dmxInputFree" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputFree </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free all of the memory associated with <em>dmxInput</em> </td>
- </tr>
-</table>
-<a class="anchor" name="a39" doxytag="dmxinputinit.c::dmxInputInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize all of the devices described in <em>dmxInput</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a38" doxytag="dmxinputinit.c::dmxInputLateReInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputLateReInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Re-initialize all the devices described in <em>dmxInput</em>. Called from #dmxReconfig after the cursor is redisplayed. </td>
- </tr>
-</table>
-<a class="anchor" name="a42" doxytag="dmxinputinit.c::dmxInputLogDevices" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputLogDevices </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Log information about all of the known devices using <a class="el" href="dmxlog_8c.html#a7">dmxLog()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a37" doxytag="dmxinputinit.c::dmxInputReInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputReInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Re-initialize all the devices described in <em>dmxInput</em>. Called from #dmxReconfig before the cursor is redisplayed. </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="dmxinputinit.c::dmxKeyboardBellProc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxKeyboardBellProc </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>percent</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDevice</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>unknown</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Sound the bell on the device. If the device send core events, then sound the bell on all of the devices that send core events. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxinputinit.c::dmxKeyboardKbdCtrlProc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxKeyboardKbdCtrlProc </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDevice</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeybdCtrl *&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the keyboard control information for the <em>pDevice</em>. If the device sends core events, then also change the control information for all of the keyboard devices that send core events. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8h-source.html
deleted file mode 100644
index 9899c67a0..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8h-source.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxinputinit.h</h1><a href="dmxinputinit_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXINPUTINIT_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXINPUTINIT_H_</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="preprocessor">#include "<a class="code" href="dmx_8h.html">dmx.h</a>"</span>
-00042 <span class="preprocessor">#include "<a class="code" href="dmxinput_8h.html">dmxinput.h</a>"</span>
-00043 <span class="preprocessor">#include "<a class="code" href="dmxlog_8h.html">dmxlog.h</a>"</span>
-00044
-00045
-00046 <span class="preprocessor">#define DMX_LOCAL_DEFAULT_KEYBOARD "kbd"</span>
-00047 <span class="preprocessor"></span><span class="preprocessor">#define DMX_LOCAL_DEFAULT_POINTER "ps2"</span>
-00048 <span class="preprocessor"></span><span class="preprocessor">#define DMX_MAX_BUTTONS 256</span>
-00049 <span class="preprocessor"></span><span class="preprocessor">#define DMX_MOTION_SIZE 256</span>
-00050 <span class="preprocessor"></span><span class="preprocessor">#define DMX_MAX_VALUATORS 32</span>
-00051 <span class="preprocessor"></span><span class="preprocessor">#define DMX_MAX_AXES 32</span>
-00052 <span class="preprocessor"></span><span class="preprocessor">#define DMX_MAX_XINPUT_EVENT_TYPES 100</span>
-00053 <span class="preprocessor"></span><span class="preprocessor">#define DMX_MAP_ENTRIES 16 </span><span class="comment">/* Must be a power of 2 */</span>
-00054 <span class="preprocessor">#define DMX_MAP_MASK (DMX_MAP_ENTRIES - 1)</span>
-00055 <span class="preprocessor"></span>
-00056 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00057 DMX_FUNCTION_GRAB,
-00058 DMX_FUNCTION_TERMINATE,
-00059 DMX_FUNCTION_FINE
-00060 } DMXFunctionType;
-00061
-00062 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00063 DMX_LOCAL_HIGHLEVEL,
-00064 DMX_LOCAL_KEYBOARD,
-00065 DMX_LOCAL_MOUSE,
-00066 DMX_LOCAL_OTHER
-00067 } DMXLocalInputType;
-00068
-00069 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00070 DMX_LOCAL_TYPE_LOCAL,
-00071 DMX_LOCAL_TYPE_CONSOLE,
-00072 DMX_LOCAL_TYPE_BACKEND,
-00073 DMX_LOCAL_TYPE_COMMON
-00074 } DMXLocalInputExtType;
-00075
-00076 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00077 DMX_RELATIVE,
-00078 DMX_ABSOLUTE,
-00079 DMX_ABSOLUTE_CONFINED
-00080 } DMXMotionType;
-00081
-<a name="l00084"></a><a class="code" href="struct__DMXLocalInitInfo.html">00084</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXLocalInitInfo.html">_DMXLocalInitInfo</a> {
-<a name="l00085"></a><a class="code" href="struct__DMXLocalInitInfo.html#o0">00085</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o0">keyboard</a>;
-<a name="l00087"></a><a class="code" href="struct__DMXLocalInitInfo.html#o1">00087</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o1">keyClass</a>;
-<a name="l00088"></a><a class="code" href="struct__DMXLocalInitInfo.html#o2">00088</a> KeySymsRec <a class="code" href="struct__DMXLocalInitInfo.html#o2">keySyms</a>;
-<a name="l00089"></a><a class="code" href="struct__DMXLocalInitInfo.html#o3">00089</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o3">freemap</a>;
-<a name="l00090"></a><a class="code" href="struct__DMXLocalInitInfo.html#o4">00090</a> CARD8 <a class="code" href="struct__DMXLocalInitInfo.html#o4">modMap</a>[MAP_LENGTH];
-00091 <span class="preprocessor">#ifdef XKB</span>
-<a name="l00092"></a><a class="code" href="struct__DMXLocalInitInfo.html#o5">00092</a> <span class="preprocessor"></span> XkbDescPtr <a class="code" href="struct__DMXLocalInitInfo.html#o5">xkb</a>;
-<a name="l00093"></a><a class="code" href="struct__DMXLocalInitInfo.html#o6">00093</a> XkbComponentNamesRec <a class="code" href="struct__DMXLocalInitInfo.html#o6">names</a>;
-<a name="l00094"></a><a class="code" href="struct__DMXLocalInitInfo.html#o7">00094</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o7">freenames</a>;
-<a name="l00095"></a><a class="code" href="struct__DMXLocalInitInfo.html#o8">00095</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o8">force</a>;
-00096 <span class="preprocessor">#endif</span>
-00097 <span class="preprocessor"></span>
-<a name="l00098"></a><a class="code" href="struct__DMXLocalInitInfo.html#o9">00098</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o9">buttonClass</a>;
-<a name="l00099"></a><a class="code" href="struct__DMXLocalInitInfo.html#o10">00099</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o10">numButtons</a>;
-<a name="l00100"></a><a class="code" href="struct__DMXLocalInitInfo.html#o11">00100</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="struct__DMXLocalInitInfo.html#o11">map</a>[DMX_MAX_BUTTONS];
-<a name="l00102"></a><a class="code" href="struct__DMXLocalInitInfo.html#o12">00102</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o12">valuatorClass</a>;
-<a name="l00104"></a><a class="code" href="struct__DMXLocalInitInfo.html#o13">00104</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o13">numRelAxes</a>;
-<a name="l00105"></a><a class="code" href="struct__DMXLocalInitInfo.html#o14">00105</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o14">numAbsAxes</a>;
-<a name="l00106"></a><a class="code" href="struct__DMXLocalInitInfo.html#o15">00106</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o15">minval</a>[DMX_MAX_AXES];
-<a name="l00107"></a><a class="code" href="struct__DMXLocalInitInfo.html#o16">00107</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o16">maxval</a>[DMX_MAX_AXES];
-<a name="l00108"></a><a class="code" href="struct__DMXLocalInitInfo.html#o17">00108</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o17">res</a>[DMX_MAX_AXES];
-<a name="l00109"></a><a class="code" href="struct__DMXLocalInitInfo.html#o18">00109</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o18">minres</a>[DMX_MAX_AXES];
-<a name="l00110"></a><a class="code" href="struct__DMXLocalInitInfo.html#o19">00110</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o19">maxres</a>[DMX_MAX_AXES];
-<a name="l00112"></a><a class="code" href="struct__DMXLocalInitInfo.html#o20">00112</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o20">focusClass</a>;
-<a name="l00114"></a><a class="code" href="struct__DMXLocalInitInfo.html#o21">00114</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o21">proximityClass</a>;
-<a name="l00116"></a><a class="code" href="struct__DMXLocalInitInfo.html#o22">00116</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o22">kbdFeedbackClass</a>;
-<a name="l00118"></a><a class="code" href="struct__DMXLocalInitInfo.html#o23">00118</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o23">ptrFeedbackClass</a>;
-<a name="l00120"></a><a class="code" href="struct__DMXLocalInitInfo.html#o24">00120</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o24">ledFeedbackClass</a>;
-<a name="l00122"></a><a class="code" href="struct__DMXLocalInitInfo.html#o25">00122</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o25">belFeedbackClass</a>;
-<a name="l00124"></a><a class="code" href="struct__DMXLocalInitInfo.html#o26">00124</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o26">intFeedbackClass</a>;
-<a name="l00126"></a><a class="code" href="struct__DMXLocalInitInfo.html#o27">00126</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o27">strFeedbackClass</a>;
-<a name="l00129"></a><a class="code" href="struct__DMXLocalInitInfo.html#o28">00129</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o28">maxSymbols</a>;
-<a name="l00130"></a><a class="code" href="struct__DMXLocalInitInfo.html#o29">00130</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInitInfo.html#o29">maxSymbolsSupported</a>;
-<a name="l00131"></a><a class="code" href="struct__DMXLocalInitInfo.html#o30">00131</a> KeySym *<a class="code" href="struct__DMXLocalInitInfo.html#o30">symbols</a>;
-00132 } <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfo</a>, *<a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>;
-00133
-00134 <span class="keyword">typedef</span> pointer (*dmxCreatePrivateProcPtr)(DeviceIntPtr);
-00135 <span class="keyword">typedef</span> void (*dmxDestroyPrivateProcPtr)(pointer);
-00136
-00137 <span class="keyword">typedef</span> void (*dmxInitProcPtr)(DevicePtr);
-00138 <span class="keyword">typedef</span> void (*dmxReInitProcPtr)(DevicePtr);
-00139 <span class="keyword">typedef</span> void (*dmxLateReInitProcPtr)(DevicePtr);
-00140 <span class="keyword">typedef</span> void (*dmxGetInfoProcPtr)(DevicePtr, <a class="code" href="dmxinputinit_8h.html#a10">DMXLocalInitInfoPtr</a>);
-00141 <span class="keyword">typedef</span> int (*dmxOnProcPtr)(DevicePtr);
-00142 <span class="keyword">typedef</span> void (*dmxOffProcPtr)(DevicePtr);
-00143 <span class="keyword">typedef</span> void (*dmxUpdatePositionProcPtr)(pointer, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
-00144
-00145 <span class="keyword">typedef</span> void (*dmxVTPreSwitchProcPtr)(pointer); <span class="comment">/* Turn I/O Off */</span>
-00146 <span class="keyword">typedef</span> void (*dmxVTPostSwitchProcPtr)(pointer); <span class="comment">/* Turn I/O On */</span>
-00147 <span class="keyword">typedef</span> void (*dmxVTSwitchReturnProcPtr)(pointer);
-00148 <span class="keyword">typedef</span> int (*dmxVTSwitchProcPtr)(pointer, <span class="keywordtype">int</span> vt,
-00149 dmxVTSwitchReturnProcPtr, pointer);
-00150
-00151 <span class="keyword">typedef</span> void (*dmxMotionProcPtr)(DevicePtr,
-00152 <span class="keywordtype">int</span> *valuators,
-00153 <span class="keywordtype">int</span> firstAxis,
-00154 <span class="keywordtype">int</span> axesCount,
-00155 DMXMotionType type,
-00156 DMXBlockType block);
-00157 <span class="keyword">typedef</span> void (*dmxEnqueueProcPtr)(DevicePtr, <span class="keywordtype">int</span> type, <span class="keywordtype">int</span> detail,
-00158 KeySym keySym, XEvent *e,
-00159 DMXBlockType block);
-00160 <span class="keyword">typedef</span> int (*dmxCheckSpecialProcPtr)(DevicePtr, KeySym keySym);
-00161 <span class="keyword">typedef</span> void (*dmxCollectEventsProcPtr)(DevicePtr,
-00162 dmxMotionProcPtr,
-00163 dmxEnqueueProcPtr,
-00164 dmxCheckSpecialProcPtr,
-00165 DMXBlockType);
-00166 <span class="keyword">typedef</span> void (*dmxProcessInputProcPtr)(pointer);
-00167 <span class="keyword">typedef</span> void (*dmxUpdateInfoProcPtr)(pointer, <a class="code" href="dmxinput_8h.html#a30">DMXUpdateType</a>, WindowPtr);
-00168 <span class="keyword">typedef</span> int (*dmxFunctionsProcPtr)(pointer, DMXFunctionType);
-00169
-00170 <span class="keyword">typedef</span> void (*dmxKBCtrlProcPtr)(DevicePtr, KeybdCtrl *ctrl);
-00171 <span class="keyword">typedef</span> void (*dmxMCtrlProcPtr)(DevicePtr, PtrCtrl *ctrl);
-00172 <span class="keyword">typedef</span> void (*dmxKBBellProcPtr)(DevicePtr, <span class="keywordtype">int</span> percent,
-00173 <span class="keywordtype">int</span> volume, <span class="keywordtype">int</span> pitch, <span class="keywordtype">int</span> duration);
-00174
-<a name="l00177"></a><a class="code" href="struct__DMXEventMap.html">00177</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXEventMap.html">_DMXEventMap</a> {
-<a name="l00178"></a><a class="code" href="struct__DMXEventMap.html#o0">00178</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXEventMap.html#o0">remote</a>;
-<a name="l00179"></a><a class="code" href="struct__DMXEventMap.html#o1">00179</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXEventMap.html#o1">server</a>;
-00180 } <a class="code" href="struct__DMXEventMap.html">DMXEventMap</a>;
-00181
-<a name="l00185"></a><a class="code" href="struct__DMXLocalInputInfo.html">00185</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXLocalInputInfo.html">_DMXLocalInputInfo</a> {
-<a name="l00186"></a><a class="code" href="struct__DMXLocalInputInfo.html#o0">00186</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="struct__DMXLocalInputInfo.html#o0">name</a>;
-<a name="l00187"></a><a class="code" href="struct__DMXLocalInputInfo.html#o1">00187</a> DMXLocalInputType type;
-<a name="l00188"></a><a class="code" href="struct__DMXLocalInputInfo.html#o2">00188</a> DMXLocalInputExtType <a class="code" href="struct__DMXLocalInputInfo.html#o2">extType</a>;
-<a name="l00189"></a><a class="code" href="struct__DMXLocalInputInfo.html#o3">00189</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInputInfo.html#o3">binding</a>;
-00193 <span class="comment">/* Low-level (e.g., keyboard/mouse drivers) */</span>
-00194
-<a name="l00195"></a><a class="code" href="struct__DMXLocalInputInfo.html#o4">00195</a> dmxCreatePrivateProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o4">create_private</a>;
-<a name="l00198"></a><a class="code" href="struct__DMXLocalInputInfo.html#o5">00198</a> dmxDestroyPrivateProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o5">destroy_private</a>;
-<a name="l00201"></a><a class="code" href="struct__DMXLocalInputInfo.html#o6">00201</a> dmxInitProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o6">init</a>;
-<a name="l00202"></a><a class="code" href="struct__DMXLocalInputInfo.html#o7">00202</a> dmxReInitProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o7">reinit</a>;
-<a name="l00205"></a><a class="code" href="struct__DMXLocalInputInfo.html#o8">00205</a> dmxLateReInitProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o8">latereinit</a>;
-<a name="l00209"></a><a class="code" href="struct__DMXLocalInputInfo.html#o9">00209</a> dmxGetInfoProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o9">get_info</a>;
-<a name="l00210"></a><a class="code" href="struct__DMXLocalInputInfo.html#o10">00210</a> dmxOnProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o10">on</a>;
-<a name="l00211"></a><a class="code" href="struct__DMXLocalInputInfo.html#o11">00211</a> dmxOffProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o11">off</a>;
-<a name="l00212"></a><a class="code" href="struct__DMXLocalInputInfo.html#o12">00212</a> dmxUpdatePositionProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o12">update_position</a>;
-<a name="l00215"></a><a class="code" href="struct__DMXLocalInputInfo.html#o13">00215</a> dmxVTPreSwitchProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o13">vt_pre_switch</a>;
-<a name="l00216"></a><a class="code" href="struct__DMXLocalInputInfo.html#o14">00216</a> dmxVTPostSwitchProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o14">vt_post_switch</a>;
-<a name="l00217"></a><a class="code" href="struct__DMXLocalInputInfo.html#o15">00217</a> dmxVTSwitchProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o15">vt_switch</a>;
-<a name="l00219"></a><a class="code" href="struct__DMXLocalInputInfo.html#o16">00219</a> dmxCollectEventsProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o16">collect_events</a>;
-<a name="l00222"></a><a class="code" href="struct__DMXLocalInputInfo.html#o17">00222</a> dmxProcessInputProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o17">process_input</a>;
-00224 dmxFunctionsProcPtr functions;
-<a name="l00225"></a><a class="code" href="struct__DMXLocalInputInfo.html#o19">00225</a> dmxUpdateInfoProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o19">update_info</a>;
-<a name="l00228"></a><a class="code" href="struct__DMXLocalInputInfo.html#o20">00228</a> dmxMCtrlProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o20">mCtrl</a>;
-<a name="l00229"></a><a class="code" href="struct__DMXLocalInputInfo.html#o21">00229</a> dmxKBCtrlProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o21">kCtrl</a>;
-<a name="l00230"></a><a class="code" href="struct__DMXLocalInputInfo.html#o22">00230</a> dmxKBBellProcPtr <a class="code" href="struct__DMXLocalInputInfo.html#o22">kBell</a>;
-<a name="l00232"></a><a class="code" href="struct__DMXLocalInputInfo.html#o23">00232</a> pointer <span class="keyword">private</span>;
-<a name="l00233"></a><a class="code" href="struct__DMXLocalInputInfo.html#o24">00233</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInputInfo.html#o24">isCore</a>;
-<a name="l00234"></a><a class="code" href="struct__DMXLocalInputInfo.html#o25">00234</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInputInfo.html#o25">sendsCore</a>;
-<a name="l00235"></a><a class="code" href="struct__DMXLocalInputInfo.html#o26">00235</a> KeybdCtrl <a class="code" href="struct__DMXLocalInputInfo.html#o26">kctrl</a>;
-<a name="l00236"></a><a class="code" href="struct__DMXLocalInputInfo.html#o27">00236</a> PtrCtrl <a class="code" href="struct__DMXLocalInputInfo.html#o27">mctrl</a>;
-<a name="l00238"></a><a class="code" href="struct__DMXLocalInputInfo.html#o28">00238</a> DeviceIntPtr <a class="code" href="struct__DMXLocalInputInfo.html#o28">pDevice</a>;
-<a name="l00239"></a><a class="code" href="struct__DMXLocalInputInfo.html#o29">00239</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInputInfo.html#o29">inputIdx</a>;
-<a name="l00240"></a><a class="code" href="struct__DMXLocalInputInfo.html#o31">00240</a> <span class="keywordtype">int</span> lastX, <a class="code" href="struct__DMXLocalInputInfo.html#o31">lastY</a>;
-<a name="l00244"></a><a class="code" href="struct__DMXLocalInputInfo.html#o32">00244</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInputInfo.html#o32">head</a>;
-<a name="l00246"></a><a class="code" href="struct__DMXLocalInputInfo.html#o33">00246</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInputInfo.html#o33">tail</a>;
-<a name="l00248"></a><a class="code" href="struct__DMXLocalInputInfo.html#o34">00248</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *<a class="code" href="struct__DMXLocalInputInfo.html#o34">history</a>;
-<a name="l00249"></a><a class="code" href="struct__DMXLocalInputInfo.html#o35">00249</a> <span class="keywordtype">int</span> *valuators;
-00251 <span class="comment">/* for XInput ChangePointerDevice */</span>
-00252 int (*savedMotionProc)(DeviceIntPtr,
-00253 xTimecoord *,
-00254 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>,
-00255 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>,
-00256 ScreenPtr);
-<a name="l00257"></a><a class="code" href="struct__DMXLocalInputInfo.html#o37">00257</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInputInfo.html#o37">savedMotionEvents</a>;
-<a name="l00258"></a><a class="code" href="struct__DMXLocalInputInfo.html#o38">00258</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInputInfo.html#o38">savedSendsCore</a>;
-<a name="l00260"></a><a class="code" href="struct__DMXLocalInputInfo.html#o39">00260</a> <a class="code" href="struct__DMXEventMap.html">DMXEventMap</a> <a class="code" href="struct__DMXLocalInputInfo.html#o39">map</a>[DMX_MAP_ENTRIES];
-<a name="l00261"></a><a class="code" href="struct__DMXLocalInputInfo.html#o40">00261</a> <span class="keywordtype">int</span> <a class="code" href="struct__DMXLocalInputInfo.html#o40">mapOptimize</a>;
-<a name="l00265"></a><a class="code" href="struct__DMXLocalInputInfo.html#o41">00265</a> <span class="keywordtype">long</span> <a class="code" href="struct__DMXLocalInputInfo.html#o41">deviceId</a>;
-<a name="l00267"></a><a class="code" href="struct__DMXLocalInputInfo.html#o42">00267</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="struct__DMXLocalInputInfo.html#o42">deviceName</a>;
-00269 } <a class="code" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoRec</a>;
-00270
-00271 <span class="keyword">extern</span> <a class="code" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> dmxLocalCorePointer, dmxLocalCoreKeyboard;
-00272
-00273 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxLocalInitInput(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput);
-00274 <span class="keyword">extern</span> <a class="code" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> <a class="code" href="dmxinputinit_8c.html#a33">dmxInputCopyLocal</a>(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput,
-00275 <a class="code" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> s);
-00276
-00277 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxinputinit_8c.html#a16">dmxChangePointerControl</a>(DeviceIntPtr pDevice, PtrCtrl *ctrl);
-00278 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxinputinit_8c.html#a18">dmxKeyboardKbdCtrlProc</a>(DeviceIntPtr pDevice, KeybdCtrl *ctrl);
-00279 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxinputinit_8c.html#a20">dmxKeyboardBellProc</a>(<span class="keywordtype">int</span> percent, DeviceIntPtr pDevice,
-00280 pointer ctrl, <span class="keywordtype">int</span> unknown);
-00281
-00282 <span class="keyword">extern</span> <span class="keywordtype">int</span> dmxInputExtensionErrorHandler(Display *dsp, <span class="keywordtype">char</span> *name,
-00283 <span class="keywordtype">char</span> *reason);
-00284
-00285 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxinputinit_8c.html#a43">dmxInputDetach</a>(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput);
-00286 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxinputinit_8c.html#a44">dmxInputDetachAll</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00287 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxinputinit_8c.html#a45">dmxInputDetachId</a>(<span class="keywordtype">int</span> id);
-00288 <span class="keyword">extern</span> <a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInputLocateId(<span class="keywordtype">int</span> id);
-00289 <span class="keyword">extern</span> <span class="keywordtype">int</span> dmxInputAttachConsole(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">int</span> isCore,
-00290 <span class="keywordtype">int</span> *id);
-00291 <span class="keyword">extern</span> <span class="keywordtype">int</span> dmxInputAttachBackend(<span class="keywordtype">int</span> physicalScreen, <span class="keywordtype">int</span> isCore,
-00292 <span class="keywordtype">int</span> *id);
-00293
-00294 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8h.html
deleted file mode 100644
index 03a64d73d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxinputinit_8h.html
+++ /dev/null
@@ -1,406 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxinputinit.h File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinput_8h-source.html">dmxinput.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-
-<p>
-<a href="dmxinputinit_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXEventMap.html">_DMXEventMap</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html">_DMXLocalInitInfo</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html">_DMXLocalInputInfo</a></td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXLocalInitInfo.html">_DMXLocalInitInfo</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8h.html#a9">DMXLocalInitInfo</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXLocalInitInfo.html">_DMXLocalInitInfo</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8h.html#a10">DMXLocalInitInfoPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXEventMap.html">_DMXEventMap</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8h.html#a34">DMXEventMap</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXLocalInputInfo.html">_DMXLocalInputInfo</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8h.html#a35">DMXLocalInputInfoRec</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8h.html#a53">dmxInputCopyLocal</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput, <a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> s)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8h.html#a54">dmxChangePointerControl</a> (DeviceIntPtr pDevice, PtrCtrl *ctrl)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8h.html#a55">dmxKeyboardKbdCtrlProc</a> (DeviceIntPtr pDevice, KeybdCtrl *ctrl)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8h.html#a56">dmxKeyboardBellProc</a> (int percent, DeviceIntPtr pDevice, pointer ctrl, int unknown)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8h.html#a58">dmxInputDetach</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8h.html#a59">dmxInputDetachAll</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxinputinit_8h.html#a60">dmxInputDetachId</a> (int id)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for low-level input support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxinputinit_8c.html">dmxinputinit.c</a></dd></dl>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a34" doxytag="dmxinputinit.h::DMXEventMap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXEventMap.html">_DMXEventMap</a> <a class="el" href="struct__DMXEventMap.html">DMXEventMap</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores a mapping between the device id on the remote X server and the id on the DMX server </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxinputinit.h::DMXLocalInitInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXLocalInitInfo.html">_DMXLocalInitInfo</a> <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfo</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores information from low-level device that is used to initialize the device at the dix level. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxinputinit.h::DMXLocalInitInfoPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXLocalInitInfo.html">_DMXLocalInitInfo</a> * <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores information from low-level device that is used to initialize the device at the dix level. </td>
- </tr>
-</table>
-<a class="anchor" name="a35" doxytag="dmxinputinit.h::DMXLocalInputInfoRec" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXLocalInputInfo.html">_DMXLocalInputInfo</a> <a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoRec</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This is the device-independent structure used by the low-level input routines. The contents are not exposed to top-level .c files (except dmxextensions.c). <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxinput_8h.html">dmxinput.h</a> <p>
-dmxextensions.c </dd></dl>
- </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a54" doxytag="dmxinputinit.h::dmxChangePointerControl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxChangePointerControl </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDevice</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PtrCtrl *&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the pointer control information for the <em>pDevice</em>. If the device sends core events, then also change the control information for all of the pointer devices that send core events. </td>
- </tr>
-</table>
-<a class="anchor" name="a53" doxytag="dmxinputinit.h::dmxInputCopyLocal" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> dmxInputCopyLocal </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxInput</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>s</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Copy the local input information from <em>s</em> into a new <em>devs</em> slot in <em>dmxInput</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a58" doxytag="dmxinputinit.h::dmxInputDetach" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxInputDetach </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Detach an input </td>
- </tr>
-</table>
-<a class="anchor" name="a59" doxytag="dmxinputinit.h::dmxInputDetachAll" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInputDetachAll </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Search for input associated with <em>dmxScreen</em>, and detach. </td>
- </tr>
-</table>
-<a class="anchor" name="a60" doxytag="dmxinputinit.h::dmxInputDetachId" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxInputDetachId </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>id</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Search for input associated with <em>deviceId</em>, and detach. </td>
- </tr>
-</table>
-<a class="anchor" name="a56" doxytag="dmxinputinit.h::dmxKeyboardBellProc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxKeyboardBellProc </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>percent</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDevice</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>unknown</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Sound the bell on the device. If the device send core events, then sound the bell on all of the devices that send core events. </td>
- </tr>
-</table>
-<a class="anchor" name="a55" doxytag="dmxinputinit.h::dmxKeyboardKbdCtrlProc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxKeyboardKbdCtrlProc </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDevice</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeybdCtrl *&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the keyboard control information for the <em>pDevice</em>. If the device sends core events, then also change the control information for all of the keyboard devices that send core events. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8c.html
deleted file mode 100644
index c32a4f9c9..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8c.html
+++ /dev/null
@@ -1,602 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxlog.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinput_8h-source.html">dmxinput.h</a>"</code><br>
-<code>#include "XI.h"</code><br>
-<code>#include "XIproto.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a1">dmxSetLogLevel</a> (<a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> newLevel)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a2">dmxGetLogLevel</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a3">AbortServer</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a7">dmxLog</a> (<a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> logLevel, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a8">dmxLogCont</a> (<a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> logLevel, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a9">dmxLogOutput</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a10">dmxLogOutputCont</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a11">dmxLogOutputWarning</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a12">dmxLogInput</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a13">dmxLogInputCont</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a14">dmxLogArgs</a> (<a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> logLevel, int argc, char **argv)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a15">dmxLogVisual</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, XVisualInfo *vi, int defaultVisual)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>const char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a16">dmxXInputEventName</a> (int type)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>const char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8c.html#a17">dmxEventName</a> (int type)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file encapsulated all of the logging functions that are used by DMX for informational, warning, and error messages.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxlog.c::AbortServer" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void AbortServer </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This function was removed between XFree86 4.3.0 and XFree86 4.4.0. </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxlog.c::dmxEventName" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const char* dmxEventName </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>type</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Translate an event <em>type</em> into a human-readable string. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxlog.c::dmxGetLogLevel" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> dmxGetLogLevel </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Returns the log level set by <a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxlog.c::dmxLog" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLog </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>logLevel</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Log the specified message at the specified <em>logLevel</em>. <em>format</em> can be a printf-like format expression. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxlog.c::dmxLogArgs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogArgs </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>logLevel</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>argc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char **&nbsp;</td>
- <td class="mdname" nowrap> <em>argv</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Print <em>argc</em> messages, each describing an element in <em>argv</em>. This is maingly for debugging purposes. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxlog.c::dmxLogCont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogCont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>logLevel</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Continue a log message without printing the message prefix. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxlog.c::dmxLogInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxInput</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Log an informational message (at level <a class="el" href="dmxlog_8h.html#a18a1">dmxInfo</a>) related to input. The message prefix will contain information from <em>dmxInput</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxlog.c::dmxLogInputCont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogInputCont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxInput</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Continue a message related to input without printing the message prefix. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxlog.c::dmxLogOutput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogOutput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Log an informational message (at level <a class="el" href="dmxlog_8h.html#a18a1">dmxInfo</a>) related to ouput. The message prefix will contain backend information from <em>dmxScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxlog.c::dmxLogOutputCont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogOutputCont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Continue a message related to output without printing the message prefix. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxlog.c::dmxLogOutputWarning" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogOutputWarning </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Log a warning message (at level <a class="el" href="dmxlog_8h.html#a18a2">dmxWarning</a>) related to output. The message prefix will contain backend information from <em>dmxScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmxlog.c::dmxLogVisual" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogVisual </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>XVisualInfo *&nbsp;</td>
- <td class="mdname" nowrap> <em>vi</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>defaultVisual</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Print messages at level <a class="el" href="dmxlog_8h.html#a18a1">dmxInfo</a> describing the visuals in <em>vi</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxlog.c::dmxSetLogLevel" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> dmxSetLogLevel </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>newLevel</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set the default level for logging to <a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>. Returns the previous log level. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxlog.c::dmxXInputEventName" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const char* dmxXInputEventName </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>type</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Translate a (normalized) XInput event <em>type</em> into a human-readable string. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8h-source.html
deleted file mode 100644
index a345bd809..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8h-source.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxlog.h</h1><a href="dmxlog_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00039 <span class="preprocessor">#ifndef _DMXLOG_H_</span>
-00040 <span class="preprocessor"></span><span class="preprocessor">#define _DMXLOG_H_</span>
-00041 <span class="preprocessor"></span>
-<a name="l00043"></a><a class="code" href="dmxlog_8h.html#a18">00043</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00044 <a class="code" href="dmxlog_8h.html#a18a0">dmxDebug</a>,
-00045 <a class="code" href="dmxlog_8h.html#a18a1">dmxInfo</a>,
-00046 <a class="code" href="dmxlog_8h.html#a18a2">dmxWarning</a>,
-00049 <a class="code" href="dmxlog_8h.html#a18a3">dmxError</a>,
-00052 <a class="code" href="dmxlog_8h.html#a18a4">dmxFatal</a>
-00054 } <a class="code" href="dmxlog_8h.html#a18">dmxLogLevel</a>;
-00055
-00056 <span class="comment">/* Logging functions used by Xserver/hw/dmx routines. */</span>
-00057 <span class="keyword">extern</span> <a class="code" href="dmxlog_8h.html#a18">dmxLogLevel</a> <a class="code" href="dmxlog_8c.html#a1">dmxSetLogLevel</a>(dmxLogLevel newLevel);
-00058 <span class="keyword">extern</span> <a class="code" href="dmxlog_8h.html#a18">dmxLogLevel</a> <a class="code" href="dmxlog_8c.html#a2">dmxGetLogLevel</a>(<span class="keywordtype">void</span>);
-00059 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxlog_8c.html#a7">dmxLog</a>(dmxLogLevel logLevel, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);
-00060 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxlog_8c.html#a8">dmxLogCont</a>(dmxLogLevel logLevel, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);
-00061 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="dmxlog_8c.html#a17">dmxEventName</a>(<span class="keywordtype">int</span> type);
-00062
-00063 <span class="preprocessor">#ifndef DMX_LOG_STANDALONE</span>
-00064 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxlog_8c.html#a9">dmxLogOutput</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);
-00065 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxlog_8c.html#a10">dmxLogOutputCont</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, <span class="keyword">const</span> <span class="keywordtype">char</span> *format,
-00066 ...);
-00067 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxlog_8c.html#a11">dmxLogOutputWarning</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, <span class="keyword">const</span> <span class="keywordtype">char</span> *format,
-00068 ...);
-00069 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxlog_8c.html#a12">dmxLogInput</a>(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);
-00070 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxlog_8c.html#a13">dmxLogInputCont</a>(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);
-00071 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxlog_8c.html#a14">dmxLogArgs</a>(dmxLogLevel logLevel, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);
-00072 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxlog_8c.html#a15">dmxLogVisual</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, XVisualInfo *vi,
-00073 <span class="keywordtype">int</span> defaultVisual);
-00074 <span class="preprocessor">#ifdef XINPUT</span>
-00075 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="dmxlog_8c.html#a16">dmxXInputEventName</a>(<span class="keywordtype">int</span> type);
-00076 <span class="preprocessor">#endif</span>
-00077 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00078 <span class="preprocessor"></span>
-00079 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8h.html
deleted file mode 100644
index 6092d1339..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxlog_8h.html
+++ /dev/null
@@ -1,616 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxlog.h File Reference</h1>
-<p>
-<a href="dmxlog_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> { <br>
-&nbsp;&nbsp;<a class="el" href="dmxlog_8h.html#a18a0">dmxDebug</a>,
-<a class="el" href="dmxlog_8h.html#a18a1">dmxInfo</a>,
-<a class="el" href="dmxlog_8h.html#a18a2">dmxWarning</a>,
-<a class="el" href="dmxlog_8h.html#a18a3">dmxError</a>,
-<br>
-&nbsp;&nbsp;<a class="el" href="dmxlog_8h.html#a18a4">dmxFatal</a>
-<br>
- }</td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a5">dmxSetLogLevel</a> (<a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> newLevel)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a6">dmxGetLogLevel</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a7">dmxLog</a> (<a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> logLevel, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a8">dmxLogCont</a> (<a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> logLevel, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>const char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a9">dmxEventName</a> (int type)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a10">dmxLogOutput</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a11">dmxLogOutputCont</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a12">dmxLogOutputWarning</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a13">dmxLogInput</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a14">dmxLogInputCont</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput, const char *format,...)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a15">dmxLogArgs</a> (<a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> logLevel, int argc, char **argv)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a16">dmxLogVisual</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, XVisualInfo *vi, int defaultVisual)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>const char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxlog_8h.html#a17">dmxXInputEventName</a> (int type)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This header is included by all files that need to use the DMX logging facilities.<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="a18" doxytag="dmxlog.h::dmxLogLevel" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> enum <a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Logging levels -- output is tunable with <a class="el" href="dmxlog_8h.html#a5">dmxSetLogLevel</a>. <dl compact><dt><b>Enumeration values: </b></dt><dd>
-<table border=0 cellspacing=2 cellpadding=0>
-<tr><td valign=top><em><a class="anchor" name="a18a0" doxytag="dmxDebug" ></a>dmxDebug</em>&nbsp;</td><td>
-Usually verbose debugging info </td></tr>
-<tr><td valign=top><em><a class="anchor" name="a18a1" doxytag="dmxInfo" ></a>dmxInfo</em>&nbsp;</td><td>
-Non-warning information </td></tr>
-<tr><td valign=top><em><a class="anchor" name="a18a2" doxytag="dmxWarning" ></a>dmxWarning</em>&nbsp;</td><td>
-A warning that may indicate DMX will not function as the user intends. </td></tr>
-<tr><td valign=top><em><a class="anchor" name="a18a3" doxytag="dmxError" ></a>dmxError</em>&nbsp;</td><td>
-A non-fatal error that probably indicates DMX will not function as desired. </td></tr>
-<tr><td valign=top><em><a class="anchor" name="a18a4" doxytag="dmxFatal" ></a>dmxFatal</em>&nbsp;</td><td>
-A fatal error that will cause DMX to shut down. </td></tr>
-</table>
-</dl>
- </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a9" doxytag="dmxlog.h::dmxEventName" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const char* dmxEventName </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>type</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Translate an event <em>type</em> into a human-readable string. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxlog.h::dmxGetLogLevel" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> dmxGetLogLevel </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Returns the log level set by <a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxlog.h::dmxLog" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLog </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>logLevel</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Log the specified message at the specified <em>logLevel</em>. <em>format</em> can be a printf-like format expression. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmxlog.h::dmxLogArgs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogArgs </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>logLevel</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>argc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char **&nbsp;</td>
- <td class="mdname" nowrap> <em>argv</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Print <em>argc</em> messages, each describing an element in <em>argv</em>. This is maingly for debugging purposes. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxlog.h::dmxLogCont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogCont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>logLevel</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Continue a log message without printing the message prefix. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxlog.h::dmxLogInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxInput</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Log an informational message (at level <a class="el" href="dmxlog_8h.html#a18a1">dmxInfo</a>) related to input. The message prefix will contain information from <em>dmxInput</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxlog.h::dmxLogInputCont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogInputCont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxInput</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Continue a message related to input without printing the message prefix. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxlog.h::dmxLogOutput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogOutput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Log an informational message (at level <a class="el" href="dmxlog_8h.html#a18a1">dmxInfo</a>) related to ouput. The message prefix will contain backend information from <em>dmxScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxlog.h::dmxLogOutputCont" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogOutputCont </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Continue a message related to output without printing the message prefix. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxlog.h::dmxLogOutputWarning" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogOutputWarning </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Log a warning message (at level <a class="el" href="dmxlog_8h.html#a18a2">dmxWarning</a>) related to output. The message prefix will contain backend information from <em>dmxScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxlog.h::dmxLogVisual" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxLogVisual </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>XVisualInfo *&nbsp;</td>
- <td class="mdname" nowrap> <em>vi</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>defaultVisual</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Print messages at level <a class="el" href="dmxlog_8h.html#a18a1">dmxInfo</a> describing the visuals in <em>vi</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxlog.h::dmxSetLogLevel" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a> dmxSetLogLevel </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>newLevel</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set the default level for logging to <a class="el" href="dmxlog_8h.html#a18">dmxLogLevel</a>. Returns the previous log level. </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxlog.h::dmxXInputEventName" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const char* dmxXInputEventName </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>type</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Translate a (normalized) XInput event <em>type</em> into a human-readable string. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8c.html
deleted file mode 100644
index b4230ca30..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8c.html
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxmap.c File Reference</h1><code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxmap_8h-source.html">dmxmap.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxmap_8c.html#a0">dmxMapInsert</a> (<a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> dmxLocal, int remoteEvent, int serverEvent)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxmap_8c.html#a1">dmxMapClear</a> (<a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> dmxLocal)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxmap_8c.html#a2">dmxMapLookup</a> (<a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> dmxLocal, int remoteEvent)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file implements a mapping from remote XInput event types to Xdmx XInput event types.<p>
-The exglobals.h file defines global server-side variables with names Device* to be integers that hold the value of the type of the server-side XInput extension event.<p>
-The client-side X11/extensions/XInput.h file defines macros with THE EXACT SAME Device* names!<p>
-Using those macros to extract remote server event type values from the (opaque) XDevice structure is appropriate, but makes a direct mapping to the Device* integers impossible. So we use the normalized XI_Device* names for these routines.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a1" doxytag="dmxmap.c::dmxMapClear" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxMapClear </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxLocal</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Remove all mappings there were inserted with <a class="el" href="dmxmap_8h.html#a0">dmxMapInsert</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxmap.c::dmxMapInsert" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxMapInsert </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxLocal</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>remoteEvent</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>serverEvent</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a mapping from <em>remoteEvent</em> to <em>serverEvent</em>. The <em>remoteEvent</em> is the type returned from the remote server. The <em>serverEvent</em> is from the XI_* list of events in include/extensions/XIproto.h. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxmap.c::dmxMapLookup" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxMapLookup </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxLocal</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>remoteEvent</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Lookup a mapping for <em>remoteEvent</em>. The <em>remoteEvent</em> is the type returned from the remote server. The return value is that which was passed into <a class="el" href="dmxmap_8h.html#a0">dmxMapInsert</a> (i.e., a value from the XI_* list in include/extensions/XIproto.h). If a mapping is not available, -1 is returned. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8h-source.html
deleted file mode 100644
index 8a9d6b31c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8h-source.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxmap.h</h1><a href="dmxmap_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2003 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> */</span>
-00033
-00037 <span class="preprocessor">#ifndef _DMXMAP_H_</span>
-00038 <span class="preprocessor"></span><span class="preprocessor">#define _DMXMAP_H_</span>
-00039 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxmap_8c.html#a0">dmxMapInsert</a>(<a class="code" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> dmxLocal,
-00040 <span class="keywordtype">int</span> remoteEvent, <span class="keywordtype">int</span> serverEvent);
-00041 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxmap_8c.html#a1">dmxMapClear</a>(<a class="code" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> dmxLocal);
-00042 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxmap_8c.html#a2">dmxMapLookup</a>(<a class="code" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> dmxLocal, <span class="keywordtype">int</span> remoteEvent);
-00043 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8h.html
deleted file mode 100644
index db69ac6b2..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmap_8h.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxmap.h File Reference</h1>
-<p>
-<a href="dmxmap_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxmap_8h.html#a0">dmxMapInsert</a> (<a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> dmxLocal, int remoteEvent, int serverEvent)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxmap_8h.html#a1">dmxMapClear</a> (<a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> dmxLocal)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxmap_8h.html#a2">dmxMapLookup</a> (<a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> dmxLocal, int remoteEvent)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to XInput event mapping support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxmap_8c.html">dmxmap.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a1" doxytag="dmxmap.h::dmxMapClear" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxMapClear </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxLocal</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Remove all mappings there were inserted with <a class="el" href="dmxmap_8h.html#a0">dmxMapInsert</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxmap.h::dmxMapInsert" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxMapInsert </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxLocal</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>remoteEvent</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>serverEvent</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a mapping from <em>remoteEvent</em> to <em>serverEvent</em>. The <em>remoteEvent</em> is the type returned from the remote server. The <em>serverEvent</em> is from the XI_* list of events in include/extensions/XIproto.h. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxmap.h::dmxMapLookup" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxMapLookup </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxLocal</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>remoteEvent</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Lookup a mapping for <em>remoteEvent</em>. The <em>remoteEvent</em> is the type returned from the remote server. The return value is that which was passed into <a class="el" href="dmxmap_8h.html#a0">dmxMapInsert</a> (i.e., a value from the XI_* list in include/extensions/XIproto.h). If a mapping is not available, -1 is returned. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8c.html
deleted file mode 100644
index ecf9922a6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8c.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxmotion.c File Reference</h1><code>#include "inputstr.h"</code><br>
-<code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcommon_8h-source.html">dmxcommon.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxmotion_8h-source.html">dmxmotion.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxmotion_8c.html#a1">dmxPointerGetMotionBufferSize</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxmotion_8c.html#a2">dmxPointerGetMotionEvents</a> (DeviceIntPtr pDevice, xTimecoord *coords, unsigned long start, unsigned long stop, ScreenPtr pScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxmotion_8c.html#a3">dmxPointerPutMotionEvent</a> (DeviceIntPtr pDevice, int firstAxis, int axesCount, int *v, unsigned long time)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides functions similar to miPointerGetMotionEvents and miPointerPutMotionEvents, with the exception that devices with more than two axes are fully supported. These routines may be used only for motion buffers for extension devices, and are <em>not</em> compatible replacements for the mi routines.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a1" doxytag="dmxmotion.c::dmxPointerGetMotionBufferSize" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxPointerGetMotionBufferSize </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return size of motion buffer. <dl compact><dt><b>See also:</b></dt><dd>DMX_MOTION_SIZE </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxmotion.c::dmxPointerGetMotionEvents" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxPointerGetMotionEvents </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDevice</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xTimecoord *&nbsp;</td>
- <td class="mdname" nowrap> <em>coords</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>stop</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine performs the same function as <em>miPointerGetMotionEvents</em>: the events in the motion history that are between the start and stop times (in mS) are placed in the coords vector, and the count of the number of items so placed is returned. This routine is called from dix/devices.c so that coords can hold valuator-&gt;numMotionEvents events. This routine is called from <em>Xi/gtmotion</em>.c with coords large enough to hold the same number of events in a variable-length extended <em>xTimecoord</em> structure. This provides sufficient data for the <em>XGetDeviceMotionEvents</em> library call, and would be identical to <em>miPointerGetMotionEvents</em> for devices with only 2 axes (i.e., core pointers) if <em>xTimecoord</em> used 32bit integers.<p>
-Because DMX uses the mi* routines for all core devices, this routine only has to support extension devices using the polymorphic coords. Because compatibility with miPointerGetMotionEvents is not possible, it is not provided. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxmotion.c::dmxPointerPutMotionEvent" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPointerPutMotionEvent </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDevice</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>firstAxis</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>axesCount</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>v</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>time</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine adds an event to the motion history. A similar function is performed by miPointerMove for the mi versions of these routines. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8h-source.html
deleted file mode 100644
index 1057b7ebb..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8h-source.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxmotion.h</h1><a href="dmxmotion_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXMOTION_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXMOTION_H_</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxmotion_8c.html#a1">dmxPointerGetMotionBufferSize</a>(<span class="keywordtype">void</span>);
-00042 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxmotion_8c.html#a2">dmxPointerGetMotionEvents</a>(DeviceIntPtr pDevice,
-00043 xTimecoord *coords,
-00044 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> start,
-00045 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> stop,
-00046 ScreenPtr pScreen);
-00047 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxmotion_8c.html#a3">dmxPointerPutMotionEvent</a>(DeviceIntPtr pDevice,
-00048 <span class="keywordtype">int</span> firstAxis, <span class="keywordtype">int</span> axesCount, <span class="keywordtype">int</span> *v,
-00049 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> time);
-00050 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8h.html
deleted file mode 100644
index f3f4bedc4..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxmotion_8h.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxmotion.h File Reference</h1>
-<p>
-<a href="dmxmotion_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxmotion_8h.html#a0">dmxPointerGetMotionBufferSize</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxmotion_8h.html#a1">dmxPointerGetMotionEvents</a> (DeviceIntPtr pDevice, xTimecoord *coords, unsigned long start, unsigned long stop, ScreenPtr pScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxmotion_8h.html#a2">dmxPointerPutMotionEvent</a> (DeviceIntPtr pDevice, int firstAxis, int axesCount, int *v, unsigned long time)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to functions supporting motion events. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxmotion_8c.html">dmxmotion.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxmotion.h::dmxPointerGetMotionBufferSize" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxPointerGetMotionBufferSize </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return size of motion buffer. <dl compact><dt><b>See also:</b></dt><dd>DMX_MOTION_SIZE </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxmotion.h::dmxPointerGetMotionEvents" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxPointerGetMotionEvents </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDevice</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xTimecoord *&nbsp;</td>
- <td class="mdname" nowrap> <em>coords</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>stop</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine performs the same function as <em>miPointerGetMotionEvents</em>: the events in the motion history that are between the start and stop times (in mS) are placed in the coords vector, and the count of the number of items so placed is returned. This routine is called from dix/devices.c so that coords can hold valuator-&gt;numMotionEvents events. This routine is called from <em>Xi/gtmotion</em>.c with coords large enough to hold the same number of events in a variable-length extended <em>xTimecoord</em> structure. This provides sufficient data for the <em>XGetDeviceMotionEvents</em> library call, and would be identical to <em>miPointerGetMotionEvents</em> for devices with only 2 axes (i.e., core pointers) if <em>xTimecoord</em> used 32bit integers.<p>
-Because DMX uses the mi* routines for all core devices, this routine only has to support extension devices using the polymorphic coords. Because compatibility with miPointerGetMotionEvents is not possible, it is not provided. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxmotion.h::dmxPointerPutMotionEvent" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPointerPutMotionEvent </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDevice</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>firstAxis</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>axesCount</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>v</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>time</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine adds an event to the motion history. A similar function is performed by miPointerMove for the mi versions of these routines. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8c.html
deleted file mode 100644
index c984dd9f5..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8c.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxparse.c File Reference</h1><code>#include &lt;stdio.h&gt;</code><br>
-<code>#include &lt;stdlib.h&gt;</code><br>
-<code>#include &lt;string.h&gt;</code><br>
-<code>#include &lt;stdarg.h&gt;</code><br>
-<code>#include "<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8c.html#a0">dmxConfigLog</a> (const char *format,...)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides support routines and helper functions to be used by the DMX configuration file parser.<p>
-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.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxparse.c::dmxConfigLog" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigLog </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-A general error logging routine that does not depend on the dmxLog functions. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8h-source.html
deleted file mode 100644
index c88da9089..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8h-source.html
+++ /dev/null
@@ -1,303 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxparse.h</h1><a href="dmxparse_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXPARSE_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXPARSE_H_</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="preprocessor">#include &lt;stdio.h&gt;</span> <span class="comment">/* For FILE */</span>
-00042
-<a name="l00044"></a><a class="code" href="struct__DMXConfigToken.html">00044</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigToken.html">_DMXConfigToken</a> {
-00045 <span class="keywordtype">int</span> token;
-00046 <span class="keywordtype">int</span> line;
-00047 <span class="keyword">const</span> <span class="keywordtype">char</span> *comment;
-00048 } <a class="code" href="struct__DMXConfigToken.html">DMXConfigToken</a>, *<a class="code" href="struct__DMXConfigToken.html">DMXConfigTokenPtr</a>;
-00049
-<a name="l00051"></a><a class="code" href="struct__DMXConfigString.html">00051</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigString.html">_DMXConfigString</a> {
-00052 <span class="keywordtype">int</span> token;
-00053 <span class="keywordtype">int</span> line;
-00054 <span class="keyword">const</span> <span class="keywordtype">char</span> *comment;
-00055 <span class="keyword">const</span> <span class="keywordtype">char</span> *string;
-00056 <span class="keyword">struct </span><a class="code" href="struct__DMXConfigString.html">_DMXConfigString</a> *next;
-00057 } <a class="code" href="struct__DMXConfigString.html">DMXConfigString</a>, *<a class="code" href="struct__DMXConfigString.html">DMXConfigStringPtr</a>;
-00058
-<a name="l00060"></a><a class="code" href="struct__DMXConfigNumber.html">00060</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigNumber.html">_DMXConfigNumber</a> {
-00061 <span class="keywordtype">int</span> token;
-00062 <span class="keywordtype">int</span> line;
-00063 <span class="keyword">const</span> <span class="keywordtype">char</span> *comment;
-00064 <span class="keywordtype">int</span> number;
-00065 } <a class="code" href="struct__DMXConfigNumber.html">DMXConfigNumber</a>, *<a class="code" href="struct__DMXConfigNumber.html">DMXConfigNumberPtr</a>;
-00066
-<a name="l00068"></a><a class="code" href="struct__DMXConfigPair.html">00068</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigPair.html">_DMXConfigPair</a> {
-00069 <span class="keywordtype">int</span> token;
-00070 <span class="keywordtype">int</span> line;
-00071 <span class="keyword">const</span> <span class="keywordtype">char</span> *comment;
-00072 <span class="keywordtype">int</span> x;
-00073 <span class="keywordtype">int</span> y;
-00074 <span class="keywordtype">int</span> xsign;
-00075 <span class="keywordtype">int</span> ysign;
-00076 } <a class="code" href="struct__DMXConfigPair.html">DMXConfigPair</a>, *<a class="code" href="struct__DMXConfigPair.html">DMXConfigPairPtr</a>;
-00077
-<a name="l00079"></a><a class="code" href="struct__DMXConfigComment.html">00079</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigComment.html">_DMXConfigComment</a> {
-00080 <span class="keywordtype">int</span> token;
-00081 <span class="keywordtype">int</span> line;
-00082 <span class="keyword">const</span> <span class="keywordtype">char</span> *comment;
-00083 } <a class="code" href="struct__DMXConfigComment.html">DMXConfigComment</a>, *<a class="code" href="struct__DMXConfigComment.html">DMXConfigCommentPtr</a>;
-00084
-00085 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00086 dmxConfigComment,
-00087 dmxConfigVirtual,
-00088 dmxConfigDisplay,
-00089 dmxConfigWall,
-00090 dmxConfigOption,
-00091 dmxConfigParam
-00092 } DMXConfigType;
-00093
-<a name="l00095"></a><a class="code" href="struct__DMXConfigPartDim.html">00095</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigPartDim.html">_DMXConfigPartDim</a> {
-00096 <a class="code" href="dmxparse_8h.html#a7">DMXConfigPairPtr</a> dim;
-00097 <a class="code" href="dmxparse_8h.html#a7">DMXConfigPairPtr</a> offset;
-00098 } <a class="code" href="struct__DMXConfigPartDim.html">DMXConfigPartDim</a>, *<a class="code" href="struct__DMXConfigPartDim.html">DMXConfigPartDimPtr</a>;
-00099
-<a name="l00101"></a><a class="code" href="struct__DMXConfigFullDim.html">00101</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigFullDim.html">_DMXConfigFullDim</a> {
-00102 <a class="code" href="dmxparse_8h.html#a11">DMXConfigPartDimPtr</a> scrn;
-00103 <a class="code" href="dmxparse_8h.html#a11">DMXConfigPartDimPtr</a> root;
-00104 } <a class="code" href="struct__DMXConfigFullDim.html">DMXConfigFullDim</a>, *<a class="code" href="struct__DMXConfigFullDim.html">DMXConfigFullDimPtr</a>;
-00105
-<a name="l00107"></a><a class="code" href="struct__DMXConfigDisplay.html">00107</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigDisplay.html">_DMXConfigDisplay</a> {
-00108 <span class="comment">/* Summary information */</span>
-00109 <span class="keyword">const</span> <span class="keywordtype">char</span> *name;
-00110 <span class="comment">/* Screen Window Geometry */</span>
-00111 <span class="keywordtype">int</span> scrnWidth, scrnHeight;
-00112 <span class="keywordtype">int</span> scrnX, scrnY;
-00113 <span class="keywordtype">int</span> scrnXSign, scrnYSign;
-00114 <span class="comment">/* Root Window Geometry */</span>
-00115 <span class="keywordtype">int</span> rootWidth, rootHeight;
-00116 <span class="keywordtype">int</span> rootX, rootY;
-00117 <span class="keywordtype">int</span> rootXSign, rootYSign;
-00118 <span class="comment">/* Origin in global space */</span>
-00119 <span class="keywordtype">int</span> rootXOrigin, rootYOrigin;
-00120
-00121 <span class="comment">/* Raw configuration information */</span>
-00122 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> start;
-00123 <a class="code" href="dmxparse_8h.html#a3">DMXConfigStringPtr</a> dname;
-00124 <a class="code" href="dmxparse_8h.html#a13">DMXConfigFullDimPtr</a> dim;
-00125 <a class="code" href="dmxparse_8h.html#a7">DMXConfigPairPtr</a> origin;
-00126 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> end;
-00127 } <a class="code" href="struct__DMXConfigDisplay.html">DMXConfigDisplay</a>, *<a class="code" href="struct__DMXConfigDisplay.html">DMXConfigDisplayPtr</a>;
-00128
-<a name="l00130"></a><a class="code" href="struct__DMXConfigWall.html">00130</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigWall.html">_DMXConfigWall</a> {
-00131 <span class="comment">/* Summary information */</span>
-00132 <span class="keywordtype">int</span> width, height; <span class="comment">/* dimensions of displays */</span>
-00133 <span class="keywordtype">int</span> xwall, ywall; <span class="comment">/* dimensions of wall, in tiles */</span>
-00134
-00135
-00136 <span class="comment">/* Raw configuration informaiton */</span>
-00137 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> start;
-00138 <a class="code" href="dmxparse_8h.html#a7">DMXConfigPairPtr</a> wallDim;
-00139 <a class="code" href="dmxparse_8h.html#a7">DMXConfigPairPtr</a> displayDim;
-00140 <a class="code" href="dmxparse_8h.html#a3">DMXConfigStringPtr</a> nameList;
-00141 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> end;
-00142 } <a class="code" href="struct__DMXConfigWall.html">DMXConfigWall</a>, *<a class="code" href="struct__DMXConfigWall.html">DMXConfigWallPtr</a>;
-00143
-<a name="l00145"></a><a class="code" href="struct__DMXConfigOption.html">00145</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigOption.html">_DMXConfigOption</a> {
-00146 <span class="comment">/* Summary information */</span>
-00147 <span class="keywordtype">char</span> *string;
-00148
-00149 <span class="comment">/* Raw configuration informaiton */</span>
-00150 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> start;
-00151 <a class="code" href="dmxparse_8h.html#a3">DMXConfigStringPtr</a> option;
-00152 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> end;
-00153 } <a class="code" href="struct__DMXConfigOption.html">DMXConfigOption</a>, *<a class="code" href="struct__DMXConfigOption.html">DMXConfigOptionPtr</a>;
-00154
-<a name="l00156"></a><a class="code" href="struct__DMXConfigParam.html">00156</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigParam.html">_DMXConfigParam</a> {
-00157 <span class="keywordtype">int</span> argc;
-00158 <span class="keyword">const</span> <span class="keywordtype">char</span> **argv;
-00159
-00160 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> start;
-00161 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> open;
-00162 <a class="code" href="dmxparse_8h.html#a3">DMXConfigStringPtr</a> param;
-00163 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> close;
-00164 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> end; <span class="comment">/* Either open/close OR end */</span>
-00165 <span class="keyword">struct </span><a class="code" href="struct__DMXConfigParam.html">_DMXConfigParam</a> *next;
-00166 } <a class="code" href="struct__DMXConfigParam.html">DMXConfigParam</a>, *<a class="code" href="struct__DMXConfigParam.html">DMXConfigParamPtr</a>;
-00167
-<a name="l00169"></a><a class="code" href="struct__DMXConfigSub.html">00169</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigSub.html">_DMXConfigSub</a> {
-00170 DMXConfigType type;
-00171 <a class="code" href="dmxparse_8h.html#a9">DMXConfigCommentPtr</a> comment;
-00172 <a class="code" href="dmxparse_8h.html#a15">DMXConfigDisplayPtr</a> display;
-00173 <a class="code" href="dmxparse_8h.html#a17">DMXConfigWallPtr</a> wall;
-00174 <a class="code" href="dmxparse_8h.html#a19">DMXConfigOptionPtr</a> option;
-00175 <a class="code" href="dmxparse_8h.html#a21">DMXConfigParamPtr</a> param;
-00176 <span class="keyword">struct </span><a class="code" href="struct__DMXConfigSub.html">_DMXConfigSub</a> *next;
-00177 } <a class="code" href="struct__DMXConfigSub.html">DMXConfigSub</a>, *<a class="code" href="struct__DMXConfigSub.html">DMXConfigSubPtr</a>;
-00178
-<a name="l00180"></a><a class="code" href="struct__DMXConfigVirtual.html">00180</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigVirtual.html">_DMXConfigVirtual</a> {
-00181 <span class="comment">/* Summary information */</span>
-00182 <span class="keyword">const</span> <span class="keywordtype">char</span> *name;
-00183 <span class="keywordtype">int</span> width, height;
-00184
-00185 <span class="comment">/* Raw configuration information */</span>
-00186 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> start;
-00187 <a class="code" href="dmxparse_8h.html#a3">DMXConfigStringPtr</a> vname;
-00188 <a class="code" href="dmxparse_8h.html#a7">DMXConfigPairPtr</a> dim;
-00189 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> open;
-00190 <a class="code" href="dmxparse_8h.html#a23">DMXConfigSubPtr</a> subentry;
-00191 <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> close;
-00192 } <a class="code" href="struct__DMXConfigVirtual.html">DMXConfigVirtual</a>, *<a class="code" href="struct__DMXConfigVirtual.html">DMXConfigVirtualPtr</a>;
-00193
-<a name="l00195"></a><a class="code" href="struct__DMXConfigEntry.html">00195</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DMXConfigEntry.html">_DMXConfigEntry</a> {
-00196 DMXConfigType type;
-00197 <a class="code" href="dmxparse_8h.html#a9">DMXConfigCommentPtr</a> comment;
-00198 <a class="code" href="dmxparse_8h.html#a25">DMXConfigVirtualPtr</a> <span class="keyword">virtual</span>;
-00199 <span class="keyword">struct </span><a class="code" href="struct__DMXConfigEntry.html">_DMXConfigEntry</a> *next;
-00200 } <a class="code" href="struct__DMXConfigEntry.html">DMXConfigEntry</a>, *<a class="code" href="struct__DMXConfigEntry.html">DMXConfigEntryPtr</a>;
-00201
-00202 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a27">DMXConfigEntryPtr</a> dmxConfigEntry;
-00203
-00204 <span class="keyword">extern</span> <span class="keywordtype">int</span> yylex(<span class="keywordtype">void</span>);
-00205 <span class="keyword">extern</span> <span class="keywordtype">int</span> yydebug;
-00206 <span class="keyword">extern</span> <span class="keywordtype">void</span> yyerror(<span class="keyword">const</span> <span class="keywordtype">char</span> *message);
-00207
-00208 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxparse_8c.html#a0">dmxConfigLog</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);
-00209 <span class="keyword">extern</span> <span class="keywordtype">void</span> *dmxConfigAlloc(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> bytes);
-00210 <span class="keyword">extern</span> <span class="keywordtype">void</span> *dmxConfigRealloc(<span class="keywordtype">void</span> *orig,
-00211 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> orig_bytes,
-00212 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> bytes);
-00213 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *dmxConfigCopyString(<span class="keyword">const</span> <span class="keywordtype">char</span> *string,
-00214 <span class="keywordtype">int</span> length);
-00215 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFree(<span class="keywordtype">void</span> *area);
-00216 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a> dmxConfigCreateToken(<span class="keywordtype">int</span> token, <span class="keywordtype">int</span> line,
-00217 <span class="keyword">const</span> <span class="keywordtype">char</span> *comment);
-00218 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreeToken(DMXConfigTokenPtr p);
-00219 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a3">DMXConfigStringPtr</a> dmxConfigCreateString(<span class="keywordtype">int</span> token, <span class="keywordtype">int</span> line,
-00220 <span class="keyword">const</span> <span class="keywordtype">char</span> *comment,
-00221 <span class="keyword">const</span> <span class="keywordtype">char</span> *string);
-00222 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreeString(DMXConfigStringPtr p);
-00223 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a5">DMXConfigNumberPtr</a> dmxConfigCreateNumber(<span class="keywordtype">int</span> token, <span class="keywordtype">int</span> line,
-00224 <span class="keyword">const</span> <span class="keywordtype">char</span> *comment,
-00225 <span class="keywordtype">int</span> number);
-00226 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreeNumber(DMXConfigNumberPtr p);
-00227 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a7">DMXConfigPairPtr</a> dmxConfigCreatePair(<span class="keywordtype">int</span> token, <span class="keywordtype">int</span> line,
-00228 <span class="keyword">const</span> <span class="keywordtype">char</span> *comment,
-00229 <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y,
-00230 <span class="keywordtype">int</span> xsign, <span class="keywordtype">int</span> ysign);
-00231 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreePair(DMXConfigPairPtr p);
-00232 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a9">DMXConfigCommentPtr</a> dmxConfigCreateComment(<span class="keywordtype">int</span> token, <span class="keywordtype">int</span> line,
-00233 <span class="keyword">const</span> <span class="keywordtype">char</span> *comment);
-00234 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreeComment(DMXConfigCommentPtr p);
-00235 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a11">DMXConfigPartDimPtr</a> dmxConfigCreatePartDim(DMXConfigPairPtr pDim,
-00236 DMXConfigPairPtr pOffset);
-00237 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreePartDim(DMXConfigPartDimPtr p);
-00238 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a13">DMXConfigFullDimPtr</a> dmxConfigCreateFullDim(DMXConfigPartDimPtr pScrn,
-00239 DMXConfigPartDimPtr pRoot);
-00240 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreeFullDim(DMXConfigFullDimPtr p);
-00241 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a15">DMXConfigDisplayPtr</a> dmxConfigCreateDisplay(DMXConfigTokenPtr pStart,
-00242 DMXConfigStringPtr pName,
-00243 DMXConfigFullDimPtr pDim,
-00244 DMXConfigPairPtr pOrigin,
-00245 DMXConfigTokenPtr pEnd);
-00246 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreeDisplay(DMXConfigDisplayPtr p);
-00247 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a17">DMXConfigWallPtr</a> dmxConfigCreateWall(DMXConfigTokenPtr pStart,
-00248 DMXConfigPairPtr pWallDim,
-00249 DMXConfigPairPtr pDisplayDim,
-00250 DMXConfigStringPtr pNameList,
-00251 DMXConfigTokenPtr pEnd);
-00252 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreeWall(DMXConfigWallPtr p);
-00253 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a19">DMXConfigOptionPtr</a> dmxConfigCreateOption(DMXConfigTokenPtr pStart,
-00254 DMXConfigStringPtr pOption,
-00255 DMXConfigTokenPtr pEnd);
-00256 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreeOption(DMXConfigOptionPtr p);
-00257 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a21">DMXConfigParamPtr</a> dmxConfigCreateParam(DMXConfigTokenPtr pStart,
-00258 DMXConfigTokenPtr pOpen,
-00259 DMXConfigStringPtr pParam,
-00260 DMXConfigTokenPtr pClose,
-00261 DMXConfigTokenPtr pEnd);
-00262 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreeParam(DMXConfigParamPtr p);
-00263 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> **dmxConfigLookupParam(DMXConfigParamPtr p,
-00264 <span class="keyword">const</span> <span class="keywordtype">char</span> *key,
-00265 <span class="keywordtype">int</span> *argc);
-00266 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a23">DMXConfigSubPtr</a> dmxConfigCreateSub(DMXConfigType type,
-00267 DMXConfigCommentPtr comment,
-00268 DMXConfigDisplayPtr display,
-00269 DMXConfigWallPtr wall,
-00270 DMXConfigOptionPtr option,
-00271 DMXConfigParamPtr param);
-00272 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreeSub(DMXConfigSubPtr sub);
-00273 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a23">DMXConfigSubPtr</a> dmxConfigSubComment(DMXConfigCommentPtr comment);
-00274 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a23">DMXConfigSubPtr</a> dmxConfigSubDisplay(DMXConfigDisplayPtr display);
-00275 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a23">DMXConfigSubPtr</a> dmxConfigSubWall(DMXConfigWallPtr wall);
-00276 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a23">DMXConfigSubPtr</a> dmxConfigSubOption(DMXConfigOptionPtr option);
-00277 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a23">DMXConfigSubPtr</a> dmxConfigSubParam(DMXConfigParamPtr param);
-00278 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a23">DMXConfigSubPtr</a> dmxConfigAddSub(DMXConfigSubPtr head,
-00279 DMXConfigSubPtr sub);
-00280 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a25">DMXConfigVirtualPtr</a> dmxConfigCreateVirtual(DMXConfigTokenPtr pStart,
-00281 DMXConfigStringPtr pName,
-00282 DMXConfigPairPtr pDim,
-00283 DMXConfigTokenPtr pOpen,
-00284 DMXConfigSubPtr pSubentry,
-00285 DMXConfigTokenPtr pClose);
-00286 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreeVirtual(DMXConfigVirtualPtr <span class="keyword">virtual</span>);
-00287 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a27">DMXConfigEntryPtr</a> dmxConfigCreateEntry(DMXConfigType type,
-00288 DMXConfigCommentPtr comment,
-00289 DMXConfigVirtualPtr <span class="keyword">virtual</span>);
-00290 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxConfigFreeEntry(DMXConfigEntryPtr entry);
-00291 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a27">DMXConfigEntryPtr</a> dmxConfigAddEntry(DMXConfigEntryPtr head,
-00292 DMXConfigType type,
-00293 DMXConfigCommentPtr comment,
-00294 DMXConfigVirtualPtr <span class="keyword">virtual</span>);
-00295 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a27">DMXConfigEntryPtr</a> dmxConfigEntryComment(DMXConfigCommentPtr comment);
-00296 <span class="keyword">extern</span> <a class="code" href="dmxparse_8h.html#a27">DMXConfigEntryPtr</a> dmxConfigEntryVirtual(DMXConfigVirtualPtr <span class="keyword">virtual</span>);
-00297
-00298 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8h.html
deleted file mode 100644
index 410075337..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxparse_8h.html
+++ /dev/null
@@ -1,775 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxparse.h File Reference</h1><code>#include &lt;stdio.h&gt;</code><br>
-
-<p>
-<a href="dmxparse_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigComment.html">_DMXConfigComment</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigDisplay.html">_DMXConfigDisplay</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigEntry.html">_DMXConfigEntry</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigFullDim.html">_DMXConfigFullDim</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigNumber.html">_DMXConfigNumber</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigOption.html">_DMXConfigOption</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigPair.html">_DMXConfigPair</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigParam.html">_DMXConfigParam</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigPartDim.html">_DMXConfigPartDim</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigString.html">_DMXConfigString</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigSub.html">_DMXConfigSub</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigToken.html">_DMXConfigToken</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigVirtual.html">_DMXConfigVirtual</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXConfigWall.html">_DMXConfigWall</a></td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigToken.html">_DMXConfigToken</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a0">DMXConfigToken</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigToken.html">_DMXConfigToken</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a1">DMXConfigTokenPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigString.html">_DMXConfigString</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a2">DMXConfigString</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigString.html">_DMXConfigString</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a3">DMXConfigStringPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigNumber.html">_DMXConfigNumber</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a4">DMXConfigNumber</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigNumber.html">_DMXConfigNumber</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a5">DMXConfigNumberPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigPair.html">_DMXConfigPair</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a6">DMXConfigPair</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigPair.html">_DMXConfigPair</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a7">DMXConfigPairPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigComment.html">_DMXConfigComment</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a8">DMXConfigComment</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigComment.html">_DMXConfigComment</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a9">DMXConfigCommentPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigPartDim.html">_DMXConfigPartDim</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a10">DMXConfigPartDim</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigPartDim.html">_DMXConfigPartDim</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a11">DMXConfigPartDimPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigFullDim.html">_DMXConfigFullDim</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a12">DMXConfigFullDim</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigFullDim.html">_DMXConfigFullDim</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a13">DMXConfigFullDimPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigDisplay.html">_DMXConfigDisplay</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a14">DMXConfigDisplay</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigDisplay.html">_DMXConfigDisplay</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a15">DMXConfigDisplayPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigWall.html">_DMXConfigWall</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a16">DMXConfigWall</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigWall.html">_DMXConfigWall</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a17">DMXConfigWallPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigOption.html">_DMXConfigOption</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a18">DMXConfigOption</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigOption.html">_DMXConfigOption</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a19">DMXConfigOptionPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigParam.html">_DMXConfigParam</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a20">DMXConfigParam</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigParam.html">_DMXConfigParam</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a21">DMXConfigParamPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigSub.html">_DMXConfigSub</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a22">DMXConfigSub</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigSub.html">_DMXConfigSub</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a23">DMXConfigSubPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigVirtual.html">_DMXConfigVirtual</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a24">DMXConfigVirtual</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigVirtual.html">_DMXConfigVirtual</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a25">DMXConfigVirtualPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigEntry.html">_DMXConfigEntry</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a26">DMXConfigEntry</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXConfigEntry.html">_DMXConfigEntry</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a27">DMXConfigEntryPtr</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxparse_8h.html#a38">dmxConfigLog</a> (const char *format,...)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to DMX configuration file parser. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxparse_8c.html">dmxparse.c</a></dd></dl>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a8" doxytag="dmxparse.h::DMXConfigComment" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigComment.html">_DMXConfigComment</a> <a class="el" href="struct__DMXConfigComment.html">DMXConfigComment</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed comments not stored with a token. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxparse.h::DMXConfigCommentPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigComment.html">_DMXConfigComment</a> * <a class="el" href="struct__DMXConfigComment.html">DMXConfigCommentPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed comments not stored with a token. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxparse.h::DMXConfigDisplay" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigDisplay.html">_DMXConfigDisplay</a> <a class="el" href="struct__DMXConfigDisplay.html">DMXConfigDisplay</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed display information. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmxparse.h::DMXConfigDisplayPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigDisplay.html">_DMXConfigDisplay</a> * <a class="el" href="struct__DMXConfigDisplay.html">DMXConfigDisplayPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed display information. </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="dmxparse.h::DMXConfigEntry" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigEntry.html">_DMXConfigEntry</a> <a class="el" href="struct__DMXConfigEntry.html">DMXConfigEntry</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Heads entry storage. </td>
- </tr>
-</table>
-<a class="anchor" name="a27" doxytag="dmxparse.h::DMXConfigEntryPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigEntry.html">_DMXConfigEntry</a> * <a class="el" href="struct__DMXConfigEntry.html">DMXConfigEntryPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Heads entry storage. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxparse.h::DMXConfigFullDim" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigFullDim.html">_DMXConfigFullDim</a> <a class="el" href="struct__DMXConfigFullDim.html">DMXConfigFullDim</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores a pair of geometry specifications. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxparse.h::DMXConfigFullDimPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigFullDim.html">_DMXConfigFullDim</a> * <a class="el" href="struct__DMXConfigFullDim.html">DMXConfigFullDimPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores a pair of geometry specifications. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxparse.h::DMXConfigNumber" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigNumber.html">_DMXConfigNumber</a> <a class="el" href="struct__DMXConfigNumber.html">DMXConfigNumber</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed numbers. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxparse.h::DMXConfigNumberPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigNumber.html">_DMXConfigNumber</a> * <a class="el" href="struct__DMXConfigNumber.html">DMXConfigNumberPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed numbers. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxparse.h::DMXConfigOption" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigOption.html">_DMXConfigOption</a> <a class="el" href="struct__DMXConfigOption.html">DMXConfigOption</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed option information. </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="dmxparse.h::DMXConfigOptionPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigOption.html">_DMXConfigOption</a> * <a class="el" href="struct__DMXConfigOption.html">DMXConfigOptionPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed option information. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxparse.h::DMXConfigPair" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigPair.html">_DMXConfigPair</a> <a class="el" href="struct__DMXConfigPair.html">DMXConfigPair</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed pairs (e.g., x y) </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxparse.h::DMXConfigPairPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigPair.html">_DMXConfigPair</a> * <a class="el" href="struct__DMXConfigPair.html">DMXConfigPairPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed pairs (e.g., x y) </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="dmxparse.h::DMXConfigParam" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigParam.html">_DMXConfigParam</a> <a class="el" href="struct__DMXConfigParam.html">DMXConfigParam</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed param information. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="dmxparse.h::DMXConfigParamPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigParam.html">_DMXConfigParam</a> * <a class="el" href="struct__DMXConfigParam.html">DMXConfigParamPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed param information. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxparse.h::DMXConfigPartDim" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigPartDim.html">_DMXConfigPartDim</a> <a class="el" href="struct__DMXConfigPartDim.html">DMXConfigPartDim</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores a geometry specification. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxparse.h::DMXConfigPartDimPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigPartDim.html">_DMXConfigPartDim</a> * <a class="el" href="struct__DMXConfigPartDim.html">DMXConfigPartDimPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores a geometry specification. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxparse.h::DMXConfigString" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigString.html">_DMXConfigString</a> <a class="el" href="struct__DMXConfigString.html">DMXConfigString</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed strings. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxparse.h::DMXConfigStringPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigString.html">_DMXConfigString</a> * <a class="el" href="struct__DMXConfigString.html">DMXConfigStringPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed strings. </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="dmxparse.h::DMXConfigSub" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigSub.html">_DMXConfigSub</a> <a class="el" href="struct__DMXConfigSub.html">DMXConfigSub</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores options under an entry (subentry). </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxparse.h::DMXConfigSubPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigSub.html">_DMXConfigSub</a> * <a class="el" href="struct__DMXConfigSub.html">DMXConfigSubPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores options under an entry (subentry). </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxparse.h::DMXConfigToken" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigToken.html">_DMXConfigToken</a> <a class="el" href="struct__DMXConfigToken.html">DMXConfigToken</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores tokens not stored in other structures (e.g., keywords and ;) </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxparse.h::DMXConfigTokenPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigToken.html">_DMXConfigToken</a> * <a class="el" href="struct__DMXConfigToken.html">DMXConfigTokenPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores tokens not stored in other structures (e.g., keywords and ;) </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="dmxparse.h::DMXConfigVirtual" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigVirtual.html">_DMXConfigVirtual</a> <a class="el" href="struct__DMXConfigVirtual.html">DMXConfigVirtual</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed virtual information. </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="dmxparse.h::DMXConfigVirtualPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigVirtual.html">_DMXConfigVirtual</a> * <a class="el" href="struct__DMXConfigVirtual.html">DMXConfigVirtualPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed virtual information. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxparse.h::DMXConfigWall" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigWall.html">_DMXConfigWall</a> <a class="el" href="struct__DMXConfigWall.html">DMXConfigWall</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed wall information. </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxparse.h::DMXConfigWallPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXConfigWall.html">_DMXConfigWall</a> * <a class="el" href="struct__DMXConfigWall.html">DMXConfigWallPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Stores parsed wall information. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a38" doxytag="dmxparse.h::dmxConfigLog" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigLog </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>format</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>...&nbsp;</td>
- <td class="mdname" nowrap></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-A general error logging routine that does not depend on the dmxLog functions. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8c.html
deleted file mode 100644
index 96fd4fe5f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8c.html
+++ /dev/null
@@ -1,1184 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxpict.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxpict_8h-source.html">dmxpict.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxwindow_8h-source.html">dmxwindow.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxpixmap_8h-source.html">dmxpixmap.h</a>"</code><br>
-<code>#include "fb.h"</code><br>
-<code>#include "pixmapstr.h"</code><br>
-<code>#include "dixstruct.h"</code><br>
-<code>#include "render.h"</code><br>
-<code>#include "renderproto.h"</code><br>
-<code>#include "picture.h"</code><br>
-<code>#include "picturestr.h"</code><br>
-<code>#include "mipict.h"</code><br>
-<code>#include "fbpict.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a12">dmxInitRender</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a13">dmxResetRender</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a14">dmxPictureInit</a> (ScreenPtr pScreen, PictFormatPtr formats, int nformats)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a16">dmxBEFreeGlyphSet</a> (ScreenPtr pScreen, GlyphSetPtr glyphSet)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a18">dmxCreatePictureList</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a19">dmxCreatePicture</a> (PicturePtr pPicture)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a20">dmxBEFreePicture</a> (PicturePtr pPicture)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a21">dmxDestroyPictureList</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a22">dmxDestroyPicture</a> (PicturePtr pPicture)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a23">dmxChangePictureClip</a> (PicturePtr pPicture, int clipType, pointer value, int n)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a24">dmxDestroyPictureClip</a> (PicturePtr pPicture)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a25">dmxChangePicture</a> (PicturePtr pPicture, Mask mask)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a26">dmxValidatePicture</a> (PicturePtr pPicture, Mask mask)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a27">dmxComposite</a> (CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a28">dmxGlyphs</a> (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlists, GlyphListPtr lists, GlyphPtr *glyphs)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a29">dmxCompositeRects</a> (CARD8 op, PicturePtr pDst, xRenderColor *color, int nRect, xRectangle *rects)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a30">dmxInitIndexed</a> (ScreenPtr pScreen, PictFormatPtr pFormat)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a31">dmxCloseIndexed</a> (ScreenPtr pScreen, PictFormatPtr pFormat)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a32">dmxUpdateIndexed</a> (ScreenPtr pScreen, PictFormatPtr pFormat, int ndef, xColorItem *pdef)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a33">dmxTrapezoids</a> (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid *traps)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a34">dmxTriangles</a> (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int ntri, xTriangle *tris)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a35">dmxTriStrip</a> (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int npoint, xPointFixed *points)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8c.html#a36">dmxTriFan</a> (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int npoint, xPointFixed *points)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Provide support for the RENDER extension (version 0.8).<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a16" doxytag="dmxpict.c::dmxBEFreeGlyphSet" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreeGlyphSet </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GlyphSetPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>glyphSet</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free <em>glyphSet</em> on back-end screen number <em>idx</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="dmxpict.c::dmxBEFreePicture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreePicture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPicture</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy <em>pPicture</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="dmxpict.c::dmxChangePicture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxChangePicture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pPicture</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Mask&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the attributes of the pictures. If the picture has not yet been created due to lazy window creation, save the mask so that it can be used to appropriately initialize the picture's attributes when it is created later. </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxpict.c::dmxChangePictureClip" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxChangePictureClip </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pPicture</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>clipType</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>value</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>n</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the picture's list of clip rectangles. </td>
- </tr>
-</table>
-<a class="anchor" name="a31" doxytag="dmxpict.c::dmxCloseIndexed" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCloseIndexed </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFormat</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Indexed color visuals are not yet supported. </td>
- </tr>
-</table>
-<a class="anchor" name="a27" doxytag="dmxpict.c::dmxComposite" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxComposite </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pMask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>ySrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xMask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>yMask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>yDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CARD16&nbsp;</td>
- <td class="mdname" nowrap> <em>width</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CARD16&nbsp;</td>
- <td class="mdname" nowrap> <em>height</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Composite a picture on the appropriate screen by combining the specified rectangle of the transformed src and mask operands with the specified rectangle of the dst using op as the compositing operator. For a complete description see the protocol document of the RENDER library. </td>
- </tr>
-</table>
-<a class="anchor" name="a29" doxytag="dmxpict.c::dmxCompositeRects" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCompositeRects </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xRenderColor *&nbsp;</td>
- <td class="mdname" nowrap> <em>color</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nRect</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xRectangle *&nbsp;</td>
- <td class="mdname" nowrap> <em>rects</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill a rectangle on the appropriate screen by combining the color with the dest picture in the area specified by the list of rectangles. For a complete description see the protocol document of the RENDER library. </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="dmxpict.c::dmxCreatePicture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxCreatePicture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPicture</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a picture. This function handles the CreatePicture unwrapping/wrapping and calls dmxDoCreatePicture to actually create the picture on the appropriate screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxpict.c::dmxCreatePictureList" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCreatePictureList </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a list of pictures. This function is called by <a class="el" href="dmxwindow_8c.html#a9">dmxCreateAndRealizeWindow()</a> during the lazy window creation realization process. It creates the entire list of pictures that are associated with the given window. </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="dmxpict.c::dmxDestroyPicture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDestroyPicture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPicture</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a picture. This function calls the wrapped function that frees the resources in the DMX server associated with this picture. </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="dmxpict.c::dmxDestroyPictureClip" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDestroyPictureClip </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPicture</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy the picture's list of clip rectangles. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="dmxpict.c::dmxDestroyPictureList" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxDestroyPictureList </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a list of pictures that are associated with the window that is being destroyed. This function is called by <a class="el" href="dmxwindow_8c.html#a12">dmxDestroyWindow()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a28" doxytag="dmxpict.c::dmxGlyphs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxGlyphs </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>maskFormat</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>ySrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nlists</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GlyphListPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>lists</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GlyphPtr *&nbsp;</td>
- <td class="mdname" nowrap> <em>glyphs</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Null function to catch when/if RENDER calls lower level mi hooks. Compositing glyphs is handled by <a class="el" href="dmxpict_8c.html#a8">dmxProcRenderCompositeGlyphs()</a>. This function should never be called. </td>
- </tr>
-</table>
-<a class="anchor" name="a30" doxytag="dmxpict.c::dmxInitIndexed" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxInitIndexed </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFormat</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Indexed color visuals are not yet supported. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxpict.c::dmxInitRender" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInitRender </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the Proc Vector for the RENDER extension. The functions here cannot be handled by the mi layer RENDER hooks either because the required information is no longer available when it reaches the mi layer or no mi layer hooks exist. This function is called from <a class="el" href="dmxinit_8c.html#a34">InitOutput()</a> since it should be initialized only once per server generation. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxpict.c::dmxPictureInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxPictureInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>formats</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nformats</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the RENDER extension, allocate the picture privates and wrap mi function hooks. If the shadow frame buffer is used, then call the appropriate fb initialization function. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxpict.c::dmxResetRender" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxResetRender </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Reset the Proc Vector for the RENDER extension back to the original functions. This function is called from <a class="el" href="dmxscrinit_8c.html#a9">dmxCloseScreen()</a> during the server reset (only for screen #0). </td>
- </tr>
-</table>
-<a class="anchor" name="a33" doxytag="dmxpict.c::dmxTrapezoids" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxTrapezoids </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>maskFormat</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>ySrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>ntrap</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xTrapezoid *&nbsp;</td>
- <td class="mdname" nowrap> <em>traps</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Composite a list of trapezoids on the appropriate screen. For a complete description see the protocol document of the RENDER library. </td>
- </tr>
-</table>
-<a class="anchor" name="a34" doxytag="dmxpict.c::dmxTriangles" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxTriangles </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>maskFormat</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>ySrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>ntri</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xTriangle *&nbsp;</td>
- <td class="mdname" nowrap> <em>tris</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Composite a list of triangles on the appropriate screen. For a complete description see the protocol document of the RENDER library. </td>
- </tr>
-</table>
-<a class="anchor" name="a36" doxytag="dmxpict.c::dmxTriFan" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxTriFan </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>maskFormat</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>ySrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>npoint</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xPointFixed *&nbsp;</td>
- <td class="mdname" nowrap> <em>points</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Composite a triangle fan on the appropriate screen. For a complete description see the protocol document of the RENDER library. </td>
- </tr>
-</table>
-<a class="anchor" name="a35" doxytag="dmxpict.c::dmxTriStrip" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxTriStrip </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>maskFormat</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>ySrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>npoint</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xPointFixed *&nbsp;</td>
- <td class="mdname" nowrap> <em>points</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Composite a triangle strip on the appropriate screen. For a complete description see the protocol document of the RENDER library. </td>
- </tr>
-</table>
-<a class="anchor" name="a32" doxytag="dmxpict.c::dmxUpdateIndexed" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxUpdateIndexed </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFormat</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>ndef</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xColorItem *&nbsp;</td>
- <td class="mdname" nowrap> <em>pdef</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Indexed color visuals are not yet supported. </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="dmxpict.c::dmxValidatePicture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxValidatePicture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pPicture</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Mask&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Validate the picture's attributes before rendering to it. Update any picture attributes that have been changed by one of the higher layers. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8h-source.html
deleted file mode 100644
index 1043f82bf..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8h-source.html
+++ /dev/null
@@ -1,141 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxpict.h</h1><a href="dmxpict_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001-2004 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00042 <span class="preprocessor">#ifndef DMXPICT_H</span>
-00043 <span class="preprocessor"></span><span class="preprocessor">#define DMXPICT_H</span>
-00044 <span class="preprocessor"></span>
-<a name="l00046"></a><a class="code" href="struct__dmxPictPriv.html">00046</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__dmxPictPriv.html">_dmxPictPriv</a> {
-<a name="l00047"></a><a class="code" href="struct__dmxPictPriv.html#o0">00047</a> Picture <a class="code" href="struct__dmxPictPriv.html#o0">pict</a>;
-<a name="l00048"></a><a class="code" href="struct__dmxPictPriv.html#o1">00048</a> Mask <a class="code" href="struct__dmxPictPriv.html#o1">savedMask</a>;
-00050 } <a class="code" href="struct__dmxPictPriv.html">dmxPictPrivRec</a>, *<a class="code" href="struct__dmxPictPriv.html">dmxPictPrivPtr</a>;
-00051
-00052
-<a name="l00054"></a><a class="code" href="struct__dmxGlyphPriv.html">00054</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__dmxGlyphPriv.html">_dmxGlyphPriv</a> {
-<a name="l00055"></a><a class="code" href="struct__dmxGlyphPriv.html#o0">00055</a> GlyphSet *<a class="code" href="struct__dmxGlyphPriv.html#o0">glyphSets</a>;
-00056 } <a class="code" href="struct__dmxGlyphPriv.html">dmxGlyphPrivRec</a>, *<a class="code" href="struct__dmxGlyphPriv.html">dmxGlyphPrivPtr</a>;
-00057
-00058
-00059 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a12">dmxInitRender</a>(<span class="keywordtype">void</span>);
-00060 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a13">dmxResetRender</a>(<span class="keywordtype">void</span>);
-00061
-00062 <span class="keyword">extern</span> Bool <a class="code" href="dmxpict_8c.html#a14">dmxPictureInit</a>(ScreenPtr pScreen,
-00063 PictFormatPtr formats, <span class="keywordtype">int</span> nformats);
-00064
-00065 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a18">dmxCreatePictureList</a>(WindowPtr pWindow);
-00066 <span class="keyword">extern</span> Bool <a class="code" href="dmxpict_8c.html#a21">dmxDestroyPictureList</a>(WindowPtr pWindow);
-00067
-00068 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxpict_8c.html#a19">dmxCreatePicture</a>(PicturePtr pPicture);
-00069 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a22">dmxDestroyPicture</a>(PicturePtr pPicture);
-00070 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxpict_8c.html#a23">dmxChangePictureClip</a>(PicturePtr pPicture, <span class="keywordtype">int</span> clipType,
-00071 pointer value, <span class="keywordtype">int</span> n);
-00072 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a24">dmxDestroyPictureClip</a>(PicturePtr pPicture);
-00073 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a25">dmxChangePicture</a>(PicturePtr pPicture, Mask mask);
-00074 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a26">dmxValidatePicture</a>(PicturePtr pPicture, Mask mask);
-00075 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a27">dmxComposite</a>(CARD8 op,
-00076 PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
-00077 INT16 xSrc, INT16 ySrc,
-00078 INT16 xMask, INT16 yMask,
-00079 INT16 xDst, INT16 yDst,
-00080 CARD16 width, CARD16 height);
-00081 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a28">dmxGlyphs</a>(CARD8 op,
-00082 PicturePtr pSrc, PicturePtr pDst,
-00083 PictFormatPtr maskFormat,
-00084 INT16 xSrc, INT16 ySrc,
-00085 <span class="keywordtype">int</span> nlists, GlyphListPtr lists, GlyphPtr *glyphs);
-00086 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a29">dmxCompositeRects</a>(CARD8 op,
-00087 PicturePtr pDst,
-00088 xRenderColor *color,
-00089 <span class="keywordtype">int</span> nRect, xRectangle *rects);
-00090 <span class="keyword">extern</span> Bool <a class="code" href="dmxpict_8c.html#a30">dmxInitIndexed</a>(ScreenPtr pScreen, PictFormatPtr pFormat);
-00091 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a31">dmxCloseIndexed</a>(ScreenPtr pScreen, PictFormatPtr pFormat);
-00092 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a32">dmxUpdateIndexed</a>(ScreenPtr pScreen, PictFormatPtr pFormat,
-00093 <span class="keywordtype">int</span> ndef, xColorItem *pdef);
-00094 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a33">dmxTrapezoids</a>(CARD8 op,
-00095 PicturePtr pSrc, PicturePtr pDst,
-00096 PictFormatPtr maskFormat,
-00097 INT16 xSrc, INT16 ySrc,
-00098 <span class="keywordtype">int</span> ntrap, xTrapezoid *traps);
-00099 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a34">dmxTriangles</a>(CARD8 op,
-00100 PicturePtr pSrc, PicturePtr pDst,
-00101 PictFormatPtr maskFormat,
-00102 INT16 xSrc, INT16 ySrc,
-00103 <span class="keywordtype">int</span> ntri, xTriangle *tris);
-00104 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a35">dmxTriStrip</a>(CARD8 op,
-00105 PicturePtr pSrc, PicturePtr pDst,
-00106 PictFormatPtr maskFormat,
-00107 INT16 xSrc, INT16 ySrc,
-00108 <span class="keywordtype">int</span> npoint, xPointFixed *points);
-00109 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpict_8c.html#a36">dmxTriFan</a>(CARD8 op,
-00110 PicturePtr pSrc, PicturePtr pDst,
-00111 PictFormatPtr maskFormat,
-00112 INT16 xSrc, INT16 ySrc,
-00113 <span class="keywordtype">int</span> npoint, xPointFixed *points);
-00114
-00115 <span class="keyword">extern</span> Bool <a class="code" href="dmxpict_8c.html#a16">dmxBEFreeGlyphSet</a>(ScreenPtr pScreen, GlyphSetPtr glyphSet);
-00116 <span class="keyword">extern</span> Bool <a class="code" href="dmxpict_8c.html#a20">dmxBEFreePicture</a>(PicturePtr pPicture);
-00117
-<a name="l00118"></a><a class="code" href="dmxpict_8h.html#a7">00118</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxpict_8h.html#a7">dmxPictPrivateIndex</a>;
-<a name="l00119"></a><a class="code" href="dmxpict_8h.html#a8">00119</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxpict_8h.html#a8">dmxGlyphSetPrivateIndex</a>;
-<a name="l00123"></a><a class="code" href="dmxpict_8h.html#a0">00123</a> <span class="preprocessor">#define DMX_GET_PICT_PRIV(_pPict) \</span>
-00124 <span class="preprocessor"> (dmxPictPrivPtr)(_pPict)-&gt;devPrivates[dmxPictPrivateIndex].ptr</span>
-00125 <span class="preprocessor"></span>
-<a name="l00127"></a><a class="code" href="dmxpict_8h.html#a1">00127</a> <span class="preprocessor">#define DMX_SET_GLYPH_PRIV(_pGlyph, _pPriv) \</span>
-00128 <span class="preprocessor"> GlyphSetSetPrivate((_pGlyph), dmxGlyphSetPrivateIndex, (_pPriv))</span>
-00129 <span class="preprocessor"></span>
-<a name="l00130"></a><a class="code" href="dmxpict_8h.html#a2">00130</a> <span class="preprocessor">#define DMX_GET_GLYPH_PRIV(_pGlyph) \</span>
-00131 <span class="preprocessor"> (dmxGlyphPrivPtr)GlyphSetGetPrivate((_pGlyph), dmxGlyphSetPrivateIndex)</span>
-00132 <span class="preprocessor"></span>
-00133 <span class="preprocessor">#endif </span><span class="comment">/* DMXPICT_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8h.html
deleted file mode 100644
index ea00f7a84..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpict_8h.html
+++ /dev/null
@@ -1,1418 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxpict.h File Reference</h1>
-<p>
-<a href="dmxpict_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxGlyphPriv.html">_dmxGlyphPriv</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxPictPriv.html">_dmxPictPriv</a></td></tr>
-
-<tr><td colspan=2><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a0">DMX_GET_PICT_PRIV</a>(_pPict)&nbsp;&nbsp;&nbsp;(<a class="el" href="struct__dmxPictPriv.html">dmxPictPrivPtr</a>)(_pPict)-&gt;devPrivates[<a class="el" href="dmxscrinit_8c.html#a7">dmxPictPrivateIndex</a>].ptr</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a1">DMX_SET_GLYPH_PRIV</a>(_pGlyph, _pPriv)&nbsp;&nbsp;&nbsp;GlyphSetSetPrivate((_pGlyph), <a class="el" href="dmxscrinit_8c.html#a8">dmxGlyphSetPrivateIndex</a>, (_pPriv))</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a2">DMX_GET_GLYPH_PRIV</a>(_pGlyph)&nbsp;&nbsp;&nbsp;(<a class="el" href="struct__dmxGlyphPriv.html">dmxGlyphPrivPtr</a>)GlyphSetGetPrivate((_pGlyph), <a class="el" href="dmxscrinit_8c.html#a8">dmxGlyphSetPrivateIndex</a>)</td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxPictPriv.html">_dmxPictPriv</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a3">dmxPictPrivRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxPictPriv.html">_dmxPictPriv</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a4">dmxPictPrivPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxGlyphPriv.html">_dmxGlyphPriv</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a5">dmxGlyphPrivRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxGlyphPriv.html">_dmxGlyphPriv</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a6">dmxGlyphPrivPtr</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a9">dmxInitRender</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a10">dmxResetRender</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a11">dmxPictureInit</a> (ScreenPtr pScreen, PictFormatPtr formats, int nformats)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a12">dmxCreatePictureList</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a13">dmxDestroyPictureList</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a14">dmxCreatePicture</a> (PicturePtr pPicture)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a15">dmxDestroyPicture</a> (PicturePtr pPicture)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a16">dmxChangePictureClip</a> (PicturePtr pPicture, int clipType, pointer value, int n)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a17">dmxDestroyPictureClip</a> (PicturePtr pPicture)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a18">dmxChangePicture</a> (PicturePtr pPicture, Mask mask)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a19">dmxValidatePicture</a> (PicturePtr pPicture, Mask mask)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a20">dmxComposite</a> (CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a21">dmxGlyphs</a> (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlists, GlyphListPtr lists, GlyphPtr *glyphs)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a22">dmxCompositeRects</a> (CARD8 op, PicturePtr pDst, xRenderColor *color, int nRect, xRectangle *rects)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a23">dmxInitIndexed</a> (ScreenPtr pScreen, PictFormatPtr pFormat)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a24">dmxCloseIndexed</a> (ScreenPtr pScreen, PictFormatPtr pFormat)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a25">dmxUpdateIndexed</a> (ScreenPtr pScreen, PictFormatPtr pFormat, int ndef, xColorItem *pdef)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a26">dmxTrapezoids</a> (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid *traps)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a27">dmxTriangles</a> (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int ntri, xTriangle *tris)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a28">dmxTriStrip</a> (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int npoint, xPointFixed *points)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a29">dmxTriFan</a> (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int npoint, xPointFixed *points)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a30">dmxBEFreeGlyphSet</a> (ScreenPtr pScreen, GlyphSetPtr glyphSet)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a31">dmxBEFreePicture</a> (PicturePtr pPicture)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a7">dmxPictPrivateIndex</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpict_8h.html#a8">dmxGlyphSetPrivateIndex</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides access to the externally visible RENDER support functions, global variables and macros for DMX.<p>
-FIXME: Move function definitions for non-externally visible function to .c file.<hr><h2>Define Documentation</h2>
-<a class="anchor" name="a2" doxytag="dmxpict.h::DMX_GET_GLYPH_PRIV" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_GET_GLYPH_PRIV</td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">_pGlyph&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(<a class="el" href="struct__dmxGlyphPriv.html">dmxGlyphPrivPtr</a>)GlyphSetGetPrivate((_pGlyph), <a class="el" href="dmxscrinit_8c.html#a8">dmxGlyphSetPrivateIndex</a>)
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get the glyphset private data given a glyphset pointer </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxpict.h::DMX_GET_PICT_PRIV" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_GET_PICT_PRIV</td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">_pPict&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(<a class="el" href="struct__dmxPictPriv.html">dmxPictPrivPtr</a>)(_pPict)-&gt;devPrivates[<a class="el" href="dmxscrinit_8c.html#a7">dmxPictPrivateIndex</a>].ptr
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get the picture private data given a picture pointer </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxpict.h::DMX_SET_GLYPH_PRIV" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_SET_GLYPH_PRIV</td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">_pGlyph, <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>_pPriv&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>&nbsp;&nbsp;&nbsp;GlyphSetSetPrivate((_pGlyph), <a class="el" href="dmxscrinit_8c.html#a8">dmxGlyphSetPrivateIndex</a>, (_pPriv))
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set the glyphset private data given a glyphset pointer </td>
- </tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a6" doxytag="dmxpict.h::dmxGlyphPrivPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxGlyphPriv.html">_dmxGlyphPriv</a> * <a class="el" href="struct__dmxGlyphPriv.html">dmxGlyphPrivPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Glyph Set private structure </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxpict.h::dmxGlyphPrivRec" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxGlyphPriv.html">_dmxGlyphPriv</a> <a class="el" href="struct__dmxGlyphPriv.html">dmxGlyphPrivRec</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Glyph Set private structure </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxpict.h::dmxPictPrivPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxPictPriv.html">_dmxPictPriv</a> * <a class="el" href="struct__dmxPictPriv.html">dmxPictPrivPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Picture private structure </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxpict.h::dmxPictPrivRec" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxPictPriv.html">_dmxPictPriv</a> <a class="el" href="struct__dmxPictPriv.html">dmxPictPrivRec</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Picture private structure </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a30" doxytag="dmxpict.h::dmxBEFreeGlyphSet" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreeGlyphSet </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GlyphSetPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>glyphSet</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free <em>glyphSet</em> on back-end screen number <em>idx</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a31" doxytag="dmxpict.h::dmxBEFreePicture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreePicture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPicture</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy <em>pPicture</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxpict.h::dmxChangePicture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxChangePicture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pPicture</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Mask&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the attributes of the pictures. If the picture has not yet been created due to lazy window creation, save the mask so that it can be used to appropriately initialize the picture's attributes when it is created later. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxpict.h::dmxChangePictureClip" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxChangePictureClip </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pPicture</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>clipType</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>value</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>n</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the picture's list of clip rectangles. </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="dmxpict.h::dmxCloseIndexed" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCloseIndexed </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFormat</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Indexed color visuals are not yet supported. </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="dmxpict.h::dmxComposite" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxComposite </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pMask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>ySrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xMask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>yMask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>yDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CARD16&nbsp;</td>
- <td class="mdname" nowrap> <em>width</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CARD16&nbsp;</td>
- <td class="mdname" nowrap> <em>height</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Composite a picture on the appropriate screen by combining the specified rectangle of the transformed src and mask operands with the specified rectangle of the dst using op as the compositing operator. For a complete description see the protocol document of the RENDER library. </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="dmxpict.h::dmxCompositeRects" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCompositeRects </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xRenderColor *&nbsp;</td>
- <td class="mdname" nowrap> <em>color</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nRect</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xRectangle *&nbsp;</td>
- <td class="mdname" nowrap> <em>rects</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill a rectangle on the appropriate screen by combining the color with the dest picture in the area specified by the list of rectangles. For a complete description see the protocol document of the RENDER library. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxpict.h::dmxCreatePicture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxCreatePicture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPicture</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a picture. This function handles the CreatePicture unwrapping/wrapping and calls dmxDoCreatePicture to actually create the picture on the appropriate screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxpict.h::dmxCreatePictureList" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCreatePictureList </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a list of pictures. This function is called by <a class="el" href="dmxwindow_8c.html#a9">dmxCreateAndRealizeWindow()</a> during the lazy window creation realization process. It creates the entire list of pictures that are associated with the given window. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmxpict.h::dmxDestroyPicture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDestroyPicture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPicture</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a picture. This function calls the wrapped function that frees the resources in the DMX server associated with this picture. </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxpict.h::dmxDestroyPictureClip" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxDestroyPictureClip </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPicture</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy the picture's list of clip rectangles. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxpict.h::dmxDestroyPictureList" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxDestroyPictureList </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a list of pictures that are associated with the window that is being destroyed. This function is called by <a class="el" href="dmxwindow_8c.html#a12">dmxDestroyWindow()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="dmxpict.h::dmxGlyphs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxGlyphs </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>maskFormat</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>ySrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nlists</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GlyphListPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>lists</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>GlyphPtr *&nbsp;</td>
- <td class="mdname" nowrap> <em>glyphs</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Null function to catch when/if RENDER calls lower level mi hooks. Compositing glyphs is handled by <a class="el" href="dmxpict_8c.html#a8">dmxProcRenderCompositeGlyphs()</a>. This function should never be called. </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxpict.h::dmxInitIndexed" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxInitIndexed </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFormat</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Indexed color visuals are not yet supported. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxpict.h::dmxInitRender" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxInitRender </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the Proc Vector for the RENDER extension. The functions here cannot be handled by the mi layer RENDER hooks either because the required information is no longer available when it reaches the mi layer or no mi layer hooks exist. This function is called from <a class="el" href="dmxinit_8c.html#a34">InitOutput()</a> since it should be initialized only once per server generation. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxpict.h::dmxPictureInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxPictureInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>formats</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>nformats</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the RENDER extension, allocate the picture privates and wrap mi function hooks. If the shadow frame buffer is used, then call the appropriate fb initialization function. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxpict.h::dmxResetRender" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxResetRender </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Reset the Proc Vector for the RENDER extension back to the original functions. This function is called from <a class="el" href="dmxscrinit_8c.html#a9">dmxCloseScreen()</a> during the server reset (only for screen #0). </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="dmxpict.h::dmxTrapezoids" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxTrapezoids </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>maskFormat</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>ySrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>ntrap</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xTrapezoid *&nbsp;</td>
- <td class="mdname" nowrap> <em>traps</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Composite a list of trapezoids on the appropriate screen. For a complete description see the protocol document of the RENDER library. </td>
- </tr>
-</table>
-<a class="anchor" name="a27" doxytag="dmxpict.h::dmxTriangles" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxTriangles </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>maskFormat</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>ySrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>ntri</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xTriangle *&nbsp;</td>
- <td class="mdname" nowrap> <em>tris</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Composite a list of triangles on the appropriate screen. For a complete description see the protocol document of the RENDER library. </td>
- </tr>
-</table>
-<a class="anchor" name="a29" doxytag="dmxpict.h::dmxTriFan" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxTriFan </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>maskFormat</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>ySrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>npoint</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xPointFixed *&nbsp;</td>
- <td class="mdname" nowrap> <em>points</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Composite a triangle fan on the appropriate screen. For a complete description see the protocol document of the RENDER library. </td>
- </tr>
-</table>
-<a class="anchor" name="a28" doxytag="dmxpict.h::dmxTriStrip" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxTriStrip </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">CARD8&nbsp;</td>
- <td class="mdname" nowrap> <em>op</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDst</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>maskFormat</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>xSrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>INT16&nbsp;</td>
- <td class="mdname" nowrap> <em>ySrc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>npoint</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xPointFixed *&nbsp;</td>
- <td class="mdname" nowrap> <em>points</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Composite a triangle strip on the appropriate screen. For a complete description see the protocol document of the RENDER library. </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="dmxpict.h::dmxUpdateIndexed" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxUpdateIndexed </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>PictFormatPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pFormat</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>ndef</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xColorItem *&nbsp;</td>
- <td class="mdname" nowrap> <em>pdef</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Indexed color visuals are not yet supported. </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="dmxpict.h::dmxValidatePicture" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxValidatePicture </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PicturePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pPicture</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Mask&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Validate the picture's attributes before rendering to it. Update any picture attributes that have been changed by one of the higher layers. </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a8" doxytag="dmxpict.h::dmxGlyphSetPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxscrinit_8c.html#a8">dmxGlyphSetPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for GlyphSets </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxpict.h::dmxPictPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxscrinit_8c.html#a7">dmxPictPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for Picts </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8c.html
deleted file mode 100644
index 8c6fc4551..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8c.html
+++ /dev/null
@@ -1,240 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxpixmap.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxpixmap_8h-source.html">dmxpixmap.h</a>"</code><br>
-<code>#include "pixmapstr.h"</code><br>
-<code>#include "servermd.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8c.html#a0">dmxInitPixmap</a> (ScreenPtr pScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8c.html#a1">dmxBECreatePixmap</a> (PixmapPtr pPixmap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>PixmapPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8c.html#a2">dmxCreatePixmap</a> (ScreenPtr pScreen, int width, int height, int depth)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8c.html#a3">dmxBEFreePixmap</a> (PixmapPtr pPixmap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8c.html#a4">dmxDestroyPixmap</a> (PixmapPtr pPixmap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>RegionPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8c.html#a5">dmxBitmapToRegion</a> (PixmapPtr pPixmap)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Provides pixmap support.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a1" doxytag="dmxpixmap.c::dmxBECreatePixmap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBECreatePixmap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PixmapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPixmap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a pixmap on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxpixmap.c::dmxBEFreePixmap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreePixmap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PixmapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPixmap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy the pixmap on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxpixmap.c::dmxBitmapToRegion" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> RegionPtr dmxBitmapToRegion </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PixmapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPixmap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create and return a region based on the pixmap pointed to by <em>pPixmap</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxpixmap.c::dmxCreatePixmap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> PixmapPtr dmxCreatePixmap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>width</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>height</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>depth</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a pixmap for <em>pScreen</em> with the specified <em>width</em>, <em>height</em>, and <em>depth</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxpixmap.c::dmxDestroyPixmap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxDestroyPixmap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PixmapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPixmap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy the pixmap pointed to by <em>pPixmap</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxpixmap.c::dmxInitPixmap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxInitPixmap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize a private area in <em>pScreen</em> for pixmap information. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8h-source.html
deleted file mode 100644
index faa74a3e0..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8h-source.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxpixmap.h</h1><a href="dmxpixmap_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001-2004 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef DMXPIXMAP_H</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define DMXPIXMAP_H</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="preprocessor">#include "pixmapstr.h"</span>
-00042
-<a name="l00044"></a><a class="code" href="struct__dmxPixPriv.html">00044</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__dmxPixPriv.html">_dmxPixPriv</a> {
-00045 Pixmap pixmap;
-00046 XImage *detachedImage;
-00047 } <a class="code" href="struct__dmxPixPriv.html">dmxPixPrivRec</a>, *<a class="code" href="struct__dmxPixPriv.html">dmxPixPrivPtr</a>;
-00048
-00049
-00050 <span class="keyword">extern</span> Bool <a class="code" href="dmxpixmap_8c.html#a0">dmxInitPixmap</a>(ScreenPtr pScreen);
-00051
-00052 <span class="keyword">extern</span> PixmapPtr <a class="code" href="dmxpixmap_8c.html#a2">dmxCreatePixmap</a>(ScreenPtr pScreen,
-00053 <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keywordtype">int</span> depth);
-00054 <span class="keyword">extern</span> Bool <a class="code" href="dmxpixmap_8c.html#a4">dmxDestroyPixmap</a>(PixmapPtr pPixmap);
-00055 <span class="keyword">extern</span> RegionPtr <a class="code" href="dmxpixmap_8c.html#a5">dmxBitmapToRegion</a>(PixmapPtr pPixmap);
-00056
-00057 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxpixmap_8c.html#a1">dmxBECreatePixmap</a>(PixmapPtr pPixmap);
-00058 <span class="keyword">extern</span> Bool <a class="code" href="dmxpixmap_8c.html#a3">dmxBEFreePixmap</a>(PixmapPtr pPixmap);
-00059
-<a name="l00061"></a><a class="code" href="dmxpixmap_8h.html#a3">00061</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxpixmap_8h.html#a3">dmxPixPrivateIndex</a>;
-00062
-<a name="l00064"></a><a class="code" href="dmxpixmap_8h.html#a0">00064</a> <span class="preprocessor">#define DMX_GET_PIXMAP_PRIV(_pPix) \</span>
-00065 <span class="preprocessor"> (dmxPixPrivPtr)(_pPix)-&gt;devPrivates[dmxPixPrivateIndex].ptr</span>
-00066 <span class="preprocessor"></span>
-00067 <span class="preprocessor">#endif </span><span class="comment">/* DMXPIXMAP_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8h.html
deleted file mode 100644
index 27cc6a5da..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxpixmap_8h.html
+++ /dev/null
@@ -1,351 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxpixmap.h File Reference</h1><code>#include "pixmapstr.h"</code><br>
-
-<p>
-<a href="dmxpixmap_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxPixPriv.html">_dmxPixPriv</a></td></tr>
-
-<tr><td colspan=2><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8h.html#a0">DMX_GET_PIXMAP_PRIV</a>(_pPix)&nbsp;&nbsp;&nbsp;(<a class="el" href="struct__dmxPixPriv.html">dmxPixPrivPtr</a>)(_pPix)-&gt;devPrivates[<a class="el" href="dmxpixmap_8h.html#a3">dmxPixPrivateIndex</a>].ptr</td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxPixPriv.html">_dmxPixPriv</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8h.html#a1">dmxPixPrivRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxPixPriv.html">_dmxPixPriv</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8h.html#a2">dmxPixPrivPtr</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8h.html#a4">dmxInitPixmap</a> (ScreenPtr pScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>PixmapPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8h.html#a5">dmxCreatePixmap</a> (ScreenPtr pScreen, int width, int height, int depth)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8h.html#a6">dmxDestroyPixmap</a> (PixmapPtr pPixmap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>RegionPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8h.html#a7">dmxBitmapToRegion</a> (PixmapPtr pPixmap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8h.html#a8">dmxBECreatePixmap</a> (PixmapPtr pPixmap)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8h.html#a9">dmxBEFreePixmap</a> (PixmapPtr pPixmap)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxpixmap_8h.html#a3">dmxPixPrivateIndex</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for pixmap support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxpixmap_8c.html">dmxpixmap.c</a></dd></dl>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxpixmap.h::DMX_GET_PIXMAP_PRIV" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_GET_PIXMAP_PRIV</td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">_pPix&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>&nbsp;&nbsp;&nbsp;(<a class="el" href="struct__dmxPixPriv.html">dmxPixPrivPtr</a>)(_pPix)-&gt;devPrivates[<a class="el" href="dmxpixmap_8h.html#a3">dmxPixPrivateIndex</a>].ptr
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get pixmap private pointer. </td>
- </tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a2" doxytag="dmxpixmap.h::dmxPixPrivPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxPixPriv.html">_dmxPixPriv</a> * <a class="el" href="struct__dmxPixPriv.html">dmxPixPrivPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Pixmap private area. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxpixmap.h::dmxPixPrivRec" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxPixPriv.html">_dmxPixPriv</a> <a class="el" href="struct__dmxPixPriv.html">dmxPixPrivRec</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Pixmap private area. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a8" doxytag="dmxpixmap.h::dmxBECreatePixmap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBECreatePixmap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PixmapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPixmap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a pixmap on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxpixmap.h::dmxBEFreePixmap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreePixmap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PixmapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPixmap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy the pixmap on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxpixmap.h::dmxBitmapToRegion" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> RegionPtr dmxBitmapToRegion </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PixmapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPixmap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create and return a region based on the pixmap pointed to by <em>pPixmap</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxpixmap.h::dmxCreatePixmap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> PixmapPtr dmxCreatePixmap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>width</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>height</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>depth</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a pixmap for <em>pScreen</em> with the specified <em>width</em>, <em>height</em>, and <em>depth</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxpixmap.h::dmxDestroyPixmap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxDestroyPixmap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">PixmapPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pPixmap</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy the pixmap pointed to by <em>pPixmap</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxpixmap.h::dmxInitPixmap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxInitPixmap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize a private area in <em>pScreen</em> for pixmap information. </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxpixmap.h::dmxPixPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxpixmap_8h.html#a3">dmxPixPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index. <dl compact><dt><b>See also:</b></dt><dd>dmxpicmap.h <p>
-<a class="el" href="dmxscrinit_8c.html">dmxscrinit.c</a> </dd></dl>
- </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8c.html
deleted file mode 100644
index 9a439cf6b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8c.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxprint.c File Reference</h1><code>#include "<a class="el" href="dmxconfig_8h-source.html">dmxconfig.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxprint_8h-source.html">dmxprint.h</a>"</code><br>
-<code>#include "parser.h"</code><br>
-<code>#include &lt;stdio.h&gt;</code><br>
-<code>#include &lt;stdarg.h&gt;</code><br>
-<code>#include &lt;ctype.h&gt;</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>stack</b></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprint_8c.html#a25">dmxConfigPrint</a> (FILE *stream, <a class="el" href="struct__DMXConfigEntry.html">DMXConfigEntryPtr</a> entry)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprint_8c.html#a26">dmxConfigVirtualPrint</a> (FILE *stream, <a class="el" href="struct__DMXConfigVirtual.html">DMXConfigVirtualPtr</a> p)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides support routines and helper functions to be used to pretty-print DMX configurations.<p>
-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.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a25" doxytag="dmxprint.c::dmxConfigPrint" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigPrint </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">FILE *&nbsp;</td>
- <td class="mdname" nowrap> <em>stream</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXConfigEntry.html">DMXConfigEntryPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>entry</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-The configuration information in <em>entry</em> will be pretty-printed to the <em>stream</em>. If <em>stream</em> is NULL, then stdout will be used. </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="dmxprint.c::dmxConfigVirtualPrint" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigVirtualPrint </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">FILE *&nbsp;</td>
- <td class="mdname" nowrap> <em>stream</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXConfigVirtual.html">DMXConfigVirtualPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>p</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-The configuration information in <em>p</em> will be pretty-printed to the <em>stream</em>. If <em>stream</em> is NULL, then stdout will be used. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8h-source.html
deleted file mode 100644
index c1a0d4edb..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8h-source.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxprint.h</h1><a href="dmxprint_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXPRINT_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXPRINT_H_</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="keywordtype">void</span> <a class="code" href="dmxprint_8c.html#a25">dmxConfigPrint</a>(FILE *str, <a class="code" href="struct__DMXConfigEntry.html">DMXConfigEntryPtr</a> entry);
-00042 <span class="keywordtype">void</span> <a class="code" href="dmxprint_8c.html#a26">dmxConfigVirtualPrint</a>(FILE *str, <a class="code" href="struct__DMXConfigVirtual.html">DMXConfigVirtualPtr</a> p);
-00043
-00044 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8h.html
deleted file mode 100644
index c12085c7b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprint_8h.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxprint.h File Reference</h1>
-<p>
-<a href="dmxprint_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprint_8h.html#a0">dmxConfigPrint</a> (FILE *str, <a class="el" href="struct__DMXConfigEntry.html">DMXConfigEntryPtr</a> entry)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprint_8h.html#a1">dmxConfigVirtualPrint</a> (FILE *str, <a class="el" href="struct__DMXConfigVirtual.html">DMXConfigVirtualPtr</a> p)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to DMX configuration file pretty-printer. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxprint_8c.html">dmxprint.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxprint.h::dmxConfigPrint" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigPrint </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">FILE *&nbsp;</td>
- <td class="mdname" nowrap> <em>stream</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXConfigEntry.html">DMXConfigEntryPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>entry</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-The configuration information in <em>entry</em> will be pretty-printed to the <em>stream</em>. If <em>stream</em> is NULL, then stdout will be used. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxprint.h::dmxConfigVirtualPrint" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxConfigVirtualPrint </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">FILE *&nbsp;</td>
- <td class="mdname" nowrap> <em>stream</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXConfigVirtual.html">DMXConfigVirtualPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>p</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-The configuration information in <em>p</em> will be pretty-printed to the <em>stream</em>. If <em>stream</em> is NULL, then stdout will be used. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8c.html
deleted file mode 100644
index 6fa746b53..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8c.html
+++ /dev/null
@@ -1,235 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxprop.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxprop_8h-source.html">dmxprop.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprop_8c.html#a0">DMX_ATOMNAME</a>&nbsp;&nbsp;&nbsp;"DMX_NAME"</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprop_8c.html#a1">DMX_IDENT</a>&nbsp;&nbsp;&nbsp;"Xdmx"</td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprop_8c.html#a5">dmxPropertyIterate</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *start, void *(*f)(<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, void *), void *closure)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprop_8c.html#a8">dmxPropertyDisplay</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprop_8c.html#a9">dmxPropertySameDisplay</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, const char *name)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprop_8c.html#a10">dmxPropertyWindow</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-It is possible for one of the DMX "backend displays" to actually be smaller than the dimensions of the backend X server. Therefore, it is possible for more than one of the DMX "backend displays" to be physically located on the same backend X server. This situation must be detected so that cursor motion can be handled in an expected fashion.<p>
-We could analyze the names used for the DMX "backend displays" (e.g., the names passed to the -display command-line parameter), but there are many possible names for a single X display, and failing to detect sameness leads to very unexpected results. Therefore, whenever the DMX server opens a window on a backend X server, a property value is queried and set on that backend to detect when another window is already open on that server.<p>
-Further, it is possible that two different DMX server instantiations both have windows on the same physical backend X server. This case is also detected so that pointer input is not taken from that particular backend X server.<p>
-The routines in this file handle the property management.<hr><h2>Define Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxprop.c::DMX_ATOMNAME" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_ATOMNAME&nbsp;&nbsp;&nbsp;"DMX_NAME"
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Holds the window id of all DMX windows on the backend X server. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxprop.c::DMX_IDENT" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_IDENT&nbsp;&nbsp;&nbsp;"Xdmx"
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-The identification string of this DMX server </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a8" doxytag="dmxprop.c::dmxPropertyDisplay" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxPropertyDisplay </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Returns 0 if this is the only Xdmx session on the display; 1 otherwise. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxprop.c::dmxPropertyIterate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void* dmxPropertyIterate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>void *(*&nbsp;</td>
- <td class="mdname" nowrap> <em>f</em>)(<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, void *), </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>void *&nbsp;</td>
- <td class="mdname" nowrap> <em>closure</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Starting with the <em>start</em> screen, iterate over all of the screens on the same physical X server as <em>start</em>, calling <em>f</em> with the screen and the <em>closure</em>. (The common case is that <em>start</em> is the only DMX window on the backend X server.) </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxprop.c::dmxPropertySameDisplay" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxPropertySameDisplay </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Returns 1 if the dmxScreen and the display in <em>name</em> are on the same display, or 0 otherwise. We can't just compare the display names because there can be multiple synonyms for the same display, some of which cannot be determined without accessing the display itself (e.g., domain aliases or machines with multiple NICs). </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxprop.c::dmxPropertyWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPropertyWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Prints a log message if <em>dmxScreen</em> is on the same backend X server as some other DMX backend (output) screen. Modifies the property (<a class="el" href="dmxprop_8c.html#a0">DMX_ATOMNAME</a>) on the backend X server to reflect the creation of <em>dmxScreen</em>.<p>
-The root window of the backend X server holds a list of window ids for all DMX windows (on this DMX server or some other DMX server).<p>
-This list can then be iterated, and the property for each window can be examined. This property contains the following tuple (no quotes):<p>
-"#DMX_IDENT:&lt;hostname running DMX&gt;:&lt;display name of DMX&gt;,&lt;screen number&gt;" </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8h-source.html
deleted file mode 100644
index a623a3b95..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8h-source.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxprop.h</h1><a href="dmxprop_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002,2003 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXPROP_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXPROP_H_</span>
-00040 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxprop_8c.html#a8">dmxPropertyDisplay</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00041 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxprop_8c.html#a10">dmxPropertyWindow</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen);
-00042 <span class="keyword">extern</span> <span class="keywordtype">void</span> *<a class="code" href="dmxprop_8c.html#a5">dmxPropertyIterate</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *start,
-00043 <span class="keywordtype">void</span> *(*f)(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen,
-00044 <span class="keywordtype">void</span> *closure),
-00045 <span class="keywordtype">void</span> *closure);
-00046 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxprop_8c.html#a9">dmxPropertySameDisplay</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, <span class="keyword">const</span> <span class="keywordtype">char</span> *name);
-00047 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8h.html
deleted file mode 100644
index bc8210b47..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxprop_8h.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxprop.h File Reference</h1>
-<p>
-<a href="dmxprop_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprop_8h.html#a0">dmxPropertyDisplay</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprop_8h.html#a1">dmxPropertyWindow</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxprop_8h.html#a3">dmxPropertySameDisplay</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, const char *name)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for property support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxprop_8c.html">dmxprop.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxprop.h::dmxPropertyDisplay" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxPropertyDisplay </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Returns 0 if this is the only Xdmx session on the display; 1 otherwise. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxprop.h::dmxPropertySameDisplay" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int dmxPropertySameDisplay </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Returns 1 if the dmxScreen and the display in <em>name</em> are on the same display, or 0 otherwise. We can't just compare the display names because there can be multiple synonyms for the same display, some of which cannot be determined without accessing the display itself (e.g., domain aliases or machines with multiple NICs). </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxprop.h::dmxPropertyWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPropertyWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Prints a log message if <em>dmxScreen</em> is on the same backend X server as some other DMX backend (output) screen. Modifies the property (<a class="el" href="dmxprop_8c.html#a0">DMX_ATOMNAME</a>) on the backend X server to reflect the creation of <em>dmxScreen</em>.<p>
-The root window of the backend X server holds a list of window ids for all DMX windows (on this DMX server or some other DMX server).<p>
-This list can then be iterated, and the property for each window can be examined. This property contains the following tuple (no quotes):<p>
-"#DMX_IDENT:&lt;hostname running DMX&gt;:&lt;display name of DMX&gt;,&lt;screen number&gt;" </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxproto_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxproto_8h-source.html
deleted file mode 100644
index 679d60e73..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxproto_8h-source.html
+++ /dev/null
@@ -1,431 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxproto.h</h1><a href="dmxproto_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002-2004 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00042 <span class="preprocessor">#ifndef _DMXSTR_H_</span>
-00043 <span class="preprocessor"></span><span class="preprocessor">#define _DMXSTR_H_</span>
-00044 <span class="preprocessor"></span>
-00045 <span class="preprocessor">#define DMX_EXTENSION_NAME "DMX"</span>
-00046 <span class="preprocessor"></span><span class="preprocessor">#define DMX_EXTENSION_MAJOR 2</span>
-00047 <span class="preprocessor"></span><span class="preprocessor">#define DMX_EXTENSION_MINOR 2</span>
-00048 <span class="preprocessor"></span><span class="preprocessor">#define DMX_EXTENSION_PATCH 20040604</span>
-00049 <span class="preprocessor"></span>
-00050 <span class="comment">/* These values must be larger than LastExtensionError.</span>
-00051 <span class="comment"> The values in dmxext.h and dmxproto.h *MUST* match. */</span>
-00052 <span class="preprocessor">#define DMX_BAD_XINERAMA 1001</span>
-00053 <span class="preprocessor"></span><span class="preprocessor">#define DMX_BAD_VALUE 1002</span>
-00054 <span class="preprocessor"></span>
-00055 <span class="preprocessor">#define X_DMXQueryVersion 0</span>
-00056 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXGetScreenCount 1</span>
-00057 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXGetScreenInformationDEPRECATED 2</span>
-00058 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXGetWindowAttributes 3</span>
-00059 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXGetInputCount 4</span>
-00060 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXGetInputAttributes 5</span>
-00061 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXForceWindowCreationDEPRECATED 6</span>
-00062 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXReconfigureScreenDEPRECATED 7</span>
-00063 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXSync 8</span>
-00064 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXForceWindowCreation 9</span>
-00065 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXGetScreenAttributes 10</span>
-00066 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXChangeScreensAttributes 11</span>
-00067 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXAddScreen 12</span>
-00068 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXRemoveScreen 13</span>
-00069 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXGetDesktopAttributes 14</span>
-00070 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXChangeDesktopAttributes 15</span>
-00071 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXAddInput 16</span>
-00072 <span class="preprocessor"></span><span class="preprocessor">#define X_DMXRemoveInput 17</span>
-00073 <span class="preprocessor"></span>
-<a name="l00075"></a><a class="code" href="structxDMXQueryVersionReq.html">00075</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00076 CARD8 reqType; <span class="comment">/* dmxcode */</span>
-00077 CARD8 dmxReqType; <span class="comment">/* X_DMXQueryVersion */</span>
-00078 CARD16 length B16;
-00079 } <a class="code" href="structxDMXQueryVersionReq.html">xDMXQueryVersionReq</a>;
-00080 <span class="preprocessor">#define sz_xDMXQueryVersionReq 4</span>
-00081 <span class="preprocessor"></span>
-<a name="l00083"></a><a class="code" href="structxDMXQueryVersionReply.html">00083</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00084 BYTE type; <span class="comment">/* X_Reply */</span>
-00085 CARD8 ununsed;
-00086 CARD16 sequenceNumber B16;
-00087 CARD32 length B32;
-00088 CARD32 majorVersion B32;
-00089 CARD32 minorVersion B32;
-00090 CARD32 patchVersion B32;
-00091 CARD32 pad0 B32;
-00092 CARD32 pad1 B32;
-00093 CARD32 pad2 B32;
-00094 } <a class="code" href="structxDMXQueryVersionReply.html">xDMXQueryVersionReply</a>;
-00095 <span class="preprocessor">#define sz_xDMXQueryVersionReply 32</span>
-00096 <span class="preprocessor"></span>
-<a name="l00098"></a><a class="code" href="structxDMXSyncReq.html">00098</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00099 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00100 CARD8 dmxReqType; <span class="comment">/* X_DMXSync */</span>
-00101 CARD16 length B16;
-00102 } <a class="code" href="structxDMXSyncReq.html">xDMXSyncReq</a>;
-00103 <span class="preprocessor">#define sz_xDMXSyncReq 4</span>
-00104 <span class="preprocessor"></span>
-<a name="l00106"></a><a class="code" href="structxDMXSyncReply.html">00106</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00107 BYTE type; <span class="comment">/* X_Reply */</span>
-00108 CARD8 unused;
-00109 CARD16 sequenceNumber B16;
-00110 CARD32 length B32;
-00111 CARD32 status B32;
-00112 CARD32 pad0 B32;
-00113 CARD32 pad1 B32;
-00114 CARD32 pad2 B32;
-00115 CARD32 pad3 B32;
-00116 CARD32 pad4 B32;
-00117 } <a class="code" href="structxDMXSyncReply.html">xDMXSyncReply</a>;
-00118 <span class="preprocessor">#define sz_xDMXSyncReply 32</span>
-00119 <span class="preprocessor"></span>
-<a name="l00121"></a><a class="code" href="structxDMXForceWindowCreationReq.html">00121</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00122 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00123 CARD8 dmxReqType; <span class="comment">/* X_DMXForceWindowCreation */</span>
-00124 CARD16 length B16;
-00125 CARD32 window B32;
-00126 } <a class="code" href="structxDMXForceWindowCreationReq.html">xDMXForceWindowCreationReq</a>;
-00127 <span class="preprocessor">#define sz_xDMXForceWindowCreationReq 8</span>
-00128 <span class="preprocessor"></span>
-<a name="l00130"></a><a class="code" href="structxDMXForceWindowCreationReply.html">00130</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00131 BYTE type; <span class="comment">/* X_Reply */</span>
-00132 CARD8 unused;
-00133 CARD16 sequenceNumber B16;
-00134 CARD32 length B32;
-00135 CARD32 status B32;
-00136 CARD32 pad0 B32;
-00137 CARD32 pad1 B32;
-00138 CARD32 pad2 B32;
-00139 CARD32 pad3 B32;
-00140 CARD32 pad4 B32;
-00141 } <a class="code" href="structxDMXForceWindowCreationReply.html">xDMXForceWindowCreationReply</a>;
-00142 <span class="preprocessor">#define sz_xDMXForceWindowCreationReply 32</span>
-00143 <span class="preprocessor"></span>
-<a name="l00145"></a><a class="code" href="structxDMXGetScreenCountReq.html">00145</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00146 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00147 CARD8 dmxReqType; <span class="comment">/* X_DMXGetScreenCount */</span>
-00148 CARD16 length B16;
-00149 } <a class="code" href="structxDMXGetScreenCountReq.html">xDMXGetScreenCountReq</a>;
-00150 <span class="preprocessor">#define sz_xDMXGetScreenCountReq 4</span>
-00151 <span class="preprocessor"></span>
-<a name="l00153"></a><a class="code" href="structxDMXGetScreenCountReply.html">00153</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00154 BYTE type; <span class="comment">/* X_Reply */</span>
-00155 CARD8 unused;
-00156 CARD16 sequenceNumber B16;
-00157 CARD32 length B32;
-00158 CARD32 screenCount B32;
-00159 CARD32 pad0 B32;
-00160 CARD32 pad1 B32;
-00161 CARD32 pad2 B32;
-00162 CARD32 pad3 B32;
-00163 CARD32 pad4 B32;
-00164 } <a class="code" href="structxDMXGetScreenCountReply.html">xDMXGetScreenCountReply</a>;
-00165 <span class="preprocessor">#define sz_xDMXGetScreenCountReply 32</span>
-00166 <span class="preprocessor"></span>
-<a name="l00168"></a><a class="code" href="structxDMXGetScreenAttributesReq.html">00168</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00169 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00170 CARD8 dmxReqType; <span class="comment">/* X_DMXGetScreenAttributes */</span>
-00171 CARD16 length B16;
-00172 CARD32 physicalScreen B32;
-00173 } <a class="code" href="structxDMXGetScreenAttributesReq.html">xDMXGetScreenAttributesReq</a>;
-00174 <span class="preprocessor">#define sz_xDMXGetScreenAttributesReq 8</span>
-00175 <span class="preprocessor"></span>
-<a name="l00177"></a><a class="code" href="structxDMXGetScreenAttributesReply.html">00177</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00178 BYTE type; <span class="comment">/* X_Reply */</span>
-00179 CARD8 unused;
-00180 CARD16 sequenceNumber B16;
-00181 CARD32 length B32;
-00182 CARD32 displayNameLength B32;
-00183 CARD32 logicalScreen B32;
-00184
-00185 CARD16 screenWindowWidth B16;
-00186 CARD16 screenWindowHeight B16;
-00187 INT16 screenWindowXoffset B16;
-00188 INT16 screenWindowYoffset B16;
-00189
-00190 CARD16 rootWindowWidth B16;
-00191 CARD16 rootWindowHeight B16;
-00192 INT16 rootWindowXoffset B16;
-00193 INT16 rootWindowYoffset B16;
-00194 INT16 rootWindowXorigin B16;
-00195 INT16 rootWindowYorigin B16;
-00196 } <a class="code" href="structxDMXGetScreenAttributesReply.html">xDMXGetScreenAttributesReply</a>;
-00197 <span class="preprocessor">#define sz_xDMXGetScreenAttributesReply 36</span>
-00198 <span class="preprocessor"></span>
-<a name="l00200"></a><a class="code" href="structxDMXChangeScreensAttributesReq.html">00200</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00201 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00202 CARD8 dmxReqType; <span class="comment">/* X_DMXChangeScreensAttributes */</span>
-00203 CARD16 length B16;
-00204 CARD32 screenCount B32;
-00205 CARD32 maskCount B32;
-00206 } <a class="code" href="structxDMXChangeScreensAttributesReq.html">xDMXChangeScreensAttributesReq</a>;
-00207 <span class="preprocessor">#define sz_xDMXChangeScreensAttributesReq 12</span>
-00208 <span class="preprocessor"></span>
-<a name="l00210"></a><a class="code" href="structxDMXChangeScreensAttributesReply.html">00210</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00211 BYTE type; <span class="comment">/* X_Reply */</span>
-00212 CARD8 unused;
-00213 CARD16 sequenceNumber B16;
-00214 CARD32 length B32;
-00215 CARD32 status B32;
-00216 CARD32 errorScreen B32;
-00217 CARD32 pad0 B32;
-00218 CARD32 pad1 B32;
-00219 CARD32 pad2 B32;
-00220 CARD32 pad3 B32;
-00221 } <a class="code" href="structxDMXChangeScreensAttributesReply.html">xDMXChangeScreensAttributesReply</a>;
-00222 <span class="preprocessor">#define sz_xDMXChangeScreensAttributesReply 32</span>
-00223 <span class="preprocessor"></span>
-<a name="l00225"></a><a class="code" href="structxDMXAddScreenReq.html">00225</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00226 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00227 CARD8 dmxReqType; <span class="comment">/* X_DMXAddScreen */</span>
-00228 CARD16 length B16;
-00229 CARD32 displayNameLength B32;
-00230 CARD32 physicalScreen B32;
-00231 CARD32 valueMask B32;
-00232 } <a class="code" href="structxDMXAddScreenReq.html">xDMXAddScreenReq</a>;
-00233 <span class="preprocessor">#define sz_xDMXAddScreenReq 16</span>
-00234 <span class="preprocessor"></span>
-<a name="l00236"></a><a class="code" href="structxDMXAddScreenReply.html">00236</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00237 BYTE type; <span class="comment">/* X_Reply */</span>
-00238 CARD8 unused;
-00239 CARD16 sequenceNumber B16;
-00240 CARD32 length B32;
-00241 CARD32 status B32;
-00242 CARD32 physicalScreen B32;
-00243 CARD32 pad0 B32;
-00244 CARD32 pad1 B32;
-00245 CARD32 pad2 B32;
-00246 CARD32 pad3 B32;
-00247 } <a class="code" href="structxDMXAddScreenReply.html">xDMXAddScreenReply</a>;
-00248 <span class="preprocessor">#define sz_xDMXAddScreenReply 32</span>
-00249 <span class="preprocessor"></span>
-<a name="l00251"></a><a class="code" href="structxDMXRemoveScreenReq.html">00251</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00252 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00253 CARD8 dmxReqType; <span class="comment">/* X_DMXRemoveScreen */</span>
-00254 CARD16 length B16;
-00255 CARD32 physicalScreen B32;
-00256 } <a class="code" href="structxDMXRemoveScreenReq.html">xDMXRemoveScreenReq</a>;
-00257 <span class="preprocessor">#define sz_xDMXRemoveScreenReq 8</span>
-00258 <span class="preprocessor"></span>
-<a name="l00260"></a><a class="code" href="structxDMXRemoveScreenReply.html">00260</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00261 BYTE type; <span class="comment">/* X_Reply */</span>
-00262 CARD8 unused;
-00263 CARD16 sequenceNumber B16;
-00264 CARD32 length B32;
-00265 CARD32 status B32;
-00266 CARD32 pad0 B32;
-00267 CARD32 pad1 B32;
-00268 CARD32 pad2 B32;
-00269 CARD32 pad3 B32;
-00270 CARD32 pad4 B32;
-00271 } <a class="code" href="structxDMXRemoveScreenReply.html">xDMXRemoveScreenReply</a>;
-00272 <span class="preprocessor">#define sz_xDMXRemoveScreenReply 32</span>
-00273 <span class="preprocessor"></span>
-<a name="l00275"></a><a class="code" href="structxDMXGetWindowAttributesReq.html">00275</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00276 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00277 CARD8 dmxReqType; <span class="comment">/* X_DMXGetWindowAttributes */</span>
-00278 CARD16 length B16;
-00279 CARD32 window B32;
-00280 } <a class="code" href="structxDMXGetWindowAttributesReq.html">xDMXGetWindowAttributesReq</a>;
-00281 <span class="preprocessor">#define sz_xDMXGetWindowAttributesReq 8</span>
-00282 <span class="preprocessor"></span>
-<a name="l00284"></a><a class="code" href="structxDMXGetWindowAttributesReply.html">00284</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00285 BYTE type; <span class="comment">/* X_Reply */</span>
-00286 CARD8 unused;
-00287 CARD16 sequenceNumber B16;
-00288 CARD32 length B32;
-00289 CARD32 screenCount B32;
-00290 CARD32 pad0 B32;
-00291 CARD32 pad1 B32;
-00292 CARD32 pad2 B32;
-00293 CARD32 pad3 B32;
-00294 CARD32 pad4 B32;
-00295 } <a class="code" href="structxDMXGetWindowAttributesReply.html">xDMXGetWindowAttributesReply</a>;
-00296 <span class="preprocessor">#define sz_xDMXGetWindowAttributesReply 32</span>
-00297 <span class="preprocessor"></span>
-<a name="l00299"></a><a class="code" href="structxDMXGetDesktopAttributesReq.html">00299</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00300 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00301 CARD8 dmxReqType; <span class="comment">/* X_DMXGetDesktopAttributes */</span>
-00302 CARD16 length B16;
-00303 } <a class="code" href="structxDMXGetDesktopAttributesReq.html">xDMXGetDesktopAttributesReq</a>;
-00304 <span class="preprocessor">#define sz_xDMXGetDesktopAttributesReq 4</span>
-00305 <span class="preprocessor"></span>
-<a name="l00307"></a><a class="code" href="structxDMXGetDesktopAttributesReply.html">00307</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00308 BYTE type; <span class="comment">/* X_Reply */</span>
-00309 CARD8 unused;
-00310 CARD16 sequenceNumber B16;
-00311 CARD32 length B32;
-00312 INT16 width;
-00313 INT16 height;
-00314 INT16 shiftX;
-00315 INT16 shiftY;
-00316 CARD32 pad0 B32;
-00317 CARD32 pad1 B32;
-00318 CARD32 pad2 B32;
-00319 CARD32 pad3 B32;
-00320 } <a class="code" href="structxDMXGetDesktopAttributesReply.html">xDMXGetDesktopAttributesReply</a>;
-00321 <span class="preprocessor">#define sz_xDMXGetDesktopAttributesReply 32</span>
-00322 <span class="preprocessor"></span>
-<a name="l00324"></a><a class="code" href="structxDMXChangeDesktopAttributesReq.html">00324</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00325 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00326 CARD8 dmxReqType; <span class="comment">/* X_DMXChangeDesktopAttributes */</span>
-00327 CARD16 length B16;
-00328 CARD32 valueMask B32;
-00329 } <a class="code" href="structxDMXChangeDesktopAttributesReq.html">xDMXChangeDesktopAttributesReq</a>;
-00330 <span class="preprocessor">#define sz_xDMXChangeDesktopAttributesReq 8</span>
-00331 <span class="preprocessor"></span>
-<a name="l00333"></a><a class="code" href="structxDMXChangeDesktopAttributesReply.html">00333</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00334 BYTE type; <span class="comment">/* X_Reply */</span>
-00335 CARD8 unused;
-00336 CARD16 sequenceNumber B16;
-00337 CARD32 length B32;
-00338 CARD32 status B32;
-00339 CARD32 pad0 B32;
-00340 CARD32 pad1 B32;
-00341 CARD32 pad2 B32;
-00342 CARD32 pad3 B32;
-00343 CARD32 pad4 B32;
-00344 } <a class="code" href="structxDMXChangeDesktopAttributesReply.html">xDMXChangeDesktopAttributesReply</a>;
-00345 <span class="preprocessor">#define sz_xDMXChangeDesktopAttributesReply 32</span>
-00346 <span class="preprocessor"></span>
-<a name="l00348"></a><a class="code" href="structxDMXGetInputCountReq.html">00348</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00349 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00350 CARD8 dmxReqType; <span class="comment">/* X_DMXGetInputCount */</span>
-00351 CARD16 length B16;
-00352 } <a class="code" href="structxDMXGetInputCountReq.html">xDMXGetInputCountReq</a>;
-00353 <span class="preprocessor">#define sz_xDMXGetInputCountReq 4</span>
-00354 <span class="preprocessor"></span>
-<a name="l00356"></a><a class="code" href="structxDMXGetInputCountReply.html">00356</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00357 BYTE type; <span class="comment">/* X_Reply */</span>
-00358 CARD8 unused;
-00359 CARD16 sequenceNumber B16;
-00360 CARD32 length B32;
-00361 CARD32 inputCount B32;
-00362 CARD32 pad0 B32;
-00363 CARD32 pad1 B32;
-00364 CARD32 pad2 B32;
-00365 CARD32 pad3 B32;
-00366 CARD32 pad4 B32;
-00367 } <a class="code" href="structxDMXGetInputCountReply.html">xDMXGetInputCountReply</a>;
-00368 <span class="preprocessor">#define sz_xDMXGetInputCountReply 32</span>
-00369 <span class="preprocessor"></span>
-<a name="l00371"></a><a class="code" href="structxDMXGetInputAttributesReq.html">00371</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00372 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00373 CARD8 dmxReqType; <span class="comment">/* X_DMXGetInputAttributes */</span>
-00374 CARD16 length B16;
-00375 CARD32 deviceId B32;
-00376 } <a class="code" href="structxDMXGetInputAttributesReq.html">xDMXGetInputAttributesReq</a>;
-00377 <span class="preprocessor">#define sz_xDMXGetInputAttributesReq 8</span>
-00378 <span class="preprocessor"></span>
-<a name="l00380"></a><a class="code" href="structxDMXGetInputAttributesReply.html">00380</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00381 BYTE type; <span class="comment">/* X_Reply */</span>
-00382 CARD8 unused;
-00383 CARD16 sequenceNumber B16;
-00384 CARD32 length B32;
-00385 CARD32 inputType B32;
-00386 CARD32 physicalScreen B32;
-00387 CARD32 physicalId B32;
-00388 CARD32 nameLength B32;
-00389 BOOL isCore;
-00390 BOOL sendsCore;
-00391 BOOL detached;
-00392 CARD8 pad0;
-00393 CARD32 pad1 B32;
-00394 } <a class="code" href="structxDMXGetInputAttributesReply.html">xDMXGetInputAttributesReply</a>;
-00395 <span class="preprocessor">#define sz_xDMXGetInputAttributesReply 32</span>
-00396 <span class="preprocessor"></span>
-<a name="l00398"></a><a class="code" href="structxDMXAddInputReq.html">00398</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00399 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00400 CARD8 dmxReqType; <span class="comment">/* X_DMXAddInput */</span>
-00401 CARD16 length B16;
-00402 CARD32 displayNameLength B32;
-00403 CARD32 valueMask;
-00404 } <a class="code" href="structxDMXAddInputReq.html">xDMXAddInputReq</a>;
-00405 <span class="preprocessor">#define sz_xDMXAddInputReq 12</span>
-00406 <span class="preprocessor"></span>
-<a name="l00408"></a><a class="code" href="structxDMXAddInputReply.html">00408</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00409 BYTE type; <span class="comment">/* X_Reply */</span>
-00410 CARD8 unused;
-00411 CARD16 sequenceNumber B16;
-00412 CARD32 length B32;
-00413 CARD32 status B32;
-00414 CARD32 physicalId B32;
-00415 CARD32 pad0 B32;
-00416 CARD32 pad1 B32;
-00417 CARD32 pad2 B32;
-00418 CARD32 pad3 B32;
-00419 } <a class="code" href="structxDMXAddInputReply.html">xDMXAddInputReply</a>;
-00420 <span class="preprocessor">#define sz_xDMXAddInputReply 32</span>
-00421 <span class="preprocessor"></span>
-<a name="l00423"></a><a class="code" href="structxDMXRemoveInputReq.html">00423</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00424 CARD8 reqType; <span class="comment">/* DMXCode */</span>
-00425 CARD8 dmxReqType; <span class="comment">/* X_DMXRemoveInput */</span>
-00426 CARD16 length B16;
-00427 CARD32 physicalId B32;
-00428 } <a class="code" href="structxDMXRemoveInputReq.html">xDMXRemoveInputReq</a>;
-00429 <span class="preprocessor">#define sz_xDMXRemoveInputReq 8</span>
-00430 <span class="preprocessor"></span>
-<a name="l00432"></a><a class="code" href="structxDMXRemoveInputReply.html">00432</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-00433 BYTE type;
-00434 CARD8 unused;
-00435 CARD16 sequenceNumber B16;
-00436 CARD32 length B32;
-00437 CARD32 status B32;
-00438 CARD32 pad0 B32;
-00439 CARD32 pad1 B32;
-00440 CARD32 pad2 B32;
-00441 CARD32 pad3 B32;
-00442 CARD32 pad4 B32;
-00443 } <a class="code" href="structxDMXRemoveInputReply.html">xDMXRemoveInputReply</a>;
-00444 <span class="preprocessor">#define sz_xDMXRemoveInputReply 32</span>
-00445 <span class="preprocessor"></span>
-00446 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxproto_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxproto_8h.html
deleted file mode 100644
index 10353e338..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxproto_8h.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxproto.h File Reference</h1>
-<p>
-<a href="dmxproto_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXAddInputReply.html">xDMXAddInputReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXAddInputReq.html">xDMXAddInputReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXAddScreenReply.html">xDMXAddScreenReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXAddScreenReq.html">xDMXAddScreenReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXChangeDesktopAttributesReply.html">xDMXChangeDesktopAttributesReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXChangeDesktopAttributesReq.html">xDMXChangeDesktopAttributesReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXChangeScreensAttributesReply.html">xDMXChangeScreensAttributesReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXChangeScreensAttributesReq.html">xDMXChangeScreensAttributesReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXForceWindowCreationReply.html">xDMXForceWindowCreationReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXForceWindowCreationReq.html">xDMXForceWindowCreationReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXGetDesktopAttributesReply.html">xDMXGetDesktopAttributesReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXGetDesktopAttributesReq.html">xDMXGetDesktopAttributesReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXGetInputAttributesReply.html">xDMXGetInputAttributesReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXGetInputAttributesReq.html">xDMXGetInputAttributesReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXGetInputCountReply.html">xDMXGetInputCountReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXGetInputCountReq.html">xDMXGetInputCountReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXGetScreenAttributesReply.html">xDMXGetScreenAttributesReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXGetScreenAttributesReq.html">xDMXGetScreenAttributesReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXGetScreenCountReply.html">xDMXGetScreenCountReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXGetScreenCountReq.html">xDMXGetScreenCountReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXGetWindowAttributesReply.html">xDMXGetWindowAttributesReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXGetWindowAttributesReq.html">xDMXGetWindowAttributesReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXQueryVersionReply.html">xDMXQueryVersionReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXQueryVersionReq.html">xDMXQueryVersionReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXRemoveInputReply.html">xDMXRemoveInputReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXRemoveInputReq.html">xDMXRemoveInputReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXRemoveScreenReply.html">xDMXRemoveScreenReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXRemoveScreenReq.html">xDMXRemoveScreenReq</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXSyncReply.html">xDMXSyncReply</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structxDMXSyncReq.html">xDMXSyncReq</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file describes the structures necessary to implement the wire protocol for the DMX protocol extension. It should be included only in files that implement the client-side (or server-side) part of the protocol (i.e., client-side applications should <b>not</b> include this file). <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8c.html
deleted file mode 100644
index d2425c3be..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8c.html
+++ /dev/null
@@ -1,378 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxscrinit.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxshadow_8h-source.html">dmxshadow.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxscrinit_8h-source.html">dmxscrinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcursor_8h-source.html">dmxcursor.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxgc_8h-source.html">dmxgc.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxgcops_8h-source.html">dmxgcops.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxwindow_8h-source.html">dmxwindow.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxpixmap_8h-source.html">dmxpixmap.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxfont_8h-source.html">dmxfont.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcmap_8h-source.html">dmxcmap.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxprop_8h-source.html">dmxprop.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxdpms_8h-source.html">dmxdpms.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxpict_8h-source.html">dmxpict.h</a>"</code><br>
-<code>#include "fb.h"</code><br>
-<code>#include "mipointer.h"</code><br>
-<code>#include "micmap.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8c.html#a9">dmxCloseScreen</a> (int idx, ScreenPtr pScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8c.html#a11">dmxBEScreenInit</a> (int idx, ScreenPtr pScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8c.html#a12">dmxScreenInit</a> (int idx, ScreenPtr pScreen, int argc, char *argv[])</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8c.html#a13">dmxBECloseScreen</a> (ScreenPtr pScreen)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8c.html#a2">dmxGCPrivateIndex</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8c.html#a3">dmxWinPrivateIndex</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8c.html#a4">dmxFontPrivateIndex</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8c.html#a5">dmxScreenPrivateIndex</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8c.html#a6">dmxColormapPrivateIndex</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8c.html#a7">dmxPictPrivateIndex</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8c.html#a8">dmxGlyphSetPrivateIndex</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides support for screen initialization.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a13" doxytag="dmxscrinit.c::dmxBECloseScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBECloseScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Close the <em>pScreen</em> resources on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxscrinit.c::dmxBEScreenInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBEScreenInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>idx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the parts of screen <em>idx</em> that require access to the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxscrinit.c::dmxCloseScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxCloseScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>idx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Close screen number <em>idx</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxscrinit.c::dmxScreenInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxScreenInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>idx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>argc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>argv</em>[]</td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize screen number <em>idx</em>. </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a6" doxytag="dmxscrinit.c::dmxColormapPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxscrinit_8c.html#a6">dmxColormapPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for Colormaps </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxscrinit.c::dmxFontPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxscrinit_8c.html#a4">dmxFontPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for Fonts </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxscrinit.c::dmxGCPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxscrinit_8c.html#a2">dmxGCPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for GCs </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxscrinit.c::dmxGlyphSetPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxscrinit_8c.html#a8">dmxGlyphSetPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for GlyphSets </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxscrinit.c::dmxPictPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxscrinit_8c.html#a7">dmxPictPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for Picts </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxscrinit.c::dmxScreenPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxscrinit_8h.html#a0">dmxScreenPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for Screens </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxscrinit.c::dmxWinPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxwindow_8h.html#a10">dmxWinPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for Windows </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8h-source.html
deleted file mode 100644
index ab7b22fd3..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8h-source.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxscrinit.h</h1><a href="dmxscrinit_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001-2004 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00032 <span class="comment"> * David H. Dawes &lt;dawes@xfree86.org&gt;</span>
-00033 <span class="comment"> *</span>
-00034 <span class="comment"> */</span>
-00035
-00039 <span class="preprocessor">#ifndef DMXSCRINIT_H</span>
-00040 <span class="preprocessor"></span><span class="preprocessor">#define DMXSCRINIT_H</span>
-00041 <span class="preprocessor"></span>
-00042 <span class="preprocessor">#include "scrnintstr.h"</span>
-00043
-<a name="l00045"></a><a class="code" href="dmxscrinit_8h.html#a0">00045</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxscrinit_8c.html#a5">dmxScreenPrivateIndex</a>;
-00046
-00047 <span class="keyword">extern</span> Bool <a class="code" href="dmxscrinit_8c.html#a12">dmxScreenInit</a>(<span class="keywordtype">int</span> idx, ScreenPtr pScreen, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[]);
-00048
-00049 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxscrinit_8c.html#a11">dmxBEScreenInit</a>(<span class="keywordtype">int</span> idx, ScreenPtr pScreen);
-00050 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxscrinit_8c.html#a13">dmxBECloseScreen</a>(ScreenPtr pScreen);
-00051
-00052 <span class="preprocessor">#endif </span><span class="comment">/* DMXSCRINIT_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8h.html
deleted file mode 100644
index 72415ef97..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxscrinit_8h.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxscrinit.h File Reference</h1><code>#include "scrnintstr.h"</code><br>
-
-<p>
-<a href="dmxscrinit_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8h.html#a1">dmxScreenInit</a> (int idx, ScreenPtr pScreen, int argc, char *argv[])</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8h.html#a2">dmxBEScreenInit</a> (int idx, ScreenPtr pScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8h.html#a3">dmxBECloseScreen</a> (ScreenPtr pScreen)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxscrinit_8h.html#a0">dmxScreenPrivateIndex</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for screen initialization. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxscrinit_8c.html">dmxscrinit.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxscrinit.h::dmxBECloseScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBECloseScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Close the <em>pScreen</em> resources on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxscrinit.h::dmxBEScreenInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxBEScreenInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>idx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the parts of screen <em>idx</em> that require access to the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxscrinit.h::dmxScreenInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxScreenInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>idx</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>argc</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>char *&nbsp;</td>
- <td class="mdname" nowrap> <em>argv</em>[]</td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize screen number <em>idx</em>. </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxscrinit.h::dmxScreenPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxscrinit_8h.html#a0">dmxScreenPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for Screens </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8c.html
deleted file mode 100644
index 0db2bfa8b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8c.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxshadow.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxshadow_8h-source.html">dmxshadow.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxshadow_8c.html#a0">dmxShadowUpdateProc</a> (ScreenPtr pScreen, shadowBufPtr pBuf)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides support for the shadow frame buffer.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxshadow.c::dmxShadowUpdateProc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxShadowUpdateProc </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>shadowBufPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pBuf</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Update the screen from the shadow frame buffer. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8h-source.html
deleted file mode 100644
index 2253c350b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8h-source.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxshadow.h</h1><a href="dmxshadow_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00032 <span class="comment"> * David H. Dawes &lt;dawes@xfree86.org&gt;</span>
-00033 <span class="comment"> *</span>
-00034 <span class="comment"> */</span>
-00035
-00039 <span class="preprocessor">#ifndef DMXSHADOW_H</span>
-00040 <span class="preprocessor"></span><span class="preprocessor">#define DMXSHADOW_H</span>
-00041 <span class="preprocessor"></span>
-00042 <span class="preprocessor">#include "shadow.h"</span>
-00043 <span class="preprocessor">#include "scrnintstr.h"</span>
-00044
-00045 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxshadow_8c.html#a0">dmxShadowUpdateProc</a>(ScreenPtr pScreen, shadowBufPtr pBuf);
-00046
-00047 <span class="preprocessor">#endif </span><span class="comment">/* DMXSHADOW_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8h.html
deleted file mode 100644
index 05e148ad3..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxshadow_8h.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxshadow.h File Reference</h1><code>#include "shadow.h"</code><br>
-<code>#include "scrnintstr.h"</code><br>
-
-<p>
-<a href="dmxshadow_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxshadow_8h.html#a0">dmxShadowUpdateProc</a> (ScreenPtr pScreen, shadowBufPtr pBuf)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for shadow framebuffer support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxshadow_8c.html">dmxshadow.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxshadow.h::dmxShadowUpdateProc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxShadowUpdateProc </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>shadowBufPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pBuf</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Update the screen from the shadow frame buffer. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8c.html
deleted file mode 100644
index 761748dae..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8c.html
+++ /dev/null
@@ -1,230 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxsigio.c File Reference</h1><code>#include "inputstr.h"</code><br>
-<code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsigio_8h-source.html">dmxsigio.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxevents_8h-source.html">dmxevents.h</a>"</code><br>
-<code>#include &lt;signal.h&gt;</code><br>
-<code>#include &lt;unistd.h&gt;</code><br>
-<code>#include &lt;sys/fcntl.h&gt;</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsigio_8c.html#a5">dmxSigioBlock</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsigio_8c.html#a6">dmxSigioUnblock</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsigio_8c.html#a11">dmxSigioEnableInput</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsigio_8c.html#a12">dmxSigioDisableInput</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsigio_8c.html#a13">dmxSigioRegister</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput, int fd)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsigio_8c.html#a14">dmxSigioUnregister</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Provides an interface for handling SIGIO signals for input devices.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a5" doxytag="dmxsigio.c::dmxSigioBlock" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSigioBlock </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Block SIGIO handling. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxsigio.c::dmxSigioDisableInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSigioDisableInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Disable SIGIO handling. This removes the hanlder from the OS. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxsigio.c::dmxSigioEnableInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSigioEnableInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Enable SIGIO handling. This instantiates the handler with the OS. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxsigio.c::dmxSigioRegister" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSigioRegister </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxInput</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>fd</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make a note that the input device described in <em>dmxInput</em> will be using the file descriptor <em>fd</em> for SIGIO signals. Calls AddEnabledDevice ifi SIGIO handling has been enabled with <a class="el" href="dmxsigio_8c.html#a11">dmxSigioEnableInput()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxsigio.c::dmxSigioUnblock" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSigioUnblock </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Unblock SIGIO handling. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxsigio.c::dmxSigioUnregister" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSigioUnregister </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Remove the notes that <em>dmxInput</em> is using any file descriptors for SIGIO signals. Calls RemoveEnabledDevice. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8h-source.html
deleted file mode 100644
index 4f41eb80e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8h-source.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxsigio.h</h1><a href="dmxsigio_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXSIGIO_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXSIGIO_H_</span>
-00040 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxsigio_8c.html#a5">dmxSigioBlock</a>(<span class="keywordtype">void</span>);
-00041 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxsigio_8c.html#a6">dmxSigioUnblock</a>(<span class="keywordtype">void</span>);
-00042 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxsigio_8c.html#a11">dmxSigioEnableInput</a>(<span class="keywordtype">void</span>);
-00043 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxsigio_8c.html#a12">dmxSigioDisableInput</a>(<span class="keywordtype">void</span>);
-00044 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxsigio_8c.html#a13">dmxSigioRegister</a>(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput, <span class="keywordtype">int</span> fd);
-00045 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxsigio_8c.html#a14">dmxSigioUnregister</a>(<a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput);
-00046 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8h.html
deleted file mode 100644
index 1e55b7b83..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsigio_8h.html
+++ /dev/null
@@ -1,226 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxsigio.h File Reference</h1>
-<p>
-<a href="dmxsigio_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsigio_8h.html#a0">dmxSigioBlock</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsigio_8h.html#a1">dmxSigioUnblock</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsigio_8h.html#a2">dmxSigioEnableInput</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsigio_8h.html#a3">dmxSigioDisableInput</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsigio_8h.html#a4">dmxSigioRegister</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput, int fd)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsigio_8h.html#a5">dmxSigioUnregister</a> (<a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *dmxInput)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to SIGIO handling support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxsigio_8c.html">dmxsigio.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxsigio.h::dmxSigioBlock" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSigioBlock </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Block SIGIO handling. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxsigio.h::dmxSigioDisableInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSigioDisableInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Disable SIGIO handling. This removes the hanlder from the OS. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxsigio.h::dmxSigioEnableInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSigioEnableInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Enable SIGIO handling. This instantiates the handler with the OS. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxsigio.h::dmxSigioRegister" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSigioRegister </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxInput</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>fd</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Make a note that the input device described in <em>dmxInput</em> will be using the file descriptor <em>fd</em> for SIGIO signals. Calls AddEnabledDevice ifi SIGIO handling has been enabled with <a class="el" href="dmxsigio_8c.html#a11">dmxSigioEnableInput()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxsigio.h::dmxSigioUnblock" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSigioUnblock </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Unblock SIGIO handling. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxsigio.h::dmxSigioUnregister" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSigioUnregister </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxInput</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Remove the notes that <em>dmxInput</em> is using any file descriptors for SIGIO signals. Calls RemoveEnabledDevice. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8c.html
deleted file mode 100644
index 9a9ecfc65..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8c.html
+++ /dev/null
@@ -1,274 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxstat.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxstat_8h-source.html">dmxstat.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<code>#include "Xos.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXStatAvg.html">_DMXStatAvg</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXStatInfo.html">_DMXStatInfo</a></td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXStatAvg.html">_DMXStatAvg</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a0">DMXStatAvg</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a6">dmxStatActivate</a> (const char *interval, const char *displays)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a7">dmxStatAlloc</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a8">dmxStatFree</a> (<a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a> *pt)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a10">dmxStatSync</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, struct timeval *stop, struct timeval *start, unsigned long pending)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a12">dmxStatInit</a> (void)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a1">dmxStatInterval</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The DMX server code is written to call <a class="el" href="dmxsync_8c.html#a9">dmxSync()</a> whenever an XSync() might be necessary. However, since XSync() requires a two way communication with the other X server, eliminating unnecessary XSync() calls is a key performance optimization. Support for this optimization is provided in #dmxsync.c. This file provides routines that evaluate this optimization by counting the number of XSync() calls and monitoring their latency. This functionality can be turned on using the -stat command-line parameter.<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxstat.c::DMXStatAvg" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXStatAvg.html">_DMXStatAvg</a> <a class="el" href="struct__DMXStatAvg.html">DMXStatAvg</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Used to compute a running average of value. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a6" doxytag="dmxstat.c::dmxStatActivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxStatActivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>interval</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>displays</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn on XSync statistic gathering and printing. Print every <em>interval</em> seconds, with lines for the first <em>displays</em>. If <em>interval</em> is NULL, 1 will be used. If <em>displays</em> is NULL, 0 will be used (meaning a line for every display will be printed). Note that this function takes string arguments because it will usually be called from <a class="el" href="dmxinit_8c.html#a40">ddxProcessArgument</a> in #dmxinit.c. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxstat.c::dmxStatAlloc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a>* dmxStatAlloc </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Allocate a <em>DMXStatInfo</em> structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxstat.c::dmxStatFree" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxStatFree </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pt</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free the memory used by a <em>DMXStatInfo</em> structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxstat.c::dmxStatInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxStatInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Try to initialize the statistic gathering and printing routines. Initialization only takes place if <a class="el" href="dmxstat_8h.html#a6">dmxStatActivate</a> has already been called. We don't need the same generation protection that we used in dmxSyncInit because our timer is always on a queue -- hence, server generation will always free it. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxstat.c::dmxStatSync" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxStatSync </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>struct timeval *&nbsp;</td>
- <td class="mdname" nowrap> <em>stop</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>struct timeval *&nbsp;</td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>pending</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Note that a XSync() was just done on <em>dmxScreen</em> with the <em>start</em> and <em>stop</em> times (from gettimeofday()) and the number of pending-but-not-yet-processed XSync requests. This routine is called from #dmxDoSync in #dmxsync.c </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a1" doxytag="dmxstat.c::dmxStatInterval" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxstat_8h.html#a5">dmxStatInterval</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Only for <a class="el" href="dmxstat_8c.html">dmxstat.c</a> and <a class="el" href="dmxsync_8c.html">dmxsync.c</a> </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8h-source.html
deleted file mode 100644
index d7579a5d8..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8h-source.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxstat.h</h1><a href="dmxstat_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXSTAT_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXSTAT_H_</span>
-00040 <span class="preprocessor"></span>
-<a name="l00041"></a><a class="code" href="dmxstat_8h.html#a0">00041</a> <span class="preprocessor">#define DMX_STAT_LENGTH 10 </span>
-<a name="l00042"></a><a class="code" href="dmxstat_8h.html#a1">00042</a> <span class="preprocessor">#define DMX_STAT_INTERVAL 1000 </span>
-<a name="l00043"></a><a class="code" href="dmxstat_8h.html#a2">00043</a> <span class="preprocessor">#define DMX_STAT_BINS 3 </span>
-<a name="l00044"></a><a class="code" href="dmxstat_8h.html#a3">00044</a> <span class="preprocessor">#define DMX_STAT_BIN0 10000 </span>
-<a name="l00045"></a><a class="code" href="dmxstat_8h.html#a4">00045</a> <span class="preprocessor">#define DMX_STAT_BINMULT 100 </span>
-<a name="l00047"></a><a class="code" href="dmxstat_8h.html#a5">00047</a> <span class="preprocessor">extern int dmxStatInterval; </span>
-00048 <span class="preprocessor">extern void dmxStatActivate(const char *interval, const char *displays);</span>
-00049 <span class="preprocessor"></span><span class="keyword">extern</span> <a class="code" href="struct__DMXStatInfo.html">DMXStatInfo</a> *<a class="code" href="dmxstat_8c.html#a7">dmxStatAlloc</a>(<span class="keywordtype">void</span>);
-00050 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxstat_8c.html#a8">dmxStatFree</a>(<a class="code" href="struct__DMXStatInfo.html">DMXStatInfo</a> *);
-00051 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxstat_8c.html#a12">dmxStatInit</a>(<span class="keywordtype">void</span>);
-00052 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxstat_8c.html#a10">dmxStatSync</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen,
-00053 <span class="keyword">struct</span> timeval *stop, <span class="keyword">struct</span> timeval *start,
-00054 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> pending);
-00055
-00056 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8h.html
deleted file mode 100644
index d4fcb0d9c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxstat_8h.html
+++ /dev/null
@@ -1,364 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxstat.h File Reference</h1>
-<p>
-<a href="dmxstat_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8h.html#a0">DMX_STAT_LENGTH</a>&nbsp;&nbsp;&nbsp;10</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8h.html#a1">DMX_STAT_INTERVAL</a>&nbsp;&nbsp;&nbsp;1000</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8h.html#a2">DMX_STAT_BINS</a>&nbsp;&nbsp;&nbsp;3</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8h.html#a3">DMX_STAT_BIN0</a>&nbsp;&nbsp;&nbsp;10000</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8h.html#a4">DMX_STAT_BINMULT</a>&nbsp;&nbsp;&nbsp;100</td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8h.html#a6">dmxStatActivate</a> (const char *interval, const char *displays)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8h.html#a7">dmxStatAlloc</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8h.html#a8">dmxStatFree</a> (<a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a> *)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8h.html#a9">dmxStatInit</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8h.html#a10">dmxStatSync</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, struct timeval *stop, struct timeval *start, unsigned long pending)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8h.html#a5">dmxStatInterval</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for statistic gathering interface. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxstat_8c.html">dmxstat.c</a></dd></dl>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="a3" doxytag="dmxstat.h::DMX_STAT_BIN0" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_STAT_BIN0&nbsp;&nbsp;&nbsp;10000
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-us for bin[0] </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="dmxstat.h::DMX_STAT_BINMULT" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_STAT_BINMULT&nbsp;&nbsp;&nbsp;100
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-multiplier for next bin[] </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxstat.h::DMX_STAT_BINS" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_STAT_BINS&nbsp;&nbsp;&nbsp;3
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-number of bins </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxstat.h::DMX_STAT_INTERVAL" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_STAT_INTERVAL&nbsp;&nbsp;&nbsp;1000
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-msec between printouts </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxstat.h::DMX_STAT_LENGTH" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_STAT_LENGTH&nbsp;&nbsp;&nbsp;10
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-number of events for moving average </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a6" doxytag="dmxstat.h::dmxStatActivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxStatActivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>interval</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>displays</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn on XSync statistic gathering and printing. Print every <em>interval</em> seconds, with lines for the first <em>displays</em>. If <em>interval</em> is NULL, 1 will be used. If <em>displays</em> is NULL, 0 will be used (meaning a line for every display will be printed). Note that this function takes string arguments because it will usually be called from <a class="el" href="dmxinit_8c.html#a40">ddxProcessArgument</a> in #dmxinit.c. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxstat.h::dmxStatAlloc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a>* dmxStatAlloc </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Allocate a <em>DMXStatInfo</em> structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxstat.h::dmxStatFree" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxStatFree </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pt</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free the memory used by a <em>DMXStatInfo</em> structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxstat.h::dmxStatInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxStatInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Try to initialize the statistic gathering and printing routines. Initialization only takes place if <a class="el" href="dmxstat_8h.html#a6">dmxStatActivate</a> has already been called. We don't need the same generation protection that we used in dmxSyncInit because our timer is always on a queue -- hence, server generation will always free it. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxstat.h::dmxStatSync" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxStatSync </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>struct timeval *&nbsp;</td>
- <td class="mdname" nowrap> <em>stop</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>struct timeval *&nbsp;</td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>pending</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Note that a XSync() was just done on <em>dmxScreen</em> with the <em>start</em> and <em>stop</em> times (from gettimeofday()) and the number of pending-but-not-yet-processed XSync requests. This routine is called from #dmxDoSync in #dmxsync.c </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a5" doxytag="dmxstat.h::dmxStatInterval" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxstat_8h.html#a5">dmxStatInterval</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Only for <a class="el" href="dmxstat_8c.html">dmxstat.c</a> and <a class="el" href="dmxsync_8c.html">dmxsync.c</a> </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8c.html
deleted file mode 100644
index 76a940dd9..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8c.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxsync.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxstat_8h-source.html">dmxstat.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<code>#include &lt;sys/time.h&gt;</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsync_8c.html#a7">dmxSyncActivate</a> (const char *interval)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsync_8c.html#a8">dmxSyncInit</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsync_8c.html#a9">dmxSync</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, Bool now)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The DMX server code is written to call <a class="el" href="dmxsync_8c.html#a9">dmxSync()</a> whenever an XSync() might be necessary. However, since XSync() requires a two way communication with the other X server, eliminating unnecessary XSync() calls is a key performance optimization. Support for this optimization is provided here. Statistics about XSync() calls and latency are gathered in #dmxstat.c.<p>
-During the initial conversion from calling XSync() immediately to the XSync() batching method implemented in this file, it was noted that, out of more than 300 <em>x11perf</em> tests, 8 tests became more than 100 times faster, with 68 more than 50X faster, 114 more than 10X faster, and 181 more than 2X faster.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a9" doxytag="dmxsync.c::dmxSync" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSync </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Bool&nbsp;</td>
- <td class="mdname" nowrap> <em>now</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Request an XSync() to the display used by <em>dmxScreen</em>. If <em>now</em> is TRUE, call XSync() immediately instead of waiting for the next XSync() batching point. Note that if XSync() batching was deselected with <a class="el" href="dmxsync_8c.html#a7">dmxSyncActivate()</a> before <a class="el" href="dmxsync_8c.html#a8">dmxSyncInit()</a> was called, then no XSync() batching is performed and this function always calles XSync() immediately.<p>
-(Note that this function uses TimerSet but works correctly in the face of a server generation. See the source for details.)<p>
-If <em>dmxScreen</em> is <em>NULL</em>, then all pending syncs will be flushed immediately. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxsync.c::dmxSyncActivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSyncActivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>interval</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Request the XSync() batching optimization with the specified <em>interval</em> (in mS). If the <em>interval</em> is 0, 100mS is used. If the <em>interval</em> is less than 0, then the XSync() batching optimization is not requested (e.g., so the -syncbatch -1 command line option can turn off the default 100mS XSync() batching).<p>
-Note that the parameter to this routine is a string, since it will usually be called from <a class="el" href="dmxinit_8c.html#a40">ddxProcessArgument</a> in #dmxinit.c </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxsync.c::dmxSyncInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSyncInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the XSync() batching optimization, but only if <a class="el" href="dmxsync_8h.html#a0">dmxSyncActivate</a> was last called with a non-negative value. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8h-source.html
deleted file mode 100644
index a8c4f0d11..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8h-source.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxsync.h</h1><a href="dmxsync_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _DMXSYNC_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _DMXSYNC_H_</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxsync_8c.html#a7">dmxSyncActivate</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *interval);
-00042 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxsync_8c.html#a8">dmxSyncInit</a>(<span class="keywordtype">void</span>);
-00043 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxsync_8c.html#a9">dmxSync</a>(<a class="code" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, Bool now);
-00044 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8h.html
deleted file mode 100644
index 53edcef9c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxsync_8h.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxsync.h File Reference</h1>
-<p>
-<a href="dmxsync_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsync_8h.html#a0">dmxSyncActivate</a> (const char *interval)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsync_8h.html#a1">dmxSyncInit</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsync_8h.html#a2">dmxSync</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, Bool now)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for sync support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxsync_8c.html">dmxsync.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a2" doxytag="dmxsync.h::dmxSync" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSync </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Bool&nbsp;</td>
- <td class="mdname" nowrap> <em>now</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Request an XSync() to the display used by <em>dmxScreen</em>. If <em>now</em> is TRUE, call XSync() immediately instead of waiting for the next XSync() batching point. Note that if XSync() batching was deselected with <a class="el" href="dmxsync_8c.html#a7">dmxSyncActivate()</a> before <a class="el" href="dmxsync_8c.html#a8">dmxSyncInit()</a> was called, then no XSync() batching is performed and this function always calles XSync() immediately.<p>
-(Note that this function uses TimerSet but works correctly in the face of a server generation. See the source for details.)<p>
-If <em>dmxScreen</em> is <em>NULL</em>, then all pending syncs will be flushed immediately. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxsync.h::dmxSyncActivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSyncActivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>interval</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Request the XSync() batching optimization with the specified <em>interval</em> (in mS). If the <em>interval</em> is 0, 100mS is used. If the <em>interval</em> is less than 0, then the XSync() batching optimization is not requested (e.g., so the -syncbatch -1 command line option can turn off the default 100mS XSync() batching).<p>
-Note that the parameter to this routine is a string, since it will usually be called from <a class="el" href="dmxinit_8c.html#a40">ddxProcessArgument</a> in #dmxinit.c </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxsync.h::dmxSyncInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSyncInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the XSync() batching optimization, but only if <a class="el" href="dmxsync_8h.html#a0">dmxSyncActivate</a> was last called with a non-negative value. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8c.html
deleted file mode 100644
index a0f20c462..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8c.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxvisual.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxvisual_8h-source.html">dmxvisual.h</a>"</code><br>
-<code>#include "scrnintstr.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Visual *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxvisual_8c.html#a0">dmxLookupVisual</a> (ScreenPtr pScreen, VisualPtr pVisual)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Visual *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxvisual_8c.html#a1">dmxLookupVisualFromID</a> (ScreenPtr pScreen, VisualID vid)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Colormap&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxvisual_8c.html#a2">dmxColormapFromDefaultVisual</a> (ScreenPtr pScreen, Visual *visual)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides support for visuals.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a2" doxytag="dmxvisual.c::dmxColormapFromDefaultVisual" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Colormap dmxColormapFromDefaultVisual </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Visual *&nbsp;</td>
- <td class="mdname" nowrap> <em>visual</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the colormap for the <em>visual</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxvisual.c::dmxLookupVisual" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Visual* dmxLookupVisual </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>VisualPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pVisual</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the visual that matched <em>pVisual</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxvisual.c::dmxLookupVisualFromID" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Visual* dmxLookupVisualFromID </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>VisualID&nbsp;</td>
- <td class="mdname" nowrap> <em>vid</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the visual that matched the <em>vid</em>. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8h-source.html
deleted file mode 100644
index cda02947e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8h-source.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxvisual.h</h1><a href="dmxvisual_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef DMXVISUAL_H</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define DMXVISUAL_H</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="preprocessor">#include "scrnintstr.h"</span>
-00042
-00043 <span class="keyword">extern</span> Visual *<a class="code" href="dmxvisual_8c.html#a0">dmxLookupVisual</a>(ScreenPtr pScreen, VisualPtr pVisual);
-00044 <span class="keyword">extern</span> Visual *<a class="code" href="dmxvisual_8c.html#a1">dmxLookupVisualFromID</a>(ScreenPtr pScreen, VisualID vid);
-00045 <span class="keyword">extern</span> Colormap <a class="code" href="dmxvisual_8c.html#a2">dmxColormapFromDefaultVisual</a>(ScreenPtr pScreen,
-00046 Visual *visual);
-00047
-00048 <span class="preprocessor">#endif </span><span class="comment">/* DMXVISUAL_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8h.html
deleted file mode 100644
index d56bb1c9a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxvisual_8h.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxvisual.h File Reference</h1><code>#include "scrnintstr.h"</code><br>
-
-<p>
-<a href="dmxvisual_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Visual *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxvisual_8h.html#a0">dmxLookupVisual</a> (ScreenPtr pScreen, VisualPtr pVisual)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Visual *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxvisual_8h.html#a1">dmxLookupVisualFromID</a> (ScreenPtr pScreen, VisualID vid)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Colormap&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxvisual_8h.html#a2">dmxColormapFromDefaultVisual</a> (ScreenPtr pScreen, Visual *visual)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for visual support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxvisual_8c.html">dmxvisual.c</a></dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a2" doxytag="dmxvisual.h::dmxColormapFromDefaultVisual" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Colormap dmxColormapFromDefaultVisual </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Visual *&nbsp;</td>
- <td class="mdname" nowrap> <em>visual</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the colormap for the <em>visual</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="dmxvisual.h::dmxLookupVisual" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Visual* dmxLookupVisual </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>VisualPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pVisual</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the visual that matched <em>pVisual</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxvisual.h::dmxLookupVisualFromID" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Visual* dmxLookupVisualFromID </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>VisualID&nbsp;</td>
- <td class="mdname" nowrap> <em>vid</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the visual that matched the <em>vid</em>. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8c.html
deleted file mode 100644
index ef3509d3c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8c.html
+++ /dev/null
@@ -1,865 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxwindow.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxwindow_8h-source.html">dmxwindow.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxpixmap_8h-source.html">dmxpixmap.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcmap_8h-source.html">dmxcmap.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxvisual_8h-source.html">dmxvisual.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinput_8h-source.html">dmxinput.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxextension_8h-source.html">dmxextension.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxpict_8h-source.html">dmxpict.h</a>"</code><br>
-<code>#include "windowstr.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a3">dmxInitWindow</a> (ScreenPtr pScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a5">dmxResizeScreenWindow</a> (ScreenPtr pScreen, int x, int y, int w, int h)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a6">dmxResizeRootWindow</a> (WindowPtr pRoot, int x, int y, int w, int h)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a9">dmxCreateAndRealizeWindow</a> (WindowPtr pWindow, Bool doSync)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a10">dmxCreateWindow</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a11">dmxBEDestroyWindow</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a12">dmxDestroyWindow</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a13">dmxPositionWindow</a> (WindowPtr pWindow, int x, int y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a14">dmxChangeWindowAttributes</a> (WindowPtr pWindow, unsigned long mask)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a15">dmxRealizeWindow</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a16">dmxUnrealizeWindow</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a17">dmxRestackWindow</a> (WindowPtr pWindow, WindowPtr pOldNextSib)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a19">dmxWindowExposures</a> (WindowPtr pWindow, RegionPtr prgn, RegionPtr other_exposed)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a20">dmxPaintWindowBackground</a> (WindowPtr pWindow, RegionPtr pRegion, int what)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a21">dmxPaintWindowBorder</a> (WindowPtr pWindow, RegionPtr pRegion, int what)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a22">dmxCopyWindow</a> (WindowPtr pWindow, DDXPointRec ptOldOrg, RegionPtr prgnSrc)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a23">dmxResizeWindow</a> (WindowPtr pWindow, int x, int y, unsigned int w, unsigned int h, WindowPtr pSib)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a24">dmxReparentWindow</a> (WindowPtr pWindow, WindowPtr pPriorParent)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a25">dmxChangeBorderWidth</a> (WindowPtr pWindow, unsigned int width)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8c.html#a26">dmxSetShape</a> (WindowPtr pWindow)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file provides support for window-related functions.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a11" doxytag="dmxwindow.c::dmxBEDestroyWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEDestroyWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy <em>pWindow</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="dmxwindow.c::dmxChangeBorderWidth" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxChangeBorderWidth </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>width</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change border width for <em>pWindow</em> to <em>width</em> pixels. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxwindow.c::dmxChangeWindowAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxChangeWindowAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the window attributes of <em>pWindow</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="dmxwindow.c::dmxCopyWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCopyWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointRec&nbsp;</td>
- <td class="mdname" nowrap> <em>ptOldOrg</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>RegionPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>prgnSrc</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Move <em>pWindow</em> on the back-end server. Determine whether or not it is on or offscreen, and realize it if it is newly on screen and the lazy window creation optimization is enabled. </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="dmxwindow.c::dmxCreateAndRealizeWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCreateAndRealizeWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Bool&nbsp;</td>
- <td class="mdname" nowrap> <em>doSync</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This function handles lazy window creation and realization. Window creation is handled by <a class="el" href="dmxwindow_8c.html#a8">dmxCreateNonRootWindow()</a>. It also handles any stacking changes that have occured since the window was originally created by calling <a class="el" href="dmxwindow_8c.html#a0">dmxDoRestackWindow()</a>. If the window is shaped, the shape is set on the back-end server by calling <a class="el" href="dmxwindow_8c.html#a2">dmxDoSetShape()</a>, and if the window has pictures (from RENDER) associated with it, those pictures are created on the back-end server by calling <a class="el" href="dmxpict_8c.html#a18">dmxCreatePictureList()</a>. If <em>doSync</em> is TRUE, then <a class="el" href="dmxsync_8c.html#a9">dmxSync()</a> is called. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="dmxwindow.c::dmxCreateWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxCreateWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create <em>pWindow</em> on the back-end server. If the lazy window creation optimization is enabled, then the actual creation and realization of the window is handled by <a class="el" href="dmxwindow_8c.html#a9">dmxCreateAndRealizeWindow()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxwindow.c::dmxDestroyWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxDestroyWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy <em>pWindow</em> on the back-end server. If any RENDER pictures were created, destroy them as well. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxwindow.c::dmxInitWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxInitWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the private area for the window functions. </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="dmxwindow.c::dmxPaintWindowBackground" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPaintWindowBackground </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>RegionPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pRegion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>what</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Paint background of <em>pWindow</em> in <em>pRegion</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="dmxwindow.c::dmxPaintWindowBorder" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPaintWindowBorder </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>RegionPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pRegion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>what</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Paint window border for <em>pWindow</em> in <em>pRegion</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="dmxwindow.c::dmxPositionWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxPositionWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the position of <em>pWindow</em> to be <em>x</em>, <em>y</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmxwindow.c::dmxRealizeWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxRealizeWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Realize <em>pWindow</em> on the back-end server. If the lazy window creation optimization is enabled, the window is only realized when it at least partially overlaps the screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="dmxwindow.c::dmxReparentWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxReparentWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pPriorParent</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Reparent <em>pWindow</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxwindow.c::dmxResizeRootWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxResizeRootWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pRoot</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the location and size of the "root" window. Called from #dmxReconfigureRootWindow(). </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxwindow.c::dmxResizeScreenWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxResizeScreenWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the location and size of the "screen" window. Called from #dmxReconfigureScreenWindow(). </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxwindow.c::dmxResizeWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxResizeWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSib</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Resize <em>pWindow</em> on the back-end server. Determine whether or not it is on or offscreen, and realize it if it is newly on screen and the lazy window creation optimization is enabled. </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxwindow.c::dmxRestackWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxRestackWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pOldNextSib</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Handle window restacking. The actual restacking occurs in <a class="el" href="dmxwindow_8c.html#a0">dmxDoRestackWindow()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="dmxwindow.c::dmxSetShape" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSetShape </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set shape of <em>pWindow</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxwindow.c::dmxUnrealizeWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxUnrealizeWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Unrealize <em>pWindow</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="dmxwindow.c::dmxWindowExposures" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxWindowExposures </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>RegionPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>prgn</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>RegionPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>other_exposed</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Handle exposures on <em>pWindow</em>. Since window exposures are handled in DMX, the events that are generated by the back-end server are redundant, so we eat them here. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8h-source.html
deleted file mode 100644
index a1bbda691..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8h-source.html
+++ /dev/null
@@ -1,165 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxwindow.h</h1><a href="dmxwindow_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001-2004 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Kevin E. Martin &lt;kem@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef DMXWINDOW_H</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define DMXWINDOW_H</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="preprocessor">#include "windowstr.h"</span>
-00042
-<a name="l00044"></a><a class="code" href="struct__dmxWinPriv.html">00044</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__dmxWinPriv.html">_dmxWinPriv</a> {
-00045 Window window;
-00046 Bool offscreen;
-00047 Bool mapped;
-00048 Bool restacked;
-00049 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> attribMask;
-00050 Colormap cmap;
-00051 Visual *visual;
-00052 <span class="preprocessor">#ifdef SHAPE</span>
-00053 <span class="preprocessor"></span> Bool isShaped;
-00054 <span class="preprocessor">#endif</span>
-00055 <span class="preprocessor"></span><span class="preprocessor">#ifdef RENDER</span>
-00056 <span class="preprocessor"></span> Bool hasPict;
-00057 <span class="preprocessor">#endif</span>
-00058 <span class="preprocessor"></span><span class="preprocessor">#ifdef GLXEXT</span>
-00059 <span class="preprocessor"></span> <span class="keywordtype">void</span> *swapGroup;
-00060 <span class="keywordtype">int</span> barrier;
-00061 void (*windowDestroyed)(WindowPtr);
-00062 void (*windowUnmapped)(WindowPtr);
-00063 <span class="preprocessor">#endif</span>
-00064 <span class="preprocessor"></span>} <a class="code" href="struct__dmxWinPriv.html">dmxWinPrivRec</a>, *<a class="code" href="struct__dmxWinPriv.html">dmxWinPrivPtr</a>;
-00065
-00066
-00067 <span class="keyword">extern</span> Bool <a class="code" href="dmxwindow_8c.html#a3">dmxInitWindow</a>(ScreenPtr pScreen);
-00068
-00069 <span class="keyword">extern</span> Window dmxCreateRootWindow(WindowPtr pWindow);
-00070
-00071 <span class="keyword">extern</span> <span class="keywordtype">void</span> dmxGetDefaultWindowAttributes(WindowPtr pWindow,
-00072 Colormap *cmap,
-00073 Visual **visual);
-00074 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxwindow_8c.html#a9">dmxCreateAndRealizeWindow</a>(WindowPtr pWindow, Bool doSync);
-00075
-00076 <span class="keyword">extern</span> Bool <a class="code" href="dmxwindow_8c.html#a10">dmxCreateWindow</a>(WindowPtr pWindow);
-00077 <span class="keyword">extern</span> Bool <a class="code" href="dmxwindow_8c.html#a12">dmxDestroyWindow</a>(WindowPtr pWindow);
-00078 <span class="keyword">extern</span> Bool <a class="code" href="dmxwindow_8c.html#a13">dmxPositionWindow</a>(WindowPtr pWindow, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
-00079 <span class="keyword">extern</span> Bool <a class="code" href="dmxwindow_8c.html#a14">dmxChangeWindowAttributes</a>(WindowPtr pWindow, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> mask);
-00080 <span class="keyword">extern</span> Bool <a class="code" href="dmxwindow_8c.html#a15">dmxRealizeWindow</a>(WindowPtr pWindow);
-00081 <span class="keyword">extern</span> Bool <a class="code" href="dmxwindow_8c.html#a16">dmxUnrealizeWindow</a>(WindowPtr pWindow);
-00082 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxwindow_8c.html#a17">dmxRestackWindow</a>(WindowPtr pWindow, WindowPtr pOldNextSib);
-00083 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxwindow_8c.html#a19">dmxWindowExposures</a>(WindowPtr pWindow, RegionPtr prgn,
-00084 RegionPtr other_exposed);
-00085 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxwindow_8c.html#a20">dmxPaintWindowBackground</a>(WindowPtr pWindow, RegionPtr pRegion,
-00086 <span class="keywordtype">int</span> what);
-00087 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxwindow_8c.html#a21">dmxPaintWindowBorder</a>(WindowPtr pWindow, RegionPtr pRegion,
-00088 <span class="keywordtype">int</span> what);
-00089 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxwindow_8c.html#a22">dmxCopyWindow</a>(WindowPtr pWindow, DDXPointRec ptOldOrg,
-00090 RegionPtr prgnSrc);
-00091
-00092 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxwindow_8c.html#a23">dmxResizeWindow</a>(WindowPtr pWindow, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y,
-00093 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h, WindowPtr pSib);
-00094 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxwindow_8c.html#a24">dmxReparentWindow</a>(WindowPtr pWindow, WindowPtr pPriorParent);
-00095
-00096 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxwindow_8c.html#a25">dmxChangeBorderWidth</a>(WindowPtr pWindow, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> width);
-00097
-00098 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxwindow_8c.html#a5">dmxResizeScreenWindow</a>(ScreenPtr pScreen,
-00099 <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> h);
-00100 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxwindow_8c.html#a6">dmxResizeRootWindow</a>(WindowPtr pRoot,
-00101 <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> w, <span class="keywordtype">int</span> h);
-00102
-00103 <span class="keyword">extern</span> Bool <a class="code" href="dmxwindow_8c.html#a11">dmxBEDestroyWindow</a>(WindowPtr pWindow);
-00104
-00105 <span class="preprocessor">#ifdef SHAPE</span>
-00106 <span class="preprocessor"></span><span class="comment">/* Support for shape extension */</span>
-00107 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="dmxwindow_8c.html#a26">dmxSetShape</a>(WindowPtr pWindow);
-00108 <span class="preprocessor">#endif</span>
-00109 <span class="preprocessor"></span>
-<a name="l00111"></a><a class="code" href="dmxwindow_8h.html#a10">00111</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="dmxscrinit_8c.html#a3">dmxWinPrivateIndex</a>;
-00112
-<a name="l00114"></a><a class="code" href="dmxwindow_8h.html#a0">00114</a> <span class="preprocessor">#define DMX_GET_WINDOW_PRIV(_pWin) \</span>
-00115 <span class="preprocessor"> ((dmxWinPrivPtr)(_pWin)-&gt;devPrivates[dmxWinPrivateIndex].ptr)</span>
-00116 <span class="preprocessor"></span>
-00117 <span class="comment">/* All of these macros are only used in dmxwindow.c */</span>
-00118 <span class="preprocessor">#define DMX_WINDOW_FUNC_PROLOGUE(_pGC) \</span>
-00119 <span class="preprocessor">do { \</span>
-00120 <span class="preprocessor"> dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(_pGC); \</span>
-00121 <span class="preprocessor"> DMX_UNWRAP(funcs, pGCPriv, (_pGC)); \</span>
-00122 <span class="preprocessor"> if (pGCPriv-&gt;ops) \</span>
-00123 <span class="preprocessor"> DMX_UNWRAP(ops, pGCPriv, (_pGC)); \</span>
-00124 <span class="preprocessor">} while (0)</span>
-00125 <span class="preprocessor"></span>
-00126 <span class="preprocessor">#define DMX_WINDOW_FUNC_EPILOGUE(_pGC) \</span>
-00127 <span class="preprocessor">do { \</span>
-00128 <span class="preprocessor"> dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(_pGC); \</span>
-00129 <span class="preprocessor"> DMX_WRAP(funcs, &amp;dmxGCFuncs, pGCPriv, (_pGC)); \</span>
-00130 <span class="preprocessor"> if (pGCPriv-&gt;ops) \</span>
-00131 <span class="preprocessor"> DMX_WRAP(ops, &amp;dmxGCOps, pGCPriv, (_pGC)); \</span>
-00132 <span class="preprocessor">} while (0)</span>
-00133 <span class="preprocessor"></span>
-00134 <span class="preprocessor">#define DMX_WINDOW_X1(_pWin) \</span>
-00135 <span class="preprocessor"> ((_pWin)-&gt;drawable.x - wBorderWidth(_pWin))</span>
-00136 <span class="preprocessor"></span><span class="preprocessor">#define DMX_WINDOW_Y1(_pWin) \</span>
-00137 <span class="preprocessor"> ((_pWin)-&gt;drawable.y - wBorderWidth(_pWin))</span>
-00138 <span class="preprocessor"></span><span class="preprocessor">#define DMX_WINDOW_X2(_pWin) \</span>
-00139 <span class="preprocessor"> ((_pWin)-&gt;drawable.x + wBorderWidth(_pWin) + (_pWin)-&gt;drawable.width) </span>
-00140 <span class="preprocessor"></span><span class="preprocessor">#define DMX_WINDOW_Y2(_pWin) \</span>
-00141 <span class="preprocessor"> ((_pWin)-&gt;drawable.y + wBorderWidth(_pWin) + (_pWin)-&gt;drawable.height) </span>
-00142 <span class="preprocessor"></span>
-00143 <span class="preprocessor">#define DMX_WINDOW_OFFSCREEN(_pWin) \</span>
-00144 <span class="preprocessor"> (DMX_WINDOW_X1(_pWin) &gt;= (_pWin)-&gt;drawable.pScreen-&gt;width || \</span>
-00145 <span class="preprocessor"> DMX_WINDOW_Y1(_pWin) &gt;= (_pWin)-&gt;drawable.pScreen-&gt;height || \</span>
-00146 <span class="preprocessor"> DMX_WINDOW_X2(_pWin) &lt;= 0 || \</span>
-00147 <span class="preprocessor"> DMX_WINDOW_Y2(_pWin) &lt;= 0)</span>
-00148 <span class="preprocessor"></span>
-00149 <span class="preprocessor">#endif </span><span class="comment">/* DMXWINDOW_H */</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8h.html
deleted file mode 100644
index f80aae3c3..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxwindow_8h.html
+++ /dev/null
@@ -1,969 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxwindow.h File Reference</h1><code>#include "windowstr.h"</code><br>
-
-<p>
-<a href="dmxwindow_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxWinPriv.html">_dmxWinPriv</a></td></tr>
-
-<tr><td colspan=2><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a0">DMX_GET_WINDOW_PRIV</a>(_pWin)&nbsp;&nbsp;&nbsp;((<a class="el" href="struct__dmxWinPriv.html">dmxWinPrivPtr</a>)(_pWin)-&gt;devPrivates[<a class="el" href="dmxwindow_8h.html#a10">dmxWinPrivateIndex</a>].ptr)</td></tr>
-
-<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxWinPriv.html">_dmxWinPriv</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a8">dmxWinPrivRec</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__dmxWinPriv.html">_dmxWinPriv</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a9">dmxWinPrivPtr</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a11">dmxInitWindow</a> (ScreenPtr pScreen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a14">dmxCreateAndRealizeWindow</a> (WindowPtr pWindow, Bool doSync)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a15">dmxCreateWindow</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a16">dmxDestroyWindow</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a17">dmxPositionWindow</a> (WindowPtr pWindow, int x, int y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a18">dmxChangeWindowAttributes</a> (WindowPtr pWindow, unsigned long mask)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a19">dmxRealizeWindow</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a20">dmxUnrealizeWindow</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a21">dmxRestackWindow</a> (WindowPtr pWindow, WindowPtr pOldNextSib)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a22">dmxWindowExposures</a> (WindowPtr pWindow, RegionPtr prgn, RegionPtr other_exposed)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a23">dmxPaintWindowBackground</a> (WindowPtr pWindow, RegionPtr pRegion, int what)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a24">dmxPaintWindowBorder</a> (WindowPtr pWindow, RegionPtr pRegion, int what)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a25">dmxCopyWindow</a> (WindowPtr pWindow, DDXPointRec ptOldOrg, RegionPtr prgnSrc)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a26">dmxResizeWindow</a> (WindowPtr pWindow, int x, int y, unsigned int w, unsigned int h, WindowPtr pSib)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a27">dmxReparentWindow</a> (WindowPtr pWindow, WindowPtr pPriorParent)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a28">dmxChangeBorderWidth</a> (WindowPtr pWindow, unsigned int width)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a29">dmxResizeScreenWindow</a> (ScreenPtr pScreen, int x, int y, int w, int h)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a30">dmxResizeRootWindow</a> (WindowPtr pRoot, int x, int y, int w, int h)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a31">dmxBEDestroyWindow</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a32">dmxSetShape</a> (WindowPtr pWindow)</td></tr>
-
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxwindow_8h.html#a10">dmxWinPrivateIndex</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface for window support. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxwindow_8c.html">dmxwindow.c</a></dd></dl>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="a0" doxytag="dmxwindow.h::DMX_GET_WINDOW_PRIV" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> #define DMX_GET_WINDOW_PRIV</td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">_pWin&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap>&nbsp;&nbsp;&nbsp;((<a class="el" href="struct__dmxWinPriv.html">dmxWinPrivPtr</a>)(_pWin)-&gt;devPrivates[<a class="el" href="dmxwindow_8h.html#a10">dmxWinPrivateIndex</a>].ptr)
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get window private pointer. </td>
- </tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="a9" doxytag="dmxwindow.h::dmxWinPrivPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxWinPriv.html">_dmxWinPriv</a> * <a class="el" href="struct__dmxWinPriv.html">dmxWinPrivPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Window private area. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxwindow.h::dmxWinPrivRec" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__dmxWinPriv.html">_dmxWinPriv</a> <a class="el" href="struct__dmxWinPriv.html">dmxWinPrivRec</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Window private area. </td>
- </tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a31" doxytag="dmxwindow.h::dmxBEDestroyWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxBEDestroyWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy <em>pWindow</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a28" doxytag="dmxwindow.h::dmxChangeBorderWidth" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxChangeBorderWidth </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>width</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change border width for <em>pWindow</em> to <em>width</em> pixels. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="dmxwindow.h::dmxChangeWindowAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxChangeWindowAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned long&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the window attributes of <em>pWindow</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="dmxwindow.h::dmxCopyWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCopyWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DDXPointRec&nbsp;</td>
- <td class="mdname" nowrap> <em>ptOldOrg</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>RegionPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>prgnSrc</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Move <em>pWindow</em> on the back-end server. Determine whether or not it is on or offscreen, and realize it if it is newly on screen and the lazy window creation optimization is enabled. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="dmxwindow.h::dmxCreateAndRealizeWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxCreateAndRealizeWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Bool&nbsp;</td>
- <td class="mdname" nowrap> <em>doSync</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This function handles lazy window creation and realization. Window creation is handled by <a class="el" href="dmxwindow_8c.html#a8">dmxCreateNonRootWindow()</a>. It also handles any stacking changes that have occured since the window was originally created by calling <a class="el" href="dmxwindow_8c.html#a0">dmxDoRestackWindow()</a>. If the window is shaped, the shape is set on the back-end server by calling <a class="el" href="dmxwindow_8c.html#a2">dmxDoSetShape()</a>, and if the window has pictures (from RENDER) associated with it, those pictures are created on the back-end server by calling <a class="el" href="dmxpict_8c.html#a18">dmxCreatePictureList()</a>. If <em>doSync</em> is TRUE, then <a class="el" href="dmxsync_8c.html#a9">dmxSync()</a> is called. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="dmxwindow.h::dmxCreateWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxCreateWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create <em>pWindow</em> on the back-end server. If the lazy window creation optimization is enabled, then the actual creation and realization of the window is handled by <a class="el" href="dmxwindow_8c.html#a9">dmxCreateAndRealizeWindow()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a16" doxytag="dmxwindow.h::dmxDestroyWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxDestroyWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy <em>pWindow</em> on the back-end server. If any RENDER pictures were created, destroy them as well. </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxwindow.h::dmxInitWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxInitWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the private area for the window functions. </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxwindow.h::dmxPaintWindowBackground" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPaintWindowBackground </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>RegionPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pRegion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>what</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Paint background of <em>pWindow</em> in <em>pRegion</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="dmxwindow.h::dmxPaintWindowBorder" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxPaintWindowBorder </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>RegionPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pRegion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>what</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Paint window border for <em>pWindow</em> in <em>pRegion</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="dmxwindow.h::dmxPositionWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxPositionWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the position of <em>pWindow</em> to be <em>x</em>, <em>y</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="dmxwindow.h::dmxRealizeWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxRealizeWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Realize <em>pWindow</em> on the back-end server. If the lazy window creation optimization is enabled, the window is only realized when it at least partially overlaps the screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a27" doxytag="dmxwindow.h::dmxReparentWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxReparentWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pPriorParent</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Reparent <em>pWindow</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a30" doxytag="dmxwindow.h::dmxResizeRootWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxResizeRootWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pRoot</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the location and size of the "root" window. Called from #dmxReconfigureRootWindow(). </td>
- </tr>
-</table>
-<a class="anchor" name="a29" doxytag="dmxwindow.h::dmxResizeScreenWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxResizeScreenWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the location and size of the "screen" window. Called from #dmxReconfigureScreenWindow(). </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="dmxwindow.h::dmxResizeWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxResizeWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>w</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>h</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pSib</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Resize <em>pWindow</em> on the back-end server. Determine whether or not it is on or offscreen, and realize it if it is newly on screen and the lazy window creation optimization is enabled. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="dmxwindow.h::dmxRestackWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxRestackWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pOldNextSib</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Handle window restacking. The actual restacking occurs in <a class="el" href="dmxwindow_8c.html#a0">dmxDoRestackWindow()</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a32" doxytag="dmxwindow.h::dmxSetShape" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxSetShape </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set shape of <em>pWindow</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="dmxwindow.h::dmxUnrealizeWindow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool dmxUnrealizeWindow </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pWindow</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Unrealize <em>pWindow</em> on the back-end server. </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="dmxwindow.h::dmxWindowExposures" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void dmxWindowExposures </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">WindowPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pWindow</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>RegionPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>prgn</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>RegionPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>other_exposed</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Handle exposures on <em>pWindow</em>. Since window exposures are handled in DMX, the events that are generated by the back-end server are redundant, so we eat them here. </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a10" doxytag="dmxwindow.h::dmxWinPrivateIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="dmxwindow_8h.html#a10">dmxWinPrivateIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Private index for Windows </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxxinput_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxxinput_8c.html
deleted file mode 100644
index bd64864a1..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/dmxxinput_8c.html
+++ /dev/null
@@ -1,396 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxxinput.c File Reference</h1><code>#include "X.h"</code><br>
-<code>#include "Xproto.h"</code><br>
-<code>#include "inputstr.h"</code><br>
-<code>#include "XI.h"</code><br>
-<code>#include "XIproto.h"</code><br>
-<code>#include "XIstubs.h"</code><br>
-<code>#include "mipointer.h"</code><br>
-<code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "exevents.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxxinput_8c.html#a1">ChangeKeyboardDevice</a> (DeviceIntPtr old_dev, DeviceIntPtr new_dev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxxinput_8c.html#a2">ChangePointerDevice</a> (DeviceIntPtr old_dev, DeviceIntPtr new_dev, unsigned char x, unsigned char y)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxxinput_8c.html#a3">CloseInputDevice</a> (DeviceIntPtr d, ClientPtr client)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxxinput_8c.html#a4">AddOtherInputDevices</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxxinput_8c.html#a5">OpenInputDevice</a> (DeviceIntPtr dev, ClientPtr client, int *status)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxxinput_8c.html#a6">SetDeviceMode</a> (ClientPtr client, DeviceIntPtr dev, int mode)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxxinput_8c.html#a7">SetDeviceValuators</a> (ClientPtr client, DeviceIntPtr dev, int *valuators, int first_valuator, int num_valuators)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxxinput_8c.html#a8">ChangeDeviceControl</a> (ClientPtr client, DeviceIntPtr dev, xDeviceCtl *control)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file implements support required by the XINPUT extension.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a4" doxytag="dmxxinput.c::AddOtherInputDevices" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void AddOtherInputDevices </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This is not required by the XINPUT model that DMX uses. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxxinput.c::ChangeDeviceControl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int ChangeDeviceControl </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ClientPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>client</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>dev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>xDeviceCtl *&nbsp;</td>
- <td class="mdname" nowrap> <em>control</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change device control. This is not implemented. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="dmxxinput.c::ChangeKeyboardDevice" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int ChangeKeyboardDevice </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>old_dev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>new_dev</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the core keyboard from <em>old_dev</em> to <em>new_dev</em>. Currently this is not implemented. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="dmxxinput.c::ChangePointerDevice" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int ChangePointerDevice </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>old_dev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>new_dev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned char&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned char&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the core pointer from <em>old_dev</em> to <em>new_dev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="dmxxinput.c::CloseInputDevice" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void CloseInputDevice </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>d</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ClientPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>client</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Close the input device. This is not required by the XINPUT model that DMX uses. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="dmxxinput.c::OpenInputDevice" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void OpenInputDevice </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>dev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ClientPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>client</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>status</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Open an input device. This is not required by the XINPUT model that DMX uses. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="dmxxinput.c::SetDeviceMode" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int SetDeviceMode </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ClientPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>client</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>dev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>mode</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set device mode to <em>mode</em>. This is not implemented. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxxinput.c::SetDeviceValuators" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int SetDeviceValuators </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ClientPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>client</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>DeviceIntPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>dev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>valuators</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>first_valuator</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>num_valuators</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set device valuators. This is not implemented. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/doxygen.css b/nx-X11/programs/Xserver/hw/dmx/doc/html/doxygen.css
deleted file mode 100644
index 841f709a7..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/doxygen.css
+++ /dev/null
@@ -1,49 +0,0 @@
-H1 { text-align: center; }
-CAPTION { font-weight: bold }
-A.qindex {}
-A.qindexRef {}
-A.el { text-decoration: none; font-weight: bold }
-A.elRef { font-weight: bold }
-A.code { text-decoration: none; font-weight: normal; color: #4444ee }
-A.codeRef { font-weight: normal; color: #4444ee }
-A:hover { text-decoration: none; background-color: #f2f2ff }
-DL.el { margin-left: -1cm }
-DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
-DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
-TD.md { background-color: #f2f2ff; font-weight: bold; }
-TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; }
-TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; }
-DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
-DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
-BODY { background: white }
-TD.indexkey {
- background-color: #eeeeff;
- font-weight: bold;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px
-}
-TD.indexvalue {
- background-color: #eeeeff;
- font-style: italic;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px
-}
-FONT.keyword { color: #008000 }
-FONT.keywordtype { color: #604020 }
-FONT.keywordflow { color: #e08000 }
-FONT.comment { color: #800000 }
-FONT.preprocessor { color: #806020 }
-FONT.stringliteral { color: #002080 }
-FONT.charliteral { color: #008080 }
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/doxygen.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/doxygen.png
deleted file mode 100644
index 96ae72c29..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/doxygen.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/files.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/files.html
deleted file mode 100644
index 339ba7a98..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/files.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindexHL" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>Distributed Multihead X File List</h1>Here is a list of all documented files with brief descriptions:<table>
- <tr><td class="indexkey"><a class="el" href="ChkNotMaskEv_8c.html">ChkNotMaskEv.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="ChkNotMaskEv_8h.html">ChkNotMaskEv.h</a> <a href="ChkNotMaskEv_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="programs_2Xserver_2Xext_2dmx_8c.html">programs/Xserver/Xext/dmx.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="lib_2dmx_2dmx_8c.html">lib/dmx/dmx.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmx_8h.html">dmx.h</a> <a href="dmx_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>dmx_glxvisuals.h</b> <a href="dmx__glxvisuals_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxarg_8c.html">dmxarg.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxarg_8h.html">dmxarg.h</a> <a href="dmxarg_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxbackend_8c.html">dmxbackend.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxbackend_8h.html">dmxbackend.h</a> <a href="dmxbackend_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxcb_8c.html">dmxcb.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxcb_8h.html">dmxcb.h</a> <a href="dmxcb_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxclient_8h.html">dmxclient.h</a> <a href="dmxclient_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxcmap_8c.html">dmxcmap.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxcmap_8h.html">dmxcmap.h</a> <a href="dmxcmap_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxcommon_8c.html">dmxcommon.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxcommon_8h.html">dmxcommon.h</a> <a href="dmxcommon_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxcompat_8c.html">dmxcompat.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxcompat_8h.html">dmxcompat.h</a> <a href="dmxcompat_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxconfig_8c.html">dmxconfig.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxconfig_8h.html">dmxconfig.h</a> <a href="dmxconfig_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxconsole_8c.html">dmxconsole.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxconsole_8h.html">dmxconsole.h</a> <a href="dmxconsole_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxcursor_8c.html">dmxcursor.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxcursor_8h.html">dmxcursor.h</a> <a href="dmxcursor_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxdetach_8c.html">dmxdetach.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxdpms_8c.html">dmxdpms.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxdpms_8h.html">dmxdpms.h</a> <a href="dmxdpms_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxdummy_8c.html">dmxdummy.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxdummy_8h.html">dmxdummy.h</a> <a href="dmxdummy_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxeq_8c.html">dmxeq.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxeq_8h.html">dmxeq.h</a> <a href="dmxeq_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxevents_8c.html">dmxevents.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxevents_8h.html">dmxevents.h</a> <a href="dmxevents_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxext_8h.html">dmxext.h</a> <a href="dmxext_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxextension_8c.html">dmxextension.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxextension_8h.html">dmxextension.h</a> <a href="dmxextension_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxfont_8c.html">dmxfont.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxfont_8h.html">dmxfont.h</a> <a href="dmxfont_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxgc_8c.html">dmxgc.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxgc_8h.html">dmxgc.h</a> <a href="dmxgc_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxgcops_8c.html">dmxgcops.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxgcops_8h.html">dmxgcops.h</a> <a href="dmxgcops_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxinit_8c.html">dmxinit.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxinit_8h.html">dmxinit.h</a> <a href="dmxinit_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxinput_8c.html">dmxinput.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxinput_8h.html">dmxinput.h</a> <a href="dmxinput_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxinputinit_8c.html">dmxinputinit.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxinputinit_8h.html">dmxinputinit.h</a> <a href="dmxinputinit_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxlog_8c.html">dmxlog.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxlog_8h.html">dmxlog.h</a> <a href="dmxlog_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxmap_8c.html">dmxmap.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxmap_8h.html">dmxmap.h</a> <a href="dmxmap_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxmotion_8c.html">dmxmotion.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxmotion_8h.html">dmxmotion.h</a> <a href="dmxmotion_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxparse_8c.html">dmxparse.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxparse_8h.html">dmxparse.h</a> <a href="dmxparse_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxpict_8c.html">dmxpict.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxpict_8h.html">dmxpict.h</a> <a href="dmxpict_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxpixmap_8c.html">dmxpixmap.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxpixmap_8h.html">dmxpixmap.h</a> <a href="dmxpixmap_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxprint_8c.html">dmxprint.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxprint_8h.html">dmxprint.h</a> <a href="dmxprint_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxprop_8c.html">dmxprop.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxprop_8h.html">dmxprop.h</a> <a href="dmxprop_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxproto_8h.html">dmxproto.h</a> <a href="dmxproto_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxscrinit_8c.html">dmxscrinit.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxscrinit_8h.html">dmxscrinit.h</a> <a href="dmxscrinit_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxshadow_8c.html">dmxshadow.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxshadow_8h.html">dmxshadow.h</a> <a href="dmxshadow_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxsigio_8c.html">dmxsigio.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxsigio_8h.html">dmxsigio.h</a> <a href="dmxsigio_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxstat_8c.html">dmxstat.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxstat_8h.html">dmxstat.h</a> <a href="dmxstat_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxsync_8c.html">dmxsync.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxsync_8h.html">dmxsync.h</a> <a href="dmxsync_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxvisual_8c.html">dmxvisual.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxvisual_8h.html">dmxvisual.h</a> <a href="dmxvisual_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxwindow_8c.html">dmxwindow.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxwindow_8h.html">dmxwindow.h</a> <a href="dmxwindow_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="dmxxinput_8c.html">dmxxinput.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="lnx-keyboard_8c.html">lnx-keyboard.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="lnx-keyboard_8h.html">lnx-keyboard.h</a> <a href="lnx-keyboard_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="lnx-ms_8c.html">lnx-ms.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="lnx-ms_8h.html">lnx-ms.h</a> <a href="lnx-ms_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="lnx-ps2_8c.html">lnx-ps2.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="lnx-ps2_8h.html">lnx-ps2.h</a> <a href="lnx-ps2_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="usb-common_8c.html">usb-common.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="usb-common_8h.html">usb-common.h</a> <a href="usb-common_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="usb-keyboard_8c.html">usb-keyboard.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="usb-keyboard_8h.html">usb-keyboard.h</a> <a href="usb-keyboard_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="usb-mouse_8c.html">usb-mouse.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="usb-mouse_8h.html">usb-mouse.h</a> <a href="usb-mouse_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="usb-other_8c.html">usb-other.c</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="usb-other_8h.html">usb-other.h</a> <a href="usb-other_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="usb-private_8h.html">usb-private.h</a> <a href="usb-private_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2blank.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2blank.png
deleted file mode 100644
index 493c3c0b6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2blank.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2doc.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2doc.png
deleted file mode 100644
index f72999f92..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2doc.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2folderclosed.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2folderclosed.png
deleted file mode 100644
index d6d063440..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2folderclosed.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2folderopen.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2folderopen.png
deleted file mode 100644
index bbe2c913c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2folderopen.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2lastnode.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2lastnode.png
deleted file mode 100644
index e7b9ba90c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2lastnode.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2link.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2link.png
deleted file mode 100644
index 14f3fed00..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2link.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2mlastnode.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2mlastnode.png
deleted file mode 100644
index 09ceb6adb..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2mlastnode.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2mnode.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2mnode.png
deleted file mode 100644
index 3254c0511..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2mnode.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2node.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2node.png
deleted file mode 100644
index c9f06a57f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2node.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2plastnode.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2plastnode.png
deleted file mode 100644
index 0b07e0091..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2plastnode.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2pnode.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2pnode.png
deleted file mode 100644
index 2001b797b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2pnode.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2vertline.png b/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2vertline.png
deleted file mode 100644
index b330f3a33..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/ftv2vertline.png
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/functions.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/functions.html
deleted file mode 100644
index 766de0f8f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/functions.html
+++ /dev/null
@@ -1,237 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindexHL" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_h">h</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_k">k</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_u">u</a> | <a class="qindex" href="#index_v">v</a> | <a class="qindex" href="#index_w">w</a> | <a class="qindex" href="#index_x">x</a></div>
-
-<p>
-
-<p>
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>absmap
-: <a class="el" href="struct__myPrivate.html#o61">_myPrivate</a><li>argc
-: <a class="el" href="struct__dmxArg.html#o0">_dmxArg</a><li>argm
-: <a class="el" href="struct__dmxArg.html#o1">_dmxArg</a><li>argv
-: <a class="el" href="struct__dmxArg.html#o2">_dmxArg</a></ul>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>beBlackPixel
-: <a class="el" href="struct__DMXScreenInfo.html#o18">_DMXScreenInfo</a><li>beBPP
-: <a class="el" href="struct__DMXScreenInfo.html#o6">_DMXScreenInfo</a><li>beDefColormaps
-: <a class="el" href="struct__DMXScreenInfo.html#o17">_DMXScreenInfo</a><li>beDefVisualIndex
-: <a class="el" href="struct__DMXScreenInfo.html#o15">_DMXScreenInfo</a><li>beDepth
-: <a class="el" href="struct__DMXScreenInfo.html#o5">_DMXScreenInfo</a><li>beDepths
-: <a class="el" href="struct__DMXScreenInfo.html#o10">_DMXScreenInfo</a><li>beDisplay
-: <a class="el" href="struct__DMXScreenInfo.html#o2">_DMXScreenInfo</a><li>beHeight
-: <a class="el" href="struct__DMXScreenInfo.html#o4">_DMXScreenInfo</a><li>belFeedbackClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o25">_DMXLocalInitInfo</a><li>beNumDefColormaps
-: <a class="el" href="struct__DMXScreenInfo.html#o16">_DMXScreenInfo</a><li>beNumDepths
-: <a class="el" href="struct__DMXScreenInfo.html#o9">_DMXScreenInfo</a><li>beNumPixmapFormats
-: <a class="el" href="struct__DMXScreenInfo.html#o11">_DMXScreenInfo</a><li>beNumVisuals
-: <a class="el" href="struct__DMXScreenInfo.html#o13">_DMXScreenInfo</a><li>bePixmapFormats
-: <a class="el" href="struct__DMXScreenInfo.html#o12">_DMXScreenInfo</a><li>beVisuals
-: <a class="el" href="struct__DMXScreenInfo.html#o14">_DMXScreenInfo</a><li>beWhitePixel
-: <a class="el" href="struct__DMXScreenInfo.html#o19">_DMXScreenInfo</a><li>beWidth
-: <a class="el" href="struct__DMXScreenInfo.html#o3">_DMXScreenInfo</a><li>beXDPI
-: <a class="el" href="struct__DMXScreenInfo.html#o7">_DMXScreenInfo</a><li>beYDPI
-: <a class="el" href="struct__DMXScreenInfo.html#o8">_DMXScreenInfo</a><li>binding
-: <a class="el" href="struct__DMXLocalInputInfo.html#o3">_DMXLocalInputInfo</a><li>buttonClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o9">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
-<li>CloseScreen
-: <a class="el" href="struct__DMXScreenInfo.html#o59">_DMXScreenInfo</a><li>collect_events
-: <a class="el" href="struct__DMXLocalInputInfo.html#o16">_DMXLocalInputInfo</a><li>console
-: <a class="el" href="struct__DMXInputInfo.html#o6">_DMXInputInfo</a><li>core
-: <a class="el" href="struct__DMXInputInfo.html#o5">_DMXInputInfo</a><li>create_private
-: <a class="el" href="struct__DMXLocalInputInfo.html#o4">_DMXLocalInputInfo</a></ul>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>destroy_private
-: <a class="el" href="struct__DMXLocalInputInfo.html#o5">_DMXLocalInputInfo</a><li>detached
-: <a class="el" href="struct__DMXInputInfo.html#o2">_DMXInputInfo</a><li>deviceId
-: <a class="el" href="struct__DMXLocalInputInfo.html#o41">_DMXLocalInputInfo</a><li>deviceName
-: <a class="el" href="struct__DMXLocalInputInfo.html#o42">_DMXLocalInputInfo</a><li>devs
-: <a class="el" href="struct__DMXInputInfo.html#o17">_DMXInputInfo</a><li>dmxInput
-: <a class="el" href="struct__myPrivate.html#o62">_myPrivate</a><li>dpmsCapable
-: <a class="el" href="struct__DMXScreenInfo.html#o52">_DMXScreenInfo</a><li>dpmsEnabled
-: <a class="el" href="struct__DMXScreenInfo.html#o53">_DMXScreenInfo</a><li>dpmsOff
-: <a class="el" href="struct__DMXScreenInfo.html#o56">_DMXScreenInfo</a><li>dpmsStandby
-: <a class="el" href="struct__DMXScreenInfo.html#o54">_DMXScreenInfo</a><li>dpmsSuspend
-: <a class="el" href="struct__DMXScreenInfo.html#o55">_DMXScreenInfo</a><li>duration
-: <a class="el" href="struct__myPrivate.html#o50">_myPrivate</a></ul>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>event
-: <a class="el" href="struct__Event.html#o0">_Event</a><li>events
-: <a class="el" href="struct__EventQueue.html#o4">_EventQueue</a><li>extType
-: <a class="el" href="struct__DMXLocalInputInfo.html#o2">_DMXLocalInputInfo</a></ul>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
-<li>fd
-: <a class="el" href="struct__myPrivate.html#o37">_myPrivate</a><li>focusClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o20">_DMXLocalInitInfo</a><li>force
-: <a class="el" href="struct__DMXLocalInitInfo.html#o8">_DMXLocalInitInfo</a><li>freemap
-: <a class="el" href="struct__DMXLocalInitInfo.html#o3">_DMXLocalInitInfo</a><li>freename
-: <a class="el" href="struct__DMXInputInfo.html#o1">_DMXInputInfo</a><li>freenames
-: <a class="el" href="struct__DMXLocalInitInfo.html#o7">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
-<li>geometry
-: <a class="el" href="struct__DMXInputInfo.html#o20">_DMXInputInfo</a><li>get_info
-: <a class="el" href="struct__DMXLocalInputInfo.html#o9">_DMXLocalInputInfo</a><li>glyphSets
-: <a class="el" href="struct__dmxGlyphPriv.html#o0">_dmxGlyphPriv</a></ul>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>head
-: <a class="el" href="struct__DMXLocalInputInfo.html#o32">_DMXLocalInputInfo</a>, <a class="el" href="struct__EventQueue.html#o0">_EventQueue</a><li>history
-: <a class="el" href="struct__DMXLocalInputInfo.html#o34">_DMXLocalInputInfo</a></ul>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>index
-: <a class="el" href="struct__DMXScreenInfo.html#o1">_DMXScreenInfo</a><li>init
-: <a class="el" href="struct__DMXLocalInputInfo.html#o6">_DMXLocalInputInfo</a><li>inputIdx
-: <a class="el" href="struct__DMXLocalInputInfo.html#o29">_DMXLocalInputInfo</a>, <a class="el" href="struct__DMXInputInfo.html#o3">_DMXInputInfo</a><li>intFeedbackClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o26">_DMXLocalInitInfo</a><li>isCore
-: <a class="el" href="struct__DMXLocalInputInfo.html#o24">_DMXLocalInputInfo</a></ul>
-<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
-<li>kbdFeedbackClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o22">_DMXLocalInitInfo</a><li>kbdState
-: <a class="el" href="struct__myPrivate.html#o43">_myPrivate</a><li>kBell
-: <a class="el" href="struct__DMXLocalInputInfo.html#o22">_DMXLocalInputInfo</a><li>kctrl
-: <a class="el" href="struct__DMXLocalInputInfo.html#o26">_DMXLocalInputInfo</a><li>kCtrl
-: <a class="el" href="struct__DMXLocalInputInfo.html#o21">_DMXLocalInputInfo</a><li>keyboard
-: <a class="el" href="struct__DMXLocalInitInfo.html#o0">_DMXLocalInitInfo</a><li>keyClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o1">_DMXLocalInitInfo</a><li>keycodes
-: <a class="el" href="struct__DMXInputInfo.html#o18">_DMXInputInfo</a><li>keySyms
-: <a class="el" href="struct__DMXLocalInitInfo.html#o2">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
-<li>lastEventTime
-: <a class="el" href="struct__EventQueue.html#o2">_EventQueue</a><li>lastMotion
-: <a class="el" href="struct__EventQueue.html#o3">_EventQueue</a><li>lastY
-: <a class="el" href="struct__DMXLocalInputInfo.html#o31">_DMXLocalInputInfo</a><li>latereinit
-: <a class="el" href="struct__DMXLocalInputInfo.html#o8">_DMXLocalInputInfo</a><li>ledFeedbackClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o24">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>map
-: <a class="el" href="struct__DMXLocalInputInfo.html#o39">_DMXLocalInputInfo</a>, <a class="el" href="struct__DMXLocalInitInfo.html#o11">_DMXLocalInitInfo</a><li>mapOptimize
-: <a class="el" href="struct__DMXLocalInputInfo.html#o40">_DMXLocalInputInfo</a><li>mask
-: <a class="el" href="struct__myPrivate.html#o56">_myPrivate</a><li>maxres
-: <a class="el" href="struct__DMXLocalInitInfo.html#o19">_DMXLocalInitInfo</a><li>maxSymbols
-: <a class="el" href="struct__DMXLocalInitInfo.html#o28">_DMXLocalInitInfo</a><li>maxSymbolsSupported
-: <a class="el" href="struct__DMXLocalInitInfo.html#o29">_DMXLocalInitInfo</a><li>maxval
-: <a class="el" href="struct__DMXLocalInitInfo.html#o16">_DMXLocalInitInfo</a><li>mCtrl
-: <a class="el" href="struct__DMXLocalInputInfo.html#o20">_DMXLocalInputInfo</a><li>mctrl
-: <a class="el" href="struct__DMXLocalInputInfo.html#o27">_DMXLocalInputInfo</a><li>minres
-: <a class="el" href="struct__DMXLocalInitInfo.html#o18">_DMXLocalInitInfo</a><li>minval
-: <a class="el" href="struct__DMXLocalInitInfo.html#o15">_DMXLocalInitInfo</a><li>modMap
-: <a class="el" href="struct__DMXLocalInitInfo.html#o4">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>name
-: <a class="el" href="struct__DMXLocalInputInfo.html#o0">_DMXLocalInputInfo</a>, <a class="el" href="struct__DMXInputInfo.html#o0">_DMXInputInfo</a>, <a class="el" href="struct__DMXScreenInfo.html#o0">_DMXScreenInfo</a><li>names
-: <a class="el" href="struct__DMXLocalInitInfo.html#o6">_DMXLocalInitInfo</a><li>needsSync
-: <a class="el" href="struct__DMXScreenInfo.html#o58">_DMXScreenInfo</a><li>next
-: <a class="el" href="struct__DMXScreenInfo.html#o28">_DMXScreenInfo</a><li>numAbsAxes
-: <a class="el" href="struct__DMXLocalInitInfo.html#o14">_DMXLocalInitInfo</a><li>numButtons
-: <a class="el" href="struct__DMXLocalInitInfo.html#o10">_DMXLocalInitInfo</a><li>numDevs
-: <a class="el" href="struct__DMXInputInfo.html#o16">_DMXInputInfo</a><li>numLeds
-: <a class="el" href="struct__myPrivate.html#o59">_myPrivate</a><li>numRelAxes
-: <a class="el" href="struct__DMXLocalInitInfo.html#o13">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
-<li>off
-: <a class="el" href="struct__DMXLocalInputInfo.html#o11">_DMXLocalInputInfo</a><li>on
-: <a class="el" href="struct__DMXLocalInputInfo.html#o10">_DMXLocalInputInfo</a><li>over
-: <a class="el" href="struct__DMXScreenInfo.html#o29">_DMXScreenInfo</a></ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>pDequeueScreen
-: <a class="el" href="struct__EventQueue.html#o8">_EventQueue</a><li>pDevice
-: <a class="el" href="struct__myPrivate.html#o55">_myPrivate</a>, <a class="el" href="struct__DMXLocalInputInfo.html#o28">_DMXLocalInputInfo</a><li>pEnqueueScreen
-: <a class="el" href="struct__EventQueue.html#o7">_EventQueue</a><li>pict
-: <a class="el" href="struct__dmxPictPriv.html#o0">_dmxPictPriv</a><li>pitch
-: <a class="el" href="struct__myPrivate.html#o49">_myPrivate</a><li>pPtr
-: <a class="el" href="struct__EventQueue.html#o6">_EventQueue</a><li>private
-: <a class="el" href="struct__DMXLocalInputInfo.html#o23">_DMXLocalInputInfo</a><li>process_input
-: <a class="el" href="struct__DMXLocalInputInfo.html#o17">_DMXLocalInputInfo</a><li>proximityClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o21">_DMXLocalInitInfo</a><li>pScreen
-: <a class="el" href="struct__Event.html#o1">_Event</a><li>ptrFeedbackClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o23">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
-<li>reinit
-: <a class="el" href="struct__DMXLocalInputInfo.html#o7">_DMXLocalInputInfo</a><li>relmap
-: <a class="el" href="struct__myPrivate.html#o60">_myPrivate</a><li>remote
-: <a class="el" href="struct__DMXEventMap.html#o0">_DMXEventMap</a><li>res
-: <a class="el" href="struct__DMXLocalInitInfo.html#o17">_DMXLocalInitInfo</a><li>rootHeight
-: <a class="el" href="struct__DMXScreenInfo.html#o34">_DMXScreenInfo</a><li>rootWidth
-: <a class="el" href="struct__DMXScreenInfo.html#o33">_DMXScreenInfo</a><li>rootWin
-: <a class="el" href="struct__DMXScreenInfo.html#o30">_DMXScreenInfo</a><li>rootX
-: <a class="el" href="struct__DMXScreenInfo.html#o31">_DMXScreenInfo</a><li>rootXOrigin
-: <a class="el" href="struct__DMXScreenInfo.html#o35">_DMXScreenInfo</a><li>rootY
-: <a class="el" href="struct__DMXScreenInfo.html#o32">_DMXScreenInfo</a><li>rootYOrigin
-: <a class="el" href="struct__DMXScreenInfo.html#o36">_DMXScreenInfo</a></ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>savedMask
-: <a class="el" href="struct__dmxPictPriv.html#o1">_dmxPictPriv</a><li>savedMotionEvents
-: <a class="el" href="struct__DMXLocalInputInfo.html#o37">_DMXLocalInputInfo</a><li>savedSendsCore
-: <a class="el" href="struct__DMXLocalInputInfo.html#o38">_DMXLocalInputInfo</a><li>savedTimeout
-: <a class="el" href="struct__DMXScreenInfo.html#o51">_DMXScreenInfo</a><li>scrnDefDrawables
-: <a class="el" href="struct__DMXScreenInfo.html#o27">_DMXScreenInfo</a><li>scrnHeight
-: <a class="el" href="struct__DMXScreenInfo.html#o24">_DMXScreenInfo</a><li>scrnIdx
-: <a class="el" href="struct__DMXInputInfo.html#o4">_DMXInputInfo</a><li>scrnWidth
-: <a class="el" href="struct__DMXScreenInfo.html#o23">_DMXScreenInfo</a><li>scrnWin
-: <a class="el" href="struct__DMXScreenInfo.html#o20">_DMXScreenInfo</a><li>scrnX
-: <a class="el" href="struct__DMXScreenInfo.html#o21">_DMXScreenInfo</a><li>scrnXSign
-: <a class="el" href="struct__DMXScreenInfo.html#o25">_DMXScreenInfo</a><li>scrnY
-: <a class="el" href="struct__DMXScreenInfo.html#o22">_DMXScreenInfo</a><li>scrnYSign
-: <a class="el" href="struct__DMXScreenInfo.html#o26">_DMXScreenInfo</a><li>sendsCore
-: <a class="el" href="struct__DMXLocalInputInfo.html#o25">_DMXLocalInputInfo</a><li>server
-: <a class="el" href="struct__DMXEventMap.html#o1">_DMXEventMap</a><li>shadow
-: <a class="el" href="struct__DMXScreenInfo.html#o37">_DMXScreenInfo</a><li>shadowFBImage
-: <a class="el" href="struct__DMXScreenInfo.html#o39">_DMXScreenInfo</a><li>shadowGC
-: <a class="el" href="struct__DMXScreenInfo.html#o38">_DMXScreenInfo</a><li>shared
-: <a class="el" href="struct__DMXScreenInfo.html#o40">_DMXScreenInfo</a><li>sigioAdded
-: <a class="el" href="struct__DMXInputInfo.html#o13">_DMXInputInfo</a><li>sigioFd
-: <a class="el" href="struct__DMXInputInfo.html#o12">_DMXInputInfo</a><li>sigioFdCount
-: <a class="el" href="struct__DMXInputInfo.html#o11">_DMXInputInfo</a><li>sigioState
-: <a class="el" href="struct__DMXInputInfo.html#o10">_DMXInputInfo</a><li>stat
-: <a class="el" href="struct__DMXScreenInfo.html#o57">_DMXScreenInfo</a><li>strFeedbackClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o27">_DMXLocalInitInfo</a><li>symbols
-: <a class="el" href="struct__DMXLocalInitInfo.html#o30">_DMXLocalInitInfo</a>, <a class="el" href="struct__DMXInputInfo.html#o19">_DMXInputInfo</a></ul>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>tail
-: <a class="el" href="struct__DMXLocalInputInfo.html#o33">_DMXLocalInputInfo</a>, <a class="el" href="struct__EventQueue.html#o1">_EventQueue</a><li>type
-: <a class="el" href="struct__DMXLocalInputInfo.html#o1">_DMXLocalInputInfo</a></ul>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
-<li>update_info
-: <a class="el" href="struct__DMXLocalInputInfo.html#o19">_DMXLocalInputInfo</a><li>update_position
-: <a class="el" href="struct__DMXLocalInputInfo.html#o12">_DMXLocalInputInfo</a></ul>
-<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
-<li>valuator
-: <a class="el" href="struct__Event.html#o2">_Event</a><li>valuatorClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o12">_DMXLocalInitInfo</a><li>valuators
-: <a class="el" href="struct__DMXLocalInputInfo.html#o35">_DMXLocalInputInfo</a><li>vt_post_switch
-: <a class="el" href="struct__DMXLocalInputInfo.html#o14">_DMXLocalInputInfo</a><li>vt_pre_switch
-: <a class="el" href="struct__DMXLocalInputInfo.html#o13">_DMXLocalInputInfo</a><li>vt_switch
-: <a class="el" href="struct__DMXLocalInputInfo.html#o15">_DMXLocalInputInfo</a><li>vt_switch_pending
-: <a class="el" href="struct__DMXInputInfo.html#o14">_DMXInputInfo</a><li>vt_switched
-: <a class="el" href="struct__DMXInputInfo.html#o15">_DMXInputInfo</a></ul>
-<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
-<li>where
-: <a class="el" href="struct__DMXScreenInfo.html#o47">_DMXScreenInfo</a><li>whereRefScreen
-: <a class="el" href="struct__DMXScreenInfo.html#o50">_DMXScreenInfo</a><li>whereX
-: <a class="el" href="struct__DMXScreenInfo.html#o48">_DMXScreenInfo</a><li>whereY
-: <a class="el" href="struct__DMXScreenInfo.html#o49">_DMXScreenInfo</a><li>windows
-: <a class="el" href="struct__DMXInputInfo.html#o7">_DMXInputInfo</a></ul>
-<h3><a class="anchor" name="index_x">- x -</a></h3><ul>
-<li>xkb
-: <a class="el" href="struct__DMXLocalInitInfo.html#o5">_DMXLocalInitInfo</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/functions_vars.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/functions_vars.html
deleted file mode 100644
index 71c36065d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/functions_vars.html
+++ /dev/null
@@ -1,237 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindexHL" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_vars.html">Variables</a></div>
-<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_b">b</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_h">h</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_k">k</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_n">n</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_r">r</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_t">t</a> | <a class="qindex" href="#index_u">u</a> | <a class="qindex" href="#index_v">v</a> | <a class="qindex" href="#index_w">w</a> | <a class="qindex" href="#index_x">x</a></div>
-
-<p>
-
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>absmap
-: <a class="el" href="struct__myPrivate.html#o61">_myPrivate</a><li>argc
-: <a class="el" href="struct__dmxArg.html#o0">_dmxArg</a><li>argm
-: <a class="el" href="struct__dmxArg.html#o1">_dmxArg</a><li>argv
-: <a class="el" href="struct__dmxArg.html#o2">_dmxArg</a></ul>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>beBlackPixel
-: <a class="el" href="struct__DMXScreenInfo.html#o18">_DMXScreenInfo</a><li>beBPP
-: <a class="el" href="struct__DMXScreenInfo.html#o6">_DMXScreenInfo</a><li>beDefColormaps
-: <a class="el" href="struct__DMXScreenInfo.html#o17">_DMXScreenInfo</a><li>beDefVisualIndex
-: <a class="el" href="struct__DMXScreenInfo.html#o15">_DMXScreenInfo</a><li>beDepth
-: <a class="el" href="struct__DMXScreenInfo.html#o5">_DMXScreenInfo</a><li>beDepths
-: <a class="el" href="struct__DMXScreenInfo.html#o10">_DMXScreenInfo</a><li>beDisplay
-: <a class="el" href="struct__DMXScreenInfo.html#o2">_DMXScreenInfo</a><li>beHeight
-: <a class="el" href="struct__DMXScreenInfo.html#o4">_DMXScreenInfo</a><li>belFeedbackClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o25">_DMXLocalInitInfo</a><li>beNumDefColormaps
-: <a class="el" href="struct__DMXScreenInfo.html#o16">_DMXScreenInfo</a><li>beNumDepths
-: <a class="el" href="struct__DMXScreenInfo.html#o9">_DMXScreenInfo</a><li>beNumPixmapFormats
-: <a class="el" href="struct__DMXScreenInfo.html#o11">_DMXScreenInfo</a><li>beNumVisuals
-: <a class="el" href="struct__DMXScreenInfo.html#o13">_DMXScreenInfo</a><li>bePixmapFormats
-: <a class="el" href="struct__DMXScreenInfo.html#o12">_DMXScreenInfo</a><li>beVisuals
-: <a class="el" href="struct__DMXScreenInfo.html#o14">_DMXScreenInfo</a><li>beWhitePixel
-: <a class="el" href="struct__DMXScreenInfo.html#o19">_DMXScreenInfo</a><li>beWidth
-: <a class="el" href="struct__DMXScreenInfo.html#o3">_DMXScreenInfo</a><li>beXDPI
-: <a class="el" href="struct__DMXScreenInfo.html#o7">_DMXScreenInfo</a><li>beYDPI
-: <a class="el" href="struct__DMXScreenInfo.html#o8">_DMXScreenInfo</a><li>binding
-: <a class="el" href="struct__DMXLocalInputInfo.html#o3">_DMXLocalInputInfo</a><li>buttonClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o9">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
-<li>CloseScreen
-: <a class="el" href="struct__DMXScreenInfo.html#o59">_DMXScreenInfo</a><li>collect_events
-: <a class="el" href="struct__DMXLocalInputInfo.html#o16">_DMXLocalInputInfo</a><li>console
-: <a class="el" href="struct__DMXInputInfo.html#o6">_DMXInputInfo</a><li>core
-: <a class="el" href="struct__DMXInputInfo.html#o5">_DMXInputInfo</a><li>create_private
-: <a class="el" href="struct__DMXLocalInputInfo.html#o4">_DMXLocalInputInfo</a></ul>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>destroy_private
-: <a class="el" href="struct__DMXLocalInputInfo.html#o5">_DMXLocalInputInfo</a><li>detached
-: <a class="el" href="struct__DMXInputInfo.html#o2">_DMXInputInfo</a><li>deviceId
-: <a class="el" href="struct__DMXLocalInputInfo.html#o41">_DMXLocalInputInfo</a><li>deviceName
-: <a class="el" href="struct__DMXLocalInputInfo.html#o42">_DMXLocalInputInfo</a><li>devs
-: <a class="el" href="struct__DMXInputInfo.html#o17">_DMXInputInfo</a><li>dmxInput
-: <a class="el" href="struct__myPrivate.html#o62">_myPrivate</a><li>dpmsCapable
-: <a class="el" href="struct__DMXScreenInfo.html#o52">_DMXScreenInfo</a><li>dpmsEnabled
-: <a class="el" href="struct__DMXScreenInfo.html#o53">_DMXScreenInfo</a><li>dpmsOff
-: <a class="el" href="struct__DMXScreenInfo.html#o56">_DMXScreenInfo</a><li>dpmsStandby
-: <a class="el" href="struct__DMXScreenInfo.html#o54">_DMXScreenInfo</a><li>dpmsSuspend
-: <a class="el" href="struct__DMXScreenInfo.html#o55">_DMXScreenInfo</a><li>duration
-: <a class="el" href="struct__myPrivate.html#o50">_myPrivate</a></ul>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>event
-: <a class="el" href="struct__Event.html#o0">_Event</a><li>events
-: <a class="el" href="struct__EventQueue.html#o4">_EventQueue</a><li>extType
-: <a class="el" href="struct__DMXLocalInputInfo.html#o2">_DMXLocalInputInfo</a></ul>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
-<li>fd
-: <a class="el" href="struct__myPrivate.html#o37">_myPrivate</a><li>focusClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o20">_DMXLocalInitInfo</a><li>force
-: <a class="el" href="struct__DMXLocalInitInfo.html#o8">_DMXLocalInitInfo</a><li>freemap
-: <a class="el" href="struct__DMXLocalInitInfo.html#o3">_DMXLocalInitInfo</a><li>freename
-: <a class="el" href="struct__DMXInputInfo.html#o1">_DMXInputInfo</a><li>freenames
-: <a class="el" href="struct__DMXLocalInitInfo.html#o7">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
-<li>geometry
-: <a class="el" href="struct__DMXInputInfo.html#o20">_DMXInputInfo</a><li>get_info
-: <a class="el" href="struct__DMXLocalInputInfo.html#o9">_DMXLocalInputInfo</a><li>glyphSets
-: <a class="el" href="struct__dmxGlyphPriv.html#o0">_dmxGlyphPriv</a></ul>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>head
-: <a class="el" href="struct__DMXLocalInputInfo.html#o32">_DMXLocalInputInfo</a>, <a class="el" href="struct__EventQueue.html#o0">_EventQueue</a><li>history
-: <a class="el" href="struct__DMXLocalInputInfo.html#o34">_DMXLocalInputInfo</a></ul>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>index
-: <a class="el" href="struct__DMXScreenInfo.html#o1">_DMXScreenInfo</a><li>init
-: <a class="el" href="struct__DMXLocalInputInfo.html#o6">_DMXLocalInputInfo</a><li>inputIdx
-: <a class="el" href="struct__DMXLocalInputInfo.html#o29">_DMXLocalInputInfo</a>, <a class="el" href="struct__DMXInputInfo.html#o3">_DMXInputInfo</a><li>intFeedbackClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o26">_DMXLocalInitInfo</a><li>isCore
-: <a class="el" href="struct__DMXLocalInputInfo.html#o24">_DMXLocalInputInfo</a></ul>
-<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
-<li>kbdFeedbackClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o22">_DMXLocalInitInfo</a><li>kbdState
-: <a class="el" href="struct__myPrivate.html#o43">_myPrivate</a><li>kBell
-: <a class="el" href="struct__DMXLocalInputInfo.html#o22">_DMXLocalInputInfo</a><li>kctrl
-: <a class="el" href="struct__DMXLocalInputInfo.html#o26">_DMXLocalInputInfo</a><li>kCtrl
-: <a class="el" href="struct__DMXLocalInputInfo.html#o21">_DMXLocalInputInfo</a><li>keyboard
-: <a class="el" href="struct__DMXLocalInitInfo.html#o0">_DMXLocalInitInfo</a><li>keyClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o1">_DMXLocalInitInfo</a><li>keycodes
-: <a class="el" href="struct__DMXInputInfo.html#o18">_DMXInputInfo</a><li>keySyms
-: <a class="el" href="struct__DMXLocalInitInfo.html#o2">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
-<li>lastEventTime
-: <a class="el" href="struct__EventQueue.html#o2">_EventQueue</a><li>lastMotion
-: <a class="el" href="struct__EventQueue.html#o3">_EventQueue</a><li>lastY
-: <a class="el" href="struct__DMXLocalInputInfo.html#o31">_DMXLocalInputInfo</a><li>latereinit
-: <a class="el" href="struct__DMXLocalInputInfo.html#o8">_DMXLocalInputInfo</a><li>ledFeedbackClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o24">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>map
-: <a class="el" href="struct__DMXLocalInputInfo.html#o39">_DMXLocalInputInfo</a>, <a class="el" href="struct__DMXLocalInitInfo.html#o11">_DMXLocalInitInfo</a><li>mapOptimize
-: <a class="el" href="struct__DMXLocalInputInfo.html#o40">_DMXLocalInputInfo</a><li>mask
-: <a class="el" href="struct__myPrivate.html#o56">_myPrivate</a><li>maxres
-: <a class="el" href="struct__DMXLocalInitInfo.html#o19">_DMXLocalInitInfo</a><li>maxSymbols
-: <a class="el" href="struct__DMXLocalInitInfo.html#o28">_DMXLocalInitInfo</a><li>maxSymbolsSupported
-: <a class="el" href="struct__DMXLocalInitInfo.html#o29">_DMXLocalInitInfo</a><li>maxval
-: <a class="el" href="struct__DMXLocalInitInfo.html#o16">_DMXLocalInitInfo</a><li>mCtrl
-: <a class="el" href="struct__DMXLocalInputInfo.html#o20">_DMXLocalInputInfo</a><li>mctrl
-: <a class="el" href="struct__DMXLocalInputInfo.html#o27">_DMXLocalInputInfo</a><li>minres
-: <a class="el" href="struct__DMXLocalInitInfo.html#o18">_DMXLocalInitInfo</a><li>minval
-: <a class="el" href="struct__DMXLocalInitInfo.html#o15">_DMXLocalInitInfo</a><li>modMap
-: <a class="el" href="struct__DMXLocalInitInfo.html#o4">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>name
-: <a class="el" href="struct__DMXLocalInputInfo.html#o0">_DMXLocalInputInfo</a>, <a class="el" href="struct__DMXInputInfo.html#o0">_DMXInputInfo</a>, <a class="el" href="struct__DMXScreenInfo.html#o0">_DMXScreenInfo</a><li>names
-: <a class="el" href="struct__DMXLocalInitInfo.html#o6">_DMXLocalInitInfo</a><li>needsSync
-: <a class="el" href="struct__DMXScreenInfo.html#o58">_DMXScreenInfo</a><li>next
-: <a class="el" href="struct__DMXScreenInfo.html#o28">_DMXScreenInfo</a><li>numAbsAxes
-: <a class="el" href="struct__DMXLocalInitInfo.html#o14">_DMXLocalInitInfo</a><li>numButtons
-: <a class="el" href="struct__DMXLocalInitInfo.html#o10">_DMXLocalInitInfo</a><li>numDevs
-: <a class="el" href="struct__DMXInputInfo.html#o16">_DMXInputInfo</a><li>numLeds
-: <a class="el" href="struct__myPrivate.html#o59">_myPrivate</a><li>numRelAxes
-: <a class="el" href="struct__DMXLocalInitInfo.html#o13">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
-<li>off
-: <a class="el" href="struct__DMXLocalInputInfo.html#o11">_DMXLocalInputInfo</a><li>on
-: <a class="el" href="struct__DMXLocalInputInfo.html#o10">_DMXLocalInputInfo</a><li>over
-: <a class="el" href="struct__DMXScreenInfo.html#o29">_DMXScreenInfo</a></ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>pDequeueScreen
-: <a class="el" href="struct__EventQueue.html#o8">_EventQueue</a><li>pDevice
-: <a class="el" href="struct__myPrivate.html#o55">_myPrivate</a>, <a class="el" href="struct__DMXLocalInputInfo.html#o28">_DMXLocalInputInfo</a><li>pEnqueueScreen
-: <a class="el" href="struct__EventQueue.html#o7">_EventQueue</a><li>pict
-: <a class="el" href="struct__dmxPictPriv.html#o0">_dmxPictPriv</a><li>pitch
-: <a class="el" href="struct__myPrivate.html#o49">_myPrivate</a><li>pPtr
-: <a class="el" href="struct__EventQueue.html#o6">_EventQueue</a><li>private
-: <a class="el" href="struct__DMXLocalInputInfo.html#o23">_DMXLocalInputInfo</a><li>process_input
-: <a class="el" href="struct__DMXLocalInputInfo.html#o17">_DMXLocalInputInfo</a><li>proximityClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o21">_DMXLocalInitInfo</a><li>pScreen
-: <a class="el" href="struct__Event.html#o1">_Event</a><li>ptrFeedbackClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o23">_DMXLocalInitInfo</a></ul>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
-<li>reinit
-: <a class="el" href="struct__DMXLocalInputInfo.html#o7">_DMXLocalInputInfo</a><li>relmap
-: <a class="el" href="struct__myPrivate.html#o60">_myPrivate</a><li>remote
-: <a class="el" href="struct__DMXEventMap.html#o0">_DMXEventMap</a><li>res
-: <a class="el" href="struct__DMXLocalInitInfo.html#o17">_DMXLocalInitInfo</a><li>rootHeight
-: <a class="el" href="struct__DMXScreenInfo.html#o34">_DMXScreenInfo</a><li>rootWidth
-: <a class="el" href="struct__DMXScreenInfo.html#o33">_DMXScreenInfo</a><li>rootWin
-: <a class="el" href="struct__DMXScreenInfo.html#o30">_DMXScreenInfo</a><li>rootX
-: <a class="el" href="struct__DMXScreenInfo.html#o31">_DMXScreenInfo</a><li>rootXOrigin
-: <a class="el" href="struct__DMXScreenInfo.html#o35">_DMXScreenInfo</a><li>rootY
-: <a class="el" href="struct__DMXScreenInfo.html#o32">_DMXScreenInfo</a><li>rootYOrigin
-: <a class="el" href="struct__DMXScreenInfo.html#o36">_DMXScreenInfo</a></ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>savedMask
-: <a class="el" href="struct__dmxPictPriv.html#o1">_dmxPictPriv</a><li>savedMotionEvents
-: <a class="el" href="struct__DMXLocalInputInfo.html#o37">_DMXLocalInputInfo</a><li>savedSendsCore
-: <a class="el" href="struct__DMXLocalInputInfo.html#o38">_DMXLocalInputInfo</a><li>savedTimeout
-: <a class="el" href="struct__DMXScreenInfo.html#o51">_DMXScreenInfo</a><li>scrnDefDrawables
-: <a class="el" href="struct__DMXScreenInfo.html#o27">_DMXScreenInfo</a><li>scrnHeight
-: <a class="el" href="struct__DMXScreenInfo.html#o24">_DMXScreenInfo</a><li>scrnIdx
-: <a class="el" href="struct__DMXInputInfo.html#o4">_DMXInputInfo</a><li>scrnWidth
-: <a class="el" href="struct__DMXScreenInfo.html#o23">_DMXScreenInfo</a><li>scrnWin
-: <a class="el" href="struct__DMXScreenInfo.html#o20">_DMXScreenInfo</a><li>scrnX
-: <a class="el" href="struct__DMXScreenInfo.html#o21">_DMXScreenInfo</a><li>scrnXSign
-: <a class="el" href="struct__DMXScreenInfo.html#o25">_DMXScreenInfo</a><li>scrnY
-: <a class="el" href="struct__DMXScreenInfo.html#o22">_DMXScreenInfo</a><li>scrnYSign
-: <a class="el" href="struct__DMXScreenInfo.html#o26">_DMXScreenInfo</a><li>sendsCore
-: <a class="el" href="struct__DMXLocalInputInfo.html#o25">_DMXLocalInputInfo</a><li>server
-: <a class="el" href="struct__DMXEventMap.html#o1">_DMXEventMap</a><li>shadow
-: <a class="el" href="struct__DMXScreenInfo.html#o37">_DMXScreenInfo</a><li>shadowFBImage
-: <a class="el" href="struct__DMXScreenInfo.html#o39">_DMXScreenInfo</a><li>shadowGC
-: <a class="el" href="struct__DMXScreenInfo.html#o38">_DMXScreenInfo</a><li>shared
-: <a class="el" href="struct__DMXScreenInfo.html#o40">_DMXScreenInfo</a><li>sigioAdded
-: <a class="el" href="struct__DMXInputInfo.html#o13">_DMXInputInfo</a><li>sigioFd
-: <a class="el" href="struct__DMXInputInfo.html#o12">_DMXInputInfo</a><li>sigioFdCount
-: <a class="el" href="struct__DMXInputInfo.html#o11">_DMXInputInfo</a><li>sigioState
-: <a class="el" href="struct__DMXInputInfo.html#o10">_DMXInputInfo</a><li>stat
-: <a class="el" href="struct__DMXScreenInfo.html#o57">_DMXScreenInfo</a><li>strFeedbackClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o27">_DMXLocalInitInfo</a><li>symbols
-: <a class="el" href="struct__DMXLocalInitInfo.html#o30">_DMXLocalInitInfo</a>, <a class="el" href="struct__DMXInputInfo.html#o19">_DMXInputInfo</a></ul>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>tail
-: <a class="el" href="struct__DMXLocalInputInfo.html#o33">_DMXLocalInputInfo</a>, <a class="el" href="struct__EventQueue.html#o1">_EventQueue</a><li>type
-: <a class="el" href="struct__DMXLocalInputInfo.html#o1">_DMXLocalInputInfo</a></ul>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
-<li>update_info
-: <a class="el" href="struct__DMXLocalInputInfo.html#o19">_DMXLocalInputInfo</a><li>update_position
-: <a class="el" href="struct__DMXLocalInputInfo.html#o12">_DMXLocalInputInfo</a></ul>
-<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
-<li>valuator
-: <a class="el" href="struct__Event.html#o2">_Event</a><li>valuatorClass
-: <a class="el" href="struct__DMXLocalInitInfo.html#o12">_DMXLocalInitInfo</a><li>valuators
-: <a class="el" href="struct__DMXLocalInputInfo.html#o35">_DMXLocalInputInfo</a><li>vt_post_switch
-: <a class="el" href="struct__DMXLocalInputInfo.html#o14">_DMXLocalInputInfo</a><li>vt_pre_switch
-: <a class="el" href="struct__DMXLocalInputInfo.html#o13">_DMXLocalInputInfo</a><li>vt_switch
-: <a class="el" href="struct__DMXLocalInputInfo.html#o15">_DMXLocalInputInfo</a><li>vt_switch_pending
-: <a class="el" href="struct__DMXInputInfo.html#o14">_DMXInputInfo</a><li>vt_switched
-: <a class="el" href="struct__DMXInputInfo.html#o15">_DMXInputInfo</a></ul>
-<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
-<li>where
-: <a class="el" href="struct__DMXScreenInfo.html#o47">_DMXScreenInfo</a><li>whereRefScreen
-: <a class="el" href="struct__DMXScreenInfo.html#o50">_DMXScreenInfo</a><li>whereX
-: <a class="el" href="struct__DMXScreenInfo.html#o48">_DMXScreenInfo</a><li>whereY
-: <a class="el" href="struct__DMXScreenInfo.html#o49">_DMXScreenInfo</a><li>windows
-: <a class="el" href="struct__DMXInputInfo.html#o7">_DMXInputInfo</a></ul>
-<h3><a class="anchor" name="index_x">- x -</a></h3><ul>
-<li>xkb
-: <a class="el" href="struct__DMXLocalInitInfo.html#o5">_DMXLocalInitInfo</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/globals.html
deleted file mode 100644
index 5a81930af..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals.html
+++ /dev/null
@@ -1,522 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
-<div class="qindex"><a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumeration&nbsp;values</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
-<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_k">k</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_q">q</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_u">u</a> | <a class="qindex" href="#index_x">x</a></div>
-
-<p>
-
-<p>
-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>AbortDDX()
-: <a class="el" href="dmxinit_8c.html#a36">dmxinit.c</a><li>AbortServer()
-: <a class="el" href="dmxlog_8c.html#a3">dmxlog.c</a><li>AddOtherInputDevices()
-: <a class="el" href="dmxxinput_8c.html#a4">dmxxinput.c</a></ul>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
-<li>ChangeDeviceControl()
-: <a class="el" href="dmxxinput_8c.html#a8">dmxxinput.c</a><li>ChangeKeyboardDevice()
-: <a class="el" href="dmxxinput_8c.html#a1">dmxxinput.c</a><li>ChangePointerDevice()
-: <a class="el" href="dmxxinput_8c.html#a2">dmxxinput.c</a><li>CloseInputDevice()
-: <a class="el" href="dmxxinput_8c.html#a3">dmxxinput.c</a></ul>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>ddxGiveUp()
-: <a class="el" href="dmxinit_8c.html#a37">dmxinit.c</a><li>ddxProcessArgument()
-: <a class="el" href="dmxinit_8c.html#a40">dmxinit.c</a><li>ddxUseMsg()
-: <a class="el" href="dmxinit_8c.html#a41">dmxinit.c</a><li>DMX_ACTIVESIGIO
-: <a class="el" href="dmxinput_8h.html#a31a14">dmxinput.h</a><li>DMX_ATOMNAME
-: <a class="el" href="dmxprop_8c.html#a0">dmxprop.c</a><li>DMX_GET_COLORMAP_PRIV
-: <a class="el" href="dmxcmap_8h.html#a1">dmxcmap.h</a><li>DMX_GET_GC_PRIV
-: <a class="el" href="dmxgc_8h.html#a0">dmxgc.h</a><li>DMX_GET_GLYPH_PRIV
-: <a class="el" href="dmxpict_8h.html#a2">dmxpict.h</a><li>DMX_GET_PICT_PRIV
-: <a class="el" href="dmxpict_8h.html#a0">dmxpict.h</a><li>DMX_GET_PIXMAP_PRIV
-: <a class="el" href="dmxpixmap_8h.html#a0">dmxpixmap.h</a><li>DMX_GET_WINDOW_PRIV
-: <a class="el" href="dmxwindow_8h.html#a0">dmxwindow.h</a><li>DMX_IDENT
-: <a class="el" href="dmxprop_8c.html#a1">dmxprop.c</a><li>DMX_MAX_SIGIO_FDS
-: <a class="el" href="dmxinput_8h.html#a0">dmxinput.h</a><li>DMX_NOSIGIO
-: <a class="el" href="dmxinput_8h.html#a31a12">dmxinput.h</a><li>DMX_SET_COLORMAP_PRIV
-: <a class="el" href="dmxcmap_8h.html#a0">dmxcmap.h</a><li>DMX_SET_GLYPH_PRIV
-: <a class="el" href="dmxpict_8h.html#a1">dmxpict.h</a><li>DMX_STAT_BIN0
-: <a class="el" href="dmxstat_8h.html#a3">dmxstat.h</a><li>DMX_STAT_BINMULT
-: <a class="el" href="dmxstat_8h.html#a4">dmxstat.h</a><li>DMX_STAT_BINS
-: <a class="el" href="dmxstat_8h.html#a2">dmxstat.h</a><li>DMX_STAT_INTERVAL
-: <a class="el" href="dmxstat_8h.html#a1">dmxstat.h</a><li>DMX_STAT_LENGTH
-: <a class="el" href="dmxstat_8h.html#a0">dmxstat.h</a><li>DMX_UNWRAP
-: <a class="el" href="dmx_8h.html#a1">dmx.h</a><li>DMX_UPDATE_COPY
-: <a class="el" href="dmxinput_8h.html#a30a9">dmxinput.h</a><li>DMX_UPDATE_REALIZE
-: <a class="el" href="dmxinput_8h.html#a30a6">dmxinput.h</a><li>DMX_UPDATE_REPARENT
-: <a class="el" href="dmxinput_8h.html#a30a11">dmxinput.h</a><li>DMX_UPDATE_RESIZE
-: <a class="el" href="dmxinput_8h.html#a30a10">dmxinput.h</a><li>DMX_UPDATE_RESTACK
-: <a class="el" href="dmxinput_8h.html#a30a8">dmxinput.h</a><li>DMX_UPDATE_UNREALIZE
-: <a class="el" href="dmxinput_8h.html#a30a7">dmxinput.h</a><li>DMX_USESIGIO
-: <a class="el" href="dmxinput_8h.html#a31a13">dmxinput.h</a><li>DMX_WRAP
-: <a class="el" href="dmx_8h.html#a0">dmx.h</a><li>DMXAddBackendInput()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a31">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a39">dmxext.h</a><li>DMXAddConsoleInput()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a32">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a40">dmxext.h</a><li>dmxAddInput()
-: <a class="el" href="dmxextension_8h.html#a12">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a7">dmxextension.c</a><li>DMXAddInput()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a30">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a37">dmxext.h</a><li>dmxAddRemoveScreens
-: <a class="el" href="dmxinit_8c.html#a17">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a18">dmx.h</a><li>DMXAddScreen()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a21">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a30">dmxext.h</a><li>dmxArgAdd()
-: <a class="el" href="dmxarg_8h.html#a3">dmxarg.h</a>, <a class="el" href="dmxarg_8c.html#a3">dmxarg.c</a><li>dmxArgC()
-: <a class="el" href="dmxarg_8h.html#a5">dmxarg.h</a>, <a class="el" href="dmxarg_8c.html#a5">dmxarg.c</a><li>dmxArgCreate()
-: <a class="el" href="dmxarg_8h.html#a1">dmxarg.h</a>, <a class="el" href="dmxarg_8c.html#a1">dmxarg.c</a><li>dmxArgFree()
-: <a class="el" href="dmxarg_8h.html#a2">dmxarg.h</a>, <a class="el" href="dmxarg_8c.html#a2">dmxarg.c</a><li>dmxArgParse()
-: <a class="el" href="dmxarg_8h.html#a6">dmxarg.h</a>, <a class="el" href="dmxarg_8c.html#a6">dmxarg.c</a><li>dmxArgV()
-: <a class="el" href="dmxarg_8h.html#a4">dmxarg.h</a>, <a class="el" href="dmxarg_8c.html#a4">dmxarg.c</a><li>dmxAttachScreen()
-: <a class="el" href="dmxextension_8h.html#a17">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a18">dmxextension.c</a><li>dmxBackendCollectEvents()
-: <a class="el" href="dmxbackend_8h.html#a6">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a25">dmxbackend.c</a><li>dmxBackendCreatePrivate()
-: <a class="el" href="dmxbackend_8h.html#a0">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a12">dmxbackend.c</a><li>dmxBackendDestroyPrivate()
-: <a class="el" href="dmxbackend_8h.html#a1">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a13">dmxbackend.c</a><li>dmxBackendFunctions()
-: <a class="el" href="dmxbackend_8h.html#a8">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a33">dmxbackend.c</a><li>dmxBackendInit()
-: <a class="el" href="dmxbackend_8h.html#a2">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a30">dmxbackend.c</a><li>dmxBackendKbdGetInfo()
-: <a class="el" href="dmxbackend_8h.html#a5">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a32">dmxbackend.c</a><li>dmxBackendLateReInit()
-: <a class="el" href="dmxbackend_8h.html#a3">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a29">dmxbackend.c</a><li>dmxBackendMouGetInfo()
-: <a class="el" href="dmxbackend_8h.html#a4">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a31">dmxbackend.c</a><li>dmxBackendProcessInput()
-: <a class="el" href="dmxbackend_8h.html#a7">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a26">dmxbackend.c</a><li>dmxBackendUpdatePosition()
-: <a class="el" href="dmxbackend_8h.html#a9">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a24">dmxbackend.c</a><li>dmxBECloseScreen()
-: <a class="el" href="dmxscrinit_8h.html#a3">dmxscrinit.h</a>, <a class="el" href="dmxscrinit_8c.html#a13">dmxscrinit.c</a><li>dmxBECreateColormap()
-: <a class="el" href="dmxcmap_8h.html#a10">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a2">dmxcmap.c</a><li>dmxBECreateCursor()
-: <a class="el" href="dmxcursor_8h.html#a13">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a29">dmxcursor.c</a><li>dmxBECreateGC()
-: <a class="el" href="dmxgc_8h.html#a15">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a3">dmxgc.c</a><li>dmxBECreatePixmap()
-: <a class="el" href="dmxpixmap_8h.html#a8">dmxpixmap.h</a>, <a class="el" href="dmxpixmap_8c.html#a1">dmxpixmap.c</a><li>dmxBEDestroyWindow()
-: <a class="el" href="dmxwindow_8h.html#a31">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a11">dmxwindow.c</a><li>dmxBEFreeColormap()
-: <a class="el" href="dmxcmap_8h.html#a11">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a4">dmxcmap.c</a><li>dmxBEFreeCursor()
-: <a class="el" href="dmxcursor_8h.html#a14">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a31">dmxcursor.c</a><li>dmxBEFreeFont()
-: <a class="el" href="dmxfont_8h.html#a8">dmxfont.h</a>, <a class="el" href="dmxfont_8c.html#a14">dmxfont.c</a><li>dmxBEFreeGC()
-: <a class="el" href="dmxgc_8h.html#a16">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a8">dmxgc.c</a><li>dmxBEFreeGlyphSet()
-: <a class="el" href="dmxpict_8h.html#a30">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a16">dmxpict.c</a><li>dmxBEFreePicture()
-: <a class="el" href="dmxpict_8h.html#a31">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a20">dmxpict.c</a><li>dmxBEFreePixmap()
-: <a class="el" href="dmxpixmap_8h.html#a9">dmxpixmap.h</a>, <a class="el" href="dmxpixmap_8c.html#a3">dmxpixmap.c</a><li>dmxBELoadFont()
-: <a class="el" href="dmxfont_8h.html#a7">dmxfont.h</a>, <a class="el" href="dmxfont_8c.html#a12">dmxfont.c</a><li>dmxBEScreenInit()
-: <a class="el" href="dmxscrinit_8h.html#a2">dmxscrinit.h</a>, <a class="el" href="dmxscrinit_8c.html#a11">dmxscrinit.c</a><li>dmxBitmapToRegion()
-: <a class="el" href="dmxpixmap_8h.html#a7">dmxpixmap.h</a>, <a class="el" href="dmxpixmap_8c.html#a5">dmxpixmap.c</a><li>dmxChangeBorderWidth()
-: <a class="el" href="dmxwindow_8h.html#a28">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a25">dmxwindow.c</a><li>dmxChangeClip()
-: <a class="el" href="dmxgc_8h.html#a12">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a10">dmxgc.c</a><li>DMXChangeDesktopAttributes()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a27">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a34">dmxext.h</a><li>dmxChangeGC()
-: <a class="el" href="dmxgc_8h.html#a9">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a6">dmxgc.c</a><li>dmxChangePicture()
-: <a class="el" href="dmxpict_8h.html#a18">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a25">dmxpict.c</a><li>dmxChangePictureClip()
-: <a class="el" href="dmxpict_8h.html#a16">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a23">dmxpict.c</a><li>dmxChangePointerControl()
-: <a class="el" href="dmxinputinit_8h.html#a54">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a16">dmxinputinit.c</a><li>DMXChangeScreensAttributes()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a20">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a29">dmxext.h</a><li>dmxChangeWindowAttributes()
-: <a class="el" href="dmxwindow_8h.html#a18">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a14">dmxwindow.c</a><li>dmxCheckCursor()
-: <a class="el" href="dmxcursor_8h.html#a10">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a41">dmxcursor.c</a><li>dmxCheckSpecialKeys()
-: <a class="el" href="dmxevents_8h.html#a2">dmxevents.h</a>, <a class="el" href="dmxevents_8c.html#a28">dmxevents.c</a><li>dmxCloseIndexed()
-: <a class="el" href="dmxpict_8h.html#a24">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a31">dmxpict.c</a><li>dmxCloseScreen()
-: <a class="el" href="dmxscrinit_8c.html#a9">dmxscrinit.c</a><li>dmxColormapFromDefaultVisual()
-: <a class="el" href="dmxvisual_8h.html#a2">dmxvisual.h</a>, <a class="el" href="dmxvisual_8c.html#a2">dmxvisual.c</a><li>dmxColormapPrivateIndex
-: <a class="el" href="dmxscrinit_8c.html#a6">dmxscrinit.c</a>, <a class="el" href="dmxcmap_8h.html#a4">dmxcmap.h</a><li>dmxColormapPrivPtr
-: <a class="el" href="dmxcmap_8h.html#a3">dmxcmap.h</a><li>dmxColormapPrivRec
-: <a class="el" href="dmxcmap_8h.html#a2">dmxcmap.h</a><li>dmxCommonCopyPrivate()
-: <a class="el" href="dmxcommon_8h.html#a27">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a26">dmxcommon.c</a><li>dmxCommonKbdBell()
-: <a class="el" href="dmxcommon_8h.html#a16">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a11">dmxcommon.c</a><li>dmxCommonKbdCtrl()
-: <a class="el" href="dmxcommon_8h.html#a15">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a9">dmxcommon.c</a><li>dmxCommonKbdGetInfo()
-: <a class="el" href="dmxcommon_8h.html#a13">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a13">dmxcommon.c</a><li>dmxCommonKbdGetMap()
-: <a class="el" href="dmxcommon_8h.html#a14">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a12">dmxcommon.c</a><li>dmxCommonKbdOff()
-: <a class="el" href="dmxcommon_8h.html#a18">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a15">dmxcommon.c</a><li>dmxCommonKbdOn()
-: <a class="el" href="dmxcommon_8h.html#a17">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a14">dmxcommon.c</a><li>dmxCommonMouCtrl()
-: <a class="el" href="dmxcommon_8h.html#a20">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a10">dmxcommon.c</a><li>dmxCommonMouGetMap()
-: <a class="el" href="dmxcommon_8h.html#a19">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a19">dmxcommon.c</a><li>dmxCommonMouOff()
-: <a class="el" href="dmxcommon_8h.html#a22">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a24">dmxcommon.c</a><li>dmxCommonMouOn()
-: <a class="el" href="dmxcommon_8h.html#a21">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a23">dmxcommon.c</a><li>dmxCommonOthGetInfo()
-: <a class="el" href="dmxcommon_8h.html#a26">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a18">dmxcommon.c</a><li>dmxCommonOthOff()
-: <a class="el" href="dmxcommon_8h.html#a25">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a17">dmxcommon.c</a><li>dmxCommonOthOn()
-: <a class="el" href="dmxcommon_8h.html#a24">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a16">dmxcommon.c</a><li>dmxCommonRestoreState()
-: <a class="el" href="dmxcommon_8h.html#a29">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a28">dmxcommon.c</a><li>dmxCommonSaveState()
-: <a class="el" href="dmxcommon_8h.html#a28">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a27">dmxcommon.c</a><li>dmxComposite()
-: <a class="el" href="dmxpict_8h.html#a20">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a27">dmxpict.c</a><li>dmxCompositeRects()
-: <a class="el" href="dmxpict_8h.html#a22">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a29">dmxpict.c</a><li>dmxComputeWidthHeight()
-: <a class="el" href="dmxcb_8h.html#a5">dmxcb.h</a>, <a class="el" href="dmxcb_8c.html#a8">dmxcb.c</a><li>DMXConfigCmd
-: <a class="el" href="dmxconfig_8c.html#a9">dmxconfig.c</a><li>DMXConfigCmdPtr
-: <a class="el" href="dmxconfig_8c.html#a10">dmxconfig.c</a><li>DMXConfigComment
-: <a class="el" href="dmxparse_8h.html#a8">dmxparse.h</a><li>DMXConfigCommentPtr
-: <a class="el" href="dmxparse_8h.html#a9">dmxparse.h</a><li>dmxConfigConfigure()
-: <a class="el" href="dmxconfig_8h.html#a10">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a32">dmxconfig.c</a><li>DMXConfigDisplay
-: <a class="el" href="dmxparse_8h.html#a14">dmxparse.h</a><li>DMXConfigDisplayPtr
-: <a class="el" href="dmxparse_8h.html#a15">dmxparse.h</a><li>DMXConfigEntry
-: <a class="el" href="dmxparse_8h.html#a26">dmxparse.h</a><li>DMXConfigEntryPtr
-: <a class="el" href="dmxparse_8h.html#a27">dmxparse.h</a><li>DMXConfigFullDim
-: <a class="el" href="dmxparse_8h.html#a12">dmxparse.h</a><li>DMXConfigFullDimPtr
-: <a class="el" href="dmxparse_8h.html#a13">dmxparse.h</a><li>DMXConfigList
-: <a class="el" href="dmxconfig_8c.html#a7">dmxconfig.c</a><li>DMXConfigListPtr
-: <a class="el" href="dmxconfig_8c.html#a8">dmxconfig.c</a><li>dmxConfigLog()
-: <a class="el" href="dmxparse_8h.html#a38">dmxparse.h</a>, <a class="el" href="dmxparse_8c.html#a0">dmxparse.c</a><li>DMXConfigNumber
-: <a class="el" href="dmxparse_8h.html#a4">dmxparse.h</a><li>DMXConfigNumberPtr
-: <a class="el" href="dmxparse_8h.html#a5">dmxparse.h</a><li>DMXConfigOption
-: <a class="el" href="dmxparse_8h.html#a18">dmxparse.h</a><li>DMXConfigOptionPtr
-: <a class="el" href="dmxparse_8h.html#a19">dmxparse.h</a><li>DMXConfigPair
-: <a class="el" href="dmxparse_8h.html#a6">dmxparse.h</a><li>DMXConfigPairPtr
-: <a class="el" href="dmxparse_8h.html#a7">dmxparse.h</a><li>DMXConfigParam
-: <a class="el" href="dmxparse_8h.html#a20">dmxparse.h</a><li>DMXConfigParamPtr
-: <a class="el" href="dmxparse_8h.html#a21">dmxparse.h</a><li>DMXConfigPartDim
-: <a class="el" href="dmxparse_8h.html#a10">dmxparse.h</a><li>DMXConfigPartDimPtr
-: <a class="el" href="dmxparse_8h.html#a11">dmxparse.h</a><li>dmxConfigPrint()
-: <a class="el" href="dmxprint_8h.html#a0">dmxprint.h</a>, <a class="el" href="dmxprint_8c.html#a25">dmxprint.c</a><li>dmxConfigSetMaxScreens()
-: <a class="el" href="dmxconfig_8h.html#a11">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a33">dmxconfig.c</a><li>dmxConfigStoreConfig()
-: <a class="el" href="dmxconfig_8h.html#a9">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a19">dmxconfig.c</a><li>dmxConfigStoreDisplay()
-: <a class="el" href="dmxconfig_8h.html#a5">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a15">dmxconfig.c</a><li>dmxConfigStoreFile()
-: <a class="el" href="dmxconfig_8h.html#a8">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a18">dmxconfig.c</a><li>dmxConfigStoreInput()
-: <a class="el" href="dmxconfig_8h.html#a6">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a16">dmxconfig.c</a><li>dmxConfigStoreXInput()
-: <a class="el" href="dmxconfig_8h.html#a7">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a17">dmxconfig.c</a><li>DMXConfigString
-: <a class="el" href="dmxparse_8h.html#a2">dmxparse.h</a><li>DMXConfigStringPtr
-: <a class="el" href="dmxparse_8h.html#a3">dmxparse.h</a><li>DMXConfigSub
-: <a class="el" href="dmxparse_8h.html#a22">dmxparse.h</a><li>DMXConfigSubPtr
-: <a class="el" href="dmxparse_8h.html#a23">dmxparse.h</a><li>DMXConfigToken
-: <a class="el" href="dmxparse_8h.html#a0">dmxparse.h</a><li>DMXConfigTokenPtr
-: <a class="el" href="dmxparse_8h.html#a1">dmxparse.h</a><li>DMXConfigVirtual
-: <a class="el" href="dmxparse_8h.html#a24">dmxparse.h</a><li>dmxConfigVirtualPrint()
-: <a class="el" href="dmxprint_8h.html#a1">dmxprint.h</a>, <a class="el" href="dmxprint_8c.html#a26">dmxprint.c</a><li>DMXConfigVirtualPtr
-: <a class="el" href="dmxparse_8h.html#a25">dmxparse.h</a><li>DMXConfigWall
-: <a class="el" href="dmxparse_8h.html#a16">dmxparse.h</a><li>DMXConfigWallPtr
-: <a class="el" href="dmxparse_8h.html#a17">dmxparse.h</a><li>dmxConnectionBlockCallback()
-: <a class="el" href="dmxcb_8h.html#a6">dmxcb.h</a>, <a class="el" href="dmxcb_8c.html#a9">dmxcb.c</a><li>dmxConsoleCapture()
-: <a class="el" href="dmxconsole_8h.html#a10">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a47">dmxconsole.c</a><li>dmxConsoleCollectEvents()
-: <a class="el" href="dmxconsole_8h.html#a6">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a36">dmxconsole.c</a><li>dmxConsoleCreatePrivate()
-: <a class="el" href="dmxconsole_8h.html#a0">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a25">dmxconsole.c</a><li>dmxConsoleDestroyPrivate()
-: <a class="el" href="dmxconsole_8h.html#a1">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a26">dmxconsole.c</a><li>dmxConsoleFunctions()
-: <a class="el" href="dmxconsole_8h.html#a7">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a45">dmxconsole.c</a><li>dmxConsoleInit()
-: <a class="el" href="dmxconsole_8h.html#a2">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a42">dmxconsole.c</a><li>dmxConsoleKbdGetInfo()
-: <a class="el" href="dmxconsole_8h.html#a5">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a44">dmxconsole.c</a><li>dmxConsoleMouGetInfo()
-: <a class="el" href="dmxconsole_8h.html#a4">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a43">dmxconsole.c</a><li>dmxConsoleReInit()
-: <a class="el" href="dmxconsole_8h.html#a3">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a41">dmxconsole.c</a><li>dmxConsoleUncapture()
-: <a class="el" href="dmxconsole_8h.html#a11">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a48">dmxconsole.c</a><li>dmxConsoleUpdateInfo()
-: <a class="el" href="dmxconsole_8h.html#a12">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a32">dmxconsole.c</a><li>dmxConsoleUpdatePosition()
-: <a class="el" href="dmxconsole_8h.html#a8">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a35">dmxconsole.c</a><li>dmxCopyArea()
-: <a class="el" href="dmxgcops_8h.html#a3">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a5">dmxgcops.c</a><li>dmxCopyClip()
-: <a class="el" href="dmxgc_8h.html#a14">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a12">dmxgc.c</a><li>dmxCopyGC()
-: <a class="el" href="dmxgc_8h.html#a10">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a7">dmxgc.c</a><li>dmxCopyPlane()
-: <a class="el" href="dmxgcops_8h.html#a4">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a6">dmxgcops.c</a><li>dmxCopyWindow()
-: <a class="el" href="dmxwindow_8h.html#a25">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a22">dmxwindow.c</a><li>dmxCreateAndRealizeWindow()
-: <a class="el" href="dmxwindow_8h.html#a14">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a9">dmxwindow.c</a><li>dmxCreateColormap()
-: <a class="el" href="dmxcmap_8h.html#a5">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a3">dmxcmap.c</a><li>dmxCreateDefColormap()
-: <a class="el" href="dmxcmap_8h.html#a9">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a8">dmxcmap.c</a><li>dmxCreateGC()
-: <a class="el" href="dmxgc_8h.html#a7">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a4">dmxgc.c</a><li>dmxCreatePicture()
-: <a class="el" href="dmxpict_8h.html#a14">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a19">dmxpict.c</a><li>dmxCreatePictureList()
-: <a class="el" href="dmxpict_8h.html#a12">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a18">dmxpict.c</a><li>dmxCreatePixmap()
-: <a class="el" href="dmxpixmap_8h.html#a5">dmxpixmap.h</a>, <a class="el" href="dmxpixmap_8c.html#a2">dmxpixmap.c</a><li>dmxCreateWindow()
-: <a class="el" href="dmxwindow_8h.html#a15">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a10">dmxwindow.c</a><li>dmxCursorNoMulti()
-: <a class="el" href="dmxcursor_8h.html#a8">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a12">dmxcursor.c</a><li>dmxCursorPrivPtr
-: <a class="el" href="dmxcursor_8h.html#a2">dmxcursor.h</a><li>dmxCursorPrivRec
-: <a class="el" href="dmxcursor_8h.html#a1">dmxcursor.h</a><li>dmxDebug
-: <a class="el" href="dmxlog_8h.html#a18a0">dmxlog.h</a><li>dmxDepth
-: <a class="el" href="dmxinit_8c.html#a13">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a14">dmx.h</a><li>dmxDestroyClip()
-: <a class="el" href="dmxgc_8h.html#a13">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a11">dmxgc.c</a><li>dmxDestroyColormap()
-: <a class="el" href="dmxcmap_8h.html#a6">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a5">dmxcmap.c</a><li>dmxDestroyGC()
-: <a class="el" href="dmxgc_8h.html#a11">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a9">dmxgc.c</a><li>dmxDestroyPicture()
-: <a class="el" href="dmxpict_8h.html#a15">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a22">dmxpict.c</a><li>dmxDestroyPictureClip()
-: <a class="el" href="dmxpict_8h.html#a17">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a24">dmxpict.c</a><li>dmxDestroyPictureList()
-: <a class="el" href="dmxpict_8h.html#a13">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a21">dmxpict.c</a><li>dmxDestroyPixmap()
-: <a class="el" href="dmxpixmap_8h.html#a6">dmxpixmap.h</a>, <a class="el" href="dmxpixmap_8c.html#a4">dmxpixmap.c</a><li>dmxDestroyWindow()
-: <a class="el" href="dmxwindow_8h.html#a16">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a12">dmxwindow.c</a><li>dmxDetachScreen()
-: <a class="el" href="dmxextension_8h.html#a18">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a23">dmxextension.c</a><li>dmxDPMSInit()
-: <a class="el" href="dmxdpms_8h.html#a0">dmxdpms.h</a>, <a class="el" href="dmxdpms_8c.html#a3">dmxdpms.c</a><li>dmxDPMSTerm()
-: <a class="el" href="dmxdpms_8h.html#a1">dmxdpms.h</a>, <a class="el" href="dmxdpms_8c.html#a4">dmxdpms.c</a><li>dmxDPMSWakeup()
-: <a class="el" href="dmxdpms_8h.html#a2">dmxdpms.h</a>, <a class="el" href="dmxdpms_8c.html#a5">dmxdpms.c</a><li>dmxDummyKbdGetInfo()
-: <a class="el" href="dmxdummy_8h.html#a1">dmxdummy.h</a>, <a class="el" href="dmxdummy_8c.html#a0">dmxdummy.c</a><li>dmxDummyMouGetInfo()
-: <a class="el" href="dmxdummy_8h.html#a0">dmxdummy.h</a>, <a class="el" href="dmxdummy_8c.html#a1">dmxdummy.c</a><li>dmxEnqueue()
-: <a class="el" href="dmxevents_8h.html#a1">dmxevents.h</a>, <a class="el" href="dmxevents_8c.html#a27">dmxevents.c</a><li>dmxeqEnqueue()
-: <a class="el" href="dmxeq_8c.html#a13">dmxeq.c</a>, <a class="el" href="dmxinput_8h.html#a24">dmxinput.h</a><li>dmxeqProcessInputEvents()
-: <a class="el" href="dmxeq_8h.html#a1">dmxeq.h</a>, <a class="el" href="dmxeq_8c.html#a16">dmxeq.c</a><li>dmxeqSwitchScreen()
-: <a class="el" href="dmxeq_8c.html#a14">dmxeq.c</a>, <a class="el" href="dmxinput_8h.html#a25">dmxinput.h</a><li>dmxError
-: <a class="el" href="dmxlog_8h.html#a18a3">dmxlog.h</a><li>dmxErrorOccurred
-: <a class="el" href="dmxinit_8c.html#a7">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a9">dmx.h</a><li>DMXEventMap
-: <a class="el" href="dmxinputinit_8h.html#a34">dmxinputinit.h</a><li>dmxEventName()
-: <a class="el" href="dmxlog_8h.html#a9">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a17">dmxlog.c</a><li>DMXExtensionInit()
-: <a class="el" href="programs_2Xserver_2Xext_2dmx_8c.html#a3">programs/Xserver/Xext/dmx.c</a><li>dmxFatal
-: <a class="el" href="dmxlog_8h.html#a18a4">dmxlog.h</a><li>dmxFillPolygon()
-: <a class="el" href="dmxgcops_8h.html#a10">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a12">dmxgcops.c</a><li>dmxFillSpans()
-: <a class="el" href="dmxgcops_8h.html#a0">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a2">dmxgcops.c</a><li>dmxFindPointerScreen()
-: <a class="el" href="dmxcommon_8h.html#a23">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a25">dmxcommon.c</a><li>dmxFlushPendingSyncs()
-: <a class="el" href="dmxextension_8h.html#a6">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a11">dmxextension.c</a><li>dmxFontPath
-: <a class="el" href="dmxinit_8c.html#a8">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a16">dmx.h</a><li>dmxFontPrivateIndex
-: <a class="el" href="dmxscrinit_8c.html#a4">dmxscrinit.c</a>, <a class="el" href="dmxfont_8h.html#a2">dmxfont.h</a><li>dmxFontPrivPtr
-: <a class="el" href="dmxfont_8h.html#a1">dmxfont.h</a><li>dmxFontPrivRec
-: <a class="el" href="dmxfont_8h.html#a0">dmxfont.h</a><li>DMXForceWindowCreation()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a13">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a26">dmxext.h</a><li>dmxForceWindowCreation()
-: <a class="el" href="dmxextension_8h.html#a5">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a10">dmxextension.c</a><li>dmxGCPrivateIndex
-: <a class="el" href="dmxscrinit_8c.html#a2">dmxscrinit.c</a>, <a class="el" href="dmxgc_8h.html#a5">dmxgc.h</a><li>dmxGCPrivPtr
-: <a class="el" href="dmxgc_8h.html#a4">dmxgc.h</a><li>dmxGCPrivRec
-: <a class="el" href="dmxgc_8h.html#a3">dmxgc.h</a><li>DMXGetDesktopAttributes()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a24">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a33">dmxext.h</a><li>dmxGetGlobalPosition()
-: <a class="el" href="dmxevents_8c.html#a21">dmxevents.c</a>, <a class="el" href="dmxinput_8h.html#a26">dmxinput.h</a><li>dmxGetImage()
-: <a class="el" href="dmxgcops_8h.html#a20">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a22">dmxgcops.c</a><li>dmxGetInputAttributes()
-: <a class="el" href="dmxextension_8h.html#a11">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a5">dmxextension.c</a><li>DMXGetInputAttributes()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a29">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a36">dmxext.h</a><li>DMXGetInputCount()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a28">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a35">dmxext.h</a><li>dmxGetInputCount()
-: <a class="el" href="dmxextension_8h.html#a10">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a4">dmxextension.c</a><li>dmxGetLogLevel()
-: <a class="el" href="dmxlog_8h.html#a6">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a2">dmxlog.c</a><li>dmxGetNumScreens()
-: <a class="el" href="dmxextension_8h.html#a4">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a9">dmxextension.c</a><li>DMXGetScreenAttributes()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a15">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a28">dmxext.h</a><li>dmxGetScreenAttributes()
-: <a class="el" href="dmxextension_8h.html#a7">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a1">dmxextension.c</a><li>DMXGetScreenCount()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a14">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a27">dmxext.h</a><li>dmxGetSpans()
-: <a class="el" href="dmxgcops_8h.html#a21">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a23">dmxgcops.c</a><li>DMXGetWindowAttributes()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a23">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a32">dmxext.h</a><li>dmxGetWindowAttributes()
-: <a class="el" href="dmxextension_8h.html#a8">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a2">dmxextension.c</a><li>dmxGlobalHeight
-: <a class="el" href="dmxcb_8h.html#a1">dmxcb.h</a>, <a class="el" href="dmxcb_8c.html#a6">dmxcb.c</a><li>dmxGlobalWidth
-: <a class="el" href="dmxcb_8h.html#a0">dmxcb.h</a>, <a class="el" href="dmxcb_8c.html#a5">dmxcb.c</a><li>dmxGlyphPrivPtr
-: <a class="el" href="dmxpict_8h.html#a6">dmxpict.h</a><li>dmxGlyphPrivRec
-: <a class="el" href="dmxpict_8h.html#a5">dmxpict.h</a><li>dmxGlyphs()
-: <a class="el" href="dmxpict_8h.html#a21">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a28">dmxpict.c</a><li>dmxGlyphSetPrivateIndex
-: <a class="el" href="dmxscrinit_8c.html#a8">dmxscrinit.c</a>, <a class="el" href="dmxpict_8h.html#a8">dmxpict.h</a><li>dmxHideCursor()
-: <a class="el" href="dmxcursor_8h.html#a12">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a40">dmxcursor.c</a><li>dmxIgnoreBadFontPaths
-: <a class="el" href="dmxinit_8c.html#a16">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a17">dmx.h</a><li>dmxImageGlyphBlt()
-: <a class="el" href="dmxgcops_8h.html#a17">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a19">dmxgcops.c</a><li>dmxImageText16()
-: <a class="el" href="dmxgcops_8h.html#a16">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a18">dmxgcops.c</a><li>dmxImageText8()
-: <a class="el" href="dmxgcops_8h.html#a15">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a17">dmxgcops.c</a><li>dmxInfo
-: <a class="el" href="dmxlog_8h.html#a18a1">dmxlog.h</a><li>dmxInitFonts()
-: <a class="el" href="dmxfont_8h.html#a3">dmxfont.h</a>, <a class="el" href="dmxfont_8c.html#a10">dmxfont.c</a><li>dmxInitGC()
-: <a class="el" href="dmxgc_8h.html#a6">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a2">dmxgc.c</a><li>dmxInitIndexed()
-: <a class="el" href="dmxpict_8h.html#a23">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a30">dmxpict.c</a><li>dmxInitOrigins()
-: <a class="el" href="dmxcursor_8h.html#a6">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a22">dmxcursor.c</a><li>dmxInitOverlap()
-: <a class="el" href="dmxcursor_8h.html#a7">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a28">dmxcursor.c</a><li>dmxInitPixmap()
-: <a class="el" href="dmxpixmap_8h.html#a4">dmxpixmap.h</a>, <a class="el" href="dmxpixmap_8c.html#a0">dmxpixmap.c</a><li>dmxInitRender()
-: <a class="el" href="dmxpict_8h.html#a9">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a12">dmxpict.c</a><li>dmxInitWindow()
-: <a class="el" href="dmxwindow_8h.html#a11">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a3">dmxwindow.c</a><li>dmxInputCopyLocal()
-: <a class="el" href="dmxinputinit_8h.html#a53">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a33">dmxinputinit.c</a><li>dmxInputDetach()
-: <a class="el" href="dmxinputinit_8h.html#a58">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a43">dmxinputinit.c</a>, <a class="el" href="dmxdetach_8c.html#a0">dmxdetach.c</a><li>dmxInputDetachAll()
-: <a class="el" href="dmxinputinit_8h.html#a59">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a44">dmxinputinit.c</a><li>dmxInputDetachId()
-: <a class="el" href="dmxinputinit_8h.html#a60">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a45">dmxinputinit.c</a><li>DMXInputEnum
-: <a class="el" href="dmxext_8h.html#a41">dmxext.h</a><li>dmxInputFree()
-: <a class="el" href="dmxinputinit_8c.html#a41">dmxinputinit.c</a>, <a class="el" href="dmxinput_8h.html#a20">dmxinput.h</a><li>DMXInputInfo
-: <a class="el" href="dmx_8h.html#a2">dmx.h</a><li>dmxInputInit()
-: <a class="el" href="dmxinputinit_8c.html#a39">dmxinputinit.c</a>, <a class="el" href="dmxinput_8h.html#a17">dmxinput.h</a><li>dmxInputLateReInit()
-: <a class="el" href="dmxinputinit_8c.html#a38">dmxinputinit.c</a>, <a class="el" href="dmxinput_8h.html#a19">dmxinput.h</a><li>dmxInputLogDevices()
-: <a class="el" href="dmxinputinit_8c.html#a42">dmxinputinit.c</a>, <a class="el" href="dmxinput_8h.html#a21">dmxinput.h</a><li>dmxInputReInit()
-: <a class="el" href="dmxinputinit_8c.html#a37">dmxinputinit.c</a>, <a class="el" href="dmxinput_8h.html#a18">dmxinput.h</a><li>dmxInputs
-: <a class="el" href="dmxinput_8h.html#a5">dmxinput.h</a>, <a class="el" href="dmxinit_8c.html#a4">dmxinit.c</a><li>dmxInstallColormap()
-: <a class="el" href="dmxcmap_8h.html#a7">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a6">dmxcmap.c</a><li>dmxInvalidateGlobalPosition()
-: <a class="el" href="dmxevents_8h.html#a3">dmxevents.h</a>, <a class="el" href="dmxevents_8c.html#a22">dmxevents.c</a><li>dmxKeyboardBellProc()
-: <a class="el" href="dmxinputinit_8h.html#a56">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a20">dmxinputinit.c</a><li>dmxKeyboardKbdCtrlProc()
-: <a class="el" href="dmxinputinit_8h.html#a55">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a18">dmxinputinit.c</a><li>dmxLastErrorEvent
-: <a class="el" href="dmxinit_8c.html#a6">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a8">dmx.h</a><li>dmxLazyWindowCreation
-: <a class="el" href="dmxinit_8c.html#a11">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a12">dmx.h</a><li>DMXLocalInitInfo
-: <a class="el" href="dmxinputinit_8h.html#a9">dmxinputinit.h</a><li>DMXLocalInitInfoPtr
-: <a class="el" href="dmxinputinit_8h.html#a10">dmxinputinit.h</a><li>DMXLocalInputInfoPtr
-: <a class="el" href="dmxinput_8h.html#a3">dmxinput.h</a><li>DMXLocalInputInfoRec
-: <a class="el" href="dmxinputinit_8h.html#a35">dmxinputinit.h</a><li>dmxLog()
-: <a class="el" href="dmxlog_8h.html#a7">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a7">dmxlog.c</a><li>dmxLogArgs()
-: <a class="el" href="dmxlog_8h.html#a15">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a14">dmxlog.c</a><li>dmxLogCont()
-: <a class="el" href="dmxlog_8h.html#a8">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a8">dmxlog.c</a><li>dmxLogInput()
-: <a class="el" href="dmxlog_8h.html#a13">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a12">dmxlog.c</a><li>dmxLogInputCont()
-: <a class="el" href="dmxlog_8h.html#a14">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a13">dmxlog.c</a><li>dmxLogLevel
-: <a class="el" href="dmxlog_8h.html#a18">dmxlog.h</a><li>dmxLogOutput()
-: <a class="el" href="dmxlog_8h.html#a10">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a9">dmxlog.c</a><li>dmxLogOutputCont()
-: <a class="el" href="dmxlog_8h.html#a11">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a10">dmxlog.c</a><li>dmxLogOutputWarning()
-: <a class="el" href="dmxlog_8h.html#a12">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a11">dmxlog.c</a><li>dmxLogVisual()
-: <a class="el" href="dmxlog_8h.html#a16">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a15">dmxlog.c</a><li>dmxLookupVisual()
-: <a class="el" href="dmxvisual_8h.html#a0">dmxvisual.h</a>, <a class="el" href="dmxvisual_8c.html#a0">dmxvisual.c</a><li>dmxLookupVisualFromID()
-: <a class="el" href="dmxvisual_8h.html#a1">dmxvisual.h</a>, <a class="el" href="dmxvisual_8c.html#a1">dmxvisual.c</a><li>dmxMapClear()
-: <a class="el" href="dmxmap_8h.html#a1">dmxmap.h</a>, <a class="el" href="dmxmap_8c.html#a1">dmxmap.c</a><li>dmxMapInsert()
-: <a class="el" href="dmxmap_8h.html#a0">dmxmap.h</a>, <a class="el" href="dmxmap_8c.html#a0">dmxmap.c</a><li>dmxMapLookup()
-: <a class="el" href="dmxmap_8h.html#a2">dmxmap.h</a>, <a class="el" href="dmxmap_8c.html#a2">dmxmap.c</a><li>dmxMotion()
-: <a class="el" href="dmxevents_8h.html#a0">dmxevents.h</a>, <a class="el" href="dmxevents_8c.html#a23">dmxevents.c</a><li>dmxMoveCursor()
-: <a class="el" href="dmxcursor_8h.html#a9">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a38">dmxcursor.c</a><li>dmxNoRender
-: <a class="el" href="dmxinit_8c.html#a14">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a15">dmx.h</a><li>dmxNumInputs
-: <a class="el" href="dmxinput_8h.html#a4">dmxinput.h</a>, <a class="el" href="dmxinit_8c.html#a3">dmxinit.c</a><li>dmxNumScreens
-: <a class="el" href="dmxinit_8c.html#a1">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a5">dmx.h</a><li>dmxOffScreenOpt
-: <a class="el" href="dmxinit_8c.html#a9">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a10">dmx.h</a><li>dmxOnScreen()
-: <a class="el" href="dmxcursor_8h.html#a11">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a23">dmxcursor.c</a><li>dmxPaintWindowBackground()
-: <a class="el" href="dmxwindow_8h.html#a23">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a20">dmxwindow.c</a><li>dmxPaintWindowBorder()
-: <a class="el" href="dmxwindow_8h.html#a24">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a21">dmxwindow.c</a><li>dmxPictPrivateIndex
-: <a class="el" href="dmxscrinit_8c.html#a7">dmxscrinit.c</a>, <a class="el" href="dmxpict_8h.html#a7">dmxpict.h</a><li>dmxPictPrivPtr
-: <a class="el" href="dmxpict_8h.html#a4">dmxpict.h</a><li>dmxPictPrivRec
-: <a class="el" href="dmxpict_8h.html#a3">dmxpict.h</a><li>dmxPictureInit()
-: <a class="el" href="dmxpict_8h.html#a11">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a14">dmxpict.c</a><li>dmxPixPrivateIndex
-: <a class="el" href="dmxpixmap_8h.html#a3">dmxpixmap.h</a><li>dmxPixPrivPtr
-: <a class="el" href="dmxpixmap_8h.html#a2">dmxpixmap.h</a><li>dmxPixPrivRec
-: <a class="el" href="dmxpixmap_8h.html#a1">dmxpixmap.h</a><li>dmxPointerCursorFuncs
-: <a class="el" href="dmxcursor_8h.html#a3">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a10">dmxcursor.c</a><li>dmxPointerGetMotionBufferSize()
-: <a class="el" href="dmxmotion_8h.html#a0">dmxmotion.h</a>, <a class="el" href="dmxmotion_8c.html#a1">dmxmotion.c</a><li>dmxPointerGetMotionEvents()
-: <a class="el" href="dmxmotion_8h.html#a1">dmxmotion.h</a>, <a class="el" href="dmxmotion_8c.html#a2">dmxmotion.c</a><li>dmxPointerPutMotionEvent()
-: <a class="el" href="dmxmotion_8h.html#a2">dmxmotion.h</a>, <a class="el" href="dmxmotion_8c.html#a3">dmxmotion.c</a><li>dmxPointerSpriteFuncs
-: <a class="el" href="dmxcursor_8h.html#a4">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a11">dmxcursor.c</a><li>dmxPolyArc()
-: <a class="el" href="dmxgcops_8h.html#a9">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a11">dmxgcops.c</a><li>dmxPolyFillArc()
-: <a class="el" href="dmxgcops_8h.html#a12">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a14">dmxgcops.c</a><li>dmxPolyFillRect()
-: <a class="el" href="dmxgcops_8h.html#a11">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a13">dmxgcops.c</a><li>dmxPolyGlyphBlt()
-: <a class="el" href="dmxgcops_8h.html#a18">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a20">dmxgcops.c</a><li>dmxPolylines()
-: <a class="el" href="dmxgcops_8h.html#a6">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a8">dmxgcops.c</a><li>dmxPolyPoint()
-: <a class="el" href="dmxgcops_8h.html#a5">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a7">dmxgcops.c</a><li>dmxPolyRectangle()
-: <a class="el" href="dmxgcops_8h.html#a8">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a10">dmxgcops.c</a><li>dmxPolySegment()
-: <a class="el" href="dmxgcops_8h.html#a7">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a9">dmxgcops.c</a><li>dmxPolyText16()
-: <a class="el" href="dmxgcops_8h.html#a14">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a16">dmxgcops.c</a><li>dmxPolyText8()
-: <a class="el" href="dmxgcops_8h.html#a13">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a15">dmxgcops.c</a><li>dmxPositionWindow()
-: <a class="el" href="dmxwindow_8h.html#a17">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a13">dmxwindow.c</a><li>dmxPropertyDisplay()
-: <a class="el" href="dmxprop_8h.html#a0">dmxprop.h</a>, <a class="el" href="dmxprop_8c.html#a8">dmxprop.c</a><li>dmxPropertyIterate()
-: <a class="el" href="dmxprop_8c.html#a5">dmxprop.c</a><li>dmxPropertySameDisplay()
-: <a class="el" href="dmxprop_8h.html#a3">dmxprop.h</a>, <a class="el" href="dmxprop_8c.html#a9">dmxprop.c</a><li>dmxPropertyWindow()
-: <a class="el" href="dmxprop_8h.html#a1">dmxprop.h</a>, <a class="el" href="dmxprop_8c.html#a10">dmxprop.c</a><li>dmxPushPixels()
-: <a class="el" href="dmxgcops_8h.html#a19">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a21">dmxgcops.c</a><li>dmxPutImage()
-: <a class="el" href="dmxgcops_8h.html#a2">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a4">dmxgcops.c</a><li>DMXQueryExtension()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a10">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a23">dmxext.h</a><li>DMXQueryVersion()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a11">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a24">dmxext.h</a><li>dmxRealizeFont()
-: <a class="el" href="dmxfont_8h.html#a5">dmxfont.h</a>, <a class="el" href="dmxfont_8c.html#a13">dmxfont.c</a><li>dmxRealizeWindow()
-: <a class="el" href="dmxwindow_8h.html#a19">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a15">dmxwindow.c</a><li>DMXRecomputeFlag
-: <a class="el" href="dmxcb_8h.html#a7">dmxcb.h</a><li>dmxReInitOrigins()
-: <a class="el" href="dmxcursor_8h.html#a5">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a21">dmxcursor.c</a><li>dmxRemoveInput()
-: <a class="el" href="dmxextension_8h.html#a13">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a8">dmxextension.c</a><li>DMXRemoveInput()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a33">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a38">dmxext.h</a><li>DMXRemoveScreen()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a22">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a31">dmxext.h</a><li>dmxReparentWindow()
-: <a class="el" href="dmxwindow_8h.html#a27">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a24">dmxwindow.c</a><li>dmxResetFonts()
-: <a class="el" href="dmxfont_8h.html#a4">dmxfont.h</a>, <a class="el" href="dmxfont_8c.html#a11">dmxfont.c</a><li>dmxResetRender()
-: <a class="el" href="dmxpict_8h.html#a10">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a13">dmxpict.c</a><li>dmxResizeRootWindow()
-: <a class="el" href="dmxwindow_8h.html#a30">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a6">dmxwindow.c</a><li>dmxResizeScreenWindow()
-: <a class="el" href="dmxwindow_8h.html#a29">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a5">dmxwindow.c</a><li>dmxResizeWindow()
-: <a class="el" href="dmxwindow_8h.html#a26">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a23">dmxwindow.c</a><li>dmxRestackWindow()
-: <a class="el" href="dmxwindow_8h.html#a21">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a17">dmxwindow.c</a><li>DMXScreenInfo
-: <a class="el" href="dmx_8h.html#a4">dmx.h</a><li>dmxScreenInit()
-: <a class="el" href="dmxscrinit_8h.html#a1">dmxscrinit.h</a>, <a class="el" href="dmxscrinit_8c.html#a12">dmxscrinit.c</a><li>dmxScreenPrivateIndex
-: <a class="el" href="dmxscrinit_8h.html#a0">dmxscrinit.h</a>, <a class="el" href="dmxscrinit_8c.html#a5">dmxscrinit.c</a><li>dmxScreens
-: <a class="el" href="dmxinit_8c.html#a2">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a6">dmx.h</a><li>dmxSetLogLevel()
-: <a class="el" href="dmxlog_8h.html#a5">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a1">dmxlog.c</a><li>dmxSetShape()
-: <a class="el" href="dmxwindow_8h.html#a32">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a26">dmxwindow.c</a><li>dmxSetSpans()
-: <a class="el" href="dmxgcops_8h.html#a1">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a3">dmxgcops.c</a><li>dmxSetWidthHeight()
-: <a class="el" href="dmxcb_8h.html#a4">dmxcb.h</a>, <a class="el" href="dmxcb_8c.html#a7">dmxcb.c</a><li>dmxShadowFB
-: <a class="el" href="dmxinit_8c.html#a5">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a7">dmx.h</a><li>dmxShadowUpdateProc()
-: <a class="el" href="dmxshadow_8h.html#a0">dmxshadow.h</a>, <a class="el" href="dmxshadow_8c.html#a0">dmxshadow.c</a><li>dmxSigioBlock()
-: <a class="el" href="dmxsigio_8h.html#a0">dmxsigio.h</a>, <a class="el" href="dmxsigio_8c.html#a5">dmxsigio.c</a><li>dmxSigioDisableInput()
-: <a class="el" href="dmxsigio_8h.html#a3">dmxsigio.h</a>, <a class="el" href="dmxsigio_8c.html#a12">dmxsigio.c</a><li>dmxSigioEnableInput()
-: <a class="el" href="dmxsigio_8h.html#a2">dmxsigio.h</a>, <a class="el" href="dmxsigio_8c.html#a11">dmxsigio.c</a><li>dmxSigioRegister()
-: <a class="el" href="dmxsigio_8h.html#a4">dmxsigio.h</a>, <a class="el" href="dmxsigio_8c.html#a13">dmxsigio.c</a><li>dmxSigioState
-: <a class="el" href="dmxinput_8h.html#a31">dmxinput.h</a><li>dmxSigioUnblock()
-: <a class="el" href="dmxsigio_8h.html#a1">dmxsigio.h</a>, <a class="el" href="dmxsigio_8c.html#a6">dmxsigio.c</a><li>dmxSigioUnregister()
-: <a class="el" href="dmxsigio_8h.html#a5">dmxsigio.h</a>, <a class="el" href="dmxsigio_8c.html#a14">dmxsigio.c</a><li>dmxStatActivate()
-: <a class="el" href="dmxstat_8h.html#a6">dmxstat.h</a>, <a class="el" href="dmxstat_8c.html#a6">dmxstat.c</a><li>dmxStatAlloc()
-: <a class="el" href="dmxstat_8h.html#a7">dmxstat.h</a>, <a class="el" href="dmxstat_8c.html#a7">dmxstat.c</a><li>DMXStatAvg
-: <a class="el" href="dmxstat_8c.html#a0">dmxstat.c</a><li>dmxStatFree()
-: <a class="el" href="dmxstat_8h.html#a8">dmxstat.h</a>, <a class="el" href="dmxstat_8c.html#a8">dmxstat.c</a><li>DMXStatInfo
-: <a class="el" href="dmx_8h.html#a3">dmx.h</a><li>dmxStatInit()
-: <a class="el" href="dmxstat_8h.html#a9">dmxstat.h</a>, <a class="el" href="dmxstat_8c.html#a12">dmxstat.c</a><li>dmxStatInterval
-: <a class="el" href="dmxstat_8h.html#a5">dmxstat.h</a>, <a class="el" href="dmxstat_8c.html#a1">dmxstat.c</a><li>dmxStatSync()
-: <a class="el" href="dmxstat_8h.html#a10">dmxstat.h</a>, <a class="el" href="dmxstat_8c.html#a10">dmxstat.c</a><li>dmxStoreColors()
-: <a class="el" href="dmxcmap_8h.html#a8">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a7">dmxcmap.c</a><li>dmxSubdividePrimitives
-: <a class="el" href="dmxinit_8c.html#a10">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a11">dmx.h</a><li>dmxSync()
-: <a class="el" href="dmxsync_8h.html#a2">dmxsync.h</a>, <a class="el" href="dmxsync_8c.html#a9">dmxsync.c</a><li>DMXSync()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a12">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a25">dmxext.h</a><li>dmxSyncActivate()
-: <a class="el" href="dmxsync_8h.html#a0">dmxsync.h</a>, <a class="el" href="dmxsync_8c.html#a7">dmxsync.c</a><li>dmxSyncInit()
-: <a class="el" href="dmxsync_8h.html#a1">dmxsync.h</a>, <a class="el" href="dmxsync_8c.html#a8">dmxsync.c</a><li>dmxTrapezoids()
-: <a class="el" href="dmxpict_8h.html#a26">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a33">dmxpict.c</a><li>dmxTriangles()
-: <a class="el" href="dmxpict_8h.html#a27">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a34">dmxpict.c</a><li>dmxTriFan()
-: <a class="el" href="dmxpict_8h.html#a29">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a36">dmxpict.c</a><li>dmxTriStrip()
-: <a class="el" href="dmxpict_8h.html#a28">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a35">dmxpict.c</a><li>dmxUnrealizeFont()
-: <a class="el" href="dmxfont_8h.html#a6">dmxfont.h</a>, <a class="el" href="dmxfont_8c.html#a15">dmxfont.c</a><li>dmxUnrealizeWindow()
-: <a class="el" href="dmxwindow_8h.html#a20">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a16">dmxwindow.c</a><li>dmxUpdateIndexed()
-: <a class="el" href="dmxpict_8h.html#a25">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a32">dmxpict.c</a><li>DMXUpdateType
-: <a class="el" href="dmxinput_8h.html#a30">dmxinput.h</a><li>dmxUpdateWindowInfo()
-: <a class="el" href="dmxinput_8h.html#a22">dmxinput.h</a>, <a class="el" href="dmxinput_8c.html#a3">dmxinput.c</a><li>dmxUseXKB
-: <a class="el" href="dmxinit_8c.html#a12">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a13">dmx.h</a><li>dmxValidateGC()
-: <a class="el" href="dmxgc_8h.html#a8">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a5">dmxgc.c</a><li>dmxValidatePicture()
-: <a class="el" href="dmxpict_8h.html#a19">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a26">dmxpict.c</a><li>dmxVDLRead()
-: <a class="el" href="dmxcompat_8h.html#a0">dmxcompat.h</a>, <a class="el" href="dmxcompat_8c.html#a4">dmxcompat.c</a><li>dmxWarning
-: <a class="el" href="dmxlog_8h.html#a18a2">dmxlog.h</a><li>dmxWindowExposures()
-: <a class="el" href="dmxwindow_8h.html#a22">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a19">dmxwindow.c</a><li>dmxWinPrivateIndex
-: <a class="el" href="dmxwindow_8h.html#a10">dmxwindow.h</a>, <a class="el" href="dmxscrinit_8c.html#a3">dmxscrinit.c</a><li>dmxWinPrivPtr
-: <a class="el" href="dmxwindow_8h.html#a9">dmxwindow.h</a><li>dmxWinPrivRec
-: <a class="el" href="dmxwindow_8h.html#a8">dmxwindow.h</a><li>dmxXInputEventName()
-: <a class="el" href="dmxlog_8h.html#a17">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a16">dmxlog.c</a></ul>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>EventPtr
-: <a class="el" href="dmxeq_8c.html#a6">dmxeq.c</a><li>EventQueuePtr
-: <a class="el" href="dmxeq_8c.html#a8">dmxeq.c</a><li>EventQueueRec
-: <a class="el" href="dmxeq_8c.html#a7">dmxeq.c</a><li>EventRec
-: <a class="el" href="dmxeq_8c.html#a5">dmxeq.c</a></ul>
-<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
-<li>GEN
-: <a class="el" href="dmxconfig_8c.html#a0">dmxconfig.c</a><li>GetTimeInMillis()
-: <a class="el" href="dmxinit_8c.html#a42">dmxinit.c</a></ul>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>InitInput()
-: <a class="el" href="dmxinput_8c.html#a1">dmxinput.c</a><li>InitOutput()
-: <a class="el" href="dmxinit_8c.html#a34">dmxinit.c</a></ul>
-<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
-<li>kbdLinuxBell()
-: <a class="el" href="lnx-keyboard_8h.html#a11">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a26">lnx-keyboard.c</a><li>kbdLinuxCreatePrivate()
-: <a class="el" href="lnx-keyboard_8h.html#a0">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a24">lnx-keyboard.c</a><li>kbdLinuxCtrl()
-: <a class="el" href="lnx-keyboard_8h.html#a10">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a27">lnx-keyboard.c</a><li>kbdLinuxDestroyPrivate()
-: <a class="el" href="lnx-keyboard_8h.html#a1">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a25">lnx-keyboard.c</a><li>kbdLinuxGetInfo()
-: <a class="el" href="lnx-keyboard_8h.html#a3">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a47">lnx-keyboard.c</a><li>kbdLinuxInit()
-: <a class="el" href="lnx-keyboard_8h.html#a2">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a38">lnx-keyboard.c</a><li>kbdLinuxOff()
-: <a class="el" href="lnx-keyboard_8h.html#a5">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a44">lnx-keyboard.c</a><li>kbdLinuxOn()
-: <a class="el" href="lnx-keyboard_8h.html#a4">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a43">lnx-keyboard.c</a><li>kbdLinuxRead()
-: <a class="el" href="lnx-keyboard_8c.html#a42">lnx-keyboard.c</a><li>kbdLinuxVTPostSwitch()
-: <a class="el" href="lnx-keyboard_8h.html#a7">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a33">lnx-keyboard.c</a><li>kbdLinuxVTPreSwitch()
-: <a class="el" href="lnx-keyboard_8h.html#a6">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a32">lnx-keyboard.c</a><li>kbdLinuxVTSwitch()
-: <a class="el" href="lnx-keyboard_8c.html#a34">lnx-keyboard.c</a><li>kbdUSBCtrl()
-: <a class="el" href="usb-keyboard_8h.html#a4">usb-keyboard.h</a>, <a class="el" href="usb-keyboard_8c.html#a20">usb-keyboard.c</a><li>kbdUSBGetInfo()
-: <a class="el" href="usb-keyboard_8h.html#a1">usb-keyboard.h</a>, <a class="el" href="usb-keyboard_8c.html#a26">usb-keyboard.c</a><li>kbdUSBInit()
-: <a class="el" href="usb-keyboard_8h.html#a0">usb-keyboard.h</a>, <a class="el" href="usb-keyboard_8c.html#a21">usb-keyboard.c</a><li>kbdUSBOn()
-: <a class="el" href="usb-keyboard_8h.html#a2">usb-keyboard.h</a>, <a class="el" href="usb-keyboard_8c.html#a24">usb-keyboard.c</a><li>kbdUSBRead()
-: <a class="el" href="usb-keyboard_8c.html#a23">usb-keyboard.c</a></ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
-<li>LegalModifier()
-: <a class="el" href="dmxinput_8c.html#a0">dmxinput.c</a></ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>mouUSBGetInfo()
-: <a class="el" href="usb-mouse_8h.html#a2">usb-mouse.h</a>, <a class="el" href="usb-mouse_8c.html#a16">usb-mouse.c</a><li>mouUSBInit()
-: <a class="el" href="usb-mouse_8h.html#a1">usb-mouse.h</a>, <a class="el" href="usb-mouse_8c.html#a13">usb-mouse.c</a><li>mouUSBOn()
-: <a class="el" href="usb-mouse_8h.html#a3">usb-mouse.h</a>, <a class="el" href="usb-mouse_8c.html#a14">usb-mouse.c</a><li>mouUSBRead()
-: <a class="el" href="usb-mouse_8c.html#a12">usb-mouse.c</a><li>msLinuxCreatePrivate()
-: <a class="el" href="lnx-ms_8h.html#a0">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a24">lnx-ms.c</a><li>msLinuxDestroyPrivate()
-: <a class="el" href="lnx-ms_8h.html#a1">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a25">lnx-ms.c</a><li>msLinuxGetInfo()
-: <a class="el" href="lnx-ms_8h.html#a4">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a26">lnx-ms.c</a><li>msLinuxInit()
-: <a class="el" href="lnx-ms_8h.html#a3">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a18">lnx-ms.c</a><li>msLinuxOff()
-: <a class="el" href="lnx-ms_8h.html#a6">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a20">lnx-ms.c</a><li>msLinuxOn()
-: <a class="el" href="lnx-ms_8h.html#a5">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a19">lnx-ms.c</a><li>msLinuxRead()
-: <a class="el" href="lnx-ms_8c.html#a17">lnx-ms.c</a><li>msLinuxVTPostSwitch()
-: <a class="el" href="lnx-ms_8h.html#a9">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a23">lnx-ms.c</a><li>msLinuxVTPreSwitch()
-: <a class="el" href="lnx-ms_8h.html#a8">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a22">lnx-ms.c</a><li>myPrivate
-: <a class="el" href="dmxcommon_8c.html#a4">dmxcommon.c</a></ul>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
-<li>OpenInputDevice()
-: <a class="el" href="dmxxinput_8c.html#a5">dmxxinput.c</a><li>OsVendorFatalError()
-: <a class="el" href="dmxinit_8c.html#a39">dmxinit.c</a><li>OsVendorInit()
-: <a class="el" href="dmxinit_8c.html#a38">dmxinit.c</a><li>othUSBGetInfo()
-: <a class="el" href="usb-other_8h.html#a2">usb-other.h</a>, <a class="el" href="usb-other_8c.html#a16">usb-other.c</a><li>othUSBInit()
-: <a class="el" href="usb-other_8h.html#a1">usb-other.h</a>, <a class="el" href="usb-other_8c.html#a14">usb-other.c</a><li>othUSBOn()
-: <a class="el" href="usb-other_8h.html#a3">usb-other.h</a>, <a class="el" href="usb-other_8c.html#a15">usb-other.c</a><li>othUSBRead()
-: <a class="el" href="usb-other_8c.html#a13">usb-other.c</a></ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>ProcessInputEvents()
-: <a class="el" href="dmxinput_8c.html#a2">dmxinput.c</a><li>ps2LinuxCreatePrivate()
-: <a class="el" href="lnx-ps2_8h.html#a0">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a24">lnx-ps2.c</a><li>ps2LinuxDestroyPrivate()
-: <a class="el" href="lnx-ps2_8h.html#a1">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a25">lnx-ps2.c</a><li>ps2LinuxGetInfo()
-: <a class="el" href="lnx-ps2_8h.html#a4">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a26">lnx-ps2.c</a><li>ps2LinuxInit()
-: <a class="el" href="lnx-ps2_8h.html#a3">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a18">lnx-ps2.c</a><li>ps2LinuxOff()
-: <a class="el" href="lnx-ps2_8h.html#a6">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a20">lnx-ps2.c</a><li>ps2LinuxOn()
-: <a class="el" href="lnx-ps2_8h.html#a5">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a19">lnx-ps2.c</a><li>ps2LinuxRead()
-: <a class="el" href="lnx-ps2_8c.html#a17">lnx-ps2.c</a><li>ps2LinuxVTPostSwitch()
-: <a class="el" href="lnx-ps2_8h.html#a9">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a23">lnx-ps2.c</a><li>ps2LinuxVTPreSwitch()
-: <a class="el" href="lnx-ps2_8h.html#a8">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a22">lnx-ps2.c</a></ul>
-<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
-<li>QUEUE_SIZE
-: <a class="el" href="dmxeq_8c.html#a4">dmxeq.c</a></ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>SetDeviceMode()
-: <a class="el" href="dmxxinput_8c.html#a6">dmxxinput.c</a><li>SetDeviceValuators()
-: <a class="el" href="dmxxinput_8c.html#a7">dmxxinput.c</a></ul>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
-<li>usbCreatePrivate()
-: <a class="el" href="usb-common_8h.html#a3">usb-common.h</a>, <a class="el" href="usb-common_8c.html#a25">usb-common.c</a><li>usbDestroyPrivate()
-: <a class="el" href="usb-common_8h.html#a4">usb-common.h</a>, <a class="el" href="usb-common_8c.html#a26">usb-common.c</a><li>usbInit()
-: <a class="el" href="usb-common_8h.html#a6">usb-common.h</a>, <a class="el" href="usb-common_8c.html#a23">usb-common.c</a><li>usbOff()
-: <a class="el" href="usb-common_8h.html#a7">usb-common.h</a>, <a class="el" href="usb-common_8c.html#a24">usb-common.c</a><li>usbRead()
-: <a class="el" href="usb-common_8c.html#a21">usb-common.c</a></ul>
-<h3><a class="anchor" name="index_x">- x -</a></h3><ul>
-<li>XCheckNotMaskEvent()
-: <a class="el" href="ChkNotMaskEv_8h.html#a0">ChkNotMaskEv.h</a>, <a class="el" href="ChkNotMaskEv_8c.html#a2">ChkNotMaskEv.c</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_defs.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_defs.html
deleted file mode 100644
index 9fb24cc19..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_defs.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
-<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumeration&nbsp;values</a> | <a class="qindexHL" href="globals_defs.html">Defines</a></div>
-
-<p>
-<ul>
-<li>DMX_ATOMNAME
-: <a class="el" href="dmxprop_8c.html#a0">dmxprop.c</a><li>DMX_GET_COLORMAP_PRIV
-: <a class="el" href="dmxcmap_8h.html#a1">dmxcmap.h</a><li>DMX_GET_GC_PRIV
-: <a class="el" href="dmxgc_8h.html#a0">dmxgc.h</a><li>DMX_GET_GLYPH_PRIV
-: <a class="el" href="dmxpict_8h.html#a2">dmxpict.h</a><li>DMX_GET_PICT_PRIV
-: <a class="el" href="dmxpict_8h.html#a0">dmxpict.h</a><li>DMX_GET_PIXMAP_PRIV
-: <a class="el" href="dmxpixmap_8h.html#a0">dmxpixmap.h</a><li>DMX_GET_WINDOW_PRIV
-: <a class="el" href="dmxwindow_8h.html#a0">dmxwindow.h</a><li>DMX_IDENT
-: <a class="el" href="dmxprop_8c.html#a1">dmxprop.c</a><li>DMX_MAX_SIGIO_FDS
-: <a class="el" href="dmxinput_8h.html#a0">dmxinput.h</a><li>DMX_SET_COLORMAP_PRIV
-: <a class="el" href="dmxcmap_8h.html#a0">dmxcmap.h</a><li>DMX_SET_GLYPH_PRIV
-: <a class="el" href="dmxpict_8h.html#a1">dmxpict.h</a><li>DMX_STAT_BIN0
-: <a class="el" href="dmxstat_8h.html#a3">dmxstat.h</a><li>DMX_STAT_BINMULT
-: <a class="el" href="dmxstat_8h.html#a4">dmxstat.h</a><li>DMX_STAT_BINS
-: <a class="el" href="dmxstat_8h.html#a2">dmxstat.h</a><li>DMX_STAT_INTERVAL
-: <a class="el" href="dmxstat_8h.html#a1">dmxstat.h</a><li>DMX_STAT_LENGTH
-: <a class="el" href="dmxstat_8h.html#a0">dmxstat.h</a><li>DMX_UNWRAP
-: <a class="el" href="dmx_8h.html#a1">dmx.h</a><li>DMX_WRAP
-: <a class="el" href="dmx_8h.html#a0">dmx.h</a><li>GEN
-: <a class="el" href="dmxconfig_8c.html#a0">dmxconfig.c</a><li>QUEUE_SIZE
-: <a class="el" href="dmxeq_8c.html#a4">dmxeq.c</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_enum.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_enum.html
deleted file mode 100644
index 09cb593d6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_enum.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
-<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindexHL" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumeration&nbsp;values</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
-
-<p>
-<ul>
-<li>DMXInputEnum
-: <a class="el" href="dmxext_8h.html#a41">dmxext.h</a><li>dmxLogLevel
-: <a class="el" href="dmxlog_8h.html#a18">dmxlog.h</a><li>DMXRecomputeFlag
-: <a class="el" href="dmxcb_8h.html#a7">dmxcb.h</a><li>dmxSigioState
-: <a class="el" href="dmxinput_8h.html#a31">dmxinput.h</a><li>DMXUpdateType
-: <a class="el" href="dmxinput_8h.html#a30">dmxinput.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_eval.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_eval.html
deleted file mode 100644
index 15700d509..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_eval.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
-<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindexHL" href="globals_eval.html">Enumeration&nbsp;values</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
-
-<p>
-<ul>
-<li>DMX_ACTIVESIGIO
-: <a class="el" href="dmxinput_8h.html#a31a14">dmxinput.h</a><li>DMX_NOSIGIO
-: <a class="el" href="dmxinput_8h.html#a31a12">dmxinput.h</a><li>DMX_UPDATE_COPY
-: <a class="el" href="dmxinput_8h.html#a30a9">dmxinput.h</a><li>DMX_UPDATE_REALIZE
-: <a class="el" href="dmxinput_8h.html#a30a6">dmxinput.h</a><li>DMX_UPDATE_REPARENT
-: <a class="el" href="dmxinput_8h.html#a30a11">dmxinput.h</a><li>DMX_UPDATE_RESIZE
-: <a class="el" href="dmxinput_8h.html#a30a10">dmxinput.h</a><li>DMX_UPDATE_RESTACK
-: <a class="el" href="dmxinput_8h.html#a30a8">dmxinput.h</a><li>DMX_UPDATE_UNREALIZE
-: <a class="el" href="dmxinput_8h.html#a30a7">dmxinput.h</a><li>DMX_USESIGIO
-: <a class="el" href="dmxinput_8h.html#a31a13">dmxinput.h</a><li>dmxDebug
-: <a class="el" href="dmxlog_8h.html#a18a0">dmxlog.h</a><li>dmxError
-: <a class="el" href="dmxlog_8h.html#a18a3">dmxlog.h</a><li>dmxFatal
-: <a class="el" href="dmxlog_8h.html#a18a4">dmxlog.h</a><li>dmxInfo
-: <a class="el" href="dmxlog_8h.html#a18a1">dmxlog.h</a><li>dmxWarning
-: <a class="el" href="dmxlog_8h.html#a18a2">dmxlog.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_func.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_func.html
deleted file mode 100644
index 85b327b60..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_func.html
+++ /dev/null
@@ -1,388 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
-<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindexHL" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumeration&nbsp;values</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
-<div class="qindex"><a class="qindex" href="#index_a">a</a> | <a class="qindex" href="#index_c">c</a> | <a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_g">g</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_k">k</a> | <a class="qindex" href="#index_l">l</a> | <a class="qindex" href="#index_m">m</a> | <a class="qindex" href="#index_o">o</a> | <a class="qindex" href="#index_p">p</a> | <a class="qindex" href="#index_s">s</a> | <a class="qindex" href="#index_u">u</a> | <a class="qindex" href="#index_x">x</a></div>
-
-<p>
-
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>AbortDDX()
-: <a class="el" href="dmxinit_8c.html#a36">dmxinit.c</a><li>AbortServer()
-: <a class="el" href="dmxlog_8c.html#a3">dmxlog.c</a><li>AddOtherInputDevices()
-: <a class="el" href="dmxxinput_8c.html#a4">dmxxinput.c</a></ul>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
-<li>ChangeDeviceControl()
-: <a class="el" href="dmxxinput_8c.html#a8">dmxxinput.c</a><li>ChangeKeyboardDevice()
-: <a class="el" href="dmxxinput_8c.html#a1">dmxxinput.c</a><li>ChangePointerDevice()
-: <a class="el" href="dmxxinput_8c.html#a2">dmxxinput.c</a><li>CloseInputDevice()
-: <a class="el" href="dmxxinput_8c.html#a3">dmxxinput.c</a></ul>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>ddxGiveUp()
-: <a class="el" href="dmxinit_8c.html#a37">dmxinit.c</a><li>ddxProcessArgument()
-: <a class="el" href="dmxinit_8c.html#a40">dmxinit.c</a><li>ddxUseMsg()
-: <a class="el" href="dmxinit_8c.html#a41">dmxinit.c</a><li>DMXAddBackendInput()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a31">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a39">dmxext.h</a><li>DMXAddConsoleInput()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a32">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a40">dmxext.h</a><li>dmxAddInput()
-: <a class="el" href="dmxextension_8h.html#a12">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a7">dmxextension.c</a><li>DMXAddInput()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a30">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a37">dmxext.h</a><li>DMXAddScreen()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a21">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a30">dmxext.h</a><li>dmxArgAdd()
-: <a class="el" href="dmxarg_8h.html#a3">dmxarg.h</a>, <a class="el" href="dmxarg_8c.html#a3">dmxarg.c</a><li>dmxArgC()
-: <a class="el" href="dmxarg_8h.html#a5">dmxarg.h</a>, <a class="el" href="dmxarg_8c.html#a5">dmxarg.c</a><li>dmxArgCreate()
-: <a class="el" href="dmxarg_8h.html#a1">dmxarg.h</a>, <a class="el" href="dmxarg_8c.html#a1">dmxarg.c</a><li>dmxArgFree()
-: <a class="el" href="dmxarg_8h.html#a2">dmxarg.h</a>, <a class="el" href="dmxarg_8c.html#a2">dmxarg.c</a><li>dmxArgParse()
-: <a class="el" href="dmxarg_8h.html#a6">dmxarg.h</a>, <a class="el" href="dmxarg_8c.html#a6">dmxarg.c</a><li>dmxArgV()
-: <a class="el" href="dmxarg_8h.html#a4">dmxarg.h</a>, <a class="el" href="dmxarg_8c.html#a4">dmxarg.c</a><li>dmxAttachScreen()
-: <a class="el" href="dmxextension_8h.html#a17">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a18">dmxextension.c</a><li>dmxBackendCollectEvents()
-: <a class="el" href="dmxbackend_8h.html#a6">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a25">dmxbackend.c</a><li>dmxBackendCreatePrivate()
-: <a class="el" href="dmxbackend_8h.html#a0">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a12">dmxbackend.c</a><li>dmxBackendDestroyPrivate()
-: <a class="el" href="dmxbackend_8h.html#a1">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a13">dmxbackend.c</a><li>dmxBackendFunctions()
-: <a class="el" href="dmxbackend_8h.html#a8">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a33">dmxbackend.c</a><li>dmxBackendInit()
-: <a class="el" href="dmxbackend_8h.html#a2">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a30">dmxbackend.c</a><li>dmxBackendKbdGetInfo()
-: <a class="el" href="dmxbackend_8h.html#a5">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a32">dmxbackend.c</a><li>dmxBackendLateReInit()
-: <a class="el" href="dmxbackend_8h.html#a3">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a29">dmxbackend.c</a><li>dmxBackendMouGetInfo()
-: <a class="el" href="dmxbackend_8h.html#a4">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a31">dmxbackend.c</a><li>dmxBackendProcessInput()
-: <a class="el" href="dmxbackend_8h.html#a7">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a26">dmxbackend.c</a><li>dmxBackendUpdatePosition()
-: <a class="el" href="dmxbackend_8h.html#a9">dmxbackend.h</a>, <a class="el" href="dmxbackend_8c.html#a24">dmxbackend.c</a><li>dmxBECloseScreen()
-: <a class="el" href="dmxscrinit_8h.html#a3">dmxscrinit.h</a>, <a class="el" href="dmxscrinit_8c.html#a13">dmxscrinit.c</a><li>dmxBECreateColormap()
-: <a class="el" href="dmxcmap_8h.html#a10">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a2">dmxcmap.c</a><li>dmxBECreateCursor()
-: <a class="el" href="dmxcursor_8h.html#a13">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a29">dmxcursor.c</a><li>dmxBECreateGC()
-: <a class="el" href="dmxgc_8h.html#a15">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a3">dmxgc.c</a><li>dmxBECreatePixmap()
-: <a class="el" href="dmxpixmap_8h.html#a8">dmxpixmap.h</a>, <a class="el" href="dmxpixmap_8c.html#a1">dmxpixmap.c</a><li>dmxBEDestroyWindow()
-: <a class="el" href="dmxwindow_8h.html#a31">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a11">dmxwindow.c</a><li>dmxBEFreeColormap()
-: <a class="el" href="dmxcmap_8h.html#a11">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a4">dmxcmap.c</a><li>dmxBEFreeCursor()
-: <a class="el" href="dmxcursor_8h.html#a14">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a31">dmxcursor.c</a><li>dmxBEFreeFont()
-: <a class="el" href="dmxfont_8h.html#a8">dmxfont.h</a>, <a class="el" href="dmxfont_8c.html#a14">dmxfont.c</a><li>dmxBEFreeGC()
-: <a class="el" href="dmxgc_8h.html#a16">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a8">dmxgc.c</a><li>dmxBEFreeGlyphSet()
-: <a class="el" href="dmxpict_8h.html#a30">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a16">dmxpict.c</a><li>dmxBEFreePicture()
-: <a class="el" href="dmxpict_8h.html#a31">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a20">dmxpict.c</a><li>dmxBEFreePixmap()
-: <a class="el" href="dmxpixmap_8h.html#a9">dmxpixmap.h</a>, <a class="el" href="dmxpixmap_8c.html#a3">dmxpixmap.c</a><li>dmxBELoadFont()
-: <a class="el" href="dmxfont_8h.html#a7">dmxfont.h</a>, <a class="el" href="dmxfont_8c.html#a12">dmxfont.c</a><li>dmxBEScreenInit()
-: <a class="el" href="dmxscrinit_8h.html#a2">dmxscrinit.h</a>, <a class="el" href="dmxscrinit_8c.html#a11">dmxscrinit.c</a><li>dmxBitmapToRegion()
-: <a class="el" href="dmxpixmap_8h.html#a7">dmxpixmap.h</a>, <a class="el" href="dmxpixmap_8c.html#a5">dmxpixmap.c</a><li>dmxChangeBorderWidth()
-: <a class="el" href="dmxwindow_8h.html#a28">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a25">dmxwindow.c</a><li>dmxChangeClip()
-: <a class="el" href="dmxgc_8h.html#a12">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a10">dmxgc.c</a><li>DMXChangeDesktopAttributes()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a27">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a34">dmxext.h</a><li>dmxChangeGC()
-: <a class="el" href="dmxgc_8h.html#a9">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a6">dmxgc.c</a><li>dmxChangePicture()
-: <a class="el" href="dmxpict_8h.html#a18">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a25">dmxpict.c</a><li>dmxChangePictureClip()
-: <a class="el" href="dmxpict_8h.html#a16">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a23">dmxpict.c</a><li>dmxChangePointerControl()
-: <a class="el" href="dmxinputinit_8h.html#a54">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a16">dmxinputinit.c</a><li>DMXChangeScreensAttributes()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a20">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a29">dmxext.h</a><li>dmxChangeWindowAttributes()
-: <a class="el" href="dmxwindow_8h.html#a18">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a14">dmxwindow.c</a><li>dmxCheckCursor()
-: <a class="el" href="dmxcursor_8h.html#a10">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a41">dmxcursor.c</a><li>dmxCheckSpecialKeys()
-: <a class="el" href="dmxevents_8h.html#a2">dmxevents.h</a>, <a class="el" href="dmxevents_8c.html#a28">dmxevents.c</a><li>dmxCloseIndexed()
-: <a class="el" href="dmxpict_8h.html#a24">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a31">dmxpict.c</a><li>dmxCloseScreen()
-: <a class="el" href="dmxscrinit_8c.html#a9">dmxscrinit.c</a><li>dmxColormapFromDefaultVisual()
-: <a class="el" href="dmxvisual_8h.html#a2">dmxvisual.h</a>, <a class="el" href="dmxvisual_8c.html#a2">dmxvisual.c</a><li>dmxCommonCopyPrivate()
-: <a class="el" href="dmxcommon_8h.html#a27">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a26">dmxcommon.c</a><li>dmxCommonKbdBell()
-: <a class="el" href="dmxcommon_8h.html#a16">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a11">dmxcommon.c</a><li>dmxCommonKbdCtrl()
-: <a class="el" href="dmxcommon_8h.html#a15">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a9">dmxcommon.c</a><li>dmxCommonKbdGetInfo()
-: <a class="el" href="dmxcommon_8h.html#a13">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a13">dmxcommon.c</a><li>dmxCommonKbdGetMap()
-: <a class="el" href="dmxcommon_8h.html#a14">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a12">dmxcommon.c</a><li>dmxCommonKbdOff()
-: <a class="el" href="dmxcommon_8h.html#a18">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a15">dmxcommon.c</a><li>dmxCommonKbdOn()
-: <a class="el" href="dmxcommon_8h.html#a17">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a14">dmxcommon.c</a><li>dmxCommonMouCtrl()
-: <a class="el" href="dmxcommon_8h.html#a20">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a10">dmxcommon.c</a><li>dmxCommonMouGetMap()
-: <a class="el" href="dmxcommon_8h.html#a19">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a19">dmxcommon.c</a><li>dmxCommonMouOff()
-: <a class="el" href="dmxcommon_8h.html#a22">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a24">dmxcommon.c</a><li>dmxCommonMouOn()
-: <a class="el" href="dmxcommon_8h.html#a21">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a23">dmxcommon.c</a><li>dmxCommonOthGetInfo()
-: <a class="el" href="dmxcommon_8h.html#a26">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a18">dmxcommon.c</a><li>dmxCommonOthOff()
-: <a class="el" href="dmxcommon_8h.html#a25">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a17">dmxcommon.c</a><li>dmxCommonOthOn()
-: <a class="el" href="dmxcommon_8h.html#a24">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a16">dmxcommon.c</a><li>dmxCommonRestoreState()
-: <a class="el" href="dmxcommon_8h.html#a29">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a28">dmxcommon.c</a><li>dmxCommonSaveState()
-: <a class="el" href="dmxcommon_8h.html#a28">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a27">dmxcommon.c</a><li>dmxComposite()
-: <a class="el" href="dmxpict_8h.html#a20">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a27">dmxpict.c</a><li>dmxCompositeRects()
-: <a class="el" href="dmxpict_8h.html#a22">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a29">dmxpict.c</a><li>dmxComputeWidthHeight()
-: <a class="el" href="dmxcb_8h.html#a5">dmxcb.h</a>, <a class="el" href="dmxcb_8c.html#a8">dmxcb.c</a><li>dmxConfigConfigure()
-: <a class="el" href="dmxconfig_8h.html#a10">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a32">dmxconfig.c</a><li>dmxConfigLog()
-: <a class="el" href="dmxparse_8h.html#a38">dmxparse.h</a>, <a class="el" href="dmxparse_8c.html#a0">dmxparse.c</a><li>dmxConfigPrint()
-: <a class="el" href="dmxprint_8h.html#a0">dmxprint.h</a>, <a class="el" href="dmxprint_8c.html#a25">dmxprint.c</a><li>dmxConfigSetMaxScreens()
-: <a class="el" href="dmxconfig_8h.html#a11">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a33">dmxconfig.c</a><li>dmxConfigStoreConfig()
-: <a class="el" href="dmxconfig_8h.html#a9">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a19">dmxconfig.c</a><li>dmxConfigStoreDisplay()
-: <a class="el" href="dmxconfig_8h.html#a5">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a15">dmxconfig.c</a><li>dmxConfigStoreFile()
-: <a class="el" href="dmxconfig_8h.html#a8">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a18">dmxconfig.c</a><li>dmxConfigStoreInput()
-: <a class="el" href="dmxconfig_8h.html#a6">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a16">dmxconfig.c</a><li>dmxConfigStoreXInput()
-: <a class="el" href="dmxconfig_8h.html#a7">dmxconfig.h</a>, <a class="el" href="dmxconfig_8c.html#a17">dmxconfig.c</a><li>dmxConfigVirtualPrint()
-: <a class="el" href="dmxprint_8h.html#a1">dmxprint.h</a>, <a class="el" href="dmxprint_8c.html#a26">dmxprint.c</a><li>dmxConnectionBlockCallback()
-: <a class="el" href="dmxcb_8h.html#a6">dmxcb.h</a>, <a class="el" href="dmxcb_8c.html#a9">dmxcb.c</a><li>dmxConsoleCapture()
-: <a class="el" href="dmxconsole_8h.html#a10">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a47">dmxconsole.c</a><li>dmxConsoleCollectEvents()
-: <a class="el" href="dmxconsole_8h.html#a6">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a36">dmxconsole.c</a><li>dmxConsoleCreatePrivate()
-: <a class="el" href="dmxconsole_8h.html#a0">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a25">dmxconsole.c</a><li>dmxConsoleDestroyPrivate()
-: <a class="el" href="dmxconsole_8h.html#a1">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a26">dmxconsole.c</a><li>dmxConsoleFunctions()
-: <a class="el" href="dmxconsole_8h.html#a7">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a45">dmxconsole.c</a><li>dmxConsoleInit()
-: <a class="el" href="dmxconsole_8h.html#a2">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a42">dmxconsole.c</a><li>dmxConsoleKbdGetInfo()
-: <a class="el" href="dmxconsole_8h.html#a5">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a44">dmxconsole.c</a><li>dmxConsoleMouGetInfo()
-: <a class="el" href="dmxconsole_8h.html#a4">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a43">dmxconsole.c</a><li>dmxConsoleReInit()
-: <a class="el" href="dmxconsole_8h.html#a3">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a41">dmxconsole.c</a><li>dmxConsoleUncapture()
-: <a class="el" href="dmxconsole_8h.html#a11">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a48">dmxconsole.c</a><li>dmxConsoleUpdateInfo()
-: <a class="el" href="dmxconsole_8h.html#a12">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a32">dmxconsole.c</a><li>dmxConsoleUpdatePosition()
-: <a class="el" href="dmxconsole_8h.html#a8">dmxconsole.h</a>, <a class="el" href="dmxconsole_8c.html#a35">dmxconsole.c</a><li>dmxCopyArea()
-: <a class="el" href="dmxgcops_8h.html#a3">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a5">dmxgcops.c</a><li>dmxCopyClip()
-: <a class="el" href="dmxgc_8h.html#a14">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a12">dmxgc.c</a><li>dmxCopyGC()
-: <a class="el" href="dmxgc_8h.html#a10">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a7">dmxgc.c</a><li>dmxCopyPlane()
-: <a class="el" href="dmxgcops_8h.html#a4">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a6">dmxgcops.c</a><li>dmxCopyWindow()
-: <a class="el" href="dmxwindow_8h.html#a25">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a22">dmxwindow.c</a><li>dmxCreateAndRealizeWindow()
-: <a class="el" href="dmxwindow_8h.html#a14">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a9">dmxwindow.c</a><li>dmxCreateColormap()
-: <a class="el" href="dmxcmap_8h.html#a5">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a3">dmxcmap.c</a><li>dmxCreateDefColormap()
-: <a class="el" href="dmxcmap_8h.html#a9">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a8">dmxcmap.c</a><li>dmxCreateGC()
-: <a class="el" href="dmxgc_8h.html#a7">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a4">dmxgc.c</a><li>dmxCreatePicture()
-: <a class="el" href="dmxpict_8h.html#a14">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a19">dmxpict.c</a><li>dmxCreatePictureList()
-: <a class="el" href="dmxpict_8h.html#a12">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a18">dmxpict.c</a><li>dmxCreatePixmap()
-: <a class="el" href="dmxpixmap_8h.html#a5">dmxpixmap.h</a>, <a class="el" href="dmxpixmap_8c.html#a2">dmxpixmap.c</a><li>dmxCreateWindow()
-: <a class="el" href="dmxwindow_8h.html#a15">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a10">dmxwindow.c</a><li>dmxCursorNoMulti()
-: <a class="el" href="dmxcursor_8h.html#a8">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a12">dmxcursor.c</a><li>dmxDestroyClip()
-: <a class="el" href="dmxgc_8h.html#a13">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a11">dmxgc.c</a><li>dmxDestroyColormap()
-: <a class="el" href="dmxcmap_8h.html#a6">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a5">dmxcmap.c</a><li>dmxDestroyGC()
-: <a class="el" href="dmxgc_8h.html#a11">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a9">dmxgc.c</a><li>dmxDestroyPicture()
-: <a class="el" href="dmxpict_8h.html#a15">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a22">dmxpict.c</a><li>dmxDestroyPictureClip()
-: <a class="el" href="dmxpict_8h.html#a17">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a24">dmxpict.c</a><li>dmxDestroyPictureList()
-: <a class="el" href="dmxpict_8h.html#a13">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a21">dmxpict.c</a><li>dmxDestroyPixmap()
-: <a class="el" href="dmxpixmap_8h.html#a6">dmxpixmap.h</a>, <a class="el" href="dmxpixmap_8c.html#a4">dmxpixmap.c</a><li>dmxDestroyWindow()
-: <a class="el" href="dmxwindow_8h.html#a16">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a12">dmxwindow.c</a><li>dmxDetachScreen()
-: <a class="el" href="dmxextension_8h.html#a18">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a23">dmxextension.c</a><li>dmxDPMSInit()
-: <a class="el" href="dmxdpms_8h.html#a0">dmxdpms.h</a>, <a class="el" href="dmxdpms_8c.html#a3">dmxdpms.c</a><li>dmxDPMSTerm()
-: <a class="el" href="dmxdpms_8h.html#a1">dmxdpms.h</a>, <a class="el" href="dmxdpms_8c.html#a4">dmxdpms.c</a><li>dmxDPMSWakeup()
-: <a class="el" href="dmxdpms_8h.html#a2">dmxdpms.h</a>, <a class="el" href="dmxdpms_8c.html#a5">dmxdpms.c</a><li>dmxDummyKbdGetInfo()
-: <a class="el" href="dmxdummy_8h.html#a1">dmxdummy.h</a>, <a class="el" href="dmxdummy_8c.html#a0">dmxdummy.c</a><li>dmxDummyMouGetInfo()
-: <a class="el" href="dmxdummy_8h.html#a0">dmxdummy.h</a>, <a class="el" href="dmxdummy_8c.html#a1">dmxdummy.c</a><li>dmxEnqueue()
-: <a class="el" href="dmxevents_8h.html#a1">dmxevents.h</a>, <a class="el" href="dmxevents_8c.html#a27">dmxevents.c</a><li>dmxeqEnqueue()
-: <a class="el" href="dmxeq_8c.html#a13">dmxeq.c</a>, <a class="el" href="dmxinput_8h.html#a24">dmxinput.h</a><li>dmxeqProcessInputEvents()
-: <a class="el" href="dmxeq_8h.html#a1">dmxeq.h</a>, <a class="el" href="dmxeq_8c.html#a16">dmxeq.c</a><li>dmxeqSwitchScreen()
-: <a class="el" href="dmxeq_8c.html#a14">dmxeq.c</a>, <a class="el" href="dmxinput_8h.html#a25">dmxinput.h</a><li>dmxEventName()
-: <a class="el" href="dmxlog_8h.html#a9">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a17">dmxlog.c</a><li>DMXExtensionInit()
-: <a class="el" href="programs_2Xserver_2Xext_2dmx_8c.html#a3">programs/Xserver/Xext/dmx.c</a><li>dmxFillPolygon()
-: <a class="el" href="dmxgcops_8h.html#a10">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a12">dmxgcops.c</a><li>dmxFillSpans()
-: <a class="el" href="dmxgcops_8h.html#a0">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a2">dmxgcops.c</a><li>dmxFindPointerScreen()
-: <a class="el" href="dmxcommon_8h.html#a23">dmxcommon.h</a>, <a class="el" href="dmxcommon_8c.html#a25">dmxcommon.c</a><li>dmxFlushPendingSyncs()
-: <a class="el" href="dmxextension_8h.html#a6">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a11">dmxextension.c</a><li>DMXForceWindowCreation()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a13">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a26">dmxext.h</a><li>dmxForceWindowCreation()
-: <a class="el" href="dmxextension_8h.html#a5">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a10">dmxextension.c</a><li>DMXGetDesktopAttributes()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a24">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a33">dmxext.h</a><li>dmxGetGlobalPosition()
-: <a class="el" href="dmxevents_8c.html#a21">dmxevents.c</a>, <a class="el" href="dmxinput_8h.html#a26">dmxinput.h</a><li>dmxGetImage()
-: <a class="el" href="dmxgcops_8h.html#a20">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a22">dmxgcops.c</a><li>dmxGetInputAttributes()
-: <a class="el" href="dmxextension_8h.html#a11">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a5">dmxextension.c</a><li>DMXGetInputAttributes()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a29">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a36">dmxext.h</a><li>DMXGetInputCount()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a28">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a35">dmxext.h</a><li>dmxGetInputCount()
-: <a class="el" href="dmxextension_8h.html#a10">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a4">dmxextension.c</a><li>dmxGetLogLevel()
-: <a class="el" href="dmxlog_8h.html#a6">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a2">dmxlog.c</a><li>dmxGetNumScreens()
-: <a class="el" href="dmxextension_8h.html#a4">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a9">dmxextension.c</a><li>DMXGetScreenAttributes()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a15">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a28">dmxext.h</a><li>dmxGetScreenAttributes()
-: <a class="el" href="dmxextension_8h.html#a7">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a1">dmxextension.c</a><li>DMXGetScreenCount()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a14">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a27">dmxext.h</a><li>dmxGetSpans()
-: <a class="el" href="dmxgcops_8h.html#a21">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a23">dmxgcops.c</a><li>DMXGetWindowAttributes()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a23">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a32">dmxext.h</a><li>dmxGetWindowAttributes()
-: <a class="el" href="dmxextension_8h.html#a8">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a2">dmxextension.c</a><li>dmxGlyphs()
-: <a class="el" href="dmxpict_8h.html#a21">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a28">dmxpict.c</a><li>dmxHideCursor()
-: <a class="el" href="dmxcursor_8h.html#a12">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a40">dmxcursor.c</a><li>dmxImageGlyphBlt()
-: <a class="el" href="dmxgcops_8h.html#a17">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a19">dmxgcops.c</a><li>dmxImageText16()
-: <a class="el" href="dmxgcops_8h.html#a16">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a18">dmxgcops.c</a><li>dmxImageText8()
-: <a class="el" href="dmxgcops_8h.html#a15">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a17">dmxgcops.c</a><li>dmxInitFonts()
-: <a class="el" href="dmxfont_8h.html#a3">dmxfont.h</a>, <a class="el" href="dmxfont_8c.html#a10">dmxfont.c</a><li>dmxInitGC()
-: <a class="el" href="dmxgc_8h.html#a6">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a2">dmxgc.c</a><li>dmxInitIndexed()
-: <a class="el" href="dmxpict_8h.html#a23">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a30">dmxpict.c</a><li>dmxInitOrigins()
-: <a class="el" href="dmxcursor_8h.html#a6">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a22">dmxcursor.c</a><li>dmxInitOverlap()
-: <a class="el" href="dmxcursor_8h.html#a7">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a28">dmxcursor.c</a><li>dmxInitPixmap()
-: <a class="el" href="dmxpixmap_8h.html#a4">dmxpixmap.h</a>, <a class="el" href="dmxpixmap_8c.html#a0">dmxpixmap.c</a><li>dmxInitRender()
-: <a class="el" href="dmxpict_8h.html#a9">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a12">dmxpict.c</a><li>dmxInitWindow()
-: <a class="el" href="dmxwindow_8h.html#a11">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a3">dmxwindow.c</a><li>dmxInputCopyLocal()
-: <a class="el" href="dmxinputinit_8h.html#a53">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a33">dmxinputinit.c</a><li>dmxInputDetach()
-: <a class="el" href="dmxinputinit_8h.html#a58">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a43">dmxinputinit.c</a>, <a class="el" href="dmxdetach_8c.html#a0">dmxdetach.c</a><li>dmxInputDetachAll()
-: <a class="el" href="dmxinputinit_8h.html#a59">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a44">dmxinputinit.c</a><li>dmxInputDetachId()
-: <a class="el" href="dmxinputinit_8h.html#a60">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a45">dmxinputinit.c</a><li>dmxInputFree()
-: <a class="el" href="dmxinputinit_8c.html#a41">dmxinputinit.c</a>, <a class="el" href="dmxinput_8h.html#a20">dmxinput.h</a><li>dmxInputInit()
-: <a class="el" href="dmxinputinit_8c.html#a39">dmxinputinit.c</a>, <a class="el" href="dmxinput_8h.html#a17">dmxinput.h</a><li>dmxInputLateReInit()
-: <a class="el" href="dmxinputinit_8c.html#a38">dmxinputinit.c</a>, <a class="el" href="dmxinput_8h.html#a19">dmxinput.h</a><li>dmxInputLogDevices()
-: <a class="el" href="dmxinputinit_8c.html#a42">dmxinputinit.c</a>, <a class="el" href="dmxinput_8h.html#a21">dmxinput.h</a><li>dmxInputReInit()
-: <a class="el" href="dmxinputinit_8c.html#a37">dmxinputinit.c</a>, <a class="el" href="dmxinput_8h.html#a18">dmxinput.h</a><li>dmxInstallColormap()
-: <a class="el" href="dmxcmap_8h.html#a7">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a6">dmxcmap.c</a><li>dmxInvalidateGlobalPosition()
-: <a class="el" href="dmxevents_8h.html#a3">dmxevents.h</a>, <a class="el" href="dmxevents_8c.html#a22">dmxevents.c</a><li>dmxKeyboardBellProc()
-: <a class="el" href="dmxinputinit_8h.html#a56">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a20">dmxinputinit.c</a><li>dmxKeyboardKbdCtrlProc()
-: <a class="el" href="dmxinputinit_8h.html#a55">dmxinputinit.h</a>, <a class="el" href="dmxinputinit_8c.html#a18">dmxinputinit.c</a><li>dmxLog()
-: <a class="el" href="dmxlog_8h.html#a7">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a7">dmxlog.c</a><li>dmxLogArgs()
-: <a class="el" href="dmxlog_8h.html#a15">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a14">dmxlog.c</a><li>dmxLogCont()
-: <a class="el" href="dmxlog_8h.html#a8">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a8">dmxlog.c</a><li>dmxLogInput()
-: <a class="el" href="dmxlog_8h.html#a13">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a12">dmxlog.c</a><li>dmxLogInputCont()
-: <a class="el" href="dmxlog_8h.html#a14">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a13">dmxlog.c</a><li>dmxLogOutput()
-: <a class="el" href="dmxlog_8h.html#a10">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a9">dmxlog.c</a><li>dmxLogOutputCont()
-: <a class="el" href="dmxlog_8h.html#a11">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a10">dmxlog.c</a><li>dmxLogOutputWarning()
-: <a class="el" href="dmxlog_8h.html#a12">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a11">dmxlog.c</a><li>dmxLogVisual()
-: <a class="el" href="dmxlog_8h.html#a16">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a15">dmxlog.c</a><li>dmxLookupVisual()
-: <a class="el" href="dmxvisual_8h.html#a0">dmxvisual.h</a>, <a class="el" href="dmxvisual_8c.html#a0">dmxvisual.c</a><li>dmxLookupVisualFromID()
-: <a class="el" href="dmxvisual_8h.html#a1">dmxvisual.h</a>, <a class="el" href="dmxvisual_8c.html#a1">dmxvisual.c</a><li>dmxMapClear()
-: <a class="el" href="dmxmap_8h.html#a1">dmxmap.h</a>, <a class="el" href="dmxmap_8c.html#a1">dmxmap.c</a><li>dmxMapInsert()
-: <a class="el" href="dmxmap_8h.html#a0">dmxmap.h</a>, <a class="el" href="dmxmap_8c.html#a0">dmxmap.c</a><li>dmxMapLookup()
-: <a class="el" href="dmxmap_8h.html#a2">dmxmap.h</a>, <a class="el" href="dmxmap_8c.html#a2">dmxmap.c</a><li>dmxMotion()
-: <a class="el" href="dmxevents_8h.html#a0">dmxevents.h</a>, <a class="el" href="dmxevents_8c.html#a23">dmxevents.c</a><li>dmxMoveCursor()
-: <a class="el" href="dmxcursor_8h.html#a9">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a38">dmxcursor.c</a><li>dmxOnScreen()
-: <a class="el" href="dmxcursor_8h.html#a11">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a23">dmxcursor.c</a><li>dmxPaintWindowBackground()
-: <a class="el" href="dmxwindow_8h.html#a23">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a20">dmxwindow.c</a><li>dmxPaintWindowBorder()
-: <a class="el" href="dmxwindow_8h.html#a24">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a21">dmxwindow.c</a><li>dmxPictureInit()
-: <a class="el" href="dmxpict_8h.html#a11">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a14">dmxpict.c</a><li>dmxPointerGetMotionBufferSize()
-: <a class="el" href="dmxmotion_8h.html#a0">dmxmotion.h</a>, <a class="el" href="dmxmotion_8c.html#a1">dmxmotion.c</a><li>dmxPointerGetMotionEvents()
-: <a class="el" href="dmxmotion_8h.html#a1">dmxmotion.h</a>, <a class="el" href="dmxmotion_8c.html#a2">dmxmotion.c</a><li>dmxPointerPutMotionEvent()
-: <a class="el" href="dmxmotion_8h.html#a2">dmxmotion.h</a>, <a class="el" href="dmxmotion_8c.html#a3">dmxmotion.c</a><li>dmxPolyArc()
-: <a class="el" href="dmxgcops_8h.html#a9">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a11">dmxgcops.c</a><li>dmxPolyFillArc()
-: <a class="el" href="dmxgcops_8h.html#a12">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a14">dmxgcops.c</a><li>dmxPolyFillRect()
-: <a class="el" href="dmxgcops_8h.html#a11">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a13">dmxgcops.c</a><li>dmxPolyGlyphBlt()
-: <a class="el" href="dmxgcops_8h.html#a18">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a20">dmxgcops.c</a><li>dmxPolylines()
-: <a class="el" href="dmxgcops_8h.html#a6">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a8">dmxgcops.c</a><li>dmxPolyPoint()
-: <a class="el" href="dmxgcops_8h.html#a5">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a7">dmxgcops.c</a><li>dmxPolyRectangle()
-: <a class="el" href="dmxgcops_8h.html#a8">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a10">dmxgcops.c</a><li>dmxPolySegment()
-: <a class="el" href="dmxgcops_8h.html#a7">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a9">dmxgcops.c</a><li>dmxPolyText16()
-: <a class="el" href="dmxgcops_8h.html#a14">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a16">dmxgcops.c</a><li>dmxPolyText8()
-: <a class="el" href="dmxgcops_8h.html#a13">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a15">dmxgcops.c</a><li>dmxPositionWindow()
-: <a class="el" href="dmxwindow_8h.html#a17">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a13">dmxwindow.c</a><li>dmxPropertyDisplay()
-: <a class="el" href="dmxprop_8h.html#a0">dmxprop.h</a>, <a class="el" href="dmxprop_8c.html#a8">dmxprop.c</a><li>dmxPropertyIterate()
-: <a class="el" href="dmxprop_8c.html#a5">dmxprop.c</a><li>dmxPropertySameDisplay()
-: <a class="el" href="dmxprop_8h.html#a3">dmxprop.h</a>, <a class="el" href="dmxprop_8c.html#a9">dmxprop.c</a><li>dmxPropertyWindow()
-: <a class="el" href="dmxprop_8h.html#a1">dmxprop.h</a>, <a class="el" href="dmxprop_8c.html#a10">dmxprop.c</a><li>dmxPushPixels()
-: <a class="el" href="dmxgcops_8h.html#a19">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a21">dmxgcops.c</a><li>dmxPutImage()
-: <a class="el" href="dmxgcops_8h.html#a2">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a4">dmxgcops.c</a><li>DMXQueryExtension()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a10">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a23">dmxext.h</a><li>DMXQueryVersion()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a11">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a24">dmxext.h</a><li>dmxRealizeFont()
-: <a class="el" href="dmxfont_8h.html#a5">dmxfont.h</a>, <a class="el" href="dmxfont_8c.html#a13">dmxfont.c</a><li>dmxRealizeWindow()
-: <a class="el" href="dmxwindow_8h.html#a19">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a15">dmxwindow.c</a><li>dmxReInitOrigins()
-: <a class="el" href="dmxcursor_8h.html#a5">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a21">dmxcursor.c</a><li>dmxRemoveInput()
-: <a class="el" href="dmxextension_8h.html#a13">dmxextension.h</a>, <a class="el" href="dmxextension_8c.html#a8">dmxextension.c</a><li>DMXRemoveInput()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a33">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a38">dmxext.h</a><li>DMXRemoveScreen()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a22">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a31">dmxext.h</a><li>dmxReparentWindow()
-: <a class="el" href="dmxwindow_8h.html#a27">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a24">dmxwindow.c</a><li>dmxResetFonts()
-: <a class="el" href="dmxfont_8h.html#a4">dmxfont.h</a>, <a class="el" href="dmxfont_8c.html#a11">dmxfont.c</a><li>dmxResetRender()
-: <a class="el" href="dmxpict_8h.html#a10">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a13">dmxpict.c</a><li>dmxResizeRootWindow()
-: <a class="el" href="dmxwindow_8h.html#a30">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a6">dmxwindow.c</a><li>dmxResizeScreenWindow()
-: <a class="el" href="dmxwindow_8h.html#a29">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a5">dmxwindow.c</a><li>dmxResizeWindow()
-: <a class="el" href="dmxwindow_8h.html#a26">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a23">dmxwindow.c</a><li>dmxRestackWindow()
-: <a class="el" href="dmxwindow_8h.html#a21">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a17">dmxwindow.c</a><li>dmxScreenInit()
-: <a class="el" href="dmxscrinit_8h.html#a1">dmxscrinit.h</a>, <a class="el" href="dmxscrinit_8c.html#a12">dmxscrinit.c</a><li>dmxSetLogLevel()
-: <a class="el" href="dmxlog_8h.html#a5">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a1">dmxlog.c</a><li>dmxSetShape()
-: <a class="el" href="dmxwindow_8h.html#a32">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a26">dmxwindow.c</a><li>dmxSetSpans()
-: <a class="el" href="dmxgcops_8h.html#a1">dmxgcops.h</a>, <a class="el" href="dmxgcops_8c.html#a3">dmxgcops.c</a><li>dmxSetWidthHeight()
-: <a class="el" href="dmxcb_8h.html#a4">dmxcb.h</a>, <a class="el" href="dmxcb_8c.html#a7">dmxcb.c</a><li>dmxShadowUpdateProc()
-: <a class="el" href="dmxshadow_8h.html#a0">dmxshadow.h</a>, <a class="el" href="dmxshadow_8c.html#a0">dmxshadow.c</a><li>dmxSigioBlock()
-: <a class="el" href="dmxsigio_8h.html#a0">dmxsigio.h</a>, <a class="el" href="dmxsigio_8c.html#a5">dmxsigio.c</a><li>dmxSigioDisableInput()
-: <a class="el" href="dmxsigio_8h.html#a3">dmxsigio.h</a>, <a class="el" href="dmxsigio_8c.html#a12">dmxsigio.c</a><li>dmxSigioEnableInput()
-: <a class="el" href="dmxsigio_8h.html#a2">dmxsigio.h</a>, <a class="el" href="dmxsigio_8c.html#a11">dmxsigio.c</a><li>dmxSigioRegister()
-: <a class="el" href="dmxsigio_8h.html#a4">dmxsigio.h</a>, <a class="el" href="dmxsigio_8c.html#a13">dmxsigio.c</a><li>dmxSigioUnblock()
-: <a class="el" href="dmxsigio_8h.html#a1">dmxsigio.h</a>, <a class="el" href="dmxsigio_8c.html#a6">dmxsigio.c</a><li>dmxSigioUnregister()
-: <a class="el" href="dmxsigio_8h.html#a5">dmxsigio.h</a>, <a class="el" href="dmxsigio_8c.html#a14">dmxsigio.c</a><li>dmxStatActivate()
-: <a class="el" href="dmxstat_8h.html#a6">dmxstat.h</a>, <a class="el" href="dmxstat_8c.html#a6">dmxstat.c</a><li>dmxStatAlloc()
-: <a class="el" href="dmxstat_8h.html#a7">dmxstat.h</a>, <a class="el" href="dmxstat_8c.html#a7">dmxstat.c</a><li>dmxStatFree()
-: <a class="el" href="dmxstat_8h.html#a8">dmxstat.h</a>, <a class="el" href="dmxstat_8c.html#a8">dmxstat.c</a><li>dmxStatInit()
-: <a class="el" href="dmxstat_8h.html#a9">dmxstat.h</a>, <a class="el" href="dmxstat_8c.html#a12">dmxstat.c</a><li>dmxStatSync()
-: <a class="el" href="dmxstat_8h.html#a10">dmxstat.h</a>, <a class="el" href="dmxstat_8c.html#a10">dmxstat.c</a><li>dmxStoreColors()
-: <a class="el" href="dmxcmap_8h.html#a8">dmxcmap.h</a>, <a class="el" href="dmxcmap_8c.html#a7">dmxcmap.c</a><li>dmxSync()
-: <a class="el" href="dmxsync_8h.html#a2">dmxsync.h</a>, <a class="el" href="dmxsync_8c.html#a9">dmxsync.c</a><li>DMXSync()
-: <a class="el" href="lib_2dmx_2dmx_8c.html#a12">lib/dmx/dmx.c</a>, <a class="el" href="dmxext_8h.html#a25">dmxext.h</a><li>dmxSyncActivate()
-: <a class="el" href="dmxsync_8h.html#a0">dmxsync.h</a>, <a class="el" href="dmxsync_8c.html#a7">dmxsync.c</a><li>dmxSyncInit()
-: <a class="el" href="dmxsync_8h.html#a1">dmxsync.h</a>, <a class="el" href="dmxsync_8c.html#a8">dmxsync.c</a><li>dmxTrapezoids()
-: <a class="el" href="dmxpict_8h.html#a26">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a33">dmxpict.c</a><li>dmxTriangles()
-: <a class="el" href="dmxpict_8h.html#a27">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a34">dmxpict.c</a><li>dmxTriFan()
-: <a class="el" href="dmxpict_8h.html#a29">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a36">dmxpict.c</a><li>dmxTriStrip()
-: <a class="el" href="dmxpict_8h.html#a28">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a35">dmxpict.c</a><li>dmxUnrealizeFont()
-: <a class="el" href="dmxfont_8h.html#a6">dmxfont.h</a>, <a class="el" href="dmxfont_8c.html#a15">dmxfont.c</a><li>dmxUnrealizeWindow()
-: <a class="el" href="dmxwindow_8h.html#a20">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a16">dmxwindow.c</a><li>dmxUpdateIndexed()
-: <a class="el" href="dmxpict_8h.html#a25">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a32">dmxpict.c</a><li>dmxUpdateWindowInfo()
-: <a class="el" href="dmxinput_8h.html#a22">dmxinput.h</a>, <a class="el" href="dmxinput_8c.html#a3">dmxinput.c</a><li>dmxValidateGC()
-: <a class="el" href="dmxgc_8h.html#a8">dmxgc.h</a>, <a class="el" href="dmxgc_8c.html#a5">dmxgc.c</a><li>dmxValidatePicture()
-: <a class="el" href="dmxpict_8h.html#a19">dmxpict.h</a>, <a class="el" href="dmxpict_8c.html#a26">dmxpict.c</a><li>dmxVDLRead()
-: <a class="el" href="dmxcompat_8h.html#a0">dmxcompat.h</a>, <a class="el" href="dmxcompat_8c.html#a4">dmxcompat.c</a><li>dmxWindowExposures()
-: <a class="el" href="dmxwindow_8h.html#a22">dmxwindow.h</a>, <a class="el" href="dmxwindow_8c.html#a19">dmxwindow.c</a><li>dmxXInputEventName()
-: <a class="el" href="dmxlog_8h.html#a17">dmxlog.h</a>, <a class="el" href="dmxlog_8c.html#a16">dmxlog.c</a></ul>
-<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
-<li>GetTimeInMillis()
-: <a class="el" href="dmxinit_8c.html#a42">dmxinit.c</a></ul>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>InitInput()
-: <a class="el" href="dmxinput_8c.html#a1">dmxinput.c</a><li>InitOutput()
-: <a class="el" href="dmxinit_8c.html#a34">dmxinit.c</a></ul>
-<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
-<li>kbdLinuxBell()
-: <a class="el" href="lnx-keyboard_8h.html#a11">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a26">lnx-keyboard.c</a><li>kbdLinuxCreatePrivate()
-: <a class="el" href="lnx-keyboard_8h.html#a0">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a24">lnx-keyboard.c</a><li>kbdLinuxCtrl()
-: <a class="el" href="lnx-keyboard_8h.html#a10">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a27">lnx-keyboard.c</a><li>kbdLinuxDestroyPrivate()
-: <a class="el" href="lnx-keyboard_8h.html#a1">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a25">lnx-keyboard.c</a><li>kbdLinuxGetInfo()
-: <a class="el" href="lnx-keyboard_8h.html#a3">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a47">lnx-keyboard.c</a><li>kbdLinuxInit()
-: <a class="el" href="lnx-keyboard_8h.html#a2">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a38">lnx-keyboard.c</a><li>kbdLinuxOff()
-: <a class="el" href="lnx-keyboard_8h.html#a5">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a44">lnx-keyboard.c</a><li>kbdLinuxOn()
-: <a class="el" href="lnx-keyboard_8h.html#a4">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a43">lnx-keyboard.c</a><li>kbdLinuxRead()
-: <a class="el" href="lnx-keyboard_8c.html#a42">lnx-keyboard.c</a><li>kbdLinuxVTPostSwitch()
-: <a class="el" href="lnx-keyboard_8h.html#a7">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a33">lnx-keyboard.c</a><li>kbdLinuxVTPreSwitch()
-: <a class="el" href="lnx-keyboard_8h.html#a6">lnx-keyboard.h</a>, <a class="el" href="lnx-keyboard_8c.html#a32">lnx-keyboard.c</a><li>kbdLinuxVTSwitch()
-: <a class="el" href="lnx-keyboard_8c.html#a34">lnx-keyboard.c</a><li>kbdUSBCtrl()
-: <a class="el" href="usb-keyboard_8h.html#a4">usb-keyboard.h</a>, <a class="el" href="usb-keyboard_8c.html#a20">usb-keyboard.c</a><li>kbdUSBGetInfo()
-: <a class="el" href="usb-keyboard_8h.html#a1">usb-keyboard.h</a>, <a class="el" href="usb-keyboard_8c.html#a26">usb-keyboard.c</a><li>kbdUSBInit()
-: <a class="el" href="usb-keyboard_8h.html#a0">usb-keyboard.h</a>, <a class="el" href="usb-keyboard_8c.html#a21">usb-keyboard.c</a><li>kbdUSBOn()
-: <a class="el" href="usb-keyboard_8h.html#a2">usb-keyboard.h</a>, <a class="el" href="usb-keyboard_8c.html#a24">usb-keyboard.c</a><li>kbdUSBRead()
-: <a class="el" href="usb-keyboard_8c.html#a23">usb-keyboard.c</a></ul>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
-<li>LegalModifier()
-: <a class="el" href="dmxinput_8c.html#a0">dmxinput.c</a></ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>mouUSBGetInfo()
-: <a class="el" href="usb-mouse_8h.html#a2">usb-mouse.h</a>, <a class="el" href="usb-mouse_8c.html#a16">usb-mouse.c</a><li>mouUSBInit()
-: <a class="el" href="usb-mouse_8h.html#a1">usb-mouse.h</a>, <a class="el" href="usb-mouse_8c.html#a13">usb-mouse.c</a><li>mouUSBOn()
-: <a class="el" href="usb-mouse_8h.html#a3">usb-mouse.h</a>, <a class="el" href="usb-mouse_8c.html#a14">usb-mouse.c</a><li>mouUSBRead()
-: <a class="el" href="usb-mouse_8c.html#a12">usb-mouse.c</a><li>msLinuxCreatePrivate()
-: <a class="el" href="lnx-ms_8h.html#a0">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a24">lnx-ms.c</a><li>msLinuxDestroyPrivate()
-: <a class="el" href="lnx-ms_8h.html#a1">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a25">lnx-ms.c</a><li>msLinuxGetInfo()
-: <a class="el" href="lnx-ms_8h.html#a4">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a26">lnx-ms.c</a><li>msLinuxInit()
-: <a class="el" href="lnx-ms_8h.html#a3">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a18">lnx-ms.c</a><li>msLinuxOff()
-: <a class="el" href="lnx-ms_8h.html#a6">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a20">lnx-ms.c</a><li>msLinuxOn()
-: <a class="el" href="lnx-ms_8h.html#a5">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a19">lnx-ms.c</a><li>msLinuxRead()
-: <a class="el" href="lnx-ms_8c.html#a17">lnx-ms.c</a><li>msLinuxVTPostSwitch()
-: <a class="el" href="lnx-ms_8h.html#a9">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a23">lnx-ms.c</a><li>msLinuxVTPreSwitch()
-: <a class="el" href="lnx-ms_8h.html#a8">lnx-ms.h</a>, <a class="el" href="lnx-ms_8c.html#a22">lnx-ms.c</a></ul>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
-<li>OpenInputDevice()
-: <a class="el" href="dmxxinput_8c.html#a5">dmxxinput.c</a><li>OsVendorFatalError()
-: <a class="el" href="dmxinit_8c.html#a39">dmxinit.c</a><li>OsVendorInit()
-: <a class="el" href="dmxinit_8c.html#a38">dmxinit.c</a><li>othUSBGetInfo()
-: <a class="el" href="usb-other_8h.html#a2">usb-other.h</a>, <a class="el" href="usb-other_8c.html#a16">usb-other.c</a><li>othUSBInit()
-: <a class="el" href="usb-other_8h.html#a1">usb-other.h</a>, <a class="el" href="usb-other_8c.html#a14">usb-other.c</a><li>othUSBOn()
-: <a class="el" href="usb-other_8h.html#a3">usb-other.h</a>, <a class="el" href="usb-other_8c.html#a15">usb-other.c</a><li>othUSBRead()
-: <a class="el" href="usb-other_8c.html#a13">usb-other.c</a></ul>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>ProcessInputEvents()
-: <a class="el" href="dmxinput_8c.html#a2">dmxinput.c</a><li>ps2LinuxCreatePrivate()
-: <a class="el" href="lnx-ps2_8h.html#a0">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a24">lnx-ps2.c</a><li>ps2LinuxDestroyPrivate()
-: <a class="el" href="lnx-ps2_8h.html#a1">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a25">lnx-ps2.c</a><li>ps2LinuxGetInfo()
-: <a class="el" href="lnx-ps2_8h.html#a4">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a26">lnx-ps2.c</a><li>ps2LinuxInit()
-: <a class="el" href="lnx-ps2_8h.html#a3">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a18">lnx-ps2.c</a><li>ps2LinuxOff()
-: <a class="el" href="lnx-ps2_8h.html#a6">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a20">lnx-ps2.c</a><li>ps2LinuxOn()
-: <a class="el" href="lnx-ps2_8h.html#a5">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a19">lnx-ps2.c</a><li>ps2LinuxRead()
-: <a class="el" href="lnx-ps2_8c.html#a17">lnx-ps2.c</a><li>ps2LinuxVTPostSwitch()
-: <a class="el" href="lnx-ps2_8h.html#a9">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a23">lnx-ps2.c</a><li>ps2LinuxVTPreSwitch()
-: <a class="el" href="lnx-ps2_8h.html#a8">lnx-ps2.h</a>, <a class="el" href="lnx-ps2_8c.html#a22">lnx-ps2.c</a></ul>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>SetDeviceMode()
-: <a class="el" href="dmxxinput_8c.html#a6">dmxxinput.c</a><li>SetDeviceValuators()
-: <a class="el" href="dmxxinput_8c.html#a7">dmxxinput.c</a></ul>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
-<li>usbCreatePrivate()
-: <a class="el" href="usb-common_8h.html#a3">usb-common.h</a>, <a class="el" href="usb-common_8c.html#a25">usb-common.c</a><li>usbDestroyPrivate()
-: <a class="el" href="usb-common_8h.html#a4">usb-common.h</a>, <a class="el" href="usb-common_8c.html#a26">usb-common.c</a><li>usbInit()
-: <a class="el" href="usb-common_8h.html#a6">usb-common.h</a>, <a class="el" href="usb-common_8c.html#a23">usb-common.c</a><li>usbOff()
-: <a class="el" href="usb-common_8h.html#a7">usb-common.h</a>, <a class="el" href="usb-common_8c.html#a24">usb-common.c</a><li>usbRead()
-: <a class="el" href="usb-common_8c.html#a21">usb-common.c</a></ul>
-<h3><a class="anchor" name="index_x">- x -</a></h3><ul>
-<li>XCheckNotMaskEvent()
-: <a class="el" href="ChkNotMaskEv_8h.html#a0">ChkNotMaskEv.h</a>, <a class="el" href="ChkNotMaskEv_8c.html#a2">ChkNotMaskEv.c</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_type.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_type.html
deleted file mode 100644
index e3aaeb4ca..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_type.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
-<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_vars.html">Variables</a> | <a class="qindexHL" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumeration&nbsp;values</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
-<div class="qindex"><a class="qindex" href="#index_d">d</a> | <a class="qindex" href="#index_e">e</a> | <a class="qindex" href="#index_m">m</a></div>
-
-<p>
-
-<p>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>dmxColormapPrivPtr
-: <a class="el" href="dmxcmap_8h.html#a3">dmxcmap.h</a><li>dmxColormapPrivRec
-: <a class="el" href="dmxcmap_8h.html#a2">dmxcmap.h</a><li>DMXConfigCmd
-: <a class="el" href="dmxconfig_8c.html#a9">dmxconfig.c</a><li>DMXConfigCmdPtr
-: <a class="el" href="dmxconfig_8c.html#a10">dmxconfig.c</a><li>DMXConfigComment
-: <a class="el" href="dmxparse_8h.html#a8">dmxparse.h</a><li>DMXConfigCommentPtr
-: <a class="el" href="dmxparse_8h.html#a9">dmxparse.h</a><li>DMXConfigDisplay
-: <a class="el" href="dmxparse_8h.html#a14">dmxparse.h</a><li>DMXConfigDisplayPtr
-: <a class="el" href="dmxparse_8h.html#a15">dmxparse.h</a><li>DMXConfigEntry
-: <a class="el" href="dmxparse_8h.html#a26">dmxparse.h</a><li>DMXConfigEntryPtr
-: <a class="el" href="dmxparse_8h.html#a27">dmxparse.h</a><li>DMXConfigFullDim
-: <a class="el" href="dmxparse_8h.html#a12">dmxparse.h</a><li>DMXConfigFullDimPtr
-: <a class="el" href="dmxparse_8h.html#a13">dmxparse.h</a><li>DMXConfigList
-: <a class="el" href="dmxconfig_8c.html#a7">dmxconfig.c</a><li>DMXConfigListPtr
-: <a class="el" href="dmxconfig_8c.html#a8">dmxconfig.c</a><li>DMXConfigNumber
-: <a class="el" href="dmxparse_8h.html#a4">dmxparse.h</a><li>DMXConfigNumberPtr
-: <a class="el" href="dmxparse_8h.html#a5">dmxparse.h</a><li>DMXConfigOption
-: <a class="el" href="dmxparse_8h.html#a18">dmxparse.h</a><li>DMXConfigOptionPtr
-: <a class="el" href="dmxparse_8h.html#a19">dmxparse.h</a><li>DMXConfigPair
-: <a class="el" href="dmxparse_8h.html#a6">dmxparse.h</a><li>DMXConfigPairPtr
-: <a class="el" href="dmxparse_8h.html#a7">dmxparse.h</a><li>DMXConfigParam
-: <a class="el" href="dmxparse_8h.html#a20">dmxparse.h</a><li>DMXConfigParamPtr
-: <a class="el" href="dmxparse_8h.html#a21">dmxparse.h</a><li>DMXConfigPartDim
-: <a class="el" href="dmxparse_8h.html#a10">dmxparse.h</a><li>DMXConfigPartDimPtr
-: <a class="el" href="dmxparse_8h.html#a11">dmxparse.h</a><li>DMXConfigString
-: <a class="el" href="dmxparse_8h.html#a2">dmxparse.h</a><li>DMXConfigStringPtr
-: <a class="el" href="dmxparse_8h.html#a3">dmxparse.h</a><li>DMXConfigSub
-: <a class="el" href="dmxparse_8h.html#a22">dmxparse.h</a><li>DMXConfigSubPtr
-: <a class="el" href="dmxparse_8h.html#a23">dmxparse.h</a><li>DMXConfigToken
-: <a class="el" href="dmxparse_8h.html#a0">dmxparse.h</a><li>DMXConfigTokenPtr
-: <a class="el" href="dmxparse_8h.html#a1">dmxparse.h</a><li>DMXConfigVirtual
-: <a class="el" href="dmxparse_8h.html#a24">dmxparse.h</a><li>DMXConfigVirtualPtr
-: <a class="el" href="dmxparse_8h.html#a25">dmxparse.h</a><li>DMXConfigWall
-: <a class="el" href="dmxparse_8h.html#a16">dmxparse.h</a><li>DMXConfigWallPtr
-: <a class="el" href="dmxparse_8h.html#a17">dmxparse.h</a><li>dmxCursorPrivPtr
-: <a class="el" href="dmxcursor_8h.html#a2">dmxcursor.h</a><li>dmxCursorPrivRec
-: <a class="el" href="dmxcursor_8h.html#a1">dmxcursor.h</a><li>DMXEventMap
-: <a class="el" href="dmxinputinit_8h.html#a34">dmxinputinit.h</a><li>dmxFontPrivPtr
-: <a class="el" href="dmxfont_8h.html#a1">dmxfont.h</a><li>dmxFontPrivRec
-: <a class="el" href="dmxfont_8h.html#a0">dmxfont.h</a><li>dmxGCPrivPtr
-: <a class="el" href="dmxgc_8h.html#a4">dmxgc.h</a><li>dmxGCPrivRec
-: <a class="el" href="dmxgc_8h.html#a3">dmxgc.h</a><li>dmxGlyphPrivPtr
-: <a class="el" href="dmxpict_8h.html#a6">dmxpict.h</a><li>dmxGlyphPrivRec
-: <a class="el" href="dmxpict_8h.html#a5">dmxpict.h</a><li>DMXInputInfo
-: <a class="el" href="dmx_8h.html#a2">dmx.h</a><li>DMXLocalInitInfo
-: <a class="el" href="dmxinputinit_8h.html#a9">dmxinputinit.h</a><li>DMXLocalInitInfoPtr
-: <a class="el" href="dmxinputinit_8h.html#a10">dmxinputinit.h</a><li>DMXLocalInputInfoPtr
-: <a class="el" href="dmxinput_8h.html#a3">dmxinput.h</a><li>DMXLocalInputInfoRec
-: <a class="el" href="dmxinputinit_8h.html#a35">dmxinputinit.h</a><li>dmxPictPrivPtr
-: <a class="el" href="dmxpict_8h.html#a4">dmxpict.h</a><li>dmxPictPrivRec
-: <a class="el" href="dmxpict_8h.html#a3">dmxpict.h</a><li>dmxPixPrivPtr
-: <a class="el" href="dmxpixmap_8h.html#a2">dmxpixmap.h</a><li>dmxPixPrivRec
-: <a class="el" href="dmxpixmap_8h.html#a1">dmxpixmap.h</a><li>DMXScreenInfo
-: <a class="el" href="dmx_8h.html#a4">dmx.h</a><li>DMXStatAvg
-: <a class="el" href="dmxstat_8c.html#a0">dmxstat.c</a><li>DMXStatInfo
-: <a class="el" href="dmx_8h.html#a3">dmx.h</a><li>dmxWinPrivPtr
-: <a class="el" href="dmxwindow_8h.html#a9">dmxwindow.h</a><li>dmxWinPrivRec
-: <a class="el" href="dmxwindow_8h.html#a8">dmxwindow.h</a></ul>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>EventPtr
-: <a class="el" href="dmxeq_8c.html#a6">dmxeq.c</a><li>EventQueuePtr
-: <a class="el" href="dmxeq_8c.html#a8">dmxeq.c</a><li>EventQueueRec
-: <a class="el" href="dmxeq_8c.html#a7">dmxeq.c</a><li>EventRec
-: <a class="el" href="dmxeq_8c.html#a5">dmxeq.c</a></ul>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>myPrivate
-: <a class="el" href="dmxcommon_8c.html#a4">dmxcommon.c</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_vars.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_vars.html
deleted file mode 100644
index c1c2d27c6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/globals_vars.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
-<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindexHL" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_type.html">Typedefs</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumeration&nbsp;values</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
-
-<p>
-<ul>
-<li>dmxAddRemoveScreens
-: <a class="el" href="dmxinit_8c.html#a17">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a18">dmx.h</a><li>dmxColormapPrivateIndex
-: <a class="el" href="dmxscrinit_8c.html#a6">dmxscrinit.c</a>, <a class="el" href="dmxcmap_8h.html#a4">dmxcmap.h</a><li>dmxDepth
-: <a class="el" href="dmxinit_8c.html#a13">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a14">dmx.h</a><li>dmxErrorOccurred
-: <a class="el" href="dmxinit_8c.html#a7">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a9">dmx.h</a><li>dmxFontPath
-: <a class="el" href="dmxinit_8c.html#a8">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a16">dmx.h</a><li>dmxFontPrivateIndex
-: <a class="el" href="dmxscrinit_8c.html#a4">dmxscrinit.c</a>, <a class="el" href="dmxfont_8h.html#a2">dmxfont.h</a><li>dmxGCPrivateIndex
-: <a class="el" href="dmxscrinit_8c.html#a2">dmxscrinit.c</a>, <a class="el" href="dmxgc_8h.html#a5">dmxgc.h</a><li>dmxGlobalHeight
-: <a class="el" href="dmxcb_8h.html#a1">dmxcb.h</a>, <a class="el" href="dmxcb_8c.html#a6">dmxcb.c</a><li>dmxGlobalWidth
-: <a class="el" href="dmxcb_8h.html#a0">dmxcb.h</a>, <a class="el" href="dmxcb_8c.html#a5">dmxcb.c</a><li>dmxGlyphSetPrivateIndex
-: <a class="el" href="dmxscrinit_8c.html#a8">dmxscrinit.c</a>, <a class="el" href="dmxpict_8h.html#a8">dmxpict.h</a><li>dmxIgnoreBadFontPaths
-: <a class="el" href="dmxinit_8c.html#a16">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a17">dmx.h</a><li>dmxInputs
-: <a class="el" href="dmxinput_8h.html#a5">dmxinput.h</a>, <a class="el" href="dmxinit_8c.html#a4">dmxinit.c</a><li>dmxLastErrorEvent
-: <a class="el" href="dmxinit_8c.html#a6">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a8">dmx.h</a><li>dmxLazyWindowCreation
-: <a class="el" href="dmxinit_8c.html#a11">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a12">dmx.h</a><li>dmxNoRender
-: <a class="el" href="dmxinit_8c.html#a14">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a15">dmx.h</a><li>dmxNumInputs
-: <a class="el" href="dmxinput_8h.html#a4">dmxinput.h</a>, <a class="el" href="dmxinit_8c.html#a3">dmxinit.c</a><li>dmxNumScreens
-: <a class="el" href="dmxinit_8c.html#a1">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a5">dmx.h</a><li>dmxOffScreenOpt
-: <a class="el" href="dmxinit_8c.html#a9">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a10">dmx.h</a><li>dmxPictPrivateIndex
-: <a class="el" href="dmxscrinit_8c.html#a7">dmxscrinit.c</a>, <a class="el" href="dmxpict_8h.html#a7">dmxpict.h</a><li>dmxPixPrivateIndex
-: <a class="el" href="dmxpixmap_8h.html#a3">dmxpixmap.h</a><li>dmxPointerCursorFuncs
-: <a class="el" href="dmxcursor_8h.html#a3">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a10">dmxcursor.c</a><li>dmxPointerSpriteFuncs
-: <a class="el" href="dmxcursor_8h.html#a4">dmxcursor.h</a>, <a class="el" href="dmxcursor_8c.html#a11">dmxcursor.c</a><li>dmxScreenPrivateIndex
-: <a class="el" href="dmxscrinit_8h.html#a0">dmxscrinit.h</a>, <a class="el" href="dmxscrinit_8c.html#a5">dmxscrinit.c</a><li>dmxScreens
-: <a class="el" href="dmxinit_8c.html#a2">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a6">dmx.h</a><li>dmxShadowFB
-: <a class="el" href="dmxinit_8c.html#a5">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a7">dmx.h</a><li>dmxStatInterval
-: <a class="el" href="dmxstat_8h.html#a5">dmxstat.h</a>, <a class="el" href="dmxstat_8c.html#a1">dmxstat.c</a><li>dmxSubdividePrimitives
-: <a class="el" href="dmxinit_8c.html#a10">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a11">dmx.h</a><li>dmxUseXKB
-: <a class="el" href="dmxinit_8c.html#a12">dmxinit.c</a>, <a class="el" href="dmx_8h.html#a13">dmx.h</a><li>dmxWinPrivateIndex
-: <a class="el" href="dmxwindow_8h.html#a10">dmxwindow.h</a>, <a class="el" href="dmxscrinit_8c.html#a3">dmxscrinit.c</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/index.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/index.html
deleted file mode 100644
index 722db1aa5..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
-<title>Distributed Multihead X</title></head>
-<frameset cols="250,*">
- <frame src="tree.html" name="treefrm">
- <frame src="main.html" name="basefrm">
-</frameset>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/lib_2dmx_2dmx_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/lib_2dmx_2dmx_8c.html
deleted file mode 100644
index 15bb74a1e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/lib_2dmx_2dmx_8c.html
+++ /dev/null
@@ -1,894 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmx.c File Reference</h1><code>#include &lt;X11/Xlibint.h&gt;</code><br>
-<code>#include "Xext.h"</code><br>
-<code>#include "extutil.h"</code><br>
-<code>#include "<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxext_8h-source.html">dmxext.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmx_extension_info Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a10">DMXQueryExtension</a> (Display *dpy, int *event_basep, int *error_basep)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a11">DMXQueryVersion</a> (Display *dpy, int *majorVersion, int *minorVersion, int *patchVersion)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a12">DMXSync</a> (Display *dpy)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a13">DMXForceWindowCreation</a> (Display *dpy, Window window)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a14">DMXGetScreenCount</a> (Display *dpy, int *screen_count)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a15">DMXGetScreenAttributes</a> (Display *dpy, int physical_screen, <a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a20">DMXChangeScreensAttributes</a> (Display *dpy, int screen_count, int *screens, int mask_count, unsigned int *masks, <a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *attrs, int *error_screen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a21">DMXAddScreen</a> (Display *dpy, const char *displayName, unsigned int mask, <a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *attr, int *screen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a22">DMXRemoveScreen</a> (Display *dpy, int screen)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a23">DMXGetWindowAttributes</a> (Display *dpy, Window window, int *screen_count, int available_count, <a class="el" href="structDMXWindowAttributes.html">DMXWindowAttributes</a> *inf)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a24">DMXGetDesktopAttributes</a> (Display *dpy, <a class="el" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a> *attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a27">DMXChangeDesktopAttributes</a> (Display *dpy, unsigned int mask, <a class="el" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a> *attr)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a28">DMXGetInputCount</a> (Display *dpy, int *input_count)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a29">DMXGetInputAttributes</a> (Display *dpy, int id, <a class="el" href="structDMXInputAttributes.html">DMXInputAttributes</a> *inf)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a30">DMXAddInput</a> (Display *dpy, unsigned int mask, <a class="el" href="structDMXInputAttributes.html">DMXInputAttributes</a> *attr, int *id)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a31">DMXAddBackendInput</a> (Display *dpy, int screen, int sendsCore, int *newId)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a32">DMXAddConsoleInput</a> (Display *dpy, const char *name, int sendsCore, int *newId)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lib_2dmx_2dmx_8c.html#a33">DMXRemoveInput</a> (Display *dpy, int id)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file implements the client-side part of the DMX protocol. It can be included in client applications by linking with the libdmx.a library.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a31" doxytag="lib/dmx/dmx.c::DMXAddBackendInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXAddBackendInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>screen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>sendsCore</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>newId</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Add backend input (a helper function that calls <a class="el" href="lib_2dmx_2dmx_8c.html#a30">DMXAddInput</a>). </td>
- </tr>
-</table>
-<a class="anchor" name="a32" doxytag="lib/dmx/dmx.c::DMXAddConsoleInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXAddConsoleInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>name</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>sendsCore</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>newId</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Add console input (a helper function that calls <a class="el" href="lib_2dmx_2dmx_8c.html#a30">DMXAddInput</a>). </td>
- </tr>
-</table>
-<a class="anchor" name="a30" doxytag="lib/dmx/dmx.c::DMXAddInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXAddInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXInputAttributes.html">DMXInputAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Add input. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="lib/dmx/dmx.c::DMXAddScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXAddScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>const char *&nbsp;</td>
- <td class="mdname" nowrap> <em>displayName</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>screen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Add a screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a27" doxytag="lib/dmx/dmx.c::DMXChangeDesktopAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int DMXChangeDesktopAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap> <em>mask</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change the global bounding box and origin offset.<p>
-Available in DMX Protocol Version 2.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="lib/dmx/dmx.c::DMXChangeScreensAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int DMXChangeScreensAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>screen_count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>screens</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>mask_count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int *&nbsp;</td>
- <td class="mdname" nowrap> <em>masks</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>attrs</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>error_screen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Change geometries and positions of the DMX screen and root windows on the back-end X server. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="lib/dmx/dmx.c::DMXForceWindowCreation" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXForceWindowCreation </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Window&nbsp;</td>
- <td class="mdname" nowrap> <em>window</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-The creation of the specified <em>window</em> will be forced.<p>
-Available in DMX Protocol Version 1.2 Reply added in DMX Protocol Version 2.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="lib/dmx/dmx.c::DMXGetDesktopAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXGetDesktopAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXDesktopAttributes.html">DMXDesktopAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXGetDesktopAttributes protocol request returns information correctly, the information will be placed in <em>attr</em>, and True will be returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 2.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a29" doxytag="lib/dmx/dmx.c::DMXGetInputAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXGetInputAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>id</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXInputAttributes.html">DMXInputAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>inf</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXGetInputAttributes protocol request returns information about the input device with the specified <em>id</em>, information about the input device will be placed in <em>inf</em>, and True will be returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 1.1 </td>
- </tr>
-</table>
-<a class="anchor" name="a28" doxytag="lib/dmx/dmx.c::DMXGetInputCount" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXGetInputCount </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>input_count</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXGetInputCount protocol request returns the input count, the value will be placed in <em>input_count</em>, and True will be returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 1.1 </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="lib/dmx/dmx.c::DMXGetScreenAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXGetScreenAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>physical_screen</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXScreenAttributes.html">DMXScreenAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>attr</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXGetScreenAttributes protocol request returns information for the specified <em>physical_screen</em>, information about the screen will be placed in <em>attr</em>, and True will be returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 1.0; Modified in Version 2.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="lib/dmx/dmx.c::DMXGetScreenCount" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXGetScreenCount </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>screen_count</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXGetScreenCount protocol request returns the screen count, the value will be placed in <em>screen_count</em>, and True will be returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 1.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="lib/dmx/dmx.c::DMXGetWindowAttributes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXGetWindowAttributes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>Window&nbsp;</td>
- <td class="mdname" nowrap> <em>window</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>screen_count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>available_count</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="structDMXWindowAttributes.html">DMXWindowAttributes</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>inf</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXGetWindowAttributes protocol request returns information about the specified <em>window</em>, the number of screens for which information is available will be returned in <em>screen_count</em> and information about the first <em>available_count</em> of those screens will be placed in <em>inf</em>. Because this call transports a great deal of information over the wire, please call <a class="el" href="lib_2dmx_2dmx_8c.html#a14">DMXGetScreenCount</a> first, and make sure <em>inf</em> is that large.<p>
-Note that if the specified <em>window</em> has not yet been mapped when <a class="el" href="lib_2dmx_2dmx_8c.html#a23">DMXGetWindowAttributes</a> is called, then a subsequent XMapWindow call might be buffered in xlib while requests directly to the back-end X servers are processed. This race condition can be solved by calling <a class="el" href="lib_2dmx_2dmx_8c.html#a12">DMXSync</a> before talking directly to the back-end X servers.<p>
-Available in DMX Protocol Version 1.0, but not working correctly until DMX Protocol Version 1.4 </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="lib/dmx/dmx.c::DMXQueryExtension" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmx_extension_info Bool DMXQueryExtension </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>event_basep</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>error_basep</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the server has the DMX extension, the event and error bases will be placed in <em>event_basep</em> and <em>error_basep</em>, and True will be returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 1.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="lib/dmx/dmx.c::DMXQueryVersion" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXQueryVersion </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>majorVersion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>minorVersion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int *&nbsp;</td>
- <td class="mdname" nowrap> <em>patchVersion</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If the DMXQueryVersion protocol request returns version information from the server, <em>majorVersion</em>, <em>minorVersion</em>, and <em>patchVersion</em> are filled in with the appropriate information and True is returned. Otherwise, False will be returned.<p>
-Available in DMX Protocol Version 1.0 </td>
- </tr>
-</table>
-<a class="anchor" name="a33" doxytag="lib/dmx/dmx.c::DMXRemoveInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXRemoveInput </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Remove an input. </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="lib/dmx/dmx.c::DMXRemoveScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXRemoveScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname" nowrap> <em>dpy</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>screen</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Remove a screen. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="lib/dmx/dmx.c::DMXSync" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool DMXSync </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">Display *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dpy</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Flush all pending dmxSync requests in DMX server.<p>
-Available in DMX Protocol Version 1.5 </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8c.html
deleted file mode 100644
index e02182b73..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8c.html
+++ /dev/null
@@ -1,511 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>lnx-keyboard.c File Reference</h1><code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="lnx-keyboard_8h-source.html">lnx-keyboard.h</a>"</code><br>
-<code>#include "inputstr.h"</code><br>
-<code>#include "Xos.h"</code><br>
-<code>#include &lt;sys/ioctl.h&gt;</code><br>
-<code>#include &lt;errno.h&gt;</code><br>
-<code>#include &lt;signal.h&gt;</code><br>
-<code>#include &lt;sys/vt.h&gt;</code><br>
-<code>#include &lt;sys/kd.h&gt;</code><br>
-<code>#include &lt;termios.h&gt;</code><br>
-<code>#include "atKeynames.h"</code><br>
-<code>#include "xf86Keymap.h"</code><br>
-<code>#include &lt;linux/keyboard.h&gt;</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html">_myPrivate</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8c.html#a24">kbdLinuxCreatePrivate</a> (DeviceIntPtr pKeyboard)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8c.html#a25">kbdLinuxDestroyPrivate</a> (pointer priv)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8c.html#a26">kbdLinuxBell</a> (DevicePtr pDev, int percent, int volume, int pitch, int duration)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8c.html#a27">kbdLinuxCtrl</a> (DevicePtr pDev, KeybdCtrl *ctrl)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8c.html#a32">kbdLinuxVTPreSwitch</a> (pointer p)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8c.html#a33">kbdLinuxVTPostSwitch</a> (pointer p)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8c.html#a34">kbdLinuxVTSwitch</a> (pointer p, int vt, void(*switch_return)(pointer), pointer switch_return_data)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8c.html#a38">kbdLinuxInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8c.html#a42">kbdLinuxRead</a> (DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8c.html#a43">kbdLinuxOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8c.html#a44">kbdLinuxOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8c.html#a47">kbdLinuxGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This code implements a low-level device driver for the Linux keyboard. The code is derived from code by Thomas Roell, Orest Zborowski, and David Dawes (see the source code for complete references).<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a26" doxytag="lnx-keyboard.c::kbdLinuxBell" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxBell </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>percent</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>volume</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pitch</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>duration</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Ring the bell.<p>
-Note: we completely ignore the <em>volume</em>, since Linux's ioctl() interface does not provide a way to control it. If it did, the XBell manpage tells how the actual volume is a function of the percent and the (base) volume.<p>
-Note that most of the other PC-based bell drivers compute the duration for KDMKTONE as a function of the volume and the duration. For some drivers, the duration is only measured in mS if the volume is 50, and is scaled by the volume for other values. This seems confusing and possibly incorrect (the xset man page says that the bell will be "as closely as it can to the user's specifications" -- if we ignore the volume and set the duration correctly, then we'll get one parameter "wrong" -- but if we use the volume to scale the duration, then we'll get both parameters "wrong"). </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="lnx-keyboard.c::kbdLinuxCreatePrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer kbdLinuxCreatePrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pKeyboard</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a private structure for use within this file. </td>
- </tr>
-</table>
-<a class="anchor" name="a27" doxytag="lnx-keyboard.c::kbdLinuxCtrl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxCtrl </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeybdCtrl *&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set the LEDs. </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="lnx-keyboard.c::kbdLinuxDestroyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxDestroyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>priv</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a private structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a47" doxytag="lnx-keyboard.c::kbdLinuxGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a38" doxytag="lnx-keyboard.c::kbdLinuxInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the <em>pDev</em> as a Linux keyboard. </td>
- </tr>
-</table>
-<a class="anchor" name="a44" doxytag="lnx-keyboard.c::kbdLinuxOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off (i.e., stop taking input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a43" doxytag="lnx-keyboard.c::kbdLinuxOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int kbdLinuxOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a42" doxytag="lnx-keyboard.c::kbdLinuxRead" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxRead </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>MOTIONPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>motion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ENQUEUEPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>enqueue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CHECKPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>checkspecial</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>BLOCK&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Read an event from the <em>pDev</em> device. If the event is a motion event, enqueue it with the <em>motion</em> function. Otherwise, check for special keys with the <em>checkspecial</em> function and enqueue the event with the <em>enqueue</em> function. The <em>block</em> type is passed to the functions so that they may block SIGIO handling as appropriate to the caller of this function. </td>
- </tr>
-</table>
-<a class="anchor" name="a33" doxytag="lnx-keyboard.c::kbdLinuxVTPostSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxVTPostSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Currently unused hook called after returning from a VT switch. </td>
- </tr>
-</table>
-<a class="anchor" name="a32" doxytag="lnx-keyboard.c::kbdLinuxVTPreSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxVTPreSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Currently unused hook called prior to an VT switch. </td>
- </tr>
-</table>
-<a class="anchor" name="a34" doxytag="lnx-keyboard.c::kbdLinuxVTSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int kbdLinuxVTSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>p</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>vt</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>void(*&nbsp;</td>
- <td class="mdname" nowrap> <em>switch_return</em>)(pointer), </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>pointer&nbsp;</td>
- <td class="mdname" nowrap> <em>switch_return_data</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Tell the operating system to switch to <em>vt</em>. The <em>switch_return</em> function is called with the <em>switch_return_data</em> when the VT is switched back to the pre-switch VT (i.e., the user returns to the DMX session). </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8h-source.html
deleted file mode 100644
index 20330c73a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8h-source.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>lnx-keyboard.h</h1><a href="lnx-keyboard_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _LNX_KEYBOARD_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _LNX_KEYBOARD_H_</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="keyword">extern</span> pointer <a class="code" href="lnx-keyboard_8c.html#a24">kbdLinuxCreatePrivate</a>(DeviceIntPtr pKeyboard);
-00042 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-keyboard_8c.html#a25">kbdLinuxDestroyPrivate</a>(pointer <span class="keyword">private</span>);
-00043
-00044 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-keyboard_8c.html#a38">kbdLinuxInit</a>(DevicePtr pDev);
-00045 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-keyboard_8c.html#a47">kbdLinuxGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00046 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="lnx-keyboard_8c.html#a43">kbdLinuxOn</a>(DevicePtr pDev);
-00047 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-keyboard_8c.html#a44">kbdLinuxOff</a>(DevicePtr pDev);
-00048
-00049 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-keyboard_8c.html#a32">kbdLinuxVTPreSwitch</a>(pointer p);
-00050 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-keyboard_8c.html#a33">kbdLinuxVTPostSwitch</a>(pointer p);
-00051 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="lnx-keyboard_8c.html#a34">kbdLinuxVTSwitch</a>(pointer p, <span class="keywordtype">int</span> vt,
-00052 dmxVTSwitchReturnProcPtr switch_return,
-00053 pointer switch_return_data);
-00054
-00055 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-keyboard_8c.html#a42">kbdLinuxRead</a>(DevicePtr pDev,
-00056 dmxMotionProcPtr motion,
-00057 dmxEnqueueProcPtr enqueue,
-00058 dmxCheckSpecialProcPtr checkspecial,
-00059 DMXBlockType block);
-00060
-00061 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-keyboard_8c.html#a27">kbdLinuxCtrl</a>(DevicePtr pDev, KeybdCtrl *ctrl);
-00062 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-keyboard_8c.html#a26">kbdLinuxBell</a>(DevicePtr pDev, <span class="keywordtype">int</span> percent,
-00063 <span class="keywordtype">int</span> volume, <span class="keywordtype">int</span> pitch, <span class="keywordtype">int</span> duration);
-00064 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8h.html
deleted file mode 100644
index 4811cad59..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-keyboard_8h.html
+++ /dev/null
@@ -1,388 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>lnx-keyboard.h File Reference</h1>
-<p>
-<a href="lnx-keyboard_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8h.html#a0">kbdLinuxCreatePrivate</a> (DeviceIntPtr pKeyboard)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8h.html#a1">kbdLinuxDestroyPrivate</a> (pointer private)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8h.html#a2">kbdLinuxInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8h.html#a3">kbdLinuxGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8h.html#a4">kbdLinuxOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8h.html#a5">kbdLinuxOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8h.html#a6">kbdLinuxVTPreSwitch</a> (pointer p)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8h.html#a7">kbdLinuxVTPostSwitch</a> (pointer p)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8h.html#a10">kbdLinuxCtrl</a> (DevicePtr pDev, KeybdCtrl *ctrl)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-keyboard_8h.html#a11">kbdLinuxBell</a> (DevicePtr pDev, int percent, int volume, int pitch, int duration)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to Linux keyboard driver. <dl compact><dt><b>See also:</b></dt><dd>lnx-keyboard.c</dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a11" doxytag="lnx-keyboard.h::kbdLinuxBell" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxBell </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>percent</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>volume</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>pitch</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>duration</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Ring the bell.<p>
-Note: we completely ignore the <em>volume</em>, since Linux's ioctl() interface does not provide a way to control it. If it did, the XBell manpage tells how the actual volume is a function of the percent and the (base) volume.<p>
-Note that most of the other PC-based bell drivers compute the duration for KDMKTONE as a function of the volume and the duration. For some drivers, the duration is only measured in mS if the volume is 50, and is scaled by the volume for other values. This seems confusing and possibly incorrect (the xset man page says that the bell will be "as closely as it can to the user's specifications" -- if we ignore the volume and set the duration correctly, then we'll get one parameter "wrong" -- but if we use the volume to scale the duration, then we'll get both parameters "wrong"). </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="lnx-keyboard.h::kbdLinuxCreatePrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer kbdLinuxCreatePrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pKeyboard</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a private structure for use within this file. </td>
- </tr>
-</table>
-<a class="anchor" name="a10" doxytag="lnx-keyboard.h::kbdLinuxCtrl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxCtrl </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeybdCtrl *&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set the LEDs. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="lnx-keyboard.h::kbdLinuxDestroyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxDestroyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>priv</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a private structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="lnx-keyboard.h::kbdLinuxGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="lnx-keyboard.h::kbdLinuxInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the <em>pDev</em> as a Linux keyboard. </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="lnx-keyboard.h::kbdLinuxOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off (i.e., stop taking input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="lnx-keyboard.h::kbdLinuxOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int kbdLinuxOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="lnx-keyboard.h::kbdLinuxVTPostSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxVTPostSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Currently unused hook called after returning from a VT switch. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="lnx-keyboard.h::kbdLinuxVTPreSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdLinuxVTPreSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Currently unused hook called prior to an VT switch. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8c.html
deleted file mode 100644
index e77e562a4..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8c.html
+++ /dev/null
@@ -1,352 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>lnx-ms.c File Reference</h1><code>#include "inputstr.h"</code><br>
-<code>#include "Xos.h"</code><br>
-<code>#include &lt;errno.h&gt;</code><br>
-<code>#include &lt;termios.h&gt;</code><br>
-<code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="lnx-ms_8h-source.html">lnx-ms.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html">_myPrivate</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8c.html#a17">msLinuxRead</a> (DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8c.html#a18">msLinuxInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8c.html#a19">msLinuxOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8c.html#a20">msLinuxOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8c.html#a22">msLinuxVTPreSwitch</a> (pointer p)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8c.html#a23">msLinuxVTPostSwitch</a> (pointer p)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8c.html#a24">msLinuxCreatePrivate</a> (DeviceIntPtr pMouse)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8c.html#a25">msLinuxDestroyPrivate</a> (pointer priv)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8c.html#a26">msLinuxGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This code implements a low-level device driver for a serial MS mouse. The code is derived from code by Juliusz Chroboczek and Keith Packard (see the source code for complete references).<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a24" doxytag="lnx-ms.c::msLinuxCreatePrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer msLinuxCreatePrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pMouse</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a private structure for use within this file. </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="lnx-ms.c::msLinuxDestroyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxDestroyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>priv</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a private structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="lnx-ms.c::msLinuxGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="lnx-ms.c::msLinuxInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="lnx-ms.c::msLinuxOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off (i.e., stop taking input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="lnx-ms.c::msLinuxOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int msLinuxOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="lnx-ms.c::msLinuxRead" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxRead </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>MOTIONPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>motion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ENQUEUEPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>enqueue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CHECKPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>checkspecial</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>BLOCK&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Read an event from the <em>pDev</em> device. If the event is a motion event, enqueue it with the <em>motion</em> function. Otherwise, check for special keys with the <em>checkspecial</em> function and enqueue the event with the <em>enqueue</em> function. The <em>block</em> type is passed to the functions so that they may block SIGIO handling as appropriate to the caller of this function. </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="lnx-ms.c::msLinuxVTPostSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxVTPostSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Currently unused hook called after returning from a VT switch. </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="lnx-ms.c::msLinuxVTPreSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxVTPreSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Currently unused hook called prior to an VT switch. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8h-source.html
deleted file mode 100644
index c900c32b2..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8h-source.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>lnx-ms.h</h1><a href="lnx-ms_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _LNX_MS_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _LNX_MS_H_</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="keyword">extern</span> pointer <a class="code" href="lnx-ms_8c.html#a24">msLinuxCreatePrivate</a>(DeviceIntPtr pMouse);
-00042 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ms_8c.html#a25">msLinuxDestroyPrivate</a>(pointer priv);
-00043 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ms_8c.html#a17">msLinuxRead</a>(DevicePtr pDev,
-00044 dmxMotionProcPtr motion,
-00045 dmxEnqueueProcPtr enqueue,
-00046 dmxCheckSpecialProcPtr checkspecial,
-00047 DMXBlockType block);
-00048 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ms_8c.html#a18">msLinuxInit</a>(DevicePtr pDev);
-00049 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ms_8c.html#a26">msLinuxGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00050 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="lnx-ms_8c.html#a19">msLinuxOn</a>(DevicePtr pDev);
-00051 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ms_8c.html#a20">msLinuxOff</a>(DevicePtr pDev);
-00052 <span class="keyword">extern</span> <span class="keywordtype">void</span> msLinuxCtrl(DevicePtr pDev, PtrCtrl *ctrl);
-00053 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ms_8c.html#a22">msLinuxVTPreSwitch</a>(pointer p);
-00054 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ms_8c.html#a23">msLinuxVTPostSwitch</a>(pointer p);
-00055
-00056 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8h.html
deleted file mode 100644
index 3bd06c193..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ms_8h.html
+++ /dev/null
@@ -1,288 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>lnx-ms.h File Reference</h1>
-<p>
-<a href="lnx-ms_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8h.html#a0">msLinuxCreatePrivate</a> (DeviceIntPtr pMouse)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8h.html#a1">msLinuxDestroyPrivate</a> (pointer priv)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8h.html#a3">msLinuxInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8h.html#a4">msLinuxGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8h.html#a5">msLinuxOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8h.html#a6">msLinuxOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8h.html#a8">msLinuxVTPreSwitch</a> (pointer p)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ms_8h.html#a9">msLinuxVTPostSwitch</a> (pointer p)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to Linux MS mouse driver. <dl compact><dt><b>See also:</b></dt><dd>lnx-ms.c</dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="lnx-ms.h::msLinuxCreatePrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer msLinuxCreatePrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pMouse</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a private structure for use within this file. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="lnx-ms.h::msLinuxDestroyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxDestroyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>priv</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a private structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="lnx-ms.h::msLinuxGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="lnx-ms.h::msLinuxInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="lnx-ms.h::msLinuxOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off (i.e., stop taking input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="lnx-ms.h::msLinuxOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int msLinuxOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="lnx-ms.h::msLinuxVTPostSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxVTPostSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Currently unused hook called after returning from a VT switch. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="lnx-ms.h::msLinuxVTPreSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void msLinuxVTPreSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Currently unused hook called prior to an VT switch. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8c.html
deleted file mode 100644
index f0e44c742..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8c.html
+++ /dev/null
@@ -1,352 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>lnx-ps2.c File Reference</h1><code>#include "inputstr.h"</code><br>
-<code>#include "Xos.h"</code><br>
-<code>#include &lt;errno.h&gt;</code><br>
-<code>#include &lt;termios.h&gt;</code><br>
-<code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="lnx-ps2_8h-source.html">lnx-ps2.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html">_myPrivate</a></td></tr>
-
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8c.html#a17">ps2LinuxRead</a> (DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8c.html#a18">ps2LinuxInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8c.html#a19">ps2LinuxOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8c.html#a20">ps2LinuxOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8c.html#a22">ps2LinuxVTPreSwitch</a> (pointer p)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8c.html#a23">ps2LinuxVTPostSwitch</a> (pointer p)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8c.html#a24">ps2LinuxCreatePrivate</a> (DeviceIntPtr pMouse)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8c.html#a25">ps2LinuxDestroyPrivate</a> (pointer priv)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8c.html#a26">ps2LinuxGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This code implements a low-level device driver for a serial MS mouse. The code is derived from code by Keith Packard (see the source code for complete references).<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a24" doxytag="lnx-ps2.c::ps2LinuxCreatePrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer ps2LinuxCreatePrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pMouse</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a private structure for use within this file. </td>
- </tr>
-</table>
-<a class="anchor" name="a25" doxytag="lnx-ps2.c::ps2LinuxDestroyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxDestroyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>priv</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a private structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="lnx-ps2.c::ps2LinuxGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a18" doxytag="lnx-ps2.c::ps2LinuxInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a20" doxytag="lnx-ps2.c::ps2LinuxOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off (i.e., stop taking input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a19" doxytag="lnx-ps2.c::ps2LinuxOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int ps2LinuxOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a17" doxytag="lnx-ps2.c::ps2LinuxRead" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxRead </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>MOTIONPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>motion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ENQUEUEPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>enqueue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CHECKPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>checkspecial</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>BLOCK&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Read an event from the <em>pDev</em> device. If the event is a motion event, enqueue it with the <em>motion</em> function. Otherwise, check for special keys with the <em>checkspecial</em> function and enqueue the event with the <em>enqueue</em> function. The <em>block</em> type is passed to the functions so that they may block SIGIO handling as appropriate to the caller of this function. </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="lnx-ps2.c::ps2LinuxVTPostSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxVTPostSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Currently unused hook called after returning from a VT switch. </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="lnx-ps2.c::ps2LinuxVTPreSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxVTPreSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Currently unused hook called prior to an VT switch. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8h-source.html
deleted file mode 100644
index f4f76a04e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8h-source.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>lnx-ps2.h</h1><a href="lnx-ps2_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2001 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _LNX_PS2_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _LNX_PS2_H_</span>
-00040 <span class="preprocessor"></span>
-00041 <span class="keyword">extern</span> pointer <a class="code" href="lnx-ps2_8c.html#a24">ps2LinuxCreatePrivate</a>(DeviceIntPtr pMouse);
-00042 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ps2_8c.html#a25">ps2LinuxDestroyPrivate</a>(pointer priv);
-00043 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ps2_8c.html#a17">ps2LinuxRead</a>(DevicePtr pDev,
-00044 dmxMotionProcPtr motion,
-00045 dmxEnqueueProcPtr enqueue,
-00046 dmxCheckSpecialProcPtr checkspecial,
-00047 DMXBlockType block);
-00048 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ps2_8c.html#a18">ps2LinuxInit</a>(DevicePtr pDev);
-00049 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ps2_8c.html#a26">ps2LinuxGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00050 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="lnx-ps2_8c.html#a19">ps2LinuxOn</a>(DevicePtr pDev);
-00051 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ps2_8c.html#a20">ps2LinuxOff</a>(DevicePtr pDev);
-00052 <span class="keyword">extern</span> <span class="keywordtype">void</span> ps2LinuxCtrl(DevicePtr pDev, PtrCtrl *ctrl);
-00053 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ps2_8c.html#a22">ps2LinuxVTPreSwitch</a>(pointer p);
-00054 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="lnx-ps2_8c.html#a23">ps2LinuxVTPostSwitch</a>(pointer p);
-00055
-00056 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8h.html
deleted file mode 100644
index 2723f9c60..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/lnx-ps2_8h.html
+++ /dev/null
@@ -1,288 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>lnx-ps2.h File Reference</h1>
-<p>
-<a href="lnx-ps2_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8h.html#a0">ps2LinuxCreatePrivate</a> (DeviceIntPtr pMouse)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8h.html#a1">ps2LinuxDestroyPrivate</a> (pointer priv)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8h.html#a3">ps2LinuxInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8h.html#a4">ps2LinuxGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8h.html#a5">ps2LinuxOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8h.html#a6">ps2LinuxOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8h.html#a8">ps2LinuxVTPreSwitch</a> (pointer p)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="lnx-ps2_8h.html#a9">ps2LinuxVTPostSwitch</a> (pointer p)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to Linux PS/2 mouse driver. <dl compact><dt><b>See also:</b></dt><dd>lnx-ps2.c</dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a0" doxytag="lnx-ps2.h::ps2LinuxCreatePrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer ps2LinuxCreatePrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pMouse</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a private structure for use within this file. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="lnx-ps2.h::ps2LinuxDestroyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxDestroyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>priv</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a private structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="lnx-ps2.h::ps2LinuxGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="lnx-ps2.h::ps2LinuxInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="lnx-ps2.h::ps2LinuxOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off (i.e., stop taking input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a5" doxytag="lnx-ps2.h::ps2LinuxOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int ps2LinuxOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a9" doxytag="lnx-ps2.h::ps2LinuxVTPostSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxVTPostSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Currently unused hook called after returning from a VT switch. </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="lnx-ps2.h::ps2LinuxVTPreSwitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void ps2LinuxVTPreSwitch </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Currently unused hook called prior to an VT switch. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/main.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/main.html
deleted file mode 100644
index 86ee52bea..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/main.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindexHL" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>Distributed Multihead X Documentation</h1>
-<p>
-<h3 align="center">dmx-1-2-20040604 and later </h3><ul>
-<li><a href="http://dmx.sourceforge.net">DMX Home Page</a></li><li><a href="http://sourceforge.net/projects/dmx">DMX Project Page (on Source Forge)</a></li><li><a href="http://dmx.sourceforge.net/dmx.html">Distributed Multihead X design</a>, the design document for DMX</li><li><a href="http://dmx.sourceforge.net/DMXSpec.txt">Client-to-Server DMX Extension to the X Protocol</a> </li></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/programs_2Xserver_2Xext_2dmx_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/programs_2Xserver_2Xext_2dmx_8c.html
deleted file mode 100644
index d9fefed76..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/programs_2Xserver_2Xext_2dmx_8c.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmx.c File Reference</h1><code>#include "X.h"</code><br>
-<code>#include "Xproto.h"</code><br>
-<code>#include "misc.h"</code><br>
-<code>#include "os.h"</code><br>
-<code>#include "dixstruct.h"</code><br>
-<code>#include "extnsionst.h"</code><br>
-<code>#include "opaque.h"</code><br>
-<code>#include "<a class="el" href="dmxextension_8h-source.html">dmxextension.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxext_8h-source.html">dmxext.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="programs_2Xserver_2Xext_2dmx_8c.html#a3">DMXExtensionInit</a> (void)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file implements the server-side part of the DMX protocol. A vector of fucntions is provided at extension initialization time, so most all of the useful functions in this file are declared static and do not appear in the doxygen documentation.<p>
-Much of the low-level work is done by functions in #dmxextension.c<p>
-Please see the Client-to-Server DMX Extension to the X Protocol document for details about the protocol.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="programs/Xserver/Xext/dmx.c::DMXExtensionInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void DMXExtensionInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the extension. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXConfigCmdStruct.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXConfigCmdStruct.html
deleted file mode 100644
index 5e1929147..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXConfigCmdStruct.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>DMXConfigCmdStruct Struct Reference</h1><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This stucture stores the parsed configuration information.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxconfig_8c.html">dmxconfig.c</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXConfigListStruct.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXConfigListStruct.html
deleted file mode 100644
index ca55fcce3..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXConfigListStruct.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>DMXConfigListStruct Struct Reference</h1><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores lists of configuration information.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxconfig_8c.html">dmxconfig.c</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXDesktopAttributes.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXDesktopAttributes.html
deleted file mode 100644
index ed10c039b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXDesktopAttributes.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>DMXDesktopAttributes Struct Reference</h1><code>#include &lt;<a class="el" href="dmxext_8h-source.html">dmxext.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Client-library desktop information structure, returned by <a class="el" href="lib_2dmx_2dmx_8c.html#a24">DMXGetDesktopAttributes</a>.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxext_8h-source.html">dmxext.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXDesktopAttributesRec.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXDesktopAttributesRec.html
deleted file mode 100644
index ea37ca26d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXDesktopAttributesRec.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>DMXDesktopAttributesRec Struct Reference</h1><code>#include &lt;<a class="el" href="dmxextension_8h-source.html">dmxextension.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Desktop attributes. Used by #ProcDMXGetDesktopAttributes and #ProcDMXChangeDesktopAttributes.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxextension_8h-source.html">dmxextension.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXInputAttributes.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXInputAttributes.html
deleted file mode 100644
index 6573b9efc..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXInputAttributes.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>DMXInputAttributes Struct Reference</h1><code>#include &lt;<a class="el" href="dmxext_8h-source.html">dmxext.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Client-library input information structure, returned by <a class="el" href="lib_2dmx_2dmx_8c.html#a29">DMXGetInputAttributes</a>.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxext_8h-source.html">dmxext.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXInputAttributesRec.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXInputAttributesRec.html
deleted file mode 100644
index 9e5ee05cf..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXInputAttributesRec.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>DMXInputAttributesRec Struct Reference</h1><code>#include &lt;<a class="el" href="dmxextension_8h-source.html">dmxextension.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Input attributes. Used by #ProcDMXGetInputAttributes.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxextension_8h-source.html">dmxextension.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXScreenAttributes.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXScreenAttributes.html
deleted file mode 100644
index 708d4c3cf..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXScreenAttributes.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>DMXScreenAttributes Struct Reference</h1><code>#include &lt;<a class="el" href="dmxext_8h-source.html">dmxext.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Client-library screen information structure, returned by <a class="el" href="lib_2dmx_2dmx_8c.html#a15">DMXGetScreenAttributes</a>.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxext_8h-source.html">dmxext.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXScreenAttributesRec.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXScreenAttributesRec.html
deleted file mode 100644
index 595b4aee6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXScreenAttributesRec.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>DMXScreenAttributesRec Struct Reference</h1><code>#include &lt;<a class="el" href="dmxextension_8h-source.html">dmxextension.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Screen attributes. Used by #ProcDMXGetScreenAttributes and #ProcDMXChangeScreenAttributes.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxextension_8h-source.html">dmxextension.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXWindowAttributes.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXWindowAttributes.html
deleted file mode 100644
index 18c427819..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXWindowAttributes.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>DMXWindowAttributes Struct Reference</h1><code>#include &lt;<a class="el" href="dmxext_8h-source.html">dmxext.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Client-library window information structure, returned by <a class="el" href="lib_2dmx_2dmx_8c.html#a23">DMXGetWindowAttributes</a>.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxext_8h-source.html">dmxext.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXWindowAttributesRec.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXWindowAttributesRec.html
deleted file mode 100644
index a18b883e6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structDMXWindowAttributesRec.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>DMXWindowAttributesRec Struct Reference</h1><code>#include &lt;<a class="el" href="dmxextension_8h-source.html">dmxextension.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Window attributes. Used by #ProcDMXGetWidowAttributes.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxextension_8h-source.html">dmxextension.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigComment.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigComment.html
deleted file mode 100644
index be011e397..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigComment.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigComment Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores parsed comments not stored with a token.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigDisplay.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigDisplay.html
deleted file mode 100644
index 53310fb7a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigDisplay.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigDisplay Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores parsed display information.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigEntry.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigEntry.html
deleted file mode 100644
index 644098698..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigEntry.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigEntry Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Heads entry storage.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigFullDim.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigFullDim.html
deleted file mode 100644
index 2e564ce87..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigFullDim.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigFullDim Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores a pair of geometry specifications.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigNumber.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigNumber.html
deleted file mode 100644
index f60e11c63..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigNumber.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigNumber Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores parsed numbers.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigOption.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigOption.html
deleted file mode 100644
index 1ae073674..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigOption.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigOption Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores parsed option information.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigPair.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigPair.html
deleted file mode 100644
index bd0454be6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigPair.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigPair Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores parsed pairs (e.g., x y)
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigParam.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigParam.html
deleted file mode 100644
index 90f017e20..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigParam.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigParam Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores parsed param information.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigPartDim.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigPartDim.html
deleted file mode 100644
index 07f4c7757..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigPartDim.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigPartDim Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores a geometry specification.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigString.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigString.html
deleted file mode 100644
index a70f1a51a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigString.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigString Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores parsed strings.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigSub.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigSub.html
deleted file mode 100644
index a27630540..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigSub.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigSub Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores options under an entry (subentry).
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigToken.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigToken.html
deleted file mode 100644
index a7705deb9..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigToken.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigToken Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores tokens not stored in other structures (e.g., keywords and ;)
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigVirtual.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigVirtual.html
deleted file mode 100644
index d221fa816..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigVirtual.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigVirtual Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores parsed virtual information.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigWall.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigWall.html
deleted file mode 100644
index fcb27db04..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXConfigWall.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXConfigWall Struct Reference</h1><code>#include &lt;<a class="el" href="dmxparse_8h-source.html">dmxparse.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores parsed wall information.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxparse_8h-source.html">dmxparse.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXEventMap.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXEventMap.html
deleted file mode 100644
index 41ae5b368..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXEventMap.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXEventMap Struct Reference</h1><code>#include &lt;<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXEventMap.html#o0">remote</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXEventMap.html#o1">server</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores a mapping between the device id on the remote X server and the id on the DMX server
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="o0" doxytag="_DMXEventMap::remote" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXEventMap.html#o0">_DMXEventMap::remote</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Event number on remote X server </td>
- </tr>
-</table>
-<a class="anchor" name="o1" doxytag="_DMXEventMap::server" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXEventMap.html#o1">_DMXEventMap::server</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Event number (unbiased) on DMX server </td>
- </tr>
-</table>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXInputInfo.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXInputInfo.html
deleted file mode 100644
index a89e01f5b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXInputInfo.html
+++ /dev/null
@@ -1,490 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXInputInfo Struct Reference</h1><code>#include &lt;<a class="el" href="dmxinput_8h-source.html">dmxinput.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>const char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o0">name</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o1">freename</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o2">detached</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o3">inputIdx</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o4">scrnIdx</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o5">core</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o6">console</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o7">windows</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="dmxinput_8h.html#a31">dmxSigioState</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o10">sigioState</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o11">sigioFdCount</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o12">sigioFd</a> [DMX_MAX_SIGIO_FDS]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o13">sigioAdded</a> [DMX_MAX_SIGIO_FDS]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o14">vt_switch_pending</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o15">vt_switched</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o16">numDevs</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o17">devs</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o18">keycodes</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o19">symbols</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXInputInfo.html#o20">geometry</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-DMXInputInfo is typedef'd in #dmx.h so that all routines can have access to the global pointers. However, the elements are only available to input-related routines.
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="o6" doxytag="_DMXInputInfo::console" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="struct__DMXInputInfo.html#o6">_DMXInputInfo::console</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if console and backend input share the same backend display </td>
- </tr>
-</table>
-<a class="anchor" name="o5" doxytag="_DMXInputInfo::core" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="struct__DMXInputInfo.html#o5">_DMXInputInfo::core</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If True, initialize these devices as devices that send core events </td>
- </tr>
-</table>
-<a class="anchor" name="o2" doxytag="_DMXInputInfo::detached" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="struct__DMXInputInfo.html#o2">_DMXInputInfo::detached</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If true, input screen is detached </td>
- </tr>
-</table>
-<a class="anchor" name="o17" doxytag="_DMXInputInfo::devs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXLocalInputInfo.html">DMXLocalInputInfoPtr</a>* <a class="el" href="struct__DMXInputInfo.html#o17">_DMXInputInfo::devs</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-List of actual input devices. Each _DMXInputInfo structure can refer to more than one device. For example, the keyboard and the pointer of a backend display; or all of the XInput extension devices on a backend display. </td>
- </tr>
-</table>
-<a class="anchor" name="o1" doxytag="_DMXInputInfo::freename" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="struct__DMXInputInfo.html#o1">_DMXInputInfo::freename</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If true, free name on destroy </td>
- </tr>
-</table>
-<a class="anchor" name="o20" doxytag="_DMXInputInfo::geometry" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> char* <a class="el" href="struct__DMXInputInfo.html#o20">_DMXInputInfo::geometry</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-XKB geometry from command line </td>
- </tr>
-</table>
-<a class="anchor" name="o3" doxytag="_DMXInputInfo::inputIdx" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXInputInfo.html#o3">_DMXInputInfo::inputIdx</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Index into <a class="el" href="dmxinput_8h.html#a5">dmxInputs</a> global </td>
- </tr>
-</table>
-<a class="anchor" name="o18" doxytag="_DMXInputInfo::keycodes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> char* <a class="el" href="struct__DMXInputInfo.html#o18">_DMXInputInfo::keycodes</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-XKB keycodes from command line </td>
- </tr>
-</table>
-<a class="anchor" name="o0" doxytag="_DMXInputInfo::name" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const char* <a class="el" href="struct__DMXInputInfo.html#o0">_DMXInputInfo::name</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Name of input display or device (from command line or config file) </td>
- </tr>
-</table>
-<a class="anchor" name="o16" doxytag="_DMXInputInfo::numDevs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXInputInfo.html#o16">_DMXInputInfo::numDevs</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of devices handled in this _DMXInputInfo structure. </td>
- </tr>
-</table>
-<a class="anchor" name="o4" doxytag="_DMXInputInfo::scrnIdx" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXInputInfo.html#o4">_DMXInputInfo::scrnIdx</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Index into <a class="el" href="dmxinit_8c.html#a2">dmxScreens</a> global </td>
- </tr>
-</table>
-<a class="anchor" name="o13" doxytag="_DMXInputInfo::sigioAdded" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="struct__DMXInputInfo.html#o13">_DMXInputInfo::sigioAdded</a>[DMX_MAX_SIGIO_FDS]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Active fds </td>
- </tr>
-</table>
-<a class="anchor" name="o12" doxytag="_DMXInputInfo::sigioFd" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXInputInfo.html#o12">_DMXInputInfo::sigioFd</a>[DMX_MAX_SIGIO_FDS]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-List of fds </td>
- </tr>
-</table>
-<a class="anchor" name="o11" doxytag="_DMXInputInfo::sigioFdCount" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXInputInfo.html#o11">_DMXInputInfo::sigioFdCount</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of fds in use </td>
- </tr>
-</table>
-<a class="anchor" name="o10" doxytag="_DMXInputInfo::sigioState" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="dmxinput_8h.html#a31">dmxSigioState</a> <a class="el" href="struct__DMXInputInfo.html#o10">_DMXInputInfo::sigioState</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Current stat </td>
- </tr>
-</table>
-<a class="anchor" name="o19" doxytag="_DMXInputInfo::symbols" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> char* <a class="el" href="struct__DMXInputInfo.html#o19">_DMXInputInfo::symbols</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-XKB symbols from command line </td>
- </tr>
-</table>
-<a class="anchor" name="o14" doxytag="_DMXInputInfo::vt_switch_pending" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXInputInfo.html#o14">_DMXInputInfo::vt_switch_pending</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if a VT switch is pending, but has not yet happened. </td>
- </tr>
-</table>
-<a class="anchor" name="o15" doxytag="_DMXInputInfo::vt_switched" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXInputInfo.html#o15">_DMXInputInfo::vt_switched</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if a VT switch has happened. </td>
- </tr>
-</table>
-<a class="anchor" name="o7" doxytag="_DMXInputInfo::windows" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="struct__DMXInputInfo.html#o7">_DMXInputInfo::windows</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if window outlines are draw in console </td>
- </tr>
-</table>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxinput_8h-source.html">dmxinput.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXLocalInitInfo.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXLocalInitInfo.html
deleted file mode 100644
index 73b3e3ba6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXLocalInitInfo.html
+++ /dev/null
@@ -1,778 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXLocalInitInfo Struct Reference</h1><code>#include &lt;<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o0">keyboard</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o1">keyClass</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>KeySymsRec&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o2">keySyms</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o3">freemap</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>CARD8&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o4">modMap</a> [MAP_LENGTH]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>XkbDescPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o5">xkb</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>XkbComponentNamesRec&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o6">names</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o7">freenames</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o8">force</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o9">buttonClass</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o10">numButtons</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>unsigned char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o11">map</a> [DMX_MAX_BUTTONS]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o12">valuatorClass</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o13">numRelAxes</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o14">numAbsAxes</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o15">minval</a> [DMX_MAX_AXES]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o16">maxval</a> [DMX_MAX_AXES]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o17">res</a> [DMX_MAX_AXES]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o18">minres</a> [DMX_MAX_AXES]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o19">maxres</a> [DMX_MAX_AXES]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o20">focusClass</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o21">proximityClass</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o22">kbdFeedbackClass</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o23">ptrFeedbackClass</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o24">ledFeedbackClass</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o25">belFeedbackClass</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o26">intFeedbackClass</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o27">strFeedbackClass</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o28">maxSymbols</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o29">maxSymbolsSupported</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>KeySym *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInitInfo.html#o30">symbols</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores information from low-level device that is used to initialize the device at the dix level.
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="o25" doxytag="_DMXLocalInitInfo::belFeedbackClass" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o25">_DMXLocalInitInfo::belFeedbackClass</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if device has a bell </td>
- </tr>
-</table>
-<a class="anchor" name="o9" doxytag="_DMXLocalInitInfo::buttonClass" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o9">_DMXLocalInitInfo::buttonClass</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if buttons are present </td>
- </tr>
-</table>
-<a class="anchor" name="o20" doxytag="_DMXLocalInitInfo::focusClass" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o20">_DMXLocalInitInfo::focusClass</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if device can cause focus </td>
- </tr>
-</table>
-<a class="anchor" name="o8" doxytag="_DMXLocalInitInfo::force" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o8">_DMXLocalInitInfo::force</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Do not allow command line override </td>
- </tr>
-</table>
-<a class="anchor" name="o3" doxytag="_DMXLocalInitInfo::freemap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o3">_DMXLocalInitInfo::freemap</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-If non-zero, free keySyms.map </td>
- </tr>
-</table>
-<a class="anchor" name="o7" doxytag="_DMXLocalInitInfo::freenames" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o7">_DMXLocalInitInfo::freenames</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if names should be free'd </td>
- </tr>
-</table>
-<a class="anchor" name="o26" doxytag="_DMXLocalInitInfo::intFeedbackClass" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o26">_DMXLocalInitInfo::intFeedbackClass</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if device has integer feedback </td>
- </tr>
-</table>
-<a class="anchor" name="o22" doxytag="_DMXLocalInitInfo::kbdFeedbackClass" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o22">_DMXLocalInitInfo::kbdFeedbackClass</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if device has keyboard feedback </td>
- </tr>
-</table>
-<a class="anchor" name="o0" doxytag="_DMXLocalInitInfo::keyboard" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o0">_DMXLocalInitInfo::keyboard</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if the device is a keyboard </td>
- </tr>
-</table>
-<a class="anchor" name="o1" doxytag="_DMXLocalInitInfo::keyClass" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o1">_DMXLocalInitInfo::keyClass</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if keys are present </td>
- </tr>
-</table>
-<a class="anchor" name="o2" doxytag="_DMXLocalInitInfo::keySyms" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> KeySymsRec <a class="el" href="struct__DMXLocalInitInfo.html#o2">_DMXLocalInitInfo::keySyms</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Key symbols </td>
- </tr>
-</table>
-<a class="anchor" name="o24" doxytag="_DMXLocalInitInfo::ledFeedbackClass" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o24">_DMXLocalInitInfo::ledFeedbackClass</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if device has LED indicators </td>
- </tr>
-</table>
-<a class="anchor" name="o11" doxytag="_DMXLocalInitInfo::map" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> unsigned char <a class="el" href="struct__DMXLocalInitInfo.html#o11">_DMXLocalInitInfo::map</a>[DMX_MAX_BUTTONS]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Button map </td>
- </tr>
-</table>
-<a class="anchor" name="o19" doxytag="_DMXLocalInitInfo::maxres" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o19">_DMXLocalInitInfo::maxres</a>[DMX_MAX_AXES]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Maximum resolutions </td>
- </tr>
-</table>
-<a class="anchor" name="o28" doxytag="_DMXLocalInitInfo::maxSymbols" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o28">_DMXLocalInitInfo::maxSymbols</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Maximum symbols </td>
- </tr>
-</table>
-<a class="anchor" name="o29" doxytag="_DMXLocalInitInfo::maxSymbolsSupported" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o29">_DMXLocalInitInfo::maxSymbolsSupported</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Maximum symbols supported </td>
- </tr>
-</table>
-<a class="anchor" name="o16" doxytag="_DMXLocalInitInfo::maxval" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o16">_DMXLocalInitInfo::maxval</a>[DMX_MAX_AXES]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Maximum values </td>
- </tr>
-</table>
-<a class="anchor" name="o18" doxytag="_DMXLocalInitInfo::minres" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o18">_DMXLocalInitInfo::minres</a>[DMX_MAX_AXES]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Minimum resolutions </td>
- </tr>
-</table>
-<a class="anchor" name="o15" doxytag="_DMXLocalInitInfo::minval" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o15">_DMXLocalInitInfo::minval</a>[DMX_MAX_AXES]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Minimum values </td>
- </tr>
-</table>
-<a class="anchor" name="o4" doxytag="_DMXLocalInitInfo::modMap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> CARD8 <a class="el" href="struct__DMXLocalInitInfo.html#o4">_DMXLocalInitInfo::modMap</a>[MAP_LENGTH]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Modifier map </td>
- </tr>
-</table>
-<a class="anchor" name="o6" doxytag="_DMXLocalInitInfo::names" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> XkbComponentNamesRec <a class="el" href="struct__DMXLocalInitInfo.html#o6">_DMXLocalInitInfo::names</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-XKB component names </td>
- </tr>
-</table>
-<a class="anchor" name="o14" doxytag="_DMXLocalInitInfo::numAbsAxes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o14">_DMXLocalInitInfo::numAbsAxes</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of absolute axes </td>
- </tr>
-</table>
-<a class="anchor" name="o10" doxytag="_DMXLocalInitInfo::numButtons" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o10">_DMXLocalInitInfo::numButtons</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of buttons </td>
- </tr>
-</table>
-<a class="anchor" name="o13" doxytag="_DMXLocalInitInfo::numRelAxes" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o13">_DMXLocalInitInfo::numRelAxes</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of relative axes </td>
- </tr>
-</table>
-<a class="anchor" name="o21" doxytag="_DMXLocalInitInfo::proximityClass" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o21">_DMXLocalInitInfo::proximityClass</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if device causes proximity events </td>
- </tr>
-</table>
-<a class="anchor" name="o23" doxytag="_DMXLocalInitInfo::ptrFeedbackClass" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o23">_DMXLocalInitInfo::ptrFeedbackClass</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if device has pointer feedback </td>
- </tr>
-</table>
-<a class="anchor" name="o17" doxytag="_DMXLocalInitInfo::res" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o17">_DMXLocalInitInfo::res</a>[DMX_MAX_AXES]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Resolution </td>
- </tr>
-</table>
-<a class="anchor" name="o27" doxytag="_DMXLocalInitInfo::strFeedbackClass" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o27">_DMXLocalInitInfo::strFeedbackClass</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if device has string feedback </td>
- </tr>
-</table>
-<a class="anchor" name="o30" doxytag="_DMXLocalInitInfo::symbols" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> KeySym* <a class="el" href="struct__DMXLocalInitInfo.html#o30">_DMXLocalInitInfo::symbols</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Key symbols </td>
- </tr>
-</table>
-<a class="anchor" name="o12" doxytag="_DMXLocalInitInfo::valuatorClass" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInitInfo.html#o12">_DMXLocalInitInfo::valuatorClass</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if valuators are present </td>
- </tr>
-</table>
-<a class="anchor" name="o5" doxytag="_DMXLocalInitInfo::xkb" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> XkbDescPtr <a class="el" href="struct__DMXLocalInitInfo.html#o5">_DMXLocalInitInfo::xkb</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-XKB description </td>
- </tr>
-</table>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXLocalInputInfo.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXLocalInputInfo.html
deleted file mode 100644
index 7893e905f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXLocalInputInfo.html
+++ /dev/null
@@ -1,996 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXLocalInputInfo Struct Reference</h1><code>#include &lt;<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>const char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o0">name</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>DMXLocalInputType&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o1">type</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>DMXLocalInputExtType&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o2">extType</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o3">binding</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxCreatePrivateProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o4">create_private</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxDestroyPrivateProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o5">destroy_private</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxInitProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o6">init</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxReInitProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o7">reinit</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxLateReInitProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o8">latereinit</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxGetInfoProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o9">get_info</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxOnProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o10">on</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxOffProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o11">off</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxUpdatePositionProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o12">update_position</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxVTPreSwitchProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o13">vt_pre_switch</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxVTPostSwitchProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o14">vt_post_switch</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxVTSwitchProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o15">vt_switch</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxCollectEventsProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o16">collect_events</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxProcessInputProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o17">process_input</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxUpdateInfoProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o19">update_info</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxMCtrlProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o20">mCtrl</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxKBCtrlProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o21">kCtrl</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>dmxKBBellProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o22">kBell</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o23">private</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o24">isCore</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o25">sendsCore</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>KeybdCtrl&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o26">kctrl</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>PtrCtrl&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o27">mctrl</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>DeviceIntPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o28">pDevice</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o29">inputIdx</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o31">lastY</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o32">head</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o33">tail</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>unsigned long *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o34">history</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o35">valuators</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o37">savedMotionEvents</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o38">savedSendsCore</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXEventMap.html">DMXEventMap</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o39">map</a> [DMX_MAP_ENTRIES]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o40">mapOptimize</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o41">deviceId</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>const char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXLocalInputInfo.html#o42">deviceName</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This is the device-independent structure used by the low-level input routines. The contents are not exposed to top-level .c files (except dmxextensions.c). <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxinput_8h.html">dmxinput.h</a> <p>
-dmxextensions.c </dd></dl>
-
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="o3" doxytag="_DMXLocalInputInfo::binding" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInputInfo.html#o3">_DMXLocalInputInfo::binding</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Count of how many consecutive structs are bound to the same device </td>
- </tr>
-</table>
-<a class="anchor" name="o16" doxytag="_DMXLocalInputInfo::collect_events" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxCollectEventsProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o16">_DMXLocalInputInfo::collect_events</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Collect and enqueue events from the device </td>
- </tr>
-</table>
-<a class="anchor" name="o4" doxytag="_DMXLocalInputInfo::create_private" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxCreatePrivateProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o4">_DMXLocalInputInfo::create_private</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create device-dependent private </td>
- </tr>
-</table>
-<a class="anchor" name="o5" doxytag="_DMXLocalInputInfo::destroy_private" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxDestroyPrivateProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o5">_DMXLocalInputInfo::destroy_private</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy device-dependent private </td>
- </tr>
-</table>
-<a class="anchor" name="o41" doxytag="_DMXLocalInputInfo::deviceId" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> long <a class="el" href="struct__DMXLocalInputInfo.html#o41">_DMXLocalInputInfo::deviceId</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-device id on remote side, if any </td>
- </tr>
-</table>
-<a class="anchor" name="o42" doxytag="_DMXLocalInputInfo::deviceName" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const char* <a class="el" href="struct__DMXLocalInputInfo.html#o42">_DMXLocalInputInfo::deviceName</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-devive name on remote side, if any </td>
- </tr>
-</table>
-<a class="anchor" name="o2" doxytag="_DMXLocalInputInfo::extType" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> DMXLocalInputExtType <a class="el" href="struct__DMXLocalInputInfo.html#o2">_DMXLocalInputInfo::extType</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Extended device type </td>
- </tr>
-</table>
-<a class="anchor" name="o9" doxytag="_DMXLocalInputInfo::get_info" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxGetInfoProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o9">_DMXLocalInputInfo::get_info</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get device information </td>
- </tr>
-</table>
-<a class="anchor" name="o32" doxytag="_DMXLocalInputInfo::head" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInputInfo.html#o32">_DMXLocalInputInfo::head</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-XInput motion history head </td>
- </tr>
-</table>
-<a class="anchor" name="o34" doxytag="_DMXLocalInputInfo::history" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> unsigned long* <a class="el" href="struct__DMXLocalInputInfo.html#o34">_DMXLocalInputInfo::history</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-XInput motion history </td>
- </tr>
-</table>
-<a class="anchor" name="o6" doxytag="_DMXLocalInputInfo::init" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxInitProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o6">_DMXLocalInputInfo::init</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize device </td>
- </tr>
-</table>
-<a class="anchor" name="o29" doxytag="_DMXLocalInputInfo::inputIdx" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInputInfo.html#o29">_DMXLocalInputInfo::inputIdx</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-High-level index </td>
- </tr>
-</table>
-<a class="anchor" name="o24" doxytag="_DMXLocalInputInfo::isCore" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInputInfo.html#o24">_DMXLocalInputInfo::isCore</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Is a DMX core device </td>
- </tr>
-</table>
-<a class="anchor" name="o22" doxytag="_DMXLocalInputInfo::kBell" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxKBBellProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o22">_DMXLocalInputInfo::kBell</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Bell control </td>
- </tr>
-</table>
-<a class="anchor" name="o26" doxytag="_DMXLocalInputInfo::kctrl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> KeybdCtrl <a class="el" href="struct__DMXLocalInputInfo.html#o26">_DMXLocalInputInfo::kctrl</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Keyboard control </td>
- </tr>
-</table>
-<a class="anchor" name="o21" doxytag="_DMXLocalInputInfo::kCtrl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxKBCtrlProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o21">_DMXLocalInputInfo::kCtrl</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Keyboard control </td>
- </tr>
-</table>
-<a class="anchor" name="o31" doxytag="_DMXLocalInputInfo::lastY" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInputInfo.html#o31">_DMXLocalInputInfo::lastY</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Last known position; for XInput in <a class="el" href="dmxevents_8c.html">dmxevents.c</a> </td>
- </tr>
-</table>
-<a class="anchor" name="o8" doxytag="_DMXLocalInputInfo::latereinit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxLateReInitProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o8">_DMXLocalInputInfo::latereinit</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Reinitialize a device (called very late during a reconfiguration) </td>
- </tr>
-</table>
-<a class="anchor" name="o39" doxytag="_DMXLocalInputInfo::map" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXEventMap.html">DMXEventMap</a> <a class="el" href="struct__DMXLocalInputInfo.html#o39">_DMXLocalInputInfo::map</a>[DMX_MAP_ENTRIES]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-XInput device id map </td>
- </tr>
-</table>
-<a class="anchor" name="o40" doxytag="_DMXLocalInputInfo::mapOptimize" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInputInfo.html#o40">_DMXLocalInputInfo::mapOptimize</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-XInput device id map optimization </td>
- </tr>
-</table>
-<a class="anchor" name="o27" doxytag="_DMXLocalInputInfo::mctrl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> PtrCtrl <a class="el" href="struct__DMXLocalInputInfo.html#o27">_DMXLocalInputInfo::mctrl</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Pointer control </td>
- </tr>
-</table>
-<a class="anchor" name="o20" doxytag="_DMXLocalInputInfo::mCtrl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxMCtrlProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o20">_DMXLocalInputInfo::mCtrl</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Pointer control </td>
- </tr>
-</table>
-<a class="anchor" name="o0" doxytag="_DMXLocalInputInfo::name" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const char* <a class="el" href="struct__DMXLocalInputInfo.html#o0">_DMXLocalInputInfo::name</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Device name </td>
- </tr>
-</table>
-<a class="anchor" name="o11" doxytag="_DMXLocalInputInfo::off" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxOffProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o11">_DMXLocalInputInfo::off</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn device off </td>
- </tr>
-</table>
-<a class="anchor" name="o10" doxytag="_DMXLocalInputInfo::on" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxOnProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o10">_DMXLocalInputInfo::on</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn device on </td>
- </tr>
-</table>
-<a class="anchor" name="o28" doxytag="_DMXLocalInputInfo::pDevice" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> DeviceIntPtr <a class="el" href="struct__DMXLocalInputInfo.html#o28">_DMXLocalInputInfo::pDevice</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-X-level device </td>
- </tr>
-</table>
-<a class="anchor" name="o23" doxytag="_DMXLocalInputInfo::private" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer <a class="el" href="struct__DMXLocalInputInfo.html#o23">_DMXLocalInputInfo::private</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Device-dependent private </td>
- </tr>
-</table>
-<a class="anchor" name="o17" doxytag="_DMXLocalInputInfo::process_input" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxProcessInputProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o17">_DMXLocalInputInfo::process_input</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Process event (from queue) </td>
- </tr>
-</table>
-<a class="anchor" name="o7" doxytag="_DMXLocalInputInfo::reinit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxReInitProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o7">_DMXLocalInputInfo::reinit</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Reinitialize device (during a reconfiguration) </td>
- </tr>
-</table>
-<a class="anchor" name="o37" doxytag="_DMXLocalInputInfo::savedMotionEvents" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInputInfo.html#o37">_DMXLocalInputInfo::savedMotionEvents</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Saved motion events </td>
- </tr>
-</table>
-<a class="anchor" name="o38" doxytag="_DMXLocalInputInfo::savedSendsCore" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInputInfo.html#o38">_DMXLocalInputInfo::savedSendsCore</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Saved sends-core flag </td>
- </tr>
-</table>
-<a class="anchor" name="o25" doxytag="_DMXLocalInputInfo::sendsCore" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInputInfo.html#o25">_DMXLocalInputInfo::sendsCore</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Sends DMX core events </td>
- </tr>
-</table>
-<a class="anchor" name="o33" doxytag="_DMXLocalInputInfo::tail" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXLocalInputInfo.html#o33">_DMXLocalInputInfo::tail</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-XInput motion history tail </td>
- </tr>
-</table>
-<a class="anchor" name="o1" doxytag="_DMXLocalInputInfo::type" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> DMXLocalInputType <a class="el" href="struct__DMXLocalInputInfo.html#o1">_DMXLocalInputInfo::type</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Device type </td>
- </tr>
-</table>
-<a class="anchor" name="o19" doxytag="_DMXLocalInputInfo::update_info" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxUpdateInfoProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o19">_DMXLocalInputInfo::update_info</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Update window layout information </td>
- </tr>
-</table>
-<a class="anchor" name="o12" doxytag="_DMXLocalInputInfo::update_position" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxUpdatePositionProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o12">_DMXLocalInputInfo::update_position</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Called when another device updates the cursor position </td>
- </tr>
-</table>
-<a class="anchor" name="o35" doxytag="_DMXLocalInputInfo::valuators" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int* <a class="el" href="struct__DMXLocalInputInfo.html#o35">_DMXLocalInputInfo::valuators</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Cache of previous values </td>
- </tr>
-</table>
-<a class="anchor" name="o14" doxytag="_DMXLocalInputInfo::vt_post_switch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxVTPostSwitchProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o14">_DMXLocalInputInfo::vt_post_switch</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Called after a VT switch </td>
- </tr>
-</table>
-<a class="anchor" name="o13" doxytag="_DMXLocalInputInfo::vt_pre_switch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxVTPreSwitchProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o13">_DMXLocalInputInfo::vt_pre_switch</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Called before a VT switch </td>
- </tr>
-</table>
-<a class="anchor" name="o15" doxytag="_DMXLocalInputInfo::vt_switch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> dmxVTSwitchProcPtr <a class="el" href="struct__DMXLocalInputInfo.html#o15">_DMXLocalInputInfo::vt_switch</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Causes a VT switch </td>
- </tr>
-</table>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXScreenInfo.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXScreenInfo.html
deleted file mode 100644
index c83d3f0aa..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXScreenInfo.html
+++ /dev/null
@@ -1,1330 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXScreenInfo Struct Reference</h1><code>#include &lt;<a class="el" href="dmx_8h-source.html">dmx.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>const char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o0">name</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o1">index</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Display *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o2">beDisplay</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o3">beWidth</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o4">beHeight</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o5">beDepth</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o6">beBPP</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o7">beXDPI</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o8">beYDPI</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o9">beNumDepths</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o10">beDepths</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o11">beNumPixmapFormats</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>XPixmapFormatValues *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o12">bePixmapFormats</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o13">beNumVisuals</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>XVisualInfo *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o14">beVisuals</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o15">beDefVisualIndex</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o16">beNumDefColormaps</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Colormap *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o17">beDefColormaps</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Pixel&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o18">beBlackPixel</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Pixel&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o19">beWhitePixel</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Window&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o20">scrnWin</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o21">scrnX</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o22">scrnY</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o23">scrnWidth</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o24">scrnHeight</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o25">scrnXSign</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o26">scrnYSign</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Drawable&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o27">scrnDefDrawables</a> [MAXFORMATS]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXScreenInfo.html">_DMXScreenInfo</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o28">next</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXScreenInfo.html">_DMXScreenInfo</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o29">over</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Window&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o30">rootWin</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o31">rootX</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o32">rootY</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o33">rootWidth</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o34">rootHeight</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o35">rootXOrigin</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o36">rootYOrigin</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o37">shadow</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>XlibGC&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o38">shadowGC</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>XImage *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o39">shadowFBImage</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o40">shared</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>PositionType&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o47">where</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o48">whereX</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o49">whereY</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o50">whereRefScreen</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o51">savedTimeout</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o52">dpmsCapable</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o53">dpmsEnabled</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o54">dpmsStandby</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o55">dpmsSuspend</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o56">dpmsOff</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o57">stat</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o58">needsSync</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>CloseScreenProcPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXScreenInfo.html#o59">CloseScreen</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Global structure containing information about each backend screen.
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="o18" doxytag="_DMXScreenInfo::beBlackPixel" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Pixel <a class="el" href="struct__DMXScreenInfo.html#o18">_DMXScreenInfo::beBlackPixel</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Default black pixel for BE </td>
- </tr>
-</table>
-<a class="anchor" name="o6" doxytag="_DMXScreenInfo::beBPP" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o6">_DMXScreenInfo::beBPP</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Bits per pixel of BE display </td>
- </tr>
-</table>
-<a class="anchor" name="o17" doxytag="_DMXScreenInfo::beDefColormaps" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Colormap* <a class="el" href="struct__DMXScreenInfo.html#o17">_DMXScreenInfo::beDefColormaps</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Default colormaps for DMX server </td>
- </tr>
-</table>
-<a class="anchor" name="o15" doxytag="_DMXScreenInfo::beDefVisualIndex" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o15">_DMXScreenInfo::beDefVisualIndex</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Default visual index of BE </td>
- </tr>
-</table>
-<a class="anchor" name="o5" doxytag="_DMXScreenInfo::beDepth" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o5">_DMXScreenInfo::beDepth</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Depth of BE display </td>
- </tr>
-</table>
-<a class="anchor" name="o10" doxytag="_DMXScreenInfo::beDepths" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int* <a class="el" href="struct__DMXScreenInfo.html#o10">_DMXScreenInfo::beDepths</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Depths from BE server </td>
- </tr>
-</table>
-<a class="anchor" name="o2" doxytag="_DMXScreenInfo::beDisplay" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Display* <a class="el" href="struct__DMXScreenInfo.html#o2">_DMXScreenInfo::beDisplay</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Back-end X server's display </td>
- </tr>
-</table>
-<a class="anchor" name="o4" doxytag="_DMXScreenInfo::beHeight" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o4">_DMXScreenInfo::beHeight</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Height of BE display </td>
- </tr>
-</table>
-<a class="anchor" name="o16" doxytag="_DMXScreenInfo::beNumDefColormaps" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o16">_DMXScreenInfo::beNumDefColormaps</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of default colormaps </td>
- </tr>
-</table>
-<a class="anchor" name="o9" doxytag="_DMXScreenInfo::beNumDepths" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o9">_DMXScreenInfo::beNumDepths</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of depths on BE server </td>
- </tr>
-</table>
-<a class="anchor" name="o11" doxytag="_DMXScreenInfo::beNumPixmapFormats" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o11">_DMXScreenInfo::beNumPixmapFormats</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of pixmap formats on BE </td>
- </tr>
-</table>
-<a class="anchor" name="o13" doxytag="_DMXScreenInfo::beNumVisuals" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o13">_DMXScreenInfo::beNumVisuals</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of visuals on BE </td>
- </tr>
-</table>
-<a class="anchor" name="o12" doxytag="_DMXScreenInfo::bePixmapFormats" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> XPixmapFormatValues* <a class="el" href="struct__DMXScreenInfo.html#o12">_DMXScreenInfo::bePixmapFormats</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Pixmap formats on BE </td>
- </tr>
-</table>
-<a class="anchor" name="o14" doxytag="_DMXScreenInfo::beVisuals" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> XVisualInfo* <a class="el" href="struct__DMXScreenInfo.html#o14">_DMXScreenInfo::beVisuals</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Visuals from BE server </td>
- </tr>
-</table>
-<a class="anchor" name="o19" doxytag="_DMXScreenInfo::beWhitePixel" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Pixel <a class="el" href="struct__DMXScreenInfo.html#o19">_DMXScreenInfo::beWhitePixel</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Default white pixel for BE </td>
- </tr>
-</table>
-<a class="anchor" name="o3" doxytag="_DMXScreenInfo::beWidth" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o3">_DMXScreenInfo::beWidth</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Width of BE display </td>
- </tr>
-</table>
-<a class="anchor" name="o7" doxytag="_DMXScreenInfo::beXDPI" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o7">_DMXScreenInfo::beXDPI</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Horizontal dots per inch of BE </td>
- </tr>
-</table>
-<a class="anchor" name="o8" doxytag="_DMXScreenInfo::beYDPI" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o8">_DMXScreenInfo::beYDPI</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Vertical dots per inch of BE </td>
- </tr>
-</table>
-<a class="anchor" name="o59" doxytag="_DMXScreenInfo::CloseScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> CloseScreenProcPtr <a class="el" href="struct__DMXScreenInfo.html#o59">_DMXScreenInfo::CloseScreen</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Function pointers to wrapped screen functions </td>
- </tr>
-</table>
-<a class="anchor" name="o52" doxytag="_DMXScreenInfo::dpmsCapable" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o52">_DMXScreenInfo::dpmsCapable</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if backend is DPMS capable </td>
- </tr>
-</table>
-<a class="anchor" name="o53" doxytag="_DMXScreenInfo::dpmsEnabled" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o53">_DMXScreenInfo::dpmsEnabled</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if DPMS enabled </td>
- </tr>
-</table>
-<a class="anchor" name="o56" doxytag="_DMXScreenInfo::dpmsOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o56">_DMXScreenInfo::dpmsOff</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Original DPMS off value </td>
- </tr>
-</table>
-<a class="anchor" name="o54" doxytag="_DMXScreenInfo::dpmsStandby" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o54">_DMXScreenInfo::dpmsStandby</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Original DPMS standby value </td>
- </tr>
-</table>
-<a class="anchor" name="o55" doxytag="_DMXScreenInfo::dpmsSuspend" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o55">_DMXScreenInfo::dpmsSuspend</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Original DPMS suspend value </td>
- </tr>
-</table>
-<a class="anchor" name="o1" doxytag="_DMXScreenInfo::index" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o1">_DMXScreenInfo::index</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Index into dmxScreens global </td>
- </tr>
-</table>
-<a class="anchor" name="o0" doxytag="_DMXScreenInfo::name" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const char* <a class="el" href="struct__DMXScreenInfo.html#o0">_DMXScreenInfo::name</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Name from command line or config file </td>
- </tr>
-</table>
-<a class="anchor" name="o58" doxytag="_DMXScreenInfo::needsSync" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="struct__DMXScreenInfo.html#o58">_DMXScreenInfo::needsSync</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if an XSync is pending </td>
- </tr>
-</table>
-<a class="anchor" name="o28" doxytag="_DMXScreenInfo::next" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> struct <a class="el" href="struct__DMXScreenInfo.html">_DMXScreenInfo</a>* <a class="el" href="struct__DMXScreenInfo.html#o28">_DMXScreenInfo::next</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-List of "screens" on same display </td>
- </tr>
-</table>
-<a class="anchor" name="o29" doxytag="_DMXScreenInfo::over" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> struct <a class="el" href="struct__DMXScreenInfo.html">_DMXScreenInfo</a>* <a class="el" href="struct__DMXScreenInfo.html#o29">_DMXScreenInfo::over</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-List of "screens" that overlap </td>
- </tr>
-</table>
-<a class="anchor" name="o34" doxytag="_DMXScreenInfo::rootHeight" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o34">_DMXScreenInfo::rootHeight</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Height of "root" window </td>
- </tr>
-</table>
-<a class="anchor" name="o33" doxytag="_DMXScreenInfo::rootWidth" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o33">_DMXScreenInfo::rootWidth</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Width of "root" window </td>
- </tr>
-</table>
-<a class="anchor" name="o30" doxytag="_DMXScreenInfo::rootWin" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Window <a class="el" href="struct__DMXScreenInfo.html#o30">_DMXScreenInfo::rootWin</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-"Root" window on backend display </td>
- </tr>
-</table>
-<a class="anchor" name="o31" doxytag="_DMXScreenInfo::rootX" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o31">_DMXScreenInfo::rootX</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-X offset of "root" window WRT "screen" </td>
- </tr>
-</table>
-<a class="anchor" name="o35" doxytag="_DMXScreenInfo::rootXOrigin" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o35">_DMXScreenInfo::rootXOrigin</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Global X origin of "root" window </td>
- </tr>
-</table>
-<a class="anchor" name="o32" doxytag="_DMXScreenInfo::rootY" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o32">_DMXScreenInfo::rootY</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Y offset of "root" window WRT "screen" </td>
- </tr>
-</table>
-<a class="anchor" name="o36" doxytag="_DMXScreenInfo::rootYOrigin" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o36">_DMXScreenInfo::rootYOrigin</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Global Y origin of "root" window </td>
- </tr>
-</table>
-<a class="anchor" name="o51" doxytag="_DMXScreenInfo::savedTimeout" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o51">_DMXScreenInfo::savedTimeout</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Original screen saver timeout </td>
- </tr>
-</table>
-<a class="anchor" name="o27" doxytag="_DMXScreenInfo::scrnDefDrawables" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Drawable <a class="el" href="struct__DMXScreenInfo.html#o27">_DMXScreenInfo::scrnDefDrawables</a>[MAXFORMATS]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Default drawables for "screen" </td>
- </tr>
-</table>
-<a class="anchor" name="o24" doxytag="_DMXScreenInfo::scrnHeight" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o24">_DMXScreenInfo::scrnHeight</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Height of "screen" </td>
- </tr>
-</table>
-<a class="anchor" name="o23" doxytag="_DMXScreenInfo::scrnWidth" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o23">_DMXScreenInfo::scrnWidth</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Width of "screen" </td>
- </tr>
-</table>
-<a class="anchor" name="o20" doxytag="_DMXScreenInfo::scrnWin" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Window <a class="el" href="struct__DMXScreenInfo.html#o20">_DMXScreenInfo::scrnWin</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-"Screen" window on backend display </td>
- </tr>
-</table>
-<a class="anchor" name="o21" doxytag="_DMXScreenInfo::scrnX" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o21">_DMXScreenInfo::scrnX</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-X offset of "screen" WRT BE display </td>
- </tr>
-</table>
-<a class="anchor" name="o25" doxytag="_DMXScreenInfo::scrnXSign" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o25">_DMXScreenInfo::scrnXSign</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-X offset sign of "screen" </td>
- </tr>
-</table>
-<a class="anchor" name="o22" doxytag="_DMXScreenInfo::scrnY" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o22">_DMXScreenInfo::scrnY</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Y offset of "screen" WRT BE display </td>
- </tr>
-</table>
-<a class="anchor" name="o26" doxytag="_DMXScreenInfo::scrnYSign" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o26">_DMXScreenInfo::scrnYSign</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Y offset sign of "screen" </td>
- </tr>
-</table>
-<a class="anchor" name="o37" doxytag="_DMXScreenInfo::shadow" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void* <a class="el" href="struct__DMXScreenInfo.html#o37">_DMXScreenInfo::shadow</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Shadow framebuffer data (if enabled) </td>
- </tr>
-</table>
-<a class="anchor" name="o39" doxytag="_DMXScreenInfo::shadowFBImage" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> XImage* <a class="el" href="struct__DMXScreenInfo.html#o39">_DMXScreenInfo::shadowFBImage</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Screen image used by shadow FB code </td>
- </tr>
-</table>
-<a class="anchor" name="o38" doxytag="_DMXScreenInfo::shadowGC" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> XlibGC <a class="el" href="struct__DMXScreenInfo.html#o38">_DMXScreenInfo::shadowGC</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Default GC used by shadow FB code </td>
- </tr>
-</table>
-<a class="anchor" name="o40" doxytag="_DMXScreenInfo::shared" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o40">_DMXScreenInfo::shared</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Non-zero if another Xdmx is running </td>
- </tr>
-</table>
-<a class="anchor" name="o57" doxytag="_DMXScreenInfo::stat" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a>* <a class="el" href="struct__DMXScreenInfo.html#o57">_DMXScreenInfo::stat</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Statistics about XSync </td>
- </tr>
-</table>
-<a class="anchor" name="o47" doxytag="_DMXScreenInfo::where" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> PositionType <a class="el" href="struct__DMXScreenInfo.html#o47">_DMXScreenInfo::where</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Relative layout information </td>
- </tr>
-</table>
-<a class="anchor" name="o50" doxytag="_DMXScreenInfo::whereRefScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o50">_DMXScreenInfo::whereRefScreen</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Relative layout information </td>
- </tr>
-</table>
-<a class="anchor" name="o48" doxytag="_DMXScreenInfo::whereX" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o48">_DMXScreenInfo::whereX</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Relative layout information </td>
- </tr>
-</table>
-<a class="anchor" name="o49" doxytag="_DMXScreenInfo::whereY" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__DMXScreenInfo.html#o49">_DMXScreenInfo::whereY</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Relative layout information </td>
- </tr>
-</table>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmx_8h-source.html">dmx.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXStatAvg.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXStatAvg.html
deleted file mode 100644
index feb264dcb..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXStatAvg.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXStatAvg Struct Reference</h1><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Used to compute a running average of value.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxstat_8c.html">dmxstat.c</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXStatInfo.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXStatInfo.html
deleted file mode 100644
index eff756130..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__DMXStatInfo.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_DMXStatInfo Struct Reference</h1><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Statistical information about XSync calls.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxstat_8c.html">dmxstat.c</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__Event.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__Event.html
deleted file mode 100644
index cb9b65bc3..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__Event.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_Event Struct Reference</h1><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>xEvent&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__Event.html#o0">event</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>ScreenPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__Event.html#o1">pScreen</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>deviceValuator&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__Event.html#o2">valuator</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Information about the event.
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="o0" doxytag="_Event::event" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> xEvent <a class="el" href="struct__Event.html#o0">_Event::event</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Event. </td>
- </tr>
-</table>
-<a class="anchor" name="o1" doxytag="_Event::pScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> ScreenPtr <a class="el" href="struct__Event.html#o1">_Event::pScreen</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Screen on which event occurred. </td>
- </tr>
-</table>
-<a class="anchor" name="o2" doxytag="_Event::valuator" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> deviceValuator <a class="el" href="struct__Event.html#o2">_Event::valuator</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-XInput device valuator information. </td>
- </tr>
-</table>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxeq_8c.html">dmxeq.c</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__EventQueue.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__EventQueue.html
deleted file mode 100644
index abcc33aa2..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__EventQueue.html
+++ /dev/null
@@ -1,224 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_EventQueue Struct Reference</h1><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>HWEventQueueType&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__EventQueue.html#o0">head</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>HWEventQueueType&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__EventQueue.html#o1">tail</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>CARD32&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__EventQueue.html#o2">lastEventTime</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__EventQueue.html#o3">lastMotion</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__Event.html">EventRec</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__EventQueue.html#o4">events</a> [QUEUE_SIZE]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>DevicePtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__EventQueue.html#o6">pPtr</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>ScreenPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__EventQueue.html#o7">pEnqueueScreen</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>ScreenPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__EventQueue.html#o8">pDequeueScreen</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Event queue.
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="o4" doxytag="_EventQueue::events" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__Event.html">EventRec</a> <a class="el" href="struct__EventQueue.html#o4">_EventQueue::events</a>[QUEUE_SIZE]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Static allocation for signals. </td>
- </tr>
-</table>
-<a class="anchor" name="o0" doxytag="_EventQueue::head" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> HWEventQueueType <a class="el" href="struct__EventQueue.html#o0">_EventQueue::head</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Queue head; must be long for SetInputCheck. </td>
- </tr>
-</table>
-<a class="anchor" name="o2" doxytag="_EventQueue::lastEventTime" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> CARD32 <a class="el" href="struct__EventQueue.html#o2">_EventQueue::lastEventTime</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-To avoid time running backwards. </td>
- </tr>
-</table>
-<a class="anchor" name="o3" doxytag="_EventQueue::lastMotion" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Bool <a class="el" href="struct__EventQueue.html#o3">_EventQueue::lastMotion</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-True if last event was motion. </td>
- </tr>
-</table>
-<a class="anchor" name="o8" doxytag="_EventQueue::pDequeueScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> ScreenPtr <a class="el" href="struct__EventQueue.html#o8">_EventQueue::pDequeueScreen</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Screen events are dispatched to. </td>
- </tr>
-</table>
-<a class="anchor" name="o7" doxytag="_EventQueue::pEnqueueScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> ScreenPtr <a class="el" href="struct__EventQueue.html#o7">_EventQueue::pEnqueueScreen</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Screen events are delivered to. </td>
- </tr>
-</table>
-<a class="anchor" name="o6" doxytag="_EventQueue::pPtr" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> DevicePtr <a class="el" href="struct__EventQueue.html#o6">_EventQueue::pPtr</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Device pointers (to get funcs) </td>
- </tr>
-</table>
-<a class="anchor" name="o1" doxytag="_EventQueue::tail" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> HWEventQueueType <a class="el" href="struct__EventQueue.html#o1">_EventQueue::tail</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Queue tail; must be long for SetInputCheck. </td>
- </tr>
-</table>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxeq_8c.html">dmxeq.c</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxArg.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxArg.html
deleted file mode 100644
index 16ef20aed..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxArg.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_dmxArg Struct Reference</h1><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxArg.html#o0">argc</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxArg.html#o1">argm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>const char **&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxArg.html#o2">argv</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Stores the parsed argument list.
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="o0" doxytag="_dmxArg::argc" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__dmxArg.html#o0">_dmxArg::argc</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Number of arguments in argv </td>
- </tr>
-</table>
-<a class="anchor" name="o1" doxytag="_dmxArg::argm" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__dmxArg.html#o1">_dmxArg::argm</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Maximum number of arguments store-able in argv </td>
- </tr>
-</table>
-<a class="anchor" name="o2" doxytag="_dmxArg::argv" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const char** <a class="el" href="struct__dmxArg.html#o2">_dmxArg::argv</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Arguments </td>
- </tr>
-</table>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxarg_8c.html">dmxarg.c</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxColormapPriv.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxColormapPriv.html
deleted file mode 100644
index 531e96ee2..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxColormapPriv.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_dmxColormapPriv Struct Reference</h1><code>#include &lt;<a class="el" href="dmxcmap_8h-source.html">dmxcmap.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Colormap private area.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxcmap_8h-source.html">dmxcmap.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxCursorPriv.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxCursorPriv.html
deleted file mode 100644
index 3891b8f3a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxCursorPriv.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_dmxCursorPriv Struct Reference</h1><code>#include &lt;<a class="el" href="dmxcursor_8h-source.html">dmxcursor.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Cursor private area.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxcursor_8h-source.html">dmxcursor.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxFontPriv.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxFontPriv.html
deleted file mode 100644
index adff77f04..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxFontPriv.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_dmxFontPriv Struct Reference</h1><code>#include &lt;<a class="el" href="dmxfont_8h-source.html">dmxfont.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Font private area.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxfont_8h-source.html">dmxfont.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxGCPriv.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxGCPriv.html
deleted file mode 100644
index 9a7b0fd25..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxGCPriv.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_dmxGCPriv Struct Reference</h1><code>#include &lt;<a class="el" href="dmxgc_8h-source.html">dmxgc.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-GC private area.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxgc_8h-source.html">dmxgc.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxGlyphPriv.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxGlyphPriv.html
deleted file mode 100644
index c7738a4b6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxGlyphPriv.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_dmxGlyphPriv Struct Reference</h1><code>#include &lt;<a class="el" href="dmxpict_8h-source.html">dmxpict.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>GlyphSet *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxGlyphPriv.html#o0">glyphSets</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Glyph Set private structure
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="o0" doxytag="_dmxGlyphPriv::glyphSets" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> GlyphSet* <a class="el" href="struct__dmxGlyphPriv.html#o0">_dmxGlyphPriv::glyphSets</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Glyph Set IDs from back-end server </td>
- </tr>
-</table>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxpict_8h-source.html">dmxpict.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxPictPriv.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxPictPriv.html
deleted file mode 100644
index c3034eefa..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxPictPriv.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_dmxPictPriv Struct Reference</h1><code>#include &lt;<a class="el" href="dmxpict_8h-source.html">dmxpict.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>Picture&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxPictPriv.html#o0">pict</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>Mask&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__dmxPictPriv.html#o1">savedMask</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Picture private structure
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="o0" doxytag="_dmxPictPriv::pict" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Picture <a class="el" href="struct__dmxPictPriv.html#o0">_dmxPictPriv::pict</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Picture ID from back-end server </td>
- </tr>
-</table>
-<a class="anchor" name="o1" doxytag="_dmxPictPriv::savedMask" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> Mask <a class="el" href="struct__dmxPictPriv.html#o1">_dmxPictPriv::savedMask</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Mask of picture attributes saved for lazy window creation. </td>
- </tr>
-</table>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxpict_8h-source.html">dmxpict.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxPixPriv.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxPixPriv.html
deleted file mode 100644
index a358c0162..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxPixPriv.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_dmxPixPriv Struct Reference</h1><code>#include &lt;<a class="el" href="dmxpixmap_8h-source.html">dmxpixmap.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Pixmap private area.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxpixmap_8h-source.html">dmxpixmap.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxWinPriv.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxWinPriv.html
deleted file mode 100644
index c51978e8f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__dmxWinPriv.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_dmxWinPriv Struct Reference</h1><code>#include &lt;<a class="el" href="dmxwindow_8h-source.html">dmxwindow.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Window private area.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxwindow_8h-source.html">dmxwindow.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__myPrivate.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__myPrivate.html
deleted file mode 100644
index 50e532569..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/struct__myPrivate.html
+++ /dev/null
@@ -1,272 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>_myPrivate Struct Reference</h1><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html#o37">fd</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>CARD32&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html#o43">kbdState</a> [NUM_STATE_ENTRIES]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html#o49">pitch</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>unsigned long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html#o50">duration</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>DeviceIntPtr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html#o55">pDevice</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>unsigned char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html#o56">mask</a> [EV_MAX/8+1]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html#o59">numLeds</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html#o60">relmap</a> [DMX_MAX_AXES]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html#o61">absmap</a> [DMX_MAX_AXES]</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html#o62">dmxInput</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Each device has a private area that is visible only from inside the driver code.
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="o61" doxytag="_myPrivate::absmap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__myPrivate.html#o61">_myPrivate::absmap</a>[DMX_MAX_AXES]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Absolute axis map </td>
- </tr>
-</table>
-<a class="anchor" name="o62" doxytag="_myPrivate::dmxInput" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXInputInfo.html">DMXInputInfo</a>* <a class="el" href="struct__myPrivate.html#o62">_myPrivate::dmxInput</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-For pretty-printing </td>
- </tr>
-</table>
-<a class="anchor" name="o50" doxytag="_myPrivate::duration" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> unsigned long <a class="el" href="struct__myPrivate.html#o50">_myPrivate::duration</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Bell duration </td>
- </tr>
-</table>
-<a class="anchor" name="o37" doxytag="_myPrivate::fd" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__myPrivate.html#o37">_myPrivate::fd</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-File descriptor </td>
- </tr>
-</table>
-<a class="anchor" name="o43" doxytag="_myPrivate::kbdState" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> CARD32 <a class="el" href="struct__myPrivate.html#o43">_myPrivate::kbdState</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Keyboard state </td>
- </tr>
-</table>
-<a class="anchor" name="o56" doxytag="_myPrivate::mask" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> unsigned char <a class="el" href="struct__myPrivate.html#o56">_myPrivate::mask</a>[EV_MAX/8 + 1]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Mask </td>
- </tr>
-</table>
-<a class="anchor" name="o59" doxytag="_myPrivate::numLeds" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__myPrivate.html#o59">_myPrivate::numLeds</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Counts </td>
- </tr>
-</table>
-<a class="anchor" name="o55" doxytag="_myPrivate::pDevice" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> DeviceIntPtr <a class="el" href="struct__myPrivate.html#o55">_myPrivate::pDevice</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Device (mouse or other) </td>
- </tr>
-</table>
-<a class="anchor" name="o49" doxytag="_myPrivate::pitch" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__myPrivate.html#o49">_myPrivate::pitch</a>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Bell pitch </td>
- </tr>
-</table>
-<a class="anchor" name="o60" doxytag="_myPrivate::relmap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int <a class="el" href="struct__myPrivate.html#o60">_myPrivate::relmap</a>[DMX_MAX_AXES]
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Relative axis map </td>
- </tr>
-</table>
-<hr>The documentation for this struct was generated from the following files:<ul>
-<li><a class="el" href="dmxbackend_8c.html">dmxbackend.c</a><li><a class="el" href="dmxcommon_8c.html">dmxcommon.c</a><li><a class="el" href="dmxconsole_8c.html">dmxconsole.c</a><li><a class="el" href="lnx-keyboard_8c.html">lnx-keyboard.c</a><li><a class="el" href="lnx-ms_8c.html">lnx-ms.c</a><li><a class="el" href="lnx-ps2_8c.html">lnx-ps2.c</a><li><a class="el" href="usb-private_8h-source.html">usb-private.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structdmxGlxVisualPrivate.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structdmxGlxVisualPrivate.html
deleted file mode 100644
index 2c5584e14..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structdmxGlxVisualPrivate.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxGlxVisualPrivate Struct Reference</h1><code>#include &lt;<a class="el" href="dmx__glxvisuals_8h-source.html">dmx_glxvisuals.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-GLX Visual private area.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmx__glxvisuals_8h-source.html">dmx_glxvisuals.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddInputReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddInputReply.html
deleted file mode 100644
index 580d1dcc0..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddInputReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXAddInputReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXAddInput protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddInputReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddInputReq.html
deleted file mode 100644
index 8f2a84d5d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddInputReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXAddInputReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXAddInput protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddScreenReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddScreenReply.html
deleted file mode 100644
index 6f1b91d8e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddScreenReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXAddScreenReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXAddScreen protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddScreenReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddScreenReq.html
deleted file mode 100644
index ec634882d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXAddScreenReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXAddScreenReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXAddScreen protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeDesktopAttributesReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeDesktopAttributesReply.html
deleted file mode 100644
index 5ca2fb174..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeDesktopAttributesReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXChangeDesktopAttributesReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXChangeDesktopAttributes protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeDesktopAttributesReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeDesktopAttributesReq.html
deleted file mode 100644
index 9fb5c4cdf..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeDesktopAttributesReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXChangeDesktopAttributesReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXChangeDesktopAttributes protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeScreensAttributesReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeScreensAttributesReply.html
deleted file mode 100644
index f7228665f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeScreensAttributesReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXChangeScreensAttributesReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXChangeScreensAttributes protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeScreensAttributesReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeScreensAttributesReq.html
deleted file mode 100644
index d744c6a72..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXChangeScreensAttributesReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXChangeScreensAttributesReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXChangeScreensAttributes protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXForceWindowCreationReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXForceWindowCreationReply.html
deleted file mode 100644
index 796791499..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXForceWindowCreationReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXForceWindowCreationReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXForceWindowCreation protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXForceWindowCreationReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXForceWindowCreationReq.html
deleted file mode 100644
index b85f6b11c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXForceWindowCreationReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXForceWindowCreationReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXForceWindowCreation protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetDesktopAttributesReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetDesktopAttributesReply.html
deleted file mode 100644
index 6637fb12a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetDesktopAttributesReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXGetDesktopAttributesReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXGetDesktopAttributes protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetDesktopAttributesReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetDesktopAttributesReq.html
deleted file mode 100644
index c9ecbc38d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetDesktopAttributesReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXGetDesktopAttributesReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXGetDesktopAttributes protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputAttributesReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputAttributesReply.html
deleted file mode 100644
index 71595c5a1..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputAttributesReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXGetInputAttributesReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXGetInputAttributes protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputAttributesReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputAttributesReq.html
deleted file mode 100644
index 6c7fade50..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputAttributesReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXGetInputAttributesReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXGetInputAttributes protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputCountReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputCountReply.html
deleted file mode 100644
index 375b1415c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputCountReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXGetInputCountReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXGetInputCount protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputCountReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputCountReq.html
deleted file mode 100644
index 55251bb52..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetInputCountReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXGetInputCountReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXGetInputCount protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenAttributesReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenAttributesReply.html
deleted file mode 100644
index 89ca021e7..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenAttributesReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXGetScreenAttributesReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXGetScreenAttributes protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenAttributesReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenAttributesReq.html
deleted file mode 100644
index d7d9e9afd..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenAttributesReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXGetScreenAttributesReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXGetScreenAttributes protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenCountReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenCountReply.html
deleted file mode 100644
index e694fc90a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenCountReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXGetScreenCountReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXGetScreenCount protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenCountReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenCountReq.html
deleted file mode 100644
index f27e1e05a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetScreenCountReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXGetScreenCountReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXGetScreenCount protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetWindowAttributesReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetWindowAttributesReply.html
deleted file mode 100644
index 2e381958b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetWindowAttributesReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXGetWindowAttributesReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXGetWindowAttributes protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetWindowAttributesReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetWindowAttributesReq.html
deleted file mode 100644
index 9b3e1c053..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXGetWindowAttributesReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXGetWindowAttributesReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXGetWindowAttributes protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXQueryVersionReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXQueryVersionReply.html
deleted file mode 100644
index c9a4683f1..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXQueryVersionReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXQueryVersionReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXQueryVersion protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXQueryVersionReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXQueryVersionReq.html
deleted file mode 100644
index fdc3c3f97..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXQueryVersionReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXQueryVersionReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXQueryVersion protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveInputReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveInputReply.html
deleted file mode 100644
index 66c04a373..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveInputReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXRemoveInputReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXRemoveInput protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveInputReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveInputReq.html
deleted file mode 100644
index 62f2af182..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveInputReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXRemoveInputReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXRemoveInput protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveScreenReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveScreenReply.html
deleted file mode 100644
index c446a3442..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveScreenReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXRemoveScreenReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXRemoveScreen protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveScreenReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveScreenReq.html
deleted file mode 100644
index 3920bff9b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXRemoveScreenReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXRemoveScreenReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXRemoveScreen protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXSyncReply.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXSyncReply.html
deleted file mode 100644
index 0a361cf5d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXSyncReply.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXSyncReply Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXSync protocol reply.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXSyncReq.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXSyncReq.html
deleted file mode 100644
index a1580095d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/structxDMXSyncReq.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>xDMXSyncReq Struct Reference</h1><code>#include &lt;<a class="el" href="dmxproto_8h-source.html">dmxproto.h</a>&gt;</code>
-<p>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Wire-level description of DMXSync protocol request.
-<p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="dmxproto_8h-source.html">dmxproto.h</a></ul>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/tree.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/tree.html
deleted file mode 100644
index 59560837e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/tree.html
+++ /dev/null
@@ -1,295 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="Content-Type" content="text/xhtml;charset="iso-8859-1" />
- <meta http-equiv="Content-Style-Type" content="text/css" />
- <meta http-equiv="Content-Language" content="en" />
- <link rel="stylesheet" href="doxygen.css">
- <title>TreeView</title>
- <style type="text/css">
- <!--
- .directory { font-size: 10pt; font-weight: bold; }
- .directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
- .directory p { margin: 0px; white-space: nowrap; }
- .directory div { display: none; margin: 0px; }
- .directory img { vertical-align: middle; }
- -->
- </style>
- <script type="text/javascript">
- <!-- // Hide script from old browsers
-
- function findChildNode(node, name)
- {
- var temp;
- if (node == null)
- {
- return null;
- }
- node = node.firstChild;
- while (node != null)
- {
- if (node.nodeName == name)
- {
- return node;
- }
- temp = findChildNode(node, name);
- if (temp != null)
- {
- return temp;
- }
- node = node.nextSibling;
- }
- return null;
- }
-
- function toggleFolder(id, imageNode)
- {
- var folder = document.getElementById(id);
- var l = 0;
- var vl = "ftv2vertline.png";
- if (imageNode != null && imageNode.nodeName != "IMG")
- {
- imageNode = findChildNode(imageNode, "IMG");
- if (imageNode!=null) l = imageNode.src.length;
- }
- if (folder == null)
- {
- }
- else if (folder.style.display == "block")
- {
- while (imageNode != null &&
- imageNode.src.substring(l-vl.length,l) == vl)
- {
- imageNode = imageNode.nextSibling;
- l = imageNode.src.length;
- }
- if (imageNode != null)
- {
- l = imageNode.src.length;
- imageNode.nextSibling.src = "ftv2folderclosed.png";
- if (imageNode.src.substring(l-13,l) == "ftv2mnode.png")
- {
- imageNode.src = "ftv2pnode.png";
- }
- else if (imageNode.src.substring(l-17,l) == "ftv2mlastnode.png")
- {
- imageNode.src = "ftv2plastnode.png";
- }
- }
- folder.style.display = "none";
- }
- else
- {
- while (imageNode != null &&
- imageNode.src.substring(l-vl.length,l) == vl)
- {
- imageNode = imageNode.nextSibling;
- l = imageNode.src.length;
- }
- if (imageNode != null)
- {
- l = imageNode.src.length;
- imageNode.nextSibling.src = "ftv2folderopen.png";
- if (imageNode.src.substring(l-13,l) == "ftv2pnode.png")
- {
- imageNode.src = "ftv2mnode.png";
- }
- else if (imageNode.src.substring(l-17,l) == "ftv2plastnode.png")
- {
- imageNode.src = "ftv2mlastnode.png";
- }
- }
- folder.style.display = "block";
- }
- }
-
- // End script hiding -->
- </script>
- </head>
-
- <body bgcolor="#ffffff">
- <div class="directory">
- <h3>Distributed Multihead X</h3>
- <div style="display: block;">
- <p><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="main.html" target="basefrm">Main Page</a></p>
- <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder1', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder1', this)"/><a class="el" href="files.html" target="basefrm">File List</a></p>
- <div id="folder1">
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="ChkNotMaskEv_8c.html" target="basefrm">ChkNotMaskEv.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="ChkNotMaskEv_8h.html" target="basefrm">ChkNotMaskEv.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="programs_2Xserver_2Xext_2dmx_8c.html" target="basefrm">programs/Xserver/Xext/dmx.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="lib_2dmx_2dmx_8c.html" target="basefrm">lib/dmx/dmx.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmx_8h.html" target="basefrm">dmx.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>dmx_glxvisuals.h</b></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxarg_8c.html" target="basefrm">dmxarg.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxarg_8h.html" target="basefrm">dmxarg.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxbackend_8c.html" target="basefrm">dmxbackend.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxbackend_8h.html" target="basefrm">dmxbackend.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxcb_8c.html" target="basefrm">dmxcb.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxcb_8h.html" target="basefrm">dmxcb.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxclient_8h.html" target="basefrm">dmxclient.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxcmap_8c.html" target="basefrm">dmxcmap.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxcmap_8h.html" target="basefrm">dmxcmap.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxcommon_8c.html" target="basefrm">dmxcommon.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxcommon_8h.html" target="basefrm">dmxcommon.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxcompat_8c.html" target="basefrm">dmxcompat.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxcompat_8h.html" target="basefrm">dmxcompat.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxconfig_8c.html" target="basefrm">dmxconfig.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxconfig_8h.html" target="basefrm">dmxconfig.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxconsole_8c.html" target="basefrm">dmxconsole.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxconsole_8h.html" target="basefrm">dmxconsole.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxcursor_8c.html" target="basefrm">dmxcursor.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxcursor_8h.html" target="basefrm">dmxcursor.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxdetach_8c.html" target="basefrm">dmxdetach.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxdpms_8c.html" target="basefrm">dmxdpms.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxdpms_8h.html" target="basefrm">dmxdpms.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxdummy_8c.html" target="basefrm">dmxdummy.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxdummy_8h.html" target="basefrm">dmxdummy.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxeq_8c.html" target="basefrm">dmxeq.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxeq_8h.html" target="basefrm">dmxeq.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxevents_8c.html" target="basefrm">dmxevents.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxevents_8h.html" target="basefrm">dmxevents.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxext_8h.html" target="basefrm">dmxext.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxextension_8c.html" target="basefrm">dmxextension.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxextension_8h.html" target="basefrm">dmxextension.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxfont_8c.html" target="basefrm">dmxfont.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxfont_8h.html" target="basefrm">dmxfont.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxgc_8c.html" target="basefrm">dmxgc.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxgc_8h.html" target="basefrm">dmxgc.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxgcops_8c.html" target="basefrm">dmxgcops.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxgcops_8h.html" target="basefrm">dmxgcops.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxinit_8c.html" target="basefrm">dmxinit.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxinit_8h.html" target="basefrm">dmxinit.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxinput_8c.html" target="basefrm">dmxinput.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxinput_8h.html" target="basefrm">dmxinput.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxinputinit_8c.html" target="basefrm">dmxinputinit.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxinputinit_8h.html" target="basefrm">dmxinputinit.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxlog_8c.html" target="basefrm">dmxlog.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxlog_8h.html" target="basefrm">dmxlog.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxmap_8c.html" target="basefrm">dmxmap.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxmap_8h.html" target="basefrm">dmxmap.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxmotion_8c.html" target="basefrm">dmxmotion.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxmotion_8h.html" target="basefrm">dmxmotion.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxparse_8c.html" target="basefrm">dmxparse.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxparse_8h.html" target="basefrm">dmxparse.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxpict_8c.html" target="basefrm">dmxpict.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxpict_8h.html" target="basefrm">dmxpict.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxpixmap_8c.html" target="basefrm">dmxpixmap.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxpixmap_8h.html" target="basefrm">dmxpixmap.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxprint_8c.html" target="basefrm">dmxprint.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxprint_8h.html" target="basefrm">dmxprint.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxprop_8c.html" target="basefrm">dmxprop.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxprop_8h.html" target="basefrm">dmxprop.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxproto_8h.html" target="basefrm">dmxproto.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxscrinit_8c.html" target="basefrm">dmxscrinit.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxscrinit_8h.html" target="basefrm">dmxscrinit.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxshadow_8c.html" target="basefrm">dmxshadow.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxshadow_8h.html" target="basefrm">dmxshadow.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxsigio_8c.html" target="basefrm">dmxsigio.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxsigio_8h.html" target="basefrm">dmxsigio.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxstat_8c.html" target="basefrm">dmxstat.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxstat_8h.html" target="basefrm">dmxstat.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxsync_8c.html" target="basefrm">dmxsync.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxsync_8h.html" target="basefrm">dmxsync.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxvisual_8c.html" target="basefrm">dmxvisual.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxvisual_8h.html" target="basefrm">dmxvisual.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxwindow_8c.html" target="basefrm">dmxwindow.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxwindow_8h.html" target="basefrm">dmxwindow.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dmxxinput_8c.html" target="basefrm">dmxxinput.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="lnx-keyboard_8c.html" target="basefrm">lnx-keyboard.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="lnx-keyboard_8h.html" target="basefrm">lnx-keyboard.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="lnx-ms_8c.html" target="basefrm">lnx-ms.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="lnx-ms_8h.html" target="basefrm">lnx-ms.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="lnx-ps2_8c.html" target="basefrm">lnx-ps2.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="lnx-ps2_8h.html" target="basefrm">lnx-ps2.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="usb-common_8c.html" target="basefrm">usb-common.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="usb-common_8h.html" target="basefrm">usb-common.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="usb-keyboard_8c.html" target="basefrm">usb-keyboard.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="usb-keyboard_8h.html" target="basefrm">usb-keyboard.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="usb-mouse_8c.html" target="basefrm">usb-mouse.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="usb-mouse_8h.html" target="basefrm">usb-mouse.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="usb-other_8c.html" target="basefrm">usb-other.c</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="usb-other_8h.html" target="basefrm">usb-other.h</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="usb-private_8h.html" target="basefrm">usb-private.h</a></p>
- </div>
- <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder2', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder2', this)"/><a class="el" href="annotated.html" target="basefrm">Data Structures</a></p>
- <div id="folder2">
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__dmxArg.html" target="basefrm">_dmxArg</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__dmxColormapPriv.html" target="basefrm">_dmxColormapPriv</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigComment.html" target="basefrm">_DMXConfigComment</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigDisplay.html" target="basefrm">_DMXConfigDisplay</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigEntry.html" target="basefrm">_DMXConfigEntry</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigFullDim.html" target="basefrm">_DMXConfigFullDim</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigNumber.html" target="basefrm">_DMXConfigNumber</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigOption.html" target="basefrm">_DMXConfigOption</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigPair.html" target="basefrm">_DMXConfigPair</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigParam.html" target="basefrm">_DMXConfigParam</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigPartDim.html" target="basefrm">_DMXConfigPartDim</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigString.html" target="basefrm">_DMXConfigString</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigSub.html" target="basefrm">_DMXConfigSub</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigToken.html" target="basefrm">_DMXConfigToken</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigVirtual.html" target="basefrm">_DMXConfigVirtual</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXConfigWall.html" target="basefrm">_DMXConfigWall</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__dmxCursorPriv.html" target="basefrm">_dmxCursorPriv</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXEventMap.html" target="basefrm">_DMXEventMap</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__dmxFontPriv.html" target="basefrm">_dmxFontPriv</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__dmxGCPriv.html" target="basefrm">_dmxGCPriv</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__dmxGlyphPriv.html" target="basefrm">_dmxGlyphPriv</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXInputInfo.html" target="basefrm">_DMXInputInfo</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXLocalInitInfo.html" target="basefrm">_DMXLocalInitInfo</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXLocalInputInfo.html" target="basefrm">_DMXLocalInputInfo</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__dmxPictPriv.html" target="basefrm">_dmxPictPriv</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__dmxPixPriv.html" target="basefrm">_dmxPixPriv</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXScreenInfo.html" target="basefrm">_DMXScreenInfo</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXStatAvg.html" target="basefrm">_DMXStatAvg</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__DMXStatInfo.html" target="basefrm">_DMXStatInfo</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__dmxWinPriv.html" target="basefrm">_dmxWinPriv</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__Event.html" target="basefrm">_Event</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__EventQueue.html" target="basefrm">_EventQueue</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="struct__myPrivate.html" target="basefrm">_myPrivate</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structDMXConfigCmdStruct.html" target="basefrm">DMXConfigCmdStruct</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structDMXConfigListStruct.html" target="basefrm">DMXConfigListStruct</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structDMXDesktopAttributes.html" target="basefrm">DMXDesktopAttributes</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structDMXDesktopAttributesRec.html" target="basefrm">DMXDesktopAttributesRec</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structdmxGlxVisualPrivate.html" target="basefrm">dmxGlxVisualPrivate</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structDMXInputAttributes.html" target="basefrm">DMXInputAttributes</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structDMXInputAttributesRec.html" target="basefrm">DMXInputAttributesRec</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structDMXScreenAttributes.html" target="basefrm">DMXScreenAttributes</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structDMXScreenAttributesRec.html" target="basefrm">DMXScreenAttributesRec</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structDMXWindowAttributes.html" target="basefrm">DMXWindowAttributes</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structDMXWindowAttributesRec.html" target="basefrm">DMXWindowAttributesRec</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXAddInputReply.html" target="basefrm">xDMXAddInputReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXAddInputReq.html" target="basefrm">xDMXAddInputReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXAddScreenReply.html" target="basefrm">xDMXAddScreenReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXAddScreenReq.html" target="basefrm">xDMXAddScreenReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXChangeDesktopAttributesReply.html" target="basefrm">xDMXChangeDesktopAttributesReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXChangeDesktopAttributesReq.html" target="basefrm">xDMXChangeDesktopAttributesReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXChangeScreensAttributesReply.html" target="basefrm">xDMXChangeScreensAttributesReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXChangeScreensAttributesReq.html" target="basefrm">xDMXChangeScreensAttributesReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXForceWindowCreationReply.html" target="basefrm">xDMXForceWindowCreationReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXForceWindowCreationReq.html" target="basefrm">xDMXForceWindowCreationReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXGetDesktopAttributesReply.html" target="basefrm">xDMXGetDesktopAttributesReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXGetDesktopAttributesReq.html" target="basefrm">xDMXGetDesktopAttributesReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXGetInputAttributesReply.html" target="basefrm">xDMXGetInputAttributesReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXGetInputAttributesReq.html" target="basefrm">xDMXGetInputAttributesReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXGetInputCountReply.html" target="basefrm">xDMXGetInputCountReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXGetInputCountReq.html" target="basefrm">xDMXGetInputCountReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXGetScreenAttributesReply.html" target="basefrm">xDMXGetScreenAttributesReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXGetScreenAttributesReq.html" target="basefrm">xDMXGetScreenAttributesReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXGetScreenCountReply.html" target="basefrm">xDMXGetScreenCountReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXGetScreenCountReq.html" target="basefrm">xDMXGetScreenCountReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXGetWindowAttributesReply.html" target="basefrm">xDMXGetWindowAttributesReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXGetWindowAttributesReq.html" target="basefrm">xDMXGetWindowAttributesReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXQueryVersionReply.html" target="basefrm">xDMXQueryVersionReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXQueryVersionReq.html" target="basefrm">xDMXQueryVersionReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXRemoveInputReply.html" target="basefrm">xDMXRemoveInputReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXRemoveInputReq.html" target="basefrm">xDMXRemoveInputReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXRemoveScreenReply.html" target="basefrm">xDMXRemoveScreenReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXRemoveScreenReq.html" target="basefrm">xDMXRemoveScreenReq</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXSyncReply.html" target="basefrm">xDMXSyncReply</a></p>
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structxDMXSyncReq.html" target="basefrm">xDMXSyncReq</a></p>
- </div>
- <p><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="functions.html" target="basefrm">Data Fields</a></p>
- <p><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="globals.html" target="basefrm">Globals</a></p>
- </div>
- </div>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8c.html
deleted file mode 100644
index 3c1882a5b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8c.html
+++ /dev/null
@@ -1,222 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-common.c File Reference</h1><code>#include "<a class="el" href="usb-private_8h-source.html">usb-private.h</a>"</code><br>
-<code>#include "<a class="el" href="usb-mouse_8h-source.html">usb-mouse.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-common_8c.html#a21">usbRead</a> (DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, int minButton, BLOCK block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-common_8c.html#a23">usbInit</a> (DevicePtr pDev, usbType type)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-common_8c.html#a24">usbOff</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-common_8c.html#a25">usbCreatePrivate</a> (DeviceIntPtr pDevice)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-common_8c.html#a26">usbDestroyPrivate</a> (pointer priv)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Routines that are common between #usb-keyboard.c, #usb-mouse.c, and #usb-other.c<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a25" doxytag="usb-common.c::usbCreatePrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer usbCreatePrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDevice</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a private structure for use within this file. </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="usb-common.c::usbDestroyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void usbDestroyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>priv</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a private structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="usb-common.c::usbInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void usbInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>usbType&nbsp;</td>
- <td class="mdname" nowrap> <em>type</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialized <em>pDev</em> as a <em>usbMouse</em>, <em>usbKeyboard</em>, or <em>usbOther</em> device. </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="usb-common.c::usbOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void usbOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off (i.e., stop taking input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="usb-common.c::usbRead" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void usbRead </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>MOTIONPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>motion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ENQUEUEPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>enqueue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>minButton</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>BLOCK&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Read an event from the <em>pDev</em> device. If the event is a motion event, enqueue it with the <em>motion</em> function. Otherwise, enqueue the event with the <em>enqueue</em> function. The <em>block</em> type is passed to the functions so that they may block SIGIO handling as appropriate to the caller of this function.<p>
-Since USB devices return EV_KEY events for buttons and keys, <em>minButton</em> is used to decide if a Button or Key event should be queued. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8h-source.html
deleted file mode 100644
index 422ce1ff7..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8h-source.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-common.h</h1><a href="usb-common_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00039 <span class="preprocessor">#ifndef _USB_COMMON_H_</span>
-00040 <span class="preprocessor"></span><span class="preprocessor">#define _USB_COMMON_H_</span>
-00041 <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keyword">enum</span> {
-00042 usbMouse,
-00043 usbKeyboard,
-00044 usbOther
-00045 } usbType;
-00046
-00047 <span class="keyword">extern</span> pointer <a class="code" href="usb-common_8c.html#a25">usbCreatePrivate</a>(DeviceIntPtr pDevice);
-00048 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-common_8c.html#a26">usbDestroyPrivate</a>(pointer priv);
-00049 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-common_8c.html#a21">usbRead</a>(DevicePtr pDev,
-00050 dmxMotionProcPtr motion,
-00051 dmxEnqueueProcPtr enqueue,
-00052 <span class="keywordtype">int</span> minButton,
-00053 DMXBlockType block);
-00054 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-common_8c.html#a23">usbInit</a>(DevicePtr pDev, usbType type);
-00055 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-common_8c.html#a24">usbOff</a>(DevicePtr pDev);
-00056 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8h.html
deleted file mode 100644
index 846695551..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-common_8h.html
+++ /dev/null
@@ -1,167 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-common.h File Reference</h1>
-<p>
-<a href="usb-common_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>pointer&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-common_8h.html#a3">usbCreatePrivate</a> (DeviceIntPtr pDevice)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-common_8h.html#a4">usbDestroyPrivate</a> (pointer priv)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-common_8h.html#a6">usbInit</a> (DevicePtr pDev, usbType type)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-common_8h.html#a7">usbOff</a> (DevicePtr pDev)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to common USB support. <dl compact><dt><b>See also:</b></dt><dd>usb-common.c <p>
-usb-mouse.c <p>
-usb-keyboard.c <p>
-usb-other.c</dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a3" doxytag="usb-common.h::usbCreatePrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> pointer usbCreatePrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DeviceIntPtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDevice</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create a private structure for use within this file. </td>
- </tr>
-</table>
-<a class="anchor" name="a4" doxytag="usb-common.h::usbDestroyPrivate" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void usbDestroyPrivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">pointer&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>priv</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Destroy a private structure. </td>
- </tr>
-</table>
-<a class="anchor" name="a6" doxytag="usb-common.h::usbInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void usbInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>usbType&nbsp;</td>
- <td class="mdname" nowrap> <em>type</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialized <em>pDev</em> as a <em>usbMouse</em>, <em>usbKeyboard</em>, or <em>usbOther</em> device. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="usb-common.h::usbOff" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void usbOff </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> off (i.e., stop taking input from <em>pDev</em>). </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8c.html
deleted file mode 100644
index 5da5a0b3b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8c.html
+++ /dev/null
@@ -1,231 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-keyboard.c File Reference</h1><code>#include "atKeynames.h"</code><br>
-<code>#include "<a class="el" href="usb-private_8h-source.html">usb-private.h</a>"</code><br>
-<code>#include "<a class="el" href="usb-keyboard_8h-source.html">usb-keyboard.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-keyboard_8c.html#a20">kbdUSBCtrl</a> (DevicePtr pDev, KeybdCtrl *ctrl)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-keyboard_8c.html#a21">kbdUSBInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-keyboard_8c.html#a23">kbdUSBRead</a> (DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-keyboard_8c.html#a24">kbdUSBOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-keyboard_8c.html#a26">kbdUSBGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This code implements a low-level device driver for a USB keyboard under Linux. The keymap description is derived from code by Thomas Roell, Orest Zborowski.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a20" doxytag="usb-keyboard.c::kbdUSBCtrl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdUSBCtrl </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeybdCtrl *&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set the LEDs. </td>
- </tr>
-</table>
-<a class="anchor" name="a26" doxytag="usb-keyboard.c::kbdUSBGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdUSBGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="usb-keyboard.c::kbdUSBInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdUSBInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize <em>pDev</em> using <a class="el" href="usb-common_8h.html#a6">usbInit</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a24" doxytag="usb-keyboard.c::kbdUSBOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int kbdUSBOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="usb-keyboard.c::kbdUSBRead" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdUSBRead </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>MOTIONPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>motion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ENQUEUEPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>enqueue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CHECKPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>checkspecial</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>BLOCK&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Read an event from the <em>pDev</em> device. If the event is a motion event, enqueue it with the <em>motion</em> function. Otherwise, check for special keys with the <em>checkspecial</em> function and enqueue the event with the <em>enqueue</em> function. The <em>block</em> type is passed to the functions so that they may block SIGIO handling as appropriate to the caller of this function. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8h-source.html
deleted file mode 100644
index 1f03b2483..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8h-source.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-keyboard.h</h1><a href="usb-keyboard_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _USB_KEYBOARD_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _USB_KEYBOARD_H_</span>
-00040 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-keyboard_8c.html#a21">kbdUSBInit</a>(DevicePtr pDev);
-00041 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-keyboard_8c.html#a26">kbdUSBGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00042 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="usb-keyboard_8c.html#a24">kbdUSBOn</a>(DevicePtr pDev);
-00043 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-keyboard_8c.html#a23">kbdUSBRead</a>(DevicePtr pDev,
-00044 dmxMotionProcPtr motion,
-00045 dmxEnqueueProcPtr enqueue,
-00046 dmxCheckSpecialProcPtr checkspecial,
-00047 DMXBlockType block);
-00048 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-keyboard_8c.html#a20">kbdUSBCtrl</a>(DevicePtr pDev, KeybdCtrl *ctrl);
-00049 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8h.html
deleted file mode 100644
index 23f48a73a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-keyboard_8h.html
+++ /dev/null
@@ -1,174 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-keyboard.h File Reference</h1>
-<p>
-<a href="usb-keyboard_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-keyboard_8h.html#a0">kbdUSBInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-keyboard_8h.html#a1">kbdUSBGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-keyboard_8h.html#a2">kbdUSBOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-keyboard_8h.html#a4">kbdUSBCtrl</a> (DevicePtr pDev, KeybdCtrl *ctrl)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to USB keyboard driver. <dl compact><dt><b>See also:</b></dt><dd>usb-keyboard.c <p>
-usb-common.c</dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a4" doxytag="usb-keyboard.h::kbdUSBCtrl" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdUSBCtrl </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>KeybdCtrl *&nbsp;</td>
- <td class="mdname" nowrap> <em>ctrl</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set the LEDs. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="usb-keyboard.h::kbdUSBGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdUSBGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a0" doxytag="usb-keyboard.h::kbdUSBInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void kbdUSBInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize <em>pDev</em> using <a class="el" href="usb-common_8h.html#a6">usbInit</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a2" doxytag="usb-keyboard.h::kbdUSBOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int kbdUSBOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8c.html
deleted file mode 100644
index ea3767d19..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8c.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-mouse.c File Reference</h1><code>#include "<a class="el" href="usb-private_8h-source.html">usb-private.h</a>"</code><br>
-<code>#include "<a class="el" href="usb-mouse_8h-source.html">usb-mouse.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-mouse_8c.html#a12">mouUSBRead</a> (DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-mouse_8c.html#a13">mouUSBInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-mouse_8c.html#a14">mouUSBOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-mouse_8c.html#a16">mouUSBGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This code implements a low-level device driver for a USB mouse.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a16" doxytag="usb-mouse.c::mouUSBGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void mouUSBGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="usb-mouse.c::mouUSBInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void mouUSBInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize <em>pDev</em> using <a class="el" href="usb-common_8h.html#a6">usbInit</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="usb-mouse.c::mouUSBOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int mouUSBOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="usb-mouse.c::mouUSBRead" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void mouUSBRead </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>MOTIONPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>motion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ENQUEUEPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>enqueue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CHECKPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>checkspecial</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>BLOCK&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Read the USB device using <a class="el" href="usb-common_8c.html#a21">usbRead</a>. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8h-source.html
deleted file mode 100644
index 12fbbcd52..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8h-source.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-mouse.h</h1><a href="usb-mouse_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _USB_MOU_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _USB_MOU_H_</span>
-00040 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-mouse_8c.html#a12">mouUSBRead</a>(DevicePtr pDev,
-00041 dmxMotionProcPtr motion,
-00042 dmxEnqueueProcPtr enqueue,
-00043 dmxCheckSpecialProcPtr checkspecial,
-00044 DMXBlockType block);
-00045 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-mouse_8c.html#a13">mouUSBInit</a>(DevicePtr pDev);
-00046 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-mouse_8c.html#a16">mouUSBGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00047 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="usb-mouse_8c.html#a14">mouUSBOn</a>(DevicePtr pDev);
-00048 <span class="keyword">extern</span> <span class="keywordtype">void</span> mouUSBCtrl(DevicePtr pDev, PtrCtrl *ctrl);
-00049 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8h.html
deleted file mode 100644
index ac03fe55b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-mouse_8h.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-mouse.h File Reference</h1>
-<p>
-<a href="usb-mouse_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-mouse_8h.html#a1">mouUSBInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-mouse_8h.html#a2">mouUSBGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-mouse_8h.html#a3">mouUSBOn</a> (DevicePtr pDev)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to USB mouse driver. <dl compact><dt><b>See also:</b></dt><dd>usb-mouse.c <p>
-usb-common.c</dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a2" doxytag="usb-mouse.h::mouUSBGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void mouUSBGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="usb-mouse.h::mouUSBInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void mouUSBInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize <em>pDev</em> using <a class="el" href="usb-common_8h.html#a6">usbInit</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="usb-mouse.h::mouUSBOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int mouUSBOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8c.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8c.html
deleted file mode 100644
index 284b4b79b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8c.html
+++ /dev/null
@@ -1,191 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-other.c File Reference</h1><code>#include "<a class="el" href="usb-private_8h-source.html">usb-private.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "<a class="el" href="usb-other_8h-source.html">usb-other.h</a>"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-other_8c.html#a13">othUSBRead</a> (DevicePtr pDev, MOTIONPROC motion, ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-other_8c.html#a14">othUSBInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-other_8c.html#a15">othUSBOn</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-other_8c.html#a16">othUSBGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This code implements a low-level device driver for a non-keyboard, non-mouse USB device (e.g., a joystick or gamepad).<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a16" doxytag="usb-other.c::othUSBGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void othUSBGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a14" doxytag="usb-other.c::othUSBInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void othUSBInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize <em>pDev</em> using <a class="el" href="usb-common_8h.html#a6">usbInit</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a15" doxytag="usb-other.c::othUSBOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int othUSBOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
-<a class="anchor" name="a13" doxytag="usb-other.c::othUSBRead" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void othUSBRead </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>MOTIONPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>motion</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>ENQUEUEPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>enqueue</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>CHECKPROC&nbsp;</td>
- <td class="mdname" nowrap> <em>checkspecial</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>BLOCK&nbsp;</td>
- <td class="mdname" nowrap> <em>block</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Read the USB device using <a class="el" href="usb-common_8c.html#a21">usbRead</a>. </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8h-source.html
deleted file mode 100644
index d5cd221ff..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8h-source.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-other.h</h1><a href="usb-other_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00038 <span class="preprocessor">#ifndef _USB_OTHER_H_</span>
-00039 <span class="preprocessor"></span><span class="preprocessor">#define _USB_OTHER_H_</span>
-00040 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-other_8c.html#a13">othUSBRead</a>(DevicePtr pDev,
-00041 dmxMotionProcPtr motion,
-00042 dmxEnqueueProcPtr enqueue,
-00043 dmxCheckSpecialProcPtr checkspecial,
-00044 DMXBlockType block);
-00045 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-other_8c.html#a14">othUSBInit</a>(DevicePtr pDev);
-00046 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="usb-other_8c.html#a16">othUSBGetInfo</a>(DevicePtr pDev, <a class="code" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info);
-00047 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="usb-other_8c.html#a15">othUSBOn</a>(DevicePtr pDev);
-00048 <span class="keyword">extern</span> <span class="keywordtype">void</span> othUSBCtrl(DevicePtr pDev, PtrCtrl *ctrl);
-00049 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8h.html
deleted file mode 100644
index d3c80ae02..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-other_8h.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-other.h File Reference</h1>
-<p>
-<a href="usb-other_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-other_8h.html#a1">othUSBInit</a> (DevicePtr pDev)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-other_8h.html#a2">othUSBGetInfo</a> (DevicePtr pDev, <a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a> info)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="usb-other_8h.html#a3">othUSBOn</a> (DevicePtr pDev)</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Interface to USB generic driver. <dl compact><dt><b>See also:</b></dt><dd>usb-other.c <p>
-usb-common.c</dd></dl>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a2" doxytag="usb-other.h::othUSBGetInfo" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void othUSBGetInfo </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pDev</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXLocalInitInfo.html">DMXLocalInitInfoPtr</a>&nbsp;</td>
- <td class="mdname" nowrap> <em>info</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the <em>info</em> structure with information needed to initialize <em>pDev</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a1" doxytag="usb-other.h::othUSBInit" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void othUSBInit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize <em>pDev</em> using <a class="el" href="usb-common_8h.html#a6">usbInit</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="a3" doxytag="usb-other.h::othUSBOn" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int othUSBOn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">DevicePtr&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>pDev</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn <em>pDev</em> on (i.e., take input from <em>pDev</em>). </td>
- </tr>
-</table>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-private_8h-source.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-private_8h-source.html
deleted file mode 100644
index 3baac9582..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-private_8h-source.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-private.h</h1><a href="usb-private_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* $XFree86$ */</span>
-00002 <span class="comment">/*</span>
-00003 <span class="comment"> * Copyright 2002 Red Hat Inc., Durham, North Carolina.</span>
-00004 <span class="comment"> *</span>
-00005 <span class="comment"> * All Rights Reserved.</span>
-00006 <span class="comment"> *</span>
-00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span>
-00008 <span class="comment"> * a copy of this software and associated documentation files (the</span>
-00009 <span class="comment"> * "Software"), to deal in the Software without restriction, including</span>
-00010 <span class="comment"> * without limitation on the rights to use, copy, modify, merge,</span>
-00011 <span class="comment"> * publish, distribute, sublicense, and/or sell copies of the Software,</span>
-00012 <span class="comment"> * and to permit persons to whom the Software is furnished to do so,</span>
-00013 <span class="comment"> * subject to the following conditions:</span>
-00014 <span class="comment"> *</span>
-00015 <span class="comment"> * The above copyright notice and this permission notice (including the</span>
-00016 <span class="comment"> * next paragraph) shall be included in all copies or substantial</span>
-00017 <span class="comment"> * portions of the Software.</span>
-00018 <span class="comment"> *</span>
-00019 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
-00020 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
-00021 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
-00022 <span class="comment"> * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS</span>
-00023 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
-00024 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
-00025 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
-00026 <span class="comment"> * SOFTWARE.</span>
-00027 <span class="comment"> */</span>
-00028
-00029 <span class="comment">/*</span>
-00030 <span class="comment"> * Authors:</span>
-00031 <span class="comment"> * Rickard E. (Rik) Faith &lt;faith@redhat.com&gt;</span>
-00032 <span class="comment"> *</span>
-00033 <span class="comment"> */</span>
-00034
-00041 <span class="preprocessor">#ifndef _USB_PRIVATE_H_</span>
-00042 <span class="preprocessor"></span><span class="preprocessor">#define _USB_PRIVATE_H_</span>
-00043 <span class="preprocessor"></span>
-00044 <span class="preprocessor">#include "<a class="code" href="dmxinputinit_8h.html">dmxinputinit.h</a>"</span>
-00045 <span class="preprocessor">#include "inputstr.h"</span>
-00046 <span class="preprocessor">#include "Xos.h"</span>
-00047 <span class="preprocessor">#include &lt;errno.h&gt;</span>
-00048 <span class="preprocessor">#include &lt;linux/input.h&gt;</span>
-00049 <span class="preprocessor">#include "<a class="code" href="usb-common_8h.html">usb-common.h</a>"</span>
-00050
-00051 <span class="comment">/* Support for force feedback was</span>
-00052 <span class="comment"> * introduced in Linxu 2.4.10 */</span>
-00053 <span class="preprocessor">#ifndef EV_MSC</span>
-00054 <span class="preprocessor"></span><span class="preprocessor">#define EV_MSC 0x04</span>
-00055 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00056 <span class="preprocessor"></span><span class="preprocessor">#ifndef EV_FF</span>
-00057 <span class="preprocessor"></span><span class="preprocessor">#define EV_FF 0x15</span>
-00058 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00059 <span class="preprocessor"></span><span class="preprocessor">#ifndef LED_SLEEP</span>
-00060 <span class="preprocessor"></span><span class="preprocessor">#define LED_SLEEP 0x05</span>
-00061 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00062 <span class="preprocessor"></span><span class="preprocessor">#ifndef LED_SUSPEND</span>
-00063 <span class="preprocessor"></span><span class="preprocessor">#define LED_SUSPEND 0x06</span>
-00064 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00065 <span class="preprocessor"></span><span class="preprocessor">#ifndef LED_MUTE</span>
-00066 <span class="preprocessor"></span><span class="preprocessor">#define LED_MUTE 0x07</span>
-00067 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00068 <span class="preprocessor"></span><span class="preprocessor">#ifndef LED_MISC</span>
-00069 <span class="preprocessor"></span><span class="preprocessor">#define LED_MISC 0x08</span>
-00070 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00071 <span class="preprocessor"></span><span class="preprocessor">#ifndef BTN_DEAD</span>
-00072 <span class="preprocessor"></span><span class="preprocessor">#define BTN_DEAD 0x12f</span>
-00073 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00074 <span class="preprocessor"></span><span class="preprocessor">#ifndef BTN_THUMBL</span>
-00075 <span class="preprocessor"></span><span class="preprocessor">#define BTN_THUMBL 0x13d</span>
-00076 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00077 <span class="preprocessor"></span><span class="preprocessor">#ifndef BTN_THUMBR</span>
-00078 <span class="preprocessor"></span><span class="preprocessor">#define BTN_THUMBR 0x13e</span>
-00079 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00080 <span class="preprocessor"></span><span class="preprocessor">#ifndef MSC_SERIAL</span>
-00081 <span class="preprocessor"></span><span class="preprocessor">#define MSC_SERIAL 0x00</span>
-00082 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00083 <span class="preprocessor"></span><span class="preprocessor">#ifndef MSC_MAX</span>
-00084 <span class="preprocessor"></span><span class="preprocessor">#define MSC_MAX 0x07</span>
-00085 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00086 <span class="preprocessor"></span>
-00087 <span class="comment">/* Support for older kernels. */</span>
-00088 <span class="preprocessor">#ifndef ABS_WHEEL</span>
-00089 <span class="preprocessor"></span><span class="preprocessor">#define ABS_WHEEL 0x08</span>
-00090 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00091 <span class="preprocessor"></span><span class="preprocessor">#ifndef ABS_GAS</span>
-00092 <span class="preprocessor"></span><span class="preprocessor">#define ABS_GAS 0x09</span>
-00093 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00094 <span class="preprocessor"></span><span class="preprocessor">#ifndef ABS_BRAKE</span>
-00095 <span class="preprocessor"></span><span class="preprocessor">#define ABS_BRAKE 0x0a</span>
-00096 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00097 <span class="preprocessor"></span>
-00098 <span class="preprocessor">#define NUM_STATE_ENTRIES (256/32)</span>
-00099 <span class="preprocessor"></span>
-00100 <span class="comment">/* Private area for USB devices. */</span>
-00101 <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__myPrivate.html">_myPrivate</a> {
-<a name="l00102"></a><a class="code" href="struct__myPrivate.html#o55">00102</a> DeviceIntPtr <a class="code" href="struct__myPrivate.html#o55">pDevice</a>;
-<a name="l00103"></a><a class="code" href="struct__myPrivate.html#o37">00103</a> <span class="keywordtype">int</span> <a class="code" href="struct__myPrivate.html#o37">fd</a>;
-<a name="l00104"></a><a class="code" href="struct__myPrivate.html#o56">00104</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="struct__myPrivate.html#o56">mask</a>[EV_MAX/8 + 1];
-<a name="l00105"></a><a class="code" href="struct__myPrivate.html#o59">00105</a> <span class="keywordtype">int</span> numRel, numAbs, <a class="code" href="struct__myPrivate.html#o59">numLeds</a>;
-<a name="l00106"></a><a class="code" href="struct__myPrivate.html#o60">00106</a> <span class="keywordtype">int</span> <a class="code" href="struct__myPrivate.html#o60">relmap</a>[DMX_MAX_AXES];
-<a name="l00107"></a><a class="code" href="struct__myPrivate.html#o61">00107</a> <span class="keywordtype">int</span> <a class="code" href="struct__myPrivate.html#o61">absmap</a>[DMX_MAX_AXES];
-<a name="l00109"></a><a class="code" href="struct__myPrivate.html#o43">00109</a> CARD32 <a class="code" href="struct__myPrivate.html#o43">kbdState</a>[NUM_STATE_ENTRIES];
-00110 DeviceIntPtr pKeyboard;
-<a name="l00112"></a><a class="code" href="struct__myPrivate.html#o49">00112</a> <span class="keywordtype">int</span> <a class="code" href="struct__myPrivate.html#o49">pitch</a>;
-<a name="l00113"></a><a class="code" href="struct__myPrivate.html#o50">00113</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__myPrivate.html#o50">duration</a>;
-00115 <span class="comment">/* FIXME: dmxInput is never initialized */</span>
-<a name="l00116"></a><a class="code" href="struct__myPrivate.html#o62">00116</a> <a class="code" href="struct__DMXInputInfo.html">DMXInputInfo</a> *<a class="code" href="struct__myPrivate.html#o62">dmxInput</a>;
-00117 } <a class="code" href="struct__myPrivate.html">myPrivate</a>;
-00118 <span class="preprocessor">#endif</span>
-</pre></div> <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-private_8h.html b/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-private_8h.html
deleted file mode 100644
index 360d88290..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/html/usb-private_8h.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>File Index</title>
- <link href="doxygen.css" rel="stylesheet" type="text/css">
- </head>
- <body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>usb-private.h File Reference</h1><code>#include "<a class="el" href="dmxinputinit_8h-source.html">dmxinputinit.h</a>"</code><br>
-<code>#include "inputstr.h"</code><br>
-<code>#include "Xos.h"</code><br>
-<code>#include &lt;errno.h&gt;</code><br>
-<code>#include &lt;linux/input.h&gt;</code><br>
-<code>#include "<a class="el" href="usb-common_8h-source.html">usb-common.h</a>"</code><br>
-
-<p>
-<a href="usb-private_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="struct__myPrivate.html">_myPrivate</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Private header file for USB support. This file provides Linux-specific include files and the definition of the private structure. <dl compact><dt><b>See also:</b></dt><dd>usb-common.c <p>
-usb-keyboard.c <p>
-usb-mouse.c <p>
-usb-other.c</dd></dl>
- <hr>
- <address>
- <small>
- Generated June 29, 2004 for <a
- href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
- <a href="http://www.doxygen.org/index.html">doxygen</a>
- 1.3.4.
- </small>
- </addres>
- </hr>
- </body>
-</html>
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/scaled.sgml b/nx-X11/programs/Xserver/hw/dmx/doc/scaled.sgml
deleted file mode 100644
index 6b8ee413f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/scaled.sgml
+++ /dev/null
@@ -1,707 +0,0 @@
-<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN">
- <article>
-
- <!-- Title information -->
- <title>Scaled Window Support in DMX</title>
- <author>Rickard E. Faith and Kevin E. Martin</author>
- <date>15 October 2003 (created 19 September 2003)</date>
- <abstract>
- This document investigates the possibility of adding scaled window
- support to the DMX X server, thereby allowing a window or some
- selected part of the logical DMX area to be displayed using a
- scaling factor. For example, this might allow the contents of a
- window to be magnified for easier viewing. In particular, scaling
- for the VNC client is explored. <it>Copyright 2003
- by Red Hat, Inc., Raleigh, North Carolina</it>
- </abstract>
-
- <!-- Table of contents -->
- <toc>
-
- <!-- Begin the document -->
- <sect>Introduction
- <sect1>DMX
- <p>
- The DMX X server (Xdmx) is a proxy server that is designed
- to allow X servers on multiple machines to be combined into
- a single multi-headed X server. Combined with Xinerama,
- these heads can appear as a single very high-resolution
- screen. Typical applications include the creation of a
- video wall with 16 1280x1024 displays arranged in a
- rectangle, for a total resolution of of 5120x4096.
- </p>
- </sect1>
- <sect1>Problem Statement
- <p>
- Applications displayed on a physically large video wall that
- provides high pixel-resolution may be difficult to see,
- especially if the application is designed for use on a
- typical desktop computer with a relatively small display
- located close to the human operator. The goal of this paper
- is to describe and discuss solutions to this problem.
- </p>
- <p>
- The original driving problem for this work is to provide
- scaling for the <tt>vncviewer</tt> application when
- displayed using DMX (VNC scaling is currently available only
- with the Windows client, and there is no plan to extend that
- capability to other clients). While this specific problem
- will be addressed in this paper, the general solution space
- will also be explored, since this may lead to a good
- solution not only for <tt>vncviewer</tt> but also for
- other applications.
- </p>
- </sect1>
- <sect1>Task
- <p>
- For reference, here is the original description of the task
- this paper addresses:
- <itemize>
- <item>Scaled window support (for VNC)
- <itemize>
- <item>
- Investigate possibility of implementing a "scaled
- window" extension:
- <itemize>
- <item>
- Add XCreateScaledWindow call that could be used
- in place of XCreateWindow
- </item>
- <item>
- All primitives drawn to scaled window would be
- scaled by appropriate (integral?) scaling factor
- </item>
- </itemize>
- </item>
- <item>
- Alternate approach: special case VNC support
- </item>
- </itemize>
- </item>
- </itemize>
- </p>
- </sect1>
- </sect>
-
- <sect>Previous Work
- <p>
- This section reviews relevant previous work.
- </p>
- <sect1>VNC
- <sect2>Scaling under VNC
- <p>
- When using the <tt>vncviewer</tt> program for Windows, it
- is possible to specify a scaling factor (as numerator and
- denominator). When scaling is in effect, the viewer
- software uses StretchBlt (instead of BitBlt) to display
- the pixels for the user. When this call is made, the
- viewer already has received all of the pixel information
- (at full unscaled resolution).
- </p>
- <p>
- The scaling in VNC is primitive. It does not conserve
- bandwidth, it does not treat textual information
- differently (i.e., by using a suitably scaled font), and
- it does not provide any anti-aliasing other than that
- provided by the underlying (Windows-only) system library.
- </p>
- </sect2>
- </sect1>
- <sect1>The X Video Extension
- <p>
- The X Video Extension is a widely-available extension to the
- X11 protocol that provides support for streaming video.
- Integral to this support is the ability to arbitrarily scale
- the output. In version 2.2 of the X Video specification,
- support for scaled still images was provided, using both
- shared memory and traditional transport. The API for this
- support uses calls that are quite similar to XCreateWindow,
- XPutImage, and XShmPutImage. Currently, most of the drivers
- implemented in XFree86 only support data in various YUV
- formats. However, several modern video adaptors support RGB
- as well.
- </p>
- <p>
- Note, though, that the target output for this scaling is an
- overlay plane -- so X Video provides functionality that is
- fundamentally different from that provided by the Windows
- StrechBlt call.
- </p>
- </sect1>
- </sect>
-
- <sect>Possible Solutions
- <p>
- This section briefly discusses possible solutions, including
- major advantages and disadvantages from both the
- implementation and the end-user programmer standpoint.
- </p>
- <sect1>VNC-like Scaling
- <sect2>Software Scaling
- <p>
- The <tt>vncviewer</tt> application could be modified to
- provide software scaling. This is not a general solution,
- but it does solve one of the goals of this work.
- </p>
- <p>
- A prototype of this solution was implemented and a patch
- against <tt>vnc-3.3.7-unixsrc</tt> is available in the
- <tt>dmx/external</tt> directory. Because of limited time
- available for this work, all of the edge cases were not
- considered and the solution works well mainly for integer
- scaling.
- </p>
- <p>
- Currently, <tt>vncviewer</tt> writes to the X display
- with XPutImage, XCopyArea, and XFillRectangle. All
- instances of these calls have to be aware of scaling
- and must round correctly. In the prototype solution,
- rounding is incorrect and can cause artifacts.
- </p>
- <p>
- A better solution would be to cache all updates to the
- desktop image in <tt>vncviewer</tt> and only send the
- damaged area to the X display with XPutImage. This would
- allow the damaged area to be computed so that rounding
- errors do not create artifacts. This method is probably
- similar to what is used in the Window client. (The whole
- VNC suite is being re-written in C++ and the forthcoming
- version 4 has not been evaluated.)
- </p>
- </sect2>
- <sect2>Scaling with the X Video Extension
- <p>
- The scaling in the Windows <tt>vncviewer</tt> application
- makes use of a scaled blit that is supplied by the
- underlying system library. Several video cards currently
- provide support for a scaled blit, and some X servers
- (including XFree86) expose this capability to applications
- via the XvPutImage interface of the X Video Extension.
- The capability exposed by XvPutImage results in the scaled
- image being drawn to an overlay plane. Most video cards
- also provide support for a scaled blit into the normal
- output planes, but this is not exposed via XvPutImage.
- </p>
- <p>
- The <tt>vncviewer</tt> program could be modified to use
- the X Video Extension to provide scaling under X11 that is
- similar to the scaling currently provided under Windows.
- Unfortunately, Xdmx does not currently export the X Video
- Extension, so this would not provide an immediate solution
- usable with DMX.
- </p>
- <p>
- A very early-stage proof-of-concept prototype was
- implemented and a preliminary patch against
- <tt>vnc-3.3.7-unixsrc</tt> is available in the
- <tt>dmx/external</tt> directory. This prototype was
- implemented to better understand the problems that must be
- solved to make this solution viable:
- <itemize>
- <item>
- As noted under the software scaling section above,
- <tt>vncviewer</tt> writes to the X display with
- several different calls. These calls write to the
- normal output planes and are compatible with
- XvPutImage, which writes to an overlay plane. To
- eliminate artifacts caused by this problem,
- <tt>vncviewer</tt> should be modified so that a cached
- copy of the desktop is available, either as a
- client-side image or a server-side off-screen pixmap,
- so that XvPutImage would be the only method for
- writing to the X display.
- </item>
- <item>
- <p>
- Although several modern graphics adaptors support
- hardware scaling using an RGB format (e.g., ATI
- Radeon, nVidia, etc.), XFree86 drivers typically
- only implement YUV formats. YUV generally compress
- the pixel information in some way. For example, two
- commonly implemented formats, YUY2 and UYVY provide
- intensity information for every RGB pixel, but only
- provide chroma and luminance information for pairs
- of horizontal pixels. Since VNC uses
- pixel-resolution for communicating updates on the
- wire, additional artifacts are introduced (because
- there may not be enough information from the wire to
- update a pair of pixels).
- <p>
- Further, the well-known problem with YUV encoding
- is even more evident when the image is a desktop
- instead of a movie. For example, consider a
- 1-pixel-wide vertical window border. If the border
- changes in color but not intensity (e.g., because a
- window manager uses color to indicate focus), there
- may or may not be a change in the YUY2 image,
- depending on the algorithm used for RGB to YUV
- conversion and on how the border pixel is ordered in
- the pair of pixels used by the algorithm.
- <p>
- Many of these artifacts could be eliminated if
- <tt>vncviewer</tt> cached a complete RGB image of
- the desktop, and only did the conversion to YUV for
- properly aligned areas of damage. The remaining artifacts
- could be eliminated if an RGB format was used with X
- Video (which may require the extension of existing
- XFree86 drivers to support RGB).
- </item>
- <item>
- Most modern video cards support exactly one overlay
- plane that is suitable for use with X Video.
- Therefore, only one application can use X Video at any
- given time. This is a severe limitation in a desktop
- environment.
- </item>
- </itemize>
- </p>
- <sect3>Implementing the X Video Extension for DMX
- <p>
- The user-level API for X Video is fairly simple, but the
- underlying support required for the full specification
- is large. However, since the API provides a method to
- query supported capabilities, a usable subset of X
- Video can be implemented that would support XvPutImage
- and little else. This would require support for the
- following:
- <itemize>
- <item>
- X Video Extension API calls, including the
- following:
- <itemize>
- <item>XvQueryExtension</item>
- <item>XvQueryAdaptors</item>
- <item>XvQueryPortAttributes</item>
- <item>XvFreeAdaptorInfo</item>
- <item>XvListImageFormats</item>
- <item>XvGrabPort</item>
- <item>XvCreateImage</item>
- <item>XvPutImage</item>
- <item>XvShmCreateImage</item>
- <item>XvShmPutImage</item>
- </itemize>
- </item>
- <item>
- Support for querying back-end X Video Extension
- capabilities.
- </item>
- <item>
- Support for sending the image to the back-ends.
- Because X Video requires sending full images, there
- may be a trade-off between bandwidth limitations and
- additional complexity to divide the image up such
- that is scales properly.
- </item>
- <item>
- Possible support for a software fall-back. For
- example, if all of the back-ends do not support the X
- Video Extension, software scaling can be implemented
- such that the image is sent to the back-end with
- XPutImage. This pathway would have poor
- performance.
- </item>
- </itemize>
- </p>
- </sect3>
- <sect3>Supporting RGB formats for the X Video Extension
- <p>
- Assuming an XFree86 driver already supports the X Video
- Extension, and assuming the target hardware supports an
- RGB format, then adding support for that format is
- relatively simple and straightforward.
- </p>
- </sect3>
- </sect2>
- <sect2>Scaling with an XPutImageScaled Extension
- <p>
- Instead of (or in addition to) implementing the X Video
- Extension in DMX, one obvious solution would be to
- implement a new extension that provides access to
- hardware-assisted scaled blits, similar to the StretchBlt
- call available under Windows. This call would scale RGB
- images and would not use the overlay plane (unlike the X
- Video Extension).
- </p>
- <p>
- This approach has many of the same advantages and
- disadvantages as the XCopyAreaScaled Extension, discussed
- in the next section. Discussion of XPutImageScaled is
- deferred in favor of XCopyAreaScaled for the following
- reasons:
- <itemize>
- <item>
- XPutImageScaled can be emulated with XCopyAreaScaled
- by first using XPutImage to copy the image to an
- off-screen pixmap, and then calling XCopyAreaScaled
- between that off-screen pixmap and the target
- drawable.
- </item>
- <item>
- Since XCopyAreaScaled would copy between two areas of
- on-screen or off-screen memory, it has additional uses
- and can be viewed as efficiently providing a superset
- of XPutImageScaled functionality.
- </item>
- </itemize>
- </p>
- </sect2>
- <sect2>Scaling with an XCopyAreaScaled Extension
- <p>
- As noted in the previous section, because XCopyAreaScaled
- provides a superset of the functionality provided by
- XPutImageScaled, we will consider this extension instead.
- </p>
- <p>
- First, XCopyAreaScaled would provide for RGB scaling
- between pixmaps (i.e., on-screen or off-screen areas of
- memory that reside on the video card). Unlike the X Video
- Extension, which writes into an overlay plane,
- XCopyAreaScaled would write into the non-overlay areas of
- the screen. Key points to consider are as follows:
- <itemize>
- <item>
- Because different planes are involved, the two scaling
- operations are usually implemented in hardware
- differently, so an XCopyAreaScaled extension could be
- added in a manner that would neither conflict with nor
- interact with the X Video extension in any way.
- </item>
- <item>
- The XCopyAreaScaled extension provides new
- functionality that the X Video Extension does not
- provide. Based on anecdotal feedback, we believe that
- many people outside the DMX and VNC communities would
- be excited about this extension.
- </item>
- <item>
- The main drawback to this extension is that it is new
- and needs to be implemented at the driver level in
- XFree86 for each video card to be supported. At the
- present time, it is more likely that the X Video
- Extension will be implemented for a particular piece
- hardware because the X Video extension has multimedia
- uses. However, over time, we would expect the
- XCopyAreaScaled extension to be implemented along with
- the X Video extension, especially if it becomes
- popular.
- </item>
- <item>
- Another drawback is that not all modern cards provide
- support for a simple scaled blit operation. However,
- these cards usually do provide a 3D pipeline which
- could be used to provide this functionality in a
- manner that is transparent to the client application
- that is using the XCopyAreaScaled extension. However,
- this implementation pathway would make this extension
- somewhat more difficult to implement on certain cards.
- </item>
- </itemize>
- </p>
- </sect2>
- <sect2>Scaling with OpenGL
- <p>
- Another general solution to the scaling problem is to use
- the texture scaling found in all 3D hardware. This
- ability is already exposed through OpenGL and can be
- exploited by clients without X server modification (i.e.,
- other than the ability to support OpenGL). An application
- using OpenGL would transmit the non-scaled image to the X
- server as a texture, and would then display a single
- non-transformed rect using that texture. This also works
- around the single overlay problem with the X Video
- Extension as well as the need to implement additional
- scaled primitive extensions.
- </p>
- <p>
- The downside is that most OpenGL implementations require
- power of 2 texture sizes and this can be very wasteful of
- memory if, for example, the application needs to scale a
- 1025x1025 image, which would require a 2048x2048 texture
- area (even a 640x480 image would require a 1024x512
- texture). Another downside is that some OpenGL
- implementations have a limited about of texture memory and
- cannot handle textures that are very large. For example,
- they might limit the texture size to 1024x1024.
- </p>
- </sect2>
- </sect1>
- <sect1>Application-transparent Scaling for DMX
- <sect2>Back-end Scaling Without Disconnect/Reconnect
- <p>
- VNC does scaling on the client side (in the
- <tt>vncviewer</tt> application). Implementing a similar
- solution for DMX would require support in the back-end X
- servers and, therefore, is not a general solution.
- </p>
- <p>
- XFree86 already implements some support for "scaling" that
- could be used with DMX: if, in the XF86Config file,
- multiple Modes are listed in the Display Subsection of the
- Screen Section, then pressing Ctrl-Alt-Plus and
- Ctrl-Alt-Minus can be used to iterate through the listed
- modes. The display dimensions will change to the
- dimensions in the Modes line, but the logical dimensions
- of the X server (i.e., the dimensions that Xdmx knows
- about) will not change.
- </p>
- <p>
- Further, the dimensions of the XFree86 display are under
- software control (via the XFree86-VidModeExtension), so
- the Xdmx server could change the screen dimensions on a
- per-display basis, thereby scaling the information on part
- of that display.
- </p>
- <p>
- However, this scaling appears to have limited use. For
- example, assume a 4 by 4 display wall consisting of 16
- 1280x1024 displays. If all of the back-end servers were
- simultaneously configured to display 640x480, the left
- hand corner of each display would be magnified, but the
- composite result would be unreadable. Magnifying one
- display at a time could be usable, but could have limited
- utility, since the result would still be no larger than a
- single display.
- </p>
- </sect2>
- <sect2>Back-end Scaling With Disconnect/Reconnect
- <p>
- Disconnect and reconnect features are not currently
- supported in DMX, but are scheduled to be implemented in
- the future. These features, combined with the
- XFree86-VidModeExtension Extension, would allow an
- application to do the following:
- <itemize>
- <item>
- Disconnect a specific back-end server (via the DMX
- Extension),
- </item>
- <item>
- reconfigure the XFree86 back-end server resolution,
- and
- </item>
- <item>
- reconnect the back-end server to DMX -- at a new
- origin with the new screen resolution.
- </item>
- </itemize>
- </p>
- <p>
- For example, consider a display wall consisting of 16
- 1280x1024 displays with a total resolution of 5120x4096.
- All of the screens could be disconnected, repositioned,
- and reconnected each at a resolution of 640x480. The
- total resolution of the display wall would be 2560x1920,
- allowing a view of a selected area approximately
- one-fourth of the size of the DMX display. This change
- would be completely application independent (except,
- perhaps, for a DMX-aware window manager). When work at
- the increased resolution was completed, the back-end
- servers could be disconnected, reconfigured, and
- reconnected for the original 5120x4096 view.
- </p>
- <p>
- Support for this type of scaling can be implemented in a
- DMX-aware X11 client assuming the DMX server support
- arbitrary disconnect and reconnect semantics. Because
- this application cannot be written before
- disconnect/reconnect is implemented, this solution will
- not be discussed further in this paper.
- </p>
- </sect2>
- <sect2>Server-side Scaling
- <p>
- In earlier versions of DMX, a frame buffer was maintained
- on the server side, and XPutImage was used to move the
- information from the server to the client (similar to some
- early VNC implementations). The use of a server-side
- frame buffer would allow the server to do scaling, but is
- not a recommended solution because of overall performance
- issues and server-side memory issues (i.e., the frame
- buffer would be very large for large display walls).
- </p>
- <p>
- Exploration of this path is not recommended.
- </p>
- </sect2>
- </sect1>
- <sect1>XCreateScaledWindow API
- <p>
- The implementation of X Video Extension in DMX, and the use
- of XvPutImage by applications requiring scaling requires
- significant changes in DMX Further, XvPutImage is,
- essentially a scaled blit, and it is only useful for
- applications which are already using (or can be modified to
- use) XPutImage. Therefore, a more general API will be
- discussed as another possibility.
- </p>
- <p>
- X applications typically create windows with the
- XCreateWindow call. A new extension could provide an
- XCreateScaledWindow call that could be used in place of the
- XCreateWindow call and be otherwise transparent to the
- application. This would allow applications, even those that
- do not depend on XPutImage, to take advantage of window
- scaling. In this section we describe how the call would
- work, what transparency it provides, and how to solve the
- potential problems that transparency creates.
- </p>
- <sect2>XCreateWindow
- <p>
- The XCreateWindow call takes width and height as
- parameters. An XCreateScaledWindow call could take all
- the same parameters, with the addition of a scaling factor.
- </p>
- </sect2>
- <sect2>XSetWindowAttributes
- <p>
- An X11 window has several attributes that would have to be
- scaled:
- <itemize>
- <item>Background and border pixmaps</item>
- <item>Border width</item>
- <item>Cursor</item>
- </itemize>
- </p>
- </sect2>
- <sect2>XGetWindowAttributes, XGetGeometry
- <p>
- For transparency, calls that query the window attributes
- should return unscaled information. This suggests that
- all unscaled pixmaps and window attributes should be
- cached.
- </p>
- <p>
- Unfortunately, a window manager requires the scaled
- geometry to properly decorate the window. The X server
- can probably determine which client is acting as the
- window manager (e.g., because that client will select
- events that are used exclusively by the window manager).
- However, other Scaled Window Extension aware clients may
- also need to determine the scaled geometry. Therefore, at
- least two additional extension calls should be
- implemented: XGetScaledWindowAttributes and
- XGetScaledGeometry.
- </p>
- </sect2>
- <sect2>Popup and Child window positions
- <p>
- Some applications may position popup and child windows
- based on an unscaled notion of the main window geometry.
- In this case, additional modifications to the client would
- be required.
- </p>
- </sect2>
- <sect2>Events
- <p>
- Most events (e.g., for mouse motion) return information
- about the coordinates at which the even occurred. These
- coordinates would have to be modified so that unscaled
- values were presented to the client.
- </p>
- </sect2>
- <sect2>Implementation
- <p>
- There are many implementation issues, some of which are
- similar to the issues involved in implementing the X Video
- Extension for DMX. The window contents must be scaled,
- either by performing all operations to a frame buffer and
- then writing the image to the display (perhaps using
- hardware scaling support), or by modifying all of the
- various drawing operations to perform scaling. Because of
- the complexity involved, the frame buffer option is
- recommended.
- </p>
- </sect2>
- </sect1>
- </sect>
-
- <sect>Conclusion and Recommendations
- <p>
- We recommend a three phase implementation strategy, based on
- how an application could be written to take advantage of
- scaling:
- <enum>
- <item>
- <p>
- The XCopyAreaScaled extension should be implemented, since
- this is the ideal solution for applications like VNC, and
- since making use of this extension will require minimal
- changes to applications that already use XPutImage or
- XCopyArea.
- <p>
- The initial implementation work would include the design
- of the X protocol extension, writing this up in the
- usual format for extension documentation, implementation
- of the protocol transport pieces in XFree86,
- implementation of a software fall-back in XFree86 and
- DMX, one example hardware implementation for XFree86,
- and implementation of support for this extension in DMX.
- <p>
- We suggest implementing the extension first on the ATI
- Radeon cards. However, since these cards do not provide
- a 2D scaled blit primitive, the implementation would
- have to make use of the 3D texture engine to emulate a
- scaled blit. This is recommended, since other modern
- graphics cards also do not provide a simple 2D scaled
- blit operation and an example of the more difficult
- implementation pathway would be helpful to others.
- </item>
- <item>
- <p>
- Until XCopyAreaScaled is widely supported, applications
- that require scaling will have to fall back to another
- scaling method. We suggest OpenGL as the first fall-back
- method because it is widely available and supported by
- DMX.
- <p>
- A project centered around OpenGL-based scaling would
- implement this scaling in VNC as an example. This work
- would include re-writing the <tt>vncviewer</tt>
- rendering engine to cache a master copy of the desktop
- image for all operations.
- </item>
- <item>
- <p>
- Since OpenGL is not implemented everywhere, and may not
- provide hardware-assisted performance in every
- implementation, an application that requires scaling
- should also fall back to using the X Video Extension.
- <p>
- This project would add support for the X Video Extension
- to DMX and would add support to VNC to take advantage of
- this extension without introducing artifacts. This
- would require modifying the <tt>vncviewer</tt> rendering
- engine to cache a master copy of the desktop image for
- all operations. This project should also add support
- for the RGB format to at least one XFree86 driver (e.g.,
- ATI Radeon).
- <p>
- The X Video Extension is one of the few popular
- extensions that DMX does not support. We recommend
- implementing the X Video Extension even if scaling is
- the specific goal of that work.
- </item>
- </enum>
- </p>
- <p>
- We do <bf>not</bf> recommend implementation of the
- XCreateScaledWindow extension because of the complexity
- involved. We do <bf>not</bf> recommend implementation of the
- XPutImageScaled extension because it requires the same amount
- of work as the XCopyAreaScaled extension, but provides less
- functionality. Further, server-side scaling with a large
- frame buffer is <bf>not</bf> recommended because of the
- performance implications.
- </p>
- <p>
- The back-end scaling, especially with disconnect/reconnect
- support should be explored in the future after
- disconnect/reconnect is implemented, but not at the present
- time.
- </p>
- </sect>
-
- </article>
- <!-- Local Variables: -->
- <!-- fill-column: 72 -->
- <!-- End: -->
diff --git a/nx-X11/programs/Xserver/hw/dmx/doc/scaled.txt b/nx-X11/programs/Xserver/hw/dmx/doc/scaled.txt
deleted file mode 100644
index d30105dd2..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/doc/scaled.txt
+++ /dev/null
@@ -1,579 +0,0 @@
- Scaled Window Support in DMX
- Rickard E. Faith and Kevin E. Martin
- 15 October 2003 (created 19 September 2003)
-
- This document investigates the possibility of adding scaled window
- support to the DMX X server, thereby allowing a window or some
- selected part of the logical DMX area to be displayed using a scaling
- factor. For example, this might allow the contents of a window to be
- magnified for easier viewing. In particular, scaling for the VNC
- client is explored. _C_o_p_y_r_i_g_h_t _2_0_0_3 _b_y _R_e_d _H_a_t_, _I_n_c_._, _R_a_l_e_i_g_h_, _N_o_r_t_h
- _C_a_r_o_l_i_n_a
-
- ______________________________________________________________________
-
- Table of Contents
-
-
- 1. Introduction
- 1.1 DMX
- 1.2 Problem Statement
- 1.3 Task
-
- 2. Previous Work
- 2.1 VNC
- 2.1.1 Scaling under VNC
- 2.2 The X Video Extension
-
- 3. Possible Solutions
- 3.1 VNC-like Scaling
- 3.1.1 Software Scaling
- 3.1.2 Scaling with the X Video Extension
- 3.1.2.1 Implementing the X Video Extension for DMX
- 3.1.2.2 Supporting RGB formats for the X Video Extension
- 3.1.3 Scaling with an XPutImageScaled Extension
- 3.1.4 Scaling with an XCopyAreaScaled Extension
- 3.1.5 Scaling with OpenGL
- 3.2 Application-transparent Scaling for DMX
- 3.2.1 Back-end Scaling Without Disconnect/Reconnect
- 3.2.2 Back-end Scaling With Disconnect/Reconnect
- 3.2.3 Server-side Scaling
- 3.3 XCreateScaledWindow API
- 3.3.1 XCreateWindow
- 3.3.2 XSetWindowAttributes
- 3.3.3 XGetWindowAttributes, XGetGeometry
- 3.3.4 Popup and Child window positions
- 3.3.5 Events
- 3.3.6 Implementation
-
- 4. Conclusion and Recommendations
-
-
- ______________________________________________________________________
-
- 11.. IInnttrroodduuccttiioonn
-
- 11..11.. DDMMXX
-
- The DMX X server (Xdmx) is a proxy server that is designed to allow X
- servers on multiple machines to be combined into a single multi-headed
- X server. Combined with Xinerama, these heads can appear as a single
- very high-resolution screen. Typical applications include the
- creation of a video wall with 16 1280x1024 displays arranged in a
- rectangle, for a total resolution of of 5120x4096.
-
-
-
- 11..22.. PPrroobblleemm SSttaatteemmeenntt
-
- Applications displayed on a physically large video wall that provides
- high pixel-resolution may be difficult to see, especially if the
- application is designed for use on a typical desktop computer with a
- relatively small display located close to the human operator. The
- goal of this paper is to describe and discuss solutions to this
- problem.
-
- The original driving problem for this work is to provide scaling for
- the vncviewer application when displayed using DMX (VNC scaling is
- currently available only with the Windows client, and there is no plan
- to extend that capability to other clients). While this specific
- problem will be addressed in this paper, the general solution space
- will also be explored, since this may lead to a good solution not only
- for vncviewer but also for other applications.
-
- 11..33.. TTaasskk
-
- For reference, here is the original description of the task this paper
- addresses:
-
- +o Scaled window support (for VNC)
-
- +o Investigate possibility of implementing a "scaled window"
- extension:
-
- +o Add XCreateScaledWindow call that could be used in place of
- XCreateWindow
-
- +o All primitives drawn to scaled window would be scaled by
- appropriate (integral?) scaling factor
-
- +o Alternate approach: special case VNC support
-
- 22.. PPrreevviioouuss WWoorrkk
-
- This section reviews relevant previous work.
-
- 22..11.. VVNNCC
-
- 22..11..11.. SSccaalliinngg uunnddeerr VVNNCC
-
- When using the vncviewer program for Windows, it is possible to
- specify a scaling factor (as numerator and denominator). When scaling
- is in effect, the viewer software uses StretchBlt (instead of BitBlt)
- to display the pixels for the user. When this call is made, the
- viewer already has received all of the pixel information (at full
- unscaled resolution).
-
- The scaling in VNC is primitive. It does not conserve bandwidth, it
- does not treat textual information differently (i.e., by using a
- suitably scaled font), and it does not provide any anti-aliasing other
- than that provided by the underlying (Windows-only) system library.
-
- 22..22.. TThhee XX VViiddeeoo EExxtteennssiioonn
-
- The X Video Extension is a widely-available extension to the X11
- protocol that provides support for streaming video. Integral to this
- support is the ability to arbitrarily scale the output. In version
- 2.2 of the X Video specification, support for scaled still images was
- provided, using both shared memory and traditional transport. The API
- for this support uses calls that are quite similar to XCreateWindow,
- XPutImage, and XShmPutImage. Currently, most of the drivers
- implemented in XFree86 only support data in various YUV formats.
- However, several modern video adaptors support RGB as well.
- Note, though, that the target output for this scaling is an overlay
- plane -- so X Video provides functionality that is fundamentally
- different from that provided by the Windows StrechBlt call.
-
- 33.. PPoossssiibbllee SSoolluuttiioonnss
-
- This section briefly discusses possible solutions, including major
- advantages and disadvantages from both the implementation and the end-
- user programmer standpoint.
-
- 33..11.. VVNNCC--lliikkee SSccaalliinngg
-
- 33..11..11.. SSooffttwwaarree SSccaalliinngg
-
- The vncviewer application could be modified to provide software
- scaling. This is not a general solution, but it does solve one of the
- goals of this work.
-
- A prototype of this solution was implemented and a patch against
- vnc-3.3.7-unixsrc is available in the dmx/external directory. Because
- of limited time available for this work, all of the edge cases were
- not considered and the solution works well mainly for integer scaling.
-
- Currently, vncviewer writes to the X display with XPutImage,
- XCopyArea, and XFillRectangle. All instances of these calls have to
- be aware of scaling and must round correctly. In the prototype
- solution, rounding is incorrect and can cause artifacts.
-
- A better solution would be to cache all updates to the desktop image
- in vncviewer and only send the damaged area to the X display with
- XPutImage. This would allow the damaged area to be computed so that
- rounding errors do not create artifacts. This method is probably
- similar to what is used in the Window client. (The whole VNC suite is
- being re-written in C++ and the forthcoming version 4 has not been
- evaluated.)
-
- 33..11..22.. SSccaalliinngg wwiitthh tthhee XX VViiddeeoo EExxtteennssiioonn
-
- The scaling in the Windows vncviewer application makes use of a scaled
- blit that is supplied by the underlying system library. Several video
- cards currently provide support for a scaled blit, and some X servers
- (including XFree86) expose this capability to applications via the
- XvPutImage interface of the X Video Extension. The capability exposed
- by XvPutImage results in the scaled image being drawn to an overlay
- plane. Most video cards also provide support for a scaled blit into
- the normal output planes, but this is not exposed via XvPutImage.
-
- The vncviewer program could be modified to use the X Video Extension
- to provide scaling under X11 that is similar to the scaling currently
- provided under Windows. Unfortunately, Xdmx does not currently export
- the X Video Extension, so this would not provide an immediate solution
- usable with DMX.
-
- A very early-stage proof-of-concept prototype was implemented and a
- preliminary patch against vnc-3.3.7-unixsrc is available in the
- dmx/external directory. This prototype was implemented to better
- understand the problems that must be solved to make this solution
- viable:
-
- +o As noted under the software scaling section above, vncviewer writes
- to the X display with several different calls. These calls write
- to the normal output planes and are compatible with XvPutImage,
- which writes to an overlay plane. To eliminate artifacts caused by
- this problem, vncviewer should be modified so that a cached copy of
- the desktop is available, either as a client-side image or a
- server-side off-screen pixmap, so that XvPutImage would be the only
- method for writing to the X display.
-
- +o
-
- Although several modern graphics adaptors support hardware scaling
- using an RGB format (e.g., ATI Radeon, nVidia, etc.), XFree86
- drivers typically only implement YUV formats. YUV generally
- compress the pixel information in some way. For example, two
- commonly implemented formats, YUY2 and UYVY provide intensity
- information for every RGB pixel, but only provide chroma and
- luminance information for pairs of horizontal pixels. Since VNC
- uses pixel-resolution for communicating updates on the wire,
- additional artifacts are introduced (because there may not be
- enough information from the wire to update a pair of pixels).
-
- Further, the well-known problem with YUV encoding is even more
- evident when the image is a desktop instead of a movie. For
- example, consider a 1-pixel-wide vertical window border. If the
- border changes in color but not intensity (e.g., because a window
- manager uses color to indicate focus), there may or may not be a
- change in the YUY2 image, depending on the algorithm used for RGB
- to YUV conversion and on how the border pixel is ordered in the
- pair of pixels used by the algorithm.
-
- Many of these artifacts could be eliminated if vncviewer cached a
- complete RGB image of the desktop, and only did the conversion to
- YUV for properly aligned areas of damage. The remaining artifacts
- could be eliminated if an RGB format was used with X Video (which
- may require the extension of existing XFree86 drivers to support
- RGB).
-
- +o Most modern video cards support exactly one overlay plane that is
- suitable for use with X Video. Therefore, only one application can
- use X Video at any given time. This is a severe limitation in a
- desktop environment.
-
- 33..11..22..11.. IImmpplleemmeennttiinngg tthhee XX VViiddeeoo EExxtteennssiioonn ffoorr DDMMXX
-
- The user-level API for X Video is fairly simple, but the underlying
- support required for the full specification is large. However, since
- the API provides a method to query supported capabilities, a usable
- subset of X Video can be implemented that would support XvPutImage and
- little else. This would require support for the following:
-
- +o X Video Extension API calls, including the following:
-
- +o XvQueryExtension
-
- +o XvQueryAdaptors
-
- +o XvQueryPortAttributes
-
- +o XvFreeAdaptorInfo
-
- +o XvListImageFormats
-
- +o XvGrabPort
-
- +o XvCreateImage
-
- +o XvPutImage
-
- +o XvShmCreateImage
-
- +o XvShmPutImage
-
- +o Support for querying back-end X Video Extension capabilities.
-
- +o Support for sending the image to the back-ends. Because X Video
- requires sending full images, there may be a trade-off between
- bandwidth limitations and additional complexity to divide the image
- up such that is scales properly.
-
- +o Possible support for a software fall-back. For example, if all of
- the back-ends do not support the X Video Extension, software
- scaling can be implemented such that the image is sent to the back-
- end with XPutImage. This pathway would have poor performance.
-
- 33..11..22..22.. SSuuppppoorrttiinngg RRGGBB ffoorrmmaattss ffoorr tthhee XX VViiddeeoo EExxtteennssiioonn
-
- Assuming an XFree86 driver already supports the X Video Extension, and
- assuming the target hardware supports an RGB format, then adding
- support for that format is relatively simple and straightforward.
-
- 33..11..33.. SSccaalliinngg wwiitthh aann XXPPuuttIImmaaggeeSSccaalleedd EExxtteennssiioonn
-
- Instead of (or in addition to) implementing the X Video Extension in
- DMX, one obvious solution would be to implement a new extension that
- provides access to hardware-assisted scaled blits, similar to the
- StretchBlt call available under Windows. This call would scale RGB
- images and would not use the overlay plane (unlike the X Video
- Extension).
-
- This approach has many of the same advantages and disadvantages as the
- XCopyAreaScaled Extension, discussed in the next section. Discussion
- of XPutImageScaled is deferred in favor of XCopyAreaScaled for the
- following reasons:
-
- +o XPutImageScaled can be emulated with XCopyAreaScaled by first using
- XPutImage to copy the image to an off-screen pixmap, and then
- calling XCopyAreaScaled between that off-screen pixmap and the
- target drawable.
-
- +o Since XCopyAreaScaled would copy between two areas of on-screen or
- off-screen memory, it has additional uses and can be viewed as
- efficiently providing a superset of XPutImageScaled functionality.
-
- 33..11..44.. SSccaalliinngg wwiitthh aann XXCCooppyyAArreeaaSSccaalleedd EExxtteennssiioonn
-
- As noted in the previous section, because XCopyAreaScaled provides a
- superset of the functionality provided by XPutImageScaled, we will
- consider this extension instead.
-
- First, XCopyAreaScaled would provide for RGB scaling between pixmaps
- (i.e., on-screen or off-screen areas of memory that reside on the
- video card). Unlike the X Video Extension, which writes into an
- overlay plane, XCopyAreaScaled would write into the non-overlay areas
- of the screen. Key points to consider are as follows:
-
- +o Because different planes are involved, the two scaling operations
- are usually implemented in hardware differently, so an
- XCopyAreaScaled extension could be added in a manner that would
- neither conflict with nor interact with the X Video extension in
- any way.
-
- +o The XCopyAreaScaled extension provides new functionality that the X
- Video Extension does not provide. Based on anecdotal feedback, we
- believe that many people outside the DMX and VNC communities would
- be excited about this extension.
-
- +o The main drawback to this extension is that it is new and needs to
- be implemented at the driver level in XFree86 for each video card
- to be supported. At the present time, it is more likely that the X
- Video Extension will be implemented for a particular piece hardware
- because the X Video extension has multimedia uses. However, over
- time, we would expect the XCopyAreaScaled extension to be
- implemented along with the X Video extension, especially if it
- becomes popular.
-
- +o Another drawback is that not all modern cards provide support for a
- simple scaled blit operation. However, these cards usually do
- provide a 3D pipeline which could be used to provide this
- functionality in a manner that is transparent to the client
- application that is using the XCopyAreaScaled extension. However,
- this implementation pathway would make this extension somewhat more
- difficult to implement on certain cards.
-
- 33..11..55.. SSccaalliinngg wwiitthh OOppeennGGLL
-
- Another general solution to the scaling problem is to use the texture
- scaling found in all 3D hardware. This ability is already exposed
- through OpenGL and can be exploited by clients without X server
- modification (i.e., other than the ability to support OpenGL). An
- application using OpenGL would transmit the non-scaled image to the X
- server as a texture, and would then display a single non-transformed
- rect using that texture. This also works around the single overlay
- problem with the X Video Extension as well as the need to implement
- additional scaled primitive extensions.
-
- The downside is that most OpenGL implementations require power of 2
- texture sizes and this can be very wasteful of memory if, for example,
- the application needs to scale a 1025x1025 image, which would require
- a 2048x2048 texture area (even a 640x480 image would require a
- 1024x512 texture). Another downside is that some OpenGL
- implementations have a limited about of texture memory and cannot
- handle textures that are very large. For example, they might limit
- the texture size to 1024x1024.
-
- 33..22.. AApppplliiccaattiioonn--ttrraannssppaarreenntt SSccaalliinngg ffoorr DDMMXX
-
- 33..22..11.. BBaacckk--eenndd SSccaalliinngg WWiitthhoouutt DDiissccoonnnneecctt//RReeccoonnnneecctt
-
- VNC does scaling on the client side (in the vncviewer application).
- Implementing a similar solution for DMX would require support in the
- back-end X servers and, therefore, is not a general solution.
-
- XFree86 already implements some support for "scaling" that could be
- used with DMX: if, in the XF86Config file, multiple Modes are listed
- in the Display Subsection of the Screen Section, then pressing Ctrl-
- Alt-Plus and Ctrl-Alt-Minus can be used to iterate through the listed
- modes. The display dimensions will change to the dimensions in the
- Modes line, but the logical dimensions of the X server (i.e., the
- dimensions that Xdmx knows about) will not change.
-
- Further, the dimensions of the XFree86 display are under software
- control (via the XFree86-VidModeExtension), so the Xdmx server could
- change the screen dimensions on a per-display basis, thereby scaling
- the information on part of that display.
-
- However, this scaling appears to have limited use. For example,
- assume a 4 by 4 display wall consisting of 16 1280x1024 displays. If
- all of the back-end servers were simultaneously configured to display
- 640x480, the left hand corner of each display would be magnified, but
- the composite result would be unreadable. Magnifying one display at a
- time could be usable, but could have limited utility, since the result
- would still be no larger than a single display.
-
-
- 33..22..22.. BBaacckk--eenndd SSccaalliinngg WWiitthh DDiissccoonnnneecctt//RReeccoonnnneecctt
-
- Disconnect and reconnect features are not currently supported in DMX,
- but are scheduled to be implemented in the future. These features,
- combined with the XFree86-VidModeExtension Extension, would allow an
- application to do the following:
-
- +o Disconnect a specific back-end server (via the DMX Extension),
-
- +o reconfigure the XFree86 back-end server resolution, and
-
- +o reconnect the back-end server to DMX -- at a new origin with the
- new screen resolution.
-
- For example, consider a display wall consisting of 16 1280x1024
- displays with a total resolution of 5120x4096. All of the screens
- could be disconnected, repositioned, and reconnected each at a
- resolution of 640x480. The total resolution of the display wall would
- be 2560x1920, allowing a view of a selected area approximately one-
- fourth of the size of the DMX display. This change would be
- completely application independent (except, perhaps, for a DMX-aware
- window manager). When work at the increased resolution was completed,
- the back-end servers could be disconnected, reconfigured, and
- reconnected for the original 5120x4096 view.
-
- Support for this type of scaling can be implemented in a DMX-aware X11
- client assuming the DMX server support arbitrary disconnect and
- reconnect semantics. Because this application cannot be written
- before disconnect/reconnect is implemented, this solution will not be
- discussed further in this paper.
-
- 33..22..33.. SSeerrvveerr--ssiiddee SSccaalliinngg
-
- In earlier versions of DMX, a frame buffer was maintained on the
- server side, and XPutImage was used to move the information from the
- server to the client (similar to some early VNC implementations). The
- use of a server-side frame buffer would allow the server to do
- scaling, but is not a recommended solution because of overall
- performance issues and server-side memory issues (i.e., the frame
- buffer would be very large for large display walls).
-
- Exploration of this path is not recommended.
-
- 33..33.. XXCCrreeaatteeSSccaalleeddWWiinnddooww AAPPII
-
- The implementation of X Video Extension in DMX, and the use of
- XvPutImage by applications requiring scaling requires significant
- changes in DMX Further, XvPutImage is, essentially a scaled blit, and
- it is only useful for applications which are already using (or can be
- modified to use) XPutImage. Therefore, a more general API will be
- discussed as another possibility.
-
- X applications typically create windows with the XCreateWindow call.
- A new extension could provide an XCreateScaledWindow call that could
- be used in place of the XCreateWindow call and be otherwise
- transparent to the application. This would allow applications, even
- those that do not depend on XPutImage, to take advantage of window
- scaling. In this section we describe how the call would work, what
- transparency it provides, and how to solve the potential problems that
- transparency creates.
-
- 33..33..11.. XXCCrreeaatteeWWiinnddooww
-
- The XCreateWindow call takes width and height as parameters. An
- XCreateScaledWindow call could take all the same parameters, with the
- addition of a scaling factor.
- 33..33..22.. XXSSeettWWiinnddoowwAAttttrriibbuutteess
-
- An X11 window has several attributes that would have to be scaled:
-
- +o Background and border pixmaps
-
- +o Border width
-
- +o Cursor
-
- 33..33..33.. XXGGeettWWiinnddoowwAAttttrriibbuutteess,, XXGGeettGGeeoommeettrryy
-
- For transparency, calls that query the window attributes should return
- unscaled information. This suggests that all unscaled pixmaps and
- window attributes should be cached.
-
- Unfortunately, a window manager requires the scaled geometry to
- properly decorate the window. The X server can probably determine
- which client is acting as the window manager (e.g., because that
- client will select events that are used exclusively by the window
- manager). However, other Scaled Window Extension aware clients may
- also need to determine the scaled geometry. Therefore, at least two
- additional extension calls should be implemented:
- XGetScaledWindowAttributes and XGetScaledGeometry.
-
- 33..33..44.. PPooppuupp aanndd CChhiilldd wwiinnddooww ppoossiittiioonnss
-
- Some applications may position popup and child windows based on an
- unscaled notion of the main window geometry. In this case, additional
- modifications to the client would be required.
-
- 33..33..55.. EEvveennttss
-
- Most events (e.g., for mouse motion) return information about the
- coordinates at which the even occurred. These coordinates would have
- to be modified so that unscaled values were presented to the client.
-
- 33..33..66.. IImmpplleemmeennttaattiioonn
-
- There are many implementation issues, some of which are similar to the
- issues involved in implementing the X Video Extension for DMX. The
- window contents must be scaled, either by performing all operations to
- a frame buffer and then writing the image to the display (perhaps
- using hardware scaling support), or by modifying all of the various
- drawing operations to perform scaling. Because of the complexity
- involved, the frame buffer option is recommended.
-
- 44.. CCoonncclluussiioonn aanndd RReeccoommmmeennddaattiioonnss
-
- We recommend a three phase implementation strategy, based on how an
- application could be written to take advantage of scaling:
-
- 1.
-
- The XCopyAreaScaled extension should be implemented, since this is
- the ideal solution for applications like VNC, and since making use
- of this extension will require minimal changes to applications that
- already use XPutImage or XCopyArea.
-
- The initial implementation work would include the design of the X
- protocol extension, writing this up in the usual format for
- extension documentation, implementation of the protocol transport
- pieces in XFree86, implementation of a software fall-back in
- XFree86 and DMX, one example hardware implementation for XFree86,
- and implementation of support for this extension in DMX.
-
- We suggest implementing the extension first on the ATI Radeon
- cards. However, since these cards do not provide a 2D scaled blit
- primitive, the implementation would have to make use of the 3D
- texture engine to emulate a scaled blit. This is recommended,
- since other modern graphics cards also do not provide a simple 2D
- scaled blit operation and an example of the more difficult
- implementation pathway would be helpful to others.
-
- 2.
-
- Until XCopyAreaScaled is widely supported, applications that
- require scaling will have to fall back to another scaling method.
- We suggest OpenGL as the first fall-back method because it is
- widely available and supported by DMX.
-
- A project centered around OpenGL-based scaling would implement this
- scaling in VNC as an example. This work would include re-writing
- the vncviewer rendering engine to cache a master copy of the
- desktop image for all operations.
-
- 3.
-
- Since OpenGL is not implemented everywhere, and may not provide
- hardware-assisted performance in every implementation, an
- application that requires scaling should also fall back to using
- the X Video Extension.
-
- This project would add support for the X Video Extension to DMX and
- would add support to VNC to take advantage of this extension
- without introducing artifacts. This would require modifying the
- vncviewer rendering engine to cache a master copy of the desktop
- image for all operations. This project should also add support for
- the RGB format to at least one XFree86 driver (e.g., ATI Radeon).
-
- The X Video Extension is one of the few popular extensions that DMX
- does not support. We recommend implementing the X Video Extension
- even if scaling is the specific goal of that work.
-
- We do nnoott recommend implementation of the XCreateScaledWindow
- extension because of the complexity involved. We do nnoott recommend
- implementation of the XPutImageScaled extension because it requires
- the same amount of work as the XCopyAreaScaled extension, but provides
- less functionality. Further, server-side scaling with a large frame
- buffer is nnoott recommended because of the performance implications.
-
- The back-end scaling, especially with disconnect/reconnect support
- should be explored in the future after disconnect/reconnect is
- implemented, but not at the present time.
-
-
-
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/Imakefile b/nx-X11/programs/Xserver/hw/dmx/examples/Imakefile
deleted file mode 100644
index aa899917f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/Imakefile
+++ /dev/null
@@ -1,56 +0,0 @@
-XCOMM $XFree86$
-
-#include <Server.tmpl>
-
-SRCS = xdmx.c xinput.c dmxwininfo.c xtest.c evi.c res.c dmxreconfig.c xled.c \
- xbell.c dmxresize.c
-OBJS = xdmx.o xinput.o dmxwininfo.o xtest.o evi.o res.o dmxreconfig.o xled.o \
- xbell.o dmxresize.o
-INCLUDES = -I$(EXTINCSRC)
-
-all:: $(OBJS)
-
-NormalProgramTarget(xdmx,xdmx.o,NullParameter,$(DMXLIB) $(XLIB),NullParameter)
-AllTarget(ProgramTargetName(xdmx))
-
-NormalProgramTarget(xtest,xtest.o,NullParameter,$(XTESTLIB) $(XLIB),NullParameter)
-AllTarget(ProgramTargetName(xtest))
-
-NormalProgramTarget(evi,evi.o,NullParameter,$(XLIB),NullParameter)
-AllTarget(ProgramTargetName(evi))
-
-NormalProgramTarget(xled,xled.o,NullParameter,$(XLIB),NullParameter)
-AllTarget(ProgramTargetName(xled))
-
-NormalProgramTarget(xbell,xbell.o,NullParameter,$(XLIB),NullParameter)
-AllTarget(ProgramTargetName(xbell))
-
-#if BuildXResLibrary
-NormalProgramTarget(res,res.o,NullParameter,$(XRESLIB) $(XLIB),NullParameter)
-AllTarget(ProgramTargetName(res))
-#endif
-
-NormalProgramTarget(dmxwininfo,dmxwininfo.o,NullParameter,$(DMXLIB) $(XMULIB) $(XLIB),NullParameter)
-AllTarget(ProgramTargetName(dmxwininfo))
-
-XILIBS=$(XILIB) $(XLIB)
-NormalProgramTarget(xinput,xinput.o,NullParameter,$(DMXLIB) $(XILIBS),NullParameter)
-AllTarget(ProgramTargetName(xinput))
-
-NormalProgramTarget(dmxreconfig,dmxreconfig.o,NullParameter,$(DMXLIB) $(XLIB),NullParameter)
-AllTarget(ProgramTargetName(dmxreconfig))
-
-NormalProgramTarget(dmxresize,dmxresize.o,NullParameter,$(DMXLIB) $(XLIB),NullParameter)
-AllTarget(ProgramTargetName(dmxresize))
-
-NormalProgramTarget(dmxaddscreen,dmxaddscreen.o,NullParameter,$(DMXLIB) $(XLIB),NullParameter)
-AllTarget(ProgramTargetName(dmxaddscreen))
-
-NormalProgramTarget(dmxrmscreen,dmxrmscreen.o,NullParameter,$(DMXLIB) $(XLIB),NullParameter)
-AllTarget(ProgramTargetName(dmxrmscreen))
-
-NormalProgramTarget(dmxaddinput,dmxaddinput.o,NullParameter,$(DMXLIB) $(XLIB),NullParameter)
-AllTarget(ProgramTargetName(dmxaddinput))
-
-NormalProgramTarget(dmxrminput,dmxrminput.o,NullParameter,$(DMXLIB) $(XLIB),NullParameter)
-AllTarget(ProgramTargetName(dmxrminput))
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/dmxaddinput.c b/nx-X11/programs/Xserver/hw/dmx/examples/dmxaddinput.c
deleted file mode 100644
index c391385e9..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/dmxaddinput.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2003,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:
- *
- * 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 <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/extensions/dmxext.h>
-
-int main(int argc, char **argv)
-{
- Display *display = NULL;
- int event_base;
- int error_base;
- int major_version, minor_version, patch_version;
- int id = -1;
- int status;
-
- if (argc != 5) {
- printf("Usage: %s display c|b name|screen isCore\n", argv[0]);
- return -1;
- }
-
- if (!(display = XOpenDisplay(argv[1]))) {
- printf("Cannot open display %s\n", argv[1]);
- return -1;
- }
-
- if (!DMXQueryExtension(display, &event_base, &error_base)) {
- printf("DMX extension not present\n");
- return -1;
- }
- printf("DMX extension present: event_base = %d, error_base = %d\n",
- event_base, error_base);
-
- if (!DMXQueryVersion(display,
- &major_version, &minor_version, &patch_version)) {
- printf("Could not get extension version\n");
- return -1;
- }
- printf("Extension version: %d.%d patch %d\n",
- major_version, minor_version, patch_version);
-
- if (argv[2][0] == 'c') {
- status = DMXAddConsoleInput(display, argv[3], atoi(argv[4]), &id);
- } else {
- status = DMXAddBackendInput(display, atoi(argv[3]), atoi(argv[4]),&id);
- }
-
- printf("status = %d, id = %d\n", status, id);
-
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/dmxaddscreen.c b/nx-X11/programs/Xserver/hw/dmx/examples/dmxaddscreen.c
deleted file mode 100644
index 5fa008c21..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/dmxaddscreen.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2003-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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/extensions/dmxext.h>
-
-int main(int argc, char **argv)
-{
- Display *display = NULL;
- int event_base;
- int error_base;
- int major_version, minor_version, patch_version;
- int screenNum;
- DMXScreenAttributes attr;
- unsigned int mask = 0;
-
- if (argc != 4 && argc != 14) {
- printf("Usage: %s display screenNum displayName [scrnx scrny scrnw scrnh rootx rooty rootw rooth originx originy]\n", argv[0]);
- return -1;
- }
-
- if (!(display = XOpenDisplay(argv[1]))) {
- printf("Cannot open display %s\n", argv[1]);
- return -1;
- }
-
- screenNum = strtol(argv[2], NULL, 0);
- if (argc == 14) {
- mask |= (DMXScreenWindowXoffset |
- DMXScreenWindowYoffset |
- DMXScreenWindowWidth |
- DMXScreenWindowHeight);
- attr.screenWindowXoffset = strtol(argv[4], NULL, 0);
- attr.screenWindowYoffset = strtol(argv[5], NULL, 0);
- attr.screenWindowWidth = strtol(argv[6], NULL, 0);
- attr.screenWindowHeight = strtol(argv[7], NULL, 0);
-
- mask |= (DMXRootWindowXoffset |
- DMXRootWindowYoffset |
- DMXRootWindowWidth |
- DMXRootWindowHeight);
- attr.rootWindowXoffset = strtol(argv[8], NULL, 0);
- attr.rootWindowYoffset = strtol(argv[9], NULL, 0);
- attr.rootWindowWidth = strtol(argv[10], NULL, 0);
- attr.rootWindowHeight = strtol(argv[11], NULL, 0);
-
- mask |= DMXRootWindowXorigin | DMXRootWindowYorigin;
- attr.rootWindowXorigin = strtol(argv[12], NULL, 0);
- attr.rootWindowYorigin = strtol(argv[13], NULL, 0);
- }
-
- if (!DMXQueryExtension(display, &event_base, &error_base)) {
- printf("DMX extension not present\n");
- return -1;
- }
- printf("DMX extension present: event_base = %d, error_base = %d\n",
- event_base, error_base);
-
- if (!DMXQueryVersion(display,
- &major_version, &minor_version, &patch_version)) {
- printf("Could not get extension version\n");
- return -1;
- }
- printf("Extension version: %d.%d patch %d\n",
- major_version, minor_version, patch_version);
-
- if (!DMXAddScreen(display, argv[3], mask, &attr, &screenNum))
- printf("Failed to add %s as screen #%d\n", argv[2], screenNum);
-
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/dmxreconfig.c b/nx-X11/programs/Xserver/hw/dmx/examples/dmxreconfig.c
deleted file mode 100644
index efcead86e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/dmxreconfig.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/extensions/dmxext.h>
-
-int main(int argc, char **argv)
-{
- Display *display = NULL;
- int event_base;
- int error_base;
- int major_version, minor_version, patch_version;
- int screen;
- DMXScreenAttributes attr;
- unsigned int mask = 0;
- int status;
- int errorScreen;
-
- if (argc != 13) {
- fprintf(stderr, "Usage: %s display screen scrnx scrny scrnw scrnh rootx rooty rootw rooth originx originy\n", argv[0]);
- return -1;
- }
-
- if (!(display = XOpenDisplay(argv[1]))) {
- fprintf(stderr, "Cannot open display %s\n", argv[1]);
- return -1;
- }
-
- screen = strtol(argv[2], NULL, 0);
-
- mask |= (DMXScreenWindowXoffset |
- DMXScreenWindowYoffset |
- DMXScreenWindowWidth |
- DMXScreenWindowHeight);
- attr.screenWindowXoffset = strtol(argv[3], NULL, 0);
- attr.screenWindowYoffset = strtol(argv[4], NULL, 0);
- attr.screenWindowWidth = strtol(argv[5], NULL, 0);
- attr.screenWindowHeight = strtol(argv[6], NULL, 0);
-
- mask |= (DMXRootWindowXoffset |
- DMXRootWindowYoffset |
- DMXRootWindowWidth |
- DMXRootWindowHeight);
- attr.rootWindowXoffset = strtol(argv[7], NULL, 0);
- attr.rootWindowYoffset = strtol(argv[8], NULL, 0);
- attr.rootWindowWidth = strtol(argv[9], NULL, 0);
- attr.rootWindowHeight = strtol(argv[10], NULL, 0);
-
- mask |= DMXRootWindowXorigin | DMXRootWindowYorigin;
- attr.rootWindowXorigin = strtol(argv[11], NULL, 0);
- attr.rootWindowYorigin = strtol(argv[12], NULL, 0);
-
- if (!DMXQueryExtension(display, &event_base, &error_base)) {
- fprintf(stderr, "DMX extension not present\n");
- return -1;
- }
- printf("DMX extension present: event_base = %d, error_base = %d\n",
- event_base, error_base);
-
- if (!DMXQueryVersion(display,
- &major_version, &minor_version, &patch_version)) {
- fprintf(stderr, "Could not get extension version\n");
- return -1;
- }
- printf("Extension version: %d.%d patch %d\n",
- major_version, minor_version, patch_version);
-
- if (major_version == 1 && minor_version < 3) {
- fprintf(stderr,
- "ReconfigureScreen not supported in this extension version\n");
- return -1;
- }
-
- if (major_version < 2) {
- fprintf(stderr,
- "ChangeScreensAttributes not supported in this extension "
- "version\n");
- return -1;
- }
-
- if (!(status = DMXChangeScreensAttributes(display, 1, &screen, 1, &mask,
- &attr, &errorScreen))) {
- printf("Reconfigured screen #%d to "
- "%dx%d%s%d%s%d %dx%d%s%d%s%d %s%d%s%d\n",
- screen,
- attr.screenWindowWidth,
- attr.screenWindowHeight,
- (attr.screenWindowXoffset < 0 ? "" : "+"),
- attr.screenWindowXoffset,
- (attr.screenWindowYoffset < 0 ? "" : "+"),
- attr.screenWindowYoffset,
- attr.rootWindowWidth,
- attr.rootWindowHeight,
- (attr.rootWindowXoffset < 0 ? "" : "+"),
- attr.rootWindowXoffset,
- (attr.rootWindowYoffset < 0 ? "" : "+"),
- attr.rootWindowYoffset,
- (attr.rootWindowXorigin < 0 ? "" : "+"),
- attr.rootWindowXorigin,
- (attr.rootWindowYorigin < 0 ? "" : "+"),
- attr.rootWindowYorigin);
- } else {
- fprintf(stderr,
- "Could not set screen #%d to "
- "%dx%d%s%d%s%d %dx%d%s%d%s%d %s%d%s%d\n"
- "[status = %d, errorScreen=%d]\n",
- screen,
- attr.screenWindowWidth,
- attr.screenWindowHeight,
- (attr.screenWindowXoffset < 0 ? "" : "+"),
- attr.screenWindowXoffset,
- (attr.screenWindowYoffset < 0 ? "" : "+"),
- attr.screenWindowYoffset,
- attr.rootWindowWidth,
- attr.rootWindowHeight,
- (attr.rootWindowXoffset < 0 ? "" : "+"),
- attr.rootWindowXoffset,
- (attr.rootWindowYoffset < 0 ? "" : "+"),
- attr.rootWindowYoffset,
- (attr.rootWindowXorigin < 0 ? "" : "+"),
- attr.rootWindowXorigin,
- (attr.rootWindowYorigin < 0 ? "" : "+"),
- attr.rootWindowYorigin,
- status, errorScreen);
- return -1;
- }
-
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/dmxresize.c b/nx-X11/programs/Xserver/hw/dmx/examples/dmxresize.c
deleted file mode 100644
index f6fadf70c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/dmxresize.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 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 <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/extensions/dmxext.h>
-
-int main(int argc, char **argv)
-{
- Display *display = NULL;
- int event_base;
- int error_base;
- int major_version, minor_version, patch_version;
- int width, height, shiftX, shiftY, status;
- DMXDesktopAttributes attr;
- unsigned int mask;
-
- if (argc != 6) {
- printf("Usage: %s display width height shiftX shiftY\n", argv[0]);
- return -1;
- }
-
- if (!(display = XOpenDisplay(argv[1]))) {
- printf("Cannot open display %s\n", argv[1]);
- return -1;
- }
-
- width = strtol(argv[2], NULL, 0);
- height = strtol(argv[3], NULL, 0);
- shiftX = strtol(argv[4], NULL, 0);
- shiftY = strtol(argv[5], NULL, 0);
-
- if (!DMXQueryExtension(display, &event_base, &error_base)) {
- printf("DMX extension not present\n");
- return -1;
- }
- printf("DMX extension present: event_base = %d, error_base = %d\n",
- event_base, error_base);
-
- if (!DMXQueryVersion(display,
- &major_version, &minor_version, &patch_version)) {
- printf("Could not get extension version\n");
- return -1;
- }
- printf("Extension version: %d.%d patch %d\n",
- major_version, minor_version, patch_version);
-
- mask = (DMXDesktopWidth |
- DMXDesktopHeight |
- DMXDesktopShiftX |
- DMXDesktopShiftY);
- attr.width = width;
- attr.height = height;
- attr.shiftX = shiftX;
- attr.shiftY = shiftY;
- switch (status = DMXChangeDesktopAttributes(display, mask, &attr)) {
- case DmxBadXinerama:
- printf("status = %d (No Xinerama)\n", status);
- break;
- case DmxBadValue:
- printf("status = %d (Bad Value)\n", status);
- break;
- case Success:
- printf("status = %d (Success)\n", status);
- break;
- default:
- printf("status = %d (UNKNOWN ERROR *****)\n", status);
- break;
- }
-
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/dmxrminput.c b/nx-X11/programs/Xserver/hw/dmx/examples/dmxrminput.c
deleted file mode 100644
index 3860cc9c6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/dmxrminput.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2003,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:
- *
- * 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 <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/extensions/dmxext.h>
-
-int main(int argc, char **argv)
-{
- Display *display = NULL;
- int event_base;
- int error_base;
- int major_version, minor_version, patch_version;
- int status;
-
- if (argc != 3) {
- printf("Usage: %s display id\n", argv[0]);
- return -1;
- }
-
- if (!(display = XOpenDisplay(argv[1]))) {
- printf("Cannot open display %s\n", argv[1]);
- return -1;
- }
-
- if (!DMXQueryExtension(display, &event_base, &error_base)) {
- printf("DMX extension not present\n");
- return -1;
- }
- printf("DMX extension present: event_base = %d, error_base = %d\n",
- event_base, error_base);
-
- if (!DMXQueryVersion(display,
- &major_version, &minor_version, &patch_version)) {
- printf("Could not get extension version\n");
- return -1;
- }
- printf("Extension version: %d.%d patch %d\n",
- major_version, minor_version, patch_version);
-
- status = DMXRemoveInput(display, atoi(argv[2]));
-
- printf("status = %d\n", status);
-
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/dmxrmscreen.c b/nx-X11/programs/Xserver/hw/dmx/examples/dmxrmscreen.c
deleted file mode 100644
index ab3653d24..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/dmxrmscreen.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2003-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:
- *
- * 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:
- * Kevin E. Martin <kem@redhat.com>
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/extensions/dmxext.h>
-
-int main(int argc, char **argv)
-{
- Display *display = NULL;
- int event_base;
- int error_base;
- int major_version, minor_version, patch_version;
- int screenNum;
-
- if (argc != 3) {
- printf("Usage: %s display screenNum\n", argv[0]);
- return -1;
- }
-
- if (!(display = XOpenDisplay(argv[1]))) {
- printf("Cannot open display %s\n", argv[1]);
- return -1;
- }
-
- screenNum = strtol(argv[2], NULL, 0);
-
- if (!DMXQueryExtension(display, &event_base, &error_base)) {
- printf("DMX extension not present\n");
- return -1;
- }
- printf("DMX extension present: event_base = %d, error_base = %d\n",
- event_base, error_base);
-
- if (!DMXQueryVersion(display,
- &major_version, &minor_version, &patch_version)) {
- printf("Could not get extension version\n");
- return -1;
- }
- printf("Extension version: %d.%d patch %d\n",
- major_version, minor_version, patch_version);
-
- if (!DMXRemoveScreen(display, screenNum))
- printf("Failed to remove screen #%d\n", screenNum);
-
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/dmxwininfo.c b/nx-X11/programs/Xserver/hw/dmx/examples/dmxwininfo.c
deleted file mode 100644
index bbf7f7446..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/dmxwininfo.c
+++ /dev/null
@@ -1,497 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright (c) 2003 by the XFree86 Project, Inc.
- *
- * 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.
- */
-
-/*
- * Create a window and use the DMX extension to query the window's
- * back-end properties. Display the info inside the window itself.
- *
- * Brian Paul
- * 23 Jan 2003
- */
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/Xmu/SysUtil.h>
-#include <X11/extensions/dmxext.h>
-
-static const char *FontName = "fixed";
-
-
-static void
-EventLoop(Display *dpy, Window win, GC gc)
-{
- XEvent ev;
- while (1) {
- XNextEvent( dpy, &ev );
- switch (ev.type) {
- case ReparentNotify:
- break;
- case MapNotify:
- break;
- case ConfigureNotify:
- case Expose:
- {
- int numScreens, count, i;
- DMXWindowAttributes *winInfo;
- int x, y;
- const char *msg = "DMX window info:";
-
- DMXGetScreenCount(dpy, &numScreens);
- winInfo
- = (DMXWindowAttributes *)
- malloc(numScreens * sizeof(DMXWindowAttributes));
- assert(winInfo);
- if (!DMXGetWindowAttributes(dpy, win, &count,
- numScreens, winInfo)) {
- printf("Could not get window information for 0x%08lx\n",
- (long unsigned)win);
- }
- x = y = 50;
- XClearWindow(dpy, win);
- XDrawString(dpy, win, gc, x, y, msg, strlen(msg));
- y += 20;
- for (i = 0; i < count; i++) {
- char str[500];
- XmuSnprintf(str, sizeof(str),
- "screen %d: pos: %dx%d+%d+%d visible: %dx%d+%d+%d",
- winInfo[i].screen,
- winInfo[i].pos.width, winInfo[i].pos.height,
- winInfo[i].pos.x, winInfo[i].pos.y,
- winInfo[i].vis.width, winInfo[i].vis.height,
- winInfo[i].vis.x, winInfo[i].vis.y);
- XDrawString(dpy, win, gc, x, y, str, strlen(str));
- y += 20;
- }
- free(winInfo);
- }
- break;
- default:
- printf("Event type 0x%x\n", ev.type);
- }
- }
-}
-
-int
-main(int argc, char *argv[])
-{
- const char *displayName = NULL;
- Display *dpy;
- int event_base, error_base;
- int scr, n;
- long vinfoMask, attrMask;
- XVisualInfo vinfoTemp, *visInfo;
- Visual *vis;
- Window win, root;
- XSetWindowAttributes attr;
- XFontStruct *fontInfo;
- GC gc;
-
- if (argc > 1) {
- displayName = argv[1];
- }
-
- dpy = XOpenDisplay(displayName);
- if (!dpy) {
- fprintf(stderr, "Unable to open display %s\n", displayName);
- return -1;
- }
-
- if (!DMXQueryExtension(dpy, &event_base, &error_base)) {
- fprintf(stderr, "DMX extension not available on this display.\n");
- return -1;
- }
-
- scr = DefaultScreen(dpy);
- root = RootWindow(dpy, scr);
- vis = DefaultVisual(dpy, scr);
-
- vinfoMask = VisualIDMask;
- vinfoTemp.visualid = vis->visualid;
- visInfo = XGetVisualInfo(dpy, vinfoMask, &vinfoTemp, &n);
- if (!visInfo || n != 1) {
- fprintf(stderr, "Unable to get visual!\n");
- XCloseDisplay(dpy);
- return -1;
- }
-
- attr.background_pixel = 0;
- attr.border_pixel = 0;
- attr.colormap = XCreateColormap(dpy, root, visInfo->visual, AllocNone);
- attr.event_mask = StructureNotifyMask | ExposureMask;
- attrMask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask;
-
- win = XCreateWindow(dpy, root,
- 500, 500, 600, 400, /* x, y, w, h */
- 0, /* border_width */
- visInfo->depth, InputOutput,
- visInfo->visual, attrMask, &attr);
-
-
- if (!win) {
- fprintf(stderr, "Unable to create window!\n");
- XCloseDisplay(dpy);
- return -1;
- }
-
- fontInfo = XLoadQueryFont(dpy, FontName);
- if (!fontInfo) {
- fprintf(stderr, "Error: font %s not found\n", FontName);
- exit(0);
- }
-
- gc = XCreateGC(dpy, win, 0, NULL);
- XSetBackground(dpy, gc, BlackPixel(dpy, scr));
- XSetForeground(dpy, gc, WhitePixel(dpy, scr));
- XSetFont(dpy, gc, fontInfo->fid);
-
- XMapWindow(dpy, win);
-
- EventLoop(dpy, win, gc);
-
- XDestroyWindow(dpy, win);
- XCloseDisplay(dpy);
- return 0;
-}
-
-#if 00
-
-static void make_window( char *title, int color_flag )
-{
- int x = 10, y = 10, width = 400, height = 300;
- Display *dpy;
- int scr;
- Window root, win;
- Colormap cmap;
- XColor xcolor;
- int attr_flags;
- XVisualInfo *visinfo;
- XSetWindowAttributes attr;
- XTextProperty tp;
- XSizeHints sh;
- XEvent e;
- XMesaContext context;
- XMesaVisual visual;
- XMesaBuffer buffer;
-
-
- /*
- * Do the usual X things to make a window.
- */
-
- dpy = XOpenDisplay(NULL);
- if (!dpy) {
- printf("Couldn't open default display!\n");
- exit(1);
- }
-
- scr = DefaultScreen(dpy);
- root = RootWindow(dpy, scr);
-
- /* alloc visinfo struct */
- visinfo = (XVisualInfo *) malloc( sizeof(XVisualInfo) );
-
- /* Get a visual and colormap */
- if (color_flag) {
- /* Open TrueColor window */
-
-/*
- if (!XMatchVisualInfo( dpy, scr, 24, TrueColor, visinfo )) {
- printf("Couldn't get 24-bit TrueColor visual!\n");
- exit(1);
- }
-*/
- if (!XMatchVisualInfo( dpy, scr, 8, PseudoColor, visinfo )) {
- printf("Couldn't get 8-bit PseudoColor visual!\n");
- exit(1);
- }
-
- cmap = XCreateColormap( dpy, root, visinfo->visual, AllocNone );
- Black = Red = Green = Blue = 0;
- }
- else {
- /* Open color index window */
-
- if (!XMatchVisualInfo( dpy, scr, 8, PseudoColor, visinfo )) {
- printf("Couldn't get 8-bit PseudoColor visual\n");
- exit(1);
- }
-
- cmap = XCreateColormap( dpy, root, visinfo->visual, AllocNone );
-
- /* Allocate colors */
- xcolor.red = 0x0;
- xcolor.green = 0x0;
- xcolor.blue = 0x0;
- xcolor.flags = DoRed | DoGreen | DoBlue;
- if (!XAllocColor( dpy, cmap, &xcolor )) {
- printf("Couldn't allocate black!\n");
- exit(1);
- }
- Black = xcolor.pixel;
-
- xcolor.red = 0xffff;
- xcolor.green = 0x0;
- xcolor.blue = 0x0;
- xcolor.flags = DoRed | DoGreen | DoBlue;
- if (!XAllocColor( dpy, cmap, &xcolor )) {
- printf("Couldn't allocate red!\n");
- exit(1);
- }
- Red = xcolor.pixel;
-
- xcolor.red = 0x0;
- xcolor.green = 0xffff;
- xcolor.blue = 0x0;
- xcolor.flags = DoRed | DoGreen | DoBlue;
- if (!XAllocColor( dpy, cmap, &xcolor )) {
- printf("Couldn't allocate green!\n");
- exit(1);
- }
- Green = xcolor.pixel;
-
- xcolor.red = 0x0;
- xcolor.green = 0x0;
- xcolor.blue = 0xffff;
- xcolor.flags = DoRed | DoGreen | DoBlue;
- if (!XAllocColor( dpy, cmap, &xcolor )) {
- printf("Couldn't allocate blue!\n");
- exit(1);
- }
- Blue = xcolor.pixel;
- }
-
- /* set window attributes */
- attr.colormap = cmap;
- attr.event_mask = ExposureMask | StructureNotifyMask;
- attr.border_pixel = BlackPixel( dpy, scr );
- attr.background_pixel = BlackPixel( dpy, scr );
- attr_flags = CWColormap | CWEventMask | CWBorderPixel | CWBackPixel;
-
- /* Create the window */
- win = XCreateWindow( dpy, root, x,y, width, height, 0,
- visinfo->depth, InputOutput,
- visinfo->visual,
- attr_flags, &attr);
- if (!win) {
- printf("Couldn't open window!\n");
- exit(1);
- }
-
- XStringListToTextProperty(&title, 1, &tp);
- sh.flags = USPosition | USSize;
- XSetWMProperties(dpy, win, &tp, &tp, 0, 0, &sh, 0, 0);
- XMapWindow(dpy, win);
- while (1) {
- XNextEvent( dpy, &e );
- if (e.type == MapNotify && e.xmap.window == win) {
- break;
- }
- }
-
-
- /*
- * Now do the special Mesa/Xlib stuff!
- */
-
- visual = XMesaCreateVisual( dpy, visinfo,
- (GLboolean) color_flag,
- GL_FALSE, /* alpha_flag */
- GL_FALSE, /* db_flag */
- GL_FALSE, /* stereo flag */
- GL_FALSE, /* ximage_flag */
- 0, /* depth size */
- 0, /* stencil size */
- 0,0,0,0, /* accum_size */
- 0, /* num samples */
- 0, /* level */
- 0 /* caveat */
- );
- if (!visual) {
- printf("Couldn't create Mesa/X visual!\n");
- exit(1);
- }
-
- /* Create a Mesa rendering context */
- context = XMesaCreateContext( visual,
- NULL /* share_list */
- );
- if (!context) {
- printf("Couldn't create Mesa/X context!\n");
- exit(1);
- }
-
- buffer = XMesaCreateWindowBuffer( visual, win );
- if (!buffer) {
- printf("Couldn't create Mesa/X buffer!\n");
- exit(1);
- }
-
-
- XMesaMakeCurrent( context, buffer );
-
- /* Ready to render! */
-}
-
-
-
-static void draw_cube( void )
-{
- /* X faces */
- glIndexi( Red );
- glColor3f( 1.0, 0.0, 0.0 );
- glBegin( GL_POLYGON );
- glVertex3f( 1.0, 1.0, 1.0 );
- glVertex3f( 1.0, -1.0, 1.0 );
- glVertex3f( 1.0, -1.0, -1.0 );
- glVertex3f( 1.0, 1.0, -1.0 );
- glEnd();
-
- glBegin( GL_POLYGON );
- glVertex3f( -1.0, 1.0, 1.0 );
- glVertex3f( -1.0, 1.0, -1.0 );
- glVertex3f( -1.0, -1.0, -1.0 );
- glVertex3f( -1.0, -1.0, 1.0 );
- glEnd();
-
- /* Y faces */
- glIndexi( Green );
- glColor3f( 0.0, 1.0, 0.0 );
- glBegin( GL_POLYGON );
- glVertex3f( 1.0, 1.0, 1.0 );
- glVertex3f( 1.0, 1.0, -1.0 );
- glVertex3f( -1.0, 1.0, -1.0 );
- glVertex3f( -1.0, 1.0, 1.0 );
- glEnd();
-
- glBegin( GL_POLYGON );
- glVertex3f( 1.0, -1.0, 1.0 );
- glVertex3f( -1.0, -1.0, 1.0 );
- glVertex3f( -1.0, -1.0, -1.0 );
- glVertex3f( 1.0, -1.0, -1.0 );
- glEnd();
-
- /* Z faces */
- glIndexi( Blue );
- glColor3f( 0.0, 0.0, 1.0 );
- glBegin( GL_POLYGON );
- glVertex3f( 1.0, 1.0, 1.0 );
- glVertex3f( -1.0, 1.0, 1.0 );
- glVertex3f( -1.0, -1.0, 1.0 );
- glVertex3f( 1.0, -1.0, 1.0 );
- glEnd();
-
- glBegin( GL_POLYGON );
- glVertex3f( 1.0, 1.0, -1.0 );
- glVertex3f( 1.0,-1.0, -1.0 );
- glVertex3f( -1.0,-1.0, -1.0 );
- glVertex3f( -1.0, 1.0, -1.0 );
- glEnd();
-}
-
-
-
-
-static void display_loop( void )
-{
- GLfloat xrot, yrot, zrot;
-
- xrot = yrot = zrot = 0.0;
-
- glClearColor( 0.0, 0.0, 0.0, 0.0 );
- glClearIndex( Black );
-
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glFrustum( -1.0, 1.0, -1.0, 1.0, 1.0, 10.0 );
- glTranslatef( 0.0, 0.0, -5.0 );
-
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
-
- glCullFace( GL_BACK );
- glEnable( GL_CULL_FACE );
-
- glShadeModel( GL_FLAT );
-
- while (1) {
- glClear( GL_COLOR_BUFFER_BIT );
- glPushMatrix();
- glRotatef( xrot, 1.0, 0.0, 0.0 );
- glRotatef( yrot, 0.0, 1.0, 0.0 );
- glRotatef( zrot, 0.0, 0.0, 1.0 );
-
- draw_cube();
-
- glPopMatrix();
- glFinish();
-
- xrot += 10.0;
- yrot += 7.0;
- zrot -= 3.0;
- }
-
-}
-
-
-
-
-int main( int argc, char *argv[] )
-{
- int mode = 0;
-
- if (argc >= 2)
- {
- if (strcmp(argv[1],"-ci")==0)
- mode = 0;
- else if (strcmp(argv[1],"-rgb")==0)
- mode = 1;
- else
- {
- printf("Bad flag: %s\n", argv[1]);
- printf("Specify -ci for 8-bit color index or -rgb for RGB mode\n");
- exit(1);
- }
- }
- else
- {
- printf("Specify -ci for 8-bit color index or -rgb for RGB mode\n");
- printf("Defaulting to 8-bit color index\n");
- }
-
- make_window( argv[0], mode );
-
- display_loop();
- return 0;
-}
-
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/ev.c b/nx-X11/programs/Xserver/hw/dmx/examples/ev.c
deleted file mode 100644
index 04c47eb11..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/ev.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/* $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.
- *
- * This is a simple test program that reads from /dev/input/event*,
- * decoding events into a human readable form.
- */
-
-/*
- * Authors:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <time.h>
-#include <linux/input.h>
-
-struct input_event event;
-
-int main(int argc, char **argv)
-{
- char name[64]; /* RATS: Use ok, but could be better */
- char buf[256] = { 0, }; /* RATS: Use ok */
- unsigned char mask[EV_MAX/8 + 1]; /* RATS: Use ok */
- int version;
- int fd = 0;
- int rc;
- int i, j;
- char *tmp;
-
-#define test_bit(bit) (mask[(bit)/8] & (1 << ((bit)%8)))
-
- for (i = 0; i < 32; i++) {
- sprintf(name, "/dev/input/event%d", i);
- if ((fd = open(name, O_RDONLY, 0)) >= 0) {
- ioctl(fd, EVIOCGVERSION, &version);
- ioctl(fd, EVIOCGNAME(sizeof(buf)), buf);
- ioctl(fd, EVIOCGBIT(0, sizeof(mask)), mask);
- printf("%s\n", name);
- printf(" evdev version: %d.%d.%d\n",
- version >> 16, (version >> 8) & 0xff, version & 0xff);
- printf(" name: %s\n", buf);
- printf(" features:");
- for (j = 0; j < EV_MAX; j++) {
- if (test_bit(j)) {
- const char *type = "unknown";
- switch(j) {
- case EV_KEY: type = "keys/buttons"; break;
- case EV_REL: type = "relative"; break;
- case EV_ABS: type = "absolute"; break;
- case EV_MSC: type = "reserved"; break;
- case EV_LED: type = "leds"; break;
- case EV_SND: type = "sound"; break;
- case EV_REP: type = "repeat"; break;
- case EV_FF: type = "feedback"; break;
- }
- printf(" %s", type);
- }
- }
- printf("\n");
- close(fd);
- }
- }
-
- if (argc > 1) {
- sprintf(name, "/dev/input/event%d", atoi(argv[1]));
- if ((fd = open(name, O_RDWR, 0)) >= 0) {
- printf("%s: open, fd = %d\n", name, fd);
- for (i = 0; i < LED_MAX; i++) {
- event.time.tv_sec = time(0);
- event.time.tv_usec = 0;
- event.type = EV_LED;
- event.code = i;
- event.value = 0;
- write(fd, &event, sizeof(event));
- }
-
- while ((rc = read(fd, &event, sizeof(event))) > 0) {
- printf("%-24.24s.%06lu type 0x%04x; code 0x%04x;"
- " value 0x%08x; ",
- ctime(&event.time.tv_sec),
- event.time.tv_usec,
- event.type, event.code, event.value);
- switch (event.type) {
- case EV_KEY:
- if (event.code > BTN_MISC) {
- printf("Button %d %s",
- event.code & 0xff,
- event.value ? "press" : "release");
- } else {
- printf("Key %d (0x%x) %s",
- event.code & 0xff,
- event.code & 0xff,
- event.value ? "press" : "release");
- }
- break;
- case EV_REL:
- switch (event.code) {
- case REL_X: tmp = "X"; break;
- case REL_Y: tmp = "Y"; break;
- case REL_HWHEEL: tmp = "HWHEEL"; break;
- case REL_DIAL: tmp = "DIAL"; break;
- case REL_WHEEL: tmp = "WHEEL"; break;
- case REL_MISC: tmp = "MISC"; break;
- default: tmp = "UNKNOWN"; break;
- }
- printf("Relative %s %d", tmp, event.value);
- break;
- case EV_ABS:
- switch (event.code) {
- case ABS_X: tmp = "X"; break;
- case ABS_Y: tmp = "Y"; break;
- case ABS_Z: tmp = "Z"; break;
- case ABS_RX: tmp = "RX"; break;
- case ABS_RY: tmp = "RY"; break;
- case ABS_RZ: tmp = "RZ"; break;
- case ABS_THROTTLE: tmp = "THROTTLE"; break;
- case ABS_RUDDER: tmp = "RUDDER"; break;
- case ABS_WHEEL: tmp = "WHEEL"; break;
- case ABS_GAS: tmp = "GAS"; break;
- case ABS_BRAKE: tmp = "BRAKE"; break;
- case ABS_HAT0X: tmp = "HAT0X"; break;
- case ABS_HAT0Y: tmp = "HAT0Y"; break;
- case ABS_HAT1X: tmp = "HAT1X"; break;
- case ABS_HAT1Y: tmp = "HAT1Y"; break;
- case ABS_HAT2X: tmp = "HAT2X"; break;
- case ABS_HAT2Y: tmp = "HAT2Y"; break;
- case ABS_HAT3X: tmp = "HAT3X"; break;
- case ABS_HAT3Y: tmp = "HAT3Y"; break;
- case ABS_PRESSURE: tmp = "PRESSURE"; break;
- case ABS_DISTANCE: tmp = "DISTANCE"; break;
- case ABS_TILT_X: tmp = "TILT_X"; break;
- case ABS_TILT_Y: tmp = "TILT_Y"; break;
- case ABS_MISC: tmp = "MISC"; break;
- default: tmp = "UNKNOWN"; break;
- }
- printf("Absolute %s %d", tmp, event.value);
- break;
- case EV_MSC: printf("Misc"); break;
- case EV_LED: printf("Led"); break;
- case EV_SND: printf("Snd"); break;
- case EV_REP: printf("Rep"); break;
- case EV_FF: printf("FF"); break;
- break;
- }
- printf("\n");
- }
- printf("rc = %d, errno = %d (%s)\n", rc, errno, strerror(errno));
- close(fd);
- }
- }
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/evi.c b/nx-X11/programs/Xserver/hw/dmx/examples/evi.c
deleted file mode 100644
index 14af95d5a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/evi.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 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 <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/extensions/XEVI.h>
-
-int main(int argc, char **argv)
-{
- Display *display = NULL;
- int major_version, minor_version;
- ExtendedVisualInfo *evi;
- int count;
- int i;
-
- if (argc == 2) {
- if (!(display = XOpenDisplay(argv[1]))) {
- printf("Cannot open display %s\n", argv[1]);
- return -1;
- }
- } else {
- printf("Usage: %s display\n", argv[0]);
- return -1;
- }
-
- if (!display && !(display = XOpenDisplay(NULL))) {
- printf("Cannot open default display\n");
- return -1;
- }
-
- if (!XeviQueryVersion(display, &major_version, &minor_version)) {
- printf("EVI extension not present\n");
- return -1;
- }
- printf("EVI Extension version: %d.%d\n", major_version, minor_version);
-
- XeviGetVisualInfo(display, NULL, 0, &evi, &count);
-
- for (i = 0; i < count; i++) {
- printf("%02d vid=0x%02lx screen=%d level=%d type=%u value=%u"
- " min=%u max=%u conflicts=%u\n",
- i,
- (long unsigned)evi[i].core_visual_id,
- evi[i].screen,
- evi[i].level,
- evi[i].transparency_type,
- evi[i].transparency_value,
- evi[i].min_hw_colormaps,
- evi[i].max_hw_colormaps,
- evi[i].num_colormap_conflicts);
- }
-
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/res.c b/nx-X11/programs/Xserver/hw/dmx/examples/res.c
deleted file mode 100644
index 3af5541fa..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/res.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 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 <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/extensions/XRes.h>
-
-int main(int argc, char **argv)
-{
- Display *display = NULL;
- int major_version, minor_version;
- int event, error;
- int count;
- int i;
- XResClient *clients;
-
- if (argc == 2) {
- if (!(display = XOpenDisplay(argv[1]))) {
- printf("Cannot open display %s\n", argv[1]);
- return -1;
- }
- } else {
- printf("Usage: %s display\n", argv[0]);
- return -1;
- }
-
- if (!display && !(display = XOpenDisplay(NULL))) {
- printf("Cannot open default display\n");
- return -1;
- }
-
- if (!XResQueryExtension(display, &event, &error)) {
- printf("X-Resource extension not present\n");
- return -1;
- }
- printf("X-Resource extension present: event=%d error=%d\n", event, error);
-
- if (!XResQueryVersion(display, &major_version, &minor_version)) {
- printf("XResQueryVersion call failed\n");
- return -1;
- }
- printf("X-Resource extension version: %d.%d\n",
- major_version, minor_version);
-
- XResQueryClients(display, &count, &clients);
-
- printf("%d clients:\n", count);
- for (i = 0; i < count; i++) {
- int c, j;
- XResType *types;
-
- XResQueryClientResources(display, clients[i].resource_base,
- &c, &types);
- printf(" %3d: base = 0x%lx, mask = 0x%lx, %d resource types:\n",
- i, (long unsigned)clients[i].resource_base,
- (long unsigned)clients[i].resource_mask, c);
- for (j = 0; j < c; j++) {
- char *name = XGetAtomName(display, types[j].resource_type);
- printf(" %2d: %s %d\n", j, name, types[j].count);
- XFree(name);
- }
- XFree(types);
- }
-
- XFree(clients);
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/xbell.c b/nx-X11/programs/Xserver/hw/dmx/examples/xbell.c
deleted file mode 100644
index 4d55740a8..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/xbell.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-
-static void pkc(XKeyboardControl *kc, unsigned long vm)
-{
- if (vm&KBKeyClickPercent)
- printf(" key_click_percent = %d\n", kc->key_click_percent);
- if (vm&KBBellPercent)
- printf(" bell_percent = %d\n", kc->bell_percent);
- if (vm&KBBellPitch)
- printf(" bell_pitch = %d\n", kc->bell_pitch);
- if (vm&KBBellDuration)
- printf(" bell_duration = %d\n", kc->bell_duration);
- if (vm&KBLed)
- printf(" led = 0x%x\n", kc->led);
- if (vm&KBLedMode)
- printf(" led_mode = %d\n", kc->led_mode);
- if (vm&KBKey)
- printf(" key = %d\n", kc->key);
- if (vm&KBAutoRepeatMode)
- printf(" auto_repeat_mode = %d\n", kc->auto_repeat_mode);
-}
-
-static void pks(XKeyboardState *ks)
-{
- printf(" key_click_percent = %d\n", ks->key_click_percent);
- printf(" bell_percent = %d\n", ks->bell_percent);
- printf(" bell_pitch = %u\n", ks->bell_pitch);
- printf(" bell_duration = %u\n", ks->bell_duration);
- printf(" led_mask = 0x%lx\n", ks->led_mask);
- printf(" global_auto_repeat = %d\n", ks->global_auto_repeat);
-}
-
-int main(int argc, char **argv)
-{
- Display *display = XOpenDisplay(NULL);
- XKeyboardControl kc;
- XKeyboardState ks;
- unsigned long vm;
- int percent;
-
- if (argc != 5) {
- printf("Usage: xbell percent baseVolume pitch duration\n");
- return 1;
- }
-
- vm = (KBBellPercent
- | KBBellPitch
- | KBBellDuration);
- percent = atoi(argv[1]);
- kc.bell_percent = atoi(argv[2]);
- kc.bell_pitch = atoi(argv[3]);
- kc.bell_duration = atoi(argv[4]);
-
- printf("Setting:\n");
- pkc(&kc, vm);
- XChangeKeyboardControl(display, vm, &kc);
-
- printf("Have:\n");
- XGetKeyboardControl(display, &ks);
- pks(&ks);
-
- XBell(display, 100);
-
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/xdmx.c b/nx-X11/programs/Xserver/hw/dmx/examples/xdmx.c
deleted file mode 100644
index 3fec7dd3d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/xdmx.c
+++ /dev/null
@@ -1,240 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001,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 <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/extensions/dmxext.h>
-
-static void indent(int level)
-{
- int i;
- for (i = 0; i < level; i++) printf(" ");
-}
-
-static void print_window_id(const char *displayName, Display *display,
- Window window, int level, int child)
-{
- char *name;
-
- if (!XFetchName(display, window, &name)) name = NULL;
- indent(level);
- if (child) printf("(%d) ", child);
- printf("%s window 0x%08lx: %s%s\n",
- displayName,
- (long unsigned)window,
- name ? name : "",
- (window == DefaultRootWindow(display))
- ? " (DMX root window)" : "");
- if (name) XFree(name);
-}
-
-static void print_info(Display *display, Window window, int level, int child)
-{
- DMXWindowAttributes winfo[128];
- int count;
- int i;
-
- if (!DMXGetWindowAttributes(display, window, &count, 128, winfo)) {
- printf("Could not get window information for 0x%08lx\n",
- (long unsigned)window);
- exit(-2);
- }
- printf("\n");
- print_window_id("DMX", display, window, level, child);
- for (i = 0; i < count; i++) {
- DMXScreenAttributes sinfo;
- Display *backend;
-
- /* This could also be cached -- the information doesn't change. */
- if (!DMXGetScreenAttributes(display, winfo[i].screen, &sinfo)) {
- printf("Could not get screen information for screen %d\n", i);
- exit(-2);
- }
- if (!(backend = XOpenDisplay(sinfo.displayName))) {
- printf("Cannot open backend display %s\n", sinfo.displayName);
- exit(-2);
- }
- XCloseDisplay(backend);
-
- indent(level+1);
- printf("%s window 0x%08lx: %dx%d%+d%+d",
- sinfo.displayName,
- (long unsigned)winfo[i].window,
- winfo[i].pos.width, winfo[i].pos.height,
- winfo[i].pos.x, winfo[i].pos.y);
- if (!winfo[i].vis.width
- && !winfo[i].vis.height
- && !winfo[i].vis.x
- && !winfo[i].vis.y) printf(" not visible\n");
- else if (winfo[i].vis.width == winfo[i].pos.width
- && winfo[i].vis.height == winfo[i].pos.height) {
- printf( " %+d%+d\n", winfo[i].vis.x, winfo[i].vis.y);
- } else {
- printf( " %dx%d%+d%+d\n",
- winfo[i].vis.width, winfo[i].vis.height,
- winfo[i].vis.x, winfo[i].vis.y);
- }
- }
-}
-
-static void print_tree(Display *display, Window window, int level, int child)
-{
- Window root, parent;
- Window *list;
- unsigned int count;
- unsigned int i;
-
- print_info(display, window, level, child);
-
- if (!XQueryTree(display, window, &root, &parent, &list, &count)) {
- printf("Cannot query window tree for 0x%08lx\n",
- (long unsigned)window);
- exit(-3);
- }
-
- if (count) {
- indent(level+1);
- printf("%d child%s:\n", count, count > 1 ? "ren" : "");
- for (i = 0; i < count; i++) {
- print_tree(display, list[i], level+1, i+1);
- }
- }
-}
-
-static const char *core(DMXInputAttributes *iinfo)
-{
- if (iinfo->isCore) return "core";
- else if (iinfo->sendsCore) return "extension (sends core)";
- else return "extension";
-}
-
-int main(int argc, char **argv)
-{
- Display *display = NULL;
- Window window = 0;
- int event_base;
- int error_base;
- int major_version, minor_version, patch_version;
- DMXScreenAttributes sinfo;
- DMXInputAttributes iinfo;
- int count;
- int i;
-
- if (argc == 2 || argc == 3) {
- if (!(display = XOpenDisplay(argv[1]))) {
- printf("Cannot open display %s\n", argv[1]);
- return -1;
- }
- if (argc == 3) window = strtol(argv[2], NULL, 0);
- } else {
- printf("Usage: %s display [windowid]\n", argv[0]);
- return -1;
- }
-
- if (!display && !(display = XOpenDisplay(NULL))) {
- printf("Cannot open default display\n");
- return -1;
- }
-
- if (!DMXQueryExtension(display, &event_base, &error_base)) {
- printf("DMX extension not present\n");
- return -1;
- }
- printf("DMX extension present: event_base = %d, error_base = %d\n",
- event_base, error_base);
-
- if (!DMXQueryVersion(display,
- &major_version, &minor_version, &patch_version)) {
- printf("Could not get extension version\n");
- return -1;
- }
- printf("Extension version: %d.%d patch %d\n",
- major_version, minor_version, patch_version);
-
- if (!DMXGetScreenCount(display, &count)) {
- printf("Could not get screen count\n");
- return -1;
- }
- printf("Screen count = %d\n", count);
-
- for (i = 0; i < count; i++) {
- if (!DMXGetScreenAttributes(display, i, &sinfo)) {
- printf("Could not get screen information for %d\n", i);
- return -1;
- }
- printf("%d: %s %ux%u+%d+%d %d @%dx%d (root: %dx%d%+d%+d)\n",
- i, sinfo.displayName,
- sinfo.screenWindowWidth, sinfo.screenWindowHeight,
- sinfo.screenWindowXoffset, sinfo.screenWindowYoffset,
- sinfo.logicalScreen,
- sinfo.rootWindowXorigin, sinfo.rootWindowYorigin,
- sinfo.rootWindowWidth, sinfo.rootWindowHeight,
- sinfo.rootWindowXoffset, sinfo.rootWindowYoffset);
- }
-
- if (major_version == 1 && minor_version >= 1) {
- if (!DMXGetInputCount(display, &count)) {
- printf("Could not get input count\n");
- return -1;
- }
- printf("Input count = %d\n", count);
- for (i = 0; i < count; i++) {
- if (!DMXGetInputAttributes(display, i, &iinfo)) {
- printf("Could not get input information for id %d\n", i);
- return -1;
- }
- switch (iinfo.inputType) {
- case DMXLocalInputType:
- printf(" %2d local %-20.20s %s\n", i, "", core(&iinfo));
- break;
- case DMXConsoleInputType:
- printf(" %2d console %-20.20s %s\n",
- i, iinfo.name, core(&iinfo));
- break;
- case DMXBackendInputType:
- printf(" %2d backend %-20.20s id=%2d screen=%2d %s\n",
- i, iinfo.name, iinfo.physicalId, iinfo.physicalScreen,
- core(&iinfo));
- break;
- }
- }
- }
-
- if (window) print_info(display, window, 0, 0);
- else print_tree(display, DefaultRootWindow(display), 0, 0);
-
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/xinput.c b/nx-X11/programs/Xserver/hw/dmx/examples/xinput.c
deleted file mode 100644
index c2b9bc0f4..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/xinput.c
+++ /dev/null
@@ -1,319 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001,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 <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <X11/Xlib.h>
-#include <X11/XKBlib.h>
-#include <X11/extensions/XInput.h>
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
-#include <X11/extensions/dmxext.h>
-#include <sys/time.h>
-
-static const char *core(DMXInputAttributes *iinf)
-{
- if (iinf->isCore) return "core";
- else if (iinf->sendsCore) return "extension (sends core events)";
- else return "extension";
-}
-
-static void printdmxinfo(Display *display, int id)
-{
- int event_base;
- int error_base;
- int major_version, minor_version, patch_version;
- DMXInputAttributes iinf;
- Display *backend;
- char *backendname = NULL;
-
- if (!DMXQueryExtension(display, &event_base, &error_base)) return;
- if (!DMXQueryVersion(display, &major_version, &minor_version,
- &patch_version)) return;
- if (major_version == 1 && minor_version == 0) return; /* too old */
- if (!DMXGetInputAttributes(display, id, &iinf)) return;
-
- printf(" DMX Information: ");
- if (iinf.detached) printf("detached ");
- else printf("active ");
- switch (iinf.inputType) {
- case DMXLocalInputType:
- printf("local, %s", core(&iinf));
- break;
- case DMXConsoleInputType:
- printf("console %s, %s", iinf.name, core(&iinf));
- break;
- case DMXBackendInputType:
- if (iinf.physicalId >= 0) {
- if ((backend = XOpenDisplay(iinf.name))) {
- XExtensionVersion *ext = XGetExtensionVersion(backend, INAME);
- if (ext && ext != (XExtensionVersion *)NoSuchExtension) {
- int count, i;
- XDeviceInfo *devInfo = XListInputDevices(backend, &count);
- if (devInfo) {
- for (i = 0; i < count; i++) {
- if ((unsigned)iinf.physicalId == devInfo[i].id
- && devInfo[i].name) {
- backendname = strdup(devInfo[i].name);
- break;
- }
- }
- XFreeDeviceList(devInfo);
- }
- }
- XCloseDisplay(backend);
- }
- }
- printf("backend o%d/%s",iinf.physicalScreen, iinf.name);
- if (iinf.physicalId >= 0) printf("/id%d", iinf.physicalId);
- if (backendname) {
- printf("=%s", backendname);
- free(backendname);
- }
- printf(" %s", core(&iinf));
- break;
- }
- printf("\n");
-}
-
-int main(int argc, char **argv)
-{
- Display *display = NULL;
- int device = -1;
- int newmouse = -1;
- int newkbd = -1;
- int count;
- int i, j;
- XDeviceInfo *devInfo;
- XExtensionVersion *ext;
-
- if (argc == 2 || argc == 3 || argc == 4 || argc == 5) {
- if (!(display = XOpenDisplay(argv[1]))) {
- printf("Cannot open display %s\n", argv[1]);
- return -1;
- }
- if (argc >= 3) device = strtol(argv[2], NULL, 0);
- if (argc >= 4) newmouse = strtol(argv[3], NULL, 0);
- if (argc >= 5) newkbd = strtol(argv[4], NULL, 0);
- } else {
- printf("Usage: %s display [device] [newmouse] [newkbd]\n", argv[0]);
- return -1;
- }
-
- if (!display && !(display = XOpenDisplay(NULL))) {
- printf("Cannot open default display\n");
- return -1;
- }
-
- ext = XGetExtensionVersion(display, INAME);
- if (!ext || ext == (XExtensionVersion *)NoSuchExtension) {
- printf("No XInputExtension\n");
- return -1;
- }
- printf("%s version %d.%d\n",
- INAME, ext->major_version, ext->minor_version);
-
- if (!(devInfo = XListInputDevices(display, &count)) || !count) {
- printf("Cannot list devices\n");
- return -1;
- }
-
- for (i = 0; i < count; i++) {
- XAnyClassPtr any;
- const char *kind = "Unknown";
- int has_key = 0;
-
- switch (devInfo[i].use) {
- case IsXPointer: kind = "XPointer"; break;
- case IsXKeyboard: kind = "XKeyboard"; break;
- case IsXExtensionDevice: kind = "XExtensionDevice"; break;
- }
- printf("%2lu %-20.20s %-16.16s",
- (long unsigned)devInfo[i].id,
- devInfo[i].name ? devInfo[i].name : "", kind);
-
- for (j = 0, any = devInfo[i].inputclassinfo;
- j < devInfo[i].num_classes;
- any = (XAnyClassPtr)((char *)any + any->length), j++) {
- const char *class = "unk";
- switch (any->class) {
- case KeyClass: class = "key"; ++has_key; break;
- case ButtonClass: class = "btn"; break;
- case ValuatorClass: class = "val"; break;
- case FeedbackClass: class = "fdb"; break;
- case ProximityClass: class = "prx"; break;
- case FocusClass: class = "foc"; break;
- case OtherClass: class = "oth"; break;
- }
- printf(" %s", class);
- }
- printf("\n");
- printdmxinfo(display, i);
-
- if (has_key) {
- XkbDescPtr xkb;
- if ((xkb = XkbGetKeyboard(display,
- XkbAllComponentsMask,
- devInfo[i].id))) {
- printf(" Xkb Information:\n");
- printf(" Device id = %d\n", xkb->device_spec);
- printf(" Min keycode = 0x%02x\n", xkb->min_key_code);
- printf(" Max keycode = 0x%02x\n", xkb->max_key_code);
-#define PRINTNAME(x) \
- printf(" %s = %s\n", \
- #x, xkb->names->x ? XGetAtomName(display, xkb->names->x) : "")
- PRINTNAME(keycodes);
- PRINTNAME(geometry);
- PRINTNAME(symbols);
- PRINTNAME(types);
- PRINTNAME(compat);
- }
- }
- }
-
- if (newmouse >= 0) {
- XDevice *dev;
-
- printf("Trying to make device %d core mouse\n", newmouse);
- dev = XOpenDevice(display, devInfo[newmouse].id);
- printf("Status = %d\n",
- XChangePointerDevice(display, dev, 0, 1));
- return 0;
- }
-
- if (newkbd >= 0) {
- XDevice *dev;
-
- printf("Trying to make device %d core keyboard\n", newkbd);
- dev = XOpenDevice(display, devInfo[newkbd].id);
- printf("Status = %d\n",
- XChangeKeyboardDevice(display, dev));
- return 0;
- }
-
-
- if (device >=0){
-#define MAX_EVENTS 100
- int cnt = 0;
- XDevice *dev;
- XEventClass event_list[MAX_EVENTS];
- int event_type[MAX_EVENTS];
- const char *names[MAX_EVENTS];
- int total = 0;
-
-#define ADD(type) \
- if (cnt >= MAX_EVENTS) abort(); \
- names[cnt] = #type; \
- type(dev, event_type[cnt], event_list[cnt]); \
- if (event_type[cnt]) ++cnt
-
-
- dev = XOpenDevice(display, devInfo[device].id);
- ADD(DeviceKeyPress);
- ADD(DeviceKeyRelease);
- ADD(DeviceButtonPress);
- ADD(DeviceButtonRelease);
- ADD(DeviceMotionNotify);
- ADD(DeviceFocusIn);
- ADD(DeviceFocusOut);
- ADD(ProximityIn);
- ADD(ProximityOut);
- ADD(DeviceStateNotify);
- ADD(DeviceMappingNotify);
- ADD(ChangeDeviceNotify);
-
- for (i = 0; i < cnt; i++) {
- printf("Waiting for %s events of type %d (%lu) on 0x%08lx\n",
- names[i],
- event_type[i], (unsigned long)event_list[i],
- (long unsigned)DefaultRootWindow(display));
- }
- XSelectExtensionEvent(display, DefaultRootWindow(display),
- event_list, cnt);
-
- for (;;) {
- XEvent event;
- XNextEvent(display, &event);
- for (i = 0; i < cnt; i++) {
- XDeviceMotionEvent *e = (XDeviceMotionEvent *)&event;
- XDeviceButtonEvent *b = (XDeviceButtonEvent *)&event;
- if (event.type == event_type[i]) {
- printf("%s id=%lu (%d @ %d,%d; s=0x%04x, d=%d, t=%lu)"
- " axes_count=%d first=%d %d %d %d %d %d %d\n",
- names[i],
- (long unsigned)e->deviceid,
- e->type,
- e->x, e->y,
- e->device_state,
- b->button,
- (long unsigned)b->time,
- e->axes_count,
- e->first_axis,
- e->axis_data[0],
- e->axis_data[1],
- e->axis_data[2],
- e->axis_data[3],
- e->axis_data[4],
- e->axis_data[5]);
- }
- }
- ++total;
-#if 0
- /* Used to check motion history for
- * extension devices. */
- if (!(total % 10)) {
- XDeviceTimeCoord *tc;
- int n, m, a;
- struct timeval tv;
- unsigned long ms;
- gettimeofday(&tv, NULL);
- ms = tv.tv_sec * 1000 + tv.tv_usec / 1000;
- tc = XGetDeviceMotionEvents(display, dev, ms-1000, ms,
- &n, &m, &a);
- printf("Got %d events of mode %s with %d axes\n",
- n, m == Absolute ? "Absolute" : "Relative", a);
- for (i = 0; i < n && i < 10; i++) {
- printf(" %d: %lu %d %d\n",
- i, tc[i].time, tc[i].data[0], tc[i].data[1]);
- }
- XFreeDeviceMotionEvents(tc);
- }
-#endif
- }
- }
-
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/xled.c b/nx-X11/programs/Xserver/hw/dmx/examples/xled.c
deleted file mode 100644
index cb4bcb1ac..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/xled.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 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 <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <X11/Xlib.h>
-#include <X11/XKBlib.h>
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
-#include <sys/time.h>
-
-int main(int argc, char **argv)
-{
- Display *display = NULL;
- int mask = 0;
- unsigned i;
- XKeyboardState ks;
- XKeyboardControl kc;
- XkbDescPtr xkb;
- int old[32];
-
- if (argc == 2 || argc == 3) {
- if (!(display = XOpenDisplay(argv[1]))) {
- printf("Cannot open display %s\n", argv[1]);
- return -1;
- }
- if (argc >= 3) mask = strtol(argv[2], NULL, 0);
- } else {
- printf("Usage: %s display [mask]\n", argv[0]);
- return -1;
- }
-
- if (!display && !(display = XOpenDisplay(NULL))) {
- printf("Cannot open default display\n");
- return -1;
- }
-
- if (!(xkb = XkbAllocKeyboard())) {
- printf("Cannot allocate\n");
- return -1;
- }
- if (XkbGetIndicatorMap(display, XkbAllIndicatorsMask, xkb)) {
- printf("Cannot Get Indicators\n");
- return -1;
- }
- if (XkbGetNames(display, XkbAllNamesMask, xkb)) {
- printf("Cannot Get Names\n");
- return -1;
- }
- for (i = 0; i < XkbNumIndicators; i++) {
- if (xkb->indicators->phys_indicators & (1 << i)) {
- printf("led %d = %d\n", i, xkb->indicators->maps[i].flags);
- old[i] = xkb->indicators->maps[i].flags;
- xkb->indicators->maps[i].flags = XkbIM_NoAutomatic;
- }
- }
- printf("XkbSetIndicatorMap = %d\n", XkbSetIndicatorMap(display, ~0, xkb));
- XkbFreeKeyboard(xkb, 0, True);
-
-
- if (!(xkb = XkbAllocKeyboard())) {
- printf("Cannot allocate\n");
- return -1;
- }
- if (XkbGetIndicatorMap(display, XkbAllIndicatorsMask, xkb)) {
- printf("Cannot Get Indicators\n");
- return -1;
- }
- for (i = 0; i < XkbNumIndicators; i++) {
- if (xkb->indicators->phys_indicators & (1 << i))
- printf("led %d = %d\n", i, xkb->indicators->maps[i].flags);
- }
-
- printf("XGetKeyboardControl = %d\n", XGetKeyboardControl(display, &ks));
- printf("old mask = 0x%08lx\n", ks.led_mask);
- for (i = 0; i < 5; i++) {
- kc.led = i + 1;
- kc.led_mode = (mask & (1 << i)) ? LedModeOn : LedModeOff;
- printf("XChangeKeyboardControl = %d\n",
- XChangeKeyboardControl(display, KBLed | KBLedMode, &kc));
- }
- printf("XGetKeyboardControl = %d\n", XGetKeyboardControl(display, &ks));
- printf("new mask = 0x%08lx\n", ks.led_mask);
-
- for (i = 0; i < XkbNumIndicators; i++)
- if (xkb->indicators->phys_indicators & (i << 1))
- xkb->indicators->maps[i].flags = old[i];
- printf("XkbSetIndicatorMap = %d\n", XkbSetIndicatorMap(display, ~0, xkb));
-
- XkbFreeKeyboard(xkb, 0, True);
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/examples/xtest.c b/nx-X11/programs/Xserver/hw/dmx/examples/xtest.c
deleted file mode 100644
index b6f223d27..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/examples/xtest.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 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 <faith@redhat.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/extensions/XTest.h>
-
-int main(int argc, char **argv)
-{
- Display *display = NULL;
- int event_base;
- int error_base;
- int major_version, minor_version;
-
- if (argc == 2) {
- if (!(display = XOpenDisplay(argv[1]))) {
- printf("Cannot open display %s\n", argv[1]);
- return -1;
- }
- } else {
- printf("Usage: %s display\n", argv[0]);
- return -1;
- }
-
- if (!display && !(display = XOpenDisplay(NULL))) {
- printf("Cannot open default display\n");
- return -1;
- }
-
- if (!XTestQueryExtension(display, &event_base, &error_base,
- &major_version, &minor_version)) {
- printf("XTEST extension not present\n");
- return -1;
- }
- printf("XTEST extension present: event_base = %d, error_base = %d\n",
- event_base, error_base);
- printf("Extension version: %d.%d\n", major_version, minor_version);
-
- XTestFakeKeyEvent(display, 30, True, 10);
- XTestFakeKeyEvent(display, 30, False, 10);
-
- XCloseDisplay(display);
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/Imakefile b/nx-X11/programs/Xserver/hw/dmx/glxProxy/Imakefile
deleted file mode 100644
index f711f3410..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/Imakefile
+++ /dev/null
@@ -1,52 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/GL/glx/Imakefile,v 1.9 2001/04/28 13:55:36 dawes Exp $
-
-#define IHaveModules
-#include <Server.tmpl>
-
-#include <dmx.cf>
-
-#if HasGcc3 && HasGnuMake
-XCOMM This makes the glxProxy subdirectory much less noisy, with respect
-XCOMM to warngings. The code is automatically generated, so we just want
-XCOMM to shut the compiler up at this point. However, some of the suppressed
-XCOMM warnings may point to real errors, so they should be investigated at
-XCOMM some time in the future.
-CFLAGS += -Wno-unused -Wno-implicit -Wno-uninitialized \
- -Wno-redundant-decls -Wno-sign-compare -Wno-strict-prototypes \
- -Wno-float-equal -Wno-missing-declarations -Wno-missing-prototypes
-#endif
-
- SRCS = g_disptab.c glxcmds.c glxext.c glxutil.c g_renderswap.c \
- render2swap.c renderpixswap.c global.c glxcmdsswap.c \
- compsize.c glxscreens.c glxvisuals.c \
- glxsingle.c glxvendor.c glxfbconfig.c glxswap.c $(MSRCS)
-
- OBJS = g_disptab.o glxcmds.o glxext.o glxutil.o g_renderswap.o \
- render2swap.o renderpixswap.o global.o glxcmdsswap.o \
- compsize.o glxscreens.o glxvisuals.o \
- glxsingle.o glxvendor.o glxfbconfig.o glxswap.o $(MOBJS)
-
- INCLUDES = -I. -I$(SERVERSRC)/include -I$(INCLUDESRC) \
- -I$(XINCLUDESRC) -I$(SERVERSRC)/mi \
- -I$(EXTINCSRC) -I$(FONTINCSRC) -I$(MESASRCDIR)/include \
- -I$(XF86SRC) -I$(XF86OSSRC) -I$(SERVERSRC)/GL/include \
- -I$(SERVERSRC)/hw/dmx -I$(SERVERSRC)/Xext \
- -I$(SERVERSRC)/render
-
-XCOMM If you add "-DDEBUG" in DEFINES, then make sure you also
-XCOMM add DEBUG to the define in ../mesa/src/X/xf86glx.c
- DEFINES = $(GLX_DEFINES) $(DMX_DEFINES)
-
-
-#if DoLoadableServer
-ModuleObjectRule()
-#else
-NormalLibraryObjectRule()
-#endif
-SubdirLibraryRule($(OBJS))
-LibraryModuleTarget(glxProxy,$(OBJS))
-
-LintLibraryTarget(glxProxy,$(SRCS))
-NormalLintTarget($(SRCS))
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/compsize.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/compsize.c
deleted file mode 100644
index cffa1af8d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/compsize.c
+++ /dev/null
@@ -1,564 +0,0 @@
-/* $XFree86: xc/lib/GL/glx/compsize.c,v 1.3 2001/03/21 16:04:39 dawes Exp $ */
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#include <GL/gl.h>
-
-GLint __glFogiv_size(GLenum pname)
-{
- switch (pname) {
- case GL_FOG_COLOR: return 4;
- case GL_FOG_DENSITY: return 1;
- case GL_FOG_END: return 1;
- case GL_FOG_MODE: return 1;
- case GL_FOG_INDEX: return 1;
- case GL_FOG_START: return 1;
- default:
- return 0;
- }
-}
-
-GLint __glFogfv_size(GLenum pname)
-{
- return __glFogiv_size(pname);
-}
-
-GLint __glCallLists_size(GLsizei n, GLenum type)
-{
- GLint size;
-
- if (n < 0) return 0;
- switch (type) {
- case GL_BYTE: size = 1; break;
- case GL_UNSIGNED_BYTE: size = 1; break;
- case GL_SHORT: size = 2; break;
- case GL_UNSIGNED_SHORT: size = 2; break;
- case GL_INT: size = 4; break;
- case GL_UNSIGNED_INT: size = 4; break;
- case GL_FLOAT: size = 4; break;
- case GL_2_BYTES: size = 2; break;
- case GL_3_BYTES: size = 3; break;
- case GL_4_BYTES: size = 4; break;
- default:
- return 0;
- }
- return n * size;
-}
-
-GLint __glDrawPixels_size(GLenum format, GLenum type, GLsizei w, GLsizei h)
-{
- GLint elements, esize;
-
- switch (format) {
- case GL_COLOR_INDEX:
- case GL_STENCIL_INDEX:
- case GL_DEPTH_COMPONENT:
- elements = 1;
- break;
- case GL_RED:
- case GL_GREEN:
- case GL_BLUE:
- case GL_ALPHA:
- case GL_LUMINANCE:
- elements = 1;
- break;
- case GL_LUMINANCE_ALPHA:
- elements = 2;
- break;
- case GL_RGB:
- elements = 3;
- break;
- case GL_RGBA:
- case GL_ABGR_EXT:
- elements = 4;
- break;
- default:
- return 0;
- }
- switch (type) {
- case GL_BITMAP:
- if (format == GL_COLOR_INDEX || format == GL_STENCIL_INDEX) {
- return (h * ((w+7)/8));
- } else {
- return 0;
- }
- case GL_BYTE:
- case GL_UNSIGNED_BYTE:
- esize = 1;
- break;
- case GL_UNSIGNED_BYTE_3_3_2:
- case GL_UNSIGNED_BYTE_2_3_3_REV:
- esize = 1;
- elements = 1;
- break;
- case GL_SHORT:
- case GL_UNSIGNED_SHORT:
- esize = 2;
- break;
- case GL_UNSIGNED_SHORT_5_6_5:
- case GL_UNSIGNED_SHORT_5_6_5_REV:
- case GL_UNSIGNED_SHORT_4_4_4_4:
- case GL_UNSIGNED_SHORT_4_4_4_4_REV:
- case GL_UNSIGNED_SHORT_5_5_5_1:
- case GL_UNSIGNED_SHORT_1_5_5_5_REV:
- esize = 2;
- elements = 1;
- break;
- case GL_INT:
- case GL_UNSIGNED_INT:
- case GL_FLOAT:
- esize = 4;
- break;
- case GL_UNSIGNED_INT_8_8_8_8:
- case GL_UNSIGNED_INT_8_8_8_8_REV:
- case GL_UNSIGNED_INT_10_10_10_2:
- case GL_UNSIGNED_INT_2_10_10_10_REV:
- esize = 4;
- elements = 1;
- break;
- default:
- return 0;
- }
- return (elements * esize * w * h);
-}
-
-GLint __glBitmap_size(GLsizei w, GLsizei h)
-{
- return __glDrawPixels_size(GL_COLOR_INDEX, GL_BITMAP, w, h);
-}
-
-GLint __glTexGendv_size(GLenum e)
-{
- switch (e) {
- case GL_TEXTURE_GEN_MODE:
- return 1;
- case GL_OBJECT_PLANE:
- case GL_EYE_PLANE:
- return 4;
- default:
- return 0;
- }
-}
-
-GLint __glTexGenfv_size(GLenum e)
-{
- return __glTexGendv_size(e);
-}
-
-GLint __glTexGeniv_size(GLenum e)
-{
- return __glTexGendv_size(e);
-}
-
-GLint __glTexParameterfv_size(GLenum e)
-{
- switch (e) {
- case GL_TEXTURE_WRAP_S:
- case GL_TEXTURE_WRAP_T:
- case GL_TEXTURE_WRAP_R:
- case GL_TEXTURE_MIN_FILTER:
- case GL_TEXTURE_MAG_FILTER:
- return 1;
- case GL_TEXTURE_BORDER_COLOR:
- return 4;
- case GL_TEXTURE_PRIORITY:
- return 1;
- case GL_TEXTURE_MIN_LOD:
- case GL_TEXTURE_MAX_LOD:
- case GL_TEXTURE_BASE_LEVEL:
- case GL_TEXTURE_MAX_LEVEL:
- return 1;
- default:
- return 0;
- }
-}
-
-GLint __glTexParameteriv_size(GLenum e)
-{
- return __glTexParameterfv_size(e);
-}
-
-GLint __glTexEnvfv_size(GLenum e)
-{
- switch (e) {
- case GL_TEXTURE_ENV_MODE:
- return 1;
- case GL_TEXTURE_ENV_COLOR:
- return 4;
- default:
- return 0;
- }
-}
-
-GLint __glTexEnviv_size(GLenum e)
-{
- return __glTexEnvfv_size(e);
-}
-
-GLint __glTexImage1D_size(GLenum format, GLenum type, GLsizei w)
-{
- GLint elements, esize;
-
- if (w < 0) return 0;
- switch (format) {
- case GL_COLOR_INDEX:
- elements = 1;
- break;
- case GL_RED:
- case GL_GREEN:
- case GL_BLUE:
- case GL_ALPHA:
- case GL_LUMINANCE:
- elements = 1;
- break;
- case GL_LUMINANCE_ALPHA:
- elements = 2;
- break;
- case GL_RGB:
- elements = 3;
- break;
- case GL_RGBA:
- case GL_ABGR_EXT:
- elements = 4;
- break;
- default:
- return 0;
- }
- switch (type) {
- case GL_BITMAP:
- if (format == GL_COLOR_INDEX) {
- return (w+7)/8;
- } else {
- return 0;
- }
- case GL_BYTE:
- case GL_UNSIGNED_BYTE:
- esize = 1;
- break;
- case GL_UNSIGNED_BYTE_3_3_2:
- case GL_UNSIGNED_BYTE_2_3_3_REV:
- esize = 1;
- elements = 1;
- break;
- case GL_SHORT:
- case GL_UNSIGNED_SHORT:
- esize = 2;
- break;
- case GL_UNSIGNED_SHORT_5_6_5:
- case GL_UNSIGNED_SHORT_5_6_5_REV:
- case GL_UNSIGNED_SHORT_4_4_4_4:
- case GL_UNSIGNED_SHORT_4_4_4_4_REV:
- case GL_UNSIGNED_SHORT_5_5_5_1:
- case GL_UNSIGNED_SHORT_1_5_5_5_REV:
- esize = 2;
- elements = 1;
- break;
- case GL_INT:
- case GL_UNSIGNED_INT:
- case GL_FLOAT:
- esize = 4;
- break;
- case GL_UNSIGNED_INT_8_8_8_8:
- case GL_UNSIGNED_INT_8_8_8_8_REV:
- case GL_UNSIGNED_INT_10_10_10_2:
- case GL_UNSIGNED_INT_2_10_10_10_REV:
- esize = 4;
- elements = 1;
- break;
- default:
- return 0;
- }
- return (elements * esize * w);
-}
-
-GLint __glTexImage2D_size(GLenum format, GLenum type, GLsizei w, GLsizei h)
-{
- GLint elements, esize;
-
- if (w < 0) return 0;
- if (h < 0) return 0;
- switch (format) {
- case GL_COLOR_INDEX:
- elements = 1;
- break;
- case GL_RED:
- case GL_GREEN:
- case GL_BLUE:
- case GL_ALPHA:
- case GL_LUMINANCE:
- elements = 1;
- break;
- case GL_LUMINANCE_ALPHA:
- elements = 2;
- break;
- case GL_RGB:
- elements = 3;
- break;
- case GL_RGBA:
- case GL_ABGR_EXT:
- elements = 4;
- break;
- default:
- return 0;
- }
- switch (type) {
- case GL_BITMAP:
- if (format == GL_COLOR_INDEX) {
- return (h * ((w+7)/8));
- } else {
- return 0;
- }
- case GL_BYTE:
- case GL_UNSIGNED_BYTE:
- esize = 1;
- break;
- case GL_UNSIGNED_BYTE_3_3_2:
- case GL_UNSIGNED_BYTE_2_3_3_REV:
- esize = 1;
- elements = 1;
- break;
- case GL_SHORT:
- case GL_UNSIGNED_SHORT:
- esize = 2;
- break;
- case GL_UNSIGNED_SHORT_5_6_5:
- case GL_UNSIGNED_SHORT_5_6_5_REV:
- case GL_UNSIGNED_SHORT_4_4_4_4:
- case GL_UNSIGNED_SHORT_4_4_4_4_REV:
- case GL_UNSIGNED_SHORT_5_5_5_1:
- case GL_UNSIGNED_SHORT_1_5_5_5_REV:
- esize = 2;
- elements = 1;
- break;
- case GL_INT:
- case GL_UNSIGNED_INT:
- case GL_FLOAT:
- esize = 4;
- break;
- case GL_UNSIGNED_INT_8_8_8_8:
- case GL_UNSIGNED_INT_8_8_8_8_REV:
- case GL_UNSIGNED_INT_10_10_10_2:
- case GL_UNSIGNED_INT_2_10_10_10_REV:
- esize = 4;
- elements = 1;
- break;
- default:
- return 0;
- }
- return (elements * esize * w * h);
-}
-
-GLint __glTexImage3D_size(GLenum format, GLenum type, GLsizei w, GLsizei h,
- GLsizei d)
-{
- GLint elements, esize;
-
- if (w < 0) return 0;
- if (h < 0) return 0;
- if (d < 0) return 0;
- switch (format) {
- case GL_COLOR_INDEX:
- elements = 1;
- break;
- case GL_RED:
- case GL_GREEN:
- case GL_BLUE:
- case GL_ALPHA:
- case GL_LUMINANCE:
- elements = 1;
- break;
- case GL_LUMINANCE_ALPHA:
- elements = 2;
- break;
- case GL_RGB:
- elements = 3;
- break;
- case GL_RGBA:
- case GL_ABGR_EXT:
- elements = 4;
- break;
- default:
- return 0;
- }
- switch (type) {
- case GL_BITMAP:
- if (format == GL_COLOR_INDEX) {
- return (d * (h * ((w+7)/8)));
- } else {
- return 0;
- }
- case GL_BYTE:
- case GL_UNSIGNED_BYTE:
- esize = 1;
- break;
- case GL_UNSIGNED_BYTE_3_3_2:
- case GL_UNSIGNED_BYTE_2_3_3_REV:
- esize = 1;
- elements = 1;
- break;
- case GL_SHORT:
- case GL_UNSIGNED_SHORT:
- esize = 2;
- break;
- case GL_UNSIGNED_SHORT_5_6_5:
- case GL_UNSIGNED_SHORT_5_6_5_REV:
- case GL_UNSIGNED_SHORT_4_4_4_4:
- case GL_UNSIGNED_SHORT_4_4_4_4_REV:
- case GL_UNSIGNED_SHORT_5_5_5_1:
- case GL_UNSIGNED_SHORT_1_5_5_5_REV:
- esize = 2;
- elements = 1;
- break;
- case GL_INT:
- case GL_UNSIGNED_INT:
- case GL_FLOAT:
- esize = 4;
- break;
- case GL_UNSIGNED_INT_8_8_8_8:
- case GL_UNSIGNED_INT_8_8_8_8_REV:
- case GL_UNSIGNED_INT_10_10_10_2:
- case GL_UNSIGNED_INT_2_10_10_10_REV:
- esize = 4;
- elements = 1;
- break;
- default:
- return 0;
- }
- return (elements * esize * w * h * d);
-}
-
-GLint __glLightfv_size(GLenum pname)
-{
- switch (pname) {
- case GL_SPOT_EXPONENT: return 1;
- case GL_SPOT_CUTOFF: return 1;
- case GL_AMBIENT: return 4;
- case GL_DIFFUSE: return 4;
- case GL_SPECULAR: return 4;
- case GL_POSITION: return 4;
- case GL_SPOT_DIRECTION: return 3;
- case GL_CONSTANT_ATTENUATION: return 1;
- case GL_LINEAR_ATTENUATION: return 1;
- case GL_QUADRATIC_ATTENUATION: return 1;
- default:
- return 0;
- }
-}
-
-GLint __glLightiv_size(GLenum pname)
-{
- return __glLightfv_size(pname);
-}
-
-GLint __glLightModelfv_size(GLenum pname)
-{
- switch (pname) {
- case GL_LIGHT_MODEL_AMBIENT: return 4;
- case GL_LIGHT_MODEL_LOCAL_VIEWER: return 1;
- case GL_LIGHT_MODEL_TWO_SIDE: return 1;
- case GL_LIGHT_MODEL_COLOR_CONTROL: return 1;
- default:
- return 0;
- }
-}
-
-GLint __glLightModeliv_size(GLenum pname)
-{
- return __glLightModelfv_size(pname);
-}
-
-GLint __glMaterialfv_size(GLenum pname)
-{
- switch (pname) {
- case GL_SHININESS: return 1;
- case GL_EMISSION: return 4;
- case GL_AMBIENT: return 4;
- case GL_DIFFUSE: return 4;
- case GL_SPECULAR: return 4;
- case GL_AMBIENT_AND_DIFFUSE: return 4;
- case GL_COLOR_INDEXES: return 3;
- default:
- return 0;
- }
-}
-
-GLint __glMaterialiv_size(GLenum pname)
-{
- return __glMaterialfv_size(pname);
-}
-
-GLint __glColorTableParameterfv_size(GLenum pname)
-{
- switch (pname) {
- case GL_COLOR_TABLE_FORMAT:
- case GL_COLOR_TABLE_WIDTH:
- case GL_COLOR_TABLE_RED_SIZE:
- case GL_COLOR_TABLE_GREEN_SIZE:
- case GL_COLOR_TABLE_BLUE_SIZE:
- case GL_COLOR_TABLE_ALPHA_SIZE:
- case GL_COLOR_TABLE_LUMINANCE_SIZE:
- case GL_COLOR_TABLE_INTENSITY_SIZE:
- return 1;
- case GL_COLOR_TABLE_SCALE:
- case GL_COLOR_TABLE_BIAS:
- return 4;
- default:
- return -1;
- }
-}
-
-GLint __glColorTableParameteriv_size(GLenum pname)
-{
- return __glColorTableParameterfv_size(pname);
-}
-
-GLint __glConvolutionParameterfv_size(GLenum pname)
-{
- switch(pname) {
- case GL_CONVOLUTION_BORDER_MODE:
- return 1;
- case GL_CONVOLUTION_BORDER_COLOR:
- case GL_CONVOLUTION_FILTER_SCALE:
- case GL_CONVOLUTION_FILTER_BIAS:
- return 4;
- default: /* error: bad enum value */
- return -1;
- }
-}
-
-GLint __glConvolutionParameteriv_size(GLenum pname)
-{
- return __glConvolutionParameterfv_size(pname);
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/g_disptab.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/g_disptab.c
deleted file mode 100644
index f507a874f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/g_disptab.c
+++ /dev/null
@@ -1,612 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/g_disptab.c,v 1.3 2001/03/21 16:29:35 dawes Exp $ */
-/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED */
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: This software was created using the
-** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
-** not been independently verified as being compliant with the OpenGL(R)
-** version 1.2.1 Specification.
-*/
-
-#include "glxserver.h"
-#include "glxext.h"
-#include "g_disptab.h"
-#include "glxsingle.h"
-
-__GLXdispatchSingleProcPtr __glXSingleTable[] = {
- __glXNoSuchSingleOpcode,
- __glXRender,
- __glXRenderLarge,
- __glXCreateContext,
- __glXDestroyContext,
- __glXMakeCurrent,
- __glXIsDirect,
- __glXQueryVersion,
- __glXWaitGL,
- __glXWaitX,
- __glXCopyContext,
- __glXSwapBuffers,
- __glXUseXFont,
- __glXCreateGLXPixmap,
- __glXGetVisualConfigs,
- __glXDestroyGLXPixmap,
- __glXVendorPrivate,
- __glXVendorPrivateWithReply,
- __glXQueryExtensionsString,
- __glXQueryServerString,
- __glXClientInfo,
- __glXGetFBConfigs, /* __glXGetFBConfigs */
- __glXCreatePixmap, /* __glXCreatePixmap,*/
- __glXDestroyGLXPixmap, /* __glXDestroyPixmap,*/
- __glXCreateNewContext, /* __glXCreateNewContext,*/
- __glXQueryContext, /* __glXQueryContext,*/
- __glXMakeContextCurrent, /* __glXMakeContextCurrent,*/
- __glXCreatePbuffer, /* __glXCreatePbuffer,*/
- __glXDestroyPbuffer, /* __glXDestroyPbuffer,*/
- __glXGetDrawableAttributes, /* __glXGetDrawableAttributes,*/
- __glXChangeDrawableAttributes, /* __glXChangeDrawableAttributes,*/
- __glXCreateWindow, /* __glXCreateWindow,*/
- __glXDestroyWindow, /* __glXDestroyWindow,*/
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXForwardSingleReq, /* __glXDisp_NewList, */
- __glXForwardSingleReq, /* __glXDisp_EndList, */
- __glXForwardSingleReq, /* __glXDisp_DeleteLists, */
- __glXForwardPipe0WithReply, /* __glXDisp_GenLists, */
- __glXForwardSingleReq, /* __glXDisp_FeedbackBuffer, */
- __glXForwardSingleReq, /* __glXDisp_SelectBuffer, */
- __glXForwardAllWithReply, /* __glXDisp_RenderMode, */
- __glXForwardAllWithReply, /* __glXDisp_Finish, */
- __glXForwardSingleReq, /* __glXDisp_PixelStoref, */
- __glXForwardSingleReq, /* __glXDisp_PixelStorei, */
- __glXDisp_ReadPixels, /* __glXDisp_ReadPixels, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetBooleanv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetClipPlane, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetDoublev, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetError, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetFloatv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetIntegerv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetLightfv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetLightiv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetMapdv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetMapfv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetMapiv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetMaterialfv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetMaterialiv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetPixelMapfv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetPixelMapuiv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetPixelMapusv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetPolygonStipple, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetString, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetTexEnvfv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetTexEnviv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetTexGendv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetTexGenfv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetTexGeniv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetTexImage, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetTexParameterfv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetTexParameteriv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetTexLevelParameterfv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetTexLevelParameteriv, */
- __glXForwardPipe0WithReply, /* __glXDisp_IsEnabled, */
- __glXForwardPipe0WithReply, /* __glXDisp_IsList, */
- __glXForwardSingleReq, /* __glXDisp_Flush, */
- __glXForwardPipe0WithReply, /* __glXDisp_AreTexturesResident, */
- __glXForwardSingleReq, /* __glXDisp_DeleteTextures, */
- __glXForwardAllWithReply, /* __glXDisp_GenTextures, */
- __glXForwardPipe0WithReply, /* __glXDisp_IsTexture, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetColorTable, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetColorTableParameterfv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetColorTableParameteriv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetConvolutionFilter, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetConvolutionParameterfv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetConvolutionParameteriv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetSeparableFilter, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetHistogram, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetHistogramParameterfv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetHistogramParameteriv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetMinmax, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetMinmaxParameterfv, */
- __glXForwardPipe0WithReply, /* __glXDisp_GetMinmaxParameteriv, */
-};
-
-__GLXdispatchSingleProcPtr __glXSwapSingleTable[] = {
- __glXNoSuchSingleOpcode,
- __glXSwapRender,
- __glXSwapRenderLarge,
- __glXSwapCreateContext,
- __glXSwapDestroyContext,
- __glXSwapMakeCurrent,
- __glXSwapIsDirect,
- __glXSwapQueryVersion,
- __glXSwapWaitGL,
- __glXSwapWaitX,
- __glXSwapCopyContext,
- __glXSwapSwapBuffers,
- __glXSwapUseXFont,
- __glXSwapCreateGLXPixmap,
- __glXSwapGetVisualConfigs,
- __glXSwapDestroyGLXPixmap,
- __glXSwapVendorPrivate,
- __glXSwapVendorPrivateWithReply,
- __glXSwapQueryExtensionsString,
- __glXSwapQueryServerString,
- __glXSwapClientInfo,
- __glXSwapGetFBConfigs,
- __glXSwapCreatePixmap,
- __glXSwapDestroyGLXPixmap,
- __glXSwapCreateNewContext,
- __glXSwapQueryContext,
- __glXSwapMakeContextCurrent,
- __glXSwapCreatePbuffer,
- __glXSwapDestroyPbuffer,
- __glXSwapGetDrawableAttributes,
- __glXSwapChangeDrawableAttributes,
- __glXSwapCreateWindow,
- __glXSwapDestroyWindow,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXNoSuchSingleOpcode,
- __glXForwardSingleReqSwap, /* __glXDisp_NewList, */
- __glXForwardSingleReqSwap, /* __glXDisp_EndList, */
- __glXForwardSingleReqSwap, /* __glXDisp_DeleteLists, */
- __glXForwardPipe0WithReplySwap, /* __glXDisp_GenLists, */
- __glXForwardSingleReqSwap, /* __glXDisp_FeedbackBuffer, */
- __glXForwardSingleReqSwap, /* __glXDisp_SelectBuffer, */
- __glXForwardAllWithReplySwapiv, /* __glXDisp_RenderMode, */
- __glXForwardAllWithReplySwap, /* __glXDisp_Finish, */
- __glXForwardSingleReqSwap, /* __glXDisp_PixelStoref, */
- __glXForwardSingleReqSwap, /* __glXDisp_PixelStorei, */
- __glXDisp_ReadPixels, /* __glXDisp_ReadPixels, */
- __glXForwardPipe0WithReplySwap, /* __glXDisp_GetBooleanv, */
- __glXForwardPipe0WithReplySwapdv, /* __glXDisp_GetClipPlane, */
- __glXForwardPipe0WithReplySwapdv, /* __glXDisp_GetDoublev, */
- __glXForwardPipe0WithReplySwap, /* __glXDisp_GetError, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetFloatv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetIntegerv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetLightfv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetLightiv, */
- __glXForwardPipe0WithReplySwapdv, /* __glXDisp_GetMapdv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetMapfv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetMapiv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetMaterialfv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetMaterialiv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetPixelMapfv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetPixelMapuiv, */
- __glXForwardPipe0WithReplySwapsv, /* __glXDisp_GetPixelMapusv, */
- __glXForwardPipe0WithReplySwap, /* __glXDisp_GetPolygonStipple, */
- __glXForwardPipe0WithReplySwap, /* __glXDisp_GetString, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetTexEnvfv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetTexEnviv, */
- __glXForwardPipe0WithReplySwapdv, /* __glXDisp_GetTexGendv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetTexGenfv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetTexGeniv, */
- __glXDispSwap_GetTexImage, /* __glXDisp_GetTexImage, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetTexParameterfv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetTexParameteriv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetTexLevelParameterfv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetTexLevelParameteriv, */
- __glXForwardPipe0WithReplySwap, /* __glXDisp_IsEnabled, */
- __glXForwardPipe0WithReplySwap, /* __glXDisp_IsList, */
- __glXForwardSingleReqSwap, /* __glXDisp_Flush, */
- __glXForwardPipe0WithReplySwap, /* __glXDisp_AreTexturesResident, */
- __glXForwardSingleReqSwap, /* __glXDisp_DeleteTextures, */
- __glXForwardAllWithReplySwapiv, /* __glXDisp_GenTextures, */
- __glXForwardPipe0WithReplySwap, /* __glXDisp_IsTexture, */
- __glXDispSwap_GetColorTable, /* __glXDisp_GetColorTable, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetColorTableParameterfv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetColorTableParameteriv, */
- __glXDispSwap_GetColorTable, /* __glXDisp_GetConvolutionFilter, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetConvolutionParameterfv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetConvolutionParameteriv, */
- __glXDispSwap_GetColorTable, /* __glXDisp_GetSeparableFilter, */
- __glXDispSwap_GetColorTable, /* __glXDisp_GetHistogram, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetHistogramParameterfv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetHistogramParameteriv, */
- __glXDispSwap_GetColorTable, /* __glXDisp_GetMinmax, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetMinmaxParameterfv, */
- __glXForwardPipe0WithReplySwapiv, /* __glXDisp_GetMinmaxParameteriv, */
-};
-
-__GLXdispatchRenderProcPtr __glXSwapRenderTable[] = {
- __glXNoSuchRenderOpcode,
- __glXDispSwap_CallList,
- __glXDispSwap_CallLists,
- __glXDispSwap_ListBase,
- __glXDispSwap_Begin,
- __glXDispSwap_Bitmap,
- __glXDispSwap_Color3bv,
- __glXDispSwap_Color3dv,
- __glXDispSwap_Color3fv,
- __glXDispSwap_Color3iv,
- __glXDispSwap_Color3sv,
- __glXDispSwap_Color3ubv,
- __glXDispSwap_Color3uiv,
- __glXDispSwap_Color3usv,
- __glXDispSwap_Color4bv,
- __glXDispSwap_Color4dv,
- __glXDispSwap_Color4fv,
- __glXDispSwap_Color4iv,
- __glXDispSwap_Color4sv,
- __glXDispSwap_Color4ubv,
- __glXDispSwap_Color4uiv,
- __glXDispSwap_Color4usv,
- __glXDispSwap_EdgeFlagv,
- __glXDispSwap_End,
- __glXDispSwap_Indexdv,
- __glXDispSwap_Indexfv,
- __glXDispSwap_Indexiv,
- __glXDispSwap_Indexsv,
- __glXDispSwap_Normal3bv,
- __glXDispSwap_Normal3dv,
- __glXDispSwap_Normal3fv,
- __glXDispSwap_Normal3iv,
- __glXDispSwap_Normal3sv,
- __glXDispSwap_RasterPos2dv,
- __glXDispSwap_RasterPos2fv,
- __glXDispSwap_RasterPos2iv,
- __glXDispSwap_RasterPos2sv,
- __glXDispSwap_RasterPos3dv,
- __glXDispSwap_RasterPos3fv,
- __glXDispSwap_RasterPos3iv,
- __glXDispSwap_RasterPos3sv,
- __glXDispSwap_RasterPos4dv,
- __glXDispSwap_RasterPos4fv,
- __glXDispSwap_RasterPos4iv,
- __glXDispSwap_RasterPos4sv,
- __glXDispSwap_Rectdv,
- __glXDispSwap_Rectfv,
- __glXDispSwap_Rectiv,
- __glXDispSwap_Rectsv,
- __glXDispSwap_TexCoord1dv,
- __glXDispSwap_TexCoord1fv,
- __glXDispSwap_TexCoord1iv,
- __glXDispSwap_TexCoord1sv,
- __glXDispSwap_TexCoord2dv,
- __glXDispSwap_TexCoord2fv,
- __glXDispSwap_TexCoord2iv,
- __glXDispSwap_TexCoord2sv,
- __glXDispSwap_TexCoord3dv,
- __glXDispSwap_TexCoord3fv,
- __glXDispSwap_TexCoord3iv,
- __glXDispSwap_TexCoord3sv,
- __glXDispSwap_TexCoord4dv,
- __glXDispSwap_TexCoord4fv,
- __glXDispSwap_TexCoord4iv,
- __glXDispSwap_TexCoord4sv,
- __glXDispSwap_Vertex2dv,
- __glXDispSwap_Vertex2fv,
- __glXDispSwap_Vertex2iv,
- __glXDispSwap_Vertex2sv,
- __glXDispSwap_Vertex3dv,
- __glXDispSwap_Vertex3fv,
- __glXDispSwap_Vertex3iv,
- __glXDispSwap_Vertex3sv,
- __glXDispSwap_Vertex4dv,
- __glXDispSwap_Vertex4fv,
- __glXDispSwap_Vertex4iv,
- __glXDispSwap_Vertex4sv,
- __glXDispSwap_ClipPlane,
- __glXDispSwap_ColorMaterial,
- __glXDispSwap_CullFace,
- __glXDispSwap_Fogf,
- __glXDispSwap_Fogfv,
- __glXDispSwap_Fogi,
- __glXDispSwap_Fogiv,
- __glXDispSwap_FrontFace,
- __glXDispSwap_Hint,
- __glXDispSwap_Lightf,
- __glXDispSwap_Lightfv,
- __glXDispSwap_Lighti,
- __glXDispSwap_Lightiv,
- __glXDispSwap_LightModelf,
- __glXDispSwap_LightModelfv,
- __glXDispSwap_LightModeli,
- __glXDispSwap_LightModeliv,
- __glXDispSwap_LineStipple,
- __glXDispSwap_LineWidth,
- __glXDispSwap_Materialf,
- __glXDispSwap_Materialfv,
- __glXDispSwap_Materiali,
- __glXDispSwap_Materialiv,
- __glXDispSwap_PointSize,
- __glXDispSwap_PolygonMode,
- __glXDispSwap_PolygonStipple,
- __glXDispSwap_Scissor,
- __glXDispSwap_ShadeModel,
- __glXDispSwap_TexParameterf,
- __glXDispSwap_TexParameterfv,
- __glXDispSwap_TexParameteri,
- __glXDispSwap_TexParameteriv,
- __glXDispSwap_TexImage1D,
- __glXDispSwap_TexImage2D,
- __glXDispSwap_TexEnvf,
- __glXDispSwap_TexEnvfv,
- __glXDispSwap_TexEnvi,
- __glXDispSwap_TexEnviv,
- __glXDispSwap_TexGend,
- __glXDispSwap_TexGendv,
- __glXDispSwap_TexGenf,
- __glXDispSwap_TexGenfv,
- __glXDispSwap_TexGeni,
- __glXDispSwap_TexGeniv,
- __glXDispSwap_InitNames,
- __glXDispSwap_LoadName,
- __glXDispSwap_PassThrough,
- __glXDispSwap_PopName,
- __glXDispSwap_PushName,
- __glXDispSwap_DrawBuffer,
- __glXDispSwap_Clear,
- __glXDispSwap_ClearAccum,
- __glXDispSwap_ClearIndex,
- __glXDispSwap_ClearColor,
- __glXDispSwap_ClearStencil,
- __glXDispSwap_ClearDepth,
- __glXDispSwap_StencilMask,
- __glXDispSwap_ColorMask,
- __glXDispSwap_DepthMask,
- __glXDispSwap_IndexMask,
- __glXDispSwap_Accum,
- __glXDispSwap_Disable,
- __glXDispSwap_Enable,
- __glXNoSuchRenderOpcode,
- __glXDispSwap_PopAttrib,
- __glXDispSwap_PushAttrib,
- __glXDispSwap_Map1d,
- __glXDispSwap_Map1f,
- __glXDispSwap_Map2d,
- __glXDispSwap_Map2f,
- __glXDispSwap_MapGrid1d,
- __glXDispSwap_MapGrid1f,
- __glXDispSwap_MapGrid2d,
- __glXDispSwap_MapGrid2f,
- __glXDispSwap_EvalCoord1dv,
- __glXDispSwap_EvalCoord1fv,
- __glXDispSwap_EvalCoord2dv,
- __glXDispSwap_EvalCoord2fv,
- __glXDispSwap_EvalMesh1,
- __glXDispSwap_EvalPoint1,
- __glXDispSwap_EvalMesh2,
- __glXDispSwap_EvalPoint2,
- __glXDispSwap_AlphaFunc,
- __glXDispSwap_BlendFunc,
- __glXDispSwap_LogicOp,
- __glXDispSwap_StencilFunc,
- __glXDispSwap_StencilOp,
- __glXDispSwap_DepthFunc,
- __glXDispSwap_PixelZoom,
- __glXDispSwap_PixelTransferf,
- __glXDispSwap_PixelTransferi,
- __glXDispSwap_PixelMapfv,
- __glXDispSwap_PixelMapuiv,
- __glXDispSwap_PixelMapusv,
- __glXDispSwap_ReadBuffer,
- __glXDispSwap_CopyPixels,
- __glXDispSwap_DrawPixels,
- __glXDispSwap_DepthRange,
- __glXDispSwap_Frustum,
- __glXDispSwap_LoadIdentity,
- __glXDispSwap_LoadMatrixf,
- __glXDispSwap_LoadMatrixd,
- __glXDispSwap_MatrixMode,
- __glXDispSwap_MultMatrixf,
- __glXDispSwap_MultMatrixd,
- __glXDispSwap_Ortho,
- __glXDispSwap_PopMatrix,
- __glXDispSwap_PushMatrix,
- __glXDispSwap_Rotated,
- __glXDispSwap_Rotatef,
- __glXDispSwap_Scaled,
- __glXDispSwap_Scalef,
- __glXDispSwap_Translated,
- __glXDispSwap_Translatef,
- __glXDispSwap_Viewport,
- __glXDispSwap_PolygonOffset,
- __glXDispSwap_DrawArrays,
- __glXDispSwap_Indexubv,
- __glXDispSwap_ColorSubTable,
- __glXDispSwap_CopyColorSubTable,
- __glXDispSwap_ActiveTextureARB,
- __glXDispSwap_MultiTexCoord1dvARB,
- __glXDispSwap_MultiTexCoord1fvARB,
- __glXDispSwap_MultiTexCoord1ivARB,
- __glXDispSwap_MultiTexCoord1svARB,
- __glXDispSwap_MultiTexCoord2dvARB,
- __glXDispSwap_MultiTexCoord2fvARB,
- __glXDispSwap_MultiTexCoord2ivARB,
- __glXDispSwap_MultiTexCoord2svARB,
- __glXDispSwap_MultiTexCoord3dvARB,
- __glXDispSwap_MultiTexCoord3fvARB,
- __glXDispSwap_MultiTexCoord3ivARB,
- __glXDispSwap_MultiTexCoord3svARB,
- __glXDispSwap_MultiTexCoord4dvARB,
- __glXDispSwap_MultiTexCoord4fvARB,
- __glXDispSwap_MultiTexCoord4ivARB,
- __glXDispSwap_MultiTexCoord4svARB,
-};
-
-__GLXRenderSwapInfo __glXSwapRenderTable_EXT[] =
-{
- {4, 4, NULL}, /* X_GLrop_BlendColorEXT */
- {4, 1, NULL}, /* X_GLrop_BlendEquationEXT */
- {4, 2, NULL}, /* X_GLrop_PolygonOffsetEXT */
- {4, 0, __glXDispSwap_TexSubImage1D}, /* X_GLrop_TexSubImage1DEXT */
- {4, 0, __glXDispSwap_TexSubImage2D}, /* X_GLrop_TexSubImage2DEXT */
- {4, 0, __glXDispSwap_ConvolutionFilter1D}, /* X_GLrop_ConvolutionFilter1DEXT */
- {4, 0, __glXDispSwap_ConvolutionFilter2D}, /* X_GLrop_ConvolutionFilter2DEXT */
- {4, 3, NULL}, /* X_GLrop_ConvolutionParameterfEXT */
- {4, 0, __glXDispSwap_ConvolutionParameterfv}, /* X_GLrop_ConvolutionParameterfvEXT */
- {4, 3, NULL}, /* X_GLrop_ConvolutionParameteriEXT */
- {4, 0, __glXDispSwap_ConvolutionParameteriv}, /* X_GLrop_ConvolutionParameterivEXT */
- {4, 0, __glXDispSwap_CopyConvolutionFilter1D}, /* X_GLrop_CopyConvolutionFilter1DEXT */
- {4, 0, __glXDispSwap_CopyConvolutionFilter2D}, /* X_GLrop_CopyConvolutionFilter2DEXT */
- {4, 0, __glXDispSwap_SeparableFilter2D}, /* X_GLrop_SeparableFilter2DEXT */
- {4, 3, NULL}, /* X_GLrop_HistogramEXT */
- {4, 2, NULL}, /* X_GLrop_MinmaxEXT */
- {4, 1, NULL}, /* X_GLrop_ResetHistogramEXT */
- {4, 1, NULL}, /* X_GLrop_ResetMinmaxEXT */
- {4, 0, __glXDispSwap_TexImage3D}, /* X_GLrop_TexImage3DEXT */
- {4, 0, __glXDispSwap_TexSubImage3D}, /* X_GLrop_TexSubImage3DEXT */
- {4, 0, __glXDispSwap_DrawArrays}, /* X_GLrop_DrawArraysEXT */
- {4, 2, NULL}, /* X_GLrop_BindTextureEXT */
- {4, 0, __glXDispSwap_PrioritizeTextures}, /* X_GLrop_PrioritizeTexturesEXT */
- {4, 0, __glXDispSwap_CopyTexImage1D}, /* X_GLrop_CopyTexImage1DEXT */
- {4, 0, __glXDispSwap_CopyTexImage2D}, /* X_GLrop_CopyTexImage2DEXT */
- {4, 0, __glXDispSwap_CopyTexSubImage1D}, /* X_GLrop_CopyTexSubImage1DEXT */
- {4, 0, __glXDispSwap_CopyTexSubImage2D}, /* X_GLrop_CopyTexSubImage2DEXT */
- {4, 0, __glXDispSwap_CopyTexSubImage3D}, /* X_GLrop_CopyTexSubImage3DEXT */
-
-};
-
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/g_disptab.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/g_disptab.h
deleted file mode 100644
index 0b6d47be7..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/g_disptab.h
+++ /dev/null
@@ -1,676 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/g_disptab.h,v 1.3 2001/03/21 16:29:35 dawes Exp $ */
-/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED */
-#ifndef _GLX_g_disptab_h_
-#define _GLX_g_disptab_h_
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: This software was created using the
-** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
-** not been independently verified as being compliant with the OpenGL(R)
-** version 1.2.1 Specification.
-*/
-
-extern int __glXRender(__GLXclientState*, GLbyte*);
-extern int __glXRenderLarge(__GLXclientState*, GLbyte*);
-extern int __glXSendLargeCommand(__GLXclientState *cl, GLXContextTag contextTag);
-extern int __glXCreateContext(__GLXclientState*, GLbyte*);
-extern int __glXCreateNewContext(__GLXclientState *cl, GLbyte *pc);
-extern int __glXDestroyContext(__GLXclientState*, GLbyte*);
-extern int __glXMakeCurrent(__GLXclientState*, GLbyte*);
-extern int __glXMakeContextCurrent(__GLXclientState*, GLbyte*);
-extern int __glXCreatePbuffer(__GLXclientState *cl, GLbyte *pc);
-extern int __glXDestroyPbuffer(__GLXclientState *cl, GLbyte *pc);
-extern int __glXGetDrawableAttributes(__GLXclientState *cl, GLbyte *pc);
-extern int __glXChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc);
-extern int __glXIsDirect(__GLXclientState*, GLbyte*);
-extern int __glXQueryVersion(__GLXclientState*, GLbyte*);
-extern int __glXWaitGL(__GLXclientState*, GLbyte*);
-extern int __glXWaitX(__GLXclientState*, GLbyte*);
-extern int __glXCopyContext(__GLXclientState*, GLbyte*);
-extern int __glXSwapBuffers(__GLXclientState*, GLbyte*);
-extern int __glXUseXFont(__GLXclientState*, GLbyte*);
-extern int __glXCreateGLXPixmap(__GLXclientState*, GLbyte*);
-extern int __glXCreatePixmap(__GLXclientState *cl, GLbyte *pc);
-extern int __glXGetVisualConfigs(__GLXclientState*, GLbyte*);
-extern int __glXDestroyGLXPixmap(__GLXclientState*, GLbyte*);
-extern int __glXVendorPrivate(__GLXclientState*, GLbyte*);
-extern int __glXVendorPrivateWithReply(__GLXclientState*, GLbyte*);
-extern int __glXQueryExtensionsString(__GLXclientState*, GLbyte*);
-extern int __glXQueryServerString(__GLXclientState*, GLbyte*);
-extern int __glXClientInfo(__GLXclientState*, GLbyte*);
-extern int __glXGetFBConfigs(__GLXclientState*, GLbyte*);
-extern int __glXCreateWindow(__GLXclientState *cl, GLbyte *pc);
-extern int __glXDestroyWindow(__GLXclientState *cl, GLbyte *pc);
-extern int __glXQueryContext(__GLXclientState *cl, GLbyte *pc);
-extern int __glXDisp_NewList(__GLXclientState*, GLbyte*);
-extern int __glXDisp_EndList(__GLXclientState*, GLbyte*);
-extern int __glXDisp_DeleteLists(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GenLists(__GLXclientState*, GLbyte*);
-extern int __glXDisp_FeedbackBuffer(__GLXclientState*, GLbyte*);
-extern int __glXDisp_SelectBuffer(__GLXclientState*, GLbyte*);
-extern int __glXDisp_RenderMode(__GLXclientState*, GLbyte*);
-extern int __glXDisp_Finish(__GLXclientState*, GLbyte*);
-extern int __glXDisp_PixelStoref(__GLXclientState*, GLbyte*);
-extern int __glXDisp_PixelStorei(__GLXclientState*, GLbyte*);
-extern int __glXDisp_ReadPixels(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetBooleanv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetClipPlane(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetDoublev(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetError(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetFloatv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetIntegerv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetLightfv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetLightiv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetMapdv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetMapfv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetMapiv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetMaterialfv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetMaterialiv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetPixelMapfv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetPixelMapuiv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetPixelMapusv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetPolygonStipple(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetString(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetTexEnvfv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetTexEnviv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetTexGendv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetTexGenfv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetTexGeniv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetTexImage(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetTexParameterfv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetTexParameteriv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetTexLevelParameterfv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetTexLevelParameteriv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_IsEnabled(__GLXclientState*, GLbyte*);
-extern int __glXDisp_IsList(__GLXclientState*, GLbyte*);
-extern int __glXDisp_Flush(__GLXclientState*, GLbyte*);
-extern int __glXDisp_AreTexturesResident(__GLXclientState*, GLbyte*);
-extern int __glXDisp_DeleteTextures(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GenTextures(__GLXclientState*, GLbyte*);
-extern int __glXDisp_IsTexture(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetColorTable(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetColorTableParameterfv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetColorTableParameteriv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetConvolutionFilter(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetConvolutionParameterfv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetConvolutionParameteriv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetSeparableFilter(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetHistogram(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetHistogramParameterfv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetHistogramParameteriv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetMinmax(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetMinmaxParameterfv(__GLXclientState*, GLbyte*);
-extern int __glXDisp_GetMinmaxParameteriv(__GLXclientState*, GLbyte*);
-
-extern void __glXDisp_CallList(GLbyte*);
-extern void __glXDisp_CallLists(GLbyte*);
-extern void __glXDisp_ListBase(GLbyte*);
-extern void __glXDisp_Begin(GLbyte*);
-extern void __glXDisp_Bitmap(GLbyte*);
-extern void __glXDisp_Color3bv(GLbyte*);
-extern void __glXDisp_Color3dv(GLbyte*);
-extern void __glXDisp_Color3fv(GLbyte*);
-extern void __glXDisp_Color3iv(GLbyte*);
-extern void __glXDisp_Color3sv(GLbyte*);
-extern void __glXDisp_Color3ubv(GLbyte*);
-extern void __glXDisp_Color3uiv(GLbyte*);
-extern void __glXDisp_Color3usv(GLbyte*);
-extern void __glXDisp_Color4bv(GLbyte*);
-extern void __glXDisp_Color4dv(GLbyte*);
-extern void __glXDisp_Color4fv(GLbyte*);
-extern void __glXDisp_Color4iv(GLbyte*);
-extern void __glXDisp_Color4sv(GLbyte*);
-extern void __glXDisp_Color4ubv(GLbyte*);
-extern void __glXDisp_Color4uiv(GLbyte*);
-extern void __glXDisp_Color4usv(GLbyte*);
-extern void __glXDisp_EdgeFlagv(GLbyte*);
-extern void __glXDisp_End(GLbyte*);
-extern void __glXDisp_Indexdv(GLbyte*);
-extern void __glXDisp_Indexfv(GLbyte*);
-extern void __glXDisp_Indexiv(GLbyte*);
-extern void __glXDisp_Indexsv(GLbyte*);
-extern void __glXDisp_Normal3bv(GLbyte*);
-extern void __glXDisp_Normal3dv(GLbyte*);
-extern void __glXDisp_Normal3fv(GLbyte*);
-extern void __glXDisp_Normal3iv(GLbyte*);
-extern void __glXDisp_Normal3sv(GLbyte*);
-extern void __glXDisp_RasterPos2dv(GLbyte*);
-extern void __glXDisp_RasterPos2fv(GLbyte*);
-extern void __glXDisp_RasterPos2iv(GLbyte*);
-extern void __glXDisp_RasterPos2sv(GLbyte*);
-extern void __glXDisp_RasterPos3dv(GLbyte*);
-extern void __glXDisp_RasterPos3fv(GLbyte*);
-extern void __glXDisp_RasterPos3iv(GLbyte*);
-extern void __glXDisp_RasterPos3sv(GLbyte*);
-extern void __glXDisp_RasterPos4dv(GLbyte*);
-extern void __glXDisp_RasterPos4fv(GLbyte*);
-extern void __glXDisp_RasterPos4iv(GLbyte*);
-extern void __glXDisp_RasterPos4sv(GLbyte*);
-extern void __glXDisp_Rectdv(GLbyte*);
-extern void __glXDisp_Rectfv(GLbyte*);
-extern void __glXDisp_Rectiv(GLbyte*);
-extern void __glXDisp_Rectsv(GLbyte*);
-extern void __glXDisp_TexCoord1dv(GLbyte*);
-extern void __glXDisp_TexCoord1fv(GLbyte*);
-extern void __glXDisp_TexCoord1iv(GLbyte*);
-extern void __glXDisp_TexCoord1sv(GLbyte*);
-extern void __glXDisp_TexCoord2dv(GLbyte*);
-extern void __glXDisp_TexCoord2fv(GLbyte*);
-extern void __glXDisp_TexCoord2iv(GLbyte*);
-extern void __glXDisp_TexCoord2sv(GLbyte*);
-extern void __glXDisp_TexCoord3dv(GLbyte*);
-extern void __glXDisp_TexCoord3fv(GLbyte*);
-extern void __glXDisp_TexCoord3iv(GLbyte*);
-extern void __glXDisp_TexCoord3sv(GLbyte*);
-extern void __glXDisp_TexCoord4dv(GLbyte*);
-extern void __glXDisp_TexCoord4fv(GLbyte*);
-extern void __glXDisp_TexCoord4iv(GLbyte*);
-extern void __glXDisp_TexCoord4sv(GLbyte*);
-extern void __glXDisp_Vertex2dv(GLbyte*);
-extern void __glXDisp_Vertex2fv(GLbyte*);
-extern void __glXDisp_Vertex2iv(GLbyte*);
-extern void __glXDisp_Vertex2sv(GLbyte*);
-extern void __glXDisp_Vertex3dv(GLbyte*);
-extern void __glXDisp_Vertex3fv(GLbyte*);
-extern void __glXDisp_Vertex3iv(GLbyte*);
-extern void __glXDisp_Vertex3sv(GLbyte*);
-extern void __glXDisp_Vertex4dv(GLbyte*);
-extern void __glXDisp_Vertex4fv(GLbyte*);
-extern void __glXDisp_Vertex4iv(GLbyte*);
-extern void __glXDisp_Vertex4sv(GLbyte*);
-extern void __glXDisp_ClipPlane(GLbyte*);
-extern void __glXDisp_ColorMaterial(GLbyte*);
-extern void __glXDisp_CullFace(GLbyte*);
-extern void __glXDisp_Fogf(GLbyte*);
-extern void __glXDisp_Fogfv(GLbyte*);
-extern void __glXDisp_Fogi(GLbyte*);
-extern void __glXDisp_Fogiv(GLbyte*);
-extern void __glXDisp_FrontFace(GLbyte*);
-extern void __glXDisp_Hint(GLbyte*);
-extern void __glXDisp_Lightf(GLbyte*);
-extern void __glXDisp_Lightfv(GLbyte*);
-extern void __glXDisp_Lighti(GLbyte*);
-extern void __glXDisp_Lightiv(GLbyte*);
-extern void __glXDisp_LightModelf(GLbyte*);
-extern void __glXDisp_LightModelfv(GLbyte*);
-extern void __glXDisp_LightModeli(GLbyte*);
-extern void __glXDisp_LightModeliv(GLbyte*);
-extern void __glXDisp_LineStipple(GLbyte*);
-extern void __glXDisp_LineWidth(GLbyte*);
-extern void __glXDisp_Materialf(GLbyte*);
-extern void __glXDisp_Materialfv(GLbyte*);
-extern void __glXDisp_Materiali(GLbyte*);
-extern void __glXDisp_Materialiv(GLbyte*);
-extern void __glXDisp_PointSize(GLbyte*);
-extern void __glXDisp_PolygonMode(GLbyte*);
-extern void __glXDisp_PolygonStipple(GLbyte*);
-extern void __glXDisp_Scissor(GLbyte*);
-extern void __glXDisp_ShadeModel(GLbyte*);
-extern void __glXDisp_TexParameterf(GLbyte*);
-extern void __glXDisp_TexParameterfv(GLbyte*);
-extern void __glXDisp_TexParameteri(GLbyte*);
-extern void __glXDisp_TexParameteriv(GLbyte*);
-extern void __glXDisp_TexImage1D(GLbyte*);
-extern void __glXDisp_TexImage2D(GLbyte*);
-extern void __glXDisp_TexEnvf(GLbyte*);
-extern void __glXDisp_TexEnvfv(GLbyte*);
-extern void __glXDisp_TexEnvi(GLbyte*);
-extern void __glXDisp_TexEnviv(GLbyte*);
-extern void __glXDisp_TexGend(GLbyte*);
-extern void __glXDisp_TexGendv(GLbyte*);
-extern void __glXDisp_TexGenf(GLbyte*);
-extern void __glXDisp_TexGenfv(GLbyte*);
-extern void __glXDisp_TexGeni(GLbyte*);
-extern void __glXDisp_TexGeniv(GLbyte*);
-extern void __glXDisp_InitNames(GLbyte*);
-extern void __glXDisp_LoadName(GLbyte*);
-extern void __glXDisp_PassThrough(GLbyte*);
-extern void __glXDisp_PopName(GLbyte*);
-extern void __glXDisp_PushName(GLbyte*);
-extern void __glXDisp_DrawBuffer(GLbyte*);
-extern void __glXDisp_Clear(GLbyte*);
-extern void __glXDisp_ClearAccum(GLbyte*);
-extern void __glXDisp_ClearIndex(GLbyte*);
-extern void __glXDisp_ClearColor(GLbyte*);
-extern void __glXDisp_ClearStencil(GLbyte*);
-extern void __glXDisp_ClearDepth(GLbyte*);
-extern void __glXDisp_StencilMask(GLbyte*);
-extern void __glXDisp_ColorMask(GLbyte*);
-extern void __glXDisp_DepthMask(GLbyte*);
-extern void __glXDisp_IndexMask(GLbyte*);
-extern void __glXDisp_Accum(GLbyte*);
-extern void __glXDisp_Disable(GLbyte*);
-extern void __glXDisp_Enable(GLbyte*);
-extern void __glXDisp_PopAttrib(GLbyte*);
-extern void __glXDisp_PushAttrib(GLbyte*);
-extern void __glXDisp_Map1d(GLbyte*);
-extern void __glXDisp_Map1f(GLbyte*);
-extern void __glXDisp_Map2d(GLbyte*);
-extern void __glXDisp_Map2f(GLbyte*);
-extern void __glXDisp_MapGrid1d(GLbyte*);
-extern void __glXDisp_MapGrid1f(GLbyte*);
-extern void __glXDisp_MapGrid2d(GLbyte*);
-extern void __glXDisp_MapGrid2f(GLbyte*);
-extern void __glXDisp_EvalCoord1dv(GLbyte*);
-extern void __glXDisp_EvalCoord1fv(GLbyte*);
-extern void __glXDisp_EvalCoord2dv(GLbyte*);
-extern void __glXDisp_EvalCoord2fv(GLbyte*);
-extern void __glXDisp_EvalMesh1(GLbyte*);
-extern void __glXDisp_EvalPoint1(GLbyte*);
-extern void __glXDisp_EvalMesh2(GLbyte*);
-extern void __glXDisp_EvalPoint2(GLbyte*);
-extern void __glXDisp_AlphaFunc(GLbyte*);
-extern void __glXDisp_BlendFunc(GLbyte*);
-extern void __glXDisp_LogicOp(GLbyte*);
-extern void __glXDisp_StencilFunc(GLbyte*);
-extern void __glXDisp_StencilOp(GLbyte*);
-extern void __glXDisp_DepthFunc(GLbyte*);
-extern void __glXDisp_PixelZoom(GLbyte*);
-extern void __glXDisp_PixelTransferf(GLbyte*);
-extern void __glXDisp_PixelTransferi(GLbyte*);
-extern void __glXDisp_PixelMapfv(GLbyte*);
-extern void __glXDisp_PixelMapuiv(GLbyte*);
-extern void __glXDisp_PixelMapusv(GLbyte*);
-extern void __glXDisp_ReadBuffer(GLbyte*);
-extern void __glXDisp_CopyPixels(GLbyte*);
-extern void __glXDisp_DrawPixels(GLbyte*);
-extern void __glXDisp_DepthRange(GLbyte*);
-extern void __glXDisp_Frustum(GLbyte*);
-extern void __glXDisp_LoadIdentity(GLbyte*);
-extern void __glXDisp_LoadMatrixf(GLbyte*);
-extern void __glXDisp_LoadMatrixd(GLbyte*);
-extern void __glXDisp_MatrixMode(GLbyte*);
-extern void __glXDisp_MultMatrixf(GLbyte*);
-extern void __glXDisp_MultMatrixd(GLbyte*);
-extern void __glXDisp_Ortho(GLbyte*);
-extern void __glXDisp_PopMatrix(GLbyte*);
-extern void __glXDisp_PushMatrix(GLbyte*);
-extern void __glXDisp_Rotated(GLbyte*);
-extern void __glXDisp_Rotatef(GLbyte*);
-extern void __glXDisp_Scaled(GLbyte*);
-extern void __glXDisp_Scalef(GLbyte*);
-extern void __glXDisp_Translated(GLbyte*);
-extern void __glXDisp_Translatef(GLbyte*);
-extern void __glXDisp_Viewport(GLbyte*);
-extern void __glXDisp_PolygonOffset(GLbyte*);
-extern void __glXDisp_DrawArrays(GLbyte*);
-extern void __glXDisp_Indexubv(GLbyte*);
-extern void __glXDisp_ColorSubTable(GLbyte*);
-extern void __glXDisp_CopyColorSubTable(GLbyte*);
-extern void __glXDisp_ActiveTextureARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord1dvARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord1fvARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord1ivARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord1svARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord2dvARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord2fvARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord2ivARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord2svARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord3dvARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord3fvARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord3ivARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord3svARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord4dvARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord4fvARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord4ivARB(GLbyte*);
-extern void __glXDisp_MultiTexCoord4svARB(GLbyte*);
-
-extern int __glXSwapRender(__GLXclientState*, GLbyte*);
-extern int __glXSwapRenderLarge(__GLXclientState*, GLbyte*);
-extern int __glXSwapCreateContext(__GLXclientState*, GLbyte*);
-extern int __glXSwapCreateNewContext(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapDestroyContext(__GLXclientState*, GLbyte*);
-extern int __glXSwapMakeCurrent(__GLXclientState*, GLbyte*);
-extern int __glXSwapMakeContextCurrent(__GLXclientState*, GLbyte*);
-extern int __glXSwapCreatePbuffer(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapDestroyPbuffer(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapGetDrawableAttributes(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapIsDirect(__GLXclientState*, GLbyte*);
-extern int __glXSwapQueryVersion(__GLXclientState*, GLbyte*);
-extern int __glXSwapWaitGL(__GLXclientState*, GLbyte*);
-extern int __glXSwapWaitX(__GLXclientState*, GLbyte*);
-extern int __glXSwapCopyContext(__GLXclientState*, GLbyte*);
-extern int __glXSwapSwapBuffers(__GLXclientState*, GLbyte*);
-extern int __glXSwapUseXFont(__GLXclientState*, GLbyte*);
-extern int __glXSwapCreateGLXPixmap(__GLXclientState*, GLbyte*);
-extern int __glXSwapCreatePixmap(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapGetVisualConfigs(__GLXclientState*, GLbyte*);
-extern int __glXSwapDestroyGLXPixmap(__GLXclientState*, GLbyte*);
-extern int __glXSwapVendorPrivate(__GLXclientState*, GLbyte*);
-extern int __glXSwapVendorPrivateWithReply(__GLXclientState*, GLbyte*);
-extern int __glXSwapQueryExtensionsString(__GLXclientState*, GLbyte*);
-extern int __glXSwapQueryServerString(__GLXclientState*, GLbyte*);
-extern int __glXSwapClientInfo(__GLXclientState*, GLbyte*);
-extern int __glXSwapGetFBConfigs(__GLXclientState*, GLbyte*);
-extern int __glXSwapCreateWindow(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapDestroyWindow(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapQueryContext(__GLXclientState *cl, GLbyte *pc);
-extern int __glXDispSwap_NewList(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_EndList(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_DeleteLists(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GenLists(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_FeedbackBuffer(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_SelectBuffer(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_RenderMode(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_Finish(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_PixelStoref(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_PixelStorei(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_ReadPixels(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetBooleanv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetClipPlane(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetDoublev(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetError(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetFloatv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetIntegerv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetLightfv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetLightiv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetMapdv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetMapfv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetMapiv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetMaterialfv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetMaterialiv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetPixelMapfv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetPixelMapuiv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetPixelMapusv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetPolygonStipple(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetString(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetTexEnvfv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetTexEnviv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetTexGendv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetTexGenfv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetTexGeniv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetTexImage(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetTexParameterfv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetTexParameteriv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetTexLevelParameterfv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetTexLevelParameteriv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_IsEnabled(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_IsList(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_Flush(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_AreTexturesResident(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_DeleteTextures(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GenTextures(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_IsTexture(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetColorTable(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetColorTableParameterfv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetColorTableParameteriv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetConvolutionFilter(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetConvolutionParameterfv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetConvolutionParameteriv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetSeparableFilter(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetHistogram(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetHistogramParameterfv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetHistogramParameteriv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetMinmax(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetMinmaxParameterfv(__GLXclientState*, GLbyte*);
-extern int __glXDispSwap_GetMinmaxParameteriv(__GLXclientState*, GLbyte*);
-
-extern void __glXDispSwap_CallList(GLbyte*);
-extern void __glXDispSwap_CallLists(GLbyte*);
-extern void __glXDispSwap_ListBase(GLbyte*);
-extern void __glXDispSwap_Begin(GLbyte*);
-extern void __glXDispSwap_Bitmap(GLbyte*);
-extern void __glXDispSwap_Color3bv(GLbyte*);
-extern void __glXDispSwap_Color3dv(GLbyte*);
-extern void __glXDispSwap_Color3fv(GLbyte*);
-extern void __glXDispSwap_Color3iv(GLbyte*);
-extern void __glXDispSwap_Color3sv(GLbyte*);
-extern void __glXDispSwap_Color3ubv(GLbyte*);
-extern void __glXDispSwap_Color3uiv(GLbyte*);
-extern void __glXDispSwap_Color3usv(GLbyte*);
-extern void __glXDispSwap_Color4bv(GLbyte*);
-extern void __glXDispSwap_Color4dv(GLbyte*);
-extern void __glXDispSwap_Color4fv(GLbyte*);
-extern void __glXDispSwap_Color4iv(GLbyte*);
-extern void __glXDispSwap_Color4sv(GLbyte*);
-extern void __glXDispSwap_Color4ubv(GLbyte*);
-extern void __glXDispSwap_Color4uiv(GLbyte*);
-extern void __glXDispSwap_Color4usv(GLbyte*);
-extern void __glXDispSwap_EdgeFlagv(GLbyte*);
-extern void __glXDispSwap_End(GLbyte*);
-extern void __glXDispSwap_Indexdv(GLbyte*);
-extern void __glXDispSwap_Indexfv(GLbyte*);
-extern void __glXDispSwap_Indexiv(GLbyte*);
-extern void __glXDispSwap_Indexsv(GLbyte*);
-extern void __glXDispSwap_Normal3bv(GLbyte*);
-extern void __glXDispSwap_Normal3dv(GLbyte*);
-extern void __glXDispSwap_Normal3fv(GLbyte*);
-extern void __glXDispSwap_Normal3iv(GLbyte*);
-extern void __glXDispSwap_Normal3sv(GLbyte*);
-extern void __glXDispSwap_RasterPos2dv(GLbyte*);
-extern void __glXDispSwap_RasterPos2fv(GLbyte*);
-extern void __glXDispSwap_RasterPos2iv(GLbyte*);
-extern void __glXDispSwap_RasterPos2sv(GLbyte*);
-extern void __glXDispSwap_RasterPos3dv(GLbyte*);
-extern void __glXDispSwap_RasterPos3fv(GLbyte*);
-extern void __glXDispSwap_RasterPos3iv(GLbyte*);
-extern void __glXDispSwap_RasterPos3sv(GLbyte*);
-extern void __glXDispSwap_RasterPos4dv(GLbyte*);
-extern void __glXDispSwap_RasterPos4fv(GLbyte*);
-extern void __glXDispSwap_RasterPos4iv(GLbyte*);
-extern void __glXDispSwap_RasterPos4sv(GLbyte*);
-extern void __glXDispSwap_Rectdv(GLbyte*);
-extern void __glXDispSwap_Rectfv(GLbyte*);
-extern void __glXDispSwap_Rectiv(GLbyte*);
-extern void __glXDispSwap_Rectsv(GLbyte*);
-extern void __glXDispSwap_TexCoord1dv(GLbyte*);
-extern void __glXDispSwap_TexCoord1fv(GLbyte*);
-extern void __glXDispSwap_TexCoord1iv(GLbyte*);
-extern void __glXDispSwap_TexCoord1sv(GLbyte*);
-extern void __glXDispSwap_TexCoord2dv(GLbyte*);
-extern void __glXDispSwap_TexCoord2fv(GLbyte*);
-extern void __glXDispSwap_TexCoord2iv(GLbyte*);
-extern void __glXDispSwap_TexCoord2sv(GLbyte*);
-extern void __glXDispSwap_TexCoord3dv(GLbyte*);
-extern void __glXDispSwap_TexCoord3fv(GLbyte*);
-extern void __glXDispSwap_TexCoord3iv(GLbyte*);
-extern void __glXDispSwap_TexCoord3sv(GLbyte*);
-extern void __glXDispSwap_TexCoord4dv(GLbyte*);
-extern void __glXDispSwap_TexCoord4fv(GLbyte*);
-extern void __glXDispSwap_TexCoord4iv(GLbyte*);
-extern void __glXDispSwap_TexCoord4sv(GLbyte*);
-extern void __glXDispSwap_Vertex2dv(GLbyte*);
-extern void __glXDispSwap_Vertex2fv(GLbyte*);
-extern void __glXDispSwap_Vertex2iv(GLbyte*);
-extern void __glXDispSwap_Vertex2sv(GLbyte*);
-extern void __glXDispSwap_Vertex3dv(GLbyte*);
-extern void __glXDispSwap_Vertex3fv(GLbyte*);
-extern void __glXDispSwap_Vertex3iv(GLbyte*);
-extern void __glXDispSwap_Vertex3sv(GLbyte*);
-extern void __glXDispSwap_Vertex4dv(GLbyte*);
-extern void __glXDispSwap_Vertex4fv(GLbyte*);
-extern void __glXDispSwap_Vertex4iv(GLbyte*);
-extern void __glXDispSwap_Vertex4sv(GLbyte*);
-extern void __glXDispSwap_ClipPlane(GLbyte*);
-extern void __glXDispSwap_ColorMaterial(GLbyte*);
-extern void __glXDispSwap_CullFace(GLbyte*);
-extern void __glXDispSwap_Fogf(GLbyte*);
-extern void __glXDispSwap_Fogfv(GLbyte*);
-extern void __glXDispSwap_Fogi(GLbyte*);
-extern void __glXDispSwap_Fogiv(GLbyte*);
-extern void __glXDispSwap_FrontFace(GLbyte*);
-extern void __glXDispSwap_Hint(GLbyte*);
-extern void __glXDispSwap_Lightf(GLbyte*);
-extern void __glXDispSwap_Lightfv(GLbyte*);
-extern void __glXDispSwap_Lighti(GLbyte*);
-extern void __glXDispSwap_Lightiv(GLbyte*);
-extern void __glXDispSwap_LightModelf(GLbyte*);
-extern void __glXDispSwap_LightModelfv(GLbyte*);
-extern void __glXDispSwap_LightModeli(GLbyte*);
-extern void __glXDispSwap_LightModeliv(GLbyte*);
-extern void __glXDispSwap_LineStipple(GLbyte*);
-extern void __glXDispSwap_LineWidth(GLbyte*);
-extern void __glXDispSwap_Materialf(GLbyte*);
-extern void __glXDispSwap_Materialfv(GLbyte*);
-extern void __glXDispSwap_Materiali(GLbyte*);
-extern void __glXDispSwap_Materialiv(GLbyte*);
-extern void __glXDispSwap_PointSize(GLbyte*);
-extern void __glXDispSwap_PolygonMode(GLbyte*);
-extern void __glXDispSwap_PolygonStipple(GLbyte*);
-extern void __glXDispSwap_Scissor(GLbyte*);
-extern void __glXDispSwap_ShadeModel(GLbyte*);
-extern void __glXDispSwap_TexParameterf(GLbyte*);
-extern void __glXDispSwap_TexParameterfv(GLbyte*);
-extern void __glXDispSwap_TexParameteri(GLbyte*);
-extern void __glXDispSwap_TexParameteriv(GLbyte*);
-extern void __glXDispSwap_TexImage1D(GLbyte*);
-extern void __glXDispSwap_TexImage2D(GLbyte*);
-extern void __glXDispSwap_TexEnvf(GLbyte*);
-extern void __glXDispSwap_TexEnvfv(GLbyte*);
-extern void __glXDispSwap_TexEnvi(GLbyte*);
-extern void __glXDispSwap_TexEnviv(GLbyte*);
-extern void __glXDispSwap_TexGend(GLbyte*);
-extern void __glXDispSwap_TexGendv(GLbyte*);
-extern void __glXDispSwap_TexGenf(GLbyte*);
-extern void __glXDispSwap_TexGenfv(GLbyte*);
-extern void __glXDispSwap_TexGeni(GLbyte*);
-extern void __glXDispSwap_TexGeniv(GLbyte*);
-extern void __glXDispSwap_InitNames(GLbyte*);
-extern void __glXDispSwap_LoadName(GLbyte*);
-extern void __glXDispSwap_PassThrough(GLbyte*);
-extern void __glXDispSwap_PopName(GLbyte*);
-extern void __glXDispSwap_PushName(GLbyte*);
-extern void __glXDispSwap_DrawBuffer(GLbyte*);
-extern void __glXDispSwap_Clear(GLbyte*);
-extern void __glXDispSwap_ClearAccum(GLbyte*);
-extern void __glXDispSwap_ClearIndex(GLbyte*);
-extern void __glXDispSwap_ClearColor(GLbyte*);
-extern void __glXDispSwap_ClearStencil(GLbyte*);
-extern void __glXDispSwap_ClearDepth(GLbyte*);
-extern void __glXDispSwap_StencilMask(GLbyte*);
-extern void __glXDispSwap_ColorMask(GLbyte*);
-extern void __glXDispSwap_DepthMask(GLbyte*);
-extern void __glXDispSwap_IndexMask(GLbyte*);
-extern void __glXDispSwap_Accum(GLbyte*);
-extern void __glXDispSwap_Disable(GLbyte*);
-extern void __glXDispSwap_Enable(GLbyte*);
-extern void __glXDispSwap_PopAttrib(GLbyte*);
-extern void __glXDispSwap_PushAttrib(GLbyte*);
-extern void __glXDispSwap_Map1d(GLbyte*);
-extern void __glXDispSwap_Map1f(GLbyte*);
-extern void __glXDispSwap_Map2d(GLbyte*);
-extern void __glXDispSwap_Map2f(GLbyte*);
-extern void __glXDispSwap_MapGrid1d(GLbyte*);
-extern void __glXDispSwap_MapGrid1f(GLbyte*);
-extern void __glXDispSwap_MapGrid2d(GLbyte*);
-extern void __glXDispSwap_MapGrid2f(GLbyte*);
-extern void __glXDispSwap_EvalCoord1dv(GLbyte*);
-extern void __glXDispSwap_EvalCoord1fv(GLbyte*);
-extern void __glXDispSwap_EvalCoord2dv(GLbyte*);
-extern void __glXDispSwap_EvalCoord2fv(GLbyte*);
-extern void __glXDispSwap_EvalMesh1(GLbyte*);
-extern void __glXDispSwap_EvalPoint1(GLbyte*);
-extern void __glXDispSwap_EvalMesh2(GLbyte*);
-extern void __glXDispSwap_EvalPoint2(GLbyte*);
-extern void __glXDispSwap_AlphaFunc(GLbyte*);
-extern void __glXDispSwap_BlendFunc(GLbyte*);
-extern void __glXDispSwap_LogicOp(GLbyte*);
-extern void __glXDispSwap_StencilFunc(GLbyte*);
-extern void __glXDispSwap_StencilOp(GLbyte*);
-extern void __glXDispSwap_DepthFunc(GLbyte*);
-extern void __glXDispSwap_PixelZoom(GLbyte*);
-extern void __glXDispSwap_PixelTransferf(GLbyte*);
-extern void __glXDispSwap_PixelTransferi(GLbyte*);
-extern void __glXDispSwap_PixelMapfv(GLbyte*);
-extern void __glXDispSwap_PixelMapuiv(GLbyte*);
-extern void __glXDispSwap_PixelMapusv(GLbyte*);
-extern void __glXDispSwap_ReadBuffer(GLbyte*);
-extern void __glXDispSwap_CopyPixels(GLbyte*);
-extern void __glXDispSwap_DrawPixels(GLbyte*);
-extern void __glXDispSwap_DepthRange(GLbyte*);
-extern void __glXDispSwap_Frustum(GLbyte*);
-extern void __glXDispSwap_LoadIdentity(GLbyte*);
-extern void __glXDispSwap_LoadMatrixf(GLbyte*);
-extern void __glXDispSwap_LoadMatrixd(GLbyte*);
-extern void __glXDispSwap_MatrixMode(GLbyte*);
-extern void __glXDispSwap_MultMatrixf(GLbyte*);
-extern void __glXDispSwap_MultMatrixd(GLbyte*);
-extern void __glXDispSwap_Ortho(GLbyte*);
-extern void __glXDispSwap_PopMatrix(GLbyte*);
-extern void __glXDispSwap_PushMatrix(GLbyte*);
-extern void __glXDispSwap_Rotated(GLbyte*);
-extern void __glXDispSwap_Rotatef(GLbyte*);
-extern void __glXDispSwap_Scaled(GLbyte*);
-extern void __glXDispSwap_Scalef(GLbyte*);
-extern void __glXDispSwap_Translated(GLbyte*);
-extern void __glXDispSwap_Translatef(GLbyte*);
-extern void __glXDispSwap_Viewport(GLbyte*);
-extern void __glXDispSwap_PolygonOffset(GLbyte*);
-extern void __glXDispSwap_DrawArrays(GLbyte*);
-extern void __glXDispSwap_Indexubv(GLbyte*);
-extern void __glXDispSwap_ColorSubTable(GLbyte*);
-extern void __glXDispSwap_CopyColorSubTable(GLbyte*);
-extern void __glXDispSwap_ActiveTextureARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord1dvARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord1fvARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord1ivARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord1svARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord2dvARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord2fvARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord2ivARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord2svARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord3dvARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord3fvARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord3ivARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord3svARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord4dvARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord4fvARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord4ivARB(GLbyte*);
-extern void __glXDispSwap_MultiTexCoord4svARB(GLbyte*);
-
-extern void __glXDispSwap_TexSubImage1D(GLbyte*);
-extern void __glXDispSwap_TexSubImage2D(GLbyte*);
-extern void __glXDispSwap_ConvolutionFilter1D(GLbyte*);
-extern void __glXDispSwap_ConvolutionFilter2D(GLbyte*);
-extern void __glXDispSwap_ConvolutionParameterfv(GLbyte*);
-extern void __glXDispSwap_ConvolutionParameteriv(GLbyte*);
-extern void __glXDispSwap_CopyConvolutionFilter1D(GLbyte*);
-extern void __glXDispSwap_CopyConvolutionFilter2D(GLbyte*);
-extern void __glXDispSwap_SeparableFilter2D(GLbyte*);
-extern void __glXDispSwap_TexImage3D(GLbyte*);
-extern void __glXDispSwap_TexSubImage3D(GLbyte*);
-extern void __glXDispSwap_DrawArrays(GLbyte*);
-extern void __glXDispSwap_PrioritizeTextures(GLbyte*);
-extern void __glXDispSwap_CopyTexImage1D(GLbyte*);
-extern void __glXDispSwap_CopyTexImage2D(GLbyte*);
-extern void __glXDispSwap_CopyTexSubImage1D(GLbyte*);
-extern void __glXDispSwap_CopyTexSubImage2D(GLbyte*);
-extern void __glXDispSwap_CopyTexSubImage3D(GLbyte*);
-
-#define __GLX_MIN_GLXCMD_OPCODE 1
-#define __GLX_MAX_GLXCMD_OPCODE 20
-#define __GLX_MIN_RENDER_OPCODE 1
-#define __GLX_MAX_RENDER_OPCODE 213
-#define __GLX_MIN_SINGLE_OPCODE 1
-#define __GLX_MAX_SINGLE_OPCODE 159
-#define __GLX_SINGLE_TABLE_SIZE 160
-#define __GLX_RENDER_TABLE_SIZE 214
-
-#define __GLX_MIN_RENDER_OPCODE_EXT 4096
-#define __GLX_MAX_RENDER_OPCODE_EXT 4123
-
-extern __GLXdispatchSingleProcPtr __glXSingleTable[__GLX_SINGLE_TABLE_SIZE];
-extern __GLXdispatchSingleProcPtr __glXSwapSingleTable[__GLX_SINGLE_TABLE_SIZE];
-#endif /* _GLX_g_disptab_h_ */
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/g_renderswap.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/g_renderswap.c
deleted file mode 100644
index 4f40dfd01..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/g_renderswap.c
+++ /dev/null
@@ -1,2360 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: This software was created using the
-** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
-** not been independently verified as being compliant with the OpenGL(R)
-** version 1.2.1 Specification.
-*/
-
-#define NEED_REPLIES
-#include "glxserver.h"
-#include "glxext.h"
-#include "g_disptab.h"
-#include "unpack.h"
-
-void __glXDispSwap_CallList(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_ListBase(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_Begin(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_Color3bv(GLbyte *pc)
-{
-}
-
-void __glXDispSwap_Color3dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 24);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_Color3fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 3);
-}
-
-void __glXDispSwap_Color3iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_Color3sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_Color3ubv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-}
-
-void __glXDispSwap_Color3uiv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 3);
-}
-
-void __glXDispSwap_Color3usv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 3);
-}
-
-void __glXDispSwap_Color4bv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-}
-
-void __glXDispSwap_Color4dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 32);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 4);
-}
-
-void __glXDispSwap_Color4fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_Color4iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_Color4sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_Color4ubv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-}
-
-void __glXDispSwap_Color4uiv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_Color4usv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_EdgeFlagv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-}
-
-void __glXDispSwap_End(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-}
-
-void __glXDispSwap_Indexdv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 8);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 1);
-
-}
-
-void __glXDispSwap_Indexfv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 1);
-
-}
-
-void __glXDispSwap_Indexiv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 1);
-
-}
-
-void __glXDispSwap_Indexsv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 1);
-
-}
-
-void __glXDispSwap_Normal3bv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-}
-
-void __glXDispSwap_Normal3dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 24);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_Normal3fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_Normal3iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_Normal3sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_RasterPos2dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 16);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_RasterPos2fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_RasterPos2iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_RasterPos2sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_RasterPos3dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 24);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_RasterPos3fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_RasterPos3iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_RasterPos3sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_RasterPos4dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 32);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_RasterPos4fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_RasterPos4iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_RasterPos4sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_Rectdv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 32);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 2);
- __GLX_SWAP_DOUBLE_ARRAY(pc + 16, 2);
-
-}
-
-void __glXDispSwap_Rectfv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 2);
- __GLX_SWAP_FLOAT_ARRAY(pc + 8, 2);
-
-}
-
-void __glXDispSwap_Rectiv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 2);
- __GLX_SWAP_INT_ARRAY(pc + 8, 2);
-
-}
-
-void __glXDispSwap_Rectsv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 2);
- __GLX_SWAP_SHORT_ARRAY(pc + 4, 2);
-
-}
-
-void __glXDispSwap_TexCoord1dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 8);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 1);
-
-}
-
-void __glXDispSwap_TexCoord1fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 1);
-
-}
-
-void __glXDispSwap_TexCoord1iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 1);
-
-}
-
-void __glXDispSwap_TexCoord1sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 1);
-
-}
-
-void __glXDispSwap_TexCoord2dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 16);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_TexCoord2fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_TexCoord2iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_TexCoord2sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_TexCoord3dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 24);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_TexCoord3fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_TexCoord3iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_TexCoord3sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_TexCoord4dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 32);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_TexCoord4fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_TexCoord4iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_TexCoord4sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_Vertex2dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 16);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_Vertex2fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_Vertex2iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_Vertex2sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_Vertex3dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 24);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_Vertex3fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_Vertex3iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_Vertex3sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_Vertex4dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 32);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_Vertex4fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_Vertex4iv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_Vertex4sv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_ClipPlane(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 36);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_INT(pc + 32);
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_ColorMaterial(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
-
-}
-
-void __glXDispSwap_CullFace(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_Fogf(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
-
-}
-
-void __glXDispSwap_Fogfv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- pname = *(GLenum *)(pc + 0);
- compsize = __glFogfv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_FLOAT_ARRAY(pc + 4, compsize);
-
-}
-
-void __glXDispSwap_Fogi(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
-
-}
-
-void __glXDispSwap_Fogiv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- pname = *(GLenum *)(pc + 0);
- compsize = __glFogiv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT_ARRAY(pc + 4, compsize);
-
-}
-
-void __glXDispSwap_FrontFace(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_Hint(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
-
-}
-
-void __glXDispSwap_Lightf(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
-
-}
-
-void __glXDispSwap_Lightfv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glLightfv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_Lighti(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
-
-}
-
-void __glXDispSwap_Lightiv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glLightiv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_LightModelf(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
-
-}
-
-void __glXDispSwap_LightModelfv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- pname = *(GLenum *)(pc + 0);
- compsize = __glLightModelfv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_FLOAT_ARRAY(pc + 4, compsize);
-
-}
-
-void __glXDispSwap_LightModeli(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
-
-}
-
-void __glXDispSwap_LightModeliv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- pname = *(GLenum *)(pc + 0);
- compsize = __glLightModeliv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT_ARRAY(pc + 4, compsize);
-
-}
-
-void __glXDispSwap_LineStipple(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_SHORT(pc + 4);
-
-}
-
-void __glXDispSwap_LineWidth(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT(pc + 0);
-
-}
-
-void __glXDispSwap_Materialf(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
-
-}
-
-void __glXDispSwap_Materialfv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glMaterialfv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_Materiali(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
-
-}
-
-void __glXDispSwap_Materialiv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glMaterialiv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_PointSize(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT(pc + 0);
-
-}
-
-void __glXDispSwap_PolygonMode(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
-
-}
-
-void __glXDispSwap_Scissor(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
-
-}
-
-void __glXDispSwap_ShadeModel(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_TexParameterf(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
-
-}
-
-void __glXDispSwap_TexParameterfv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glTexParameterfv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_TexParameteri(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
-
-}
-
-void __glXDispSwap_TexParameteriv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glTexParameteriv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_TexEnvf(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
-
-}
-
-void __glXDispSwap_TexEnvfv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glTexEnvfv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_TexEnvi(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
-
-}
-
-void __glXDispSwap_TexEnviv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glTexEnviv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_TexGend(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 16);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_DOUBLE(pc + 0);
-
-}
-
-void __glXDispSwap_TexGendv(GLbyte *pc)
-{
- GLenum pname;
- GLint cmdlen;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glTexGendv_size(pname);
- if (compsize < 0) compsize = 0;
- cmdlen = __GLX_PAD(8+compsize*8);
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, cmdlen);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_DOUBLE_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_TexGenf(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
-
-}
-
-void __glXDispSwap_TexGenfv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glTexGenfv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_TexGeni(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
-
-}
-
-void __glXDispSwap_TexGeniv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glTexGeniv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_InitNames(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-}
-
-void __glXDispSwap_LoadName(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_PassThrough(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT(pc + 0);
-
-}
-
-void __glXDispSwap_PopName(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-}
-
-void __glXDispSwap_PushName(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_DrawBuffer(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_Clear(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_ClearAccum(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
- __GLX_SWAP_FLOAT(pc + 12);
-
-}
-
-void __glXDispSwap_ClearIndex(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT(pc + 0);
-
-}
-
-void __glXDispSwap_ClearColor(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
- __GLX_SWAP_FLOAT(pc + 12);
-
-}
-
-void __glXDispSwap_ClearStencil(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_ClearDepth(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 8);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE(pc + 0);
-
-}
-
-void __glXDispSwap_StencilMask(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_ColorMask(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-}
-
-void __glXDispSwap_DepthMask(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-}
-
-void __glXDispSwap_IndexMask(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_Accum(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
-
-}
-
-void __glXDispSwap_Disable(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_Enable(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_PopAttrib(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-}
-
-void __glXDispSwap_PushAttrib(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_MapGrid1d(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 20);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_INT(pc + 16);
- __GLX_SWAP_DOUBLE(pc + 0);
- __GLX_SWAP_DOUBLE(pc + 8);
-
-}
-
-void __glXDispSwap_MapGrid1f(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
-
-}
-
-void __glXDispSwap_MapGrid2d(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 40);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_INT(pc + 32);
- __GLX_SWAP_DOUBLE(pc + 0);
- __GLX_SWAP_DOUBLE(pc + 8);
- __GLX_SWAP_INT(pc + 36);
- __GLX_SWAP_DOUBLE(pc + 16);
- __GLX_SWAP_DOUBLE(pc + 24);
-
-}
-
-void __glXDispSwap_MapGrid2f(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_FLOAT(pc + 16);
- __GLX_SWAP_FLOAT(pc + 20);
-
-}
-
-void __glXDispSwap_EvalCoord1dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 8);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 1);
-
-}
-
-void __glXDispSwap_EvalCoord1fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 1);
-
-}
-
-void __glXDispSwap_EvalCoord2dv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 16);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_EvalCoord2fv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_EvalMesh1(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
-
-}
-
-void __glXDispSwap_EvalPoint1(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_EvalMesh2(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 16);
-
-}
-
-void __glXDispSwap_EvalPoint2(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
-
-}
-
-void __glXDispSwap_AlphaFunc(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
-
-}
-
-void __glXDispSwap_BlendFunc(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
-
-}
-
-void __glXDispSwap_LogicOp(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_StencilFunc(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
-
-}
-
-void __glXDispSwap_StencilOp(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
-
-}
-
-void __glXDispSwap_DepthFunc(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_PixelZoom(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
-
-}
-
-void __glXDispSwap_PixelTransferf(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
-
-}
-
-void __glXDispSwap_PixelTransferi(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
-
-}
-
-void __glXDispSwap_PixelMapfv(GLbyte *pc)
-{
- GLint mapsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- mapsize = *(GLint *)(pc + 4);
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT_ARRAY(pc + 8, mapsize);
-
-}
-
-void __glXDispSwap_PixelMapuiv(GLbyte *pc)
-{
- GLint mapsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- mapsize = *(GLint *)(pc + 4);
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 8, mapsize);
-
-}
-
-void __glXDispSwap_PixelMapusv(GLbyte *pc)
-{
- GLint mapsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- mapsize = *(GLint *)(pc + 4);
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_SHORT_ARRAY(pc + 8, mapsize);
-
-}
-
-void __glXDispSwap_ReadBuffer(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_CopyPixels(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 16);
-
-}
-
-void __glXDispSwap_DepthRange(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 16);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE(pc + 0);
- __GLX_SWAP_DOUBLE(pc + 8);
-
-}
-
-void __glXDispSwap_Frustum(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 48);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE(pc + 0);
- __GLX_SWAP_DOUBLE(pc + 8);
- __GLX_SWAP_DOUBLE(pc + 16);
- __GLX_SWAP_DOUBLE(pc + 24);
- __GLX_SWAP_DOUBLE(pc + 32);
- __GLX_SWAP_DOUBLE(pc + 40);
-
-}
-
-void __glXDispSwap_LoadIdentity(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-}
-
-void __glXDispSwap_LoadMatrixf(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 16);
-
-}
-
-void __glXDispSwap_LoadMatrixd(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 128);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 16);
-
-}
-
-void __glXDispSwap_MatrixMode(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_MultMatrixf(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT_ARRAY(pc + 0, 16);
-
-}
-
-void __glXDispSwap_MultMatrixd(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 128);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 16);
-
-}
-
-void __glXDispSwap_Ortho(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 48);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE(pc + 0);
- __GLX_SWAP_DOUBLE(pc + 8);
- __GLX_SWAP_DOUBLE(pc + 16);
- __GLX_SWAP_DOUBLE(pc + 24);
- __GLX_SWAP_DOUBLE(pc + 32);
- __GLX_SWAP_DOUBLE(pc + 40);
-
-}
-
-void __glXDispSwap_PopMatrix(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-}
-
-void __glXDispSwap_PushMatrix(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-}
-
-void __glXDispSwap_Rotated(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 32);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE(pc + 0);
- __GLX_SWAP_DOUBLE(pc + 8);
- __GLX_SWAP_DOUBLE(pc + 16);
- __GLX_SWAP_DOUBLE(pc + 24);
-
-}
-
-void __glXDispSwap_Rotatef(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
- __GLX_SWAP_FLOAT(pc + 12);
-
-}
-
-void __glXDispSwap_Scaled(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 24);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE(pc + 0);
- __GLX_SWAP_DOUBLE(pc + 8);
- __GLX_SWAP_DOUBLE(pc + 16);
-
-}
-
-void __glXDispSwap_Scalef(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
-
-}
-
-void __glXDispSwap_Translated(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 24);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_DOUBLE(pc + 0);
- __GLX_SWAP_DOUBLE(pc + 8);
- __GLX_SWAP_DOUBLE(pc + 16);
-
-}
-
-void __glXDispSwap_Translatef(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
-
-}
-
-void __glXDispSwap_Viewport(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
-
-}
-
-void __glXDispSwap_PolygonOffset(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
-
-}
-
-void __glXDispSwap_CopyTexImage1D(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 16);
- __GLX_SWAP_INT(pc + 20);
- __GLX_SWAP_INT(pc + 24);
-
-}
-
-void __glXDispSwap_CopyTexImage2D(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 16);
- __GLX_SWAP_INT(pc + 20);
- __GLX_SWAP_INT(pc + 24);
- __GLX_SWAP_INT(pc + 28);
-
-}
-
-void __glXDispSwap_CopyTexSubImage1D(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 16);
- __GLX_SWAP_INT(pc + 20);
-
-}
-
-void __glXDispSwap_CopyTexSubImage2D(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 16);
- __GLX_SWAP_INT(pc + 20);
- __GLX_SWAP_INT(pc + 24);
- __GLX_SWAP_INT(pc + 28);
-
-}
-
-void __glXDispSwap_BindTexture(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
-
-}
-
-void __glXDispSwap_PrioritizeTextures(GLbyte *pc)
-{
- GLsizei n;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- n = *(GLsizei *)(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 4, n);
- __GLX_SWAP_FLOAT_ARRAY(pc + 4+n*4, n);
-
-}
-
-void __glXDispSwap_Indexubv(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-}
-
-void __glXDispSwap_BlendColor(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_FLOAT(pc + 0);
- __GLX_SWAP_FLOAT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
- __GLX_SWAP_FLOAT(pc + 12);
-
-}
-
-void __glXDispSwap_BlendEquation(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_ColorTableParameterfv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glColorTableParameterfv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_ColorTableParameteriv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glColorTableParameteriv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_CopyColorTable(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 16);
-
-}
-
-void __glXDispSwap_CopyColorSubTable(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 16);
-
-}
-
-void __glXDispSwap_ConvolutionParameterf(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
-
-}
-
-void __glXDispSwap_ConvolutionParameterfv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glConvolutionParameterfv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_ConvolutionParameteri(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
-
-}
-
-void __glXDispSwap_ConvolutionParameteriv(GLbyte *pc)
-{
- GLenum pname;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- pname = *(GLenum *)(pc + 4);
- compsize = __glConvolutionParameteriv_size(pname);
- if (compsize < 0) compsize = 0;
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 8, compsize);
-
-}
-
-void __glXDispSwap_CopyConvolutionFilter1D(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 16);
-
-}
-
-void __glXDispSwap_CopyConvolutionFilter2D(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 16);
- __GLX_SWAP_INT(pc + 20);
-
-}
-
-void __glXDispSwap_Histogram(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
-
-}
-
-void __glXDispSwap_Minmax(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
-
-}
-
-void __glXDispSwap_ResetHistogram(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_ResetMinmax(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_CopyTexSubImage3D(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 16);
- __GLX_SWAP_INT(pc + 20);
- __GLX_SWAP_INT(pc + 24);
- __GLX_SWAP_INT(pc + 28);
- __GLX_SWAP_INT(pc + 32);
-
-}
-
-void __glXDispSwap_ActiveTextureARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
-
-}
-
-void __glXDispSwap_MultiTexCoord1dvARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 12);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 1);
-
-}
-
-void __glXDispSwap_MultiTexCoord1fvARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT_ARRAY(pc + 4, 1);
-
-}
-
-void __glXDispSwap_MultiTexCoord1ivARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 4, 1);
-
-}
-
-void __glXDispSwap_MultiTexCoord1svARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_SHORT_ARRAY(pc + 4, 1);
-
-}
-
-void __glXDispSwap_MultiTexCoord2dvARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 20);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_INT(pc + 16);
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 2);
-
-}
-
-void __glXDispSwap_MultiTexCoord2fvARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT_ARRAY(pc + 4, 2);
-
-}
-
-void __glXDispSwap_MultiTexCoord2ivARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 4, 2);
-
-}
-
-void __glXDispSwap_MultiTexCoord2svARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_SHORT_ARRAY(pc + 4, 2);
-
-}
-
-void __glXDispSwap_MultiTexCoord3dvARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 28);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_INT(pc + 24);
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 3);
-
-}
-
-void __glXDispSwap_MultiTexCoord3fvARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT_ARRAY(pc + 4, 3);
-
-}
-
-void __glXDispSwap_MultiTexCoord3ivARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 4, 3);
-
-}
-
-void __glXDispSwap_MultiTexCoord3svARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_SHORT_ARRAY(pc + 4, 3);
-
-}
-
-void __glXDispSwap_MultiTexCoord4dvARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
-
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- __GLX_MEM_COPY(pc-4, pc, 36);
- pc -= 4;
- }
-#endif
- __GLX_SWAP_INT(pc + 32);
- __GLX_SWAP_DOUBLE_ARRAY(pc + 0, 4);
-
-}
-
-void __glXDispSwap_MultiTexCoord4fvARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_FLOAT_ARRAY(pc + 4, 4);
-
-}
-
-void __glXDispSwap_MultiTexCoord4ivARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT_ARRAY(pc + 4, 4);
-
-}
-
-void __glXDispSwap_MultiTexCoord4svARB(GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_SHORT_ARRAY(pc + 4, 4);
-
-}
-
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/global.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/global.c
deleted file mode 100644
index 960021a2b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/global.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/global.c,v 1.3 2001/03/21 16:29:35 dawes Exp $ */
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#define NEED_REPLIES
-#include "glxserver.h"
-
-/*
-** The last context used by the server. It is the context that is current
-** from the server's perspective.
-*/
-__GLXcontext *__glXLastContext;
-
-/*
-** X resources.
-*/
-RESTYPE __glXContextRes;
-RESTYPE __glXClientRes;
-RESTYPE __glXPixmapRes;
-RESTYPE __glXWindowRes;
-RESTYPE __glXPbufferRes;
-
-/*
-** Error codes with the extension error base already added in.
-*/
-int __glXerrorBase;
-int __glXBadContext, __glXBadContextState, __glXBadDrawable, __glXBadPixmap;
-int __glXBadContextTag, __glXBadCurrentWindow;
-int __glXBadRenderRequest, __glXBadLargeRequest;
-int __glXUnsupportedPrivateRequest;
-int __glXBadFBConfig, __glXBadPbuffer;
-
-/*
-** Reply for most singles.
-*/
-xGLXSingleReply __glXReply;
-
-/*
-** A set of state for each client. The 0th one is unused because client
-** indices start at 1, not 0.
-*/
-__GLXclientState *__glXClients[MAXCLIENTS+1];
-
-int __glXVersionMajor;
-int __glXVersionMinor;
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcmds.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcmds.c
deleted file mode 100644
index 8c466e13c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcmds.c
+++ /dev/null
@@ -1,3636 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxcmds.c,v 1.8 2001/05/02 15:06:05 dawes Exp $ */
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxwindow.h"
-#include "dmxpixmap.h"
-#include "dmxfont.h"
-#include "dmxsync.h"
-
-#undef Xmalloc
-#undef Xcalloc
-#undef Xrealloc
-#undef Xfree
-
-#define NEED_REPLIES
-#define FONT_PCF
-#include "glxserver.h"
-#include <GL/glxtokens.h>
-#include "g_disptab.h"
-#include <pixmapstr.h>
-#include <windowstr.h>
-#include "glxutil.h"
-#include "glxext.h"
-#include "unpack.h"
-#include "GL/glx_ansic.h"
-
-#include "GL/glxproto.h"
-#include "glxvendor.h"
-#include "glxvisuals.h"
-#include "glxswap.h"
-
-#ifdef PANORAMIX
-#include "panoramiXsrv.h"
-extern XID *PanoramiXVisualTable;
-#endif
-
-extern __GLXFBConfig **__glXFBConfigs;
-extern int __glXNumFBConfigs;
-
-extern __GLXFBConfig *glxLookupFBConfig( GLXFBConfigID id );
-extern __GLXFBConfig *glxLookupFBConfigByVID( VisualID vid );
-extern __GLXFBConfig *glxLookupBackEndFBConfig( GLXFBConfigID id, int screen );
-extern int glxIsExtensionSupported( char *ext );
-extern int __glXGetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc);
-
-#define BE_TO_CLIENT_ERROR(x) \
- ( (x) >= __glXerrorBase ? \
- (x) - dmxScreen->glxErrorBase + __glXerrorBase \
- : (x) )
-
-Display *GetBackEndDisplay( __GLXclientState *cl, int s )
-{
- if (! cl->be_displays[s] ) {
- cl->be_displays[s] = XOpenDisplay( DisplayString(dmxScreens[s].beDisplay) );
- }
- return( cl->be_displays[s] );
-}
-
-/*
-** Create a GL context with the given properties.
-*/
-static int CreateContext(__GLXclientState *cl,
- GLXContextID gcId,
- VisualID vid, GLXFBConfigID fbconfigId,
- int screen,
- GLXContextID shareList,
- int isDirect )
-{
- ClientPtr client = cl->client;
- xGLXCreateContextReq *be_req;
- xGLXCreateNewContextReq *be_new_req;
- VisualPtr pVisual;
- ScreenPtr pScreen;
- __GLXcontext *glxc, *shareglxc;
- __GLXvisualConfig *pGlxVisual;
- __GLXscreenInfo *pGlxScreen;
- VisualID visual = vid;
- GLint i;
- int from_screen = screen;
- int to_screen = screen;
- DMXScreenInfo *dmxScreen;
- VisualID be_vid;
- GLXFBConfigID be_fbconfigId;
- int num_be_screens;
- Display *dpy;
-
- /*
- ** Check if screen exists.
- */
- if (screen >= screenInfo.numScreens) {
- client->errorValue = screen;
- return BadValue;
- }
-
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- /*
- ** Find the display list space that we want to share.
- **
- */
- if (shareList == None) {
- shareglxc = NULL;
- } else {
- shareglxc = (__GLXcontext *) LookupIDByType(shareList, __glXContextRes);
- if (!shareglxc) {
- client->errorValue = shareList;
- return __glXBadContext;
- }
- }
-
- /*
- ** Allocate memory for the new context
- */
- glxc = (__GLXcontext *) __glXMalloc(sizeof(__GLXcontext));
- if (!glxc) {
- return BadAlloc;
- }
- __glXMemset(glxc, 0, sizeof(__GLXcontext));
-
- pScreen = screenInfo.screens[screen];
- pGlxScreen = &__glXActiveScreens[screen];
-
- if (fbconfigId != None) {
- glxc->pFBConfig = glxLookupFBConfig( fbconfigId );
- if (!glxc->pFBConfig) {
- client->errorValue = fbconfigId;
- __glXFree( glxc );
- return BadValue;
- }
- visual = glxc->pFBConfig->associatedVisualId;
- }
- else {
- glxc->pFBConfig = NULL;
- }
-
- if (visual != None) {
- /*
- ** Check if the visual ID is valid for this screen.
- */
- pVisual = pScreen->visuals;
- for (i = 0; i < pScreen->numVisuals; i++, pVisual++) {
- if (pVisual->vid == visual) {
- break;
- }
- }
- if (i == pScreen->numVisuals) {
- client->errorValue = visual;
- __glXFree( glxc );
- return BadValue;
- }
-
- pGlxVisual = pGlxScreen->pGlxVisual;
- for (i = 0; i < pGlxScreen->numVisuals; i++, pGlxVisual++) {
- if (pGlxVisual->vid == visual) {
- break;
- }
- }
- if (i == pGlxScreen->numVisuals) {
- /*
- ** Visual not support on this screen by this OpenGL implementation.
- */
- client->errorValue = visual;
- __glXFree( glxc );
- return BadValue;
- }
-
- if ( glxc->pFBConfig == NULL ) {
- glxc->pFBConfig = glxLookupFBConfigByVID( visual );
-
- if ( glxc->pFBConfig == NULL ) {
- /*
- * visual does not have an FBConfig ???
- client->errorValue = visual;
- __glXFree( glxc );
- return BadValue;
- */
- }
- }
- }
- else {
- pVisual = NULL;
- pGlxVisual = NULL;
- }
-
- glxc->pScreen = pScreen;
- glxc->pGlxScreen = pGlxScreen;
- glxc->pVisual = pVisual;
- glxc->pGlxVisual = pGlxVisual;
-
- /*
- * allocate memory for back-end servers info
- */
- num_be_screens = to_screen - from_screen + 1;
- glxc->real_ids = (XID *)__glXMalloc(sizeof(XID) * num_be_screens);
- if (!glxc->real_ids) {
- return BadAlloc;
- }
- glxc->real_vids = (XID *)__glXMalloc(sizeof(XID) * num_be_screens);
- if (!glxc->real_vids) {
- return BadAlloc;
- }
-
- for (screen = from_screen; screen <= to_screen; screen++) {
- int sent = 0;
- pScreen = screenInfo.screens[screen];
- pGlxScreen = &__glXActiveScreens[screen];
- dmxScreen = &dmxScreens[screen];
-
- if (glxc->pFBConfig) {
- __GLXFBConfig *beFBConfig = glxLookupBackEndFBConfig( glxc->pFBConfig->id,
- screen );
- be_fbconfigId = beFBConfig->id;
- }
-
- if (pGlxVisual) {
-
- be_vid = glxMatchGLXVisualInConfigList( pGlxVisual,
- dmxScreen->glxVisuals,
- dmxScreen->numGlxVisuals );
-
- if (!be_vid) {
- /* visual is not supported on the back-end server */
- __glXFree( glxc->real_ids );
- __glXFree( glxc->real_vids );
- __glXFree( glxc );
- return BadValue;
- }
- }
-
- glxc->real_ids[screen-from_screen] = XAllocID(GetBackEndDisplay(cl,screen));
-
- /* send the create context request to the back-end server */
- dpy = GetBackEndDisplay(cl,screen);
- if (glxc->pFBConfig) {
- /*Since for a certain visual both RGB and COLOR INDEX
- *can be on then the only parmeter to choose the renderType
- * should be the class of the colormap since all 4 first
- * classes does not support RGB mode only COLOR INDEX ,
- * and so TrueColor and DirectColor does not support COLOR INDEX*/
- int renderType = glxc->pFBConfig->renderType;
- if ( pVisual ) {
- switch ( pVisual->class ){
- case PseudoColor:
- case StaticColor:
- case GrayScale:
- case StaticGray:
- renderType = GLX_COLOR_INDEX_TYPE;
- break;
- case TrueColor:
- case DirectColor:
- default:
- renderType = GLX_RGBA_TYPE;
- break;
- }
- }
- if ( __GLX_IS_VERSION_SUPPORTED(1,3) ) {
- LockDisplay(dpy);
- GetReq(GLXCreateNewContext,be_new_req);
- be_new_req->reqType = dmxScreen->glxMajorOpcode;
- be_new_req->glxCode = X_GLXCreateNewContext;
- be_new_req->context = (unsigned int)glxc->real_ids[screen-from_screen];
- be_new_req->fbconfig = (unsigned int)be_fbconfigId;
- be_new_req->screen = DefaultScreen(dpy);
- be_new_req->renderType = renderType;
-
- be_new_req->shareList = (shareglxc ? shareglxc->real_ids[screen-from_screen] : 0);
- be_new_req->isDirect = 0;
- UnlockDisplay(dpy);
- glxc->real_vids[screen-from_screen] = be_fbconfigId;
- sent = 1;
- }
- else if (glxIsExtensionSupported("GLX_SGIX_fbconfig")) {
-
- xGLXCreateContextWithConfigSGIXReq *ext_req;
- xGLXVendorPrivateReq *vpreq;
- LockDisplay(dpy);
- GetReqExtra(GLXVendorPrivate,
- sz_xGLXCreateContextWithConfigSGIXReq - sz_xGLXVendorPrivateReq,
- vpreq);
- ext_req = (xGLXCreateContextWithConfigSGIXReq *)vpreq;
- ext_req->reqType = dmxScreen->glxMajorOpcode;
- ext_req->glxCode = X_GLXVendorPrivate;
- ext_req->vendorCode = X_GLXvop_CreateContextWithConfigSGIX;
- ext_req->context = (unsigned int)glxc->real_ids[screen-from_screen];
- ext_req->fbconfig = (unsigned int)be_fbconfigId;
- ext_req->screen = DefaultScreen(dpy);
- ext_req->renderType = renderType;
- ext_req->shareList = (shareglxc ? shareglxc->real_ids[screen-from_screen] : 0);
- ext_req->isDirect = 0;
- UnlockDisplay(dpy);
- glxc->real_vids[screen-from_screen] = be_fbconfigId;
- sent = 1;
- }
- }
-
- if (!sent) {
- LockDisplay(dpy);
- GetReq(GLXCreateContext,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXCreateContext;
- be_req->context = (unsigned int)glxc->real_ids[screen-from_screen];
- be_req->visual = (unsigned int)be_vid;
- be_req->screen = DefaultScreen(dpy);
- be_req->shareList = (shareglxc ? shareglxc->real_ids[screen-from_screen] : 0);
- be_req->isDirect = 0;
- UnlockDisplay(dpy);
- glxc->real_vids[screen-from_screen] = be_vid;
- }
- SyncHandle();
-
- }
-
- /*
- ** Register this context as a resource.
- */
- if (!AddResource(gcId, __glXContextRes, (pointer)glxc)) {
- __glXFree( glxc->real_ids );
- __glXFree( glxc->real_vids );
- __glXFree( glxc );
- client->errorValue = gcId;
- return BadAlloc;
- }
-
- /*
- ** Finally, now that everything is working, setup the rest of the
- ** context.
- */
- glxc->id = gcId;
- glxc->share_id = shareList;
- glxc->idExists = GL_TRUE;
- glxc->isCurrent = GL_FALSE;
-
- return Success;
-}
-
-int __glXCreateContext(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreateContextReq *req = (xGLXCreateContextReq *) pc;
-
- return( CreateContext(cl, req->context,req->visual, None,
- req->screen, req->shareList, req->isDirect) );
-
-}
-
-int __glXCreateNewContext(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreateNewContextReq *req = (xGLXCreateNewContextReq *) pc;
-
- return( CreateContext(cl, req->context,None, req->fbconfig,
- req->screen, req->shareList, req->isDirect) );
-
-}
-
-int __glXCreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreateContextWithConfigSGIXReq *req = (xGLXCreateContextWithConfigSGIXReq *) pc;
-
- return( CreateContext(cl, req->context, None, req->fbconfig,
- req->screen, req->shareList, req->isDirect) );
-
-}
-
-int __glXQueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryMaxSwapBarriersSGIXReq *req =
- (xGLXQueryMaxSwapBarriersSGIXReq *)pc;
- xGLXQueryMaxSwapBarriersSGIXReply reply;
-
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- reply.length = 0;
- reply.max = QueryMaxSwapBarriersSGIX(req->screen);
-
- if (client->swapped) {
- __glXSwapQueryMaxSwapBarriersSGIXReply(client, &reply);
- } else {
- WriteToClient(client, sz_xGLXQueryMaxSwapBarriersSGIXReply,
- (char *)&reply);
- }
-
- return Success;
-}
-
-int __glXBindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXBindSwapBarrierSGIXReq *req = (xGLXBindSwapBarrierSGIXReq *)pc;
- DrawablePtr pDraw;
- __GLXpixmap *pGlxPixmap = NULL;
- __glXWindow *pGlxWindow = NULL;
-
- pDraw = (DrawablePtr) LookupDrawable(req->drawable, client);
- if (!pDraw) {
- pGlxPixmap = (__GLXpixmap *) LookupIDByType(req->drawable,
- __glXPixmapRes);
- if (pGlxPixmap) pDraw = pGlxPixmap->pDraw;
- }
-
- if (!pDraw && __GLX_IS_VERSION_SUPPORTED(1,3) ) {
- pGlxWindow = (__glXWindow *) LookupIDByType(req->drawable,
- __glXWindowRes);
- if (pGlxWindow) pDraw = pGlxWindow->pDraw;
- }
-
- if (!pDraw) {
- client->errorValue = req->drawable;
- return __glXBadDrawable;
- }
-
- return BindSwapBarrierSGIX(pDraw, req->barrier);
-}
-
-int __glXJoinSwapGroupSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXJoinSwapGroupSGIXReq *req = (xGLXJoinSwapGroupSGIXReq *)pc;
- DrawablePtr pDraw, pMember = NULL;
- __GLXpixmap *pGlxPixmap = NULL;
- __glXWindow *pGlxWindow = NULL;
-
- pDraw = (DrawablePtr) LookupDrawable(req->drawable, client);
- if (!pDraw) {
- pGlxPixmap = (__GLXpixmap *) LookupIDByType(req->drawable,
- __glXPixmapRes);
- if (pGlxPixmap) pDraw = pGlxPixmap->pDraw;
- }
-
- if (!pDraw && __GLX_IS_VERSION_SUPPORTED(1,3) ) {
- pGlxWindow = (__glXWindow *) LookupIDByType(req->drawable,
- __glXWindowRes);
- if (pGlxWindow) pDraw = pGlxWindow->pDraw;
- }
-
- if (!pDraw) {
- client->errorValue = req->drawable;
- return __glXBadDrawable;
- }
-
- if (req->member != None) {
- pMember = (DrawablePtr) LookupDrawable(req->member, client);
- if (!pMember) {
- pGlxPixmap = (__GLXpixmap *) LookupIDByType(req->member,
- __glXPixmapRes);
- if (pGlxPixmap) pMember = pGlxPixmap->pDraw;
- }
-
- if (!pMember && __GLX_IS_VERSION_SUPPORTED(1,3) ) {
- pGlxWindow = (__glXWindow *) LookupIDByType(req->member,
- __glXWindowRes);
- if (pGlxWindow) pMember = pGlxWindow->pDraw;
- }
-
- if (!pMember) {
- client->errorValue = req->member;
- return __glXBadDrawable;
- }
- }
-
- return JoinSwapGroupSGIX(pDraw, pMember);
-}
-
-
-/*
-** Destroy a GL context as an X resource.
-*/
-int __glXDestroyContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyContextReq *req = (xGLXDestroyContextReq *) pc;
- xGLXDestroyContextReq *be_req;
- GLXContextID gcId = req->context;
- __GLXcontext *glxc;
- int from_screen = 0;
- int to_screen = 0;
- int s;
-
- glxc = (__GLXcontext *) LookupIDByType(gcId, __glXContextRes);
- if (glxc) {
- /*
- ** Just free the resource; don't actually destroy the context,
- ** because it might be in use. The
- ** destroy method will be called by the resource destruction routine
- ** if necessary.
- */
- FreeResourceByType(gcId, __glXContextRes, FALSE);
-
- from_screen = to_screen = glxc->pScreen->myNum;
-
- } else {
- client->errorValue = gcId;
- return __glXBadContext;
- }
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- /*
- * send DestroyContext request to all back-end servers
- */
- for (s=from_screen; s<=to_screen; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
-
- LockDisplay(dpy);
- GetReq(GLXDestroyContext,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXDestroyContext;
- be_req->context = glxc->real_ids[s-from_screen];
- UnlockDisplay(dpy);
- SyncHandle();
- }
-
- return Success;
-}
-
-/*****************************************************************************/
-
-/*
-** For each client, the server keeps a table of all the contexts that are
-** current for that client (each thread of a client may have its own current
-** context). These routines add, change, and lookup contexts in the table.
-*/
-
-/*
-** Add a current context, and return the tag that will be used to refer to it.
-*/
-static int AddCurrentContext(__GLXclientState *cl, __GLXcontext *glxc, DrawablePtr pDraw)
-{
- int i;
- int num = cl->numCurrentContexts;
- __GLXcontext **table = cl->currentContexts;
-
- if (!glxc) return -1;
-
- /*
- ** Try to find an empty slot and use it.
- */
- for (i=0; i < num; i++) {
- if (!table[i]) {
- table[i] = glxc;
- return i+1;
- }
- }
- /*
- ** Didn't find a free slot, so we'll have to grow the table.
- */
- if (!num) {
- table = (__GLXcontext **) __glXMalloc(sizeof(__GLXcontext *));
- cl->currentDrawables = (DrawablePtr *) __glXMalloc(sizeof(DrawablePtr));
- cl->be_currentCTag = (GLXContextTag *) __glXMalloc(screenInfo.numScreens *sizeof(GLXContextTag));
- } else {
- table = (__GLXcontext **) __glXRealloc(table,
- (num+1)*sizeof(__GLXcontext *));
- cl->currentDrawables = (DrawablePtr *) __glXRealloc(
- cl->currentDrawables ,
- (num+1)*sizeof(DrawablePtr));
- cl->be_currentCTag = (GLXContextTag *) __glXRealloc(cl->be_currentCTag,
- (num+1)*screenInfo.numScreens*sizeof(GLXContextTag));
- }
- table[num] = glxc;
- cl->currentDrawables[num] = pDraw;
- cl->currentContexts = table;
- cl->numCurrentContexts++;
-
- __glXMemset(cl->be_currentCTag + num*screenInfo.numScreens, 0,
- screenInfo.numScreens * sizeof(Display *));
-
- return num+1;
-}
-
-/*
-** Given a tag, change the current context for the corresponding entry.
-*/
-static void ChangeCurrentContext(__GLXclientState *cl, __GLXcontext *glxc,
- GLXContextTag tag)
-{
- __GLXcontext **table = cl->currentContexts;
- table[tag-1] = glxc;
-}
-
-/*
-** Given a tag, and back-end screen number, retrives the current back-end
-** tag.
-*/
-int GetCurrentBackEndTag(__GLXclientState *cl, GLXContextTag tag, int s)
-{
- if (tag >0) {
- return( cl->be_currentCTag[ (tag-1)*screenInfo.numScreens + s ] );
- }
- else {
- return( 0 );
- }
-}
-
-/*
-** Given a tag, and back-end screen number, sets the current back-end
-** tag.
-*/
-static void SetCurrentBackEndTag(__GLXclientState *cl, GLXContextTag tag, int s, GLXContextTag be_tag)
-{
- if (tag >0) {
- cl->be_currentCTag[ (tag-1)*screenInfo.numScreens + s ] = be_tag;
- }
-}
-
-/*
-** For this implementation we have chosen to simply use the index of the
-** context's entry in the table as the context tag. A tag must be greater
-** than 0.
-*/
-__GLXcontext *__glXLookupContextByTag(__GLXclientState *cl, GLXContextTag tag)
-{
- int num = cl->numCurrentContexts;
-
- if (tag < 1 || tag > num) {
- return 0;
- } else {
- return cl->currentContexts[tag-1];
- }
-}
-
-DrawablePtr __glXLookupDrawableByTag(__GLXclientState *cl, GLXContextTag tag)
-{
- int num = cl->numCurrentContexts;
-
- if (tag < 1 || tag > num) {
- return 0;
- } else {
- return cl->currentDrawables[tag-1];
- }
-}
-
-/*****************************************************************************/
-
-static void StopUsingContext(__GLXcontext *glxc)
-{
- if (glxc) {
- if (glxc == __glXLastContext) {
- /* Tell server GL library */
- __glXLastContext = 0;
- }
- glxc->isCurrent = GL_FALSE;
- if (!glxc->idExists) {
- __glXFreeContext(glxc);
- }
- }
-}
-
-static void StartUsingContext(__GLXclientState *cl, __GLXcontext *glxc)
-{
- glxc->isCurrent = GL_TRUE;
-}
-
-/*****************************************************************************/
-/*
-** Make an OpenGL context and drawable current.
-*/
-static int MakeCurrent(__GLXclientState *cl,
- GLXDrawable drawable,
- GLXDrawable readdrawable,
- GLXContextID context,
- GLXContextTag oldContextTag)
-{
- ClientPtr client = cl->client;
- DrawablePtr pDraw = NULL;
- DrawablePtr pReadDraw = NULL;
- xGLXMakeCurrentReadSGIReply new_reply;
- xGLXMakeCurrentReq *be_req;
- xGLXMakeCurrentReply be_reply;
- xGLXMakeContextCurrentReq *be_new_req;
- xGLXMakeContextCurrentReply be_new_reply;
- GLXDrawable drawId = drawable;
- GLXDrawable readId = readdrawable;
- GLXContextID contextId = context;
- __GLXpixmap *pGlxPixmap = 0;
- __GLXpixmap *pReadGlxPixmap = 0;
- __GLXcontext *glxc, *prevglxc;
- GLXContextTag tag = oldContextTag;
- WindowPtr pWin = NULL;
- WindowPtr pReadWin = NULL;
- __glXWindow *pGlxWindow = NULL;
- __glXWindow *pGlxReadWindow = NULL;
- __glXPbuffer *pGlxPbuffer = NULL;
- __glXPbuffer *pGlxReadPbuffer = NULL;
-#ifdef PANORAMIX
- PanoramiXRes *pXinDraw = NULL;
- PanoramiXRes *pXinReadDraw = NULL;
-#endif
- int from_screen = 0;
- int to_screen = 0;
- int s;
-
- /*
- ** If one is None and the other isn't, it's a bad match.
- */
- if ((drawId == None && contextId != None) ||
- (drawId != None && contextId == None)) {
- return BadMatch;
- }
-
- /*
- ** Lookup old context. If we have one, it must be in a usable state.
- */
- if (tag != 0) {
- prevglxc = __glXLookupContextByTag(cl, tag);
- if (!prevglxc) {
- /*
- ** Tag for previous context is invalid.
- */
- return __glXBadContextTag;
- }
- } else {
- prevglxc = 0;
- }
-
- /*
- ** Lookup new context. It must not be current for someone else.
- */
- if (contextId != None) {
- glxc = (__GLXcontext *) LookupIDByType(contextId, __glXContextRes);
- if (!glxc) {
- client->errorValue = contextId;
- return __glXBadContext;
- }
- if ((glxc != prevglxc) && glxc->isCurrent) {
- /* Context is current to somebody else */
- return BadAccess;
- }
- } else {
- /* Switching to no context. Ignore new drawable. */
- glxc = 0;
- }
-
- if (drawId != None) {
- pDraw = (DrawablePtr) LookupDrawable(drawId, client);
- if (pDraw) {
- if (pDraw->type == DRAWABLE_WINDOW) {
- /*
- ** Drawable is an X Window.
- */
- VisualID vid;
- pWin = (WindowPtr)pDraw;
- vid = wVisual(pWin);
-
- new_reply.writeVid = (glxc->pFBConfig ? glxc->pFBConfig->id : vid);
- new_reply.writeType = GLX_WINDOW_TYPE;
-
- /*
- ** Check if window and context are similar.
- */
- if ((vid != glxc->pVisual->vid) ||
- (pWin->drawable.pScreen != glxc->pScreen)) {
- client->errorValue = drawId;
- return BadMatch;
- }
-
- from_screen = to_screen = pWin->drawable.pScreen->myNum;
-
- } else {
- /*
- ** An X Pixmap is not allowed as a parameter (a GLX Pixmap
- ** is, but it must first be created with glxCreateGLXPixmap).
- */
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
- }
-
- if (!pDraw) {
- pGlxPixmap = (__GLXpixmap *) LookupIDByType(drawId,
- __glXPixmapRes);
- if (pGlxPixmap) {
- /*
- ** Check if pixmap and context are similar.
- */
- if (pGlxPixmap->pScreen != glxc->pScreen ||
- pGlxPixmap->pGlxVisual != glxc->pGlxVisual) {
- client->errorValue = drawId;
- return BadMatch;
- }
- pDraw = pGlxPixmap->pDraw;
-
- new_reply.writeVid = (glxc->pFBConfig ? glxc->pFBConfig->id :
- pGlxPixmap->pGlxVisual->vid);
-
- new_reply.writeType = GLX_PIXMAP_TYPE;
-
- from_screen = to_screen = pGlxPixmap->pScreen->myNum;
-
- }
- }
-
- if (!pDraw && __GLX_IS_VERSION_SUPPORTED(1,3) ) {
- pGlxWindow = (__glXWindow *) LookupIDByType(drawId, __glXWindowRes);
- if (pGlxWindow) {
- /*
- ** Drawable is a GLXWindow.
- **
- ** Check if GLX window and context are similar.
- */
- if (pGlxWindow->pScreen != glxc->pScreen ||
- pGlxWindow->pGlxFBConfig != glxc->pFBConfig) {
- client->errorValue = drawId;
- return BadMatch;
- }
-
- pDraw = pGlxWindow->pDraw;
- new_reply.writeVid = pGlxWindow->pGlxFBConfig->id;
- new_reply.writeType = GLX_GLXWINDOW_TYPE;
- }
-
- }
-
- if (!pDraw && __GLX_IS_VERSION_SUPPORTED(1,3) ) {
- pGlxPbuffer = (__glXPbuffer *)LookupIDByType(drawId, __glXPbufferRes);
- if (pGlxPbuffer) {
- if (pGlxPbuffer->pScreen != glxc->pScreen ||
- pGlxPbuffer->pFBConfig != glxc->pFBConfig) {
- client->errorValue = drawId;
- return BadMatch;
- }
-
- pDraw = (DrawablePtr)pGlxPbuffer;
- new_reply.writeVid = pGlxPbuffer->pFBConfig->id;
- new_reply.writeType = GLX_PBUFFER_TYPE;
- }
- }
-
- if (!pDraw) {
- /*
- ** Drawable is not a Window , GLXWindow or a GLXPixmap.
- */
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
-
- } else {
- pDraw = 0;
- }
-
- if (readId != None && readId != drawId ) {
- pReadDraw = (DrawablePtr) LookupDrawable(readId, client);
- if (pReadDraw) {
- if (pReadDraw->type == DRAWABLE_WINDOW) {
- /*
- ** Drawable is an X Window.
- */
- VisualID vid;
- pReadWin = (WindowPtr)pDraw;
- vid = wVisual(pReadWin);
-
- new_reply.readVid = (glxc->pFBConfig ? glxc->pFBConfig->id : vid);
- new_reply.readType = GLX_WINDOW_TYPE;
-
- /*
- ** Check if window and context are similar.
- */
- if ((vid != glxc->pVisual->vid) ||
- (pReadWin->drawable.pScreen != glxc->pScreen)) {
- client->errorValue = readId;
- return BadMatch;
- }
-
- } else {
-
- /*
- ** An X Pixmap is not allowed as a parameter (a GLX Pixmap
- ** is, but it must first be created with glxCreateGLXPixmap).
- */
- client->errorValue = readId;
- return __glXBadDrawable;
- }
- }
-
- if (!pReadDraw) {
- pReadGlxPixmap = (__GLXpixmap *) LookupIDByType(readId,
- __glXPixmapRes);
- if (pReadGlxPixmap) {
- /*
- ** Check if pixmap and context are similar.
- */
- if (pReadGlxPixmap->pScreen != glxc->pScreen ||
- pReadGlxPixmap->pGlxVisual != glxc->pGlxVisual) {
- client->errorValue = readId;
- return BadMatch;
- }
- pReadDraw = pReadGlxPixmap->pDraw;
-
- new_reply.readVid = (glxc->pFBConfig ? glxc->pFBConfig->id :
- pReadGlxPixmap->pGlxVisual->vid );
- new_reply.readType = GLX_PIXMAP_TYPE;
-
- }
- }
-
- if (!pReadDraw && __GLX_IS_VERSION_SUPPORTED(1,3) ) {
- pGlxReadWindow = (__glXWindow *)
- LookupIDByType(readId, __glXWindowRes);
- if (pGlxReadWindow) {
- /*
- ** Drawable is a GLXWindow.
- **
- ** Check if GLX window and context are similar.
- */
- if (pGlxReadWindow->pScreen != glxc->pScreen ||
- pGlxReadWindow->pGlxFBConfig != glxc->pFBConfig) {
- client->errorValue = readId;
- return BadMatch;
- }
-
- pReadDraw = pGlxReadWindow->pDraw;
- new_reply.readVid = pGlxReadWindow->pGlxFBConfig->id;
- new_reply.readType = GLX_GLXWINDOW_TYPE;
- }
- }
-
- if (!pReadDraw && __GLX_IS_VERSION_SUPPORTED(1,3) ) {
- pGlxReadPbuffer = (__glXPbuffer *)LookupIDByType(readId, __glXPbufferRes);
- if (pGlxReadPbuffer) {
- if (pGlxReadPbuffer->pScreen != glxc->pScreen ||
- pGlxReadPbuffer->pFBConfig != glxc->pFBConfig) {
- client->errorValue = drawId;
- return BadMatch;
- }
-
- pReadDraw = (DrawablePtr)pGlxReadPbuffer;
- new_reply.readVid = pGlxReadPbuffer->pFBConfig->id;
- new_reply.readType = GLX_PBUFFER_TYPE;
- }
- }
-
- if (!pReadDraw) {
- /*
- ** Drawable is neither a Window nor a GLXPixmap.
- */
- client->errorValue = readId;
- return __glXBadDrawable;
- }
-
- } else {
- pReadDraw = pDraw;
- pReadGlxPixmap = pGlxPixmap;
- pReadWin = pWin;
- new_reply.readVid = new_reply.writeVid;
- new_reply.readType = new_reply.writeType;
- }
-
- if (prevglxc) {
-
- if (prevglxc->pGlxPixmap) {
- /*
- ** The previous drawable was a glx pixmap, release it.
- */
- prevglxc->pGlxPixmap->refcnt--;
- __glXFreeGLXPixmap( prevglxc->pGlxPixmap );
- prevglxc->pGlxPixmap = 0;
- }
-
- if (prevglxc->pGlxReadPixmap &&
- prevglxc->pGlxReadPixmap != prevglxc->pGlxPixmap ) {
- /*
- ** The previous drawable was a glx pixmap, release it.
- */
- prevglxc->pGlxReadPixmap->refcnt--;
- __glXFreeGLXPixmap( prevglxc->pGlxReadPixmap );
- prevglxc->pGlxReadPixmap = 0;
- }
-
- if (prevglxc->pGlxWindow) {
- /*
- ** The previous drawable was a glx window, release it.
- */
- prevglxc->pGlxWindow->refcnt--;
- __glXFreeGLXWindow( prevglxc->pGlxWindow );
- prevglxc->pGlxWindow = 0;
- }
-
- if (prevglxc->pGlxReadWindow &&
- prevglxc->pGlxReadWindow != prevglxc->pGlxWindow) {
- /*
- ** The previous drawable was a glx window, release it.
- */
- prevglxc->pGlxReadWindow->refcnt--;
- __glXFreeGLXWindow( prevglxc->pGlxReadWindow );
- prevglxc->pGlxReadWindow = 0;
- }
-
- if (prevglxc->pGlxPbuffer) {
- /*
- ** The previous drawable was a glx Pbuffer, release it.
- */
- prevglxc->pGlxPbuffer->refcnt--;
- __glXFreeGLXPbuffer( prevglxc->pGlxPbuffer );
- prevglxc->pGlxPbuffer = 0;
- }
-
- if (prevglxc->pGlxReadPbuffer &&
- prevglxc->pGlxReadPbuffer != prevglxc->pGlxPbuffer ) {
- /*
- ** The previous drawable was a glx Pbuffer, release it.
- */
- prevglxc->pGlxReadPbuffer->refcnt--;
- __glXFreeGLXPbuffer( prevglxc->pGlxReadPbuffer );
- prevglxc->pGlxReadPbuffer = 0;
- }
-
- ChangeCurrentContext(cl, glxc, tag);
- ChangeCurrentContext(cl, glxc, tag);
- StopUsingContext(prevglxc);
- } else {
- tag = AddCurrentContext(cl, glxc, pDraw);
- }
- if (glxc) {
-
- glxc->pGlxPixmap = pGlxPixmap;
- glxc->pGlxReadPixmap = pReadGlxPixmap;
- glxc->pGlxWindow = pGlxWindow;
- glxc->pGlxReadWindow = pGlxReadWindow;
- glxc->pGlxPbuffer = pGlxPbuffer;
- glxc->pGlxReadPbuffer = pGlxReadPbuffer;
-
- if (pGlxPixmap) {
- pGlxPixmap->refcnt++;
- }
-
- if (pReadGlxPixmap && pReadGlxPixmap != pGlxPixmap) {
- pReadGlxPixmap->refcnt++;
- }
-
- if (pGlxWindow) {
- pGlxWindow->refcnt++;
- }
-
- if (pGlxReadWindow && pGlxReadWindow != pGlxWindow) {
- pGlxReadWindow->refcnt++;
- }
-
- if (pGlxPbuffer) {
- pGlxPbuffer->refcnt++;
- }
-
- if (pGlxReadPbuffer && pGlxReadPbuffer != pGlxPbuffer) {
- pGlxReadPbuffer->refcnt++;
- }
-
- StartUsingContext(cl, glxc);
- new_reply.contextTag = tag;
- } else {
- new_reply.contextTag = 0;
- }
- new_reply.length = 0;
- new_reply.type = X_Reply;
- new_reply.sequenceNumber = client->sequence;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
-
- if (pDraw && new_reply.writeType != GLX_PBUFFER_TYPE) {
- pXinDraw = (PanoramiXRes *)
- SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, SecurityReadAccess);
- }
-
- if (pReadDraw && pReadDraw != pDraw &&
- new_reply.readType != GLX_PBUFFER_TYPE) {
- pXinReadDraw = (PanoramiXRes *)
- SecurityLookupIDByClass(client, pReadDraw->id, XRC_DRAWABLE, SecurityReadAccess);
- }
- else {
- pXinReadDraw = pXinDraw;
- }
- }
-#endif
-
-
- /* send the MakeCurrent request to all required
- * back-end servers.
- */
- for (s = from_screen; s<=to_screen; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
- unsigned int be_draw = None;
- unsigned int be_read_draw = None;
-
- if (pGlxPixmap) {
- be_draw = pGlxPixmap->be_xids[s];
- }
- else if (pGlxPbuffer) {
- be_draw = pGlxPbuffer->be_xids[s];
- }
-#ifdef PANORAMIX
- else if (pXinDraw) {
- pWin = (WindowPtr)SecurityLookupWindow(pXinDraw->info[s].id,
- client,
- SecurityReadAccess);
- }
-#endif
- else if (pGlxWindow) {
- pWin = (WindowPtr)pGlxWindow->pDraw;
- }
-
- if (pWin && be_draw == None) {
- be_draw = (unsigned int)(DMX_GET_WINDOW_PRIV(pWin))->window;
- if (!be_draw) {
- /* it might be that the window did not created yet on the */
- /* back-end server (lazy window creation option), force */
- /* creation of the window */
- dmxCreateAndRealizeWindow( pWin, TRUE );
- be_draw = (unsigned int)(DMX_GET_WINDOW_PRIV(pWin))->window;
- }
- }
-
- /*
- * Before sending the MakeCurrent request - sync the
- * X11 connection to the back-end servers to make sure
- * that drawable is already created
- */
- dmxSync( dmxScreen, 1 );
-
- if (drawId == readId) {
- LockDisplay(dpy);
- GetReq(GLXMakeCurrent, be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXMakeCurrent;
- be_req->drawable = be_draw;
- be_req->context = (unsigned int)(glxc ? glxc->real_ids[s-from_screen] : 0);
- be_req->oldContextTag = GetCurrentBackEndTag(cl, tag, s);
- if (!_XReply(dpy, (xReply *) &be_reply, 0, False)) {
-
- /* The make current failed */
- UnlockDisplay(dpy);
- SyncHandle();
- return( BE_TO_CLIENT_ERROR(dmxLastErrorEvent.error_code) );
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- SetCurrentBackEndTag( cl, tag, s, be_reply.contextTag );
- }
- else {
-
- if (pReadGlxPixmap) {
- be_read_draw = pReadGlxPixmap->be_xids[s];
- }
- else if (pGlxReadPbuffer) {
- be_read_draw = pGlxReadPbuffer->be_xids[s];
- }
-#ifdef PANORAMIX
- else if (pXinReadDraw) {
- pReadWin = (WindowPtr)SecurityLookupWindow(pXinReadDraw->info[s].id,
- client,
- SecurityReadAccess);
- }
-#endif
- else if (pGlxReadWindow) {
- pReadWin = (WindowPtr)pGlxReadWindow->pDraw;
- }
-
- if (pReadWin && be_read_draw == None) {
- be_read_draw = (unsigned int)(DMX_GET_WINDOW_PRIV(pReadWin))->window;
- if (!be_read_draw) {
- /* it might be that the window did not created yet on the */
- /* back-end server (lazy window creation option), force */
- /* creation of the window */
- dmxCreateAndRealizeWindow( pReadWin, TRUE );
- be_read_draw = (unsigned int)(DMX_GET_WINDOW_PRIV(pReadWin))->window;
- dmxSync( dmxScreen, 1 );
- }
- }
-
- if ( __GLX_IS_VERSION_SUPPORTED(1,3) ) {
- LockDisplay(dpy);
- GetReq(GLXMakeContextCurrent, be_new_req);
- be_new_req->reqType = dmxScreen->glxMajorOpcode;
- be_new_req->glxCode = X_GLXMakeContextCurrent;
- be_new_req->drawable = be_draw;
- be_new_req->readdrawable = be_read_draw;
- be_new_req->context = (unsigned int)(glxc ? glxc->real_ids[s-from_screen] : 0);
- be_new_req->oldContextTag = GetCurrentBackEndTag(cl, tag, s);
- if (!_XReply(dpy, (xReply *) &be_new_reply, 0, False)) {
-
- /* The make current failed */
- UnlockDisplay(dpy);
- SyncHandle();
- return( BE_TO_CLIENT_ERROR(dmxLastErrorEvent.error_code) );
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- SetCurrentBackEndTag( cl, tag, s, be_new_reply.contextTag );
- }
- else if (glxIsExtensionSupported("GLX_SGI_make_current_read")) {
- xGLXMakeCurrentReadSGIReq *ext_req;
- xGLXVendorPrivateWithReplyReq *vpreq;
- xGLXMakeCurrentReadSGIReply ext_reply;
-
- LockDisplay(dpy);
- GetReqExtra(GLXVendorPrivateWithReply,
- sz_xGLXMakeCurrentReadSGIReq - sz_xGLXVendorPrivateWithReplyReq,
- vpreq);
- ext_req = (xGLXMakeCurrentReadSGIReq *)vpreq;
- ext_req->reqType = dmxScreen->glxMajorOpcode;
- ext_req->glxCode = X_GLXVendorPrivateWithReply;
- ext_req->vendorCode = X_GLXvop_MakeCurrentReadSGI;
- ext_req->drawable = be_draw;
- ext_req->readable = be_read_draw;
- ext_req->context = (unsigned int)(glxc ? glxc->real_ids[s-from_screen] : 0);
- ext_req->oldContextTag = GetCurrentBackEndTag(cl, tag, s);
- if (!_XReply(dpy, (xReply *) &ext_reply, 0, False)) {
-
- /* The make current failed */
- UnlockDisplay(dpy);
- SyncHandle();
- return( BE_TO_CLIENT_ERROR(dmxLastErrorEvent.error_code) );
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- SetCurrentBackEndTag( cl, tag, s, ext_reply.contextTag );
-
- }
- else {
- return BadMatch;
- }
- }
-
- XFlush( dpy );
- }
-
- if (client->swapped) {
- __glXSwapMakeCurrentReply(client, &new_reply);
- } else {
- WriteToClient(client, sz_xGLXMakeContextCurrentReply, (char *)&new_reply);
- }
-
- return Success;
-}
-
-int __glXMakeCurrent(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXMakeCurrentReq *req = (xGLXMakeCurrentReq *) pc;
-
- return( MakeCurrent(cl, req->drawable, req->drawable,
- req->context, req->oldContextTag ) );
-}
-
-int __glXMakeContextCurrent(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXMakeContextCurrentReq *req = (xGLXMakeContextCurrentReq *) pc;
-
- return( MakeCurrent(cl, req->drawable, req->readdrawable,
- req->context, req->oldContextTag ) );
-}
-
-int __glXMakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXMakeCurrentReadSGIReq *req = (xGLXMakeCurrentReadSGIReq *) pc;
-
- return( MakeCurrent(cl, req->drawable, req->readable,
- req->context, req->oldContextTag ) );
-}
-
-int __glXIsDirect(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXIsDirectReq *req = (xGLXIsDirectReq *) pc;
- xGLXIsDirectReply reply;
- __GLXcontext *glxc;
-
- /*
- ** Find the GL context.
- */
- glxc = (__GLXcontext *) LookupIDByType(req->context, __glXContextRes);
- if (!glxc) {
- client->errorValue = req->context;
- return __glXBadContext;
- }
-
- reply.isDirect = 0;
- reply.length = 0;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
-
- if (client->swapped) {
- __glXSwapIsDirectReply(client, &reply);
- } else {
- WriteToClient(client, sz_xGLXIsDirectReply, (char *)&reply);
- }
-
- return Success;
-}
-
-int __glXQueryVersion(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
-/* xGLXQueryVersionReq *req = (xGLXQueryVersionReq *) pc; */
- xGLXQueryVersionReply reply;
-
- /*
- ** Server should take into consideration the version numbers sent by the
- ** client if it wants to work with older clients; however, in this
- ** implementation the server just returns its version number.
- */
- reply.majorVersion = __glXVersionMajor;
- reply.minorVersion = __glXVersionMinor;
- reply.length = 0;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
-
- if (client->swapped) {
- __glXSwapQueryVersionReply(client, &reply);
- } else {
- WriteToClient(client, sz_xGLXQueryVersionReply, (char *)&reply);
- }
- return Success;
-}
-
-int __glXWaitGL(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXWaitGLReq *req = (xGLXWaitGLReq *)pc;
- xGLXWaitGLReq *be_req = (xGLXWaitGLReq *)pc;
- int from_screen = 0;
- int to_screen = 0;
- int s;
- __GLXcontext *glxc = NULL;
-
- if (req->contextTag != 0) {
- glxc = __glXLookupContextByTag(cl, req->contextTag);
- if (glxc) {
- from_screen = to_screen = glxc->pScreen->myNum;
- }
- }
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- for (s=from_screen; s<=to_screen; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
-
- LockDisplay(dpy);
- GetReq(GLXWaitGL,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXWaitGL;
- be_req->contextTag = (glxc ? GetCurrentBackEndTag(cl,req->contextTag,s) : 0);
- UnlockDisplay(dpy);
- SyncHandle();
-
- XSync(dpy, False);
- }
-
- return Success;
-}
-
-int __glXWaitX(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXWaitXReq *req = (xGLXWaitXReq *)pc;
- xGLXWaitXReq *be_req;
- int from_screen = 0;
- int to_screen = 0;
- int s;
- __GLXcontext *glxc = NULL;
-
- if (req->contextTag != 0) {
- glxc = __glXLookupContextByTag(cl, req->contextTag);
- if (glxc) {
- from_screen = to_screen = glxc->pScreen->myNum;
- }
- }
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- for (s=from_screen; s<=to_screen; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
-
- dmxSync( dmxScreen, 1 );
-
- LockDisplay(dpy);
- GetReq(GLXWaitX,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXWaitX;
- be_req->contextTag = (glxc ? GetCurrentBackEndTag(cl,req->contextTag,s) : 0);
- UnlockDisplay(dpy);
- SyncHandle();
-
- XFlush( dpy );
- }
-
- return Success;
-}
-
-int __glXCopyContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCopyContextReq *be_req;
- xGLXCopyContextReq *req = (xGLXCopyContextReq *) pc;
- GLXContextID source = req->source;
- GLXContextID dest = req->dest;
- GLXContextTag tag = req->contextTag;
- unsigned long mask = req->mask;
- __GLXcontext *src, *dst;
- int s;
- int from_screen = 0;
- int to_screen = 0;
-
- /*
- ** Check that each context exists.
- */
- src = (__GLXcontext *) LookupIDByType(source, __glXContextRes);
- if (!src) {
- client->errorValue = source;
- return __glXBadContext;
- }
- dst = (__GLXcontext *) LookupIDByType(dest, __glXContextRes);
- if (!dst) {
- client->errorValue = dest;
- return __glXBadContext;
- }
-
- /*
- ** They must be in the same address space, and same screen.
- */
- if (src->pGlxScreen != dst->pGlxScreen) {
- client->errorValue = source;
- return BadMatch;
- }
-
- /*
- ** The destination context must not be current for any client.
- */
- if (dst->isCurrent) {
- client->errorValue = dest;
- return BadAccess;
- }
-
- if (tag) {
- __GLXcontext *tagcx = __glXLookupContextByTag(cl, tag);
-
- if (!tagcx) {
- return __glXBadContextTag;
- }
- if (tagcx != src) {
- /*
- ** This would be caused by a faulty implementation of the client
- ** library.
- */
- return BadMatch;
- }
- }
-
- from_screen = to_screen = src->pScreen->myNum;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- for (s=from_screen; s<=to_screen; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
-
- LockDisplay(dpy);
- GetReq(GLXCopyContext,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXCopyContext;
- be_req->source = (unsigned int)src->real_ids[s-from_screen];
- be_req->dest = (unsigned int)dst->real_ids[s-from_screen];
- be_req->mask = mask;
- be_req->contextTag = (tag ? GetCurrentBackEndTag(cl,req->contextTag,s) : 0);
- UnlockDisplay(dpy);
- SyncHandle();
- }
-
- return Success;
-}
-
-int __glXGetVisualConfigs(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXGetVisualConfigsReq *req = (xGLXGetVisualConfigsReq *) pc;
- xGLXGetVisualConfigsReply reply;
- __GLXscreenInfo *pGlxScreen;
- __GLXvisualConfig *pGlxVisual;
- CARD32 buf[__GLX_TOTAL_CONFIG];
- unsigned int screen;
- int i, p;
-
- screen = req->screen;
- if (screen > screenInfo.numScreens) {
- /* The client library must send a valid screen number. */
- client->errorValue = screen;
- return BadValue;
- }
- pGlxScreen = &__glXActiveScreens[screen];
-
- reply.numVisuals = pGlxScreen->numGLXVisuals;
- reply.numProps = __GLX_TOTAL_CONFIG;
- reply.length = (pGlxScreen->numGLXVisuals * __GLX_SIZE_CARD32 *
- __GLX_TOTAL_CONFIG) >> 2;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
-
- WriteToClient(client, sz_xGLXGetVisualConfigsReply, (char *)&reply);
-
- for (i=0; i < pGlxScreen->numVisuals; i++) {
- pGlxVisual = &pGlxScreen->pGlxVisual[i];
- if (!pGlxScreen->isGLXvis[i] || pGlxVisual->vid == 0) {
- /* not a usable visual */
- continue;
- }
- p = 0;
- buf[p++] = pGlxVisual->vid;
- buf[p++] = pGlxVisual->class;
- buf[p++] = pGlxVisual->rgba;
-
- buf[p++] = pGlxVisual->redSize;
- buf[p++] = pGlxVisual->greenSize;
- buf[p++] = pGlxVisual->blueSize;
- buf[p++] = pGlxVisual->alphaSize;
- buf[p++] = pGlxVisual->accumRedSize;
- buf[p++] = pGlxVisual->accumGreenSize;
- buf[p++] = pGlxVisual->accumBlueSize;
- buf[p++] = pGlxVisual->accumAlphaSize;
-
- buf[p++] = pGlxVisual->doubleBuffer;
- buf[p++] = pGlxVisual->stereo;
-
- buf[p++] = pGlxVisual->bufferSize;
- buf[p++] = pGlxVisual->depthSize;
- buf[p++] = pGlxVisual->stencilSize;
- buf[p++] = pGlxVisual->auxBuffers;
- buf[p++] = pGlxVisual->level;
- /*
- ** Add token/value pairs for extensions.
- */
- buf[p++] = GLX_VISUAL_CAVEAT_EXT;
- buf[p++] = pGlxVisual->visualRating;
- buf[p++] = GLX_TRANSPARENT_TYPE_EXT;
- buf[p++] = pGlxVisual->transparentPixel;
- buf[p++] = GLX_TRANSPARENT_RED_VALUE_EXT;
- buf[p++] = pGlxVisual->transparentRed;
- buf[p++] = GLX_TRANSPARENT_GREEN_VALUE_EXT;
- buf[p++] = pGlxVisual->transparentGreen;
- buf[p++] = GLX_TRANSPARENT_BLUE_VALUE_EXT;
- buf[p++] = pGlxVisual->transparentBlue;
- buf[p++] = GLX_TRANSPARENT_ALPHA_VALUE_EXT;
- buf[p++] = pGlxVisual->transparentAlpha;
- buf[p++] = GLX_TRANSPARENT_INDEX_VALUE_EXT;
- buf[p++] = pGlxVisual->transparentIndex;
- buf[p++] = GLX_SAMPLES_SGIS;
- buf[p++] = pGlxVisual->multiSampleSize;
- buf[p++] = GLX_SAMPLE_BUFFERS_SGIS;
- buf[p++] = pGlxVisual->nMultiSampleBuffers;
- buf[p++] = GLX_VISUAL_SELECT_GROUP_SGIX;
- buf[p++] = pGlxVisual->visualSelectGroup;
-
- WriteToClient(client, __GLX_SIZE_CARD32 * __GLX_TOTAL_CONFIG,
- (char *)buf);
- }
- return Success;
-}
-
-/*
-** Create a GLX Pixmap from an X Pixmap.
-*/
-static int CreateGLXPixmap(__GLXclientState *cl,
- VisualID visual, GLXFBConfigID fbconfigId,
- int screenNum, XID pixmapId, XID glxpixmapId )
-{
- ClientPtr client = cl->client;
- xGLXCreateGLXPixmapReq *be_req;
- xGLXCreatePixmapReq *be_new_req;
- DrawablePtr pDraw;
- ScreenPtr pScreen;
- VisualPtr pVisual;
- __GLXpixmap *pGlxPixmap;
- __GLXscreenInfo *pGlxScreen;
- __GLXvisualConfig *pGlxVisual;
- __GLXFBConfig *pFBConfig;
- int i;
- int s;
- int from_screen, to_screen;
-#ifdef PANORAMIX
- PanoramiXRes *pXinDraw = NULL;
-#endif
-
- pDraw = (DrawablePtr) LookupDrawable(pixmapId, client);
- if (!pDraw || pDraw->type != DRAWABLE_PIXMAP) {
- client->errorValue = pixmapId;
- return BadPixmap;
- }
-
- /*
- ** Check if screen of visual matches screen of pixmap.
- */
- pScreen = pDraw->pScreen;
- if (screenNum != pScreen->myNum) {
- return BadMatch;
- }
-
- if (fbconfigId == NULL && visual == NULL) {
- return BadValue;
- }
-
- if (fbconfigId != None) {
- pFBConfig = glxLookupFBConfig( fbconfigId );
- if (!pFBConfig) {
- client->errorValue = fbconfigId;
- return BadValue;
- }
- visual = pFBConfig->associatedVisualId;
- }
- else {
- pFBConfig = NULL;
- }
-
- if (visual != None) {
- /*
- ** Find the VisualRec for this visual.
- */
- pVisual = pScreen->visuals;
- for (i=0; i < pScreen->numVisuals; i++, pVisual++) {
- if (pVisual->vid == visual) {
- break;
- }
- }
- if (i == pScreen->numVisuals) {
- client->errorValue = visual;
- return BadValue;
- }
- /*
- ** Check if depth of visual matches depth of pixmap.
- */
- if (pVisual->nplanes != pDraw->depth) {
- client->errorValue = visual;
- return BadMatch;
- }
-
- /*
- ** Get configuration of the visual.
- */
- pGlxScreen = &__glXActiveScreens[screenNum];
- pGlxVisual = pGlxScreen->pGlxVisual;
- for (i = 0; i < pGlxScreen->numVisuals; i++, pGlxVisual++) {
- if (pGlxVisual->vid == visual) {
- break;
- }
- }
- if (i == pGlxScreen->numVisuals) {
- /*
- ** Visual not support on this screen by this OpenGL implementation.
- */
- client->errorValue = visual;
- return BadValue;
- }
-
-
- /* find the FBConfig for that visual (if any) */
- if ( pFBConfig == NULL ) {
- pFBConfig = glxLookupFBConfigByVID( visual );
-
- if ( pFBConfig == NULL ) {
- /*
- * visual does not have an FBConfig ???
- client->errorValue = visual;
- return BadValue;
- */
- }
- }
- }
- else {
- pVisual = NULL;
- pGlxVisual = NULL;
- }
-
- pGlxPixmap = (__GLXpixmap *) __glXMalloc(sizeof(__GLXpixmap));
- if (!pGlxPixmap) {
- return BadAlloc;
- }
- pGlxPixmap->be_xids = (XID *) __glXMalloc(sizeof(XID) * screenInfo.numScreens);
- if (!pGlxPixmap->be_xids) {
- __glXFree( pGlxPixmap );
- return BadAlloc;
- }
-
- pGlxPixmap->pDraw = pDraw;
- pGlxPixmap->pGlxScreen = pGlxScreen;
- pGlxPixmap->pGlxVisual = pGlxVisual;
- pGlxPixmap->pFBConfig = pFBConfig;
- pGlxPixmap->pScreen = pScreen;
- pGlxPixmap->idExists = True;
- pGlxPixmap->refcnt = 0;
-
- /*
- ** Bump the ref count on the X pixmap so it won't disappear.
- */
- ((PixmapPtr) pDraw)->refcnt++;
-
- /*
- * send the request to the back-end server(s)
- */
- from_screen = to_screen = screenNum;
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
-
- pXinDraw = (PanoramiXRes *)
- SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, SecurityReadAccess);
- }
-#endif
-
- for (s=from_screen; s<=to_screen; s++) {
-
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
- Pixmap be_pixmap;
- DrawablePtr pRealDraw = pDraw;
-
-#ifdef PANORAMIX
- if (pXinDraw) {
- pRealDraw = (DrawablePtr) LookupDrawable(pXinDraw->info[s].id,client);
- }
-#endif
-
- be_pixmap = (DMX_GET_PIXMAP_PRIV((PixmapPtr)pRealDraw))->pixmap;
-
- /* make sure pixmap already created on back-end */
- dmxSync( dmxScreen, 1 );
-
- if ( pFBConfig && __GLX_IS_VERSION_SUPPORTED(1,3) ) {
- __GLXFBConfig *be_FBConfig = glxLookupBackEndFBConfig( pFBConfig->id, s );
-
- LockDisplay(dpy);
- pGlxPixmap->be_xids[s] = XAllocID(dpy);
- GetReq(GLXCreatePixmap,be_new_req);
- be_new_req->reqType = dmxScreen->glxMajorOpcode;
- be_new_req->glxCode = X_GLXCreatePixmap;
- be_new_req->screen = DefaultScreen(dpy);
- be_new_req->fbconfig = be_FBConfig->id;
- be_new_req->pixmap = (unsigned int)be_pixmap;
- be_new_req->glxpixmap = (unsigned int)pGlxPixmap->be_xids[s];
- be_new_req->numAttribs = 0;
- UnlockDisplay(dpy);
- SyncHandle();
- }
- else if (pFBConfig && glxIsExtensionSupported("GLX_SGIX_fbconfig")) {
- __GLXFBConfig *be_FBConfig = glxLookupBackEndFBConfig( pFBConfig->id, s );
- xGLXCreateGLXPixmapWithConfigSGIXReq *ext_req;
- xGLXVendorPrivateReq *vpreq;
-
- LockDisplay(dpy);
- pGlxPixmap->be_xids[s] = XAllocID(dpy);
- GetReqExtra(GLXVendorPrivate,
- sz_xGLXCreateGLXPixmapWithConfigSGIXReq-sz_xGLXVendorPrivateReq,
- vpreq);
- ext_req = (xGLXCreateGLXPixmapWithConfigSGIXReq *)vpreq;
- ext_req->reqType = dmxScreen->glxMajorOpcode;
- ext_req->glxCode = X_GLXVendorPrivate;
- ext_req->vendorCode = X_GLXvop_CreateGLXPixmapWithConfigSGIX;
- ext_req->screen = DefaultScreen(dpy);
- ext_req->fbconfig = be_FBConfig->id;
- ext_req->pixmap = (unsigned int)be_pixmap;
- ext_req->glxpixmap = (unsigned int)pGlxPixmap->be_xids[s];
- UnlockDisplay(dpy);
- SyncHandle();
- }
- else if (pGlxVisual) {
- LockDisplay(dpy);
- pGlxPixmap->be_xids[s] = XAllocID(dpy);
- GetReq(GLXCreateGLXPixmap,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXCreateGLXPixmap;
- be_req->screen = DefaultScreen(dpy);
- be_req->visual = (unsigned int)glxMatchGLXVisualInConfigList(
- pGlxVisual,
- dmxScreen->glxVisuals,
- dmxScreen->numGlxVisuals );
- be_req->pixmap = (unsigned int)be_pixmap;
- be_req->glxpixmap = (unsigned int)pGlxPixmap->be_xids[s];
- UnlockDisplay(dpy);
- SyncHandle();
- }
- else {
- client->errorValue = ( visual ? visual : fbconfigId );
- __glXFree( pGlxPixmap );
- return BadValue;
- }
-
- XFlush( dpy );
- }
-
- if (!(AddResource(glxpixmapId, __glXPixmapRes, pGlxPixmap))) {
- __glXFree( pGlxPixmap );
- return BadAlloc;
- }
-
- return Success;
-}
-
-int __glXCreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreateGLXPixmapReq *req = (xGLXCreateGLXPixmapReq *) pc;
-
- return( CreateGLXPixmap(cl, req->visual, None,
- req->screen, req->pixmap, req->glxpixmap) );
-}
-
-int __glXCreatePixmap(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreatePixmapReq *req = (xGLXCreatePixmapReq *) pc;
-
- return( CreateGLXPixmap(cl, None, req->fbconfig,
- req->screen, req->pixmap, req->glxpixmap) );
-}
-
-int __glXDestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
- XID glxpixmap = req->glxpixmap;
- __GLXpixmap *pGlxPixmap;
- int s;
- int from_screen, to_screen;
-
- /*
- ** Check if it's a valid GLX pixmap.
- */
- pGlxPixmap = (__GLXpixmap *)LookupIDByType(glxpixmap, __glXPixmapRes);
- if (!pGlxPixmap) {
- client->errorValue = glxpixmap;
- return __glXBadPixmap;
- }
- FreeResource(glxpixmap, FALSE);
-
- /*
- * destroy the pixmap on the back-end server(s).
- */
- from_screen = to_screen = pGlxPixmap->pDraw->pScreen->myNum;
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- for (s=from_screen; s<=to_screen; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
-
- /* make sure pixmap exist in back-end */
- dmxSync( dmxScreen, 1 );
-
- LockDisplay(dpy);
- GetReq(GLXDestroyGLXPixmap,req);
- req->reqType = dmxScreen->glxMajorOpcode;
- req->glxCode = X_GLXDestroyGLXPixmap;
- req->glxpixmap = (unsigned int)pGlxPixmap->be_xids[s];
- UnlockDisplay(dpy);
- SyncHandle();
- }
-
-
- return Success;
-}
-
-/*****************************************************************************/
-
-/*
-** NOTE: There is no portable implementation for swap buffers as of
-** this time that is of value. Consequently, this code must be
-** implemented by somebody other than SGI.
-*/
-int __glXDoSwapBuffers(__GLXclientState *cl, XID drawId, GLXContextTag tag)
-{
- ClientPtr client = cl->client;
- DrawablePtr pDraw;
- xGLXSwapBuffersReq *be_req;
- WindowPtr pWin = NULL;
- __GLXpixmap *pGlxPixmap = NULL;
- __GLXcontext *glxc = NULL;
-#ifdef PANORAMIX
- PanoramiXRes *pXinDraw = NULL;
-#endif
- __glXWindow *pGlxWindow = NULL;
- int from_screen = 0;
- int to_screen = 0;
- int s;
-
- /*
- ** Check that the GLX drawable is valid.
- */
- pDraw = (DrawablePtr) LookupDrawable(drawId, client);
- if (pDraw) {
-
- from_screen = to_screen = pDraw->pScreen->myNum;
-
- if (pDraw->type == DRAWABLE_WINDOW) {
- /*
- ** Drawable is an X window.
- */
- pWin = (WindowPtr)pDraw;
- } else {
- /*
- ** Drawable is an X pixmap, which is not allowed.
- */
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
- }
-
- if (!pDraw) {
- pGlxPixmap = (__GLXpixmap *) LookupIDByType(drawId,
- __glXPixmapRes);
- if (pGlxPixmap) {
- /*
- ** Drawable is a GLX pixmap.
- */
- pDraw = pGlxPixmap->pDraw;
- from_screen = to_screen = pGlxPixmap->pScreen->myNum;
- }
- }
-
- if (!pDraw && __GLX_IS_VERSION_SUPPORTED(1,3) ) {
- pGlxWindow = (__glXWindow *) LookupIDByType(drawId, __glXWindowRes);
- if (pGlxWindow) {
- /*
- ** Drawable is a GLXWindow.
- */
- pDraw = pGlxWindow->pDraw;
- from_screen = to_screen = pGlxWindow->pScreen->myNum;
- }
- }
-
- if (!pDraw) {
- /*
- ** Drawable is neither a X window nor a GLX pixmap.
- */
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
-
- if (tag) {
- glxc = __glXLookupContextByTag(cl, tag);
- if (!glxc) {
- return __glXBadContextTag;
- }
- }
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- pXinDraw = (PanoramiXRes *)
- SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, SecurityReadAccess);
- }
-#endif
-
- /* If requested, send a glFinish to all back-end servers before swapping. */
- if (dmxGLXFinishSwap) {
- for (s=from_screen; s<=to_screen; s++) {
- Display *dpy = GetBackEndDisplay(cl,s);
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- xGLXSingleReq *finishReq;
- xGLXSingleReply reply;
-
-#define X_GLXSingle 0 /* needed by GetReq below */
-
- LockDisplay(dpy);
- GetReq(GLXSingle,finishReq);
- finishReq->reqType = dmxScreen->glxMajorOpcode;
- finishReq->glxCode = X_GLsop_Finish;
- finishReq->contextTag = (tag ? GetCurrentBackEndTag(cl,tag,s) : 0);
- (void) _XReply(dpy, (xReply*) &reply, 0, False);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- }
-
- /* If requested, send an XSync to all back-end servers before swapping. */
- if (dmxGLXSyncSwap) {
- for (s=from_screen; s<=to_screen; s++)
- XSync(GetBackEndDisplay(cl,s), False);
- }
-
-
- /* send the SwapBuffers request to all back-end servers */
-
- for (s=from_screen; s<=to_screen; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
- unsigned int be_draw = 0;
-
- if (pGlxPixmap) {
- be_draw = (unsigned int)pGlxPixmap->be_xids[s];
- }
-#ifdef PANORAMIX
- else if (pXinDraw) {
- pWin = (WindowPtr)SecurityLookupWindow(pXinDraw->info[s].id,
- client,
- SecurityReadAccess);
- }
-#endif
- else if (pGlxWindow) {
- pWin = (WindowPtr)pGlxWindow->pDraw;
- }
-
- if (pWin && !be_draw) {
- be_draw = (unsigned int)(DMX_GET_WINDOW_PRIV(pWin))->window;
- if (!be_draw) {
- /* it might be that the window did not created yet on the */
- /* back-end server (lazy window creation option), force */
- /* creation of the window */
- dmxCreateAndRealizeWindow( pWin, TRUE );
- be_draw = (unsigned int)(DMX_GET_WINDOW_PRIV(pWin))->window;
- }
- }
-
- dmxSync( dmxScreen, 1 );
-
- LockDisplay(dpy);
- GetReq(GLXSwapBuffers,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXSwapBuffers;
- be_req->drawable = be_draw;
- be_req->contextTag = ( tag ? GetCurrentBackEndTag(cl,tag,s) : 0 );
- UnlockDisplay(dpy);
- SyncHandle();
- XFlush(dpy);
- }
-
- return Success;
-}
-
-int __glXSwapBuffers(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- DrawablePtr pDraw;
- xGLXSwapBuffersReq *req = (xGLXSwapBuffersReq *) pc;
- GLXContextTag tag = req->contextTag;
- XID drawId = req->drawable;
- __GLXpixmap *pGlxPixmap = NULL;
- __GLXcontext *glxc = NULL;
- __glXWindow *pGlxWindow = NULL;
-
- /*
- ** Check that the GLX drawable is valid.
- */
- pDraw = (DrawablePtr) LookupDrawable(drawId, client);
- if (pDraw) {
- if (pDraw->type != DRAWABLE_WINDOW) {
- /*
- ** Drawable is an X pixmap, which is not allowed.
- */
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
- }
-
- if (!pDraw) {
- pGlxPixmap = (__GLXpixmap *) LookupIDByType(drawId,
- __glXPixmapRes);
- if (pGlxPixmap) {
- /*
- ** Drawable is a GLX pixmap.
- */
- pDraw = pGlxPixmap->pDraw;
- }
- }
-
- if (!pDraw && __GLX_IS_VERSION_SUPPORTED(1,3) ) {
- pGlxWindow = (__glXWindow *) LookupIDByType(drawId, __glXWindowRes);
- if (pGlxWindow) {
- /*
- ** Drawable is a GLXWindow.
- */
- pDraw = pGlxWindow->pDraw;
- }
- }
-
- if (!pDraw) {
- /*
- ** Drawable is neither a X window nor a GLX pixmap.
- */
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
-
- if (tag) {
- glxc = __glXLookupContextByTag(cl, tag);
- if (!glxc) {
- return __glXBadContextTag;
- }
- }
-
- if (pDraw &&
- pDraw->type == DRAWABLE_WINDOW &&
- DMX_GET_WINDOW_PRIV((WindowPtr)pDraw)->swapGroup) {
- return SGSwapBuffers(cl, drawId, tag, pDraw);
- }
-
- return __glXDoSwapBuffers(cl, drawId, tag);
-}
-
-
-/************************************************************************/
-
-/*
-** Render and Renderlarge are not in the GLX API. They are used by the GLX
-** client library to send batches of GL rendering commands.
-*/
-
-/*
-** Execute all the drawing commands in a request.
-*/
-int __glXRender(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXRenderReq *req;
- xGLXRenderReq *be_req;
- int size;
- __GLXcontext *glxc;
- int from_screen = 0;
- int to_screen = 0;
- int s;
-
- /*
- ** NOTE: much of this code also appears in the byteswapping version of this
- ** routine, __glXSwapRender(). Any changes made here should also be
- ** duplicated there.
- */
-
- req = (xGLXRenderReq *) pc;
-
- glxc = __glXLookupContextByTag(cl, req->contextTag);
- if (!glxc) {
- return 0;
- }
- from_screen = to_screen = glxc->pScreen->myNum;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- pc += sz_xGLXRenderReq;
- size = (req->length << 2) - sz_xGLXRenderReq;
-
- /*
- * just forward the request to back-end server(s)
- */
- for (s=from_screen; s<=to_screen; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
-
- LockDisplay(dpy);
- GetReq(GLXRender,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXRender;
- be_req->length = req->length;
- be_req->contextTag = GetCurrentBackEndTag(cl,req->contextTag,s);
- _XSend(dpy, (const char *)pc, size);
- UnlockDisplay(dpy);
- SyncHandle();
- }
-
- return Success;
-}
-
-/*
-** Execute a large rendering request (one that spans multiple X requests).
-*/
-int __glXRenderLarge(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXRenderLargeReq *req;
- xGLXRenderLargeReq *be_req;
- __GLXcontext *glxc;
- int from_screen = 0;
- int to_screen = 0;
- int s;
-
- /*
- ** NOTE: much of this code also appears in the byteswapping version of this
- ** routine, __glXSwapRenderLarge(). Any changes made here should also be
- ** duplicated there.
- */
-
- req = (xGLXRenderLargeReq *) pc;
- glxc = __glXLookupContextByTag(cl, req->contextTag);
- if (!glxc) {
- return 0;
- }
- from_screen = to_screen = glxc->pScreen->myNum;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- pc += sz_xGLXRenderLargeReq;
-
- /*
- * just forward the request to back-end server(s)
- */
- for (s=from_screen; s<=to_screen; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
-
- GetReq(GLXRenderLarge,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXRenderLarge;
- be_req->contextTag = GetCurrentBackEndTag(cl,req->contextTag,s);
- be_req->length = req->length;
- be_req->requestNumber = req->requestNumber;
- be_req->requestTotal = req->requestTotal;
- be_req->dataBytes = req->dataBytes;
- Data(dpy, (const char *)pc, req->dataBytes);
- UnlockDisplay(dpy);
- SyncHandle();
-
- }
-
- return Success;
-}
-
-
-/************************************************************************/
-
-int __glXVendorPrivate(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq *req;
-
- req = (xGLXVendorPrivateReq *) pc;
-
- switch( req->vendorCode ) {
-
- case X_GLvop_DeleteTexturesEXT:
- return __glXVForwardSingleReq( cl, pc );
- break;
-
- case X_GLXvop_SwapIntervalSGI:
- if (glxIsExtensionSupported("SGI_swap_control")) {
- return __glXVForwardSingleReq( cl, pc );
- }
- else {
- return Success;
- }
- break;
-
-#if 0 /* glx 1.3 */
- case X_GLXvop_CreateGLXVideoSourceSGIX:
- break;
- case X_GLXvop_DestroyGLXVideoSourceSGIX:
- break;
- case X_GLXvop_CreateGLXPixmapWithConfigSGIX:
- break;
- case X_GLXvop_DestroyGLXPbufferSGIX:
- break;
- case X_GLXvop_ChangeDrawableAttributesSGIX:
- break;
-#endif
-
- case X_GLXvop_BindSwapBarrierSGIX:
- return __glXBindSwapBarrierSGIX( cl, pc );
- break;
-
- case X_GLXvop_JoinSwapGroupSGIX:
- return __glXJoinSwapGroupSGIX( cl, pc );
- break;
-
- case X_GLXvop_CreateContextWithConfigSGIX:
- return __glXCreateContextWithConfigSGIX( cl, pc );
- break;
-
- default:
- /*
- ** unsupported private request
- */
- cl->client->errorValue = req->vendorCode;
- return __glXUnsupportedPrivateRequest;
- }
-
- cl->client->errorValue = req->vendorCode;
- return __glXUnsupportedPrivateRequest;
-
-}
-
-int __glXVendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateWithReplyReq *req;
-
- req = (xGLXVendorPrivateWithReplyReq *) pc;
-
- switch( req->vendorCode ) {
-
- case X_GLvop_GetConvolutionFilterEXT:
- case X_GLvop_GetConvolutionParameterfvEXT:
- case X_GLvop_GetConvolutionParameterivEXT:
- case X_GLvop_GetSeparableFilterEXT:
- case X_GLvop_GetHistogramEXT:
- case X_GLvop_GetHistogramParameterivEXT:
- case X_GLvop_GetMinmaxEXT:
- case X_GLvop_GetMinmaxParameterfvEXT:
- case X_GLvop_GetMinmaxParameterivEXT:
- case X_GLvop_AreTexturesResidentEXT:
- case X_GLvop_IsTextureEXT:
- return( __glXVForwardPipe0WithReply(cl, pc) );
- break;
-
- case X_GLvop_GenTexturesEXT:
- return( __glXVForwardAllWithReply(cl, pc) );
- break;
-
-
-#if 0 /* glx1.3 */
- case X_GLvop_GetDetailTexFuncSGIS:
- case X_GLvop_GetSharpenTexFuncSGIS:
- case X_GLvop_GetColorTableSGI:
- case X_GLvop_GetColorTableParameterfvSGI:
- case X_GLvop_GetColorTableParameterivSGI:
- case X_GLvop_GetTexFilterFuncSGIS:
- case X_GLvop_GetInstrumentsSGIX:
- case X_GLvop_InstrumentsBufferSGIX:
- case X_GLvop_PollInstrumentsSGIX:
- case X_GLvop_FlushRasterSGIX:
- case X_GLXvop_CreateGLXPbufferSGIX:
- case X_GLXvop_GetDrawableAttributesSGIX:
- case X_GLXvop_QueryHyperpipeNetworkSGIX:
- case X_GLXvop_QueryHyperpipeConfigSGIX:
- case X_GLXvop_HyperpipeConfigSGIX:
- case X_GLXvop_DestroyHyperpipeConfigSGIX:
-#endif
- case X_GLXvop_QueryMaxSwapBarriersSGIX:
- return( __glXQueryMaxSwapBarriersSGIX(cl, pc) );
- break;
-
- case X_GLXvop_GetFBConfigsSGIX:
- return( __glXGetFBConfigsSGIX(cl, pc) );
- break;
-
- case X_GLXvop_MakeCurrentReadSGI:
- return( __glXMakeCurrentReadSGI(cl, pc) );
- break;
-
- case X_GLXvop_QueryContextInfoEXT:
- return( __glXQueryContextInfoEXT(cl,pc) );
- break;
-
- default:
- /*
- ** unsupported private request
- */
- cl->client->errorValue = req->vendorCode;
- return __glXUnsupportedPrivateRequest;
- }
-
-}
-
-int __glXQueryExtensionsString(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryExtensionsStringReq *req = (xGLXQueryExtensionsStringReq *) pc;
- xGLXQueryExtensionsStringReply reply;
- GLint screen;
- size_t length;
- int len, numbytes;
- char *be_buf;
-
-#ifdef FWD_QUERY_REQ
- xGLXQueryExtensionsStringReq *be_req;
- xGLXQueryExtensionsStringReply be_reply;
- DMXScreenInfo *dmxScreen;
- Display *dpy;
- int slop;
-#endif
-
- screen = req->screen;
-
- /*
- ** Check if screen exists.
- */
- if ((screen < 0) || (screen >= screenInfo.numScreens)) {
- client->errorValue = screen;
- return BadValue;
- }
-
-#ifdef FWD_QUERY_REQ
- dmxScreen = &dmxScreens[screen];
-
- /* Send the glXQueryServerString request */
- dpy = GetBackEndDisplay(cl,screen);
- LockDisplay(dpy);
- GetReq(GLXQueryExtensionsString,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXQueryServerString;
- be_req->screen = DefaultScreen(dpy);
- _XReply(dpy, (xReply*) &be_reply, 0, False);
- len = (int)be_reply.length;
- numbytes = (int)be_reply.n;
- slop = numbytes * __GLX_SIZE_INT8 & 3;
- be_buf = (char *)Xalloc(numbytes);
- if (!be_buf) {
- /* Throw data on the floor */
- _XEatData(dpy, len);
- } else {
- _XRead(dpy, (char *)be_buf, numbytes);
- if (slop) _XEatData(dpy,4-slop);
- }
- UnlockDisplay(dpy);
- SyncHandle();
-
-#else
-
- be_buf = __glXGetServerString(GLX_EXTENSIONS);
- numbytes = strlen(be_buf) + 1;
- len = __GLX_PAD(numbytes) >> 2;
-
-#endif
-
- length = len;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- reply.length = len;
- reply.n = numbytes;
-
- if (client->swapped) {
- glxSwapQueryExtensionsStringReply(client, &reply, be_buf);
- } else {
- WriteToClient(client, sz_xGLXQueryExtensionsStringReply,(char *)&reply);
- WriteToClient(client, (int)(length << 2), (char *)be_buf);
- }
-
- return Success;
-}
-
-int __glXQueryServerString(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryServerStringReq *req = (xGLXQueryServerStringReq *) pc;
- xGLXQueryServerStringReply reply;
- int name;
- GLint screen;
- size_t length;
- int len, numbytes;
- char *be_buf;
-#ifdef FWD_QUERY_REQ
- xGLXQueryServerStringReq *be_req;
- xGLXQueryServerStringReply be_reply;
- DMXScreenInfo *dmxScreen;
- Display *dpy;
- int slop;
-#endif
-
- name = req->name;
- screen = req->screen;
- /*
- ** Check if screen exists.
- */
- if ((screen < 0) || (screen >= screenInfo.numScreens)) {
- client->errorValue = screen;
- return BadValue;
- }
-
-#ifdef FWD_QUERY_REQ
- dmxScreen = &dmxScreens[screen];
-
- /* Send the glXQueryServerString request */
- dpy = GetBackEndDisplay(cl,screen);
- LockDisplay(dpy);
- GetReq(GLXQueryServerString,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXQueryServerString;
- be_req->screen = DefaultScreen(dpy);
- be_req->name = name;
- _XReply(dpy, (xReply*) &be_reply, 0, False);
- len = (int)be_reply.length;
- numbytes = (int)be_reply.n;
- slop = numbytes * __GLX_SIZE_INT8 & 3;
- be_buf = (char *)Xalloc(numbytes);
- if (!be_buf) {
- /* Throw data on the floor */
- _XEatData(dpy, len);
- } else {
- _XRead(dpy, (char *)be_buf, numbytes);
- if (slop) _XEatData(dpy,4-slop);
- }
- UnlockDisplay(dpy);
- SyncHandle();
-
-#else
- be_buf = __glXGetServerString(name);
- numbytes = strlen(be_buf) + 1;
- len = __GLX_PAD(numbytes) >> 2;
-#endif
-
- length = len;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- reply.length = length;
- reply.n = numbytes;
-
- if (client->swapped) {
- glxSwapQueryServerStringReply(client, &reply, be_buf);
- } else {
- WriteToClient(client, sz_xGLXQueryServerStringReply, (char *)&reply);
- WriteToClient(client, (int)(length << 2), be_buf);
- }
-
- return Success;
-}
-
-int __glXClientInfo(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXClientInfoReq *req = (xGLXClientInfoReq *) pc;
- xGLXClientInfoReq *be_req;
- const char *buf;
- int from_screen = 0;
- int to_screen = 0;
- int s;
-
- cl->GLClientmajorVersion = req->major;
- cl->GLClientminorVersion = req->minor;
- if (cl->GLClientextensions) __glXFree(cl->GLClientextensions);
- buf = (const char *)(req+1);
- cl->GLClientextensions = __glXStrdup(buf);
-
- to_screen = screenInfo.numScreens - 1;
-
- for (s=from_screen; s<=to_screen; s++)
- {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
-
- LockDisplay(dpy);
- GetReq(GLXClientInfo,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXClientInfo;
- be_req->major = req->major;
- be_req->minor = req->minor;
- be_req->length = req->length;
- be_req->numbytes = req->numbytes;
- Data(dpy, buf, req->numbytes);
-
- UnlockDisplay(dpy);
- SyncHandle();
- }
-
- return Success;
-}
-
-int __glXUseXFont(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXUseXFontReq *req;
- xGLXUseXFontReq *be_req;
- FontPtr pFont;
- __GLXcontext *glxc = NULL;
- int from_screen = 0;
- int to_screen = 0;
- int s;
- dmxFontPrivPtr pFontPriv;
- DMXScreenInfo *dmxScreen;
- Display *dpy;
-
- req = (xGLXUseXFontReq *) pc;
-
- if (req->contextTag != 0) {
- glxc = __glXLookupContextByTag(cl, req->contextTag);
- if (glxc) {
- from_screen = to_screen = glxc->pScreen->myNum;
- }
- }
-
- /*
- ** Font can actually be either the ID of a font or the ID of a GC
- ** containing a font.
- */
- pFont = (FontPtr)LookupIDByType(req->font, RT_FONT);
- if (!pFont) {
- GC *pGC = (GC *)LookupIDByType(req->font, RT_GC);
- if (!pGC) {
- client->errorValue = req->font;
- return BadFont;
- }
- pFont = pGC->font;
- }
-
- pFontPriv = FontGetPrivate(pFont, dmxFontPrivateIndex);
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
-
- for (s=from_screen; s<=to_screen; s++) {
- dmxScreen = &dmxScreens[s];
- dpy = GetBackEndDisplay(cl,s);
-
- dmxSync( dmxScreen, 1 );
-
- LockDisplay(dpy);
- GetReq(GLXUseXFont,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXUseXFont;
- be_req->contextTag = (glxc ? GetCurrentBackEndTag(cl,req->contextTag,s) : 0);
- be_req->font = pFontPriv->font[s]->fid;
- be_req->first = req->first;
- be_req->count = req->count;
- be_req->listBase = req->listBase;
- UnlockDisplay(dpy);
- SyncHandle();
-
- XSync( dpy, False );
- }
-
- return Success;
-}
-
-/*
- * start GLX 1.3 here
- */
-
-int __glXGetFBConfigs(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXGetFBConfigsReq *req = (xGLXGetFBConfigsReq *) pc;
- xGLXGetFBConfigsReply reply;
- __GLXFBConfig *pFBConfig;
- CARD32 buf[2 * __GLX_TOTAL_FBCONFIG_PROPS];
- int numAttribs = __GLX_TOTAL_FBCONFIG_PROPS;
- unsigned int screen = req->screen;
- int numFBConfigs, i, p;
- __GLXscreenInfo *pGlxScreen;
-
- if (screen > screenInfo.numScreens) {
- /* The client library must send a valid screen number. */
- client->errorValue = screen;
- return BadValue;
- }
-
- pGlxScreen = &__glXActiveScreens[screen];
- numFBConfigs = __glXNumFBConfigs;
-
- reply.numFBConfigs = numFBConfigs;
- reply.numAttribs = numAttribs;
- reply.length = (numFBConfigs * 2 * numAttribs * __GLX_SIZE_CARD32) >> 2;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
-
- if (client->swapped) {
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply.sequenceNumber);
- __GLX_SWAP_INT(&reply.length);
- __GLX_SWAP_INT(&reply.numFBConfigs);
- __GLX_SWAP_INT(&reply.numAttribs);
- }
- WriteToClient(client, sz_xGLXGetFBConfigsReply, (char *)&reply);
-
- for (i=0; i < numFBConfigs; i++) {
- int associatedVisualId = 0;
- int drawableTypeIndex;
- pFBConfig = __glXFBConfigs[ i * (screenInfo.numScreens+1) ];
-
- p = 0;
- /* core attributes */
- buf[p++] = GLX_FBCONFIG_ID;
- buf[p++] = pFBConfig->id;
- buf[p++] = GLX_BUFFER_SIZE;
- buf[p++] = pFBConfig->indexBits;
- buf[p++] = GLX_LEVEL;
- buf[p++] = pFBConfig->level;
- buf[p++] = GLX_DOUBLEBUFFER;
- buf[p++] = pFBConfig->doubleBufferMode;
- buf[p++] = GLX_STEREO;
- buf[p++] = pFBConfig->stereoMode;
- buf[p++] = GLX_AUX_BUFFERS;
- buf[p++] = pFBConfig->maxAuxBuffers;
- buf[p++] = GLX_RED_SIZE;
- buf[p++] = pFBConfig->redBits;
- buf[p++] = GLX_GREEN_SIZE;
- buf[p++] = pFBConfig->greenBits;
- buf[p++] = GLX_BLUE_SIZE;
- buf[p++] = pFBConfig->blueBits;
- buf[p++] = GLX_ALPHA_SIZE;
- buf[p++] = pFBConfig->alphaBits;
- buf[p++] = GLX_DEPTH_SIZE;
- buf[p++] = pFBConfig->depthBits;
- buf[p++] = GLX_STENCIL_SIZE;
- buf[p++] = pFBConfig->stencilBits;
- buf[p++] = GLX_ACCUM_RED_SIZE;
- buf[p++] = pFBConfig->accumRedBits;
- buf[p++] = GLX_ACCUM_GREEN_SIZE;
- buf[p++] = pFBConfig->accumGreenBits;
- buf[p++] = GLX_ACCUM_BLUE_SIZE;
- buf[p++] = pFBConfig->accumBlueBits;
- buf[p++] = GLX_ACCUM_ALPHA_SIZE;
- buf[p++] = pFBConfig->accumAlphaBits;
- buf[p++] = GLX_RENDER_TYPE;
- buf[p++] = pFBConfig->renderType;
- buf[p++] = GLX_DRAWABLE_TYPE;
- drawableTypeIndex = p;
- buf[p++] = pFBConfig->drawableType;
- buf[p++] = GLX_X_VISUAL_TYPE;
- buf[p++] = pFBConfig->visualType;
- buf[p++] = GLX_CONFIG_CAVEAT;
- buf[p++] = pFBConfig->visualCaveat;
- buf[p++] = GLX_TRANSPARENT_TYPE;
- buf[p++] = pFBConfig->transparentType;
- buf[p++] = GLX_TRANSPARENT_RED_VALUE;
- buf[p++] = pFBConfig->transparentRed;
- buf[p++] = GLX_TRANSPARENT_GREEN_VALUE;
- buf[p++] = pFBConfig->transparentGreen;
- buf[p++] = GLX_TRANSPARENT_BLUE_VALUE;
- buf[p++] = pFBConfig->transparentBlue;
- buf[p++] = GLX_TRANSPARENT_ALPHA_VALUE;
- buf[p++] = pFBConfig->transparentAlpha;
- buf[p++] = GLX_TRANSPARENT_INDEX_VALUE;
- buf[p++] = pFBConfig->transparentIndex;
- buf[p++] = GLX_MAX_PBUFFER_WIDTH;
- buf[p++] = pFBConfig->maxPbufferWidth;
- buf[p++] = GLX_MAX_PBUFFER_HEIGHT;
- buf[p++] = pFBConfig->maxPbufferHeight;
- buf[p++] = GLX_MAX_PBUFFER_PIXELS;
- buf[p++] = pFBConfig->maxPbufferPixels;
-
- /*
- * find the visual of the back-end server and match a visual
- * on the proxy.
- * do only once - if a visual is not yet associated.
- */
- if (pFBConfig->associatedVisualId == (unsigned int)-1) {
- DMXScreenInfo *dmxScreen = &dmxScreens[screen];
- __GLXFBConfig *be_pFBConfig = __glXFBConfigs[ i * (screenInfo.numScreens+1)+screen+1 ];
- __GLXvisualConfig *pGlxVisual = NULL;
- int v;
- int found = 0;
- for (v=0; v<dmxScreen->numGlxVisuals; v++) {
- if (dmxScreen->glxVisuals[v].vid == be_pFBConfig->associatedVisualId) {
- pGlxVisual = &dmxScreen->glxVisuals[v];
- break;
- }
- }
-
- if (pGlxVisual) {
- for (v=0; v<pGlxScreen->numVisuals; v++) {
- if (glxVisualsMatch(&pGlxScreen->pGlxVisual[v], pGlxVisual)) {
- associatedVisualId = pGlxScreen->pGlxVisual[v].vid;
- found = 1;
- break;
- }
- }
- }
-
- if (!found) {
- associatedVisualId = 0;
- pFBConfig->drawableType &= ~(GLX_WINDOW_BIT);
- buf[drawableTypeIndex] = pFBConfig->drawableType;
- }
-#ifdef PANORAMIX
- else if (!noPanoramiXExtension) {
- /* convert the associated visualId to the panoramix one */
- for (v=0; v<255; v++) {
- if ( PanoramiXVisualTable[ v * MAXSCREENS + screen ] ==
- associatedVisualId ) {
- associatedVisualId = v;
- break;
- }
- }
- pFBConfig->associatedVisualId = associatedVisualId;
- }
-#endif
- }
- else {
- associatedVisualId = pFBConfig->associatedVisualId;
- }
-
- buf[p++] = GLX_VISUAL_ID;
- buf[p++] = associatedVisualId;
-
- /* SGIS_multisample attributes */
- buf[p++] = GLX_SAMPLES_SGIS;
- buf[p++] = pFBConfig->multiSampleSize;
- buf[p++] = GLX_SAMPLE_BUFFERS_SGIS;
- buf[p++] = pFBConfig->nMultiSampleBuffers;
-
- /* SGIX_pbuffer specific attributes */
- buf[p++] = GLX_OPTIMAL_PBUFFER_WIDTH_SGIX;
- buf[p++] = pFBConfig->optimalPbufferWidth;
- buf[p++] = GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX;
- buf[p++] = pFBConfig->optimalPbufferHeight;
-
- buf[p++] = GLX_VISUAL_SELECT_GROUP_SGIX;
- buf[p++] = pFBConfig->visualSelectGroup;
-
- if (client->swapped) {
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_INT_ARRAY((int *)buf, 2*numAttribs);
- }
- WriteToClient(client, 2*numAttribs * __GLX_SIZE_CARD32, (char *)buf);
- }
- return Success;
-}
-
-int __glXGetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXGetFBConfigsSGIXReq *req = (xGLXGetFBConfigsSGIXReq *)pc;
- xGLXGetFBConfigsReq new_req;
-
- new_req.reqType = req->reqType;
- new_req.glxCode = req->glxCode;
- new_req.length = req->length;
- new_req.screen = req->screen;
-
- return( __glXGetFBConfigs( cl, (GLbyte *)&new_req ) );
-}
-
-
-int __glXCreateWindow(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateWindowReq *req = (xGLXCreateWindowReq *) pc;
- int screen = req->screen;
- GLXFBConfigID fbconfigId = req->fbconfig;
- XID windowId = req->window;
- XID glxwindowId = req->glxwindow;
- DrawablePtr pDraw;
- ScreenPtr pScreen;
- __glXWindow *pGlxWindow;
- __GLXFBConfig *pGlxFBConfig = NULL;
- VisualPtr pVisual;
- VisualID visId;
- int i;
-
- /*
- ** Check if windowId is valid
- */
- pDraw = (DrawablePtr) LookupDrawable(windowId, client);
- if (!pDraw || pDraw->type != DRAWABLE_WINDOW) {
- client->errorValue = windowId;
- return BadWindow;
- }
-
- /*
- ** Check if screen of window matches screen of fbconfig.
- */
- pScreen = pDraw->pScreen;
- if (screen != pScreen->myNum) {
- return BadMatch;
- }
-
- /*
- ** Find the FBConfigRec for this fbconfigid.
- */
- if (!(pGlxFBConfig = glxLookupFBConfig(fbconfigId))) {
- client->errorValue = fbconfigId;
- return __glXBadFBConfig;
- }
- visId = pGlxFBConfig->associatedVisualId;
-
- /*
- ** Check if the fbconfig supports rendering to windows
- */
- if( !(pGlxFBConfig->drawableType & GLX_WINDOW_BIT) ) {
- return BadMatch;
- }
-
- if (visId != None) {
- /*
- ** Check if the visual ID is valid for this screen.
- */
- pVisual = pScreen->visuals;
- for (i = 0; i < pScreen->numVisuals; i++, pVisual++) {
- if (pVisual->vid == visId) {
- break;
- }
- }
- if (i == pScreen->numVisuals) {
- client->errorValue = visId;
- return BadValue;
- }
-
- /*
- ** Check if color buffer depth of fbconfig matches depth
- ** of window.
- */
- if (pVisual->nplanes != pDraw->depth) {
- return BadMatch;
- }
- } else
- /*
- ** The window was created with no visual that corresponds
- ** to fbconfig
- */
- return BadMatch;
-
- /*
- ** Check if there is already a fbconfig associated with this window
- */
- if ( LookupIDByType(glxwindowId, __glXWindowRes) ) {
- client->errorValue = glxwindowId;
- return BadAlloc;
- }
-
- pGlxWindow = (__glXWindow *) xalloc(sizeof(__glXWindow));
- if (!pGlxWindow) {
- return BadAlloc;
- }
-
- /*
- ** Register this GLX window as a resource
- */
- if (!(AddResource(glxwindowId, __glXWindowRes, pGlxWindow))) {
- return BadAlloc;
- }
-
- pGlxWindow->pDraw = pDraw;
- pGlxWindow->type = GLX_GLXWINDOW_TYPE;
- pGlxWindow->idExists = True;
- pGlxWindow->refcnt = 0;
- pGlxWindow->pGlxFBConfig = pGlxFBConfig;
- pGlxWindow->pScreen = pScreen;
-
- return Success;
-}
-
-int __glXDestroyWindow(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyWindowReq *req = (xGLXDestroyWindowReq *) pc;
- XID glxwindow = req->glxwindow;
-
- /*
- ** Check if it's a valid GLX window.
- */
- if (!LookupIDByType(glxwindow, __glXWindowRes)) {
- client->errorValue = glxwindow;
- return __glXBadDrawable;
- }
- /*
- ** The glx window destructor will check whether it's current before
- ** freeing anything.
- */
- FreeResource(glxwindow, RT_NONE);
-
- return Success;
-}
-
-int __glXQueryContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- __GLXcontext *ctx;
- xGLXQueryContextReq *req;
- xGLXQueryContextReply reply;
- int nProps;
- int *sendBuf, *pSendBuf;
- int nReplyBytes;
-
- req = (xGLXQueryContextReq *)pc;
- ctx = (__GLXcontext *) LookupIDByType(req->context, __glXContextRes);
- if (!ctx) {
- client->errorValue = req->context;
- return __glXBadContext;
- }
-
- nProps = 3;
-
- reply.length = nProps << 1;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- reply.n = nProps;
-
- nReplyBytes = reply.length << 2;
- sendBuf = (int *)xalloc(nReplyBytes);
- pSendBuf = sendBuf;
- *pSendBuf++ = GLX_FBCONFIG_ID;
- *pSendBuf++ = (int)(ctx->pFBConfig->id);
- *pSendBuf++ = GLX_RENDER_TYPE;
- *pSendBuf++ = (int)(ctx->pFBConfig->renderType);
- *pSendBuf++ = GLX_SCREEN;
- *pSendBuf++ = (int)(ctx->pScreen->myNum);
-
- if (client->swapped) {
- __glXSwapQueryContextReply(client, &reply, sendBuf);
- } else {
- WriteToClient(client, sz_xGLXQueryContextReply, (char *)&reply);
- WriteToClient(client, nReplyBytes, (char *)sendBuf);
- }
- xfree((char *)sendBuf);
-
- return Success;
-}
-
-int __glXQueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- __GLXcontext *ctx;
- xGLXQueryContextInfoEXTReq *req;
- xGLXQueryContextInfoEXTReply reply;
- int nProps;
- int *sendBuf, *pSendBuf;
- int nReplyBytes;
-
- req = (xGLXQueryContextInfoEXTReq *)pc;
- ctx = (__GLXcontext *) SecurityLookupIDByType(client, req->context, __glXContextRes, SecurityReadAccess);
- if (!ctx) {
- client->errorValue = req->context;
- return __glXBadContext;
- }
-
- nProps = 4;
-
- reply.length = nProps << 1;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- reply.n = nProps;
-
- nReplyBytes = reply.length << 2;
- sendBuf = (int *)xalloc(nReplyBytes);
- pSendBuf = sendBuf;
- *pSendBuf++ = GLX_SHARE_CONTEXT_EXT;
- *pSendBuf++ = (int)(ctx->share_id);
- *pSendBuf++ = GLX_VISUAL_ID_EXT;
- *pSendBuf++ = (int)(ctx->pVisual ? ctx->pVisual->vid : 0);
- *pSendBuf++ = GLX_SCREEN_EXT;
- *pSendBuf++ = (int)(ctx->pScreen->myNum);
- *pSendBuf++ = GLX_FBCONFIG_ID;
- *pSendBuf++ = (int)(ctx->pFBConfig ? ctx->pFBConfig->id : 0);
-
- if (client->swapped) {
- __glXSwapQueryContextInfoEXTReply(client, &reply, sendBuf);
- } else {
- WriteToClient(client, sz_xGLXQueryContextInfoEXTReply, (char *)&reply);
- WriteToClient(client, nReplyBytes, (char *)sendBuf);
- }
- xfree((char *)sendBuf);
-
- return Success;
-}
-
-int __glXCreatePbuffer(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreatePbufferReq *req = (xGLXCreatePbufferReq *)pc;
- xGLXCreatePbufferReq *be_req;
- int screen = req->screen;
- GLXFBConfigID fbconfigId = req->fbconfig;
- GLXPbuffer pbuffer = req->pbuffer;
- __glXPbuffer *pGlxPbuffer;
- int numAttribs = req->numAttribs;
- int *attr;
- ScreenPtr pScreen;
- __GLXFBConfig *pGlxFBConfig;
- __GLXFBConfig *be_pGlxFBConfig;
- XID be_xid;
- Display *dpy;
- DMXScreenInfo *dmxScreen;
- int s;
- int from_screen, to_screen;
-
- /*
- ** Look up screen and FBConfig.
- */
- if (screen > screenInfo.numScreens) {
- /* The client library must send a valid screen number. */
- client->errorValue = screen;
- return BadValue;
- }
- pScreen = screenInfo.screens[screen];
-
- /*
- ** Find the FBConfigRec for this fbconfigid.
- */
- if (!(pGlxFBConfig = glxLookupFBConfig(fbconfigId))) {
- client->errorValue = fbconfigId;
- return __glXBadFBConfig;
- }
-
- /*
- ** Create the GLX part of the Pbuffer.
- */
- pGlxPbuffer = (__glXPbuffer *) xalloc(sizeof(__glXPbuffer));
- if (!pGlxPbuffer) {
- return BadAlloc;
- }
-
- pGlxPbuffer->be_xids = (XID *) xalloc( sizeof(XID) * screenInfo.numScreens );
- if (!pGlxPbuffer->be_xids) {
- xfree(pGlxPbuffer);
- return BadAlloc;
- }
-
- /*
- * Allocate an XID on the back-end server(s) and send him the request
- */
- from_screen = to_screen = screen;
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- for (s=from_screen; s<=to_screen; s++) {
- dpy = GetBackEndDisplay(cl,s);
- be_xid = XAllocID(dpy);
- dmxScreen = &dmxScreens[s];
- be_pGlxFBConfig = glxLookupBackEndFBConfig( pGlxFBConfig->id, s );
-
- attr = (int *)( req+1 );
-
- LockDisplay(dpy);
- GetReqExtra(GLXCreatePbuffer, 2 * numAttribs * __GLX_SIZE_CARD32, be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXCreatePbuffer;
- be_req->screen = be_pGlxFBConfig->screen;
- be_req->fbconfig = be_pGlxFBConfig->id;
- be_req->pbuffer = be_xid;
- be_req->numAttribs = numAttribs;
-
- /* Send attributes */
- if ( attr != NULL ) {
- CARD32 *pc = (CARD32 *)(be_req + 1);
-
- while (numAttribs-- > 0) {
- *pc++ = *attr++; /* token */
- *pc++ = *attr++; /* value */
- }
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- pGlxPbuffer->be_xids[s] = be_xid;
- }
-
-
- pGlxPbuffer->idExists = True;
- pGlxPbuffer->refcnt = 0;
- pGlxPbuffer->pFBConfig = pGlxFBConfig;
- pGlxPbuffer->pScreen = pScreen;
-
- /*
- ** Register the resource.
- */
- if (!(AddResource(pbuffer, __glXPbufferRes, pGlxPbuffer))) {
- return BadAlloc;
- }
-
- return Success;
-
-}
-
-int __glXDestroyPbuffer(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyPbufferReq *req = (xGLXDestroyPbufferReq *) pc;
- xGLXDestroyPbufferReq *be_req;
- GLXPbuffer pbuffer = req->pbuffer;
- Display *dpy;
- int screen;
- DMXScreenInfo *dmxScreen;
- __glXPbuffer *pGlxPbuffer;
- int s;
- int from_screen, to_screen;
-
- /*
- ** Check if it's a valid Pbuffer
- */
- pGlxPbuffer = (__glXPbuffer *)LookupIDByType(pbuffer, __glXPbufferRes);
- if (!pGlxPbuffer) {
- client->errorValue = pbuffer;
- return __glXBadPbuffer;
- }
-
- screen = pGlxPbuffer->pScreen->myNum;
-
- from_screen = to_screen = screen;
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- for (s=from_screen; s<=to_screen; s++) {
- dpy = GetBackEndDisplay(cl,s);
- dmxScreen = &dmxScreens[s];
-
- /* send the destroy request to the back-end server */
- LockDisplay(dpy);
- GetReq(GLXDestroyPbuffer, be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXDestroyPbuffer;
- be_req->pbuffer = pGlxPbuffer->be_xids[s];
- UnlockDisplay(dpy);
- SyncHandle();
- }
-
- FreeResource(pbuffer, RT_NONE);
-
- return Success;
-}
-
-int __glXGetDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXGetDrawableAttributesReq *req = (xGLXGetDrawableAttributesReq *)pc;
- xGLXGetDrawableAttributesReq *be_req;
- xGLXGetDrawableAttributesReply reply;
- ClientPtr client = cl->client;
- GLXDrawable drawId = req->drawable;
- GLXDrawable be_drawable = 0;
- DrawablePtr pDraw = NULL;
- Display *dpy;
- int screen;
- DMXScreenInfo *dmxScreen;
- CARD32 *attribs = NULL;
- int attribs_size;
-#ifdef PANORAMIX
- PanoramiXRes *pXinDraw = NULL;
-#endif
-
- if (drawId != None) {
- pDraw = (DrawablePtr) LookupDrawable(drawId, client);
- if (pDraw) {
- if (pDraw->type == DRAWABLE_WINDOW) {
- WindowPtr pWin = (WindowPtr)pDraw;
- be_drawable = 0;
- screen = pWin->drawable.pScreen->myNum;
-
- }
- else {
- /*
- ** Drawable is not a Window , GLXWindow or a GLXPixmap.
- */
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
- }
-
- if (!pDraw) {
- __GLXpixmap *pGlxPixmap = (__GLXpixmap *) LookupIDByType(drawId,
- __glXPixmapRes);
- if (pGlxPixmap) {
- pDraw = pGlxPixmap->pDraw;
- screen = pGlxPixmap->pScreen->myNum;
- be_drawable = pGlxPixmap->be_xids[screen];
- }
- }
-
- if (!pDraw) {
- __glXWindow *pGlxWindow = (__glXWindow *) LookupIDByType(drawId, __glXWindowRes);
- if (pGlxWindow) {
- pDraw = pGlxWindow->pDraw;
- screen = pGlxWindow->pScreen->myNum;
- be_drawable = 0;
- }
- }
-
- if (!pDraw) {
- __glXPbuffer *pGlxPbuffer = (__glXPbuffer *)LookupIDByType(drawId, __glXPbufferRes);
- if (pGlxPbuffer) {
- pDraw = (DrawablePtr)pGlxPbuffer;
- screen = pGlxPbuffer->pScreen->myNum;
- be_drawable = pGlxPbuffer->be_xids[screen];
- }
- }
-
-
- if (!pDraw) {
- /*
- ** Drawable is not a Window , GLXWindow or a GLXPixmap.
- */
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
- }
-
-
- /* if the drawable is a window or GLXWindow -
- * we need to find the base id on the back-end server
- */
- if (!be_drawable) {
- WindowPtr pWin = (WindowPtr)pDraw;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- pXinDraw = (PanoramiXRes *)
- SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, SecurityReadAccess);
- if (!pXinDraw) {
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
-
- pWin = (WindowPtr)SecurityLookupWindow(pXinDraw->info[screen].id,
- client,
- SecurityReadAccess);
- }
-#endif
-
- if (pWin) {
- be_drawable = (unsigned int)(DMX_GET_WINDOW_PRIV(pWin))->window;
- if (!be_drawable) {
- /* it might be that the window did not created yet on the */
- /* back-end server (lazy window creation option), force */
- /* creation of the window */
- dmxCreateAndRealizeWindow( pWin, TRUE );
- be_drawable = (unsigned int)(DMX_GET_WINDOW_PRIV(pWin))->window;
- }
- }
- else {
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
- }
-
-
- /* send the request to the back-end server */
- dpy = GetBackEndDisplay(cl,screen);
- dmxScreen = &dmxScreens[screen];
-
- /* make sure drawable exists on back-end */
- dmxSync( dmxScreen, 1 );
-
- LockDisplay(dpy);
- GetReq(GLXGetDrawableAttributes, be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXGetDrawableAttributes;
- be_req->drawable = be_drawable;
- be_req->length = req->length;
- if (!_XReply(dpy, (xReply *) &reply, 0, False)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return( BE_TO_CLIENT_ERROR(dmxLastErrorEvent.error_code) );
- }
-
- if (reply.numAttribs) {
- attribs_size = 2 * reply.numAttribs * __GLX_SIZE_CARD32;
- attribs = (CARD32 *) Xalloc(attribs_size);
- if (attribs == NULL) {
- UnlockDisplay(dpy);
- SyncHandle();
- return BadAlloc;
- }
-
- _XRead(dpy, (char *) attribs, attribs_size);
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
-
- /* send the reply back to the client */
- reply.sequenceNumber = client->sequence;
- if (client->swapped) {
- __glXSwapGetDrawableAttributesReply(client, &reply, (int *)attribs);
- }
- else {
- WriteToClient(client, sz_xGLXGetDrawableAttributesReply, (char *)&reply);
- WriteToClient(client, attribs_size, (char *)attribs);
- }
-
- Xfree(attribs);
-
- return Success;
-}
-
-int __glXChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXChangeDrawableAttributesReq *req = (xGLXChangeDrawableAttributesReq *)pc;
- xGLXChangeDrawableAttributesReq *be_req;
- ClientPtr client = cl->client;
- GLXDrawable drawId = req->drawable;
- GLXDrawable be_drawable = 0;
- DrawablePtr pDraw = NULL;
- Display *dpy;
- int screen;
- DMXScreenInfo *dmxScreen;
- char *attrbuf;
-#ifdef PANORAMIX
- PanoramiXRes *pXinDraw = NULL;
- PanoramiXRes *pXinReadDraw = NULL;
-#endif
-
- if (drawId != None) {
- pDraw = (DrawablePtr) LookupDrawable(drawId, client);
- if (pDraw) {
- if (pDraw->type == DRAWABLE_WINDOW) {
- WindowPtr pWin = (WindowPtr)pDraw;
- be_drawable = 0;
- screen = pWin->drawable.pScreen->myNum;
-
- }
- else {
- /*
- ** Drawable is not a Window , GLXWindow or a GLXPixmap.
- */
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
- }
-
- if (!pDraw) {
- __GLXpixmap *pGlxPixmap = (__GLXpixmap *) LookupIDByType(drawId,
- __glXPixmapRes);
- if (pGlxPixmap) {
- pDraw = pGlxPixmap->pDraw;
- screen = pGlxPixmap->pScreen->myNum;
- be_drawable = pGlxPixmap->be_xids[screen];
- }
- }
-
- if (!pDraw) {
- __glXWindow *pGlxWindow = (__glXWindow *) LookupIDByType(drawId, __glXWindowRes);
- if (pGlxWindow) {
- pDraw = pGlxWindow->pDraw;
- screen = pGlxWindow->pScreen->myNum;
- be_drawable = 0;
- }
- }
-
- if (!pDraw) {
- __glXPbuffer *pGlxPbuffer = (__glXPbuffer *)LookupIDByType(drawId, __glXPbufferRes);
- if (pGlxPbuffer) {
- pDraw = (DrawablePtr)pGlxPbuffer;
- screen = pGlxPbuffer->pScreen->myNum;
- be_drawable = pGlxPbuffer->be_xids[screen];
- }
- }
-
-
- if (!pDraw) {
- /*
- ** Drawable is not a Window , GLXWindow or a GLXPixmap.
- */
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
- }
-
-
- /* if the drawable is a window or GLXWindow -
- * we need to find the base id on the back-end server
- */
- if (!be_drawable) {
- WindowPtr pWin = (WindowPtr)pDraw;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- pXinDraw = (PanoramiXRes *)
- SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, SecurityReadAccess);
- if (!pXinDraw) {
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
-
- pWin = (WindowPtr)SecurityLookupWindow(pXinDraw->info[screen].id,
- client,
- SecurityReadAccess);
- }
-#endif
-
- if (pWin) {
- be_drawable = (unsigned int)(DMX_GET_WINDOW_PRIV(pWin))->window;
- if (!be_drawable) {
- /* it might be that the window did not created yet on the */
- /* back-end server (lazy window creation option), force */
- /* creation of the window */
- dmxCreateAndRealizeWindow( pWin, TRUE );
- be_drawable = (unsigned int)(DMX_GET_WINDOW_PRIV(pWin))->window;
- }
- }
- else {
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
- }
-
-
- /* send the request to the back-end server */
- dpy = GetBackEndDisplay(cl,screen);
- dmxScreen = &dmxScreens[screen];
-
- /* make sure drawable exists on back-end */
- dmxSync( dmxScreen, 1 );
-
- LockDisplay(dpy);
- GetReqExtra(GLXChangeDrawableAttributes,
- 2 * req->numAttribs * __GLX_SIZE_CARD32, be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLXChangeDrawableAttributes;
- be_req->drawable = be_drawable;
- be_req->numAttribs = req->numAttribs;
- be_req->length = req->length;
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return Success;
-}
-
-int __glXSendLargeCommand(__GLXclientState *cl, GLXContextTag contextTag)
-{
- ClientPtr client = cl->client;
- xGLXRenderLargeReq *req;
- GLint maxSize, amount;
- GLint totalRequests, requestNumber;
- GLint dataLen;
- GLbyte *data;
- __GLXcontext *glxc;
- int s;
- int from_screen, to_screen;
-
- maxSize = cl->largeCmdMaxReqDataSize - (GLint)sizeof(xGLXRenderLargeReq);
- dataLen = cl->largeCmdBytesTotal;
- totalRequests = (dataLen / maxSize);
- if (dataLen % maxSize) totalRequests++;
-
- glxc = __glXLookupContextByTag(cl, contextTag);
- if (!glxc) {
- client->errorValue = contextTag;
- return __glXBadContext;
- }
- from_screen = to_screen = glxc->pScreen->myNum;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- /*
- ** Send enough requests until the whole array is sent.
- */
- requestNumber = 1;
- data = cl->largeCmdBuf;
- while (dataLen > 0) {
- amount = dataLen;
- if (amount > maxSize) {
- amount = maxSize;
- }
-
- for (s=from_screen; s<=to_screen; s++) {
-
- Display *dpy = GetBackEndDisplay(cl,s);
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
-
- LockDisplay(dpy);
- GetReq(GLXRenderLarge,req);
- req->reqType = dmxScreen->glxMajorOpcode;
- req->glxCode = X_GLXRenderLarge;
- req->contextTag = (glxc ? GetCurrentBackEndTag(cl,contextTag,s) : 0);
- req->length += (amount + 3) >> 2;
- req->requestNumber = requestNumber++;
- req->requestTotal = totalRequests;
- req->dataBytes = amount;
- Data(dpy, ((const char*)data), amount);
- dataLen -= amount;
- data = ((GLbyte *) data) + amount;
- UnlockDisplay(dpy);
- SyncHandle();
- }
- }
-
- return Success;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcmdsswap.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcmdsswap.c
deleted file mode 100644
index 565793e22..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcmdsswap.c
+++ /dev/null
@@ -1,1059 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxcmdsswap.c,v 1.5 2001/03/21 16:29:36 dawes Exp $ */
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#define NEED_REPLIES
-#define FONT_PCF
-#include "glxserver.h"
-#include "glxutil.h"
-#include <GL/glxtokens.h>
-#include <g_disptab.h>
-#include <pixmapstr.h>
-#include <windowstr.h>
-#include "unpack.h"
-#include "glxext.h"
-#include "GL/glx_ansic.h"
-#include "glxvendor.h"
-
-extern int glxIsExtensionSupported( char *ext );
-
-/************************************************************************/
-
-/*
-** Byteswapping versions of GLX commands. In most cases they just swap
-** the incoming arguments and then call the unswapped routine. For commands
-** that have replies, a separate swapping routine for the reply is provided;
-** it is called at the end of the unswapped routine.
-*/
-
-int __glXSwapCreateContext(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreateContextReq *req = (xGLXCreateContextReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
- __GLX_SWAP_INT(&req->visual);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->shareList);
-
- return __glXCreateContext(cl, pc);
-}
-
-int __glXSwapCreateNewContext(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreateNewContextReq *req = (xGLXCreateNewContextReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
- __GLX_SWAP_INT(&req->fbconfig);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->shareList);
-
- return __glXCreateNewContext(cl, pc);
-}
-
-int __glXSwapCreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreateContextWithConfigSGIXReq *req = (xGLXCreateContextWithConfigSGIXReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
- __GLX_SWAP_INT(&req->fbconfig);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->shareList);
-
- return __glXCreateContextWithConfigSGIX(cl, pc);
-}
-
-int __glXSwapQueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXQueryMaxSwapBarriersSGIXReq *req =
- (xGLXQueryMaxSwapBarriersSGIXReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
-
- return __glXQueryMaxSwapBarriersSGIX(cl, pc);
-}
-
-int __glXSwapBindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXBindSwapBarrierSGIXReq *req = (xGLXBindSwapBarrierSGIXReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->drawable);
- __GLX_SWAP_INT(&req->barrier);
-
- return __glXBindSwapBarrierSGIX(cl, pc);
-}
-
-int __glXSwapJoinSwapGroupSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXJoinSwapGroupSGIXReq *req = (xGLXJoinSwapGroupSGIXReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->drawable);
- __GLX_SWAP_INT(&req->member);
-
- return __glXJoinSwapGroupSGIX(cl, pc);
-}
-
-int __glXSwapDestroyContext(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXDestroyContextReq *req = (xGLXDestroyContextReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
-
- return __glXDestroyContext(cl, pc);
-}
-
-int __glXSwapMakeCurrent(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXMakeCurrentReq *req = (xGLXMakeCurrentReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->drawable);
- __GLX_SWAP_INT(&req->context);
- __GLX_SWAP_INT(&req->oldContextTag);
-
- return __glXMakeCurrent(cl, pc);
-}
-
-int __glXSwapMakeContextCurrent(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXMakeContextCurrentReq *req = (xGLXMakeContextCurrentReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->drawable);
- __GLX_SWAP_INT(&req->readdrawable);
- __GLX_SWAP_INT(&req->context);
- __GLX_SWAP_INT(&req->oldContextTag);
-
- return __glXMakeContextCurrent(cl, pc);
-}
-
-int __glXSwapMakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXMakeCurrentReadSGIReq *req = (xGLXMakeCurrentReadSGIReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->drawable);
- __GLX_SWAP_INT(&req->readable);
- __GLX_SWAP_INT(&req->context);
- __GLX_SWAP_INT(&req->oldContextTag);
-
- return __glXMakeCurrentReadSGI(cl, pc);
-}
-
-int __glXSwapIsDirect(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXIsDirectReq *req = (xGLXIsDirectReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
-
- return __glXIsDirect(cl, pc);
-}
-
-int __glXSwapQueryVersion(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXQueryVersionReq *req = (xGLXQueryVersionReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->majorVersion);
- __GLX_SWAP_INT(&req->minorVersion);
-
- return __glXQueryVersion(cl, pc);
-}
-
-int __glXSwapWaitGL(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXWaitGLReq *req = (xGLXWaitGLReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- return __glXWaitGL(cl, pc);
-}
-
-int __glXSwapWaitX(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXWaitXReq *req = (xGLXWaitXReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- return __glXWaitX(cl, pc);
-}
-
-int __glXSwapCopyContext(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCopyContextReq *req = (xGLXCopyContextReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->source);
- __GLX_SWAP_INT(&req->dest);
- __GLX_SWAP_INT(&req->mask);
-
- return __glXCopyContext(cl, pc);
-}
-
-int __glXSwapGetVisualConfigs(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXGetVisualConfigsReq *req = (xGLXGetVisualConfigsReq *) pc;
- xGLXGetVisualConfigsReply reply;
- __GLXscreenInfo *pGlxScreen;
- __GLXvisualConfig *pGlxVisual;
- CARD32 buf[__GLX_TOTAL_CONFIG];
- unsigned int screen;
- int i, p;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(&req->screen);
- screen = req->screen;
- if (screen > screenInfo.numScreens) {
- /* The client library must send a valid screen number. */
- client->errorValue = screen;
- return BadValue;
- }
- pGlxScreen = &__glXActiveScreens[screen];
-
- reply.numVisuals = pGlxScreen->numGLXVisuals;
- reply.numProps = __GLX_TOTAL_CONFIG;
- reply.length = (pGlxScreen->numGLXVisuals * __GLX_SIZE_CARD32 *
- __GLX_TOTAL_CONFIG) >> 2;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
-
- __GLX_SWAP_SHORT(&reply.sequenceNumber);
- __GLX_SWAP_INT(&reply.length);
- __GLX_SWAP_INT(&reply.numVisuals);
- __GLX_SWAP_INT(&reply.numProps);
- WriteToClient(client, sz_xGLXGetVisualConfigsReply, (char *)&reply);
-
- for (i=0; i < pGlxScreen->numVisuals; i++) {
- pGlxVisual = &pGlxScreen->pGlxVisual[i];
- if (!pGlxScreen->isGLXvis[i] || pGlxVisual->vid == 0) {
- /* not a usable visual */
- continue;
- }
- p = 0;
- buf[p++] = pGlxVisual->vid;
- buf[p++] = pGlxVisual->class;
- buf[p++] = pGlxVisual->rgba;
-
- buf[p++] = pGlxVisual->redSize;
- buf[p++] = pGlxVisual->greenSize;
- buf[p++] = pGlxVisual->blueSize;
- buf[p++] = pGlxVisual->alphaSize;
- buf[p++] = pGlxVisual->accumRedSize;
- buf[p++] = pGlxVisual->accumGreenSize;
- buf[p++] = pGlxVisual->accumBlueSize;
- buf[p++] = pGlxVisual->accumAlphaSize;
-
- buf[p++] = pGlxVisual->doubleBuffer;
- buf[p++] = pGlxVisual->stereo;
-
- buf[p++] = pGlxVisual->bufferSize;
- buf[p++] = pGlxVisual->depthSize;
- buf[p++] = pGlxVisual->stencilSize;
- buf[p++] = pGlxVisual->auxBuffers;
- buf[p++] = pGlxVisual->level;
- /*
- ** Add token/value pairs for extensions.
- */
- buf[p++] = GLX_VISUAL_CAVEAT_EXT;
- buf[p++] = pGlxVisual->visualRating;
- buf[p++] = GLX_TRANSPARENT_TYPE_EXT;
- buf[p++] = pGlxVisual->transparentPixel;
- buf[p++] = GLX_TRANSPARENT_RED_VALUE_EXT;
- buf[p++] = pGlxVisual->transparentRed;
- buf[p++] = GLX_TRANSPARENT_GREEN_VALUE_EXT;
- buf[p++] = pGlxVisual->transparentGreen;
- buf[p++] = GLX_TRANSPARENT_BLUE_VALUE_EXT;
- buf[p++] = pGlxVisual->transparentBlue;
- buf[p++] = GLX_TRANSPARENT_ALPHA_VALUE_EXT;
- buf[p++] = pGlxVisual->transparentAlpha;
- buf[p++] = GLX_TRANSPARENT_INDEX_VALUE_EXT;
- buf[p++] = pGlxVisual->transparentIndex;
-
- __GLX_SWAP_INT_ARRAY(buf, __GLX_TOTAL_CONFIG);
- WriteToClient(client, __GLX_SIZE_CARD32 * __GLX_TOTAL_CONFIG,
- (char *)buf);
- }
- return Success;
-}
-
-int __glXSwapCreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreateGLXPixmapReq *req = (xGLXCreateGLXPixmapReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->visual);
- __GLX_SWAP_INT(&req->pixmap);
- __GLX_SWAP_INT(&req->glxpixmap);
-
- return __glXCreateGLXPixmap(cl, pc);
-}
-
-int __glXSwapCreatePixmap(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreatePixmapReq *req = (xGLXCreatePixmapReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->fbconfig);
- __GLX_SWAP_INT(&req->pixmap);
- __GLX_SWAP_INT(&req->glxpixmap);
- __GLX_SWAP_INT(&req->numAttribs);
-
- return __glXCreatePixmap(cl, pc);
-}
-
-int __glXSwapDestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->glxpixmap);
-
- return __glXDestroyGLXPixmap(cl, pc);
-}
-
-int __glXSwapSwapBuffers(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXSwapBuffersReq *req = (xGLXSwapBuffersReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
- __GLX_SWAP_INT(&req->drawable);
-
- return __glXSwapBuffers(cl, pc);
-}
-
-int __glXSwapUseXFont(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXUseXFontReq *req = (xGLXUseXFontReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
- __GLX_SWAP_INT(&req->font);
- __GLX_SWAP_INT(&req->first);
- __GLX_SWAP_INT(&req->count);
- __GLX_SWAP_INT(&req->listBase);
-
- return __glXUseXFont(cl, pc);
-}
-
-
-int __glXSwapQueryExtensionsString(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXQueryExtensionsStringReq *req = NULL;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
-
- return __glXQueryExtensionsString(cl, pc);
-}
-
-int __glXSwapQueryServerString(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXQueryServerStringReq *req = (xGLXQueryServerStringReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->name);
-
- return __glXQueryServerString(cl, pc);
-}
-
-int __glXSwapClientInfo(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXClientInfoReq *req = (xGLXClientInfoReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->major);
- __GLX_SWAP_INT(&req->minor);
- __GLX_SWAP_INT(&req->numbytes);
-
- return __glXClientInfo(cl, pc);
-}
-
-int __glXSwapQueryContextInfoEXT(__GLXclientState *cl, char *pc)
-{
- xGLXQueryContextInfoEXTReq *req = (xGLXQueryContextInfoEXTReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
-
- return __glXQueryContextInfoEXT(cl, (GLbyte *)pc);
-}
-
-/************************************************************************/
-
-/*
-** Swap replies.
-*/
-
-void __glXSwapMakeCurrentReply(ClientPtr client, xGLXMakeCurrentReadSGIReply *reply)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->contextTag);
- __GLX_SWAP_INT(&reply->writeVid);
- __GLX_SWAP_INT(&reply->writeType);
- __GLX_SWAP_INT(&reply->readVid);
- __GLX_SWAP_INT(&reply->readType);
- WriteToClient(client, sz_xGLXMakeCurrentReadSGIReply, (char *)reply);
-}
-
-void __glXSwapIsDirectReply(ClientPtr client, xGLXIsDirectReply *reply)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- WriteToClient(client, sz_xGLXIsDirectReply, (char *)reply);
-}
-
-void __glXSwapQueryVersionReply(ClientPtr client, xGLXQueryVersionReply *reply)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->majorVersion);
- __GLX_SWAP_INT(&reply->minorVersion);
- WriteToClient(client, sz_xGLXQueryVersionReply, (char *)reply);
-}
-
-void glxSwapQueryExtensionsStringReply(ClientPtr client,
- xGLXQueryExtensionsStringReply *reply, char *buf)
-{
- int length = reply->length;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->n);
- WriteToClient(client, sz_xGLXQueryExtensionsStringReply, (char *)reply);
- __GLX_SWAP_INT_ARRAY((int *)buf, length);
- WriteToClient(client, length << 2, buf);
-}
-
-void glxSwapQueryServerStringReply(ClientPtr client,
- xGLXQueryServerStringReply *reply, char *buf)
-{
- int length = reply->length;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->n);
- WriteToClient(client, sz_xGLXQueryServerStringReply, (char *)reply);
- /** no swap is needed for an array of chars **/
- /* __GLX_SWAP_INT_ARRAY((int *)buf, length); */
- WriteToClient(client, length << 2, buf);
-}
-
-void __glXSwapQueryContextInfoEXTReply(ClientPtr client, xGLXQueryContextInfoEXTReply *reply, int *buf)
-{
- int length = reply->length;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->n);
- WriteToClient(client, sz_xGLXQueryContextInfoEXTReply, (char *)reply);
- __GLX_SWAP_INT_ARRAY((int *)buf, length);
- WriteToClient(client, length << 2, (char *)buf);
-}
-
-
-void __glXSwapQueryContextReply(ClientPtr client,
- xGLXQueryContextReply *reply, int *buf)
-{
- int length = reply->length;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->n);
- WriteToClient(client, sz_xGLXQueryContextReply, (char *)reply);
- __GLX_SWAP_INT_ARRAY((int *)buf, length);
- WriteToClient(client, length << 2, (char *)buf);
-}
-
-void __glXSwapGetDrawableAttributesReply(ClientPtr client,
- xGLXGetDrawableAttributesReply *reply, int *buf)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->numAttribs);
- __GLX_SWAP_INT_ARRAY( buf, reply->length );
- WriteToClient(client, sz_xGLXGetDrawableAttributesReply, (char *)reply);
- WriteToClient(client, reply->length << 2, (char *)buf);
-}
-
-void __glXSwapQueryMaxSwapBarriersSGIXReply(ClientPtr client, xGLXQueryMaxSwapBarriersSGIXReply *reply)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->max);
- WriteToClient(client, sz_xGLXQueryMaxSwapBarriersSGIXReply, (char *)reply);
-}
-
-/************************************************************************/
-
-/*
-** Render and Renderlarge are not in the GLX API. They are used by the GLX
-** client library to send batches of GL rendering commands.
-*/
-
-int __glXSwapRender(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXRenderReq *req;
- int left;
- __GLXrenderHeader *hdr;
- ClientPtr client = cl->client;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- /*
- ** NOTE: much of this code also appears in the nonswapping version of this
- ** routine, __glXRender(). Any changes made here should also be
- ** duplicated there.
- */
-
- req = (xGLXRenderReq *) pc;
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- pc += sz_xGLXRenderReq;
- left = (req->length << 2) - sz_xGLXRenderReq;
- while (left > 0) {
- void (* proc)(GLbyte *);
- CARD16 opcode;
-
- /*
- ** Verify that the header length and the overall length agree.
- ** Also, each command must be word aligned.
- */
- hdr = (__GLXrenderHeader *) pc;
- __GLX_SWAP_SHORT(&hdr->length);
- __GLX_SWAP_SHORT(&hdr->opcode);
-
- /*
- * call the command procedure to swap any arguments
- */
- opcode = hdr->opcode;
- if ( (opcode >= __GLX_MIN_RENDER_OPCODE) &&
- (opcode <= __GLX_MAX_RENDER_OPCODE) ) {
- proc = __glXSwapRenderTable[opcode];
-#if __GLX_MAX_RENDER_OPCODE_EXT > __GLX_MIN_RENDER_OPCODE_EXT
- } else if ( (opcode >= __GLX_MIN_RENDER_OPCODE_EXT) &&
- (opcode <= __GLX_MAX_RENDER_OPCODE_EXT) ) {
- int index = opcode - __GLX_MIN_RENDER_OPCODE_EXT;
- __GLXRenderSwapInfo *info = &__glXSwapRenderTable_EXT[index];
- if (info->swapfunc) {
- proc = info->swapfunc;
- }
- else {
- proc = NULL;
- if (info->elem_size == 4 && info->nelems > 0) {
- __GLX_SWAP_INT_ARRAY( (int *)(pc + __GLX_RENDER_HDR_SIZE),
- info->nelems );
- }
- else if (info->elem_size == 2 && info->nelems > 0) {
- __GLX_SWAP_SHORT_ARRAY( (short *)(pc + __GLX_RENDER_HDR_SIZE),
- info->nelems );
- }
- else if (info->elem_size == 8 && info->nelems > 0) {
- __GLX_SWAP_DOUBLE_ARRAY( (double *)(pc + __GLX_RENDER_HDR_SIZE),
- info->nelems );
- }
- }
-#endif /* __GLX_MAX_RENDER_OPCODE_EXT > __GLX_MIN_RENDER_OPCODE_EXT */
- } else {
- client->errorValue = 0;
- return __glXBadRenderRequest;
- }
-
- if (proc != NULL)
- (*proc)(pc + __GLX_RENDER_HDR_SIZE);
-
- /*
- * proceed to the next command
- */
- pc += hdr->length;
- left -= hdr->length;
- }
-
- return __glXRender( cl, (GLbyte *)req );
-}
-
-/*
-** Execute a large rendering request (one that spans multiple X requests).
-*/
-int __glXSwapRenderLarge(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXRenderLargeReq *req;
- __GLXrenderLargeHeader *hdr;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- req = (xGLXRenderLargeReq *) pc;
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
- __GLX_SWAP_INT(&req->dataBytes);
- __GLX_SWAP_SHORT(&req->requestNumber);
- __GLX_SWAP_SHORT(&req->requestTotal);
-
- pc += sz_xGLXRenderLargeReq;
-
- if (req->requestNumber == 1) {
- void (* proc)(GLbyte *) = NULL;
- __GLXRenderSwapInfo *info = NULL;
- CARD16 opcode;
-
- hdr = (__GLXrenderLargeHeader *) pc;
- __GLX_SWAP_INT(&hdr->length);
- __GLX_SWAP_INT(&hdr->opcode);
-
- /*
- * call the command procedure to swap any arguments
- * Note that we are assuming that all arguments that needs to be
- * swaped are on the first req only !
- */
- opcode = hdr->opcode;
- if ( (opcode >= __GLX_MIN_RENDER_OPCODE) &&
- (opcode <= __GLX_MAX_RENDER_OPCODE) ) {
- proc = __glXSwapRenderTable[opcode];
-#if __GLX_MAX_RENDER_OPCODE_EXT > __GLX_MIN_RENDER_OPCODE_EXT
- } else if ( (opcode >= __GLX_MIN_RENDER_OPCODE_EXT) &&
- (opcode <= __GLX_MAX_RENDER_OPCODE_EXT) ) {
- int index = opcode - __GLX_MIN_RENDER_OPCODE_EXT;
- info = &__glXSwapRenderTable_EXT[index];
- if (info->swapfunc) {
- proc = info->swapfunc;
- }
-#endif /* __GLX_MAX_RENDER_OPCODE_EXT > __GLX_MIN_RENDER_OPCODE_EXT */
- } else {
- client->errorValue = 0;
- cl->largeCmdRequestsTotal = 0;
- return __glXBadLargeRequest;
- }
-
- /*
- ** Make enough space in the buffer, then copy the entire request.
- */
- if (cl->largeCmdBufSize < hdr->length) {
- if (!cl->largeCmdBuf) {
- cl->largeCmdBuf = (GLbyte *) __glXMalloc(hdr->length);
- } else {
- cl->largeCmdBuf = (GLbyte *) __glXRealloc(cl->largeCmdBuf, hdr->length);
- }
- if (!cl->largeCmdBuf) {
- cl->largeCmdRequestsTotal = 0;
- return BadAlloc;
- }
- cl->largeCmdBufSize = hdr->length;
- }
- __glXMemcpy(cl->largeCmdBuf, pc, req->dataBytes);
-
- cl->largeCmdBytesSoFar = req->dataBytes;
- cl->largeCmdBytesTotal = hdr->length;
- cl->largeCmdRequestsSoFar = 1;
- cl->largeCmdRequestsTotal = req->requestTotal;
- cl->largeCmdRequestsSwapProc = proc;
- cl->largeCmdMaxReqDataSize = req->dataBytes;
- cl->largeCmdRequestsSwap_info = info;
-
- return Success;
-
-
- }
- else if (req->requestNumber < cl->largeCmdRequestsTotal) {
- /*
- * This is not the first nor last request - just copy the data
- */
- if ( cl->largeCmdBytesSoFar + req->dataBytes > cl->largeCmdBytesTotal) {
- cl->largeCmdRequestsTotal = 0;
- return __glXBadLargeRequest;
- }
-
- __glXMemcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar,
- pc, req->dataBytes);
-
- cl->largeCmdBytesSoFar += req->dataBytes;
-
- if (req->dataBytes > cl->largeCmdMaxReqDataSize)
- cl->largeCmdMaxReqDataSize = req->dataBytes;
-
- return Success;
- }
- else if (req->requestNumber == cl->largeCmdRequestsTotal) {
- /*
- * this is the last request
- * copy the remainder bytes, call the procedure to swap any
- * needed data, and then call to transfer the command to all
- * back-end servers
- */
- if ( cl->largeCmdBytesSoFar + req->dataBytes > cl->largeCmdBytesTotal) {
- cl->largeCmdRequestsTotal = 0;
- return __glXBadLargeRequest;
- }
-
- __glXMemcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar,
- pc, req->dataBytes);
-
- cl->largeCmdBytesSoFar += req->dataBytes;
-
- if (req->dataBytes > cl->largeCmdMaxReqDataSize)
- cl->largeCmdMaxReqDataSize = req->dataBytes;
-
- if (cl->largeCmdRequestsSwapProc != NULL) {
- (*cl->largeCmdRequestsSwapProc)(cl->largeCmdBuf + __GLX_RENDER_LARGE_HDR_SIZE);
- }
- else if (cl->largeCmdRequestsSwap_info &&
- cl->largeCmdRequestsSwap_info->nelems > 0) {
- if (cl->largeCmdRequestsSwap_info->elem_size == 4) {
- __GLX_SWAP_INT_ARRAY( (int *)(pc + __GLX_RENDER_LARGE_HDR_SIZE),
- cl->largeCmdRequestsSwap_info->nelems );
- }
- else if (cl->largeCmdRequestsSwap_info->elem_size == 2) {
- __GLX_SWAP_SHORT_ARRAY( (short *)(pc + __GLX_RENDER_LARGE_HDR_SIZE),
- cl->largeCmdRequestsSwap_info->nelems );
- }
- else if (cl->largeCmdRequestsSwap_info->elem_size == 8) {
- __GLX_SWAP_DOUBLE_ARRAY( (double *)(pc + __GLX_RENDER_LARGE_HDR_SIZE),
- cl->largeCmdRequestsSwap_info->nelems );
- }
- }
-
- cl->largeCmdRequestsTotal = 0;
- return( __glXSendLargeCommand(cl, req->contextTag) );
-
- }
- else {
- cl->largeCmdRequestsTotal = 0;
- return __glXBadLargeRequest;
- }
-
-}
-
-/************************************************************************/
-
-/*
-** No support is provided for the vendor-private requests other than
-** allocating these entry points in the dispatch table.
-*/
-
-int __glXSwapVendorPrivate(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq *req;
- CARD32 vendorCode;
-
- __GLX_DECLARE_SWAP_VARIABLES;
-
- req = (xGLXVendorPrivateReq *) pc;
- vendorCode = req->vendorCode;
- __GLX_SWAP_INT(&vendorCode);
-
-
- switch( vendorCode ) {
-
- case X_GLvop_DeleteTexturesEXT:
- return __glXVForwardSingleReqSwap( cl, pc );
- break;
-
- case X_GLXvop_SwapIntervalSGI:
- if (glxIsExtensionSupported("SGI_swap_control")) {
- return __glXVForwardSingleReqSwap( cl, pc );
- }
- else {
- return Success;
- }
- break;
-
-#if 0 /* glx 1.3 */
- case X_GLXvop_CreateGLXVideoSourceSGIX:
- break;
- case X_GLXvop_DestroyGLXVideoSourceSGIX:
- break;
- case X_GLXvop_CreateGLXPixmapWithConfigSGIX:
- break;
- case X_GLXvop_DestroyGLXPbufferSGIX:
- break;
- case X_GLXvop_ChangeDrawableAttributesSGIX:
- break;
-#endif
-
- case X_GLXvop_JoinSwapGroupSGIX:
- return __glXSwapJoinSwapGroupSGIX( cl, pc );
- break;
-
- case X_GLXvop_BindSwapBarrierSGIX:
- return __glXSwapBindSwapBarrierSGIX( cl, pc );
- break;
-
- case X_GLXvop_CreateContextWithConfigSGIX:
- return __glXSwapCreateContextWithConfigSGIX( cl, pc );
- break;
-
- default:
- /*
- ** unsupported private request
- */
- cl->client->errorValue = req->vendorCode;
- return __glXUnsupportedPrivateRequest;
- }
-
-}
-
-int __glXSwapVendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateWithReplyReq *req;
- CARD32 vendorCode;
-
- __GLX_DECLARE_SWAP_VARIABLES;
-
- req = (xGLXVendorPrivateWithReplyReq *) pc;
- vendorCode = req->vendorCode;
- __GLX_SWAP_INT(&vendorCode);
-
- switch( vendorCode ) {
-
- case X_GLvop_GetConvolutionFilterEXT:
- case X_GLvop_GetSeparableFilterEXT:
- case X_GLvop_GetHistogramEXT:
- case X_GLvop_GetMinmaxEXT:
- return( __glXNoSuchSingleOpcode(cl, pc) );
- break;
-
- case X_GLvop_GetConvolutionParameterfvEXT:
- case X_GLvop_GetConvolutionParameterivEXT:
- case X_GLvop_GetHistogramParameterivEXT:
- case X_GLvop_GetMinmaxParameterfvEXT:
- case X_GLvop_GetMinmaxParameterivEXT:
- case X_GLvop_GenTexturesEXT:
- return( __glXVForwardAllWithReplySwapiv(cl, pc) );
- break;
-
- case X_GLvop_AreTexturesResidentEXT:
- case X_GLvop_IsTextureEXT:
- return( __glXVForwardPipe0WithReplySwap(cl, pc) );
- break;
-
-#if 0 /* glx1.3 */
- case X_GLvop_GetDetailTexFuncSGIS:
- case X_GLvop_GetSharpenTexFuncSGIS:
- case X_GLvop_GetColorTableSGI:
- case X_GLvop_GetColorTableParameterfvSGI:
- case X_GLvop_GetColorTableParameterivSGI:
- case X_GLvop_GetTexFilterFuncSGIS:
- case X_GLvop_GetInstrumentsSGIX:
- case X_GLvop_InstrumentsBufferSGIX:
- case X_GLvop_PollInstrumentsSGIX:
- case X_GLvop_FlushRasterSGIX:
- case X_GLXvop_CreateGLXPbufferSGIX:
- case X_GLXvop_GetDrawableAttributesSGIX:
- case X_GLXvop_QueryHyperpipeNetworkSGIX:
- case X_GLXvop_QueryHyperpipeConfigSGIX:
- case X_GLXvop_HyperpipeConfigSGIX:
- case X_GLXvop_DestroyHyperpipeConfigSGIX:
-#endif
- case X_GLXvop_QueryMaxSwapBarriersSGIX:
- return( __glXSwapQueryMaxSwapBarriersSGIX(cl, pc) );
- break;
-
- case X_GLXvop_GetFBConfigsSGIX:
- return( __glXSwapGetFBConfigsSGIX(cl, pc) );
- break;
-
- case X_GLXvop_MakeCurrentReadSGI:
- return( __glXSwapMakeCurrentReadSGI(cl, pc) );
- break;
-
- case X_GLXvop_QueryContextInfoEXT:
- return( __glXSwapQueryContextInfoEXT(cl,(char *)pc) );
- break;
-
- default:
- /*
- ** unsupported private request
- */
- cl->client->errorValue = req->vendorCode;
- return __glXUnsupportedPrivateRequest;
- }
-
-}
-
-int __glXSwapGetFBConfigs(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXGetFBConfigsReq *req = (xGLXGetFBConfigsReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
-
- return __glXGetFBConfigs(cl, pc);
-}
-
-int __glXSwapGetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXGetFBConfigsSGIXReq *req = (xGLXGetFBConfigsSGIXReq *)pc;
- xGLXGetFBConfigsReq new_req;
-
- new_req.reqType = req->reqType;
- new_req.glxCode = req->glxCode;
- new_req.length = req->length;
- new_req.screen = req->screen;
-
- return( __glXSwapGetFBConfigs( cl, (GLbyte *)&new_req ) );
-}
-
-int __glXSwapCreateWindow(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreateWindowReq *req = (xGLXCreateWindowReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->fbconfig);
- __GLX_SWAP_INT(&req->window);
- __GLX_SWAP_INT(&req->glxwindow);
- __GLX_SWAP_INT(&req->numAttribs);
-
- return( __glXCreateWindow( cl, (GLbyte *)pc ) );
-}
-
-int __glXSwapDestroyWindow(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXDestroyWindowReq *req = (xGLXDestroyWindowReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->glxwindow);
-
- return( __glXDestroyWindow( cl, (GLbyte *)pc ) );
-}
-
-int __glXSwapQueryContext(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXQueryContextReq *req = (xGLXQueryContextReq *)pc;
-
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
-
- return( __glXQueryContext(cl, (GLbyte *)pc) );
-
-}
-
-int __glXSwapCreatePbuffer(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreatePbufferReq *req = (xGLXCreatePbufferReq *)pc;
- int nattr = req->numAttribs;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->fbconfig);
- __GLX_SWAP_INT(&req->pbuffer);
- __GLX_SWAP_INT(&req->numAttribs);
- __GLX_SWAP_INT_ARRAY( (int *)(req+1), nattr*2 );
-
- return( __glXCreatePbuffer( cl, pc ) );
-}
-
-int __glXSwapDestroyPbuffer(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXDestroyPbufferReq *req = (xGLXDestroyPbufferReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->pbuffer);
-
- return( __glXDestroyPbuffer( cl, (GLbyte *)pc ) );
-}
-
-int __glXSwapGetDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXGetDrawableAttributesReq *req = (xGLXGetDrawableAttributesReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->drawable);
-
- return( __glXGetDrawableAttributes(cl, pc) );
-}
-
-int __glXSwapChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXChangeDrawableAttributesReq *req = (xGLXChangeDrawableAttributesReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->drawable);
- __GLX_SWAP_INT(&req->numAttribs);
- __GLX_SWAP_INT_ARRAY( (int *)(req+1), req->numAttribs * 2 );
-
- return( __glXChangeDrawableAttributes(cl, pc) );
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcontext.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcontext.h
deleted file mode 100644
index 465101a97..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxcontext.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxcontext.h,v 1.3 2001/03/21 16:29:36 dawes Exp $ */
-#ifndef _GLX_context_h_
-#define _GLX_context_h_
-
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-typedef struct __GLXcontextRec __GLXcontext;
-
-#include "GL/internal/glcore.h"
-
-struct __GLXcontextRec {
- /*
- ** list of context structs
- */
- struct __GLXcontextRec *last;
- struct __GLXcontextRec *next;
-
- /*
- ** Pointer to screen info data for this context. This is set
- ** when the context is created.
- */
- ScreenPtr pScreen;
- __GLXscreenInfo *pGlxScreen;
-
- /*
- ** This context is created with respect to this visual.
- */
- VisualRec *pVisual;
- __GLXvisualConfig *pGlxVisual;
- __GLXFBConfig *pFBConfig;
-
- /*
- ** The XID of this context.
- */
- XID id;
- XID *real_ids;
-
- /*
- ** The XID of the shareList context.
- */
- XID share_id;
-
- /*
- ** Visual id.
- */
- VisualID vid;
- VisualID *real_vids;
-
- /*
- ** screen number.
- */
- GLint screen;
-
- /*
- ** Whether this context's ID still exists.
- */
- GLboolean idExists;
-
- /*
- ** Whether this context is current for some client.
- */
- GLboolean isCurrent;
-
- /*
- ** Buffers for feedback and selection.
- */
- GLfloat *feedbackBuf;
- GLint feedbackBufSize; /* number of elements allocated */
- GLuint *selectBuf;
- GLint selectBufSize; /* number of elements allocated */
-
- /*
- ** Set only if current drawable is a glx pixmap.
- */
- __GLXpixmap *pGlxPixmap;
- __GLXpixmap *pGlxReadPixmap;
- __glXWindow *pGlxWindow;
- __glXWindow *pGlxReadWindow;
- __glXPbuffer *pGlxPbuffer;
- __glXPbuffer *pGlxReadPbuffer;
-
-};
-
-#endif /* !__GLX_context_h__ */
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxdrawable.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxdrawable.h
deleted file mode 100644
index 6e00ad62f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxdrawable.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxdrawable.h,v 1.3 2001/03/21 16:29:36 dawes Exp $ */
-#ifndef _GLX_drawable_h_
-#define _GLX_drawable_h_
-
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-typedef struct {
-
- DrawablePtr pDraw;
- __GLXvisualConfig *pGlxVisual;
- __GLXscreenInfo *pGlxScreen;
- __GLXFBConfig *pFBConfig;
- ScreenPtr pScreen;
- Bool idExists;
- int refcnt;
- XID *be_xids;
-
-} __GLXpixmap;
-
-struct __GLXdrawablePrivateRec {
- /*
- ** list of drawable private structs
- */
- struct __GLXdrawablePrivateRec *last;
- struct __GLXdrawablePrivateRec *next;
-
- DrawablePtr pDraw;
- XID drawId;
- __GLXpixmap *pGlxPixmap;
-
- /*
- ** Either DRAWABLE_PIXMAP or DRAWABLE_WINDOW, copied from pDraw above.
- ** Needed by the resource freer because pDraw might already have been
- ** freed.
- */
- int type;
-
- /*
- ** Configuration of the visual to which this drawable was created.
- */
- __GLXvisualConfig *pGlxVisual;
-
- /*
- ** cached drawable size and origin
- */
- GLint xorigin, yorigin;
- GLint width, height;
-
- /*
- ** list of contexts bound to this drawable
- */
- struct __GLXcontextRec *glxc;
-
- /*
- ** "methods" that the drawble should be able to respond to.
- */
- void (*freeBuffers)(struct __GLXdrawablePrivateRec *);
- void (*updatePalette)(struct __GLXdrawablePrivateRec *);
- GLboolean (*swapBuffers)(struct __GLXdrawablePrivateRec *);
-
- /*
- ** The GL drawable (information shared between GLX and the GL core)
- */
- __GLdrawablePrivate glPriv;
-
- /*
- ** reference count
- */
- int refCount;
-};
-
-typedef struct {
- DrawablePtr pDraw;
- int type;
- Bool idExists;
- int refcnt; /* contexts bound */
- __GLXFBConfig *pGlxFBConfig;
- ScreenPtr pScreen;
-} __glXWindow;
-
-
-typedef struct {
- __GLXscreenInfo *pGlxScreen;
- __GLXFBConfig *pFBConfig;
- ScreenPtr pScreen;
- Bool idExists;
- int refcnt;
- XID *be_xids;
-} __glXPbuffer;
-
-#endif /* !__GLX_drawable_h__ */
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxerror.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxerror.h
deleted file mode 100644
index d75cc2b2e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxerror.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxerror.h,v 1.3 2001/03/21 16:29:36 dawes Exp $ */
-#ifndef _GLX_error_h_
-#define _GLX_error_h_
-
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-/*
-** Error codes. These have the extension error base added to them
-** when the extension initializes.
-*/
-extern int __glXerrorBase;
-extern int __glXBadContext;
-extern int __glXBadContextState;
-extern int __glXBadDrawable;
-extern int __glXBadPixmap;
-extern int __glXBadCurrentWindow;
-extern int __glXBadContextTag;
-extern int __glXBadRenderRequest;
-extern int __glXBadLargeRequest;
-extern int __glXUnsupportedPrivateRequest;
-extern int __glXBadFBConfig;
-extern int __glXBadPbuffer;
-
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxext.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxext.c
deleted file mode 100644
index 60338230e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxext.c
+++ /dev/null
@@ -1,512 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxext.c,v 1.7 2001/03/21 16:29:36 dawes Exp $
-** The contents of this file are subject to the GLX Public License Version 1.0
-** (the "License"). You may not use this file except in compliance with the
-** License. You may obtain a copy of the License at Silicon Graphics, Inc.,
-** attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043
-** or at http://www.sgi.com/software/opensource/glx/license.html.
-**
-** Software distributed under the License is distributed on an "AS IS"
-** basis. ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY
-** IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR
-** PURPOSE OR OF NON- INFRINGEMENT. See the License for the specific
-** language governing rights and limitations under the License.
-**
-** The Original Software is GLX version 1.2 source code, released February,
-** 1999. The developer of the Original Software is Silicon Graphics, Inc.
-** Those portions of the Subject Software created by Silicon Graphics, Inc.
-** are Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved.
-**
-*/
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-
-#define NEED_REPLIES
-#include "glxserver.h"
-#include <windowstr.h>
-#include <propertyst.h>
-#include <os.h>
-#include "g_disptab.h"
-#include "glxutil.h"
-#include "glxext.h"
-#include "glxvisuals.h"
-#include "micmap.h"
-#include "glxswap.h"
-
-/*
-** Forward declarations.
-*/
-static int __glXSwapDispatch(ClientPtr);
-static int __glXDispatch(ClientPtr);
-
-/*
-** Called when the extension is reset.
-*/
-static void ResetExtension(ExtensionEntry* extEntry)
-{
- __glXFlushContextCache();
- __glXScreenReset();
- SwapBarrierReset();
-}
-
-/*
-** Initialize the per-client context storage.
-*/
-static void ResetClientState(int clientIndex)
-{
- __GLXclientState *cl = __glXClients[clientIndex];
- Display **keep_be_displays;
- int i;
-
- if (cl->returnBuf) __glXFree(cl->returnBuf);
- if (cl->currentContexts) __glXFree(cl->currentContexts);
- if (cl->currentDrawables) __glXFree(cl->currentDrawables);
- if (cl->largeCmdBuf) __glXFree(cl->largeCmdBuf);
-
- for (i=0; i< screenInfo.numScreens; i++) {
- if (cl->be_displays[i])
- XCloseDisplay( cl->be_displays[i] );
- }
-
- keep_be_displays = cl->be_displays;
- __glXMemset(cl, 0, sizeof(__GLXclientState));
- cl->be_displays = keep_be_displays;
-
- /*
- ** By default, assume that the client supports
- ** GLX major version 1 minor version 0 protocol.
- */
- cl->GLClientmajorVersion = 1;
- cl->GLClientminorVersion = 0;
- if (cl->GLClientextensions) __glXFree(cl->GLClientextensions);
-
- __glXMemset(cl->be_displays, 0, screenInfo.numScreens * sizeof(Display *));
-}
-
-
-/*
-** This procedure is called when the client who created the context goes
-** away OR when glXDestroyContext is called. In either case, all we do is
-** flag that the ID is no longer valid, and (maybe) free the context.
-** use.
-*/
-static int ContextGone(__GLXcontext* cx, XID id)
-{
- cx->idExists = GL_FALSE;
- if (!cx->isCurrent) {
- __glXFreeContext(cx);
- }
-
- return True;
-}
-
-/*
-** Free a client's state.
-*/
-static int ClientGone(int clientIndex, XID id)
-{
- __GLXcontext *cx;
- __GLXclientState *cl = __glXClients[clientIndex];
- int i;
-
- if (cl) {
- /*
- ** Free all the contexts that are current for this client.
- */
- for (i=0; i < cl->numCurrentContexts; i++) {
- cx = cl->currentContexts[i];
- if (cx) {
- cx->isCurrent = GL_FALSE;
- if (!cx->idExists) {
- __glXFreeContext(cx);
- }
- }
- }
- /*
- ** Re-initialize the client state structure. Don't free it because
- ** we'll probably get another client with this index and use the struct
- ** again. There is a maximum of MAXCLIENTS of these structures.
- */
- ResetClientState(clientIndex);
- }
-
- return True;
-}
-
-/*
-** Free a GLX Pixmap.
-*/
-void __glXFreeGLXPixmap( __GLXpixmap *pGlxPixmap )
-{
- if (!pGlxPixmap->idExists &&
- !pGlxPixmap->refcnt) {
-
- PixmapPtr pPixmap = (PixmapPtr) pGlxPixmap->pDraw;
-
- /*
- ** The DestroyPixmap routine should decrement the refcount and free
- ** only if it's zero.
- */
- (*pGlxPixmap->pScreen->DestroyPixmap)(pPixmap);
- __glXFree(pGlxPixmap->be_xids);
- __glXFree(pGlxPixmap);
- }
-
-}
-
-static int PixmapGone(__GLXpixmap *pGlxPixmap, XID id)
-{
-
- pGlxPixmap->idExists = False;
- __glXFreeGLXPixmap( pGlxPixmap );
-
- return True;
-}
-
-void __glXFreeGLXWindow(__glXWindow *pGlxWindow)
-{
- if (!pGlxWindow->idExists && !pGlxWindow->refcnt) {
- WindowPtr pWindow = (WindowPtr) pGlxWindow->pDraw;
-
- if (LookupIDByType(pWindow->drawable.id, RT_WINDOW) == pWindow) {
- (*pGlxWindow->pScreen->DestroyWindow)(pWindow);
- }
-
- xfree(pGlxWindow);
- }
-}
-
-static void WindowGone(__glXWindow *pGlxWindow, XID id)
-{
- pGlxWindow->idExists = False;
- __glXFreeGLXWindow(pGlxWindow);
-}
-
-void __glXFreeGLXPbuffer(__glXPbuffer *pGlxPbuffer)
-{
- if (!pGlxPbuffer->idExists && !pGlxPbuffer->refcnt) {
- xfree(pGlxPbuffer->be_xids);
- xfree(pGlxPbuffer);
- }
-}
-
-static void PbufferGone(__glXPbuffer *pGlxPbuffer, XID id)
-{
- pGlxPbuffer->idExists = False;
- __glXFreeGLXPbuffer(pGlxPbuffer);
-}
-
-/*
-** Free a context.
-*/
-GLboolean __glXFreeContext(__GLXcontext *cx)
-{
- if (cx->idExists || cx->isCurrent) return GL_FALSE;
-
- if (cx->feedbackBuf) __glXFree(cx->feedbackBuf);
- if (cx->selectBuf) __glXFree(cx->selectBuf);
- if (cx->real_ids) __glXFree(cx->real_ids);
- if (cx->real_vids) __glXFree(cx->real_vids);
-
- if (cx->pGlxPixmap) {
- /*
- ** The previous drawable was a glx pixmap, release it.
- */
- cx->pGlxPixmap->refcnt--;
- __glXFreeGLXPixmap( cx->pGlxPixmap );
- cx->pGlxPixmap = 0;
- }
-
- if (cx->pGlxReadPixmap) {
- /*
- ** The previous drawable was a glx pixmap, release it.
- */
- cx->pGlxReadPixmap->refcnt--;
- __glXFreeGLXPixmap( cx->pGlxReadPixmap );
- cx->pGlxReadPixmap = 0;
- }
-
- if (cx->pGlxWindow) {
- /*
- ** The previous drawable was a glx window, release it.
- */
- cx->pGlxWindow->refcnt--;
- __glXFreeGLXWindow( cx->pGlxWindow );
- cx->pGlxWindow = 0;
- }
-
- if (cx->pGlxReadWindow) {
- /*
- ** The previous drawable was a glx window, release it.
- */
- cx->pGlxReadWindow->refcnt--;
- __glXFreeGLXWindow( cx->pGlxReadWindow );
- cx->pGlxReadWindow = 0;
- }
-
- __glXFree(cx);
-
- if (cx == __glXLastContext) {
- __glXFlushContextCache();
- }
-
- return GL_TRUE;
-}
-
-/*
-** Initialize the GLX extension.
-*/
-void GlxExtensionInit(void)
-{
- ExtensionEntry *extEntry;
- int i;
- int glxSupported = 1;
-
- /*
- // do not initialize GLX extension if GLX is not supported
- // by ALL back-end servers.
- */
- for (i=0; i<screenInfo.numScreens; i++) {
- glxSupported &= (dmxScreens[i].glxMajorOpcode > 0);
- }
-
- if (!glxSupported || !dmxGLXProxy) {
- return;
- }
-
- __glXContextRes = CreateNewResourceType((DeleteType)ContextGone);
- __glXClientRes = CreateNewResourceType((DeleteType)ClientGone);
- __glXPixmapRes = CreateNewResourceType((DeleteType)PixmapGone);
- __glXWindowRes = CreateNewResourceType((DeleteType)WindowGone);
- __glXPbufferRes = CreateNewResourceType((DeleteType)PbufferGone);
-
- /*
- ** Add extension to server extensions.
- */
- extEntry = AddExtension(GLX_EXTENSION_NAME, __GLX_NUMBER_EVENTS,
- __GLX_NUMBER_ERRORS, __glXDispatch,
- __glXSwapDispatch, ResetExtension,
- StandardMinorOpcode);
- if (!extEntry) {
- FatalError("__glXExtensionInit: AddExtensions failed\n");
- return;
- }
- /*
- if (!AddExtensionAlias(GLX_EXTENSION_ALIAS, extEntry)) {
- ErrorF("__glXExtensionInit: AddExtensionAlias failed\n");
- return;
- }
- */
-
- __glXerrorBase = extEntry->errorBase;
- __glXBadContext = extEntry->errorBase + GLXBadContext;
- __glXBadContextState = extEntry->errorBase + GLXBadContextState;
- __glXBadDrawable = extEntry->errorBase + GLXBadDrawable;
- __glXBadPixmap = extEntry->errorBase + GLXBadPixmap;
- __glXBadContextTag = extEntry->errorBase + GLXBadContextTag;
- __glXBadCurrentWindow = extEntry->errorBase + GLXBadCurrentWindow;
- __glXBadRenderRequest = extEntry->errorBase + GLXBadRenderRequest;
- __glXBadLargeRequest = extEntry->errorBase + GLXBadLargeRequest;
- __glXUnsupportedPrivateRequest = extEntry->errorBase +
- GLXUnsupportedPrivateRequest;
- __glXBadFBConfig = extEntry->errorBase + GLXBadFBConfig;
- __glXBadPbuffer = extEntry->errorBase + GLXBadPbuffer;
-
- /*
- ** Initialize table of client state. There is never a client 0.
- */
- for (i=1; i <= MAXCLIENTS; i++) {
- __glXClients[i] = 0;
- }
-
- /*
- ** Initialize screen specific data.
- */
- __glXScreenInit(screenInfo.numScreens);
-
- /*
- ** Initialize swap barrier support.
- */
- SwapBarrierInit();
-}
-
-/************************************************************************/
-
-Bool __glXCoreType(void)
-{
- return 0;
-}
-
-/************************************************************************/
-
-void GlxSetVisualConfigs(int nconfigs,
- __GLXvisualConfig *configs, void **privates)
-{
- glxSetVisualConfigs(nconfigs, configs, privates);
-}
-
-static miInitVisualsProcPtr saveInitVisualsProc;
-
-Bool GlxInitVisuals(VisualPtr *visualp, DepthPtr *depthp,
- int *nvisualp, int *ndepthp,
- int *rootDepthp, VisualID *defaultVisp,
- unsigned long sizes, int bitsPerRGB,
- int preferredVis)
-{
- Bool ret;
-
- if (saveInitVisualsProc) {
- ret = saveInitVisualsProc(visualp, depthp, nvisualp, ndepthp,
- rootDepthp, defaultVisp, sizes, bitsPerRGB,
- preferredVis);
- if (!ret)
- return False;
- }
-
- glxInitVisuals(nvisualp, visualp, defaultVisp, *ndepthp, *depthp,*rootDepthp);
-
- return True;
-}
-
-void
-GlxWrapInitVisuals(miInitVisualsProcPtr *initVisProc)
-{
- if (dmxGLXProxy) {
- saveInitVisualsProc = *initVisProc;
- *initVisProc = GlxInitVisuals;
- }
-}
-
-/************************************************************************/
-
-void __glXFlushContextCache(void)
-{
- __glXLastContext = 0;
-}
-
-/************************************************************************/
-
-/*
-** Top level dispatcher; all commands are executed from here down.
-*/
-static int __glXDispatch(ClientPtr client)
-{
- REQUEST(xGLXSingleReq);
- CARD8 opcode;
- int (*proc)(__GLXclientState *cl, GLbyte *pc);
- __GLXclientState *cl;
-
- opcode = stuff->glxCode;
- cl = __glXClients[client->index];
- if (!cl) {
- cl = (__GLXclientState *) __glXMalloc(sizeof(__GLXclientState));
- __glXClients[client->index] = cl;
- if (!cl) {
- return BadAlloc;
- }
- __glXMemset(cl, 0, sizeof(__GLXclientState));
-
- cl->be_displays = (Display **) __glXMalloc( screenInfo.numScreens * sizeof(Display *) );
- if (!cl->be_displays) {
- __glXFree( cl );
- return BadAlloc;
- }
- __glXMemset(cl->be_displays, 0, screenInfo.numScreens * sizeof(Display *));
- }
-
- if (!cl->inUse) {
- /*
- ** This is first request from this client. Associate a resource
- ** with the client so we will be notified when the client dies.
- */
- XID xid = FakeClientID(client->index);
- if (!AddResource( xid, __glXClientRes, (pointer)(long)client->index)) {
- return BadAlloc;
- }
- ResetClientState(client->index);
- cl->largeCmdRequestsTotal = 0;
- cl->inUse = GL_TRUE;
- cl->client = client;
- }
-
- /*
- ** Check for valid opcode.
- */
- if (opcode >= __GLX_SINGLE_TABLE_SIZE) {
- return BadRequest;
- }
-
- /*
- ** Use the opcode to index into the procedure table.
- */
- proc = __glXSingleTable[opcode];
- return (*proc)(cl, (GLbyte *) stuff);
-}
-
-static int __glXSwapDispatch(ClientPtr client)
-{
- REQUEST(xGLXSingleReq);
- CARD8 opcode;
- int (*proc)(__GLXclientState *cl, GLbyte *pc);
- __GLXclientState *cl;
-
- opcode = stuff->glxCode;
- cl = __glXClients[client->index];
- if (!cl) {
- cl = (__GLXclientState *) __glXMalloc(sizeof(__GLXclientState));
- __glXClients[client->index] = cl;
- if (!cl) {
- return BadAlloc;
- }
- __glXMemset(cl, 0, sizeof(__GLXclientState));
-
- cl->be_displays = (Display **) __glXMalloc( screenInfo.numScreens * sizeof(Display *) );
- if (!cl->be_displays) {
- __glXFree( cl );
- return BadAlloc;
- }
-
- __glXMemset(cl->be_displays, 0, screenInfo.numScreens * sizeof(Display *));
- }
-
- if (!cl->inUse) {
- /*
- ** This is first request from this client. Associate a resource
- ** with the client so we will be notified when the client dies.
- */
- XID xid = FakeClientID(client->index);
- if (!AddResource( xid, __glXClientRes, (pointer)(long)client->index)) {
- return BadAlloc;
- }
- ResetClientState(client->index);
- cl->inUse = GL_TRUE;
- cl->client = client;
- }
-
- /*
- ** Check for valid opcode.
- */
- if (opcode >= __GLX_SINGLE_TABLE_SIZE) {
- return BadRequest;
- }
-
- /*
- ** Use the opcode to index into the procedure table.
- */
- proc = __glXSwapSingleTable[opcode];
- return (*proc)(cl, (GLbyte *) stuff);
-}
-
-int __glXNoSuchSingleOpcode(__GLXclientState *cl, GLbyte *pc)
-{
- return BadRequest;
-}
-
-void __glXNoSuchRenderOpcode(GLbyte *pc)
-{
- return;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxext.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxext.h
deleted file mode 100644
index 7e6756f86..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxext.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxext.h,v 1.4 2001/03/21 16:29:36 dawes Exp $ */
-#ifndef _glxext_h_
-#define _glxext_h_
-
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-/*
- * Added by VA Linux for XFree86 4.0.x
- */
-typedef struct {
- int type;
- void (*resetExtension)(void);
- Bool (*initVisuals)(
- VisualPtr * visualp,
- DepthPtr * depthp,
- int * nvisualp,
- int * ndepthp,
- int * rootDepthp,
- VisualID * defaultVisp,
- unsigned long sizes,
- int bitsPerRGB
- );
- void (*setVisualConfigs)(
- int nconfigs,
- __GLXvisualConfig *configs,
- void **privates
- );
-} __GLXextensionInfo;
-
-extern GLboolean __glXFreeContext(__GLXcontext *glxc);
-extern void __glXFlushContextCache(void);
-
-extern void __glXFreeGLXWindow(__glXWindow *pGlxWindow);
-extern void __glXFreeGLXPixmap( __GLXpixmap *pGlxPixmap );
-
-extern void __glXNoSuchRenderOpcode(GLbyte*);
-extern int __glXNoSuchSingleOpcode(__GLXclientState*, GLbyte*);
-extern void __glXErrorCallBack(__GLinterface *gc, GLenum code);
-extern void __glXClearErrorOccured(void);
-extern GLboolean __glXErrorOccured(void);
-extern void __glXResetLargeCommandStatus(__GLXclientState*);
-
-extern int __glXQueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapQueryContextInfoEXT(__GLXclientState *cl, char *pc);
-
-extern void GlxExtensionInit(void);
-
-extern Bool __glXCoreType(void);
-
-extern int GlxInitVisuals(
-#if NeedFunctionPrototypes
- VisualPtr * visualp,
- DepthPtr * depthp,
- int * nvisualp,
- int * ndepthp,
- int * rootDepthp,
- VisualID * defaultVisp,
- unsigned long sizes,
- int bitsPerRGB,
- int preferredVis
-#endif
-);
-
-#endif /* _glxext_h_ */
-
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxfbconfig.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxfbconfig.c
deleted file mode 100644
index f2321b10c..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxfbconfig.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#include "glxfbconfig.h"
-
-int AreFBConfigsMatch( __GLXFBConfig *c1, __GLXFBConfig *c2 )
-{
- int match;
-
- match = (
- (c1->visualType == c2->visualType) &&
- (c1->transparentType == c2->transparentType) &&
- (c1->transparentRed == c2->transparentRed) &&
- (c1->transparentGreen == c2->transparentGreen) &&
- (c1->transparentBlue == c2->transparentBlue) &&
- (c1->transparentAlpha == c2->transparentAlpha) &&
- (c1->transparentIndex == c2->transparentIndex) &&
- (c1->visualCaveat == c2->visualCaveat) &&
- (c1->drawableType == c2->drawableType) &&
- (c1->renderType == c2->renderType) &&
-#if 0
- (c1->maxPbufferWidth == c2->maxPbufferWidth) &&
- (c1->maxPbufferHeight == c2->maxPbufferHeight) &&
- (c1->maxPbufferPixels == c2->maxPbufferPixels) &&
- (c1->optimalPbufferWidth == c2->optimalPbufferWidth) &&
- (c1->optimalPbufferHeight == c2->optimalPbufferHeight) &&
-#endif
- (c1->visualSelectGroup == c2->visualSelectGroup) &&
- (c1->rgbMode == c2->rgbMode) &&
- (c1->colorIndexMode == c2->colorIndexMode) &&
- (c1->doubleBufferMode == c2->doubleBufferMode) &&
- (c1->stereoMode == c2->stereoMode) &&
- (c1->haveAccumBuffer == c2->haveAccumBuffer) &&
- (c1->haveDepthBuffer == c2->haveDepthBuffer) &&
- (c1->haveStencilBuffer == c2->haveStencilBuffer) &&
- (c1->accumRedBits == c2->accumRedBits) &&
- (c1->accumGreenBits == c2->accumGreenBits) &&
- (c1->accumBlueBits == c2->accumBlueBits) &&
- (c1->accumAlphaBits == c2->accumAlphaBits) &&
- (c1->depthBits == c2->depthBits) &&
- (c1->stencilBits == c2->stencilBits) &&
- (c1->indexBits == c2->indexBits) &&
- (c1->redBits == c2->redBits) &&
- (c1->greenBits == c2->greenBits) &&
- (c1->blueBits == c2->blueBits) &&
- (c1->alphaBits == c2->alphaBits) &&
- (c1->redMask == c2->redMask) &&
- (c1->greenMask == c2->greenMask) &&
- (c1->blueMask == c2->blueMask) &&
- (c1->alphaMask == c2->alphaMask) &&
- (c1->multiSampleSize == c2->multiSampleSize) &&
- (c1->nMultiSampleBuffers == c2->nMultiSampleBuffers) &&
- (c1->maxAuxBuffers == c2->maxAuxBuffers) &&
- (c1->level == c2->level) &&
- (c1->extendedRange == c2->extendedRange) &&
- (c1->minRed == c2->minRed) &&
- (c1->maxRed == c2->maxRed) &&
- (c1->minGreen == c2->minGreen) &&
- (c1->maxGreen == c2->maxGreen) &&
- (c1->minBlue == c2->minBlue) &&
- (c1->maxBlue == c2->maxBlue) &&
- (c1->minAlpha == c2->minAlpha) &&
- (c1->maxAlpha == c2->maxAlpha)
- );
-
- return( match );
-}
-
-__GLXFBConfig *FindMatchingFBConfig( __GLXFBConfig *c, __GLXFBConfig *configs, int nconfigs )
-{
- int i;
-
- for (i=0; i<nconfigs; i++) {
- if ( AreFBConfigsMatch( c, configs + i ) )
- return( configs + i );
- }
-
- return(0);
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxfbconfig.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxfbconfig.h
deleted file mode 100644
index 67df54137..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxfbconfig.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#ifndef _GLXFBCONFIG_H
-
-#include <GL/glxint.h>
-
-int AreFBConfigsMatch( __GLXFBConfig *c1, __GLXFBConfig *c2 );
-__GLXFBConfig *FindMatchingFBConfig( __GLXFBConfig *c, __GLXFBConfig *configs, int nconfigs );
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxscreens.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxscreens.c
deleted file mode 100644
index a7d4ce13d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxscreens.c
+++ /dev/null
@@ -1,390 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxscreens.c,v 1.6 2001/03/21 16:29:36 dawes Exp $ */
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxlog.h"
-
-#undef Xmalloc
-#undef Xcalloc
-#undef Xrealloc
-#undef Xfree
-
-#include "glxserver.h"
-
-#ifdef IN_MODULE
-#include <xf86_ansic.h>
-#else
-#include <string.h>
-#include <signal.h>
-#endif
-
-#include <windowstr.h>
-
-#include "glxfbconfig.h"
-
-#ifdef PANORAMIX
-#include "panoramiXsrv.h"
-#endif
-
-__GLXscreenInfo *__glXActiveScreens;
-GLint __glXNumActiveScreens;
-
-__GLXFBConfig **__glXFBConfigs;
-int __glXNumFBConfigs;
-
-static char GLXServerVendorName[] = "SGI DMX/glxProxy";
-static char GLXServerVersion[64];
-static char GLXServerExtensions[] =
- "GLX_EXT_visual_info "
- "GLX_EXT_visual_rating "
- "GLX_EXT_import_context "
- "GLX_SGIX_fbconfig "
- "GLX_SGI_make_current_read "
- "GLX_SGI_swap_control "
- ;
-
-static char ExtensionsString[1024];
-
-static void CalcServerVersionAndExtensions( void )
-{
- int s;
- xGLXQueryVersionReq *req;
- xGLXQueryVersionReply reply;
- char **be_extensions;
- char *ext;
- char *denied_extensions;
-
- /*
- * set the server glx version to be the minimum version
- * supported by all back-end servers
- */
- __glXVersionMajor = 0;
- __glXVersionMinor = 0;
- for (s=0; s<__glXNumActiveScreens; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = dmxScreen->beDisplay;
-
- /* Send the glXQueryVersion request */
- LockDisplay(dpy);
- GetReq(GLXQueryVersion,req);
- req->reqType = dmxScreen->glxMajorOpcode;
- req->glxCode = X_GLXQueryVersion;
- req->majorVersion = GLX_SERVER_MAJOR_VERSION;
- req->minorVersion = GLX_SERVER_MINOR_VERSION;
- _XReply(dpy, (xReply*) &reply, 0, False);
- UnlockDisplay(dpy);
- SyncHandle();
-
- if (s == 0) {
- __glXVersionMajor = reply.majorVersion;
- __glXVersionMinor = reply.minorVersion;
- }
- else {
- if (reply.majorVersion < __glXVersionMajor) {
- __glXVersionMajor = reply.majorVersion;
- __glXVersionMinor = reply.minorVersion;
- }
- else if ( (reply.majorVersion == __glXVersionMajor) &&
- (reply.minorVersion < __glXVersionMinor) ) {
- __glXVersionMinor = reply.minorVersion;
- }
- }
-
- }
-
- if (GLX_SERVER_MAJOR_VERSION < __glXVersionMajor) {
- __glXVersionMajor = GLX_SERVER_MAJOR_VERSION;
- __glXVersionMinor = GLX_SERVER_MINOR_VERSION;
- }
- else if ( (GLX_SERVER_MAJOR_VERSION == __glXVersionMajor) &&
- (GLX_SERVER_MINOR_VERSION < __glXVersionMinor) ) {
- __glXVersionMinor = GLX_SERVER_MINOR_VERSION;
- }
-
- sprintf(GLXServerVersion, "%d.%d DMX %d back-end server(s)",
- __glXVersionMajor, __glXVersionMinor, __glXNumActiveScreens );
- /*
- * set the ExtensionsString to the minimum extensions string
- */
- ExtensionsString[0] = '\0';
-
- /*
- * read extensions strings of all back-end servers
- */
- be_extensions = (char **)Xalloc( __glXNumActiveScreens * sizeof(char *) );
- if (!be_extensions)
- return;
-
- for (s=0; s<__glXNumActiveScreens; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = dmxScreen->beDisplay;
- xGLXQueryServerStringReq *req;
- xGLXQueryServerStringReply reply;
- int length, numbytes, slop;
-
- /* Send the glXQueryServerString request */
- LockDisplay(dpy);
- GetReq(GLXQueryServerString,req);
- req->reqType = dmxScreen->glxMajorOpcode;
- req->glxCode = X_GLXQueryServerString;
- req->screen = DefaultScreen(dpy);
- req->name = GLX_EXTENSIONS;
- _XReply(dpy, (xReply*) &reply, 0, False);
-
- length = (int)reply.length;
- numbytes = (int)reply.n;
- slop = numbytes * __GLX_SIZE_INT8 & 3;
- be_extensions[s] = (char *)Xalloc(numbytes);
- if (!be_extensions[s]) {
- /* Throw data on the floor */
- _XEatData(dpy, length);
- } else {
- _XRead(dpy, (char *)be_extensions[s], numbytes);
- if (slop) _XEatData(dpy,4-slop);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- }
-
- /*
- * extensions string will include only extensions that our
- * server supports as well as all back-end servers supports.
- * extensions that are in the DMX_DENY_EXTENSIONS string will
- * not be supported.
- */
- denied_extensions = getenv("DMX_DENY_GLX_EXTENSIONS");
- ext = strtok(GLXServerExtensions, " ");
- while( ext ) {
- int supported = 1;
-
- if (denied_extensions && strstr(denied_extensions, ext)) {
- supported = 0;
- }
- else {
- for (s=0; s<__glXNumActiveScreens && supported; s++) {
- if ( !strstr(be_extensions[s], ext) ) {
- supported = 0;
- }
- }
- }
-
- if (supported) {
- strcat(ExtensionsString, ext);
- strcat(ExtensionsString, " ");
- }
-
- ext = strtok(NULL, " ");
- }
-
- /*
- * release temporary storage
- */
- for (s=0; s<__glXNumActiveScreens; s++) {
- if (be_extensions[s]) Xfree(be_extensions[s]);
- }
- Xfree( be_extensions );
-
- if (dmxGLXSwapGroupSupport) {
- if (!denied_extensions ||
- !strstr(denied_extensions, "GLX_SGIX_swap_group")) {
- strcat(ExtensionsString, "GLX_SGIX_swap_group");
- if (!denied_extensions ||
- !strstr(denied_extensions, "GLX_SGIX_swap_barrier")) {
- strcat(ExtensionsString, " GLX_SGIX_swap_barrier");
- }
- }
- }
-
-}
-
-void __glXScreenInit(GLint numscreens)
-{
- int s;
- int c;
- DMXScreenInfo *dmxScreen0 = &dmxScreens[0];
- __glXNumActiveScreens = numscreens;
-
-
- CalcServerVersionAndExtensions();
-
-
- __glXFBConfigs = NULL;
- __glXNumFBConfigs = 0;
-
- if ( (__glXVersionMajor == 1 && __glXVersionMinor >= 3) ||
- (__glXVersionMajor > 1) ||
- ( strstr(ExtensionsString, "GLX_SGIX_fbconfig") ) ) {
-
- /*
- // Initialize FBConfig info.
- // find the set of FBConfigs that are present on all back-end
- // servers - only those configs will be supported
- */
- __glXFBConfigs = (__GLXFBConfig **)Xalloc( dmxScreen0->numFBConfigs *
- (numscreens+1) * sizeof(__GLXFBConfig *) );
- __glXNumFBConfigs = 0;
-
- for (c=0; c<dmxScreen0->numFBConfigs; c++) {
- __GLXFBConfig *cfg = NULL;
-
- if (numscreens > 1) {
- for (s=1; s<numscreens; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- __GLXscreenInfo *glxScreen = &__glXActiveScreens[s];
-
- cfg = FindMatchingFBConfig( &dmxScreen0->fbconfigs[c],
- dmxScreen->fbconfigs,
- dmxScreen->numFBConfigs );
- __glXFBConfigs[ __glXNumFBConfigs * (numscreens+1) + s + 1 ] = cfg;
- if (!cfg) {
- dmxLog(dmxInfo,"screen0 FBConfig 0x%x is missing on screen#%d\n", dmxScreen0->fbconfigs[c].id, s);
- break;
- }
- else {
- dmxLog(dmxInfo,"screen0 FBConfig 0x%x matched to 0x%x on screen#%d\n", dmxScreen0->fbconfigs[c].id, cfg->id, s);
- }
- }
- }
- else {
- cfg = &dmxScreen0->fbconfigs[c];
- }
-
- if (cfg) {
-
- /* filter out overlay visuals */
- if (cfg->level == 0) {
- __GLXFBConfig *proxy_cfg;
-
- __glXFBConfigs[ __glXNumFBConfigs * (numscreens+1) + 1 ] =
- &dmxScreen0->fbconfigs[c];
-
- proxy_cfg = Xalloc( sizeof(__GLXFBConfig) );
- memcpy( proxy_cfg, cfg, sizeof(__GLXFBConfig) );
- proxy_cfg->id = FakeClientID(0);
- /* visual will be associated later in __glXGetFBConfigs */
- proxy_cfg->associatedVisualId = (unsigned int)-1;
-
- __glXFBConfigs[ __glXNumFBConfigs * (numscreens+1) + 0 ] = proxy_cfg;
-
- __glXNumFBConfigs++;
- }
-
- }
-
- }
-
- }
-
-}
-
-void __glXScreenReset(void)
-{
- __glXNumActiveScreens = 0;
-}
-
-char *__glXGetServerString( unsigned int name )
-{
- char *ret = NULL;
-
- switch( name) {
-
- case GLX_VENDOR:
- ret = GLXServerVendorName;
- break;
-
- case GLX_VERSION:
- ret = GLXServerVersion;
- break;
-
- case GLX_EXTENSIONS:
- ret = ExtensionsString;
- break;
-
- default:
- break;
- }
-
- return( ret );
-
-}
-
-
-__GLXFBConfig *glxLookupFBConfig( GLXFBConfigID id )
-{
- int i,j;
-
- for (i=0, j=0; i<__glXNumFBConfigs; i++,j+=(__glXNumActiveScreens+1) ) {
- if ( __glXFBConfigs[j]->id == id)
- return( __glXFBConfigs[j] );
- }
-
- return(NULL);
-}
-
-__GLXFBConfig *glxLookupFBConfigByVID( VisualID vid )
-{
- int i,j;
-
- for (i=0, j=0; i<__glXNumFBConfigs; i++,j+=(__glXNumActiveScreens+1) ) {
- if ( __glXFBConfigs[j]->associatedVisualId == vid)
- return( __glXFBConfigs[j] );
- }
-
- return(NULL);
-}
-
-__GLXFBConfig *glxLookupBackEndFBConfig( GLXFBConfigID id, int screen )
-{
- int i;
- int j;
-
- for (i=0, j=0; i<__glXNumFBConfigs; i++,j+=(__glXNumActiveScreens+1) ) {
- if ( __glXFBConfigs[j]->id == id)
- return( __glXFBConfigs[j+screen+1] );
- }
-
- return(NULL);
-
-}
-
-int glxIsExtensionSupported( char *ext )
-{
- return( strstr(ExtensionsString, ext) != NULL );
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxscreens.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxscreens.h
deleted file mode 100644
index 22d397171..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxscreens.h
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifndef _GLX_screens_h_
-#define _GLX_screens_h_
-
-/* $XFree86: xc/programs/Xserver/GL/glx/glxscreens.h,v 1.4 2001/03/21 16:29:37 dawes Exp $ */
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#include "GL/internal/glcore.h"
-
-
-
-typedef struct {
-
- __GLXvisualConfig *pGlxVisual;
- GLint numVisuals;
- GLint numGLXVisuals;
- GLint *isGLXvis;
-
- char *GLXvendor;
- char *GLXversion;
- char *GLXextensions;
-
-} __GLXscreenInfo;
-
-
-extern void __glXScreenInit(GLint);
-extern void __glXScreenReset(void);
-
-extern char *__glXGetServerString( unsigned int name );
-
-#endif /* !__GLX_screens_h__ */
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxserver.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxserver.h
deleted file mode 100644
index 7db7efef0..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxserver.h
+++ /dev/null
@@ -1,327 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxserver.h,v 1.3 2001/03/21 16:29:37 dawes Exp $ */
-#ifndef _GLX_server_h_
-#define _GLX_server_h_
-
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#include "dmx.h"
-
-#include <misc.h>
-#include <dixstruct.h>
-#include <pixmapstr.h>
-#include <gcstruct.h>
-#include <extnsionst.h>
-#include <resource.h>
-#include <scrnintstr.h>
-#include "GL/glx_ansic.h"
-
-
-/*
-** The X header misc.h defines these math functions.
-*/
-#undef abs
-#undef fabs
-
-#define GL_GLEXT_PROTOTYPES /* we want prototypes */
-#include <GL/gl.h>
-#include <GL/glxproto.h>
-#include <GL/glxint.h>
-
-/* For glxscreens.h */
-typedef struct __GLXdrawablePrivateRec __GLXdrawablePrivate;
-
-#include "glxscreens.h"
-#include "glxdrawable.h"
-#include "glxcontext.h"
-#include "glxerror.h"
-
-
-#define GLX_SERVER_MAJOR_VERSION 1
-#define GLX_SERVER_MINOR_VERSION 3
-
-#ifndef True
-#define True 1
-#endif
-#ifndef False
-#define False 0
-#endif
-
-/*
-** GLX resources.
-typedef XID GLXContextID;
-typedef XID GLXPixmap;
-typedef XID GLXDrawable;
-typedef XID GLXWindow;
-typedef XID GLXPbuffer;
-
-typedef struct __GLXcontextRec *GLXContext;
-*/
-typedef struct __GLXclientStateRec __GLXclientState;
-
-extern __GLXscreenInfo *__glXActiveScreens;
-extern GLint __glXNumActiveScreens;
-
-/************************************************************************/
-
-/*
-** The last context used (from the server's persective) is cached.
-*/
-extern __GLXcontext *__glXLastContext;
-extern __GLXcontext *__glXForceCurrent(__GLXclientState*, GLXContextTag, int*);
-
-/*
-** Macros to set, unset, and retrieve the flag that says whether a context
-** has unflushed commands.
-*/
-#define __GLX_NOTE_UNFLUSHED_CMDS(glxc) glxc->hasUnflushedCommands = GL_TRUE
-#define __GLX_NOTE_FLUSHED_CMDS(glxc) glxc->hasUnflushedCommands = GL_FALSE
-#define __GLX_HAS_UNFLUSHED_CMDS(glxc) (glxc->hasUnflushedCommands)
-
-/************************************************************************/
-
-typedef struct {
- int elem_size; /* element size in bytes */
- int nelems; /* number of elements to swap */
- void (*swapfunc)(GLbyte *pc);
-} __GLXRenderSwapInfo;
-
-/*
-** State kept per client.
-*/
-struct __GLXclientStateRec {
- /*
- ** Whether this structure is currently being used to support a client.
- */
- Bool inUse;
-
- /*
- ** Buffer for returned data.
- */
- GLbyte *returnBuf;
- GLint returnBufSize;
-
- /*
- ** Keep a list of all the contexts that are current for this client's
- ** threads.
- */
- __GLXcontext **currentContexts;
- DrawablePtr *currentDrawables;
- GLint numCurrentContexts;
-
- /* Back pointer to X client record */
- ClientPtr client;
-
- int GLClientmajorVersion;
- int GLClientminorVersion;
- char *GLClientextensions;
-
- GLXContextTag *be_currentCTag;
- Display **be_displays;
-
- /*
- ** Keep track of large rendering commands, which span multiple requests.
- */
- GLint largeCmdBytesSoFar; /* bytes received so far */
- GLint largeCmdBytesTotal; /* total bytes expected */
- GLint largeCmdRequestsSoFar; /* requests received so far */
- GLint largeCmdRequestsTotal; /* total requests expected */
- void (*largeCmdRequestsSwapProc)(GLbyte *);
- __GLXRenderSwapInfo *largeCmdRequestsSwap_info;
- GLbyte *largeCmdBuf;
- GLint largeCmdBufSize;
- GLint largeCmdMaxReqDataSize;
-
-};
-
-extern __GLXclientState *__glXClients[];
-
-/************************************************************************/
-
-/*
-** Dispatch tables.
-*/
-typedef void (*__GLXdispatchRenderProcPtr)(GLbyte *);
-typedef int (*__GLXdispatchSingleProcPtr)(__GLXclientState *, GLbyte *);
-typedef int (*__GLXdispatchVendorPrivProcPtr)(__GLXclientState *, GLbyte *);
-extern __GLXdispatchSingleProcPtr __glXSingleTable[];
-extern __GLXdispatchVendorPrivProcPtr __glXVendorPrivTable_EXT[];
-extern __GLXdispatchSingleProcPtr __glXSwapSingleTable[];
-extern __GLXdispatchVendorPrivProcPtr __glXSwapVendorPrivTable_EXT[];
-extern __GLXdispatchRenderProcPtr __glXSwapRenderTable[];
-
-extern __GLXRenderSwapInfo __glXSwapRenderTable_EXT[];
-
-/*
- * Dispatch for GLX commands.
- */
-typedef int (*__GLXprocPtr)(__GLXclientState *, char *pc);
-extern __GLXprocPtr __glXProcTable[];
-
-/*
- * Tables for computing the size of each rendering command.
- */
-typedef struct {
- int bytes;
- int (*varsize)(GLbyte *pc, Bool swap);
-} __GLXrenderSizeData;
-extern __GLXrenderSizeData __glXRenderSizeTable[];
-extern __GLXrenderSizeData __glXRenderSizeTable_EXT[];
-
-/************************************************************************/
-
-/*
-** X resources.
-*/
-extern RESTYPE __glXContextRes;
-extern RESTYPE __glXClientRes;
-extern RESTYPE __glXPixmapRes;
-extern RESTYPE __glXDrawableRes;
-extern RESTYPE __glXWindowRes;
-extern RESTYPE __glXPbufferRes;
-
-/************************************************************************/
-
-/*
-** Prototypes.
-*/
-
-
-extern char *__glXcombine_strings(const char *, const char *);
-
-extern void __glXDisp_DrawArrays(GLbyte*);
-extern void __glXDispSwap_DrawArrays(GLbyte*);
-
-
-/*
-** Routines for sending swapped replies.
-*/
-
-extern void __glXSwapMakeCurrentReply(ClientPtr client,
- xGLXMakeCurrentReadSGIReply *reply);
-
-extern void __glXSwapIsDirectReply(ClientPtr client,
- xGLXIsDirectReply *reply);
-extern void __glXSwapQueryVersionReply(ClientPtr client,
- xGLXQueryVersionReply *reply);
-extern void __glXSwapQueryContextInfoEXTReply(ClientPtr client,
- xGLXQueryContextInfoEXTReply *reply,
- int *buf);
-extern void glxSwapQueryExtensionsStringReply(ClientPtr client,
- xGLXQueryExtensionsStringReply *reply, char *buf);
-extern void glxSwapQueryServerStringReply(ClientPtr client,
- xGLXQueryServerStringReply *reply, char *buf);
-extern void __glXSwapQueryContextReply(ClientPtr client,
- xGLXQueryContextReply *reply, int *buf);
-extern void __glXSwapGetDrawableAttributesReply(ClientPtr client,
- xGLXGetDrawableAttributesReply *reply, int *buf);
-extern void __glXSwapQueryMaxSwapBarriersSGIXReply(ClientPtr client,
- xGLXQueryMaxSwapBarriersSGIXReply *reply);
-
-/*
- * Routines for computing the size of variably-sized rendering commands.
- */
-
-extern int __glXTypeSize(GLenum enm);
-extern int __glXImageSize(GLenum format, GLenum type, GLsizei w, GLsizei h,
- GLint rowLength, GLint skipRows, GLint alignment);
-extern int __glXImage3DSize(GLenum format, GLenum type,
- GLsizei w, GLsizei h, GLsizei d,
- GLint imageHeight, GLint rowLength,
- GLint skipImages, GLint skipRows,
- GLint alignment);
-
-extern int __glXCallListsReqSize(GLbyte *pc, Bool swap);
-extern int __glXBitmapReqSize(GLbyte *pc, Bool swap);
-extern int __glXFogfvReqSize(GLbyte *pc, Bool swap);
-extern int __glXFogivReqSize(GLbyte *pc, Bool swap);
-extern int __glXLightfvReqSize(GLbyte *pc, Bool swap);
-extern int __glXLightivReqSize(GLbyte *pc, Bool swap);
-extern int __glXLightModelfvReqSize(GLbyte *pc, Bool swap);
-extern int __glXLightModelivReqSize(GLbyte *pc, Bool swap);
-extern int __glXMaterialfvReqSize(GLbyte *pc, Bool swap);
-extern int __glXMaterialivReqSize(GLbyte *pc, Bool swap);
-extern int __glXTexParameterfvReqSize(GLbyte *pc, Bool swap);
-extern int __glXTexParameterivReqSize(GLbyte *pc, Bool swap);
-extern int __glXTexImage1DReqSize(GLbyte *pc, Bool swap);
-extern int __glXTexImage2DReqSize(GLbyte *pc, Bool swap);
-extern int __glXTexEnvfvReqSize(GLbyte *pc, Bool swap);
-extern int __glXTexEnvivReqSize(GLbyte *pc, Bool swap);
-extern int __glXTexGendvReqSize(GLbyte *pc, Bool swap);
-extern int __glXTexGenfvReqSize(GLbyte *pc, Bool swap);
-extern int __glXTexGenivReqSize(GLbyte *pc, Bool swap);
-extern int __glXMap1dReqSize(GLbyte *pc, Bool swap);
-extern int __glXMap1fReqSize(GLbyte *pc, Bool swap);
-extern int __glXMap2dReqSize(GLbyte *pc, Bool swap);
-extern int __glXMap2fReqSize(GLbyte *pc, Bool swap);
-extern int __glXPixelMapfvReqSize(GLbyte *pc, Bool swap);
-extern int __glXPixelMapuivReqSize(GLbyte *pc, Bool swap);
-extern int __glXPixelMapusvReqSize(GLbyte *pc, Bool swap);
-extern int __glXDrawPixelsReqSize(GLbyte *pc, Bool swap);
-extern int __glXDrawArraysSize(GLbyte *pc, Bool swap);
-extern int __glXPrioritizeTexturesReqSize(GLbyte *pc, Bool swap);
-extern int __glXTexSubImage1DReqSize(GLbyte *pc, Bool swap);
-extern int __glXTexSubImage2DReqSize(GLbyte *pc, Bool swap);
-extern int __glXTexImage3DReqSize(GLbyte *pc, Bool swap );
-extern int __glXTexSubImage3DReqSize(GLbyte *pc, Bool swap);
-extern int __glXConvolutionFilter1DReqSize(GLbyte *pc, Bool swap);
-extern int __glXConvolutionFilter2DReqSize(GLbyte *pc, Bool swap);
-extern int __glXConvolutionParameterivReqSize(GLbyte *pc, Bool swap);
-extern int __glXConvolutionParameterfvReqSize(GLbyte *pc, Bool swap);
-extern int __glXSeparableFilter2DReqSize(GLbyte *pc, Bool swap);
-extern int __glXColorTableReqSize(GLbyte *pc, Bool swap);
-extern int __glXColorSubTableReqSize(GLbyte *pc, Bool swap);
-extern int __glXColorTableParameterfvReqSize(GLbyte *pc, Bool swap);
-extern int __glXColorTableParameterivReqSize(GLbyte *pc, Bool swap);
-
-/*
- * Routines for computing the size of returned data.
- */
-extern int __glXConvolutionParameterivSize(GLenum pname);
-extern int __glXConvolutionParameterfvSize(GLenum pname);
-extern int __glXColorTableParameterfvSize(GLenum pname);
-extern int __glXColorTableParameterivSize(GLenum pname);
-
-extern void __glXFreeGLXWindow(__glXWindow *pGlxWindow);
-extern void __glXFreeGLXPbuffer(__glXPbuffer *pGlxPbuffer);
-
-extern int __glXVersionMajor;
-extern int __glXVersionMinor;
-
-#define __GLX_IS_VERSION_SUPPORTED(major,minor) \
- ( (__glXVersionMajor > (major)) || \
- ((__glXVersionMajor == (major)) && (__glXVersionMinor >= (minor))) )
-
-#endif /* !__GLX_server_h__ */
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxsingle.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxsingle.c
deleted file mode 100644
index 5a8f72736..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxsingle.c
+++ /dev/null
@@ -1,1013 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/g_single.c,v 1.4 2001/03/21 16:29:35 dawes Exp $ */
-/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED */
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: This software was created using the
-** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
-** not been independently verified as being compliant with the OpenGL(R)
-** version 1.2.1 Specification.
-*/
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxwindow.h"
-#include "dmxpixmap.h"
-#include "dmxfont.h"
-#include "dmxcb.h"
-
-#undef Xmalloc
-#undef Xcalloc
-#undef Xrealloc
-#undef Xfree
-
-#define NEED_REPLIES
-#include "glxserver.h"
-#include "glxext.h"
-#include "g_disptab.h"
-/* #include "g_disptab_EXT.h" */
-#include "unpack.h"
-#include "glxutil.h"
-
-#include "GL/glxproto.h"
-
-#ifdef PANORAMIX
-#include "panoramiXsrv.h"
-#endif
-
-/*
- * GetReqSingle - this is the equivalent of GetReq macro
- * from Xlibint.h but it does not set the reqType field (the opcode).
- * this is because the GL single opcodes has different naming convension
- * the other X opcodes (ie. X_GLsop_GetFloatv).
- */
-#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP)
-#define GetReqSingle(name, req) \
- WORD64ALIGN\
- if ((dpy->bufptr + SIZEOF(x##name##Req)) > dpy->bufmax)\
- _XFlush(dpy);\
- req = (x##name##Req *)(dpy->last_req = dpy->bufptr);\
- req->length = (SIZEOF(x##name##Req))>>2;\
- dpy->bufptr += SIZEOF(x##name##Req);\
- dpy->request++
-
-#else /* non-ANSI C uses empty comment instead of "##" for token concatenation */
-#define GetReqSingle(name, req) \
- WORD64ALIGN\
- if ((dpy->bufptr + SIZEOF(x/**/name/**/Req)) > dpy->bufmax)\
- _XFlush(dpy);\
- req = (x/**/name/**/Req *)(dpy->last_req = dpy->bufptr);\
- req->length = (SIZEOF(x/**/name/**/Req))>>2;\
- dpy->bufptr += SIZEOF(x/**/name/**/Req);\
- dpy->request++
-#endif
-
-#define X_GLXSingle 0 /* needed by GetReqExtra */
-
-extern Display *GetBackEndDisplay( __GLXclientState *cl, int s );
-extern int GetCurrentBackEndTag(__GLXclientState *cl, GLXContextTag tag, int s);
-
-static int swap_vec_element_size = 0;
-
-static void SendSwappedReply( ClientPtr client,
- xGLXSingleReply *reply,
- char *buf,
- int buf_size )
-{
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->retval);
- __GLX_SWAP_INT(&reply->size);
-
- if ( (buf_size == 0) && (swap_vec_element_size > 0) ) {
- /*
- * the reply has single component - need to swap pad3
- */
- if (swap_vec_element_size == 2) {
- __GLX_SWAP_SHORT(&reply->pad3);
- }
- else if (swap_vec_element_size == 4) {
- __GLX_SWAP_INT(&reply->pad3);
- __GLX_SWAP_INT(&reply->pad4); /* some requests use also pad4
- * i.e GetConvolutionFilter
- */
- }
- else if (swap_vec_element_size == 8) {
- __GLX_SWAP_DOUBLE(&reply->pad3);
- }
- }
- else if ( (buf_size > 0) && (swap_vec_element_size > 0) ) {
- /*
- * the reply has vector of elements which needs to be swapped
- */
- int vsize = buf_size / swap_vec_element_size;
- char *p = buf;
- int i;
-
- for (i=0; i<vsize; i++) {
- if (swap_vec_element_size == 2) {
- __GLX_SWAP_SHORT(p);
- }
- else if (swap_vec_element_size == 4) {
- __GLX_SWAP_INT(p);
- }
- else if (swap_vec_element_size == 8) {
- __GLX_SWAP_DOUBLE(p);
- }
-
- p += swap_vec_element_size;
- }
-
- /*
- * swap pad words as well - for case that some single reply uses
- * them as well
- */
- __GLX_SWAP_INT(&reply->pad3);
- __GLX_SWAP_INT(&reply->pad4);
- __GLX_SWAP_INT(&reply->pad5);
- __GLX_SWAP_INT(&reply->pad6);
-
- }
-
- WriteToClient(client, sizeof(xGLXSingleReply),(char *)reply);
- if (buf_size > 0)
- WriteToClient(client, buf_size, (char *)buf);
-
-}
-
-int __glXForwardSingleReq( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- xGLXSingleReq *be_req;
- __GLXcontext *glxc;
- int from_screen = 0;
- int to_screen = 0;
- int buf_size;
- int s;
-
- glxc = __glXLookupContextByTag(cl, req->contextTag);
- if (!glxc) {
- return 0;
- }
- from_screen = to_screen = glxc->pScreen->myNum;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- pc += sz_xGLXSingleReq;
- buf_size = (req->length << 2) - sz_xGLXSingleReq;
-
- /*
- * just forward the request to back-end server(s)
- */
- for (s=from_screen; s<=to_screen; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
-
- LockDisplay(dpy);
- GetReqSingle(GLXSingle,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = req->glxCode;
- be_req->length = req->length;
- be_req->contextTag = GetCurrentBackEndTag(cl,req->contextTag,s);
- if (buf_size > 0)
- _XSend(dpy, (const char *)pc, buf_size);
- UnlockDisplay(dpy);
- SyncHandle();
-
- if (req->glxCode == X_GLsop_Flush) {
- XFlush(dpy);
- }
-
- }
-
- return Success;
-}
-
-int __glXForwardPipe0WithReply( __GLXclientState *cl, GLbyte *pc )
-{
- ClientPtr client = cl->client;
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- xGLXSingleReq *be_req;
- xGLXSingleReply reply;
- xGLXSingleReply be_reply;
- __GLXcontext *glxc;
- int buf_size;
- char *be_buf;
- int be_buf_size;
- DMXScreenInfo *dmxScreen;
- Display *dpy;
-
- glxc = __glXLookupContextByTag(cl, req->contextTag);
- if (!glxc) {
- return __glXBadContext;
- }
-
- pc += sz_xGLXSingleReq;
- buf_size = (req->length << 2) - sz_xGLXSingleReq;
-
- dmxScreen = &dmxScreens[glxc->pScreen->myNum];
- dpy = GetBackEndDisplay(cl, glxc->pScreen->myNum);
-
- /*
- * send the request to the first back-end server
- */
- LockDisplay(dpy);
- GetReqSingle(GLXSingle,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = req->glxCode;
- be_req->length = req->length;
- be_req->contextTag = GetCurrentBackEndTag(cl,req->contextTag,glxc->pScreen->myNum);
- if (buf_size > 0)
- _XSend(dpy, (const char *)pc, buf_size);
-
- /*
- * get the reply from the back-end server
- */
- _XReply(dpy, (xReply*) &be_reply, 0, False);
- be_buf_size = be_reply.length << 2;
- if (be_buf_size > 0) {
- be_buf = (char *)Xalloc( be_buf_size );
- if (be_buf) {
- _XRead(dpy, be_buf, be_buf_size);
- }
- else {
- /* Throw data on the floor */
- _XEatData(dpy, be_buf_size);
- return BadAlloc;
- }
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- /*
- * send the reply to the client
- */
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- reply.length = be_reply.length;
- reply.retval = be_reply.retval;
- reply.size = be_reply.size;
- reply.pad3 = be_reply.pad3;
- reply.pad4 = be_reply.pad4;
-
- if (client->swapped) {
- SendSwappedReply( client, &reply, be_buf, be_buf_size );
- }
- else {
- WriteToClient(client, sizeof(xGLXSingleReply),(char *)&reply);
- if (be_buf_size > 0)
- WriteToClient(client, be_buf_size, (char *)be_buf);
- }
-
- if (be_buf_size > 0) Xfree(be_buf);
-
- return Success;
-}
-
-int __glXForwardAllWithReply( __GLXclientState *cl, GLbyte *pc )
-{
- ClientPtr client = cl->client;
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- xGLXSingleReq *be_req;
- xGLXSingleReply reply;
- xGLXSingleReply be_reply;
- __GLXcontext *glxc;
- int buf_size;
- char *be_buf;
- int be_buf_size;
- int from_screen = 0;
- int to_screen = 0;
- int s;
-
- DMXScreenInfo *dmxScreen;
- Display *dpy;
-
- glxc = __glXLookupContextByTag(cl, req->contextTag);
- if (!glxc) {
- return 0;
- }
- from_screen = to_screen = glxc->pScreen->myNum;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- pc += sz_xGLXSingleReq;
- buf_size = (req->length << 2) - sz_xGLXSingleReq;
-
- /*
- * send the request to the first back-end server(s)
- */
- for (s=to_screen; s>=from_screen; s--) {
- dmxScreen = &dmxScreens[s];
- dpy = GetBackEndDisplay(cl,s);
-
- LockDisplay(dpy);
- GetReqSingle(GLXSingle,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = req->glxCode;
- be_req->length = req->length;
- be_req->contextTag = GetCurrentBackEndTag(cl,req->contextTag,s);
- if (buf_size > 0)
- _XSend(dpy, (const char *)pc, buf_size);
-
- /*
- * get the reply from the back-end server
- */
- _XReply(dpy, (xReply*) &be_reply, 0, False);
- be_buf_size = be_reply.length << 2;
- if (be_buf_size > 0) {
- be_buf = (char *)Xalloc( be_buf_size );
- if (be_buf) {
- _XRead(dpy, be_buf, be_buf_size);
- }
- else {
- /* Throw data on the floor */
- _XEatData(dpy, be_buf_size);
- return BadAlloc;
- }
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- if (s > from_screen && be_buf_size > 0) {
- Xfree(be_buf);
- }
- }
-
- /*
- * send the reply to the client
- */
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- reply.length = be_reply.length;
- reply.retval = be_reply.retval;
- reply.size = be_reply.size;
- reply.pad3 = be_reply.pad3;
- reply.pad4 = be_reply.pad4;
-
- if (client->swapped) {
- SendSwappedReply( client, &reply, be_buf, be_buf_size );
- }
- else {
- WriteToClient(client, sizeof(xGLXSingleReply),(char *)&reply);
- if (be_buf_size > 0)
- WriteToClient(client, be_buf_size, (char *)be_buf);
- }
-
- if (be_buf_size > 0) Xfree(be_buf);
-
- return Success;
-}
-
-int __glXForwardSingleReqSwap( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 0;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXSingleReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXSingleReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
- return( __glXForwardSingleReq( cl, pc ) );
-}
-
-int __glXForwardPipe0WithReplySwap( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 0;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXSingleReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXSingleReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
- return( __glXForwardPipe0WithReply( cl, pc ) );
-}
-
-int __glXForwardPipe0WithReplySwapsv( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 2;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXSingleReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXSingleReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
-
- return( __glXForwardPipe0WithReply( cl, pc ) );
-}
-
-int __glXForwardPipe0WithReplySwapiv( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 4;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXSingleReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXSingleReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
-
- return( __glXForwardPipe0WithReply( cl, pc ) );
-}
-
-int __glXForwardPipe0WithReplySwapdv( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 8;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXSingleReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXSingleReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
-
- return( __glXForwardPipe0WithReply( cl, pc ) );
-}
-
-int __glXForwardAllWithReplySwap( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 0;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXSingleReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXSingleReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
-
- return( __glXForwardAllWithReply( cl, pc ) );
-}
-
-int __glXForwardAllWithReplySwapsv( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 2;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXSingleReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXSingleReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
-
- return( __glXForwardAllWithReply( cl, pc ) );
-}
-
-int __glXForwardAllWithReplySwapiv( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 4;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXSingleReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXSingleReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
-
- return( __glXForwardAllWithReply( cl, pc ) );
-}
-
-int __glXForwardAllWithReplySwapdv( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 8;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXSingleReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXSingleReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
-
- return( __glXForwardAllWithReply( cl, pc ) );
-}
-
-static GLint __glReadPixels_size(GLenum format, GLenum type, GLint w, GLint h,
- int *elementbits_return, int *rowbytes_return )
-{
- GLint elements, esize;
- GLint rowsize, padding;
-
- if (w < 0 || h < 0) {
- return -1;
- }
- switch (format) {
- case GL_COLOR_INDEX:
- case GL_STENCIL_INDEX:
- case GL_DEPTH_COMPONENT:
- elements = 1;
- break;
- case GL_RED:
- case GL_GREEN:
- case GL_BLUE:
- case GL_ALPHA:
- case GL_LUMINANCE:
- elements = 1;
- break;
- case GL_LUMINANCE_ALPHA:
- elements = 2;
- break;
- case GL_RGB:
- case GL_BGR:
- elements = 3;
- break;
- case GL_RGBA:
- case GL_BGRA:
- case GL_ABGR_EXT:
- elements = 4;
- break;
- default:
- return -1;
- }
- /*
- ** According to the GLX protocol, each row must be padded to a multiple of
- ** 4 bytes. 4 bytes also happens to be the default alignment in the pixel
- ** store modes of the GL.
- */
- switch (type) {
- case GL_BITMAP:
- if (format == GL_COLOR_INDEX || format == GL_STENCIL_INDEX) {
- rowsize = ((w * elements)+7)/8;
- padding = rowsize % 4;
- if (padding) {
- rowsize += 4 - padding;
- }
- if (elementbits_return) *elementbits_return = elements;
- if (rowbytes_return) *rowbytes_return = rowsize;
- return (rowsize * h);
- } else {
- return -1;
- }
- case GL_BYTE:
- case GL_UNSIGNED_BYTE:
- esize = 1;
- break;
- case GL_UNSIGNED_BYTE_3_3_2:
- case GL_UNSIGNED_BYTE_2_3_3_REV:
- esize = 1;
- elements = 1;
- break;
- case GL_SHORT:
- case GL_UNSIGNED_SHORT:
- esize = 2;
- break;
- case GL_UNSIGNED_SHORT_5_6_5:
- case GL_UNSIGNED_SHORT_5_6_5_REV:
- case GL_UNSIGNED_SHORT_4_4_4_4:
- case GL_UNSIGNED_SHORT_4_4_4_4_REV:
- case GL_UNSIGNED_SHORT_5_5_5_1:
- case GL_UNSIGNED_SHORT_1_5_5_5_REV:
- esize = 2;
- elements = 1;
- break;
- case GL_INT:
- case GL_UNSIGNED_INT:
- case GL_FLOAT:
- esize = 4;
- break;
- case GL_UNSIGNED_INT_8_8_8_8:
- case GL_UNSIGNED_INT_8_8_8_8_REV:
- case GL_UNSIGNED_INT_10_10_10_2:
- case GL_UNSIGNED_INT_2_10_10_10_REV:
- esize = 4;
- elements = 1;
- break;
- default:
- return -1;
- }
- rowsize = w * elements * esize;
- padding = rowsize % 4;
- if (padding) {
- rowsize += 4 - padding;
- }
-
- if (elementbits_return) *elementbits_return = esize*elements*8;
- if (rowbytes_return) *rowbytes_return = rowsize;
-
- return (rowsize * h);
-}
-
-static int intersectRect( int x1, int x2, int y1, int y2,
- int X1, int X2, int Y1, int Y2,
- int *ix1, int *ix2, int *iy1, int *iy2 )
-{
- int right = (x2 < X2 ? x2 : X2);
- int bottom = (y2 < Y2 ? y2 : Y2);
- int left = (x1 > X1 ? x1 : X1);
- int top = (y1 > Y1 ? y1 : Y1);
- int width = right - left + 1;
- int height = bottom - top + 1;
-
- if ( (width <= 0) || (height <= 0) ) {
- *ix1 = *ix2 = *iy1 = *iy2 = 0;
- return(0);
- }
- else {
- *ix1 = left;
- *ix2 = right;
- *iy1 = top;
- *iy2 = bottom;
- return( width * height );
- }
-
-}
-
-int __glXDisp_ReadPixels(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXSingleReq *req = (xGLXSingleReq *)pc;
- xGLXSingleReq *be_req;
- xGLXReadPixelsReply reply;
- xGLXReadPixelsReply be_reply;
- GLbyte *be_pc;
- GLint x,y;
- GLsizei width, height;
- GLenum format, type;
- GLboolean swapBytes, lsbFirst;
- ClientPtr client = cl->client;
- DrawablePtr pDraw;
- int error;
- __GLXcontext *glxc;
- int from_screen = 0;
- int to_screen = 0;
- char *buf;
- int buf_size;
- int s;
- int win_x1, win_x2;
- int win_y1, win_y2;
- int ebits, rowsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- if (client->swapped) {
- __GLX_SWAP_INT(&req->contextTag);
- }
-
- glxc = __glXLookupContextByTag(cl, req->contextTag);
- if (!glxc) {
- return 0;
- }
- from_screen = to_screen = glxc->pScreen->myNum;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- pc += sz_xGLXSingleReq;
- x = *(GLint *)(pc + 0);
- y = *(GLint *)(pc + 4);
- width = *(GLsizei *)(pc + 8);
- height = *(GLsizei *)(pc + 12);
- format = *(GLenum *)(pc + 16);
- type = *(GLenum *)(pc + 20);
- swapBytes = *(GLboolean *)(pc + 24);
- lsbFirst = *(GLboolean *)(pc + 25);
-
- if (client->swapped) {
- __GLX_SWAP_INT(&x);
- __GLX_SWAP_INT(&y);
- __GLX_SWAP_INT(&width);
- __GLX_SWAP_INT(&height);
- __GLX_SWAP_INT(&format);
- __GLX_SWAP_INT(&type);
- swapBytes = !swapBytes;
- }
-
- buf_size = __glReadPixels_size(format,type,width,height, &ebits, &rowsize);
- if (buf_size >= 0) {
- buf = (char *) Xalloc( buf_size );
- if ( !buf ) {
- return( BadAlloc );
- }
- }
- else {
- buf_size = 0;
- }
-
- if (buf_size > 0) {
- /*
- * Get the current drawable this context is bound to
- */
- pDraw = __glXLookupDrawableByTag( cl, req->contextTag );
- win_x1 = pDraw->x + x;
- win_x2 = win_x1 + width - 1;
- win_y1 = (dmxGlobalHeight - pDraw->y - pDraw->height) + y;
- win_y2 = win_y1 + height - 1;
- if (pDraw->type != DRAWABLE_WINDOW) {
- from_screen = to_screen = 0;
- }
-
- for (s=from_screen; s<=to_screen; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
- int scr_x1 = dmxScreen->rootXOrigin;
- int scr_x2 = dmxScreen->rootXOrigin + dmxScreen->scrnWidth - 1;
- int scr_y1 = dmxScreen->rootYOrigin;
- int scr_y2 = dmxScreen->rootYOrigin + dmxScreen->scrnHeight - 1;
- int wx1, wx2, wy1, wy2;
- int sx, sy, sw, sh;
- int npixels;
-
- /*
- * find the window portion that is on the current screen
- */
- if (pDraw->type == DRAWABLE_WINDOW) {
- npixels = intersectRect( scr_x1, scr_x2, scr_y1, scr_y2,
- win_x1, win_x2, win_y1, win_y2,
- &wx1, &wx2, &wy1, &wy2 );
- }
- else {
- wx1 = win_x1;
- wx2 = win_x2;
- wy1 = win_y1;
- wy2 = win_y2;
- npixels = (wx2-wx1+1) * (wy2-wy1+1);
- }
-
- if (npixels > 0) {
-
- /* send the request to the back-end server */
- LockDisplay(dpy);
- GetReqExtra(GLXSingle,__GLX_PAD(26),be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = X_GLsop_ReadPixels;
- be_req->contextTag = GetCurrentBackEndTag(cl,req->contextTag,s);
- be_pc = ((GLbyte *)(be_req) + sz_xGLXSingleReq);
-
- sx = wx1 - pDraw->x;
- sy = wy1 - (dmxGlobalHeight - pDraw->y - pDraw->height);
- sw = (wx2-wx1+1);
- sh = (wy2-wy1+1);
-
- *(GLint *)(be_pc + 0) = sx; /* x */
- *(GLint *)(be_pc + 4) = sy; /* y */
- *(GLsizei *)(be_pc + 8) = sw; /* width */
- *(GLsizei *)(be_pc + 12) = sh; /* height */
- *(GLenum *)(be_pc + 16) = format;
- *(GLenum *)(be_pc + 20) = type;
- *(GLboolean *)(be_pc + 24) = swapBytes;
- *(GLboolean *)(be_pc + 25) = lsbFirst;
-
- _XReply(dpy, (xReply*) &be_reply, 0, False);
-
- if (be_reply.length > 0) {
- char *be_buf;
- int be_buf_size = be_reply.length << 2;
-
- be_buf = (char *) Xalloc( be_buf_size );
- if (be_buf) {
- _XRead(dpy, be_buf, be_buf_size);
-
- /* copy pixels data to the right location of the */
- /* reply buffer */
- if ( type != GL_BITMAP ) {
- int pbytes = ebits / 8;
- char *dst = buf + (sy-y)*rowsize + (sx-x)*pbytes;
- char *src = be_buf;
- int pad = (pbytes * sw) % 4;
- int r;
-
- for (r=0; r<sh; r++) {
- memcpy( dst, src, pbytes*sw );
- dst += rowsize;
- src += (pbytes*sw + (pad ? 4-pad : 0) );
- }
- }
- else {
- /* this is a GL_BITMAP pixel type, should copy bits */
- int r;
- int src_rowsize = ((sw * ebits) + 7) / 8;
- int src_pad = src_rowsize % 4;
- if ( src_pad ) {
- src_rowsize += (4 - src_pad);
- }
-
- for (r=0; r<sh; r++) {
- unsigned char dst_mask = 0x80 >> (sx % 8);
- unsigned char src_mask = 0x80;
- char *dst = buf + (sy-y+r)*rowsize + (sx-x)/8;
- char *src = be_buf + r*src_rowsize;
- int b;
-
- for (b=0; b<sw*ebits; b++) {
- if ( *src & src_mask ) {
- *dst |= dst_mask;
- }
- else {
- *dst &= ~dst_mask;
- }
-
- if (dst_mask > 1) dst_mask >>= 1;
- else {
- dst_mask = 0x80;
- dst++;
- }
-
- if (src_mask > 1) src_mask >>= 1;
- else {
- src_mask = 0x80;
- src++;
- }
- }
- }
-
- }
-
- Xfree( be_buf );
- }
- else {
- /* Throw data on the floor */
- _XEatData(dpy, be_buf_size);
- Xfree( buf );
- return BadAlloc;
- }
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- } /* of npixels > 0 */
-
- } /* of for loop */
-
- } /* of if buf_size > 0 */
-
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- reply.length = buf_size >> 2;
-
- if (client->swapped) {
- __GLX_SWAP_SHORT(&reply.sequenceNumber);
- __GLX_SWAP_INT(&reply.length);
- }
-
- WriteToClient(client, sizeof(xGLXReadPixelsReply),(char *)&reply);
- if (buf_size > 0) {
- WriteToClient(client, buf_size, (char *)buf);
- Xfree( buf );
- }
-
- return Success;
-}
-
-int __glXDispSwap_GetTexImage(__GLXclientState *cl, GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
- GLbyte *lpc = pc;
-
- lpc += sz_xGLXSingleReq;
- __GLX_SWAP_INT(lpc+0);
- __GLX_SWAP_INT(lpc+4);
- __GLX_SWAP_INT(lpc+8);
- __GLX_SWAP_INT(lpc+12);
-
- /* reverse swapBytes */
- *(GLboolean *)(lpc + 16) = ! *(GLboolean *)(lpc + 16);
-
- return( __glXForwardPipe0WithReplySwap( cl, pc ) );
-}
-
-int __glXDispSwap_GetColorTable(__GLXclientState *cl, GLbyte *pc)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
- GLbyte *lpc = pc;
-
- lpc += sz_xGLXSingleReq;
- __GLX_SWAP_INT(lpc+0);
- __GLX_SWAP_INT(lpc+4);
- __GLX_SWAP_INT(lpc+8);
-
- /* reverse swapBytes */
- *(GLboolean *)(lpc + 12) = ! *(GLboolean *)(lpc + 12);
-
- return( __glXForwardPipe0WithReplySwap( cl, pc ) );
-}
-
-
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxsingle.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxsingle.h
deleted file mode 100644
index a21d38f84..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxsingle.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#ifndef __GLXSINGLE_H
-#define __GLXSINGLE_H
-
-extern int __glXForwardSingleReq( __GLXclientState *cl, GLbyte *pc );
-extern int __glXForwardPipe0WithReply( __GLXclientState *cl, GLbyte *pc );
-extern int __glXForwardAllWithReply( __GLXclientState *cl, GLbyte *pc );
-
-extern int __glXForwardSingleReqSwap( __GLXclientState *cl, GLbyte *pc );
-
-extern int __glXForwardPipe0WithReplySwap( __GLXclientState *cl, GLbyte *pc );
-extern int __glXForwardPipe0WithReplySwapsv( __GLXclientState *cl, GLbyte *pc );
-extern int __glXForwardPipe0WithReplySwapiv( __GLXclientState *cl, GLbyte *pc );
-extern int __glXForwardPipe0WithReplySwapdv( __GLXclientState *cl, GLbyte *pc );
-
-extern int __glXForwardAllWithReplySwap( __GLXclientState *cl, GLbyte *pc );
-extern int __glXForwardAllWithReplySwapsv( __GLXclientState *cl, GLbyte *pc );
-extern int __glXForwardAllWithReplySwapiv( __GLXclientState *cl, GLbyte *pc );
-extern int __glXForwardAllWithReplySwapdv( __GLXclientState *cl, GLbyte *pc );
-
-extern int __glXDisp_ReadPixels(__GLXclientState *cl, GLbyte *pc);
-extern int __glXDispSwap_GetTexImage(__GLXclientState *cl, GLbyte *pc);
-extern int __glXDispSwap_GetColorTable(__GLXclientState *cl, GLbyte *pc);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxswap.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxswap.c
deleted file mode 100644
index f7fcc37ac..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxswap.c
+++ /dev/null
@@ -1,539 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2003 Red Hat Inc., Raleigh, 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxwindow.h"
-#include "glxserver.h"
-#include "glxswap.h"
-
-extern int __glXDoSwapBuffers(__GLXclientState *cl, XID drawId,
- GLXContextTag tag);
-
-typedef struct _SwapGroup *SwapGroupPtr;
-
-static Bool SwapBarrierIsReadyToSwap(GLuint barrier);
-static void SwapSwapBarrier(GLuint barrier);
-static void UpdateSwapBarrierList(GLuint barrier,
- SwapGroupPtr pOldSwap,
- SwapGroupPtr pNewSwap);
-
-
-/************************************************************************
- *
- * Swap Groups
- *
- ************************************************************************/
-
-typedef struct _SwapGroup {
- WindowPtr pWin;
- SwapGroupPtr pNext;
-
- Bool swapping;
- Bool sleeping;
- GLuint barrier;
-
- XID drawable;
- GLXContextTag tag;
- __GLXclientState *clState;
-} SwapGroupRec;
-
-
-static void SwapSwapGroup(SwapGroupPtr pSwap)
-{
- SwapGroupPtr pCur;
-
- /* All drawables in swap group are ready to swap, so just swap all
- * drawables buffers and then wake up those clients that were
- * previously sleeping */
-
- for (pCur = pSwap; pCur; pCur = pCur->pNext) {
- if (pCur->swapping) {
- /* Swap pCur's buffers */
- __glXDoSwapBuffers(pCur->clState, pCur->drawable, pCur->tag);
- pCur->swapping = FALSE;
- }
-
- /* Wakeup client */
- if (pCur->sleeping) {
- ClientWakeup(pCur->clState->client);
- pCur->sleeping = FALSE;
- }
- }
-}
-
-static Bool SwapGroupIsReadyToSwap(SwapGroupPtr pSwap)
-{
- Bool isReady = TRUE;
-
- /* The swap group is ready to swap when all drawables are ready to
- * swap. NOTE: A drawable is also ready to swap if it is not
- * currently mapped */
- for (; pSwap; pSwap = pSwap->pNext) {
- isReady &= (pSwap->swapping || !pSwap->pWin->mapped);
- /* FIXME: Should we use pSwap->pWin->mapped or ...->realized ??? */
- }
-
- return isReady;
-}
-
-static Bool SGSwapCleanup(ClientPtr client, pointer closure)
-{
- /* SwapGroupPtr pSwap = (SwapGroupPtr)closure; */
-
- /* This should not be called unless the client has died in which
- * case we should remove the buffer from the swap list */
-
- return TRUE;
-}
-
-int SGSwapBuffers(__GLXclientState *cl, XID drawId, GLXContextTag tag,
- DrawablePtr pDraw)
-{
- WindowPtr pWin = (WindowPtr)pDraw;
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWin);
- SwapGroupPtr pSwap = pWinPriv->swapGroup;
- SwapGroupPtr pCur;
-
- for (pCur = pSwap; pCur && pCur->pWin != pWin; pCur = pCur->pNext);
- if (!pCur)
- return BadDrawable;
-
- pCur->clState = cl;
- pCur->drawable = drawId;
- pCur->tag = tag;
-
- /* We are now in the process of swapping */
- pCur->swapping = TRUE;
-
- if (pSwap->barrier && SwapBarrierIsReadyToSwap(pSwap->barrier)) {
- /* The swap group is bound to a barrier and the barrier is ready
- * to swap, so swap all the swap groups that are bound to this
- * group's swap barrier */
- SwapSwapBarrier(pSwap->barrier);
- } else if (!pSwap->barrier && SwapGroupIsReadyToSwap(pSwap)) {
- /* Do the swap if the entire swap group is ready to swap and the
- * group is not bound to a swap barrier */
- SwapSwapGroup(pSwap);
- } else {
- /* The swap group/barrier is not yet ready to swap, so put
- * client to sleep until the rest are ready to swap */
- ClientSleep(cl->client, SGSwapCleanup, (pointer)pWin);
- pCur->sleeping = TRUE;
- }
-
- return Success;
-}
-
-static void SGWindowUnmapped(WindowPtr pWin)
-{
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWin);
- SwapGroupPtr pSwap = pWinPriv->swapGroup;
-
- /* Now that one of the windows in the swap group has been unmapped,
- * see if the entire swap group/barrier is ready to swap */
-
- if (pSwap->barrier && SwapBarrierIsReadyToSwap(pSwap->barrier)) {
- SwapSwapBarrier(pSwap->barrier);
- } else if (!pSwap->barrier && SwapGroupIsReadyToSwap(pSwap)) {
- SwapSwapGroup(pSwap);
- }
-}
-
-static void SGWindowDestroyed(WindowPtr pWin)
-{
- JoinSwapGroupSGIX((DrawablePtr)pWin, NULL);
-}
-
-static SwapGroupPtr CreateSwapEntry(WindowPtr pWin)
-{
- SwapGroupPtr pEntry;
-
- /* Allocate new swap group */
- pEntry = xalloc(sizeof(*pEntry));
- if (!pEntry) return NULL;
-
- /* Initialize swap group */
- pEntry->pWin = pWin;
- pEntry->pNext = NULL;
- pEntry->swapping = FALSE;
- pEntry->sleeping = FALSE;
- pEntry->barrier = 0;
- /* The following are not initialized until SwapBuffers is called:
- * pEntry->drawable
- * pEntry->tag
- * pEntry->clState
- */
-
- return pEntry;
-}
-
-static void FreeSwapEntry(SwapGroupPtr pEntry)
-{
- /* Since we have removed the drawable from its previous swap group
- * and it won't be added to another swap group, the only thing that
- * we need to do is to make sure that the drawable's client is not
- * sleeping. This could happen if one thread is sleeping, while
- * another thread called glxJoinSwapGroup(). Note that all sleeping
- * threads should also be swapping, but there is a small window in
- * the SGSwapBuffer() logic, above, where swapping can be set but
- * sleeping is not. We check both independently here just to be
- * pedantic. */
-
- /* Handle swap buffer request */
- if (pEntry->swapping)
- __glXDoSwapBuffers(pEntry->clState, pEntry->drawable, pEntry->tag);
-
- /* Wake up client */
- if (pEntry->sleeping)
- ClientWakeup(pEntry->clState->client);
-
- /* We can free the pEntry entry since it has already been removed
- * from the swap group list and it won't be needed any longer */
- xfree(pEntry);
-}
-
-int JoinSwapGroupSGIX(DrawablePtr pDraw, DrawablePtr pMember)
-{
- if (pDraw->type == DRAWABLE_WINDOW) {
- WindowPtr pWin = (WindowPtr)pDraw;
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWin);
- SwapGroupPtr pOldSwap = NULL;
- SwapGroupPtr pEntry;
-
- /* If pDraw and pMember are already members of the same swap
- * group, just return Success since there is nothing to do */
- for (pEntry = pWinPriv->swapGroup; pEntry; pEntry = pEntry->pNext)
- if (pEntry->pWin == (WindowPtr)pMember)
- return Success;
-
- /* Remove pDraw from its current swap group */
- if (pWinPriv->swapGroup) {
- SwapGroupPtr pSwapGroup = pWinPriv->swapGroup;
- SwapGroupPtr pPrev;
-
- /* Find old swap entry in swap group and save in pOldSwap
- * for later use */
- for (pOldSwap = pWinPriv->swapGroup, pPrev = NULL;
- pOldSwap && pOldSwap->pWin != pWin;
- pPrev = pOldSwap, pOldSwap = pOldSwap->pNext);
- if (!pOldSwap)
- return BadDrawable;
-
- /* Remove pDraw's swap group entry from swap group list */
- if (pPrev) {
- pPrev->pNext = pOldSwap->pNext;
- } else {
- /* pWin is at the head of the swap group list, so we
- * need to update all other members of this swap
- * group */
- for (pEntry = pOldSwap->pNext; pEntry; pEntry = pEntry->pNext)
- DMX_GET_WINDOW_PRIV(pEntry->pWin)->swapGroup
- = pOldSwap->pNext;
-
- /* Update the barrier list as well */
- if (pOldSwap->barrier)
- UpdateSwapBarrierList(pOldSwap->barrier,
- pOldSwap, pOldSwap->pNext);
-
- /* Set pSwapGroup to point to the swap group without
- * pOldSwap */
- pSwapGroup = pOldSwap->pNext;
- }
-
- /* Check to see if current swap group can now swap since we
- * know at this point that pDraw and pMember are guaranteed
- * to previously be in different swap groups */
- if (pSwapGroup && SwapGroupIsReadyToSwap(pSwapGroup)) {
- SwapSwapGroup(pSwapGroup);
- }
-
- /* Make the old swap entry a standalone group */
- pOldSwap->pNext = NULL;
- pOldSwap->barrier = 0;
-
- /* Reset pWin's swap group */
- pWinPriv->swapGroup = NULL;
- pWinPriv->windowDestroyed = NULL;
- pWinPriv->windowUnmapped = NULL;
- }
-
- if (!pMember || pMember->type != DRAWABLE_WINDOW) {
- /* Free old swap group since it is no longer needed */
- if (pOldSwap) FreeSwapEntry(pOldSwap);
- } else if (pDraw == pMember && pOldSwap) {
- /* Special case where pDraw was previously created and we
- * are now just putting it to its own swap group */
- pWinPriv->swapGroup = pOldSwap;
- pWinPriv->windowDestroyed = SGWindowDestroyed;
- pWinPriv->windowUnmapped = SGWindowUnmapped;
-
- /* Check to see if pDraw is ready to swap */
- if (SwapGroupIsReadyToSwap(pOldSwap))
- SwapSwapGroup(pOldSwap);
- } else if (pMember->type == DRAWABLE_WINDOW) {
- WindowPtr pMemberWin = (WindowPtr)pMember;
- dmxWinPrivPtr pMemberPriv = DMX_GET_WINDOW_PRIV(pMemberWin);
- SwapGroupPtr pMemberSwapGroup = pMemberPriv->swapGroup;
-
- /* Finally, how we can add pDraw to pMember's swap group */
-
- /* If pMember is not currently in a swap group, then create
- * one for it since we are just about to add pDraw to it. */
- if (!pMemberSwapGroup) {
- /* Create new swap group */
- pMemberSwapGroup = CreateSwapEntry(pMemberWin);
- if (!pMemberSwapGroup) {
- if (pOldSwap) FreeSwapEntry(pOldSwap);
- return BadAlloc;
- }
-
- /* Set pMember's swap group */
- pMemberPriv->swapGroup = pMemberSwapGroup;
- pMemberPriv->windowDestroyed = SGWindowDestroyed;
- pMemberPriv->windowUnmapped = SGWindowUnmapped;
- }
-
- /* If pDraw == pMember, that means pDraw was not a member of
- * a group previously (or it would have been handled by the
- * special case above), so no additional work is required
- * since we just created a new swap group for pMember (i.e.,
- * pDraw). */
-
- if (pDraw != pMember) {
- /* If pDraw was not previously in a swap group, then create
- * an entry for it */
- if (!pOldSwap) {
- /* Create new swap group */
- pOldSwap = CreateSwapEntry(pWin);
- if (!pOldSwap) {
- /* If we just created a swap group for pMember, we
- * need to free it here */
- if (pMemberSwapGroup->pNext == NULL) {
- FreeSwapEntry(pMemberSwapGroup);
- pMemberPriv->swapGroup = NULL;
- }
- return BadAlloc;
- }
- }
-
- /* Find last entry in pMember's swap group */
- for (pEntry = pMemberSwapGroup;
- pEntry->pNext;
- pEntry = pEntry->pNext);
-
- /* Add pDraw's swap group entry to pMember's swap group list */
- pEntry->pNext = pOldSwap;
-
- /* Add pDraw to pMember's swap barrier */
- pOldSwap->barrier = pEntry->barrier;
-
- /* Set pDraw's swap group */
- pWinPriv->swapGroup = pMemberSwapGroup;
- pWinPriv->windowDestroyed = SGWindowDestroyed;
- pWinPriv->windowUnmapped = SGWindowUnmapped;
- }
- }
- }
-
- return Success;
-}
-
-
-/************************************************************************
- *
- * Swap Barriers
- *
- ************************************************************************/
-
-#define GLX_MAX_SWAP_BARRIERS 10
-
-typedef struct _SwapBarrier *SwapBarrierPtr;
-typedef struct _SwapBarrier {
- SwapGroupPtr pSwap;
- SwapBarrierPtr pNext;
-} SwapBarrierRec;
-
-static SwapBarrierPtr SwapBarrierList[GLX_MAX_SWAP_BARRIERS+1];
-
-void SwapBarrierInit(void)
-{
- int i;
-
- for (i = 0; i <= GLX_MAX_SWAP_BARRIERS; i++)
- SwapBarrierList[i] = NULL;
-}
-
-void SwapBarrierReset(void)
-{
- int i;
-
- for (i = 0; i <= GLX_MAX_SWAP_BARRIERS; i++) {
- SwapBarrierPtr pBarrier, pNextBarrier;;
- for (pBarrier = SwapBarrierList[i];
- pBarrier;
- pBarrier = pNextBarrier) {
- pNextBarrier = pBarrier->pNext;
- xfree(pBarrier);
- }
- SwapBarrierList[i] = NULL;
- }
-}
-
-int QueryMaxSwapBarriersSGIX(int screen)
-{
- return GLX_MAX_SWAP_BARRIERS;
-}
-
-static Bool BindSwapGroupToBarrier(GLuint barrier, SwapGroupPtr pSwapGroup)
-{
- SwapBarrierPtr pBarrier;
-
- pBarrier = xalloc(sizeof(*pBarrier));
- if (!pBarrier) return FALSE;
-
- /* Add the swap group to barrier's list */
- pBarrier->pSwap = pSwapGroup;
- pBarrier->pNext = SwapBarrierList[barrier];
- SwapBarrierList[barrier] = pBarrier;
-
- return TRUE;
-}
-
-static Bool UnbindSwapGroupFromBarrier(GLuint barrier, SwapGroupPtr pSwapGroup)
-{
- SwapBarrierPtr pBarrier, pPrevBarrier;
-
- /* Find the swap group in barrier's list */
- for (pBarrier = SwapBarrierList[barrier], pPrevBarrier = NULL;
- pBarrier && pBarrier->pSwap != pSwapGroup;
- pPrevBarrier = pBarrier, pBarrier = pBarrier->pNext);
- if (!pBarrier) return FALSE;
-
- /* Remove the swap group from barrier's list */
- if (pPrevBarrier) pPrevBarrier->pNext = pBarrier->pNext;
- else SwapBarrierList[barrier] = pBarrier->pNext;
-
- /* Free memory */
- xfree(pBarrier);
-
- return TRUE;
-}
-
-static void UpdateSwapBarrierList(GLuint barrier,
- SwapGroupPtr pOldSwap,
- SwapGroupPtr pNewSwap)
-{
- SwapBarrierPtr pBarrier;
-
- /* If the old swap group is being destroyed, then we need to remove
- * the swap group from the list entirely */
- if (!pNewSwap) {
- UnbindSwapGroupFromBarrier(barrier, pOldSwap);
- return;
- }
-
- /* Otherwise, find the old swap group in the barrier list and change
- * it to the new swap group */
- for (pBarrier = SwapBarrierList[barrier];
- pBarrier;
- pBarrier = pBarrier->pNext) {
- if (pBarrier->pSwap == pOldSwap) {
- pBarrier->pSwap = pNewSwap;
- return;
- }
- }
-}
-
-static Bool SwapBarrierIsReadyToSwap(GLuint barrier)
-{
- SwapBarrierPtr pBarrier;
- Bool isReady = TRUE;
-
- /* The swap barier is ready to swap when swap groups that are bound
- * to barrier are ready to swap */
- for (pBarrier = SwapBarrierList[barrier];
- pBarrier;
- pBarrier = pBarrier->pNext)
- isReady &= SwapGroupIsReadyToSwap(pBarrier->pSwap);
-
- return isReady;
-}
-
-static void SwapSwapBarrier(GLuint barrier)
-{
- SwapBarrierPtr pBarrier;
-
- /* Swap each group that is a member of this barrier */
- for (pBarrier = SwapBarrierList[barrier];
- pBarrier;
- pBarrier = pBarrier->pNext)
- SwapSwapGroup(pBarrier->pSwap);
-}
-
-int BindSwapBarrierSGIX(DrawablePtr pDraw, int barrier)
-{
- /* FIXME: Check for errors when pDraw->type != DRAWABLE_WINDOW */
-
- if (barrier < 0 || barrier > GLX_MAX_SWAP_BARRIERS)
- return BadValue;
-
- if (pDraw->type == DRAWABLE_WINDOW) {
- WindowPtr pWin = (WindowPtr)pDraw;
- dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWin);
- SwapGroupPtr pSwapGroup = pWinPriv->swapGroup;
- SwapGroupPtr pCur;
-
- if (!pSwapGroup) return BadDrawable;
- if (barrier && pSwapGroup->barrier) return BadValue;
-
- /* Update the swap barrier list */
- if (barrier) {
- if (!BindSwapGroupToBarrier(barrier, pSwapGroup))
- return BadAlloc;
- } else {
- if (!UnbindSwapGroupFromBarrier(pSwapGroup->barrier, pSwapGroup))
- return BadDrawable;
- }
-
- /* Set the barrier for each member of this swap group */
- for (pCur = pSwapGroup; pCur; pCur = pCur->pNext)
- pCur->barrier = barrier;
- }
-
- return Success;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxswap.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxswap.h
deleted file mode 100644
index 95c433381..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxswap.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2003 Red Hat Inc., Raleigh, 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-#ifndef __GLX_swap_h__
-#define __GLX_swap_h__
-
-extern int JoinSwapGroupSGIX(DrawablePtr pDraw, DrawablePtr pMember);
-extern int SGSwapBuffers(__GLXclientState *cl, XID drawId, GLXContextTag tag,
- DrawablePtr pDraw);
-
-extern void SwapBarrierInit(void);
-extern void SwapBarrierReset(void);
-extern int QueryMaxSwapBarriersSGIX(int screen);
-extern int BindSwapBarrierSGIX(DrawablePtr pDraw, int barrier);
-
-#endif /* !__GLX_swap_h__ */
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxutil.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxutil.c
deleted file mode 100644
index 822ef25a0..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxutil.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxutil.c,v 1.5 2001/03/21 16:29:37 dawes Exp $ */
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#define NEED_REPLIES
-#define FONT_PCF
-#include "glxserver.h"
-#include <GL/glxtokens.h>
-#include <pixmapstr.h>
-#include <windowstr.h>
-#include "glxutil.h"
-#include "GL/glx_ansic.h"
-
-/************************************************************************/
-
-void __glXNop(void) {}
-
-/************************************************************************/
-
-/* Memory Allocation for GLX */
-
-void *
-__glXMalloc(size_t size)
-{
- void *addr;
-
- if (size == 0) {
- return NULL;
- }
- addr = (void *) xalloc(size);
- if (addr == NULL) {
- /* XXX: handle out of memory error */
- return NULL;
- }
- return addr;
-}
-
-void *
-__glXCalloc(size_t numElements, size_t elementSize)
-{
- void *addr;
- size_t size;
-
- if ((numElements == 0) || (elementSize == 0)) {
- return NULL;
- }
- size = numElements * elementSize;
- addr = (void *) xalloc(size);
- if (addr == NULL) {
- /* XXX: handle out of memory error */
- return NULL;
- }
- __glXMemset(addr, 0, size);
- return addr;
-}
-
-void *
-__glXRealloc(void *addr, size_t newSize)
-{
- void *newAddr;
-
- if (addr) {
- if (newSize == 0) {
- xfree(addr);
- return NULL;
- } else {
- newAddr = xrealloc(addr, newSize);
- }
- } else {
- if (newSize == 0) {
- return NULL;
- } else {
- newAddr = xalloc(newSize);
- }
- }
- if (newAddr == NULL) {
- return NULL; /* XXX: out of memory */
- }
-
- return newAddr;
-}
-
-void
-__glXFree(void *addr)
-{
- if (addr) {
- xfree(addr);
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxutil.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxutil.h
deleted file mode 100644
index 176444ee9..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxutil.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxutil.h,v 1.3 2001/03/21 16:29:37 dawes Exp $ */
-#ifndef _glxcmds_h_
-#define _glxcmds_h_
-
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-extern void __glXNop(void);
-
-/* memory management */
-extern void *__glXMalloc(size_t size);
-extern void *__glXCalloc(size_t numElements, size_t elementSize);
-extern void *__glXRealloc(void *addr, size_t newSize);
-extern void __glXFree(void *ptr);
-
-/* context helper routines */
-extern __GLXcontext *__glXLookupContextByTag(__GLXclientState*, GLXContextTag);
-extern DrawablePtr __glXLookupDrawableByTag(__GLXclientState *cl, GLXContextTag tag);
-
-
-#endif /* _glxcmds_h_ */
-
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvendor.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvendor.c
deleted file mode 100644
index 4259974f9..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvendor.c
+++ /dev/null
@@ -1,583 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/g_single.c,v 1.4 2001/03/21 16:29:35 dawes Exp $ */
-/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED */
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: This software was created using the
-** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
-** not been independently verified as being compliant with the OpenGL(R)
-** version 1.2.1 Specification.
-*/
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxwindow.h"
-#include "dmxpixmap.h"
-#include "dmxfont.h"
-
-#undef Xmalloc
-#undef Xcalloc
-#undef Xrealloc
-#undef Xfree
-
-#define NEED_REPLIES
-#include "glxserver.h"
-#include "glxext.h"
-#include "g_disptab.h"
-/* #include "g_disptab_EXT.h" */
-#include "unpack.h"
-#include "glxutil.h"
-
-#include "GL/glxproto.h"
-
-#ifdef PANORAMIX
-#include "panoramiXsrv.h"
-#endif
-
-/*
- * GetReqVendorPrivate - this is the equivalent of GetReq macro
- * from Xlibint.h but it does not set the reqType field (the opcode).
- * this is because the GL single opcodes has different naming convension
- * the other X opcodes (ie. X_GLsop_GetFloatv).
- */
-#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP)
-#define GetReqVendorPrivate(name, req) \
- WORD64ALIGN\
- if ((dpy->bufptr + SIZEOF(x##name##Req)) > dpy->bufmax)\
- _XFlush(dpy);\
- req = (x##name##Req *)(dpy->last_req = dpy->bufptr);\
- req->length = (SIZEOF(x##name##Req))>>2;\
- dpy->bufptr += SIZEOF(x##name##Req);\
- dpy->request++
-
-#else /* non-ANSI C uses empty comment instead of "##" for token concatenation */
-#define GetReqVendorPrivate(name, req) \
- WORD64ALIGN\
- if ((dpy->bufptr + SIZEOF(x/**/name/**/Req)) > dpy->bufmax)\
- _XFlush(dpy);\
- req = (x/**/name/**/Req *)(dpy->last_req = dpy->bufptr);\
- req->length = (SIZEOF(x/**/name/**/Req))>>2;\
- dpy->bufptr += SIZEOF(x/**/name/**/Req);\
- dpy->request++
-#endif
-
-extern Display *GetBackEndDisplay( __GLXclientState *cl, int s );
-extern int GetCurrentBackEndTag(__GLXclientState *cl, GLXContextTag tag, int s);
-
-static int swap_vec_element_size = 0;
-
-static void SendSwappedReply( ClientPtr client,
- xGLXVendorPrivReply *reply,
- char *buf,
- int buf_size )
-{
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->retval);
- __GLX_SWAP_INT(&reply->size);
-
- if ( (buf_size == 0) && (swap_vec_element_size > 0) ) {
- /*
- * the reply has single component - need to swap pad3
- */
- if (swap_vec_element_size == 2) {
- __GLX_SWAP_SHORT(&reply->pad3);
- }
- else if (swap_vec_element_size == 4) {
- __GLX_SWAP_INT(&reply->pad3);
- __GLX_SWAP_INT(&reply->pad4);
- }
- else if (swap_vec_element_size == 8) {
- __GLX_SWAP_DOUBLE(&reply->pad3);
- }
- }
- else if ( (buf_size > 0) && (swap_vec_element_size > 0) ) {
- /*
- * the reply has vector of elements which needs to be swapped
- */
- int vsize = buf_size / swap_vec_element_size;
- char *p = buf;
- int i;
-
- for (i=0; i<vsize; i++) {
- if (swap_vec_element_size == 2) {
- __GLX_SWAP_SHORT(p);
- }
- else if (swap_vec_element_size == 4) {
- __GLX_SWAP_INT(p);
- }
- else if (swap_vec_element_size == 8) {
- __GLX_SWAP_DOUBLE(p);
- }
-
- p += swap_vec_element_size;
- }
-
- __GLX_SWAP_INT(&reply->pad3);
- __GLX_SWAP_INT(&reply->pad4);
- __GLX_SWAP_INT(&reply->pad5);
- __GLX_SWAP_INT(&reply->pad6);
-
- }
-
- WriteToClient(client, sizeof(xGLXVendorPrivReply),(char *)reply);
- if (buf_size > 0)
- WriteToClient(client, buf_size, (char *)buf);
-
-}
-
-int __glXVForwardSingleReq( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *)pc;
- xGLXVendorPrivateReq *be_req;
- __GLXcontext *glxc;
- int from_screen = 0;
- int to_screen = 0;
- int buf_size;
- int s;
-
- glxc = __glXLookupContextByTag(cl, req->contextTag);
- if (!glxc) {
- return 0;
- }
- from_screen = to_screen = glxc->pScreen->myNum;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- pc += sz_xGLXVendorPrivateReq;
- buf_size = (req->length << 2) - sz_xGLXVendorPrivateReq;
-
- /*
- * just forward the request to back-end server(s)
- */
- for (s=from_screen; s<=to_screen; s++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[s];
- Display *dpy = GetBackEndDisplay(cl,s);
-
- LockDisplay(dpy);
- GetReqVendorPrivate(GLXVendorPrivate,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = req->glxCode;
- be_req->length = req->length;
- be_req->vendorCode = req->vendorCode;
- be_req->contextTag = GetCurrentBackEndTag(cl,req->contextTag,s);
- if (buf_size > 0)
- _XSend(dpy, (const char *)pc, buf_size);
- UnlockDisplay(dpy);
- SyncHandle();
- }
-
- return Success;
-}
-
-int __glXVForwardPipe0WithReply( __GLXclientState *cl, GLbyte *pc )
-{
- ClientPtr client = cl->client;
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *)pc;
- xGLXVendorPrivateReq *be_req;
- xGLXVendorPrivReply reply;
- xGLXVendorPrivReply be_reply;
- __GLXcontext *glxc;
- int buf_size;
- char *be_buf;
- int be_buf_size;
- DMXScreenInfo *dmxScreen;
- Display *dpy;
-
- glxc = __glXLookupContextByTag(cl, req->contextTag);
- if (!glxc) {
- return __glXBadContext;
- }
-
- pc += sz_xGLXVendorPrivateReq;
- buf_size = (req->length << 2) - sz_xGLXVendorPrivateReq;
-
- dmxScreen = &dmxScreens[glxc->pScreen->myNum];
- dpy = GetBackEndDisplay(cl, glxc->pScreen->myNum);
-
- /*
- * send the request to the first back-end server
- */
- LockDisplay(dpy);
- GetReqVendorPrivate(GLXVendorPrivate,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = req->glxCode;
- be_req->length = req->length;
- be_req->vendorCode = req->vendorCode;
- be_req->contextTag = GetCurrentBackEndTag(cl,req->contextTag, glxc->pScreen->myNum);
- if (buf_size > 0)
- _XSend(dpy, (const char *)pc, buf_size);
-
- /*
- * get the reply from the back-end server
- */
- _XReply(dpy, (xReply*) &be_reply, 0, False);
- be_buf_size = be_reply.length << 2;
- if (be_buf_size > 0) {
- be_buf = (char *)Xalloc( be_buf_size );
- if (be_buf) {
- _XRead(dpy, be_buf, be_buf_size);
- }
- else {
- /* Throw data on the floor */
- _XEatData(dpy, be_buf_size);
- return BadAlloc;
- }
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- /*
- * send the reply to the client
- */
- memcpy( &reply, &be_reply, sz_xGLXVendorPrivReply );
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
-
- if (client->swapped) {
- SendSwappedReply( client, &reply, be_buf, be_buf_size );
- }
- else {
- WriteToClient(client, sizeof(xGLXVendorPrivReply),(char *)&reply);
- if (be_buf_size > 0)
- WriteToClient(client, be_buf_size, (char *)be_buf);
- }
-
- if (be_buf_size > 0) Xfree(be_buf);
-
- return Success;
-}
-
-int __glXVForwardAllWithReply( __GLXclientState *cl, GLbyte *pc )
-{
- ClientPtr client = cl->client;
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *)pc;
- xGLXVendorPrivateReq *be_req;
- xGLXVendorPrivReply reply;
- xGLXVendorPrivReply be_reply;
- __GLXcontext *glxc;
- int buf_size;
- char *be_buf;
- int be_buf_size;
- int from_screen = 0;
- int to_screen = 0;
- int s;
-
- DMXScreenInfo *dmxScreen;
- Display *dpy;
-
- glxc = __glXLookupContextByTag(cl, req->contextTag);
- if (!glxc) {
- return 0;
- }
- from_screen = to_screen = glxc->pScreen->myNum;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) {
- from_screen = 0;
- to_screen = screenInfo.numScreens - 1;
- }
-#endif
-
- pc += sz_xGLXVendorPrivateReq;
- buf_size = (req->length << 2) - sz_xGLXVendorPrivateReq;
-
- /*
- * send the request to the first back-end server(s)
- */
- for (s=to_screen; s>=from_screen; s--) {
- dmxScreen = &dmxScreens[s];
- dpy = GetBackEndDisplay(cl,s);
-
- LockDisplay(dpy);
- GetReqVendorPrivate(GLXVendorPrivate,be_req);
- be_req->reqType = dmxScreen->glxMajorOpcode;
- be_req->glxCode = req->glxCode;
- be_req->length = req->length;
- be_req->vendorCode = req->vendorCode;
- be_req->contextTag = GetCurrentBackEndTag(cl,req->contextTag,s);
- if (buf_size > 0)
- _XSend(dpy, (const char *)pc, buf_size);
-
- /*
- * get the reply from the back-end server
- */
- _XReply(dpy, (xReply*) &be_reply, 0, False);
- be_buf_size = be_reply.length << 2;
- if (be_buf_size > 0) {
- be_buf = (char *)Xalloc( be_buf_size );
- if (be_buf) {
- _XRead(dpy, be_buf, be_buf_size);
- }
- else {
- /* Throw data on the floor */
- _XEatData(dpy, be_buf_size);
- return BadAlloc;
- }
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- if (s > from_screen && be_buf_size > 0) {
- Xfree(be_buf);
- }
- }
-
- /*
- * send the reply to the client
- */
- memcpy( &reply, &be_reply, sz_xGLXVendorPrivReply );
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
-
- if (client->swapped) {
- SendSwappedReply( client, &reply, be_buf, be_buf_size );
- }
- else {
- WriteToClient(client, sizeof(xGLXVendorPrivReply),(char *)&reply);
- if (be_buf_size > 0)
- WriteToClient(client, be_buf_size, (char *)be_buf);
- }
-
- if (be_buf_size > 0) Xfree(be_buf);
-
- return Success;
-}
-
-int __glXVForwardSingleReqSwap( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->vendorCode);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 0;
-
- return( __glXVForwardSingleReq( cl, pc ) );
-}
-
-int __glXVForwardPipe0WithReplySwap( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->vendorCode);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 0;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXVendorPrivateReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXVendorPrivateReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
- return( __glXVForwardPipe0WithReply( cl, pc ) );
-}
-
-int __glXVForwardPipe0WithReplySwapsv( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->vendorCode);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 2;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXVendorPrivateReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXVendorPrivateReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
- return( __glXVForwardPipe0WithReply( cl, pc ) );
-}
-
-int __glXVForwardPipe0WithReplySwapiv( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->vendorCode);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 4;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXVendorPrivateReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXVendorPrivateReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
- return( __glXVForwardPipe0WithReply( cl, pc ) );
-}
-
-int __glXVForwardPipe0WithReplySwapdv( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->vendorCode);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 8;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXVendorPrivateReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXVendorPrivateReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
- return( __glXVForwardPipe0WithReply( cl, pc ) );
-}
-
-int __glXVForwardAllWithReplySwap( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->vendorCode);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 0;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXVendorPrivateReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXVendorPrivateReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
- return( __glXVForwardAllWithReply( cl, pc ) );
-}
-
-int __glXVForwardAllWithReplySwapsv( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->vendorCode);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 2;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXVendorPrivateReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXVendorPrivateReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
- return( __glXVForwardAllWithReply( cl, pc ) );
-}
-
-int __glXVForwardAllWithReplySwapiv( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->vendorCode);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 4;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXVendorPrivateReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXVendorPrivateReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
- return( __glXVForwardAllWithReply( cl, pc ) );
-}
-
-int __glXVForwardAllWithReplySwapdv( __GLXclientState *cl, GLbyte *pc )
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->vendorCode);
- __GLX_SWAP_INT(&req->contextTag);
-
- swap_vec_element_size = 8;
-
- /*
- * swap extra data in request - assuming all data
- * (if available) are arrays of 4 bytes components !
- */
- if (req->length > sz_xGLXVendorPrivateReq/4) {
- int *data = (int *)(req+1);
- int count = req->length - sz_xGLXVendorPrivateReq/4;
- __GLX_SWAP_INT_ARRAY(data, count );
- }
-
- return( __glXVForwardAllWithReply( cl, pc ) );
-}
-
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvendor.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvendor.h
deleted file mode 100644
index 8245ce102..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvendor.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#ifndef __GLXVENDOR_H
-#define __GLXVENDOR_H
-
-extern int __glXVForwardSingleReq( __GLXclientState *cl, GLbyte *pc );
-extern int __glXVForwardPipe0WithReply( __GLXclientState *cl, GLbyte *pc );
-extern int __glXVForwardAllWithReply( __GLXclientState *cl, GLbyte *pc );
-
-extern int __glXVForwardSingleReqSwap( __GLXclientState *cl, GLbyte *pc );
-
-extern int __glXVForwardPipe0WithReplySwap( __GLXclientState *cl, GLbyte *pc );
-extern int __glXVForwardPipe0WithReplySwapsv( __GLXclientState *cl, GLbyte *pc );
-extern int __glXVForwardPipe0WithReplySwapiv( __GLXclientState *cl, GLbyte *pc );
-extern int __glXVForwardPipe0WithReplySwapdv( __GLXclientState *cl, GLbyte *pc );
-
-extern int __glXVForwardAllWithReplySwap( __GLXclientState *cl, GLbyte *pc );
-extern int __glXVForwardAllWithReplySwapsv( __GLXclientState *cl, GLbyte *pc );
-extern int __glXVForwardAllWithReplySwapiv( __GLXclientState *cl, GLbyte *pc );
-extern int __glXVForwardAllWithReplySwapdv( __GLXclientState *cl, GLbyte *pc );
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvisuals.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvisuals.c
deleted file mode 100644
index c20e9551e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvisuals.c
+++ /dev/null
@@ -1,542 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "glxserver.h"
-#include "glxutil.h"
-#include "dmx_glxvisuals.h"
-
-static int numConfigs = 0;
-static __GLXvisualConfig *visualConfigs = NULL;
-static void **visualPrivates = NULL;
-
-int glxVisualsMatch( __GLXvisualConfig *v1, __GLXvisualConfig *v2 )
-{
- if ( (v1->class == v2->class) &&
- (v1->rgba == v2->rgba) &&
- (v1->redSize == v2->redSize) &&
- (v1->greenSize == v2->greenSize) &&
- (v1->blueSize == v2->blueSize) &&
- (v1->alphaSize == v2->alphaSize) &&
- (v1->redMask == v2->redMask) &&
- (v1->greenMask == v2->greenMask) &&
- (v1->blueMask == v2->blueMask) &&
- (v1->alphaMask == v2->alphaMask) &&
- (v1->accumRedSize == v2->accumRedSize) &&
- (v1->accumGreenSize == v2->accumGreenSize) &&
- (v1->accumBlueSize == v2->accumBlueSize) &&
- (v1->accumAlphaSize == v2->accumAlphaSize) &&
- (v1->doubleBuffer == v2->doubleBuffer) &&
- (v1->stereo == v2->stereo) &&
- (v1->bufferSize == v2->bufferSize) &&
- (v1->depthSize == v2->depthSize) &&
- (v1->stencilSize == v2->stencilSize) &&
- (v1->auxBuffers == v2->auxBuffers) &&
- (v1->level == v2->level) &&
- (v1->visualRating == v2->visualRating) &&
- (v1->transparentPixel == v2->transparentPixel) &&
- (v1->transparentRed == v2->transparentRed) &&
- (v1->transparentGreen == v2->transparentGreen) &&
- (v1->transparentBlue == v2->transparentBlue) &&
- (v1->transparentAlpha == v2->transparentAlpha) &&
- (v1->transparentIndex == v2->transparentIndex) &&
- (v1->multiSampleSize == v2->multiSampleSize) &&
- (v1->nMultiSampleBuffers == v2->nMultiSampleBuffers) &&
- (v1->visualSelectGroup == v2->visualSelectGroup) ) {
-
- return(1);
-
- }
-
- return(0);
-
-}
-
-VisualID glxMatchGLXVisualInConfigList( __GLXvisualConfig *pGlxVisual, __GLXvisualConfig *configs, int nconfigs )
-{
- int i;
-
- for (i=0; i<nconfigs; i++) {
-
- if (glxVisualsMatch( pGlxVisual, &configs[i] )) {
-
- return( configs[i].vid );
-
- }
- }
-
- return(0);
-}
-
-VisualID glxMatchVisualInConfigList( ScreenPtr pScreen, VisualPtr pVisual, __GLXvisualConfig *configs, int nconfigs )
-{
- __GLXscreenInfo *pGlxScreen;
- __GLXvisualConfig *pGlxVisual;
- int i;
-
- /* check that the glx extension has been initialized */
- if ( !__glXActiveScreens )
- return(0);
-
- pGlxScreen = &__glXActiveScreens[pScreen->myNum];
- pGlxVisual = pGlxScreen->pGlxVisual;
-
- /* find the glx visual info for pVisual */
- for (i = 0; i < pGlxScreen->numVisuals; i++, pGlxVisual++) {
- if (pGlxVisual->vid == pVisual->vid) {
- break;
- }
- }
- if (i == pGlxScreen->numVisuals) {
- /*
- * the visual is not supported by glx
- */
- return(0);
- }
-
- return( glxMatchGLXVisualInConfigList(pGlxVisual, configs, nconfigs) );
-}
-
-VisualPtr glxMatchVisual( ScreenPtr pScreen, VisualPtr pVisual, ScreenPtr pMatchScreen )
-{
- __GLXscreenInfo *pGlxScreen2;
- int j;
- VisualID vid;
-
- /* check that the glx extension has been initialized */
- if ( !__glXActiveScreens )
- return NULL;
-
- pGlxScreen2 = &__glXActiveScreens[pMatchScreen->myNum];
-
- vid = glxMatchVisualInConfigList( pScreen, pVisual,
- pGlxScreen2->pGlxVisual,
- pGlxScreen2->numVisuals );
- if (vid) {
- /*
- * find the X visual of the matching glx visual
- */
- for (j=0; j<pMatchScreen->numVisuals; j++) {
- if (vid == pMatchScreen->visuals[j].vid) {
- return( &pMatchScreen->visuals[j] );
- }
- }
- }
-
- return(0);
-}
-
-void glxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs,
- void **privates)
-{
- numConfigs = nconfigs;
- visualConfigs = configs;
- visualPrivates = privates;
-}
-
-static int count_bits(unsigned int n)
-{
- int bits = 0;
-
- while (n > 0) {
- if (n & 1) bits++;
- n >>= 1;
- }
- return bits;
-}
-
-static VisualID FindClosestVisual( VisualPtr pVisual, int rootDepth,
- DepthPtr pdepth, int ndepths,
- VisualPtr pNewVisual, int numNewVisuals)
-{
- int d, v;
- VisualPtr vis;
-
- /*
- * find the first visual with the same or deeper depth
- * of the same class.
- */
- for (d=0; d<ndepths; d++) {
- if (pdepth[d].depth >= rootDepth) {
- for (v=0; v<pdepth[d].numVids; v++) {
-
- /* find the new visual structure */
- vis = pNewVisual;
- while( pdepth[d].vids[v] != vis->vid ) vis++;
-
- if (vis->class == pVisual->class) {
- return( pdepth[d].vids[v] );
- }
- }
- }
- }
-
- /*
- * did not find any.
- * try to look for the same class only.
- */
- for (d=0; d<ndepths; d++) {
- for (v=0; v<pdepth[d].numVids; v++) {
-
- /* find the new visual structure */
- vis = pNewVisual;
- while( pdepth[d].vids[v] != vis->vid ) vis++;
-
- if (vis->class == pVisual->class) {
- return( pdepth[d].vids[v] );
- }
- }
- }
-
- /*
- * if not found - just take the first visual
- */
- return( pdepth[0].vids[0] );
-}
-
-Bool glxInitVisuals(int *nvisualp, VisualPtr *visualp,
- VisualID *defaultVisp,
- int ndepth, DepthPtr pdepth,
- int rootDepth)
-{
- int numRGBconfigs;
- int numCIconfigs;
- int numVisuals = *nvisualp;
- int numNewVisuals;
- int numNewConfigs;
- VisualPtr pVisual = *visualp;
- VisualPtr pVisualNew = NULL;
- VisualID *orig_vid = NULL;
- __GLXvisualConfig *glXVisualPtr = NULL;
- __GLXvisualConfig *pNewVisualConfigs = NULL;
- void **glXVisualPriv;
- dmxGlxVisualPrivate **pNewVisualPriv;
- int found_default;
- int i, j, k;
- int numGLXvis = 0;
- GLint *isGLXvis;
-
- if (numConfigs > 0)
- numNewConfigs = numConfigs;
- else
- return False;
-
- MAXSCREENSALLOC(__glXActiveScreens);
- if (!__glXActiveScreens)
- return False;
-
- /* Alloc space for the list of new GLX visuals */
- pNewVisualConfigs = (__GLXvisualConfig *)
- __glXMalloc(numNewConfigs * sizeof(__GLXvisualConfig));
- if (!pNewVisualConfigs) {
- return FALSE;
- }
-
- /* Alloc space for the list of new GLX visual privates */
- pNewVisualPriv = (dmxGlxVisualPrivate **) __glXMalloc(numNewConfigs * sizeof(dmxGlxVisualPrivate *));
- if (!pNewVisualPriv) {
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* copy driver's visual config info */
- for (i = 0; i < numConfigs; i++) {
- pNewVisualConfigs[i] = visualConfigs[i];
- pNewVisualPriv[i] = (dmxGlxVisualPrivate *)visualPrivates[i];
- }
-
-#if 1
- /* FIXME: This is a hack to workaround a hang in xtest caused by a
- * mismatch between what the front end (i.e., DMX) server calculates
- * for the visual configs and what the back-end servers have.
- */
- {
- int numTCRGBconfigs = 0;
- int numDCRGBconfigs = 0;
-
- numRGBconfigs = 0;
- numCIconfigs = 0;
-
- for (i = 0; i < numNewConfigs; i++) {
- if (pNewVisualConfigs[i].rgba) {
- if (pNewVisualConfigs[i].class == TrueColor)
- numTCRGBconfigs++;
- else
- numDCRGBconfigs++;
- numRGBconfigs++;
- } else
- numCIconfigs++;
- }
-
- /* Count the total number of visuals to compute */
- numNewVisuals = 0;
- for (i = 0; i < numVisuals; i++) {
- numNewVisuals +=
- (pVisual[i].class == TrueColor) ? numTCRGBconfigs :
- (pVisual[i].class == DirectColor) ? numDCRGBconfigs :
- numCIconfigs;
- }
- }
-#else
- /* Count the number of RGB and CI visual configs */
- numRGBconfigs = 0;
- numCIconfigs = 0;
- for (i = 0; i < numNewConfigs; i++) {
- if (pNewVisualConfigs[i].rgba)
- numRGBconfigs++;
- else
- numCIconfigs++;
- }
-
- /* Count the total number of visuals to compute */
- numNewVisuals = 0;
- for (i = 0; i < numVisuals; i++) {
- numNewVisuals +=
- (pVisual[i].class == TrueColor || pVisual[i].class == DirectColor)
- ? numRGBconfigs : numCIconfigs;
- }
-#endif
-
- /* Reset variables for use with the next screen/driver's visual configs */
- visualConfigs = NULL;
- numConfigs = 0;
-
- /* Alloc temp space for the list of orig VisualIDs for each new visual */
- orig_vid = (VisualID *)__glXMalloc(numNewVisuals * sizeof(VisualID));
- if (!orig_vid) {
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Alloc space for the list of glXVisuals */
- glXVisualPtr = (__GLXvisualConfig *)__glXMalloc(numNewVisuals *
- sizeof(__GLXvisualConfig));
- if (!glXVisualPtr) {
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Alloc space for the list of glXVisualPrivates */
- glXVisualPriv = (void **)__glXMalloc(numNewVisuals * sizeof(void *));
- if (!glXVisualPriv) {
- __glXFree(glXVisualPtr);
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- /* Alloc space for the new list of the X server's visuals */
- pVisualNew = (VisualPtr)__glXMalloc(numNewVisuals * sizeof(VisualRec));
- if (!pVisualNew) {
- __glXFree(glXVisualPriv);
- __glXFree(glXVisualPtr);
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- return FALSE;
- }
-
- isGLXvis = (GLint *) __glXMalloc(numNewVisuals * sizeof(GLint));
- if (!isGLXvis) {
- __glXFree(glXVisualPriv);
- __glXFree(glXVisualPtr);
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
- __glXFree(pVisualNew);
- return FALSE;
- }
-
- /* Initialize the new visuals */
- found_default = FALSE;
- for (i = j = 0; i < numVisuals; i++) {
-
- for (k = 0; k < numNewConfigs; k++) {
-
- int new_depth;
- int depth;
- int d,v;
-
- /* find the depth of the new visual config */
- new_depth = pNewVisualPriv[k]->x_visual_depth;
-
- /* find the depth of the original visual */
- depth = 0;
- d = 0;
- while( (depth==0) && (d < ndepth) ) {
- v = 0;
- while( (depth==0) && (v < pdepth[d].numVids) ) {
- if (pdepth[d].vids[v] == pVisual[i].vid) {
- depth = pdepth[d].depth;
- }
- v++;
- }
- d++;
- }
-
- /* check that the visual has the same class and depth
- * as the new config
- */
- if ( pVisual[i].class != pNewVisualPriv[k]->x_visual_class ||
- (depth != new_depth) )
- continue;
-
- /* Initialize the new visual */
- pVisualNew[j] = pVisual[i];
- pVisualNew[j].vid = FakeClientID(0);
-
- /* Check for the default visual */
- if (!found_default && pVisual[i].vid == *defaultVisp) {
- *defaultVisp = pVisualNew[j].vid;
- found_default = TRUE;
- }
-
- /* Save the old VisualID */
- orig_vid[j] = pVisual[i].vid;
-
- /* Initialize the glXVisual */
- glXVisualPtr[j] = pNewVisualConfigs[k];
- glXVisualPtr[j].vid = pVisualNew[j].vid;
-
- /*
- * If the class is -1, then assume the X visual information
- * is identical to what GLX needs, and take them from the X
- * visual. NOTE: if class != -1, then all other fields MUST
- * be initialized.
- */
- if (glXVisualPtr[j].class == -1) {
- glXVisualPtr[j].class = pVisual[i].class;
- glXVisualPtr[j].redSize = count_bits(pVisual[i].redMask);
- glXVisualPtr[j].greenSize = count_bits(pVisual[i].greenMask);
- glXVisualPtr[j].blueSize = count_bits(pVisual[i].blueMask);
- glXVisualPtr[j].alphaSize = glXVisualPtr[j].alphaSize;
- glXVisualPtr[j].redMask = pVisual[i].redMask;
- glXVisualPtr[j].greenMask = pVisual[i].greenMask;
- glXVisualPtr[j].blueMask = pVisual[i].blueMask;
- glXVisualPtr[j].alphaMask = glXVisualPtr[j].alphaMask;
- glXVisualPtr[j].bufferSize = rootDepth;
- }
-
- /* Save the device-dependent private for this visual */
- glXVisualPriv[j] = pNewVisualPriv[k];
-
- isGLXvis[j] = glxMatchGLXVisualInConfigList( &glXVisualPtr[j],
- dmxScreens[screenInfo.numScreens-1].glxVisuals,
- dmxScreens[screenInfo.numScreens-1].numGlxVisuals );
- if (isGLXvis[j]) numGLXvis++;
-
- j++;
- }
- }
-
- assert(j <= numNewVisuals);
- numNewVisuals = j; /* correct number of new visuals */
-
- /* Save the GLX visuals in the screen structure */
- __glXActiveScreens[screenInfo.numScreens-1].numVisuals = numNewVisuals;
- __glXActiveScreens[screenInfo.numScreens-1].numGLXVisuals = numGLXvis;
- __glXActiveScreens[screenInfo.numScreens-1].isGLXvis = isGLXvis;
- __glXActiveScreens[screenInfo.numScreens-1].pGlxVisual = glXVisualPtr;
-
-
- /* Set up depth's VisualIDs */
- for (i = 0; i < ndepth; i++) {
- int numVids = 0;
- VisualID *pVids = NULL;
- int k, n = 0;
-
- /* Count the new number of VisualIDs at this depth */
- for (j = 0; j < pdepth[i].numVids; j++)
- for (k = 0; k < numNewVisuals; k++)
- if (pdepth[i].vids[j] == orig_vid[k])
- numVids++;
-
- /* Allocate a new list of VisualIDs for this depth */
- pVids = (VisualID *)__glXMalloc(numVids * sizeof(VisualID));
-
- /* Initialize the new list of VisualIDs for this depth */
- for (j = 0; j < pdepth[i].numVids; j++)
- for (k = 0; k < numNewVisuals; k++)
- if (pdepth[i].vids[j] == orig_vid[k])
- pVids[n++] = pVisualNew[k].vid;
-
- /* Update this depth's list of VisualIDs */
- __glXFree(pdepth[i].vids);
- pdepth[i].vids = pVids;
- pdepth[i].numVids = numVids;
- }
-
- /*
- * if the default visual was rejected - need to choose new
- * default visual !
- */
- if ( !found_default ) {
-
- for (i=0; i<numVisuals; i++)
- if (pVisual[i].vid == *defaultVisp)
- break;
-
- if (i < numVisuals) {
- *defaultVisp = FindClosestVisual( &pVisual[i], rootDepth, pdepth, ndepth, pVisualNew, numNewVisuals );
- }
- }
-
- /* Update the X server's visuals */
- *nvisualp = numNewVisuals;
- *visualp = pVisualNew;
-
- /* Free the old list of the X server's visuals */
- __glXFree(pVisual);
-
- /* Clean up temporary allocations */
- __glXFree(orig_vid);
- __glXFree(pNewVisualPriv);
- __glXFree(pNewVisualConfigs);
-
- /* Free the private list created by DDX HW driver */
- if (visualPrivates)
- xfree(visualPrivates);
- visualPrivates = NULL;
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvisuals.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvisuals.h
deleted file mode 100644
index 50f9b13e6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/glxvisuals.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#ifndef _GLX_VISUALS_H
-#define _GLX_VISUALS_H
-
-int glxVisualsMatch( __GLXvisualConfig *v1, __GLXvisualConfig *v2 );
-
-VisualID glxMatchGLXVisualInConfigList( __GLXvisualConfig *pGlxVisual, __GLXvisualConfig *configs, int nconfigs );
-
-VisualID glxMatchVisualInConfigList( ScreenPtr pScreen, VisualPtr pVisual, __GLXvisualConfig *configs, int nconfigs );
-
-VisualPtr glxMatchVisual( ScreenPtr pScreen, VisualPtr pVisual, ScreenPtr pMatchScreen );
-
-void glxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs,
- void **privates);
-
-Bool glxInitVisuals(int *nvisualp, VisualPtr *visualp,
- VisualID *defaultVisp,
- int ndepth, DepthPtr pdepth,
- int rootDepth);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/render2swap.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/render2swap.c
deleted file mode 100644
index 3fb894325..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/render2swap.c
+++ /dev/null
@@ -1,348 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/render2swap.c,v 1.5 2001/03/21 16:29:37 dawes Exp $ */
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-/* #define NEED_REPLIES */
-#include "glxserver.h"
-#include "unpack.h"
-#include "g_disptab.h"
-
-GLint __glEvalComputeK(GLenum target)
-{
- switch (target) {
- case GL_MAP1_VERTEX_4:
- case GL_MAP1_COLOR_4:
- case GL_MAP1_TEXTURE_COORD_4:
- case GL_MAP2_VERTEX_4:
- case GL_MAP2_COLOR_4:
- case GL_MAP2_TEXTURE_COORD_4:
- return 4;
- case GL_MAP1_VERTEX_3:
- case GL_MAP1_TEXTURE_COORD_3:
- case GL_MAP1_NORMAL:
- case GL_MAP2_VERTEX_3:
- case GL_MAP2_TEXTURE_COORD_3:
- case GL_MAP2_NORMAL:
- return 3;
- case GL_MAP1_TEXTURE_COORD_2:
- case GL_MAP2_TEXTURE_COORD_2:
- return 2;
- case GL_MAP1_TEXTURE_COORD_1:
- case GL_MAP2_TEXTURE_COORD_1:
- case GL_MAP1_INDEX:
- case GL_MAP2_INDEX:
- return 1;
- default:
- return 0;
- }
-}
-
-void __glXDispSwap_Map1f(GLbyte *pc)
-{
- GLint order, k;
- GLfloat u1, u2, *points;
- GLenum target;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_FLOAT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
-
- target = *(GLenum *)(pc + 0);
- order = *(GLint *)(pc + 12);
- u1 = *(GLfloat *)(pc + 4);
- u2 = *(GLfloat *)(pc + 8);
- points = (GLfloat *)(pc + 16);
- k = __glEvalComputeK(target);
-
- if (order <= 0 || k < 0) {
- /* Erroneous command. */
- compsize = 0;
- } else {
- compsize = order * k;
- }
- __GLX_SWAP_FLOAT_ARRAY(points, compsize);
-
-}
-
-void __glXDispSwap_Map2f(GLbyte *pc)
-{
- GLint uorder, vorder, ustride, vstride, k;
- GLfloat u1, u2, v1, v2, *points;
- GLenum target;
- GLint compsize;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 0);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 24);
- __GLX_SWAP_FLOAT(pc + 4);
- __GLX_SWAP_FLOAT(pc + 8);
- __GLX_SWAP_FLOAT(pc + 16);
- __GLX_SWAP_FLOAT(pc + 20);
-
- target = *(GLenum *)(pc + 0);
- uorder = *(GLint *)(pc + 12);
- vorder = *(GLint *)(pc + 24);
- u1 = *(GLfloat *)(pc + 4);
- u2 = *(GLfloat *)(pc + 8);
- v1 = *(GLfloat *)(pc + 16);
- v2 = *(GLfloat *)(pc + 20);
- points = (GLfloat *)(pc + 28);
-
- k = __glEvalComputeK(target);
- ustride = vorder * k;
- vstride = k;
-
- if (vorder <= 0 || uorder <= 0 || k < 0) {
- /* Erroneous command. */
- compsize = 0;
- } else {
- compsize = uorder * vorder * k;
- }
- __GLX_SWAP_FLOAT_ARRAY(points, compsize);
-
-}
-
-void __glXDispSwap_Map1d(GLbyte *pc)
-{
- GLint order, k, compsize;
- GLenum target;
- GLdouble u1, u2, *points;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_DOUBLE(pc + 0);
- __GLX_SWAP_DOUBLE(pc + 8);
- __GLX_SWAP_INT(pc + 16);
- __GLX_SWAP_INT(pc + 20);
-
- target = *(GLenum*) (pc + 16);
- order = *(GLint*) (pc + 20);
- k = __glEvalComputeK(target);
- if (order <= 0 || k < 0) {
- /* Erroneous command. */
- compsize = 0;
- } else {
- compsize = order * k;
- }
- __GLX_GET_DOUBLE(u1,pc);
- __GLX_GET_DOUBLE(u2,pc+8);
- __GLX_SWAP_DOUBLE_ARRAY(pc+24, compsize);
- pc += 24;
-
-#ifdef __GLX_ALIGN64
- if (((unsigned long)pc) & 7) {
- /*
- ** Copy the doubles up 4 bytes, trashing the command but aligning
- ** the data in the process
- */
- __GLX_MEM_COPY(pc-4, pc, compsize*8);
- points = (GLdouble*) (pc - 4);
- } else {
- points = (GLdouble*) pc;
- }
-#else
- points = (GLdouble*) pc;
-#endif
-}
-
-void __glXDispSwap_Map2d(GLbyte *pc)
-{
- GLdouble u1, u2, v1, v2, *points;
- GLint uorder, vorder, ustride, vstride, k, compsize;
- GLenum target;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_DOUBLE(pc + 0);
- __GLX_SWAP_DOUBLE(pc + 8);
- __GLX_SWAP_DOUBLE(pc + 16);
- __GLX_SWAP_DOUBLE(pc + 24);
- __GLX_SWAP_INT(pc + 32);
- __GLX_SWAP_INT(pc + 36);
- __GLX_SWAP_INT(pc + 40);
-
- target = *(GLenum *)(pc + 32);
- uorder = *(GLint *)(pc + 36);
- vorder = *(GLint *)(pc + 40);
- k = __glEvalComputeK(target);
- if (vorder <= 0 || uorder <= 0 || k < 0) {
- /* Erroneous command. */
- compsize = 0;
- } else {
- compsize = uorder * vorder * k;
- }
- __GLX_GET_DOUBLE(u1,pc);
- __GLX_GET_DOUBLE(u2,pc+8);
- __GLX_GET_DOUBLE(v1,pc+16);
- __GLX_GET_DOUBLE(v2,pc+24);
- __GLX_SWAP_DOUBLE_ARRAY(pc+44, compsize);
- pc += 44;
- ustride = vorder * k;
- vstride = k;
-
-#ifdef __GLX_ALIGN64
- if (((unsigned long)pc) & 7) {
- /*
- ** Copy the doubles up 4 bytes, trashing the command but aligning
- ** the data in the process
- */
- __GLX_MEM_COPY(pc-4, pc, compsize*8);
- points = (GLdouble*) (pc - 4);
- } else {
- points = (GLdouble*) pc;
- }
-#else
- points = (GLdouble*) pc;
-#endif
-}
-
-void __glXDispSwap_CallLists(GLbyte *pc)
-{
- GLenum type;
- GLsizei n;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 0);
- type = *(GLenum *)(pc + 4);
- n = *(GLsizei *)(pc + 0);
-
- switch (type) {
- case GL_BYTE:
- case GL_UNSIGNED_BYTE:
- case GL_2_BYTES:
- case GL_3_BYTES:
- case GL_4_BYTES:
- break;
- case GL_SHORT:
- case GL_UNSIGNED_SHORT:
- __GLX_SWAP_SHORT_ARRAY(pc+8, n);
- break;
- case GL_INT:
- case GL_UNSIGNED_INT:
- __GLX_SWAP_INT_ARRAY(pc+8, n);
- break;
- case GL_FLOAT:
- __GLX_SWAP_FLOAT_ARRAY(pc+8, n);
- break;
- }
-
-}
-
-static void swapArray(GLint numVals, GLenum datatype,
- GLint stride, GLint numVertexes, GLbyte *pc)
-{
- int i,j;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- switch (datatype) {
- case GL_BYTE:
- case GL_UNSIGNED_BYTE:
- /* don't need to swap */
- return;
- case GL_SHORT:
- case GL_UNSIGNED_SHORT:
- for (i=0; i<numVertexes; i++) {
- GLshort *pVal = (GLshort *) pc;
- for (j=0; j<numVals; j++) {
- __GLX_SWAP_SHORT(&pVal[j]);
- }
- pc += stride;
- }
- break;
- case GL_INT:
- case GL_UNSIGNED_INT:
- for (i=0; i<numVertexes; i++) {
- GLint *pVal = (GLint *) pc;
- for (j=0; j<numVals; j++) {
- __GLX_SWAP_INT(&pVal[j]);
- }
- pc += stride;
- }
- break;
- case GL_FLOAT:
- for (i=0; i<numVertexes; i++) {
- GLfloat *pVal = (GLfloat *) pc;
- for (j=0; j<numVals; j++) {
- __GLX_SWAP_FLOAT(&pVal[j]);
- }
- pc += stride;
- }
- break;
- case GL_DOUBLE:
- for (i=0; i<numVertexes; i++) {
- GLdouble *pVal = (GLdouble *) pc;
- for (j=0; j<numVals; j++) {
- __GLX_SWAP_DOUBLE(&pVal[j]);
- }
- pc += stride;
- }
- break;
- default:
- return;
- }
-}
-
-void __glXDispSwap_DrawArrays(GLbyte *pc)
-{
- __GLXdispatchDrawArraysHeader *hdr = (__GLXdispatchDrawArraysHeader *)pc;
- __GLXdispatchDrawArraysComponentHeader *compHeader;
- int i;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT(&hdr->numVertexes);
- __GLX_SWAP_INT(&hdr->numComponents);
- __GLX_SWAP_INT(&hdr->primType);
-
- pc += sizeof(__GLXdispatchDrawArraysHeader);
- compHeader = (__GLXdispatchDrawArraysComponentHeader *) pc;
-
- /* compute stride (same for all component arrays) */
- for (i=0; i<hdr->numComponents; i++) {
- __GLX_SWAP_INT(&compHeader[i].datatype);
- __GLX_SWAP_INT(&compHeader[i].numVals);
- __GLX_SWAP_INT(&compHeader[i].component);
-
- }
-
-}
-
-void __glXDispSwap_DrawArraysEXT(GLbyte *pc)
-{
-#ifdef XXX_STUB
-#endif /*XXX_STUB*/
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/renderpixswap.c b/nx-X11/programs/Xserver/hw/dmx/glxProxy/renderpixswap.c
deleted file mode 100644
index bedefe781..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/renderpixswap.c
+++ /dev/null
@@ -1,390 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/renderpixswap.c,v 1.5 2001/03/21 16:29:37 dawes Exp $ */
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#define NEED_REPLIES
-#include "glxserver.h"
-#include "unpack.h"
-#include "g_disptab.h"
-
-void __glXDispSwap_PolygonStipple(GLbyte *pc)
-{
- __GLXpixelHeader *hdr = (__GLXpixelHeader *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- hdr->swapBytes = !hdr->swapBytes;
-}
-
-void __glXDispSwap_Bitmap(GLbyte *pc)
-{
- __GLXdispatchBitmapHeader *hdr = (__GLXdispatchBitmapHeader *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->width);
- __GLX_SWAP_INT((GLbyte *)&hdr->height);
- __GLX_SWAP_FLOAT((GLbyte *)&hdr->xorig);
- __GLX_SWAP_FLOAT((GLbyte *)&hdr->yorig);
- __GLX_SWAP_FLOAT((GLbyte *)&hdr->xmove);
- __GLX_SWAP_FLOAT((GLbyte *)&hdr->ymove);
-
- hdr->swapBytes = !hdr->swapBytes;
-
-}
-
-void __glXDispSwap_TexImage1D(GLbyte *pc)
-{
- __GLXdispatchTexImageHeader *hdr = (__GLXdispatchTexImageHeader *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->target);
- __GLX_SWAP_INT((GLbyte *)&hdr->level);
- __GLX_SWAP_INT((GLbyte *)&hdr->components);
- __GLX_SWAP_INT((GLbyte *)&hdr->width);
- __GLX_SWAP_INT((GLbyte *)&hdr->height);
- __GLX_SWAP_INT((GLbyte *)&hdr->border);
- __GLX_SWAP_INT((GLbyte *)&hdr->format);
- __GLX_SWAP_INT((GLbyte *)&hdr->type);
-
- /*
- ** Just invert swapBytes flag; the GL will figure out if it needs to swap
- ** the pixel data.
- */
- hdr->swapBytes = !hdr->swapBytes;
-}
-
-void __glXDispSwap_TexImage2D(GLbyte *pc)
-{
- __GLXdispatchTexImageHeader *hdr = (__GLXdispatchTexImageHeader *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->target);
- __GLX_SWAP_INT((GLbyte *)&hdr->level);
- __GLX_SWAP_INT((GLbyte *)&hdr->components);
- __GLX_SWAP_INT((GLbyte *)&hdr->width);
- __GLX_SWAP_INT((GLbyte *)&hdr->height);
- __GLX_SWAP_INT((GLbyte *)&hdr->border);
- __GLX_SWAP_INT((GLbyte *)&hdr->format);
- __GLX_SWAP_INT((GLbyte *)&hdr->type);
-
- /*
- ** Just invert swapBytes flag; the GL will figure out if it needs to swap
- ** the pixel data.
- */
- hdr->swapBytes = !hdr->swapBytes;
-}
-
-void __glXDispSwap_TexImage3D(GLbyte *pc)
-{
- __GLXdispatchTexImage3DHeader *hdr = (__GLXdispatchTexImage3DHeader *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->imageHeight);
- __GLX_SWAP_INT((GLbyte *)&hdr->imageDepth);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipImages);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipVolumes);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->target);
- __GLX_SWAP_INT((GLbyte *)&hdr->level);
- __GLX_SWAP_INT((GLbyte *)&hdr->internalformat);
- __GLX_SWAP_INT((GLbyte *)&hdr->width);
- __GLX_SWAP_INT((GLbyte *)&hdr->height);
- __GLX_SWAP_INT((GLbyte *)&hdr->depth);
- __GLX_SWAP_INT((GLbyte *)&hdr->size4d);
- __GLX_SWAP_INT((GLbyte *)&hdr->border);
- __GLX_SWAP_INT((GLbyte *)&hdr->format);
- __GLX_SWAP_INT((GLbyte *)&hdr->type);
-
- /*
- ** Just invert swapBytes flag; the GL will figure out if it needs to swap
- ** the pixel data.
- */
- hdr->swapBytes = !hdr->swapBytes;
-}
-
-void __glXDispSwap_DrawPixels(GLbyte *pc)
-{
- __GLXdispatchDrawPixelsHeader *hdr = (__GLXdispatchDrawPixelsHeader *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->width);
- __GLX_SWAP_INT((GLbyte *)&hdr->height);
- __GLX_SWAP_INT((GLbyte *)&hdr->format);
- __GLX_SWAP_INT((GLbyte *)&hdr->type);
-
- /*
- ** Just invert swapBytes flag; the GL will figure out if it needs to swap
- ** the pixel data.
- */
- hdr->swapBytes = !hdr->swapBytes;
-}
-
-void __glXDispSwap_TexSubImage1D(GLbyte *pc)
-{
- __GLXdispatchTexSubImageHeader *hdr = (__GLXdispatchTexSubImageHeader *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->target);
- __GLX_SWAP_INT((GLbyte *)&hdr->level);
- __GLX_SWAP_INT((GLbyte *)&hdr->xoffset);
- __GLX_SWAP_INT((GLbyte *)&hdr->width);
- __GLX_SWAP_INT((GLbyte *)&hdr->format);
- __GLX_SWAP_INT((GLbyte *)&hdr->type);
-
- /*
- ** Just invert swapBytes flag; the GL will figure out if it needs to swap
- ** the pixel data.
- */
- hdr->swapBytes = !hdr->swapBytes;
-}
-
-void __glXDispSwap_TexSubImage2D(GLbyte *pc)
-{
- __GLXdispatchTexSubImageHeader *hdr = (__GLXdispatchTexSubImageHeader *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->target);
- __GLX_SWAP_INT((GLbyte *)&hdr->level);
- __GLX_SWAP_INT((GLbyte *)&hdr->xoffset);
- __GLX_SWAP_INT((GLbyte *)&hdr->yoffset);
- __GLX_SWAP_INT((GLbyte *)&hdr->width);
- __GLX_SWAP_INT((GLbyte *)&hdr->height);
- __GLX_SWAP_INT((GLbyte *)&hdr->format);
- __GLX_SWAP_INT((GLbyte *)&hdr->type);
-
- /*
- ** Just invert swapBytes flag; the GL will figure out if it needs to swap
- ** the pixel data.
- */
- hdr->swapBytes = !hdr->swapBytes;
-}
-
-void __glXDispSwap_TexSubImage3D(GLbyte *pc)
-{
- __GLXdispatchTexSubImage3DHeader *hdr =
- (__GLXdispatchTexSubImage3DHeader *) pc;
-
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->imageHeight);
- __GLX_SWAP_INT((GLbyte *)&hdr->imageDepth);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipImages);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipVolumes);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->target);
- __GLX_SWAP_INT((GLbyte *)&hdr->level);
- __GLX_SWAP_INT((GLbyte *)&hdr->xoffset);
- __GLX_SWAP_INT((GLbyte *)&hdr->yoffset);
- __GLX_SWAP_INT((GLbyte *)&hdr->zoffset);
- __GLX_SWAP_INT((GLbyte *)&hdr->width);
- __GLX_SWAP_INT((GLbyte *)&hdr->height);
- __GLX_SWAP_INT((GLbyte *)&hdr->depth);
- __GLX_SWAP_INT((GLbyte *)&hdr->size4d);
- __GLX_SWAP_INT((GLbyte *)&hdr->format);
- __GLX_SWAP_INT((GLbyte *)&hdr->type);
-
- /*
- ** Just invert swapBytes flag; the GL will figure out if it needs to swap
- ** the pixel data.
- */
- hdr->swapBytes = !hdr->swapBytes;
-}
-
-void __glXDispSwap_ColorTable(GLbyte *pc)
-{
- __GLXdispatchColorTableHeader *hdr =
- (__GLXdispatchColorTableHeader *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->target);
- __GLX_SWAP_INT((GLbyte *)&hdr->internalformat);
- __GLX_SWAP_INT((GLbyte *)&hdr->width);
- __GLX_SWAP_INT((GLbyte *)&hdr->format);
- __GLX_SWAP_INT((GLbyte *)&hdr->type);
-
- /*
- ** Just invert swapBytes flag; the GL will figure out if it needs to swap
- ** the pixel data.
- */
- hdr->swapBytes = !hdr->swapBytes;
-}
-
-void __glXDispSwap_ColorSubTable(GLbyte *pc)
-{
- __GLXdispatchColorSubTableHeader *hdr =
- (__GLXdispatchColorSubTableHeader *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->target);
- __GLX_SWAP_INT((GLbyte *)&hdr->start);
- __GLX_SWAP_INT((GLbyte *)&hdr->count);
- __GLX_SWAP_INT((GLbyte *)&hdr->format);
- __GLX_SWAP_INT((GLbyte *)&hdr->type);
-
- /*
- ** Just invert swapBytes flag; the GL will figure out if it needs to swap
- ** the pixel data.
- */
- hdr->swapBytes = !hdr->swapBytes;
-}
-
-void __glXDispSwap_ConvolutionFilter1D(GLbyte *pc)
-{
- __GLXdispatchConvolutionFilterHeader *hdr =
- (__GLXdispatchConvolutionFilterHeader *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->target);
- __GLX_SWAP_INT((GLbyte *)&hdr->internalformat);
- __GLX_SWAP_INT((GLbyte *)&hdr->width);
- __GLX_SWAP_INT((GLbyte *)&hdr->format);
- __GLX_SWAP_INT((GLbyte *)&hdr->type);
-
- /*
- ** Just invert swapBytes flag; the GL will figure out if it needs to swap
- ** the pixel data.
- */
- hdr->swapBytes = !hdr->swapBytes;
-}
-
-void __glXDispSwap_ConvolutionFilter2D(GLbyte *pc)
-{
- __GLXdispatchConvolutionFilterHeader *hdr =
- (__GLXdispatchConvolutionFilterHeader *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->target);
- __GLX_SWAP_INT((GLbyte *)&hdr->internalformat);
- __GLX_SWAP_INT((GLbyte *)&hdr->width);
- __GLX_SWAP_INT((GLbyte *)&hdr->height);
- __GLX_SWAP_INT((GLbyte *)&hdr->format);
- __GLX_SWAP_INT((GLbyte *)&hdr->type);
-
- /*
- ** Just invert swapBytes flag; the GL will figure out if it needs to swap
- ** the pixel data.
- */
- hdr->swapBytes = !hdr->swapBytes;
-}
-
-void __glXDispSwap_SeparableFilter2D(GLbyte *pc)
-{
- __GLXdispatchConvolutionFilterHeader *hdr =
- (__GLXdispatchConvolutionFilterHeader *) pc;
- GLint hdrlen, image1len;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- hdrlen = __GLX_PAD(__GLX_CONV_FILT_CMD_HDR_SIZE);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->rowLength);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipRows);
- __GLX_SWAP_INT((GLbyte *)&hdr->skipPixels);
- __GLX_SWAP_INT((GLbyte *)&hdr->alignment);
-
- __GLX_SWAP_INT((GLbyte *)&hdr->target);
- __GLX_SWAP_INT((GLbyte *)&hdr->internalformat);
- __GLX_SWAP_INT((GLbyte *)&hdr->width);
- __GLX_SWAP_INT((GLbyte *)&hdr->height);
- __GLX_SWAP_INT((GLbyte *)&hdr->format);
- __GLX_SWAP_INT((GLbyte *)&hdr->type);
-
- /*
- ** Just invert swapBytes flag; the GL will figure out if it needs to swap
- ** the pixel data.
- */
- hdr->swapBytes = !hdr->swapBytes;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/glxProxy/unpack.h b/nx-X11/programs/Xserver/hw/dmx/glxProxy/unpack.h
deleted file mode 100644
index abad7b147..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/glxProxy/unpack.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/unpack.h,v 1.3 2001/03/21 16:29:37 dawes Exp $ */
-#ifndef __GLX_unpack_h__
-#define __GLX_unpack_h__
-
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-
-#define __GLX_PAD(s) (((s)+3) & (GLuint)~3)
-
-/*
-** Fetch the context-id out of a SingleReq request pointed to by pc.
-*/
-#define __GLX_GET_SINGLE_CONTEXT_TAG(pc) (((xGLXSingleReq*)pc)->contextTag)
-#define __GLX_GET_VENDPRIV_CONTEXT_TAG(pc) (((xGLXVendorPrivateReq*)pc)->contextTag)
-
-/*
-** Fetch a double from potentially unaligned memory.
-*/
-#ifdef __GLX_ALIGN64
-#define __GLX_MEM_COPY(dst,src,n) memcpy(dst,src,n)
-#define __GLX_GET_DOUBLE(dst,src) __GLX_MEM_COPY(&dst,src,8)
-#else
-#define __GLX_GET_DOUBLE(dst,src) (dst) = *((GLdouble*)(src))
-#endif
-
-extern void __glXMemInit(void);
-
-extern xGLXSingleReply __glXReply;
-
-#define __GLX_BEGIN_REPLY(size) \
- __glXReply.length = __GLX_PAD(size) >> 2; \
- __glXReply.type = X_Reply; \
- __glXReply.sequenceNumber = client->sequence;
-
-#define __GLX_SEND_HEADER() \
- WriteToClient( client, sz_xGLXSingleReply, (char *)&__glXReply);
-
-#define __GLX_PUT_RETVAL(a) \
- __glXReply.retval = (a);
-
-#define __GLX_PUT_SIZE(a) \
- __glXReply.size = (a);
-
-#define __GLX_PUT_RENDERMODE(m) \
- __glXReply.pad3 = (m)
-
-/*
-** Get a buffer to hold returned data, with the given alignment. If we have
-** to realloc, allocate size+align, in case the pointer has to be bumped for
-** alignment. The answerBuffer should already be aligned.
-**
-** NOTE: the cast (long)res below assumes a long is large enough to hold a
-** pointer.
-*/
-#define __GLX_GET_ANSWER_BUFFER(res,cl,size,align) \
- if ((size) > sizeof(answerBuffer)) { \
- int bump; \
- if ((cl)->returnBufSize < (size)+(align)) { \
- (cl)->returnBuf = (GLbyte*)Xrealloc((cl)->returnBuf, \
- (size)+(align)); \
- if (!(cl)->returnBuf) { \
- return BadAlloc; \
- } \
- (cl)->returnBufSize = (size)+(align); \
- } \
- res = (char*)cl->returnBuf; \
- bump = (long)(res) % (align); \
- if (bump) res += (align) - (bump); \
- } else { \
- res = (char *)answerBuffer; \
- }
-
-#define __GLX_PUT_BYTE() \
- *(GLbyte *)&__glXReply.pad3 = *(GLbyte *)answer
-
-#define __GLX_PUT_SHORT() \
- *(GLshort *)&__glXReply.pad3 = *(GLshort *)answer
-
-#define __GLX_PUT_INT() \
- *(GLint *)&__glXReply.pad3 = *(GLint *)answer
-
-#define __GLX_PUT_FLOAT() \
- *(GLfloat *)&__glXReply.pad3 = *(GLfloat *)answer
-
-#define __GLX_PUT_DOUBLE() \
- *(GLdouble *)&__glXReply.pad3 = *(GLdouble *)answer
-
-#define __GLX_SEND_BYTE_ARRAY(len) \
- WriteToClient(client, __GLX_PAD((len)*__GLX_SIZE_INT8), (char *)answer)
-
-#define __GLX_SEND_SHORT_ARRAY(len) \
- WriteToClient(client, __GLX_PAD((len)*__GLX_SIZE_INT16), (char *)answer)
-
-#define __GLX_SEND_INT_ARRAY(len) \
- WriteToClient(client, (len)*__GLX_SIZE_INT32, (char *)answer)
-
-#define __GLX_SEND_FLOAT_ARRAY(len) \
- WriteToClient(client, (len)*__GLX_SIZE_FLOAT32, (char *)answer)
-
-#define __GLX_SEND_DOUBLE_ARRAY(len) \
- WriteToClient(client, (len)*__GLX_SIZE_FLOAT64, (char *)answer)
-
-
-#define __GLX_SEND_VOID_ARRAY(len) __GLX_SEND_BYTE_ARRAY(len)
-#define __GLX_SEND_UBYTE_ARRAY(len) __GLX_SEND_BYTE_ARRAY(len)
-#define __GLX_SEND_USHORT_ARRAY(len) __GLX_SEND_SHORT_ARRAY(len)
-#define __GLX_SEND_UINT_ARRAY(len) __GLX_SEND_INT_ARRAY(len)
-
-/*
-** PERFORMANCE NOTE:
-** Machine dependent optimizations abound here; these swapping macros can
-** conceivably be replaced with routines that do the job faster.
-*/
-#define __GLX_DECLARE_SWAP_VARIABLES \
- GLbyte sw; \
- GLbyte *swapPC; \
- GLbyte *swapEnd
-
-
-#define __GLX_SWAP_INT(pc) \
- sw = ((GLbyte *)(pc))[0]; \
- ((GLbyte *)(pc))[0] = ((GLbyte *)(pc))[3]; \
- ((GLbyte *)(pc))[3] = sw; \
- sw = ((GLbyte *)(pc))[1]; \
- ((GLbyte *)(pc))[1] = ((GLbyte *)(pc))[2]; \
- ((GLbyte *)(pc))[2] = sw;
-
-#define __GLX_SWAP_SHORT(pc) \
- sw = ((GLbyte *)(pc))[0]; \
- ((GLbyte *)(pc))[0] = ((GLbyte *)(pc))[1]; \
- ((GLbyte *)(pc))[1] = sw;
-
-#define __GLX_SWAP_DOUBLE(pc) \
- sw = ((GLbyte *)(pc))[0]; \
- ((GLbyte *)(pc))[0] = ((GLbyte *)(pc))[7]; \
- ((GLbyte *)(pc))[7] = sw; \
- sw = ((GLbyte *)(pc))[1]; \
- ((GLbyte *)(pc))[1] = ((GLbyte *)(pc))[6]; \
- ((GLbyte *)(pc))[6] = sw; \
- sw = ((GLbyte *)(pc))[2]; \
- ((GLbyte *)(pc))[2] = ((GLbyte *)(pc))[5]; \
- ((GLbyte *)(pc))[5] = sw; \
- sw = ((GLbyte *)(pc))[3]; \
- ((GLbyte *)(pc))[3] = ((GLbyte *)(pc))[4]; \
- ((GLbyte *)(pc))[4] = sw;
-
-#define __GLX_SWAP_FLOAT(pc) \
- sw = ((GLbyte *)(pc))[0]; \
- ((GLbyte *)(pc))[0] = ((GLbyte *)(pc))[3]; \
- ((GLbyte *)(pc))[3] = sw; \
- sw = ((GLbyte *)(pc))[1]; \
- ((GLbyte *)(pc))[1] = ((GLbyte *)(pc))[2]; \
- ((GLbyte *)(pc))[2] = sw;
-
-#define __GLX_SWAP_INT_ARRAY(pc, count) \
- swapPC = ((GLbyte *)(pc)); \
- swapEnd = ((GLbyte *)(pc)) + (count)*__GLX_SIZE_INT32;\
- while (swapPC < swapEnd) { \
- __GLX_SWAP_INT(swapPC); \
- swapPC += __GLX_SIZE_INT32; \
- }
-
-#define __GLX_SWAP_SHORT_ARRAY(pc, count) \
- swapPC = ((GLbyte *)(pc)); \
- swapEnd = ((GLbyte *)(pc)) + (count)*__GLX_SIZE_INT16;\
- while (swapPC < swapEnd) { \
- __GLX_SWAP_SHORT(swapPC); \
- swapPC += __GLX_SIZE_INT16; \
- }
-
-#define __GLX_SWAP_DOUBLE_ARRAY(pc, count) \
- swapPC = ((GLbyte *)(pc)); \
- swapEnd = ((GLbyte *)(pc)) + (count)*__GLX_SIZE_FLOAT64;\
- while (swapPC < swapEnd) { \
- __GLX_SWAP_DOUBLE(swapPC); \
- swapPC += __GLX_SIZE_FLOAT64; \
- }
-
-#define __GLX_SWAP_FLOAT_ARRAY(pc, count) \
- swapPC = ((GLbyte *)(pc)); \
- swapEnd = ((GLbyte *)(pc)) + (count)*__GLX_SIZE_FLOAT32;\
- while (swapPC < swapEnd) { \
- __GLX_SWAP_FLOAT(swapPC); \
- swapPC += __GLX_SIZE_FLOAT32; \
- }
-
-#define __GLX_SWAP_REPLY_HEADER() \
- __GLX_SWAP_SHORT(&__glXReply.sequenceNumber); \
- __GLX_SWAP_INT(&__glXReply.length);
-
-#define __GLX_SWAP_REPLY_RETVAL() \
- __GLX_SWAP_INT(&__glXReply.retval)
-
-#define __GLX_SWAP_REPLY_SIZE() \
- __GLX_SWAP_INT(&__glXReply.size)
-
-#endif /* !__GLX_unpack_h__ */
-
-
-
-
-
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/ChkNotMaskEv.c b/nx-X11/programs/Xserver/hw/dmx/input/ChkNotMaskEv.c
deleted file mode 100644
index 220e1de39..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/ChkNotMaskEv.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Derived from Xorg: ChkMaskEv.c,v 1.4 2001/02/09 02:03:31 xorgcvs Exp */
-/*
- * Copyright 1985, 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.
- */
-/* $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.
- */
-
-/** \file
- * This file provides a #XCheckNotMaskEvent function that is derived
- * from the standard Xlib XCheckMaskEvent function. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#define NEED_EVENTS
-#include "dmx.h"
-#include "ChkNotMaskEv.h"
-
-extern long const _Xevent_to_mask[];
-
-/** Check existing events in queue to find if any match. If so, return.
- * If not, flush buffer and see if any more events are readable. If one
- * matches, return. If all else fails, tell the user no events found.
- */
-Bool XCheckNotMaskEvent (Display *dpy, long mask, XEvent *event)
-{
- register _XQEvent *prev, *qelt;
- unsigned long qe_serial = 0;
- int n; /* time through count */
-
- LockDisplay(dpy);
- prev = NULL;
- for (n = 3; --n >= 0;) {
- for (qelt = prev ? prev->next : dpy->head;
- qelt;
- prev = qelt, qelt = qelt->next) {
- if (qelt->event.type >= LASTEvent
- || !(_Xevent_to_mask[qelt->event.type] & mask)) {
- *event = qelt->event;
- _XDeq(dpy, prev, qelt);
- UnlockDisplay(dpy);
- return True;
- }
- }
- if (prev)
- qe_serial = prev->qserial_num;
- switch (n) {
- case 2:
- _XEventsQueued(dpy, QueuedAfterReading);
- break;
- case 1:
- _XFlush(dpy);
- break;
- }
- if (prev && prev->qserial_num != qe_serial)
- /* another thread has snatched this event */
- prev = NULL;
- }
- UnlockDisplay(dpy);
- return False;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/ChkNotMaskEv.h b/nx-X11/programs/Xserver/hw/dmx/input/ChkNotMaskEv.h
deleted file mode 100644
index 777d3a28a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/ChkNotMaskEv.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface for #XCheckNotMaskEvent function. \see ChkNotMaskEv.c */
-
-#ifndef _CHKNOTMASKEV_H_
-#define _CHKNOTMASKEV_H_
-extern Bool XCheckNotMaskEvent (Display *dpy, long mask, XEvent *event);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/Imakefile b/nx-X11/programs/Xserver/hw/dmx/input/Imakefile
deleted file mode 100644
index 65e298ec2..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/Imakefile
+++ /dev/null
@@ -1,46 +0,0 @@
-XCOMM $XFree86$
-
-#include <Server.tmpl>
-#include <lnxdoc.rules>
-
-#ifdef __linux__
-RAWSRCS = lnx-keyboard.c lnx-ms.c lnx-ps2.c
-RAWOBJS = lnx-keyboard.o lnx-ms.o lnx-ps2.o
-#endif
-
-#ifdef __linux__
-USBSRCS = usb-keyboard.c usb-mouse.c usb-other.c usb-common.c
-USBOBJS = usb-keyboard.o usb-mouse.o usb-other.o usb-common.o
-#endif
-
-DRVSRCS = dmxdummy.c dmxbackend.c dmxconsole.c dmxcommon.c
-DRVOBJS = dmxdummy.o dmxbackend.o dmxconsole.o dmxcommon.o
-
-DMXSRCS = dmxinputinit.c dmxarg.c dmxsigio.c dmxevents.c \
- dmxxinput.c dmxmotion.c dmxeq.c dmxmap.c
-DMXOBJS = dmxinputinit.o dmxarg.o dmxsigio.o dmxevents.o \
- dmxxinput.o dmxmotion.o dmxeq.o dmxmap.o
-
-LIBSRCS = ChkNotMaskEv.c
-LIBOBJS = ChkNotMaskEv.o
-
-SRCS = $(RAWSRCS) $(USBSRCS) $(DRVSRCS) $(DMXSRCS) $(LIBSRCS)
-OBJS = $(RAWOBJS) $(USBOBJS) $(DRVOBJS) $(DMXOBJS) $(LIBOBJS)
-
-#include <dmx.cf>
-
-INCLUDES = -I. -I.. -I$(XBUILDINCDIR) -I$(FONTINCSRC) -I../../../mi \
- -I../../../include -I../../../render -I$(EXTINCSRC) \
- -I$(SERVERSRC)/Xext -I$(SERVERSRC)/Xi
-
-DEFINES = $(OS_DEFINES) $(EXT_DEFINES) $(DMX_DEFINES)
-
-all:: $(OBJS)
-
-LinkSourceFile(atKeynames.h,$(XF86COMSRC))
-LinkSourceFile(xf86Keymap.h,$(XF86COMSRC))
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(dmxinput,$(OBJS))
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxarg.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxarg.c
deleted file mode 100644
index 8708fa009..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxarg.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Generic comma-delimited argument processing. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#define DMX_ARG_TEST 0
-
-#include "dmx.h"
-#include "dmxarg.h"
-#include <stdio.h>
-#include <string.h>
-
-#if DMX_ARG_TEST
-#include <stdlib.h>
-#endif
-
-/** Stores the parsed argument list. */
-struct _dmxArg {
- int argc; /**< Number of arguments in argv */
- int argm; /**< Maximum number of arguments store-able in argv */
- const char **argv; /**< Arguments */
-};
-
-/** Create an (externally opaque) \a dmxArg object. */
-dmxArg dmxArgCreate(void)
-{
- dmxArg a = malloc(sizeof(*a));
- a->argc = 0;
- a->argm = 2;
- a->argv = malloc(a->argm * sizeof(*a->argv));
- a->argv[0] = NULL;
- return a;
-}
-
-/** Free the specified \a dmxArg object. */
-void dmxArgFree(dmxArg a)
-{
- int i;
-
- for (i = 0; i < a->argc; i++) free((char *)a->argv[i]);
- free(a->argv);
- free(a);
-}
-
-/** Add the \a string as the next argument in the \a dmxArg object. */
-void dmxArgAdd(dmxArg a, const char *string)
-{
- if (a->argm <= a->argc + 2)
- a->argv = realloc(a->argv, sizeof(*a->argv) * (a->argm *= 2));
- a->argv[a->argc++] = strdup(string);
- a->argv[a->argc] = NULL;
-}
-
-/** Return the argument number \a item in the \a dmxArg object.
- * Arguments are 0 based. NULL will be returned for values less than 0
- * or equal to or greater than the number of arguments in the object. */
-const char *dmxArgV(dmxArg a, int item)
-{
- if (item < 0 || item >= a->argc) return NULL;
- return a->argv[item];
-}
-
-/** Return the number of arguments in the \a dmxArg object. */
-int dmxArgC(dmxArg a)
-{
- return a->argc;
-}
-
-/** Parse a string into arguments delimited by commas. Return a new \a
- * dmxArg object containing the arguments. */
-dmxArg dmxArgParse(const char *string)
-{
- char *tmp;
- char *start, *pt;
- dmxArg a = dmxArgCreate();
- int done;
- int len;
-
- if (!string) return a;
-
- len = strlen(string) + 2;
- tmp = malloc(len);
- strncpy(tmp, string, len);
-
- for (start = pt = tmp, done = 0; !done && *pt; start = ++pt) {
- for (;*pt && *pt != ','; pt++);
- if (!*pt) done = 1;
- *pt = '\0';
- dmxArgAdd(a, start);
- }
- if (!done) dmxArgAdd(a, ""); /* Final comma */
-
- free(tmp);
- return a;
-}
-
-#if DMX_ARG_TEST
-static void dmxArgPrint(dmxArg a)
-{
- int i;
-
- printf(" argc = %d\n", dmxArgC(a));
- for (i = 0; i < dmxArgC(a); i++)
- printf(" argv[%d] = \"%s\"\n", i, dmxArgV(a, i));
-}
-
-static void dmxArgTest(const char *string)
-{
- dmxArg a;
-
- if (!string)
- printf("Testing NULL\n");
- else if (!strlen(string))
- printf("Testing (empty)\n");
- else
- printf("Testing \"%s\"\n", string);
-
- a = dmxArgParse(string);
- dmxArgPrint(a);
- dmxArgFree(a);
-}
-
-int main(void)
-{
- dmxArgTest(NULL);
- dmxArgTest("");
- dmxArgTest(",");
-
- dmxArgTest("a");
- dmxArgTest("a,");
- dmxArgTest(",a");
-
- dmxArgTest("a,b");
- dmxArgTest("a,b,");
- dmxArgTest("a,b,,");
- dmxArgTest("a,b,,c");
-
- return 0;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxarg.h b/nx-X11/programs/Xserver/hw/dmx/input/dmxarg.h
deleted file mode 100644
index b377aca70..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxarg.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to argument handling functions. \see dmxarg.c */
-
-#ifndef _DMXARG_H_
-#define _DMXARG_H_
-
-typedef struct _dmxArg *dmxArg;
-
-extern dmxArg dmxArgCreate(void);
-extern void dmxArgFree(dmxArg a);
-extern void dmxArgAdd(dmxArg a, const char *string);
-extern const char *dmxArgV(dmxArg a, int item);
-extern int dmxArgC(dmxArg a);
-extern dmxArg dmxArgParse(const char *string);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxbackend.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxbackend.c
deleted file mode 100644
index 8985a1b1d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxbackend.c
+++ /dev/null
@@ -1,608 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001-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:
- * David H. Dawes <dawes@xfree86.org>
- * Kevin E. Martin <kem@redhat.com>
- * Rickard E. (Rik) Faith <faith@redhat.com>
- */
-
-/** \file
- * These routines support taking input from devices on the backend
- * (output) displays. \see dmxcommon.c. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#define DMX_BACKEND_DEBUG 0
-
-#include "dmxinputinit.h"
-#include "dmxbackend.h"
-#include "dmxcommon.h"
-#include "dmxconsole.h"
-#include "dmxcursor.h"
-#include "dmxprop.h"
-#include "dmxsync.h"
-#include "dmxcb.h" /* For dmxGlobalWidth and dmxGlobalHeight */
-#include "dmxevents.h" /* For dmxGetGlobalPosition */
-#include "ChkNotMaskEv.h"
-
-#include "inputstr.h"
-#include "input.h"
-#include <X11/keysym.h>
-#include "mipointer.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-/* Private area for backend devices. */
-typedef struct _myPrivate {
- DMX_COMMON_PRIVATE;
- int myScreen;
- DMXScreenInfo *grabbedScreen;
-
- int lastX, lastY;
- int centerX, centerY;
- int relative;
- int newscreen;
- int initialized;
- DevicePtr mou, kbd;
- int entered;
- int offX, offY;
-} myPrivate;
-
-#if DMX_BACKEND_DEBUG
-#define DMXDBG0(f) dmxLog(dmxDebug,f)
-#define DMXDBG1(f,a) dmxLog(dmxDebug,f,a)
-#define DMXDBG2(f,a,b) dmxLog(dmxDebug,f,a,b)
-#define DMXDBG3(f,a,b,c) dmxLog(dmxDebug,f,a,b,c)
-#define DMXDBG4(f,a,b,c,d) dmxLog(dmxDebug,f,a,b,c,d)
-#define DMXDBG5(f,a,b,c,d,e) dmxLog(dmxDebug,f,a,b,c,d,e)
-#define DMXDBG6(f,a,b,c,d,e,g) dmxLog(dmxDebug,f,a,b,c,d,e,g)
-#define DMXDBG7(f,a,b,c,d,e,g,h) dmxLog(dmxDebug,f,a,b,c,d,e,g,h)
-#define DMXDBG8(f,a,b,c,d,e,g,h,i) dmxLog(dmxDebug,f,a,b,c,d,e,g,h,i)
-#define DMXDBG9(f,a,b,c,d,e,g,h,i,j) dmxLog(dmxDebug,f,a,b,c,d,e,g,h,i,j)
-#else
-#define DMXDBG0(f)
-#define DMXDBG1(f,a)
-#define DMXDBG2(f,a,b)
-#define DMXDBG3(f,a,b,c)
-#define DMXDBG4(f,a,b,c,d)
-#define DMXDBG5(f,a,b,c,d,e)
-#define DMXDBG6(f,a,b,c,d,e,g)
-#define DMXDBG7(f,a,b,c,d,e,g,h)
-#define DMXDBG8(f,a,b,c,d,e,g,h,i)
-#define DMXDBG9(f,a,b,c,d,e,g,h,i,j)
-#endif
-
-/** Create and return a private data structure. */
-pointer dmxBackendCreatePrivate(DeviceIntPtr pDevice)
-{
- GETDMXLOCALFROMPDEVICE;
- myPrivate *priv = xalloc(sizeof(*priv));
- memset(priv, 0, sizeof(*priv));
- priv->dmxLocal = dmxLocal;
- return priv;
-}
-
-/** Destroy the private data structure. No checking is performed to
- * verify that the structure was actually created by
- * #dmxBackendCreatePrivate. */
-void dmxBackendDestroyPrivate(pointer private)
-{
- if (private) xfree(private);
-}
-
-static void *dmxBackendTestScreen(DMXScreenInfo *dmxScreen, void *closure)
-{
- long target = (long)closure;
-
- if (dmxScreen->index == target) return dmxScreen;
- return NULL;
-}
-
-/* Return non-zero if screen and priv->myScreen are on the same physical
- * backend display (1 if they are the same screen, 2 if they are
- * different screens). Since this is a common operation, the results
- * are cached. The cache is invalidated if \a priv is NULL (this should
- * be done with each server generation and reconfiguration). */
-static int dmxBackendSameDisplay(myPrivate *priv, long screen)
-{
- static myPrivate *oldpriv = NULL;
- static int oldscreen = -1;
- static int retcode = 0;
-
- if (priv == oldpriv && screen == oldscreen) return retcode;
- if (!priv) { /* Invalidate cache */
- oldpriv = NULL;
- oldscreen = -1;
- retcode = 0;
- return 0;
- }
-
- if (screen == priv->myScreen) retcode = 1;
- else if (screen < 0 || screen >= dmxNumScreens) retcode = 0;
- else if (dmxPropertyIterate(priv->be,
- dmxBackendTestScreen,
- (void *)screen)) retcode = 2;
- else retcode = 0;
-
- oldpriv = priv;
- oldscreen = screen;
- return retcode;
-}
-
-static void *dmxBackendTestEvents(DMXScreenInfo *dmxScreen, void *closure)
-{
- XEvent *X = (XEvent *)closure;
-
- if (XCheckNotMaskEvent(dmxScreen->beDisplay, ExposureMask, X))
- return dmxScreen;
- return NULL;
-}
-
-static void *dmxBackendTestMotionEvent(DMXScreenInfo *dmxScreen, void *closure)
-{
- XEvent *X = (XEvent *)closure;
-
- if (XCheckTypedEvent(dmxScreen->beDisplay, MotionNotify, X))
- return dmxScreen;
- return NULL;
-}
-
-static DMXScreenInfo *dmxBackendGetEvent(myPrivate *priv, XEvent *X)
-{
- DMXScreenInfo *dmxScreen;
-
- if ((dmxScreen = dmxPropertyIterate(priv->be, dmxBackendTestEvents, X)))
- return dmxScreen;
- return NULL;
-}
-
-static DMXScreenInfo *dmxBackendPendingMotionEvent(myPrivate *priv, int save)
-{
- DMXScreenInfo *dmxScreen;
- XEvent N;
-
- if ((dmxScreen = dmxPropertyIterate(priv->be,
- dmxBackendTestMotionEvent, &N))) {
- if (save) XPutBackEvent(dmxScreen->beDisplay, &N);
- return dmxScreen;
- }
- return NULL;
-}
-
-static void *dmxBackendTestWindow(DMXScreenInfo *dmxScreen, void *closure)
-{
- Window win = (Window)(long)closure;
- if (dmxScreen->scrnWin == win) return dmxScreen;
- return NULL;
-}
-
-static DMXScreenInfo *dmxBackendFindWindow(myPrivate *priv, Window win)
-{
- return dmxPropertyIterate(priv->be, dmxBackendTestWindow,
- (void *)(long)win);
-}
-
-/* If the cursor is over a set of overlapping screens and one of those
- * screens takes backend input, then we want that particular screen to
- * be current, not one of the other ones. */
-static int dmxBackendFindOverlapping(myPrivate *priv, int screen, int x, int y)
-{
- DMXScreenInfo *start = &dmxScreens[screen];
- DMXScreenInfo *pt;
-
- if (!start->over) return screen;
-
- for (pt = start->over; /* condition at end of loop */; pt = pt->over) {
- if (pt->index == priv->myScreen
- && dmxOnScreen(x, y, &dmxScreens[pt->index])) return pt->index;
- if (pt == start) break;
- }
- return screen;
-}
-
-/* Return non-zero if \a x and \a y are off \a screen. */
-static int dmxBackendOffscreen(int screen, int x, int y)
-{
- DMXScreenInfo *dmxScreen = &dmxScreens[screen];
-
- return (!dmxOnScreen(x, y, dmxScreen));
-}
-
-/** This routine is called from #dmxCoreMotion for each motion
- * event. #x and #y are global coordinants. */
-void dmxBackendUpdatePosition(pointer private, int x, int y)
-{
- GETPRIVFROMPRIVATE;
- int screen = miPointerCurrentScreen()->myNum;
- DMXScreenInfo *dmxScreen = &dmxScreens[priv->myScreen];
- int oldRelative = priv->relative;
- int topscreen = dmxBackendFindOverlapping(priv, screen, x, y);
- int same = dmxBackendSameDisplay(priv, topscreen);
- int offscreen = dmxBackendOffscreen(priv->myScreen, x, y);
- int offthis = dmxBackendOffscreen(screen, x, y);
-
- DMXDBG9("dmxBackendUpdatePosition(%d,%d) my=%d mi=%d rel=%d"
- " topscreen=%d same=%d offscreen=%d offthis=%d\n",
- x, y, priv->myScreen, screen, priv->relative,
- topscreen, same, offscreen, offthis);
-
- if (offscreen) {
- /* If the cursor is off the input screen, it should be moving
- * relative unless it is visible on a screen of the same display
- * (i.e., one that shares the mouse). */
- if (same == 2 && !offthis) {
- if (priv->relative) {
- DMXDBG0(" Off screen, but not absolute\n");
- priv->relative = 0;
- }
- } else {
- if (!priv->relative) {
- DMXDBG0(" Off screen, but not relative\n");
- priv->relative = 1;
- }
- }
- } else {
- if (topscreen != screen) {
- DMXDBG2(" Using screen %d instead of %d (from mi)\n",
- topscreen, screen);
- }
- if (same) {
- if (priv->relative) {
- DMXDBG0(" On screen, but not absolute\n");
- priv->relative = 0;
- }
- } else {
- if (!priv->relative) {
- DMXDBG0(" Not on screen, but not relative\n");
- priv->relative = 1;
- }
- }
- }
-
- if (oldRelative != priv->relative) {
- DMXDBG2(" Do switch, relative=%d same=%d\n",
- priv->relative, same);
- /* Discard all pre-switch events */
- dmxSync(dmxScreen, TRUE);
- while (dmxBackendPendingMotionEvent(priv, FALSE));
-
- if (dmxInput->console && offscreen) {
- /* Our special case is a console window and a backend window
- * share a display. In this case, the cursor is either on
- * the backend window (taking absolute input), or not (in
- * which case the cursor needs to be in the console
- * window). */
- if (priv->grabbedScreen) {
- DMXDBG2(" *** force ungrab on %s, display=%p\n",
- priv->grabbedScreen->name,
- priv->grabbedScreen->beDisplay);
- XUngrabPointer(priv->grabbedScreen->beDisplay, CurrentTime);
- dmxSync(priv->grabbedScreen, TRUE);
- priv->grabbedScreen = NULL;
- }
- DMXDBG0(" Capturing console\n");
- dmxConsoleCapture(dmxInput);
- } else {
- priv->newscreen = 1;
- if (priv->relative && !dmxInput->console) {
- DMXDBG5(" Hide cursor; warp from %d,%d to %d,%d on %d\n",
- priv->lastX, priv->lastY, priv->centerX, priv->centerY,
- priv->myScreen);
- dmxConsoleUncapture(dmxInput);
- dmxHideCursor(dmxScreen);
- priv->lastX = priv->centerX;
- priv->lastY = priv->centerY;
- XWarpPointer(priv->display, None, priv->window,
- 0, 0, 0, 0, priv->lastX, priv->lastY);
- dmxSync(dmxScreen, TRUE);
- } else {
- DMXDBG0(" Check cursor\n");
- dmxCheckCursor();
- }
- }
- }
-}
-
-/** Get events from the X queue on the backend servers and put the
- * events into the DMX event queue. */
-void dmxBackendCollectEvents(DevicePtr pDev,
- dmxMotionProcPtr motion,
- dmxEnqueueProcPtr enqueue,
- dmxCheckSpecialProcPtr checkspecial,
- DMXBlockType block)
-{
- GETPRIVFROMPDEV;
- GETDMXINPUTFROMPRIV;
- XEvent X;
- DMXScreenInfo *dmxScreen;
- int left = 0;
- int entered = priv->entered;
- int ignoreLeave = 0;
- int v[2];
- int retcode;
-
- while ((dmxScreen = dmxBackendGetEvent(priv, &X))) {
- switch (X.type) {
- case EnterNotify:
- dmxCommonSaveState(priv);
- if (entered++) continue;
- priv->entered = 1;
- ignoreLeave = 1;
- DMXDBG5("dmxBackendCollectEvents: Enter %lu %d,%d; GRAB %s %p\n",
- X.xcrossing.root, X.xcrossing.x, X.xcrossing.y,
- dmxScreen->name, dmxScreen->beDisplay);
- XRaiseWindow(dmxScreen->beDisplay, dmxScreen->scrnWin);
- priv->grabbedScreen = dmxScreen;
- if ((retcode = XGrabPointer(dmxScreen->beDisplay,
- dmxScreen->scrnWin,
- True, 0, GrabModeAsync,
- GrabModeAsync, None, None,
- CurrentTime))) {
- dmxLog(dmxError,
- "XGrabPointer failed during backend enter (%d)\n",
- retcode);
- }
- break;
- case LeaveNotify:
- if (ignoreLeave) {
- ignoreLeave = 0;
- continue;
- }
- dmxCommonRestoreState(priv);
- if (left++) continue;
- DMXDBG7("dmxBackendCollectEvents: Leave %lu %d,%d %d %d %s %s\n",
- X.xcrossing.root, X.xcrossing.x, X.xcrossing.y,
- X.xcrossing.detail, X.xcrossing.focus,
- priv->grabbedScreen ? "UNGRAB" : "",
- dmxScreen->name);
- if (priv->grabbedScreen) {
- XUngrabPointer(priv->grabbedScreen->beDisplay, CurrentTime);
- dmxSync(priv->grabbedScreen, TRUE);
- priv->grabbedScreen = NULL;
- }
- break;
- case MotionNotify:
- DMXDBG9("dmxBackendCollectEvents: MotionNotify %d/%d (mi %d)"
- " newscreen=%d: %d %d (e=%d; last=%d,%d)\n",
- dmxScreen->index, priv->myScreen,
- miPointerCurrentScreen()->myNum,
- priv->newscreen,
- X.xmotion.x, X.xmotion.y,
- entered, priv->lastX, priv->lastY);
- if (dmxBackendPendingMotionEvent(priv, TRUE)) continue;
- if (!(dmxScreen = dmxBackendFindWindow(priv, X.xmotion.window)))
- dmxLog(dmxFatal,
- " Event on non-existant window %lu\n",
- X.xmotion.window);
- if (!priv->relative || dmxInput->console) {
- int newX = X.xmotion.x - dmxScreen->rootX;
- int newY = X.xmotion.y - dmxScreen->rootY;
-
- if (!priv->newscreen) {
- int width = dmxScreen->rootWidth;
- int height = dmxScreen->rootHeight;
- if (!newX) newX = -1;
- if (newX == width - 1) newX = width;
- if (!newY) newY = -1;
- if (newY == height - 1) newY = height;
- }
- priv->newscreen = 0;
- v[0] = dmxScreen->rootXOrigin + newX;
- v[1] = dmxScreen->rootYOrigin + newY;
- DMXDBG8(" Absolute move: %d,%d (r=%dx%d+%d+%d s=%dx%d)\n",
- v[0], v[1],
- priv->be->rootWidth, priv->be->rootHeight,
- priv->be->rootX, priv->be->rootY,
- priv->be->scrnWidth, priv->be->scrnHeight);
- motion(priv->mou, v, 0, 2, DMX_ABSOLUTE, block);
- priv->entered = 0;
- } else {
- int newX = priv->lastX - X.xmotion.x;
- int newY = priv->lastY - X.xmotion.y;
- priv->lastX = X.xmotion.x;
- priv->lastY = X.xmotion.y;
- v[0] = newX;
- v[1] = newY;
- DMXDBG2(" Relative move: %d, %d\n", v[0], v[1]);
- motion(priv->mou, v, 0, 2, DMX_RELATIVE, block);
- }
- if (entered && priv->relative) {
- DMXDBG4(" **** Relative %d %d instead of absolute %d %d\n",
- v[0], v[1],
- (dmxScreen->rootXOrigin + X.xmotion.x
- - dmxScreen->rootX),
- (dmxScreen->rootYOrigin + X.xmotion.y
- - dmxScreen->rootY));
- }
- break;
-
- case KeyPress:
- case KeyRelease:
- enqueue(priv->kbd, X.type, X.xkey.keycode, 0, NULL, block);
- break;
- default:
- /* Pass the whole event here, because
- * this may be an extension event. */
- enqueue(priv->mou, X.type, X.xbutton.button, 0, &X, block);
- break;
- }
- }
-}
-
-/** Called after input events are processed from the DMX queue. No
- * event processing actually takes place here, but this is a convenient
- * place to update the pointer. */
-void dmxBackendProcessInput(pointer private)
-{
- GETPRIVFROMPRIVATE;
-
- DMXDBG6("dmxBackendProcessInput: myScreen=%d relative=%d"
- " last=%d,%d center=%d,%d\n",
- priv->myScreen, priv->relative,
- priv->lastX, priv->lastY,
- priv->centerX, priv->centerY);
-
- if (priv->relative
- && !dmxInput->console
- && (priv->lastX != priv->centerX || priv->lastY != priv->centerY)) {
- DMXDBG4(" warping pointer from last=%d,%d to center=%d,%d\n",
- priv->lastX, priv->lastY, priv->centerX, priv->centerY);
- priv->lastX = priv->centerX;
- priv->lastY = priv->centerY;
- XWarpPointer(priv->display, None, priv->window,
- 0, 0, 0, 0, priv->lastX, priv->lastY);
- dmxSync(&dmxScreens[priv->myScreen], TRUE);
- }
-}
-
-static void dmxBackendComputeCenter(myPrivate *priv)
-{
- int centerX;
- int centerY;
-
- centerX = priv->be->rootWidth / 2 + priv->be->rootX;
- centerY = priv->be->rootHeight / 2 + priv->be->rootY;
-
- if (centerX > priv->be->rootWidth) centerX = priv->be->rootWidth - 1;
- if (centerY > priv->be->rootHeight) centerY = priv->be->rootHeight - 1;
- if (centerX < 1) centerX = 1;
- if (centerY < 1) centerY = 1;
-
- priv->centerX = centerX;
- priv->centerY = centerY;
-}
-
-static DMXScreenInfo *dmxBackendInitPrivate(DevicePtr pDev)
-{
- GETPRIVFROMPDEV;
- DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx];
- DMXScreenInfo *dmxScreen;
- int i;
-
- /* Fill in myPrivate */
- for (i = 0,dmxScreen = &dmxScreens[0]; i<dmxNumScreens; i++,dmxScreen++) {
- if (dmxPropertySameDisplay(dmxScreen, dmxInput->name)) {
- priv->display = dmxScreen->beDisplay;
- priv->window = dmxScreen->scrnWin;
- priv->be = dmxScreen;
- break;
- }
- }
-
- if (i >= dmxNumScreens)
- dmxLog(dmxFatal,
- "%s is not an existing backend display - cannot initialize\n",
- dmxInput->name);
-
- return dmxScreen;
-}
-
-/** Re-initialized the backend device described by \a pDev (after a
- * reconfig). */
-void dmxBackendLateReInit(DevicePtr pDev)
-{
- GETPRIVFROMPDEV;
- int x, y;
-
- DMXDBG1("dmxBackendLateReInit miPointerCurrentScreen() = %p\n",
- miPointerCurrentScreen());
-
- dmxBackendSameDisplay(NULL, 0); /* Invalidate cache */
- dmxBackendInitPrivate(pDev);
- dmxBackendComputeCenter(priv);
- dmxGetGlobalPosition(&x, &y);
- dmxInvalidateGlobalPosition(); /* To force event processing */
- dmxBackendUpdatePosition(priv, x, y);
-}
-
-/** Initialized the backend device described by \a pDev. */
-void dmxBackendInit(DevicePtr pDev)
-{
- GETPRIVFROMPDEV;
- DMXScreenInfo *dmxScreen;
-
- dmxBackendSameDisplay(NULL, 0); /* Invalidate cache */
-
- if (dmxLocal->type == DMX_LOCAL_MOUSE) priv->mou = pDev;
- if (dmxLocal->type == DMX_LOCAL_KEYBOARD) priv->kbd = pDev;
- if (priv->initialized++) return; /* Only do once for mouse/keyboard pair */
-
- dmxScreen = dmxBackendInitPrivate(pDev);
-
- /* Finish initialization using computed values or constants. */
- dmxBackendComputeCenter(priv);
- priv->eventMask = (EnterWindowMask|LeaveWindowMask);
- priv->myScreen = dmxScreen->index;
- priv->lastX = priv->centerX;
- priv->lastY = priv->centerY;
- priv->relative = 0;
- priv->newscreen = 0;
-}
-
-/** Get information about the backend pointer (for initialization). */
-void dmxBackendMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- info->buttonClass = 1;
- dmxCommonMouGetMap(pDev, info->map, &info->numButtons);
- info->valuatorClass = 1;
- info->numRelAxes = 2;
- info->minval[0] = 0;
- info->maxval[0] = 0;
- info->res[0] = 1;
- info->minres[0] = 0;
- info->maxres[0] = 1;
- info->ptrFeedbackClass = 1;
-}
-
-/** Get information about the backend keyboard (for initialization). */
-void dmxBackendKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- dmxCommonKbdGetInfo(pDev, info);
- info->keyboard = 1;
- info->keyClass = 1;
- dmxCommonKbdGetMap(pDev, &info->keySyms, info->modMap);
- info->freemap = 1;
- info->focusClass = 1;
- info->kbdFeedbackClass = 1;
-}
-
-/** Process #DMXFunctionType functions. The only function handled here
- * is to acknowledge a pending server shutdown. */
-int dmxBackendFunctions(pointer private, DMXFunctionType function)
-{
- switch (function) {
- case DMX_FUNCTION_TERMINATE:
- return 1;
- default:
- return 0;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxbackend.h b/nx-X11/programs/Xserver/hw/dmx/input/dmxbackend.h
deleted file mode 100644
index 64a65f4a6..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxbackend.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to backend input device support. \see dmxbackend.c \see
- * dmxcommon.c */
-
-#ifndef _DMXBACKEND_H_
-#define _DMXBACKEND_H_
-
-extern pointer dmxBackendCreatePrivate(DeviceIntPtr pDevice);
-extern void dmxBackendDestroyPrivate(pointer private);
-extern void dmxBackendInit(DevicePtr pDev);
-extern void dmxBackendLateReInit(DevicePtr pDev);
-extern void dmxBackendMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern void dmxBackendKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern void dmxBackendCollectEvents(DevicePtr pDev,
- dmxMotionProcPtr motion,
- dmxEnqueueProcPtr enqueue,
- dmxCheckSpecialProcPtr checkspecial,
- DMXBlockType block);
-extern void dmxBackendProcessInput(pointer private);
-extern int dmxBackendFunctions(pointer private, DMXFunctionType function);
-extern void dmxBackendUpdatePosition(pointer private, int x, int y);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxcommon.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxcommon.c
deleted file mode 100644
index 6a2b840e9..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxcommon.c
+++ /dev/null
@@ -1,674 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001-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:
- * David H. Dawes <dawes@xfree86.org>
- * Kevin E. Martin <kem@redhat.com>
- * Rickard E. (Rik) Faith <faith@redhat.com>
- */
-
-/** \file
- *
- * This file implements common routines used by the backend and console
- * input devices.
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#define DMX_STATE_DEBUG 0
-
-#include "dmxinputinit.h"
-#include "dmxcommon.h"
-#include "dmxconsole.h"
-#include "dmxprop.h"
-#include "dmxsync.h"
-#include "dmxmap.h"
-
-#include "inputstr.h"
-#include "input.h"
-#include <X11/keysym.h>
-#include "mipointer.h"
-#include "scrnintstr.h"
-
-#include <unistd.h> /* For usleep() */
-
-#if DMX_STATE_DEBUG
-#define DMXDBG0(f) dmxLog(dmxDebug,f)
-#else
-#define DMXDBG0(f)
-#endif
-
-/** Each device has a private area that is visible only from inside the
- * driver code. */
-typedef struct _myPrivate {
- DMX_COMMON_PRIVATE;
-} myPrivate;
-
-static void dmxCommonKbdSetAR(Display *display,
- unsigned char *old, unsigned char *new)
-{
- XKeyboardControl kc;
- XKeyboardState ks;
- unsigned long mask = KBKey | KBAutoRepeatMode;
- int i, j;
- int minKeycode, maxKeycode;
-
- if (!old) {
- XGetKeyboardControl(display, &ks);
- old = (unsigned char *)ks.auto_repeats;
- }
-
- XDisplayKeycodes(display, &minKeycode, &maxKeycode);
- for (i = 1; i < 32; i++) {
- if (!old || old[i] != new[i]) {
- for (j = 0; j < 8; j++) {
- if ((new[i] & (1 << j)) != (old[i] & (1 << j))) {
- kc.key = i * 8 + j;
- kc.auto_repeat_mode = ((new[i] & (1 << j))
- ? AutoRepeatModeOn
- : AutoRepeatModeOff);
- if (kc.key >= minKeycode && kc.key <= maxKeycode)
- XChangeKeyboardControl(display, mask, &kc);
- }
- }
- }
- }
-}
-
-static void dmxCommonKbdSetLeds(Display *display, unsigned long new)
-{
- int i;
- XKeyboardControl kc;
-
- for (i = 0; i < 32; i++) {
- kc.led = i + 1;
- kc.led_mode = (new & (1 << i)) ? LedModeOn : LedModeOff;
- XChangeKeyboardControl(display, KBLed | KBLedMode, &kc);
- }
-}
-
-static void dmxCommonKbdSetCtrl(Display *display,
- KeybdCtrl *old, KeybdCtrl *new)
-{
- XKeyboardControl kc;
- unsigned long mask = KBKeyClickPercent | KBAutoRepeatMode;
-
- if (!old
- || old->click != new->click
- || old->autoRepeat != new->autoRepeat) {
-
- kc.key_click_percent = new->click;
- kc.auto_repeat_mode = new->autoRepeat;
-
- XChangeKeyboardControl(display, mask, &kc);
- }
-
- dmxCommonKbdSetLeds(display, new->leds);
- dmxCommonKbdSetAR(display, old ? old->autoRepeats : NULL,
- new->autoRepeats);
-}
-
-static void dmxCommonMouSetCtrl(Display *display, PtrCtrl *old, PtrCtrl *new)
-{
- Bool do_accel, do_threshold;
-
- if (!old
- || old->num != new->num
- || old->den != new->den
- || old->threshold != new->threshold) {
- do_accel = (new->num > 0 && new->den > 0);
- do_threshold = (new->threshold > 0);
- if (do_accel || do_threshold) {
- XChangePointerControl(display, do_accel, do_threshold,
- new->num, new->den, new->threshold);
- }
- }
-}
-
-/** Update the keyboard control. */
-void dmxCommonKbdCtrl(DevicePtr pDev, KeybdCtrl *ctrl)
-{
- GETPRIVFROMPDEV;
-
- if (!priv->stateSaved && priv->be) dmxCommonSaveState(priv);
- if (!priv->display || !priv->stateSaved) return;
- dmxCommonKbdSetCtrl(priv->display,
- priv->kctrlset ? &priv->kctrl : NULL,
- ctrl);
- priv->kctrl = *ctrl;
- priv->kctrlset = 1;
-}
-
-/** Update the mouse control. */
-void dmxCommonMouCtrl(DevicePtr pDev, PtrCtrl *ctrl)
-{
- GETPRIVFROMPDEV;
-
- /* Don't set the acceleration for the
- * console, because that should be
- * controlled by the X server that the
- * console is running on. Otherwise,
- * the acceleration for the console
- * window would be unexpected for the
- * scale of the window. */
- if (priv->be) {
- dmxCommonMouSetCtrl(priv->display,
- priv->mctrlset ? &priv->mctrl : NULL,
- ctrl);
- priv->mctrl = *ctrl;
- priv->mctrlset = 1;
- }
-}
-
-/** Sound they keyboard bell. */
-void dmxCommonKbdBell(DevicePtr pDev, int percent,
- int volume, int pitch, int duration)
-{
- GETPRIVFROMPDEV;
- XKeyboardControl kc;
- XKeyboardState ks;
- unsigned long mask = KBBellPercent | KBBellPitch | KBBellDuration;
-
- if (!priv->be) XGetKeyboardControl(priv->display, &ks);
- kc.bell_percent = volume;
- kc.bell_pitch = pitch;
- kc.bell_duration = duration;
- XChangeKeyboardControl(priv->display, mask, &kc);
- XBell(priv->display, percent);
- if (!priv->be) {
- kc.bell_percent = ks.bell_percent;
- kc.bell_pitch = ks.bell_pitch;
- kc.bell_duration = ks.bell_duration;
- XChangeKeyboardControl(priv->display, mask, &kc);
- }
-}
-
-/** Get the keyboard mapping. */
-void dmxCommonKbdGetMap(DevicePtr pDev, KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
- GETPRIVFROMPDEV;
- int min_keycode;
- int max_keycode;
- int map_width;
- KeySym *keyboard_mapping;
- XModifierKeymap *modifier_mapping;
- int i, j;
-
- /* Compute pKeySyms. Cast
- * XGetKeyboardMapping because of
- * compiler warning on 64-bit machines.
- * We assume pointers to 32-bit and
- * 64-bit ints are the same. */
- XDisplayKeycodes(priv->display, &min_keycode, &max_keycode);
- keyboard_mapping = (KeySym *)XGetKeyboardMapping(priv->display,
- min_keycode,
- max_keycode
- - min_keycode + 1,
- &map_width);
- pKeySyms->minKeyCode = min_keycode;
- pKeySyms->maxKeyCode = max_keycode;
- pKeySyms->mapWidth = map_width;
- pKeySyms->map = keyboard_mapping;
-
-
- /* Compute pModMap */
- modifier_mapping = XGetModifierMapping(priv->display);
- for (i = 0; i < MAP_LENGTH; i++) pModMap[i] = 0;
- for (j = 0; j < 8; j++) {
- int max_keypermod = modifier_mapping->max_keypermod;
-
- for (i = 0; i < max_keypermod; i++) {
- CARD8 keycode = modifier_mapping->modifiermap[j*max_keypermod + i];
- if (keycode) pModMap[keycode] |= 1 << j;
- }
- }
- XFreeModifiermap(modifier_mapping);
-}
-
-/** Fill in the XKEYBOARD parts of the \a info structure for the
- * specified \a pDev. */
-void dmxCommonKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
-#ifdef XKB
- GETPRIVFROMPDEV;
- GETDMXINPUTFROMPRIV;
- char *pt;
-
- dmxCommonSaveState(priv);
- if (priv->xkb) {
- info->names.keymap = NULL;
-#define NAME(x) \
- priv->xkb->names->x ? XGetAtomName(priv->display,priv->xkb->names->x) : NULL
- info->names.keycodes = NAME(keycodes);
- info->names.types = NAME(types);
- info->names.compat = NAME(compat);
- info->names.symbols = NAME(symbols);
- info->names.geometry = NAME(geometry);
- info->freenames = 1;
-#undef NAME
- dmxLogInput(dmxInput,
- "XKEYBOARD: keycodes = %s\n", info->names.keycodes);
- dmxLogInput(dmxInput,
- "XKEYBOARD: symbols = %s\n", info->names.symbols);
- dmxLogInput(dmxInput,
- "XKEYBOARD: geometry = %s\n", info->names.geometry);
- if ((pt = strchr(info->names.keycodes, '+'))) *pt = '\0';
- }
- dmxCommonRestoreState(priv);
-#endif
-}
-
-/** Turn \a pDev on (i.e., take input from \a pDev). */
-int dmxCommonKbdOn(DevicePtr pDev)
-{
- GETPRIVFROMPDEV;
- if (priv->be) dmxCommonSaveState(priv);
- priv->eventMask |= DMX_KEYBOARD_EVENT_MASK;
- XSelectInput(priv->display, priv->window, priv->eventMask);
- if (priv->be)
- XSetInputFocus(priv->display, priv->window, RevertToPointerRoot,
- CurrentTime);
- return -1;
-}
-
-/** Turn \a pDev off. */
-void dmxCommonKbdOff(DevicePtr pDev)
-{
- GETPRIVFROMPDEV;
- priv->eventMask &= ~DMX_KEYBOARD_EVENT_MASK;
- XSelectInput(priv->display, priv->window, priv->eventMask);
- dmxCommonRestoreState(priv);
-}
-
-/** Turn \a pDev on (i.e., take input from \a pDev). */
-int dmxCommonOthOn(DevicePtr pDev)
-{
- GETPRIVFROMPDEV;
- GETDMXINPUTFROMPRIV;
- XEventClass event_list[DMX_MAX_XINPUT_EVENT_TYPES];
- int event_type[DMX_MAX_XINPUT_EVENT_TYPES];
- int count = 0;
-
-#define ADD(type) \
- if (count < DMX_MAX_XINPUT_EVENT_TYPES) { \
- type(priv->xi, event_type[count], event_list[count]); \
- if (event_type[count]) { \
- dmxMapInsert(dmxLocal, event_type[count], XI_##type); \
- ++count; \
- } \
- } else { \
- dmxLog(dmxWarning, "More than %d event types for %s\n", \
- DMX_MAX_XINPUT_EVENT_TYPES, dmxInput->name); \
- }
-
- if (!(priv->xi = XOpenDevice(priv->display, dmxLocal->deviceId))) {
- dmxLog(dmxWarning, "Cannot open %s device (id=%d) on %s\n",
- dmxLocal->deviceName ? dmxLocal->deviceName : "(unknown)",
- dmxLocal->deviceId, dmxInput->name);
- return -1;
- }
- ADD(DeviceKeyPress);
- ADD(DeviceKeyRelease);
- ADD(DeviceButtonPress);
- ADD(DeviceButtonRelease);
- ADD(DeviceMotionNotify);
- ADD(DeviceFocusIn);
- ADD(DeviceFocusOut);
- ADD(ProximityIn);
- ADD(ProximityOut);
- ADD(DeviceStateNotify);
- ADD(DeviceMappingNotify);
- ADD(ChangeDeviceNotify);
- XSelectExtensionEvent(priv->display, priv->window, event_list, count);
-
- return -1;
-}
-
-/** Turn \a pDev off. */
-void dmxCommonOthOff(DevicePtr pDev)
-{
- GETPRIVFROMPDEV;
-
- if (priv->xi) XCloseDevice(priv->display, priv->xi);
- priv->xi = NULL;
-}
-
-/** Fill the \a info structure with information needed to initialize \a
- * pDev. */
-void dmxCommonOthGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- GETPRIVFROMPDEV;
- GETDMXINPUTFROMPRIV;
- XExtensionVersion *ext;
- XDeviceInfo *devices;
- Display *display = priv->display;
- int num;
- int i, j, k;
- int (*handler)(Display *, char *, char *);
-
- if (!display && !(display = XOpenDisplay(dmxInput->name)))
- return;
-
- /* Print out information about the XInput Extension. */
- handler = XSetExtensionErrorHandler(dmxInputExtensionErrorHandler);
- ext = XGetExtensionVersion(display, INAME);
- XSetExtensionErrorHandler(handler);
-
- if (ext && ext != (XExtensionVersion *)NoSuchExtension) {
- XFree(ext);
- devices = XListInputDevices(display, &num);
- for (i = 0; i < num; i++) {
- if (devices[i].id == (XID)dmxLocal->deviceId) {
- XAnyClassPtr any;
- XKeyInfoPtr ki;
- XButtonInfoPtr bi;
- XValuatorInfoPtr vi;
- for (j = 0, any = devices[i].inputclassinfo;
- j < devices[i].num_classes;
- any = (XAnyClassPtr)((char *)any + any->length), j++) {
- switch (any->class) {
- case KeyClass:
- ki = (XKeyInfoPtr)any;
- info->keyboard = 1;
- info->keyClass = 1;
- info->keySyms.minKeyCode = ki->min_keycode;
- info->keySyms.maxKeyCode = ki->max_keycode;
- info->kbdFeedbackClass = 1;
- break;
- case ButtonClass:
- bi = (XButtonInfoPtr)any;
- info->buttonClass = 1;
- info->numButtons = bi->num_buttons;
- info->ptrFeedbackClass = 1;
- break;
- case ValuatorClass:
- /* This assume all axes are either
- * Absolute or Relative. */
- vi = (XValuatorInfoPtr)any;
- info->valuatorClass = 1;
- if (vi->mode == Absolute)
- info->numAbsAxes = vi->num_axes;
- else
- info->numRelAxes = vi->num_axes;
- for (k = 0; k < vi->num_axes; k++) {
- info->res[k] = vi->axes[k].resolution;
- info->minres[k] = vi->axes[k].resolution;
- info->maxres[k] = vi->axes[k].resolution;
- info->minval[k] = vi->axes[k].min_value;
- info->maxval[k] = vi->axes[k].max_value;
- }
- break;
- case FeedbackClass:
- /* Only keyboard and pointer feedback
- * are handled at this time. */
- break;
- case ProximityClass:
- info->proximityClass = 1;
- break;
- case FocusClass:
- info->focusClass = 1;
- break;
- case OtherClass:
- break;
- }
- }
- }
- }
- XFreeDeviceList(devices);
- }
- if (display != priv->display) XCloseDisplay(display);
-}
-
-/** Obtain the mouse button mapping. */
-void dmxCommonMouGetMap(DevicePtr pDev, unsigned char *map, int *nButtons)
-{
- GETPRIVFROMPDEV;
- int i;
-
- *nButtons = XGetPointerMapping(priv->display, map, DMX_MAX_BUTTONS);
- for (i = 0; i <= *nButtons; i++) map[i] = i;
-}
-
-static void *dmxCommonXSelect(DMXScreenInfo *dmxScreen, void *closure)
-{
- myPrivate *priv = closure;
- XSelectInput(dmxScreen->beDisplay, dmxScreen->scrnWin, priv->eventMask);
- return NULL;
-}
-
-static void *dmxCommonAddEnabledDevice(DMXScreenInfo *dmxScreen, void *closure)
-{
- AddEnabledDevice(XConnectionNumber(dmxScreen->beDisplay));
- return NULL;
-}
-
-static void *dmxCommonRemoveEnabledDevice(DMXScreenInfo *dmxScreen,
- void *closure)
-{
- RemoveEnabledDevice(XConnectionNumber(dmxScreen->beDisplay));
- return NULL;
-}
-
-/** Turn \a pDev on (i.e., take input from \a pDev). */
-int dmxCommonMouOn(DevicePtr pDev)
-{
- GETPRIVFROMPDEV;
- GETDMXINPUTFROMPRIV;
-
- if (!priv) return -1;
- priv->eventMask |= DMX_POINTER_EVENT_MASK;
- if (dmxShadowFB) {
- XWarpPointer(priv->display, priv->window, priv->window,
- 0, 0, 0, 0,
- priv->initPointerX,
- priv->initPointerY);
- dmxSync(&dmxScreens[dmxInput->scrnIdx], TRUE);
- }
- if (!priv->be) {
- XSelectInput(priv->display, priv->window, priv->eventMask);
- AddEnabledDevice(XConnectionNumber(priv->display));
- } else {
- dmxPropertyIterate(priv->be, dmxCommonXSelect, priv);
- dmxPropertyIterate(priv->be, dmxCommonAddEnabledDevice, dmxInput);
- }
-
- return -1;
-}
-
-/** Turn \a pDev off. */
-void dmxCommonMouOff(DevicePtr pDev)
-{
- GETPRIVFROMPDEV;
- GETDMXINPUTFROMPRIV;
-
- if (!priv) return;
- priv->eventMask &= ~DMX_POINTER_EVENT_MASK;
- if (!priv->be) {
- RemoveEnabledDevice(XConnectionNumber(priv->display));
- XSelectInput(priv->display, priv->window, priv->eventMask);
- } else {
- dmxPropertyIterate(priv->be, dmxCommonRemoveEnabledDevice, dmxInput);
- dmxPropertyIterate(priv->be, dmxCommonXSelect, priv);
- }
-}
-
-/** Given the global coordinates \a x and \a y, determine the screen
- * with the lowest number on which those coordinates lie. If they are
- * not on any screen, return -1. The number returned is an index into
- * #dmxScreenInfo and is between -1 and #dmxNumScreens - 1,
- * inclusive. */
-int dmxFindPointerScreen(int x, int y)
-{
- int i;
-
- for (i = 0; i < dmxNumScreens; i++) {
- if (x >= dixScreenOrigins[i].x
- && x < dixScreenOrigins[i].x + screenInfo.screens[i]->width
- && y >= dixScreenOrigins[i].y
- && y < dixScreenOrigins[i].y + screenInfo.screens[i]->height)
- return i;
- }
- return -1;
-}
-
-/** Returns a pointer to the private area for the device that comes just
- * prior to \a pDevice in the current \a dmxInput device list. This is
- * used as the private area for the current device in some situations
- * (e.g., when a keyboard and mouse form a pair that should share the
- * same private area). If the requested private area cannot be located,
- * then NULL is returned. */
-pointer dmxCommonCopyPrivate(DeviceIntPtr pDevice)
-{
- GETDMXLOCALFROMPDEVICE;
- DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx];
- int i;
-
- for (i = 0; i < dmxInput->numDevs; i++)
- if (dmxInput->devs[i] == dmxLocal && i)
- return dmxInput->devs[i-1]->private;
- return NULL;
-}
-
-/** This routine saves and resets some important state for the backend
- * and console device drivers:
- * - the modifier map is saved and set to 0 (so DMX controls the LEDs)
- * - the key click, bell, led, and repeat masks are saved and set to the
- * values that DMX claims to be using
- *
- * This routine and #dmxCommonRestoreState are used when the pointer
- * enters and leaves the console window, or when the backend window is
- * active or not active (for a full-screen window, this only happens at
- * server startup and server shutdown).
- */
-void dmxCommonSaveState(pointer private)
-{
- GETPRIVFROMPRIVATE;
- XKeyboardState ks;
- unsigned long i;
- XModifierKeymap *modmap;
-
- if (dmxInput->console) priv = dmxInput->devs[0]->private;
- if (!priv->display || priv->stateSaved) return;
- DMXDBG0("dmxCommonSaveState\n");
-#ifdef XKB
- if (dmxUseXKB && (priv->xkb = XkbAllocKeyboard())) {
- if (XkbGetIndicatorMap(priv->display, XkbAllIndicatorsMask, priv->xkb)
- || XkbGetNames(priv->display, XkbAllNamesMask, priv->xkb)) {
- dmxLogInput(dmxInput, "Could not get XKB information\n");
- XkbFreeKeyboard(priv->xkb, 0, True);
- priv->xkb = NULL;
- } else {
- if (priv->xkb->indicators) {
- priv->savedIndicators = *priv->xkb->indicators;
- for (i = 0; i < XkbNumIndicators; i++)
- if (priv->xkb->indicators->phys_indicators & (1 << i)) {
- priv->xkb->indicators->maps[i].flags
- = XkbIM_NoAutomatic;
- }
- XkbSetIndicatorMap(priv->display, ~0, priv->xkb);
- }
- }
- }
-#endif
-
- XGetKeyboardControl(priv->display, &ks);
- priv->savedKctrl.click = ks.key_click_percent;
- priv->savedKctrl.bell = ks.bell_percent;
- priv->savedKctrl.bell_pitch = ks.bell_pitch;
- priv->savedKctrl.bell_duration = ks.bell_duration;
- priv->savedKctrl.leds = ks.led_mask;
- priv->savedKctrl.autoRepeat = ks.global_auto_repeat;
- for (i = 0; i < 32; i++)
- priv->savedKctrl.autoRepeats[i] = ks.auto_repeats[i];
-
- dmxCommonKbdSetCtrl(priv->display, &priv->savedKctrl,
- &priv->dmxLocal->kctrl);
-
- priv->savedModMap = XGetModifierMapping(priv->display);
- modmap = XNewModifiermap(0);
- XSetModifierMapping(priv->display, modmap);
- if (dmxInput->scrnIdx != -1)
- dmxSync(&dmxScreens[dmxInput->scrnIdx], TRUE);
- XFreeModifiermap(modmap);
-
- priv->stateSaved = 1;
-}
-
-/** This routine restores all the information saved by #dmxCommonSaveState. */
-void dmxCommonRestoreState(pointer private)
-{
- GETPRIVFROMPRIVATE;
- int retcode = -1;
- CARD32 start;
-
- if (dmxInput->console) priv = dmxInput->devs[0]->private;
- if (!priv->stateSaved) return;
- priv->stateSaved = 0;
-
- DMXDBG0("dmxCommonRestoreState\n");
-#ifdef XKB
- if (priv->xkb) {
- *priv->xkb->indicators = priv->savedIndicators;
- XkbSetIndicatorMap(priv->display, ~0, priv->xkb);
- XkbFreeKeyboard(priv->xkb, 0, True);
- priv->xkb = 0;
- }
-#endif
-
- for (start = GetTimeInMillis(); GetTimeInMillis() - start < 5000;) {
- CARD32 tmp;
-
- retcode = XSetModifierMapping(priv->display, priv->savedModMap);
- if (retcode == MappingSuccess) break;
- if (retcode == MappingBusy)
- dmxLogInput(dmxInput, "Keyboard busy, waiting\n");
- else
- dmxLogInput(dmxInput, "Keyboard error, waiting\n");
-
- /* Don't generate X11 protocol for a bit */
- for (tmp = GetTimeInMillis(); GetTimeInMillis() - tmp < 250;) {
- usleep(250); /* This ends up sleeping only until
- * the next key press generates an
- * interruption. We make the delay
- * relatively short in case the user
- * pressed they keys quickly. */
- }
-
- }
- if (retcode != MappingSuccess)
- dmxLog(dmxWarning, "Unable to restore keyboard modifier state!\n");
-
- XFreeModifiermap(priv->savedModMap);
- priv->savedModMap = NULL;
-
- dmxCommonKbdSetCtrl(priv->display, NULL, &priv->savedKctrl);
- priv->kctrlset = 0; /* Invalidate copy */
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxcommon.h b/nx-X11/programs/Xserver/hw/dmx/input/dmxcommon.h
deleted file mode 100644
index 4b8b07d9f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxcommon.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to functions used by backend and console input devices.
- * \see dmxcommon.c \see dmxbackend.c \see dmxconsole.c */
-
-#ifndef _DMXCOMMON_H_
-#define _DMXCOMMON_H_
-
-#define DMX_COMMON_OTHER \
- Display *display; \
- Window window; \
- DMXScreenInfo *be; \
- DMXLocalInputInfoPtr dmxLocal; \
- int initPointerX; \
- int initPointerY; \
- long eventMask; \
- KeybdCtrl kctrl; \
- PtrCtrl mctrl; \
- int kctrlset; \
- int mctrlset; \
- KeybdCtrl savedKctrl; \
- XModifierKeymap *savedModMap; \
- int stateSaved
-
-#ifdef XKB
-#define DMX_COMMON_XKB \
- DMX_COMMON_OTHER; \
- XkbDescPtr xkb; \
- XkbIndicatorRec savedIndicators
-#else
-#define DMX_COMMON_XKB DMX_COMMON_OTHER
-#endif
-
-#ifdef XINPUT
-#define DMX_COMMON_PRIVATE \
- DMX_COMMON_XKB; \
- XDevice *xi
-#else
-#define DMX_COMMON_PRIVATE DMX_COMMON_OTHER
-#endif
-
-#define GETONLYPRIVFROMPRIVATE \
- myPrivate *priv = private
-
-#define GETPRIVFROMPRIVATE \
- GETONLYPRIVFROMPRIVATE; \
- DMXInputInfo *dmxInput = &dmxInputs[priv->dmxLocal->inputIdx]
-
-#define GETDMXLOCALFROMPDEVICE \
- DevicePtr pDev = &pDevice->public; \
- DMXLocalInputInfoPtr dmxLocal = pDev->devicePrivate
-
-#define GETDMXINPUTFROMPRIV \
- DMXInputInfo *dmxInput = &dmxInputs[priv->dmxLocal->inputIdx]
-
-#define GETDMXINPUTFROMPDEVICE \
- GETDMXLOCALFROMPDEVICE; \
- DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx]
-
-#define GETDMXLOCALFROMPDEV \
- DMXLocalInputInfoPtr dmxLocal = pDev->devicePrivate
-
-#define GETDMXINPUTFROMPDEV \
- GETDMXLOCALFROMPDEV; \
- DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx]
-
-#define GETPRIVFROMPDEV \
- GETDMXLOCALFROMPDEV; \
- myPrivate *priv = dmxLocal->private
-
-#define DMX_KEYBOARD_EVENT_MASK \
- (KeyPressMask | KeyReleaseMask | KeymapStateMask)
-
-#define DMX_POINTER_EVENT_MASK \
- (ButtonPressMask | ButtonReleaseMask | PointerMotionMask)
-
-extern void dmxCommonKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern void dmxCommonKbdGetMap(DevicePtr pDev,
- KeySymsPtr pKeySyms, CARD8 *pModMap);
-extern void dmxCommonKbdCtrl(DevicePtr pDev, KeybdCtrl *ctrl);
-extern void dmxCommonKbdBell(DevicePtr pDev, int percent,
- int volume, int pitch, int duration);
-extern int dmxCommonKbdOn(DevicePtr pDev);
-extern void dmxCommonKbdOff(DevicePtr pDev);
-extern void dmxCommonMouGetMap(DevicePtr pDev,
- unsigned char *map, int *nButtons);
-extern void dmxCommonMouCtrl(DevicePtr pDev, PtrCtrl *ctrl);
-extern int dmxCommonMouOn(DevicePtr pDev);
-extern void dmxCommonMouOff(DevicePtr pDev);
-extern int dmxFindPointerScreen(int x, int y);
-
-extern int dmxCommonOthOn(DevicePtr pDev);
-extern void dmxCommonOthOff(DevicePtr pDev);
-extern void dmxCommonOthGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-
- /* helper functions */
-extern pointer dmxCommonCopyPrivate(DeviceIntPtr pDevice);
-extern void dmxCommonSaveState(pointer private);
-extern void dmxCommonRestoreState(pointer private);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxconsole.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxconsole.c
deleted file mode 100644
index 7a313aadd..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxconsole.c
+++ /dev/null
@@ -1,1023 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001-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:
- * David H. Dawes <dawes@xfree86.org>
- * Kevin E. Martin <kem@redhat.com>
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * This file implements the console input devices.
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#define DMX_CONSOLE_DEBUG 0
-#define DMX_WINDOW_DEBUG 0
-
-#include "dmxinputinit.h"
-#include "dmxevents.h"
-#include "dmxconsole.h"
-#include "dmxcommon.h"
-#include "dmxscrinit.h"
-#include "dmxcb.h"
-#include "dmxsync.h"
-
-#include "inputstr.h"
-#include "input.h"
-#include "mipointer.h"
-#include "windowstr.h"
-
-#define CONSOLE_NUM 3
-#define CONSOLE_DEN 4
-#define DMX_CONSOLE_NAME "DMX Console"
-#define DMX_RES_NAME "Xdmx"
-#define DMX_RES_CLASS "XDmx"
-#define CONSOLE_BG_COLOR "gray75"
-#define CONSOLE_FG_COLOR "black"
-#define CONSOLE_SCREEN_BG_COLOR "white"
-#define CONSOLE_SCREEN_FG_COLOR "black"
-#define CONSOLE_SCREEN_DET_COLOR "gray75"
-#define CONSOLE_SCREEN_CUR_COLOR "red"
-
-#if DMX_CONSOLE_DEBUG
-#define DMXDBG0(f) dmxLog(dmxDebug,f)
-#define DMXDBG1(f,a) dmxLog(dmxDebug,f,a)
-#define DMXDBG2(f,a,b) dmxLog(dmxDebug,f,a,b)
-#define DMXDBG3(f,a,b,c) dmxLog(dmxDebug,f,a,b,c)
-#define DMXDBG4(f,a,b,c,d) dmxLog(dmxDebug,f,a,b,c,d)
-#define DMXDBG5(f,a,b,c,d,e) dmxLog(dmxDebug,f,a,b,c,d,e)
-#define DMXDBG6(f,a,b,c,d,e,g) dmxLog(dmxDebug,f,a,b,c,d,e,g)
-#define DMXDBG7(f,a,b,c,d,e,g,h) dmxLog(dmxDebug,f,a,b,c,d,e,g,h)
-#else
-#define DMXDBG0(f)
-#define DMXDBG1(f,a)
-#define DMXDBG2(f,a,b)
-#define DMXDBG3(f,a,b,c)
-#define DMXDBG4(f,a,b,c,d)
-#define DMXDBG5(f,a,b,c,d,e)
-#define DMXDBG6(f,a,b,c,d,e,g)
-#define DMXDBG7(f,a,b,c,d,e,g,h)
-#endif
-
-/* Private area for consoles. */
-typedef struct _myPrivate {
- DMX_COMMON_PRIVATE;
- int lastX;
- int lastY;
- int globalX;
- int globalY;
- int curX;
- int curY;
- int width;
- int height;
- int consWidth;
- int consHeight;
- double xScale;
- double yScale;
- XlibGC gc, gcDet, gcRev, gcCur;
- int grabbed, fine, captured;
- Cursor cursorNormal, cursorGrabbed, cursorEmpty;
- Pixmap pixmap;
-
- CloseScreenProcPtr CloseScreen;
- struct _myPrivate *next; /* for closing multiple consoles */
- int initialized;
- DevicePtr mou, kbd;
-} myPrivate;
-
-static int scalex(myPrivate *priv, int x)
-{
- return (int)((x * priv->xScale) + .5);
-}
-
-static int scaley(myPrivate *priv, int y)
-{
- return (int)((y * priv->yScale) + .5);
-}
-
-static int unscalex(myPrivate *priv, int x)
-{
- return (int)((x / priv->xScale) + .5);
-}
-
-static int unscaley(myPrivate *priv, int y)
-{
- return (int)((y / priv->yScale) + .5);
-}
-
-/** Create the private area for \a pDevice. */
-pointer dmxConsoleCreatePrivate(DeviceIntPtr pDevice)
-{
- GETDMXLOCALFROMPDEVICE;
- myPrivate *priv = xalloc(sizeof(*priv));
- memset(priv, 0, sizeof(*priv));
- priv->dmxLocal = dmxLocal;
- return priv;
-}
-
-/** If \a private is non-NULL, free its associated memory. */
-void dmxConsoleDestroyPrivate(pointer private)
-{
- if (private) xfree(private);
-}
-
-static void dmxConsoleDrawFineCursor(myPrivate *priv, XRectangle *rect)
-{
- int size = 6;
- int x, y;
-
- XDrawLine(priv->display, priv->pixmap, priv->gcCur,
- x = scalex(priv, priv->globalX) - size,
- scaley(priv, priv->globalY),
- scalex(priv, priv->globalX) + size,
- scaley(priv, priv->globalY));
- XDrawLine(priv->display, priv->pixmap, priv->gcCur,
- scalex(priv, priv->globalX),
- y = scaley(priv, priv->globalY) - size,
- scalex(priv, priv->globalX),
- scaley(priv, priv->globalY) + size);
- if (priv->grabbed) {
- XDrawLine(priv->display, priv->pixmap, priv->gcCur,
- scalex(priv, priv->globalX) - (int)(size / 1.4),
- scaley(priv, priv->globalY) - (int)(size / 1.4),
- scalex(priv, priv->globalX) + (int)(size / 1.4),
- scaley(priv, priv->globalY) + (int)(size / 1.4));
- XDrawLine(priv->display, priv->pixmap, priv->gcCur,
- scalex(priv, priv->globalX) - (int)(size / 1.4),
- scaley(priv, priv->globalY) + (int)(size / 1.4),
- scalex(priv, priv->globalX) + (int)(size / 1.4),
- scaley(priv, priv->globalY) - (int)(size / 1.4));
- }
- if (rect) {
- rect->x = x;
- rect->y = y;
- rect->width = 2 * size;
- rect->height = 2 * size;
- }
-}
-
-static void dmxConsoleDrawWindows(pointer private)
-{
- GETONLYPRIVFROMPRIVATE;
- Display *dpy = priv->display;
- int i;
- Region whole, used, avail;
- XRectangle rect;
-
- whole = XCreateRegion();
- used = XCreateRegion();
- avail = XCreateRegion();
- rect.x = 0;
- rect.y = 0;
- rect.width = priv->consWidth;
- rect.height = priv->consHeight;
- XUnionRectWithRegion(&rect, whole, whole);
-
- for (i = 0; i < dmxNumScreens; i++) {
- WindowPtr pRoot = WindowTable[i];
- WindowPtr pChild;
-
-#if DMX_WINDOW_DEBUG
- dmxLog(dmxDebug, "%lu %p %p %p 2\n",
- pRoot->drawable.id,
- pRoot->parent, pRoot->firstChild, pRoot->lastChild);
-#endif
-
- for (pChild = pRoot->firstChild; pChild; pChild = pChild->nextSib) {
- if (pChild->mapped
- && pChild->realized) {
-#if DMX_WINDOW_DEBUG
- dmxLog(dmxDebug, " %p %d,%d %dx%d %d %d %d RECTS\n",
- pChild,
- pChild->drawable.x,
- pChild->drawable.y,
- pChild->drawable.width,
- pChild->drawable.height,
- pChild->visibility,
- pChild->overrideRedirect,
- REGION_NUM_RECTS(&pChild->clipList));
-#endif
- rect.x = scalex(priv, pChild->drawable.x
- + dixScreenOrigins[i].x);
- rect.y = scaley(priv, pChild->drawable.y
- + dixScreenOrigins[i].y);
- rect.width = scalex(priv, pChild->drawable.width);
- rect.height = scaley(priv, pChild->drawable.height);
- XDrawRectangle(dpy, priv->pixmap, priv->gc,
- rect.x, rect.y, rect.width, rect.height);
- XUnionRectWithRegion(&rect, used, used);
- XSubtractRegion(whole, used, avail);
- XSetRegion(dpy, priv->gc, avail);
- }
- }
-#ifdef PANORAMIX
- if (!noPanoramiXExtension) break; /* Screen 0 valid with Xinerama */
-#endif
- }
- XDestroyRegion(avail);
- XDestroyRegion(used);
- XDestroyRegion(whole);
- XSetClipMask(dpy, priv->gc, None);
-}
-
-static void dmxConsoleDraw(myPrivate *priv, int updateCursor, int update)
-{
- GETDMXINPUTFROMPRIV;
- Display *dpy = priv->display;
- int i;
-
- XFillRectangle(dpy, priv->pixmap, priv->gc, 0, 0,
- priv->consWidth, priv->consHeight);
-
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
- XFillRectangle(dpy, priv->pixmap,
- dmxScreen->beDisplay ? priv->gcRev : priv->gcDet,
- scalex(priv, dixScreenOrigins[i].x),
- scaley(priv, dixScreenOrigins[i].y),
- scalex(priv, screenInfo.screens[i]->width),
- scaley(priv, screenInfo.screens[i]->height));
- }
- for (i = 0; i < dmxNumScreens; i++) {
- XDrawRectangle(dpy, priv->pixmap, priv->gc,
- scalex(priv, dixScreenOrigins[i].x),
- scaley(priv, dixScreenOrigins[i].y),
- scalex(priv, screenInfo.screens[i]->width),
- scaley(priv, screenInfo.screens[i]->height));
- }
- if (dmxInput->windows) dmxConsoleDrawWindows(priv);
- if (priv->fine && updateCursor) dmxConsoleDrawFineCursor(priv, 0);
- if (update) {
- XCopyArea(priv->display, priv->pixmap, priv->window, priv->gc,
- 0, 0, priv->consWidth, priv->consHeight, 0, 0);
- XSync(priv->display, False); /* Not a backend display */
- }
-}
-
-static void dmxConsoleClearCursor(myPrivate *priv, int x, int y,
- XRectangle *rect)
-{
- int cw = 14, ch = 14; /* Clear width and height */
-
- rect->x = scalex(priv, x) - cw/2;
- rect->y = scaley(priv, y) - ch/2;
- rect->width = cw;
- rect->height = ch;
- XSetClipRectangles(priv->display, priv->gc, 0, 0, rect, 1, Unsorted);
- XSetClipRectangles(priv->display, priv->gcDet, 0, 0, rect, 1, Unsorted);
- XSetClipRectangles(priv->display, priv->gcRev, 0, 0, rect, 1, Unsorted);
- dmxConsoleDraw(priv, 0, 0);
- XSetClipMask(priv->display, priv->gc, None);
- XSetClipMask(priv->display, priv->gcDet, None);
- XSetClipMask(priv->display, priv->gcRev, None);
-}
-
-
-static void dmxConsoleUpdateFineCursor(myPrivate *priv)
-{
- int leave = 0;
- XRectangle rects[2];
-
- dmxConsoleClearCursor(priv, priv->globalX, priv->globalY, &rects[0]);
- if (priv->dmxLocal->sendsCore) {
- dmxGetGlobalPosition(&priv->globalX, &priv->globalY);
- } else {
- priv->globalX = priv->dmxLocal->lastX;
- priv->globalY = priv->dmxLocal->lastY;
- }
-
- priv->lastX = scalex(priv, priv->width / 2);
- priv->lastY = scaley(priv, priv->height / 2);
-
- /* Compute new warp position, which may be
- outside the window */
- if (priv->globalX < 1 || priv->globalX >= priv->width) {
- if (priv->globalX < 1) priv->lastX = 0;
- else priv->lastX = scalex(priv, priv->width);
- priv->lastY = scaley(priv, priv->globalY);
- ++leave;
- }
- if (priv->globalY < 1 || priv->globalY >= priv->height) {
- if (priv->globalY < 1) priv->lastY = 0;
- else priv->lastY = scaley(priv, priv->height);
- priv->lastX = scalex(priv, priv->globalX);
- ++leave;
- }
-
- /* Draw pseudo cursor in window */
- dmxConsoleDrawFineCursor(priv, &rects[1]);
-
- XSetClipRectangles(priv->display, priv->gc, 0, 0, rects, 2, Unsorted);
- XCopyArea(priv->display, priv->pixmap, priv->window, priv->gc,
- 0, 0, priv->consWidth, priv->consHeight, 0, 0);
- XSetClipMask(priv->display, priv->gc, None);
-
- DMXDBG2("dmxConsoleUpdateFineCursor: WARP %d %d\n",
- priv->lastX, priv->lastY);
- XWarpPointer(priv->display, priv->window, priv->window,
- 0, 0, 0, 0, priv->lastX, priv->lastY);
- XSync(priv->display, False); /* Not a backend display */
-
- if (leave) {
- XEvent X;
- while (XCheckMaskEvent(priv->display, PointerMotionMask, &X)) {
- if (X.type == MotionNotify) {
- if (X.xmotion.x != priv->lastX || X.xmotion.y != priv->lastY) {
- DMXDBG4("Ignoring motion to %d %d after leave frm %d %d\n",
- X.xmotion.x, X.xmotion.y,
- priv->lastX, priv->lastY);
- }
- } else {
- dmxLog(dmxInfo, "Ignoring event (%d): %s ****************\n",
- X.type, dmxEventName(X.type));
- }
- }
- }
- DMXDBG6("dmxConsoleUpdateFineCursor: Warp %d %d on %d %d [%d %d]\n",
- priv->lastX, priv->lastY,
- scalex(priv, priv->width),
- scaley(priv, priv->height),
- priv->globalX, priv->globalY);
-}
-
-/** Whenever the window layout (size, position, stacking order) might be
- * changed, this routine is called with the \a pWindow that changed and
- * the \a type of change. This routine is called in a conservative
- * fashion: the actual layout of the windows of the screen might not
- * have had any human-visible changes. */
-void dmxConsoleUpdateInfo(pointer private, DMXUpdateType type,
- WindowPtr pWindow)
-{
- GETONLYPRIVFROMPRIVATE;
- dmxConsoleDraw(priv, 1, 1);
-}
-
-static void dmxConsoleMoveAbsolute(myPrivate *priv, int x, int y,
- DevicePtr pDev, dmxMotionProcPtr motion,
- DMXBlockType block)
-{
- int tmpX, tmpY, v[2];
-
- tmpX = unscalex(priv, x);
- tmpY = unscalex(priv, y);
- DMXDBG6("dmxConsoleMoveAbsolute(,%d,%d) %d %d =? %d %d\n",
- x, y, tmpX, tmpY, priv->curX, priv->curY);
- if (tmpX == priv->curX && tmpY == priv->curY) return;
- v[0] = unscalex(priv, x);
- v[1] = unscaley(priv, y);
- motion(pDev, v, 0, 2, DMX_ABSOLUTE_CONFINED, block);
- /* dmxConsoleUpdatePosition gets called here by dmxCoreMotion */
-}
-
-static void dmxConsoleMoveRelative(myPrivate *priv, int x, int y,
- DevicePtr pDev, dmxMotionProcPtr motion,
- DMXBlockType block)
-{
- int v[2];
- /* Ignore the event generated from * warping back to middle */
- if (x == priv->lastX && y == priv->lastY) return;
- v[0] = priv->lastX - x;
- v[1] = priv->lastY - y;
- motion(pDev, v, 0, 2, DMX_RELATIVE, block);
- /* dmxConsoleUpdatePosition gets called here by dmxCoreMotion */
-}
-
-/** This routine gets called from #dmxCoreMotion for each motion. This
- * allows the console's notion of the cursor postion to change when
- * another input device actually caused the change. */
-void dmxConsoleUpdatePosition(pointer private, int x, int y)
-{
- GETONLYPRIVFROMPRIVATE;
- int tmpX, tmpY;
- Display *dpy = priv->display;
- static unsigned long dmxGeneration = 0;
-
-
- tmpX = scalex(priv, x);
- tmpY = scaley(priv, y);
- DMXDBG6("dmxConsoleUpdatePosition(,%d,%d) new=%d,%d dims=%d,%d\n",
- x, y, tmpX, tmpY, priv->consWidth, priv->consHeight);
-
- if (priv->fine) dmxConsoleUpdateFineCursor(priv);
- if (tmpX != priv->curX || tmpY != priv->curY) {
- if (tmpX < 0) tmpX = 0;
- if (tmpY < 0) tmpY = 0;
- if (tmpX >= priv->consWidth) tmpX = priv->consWidth - 1;
- if (tmpY >= priv->consHeight) tmpY = priv->consHeight - 1;
- priv->curX = tmpX;
- priv->curY = tmpY;
- if (!priv->fine) {
- DMXDBG2(" WARP B %d %d\n", priv->curX, priv->curY);
- XWarpPointer(dpy, priv->window,
- priv->window, 0, 0, 0, 0, tmpX, tmpY);
- XSync(dpy, False); /* Not a backend display */
- }
- }
-
- if (dmxGeneration != serverGeneration) {
- dmxGeneration = serverGeneration;
- dmxConsoleDraw(priv, 1, 1);
- }
-}
-
-/** Collect all pending events from the console's display. Plase these
- * events on the server event queue using the \a motion and \a enqueue
- * routines. The \a checkspecial routine is used to check for special
- * keys that need handling. \a block tells if signals should be blocked
- * when updating the event queue. */
-void dmxConsoleCollectEvents(DevicePtr pDev,
- dmxMotionProcPtr motion,
- dmxEnqueueProcPtr enqueue,
- dmxCheckSpecialProcPtr checkspecial,
- DMXBlockType block)
-{
- GETPRIVFROMPDEV;
- GETDMXINPUTFROMPRIV;
- Display *dpy = priv->display;
- Window win = priv->window;
- int width = priv->width;
- int height = priv->height;
- XEvent X, N;
- XSetWindowAttributes attribs;
- static int rInitialized = 0;
- static Region r;
- XRectangle rect;
- static int raising = 0, raiseX, raiseY; /* FIXME */
-
- while (XPending(dpy)) {
- XNextEvent(dpy, &X);
- switch(X.type) {
- case VisibilityNotify:
- break;
- case Expose:
- DMXDBG5("dmxConsoleCollectEvents: Expose #%d %d %d %d %d\n",
- X.xexpose.count,
- X.xexpose.x, X.xexpose.y,
- X.xexpose.width, X.xexpose.height);
- if (!rInitialized++) r = XCreateRegion();
- rect.x = X.xexpose.x;
- rect.y = X.xexpose.y;
- rect.width = X.xexpose.width;
- rect.height = X.xexpose.height;
- XUnionRectWithRegion(&rect, r, r);
- if (X.xexpose.count == 0) {
- XSetRegion(dpy, priv->gc, r);
- XSetRegion(dpy, priv->gcDet, r);
- XSetRegion(dpy, priv->gcRev, r);
- dmxConsoleDraw(priv, 1, 1);
- XSetClipMask(dpy, priv->gc, None);
- XSetClipMask(dpy, priv->gcDet, None);
- XSetClipMask(dpy, priv->gcRev, None);
- XDestroyRegion(r);
- rInitialized = 0;
- }
- break;
- case ResizeRequest:
- DMXDBG2("dmxConsoleCollectEvents: Resize %d %d\n",
- X.xresizerequest.width, X.xresizerequest.height);
- priv->consWidth = X.xresizerequest.width;
- priv->consHeight = X.xresizerequest.height;
- priv->xScale = (double)priv->consWidth / width;
- priv->yScale = (double)priv->consHeight / height;
- attribs.override_redirect = True;
- XChangeWindowAttributes(dpy, win, CWOverrideRedirect, &attribs);
- XResizeWindow(dpy, win, priv->consWidth, priv->consHeight);
- XFreePixmap(dpy, priv->pixmap);
- priv->pixmap = XCreatePixmap(dpy,
- RootWindow(dpy, DefaultScreen(dpy)),
- priv->consWidth,
- priv->consHeight,
- DefaultDepth(dpy,DefaultScreen(dpy)));
- dmxConsoleDraw(priv, 1, 1);
- attribs.override_redirect = False;
- XChangeWindowAttributes(dpy, win, CWOverrideRedirect, &attribs);
- break;
- case LeaveNotify:
- DMXDBG4("dmxConsoleCollectEvents: Leave @ %d,%d; r=%d f=%d\n",
- X.xcrossing.x, X.xcrossing.y, raising, priv->fine);
- if (!priv->captured) dmxCommonRestoreState(priv);
- else {
- dmxConsoleUncapture(dmxInput);
- dmxCommonRestoreState(priv);
- }
- break;
- case EnterNotify:
- DMXDBG6("dmxConsoleCollectEvents: Enter %d,%d r=%d f=%d (%d,%d)\n",
- X.xcrossing.x, X.xcrossing.y, raising, priv->fine,
- priv->curX, priv->curY);
- dmxCommonSaveState(priv);
- if (raising) {
- raising = 0;
- dmxConsoleMoveAbsolute(priv, raiseX, raiseY,
- priv->mou, motion, block);
- } else {
- if (priv->fine) {
- /* The raise will generate an event near the center,
- * which is not where the cursor should be. So we
- * save the real position, do the raise, and move
- * the cursor here again after the raise generates
- * the event. */
- raising = 1;
- raiseX = X.xcrossing.x;
- raiseY = X.xcrossing.y;
- XRaiseWindow(dpy, priv->window);
- }
- XSync(dpy, False); /* Not a backend display */
- if (!X.xcrossing.x && !X.xcrossing.y)
- dmxConsoleMoveAbsolute(priv, priv->curX, priv->curY,
- priv->mou, motion, block);
- }
- break;
- case MotionNotify:
- if (priv->curX == X.xmotion.x && priv->curY == X.xmotion.y)
- continue;
- if (XPending(dpy)) { /* do motion compression */
- XPeekEvent(dpy, &N);
- if (N.type == MotionNotify) continue;
- }
- DMXDBG2("dmxConsoleCollectEvents: Motion %d %d\n",
- X.xmotion.x, X.xmotion.y);
- if (raising) {
- raising = 0;
- dmxConsoleMoveAbsolute(priv, raiseX, raiseY,
- priv->mou, motion, block);
- } else {
- if (priv->fine)
- dmxConsoleMoveRelative(priv, X.xmotion.x, X.xmotion.y,
- priv->mou, motion, block);
- else
- dmxConsoleMoveAbsolute(priv, X.xmotion.x, X.xmotion.y,
- priv->mou, motion, block);
- }
- break;
- case KeyPress:
- case KeyRelease:
- enqueue(priv->kbd, X.type, X.xkey.keycode, 0, NULL, block);
- break;
- default:
- /* Pass the whole event here, because
- * this may be an extension event. */
- enqueue(priv->mou, X.type, X.xbutton.button, 0, &X, block);
- break;
- }
- }
-}
-
-static void dmxCloseConsole(myPrivate *priv)
-{
- GETDMXINPUTFROMPRIV;
- dmxCommonRestoreState(priv);
- if (priv->display) {
- XFreeGC(priv->display, priv->gc);
- XFreeGC(priv->display, priv->gcDet);
- XFreeGC(priv->display, priv->gcRev);
- XFreeGC(priv->display, priv->gcCur);
- if (!dmxInput->console) XCloseDisplay(priv->display);
- }
- priv->display = NULL;
-}
-
-static Bool dmxCloseConsoleScreen(int idx, ScreenPtr pScreen)
-{
- myPrivate *priv, *last;
-
- for (last = priv = pScreen->devPrivates[dmxScreenPrivateIndex].ptr;
- priv;
- priv = priv->next) dmxCloseConsole(last = priv);
-
- DMX_UNWRAP(CloseScreen, last, pScreen);
- return pScreen->CloseScreen(idx, pScreen);
-}
-
-static Cursor dmxConsoleCreateEmptyCursor(myPrivate *priv)
-{
- char noCursorData[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
- Pixmap pixmap;
- Cursor cursor;
- XColor color, tmpColor;
- Display *dpy = priv->display;
-
- /* Create empty cursor for window */
- pixmap = XCreateBitmapFromData(priv->display, priv->window,
- noCursorData, 8, 8);
- if (!XAllocNamedColor(dpy, DefaultColormap(dpy, DefaultScreen(dpy)),
- "black",
- &color,
- &tmpColor))
- dmxLog(dmxFatal, "Cannot allocate color for cursor\n");
- cursor = XCreatePixmapCursor(dpy, pixmap, pixmap, &color, &color, 0, 0);
- XFreePixmap(dpy, pixmap);
- return cursor;
-}
-
-static void dmxConsoleComputeWidthHeight(myPrivate *priv,
- int *width, int *height,
- double *xScale, double *yScale,
- int *consWidth, int *consHeight)
-{
- int screen;
- Display *dpy = priv->display;
-
- *width = 0;
- *height = 0;
- *xScale = 1.0;
- *yScale = 1.0;
-
- screen = DefaultScreen(dpy);
- *consWidth = DisplayWidth(dpy, screen) * CONSOLE_NUM / CONSOLE_DEN;
- *consHeight = DisplayHeight(dpy, screen) * CONSOLE_NUM / CONSOLE_DEN;
-
- if (*consWidth < 1) *consWidth = 1;
- if (*consHeight < 1) *consHeight = 1;
-
-#if 1
- /* Always keep the console size similar
- * to the global bounding box. */
- *width = dmxGlobalWidth;
- *height = dmxGlobalHeight;
-#else
- /* Make the console window as big as
- * possible by computing the visible
- * bounding box. */
- for (i = 0; i < dmxNumScreens; i++) {
- if (dixScreenOrigins[i].x+screenInfo.screens[i]->width > *width)
- *width = dixScreenOrigins[i].x+screenInfo.screens[i]->width;
-
- if (dixScreenOrigins[i].y+screenInfo.screens[i]->height > *height)
- *height = dixScreenOrigins[i].y+screenInfo.screens[i]->height;
- }
-#endif
-
- if ((double)*consWidth / *width < (double)*consHeight / *height)
- *xScale = *yScale = (double)*consWidth / *width;
- else
- *xScale = *yScale = (double)*consHeight / *height;
-
- *consWidth = scalex(priv, *width);
- *consHeight = scaley(priv, *height);
- if (*consWidth < 1) *consWidth = 1;
- if (*consHeight < 1) *consHeight = 1;
-}
-
-/** Re-initialized the console device described by \a pDev (after a
- * reconfig). */
-void dmxConsoleReInit(DevicePtr pDev)
-{
- GETPRIVFROMPDEV;
- Display *dpy = priv->display;
-
- if (!priv || !priv->initialized) return;
-
- dmxConsoleComputeWidthHeight(priv,
- &priv->width, &priv->height,
- &priv->xScale, &priv->yScale,
- &priv->consWidth, &priv->consHeight);
- XResizeWindow(dpy, priv->window, priv->consWidth, priv->consHeight);
- XFreePixmap(dpy, priv->pixmap);
- priv->pixmap = XCreatePixmap(dpy,
- RootWindow(dpy, DefaultScreen(dpy)),
- priv->consWidth,
- priv->consHeight,
- DefaultDepth(dpy,DefaultScreen(dpy)));
- dmxConsoleDraw(priv, 1, 1);
-}
-
-/** Initialized the console device described by \a pDev. */
-void dmxConsoleInit(DevicePtr pDev)
-{
- GETPRIVFROMPDEV;
- DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx];
- int screen;
- unsigned long mask;
- XSetWindowAttributes attribs;
- Display *dpy;
- Window win;
- XGCValues gcvals;
- XColor color;
- XClassHint class_hints;
- unsigned long tmp;
-
- if (dmxLocal->type == DMX_LOCAL_MOUSE) priv->mou = pDev;
- if (dmxLocal->type == DMX_LOCAL_KEYBOARD) priv->kbd = pDev;
- if (priv->initialized++) return; /* Only do once for mouse/keyboard pair */
-
- if (!(dpy = priv->display = XOpenDisplay(dmxInput->name)))
- dmxLog(dmxFatal,
- "dmxOpenConsole: cannot open console display %s\n",
- dmxInput->name);
-
- /* Set up defaults */
- dmxConsoleComputeWidthHeight(priv,
- &priv->width, &priv->height,
- &priv->xScale, &priv->yScale,
- &priv->consWidth, &priv->consHeight);
-
- /* Private initialization using computed values or constants. */
- screen = DefaultScreen(dpy);
- priv->initPointerX = scalex(priv, priv->width / 2);
- priv->initPointerY = scaley(priv, priv->height / 2);
- priv->eventMask = (ButtonPressMask
- | ButtonReleaseMask
- | PointerMotionMask
- | EnterWindowMask
- | LeaveWindowMask
- | KeyPressMask
- | KeyReleaseMask
- | ExposureMask
- | ResizeRedirectMask);
-
- mask = CWBackPixel | CWEventMask | CWColormap | CWOverrideRedirect;
- attribs.colormap = DefaultColormap(dpy, screen);
- if (XParseColor(dpy, attribs.colormap, CONSOLE_BG_COLOR, &color)
- && XAllocColor(dpy, attribs.colormap, &color)) {
- attribs.background_pixel = color.pixel;
- } else
- attribs.background_pixel = WhitePixel(dpy, screen);
-
- attribs.event_mask = priv->eventMask;
- attribs.override_redirect = False;
-
- win = priv->window = XCreateWindow(dpy,
- RootWindow(dpy, screen),
- 0, 0, priv->consWidth, priv->consHeight,
- 0,
- DefaultDepth(dpy, screen),
- InputOutput,
- DefaultVisual(dpy, screen),
- mask, &attribs);
- priv->pixmap = XCreatePixmap(dpy, RootWindow(dpy, screen),
- priv->consWidth, priv->consHeight,
- DefaultDepth(dpy, screen));
-
- /* Set up properties */
- XStoreName(dpy, win, DMX_CONSOLE_NAME);
- class_hints.res_name = DMX_RES_NAME;
- class_hints.res_class = DMX_RES_CLASS;
- XSetClassHint(dpy, win, &class_hints);
-
-
- /* Map the window */
- XMapWindow(dpy, win);
-
- /* Create cursors */
- priv->cursorNormal = XCreateFontCursor(dpy, XC_circle);
- priv->cursorGrabbed = XCreateFontCursor(dpy, XC_spider);
- priv->cursorEmpty = dmxConsoleCreateEmptyCursor(priv);
- XDefineCursor(dpy, priv->window, priv->cursorNormal);
-
- /* Create GC */
- mask = (GCFunction | GCPlaneMask | GCClipMask | GCForeground |
- GCBackground | GCLineWidth | GCLineStyle | GCCapStyle |
- GCFillStyle | GCGraphicsExposures);
- gcvals.function = GXcopy;
- gcvals.plane_mask = AllPlanes;
- gcvals.clip_mask = None;
- if (XParseColor(dpy, attribs.colormap, CONSOLE_SCREEN_FG_COLOR, &color)
- && XAllocColor(dpy, attribs.colormap, &color)) {
- gcvals.foreground = color.pixel;
- } else
- gcvals.foreground = BlackPixel(dpy, screen);
- if (XParseColor(dpy, attribs.colormap, CONSOLE_SCREEN_BG_COLOR, &color)
- && XAllocColor(dpy, attribs.colormap, &color)) {
- gcvals.background = color.pixel;
- } else
- gcvals.background = WhitePixel(dpy, screen);
- gcvals.line_width = 0;
- gcvals.line_style = LineSolid;
- gcvals.cap_style = CapNotLast;
- gcvals.fill_style = FillSolid;
- gcvals.graphics_exposures = False;
-
- priv->gc = XCreateGC(dpy, win, mask, &gcvals);
-
- tmp = gcvals.foreground;
- if (XParseColor(dpy, attribs.colormap, CONSOLE_SCREEN_DET_COLOR, &color)
- && XAllocColor(dpy, attribs.colormap, &color)) {
- gcvals.foreground = color.pixel;
- } else
- gcvals.foreground = BlackPixel(dpy, screen);
- priv->gcDet = XCreateGC(dpy, win, mask, &gcvals);
- gcvals.foreground = tmp;
-
- tmp = gcvals.background;
- gcvals.background = gcvals.foreground;
- gcvals.foreground = tmp;
- priv->gcRev = XCreateGC(dpy, win, mask, &gcvals);
-
- gcvals.background = gcvals.foreground;
- if (XParseColor(dpy, attribs.colormap, CONSOLE_SCREEN_CUR_COLOR, &color)
- && XAllocColor(dpy, attribs.colormap, &color)) {
- gcvals.foreground = color.pixel;
- } else
- gcvals.foreground = BlackPixel(dpy, screen);
- priv->gcCur = XCreateGC(dpy, win, mask, &gcvals);
-
- dmxConsoleDraw(priv, 1, 1);
-
- if (screenInfo.screens[0]->devPrivates[dmxScreenPrivateIndex].ptr)
- priv->next = (screenInfo.screens[0]
- ->devPrivates[dmxScreenPrivateIndex].ptr);
- else
- DMX_WRAP(CloseScreen, dmxCloseConsoleScreen,
- priv, screenInfo.screens[0]);
- screenInfo.screens[0]->devPrivates[dmxScreenPrivateIndex].ptr = priv;
-}
-
-/** Fill in the \a info structure for the specified \a pDev. Only used
- * for pointers. */
-void dmxConsoleMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- info->buttonClass = 1;
- dmxCommonMouGetMap(pDev, info->map, &info->numButtons);
- info->valuatorClass = 1;
- info->numRelAxes = 2;
- info->minval[0] = 0;
- info->maxval[0] = 0;
- info->res[0] = 1;
- info->minres[0] = 0;
- info->maxres[0] = 1;
- info->ptrFeedbackClass = 1;
-}
-
-/** Fill in the \a info structure for the specified \a pDev. Only used
- * for keyboard. */
-void dmxConsoleKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- dmxCommonKbdGetInfo(pDev, info);
- info->keyboard = 1;
- info->keyClass = 1;
- dmxCommonKbdGetMap(pDev, &info->keySyms, info->modMap);
- info->freemap = 1;
- info->focusClass = 1;
- info->kbdFeedbackClass = 1;
-}
-
-/** Handle special console-only keys. */
-int dmxConsoleFunctions(pointer private, DMXFunctionType function)
-{
- GETONLYPRIVFROMPRIVATE;
- XRectangle rect;
- Display *dpy = priv->display;
-
- switch (function) {
- case DMX_FUNCTION_FINE:
- if (priv->fine) {
- priv->fine = 0;
- dmxConsoleClearCursor(priv, priv->globalX, priv->globalY, &rect);
- XSetClipRectangles(dpy, priv->gc, 0, 0, &rect, 1, Unsorted);
- XCopyArea(dpy, priv->pixmap, priv->window, priv->gc,
- 0, 0, priv->consWidth, priv->consHeight, 0, 0);
- XSetClipMask(dpy, priv->gc, None);
-
- XDefineCursor(dpy, priv->window,
- priv->grabbed
- ? priv->cursorGrabbed
- : priv->cursorNormal);
- XWarpPointer(dpy, priv->window, priv->window,
- 0, 0, 0, 0,
- scalex(priv, priv->globalX),
- scaley(priv, priv->globalY));
- XSync(dpy, False); /* Not a backend display */
- } else {
- priv->fine = 1;
- XRaiseWindow(dpy, priv->window);
- XDefineCursor(dpy, priv->window, priv->cursorEmpty);
- dmxConsoleUpdateFineCursor(priv);
- }
- return 1;
- case DMX_FUNCTION_GRAB:
- if (priv->grabbed) {
- XUngrabKeyboard(dpy, CurrentTime);
- XUngrabPointer(dpy, CurrentTime);
- XDefineCursor(dpy, priv->window,
- priv->fine
- ? priv->cursorEmpty
- : priv->cursorNormal);
- } else {
- if (XGrabPointer(dpy, priv->window, True,
- 0, GrabModeAsync, GrabModeAsync, priv->window,
- None, CurrentTime)) {
- dmxLog(dmxError, "XGrabPointer failed\n");
- return 0;
- }
- if (XGrabKeyboard(dpy, priv->window, True,
- GrabModeAsync, GrabModeAsync, CurrentTime)) {
- dmxLog(dmxError, "XGrabKeyboard failed\n");
- XUngrabPointer(dpy, CurrentTime);
- return 0;
- }
- XDefineCursor(dpy, priv->window,
- priv->fine
- ? priv->cursorEmpty
- : priv->cursorGrabbed);
- }
- priv->grabbed = !priv->grabbed;
- if (priv->fine) dmxConsoleUpdateFineCursor(priv);
- return 1;
- case DMX_FUNCTION_TERMINATE:
- return 1;
- default:
- return 0;
- }
-}
-
-static void dmxDump(void)
-{
- int i, j;
- DMXInputInfo *dmxInput;
- XEvent X;
-
- for (i = 0, dmxInput = &dmxInputs[0]; i < dmxNumInputs; i++, dmxInput++) {
- for (j = 0; j < dmxInput->numDevs; j++) {
- DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[j];
- myPrivate *priv = dmxLocal->private;
- while (priv
- && priv->display
- && XCheckTypedEvent(priv->display, MotionNotify, &X)) {
- DMXDBG4("dmxDump: %s/%d threw event away %d %s\n",
- dmxInput->name, j, X.type, dmxEventName(X.type));
- }
- }
- }
-}
-
-/** This routine is used to warp the pointer into the console window
- * from anywhere on the screen. It is used when backend and console
- * input are both being taken from the same X display. */
-void dmxConsoleCapture(DMXInputInfo *dmxInput)
-{
- int i;
- XEvent X;
-
- DMXDBG0("dmxConsoleCapture\n");
- dmxSync(NULL, TRUE);
- for (i = 0; i < dmxInput->numDevs; i++) {
- DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[i];
- myPrivate *priv = dmxLocal->private;
- if (dmxLocal->extType != DMX_LOCAL_TYPE_CONSOLE) continue;
- if (dmxLocal->type != DMX_LOCAL_MOUSE) continue;
- if (priv->captured) continue;
- priv->captured = 2; /* Ungrab only after proximal events. */
- XRaiseWindow(priv->display, priv->window);
- XSync(priv->display, False); /* Not a backend display */
- while (XCheckTypedEvent(priv->display, MotionNotify, &X)) {
- DMXDBG3(" Ignoring motion to %d %d after capture on %s\n",
- X.xmotion.x, X.xmotion.y, dmxInput->name);
- }
- XWarpPointer(priv->display, None,
- priv->window, 0, 0, 0, 0, priv->curX, priv->curY);
- XSync(priv->display, False); /* Not a backend display */
- dmxDump();
- if (priv->fine) dmxConsoleUpdateFineCursor(priv);
- }
-}
-
-/** Undo the capture that was done by #dmxConsoleCapture. */
-void dmxConsoleUncapture(DMXInputInfo *dmxInput)
-{
- int i;
-
- DMXDBG0("dmxConsoleUncapture\n");
- dmxSync(NULL, TRUE);
- for (i = 0; i < dmxInput->numDevs; i++) {
- DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[i];
- myPrivate *priv = dmxLocal->private;
- if (dmxLocal->extType != DMX_LOCAL_TYPE_CONSOLE) continue;
- if (dmxLocal->type != DMX_LOCAL_MOUSE) continue;
- if (!priv->captured) continue;
- priv->captured = 0;
- XSync(priv->display, False); /* Not a backend display */
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxconsole.h b/nx-X11/programs/Xserver/hw/dmx/input/dmxconsole.h
deleted file mode 100644
index 85516fb5b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxconsole.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface for console device support. \see dmxconsole.c \see dmxcommon.c */
-
-#ifndef _DMXCONSOLE_H_
-#define _DMXCONSOLE_H_
-
-extern pointer dmxConsoleCreatePrivate(DeviceIntPtr pDevice);
-extern void dmxConsoleDestroyPrivate(pointer private);
-extern void dmxConsoleInit(DevicePtr pDev);
-extern void dmxConsoleReInit(DevicePtr pDev);
-extern void dmxConsoleMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern void dmxConsoleKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern void dmxConsoleCollectEvents(DevicePtr pDev,
- dmxMotionProcPtr motion,
- dmxEnqueueProcPtr enqueue,
- dmxCheckSpecialProcPtr checkspecial,
- DMXBlockType block);
-extern int dmxConsoleFunctions(pointer private, DMXFunctionType function);
-extern void dmxConsoleUpdatePosition(pointer private, int x, int y);
-extern void dmxConsoleKbdSetCtrl(pointer private, KeybdCtrl *ctrl);
-extern void dmxConsoleCapture(DMXInputInfo *dmxInput);
-extern void dmxConsoleUncapture(DMXInputInfo *dmxInput);
-extern void dmxConsoleUpdateInfo(pointer private,
- DMXUpdateType, WindowPtr pWindow);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxdetach.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxdetach.c
deleted file mode 100644
index d2e6b652f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxdetach.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2004 Red Hat Inc., Raleigh, 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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Provide support and helper functions for input detach and attach. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmxinputinit.h"
-#include "dmxextension.h" /* For dmxInputCount */
-
-/** Search for input associated with \a dmxScreen, and detach. */
-void dmxInputDetach(DMXScreenInfo *dmxScreen, Bool reserveId)
-{
- int i;
-
- for (i = 0; i < dmxNumInputs; i++) {
- DMXInputInfo *dmxInput = &dmxInputs[i];
- if (dmxInput->scrnIdx == dmxScreen->index) {
- dmxLogInput(dmxInput, "Detaching (%sreserved)\n",
- reserveId ? "" : "not ");
- dmxInput->detached = True;
- return;
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxdummy.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxdummy.c
deleted file mode 100644
index d6e614e51..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxdummy.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Provide mouse and keyboard that are sufficient for starting the X
- * server, but that don't actually provide any events. This is useful
- * for testing. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmx.h"
-#include "dmxinputinit.h"
-#include "dmxdummy.h"
-
-/** Return information about the dummy keyboard device specified in \a pDev
- * into the structure pointed to by \a info. The keyboard is set up to
- * have 1 valid key code that is \a NoSymbol */
-void dmxDummyKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- static KeySym keyboard_mapping = NoSymbol;
-
- info->keyboard = 1;
- info->keyClass = 1;
- info->keySyms.minKeyCode = 8;
- info->keySyms.maxKeyCode = 8;
- info->keySyms.mapWidth = 1;
- info->keySyms.map = &keyboard_mapping;
- info->freemap = 0;
- info->focusClass = 1;
- info->kbdFeedbackClass = 1;
-#ifdef XKB
- info->force = 1;
-#endif
-}
-
-/** Return information about the dummy mouse device specified in \a pDev
- * into the structure pointed to by \a info. They mouse has 3 buttons
- * and two axes. */
-void dmxDummyMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- info->buttonClass = 1;
- info->numButtons = 3;
- info->map[0] = 1;
- info->map[1] = 2;
- info->map[2] = 3;
- info->valuatorClass = 1;
- info->numRelAxes = 2;
- info->minval[0] = 0;
- info->maxval[0] = 0;
- info->res[0] = 1;
- info->minres[0] = 0;
- info->maxres[0] = 1;
- info->ptrFeedbackClass = 1;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxdummy.h b/nx-X11/programs/Xserver/hw/dmx/input/dmxdummy.h
deleted file mode 100644
index 1f20a38cb..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxdummy.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to dummy input device support. \see dmxdummy.c */
-
-#ifndef _DMXDUMMY_H_
-#define _DMXDUMMY_H_
-
-extern void dmxDummyMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern void dmxDummyKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxeq.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxeq.c
deleted file mode 100644
index 7a6bb11fc..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxeq.c
+++ /dev/null
@@ -1,309 +0,0 @@
-/* $XFree86$ */
-/*
- * $Xorg: mieq.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $
- *
- * Copyright 1990, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/*
- * dmxeq.c is derived from mi/mieq.c so that XInput events can be handled
- *
- * Modified by: Rickard E. (Rik) Faith <faith@redhat.com>
- *
- * 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.
- */
-
-/** \file
- * This file provides an event queue that knows about XInput events.
- * All of the code is based on mi/mieq.c and was modified as little as
- * possible to provide XInput event support (the copyright and some of
- * the comments are from The Open Group, Keith Packard, MIT X
- * Consortium). (Another example of similar code is provided in
- * hw/xfree86/common/xf86Xinput.c.) */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#define DMX_EQ_DEBUG 0
-
-#include "dmx.h"
-#include "dmxeq.h"
-#include "dmxinput.h"
-#include "dmxlog.h"
-#include "dmxdpms.h"
-
-#include "inputstr.h"
-#include "scrnintstr.h" /* For screenInfo */
-
-#ifdef XINPUT
-#include <X11/extensions/XIproto.h>
-#define EXTENSION_PROC_ARGS void *
-#include "extinit.h" /* For LookupDeviceIntRec */
-#endif
-
-#if DMX_EQ_DEBUG
-#define DMXDBG2(f,a,b) dmxLog(dmxDebug,f,a,b)
-#define DMXDBG5(f,a,b,c,d,e) dmxLog(dmxDebug,f,a,b,c,d,e)
-#else
-#define DMXDBG2(f,a,b)
-#define DMXDBG5(f,a,b,c,d,e)
-#endif
-
-/** The size of our queue. (The queue provided by mi/mieq.c has a size
- * of 256.) */
-#define QUEUE_SIZE 256
-
-/** Information about the event. */
-typedef struct _Event {
- xEvent event; /**< Event. */
- ScreenPtr pScreen; /**< Screen on which event occurred. */
-#ifdef XINPUT
- deviceValuator valuator; /**< XInput device valuator information. */
-#endif
-} EventRec, *EventPtr;
-
-/** Event queue. */
-typedef struct _EventQueue {
- HWEventQueueType head; /**< Queue head; must be long for SetInputCheck. */
- HWEventQueueType tail; /**< Queue tail; must be long for SetInputCheck. */
- CARD32 lastEventTime; /**< To avoid time running backwards. */
- Bool lastMotion; /**< True if last event was motion. */
- EventRec events[QUEUE_SIZE]; /**< Static allocation for signals. */
- DevicePtr pKbd, pPtr; /**< Device pointers (to get funcs) */
- ScreenPtr pEnqueueScreen;/**< Screen events are delivered to. */
- ScreenPtr pDequeueScreen;/**< Screen events are dispatched to. */
-} EventQueueRec, *EventQueuePtr;
-
-static EventQueueRec dmxEventQueue;
-static Bool dmxeqInitializedFlag = FALSE;
-
-Bool dmxeqInitialized(void)
-{
- return dmxeqInitializedFlag;
-}
-
-Bool dmxeqInit(DevicePtr pKbd, DevicePtr pPtr)
-{
- static unsigned long dmxGeneration = 0;
-
- if (dmxGeneration == serverGeneration && dmxeqInitializedFlag)
- return FALSE;
- dmxGeneration = serverGeneration;
- dmxeqInitializedFlag = TRUE;
- dmxEventQueue.head = 0;
- dmxEventQueue.tail = 0;
- dmxEventQueue.lastEventTime = GetTimeInMillis();
- dmxEventQueue.pKbd = pKbd;
- dmxEventQueue.pPtr = pPtr;
- dmxEventQueue.lastMotion = FALSE;
- dmxEventQueue.pEnqueueScreen = screenInfo.screens[0];
- dmxEventQueue.pDequeueScreen = dmxEventQueue.pEnqueueScreen;
- SetInputCheck(&dmxEventQueue.head, &dmxEventQueue.tail);
- return TRUE;
-}
-
-/**
- * This function adds an event to the end of the queue. If the event is
- * an XInput event, then the next event (the valuator event) is also
- * stored in the queue. If the new event has a time before the time of
- * the last event currently on the queue, then the time is updated for
- * the new event.
- *
- * Must be reentrant with ProcessInputEvents. Assumption: dmxeqEnqueue
- * will never be interrupted. If this is called from both signal
- * handlers and regular code, make sure the signal is suspended when
- * called from regular code.
- */
-
-void dmxeqEnqueue(xEvent *e)
-{
- HWEventQueueType oldtail, newtail;
- Bool isMotion;
-
- oldtail = dmxEventQueue.tail;
- isMotion = e->u.u.type == MotionNotify;
- if (isMotion
- && dmxEventQueue.lastMotion
- && oldtail != dmxEventQueue.head) {
- if (oldtail == 0) oldtail = QUEUE_SIZE;
- oldtail = oldtail - 1;
- } else {
- newtail = oldtail + 1;
- if (newtail == QUEUE_SIZE) newtail = 0;
- /* Toss events which come in late */
- if (newtail == dmxEventQueue.head) return;
- dmxEventQueue.tail = newtail;
- }
- DMXDBG2("dmxeqEnqueue %d %d\n", dmxEventQueue.head, dmxEventQueue.tail);
- dmxEventQueue.lastMotion = isMotion;
- dmxEventQueue.events[oldtail].pScreen = dmxEventQueue.pEnqueueScreen;
-
- /* Store the event in the queue */
- dmxEventQueue.events[oldtail].event = *e;
-#ifdef XINPUT
- {
- /* If this is an XInput event, store the
- * valuator event, too */
- deviceKeyButtonPointer *ev = (deviceKeyButtonPointer *)e;
- if (e->u.u.type >= LASTEvent && (ev->deviceid & MORE_EVENTS))
- dmxEventQueue.events[oldtail].valuator = *(deviceValuator *)(ev+1);
- }
-#endif
-
- /* Make sure that event times don't go
- * backwards - this is "unnecessary",
- * but very useful */
- if (e->u.keyButtonPointer.time < dmxEventQueue.lastEventTime
- && dmxEventQueue.lastEventTime - e->u.keyButtonPointer.time < 10000) {
- dmxEventQueue.events[oldtail].event.u.keyButtonPointer.time =
- dmxEventQueue.lastEventTime;
- }
-}
-
-/** Make \a pScreen the new screen for enqueueing events. If \a fromDIX
- * is TRUE, also make \a pScreen the new screen for dequeuing events. */
-void dmxeqSwitchScreen(ScreenPtr pScreen, Bool fromDIX)
-{
- dmxEventQueue.pEnqueueScreen = pScreen;
- if (fromDIX) dmxEventQueue.pDequeueScreen = pScreen;
-}
-
-#ifdef XINPUT
-static void dmxeqProcessXInputEvent(xEvent *xe, EventRec *e)
-{
- deviceKeyButtonPointer *ev = (deviceKeyButtonPointer *)xe;
- int id = ev->deviceid & DEVICE_BITS;
- DeviceIntPtr pDevice = LookupDeviceIntRec(id);
-
- if (!pDevice) {
- dmxLog(dmxError, "dmxeqProcessInputEvents: id %d not found\n", id);
- return;
- }
-
- if (!pDevice->public.processInputProc) {
- dmxLog(dmxError,
- "dmxeqProcessInputEvents: no processInputProc for"
- " device id %d (%s)\n", id, pDevice->name);
- return;
- }
-
- if (ev->deviceid & MORE_EVENTS) {
- xe[1] = *(xEvent *)(&e->valuator);
- pDevice->public.processInputProc(xe, pDevice, 2);
- } else {
- pDevice->public.processInputProc(xe, pDevice, 1);
- }
-}
-#endif
-
-/**
- * This function is called from #ProcessInputEvents() to remove events
- * from the queue and process them.
- */
-void dmxeqProcessInputEvents(void)
-{
- EventRec *e;
- int x, y;
- xEvent xe[2];
-
- while (dmxEventQueue.head != dmxEventQueue.tail) {
- dmxDPMSWakeup(); /* Handles screen saver and DPMS */
- e = &dmxEventQueue.events[dmxEventQueue.head];
- DMXDBG5("dmxeqProcessInputEvents: type=%d screen=%p,%p root=%d,%d\n",
- e->event.u.u.type,
- e->pScreen, dmxEventQueue.pDequeueScreen,
- e->event.u.keyButtonPointer.rootX,
- e->event.u.keyButtonPointer.rootY);
- /*
- * Assumption - screen switching can only occur on core motion events
- */
- if (e->event.u.u.type == MotionNotify
- && e->pScreen != dmxEventQueue.pDequeueScreen) {
- dmxEventQueue.pDequeueScreen = e->pScreen;
- x = e->event.u.keyButtonPointer.rootX;
- y = e->event.u.keyButtonPointer.rootY;
- if (dmxEventQueue.head == QUEUE_SIZE - 1) dmxEventQueue.head = 0;
- else ++dmxEventQueue.head;
- NewCurrentScreen(dmxEventQueue.pDequeueScreen, x, y);
- } else {
- xe[0] = e->event;
- if (dmxEventQueue.head == QUEUE_SIZE - 1) dmxEventQueue.head = 0;
- else ++dmxEventQueue.head;
- switch (xe[0].u.u.type) {
- case KeyPress:
- case KeyRelease:
- if (!dmxEventQueue.pKbd) {
- dmxLog(dmxError, "dmxeqProcessInputEvents: No keyboard\n");
- return;
- }
- dmxEventQueue.pKbd
- ->processInputProc(xe,
- (DeviceIntPtr)dmxEventQueue.pKbd, 1);
- break;
- default:
-#ifdef XINPUT
- dmxeqProcessXInputEvent(xe, e);
- break;
-#endif
- /* ifndef XINPUT, fall through */
- case ButtonPress:
- case ButtonRelease:
- case MotionNotify:
- if (!dmxEventQueue.pPtr) {
- dmxLog(dmxError, "dmxeqProcessInputEvents: No mouse\n");
- return;
- }
- dmxEventQueue.pPtr
- ->processInputProc(xe,
- (DeviceIntPtr)dmxEventQueue.pPtr, 1);
- break;
- }
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxeq.h b/nx-X11/programs/Xserver/hw/dmx/input/dmxeq.h
deleted file mode 100644
index 64d15f7e8..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxeq.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to the event queue support. Some of these functions are
- * included in dmxinput.h, since they are used by top-level .c
- * files. \see dmxeq.c \see dmxinput.h */
-
-#ifndef _DMXEQ_H_
-#define _DMXEQ_H_
-extern Bool dmxeqInit(DevicePtr pKbd, DevicePtr pPtr);
-extern void dmxeqProcessInputEvents(void);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxevents.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxevents.c
deleted file mode 100644
index 5316f0fdc..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxevents.c
+++ /dev/null
@@ -1,716 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Provide support and helper functions for enqueing events received by
- * the low-level input drivers. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#define DMX_EVENTS_DEBUG 0
-
-#include "dmxinputinit.h"
-#include "dmxevents.h"
-#include "dmxcb.h"
-#include "dmxcommon.h"
-#include "dmxcursor.h"
-#include "dmxmotion.h"
-#include "dmxeq.h"
-#include "dmxsigio.h"
-#include "dmxmap.h"
-
-#include <X11/keysym.h>
-#include "opaque.h"
-#include "inputstr.h"
-#include "mipointer.h"
-
-#ifdef XINPUT
-#include "XIstubs.h"
-#endif
-
-static int dmxGlobalX, dmxGlobalY; /* Global cursor position */
-static int dmxGlobalInvalid; /* Flag indicating dmxCoreMotion
- * should move the mouse anyway. */
-
-#if DMX_EVENTS_DEBUG
-#define DMXDBG0(f) dmxLog(dmxDebug,f)
-#define DMXDBG1(f,a) dmxLog(dmxDebug,f,a)
-#define DMXDBG2(f,a,b) dmxLog(dmxDebug,f,a,b)
-#define DMXDBG3(f,a,b,c) dmxLog(dmxDebug,f,a,b,c)
-#define DMXDBG4(f,a,b,c,d) dmxLog(dmxDebug,f,a,b,c,d)
-#define DMXDBG5(f,a,b,c,d,e) dmxLog(dmxDebug,f,a,b,c,d,e)
-#define DMXDBG6(f,a,b,c,d,e,g) dmxLog(dmxDebug,f,a,b,c,d,e,g)
-#define DMXDBG7(f,a,b,c,d,e,g,h) dmxLog(dmxDebug,f,a,b,c,d,e,g,h)
-#else
-#define DMXDBG0(f)
-#define DMXDBG1(f,a)
-#define DMXDBG2(f,a,b)
-#define DMXDBG3(f,a,b,c)
-#define DMXDBG4(f,a,b,c,d)
-#define DMXDBG5(f,a,b,c,d,e)
-#define DMXDBG6(f,a,b,c,d,e,g)
-#define DMXDBG7(f,a,b,c,d,e,g,h)
-#endif
-
-static int dmxApplyFunctions(DMXInputInfo *dmxInput, DMXFunctionType f)
-{
- int i;
- int rc = 0;
-
- for (i = 0; i < dmxInput->numDevs; i+= dmxInput->devs[i]->binding)
- if (dmxInput->devs[i]->functions)
- rc += dmxInput->devs[i]->functions(dmxInput->devs[i]->private, f);
- return rc;
-}
-
-static int dmxCheckFunctionKeys(DMXLocalInputInfoPtr dmxLocal,
- int type,
- KeySym keySym)
-{
- DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx];
- unsigned short state = 0;
-
- if (dmxLocal->sendsCore)
- state = dmxLocalCoreKeyboard->pDevice->key->state;
- else if (dmxLocal->pDevice->key)
- state = dmxLocal->pDevice->key->state;
-
- DMXDBG3("dmxCheckFunctionKeys: keySym=0x%04x %s state=0x%04x\n",
- keySym, type == KeyPress ? "press" : "release", state);
-
- if ((state & (ControlMask|Mod1Mask)) != (ControlMask|Mod1Mask)) return 0;
-
- switch (keySym) {
- case XK_g:
- if (type == KeyPress)
- dmxApplyFunctions(dmxInput, DMX_FUNCTION_GRAB);
- return 1;
- case XK_f:
- if (type == KeyPress)
- dmxApplyFunctions(dmxInput, DMX_FUNCTION_FINE);
- return 1;
- case XK_q:
- if (type == KeyPress && dmxLocal->sendsCore)
- if (dmxApplyFunctions(dmxInput, DMX_FUNCTION_TERMINATE)) {
- dmxLog(dmxInfo, "User request for termination\n");
- dispatchException |= DE_TERMINATE;
- }
- return 1;
- }
-
- return 0;
-}
-
-#ifdef XINPUT
-static void dmxEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal, xEvent *e,
- DMXBlockType block)
-{
- xEvent xE[2];
- deviceKeyButtonPointer *xev = (deviceKeyButtonPointer *)xE;
- deviceValuator *xv = (deviceValuator *)xev+1;
- DeviceIntPtr pDevice = dmxLocal->pDevice;
- DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx];
- int type = e->u.u.type;
-
- switch (e->u.u.type) {
- case KeyPress: type = DeviceKeyPress; break;
- case KeyRelease: type = DeviceKeyRelease; break;
- case ButtonPress: type = DeviceButtonPress; break;
- case ButtonRelease: type = DeviceButtonRelease; break;
- case MotionNotify:
- dmxLog(dmxError,
- "dmxEnqueueExtEvent: MotionNotify not allowed here\n");
- return;
- default:
- if (e->u.u.type == ProximityIn || e->u.u.type == ProximityOut) break;
- dmxLogInput(dmxInput,
- "dmxEnqueueExtEvent: Unhandled %s event (%d)\n",
- e->u.u.type >= LASTEvent ? "extension" : "non-extension",
- e->u.u.type);
- return;
- }
-
- xev->type = type;
- xev->detail = e->u.u.detail;
- xev->deviceid = pDevice->id | MORE_EVENTS;
- xev->time = e->u.keyButtonPointer.time;
-
- xv->type = DeviceValuator;
- xv->deviceid = pDevice->id;
- xv->num_valuators = 0;
- xv->first_valuator = 0;
-
- if (block) dmxSigioBlock();
- dmxeqEnqueue(xE);
- if (block) dmxSigioUnblock();
-}
-#endif
-
-DMXScreenInfo *dmxFindFirstScreen(int x, int y)
-{
- int i;
-
- for (i = 0; i < dmxNumScreens; i++) {
- DMXScreenInfo *dmxScreen = &dmxScreens[i];
- if (dmxOnScreen(x, y, dmxScreen)) return dmxScreen;
- }
- return NULL;
-}
-
-void dmxCoreMotion(int x, int y, int delta, DMXBlockType block)
-{
- DMXScreenInfo *dmxScreen;
- DMXInputInfo *dmxInput;
- ScreenPtr pScreen;
- int localX;
- int localY;
- int i;
-
- if (!dmxGlobalInvalid && dmxGlobalX == x && dmxGlobalY == y) return;
-
- DMXDBG5("dmxCoreMotion(%d,%d,%d) dmxGlobalX=%d dmxGlobalY=%d\n",
- x, y, delta, dmxGlobalX, dmxGlobalY);
-
- dmxGlobalInvalid = 0;
- dmxGlobalX = x;
- dmxGlobalY = y;
-
- if (dmxGlobalX < 0) dmxGlobalX = 0;
- if (dmxGlobalY < 0) dmxGlobalY = 0;
- if (dmxGlobalX >= dmxGlobalWidth) dmxGlobalX = dmxGlobalWidth + delta -1;
- if (dmxGlobalY >= dmxGlobalHeight) dmxGlobalY = dmxGlobalHeight + delta -1;
-
- if ((dmxScreen = dmxFindFirstScreen(dmxGlobalX, dmxGlobalY))) {
- localX = dmxGlobalX - dmxScreen->rootXOrigin;
- localY = dmxGlobalY - dmxScreen->rootYOrigin;
- if ((pScreen = miPointerCurrentScreen())
- && pScreen->myNum == dmxScreen->index) {
- /* Screen is old screen */
- if (block) dmxSigioBlock();
- miPointerAbsoluteCursor(localX, localY, GetTimeInMillis());
- if (block) dmxSigioUnblock();
- } else {
- /* Screen is new */
- DMXDBG4(" New screen: old=%d new=%d localX=%d localY=%d\n",
- pScreen->myNum, dmxScreen->index, localX, localY);
- if (block) dmxSigioBlock();
- dmxeqProcessInputEvents();
- miPointerSetNewScreen(dmxScreen->index, localX, localY);
- miPointerAbsoluteCursor(localX, localY, GetTimeInMillis());
- if (block) dmxSigioUnblock();
- }
- miPointerPosition(&localX, &localY);
-
- if ((pScreen = miPointerCurrentScreen())) {
- dmxGlobalX = localX + dmxScreens[pScreen->myNum].rootXOrigin;
- dmxGlobalY = localY + dmxScreens[pScreen->myNum].rootYOrigin;
- DMXDBG6(" Moved to dmxGlobalX=%d dmxGlobalY=%d"
- " on screen index=%d/%d localX=%d localY=%d\n",
- dmxGlobalX, dmxGlobalY,
- dmxScreen ? dmxScreen->index : -1, pScreen->myNum,
- localX, localY);
- }
- }
- /* Send updates down to all core input
- * drivers */
- for (i = 0, dmxInput = &dmxInputs[0]; i < dmxNumInputs; i++, dmxInput++) {
- int j;
-
- for (j = 0; j < dmxInput->numDevs; j += dmxInput->devs[j]->binding)
- if (!dmxInput->detached
- && dmxInput->devs[j]->sendsCore
- && dmxInput->devs[j]->update_position)
- dmxInput->devs[j]->update_position(dmxInput->devs[j]->private,
- dmxGlobalX, dmxGlobalY);
- }
- if (!dmxScreen) ProcessInputEvents();
-}
-
-#ifdef XINPUT
-#define DMX_MAX_AXES 32 /* Max axes reported by this routine */
-static void dmxExtMotion(DMXLocalInputInfoPtr dmxLocal,
- int *v, int firstAxis, int axesCount,
- DMXMotionType type, DMXBlockType block)
-{
- DeviceIntPtr pDevice = dmxLocal->pDevice;
- xEvent xE[2 * DMX_MAX_AXES/6];
- deviceKeyButtonPointer *xev = (deviceKeyButtonPointer *)xE;
- deviceValuator *xv = (deviceValuator *)xev+1;
- int thisX = 0;
- int thisY = 0;
- int i;
- int count;
-
- memset(xE, 0, sizeof(xE));
-
- if (axesCount > DMX_MAX_AXES) axesCount = DMX_MAX_AXES;
-
- if (!pDevice->valuator->mode && axesCount == 2) {
- /* The dmx console is a relative mode
- * device that sometimes reports
- * absolute motion. It only has two
- * axes. */
- if (type == DMX_RELATIVE) {
- thisX = -v[0];
- thisY = -v[1];
- dmxLocal->lastX += thisX;
- dmxLocal->lastY += thisY;
- if (dmxLocal->update_position)
- dmxLocal->update_position(dmxLocal->private,
- dmxLocal->lastX, dmxLocal->lastY);
- } else { /* Convert to relative */
- if (dmxLocal->lastX || dmxLocal->lastY) {
- thisX = v[0] - dmxLocal->lastX;
- thisY = v[1] - dmxLocal->lastY;
- }
- dmxLocal->lastX = v[0];
- dmxLocal->lastY = v[1];
- }
- v[0] = thisX;
- v[1] = thisY;
- }
-
- if (axesCount <= 6) {
- /* Optimize for the common case when
- * only 1 or 2 axes change. */
- xev->time = GetTimeInMillis();
- xev->type = DeviceMotionNotify;
- xev->detail = 0;
- xev->deviceid = pDevice->id | MORE_EVENTS;
-
- xv->type = DeviceValuator;
- xv->deviceid = pDevice->id;
- xv->num_valuators = axesCount;
- xv->first_valuator = firstAxis;
- switch (xv->num_valuators) {
- case 6: xv->valuator5 = v[5];
- case 5: xv->valuator4 = v[4];
- case 4: xv->valuator3 = v[3];
- case 3: xv->valuator2 = v[2];
- case 2: xv->valuator1 = v[1];
- case 1: xv->valuator0 = v[0];
- }
- count = 2;
- } else {
- for (i = 0, count = 0; i < axesCount; i += 6) {
- xev->time = GetTimeInMillis();
- xev->type = DeviceMotionNotify;
- xev->detail = 0;
- xev->deviceid = pDevice->id | MORE_EVENTS;
- xev += 2;
-
- xv->type = DeviceValuator;
- xv->deviceid = pDevice->id;
- xv->num_valuators = (i+6 >= axesCount ? axesCount - i : 6);
- xv->first_valuator = firstAxis + i;
- switch (xv->num_valuators) {
- case 6: xv->valuator5 = v[i+5];
- case 5: xv->valuator4 = v[i+4];
- case 4: xv->valuator3 = v[i+3];
- case 3: xv->valuator2 = v[i+2];
- case 2: xv->valuator1 = v[i+1];
- case 1: xv->valuator0 = v[i+0];
- }
- xv += 2;
- count += 2;
- }
- }
-
- if (block) dmxSigioBlock();
- dmxPointerPutMotionEvent(pDevice, firstAxis, axesCount, v, xev->time);
- dmxeqEnqueue(xE);
- if (block) dmxSigioUnblock();
-}
-
-static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
- XEvent *e, DMXBlockType block)
-{
- xEvent xE[2];
- deviceKeyButtonPointer *xev = (deviceKeyButtonPointer *)xE;
- deviceValuator *xv = (deviceValuator *)xev+1;
- int type;
- int event = -1;
- XDeviceKeyEvent *ke = (XDeviceKeyEvent *)e;
- XDeviceMotionEvent *me = (XDeviceMotionEvent *)e;
-
- if (!e) return -1; /* No extended event passed, cannot handle */
-
- if ((XID)dmxLocal->deviceId != ke->deviceid) {
- /* Search for the correct dmxLocal,
- * since backend and console events are
- * picked up for the first device on
- * that X server. */
- int i;
- DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx];
- for (i = 0; i < dmxInput->numDevs; i++) {
- dmxLocal = dmxInput->devs[i];
- if ((XID)dmxLocal->deviceId == ke->deviceid) break;
- }
- }
-
- if ((XID)dmxLocal->deviceId != ke->deviceid
- || (type = dmxMapLookup(dmxLocal, e->type)) < 0)
- return -1; /* No mapping, so this event is unhandled */
-
- switch (type) {
- case XI_DeviceValuator: event = DeviceValuator; break;
- case XI_DeviceKeyPress: event = DeviceKeyPress; break;
- case XI_DeviceKeyRelease: event = DeviceKeyRelease; break;
- case XI_DeviceButtonPress: event = DeviceButtonPress; break;
- case XI_DeviceButtonRelease: event = DeviceButtonRelease; break;
- case XI_DeviceMotionNotify: event = DeviceMotionNotify; break;
- case XI_DeviceFocusIn: event = DeviceFocusIn; break;
- case XI_DeviceFocusOut: event = DeviceFocusOut; break;
- case XI_ProximityIn: event = ProximityIn; break;
- case XI_ProximityOut: event = ProximityOut; break;
- case XI_DeviceStateNotify: event = DeviceStateNotify; break;
- case XI_DeviceMappingNotify: event = DeviceMappingNotify; break;
- case XI_ChangeDeviceNotify: event = ChangeDeviceNotify; break;
- case XI_DeviceKeystateNotify: event = DeviceStateNotify; break;
- case XI_DeviceButtonstateNotify: event = DeviceStateNotify; break;
- }
-
- switch (type) {
- case XI_DeviceKeyPress:
- case XI_DeviceKeyRelease:
- case XI_DeviceButtonPress:
- case XI_DeviceButtonRelease:
- case XI_ProximityIn:
- case XI_ProximityOut:
- xev->type = event;
- xev->detail = ke->keycode; /* same as ->button */
- xev->deviceid = dmxLocal->pDevice->id | MORE_EVENTS;
- xev->time = GetTimeInMillis();
-
- xv->type = DeviceValuator;
- xv->deviceid = dmxLocal->pDevice->id;
- xv->num_valuators = ke->axes_count;
- xv->first_valuator = ke->first_axis;
- xv->valuator0 = ke->axis_data[0];
- xv->valuator1 = ke->axis_data[1];
- xv->valuator2 = ke->axis_data[2];
- xv->valuator3 = ke->axis_data[3];
- xv->valuator4 = ke->axis_data[4];
- xv->valuator5 = ke->axis_data[5];
-
- if (block) dmxSigioBlock();
- dmxeqEnqueue(xE);
- if (block) dmxSigioUnblock();
- break;
-
- case XI_DeviceMotionNotify:
- dmxExtMotion(dmxLocal, me->axis_data, me->first_axis, me->axes_count,
- DMX_ABSOLUTE, block);
- break;
- case XI_DeviceFocusIn:
- case XI_DeviceFocusOut:
- case XI_DeviceStateNotify:
- case XI_DeviceMappingNotify:
- case XI_ChangeDeviceNotify:
- case XI_DeviceKeystateNotify:
- case XI_DeviceButtonstateNotify:
- /* These are ignored, since DMX will
- * generate its own events of these
- * types, as necessary.
-
- * Perhaps ChangeDeviceNotify should
- * generate an error, because it is
- * unexpected? */
- break;
- case XI_DeviceValuator:
- default:
- dmxLog(dmxWarning,
- "XInput extension event (remote=%d -> zero-based=%d)"
- " not supported yet\n", e->type, type);
- return -1;
- }
- return 0;
-}
-#endif
-
-static int dmxGetButtonMapping(DMXLocalInputInfoPtr dmxLocal, int button)
-{
- ButtonClassPtr b = dmxLocal->pDevice->button;
-
- if (button > b->numButtons) { /* This shouldn't happen. */
- dmxLog(dmxWarning, "Button %d pressed, but only %d buttons?!?\n",
- button, b->numButtons);
- return button;
- }
- return b->map[button];
-}
-
-/** Return DMX's notion of the pointer position in the global coordinate
- * space. */
-void dmxGetGlobalPosition(int *x, int *y)
-{
- *x = dmxGlobalX;
- *y = dmxGlobalY;
-}
-
-/** Invalidate the global position for #dmxCoreMotion. */
-void dmxInvalidateGlobalPosition(void)
-{
- dmxGlobalInvalid = 1;
-}
-
-/** Enqueue a motion event for \a pDev. The \a v vector has length \a
- * axesCount, and contains values for each of the axes, starting at \a
- * firstAxes.
- *
- * The \a type of the motion may be \a DMX_RELATIVE, \a DMX_ABSOLUTE, or
- * \a DMX_ABSOLUTE_CONFINED (in the latter case, the pointer will not be
- * allowed to move outside the global boundaires).
- *
- * If \a block is set to \a DMX_BLOCK, then the SIGIO handler will be
- * blocked around calls to #dmxeqEnqueue(). */
-void dmxMotion(DevicePtr pDev, int *v, int firstAxes, int axesCount,
- DMXMotionType type, DMXBlockType block)
-{
-#ifdef XINPUT
- GETDMXLOCALFROMPDEV;
-
- if (!dmxLocal->sendsCore) {
- dmxExtMotion(dmxLocal, v, firstAxes, axesCount, type, block);
- return;
- }
-#endif
- if (axesCount == 2) switch (type) {
- case DMX_RELATIVE: dmxCoreMotion(dmxGlobalX - v[0],
- dmxGlobalY - v[1],
- 0, block); break;
- case DMX_ABSOLUTE: dmxCoreMotion(v[0], v[1], 0, block); break;
- case DMX_ABSOLUTE_CONFINED: dmxCoreMotion(v[0], v[1], -1, block); break;
- }
-}
-
-static KeySym dmxKeyCodeToKeySym(DMXLocalInputInfoPtr dmxLocal,
- KeyCode keyCode)
-{
- KeySymsPtr pKeySyms = NULL;
-
- if (!dmxLocal || !dmxLocal->pDevice || !dmxLocal->pDevice->key)
- return NoSymbol;
- pKeySyms = &dmxLocal->pDevice->key->curKeySyms;
- if (!pKeySyms) return NoSymbol;
-
- if (keyCode > pKeySyms->minKeyCode && keyCode <= pKeySyms->maxKeyCode) {
- DMXDBG2("dmxKeyCodeToKeySym: Translated keyCode=%d to keySym=0x%04x\n",
- keyCode,
- pKeySyms->map[(keyCode - pKeySyms->minKeyCode)
- * pKeySyms->mapWidth]);
-
- return pKeySyms->map[(keyCode - pKeySyms->minKeyCode)
- * pKeySyms->mapWidth];
- }
- return NoSymbol;
-}
-
-static KeyCode dmxKeySymToKeyCode(DMXLocalInputInfoPtr dmxLocal, KeySym keySym,
- int tryFirst)
-{
- KeySymsPtr pKeySyms = &dmxLocal->pDevice->key->curKeySyms;
- int i;
-
- /* Optimize for similar maps */
- if (tryFirst >= pKeySyms->minKeyCode
- && tryFirst <= pKeySyms->maxKeyCode
- && pKeySyms->map[(tryFirst - pKeySyms->minKeyCode)
- * pKeySyms->mapWidth] == keySym)
- return tryFirst;
-
- for (i = pKeySyms->minKeyCode; i <= pKeySyms->maxKeyCode; i++) {
- if (pKeySyms->map[(i - pKeySyms->minKeyCode)
- * pKeySyms->mapWidth] == keySym) {
- DMXDBG3("dmxKeySymToKeyCode: Translated keySym=0x%04x to"
- " keyCode=%d (reverses to core keySym=0x%04x)\n",
- keySym, i, dmxKeyCodeToKeySym(dmxLocalCoreKeyboard,i));
- return i;
- }
- }
- return 0;
-}
-
-static int dmxFixup(DevicePtr pDev, int detail, KeySym keySym)
-{
- GETDMXLOCALFROMPDEV;
- int keyCode;
-
- if (!dmxLocal->pDevice->key) {
- dmxLog(dmxWarning, "dmxFixup: not a keyboard device (%s)\n",
- dmxLocal->pDevice->name);
- return NoSymbol;
- }
- if (!keySym) keySym = dmxKeyCodeToKeySym(dmxLocal, detail);
- if (keySym == NoSymbol) return detail;
- keyCode = dmxKeySymToKeyCode(dmxLocalCoreKeyboard, keySym, detail);
-
- return keyCode ? keyCode : detail;
-}
-
-/** Enqueue a non-motion event from the \a pDev device with the
- * specified \a type and \a detail. If the event is a KeyPress or
- * KeyRelease event, then the \a keySym is also specified.
- *
- * If \a block is set to \a DMX_BLOCK, then the SIGIO handler will be
- * blocked around calls to #dmxeqEnqueue(). */
-
-void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
- XEvent *e, DMXBlockType block)
-{
- GETDMXINPUTFROMPDEV;
- xEvent xE;
-
- DMXDBG2("dmxEnqueue: Enqueuing type=%d detail=0x%0x\n", type, detail);
-
- switch (type) {
- case KeyPress:
- case KeyRelease:
- if (!keySym) keySym = dmxKeyCodeToKeySym(dmxLocal, detail);
- if (dmxCheckFunctionKeys(dmxLocal, type, keySym))
- return;
- if (dmxLocal->sendsCore && dmxLocal != dmxLocalCoreKeyboard)
- xE.u.u.detail = dmxFixup(pDev, detail, keySym);
- break;
- case ButtonPress:
- case ButtonRelease:
- detail = dmxGetButtonMapping(dmxLocal, detail);
- break;
- case MotionNotify:
- /* All MotionNotify events should be sent via dmxCoreMotion and
- * dmxExtMotion -- no input driver should build motion events by
- * hand. */
- dmxLog(dmxError, "dmxEnqueueXEvent: MotionNotify not allowed here\n");
- break;
- /* Always ignore these events */
- case EnterNotify:
- case LeaveNotify:
- case KeymapNotify:
- case MappingNotify: /* This is sent because we change the
- * modifier map on the backend/console
- * input device so that we have complete
- * control of the input device LEDs. */
- return;
- default:
-#ifdef XINPUT
- if (type == ProximityIn || type == ProximityOut) {
- if (dmxLocal->sendsCore) return; /* Not a core event */
- break;
- }
-#endif
- if (type >= LASTEvent) {
-#ifdef XINPUT
- if (dmxTranslateAndEnqueueExtEvent(dmxLocal, e, block))
-#endif
- dmxLogInput(dmxInput, "Unhandled extension event: %d\n", type);
- } else {
- dmxLogInput(dmxInput, "Unhandled event: %d (%s)\n",
- type, dmxEventName(type));
- }
- return;
- }
-
- memset(&xE, 0, sizeof(xE));
- xE.u.u.type = type;
- xE.u.u.detail = detail;
- xE.u.keyButtonPointer.time = GetTimeInMillis();
-
-#ifdef XINPUT
- if (!dmxLocal->sendsCore) dmxEnqueueExtEvent(dmxLocal, &xE, block);
- else
-#endif
- dmxeqEnqueue(&xE);
-}
-
-/** A pointer to this routine is passed to low-level input drivers so
- * that all special keychecking is unified to this file. This function
- * returns 0 if no special keys have been pressed. If the user has
- * requested termination of the DMX server, -1 is returned. If the user
- * has requested a switch to a VT, then the (1-based) number of that VT
- * is returned. */
-int dmxCheckSpecialKeys(DevicePtr pDev, KeySym keySym)
-{
- GETDMXINPUTFROMPDEV;
- int vt = 0;
- unsigned short state = 0;
-
- if (dmxLocal->sendsCore)
- state = dmxLocalCoreKeyboard->pDevice->key->state;
- else if (dmxLocal->pDevice->key)
- state = dmxLocal->pDevice->key->state;
-
- if (!dmxLocal->sendsCore) return 0; /* Only for core devices */
-
- DMXDBG2("dmxCheckSpecialKeys: keySym=0x%04x state=0x%04x\n", keySym,state);
-
- if ((state & (ControlMask|Mod1Mask)) != (ControlMask|Mod1Mask)) return 0;
-
- switch (keySym) {
- case XK_F1:
- case XK_F2:
- case XK_F3:
- case XK_F4:
- case XK_F5:
- case XK_F6:
- case XK_F7:
- case XK_F8:
- case XK_F9:
- case XK_F10:
- vt = keySym - XK_F1 + 1;
- break;
-
- case XK_F11:
- case XK_F12:
- vt = keySym - XK_F11 + 11;
- break;
-
- case XK_q: /* To avoid confusion */
- case XK_BackSpace:
- case XK_Delete:
- case XK_KP_Delete:
- dmxLog(dmxInfo, "User request for termination\n");
- dispatchException |= DE_TERMINATE;
- return -1; /* Terminate */
- }
-
- if (vt) {
- dmxLog(dmxInfo, "Request to switch to VT %d\n", vt);
- dmxInput->vt_switch_pending = vt;
- return vt;
- }
-
- return 0; /* Do nothing */
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxevents.h b/nx-X11/programs/Xserver/hw/dmx/input/dmxevents.h
deleted file mode 100644
index f8d29d440..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxevents.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001 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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to event processing functions. \see dmxevents.h */
-
-#ifndef _DMXEVENTS_H_
-#define _DMXEVENTS_H_
-
-extern void dmxMotion(DevicePtr pDev, int *v, int firstAxis, int axesCount,
- DMXMotionType type, DMXBlockType block);
-extern void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
- XEvent *e, DMXBlockType block);
-extern int dmxCheckSpecialKeys(DevicePtr pDev, KeySym keySym);
-extern void dmxInvalidateGlobalPosition(void);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxinputinit.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxinputinit.c
deleted file mode 100644
index 5332dccd9..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxinputinit.c
+++ /dev/null
@@ -1,1298 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * This file provides generic input support. Functions here set up
- * input and lead to the calling of low-level device drivers for
- * input. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#define DMX_WINDOW_DEBUG 0
-
-#include "dmxinputinit.h"
-#include "dmxextension.h" /* For dmxInputCount */
-
-#include "dmxdummy.h"
-#include "dmxbackend.h"
-#include "dmxconsole.h"
-#include "dmxcommon.h"
-#include "dmxevents.h"
-#include "dmxmotion.h"
-#include "dmxeq.h"
-#include "dmxprop.h"
-#include "config/dmxconfig.h"
-#include "dmxcursor.h"
-
-#include "lnx-keyboard.h"
-#include "lnx-ms.h"
-#include "lnx-ps2.h"
-#include "usb-keyboard.h"
-#include "usb-mouse.h"
-#include "usb-other.h"
-#include "usb-common.h"
-
-#include "dmxsigio.h"
-#include "dmxarg.h"
-
-#include "inputstr.h"
-#include "input.h"
-#include "mipointer.h"
-#include "windowstr.h"
-
-#ifdef XINPUT
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#include "exevents.h"
-#define EXTENSION_PROC_ARGS void *
-#include "extinit.h"
-#endif
-
-/* From XI.h */
-#ifndef Relative
-#define Relative 0
-#endif
-#ifndef Absolute
-#define Absolute 1
-#endif
-
-DMXLocalInputInfoPtr dmxLocalCorePointer, dmxLocalCoreKeyboard;
-
-static DMXLocalInputInfoRec DMXDummyMou = {
- "dummy-mou", DMX_LOCAL_MOUSE, DMX_LOCAL_TYPE_LOCAL, 1,
- NULL, NULL, NULL, NULL, NULL, dmxDummyMouGetInfo
-};
-
-static DMXLocalInputInfoRec DMXDummyKbd = {
- "dummy-kbd", DMX_LOCAL_KEYBOARD, DMX_LOCAL_TYPE_LOCAL, 1,
- NULL, NULL, NULL, NULL, NULL, dmxDummyKbdGetInfo
-};
-
-static DMXLocalInputInfoRec DMXBackendMou = {
- "backend-mou", DMX_LOCAL_MOUSE, DMX_LOCAL_TYPE_BACKEND, 2,
- dmxBackendCreatePrivate, dmxBackendDestroyPrivate,
- dmxBackendInit, NULL, dmxBackendLateReInit, dmxBackendMouGetInfo,
- dmxCommonMouOn, dmxCommonMouOff, dmxBackendUpdatePosition,
- NULL, NULL, NULL,
- dmxBackendCollectEvents, dmxBackendProcessInput, dmxBackendFunctions, NULL,
- dmxCommonMouCtrl
-};
-
-static DMXLocalInputInfoRec DMXBackendKbd = {
- "backend-kbd", DMX_LOCAL_KEYBOARD, DMX_LOCAL_TYPE_BACKEND,
- 1, /* With backend-mou or console-mou */
- dmxCommonCopyPrivate, NULL,
- dmxBackendInit, NULL, NULL, dmxBackendKbdGetInfo,
- dmxCommonKbdOn, dmxCommonKbdOff, NULL,
- NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, dmxCommonKbdCtrl, dmxCommonKbdBell
-};
-
-static DMXLocalInputInfoRec DMXConsoleMou = {
- "console-mou", DMX_LOCAL_MOUSE, DMX_LOCAL_TYPE_CONSOLE, 2,
- dmxConsoleCreatePrivate, dmxConsoleDestroyPrivate,
- dmxConsoleInit, dmxConsoleReInit, NULL, dmxConsoleMouGetInfo,
- dmxCommonMouOn, dmxCommonMouOff, dmxConsoleUpdatePosition,
- NULL, NULL, NULL,
- dmxConsoleCollectEvents, NULL, dmxConsoleFunctions, dmxConsoleUpdateInfo,
- dmxCommonMouCtrl
-};
-
-static DMXLocalInputInfoRec DMXConsoleKbd = {
- "console-kbd", DMX_LOCAL_KEYBOARD, DMX_LOCAL_TYPE_CONSOLE,
- 1, /* With backend-mou or console-mou */
- dmxCommonCopyPrivate, NULL,
- dmxConsoleInit, dmxConsoleReInit, NULL, dmxConsoleKbdGetInfo,
- dmxCommonKbdOn, dmxCommonKbdOff, NULL,
- NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, dmxCommonKbdCtrl, dmxCommonKbdBell
-};
-
-static DMXLocalInputInfoRec DMXCommonOth = {
- "common-oth", DMX_LOCAL_OTHER, DMX_LOCAL_TYPE_COMMON, 1,
- dmxCommonCopyPrivate, NULL,
- NULL, NULL, NULL, dmxCommonOthGetInfo,
- dmxCommonOthOn, dmxCommonOthOff
-};
-
-
-static DMXLocalInputInfoRec DMXLocalDevices[] = {
- /* Dummy drivers that can compile on any OS */
-#ifdef __linux__
- /* Linux-specific drivers */
- {
- "kbd", DMX_LOCAL_KEYBOARD, DMX_LOCAL_TYPE_LOCAL, 1,
- kbdLinuxCreatePrivate, kbdLinuxDestroyPrivate,
- kbdLinuxInit, NULL, NULL, kbdLinuxGetInfo,
- kbdLinuxOn, kbdLinuxOff, NULL,
- kbdLinuxVTPreSwitch, kbdLinuxVTPostSwitch, kbdLinuxVTSwitch,
- kbdLinuxRead, NULL, NULL, NULL,
- NULL, kbdLinuxCtrl, kbdLinuxBell
- },
- {
- "ms", DMX_LOCAL_MOUSE, DMX_LOCAL_TYPE_LOCAL, 1,
- msLinuxCreatePrivate, msLinuxDestroyPrivate,
- msLinuxInit, NULL, NULL, msLinuxGetInfo,
- msLinuxOn, msLinuxOff, NULL,
- msLinuxVTPreSwitch, msLinuxVTPostSwitch, NULL,
- msLinuxRead
- },
- {
- "ps2", DMX_LOCAL_MOUSE, DMX_LOCAL_TYPE_LOCAL, 1,
- ps2LinuxCreatePrivate, ps2LinuxDestroyPrivate,
- ps2LinuxInit, NULL, NULL, ps2LinuxGetInfo,
- ps2LinuxOn, ps2LinuxOff, NULL,
- ps2LinuxVTPreSwitch, ps2LinuxVTPostSwitch, NULL,
- ps2LinuxRead
- },
-#endif
-#ifdef __linux__
- /* USB drivers, currently only for
- Linux, but relatively easy to port to
- other OSs */
- {
- "usb-kbd", DMX_LOCAL_KEYBOARD, DMX_LOCAL_TYPE_LOCAL, 1,
- usbCreatePrivate, usbDestroyPrivate,
- kbdUSBInit, NULL, NULL, kbdUSBGetInfo,
- kbdUSBOn, usbOff, NULL,
- NULL, NULL, NULL,
- kbdUSBRead, NULL, NULL, NULL,
- NULL, kbdUSBCtrl
- },
- {
- "usb-mou", DMX_LOCAL_MOUSE, DMX_LOCAL_TYPE_LOCAL, 1,
- usbCreatePrivate, usbDestroyPrivate,
- mouUSBInit, NULL, NULL, mouUSBGetInfo,
- mouUSBOn, usbOff, NULL,
- NULL, NULL, NULL,
- mouUSBRead
- },
- {
- "usb-oth", DMX_LOCAL_OTHER, DMX_LOCAL_TYPE_LOCAL, 1,
- usbCreatePrivate, usbDestroyPrivate,
- othUSBInit, NULL, NULL, othUSBGetInfo,
- othUSBOn, usbOff, NULL,
- NULL, NULL, NULL,
- othUSBRead
- },
-#endif
- {
- "dummy-mou", DMX_LOCAL_MOUSE, DMX_LOCAL_TYPE_LOCAL, 1,
- NULL, NULL, NULL, NULL, NULL, dmxDummyMouGetInfo
- },
- {
- "dummy-kbd", DMX_LOCAL_KEYBOARD, DMX_LOCAL_TYPE_LOCAL, 1,
- NULL, NULL, NULL, NULL, NULL, dmxDummyKbdGetInfo
- },
- { NULL } /* Must be last */
-};
-
-static void _dmxChangePointerControl(DMXLocalInputInfoPtr dmxLocal,
- PtrCtrl *ctrl)
-{
- if (!dmxLocal) return;
- dmxLocal->mctrl = *ctrl;
- if (dmxLocal->mCtrl) dmxLocal->mCtrl(&dmxLocal->pDevice->public, ctrl);
-}
-
-/** Change the pointer control information for the \a pDevice. If the
- * device sends core events, then also change the control information
- * for all of the pointer devices that send core events. */
-void dmxChangePointerControl(DeviceIntPtr pDevice, PtrCtrl *ctrl)
-{
- GETDMXLOCALFROMPDEVICE;
- int i, j;
-
- if (dmxLocal->sendsCore) { /* Do for all core devices */
- for (i = 0; i < dmxNumInputs; i++) {
- DMXInputInfo *dmxInput = &dmxInputs[i];
- if (dmxInput->detached) continue;
- for (j = 0; j < dmxInput->numDevs; j++)
- if (dmxInput->devs[j]->sendsCore)
- _dmxChangePointerControl(dmxInput->devs[j], ctrl);
- }
- } else { /* Do for this device only */
- _dmxChangePointerControl(dmxLocal, ctrl);
- }
-}
-
-static void _dmxKeyboardKbdCtrlProc(DMXLocalInputInfoPtr dmxLocal,
- KeybdCtrl *ctrl)
-{
- dmxLocal->kctrl = *ctrl;
- if (dmxLocal->kCtrl) {
- dmxLocal->kCtrl(&dmxLocal->pDevice->public, ctrl);
-#ifdef XKB
- if (!noXkbExtension && dmxLocal->pDevice->kbdfeed) {
- XkbEventCauseRec cause;
- XkbSetCauseUnknown(&cause);
- /* Generate XKB events, as necessary */
- XkbUpdateIndicators(dmxLocal->pDevice, XkbAllIndicatorsMask, False,
- NULL, &cause);
- }
-#endif
- }
-}
-
-
-/** Change the keyboard control information for the \a pDevice. If the
- * device sends core events, then also change the control information
- * for all of the keyboard devices that send core events. */
-void dmxKeyboardKbdCtrlProc(DeviceIntPtr pDevice, KeybdCtrl *ctrl)
-{
- GETDMXLOCALFROMPDEVICE;
- int i, j;
-
- if (dmxLocal->sendsCore) { /* Do for all core devices */
- for (i = 0; i < dmxNumInputs; i++) {
- DMXInputInfo *dmxInput = &dmxInputs[i];
- if (dmxInput->detached) continue;
- for (j = 0; j < dmxInput->numDevs; j++)
- if (dmxInput->devs[j]->sendsCore)
- _dmxKeyboardKbdCtrlProc(dmxInput->devs[j], ctrl);
- }
- } else { /* Do for this device only */
- _dmxKeyboardKbdCtrlProc(dmxLocal, ctrl);
- }
-}
-
-static void _dmxKeyboardBellProc(DMXLocalInputInfoPtr dmxLocal, int percent)
-{
- if (dmxLocal->kBell) dmxLocal->kBell(&dmxLocal->pDevice->public,
- percent,
- dmxLocal->kctrl.bell,
- dmxLocal->kctrl.bell_pitch,
- dmxLocal->kctrl.bell_duration);
-}
-
-/** Sound the bell on the device. If the device send core events, then
- * sound the bell on all of the devices that send core events. */
-void dmxKeyboardBellProc(int percent, DeviceIntPtr pDevice,
- pointer ctrl, int unknown)
-{
- GETDMXLOCALFROMPDEVICE;
- int i, j;
-
- if (dmxLocal->sendsCore) { /* Do for all core devices */
- for (i = 0; i < dmxNumInputs; i++) {
- DMXInputInfo *dmxInput = &dmxInputs[i];
- if (dmxInput->detached) continue;
- for (j = 0; j < dmxInput->numDevs; j++)
- if (dmxInput->devs[j]->sendsCore)
- _dmxKeyboardBellProc(dmxInput->devs[j], percent);
- }
- } else { /* Do for this device only */
- _dmxKeyboardBellProc(dmxLocal, percent);
- }
-}
-
-#ifdef XKB
-static void dmxKeyboardFreeNames(XkbComponentNamesPtr names)
-{
- if (names->keymap) XFree(names->keymap);
- if (names->keycodes) XFree(names->keycodes);
- if (names->types) XFree(names->types);
- if (names->compat) XFree(names->compat);
- if (names->symbols) XFree(names->symbols);
- if (names->geometry) XFree(names->geometry);
-}
-#endif
-
-
-static int dmxKeyboardOn(DeviceIntPtr pDevice, DMXLocalInitInfo *info)
-{
-#ifdef XKB
- GETDMXINPUTFROMPDEVICE;
-#else
- DevicePtr pDev = &pDevice->public;
-#endif
-
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- if (!InitKeyboardDeviceStruct(pDev, &info->keySyms, info->modMap,
- dmxKeyboardBellProc,
- dmxKeyboardKbdCtrlProc))
- return BadImplementation;
-#ifdef XKB
- } else {
- XkbSetRulesDflts(dmxConfigGetXkbRules(),
- dmxConfigGetXkbModel(),
- dmxConfigGetXkbLayout(),
- dmxConfigGetXkbVariant(),
- dmxConfigGetXkbOptions());
- if (XkbInitialMap) { /* Set with -xkbmap */
- dmxLogInput(dmxInput,
- "XKEYBOARD: From command line: %s\n", XkbInitialMap);
- if ((info->names.keymap = strchr(XkbInitialMap, '/')))
- ++info->names.keymap;
- else
- info->names.keymap = XkbInitialMap;
- info->names.keycodes = NULL;
- info->names.types = NULL;
- info->names.compat = NULL;
- info->names.symbols = NULL;
- info->names.geometry = NULL;
- } else {
- if (!info->force && (dmxInput->keycodes
- || dmxInput->symbols
- || dmxInput->geometry)) {
- if (info->freenames) dmxKeyboardFreeNames(&info->names);
- info->freenames = 0;
- info->names.keycodes = dmxInput->keycodes;
- info->names.types = NULL;
- info->names.compat = NULL;
- info->names.symbols = dmxInput->symbols;
- info->names.geometry = dmxInput->geometry;
-
- dmxLogInput(dmxInput, "XKEYBOARD: From command line: %s",
- info->names.keycodes);
- if (info->names.symbols && *info->names.symbols)
- dmxLogInputCont(dmxInput, " %s", info->names.symbols);
- if (info->names.geometry && *info->names.geometry)
- dmxLogInputCont(dmxInput, " %s", info->names.geometry);
- dmxLogInputCont(dmxInput, "\n");
- } else if (info->names.keycodes) {
- dmxLogInput(dmxInput, "XKEYBOARD: From device: %s",
- info->names.keycodes);
- if (info->names.symbols && *info->names.symbols)
- dmxLogInputCont(dmxInput, " %s", info->names.symbols);
- if (info->names.geometry && *info->names.geometry)
- dmxLogInputCont(dmxInput, " %s", info->names.geometry);
- dmxLogInputCont(dmxInput, "\n");
- } else {
- dmxLogInput(dmxInput, "XKEYBOARD: Defaults: %s %s %s %s %s\n",
- dmxConfigGetXkbRules(),
- dmxConfigGetXkbLayout(),
- dmxConfigGetXkbModel(),
- dmxConfigGetXkbVariant()
- ? dmxConfigGetXkbVariant() : "",
- dmxConfigGetXkbOptions()
- ? dmxConfigGetXkbOptions() : "");
- }
- }
- XkbInitKeyboardDeviceStruct(pDevice,
- &info->names,
- &info->keySyms,
- info->modMap,
- dmxKeyboardBellProc,
- dmxKeyboardKbdCtrlProc);
- }
- if (info->freenames) dmxKeyboardFreeNames(&info->names);
-#endif
-
- return Success;
-}
-
-
-static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
-{
- GETDMXINPUTFROMPDEVICE;
- int fd;
- DMXLocalInitInfo info;
-#ifdef XINPUT
- int i;
-#endif
-
- if (!dmxLocal) return BadImplementation;
- if (dmxInput->detached) return Success;
-
- memset(&info, 0, sizeof(info));
- switch (what) {
- case DEVICE_INIT:
- if (dmxLocal->init) dmxLocal->init(pDev);
- if (dmxLocal->get_info) dmxLocal->get_info(pDev, &info);
- if (info.keyboard) { /* XKEYBOARD makes this a special case */
- dmxKeyboardOn(pDevice, &info);
- break;
- }
- if (info.keyClass) {
- InitKeyClassDeviceStruct(pDevice, &info.keySyms, info.modMap);
- }
- if (info.buttonClass) {
- InitButtonClassDeviceStruct(pDevice, info.numButtons, info.map);
- }
- if (info.valuatorClass) {
- if (info.numRelAxes && dmxLocal->sendsCore) {
- InitValuatorClassDeviceStruct(pDevice, info.numRelAxes,
- miPointerGetMotionEvents,
- miPointerGetMotionBufferSize(),
- Relative);
-#ifdef XINPUT
- for (i = 0; i < info.numRelAxes; i++)
- InitValuatorAxisStruct(pDevice, i, info.minval[0],
- info.maxval[0], info.res[0],
- info.minres[0], info.maxres[0]);
-#endif
- } else if (info.numRelAxes) {
- InitValuatorClassDeviceStruct(pDevice, info.numRelAxes,
- dmxPointerGetMotionEvents,
- dmxPointerGetMotionBufferSize(),
- Relative);
-#ifdef XINPUT
- for (i = 0; i < info.numRelAxes; i++)
- InitValuatorAxisStruct(pDevice, i, info.minval[0],
- info.maxval[0], info.res[0],
- info.minres[0], info.maxres[0]);
-#endif
- } else if (info.numAbsAxes) {
- InitValuatorClassDeviceStruct(pDevice, info.numAbsAxes,
- dmxPointerGetMotionEvents,
- dmxPointerGetMotionBufferSize(),
- Absolute);
-#ifdef XINPUT
- for (i = 0; i < info.numAbsAxes; i++)
- InitValuatorAxisStruct(pDevice, i+info.numRelAxes,
- info.minval[i+1], info.maxval[i+1],
- info.res[i+1], info.minres[i+1],
- info.maxres[i+1]);
-#endif
- }
- }
- if (info.focusClass) InitFocusClassDeviceStruct(pDevice);
-#ifdef XINPUT
- if (info.proximityClass) InitProximityClassDeviceStruct(pDevice);
-#endif
- if (info.ptrFeedbackClass)
- InitPtrFeedbackClassDeviceStruct(pDevice, dmxChangePointerControl);
- if (info.kbdFeedbackClass)
- InitKbdFeedbackClassDeviceStruct(pDevice, dmxKeyboardBellProc,
- dmxKeyboardKbdCtrlProc);
- if (info.intFeedbackClass || info.strFeedbackClass)
- dmxLog(dmxWarning,
- "Integer and string feedback not supported for %s\n",
- pDevice->name);
- if (!info.keyboard && (info.ledFeedbackClass || info.belFeedbackClass))
- dmxLog(dmxWarning,
- "Led and bel feedback not supported for non-keyboard %s\n",
- pDevice->name);
- break;
- case DEVICE_ON:
- if (!pDev->on) {
- if (dmxLocal->on && (fd = dmxLocal->on(pDev)) >= 0)
- dmxSigioRegister(dmxInput, fd);
- pDev->on = TRUE;
- }
- break;
- case DEVICE_OFF:
- case DEVICE_CLOSE:
- /* This can get called twice consecutively: once for a
- * detached screen (DEVICE_OFF), and then again at server
- * generation time (DEVICE_CLOSE). */
- if (pDev->on) {
- dmxSigioUnregister(dmxInput);
- if (dmxLocal->off) dmxLocal->off(pDev);
- pDev->on = FALSE;
- }
- break;
- }
- if (info.keySyms.map && info.freemap) {
- XFree(info.keySyms.map);
- info.keySyms.map = NULL;
- }
-#ifdef XKB
- if (info.xkb) XkbFreeKeyboard(info.xkb, 0, True);
-#endif
- return Success;
-}
-
-static void dmxProcessInputEvents(DMXInputInfo *dmxInput)
-{
- int i;
-
- dmxeqProcessInputEvents();
- miPointerUpdate();
- if (dmxInput->detached) return;
- for (i = 0; i < dmxInput->numDevs; i += dmxInput->devs[i]->binding)
- if (dmxInput->devs[i]->process_input)
- dmxInput->devs[i]->process_input(dmxInput->devs[i]->private);
-}
-
-static void dmxUpdateWindowInformation(DMXInputInfo *dmxInput,
- DMXUpdateType type,
- WindowPtr pWindow)
-{
- int i;
-
-#ifdef PANORAMIX
- if (!noPanoramiXExtension && pWindow && pWindow->parent != WindowTable[0])
- return;
-#endif
-#if DMX_WINDOW_DEBUG
- {
- const char *name = "Unknown";
- switch (type) {
- case DMX_UPDATE_REALIZE: name = "Realize"; break;
- case DMX_UPDATE_UNREALIZE: name = "Unrealize"; break;
- case DMX_UPDATE_RESTACK: name = "Restack"; break;
- case DMX_UPDATE_COPY: name = "Copy"; break;
- case DMX_UPDATE_RESIZE: name = "Resize"; break;
- case DMX_UPDATE_REPARENT: name = "Repaint"; break;
- }
- dmxLog(dmxDebug, "Window %p changed: %s\n", pWindow, name);
- }
-#endif
-
- if (dmxInput->detached) return;
- for (i = 0; i < dmxInput->numDevs; i += dmxInput->devs[i]->binding)
- if (dmxInput->devs[i]->update_info)
- dmxInput->devs[i]->update_info(dmxInput->devs[i]->private,
- type, pWindow);
-}
-
-static void dmxCollectAll(DMXInputInfo *dmxInput)
-{
- int i;
-
- if (dmxInput->detached) return;
- for (i = 0; i < dmxInput->numDevs; i += dmxInput->devs[i]->binding)
- if (dmxInput->devs[i]->collect_events)
- dmxInput->devs[i]->collect_events(&dmxInput->devs[i]
- ->pDevice->public,
- dmxMotion,
- dmxEnqueue,
- dmxCheckSpecialKeys, DMX_BLOCK);
-}
-
-static void dmxBlockHandler(pointer blockData, OSTimePtr pTimeout,
- pointer pReadMask)
-{
- DMXInputInfo *dmxInput = &dmxInputs[(int)blockData];
- static unsigned long generation = 0;
-
- if (generation != serverGeneration) {
- generation = serverGeneration;
- dmxCollectAll(dmxInput);
- }
-}
-
-static void dmxSwitchReturn(pointer p)
-{
- DMXInputInfo *dmxInput = p;
- int i;
-
- dmxLog(dmxInfo, "Returning from VT %d\n", dmxInput->vt_switched);
-
- if (!dmxInput->vt_switched)
- dmxLog(dmxFatal, "dmxSwitchReturn called, but not switched\n");
- dmxSigioEnableInput();
- for (i = 0; i < dmxInput->numDevs; i++)
- if (dmxInput->devs[i]->vt_post_switch)
- dmxInput->devs[i]->vt_post_switch(dmxInput->devs[i]->private);
- dmxInput->vt_switched = 0;
-}
-
-static void dmxWakeupHandler(pointer blockData, int result, pointer pReadMask)
-{
- DMXInputInfo *dmxInput = &dmxInputs[(int)blockData];
- int i;
-
- if (dmxInput->vt_switch_pending) {
- dmxLog(dmxInfo, "Switching to VT %d\n", dmxInput->vt_switch_pending);
- for (i = 0; i < dmxInput->numDevs; i++)
- if (dmxInput->devs[i]->vt_pre_switch)
- dmxInput->devs[i]->vt_pre_switch(dmxInput->devs[i]->private);
- dmxInput->vt_switched = dmxInput->vt_switch_pending;
- dmxInput->vt_switch_pending = 0;
- for (i = 0; i < dmxInput->numDevs; i++) {
- if (dmxInput->devs[i]->vt_switch) {
- dmxSigioDisableInput();
- if (!dmxInput->devs[i]->vt_switch(dmxInput->devs[i]->private,
- dmxInput->vt_switched,
- dmxSwitchReturn,
- dmxInput))
- dmxSwitchReturn(dmxInput);
- break; /* Only call one vt_switch routine */
- }
- }
- }
- dmxCollectAll(dmxInput);
-}
-
-static char *dmxMakeUniqueDeviceName(DMXLocalInputInfoPtr dmxLocal)
-{
- static int k = 0;
- static int m = 0;
- static int o = 0;
- static unsigned long dmxGeneration = 0;
-#define LEN 32
- char * buf = xalloc(LEN);
-
- if (dmxGeneration != serverGeneration) {
- k = m = o = 0;
- dmxGeneration = serverGeneration;
- }
-
- switch (dmxLocal->type) {
- case DMX_LOCAL_KEYBOARD: XmuSnprintf(buf, LEN, "Keyboard%d", k++); break;
- case DMX_LOCAL_MOUSE: XmuSnprintf(buf, LEN, "Mouse%d", m++); break;
- default: XmuSnprintf(buf, LEN, "Other%d", o++); break;
- }
-
- return buf;
-}
-
-static DeviceIntPtr dmxAddDevice(DMXLocalInputInfoPtr dmxLocal)
-{
- DeviceIntPtr pDevice;
- Atom atom;
- const char *name = NULL;
- void (*registerProcPtr)(DeviceIntPtr) = NULL;
- char *devname;
- DMXInputInfo *dmxInput;
-
- if (!dmxLocal) return NULL;
- dmxInput = &dmxInputs[dmxLocal->inputIdx];
-
- if (dmxLocal->sendsCore) {
- if (dmxLocal->type == DMX_LOCAL_KEYBOARD && !dmxLocalCoreKeyboard) {
- dmxLocal->isCore = 1;
- dmxLocalCoreKeyboard = dmxLocal;
- name = "keyboard";
- registerProcPtr = _RegisterKeyboardDevice;
- }
- if (dmxLocal->type == DMX_LOCAL_MOUSE && !dmxLocalCorePointer) {
- dmxLocal->isCore = 1;
- dmxLocalCorePointer = dmxLocal;
- name = "pointer";
- registerProcPtr = _RegisterPointerDevice;
- }
- }
-
-#ifdef XINPUT
- if (!name) {
- name = "extension";
- registerProcPtr = RegisterOtherDevice;
- }
-#else
- if (!name)
- dmxLog(dmxFatal,
- "Server not build with XINPUT support (cannot add %s)\n",
- dmxLocal->name);
-#endif
-
- if (!name || !registerProcPtr)
- dmxLog(dmxFatal, "Cannot add device %s\n", dmxLocal->name);
-
- pDevice = AddInputDevice(dmxDeviceOnOff, TRUE);
- if (!pDevice) {
- dmxLog(dmxError, "Too many devices -- cannot add device %s\n",
- dmxLocal->name);
- return NULL;
- }
- pDevice->public.devicePrivate = dmxLocal;
- dmxLocal->pDevice = pDevice;
-
- devname = dmxMakeUniqueDeviceName(dmxLocal);
- atom = MakeAtom((char *)devname, strlen(devname), TRUE);
- pDevice->type = atom;
- pDevice->name = devname;
-
- registerProcPtr(pDevice);
-
- if (dmxLocal->isCore && dmxLocal->type == DMX_LOCAL_MOUSE)
- miRegisterPointerDevice(screenInfo.screens[0], pDevice);
-
- if (dmxLocal->create_private)
- dmxLocal->private = dmxLocal->create_private(pDevice);
-
- dmxLogInput(dmxInput, "Added %s as %s device called %s%s\n",
- dmxLocal->name, name, devname,
- dmxLocal->isCore
- ? " [core]"
- : (dmxLocal->sendsCore
- ? " [sends core events]"
- : ""));
-
- return pDevice;
-}
-
-static DMXLocalInputInfoPtr dmxLookupLocal(const char *name)
-{
- DMXLocalInputInfoPtr pt;
-
- for (pt = &DMXLocalDevices[0]; pt->name; ++pt)
- if (!strcmp(pt->name, name)) return pt; /* search for device name */
- return NULL;
-}
-
-/** Copy the local input information from \a s into a new \a devs slot
- * in \a dmxInput. */
-DMXLocalInputInfoPtr dmxInputCopyLocal(DMXInputInfo *dmxInput,
- DMXLocalInputInfoPtr s)
-{
- DMXLocalInputInfoPtr dmxLocal = xalloc(sizeof(*dmxLocal));
-
- if (!dmxLocal)
- dmxLog(dmxFatal, "DMXLocalInputInfoPtr: out of memory\n");
-
- memcpy(dmxLocal, s, sizeof(*dmxLocal));
- dmxLocal->inputIdx = dmxInput->inputIdx;
- dmxLocal->sendsCore = dmxInput->core;
- dmxLocal->savedSendsCore = dmxInput->core;
- dmxLocal->deviceId = -1;
-
- ++dmxInput->numDevs;
- dmxInput->devs = xrealloc(dmxInput->devs,
- dmxInput->numDevs * sizeof(*dmxInput->devs));
- dmxInput->devs[dmxInput->numDevs-1] = dmxLocal;
-
- return dmxLocal;
-}
-
-static void dmxPopulateLocal(DMXInputInfo *dmxInput, dmxArg a)
-{
- int i;
- int help = 0;
- DMXLocalInputInfoRec *pt;
-
- for (i = 1; i < dmxArgC(a); i++) {
- const char *name = dmxArgV(a, i);
- if ((pt = dmxLookupLocal(name))) {
- dmxInputCopyLocal(dmxInput, pt);
- } else {
- if (strlen(name))
- dmxLog(dmxWarning,
- "Could not find a driver called %s\n", name);
- ++help;
- }
- }
- if (help) {
- dmxLog(dmxInfo, "Available local device drivers:\n");
- for (pt = &DMXLocalDevices[0]; pt->name; ++pt) {
- const char *type;
- switch (pt->type) {
- case DMX_LOCAL_KEYBOARD: type = "keyboard"; break;
- case DMX_LOCAL_MOUSE: type = "pointer"; break;
- default: type = "unknown"; break;
- }
- dmxLog(dmxInfo, " %s (%s)\n", pt->name, type);
- }
- dmxLog(dmxFatal, "Must have valid local device driver\n");
- }
-}
-
-int dmxInputExtensionErrorHandler(Display *dsp, char *name, char *reason)
-{
- return 0;
-}
-
-static void dmxInputScanForExtensions(DMXInputInfo *dmxInput, int doXI)
-{
- XExtensionVersion *ext;
- XDeviceInfo *devices;
- Display *display;
- int num;
- int i, j;
- DMXLocalInputInfoPtr dmxLocal;
- int (*handler)(Display *, char *, char *);
-
- if (!(display = XOpenDisplay(dmxInput->name))) return;
-
- /* Print out information about the XInput Extension. */
- handler = XSetExtensionErrorHandler(dmxInputExtensionErrorHandler);
- ext = XGetExtensionVersion(display, INAME);
- XSetExtensionErrorHandler(handler);
-
- if (!ext || ext == (XExtensionVersion *)NoSuchExtension) {
- dmxLogInput(dmxInput, "%s is not available\n", INAME);
- } else {
- dmxLogInput(dmxInput, "Locating devices on %s (%s version %d.%d)\n",
- dmxInput->name, INAME,
- ext->major_version, ext->minor_version);
- devices = XListInputDevices(display, &num);
-
- XFree(ext);
- ext = NULL;
-
- /* Print a list of all devices */
- for (i = 0; i < num; i++) {
- const char *use = "Unknown";
- switch (devices[i].use) {
- case IsXPointer: use = "XPointer"; break;
- case IsXKeyboard: use = "XKeyboard"; break;
- case IsXExtensionDevice: use = "XExtensionDevice"; break;
- }
- dmxLogInput(dmxInput, " %2d %-10.10s %-16.16s\n",
- devices[i].id,
- devices[i].name ? devices[i].name : "",
- use);
- }
-
- /* Search for extensions */
- for (i = 0; i < num; i++) {
- switch (devices[i].use) {
- case IsXKeyboard:
- for (j = 0; j < dmxInput->numDevs; j++) {
- DMXLocalInputInfoPtr dmxL = dmxInput->devs[j];
- if (dmxL->type == DMX_LOCAL_KEYBOARD
- && dmxL->deviceId < 0) {
- dmxL->deviceId = devices[i].id;
- dmxL->deviceName = (devices[i].name
- ? xstrdup(devices[i].name)
- : NULL);
- }
- }
- break;
- case IsXPointer:
- for (j = 0; j < dmxInput->numDevs; j++) {
- DMXLocalInputInfoPtr dmxL = dmxInput->devs[j];
- if (dmxL->type == DMX_LOCAL_MOUSE && dmxL->deviceId < 0) {
- dmxL->deviceId = devices[i].id;
- dmxL->deviceName = (devices[i].name
- ? xstrdup(devices[i].name)
- : NULL);
- }
- }
- break;
- case IsXExtensionDevice:
- if (doXI) {
- if (!dmxInput->numDevs) {
- dmxLog(dmxWarning,
- "Cannot use remote (%s) XInput devices if"
- " not also using core devices\n",
- dmxInput->name);
- } else {
- dmxLocal = dmxInputCopyLocal(dmxInput,
- &DMXCommonOth);
- dmxLocal->isCore = FALSE;
- dmxLocal->sendsCore = FALSE;
- dmxLocal->deviceId = devices[i].id;
- dmxLocal->deviceName = (devices[i].name
- ? xstrdup(devices[i].name)
- : NULL);
- }
- }
- break;
- }
- }
- XFreeDeviceList(devices);
- }
- XCloseDisplay(display);
-}
-
-/** Re-initialize all the devices described in \a dmxInput. Called from
- #dmxReconfig before the cursor is redisplayed. */
-void dmxInputReInit(DMXInputInfo *dmxInput)
-{
- int i;
-
- for (i = 0; i < dmxInput->numDevs; i++) {
- DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[i];
- if (dmxLocal->reinit)
- dmxLocal->reinit(&dmxLocal->pDevice->public);
- }
-}
-
-/** Re-initialize all the devices described in \a dmxInput. Called from
- #dmxReconfig after the cursor is redisplayed. */
-void dmxInputLateReInit(DMXInputInfo *dmxInput)
-{
- int i;
-
- for (i = 0; i < dmxInput->numDevs; i++) {
- DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[i];
- if (dmxLocal->latereinit)
- dmxLocal->latereinit(&dmxLocal->pDevice->public);
- }
-}
-
-/** Initialize all of the devices described in \a dmxInput. */
-void dmxInputInit(DMXInputInfo *dmxInput)
-{
- DeviceIntPtr pPointer = NULL, pKeyboard = NULL;
- dmxArg a;
- const char *name;
- int i;
- int doXI = 1; /* Include by default */
- int forceConsole = 0;
- int doWindows = 1; /* On by default */
- int hasXkb = 0;
-
- a = dmxArgParse(dmxInput->name);
-
- for (i = 1; i < dmxArgC(a); i++) {
- switch (hasXkb) {
- case 1:
- dmxInput->keycodes = xstrdup(dmxArgV(a, i));
- ++hasXkb;
- break;
- case 2:
- dmxInput->symbols = xstrdup(dmxArgV(a, i));
- ++hasXkb;
- break;
- case 3:
- dmxInput->geometry = xstrdup(dmxArgV(a, i));
- hasXkb = 0;
- break;
- case 0:
- if (!strcmp(dmxArgV(a, i), "noxi")) doXI = 0;
- else if (!strcmp(dmxArgV(a, i), "xi")) doXI = 1;
- else if (!strcmp(dmxArgV(a, i), "console")) forceConsole = 1;
- else if (!strcmp(dmxArgV(a, i), "noconsole")) forceConsole = 0;
- else if (!strcmp(dmxArgV(a, i), "windows")) doWindows = 1;
- else if (!strcmp(dmxArgV(a, i), "nowindows")) doWindows = 0;
- else if (!strcmp(dmxArgV(a, i), "xkb")) hasXkb = 1;
- else {
- dmxLog(dmxFatal,
- "Unknown input argument: %s\n", dmxArgV(a, i));
- }
- }
- }
-
- name = dmxArgV(a, 0);
-
- if (!strcmp(name, "local")) {
- dmxPopulateLocal(dmxInput, a);
- } else if (!strcmp(name, "dummy")) {
- dmxInputCopyLocal(dmxInput, &DMXDummyMou);
- dmxInputCopyLocal(dmxInput, &DMXDummyKbd);
- dmxLogInput(dmxInput, "Using dummy input\n");
- } else {
- int found;
-
- for (found = 0, i = 0; i < dmxNumScreens; i++) {
- if (dmxPropertySameDisplay(&dmxScreens[i], name)) {
- if (dmxScreens[i].shared)
- dmxLog(dmxFatal,
- "Cannot take input from shared backend (%s)\n",
- name);
- if (!dmxInput->core) {
- dmxLog(dmxWarning,
- "Cannot use core devices on a backend (%s)"
- " as XInput devices\n", name);
- } else {
- char *pt;
- for (pt = (char *)dmxInput->name; pt && *pt; pt++)
- if (*pt == ',') *pt = '\0';
- dmxInputCopyLocal(dmxInput, &DMXBackendMou);
- dmxInputCopyLocal(dmxInput, &DMXBackendKbd);
- dmxInput->scrnIdx = i;
- dmxLogInput(dmxInput,
- "Using backend input from %s\n", name);
- }
- ++found;
- break;
- }
- }
- if (!found || forceConsole) {
- char *pt;
- if (found) dmxInput->console = TRUE;
- for (pt = (char *)dmxInput->name; pt && *pt; pt++)
- if (*pt == ',') *pt = '\0';
- dmxInputCopyLocal(dmxInput, &DMXConsoleMou);
- dmxInputCopyLocal(dmxInput, &DMXConsoleKbd);
- if (doWindows) {
- dmxInput->windows = TRUE;
- dmxInput->updateWindowInfo = dmxUpdateWindowInformation;
- }
- dmxLogInput(dmxInput,
- "Using console input from %s (%s windows)\n",
- name, doWindows ? "with" : "without");
- }
- }
-
- dmxArgFree(a);
-
- /* Locate extensions we may be interested in */
- dmxInputScanForExtensions(dmxInput, doXI);
-
- for (i = 0; i < dmxInput->numDevs; i++) {
- DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[i];
-#ifndef XINPUT
- if (!dmxLocal->isCore)
- dmxLog(dmxFatal,
- "This server was not compiled to support the XInput"
- " extension, but %s is not a core device.\n",
- dmxLocal->name);
-#endif
- dmxLocal->pDevice = dmxAddDevice(dmxLocal);
- if (dmxLocal->isCore) {
- if (dmxLocal->type == DMX_LOCAL_MOUSE)
- pPointer = dmxLocal->pDevice;
- if (dmxLocal->type == DMX_LOCAL_KEYBOARD)
- pKeyboard = dmxLocal->pDevice;
- }
- }
-
- if (pPointer && pKeyboard) {
- if (dmxeqInit(&pKeyboard->public, &pPointer->public))
- dmxLogInput(dmxInput, "Using %s and %s as true core devices\n",
- pKeyboard->name, pPointer->name);
- }
-
- dmxInput->processInputEvents = dmxProcessInputEvents;
- dmxInput->detached = False;
-
- RegisterBlockAndWakeupHandlers(dmxBlockHandler,
- dmxWakeupHandler,
- (void *)dmxInput->inputIdx);
-}
-
-static void dmxInputFreeLocal(DMXLocalInputInfoRec *local)
-{
- if (!local) return;
- if (local->isCore && local->type == DMX_LOCAL_MOUSE)
- dmxLocalCorePointer = NULL;
- if (local->isCore && local->type == DMX_LOCAL_KEYBOARD)
- dmxLocalCoreKeyboard = NULL;
- if (local->destroy_private) local->destroy_private(local->private);
- if (local->history) xfree(local->history);
- if (local->valuators) xfree(local->valuators);
- if (local->deviceName) xfree(local->deviceName);
- local->private = NULL;
- local->history = NULL;
- local->deviceName = NULL;
- xfree(local);
-}
-
-/** Free all of the memory associated with \a dmxInput */
-void dmxInputFree(DMXInputInfo *dmxInput)
-{
- int i;
-
- if (!dmxInput) return;
-
- if (dmxInput->keycodes) xfree(dmxInput->keycodes);
- if (dmxInput->symbols) xfree(dmxInput->symbols);
- if (dmxInput->geometry) xfree(dmxInput->geometry);
-
- for (i = 0; i < dmxInput->numDevs; i++) {
- dmxInputFreeLocal(dmxInput->devs[i]);
- dmxInput->devs[i] = NULL;
- }
- xfree(dmxInput->devs);
- dmxInput->devs = NULL;
- dmxInput->numDevs = 0;
- if (dmxInput->freename) xfree(dmxInput->name);
- dmxInput->name = NULL;
-}
-
-/** Log information about all of the known devices using #dmxLog(). */
-void dmxInputLogDevices(void)
-{
- int i, j;
-
- dmxLog(dmxInfo, "%d devices:\n", dmxGetInputCount());
- dmxLog(dmxInfo, " Id Name Classes\n");
- for (j = 0; j < dmxNumInputs; j++) {
- DMXInputInfo *dmxInput = &dmxInputs[j];
- const char *pt = strchr(dmxInput->name, ',');
- int len = (pt
- ? (size_t)(pt-dmxInput->name)
- : strlen(dmxInput->name));
-
- for (i = 0; i < dmxInput->numDevs; i++) {
- DeviceIntPtr pDevice = dmxInput->devs[i]->pDevice;
- if (pDevice) {
- dmxLog(dmxInfo, " %2d%c %-20.20s",
- pDevice->id,
- dmxInput->detached ? 'D' : ' ',
- pDevice->name);
- if (pDevice->key) dmxLogCont(dmxInfo, " key");
- if (pDevice->valuator) dmxLogCont(dmxInfo, " val");
- if (pDevice->button) dmxLogCont(dmxInfo, " btn");
- if (pDevice->focus) dmxLogCont(dmxInfo, " foc");
- if (pDevice->kbdfeed) dmxLogCont(dmxInfo, " fb/kbd");
- if (pDevice->ptrfeed) dmxLogCont(dmxInfo, " fb/ptr");
- if (pDevice->intfeed) dmxLogCont(dmxInfo, " fb/int");
- if (pDevice->stringfeed) dmxLogCont(dmxInfo, " fb/str");
- if (pDevice->bell) dmxLogCont(dmxInfo, " fb/bel");
- if (pDevice->leds) dmxLogCont(dmxInfo, " fb/led");
- if (!pDevice->key && !pDevice->valuator && !pDevice->button
- && !pDevice->focus && !pDevice->kbdfeed
- && !pDevice->ptrfeed && !pDevice->intfeed
- && !pDevice->stringfeed && !pDevice->bell
- && !pDevice->leds) dmxLogCont(dmxInfo, " (none)");
-
- dmxLogCont(dmxInfo, "\t[i%d/%*.*s",
- dmxInput->inputIdx, len, len, dmxInput->name);
- if (dmxInput->devs[i]->deviceId >= 0)
- dmxLogCont(dmxInfo, "/id%d", dmxInput->devs[i]->deviceId);
- if (dmxInput->devs[i]->deviceName)
- dmxLogCont(dmxInfo, "=%s", dmxInput->devs[i]->deviceName);
- dmxLogCont(dmxInfo, "] %s\n",
- dmxInput->devs[i]->isCore
- ? "core"
- : (dmxInput->devs[i]->sendsCore
- ? "extension (sends core events)"
- : "extension"));
- }
- }
- }
-}
-
-/** Detach an input */
-int dmxInputDetach(DMXInputInfo *dmxInput)
-{
- int i;
-
- if (dmxInput->detached) return BadAccess;
-
- for (i = 0; i < dmxInput->numDevs; i++) {
- DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[i];
- dmxLogInput(dmxInput, "Detaching device id %d: %s%s\n",
- dmxLocal->pDevice->id,
- dmxLocal->pDevice->name,
- dmxLocal->isCore
- ? " [core]"
- : (dmxLocal->sendsCore
- ? " [sends core events]"
- : ""));
- DisableDevice(dmxLocal->pDevice);
- }
- dmxInput->detached = True;
- dmxInputLogDevices();
- return 0;
-}
-
-/** Search for input associated with \a dmxScreen, and detach. */
-void dmxInputDetachAll(DMXScreenInfo *dmxScreen)
-{
- int i;
-
- for (i = 0; i < dmxNumInputs; i++) {
- DMXInputInfo *dmxInput = &dmxInputs[i];
- if (dmxInput->scrnIdx == dmxScreen->index) dmxInputDetach(dmxInput);
- }
-}
-
-/** Search for input associated with \a deviceId, and detach. */
-int dmxInputDetachId(int id)
-{
- DMXInputInfo *dmxInput = dmxInputLocateId(id);
-
- if (!dmxInput) return BadValue;
-
- return dmxInputDetach(dmxInput);
-}
-
-DMXInputInfo *dmxInputLocateId(int id)
-{
- int i, j;
-
- for (i = 0; i < dmxNumInputs; i++) {
- DMXInputInfo *dmxInput = &dmxInputs[i];
- for (j = 0; j < dmxInput->numDevs; j++) {
- DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[j];
- if (dmxLocal->pDevice->id == id) return dmxInput;
- }
- }
- return NULL;
-}
-
-static int dmxInputAttachNew(DMXInputInfo *dmxInput, int *id)
-{
- dmxInputInit(dmxInput);
- InitAndStartDevices();
- if (id && dmxInput->devs) *id = dmxInput->devs[0]->pDevice->id;
- dmxInputLogDevices();
- return 0;
-}
-
-static int dmxInputAttachOld(DMXInputInfo *dmxInput, int *id)
-{
- int i;
-
- dmxInput->detached = False;
- for (i = 0; i < dmxInput->numDevs; i++) {
- DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[i];
- if (id) *id = dmxLocal->pDevice->id;
- dmxLogInput(dmxInput,
- "Attaching device id %d: %s%s\n",
- dmxLocal->pDevice->id,
- dmxLocal->pDevice->name,
- dmxLocal->isCore
- ? " [core]"
- : (dmxLocal->sendsCore
- ? " [sends core events]"
- : ""));
- EnableDevice(dmxLocal->pDevice);
- }
- dmxInputLogDevices();
- return 0;
-}
-
-int dmxInputAttachConsole(const char *name, int isCore, int *id)
-{
- DMXInputInfo *dmxInput;
- int i;
-
- for (i = 0; i < dmxNumInputs; i++) {
- dmxInput = &dmxInputs[i];
- if (dmxInput->scrnIdx == -1
- && dmxInput->detached
- && !strcmp(dmxInput->name, name)) {
- /* Found match */
- dmxLogInput(dmxInput, "Reattaching detached console input\n");
- return dmxInputAttachOld(dmxInput, id);
- }
- }
-
- /* No match found */
- dmxInput = dmxConfigAddInput(xstrdup(name), isCore);
- dmxInput->freename = TRUE;
- dmxLogInput(dmxInput, "Attaching new console input\n");
- return dmxInputAttachNew(dmxInput, id);
-}
-
-int dmxInputAttachBackend(int physicalScreen, int isCore, int *id)
-{
- DMXInputInfo *dmxInput;
- DMXScreenInfo *dmxScreen;
- int i;
-
- if (physicalScreen < 0 || physicalScreen >= dmxNumScreens) return BadValue;
- for (i = 0; i < dmxNumInputs; i++) {
- dmxInput = &dmxInputs[i];
- if (dmxInput->scrnIdx != -1 && dmxInput->scrnIdx == physicalScreen) {
- /* Found match */
- if (!dmxInput->detached) return BadAccess; /* Already attached */
- dmxScreen = &dmxScreens[physicalScreen];
- if (!dmxScreen->beDisplay) return BadAccess; /* Screen detached */
- dmxLogInput(dmxInput, "Reattaching detached backend input\n");
- return dmxInputAttachOld(dmxInput, id);
- }
- }
- /* No match found */
- dmxScreen = &dmxScreens[physicalScreen];
- if (!dmxScreen->beDisplay) return BadAccess; /* Screen detached */
- dmxInput = dmxConfigAddInput(dmxScreen->name, isCore);
- dmxLogInput(dmxInput, "Attaching new backend input\n");
- return dmxInputAttachNew(dmxInput, id);
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxinputinit.h b/nx-X11/programs/Xserver/hw/dmx/input/dmxinputinit.h
deleted file mode 100644
index c593e267a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxinputinit.h
+++ /dev/null
@@ -1,294 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface for low-level input support. \see dmxinputinit.c */
-
-#ifndef _DMXINPUTINIT_H_
-#define _DMXINPUTINIT_H_
-
-#include "dmx.h"
-#include "dmxinput.h"
-#include "dmxlog.h"
-
-
-#define DMX_LOCAL_DEFAULT_KEYBOARD "kbd"
-#define DMX_LOCAL_DEFAULT_POINTER "ps2"
-#define DMX_MAX_BUTTONS 256
-#define DMX_MOTION_SIZE 256
-#define DMX_MAX_VALUATORS 32
-#define DMX_MAX_AXES 32
-#define DMX_MAX_XINPUT_EVENT_TYPES 100
-#define DMX_MAP_ENTRIES 16 /* Must be a power of 2 */
-#define DMX_MAP_MASK (DMX_MAP_ENTRIES - 1)
-
-typedef enum {
- DMX_FUNCTION_GRAB,
- DMX_FUNCTION_TERMINATE,
- DMX_FUNCTION_FINE
-} DMXFunctionType;
-
-typedef enum {
- DMX_LOCAL_HIGHLEVEL,
- DMX_LOCAL_KEYBOARD,
- DMX_LOCAL_MOUSE,
- DMX_LOCAL_OTHER
-} DMXLocalInputType;
-
-typedef enum {
- DMX_LOCAL_TYPE_LOCAL,
- DMX_LOCAL_TYPE_CONSOLE,
- DMX_LOCAL_TYPE_BACKEND,
- DMX_LOCAL_TYPE_COMMON
-} DMXLocalInputExtType;
-
-typedef enum {
- DMX_RELATIVE,
- DMX_ABSOLUTE,
- DMX_ABSOLUTE_CONFINED
-} DMXMotionType;
-
-/** Stores information from low-level device that is used to initialize
- * the device at the dix level. */
-typedef struct _DMXLocalInitInfo {
- int keyboard; /**< Non-zero if the device is a keyboard */
-
- int keyClass; /**< Non-zero if keys are present */
- KeySymsRec keySyms; /**< Key symbols */
- int freemap; /**< If non-zero, free keySyms.map */
- CARD8 modMap[MAP_LENGTH]; /**< Modifier map */
-#ifdef XKB
- XkbDescPtr xkb; /**< XKB description */
- XkbComponentNamesRec names; /**< XKB component names */
- int freenames; /**< Non-zero if names should be free'd */
- int force; /**< Do not allow command line override */
-#endif
-
- int buttonClass; /**< Non-zero if buttons are present */
- int numButtons; /**< Number of buttons */
- unsigned char map[DMX_MAX_BUTTONS]; /**< Button map */
-
- int valuatorClass; /**< Non-zero if valuators are
- * present */
- int numRelAxes; /**< Number of relative axes */
- int numAbsAxes; /**< Number of absolute axes */
- int minval[DMX_MAX_AXES]; /**< Minimum values */
- int maxval[DMX_MAX_AXES]; /**< Maximum values */
- int res[DMX_MAX_AXES]; /**< Resolution */
- int minres[DMX_MAX_AXES]; /**< Minimum resolutions */
- int maxres[DMX_MAX_AXES]; /**< Maximum resolutions */
-
- int focusClass; /**< Non-zero if device can
- * cause focus */
- int proximityClass; /**< Non-zero if device
- * causes proximity events */
- int kbdFeedbackClass; /**< Non-zero if device has
- * keyboard feedback */
- int ptrFeedbackClass; /**< Non-zero if device has
- * pointer feedback */
- int ledFeedbackClass; /**< Non-zero if device has
- * LED indicators */
- int belFeedbackClass; /**< Non-zero if device has a
- * bell */
- int intFeedbackClass; /**< Non-zero if device has
- * integer feedback */
- int strFeedbackClass; /**< Non-zero if device has
- * string feedback */
-
- int maxSymbols; /**< Maximum symbols */
- int maxSymbolsSupported; /**< Maximum symbols supported */
- KeySym *symbols; /**< Key symbols */
-} DMXLocalInitInfo, *DMXLocalInitInfoPtr;
-
-typedef pointer (*dmxCreatePrivateProcPtr)(DeviceIntPtr);
-typedef void (*dmxDestroyPrivateProcPtr)(pointer);
-
-typedef void (*dmxInitProcPtr)(DevicePtr);
-typedef void (*dmxReInitProcPtr)(DevicePtr);
-typedef void (*dmxLateReInitProcPtr)(DevicePtr);
-typedef void (*dmxGetInfoProcPtr)(DevicePtr, DMXLocalInitInfoPtr);
-typedef int (*dmxOnProcPtr)(DevicePtr);
-typedef void (*dmxOffProcPtr)(DevicePtr);
-typedef void (*dmxUpdatePositionProcPtr)(pointer, int x, int y);
-
-typedef void (*dmxVTPreSwitchProcPtr)(pointer); /* Turn I/O Off */
-typedef void (*dmxVTPostSwitchProcPtr)(pointer); /* Turn I/O On */
-typedef void (*dmxVTSwitchReturnProcPtr)(pointer);
-typedef int (*dmxVTSwitchProcPtr)(pointer, int vt,
- dmxVTSwitchReturnProcPtr, pointer);
-
-typedef void (*dmxMotionProcPtr)(DevicePtr,
- int *valuators,
- int firstAxis,
- int axesCount,
- DMXMotionType type,
- DMXBlockType block);
-typedef void (*dmxEnqueueProcPtr)(DevicePtr, int type, int detail,
- KeySym keySym, XEvent *e,
- DMXBlockType block);
-typedef int (*dmxCheckSpecialProcPtr)(DevicePtr, KeySym keySym);
-typedef void (*dmxCollectEventsProcPtr)(DevicePtr,
- dmxMotionProcPtr,
- dmxEnqueueProcPtr,
- dmxCheckSpecialProcPtr,
- DMXBlockType);
-typedef void (*dmxProcessInputProcPtr)(pointer);
-typedef void (*dmxUpdateInfoProcPtr)(pointer, DMXUpdateType, WindowPtr);
-typedef int (*dmxFunctionsProcPtr)(pointer, DMXFunctionType);
-
-typedef void (*dmxKBCtrlProcPtr)(DevicePtr, KeybdCtrl *ctrl);
-typedef void (*dmxMCtrlProcPtr)(DevicePtr, PtrCtrl *ctrl);
-typedef void (*dmxKBBellProcPtr)(DevicePtr, int percent,
- int volume, int pitch, int duration);
-
-/** Stores a mapping between the device id on the remote X server and
- * the id on the DMX server */
-typedef struct _DMXEventMap {
- int remote; /**< Event number on remote X server */
- int server; /**< Event number (unbiased) on DMX server */
-} DMXEventMap;
-
-/** This is the device-independent structure used by the low-level input
- * routines. The contents are not exposed to top-level .c files (except
- * dmxextensions.c). \see dmxinput.h \see dmxextensions.c */
-typedef struct _DMXLocalInputInfo {
- const char *name; /**< Device name */
- DMXLocalInputType type; /**< Device type */
- DMXLocalInputExtType extType; /**< Extended device type */
- int binding; /**< Count of how many consecutive
- * structs are bound to the same
- * device */
-
- /* Low-level (e.g., keyboard/mouse drivers) */
-
- dmxCreatePrivateProcPtr create_private; /**< Create
- * device-dependent
- * private */
- dmxDestroyPrivateProcPtr destroy_private; /**< Destroy
- * device-dependent
- * private */
- dmxInitProcPtr init; /**< Initialize device */
- dmxReInitProcPtr reinit; /**< Reinitialize device
- * (during a
- * reconfiguration) */
- dmxLateReInitProcPtr latereinit; /**< Reinitialize a device
- * (called very late
- * during a
- * reconfiguration) */
- dmxGetInfoProcPtr get_info; /**< Get device information */
- dmxOnProcPtr on; /**< Turn device on */
- dmxOffProcPtr off; /**< Turn device off */
- dmxUpdatePositionProcPtr update_position; /**< Called when another
- * device updates the
- * cursor position */
- dmxVTPreSwitchProcPtr vt_pre_switch; /**< Called before a VT switch */
- dmxVTPostSwitchProcPtr vt_post_switch; /**< Called after a VT switch */
- dmxVTSwitchProcPtr vt_switch; /**< Causes a VT switch */
-
- dmxCollectEventsProcPtr collect_events; /**< Collect and enqueue
- * events from the
- * device*/
- dmxProcessInputProcPtr process_input; /**< Process event (from
- * queue) */
- dmxFunctionsProcPtr functions;
- dmxUpdateInfoProcPtr update_info; /**< Update window layout
- * information */
-
- dmxMCtrlProcPtr mCtrl; /**< Pointer control */
- dmxKBCtrlProcPtr kCtrl; /**< Keyboard control */
- dmxKBBellProcPtr kBell; /**< Bell control */
-
- pointer private; /**< Device-dependent private */
- int isCore; /**< Is a DMX core device */
- int sendsCore; /**< Sends DMX core events */
- KeybdCtrl kctrl; /**< Keyboard control */
- PtrCtrl mctrl; /**< Pointer control */
-
- DeviceIntPtr pDevice; /**< X-level device */
- int inputIdx; /**< High-level index */
- int lastX, lastY; /**< Last known position;
- * for XInput in
- * dmxevents.c */
-
- int head; /**< XInput motion history
- * head */
- int tail; /**< XInput motion history
- * tail */
- unsigned long *history; /**< XInput motion history */
- int *valuators; /**< Cache of previous values */
-
- /* for XInput ChangePointerDevice */
- int (*savedMotionProc)(DeviceIntPtr,
- xTimecoord *,
- unsigned long,
- unsigned long,
- ScreenPtr);
- int savedMotionEvents; /**< Saved motion events */
- int savedSendsCore; /**< Saved sends-core flag */
-
- DMXEventMap map[DMX_MAP_ENTRIES]; /**< XInput device id map */
- int mapOptimize; /**< XInput device id
- * map
- * optimization */
-
- long deviceId; /**< device id on remote side,
- * if any */
- const char *deviceName; /**< devive name on remote
- * side, if any */
-} DMXLocalInputInfoRec;
-
-extern DMXLocalInputInfoPtr dmxLocalCorePointer, dmxLocalCoreKeyboard;
-
-extern void dmxLocalInitInput(DMXInputInfo *dmxInput);
-extern DMXLocalInputInfoPtr dmxInputCopyLocal(DMXInputInfo *dmxInput,
- DMXLocalInputInfoPtr s);
-
-extern void dmxChangePointerControl(DeviceIntPtr pDevice, PtrCtrl *ctrl);
-extern void dmxKeyboardKbdCtrlProc(DeviceIntPtr pDevice, KeybdCtrl *ctrl);
-extern void dmxKeyboardBellProc(int percent, DeviceIntPtr pDevice,
- pointer ctrl, int unknown);
-
-extern int dmxInputExtensionErrorHandler(Display *dsp, char *name,
- char *reason);
-
-extern int dmxInputDetach(DMXInputInfo *dmxInput);
-extern void dmxInputDetachAll(DMXScreenInfo *dmxScreen);
-extern int dmxInputDetachId(int id);
-extern DMXInputInfo *dmxInputLocateId(int id);
-extern int dmxInputAttachConsole(const char *name, int isCore,
- int *id);
-extern int dmxInputAttachBackend(int physicalScreen, int isCore,
- int *id);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxmap.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxmap.c
deleted file mode 100644
index cf1be5853..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxmap.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 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 <faith@redhat.com>
- */
-
-/** \file
- *
- * This file implements a mapping from remote XInput event types to Xdmx
- * XInput event types.
- *
- * The exglobals.h file defines global server-side variables with names
- * Device* to be integers that hold the value of the type of the
- * server-side XInput extension event.
- *
- * The client-side X11/extensions/XInput.h file defines macros with THE
- * EXACT SAME Device* names!
- *
- * Using those macros to extract remote server event type values from
- * the (opaque) XDevice structure is appropriate, but makes a direct
- * mapping to the Device* integers impossible. So we use the normalized
- * XI_Device* names for these routines.
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmxinputinit.h"
-#include "dmxmap.h"
-
-/** Create a mapping from \a remoteEvent to \a serverEvent. The \a
- * remoteEvent is the type returned from the remote server. The \a
- * serverEvent is from the XI_* list of events in
- * include/extensions/XIproto.h. */
-void dmxMapInsert(DMXLocalInputInfoPtr dmxLocal,
- int remoteEvent, int serverEvent)
-{
- int hash = remoteEvent & DMX_MAP_MASK;
- int i;
-
- /* Return if this has already been mapped */
- if (dmxLocal->map[hash].remote == remoteEvent
- && dmxLocal->map[hash].server == serverEvent) return;
-
- if (dmxLocal->map[hash].remote) {
- dmxLocal->mapOptimize = 0;
- for (i = 0; i < DMX_MAP_ENTRIES; i++) {
- if (!dmxLocal->map[i].remote) {
- dmxLocal->map[i].remote = remoteEvent;
- dmxLocal->map[i].server = serverEvent;
- return;
- }
- }
- dmxLog(dmxWarning,
- "Out of map entries, cannot map remove event type %d\n",
- remoteEvent);
- } else {
- dmxLocal->map[hash].remote = remoteEvent;
- dmxLocal->map[hash].server = serverEvent;
- }
-}
-
-/** Remove all mappings there were inserted with #dmxMapInsert. */
-void dmxMapClear(DMXLocalInputInfoPtr dmxLocal)
-{
- int i;
-
- for (i = 0; i < DMX_MAP_ENTRIES; i++) dmxLocal->map[i].remote = 0;
- dmxLocal->mapOptimize = 1;
-}
-
-/** Lookup a mapping for \a remoteEvent. The \a remoteEvent is the type
- * returned from the remote server. The return value is that which was
- * passed into #dmxMapInsert (i.e., a value from the XI_* list in
- * include/extensions/XIproto.h). If a mapping is not available, -1 is
- * returned. */
-int dmxMapLookup(DMXLocalInputInfoPtr dmxLocal, int remoteEvent)
-{
- int hash = remoteEvent & DMX_MAP_MASK;
- int serverEvent = -1;
- int i;
-
- if (dmxLocal->mapOptimize && dmxLocal->map[hash].remote == remoteEvent) {
- serverEvent = dmxLocal->map[hash].server;
- } else {
- for (i = 0; i < DMX_MAP_ENTRIES; i++)
- if (dmxLocal->map[i].remote == remoteEvent) {
- serverEvent = dmxLocal->map[hash].server;
- break;
- }
- }
-
- return serverEvent;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxmap.h b/nx-X11/programs/Xserver/hw/dmx/input/dmxmap.h
deleted file mode 100644
index 662955636..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxmap.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 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 <faith@redhat.com>
- */
-
-/** \file
- * Interface to XInput event mapping support. \see dmxmap.c */
-
-#ifndef _DMXMAP_H_
-#define _DMXMAP_H_
-extern void dmxMapInsert(DMXLocalInputInfoPtr dmxLocal,
- int remoteEvent, int serverEvent);
-extern void dmxMapClear(DMXLocalInputInfoPtr dmxLocal);
-extern int dmxMapLookup(DMXLocalInputInfoPtr dmxLocal, int remoteEvent);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxmotion.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxmotion.c
deleted file mode 100644
index 7b47c4562..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxmotion.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * This file provides functions similar to miPointerGetMotionEvents and
- * miPointerPutMotionEvents, with the exception that devices with more
- * than two axes are fully supported. These routines may be used only
- * for motion buffers for extension devices, and are \a not compatible
- * replacements for the mi routines. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "inputstr.h"
-#include "dmxinputinit.h"
-#include "dmxcommon.h"
-#include "dmxmotion.h"
-
-#define OFFSET(offset,element) ((offset) * (numAxes + 1) + (element))
-
-/** Return size of motion buffer. \see DMX_MOTION_SIZE */
-int dmxPointerGetMotionBufferSize(void)
-{
- return DMX_MOTION_SIZE;
-}
-
-/** This routine performs the same function as \a miPointerGetMotionEvents:
- * the events in the motion history that are between the start and stop
- * times (in mS) are placed in the coords vector, and the count of the
- * number of items so placed is returned. This routine is called from
- * dix/devices.c so that coords can hold valuator->numMotionEvents
- * events. This routine is called from \a Xi/gtmotion.c with coords large
- * enough to hold the same number of events in a variable-length
- * extended \a xTimecoord structure. This provides sufficient data for the
- * \a XGetDeviceMotionEvents library call, and would be identical to
- * \a miPointerGetMotionEvents for devices with only 2 axes (i.e., core
- * pointers) if \a xTimecoord used 32bit integers.
- *
- * Because DMX uses the mi* routines for all core devices, this routine
- * only has to support extension devices using the polymorphic coords.
- * Because compatibility with miPointerGetMotionEvents is not possible,
- * it is not provided. */
-int dmxPointerGetMotionEvents(DeviceIntPtr pDevice,
- xTimecoord *coords,
- unsigned long start,
- unsigned long stop,
- ScreenPtr pScreen)
-{
- GETDMXLOCALFROMPDEVICE;
- int numAxes = pDevice->valuator->numAxes;
- unsigned long *c = (unsigned long *)coords;
- int count = 0;
- int i, j;
-
- if (!dmxLocal->history) return 0;
- for (i = dmxLocal->head; i != dmxLocal->tail;) {
- if (dmxLocal->history[OFFSET(i,0)] >= stop) break;
- if (dmxLocal->history[OFFSET(i,0)] >= start) {
- for (j = 0; j < numAxes + 1; j++)
- c[OFFSET(count,j)] = dmxLocal->history[OFFSET(i,j)];
- ++count;
- }
- if (++i >= DMX_MOTION_SIZE) i = 0;
- }
- return count;
-}
-
-/** This routine adds an event to the motion history. A similar
- * function is performed by miPointerMove for the mi versions of these
- * routines. */
-void dmxPointerPutMotionEvent(DeviceIntPtr pDevice,
- int firstAxis, int axesCount, int *v,
- unsigned long time)
-{
- GETDMXLOCALFROMPDEVICE;
- int numAxes = pDevice->valuator->numAxes;
- int i;
-
- if (!dmxLocal->history) {
- dmxLocal->history = xalloc(sizeof(*dmxLocal->history)
- * (numAxes + 1)
- * DMX_MOTION_SIZE);
- dmxLocal->head = 0;
- dmxLocal->tail = 0;
- dmxLocal->valuators = xalloc(sizeof(*dmxLocal->valuators) * numAxes);
- memset(dmxLocal->valuators, 0, sizeof(*dmxLocal->valuators) * numAxes);
- } else {
- if (++dmxLocal->tail >= DMX_MOTION_SIZE) dmxLocal->tail = 0;
- if (dmxLocal->head == dmxLocal->tail)
- if (++dmxLocal->head >= DMX_MOTION_SIZE) dmxLocal->head = 0;
- }
-
- dmxLocal->history[OFFSET(dmxLocal->tail,0)] = time;
-
- /* Initialize the data from the known
- * values (if Absolute) or to zero (if
- * Relative) */
- if (pDevice->valuator->mode == Absolute) {
- for (i = 0; i < numAxes; i++)
- dmxLocal->history[OFFSET(dmxLocal->tail,i+1)]
- = dmxLocal->valuators[i];
- } else {
- for (i = 0; i < numAxes; i++)
- dmxLocal->history[OFFSET(dmxLocal->tail,i+1)] = 0;
- }
-
- for (i = firstAxis; i < axesCount; i++) {
- dmxLocal->history[OFFSET(dmxLocal->tail,i+i)]
- = (unsigned long)v[i-firstAxis];
- dmxLocal->valuators[i] = v[i-firstAxis];
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxmotion.h b/nx-X11/programs/Xserver/hw/dmx/input/dmxmotion.h
deleted file mode 100644
index 2928f5f2a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxmotion.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to functions supporting motion events. \see dmxmotion.c */
-
-#ifndef _DMXMOTION_H_
-#define _DMXMOTION_H_
-
-extern int dmxPointerGetMotionBufferSize(void);
-extern int dmxPointerGetMotionEvents(DeviceIntPtr pDevice,
- xTimecoord *coords,
- unsigned long start,
- unsigned long stop,
- ScreenPtr pScreen);
-extern void dmxPointerPutMotionEvent(DeviceIntPtr pDevice,
- int firstAxis, int axesCount, int *v,
- unsigned long time);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxsigio.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxsigio.c
deleted file mode 100644
index 840b56641..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxsigio.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * Provides an interface for handling SIGIO signals for input devices. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "inputstr.h"
-#include "dmxinputinit.h"
-#include "dmxsigio.h"
-#include "dmxevents.h"
-#include <signal.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-static int dmxFdCount = 0;
-static Bool dmxInputEnabled = TRUE;
-
-/* Define equivalents for non-POSIX systems (e.g., SGI IRIX, Solaris) */
-#ifndef O_ASYNC
-# ifdef FASYNC
-# define O_ASYNC FASYNC
-# else
-# define O_ASYNC 0
-# endif
-#endif
-#ifndef O_NONBLOCK
-#define O_NONBLOCK FNONBLK
-#endif
-
-static void dmxSigioHandler(int sig)
-{
- int i, j;
- DMXInputInfo *dmxInput;
-
- for (i = 0, dmxInput = &dmxInputs[0]; i < dmxNumInputs; i++, dmxInput++) {
- if (dmxInput->sigioState == DMX_ACTIVESIGIO) {
- for (j = 0; j < dmxInput->numDevs; j++) {
- DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[j];
- if (dmxLocal->collect_events) {
- dmxLocal->collect_events(&dmxLocal->pDevice->public,
- dmxMotion,
- dmxEnqueue,
- dmxCheckSpecialKeys,
- DMX_NO_BLOCK);
- }
- }
- }
- }
-}
-
-/** Block SIGIO handling. */
-void dmxSigioBlock(void)
-{
- sigset_t s;
-
- sigemptyset(&s);
- sigaddset(&s, SIGIO);
- sigprocmask(SIG_BLOCK, &s, 0);
-}
-
-/** Unblock SIGIO handling. */
-void dmxSigioUnblock(void)
-{
- sigset_t s;
-
- sigemptyset(&s);
- sigaddset(&s, SIGIO);
- sigprocmask(SIG_UNBLOCK, &s, 0);
-}
-
-static void dmxSigioHook(void)
-{
- struct sigaction a;
- sigset_t s;
-
- memset(&a, 0, sizeof(a));
- a.sa_handler = dmxSigioHandler;
- sigemptyset(&a.sa_mask);
- sigaddset(&a.sa_mask, SIGIO);
- sigaddset(&a.sa_mask, SIGALRM);
- sigaddset(&a.sa_mask, SIGVTALRM);
- sigaction(SIGIO, &a, 0);
-
- sigemptyset(&s);
- sigprocmask(SIG_SETMASK, &s, 0);
-}
-
-static void dmxSigioUnhook(void)
-{
- struct sigaction a;
-
- memset (&a, 0, sizeof(a));
- a.sa_handler = SIG_IGN;
- sigemptyset(&a.sa_mask);
- sigaction(SIGIO, &a, 0);
-}
-
-static void dmxSigioAdd(DMXInputInfo *dmxInput)
-{
- int flags;
- int i;
-
- switch (dmxInput->sigioState) {
- case DMX_NOSIGIO: return;
- case DMX_USESIGIO: dmxInput->sigioState = DMX_ACTIVESIGIO; break;
- case DMX_ACTIVESIGIO: return;
- }
-
- for (i = 0; i < dmxInput->sigioFdCount; i++) {
- if (!dmxInput->sigioAdded[i]) {
- int fd = dmxInput->sigioFd[i];
-
- fcntl(fd, F_SETOWN, getpid());
- flags = fcntl(fd, F_GETFL);
- flags |= O_ASYNC|O_NONBLOCK;
- fcntl(fd, F_SETFL, flags);
-
- AddEnabledDevice(fd);
- dmxInput->sigioAdded[i] = TRUE;
-
- if (++dmxFdCount == 1) dmxSigioHook();
- }
- }
-}
-
-static void dmxSigioRemove(DMXInputInfo *dmxInput)
-{
- int flags;
- int i;
-
- switch (dmxInput->sigioState) {
- case DMX_NOSIGIO: return;
- case DMX_USESIGIO: return;
- case DMX_ACTIVESIGIO: dmxInput->sigioState = DMX_USESIGIO; break;
- }
-
- for (i = 0; i < dmxInput->sigioFdCount; i++) {
- if (dmxInput->sigioAdded[i]) {
- int fd = dmxInput->sigioFd[i];
-
- dmxInput->sigioAdded[i] = FALSE;
- RemoveEnabledDevice(fd);
-
- flags = fcntl(fd, F_GETFL);
- flags &= ~(O_ASYNC|O_NONBLOCK);
- fcntl(fd, F_SETFL, flags);
-
- if (!--dmxFdCount) dmxSigioUnhook();
- }
- }
-}
-
-/** Enable SIGIO handling. This instantiates the handler with the OS. */
-void dmxSigioEnableInput(void)
-{
- int i;
- DMXInputInfo *dmxInput;
-
- dmxInputEnabled = TRUE;
- for (i = 0, dmxInput = &dmxInputs[0]; i < dmxNumInputs; i++, dmxInput++)
- dmxSigioAdd(dmxInput);
-}
-
-/** Disable SIGIO handling. This removes the hanlder from the OS. */
-void dmxSigioDisableInput(void)
-{
- int i;
- DMXInputInfo *dmxInput;
-
- dmxInputEnabled = FALSE;
- for (i = 0, dmxInput = &dmxInputs[0]; i < dmxNumInputs; i++, dmxInput++)
- dmxSigioRemove(dmxInput);
-}
-
-/** Make a note that the input device described in \a dmxInput will be
- * using the file descriptor \a fd for SIGIO signals. Calls
- * AddEnabledDevice ifi SIGIO handling has been enabled with
- * #dmxSigioEnableInput(). */
-void dmxSigioRegister(DMXInputInfo *dmxInput, int fd)
-{
- dmxInput->sigioState = DMX_USESIGIO;
- if (dmxInput->sigioFdCount >= DMX_MAX_SIGIO_FDS)
- dmxLog(dmxFatal, "Too many SIGIO file descriptors (%d >= %d)\n",
- dmxInput->sigioFdCount, DMX_MAX_SIGIO_FDS);
-
- dmxInput->sigioFd[dmxInput->sigioFdCount++] = fd;
- if (dmxInputEnabled) dmxSigioAdd(dmxInput);
-}
-
-/** Remove the notes that \a dmxInput is using any file descriptors for
- * SIGIO signals. Calls RemoveEnabledDevice. */
-void dmxSigioUnregister(DMXInputInfo *dmxInput)
-{
- if (dmxInput->sigioState == DMX_NOSIGIO) return;
- dmxSigioRemove(dmxInput);
- dmxInput->sigioState = DMX_NOSIGIO;
- dmxInput->sigioFdCount = 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxsigio.h b/nx-X11/programs/Xserver/hw/dmx/input/dmxsigio.h
deleted file mode 100644
index 869dd6bdf..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxsigio.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001 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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to SIGIO handling support. \see dmxsigio.c */
-
-#ifndef _DMXSIGIO_H_
-#define _DMXSIGIO_H_
-extern void dmxSigioBlock(void);
-extern void dmxSigioUnblock(void);
-extern void dmxSigioEnableInput(void);
-extern void dmxSigioDisableInput(void);
-extern void dmxSigioRegister(DMXInputInfo *dmxInput, int fd);
-extern void dmxSigioUnregister(DMXInputInfo *dmxInput);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/dmxxinput.c b/nx-X11/programs/Xserver/hw/dmx/input/dmxxinput.c
deleted file mode 100644
index bd4ace6d0..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/dmxxinput.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * This file implements support required by the XINPUT extension.
- */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "inputstr.h"
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#include "XIstubs.h"
-
-#include "mipointer.h"
-#include "dmxinputinit.h"
-#include "exevents.h"
-
-/** Change the core keyboard from \a old_dev to \a new_dev. Currently
- * this is not implemented. */
-int ChangeKeyboardDevice(DeviceIntPtr old_dev, DeviceIntPtr new_dev)
-{
-#if 0
- DMXLocalInputInfoPtr dmxLocalOld = old_dev->public.devicePrivate;
- DMXLocalInputInfoPtr dmxLocalNew = new_dev->public.devicePrivate;
-
- /* Switch our notion of core keyboard */
- dmxLocalOld->isCore = 0;
- dmxLocalOld->sendsCore = dmxLocalOld->savedSendsCore;
-
- dmxLocalNew->isCore = 1;
- dmxLocalNew->savedSendsCore = dmxLocalNew->sendsCore;
- dmxLocalNew->sendsCore = 1;
- dmxLocalCorePointer = dmxLocalNew;
-
- _RegisterKeyboardDevice(new_dev);
- RegisterOtherDevice(old_dev);
-
- return Success;
-#endif
- return BadMatch;
-}
-
-/** Change the core pointer from \a old_dev to \a new_dev. */
-int ChangePointerDevice(DeviceIntPtr old_dev,
- DeviceIntPtr new_dev,
- unsigned char x,
- unsigned char y)
-{
- DMXLocalInputInfoPtr dmxLocalOld = old_dev->public.devicePrivate;
- DMXLocalInputInfoPtr dmxLocalNew = new_dev->public.devicePrivate;
-
- if (x != 0 || y != 1) return BadMatch;
-
- /* Make sure the new device can focus */
- InitFocusClassDeviceStruct(old_dev);
-
- /* Switch the motion history buffers */
- if (dmxLocalOld->savedMotionProc) {
- old_dev->valuator->GetMotionProc = dmxLocalOld->savedMotionProc;
- old_dev->valuator->numMotionEvents = dmxLocalOld->savedMotionEvents;
- }
- dmxLocalNew->savedMotionProc = new_dev->valuator->GetMotionProc;
- dmxLocalNew->savedMotionEvents = new_dev->valuator->numMotionEvents;
- new_dev->valuator->GetMotionProc = miPointerGetMotionEvents;
- new_dev->valuator->numMotionEvents = miPointerGetMotionBufferSize();
-
- /* Switch our notion of core pointer */
- dmxLocalOld->isCore = 0;
- dmxLocalOld->sendsCore = dmxLocalOld->savedSendsCore;
-
- dmxLocalNew->isCore = 1;
- dmxLocalNew->savedSendsCore = dmxLocalNew->sendsCore;
- dmxLocalNew->sendsCore = 1;
- dmxLocalCorePointer = dmxLocalNew;
-
- return Success;
-}
-
-/** Close the input device. This is not required by the XINPUT model
- * that DMX uses. */
-void CloseInputDevice (DeviceIntPtr d, ClientPtr client)
-{
-}
-
-/** This is not required by the XINPUT model that DMX uses. */
-void AddOtherInputDevices(void)
-{
-}
-
-/** Open an input device. This is not required by the XINPUT model that
- * DMX uses. */
-void OpenInputDevice (DeviceIntPtr dev, ClientPtr client, int *status)
-{
-}
-
-/** Set device mode to \a mode. This is not implemented. */
-int SetDeviceMode(ClientPtr client, DeviceIntPtr dev, int mode)
-{
- return BadMatch;
-}
-
-/** Set device valuators. This is not implemented. */
-int SetDeviceValuators (ClientPtr client,
- DeviceIntPtr dev,
- int *valuators,
- int first_valuator,
- int num_valuators)
-{
- return BadMatch;
-}
-
-/** Change device control. This is not implemented. */
-int ChangeDeviceControl(ClientPtr client,
- DeviceIntPtr dev,
- xDeviceCtl *control)
-{
- return BadMatch;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/lnx-keyboard.c b/nx-X11/programs/Xserver/hw/dmx/input/lnx-keyboard.c
deleted file mode 100644
index 97cc3077e..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/lnx-keyboard.c
+++ /dev/null
@@ -1,975 +0,0 @@
-/* $XFree86$ */
-/* Portions of this file were derived from the following files:
- *
- **********************************************************************
- *
- * xfree86/common/{xf86Io.c,xf86Kbd.c,xf86Events.c}
- *
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- *
- * 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, and that the name of Thomas Roell not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Roell makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- **********************************************************************
- *
- * xfree86/common/xf86KbdLnx.c
- *
- * Linux version of keymapping setup. The kernel (since 0.99.14) has support
- * for fully remapping the keyboard, but there are some differences between
- * the Linux map and the SVR4 map (esp. in the extended keycodes). We also
- * remove the restriction on what keycodes can be remapped.
- * Orest Zborowski.
- *
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- *
- * 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, and that the name of Thomas Roell not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Roell makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- **********************************************************************
- *
- * xfree86/os-support/linux/lnx_io.c
- *
- * Copyright 1992 by Orest Zborowski <obz@Kodak.com>
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- *
- * 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, and that the names of Orest Zborowski and David Dawes
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Orest Zborowski
- * and David Dawes make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OREST ZBOROWSKI AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID DAWES BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/*
- * Copyright 2001-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 <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * This code implements a low-level device driver for the Linux
- * keyboard. The code is derived from code by Thomas Roell, Orest
- * Zborowski, and David Dawes (see the source code for complete
- * references). */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-/*****************************************************************************/
-/* Define some macros to make it easier to move this file to another
- * part of the Xserver tree. All calls to the dmx* layer are #defined
- * here for the .c file. The .h file will also have to be edited. */
-#include "dmxinputinit.h"
-#include "lnx-keyboard.h"
-
-#define GETPRIV myPrivate *priv \
- = ((DMXLocalInputInfoPtr)(pDev->devicePrivate))->private
-
-#define LOG0(f) dmxLog(dmxDebug,f)
-#define LOG1(f,a) dmxLog(dmxDebug,f,a)
-#define LOG2(f,a,b) dmxLog(dmxDebug,f,a,b)
-#define LOG3(f,a,b,c) dmxLog(dmxDebug,f,a,b,c)
-#define FATAL0(f) dmxLog(dmxFatal,f)
-#define FATAL1(f,a) dmxLog(dmxFatal,f,a)
-#define FATAL2(f,a,b) dmxLog(dmxFatal,f,a,b)
-#define MOTIONPROC dmxMotionProcPtr
-#define ENQUEUEPROC dmxEnqueueProcPtr
-#define CHECKPROC dmxCheckSpecialProcPtr
-#define SWITCHRETPROC dmxVTSwitchReturnProcPtr
-#define BLOCK DMXBlockType
-#define MESSAGE "\033c\n\n\nDMX taking input from this console..."
-#define FINALMESSAGE "\033cDMX terminated."
-
-/* End of interface definitions. */
-/*****************************************************************************/
-
-#include "inputstr.h"
-#include <X11/Xos.h>
-#include <sys/ioctl.h>
-#include <errno.h>
-#include <signal.h>
-#include <sys/vt.h>
-#include <sys/kd.h>
-#include <termios.h>
-#include "atKeynames.h"
-#include "xf86Keymap.h"
-#include <linux/keyboard.h>
-
-#define NUM_AT2LNX (sizeof(at2lnx) / sizeof(at2lnx[0]))
-#define NUM_STATE_ENTRIES (256/32)
-
-
-/* Private area for Linux-style keyboards. */
-typedef struct _myPrivate {
- int fd;
- int vtno;
- int vtcurrent;
- int kbdtrans;
- struct termios kbdtty;
- int kbdType;
- CARD32 kbdState[NUM_STATE_ENTRIES];
- DeviceIntPtr pKeyboard;
- unsigned char prefix;
-
- int switched;
- SWITCHRETPROC switch_return;
- void *switch_return_data;
-
- /* For bell */
- int pitch;
- unsigned long duration;
-} myPrivate;
-
-static myPrivate *PRIV = NULL;
-
-#undef SYSCALL
-#define SYSCALL(call) while(((call) == -1) && (errno == EINTR))
-
-static int kbdLinuxKeyDown(myPrivate *priv, int keyCode)
-{
- CARD8 byte = keyCode >> 5;
- CARD32 bit = 1 << (keyCode & 0x1f);
-
- if (byte > NUM_STATE_ENTRIES) return 0;
- return priv->kbdState[byte] & bit;
-}
-
-static void kbdLinuxKeyState(myPrivate *priv, int type, int keyCode)
-{
- CARD8 byte = keyCode >> 5;
- CARD32 bit = 1 << (keyCode & 0x1f);
-
- if (byte > NUM_STATE_ENTRIES) return;
- if (type == KeyPress) priv->kbdState[byte] |= bit;
- else priv->kbdState[byte] &= ~bit;
-}
-
-static KeySym linux_to_x[256] = {
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_Escape,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
- XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
- XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
- XK_comma, XK_minus, XK_period, XK_slash,
- XK_0, XK_1, XK_2, XK_3,
- XK_4, XK_5, XK_6, XK_7,
- XK_8, XK_9, XK_colon, XK_semicolon,
- XK_less, XK_equal, XK_greater, XK_question,
- XK_at, XK_A, XK_B, XK_C,
- XK_D, XK_E, XK_F, XK_G,
- XK_H, XK_I, XK_J, XK_K,
- XK_L, XK_M, XK_N, XK_O,
- XK_P, XK_Q, XK_R, XK_S,
- XK_T, XK_U, XK_V, XK_W,
- XK_X, XK_Y, XK_Z, XK_bracketleft,
- XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
- XK_grave, XK_a, XK_b, XK_c,
- XK_d, XK_e, XK_f, XK_g,
- XK_h, XK_i, XK_j, XK_k,
- XK_l, XK_m, XK_n, XK_o,
- XK_p, XK_q, XK_r, XK_s,
- XK_t, XK_u, XK_v, XK_w,
- XK_x, XK_y, XK_z, XK_braceleft,
- XK_bar, XK_braceright, XK_asciitilde, XK_BackSpace,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_nobreakspace,XK_exclamdown, XK_cent, XK_sterling,
- XK_currency, XK_yen, XK_brokenbar, XK_section,
- XK_diaeresis, XK_copyright, XK_ordfeminine, XK_guillemotleft,
- XK_notsign, XK_hyphen, XK_registered, XK_macron,
- XK_degree, XK_plusminus, XK_twosuperior, XK_threesuperior,
- XK_acute, XK_mu, XK_paragraph, XK_periodcentered,
- XK_cedilla, XK_onesuperior, XK_masculine, XK_guillemotright,
- XK_onequarter, XK_onehalf, XK_threequarters,XK_questiondown,
- XK_Agrave, XK_Aacute, XK_Acircumflex, XK_Atilde,
- XK_Adiaeresis, XK_Aring, XK_AE, XK_Ccedilla,
- XK_Egrave, XK_Eacute, XK_Ecircumflex, XK_Ediaeresis,
- XK_Igrave, XK_Iacute, XK_Icircumflex, XK_Idiaeresis,
- XK_ETH, XK_Ntilde, XK_Ograve, XK_Oacute,
- XK_Ocircumflex, XK_Otilde, XK_Odiaeresis, XK_multiply,
- XK_Ooblique, XK_Ugrave, XK_Uacute, XK_Ucircumflex,
- XK_Udiaeresis, XK_Yacute, XK_THORN, XK_ssharp,
- XK_agrave, XK_aacute, XK_acircumflex, XK_atilde,
- XK_adiaeresis, XK_aring, XK_ae, XK_ccedilla,
- XK_egrave, XK_eacute, XK_ecircumflex, XK_ediaeresis,
- XK_igrave, XK_iacute, XK_icircumflex, XK_idiaeresis,
- XK_eth, XK_ntilde, XK_ograve, XK_oacute,
- XK_ocircumflex, XK_otilde, XK_odiaeresis, XK_division,
- XK_oslash, XK_ugrave, XK_uacute, XK_ucircumflex,
- XK_udiaeresis, XK_yacute, XK_thorn, XK_ydiaeresis
-};
-
-/*
- * Maps the AT keycodes to Linux keycodes
- */
-static unsigned char at2lnx[NUM_KEYCODES] =
-{
- 0x01, /* KEY_Escape */ 0x02, /* KEY_1 */
- 0x03, /* KEY_2 */ 0x04, /* KEY_3 */
- 0x05, /* KEY_4 */ 0x06, /* KEY_5 */
- 0x07, /* KEY_6 */ 0x08, /* KEY_7 */
- 0x09, /* KEY_8 */ 0x0a, /* KEY_9 */
- 0x0b, /* KEY_0 */ 0x0c, /* KEY_Minus */
- 0x0d, /* KEY_Equal */ 0x0e, /* KEY_BackSpace */
- 0x0f, /* KEY_Tab */ 0x10, /* KEY_Q */
- 0x11, /* KEY_W */ 0x12, /* KEY_E */
- 0x13, /* KEY_R */ 0x14, /* KEY_T */
- 0x15, /* KEY_Y */ 0x16, /* KEY_U */
- 0x17, /* KEY_I */ 0x18, /* KEY_O */
- 0x19, /* KEY_P */ 0x1a, /* KEY_LBrace */
- 0x1b, /* KEY_RBrace */ 0x1c, /* KEY_Enter */
- 0x1d, /* KEY_LCtrl */ 0x1e, /* KEY_A */
- 0x1f, /* KEY_S */ 0x20, /* KEY_D */
- 0x21, /* KEY_F */ 0x22, /* KEY_G */
- 0x23, /* KEY_H */ 0x24, /* KEY_J */
- 0x25, /* KEY_K */ 0x26, /* KEY_L */
- 0x27, /* KEY_SemiColon */ 0x28, /* KEY_Quote */
- 0x29, /* KEY_Tilde */ 0x2a, /* KEY_ShiftL */
- 0x2b, /* KEY_BSlash */ 0x2c, /* KEY_Z */
- 0x2d, /* KEY_X */ 0x2e, /* KEY_C */
- 0x2f, /* KEY_V */ 0x30, /* KEY_B */
- 0x31, /* KEY_N */ 0x32, /* KEY_M */
- 0x33, /* KEY_Comma */ 0x34, /* KEY_Period */
- 0x35, /* KEY_Slash */ 0x36, /* KEY_ShiftR */
- 0x37, /* KEY_KP_Multiply */ 0x38, /* KEY_Alt */
- 0x39, /* KEY_Space */ 0x3a, /* KEY_CapsLock */
- 0x3b, /* KEY_F1 */ 0x3c, /* KEY_F2 */
- 0x3d, /* KEY_F3 */ 0x3e, /* KEY_F4 */
- 0x3f, /* KEY_F5 */ 0x40, /* KEY_F6 */
- 0x41, /* KEY_F7 */ 0x42, /* KEY_F8 */
- 0x43, /* KEY_F9 */ 0x44, /* KEY_F10 */
- 0x45, /* KEY_NumLock */ 0x46, /* KEY_ScrollLock */
- 0x47, /* KEY_KP_7 */ 0x48, /* KEY_KP_8 */
- 0x49, /* KEY_KP_9 */ 0x4a, /* KEY_KP_Minus */
- 0x4b, /* KEY_KP_4 */ 0x4c, /* KEY_KP_5 */
- 0x4d, /* KEY_KP_6 */ 0x4e, /* KEY_KP_Plus */
- 0x4f, /* KEY_KP_1 */ 0x50, /* KEY_KP_2 */
- 0x51, /* KEY_KP_3 */ 0x52, /* KEY_KP_0 */
- 0x53, /* KEY_KP_Decimal */ 0x54, /* KEY_SysReqest */
- 0x00, /* 0x55 */ 0x56, /* KEY_Less */
- 0x57, /* KEY_F11 */ 0x58, /* KEY_F12 */
- 0x66, /* KEY_Home */ 0x67, /* KEY_Up */
- 0x68, /* KEY_PgUp */ 0x69, /* KEY_Left */
- 0x5d, /* KEY_Begin */ 0x6a, /* KEY_Right */
- 0x6b, /* KEY_End */ 0x6c, /* KEY_Down */
- 0x6d, /* KEY_PgDown */ 0x6e, /* KEY_Insert */
- 0x6f, /* KEY_Delete */ 0x60, /* KEY_KP_Enter */
- 0x61, /* KEY_RCtrl */ 0x77, /* KEY_Pause */
- 0x63, /* KEY_Print */ 0x62, /* KEY_KP_Divide */
- 0x64, /* KEY_AltLang */ 0x65, /* KEY_Break */
- 0x00, /* KEY_LMeta */ 0x00, /* KEY_RMeta */
- 0x7A, /* KEY_Menu/FOCUS_PF11*/0x00, /* 0x6e */
- 0x7B, /* FOCUS_PF12 */ 0x00, /* 0x70 */
- 0x00, /* 0x71 */ 0x00, /* 0x72 */
- 0x59, /* FOCUS_PF2 */ 0x78, /* FOCUS_PF9 */
- 0x00, /* 0x75 */ 0x00, /* 0x76 */
- 0x5A, /* FOCUS_PF3 */ 0x5B, /* FOCUS_PF4 */
- 0x5C, /* FOCUS_PF5 */ 0x5D, /* FOCUS_PF6 */
- 0x5E, /* FOCUS_PF7 */ 0x5F, /* FOCUS_PF8 */
- 0x7C, /* JAP_86 */ 0x79, /* FOCUS_PF10 */
- 0x00, /* 0x7f */
-};
-
-/** Create a private structure for use within this file. */
-pointer kbdLinuxCreatePrivate(DeviceIntPtr pKeyboard)
-{
- myPrivate *priv = xalloc(sizeof(*priv));
- memset(priv, 0, sizeof(*priv));
- priv->fd = -1;
- priv->pKeyboard = pKeyboard;
- return priv;
-}
-
-/** Destroy a private structure. */
-void kbdLinuxDestroyPrivate(pointer priv)
-{
- if (priv) xfree(priv);
-}
-
-/** Ring the bell.
- *
- * Note: we completely ignore the \a volume, since Linux's ioctl()
- * interface does not provide a way to control it. If it did, the XBell
- * manpage tells how the actual volume is a function of the percent and
- * the (base) volume.
- *
- * Note that most of the other PC-based bell drivers compute the
- * duration for KDMKTONE as a function of the volume and the duration.
- * For some drivers, the duration is only measured in mS if the volume
- * is 50, and is scaled by the volume for other values. This seems
- * confusing and possibly incorrect (the xset man page says that the
- * bell will be "as closely as it can to the user's specifications" --
- * if we ignore the volume and set the duration correctly, then we'll
- * get one parameter "wrong" -- but if we use the volume to scale the
- * duration, then we'll get both parameters "wrong"). */
-void kbdLinuxBell(DevicePtr pDev, int percent,
- int volume, int pitch, int duration)
-{
- GETPRIV;
-
- if (duration && pitch) {
- ioctl(priv->fd,
- KDMKTONE,
- ((1193190 / pitch) & 0xffff) /* Low bits specify cycle time */
- | (duration << 16)); /* High bits are duration in msec */
- }
-}
-
-/** Set the LEDs. */
-void kbdLinuxCtrl(DevicePtr pDev, KeybdCtrl *ctrl)
-{
- GETPRIV;
-
- ioctl(priv->fd, KDSETLED, ctrl->leds & 0x07);
-}
-
-static int kbdLinuxGetFreeVTNumber(void)
-{
- int fd = -1;
- int vtno;
- int i;
- const char *tty0[] = { "/dev/tty0", "/dev/vc/0", NULL };
-
- for (i = 0; tty0[i]; i++)
- if ((fd = open(tty0[i], O_WRONLY, 0)) >= 0) break;
- if (fd < 0)
- FATAL1("kbdLinuxGetFreeVTNumber: Cannot open tty0 (%s)\n",
- strerror(errno));
- if (ioctl(fd, VT_OPENQRY, &vtno) < 0 || vtno < 0)
- FATAL0("kbdLinuxGetFreeVTNumber: Cannot find a free VT\n");
- return vtno;
-}
-
-static int kbdLinuxOpenVT(int vtno)
-{
- int fd = -1;
- int i;
- const char *vcs[] = { "/dev/vc/%d", "/dev/tty%d", NULL };
- char name[64]; /* RATS: Only used in XmuSnprintf */
-
- for (i = 0; vcs[i]; i++) {
- XmuSnprintf(name, sizeof(name), vcs[i], vtno);
- if ((fd = open(name, O_RDWR | O_NONBLOCK, 0)) >= 0) break;
- }
- if (fd < 0)
- FATAL2("kbdLinuxOpenVT: Cannot open VT %d (%s)\n",
- vtno, strerror(errno));
- return fd;
-}
-
-static int kbdLinuxGetCurrentVTNumber(int fd)
-{
- struct vt_stat vts;
-
- if (!ioctl(fd, VT_GETSTATE, &vts)) return vts.v_active;
- return -1;
-}
-
-static int kbdLinuxActivate(int fd, int vtno, int setSig);
-
-/** Currently unused hook called prior to an VT switch. */
-void kbdLinuxVTPreSwitch(pointer p)
-{
-}
-
-/** Currently unused hook called after returning from a VT switch. */
-void kbdLinuxVTPostSwitch(pointer p)
-{
-}
-
-/** Tell the operating system to switch to \a vt. The \a switch_return
- * function is called with the \a switch_return_data when the VT is
- * switched back to the pre-switch VT (i.e., the user returns to the DMX
- * session). */
-int kbdLinuxVTSwitch(pointer p, int vt,
- void (*switch_return)(pointer),
- pointer switch_return_data)
-{
- myPrivate *priv = p;
-
- if (priv->switched) FATAL0("kbdLinuxVTSwitch: already switched...\n");
- if (priv->vtno == vt) return 0;
-
- PRIV = priv;
- priv->switched = 0; /* Will switch to 1 in handler */
- priv->switch_return = switch_return;
- priv->switch_return_data = switch_return_data;
- kbdLinuxActivate(priv->fd, vt, 0);
- return 1;
-}
-
-/* RATS: This function is only ever used to handle SIGUSR1. */
-static void kbdLinuxVTSignalHandler(int sig)
-{
- myPrivate *priv = PRIV;
-
- signal(sig, kbdLinuxVTSignalHandler);
- if (priv) {
- ioctl(priv->fd, VT_RELDISP, VT_ACKACQ);
- priv->switched = !priv->switched;
- LOG2("kbdLinuxVTSignalHandler: got signal %d, switched = %d\n",
- sig, priv->switched);
- if (!priv->switched && priv->switch_return)
- priv->switch_return(priv->switch_return_data);
- }
-}
-
-static int kbdLinuxActivate(int fd, int vtno, int setSig)
-{
- int result;
- struct vt_mode VT;
-
- SYSCALL(result = ioctl(fd, VT_ACTIVATE, vtno));
- if (result) FATAL0("kbdLinuxActivate: VT_ACTIVATE failed\n");
- SYSCALL(result = ioctl(fd, VT_WAITACTIVE, vtno));
- if (result) FATAL0("kbdLinuxActivate: VT_WAITACTIVE failed\n");
- if (setSig) {
- SYSCALL(result = ioctl(fd, VT_GETMODE, &VT));
- if (result < 0) FATAL0("kbdLinuxActivate: VT_GETMODE failed\n");
- VT.mode = VT_PROCESS;
- VT.relsig = SIGUSR1;
- VT.acqsig = SIGUSR1;
- if (ioctl(fd, VT_SETMODE, &VT))
- FATAL0("kbdLinuxActivate: VT_SETMODE VT_PROCESS failed\n");
- signal(SIGUSR1, kbdLinuxVTSignalHandler);
- }
- return Success;
-}
-
-static void kbdLinuxOpenConsole(DevicePtr pDev)
-{
- GETPRIV;
- const char *msg = MESSAGE;
-
- if (priv->fd >= 0) return;
- priv->vtno = kbdLinuxGetFreeVTNumber();
- priv->fd = kbdLinuxOpenVT(priv->vtno);
- priv->vtcurrent = kbdLinuxGetCurrentVTNumber(priv->fd);
- LOG2("kbdLinuxOpenConsole: current VT %d; using free VT %d\n",
- priv->vtcurrent, priv->vtno);
- kbdLinuxActivate(priv->fd, priv->vtno, 1);
- ioctl(priv->fd, KDSETMODE, KD_GRAPHICS); /* To turn off gpm */
- if (msg) write(priv->fd, msg, strlen(msg));
-}
-
-static void kbdLinuxCloseConsole(DevicePtr pDev)
-{
- GETPRIV;
- struct vt_mode VT;
- const char *msg = FINALMESSAGE;
-
- if (priv->fd < 0) return;
-
- ioctl(priv->fd, KDSETMODE, KD_TEXT);
- if (msg) write(priv->fd, msg, strlen(msg));
- if (ioctl(priv->fd, VT_GETMODE, &VT) != -1) {
- VT.mode = VT_AUTO;
- ioctl(priv->fd, VT_SETMODE, &VT);
- }
-
- LOG1("kbdLinuxCloseConsole: switching to VT %d\n", priv->vtcurrent);
- if (priv->vtcurrent >= 0) kbdLinuxActivate(priv->fd, priv->vtcurrent, 0);
-
- close(priv->fd);
- priv->fd = -1;
-}
-
-/** Initialize the \a pDev as a Linux keyboard. */
-void kbdLinuxInit(DevicePtr pDev)
-{
- GETPRIV;
-
- if (priv->fd <= 0) kbdLinuxOpenConsole(pDev);
-
- ioctl(priv->fd, KDGKBMODE, &priv->kbdtrans);
- if (tcgetattr(priv->fd, &priv->kbdtty) < 0)
- FATAL1("kbdLinuxInit: tcgetattr failed (%s)\n", strerror(errno));
-}
-
-static int kbdLinuxPrefix0Mapping(unsigned char *scanCode)
-{
- /* Table from xfree86/common/xf86Events.c */
- switch (*scanCode) {
- case KEY_KP_7: *scanCode = KEY_Home; break; /* curs home */
- case KEY_KP_8: *scanCode = KEY_Up; break; /* curs up */
- case KEY_KP_9: *scanCode = KEY_PgUp; break; /* curs pgup */
- case KEY_KP_4: *scanCode = KEY_Left; break; /* curs left */
- case KEY_KP_5: *scanCode = KEY_Begin; break; /* curs begin */
- case KEY_KP_6: *scanCode = KEY_Right; break; /* curs right */
- case KEY_KP_1: *scanCode = KEY_End; break; /* curs end */
- case KEY_KP_2: *scanCode = KEY_Down; break; /* curs down */
- case KEY_KP_3: *scanCode = KEY_PgDown; break; /* curs pgdown */
- case KEY_KP_0: *scanCode = KEY_Insert; break; /* curs insert */
- case KEY_KP_Decimal: *scanCode = KEY_Delete; break; /* curs delete */
- case KEY_Enter: *scanCode = KEY_KP_Enter; break; /* keypad enter */
- case KEY_LCtrl: *scanCode = KEY_RCtrl; break; /* right ctrl */
- case KEY_KP_Multiply: *scanCode = KEY_Print; break; /* print */
- case KEY_Slash: *scanCode = KEY_KP_Divide; break; /* keyp divide */
- case KEY_Alt: *scanCode = KEY_AltLang; break; /* right alt */
- case KEY_ScrollLock: *scanCode = KEY_Break; break; /* curs break */
- case 0x5b: *scanCode = KEY_LMeta; break;
- case 0x5c: *scanCode = KEY_RMeta; break;
- case 0x5d: *scanCode = KEY_Menu; break;
- case KEY_F3: *scanCode = KEY_F13; break;
- case KEY_F4: *scanCode = KEY_F14; break;
- case KEY_F5: *scanCode = KEY_F15; break;
- case KEY_F6: *scanCode = KEY_F16; break;
- case KEY_F7: *scanCode = KEY_F17; break;
- case KEY_KP_Plus: *scanCode = KEY_KP_DEC; break;
- /*
- * Ignore virtual shifts (E0 2A, E0 AA, E0 36, E0 B6)
- */
- case 0x2A:
- case 0x36:
- return 1;
- default:
- /*
- * "Internet" keyboards are generating lots of new codes.
- * Let them pass. There is little consistency between them,
- * so don't bother with symbolic names at this level.
- */
- scanCode += 0x78;
- }
- return 0;
-}
-
-static int kbdLinuxPrefixMapping(myPrivate *priv, unsigned char *scanCode)
-{
- int pressed = *scanCode & 0x80;
- unsigned char code = *scanCode & 0x7f;
-
- /* If we don't have a prefix, check for one */
- if (!priv->prefix) {
- switch (code) {
- case KEY_Prefix0:
- case KEY_Prefix1:
- priv->prefix = code;
- return 1;
- }
- return 0; /* No change */
- }
-
- /* We have a prefix from the last scanCode */
- switch (priv->prefix) {
- case KEY_Prefix0:
- priv->prefix = 0;
- if (kbdLinuxPrefix0Mapping(&code)) return 1; /* Skip sequence */
- break;
- case KEY_Prefix1:
- priv->prefix = (code = KEY_LCtrl) ? KEY_LCtrl : 0;
- return 1; /* Use new prefix */
- case KEY_LCtrl:
- priv->prefix = 0;
- if (code != KEY_NumLock) return 1; /* Skip sequence*/
- code = KEY_Pause;
- break;
- }
-
- *scanCode = code | (pressed ? 0x80 : 0x00);
- return 0; /* Use old scanCode */
-}
-
-static void kbdLinuxConvert(DevicePtr pDev,
- unsigned char scanCode,
- ENQUEUEPROC enqueue,
- CHECKPROC checkspecial,
- BLOCK block)
-{
- GETPRIV;
- KeySymsPtr pKeySyms = &priv->pKeyboard->key->curKeySyms;
- int type;
- KeySym keySym = NoSymbol;
- int keyCode;
- int switching;
-
- /* Do special PC/AT prefix mapping -- may change scanCode! */
- if (kbdLinuxPrefixMapping(priv, &scanCode)) return;
-
- type = (scanCode & 0x80) ? KeyRelease : KeyPress;
- keyCode = (scanCode & 0x7f) + MIN_KEYCODE;
-
- /* Handle repeats */
-
- if (keyCode >= pKeySyms->minKeyCode && keyCode <= pKeySyms->maxKeyCode) {
- keySym = pKeySyms->map[(keyCode - pKeySyms->minKeyCode)
- * pKeySyms->mapWidth];
-#if 0
- switch (keySym) {
- case XK_Num_Lock:
- case XK_Scroll_Lock:
- case XK_Shift_Lock:
- case XK_Caps_Lock:
- /* Ignore releases and all but first press */
- if (kbdLinuxModIgnore(priv, &xE, keySym)) return;
- if (kbdLinuxKeyDown(priv, &xE)) xE.u.u.type = KeyRelease;
- else xE.u.u.type = KeyPress;
- break;
- }
-#endif
-
- /* If key is already down, ignore or autorepeat */
- if (type == KeyPress && kbdLinuxKeyDown(priv, keyCode)) {
- KbdFeedbackClassRec *feed = priv->pKeyboard->kbdfeed;
-
- /* No auto-repeat? */
- if ((feed && !feed->ctrl.autoRepeat)
- || priv->pKeyboard->key->modifierMap[keyCode]
- || (feed
- && !(feed->ctrl.autoRepeats[keyCode >> 3]
- & (1 << (keyCode & 7))))) return; /* Ignore */
-
- /* Do auto-repeat */
- enqueue(pDev, KeyRelease, keyCode, keySym, NULL, block);
- type = KeyPress;
- }
-
- /* If key is already up, ignore */
- if (type == KeyRelease && !kbdLinuxKeyDown(priv, keyCode)) return;
- }
-
- switching = 0;
- if (checkspecial && type == KeyPress)
- switching = checkspecial(pDev, keySym);
- if (!switching) {
- if (enqueue)
- enqueue(pDev, type, keyCode, keySym, NULL, block);
- kbdLinuxKeyState(priv, type, keyCode); /* Update our state bitmap */
- }
-}
-
-/** Read an event from the \a pDev device. If the event is a motion
- * event, enqueue it with the \a motion function. Otherwise, check for
- * special keys with the \a checkspecial function and enqueue the event
- * with the \a enqueue function. The \a block type is passed to the
- * functions so that they may block SIGIO handling as appropriate to the
- * caller of this function. */
-void kbdLinuxRead(DevicePtr pDev,
- MOTIONPROC motion,
- ENQUEUEPROC enqueue,
- CHECKPROC checkspecial,
- BLOCK block)
-{
- GETPRIV;
- unsigned char buf[256]; /* RATS: Only used in length-limited call */
- unsigned char *pt;
- int n;
-
- while ((n = read(priv->fd, buf, sizeof(buf))) > 0)
- for (pt = buf; n; --n, ++pt)
- kbdLinuxConvert(pDev, *pt, enqueue, checkspecial, block);
-}
-
-/** Turn \a pDev on (i.e., take input from \a pDev). */
-int kbdLinuxOn(DevicePtr pDev)
-{
- GETPRIV;
- struct termios nTty;
-
- ioctl(priv->fd, KDSKBMODE, K_RAW);
-
- nTty = priv->kbdtty;
- nTty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- nTty.c_oflag = 0;
- nTty.c_cflag = CREAD | CS8;
- nTty.c_lflag = 0;
- nTty.c_cc[VTIME] = 0;
- nTty.c_cc[VMIN] = 1;
- cfsetispeed(&nTty, B9600);
- cfsetospeed(&nTty, B9600);
- if (tcsetattr(priv->fd, TCSANOW, &nTty) < 0)
- FATAL1("kbdLinuxOn: tcsetattr failed (%s)\n", strerror(errno));
- return priv->fd;
-}
-
-/** Turn \a pDev off (i.e., stop taking input from \a pDev). */
-void kbdLinuxOff(DevicePtr pDev)
-{
- GETPRIV;
-
- ioctl(priv->fd, KDSKBMODE, priv->kbdtrans);
- tcsetattr(priv->fd, TCSANOW, &priv->kbdtty);
- kbdLinuxCloseConsole(pDev);
-}
-
-
-static void kbdLinuxReadKernelMapping(int fd, KeySymsPtr pKeySyms)
-{
- KeySym *k;
- int i;
- int maxkey;
- static unsigned char tbl[GLYPHS_PER_KEY] = { /* RATS: Use ok */
- 0, /* unshifted */
- 1, /* shifted */
- 0, /* modeswitch unshifted */
- 0 /* modeswitch shifted */
- };
-
- /*
- * Read the mapping from the kernel.
- * Since we're still using the XFree86 scancode->AT keycode mapping
- * routines, we need to convert the AT keycodes to Linux keycodes,
- * then translate the Linux keysyms into X keysyms.
- *
- * First, figure out which tables to use for the modeswitch columns
- * above, from the XF86Config fields.
- */
- tbl[2] = 8; /* alt */
- tbl[3] = tbl[2] | 1;
-
- k = map+GLYPHS_PER_KEY;
- maxkey = NUM_AT2LNX;
-
- for (i = 0; i < maxkey; ++i) {
- struct kbentry kbe;
- int j;
-
- kbe.kb_index = at2lnx[i];
-
- for (j = 0; j < GLYPHS_PER_KEY; ++j, ++k) {
- unsigned short kval;
-
- *k = NoSymbol;
-
- kbe.kb_table = tbl[j];
- if (kbe.kb_index == 0 || ioctl(fd, KDGKBENT, &kbe)) continue;
-
- kval = KVAL(kbe.kb_value);
- switch (KTYP(kbe.kb_value)) {
- case KT_LATIN:
- case KT_LETTER: *k = linux_to_x[kval]; break;
- case KT_FN:
- if (kval <= 19) *k = XK_F1 + kval;
- else switch (kbe.kb_value) {
- case K_FIND: *k = XK_Home; /* or XK_Find */ break;
- case K_INSERT: *k = XK_Insert; break;
- case K_REMOVE: *k = XK_Delete; break;
- case K_SELECT: *k = XK_End; /* or XK_Select */ break;
- case K_PGUP: *k = XK_Prior; break;
- case K_PGDN: *k = XK_Next; break;
- case K_HELP: *k = XK_Help; break;
- case K_DO: *k = XK_Execute; break;
- case K_PAUSE: *k = XK_Pause; break;
- case K_MACRO: *k = XK_Menu; break;
- default: break;
- }
- break;
- case KT_SPEC:
- switch (kbe.kb_value) {
- case K_ENTER: *k = XK_Return; break;
- case K_BREAK: *k = XK_Break; break;
- case K_CAPS: *k = XK_Caps_Lock; break;
- case K_NUM: *k = XK_Num_Lock; break;
- case K_HOLD: *k = XK_Scroll_Lock; break;
- case K_COMPOSE: *k = XK_Multi_key; break;
- default: break;
- }
- break;
- case KT_PAD:
- switch (kbe.kb_value) {
- case K_PPLUS: *k = XK_KP_Add; break;
- case K_PMINUS: *k = XK_KP_Subtract; break;
- case K_PSTAR: *k = XK_KP_Multiply; break;
- case K_PSLASH: *k = XK_KP_Divide; break;
- case K_PENTER: *k = XK_KP_Enter; break;
- case K_PCOMMA: *k = XK_KP_Separator; break;
- case K_PDOT: *k = XK_KP_Decimal; break;
- case K_PPLUSMINUS: *k = XK_KP_Subtract; break;
- default: if (kval <= 9) *k = XK_KP_0 + kval; break;
- }
- break;
- case KT_DEAD:
- /* KT_DEAD keys are for accelerated diacritical creation. */
- switch (kbe.kb_value) {
- case K_DGRAVE: *k = XK_dead_grave; break;
- case K_DACUTE: *k = XK_dead_acute; break;
- case K_DCIRCM: *k = XK_dead_circumflex; break;
- case K_DTILDE: *k = XK_dead_tilde; break;
- case K_DDIERE: *k = XK_dead_diaeresis; break;
- }
- break;
- case KT_CUR:
- switch (kbe.kb_value) {
- case K_DOWN: *k = XK_Down; break;
- case K_LEFT: *k = XK_Left; break;
- case K_RIGHT: *k = XK_Right; break;
- case K_UP: *k = XK_Up; break;
- }
- break;
- case KT_SHIFT:
- switch (kbe.kb_value) {
- case K_ALTGR: *k = XK_Alt_R; break;
- case K_ALT:
- *k = (kbe.kb_index == 0x64 ? XK_Alt_R : XK_Alt_L);
- break;
- case K_CTRL:
- *k = (kbe.kb_index == 0x61 ? XK_Control_R : XK_Control_L);
- break;
- case K_CTRLL: *k = XK_Control_L; break;
- case K_CTRLR: *k = XK_Control_R; break;
- case K_SHIFT:
- *k = (kbe.kb_index == 0x36 ? XK_Shift_R : XK_Shift_L);
- break;
- case K_SHIFTL: *k = XK_Shift_L; break;
- case K_SHIFTR: *k = XK_Shift_R; break;
- default: break;
- }
- break;
- case KT_ASCII:
- /* KT_ASCII keys accumulate a 3 digit decimal number that
- * gets emitted when the shift state changes. We can't
- * emulate that.
- */
- break;
- case KT_LOCK:
- if (kbe.kb_value == K_SHIFTLOCK) *k = XK_Shift_Lock;
- break;
- default: break;
- }
- }
-
- if (k[-1] == k[-2]) k[-1] = NoSymbol;
- if (k[-2] == k[-3]) k[-2] = NoSymbol;
- if (k[-3] == k[-4]) k[-3] = NoSymbol;
- if (k[-4] == k[-2] && k[-3] == k[-1]) k[-2] = k[-1] = NoSymbol;
- if (k[-1] == k[-4] && k[-2] == k[-3]
- && k[-2] == NoSymbol) k[-1] = NoSymbol;
- }
-}
-
-static void kbdLinuxGetMap(DevicePtr pDev, KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
- GETPRIV;
- KeySym *k, *mapCopy;
- char type;
- int i;
-
- mapCopy = xalloc(sizeof(map));
- memcpy(mapCopy, map, sizeof(map));
-
- kbdLinuxReadKernelMapping(priv->fd, pKeySyms);
-
- /* compute the modifier map */
- for (i = 0; i < MAP_LENGTH; i++)
- pModMap[i] = NoSymbol; /* make sure it is restored */
-
- for (k = mapCopy, i = MIN_KEYCODE;
- i < NUM_KEYCODES + MIN_KEYCODE;
- i++, k += 4) {
- switch(*k) {
- case XK_Shift_L:
- case XK_Shift_R: pModMap[i] = ShiftMask; break;
- case XK_Control_L:
- case XK_Control_R: pModMap[i] = ControlMask; break;
- case XK_Caps_Lock: pModMap[i] = LockMask; break;
- case XK_Alt_L:
- case XK_Alt_R: pModMap[i] = AltMask; break;
- case XK_Num_Lock: pModMap[i] = NumLockMask; break;
- case XK_Scroll_Lock: pModMap[i] = ScrollLockMask; break;
- case XK_Kana_Lock:
- case XK_Kana_Shift: pModMap[i] = KanaMask; break;
- case XK_Mode_switch: pModMap[i] = AltLangMask; break;
- }
- }
-
- priv->kbdType = (ioctl(priv->fd, KDGKBTYPE, &type) < 0) ? KB_101 : type;
-
- pKeySyms->map = mapCopy; /* Must be XFree'able */
- pKeySyms->mapWidth = GLYPHS_PER_KEY;
- pKeySyms->minKeyCode = MIN_KEYCODE;
- pKeySyms->maxKeyCode = MAX_KEYCODE;
-}
-
-/** Fill the \a info structure with information needed to initialize \a
- * pDev. */
-void kbdLinuxGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- info->keyboard = 1;
- info->keyClass = 1;
- kbdLinuxGetMap(pDev, &info->keySyms, info->modMap);
- info->focusClass = 1;
- info->kbdFeedbackClass = 1;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/lnx-keyboard.h b/nx-X11/programs/Xserver/hw/dmx/input/lnx-keyboard.h
deleted file mode 100644
index 8f7129048..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/lnx-keyboard.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001 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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to Linux keyboard driver. \see lnx-keyboard.c */
-
-#ifndef _LNX_KEYBOARD_H_
-#define _LNX_KEYBOARD_H_
-
-extern pointer kbdLinuxCreatePrivate(DeviceIntPtr pKeyboard);
-extern void kbdLinuxDestroyPrivate(pointer private);
-
-extern void kbdLinuxInit(DevicePtr pDev);
-extern void kbdLinuxGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern int kbdLinuxOn(DevicePtr pDev);
-extern void kbdLinuxOff(DevicePtr pDev);
-
-extern void kbdLinuxVTPreSwitch(pointer p);
-extern void kbdLinuxVTPostSwitch(pointer p);
-extern int kbdLinuxVTSwitch(pointer p, int vt,
- dmxVTSwitchReturnProcPtr switch_return,
- pointer switch_return_data);
-
-extern void kbdLinuxRead(DevicePtr pDev,
- dmxMotionProcPtr motion,
- dmxEnqueueProcPtr enqueue,
- dmxCheckSpecialProcPtr checkspecial,
- DMXBlockType block);
-
-extern void kbdLinuxCtrl(DevicePtr pDev, KeybdCtrl *ctrl);
-extern void kbdLinuxBell(DevicePtr pDev, int percent,
- int volume, int pitch, int duration);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/lnx-ms.c b/nx-X11/programs/Xserver/hw/dmx/input/lnx-ms.c
deleted file mode 100644
index 6df4e80d3..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/lnx-ms.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/* $XFree86$ */
-/* Portions of this file were derived from the following files:
- *
- **********************************************************************
- *
- * Xserver/hw/kdrive/linux/ms.c
- *
- * Copyright (c) 2001 by Juliusz Chroboczek
- * Copyright (c) 1999 by Keith Packard
- *
- * 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 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 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 AUTHORS OR COPYRIGHT HOLDERS
- * 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.
- *
- */
-
-/*
- * Copyright 2001-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 <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * This code implements a low-level device driver for a serial MS mouse.
- * The code is derived from code by Juliusz Chroboczek and Keith Packard
- * (see the source code for complete references). */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "inputstr.h"
-#include <X11/Xos.h>
-#include <errno.h>
-#include <termios.h>
-
-/*****************************************************************************/
-/* Define some macros to make it easier to move this file to another
- * part of the Xserver tree. All calls to the dmx* layer are #defined
- * here for the .c file. The .h file will also have to be edited. */
-#include "dmxinputinit.h"
-#include "lnx-ms.h"
-
-#define GETPRIV myPrivate *priv \
- = ((DMXLocalInputInfoPtr)(pDev->devicePrivate))->private
-
-#define LOG0(f) dmxLog(dmxDebug,f)
-#define LOG1(f,a) dmxLog(dmxDebug,f,a)
-#define LOG2(f,a,b) dmxLog(dmxDebug,f,a,b)
-#define LOG3(f,a,b,c) dmxLog(dmxDebug,f,a,b,c)
-#define FATAL0(f) dmxLog(dmxFatal,f)
-#define FATAL1(f,a) dmxLog(dmxFatal,f,a)
-#define FATAL2(f,a,b) dmxLog(dmxFatal,f,a,b)
-#define MOTIONPROC dmxMotionProcPtr
-#define ENQUEUEPROC dmxEnqueueProcPtr
-#define CHECKPROC dmxCheckSpecialProcPtr
-#define BLOCK DMXBlockType
-
-/* End of interface definitions. */
-/*****************************************************************************/
-
-/* Private area for MS mouse devices. */
-typedef struct _myPrivate {
- DeviceIntPtr pMouse;
- int fd;
- struct termios tty;
- enum {
- button1 = 0x0001,
- button2 = 0x0002,
- button3 = 0x0004,
- button4 = 0x0008,
- button5 = 0x0010
- } buttons;
-} myPrivate;
-
-static int msLinuxReadBytes(int fd, unsigned char *buf, int len, int min)
-{
- int n, tot;
- fd_set set;
- struct timeval tv;
-
- tot = 0;
- while (len) {
- n = read(fd, buf, len);
- if (n > 0) {
- tot += n;
- buf += n;
- len -= n;
- }
- if (tot % min == 0) break;
- FD_ZERO(&set);
- FD_SET(fd, &set);
- tv.tv_sec = 0;
- tv.tv_usec = 100 * 1000;
- n = select(fd + 1, &set, 0, 0, &tv);
- if (n <= 0) break;
- }
- return tot;
-}
-
-static void msLinuxButton(DevicePtr pDev, ENQUEUEPROC enqueue, int buttons,
- BLOCK block)
-{
- GETPRIV;
-
-#define PRESS(b) \
- do { \
- enqueue(pDev, ButtonPress, 0, 0, NULL, block); \
- } while (0)
-
-#define RELEASE(b) \
- do { \
- enqueue(pDev, ButtonRelease, 0, 0, NULL, block); \
- } while (0)
-
- if ((buttons & button1) && !(priv->buttons & button1)) PRESS(1);
- if (!(buttons & button1) && (priv->buttons & button1)) RELEASE(1);
-
- if ((buttons & button2) && !(priv->buttons & button2)) PRESS(2);
- if (!(buttons & button2) && (priv->buttons & button2)) RELEASE(2);
-
- if ((buttons & button3) && !(priv->buttons & button3)) PRESS(3);
- if (!(buttons & button3) && (priv->buttons & button3)) RELEASE(3);
-
- if ((buttons & button4) && !(priv->buttons & button4)) PRESS(4);
- if (!(buttons & button4) && (priv->buttons & button4)) RELEASE(4);
-
- if ((buttons & button5) && !(priv->buttons & button5)) PRESS(5);
- if (!(buttons & button5) && (priv->buttons & button5)) RELEASE(5);
-
- priv->buttons = buttons;
-}
-
-/** Read an event from the \a pDev device. If the event is a motion
- * event, enqueue it with the \a motion function. Otherwise, check for
- * special keys with the \a checkspecial function and enqueue the event
- * with the \a enqueue function. The \a block type is passed to the
- * functions so that they may block SIGIO handling as appropriate to the
- * caller of this function. */
-void msLinuxRead(DevicePtr pDev,
- MOTIONPROC motion,
- ENQUEUEPROC enqueue,
- CHECKPROC checkspecial,
- BLOCK block)
-{
- GETPRIV;
- unsigned char buf[3 * 200]; /* RATS: Use ok */
- unsigned char *b;
- int n;
- int dx, dy, v[2];
-
- while ((n = msLinuxReadBytes(priv->fd, buf, sizeof(buf), 3)) > 0) {
- b = buf;
- while (n >= 3) {
- dx = (char)(((b[0] & 0x03) << 6) | (b[1] & 0x3f));
- dy = (char)(((b[0] & 0x0c) << 4) | (b[2] & 0x3f));
- v[0] = -dx;
- v[1] = -dy;
-
- motion(pDev, v, 0, 2, 1, block);
- msLinuxButton(pDev, enqueue, (((b[0] & 0x10) ? button3 : 0)
- | ((b[0] & 0x20) ? button1 : 0)),
- block);
- n -= 3;
- b += 3;
- }
- }
-}
-
-/** Initialize \a pDev. */
-void msLinuxInit(DevicePtr pDev)
-{
- GETPRIV;
- const char *names[] = { "/dev/serialmouse", "/dev/mouse", NULL };
- int i;
-
- if (priv->fd >=0) return;
-
- for (i = 0; names[i]; i++) {
- if ((priv->fd = open(names[i], O_RDWR | O_NONBLOCK, 0)) >= 0) break;
- }
- if (priv->fd < 0)
- FATAL1("msLinuxInit: Cannot open mouse port (%s)\n",
- strerror(errno));
-
- if (!isatty(priv->fd))
- FATAL1("msLinuxInit: Mouse port %s is not a tty\n", names[i]);
-
- if (tcgetattr(priv->fd, &priv->tty) < 0)
- FATAL1("msLinuxInit: tcgetattr failed (%s)\n", strerror(errno));
-
- write(priv->fd, "*n", 2); /* 1200 baud */
- usleep(100000);
-}
-
-/** Turn \a pDev on (i.e., take input from \a pDev). */
-int msLinuxOn(DevicePtr pDev)
-{
- GETPRIV;
- struct termios nTty;
-
- if (priv->fd < 0) msLinuxInit(pDev);
-
- nTty = priv->tty;
- nTty.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR
- | IGNCR | ICRNL | IXON | IXOFF);
- nTty.c_oflag &= ~OPOST;
- nTty.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
- nTty.c_cflag &= ~(CSIZE | PARENB);
- nTty.c_cflag |= CS8 | CLOCAL | CSTOPB;
- nTty.c_cc[VTIME] = 0;
- nTty.c_cc[VMIN] = 1;
- cfsetispeed (&nTty, B1200);
- cfsetospeed (&nTty, B1200);
- if (tcsetattr(priv->fd, TCSANOW, &nTty) < 0)
- FATAL1("msLinuxInit: tcsetattr failed (%s)\n", strerror(errno));
- write(priv->fd, "*V", 2); /* 2 button 3 byte protocol */
- return priv->fd;
-}
-
-/** Turn \a pDev off (i.e., stop taking input from \a pDev). */
-void msLinuxOff(DevicePtr pDev)
-{
- GETPRIV;
-
- tcsetattr(priv->fd, TCSANOW, &priv->tty);
- close(priv->fd);
- priv->fd = -1;
-}
-
-static void msLinuxGetMap(DevicePtr pDev, unsigned char *map, int *nButtons)
-{
- int i;
-
- if (nButtons) *nButtons = 3;
- if (map) for (i = 0; i <= *nButtons; i++) map[i] = i;
-}
-
-/** Currently unused hook called prior to an VT switch. */
-void msLinuxVTPreSwitch(pointer p)
-{
-}
-
-/** Currently unused hook called after returning from a VT switch. */
-void msLinuxVTPostSwitch(pointer p)
-{
-}
-
-/** Create a private structure for use within this file. */
-pointer msLinuxCreatePrivate(DeviceIntPtr pMouse)
-{
- myPrivate *priv = xalloc(sizeof(*priv));
- memset(priv, 0, sizeof(*priv));
- priv->fd = -1;
- priv->pMouse = pMouse;
- return priv;
-}
-
-/** Destroy a private structure. */
-void msLinuxDestroyPrivate(pointer priv)
-{
- if (priv) xfree(priv);
-}
-
-/** Fill the \a info structure with information needed to initialize \a
- * pDev. */
-void msLinuxGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- info->buttonClass = 1;
- msLinuxGetMap(pDev, info->map, &info->numButtons);
- info->valuatorClass = 1;
- info->numRelAxes = 2;
- info->minval[0] = 0;
- info->maxval[0] = 0;
- info->res[0] = 1;
- info->minres[0] = 0;
- info->maxres[0] = 1;
- info->ptrFeedbackClass = 1;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/lnx-ms.h b/nx-X11/programs/Xserver/hw/dmx/input/lnx-ms.h
deleted file mode 100644
index bc744431a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/lnx-ms.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001 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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to Linux MS mouse driver. \see lnx-ms.c */
-
-#ifndef _LNX_MS_H_
-#define _LNX_MS_H_
-
-extern pointer msLinuxCreatePrivate(DeviceIntPtr pMouse);
-extern void msLinuxDestroyPrivate(pointer priv);
-extern void msLinuxRead(DevicePtr pDev,
- dmxMotionProcPtr motion,
- dmxEnqueueProcPtr enqueue,
- dmxCheckSpecialProcPtr checkspecial,
- DMXBlockType block);
-extern void msLinuxInit(DevicePtr pDev);
-extern void msLinuxGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern int msLinuxOn(DevicePtr pDev);
-extern void msLinuxOff(DevicePtr pDev);
-extern void msLinuxCtrl(DevicePtr pDev, PtrCtrl *ctrl);
-extern void msLinuxVTPreSwitch(pointer p);
-extern void msLinuxVTPostSwitch(pointer p);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/lnx-ps2.c b/nx-X11/programs/Xserver/hw/dmx/input/lnx-ps2.c
deleted file mode 100644
index 0c5b870aa..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/lnx-ps2.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/* $XFree86$ */
-/* Portions of this file were derived from the following files:
- *
- **********************************************************************
- *
- * Xserver/hw/kdrive/linux/ps2.c
- *
- * Copyright (c) 1999 by Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/*
- * Copyright 2001,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 <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * This code implements a low-level device driver for a serial MS mouse.
- * The code is derived from code by Keith Packard (see the source code
- * for complete references). */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "inputstr.h"
-#include <X11/Xos.h>
-#include <errno.h>
-#include <termios.h>
-
-/*****************************************************************************/
-/* Define some macros to make it easier to move this file to another
- * part of the Xserver tree. All calls to the dmx* layer are #defined
- * here for the .c file. The .h file will also have to be edited. */
-#include "dmxinputinit.h"
-#include "lnx-ps2.h"
-
-#define GETPRIV myPrivate *priv \
- = ((DMXLocalInputInfoPtr)(pDev->devicePrivate))->private
-
-#define LOG0(f) dmxLog(dmxDebug,f)
-#define LOG1(f,a) dmxLog(dmxDebug,f,a)
-#define LOG2(f,a,b) dmxLog(dmxDebug,f,a,b)
-#define LOG3(f,a,b,c) dmxLog(dmxDebug,f,a,b,c)
-#define FATAL0(f) dmxLog(dmxFatal,f)
-#define FATAL1(f,a) dmxLog(dmxFatal,f,a)
-#define FATAL2(f,a,b) dmxLog(dmxFatal,f,a,b)
-#define MOTIONPROC dmxMotionProcPtr
-#define ENQUEUEPROC dmxEnqueueProcPtr
-#define CHECKPROC dmxCheckSpecialProcPtr
-#define BLOCK DMXBlockType
-
-/* End of interface definitions. */
-/*****************************************************************************/
-
-/* Private area for PS/2 devices. */
-typedef struct _myPrivate {
- DeviceIntPtr pMouse;
- int fd;
- enum {
- button1 = 0x0001,
- button2 = 0x0002,
- button3 = 0x0004,
- button4 = 0x0008,
- button5 = 0x0010
- } buttons;
-} myPrivate;
-
-static int ps2LinuxReadBytes(int fd, unsigned char *buf, int len, int min)
-{
- int n, tot;
- fd_set set;
- struct timeval tv;
-
- tot = 0;
- while (len) {
- n = read(fd, buf, len);
- if (n > 0) {
- tot += n;
- buf += n;
- len -= n;
- }
- if (tot % min == 0) break;
- FD_ZERO(&set);
- FD_SET(fd, &set);
- tv.tv_sec = 0;
- tv.tv_usec = 100 * 1000;
- n = select(fd + 1, &set, 0, 0, &tv);
- if (n <= 0) break;
- }
- return tot;
-}
-
-static void ps2LinuxButton(DevicePtr pDev, ENQUEUEPROC enqueue,
- int buttons, BLOCK block)
-{
- GETPRIV;
-
-#define PRESS(b) \
- do { \
- enqueue(pDev, ButtonPress, 0, 0, NULL, block); \
- } while (0)
-
-#define RELEASE(b) \
- do { \
- enqueue(pDev, ButtonRelease, 0, 0, NULL, block); \
- } while (0)
-
- if ((buttons & button1) && !(priv->buttons & button1)) PRESS(1);
- if (!(buttons & button1) && (priv->buttons & button1)) RELEASE(1);
-
- if ((buttons & button2) && !(priv->buttons & button2)) PRESS(2);
- if (!(buttons & button2) && (priv->buttons & button2)) RELEASE(2);
-
- if ((buttons & button3) && !(priv->buttons & button3)) PRESS(3);
- if (!(buttons & button3) && (priv->buttons & button3)) RELEASE(3);
-
- if ((buttons & button4) && !(priv->buttons & button4)) PRESS(4);
- if (!(buttons & button4) && (priv->buttons & button4)) RELEASE(4);
-
- if ((buttons & button5) && !(priv->buttons & button5)) PRESS(5);
- if (!(buttons & button5) && (priv->buttons & button5)) RELEASE(5);
-
- priv->buttons = buttons;
-}
-
-/** Read an event from the \a pDev device. If the event is a motion
- * event, enqueue it with the \a motion function. Otherwise, check for
- * special keys with the \a checkspecial function and enqueue the event
- * with the \a enqueue function. The \a block type is passed to the
- * functions so that they may block SIGIO handling as appropriate to the
- * caller of this function. */
-void ps2LinuxRead(DevicePtr pDev, MOTIONPROC motion,
- ENQUEUEPROC enqueue, CHECKPROC checkspecial, BLOCK block)
-{
- GETPRIV;
- unsigned char buf[3 * 200]; /* RATS: Use ok */
- unsigned char *b;
- int n;
- int dx, dy, v[2];
-
- while ((n = ps2LinuxReadBytes(priv->fd, buf, sizeof(buf), 3)) > 0) {
- b = buf;
- while (n >= 3) {
- dx = b[1] - ((b[0] & 0x10) ? 256 : 0);
- dy = -b[2] + ((b[0] & 0x20) ? 256 : 0);
- v[0] = -dx;
- v[1] = -dy;
-
- motion(pDev, v, 0, 2, 1, block);
- ps2LinuxButton(pDev, enqueue, (((b[0] & 4) ? button2 : 0)
- | ((b[0] & 2) ? button3 : 0)
- | ((b[0] & 1) ? button1 : 0)),
- block);
- n -= 3;
- b += 3;
- }
- }
-}
-
-/** Initialize \a pDev. */
-void ps2LinuxInit(DevicePtr pDev)
-{
- GETPRIV;
- const char *names[] = { "/dev/mouse", "/dev/psaux", NULL };
- int i;
-
- if (priv->fd >=0) return;
-
- for (i = 0; names[i]; i++) {
- if ((priv->fd = open(names[i], O_RDWR | O_NONBLOCK, 0)) >= 0) break;
- }
- if (priv->fd < 0)
- FATAL1("ps2LinuxInit: Cannot open mouse port (%s)\n",
- strerror(errno));
-}
-
-/** Turn \a pDev on (i.e., take input from \a pDev). */
-int ps2LinuxOn(DevicePtr pDev)
-{
- GETPRIV;
-
- if (priv->fd < 0) ps2LinuxInit(pDev);
- return priv->fd;
-}
-
-/** Turn \a pDev off (i.e., stop taking input from \a pDev). */
-void ps2LinuxOff(DevicePtr pDev)
-{
- GETPRIV;
-
- close(priv->fd);
- priv->fd = -1;
-}
-
-static void ps2LinuxGetMap(DevicePtr pDev, unsigned char *map, int *nButtons)
-{
- int i;
-
- if (nButtons) *nButtons = 3;
- if (map) for (i = 0; i <= *nButtons; i++) map[i] = i;
-}
-
-/** Currently unused hook called prior to an VT switch. */
-void ps2LinuxVTPreSwitch(pointer p)
-{
-}
-
-/** Currently unused hook called after returning from a VT switch. */
-void ps2LinuxVTPostSwitch(pointer p)
-{
-}
-
-/** Create a private structure for use within this file. */
-pointer ps2LinuxCreatePrivate(DeviceIntPtr pMouse)
-{
- myPrivate *priv = xalloc(sizeof(*priv));
- memset(priv, 0, sizeof(*priv));
- priv->fd = -1;
- priv->pMouse = pMouse;
- return priv;
-}
-
-/** Destroy a private structure. */
-void ps2LinuxDestroyPrivate(pointer priv)
-{
- if (priv) xfree(priv);
-}
-
-/** Fill the \a info structure with information needed to initialize \a
- * pDev. */
-void ps2LinuxGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- info->buttonClass = 1;
- ps2LinuxGetMap(pDev, info->map, &info->numButtons);
- info->valuatorClass = 1;
- info->numRelAxes = 2;
- info->minval[0] = 0;
- info->maxval[0] = 0;
- info->res[0] = 1;
- info->minres[0] = 0;
- info->maxres[0] = 1;
- info->ptrFeedbackClass = 1;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/lnx-ps2.h b/nx-X11/programs/Xserver/hw/dmx/input/lnx-ps2.h
deleted file mode 100644
index e3d751e2f..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/lnx-ps2.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001 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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to Linux PS/2 mouse driver. \see lnx-ps2.c */
-
-#ifndef _LNX_PS2_H_
-#define _LNX_PS2_H_
-
-extern pointer ps2LinuxCreatePrivate(DeviceIntPtr pMouse);
-extern void ps2LinuxDestroyPrivate(pointer priv);
-extern void ps2LinuxRead(DevicePtr pDev,
- dmxMotionProcPtr motion,
- dmxEnqueueProcPtr enqueue,
- dmxCheckSpecialProcPtr checkspecial,
- DMXBlockType block);
-extern void ps2LinuxInit(DevicePtr pDev);
-extern void ps2LinuxGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern int ps2LinuxOn(DevicePtr pDev);
-extern void ps2LinuxOff(DevicePtr pDev);
-extern void ps2LinuxCtrl(DevicePtr pDev, PtrCtrl *ctrl);
-extern void ps2LinuxVTPreSwitch(pointer p);
-extern void ps2LinuxVTPostSwitch(pointer p);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/usb-common.c b/nx-X11/programs/Xserver/hw/dmx/input/usb-common.c
deleted file mode 100644
index a6fe7ad3b..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/usb-common.c
+++ /dev/null
@@ -1,383 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * Routines that are common between #usb-keyboard.c, #usb-mouse.c, and
- * #usb-other.c */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "usb-private.h"
-
-#define USB_COMMON_DEBUG 1
-
-/*****************************************************************************/
-/* Define some macros to make it easier to move this file to another
- * part of the Xserver tree. All calls to the dmx* layer are #defined
- * here for the .c file. The .h file will also have to be edited. */
-#include "usb-mouse.h"
-
-#define GETPRIV myPrivate *priv \
- = ((DMXLocalInputInfoPtr)(pDev->devicePrivate))->private
-
-#define GETNAME ((DMXLocalInputInfoPtr)(pDevice->public.devicePrivate)) \
- ->name
-
-#define LOG0(f) dmxLog(dmxDebug,f)
-#define LOG1(f,a) dmxLog(dmxDebug,f,a)
-#define LOG2(f,a,b) dmxLog(dmxDebug,f,a,b)
-#define LOG3(f,a,b,c) dmxLog(dmxDebug,f,a,b,c)
-#define LOG1INPUT(p,f,a) dmxLogInput(p->dmxInput,f,a)
-#define LOG3INPUT(p,f,a,b,c) dmxLogInput(p->dmxInput,f,a,b,c)
-#define LOG5INPUT(p,f,a,b,c,d,e) dmxLogInput(p->dmxInput,f,a,b,c,d,e)
-#define FATAL0(f) dmxLog(dmxFatal,f)
-#define FATAL1(f,a) dmxLog(dmxFatal,f,a)
-#define FATAL2(f,a,b) dmxLog(dmxFatal,f,a,b)
-#define MOTIONPROC dmxMotionProcPtr
-#define ENQUEUEPROC dmxEnqueueProcPtr
-#define CHECKPROC dmxCheckSpecialProcPtr
-#define BLOCK DMXBlockType
-
-/* End of interface definitions. */
-/*****************************************************************************/
-
-
-/** Read an event from the \a pDev device. If the event is a motion
- * event, enqueue it with the \a motion function. Otherwise, enqueue
- * the event with the \a enqueue function. The \a block type is passed
- * to the functions so that they may block SIGIO handling as appropriate
- * to the caller of this function.
- *
- * Since USB devices return EV_KEY events for buttons and keys, \a
- * minButton is used to decide if a Button or Key event should be
- * queued.*/
-void usbRead(DevicePtr pDev,
- MOTIONPROC motion,
- ENQUEUEPROC enqueue,
- int minButton,
- BLOCK block)
-{
- GETPRIV;
- struct input_event raw;
- int v[DMX_MAX_AXES];
- int axis;
-
-#define PRESS(b) \
- do { \
- enqueue(pDev, ButtonPress, 0, 0, NULL, block); \
- } while (0)
-
-#define RELEASE(b) \
- do { \
- enqueue(pDev, ButtonRelease, 0, 0, NULL, block); \
- } while (0)
-
- while (read(priv->fd, &raw, sizeof(raw)) > 0) {
-#if USB_COMMON_DEBUG > 1
- LOG3("USB: type = %d, code = 0x%02x, value = %d\n",
- raw.type, raw.code, raw.value);
-#endif
- switch (raw.type) {
- case EV_KEY:
- /* raw.value = 1 for first, 2 for repeat */
- if (raw.code > minButton) {
- if (raw.value) PRESS((raw.code & 0x0f) + 1);
- else RELEASE((raw.code & 0x0f) + 1);
- } else {
- enqueue(pDev, raw.value ? KeyPress : KeyRelease,
- 0, 0, NULL, block);
- }
- break;
- case EV_REL:
- switch (raw.code) {
- case REL_X:
- v[0] = -raw.value;
- v[1] = 0;
- motion(pDev, v, 0, 2, DMX_RELATIVE, block);
- break;
- case REL_Y:
- v[0] = 0;
- v[1] = -raw.value;
- motion(pDev, v, 0, 2, DMX_RELATIVE, block);
- break;
- case REL_WHEEL:
- if ((int)raw.value > 0) {
- PRESS(4);
- RELEASE(4);
- } else if ((int)raw.value < 0) {
- PRESS(5);
- RELEASE(5);
- }
- break;
- default:
- memset(v, 0, sizeof(v));
- axis = priv->relmap[raw.code];
- v[axis] = raw.value;
- motion(pDev, v, axis, 1, DMX_RELATIVE, block);
- }
- break;
- case EV_ABS:
- memset(v, 0, sizeof(v));
- axis = priv->absmap[raw.code];
- v[axis] = raw.value;
- motion(pDev, v, axis, 1, DMX_ABSOLUTE, block);
- break;
- }
- }
-}
-
-#define test_bit(bit) (priv->mask[(bit)/8] & (1 << ((bit)%8)))
-#define test_bits(bit) (bits[(bit)/8] & (1 << ((bit)%8)))
-
-static void usbPrint(myPrivate *priv,
- const char *filename, const char *devname, int fd)
-{
- int j, k;
- DeviceIntPtr pDevice = priv->pDevice;
- unsigned char bits[KEY_MAX/8 + 1]; /* RATS: Use ok assuming that
- * KEY_MAX is greater than
- * REL_MAX, ABS_MAX, SND_MAX, and
- * LED_MAX. */
-
- LOG3INPUT(priv, "%s (%s) using %s\n", pDevice->name, GETNAME, filename);
- LOG1INPUT(priv, " %s\n", devname);
- for (j = 0; j < EV_MAX; j++) {
- if (test_bit(j)) {
- const char *type = "unknown";
- char extra[256]; /* FIXME: may cause buffer overflow */
- extra[0] = '\0';
- switch(j) {
- case EV_KEY: type = "keys/buttons"; break;
- case EV_REL: type = "relative";
- memset(bits, 0, sizeof(bits));
- ioctl(priv->fd, EVIOCGBIT(EV_REL, sizeof(bits)), bits);
- for (k = 0; k < REL_MAX; k++) {
- if (test_bits(k)) switch (k) {
- case REL_X: strcat(extra, " X"); break;
- case REL_Y: strcat(extra, " Y"); break;
- case REL_Z: strcat(extra, " Z"); break;
- case REL_HWHEEL: strcat(extra, " HWheel"); break;
- case REL_DIAL: strcat(extra, " Dial"); break;
- case REL_WHEEL: strcat(extra, " Wheel"); break;
- case REL_MISC: strcat(extra, " Misc"); break;
- }
- }
- break;
- case EV_ABS: type = "absolute";
- memset(bits, 0, sizeof(bits));
- ioctl(priv->fd, EVIOCGBIT(EV_ABS, sizeof(bits)), bits);
- for (k = 0; k < ABS_MAX; k++) {
- if (test_bits(k)) switch (k) {
- case ABS_X: strcat(extra," X"); break;
- case ABS_Y: strcat(extra," Y"); break;
- case ABS_Z: strcat(extra," Z"); break;
- case ABS_RX: strcat(extra," RX"); break;
- case ABS_RY: strcat(extra," RY"); break;
- case ABS_RZ: strcat(extra," RZ"); break;
- case ABS_THROTTLE: strcat(extra," Throttle");break;
- case ABS_RUDDER: strcat(extra," Rudder"); break;
- case ABS_WHEEL: strcat(extra," Wheel"); break;
- case ABS_GAS: strcat(extra," Gas"); break;
- case ABS_BRAKE: strcat(extra," Break"); break;
- case ABS_HAT0X: strcat(extra," Hat0X"); break;
- case ABS_HAT0Y: strcat(extra," Hat0Y"); break;
- case ABS_HAT1X: strcat(extra," Hat1X"); break;
- case ABS_HAT1Y: strcat(extra," Hat1Y"); break;
- case ABS_HAT2X: strcat(extra," Hat2X"); break;
- case ABS_HAT2Y: strcat(extra," Hat2Y"); break;
- case ABS_HAT3X: strcat(extra," Hat3X"); break;
- case ABS_HAT3Y: strcat(extra," Hat3Y"); break;
- case ABS_PRESSURE: strcat(extra," Pressure");break;
- case ABS_DISTANCE: strcat(extra," Distance");break;
- case ABS_TILT_X: strcat(extra," TiltX"); break;
- case ABS_TILT_Y: strcat(extra," TiltY"); break;
- case ABS_MISC: strcat(extra," Misc"); break;
- }
- }
- break;
- case EV_MSC: type = "reserved"; break;
- case EV_LED: type = "leds";
- memset(bits, 0, sizeof(bits));
- ioctl(priv->fd, EVIOCGBIT(EV_LED, sizeof(bits)), bits);
- for (k = 0; k < LED_MAX; k++) {
- if (test_bits(k)) switch (k) {
- case LED_NUML: strcat(extra," NumLock"); break;
- case LED_CAPSL: strcat(extra," CapsLock"); break;
- case LED_SCROLLL: strcat(extra," ScrlLock"); break;
- case LED_COMPOSE: strcat(extra," Compose"); break;
- case LED_KANA: strcat(extra," Kana"); break;
- case LED_SLEEP: strcat(extra," Sleep"); break;
- case LED_SUSPEND: strcat(extra," Suspend"); break;
- case LED_MUTE: strcat(extra," Mute"); break;
- case LED_MISC: strcat(extra," Misc"); break;
- }
- }
- break;
- case EV_SND: type = "sound";
- memset(bits, 0, sizeof(bits));
- ioctl(priv->fd, EVIOCGBIT(EV_SND, sizeof(bits)), bits);
- for (k = 0; k < SND_MAX; k++) {
- if (test_bits(k)) switch (k) {
- case SND_CLICK: strcat(extra," Click"); break;
- case SND_BELL: strcat(extra," Bell"); break;
- }
- }
- break;
- case EV_REP: type = "repeat"; break;
- case EV_FF: type = "feedback"; break;
- }
- LOG5INPUT(priv, " Feature 0x%02x = %s%s%s%s\n", j, type,
- extra[0] ? " [" : "",
- extra[0] ? extra+1 : "",
- extra[0] ? "]" : "");
- }
- }
-}
-
-/** Initialized \a pDev as a \a usbMouse, \a usbKeyboard, or \a usbOther
-device. */
-void usbInit(DevicePtr pDev, usbType type)
-{
- GETPRIV;
- char name[64]; /* RATS: Only used in XmuSnprintf */
- int i, j, k;
- char buf[256] = { 0, }; /* RATS: Use ok */
- int version;
- unsigned char bits[KEY_MAX/8 + 1]; /* RATS: Use ok assuming that
- * KEY_MAX is greater than
- * REL_MAX, ABS_MAX, SND_MAX, and
- * LED_MAX. */
-
- if (priv->fd >=0) return;
-
- for (i = 0; i < 32; i++) {
- XmuSnprintf(name, sizeof(name), "/dev/input/event%d", i);
- if ((priv->fd = open(name, O_RDWR | O_NONBLOCK, 0)) >= 0) {
- ioctl(priv->fd, EVIOCGVERSION, &version);
- ioctl(priv->fd, EVIOCGNAME(sizeof(buf)), buf);
- memset(priv->mask, 0, sizeof(priv->mask));
- ioctl(priv->fd, EVIOCGBIT(0, sizeof(priv->mask)), priv->mask);
-
- for (j = 0; j < EV_MAX; j++) {
- if (test_bit(j)) {
- switch(j) {
- case EV_REL:
- memset(bits, 0, sizeof(bits));
- ioctl(priv->fd, EVIOCGBIT(EV_REL, sizeof(bits)), bits);
- for (k = 0; k < REL_MAX; k++) {
- if (test_bits(k)) {
- if (k == REL_X) priv->relmap[k] = 0;
- else if (k == REL_Y) priv->relmap[k] = 1;
- else priv->relmap[k] = 2 + priv->numAbs;
- ++priv->numRel;
- }
- }
- break;
- case EV_ABS:
- memset(bits, 0, sizeof(bits));
- ioctl(priv->fd, EVIOCGBIT(EV_ABS, sizeof(bits)), bits);
- for (k = 0; k < ABS_MAX; k++) {
- if (test_bits(k)) {
- priv->absmap[k] = priv->numAbs;
- ++priv->numAbs;
- }
- }
- break;
- case EV_LED:
- memset(bits, 0, sizeof(bits));
- ioctl(priv->fd, EVIOCGBIT(EV_LED, sizeof(bits)), bits);
- for (k = 0; k < LED_MAX; k++) {
- if (test_bits(k)) ++priv->numLeds;
- }
- break;
- }
- }
- }
- switch (type) {
- case usbMouse:
- if (test_bit(EV_REL) && test_bit(EV_KEY))
- goto found;
- break;
- case usbKeyboard:
- if (test_bit(EV_KEY) && test_bit(EV_LED) && !test_bit(EV_ABS))
- goto found;
- break;
- case usbOther:
- if (!(test_bit(EV_REL) && test_bit(EV_KEY))
- && !(test_bit(EV_KEY) && test_bit(EV_LED)
- && !test_bit(EV_ABS)))
- goto found;
- break;
- }
- close(priv->fd);
- priv->fd = -1;
- }
- }
- if (priv->fd < 0)
- FATAL1("usbInit: Cannot open /dev/input/event* port (%s)\n"
- " If you have not done so, you may need to:\n"
- " rmmod mousedev; rmmod keybdev\n"
- " modprobe evdev\n",
- strerror(errno));
- found:
- usbPrint(priv, name, buf, priv->fd);
-}
-
-/** Turn \a pDev off (i.e., stop taking input from \a pDev). */
-void usbOff(DevicePtr pDev)
-{
- GETPRIV;
-
- if (priv->fd >= 0) close(priv->fd);
- priv->fd = -1;
-}
-
-/** Create a private structure for use within this file. */
-pointer usbCreatePrivate(DeviceIntPtr pDevice)
-{
- myPrivate *priv = xalloc(sizeof(*priv));
- memset(priv, 0, sizeof(*priv));
- priv->fd = -1;
- priv->pDevice = pDevice;
- return priv;
-}
-
-/** Destroy a private structure. */
-void usbDestroyPrivate(pointer priv)
-{
- if (priv) xfree(priv);
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/usb-common.h b/nx-X11/programs/Xserver/hw/dmx/input/usb-common.h
deleted file mode 100644
index 768312990..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/usb-common.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to common USB support. \see usb-common.c \see usb-mouse.c
- * \see usb-keyboard.c \see usb-other.c */
-
-#ifndef _USB_COMMON_H_
-#define _USB_COMMON_H_
-typedef enum {
- usbMouse,
- usbKeyboard,
- usbOther
-} usbType;
-
-extern pointer usbCreatePrivate(DeviceIntPtr pDevice);
-extern void usbDestroyPrivate(pointer priv);
-extern void usbRead(DevicePtr pDev,
- dmxMotionProcPtr motion,
- dmxEnqueueProcPtr enqueue,
- int minButton,
- DMXBlockType block);
-extern void usbInit(DevicePtr pDev, usbType type);
-extern void usbOff(DevicePtr pDev);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/usb-keyboard.c b/nx-X11/programs/Xserver/hw/dmx/input/usb-keyboard.c
deleted file mode 100644
index 4b9439603..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/usb-keyboard.c
+++ /dev/null
@@ -1,442 +0,0 @@
-/* $XFree86$ */
-/* Portions of this file were derived from the following files:
- *
- **********************************************************************
- *
- * xfree86/common/xf86KbdLnx.c
- *
- * Linux version of keymapping setup. The kernel (since 0.99.14) has support
- * for fully remapping the keyboard, but there are some differences between
- * the Linux map and the SVR4 map (esp. in the extended keycodes). We also
- * remove the restriction on what keycodes can be remapped.
- * Orest Zborowski.
- *
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- *
- * 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, and that the name of Thomas Roell not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Roell makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/*
- * Copyright 2001,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 <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * This code implements a low-level device driver for a USB keyboard
- * under Linux. The keymap description is derived from code by Thomas
- * Roell, Orest Zborowski. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "atKeynames.h"
-#include "usb-private.h"
-
-#define USB_KEYBOARD_DEBUG 0
-
-/*****************************************************************************/
-/* Define some macros to make it easier to move this file to another
- * part of the Xserver tree. All calls to the dmx* layer are #defined
- * here for the .c file. The .h file will also have to be edited. */
-#include "usb-keyboard.h"
-
-#define GETPRIV myPrivate *priv \
- = ((DMXLocalInputInfoPtr)(pDev->devicePrivate))->private
-
-#define LOG0(f) dmxLog(dmxDebug,f)
-#define LOG1(f,a) dmxLog(dmxDebug,f,a)
-#define LOG2(f,a,b) dmxLog(dmxDebug,f,a,b)
-#define LOG3(f,a,b,c) dmxLog(dmxDebug,f,a,b,c)
-#define FATAL0(f) dmxLog(dmxFatal,f)
-#define FATAL1(f,a) dmxLog(dmxFatal,f,a)
-#define FATAL2(f,a,b) dmxLog(dmxFatal,f,a,b)
-#define MOTIONPROC dmxMotionProcPtr
-#define ENQUEUEPROC dmxEnqueueProcPtr
-#define CHECKPROC dmxCheckSpecialProcPtr
-#define BLOCK DMXBlockType
-
-/* End of interface definitions. */
-/*****************************************************************************/
-
-#define GLYPHS_PER_KEY 4
-#define NUM_KEYCODES 248
-#define MIN_KEYCODE 8
-#define MAX_KEYCODE (NUM_KEYCODES + MIN_KEYCODE - 1)
-
-static KeySym map[NUM_KEYCODES * GLYPHS_PER_KEY] = {
-/* Table modified from xc/programs/Xserver/hw/xfree86/common/xf86Keymap.h */
- /* 0x00 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x01 */ XK_Escape, NoSymbol, NoSymbol, NoSymbol,
- /* 0x02 */ XK_1, XK_exclam, NoSymbol, NoSymbol,
- /* 0x03 */ XK_2, XK_at, NoSymbol, NoSymbol,
- /* 0x04 */ XK_3, XK_numbersign, NoSymbol, NoSymbol,
- /* 0x05 */ XK_4, XK_dollar, NoSymbol, NoSymbol,
- /* 0x06 */ XK_5, XK_percent, NoSymbol, NoSymbol,
- /* 0x07 */ XK_6, XK_asciicircum, NoSymbol, NoSymbol,
- /* 0x08 */ XK_7, XK_ampersand, NoSymbol, NoSymbol,
- /* 0x09 */ XK_8, XK_asterisk, NoSymbol, NoSymbol,
- /* 0x0a */ XK_9, XK_parenleft, NoSymbol, NoSymbol,
- /* 0x0b */ XK_0, XK_parenright, NoSymbol, NoSymbol,
- /* 0x0c */ XK_minus, XK_underscore, NoSymbol, NoSymbol,
- /* 0x0d */ XK_equal, XK_plus, NoSymbol, NoSymbol,
- /* 0x0e */ XK_BackSpace, NoSymbol, NoSymbol, NoSymbol,
- /* 0x0f */ XK_Tab, XK_ISO_Left_Tab,NoSymbol, NoSymbol,
- /* 0x10 */ XK_Q, NoSymbol, NoSymbol, NoSymbol,
- /* 0x11 */ XK_W, NoSymbol, NoSymbol, NoSymbol,
- /* 0x12 */ XK_E, NoSymbol, NoSymbol, NoSymbol,
- /* 0x13 */ XK_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x14 */ XK_T, NoSymbol, NoSymbol, NoSymbol,
- /* 0x15 */ XK_Y, NoSymbol, NoSymbol, NoSymbol,
- /* 0x16 */ XK_U, NoSymbol, NoSymbol, NoSymbol,
- /* 0x17 */ XK_I, NoSymbol, NoSymbol, NoSymbol,
- /* 0x18 */ XK_O, NoSymbol, NoSymbol, NoSymbol,
- /* 0x19 */ XK_P, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1a */ XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol,
- /* 0x1b */ XK_bracketright,XK_braceright, NoSymbol, NoSymbol,
- /* 0x1c */ XK_Return, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1d */ XK_Control_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1e */ XK_A, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1f */ XK_S, NoSymbol, NoSymbol, NoSymbol,
- /* 0x20 */ XK_D, NoSymbol, NoSymbol, NoSymbol,
- /* 0x21 */ XK_F, NoSymbol, NoSymbol, NoSymbol,
- /* 0x22 */ XK_G, NoSymbol, NoSymbol, NoSymbol,
- /* 0x23 */ XK_H, NoSymbol, NoSymbol, NoSymbol,
- /* 0x24 */ XK_J, NoSymbol, NoSymbol, NoSymbol,
- /* 0x25 */ XK_K, NoSymbol, NoSymbol, NoSymbol,
- /* 0x26 */ XK_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x27 */ XK_semicolon, XK_colon, NoSymbol, NoSymbol,
- /* 0x28 */ XK_quoteright, XK_quotedbl, NoSymbol, NoSymbol,
- /* 0x29 */ XK_quoteleft, XK_asciitilde, NoSymbol, NoSymbol,
- /* 0x2a */ XK_Shift_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2b */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
- /* 0x2c */ XK_Z, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2d */ XK_X, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2e */ XK_C, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2f */ XK_V, NoSymbol, NoSymbol, NoSymbol,
- /* 0x30 */ XK_B, NoSymbol, NoSymbol, NoSymbol,
- /* 0x31 */ XK_N, NoSymbol, NoSymbol, NoSymbol,
- /* 0x32 */ XK_M, NoSymbol, NoSymbol, NoSymbol,
- /* 0x33 */ XK_comma, XK_less, NoSymbol, NoSymbol,
- /* 0x34 */ XK_period, XK_greater, NoSymbol, NoSymbol,
- /* 0x35 */ XK_slash, XK_question, NoSymbol, NoSymbol,
- /* 0x36 */ XK_Shift_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x37 */ XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol,
- /* 0x38 */ XK_Alt_L, XK_Meta_L, NoSymbol, NoSymbol,
- /* 0x39 */ XK_space, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3a */ XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3b */ XK_F1, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3c */ XK_F2, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3d */ XK_F3, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3e */ XK_F4, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3f */ XK_F5, NoSymbol, NoSymbol, NoSymbol,
- /* 0x40 */ XK_F6, NoSymbol, NoSymbol, NoSymbol,
- /* 0x41 */ XK_F7, NoSymbol, NoSymbol, NoSymbol,
- /* 0x42 */ XK_F8, NoSymbol, NoSymbol, NoSymbol,
- /* 0x43 */ XK_F9, NoSymbol, NoSymbol, NoSymbol,
- /* 0x44 */ XK_F10, NoSymbol, NoSymbol, NoSymbol,
- /* 0x45 */ XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x46 */ XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x47 */ XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol,
- /* 0x48 */ XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol,
- /* 0x49 */ XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol,
- /* 0x4a */ XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4b */ XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol,
- /* 0x4c */ XK_KP_Begin, XK_KP_5, NoSymbol, NoSymbol,
- /* 0x4d */ XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol,
- /* 0x4e */ XK_KP_Add, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4f */ XK_KP_End, XK_KP_1, NoSymbol, NoSymbol,
- /* 0x50 */ XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol,
- /* 0x51 */ XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol,
- /* 0x52 */ XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol,
- /* 0x53 */ XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol,
- /* 0x54 */ XK_Sys_Req, NoSymbol, NoSymbol, NoSymbol,
- /* 0x55 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x56 */ XK_less, XK_greater, NoSymbol, NoSymbol,
- /* 0x57 */ XK_F11, NoSymbol, NoSymbol, NoSymbol,
- /* 0x58 */ XK_F12, NoSymbol, NoSymbol, NoSymbol,
- /* 0x59 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5b */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5c */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5d */ XK_Begin, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x60 */ XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol,
- /* 0x61 */ XK_Control_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x62 */ XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol,
- /* 0x63 */ XK_Print, NoSymbol, NoSymbol, NoSymbol,
- /* 0x64 */ XK_Alt_R, XK_Meta_R, NoSymbol, NoSymbol,
- /* 0x65 */ XK_Break, NoSymbol, NoSymbol, NoSymbol,
- /* 0x66 */ XK_Home, NoSymbol, NoSymbol, NoSymbol,
- /* 0x67 */ XK_Up, NoSymbol, NoSymbol, NoSymbol,
- /* 0x68 */ XK_Prior, NoSymbol, NoSymbol, NoSymbol,
- /* 0x69 */ XK_Left, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6a */ XK_Right, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6b */ XK_End, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6c */ XK_Down, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6d */ XK_Next, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6e */ XK_Insert, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6f */ XK_Delete, NoSymbol, NoSymbol, NoSymbol,
- /* 0x70 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x71 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x72 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x73 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x74 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x75 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x76 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x77 */ XK_Pause, NoSymbol, NoSymbol, NoSymbol,
- /* 0x78 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x79 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7a */ XK_Menu, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7b */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7c */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7d */ XK_Super_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7e */ XK_Super_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7f */ XK_Menu, NoSymbol, NoSymbol, NoSymbol,
-};
-
-static int kbdUSBKeyDown(myPrivate *priv, int keyCode)
-{
- CARD8 byte = keyCode >> 5;
- CARD32 bit = 1 << (keyCode & 0x1f);
-
- if (byte > NUM_STATE_ENTRIES) return 0;
- return priv->kbdState[byte] & bit;
-}
-
-static void kbdUSBKeyState(myPrivate *priv, int type, int keyCode)
-{
- CARD8 byte = keyCode >> 5;
- CARD32 bit = 1 << (keyCode & 0x1f);
-
- if (byte > NUM_STATE_ENTRIES) return;
- if (type == KeyPress) priv->kbdState[byte] |= bit;
- else priv->kbdState[byte] &= ~bit;
-}
-
-/** Set the LEDs. */
-void kbdUSBCtrl(DevicePtr pDev, KeybdCtrl *ctrl)
-{
- GETPRIV;
- struct timeval tv;
- struct input_event event;
- int i, led;
-
- gettimeofday(&tv, NULL);
- for (i = 0; i < 5; i++) {
- event.time.tv_sec = tv.tv_sec;
- event.time.tv_usec = tv.tv_usec;
- event.type = EV_LED;
- if (i == 0) led = 1; /* LED_CAPSL == 0x01 */
- else if (i == 1) led = 0; /* LED_NUML == 0x00 */
- else led = i;
- event.code = led;
- event.value = !!(ctrl->leds & (1 << led));
- write(priv->fd, &event, sizeof(event));
- }
-}
-
-/** Initialize \a pDev using #usbInit. */
-void kbdUSBInit(DevicePtr pDev)
-{
- usbInit(pDev, usbKeyboard);
-}
-
-static void kbdUSBConvert(DevicePtr pDev,
- unsigned int scanCode,
- int value,
- ENQUEUEPROC enqueue,
- CHECKPROC checkspecial,
- BLOCK block)
-{
- GETPRIV;
- KeySymsPtr pKeySyms = &priv->pDevice->key->curKeySyms;
- int type;
- int keyCode;
- KeySym keySym = NoSymbol;
- int switching;
-
- /* Set up xEvent information */
- type = value ? KeyPress : KeyRelease;
- keyCode = (scanCode & 0xff) + MIN_KEYCODE;
-
- /* Handle repeats */
-
- if (keyCode >= pKeySyms->minKeyCode && keyCode <= pKeySyms->maxKeyCode) {
- keySym = pKeySyms->map[(keyCode - pKeySyms->minKeyCode)
- * pKeySyms->mapWidth];
-#if 0
- switch (keySym) {
- case XK_Num_Lock:
- case XK_Scroll_Lock:
- case XK_Shift_Lock:
- case XK_Caps_Lock:
- /* Ignore releases and all but first press */
- if (kbdLinuxModIgnore(priv, &xE, keySym)) return;
- if (kbdLinuxKeyDown(priv, &xE)) xE.u.u.type = KeyRelease;
- else xE.u.u.type = KeyPress;
- break;
- }
-#endif
-
- /* If key is already down, ignore or autorepeat */
- if (type == KeyPress && kbdUSBKeyDown(priv, keyCode)) {
- KbdFeedbackClassRec *feed = priv->pDevice->kbdfeed;
-
- /* No auto-repeat? */
- if ((feed && !feed->ctrl.autoRepeat)
- || priv->pDevice->key->modifierMap[keyCode]
- || (feed
- && !(feed->ctrl.autoRepeats[keyCode >> 3]
- & (1 << (keyCode & 7))))) return; /* Ignore */
-
- /* Do auto-repeat */
- enqueue(pDev, KeyRelease, keyCode, keySym, NULL, block);
- type = KeyPress;
- }
-
- /* If key is already up, ignore */
- if (type == KeyRelease && !kbdUSBKeyDown(priv, keyCode)) return;
- }
-
- switching = 0;
- if (checkspecial && type == KeyPress)
- switching = checkspecial(pDev, keySym);
- if (!switching) {
- if (enqueue)
- enqueue(pDev, type, keyCode, keySym, NULL, block);
- kbdUSBKeyState(priv, type, keyCode); /* Update our state bitmap */
- }
-}
-
-/** Read an event from the \a pDev device. If the event is a motion
- * event, enqueue it with the \a motion function. Otherwise, check for
- * special keys with the \a checkspecial function and enqueue the event
- * with the \a enqueue function. The \a block type is passed to the
- * functions so that they may block SIGIO handling as appropriate to the
- * caller of this function. */
-void kbdUSBRead(DevicePtr pDev,
- MOTIONPROC motion,
- ENQUEUEPROC enqueue,
- CHECKPROC checkspecial,
- BLOCK block)
-{
- GETPRIV;
- struct input_event raw;
-
- while (read(priv->fd, &raw, sizeof(raw)) > 0) {
-#if USB_KEYBOARD_DEBUG
- LOG3("KBD: type = %d, code = 0x%02x, value = %d\n",
- raw.type, raw.code, raw.value);
-#endif
- kbdUSBConvert(pDev, raw.code, raw.value, enqueue, checkspecial, block);
- }
-}
-
-/** Turn \a pDev on (i.e., take input from \a pDev). */
-int kbdUSBOn(DevicePtr pDev)
-{
- GETPRIV;
-
- if (priv->fd < 0) kbdUSBInit(pDev);
- return priv->fd;
-}
-
-static void kbdUSBGetMap(DevicePtr pDev, KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
- KeySym *k, *mapCopy;
- int i;
-
- mapCopy = xalloc(sizeof(map));
- memcpy(mapCopy, map, sizeof(map));
-
- /* compute the modifier map */
- for (i = 0; i < MAP_LENGTH; i++)
- pModMap[i] = NoSymbol; /* make sure it is restored */
-
- for (k = mapCopy, i = MIN_KEYCODE;
- i < NUM_KEYCODES + MIN_KEYCODE;
- i++, k += 4) {
- switch(*k) {
- case XK_Shift_L:
- case XK_Shift_R: pModMap[i] = ShiftMask; break;
- case XK_Control_L:
- case XK_Control_R: pModMap[i] = ControlMask; break;
- case XK_Caps_Lock: pModMap[i] = LockMask; break;
- case XK_Alt_L:
- case XK_Alt_R: pModMap[i] = AltMask; break;
- case XK_Num_Lock: pModMap[i] = NumLockMask; break;
- case XK_Scroll_Lock: pModMap[i] = ScrollLockMask; break;
- case XK_Kana_Lock:
- case XK_Kana_Shift: pModMap[i] = KanaMask; break;
- case XK_Mode_switch: pModMap[i] = AltLangMask; break;
- }
- }
-
- pKeySyms->map = mapCopy; /* Must be XFree'able */
- pKeySyms->mapWidth = GLYPHS_PER_KEY;
- pKeySyms->minKeyCode = MIN_KEYCODE;
- pKeySyms->maxKeyCode = MAX_KEYCODE;
-}
-
-/** Fill the \a info structure with information needed to initialize \a
- * pDev. */
-void kbdUSBGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- info->keyboard = 1;
- info->keyClass = 1;
- kbdUSBGetMap(pDev, &info->keySyms, info->modMap);
- info->focusClass = 1;
- info->kbdFeedbackClass = 1;
-#ifdef XKB
- info->names.keycodes = xstrdup("powerpcps2");
- info->force = 1;
-#endif
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/usb-keyboard.h b/nx-X11/programs/Xserver/hw/dmx/input/usb-keyboard.h
deleted file mode 100644
index 5a4768a9d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/usb-keyboard.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to USB keyboard driver. \see usb-keyboard.c \see usb-common.c */
-
-#ifndef _USB_KEYBOARD_H_
-#define _USB_KEYBOARD_H_
-extern void kbdUSBInit(DevicePtr pDev);
-extern void kbdUSBGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern int kbdUSBOn(DevicePtr pDev);
-extern void kbdUSBRead(DevicePtr pDev,
- dmxMotionProcPtr motion,
- dmxEnqueueProcPtr enqueue,
- dmxCheckSpecialProcPtr checkspecial,
- DMXBlockType block);
-extern void kbdUSBCtrl(DevicePtr pDev, KeybdCtrl *ctrl);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/usb-mouse.c b/nx-X11/programs/Xserver/hw/dmx/input/usb-mouse.c
deleted file mode 100644
index eb1a3d123..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/usb-mouse.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * This code implements a low-level device driver for a USB mouse. */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "usb-private.h"
-
-/*****************************************************************************/
-/* Define some macros to make it easier to move this file to another
- * part of the Xserver tree. All calls to the dmx* layer are #defined
- * here for the .c file. The .h file will also have to be edited. */
-#include "usb-mouse.h"
-
-#define GETPRIV myPrivate *priv \
- = ((DMXLocalInputInfoPtr)(pDev->devicePrivate))->private
-
-#define LOG0(f) dmxLog(dmxDebug,f)
-#define LOG1(f,a) dmxLog(dmxDebug,f,a)
-#define LOG2(f,a,b) dmxLog(dmxDebug,f,a,b)
-#define LOG3(f,a,b,c) dmxLog(dmxDebug,f,a,b,c)
-#define FATAL0(f) dmxLog(dmxFatal,f)
-#define FATAL1(f,a) dmxLog(dmxFatal,f,a)
-#define FATAL2(f,a,b) dmxLog(dmxFatal,f,a,b)
-#define MOTIONPROC dmxMotionProcPtr
-#define ENQUEUEPROC dmxEnqueueProcPtr
-#define CHECKPROC dmxCheckSpecialProcPtr
-#define BLOCK DMXBlockType
-
-/* End of interface definitions. */
-/*****************************************************************************/
-
-/** Read the USB device using #usbRead. */
-void mouUSBRead(DevicePtr pDev,
- MOTIONPROC motion,
- ENQUEUEPROC enqueue,
- CHECKPROC checkspecial,
- BLOCK block)
-{
- usbRead(pDev, motion, enqueue, BTN_MISC, block);
-}
-
-/** Initialize \a pDev using #usbInit. */
-void mouUSBInit(DevicePtr pDev)
-{
- usbInit(pDev, usbMouse);
-}
-
-/** Turn \a pDev on (i.e., take input from \a pDev). */
-int mouUSBOn(DevicePtr pDev)
-{
- GETPRIV;
-
- if (priv->fd < 0) mouUSBInit(pDev);
- return priv->fd;
-}
-
-static void mouUSBGetMap(DevicePtr pDev, unsigned char *map, int *nButtons)
-{
- int i;
-
- if (nButtons) *nButtons = 5;
- if (map) for (i = 0; i <= *nButtons; i++) map[i] = i;
-}
-
-/** Fill the \a info structure with information needed to initialize \a
- * pDev. */
-void mouUSBGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- static KeySym keyboard_mapping = NoSymbol;
-
- info->buttonClass = 1;
- mouUSBGetMap(pDev, info->map, &info->numButtons);
- info->valuatorClass = 1;
- info->numRelAxes = 2;
- info->minval[0] = 0;
- info->maxval[0] = 0;
- info->res[0] = 1;
- info->minres[0] = 0;
- info->maxres[0] = 1;
- info->ptrFeedbackClass = 1;
-
- /* Some USB mice devices return key
- * events from their pair'd
- * keyboard... */
- info->keyClass = 1;
- info->keySyms.minKeyCode = 8;
- info->keySyms.maxKeyCode = 8;
- info->keySyms.mapWidth = 1;
- info->keySyms.map = &keyboard_mapping;
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/usb-mouse.h b/nx-X11/programs/Xserver/hw/dmx/input/usb-mouse.h
deleted file mode 100644
index 2439013ee..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/usb-mouse.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to USB mouse driver. \see usb-mouse.c \see usb-common.c */
-
-#ifndef _USB_MOU_H_
-#define _USB_MOU_H_
-extern void mouUSBRead(DevicePtr pDev,
- dmxMotionProcPtr motion,
- dmxEnqueueProcPtr enqueue,
- dmxCheckSpecialProcPtr checkspecial,
- DMXBlockType block);
-extern void mouUSBInit(DevicePtr pDev);
-extern void mouUSBGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern int mouUSBOn(DevicePtr pDev);
-extern void mouUSBCtrl(DevicePtr pDev, PtrCtrl *ctrl);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/usb-other.c b/nx-X11/programs/Xserver/hw/dmx/input/usb-other.c
deleted file mode 100644
index 9ac9e16ca..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/usb-other.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- *
- * This code implements a low-level device driver for a non-keyboard,
- * non-mouse USB device (e.g., a joystick or gamepad). */
-
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "usb-private.h"
-
-/*****************************************************************************/
-/* Define some macros to make it easier to move this file to another
- * part of the Xserver tree. All calls to the dmx* layer are #defined
- * here for the .c file. The .h file will also have to be edited. */
-#include "dmxinputinit.h"
-#include "usb-other.h"
-
-#define GETPRIV myPrivate *priv \
- = ((DMXLocalInputInfoPtr)(pDev->devicePrivate))->private
-
-#define LOG0(f) dmxLog(dmxDebug,f)
-#define LOG1(f,a) dmxLog(dmxDebug,f,a)
-#define LOG2(f,a,b) dmxLog(dmxDebug,f,a,b)
-#define LOG3(f,a,b,c) dmxLog(dmxDebug,f,a,b,c)
-#define FATAL0(f) dmxLog(dmxFatal,f)
-#define FATAL1(f,a) dmxLog(dmxFatal,f,a)
-#define FATAL2(f,a,b) dmxLog(dmxFatal,f,a,b)
-#define MOTIONPROC dmxMotionProcPtr
-#define ENQUEUEPROC dmxEnqueueProcPtr
-#define CHECKPROC dmxCheckSpecialProcPtr
-#define BLOCK DMXBlockType
-
-/* End of interface definitions. */
-/*****************************************************************************/
-
-/** Read the USB device using #usbRead. */
-void othUSBRead(DevicePtr pDev,
- MOTIONPROC motion,
- ENQUEUEPROC enqueue,
- CHECKPROC checkspecial,
- BLOCK block)
-{
- usbRead(pDev, motion, enqueue, 0xffff, block);
-}
-
-/** Initialize \a pDev using #usbInit. */
-void othUSBInit(DevicePtr pDev)
-{
- usbInit(pDev, usbOther);
-}
-
-/** Turn \a pDev on (i.e., take input from \a pDev). */
-int othUSBOn(DevicePtr pDev)
-{
- GETPRIV;
-
- if (priv->fd < 0) othUSBInit(pDev);
- return priv->fd;
-}
-
-/** Fill the \a info structure with information needed to initialize \a
- * pDev. */
-void othUSBGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
-{
- GETPRIV;
- int i, j;
- static KeySym keyboard_mapping = NoSymbol;
- int absolute[5];
-
-#define test_bit(bit) (priv->mask[(bit)/8] & (1 << ((bit)%8)))
-
- /* Some USB mice devices return key
- * events from their pair'd
- * keyboard... */
- info->keyClass = 1;
- info->keySyms.minKeyCode = 8;
- info->keySyms.maxKeyCode = 8;
- info->keySyms.mapWidth = 1;
- info->keySyms.map = &keyboard_mapping;
-
- for (i = 0; i < EV_MAX; i++) {
- if (test_bit(i)) {
- switch (i) {
- case EV_KEY:
- /* See above */
- break;
- case EV_REL:
- info->valuatorClass = 1;
- if (info->numRelAxes + info->numAbsAxes > DMX_MAX_AXES - 1) {
- info->numRelAxes = DMX_MAX_AXES - info->numAbsAxes - 1;
- dmxLog(dmxWarning, "Can only use %d relative axes\n",
- info->numRelAxes);
- } else
- info->numRelAxes = priv->numRel;
- info->minval[0] = 0;
- info->maxval[0] = 0;
- info->res[0] = 1;
- info->minres[0] = 0;
- info->maxres[0] = 1;
- break;
- case EV_ABS:
- info->valuatorClass = 1;
- if (info->numRelAxes + info->numAbsAxes > DMX_MAX_AXES - 1) {
- info->numAbsAxes = DMX_MAX_AXES - info->numRelAxes - 1;
- dmxLog(dmxWarning, "Can only use %d absolute axes\n",
- info->numAbsAxes);
- } else
- info->numAbsAxes = priv->numAbs;
- for (j = 0; j < info->numAbsAxes; j++) {
- ioctl(priv->fd, EVIOCGABS(j), abs);
- info->minval[1+j] = absolute[1];
- info->maxval[1+j] = absolute[2];
- info->res[1+j] = absolute[3];
- info->minres[1+j] = absolute[3];
- info->maxres[1+j] = absolute[3];
- }
- break;
- case EV_LED:
- info->ledFeedbackClass = 0; /* Not supported at this time */
- break;
- case EV_SND:
- info->belFeedbackClass = 0; /* Not supported at this time */
- break;
- }
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/usb-other.h b/nx-X11/programs/Xserver/hw/dmx/input/usb-other.h
deleted file mode 100644
index b2279fd8d..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/usb-other.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to USB generic driver. \see usb-other.c \see usb-common.c */
-
-#ifndef _USB_OTHER_H_
-#define _USB_OTHER_H_
-extern void othUSBRead(DevicePtr pDev,
- dmxMotionProcPtr motion,
- dmxEnqueueProcPtr enqueue,
- dmxCheckSpecialProcPtr checkspecial,
- DMXBlockType block);
-extern void othUSBInit(DevicePtr pDev);
-extern void othUSBGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern int othUSBOn(DevicePtr pDev);
-extern void othUSBCtrl(DevicePtr pDev, PtrCtrl *ctrl);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/dmx/input/usb-private.h b/nx-X11/programs/Xserver/hw/dmx/input/usb-private.h
deleted file mode 100644
index eae9c8b7a..000000000
--- a/nx-X11/programs/Xserver/hw/dmx/input/usb-private.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* $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 <faith@redhat.com>
- *
- */
-
-/** \file
- * Private header file for USB support. This file provides
- * Linux-specific include files and the definition of the private
- * structure. \see usb-common.c \see usb-keyboard.c \see usb-mouse.c
- * \see usb-other.c */
-
-#ifndef _USB_PRIVATE_H_
-#define _USB_PRIVATE_H_
-
-#include "dmxinputinit.h"
-#include "inputstr.h"
-#include <X11/Xos.h>
-#include <errno.h>
-#include <linux/input.h>
-#include "usb-common.h"
-
- /* Support for force feedback was
- * introduced in Linxu 2.4.10 */
-#ifndef EV_MSC
-#define EV_MSC 0x04
-#endif
-#ifndef EV_FF
-#define EV_FF 0x15
-#endif
-#ifndef LED_SLEEP
-#define LED_SLEEP 0x05
-#endif
-#ifndef LED_SUSPEND
-#define LED_SUSPEND 0x06
-#endif
-#ifndef LED_MUTE
-#define LED_MUTE 0x07
-#endif
-#ifndef LED_MISC
-#define LED_MISC 0x08
-#endif
-#ifndef BTN_DEAD
-#define BTN_DEAD 0x12f
-#endif
-#ifndef BTN_THUMBL
-#define BTN_THUMBL 0x13d
-#endif
-#ifndef BTN_THUMBR
-#define BTN_THUMBR 0x13e
-#endif
-#ifndef MSC_SERIAL
-#define MSC_SERIAL 0x00
-#endif
-#ifndef MSC_MAX
-#define MSC_MAX 0x07
-#endif
-
- /* Support for older kernels. */
-#ifndef ABS_WHEEL
-#define ABS_WHEEL 0x08
-#endif
-#ifndef ABS_GAS
-#define ABS_GAS 0x09
-#endif
-#ifndef ABS_BRAKE
-#define ABS_BRAKE 0x0a
-#endif
-
-#define NUM_STATE_ENTRIES (256/32)
-
-/* Private area for USB devices. */
-typedef struct _myPrivate {
- DeviceIntPtr pDevice; /**< Device (mouse or other) */
- int fd; /**< File descriptor */
- unsigned char mask[EV_MAX/8 + 1]; /**< Mask */
- int numRel, numAbs, numLeds; /**< Counts */
- int relmap[DMX_MAX_AXES]; /**< Relative axis map */
- int absmap[DMX_MAX_AXES]; /**< Absolute axis map */
-
- CARD32 kbdState[NUM_STATE_ENTRIES]; /**< Keyboard state */
- DeviceIntPtr pKeyboard; /** Keyboard device */
-
- int pitch; /**< Bell pitch */
- unsigned long duration; /**< Bell duration */
-
- /* FIXME: dmxInput is never initialized */
- DMXInputInfo *dmxInput; /**< For pretty-printing */
-} myPrivate;
-#endif
diff --git a/nx-X11/programs/Xserver/hw/kdrive/README b/nx-X11/programs/Xserver/hw/kdrive/README
deleted file mode 100644
index 344b6fc0a..000000000
--- a/nx-X11/programs/Xserver/hw/kdrive/README
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-Kdrive has been removed from this tree as it was outdated.
-Builds of kdrive are no longer supported in the monolithic
-tree. Please turn to
- http://www.freedesktop.org/Software/xserver
-for more information where to get the sources.
diff --git a/nx-X11/programs/Xserver/hw/sun/Imakefile b/nx-X11/programs/Xserver/hw/sun/Imakefile
deleted file mode 100644
index 24f607a0e..000000000
--- a/nx-X11/programs/Xserver/hw/sun/Imakefile
+++ /dev/null
@@ -1,90 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:29 cpqbld Exp $
-
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/hw/sun/Imakefile,v 1.6 2001/04/16 20:57:04 herrb Exp $
-
-#include <Server.tmpl>
-
-SRCS1 = sunInit.c \
- sunCfb.c \
- sunCfb24.c \
- sunCursor.c \
- sunFbs.c \
- sunIo.c \
- sunKbd.c \
- sunMfb.c \
- sunMouse.c\
- sunKeyMap.c
-
-OBJS1 = sunCfb.o \
- sunCfb24.o \
- sunCursor.o \
- sunFbs.o \
- sunIo.o \
- sunKbd.o \
- sunMfb.o \
- sunMouse.o \
- sunKeyMap.o
-
-SRCS2 = sunGX.c
-OBJS2 = sunGX.o
-
-#ifdef i386Architecture
-SRCS3 = sunInit.c
-OBJS3 = sunInit.o
-#else
-SRCS3 = sunInit.c sunInitExt.c \
- sunInitMono.c sunInExMono.c \
- sunInitMulti.c stubs.c
-OBJS3 = sunInit.o sunInitExt.o \
- sunInitMono.o sunInExMono.o \
- sunInitMulti.o stubs.o
-
-DEFINES = $(OS_DEFINES) $(EXT_DEFINES) \
- -UXFree86LOADER -UXF86VIDMODE -UXFreeXDGA \
- -UXF86MISC -UXF86DRI -UXF86BIGFONT
-#endif
-
-SRCS = $(SRCS1) $(SRCS2) $(SRCS3) kbd_mode.c constype.c
-
-OBJS = $(OBJS1) $(OBJS2)
-
- INCLUDES = -I. -I../.. -I../../mi -I../../mfb -I../../cfb -I../../cfb32 \
- -I../../include -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(EXTINCSRC)
- LINTLIBS = ../../dix/llib-ldix.ln ../../os/llib-los.ln \
- ../mfb/llib-lmfb.ln ../mi/llib-lmi.ln ../cfb/llib-lcfb.ln
-
-NormalLibraryObjectRule()
-
-all:: $(OBJS3) kbd_mode constype
-
-lintlib:
-
-NormalLibraryTarget(sun,$(OBJS))
-NormalLintTarget($(SRCS1))
-
-#ifndef i386Architecture
-sunInExMono.o: $(ICONFIGFILES)
-ObjectFromSpecialSource(sunInExMono,../../mi/miinitext, \
- -UPEXEXT -UGLXEXT -UXV -URENDER)
-LinkFile(sunInitExt.c,../../mi/miinitext.c)
-LinkSourceFile(stubs.c,../../Xi)
-ObjectFromSpecialSource(sunInitMono,sunInit,-DSUNMAXDEPTH=1)
-ObjectFromSpecialSource(sunInitMulti,sunInit,-DSUNMAXDEPTH=32)
-#endif
-
-SingleProgramTarget(kbd_mode, kbd_mode.o,,)
-SingleProgramTarget(constype, constype.o,,)
-InstallProgram(kbd_mode,$(BINDIR))
-InstallProgram(constype,$(BINDIR))
-InstallManPage(kbd_mode,$(MANDIR))
-InstallManPage(constype,$(MANDIR))
-InstallManPage(Xsun,$(MANDIR))
-#ifndef i386Architecture
-InstallManPageAliases(Xsun,$(MANDIR),XsunMono)
-InstallManPageAliases(Xsun,$(MANDIR),Xsun24)
-#endif
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/sun/README b/nx-X11/programs/Xserver/hw/sun/README
deleted file mode 100644
index 87ba53584..000000000
--- a/nx-X11/programs/Xserver/hw/sun/README
+++ /dev/null
@@ -1,118 +0,0 @@
-A joint production of:
-
- Adam de Boor University of California, Berkeley
-
- David Rosenthal
- Stuart Marks
- Robin Schaufler
- Mike Schwartz
- Frances Ho
- Geoff Lee
- Mark Opperman Sun Microsystems
-
- Bob Scheifler MIT Laboratory for Computer Science
- Keith Packard
-
-This version of the Sun X11 drivers uses ../mi, ../mfb and ../cfb to support
-the following configurations:
-
- Sun/2 bw2 cg2/3/5
- Sun/3 bw2 cg2/3/4/5
- Sun/4 bw2 cg2/4
- SPARCstation cg3/6
- Sun/386i mono color
-
-The following configurations are NOT supported:
-
- Sun/1 bw1 cg1 (requires separate port)
- Sun/2 gp (use /dev/cgtwo0)
- Sun/3 gp (use /dev/cgtwo0)
- Sun/4 gp (use /dev/cgtwo0)
-
-The mfb and cfb code has been substantially tuned for 1- and 8-bit framebuffers
-(with code for both fast and slow cpu-to-memory ratios). It installs and runs
-on these configurations under SunOS 3.2, 3.4, and 4.0. However, we must stress
-that it is completely unsupported, and if you have problems installing or using
-it you are on your own.
-
-
-Things to check before building:
-
-1) config/sun.cf - set the SunOSMajorVersion and SunOSMinorVersion
- parameters to the right values.
-
-2) config/Project.tmpl - check LIBDIR, FONTDIR, etc.; set
- define LibDir, FontDir, etc. in site.def as required.
-
-
-
-Then build the system by:
-
-1) Go for it. In the top-level directory, type
-
- make World
-
- This takes about forty minutes on a 4/260, and somewhat longer
- on other Suns.
-
-
-2) Go for it. In the top-level directory, type
-
- make install
-
- Otherwise, you'll want to create a bunch of symbolic links to
- the various executables and data files scattered throughout
- the hierarchy.
-
-
-
-3) On the console, or from an rlogin connection, put whatever you
- chose for BINDIR (in Imake.tmpl) in your search path, and then
- start the server:
-
- xinit
- or
- xinit -- -dev /dev/??? [see below]
-
- If it's from the console, you probably want to redirect the
- output thus:
-
- xinit >& /tmp/x11.out
-
-4) xinit should start up an xterm window that acts as a console. When
- this xterm terminates, the xinit will kill the server. You can also
- start up client programs from a terminal or rlogin, but you must
- first set the DISPLAY environment variable:
-
- setenv DISPLAY unix:0
- xterm &
-
-
-5) Make sure that you have special devices in /dev for the appropriate
- framebuffer. See the manual page for Xsun for details or run the
- constype program. VME systems require special .o files when more
- than one of a particular frame buffer type is installed.
-
-
-6) In general, Xsun auto-configures to use all the available framebuffers
- (see the Xsun manual page). In some circumstances, you may need to
- use the -dev switch on the command line to specify a specific device
- to use. In particular, on the GP, GP+, and GP2, you'll need to
- specify -dev /dev/cgtwo0 your xdm Xservers file or your xinit script.
-
-
-7) To shut the server down, send it a Hangup or Terminate signal.
-
-
-8) If X crashes, it will leave the keyboard in a funny state. There is a
- program called "kbd_mode" that will reset the mode of the keyboard.
- "kbd_mode -a" is the appropriate setting for the bare console, and
- "kbd_mode -e" is the appropriate setting for running with SunWindows.
- You may have to issue this command from a terminal or from an rlogin
- connection. If you run from the bare console, you can give the
- command
-
- xinit ; kbd_mode -a
-
- so that the keyboard mode will ALWAYS be set properly when the server
- terminates.
diff --git a/nx-X11/programs/Xserver/hw/sun/Xsun.man b/nx-X11/programs/Xserver/hw/sun/Xsun.man
deleted file mode 100644
index 17c1a9773..000000000
--- a/nx-X11/programs/Xserver/hw/sun/Xsun.man
+++ /dev/null
@@ -1,176 +0,0 @@
-.\" $Xorg: Xsun.man,v 1.4 2001/02/09 02:04:43 xorgcvs Exp $
-.\" Copyright 1988 Sun Microsystems, Inc.
-.\" Copyright 1993, 1994, 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.
-.\"
-.\" $XFree86: xc/programs/Xserver/hw/sun/Xsun.man,v 1.7 2001/01/27 18:20:40 dawes Exp $
-.\"
-.TH XSUN 1 __xorgversion__
-.SH NAME
-Xsun, XsunMono, Xsun24 \- Sun server for X Version 11
-.SH SYNOPSIS
-.B Xsun
-[ option ] ...
-.SH DESCRIPTION
-.I Xsun
-is the server for Version 11 of the X window system on Sun hardware.
-It will normally be started by the \fIxdm(1)\fP daemon or by a script
-that runs the program \fIxinit(1)\fP.
-.SH CONFIGURATIONS
-.PP
-.I XsunMono
-supports the BW2 monochrome frame buffer.
-.I Xsun
-supports the CG2, CG3, CG4, and CG6 8-bit color frame buffers in
-addition to the BW2 monochrome frame buffer. On Solaris 2.5 it also
-supports the TCX as an 8-bit color frame buffer.
-.I Xsun24
-supports the cgeight 24-bit color frame buffer in addition to the
-8-bit color and monochrome frame buffers that
-.I Xsun
-supports.
-.PP
-If specific framebuffer device files aren't specified on the command
-line with the \fI\-dev\fP switch or in the \fIXDEVICE\fP environment
-variable, the server will search for all installed frame buffers and
-will use all those that it finds.
-.PP
-Finally, if no specific framebuffers are found, the generic framebuffer
-interface \fI/dev/fb\fP is used.
-.PP
-.SH KEYBOARDS
-.PP
-Xsun, Xsun24, and XsunMono support the Type-2, Type-3, and many variations
-of the Type-4 and Type-5 keyboards.
-.PP
-Type-4 and Type-5 keyboards feature a key labeled \fIAltGraph\fP which
-is a mode-shift key. The mode-shift key is used to generate the symbols
-painted on the fronts of the keys. The mode-shift key works exactly like
-the \fIShift\fP, \fIControl\fP, \fIAlt\fP, and \fI<Meta>\fP keys.
-.PP
-The ten function keys on the left side of the Type-5 keyboard may be
-considered as having L1..L10 painted on their fronts. Shift-AltGraph
-will cause different keysyms to be generated for some keys, e.g. the
-Type-5 \fISysRq\fP key.
-.PP
-For compatibility with Sun's X11/NeWS server, the F11 and F12 keys may
-be made to generate the equivalent X11/NeWS keysyms by using mode-switch.
-.PP
-For backwards compatibility, the normal and mode-shifted keysyms for
-the ten function keys on the left side of Type-4 and Type-5 keyboards
-may be swapped via command line option. See \fI-swapLkeys\fP.
-.PP
-The X LEDs 1..4 correspond to the NumLock, ScrollLock, Compose, and
-CapsLock LEDs respectively. Pressing the key once turns the corresponding
-LED on. Pressing the key again turns the LED off. Turning an LED on or
-off with e.g. 'xset [-]led [1234]' is equivalent to pressing the
-corresponding key.
-.SH OPTIONS
-.PP
-In addition to the normal server options described in the \fIXserver(1)\fP
-manual page, \fIXsun\fP accepts the following command line switches:
-.TP 8
-.B "\-ar1 \fImilliseconds\fP"
-This option specifies amount of time in milliseconds before which a
-pressed key should begin to autorepeat.
-.TP 8
-.B "\-ar2 \fImilliseconds\fP"
-This option specifies the interval in milliseconds between autorepeats
-of pressed keys.
-.TP 8
-.B \-swapLkeys
-Swaps the normal keysyms for the function keys on the left side of
-Type-4 and Type-5 keyboards with the alternate keysyms, i.e. the keysyms
-painted on the front of the keys.
-.TP 8
-.B \-flipPixels
-The normal pixel values for white and black are 0 and 1 respectively.
-When -flipPixels is specified these values are reversed.
-.TP 8
-.B \-mono
-When used with the \fBcgtwo\fP, this option indicates that the server
-should emulate a monochrome framebuffer instead of the normal color
-framebuffer. When used with the \fBcgfour\fP, this option indicates
-that the monochrome screen should be numbered 0 and the color screen
-numbered 1 (instead of the other way around).
-.TP 8
-.B \-zaphod
-This option disables switching between screens by sliding the mouse off
-the left or right edges. With this disabled, a window manager function
-must be used to switch between screens.
-.TP 8
-.B \-debug
-This option indicates that the server is being run from a debugger, and
-that it should \fBnot\fP put its standard input, output and error files
-into non-blocking mode.
-.TP 8
-.B "\-dev \fIfilename[:filename]...\fP"
-This option specifies the colon separated names of the framebuffer device
-files to be used.
-.TP 8
-.B "\-fbinfo
-This option indicates that the server should enumerate the available
-frame buffers that it will use.
-.SH ENVIRONMENT
-.TP 8
-\fBXDEVICE\fP
-If present, and if no explicit \fB-dev\fP options are given, specifies
-the (colon separated) list of display devices to use.
-.SH "SEE ALSO"
-.PP
-X(__miscmansuffix__), Xserver(1), xdm(1), xinit(1)
-.SH BUGS
-The auto-configuration depends on there being appropriate special files
-in the
-.I /dev
-directory for the framebuffers which are to be used. Extra entries can
-confuse the server. For example, the X/160C in fact has the hardware
-for a monochrome
-.B bwtwo0
-on the CPU board. So if
-.I /dev
-has a special file for
-.IR /dev/bwtwo0 ,
-the server will use it, even though there is no monitor attached to the
-monochrome framebuffer.
-The server will appear to start, but not to paint a cursor, because the
-cursor is on the monochrome frame buffer. The solution is to remove the
-.I /dev
-entries for any device you don't have a monitor for.
-.PP
-There is a bug in pre-FCS operating systems for the Sun-4 which causes
-the server to crash driving a \fBcgtwo\fP.
-.PP
-.SH AUTHORS
-.TP 8
-U. C. Berkeley
-Adam de Boor.
-.TP 8
-Sun Microsystems
-David Rosenthal, Stuart Marks, Robin Schaufler, Mike Schwartz,
-Frances Ho, Geoff Lee, and Mark Opperman.
-.TP 8
-MIT Laboratory for Computer Science
-.br
-Bob Scheifler, Keith Packard, Kaleb Keithley
diff --git a/nx-X11/programs/Xserver/hw/sun/circleset.h b/nx-X11/programs/Xserver/hw/sun/circleset.h
deleted file mode 100644
index c2c38e402..000000000
--- a/nx-X11/programs/Xserver/hw/sun/circleset.h
+++ /dev/null
@@ -1,136 +0,0 @@
-#ifdef DO_FILLED_ARCS
-static unsigned short filled_arcs[16][16] = {
-{ /* 1 */
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 2 */
-B(0x4000),B(0xc000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 3 */
-B(0x0000),B(0x6000),B(0x6000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 4 */
-B(0x2000),B(0x7000),B(0xf000),B(0x7000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 5 */
-B(0x0000),B(0x7800),B(0x7800),B(0x7800),B(0x7800),B(0x0000),B(0x0000),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 6 */
-B(0x1000),B(0x7c00),B(0x7c00),B(0xfc00),B(0x7c00),B(0x7c00),B(0x0000),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 7 */
-B(0x0000),B(0x3c00),B(0x7e00),B(0x7e00),B(0x7e00),B(0x7e00),B(0x3c00),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 8 */
-B(0x0800),B(0x3e00),B(0x7f00),B(0x7f00),B(0xff00),B(0x7f00),B(0x7f00),B(0x3e00),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 9 */
-B(0x0000),B(0x3f00),B(0x7f80),B(0x7f80),B(0x7f80),B(0x7f80),B(0x7f80),B(0x7f80),
-B(0x3f00),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 10 */
-B(0x0400),B(0x3f00),B(0x7f80),B(0x7fc0),B(0x7fc0),B(0xffc0),B(0x7fc0),B(0x7fc0),
-B(0x7f80),B(0x3f00),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 11 */
-B(0x0000),B(0x1f80),B(0x3fc0),B(0x7fe0),B(0x7fe0),B(0x7fe0),B(0x7fe0),B(0x7fe0),
-B(0x7fe0),B(0x3fc0),B(0x1f80),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 12 */
-B(0x0200),B(0x1fc0),B(0x3fe0),B(0x7ff0),B(0x7ff0),B(0x7ff0),B(0xfff0),B(0x7ff0),
-B(0x7ff0),B(0x7ff0),B(0x3fe0),B(0x1fc0),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 13 */
-B(0x0000),B(0x0fc0),B(0x3ff0),B(0x3ff0),B(0x7ff8),B(0x7ff8),B(0x7ff8),B(0x7ff8),
-B(0x7ff8),B(0x7ff8),B(0x3ff0),B(0x3ff0),B(0x0fc0),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 14 */
-B(0x0100),B(0x0fe0),B(0x1ff0),B(0x3ff8),B(0x7ffc),B(0x7ffc),B(0x7ffc),B(0xfffc),
-B(0x7ffc),B(0x7ffc),B(0x7ffc),B(0x3ff8),B(0x1ff0),B(0x0fe0),B(0x0000),B(0x0000),
-},
-{ /* 15 */
-B(0x0000),B(0x0ff0),B(0x1ff8),B(0x3ffc),B(0x7ffe),B(0x7ffe),B(0x7ffe),B(0x7ffe),
-B(0x7ffe),B(0x7ffe),B(0x7ffe),B(0x7ffe),B(0x3ffc),B(0x1ff8),B(0x0ff0),B(0x0000),
-},
-{ /* 16 */
-B(0x0080),B(0x07f0),B(0x1ffc),B(0x3ffe),B(0x3ffe),B(0x7fff),B(0x7fff),B(0x7fff),
-B(0xffff),B(0x7fff),B(0x7fff),B(0x7fff),B(0x3ffe),B(0x3ffe),B(0x1ffc),B(0x07f0),
-},
-};
-#endif /* DO_FILLED_ARCS */
-#ifdef DO_OUTLINE_ARCS
-static unsigned short outline0_arcs[16][16] = {
-{ /* 1 */
-B(0xc000),B(0xc000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 2 */
-B(0xe000),B(0xa000),B(0xe000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 3 */
-B(0x6000),B(0x9000),B(0x9000),B(0x6000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 4 */
-B(0x7000),B(0x8800),B(0x8800),B(0x8800),B(0x7000),B(0x0000),B(0x0000),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 5 */
-B(0x3000),B(0x4800),B(0x8400),B(0x8400),B(0x4800),B(0x3000),B(0x0000),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 6 */
-B(0x3800),B(0x4400),B(0x8200),B(0x8200),B(0x8200),B(0x4400),B(0x3800),B(0x0000),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 7 */
-B(0x3c00),B(0x4200),B(0x8100),B(0x8100),B(0x8100),B(0x8100),B(0x4200),B(0x3c00),
-B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 8 */
-B(0x1c00),B(0x6300),B(0x4100),B(0x8080),B(0x8080),B(0x8080),B(0x4100),B(0x6300),
-B(0x1c00),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 9 */
-B(0x1e00),B(0x2100),B(0x4080),B(0x8040),B(0x8040),B(0x8040),B(0x8040),B(0x4080),
-B(0x2100),B(0x1e00),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 10 */
-B(0x1f00),B(0x2080),B(0x4040),B(0x8020),B(0x8020),B(0x8020),B(0x8020),B(0x8020),
-B(0x4040),B(0x2080),B(0x1f00),B(0x0000),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 11 */
-B(0x0f00),B(0x30c0),B(0x4020),B(0x4020),B(0x8010),B(0x8010),B(0x8010),B(0x8010),
-B(0x4020),B(0x4020),B(0x30c0),B(0x0f00),B(0x0000),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 12 */
-B(0x0f80),B(0x1040),B(0x2020),B(0x4010),B(0x8008),B(0x8008),B(0x8008),B(0x8008),
-B(0x8008),B(0x4010),B(0x2020),B(0x1040),B(0x0f80),B(0x0000),B(0x0000),B(0x0000),
-},
-{ /* 13 */
-B(0x0780),B(0x1860),B(0x2010),B(0x4008),B(0x8004),B(0x8004),B(0x8004),B(0x8004),
-B(0x8004),B(0x8004),B(0x4008),B(0x2010),B(0x1860),B(0x0780),B(0x0000),B(0x0000),
-},
-{ /* 14 */
-B(0x07c0),B(0x1830),B(0x2008),B(0x4004),B(0x4004),B(0x8002),B(0x8002),B(0x8002),
-B(0x8002),B(0x8002),B(0x4004),B(0x4004),B(0x2008),B(0x1830),B(0x07c0),B(0x0000),
-},
-{ /* 15 */
-B(0x07e0),B(0x0810),B(0x300c),B(0x4002),B(0x4002),B(0x8001),B(0x8001),B(0x8001),
-B(0x8001),B(0x8001),B(0x8001),B(0x4002),B(0x4002),B(0x300c),B(0x0810),B(0x07e0),
-},
-{ /* 16 */
-B(0x03e0),B(0x0c18),B(0x1004),B(0x2002),B(0x4001),B(0x4001),B(0x8000),B(0x8000),
-B(0x8000),B(0x8000),B(0x8000),B(0x4001),B(0x4001),B(0x2002),B(0x1004),B(0x0c18),
-},
-};
-#endif /* DO_OUTLINE_ARCS */
diff --git a/nx-X11/programs/Xserver/hw/sun/constype.c b/nx-X11/programs/Xserver/hw/sun/constype.c
deleted file mode 100644
index 06a6c345c..000000000
--- a/nx-X11/programs/Xserver/hw/sun/constype.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/sun/constype.c,v 1.3 2005/09/28 17:07:55 alanc Exp $
- * $Xorg: constype.c,v 1.3 2000/08/17 19:48:29 cpqbld Exp $
- *
- * consoletype - utility to print out string identifying Sun console type
- *
- * Copyright 1988 SRI
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of SRI not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. SRI makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * Author: Doug Moran, SRI
- */
-/* $XFree86: xc/programs/Xserver/hw/sun/constype.c,v 3.8 2003/10/07 21:40:07 herrb Exp $ */
-
-/*
-SUN-SPOTS DIGEST Thursday, 17 March 1988 Volume 6 : Issue 31
-
-Date: Wed, 2 Mar 88 14:50:26 PST
-From: Doug Moran <moran@ai.sri.com>
-Subject: Program to determine console type
-
-There have been several requests in this digest for programs to determine
-the type of the console. Below is a program that I wrote to produce an
-identifying string (I start suntools in my .login file and use this pgm to
-determine which arguments to use).
-
-Caveat: my cluster has only a few of these monitor types, so the pgm has
-not been fully tested.
-
-Note on coding style: the function wu_fbid is actually located in a local
-library, accounting for what otherwise might appear to be a strange coding
-style.
-*/
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#else
-# if defined(SVR4) || defined(CSRG_BASED)
-# define STDC_HEADERS 1
-# endif
-# if defined(SVR4) || defined(__bsdi__)
-# define HAVE_SYS_FBIO_H 1
-# if defined(SVR4) && defined(sun)
-# define HAVE_SYS_VISUAL_IO_H 1
-# endif
-# elif defined(CSRG_BASED)
-# define HAVE_MACHINE_FBIO_H
-# endif
-#endif
-
-#include <stdio.h>
-#ifdef STDC_HEADERS
-#include <string.h>
-#else
-/* SunOS */
-#include <strings.h>
-#endif
-#include <unistd.h>
-
-static int wu_fbid(const char *devname, char **fbname, int *fbtype);
-
-int
-main (int argc, char **argv)
-{
- int fbtype = -1;
- char *fbname, *dev;
- int print_num = 0;
- int error;
-
- if (argc > 1 && argv[1][0] == '/') {
- dev = argv[1];
- argc--; argv++;
- } else
- dev = "/dev/fb";
- error = wu_fbid(dev, &fbname, &fbtype );
- if (argc > 1 && strncmp (argv[1], "-num", strlen(argv[1])) == 0)
- print_num = 1;
-
- printf ("%s", fbname ? fbname : "tty");
- if (print_num) {
- printf (" %d", fbtype);
- }
- putchar ('\n');
- return error;
-}
-
-#include <sys/ioctl.h>
-#include <sys/file.h>
-#ifdef HAVE_SYS_FBIO_H
-# include <fcntl.h>
-# include <sys/fbio.h>
-# ifdef HAVE_SYS_VISUAL_IO_H
-/* VIS_GETIDENTIFIER ioctl added in Solaris 2.3 */
-# include <sys/visual_io.h>
-# endif
-#else
-# ifndef HAVE_MACHINE_FBIO_H
-# include <sun/fbio.h>
-# else
-# include <machine/fbio.h>
-# endif
-#endif
-
-/* Sun doesn't see fit to update <sys/fbio.h> to reflect the addition
- * of the TCX
- */
-#define XFBTYPE_TCX 21
-#define XFBTYPE_LASTPLUSONE 22
-
-/* decoding as of Release 3.4 : fbio.h 1.3 87/01/09 SMI */
- /* the convention for entries in this table is to translate the
- * macros for frame buffer codes (in <sun/fbio.h>) to short names
- * thus:
- * FBTYPE_SUNxBW becomes bwx
- * FBTYPE_SUNxCOLOR becomes cgx
- * FBTYPE_SUNxGP becomes gpx
- * FBTYPE_NOTSUN[1-9] becomes ns[A-J]
- */
-static char *decode_fb[] = {
- "bw1", "cg1",
- "bw2", "cg2",
- "gp2",
- "cg5", "cg3",
- "cg8", "cg4",
- "nsA", "nsB", "nsC",
-#ifdef FBTYPE_SUNFAST_COLOR
- "gx/cg6",
-#endif
-#ifdef FBTYPE_SUNROP_COLOR
- "rop",
-#endif
-#ifdef FBTYPE_SUNFB_VIDEO
- "vid",
-#endif
-#ifdef FBTYPE_SUNGIFB
- "gifb",
-#endif
-#ifdef FBTYPE_SUNGPLAS
- "plas",
-#endif
-#ifdef FBTYPE_SUNGP3
- "gp3/cg12",
-#endif
-#ifdef FBTYPE_SUNGT
- "gt",
-#endif
-#ifdef FBTYPE_SUNLEO
- "leo/zx",
-#endif
-#ifdef FBTYPE_MDICOLOR
- "mdi/cg14",
-#endif
- };
-
-static int
-wu_fbid(const char* devname, char** fbname, int* fbtype)
-{
- struct fbgattr fbattr;
- int fd, ioctl_ret;
-#ifdef VIS_GETIDENTIFIER
- int vistype;
- struct vis_identifier fbid;
-#endif
-
- if ( (fd = open(devname, O_RDWR, 0)) == -1 ) {
- *fbname = "unable to open fb";
- return 2;
- }
-
-#ifdef VIS_GETIDENTIFIER
- if ((vistype = ioctl(fd, VIS_GETIDENTIFIER, &fbid)) >= 0) {
- *fbname = fbid.name;
- *fbtype = vistype;
- close(fd);
- return 0;
- }
-#endif
-
- /* FBIOGATTR fails for early frame buffer types */
- if ((ioctl_ret = ioctl(fd,FBIOGATTR,&fbattr))<0) /*success=>0(false)*/
- ioctl_ret = ioctl(fd, FBIOGTYPE, &fbattr.fbtype);
- close(fd);
- if ( ioctl_ret == -1 ) {
- *fbname = "ioctl on fb failed";
- return 2;
- }
- *fbtype = fbattr.fbtype.fb_type;
- /* The binary is obsolete and needs to be re-compiled:
- * the ioctl returned a value beyond what was possible
- * when the program was compiled */
- if (fbattr.fbtype.fb_type>=FBTYPE_LASTPLUSONE) {
- if (fbattr.fbtype.fb_type == XFBTYPE_TCX) {
- *fbname = "tcx";
- return 0;
- } else {
- *fbname = "unk";
- return 1;
- }
- }
- /* The source is obsolete. The table "decode_fb" does not
- * have entries for some of the values returned by the ioctl.
- * Compare <sun/fbio.h> to the entries in "decode_fb" */
- if ( decode_fb[fbattr.fbtype.fb_type] == NULL ) {
- *fbname = "unk";
- return 1;
- }
- *fbname = decode_fb[fbattr.fbtype.fb_type];
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/sun/constype.man b/nx-X11/programs/Xserver/hw/sun/constype.man
deleted file mode 100644
index f360825e3..000000000
--- a/nx-X11/programs/Xserver/hw/sun/constype.man
+++ /dev/null
@@ -1,80 +0,0 @@
-.\" $Xorg: constype.man,v 1.3 2000/08/17 19:48:29 cpqbld Exp $
-.\" $XdotOrg: xc/programs/Xserver/hw/sun/constype.man,v 1.3 2005/09/28 17:07:55 alanc Exp $
-.\" $XFree86$
-.\"
-.TH CONSTYPE 1 __xorgversion__
-.SH NAME
-constype \- print type of Sun console
-.SH SYNOPSIS
-.B "constype"
-[
-.I device_name
-] [
-.B \-num
-]
-.SH DESCRIPTION
-.B constype
-prints on the standard output the Sun code for the type of display
-that the specified device is.
-The types output include these:
-.sp 2
-.in +0.5i
-.nf
-bw? Black and White, where ? is 1-4. (eg) 3-50s are bw2
-cg? Colour Graphics display, where ? is 1-6, 8, 12
-gp? Optional Graphics Processor board, where ? is 1-2
-ns? Not Sun display \(em where ? is A-J
-.fi
-.in -0.5i
-.sp 2
-If the OS and device support the VIS_GETIDENTIFIER ioctl, the value
-returned from the ioctl is the value printed by constype. Sample types
-output for these include:
-.sp 2
-.in +0.5i
-.nf
-SUNWffb Sun Creator 3D (ffb) Graphics Accelerator
-SUNWm64 Sun PGX8, PGX24 or PGX64 Frame Buffer
-SUNWtext Generic vgatext console for Solaris x86 graphics devices without specific kernel drivers
-.fi
-.in -0.5i
-.sp 2
-This is useful in determining startup values and defaults for window
-systems.
-.LP
-The
-.I device_name
-argument, if given, is the device to examine.
-If not given,
-.I /dev/fb
-is used.
-.LP
-The
-.B \-num
-option causes
-.I constype
-to follow the type keyword with the numeric value of that type,
-as returned by the FBIOGATTR or FBIOGTYPE ioctl and defined in fbio.h.
-This is useful if the type is not recognized by the program.
-.SH "EXIT STATUS"
-The program exits with status 0 if it identified a known console type,
-1 if the type was unknown, and 2 if the device could not be opened or
-another error occurred.
-.SH BUGS
-Not tested on all frame buffer types
-.SH "SEE ALSO"
-.BR visual_io (7I)
-.SH COPYRIGHT
-Copyright 1988, SRI
-.PP
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted, provided
-that the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the name of SRI not be used in advertising or
-publicity pertaining to distribution of the software without specific,
-written prior permission. SRI makes no representations about the
-suitability of this software for any purpose. It is provided "as is"
-without express or implied warranty.
-.SH AUTHOR
-Doug Moran <moran@ai.sri.com>
diff --git a/nx-X11/programs/Xserver/hw/sun/kbd_mode.c b/nx-X11/programs/Xserver/hw/sun/kbd_mode.c
deleted file mode 100644
index b59143ac8..000000000
--- a/nx-X11/programs/Xserver/hw/sun/kbd_mode.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/* $Xorg: kbd_mode.c,v 1.3 2000/08/17 19:48:29 cpqbld Exp $ */
-/* $XdotOrg: xc/programs/Xserver/hw/sun/kbd_mode.c,v 1.3 2005/09/28 01:57:47 alanc Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-/* $XFree86: kbd_mode.c,v 3.11 2002/10/23 16:23:36 tsi Exp $ */
-
-/*
-static char sccsid[] = "@(#)kbd_mode.c 7.1 87/04/13";
- */
-
-/*
- * Copyright 1986 by Sun Microsystems, Inc.
- *
- * kbd_mode: set keyboard encoding mode
- */
-
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/ioctl.h>
-#if defined(SVR4) || defined(__SVR4) || defined(__bsdi__)
-#include <fcntl.h>
-#ifndef __bsdi__
-#include <sys/kbio.h>
-#include <sys/kbd.h>
-#else
-#include <unistd.h>
-#include </sys/sparc/dev/kbio.h>
-#include </sys/sparc/dev/kbd.h>
-#endif
-#else
-#ifndef CSRG_BASED
-#include <sundev/kbio.h>
-#include <sundev/kbd.h>
-#else
-#include <machine/kbio.h>
-#include <machine/kbd.h>
-#endif
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-static void die(char*);
-static void usage(void);
-static int kbd_fd;
-
-int
-main(argc, argv)
- int argc;
- char** argv;
-{
- int code = 0, translate, direct = -1;
- char led;
- int click;
-
- if ((kbd_fd = open("/dev/kbd", O_RDONLY, 0)) < 0) {
- die("Couldn't open /dev/kbd");
- }
- argc--; argv++;
- if (argc-- && **argv == '-') {
- code = *(++*argv);
- } else {
- usage();
- }
- switch (code) {
- case 'a':
- case 'A':
- translate = TR_ASCII;
- direct = 0;
- break;
- case 'e':
- case 'E':
- translate = TR_EVENT;
- break;
- case 'n':
- case 'N':
- translate = TR_NONE;
- break;
- case 'u':
- case 'U':
- translate = TR_UNTRANS_EVENT;
- break;
- default:
- usage();
- }
-#ifdef KIOCSLED
- led = 0;
- if (ioctl(kbd_fd, KIOCSLED, &led))
- die("Couldn't set LEDs");
-#endif
-#ifdef KIOCCMD
- click = KBD_CMD_NOCLICK;
- if (ioctl(kbd_fd, KIOCCMD, &click))
- die("Couldn't set click");
-#endif
- if (ioctl(kbd_fd, KIOCTRANS, (caddr_t) &translate))
- die("Couldn't set translation");
- if (direct != -1 && ioctl(kbd_fd, KIOCSDIRECT, (caddr_t) &direct))
- die("Couldn't set redirect");
- return 0;
-}
-
-static void
-die(char *msg)
-{
- fprintf(stderr, "%s\n", msg);
- exit(1);
-}
-
-static void
-usage(void)
-{
- int translate;
-
- if (ioctl(kbd_fd, KIOCGTRANS, (caddr_t) &translate)) {
- die("Couldn't inquire current translation");
- }
- fprintf(stderr, "kbd_mode {-a | -e | -n | -u }\n");
- fprintf(stderr, "\tfor ascii, encoded (normal) SunView events,\n");
- fprintf(stderr, " \tnon-encoded, or unencoded SunView events, resp.\n");
- fprintf(stderr, "Current mode is %s.\n",
- ( translate == 0 ? "n (non-translated bytes)" :
- ( translate == 1 ? "a (ascii bytes)" :
- ( translate == 2 ? "e (encoded events)" :
- /* translate == 3 */ "u (unencoded events)"))));
- exit(1);
-}
-
-
diff --git a/nx-X11/programs/Xserver/hw/sun/kbd_mode.man b/nx-X11/programs/Xserver/hw/sun/kbd_mode.man
deleted file mode 100644
index 367b4fc9a..000000000
--- a/nx-X11/programs/Xserver/hw/sun/kbd_mode.man
+++ /dev/null
@@ -1,53 +0,0 @@
-.\" $Xorg: kbd_mode.man,v 1.4 2001/02/09 02:04:43 xorgcvs Exp $
-.\" Copyright 1987 Sun Microsystems, Inc.
-.\" Copyright 1993, 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.
-.\"
-.\" $XFree86: xc/programs/Xserver/hw/sun/kbd_mode.man,v 1.6 2001/01/27 18:20:41 dawes Exp $
-.\"
-.TH KBD_MODE 1 __xorgversion__
-.SH NAME
-kbd_mode \- recover the Sun console keyboard
-.SH SYNOPSIS
-.B kbd_mode
-[ -a -e -n -u ]
-.SH DESCRIPTION
-.I Kbd_mode
-resets the Sun console keyboard to a rational state.
-.SH OPTIONS
-The following options are supported, see \fIkb(4S)\fP for details:
-.TP 8
-.B \-a
-Causes ASCII to be reported.
-.TP 8
-.B \-e
-Causes \fIFirm_events\fP to be reported.
-.TP 8
-.B \-n
-Causes up/down key codes to be reported.
-.TP 8
-.B \-u
-Causes undecoded keyboard values to be reported.
-.SH SEE ALSO
-kb(4S)
diff --git a/nx-X11/programs/Xserver/hw/sun/sun.h b/nx-X11/programs/Xserver/hw/sun/sun.h
deleted file mode 100644
index d01d0a1c2..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sun.h
+++ /dev/null
@@ -1,446 +0,0 @@
-
-/* $Xorg: sun.h,v 1.3 2000/08/17 19:48:29 cpqbld Exp $ */
-
-/*-
- * Copyright (c) 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/* $XFree86: xc/programs/Xserver/hw/sun/sun.h,v 3.12 2001/07/25 15:05:01 dawes Exp $ */
-
-#ifndef _SUN_H_
-#define _SUN_H_
-
-/* X headers */
-#include <X11/Xos.h>
-#undef index /* don't mangle silly Sun structure member names */
-#include <X11/X.h>
-#include <X11/Xproto.h>
-
-/* general system headers */
-#ifndef NOSTDHDRS
-# include <stdlib.h>
-#else
-# include <malloc.h>
-extern char *getenv();
-#endif
-
-/* system headers common to both SunOS and Solaris */
-#include <sys/param.h>
-#include <sys/file.h>
-#include <sys/filio.h>
-#include <sys/ioctl.h>
-#include <sys/resource.h>
-
-#ifdef SVR4
-# ifdef X_POSIX_C_SOURCE
-# define _POSIX_C_SOURCE X_POSIX_C_SOURCE
-# include <signal.h>
-# undef _POSIX_C_SOURCE
-# else
-# define _POSIX_SOURCE
-# include <signal.h>
-# undef _POSIX_SOURCE
-# endif
-#endif
-
-#include <fcntl.h>
-
-#ifndef __bsdi__
-# ifndef CSRG_BASED
-# ifndef i386
-# include <poll.h>
-# else
-# include <sys/poll.h>
-# endif
-# endif
-#else
-# include <unistd.h>
-#endif
-
-#include <errno.h>
-#include <memory.h>
-#include <signal.h>
-
-
-/*
- * Sun specific headers Sun moved in Solaris, and are different for NetBSD.
- *
- * Even if only needed by one source file, I have put them here
- * to simplify finding them...
- */
-#ifdef SVR4
-# include <sys/fbio.h>
-# include <sys/kbd.h>
-# include <sys/kbio.h>
-# include <sys/msio.h>
-# include <sys/vuid_event.h>
-# include <sys/memreg.h>
-# include <stropts.h>
-# define usleep(usec) poll((struct pollfd *) 0, (size_t) 0, usec / 1000)
-#else
-# ifndef CSRG_BASED
-# include <sun/fbio.h>
-# include <sundev/kbd.h>
-# include <sundev/kbio.h>
-# include <sundev/msio.h>
-# include <sundev/vuid_event.h>
-# include <pixrect/pixrect.h>
-# include <pixrect/memreg.h>
-extern int ioctl();
-extern int getrlimit();
-extern int setrlimit();
-extern int getpagesize();
-# else
-# if defined(CSRG_BASED) && !defined(__bsdi__)
-# include <machine/fbio.h>
-# include <machine/kbd.h>
-# include <machine/kbio.h>
-# include <machine/vuid_event.h>
-# endif
-# ifdef __bsdi__
-# include <sys/fbio.h>
-# include </sys/sparc/dev/kbd.h>
-# include </sys/sparc/dev/kbio.h>
-# include </sys/sparc/dev/vuid_event.h>
-# endif
-# endif
-#endif
-
-/*
- * Sun doesn't see fit to add the TCX to <sys/fbio.h>
- */
-#ifndef SVR4
-/* On SunOS 4.1.x the TCX pretends to be a CG3 */
-#define XFBTYPE_LASTPLUSONE FBTYPE_LASTPLUSONE
-#else
-#define XFBTYPE_TCX 21
-#define XFBTYPE_LASTPLUSONE 22
-#endif
-
-extern int gettimeofday();
-
-/*
- * Server specific headers
- */
-#include "misc.h"
-#undef abs /* don't munge function prototypes in headers, sigh */
-#include "scrnintstr.h"
-#ifdef NEED_EVENTS
-# include "inputstr.h"
-#endif
-#include "input.h"
-#include "colormapst.h"
-#include "colormap.h"
-#include "cursorstr.h"
-#include "cursor.h"
-#include "dixstruct.h"
-#include "dix.h"
-#include "opaque.h"
-#include "resource.h"
-#include "servermd.h"
-#include "windowstr.h"
-
-/*
- * ddx specific headers
- */
-#ifndef PSZ
-#define PSZ 8
-#endif
-
-#include "mi/mibstore.h"
-#include "mi/mipointer.h"
-
-extern int monitorResolution;
-
-
-/* Frame buffer devices */
-#ifdef SVR4
-# define CGTWO0DEV "/dev/fbs/cgtwo0"
-# define CGTWO1DEV "/dev/fbs/cgtwo1"
-# define CGTWO2DEV "/dev/fbs/cgtwo2"
-# define CGTWO3DEV "/dev/fbs/cgtwo3"
-# define CGTHREE0DEV "/dev/fbs/cgthree0"
-# define CGTHREE1DEV "/dev/fbs/cgthree1"
-# define CGTHREE2DEV "/dev/fbs/cgthree2"
-# define CGTHREE3DEV "/dev/fbs/cgthree3"
-# define CGFOUR0DEV "/dev/fbs/cgfour0"
-# define CGSIX0DEV "/dev/fbs/cgsix0"
-# define CGSIX1DEV "/dev/fbs/cgsix1"
-# define CGSIX2DEV "/dev/fbs/cgsix2"
-# define CGSIX3DEV "/dev/fbs/cgsix3"
-# define BWTWO0DEV "/dev/fbs/bwtwo0"
-# define BWTWO1DEV "/dev/fbs/bwtwo1"
-# define BWTWO2DEV "/dev/fbs/bwtwo2"
-# define BWTWO3DEV "/dev/fbs/bwtwo3"
-# define CGEIGHT0DEV "/dev/fbs/cgeight0"
-# define TCX0DEV "/dev/fbs/tcx0"
-#else
-# define CGTWO0DEV "/dev/cgtwo0"
-# define CGTWO1DEV "/dev/cgtwo1"
-# define CGTWO2DEV "/dev/cgtwo2"
-# define CGTWO3DEV "/dev/cgtwo3"
-# define CGTHREE0DEV "/dev/cgthree0"
-# define CGTHREE1DEV "/dev/cgthree1"
-# define CGTHREE2DEV "/dev/cgthree2"
-# define CGTHREE3DEV "/dev/cgthree3"
-# define CGFOUR0DEV "/dev/cgfour0"
-# define CGSIX0DEV "/dev/cgsix0"
-# define CGSIX1DEV "/dev/cgsix1"
-# define CGSIX2DEV "/dev/cgsix2"
-# define CGSIX3DEV "/dev/cgsix3"
-# define BWTWO0DEV "/dev/bwtwo0"
-# define BWTWO1DEV "/dev/bwtwo1"
-# define BWTWO2DEV "/dev/bwtwo2"
-# define BWTWO3DEV "/dev/bwtwo3"
-# define CGEIGHT0DEV "/dev/cgeight0"
-#endif
-
-/*
- * MAXEVENTS is the maximum number of events the mouse and keyboard functions
- * will read on a given call to their GetEvents vectors.
- */
-#define MAXEVENTS 32
-
-/*
- * Data private to any sun keyboard.
- */
-typedef struct {
- int fd;
- int type; /* Type of keyboard */
- int layout; /* The layout of the keyboard */
- int click; /* kbd click save state */
- Leds leds; /* last known LED state */
-} sunKbdPrivRec, *sunKbdPrivPtr;
-
-extern sunKbdPrivRec sunKbdPriv;
-
-/*
- * Data private to any sun pointer device.
- */
-typedef struct {
- int fd;
- int bmask; /* last known button state */
-} sunPtrPrivRec, *sunPtrPrivPtr;
-
-extern sunPtrPrivRec sunPtrPriv;
-
-typedef struct {
- BYTE key;
- CARD8 modifiers;
-} SunModmapRec;
-
-typedef struct {
- int width, height;
- Bool has_cursor;
- CursorPtr pCursor; /* current cursor */
-} sunCursorRec, *sunCursorPtr;
-
-typedef struct {
- ColormapPtr installedMap;
- CloseScreenProcPtr CloseScreen;
- void (*UpdateColormap)();
- void (*GetColormap)();
- sunCursorRec hardwareCursor;
- Bool hasHardwareCursor;
-} sunScreenRec, *sunScreenPtr;
-
-#define GetScreenPrivate(s) ((sunScreenPtr) ((s)->devPrivates[sunScreenIndex].ptr))
-#define SetupScreen(s) sunScreenPtr pPrivate = GetScreenPrivate(s)
-
-typedef struct {
- unsigned char* fb; /* Frame buffer itself */
- int fd; /* frame buffer for ioctl()s, */
- struct fbtype info; /* Frame buffer characteristics */
- void (*EnterLeave)();/* screen switch */
- unsigned char* fbPriv; /* fbattr stuff, for the real type */
-} fbFd;
-
-typedef Bool (*sunFbInitProc)(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-
-typedef struct {
- sunFbInitProc init; /* init procedure for this fb */
- char* name; /* /usr/include/fbio names */
-} sunFbDataRec;
-
-#ifdef XKB
-extern Bool noXkbExtension;
-#endif
-
-extern Bool sunAutoRepeatHandlersInstalled;
-extern long sunAutoRepeatInitiate;
-extern long sunAutoRepeatDelay;
-extern sunFbDataRec sunFbData[];
-extern fbFd sunFbs[];
-extern Bool sunSwapLkeys;
-extern Bool sunFlipPixels;
-extern Bool sunActiveZaphod;
-extern Bool sunFbInfo;
-extern Bool sunCG4Frob;
-extern Bool sunNoGX;
-extern int sunScreenIndex;
-extern int* sunProtected;
-
-extern Bool sunCursorInitialize(
- ScreenPtr /* pScreen */
-);
-
-extern void sunDisableCursor(
- ScreenPtr /* pScreen */
-);
-
-extern int sunChangeKbdTranslation(
- int /* fd */,
- Bool /* makeTranslated */
-);
-
-extern void sunNonBlockConsoleOff(
-#if defined(SVR4) || defined(CSRG_BASED)
- void
-#else
- char* /* arg */
-#endif
-);
-
-extern void sunEnqueueEvents(
- void
-);
-
-extern int sunGXInit(
- ScreenPtr /* pScreen */,
- fbFd* /* fb */
-);
-
-extern Bool sunSaveScreen(
- ScreenPtr /* pScreen */,
- int /* on */
-);
-
-extern Bool sunScreenInit(
- ScreenPtr /* pScreen */
-);
-
-extern pointer sunMemoryMap(
- size_t /* len */,
- off_t /* off */,
- int /* fd */
-);
-
-extern Bool sunScreenAllocate(
- ScreenPtr /* pScreen */
-);
-
-extern Bool sunInitCommon(
- int /* scrn */,
- ScreenPtr /* pScrn */,
- off_t /* offset */,
- Bool (* /* init1 */)(),
- void (* /* init2 */)(),
- Bool (* /* cr_cm */)(),
- Bool (* /* save */)(),
- int /* fb_off */
-);
-
-extern Firm_event* sunKbdGetEvents(
- int /* fd */,
- Bool /* on */,
- int* /* pNumEvents */,
- Bool* /* pAgain */
-);
-
-extern Firm_event* sunMouseGetEvents(
- int /* fd */,
- Bool /* on */,
- int* /* pNumEvents */,
- Bool* /* pAgain */
-);
-
-extern void sunKbdEnqueueEvent(
- DeviceIntPtr /* device */,
- Firm_event* /* fe */
-);
-
-extern void sunMouseEnqueueEvent(
- DeviceIntPtr /* device */,
- Firm_event* /* fe */
-);
-
-extern int sunKbdProc(
- DeviceIntPtr /* pKeyboard */,
- int /* what */
-);
-
-extern int sunMouseProc(
- DeviceIntPtr /* pMouse */,
- int /* what */
-);
-
-extern void sunKbdWait(
- void
-);
-
-/*-
- * TVTOMILLI(tv)
- * Given a struct timeval, convert its time into milliseconds...
- */
-#define TVTOMILLI(tv) (((tv).tv_usec/1000)+((tv).tv_sec*1000))
-
-extern Bool sunCfbSetupScreen(
- ScreenPtr /* pScreen */,
- pointer /* pbits */, /* pointer to screen bitmap */
- int /* xsize */, /* in pixels */
- int /* ysize */,
- int /* dpix */, /* dots per inch */
- int /* dpiy */, /* dots per inch */
- int /* width */, /* pixel width of frame buffer */
- int /* bpp */ /* bits per pixel of root */
-);
-
-extern Bool sunCfbFinishScreenInit(
- ScreenPtr /* pScreen */,
- pointer /* pbits */, /* pointer to screen bitmap */
- int /* xsize */, /* in pixels */
- int /* ysize */,
- int /* dpix */, /* dots per inch */
- int /* dpiy */, /* dots per inch */
- int /* width */, /* pixel width of frame buffer */
- int /* bpp */ /* bits per pixel of root */
-);
-
-extern Bool sunCfbScreenInit(
- ScreenPtr /* pScreen */,
- pointer /* pbits */, /* pointer to screen bitmap */
- int /* xsize */, /* in pixels */
- int /* ysize */,
- int /* dpix */, /* dots per inch */
- int /* dpiy */, /* dots per inch */
- int /* width */, /* pixel width of frame buffer */
- int /* bpp */ /* bits per pixel of root */
-);
-
-extern void sunInstallColormap(
- ColormapPtr /* cmap */
-);
-
-extern void sunUninstallColormap(
- ColormapPtr /* cmap */
-);
-
-extern int sunListInstalledColormaps(
- ScreenPtr /* pScreen */,
- Colormap* /* pCmapList */
-);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/sun/sunCfb.c b/nx-X11/programs/Xserver/hw/sun/sunCfb.c
deleted file mode 100644
index 5791e1e82..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunCfb.c
+++ /dev/null
@@ -1,517 +0,0 @@
-
-/* $Xorg: sunCfb.c,v 1.5 2001/02/09 02:04:43 xorgcvs Exp $ */
-
-/*
-Copyright 1990, 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 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/* $XFree86: sunCfb.c,v 3.14 2001/12/14 19:59:42 dawes Exp $ */
-
-/*
- * Copyright 1987 by the Regents of the University of California
- * Copyright 1987 by Adam de Boor, UC Berkeley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/****************************************************************/
-/* Modified from sunCG4C.c for X11R3 by Tom Jarmolowski */
-/****************************************************************/
-
-/*
- * Copyright 1991, 1992, 1993 Kaleb S. Keithley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. Kaleb S. Keithley makes no
- * representations about the suitability of this software for
- * any purpose. It is provided "as is" without express or
- * implied warranty.
- */
-
-#include "sun.h"
-#include "cfb/cfb.h"
-#include "mi/miline.h"
-
-#define GXZEROLINEBIAS (OCTANT1 | OCTANT3 | OCTANT4 | OCTANT6)
-
-static void CGUpdateColormap(pScreen, dex, count, rmap, gmap, bmap)
- ScreenPtr pScreen;
- int dex, count;
- u_char *rmap, *gmap, *bmap;
-{
- struct fbcmap sunCmap;
-
- sunCmap.index = dex;
- sunCmap.count = count;
- sunCmap.red = &rmap[dex];
- sunCmap.green = &gmap[dex];
- sunCmap.blue = &bmap[dex];
-
- if (ioctl(sunFbs[pScreen->myNum].fd, FBIOPUTCMAP, &sunCmap) < 0) {
- Error("CGUpdateColormap");
- FatalError( "CGUpdateColormap: FBIOPUTCMAP failed\n" );
- }
-}
-
-static void CGGetColormap(pScreen, dex, count, rmap, gmap, bmap)
- ScreenPtr pScreen;
- int dex, count;
- u_char *rmap, *gmap, *bmap;
-{
- struct fbcmap sunCmap;
-
- sunCmap.index = dex;
- sunCmap.count = count;
- sunCmap.red = &rmap[dex];
- sunCmap.green = &gmap[dex];
- sunCmap.blue = &bmap[dex];
-
- if (ioctl(sunFbs[pScreen->myNum].fd, FBIOGETCMAP, &sunCmap) < 0) {
- Error("CGGetColormap");
- FatalError( "CGGetColormap: FBIOGETCMAP failed\n" );
- }
-}
-
-void sunInstallColormap(cmap)
- ColormapPtr cmap;
-{
- SetupScreen(cmap->pScreen);
- register int i;
- register Entry *pent;
- register VisualPtr pVisual = cmap->pVisual;
- u_char rmap[256], gmap[256], bmap[256];
- unsigned long rMask, gMask, bMask;
- int oRed, oGreen, oBlue;
-
- if (cmap == pPrivate->installedMap)
- return;
- if (pPrivate->installedMap)
- WalkTree(pPrivate->installedMap->pScreen, TellLostMap,
- (pointer) &(pPrivate->installedMap->mid));
- if ((pVisual->class | DynamicClass) == DirectColor) {
- if (pVisual->ColormapEntries < 256) {
- rMask = pVisual->redMask;
- gMask = pVisual->greenMask;
- bMask = pVisual->blueMask;
- oRed = pVisual->offsetRed;
- oGreen = pVisual->offsetGreen;
- oBlue = pVisual->offsetBlue;
- } else {
- rMask = gMask = bMask = 255;
- oRed = oGreen = oBlue = 0;
- }
- for (i = 0; i < 256; i++) {
- rmap[i] = cmap->red[(i & rMask) >> oRed].co.local.red >> 8;
- gmap[i] = cmap->green[(i & gMask) >> oGreen].co.local.green >> 8;
- bmap[i] = cmap->blue[(i & bMask) >> oBlue].co.local.blue >> 8;
- }
- } else {
- (*pPrivate->GetColormap) (cmap->pScreen, 0, 256, rmap, gmap, bmap);
- for (i = 0, pent = cmap->red;
- i < pVisual->ColormapEntries;
- i++, pent++) {
- if (pent->fShared) {
- rmap[i] = pent->co.shco.red->color >> 8;
- gmap[i] = pent->co.shco.green->color >> 8;
- bmap[i] = pent->co.shco.blue->color >> 8;
- }
- else if (pent->refcnt != 0) {
- rmap[i] = pent->co.local.red >> 8;
- gmap[i] = pent->co.local.green >> 8;
- bmap[i] = pent->co.local.blue >> 8;
- }
- }
- }
- pPrivate->installedMap = cmap;
- (*pPrivate->UpdateColormap) (cmap->pScreen, 0, 256, rmap, gmap, bmap);
- WalkTree(cmap->pScreen, TellGainedMap, (pointer) &(cmap->mid));
-}
-
-void sunUninstallColormap(cmap)
- ColormapPtr cmap;
-{
- SetupScreen(cmap->pScreen);
- if (cmap == pPrivate->installedMap) {
- Colormap defMapID = cmap->pScreen->defColormap;
-
- if (cmap->mid != defMapID) {
- ColormapPtr defMap = (ColormapPtr) LookupIDByType(defMapID,
- RT_COLORMAP);
-
- if (defMap)
- (*cmap->pScreen->InstallColormap)(defMap);
- else
- ErrorF("sunFbs: Can't find default colormap\n");
- }
- }
-}
-
-int sunListInstalledColormaps(pScreen, pCmapList)
- ScreenPtr pScreen;
- Colormap *pCmapList;
-{
- SetupScreen(pScreen);
- *pCmapList = pPrivate->installedMap->mid;
- return (1);
-}
-
-static void CGStoreColors(pmap, ndef, pdefs)
- ColormapPtr pmap;
- int ndef;
- xColorItem *pdefs;
-{
- SetupScreen(pmap->pScreen);
- u_char rmap[256], gmap[256], bmap[256];
- xColorItem expanddefs[256];
- register int i;
-
- if (pPrivate->installedMap != NULL && pPrivate->installedMap != pmap)
- return;
- if ((pmap->pVisual->class | DynamicClass) == DirectColor) {
- ndef = cfbExpandDirectColors(pmap, ndef, pdefs, expanddefs);
- pdefs = expanddefs;
- }
- while (ndef--) {
- i = pdefs->pixel;
- rmap[i] = pdefs->red >> 8;
- gmap[i] = pdefs->green >> 8;
- bmap[i] = pdefs->blue >> 8;
- (*pPrivate->UpdateColormap) (pmap->pScreen, i, 1, rmap, gmap, bmap);
- pdefs++;
- }
-}
-
-static void CGScreenInit (pScreen)
- ScreenPtr pScreen;
-{
-#ifndef STATIC_COLOR /* { */
- SetupScreen (pScreen);
- pScreen->InstallColormap = sunInstallColormap;
- pScreen->UninstallColormap = sunUninstallColormap;
- pScreen->ListInstalledColormaps = sunListInstalledColormaps;
- pScreen->StoreColors = CGStoreColors;
- pPrivate->UpdateColormap = CGUpdateColormap;
- pPrivate->GetColormap = CGGetColormap;
- if (sunFlipPixels) {
- Pixel pixel = pScreen->whitePixel;
- pScreen->whitePixel = pScreen->blackPixel;
- pScreen->blackPixel = pixel;
- }
-#endif /* } */
-}
-
-static void checkMono (argc, argv)
- int argc;
- char** argv;
-{
- int i;
-
- for (i = 1; i < argc; i++)
- if (strcmp (argv[i], "-mono") == 0)
- ErrorF ("-mono not appropriate for CG3/CG4/CG6\n");
-}
-
-/*
- * CG3_MMAP_OFFSET is #defined in <pixrect/cg3var.h> or <sys/cg3var.h>
- * on SunOS and Solaris respectively. Under Solaris, cg3var.h
- * #includes a non-existent file, and causes the make to abort. Other
- * systems may not have cg3var.h at all. Since all cg3var.h is needed
- * for is this one #define, we'll just #define it here and let it go at that.
- */
-
-#define CG3_MMAP_OFFSET 0x04000000
-
-Bool sunCG3Init (screen, pScreen, argc, argv)
- int screen; /* what screen am I going to be */
- ScreenPtr pScreen; /* The Screen to initialize */
- int argc; /* The number of the Server's arguments. */
- char **argv; /* The arguments themselves. Don't change! */
-{
- checkMono (argc, argv);
- sunFbs[screen].EnterLeave = (void (*)())NoopDDA;
- return sunInitCommon (screen, pScreen, (off_t) CG3_MMAP_OFFSET,
- sunCfbScreenInit, CGScreenInit,
- cfbCreateDefColormap, sunSaveScreen, 0);
-}
-
-Bool sunTCXInit (screen, pScreen, argc, argv)
- int screen; /* what screen am I going to be */
- ScreenPtr pScreen; /* The Screen to initialize */
- int argc; /* The number of the Server's arguments. */
- char **argv; /* The arguments themselves. Don't change! */
-{
- checkMono (argc, argv);
- sunFbs[screen].EnterLeave = (void (*)())NoopDDA;
- return sunInitCommon (screen, pScreen, (off_t) 0,
- sunCfbScreenInit, CGScreenInit,
- cfbCreateDefColormap, sunSaveScreen, 0);
-}
-
-#if !defined(i386) /* { */
-
-#ifdef SVR4 /* { */
-#ifdef INCLUDE_CG2_HEADER /* { */
-#include <sys/cg2reg.h>
-#endif /* } INCLUDE_CG2_HEADER */
-#else
-#ifndef CSRG_BASED /* { */
-#include <pixrect/cg2reg.h>
-#else
-#if defined(__sparc__) || defined(__sparc) /* { */
-#if !defined(__bsdi__)
-#include <machine/cgtworeg.h>
-#endif
-#else
-#include <machine/cg2reg.h>
-#endif /* } */
-#endif /* } */
-#endif /* } */
-
-#ifdef INCLUDE_CG2_HEADER
-typedef struct {
- struct cg2memfb mem;
- struct cg2fb regs;
-} *CG2Ptr;
-
-static void CG2UpdateColormap(pScreen, index, count, rmap, gmap,bmap)
- ScreenPtr pScreen;
- int index, count;
- u_char *rmap, *gmap, *bmap;
-{
- CG2Ptr fb = (CG2Ptr) sunFbs[pScreen->myNum].fb;
- volatile struct cg2statusreg *regp = &fb->regs.status.reg;
-
- regp->update_cmap = 0;
- while (count--) {
- fb->regs.redmap[index] = rmap[index];
- fb->regs.greenmap[index] = gmap[index];
- fb->regs.bluemap[index] = bmap[index];
- index++;
- }
- regp->update_cmap = 1;
-}
-
-static void CG2GetColormap(pScreen, index, count, rmap, gmap,bmap)
- ScreenPtr pScreen;
- int index, count;
- u_char *rmap, *gmap, *bmap;
-{
- CG2Ptr fb = (CG2Ptr) sunFbs[pScreen->myNum].fb;
-
- /* I don't even know if this works */
- while (count--) {
- rmap[index] = fb->regs.redmap[index];
- gmap[index] = fb->regs.greenmap[index];
- bmap[index] = fb->regs.bluemap[index];
- index++;
- }
-}
-
-static Bool CG2SaveScreen (pScreen, on)
- ScreenPtr pScreen;
- int on;
-{
- CG2Ptr fb = (CG2Ptr) sunFbs[pScreen->myNum].fb;
- volatile struct cg2statusreg *regp = &fb->regs.status.reg;
-
- if (on != SCREEN_SAVER_FORCER)
- regp->video_enab = (on == SCREEN_SAVER_ON) ? 0 : 1;
- return TRUE;
-}
-
-static void CG2ScreenInit (pScreen)
- ScreenPtr pScreen;
-{
- SetupScreen (pScreen);
- CGScreenInit (pScreen);
- pPrivate->UpdateColormap = CG2UpdateColormap;
- pPrivate->GetColormap = CG2GetColormap;
-}
-
-Bool sunCG2Init (screen, pScreen, argc, argv)
- int screen; /* what screen am I going to be */
- ScreenPtr pScreen; /* The Screen to initialize */
- int argc; /* The number of the Server's arguments. */
- char** argv; /* The arguments themselves. Don't change! */
-{
- int i;
- Bool ret;
- Bool mono = FALSE;
-
- for (i = 1; i < argc; i++)
- if (strcmp (argv[i], "-mono") == 0)
- mono = TRUE;
-
- sunFbs[screen].EnterLeave = (void (*)())NoopDDA;
- pScreen->SaveScreen = CG2SaveScreen;
- if (mono) {
- pScreen->whitePixel = 0;
- pScreen->blackPixel = 1;
- ret = sunInitCommon (screen, pScreen, (off_t) 0,
- mfbScreenInit, NULL,
- mfbCreateDefColormap, CG2SaveScreen, 0);
- ((CG2Ptr) sunFbs[screen].fb)->regs.ppmask.reg = 1;
- } else {
- ret = sunInitCommon (screen, pScreen, (off_t) 0,
- sunCfbScreenInit, CG2ScreenInit,
- cfbCreateDefColormap, CG2SaveScreen,
- (int) &((struct cg2memfb *) 0)->pixplane);
- ((CG2Ptr) sunFbs[screen].fb)->regs.ppmask.reg = 0xFF;
- }
- return ret;
-}
-#endif /* INCLUDE_CG2_HEADER */
-
-#define CG4_HEIGHT 900
-#define CG4_WIDTH 1152
-
-#define CG4_MELEN (128*1024)
-
-typedef struct {
- u_char mpixel[CG4_MELEN]; /* bit-per-pixel memory */
- u_char epixel[CG4_MELEN]; /* enable plane */
- u_char cpixel[CG4_HEIGHT][CG4_WIDTH]; /* byte-per-pixel memory */
-} *CG4Ptr;
-
-static void CG4Switch (pScreen, select)
- ScreenPtr pScreen;
- int select;
-{
- CG4Ptr fb = (CG4Ptr) sunFbs[pScreen->myNum].fb;
-
- (void) memset ((char *)fb->epixel, select ? ~0 : 0, CG4_MELEN);
-}
-
-Bool sunCG4Init (screen, pScreen, argc, argv)
- int screen; /* what screen am I going to be */
- ScreenPtr pScreen; /* The Screen to initialize */
- int argc; /* The number of the Server's arguments. */
- char** argv; /* The arguments themselves. Don't change! */
-{
- checkMono (argc, argv);
- if (sunCG4Frob)
- sunFbs[screen].EnterLeave = (void (*)())NoopDDA;
- else
- sunFbs[screen].EnterLeave = CG4Switch;
- return sunInitCommon (screen, pScreen, (off_t) 0,
- sunCfbScreenInit, CGScreenInit,
- cfbCreateDefColormap, sunSaveScreen, (int) ((CG4Ptr) 0)->cpixel);
-}
-
-#ifdef FBTYPE_SUNFAST_COLOR /* { */
-
-#define CG6_MMAP_OFFSET 0x70000000
-#define CG6_IMAGE_OFFSET 0x16000
-
-Bool sunCG6Init (screen, pScreen, argc, argv)
- int screen; /* The index of pScreen in the ScreenInfo */
- ScreenPtr pScreen; /* The Screen to initialize */
- int argc; /* The number of the Server's arguments. */
- char** argv; /* The arguments themselves. Don't change! */
-{
- pointer fb;
-
- checkMono (argc, argv);
- if (!sunScreenAllocate (pScreen))
- return FALSE;
- if (!sunFbs[screen].fb) {
-/* Sun's VME, Sbus, and SVR4 drivers all return different values */
-#define FBSIZE (size_t) sunFbs[screen].info.fb_width * \
- sunFbs[screen].info.fb_height + CG6_IMAGE_OFFSET
- if ((fb = sunMemoryMap (FBSIZE,
- (off_t) CG6_MMAP_OFFSET,
- sunFbs[screen].fd)) == NULL)
- return FALSE;
- sunFbs[screen].fb = fb;
-#undef FBSIZE
- }
- sunFbs[screen].EnterLeave = (void (*)())NoopDDA;
- if (!sunCfbSetupScreen (pScreen,
- sunFbs[screen].fb + CG6_IMAGE_OFFSET,
- sunFbs[screen].info.fb_width,
- sunFbs[screen].info.fb_height,
- monitorResolution, monitorResolution,
- sunFbs[screen].info.fb_width,
- sunFbs[screen].info.fb_depth))
- return FALSE;
- if (sunNoGX == FALSE) {
- if (!sunGXInit (pScreen, &sunFbs[screen]))
- return FALSE;
- }
- if (!sunCfbFinishScreenInit(pScreen,
- sunFbs[screen].fb + CG6_IMAGE_OFFSET,
- sunFbs[screen].info.fb_width,
- sunFbs[screen].info.fb_height,
- monitorResolution, monitorResolution,
- sunFbs[screen].info.fb_width,
- sunFbs[screen].info.fb_depth))
- return FALSE;
- if (sunNoGX == FALSE) {
- miSetZeroLineBias(pScreen, GXZEROLINEBIAS);
- }
- miInitializeBackingStore(pScreen);
- CGScreenInit (pScreen);
- if (!sunScreenInit (pScreen))
- return FALSE;
- sunSaveScreen (pScreen, SCREEN_SAVER_OFF);
- return cfbCreateDefColormap(pScreen);
-}
-#endif /* } */
-#endif /* } */
diff --git a/nx-X11/programs/Xserver/hw/sun/sunCfb24.c b/nx-X11/programs/Xserver/hw/sun/sunCfb24.c
deleted file mode 100644
index fa3a58e85..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunCfb24.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/* $Xorg: sunCfb24.c,v 1.4 2001/02/09 02:04:43 xorgcvs Exp $ */
-
-/*
-
-Copyright 1994, 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 X
-CONSORTIUM 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.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/sun/sunCfb24.c,v 1.2 2001/10/28 03:33:10 tsi Exp $ */
-
-/*
- * The CG8 is similar to the CG4 in that it has a mono plane, an enable
- * plane, and a color plane. While the CG4 only has an 8-bit color
- * plane the CG8 has a 24-bit color plane.
- *
- * If you have a CG4 you know that you can switch between the mono and
- * the color screens merely by dragging the pointer off the edge of the
- * screen, causing the other screen to be switched in. However this is
- * the cause of some consternation on the part of those people who have
- * both a CG4 and another frame buffer.
- *
- * Because of this problem, and some other considerations, I have chosen
- * to ignore the mono plane of the CG8 in this code.
- */
-
-#define PSZ 32
-#include "sun.h"
-#include "cfb/cfb.h"
-
-#define PIXPG_24BIT_COLOR 5
-#define PIXPG_24BIT_COLOR_INDEX (PIXPG_24BIT_COLOR << 25)
-#define PR_FORCE_UPDATE (1 << 24)
-
-static void CG24UpdateColormap(pScreen, index, count, rmap, gmap, bmap)
- ScreenPtr pScreen;
- int index, count;
- u_char *rmap, *gmap, *bmap;
-{
- struct fbcmap sunCmap;
-
- sunCmap.index = index | PIXPG_24BIT_COLOR_INDEX | PR_FORCE_UPDATE;
- sunCmap.count = count;
- sunCmap.red = &rmap[index];
- sunCmap.green = &gmap[index];
- sunCmap.blue = &bmap[index];
-
- if (ioctl(sunFbs[pScreen->myNum].fd, FBIOPUTCMAP, &sunCmap) == -1)
- FatalError( "CG24UpdateColormap: FBIOPUTCMAP failed\n");
-}
-
-static void CG24StoreColors (pmap, ndef, pdefs)
- ColormapPtr pmap;
- int ndef;
- xColorItem* pdefs;
-{
- u_char rmap[256], gmap[256], bmap[256];
- SetupScreen (pmap->pScreen);
- VisualPtr pVisual = pmap->pVisual;
- int i;
-
- if (pPrivate->installedMap != NULL && pPrivate->installedMap != pmap)
- return;
- for (i = 0; i < 256; i++) {
- rmap[i] = pmap->red[i].co.local.red >> 8;
- gmap[i] = pmap->green[i].co.local.green >> 8;
- bmap[i] = pmap->blue[i].co.local.blue >> 8;
- }
- while (ndef--) {
- i = pdefs->pixel;
- if (pdefs->flags & DoRed)
- rmap[(i & pVisual->redMask) >> pVisual->offsetRed] = (pdefs->red >> 8);
- if (pdefs->flags & DoGreen)
- gmap[(i & pVisual->greenMask) >> pVisual->offsetGreen] = (pdefs->green >> 8);
- if (pdefs->flags & DoBlue)
- bmap[(i & pVisual->blueMask) >> pVisual->offsetBlue] = (pdefs->blue >> 8);
- pdefs++;
- }
- CG24UpdateColormap (pmap->pScreen, 0, 256, rmap, gmap, bmap);
-}
-
-#define CG8_COLOR_OFFSET 0x40000
-
-static void CG24ScreenInit (pScreen)
- ScreenPtr pScreen;
-{
-#ifndef STATIC_COLOR
- SetupScreen (pScreen);
-#endif
- int i;
-
- /* Make sure the overlay plane is disabled */
- for (i = 0; i < CG8_COLOR_OFFSET; i++)
- sunFbs[pScreen->myNum].fb[i] = 0;
-
-#ifndef STATIC_COLOR
- pScreen->InstallColormap = sunInstallColormap;
- pScreen->UninstallColormap = sunUninstallColormap;
- pScreen->ListInstalledColormaps = sunListInstalledColormaps;
- pScreen->StoreColors = CG24StoreColors;
- pPrivate->UpdateColormap = CG24UpdateColormap;
- if (sunFlipPixels) {
- Pixel pixel = pScreen->whitePixel;
- pScreen->whitePixel = pScreen->blackPixel;
- pScreen->blackPixel = pixel;
- }
-#endif
-}
-
-Bool sunCG8Init (screen, pScreen, argc, argv)
- int screen; /* what screen am I going to be */
- ScreenPtr pScreen; /* The Screen to initialize */
- int argc; /* The number of the Server's arguments. */
- char **argv; /* The arguments themselves. Don't change! */
-{
- sunFbs[screen].EnterLeave = (void (*)())NoopDDA;
- return sunInitCommon (screen, pScreen, (off_t) 0,
- cfb32ScreenInit, CG24ScreenInit,
- cfbCreateDefColormap, sunSaveScreen, CG8_COLOR_OFFSET);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/sun/sunCursor.c b/nx-X11/programs/Xserver/hw/sun/sunCursor.c
deleted file mode 100644
index 2d653c753..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunCursor.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/* $Xorg: sunCursor.c,v 1.4 2001/02/09 02:04:43 xorgcvs Exp $ */
-/*
-
-Copyright 1988 Sun Microsystems, Inc.
-Copyright 1993, 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.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/sun/sunCursor.c,v 3.5 2001/12/14 19:59:43 dawes Exp $ */
-
-/*-
- * sunCursor.c --
- * Functions for maintaining the Sun software cursor...
- *
- */
-
-#define NEED_EVENTS
-#include "sun.h"
-#include "cfb.h"
-#include "mfb.h"
-
-#ifdef FBIOGCURMAX /* has hardware cursor kernel support */
-
-#define GetCursorPrivate(s) (&(GetScreenPrivate(s)->hardwareCursor))
-#define SetupCursor(s) sunCursorPtr pCurPriv = GetCursorPrivate(s)
-
-static void sunLoadCursor();
-
-static Bool
-sunRealizeCursor (pScreen, pCursor)
- ScreenPtr pScreen;
- CursorPtr pCursor;
-{
- SetupCursor(pScreen);
- int x, y;
-
- /* miRecolorCursor does this */
- if (pCurPriv->pCursor == pCursor)
- {
- miPointerPosition (&x, &y);
- sunLoadCursor (pScreen, pCursor, x, y);
- }
- return TRUE;
-}
-
-static Bool
-sunUnrealizeCursor (pScreen, pCursor)
- ScreenPtr pScreen;
- CursorPtr pCursor;
-{
- return TRUE;
-}
-
-static void
-sunCursorRepad (pScreen, bits, src_bits, dst_bits, ptSrc, w, h)
- ScreenPtr pScreen;
- CursorBitsPtr bits;
- unsigned char *src_bits, *dst_bits;
- DDXPointPtr ptSrc;
- int w, h;
-{
- PixmapPtr src, dst;
- BoxRec box;
- RegionRec rgnDst;
-
- if (!(src = GetScratchPixmapHeader(pScreen, bits->width, bits->height,
- /*bpp*/ 1, /*depth*/ 1,
- PixmapBytePad(bits->width,1), src_bits)))
- return;
- if (!(dst = GetScratchPixmapHeader(pScreen, w, h, /*bpp*/ 1, /*depth*/ 1,
- PixmapBytePad(w,1), dst_bits)))
- {
- FreeScratchPixmapHeader(src);
- return;
- }
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = w;
- box.y2 = h;
- REGION_INIT(pScreen, &rgnDst, &box, 1);
- mfbDoBitblt(&src->drawable, &dst->drawable, GXcopy, &rgnDst, ptSrc);
- REGION_UNINIT(pScreen, &rgnDst);
- FreeScratchPixmapHeader(src);
- FreeScratchPixmapHeader(dst);
-}
-
-static void
-sunLoadCursor (pScreen, pCursor, x, y)
- ScreenPtr pScreen;
- CursorPtr pCursor;
- int x, y;
-{
- SetupCursor(pScreen);
- struct fbcursor fbcursor;
- int w, h;
- unsigned char r[2], g[2], b[2];
- DDXPointRec ptSrc;
- unsigned char source_temp[1024], mask_temp[1024];
-
- fbcursor.set = FB_CUR_SETALL;
- fbcursor.enable = 1;
- fbcursor.pos.x = x;
- fbcursor.pos.y = y;
- fbcursor.hot.x = pCursor->bits->xhot;
- fbcursor.hot.y = pCursor->bits->yhot;
- r[0] = pCursor->backRed >> 8;
- g[0] = pCursor->backGreen >> 8;
- b[0] = pCursor->backBlue >> 8;
- r[1] = pCursor->foreRed >> 8;
- g[1] = pCursor->foreGreen >> 8;
- b[1] = pCursor->foreBlue >> 8;
- fbcursor.cmap.index = 0;
- fbcursor.cmap.count = 2;
- fbcursor.cmap.red = r;
- fbcursor.cmap.green = g;
- fbcursor.cmap.blue = b;
- fbcursor.image = (char *) pCursor->bits->source;
- fbcursor.mask = (char *) pCursor->bits->mask;
- w = pCursor->bits->width;
- h = pCursor->bits->height;
- if (w > pCurPriv->width || h > pCurPriv->height) {
- ptSrc.x = 0;
- ptSrc.y = 0;
- if (w > pCurPriv->width)
- w = pCurPriv->width;
- if (h > pCurPriv->height)
- h = pCurPriv->height;
- sunCursorRepad (pScreen, pCursor->bits, pCursor->bits->source,
- source_temp, &ptSrc, w, h);
- sunCursorRepad (pScreen, pCursor->bits, pCursor->bits->mask,
- mask_temp, &ptSrc, w, h);
- fbcursor.image = (char *) source_temp;
- fbcursor.mask = (char *) mask_temp;
- }
- fbcursor.size.x = w;
- fbcursor.size.y = h;
-#ifndef Lynx
- (void) ioctl (sunFbs[pScreen->myNum].fd, FBIOSCURSOR, &fbcursor);
-#else
- (void) sunIoctl (&sunFbs[pScreen->myNum], FBIOSCURSOR, &fbcursor);
-#endif
-}
-
-static void
-sunSetCursor (pScreen, pCursor, x, y)
- ScreenPtr pScreen;
- CursorPtr pCursor;
- int x, y;
-{
- SetupCursor(pScreen);
-
- if (pCursor)
- sunLoadCursor (pScreen, pCursor, x, y);
- else
- sunDisableCursor (pScreen);
- pCurPriv->pCursor = pCursor;
-}
-
-static void
-sunMoveCursor (pScreen, x, y)
- ScreenPtr pScreen;
- int x, y;
-{
- struct fbcurpos pos;
-
- pos.x = x;
- pos.y = y;
-#ifndef Lynx
- ioctl (sunFbs[pScreen->myNum].fd, FBIOSCURPOS, &pos);
-#else
- sunIoctl (&sunFbs[pScreen->myNum], FBIOSCURPOS, &pos);
-#endif
-}
-
-miPointerSpriteFuncRec sunPointerSpriteFuncs = {
- sunRealizeCursor,
- sunUnrealizeCursor,
- sunSetCursor,
- sunMoveCursor,
-};
-
-static void
-sunQueryBestSize (class, pwidth, pheight, pScreen)
- int class;
- unsigned short *pwidth, *pheight;
- ScreenPtr pScreen;
-{
- SetupCursor (pScreen);
-
- switch (class)
- {
- case CursorShape:
- if (*pwidth > pCurPriv->width)
- *pwidth = pCurPriv->width;
- if (*pheight > pCurPriv->height)
- *pheight = pCurPriv->height;
- if (*pwidth > pScreen->width)
- *pwidth = pScreen->width;
- if (*pheight > pScreen->height)
- *pheight = pScreen->height;
- break;
- default:
- mfbQueryBestSize (class, pwidth, pheight, pScreen);
- break;
- }
-}
-
-extern miPointerScreenFuncRec sunPointerScreenFuncs;
-
-#endif
-
-Bool sunCursorInitialize (
- ScreenPtr pScreen)
-{
-#ifdef FBIOGCURMAX
- SetupCursor (pScreen);
- struct fbcurpos maxsize;
-
- pCurPriv->has_cursor = FALSE;
-#ifndef Lynx
- if (ioctl (sunFbs[pScreen->myNum].fd, FBIOGCURMAX, &maxsize) == -1)
-#else
- if (sunIoctl (&sunFbs[pScreen->myNum], FBIOGCURMAX, &maxsize) == -1)
-#endif
- return FALSE;
- pCurPriv->width = maxsize.x;
- pCurPriv->height= maxsize.y;
- pScreen->QueryBestSize = sunQueryBestSize;
- miPointerInitialize (pScreen,
- &sunPointerSpriteFuncs,
- &sunPointerScreenFuncs,
- FALSE);
- pCurPriv->has_cursor = TRUE;
- pCurPriv->pCursor = NULL;
- return TRUE;
-#else
- return FALSE;
-#endif
-}
-
-void sunDisableCursor (
- ScreenPtr pScreen)
-{
-#ifdef FBIOGCURMAX
- SetupCursor (pScreen);
- struct fbcursor fbcursor;
-
- if (pCurPriv->has_cursor)
- {
- fbcursor.set = FB_CUR_SETCUR;
- fbcursor.enable = 0;
-#ifndef Lynx
- (void) ioctl (sunFbs[pScreen->myNum].fd, FBIOSCURSOR, &fbcursor);
-#else
- (void) sunIoctl (&sunFbs[pScreen->myNum], FBIOSCURSOR, &fbcursor);
-#endif
- pCurPriv->pCursor = NULL;
- }
-#endif
-}
diff --git a/nx-X11/programs/Xserver/hw/sun/sunFbs.c b/nx-X11/programs/Xserver/hw/sun/sunFbs.c
deleted file mode 100644
index 1acf2517b..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunFbs.c
+++ /dev/null
@@ -1,259 +0,0 @@
-
-/* $Xorg: sunFbs.c,v 1.4 2001/02/09 02:04:43 xorgcvs Exp $ */
-
-/*
-Copyright 1990, 1993, 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 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/*
- * Copyright 1987 by the Regents of the University of California
- * Copyright 1987 by Adam de Boor, UC Berkeley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/* $XFree86: xc/programs/Xserver/hw/sun/sunFbs.c,v 1.7 2002/12/06 00:28:50 tsi Exp $ */
-
-/****************************************************************/
-/* Modified from sunCG4C.c for X11R3 by Tom Jarmolowski */
-/****************************************************************/
-
-#include "sun.h"
-#include <sys/mman.h>
-
-int sunScreenIndex;
-
-static unsigned long generation = 0;
-
-pointer sunMemoryMap (
- size_t len,
- off_t off,
- int fd)
-{
- int pagemask, mapsize;
- caddr_t addr;
- pointer mapaddr;
-
-#ifdef SVR4
- pagemask = sysconf(_SC_PAGESIZE) - 1;
-#else
- pagemask = getpagesize() - 1;
-#endif
- mapsize = ((int) len + pagemask) & ~pagemask;
- addr = 0;
-
-#if !defined(__bsdi__) && !defined(_MAP_NEW) && !defined(__NetBSD__) && !defined(__OpenBSD__)
- if ((addr = (caddr_t) valloc (mapsize)) == NULL) {
- Error ("Couldn't allocate frame buffer memory");
- (void) close (fd);
- return NULL;
- }
-#endif
-
-#if !defined(__NetBSD__) && !defined(__OpenBSD__)
- /*
- * try and make it private first, that way once we get it, an
- * interloper, e.g. another server, can't get this frame buffer,
- * and if another server already has it, this one won't.
- */
- if ((int)(mapaddr = (pointer) mmap (addr,
- mapsize,
- PROT_READ | PROT_WRITE, MAP_PRIVATE,
- fd, off)) == -1)
-#endif
- mapaddr = (pointer) mmap (addr,
- mapsize,
- PROT_READ | PROT_WRITE, MAP_SHARED,
- fd, off);
- if (mapaddr == (pointer) -1) {
- Error ("mapping frame buffer memory");
- (void) close (fd);
- mapaddr = (pointer) NULL;
- }
- return mapaddr;
-}
-
-Bool sunScreenAllocate (
- ScreenPtr pScreen)
-{
- sunScreenPtr pPrivate;
- extern int AllocateScreenPrivateIndex();
-
- if (generation != serverGeneration)
- {
- sunScreenIndex = AllocateScreenPrivateIndex();
- if (sunScreenIndex < 0)
- return FALSE;
- generation = serverGeneration;
- }
- pPrivate = (sunScreenPtr) xalloc (sizeof (sunScreenRec));
- if (!pPrivate)
- return FALSE;
-
- pScreen->devPrivates[sunScreenIndex].ptr = (pointer) pPrivate;
- return TRUE;
-}
-
-Bool sunSaveScreen (
- ScreenPtr pScreen,
- int on)
-{
- int state;
-
- if (on != SCREEN_SAVER_FORCER)
- {
- if (on == SCREEN_SAVER_ON)
- state = 0;
- else
- state = 1;
- (void) ioctl(sunFbs[pScreen->myNum].fd, FBIOSVIDEO, &state);
- }
- return( TRUE );
-}
-
-static Bool closeScreen (i, pScreen)
- int i;
- ScreenPtr pScreen;
-{
- SetupScreen(pScreen);
- Bool ret;
-
- (void) OsSignal (SIGIO, SIG_IGN);
- sunDisableCursor (pScreen);
- pScreen->CloseScreen = pPrivate->CloseScreen;
- ret = (*pScreen->CloseScreen) (i, pScreen);
- (void) (*pScreen->SaveScreen) (pScreen, SCREEN_SAVER_OFF);
- xfree ((pointer) pPrivate);
- return ret;
-}
-
-Bool sunScreenInit (
- ScreenPtr pScreen)
-{
- SetupScreen(pScreen);
- extern void sunBlockHandler();
- extern void sunWakeupHandler();
- static ScreenPtr autoRepeatScreen;
- extern miPointerScreenFuncRec sunPointerScreenFuncs;
-
- pPrivate->installedMap = 0;
- pPrivate->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = closeScreen;
- pScreen->SaveScreen = sunSaveScreen;
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- /*
- * Block/Unblock handlers
- */
- if (sunAutoRepeatHandlersInstalled == FALSE) {
- autoRepeatScreen = pScreen;
- sunAutoRepeatHandlersInstalled = TRUE;
- }
-
- if (pScreen == autoRepeatScreen) {
- pScreen->BlockHandler = sunBlockHandler;
- pScreen->WakeupHandler = sunWakeupHandler;
- }
-#ifdef XKB
- }
-#endif
- if (!sunCursorInitialize (pScreen))
- miDCInitialize (pScreen, &sunPointerScreenFuncs);
- return TRUE;
-}
-
-Bool sunInitCommon (
- int scrn,
- ScreenPtr pScrn,
- off_t offset,
- Bool (*init1)(),
- void (*init2)(),
- Bool (*cr_cm)(),
- Bool (*save)(),
- int fb_off)
-{
- unsigned char* fb = sunFbs[scrn].fb;
-
- if (!sunScreenAllocate (pScrn))
- return FALSE;
- if (!fb) {
- if ((fb = sunMemoryMap ((size_t) sunFbs[scrn].info.fb_size,
- offset,
- sunFbs[scrn].fd)) == NULL)
- return FALSE;
- sunFbs[scrn].fb = fb;
- }
- /* mfbScreenInit() or cfbScreenInit() */
- if (!(*init1)(pScrn, fb + fb_off,
- sunFbs[scrn].info.fb_width,
- sunFbs[scrn].info.fb_height,
- monitorResolution, monitorResolution,
- sunFbs[scrn].info.fb_width,
- sunFbs[scrn].info.fb_depth))
- return FALSE;
- miInitializeBackingStore(pScrn);
- /* sunCGScreenInit() if cfb... */
- if (init2)
- (*init2)(pScrn);
- if (!sunScreenInit(pScrn))
- return FALSE;
- (void) (*save) (pScrn, SCREEN_SAVER_OFF);
- return (*cr_cm)(pScrn);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/sun/sunGX.c b/nx-X11/programs/Xserver/hw/sun/sunGX.c
deleted file mode 100644
index b6ecaac57..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunGX.c
+++ /dev/null
@@ -1,2906 +0,0 @@
-/*
-static char *rid="$Xorg: sunGX.c,v 1.5 2001/02/09 02:04:44 xorgcvs Exp $";
- */
-/*
-Copyright 1991, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* $XFree86: xc/programs/Xserver/hw/sun/sunGX.c,v 1.8 2003/07/19 13:22:28 tsi Exp $ */
-
-#include "sun.h"
-
-#include <X11/Xmd.h>
-#include "gcstruct.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "mistruct.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "cfb/cfb.h"
-#include "cfb/cfbmskbits.h"
-#include "cfb/cfb8bit.h"
-#include "fastblt.h"
-#include "mergerop.h"
-#include "sunGX.h"
-#include "migc.h"
-#include "mispans.h"
-
-#define sunGXFillSpan(gx,y,x1,x2,r) {\
- (gx)->apointy = (y); \
- (gx)->apointx = (x1); \
- (gx)->arectx = (x2); \
- GXDrawDone(gx,r); \
-}
-
-#define GXSetClip(gx,pbox) {\
- (gx)->clipminx = (pbox)->x1; \
- (gx)->clipminy = (pbox)->y1; \
- (gx)->clipmaxx = (pbox)->x2 - 1; \
- (gx)->clipmaxy = (pbox)->y2 - 1; \
-}
-
-#define GXSetOff(gx,x,y) {\
- (gx)->offx = (x); \
- (gx)->offy = (y); \
-}
-
-#define GXResetClip(gx,pScreen) { \
- (gx)->clipminx = 0; \
- (gx)->clipminy = 0; \
- (gx)->clipmaxx = (pScreen)->width - 1; \
- (gx)->clipmaxy = (pScreen)->height - 1; \
-}
-
-#define GXResetOff(gx) {\
- (gx)->offx = 0; \
- (gx)->offy = 0; \
-}
-
-#define sunGXGetAddrRange(pDrawable,extents,base,lo,hi) {\
- int __x__; \
- cfbGetWindowByteWidthAndPointer((WindowPtr)pDrawable,__x__,base); \
- lo = (base) + WIDTH_MUL((extents)->y1) + (extents)->x1; \
- hi = (base) + WIDTH_MUL((extents)->y2 - 1) + (extents)->x2 - 1; \
- (base) = (base) + WIDTH_MUL(pDrawable->y) + pDrawable->x; \
-}
-
-/*
- rop_tables
- ==========
- lookup tables for GX raster ops, with the plane_mask,pixel_mask,pattern_mask
- ,attrib_sel, polygon_draw,raster_mode encoded into the top half.
- There is a lookup table for each commonly used combination.
-*/
-
-/* rops for bit blit / copy area
- with:
- Plane Mask - use plane mask reg.
- Pixel Mask - use all ones.
- Patt Mask - use all ones.
-*/
-
-#define POLY_O GX_POLYG_OVERLAP
-#define POLY_N GX_POLYG_NONOVERLAP
-
-#define ROP_STANDARD (GX_PLANE_MASK |\
- GX_PIXEL_ONES |\
- GX_ATTR_SUPP |\
- GX_RAST_BOOL |\
- GX_PLOT_PLOT)
-
-/* fg = don't care bg = don't care */
-
-#define ROP_BLIT(O,I) (ROP_STANDARD | \
- GX_PATTERN_ONES |\
- GX_ROP_11_1(I) |\
- GX_ROP_11_0(O) |\
- GX_ROP_10_1(I) |\
- GX_ROP_10_0(O) |\
- GX_ROP_01_1(I) |\
- GX_ROP_01_0(O) |\
- GX_ROP_00_1(I) |\
- GX_ROP_00_0(O))
-
-/* fg = fgPixel bg = don't care */
-
-#define ROP_FILL(O,I) (ROP_STANDARD | \
- GX_PATTERN_ONES |\
- GX_ROP_11_1(I) |\
- GX_ROP_11_0(I) |\
- GX_ROP_10_1(I) |\
- GX_ROP_10_0(I) | \
- GX_ROP_01_1(O) |\
- GX_ROP_01_0(O) |\
- GX_ROP_00_1(O) |\
- GX_ROP_00_0(O))
-
-/* fg = fgPixel bg = don't care */
-
-#define ROP_STIP(O,I) (ROP_STANDARD |\
- GX_ROP_11_1(I) |\
- GX_ROP_11_0(GX_ROP_NOOP) |\
- GX_ROP_10_1(I) |\
- GX_ROP_10_0(GX_ROP_NOOP) | \
- GX_ROP_01_1(O) |\
- GX_ROP_01_0(GX_ROP_NOOP) |\
- GX_ROP_00_1(O) |\
- GX_ROP_00_0(GX_ROP_NOOP))
-
-/* fg = fgPixel bg = bgPixel */
-
-#define ROP_OSTP(O,I) (ROP_STANDARD |\
- GX_ROP_11_1(I) |\
- GX_ROP_11_0(I) |\
- GX_ROP_10_1(I) |\
- GX_ROP_10_0(O) |\
- GX_ROP_01_1(O) |\
- GX_ROP_01_0(I) |\
- GX_ROP_00_1(O) |\
- GX_ROP_00_0(O))
-
-#define ROP_ITXT(O,I) (ROP_STANDARD |\
- GX_PATTERN_ONES |\
- GX_ROP_11_1(I) |\
- GX_ROP_11_0(I) |\
- GX_ROP_10_1(I) |\
- GX_ROP_10_0(O) |\
- GX_ROP_01_1(O) |\
- GX_ROP_01_0(I) |\
- GX_ROP_00_1(O) |\
- GX_ROP_00_0(O))
-
-#define ROP_PTXT(O,I) (ROP_STANDARD |\
- GX_PATTERN_ONES |\
- GX_ROP_11_1(I) |\
- GX_ROP_11_0(GX_ROP_NOOP) |\
- GX_ROP_10_1(I) |\
- GX_ROP_10_0(GX_ROP_NOOP) | \
- GX_ROP_01_1(O) |\
- GX_ROP_01_0(GX_ROP_NOOP) |\
- GX_ROP_00_1(O) |\
- GX_ROP_00_0(GX_ROP_NOOP))
-
-static Uint gx_blit_rop_table[16]={
- ROP_BLIT(GX_ROP_CLEAR, GX_ROP_CLEAR), /* GXclear */
- ROP_BLIT(GX_ROP_CLEAR, GX_ROP_NOOP), /* GXand */
- ROP_BLIT(GX_ROP_CLEAR, GX_ROP_INVERT), /* GXandReverse */
- ROP_BLIT(GX_ROP_CLEAR, GX_ROP_SET), /* GXcopy */
- ROP_BLIT(GX_ROP_NOOP, GX_ROP_CLEAR), /* GXandInverted */
- ROP_BLIT(GX_ROP_NOOP, GX_ROP_NOOP), /* GXnoop */
- ROP_BLIT(GX_ROP_NOOP, GX_ROP_INVERT), /* GXxor */
- ROP_BLIT(GX_ROP_NOOP, GX_ROP_SET), /* GXor */
- ROP_BLIT(GX_ROP_INVERT, GX_ROP_CLEAR), /* GXnor */
- ROP_BLIT(GX_ROP_INVERT, GX_ROP_NOOP), /* GXequiv */
- ROP_BLIT(GX_ROP_INVERT, GX_ROP_INVERT), /* GXinvert */
- ROP_BLIT(GX_ROP_INVERT, GX_ROP_SET), /* GXorReverse */
- ROP_BLIT(GX_ROP_SET, GX_ROP_CLEAR), /* GXcopyInverted */
- ROP_BLIT(GX_ROP_SET, GX_ROP_NOOP), /* GXorInverted */
- ROP_BLIT(GX_ROP_SET, GX_ROP_INVERT), /* GXnand */
- ROP_BLIT(GX_ROP_SET, GX_ROP_SET), /* GXset */
-};
-
-/* rops for solid drawing
- with:
- Plane Mask - use plane mask reg.
- Pixel Mask - use all ones.
- Patt Mask - use all ones.
-*/
-
-static Uint gx_solid_rop_table[16]={
- ROP_FILL(GX_ROP_CLEAR, GX_ROP_CLEAR), /* GXclear */
- ROP_FILL(GX_ROP_CLEAR, GX_ROP_NOOP), /* GXand */
- ROP_FILL(GX_ROP_CLEAR, GX_ROP_INVERT), /* GXandReverse */
- ROP_FILL(GX_ROP_CLEAR, GX_ROP_SET), /* GXcopy */
- ROP_FILL(GX_ROP_NOOP, GX_ROP_CLEAR), /* GXandInverted */
- ROP_FILL(GX_ROP_NOOP, GX_ROP_NOOP), /* GXnoop */
- ROP_FILL(GX_ROP_NOOP, GX_ROP_INVERT), /* GXxor */
- ROP_FILL(GX_ROP_NOOP, GX_ROP_SET), /* GXor */
- ROP_FILL(GX_ROP_INVERT, GX_ROP_CLEAR), /* GXnor */
- ROP_FILL(GX_ROP_INVERT, GX_ROP_NOOP), /* GXequiv */
- ROP_FILL(GX_ROP_INVERT, GX_ROP_INVERT), /* GXinvert */
- ROP_FILL(GX_ROP_INVERT, GX_ROP_SET), /* GXorReverse */
- ROP_FILL(GX_ROP_SET, GX_ROP_CLEAR), /* GXcopyInverted */
- ROP_FILL(GX_ROP_SET, GX_ROP_NOOP), /* GXorInverted */
- ROP_FILL(GX_ROP_SET, GX_ROP_INVERT), /* GXnand */
- ROP_FILL(GX_ROP_SET, GX_ROP_SET), /* GXset */
-};
-
-static Uint gx_stipple_rop_table[16]={
- ROP_STIP(GX_ROP_CLEAR, GX_ROP_CLEAR), /* GXclear */
- ROP_STIP(GX_ROP_CLEAR, GX_ROP_NOOP), /* GXand */
- ROP_STIP(GX_ROP_CLEAR, GX_ROP_INVERT), /* GXandReverse */
- ROP_STIP(GX_ROP_CLEAR, GX_ROP_SET), /* GXcopy */
- ROP_STIP(GX_ROP_NOOP, GX_ROP_CLEAR), /* GXandInverted */
- ROP_STIP(GX_ROP_NOOP, GX_ROP_NOOP), /* GXnoop */
- ROP_STIP(GX_ROP_NOOP, GX_ROP_INVERT), /* GXxor */
- ROP_STIP(GX_ROP_NOOP, GX_ROP_SET), /* GXor */
- ROP_STIP(GX_ROP_INVERT, GX_ROP_CLEAR), /* GXnor */
- ROP_STIP(GX_ROP_INVERT, GX_ROP_NOOP), /* GXequiv */
- ROP_STIP(GX_ROP_INVERT, GX_ROP_INVERT), /* GXinvert */
- ROP_STIP(GX_ROP_INVERT, GX_ROP_SET), /* GXorReverse */
- ROP_STIP(GX_ROP_SET, GX_ROP_CLEAR), /* GXcopyInverted */
- ROP_STIP(GX_ROP_SET, GX_ROP_NOOP), /* GXorInverted */
- ROP_STIP(GX_ROP_SET, GX_ROP_INVERT), /* GXnand */
- ROP_STIP(GX_ROP_SET, GX_ROP_SET), /* GXset */
-};
-
-static Uint gx_opaque_stipple_rop_table[16]={
- ROP_OSTP(GX_ROP_CLEAR, GX_ROP_CLEAR), /* GXclear */
- ROP_OSTP(GX_ROP_CLEAR, GX_ROP_NOOP), /* GXand */
- ROP_OSTP(GX_ROP_CLEAR, GX_ROP_INVERT), /* GXandReverse */
- ROP_OSTP(GX_ROP_CLEAR, GX_ROP_SET), /* GXcopy */
- ROP_OSTP(GX_ROP_NOOP, GX_ROP_CLEAR), /* GXandInverted */
- ROP_OSTP(GX_ROP_NOOP, GX_ROP_NOOP), /* GXnoop */
- ROP_OSTP(GX_ROP_NOOP, GX_ROP_INVERT), /* GXxor */
- ROP_OSTP(GX_ROP_NOOP, GX_ROP_SET), /* GXor */
- ROP_OSTP(GX_ROP_INVERT, GX_ROP_CLEAR), /* GXnor */
- ROP_OSTP(GX_ROP_INVERT, GX_ROP_NOOP), /* GXequiv */
- ROP_OSTP(GX_ROP_INVERT, GX_ROP_INVERT), /* GXinvert */
- ROP_OSTP(GX_ROP_INVERT, GX_ROP_SET), /* GXorReverse */
- ROP_OSTP(GX_ROP_SET, GX_ROP_CLEAR), /* GXcopyInverted */
- ROP_OSTP(GX_ROP_SET, GX_ROP_NOOP), /* GXorInverted */
- ROP_OSTP(GX_ROP_SET, GX_ROP_INVERT), /* GXnand */
- ROP_OSTP(GX_ROP_SET, GX_ROP_SET), /* GXset */
-};
-
-int sunGXScreenPrivateIndex;
-int sunGXGCPrivateIndex;
-int sunGXWindowPrivateIndex;
-int sunGXGeneration;
-
-/*
- sunGXDoBitBlt
- =============
- Bit Blit for all window to window blits.
-*/
-static void
-sunGXDoBitblt(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- register sunGXPtr gx = sunGXGetScreenPrivate (pSrc->pScreen);
- register long r;
- register BoxPtr pboxTmp;
- register DDXPointPtr pptTmp;
- register int nbox;
- BoxPtr pboxNext,pboxBase,pbox;
-
- /* setup GX ( need fg of 0xff for blits ) */
- GXBlitInit(gx,gx_blit_rop_table[alu]|POLY_O,planemask);
-
- pbox = REGION_RECTS(prgnDst);
- nbox = REGION_NUM_RECTS(prgnDst);
-
- /* need to blit rectangles in different orders, depending on the direction of copy
- so that an area isnt overwritten before it is blitted */
- if( (pptSrc->y < pbox->y1) && (nbox > 1) ){
-
- if( (pptSrc->x < pbox->x1) && (nbox > 1) ){
-
- /* reverse order of bands and rects in each band */
- pboxTmp=pbox+nbox;
- pptTmp=pptSrc+nbox;
-
- while (nbox--){
- pboxTmp--;
- pptTmp--;
- gx->x0=pptTmp->x;
- gx->y0=pptTmp->y;
- gx->x1=pptTmp->x+(pboxTmp->x2-pboxTmp->x1)-1;
- gx->y1=pptTmp->y+(pboxTmp->y2-pboxTmp->y1)-1;
- gx->x2=pboxTmp->x1;
- gx->y2=pboxTmp->y1;
- gx->x3=pboxTmp->x2-1;
- gx->y3=pboxTmp->y2-1;
- GXBlitDone(gx,r);
- }
- }
- else{
-
- /* keep ordering in each band, reverse order of bands */
- pboxBase = pboxNext = pbox+nbox-1;
-
- while (pboxBase >= pbox){ /* for each band */
-
- /* find first box in band */
- while ((pboxNext >= pbox) &&
- (pboxBase->y1 == pboxNext->y1))
- pboxNext--;
-
- pboxTmp = pboxNext+1; /* first box in band */
- pptTmp = pptSrc + (pboxTmp - pbox); /* first point in band */
-
- while (pboxTmp <= pboxBase){ /* for each box in band */
- gx->x0=pptTmp->x;
- gx->y0=pptTmp->y;
- gx->x1=pptTmp->x+(pboxTmp->x2-pboxTmp->x1)-1;
- gx->y1=pptTmp->y+(pboxTmp->y2-pboxTmp->y1)-1;
- gx->x2=pboxTmp->x1;
- gx->y2=pboxTmp->y1;
- gx->x3=pboxTmp->x2-1;
- gx->y3=pboxTmp->y2-1;
- ++pboxTmp;
- ++pptTmp;
- GXBlitDone(gx,r);
- }
- pboxBase = pboxNext;
- }
- }
- }
- else{
-
- if( (pptSrc->x < pbox->x1) && (nbox > 1) ){
-
- /* reverse order of rects in each band */
- pboxBase = pboxNext = pbox;
-
- while (pboxBase < pbox+nbox){ /* for each band */
-
- /* find last box in band */
- while ((pboxNext < pbox+nbox) &&
- (pboxNext->y1 == pboxBase->y1))
- pboxNext++;
-
- pboxTmp = pboxNext; /* last box in band */
- pptTmp = pptSrc + (pboxTmp - pbox); /* last point in band */
-
- while (pboxTmp != pboxBase){ /* for each box in band */
- --pboxTmp;
- --pptTmp;
- gx->x0=pptTmp->x;
- gx->y0=pptTmp->y;
- gx->x1=pptTmp->x+(pboxTmp->x2-pboxTmp->x1)-1;
- gx->y1=pptTmp->y+(pboxTmp->y2-pboxTmp->y1)-1;
- gx->x2=pboxTmp->x1;
- gx->y2=pboxTmp->y1;
- gx->x3=pboxTmp->x2-1;
- gx->y3=pboxTmp->y2-1;
- GXBlitDone(gx,r);
- }
- pboxBase = pboxNext;
- }
- }
- else{
-
- /* dont need to change order of anything */
- pptTmp=pptSrc;
- pboxTmp=pbox;
-
- while(nbox--){
- gx->x0=pptTmp->x;
- gx->y0=pptTmp->y;
- gx->x1=pptTmp->x+(pboxTmp->x2-pboxTmp->x1)-1;
- gx->y1=pptTmp->y+(pboxTmp->y2-pboxTmp->y1)-1;
- gx->x2=pboxTmp->x1;
- gx->y2=pboxTmp->y1;
- gx->x3=pboxTmp->x2-1;
- gx->y3=pboxTmp->y2-1;
- pboxTmp++;
- pptTmp++;
- GXBlitDone(gx,r);
- }
- }
- }
- GXWait(gx,r);
-}
-
-RegionPtr
-sunGXCopyArea(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty)
- register DrawablePtr pSrcDrawable;
- register DrawablePtr pDstDrawable;
- GC *pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
-{
- if (pSrcDrawable->type != DRAWABLE_WINDOW)
- return cfbCopyArea (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty);
- return cfbBitBlt (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, sunGXDoBitblt, 0);
-}
-
-static unsigned long copyPlaneFG, copyPlaneBG;
-
-static void
-sunGXCopyPlane1to8 (pSrcDrawable, pDstDrawable, rop, prgnDst, pptSrc, planemask, bitPlane)
- DrawablePtr pSrcDrawable;
- DrawablePtr pDstDrawable;
- int rop;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
- unsigned long bitPlane;
-{
- register sunGXPtr gx = sunGXGetScreenPrivate (pDstDrawable->pScreen);
- int srcx, srcy, dstx, dsty, width, height;
- int dstLastx, dstRightx;
- int xoffSrc, widthSrc, widthRest;
- int widthLast;
- unsigned long *psrcBase, *psrc;
- unsigned long bits, tmp;
- register int leftShift, rightShift;
- register int nl, nlMiddle;
- int nbox;
- BoxPtr pbox;
- register int r;
-
- GXDrawInit (gx, copyPlaneFG,
- gx_opaque_stipple_rop_table[rop]|GX_PATTERN_ONES,
- planemask);
- gx->bg = copyPlaneBG;
- gx->mode = GX_BLIT_NOSRC | GX_MODE_COLOR1;
-
- cfbGetLongWidthAndPointer (pSrcDrawable, widthSrc, psrcBase)
-
- nbox = REGION_NUM_RECTS(prgnDst);
- pbox = REGION_RECTS(prgnDst);
- gx->incx = 32;
- gx->incy = 0;
- while (nbox--)
- {
- dstx = pbox->x1;
- dsty = pbox->y1;
- srcx = pptSrc->x;
- srcy = pptSrc->y;
- dstLastx = pbox->x2;
- width = dstLastx - dstx;
- height = pbox->y2 - dsty;
- pbox++;
- pptSrc++;
- if (!width)
- continue;
- psrc = psrcBase + srcy * widthSrc + (srcx >> 5);
- dstLastx--;
- dstRightx = dstx + 31;
- nlMiddle = (width + 31) >> 5;
- widthLast = width & 31;
- xoffSrc = srcx & 0x1f;
- leftShift = xoffSrc;
- rightShift = 32 - leftShift;
- widthRest = widthSrc - nlMiddle;
- if (widthLast)
- nlMiddle--;
- if (leftShift == 0)
- {
- while (height--)
- {
- gx->x0 = dstx;
- gx->x1 = dstRightx;
- gx->y0 = dsty++;
- nl = nlMiddle;
- while (nl--)
- gx->font = *psrc++;
- if (widthLast)
- {
- gx->x1 = dstLastx;
- gx->font = *psrc++;
- }
- psrc += widthRest;
- }
- }
- else
- {
- widthRest--;
- while (height--)
- {
- gx->x0 = dstx;
- gx->x1 = dstRightx;
- gx->y0 = dsty++;
- bits = *psrc++;
- nl = nlMiddle;
- while (nl--)
- {
- tmp = BitLeft(bits, leftShift);
- bits = *psrc++;
- tmp |= BitRight(bits, rightShift);
- gx->font = tmp;
- }
- if (widthLast)
- {
- tmp = BitLeft(bits, leftShift);
- bits = *psrc++;
- tmp |= BitRight(bits, rightShift);
- gx->x1 = dstLastx;
- gx->font = tmp;
- }
- psrc += widthRest;
- }
- }
- }
- GXWait (gx, r);
- gx->incx = 0;
- gx->incy = 0;
- gx->mode = GX_BLIT_SRC | GX_MODE_COLOR8;
-}
-
-RegionPtr sunGXCopyPlane(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, bitPlane)
- DrawablePtr pSrcDrawable;
- DrawablePtr pDstDrawable;
- GCPtr pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
- unsigned long bitPlane;
-{
- RegionPtr ret;
-
- if (pSrcDrawable->bitsPerPixel == 1 && pDstDrawable->bitsPerPixel == 8)
- {
- if (bitPlane == 1)
- {
- copyPlaneFG = pGC->fgPixel;
- copyPlaneBG = pGC->bgPixel;
- ret = cfbBitBlt (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, sunGXCopyPlane1to8, bitPlane);
- }
- else
- ret = miHandleExposures (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, bitPlane);
- }
- else if (pSrcDrawable->bitsPerPixel == 8 && pDstDrawable->bitsPerPixel == 1)
- {
- extern int InverseAlu[16];
- int oldalu;
-
- oldalu = pGC->alu;
- if ((pGC->fgPixel & 1) == 0 && (pGC->bgPixel&1) == 1)
- pGC->alu = InverseAlu[pGC->alu];
- else if ((pGC->fgPixel & 1) == (pGC->bgPixel & 1))
- pGC->alu = mfbReduceRop(pGC->alu, pGC->fgPixel);
- ret = cfbCopyPlaneReduce (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, cfbCopyPlane8to1, bitPlane);
- pGC->alu = oldalu;
- }
- else
- {
- PixmapPtr pBitmap;
- ScreenPtr pScreen = pSrcDrawable->pScreen;
- GCPtr pGC1;
-
- pBitmap = (*pScreen->CreatePixmap) (pScreen, width, height, 1);
- if (!pBitmap)
- return NULL;
- pGC1 = GetScratchGC (1, pScreen);
- if (!pGC1)
- {
- (*pScreen->DestroyPixmap) (pBitmap);
- return NULL;
- }
- /*
- * don't need to set pGC->fgPixel,bgPixel as copyPlane8to1
- * ignores pixel values, expecting the rop to "do the
- * right thing", which GXcopy will.
- */
- ValidateGC ((DrawablePtr) pBitmap, pGC1);
- /* no exposures here, scratch GC's don't get graphics expose */
- (void) cfbCopyPlaneReduce (pSrcDrawable, (DrawablePtr) pBitmap,
- pGC1, srcx, srcy, width, height, 0, 0, cfbCopyPlane8to1, bitPlane);
- copyPlaneFG = pGC->fgPixel;
- copyPlaneBG = pGC->bgPixel;
- (void) cfbBitBlt ((DrawablePtr) pBitmap, pDstDrawable, pGC,
- 0, 0, width, height, dstx, dsty, sunGXCopyPlane1to8, 1);
- FreeScratchGC (pGC1);
- (*pScreen->DestroyPixmap) (pBitmap);
- /* compute resultant exposures */
- ret = miHandleExposures (pSrcDrawable, pDstDrawable, pGC,
- srcx, srcy, width, height,
- dstx, dsty, bitPlane);
- }
- return ret;
-}
-
-void
-sunGXFillRectAll (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox;
- BoxPtr pBox;
-{
- register sunGXPtr gx = sunGXGetScreenPrivate (pDrawable->pScreen);
- register sunGXPrivGCPtr gxPriv = sunGXGetGCPrivate (pGC);
- register int r;
-
- GXDrawInit(gx,pGC->fgPixel,gx_solid_rop_table[pGC->alu]|POLY_N,pGC->planemask);
- if (gxPriv->stipple)
- GXStippleInit(gx,gxPriv->stipple);
- while (nBox--) {
- gx->arecty = pBox->y1;
- gx->arectx = pBox->x1;
- gx->arecty = pBox->y2;
- gx->arectx = pBox->x2;
- pBox++;
- GXDrawDone(gx,r);
- }
- GXWait(gx,r);
-}
-
-#define NUM_STACK_RECTS 1024
-
-void
-sunGXPolyFillRect(pDrawable, pGC, nrectFill, prectInit)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int nrectFill; /* number of rectangles to fill */
- xRectangle *prectInit; /* Pointer to first rectangle to fill */
-{
- xRectangle *prect;
- RegionPtr prgnClip;
- register BoxPtr pbox;
- register BoxPtr pboxClipped;
- BoxPtr pboxClippedBase;
- BoxPtr pextent;
- BoxRec stackRects[NUM_STACK_RECTS];
- int numRects;
- int n;
- int xorg, yorg;
-
- prgnClip = pGC->pCompositeClip;
- prect = prectInit;
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- if (xorg || yorg)
- {
- prect = prectInit;
- n = nrectFill;
- while(n--)
- {
- prect->x += xorg;
- prect->y += yorg;
- prect++;
- }
- }
-
- prect = prectInit;
-
- numRects = REGION_NUM_RECTS(prgnClip) * nrectFill;
- if (numRects > NUM_STACK_RECTS)
- {
- pboxClippedBase = (BoxPtr)ALLOCATE_LOCAL(numRects * sizeof(BoxRec));
- if (!pboxClippedBase)
- return;
- }
- else
- pboxClippedBase = stackRects;
-
- pboxClipped = pboxClippedBase;
-
- if (REGION_NUM_RECTS(prgnClip) == 1)
- {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_RECTS(prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--)
- {
- if ((pboxClipped->x1 = prect->x) < x1)
- pboxClipped->x1 = x1;
-
- if ((pboxClipped->y1 = prect->y) < y1)
- pboxClipped->y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- pboxClipped->x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- pboxClipped->y2 = by2;
-
- prect++;
- if ((pboxClipped->x1 < pboxClipped->x2) &&
- (pboxClipped->y1 < pboxClipped->y2))
- {
- pboxClipped++;
- }
- }
- }
- else
- {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_EXTENTS(pGC->pScreen, prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--)
- {
- BoxRec box;
-
- if ((box.x1 = prect->x) < x1)
- box.x1 = x1;
-
- if ((box.y1 = prect->y) < y1)
- box.y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- box.x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- box.y2 = by2;
-
- prect++;
-
- if ((box.x1 >= box.x2) || (box.y1 >= box.y2))
- continue;
-
- n = REGION_NUM_RECTS (prgnClip);
- pbox = REGION_RECTS(prgnClip);
-
- /* clip the rectangle to each box in the clip region
- this is logically equivalent to calling Intersect()
- */
- while(n--)
- {
- pboxClipped->x1 = max(box.x1, pbox->x1);
- pboxClipped->y1 = max(box.y1, pbox->y1);
- pboxClipped->x2 = min(box.x2, pbox->x2);
- pboxClipped->y2 = min(box.y2, pbox->y2);
- pbox++;
-
- /* see if clipping left anything */
- if(pboxClipped->x1 < pboxClipped->x2 &&
- pboxClipped->y1 < pboxClipped->y2)
- {
- pboxClipped++;
- }
- }
- }
- }
- if (pboxClipped != pboxClippedBase)
- sunGXFillRectAll(pDrawable, pGC,
- pboxClipped-pboxClippedBase, pboxClippedBase);
- if (pboxClippedBase != stackRects)
- DEALLOCATE_LOCAL(pboxClippedBase);
-}
-
-void
-sunGXFillSpans (pDrawable, pGC, n, ppt, pwidth, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int n; /* number of spans to fill */
- DDXPointPtr ppt; /* pointer to list of start points */
- int *pwidth; /* pointer to list of n widths */
- int fSorted;
-{
- int x, y;
- int width;
- /* next three parameters are post-clip */
- int nTmp;
- int *pwidthFree;/* copies of the pointers to free */
- DDXPointPtr pptFree;
- register sunGXPtr gx = sunGXGetScreenPrivate (pDrawable->pScreen);
- cfbPrivGCPtr devPriv = cfbGetGCPrivate(pGC);
- register sunGXPrivGCPtr gxPriv = sunGXGetGCPrivate (pGC);
- register int r;
- BoxPtr extents;
-
- GXDrawInit(gx,pGC->fgPixel,gx_solid_rop_table[pGC->alu]|POLY_O,pGC->planemask)
- if (gxPriv->stipple)
- GXStippleInit(gx,gxPriv->stipple);
- if (devPriv->oneRect)
- {
- extents = &pGC->pCompositeClip->extents;
- GXSetClip (gx, extents);
- }
- else
- {
- nTmp = n * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(nTmp * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(nTmp * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- n = miClipSpans(pGC->pCompositeClip, ppt, pwidth, n,
- pptFree, pwidthFree, fSorted);
- pwidth = pwidthFree;
- ppt = pptFree;
- }
- while (n--)
- {
- x = ppt->x;
- y = ppt->y;
- ppt++;
- width = *pwidth++;
- if (width)
- {
- sunGXFillSpan(gx,y,x,x + width - 1,r);
- }
- }
- GXWait(gx,r);
- if (devPriv->oneRect)
- {
- GXResetClip (gx, pDrawable->pScreen);
- }
- else
- {
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
- }
-}
-
-#ifdef NOTDEF
-/* cfb is faster for dots */
-void
-sunGXPolyPoint(pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode;
- int npt;
- xPoint *pptInit;
-{
- register sunGXPtr gx = sunGXGetScreenPrivate (pDrawable->pScreen);
- RegionPtr cclip;
- int nbox;
- register int i;
- register BoxPtr pbox;
- cfbPrivGCPtr devPriv;
- xPoint *ppt;
- int x, y;
- int r;
- int off;
-
- devPriv = (cfbPrivGC *)(pGC->devPrivates[cfbGCPrivateIndex].ptr);
- if (devPriv->rop == GXnoop)
- return;
- cclip = pGC->pCompositeClip;
- GXDrawInit(gx,pGC->fgPixel,gx_solid_rop_table[pGC->alu],pGC->planemask);
- gx->offx = pDrawable->x;
- gx->offy = pDrawable->y;
- for (nbox = REGION_NUM_RECTS(cclip), pbox = REGION_RECTS(cclip);
- --nbox >= 0;
- pbox++)
- {
- sunGXSetClip(gx,pbox);
- if (mode != CoordModeOrigin)
- {
- x = 0;
- y = 0;
- for (ppt = pptInit, i = npt; --i >= 0;)
- {
- gx->apointy = y += ppt->y;
- gx->apointx = x += ppt->x;
- ++ppt;
- GXDrawDone(gx,r);
- }
- }
- else
- {
- for (ppt = pptInit, i = npt; --i >= 0;)
- {
- gx->apointy = ppt->y;
- gx->apointx = ppt->x;
- ++ppt;
- GXDrawDone(gx,r);
- }
- }
- }
- GXWait(gx,r);
- GXResetOff (gx);
- GXResetClip(gx,pDrawable->pScreen);
-}
-#endif
-
-#include "mifillarc.h"
-
-#define FILLSPAN(gx,y,x1,x2,r) {\
- if (x2 >= x1) {\
- sunGXFillSpan(gx,y,x1,x2,r) \
- } \
-}
-
-#define FILLSLICESPANS(flip,y) \
- if (!flip) \
- { \
- FILLSPAN(gx,y,xl,xr,r) \
- } \
- else \
- { \
- xc = xorg - x; \
- FILLSPAN(gx, y, xc, xr, r) \
- xc += slw - 1; \
- FILLSPAN(gx, y, xl, xc, r) \
- }
-
-static void
-sunGXFillEllipse (pDraw, gx, arc)
- DrawablePtr pDraw;
- sunGXPtr gx;
- xArc *arc;
-{
- int x, y, e;
- int yk, xk, ym, xm, dx, dy, xorg, yorg;
- int y_top, y_bot;
- miFillArcRec info;
- register int xpos;
- int r;
- int slw;
-
- miFillArcSetup(arc, &info);
- MIFILLARCSETUP();
- y_top = yorg - y;
- y_bot = yorg + y + dy;
- while (y)
- {
- y_top++;
- y_bot--;
- MIFILLARCSTEP(slw);
- if (!slw)
- continue;
- xpos = xorg - x;
- sunGXFillSpan (gx,y_top,xpos,xpos+slw - 1,r);
- if (miFillArcLower(slw))
- sunGXFillSpan (gx,y_bot,xpos,xpos+slw - 1,r);
- }
-}
-
-
-static void
-sunGXFillArcSlice (pDraw, pGC, gx, arc)
- DrawablePtr pDraw;
- GCPtr pGC;
- sunGXPtr gx;
- xArc *arc;
-{
- int yk, xk, ym, xm, dx, dy, xorg, yorg, slw;
- register int x, y, e;
- miFillArcRec info;
- miArcSliceRec slice;
- int xl, xr, xc;
- int y_top, y_bot;
- int r;
-
- miFillArcSetup(arc, &info);
- miFillArcSliceSetup(arc, &slice, pGC);
- MIFILLARCSETUP();
- y_top = yorg - y;
- y_bot = yorg + y + dy;
- while (y > 0)
- {
- y_top++;
- y_bot--;
- MIFILLARCSTEP(slw);
- MIARCSLICESTEP(slice.edge1);
- MIARCSLICESTEP(slice.edge2);
- if (miFillSliceUpper(slice))
- {
- MIARCSLICEUPPER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_top, y_top);
- }
- if (miFillSliceLower(slice))
- {
- MIARCSLICELOWER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_bot, y_bot);
- }
- }
-}
-
-#define FAST_CIRCLES
-#ifdef FAST_CIRCLES
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define Bits32(v) (v)
-#define Bits16(v) (v)
-#define Bits8(v) (v)
-#else
-#define FlipBits2(a) ((((a) & 0x1) << 1) | (((a) & 0x2) >> 1))
-#define FlipBits4(a) ((FlipBits2(a) << 2) | FlipBits2(a >> 2))
-#define FlipBits8(a) ((FlipBits4(a) << 4) | FlipBits4(a >> 4))
-#define FlipBits16(a) ((FlipBits8(a) << 8) | FlipBits8(a >> 8))
-#define FlipBits32(a) ((FlipBits16(a) << 16) | FlipBits16(a >> 16))
-#define Bits32(v) FlipBits32(v)
-#define Bits16(v) FlipBits16(v)
-#define Bits8(v) FlipBits8(v)
-#endif
-
-#define B(x) Bits16(x)
-#define DO_FILLED_ARCS
-#include "circleset.h"
-#undef B
-#undef Bits8
-#undef Bits16
-#undef Bits32
-#define UNSET_CIRCLE if (old_width) \
- { \
- gx->alu = gx_solid_rop_table[pGC->alu]; \
- old_width = -old_width; \
- }
-
-#else
-#define UNSET_CIRCLE
-#endif
-
-void
-sunGXPolyFillArc (pDraw, pGC, narcs, parcs)
- DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- register xArc *arc;
- register int i;
- int x, y;
- BoxRec box;
- BoxPtr extents = NULL;
- RegionPtr cclip;
- register sunGXPtr gx = sunGXGetScreenPrivate (pDraw->pScreen);
- sunGXPrivGCPtr gxPriv = sunGXGetGCPrivate (pGC);
- cfbPrivGCPtr devPriv;
- register int r;
-#ifdef FAST_CIRCLES
- int old_width = 0;
-#endif
-
- GXDrawInit(gx,pGC->fgPixel,gx_solid_rop_table[pGC->alu]|POLY_O,pGC->planemask);
- if (gxPriv->stipple)
- GXStippleInit(gx,gxPriv->stipple);
- devPriv = (cfbPrivGC *)(pGC->devPrivates[cfbGCPrivateIndex].ptr);
- cclip = pGC->pCompositeClip;
- GXSetOff(gx,pDraw->x,pDraw->y)
- if (devPriv->oneRect) {
- extents = &cclip->extents;
- GXSetClip(gx,extents);
- }
- for (arc = parcs, i = narcs; --i >= 0; arc++)
- {
- if (miFillArcEmpty(arc))
- continue;
- if (miCanFillArc(arc))
- {
- x = arc->x;
- y = arc->y;
- if (!devPriv->oneRect)
- {
- box.x1 = x + pDraw->x;
- box.y1 = y + pDraw->y;
- box.x2 = box.x1 + (int)arc->width + 1;
- box.y2 = box.y1 + (int)arc->height + 1;
- }
- if (devPriv->oneRect ||
- RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN)
- {
- if ((arc->angle2 >= FULLCIRCLE) ||
- (arc->angle2 <= -FULLCIRCLE))
- {
-#ifdef FAST_CIRCLES
-/* who really needs fast filled circles? */
- if (arc->width == arc->height && arc->width <= 16 &&
- !gxPriv->stipple)
- {
- int offx, offy;
- if (arc->width != old_width)
- {
- int i;
- Uint *sp;
- VUint *dp;
-
- if (old_width != -arc->width)
- {
- sp = (Uint *) filled_arcs[arc->width-1];
- dp = gx->pattern;
- i = 8;
- while (i--)
- dp[i] = sp[i];
- }
- gx->alu = gx_stipple_rop_table[pGC->alu]|GX_PATTERN_MASK;
- old_width = arc->width;
- }
- offx = 16 - ((x + pDraw->x) & 0x0f);
- offy = 16 - ((y + pDraw->y) & 0x0f);
- gx->patalign = (offx << 16) | offy;
- gx->arecty = y;
- gx->arectx = x;
- gx->arecty = y + old_width-1;
- gx->arectx = x + old_width-1;
- GXDrawDone (gx, r);
- }
- else
-#endif
- {
- UNSET_CIRCLE
- sunGXFillEllipse (pDraw, gx, arc);
- }
- }
- else
- {
- UNSET_CIRCLE
- sunGXFillArcSlice (pDraw, pGC, gx, arc);
- }
- continue;
- }
- }
- UNSET_CIRCLE
- GXWait (gx,r);
- GXResetOff (gx);
- if (devPriv->oneRect)
- GXResetClip (gx, pDraw->pScreen);
- miPolyFillArc(pDraw, pGC, 1, arc);
- GXSetOff (gx, pDraw->x, pDraw->y);
- if (devPriv->oneRect)
- GXSetClip (gx, extents);
- }
- GXWait (gx, r);
- GXResetOff (gx);
- if (devPriv->oneRect)
- GXResetClip (gx, pDraw->pScreen);
-}
-
-void
-sunGXFillPoly1Rect (pDrawable, pGC, shape, mode, count, ptsIn)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int count;
- DDXPointPtr ptsIn;
-{
- BoxPtr extents;
- int x1, x2, x3, x4;
- int y1, y2, y3, y4;
- sunGXPtr gx = sunGXGetScreenPrivate (pDrawable->pScreen);
- sunGXPrivGCPtr gxPriv = sunGXGetGCPrivate (pGC);
- int r;
- typedef struct {
- Uint x;
- Uint y;
- Uint z;
- } GXPointRec, *GXPointPtr;
- GXPointPtr tri, qua;
-
- if (count < 3)
- return;
- if (shape != Convex && count > 4)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
- GXDrawInit(gx,pGC->fgPixel,gx_solid_rop_table[pGC->alu]|POLY_N,pGC->planemask);
- if (gxPriv->stipple)
- GXStippleInit(gx,gxPriv->stipple);
- extents = &pGC->pCompositeClip->extents;
- GXSetOff(gx,pDrawable->x, pDrawable->y);
- GXSetClip(gx,extents);
- if (mode == CoordModeOrigin)
- {
- tri = (GXPointPtr) &gx->atrix;
- qua = (GXPointPtr) &gx->aquadx;
- }
- else
- {
- tri = (GXPointPtr) &gx->rtrix;
- qua = (GXPointPtr) &gx->rquadx;
- }
- if (count == 3) {
- gx->apointy = ptsIn[0].y;
- gx->apointx = ptsIn[0].x;
- tri->y = ptsIn[1].y;
- tri->x = ptsIn[1].x;
- tri->y = ptsIn[2].y;
- tri->x = ptsIn[2].x;
- GXDrawDone (gx, r);
- }
- else if (count == 4)
- {
- gx->apointy = ptsIn[0].y;
- gx->apointx = ptsIn[0].x;
- qua->y = ptsIn[1].y;
- qua->x = ptsIn[1].x;
- qua->y = ptsIn[2].y;
- qua->x = ptsIn[2].x;
- qua->y = ptsIn[3].y;
- qua->x = ptsIn[3].x;
- GXDrawDone (gx, r);
- if (r < 0 && shape != Convex)
- {
- GXWait(gx,r);
- GXResetOff(gx);
- GXResetClip(gx,pDrawable->pScreen);
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
- }
- else
- {
- y1 = ptsIn[0].y;
- x1 = ptsIn[0].x;
- y2 = ptsIn[1].y;
- x2 = ptsIn[1].x;
- count -= 2;
- ptsIn += 2;
- while (count) {
- x3 = ptsIn->x;
- y3 = ptsIn->y;
- ptsIn++;
- count--;
- gx->apointy = y1;
- gx->apointx = x1;
- if (count == 0) {
- tri->y = y2;
- tri->x = x2;
- tri->y = y3;
- tri->x = x3;
- }
- else
- {
- y4 = ptsIn->y;
- x4 = ptsIn->x;
- ptsIn++;
- count--;
- qua->y = y2;
- qua->x = x2;
- qua->y = y3;
- qua->x = x3;
- qua->y = y4;
- qua->x = x4;
- if (mode == CoordModeOrigin)
- {
- x2 = x4;
- y2 = y4;
- }
- else
- {
- x2 = x2 + x3 + x4;
- y2 = y2 + y3 + y4;
- }
- }
- GXDrawDone (gx, r);
- }
- }
- GXWait(gx,r);
- GXResetOff(gx);
- GXResetClip(gx,pDrawable->pScreen);
-}
-
-/*
- * Note that the GX does not allow CapNotLast, so the code fakes it. This is
- * expensive to do as the GX is asynchronous and must be synced with GXWait
- * before fetching and storing the final line point. If only the hardware was
- * designed for X.
- */
-
-/* hard code the screen width; otherwise we'd have to check or mul */
-
-#define WIDTH_MUL(y) (((y) << 10) + ((y) << 7))
-#define GX_WIDTH 1152
-#define WID_OK(s) ((s)->width == GX_WIDTH)
-
-void
-sunGXPolySeg1Rect (pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nseg;
- xSegment *pSeg;
-{
- sunGXPtr gx = sunGXGetScreenPrivate (pDrawable->pScreen);
- sunGXPrivGCPtr gxPriv = sunGXGetGCPrivate (pGC);
- BoxPtr extents;
- int x, y;
- int r;
- unsigned char *baseAddr, *loAddr, *hiAddr, *saveAddr = 0, save = 0;
-
- GXDrawInit(gx,pGC->fgPixel,gx_solid_rop_table[pGC->alu]|POLY_O,pGC->planemask);
- if (gxPriv->stipple)
- GXStippleInit(gx,gxPriv->stipple);
- GXSetOff (gx, pDrawable->x, pDrawable->y);
-
- extents = &pGC->pCompositeClip->extents;
- GXSetClip (gx, extents);
- if (pGC->capStyle == CapNotLast)
- {
- sunGXGetAddrRange(pDrawable,extents,baseAddr,loAddr,hiAddr);
- while (nseg--)
- {
- gx->aliney = pSeg->y1;
- gx->alinex = pSeg->x1;
- y = pSeg->y2;
- x = pSeg->x2;
- saveAddr = baseAddr + WIDTH_MUL(y) + x;
- if (saveAddr < loAddr || hiAddr < saveAddr)
- saveAddr = 0;
- else
- save = *saveAddr;
- gx->aliney = y;
- gx->alinex = x;
- GXDrawDone (gx, r);
- if (saveAddr)
- {
- GXWait(gx,r);
- *saveAddr = save;
- }
- pSeg++;
- }
- }
- else
- {
- while (nseg--)
- {
- gx->aliney = pSeg->y1;
- gx->alinex = pSeg->x1;
- gx->aliney = pSeg->y2;
- gx->alinex = pSeg->x2;
- pSeg++;
- GXDrawDone (gx, r);
- }
- }
- GXWait (gx, r);
- GXResetOff (gx);
- GXResetClip (gx, pDrawable->pScreen);
-}
-
-void
-sunGXPolylines1Rect (pDrawable, pGC, mode, npt, ppt)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode;
- int npt;
- DDXPointPtr ppt;
-{
- sunGXPtr gx = sunGXGetScreenPrivate (pDrawable->pScreen);
- sunGXPrivGCPtr gxPriv = sunGXGetGCPrivate (pGC);
- BoxPtr extents;
- unsigned char *baseAddr, *loAddr, *hiAddr, *saveAddr, save = 0;
- int r;
- Bool careful;
- Bool capNotLast;
-
- if (!--npt)
- return;
- GXDrawInit(gx,pGC->fgPixel,gx_solid_rop_table[pGC->alu]|POLY_O,pGC->planemask);
- if (gxPriv->stipple)
- GXStippleInit(gx,gxPriv->stipple);
- careful = ((pGC->alu & 0xc) == 0x8 || (pGC->alu & 0x3) == 0x2);
- capNotLast = pGC->capStyle == CapNotLast;
-
- extents = &pGC->pCompositeClip->extents;
- GXSetOff (gx, pDrawable->x, pDrawable->y);
- GXSetClip (gx, extents);
- if (careful)
- {
- int x, y;
- sunGXGetAddrRange (pDrawable, extents, baseAddr, loAddr, hiAddr);
- gx->apointy = y = ppt->y;
- gx->apointx = x = ppt->x;
- ppt++;
- while (npt--)
- {
- if (mode == CoordModeOrigin)
- {
- y = ppt->y;
- x = ppt->x;
- }
- else
- {
- y += ppt->y;
- x += ppt->x;
- }
- ppt++;
- saveAddr = baseAddr + WIDTH_MUL(y) + x;
- if (saveAddr < loAddr || hiAddr < saveAddr)
- saveAddr = 0;
- else
- save = *saveAddr;
- gx->aliney = y;
- gx->alinex = x;
- GXDrawDone (gx, r);
- if (saveAddr)
- {
- GXWait(gx,r);
- *saveAddr = save;
- }
- }
- GXWait(gx,r);
- }
- else
- {
- int x, y;
- if (capNotLast)
- npt--;
- if (mode == CoordModeOrigin)
- {
- x = y = 0;
- gx->apointy = ppt->y;
- gx->apointx = ppt->x;
- ppt++;
- while (npt--)
- {
- gx->aliney = ppt->y;
- gx->alinex = ppt->x;
- ++ppt;
- GXDrawDone(gx,r);
- }
- }
- else
- {
- y = gx->apointy = ppt->y;
- x = gx->apointx = ppt->x;
- ppt++;
- while (npt--)
- {
- y += gx->rliney = ppt->y;
- x += gx->rlinex = ppt->x;
- ++ppt;
- GXDrawDone(gx,r);
- }
- }
- if (capNotLast)
- {
- sunGXGetAddrRange (pDrawable, extents, baseAddr, loAddr, hiAddr);
- x += ppt->x;
- y += ppt->y;
- saveAddr = baseAddr + WIDTH_MUL(y) + x;
- if (saveAddr < loAddr || hiAddr < saveAddr)
- saveAddr = 0;
- else
- save = *saveAddr;
- gx->aliney = y;
- gx->alinex = x;
- GXDrawDone(gx,r);
- GXWait(gx,r);
- if (saveAddr)
- *saveAddr = save;
- }
- else
- {
- GXWait(gx,r);
- }
- }
- GXResetOff (gx);
- GXResetClip (gx, pDrawable->pScreen);
-}
-
-void
-sunGXPolyFillRect1Rect (pDrawable, pGC, nrect, prect)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nrect;
- xRectangle *prect;
-{
- sunGXPtr gx = sunGXGetScreenPrivate (pDrawable->pScreen);
- sunGXPrivGCPtr gxPriv = sunGXGetGCPrivate (pGC);
- BoxPtr extents = &pGC->pCompositeClip->extents;
- int r;
- int x, y;
-
- GXDrawInit(gx,pGC->fgPixel,gx_solid_rop_table[pGC->alu]|POLY_N,pGC->planemask);
- if (gxPriv->stipple)
- GXStippleInit(gx,gxPriv->stipple);
- GXSetOff (gx, pDrawable->x, pDrawable->y);
- GXSetClip (gx, extents);
- while (nrect--)
- {
- gx->arecty = y = prect->y;
- gx->arectx = x = prect->x;
- gx->arecty = y + (int) prect->height;
- gx->arectx = x + (int) prect->width;
- prect++;
- GXDrawDone (gx, r);
- }
- GXWait (gx, r);
- GXResetOff (gx);
- GXResetClip (gx, pDrawable->pScreen);
-}
-
-static void
-sunGXPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase;
-{
- sunGXPtr gx = sunGXGetScreenPrivate (pDrawable->pScreen);
- int h;
- int w;
- CharInfoPtr pci;
- unsigned long *bits;
- register int r;
- RegionPtr clip;
- BoxPtr extents;
- BoxRec box;
-
- clip = pGC->pCompositeClip;
- extents = &clip->extents;
-
- if (REGION_NUM_RECTS(clip) == 1)
- {
- GXSetClip (gx, extents);
- }
- else
- {
- /* compute an approximate (but covering) bounding box */
- box.x1 = 0;
- if ((ppci[0]->metrics.leftSideBearing < 0))
- box.x1 = ppci[0]->metrics.leftSideBearing;
- h = nglyph - 1;
- w = ppci[h]->metrics.rightSideBearing;
- while (--h >= 0)
- w += ppci[h]->metrics.characterWidth;
- box.x2 = w;
- box.y1 = -FONTMAXBOUNDS(pGC->font,ascent);
- box.y2 = FONTMAXBOUNDS(pGC->font,descent);
-
- box.x1 += pDrawable->x + x;
- box.x2 += pDrawable->x + x;
- box.y1 += pDrawable->y + y;
- box.y2 += pDrawable->y + y;
-
- switch (RECT_IN_REGION(pGC->pScreen, clip, &box))
- {
- case rgnPART:
- cfbPolyGlyphBlt8 (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
- case rgnOUT:
- return;
- }
- }
-
- GXDrawInit (gx, pGC->fgPixel,
- gx_stipple_rop_table[pGC->alu]|GX_PATTERN_ONES|POLY_N,
- pGC->planemask);
- gx->mode = GX_BLIT_NOSRC | GX_MODE_COLOR1;
- x += pDrawable->x;
- y += pDrawable->y;
-
- while (nglyph--)
- {
- pci = *ppci++;
- gx->incx = 0;
- gx->incy = 1;
- gx->x0 = x + pci->metrics.leftSideBearing;
- gx->x1 = (x + pci->metrics.rightSideBearing) - 1;
- gx->y0 = y - pci->metrics.ascent;
- h = pci->metrics.ascent + pci->metrics.descent;
- bits = (unsigned long *) pci->bits;
- while (h--) {
- gx->font = *bits++;
- }
- x += pci->metrics.characterWidth;
- }
- GXWait (gx, r);
- gx->mode = GX_BLIT_SRC | GX_MODE_COLOR8;
- GXResetClip (gx, pDrawable->pScreen);
-}
-
-static void
-sunGXTEGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- sunGXPtr gx = sunGXGetScreenPrivate (pDrawable->pScreen);
- int h, hTmp;
- FontPtr pfont = pGC->font;
- register int r;
- unsigned long *char1, *char2, *char3, *char4;
- int widthGlyphs, widthGlyph;
- BoxRec bbox;
- BoxPtr extents;
- RegionPtr clip;
- unsigned long rop;
-
- widthGlyph = FONTMAXBOUNDS(pfont,characterWidth);
- h = FONTASCENT(pfont) + FONTDESCENT(pfont);
- clip = pGC->pCompositeClip;
- extents = &clip->extents;
-
- if (REGION_NUM_RECTS(clip) == 1)
- {
- GXSetClip (gx, extents);
- }
- else
- {
- bbox.x1 = x + pDrawable->x;
- bbox.x2 = bbox.x1 + (widthGlyph * nglyph);
- bbox.y1 = y + pDrawable->y - FONTASCENT(pfont);
- bbox.y2 = bbox.y1 + h;
-
- switch (RECT_IN_REGION(pGC->pScreen, clip, &bbox))
- {
- case rgnPART:
- if (pglyphBase)
- cfbPolyGlyphBlt8(pDrawable, pGC, x, y, nglyph, ppci, NULL);
- else
- miImageGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
- case rgnOUT:
- return;
- }
- }
-
- rop = gx_opaque_stipple_rop_table[GXcopy] | GX_PATTERN_ONES;
- if (pglyphBase)
- rop = gx_stipple_rop_table[pGC->alu] | GX_PATTERN_ONES;
- GXDrawInit (gx, pGC->fgPixel, rop, pGC->planemask);
- gx->bg = pGC->bgPixel;
- gx->mode = GX_BLIT_NOSRC | GX_MODE_COLOR1;
-
- y = y + pDrawable->y - FONTASCENT(pfont);
- x += pDrawable->x;
-
-#define LoopIt(count, w, loadup, fetch) \
- while (nglyph >= count) \
- { \
- nglyph -= count; \
- gx->incx = 0; \
- gx->incy = 1; \
- gx->x0 = x; \
- gx->x1 = (x += w) - 1; \
- gx->y0 = y; \
- loadup \
- hTmp = h; \
- while (hTmp--) \
- gx->font = fetch; \
- }
-
- if (widthGlyph <= 8)
- {
- widthGlyphs = widthGlyph << 2;
- LoopIt(4, widthGlyphs,
- char1 = (unsigned long *) (*ppci++)->bits;
- char2 = (unsigned long *) (*ppci++)->bits;
- char3 = (unsigned long *) (*ppci++)->bits;
- char4 = (unsigned long *) (*ppci++)->bits;,
- (*char1++ | ((*char2++ | ((*char3++ | (*char4++
- >> widthGlyph))
- >> widthGlyph))
- >> widthGlyph)))
- }
- else if (widthGlyph <= 10)
- {
- widthGlyphs = (widthGlyph << 1) + widthGlyph;
- LoopIt(3, widthGlyphs,
- char1 = (unsigned long *) (*ppci++)->bits;
- char2 = (unsigned long *) (*ppci++)->bits;
- char3 = (unsigned long *) (*ppci++)->bits;,
- (*char1++ | ((*char2++ | (*char3++ >> widthGlyph)) >> widthGlyph)))
- }
- else if (widthGlyph <= 16)
- {
- widthGlyphs = widthGlyph << 1;
- LoopIt(2, widthGlyphs,
- char1 = (unsigned long *) (*ppci++)->bits;
- char2 = (unsigned long *) (*ppci++)->bits;,
- (*char1++ | (*char2++ >> widthGlyph)))
- }
- while (nglyph--) {
- gx->incx = 0;
- gx->incy = 1;
- gx->x0 = x;
- gx->x1 = (x += widthGlyph) - 1;
- gx->y0 = y;
- char1 = (unsigned long *) (*ppci++)->bits;
- hTmp = h;
- while (hTmp--)
- gx->font = *char1++;
- }
- gx->incx = 0;
- gx->incy = 0;
- GXWait (gx, r);
- gx->mode = GX_BLIT_SRC | GX_MODE_COLOR8;
- GXResetClip (gx, pDrawable->pScreen);
-}
-
-static void
-sunGXPolyTEGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- sunGXTEGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, (char *) 1);
-}
-
-static void
-sunGXFillBoxSolid (pDrawable, nBox, pBox, pixel)
- DrawablePtr pDrawable;
- int nBox;
- BoxPtr pBox;
- unsigned long pixel;
-{
- register sunGXPtr gx = sunGXGetScreenPrivate (pDrawable->pScreen);
- register int r;
-
- GXDrawInit(gx,pixel,gx_solid_rop_table[GXcopy]|POLY_N,~0);
- while (nBox--) {
- gx->arecty = pBox->y1;
- gx->arectx = pBox->x1;
- gx->arecty = pBox->y2;
- gx->arectx = pBox->x2;
- pBox++;
- GXDrawDone(gx,r);
- }
- GXWait(gx,r);
-}
-
-void
-sunGXFillBoxStipple (pDrawable, nBox, pBox, stipple)
- DrawablePtr pDrawable;
- int nBox;
- BoxPtr pBox;
- sunGXStipplePtr stipple;
-{
- register sunGXPtr gx = sunGXGetScreenPrivate (pDrawable->pScreen);
- register int r;
- int patx, paty;
-
- patx = 16 - (pDrawable->x & 0xf);
- paty = 16 - (pDrawable->y & 0xf);
- stipple->patalign = (patx << 16) | paty;
- GXDrawInit(gx,0,gx_solid_rop_table[GXcopy]|POLY_N,~0);
- GXStippleInit(gx, stipple);
- while (nBox--) {
- gx->arecty = pBox->y1;
- gx->arectx = pBox->x1;
- gx->arecty = pBox->y2;
- gx->arectx = pBox->x2;
- pBox++;
- GXDrawDone(gx,r);
- }
- GXWait(gx,r);
-}
-
-Bool
-sunGXCheckTile (pPixmap, stipple)
- PixmapPtr pPixmap;
- sunGXStipplePtr stipple;
-{
- unsigned short *sbits;
- unsigned int fg = (unsigned int)~0, bg = (unsigned int)~0;
- unsigned char *tilebitsLine, *tilebits, tilebit;
- unsigned short sbit, mask;
- int nbwidth;
- int h, w;
- int x, y;
- int s_y, s_x;
-
- h = pPixmap->drawable.height;
- if (h > 16 || (h & (h - 1)))
- return FALSE;
- w = pPixmap->drawable.width;
- if (w > 16 || (w & (w - 1)))
- return FALSE;
- sbits = (unsigned short *) stipple->bits;
- tilebitsLine = (unsigned char *) pPixmap->devPrivate.ptr;
- nbwidth = pPixmap->devKind;
- for (y = 0; y < h; y++) {
- tilebits = tilebitsLine;
- tilebitsLine += nbwidth;
- sbit = 0;
- mask = 1 << 15;
- for (x = 0; x < w; x++)
- {
- tilebit = *tilebits++;
- if (tilebit == fg)
- sbit |= mask;
- else if (tilebit != bg)
- {
- if (fg == ~0)
- {
- fg = tilebit;
- sbit |= mask;
- }
- else if (bg == ~0)
- {
- bg = tilebit;
- }
- else
- {
- return FALSE;
- }
- }
- mask >>= 1;
- }
- for (s_x = w; s_x < 16; s_x <<= 1)
- sbit = sbit | (sbit >> s_x);
- for (s_y = y; s_y < 16; s_y += h)
- sbits[s_y] = sbit;
- }
- stipple->fore = fg;
- stipple->back = bg;
- return TRUE;
-}
-
-Bool
-sunGXCheckStipple (pPixmap, stipple)
- PixmapPtr pPixmap;
- sunGXStipplePtr stipple;
-{
- unsigned short *sbits;
- unsigned long *stippleBits;
- unsigned long sbit, mask;
- int h, w;
- int y;
- int s_y, s_x;
-
- h = pPixmap->drawable.height;
- if (h > 16 || (h & (h - 1)))
- return FALSE;
- w = pPixmap->drawable.width;
- if (w > 16 || (w & (w - 1)))
- return FALSE;
- sbits = (unsigned short *) stipple->bits;
- stippleBits = (unsigned long *) pPixmap->devPrivate.ptr;
- mask = ((1 << w) - 1) << (16 - w);
- for (y = 0; y < h; y++) {
- sbit = (*stippleBits++ >> 16) & mask;
- for (s_x = w; s_x < 16; s_x <<= 1)
- sbit = sbit | (sbit >> s_x);
- for (s_y = y; s_y < 16; s_y += h)
- sbits[s_y] = sbit;
- }
- return TRUE;
-}
-
-/* cache one stipple; figuring out if we can use the stipple is as hard as
- * computing it, so we just use this one and leave it here if it
- * can't be used this time
- */
-
-static sunGXStipplePtr tmpStipple;
-
-Bool
-sunGXCheckFill (pGC, pDrawable)
- GCPtr pGC;
- DrawablePtr pDrawable;
-{
- sunGXPrivGCPtr gxPriv = sunGXGetGCPrivate (pGC);
- sunGXStipplePtr stipple;
- Uint alu;
- int xrot, yrot;
-
- if (pGC->fillStyle == FillSolid)
- {
- if (gxPriv->stipple)
- {
- xfree (gxPriv->stipple);
- gxPriv->stipple = 0;
- }
- return TRUE;
- }
- if (!(stipple = gxPriv->stipple))
- {
- if (!tmpStipple)
- {
- tmpStipple = (sunGXStipplePtr) xalloc (sizeof *tmpStipple);
- if (!tmpStipple)
- return FALSE;
- }
- stipple = tmpStipple;
- }
- alu = gx_opaque_stipple_rop_table[pGC->alu]|GX_PATTERN_MASK;
- switch (pGC->fillStyle) {
- case FillTiled:
- if (!sunGXCheckTile (pGC->tile.pixmap, stipple))
- {
- if (gxPriv->stipple)
- {
- xfree (gxPriv->stipple);
- gxPriv->stipple = 0;
- }
- return FALSE;
- }
- break;
- case FillStippled:
- alu = gx_stipple_rop_table[pGC->alu]|GX_PATTERN_MASK;
- case FillOpaqueStippled:
- if (!sunGXCheckStipple (pGC->stipple, stipple))
- {
- if (gxPriv->stipple)
- {
- xfree (gxPriv->stipple);
- gxPriv->stipple = 0;
- }
- return FALSE;
- }
- stipple->fore = pGC->fgPixel;
- stipple->back = pGC->bgPixel;
- break;
- }
- xrot = (pGC->patOrg.x + pDrawable->x) & 0xf;
- yrot = (pGC->patOrg.y + pDrawable->y) & 0xf;
-/*
- stipple->patalign = ((16 - (xrot & 0xf)) << 16) | (16 - (yrot & 0xf));
-*/
- xrot = 16 - xrot;
- yrot = 16 - yrot;
- stipple->patalign = (xrot << 16) | yrot;
- stipple->alu = alu;
- gxPriv->stipple = stipple;
- if (stipple == tmpStipple)
- tmpStipple = 0;
- return TRUE;
-}
-
-void sunGXValidateGC ();
-void sunGXDestroyGC ();
-
-GCFuncs sunGXGCFuncs = {
- sunGXValidateGC,
- miChangeGC,
- miCopyGC,
- sunGXDestroyGC,
- miChangeClip,
- miDestroyClip,
- miCopyClip
-};
-
-GCOps sunGXTEOps1Rect = {
- sunGXFillSpans,
- cfbSetSpans,
- cfbPutImage,
- sunGXCopyArea,
- sunGXCopyPlane,
- cfbPolyPoint,
- sunGXPolylines1Rect,
- sunGXPolySeg1Rect,
- miPolyRectangle,
- cfbZeroPolyArcSS8Copy,
- sunGXFillPoly1Rect,
- sunGXPolyFillRect1Rect,
- sunGXPolyFillArc,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- sunGXTEGlyphBlt,
- sunGXPolyTEGlyphBlt,
- cfbPushPixels8
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps sunGXTEOps = {
- sunGXFillSpans,
- cfbSetSpans,
- cfbPutImage,
- sunGXCopyArea,
- sunGXCopyPlane,
- cfbPolyPoint,
- cfbLineSS,
- cfbSegmentSS,
- miPolyRectangle,
- cfbZeroPolyArcSS8Copy,
- miFillPolygon,
- sunGXPolyFillRect,
- sunGXPolyFillArc,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- sunGXTEGlyphBlt,
- sunGXPolyTEGlyphBlt,
- cfbPushPixels8
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps sunGXNonTEOps1Rect = {
- sunGXFillSpans,
- cfbSetSpans,
- cfbPutImage,
- sunGXCopyArea,
- sunGXCopyPlane,
- cfbPolyPoint,
- sunGXPolylines1Rect,
- sunGXPolySeg1Rect,
- miPolyRectangle,
- cfbZeroPolyArcSS8Copy,
- sunGXFillPoly1Rect,
- sunGXPolyFillRect1Rect,
- sunGXPolyFillArc,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- miImageGlyphBlt,
- sunGXPolyGlyphBlt,
- cfbPushPixels8
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps sunGXNonTEOps = {
- sunGXFillSpans,
- cfbSetSpans,
- cfbPutImage,
- sunGXCopyArea,
- sunGXCopyPlane,
- cfbPolyPoint,
- cfbLineSS,
- cfbSegmentSS,
- miPolyRectangle,
- cfbZeroPolyArcSS8Copy,
- miFillPolygon,
- sunGXPolyFillRect,
- sunGXPolyFillArc,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- miImageGlyphBlt,
- sunGXPolyGlyphBlt,
- cfbPushPixels8
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-#define FONTWIDTH(font) (FONTMAXBOUNDS(font,rightSideBearing) - \
- FONTMINBOUNDS(font,leftSideBearing))
-
-GCOps *
-sunGXMatchCommon (pGC, devPriv)
- GCPtr pGC;
- cfbPrivGCPtr devPriv;
-{
- if (pGC->lineWidth != 0)
- return 0;
- if (pGC->lineStyle != LineSolid)
- return 0;
- if (pGC->fillStyle != FillSolid)
- return 0;
- if (devPriv->rop != GXcopy)
- return 0;
- if (!WID_OK(pGC->pScreen))
- return 0;
- if (pGC->font &&
- FONTWIDTH (pGC->font) <= 32 &&
- FONTMINBOUNDS(pGC->font,characterWidth) >= 0)
- {
- if (TERMINALFONT(pGC->font))
- if (devPriv->oneRect)
- return &sunGXTEOps1Rect;
- else
- return &sunGXTEOps;
- else
- if (devPriv->oneRect)
- return &sunGXNonTEOps1Rect;
- else
- return &sunGXNonTEOps;
- }
- return 0;
-}
-
-void
-sunGXValidateGC (pGC, changes, pDrawable)
- GCPtr pGC;
- Mask changes;
- DrawablePtr pDrawable;
-{
- int mask; /* stateChanges */
- int index; /* used for stepping through bitfields */
- int new_rrop;
- int new_line, new_text, new_fillspans, new_fillarea;
- int new_rotate;
- int xrot, yrot;
- /* flags for changing the proc vector */
- cfbPrivGCPtr devPriv;
- sunGXPrivGCPtr gxPriv;
- int oneRect;
- int canGX;
- int widOK;
-
- gxPriv = sunGXGetGCPrivate (pGC);
- widOK = WID_OK(pGC->pScreen);
- if (pDrawable->type != DRAWABLE_WINDOW)
- {
- if (gxPriv->type == DRAWABLE_WINDOW)
- {
- extern GCOps cfbNonTEOps;
-
- miDestroyGCOps (pGC->ops);
- pGC->ops = &cfbNonTEOps;
- changes = (1 << (GCLastBit + 1)) - 1;
- pGC->stateChanges = changes;
- gxPriv->type = pDrawable->type;
- }
- cfbValidateGC (pGC, changes, pDrawable);
- return;
- }
- if (gxPriv->type != DRAWABLE_WINDOW)
- {
- changes = (1 << (GCLastBit + 1)) - 1;
- gxPriv->type = DRAWABLE_WINDOW;
- }
-
- new_rotate = pGC->lastWinOrg.x != pDrawable->x ||
- pGC->lastWinOrg.y != pDrawable->y;
-
- pGC->lastWinOrg.x = pDrawable->x;
- pGC->lastWinOrg.y = pDrawable->y;
-
- devPriv = ((cfbPrivGCPtr) (pGC->devPrivates[cfbGCPrivateIndex].ptr));
-
- new_rrop = FALSE;
- new_line = FALSE;
- new_text = FALSE;
- new_fillspans = FALSE;
- new_fillarea = FALSE;
-
- /*
- * if the client clip is different or moved OR the subwindowMode has
- * changed OR the window's clip has changed since the last validation
- * we need to recompute the composite clip
- */
-
- if ((changes & (GCClipXOrigin|GCClipYOrigin|GCClipMask|GCSubwindowMode)) ||
- (pDrawable->serialNumber != (pGC->serialNumber & DRAWABLE_SERIAL_BITS))
- )
- {
- miComputeCompositeClip(pGC, pDrawable);
- oneRect = REGION_NUM_RECTS(pGC->pCompositeClip) == 1;
- if (oneRect != devPriv->oneRect)
- {
- new_line = TRUE;
- new_fillarea = TRUE;
- devPriv->oneRect = oneRect;
- }
- }
-
- mask = changes;
- while (mask) {
- index = lowbit (mask);
- mask &= ~index;
-
- /*
- * this switch acculmulates a list of which procedures might have
- * to change due to changes in the GC. in some cases (e.g.
- * changing one 16 bit tile for another) we might not really need
- * a change, but the code is being paranoid. this sort of batching
- * wins if, for example, the alu and the font have been changed,
- * or any other pair of items that both change the same thing.
- */
- switch (index) {
- case GCFunction:
- case GCForeground:
- new_rrop = TRUE;
- break;
- case GCPlaneMask:
- new_rrop = TRUE;
- new_text = TRUE;
- break;
- case GCBackground:
- break;
- case GCLineStyle:
- case GCLineWidth:
- new_line = TRUE;
- break;
- case GCCapStyle:
- break;
- case GCJoinStyle:
- break;
- case GCFillStyle:
- new_text = TRUE;
- new_fillspans = TRUE;
- new_line = TRUE;
- new_fillarea = TRUE;
- break;
- case GCFillRule:
- break;
- case GCTile:
- new_fillspans = TRUE;
- new_fillarea = TRUE;
- break;
-
- case GCStipple:
- new_fillspans = TRUE;
- new_fillarea = TRUE;
- break;
-
- case GCTileStipXOrigin:
- new_rotate = TRUE;
- break;
-
- case GCTileStipYOrigin:
- new_rotate = TRUE;
- break;
-
- case GCFont:
- new_text = TRUE;
- break;
- case GCSubwindowMode:
- break;
- case GCGraphicsExposures:
- break;
- case GCClipXOrigin:
- break;
- case GCClipYOrigin:
- break;
- case GCClipMask:
- break;
- case GCDashOffset:
- break;
- case GCDashList:
- break;
- case GCArcMode:
- break;
- default:
- break;
- }
- }
-
- /*
- * If the drawable has changed, check its depth & ensure suitable
- * entries are in the proc vector.
- */
- if (pDrawable->serialNumber != (pGC->serialNumber & (DRAWABLE_SERIAL_BITS))) {
- new_fillspans = TRUE; /* deal with FillSpans later */
- }
-
- if ((new_rotate || new_fillspans))
- {
- Bool new_pix = FALSE;
- xrot = pGC->patOrg.x + pDrawable->x;
- yrot = pGC->patOrg.y + pDrawable->y;
-
- if (!sunGXCheckFill (pGC, pDrawable))
- {
- switch (pGC->fillStyle)
- {
- case FillTiled:
- if (!pGC->tileIsPixel)
- {
- int width = pGC->tile.pixmap->drawable.width * PSZ;
-
- if ((width <= 32) && !(width & (width - 1)))
- {
- cfbCopyRotatePixmap(pGC->tile.pixmap,
- &pGC->pRotatedPixmap,
- xrot, yrot);
- new_pix = TRUE;
- }
- }
- break;
- case FillStippled:
- case FillOpaqueStippled:
- {
- int width = pGC->stipple->drawable.width;
-
- if ((width <= 32) && !(width & (width - 1)))
- {
- mfbCopyRotatePixmap(pGC->stipple,
- &pGC->pRotatedPixmap, xrot, yrot);
- new_pix = TRUE;
- }
- }
- break;
- }
- }
- if (!new_pix && pGC->pRotatedPixmap)
- {
- cfbDestroyPixmap(pGC->pRotatedPixmap);
- pGC->pRotatedPixmap = (PixmapPtr) NULL;
- }
- }
-
- if (new_rrop)
- {
- int old_rrop;
-
- if (gxPriv->stipple)
- {
- if (pGC->fillStyle == FillStippled)
- gxPriv->stipple->alu = gx_stipple_rop_table[pGC->alu]|GX_PATTERN_MASK;
- else
- gxPriv->stipple->alu = gx_opaque_stipple_rop_table[pGC->alu]|GX_PATTERN_MASK;
- if (pGC->fillStyle != FillTiled)
- {
- gxPriv->stipple->fore = pGC->fgPixel;
- gxPriv->stipple->back = pGC->bgPixel;
- }
- }
- old_rrop = devPriv->rop;
- devPriv->rop = cfbReduceRasterOp (pGC->alu, pGC->fgPixel,
- pGC->planemask,
- &devPriv->and, &devPriv->xor);
- if (old_rrop == devPriv->rop)
- new_rrop = FALSE;
- else
- {
- new_line = TRUE;
- new_text = TRUE;
- new_fillspans = TRUE;
- new_fillarea = TRUE;
- }
- }
-
- if (new_rrop || new_fillspans || new_text || new_fillarea || new_line)
- {
- GCOps *newops;
-
- if ((newops = sunGXMatchCommon (pGC, devPriv)))
- {
- if (pGC->ops->devPrivate.val)
- miDestroyGCOps (pGC->ops);
- pGC->ops = newops;
- new_rrop = new_line = new_fillspans = new_text = new_fillarea = 0;
- }
- else
- {
- if (!pGC->ops->devPrivate.val)
- {
- pGC->ops = miCreateGCOps (pGC->ops);
- pGC->ops->devPrivate.val = 1;
- }
- }
- }
-
- canGX = pGC->fillStyle == FillSolid || gxPriv->stipple;
-
- /* deal with the changes we've collected */
- if (new_line)
- {
- pGC->ops->FillPolygon = miFillPolygon;
- if (devPriv->oneRect && canGX)
- pGC->ops->FillPolygon = sunGXFillPoly1Rect;
- if (pGC->lineWidth == 0)
- {
- if ((pGC->lineStyle == LineSolid) && (pGC->fillStyle == FillSolid))
- {
- switch (devPriv->rop)
- {
- case GXxor:
- pGC->ops->PolyArc = cfbZeroPolyArcSS8Xor;
- break;
- case GXcopy:
- pGC->ops->PolyArc = cfbZeroPolyArcSS8Copy;
- break;
- default:
- pGC->ops->PolyArc = cfbZeroPolyArcSS8General;
- break;
- }
- }
- else
- pGC->ops->PolyArc = miZeroPolyArc;
- }
- else
- pGC->ops->PolyArc = miPolyArc;
- pGC->ops->PolySegment = miPolySegment;
- switch (pGC->lineStyle)
- {
- case LineSolid:
- if(pGC->lineWidth == 0)
- {
- if (devPriv->oneRect && canGX && widOK)
- {
- pGC->ops->PolySegment = sunGXPolySeg1Rect;
- pGC->ops->Polylines = sunGXPolylines1Rect;
- }
- else if (pGC->fillStyle == FillSolid)
- {
- if (devPriv->oneRect)
- {
- pGC->ops->Polylines = cfb8LineSS1Rect;
- pGC->ops->PolySegment = cfb8SegmentSS1Rect;
- }
- else
- {
- pGC->ops->Polylines = cfbLineSS;
- pGC->ops->PolySegment = cfbSegmentSS;
- }
- }
- else
- pGC->ops->Polylines = miZeroLine;
- }
- else
- pGC->ops->Polylines = miWideLine;
- break;
- case LineOnOffDash:
- case LineDoubleDash:
- if (pGC->lineWidth == 0 && pGC->fillStyle == FillSolid)
- {
- pGC->ops->Polylines = cfbLineSD;
- pGC->ops->PolySegment = cfbSegmentSD;
- } else
- pGC->ops->Polylines = miWideDash;
- break;
- }
- }
-
- if (new_text && (pGC->font))
- {
- if (FONTWIDTH(pGC->font) > 32 ||
- FONTMINBOUNDS(pGC->font,characterWidth) < 0)
- {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- pGC->ops->ImageGlyphBlt = miImageGlyphBlt;
- }
- else
- {
- if (pGC->fillStyle == FillSolid)
- {
- if (TERMINALFONT (pGC->font))
- pGC->ops->PolyGlyphBlt = sunGXPolyTEGlyphBlt;
- else
- pGC->ops->PolyGlyphBlt = sunGXPolyGlyphBlt;
- }
- else
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- /* special case ImageGlyphBlt for terminal emulator fonts */
- if (TERMINALFONT(pGC->font))
- pGC->ops->ImageGlyphBlt = sunGXTEGlyphBlt;
- else
- pGC->ops->ImageGlyphBlt = miImageGlyphBlt;
- }
- }
-
-
- if (new_fillspans) {
- if (canGX)
- pGC->ops->FillSpans = sunGXFillSpans;
- else switch (pGC->fillStyle) {
- case FillTiled:
- if (pGC->pRotatedPixmap)
- {
- if (pGC->alu == GXcopy && (pGC->planemask & PMSK) == PMSK)
- pGC->ops->FillSpans = cfbTile32FSCopy;
- else
- pGC->ops->FillSpans = cfbTile32FSGeneral;
- }
- else
- pGC->ops->FillSpans = cfbUnnaturalTileFS;
- break;
- case FillStippled:
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = cfb8Stipple32FS;
- else
- pGC->ops->FillSpans = cfbUnnaturalStippleFS;
- break;
- case FillOpaqueStippled:
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = cfb8OpaqueStipple32FS;
- else
- pGC->ops->FillSpans = cfbUnnaturalStippleFS;
- break;
- default:
- FatalError("cfbValidateGC: illegal fillStyle\n");
- }
- } /* end of new_fillspans */
-
- if (new_fillarea) {
- pGC->ops->PolyFillRect = cfbPolyFillRect;
- pGC->ops->PolyFillArc = miPolyFillArc;
- if (canGX)
- {
- pGC->ops->PolyFillArc = sunGXPolyFillArc;
- pGC->ops->PolyFillRect = sunGXPolyFillRect;
- if (devPriv->oneRect)
- pGC->ops->PolyFillRect = sunGXPolyFillRect1Rect;
- }
- pGC->ops->PushPixels = mfbPushPixels;
- if (pGC->fillStyle == FillSolid && devPriv->rop == GXcopy)
- pGC->ops->PushPixels = cfbPushPixels8;
- }
-}
-
-void
-sunGXDestroyGC (pGC)
- GCPtr pGC;
-{
- sunGXPrivGCPtr gxPriv = sunGXGetGCPrivate (pGC);
-
- if (gxPriv->stipple)
- xfree (gxPriv->stipple);
- miDestroyGC (pGC);
-}
-
-Bool
-sunGXCreateGC (pGC)
- GCPtr pGC;
-{
- sunGXPrivGCPtr gxPriv;
- if (pGC->depth == 1)
- return mfbCreateGC (pGC);
- if (!cfbCreateGC (pGC))
- return FALSE;
- pGC->ops = &sunGXNonTEOps;
- pGC->funcs = &sunGXGCFuncs;
- gxPriv = sunGXGetGCPrivate(pGC);
- gxPriv->type = DRAWABLE_WINDOW;
- gxPriv->stipple = 0;
- return TRUE;
-}
-
-Bool
-sunGXCreateWindow (pWin)
- WindowPtr pWin;
-{
- if (!cfbCreateWindow (pWin))
- return FALSE;
- pWin->devPrivates[sunGXWindowPrivateIndex].ptr = 0;
- return TRUE;
-}
-
-Bool
-sunGXDestroyWindow (pWin)
- WindowPtr pWin;
-{
- sunGXStipplePtr stipple = sunGXGetWindowPrivate(pWin);
- xfree (stipple);
- return cfbDestroyWindow (pWin);
-}
-
-Bool
-sunGXChangeWindowAttributes (pWin, mask)
- WindowPtr pWin;
- Mask mask;
-{
- sunGXStipplePtr stipple;
- Mask index;
- WindowPtr pBgWin;
- register cfbPrivWin *pPrivWin;
- int width;
-
- pPrivWin = (cfbPrivWin *)(pWin->devPrivates[cfbWindowPrivateIndex].ptr);
- /*
- * When background state changes from ParentRelative and
- * we had previously rotated the fast border pixmap to match
- * the parent relative origin, rerotate to match window
- */
- if (mask & (CWBackPixmap | CWBackPixel) &&
- pWin->backgroundState != ParentRelative &&
- pPrivWin->fastBorder &&
- (pPrivWin->oldRotate.x != pWin->drawable.x ||
- pPrivWin->oldRotate.y != pWin->drawable.y))
- {
- cfbXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- cfbYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- while (mask)
- {
- index = lowbit(mask);
- mask &= ~index;
- switch (index)
- {
- case CWBackPixmap:
- stipple = sunGXGetWindowPrivate(pWin);
- if (pWin->backgroundState == None ||
- pWin->backgroundState == ParentRelative)
- {
- pPrivWin->fastBackground = FALSE;
- if (stipple)
- {
- xfree (stipple);
- sunGXSetWindowPrivate(pWin,0);
- }
- /* Rotate border to match parent origin */
- if (pWin->backgroundState == ParentRelative &&
- pPrivWin->pRotatedBorder)
- {
- for (pBgWin = pWin->parent;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- cfbXRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.x - pPrivWin->oldRotate.x);
- cfbYRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.y - pPrivWin->oldRotate.y);
- }
-
- break;
- }
- if (!stipple)
- {
- if (!tmpStipple)
- tmpStipple = (sunGXStipplePtr) xalloc (sizeof *tmpStipple);
- stipple = tmpStipple;
- }
- if (stipple && sunGXCheckTile (pWin->background.pixmap, stipple))
- {
- stipple->alu = gx_opaque_stipple_rop_table[GXcopy]|GX_PATTERN_MASK;
- pPrivWin->fastBackground = FALSE;
- if (stipple == tmpStipple)
- {
- sunGXSetWindowPrivate(pWin, stipple);
- tmpStipple = 0;
- }
- break;
- }
- if ((stipple = sunGXGetWindowPrivate(pWin)))
- {
- xfree (stipple);
- sunGXSetWindowPrivate(pWin,0);
- }
- if (((width = (pWin->background.pixmap->drawable.width * PSZ)) <= 32) &&
- !(width & (width - 1)))
- {
- cfbCopyRotatePixmap(pWin->background.pixmap,
- &pPrivWin->pRotatedBackground,
- pWin->drawable.x,
- pWin->drawable.y);
- if (pPrivWin->pRotatedBackground)
- {
- pPrivWin->fastBackground = TRUE;
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- else
- {
- pPrivWin->fastBackground = FALSE;
- }
- break;
- }
- pPrivWin->fastBackground = FALSE;
- break;
-
- case CWBackPixel:
- pPrivWin->fastBackground = FALSE;
- break;
-
- case CWBorderPixmap:
- /* don't bother with accelerator for border tiles (just lazy) */
- if (((width = (pWin->border.pixmap->drawable.width * PSZ)) <= 32) &&
- !(width & (width - 1)))
- {
- for (pBgWin = pWin;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- cfbCopyRotatePixmap(pWin->border.pixmap,
- &pPrivWin->pRotatedBorder,
- pBgWin->drawable.x,
- pBgWin->drawable.y);
- if (pPrivWin->pRotatedBorder)
- {
- pPrivWin->fastBorder = TRUE;
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- }
- else
- {
- pPrivWin->fastBorder = TRUE;
- }
- }
- else
- {
- pPrivWin->fastBorder = FALSE;
- }
- break;
- case CWBorderPixel:
- pPrivWin->fastBorder = FALSE;
- break;
- }
- }
- return (TRUE);
-}
-
-void
-sunGXPaintWindow(pWin, pRegion, what)
- WindowPtr pWin;
- RegionPtr pRegion;
- int what;
-{
- register cfbPrivWin *pPrivWin;
- sunGXStipplePtr stipple;
- WindowPtr pBgWin;
- pPrivWin = (cfbPrivWin *)(pWin->devPrivates[cfbWindowPrivateIndex].ptr);
-
- switch (what) {
- case PW_BACKGROUND:
- stipple = sunGXGetWindowPrivate(pWin);
- switch (pWin->backgroundState) {
- case None:
- return;
- case ParentRelative:
- do {
- pWin = pWin->parent;
- } while (pWin->backgroundState == ParentRelative);
- (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion,
- what);
- return;
- case BackgroundPixmap:
- if (stipple)
- {
- sunGXFillBoxStipple ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- stipple);
- }
- else if (pPrivWin->fastBackground)
- {
- cfbFillBoxTile32 ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pPrivWin->pRotatedBackground);
- }
- else
- {
- cfbFillBoxTileOdd ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->background.pixmap,
- (int) pWin->drawable.x, (int) pWin->drawable.y);
- }
- return;
- case BackgroundPixel:
- sunGXFillBoxSolid((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->background.pixel);
- return;
- }
- break;
- case PW_BORDER:
- if (pWin->borderIsPixel)
- {
- sunGXFillBoxSolid((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->border.pixel);
- return;
- }
- else if (pPrivWin->fastBorder)
- {
- cfbFillBoxTile32 ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pPrivWin->pRotatedBorder);
- return;
- }
- else
- {
- for (pBgWin = pWin;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
-
- cfbFillBoxTileOdd ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->border.pixmap,
- (int) pBgWin->drawable.x,
- (int) pBgWin->drawable.y);
- return;
- }
- break;
- }
-}
-
-void
-sunGXCopyWindow(pWin, ptOldOrg, prgnSrc)
- WindowPtr pWin;
- DDXPointRec ptOldOrg;
- RegionPtr prgnSrc;
-{
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- RegionPtr prgnDst;
- register BoxPtr pbox;
- register int dx, dy;
- register int i, nbox;
- WindowPtr pwinRoot;
- extern WindowPtr *WindowTable;
-
- pwinRoot = WindowTable[pWin->drawable.pScreen->myNum];
-
- prgnDst = REGION_CREATE(pWin->drawable.pScreen, NULL, 1);
-
- dx = ptOldOrg.x - pWin->drawable.x;
- dy = ptOldOrg.y - pWin->drawable.y;
- REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, -dx, -dy);
- REGION_INTERSECT(pWin->drawable.pScreen, prgnDst, &pWin->borderClip, prgnSrc);
-
- pbox = REGION_RECTS(prgnDst);
- nbox = REGION_NUM_RECTS(prgnDst);
- if(!(pptSrc = (DDXPointPtr )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec))))
- return;
- ppt = pptSrc;
-
- for (i = nbox; --i >= 0; ppt++, pbox++)
- {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- sunGXDoBitblt ((DrawablePtr)pwinRoot, (DrawablePtr)pwinRoot,
- GXcopy, prgnDst, pptSrc, ~0L);
- DEALLOCATE_LOCAL(pptSrc);
- REGION_DESTROY(pWin->drawable.pScreen, prgnDst);
-}
-
-Bool
-sunGXInit (
- ScreenPtr pScreen,
- fbFd *fb)
-{
- sunGXPtr gx;
- Uint mode;
- register long r;
-
- if (serverGeneration != sunGXGeneration)
- {
- sunGXScreenPrivateIndex = AllocateScreenPrivateIndex();
- if (sunGXScreenPrivateIndex == -1)
- return FALSE;
- sunGXGCPrivateIndex = AllocateGCPrivateIndex ();
- sunGXWindowPrivateIndex = AllocateWindowPrivateIndex ();
- sunGXGeneration = serverGeneration;
- }
- if (!AllocateGCPrivate(pScreen, sunGXGCPrivateIndex, sizeof (sunGXPrivGCRec)))
- return FALSE;
- if (!AllocateWindowPrivate(pScreen, sunGXWindowPrivateIndex, 0))
- return FALSE;
- gx = (sunGXPtr) fb->fb;
- mode = gx->mode;
- GXWait(gx,r);
- mode &= ~( GX_BLIT_ALL |
- GX_MODE_ALL |
- GX_DRAW_ALL |
- GX_BWRITE0_ALL |
- GX_BWRITE1_ALL |
- GX_BREAD_ALL |
- GX_BDISP_ALL);
- mode |= GX_BLIT_SRC |
- GX_MODE_COLOR8 |
- GX_DRAW_RENDER |
- GX_BWRITE0_ENABLE |
- GX_BWRITE1_DISABLE |
- GX_BREAD_0 |
- GX_BDISP_0;
- gx->mode = mode;
- gx->clip = 0;
- gx->offx = 0;
- gx->offy = 0;
- gx->clipminx = 0;
- gx->clipminy = 0;
- gx->clipmaxx = fb->info.fb_width - 1;
- gx->clipmaxy = fb->info.fb_height - 1;
- pScreen->devPrivates[sunGXScreenPrivateIndex].ptr = (pointer) gx;
- /*
- * Replace various screen functions
- */
- pScreen->CreateGC = sunGXCreateGC;
- pScreen->CreateWindow = sunGXCreateWindow;
- pScreen->ChangeWindowAttributes = sunGXChangeWindowAttributes;
- pScreen->DestroyWindow = sunGXDestroyWindow;
- pScreen->PaintWindowBackground = sunGXPaintWindow;
- pScreen->PaintWindowBorder = sunGXPaintWindow;
- pScreen->CopyWindow = sunGXCopyWindow;
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/sun/sunGX.h b/nx-X11/programs/Xserver/hw/sun/sunGX.h
deleted file mode 100644
index ebf1da19f..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunGX.h
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * $Xorg: sunGX.h,v 1.4 2001/02/09 02:04:44 xorgcvs Exp $
- *
-Copyright 1991, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-/* $XFree86: xc/programs/Xserver/hw/sun/sunGX.h,v 1.3 2001/07/29 05:01:13 tsi Exp $ */
-
-typedef unsigned int Uint;
-typedef volatile Uint VUint;
-
-/* modes */
-#define GX_INDEX(n) ((n) << 4)
-#define GX_INDEX_ALL 0x00000030
-#define GX_INDEX_MOD 0x00000040
-#define GX_BDISP_0 0x00000080
-#define GX_BDISP_1 0x00000100
-#define GX_BDISP_ALL 0x00000180
-#define GX_BREAD_0 0x00000200
-#define GX_BREAD_1 0x00000400
-#define GX_BREAD_ALL 0x00000600
-#define GX_BWRITE1_ENABLE 0x00000800
-#define GX_BWRITE1_DISABLE 0x00001000
-#define GX_BWRITE1_ALL 0x00001800
-#define GX_BWRITE0_ENABLE 0x00002000
-#define GX_BWRITE0_DISABLE 0x00004000
-#define GX_BWRITE0_ALL 0x00006000
-#define GX_DRAW_RENDER 0x00008000
-#define GX_DRAW_PICK 0x00010000
-#define GX_DRAW_ALL 0x00018000
-#define GX_MODE_COLOR8 0x00020000
-#define GX_MODE_COLOR1 0x00040000
-#define GX_MODE_HRMONO 0x00060000
-#define GX_MODE_ALL 0x00060000
-#define GX_VBLANK 0x00080000
-#define GX_BLIT_NOSRC 0x00100000
-#define GX_BLIT_SRC 0x00200000
-#define GX_BLIT_ALL 0x00300000
-
-/* rasterops */
-#define GX_ROP_CLEAR 0x0
-#define GX_ROP_INVERT 0x1
-#define GX_ROP_NOOP 0x2
-#define GX_ROP_SET 0x3
-
-#define GX_ROP_00_0(rop) ((rop) << 0)
-#define GX_ROP_00_1(rop) ((rop) << 2)
-#define GX_ROP_01_0(rop) ((rop) << 4)
-#define GX_ROP_01_1(rop) ((rop) << 6)
-#define GX_ROP_10_0(rop) ((rop) << 8)
-#define GX_ROP_10_1(rop) ((rop) << 10)
-#define GX_ROP_11_0(rop) ((rop) << 12)
-#define GX_ROP_11_1(rop) ((rop) << 14)
-#define GX_PLOT_PLOT 0x00000000
-#define GX_PLOT_UNPLOT 0x00020000
-#define GX_RAST_BOOL 0x00000000
-#define GX_RAST_LINEAR 0x00040000
-#define GX_ATTR_UNSUPP 0x00400000
-#define GX_ATTR_SUPP 0x00800000
-#define GX_POLYG_OVERLAP 0x01000000
-#define GX_POLYG_NONOVERLAP 0x02000000
-#define GX_PATTERN_ZEROS 0x04000000
-#define GX_PATTERN_ONES 0x08000000
-#define GX_PATTERN_MASK 0x0c000000
-#define GX_PIXEL_ZEROS 0x10000000
-#define GX_PIXEL_ONES 0x20000000
-#define GX_PIXEL_MASK 0x30000000
-#define GX_PLANE_ZEROS 0x40000000
-#define GX_PLANE_ONES 0x80000000
-#define GX_PLANE_MASK 0xc0000000
-
-typedef struct _sunGX {
- Uint junk0[1];
- VUint mode;
- VUint clip;
- Uint junk1[1];
- VUint s;
- VUint draw;
- VUint blit;
- VUint font;
- Uint junk2[24];
- VUint x0, y0, z0, color0;
- VUint x1, y1, z1, color1;
- VUint x2, y2, z2, color2;
- VUint x3, y3, z3, color3;
- VUint offx, offy;
- Uint junk3[2];
- VUint incx, incy;
- Uint junk4[2];
- VUint clipminx, clipminy;
- Uint junk5[2];
- VUint clipmaxx, clipmaxy;
- Uint junk6[2];
- VUint fg;
- VUint bg;
- VUint alu;
- VUint pm;
- VUint pixelm;
- Uint junk7[2];
- VUint patalign;
- VUint pattern[8];
- Uint junk8[432];
- VUint apointx, apointy, apointz;
- Uint junk9[1];
- VUint rpointx, rpointy, rpointz;
- Uint junk10[5];
- VUint pointr, pointg, pointb, pointa;
- VUint alinex, aliney, alinez;
- Uint junk11[1];
- VUint rlinex, rliney, rlinez;
- Uint junk12[5];
- VUint liner, lineg, lineb, linea;
- VUint atrix, atriy, atriz;
- Uint junk13[1];
- VUint rtrix, rtriy, rtriz;
- Uint junk14[5];
- VUint trir, trig, trib, tria;
- VUint aquadx, aquady, aquadz;
- Uint junk15[1];
- VUint rquadx, rquady, rquadz;
- Uint junk16[5];
- VUint quadr, quadg, quadb, quada;
- VUint arectx, arecty, arectz;
- Uint junk17[1];
- VUint rrectx, rrecty, rrectz;
- Uint junk18[5];
- VUint rectr, rectg, rectb, recta;
-} sunGX, *sunGXPtr;
-
-/* Macros */
-
-#define GX_ROP_USE_PIXELMASK 0x30000000
-
-#define GX_BLT_INPROGRESS 0x20000000
-
-#define GX_INPROGRESS 0x10000000
-#define GX_FULL 0x20000000
-
-#define GXWait(gx,r)\
- do\
- (r) = (int) (gx)->s; \
- while ((r) & GX_INPROGRESS)
-
-#define GXDrawDone(gx,r) \
- do \
- (r) = (int) (gx)->draw; \
- while ((r) < 0 && ((r) & GX_FULL))
-
-#define GXBlitDone(gx,r)\
- do\
- (r)= (int) (gx)->blit; \
- while ((r) < 0 && ((r) & GX_BLT_INPROGRESS))
-
-#define GXBlitInit(gx,rop,pmsk) {\
- gx->fg = 0xff;\
- gx->bg = 0x00;\
- gx->pixelm = ~0;\
- gx->s = 0;\
- gx->alu = rop;\
- gx->pm = pmsk;\
- gx->clip = 0;\
-}
-
-#define GXDrawInit(gx,fore,rop,pmsk) {\
- gx->fg = fore;\
- gx->bg = 0x00; \
- gx->pixelm = ~0; \
- gx->s = 0; \
- gx->alu = rop; \
- gx->pm = pmsk; \
- gx->clip = 0;\
-}
-
-#define GXStippleInit(gx,stipple) {\
- int _i; \
- Uint *sp; \
- VUint *dp; \
- _i = 8; \
- sp = stipple->bits; \
- dp = gx->pattern; \
- while (_i--) { \
- dp[_i] = sp[_i]; \
- } \
- gx->fg = stipple->fore; \
- gx->bg = stipple->back; \
- gx->patalign = stipple->patalign; \
- gx->alu = stipple->alu; \
-}
-
-extern int sunGXScreenPrivateIndex;
-extern int sunGXGCPrivateIndex;
-extern int sunGXWindowPrivateIndex;
-
-#define sunGXGetScreenPrivate(s) ((sunGXPtr) \
- (s)->devPrivates[sunGXScreenPrivateIndex].ptr)
-
-typedef struct _sunGXStipple {
- Uint fore, back;
- Uint patalign;
- Uint alu;
- Uint bits[8]; /* actually 16 shorts */
-} sunGXStippleRec, *sunGXStipplePtr;
-
-typedef struct _sunGXPrivGC {
- int type;
- sunGXStipplePtr stipple;
-} sunGXPrivGCRec, *sunGXPrivGCPtr;
-
-#define sunGXGetGCPrivate(g) ((sunGXPrivGCPtr) \
- (g)->devPrivates[sunGXGCPrivateIndex].ptr)
-
-#define sunGXGetWindowPrivate(w) ((sunGXStipplePtr) \
- (w)->devPrivates[sunGXWindowPrivateIndex].ptr)
-
-#define sunGXSetWindowPrivate(w,p) (\
- (w)->devPrivates[sunGXWindowPrivateIndex].ptr = (pointer) p)
-
diff --git a/nx-X11/programs/Xserver/hw/sun/sunInit.c b/nx-X11/programs/Xserver/hw/sun/sunInit.c
deleted file mode 100644
index 62cc8c76a..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunInit.c
+++ /dev/null
@@ -1,960 +0,0 @@
-/* $Xorg: sunInit.c,v 1.4 2000/08/17 19:48:29 cpqbld Exp $ */
-/*
- * sunInit.c --
- * Initialization functions for screen/keyboard/mouse, etc.
- *
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sun/sunInit.c,v 3.12 2002/12/06 02:11:44 tsi Exp $ */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-*******************************************************/
-
-#include "sun.h"
-#include "gcstruct.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "cfb.h"
-#include "cfb16.h"
-#include "cfb32.h"
-
-/* maximum pixmap depth */
-#ifndef SUNMAXDEPTH
-#define SUNMAXDEPTH 8
-#endif
-
-#ifdef i386 /* { */
-#define BW2I NULL
-#else /* }{ */
-extern Bool sunBW2Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define BW2I sunBW2Init
-#endif /* } */
-
-
-#if SUNMAXDEPTH == 1 /* { */
-#define CG2I NULL
-#define CG3I NULL
-#define CG4I NULL
-#define CG6I NULL
-#define CG8I NULL
-#define TCXI NULL
-#else /* }{ */
-extern Bool sunCG3Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG3I sunCG3Init
-#if defined(i386) || defined(__bsdi__) /* { */
-#define CG2I NULL
-#define CG4I NULL
-#else /* }{ */
-#ifdef INCLUDE_CG2_HEADER
-extern Bool sunCG2Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG2I sunCG2Init
-#endif /* INCLUDE_CG2_HEADER */
-extern Bool sunCG4Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG4I sunCG4Init
-#endif /* } */
-#ifdef FBTYPE_SUNFAST_COLOR /* { */
-extern Bool sunCG6Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG6I sunCG6Init
-#else /* }{ */
-#define CG6I NULL
-#endif /* } */
-#ifdef XFBTYPE_TCX /* { */
-extern Bool sunTCXInit(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define TCXI sunTCXInit
-#else /* }{ */
-#define TCXI NULL
-#endif /* } */
-#if SUNMAXDEPTH > 8 /* { */
-#ifdef FBTYPE_MEMCOLOR /* { */
-extern Bool sunCG8Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG8I sunCG8Init
-#else /* }{ */
-#define CG8I NULL
-#endif /* } */
-#else /* }{ */
-#define CG8I NULL
-#endif /* } */
-
-#endif /* } */
-
-extern KeySymsRec sunKeySyms[];
-extern SunModmapRec *sunModMaps[];
-extern int sunMaxLayout;
-extern KeySym* sunType4KeyMaps[];
-extern SunModmapRec* sunType4ModMaps[];
-
-static Bool sunDevsInited = FALSE;
-
-Bool sunAutoRepeatHandlersInstalled; /* FALSE each time InitOutput called */
-Bool sunSwapLkeys = FALSE;
-Bool sunFlipPixels = FALSE;
-Bool sunFbInfo = FALSE;
-Bool sunCG4Frob = FALSE;
-Bool sunNoGX = FALSE;
-
-sunKbdPrivRec sunKbdPriv = {
- -1, /* fd */
- -1, /* type */
- -1, /* layout */
- 0, /* click */
- (Leds)0, /* leds */
-};
-
-sunPtrPrivRec sunPtrPriv = {
- -1, /* fd */
- 0 /* Current button state */
-};
-
-/*
- * The name member in the following table corresponds to the
- * FBTYPE_* macros defined in /usr/include/sun/fbio.h file
- */
-sunFbDataRec sunFbData[XFBTYPE_LASTPLUSONE] = {
- { NULL, "SUN1BW (bw1)" },
- { NULL, "SUN1COLOR (cg1)" },
- { BW2I, "SUN2BW (bw2)" },
-#ifdef INCLUDE_CG2_HEADER
- { CG2I, "SUN2COLOR (cg2)" },
-#endif /* INCLUDE_CG2_HEADER */
- { NULL, "SUN2GP (gp1/gp2)" },
- { NULL, "SUN5COLOR (cg5/386i accel)" },
- { CG3I, "SUN3COLOR (cg3)" },
- { CG8I, "MEMCOLOR (cg8)" },
- { CG4I, "SUN4COLOR (cg4)" },
- { NULL, "NOTSUN1" },
- { NULL, "NOTSUN2" },
- { NULL, "NOTSUN3" }
-#ifndef i386 /* { */
- ,{ CG6I, "SUNFAST_COLOR (cg6/gx)" },
- { NULL, "SUNROP_COLOR (cg9)" },
- { NULL, "SUNFB_VIDEO" },
- { NULL, "SUNGIFB" },
- { NULL, "SUNPLAS" },
-#ifdef FBTYPE_SUNGP3
- { NULL, "SUNGP3 (cg12/gs)" },
-#endif
-#ifdef FBTYPE_SUNGT
- { NULL, "SUNGT (gt)" },
-#endif
-#ifdef FBTYPE_SUNLEO
- { NULL, "SUNLEO (zx)" },
-#endif
-#ifdef FBTYPE_MDICOLOR
- { NULL, "MDICOLOR (cgfourteen)" },
-#endif
-#ifdef XFBTYPE_TCX
- { TCXI, "TCX (tcx)" },
-#endif
-#endif /* } */
-};
-
-/*
- * a list of devices to try if there is no environment or command
- * line list of devices
- */
-#if SUNMAXDEPTH == 1 /* { */
-static char *fallbackList[] = {
- BWTWO0DEV, BWTWO1DEV, BWTWO2DEV
-};
-#else /* }{ */
-static char *fallbackList[] = {
-#ifndef i386 /* { */
- CGTWO0DEV, CGTWO1DEV, CGTWO2DEV,
-#if (MAXSCREENS == 4)
- CGTWO3DEV,
-#endif
-#endif /* } */
- CGTHREE0DEV,
-#ifndef i386 /* { */
- CGTHREE1DEV, CGTHREE2DEV,
-#if (MAXSCREENS == 4)
- CGTHREE3DEV,
-#endif
-#endif /* } */
-#ifdef FBTYPE_SUNFAST_COLOR /* { */
- CGSIX0DEV, CGSIX1DEV, CGSIX2DEV,
-#if (MAXSCREENS == 4)
- CGSIX3DEV,
-#endif
-#endif /* } */
-#ifndef i386 /* { */
- CGFOUR0DEV, BWTWO0DEV, BWTWO1DEV, BWTWO2DEV,
-#if (MAXSCREENS == 4)
- BWTWO3DEV,
-#endif
-#endif /* } */
-#if SUNMAXDEPTH > 8 /* { */
- CGEIGHT0DEV,
-#if 0
-#ifdef XFBTYPE_TCX
- TCX0DEV,
-#endif
-#endif
-#endif /* } */
- "/dev/fb"
-};
-#endif /* } */
-
-#define FALLBACK_LIST_LEN sizeof fallbackList / sizeof fallbackList[0]
-
-fbFd sunFbs[MAXSCREENS];
-
-static PixmapFormatRec formats[] = {
- { 1, 1, BITMAP_SCANLINE_PAD } /* 1-bit deep */
-#if SUNMAXDEPTH > 1
- ,{ 8, 8, BITMAP_SCANLINE_PAD} /* 8-bit deep */
-#if SUNMAXDEPTH > 8
- ,{ 12, 24, BITMAP_SCANLINE_PAD } /* 12-bit deep */
- ,{ 24, 32, BITMAP_SCANLINE_PAD } /* 24-bit deep */
-#endif
-#endif
-};
-#define NUMFORMATS (sizeof formats)/(sizeof formats[0])
-
-/*
- * OpenFrameBuffer --
- * Open a frame buffer according to several rules.
- * Find the device to use by looking in the sunFbData table,
- * an XDEVICE envariable, a -dev switch or using /dev/fb if trying
- * to open screen 0 and all else has failed.
- *
- * Results:
- * The fd of the framebuffer.
- */
-static int OpenFrameBuffer(device, screen)
- char *device; /* e.g. "/dev/cgtwo0" */
- int screen; /* what screen am I going to be */
-{
- int ret = TRUE;
- struct fbgattr *fbattr;
- static int devFbUsed;
-
- sunFbs[screen].fd = -1;
- if (strcmp (device, "/dev/fb") == 0 && devFbUsed)
- return FALSE;
- if (access (device, R_OK | W_OK) == -1)
- return FALSE;
- if ((sunFbs[screen].fd = open(device, O_RDWR, 0)) == -1)
- ret = FALSE;
- else {
- fbattr = (struct fbgattr *) xalloc (sizeof (struct fbgattr));
- if (ioctl(sunFbs[screen].fd, FBIOGATTR, fbattr) == -1) {
- /*
- This is probably a bwtwo; the $64,000 question is:
- is it the mono plane of a cgfour, or is it really a
- real bwtwo? If there is only a cgfour in the box or
- only a bwtwo in the box, then it isn't a problem. If
- it's a 3/60, which has a bwtwo on the mother board *and*
- a cgfour, then things get tricky because there's no way
- to tell if the bwtwo is really being emulated by the cgfour.
- */
- xfree (fbattr);
- fbattr = NULL;
- if (ioctl(sunFbs[screen].fd, FBIOGTYPE, &sunFbs[screen].info) == -1) {
- Error("unable to get frame buffer attributes");
- (void) close(sunFbs[screen].fd);
- sunFbs[screen].fd = -1;
- return FALSE;
- }
- }
- if (ret) {
- devFbUsed = TRUE;
- if (fbattr) {
- if (fbattr->fbtype.fb_type >= XFBTYPE_LASTPLUSONE) {
- ErrorF ("%s is an unknown framebuffer type\n", device);
- (void) close(sunFbs[screen].fd);
- sunFbs[screen].fd = -1;
- return FALSE;
- }
- sunFbs[screen].info = fbattr->fbtype;
- }
- sunFbs[screen].fbPriv = (pointer) fbattr;
- if (fbattr && !sunFbData[fbattr->fbtype.fb_type].init) {
- int _i;
- ret = FALSE;
- for (_i = 0; _i < FB_ATTR_NEMUTYPES; _i++) {
- if (sunFbData[fbattr->emu_types[_i]].init) {
- sunFbs[screen].info.fb_type = fbattr->emu_types[_i];
- ret = TRUE;
- if (sunFbInfo)
- ErrorF ("%s is emulating a %s\n", device,
- sunFbData[fbattr->fbtype.fb_type].name);
- break;
- }
- }
- }
- if (sunFbInfo)
- ErrorF ("%s is really a %s\n", device,
- sunFbData[fbattr ? fbattr->fbtype.fb_type : sunFbs[screen].info.fb_type].name);
- }
- }
- if (!ret)
- sunFbs[screen].fd = -1;
- return ret;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SigIOHandler --
- * Signal handler for SIGIO - input is available.
- *
- * Results:
- * sunSigIO is set - ProcessInputEvents() will be called soon.
- *
- * Side Effects:
- * None
- *
- *-----------------------------------------------------------------------
- */
-/*ARGSUSED*/
-static void SigIOHandler(sig)
- int sig;
-{
- int olderrno = errno;
- sunEnqueueEvents ();
- errno = olderrno;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunNonBlockConsoleOff --
- * Turn non-blocking mode on the console off, so you don't get logged
- * out when the server exits.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-void sunNonBlockConsoleOff(
-#if defined(SVR4) || defined(CSRG_BASED)
- void
-#else
- char* arg
-#endif
-)
-{
- register int i;
-
- i = fcntl(2, F_GETFL, 0);
- if (i >= 0)
- (void) fcntl(2, F_SETFL, i & ~FNDELAY);
-}
-
-static char** GetDeviceList (argc, argv)
- int argc;
- char **argv;
-{
- int i;
- char *envList = NULL;
- char *cmdList = NULL;
- char **deviceList = (char **)NULL;
-
- for (i = 1; i < argc; i++)
- if (strcmp (argv[i], "-dev") == 0 && i+1 < argc) {
- cmdList = argv[i + 1];
- break;
- }
- if (!cmdList)
- envList = getenv ("XDEVICE");
-
- if (cmdList || envList) {
- char *_tmpa;
- char *_tmpb;
- int _i1;
- deviceList = (char **) xalloc ((MAXSCREENS + 1) * sizeof (char *));
- _tmpa = (cmdList) ? cmdList : envList;
- for (_i1 = 0; _i1 < MAXSCREENS; _i1++) {
- _tmpb = strtok (_tmpa, ":");
- if (_tmpb)
- deviceList[_i1] = _tmpb;
- else
- deviceList[_i1] = NULL;
- _tmpa = NULL;
- }
- deviceList[MAXSCREENS] = NULL;
- }
- if (!deviceList) {
- /* no environment and no cmdline, so default */
- deviceList =
- (char **) xalloc ((FALLBACK_LIST_LEN + 1) * sizeof (char *));
- for (i = 0; i < FALLBACK_LIST_LEN; i++)
- deviceList[i] = fallbackList[i];
- deviceList[FALLBACK_LIST_LEN] = NULL;
- }
- return deviceList;
-}
-
-static void getKbdType()
-{
-/*
- * The Sun 386i has system include files that preclude this pre SunOS 4.1
- * test for the presence of a type 4 keyboard however it really doesn't
- * matter since no 386i has ever been shipped with a type 3 keyboard.
- * SunOS 4.1 no longer needs this kludge.
- */
-#if !defined(i386) && !defined(KIOCGKEY)
-#define TYPE4KEYBOARDOVERRIDE
-#endif
-
- int ii;
-
- for (ii = 0; ii < 3; ii++) {
- sunKbdWait();
- (void) ioctl (sunKbdPriv.fd, KIOCTYPE, &sunKbdPriv.type);
-#ifdef TYPE4KEYBOARDOVERRIDE
- /*
- * Magic. Look for a key which is non-existent on a real type
- * 3 keyboard but does exist on a type 4 keyboard.
- */
- if (sunKbdPriv.type == KB_SUN3) {
- struct kiockeymap key;
-
- key.kio_tablemask = 0;
- key.kio_station = 118;
- if (ioctl(sunKbdPriv.fd, KIOCGKEY, &key) == -1) {
- Error( "ioctl KIOCGKEY" );
- FatalError("Can't KIOCGKEY on fd %d\n", sunKbdPriv.fd);
- }
- if (key.kio_entry != HOLE)
- sunKbdPriv.type = KB_SUN4;
- }
-#endif
- switch (sunKbdPriv.type) {
- case KB_SUN2:
- case KB_SUN3:
- case KB_SUN4: return;
- default:
- sunChangeKbdTranslation(sunKbdPriv.fd, FALSE);
- continue;
- }
- }
- FatalError ("Unsupported keyboard type %d\n", sunKbdPriv.type);
-}
-
-void OsVendorInit(
- void
-)
-{
- static int inited;
- if (!inited) {
-#ifndef i386
- struct rlimit rl;
-
- /*
- * one per client, one per screen, one per listen endpoint,
- * keyboard, mouse, and stderr
- */
- int maxfds = MAXCLIENTS + MAXSCREENS + 5;
-
- if (getrlimit (RLIMIT_NOFILE, &rl) == 0) {
- rl.rlim_cur = maxfds < rl.rlim_max ? maxfds : rl.rlim_max;
- (void) setrlimit (RLIMIT_NOFILE, &rl);
- }
-#endif
- sunKbdPriv.fd = open ("/dev/kbd", O_RDWR, 0);
- if (sunKbdPriv.fd < 0)
- FatalError ("Cannot open /dev/kbd, error %d\n", errno);
- sunPtrPriv.fd = open ("/dev/mouse", O_RDWR, 0);
- if (sunPtrPriv.fd < 0)
- FatalError ("Cannot open /dev/mouse, error %d\n", errno);
- getKbdType ();
- if (sunKbdPriv.type == KB_SUN4) {
- (void) ioctl (sunKbdPriv.fd, KIOCLAYOUT, &sunKbdPriv.layout);
- if (sunKbdPriv.layout < 0 ||
- sunKbdPriv.layout > sunMaxLayout ||
- sunType4KeyMaps[sunKbdPriv.layout] == NULL)
- FatalError ("Unsupported keyboard type 4 layout %d\n",
- sunKbdPriv.layout);
- sunKeySyms[KB_SUN4].map = sunType4KeyMaps[sunKbdPriv.layout];
- sunModMaps[KB_SUN4] = sunType4ModMaps[sunKbdPriv.layout];
- }
- inited = 1;
- }
-}
-
-#ifdef DDXOSFATALERROR
-void OsVendorFatalError(void)
-{
-}
-#endif
-
-/*-
- *-----------------------------------------------------------------------
- * InitOutput --
- * Initialize screenInfo for all actually accessible framebuffers.
- * The
- *
- * Results:
- * screenInfo init proc field set
- *
- * Side Effects:
- * None
- *
- *-----------------------------------------------------------------------
- */
-
-void InitOutput(pScreenInfo, argc, argv)
- ScreenInfo *pScreenInfo;
- int argc;
- char **argv;
-{
- int i, scr;
- int nonBlockConsole = 0;
- char **devList;
- static int setup_on_exit = 0;
- extern Bool RunFromSmartParent;
-
- if (!monitorResolution)
- monitorResolution = 90;
- if (RunFromSmartParent)
- nonBlockConsole = 1;
- for (i = 1; i < argc; i++) {
- if (!strcmp(argv[i],"-debug"))
- nonBlockConsole = 0;
- }
-
- /*
- * Writes to /dev/console can block - causing an
- * excess of error messages to hang the server in
- * deadlock. So.......
- */
- if (nonBlockConsole) {
- if (!setup_on_exit) {
-#if defined(SVR4) || defined(CSRG_BASED)
- if (atexit(sunNonBlockConsoleOff))
-#else
- if (on_exit(sunNonBlockConsoleOff, (char *)0))
-#endif
- ErrorF("InitOutput: can't register NBIO exit handler\n");
-
- setup_on_exit = 1;
- }
- i = fcntl(2, F_GETFL, 0);
- if (i >= 0)
- i = fcntl(2, F_SETFL, i | FNDELAY);
- if (i < 0) {
- Error("fcntl");
- ErrorF("InitOutput: can't put stderr in non-block mode\n");
- }
- }
- pScreenInfo->imageByteOrder = IMAGE_BYTE_ORDER;
- pScreenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
- pScreenInfo->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
- pScreenInfo->bitmapBitOrder = BITMAP_BIT_ORDER;
-
- pScreenInfo->numPixmapFormats = NUMFORMATS;
- for (i=0; i< NUMFORMATS; i++)
- pScreenInfo->formats[i] = formats[i];
-#ifdef XKB
- if (noXkbExtension)
-#endif
- sunAutoRepeatHandlersInstalled = FALSE;
- if (!sunDevsInited) {
- /* first time ever */
- for (scr = 0; scr < MAXSCREENS; scr++)
- sunFbs[scr].fd = -1;
- devList = GetDeviceList (argc, argv);
- for (i = 0, scr = 0; devList[i] != NULL && scr < MAXSCREENS; i++)
- if (OpenFrameBuffer (devList[i], scr))
- scr++;
- sunDevsInited = TRUE;
- xfree (devList);
- }
- for (scr = 0; scr < MAXSCREENS; scr++)
- if (sunFbs[scr].fd != -1)
- (void) AddScreen (sunFbData[sunFbs[scr].info.fb_type].init,
- argc, argv);
- (void) OsSignal(SIGWINCH, SIG_IGN);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * InitInput --
- * Initialize all supported input devices...what else is there
- * besides pointer and keyboard?
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Two DeviceRec's are allocated and registered as the system pointer
- * and keyboard devices.
- *
- *-----------------------------------------------------------------------
- */
-void InitInput(argc, argv)
- int argc;
- char **argv;
-{
- pointer p, k;
- extern Bool mieqInit();
-
- p = AddInputDevice(sunMouseProc, TRUE);
- k = AddInputDevice(sunKbdProc, TRUE);
- if (!p || !k)
- FatalError("failed to create input devices in InitInput");
-
- RegisterPointerDevice(p);
- RegisterKeyboardDevice(k);
- miRegisterPointerDevice(screenInfo.screens[0], p);
- (void) mieqInit (k, p);
-#define SET_FLOW(fd) fcntl(fd, F_SETFL, FNDELAY | FASYNC)
-#ifdef SVR4
- (void) OsSignal(SIGPOLL, SigIOHandler);
-#define WANT_SIGNALS(fd) ioctl(fd, I_SETSIG, S_INPUT | S_HIPRI)
-#else
- (void) OsSignal(SIGIO, SigIOHandler);
-#define WANT_SIGNALS(fd) fcntl(fd, F_SETOWN, getpid())
-#endif
- if (sunKbdPriv.fd >= 0) {
- if (SET_FLOW(sunKbdPriv.fd) == -1 || WANT_SIGNALS(sunKbdPriv.fd) == -1) {
- (void) close (sunKbdPriv.fd);
- sunKbdPriv.fd = -1;
- FatalError("Async kbd I/O failed in InitInput");
- }
- }
- if (sunPtrPriv.fd >= 0) {
- if (SET_FLOW(sunPtrPriv.fd) == -1 || WANT_SIGNALS(sunPtrPriv.fd) == -1) {
- (void) close (sunPtrPriv.fd);
- sunPtrPriv.fd = -1;
- FatalError("Async mouse I/O failed in InitInput");
- }
- }
-}
-
-
-#if SUNMAXDEPTH == 8
-
-Bool
-sunCfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width);
-}
-
-Bool
-sunCfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width);
-}
-
-Bool
-sunCfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
-}
-
-#else /* SUNMAXDEPTH != 8 */
-#if SUNMAXDEPTH == 32
-
-static Bool
-sunCfbCreateGC(pGC)
- GCPtr pGC;
-{
- if (pGC->depth == 1)
- {
- return mfbCreateGC (pGC);
- }
- else if (pGC->depth <= 8)
- {
- return cfbCreateGC (pGC);
- }
- else if (pGC->depth <= 16)
- {
- return cfb16CreateGC (pGC);
- }
- else if (pGC->depth <= 32)
- {
- return cfb32CreateGC (pGC);
- }
- return FALSE;
-}
-
-static void
-sunCfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart)
- DrawablePtr pDrawable; /* drawable from which to get bits */
- int wMax; /* largest value of all *pwidths */
- register DDXPointPtr ppt; /* points to start copying from */
- int *pwidth; /* list of number of bits to copy */
- int nspans; /* number of scanlines to copy */
- char *pdstStart; /* where to put the bits */
-{
- switch (pDrawable->bitsPerPixel) {
- case 1:
- mfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- break;
- case 8:
- cfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- break;
- case 16:
- cfb16GetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- break;
- case 32:
- cfb32GetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- break;
- }
- return;
-}
-
-static void
-sunCfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine)
- DrawablePtr pDrawable;
- int sx, sy, w, h;
- unsigned int format;
- unsigned long planeMask;
- char *pdstLine;
-{
- switch (pDrawable->bitsPerPixel)
- {
- case 1:
- mfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- break;
- case 8:
- cfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- break;
- case 16:
- cfb16GetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- break;
- case 32:
- cfb32GetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- break;
- }
-}
-
-Bool
-sunCfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- int ret;
-
- switch (bpp) {
- case 8:
- ret = cfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
- break;
- case 16:
- ret = cfb16SetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
- break;
- case 32:
- ret = cfb32SetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
- break;
- default:
- return FALSE;
- }
- pScreen->CreateGC = sunCfbCreateGC;
- pScreen->GetImage = sunCfbGetImage;
- pScreen->GetSpans = sunCfbGetSpans;
- return ret;
-}
-
-/* Adapt cfb logic */
-#undef CFB_NEED_SCREEN_PRIVATE
-#if !defined(SINGLEDEPTH) || defined(FORDE_SEPARATE_PRIVATE)
-#define CFB_NEED_SCREEN_PRIVATE
-#endif
-
-extern BSFuncRec cfbBSFuncRec, cfb16BSFuncRec, cfb32BSFuncRec;
-extern Bool cfbCloseScreen(), cfb16CloseScreen(), cfb32CloseScreen();
-#ifdef CFB_NEED_SCREEN_PRIVATE
-extern int cfb16ScreenPrivateIndex, cfb32ScreenPrivateIndex;
-#endif
-
-Bool
-sunCfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp;
-{
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pointer oldDevPrivate;
-#endif
- VisualPtr visuals;
- int nvisuals;
- DepthPtr depths;
- int ndepths;
- VisualID defaultVisual;
- int rootdepth = 0;
-
- if (!cfbInitVisuals(&visuals, &depths, &nvisuals, &ndepths,
- &rootdepth, &defaultVisual, 1 << (bpp - 1), 8))
- return FALSE;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- oldDevPrivate = pScreen->devPrivate;
-#endif
- if (! miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width,
- rootdepth, ndepths, depths,
- defaultVisual, nvisuals, visuals))
- return FALSE;
- switch (bpp)
- {
- case 8:
- pScreen->CloseScreen = cfbCloseScreen;
- pScreen->BackingStoreFuncs = cfbBSFuncRec;
- break;
- case 16:
- pScreen->CloseScreen = cfb16CloseScreen;
- pScreen->BackingStoreFuncs = cfb16BSFuncRec;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pScreen->devPrivates[cfb16ScreenPrivateIndex].ptr =
- pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
-#endif
- break;
- case 32:
- pScreen->CloseScreen = cfb32CloseScreen;
- pScreen->BackingStoreFuncs = cfb32BSFuncRec;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pScreen->devPrivates[cfb32ScreenPrivateIndex].ptr =
- pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
-#endif
- break;
- }
- return TRUE;
-}
-
-
-Bool
-sunCfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp;
-{
- if (!sunCfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width, bpp))
- return FALSE;
- return sunCfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix,
- dpiy, width, bpp);
-}
-
-#endif /* SUNMAXDEPTH == 32 */
-#endif /* SUNMAXDEPTH */
-
-#ifdef DPMSExtension
-/**************************************************************
- * DPMSSet(), DPMSGet(), DPMSSupported()
- *
- * stubs
- *
- ***************************************************************/
-
-void DPMSSet (level)
- int level;
-{
-}
-
-int DPMSGet (level)
- int* level;
-{
- return -1;
-}
-
-Bool DPMSSupported ()
-{
- return FALSE;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/sun/sunIo.c b/nx-X11/programs/Xserver/hw/sun/sunIo.c
deleted file mode 100644
index e8bc68887..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunIo.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/* $Xorg: sunIo.c,v 1.4 2001/03/07 17:34:19 pookie Exp $ */
-/*-
- * sunIo.c --
- * Functions to handle input from the keyboard and mouse.
- *
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sun/sunIo.c,v 3.9 2001/12/19 21:28:45 dawes Exp $ */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#define NEED_EVENTS
-#include "sun.h"
-#include "mi.h"
-
-/*-
- *-----------------------------------------------------------------------
- * ProcessInputEvents --
- * Retrieve all waiting input events and pass them to DIX in their
- * correct chronological order. Only reads from the system pointer
- * and keyboard.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Events are passed to the DIX layer.
- *
- *-----------------------------------------------------------------------
- */
-void
-ProcessInputEvents ()
-{
- mieqProcessInputEvents ();
- miPointerUpdate ();
-}
-
-/*
- *-----------------------------------------------------------------------
- * sunEnqueueEvents
- * When a SIGIO is received, read device hard events and
- * enqueue them using the mi event queue
- */
-
-void sunEnqueueEvents (
- void
-)
-{
- Firm_event *ptrEvents, /* Current pointer event */
- *kbdEvents; /* Current keyboard event */
- int numPtrEvents, /* Number of remaining pointer events */
- numKbdEvents; /* Number of remaining keyboard events */
- int nPE, /* Original number of pointer events */
- nKE; /* Original number of keyboard events */
- Bool PtrAgain, /* need to (re)read */
- KbdAgain; /* need to (re)read */
- DeviceIntPtr pPointer;
- DeviceIntPtr pKeyboard;
- sunKbdPrivPtr kbdPriv;
- sunPtrPrivPtr ptrPriv;
-
- pPointer = (DeviceIntPtr)LookupPointerDevice();
- pKeyboard = (DeviceIntPtr)LookupKeyboardDevice();
- ptrPriv = (sunPtrPrivPtr) pPointer->public.devicePrivate;
- kbdPriv = (sunKbdPrivPtr) pKeyboard->public.devicePrivate;
- if (!pPointer->public.on || !pKeyboard->public.on)
- return;
-
- numPtrEvents = 0;
- ptrEvents = NULL;
- PtrAgain = TRUE;
- numKbdEvents = 0;
- kbdEvents = NULL;
- KbdAgain = TRUE;
-
- /*
- * So long as one event from either device remains unprocess, we loop:
- * Take the oldest remaining event and pass it to the proper module
- * for processing. The DDXEvent will be sent to ProcessInput by the
- * function called.
- */
- while (1) {
- /*
- * Get events from both the pointer and the keyboard, storing the number
- * of events gotten in nPE and nKE and keeping the start of both arrays
- * in pE and kE
- */
- if ((numPtrEvents == 0) && PtrAgain) {
- ptrEvents = sunMouseGetEvents (ptrPriv->fd, pPointer->public.on,
- &nPE, &PtrAgain);
- numPtrEvents = nPE;
- }
- if ((numKbdEvents == 0) && KbdAgain) {
- kbdEvents = sunKbdGetEvents (kbdPriv->fd, pKeyboard->public.on,
- &nKE, &KbdAgain);
- numKbdEvents = nKE;
- }
- if ((numPtrEvents == 0) && (numKbdEvents == 0))
- break;
- if (numPtrEvents && numKbdEvents) {
- if (timercmp (&kbdEvents->time, &ptrEvents->time, <)) {
- sunKbdEnqueueEvent (pKeyboard, kbdEvents);
- numKbdEvents--;
- kbdEvents++;
- } else {
- sunMouseEnqueueEvent (pPointer, ptrEvents);
- numPtrEvents--;
- ptrEvents++;
- }
- } else if (numKbdEvents) {
- sunKbdEnqueueEvent (pKeyboard, kbdEvents);
- numKbdEvents--;
- kbdEvents++;
- } else {
- sunMouseEnqueueEvent (pPointer, ptrEvents);
- numPtrEvents--;
- ptrEvents++;
- }
- }
-}
-
-/*
- * DDX - specific abort routine. Called by AbortServer().
- */
-void AbortDDX()
-{
- int i;
- ScreenPtr pScreen;
- DevicePtr devPtr;
-
-#ifdef SVR4
- (void) OsSignal (SIGPOLL, SIG_IGN);
-#else
- (void) OsSignal (SIGIO, SIG_IGN);
-#endif
- devPtr = LookupKeyboardDevice();
- if (devPtr)
- (void) sunChangeKbdTranslation (((sunKbdPrivPtr)(devPtr->devicePrivate))->fd, FALSE);
-#if defined(SVR4) || defined(CSRG_BASED)
- sunNonBlockConsoleOff ();
-#else
- sunNonBlockConsoleOff (NULL);
-#endif
- for (i = 0; i < screenInfo.numScreens; i++)
- {
- pScreen = screenInfo.screens[i];
- (*pScreen->SaveScreen) (pScreen, SCREEN_SAVER_OFF);
- sunDisableCursor (pScreen);
- }
-}
-
-/* Called by GiveUp(). */
-void
-ddxGiveUp()
-{
- AbortDDX ();
-}
-
-/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
-void ddxInitGlobals(void)
-{
-}
-
-int
-ddxProcessArgument (argc, argv, i)
- int argc;
- char *argv[];
- int i;
-{
- extern void UseMsg();
- extern int XprintOptions(int, char **, int);
-
-#ifdef XKB
- int noxkb = 0, n;
- /*
- * peek in argv and see if -kb because noXkbExtension won't
- * get set until too late to useful here.
- */
- for (n = 1; n < argc; n++)
- if (strcmp (argv[n], "-kb") == 0)
- noxkb = 1;
-
- if (noxkb)
-#endif
- if (strcmp (argv[i], "-ar1") == 0) { /* -ar1 int */
- if (++i >= argc) UseMsg ();
- sunAutoRepeatInitiate = 1000 * (long)atoi(argv[i]); /* cvt to usec */
- if (sunAutoRepeatInitiate > 1000000)
- sunAutoRepeatInitiate = 999000;
- return 2;
- }
-#ifdef XKB
- if (noxkb)
-#endif
- if (strcmp (argv[i], "-ar2") == 0) { /* -ar2 int */
- if (++i >= argc) UseMsg ();
- sunAutoRepeatDelay = 1000 * (long)atoi(argv[i]); /* cvt to usec */
- if (sunAutoRepeatDelay > 1000000)
- sunAutoRepeatDelay = 999000;
- return 2;
- }
- if (strcmp (argv[i], "-swapLkeys") == 0) { /* -swapLkeys */
- sunSwapLkeys = TRUE;
- return 1;
- }
- if (strcmp (argv[i], "-debug") == 0) { /* -debug */
- return 1;
- }
- if (strcmp (argv[i], "-dev") == 0) { /* -dev /dev/mumble */
- if (++i >= argc) UseMsg ();
- return 2;
- }
- if (strcmp (argv[i], "-mono") == 0) { /* -mono */
- return 1;
- }
- if (strcmp (argv[i], "-zaphod") == 0) { /* -zaphod */
- sunActiveZaphod = FALSE;
- return 1;
- }
- if (strcmp (argv[i], "-flipPixels") == 0) { /* -flipPixels */
- sunFlipPixels = TRUE;
- return 1;
- }
- if (strcmp (argv[i], "-fbinfo") == 0) { /* -fbinfo */
- sunFbInfo = TRUE;
- return 1;
- }
- if (strcmp (argv[i], "-kbd") == 0) { /* -kbd */
- if (++i >= argc) UseMsg();
- return 2;
- }
- if (strcmp (argv[i], "-protect") == 0) { /* -protect */
- if (++i >= argc) UseMsg();
- return 2;
- }
- if (strcmp (argv[i], "-cg4frob") == 0) {
- sunCG4Frob = TRUE;
- return 1;
- }
- if (strcmp (argv[i], "-noGX") == 0) {
- sunNoGX = TRUE;
- return 1;
- }
- if (strcmp(argv[i], "-XpFile") == 0) {
- return XprintOptions(argc, argv, i) - i;
- }
- return 0;
-}
-
-void
-ddxUseMsg()
-{
-#ifndef XKB
- ErrorF("-ar1 int set autorepeat initiate time\n");
- ErrorF("-ar2 int set autorepeat interval time\n");
-#endif
- ErrorF("-swapLkeys swap keysyms on L1..L10\n");
- ErrorF("-debug disable non-blocking console mode\n");
- ErrorF("-dev fn[:fn][:fn] name of device[s] to open\n");
- ErrorF("-mono force monochrome-only screen\n");
- ErrorF("-zaphod disable active Zaphod mode\n");
- ErrorF("-fbinfo tell more about the found frame buffer(s)\n");
-#ifdef UNDOCUMENTED
- ErrorF("-cg4frob don't use the mono plane of the cgfour\n");
- ErrorF("-noGX treat the GX as a dumb frame buffer\n");
-#endif
- ErrorF("-XpFile specifies an alternate `Xprinters' file (Xprt only)\n");
-}
diff --git a/nx-X11/programs/Xserver/hw/sun/sunKbd.c b/nx-X11/programs/Xserver/hw/sun/sunKbd.c
deleted file mode 100644
index a11026d6f..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunKbd.c
+++ /dev/null
@@ -1,1071 +0,0 @@
-/* $Xorg: sunKbd.c,v 1.3 2000/08/17 19:48:30 cpqbld Exp $ */
-/*-
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-/* $XFree86: xc/programs/Xserver/hw/sun/sunKbd.c,v 1.8 2001/10/28 03:33:11 tsi Exp $ */
-
-#define NEED_EVENTS
-#include "sun.h"
-#include "keysym.h"
-#include "Sunkeysym.h"
-#include "mi.h"
-
-#ifdef XKB
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
-#include <X11/extensions/XKBsrv.h>
-#endif
-
-#define SUN_LED_MASK 0x0f
-#define MIN_KEYCODE 7 /* necessary to avoid the mouse buttons */
-#define MAX_KEYCODE 255 /* limited by the protocol */
-#ifndef KB_SUN4
-#define KB_SUN4 4
-#endif
-
-#define AUTOREPEAT_INITIATE 400
-#define AUTOREPEAT_DELAY 50
-
-#define tvminus(tv, tv1, tv2) /* tv = tv1 - tv2 */ \
- if ((tv1).tv_usec < (tv2).tv_usec) { \
- (tv1).tv_usec += 1000000; \
- (tv1).tv_sec -= 1; \
- } \
- (tv).tv_usec = (tv1).tv_usec - (tv2).tv_usec; \
- (tv).tv_sec = (tv1).tv_sec - (tv2).tv_sec;
-
-#define tvplus(tv, tv1, tv2) /* tv = tv1 + tv2 */ \
- (tv).tv_sec = (tv1).tv_sec + (tv2).tv_sec; \
- (tv).tv_usec = (tv1).tv_usec + (tv2).tv_usec; \
- if ((tv).tv_usec > 1000000) { \
- (tv).tv_usec -= 1000000; \
- (tv).tv_sec += 1; \
- }
-
-extern KeySymsRec sunKeySyms[];
-extern SunModmapRec* sunModMaps[];
-
-long sunAutoRepeatInitiate = 1000 * AUTOREPEAT_INITIATE;
-long sunAutoRepeatDelay = 1000 * AUTOREPEAT_DELAY;
-
-static int autoRepeatKeyDown = 0;
-static int autoRepeatReady;
-static int autoRepeatFirst;
-#if defined(_LP64) || defined(_I32LPx)
-static struct timeval32 autoRepeatLastKeyDownTv;
-static struct timeval32 autoRepeatDeltaTv;
-#else
-static struct timeval autoRepeatLastKeyDownTv;
-static struct timeval autoRepeatDeltaTv;
-#endif
-
-void sunKbdWait()
-{
- static struct timeval lastChngKbdTransTv;
- struct timeval tv;
- struct timeval lastChngKbdDeltaTv;
- unsigned int lastChngKbdDelta;
-
- X_GETTIMEOFDAY(&tv);
- if (!lastChngKbdTransTv.tv_sec)
- lastChngKbdTransTv = tv;
- tvminus(lastChngKbdDeltaTv, tv, lastChngKbdTransTv);
- lastChngKbdDelta = TVTOMILLI(lastChngKbdDeltaTv);
- if (lastChngKbdDelta < 750) {
- unsigned wait;
- /*
- * We need to guarantee at least 750 milliseconds between
- * calls to KIOCTRANS. YUCK!
- */
- wait = (750L - lastChngKbdDelta) * 1000L;
- usleep (wait);
- X_GETTIMEOFDAY(&tv);
- }
- lastChngKbdTransTv = tv;
-}
-
-static void SwapLKeys(keysyms)
- KeySymsRec* keysyms;
-{
- unsigned int i;
- KeySym k;
-
- for (i = 2; i < keysyms->maxKeyCode * keysyms->mapWidth; i++)
- if (keysyms->map[i] == XK_L1 ||
- keysyms->map[i] == XK_L2 ||
- keysyms->map[i] == XK_L3 ||
- keysyms->map[i] == XK_L4 ||
- keysyms->map[i] == XK_L5 ||
- keysyms->map[i] == XK_L6 ||
- keysyms->map[i] == XK_L7 ||
- keysyms->map[i] == XK_L8 ||
- keysyms->map[i] == XK_L9 ||
- keysyms->map[i] == XK_L10) {
- /* yes, I could have done a clever two line swap! */
- k = keysyms->map[i - 2];
- keysyms->map[i - 2] = keysyms->map[i];
- keysyms->map[i] = k;
- }
-}
-
-static void SetLights (ctrl, fd)
- KeybdCtrl* ctrl;
- int fd;
-{
-#ifdef KIOCSLED
- static unsigned char led_tab[16] = {
- 0,
- LED_NUM_LOCK,
- LED_SCROLL_LOCK,
- LED_SCROLL_LOCK | LED_NUM_LOCK,
- LED_COMPOSE,
- LED_COMPOSE | LED_NUM_LOCK,
- LED_COMPOSE | LED_SCROLL_LOCK,
- LED_COMPOSE | LED_SCROLL_LOCK | LED_NUM_LOCK,
- LED_CAPS_LOCK,
- LED_CAPS_LOCK | LED_NUM_LOCK,
- LED_CAPS_LOCK | LED_SCROLL_LOCK,
- LED_CAPS_LOCK | LED_SCROLL_LOCK | LED_NUM_LOCK,
- LED_CAPS_LOCK | LED_COMPOSE,
- LED_CAPS_LOCK | LED_COMPOSE | LED_NUM_LOCK,
- LED_CAPS_LOCK | LED_COMPOSE | LED_SCROLL_LOCK,
- LED_CAPS_LOCK | LED_COMPOSE | LED_SCROLL_LOCK | LED_NUM_LOCK
- };
- if (ioctl (fd, KIOCSLED, (caddr_t)&led_tab[ctrl->leds & 0x0f]) == -1)
- Error("Failed to set keyboard lights");
-#endif
-}
-
-
-static void ModLight (device, on, led)
- DeviceIntPtr device;
- Bool on;
- int led;
-{
- KeybdCtrl* ctrl = &device->kbdfeed->ctrl;
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr) device->public.devicePrivate;
-
- if(on) {
- ctrl->leds |= led;
- pPriv->leds |= led;
- } else {
- ctrl->leds &= ~led;
- pPriv->leds &= ~led;
- }
- SetLights (ctrl, pPriv->fd);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunBell --
- * Ring the terminal/keyboard bell
- *
- * Results:
- * Ring the keyboard bell for an amount of time proportional to
- * "loudness."
- *
- * Side Effects:
- * None, really...
- *
- *-----------------------------------------------------------------------
- */
-
-static void bell (
- int fd,
- int duration)
-{
- int kbdCmd; /* Command to give keyboard */
-
- kbdCmd = KBD_CMD_BELL;
- if (ioctl (fd, KIOCCMD, &kbdCmd) == -1) {
- Error("Failed to activate bell");
- return;
- }
- if (duration) usleep (duration);
- kbdCmd = KBD_CMD_NOBELL;
- if (ioctl (fd, KIOCCMD, &kbdCmd) == -1)
- Error ("Failed to deactivate bell");
-}
-
-static void sunBell (
- int percent,
- DeviceIntPtr device,
- pointer ctrl,
- int unused)
-{
- KeybdCtrl* kctrl = (KeybdCtrl*) ctrl;
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr) device->public.devicePrivate;
-
- if (percent == 0 || kctrl->bell == 0)
- return;
-
- bell (pPriv->fd, kctrl->bell_duration * 1000);
-}
-
-static void sunEnqueueEvent (xE)
- xEvent* xE;
-{
-#ifndef i386
- sigset_t holdmask;
-
-#ifdef SVR4
- (void) sigaddset (&holdmask, SIGPOLL);
-#else
- (void) sigaddset (&holdmask, SIGIO);
-#endif
- (void) sigprocmask (SIG_BLOCK, &holdmask, (sigset_t*)NULL);
- mieqEnqueue (xE);
- (void) sigprocmask (SIG_UNBLOCK, &holdmask, (sigset_t*)NULL);
-#else
- int oldmask = sigblock (sigmask (SIGIO));
-
- mieqEnqueue (xE);
- sigsetmask (oldmask);
-#endif
-}
-
-
-#define XLED_NUM_LOCK 0x1
-#define XLED_COMPOSE 0x4
-#define XLED_SCROLL_LOCK 0x2
-#define XLED_CAPS_LOCK 0x8
-
-static KeyCode LookupKeyCode (keysym, keysymsrec)
- KeySym keysym;
- KeySymsPtr keysymsrec;
-{
- KeyCode i;
- int ii, index = 0;
-
- for (i = keysymsrec->minKeyCode; i < keysymsrec->maxKeyCode; i++)
- for (ii = 0; ii < keysymsrec->mapWidth; ii++)
- if (keysymsrec->map[index++] == keysym)
- return i;
- return 0;
-}
-
-static void pseudoKey(device, down, keycode)
- DeviceIntPtr device;
- Bool down;
- KeyCode keycode;
-{
- int bit;
- CARD8 modifiers;
- CARD16 mask;
- BYTE* kptr;
-
- kptr = &device->key->down[keycode >> 3];
- bit = 1 << (keycode & 7);
- modifiers = device->key->modifierMap[keycode];
- if (down) {
- /* fool dix into thinking this key is now "down" */
- int i;
- *kptr |= bit;
- device->key->prev_state = device->key->state;
- for (i = 0, mask = 1; modifiers; i++, mask <<= 1)
- if (mask & modifiers) {
- device->key->modifierKeyCount[i]++;
- device->key->state += mask;
- modifiers &= ~mask;
- }
- } else {
- /* fool dix into thinking this key is now "up" */
- if (*kptr & bit) {
- int i;
- *kptr &= ~bit;
- device->key->prev_state = device->key->state;
- for (i = 0, mask = 1; modifiers; i++, mask <<= 1)
- if (mask & modifiers) {
- if (--device->key->modifierKeyCount[i] <= 0) {
- device->key->state &= ~mask;
- device->key->modifierKeyCount[i] = 0;
- }
- modifiers &= ~mask;
- }
- }
- }
-}
-
-static void DoLEDs(device, ctrl, pPriv)
- DeviceIntPtr device; /* Keyboard to alter */
- KeybdCtrl* ctrl;
- sunKbdPrivPtr pPriv;
-{
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- if ((ctrl->leds & XLED_CAPS_LOCK) && !(pPriv->leds & XLED_CAPS_LOCK))
- pseudoKey(device, TRUE,
- LookupKeyCode(XK_Caps_Lock, &device->key->curKeySyms));
-
- if (!(ctrl->leds & XLED_CAPS_LOCK) && (pPriv->leds & XLED_CAPS_LOCK))
- pseudoKey(device, FALSE,
- LookupKeyCode(XK_Caps_Lock, &device->key->curKeySyms));
-
- if ((ctrl->leds & XLED_NUM_LOCK) && !(pPriv->leds & XLED_NUM_LOCK))
- pseudoKey(device, TRUE,
- LookupKeyCode(XK_Num_Lock, &device->key->curKeySyms));
-
- if (!(ctrl->leds & XLED_NUM_LOCK) && (pPriv->leds & XLED_NUM_LOCK))
- pseudoKey(device, FALSE,
- LookupKeyCode(XK_Num_Lock, &device->key->curKeySyms));
-
- if ((ctrl->leds & XLED_SCROLL_LOCK) && !(pPriv->leds & XLED_SCROLL_LOCK))
- pseudoKey(device, TRUE,
- LookupKeyCode(XK_Scroll_Lock, &device->key->curKeySyms));
-
- if (!(ctrl->leds & XLED_SCROLL_LOCK) && (pPriv->leds & XLED_SCROLL_LOCK))
- pseudoKey(device, FALSE,
- LookupKeyCode(XK_Scroll_Lock, &device->key->curKeySyms));
-
- if ((ctrl->leds & XLED_COMPOSE) && !(pPriv->leds & XLED_COMPOSE))
- pseudoKey(device, TRUE,
- LookupKeyCode(SunXK_Compose, &device->key->curKeySyms));
-
- if (!(ctrl->leds & XLED_COMPOSE) && (pPriv->leds & XLED_COMPOSE))
- pseudoKey(device, FALSE,
- LookupKeyCode(SunXK_Compose, &device->key->curKeySyms));
-#ifdef XKB
- }
-#endif
- pPriv->leds = ctrl->leds & 0x0f;
- SetLights (ctrl, pPriv->fd);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunKbdCtrl --
- * Alter some of the keyboard control parameters
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Some...
- *
- *-----------------------------------------------------------------------
- */
-
-static void sunKbdCtrl (
- DeviceIntPtr device,
- KeybdCtrl* ctrl)
-{
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr) device->public.devicePrivate;
-
- if (pPriv->fd < 0) return;
-
- if (ctrl->click != pPriv->click) {
- int kbdClickCmd;
-
- pPriv->click = ctrl->click;
- kbdClickCmd = pPriv->click ? KBD_CMD_CLICK : KBD_CMD_NOCLICK;
- if (ioctl (pPriv->fd, KIOCCMD, &kbdClickCmd) == -1)
- Error("Failed to set keyclick");
- }
- if ((pPriv->type == KB_SUN4) && (pPriv->leds != (ctrl->leds & 0x0f)))
- DoLEDs(device, ctrl, pPriv);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunInitKbdNames --
- * Handle the XKB initialization
- *
- * Results:
- * None.
- *
- * Comments:
- * This function needs considerable work, in conjunctions with
- * the need to add geometry descriptions of Sun Keyboards.
- * It would also be nice to have #defines for all the keyboard
- * layouts so that we don't have to have these hard-coded
- * numbers.
- *
- *-----------------------------------------------------------------------
- */
-#ifdef XKB
-static void sunInitKbdNames (
- XkbComponentNamesRec* names,
- sunKbdPrivPtr pKbd)
-{
-#ifndef XKBBUFSIZE
-#define XKBBUFSIZE 64
-#endif
- static char keycodesbuf[XKBBUFSIZE];
- static char geometrybuf[XKBBUFSIZE];
- static char symbolsbuf[XKBBUFSIZE];
-
- names->keymap = NULL;
- names->compat = "compat/complete";
- names->types = "types/complete";
- names->keycodes = keycodesbuf;
- names->geometry = geometrybuf;
- names->symbols = symbolsbuf;
- (void) strcpy (keycodesbuf, "keycodes/");
- (void) strcpy (geometrybuf, "geometry/");
- (void) strcpy (symbolsbuf, "symbols/");
-
- /* keycodes & geometry */
- switch (pKbd->type) {
- case KB_SUN2:
- (void) strcat (names->keycodes, "sun(type2)");
- (void) strcat (names->geometry, "sun(type2)");
- (void) strcat (names->symbols, "us(sun2)");
- break;
- case KB_SUN3:
- (void) strcat (names->keycodes, "sun(type3)");
- (void) strcat (names->geometry, "sun(type3)");
- (void) strcat (names->symbols, "us(sun3)");
- break;
- case KB_SUN4:
- /* First, catch "fully known" models */
- switch (pKbd->layout) {
- case 11: /* type4, Sweden */
- (void) strcat (names->geometry, "sun(type4_se)");
- (void) strcat (names->keycodes,
- "sun(type4_se_swapctl)");
- (void) strcat (names->symbols,
- "sun/se(sun4)+se(fixdollar)");
- return;
- break;
- case 43: /* type5/5c, Sweden */
- (void) strcat (names->geometry, "sun(type5c_se)");
- (void) strcat (names->keycodes, "sun(type5_se)");
- (void) strcat (names->symbols,
- "sun/se(sun5)+se(fixdollar)");
- return;
- break;
- case 90: /* "Compact 1", Sweden (???) */
- break; /* No specific mapping, yet */
- default:
- break;
- }
-
- if (pKbd->layout == 19) {
- (void) strcat (names->keycodes, "sun(US101A)");
- (void) strcat (names->geometry, "pc101-NG"); /* XXX */
- (void) strcat (names->symbols, "us(pc101)");
- } else if (pKbd->layout < 33) {
- (void) strcat (names->keycodes, "sun(type4)");
- (void) strcat (names->geometry, "sun(type4)");
- if (sunSwapLkeys)
- (void) strcat (names->symbols, "sun/us(sun4ol)");
- else
- (void) strcat (names->symbols, "sun/us(sun4)");
- } else {
- (void) strcat (names->keycodes, "sun(type5)");
-
- switch (pKbd->layout) {
- case 33: case 80: /* U.S. */
- case 47: case 94: /* Korea */
- case 48: case 95: /* Taiwan */
- case 49: case 96: /* Japan */
- (void) strcat (names->geometry, "sun(type5)");
- break;
- case 34: case 81: /* U.S. Unix */
- (void) strcat (names->geometry, "sun(type5unix)");
- break;
- default:
- (void) strcat (names->geometry, "sun(type5euro)");
- }
-
- if (sunSwapLkeys)
- (void) strcat (names->symbols, "sun/us(sun5ol)");
- else
- (void) strcat (names->symbols, "sun/us(sun5)");
- }
- break;
- default:
- names->keycodes = names->geometry = NULL;
- break;
- }
-
- /* extra symbols */
-
- if (pKbd->type == KB_SUN4) {
- switch (pKbd->layout) {
- case 4: case 36: case 83:
- case 5: case 37: case 84:
- case 6: case 38: case 85:
- case 8: case 40: case 87:
- case 9: case 41: case 88:
- case 10: case 42: case 89:
-/* case 11: case 43: case 90: */ /* handled earlier */
- case 12: case 44: case 91:
- case 13: case 45: case 92:
- case 14: case 46: case 93:
- (void) strcat (names->symbols, "+iso9995-3(basic)"); break;
- }
- }
-
- if (pKbd->type == KB_SUN4) {
- switch (pKbd->layout) {
- case 0: case 1: case 33: case 34: case 80: case 81:
- break;
- case 3:
- (void) strcat (names->symbols, "+ca"); break;
- case 4: case 36: case 83:
- (void) strcat (names->symbols, "+dk"); break;
- case 5: case 37: case 84:
- (void) strcat (names->symbols, "+de"); break;
- case 6: case 38: case 85:
- (void) strcat (names->symbols, "+it"); break;
- case 8: case 40: case 87:
- (void) strcat (names->symbols, "+no"); break;
- case 9: case 41: case 88:
- (void) strcat (names->symbols, "+pt"); break;
- case 10: case 42: case 89:
- (void) strcat (names->symbols, "+es"); break;
- /* case 11: case 43: */ /* handled earlier */
- case 90:
- (void) strcat (names->symbols, "+se"); break;
- case 12: case 44: case 91:
- (void) strcat (names->symbols, "+fr_CH"); break;
- case 13: case 45: case 92:
- (void) strcat (names->symbols, "+de_CH"); break;
- case 14: case 46: case 93:
- (void) strcat (names->symbols, "+gb"); break; /* s/b en_UK */
- case 52:
- (void) strcat (names->symbols, "+pl"); break;
- case 53:
- (void) strcat (names->symbols, "+cs"); break;
- case 54:
- (void) strcat (names->symbols, "+ru"); break;
-#if 0
- /* don't have symbols defined for these yet, let them default */
- case 2:
- (void) strcat (names->symbols, "+fr_BE"); break;
- case 7: case 39: case 86:
- (void) strcat (names->symbols, "+nl"); break;
- case 50: case 97:
- (void) strcat (names->symbols, "+fr_CA"); break;
- case 16: case 47: case 94:
- (void) strcat (names->symbols, "+ko"); break;
- case 17: case 48: case 95:
- (void) strcat (names->symbols, "+tw"); break;
- case 32: case 49: case 96:
- (void) strcat (names->symbols, "+jp"); break;
- case 51:
- (void) strcat (names->symbols, "+hu"); break;
-#endif
- /*
- * by setting the symbols to NULL XKB will use the symbols in
- * the "default" keymap.
- */
- default:
- names->symbols = NULL; return; break;
- }
- }
-}
-#endif /* XKB */
-
-/*-
- *-----------------------------------------------------------------------
- * sunKbdProc --
- * Handle the initialization, etc. of a keyboard.
- *
- * Results:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-
-int sunKbdProc (
- DeviceIntPtr device,
- int what)
-{
- int i;
- DevicePtr pKeyboard = (DevicePtr) device;
- sunKbdPrivPtr pPriv;
- KeybdCtrl* ctrl = &device->kbdfeed->ctrl;
- extern int XkbDfltRepeatDelay, XkbDfltRepeatInterval;
-
- static CARD8 *workingModMap = NULL;
- static KeySymsRec *workingKeySyms;
-
- switch (what) {
- case DEVICE_INIT:
- if (pKeyboard != LookupKeyboardDevice()) {
- ErrorF ("Cannot open non-system keyboard\n");
- return (!Success);
- }
-
- if (!workingKeySyms) {
- workingKeySyms = &sunKeySyms[sunKbdPriv.type];
-
- if (sunKbdPriv.type == KB_SUN4 && sunSwapLkeys)
- SwapLKeys(workingKeySyms);
-
- if (workingKeySyms->minKeyCode < MIN_KEYCODE) {
- workingKeySyms->minKeyCode += MIN_KEYCODE;
- workingKeySyms->maxKeyCode += MIN_KEYCODE;
- }
- if (workingKeySyms->maxKeyCode > MAX_KEYCODE)
- workingKeySyms->maxKeyCode = MAX_KEYCODE;
- }
-
- if (!workingModMap) {
- workingModMap=(CARD8 *)xalloc(MAP_LENGTH);
- (void) memset(workingModMap, 0, MAP_LENGTH);
- for(i=0; sunModMaps[sunKbdPriv.type][i].key != 0; i++)
- workingModMap[sunModMaps[sunKbdPriv.type][i].key + MIN_KEYCODE] =
- sunModMaps[sunKbdPriv.type][i].modifiers;
- }
-
- (void) memset ((void *) defaultKeyboardControl.autoRepeats,
- ~0, sizeof defaultKeyboardControl.autoRepeats);
-
-#ifdef XKB
- if (noXkbExtension) {
- sunAutoRepeatInitiate = XkbDfltRepeatDelay * 1000;
- sunAutoRepeatDelay = XkbDfltRepeatInterval * 1000;
-#endif
- autoRepeatKeyDown = 0;
-#ifdef XKB
- }
-#endif
- pKeyboard->devicePrivate = (pointer)&sunKbdPriv;
- pKeyboard->on = FALSE;
-
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- InitKeyboardDeviceStruct(pKeyboard,
- workingKeySyms, workingModMap,
- sunBell, sunKbdCtrl);
-#ifdef XKB
- } else {
- XkbComponentNamesRec names;
- sunInitKbdNames (&names, &sunKbdPriv);
- XkbInitKeyboardDeviceStruct((DeviceIntPtr) pKeyboard, &names,
- workingKeySyms, workingModMap,
- sunBell, sunKbdCtrl);
- }
-#endif
- break;
-
- case DEVICE_ON:
- pPriv = (sunKbdPrivPtr)pKeyboard->devicePrivate;
- /*
- * Set the keyboard into "direct" mode and turn on
- * event translation.
- */
- if (sunChangeKbdTranslation(pPriv->fd,TRUE) == -1)
- FatalError("Can't set keyboard translation\n");
- AddEnabledDevice(pPriv->fd);
- pKeyboard->on = TRUE;
- break;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- pPriv = (sunKbdPrivPtr)pKeyboard->devicePrivate;
- if (pPriv->type == KB_SUN4) {
- /* dumb bug in Sun's keyboard! Turn off LEDS before resetting */
- pPriv->leds = 0;
- ctrl->leds = 0;
- SetLights(ctrl, pPriv->fd);
- }
- /*
- * Restore original keyboard directness and translation.
- */
- if (sunChangeKbdTranslation(pPriv->fd,FALSE) == -1)
- FatalError("Can't reset keyboard translation\n");
- RemoveEnabledDevice(pPriv->fd);
- pKeyboard->on = FALSE;
- break;
- default:
- FatalError("Unknown keyboard operation\n");
- }
- return Success;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunKbdGetEvents --
- * Return the events waiting in the wings for the given keyboard.
- *
- * Results:
- * A pointer to an array of Firm_events or (Firm_event *)0 if no events
- * The number of events contained in the array.
- * A boolean as to whether more events might be available.
- *
- * Side Effects:
- * None.
- *-----------------------------------------------------------------------
- */
-
-Firm_event* sunKbdGetEvents (
- int fd,
- Bool on,
- int* pNumEvents,
- Bool* pAgain)
-{
- int nBytes; /* number of bytes of events available. */
- static Firm_event evBuf[MAXEVENTS]; /* Buffer for Firm_events */
-
- if ((nBytes = read (fd, evBuf, sizeof(evBuf))) == -1) {
- if (errno == EWOULDBLOCK) {
- *pNumEvents = 0;
- *pAgain = FALSE;
- } else {
- Error ("Reading keyboard");
- FatalError ("Could not read the keyboard");
- }
- } else {
- if (on) {
- *pNumEvents = nBytes / sizeof (Firm_event);
- *pAgain = (nBytes == sizeof (evBuf));
- } else {
- *pNumEvents = 0;
- *pAgain = FALSE;
- }
- }
- return evBuf;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunKbdEnqueueEvent --
- *
- *-----------------------------------------------------------------------
- */
-static xEvent autoRepeatEvent;
-static int composeCount;
-
-static Bool DoSpecialKeys(device, xE, fe)
- DeviceIntPtr device;
- xEvent* xE;
- Firm_event* fe;
-{
- int shift_index, map_index, bit;
- KeySym ksym;
- BYTE* kptr;
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr)device->public.devicePrivate;
- BYTE keycode = xE->u.u.detail;
- CARD8 keyModifiers = device->key->modifierMap[keycode];
-
- /* look up the present idea of the keysym */
- shift_index = 0;
- if (device->key->state & ShiftMask)
- shift_index ^= 1;
- if (device->key->state & LockMask)
- shift_index ^= 1;
- map_index = (fe->id - 1) * device->key->curKeySyms.mapWidth;
- ksym = device->key->curKeySyms.map[shift_index + map_index];
- if (ksym == NoSymbol)
- ksym = device->key->curKeySyms.map[map_index];
-
- /*
- * Toggle functionality is hardcoded. This is achieved by always
- * discarding KeyReleases on these keys, and converting every other
- * KeyPress into a KeyRelease.
- */
- if (xE->u.u.type == KeyRelease
- && (ksym == XK_Num_Lock
- || ksym == XK_Scroll_Lock
- || ksym == SunXK_Compose
- || (keyModifiers & LockMask)))
- return TRUE;
-
- kptr = &device->key->down[keycode >> 3];
- bit = 1 << (keycode & 7);
- if ((*kptr & bit) &&
- (ksym == XK_Num_Lock || ksym == XK_Scroll_Lock ||
- ksym == SunXK_Compose || (keyModifiers & LockMask)))
- xE->u.u.type = KeyRelease;
-
- if (pPriv->type == KB_SUN4) {
- if (ksym == XK_Num_Lock) {
- ModLight (device, xE->u.u.type == KeyPress, XLED_NUM_LOCK);
- } else if (ksym == XK_Scroll_Lock) {
- ModLight (device, xE->u.u.type == KeyPress, XLED_SCROLL_LOCK);
- } else if (ksym == SunXK_Compose) {
- ModLight (device, xE->u.u.type == KeyPress, XLED_COMPOSE);
- if (xE->u.u.type == KeyPress) composeCount = 2;
- else composeCount = 0;
- } else if (keyModifiers & LockMask) {
- ModLight (device, xE->u.u.type == KeyPress, XLED_CAPS_LOCK);
- }
- if (xE->u.u.type == KeyRelease) {
- if (composeCount > 0 && --composeCount == 0) {
- pseudoKey(device, FALSE,
- LookupKeyCode(SunXK_Compose, &device->key->curKeySyms));
- ModLight (device, FALSE, XLED_COMPOSE);
- }
- }
- }
-
- if ((xE->u.u.type == KeyPress) && (keyModifiers == 0)) {
- /* initialize new AutoRepeater event & mark AutoRepeater on */
- autoRepeatEvent = *xE;
- autoRepeatFirst = TRUE;
- autoRepeatKeyDown++;
- autoRepeatLastKeyDownTv = fe->time;
- }
- return FALSE;
-}
-
-void sunKbdEnqueueEvent (
- DeviceIntPtr device,
- Firm_event *fe)
-{
- xEvent xE;
- BYTE keycode;
- CARD8 keyModifiers;
-
- keycode = (fe->id & 0x7f) + MIN_KEYCODE;
-
- keyModifiers = device->key->modifierMap[keycode];
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- if (autoRepeatKeyDown && (keyModifiers == 0) &&
- ((fe->value == VKEY_DOWN) || (keycode == autoRepeatEvent.u.u.detail))) {
- /*
- * Kill AutoRepeater on any real non-modifier key down, or auto key up
- */
- autoRepeatKeyDown = 0;
- }
-#ifdef XKB
- }
-#endif
- xE.u.keyButtonPointer.time = TVTOMILLI(fe->time);
- xE.u.u.type = ((fe->value == VKEY_UP) ? KeyRelease : KeyPress);
- xE.u.u.detail = keycode;
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- if (DoSpecialKeys(device, &xE, fe))
- return;
-#ifdef XKB
- }
-#endif /* ! XKB */
- mieqEnqueue (&xE);
-}
-
-void sunEnqueueAutoRepeat ()
-{
- int delta;
- int i, mask;
- DeviceIntPtr device = (DeviceIntPtr)LookupKeyboardDevice();
- KeybdCtrl* ctrl = &device->kbdfeed->ctrl;
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr) device->public.devicePrivate;
-
- if (ctrl->autoRepeat != AutoRepeatModeOn) {
- autoRepeatKeyDown = 0;
- return;
- }
- i=(autoRepeatEvent.u.u.detail >> 3);
- mask=(1 << (autoRepeatEvent.u.u.detail & 7));
- if (!(ctrl->autoRepeats[i] & mask)) {
- autoRepeatKeyDown = 0;
- return;
- }
-
- /*
- * Generate auto repeat event. XXX one for now.
- * Update time & pointer location of saved KeyPress event.
- */
-
- delta = TVTOMILLI(autoRepeatDeltaTv);
- autoRepeatFirst = FALSE;
-
- /*
- * Fake a key up event and a key down event
- * for the last key pressed.
- */
- autoRepeatEvent.u.keyButtonPointer.time += delta;
- autoRepeatEvent.u.u.type = KeyRelease;
-
- /*
- * hold off any more inputs while we get these safely queued up
- * further SIGIO are
- */
- sunEnqueueEvent (&autoRepeatEvent);
- autoRepeatEvent.u.u.type = KeyPress;
- sunEnqueueEvent (&autoRepeatEvent);
- if (ctrl->click) bell (pPriv->fd, 0);
-
- /* Update time of last key down */
- tvplus(autoRepeatLastKeyDownTv, autoRepeatLastKeyDownTv,
- autoRepeatDeltaTv);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunChangeKbdTranslation
- * Makes operating system calls to set keyboard translation
- * and direction on or off.
- *
- * Results:
- * -1 if failure, else 0.
- *
- * Side Effects:
- * Changes kernel management of keyboard.
- *
- *-----------------------------------------------------------------------
- */
-int sunChangeKbdTranslation(
- int fd,
- Bool makeTranslated)
-
-{
- int tmp;
-#ifndef i386 /* { */
- sigset_t hold_mask, old_mask;
-#else /* }{ */
- int old_mask;
-#endif /* } */
- int toread;
- char junk[8192];
-
-#ifndef i386 /* { */
- (void) sigfillset(&hold_mask);
- (void) sigprocmask(SIG_BLOCK, &hold_mask, &old_mask);
-#else /* }{ */
- old_mask = sigblock (~0);
-#endif /* } */
- sunKbdWait();
- if (makeTranslated) {
- /*
- * Next set the keyboard into "direct" mode and turn on
- * event translation. If either of these fails, we can't go
- * on.
- */
- tmp = 1;
- if (ioctl (fd, KIOCSDIRECT, &tmp) == -1) {
- Error ("Setting keyboard direct mode");
- return -1;
- }
- tmp = TR_UNTRANS_EVENT;
- if (ioctl (fd, KIOCTRANS, &tmp) == -1) {
- Error ("Setting keyboard translation");
- ErrorF ("sunChangeKbdTranslation: kbdFd=%d\n", fd);
- return -1;
- }
- } else {
- /*
- * Next set the keyboard into "indirect" mode and turn off
- * event translation.
- */
- tmp = 0;
- (void)ioctl (fd, KIOCSDIRECT, &tmp);
- tmp = TR_ASCII;
- (void)ioctl (fd, KIOCTRANS, &tmp);
- }
- if (ioctl (fd, FIONREAD, &toread) != -1 && toread > 0) {
- while (toread) {
- tmp = toread;
- if (toread > sizeof (junk))
- tmp = sizeof (junk);
- (void) read (fd, junk, tmp);
- toread -= tmp;
- }
- }
-#ifndef i386 /* { */
- (void) sigprocmask(SIG_SETMASK, &old_mask, (sigset_t *)NULL);
-#else /* }{ */
- sigsetmask (old_mask);
-#endif /* } */
- return 0;
-}
-
-/*ARGSUSED*/
-Bool LegalModifier(key, pDev)
- unsigned int key;
- DevicePtr pDev;
-{
- return TRUE;
-}
-
-/*ARGSUSED*/
-void sunBlockHandler(nscreen, pbdata, pptv, pReadmask)
- int nscreen;
- pointer pbdata;
- struct timeval **pptv;
- pointer pReadmask;
-{
- KeybdCtrl* ctrl = &((DeviceIntPtr)LookupKeyboardDevice())->kbdfeed->ctrl;
- static struct timeval artv = { 0, 0 }; /* autorepeat timeval */
-
- if (!autoRepeatKeyDown)
- return;
-
- if (ctrl->autoRepeat != AutoRepeatModeOn)
- return;
-
- if (autoRepeatFirst == TRUE)
- artv.tv_usec = sunAutoRepeatInitiate;
- else
- artv.tv_usec = sunAutoRepeatDelay;
- *pptv = &artv;
-
-}
-
-/*ARGSUSED*/
-void sunWakeupHandler(nscreen, pbdata, err, pReadmask)
- int nscreen;
- pointer pbdata;
- unsigned long err;
- pointer pReadmask;
-{
- KeybdCtrl* ctrl = &((DeviceIntPtr)LookupKeyboardDevice())->kbdfeed->ctrl;
- struct timeval tv;
-
- if (ctrl->autoRepeat != AutoRepeatModeOn)
- return;
-
- if (autoRepeatKeyDown) {
- X_GETTIMEOFDAY(&tv);
- tvminus(autoRepeatDeltaTv, tv, autoRepeatLastKeyDownTv);
- if (autoRepeatDeltaTv.tv_sec > 0 ||
- (!autoRepeatFirst && autoRepeatDeltaTv.tv_usec >
- sunAutoRepeatDelay) ||
- (autoRepeatDeltaTv.tv_usec >
- sunAutoRepeatInitiate))
- autoRepeatReady++;
- }
-
- if (autoRepeatReady)
- {
- sunEnqueueAutoRepeat ();
- autoRepeatReady = 0;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/sun/sunKeyMap.c b/nx-X11/programs/Xserver/hw/sun/sunKeyMap.c
deleted file mode 100644
index 33300fcb6..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunKeyMap.c
+++ /dev/null
@@ -1,5797 +0,0 @@
-/* $Xorg: sunKeyMap.c,v 1.3 2000/08/17 19:48:30 cpqbld Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-/* $XFree86: xc/programs/Xserver/hw/sun/sunKeyMap.c,v 1.3 2001/01/17 22:36:50 dawes Exp $ */
-
-#include "sun.h"
-#define XK_KATAKANA
-#include "keysym.h"
-#include "Sunkeysym.h"
-
-/*
- By default all keyboards are hardcoded on the theory that people
- might remove /usr/openwin making it impossible to parse the files
- in /usr/openwin/share/etc/keytables.
-*/
-#define CAN4
-#define CANFR5
-#define DEN4
-#define DEN5
-#define FR5
-#define FRBE4
-#define GER4
-#define GER5
-#define ITALY4
-#define ITALY5
-#define JAPAN4
-#define JAPAN5
-#define KOREA4
-#define KOREA5
-#define NETH4
-#define NETH5
-#define NORW4
-#define NORW5
-#define PORT4
-#define PORT5
-#define SPAIN5
-#define SPAINLATAM4
-#define SWED5
-#define SWEDFIN4
-#define SWFR4
-#define SWFR5
-#define SWGE4
-#define SWGE5
-#define TAI4
-#define TAI5
-#define UK4
-#define UK5
-#define US101A
-#define US2
-#define US3
-#define US4
-#define US5
-#define US_UNIX5
-
-/*
- * XXX - Its not clear what to map these to for now.
- * keysyms.h doesn't define enough function key names.
- */
-
-#ifndef XK_L1
-#define XK_L1 XK_Cancel
-#define XK_L2 XK_Redo
-#define XK_R1 NoSymbol
-#define XK_R2 NoSymbol
-#define XK_R3 NoSymbol
-#define XK_L3 XK_Menu
-#define XK_L4 XK_Undo
-#define XK_R4 NoSymbol
-#define XK_R5 NoSymbol
-#define XK_R6 NoSymbol
-#define XK_L5 XK_Insert
-#define XK_L6 XK_Select
-#define XK_R7 NoSymbol
-#define XK_R8 XK_Up
-#define XK_R9 NoSymbol
-#define XK_L7 XK_Execute
-#define XK_L8 XK_Print
-#define XK_R10 XK_Left
-#define XK_R11 XK_Home
-#define XK_R12 XK_Right
-#define XK_L9 XK_Find
-#define XK_L10 XK_Help
-#define XK_R13 NoSymbol
-#define XK_R14 XK_Down
-#define XK_R15 NoSymbol
-#endif
-
-/* twm and Motif have hard-coded dependencies on Meta being Mod1 :-( */
-#if 0
-/* This set has optimal characteristics for use in the Toolkit... */
-#define Meta_Mask Mod1Mask
-#define Mode_switch_Mask Mod2Mask
-#define Num_Lock_Mask Mod3Mask
-#define Alt_Mask Mod4Mask
-#else
-/* but this set is compatible with what we shipped in R6. */
-#define Meta_Mask Mod1Mask
-#define Mode_switch_Mask Mod2Mask
-#define Alt_Mask Mod3Mask
-#define Num_Lock_Mask Mod4Mask
-#endif
-
-#ifdef US2
-
-static KeySym US2Keymap[] = {
- XK_L1, NoSymbol, /* 0x1 */
- NoSymbol, NoSymbol, /* 0x2 */
- XK_L2, NoSymbol, /* 0x3 */
- NoSymbol, NoSymbol, /* 0x4 */
- XK_F1, NoSymbol, /* 0x5 */
- XK_F2, NoSymbol, /* 0x6 */
- NoSymbol, NoSymbol, /* 0x7 */
- XK_F3, NoSymbol, /* 0x8 */
- NoSymbol, NoSymbol, /* 0x9 */
- XK_F4, NoSymbol, /* 0xa */
- NoSymbol, NoSymbol, /* 0xb */
- XK_F5, NoSymbol, /* 0xc */
- NoSymbol, NoSymbol, /* 0xd */
- XK_F6, NoSymbol, /* 0xe */
- NoSymbol, NoSymbol, /* 0xf */
- XK_F7, NoSymbol, /* 0x10 */
- XK_F8, NoSymbol, /* 0x11 */
- XK_F9, NoSymbol, /* 0x12 */
- XK_Break, NoSymbol, /* 0x13 */
- NoSymbol, NoSymbol, /* 0x14 */
- XK_R1, NoSymbol, /* 0x15 */
- XK_R2, NoSymbol, /* 0x16 */
- XK_R3, NoSymbol, /* 0x17 */
- NoSymbol, NoSymbol, /* 0x18 */
- XK_L3, NoSymbol, /* 0x19 */
- XK_L4, NoSymbol, /* 0x1a */
- NoSymbol, NoSymbol, /* 0x1b */
- NoSymbol, NoSymbol, /* 0x1c */
- XK_Escape, NoSymbol, /* 0x1d */
- XK_1, XK_exclam, /* 0x1e */
- XK_2, XK_at, /* 0x1f */
- XK_3, XK_numbersign, /* 0x20 */
- XK_4, XK_dollar, /* 0x21 */
- XK_5, XK_percent, /* 0x22 */
- XK_6, XK_asciicircum, /* 0x23 */
- XK_7, XK_ampersand, /* 0x24 */
- XK_8, XK_asterisk, /* 0x25 */
- XK_9, XK_parenleft, /* 0x26 */
- XK_0, XK_parenright, /* 0x27 */
- XK_minus, XK_underscore, /* 0x28 */
- XK_equal, XK_plus, /* 0x29 */
- XK_grave, XK_asciitilde, /* 0x2a */
- XK_BackSpace, NoSymbol, /* 0x2b */
- NoSymbol, NoSymbol, /* 0x2c */
- XK_R4, NoSymbol, /* 0x2d */
- XK_R5, NoSymbol, /* 0x2e */
- XK_R6, NoSymbol, /* 0x2f */
- NoSymbol, NoSymbol, /* 0x30 */
- XK_L5, NoSymbol, /* 0x31 */
- NoSymbol, NoSymbol, /* 0x32 */
- XK_L6, NoSymbol, /* 0x33 */
- NoSymbol, NoSymbol, /* 0x34 */
- XK_Tab, NoSymbol, /* 0x35 */
- XK_Q, NoSymbol, /* 0x36 */
- XK_W, NoSymbol, /* 0x37 */
- XK_E, NoSymbol, /* 0x38 */
- XK_R, NoSymbol, /* 0x39 */
- XK_T, NoSymbol, /* 0x3a */
- XK_Y, NoSymbol, /* 0x3b */
- XK_U, NoSymbol, /* 0x3c */
- XK_I, NoSymbol, /* 0x3d */
- XK_O, NoSymbol, /* 0x3e */
- XK_P, NoSymbol, /* 0x3f */
- XK_bracketleft, XK_braceleft, /* 0x40 */
- XK_bracketright, XK_braceright, /* 0x41 */
- XK_Delete, NoSymbol, /* 0x42 */
- NoSymbol, NoSymbol, /* 0x43 */
- XK_R7, NoSymbol, /* 0x44 */
- XK_Up, XK_R8, /* 0x45 */
- XK_R9, NoSymbol, /* 0x46 */
- NoSymbol, NoSymbol, /* 0x47 */
- XK_L7, NoSymbol, /* 0x48 */
- XK_L8, NoSymbol, /* 0x49 */
- NoSymbol, NoSymbol, /* 0x4a */
- NoSymbol, NoSymbol, /* 0x4b */
- XK_Control_L, NoSymbol, /* 0x4c */
- XK_A, NoSymbol, /* 0x4d */
- XK_S, NoSymbol, /* 0x4e */
- XK_D, NoSymbol, /* 0x4f */
- XK_F, NoSymbol, /* 0x50 */
- XK_G, NoSymbol, /* 0x51 */
- XK_H, NoSymbol, /* 0x52 */
- XK_J, NoSymbol, /* 0x53 */
- XK_K, NoSymbol, /* 0x54 */
- XK_L, NoSymbol, /* 0x55 */
- XK_semicolon, XK_colon, /* 0x56 */
- XK_apostrophe, XK_quotedbl, /* 0x57 */
- XK_backslash, XK_bar, /* 0x58 */
- XK_Return, NoSymbol, /* 0x59 */
- NoSymbol, NoSymbol, /* 0x5a */
- XK_Left, XK_R10, /* 0x5b */
- XK_R11, NoSymbol, /* 0x5c */
- XK_Right, XK_R12, /* 0x5d */
- NoSymbol, NoSymbol, /* 0x5e */
- XK_L9, NoSymbol, /* 0x5f */
- NoSymbol, NoSymbol, /* 0x60 */
- XK_L10, NoSymbol, /* 0x61 */
- NoSymbol, NoSymbol, /* 0x62 */
- XK_Shift_L, NoSymbol, /* 0x63 */
- XK_Z, NoSymbol, /* 0x64 */
- XK_X, NoSymbol, /* 0x65 */
- XK_C, NoSymbol, /* 0x66 */
- XK_V, NoSymbol, /* 0x67 */
- XK_B, NoSymbol, /* 0x68 */
- XK_N, NoSymbol, /* 0x69 */
- XK_M, NoSymbol, /* 0x6a */
- XK_comma, XK_less, /* 0x6b */
- XK_period, XK_greater, /* 0x6c */
- XK_slash, XK_question, /* 0x6d */
- XK_Shift_R, NoSymbol, /* 0x6e */
- XK_Linefeed, NoSymbol, /* 0x6f */
- XK_R13, NoSymbol, /* 0x70 */
- XK_Down, XK_R14, /* 0x71 */
- XK_R15, NoSymbol, /* 0x72 */
- NoSymbol, NoSymbol, /* 0x73 */
- NoSymbol, NoSymbol, /* 0x74 */
- NoSymbol, NoSymbol, /* 0x75 */
- NoSymbol, NoSymbol, /* 0x76 */
- NoSymbol, NoSymbol, /* 0x77 */
- XK_Meta_L, NoSymbol, /* 0x78 */
- XK_space, NoSymbol, /* 0x79 */
- XK_Meta_R, NoSymbol, /* 0x7a */
- NoSymbol, NoSymbol, /* 0x7b */
- NoSymbol, NoSymbol, /* 0x7c */
- NoSymbol, NoSymbol, /* 0x7d */
- NoSymbol, NoSymbol, /* 0x7e */
- NoSymbol, NoSymbol, /* 0x7f */
-};
-
-static SunModmapRec US2Modmap[] = {
- { 99, ShiftMask },
- { 110, ShiftMask },
- { 76, ControlMask },
- { 120, Meta_Mask },
- { 122, Meta_Mask },
- { 0, 0 }
-};
-
-#else
-
-#define US2Keymap NULL
-#define US2Modmap NULL
-
-#endif /* US2 */
-
-#ifdef US3
-
-static KeySym US3Keymap[] = {
- XK_L1, NoSymbol, /* 0x1 */
- NoSymbol, NoSymbol, /* 0x2 */
- XK_L2, NoSymbol, /* 0x3 */
- NoSymbol, NoSymbol, /* 0x4 */
- XK_F1, NoSymbol, /* 0x5 */
- XK_F2, NoSymbol, /* 0x6 */
- NoSymbol, NoSymbol, /* 0x7 */
- XK_F3, NoSymbol, /* 0x8 */
- NoSymbol, NoSymbol, /* 0x9 */
- XK_F4, NoSymbol, /* 0xa */
- NoSymbol, NoSymbol, /* 0xb */
- XK_F5, NoSymbol, /* 0xc */
- NoSymbol, NoSymbol, /* 0xd */
- XK_F6, NoSymbol, /* 0xe */
- NoSymbol, NoSymbol, /* 0xf */
- XK_F7, NoSymbol, /* 0x10 */
- XK_F8, NoSymbol, /* 0x11 */
- XK_F9, NoSymbol, /* 0x12 */
- XK_Alt_R, NoSymbol, /* 0x13 */
- NoSymbol, NoSymbol, /* 0x14 */
- XK_R1, NoSymbol, /* 0x15 */
- XK_R2, NoSymbol, /* 0x16 */
- XK_R3, NoSymbol, /* 0x17 */
- NoSymbol, NoSymbol, /* 0x18 */
- XK_L3, NoSymbol, /* 0x19 */
- XK_L4, NoSymbol, /* 0x1a */
- NoSymbol, NoSymbol, /* 0x1b */
- NoSymbol, NoSymbol, /* 0x1c */
- XK_Escape, NoSymbol, /* 0x1d */
- XK_1, XK_exclam, /* 0x1e */
- XK_2, XK_at, /* 0x1f */
- XK_3, XK_numbersign, /* 0x20 */
- XK_4, XK_dollar, /* 0x21 */
- XK_5, XK_percent, /* 0x22 */
- XK_6, XK_asciicircum, /* 0x23 */
- XK_7, XK_ampersand, /* 0x24 */
- XK_8, XK_asterisk, /* 0x25 */
- XK_9, XK_parenleft, /* 0x26 */
- XK_0, XK_parenright, /* 0x27 */
- XK_minus, XK_underscore, /* 0x28 */
- XK_equal, XK_plus, /* 0x29 */
- XK_grave, XK_asciitilde, /* 0x2a */
- XK_BackSpace, NoSymbol, /* 0x2b */
- NoSymbol, NoSymbol, /* 0x2c */
- XK_R4, NoSymbol, /* 0x2d */
- XK_R5, NoSymbol, /* 0x2e */
- XK_R6, NoSymbol, /* 0x2f */
- NoSymbol, NoSymbol, /* 0x30 */
- XK_L5, NoSymbol, /* 0x31 */
- NoSymbol, NoSymbol, /* 0x32 */
- XK_L6, NoSymbol, /* 0x33 */
- NoSymbol, NoSymbol, /* 0x34 */
- XK_Tab, NoSymbol, /* 0x35 */
- XK_Q, NoSymbol, /* 0x36 */
- XK_W, NoSymbol, /* 0x37 */
- XK_E, NoSymbol, /* 0x38 */
- XK_R, NoSymbol, /* 0x39 */
- XK_T, NoSymbol, /* 0x3a */
- XK_Y, NoSymbol, /* 0x3b */
- XK_U, NoSymbol, /* 0x3c */
- XK_I, NoSymbol, /* 0x3d */
- XK_O, NoSymbol, /* 0x3e */
- XK_P, NoSymbol, /* 0x3f */
- XK_bracketleft, XK_braceleft, /* 0x40 */
- XK_bracketright, XK_braceright, /* 0x41 */
- XK_Delete, NoSymbol, /* 0x42 */
- NoSymbol, NoSymbol, /* 0x43 */
- XK_R7, NoSymbol, /* 0x44 */
- XK_Up, XK_R8, /* 0x45 */
- XK_R9, NoSymbol, /* 0x46 */
- NoSymbol, NoSymbol, /* 0x47 */
- XK_L7, NoSymbol, /* 0x48 */
- XK_L8, NoSymbol, /* 0x49 */
- NoSymbol, NoSymbol, /* 0x4a */
- NoSymbol, NoSymbol, /* 0x4b */
- XK_Control_L, NoSymbol, /* 0x4c */
- XK_A, NoSymbol, /* 0x4d */
- XK_S, NoSymbol, /* 0x4e */
- XK_D, NoSymbol, /* 0x4f */
- XK_F, NoSymbol, /* 0x50 */
- XK_G, NoSymbol, /* 0x51 */
- XK_H, NoSymbol, /* 0x52 */
- XK_J, NoSymbol, /* 0x53 */
- XK_K, NoSymbol, /* 0x54 */
- XK_L, NoSymbol, /* 0x55 */
- XK_semicolon, XK_colon, /* 0x56 */
- XK_apostrophe, XK_quotedbl, /* 0x57 */
- XK_backslash, XK_bar, /* 0x58 */
- XK_Return, NoSymbol, /* 0x59 */
- NoSymbol, NoSymbol, /* 0x5a */
- XK_Left, XK_R10, /* 0x5b */
- XK_R11, NoSymbol, /* 0x5c */
- XK_Right, XK_R12, /* 0x5d */
- NoSymbol, NoSymbol, /* 0x5e */
- XK_L9, NoSymbol, /* 0x5f */
- NoSymbol, NoSymbol, /* 0x60 */
- XK_L10, NoSymbol, /* 0x61 */
- NoSymbol, NoSymbol, /* 0x62 */
- XK_Shift_L, NoSymbol, /* 0x63 */
- XK_Z, NoSymbol, /* 0x64 */
- XK_X, NoSymbol, /* 0x65 */
- XK_C, NoSymbol, /* 0x66 */
- XK_V, NoSymbol, /* 0x67 */
- XK_B, NoSymbol, /* 0x68 */
- XK_N, NoSymbol, /* 0x69 */
- XK_M, NoSymbol, /* 0x6a */
- XK_comma, XK_less, /* 0x6b */
- XK_period, XK_greater, /* 0x6c */
- XK_slash, XK_question, /* 0x6d */
- XK_Shift_R, NoSymbol, /* 0x6e */
- XK_Linefeed, NoSymbol, /* 0x6f */
- XK_R13, NoSymbol, /* 0x70 */
- XK_Down, XK_R14, /* 0x71 */
- XK_R15, NoSymbol, /* 0x72 */
- NoSymbol, NoSymbol, /* 0x73 */
- NoSymbol, NoSymbol, /* 0x74 */
- NoSymbol, NoSymbol, /* 0x75 */
- NoSymbol, NoSymbol, /* 0x76 */
- XK_Caps_Lock, NoSymbol, /* 0x77 */
- XK_Meta_L, NoSymbol, /* 0x78 */
- XK_space, NoSymbol, /* 0x79 */
- XK_Meta_R, NoSymbol, /* 0x7a */
- NoSymbol, NoSymbol, /* 0x7b */
- NoSymbol, NoSymbol, /* 0x7c */
- NoSymbol, NoSymbol, /* 0x7d */
- NoSymbol, NoSymbol, /* 0x7e */
- NoSymbol, NoSymbol, /* 0x7f */
-};
-
-static SunModmapRec US3Modmap[] = {
- { 99, ShiftMask },
- { 110, ShiftMask },
- { 76, ControlMask },
- { 119, LockMask },
- { 120, Meta_Mask },
- { 122, Meta_Mask },
- { 0, 0 }
-};
-
-#else
-
-#define US3Keymap NULL
-#define US3Modmap NULL
-
-#endif /* US3 */
-
-KeySymsRec sunKeySyms[] = {
- /* map minKeyCode maxKC width */
- { (KeySym *)NULL, 0, 0, 0 },
- { (KeySym *)NULL, 0, 0, 0 },
- { US2Keymap, 1, 0x7a, 2 },
- { US3Keymap, 1, 0x7a, 2 },
- { (KeySym *)NULL, 1, 0x7d, 4 }
-};
-
-SunModmapRec *sunModMaps[] = {
- NULL,
- NULL,
- US2Modmap,
- US3Modmap,
- NULL
-};
-
-static SunModmapRec Generic5Modmap[] = {
- { 99, ShiftMask },
- { 110, ShiftMask },
- { 119, LockMask },
- { 76, ControlMask },
- { 120, Meta_Mask },
- { 122, Meta_Mask },
- { 13, Mode_switch_Mask },
- { 98, Num_Lock_Mask },
- { 19, Alt_Mask },
- { 0, 0}
-};
-
-#if defined(DEN4) || defined(SWEDFIN4) || defined(SWFR4) || defined(SWGE4)
-
-static SunModmapRec DenSwedFinSw4Modmap[] = {
- { 99, ShiftMask },
- { 110, ShiftMask },
- { 76, LockMask },
- { 119, ControlMask },
- { 120, Meta_Mask },
- { 122, Meta_Mask },
- { 67, Mode_switch_Mask },
- { 98, Num_Lock_Mask },
- { 19, Alt_Mask },
- { 0, 0 }
-};
-
-#endif
-
-#if defined(FRBE4) || defined(NETH4)
-
-static SunModmapRec FrBeNeth4Modmap[] = {
- { 99, ShiftMask },
- { 110, ShiftMask },
- { 13, LockMask },
- { 76, ControlMask },
- { 120, Meta_Mask },
- { 122, Meta_Mask },
- { 119, Mode_switch_Mask },
- { 98, Num_Lock_Mask },
- { 19, Alt_Mask },
- { 0, 0 }
-};
-
-#endif
-
-#if defined(ITALY4) || defined(NORW4) || defined(PORT4) || defined(SPAINLATAM4)
-
-static SunModmapRec ItNorPortSp4Modmap[] = {
- { 99, ShiftMask },
- { 110, ShiftMask },
- { 76, LockMask },
- { 119, ControlMask },
- { 120, Meta_Mask },
- { 122, Meta_Mask },
- { 13, Mode_switch_Mask },
- { 98, Num_Lock_Mask },
- { 19, Alt_Mask },
- { 0, 0 }
-};
-
-#endif
-
-#ifdef CAN4
-
-static KeySym Canada4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 9*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 11*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- XK_Control_R, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_degree, NoSymbol, XK_notsign, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_numbersign, NoSymbol, NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_question, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_ampersand, XK_braceleft, NoSymbol, /* 36*/
- XK_8, XK_asterisk, XK_bracketleft, NoSymbol, /* 37*/
- XK_9, XK_parenleft, XK_bracketright,NoSymbol, /* 38*/
- XK_0, XK_parenright, XK_braceright, NoSymbol, /* 39*/
- XK_minus, XK_underscore, XK_bar, NoSymbol, /* 40*/
- XK_equal, XK_plus, NoSymbol, NoSymbol, /* 41*/
- XK_Agrave, NoSymbol, XK_grave, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, XK_KP_Equal, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, XK_KP_Divide, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, XK_KP_Multiply, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- SunXK_FA_Circum,SunXK_FA_Diaeresis,XK_asciicircum,NoSymbol, /* 64*/
- XK_Ccedilla, NoSymbol, XK_asciitilde, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, XK_Prior, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_semicolon, XK_colon, NoSymbol, NoSymbol, /* 86*/
- XK_Egrave, NoSymbol, NoSymbol, NoSymbol, /* 87*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, XK_guillemotleft,NoSymbol, /*100*/
- XK_X, NoSymbol, XK_guillemotright,NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_apostrophe, XK_less, NoSymbol, /*107*/
- XK_period, NoSymbol, XK_greater, NoSymbol, /*108*/
- XK_Eacute, NoSymbol, XK_slash, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_Ugrave, NoSymbol, XK_backslash, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-static SunModmapRec Canada4Modmap[] = {
- { 99, ShiftMask },
- { 110, ShiftMask },
- { 76, LockMask },
- { 13, ControlMask },
- { 120, Meta_Mask },
- { 122, Meta_Mask },
- { 119, Mode_switch_Mask },
- { 98, Num_Lock_Mask },
- { 19, Alt_Mask },
- { 0, 0}
-};
-
-#else
-
-#define Canada4Keymap NULL
-#define Canada4Modmap NULL
-
-#endif /* CANADA4 */
-
-#ifdef CANFR5
-
-static KeySym CanadaFr5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, XK_Break, XK_R1, XK_R1, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, XK_R3, XK_R3, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, XK_plusminus, NoSymbol, /* 30*/
- XK_2, XK_at, NoSymbol, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_sterling, NoSymbol, /* 32*/
- XK_4, XK_dollar, XK_cent, NoSymbol, /* 33*/
- XK_5, XK_percent, XK_currency, NoSymbol, /* 34*/
- XK_6, XK_question, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_ampersand, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_asterisk, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenleft, XK_bracketleft, NoSymbol, /* 38*/
- XK_0, XK_parenright, XK_bracketright,NoSymbol, /* 39*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /* 40*/
- XK_equal, XK_plus, XK_notsign, NoSymbol, /* 41*/
- XK_slash, XK_backslash, XK_bar, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, XK_R5, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, XK_R6, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift,NoSymbol,NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, XK_paragraph, NoSymbol, /* 63*/
- SunXK_FA_Circum,SunXK_FA_Diaeresis,SunXK_FA_Grave,NoSymbol, /* 64*/
- XK_Ccedilla, NoSymbol, XK_asciitilde, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, XK_R4, XK_R4, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_semicolon, XK_colon, XK_degree, NoSymbol, /* 86*/
- XK_Egrave, NoSymbol, NoSymbol, NoSymbol, /* 87*/
- XK_Agrave, NoSymbol, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, XK_guillemotleft,NoSymbol, /*100*/
- XK_X, NoSymbol, XK_guillemotright,NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, XK_mu, NoSymbol, /*106*/
- XK_comma, XK_quoteright, XK_less, NoSymbol, /*107*/
- XK_period, XK_quotedbl, XK_greater, NoSymbol, /*108*/
- XK_Eacute, NoSymbol, XK_quoteleft, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_Uacute, NoSymbol, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define CanadaFr5Modmap Generic5Modmap
-
-#else
-
-#define CanadaFr5Keymap NULL
-#define CanadaFr5Modmap NULL
-
-#endif /* CANFR5 */
-
-
-#ifdef DEN4
-
-static KeySym Denmark4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- XK_asciitilde, XK_asciicircum, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, XK_R1, XK_Pause, NoSymbol, /* 21*/
- XK_Print, XK_R2, XK_Print, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_sterling, NoSymbol, /* 32*/
- XK_4, XK_currency, XK_dollar, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_ampersand, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_slash, XK_braceleft, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_bracketleft, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_bracketright,NoSymbol, /* 38*/
- XK_0, XK_equal, XK_braceright, NoSymbol, /* 39*/
- XK_plus, XK_question, NoSymbol, NoSymbol, /* 40*/
- SunXK_FA_Acute, SunXK_FA_Grave, XK_bar, NoSymbol, /* 41*/
- XK_apostrophe, XK_asterisk, XK_grave, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_Aring, NoSymbol, NoSymbol, NoSymbol, /* 64*/
- SunXK_FA_Diaeresis,SunXK_FA_Circum,SunXK_FA_Tilde,NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_AE, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- XK_Ooblique, NoSymbol, NoSymbol, NoSymbol, /* 87*/
- XK_onehalf, XK_section, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, XK_backslash, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Denmark4Modmap DenSwedFinSw4Modmap
-
-#else
-
-#define Denmark4Keymap NULL
-#define Denmark4Modmap NULL
-
-#endif /* DENMARK4 */
-
-
-#ifdef DEN5
-
-static KeySym Denmark5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_sterling, NoSymbol, /* 32*/
- XK_4, XK_currency, XK_dollar, NoSymbol, /* 33*/
- XK_5, XK_percent, XK_asciitilde, NoSymbol, /* 34*/
- XK_6, XK_ampersand, XK_asciicircum, NoSymbol, /* 35*/
- XK_7, XK_slash, XK_braceleft, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_bracketleft, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_bracketright,NoSymbol, /* 38*/
- XK_0, XK_equal, XK_braceright, NoSymbol, /* 39*/
- XK_plus, XK_question, NoSymbol, NoSymbol, /* 40*/
- SunXK_FA_Acute, SunXK_FA_Grave, XK_bar, NoSymbol, /* 41*/
- XK_onehalf, XK_section, NoSymbol, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_Aring, NoSymbol, NoSymbol, NoSymbol, /* 64*/
- SunXK_FA_Diaeresis,SunXK_FA_Circum,SunXK_FA_Tilde,NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_AE, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- XK_Ooblique, NoSymbol, NoSymbol, NoSymbol, /* 87*/
- XK_apostrophe, XK_asterisk, XK_grave, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, XK_backslash, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Denmark5Modmap Generic5Modmap
-
-#else
-
-#define Denmark5Keymap NULL
-#define Denmark5Modmap NULL
-
-#endif /* DEN5 */
-
-
-#ifdef FR5
-
-static KeySym France5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_ampersand, XK_1, NoSymbol, NoSymbol, /* 30*/
- XK_eacute, XK_2, XK_asciitilde, NoSymbol, /* 31*/
- XK_quotedbl, XK_3, XK_numbersign, NoSymbol, /* 32*/
- XK_apostrophe, XK_4, XK_braceleft, NoSymbol, /* 33*/
- XK_parenleft, XK_5, XK_bracketleft, NoSymbol, /* 34*/
- XK_minus, XK_6, XK_bar, NoSymbol, /* 35*/
- XK_egrave, XK_7, XK_grave, NoSymbol, /* 36*/
- XK_underscore, XK_8, XK_backslash, NoSymbol, /* 37*/
- XK_ccedilla, XK_9, XK_asciicircum, NoSymbol, /* 38*/
- XK_agrave, XK_0, XK_at, NoSymbol, /* 39*/
- XK_parenright, XK_degree, XK_bracketright,NoSymbol, /* 40*/
- XK_equal, XK_plus, XK_braceright, NoSymbol, /* 41*/
- XK_twosuperior, NoSymbol, NoSymbol, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- SunXK_FA_Circum,SunXK_FA_Diaeresis,NoSymbol, NoSymbol, /* 64*/
- XK_dollar, XK_sterling, XK_currency, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- XK_ugrave, XK_percent, NoSymbol, NoSymbol, /* 87*/
- XK_asterisk, XK_mu, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_comma, XK_question, NoSymbol, NoSymbol, /*106*/
- XK_semicolon, XK_period, NoSymbol, NoSymbol, /*107*/
- XK_colon, XK_slash, NoSymbol, NoSymbol, /*108*/
- XK_exclam, XK_section, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, XK_Next, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define France5Modmap Generic5Modmap
-
-#else
-
-#define France5Keymap NULL
-#define France5Modmap NULL
-
-#endif /* FRANCE5 */
-
-
-#ifdef FRBE4
-
-static KeySym FranceBelg4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- XK_bracketright,XK_braceright, XK_guillemotright,NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_ampersand, XK_1, NoSymbol, NoSymbol, /* 30*/
- XK_eacute, XK_2, XK_twosuperior, NoSymbol, /* 31*/
- XK_quotedbl, XK_3, XK_threesuperior,NoSymbol, /* 32*/
- XK_apostrophe, XK_4, XK_acute, NoSymbol, /* 33*/
- XK_parenleft, XK_5, NoSymbol, NoSymbol, /* 34*/
- XK_section, XK_6, XK_asciicircum, NoSymbol, /* 35*/
- XK_egrave, XK_7, NoSymbol, NoSymbol, /* 36*/
- XK_exclam, XK_8, XK_sterling, NoSymbol, /* 37*/
- XK_ccedilla, XK_9, XK_backslash, NoSymbol, /* 38*/
- XK_agrave, XK_0, NoSymbol, NoSymbol, /* 39*/
- XK_parenright, XK_degree, XK_asciitilde, NoSymbol, /* 40*/
- XK_minus, XK_underscore, XK_numbersign, NoSymbol, /* 41*/
- XK_asterisk, XK_bar, XK_currency, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, XK_KP_Equal, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, XK_KP_Divide, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, XK_KP_Multiply, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- SunXK_FA_Circum,SunXK_FA_Diaeresis,NoSymbol, NoSymbol, /* 64*/
- XK_grave, XK_dollar, XK_at, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, XK_KP_Subtract, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_M, NoSymbol, XK_mu, NoSymbol, /* 86*/
- XK_ugrave, XK_percent, NoSymbol, NoSymbol, /* 87*/
- XK_bracketleft, XK_braceleft, XK_guillemotleft,NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, XK_KP_Enter, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_comma, XK_question, NoSymbol, NoSymbol, /*106*/
- XK_semicolon, XK_period, NoSymbol, NoSymbol, /*107*/
- XK_colon, XK_slash, NoSymbol, NoSymbol, /*108*/
- XK_equal, XK_plus, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, XK_KP_Add, NoSymbol, NoSymbol, /*125*/
-};
-
-#define FranceBelg4Modmap FrBeNeth4Modmap
-
-#else
-
-#define FranceBelg4Keymap NULL
-#define FranceBelg4Modmap NULL
-
-#endif /* FRANCEBELG4 */
-
-
-#ifdef GER4
-
-static KeySym Germany4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- XK_Alt_R, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- XK_bracketright,XK_braceright,XK_guillemotright,NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Scroll_Lock, NoSymbol, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_twosuperior, NoSymbol, /* 31*/
- XK_3, XK_section, XK_threesuperior,NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_ampersand, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_slash, XK_degree, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_grave, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_apostrophe, NoSymbol, /* 38*/
- XK_0, XK_equal, XK_bar, NoSymbol, /* 39*/
- XK_ssharp, XK_question, XK_backslash, NoSymbol, /* 40*/
- SunXK_FA_Acute, SunXK_FA_Grave, NoSymbol, NoSymbol, /* 41*/
- XK_numbersign, XK_asciicircum, XK_at, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Delete, XK_KP_Decimal, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_Udiaeresis, NoSymbol, NoSymbol, NoSymbol, /* 64*/
- XK_plus, XK_asterisk, XK_asciitilde, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, XK_KP_Subtract, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_Odiaeresis, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- XK_Adiaeresis, NoSymbol, NoSymbol, NoSymbol, /* 87*/
- XK_bracketleft, XK_braceleft, XK_guillemotleft,NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, XK_mu, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-static SunModmapRec Germany4Modmap[] = {
- { 99, ShiftMask },
- { 110, ShiftMask },
- { 76, LockMask },
- { 119, ControlMask },
- { 120, Meta_Mask },
- { 122, Meta_Mask },
- { 19, Mode_switch_Mask },
- { 98, Num_Lock_Mask },
- { 13, Alt_Mask },
- { 0, 0 }
-};
-
-#else
-
-#define Germany4Keymap NULL
-#define Germany4Modmap NULL
-
-#endif /* GERMANY4 */
-
-
-#ifdef GER5
-
-static KeySym Germany5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_twosuperior, NoSymbol, /* 31*/
- XK_3, XK_section, XK_threesuperior,NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_ampersand, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_slash, XK_braceleft, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_bracketleft, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_bracketright,NoSymbol, /* 38*/
- XK_0, XK_equal, XK_braceright, NoSymbol, /* 39*/
- XK_ssharp, XK_question, XK_backslash, NoSymbol, /* 40*/
- SunXK_FA_Acute, SunXK_FA_Grave, NoSymbol, NoSymbol, /* 41*/
- XK_asciicircum, XK_degree, NoSymbol, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Separator,NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_q, XK_Q, XK_at, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_Udiaeresis, NoSymbol, NoSymbol, NoSymbol, /* 64*/
- XK_plus, XK_asterisk, XK_asciitilde, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_Odiaeresis, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- XK_Adiaeresis, NoSymbol, NoSymbol, NoSymbol, /* 87*/
- XK_numbersign, XK_apostrophe, XK_grave, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_m, XK_M, XK_mu, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, XK_bar, NoSymbol, /*124*/
- XK_KP_Add, XK_KP_Add, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Germany5Modmap Generic5Modmap
-
-#else
-
-#define Germany5Keymap NULL
-#define Germany5Modmap NULL
-
-#endif /* GERMANY5 */
-
-
-#ifdef ITALY4
-
-static KeySym Italy4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- XK_bracketright,XK_braceright, XK_guillemotright,NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_twosuperior, NoSymbol, /* 31*/
- XK_3, XK_sterling, XK_threesuperior,NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_ampersand, XK_notsign, NoSymbol, /* 35*/
- XK_7, XK_slash, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_parenleft, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_backslash, NoSymbol, /* 38*/
- XK_0, XK_equal, XK_bar, NoSymbol, /* 39*/
- XK_apostrophe, XK_question, XK_grave, NoSymbol, /* 40*/
- XK_igrave, XK_asciicircum, NoSymbol, NoSymbol, /* 41*/
- XK_ugrave, XK_section, NoSymbol, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_egrave, XK_eacute, NoSymbol, NoSymbol, /* 64*/
- XK_plus, XK_asterisk, XK_asciitilde, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_ograve, XK_ccedilla, XK_at, NoSymbol, /* 86*/
- XK_agrave, XK_degree, XK_numbersign, NoSymbol, /* 87*/
- XK_bracketleft, XK_braceleft, XK_guillemotleft,NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R4, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R5, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R6, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Italy4Modmap ItNorPortSp4Modmap
-
-#else
-
-#define Italy4Keymap NULL
-#define Italy4Modmap NULL
-
-#endif /* ITALY4 */
-
-
-#ifdef ITALY5
-
-static KeySym Italy5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, XK_Break, NoSymbol, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, NoSymbol, NoSymbol, /* 31*/
- XK_3, XK_sterling, NoSymbol, NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_ampersand, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_slash, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_braceleft, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_braceright, NoSymbol, /* 38*/
- XK_0, XK_equal, NoSymbol, NoSymbol, /* 39*/
- XK_apostrophe, XK_question, XK_grave, NoSymbol, /* 40*/
- XK_igrave, XK_asciicircum, NoSymbol, NoSymbol, /* 41*/
- XK_backslash, XK_bar, NoSymbol, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, XK_KP_Divide, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, XK_KP_Multiply, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_egrave, XK_eacute, XK_bracketleft, NoSymbol, /* 64*/
- XK_plus, XK_asterisk, XK_bracketright,NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_ograve, XK_ccedilla, XK_at, NoSymbol, /* 86*/
- XK_agrave, XK_degree, XK_numbersign, NoSymbol, /* 87*/
- XK_ugrave, XK_section, XK_asciitilde, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, XK_KP_Enter, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, XK_KP_Add, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Italy5Modmap Generic5Modmap
-
-#else
-
-#define Italy5Keymap NULL
-#define Italy5Modmap NULL
-
-#endif /* ITALY5 */
-
-
-#ifdef JAPAN4
-
-static KeySym Japan4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, XK_kana_NU, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_kana_FU, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_kana_A, XK_kana_a, /* 32*/
- XK_4, XK_dollar, XK_kana_U, XK_kana_u, /* 33*/
- XK_5, XK_percent, XK_kana_E, XK_kana_e, /* 34*/
- XK_6, XK_ampersand, XK_kana_O, XK_kana_o, /* 35*/
- XK_7, XK_apostrophe, XK_kana_YA, XK_kana_ya, /* 36*/
- XK_8, XK_parenleft, XK_kana_YU, XK_kana_yu, /* 37*/
- XK_9, XK_parenright, XK_kana_YO, XK_kana_yo, /* 38*/
- XK_0, XK_0, XK_kana_WA, XK_kana_WO, /* 39*/
- XK_minus, XK_equal, XK_kana_HO, NoSymbol, /* 40*/
- XK_asciicircum, XK_asciitilde, XK_kana_HE, NoSymbol, /* 41*/
- XK_bracketright,XK_braceright, XK_kana_MU, XK_kana_closingbracket, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_q, XK_Q, XK_kana_TA, NoSymbol, /* 54*/
- XK_w, XK_W, XK_kana_TE, NoSymbol, /* 55*/
- XK_e, XK_E, XK_kana_I, XK_kana_i, /* 56*/
- XK_r, XK_R, XK_kana_SU, NoSymbol, /* 57*/
- XK_t, XK_T, XK_kana_KA, NoSymbol, /* 58*/
- XK_y, XK_Y, XK_kana_N, NoSymbol, /* 59*/
- XK_u, XK_U, XK_kana_NA, NoSymbol, /* 60*/
- XK_i, XK_I, XK_kana_NI, NoSymbol, /* 61*/
- XK_o, XK_O, XK_kana_RA, NoSymbol, /* 62*/
- XK_p, XK_P, XK_kana_SE, NoSymbol, /* 63*/
- XK_at, XK_grave, XK_voicedsound, NoSymbol, /* 64*/
- XK_bracketleft, XK_braceleft, XK_semivoicedsound,XK_kana_openingbracket, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, XK_KP_Subtract, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_a, XK_A, XK_kana_CHI, NoSymbol, /* 77*/
- XK_s, XK_S, XK_kana_TO, NoSymbol, /* 78*/
- XK_d, XK_D, XK_kana_SHI, NoSymbol, /* 79*/
- XK_f, XK_F, XK_kana_HA, NoSymbol, /* 80*/
- XK_g, XK_G, XK_kana_KI, NoSymbol, /* 81*/
- XK_h, XK_H, XK_kana_KU, NoSymbol, /* 82*/
- XK_j, XK_J, XK_kana_MA, NoSymbol, /* 83*/
- XK_k, XK_K, XK_kana_NO, NoSymbol, /* 84*/
- XK_l, XK_L, XK_kana_RI, NoSymbol, /* 85*/
- XK_semicolon, XK_plus, XK_kana_RE, NoSymbol, /* 86*/
- XK_colon, XK_asterisk, XK_kana_KE, NoSymbol, /* 87*/
- XK_backslash, XK_bar, XK_prolongedsound,NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_z, XK_Z, XK_kana_TSU, XK_kana_tsu, /*100*/
- XK_x, XK_X, XK_kana_SA, NoSymbol, /*101*/
- XK_c, XK_C, XK_kana_SO, NoSymbol, /*102*/
- XK_v, XK_V, XK_kana_HI, NoSymbol, /*103*/
- XK_b, XK_B, XK_kana_KO, NoSymbol, /*104*/
- XK_n, XK_N, XK_kana_MI, NoSymbol, /*105*/
- XK_m, XK_M, XK_kana_MO, NoSymbol, /*106*/
- XK_comma, XK_less, XK_kana_NE, XK_kana_comma, /*107*/
- XK_period, XK_greater, XK_kana_RU, XK_kana_fullstop, /*108*/
- XK_slash, XK_question, XK_kana_ME, XK_kana_conjunctive, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_backslash, XK_underscore, XK_kana_RO, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- XK_Execute, NoSymbol, NoSymbol, NoSymbol, /*115*/
- XK_Kanji, NoSymbol, NoSymbol, NoSymbol, /*116*/
- XK_Henkan_Mode, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, XK_KP_Add, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Japan4Modmap Generic5Modmap
-
-#else
-
-#define Japan4Keymap NULL
-#define Japan4Modmap NULL
-
-#endif /* JAPAN4 */
-
-
-#ifdef JAPAN5
-
-static KeySym Japan5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, XK_kana_NU, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_kana_FU, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_kana_A, XK_kana_a, /* 32*/
- XK_4, XK_dollar, XK_kana_U, XK_kana_u, /* 33*/
- XK_5, XK_percent, XK_kana_E, XK_kana_e, /* 34*/
- XK_6, XK_ampersand, XK_kana_O, XK_kana_o, /* 35*/
- XK_7, XK_apostrophe, XK_kana_YA, XK_kana_ya, /* 36*/
- XK_8, XK_parenleft, XK_kana_YU, XK_kana_yu, /* 37*/
- XK_9, XK_parenright, XK_kana_YO, XK_kana_yo, /* 38*/
- XK_0, XK_0, XK_kana_WA, XK_kana_WO, /* 39*/
- XK_minus, XK_equal, XK_kana_HO, NoSymbol, /* 40*/
- XK_asciicircum, XK_asciitilde, XK_kana_HE, NoSymbol, /* 41*/
- XK_backslash, XK_bar, XK_prolongedsound,NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_q, XK_Q, XK_kana_TA, NoSymbol, /* 54*/
- XK_w, XK_W, XK_kana_TE, NoSymbol, /* 55*/
- XK_e, XK_E, XK_kana_I, XK_kana_i, /* 56*/
- XK_r, XK_R, XK_kana_SU, NoSymbol, /* 57*/
- XK_t, XK_T, XK_kana_KA, NoSymbol, /* 58*/
- XK_y, XK_Y, XK_kana_N, NoSymbol, /* 59*/
- XK_u, XK_U, XK_kana_NA, NoSymbol, /* 60*/
- XK_i, XK_I, XK_kana_NI, NoSymbol, /* 61*/
- XK_o, XK_O, XK_kana_RA, NoSymbol, /* 62*/
- XK_p, XK_P, XK_kana_SE, NoSymbol, /* 63*/
- XK_at, XK_grave, XK_voicedsound, NoSymbol, /* 64*/
- XK_bracketleft, XK_braceleft, XK_semivoicedsound,XK_kana_openingbracket, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_a, XK_A, XK_kana_CHI, NoSymbol, /* 77*/
- XK_s, XK_S, XK_kana_TO, NoSymbol, /* 78*/
- XK_d, XK_D, XK_kana_SHI, NoSymbol, /* 79*/
- XK_f, XK_F, XK_kana_HA, NoSymbol, /* 80*/
- XK_g, XK_G, XK_kana_KI, NoSymbol, /* 81*/
- XK_h, XK_H, XK_kana_KU, NoSymbol, /* 82*/
- XK_j, XK_J, XK_kana_MA, NoSymbol, /* 83*/
- XK_k, XK_K, XK_kana_NO, NoSymbol, /* 84*/
- XK_l, XK_L, XK_kana_RI, NoSymbol, /* 85*/
- XK_semicolon, XK_plus, XK_kana_RE, NoSymbol, /* 86*/
- XK_colon, XK_asterisk, XK_kana_KE, NoSymbol, /* 87*/
- XK_bracketright,XK_braceright, XK_kana_MU, XK_kana_closingbracket, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_z, XK_Z, XK_kana_TSU, XK_kana_tsu, /*100*/
- XK_x, XK_X, XK_kana_SA, NoSymbol, /*101*/
- XK_c, XK_C, XK_kana_SO, NoSymbol, /*102*/
- XK_v, XK_V, XK_kana_HI, NoSymbol, /*103*/
- XK_b, XK_B, XK_kana_KO, NoSymbol, /*104*/
- XK_n, XK_N, XK_kana_MI, NoSymbol, /*105*/
- XK_m, XK_M, XK_kana_MO, NoSymbol, /*106*/
- XK_comma, XK_less, XK_kana_NE, XK_kana_comma, /*107*/
- XK_period, XK_greater, XK_kana_RU, XK_kana_fullstop, /*108*/
- XK_slash, XK_question, XK_kana_ME, XK_kana_conjunctive, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_backslash, XK_underscore, XK_kana_RO, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- XK_Execute, NoSymbol, NoSymbol, NoSymbol, /*115*/
- XK_Kanji, NoSymbol, NoSymbol, NoSymbol, /*116*/
- XK_Henkan_Mode, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, XK_KP_Add, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Japan5Modmap Generic5Modmap
-
-#else
-
-#define Japan5Keymap NULL
-#define Japan5Modmap NULL
-
-#endif /* JAPAN5 */
-
-
-#ifdef KOREA4
-
-static KeySym Korea4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_at, NoSymbol, NoSymbol, /* 31*/
- XK_3, XK_numbersign, NoSymbol, NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_asciicircum, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_ampersand, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_asterisk, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenleft, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_parenright, NoSymbol, NoSymbol, /* 39*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /* 40*/
- XK_equal, XK_plus, NoSymbol, NoSymbol, /* 41*/
- XK_grave, XK_asciitilde, XK_acute, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol, /* 64*/
- XK_bracketright,XK_braceright, NoSymbol, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_semicolon, XK_colon, NoSymbol, NoSymbol, /* 86*/
- XK_apostrophe, XK_quotedbl, NoSymbol, NoSymbol, /* 87*/
- XK_backslash, XK_bar, XK_brokenbar, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_less, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_greater, NoSymbol, NoSymbol, /*108*/
- XK_slash, XK_question, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-static SunModmapRec Korea4Modmap[] = {
- { 99, ShiftMask },
- { 110, ShiftMask },
- { 119, LockMask },
- { 76, ControlMask },
- { 120, Meta_Mask },
- { 122, Meta_Mask },
- { 111, Mode_switch_Mask },
- { 98, Num_Lock_Mask },
- { 19, Alt_Mask },
- { 0, 0 }
-};
-
-#else
-
-#define Korea4Keymap NULL
-#define Korea4Modmap NULL
-
-#endif /* KOREA4 */
-
-
-#ifdef KOREA5
-
-static KeySym Korea5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_at, NoSymbol, NoSymbol, /* 31*/
- XK_3, XK_numbersign, NoSymbol, NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_asciicircum, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_ampersand, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_asterisk, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenleft, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_parenright, NoSymbol, NoSymbol, /* 39*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /* 40*/
- XK_equal, XK_plus, NoSymbol, NoSymbol, /* 41*/
- XK_grave, XK_asciitilde, XK_acute, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol, /* 64*/
- XK_bracketright,XK_braceright, NoSymbol, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_semicolon, XK_colon, NoSymbol, NoSymbol, /* 86*/
- XK_apostrophe, XK_quotedbl, NoSymbol, NoSymbol, /* 87*/
- XK_backslash, XK_bar, XK_brokenbar, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_less, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_greater, NoSymbol, NoSymbol, /*108*/
- XK_slash, XK_question, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Korea5Modmap Generic5Modmap
-
-#else
-
-#define Korea5Keymap NULL
-#define Korea5Modmap NULL
-
-#endif /* KOREA5 */
-
-
-#ifdef NETH4
-
-static KeySym Netherland4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- XK_backslash, XK_bar, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, XK_onesuperior, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_twosuperior, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_threesuperior,NoSymbol, /* 32*/
- XK_4, XK_dollar, XK_onequarter, NoSymbol, /* 33*/
- XK_5, XK_percent, XK_onehalf, NoSymbol, /* 34*/
- XK_6, XK_ampersand, XK_threequarters,NoSymbol, /* 35*/
- XK_7, XK_underscore, XK_sterling, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_braceleft, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_braceright, NoSymbol, /* 38*/
- XK_0, XK_apostrophe, XK_grave, NoSymbol, /* 39*/
- XK_slash, XK_question, NoSymbol, NoSymbol, /* 40*/
- XK_degree, SunXK_FA_Tilde, SunXK_FA_Cedilla,NoSymbol, /* 41*/
- XK_less, XK_greater, NoSymbol, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- SunXK_FA_Diaeresis,XK_asciicircum,SunXK_FA_Circum,NoSymbol, /* 64*/
- XK_asterisk, XK_brokenbar, XK_asciitilde, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, XK_ssharp, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_plus, XK_plusminus, NoSymbol, NoSymbol, /* 86*/
- SunXK_FA_Acute, SunXK_FA_Grave, NoSymbol, NoSymbol, /* 87*/
- XK_at, XK_section, XK_notsign, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, XK_guillemotleft,NoSymbol, /*100*/
- XK_X, NoSymbol, XK_guillemotright,NoSymbol, /*101*/
- XK_C, NoSymbol, XK_cent, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, XK_mu, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_equal, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_bracketright,XK_bracketleft, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Netherland4Modmap FrBeNeth4Modmap
-
-#else
-
-#define Netherland4Keymap NULL
-#define Netherland4Modmap NULL
-
-#endif /* NETHERLAND4 */
-
-
-#ifdef NETH5
-
-static KeySym Netherland5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, XK_onesuperior, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_twosuperior, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_threesuperior,NoSymbol, /* 32*/
- XK_4, XK_dollar, XK_onequarter, NoSymbol, /* 33*/
- XK_5, XK_percent, XK_onehalf, NoSymbol, /* 34*/
- XK_6, XK_ampersand, XK_threequarters,NoSymbol, /* 35*/
- XK_7, XK_underscore, XK_sterling, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_braceleft, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_braceright, NoSymbol, /* 38*/
- XK_0, XK_apostrophe, XK_grave, NoSymbol, /* 39*/
- XK_slash, XK_question, XK_backslash, NoSymbol, /* 40*/
- XK_degree, SunXK_FA_Tilde, SunXK_FA_Cedilla,NoSymbol, /* 41*/
- XK_at, XK_section, XK_notsign, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Separator,NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- SunXK_FA_Diaeresis,SunXK_FA_Circum,NoSymbol, NoSymbol, /* 64*/
- XK_asterisk, XK_bar, XK_asciitilde, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, XK_ssharp, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_plus, XK_plusminus, NoSymbol, NoSymbol, /* 86*/
- SunXK_FA_Acute, SunXK_FA_Grave, NoSymbol, NoSymbol, /* 87*/
- XK_less, XK_greater, XK_asciicircum, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_z, XK_Z, XK_guillemotleft,NoSymbol, /*100*/
- XK_x, XK_X, XK_guillemotright,NoSymbol, /*101*/
- XK_c, XK_C, XK_cent, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_m, XK_M, XK_mu, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, XK_periodcentered,NoSymbol, /*108*/
- XK_minus, XK_equal, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_bracketright,XK_bracketleft, XK_brokenbar, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Netherland5Modmap Generic5Modmap
-
-#else
-
-#define Netherland5Keymap NULL
-#define Netherland5Modmap NULL
-
-#endif /* NETHERLAND5 */
-
-
-#ifdef NORW4
-
-static KeySym Norway4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- XK_asciitilde, XK_asciicircum, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_sterling, NoSymbol, /* 32*/
- XK_4, XK_currency, XK_dollar, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_ampersand, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_slash, XK_braceleft, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_bracketleft, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_bracketright,NoSymbol, /* 38*/
- XK_0, XK_equal, XK_braceright, NoSymbol, /* 39*/
- XK_plus, XK_question, NoSymbol, NoSymbol, /* 40*/
- XK_backslash, SunXK_FA_Grave, SunXK_FA_Acute, NoSymbol, /* 41*/
- XK_apostrophe, XK_asterisk, XK_grave, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_Aring, NoSymbol, NoSymbol, NoSymbol, /* 64*/
- SunXK_FA_Diaeresis,SunXK_FA_Circum,SunXK_FA_Tilde,NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_Ooblique, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- XK_AE, NoSymbol, NoSymbol, NoSymbol, /* 87*/
- XK_bar, XK_section, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Norway4Modmap ItNorPortSp4Modmap
-
-#else
-
-#define Norway4Keymap NULL
-#define Norway4Modmap NULL
-
-#endif /* NORWAY4 */
-
-
-#ifdef NORW5
-
-static KeySym Norway5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_sterling, NoSymbol, /* 32*/
- XK_4, XK_currency, XK_dollar, NoSymbol, /* 33*/
- XK_5, XK_percent, XK_asciitilde, NoSymbol, /* 34*/
- XK_6, XK_ampersand, XK_asciicircum, NoSymbol, /* 35*/
- XK_7, XK_slash, XK_braceleft, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_bracketleft, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_bracketright,NoSymbol, /* 38*/
- XK_0, XK_equal, XK_braceright, NoSymbol, /* 39*/
- XK_plus, XK_question, NoSymbol, NoSymbol, /* 40*/
- XK_backslash, SunXK_FA_Grave, SunXK_FA_Acute, NoSymbol, /* 41*/
- XK_bar, XK_section, NoSymbol, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Separator,NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_Aring, NoSymbol, NoSymbol, NoSymbol, /* 64*/
- SunXK_FA_Diaeresis,SunXK_FA_Circum,SunXK_FA_Tilde,NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_Ooblique, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- XK_AE, NoSymbol, NoSymbol, NoSymbol, /* 87*/
- XK_apostrophe, XK_asterisk, XK_grave, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Norway5Modmap Generic5Modmap
-
-#else
-
-#define Norway5Keymap NULL
-#define Norway5Modmap NULL
-
-#endif /* NORWAY5 */
-
-
-#ifdef PORT4
-
-static KeySym Portugal4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- XK_bracketright,XK_braceright, XK_guillemotright,NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, XK_Break, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_sterling, NoSymbol, /* 32*/
- XK_4, XK_dollar, XK_section, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_ampersand, XK_notsign, NoSymbol, /* 35*/
- XK_7, XK_slash, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_parenleft, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_backslash, NoSymbol, /* 38*/
- XK_0, XK_equal, XK_bar, NoSymbol, /* 39*/
- XK_apostrophe, XK_question, XK_grave, NoSymbol, /* 40*/
- XK_exclamdown, XK_questiondown,NoSymbol, NoSymbol, /* 41*/
- SunXK_FA_Tilde, SunXK_FA_Circum,XK_asciicircum, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- SunXK_FA_Diaeresis,XK_asterisk, XK_plus, NoSymbol, /* 64*/
- SunXK_FA_Acute, SunXK_FA_Grave, XK_asciitilde, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_Ccedilla, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- XK_masculine, XK_ordfeminine, NoSymbol, NoSymbol, /* 87*/
- XK_bracketleft, XK_braceleft, XK_guillemotleft,NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Portugal4Modmap ItNorPortSp4Modmap
-
-#else
-
-#define Portugal4Keymap NULL
-#define Portugal4Modmap NULL
-
-#endif /* PORTUGAL4 */
-
-
-#ifdef PORT5
-
-static KeySym Portugal5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_sterling, NoSymbol, /* 32*/
- XK_4, XK_dollar, XK_section, NoSymbol, /* 33*/
- XK_5, XK_percent, XK_asciitilde, NoSymbol, /* 34*/
- XK_6, XK_ampersand, XK_asciicircum, NoSymbol, /* 35*/
- XK_7, XK_slash, XK_braceleft, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_bracketleft, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_bracketright,NoSymbol, /* 38*/
- XK_0, XK_equal, XK_braceright, NoSymbol, /* 39*/
- XK_apostrophe, XK_question, XK_grave, NoSymbol, /* 40*/
- XK_guillemotleft,XK_guillemotright,NoSymbol, NoSymbol, /* 41*/
- XK_backslash, XK_bar, NoSymbol, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_plus, XK_asterisk, SunXK_FA_Diaeresis,NoSymbol, /* 64*/
- SunXK_FA_Acute, SunXK_FA_Grave, NoSymbol, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_Ccedilla, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- XK_masculine, XK_ordfeminine, NoSymbol, NoSymbol, /* 87*/
- SunXK_FA_Tilde, SunXK_FA_Circum,NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Portugal5Modmap Generic5Modmap
-
-#else
-
-#define Portugal5Keymap NULL
-#define Portugal5Modmap NULL
-
-#endif /* PORTUGAL5 */
-
-
-#ifdef SPAIN5
-
-static KeySym Spain5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, XK_bar, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_periodcentered,XK_numbersign,NoSymbol, /* 32*/
- XK_4, XK_dollar, XK_asciicircum, NoSymbol, /* 33*/
- XK_5, XK_percent, XK_asciitilde, NoSymbol, /* 34*/
- XK_6, XK_ampersand, XK_notsign, NoSymbol, /* 35*/
- XK_7, XK_slash, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_parenleft, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenright, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_equal, NoSymbol, NoSymbol, /* 39*/
- XK_apostrophe, XK_question, XK_grave, NoSymbol, /* 40*/
- XK_exclamdown, XK_questiondown,NoSymbol, NoSymbol, /* 41*/
- XK_masculine, XK_ordfeminine, XK_backslash, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- SunXK_FA_Grave, SunXK_FA_Circum,XK_bracketleft, NoSymbol, /* 64*/
- XK_plus, XK_asterisk, XK_bracketright,NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_Ntilde, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- SunXK_FA_Acute, SunXK_FA_Diaeresis,XK_braceleft,NoSymbol, /* 87*/
- XK_ccedilla, XK_Ccedilla, XK_braceright, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Spain5Modmap Generic5Modmap
-
-#else
-
-#define Spain5Keymap NULL
-#define Spain5Modmap NULL
-
-#endif /* SPAIN5 */
-
-
-#ifdef SPAINLATAM4
-
-static KeySym SpainLatAm4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- XK_bracketright,XK_braceright, XK_guillemotright,NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Scroll_Lock, NoSymbol, XK_R3, XK_Break, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_periodcentered,XK_numbersign,NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, XK_degree, NoSymbol, /* 34*/
- XK_6, XK_ampersand, XK_notsign, NoSymbol, /* 35*/
- XK_7, XK_slash, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_parenleft, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_backslash, NoSymbol, /* 38*/
- XK_0, XK_equal, XK_bar, NoSymbol, /* 39*/
- XK_apostrophe, XK_question, XK_grave, NoSymbol, /* 40*/
- XK_exclamdown, XK_questiondown,NoSymbol, NoSymbol, /* 41*/
- XK_Ccedilla, NoSymbol, NoSymbol, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, XK_masculine, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- SunXK_FA_Grave, SunXK_FA_Circum,XK_asciicircum, NoSymbol, /* 64*/
- XK_plus, XK_asterisk, XK_asciitilde, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, XK_ordfeminine, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_Ntilde, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- SunXK_FA_Acute, SunXK_FA_Diaeresis,NoSymbol, NoSymbol, /* 87*/
- XK_bracketleft, XK_braceleft, XK_guillemotleft,NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define SpainLatAm4Modmap ItNorPortSp4Modmap
-
-#else
-
-#define SpainLatAm4Keymap NULL
-#define SpainLatAm4Modmap NULL
-
-#endif /* SPAINLATAM4 */
-
-
-#ifdef SWED5
-
-static KeySym Sweden5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_sterling, NoSymbol, /* 32*/
- XK_4, XK_currency, XK_dollar, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_ampersand, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_slash, XK_braceleft, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_bracketleft, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_bracketright,NoSymbol, /* 38*/
- XK_0, XK_equal, XK_braceright, NoSymbol, /* 39*/
- XK_plus, XK_question, XK_backslash, NoSymbol, /* 40*/
- SunXK_FA_Acute, SunXK_FA_Grave, NoSymbol, NoSymbol, /* 41*/
- XK_section, XK_onehalf, NoSymbol, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Separator,NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_Aring, NoSymbol, NoSymbol, NoSymbol, /* 64*/
- SunXK_FA_Diaeresis,XK_asciicircum,XK_asciitilde,NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_Odiaeresis, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- XK_Adiaeresis, NoSymbol, NoSymbol, NoSymbol, /* 87*/
- XK_apostrophe, XK_asterisk, XK_grave, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, XK_bar, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Sweden5Modmap Generic5Modmap
-
-#else
-
-#define Sweden5Keymap NULL
-#define Sweden5Modmap NULL
-
-#endif /* SWEDEN5 */
-
-
-#ifdef SWEDFIN4
-
-static KeySym SwedenFin4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- XK_asciitilde, XK_asciicircum, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_numbersign, XK_sterling, NoSymbol, /* 32*/
- XK_4, XK_currency, XK_dollar, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_ampersand, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_slash, XK_braceleft, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_bracketleft, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_bracketright,NoSymbol, /* 38*/
- XK_0, XK_equal, XK_braceright, NoSymbol, /* 39*/
- XK_plus, XK_question, XK_backslash, NoSymbol, /* 40*/
- SunXK_FA_Acute, SunXK_FA_Grave, NoSymbol, NoSymbol, /* 41*/
- XK_apostrophe, XK_asterisk, XK_grave, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_Aring, NoSymbol, NoSymbol, NoSymbol, /* 64*/
- SunXK_FA_Diaeresis,SunXK_FA_Circum,SunXK_FA_Tilde,NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R8, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_Odiaeresis, NoSymbol, NoSymbol, NoSymbol, /* 86*/
- XK_Adiaeresis, NoSymbol, NoSymbol, NoSymbol, /* 87*/
- XK_section, XK_onehalf, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, XK_bar, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define SwedenFin4Modmap DenSwedFinSw4Modmap
-
-#else
-
-#define SwedenFin4Keymap NULL
-#define SwedenFin4Modmap NULL
-
-#endif /* SWEDENFIN4 */
-
-
-#ifdef SWFR4
-
-static KeySym SwissFr4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- XK_greater, XK_braceright, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_plus, XK_exclam, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_asterisk, XK_numbersign, NoSymbol, /* 32*/
- XK_4, XK_ccedilla, XK_cent, NoSymbol, /* 33*/
- XK_5, XK_percent, XK_asciitilde, NoSymbol, /* 34*/
- XK_6, XK_ampersand, XK_section, NoSymbol, /* 35*/
- XK_7, XK_slash, XK_bar, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_degree, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_backslash, NoSymbol, /* 38*/
- XK_0, XK_equal, XK_asciicircum, NoSymbol, /* 39*/
- XK_apostrophe, XK_question, XK_grave, NoSymbol, /* 40*/
- SunXK_FA_Circum,SunXK_FA_Grave, NoSymbol, NoSymbol, /* 41*/
- XK_dollar, SunXK_FA_Tilde, XK_sterling, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_egrave, XK_udiaeresis, NoSymbol, NoSymbol, /* 64*/
- SunXK_FA_Diaeresis,SunXK_FA_Acute,NoSymbol, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_eacute, XK_odiaeresis, NoSymbol, NoSymbol, /* 86*/
- XK_agrave, XK_adiaeresis, NoSymbol, NoSymbol, /* 87*/
- XK_less, XK_braceleft, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, XK_mu, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_bracketright,XK_bracketleft, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define SwissFr4Modmap DenSwedFinSw4Modmap
-
-#else
-
-#define SwissFr4Keymap NULL
-#define SwissFr4Modmap NULL
-
-#endif /* SWFR4 */
-
-
-#ifdef SWFR5
-
-static KeySym SwissFr5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_plus, XK_bar, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_asterisk, XK_numbersign, NoSymbol, /* 32*/
- XK_4, XK_ccedilla, XK_asciicircum, NoSymbol, /* 33*/
- XK_5, XK_percent, XK_asciitilde, NoSymbol, /* 34*/
- XK_6, XK_ampersand, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_slash, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_parenleft, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenright, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_equal, XK_grave, NoSymbol, /* 39*/
- XK_apostrophe, XK_question, SunXK_FA_Acute, NoSymbol, /* 40*/
- SunXK_FA_Circum,SunXK_FA_Grave, SunXK_FA_Tilde, NoSymbol, /* 41*/
- XK_section, XK_degree, NoSymbol, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_egrave, XK_udiaeresis, XK_bracketleft, NoSymbol, /* 64*/
- SunXK_FA_Diaeresis,XK_exclam, XK_bracketright,NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_eacute, XK_odiaeresis, NoSymbol, NoSymbol, /* 86*/
- XK_agrave, XK_adiaeresis, XK_braceleft, NoSymbol, /* 87*/
- XK_dollar, XK_sterling, XK_braceright, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, XK_backslash, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define SwissFr5Modmap Generic5Modmap
-
-#else
-
-#define SwissFr5Keymap NULL
-#define SwissFr5Modmap NULL
-
-#endif /* SWFR5 */
-
-
-#ifdef SWGE4
-
-static KeySym SwissGe4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- XK_greater, XK_braceright, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_plus, XK_exclam, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_asterisk, XK_numbersign, NoSymbol, /* 32*/
- XK_4, XK_ccedilla, XK_cent, NoSymbol, /* 33*/
- XK_5, XK_percent, XK_asciitilde, NoSymbol, /* 34*/
- XK_6, XK_ampersand, XK_section, NoSymbol, /* 35*/
- XK_7, XK_slash, XK_bar, NoSymbol, /* 36*/
- XK_8, XK_parenleft, XK_degree, NoSymbol, /* 37*/
- XK_9, XK_parenright, XK_backslash, NoSymbol, /* 38*/
- XK_0, XK_equal, XK_asciicircum, NoSymbol, /* 39*/
- XK_apostrophe, XK_question, XK_grave, NoSymbol, /* 40*/
- SunXK_FA_Circum,SunXK_FA_Grave, NoSymbol, NoSymbol, /* 41*/
- XK_dollar, SunXK_FA_Tilde, XK_sterling, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_udiaeresis, XK_egrave, NoSymbol, NoSymbol, /* 64*/
- SunXK_FA_Diaeresis,SunXK_FA_Acute,NoSymbol, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_odiaeresis, XK_eacute, NoSymbol, NoSymbol, /* 86*/
- XK_adiaeresis, XK_agrave, NoSymbol, NoSymbol, /* 87*/
- XK_less, XK_braceleft, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, XK_mu, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_bracketright,XK_bracketleft, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define SwissGe4Modmap DenSwedFinSw4Modmap
-
-#else
-
-#define SwissGe4Keymap NULL
-#define SwissGe4Modmap NULL
-
-#endif /* SWISSGE4 */
-
-
-#ifdef SWGE5
-
-static KeySym SwissGe5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_plus, XK_bar, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, XK_at, NoSymbol, /* 31*/
- XK_3, XK_asterisk, XK_numbersign, NoSymbol, /* 32*/
- XK_4, XK_ccedilla, XK_asciicircum, NoSymbol, /* 33*/
- XK_5, XK_percent, XK_asciitilde, NoSymbol, /* 34*/
- XK_6, XK_ampersand, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_slash, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_parenleft, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenright, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_equal, XK_grave, NoSymbol, /* 39*/
- XK_apostrophe, XK_question, SunXK_FA_Acute, NoSymbol, /* 40*/
- SunXK_FA_Circum,SunXK_FA_Grave, SunXK_FA_Tilde, NoSymbol, /* 41*/
- XK_section, XK_degree, NoSymbol, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_udiaeresis, XK_egrave, XK_bracketleft, NoSymbol, /* 64*/
- SunXK_FA_Diaeresis,XK_exclam, XK_bracketright,NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_odiaeresis, XK_eacute, NoSymbol, NoSymbol, /* 86*/
- XK_adiaeresis, XK_agrave, XK_braceleft, NoSymbol, /* 87*/
- XK_dollar, XK_sterling, XK_braceright, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_semicolon, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_colon, NoSymbol, NoSymbol, /*108*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_less, XK_greater, XK_backslash, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define SwissGe5Modmap Generic5Modmap
-
-#else
-
-#define SwissGe5Keymap NULL
-#define SwissGe5Modmap NULL
-
-#endif /* SWITZER_GE5 */
-
-
-#ifdef TAI4
-
-static KeySym Taiwan4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_at, NoSymbol, NoSymbol, /* 31*/
- XK_3, XK_numbersign, NoSymbol, NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_asciicircum, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_ampersand, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_asterisk, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenleft, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_parenright, NoSymbol, NoSymbol, /* 39*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /* 40*/
- XK_equal, XK_plus, NoSymbol, NoSymbol, /* 41*/
- XK_grave, XK_asciitilde, XK_acute, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol, /* 64*/
- XK_bracketright,XK_braceright, NoSymbol, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_semicolon, XK_colon, NoSymbol, NoSymbol, /* 86*/
- XK_apostrophe, XK_quotedbl, NoSymbol, NoSymbol, /* 87*/
- XK_backslash, XK_bar, XK_brokenbar, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_less, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_greater, NoSymbol, NoSymbol, /*108*/
- XK_slash, XK_question, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Taiwan4Modmap Generic5Modmap
-
-#else
-
-#define Taiwan4Keymap NULL
-#define Taiwan4Modmap NULL
-
-#endif /* TAIWAN4 */
-
-
-#ifdef TAI5
-
-static KeySym Taiwan5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_at, NoSymbol, NoSymbol, /* 31*/
- XK_3, XK_numbersign, NoSymbol, NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_asciicircum, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_ampersand, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_asterisk, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenleft, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_parenright, NoSymbol, NoSymbol, /* 39*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /* 40*/
- XK_equal, XK_plus, NoSymbol, NoSymbol, /* 41*/
- XK_grave, XK_asciitilde, XK_acute, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol, /* 64*/
- XK_bracketright,XK_braceright, NoSymbol, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_semicolon, XK_colon, NoSymbol, NoSymbol, /* 86*/
- XK_apostrophe, XK_quotedbl, NoSymbol, NoSymbol, /* 87*/
- XK_backslash, XK_bar, XK_brokenbar, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_less, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_greater, NoSymbol, NoSymbol, /*108*/
- XK_slash, XK_question, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define Taiwan5Modmap Generic5Modmap
-
-#else
-
-#define Taiwan5Keymap NULL
-#define Taiwan5Modmap NULL
-
-#endif /* TAIWAN5 */
-
-
-#ifdef UK4
-
-static KeySym UK4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, XK_brokenbar, NoSymbol, /* 30*/
- XK_2, XK_at, NoSymbol, NoSymbol, /* 31*/
- XK_3, XK_sterling, XK_numbersign, NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_asciicircum, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_ampersand, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_asterisk, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenleft, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_parenright, NoSymbol, NoSymbol, /* 39*/
- XK_minus, XK_underscore, XK_notsign, NoSymbol, /* 40*/
- XK_equal, XK_plus, NoSymbol, NoSymbol, /* 41*/
- XK_grave, XK_asciitilde, XK_acute, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol, /* 64*/
- XK_bracketright,XK_braceright, NoSymbol, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_semicolon, XK_colon, NoSymbol, NoSymbol, /* 86*/
- XK_apostrophe, XK_quotedbl, XK_acute, NoSymbol, /* 87*/
- XK_backslash, XK_bar, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_less, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_greater, NoSymbol, NoSymbol, /*108*/
- XK_slash, XK_question, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define UK4Modmap Generic5Modmap
-
-#else
-
-#define UK4Keymap NULL
-#define UK4Modmap NULL
-
-#endif /* UK4 */
-
-
-#ifdef UK5
-
-static KeySym UK5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_quotedbl, NoSymbol, NoSymbol, /* 31*/
- XK_3, XK_sterling, NoSymbol, NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_asciicircum, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_ampersand, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_asterisk, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenleft, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_parenright, NoSymbol, NoSymbol, /* 39*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /* 40*/
- XK_equal, XK_plus, NoSymbol, NoSymbol, /* 41*/
- XK_grave, XK_notsign, XK_brokenbar, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol, /* 64*/
- XK_bracketright,XK_braceright, NoSymbol, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_semicolon, XK_colon, NoSymbol, NoSymbol, /* 86*/
- XK_apostrophe, XK_at, XK_acute, NoSymbol, /* 87*/
- XK_numbersign, XK_asciitilde, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_less, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_greater, NoSymbol, NoSymbol, /*108*/
- XK_slash, XK_question, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- XK_backslash, XK_bar, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define UK5Modmap Generic5Modmap
-
-#else
-
-#define UK5Keymap NULL
-#define UK5Modmap NULL
-
-#endif /* UK5 */
-
-
-#ifdef US101A
-
-static KeySym US101AKeymap[] = {
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 25*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_at, NoSymbol, NoSymbol, /* 31*/
- XK_3, XK_numbersign, NoSymbol, NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_asciicircum, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_ampersand, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_asterisk, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenleft, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_parenright, NoSymbol, NoSymbol, /* 39*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /* 40*/
- XK_equal, XK_plus, NoSymbol, NoSymbol, /* 41*/
- XK_grave, XK_asciitilde, XK_acute, NoSymbol, /* 42*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol, /* 64*/
- XK_bracketright,XK_braceright, NoSymbol, NoSymbol, /* 65*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 72*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_semicolon, XK_colon, NoSymbol, NoSymbol, /* 86*/
- XK_apostrophe, XK_quotedbl, XK_acute, NoSymbol, /* 87*/
- XK_backslash, XK_bar, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_less, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_greater, NoSymbol, NoSymbol, /*108*/
- XK_slash, XK_question, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-static SunModmapRec US101AModmap[] = {
- { 99, ShiftMask },
- { 110, ShiftMask },
- { 119, LockMask },
- { 76, ControlMask },
- { 122, Meta_Mask },
- { 98, Num_Lock_Mask },
- { 120, Alt_Mask },
- { 0, 0 }
-};
-
-#else
-
-#define US101AKeymap NULL
-#define US101AModmap NULL
-
-#endif /* US101A */
-
-
-#ifdef US4
-
-static KeySym US4Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_R1, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_R2, NoSymbol, /* 22*/
- XK_Break, XK_Scroll_Lock, XK_R3, NoSymbol, /* 23*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_at, NoSymbol, NoSymbol, /* 31*/
- XK_3, XK_numbersign, NoSymbol, NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_asciicircum, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_ampersand, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_asterisk, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenleft, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_parenright, NoSymbol, NoSymbol, /* 39*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /* 40*/
- XK_equal, XK_plus, NoSymbol, NoSymbol, /* 41*/
- XK_grave, XK_asciitilde, XK_acute, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- XK_KP_Equal, NoSymbol, XK_R4, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, XK_R5, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, XK_R6, NoSymbol, /* 47*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol, /* 64*/
- XK_bracketright,XK_braceright, NoSymbol, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, XK_R7, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, XK_R8, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, XK_R9, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_semicolon, XK_colon, NoSymbol, NoSymbol, /* 86*/
- XK_apostrophe, XK_quotedbl, XK_acute, NoSymbol, /* 87*/
- XK_backslash, XK_bar, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, XK_R10, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, XK_R11, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, XK_R12, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_less, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_greater, NoSymbol, NoSymbol, /*108*/
- XK_slash, XK_question, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- XK_Linefeed, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, XK_R13, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, XK_R14, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, XK_R15, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, XK_Help, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*123*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define US4Modmap Generic5Modmap
-
-#else
-
-#define US4Keymap NULL
-#define US4Modmap NULL
-
-#endif /* US4 */
-
-
-#ifdef US5
-
-static KeySym US5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_at, NoSymbol, NoSymbol, /* 31*/
- XK_3, XK_numbersign, NoSymbol, NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_asciicircum, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_ampersand, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_asterisk, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenleft, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_parenright, NoSymbol, NoSymbol, /* 39*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /* 40*/
- XK_equal, XK_plus, NoSymbol, NoSymbol, /* 41*/
- XK_grave, XK_asciitilde, XK_acute, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol, /* 64*/
- XK_bracketright,XK_braceright, NoSymbol, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_semicolon, XK_colon, NoSymbol, NoSymbol, /* 86*/
- XK_apostrophe, XK_quotedbl, XK_acute, NoSymbol, /* 87*/
- XK_backslash, XK_bar, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_less, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_greater, NoSymbol, NoSymbol, /*108*/
- XK_slash, XK_question, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define US5Modmap Generic5Modmap
-
-#else
-
-#define US5Keymap NULL
-#define US5Modmap NULL
-
-#endif /* US5 */
-
-#ifdef US_UNIX5
-
-static KeySym US_UNIX5Keymap[] = {
- SunXK_Stop, NoSymbol, XK_L1, NoSymbol, /* 1*/
- SunXK_AudioLowerVolume,SunXK_VideoLowerBrightness,NoSymbol, NoSymbol, /* 2*/
- SunXK_Again, NoSymbol, XK_L2, NoSymbol, /* 3*/
- SunXK_AudioRaiseVolume,SunXK_VideoRaiseBrightness,NoSymbol, NoSymbol, /* 4*/
- XK_F1, NoSymbol, NoSymbol, NoSymbol, /* 5*/
- XK_F2, NoSymbol, NoSymbol, NoSymbol, /* 6*/
- XK_F10, NoSymbol, NoSymbol, NoSymbol, /* 7*/
- XK_F3, NoSymbol, NoSymbol, NoSymbol, /* 8*/
- XK_F11, NoSymbol, SunXK_F36, NoSymbol, /* 9*/
- XK_F4, NoSymbol, NoSymbol, NoSymbol, /* 10*/
- XK_F12, NoSymbol, SunXK_F37, NoSymbol, /* 11*/
- XK_F5, NoSymbol, NoSymbol, NoSymbol, /* 12*/
- SunXK_AltGraph, NoSymbol, NoSymbol, NoSymbol, /* 13*/
- XK_F6, NoSymbol, NoSymbol, NoSymbol, /* 14*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 15*/
- XK_F7, NoSymbol, NoSymbol, NoSymbol, /* 16*/
- XK_F8, NoSymbol, NoSymbol, NoSymbol, /* 17*/
- XK_F9, NoSymbol, NoSymbol, NoSymbol, /* 18*/
- XK_Alt_L, NoSymbol, NoSymbol, NoSymbol, /* 19*/
- XK_Up, NoSymbol, NoSymbol, NoSymbol, /* 20*/
- XK_Pause, NoSymbol, XK_Break, NoSymbol, /* 21*/
- XK_Print, NoSymbol, XK_Sys_Req, SunXK_Sys_Req, /* 22*/
- XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol, /* 23*/
- XK_Left, NoSymbol, NoSymbol, NoSymbol, /* 24*/
- SunXK_Props, NoSymbol, XK_L3, NoSymbol, /* 25*/
- SunXK_Undo, NoSymbol, XK_L4, NoSymbol, /* 26*/
- XK_Down, NoSymbol, NoSymbol, NoSymbol, /* 27*/
- XK_Right, NoSymbol, NoSymbol, NoSymbol, /* 28*/
- XK_Escape, NoSymbol, NoSymbol, NoSymbol, /* 29*/
- XK_1, XK_exclam, NoSymbol, NoSymbol, /* 30*/
- XK_2, XK_at, NoSymbol, NoSymbol, /* 31*/
- XK_3, XK_numbersign, NoSymbol, NoSymbol, /* 32*/
- XK_4, XK_dollar, NoSymbol, NoSymbol, /* 33*/
- XK_5, XK_percent, NoSymbol, NoSymbol, /* 34*/
- XK_6, XK_asciicircum, NoSymbol, NoSymbol, /* 35*/
- XK_7, XK_ampersand, NoSymbol, NoSymbol, /* 36*/
- XK_8, XK_asterisk, NoSymbol, NoSymbol, /* 37*/
- XK_9, XK_parenleft, NoSymbol, NoSymbol, /* 38*/
- XK_0, XK_parenright, NoSymbol, NoSymbol, /* 39*/
- XK_minus, XK_underscore, NoSymbol, NoSymbol, /* 40*/
- XK_equal, XK_plus, NoSymbol, NoSymbol, /* 41*/
- XK_grave, XK_asciitilde, XK_acute, NoSymbol, /* 42*/
- XK_BackSpace, NoSymbol, NoSymbol, NoSymbol, /* 43*/
- XK_Insert, NoSymbol, NoSymbol, NoSymbol, /* 44*/
- SunXK_AudioMute,SunXK_VideoDegauss,NoSymbol, NoSymbol, /* 45*/
- XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol, /* 46*/
- XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol, /* 47*/
- SunXK_PowerSwitch,SunXK_PowerSwitchShift, NoSymbol, NoSymbol, /* 48*/
- SunXK_Front, NoSymbol, XK_L5, NoSymbol, /* 49*/
- XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol, /* 50*/
- SunXK_Copy, NoSymbol, XK_L6, NoSymbol, /* 51*/
- XK_Home, NoSymbol, NoSymbol, NoSymbol, /* 52*/
- XK_Tab, NoSymbol, NoSymbol, NoSymbol, /* 53*/
- XK_Q, NoSymbol, NoSymbol, NoSymbol, /* 54*/
- XK_W, NoSymbol, NoSymbol, NoSymbol, /* 55*/
- XK_E, NoSymbol, NoSymbol, NoSymbol, /* 56*/
- XK_R, NoSymbol, NoSymbol, NoSymbol, /* 57*/
- XK_T, NoSymbol, NoSymbol, NoSymbol, /* 58*/
- XK_Y, NoSymbol, NoSymbol, NoSymbol, /* 59*/
- XK_U, NoSymbol, NoSymbol, NoSymbol, /* 60*/
- XK_I, NoSymbol, NoSymbol, NoSymbol, /* 61*/
- XK_O, NoSymbol, NoSymbol, NoSymbol, /* 62*/
- XK_P, NoSymbol, NoSymbol, NoSymbol, /* 63*/
- XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol, /* 64*/
- XK_bracketright,XK_braceright, NoSymbol, NoSymbol, /* 65*/
- XK_Delete, NoSymbol, NoSymbol, NoSymbol, /* 66*/
- SunXK_Compose, NoSymbol, NoSymbol, NoSymbol, /* 67*/
- XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol, /* 68*/
- XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol, /* 69*/
- XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol, /* 70*/
- XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol, /* 71*/
- SunXK_Open, NoSymbol, XK_L7, NoSymbol, /* 72*/
- SunXK_Paste, NoSymbol, XK_L8, NoSymbol, /* 73*/
- XK_End, NoSymbol, NoSymbol, NoSymbol, /* 74*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 75*/
- XK_Control_L, NoSymbol, NoSymbol, NoSymbol, /* 76*/
- XK_A, NoSymbol, NoSymbol, NoSymbol, /* 77*/
- XK_S, NoSymbol, NoSymbol, NoSymbol, /* 78*/
- XK_D, NoSymbol, NoSymbol, NoSymbol, /* 79*/
- XK_F, NoSymbol, NoSymbol, NoSymbol, /* 80*/
- XK_G, NoSymbol, NoSymbol, NoSymbol, /* 81*/
- XK_H, NoSymbol, NoSymbol, NoSymbol, /* 82*/
- XK_J, NoSymbol, NoSymbol, NoSymbol, /* 83*/
- XK_K, NoSymbol, NoSymbol, NoSymbol, /* 84*/
- XK_L, NoSymbol, NoSymbol, NoSymbol, /* 85*/
- XK_semicolon, XK_colon, NoSymbol, NoSymbol, /* 86*/
- XK_apostrophe, XK_quotedbl, XK_acute, NoSymbol, /* 87*/
- XK_backslash, XK_bar, NoSymbol, NoSymbol, /* 88*/
- XK_Return, NoSymbol, NoSymbol, NoSymbol, /* 89*/
- XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol, /* 90*/
- XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol, /* 91*/
- NoSymbol, XK_KP_5, NoSymbol, NoSymbol, /* 92*/
- XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol, /* 93*/
- XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol, /* 94*/
- SunXK_Find, NoSymbol, XK_L9, NoSymbol, /* 95*/
- XK_Prior, NoSymbol, NoSymbol, NoSymbol, /* 96*/
- SunXK_Cut, NoSymbol, XK_L10, NoSymbol, /* 97*/
- XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol, /* 98*/
- XK_Shift_L, NoSymbol, NoSymbol, NoSymbol, /* 99*/
- XK_Z, NoSymbol, NoSymbol, NoSymbol, /*100*/
- XK_X, NoSymbol, NoSymbol, NoSymbol, /*101*/
- XK_C, NoSymbol, NoSymbol, NoSymbol, /*102*/
- XK_V, NoSymbol, NoSymbol, NoSymbol, /*103*/
- XK_B, NoSymbol, NoSymbol, NoSymbol, /*104*/
- XK_N, NoSymbol, NoSymbol, NoSymbol, /*105*/
- XK_M, NoSymbol, NoSymbol, NoSymbol, /*106*/
- XK_comma, XK_less, NoSymbol, NoSymbol, /*107*/
- XK_period, XK_greater, NoSymbol, NoSymbol, /*108*/
- XK_slash, XK_question, NoSymbol, NoSymbol, /*109*/
- XK_Shift_R, NoSymbol, NoSymbol, NoSymbol, /*110*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*111*/
- XK_KP_End, XK_KP_1, NoSymbol, NoSymbol, /*112*/
- XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol, /*113*/
- XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol, /*114*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*115*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*116*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*117*/
- XK_Help, NoSymbol, NoSymbol, NoSymbol, /*118*/
- XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol, /*119*/
- XK_Meta_L, NoSymbol, NoSymbol, NoSymbol, /*120*/
- XK_space, NoSymbol, NoSymbol, NoSymbol, /*121*/
- XK_Meta_R, NoSymbol, NoSymbol, NoSymbol, /*122*/
- XK_Next, NoSymbol, NoSymbol, NoSymbol, /*123*/
- NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*124*/
- XK_KP_Add, NoSymbol, NoSymbol, NoSymbol, /*125*/
-};
-
-#define US_UNIX5Modmap Generic5Modmap
-
-#else
-
-#define US_UNIX5Keymap NULL
-#define US_UNIX5Modmap NULL
-
-#endif /* US_UNIX5 */
-
-KeySym *sunType4KeyMaps[] = {
- US4Keymap, /* 0 */
- US4Keymap, /* 1 */
- FranceBelg4Keymap, /* 2 */
- Canada4Keymap, /* 3 */
- Denmark4Keymap, /* 4 */
- Germany4Keymap, /* 5 */
- Italy4Keymap, /* 6 */
- Netherland4Keymap, /* 7 */
- Norway4Keymap, /* 8 */
- Portugal4Keymap, /* 9 */
- SpainLatAm4Keymap, /* 10 */
- SwedenFin4Keymap, /* 11 */
- SwissFr4Keymap, /* 12 */
- SwissGe4Keymap, /* 13 */
- UK4Keymap, /* 14 */
- NULL, /* 15 */
- Korea4Keymap, /* 16 */
- Taiwan4Keymap, /* 17 */
- NULL, /* 18 */
- US101AKeymap, /* 19 */
- NULL, /* 20 */
- NULL, /* 21 */
- NULL, /* 22 */
- NULL, /* 23 */
- NULL, /* 24 */
- NULL, /* 25 */
- NULL, /* 26 */
- NULL, /* 27 */
- NULL, /* 28 */
- NULL, /* 29 */
- NULL, /* 30 */
- NULL, /* 31 */
- Japan4Keymap, /* 32 */
- US5Keymap, /* 33 */
- US_UNIX5Keymap, /* 34 */
- France5Keymap, /* 35 */
- Denmark5Keymap, /* 36 */
- Germany5Keymap, /* 37 */
- Italy5Keymap, /* 38 */
- Netherland5Keymap, /* 39 */
- Norway5Keymap, /* 40 */
- Portugal5Keymap, /* 41 */
- Spain5Keymap, /* 42 */
- Sweden5Keymap, /* 43 */
- SwissFr5Keymap, /* 44 */
- SwissGe5Keymap, /* 45 */
- UK5Keymap, /* 46 */
- Korea5Keymap, /* 47 */
- Taiwan5Keymap, /* 48 */
- Japan5Keymap, /* 49 */
- CanadaFr5Keymap, /* 50 */
- NULL, /* Hungary5 */ /* 51 */
- NULL, /* Poland5 */ /* 52 */
- NULL, /* Czech5 */ /* 53 */
- NULL, /* Russia5 */ /* 54 */
- NULL, /* 55 */
- NULL, /* 56 */
- NULL, /* 57 */
- NULL, /* 58 */
- NULL, /* 59 */
- NULL, /* 60 */
- NULL, /* 61 */
- NULL, /* 62 */
- NULL, /* CanadaFr5+ */ /* 63 */
- NULL, /* 64 */
- NULL, /* 65 */
- NULL, /* 66 */
- NULL, /* 67 */
- NULL, /* 68 */
- NULL, /* 69 */
- NULL, /* 70 */
- NULL, /* 71 */
- NULL, /* 72 */
- NULL, /* 73 */
- NULL, /* 74 */
- NULL, /* 75 */
- NULL, /* 76 */
- NULL, /* 77 */
- NULL, /* 78 */
- NULL, /* 79 */
-/*
- * We're punting on SPARC Voyager support for now. The OpenLook server
- * apparently adds special semantics to Num_Lock, which requires indexing
- * into column 5 of the keymap, which isn't handled by the core protocol
- * at all, (it is in XKB.) We could do some tricky remapping, sort of
- * like what the PC ddxen need to do to deal with funky PC keyboards; but
- * for now we'll just pretend that Voyager (Hobo) keyboards are the same
- * as the equivalent Sun5 keyboard.
- */
- US5Keymap, /* 80 */
- US_UNIX5Keymap, /* 81 */
- France5Keymap, /* 82 */
- Denmark5Keymap, /* 83 */
- Germany5Keymap, /* 84 */
- Italy5Keymap, /* 85 */
- Netherland5Keymap, /* 86 */
- Norway5Keymap, /* 87 */
- Portugal5Keymap, /* 88 */
- Spain5Keymap, /* 89 */
- Sweden5Keymap, /* 90 */
- SwissFr5Keymap, /* 91 */
- SwissGe5Keymap, /* 92 */
- UK5Keymap, /* 93 */
- Korea5Keymap, /* 94 */
- Taiwan5Keymap, /* 95 */
- Japan5Keymap, /* 96 */
- CanadaFr5Keymap, /* 97 */
-};
-
-int sunMaxLayout = sizeof(sunType4KeyMaps) / sizeof(sunType4KeyMaps[0]);
-
-SunModmapRec *sunType4ModMaps[] = {
- US4Modmap, /* 0 */
- US4Modmap, /* 1 */
- FranceBelg4Modmap, /* 2 */
- Canada4Modmap, /* 3 */
- Denmark4Modmap, /* 4 */
- Germany4Modmap, /* 5 */
- Italy4Modmap, /* 6 */
- Netherland4Modmap, /* 7 */
- Norway4Modmap, /* 8 */
- Portugal4Modmap, /* 9 */
- SpainLatAm4Modmap, /* 10 */
- SwedenFin4Modmap, /* 11 */
- SwissFr4Modmap, /* 12 */
- SwissGe4Modmap, /* 13 */
- UK4Modmap, /* 14 */
- NULL, /* 15 */
- Korea4Modmap, /* 16 */
- Taiwan4Modmap, /* 17 */
- NULL, /* 18 */
- US101AModmap, /* 19 */
- NULL, /* 20 */
- NULL, /* 21 */
- NULL, /* 22 */
- NULL, /* 23 */
- NULL, /* 24 */
- NULL, /* 25 */
- NULL, /* 26 */
- NULL, /* 27 */
- NULL, /* 28 */
- NULL, /* 29 */
- NULL, /* 30 */
- NULL, /* 31 */
- Japan4Modmap, /* 32 */
- US5Modmap, /* 33 */
- US_UNIX5Modmap, /* 34 */
- France5Modmap, /* 35 */
- Denmark5Modmap, /* 36 */
- Germany5Modmap, /* 37 */
- Italy5Modmap, /* 38 */
- Netherland5Modmap, /* 39 */
- Norway5Modmap, /* 40 */
- Portugal5Modmap, /* 41 */
- Spain5Modmap, /* 42 */
- Sweden5Modmap, /* 43 */
- SwissFr5Modmap, /* 44 */
- SwissGe5Modmap, /* 45 */
- UK5Modmap, /* 46 */
- Korea5Modmap, /* 47 */
- Taiwan5Modmap, /* 48 */
- Japan5Modmap, /* 49 */
- CanadaFr5Modmap, /* 50 */
- NULL, /* Hungary5 */ /* 51 */
- NULL, /* Poland5 */ /* 52 */
- NULL, /* Czech5 */ /* 53 */
- NULL, /* Russia5 */ /* 54 */
- NULL, /* 55 */
- NULL, /* 56 */
- NULL, /* 57 */
- NULL, /* 58 */
- NULL, /* 59 */
- NULL, /* 60 */
- NULL, /* 61 */
- NULL, /* 62 */
- NULL, /* CanadaFr5+ */ /* 63 */
- NULL, /* 64 */
- NULL, /* 65 */
- NULL, /* 66 */
- NULL, /* 67 */
- NULL, /* 68 */
- NULL, /* 69 */
- NULL, /* 70 */
- NULL, /* 71 */
- NULL, /* 72 */
- NULL, /* 73 */
- NULL, /* 74 */
- NULL, /* 75 */
- NULL, /* 76 */
- NULL, /* 77 */
- NULL, /* 78 */
- NULL, /* 79 */
- US5Modmap, /* 80 */
- US_UNIX5Modmap, /* 81 */
- France5Modmap, /* 82 */
- Denmark5Modmap, /* 83 */
- Germany5Modmap, /* 84 */
- Italy5Modmap, /* 85 */
- Netherland5Modmap, /* 86 */
- Norway5Modmap, /* 87 */
- Portugal5Modmap, /* 88 */
- Spain5Modmap, /* 89 */
- Sweden5Modmap, /* 90 */
- SwissFr5Modmap, /* 91 */
- SwissGe5Modmap, /* 92 */
- UK5Modmap, /* 93 */
- Korea5Modmap, /* 94 */
- Taiwan5Modmap, /* 95 */
- Japan5Modmap, /* 96 */
- CanadaFr5Modmap, /* 97 */
-};
diff --git a/nx-X11/programs/Xserver/hw/sun/sunMfb.c b/nx-X11/programs/Xserver/hw/sun/sunMfb.c
deleted file mode 100644
index fa8eb70db..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunMfb.c
+++ /dev/null
@@ -1,108 +0,0 @@
-
-/* $Xorg: sunMfb.c,v 1.4 2001/02/09 02:04:44 xorgcvs Exp $ */
-
-/*
-Copyright 1990, 1993, 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.
- */
-/* $XFree86: xc/programs/Xserver/hw/sun/sunMfb.c,v 3.3 2001/01/17 22:36:51 dawes Exp $ */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/*
- * Copyright 1987 by the Regents of the University of California
- * Copyright 1987 by Adam de Boor, UC Berkeley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/****************************************************************/
-/* Modified from sunCG4C.c for X11R3 by Tom Jarmolowski */
-/****************************************************************/
-
-/*
- * Copyright 1991, 1992, 1993 Kaleb S. Keithley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. Kaleb S. Keithley makes no
- * representations about the suitability of this software for
- * any purpose. It is provided "as is" without express or
- * implied warranty.
- */
-
-#include "sun.h"
-#include "mfb.h"
-
-Bool sunBW2Init (screen, pScreen, argc, argv)
- int screen; /* what screen am I going to be */
- ScreenPtr pScreen; /* The Screen to initialize */
- int argc; /* The number of the Server's arguments. */
- char **argv; /* The arguments themselves. Don't change! */
-{
- sunFbs[screen].EnterLeave = (void (*)())NoopDDA;
- if (sunFlipPixels) {
- pScreen->whitePixel = 1;
- pScreen->blackPixel = 0;
- } else {
- pScreen->whitePixel = 0;
- pScreen->blackPixel = 1;
- }
- return sunInitCommon (screen, pScreen, (off_t) 0,
- mfbScreenInit, NULL,
- mfbCreateDefColormap, sunSaveScreen, 0);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/sun/sunMouse.c b/nx-X11/programs/Xserver/hw/sun/sunMouse.c
deleted file mode 100644
index aad46e3d7..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunMouse.c
+++ /dev/null
@@ -1,399 +0,0 @@
-/* $Xorg: sunMouse.c,v 1.3 2000/08/17 19:48:32 cpqbld Exp $ */
-/*-
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-/*
- * Copyright 1991, 1992, 1993 Kaleb S. Keithley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. Kaleb S. Keithley makes no
- * representations about the suitability of this software for
- * any purpose. It is provided "as is" without express or
- * implied warranty.
- */
-/* $XFree86: xc/programs/Xserver/hw/sun/sunMouse.c,v 1.3 2001/10/28 03:33:12 tsi Exp $ */
-
-#define NEED_EVENTS
-#include "sun.h"
-#include "mi.h"
-
-Bool sunActiveZaphod = TRUE;
-
-static Bool sunCursorOffScreen();
-static void sunCrossScreen();
-static void sunWarpCursor();
-
-miPointerScreenFuncRec sunPointerScreenFuncs = {
- sunCursorOffScreen,
- sunCrossScreen,
- sunWarpCursor,
-};
-
-/*-
- *-----------------------------------------------------------------------
- * sunMouseCtrl --
- * Alter the control parameters for the mouse. Since acceleration
- * etc. is done from the PtrCtrl record in the mouse's device record,
- * there's nothing to do here.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-/*ARGSUSED*/
-static
-void sunMouseCtrl (
- DeviceIntPtr device,
- PtrCtrl* ctrl)
-{
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunMouseProc --
- * Handle the initialization, etc. of a mouse
- *
- * Results:
- * none.
- *
- * Side Effects:
- *
- * Note:
- * When using sunwindows, all input comes off a single fd, stored in the
- * global windowFd. Therefore, only one device should be enabled and
- * disabled, even though the application still sees both mouse and
- * keyboard. We have arbitrarily chosen to enable and disable windowFd
- * in the keyboard routine sunKbdProc rather than in sunMouseProc.
- *
- *-----------------------------------------------------------------------
- */
-int sunMouseProc (
- DeviceIntPtr device,
- int what)
-{
- DevicePtr pMouse = (DevicePtr) device;
- int format;
- static int oformat;
- BYTE map[4];
-
- switch (what) {
- case DEVICE_INIT:
- if (pMouse != LookupPointerDevice()) {
- ErrorF ("Cannot open non-system mouse");
- return !Success;
- }
- if (sunPtrPriv.fd == -1)
- return !Success;
- pMouse->devicePrivate = (pointer) &sunPtrPriv;
- pMouse->on = FALSE;
- map[1] = 1;
- map[2] = 2;
- map[3] = 3;
- InitPointerDeviceStruct(
- pMouse, map, 3, miPointerGetMotionEvents,
- sunMouseCtrl, miPointerGetMotionBufferSize());
- break;
-
- case DEVICE_ON:
- if (ioctl (sunPtrPriv.fd, VUIDGFORMAT, &oformat) == -1) {
- Error ("sunMouseProc ioctl VUIDGFORMAT");
- return !Success;
- }
- format = VUID_FIRM_EVENT;
- if (ioctl (sunPtrPriv.fd, VUIDSFORMAT, &format) == -1) {
- Error ("sunMouseProc ioctl VUIDSFORMAT");
- return !Success;
- }
- sunPtrPriv.bmask = 0;
- AddEnabledDevice (sunPtrPriv.fd);
- pMouse->on = TRUE;
- break;
-
- case DEVICE_CLOSE:
- pMouse->on = FALSE;
- if (ioctl (sunPtrPriv.fd, VUIDSFORMAT, &oformat) == -1)
- Error ("sunMouseProc ioctl VUIDSFORMAT");
- break;
-
- case DEVICE_OFF:
- pMouse->on = FALSE;
- RemoveEnabledDevice (sunPtrPriv.fd);
- break;
- }
- return Success;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunMouseGetEvents --
- * Return the events waiting in the wings for the given mouse.
- *
- * Results:
- * A pointer to an array of Firm_events or (Firm_event *)0 if no events
- * The number of events contained in the array.
- * A boolean as to whether more events might be available.
- *
- * Side Effects:
- * None.
- *-----------------------------------------------------------------------
- */
-
-Firm_event* sunMouseGetEvents (
- int fd,
- Bool on,
- int* pNumEvents,
- Bool* pAgain)
-{
- int nBytes; /* number of bytes of events available. */
- static Firm_event evBuf[MAXEVENTS]; /* Buffer for Firm_events */
-
- if ((nBytes = read (fd, (char *)evBuf, sizeof(evBuf))) == -1) {
- if (errno == EWOULDBLOCK) {
- *pNumEvents = 0;
- *pAgain = FALSE;
- } else {
- Error ("sunMouseGetEvents read");
- FatalError ("Could not read from mouse");
- }
- } else {
- if (on) {
- *pNumEvents = nBytes / sizeof (Firm_event);
- *pAgain = (nBytes == sizeof (evBuf));
- } else {
- *pNumEvents = 0;
- *pAgain = FALSE;
- }
- }
- return evBuf;
-}
-
-
-/*-
- *-----------------------------------------------------------------------
- * MouseAccelerate --
- * Given a delta and a mouse, return the acceleration of the delta.
- *
- * Results:
- * The corrected delta
- *
- * Side Effects:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-static short
-MouseAccelerate (device, delta)
- DeviceIntPtr device;
- int delta;
-{
- int sgn = sign(delta);
- PtrCtrl *pCtrl;
- short ret;
-
- delta = abs(delta);
- pCtrl = &device->ptrfeed->ctrl;
- if (delta > pCtrl->threshold) {
- ret =
- (short) sgn *
- (pCtrl->threshold + ((delta - pCtrl->threshold) * pCtrl->num) /
- pCtrl->den);
- } else {
- ret = (short) sgn * delta;
- }
- return ret;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunMouseEnqueueEvent --
- * Given a Firm_event for a mouse, pass it off the the dix layer
- * properly converted...
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The cursor may be redrawn...? devPrivate/x/y will be altered.
- *
- *-----------------------------------------------------------------------
- */
-
-void sunMouseEnqueueEvent (
- DeviceIntPtr device,
- Firm_event *fe)
-{
- xEvent xE;
- sunPtrPrivPtr pPriv; /* Private data for pointer */
- int bmask; /* Temporary button mask */
- unsigned long time;
- int x, y;
-
- pPriv = (sunPtrPrivPtr)device->public.devicePrivate;
-
- time = xE.u.keyButtonPointer.time = TVTOMILLI(fe->time);
-
- switch (fe->id) {
- case MS_LEFT:
- case MS_MIDDLE:
- case MS_RIGHT:
- /*
- * A button changed state. Sometimes we will get two events
- * for a single state change. Should we get a button event which
- * reflects the current state of affairs, that event is discarded.
- *
- * Mouse buttons start at 1.
- */
- xE.u.u.detail = (fe->id - MS_LEFT) + 1;
- bmask = 1 << xE.u.u.detail;
- if (fe->value == VKEY_UP) {
- if (pPriv->bmask & bmask) {
- xE.u.u.type = ButtonRelease;
- pPriv->bmask &= ~bmask;
- } else {
- return;
- }
- } else {
- if ((pPriv->bmask & bmask) == 0) {
- xE.u.u.type = ButtonPress;
- pPriv->bmask |= bmask;
- } else {
- return;
- }
- }
- mieqEnqueue (&xE);
- break;
- case LOC_X_DELTA:
- miPointerDeltaCursor (MouseAccelerate(device,fe->value),0,time);
- break;
- case LOC_Y_DELTA:
- /*
- * For some reason, motion up generates a positive y delta
- * and motion down a negative delta, so we must subtract
- * here instead of add...
- */
- miPointerDeltaCursor (0,-MouseAccelerate(device,fe->value),time);
- break;
- case LOC_X_ABSOLUTE:
- miPointerPosition (&x, &y);
- miPointerAbsoluteCursor (fe->value, y, time);
- break;
- case LOC_Y_ABSOLUTE:
- miPointerPosition (&x, &y);
- miPointerAbsoluteCursor (x, fe->value, time);
- break;
- default:
- FatalError ("sunMouseEnqueueEvent: unrecognized id\n");
- break;
- }
-}
-
-/*ARGSUSED*/
-static Bool
-sunCursorOffScreen (pScreen, x, y)
- ScreenPtr *pScreen;
- int *x, *y;
-{
- int index, ret = FALSE;
- extern Bool PointerConfinedToScreen();
-
- if (PointerConfinedToScreen()) return TRUE;
- /*
- * Active Zaphod implementation:
- * increment or decrement the current screen
- * if the x is to the right or the left of
- * the current screen.
- */
- if (sunActiveZaphod &&
- screenInfo.numScreens > 1 && (*x >= (*pScreen)->width || *x < 0)) {
- index = (*pScreen)->myNum;
- if (*x < 0) {
- index = (index ? index : screenInfo.numScreens) - 1;
- *pScreen = screenInfo.screens[index];
- *x += (*pScreen)->width;
- } else {
- *x -= (*pScreen)->width;
- index = (index + 1) % screenInfo.numScreens;
- *pScreen = screenInfo.screens[index];
- }
- ret = TRUE;
- }
- return ret;
-}
-
-static void
-sunCrossScreen (pScreen, entering)
- ScreenPtr pScreen;
- Bool entering;
-{
- if (sunFbs[pScreen->myNum].EnterLeave)
- (*sunFbs[pScreen->myNum].EnterLeave) (pScreen, entering ? 0 : 1);
-}
-
-static void
-sunWarpCursor (pScreen, x, y)
- ScreenPtr pScreen;
- int x, y;
-{
-#ifndef i386
- sigset_t newsigmask;
-
- (void) sigemptyset (&newsigmask);
-#ifdef SVR4
- (void) sigaddset (&newsigmask, SIGPOLL);
-#else
- (void) sigaddset (&newsigmask, SIGIO);
-#endif
- (void) sigprocmask (SIG_BLOCK, &newsigmask, (sigset_t *)NULL);
- miPointerWarpCursor (pScreen, x, y);
- (void) sigprocmask (SIG_UNBLOCK, &newsigmask, (sigset_t *)NULL);
-#else
- int oldmask;
-
- oldmask = sigblock (sigmask (SIGIO));
- miPointerWarpCursor (pScreen, x, y);
- sigsetmask (oldmask);
-#endif
-}
diff --git a/nx-X11/programs/Xserver/hw/sun/sunMultiDepth.c b/nx-X11/programs/Xserver/hw/sun/sunMultiDepth.c
deleted file mode 100644
index a8adf353f..000000000
--- a/nx-X11/programs/Xserver/hw/sun/sunMultiDepth.c
+++ /dev/null
@@ -1,277 +0,0 @@
-/* $Xorg: sunMultiDepth.c,v 1.4 2001/02/09 02:04:44 xorgcvs Exp $ */
-/*
-
-Copyright 1992, 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.
-
-*/
-
-/* $XFree86: xc/programs/Xserver/hw/sun/sunMultiDepth.c,v 1.5 2001/01/17 22:36:51 dawes Exp $ */
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "resource.h"
-#include "colormap.h"
-#include "colormapst.h"
-#include "mi.h"
-#include "mistruct.h"
-#include "dix.h"
-#include "gcstruct.h"
-#include "mibstore.h"
-
-#ifndef SINGLEDEPTH
-
-static Bool
-sunCfbCreateGC(pGC)
- GCPtr pGC;
-{
- if (pGC->depth == 1)
- {
- return mfbCreateGC (pGC);
- }
- else if (pGC->depth <= 8)
- {
- return cfbCreateGC (pGC);
- }
- else if (pGC->depth <= 16)
- {
- return cfb16CreateGC (pGC);
- }
- else if (pGC->depth <= 32)
- {
- return cfb32CreateGC (pGC);
- }
- return FALSE;
-}
-
-static void
-sunCfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart)
- DrawablePtr pDrawable; /* drawable from which to get bits */
- int wMax; /* largest value of all *pwidths */
- register DDXPointPtr ppt; /* points to start copying from */
- int *pwidth; /* list of number of bits to copy */
- int nspans; /* number of scanlines to copy */
- char *pdstStart; /* where to put the bits */
-{
- switch (pDrawable->bitsPerPixel) {
- case 1:
- mfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- break;
- case 8:
- cfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- break;
- case 16:
- cfb16GetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- break;
- case 32:
- cfb32GetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- break;
- }
- return;
-}
-
-static void
-sunCfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine)
- DrawablePtr pDrawable;
- int sx, sy, w, h;
- unsigned int format;
- unsigned long planeMask;
- char *pdstLine;
-{
- switch (pDrawable->bitsPerPixel)
- {
- case 1:
- mfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- break;
- case 8:
- cfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- break;
- case 16:
- cfb16GetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- break;
- case 32:
- cfb32GetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- break;
- }
-}
-
-Bool
-sunCfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- extern int cfbWindowPrivateIndex;
- extern int cfbGCPrivateIndex;
- int ret;
-
- sunRegisterPixmapFormat( /* depth */ 1, /* bits per pixel */ 1);
- sunRegisterPixmapFormat( /* depth */ 8, /* bits per pixel */ 8);
- sunRegisterPixmapFormat( /* depth */ 12, /* bits per pixel */ 16);
- sunRegisterPixmapFormat( /* depth */ 24, /* bits per pixel */ 32);
-
- switch (bpp) {
- case 8:
- ret = cfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
- break;
- case 16:
- ret = cfb16SetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
- break;
- case 32:
- ret = cfb32SetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
- break;
- default:
- return FALSE;
- }
- pScreen->CreateGC = sunCfbCreateGC;
- pScreen->GetImage = sunCfbGetImage;
- pScreen->GetSpans = sunCfbGetSpans;
- return ret;
-}
-
-extern BSFuncRec cfbBSFuncRec, cfb16BSFuncRec, cfb32BSFuncRec;
-extern int cfb16ScreenPrivateIndex, cfb32ScreenPrivateIndex;
-extern Bool cfbCloseScreen(), cfb16CloseScreen(), cfb32CloseScreen();
-
-Bool
-sunCfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp;
-{
- int i;
- pointer oldDevPrivate;
- VisualPtr visuals;
- int nvisuals;
- DepthPtr depths;
- int ndepths;
- VisualID defaultVisual;
- int rootdepth;
-
- if (!cfbInitVisuals(&visuals, &depths, &nvisuals, &ndepths,
- &rootdepth, &defaultVisual, 1 << (bpp - 1), 8))
- return FALSE;
- oldDevPrivate = pScreen->devPrivate;
- if (! miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width,
- rootdepth, ndepths, depths,
- defaultVisual, nvisuals, visuals))
- return FALSE;
- switch (bpp)
- {
- case 8:
- pScreen->CloseScreen = cfbCloseScreen;
- pScreen->BackingStoreFuncs = cfbBSFuncRec;
- break;
- case 16:
- pScreen->CloseScreen = cfb16CloseScreen;
- pScreen->devPrivates[cfb16ScreenPrivateIndex].ptr =
- pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
- pScreen->BackingStoreFuncs = cfb16BSFuncRec;
- break;
- case 32:
- pScreen->CloseScreen = cfb32CloseScreen;
- pScreen->devPrivates[cfb32ScreenPrivateIndex].ptr =
- pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
- pScreen->BackingStoreFuncs = cfb32BSFuncRec;
- break;
- }
- return TRUE;
-}
-
-
-Bool
-sunCfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp;
-{
- if (!sunCfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width, bpp))
- return FALSE;
- return sunCfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix,
- dpiy, width, bpp);
-}
-
-
-#else /* SINGLEDEPTH */
-
-/* stuff for 8-bit only server */
-
-Bool
-sunCfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- sunRegisterPixmapFormat( /* depth */ 1, /* bits per pixel */ 1);
- sunRegisterPixmapFormat( /* depth */ 8, /* bits per pixel */ 8);
- return cfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width);
-}
-
-Bool
-sunCfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp;
-{
- return cfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width);
-}
-
-Bool
-sunCfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp;
-{
- sunRegisterPixmapFormat( /* depth */ 1, /* bits per pixel */ 1);
- sunRegisterPixmapFormat( /* depth */ 8, /* bits per pixel */ 8);
- return cfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
-}
-
-#endif /* SINGLEDEPTH */
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/Imakefile b/nx-X11/programs/Xserver/hw/sunLynx/Imakefile
deleted file mode 100644
index e7e8e916c..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/Imakefile
+++ /dev/null
@@ -1,78 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:36 cpqbld Exp $
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/hw/sunLynx/Imakefile,v 3.1 1996/12/27 06:51:30 dawes Exp $
-
-#include <Server.tmpl>
-
-SRCS1 = sunLyInit.c \
- sunLyIo.c \
- sunLyUtil.c \
- sunLyMouse.c\
- sunLyCfb.c \
- sunLyFbs.c \
- sunLyKbd.c \
- sunCursor.c \
- sunMfb.c \
- sunGX.c \
- sunKeyMap.c
-
-XCOMM SRCS = $(SRCS1) kbd_mode.c constype.c
-SRCS = $(SRCS1)
-
-#if XsunLynxMonoServer
-OFILES = sunInitMono.o sunInExMono.o
-#endif
-
-OBJS = sunLyInit.o \
- sunLyIo.o \
- sunLyUtil.o \
- sunLyMouse.o\
- sunLyCfb.o \
- sunLyFbs.o \
- sunLyKbd.o \
- sunCursor.o \
- sunMfb.o \
- sunGX.o \
- sunKeyMap.o
-
- INCLUDES = -I. -I../.. -I../../mi -I../../mfb -I../../cfb -I../../cfb32 \
- -I../../include -I../../os -I$(XINCLUDESRC) -I$(FONTINCSRC)
- LINTLIBS = ../../dix/llib-ldix.ln ../../os/llib-los.ln \
- ../mfb/llib-lmfb.ln ../mi/llib-lmi.ln ../cfb/llib-lcfb.ln
-
-NormalLibraryObjectRule()
-
-XCOMM all:: $(OFILES) kbd_mode constype
-all:: $(OFILES)
-
-lintlib:
-
-NormalLibraryTarget(sun,$(OBJS))
-NormalLintTarget($(SRCS1))
-
-sunInExMono.o: $(ICONFIGFILES)
-ObjectFromSpecialSource(sunInExMono,../../mi/miinitext,$(EXT_DEFINES) -UXIEEXT -UPEXEXT -UXF86VIDMODE)
-ObjectFromSpecialSource(sunInitMono,sunLyInit,-DSUNMAXDEPTH=1)
-
-#if 0
-SingleProgramTarget(kbd_mode, kbd_mode.o,,)
-SingleProgramTarget(constype, constype.o,,)
-InstallProgram(kbd_mode,$(BINDIR))
-InstallProgram(constype,$(BINDIR))
-InstallManPage(kbd_mode,$(MANDIR))
-InstallManPage(constype,$(MANDIR))
-InstallManPage(Xsun,$(MANDIR))
-InstallManPageAliases(Xsun,$(MANDIR),XsunMono)
-#endif
-
-LinkSourceFile(sunGX.h,../sun)
-LinkSourceFile(circleset.h,../sun)
-ObjectFromSpecialSource(sunKeyMap,../sun/sunKeyMap,/**/)
-ObjectFromSpecialSource(sunMfb,../sun/sunMfb,/**/)
-ObjectFromSpecialSource(sunGX,../sun/sunGX,/**/)
-ObjectFromSpecialSource(sunCursor,../sun/sunCursor,/**/)
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/btreg.h b/nx-X11/programs/Xserver/hw/sunLynx/btreg.h
deleted file mode 100644
index cca573cc6..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/btreg.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* $Xorg: btreg.h,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-/*
- * Copyright (c) 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Lawrence Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)btreg.h 8.2 (Berkeley) 1/21/94
- */
-/* $NetBSD: btreg.h,v 1.2 1994/11/20 20:51:55 deraadt Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/btreg.h,v 3.1 1996/12/27 06:51:31 dawes Exp $ */
-
-/*
- * Several Sun color frame buffers use some kind of Brooktree video
- * DAC (e.g., the Bt458, -- in any case, Brooktree make the only
- * decent color frame buffer chips).
- *
- * Color map control on these is a bit funky in a SPARCstation.
- * To update the color map one would normally do byte writes, but
- * the hardware takes longword writes. Since there are three
- * registers for each color map entry (R, then G, then B), we have
- * to set color 1 with a write to address 0 (setting 0's R/G/B and
- * color 1's R) followed by a second write to address 1 (setting
- * color 1's G/B and color 2's R/G). Software must therefore keep
- * a copy of the current map.
- *
- * The colormap address register increments automatically, so the
- * above write is done as:
- *
- * bt->bt_addr = 0;
- * bt->bt_cmap = R0G0B0R1;
- * bt->bt_cmap = G1B1R2G2;
- * ...
- *
- * Yow!
- *
- * Bonus complication: on the cg6, only the top 8 bits of each 32 bit
- * register matter, even though the cg3 takes all the bits from all
- * bytes written to it.
- */
-struct bt_regs {
- u_int bt_addr; /* map address register */
- u_int bt_cmap; /* colormap data register */
- u_int bt_ctrl; /* control register */
- u_int bt_omap; /* overlay (cursor) map register */
-};
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/btvar.h b/nx-X11/programs/Xserver/hw/sunLynx/btvar.h
deleted file mode 100644
index 054df6f87..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/btvar.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* $Xorg: btvar.h,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-/*
- * Copyright (c) 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Lawrence Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)btvar.h 8.2 (Berkeley) 1/21/94
- */
-/* $NetBSD: btvar.h,v 1.2 1994/11/20 20:51:56 deraadt Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/btvar.h,v 3.1 1996/12/27 06:51:32 dawes Exp $ */
-
-/*
- * Brooktree color frame buffer state variables (see btreg.h).
- *
- * Unfortunately, remarkably little code can be shared between the
- * cg3 and cg6 drivers here, as the cg3 registers do longword-ops
- * `as expected', but the cg6 ones use only the upper byte.
- *
- * Still, the software color map manipulation is not completely trivial.
- */
-union bt_cmap {
- u_char cm_map[256][3]; /* 256 R/G/B entries */
- u_int cm_chip[256 * 3 / 4]; /* the way the chip gets loaded */
-};
-
-/*
- * Routines in bt_subr.c.
- */
-int bt_getcmap __P((struct fbcmap *, union bt_cmap *, int));
-int bt_putcmap __P((struct fbcmap *, union bt_cmap *, int));
-
-/*
- * Compute (x / 4) * 3 and (x / 4) * 4. These are used in turning
- * RGB indices (which are in multiples of three) into `chip RGB' values
- * (which are in multiples of four).
- */
-#define BT_D4M3(x) ((((x) >> 2) << 1) + ((x) >> 2)) /* (x / 4) * 3 */
-#define BT_D4M4(x) ((x) & ~3) /* (x / 4) * 4 */
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/cgsixreg.h b/nx-X11/programs/Xserver/hw/sunLynx/cgsixreg.h
deleted file mode 100644
index 0c44c2a58..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/cgsixreg.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/* $Xorg: cgsixreg.h,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-/*
- * Copyright (c) 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Lawrence Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)cgsixreg.h 8.4 (Berkeley) 1/21/94
- */
-/* $NetBSD: cgsixreg.h,v 1.3 1994/11/20 20:52:00 deraadt Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/cgsixreg.h,v 3.1 1996/12/27 06:51:33 dawes Exp $ */
-
-/*
- * CG6 display registers. (Note, I got tired of writing `cgsix' about
- * halfway through and changed everything to cg6, but I probably missed
- * some. Unfortunately, the way config works, we need to spell out `six'
- * in some places anyway.)
- *
- * The cg6 is a complicated beastie. We have been unable to extract any
- * documentation and most of the following are guesses based on a limited
- * amount of reverse engineering.
- *
- * A cg6 is composed of numerous groups of control registers, all with TLAs:
- * FBC - frame buffer control?
- * FHC - fbc hardware configuration / control? register (32 bits)
- * DHC - ???
- * TEC - transform engine control?
- * THC - TEC Hardware Configuration
- * ROM - a 64Kbyte ROM with who knows what in it.
- * colormap - see below
- * frame buffer memory (video RAM)
- * possible other stuff
- *
- * Like the cg3, the cg6 uses a Brooktree Video DAC (see btreg.h).
- *
- * Various revisions of the cgsix have various hardware bugs. So far,
- * we have only seen rev 1 & 2.
- */
-
-/* bits in FHC register */
-#define FHC_FBID_MASK 0xff000000 /* bits 24..31 are frame buffer ID */
-#define FHC_FBID_SHIFT 24
-#define FHC_REV_MASK 0x00f00000 /* bits 20..23 are revision */
-#define FHC_REV_SHIFT 20
-#define FHC_FROP_DISABLE 0x00080000 /* disable fast/font? rasterops */
-#define FHC_ROW_DISABLE 0x00040000 /* ??? */
-#define FHC_SRC_DISABLE 0x00020000 /* ??? */
-#define FHC_DST_DISABLE 0x00010000 /* disable destination cache */
-#define FHC_RESET 0x00008000 /* ??? */
-#define FHC_XXX0 0x00004000 /* ??? */
-#define FHC_LEBO 0x00002000 /* set little endian byte order? */
-#define FHC_RES_MASK 0x00001800 /* bits 11&12 are resolution */
-#define FHC_RES_1024 0x00000000 /* res = 1024x768 */
-#define FHC_RES_1152 0x00000800 /* res = 1152x900 */
-#define FHC_RES_1280 0x00001000 /* res = 1280x1024 */
-#define FHC_RES_1600 0x00001800 /* res = 1600x1200 */
-#define FHC_CPU_MASK 0x00000600 /* bits 9&10 are cpu type */
-#define FHC_CPU_SPARC 0x00000000 /* cpu = sparc */
-#define FHC_CPU_68020 0x00000200 /* cpu = 68020 */
-#define FHC_CPU_386 0x00000400 /* cpu = 80386 */
-#define FHC_CPU_XXX 0x00000600 /* ??? */
-#define FHC_TEST 0x00000100 /* ??? test window ??? */
-#define FHC_TESTX_MASK 0x000000f0 /* bits 4..7 are test window X */
-#define FHC_TESTX_SHIFT 4
-#define FHC_TESTY_MASK 0x0000000f /* bits 0..3 are test window Y */
-#define FHC_TESTY_SHIFT 0
-
-/*
- * The layout of the THC.
- */
-struct cg6_thc {
- u_int thc_xxx0[512]; /* ??? */
- u_int thc_hsync1; /* horizontal sync timing */
- u_int thc_hsync2; /* more hsync timing */
- u_int thc_hsync3; /* yet more hsync timing */
- u_int thc_vsync1; /* vertical sync timing */
- u_int thc_vsync2; /* only two of these */
- u_int thc_refresh; /* refresh counter */
- u_int thc_misc; /* miscellaneous control & status */
- u_int thc_xxx1[56]; /* ??? */
- u_int thc_cursxy; /* cursor x,y position (16 bits each) */
- u_int thc_cursmask[32]; /* cursor mask bits */
- u_int thc_cursbits[32]; /* what to show where mask enabled */
-};
-
-/* bits in thc_misc */
-#define THC_MISC_XXX0 0xfff00000 /* unused */
-#define THC_MISC_REVMASK 0x000f0000 /* cg6 revision? */
-#define THC_MISC_REVSHIFT 16
-#define THC_MISC_XXX1 0x0000e000 /* unused */
-#define THC_MISC_RESET 0x00001000 /* ??? */
-#define THC_MISC_XXX2 0x00000800 /* unused */
-#define THC_MISC_VIDEN 0x00000400 /* video enable */
-#define THC_MISC_SYNC 0x00000200 /* not sure what ... */
-#define THC_MISC_VSYNC 0x00000100 /* ... these really are */
-#define THC_MISC_SYNCEN 0x00000080 /* sync enable */
-#define THC_MISC_CURSRES 0x00000040 /* cursor resolution */
-#define THC_MISC_INTEN 0x00000020 /* v.retrace intr enable */
-#define THC_MISC_INTR 0x00000010 /* intr pending / ack bit */
-#define THC_MISC_XXX 0x0000000f /* ??? */
-
-/* cursor x / y position value for `off' */
-#define THC_CURSOFF (65536-32) /* i.e., USHRT_MAX+1-32 */
-
-/*
- * Partial description of TEC (needed to get around FHC rev 1 bugs).
- */
-struct cg6_tec_xxx {
- u_int tec_mv; /* matrix stuff */
- u_int tec_clip; /* clipping stuff */
- u_int tec_vdc; /* ??? */
-};
-
-/*
- * This structure exists only to compute the layout of the CG6
- * hardware. Each of the individual substructures lives on a
- * separate `page' (where a `page' is at least 4K), and many are
- * very far apart. We avoid large offsets (which make for lousy
- * code) by using pointers to the individual interesting pieces,
- * and map them in independently (to avoid using up PTEs unnecessarily).
- */
-struct cg6_layout {
- /* ROM at 0 */
- union {
- long un_id; /* ID = ?? */
- char un_rom[65536]; /* 64K rom */
- char un_pad[0x200000];
- } cg6_rom_un;
-
- /* Brooktree DAC at 0x200000 */
- union {
- struct bt_regs un_btregs;
- char un_pad[0x040000];
- } cg6_bt_un;
-
- /* DHC, whatever that is, at 0x240000 */
- union {
- char un_pad[0x40000];
- } cg6_dhc_un;
-
- /* ALT, whatever that is, at 0x280000 */
- union {
- char un_pad[0x80000];
- } cg6_alt_un;
-
- /* FHC register at 0x300000 */
- union {
- int un_fhc;
- char un_pad[0x1000];
- } cg6_fhc_un;
-
- /* THC at 0x301000 */
- union {
- struct cg6_thc un_thc;
- char un_pad[0x400000 - 0x1000];
- } cg6_thc_un;
-
- /* FBC at 0x700000 */
- union {
- char un_pad[0x1000];
- } cg6_fbc_un;
-
- /* TEC at 0x701000 */
- union {
- char un_pad[0x100000 - 0x1000];
- struct cg6_tec_xxx un_tec;
- } cg6_tec_un;
-
- /* Video RAM at 0x800000 */
- char cg6_ram[1024 * 1024]; /* approx.? */
-};
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/fbio.h b/nx-X11/programs/Xserver/hw/sunLynx/fbio.h
deleted file mode 100644
index 324036999..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/fbio.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/* $Xorg: fbio.h,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-/*
- * Copyright (c) 1992 Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA
- * contract BG 91-66 and contributed to Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)fbio.h 7.2 (Berkeley) 4/1/92
- */
-
-/*
- * Frame buffer ioctls (from Sprite, trimmed to essentials for X11).
- */
-/* $NetBSD: fbio.h,v 1.3 1994/11/20 20:53:03 deraadt Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/fbio.h,v 3.1 1996/12/27 06:51:34 dawes Exp $ */
-
-/*
- * Frame buffer type codes.
- */
-#define FBTYPE_SUN1BW 0 /* multibus mono */
-#define FBTYPE_SUN1COLOR 1 /* multibus color */
-#define FBTYPE_SUN2BW 2 /* memory mono */
-#define FBTYPE_SUN2COLOR 3 /* color w/rasterop chips */
-#define FBTYPE_SUN2GP 4 /* GP1/GP2 */
-#define FBTYPE_SUN5COLOR 5 /* RoadRunner accelerator */
-#define FBTYPE_SUN3COLOR 6 /* memory color */
-#define FBTYPE_MEMCOLOR 7 /* memory 24-bit */
-#define FBTYPE_SUN4COLOR 8 /* memory color w/overlay */
-
-#define FBTYPE_NOTSUN1 9 /* reserved for customer */
-#define FBTYPE_NOTSUN2 10 /* reserved for customer */
-#define FBTYPE_NOTSUN3 11 /* reserved for customer */
-
-#define FBTYPE_SUNFAST_COLOR 12 /* accelerated 8bit */
-#define FBTYPE_SUNROP_COLOR 13 /* MEMCOLOR with rop h/w */
-#define FBTYPE_SUNFB_VIDEO 14 /* Simple video mixing */
-#define FBTYPE_RESERVED5 15 /* reserved, do not use */
-#define FBTYPE_RESERVED4 16 /* reserved, do not use */
-#define FBTYPE_RESERVED3 17 /* reserved, do not use */
-#define FBTYPE_RESERVED2 18 /* reserved, do not use */
-#define FBTYPE_RESERVED1 19 /* reserved, do not use */
-
-#define FBTYPE_LASTPLUSONE 20 /* max number of fbs (change as add) */
-
-/*
- * Frame buffer descriptor as returned by FBIOGTYPE.
- */
-struct fbtype {
- int fb_type; /* as defined above */
- int fb_height; /* in pixels */
- int fb_width; /* in pixels */
- int fb_depth; /* bits per pixel */
- int fb_cmsize; /* size of color map (entries) */
- int fb_size; /* total size in bytes */
-};
-#define FBIOGTYPE _IOR('F', 0, struct fbtype)
-
-#ifdef notdef
-/*
- * General purpose structure for passing info in and out of frame buffers
- * (used for gp1) -- unsupported.
- */
-struct fbinfo {
- int fb_physaddr; /* physical frame buffer address */
- int fb_hwwidth; /* fb board width */
- int fb_hwheight; /* fb board height */
- int fb_addrdelta; /* phys addr diff between boards */
- u_char *fb_ropaddr; /* fb virtual addr */
- int fb_unit; /* minor devnum of fb */
-};
-#define FBIOGINFO _IOR('F', 2, struct fbinfo)
-#endif
-
-/*
- * Color map I/O.
- */
-struct fbcmap {
- int index; /* first element (0 origin) */
- int count; /* number of elements */
- u_char *red; /* red color map elements */
- u_char *green; /* green color map elements */
- u_char *blue; /* blue color map elements */
-};
-#define FBIOPUTCMAP _IOW('F', 3, struct fbcmap)
-#define FBIOGETCMAP _IOW('F', 4, struct fbcmap)
-
-/*
- * Set/get attributes.
- */
-#define FB_ATTR_NDEVSPECIFIC 8 /* no. of device specific values */
-#define FB_ATTR_NEMUTYPES 4 /* no. of emulation types */
-
-struct fbsattr {
- int flags; /* flags; see below */
- int emu_type; /* emulation type (-1 if unused) */
- int dev_specific[FB_ATTR_NDEVSPECIFIC]; /* catchall */
-};
-#define FB_ATTR_AUTOINIT 1 /* emulation auto init flag */
-#define FB_ATTR_DEVSPECIFIC 2 /* dev. specific stuff valid flag */
-
-struct fbgattr {
- int real_type; /* real device type */
- int owner; /* PID of owner, 0 if myself */
- struct fbtype fbtype; /* fbtype info for real device */
- struct fbsattr sattr; /* see above */
- int emu_types[FB_ATTR_NEMUTYPES]; /* possible emulations */
- /* (-1 if unused) */
-};
-/* FBIOSATTR _IOW('F', 5, struct fbsattr) -- unsupported */
-#define FBIOGATTR _IOR('F', 6, struct fbgattr)
-
-/*
- * Video control.
- */
-#define FBVIDEO_OFF 0
-#define FBVIDEO_ON 1
-
-#define FBIOSVIDEO _IOW('F', 7, int)
-#define FBIOGVIDEO _IOR('F', 8, int)
-
-/*
- * hardware cursor control
- */
-struct fbcurpos {
- short x;
- short y;
-};
-
-#define FB_CUR_SETCUR 0x01
-#define FB_CUR_SETPOS 0x02
-#define FB_CUR_SETHOT 0x04
-#define FB_CUR_SETCMAP 0x08
-#define FB_CUR_SETSHAPE 0x10
-#define FB_CUR_SETALL 0x1F
-
-struct fbcursor {
- short set; /* what to set */
- short enable; /* enable/disable cursor */
- struct fbcurpos pos; /* cursor's position */
- struct fbcurpos hot; /* cursor's hot spot */
- struct fbcmap cmap; /* color map info */
- struct fbcurpos size; /* cursor's bit map size */
- char *image; /* cursor's image bits */
- char *mask; /* cursor's mask bits */
-};
-
-/* set/get cursor attributes/shape */
-#define FBIOSCURSOR _IOW('F', 24, struct fbcursor)
-#define FBIOGCURSOR _IOWR('F', 25, struct fbcursor)
-
-/* set/get cursor position */
-#define FBIOSCURPOS _IOW('F', 26, struct fbcurpos)
-#define FBIOGCURPOS _IOW('F', 27, struct fbcurpos)
-
-/* get max cursor size */
-#define FBIOGCURMAX _IOR('F', 28, struct fbcurpos)
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/patch.Console b/nx-X11/programs/Xserver/hw/sunLynx/patch.Console
deleted file mode 100644
index 58a2d80f3..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/patch.Console
+++ /dev/null
@@ -1,428 +0,0 @@
-diff -crP /cdrom/usr/include/kbd.h /usr/include/kbd.h
-*** /cdrom/usr/include/kbd.h Wed Dec 31 16:00:00 1969
---- /usr/include/kbd.h Sun May 11 23:22:45 1997
-***************
-*** 0 ****
---- 1,90 ----
-+ /* $NetBSD: kbd.h,v 1.4 1995/07/06 05:36:29 pk Exp $ */
-+
-+ /*
-+ * Copyright (c) 1992, 1993
-+ * The Regents of the University of California. All rights reserved.
-+ *
-+ * This software was developed by the Computer Systems Engineering group
-+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
-+ * contributed to Berkeley.
-+ *
-+ * All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Lawrence Berkeley Laboratory.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Berkeley and its contributors.
-+ * 4. Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * @(#)kbd.h 8.1 (Berkeley) 6/11/93
-+ */
-+
-+ /*
-+ * Keyboard `registers'. (This should be called kbd_reg.h but we need to
-+ * be compatible.)
-+ */
-+
-+ /*
-+ * Control codes sent from type 2, 3, and 4 keyboards.
-+ *
-+ * Note that KBD_RESET is followed by a keyboard ID, while KBD_IDLE is not.
-+ * KBD_IDLE does not take the place of any `up' transitions (it merely occurs
-+ * after them).
-+ */
-+ #define KBD_RESET 0xff /* keyboard `reset' response */
-+ #define KBD_IDLE 0x7f /* keyboard `all keys are up' code */
-+ #define KBD_LAYOUT 0xfe /* keyboard `get layout' response */
-+
-+ /* Keyboard IDs */
-+ #define KB_SUN2 2 /* type 2 keyboard */
-+ #define KB_SUN3 3 /* type 3 keyboard */
-+ #define KB_SUN4 4 /* type 4 keyboard */
-+
-+ /* Key codes are in 0x00..0x7e; KBD_UP is set if the key goes up */
-+ #define KBD_KEYMASK 0x7f /* keyboard key mask */
-+ #define KBD_UP 0x80 /* keyboard `up' transition */
-+
-+ /* Keyboard codes needed to recognize the L1-A sequence */
-+ #define KBD_L1 1 /* keyboard code for `L1' key */
-+ #define KBD_A 77 /* keyboard code for `A' key */
-+
-+ /* Control codes sent to the various keyboards */
-+ #define KBD_CMD_RESET 1 /* reset keyboard */
-+ #define KBD_CMD_BELL 2 /* turn bell on */
-+ #define KBD_CMD_NOBELL 3 /* turn bell off */
-+ #define KBD_CMD_CLICK 10 /* turn keyclick on */
-+ #define KBD_CMD_NOCLICK 11 /* turn keyclick off */
-+ #define KBD_CMD_SETLED 14 /* set LED state (type 4 kbd) */
-+ #define KBD_CMD_GLAYOUT 15 /* get DIP switch (type 4 kbd) */
-+
-+ #define LED_NUM_LOCK 0x1
-+ #if !defined(Lynx) || !defined(LED_COMPOSE)
-+ #define LED_COMPOSE 0x2
-+ #endif
-+ #define LED_SCROLL_LOCK 0x4
-+ #define LED_CAPS_LOCK 0x8
-diff -crP /cdrom/usr/include/kbio.h /usr/include/kbio.h
-*** /cdrom/usr/include/kbio.h Wed Dec 31 16:00:00 1969
---- /usr/include/kbio.h Sun May 11 23:22:46 1997
-***************
-*** 0 ****
---- 1,115 ----
-+ /* $NetBSD: kbio.h,v 1.4 1995/05/10 16:07:27 pk Exp $ */
-+
-+ /*
-+ * Copyright (c) 1992, 1993
-+ * The Regents of the University of California. All rights reserved.
-+ *
-+ * This software was developed by the Computer Systems Engineering group
-+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
-+ * contributed to Berkeley.
-+ *
-+ * All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Lawrence Berkeley Laboratory.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Berkeley and its contributors.
-+ * 4. Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * @(#)kbio.h 8.1 (Berkeley) 6/11/93
-+ */
-+
-+ /*
-+ * The following is a minimal emulation of Sun's `kio' structures
-+ * and related operations necessary to make X11 happy (i.e., make it
-+ * compile, and make old X11 binaries run).
-+ */
-+
-+ /*
-+ * The kiockey structure apparently gets and/or sets keyboard mappings.
-+ * It seems to be kind of useless, but X11 uses it (according to the
-+ * comments) to figure out when a Sun 386i has a type-4 keyboard but
-+ * claims to have a type-3 keyboard. We need just enough to cause the
-+ * appropriate ioctl to return the appropriate magic value.
-+ *
-+ * KIOCGETKEY fills in kio_entry from kio_station. Not sure what tablemask
-+ * is for; X sets it before the call, so it is not an output, but we do not
-+ * care anyway. KIOCSDIRECT is supposed to tell the kernel whether to send
-+ * keys to the console or to X; we just send them to X whenever the keyboard
-+ * is open at all. (XXX may need to change this later)
-+ *
-+ * Keyboard commands and types are defined in kbd.h as they are actually
-+ * real hardware commands and type numbers.
-+ */
-+ struct okiockey { /* Out-dated key translation structure */
-+ int kio_tablemask; /* whatever */
-+ u_char kio_station; /* key number */
-+ u_char kio_entry; /* HOLE if not present */
-+ char kio_text[10]; /* the silly escape sequences (unsupported) */
-+ };
-+
-+ struct kiockey {
-+ int kio_tablemask; /* whatever */
-+ u_char kio_station; /* key number */
-+ u_short kio_entry; /* HOLE if not present */
-+ char kio_text[10]; /* the silly escape sequences (unsupported) */
-+ };
-+
-+ /*
-+ * Values for kio_tablemask. These determine which table to read/modify
-+ * in KIOC[SG]KEY ioctls. Currently, we only have "non-shift" and "shift"
-+ * tables.
-+ */
-+ #define KIOC_NOMASK 0x0
-+ #define KIOC_CAPSMASK 0x1
-+ #define KIOC_SHIFTMASK 0xe
-+ #define KIOC_CTRLMASK 0x30
-+ #define KIOC_ALTGMASK 0x200
-+ #define KIOC_NUMLMASK 0x800
-+
-+ #define HOLE 0x302 /* value for kio_entry to say `really type 3' */
-+
-+ #define KIOCTRANS _IOW('k', 0, int) /* set translation mode */
-+ /* (we only accept TR_UNTRANS_EVENT) */
-+ #define KIOCGETKEY _IOWR('k', 2, struct okiockey) /* fill in kio_entry */
-+ #define KIOCGTRANS _IOR('k', 5, int) /* get translation mode */
-+ #define KIOCCMD _IOW('k', 8, int) /* X uses this to ring bell */
-+ #define KIOCTYPE _IOR('k', 9, int) /* get keyboard type */
-+ #define KIOCSDIRECT _IOW('k', 10, int) /* keys to console? */
-+ #define KIOCSKEY _IOW('k', 12, struct kiockey) /* set xlat mode */
-+ #ifndef Lynx
-+ #define KIOCGKEY _IOWR('k', 13, struct kiockey) /* get xlat mode */
-+ #endif
-+ #define KIOCLAYOUT _IOR('k', 20, int) /* get keyboard layout */
-+ #define KIOCSLED _IOW('k', 14, char) /* set LED state */
-+ #define KIOCGLED _IOR('k', 15, char) /* get LED state */
-+
-+ #define TR_NONE 0 /* X compat, unsupported */
-+ #define TR_ASCII 1 /* X compat, unsupported */
-+ #define TR_EVENT 2 /* X compat, unsupported */
-+ #define TR_UNTRANS_EVENT 3
-diff -crP /cdrom/sys/drivers/console/Makefile /sys/drivers/console/Makefile
-*** /cdrom/sys/drivers/console/Makefile Sun Feb 9 04:43:06 1997
---- /sys/drivers/console/Makefile Sun May 11 23:24:04 1997
-***************
-*** 24,30 ****
-
- LIBRARY= drivers
-
-! SPECIAL_CFLAGS=-DMOUSESUPPORT
-
- include ../../OBJ_RULES
-
---- 24,30 ----
-
- LIBRARY= drivers
-
-! SPECIAL_CFLAGS=-DMOUSESUPPORT -DXSERVERSUPPORT
-
- include ../../OBJ_RULES
-
-diff -crP /cdrom/sys/drivers/console/atc.h /sys/drivers/console/atc.h
-*** /cdrom/sys/drivers/console/atc.h Sun Feb 9 04:43:06 1997
---- /sys/drivers/console/atc.h Sun May 11 23:22:46 1997
-***************
-*** 108,113 ****
---- 108,119 ----
- #ifdef MOUSESUPPORT
- struct ttystatics mousechannel;
- #endif /* MOUSESUPPORT */
-+ #ifdef XSERVERSUPPORT
-+ int kbd_pending;
-+ int kbd_id; /* keyboard type */
-+ int kbd_layout; /* layout on type 4 */
-+ int kbd_click; /* kbd click on? */
-+ #endif
- };
-
- struct kbd_registers_type {
-diff -crP /cdrom/sys/drivers/console/atcdrvr.c /sys/drivers/console/atcdrvr.c
-*** /cdrom/sys/drivers/console/atcdrvr.c Sun Feb 9 04:43:06 1997
---- /sys/drivers/console/atcdrvr.c Sun May 11 23:25:15 1997
-***************
-*** 38,43 ****
---- 38,47 ----
- #ifdef MOUSESUPPORT
- #include "am8530.h"
- #endif /* MOUSESUPPORT */
-+ #ifdef XSERVERSUPPORT
-+ #include <kbd.h>
-+ #include <kbio.h>
-+ #endif
-
- char *screen_address; /* is this supposed to be in the driver info? */
-
-***************
-*** 305,310 ****
---- 309,318 ----
- int m;
- int ps;
- extern int set_kb_lights();
-+ #ifdef XSERVERSUPPORT
-+ extern int kbd_docmd();
-+ int err;
-+ #endif
-
- if (!atc_flag){ pseterr(EIO); return(SYSERR);}
- #ifdef MOUSESUPPORT
-***************
-*** 354,365 ****
---- 362,398 ----
- #ifdef TIOLED
- case TIOLED:
- #endif
-+ #ifdef XSERVERSUPPORT
-+ case KIOCSLED:
-+ #endif
- h->curled = *arg;
- if (h->ledstate == -1) {
- if (timeout(set_kb_lights,h,1) != -1)
- h->ledstate = 0;
- }
- return 0;
-+ #ifdef XSERVERSUPPORT
-+ case KIOCTYPE:
-+ if (wbounds(arg) < sizeof(int)) {
-+ pseterr(EFAULT);
-+ return SYSERR;
-+ }
-+ *(int *)arg = h->kbd_id;
-+ return OK;
-+ case KIOCLAYOUT:
-+ if (wbounds(arg) < sizeof(int)) {
-+ pseterr(EFAULT);
-+ return SYSERR;
-+ }
-+ *(int *)arg = h->kbd_layout;
-+ return OK;
-+ case KIOCCMD:
-+ if (err = kbd_docmd(h, *(int *)arg)) {
-+ pseterr(err);
-+ return SYSERR;
-+ }
-+ return OK;
-+ #endif
- case VT_OPENQRY:
- if (h->multimode == SCM_ONE) {
- if (!(h->open & 1)) {
-***************
-*** 578,583 ****
---- 611,622 ----
- h->open = 0;
- h->break_code = 0;
- h->info = info;
-+ #ifdef XSERVERSUPPORT
-+ h->kbd_pending = 0;
-+ h->kbd_id = KB_SUN4; /* query KBD later.... */
-+ h->kbd_layout = 0; /* US_ASCII */
-+ h->kbd_click = 0; /* silent movie */
-+ #endif
- #ifdef MOUSESUPPORT
- tmgr_install(&h->mousechannel, &info->sg, 0, mouse_xmit_ena, h);
- #endif /* MOUSESUPPORT */
-diff -crP /cdrom/sys/drivers/console/atkey.c /sys/drivers/console/atkey.c
-*** /cdrom/sys/drivers/console/atkey.c Sun Feb 9 04:43:07 1997
---- /sys/drivers/console/atkey.c Sun May 11 23:22:46 1997
-***************
-*** 26,31 ****
---- 26,35 ----
- #ifdef MOUSESUPPORT
- #include "am8530.h"
- #endif /* MOUSESUPPORT */
-+ #ifdef XSERVERSUPPORT
-+ #include <kbd.h>
-+ #include <kbio.h>
-+ #endif
-
- #define NOTHING_USEFUL -1
- #define FILL NOTHING_USEFUL
-diff -crP /cdrom/sys/drivers/console/atutils.c /sys/drivers/console/atutils.c
-*** /cdrom/sys/drivers/console/atutils.c Sun Feb 9 04:43:07 1997
---- /sys/drivers/console/atutils.c Sun May 11 23:22:46 1997
-***************
-*** 361,367 ****
- }
-
-
-! static int byte_to_keyboard(byt)
- unsigned char byt;
- {
- int i;
---- 361,370 ----
- }
-
-
-! #ifndef XSERVERSUPPORT
-! static
-! #endif
-! int byte_to_keyboard(byt)
- unsigned char byt;
- {
- int i;
-***************
-*** 400,402 ****
---- 403,449 ----
- break;
- }
- }
-+
-+ #ifdef XSERVERSUPPORT
-+ #include <kbd.h>
-+ #include <kbio.h>
-+
-+ /*
-+ * Execute a keyboard command; return 0 on success.
-+ */
-+ kbd_docmd(h, cmd)
-+ register struct kdhglobals *h;
-+ int cmd;
-+ {
-+ switch (cmd) {
-+
-+ case KBD_CMD_BELL:
-+ case KBD_CMD_NOBELL:
-+ /* Supported by type 2, 3, and 4 keyboards */
-+ break;
-+
-+ case KBD_CMD_CLICK:
-+ /* Unsupported by type 2 keyboards */
-+ if (h->kbd_id != KB_SUN2) {
-+ h->kbd_click = 1;
-+ break;
-+ }
-+ return (EINVAL);
-+
-+ case KBD_CMD_NOCLICK:
-+ /* Unsupported by type 2 keyboards */
-+ if (h->kbd_id != KB_SUN2) {
-+ h->kbd_click = 0;
-+ break;
-+ }
-+ return (EINVAL);
-+
-+ default:
-+ return (EINVAL); /* ENOTTY? EOPNOTSUPP? */
-+ }
-+
-+ if (timeout(byte_to_keyboard, cmd, 1) < 0)
-+ return (ENOSPC); /* ERESTART? */
-+ return (0);
-+ }
-+ #endif
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/patch.Console-2.4.0 b/nx-X11/programs/Xserver/hw/sunLynx/patch.Console-2.4.0
deleted file mode 100644
index 41e2d10c3..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/patch.Console-2.4.0
+++ /dev/null
@@ -1,493 +0,0 @@
-diff -cPr --exclude-from=Excl.include /mnt/DEV_OS.microSPARC/usr/include/kbd.h /usr/include/kbd.h
-*** /mnt/DEV_OS.microSPARC/usr/include/kbd.h
---- /usr/include/kbd.h Wed Jul 24 09:37:49 1996
-***************
-*** 0 ****
---- 1,90 ----
-+ /* $NetBSD: kbd.h,v 1.4 1995/07/06 05:36:29 pk Exp $ */
-+
-+ /*
-+ * Copyright (c) 1992, 1993
-+ * The Regents of the University of California. All rights reserved.
-+ *
-+ * This software was developed by the Computer Systems Engineering group
-+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
-+ * contributed to Berkeley.
-+ *
-+ * All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Lawrence Berkeley Laboratory.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Berkeley and its contributors.
-+ * 4. Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * @(#)kbd.h 8.1 (Berkeley) 6/11/93
-+ */
-+
-+ /*
-+ * Keyboard `registers'. (This should be called kbd_reg.h but we need to
-+ * be compatible.)
-+ */
-+
-+ /*
-+ * Control codes sent from type 2, 3, and 4 keyboards.
-+ *
-+ * Note that KBD_RESET is followed by a keyboard ID, while KBD_IDLE is not.
-+ * KBD_IDLE does not take the place of any `up' transitions (it merely occurs
-+ * after them).
-+ */
-+ #define KBD_RESET 0xff /* keyboard `reset' response */
-+ #define KBD_IDLE 0x7f /* keyboard `all keys are up' code */
-+ #define KBD_LAYOUT 0xfe /* keyboard `get layout' response */
-+
-+ /* Keyboard IDs */
-+ #define KB_SUN2 2 /* type 2 keyboard */
-+ #define KB_SUN3 3 /* type 3 keyboard */
-+ #define KB_SUN4 4 /* type 4 keyboard */
-+
-+ /* Key codes are in 0x00..0x7e; KBD_UP is set if the key goes up */
-+ #define KBD_KEYMASK 0x7f /* keyboard key mask */
-+ #define KBD_UP 0x80 /* keyboard `up' transition */
-+
-+ /* Keyboard codes needed to recognize the L1-A sequence */
-+ #define KBD_L1 1 /* keyboard code for `L1' key */
-+ #define KBD_A 77 /* keyboard code for `A' key */
-+
-+ /* Control codes sent to the various keyboards */
-+ #define KBD_CMD_RESET 1 /* reset keyboard */
-+ #define KBD_CMD_BELL 2 /* turn bell on */
-+ #define KBD_CMD_NOBELL 3 /* turn bell off */
-+ #define KBD_CMD_CLICK 10 /* turn keyclick on */
-+ #define KBD_CMD_NOCLICK 11 /* turn keyclick off */
-+ #define KBD_CMD_SETLED 14 /* set LED state (type 4 kbd) */
-+ #define KBD_CMD_GLAYOUT 15 /* get DIP switch (type 4 kbd) */
-+
-+ #define LED_NUM_LOCK 0x1
-+ #if !defined(Lynx) || !defined(LED_COMPOSE)
-+ #define LED_COMPOSE 0x2
-+ #endif
-+ #define LED_SCROLL_LOCK 0x4
-+ #define LED_CAPS_LOCK 0x8
-diff -cPr --exclude-from=Excl.include /mnt/DEV_OS.microSPARC/usr/include/kbio.h /usr/include/kbio.h
-*** /mnt/DEV_OS.microSPARC/usr/include/kbio.h
---- /usr/include/kbio.h Wed Aug 14 16:29:26 1996
-***************
-*** 0 ****
---- 1,115 ----
-+ /* $NetBSD: kbio.h,v 1.4 1995/05/10 16:07:27 pk Exp $ */
-+
-+ /*
-+ * Copyright (c) 1992, 1993
-+ * The Regents of the University of California. All rights reserved.
-+ *
-+ * This software was developed by the Computer Systems Engineering group
-+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
-+ * contributed to Berkeley.
-+ *
-+ * All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Lawrence Berkeley Laboratory.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Berkeley and its contributors.
-+ * 4. Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * @(#)kbio.h 8.1 (Berkeley) 6/11/93
-+ */
-+
-+ /*
-+ * The following is a minimal emulation of Sun's `kio' structures
-+ * and related operations necessary to make X11 happy (i.e., make it
-+ * compile, and make old X11 binaries run).
-+ */
-+
-+ /*
-+ * The kiockey structure apparently gets and/or sets keyboard mappings.
-+ * It seems to be kind of useless, but X11 uses it (according to the
-+ * comments) to figure out when a Sun 386i has a type-4 keyboard but
-+ * claims to have a type-3 keyboard. We need just enough to cause the
-+ * appropriate ioctl to return the appropriate magic value.
-+ *
-+ * KIOCGETKEY fills in kio_entry from kio_station. Not sure what tablemask
-+ * is for; X sets it before the call, so it is not an output, but we do not
-+ * care anyway. KIOCSDIRECT is supposed to tell the kernel whether to send
-+ * keys to the console or to X; we just send them to X whenever the keyboard
-+ * is open at all. (XXX may need to change this later)
-+ *
-+ * Keyboard commands and types are defined in kbd.h as they are actually
-+ * real hardware commands and type numbers.
-+ */
-+ struct okiockey { /* Out-dated key translation structure */
-+ int kio_tablemask; /* whatever */
-+ u_char kio_station; /* key number */
-+ u_char kio_entry; /* HOLE if not present */
-+ char kio_text[10]; /* the silly escape sequences (unsupported) */
-+ };
-+
-+ struct kiockey {
-+ int kio_tablemask; /* whatever */
-+ u_char kio_station; /* key number */
-+ u_short kio_entry; /* HOLE if not present */
-+ char kio_text[10]; /* the silly escape sequences (unsupported) */
-+ };
-+
-+ /*
-+ * Values for kio_tablemask. These determine which table to read/modify
-+ * in KIOC[SG]KEY ioctls. Currently, we only have "non-shift" and "shift"
-+ * tables.
-+ */
-+ #define KIOC_NOMASK 0x0
-+ #define KIOC_CAPSMASK 0x1
-+ #define KIOC_SHIFTMASK 0xe
-+ #define KIOC_CTRLMASK 0x30
-+ #define KIOC_ALTGMASK 0x200
-+ #define KIOC_NUMLMASK 0x800
-+
-+ #define HOLE 0x302 /* value for kio_entry to say `really type 3' */
-+
-+ #define KIOCTRANS _IOW('k', 0, int) /* set translation mode */
-+ /* (we only accept TR_UNTRANS_EVENT) */
-+ #define KIOCGETKEY _IOWR('k', 2, struct okiockey) /* fill in kio_entry */
-+ #define KIOCGTRANS _IOR('k', 5, int) /* get translation mode */
-+ #define KIOCCMD _IOW('k', 8, int) /* X uses this to ring bell */
-+ #define KIOCTYPE _IOR('k', 9, int) /* get keyboard type */
-+ #define KIOCSDIRECT _IOW('k', 10, int) /* keys to console? */
-+ #define KIOCSKEY _IOW('k', 12, struct kiockey) /* set xlat mode */
-+ #ifndef Lynx
-+ #define KIOCGKEY _IOWR('k', 13, struct kiockey) /* get xlat mode */
-+ #endif
-+ #define KIOCLAYOUT _IOR('k', 20, int) /* get keyboard layout */
-+ #define KIOCSLED _IOW('k', 14, char) /* set LED state */
-+ #define KIOCGLED _IOR('k', 15, char) /* get LED state */
-+
-+ #define TR_NONE 0 /* X compat, unsupported */
-+ #define TR_ASCII 1 /* X compat, unsupported */
-+ #define TR_EVENT 2 /* X compat, unsupported */
-+ #define TR_UNTRANS_EVENT 3
-diff -cPr --exclude=*.[oa] /mnt/DEV_OS.microSPARC/sys/drivers/console/Makefile sys/drivers/console/Makefile
-*** /mnt/DEV_OS.microSPARC/sys/drivers/console/Makefile Fri Apr 26 23:27:51 1996
---- sys/drivers/console/Makefile Fri Aug 2 09:03:05 1996
-***************
-*** 31,37 ****
- # (keyboard) duart. The mouse is attached to this port. It must be
- # defined for the X server to work.
- #
-! SPECIAL_CFLAGS = -DMOUSESUPPORT -O
-
- FILES = atcdrvr.xxx gfont.xxx atkey.xxx atbeep.xxx atterm.xxx atutils.xxx
- HFILES =
---- 31,37 ----
- # (keyboard) duart. The mouse is attached to this port. It must be
- # defined for the X server to work.
- #
-! SPECIAL_CFLAGS = -DMOUSESUPPORT -DXSERVERSUPPORT -O
-
- FILES = atcdrvr.xxx gfont.xxx atkey.xxx atbeep.xxx atterm.xxx atutils.xxx
- HFILES =
-***************
-*** 117,122 ****
---- 117,130 ----
-
- # Just Do It.
- FORCE:
-+
-+ atkey.kdb.o : atkey.c
-+ $(KERN_CC) -c -o atkey.kdb.o $(SPECIAL_CFLAGS) $(KERN_CFLAGS) \
-+ $(SPECIAL_INCLUDES) $(KERN_INCLUDES) -DSKDB atkey.c
-+
-+ atkey.nokdb.o : atkey.c
-+ $(KERN_CC) -c -o atkey.kdb.o $(SPECIAL_CFLAGS) $(KERN_CFLAGS) \
-+ $(SPECIAL_INCLUDES) $(KERN_INCLUDES) atkey.c
-
- # Dependencies as of 5/20/1992
-
-diff -cPr --exclude=*.[oa] /mnt/DEV_OS.microSPARC/sys/drivers/console/atc.h sys/drivers/console/atc.h
-*** /mnt/DEV_OS.microSPARC/sys/drivers/console/atc.h Fri Apr 26 23:27:51 1996
---- sys/drivers/console/atc.h Wed Jul 24 11:49:21 1996
-***************
-*** 191,196 ****
---- 191,202 ----
- #ifdef MOUSESUPPORT
- struct ttystatics mousechannel;
- #endif /* MOUSESUPPORT */
-+ #ifdef XSERVERSUPPORT
-+ int kbd_pending;
-+ int kbd_id; /* keyboard type */
-+ int kbd_layout; /* layout on type 4 */
-+ int kbd_click; /* kbd click on? */
-+ #endif
- };
-
- struct kbd_registers_type {
-diff -cPr --exclude=*.[oa] /mnt/DEV_OS.microSPARC/sys/drivers/console/atcdrvr.c sys/drivers/console/atcdrvr.c
-*** /mnt/DEV_OS.microSPARC/sys/drivers/console/atcdrvr.c Fri Apr 26 23:27:51 1996
---- sys/drivers/console/atcdrvr.c Wed Aug 14 16:28:23 1996
-***************
-*** 270,275 ****
---- 270,279 ----
- #ifdef MOUSESUPPORT
- #include "am8530.h"
- #endif /* MOUSESUPPORT */
-+ #ifdef XSERVERSUPPORT
-+ #include <kbd.h>
-+ #include <kbio.h>
-+ #endif
-
- char *screen_address; /* is this supposed to be in the driver info? */
-
-***************
-*** 537,542 ****
---- 541,550 ----
- int m;
- int ps;
- extern int set_kb_lights();
-+ #ifdef XSERVERSUPPORT
-+ extern int kbd_docmd();
-+ int err;
-+ #endif
-
- if (!atc_flag){ pseterr(EIO); return(SYSERR);}
- #ifdef MOUSESUPPORT
-***************
-*** 586,597 ****
- #ifdef TIOLED
- case TIOLED:
- #endif
- h->curled = *arg;
- if (h->ledstate == -1) {
- if (timeout(set_kb_lights,h,1) != -1)
- h->ledstate = 0;
- }
-! break;
- case VT_OPENQRY:
- if (h->multimode == SCM_ONE) {
- if (!(h->open & 1)) {
---- 594,630 ----
- #ifdef TIOLED
- case TIOLED:
- #endif
-+ #ifdef XSERVERSUPPORT
-+ case KIOCSLED:
-+ #endif
- h->curled = *arg;
- if (h->ledstate == -1) {
- if (timeout(set_kb_lights,h,1) != -1)
- h->ledstate = 0;
- }
-! return OK;
-! #ifdef XSERVERSUPPORT
-! case KIOCTYPE:
-! if (wbounds(arg) < sizeof(int)) {
-! pseterr(EFAULT);
-! return SYSERR;
-! }
-! *(int *)arg = h->kbd_id;
-! return OK;
-! case KIOCLAYOUT:
-! if (wbounds(arg) < sizeof(int)) {
-! pseterr(EFAULT);
-! return SYSERR;
-! }
-! *(int *)arg = h->kbd_layout;
-! return OK;
-! case KIOCCMD:
-! if (err = kbd_docmd(h, *(int *)arg)) {
-! pseterr(err);
-! return SYSERR;
-! }
-! return OK;
-! #endif
- case VT_OPENQRY:
- if (h->multimode == SCM_ONE) {
- if (!(h->open & 1)) {
-***************
-*** 810,815 ****
---- 843,854 ----
- h->open = 0;
- h->break_code = 0;
- h->info = info;
-+ #ifdef XSERVERSUPPORT
-+ h->kbd_pending = 0;
-+ h->kbd_id = KB_SUN4; /* query KBD later.... */
-+ h->kbd_layout = 0; /* US_ASCII */
-+ h->kbd_click = 0; /* silent movie */
-+ #endif
- #ifdef MOUSESUPPORT
- tmgr_install(&h->mousechannel, &info->sg, 0, mouse_xmit_ena, h);
- #endif /* MOUSESUPPORT */
-diff -cPr --exclude=*.[oa] /mnt/DEV_OS.microSPARC/sys/drivers/console/atkey.c sys/drivers/console/atkey.c
-*** /mnt/DEV_OS.microSPARC/sys/drivers/console/atkey.c Fri Apr 26 23:27:51 1996
---- sys/drivers/console/atkey.c Mon Sep 23 09:19:36 1996
-***************
-*** 162,167 ****
---- 162,171 ----
- #ifdef MOUSESUPPORT
- #include "am8530.h"
- #endif /* MOUSESUPPORT */
-+ #ifdef XSERVERSUPPORT
-+ #include <kbd.h>
-+ #include <kbio.h>
-+ #endif
-
- #define NOTHING_USEFUL -1
- #define FILL NOTHING_USEFUL
-***************
-*** 474,480 ****
- #undef DEBUG
-
- j = *(volatile unsigned char *)KV_KBD_DATA;
-!
- /* Do the quick scan mode check first. If scanning, stuff and exit */
- screen_num = (h->g - &h->screen[0]);
- if (h->screen[screen_num].scan_mode) {
---- 478,503 ----
- #undef DEBUG
-
- j = *(volatile unsigned char *)KV_KBD_DATA;
-! #ifdef XSERVERSUPPORT
-! if (h->kbd_pending == KBD_RESET) {
-! h->kbd_pending = 0;
-! h->kbd_id = j;
-! if (j == KB_SUN4) {
-! extern int byte_to_keyboard();
-! timeout(byte_to_keyboard, KBD_CMD_GLAYOUT, 1);
-! }
-! goto EOIandExit;
-! }
-! if (h->kbd_pending == KBD_LAYOUT) {
-! h->kbd_pending = 0;
-! h->kbd_layout = j;
-! goto EOIandExit;
-! }
-! if (j == KBD_RESET || j == KBD_LAYOUT) {
-! h->kbd_pending = j;
-! goto EOIandExit;
-! }
-! #endif
- /* Do the quick scan mode check first. If scanning, stuff and exit */
- screen_num = (h->g - &h->screen[0]);
- if (h->screen[screen_num].scan_mode) {
-diff -cPr --exclude=*.[oa] /mnt/DEV_OS.microSPARC/sys/drivers/console/atutils.c sys/drivers/console/atutils.c
-*** /mnt/DEV_OS.microSPARC/sys/drivers/console/atutils.c Fri Apr 26 23:27:51 1996
---- sys/drivers/console/atutils.c Tue Aug 13 11:54:38 1996
-***************
-*** 456,462 ****
- }
-
-
-! static int byte_to_keyboard(byt)
- unsigned char byt;
- {
- int i;
---- 456,465 ----
- }
-
-
-! #ifndef XSERVERSUPPORT
-! static
-! #endif
-! int byte_to_keyboard(byt)
- unsigned char byt;
- {
- int i;
-***************
-*** 495,497 ****
---- 498,544 ----
- break;
- }
- }
-+
-+ #ifdef XSERVERSUPPORT
-+ #include <kbd.h>
-+ #include <kbio.h>
-+
-+ /*
-+ * Execute a keyboard command; return 0 on success.
-+ */
-+ kbd_docmd(h, cmd)
-+ register struct kdhglobals *h;
-+ int cmd;
-+ {
-+ switch (cmd) {
-+
-+ case KBD_CMD_BELL:
-+ case KBD_CMD_NOBELL:
-+ /* Supported by type 2, 3, and 4 keyboards */
-+ break;
-+
-+ case KBD_CMD_CLICK:
-+ /* Unsupported by type 2 keyboards */
-+ if (h->kbd_id != KB_SUN2) {
-+ h->kbd_click = 1;
-+ break;
-+ }
-+ return (EINVAL);
-+
-+ case KBD_CMD_NOCLICK:
-+ /* Unsupported by type 2 keyboards */
-+ if (h->kbd_id != KB_SUN2) {
-+ h->kbd_click = 0;
-+ break;
-+ }
-+ return (EINVAL);
-+
-+ default:
-+ return (EINVAL); /* ENOTTY? EOPNOTSUPP? */
-+ }
-+
-+ if (timeout(byte_to_keyboard, cmd, 1) < 0)
-+ return (ENOSPC); /* ERESTART? */
-+ return (0);
-+ }
-+ #endif
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sun.h b/nx-X11/programs/Xserver/hw/sunLynx/sun.h
deleted file mode 100644
index edca59c19..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sun.h
+++ /dev/null
@@ -1,486 +0,0 @@
-/* $Xorg: sun.h,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-
-/* This is sun.h modified for LynxOS */
-
-/*-
- * Copyright (c) 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sun.h,v 3.7 2001/07/25 15:05:02 dawes Exp $ */
-
-#ifndef _SUN_H_
-#define _SUN_H_
-
-/* X headers */
-#include <X11/Xos.h>
-#undef index /* don't mangle silly Sun structure member names */
-#include <X11/X.h>
-#include <X11/Xproto.h>
-
-/* general system headers */
-#ifndef NOSTDHDRS
-# include <stdlib.h>
-#else
-# include <malloc.h>
-extern char *getenv();
-#endif
-
-/* system headers common to both SunOS and Solaris */
-#include <sys/param.h>
-#include <sys/file.h>
-#ifndef Lynx
-# include <sys/filio.h>
-#else
-# include <sys/termio.h> /* include this before ioctl.h ... */
-#endif
-#include <sys/ioctl.h>
-#include <sys/resource.h>
-
-#ifdef SVR4
-# ifdef X_POSIX_C_SOURCE
-# define _POSIX_C_SOURCE X_POSIX_C_SOURCE
-# include <signal.h>
-# undef _POSIX_C_SOURCE
-# else
-# define _POSIX_SOURCE
-# include <signal.h>
-# undef _POSIX_SOURCE
-# endif
-#endif
-
-#include <fcntl.h>
-
-#ifndef __bsdi__
-# if !defined(__NetBSD__) && !defined(__OpenBSD__)
-# ifndef Lynx
-# ifndef i386
-# include <poll.h>
-# else
-# include <sys/poll.h>
-# endif
-# endif
-# endif
-#else
-# include <unistd.h>
-#endif
-
-#include <errno.h>
-#include <memory.h>
-
-/*
- * Sun specific headers Sun moved in Solaris, and are different for NetBSD.
- *
- * Even if only needed by one source file, I have put them here
- * to simplify finding them...
- */
-#ifdef SVR4
-# include <sys/fbio.h>
-# include <sys/kbd.h>
-# include <sys/kbio.h>
-# include <sys/msio.h>
-# include <sys/vuid_event.h>
-# include <sys/memreg.h>
-# include <stropts.h>
-# define usleep(usec) poll((struct pollfd *) 0, (size_t) 0, usec / 1000)
-#else
-# if !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(Lynx)
-# include <sun/fbio.h>
-# include <sundev/kbd.h>
-# include <sundev/kbio.h>
-# include <sundev/msio.h>
-# include <sundev/vuid_event.h>
-# include <pixrect/pixrect.h>
-# include <pixrect/memreg.h>
-extern int ioctl();
-extern int getrlimit();
-extern int setrlimit();
-extern int getpagesize();
-# else
-# if defined (__NetBSD__) || defined (__OpenBSD__)
-# include <machine/fbio.h>
-# include <machine/kbd.h>
-# include <machine/kbio.h>
-# include <machine/vuid_event.h>
-# endif
-# ifdef __bsdi__
-# include <sys/fbio.h>
-# include </sys/sparc/dev/kbd.h>
-# include </sys/sparc/dev/kbio.h>
-# include </sys/sparc/dev/vuid_event.h>
-# endif
-# ifdef Lynx
-# ifndef __P
-# define __P(x) x
-# endif
-# include <signal.h>
-# ifdef PATCHED_CONSOLE
-# include <kbio.h>
-# include <kbd.h>
-# else
-# define KB_SUN2 2 /* type 2 keyboard */
-# define KB_SUN3 3 /* type 3 keyboard */
-# define KB_SUN4 4 /* type 4 keyboard */
-# define KIOCSLED TIOCLED
-# define LED_NUM_LOCK NUM_LOCK
-# define LED_SCROLL_LOCK SCROL_LOCK
-# define LED_CAPS_LOCK CAPS_LOCK
-# define LED_COMPOSE COMPOSE_LED
-# endif
-# include <smem.h>
-# include "fbio.h"
-# include "vuid_event.h"
-# define FBIORESET _IO('F', 29)
-# endif
-# endif
-#endif
-extern int gettimeofday();
-
-/*
- * Server specific headers
- */
-#include "misc.h"
-#undef abs /* don't munge function prototypes in headers, sigh */
-#include "scrnintstr.h"
-#ifdef NEED_EVENTS
-# include "inputstr.h"
-#endif
-#include "input.h"
-#include "colormapst.h"
-#include "colormap.h"
-#include "cursorstr.h"
-#include "cursor.h"
-#include "dixstruct.h"
-#include "dix.h"
-#include "opaque.h"
-#include "resource.h"
-#include "servermd.h"
-#include "windowstr.h"
-
-/*
- * ddx specific headers
- */
-#ifndef PSZ
-#define PSZ 8
-#endif
-
-#include "mi/mibstore.h"
-#include "mi/mipointer.h"
-
-extern int monitorResolution;
-
-
-/* Frame buffer devices */
-#ifdef SVR4
-# define CGTWO0DEV "/dev/fbs/cgtwo0"
-# define CGTWO1DEV "/dev/fbs/cgtwo1"
-# define CGTWO2DEV "/dev/fbs/cgtwo2"
-# define CGTWO3DEV "/dev/fbs/cgtwo3"
-# define CGTHREE0DEV "/dev/fbs/cgthree0"
-# define CGTHREE1DEV "/dev/fbs/cgthree1"
-# define CGTHREE2DEV "/dev/fbs/cgthree2"
-# define CGTHREE3DEV "/dev/fbs/cgthree3"
-# define CGFOUR0DEV "/dev/fbs/cgfour0"
-# define CGSIX0DEV "/dev/fbs/cgsix0"
-# define CGSIX1DEV "/dev/fbs/cgsix1"
-# define CGSIX2DEV "/dev/fbs/cgsix2"
-# define CGSIX3DEV "/dev/fbs/cgsix3"
-# define BWTWO0DEV "/dev/fbs/bwtwo0"
-# define BWTWO1DEV "/dev/fbs/bwtwo1"
-# define BWTWO2DEV "/dev/fbs/bwtwo2"
-# define BWTWO3DEV "/dev/fbs/bwtwo3"
-# define CGEIGHT0DEV "/dev/fbs/cgeight0"
-#else
-# define CGTWO0DEV "/dev/cgtwo0"
-# define CGTWO1DEV "/dev/cgtwo1"
-# define CGTWO2DEV "/dev/cgtwo2"
-# define CGTWO3DEV "/dev/cgtwo3"
-# define CGTHREE0DEV "/dev/cgthree0"
-# define CGTHREE1DEV "/dev/cgthree1"
-# define CGTHREE2DEV "/dev/cgthree2"
-# define CGTHREE3DEV "/dev/cgthree3"
-# define CGFOUR0DEV "/dev/cgfour0"
-# define CGSIX0DEV "/dev/cgsix0"
-# define CGSIX1DEV "/dev/cgsix1"
-# define CGSIX2DEV "/dev/cgsix2"
-# define CGSIX3DEV "/dev/cgsix3"
-# define BWTWO0DEV "/dev/bwtwo0"
-# define BWTWO1DEV "/dev/bwtwo1"
-# define BWTWO2DEV "/dev/bwtwo2"
-# define BWTWO3DEV "/dev/bwtwo3"
-# define CGEIGHT0DEV "/dev/cgeight0"
-#endif
-
-/*
- * MAXEVENTS is the maximum number of events the mouse and keyboard functions
- * will read on a given call to their GetEvents vectors.
- */
-#ifndef Lynx
-#define MAXEVENTS 32
-#else
-/* currently our mouse stuff is pretty naive, so we need a lot of events */
-#define MAXEVENTS 256
-#endif
-
-/*
- * Data private to any sun keyboard.
- */
-typedef struct {
- int fd;
- int type; /* Type of keyboard */
- int layout; /* The layout of the keyboard */
- int click; /* kbd click save state */
- Leds leds; /* last known LED state */
-} sunKbdPrivRec, *sunKbdPrivPtr;
-
-extern sunKbdPrivRec sunKbdPriv;
-
-/*
- * Data private to any sun pointer device.
- */
-typedef struct {
- int fd;
- int bmask; /* last known button state */
-} sunPtrPrivRec, *sunPtrPrivPtr;
-
-extern sunPtrPrivRec sunPtrPriv;
-
-typedef struct {
- BYTE key;
- CARD8 modifiers;
-} SunModmapRec;
-
-typedef struct {
- int width, height;
- Bool has_cursor;
- CursorPtr pCursor; /* current cursor */
-} sunCursorRec, *sunCursorPtr;
-
-typedef struct {
- ColormapPtr installedMap;
- CloseScreenProcPtr CloseScreen;
- void (*UpdateColormap)();
- sunCursorRec hardwareCursor;
- Bool hasHardwareCursor;
-} sunScreenRec, *sunScreenPtr;
-
-#define GetScreenPrivate(s) ((sunScreenPtr) ((s)->devPrivates[sunScreenIndex].ptr))
-#define SetupScreen(s) sunScreenPtr pPrivate = GetScreenPrivate(s)
-
-typedef struct {
-#ifndef Lynx
- unsigned char* fb; /* Frame buffer itself */
-#else
- unsigned char* fbuf; /* Frame buffer itself */
- void* ramdac; /* Color LookUp table */
- void* fb; /* GX FB control registers:
- * sunGX.c relies on this name
- */
- void* tec; /* GX TEC registers */
- void* thc; /* GX THC registers */
- void* fhc; /* GX FHC registers */
-#endif
- int fd; /* frame buffer for ioctl()s, */
- struct fbtype info; /* Frame buffer characteristics */
- void (*EnterLeave)();/* screen switch */
- unsigned char* fbPriv; /* fbattr stuff, for the real type */
-} fbFd;
-
-typedef Bool (*sunFbInitProc)(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-
-typedef struct {
- sunFbInitProc init; /* init procedure for this fb */
- char* name; /* /usr/include/fbio names */
-} sunFbDataRec;
-
-#ifdef XKB
-extern Bool noXkbExtension;
-#endif
-
-extern Bool sunAutoRepeatHandlersInstalled;
-extern long sunAutoRepeatInitiate;
-extern long sunAutoRepeatDelay;
-extern sunFbDataRec sunFbData[];
-extern fbFd sunFbs[];
-extern Bool sunSwapLkeys;
-extern Bool sunFlipPixels;
-extern Bool sunActiveZaphod;
-extern Bool sunFbInfo;
-extern Bool sunCG4Frob;
-extern Bool sunNoGX;
-extern int sunScreenIndex;
-extern int* sunProtected;
-
-extern Bool sunCursorInitialize(
- ScreenPtr /* pScreen */
-);
-
-extern void sunDisableCursor(
- ScreenPtr /* pScreen */
-);
-
-extern int sunChangeKbdTranslation(
- int /* fd */,
- Bool /* makeTranslated */
-);
-
-extern void sunNonBlockConsoleOff(
-#if defined(SVR4) || defined(CSRG_BASED) || defined(Lynx)
- void
-#else
- char* /* arg */
-#endif
-);
-
-extern void sunEnqueueEvents(
- void
-);
-
-extern void sunEnqueueKbdEvents(
- void
-);
-
-extern void sunEnqueueMseEvents(
- void
-);
-
-extern int sunGXInit(
- ScreenPtr /* pScreen */,
- fbFd* /* fb */
-);
-
-extern Bool sunSaveScreen(
- ScreenPtr /* pScreen */,
- int /* on */
-);
-
-extern Bool sunScreenInit(
- ScreenPtr /* pScreen */
-);
-
-extern pointer sunMemoryMap(
- size_t /* len */,
- off_t /* off */,
- int /* fd */
-#ifdef Lynx
- , char * /* name */
-#endif
-);
-
-extern Bool sunScreenAllocate(
- ScreenPtr /* pScreen */
-);
-
-extern Bool sunInitCommon(
- int /* scrn */,
- ScreenPtr /* pScrn */,
- off_t /* offset */,
- Bool (* /* init1 */)(),
- void (* /* init2 */)(),
- Bool (* /* cr_cm */)(),
- Bool (* /* save */)(),
- int /* fb_off */
-);
-
-extern Firm_event* sunKbdGetEvents(
- int /* fd */,
- Bool /* on */,
- int* /* pNumEvents */,
- Bool* /* pAgain */
-);
-
-extern Firm_event* sunMouseGetEvents(
- int /* fd */,
- Bool /* on */,
- int* /* pNumEvents */,
- Bool* /* pAgain */
-);
-
-extern void sunKbdEnqueueEvent(
- DeviceIntPtr /* device */,
- Firm_event* /* fe */
-);
-
-extern void sunMouseEnqueueEvent(
- DeviceIntPtr /* device */,
- Firm_event* /* fe */
-);
-
-extern int sunKbdProc(
- DeviceIntPtr /* pKeyboard */,
- int /* what */
-);
-
-extern int sunMouseProc(
- DeviceIntPtr /* pMouse */,
- int /* what */
-);
-
-extern void sunKbdWait(
- void
-);
-
-/*-
- * TVTOMILLI(tv)
- * Given a struct timeval, convert its time into milliseconds...
- */
-#define TVTOMILLI(tv) (((tv).tv_usec/1000)+((tv).tv_sec*1000))
-
-extern Bool sunCfbSetupScreen(
- ScreenPtr /* pScreen */,
- pointer /* pbits */, /* pointer to screen bitmap */
- int /* xsize */, /* in pixels */
- int /* ysize */,
- int /* dpix */, /* dots per inch */
- int /* dpiy */, /* dots per inch */
- int /* width */, /* pixel width of frame buffer */
- int /* bpp */ /* bits per pixel of root */
-);
-
-extern Bool sunCfbFinishScreenInit(
- ScreenPtr /* pScreen */,
- pointer /* pbits */, /* pointer to screen bitmap */
- int /* xsize */, /* in pixels */
- int /* ysize */,
- int /* dpix */, /* dots per inch */
- int /* dpiy */, /* dots per inch */
- int /* width */, /* pixel width of frame buffer */
- int /* bpp */ /* bits per pixel of root */
-);
-
-extern Bool sunCfbScreenInit(
- ScreenPtr /* pScreen */,
- pointer /* pbits */, /* pointer to screen bitmap */
- int /* xsize */, /* in pixels */
- int /* ysize */,
- int /* dpix */, /* dots per inch */
- int /* dpiy */, /* dots per inch */
- int /* width */, /* pixel width of frame buffer */
- int /* bpp */ /* bits per pixel of root */
-);
-
-extern void sunInstallColormap(
- ColormapPtr /* cmap */
-);
-
-extern void sunUninstallColormap(
- ColormapPtr /* cmap */
-);
-
-extern int sunListInstalledColormaps(
- ScreenPtr /* pScreen */,
- Colormap* /* pCmapList */
-);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyCfb.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyCfb.c
deleted file mode 100644
index 48f63c759..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyCfb.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* $Xorg: sunLyCfb.c,v 1.4 2001/02/09 02:04:44 xorgcvs Exp $ */
-/*
- * This is sunCfb.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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, and that the name of Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyCfb.c,v 3.4 2001/01/17 22:36:53 dawes Exp $ */
-
-/*
-Copyright 1990, 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 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/*
- * Copyright 1987 by the Regents of the University of California
- * Copyright 1987 by Adam de Boor, UC Berkeley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/****************************************************************/
-/* Modified from sunCG4C.c for X11R3 by Tom Jarmolowski */
-/****************************************************************/
-
-/*
- * Copyright 1991, 1992, 1993 Kaleb S. Keithley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. Kaleb S. Keithley makes no
- * representations about the suitability of this software for
- * any purpose. It is provided "as is" without express or
- * implied warranty.
- */
-
-#include "sun.h"
-#include "cfb/cfb.h"
-#include "mi/miline.h"
-
-#define GXZEROLINEBIAS (OCTANT1 | OCTANT3 | OCTANT4 | OCTANT6)
-
-static void CGUpdateColormap(pScreen, dex, count, rmap, gmap, bmap)
- ScreenPtr pScreen;
- int dex, count;
- u_char *rmap, *gmap, *bmap;
-{
- struct fbcmap sunCmap;
-
- sunCmap.index = dex;
- sunCmap.count = count;
- sunCmap.red = &rmap[dex];
- sunCmap.green = &gmap[dex];
- sunCmap.blue = &bmap[dex];
-
- if (sunIoctl(&sunFbs[pScreen->myNum], FBIOPUTCMAP, &sunCmap) < 0) {
- Error("CGUpdateColormap");
- FatalError( "CGUpdateColormap: FBIOPUTCMAP failed\n" );
- }
-}
-
-void sunInstallColormap(cmap)
- ColormapPtr cmap;
-{
- SetupScreen(cmap->pScreen);
- register int i;
- register Entry *pent;
- register VisualPtr pVisual = cmap->pVisual;
- u_char rmap[256], gmap[256], bmap[256];
- unsigned long rMask, gMask, bMask;
- int oRed, oGreen, oBlue;
-
- if (cmap == pPrivate->installedMap)
- return;
- if (pPrivate->installedMap)
- WalkTree(pPrivate->installedMap->pScreen, TellLostMap,
- (pointer) &(pPrivate->installedMap->mid));
- if ((pVisual->class | DynamicClass) == DirectColor) {
- if (pVisual->ColormapEntries < 256) {
- rMask = pVisual->redMask;
- gMask = pVisual->greenMask;
- bMask = pVisual->blueMask;
- oRed = pVisual->offsetRed;
- oGreen = pVisual->offsetGreen;
- oBlue = pVisual->offsetBlue;
- } else {
- rMask = gMask = bMask = 255;
- oRed = oGreen = oBlue = 0;
- }
- for (i = 0; i < 256; i++) {
- rmap[i] = cmap->red[(i & rMask) >> oRed].co.local.red >> 8;
- gmap[i] = cmap->green[(i & gMask) >> oGreen].co.local.green >> 8;
- bmap[i] = cmap->blue[(i & bMask) >> oBlue].co.local.blue >> 8;
- }
- } else {
- for (i = 0, pent = cmap->red;
- i < pVisual->ColormapEntries;
- i++, pent++) {
- if (pent->fShared) {
- rmap[i] = pent->co.shco.red->color >> 8;
- gmap[i] = pent->co.shco.green->color >> 8;
- bmap[i] = pent->co.shco.blue->color >> 8;
- }
- else {
- rmap[i] = pent->co.local.red >> 8;
- gmap[i] = pent->co.local.green >> 8;
- bmap[i] = pent->co.local.blue >> 8;
- }
- }
- }
- pPrivate->installedMap = cmap;
- (*pPrivate->UpdateColormap) (cmap->pScreen, 0, 256, rmap, gmap, bmap);
- WalkTree(cmap->pScreen, TellGainedMap, (pointer) &(cmap->mid));
-}
-
-void sunUninstallColormap(cmap)
- ColormapPtr cmap;
-{
- SetupScreen(cmap->pScreen);
- if (cmap == pPrivate->installedMap) {
- Colormap defMapID = cmap->pScreen->defColormap;
-
- if (cmap->mid != defMapID) {
- ColormapPtr defMap = (ColormapPtr) LookupIDByType(defMapID,
- RT_COLORMAP);
-
- if (defMap)
- (*cmap->pScreen->InstallColormap)(defMap);
- else
- ErrorF("sunFbs: Can't find default colormap\n");
- }
- }
-}
-
-int sunListInstalledColormaps(pScreen, pCmapList)
- ScreenPtr pScreen;
- Colormap *pCmapList;
-{
- SetupScreen(pScreen);
- *pCmapList = pPrivate->installedMap->mid;
- return (1);
-}
-
-static void CGStoreColors(pmap, ndef, pdefs)
- ColormapPtr pmap;
- int ndef;
- xColorItem *pdefs;
-{
- SetupScreen(pmap->pScreen);
- u_char rmap[256], gmap[256], bmap[256];
- xColorItem expanddefs[256];
- register int i;
-
- if (pPrivate->installedMap != NULL && pPrivate->installedMap != pmap)
- return;
- if ((pmap->pVisual->class | DynamicClass) == DirectColor) {
- ndef = cfbExpandDirectColors(pmap, ndef, pdefs, expanddefs);
- pdefs = expanddefs;
- }
- while (ndef--) {
- i = pdefs->pixel;
- rmap[i] = pdefs->red >> 8;
- gmap[i] = pdefs->green >> 8;
- bmap[i] = pdefs->blue >> 8;
- (*pPrivate->UpdateColormap) (pmap->pScreen, i, 1, rmap, gmap, bmap);
- pdefs++;
- }
-}
-
-static void CGScreenInit (pScreen)
- ScreenPtr pScreen;
-{
-#ifndef STATIC_COLOR /* { */
- SetupScreen (pScreen);
- pScreen->InstallColormap = sunInstallColormap;
- pScreen->UninstallColormap = sunUninstallColormap;
- pScreen->ListInstalledColormaps = sunListInstalledColormaps;
- pScreen->StoreColors = CGStoreColors;
- pPrivate->UpdateColormap = CGUpdateColormap;
- if (sunFlipPixels) {
- Pixel pixel = pScreen->whitePixel;
- pScreen->whitePixel = pScreen->blackPixel;
- pScreen->blackPixel = pixel;
- }
-#endif /* } */
-}
-
-static void checkMono (argc, argv)
- int argc;
- char** argv;
-{
- int i;
-
- for (i = 1; i < argc; i++)
- if (strcmp (argv[i], "-mono") == 0)
- ErrorF ("-mono not appropriate for CG3/CG6\n");
-}
-
-Bool sunCG3Init (screen, pScreen, argc, argv)
- int screen; /* what screen am I going to be */
- ScreenPtr pScreen; /* The Screen to initialize */
- int argc; /* The number of the Server's arguments. */
- char **argv; /* The arguments themselves. Don't change! */
-{
- unsigned long addr;
-
- checkMono (argc, argv);
- sunFbs[screen].EnterLeave = (void (*)())NoopDDA;
- if (ioctl(sunFbs[screen].fd, TIO_QUERYLOC, &addr) < 0) {
- perror("TIO_QUERYLOC");
- FatalError("%s:%d can't query FB addr sunFbs[%d].fd=%d\n",
- __FILE__, __LINE__, screen, sunFbs[screen]);
- }
- return sunInitCommon (screen, pScreen, (off_t) addr,
- sunCfbScreenInit, CGScreenInit,
- cfbCreateDefColormap, sunSaveScreen, 0);
-}
-
-Bool sunCG6Init (screen, pScreen, argc, argv)
- int screen; /* The index of pScreen in the ScreenInfo */
- ScreenPtr pScreen; /* The Screen to initialize */
- int argc; /* The number of the Server's arguments. */
- char** argv; /* The arguments themselves. Don't change! */
-{
- unsigned long dacoffset;
- unsigned long addr;
- pointer fbc;
- pointer fhc;
- pointer fb;
-
- checkMono (argc, argv);
- if (!sunScreenAllocate (pScreen))
- return FALSE;
- if (!sunFbs[screen].fbuf) {
- if (ioctl(sunFbs[screen].fd, TIO_QUERYLOC, &addr) < 0) {
- perror("TIO_QUERYLOC");
- FatalError("%s:%d can't query FB addr sunFbs[%d].fd=%d\n",
- __FILE__, __LINE__, screen, sunFbs[screen]);
- }
- if ((fb = sunMemoryMap(0x00100000, (off_t) addr + 0x00800000UL,
- sunFbs[screen].fd, "FB")) == NULL)
- return FALSE;
-
- if ((fbc = sunMemoryMap(0x2000, (off_t) addr + 0x00700000UL,
- sunFbs[screen].fd, "FBC_TEC")) == NULL)
- return FALSE;
-
- if ((fhc = sunMemoryMap(0x2000, (off_t) addr + 0x00300000UL,
- sunFbs[screen].fd, "FHC_THC")) == NULL)
- return FALSE;
-
- sunFbs[screen].fhc = fhc;
- sunFbs[screen].thc = (char *)fhc + 0x1000;
- sunFbs[screen].fb = fbc;
- sunFbs[screen].tec = (char *)fbc + 0x1000;
- sunFbs[screen].fbuf = fb;
-
- if (ioctl(sunFbs[screen].fd, TIO_QUERYRAMDAC, &dacoffset) < 0)
- FatalError("can't query DAC addr\n");
- if ((sunFbs[screen].ramdac =
- sunMemoryMap((size_t) sunFbs[screen].info.fb_cmsize * 3,
- (unsigned long)addr + dacoffset,
- sunFbs[screen].fd, "DAC")) == NULL)
- return FALSE;
- }
-
- sunFbs[screen].EnterLeave = (void (*)())NoopDDA;
- if (!sunCfbSetupScreen (pScreen,
- sunFbs[screen].fbuf,
- sunFbs[screen].info.fb_width,
- sunFbs[screen].info.fb_height,
- monitorResolution, monitorResolution,
- sunFbs[screen].info.fb_width,
- sunFbs[screen].info.fb_depth))
- return FALSE;
- if (sunNoGX == FALSE) {
- /* cleanup CG& hardware state */
- if (sunIoctl(&sunFbs[screen], FBIORESET, 0) < 0)
- perror("FBIORESET");
- if (!sunGXInit (pScreen, &sunFbs[screen]))
- return FALSE;
- }
- if (!sunCfbFinishScreenInit(pScreen,
- sunFbs[screen].fbuf,
- sunFbs[screen].info.fb_width,
- sunFbs[screen].info.fb_height,
- monitorResolution, monitorResolution,
- sunFbs[screen].info.fb_width,
- sunFbs[screen].info.fb_depth))
- return FALSE;
- miInitializeBackingStore(pScreen);
- if (sunNoGX == FALSE) {
- miSetZeroLineBias(pScreen, GXZEROLINEBIAS);
- }
- CGScreenInit (pScreen);
- if (!sunScreenInit (pScreen))
- return FALSE;
- sunSaveScreen (pScreen, SCREEN_SAVER_OFF);
- return cfbCreateDefColormap(pScreen);
-}
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyFbs.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyFbs.c
deleted file mode 100644
index 25448d91d..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyFbs.c
+++ /dev/null
@@ -1,292 +0,0 @@
-/* $Xorg: sunLyFbs.c,v 1.4 2001/02/09 02:04:44 xorgcvs Exp $ */
-/*
- * This is sunFbs.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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, and that the name of Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyFbs.c,v 3.6 2001/12/14 19:59:44 dawes Exp $ */
-
-/*
-Copyright 1990, 1993, 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 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/*
- * Copyright 1987 by the Regents of the University of California
- * Copyright 1987 by Adam de Boor, UC Berkeley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/****************************************************************/
-/* Modified from sunCG4C.c for X11R3 by Tom Jarmolowski */
-/****************************************************************/
-
-#include "sun.h"
-#include <smem.h>
-
-int sunScreenIndex;
-
-static unsigned long generation = 0;
-
-pointer sunMemoryMap (
- size_t len,
- off_t off,
- int fd,
- char *name
- )
-{
- int pagemask, mapsize;
- caddr_t addr;
- pointer mapaddr;
-
- pagemask = getpagesize() - 1;
- mapsize = ((int) len + pagemask) & ~pagemask;
- addr = 0;
-
- mapaddr = smem_create(name, (char *)off, mapsize, SM_READ|SM_WRITE);
- if (mapaddr == (pointer) -1) {
- Error ("mapping frame buffer memory");
- (void) close (fd);
- mapaddr = (pointer) NULL;
- }
- return mapaddr;
-}
-
-Bool sunScreenAllocate (
- ScreenPtr pScreen)
-{
- sunScreenPtr pPrivate;
- extern int AllocateScreenPrivateIndex();
-
- if (generation != serverGeneration)
- {
- sunScreenIndex = AllocateScreenPrivateIndex();
- if (sunScreenIndex < 0)
- return FALSE;
- generation = serverGeneration;
- }
- pPrivate = (sunScreenPtr) xalloc (sizeof (sunScreenRec));
- if (!pPrivate)
- return FALSE;
-
- pScreen->devPrivates[sunScreenIndex].ptr = (pointer) pPrivate;
- return TRUE;
-}
-
-Bool sunSaveScreen (
- ScreenPtr pScreen,
- int on)
-{
- int state;
-
- if (on != SCREEN_SAVER_FORCER)
- {
- if (on == SCREEN_SAVER_ON)
- state = 0;
- else
- state = 1;
- (void) sunIoctl(&sunFbs[pScreen->myNum], FBIOSVIDEO, &state);
- }
- return( TRUE );
-}
-
-static Bool closeScreen (i, pScreen)
- int i;
- ScreenPtr pScreen;
-{
- SetupScreen(pScreen);
- Bool ret;
- struct fbcmap sunCmap;
- unsigned char color;
-
- (void) OsSignal (SIGIO, SIG_IGN);
- sunDisableCursor (pScreen);
- pScreen->CloseScreen = pPrivate->CloseScreen;
- ret = (*pScreen->CloseScreen) (i, pScreen);
- (void) (*pScreen->SaveScreen) (pScreen, SCREEN_SAVER_OFF);
- /* probably this doesn't belong here: restore black&white cmap */
- sunCmap.count = 1;
- sunCmap.index = 0;
- sunCmap.red = sunCmap.green = sunCmap.blue = &color;
- color = 0xff;
- (void) sunIoctl(&sunFbs[pScreen->myNum], FBIOPUTCMAP, &sunCmap);
- sunCmap.index = 0xff;
- color = 0;
- (void) sunIoctl(&sunFbs[pScreen->myNum], FBIOPUTCMAP, &sunCmap);
- xfree ((pointer) pPrivate);
- return ret;
-}
-
-Bool sunScreenInit (
- ScreenPtr pScreen)
-{
- SetupScreen(pScreen);
- extern void sunBlockHandler();
- extern void sunWakeupHandler();
- static ScreenPtr autoRepeatScreen;
- extern miPointerScreenFuncRec sunPointerScreenFuncs;
-
- pPrivate->installedMap = 0;
- pPrivate->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = closeScreen;
- pScreen->SaveScreen = sunSaveScreen;
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- /*
- * Block/Unblock handlers
- */
- if (sunAutoRepeatHandlersInstalled == FALSE) {
- autoRepeatScreen = pScreen;
- sunAutoRepeatHandlersInstalled = TRUE;
- }
-
- if (pScreen == autoRepeatScreen) {
- pScreen->BlockHandler = sunBlockHandler;
- pScreen->WakeupHandler = sunWakeupHandler;
- }
-#ifdef XKB
- } else {
- /* this works around a weird behaviour on LynxOS 2.4.0:
- * usually we have no problems using true SIGIO driven mouse input
- * as it is used on the other UN*X Suns. On LynxOS we have a
- * strange behaviour upon the very first server startup after a
- * reboot. We won't get SIGIOs from the mouse device. The mouse
- * will only move if we get SIGIOs from the keyboard.
- * The solution (for now) is to use a WakeupHandler and
- * poll the mouse file descriptor.
- */
- pScreen->WakeupHandler = sunWakeupHandler;
- }
-#endif
- if (!sunCursorInitialize (pScreen))
- miDCInitialize (pScreen, &sunPointerScreenFuncs);
- return TRUE;
-}
-
-Bool sunInitCommon (
- int scrn,
- ScreenPtr pScrn,
- off_t offset,
- Bool (*init1)(),
- void (*init2)(),
- Bool (*cr_cm)(),
- Bool (*save)(),
- int fb_off)
-{
- unsigned char* fb = sunFbs[scrn].fbuf;
- unsigned char* dac = sunFbs[scrn].ramdac;
-
- if (!sunScreenAllocate (pScrn))
- return FALSE;
- if (!fb) {
- if ((fb = sunMemoryMap ((size_t) sunFbs[scrn].info.fb_size,
- (unsigned long)offset + 0x00800000UL,
- sunFbs[scrn].fd, "FB")) == NULL)
- return FALSE;
- sunFbs[scrn].fbuf = fb;
- if (!dac)
- {
- unsigned long dacoffset;
-
- if (ioctl(sunFbs[scrn].fd, TIO_QUERYRAMDAC, &dacoffset) < 0)
- FatalError("can't query DAC addr\n");
- if ((dac = sunMemoryMap((size_t) sunFbs[scrn].info.fb_cmsize * 3,
- (unsigned long)offset + dacoffset,
- sunFbs[scrn].fd, "DAC")) == NULL)
- return FALSE;
-
- sunFbs[scrn].ramdac = dac;
- }
- }
- /* mfbScreenInit() or cfbScreenInit() */
- if (!(*init1)(pScrn, fb + fb_off,
- sunFbs[scrn].info.fb_width,
- sunFbs[scrn].info.fb_height,
- monitorResolution, monitorResolution,
- sunFbs[scrn].info.fb_width,
- sunFbs[scrn].info.fb_depth))
- return FALSE;
- miInitializeBackingStore(pScrn);
- /* sunCGScreenInit() if cfb... */
- if (init2)
- (*init2)(pScrn);
- if (!sunScreenInit(pScrn))
- return FALSE;
- (void) (*save) (pScrn, SCREEN_SAVER_OFF);
- return (*cr_cm)(pScrn);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c
deleted file mode 100644
index 941b363eb..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c
+++ /dev/null
@@ -1,648 +0,0 @@
-/* $Xorg: sunLyInit.c,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-/*
- * This is sunInit.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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, and that the name of Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyInit.c,v 3.8 2001/01/17 22:36:53 dawes Exp $ */
-
-/*
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- *
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-*******************************************************/
-
-#include "sun.h"
-#include "gcstruct.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "cfb.h"
-
-Bool onConsole = FALSE; /* wether stdin is /dev/con */
-
-/* maximum pixmap depth */
-#ifndef SUNMAXDEPTH
-#define SUNMAXDEPTH 8
-#endif
-
-extern Bool sunBW2Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define BW2I sunBW2Init
-#if SUNMAXDEPTH == 1 /* { */
-#define CG3I NULL
-#define CG6I NULL
-#else /* }{ */
-extern Bool sunCG3Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG3I sunCG3Init
-#ifdef FBTYPE_SUNFAST_COLOR /* { */
-extern Bool sunCG6Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG6I sunCG6Init
-#else /* }{ */
-#define CG6I NULL
-#endif /* } */
-#endif /* } */
-
-extern KeySymsRec sunKeySyms[];
-extern SunModmapRec *sunModMaps[];
-extern int sunMaxLayout;
-extern KeySym* sunType4KeyMaps[];
-extern SunModmapRec* sunType4ModMaps[];
-
-static Bool sunDevsInited = FALSE;
-
-Bool sunAutoRepeatHandlersInstalled; /* FALSE each time InitOutput called */
-Bool sunSwapLkeys = FALSE;
-Bool sunFlipPixels = FALSE;
-Bool sunFbInfo = FALSE;
-Bool sunCG4Frob = FALSE;
-Bool sunNoGX = FALSE;
-
-sunKbdPrivRec sunKbdPriv = {
- -1, /* fd */
- -1, /* type */
- -1, /* layout */
- 0, /* click */
- (Leds)0, /* leds */
-};
-
-sunPtrPrivRec sunPtrPriv = {
- -1, /* fd */
- 0 /* Current button state */
-};
-
-/*
- * The name member in the following table corresponds to the
- * FBTYPE_* macros defined in /usr/include/sun/fbio.h file
- */
-sunFbDataRec sunFbData[FBTYPE_LASTPLUSONE] = {
- { NULL, "SUN1BW (bw1)" },
- { NULL, "SUN1COLOR (cg1)" },
- { BW2I, "SUN2BW (bw2)" },
- { NULL, "SUN2COLOR (cg2)" },
- { NULL, "SUN2GP (gp1/gp2)" },
- { NULL, "SUN5COLOR (cg5/386i accel)" },
- { CG3I, "SUN3COLOR (cg3)" },
- { NULL, "MEMCOLOR (cg8)" },
- { NULL, "SUN4COLOR (cg4)" },
- { NULL, "NOTSUN1" },
- { NULL, "NOTSUN2" },
- { NULL, "NOTSUN3" },
- { CG6I, "SUNFAST_COLOR (cg6/gx)" }, /* last we need */
-};
-
-/*
- * a list of devices to try if there is no environment or command
- * line list of devices
- */
-#if SUNMAXDEPTH == 1 /* { */
-static char *fallbackList[] = {
- "/dev/bwtwo",
-};
-#else /* }{ */
-static char *fallbackList[] = {
- "/dev/bwtwo", "/dev/cgthree", "/dev/cgsix",
-};
-#endif /* } */
-
-#define FALLBACK_LIST_LEN sizeof fallbackList / sizeof fallbackList[0]
-
-fbFd sunFbs[MAXSCREENS];
-
-static PixmapFormatRec formats[] = {
- { 1, 1, BITMAP_SCANLINE_PAD } /* 1-bit deep */
-#if SUNMAXDEPTH > 1
- ,{ 8, 8, BITMAP_SCANLINE_PAD} /* 8-bit deep */
-#endif
-};
-#define NUMFORMATS (sizeof formats)/(sizeof formats[0])
-
-/*
- * OpenFrameBuffer --
- * Open a frame buffer according to several rules.
- * Find the device to use by looking in the sunFbData table,
- * an XDEVICE envariable, a -dev switch or using /dev/fb if trying
- * to open screen 0 and all else has failed.
- *
- * Results:
- * The fd of the framebuffer.
- */
-static int OpenFrameBuffer(device, screen)
- char *device; /* e.g. "/dev/cgtwo0" */
- int screen; /* what screen am I going to be */
-{
- int ret;
- unsigned long dacoffset;
- struct fbgattr *fbattr = NULL;
- static int devFbUsed;
- static struct fbgattr bw2 = {
- 0, 0,
- { FBTYPE_SUN2BW, 900, 1152, 1, 0, 0x00100000 },
- { 0, -1},
- -1
- };
- static struct fbgattr cg3 = {
- 0, 0,
- { FBTYPE_SUN3COLOR, 900, 1152, 8, 256, 0x00100000 },
- { 0, -1},
- -1
- };
- static struct fbgattr cg6 = {
- 0, 0,
- { FBTYPE_SUNFAST_COLOR, 900, 1152, 8, 256, 0x00100000 },
- { 0, -1},
- -1
- };
-
-
- sunFbs[screen].fd = sunKbdPriv.fd; /* /dev/con or /dev/kbd */
- devFbUsed = TRUE;
- /* apply some magic to work out what we're running on.
- * why couldn't they just spend some time on a little
- * FBIOGATTR ioctl()
- */
-
- ret = FALSE;
- if (ioctl(sunFbs[screen].fd, TIO_QUERYRAMDAC, &dacoffset) < 0)
- FatalError("can't query DAC addr\n");
- if (dacoffset == 0x400000) {
- if (strcmp(device, "/dev/cgthree") == 0)
- fbattr = &cg3;
- }
- else if (dacoffset == 0x200000) {
- if (strcmp(device, "/dev/cgsix") == 0)
- fbattr = &cg6;
- }
-#ifdef PATCHED_CONSOLE
- else if (dacoffset == 0) {
- if (strcmp(device, "/dev/bw2") == 0)
- fbattr = &bw2;
- }
-#endif
- else
- ErrorF("bogus DAC addr 0x%x, maybe it's the silly BWTWO bug\n", dacoffset);
-
- if (fbattr) {
- ret = TRUE;
- sunFbs[screen].info = fbattr->fbtype;
- }
- sunFbs[screen].fbPriv = (pointer) fbattr;
- if (fbattr && fbattr->fbtype.fb_type < FBTYPE_LASTPLUSONE &&
- !sunFbData[fbattr->fbtype.fb_type].init) {
- int _i;
-
- ret = FALSE;
- for (_i = 0; _i < FB_ATTR_NEMUTYPES; _i++) {
- if (sunFbData[fbattr->emu_types[_i]].init) {
- sunFbs[screen].info.fb_type = fbattr->emu_types[_i];
- ret = TRUE;
- if (sunFbInfo)
- ErrorF ("%s is emulating a %s\n", device,
- sunFbData[fbattr->fbtype.fb_type].name);
- break;
- }
- }
- }
- if (sunFbInfo)
- ErrorF ("%s is really a %s\n", device,
- sunFbData[fbattr ? fbattr->fbtype.fb_type : sunFbs[screen].info.fb_type].name);
- if (!ret)
- sunFbs[screen].fd = -1;
- return ret;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SigIOHandler --
- * Signal handler for SIGIO - input is available.
- *
- * Results:
- * sunSigIO is set - ProcessInputEvents() will be called soon.
- *
- * Side Effects:
- * None
- *
- *-----------------------------------------------------------------------
- */
-/*ARGSUSED*/
-/*static*/ void SigIOHandler(sig)
- int sig;
-{
- int olderrno = errno;
- sunEnqueueEvents();
- errno = olderrno;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunNonBlockConsoleOff --
- * Turn non-blocking mode on the console off, so you don't get logged
- * out when the server exits.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-void sunNonBlockConsoleOff(
- void
-)
-{
- int i;
-
-#if 0
- if (sunKbdPriv.fd >= 0)
- {
- i = fcntl(sunKbdPriv.fd, F_GETFL, 0);
- if (i >= 0 && (i & FNDELAY)) {
- (void) fcntl(sunKbdPriv.fd, F_SETFL, i & ~FNDELAY);
- }
- }
-#endif
- for (i = 0; i < MAXSCREENS; i++) {
- if (sunFbs[i].fbuf) {
- smem_create(NULL, (char*)sunFbs[i].fbuf, 0, SM_DETACH);
- smem_remove("FB");
- sunFbs[i].fbuf = NULL;
- }
- if (sunFbs[i].ramdac) {
- smem_create(NULL, (char*)sunFbs[i].ramdac, 0, SM_DETACH);
- smem_remove("DAC");
- sunFbs[i].ramdac = NULL;
- }
- if (sunFbs[i].fhc) {
- smem_create(NULL, (char*)sunFbs[i].fhc, 0, SM_DETACH);
- smem_remove("FHC_THC");
- sunFbs[i].fhc = NULL;
- sunFbs[i].thc = NULL;
- }
- if (sunFbs[i].fb) {
- smem_create(NULL, (char*)sunFbs[i].fb, 0, SM_DETACH);
- smem_remove("FBC_TEC");
- sunFbs[i].fb = NULL;
- sunFbs[i].tec = NULL;
- }
- }
-}
-
-static char** GetDeviceList (argc, argv)
- int argc;
- char **argv;
-{
- int i;
- char *envList = NULL;
- char *cmdList = NULL;
- char **deviceList = (char **)NULL;
-
- for (i = 1; i < argc; i++)
- if (strcmp (argv[i], "-dev") == 0 && i+1 < argc) {
- cmdList = argv[i + 1];
- break;
- }
- if (!cmdList)
- envList = getenv ("XDEVICE");
-
- if (cmdList || envList) {
- char *_tmpa;
- char *_tmpb;
- int _i1;
- deviceList = (char **) xalloc ((MAXSCREENS + 1) * sizeof (char *));
- _tmpa = (cmdList) ? cmdList : envList;
- for (_i1 = 0; _i1 < MAXSCREENS; _i1++) {
- _tmpb = strtok (_tmpa, ":");
- if (_tmpb)
- deviceList[_i1] = _tmpb;
- else
- deviceList[_i1] = NULL;
- _tmpa = NULL;
- }
- deviceList[MAXSCREENS] = NULL;
- }
- if (!deviceList) {
- /* no environment and no cmdline, so default */
- deviceList =
- (char **) xalloc ((FALLBACK_LIST_LEN + 1) * sizeof (char *));
- for (i = 0; i < FALLBACK_LIST_LEN; i++)
- deviceList[i] = fallbackList[i];
- deviceList[FALLBACK_LIST_LEN] = NULL;
- }
- return deviceList;
-}
-
-static void getKbdType()
-{
-#if defined(PATCHED_CONSOLE)
- int ii;
-
- for (ii = 0; ii < 3; ii++) {
-#if 0
- sunKbdWait();
-#endif
- if (ioctl (sunKbdPriv.fd, KIOCTYPE, &sunKbdPriv.type) < 0 && errno == EINVAL) {
- ErrorF("failed to get keyboard type, maybe wrong console driver:");
- ErrorF(" assuming Type 4 keyboard\n");
- sunKbdPriv.type = KB_SUN4;
- return;
- }
- switch (sunKbdPriv.type) {
- case KB_SUN2:
- case KB_SUN3:
- case KB_SUN4:
- return;
- default:
- sunChangeKbdTranslation(sunKbdPriv.fd, FALSE);
- continue;
- }
- }
- FatalError ("Unsupported keyboard type %d\n", sunKbdPriv.type);
-#else
- sunKbdPriv.type = KB_SUN4;
-#endif
-}
-
-void OsVendorInit(
- void
-)
-{
- static int inited;
- if (!inited) {
- /* weird hack to prevent logout on X server shutdown */
- if (onConsole)
- sunKbdPriv.fd = open ("/dev/con", O_RDWR, 0);
- else
- sunKbdPriv.fd = open ("/dev/kbd", O_RDWR, 0);
- sunPtrPriv.fd = open ("/dev/mouse", O_RDWR, 0);
-
- getKbdType ();
- if (sunKbdPriv.type == KB_SUN4) {
-#if defined(PATCHED_CONSOLE)
- if ( ioctl (sunKbdPriv.fd, KIOCLAYOUT, &sunKbdPriv.layout) < 0 && errno == EINVAL) {
- ErrorF("failed to get keyboard layout, maybe wrong console driver:");
- ErrorF(" assuming layout 0\n");
- sunKbdPriv.layout = 0;
- }
- if (sunKbdPriv.layout < 0 ||
- sunKbdPriv.layout > sunMaxLayout ||
- sunType4KeyMaps[sunKbdPriv.layout] == NULL)
- FatalError ("Unsupported keyboard type 4 layout %d\n",
- sunKbdPriv.layout);
-#else
- sunKbdPriv.layout = 0; /* default: Type 4 */
-#endif
- sunKeySyms[KB_SUN4].map = sunType4KeyMaps[sunKbdPriv.layout];
- sunModMaps[KB_SUN4] = sunType4ModMaps[sunKbdPriv.layout];
- }
- inited = 1;
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * InitOutput --
- * Initialize screenInfo for all actually accessible framebuffers.
- * The
- *
- * Results:
- * screenInfo init proc field set
- *
- * Side Effects:
- * None
- *
- *-----------------------------------------------------------------------
- */
-
-void InitOutput(pScreenInfo, argc, argv)
- ScreenInfo *pScreenInfo;
- int argc;
- char **argv;
-{
- int i, scr;
- char **devList;
- static int setup_on_exit = 0;
- extern Bool RunFromSmartParent;
-
- if (!monitorResolution)
- monitorResolution = 90;
-
- pScreenInfo->imageByteOrder = IMAGE_BYTE_ORDER;
- pScreenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
- pScreenInfo->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
- pScreenInfo->bitmapBitOrder = BITMAP_BIT_ORDER;
-
- pScreenInfo->numPixmapFormats = NUMFORMATS;
- for (i=0; i< NUMFORMATS; i++)
- pScreenInfo->formats[i] = formats[i];
-#ifdef XKB
- if (noXkbExtension)
-#endif
- sunAutoRepeatHandlersInstalled = FALSE;
- if (!sunDevsInited) {
- /* first time ever */
- for (scr = 0; scr < MAXSCREENS; scr++)
- sunFbs[scr].fd = -1;
- devList = GetDeviceList (argc, argv);
- for (i = 0, scr = 0; devList[i] != NULL && scr < MAXSCREENS; i++)
- if (OpenFrameBuffer (devList[i], scr))
- scr++;
- sunDevsInited = TRUE;
- xfree (devList);
- }
- for (scr = 0; scr < MAXSCREENS; scr++)
- if (sunFbs[scr].fd != -1)
- (void) AddScreen (sunFbData[sunFbs[scr].info.fb_type].init,
- argc, argv);
- (void) OsSignal(SIGWINCH, SIG_IGN);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * InitInput --
- * Initialize all supported input devices...what else is there
- * besides pointer and keyboard?
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Two DeviceRec's are allocated and registered as the system pointer
- * and keyboard devices.
- *
- *-----------------------------------------------------------------------
- */
-void InitInput(argc, argv)
- int argc;
- char **argv;
-{
- DevicePtr p, k;
- extern Bool mieqInit();
-
- k = AddInputDevice(sunKbdProc, TRUE);
- p = AddInputDevice(sunMouseProc, TRUE);
- if (!p || !k)
- FatalError("failed to create input devices in InitInput");
-
- RegisterPointerDevice(p);
- RegisterKeyboardDevice(k);
- miRegisterPointerDevice(screenInfo.screens[0], p);
- (void) mieqInit (k, p);
-
-#define SET_FLOW(fd) fcntl(fd, F_SETFL, FASYNC)
- (void) OsSignal(SIGIO, SigIOHandler);
-#define WANT_SIGNALS(fd) fcntl(fd, F_SETOWN, getpid())
- if (sunKbdPriv.fd >= 0) {
- if (SET_FLOW(sunKbdPriv.fd) == -1 || WANT_SIGNALS(sunKbdPriv.fd) == -1) {
- (void) close (sunKbdPriv.fd);
- sunKbdPriv.fd = -1;
- FatalError("Async kbd I/O failed in InitInput");
- }
- }
- /* SIGIO doesn't work reliable for the mouse device,
- * esp. for the first server after a reboot. We enable it
- * anyway, gives smoother movements
- */
- if (sunPtrPriv.fd >= 0) {
- if (SET_FLOW(sunPtrPriv.fd) == -1 || WANT_SIGNALS(sunPtrPriv.fd) == -1) {
- (void) close (sunPtrPriv.fd);
- sunPtrPriv.fd = -1;
- FatalError("ASYNC mouse I/O failed in InitInput");
- }
- }
-}
-
-
-#if SUNMAXDEPTH == 8
-
-Bool
-sunCfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width);
-}
-
-Bool
-sunCfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width);
-}
-
-Bool
-sunCfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
-}
-#endif /* SUNMAXDEPTH */
-
-#ifdef DPMSExtension
-/**************************************************************
- * DPMSSet(), DPMSGet(), DPMSSupported()
- *
- * stubs
- *
- ***************************************************************/
-
-void DPMSSet (level)
- int level;
-{
-}
-
-int DPMSGet (level)
- int* level;
-{
- return -1;
-}
-
-Bool DPMSSupported ()
-{
- return FALSE;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c
deleted file mode 100644
index 7b1d68519..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/* $Xorg: sunLyIo.c,v 1.3 2000/08/17 19:48:37 cpqbld Exp $ */
-/*-
- * This is sunIo.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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, and that the name of Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyIo.c,v 3.5 2001/05/25 18:40:59 dawes Exp $ */
-
- /*
- *
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- *
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#define NEED_EVENTS
-#include "sun.h"
-#include <stat.h>
-
-/*-
- *-----------------------------------------------------------------------
- * ProcessInputEvents --
- * Retrieve all waiting input events and pass them to DIX in their
- * correct chronological order. Only reads from the system pointer
- * and keyboard.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Events are passed to the DIX layer.
- *
- *-----------------------------------------------------------------------
- */
-void
-ProcessInputEvents ()
-{
- mieqProcessInputEvents ();
- miPointerUpdate ();
-}
-
-/*
- *-----------------------------------------------------------------------
- * sunEnqueueEvents
- * When a SIGIO is received, read device hard events and
- * enqueue them using the mi event queue
- */
-
-void sunEnqueueEvents (
- void
-)
-{
- Firm_event *ptrEvents, /* Current pointer event */
- *kbdEvents; /* Current keyboard event */
- int numPtrEvents, /* Number of remaining pointer events */
- numKbdEvents; /* Number of remaining keyboard events */
- int nPE, /* Original number of pointer events */
- nKE; /* Original number of keyboard events */
- Bool PtrAgain, /* need to (re)read */
- KbdAgain; /* need to (re)read */
- DeviceIntPtr pPointer;
- DeviceIntPtr pKeyboard;
- sunKbdPrivPtr kbdPriv;
- sunPtrPrivPtr ptrPriv;
-
- pPointer = (DeviceIntPtr)LookupPointerDevice();
- pKeyboard = (DeviceIntPtr)LookupKeyboardDevice();
- ptrPriv = (sunPtrPrivPtr) pPointer->public.devicePrivate;
- kbdPriv = (sunKbdPrivPtr) pKeyboard->public.devicePrivate;
- if (!pPointer->public.on || !pKeyboard->public.on)
- return;
-
- numPtrEvents = 0;
- PtrAgain = TRUE;
- numKbdEvents = 0;
- KbdAgain = TRUE;
-
- /*
- * So long as one event from either device remains unprocess, we loop:
- * Take the oldest remaining event and pass it to the proper module
- * for processing. The DDXEvent will be sent to ProcessInput by the
- * function called.
- */
- while (1) {
- /*
- * Get events from both the pointer and the keyboard, storing the number
- * of events gotten in nPE and nKE and keeping the start of both arrays
- * in pE and kE
- */
- if ((numPtrEvents == 0) && PtrAgain) {
- ptrEvents = sunMouseGetEvents (ptrPriv->fd, pPointer->public.on,
- &nPE, &PtrAgain);
- numPtrEvents = nPE;
- }
- if ((numKbdEvents == 0) && KbdAgain) {
- kbdEvents = sunKbdGetEvents (kbdPriv->fd, pKeyboard->public.on,
- &nKE, &KbdAgain);
- numKbdEvents = nKE;
- }
- if ((numPtrEvents == 0) && (numKbdEvents == 0))
- break;
- if (numPtrEvents && numKbdEvents) {
- if (timercmp (&kbdEvents->time, &ptrEvents->time, <)) {
- sunKbdEnqueueEvent (pKeyboard, kbdEvents);
- numKbdEvents--;
- kbdEvents++;
- } else {
- sunMouseEnqueueEvent (pPointer, ptrEvents);
- numPtrEvents--;
- ptrEvents++;
- }
- } else if (numKbdEvents) {
- sunKbdEnqueueEvent (pKeyboard, kbdEvents);
- numKbdEvents--;
- kbdEvents++;
- } else {
- sunMouseEnqueueEvent (pPointer, ptrEvents);
- numPtrEvents--;
- ptrEvents++;
- }
- }
-}
-
-void sunEnqueueKbdEvents (
- void
-)
-{
- Firm_event *kbdEvents; /* Current keyboard event */
- int numKbdEvents; /* Number of remaining keyboard events */
- int nKE; /* Original number of keyboard events */
- Bool KbdAgain; /* need to (re)read */
- DeviceIntPtr pKeyboard;
- sunKbdPrivPtr kbdPriv;
-
- pKeyboard = (DeviceIntPtr)LookupKeyboardDevice();
- kbdPriv = (sunKbdPrivPtr) pKeyboard->public.devicePrivate;
- if (!pKeyboard->public.on)
- return;
-
- numKbdEvents = 0;
- KbdAgain = TRUE;
-
- /*
- * So long as one event from the device remains unprocess, we loop:
- * Take the oldest remaining event and pass it to the proper module
- * for processing. The DDXEvent will be sent to ProcessInput by the
- * function called.
- */
- while (1) {
- /*
- * Get events from both the keyboard, storing the number
- * of events gotten in nKE and keeping the start of the array
- * in kE
- */
- if ((numKbdEvents == 0) && KbdAgain) {
- kbdEvents = sunKbdGetEvents (kbdPriv->fd, pKeyboard->public.on,
- &nKE, &KbdAgain);
- numKbdEvents = nKE;
- }
- if (numKbdEvents == 0)
- break;
- sunKbdEnqueueEvent (pKeyboard, kbdEvents);
- numKbdEvents--;
- kbdEvents++;
- }
-}
-
-void sunEnqueueMseEvents (
- void
-)
-{
- Firm_event *ptrEvents; /* Current pointer event */
- int numPtrEvents; /* Number of remaining pointer events */
- int nPE; /* Original number of pointer events */
- Bool PtrAgain; /* need to (re)read */
- DeviceIntPtr pPointer;
- sunPtrPrivPtr ptrPriv;
-
- pPointer = (DeviceIntPtr)LookupPointerDevice();
- ptrPriv = (sunPtrPrivPtr) pPointer->public.devicePrivate;
- if (!pPointer->public.on)
- return;
-
- numPtrEvents = 0;
- PtrAgain = TRUE;
-
- /*
- * So long as one events from the device remain unprocess, we loop:
- * Take the oldest remaining event and pass it to the proper module
- * for processing. The DDXEvent will be sent to ProcessInput by the
- * function called.
- */
- while (1) {
- /*
- * Get events from the pointer, storing the number
- * of events gotten in nPE and keeping the start of the arrays
- * in pE
- */
- if ((numPtrEvents == 0) && PtrAgain) {
- ptrEvents = sunMouseGetEvents (ptrPriv->fd, pPointer->public.on,
- &nPE, &PtrAgain);
- numPtrEvents = nPE;
- }
- if (numPtrEvents == 0)
- break;
-
- sunMouseEnqueueEvent (pPointer, ptrEvents);
- numPtrEvents--;
- ptrEvents++;
- }
-}
-
-/*
- * DDX - specific abort routine. Called by AbortServer().
- */
-void AbortDDX()
-{
- int i;
- ScreenPtr pScreen;
- DevicePtr devPtr;
-
- (void) OsSignal (SIGIO, SIG_IGN);
- if (sunKbdPriv.fd != -1) {
- if (devPtr = LookupKeyboardDevice())
- (void) sunChangeKbdTranslation (((sunKbdPrivPtr)(devPtr->devicePrivate))->fd, FALSE);
- }
- sunNonBlockConsoleOff ();
- for (i = 0; i < screenInfo.numScreens; i++)
- {
- pScreen = screenInfo.screens[i];
- (*pScreen->SaveScreen) (pScreen, SCREEN_SAVER_OFF);
- sunDisableCursor (pScreen);
- }
-}
-
-/* Called by GiveUp(). */
-void
-ddxGiveUp()
-{
- AbortDDX ();
-}
-
-/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
-void ddxInitGlobals(void)
-{
-}
-
-int
-ddxProcessArgument (argc, argv, i)
- int argc;
- char *argv[];
- int i;
-{
- extern void UseMsg();
- extern Bool onConsole;
- struct stat s0, scon;
-
- if (fstat(0, &s0) != -1 && stat("/dev/con", &scon) != -1)
- onConsole = !memcmp(&s0, &scon, sizeof(s0));
-
-#ifndef XKB
- if (strcmp (argv[i], "-ar1") == 0) { /* -ar1 int */
- if (++i >= argc) UseMsg ();
- sunAutoRepeatInitiate = 1000 * (long)atoi(argv[i]);
- if (sunAutoRepeatInitiate > 1000000)
- sunAutoRepeatInitiate = 999000;
- return 2;
- }
- if (strcmp (argv[i], "-ar2") == 0) { /* -ar2 int */
- if (++i >= argc) UseMsg ();
- sunAutoRepeatDelay = 1000 * (long)atoi(argv[i]);
- if (sunAutoRepeatDelay > 1000000)
- sunAutoRepeatDelay = 999000;
- return 2;
- }
-#endif
- if (strcmp (argv[i], "-swapLkeys") == 0) { /* -swapLkeys */
- sunSwapLkeys = TRUE;
- return 1;
- }
- if (strcmp (argv[i], "-debug") == 0) { /* -debug */
- return 1;
- }
- if (strcmp (argv[i], "-dev") == 0) { /* -dev /dev/mumble */
- if (++i >= argc) UseMsg ();
- return 2;
- }
- if (strcmp (argv[i], "-mono") == 0) { /* -mono */
- return 1;
- }
- if (strcmp (argv[i], "-zaphod") == 0) { /* -zaphod */
- sunActiveZaphod = FALSE;
- return 1;
- }
- if (strcmp (argv[i], "-flipPixels") == 0) { /* -flipPixels */
- sunFlipPixels = TRUE;
- return 1;
- }
- if (strcmp (argv[i], "-fbinfo") == 0) { /* -fbinfo */
- sunFbInfo = TRUE;
- return 1;
- }
- if (strcmp (argv[i], "-kbd") == 0) { /* -kbd */
- if (++i >= argc) UseMsg();
- return 2;
- }
- if (strcmp (argv[i], "-protect") == 0) { /* -protect */
- if (++i >= argc) UseMsg();
- return 2;
- }
- if (strcmp (argv[i], "-noGX") == 0) {
- sunNoGX = TRUE;
- return 1;
- }
- return 0;
-}
-
-void
-ddxUseMsg()
-{
-#ifndef XKB
- ErrorF("-ar1 int set autorepeat initiate time\n");
- ErrorF("-ar2 int set autorepeat interval time\n");
-#endif
- ErrorF("-swapLkeys swap keysyms on L1..L10\n");
- ErrorF("-debug disable non-blocking console mode\n");
- ErrorF("-dev fn[:fn][:fn] name of device[s] to open\n");
- ErrorF("-mono force monochrome-only screen\n");
- ErrorF("-zaphod disable active Zaphod mode\n");
- ErrorF("-fbinfo tell more about the found frame buffer(s)\n");
-#ifdef UNDOCUMENTED
- ErrorF("-noGX treat the GX as a dumb frame buffer\n");
-#endif
-}
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyKbd.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyKbd.c
deleted file mode 100644
index 46fe7eb6c..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyKbd.c
+++ /dev/null
@@ -1,1080 +0,0 @@
-/* $Xorg: sunLyKbd.c,v 1.3 2000/08/17 19:48:37 cpqbld Exp $ */
-/*
- * This is sunKbd.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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, and that the name of Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyKbd.c,v 3.6 2001/08/01 00:44:49 tsi Exp $ */
-
-/*-
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#define NEED_EVENTS
-#include "sun.h"
-#include "keysym.h"
-#include "Sunkeysym.h"
-#include "osdep.h"
-
-#include <X11/Xpoll.h>
-
-#ifdef XKB
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
-#include <X11/extensions/XKBsrv.h>
-#endif
-
-#define SUN_LED_MASK 0x0f
-#define MIN_KEYCODE 7 /* necessary to avoid the mouse buttons */
-#define MAX_KEYCODE 255 /* limited by the protocol */
-#ifndef KB_SUN4
-#define KB_SUN4 4
-#endif
-
-#define AUTOREPEAT_INITIATE 400
-#define AUTOREPEAT_DELAY 50
-
-#define tvminus(tv, tv1, tv2) /* tv = tv1 - tv2 */ \
- if ((tv1).tv_usec < (tv2).tv_usec) { \
- (tv1).tv_usec += 1000000; \
- (tv1).tv_sec -= 1; \
- } \
- (tv).tv_usec = (tv1).tv_usec - (tv2).tv_usec; \
- (tv).tv_sec = (tv1).tv_sec - (tv2).tv_sec;
-
-#define tvplus(tv, tv1, tv2) /* tv = tv1 + tv2 */ \
- (tv).tv_sec = (tv1).tv_sec + (tv2).tv_sec; \
- (tv).tv_usec = (tv1).tv_usec + (tv2).tv_usec; \
- if ((tv).tv_usec > 1000000) { \
- (tv).tv_usec -= 1000000; \
- (tv).tv_sec += 1; \
- }
-
-extern KeySymsRec sunKeySyms[];
-extern SunModmapRec* sunModMaps[];
-
-long sunAutoRepeatInitiate = 1000 * AUTOREPEAT_INITIATE;
-long sunAutoRepeatDelay = 1000 * AUTOREPEAT_DELAY;
-
-static int autoRepeatKeyDown = 0;
-static int autoRepeatReady;
-static int autoRepeatFirst;
-static struct timeval autoRepeatLastKeyDownTv;
-static struct timeval autoRepeatDeltaTv;
-
-void sunKbdWait()
-{
- static struct timeval lastChngKbdTransTv;
- struct timeval tv;
- struct timeval lastChngKbdDeltaTv;
- unsigned int lastChngKbdDelta;
-
- X_GETTIMEOFDAY(&tv);
- if (!lastChngKbdTransTv.tv_sec)
- lastChngKbdTransTv = tv;
- tvminus(lastChngKbdDeltaTv, tv, lastChngKbdTransTv);
- lastChngKbdDelta = TVTOMILLI(lastChngKbdDeltaTv);
- if (lastChngKbdDelta < 750) {
- unsigned wait;
- /*
- * We need to guarantee at least 750 milliseconds between
- * calls to KIOCTRANS. YUCK!
- */
- wait = (750L - lastChngKbdDelta) * 1000L;
- usleep (wait);
- X_GETTIMEOFDAY(&tv);
- }
- lastChngKbdTransTv = tv;
-}
-
-static void SwapLKeys(keysyms)
- KeySymsRec* keysyms;
-{
- unsigned int i;
- KeySym k;
-
- for (i = 2; i < keysyms->maxKeyCode * keysyms->mapWidth; i++)
- if (keysyms->map[i] == XK_L1 ||
- keysyms->map[i] == XK_L2 ||
- keysyms->map[i] == XK_L3 ||
- keysyms->map[i] == XK_L4 ||
- keysyms->map[i] == XK_L5 ||
- keysyms->map[i] == XK_L6 ||
- keysyms->map[i] == XK_L7 ||
- keysyms->map[i] == XK_L8 ||
- keysyms->map[i] == XK_L9 ||
- keysyms->map[i] == XK_L10) {
- /* yes, I could have done a clever two line swap! */
- k = keysyms->map[i - 2];
- keysyms->map[i - 2] = keysyms->map[i];
- keysyms->map[i] = k;
- }
-}
-
-static void SetLights (ctrl, fd)
- KeybdCtrl* ctrl;
- int fd;
-{
-#ifdef KIOCSLED
- static unsigned char led_tab[16] = {
- 0,
- LED_NUM_LOCK,
- LED_SCROLL_LOCK,
- LED_SCROLL_LOCK | LED_NUM_LOCK,
- LED_COMPOSE,
- LED_COMPOSE | LED_NUM_LOCK,
- LED_COMPOSE | LED_SCROLL_LOCK,
- LED_COMPOSE | LED_SCROLL_LOCK | LED_NUM_LOCK,
- LED_CAPS_LOCK,
- LED_CAPS_LOCK | LED_NUM_LOCK,
- LED_CAPS_LOCK | LED_SCROLL_LOCK,
- LED_CAPS_LOCK | LED_SCROLL_LOCK | LED_NUM_LOCK,
- LED_CAPS_LOCK | LED_COMPOSE,
- LED_CAPS_LOCK | LED_COMPOSE | LED_NUM_LOCK,
- LED_CAPS_LOCK | LED_COMPOSE | LED_SCROLL_LOCK,
- LED_CAPS_LOCK | LED_COMPOSE | LED_SCROLL_LOCK | LED_NUM_LOCK
- };
- if (ioctl (fd, KIOCSLED, (caddr_t)&led_tab[ctrl->leds & 0x0f]) == -1)
-#if defined(PATCHED_CONSOLE)
- Error("Failed to set keyboard lights");
-#else
- ; /* silly driver bug always returns error */
-#endif
-#endif
-}
-
-
-static void ModLight (device, on, led)
- DeviceIntPtr device;
- Bool on;
- int led;
-{
- KeybdCtrl* ctrl = &device->kbdfeed->ctrl;
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr) device->public.devicePrivate;
-
- if(on) {
- ctrl->leds |= led;
- pPriv->leds |= led;
- } else {
- ctrl->leds &= ~led;
- pPriv->leds &= ~led;
- }
- SetLights (ctrl, pPriv->fd);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunBell --
- * Ring the terminal/keyboard bell
- *
- * Results:
- * Ring the keyboard bell for an amount of time proportional to
- * "loudness."
- *
- * Side Effects:
- * None, really...
- *
- *-----------------------------------------------------------------------
- */
-
-static void bell (
- int fd,
- int duration)
-{
-#if defined(PATCHED_CONSOLE)
- int kbdCmd; /* Command to give keyboard */
-
- kbdCmd = KBD_CMD_BELL;
- if (ioctl (fd, KIOCCMD, &kbdCmd) == -1) {
- Error("Failed to activate bell");
- return;
- }
- if (duration) usleep (duration);
- kbdCmd = KBD_CMD_NOBELL;
- if (ioctl (fd, KIOCCMD, &kbdCmd) == -1)
- Error ("Failed to deactivate bell");
-#endif
-}
-
-static void sunBell (
- int percent,
- DeviceIntPtr device,
- pointer ctrl,
- int unused)
-{
- KeybdCtrl* kctrl = (KeybdCtrl*) ctrl;
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr) device->public.devicePrivate;
-
- if (percent == 0 || kctrl->bell == 0)
- return;
-
- bell (pPriv->fd, kctrl->bell_duration * 1000);
-}
-
-static void sunEnqueueEvent (xE)
- xEvent* xE;
-{
- sigset_t holdmask;
-
- (void) sigaddset (&holdmask, SIGIO);
- (void) sigprocmask (SIG_BLOCK, &holdmask, (sigset_t*)NULL);
- mieqEnqueue (xE);
- (void) sigprocmask (SIG_UNBLOCK, &holdmask, (sigset_t*)NULL);
-}
-
-
-#define XLED_NUM_LOCK 0x1
-#define XLED_COMPOSE 0x4
-#define XLED_SCROLL_LOCK 0x2
-#define XLED_CAPS_LOCK 0x8
-
-static KeyCode LookupKeyCode (keysym, keysymsrec)
- KeySym keysym;
- KeySymsPtr keysymsrec;
-{
- KeyCode i;
- int ii, index = 0;
-
- for (i = keysymsrec->minKeyCode; i < keysymsrec->maxKeyCode; i++)
- for (ii = 0; ii < keysymsrec->mapWidth; ii++)
- if (keysymsrec->map[index++] == keysym)
- return i;
-}
-
-static void pseudoKey(device, down, keycode)
- DeviceIntPtr device;
- Bool down;
- KeyCode keycode;
-{
- int bit;
- CARD8 modifiers;
- CARD16 mask;
- BYTE* kptr;
-
- kptr = &device->key->down[keycode >> 3];
- bit = 1 << (keycode & 7);
- modifiers = device->key->modifierMap[keycode];
- if (down) {
- /* fool dix into thinking this key is now "down" */
- int i;
- *kptr |= bit;
- device->key->prev_state = device->key->state;
- for (i = 0, mask = 1; modifiers; i++, mask <<= 1)
- if (mask & modifiers) {
- device->key->modifierKeyCount[i]++;
- device->key->state += mask;
- modifiers &= ~mask;
- }
- } else {
- /* fool dix into thinking this key is now "up" */
- if (*kptr & bit) {
- int i;
- *kptr &= ~bit;
- device->key->prev_state = device->key->state;
- for (i = 0, mask = 1; modifiers; i++, mask <<= 1)
- if (mask & modifiers) {
- if (--device->key->modifierKeyCount[i] <= 0) {
- device->key->state &= ~mask;
- device->key->modifierKeyCount[i] = 0;
- }
- modifiers &= ~mask;
- }
- }
- }
-}
-
-static void DoLEDs(device, ctrl, pPriv)
- DeviceIntPtr device; /* Keyboard to alter */
- KeybdCtrl* ctrl;
- sunKbdPrivPtr pPriv;
-{
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- if ((ctrl->leds & XLED_CAPS_LOCK) && !(pPriv->leds & XLED_CAPS_LOCK))
- pseudoKey(device, TRUE,
- LookupKeyCode(XK_Caps_Lock, &device->key->curKeySyms));
-
- if (!(ctrl->leds & XLED_CAPS_LOCK) && (pPriv->leds & XLED_CAPS_LOCK))
- pseudoKey(device, FALSE,
- LookupKeyCode(XK_Caps_Lock, &device->key->curKeySyms));
-
- if ((ctrl->leds & XLED_NUM_LOCK) && !(pPriv->leds & XLED_NUM_LOCK))
- pseudoKey(device, TRUE,
- LookupKeyCode(XK_Num_Lock, &device->key->curKeySyms));
-
- if (!(ctrl->leds & XLED_NUM_LOCK) && (pPriv->leds & XLED_NUM_LOCK))
- pseudoKey(device, FALSE,
- LookupKeyCode(XK_Num_Lock, &device->key->curKeySyms));
-
- if ((ctrl->leds & XLED_SCROLL_LOCK) && !(pPriv->leds & XLED_SCROLL_LOCK))
- pseudoKey(device, TRUE,
- LookupKeyCode(XK_Scroll_Lock, &device->key->curKeySyms));
-
- if (!(ctrl->leds & XLED_SCROLL_LOCK) && (pPriv->leds & XLED_SCROLL_LOCK))
- pseudoKey(device, FALSE,
- LookupKeyCode(XK_Scroll_Lock, &device->key->curKeySyms));
-
- if ((ctrl->leds & XLED_COMPOSE) && !(pPriv->leds & XLED_COMPOSE))
- pseudoKey(device, TRUE,
- LookupKeyCode(SunXK_Compose, &device->key->curKeySyms));
-
- if (!(ctrl->leds & XLED_COMPOSE) && (pPriv->leds & XLED_COMPOSE))
- pseudoKey(device, FALSE,
- LookupKeyCode(SunXK_Compose, &device->key->curKeySyms));
-#ifdef XKB
- }
-#endif
- pPriv->leds = ctrl->leds & 0x0f;
- SetLights (ctrl, pPriv->fd);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunKbdCtrl --
- * Alter some of the keyboard control parameters
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Some...
- *
- *-----------------------------------------------------------------------
- */
-
-static void sunKbdCtrl (
- DeviceIntPtr device,
- KeybdCtrl* ctrl)
-{
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr) device->public.devicePrivate;
-
- if (pPriv->fd < 0) return;
-
- if (ctrl->click != pPriv->click) {
- int kbdClickCmd;
-
- pPriv->click = ctrl->click;
-#if defined(PATCHED_CONSOLE)
- kbdClickCmd = pPriv->click ? KBD_CMD_CLICK : KBD_CMD_NOCLICK;
- if (ioctl (pPriv->fd, KIOCCMD, &kbdClickCmd) == -1)
- Error("Failed to set keyclick");
-#endif
- }
- if (pPriv->type == KB_SUN4 && pPriv->leds != ctrl->leds & 0x0f)
- DoLEDs(device, ctrl, pPriv);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunInitKbdNames --
- * Handle the XKB initialization
- *
- * Results:
- * None.
- *
- * Comments:
- * This function needs considerable work, in conjunctions with
- * the need to add geometry descriptions of Sun Keyboards.
- * It would also be nice to have #defines for all the keyboard
- * layouts so that we don't have to have these hard-coded
- * numbers.
- *
- *-----------------------------------------------------------------------
- */
-#ifdef XKB
-static void sunInitKbdNames (
- XkbComponentNamesRec* names,
- sunKbdPrivPtr pKbd)
-{
-#ifndef XKBBUFSIZE
-#define XKBBUFSIZE 64
-#endif
- static char keycodesbuf[XKBBUFSIZE];
- static char geometrybuf[XKBBUFSIZE];
- static char symbolsbuf[XKBBUFSIZE];
-
- names->keymap = NULL;
- names->compat = "compat/complete";
- names->types = "types/complete";
- names->keycodes = keycodesbuf;
- names->geometry = geometrybuf;
- names->symbols = symbolsbuf;
- (void) strcpy (keycodesbuf, "keycodes/");
- (void) strcpy (geometrybuf, "geometry/");
- (void) strcpy (symbolsbuf, "symbols/");
-
- /* keycodes & geometry */
- switch (pKbd->type) {
- case KB_SUN2:
- (void) strcat (names->keycodes, "sun(type2)");
- (void) strcat (names->geometry, "sun(type2)");
- (void) strcat (names->symbols, "us(sun2)");
- break;
- case KB_SUN3:
- (void) strcat (names->keycodes, "sun(type3)");
- (void) strcat (names->geometry, "sun(type3)");
- (void) strcat (names->symbols, "us(sun3)");
- break;
- case KB_SUN4:
- if (pKbd->layout == 19) {
- (void) strcat (names->keycodes, "sun(US101A)");
- (void) strcat (names->geometry, "pc101-NG"); /* XXX */
- (void) strcat (names->symbols, "us(pc101)");
- } else if (pKbd->layout < 33) {
- (void) strcat (names->keycodes, "sun(type4)");
- (void) strcat (names->geometry, "sun(type4)");
- if (sunSwapLkeys)
- (void) strcat (names->symbols, "sun/us(sun4ol)");
- else
- (void) strcat (names->symbols, "sun/us(sun4)");
- } else {
- (void) strcat (names->keycodes, "sun(type5)");
- if (pKbd->layout == 34 || pKbd->layout == 81)
- (void) strcat (names->geometry, "sun(type5unix)");
- else
- (void) strcat (names->geometry, "sun(type5)");
- if (sunSwapLkeys)
- (void) strcat (names->symbols, "sun/us(sun5ol)");
- else
- (void) strcat (names->symbols, "sun/us(sun5)");
- }
- break;
- default:
- names->keycodes = names->geometry = NULL;
- break;
- }
-
- /* extra symbols */
- if (pKbd->type == KB_SUN4) {
- switch (pKbd->layout) {
- case 0: case 1: case 33: case 34: case 80: case 81:
- break;
- case 3:
- (void) strcat (names->symbols, "+ca"); break;
- case 4: case 36: case 83:
- (void) strcat (names->symbols, "+dk"); break;
- case 5: case 37: case 84:
- (void) strcat (names->symbols, "+de"); break;
- case 6: case 38: case 85:
- (void) strcat (names->symbols, "+it"); break;
- case 8: case 40: case 87:
- (void) strcat (names->symbols, "+no"); break;
- case 9: case 41: case 88:
- (void) strcat (names->symbols, "+pt"); break;
- case 10: case 42: case 89:
- (void) strcat (names->symbols, "+es"); break;
- case 11: case 43: case 90:
- (void) strcat (names->symbols, "+se"); break;
- case 12: case 44: case 91:
- (void) strcat (names->symbols, "+fr_CH"); break;
- case 13: case 45: case 92:
- (void) strcat (names->symbols, "+de_CH"); break;
- case 14: case 46: case 93:
- (void) strcat (names->symbols, "+gb"); break; /* s/b en_UK */
- case 52:
- (void) strcat (names->symbols, "+pl"); break;
- case 53:
- (void) strcat (names->symbols, "+cs"); break;
- case 54:
- (void) strcat (names->symbols, "+ru"); break;
-#if 0
- /* don't have symbols defined for these yet, let them default */
- case 2:
- (void) strcat (names->symbols, "+fr_BE"); break;
- case 7: case 39: case 86:
- (void) strcat (names->symbols, "+nl"); break;
- case 50: case 97:
- (void) strcat (names->symbols, "+fr_CA"); break;
- case 16: case 47: case 94:
- (void) strcat (names->symbols, "+ko"); break;
- case 17: case 48: case 95:
- (void) strcat (names->symbols, "+tw"); break;
- case 32: case 49: case 96:
- (void) strcat (names->symbols, "+jp"); break;
- case 51:
- (void) strcat (names->symbols, "+hu"); break;
-#endif
- /*
- * by setting the symbols to NULL XKB will use the symbols in
- * the "default" keymap.
- */
- default:
- names->symbols = NULL; return; break;
- }
- }
-}
-#endif /* XKB */
-
-/*-
- *-----------------------------------------------------------------------
- * sunKbdProc --
- * Handle the initialization, etc. of a keyboard.
- *
- * Results:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-
-int sunKbdProc (
- DeviceIntPtr device,
- int what)
-{
- static int once;
- static struct termio kbdtty;
- struct termio tty;
- int i;
- DevicePtr pKeyboard = (DevicePtr) device;
- sunKbdPrivPtr pPriv;
- KeybdCtrl* ctrl = &device->kbdfeed->ctrl;
- extern int XkbDfltRepeatDelay, XkbDfltRepeatInterval;
-
- static CARD8 *workingModMap = NULL;
- static KeySymsRec *workingKeySyms;
-
- switch (what) {
- case DEVICE_INIT:
- if (pKeyboard != LookupKeyboardDevice()) {
- ErrorF ("Cannot open non-system keyboard\n");
- return (!Success);
- }
-
- if (!workingKeySyms) {
- workingKeySyms = &sunKeySyms[sunKbdPriv.type];
-
- if (sunKbdPriv.type == KB_SUN4 && sunSwapLkeys)
- SwapLKeys(workingKeySyms);
-
- if (workingKeySyms->minKeyCode < MIN_KEYCODE) {
- workingKeySyms->minKeyCode += MIN_KEYCODE;
- workingKeySyms->maxKeyCode += MIN_KEYCODE;
- }
- if (workingKeySyms->maxKeyCode > MAX_KEYCODE)
- workingKeySyms->maxKeyCode = MAX_KEYCODE;
- }
-
- if (!workingModMap) {
- workingModMap=(CARD8 *)xalloc(MAP_LENGTH);
- (void) memset(workingModMap, 0, MAP_LENGTH);
- for(i=0; sunModMaps[sunKbdPriv.type][i].key != 0; i++)
- workingModMap[sunModMaps[sunKbdPriv.type][i].key + MIN_KEYCODE] =
- sunModMaps[sunKbdPriv.type][i].modifiers;
- }
-
- (void) memset ((void *) defaultKeyboardControl.autoRepeats,
- ~0, sizeof defaultKeyboardControl.autoRepeats);
-
-#ifdef XKB
- if (noXkbExtension) {
- sunAutoRepeatInitiate = XkbDfltRepeatDelay * 1000;
- sunAutoRepeatDelay = XkbDfltRepeatInterval * 1000;
-#endif
- autoRepeatKeyDown = 0;
-#ifdef XKB
- }
-#endif
- pKeyboard->devicePrivate = (pointer)&sunKbdPriv;
- pKeyboard->on = FALSE;
-
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- InitKeyboardDeviceStruct(pKeyboard,
- workingKeySyms, workingModMap,
- sunBell, sunKbdCtrl);
-#ifdef XKB
- } else {
- XkbComponentNamesRec names;
- sunInitKbdNames (&names, &sunKbdPriv);
- XkbInitKeyboardDeviceStruct((DeviceIntPtr) pKeyboard, &names,
- workingKeySyms, workingModMap,
- sunBell, sunKbdCtrl);
- }
-#endif
- break;
-
- case DEVICE_ON:
- pPriv = (sunKbdPrivPtr)pKeyboard->devicePrivate;
- /*
- * Set the keyboard into "direct" mode and turn on
- * event translation.
- */
- if (sunChangeKbdTranslation(pPriv->fd, TRUE) == -1)
- FatalError("Can't set keyboard translation\n");
- /*
- * for LynxOS, save current termio setting and
- * set the keyboard into raw mode
- */
- if (!once)
- {
- ioctl(pPriv->fd, TCGETA, &kbdtty);
- once = 1;
- }
- tty = kbdtty;
- tty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- tty.c_oflag = 0;
- tty.c_cflag = CREAD | CS8;
- tty.c_lflag = 0;
- tty.c_cc[VTIME] = 0;
- tty.c_cc[VMIN] = 0;
- if (ioctl(pPriv->fd, TCSETAW, &tty) < 0)
- perror("ioctl TCSETAW");
- AddEnabledDevice(pPriv->fd);
- pKeyboard->on = TRUE;
- break;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- pPriv = (sunKbdPrivPtr)pKeyboard->devicePrivate;
- if (pPriv->type == KB_SUN4) {
- /* dumb bug in Sun's keyboard! Turn off LEDS before resetting */
- pPriv->leds = 0;
- ctrl->leds = 0;
- SetLights(ctrl, pPriv->fd);
- }
- /*
- * Restore original keyboard directness and translation.
- */
- if (sunChangeKbdTranslation(pPriv->fd,FALSE) == -1)
- FatalError("Can't reset keyboard translation\n");
- /* restore saved termio setting */
- if (ioctl(pPriv->fd, TCSETAW, &kbdtty) < 0)
- perror("ioctl TCSETAW");
- pKeyboard->on = FALSE;
- RemoveEnabledDevice(pPriv->fd);
- break;
- default:
- FatalError("Unknown keyboard operation\n");
- }
- return Success;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunKbdGetEvents --
- * Return the events waiting in the wings for the given keyboard.
- *
- * Results:
- * A pointer to an array of Firm_events or (Firm_event *)0 if no events
- * The number of events contained in the array.
- * A boolean as to whether more events might be available.
- *
- * Side Effects:
- * None.
- *-----------------------------------------------------------------------
- */
-
-Firm_event* sunKbdGetEvents (
- int fd,
- Bool on,
- int* pNumEvents,
- Bool* pAgain)
-{
- int nBytes; /* number of bytes of events available. */
- static Firm_event evBuf[MAXEVENTS]; /* Buffer for Firm_events */
-
- char buf[64];
-
- if ((nBytes = read(fd, buf, sizeof(buf))) == -1) {
- if (errno == EWOULDBLOCK || errno == EAGAIN || errno == EINTR)
- {
- *pNumEvents = 0;
- if (errno == EINTR)
- *pAgain = TRUE;
- else
- *pAgain = FALSE;
- } else {
- Error ("Reading keyboard");
- FatalError ("Could not read the keyboard");
- }
- } else {
- int i;
- struct timeval now;
-
- if (on) {
- X_GETTIMEOFDAY(&now);
- *pNumEvents = nBytes;
- *pAgain = (nBytes == sizeof(buf)); /* very unlikely... */
- for (i = 0; i < nBytes; i++)
- {
- evBuf[i].id = buf[i] & 0x7f;
- evBuf[i].value = (buf[i] & 0x80) ? VKEY_UP : VKEY_DOWN;
- evBuf[i].time = now;
- }
- } else {
- *pNumEvents = 0;
- *pAgain = FALSE;
- }
- }
- return evBuf;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunKbdEnqueueEvent --
- *
- *-----------------------------------------------------------------------
- */
-static xEvent autoRepeatEvent;
-static int composeCount;
-
-static Bool DoSpecialKeys(device, xE, fe)
- DeviceIntPtr device;
- xEvent* xE;
- Firm_event* fe;
-{
- int shift_index, map_index, bit;
- KeySym ksym;
- BYTE* kptr;
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr)device->public.devicePrivate;
- BYTE keycode = xE->u.u.detail;
- CARD8 keyModifiers = device->key->modifierMap[keycode];
-
- /* look up the present idea of the keysym */
- shift_index = 0;
- if (device->key->state & ShiftMask)
- shift_index ^= 1;
- if (device->key->state & LockMask)
- shift_index ^= 1;
- map_index = (fe->id - 1) * device->key->curKeySyms.mapWidth;
- ksym = device->key->curKeySyms.map[shift_index + map_index];
- if (ksym == NoSymbol)
- ksym = device->key->curKeySyms.map[map_index];
-
- /*
- * Toggle functionality is hardcoded. This is achieved by always
- * discarding KeyReleases on these keys, and converting every other
- * KeyPress into a KeyRelease.
- */
- if (xE->u.u.type == KeyRelease
- && (ksym == XK_Num_Lock
- || ksym == XK_Scroll_Lock
- || ksym == SunXK_Compose
- || (keyModifiers & LockMask)))
- return TRUE;
-
- kptr = &device->key->down[keycode >> 3];
- bit = 1 << (keycode & 7);
- if ((*kptr & bit) &&
- (ksym == XK_Num_Lock || ksym == XK_Scroll_Lock ||
- ksym == SunXK_Compose || (keyModifiers & LockMask)))
- xE->u.u.type = KeyRelease;
-
- if (pPriv->type == KB_SUN4) {
- if (ksym == XK_Num_Lock) {
- ModLight (device, xE->u.u.type == KeyPress, XLED_NUM_LOCK);
- } else if (ksym == XK_Scroll_Lock) {
- ModLight (device, xE->u.u.type == KeyPress, XLED_SCROLL_LOCK);
- } else if (ksym == SunXK_Compose) {
- ModLight (device, xE->u.u.type == KeyPress, XLED_COMPOSE);
- if (xE->u.u.type == KeyPress) composeCount = 2;
- else composeCount = 0;
- } else if (keyModifiers & LockMask) {
- ModLight (device, xE->u.u.type == KeyPress, XLED_CAPS_LOCK);
- }
- if (xE->u.u.type == KeyRelease) {
- if (composeCount > 0 && --composeCount == 0) {
- pseudoKey(device, FALSE,
- LookupKeyCode(SunXK_Compose, &device->key->curKeySyms));
- ModLight (device, FALSE, XLED_COMPOSE);
- }
- }
- }
-
- if ((xE->u.u.type == KeyPress) && (keyModifiers == 0)) {
- /* initialize new AutoRepeater event & mark AutoRepeater on */
- autoRepeatEvent = *xE;
- autoRepeatFirst = TRUE;
- autoRepeatKeyDown++;
- autoRepeatLastKeyDownTv = fe->time;
- }
- return FALSE;
-}
-
-void sunKbdEnqueueEvent (
- DeviceIntPtr device,
- Firm_event *fe)
-{
- xEvent xE;
- BYTE keycode;
- CARD8 keyModifiers;
-
- keycode = (fe->id & 0x7f) + MIN_KEYCODE;
-
- keyModifiers = device->key->modifierMap[keycode];
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- if (autoRepeatKeyDown && (keyModifiers == 0) &&
- ((fe->value == VKEY_DOWN) || (keycode == autoRepeatEvent.u.u.detail))) {
- /*
- * Kill AutoRepeater on any real non-modifier key down, or auto key up
- */
- autoRepeatKeyDown = 0;
- }
-#ifdef XKB
- }
-#endif
- xE.u.keyButtonPointer.time = TVTOMILLI(fe->time);
- xE.u.u.type = ((fe->value == VKEY_UP) ? KeyRelease : KeyPress);
- xE.u.u.detail = keycode;
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- if (DoSpecialKeys(device, &xE, fe))
- return;
-#ifdef XKB
- }
-#endif /* ! XKB */
- mieqEnqueue (&xE);
-}
-
-void sunEnqueueAutoRepeat ()
-{
- int delta;
- int i, mask;
- DeviceIntPtr device = (DeviceIntPtr)LookupKeyboardDevice();
- KeybdCtrl* ctrl = &device->kbdfeed->ctrl;
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr) device->public.devicePrivate;
-
- if (ctrl->autoRepeat != AutoRepeatModeOn) {
- autoRepeatKeyDown = 0;
- return;
- }
- i=(autoRepeatEvent.u.u.detail >> 3);
- mask=(1 << (autoRepeatEvent.u.u.detail & 7));
- if (!(ctrl->autoRepeats[i] & mask)) {
- autoRepeatKeyDown = 0;
- return;
- }
-
- /*
- * Generate auto repeat event. XXX one for now.
- * Update time & pointer location of saved KeyPress event.
- */
-
- delta = TVTOMILLI(autoRepeatDeltaTv);
- autoRepeatFirst = FALSE;
-
- /*
- * Fake a key up event and a key down event
- * for the last key pressed.
- */
- autoRepeatEvent.u.keyButtonPointer.time += delta;
- autoRepeatEvent.u.u.type = KeyRelease;
-
- /*
- * hold off any more inputs while we get these safely queued up
- * further SIGIO are
- */
- sunEnqueueEvent (&autoRepeatEvent);
- autoRepeatEvent.u.u.type = KeyPress;
- sunEnqueueEvent (&autoRepeatEvent);
- if (ctrl->click) bell (pPriv->fd, 0);
-
- /* Update time of last key down */
- tvplus(autoRepeatLastKeyDownTv, autoRepeatLastKeyDownTv,
- autoRepeatDeltaTv);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunChangeKbdTranslation
- * Makes operating system calls to set keyboard translation
- * and direction on or off.
- *
- * Results:
- * -1 if failure, else 0.
- *
- * Side Effects:
- * Changes kernel management of keyboard.
- *
- *-----------------------------------------------------------------------
- */
-int sunChangeKbdTranslation(
- int fd,
- Bool makeTranslated)
-{
- int tmp;
- sigset_t hold_mask, old_mask;
- int toread;
- char junk[8192];
-
- (void) sigfillset(&hold_mask);
- (void) sigprocmask(SIG_BLOCK, &hold_mask, &old_mask);
- if (makeTranslated) {
- if (ioctl (fd, TIO_ENSCANMODE, &tmp) == -1) {
- Error ("Setting keyboard translation TIO_ENSCANMODE");
- ErrorF ("sunChangeKbdTranslation: kbdFd=%d\n", fd);
- return -1;
- }
- } else {
- if (ioctl (fd, TIO_DISSCANMODE, &tmp) == -1) {
- Error ("Setting keyboard translation TIO_DISSCANMODE");
- ErrorF ("sunChangeKbdTranslation: kbdFd=%d\n", fd);
- }
- }
- if (ioctl (fd, FIONREAD, &toread) != -1 && toread > 0) {
- while (toread) {
- tmp = toread;
- if (toread > sizeof (junk))
- tmp = sizeof (junk);
- (void) read (fd, junk, tmp);
- toread -= tmp;
- }
- }
- (void) sigprocmask(SIG_SETMASK, &old_mask, (sigset_t *)NULL);
- return 0;
-}
-
-/*ARGSUSED*/
-Bool LegalModifier(key, pDev)
- unsigned int key;
- DevicePtr pDev;
-{
- return TRUE;
-}
-
-/*ARGSUSED*/
-void sunBlockHandler(nscreen, pbdata, pptv, pReadmask)
- int nscreen;
- pointer pbdata;
- struct timeval **pptv;
- pointer pReadmask;
-{
- KeybdCtrl* ctrl = &((DeviceIntPtr)LookupKeyboardDevice())->kbdfeed->ctrl;
- static struct timeval artv = { 0, 0 }; /* autorepeat timeval */
-
- if (!autoRepeatKeyDown)
- return;
-
- if (ctrl->autoRepeat != AutoRepeatModeOn)
- return;
-
- if (autoRepeatFirst == TRUE)
- artv.tv_usec = sunAutoRepeatInitiate;
- else
- artv.tv_usec = sunAutoRepeatDelay;
- *pptv = &artv;
-
-}
-
-/*ARGSUSED*/
-void sunWakeupHandler(nscreen, pbdata, err, pReadmask)
- int nscreen;
- pointer pbdata;
- unsigned long err;
- pointer pReadmask;
-{
- KeybdCtrl* ctrl = &((DeviceIntPtr)LookupKeyboardDevice())->kbdfeed->ctrl;
- struct timeval tv;
-
- /* this works around a weird behaviour on LynxOS 2.4.0:
- * usually we have no problems using true SIGIO driven mouse input
- * as it is used on the other UN*X Suns. On LynxOS we have a
- * strange behaviour upon the very first server startup after a
- * reboot. We won't get SIGIOs from the mouse device. The mouse
- * will only move if we get SIGIOs from the keyboard.
- * The solution (for now) is to use an additional WakeupHandler and
- * poll the mouse file descriptor.
- */
- struct fd_set devicesWithInput;
- struct fd_set device;
- extern struct fd_set EnabledDevices;
-
- XFD_ANDSET(&devicesWithInput, ((struct fd_set *) pReadmask), &EnabledDevices);
-
- FD_ZERO(&device);
- FD_SET(sunPtrPriv.fd, &device);
- XFD_ANDSET(&device, &device, &devicesWithInput);
- if (XFD_ANYSET(&device)) {
- sigset_t newsigmask;
-
- (void) sigemptyset (&newsigmask);
- (void) sigaddset (&newsigmask, SIGIO);
- (void) sigprocmask (SIG_BLOCK, &newsigmask, (sigset_t *)NULL);
- sunEnqueueMseEvents();
- (void) sigprocmask (SIG_UNBLOCK, &newsigmask, (sigset_t *)NULL);
- }
-
-#ifdef XKB
- if (!noXkbExtension)
- return;
-#endif
-
- if (ctrl->autoRepeat != AutoRepeatModeOn)
- return;
-
- if (autoRepeatKeyDown) {
- X_GETTIMEOFDAY(&tv);
- tvminus(autoRepeatDeltaTv, tv, autoRepeatLastKeyDownTv);
- if (autoRepeatDeltaTv.tv_sec > 0 ||
- (!autoRepeatFirst && autoRepeatDeltaTv.tv_usec >
- sunAutoRepeatDelay) ||
- (autoRepeatDeltaTv.tv_usec >
- sunAutoRepeatInitiate))
- autoRepeatReady++;
- }
-
- if (autoRepeatReady)
- {
- sunEnqueueAutoRepeat ();
- autoRepeatReady = 0;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyMouse.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyMouse.c
deleted file mode 100644
index 00df3db7c..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyMouse.c
+++ /dev/null
@@ -1,649 +0,0 @@
-/* $Xorg: sunLyMouse.c,v 1.3 2000/08/17 19:48:37 cpqbld Exp $ */
-/*
- * This is sunMouse.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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, and that the name of Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyMouse.c,v 3.3 2001/01/17 22:36:53 dawes Exp $ */
-
-/*-
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-/*
- * Copyright 1991, 1992, 1993 Kaleb S. Keithley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. Kaleb S. Keithley makes no
- * representations about the suitability of this software for
- * any purpose. It is provided "as is" without express or
- * implied warranty.
- */
-
-#define NEED_EVENTS
-#include "sun.h"
-
-Bool sunActiveZaphod = TRUE;
-
-static Bool sunCursorOffScreen();
-static void sunCrossScreen();
-static void sunWarpCursor();
-
-miPointerScreenFuncRec sunPointerScreenFuncs = {
- sunCursorOffScreen,
- sunCrossScreen,
- sunWarpCursor,
-};
-
-/*-
- *-----------------------------------------------------------------------
- * sunMouseCtrl --
- * Alter the control parameters for the mouse. Since acceleration
- * etc. is done from the PtrCtrl record in the mouse's device record,
- * there's nothing to do here.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-/*ARGSUSED*/
-static
-void sunMouseCtrl (
- DeviceIntPtr device,
- PtrCtrl* ctrl)
-{
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunMouseProc --
- * Handle the initialization, etc. of a mouse
- *
- * Results:
- * none.
- *
- * Side Effects:
- *
- * Note:
- * When using sunwindows, all input comes off a single fd, stored in the
- * global windowFd. Therefore, only one device should be enabled and
- * disabled, even though the application still sees both mouse and
- * keyboard. We have arbitrarily chosen to enable and disable windowFd
- * in the keyboard routine sunKbdProc rather than in sunMouseProc.
- *
- *-----------------------------------------------------------------------
- */
-int sunMouseProc (
- DeviceIntPtr device,
- int what)
-{
- struct termio tty;
- DevicePtr pMouse = (DevicePtr) device;
- int format;
- static int oformat;
- BYTE map[4];
- char *dev;
-
- switch (what) {
- case DEVICE_INIT:
- if (pMouse != LookupPointerDevice()) {
- ErrorF ("Cannot open non-system mouse");
- return !Success;
- }
- if (sunPtrPriv.fd == -1)
- return !Success;
- pMouse->devicePrivate = (pointer) &sunPtrPriv;
- pMouse->on = FALSE;
- map[1] = 1;
- map[2] = 2;
- map[3] = 3;
- InitPointerDeviceStruct(
- pMouse, map, 3, miPointerGetMotionEvents,
- sunMouseCtrl, miPointerGetMotionBufferSize());
- break;
-
- case DEVICE_ON:
- /* set mouse to raw mode */
- if (ioctl(sunPtrPriv.fd, TCGETA, &tty) != -1) {
- tty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- tty.c_oflag = 0;
- tty.c_cflag = CREAD | CS8;
- tty.c_lflag = 0;
- tty.c_line = 0;
- tty.c_cc[VTIME] = 0;
- tty.c_cc[VMIN] = 0;
- if (ioctl(sunPtrPriv.fd, TCSETAW, &tty) < 0)
- perror("ioctl TCSETAW");
- } else
- perror("ioctl TCGETA");
- sunPtrPriv.bmask = 0;
- AddEnabledDevice (sunPtrPriv.fd);
- pMouse->on = TRUE;
- break;
-
- case DEVICE_CLOSE:
- pMouse->on = FALSE;
- break;
-
- case DEVICE_OFF:
- pMouse->on = FALSE;
- RemoveEnabledDevice (sunPtrPriv.fd);
- break;
- }
- return Success;
-}
-
-/* mouse protocol code from XFree86 */
-
-#define P_MS 0 /* Microsoft */
-#define P_MSC 1 /* Mouse Systems Corp */
-#define P_MM 2 /* MMseries */
-#define P_LOGI 3 /* Logitech */
-#define P_BM 4 /* BusMouse ??? */
-#define P_LOGIMAN 5 /* MouseMan / TrackMan
- [CHRIS-211092] */
-#define P_PS2 6 /* PS/2 mouse */
-#define P_MMHIT 7 /* MM_HitTab */
-
-static int
-xf86MouseProtocol(rBuf, nBytes, evBuf)
- unsigned char *rBuf;
- int nBytes;
- Firm_event evBuf[];
-{
- int i, buttons, dx, dy;
- static int pBufP = 0;
- static unsigned char pBuf[8];
- static int lastButtons;
- int change;
- int numEvents = 0;
-
- const int mseType = P_MSC;
- const int chordMiddle = 0;
-
- static unsigned char proto[8][5] = {
- /* hd_mask hd_id dp_mask dp_id nobytes */
- { 0x40, 0x40, 0x40, 0x00, 3 }, /* MicroSoft */
- { 0xf8, 0x80, 0x00, 0x00, 5 }, /* MouseSystems */
- { 0xe0, 0x80, 0x80, 0x00, 3 }, /* MMSeries */
- { 0xe0, 0x80, 0x80, 0x00, 3 }, /* Logitech */
- { 0xf8, 0x80, 0x00, 0x00, 5 }, /* BusMouse */
- { 0x40, 0x40, 0x40, 0x00, 3 }, /* MouseMan
- [CHRIS-211092] */
- { 0xc0, 0x00, 0x00, 0x00, 3 }, /* PS/2 mouse */
- { 0xe0, 0x80, 0x80, 0x00, 3 }, /* MM_HitTablet */
- };
-
- for ( i=0; i < nBytes; i++) {
- /*
- * Hack for resyncing: We check here for a package that is:
- * a) illegal (detected by wrong data-package header)
- * b) invalid (0x80 == -128 and that might be wrong for MouseSystems)
- * c) bad header-package
- *
- * NOTE: b) is a voilation of the MouseSystems-Protocol, since values of
- * -128 are allowed, but since they are very seldom we can easily
- * use them as package-header with no button pressed.
- * NOTE/2: On a PS/2 mouse any byte is valid as a data byte. Furthermore,
- * 0x80 is not valid as a header byte. For a PS/2 mouse we skip
- * checking data bytes.
- * For resyncing a PS/2 mouse we require the two most significant
- * bits in the header byte to be 0. These are the overflow bits,
- * and in case of an overflow we actually lose sync. Overflows
- * are very rare, however, and we quickly gain sync again after
- * an overflow condition. This is the best we can do. (Actually,
- * we could use bit 0x08 in the header byte for resyncing, since
- * that bit is supposed to be always on, but nobody told
- * Microsoft...)
- */
- if (pBufP != 0 && mseType != P_PS2 &&
- ((rBuf[i] & proto[mseType][2]) != proto[mseType][3]
- || rBuf[i] == 0x80))
- {
- pBufP = 0; /* skip package */
- }
-
- if (pBufP == 0 &&
- (rBuf[i] & proto[mseType][0]) != proto[mseType][1])
- {
- /*
- * Hack for Logitech MouseMan Mouse - Middle button
- *
- * Unfortunately this mouse has variable length packets: the standard
- * Microsoft 3 byte packet plus an optional 4th byte whenever the
- * middle button status changes.
- *
- * We have already processed the standard packet with the movement
- * and button info. Now post an event message with the old status
- * of the left and right buttons and the updated middle button.
- */
-
- /*
- * Even worse, different MouseMen and TrackMen differ in the 4th
- * byte: some will send 0x00/0x20, others 0x01/0x21, or even
- * 0x02/0x22, so I have to strip off the lower bits. [CHRIS-211092]
- */
- if ((mseType == P_MS || mseType == P_LOGIMAN)
- && (char)(rBuf[i] & ~0x23) == 0)
- {
- buttons = ((int)(rBuf[i] & 0x20) >> 4)
- | (lastButtons & 0x05);
-
- change = buttons ^ lastButtons;
- /* a little naive, but sufficient for now */
- if (change & 4)
- {
- evBuf[numEvents].id = MS_LEFT;
- evBuf[numEvents].value = (buttons & 4) ? VKEY_DOWN : VKEY_UP;
- ++numEvents;
- }
- if (change & 2)
- {
- evBuf[numEvents].id = MS_MIDDLE;
- evBuf[numEvents].value = (buttons & 2) ? VKEY_DOWN : VKEY_UP;
- ++numEvents;
- }
- if (change & 1)
- {
- evBuf[numEvents].id = MS_RIGHT;
- evBuf[numEvents].value = (buttons & 1) ? VKEY_DOWN : VKEY_UP;
- ++numEvents;
- }
- lastButtons = buttons;
- }
-
- continue; /* skip package */
- }
-
-
- pBuf[pBufP++] = rBuf[i];
- if (pBufP != proto[mseType][4]) continue;
-
-
- /*
- * assembly full package
- */
- switch(mseType) {
-
- case P_LOGIMAN: /* MouseMan / TrackMan [CHRIS-211092] */
- case P_MS: /* Microsoft */
- if (chordMiddle)
- buttons = (((int) pBuf[0] & 0x30) == 0x30) ? 2 :
- ((int)(pBuf[0] & 0x20) >> 3)
- | ((int)(pBuf[0] & 0x10) >> 4);
- else {
- buttons = (lastButtons & 2)
- | ((int)(pBuf[0] & 0x20) >> 3)
- | ((int)(pBuf[0] & 0x10) >> 4);
- }
- dx = (char)((pBuf[0] & 0x03) << 6) | (pBuf[1] & 0x3F);
- dy = (char)((pBuf[0] & 0x0C) << 4) | (pBuf[2] & 0x3F);
- break;
-
- case P_MSC: /* Mouse Systems Corp */
- buttons = (~pBuf[0]) & 0x07;
- dx = (char)(pBuf[1]) + (char)(pBuf[3]);
- dy = - ((char)(pBuf[2]) + (char)(pBuf[4]));
- break;
-
-
- case P_MMHIT: /* MM_HitTablet */
- buttons = pBuf[0] & 0x07;
- if (buttons != 0)
- buttons = 1 << (buttons - 1);
- dx = (pBuf[0] & 0x10) ? pBuf[1] : - pBuf[1];
- dy = (pBuf[0] & 0x08) ? - pBuf[2] : pBuf[2];
- break;
-
- case P_MM: /* MM Series */
- case P_LOGI: /* Logitech Mice */
- buttons = pBuf[0] & 0x07;
- dx = (pBuf[0] & 0x10) ? pBuf[1] : - pBuf[1];
- dy = (pBuf[0] & 0x08) ? - pBuf[2] : pBuf[2];
- break;
-
- case P_BM: /* BusMouse */
- buttons = (~pBuf[0]) & 0x07;
- dx = pBuf[1];
- dy = - pBuf[2];
- break;
-
- case P_PS2: /* PS/2 mouse */
- buttons = (pBuf[0] & 0x04) >> 1 | /* Middle */
- (pBuf[0] & 0x02) >> 1 | /* Right */
- (pBuf[0] & 0x01) << 2; /* Left */
- dx = (pBuf[0] & 0x10) ? pBuf[1]-256 : pBuf[1];
- dy = (pBuf[0] & 0x20) ? -(pBuf[2]-256) : -pBuf[2];
- break;
- }
-
- /* a little naive, but sufficient for now */
- change = buttons ^ lastButtons;
- if (change & 4)
- {
- evBuf[numEvents].id = MS_LEFT;
- evBuf[numEvents].value = (buttons & 4) ? VKEY_DOWN : VKEY_UP;
- ++numEvents;
- }
- if (change & 2)
- {
- evBuf[numEvents].id = MS_MIDDLE;
- evBuf[numEvents].value = (buttons & 2) ? VKEY_DOWN : VKEY_UP;
- ++numEvents;
- }
- if (change & 1)
- {
- evBuf[numEvents].id = MS_RIGHT;
- evBuf[numEvents].value = (buttons & 1) ? VKEY_DOWN : VKEY_UP;
- ++numEvents;
- }
- lastButtons = buttons;
-
- if (dx)
- {
- evBuf[numEvents].id = LOC_X_DELTA;
- evBuf[numEvents].value = dx;
- ++numEvents;
- }
- if (dy)
- {
- evBuf[numEvents].id = LOC_Y_DELTA;
- evBuf[numEvents].value = -dy;
- ++numEvents;
- }
- pBufP = 0;
- }
- return numEvents;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunMouseGetEvents --
- * Return the events waiting in the wings for the given mouse.
- *
- * Results:
- * A pointer to an array of Firm_events or (Firm_event *)0 if no events
- * The number of events contained in the array.
- * A boolean as to whether more events might be available.
- *
- * Side Effects:
- * None.
- *-----------------------------------------------------------------------
- */
-
-Firm_event* sunMouseGetEvents (
- int fd,
- Bool on,
- int* pNumEvents,
- Bool* pAgain)
-{
- static Firm_event evBuf[MAXEVENTS]; /* Buffer for Firm_events */
- int nBytes; /* number of bytes available. */
- char buf[8];
-
- if ((nBytes = read(fd, buf, sizeof(buf))) == -1) {
- if (errno == EWOULDBLOCK || errno == EAGAIN || errno == EINTR) {
- *pNumEvents = 0;
- if (errno == EINTR)
- *pAgain = TRUE;
- else
- *pAgain = FALSE;
- } else {
- Error ("sunMouseGetEvents read");
- FatalError ("Could not read from mouse");
- }
- } else {
- if (on) {
- *pAgain = (nBytes == sizeof(buf)); /* very unlikely... */
- if (*pNumEvents = xf86MouseProtocol(buf, nBytes, evBuf))
- {
- struct timeval now;
- int i;
-
- X_GETTIMEOFDAY(&now);
- for (i=0;i<*pNumEvents;i++)
- evBuf[i].time = now;
- }
- } else {
- *pNumEvents = 0;
- *pAgain = FALSE;
- }
- }
- return evBuf;
-}
-
-
-/*-
- *-----------------------------------------------------------------------
- * MouseAccelerate --
- * Given a delta and a mouse, return the acceleration of the delta.
- *
- * Results:
- * The corrected delta
- *
- * Side Effects:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-static short
-MouseAccelerate (device, delta)
- DeviceIntPtr device;
- int delta;
-{
- int sgn = sign(delta);
- PtrCtrl *pCtrl;
- short ret;
-
- delta = abs(delta);
- pCtrl = &device->ptrfeed->ctrl;
- if (delta > pCtrl->threshold) {
- ret =
- (short) sgn *
- (pCtrl->threshold + ((delta - pCtrl->threshold) * pCtrl->num) /
- pCtrl->den);
- } else {
- ret = (short) sgn * delta;
- }
- return ret;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunMouseEnqueueEvent --
- * Given a Firm_event for a mouse, pass it off the the dix layer
- * properly converted...
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The cursor may be redrawn...? devPrivate/x/y will be altered.
- *
- *-----------------------------------------------------------------------
- */
-
-void sunMouseEnqueueEvent (
- DeviceIntPtr device,
- Firm_event *fe)
-{
- xEvent xE;
- sunPtrPrivPtr pPriv; /* Private data for pointer */
- int bmask; /* Temporary button mask */
- unsigned long time;
- int x, y;
-
- pPriv = (sunPtrPrivPtr)device->public.devicePrivate;
-
- time = xE.u.keyButtonPointer.time = TVTOMILLI(fe->time);
-
- switch (fe->id) {
- case MS_LEFT:
- case MS_MIDDLE:
- case MS_RIGHT:
- /*
- * A button changed state. Sometimes we will get two events
- * for a single state change. Should we get a button event which
- * reflects the current state of affairs, that event is discarded.
- *
- * Mouse buttons start at 1.
- */
- xE.u.u.detail = (fe->id - MS_LEFT) + 1;
- bmask = 1 << xE.u.u.detail;
- if (fe->value == VKEY_UP) {
- if (pPriv->bmask & bmask) {
- xE.u.u.type = ButtonRelease;
- pPriv->bmask &= ~bmask;
- } else {
- return;
- }
- } else {
- if ((pPriv->bmask & bmask) == 0) {
- xE.u.u.type = ButtonPress;
- pPriv->bmask |= bmask;
- } else {
- return;
- }
- }
- mieqEnqueue (&xE);
- break;
- case LOC_X_DELTA:
- miPointerDeltaCursor (MouseAccelerate(device,fe->value),0,time);
- break;
- case LOC_Y_DELTA:
- /*
- * For some reason, motion up generates a positive y delta
- * and motion down a negative delta, so we must subtract
- * here instead of add...
- */
- miPointerDeltaCursor (0,-MouseAccelerate(device,fe->value),time);
- break;
- case LOC_X_ABSOLUTE:
- miPointerPosition (&x, &y);
- miPointerAbsoluteCursor (fe->value, y, time);
- break;
- case LOC_Y_ABSOLUTE:
- miPointerPosition (&x, &y);
- miPointerAbsoluteCursor (x, fe->value, time);
- break;
- default:
- FatalError ("sunMouseEnqueueEvent: unrecognized id\n");
- break;
- }
-}
-
-/*ARGSUSED*/
-static Bool
-sunCursorOffScreen (pScreen, x, y)
- ScreenPtr *pScreen;
- int *x, *y;
-{
- int index, ret = FALSE;
- extern Bool PointerConfinedToScreen();
-
- if (PointerConfinedToScreen()) return TRUE;
- /*
- * Active Zaphod implementation:
- * increment or decrement the current screen
- * if the x is to the right or the left of
- * the current screen.
- */
- if (sunActiveZaphod &&
- screenInfo.numScreens > 1 && (*x >= (*pScreen)->width || *x < 0)) {
- index = (*pScreen)->myNum;
- if (*x < 0) {
- index = (index ? index : screenInfo.numScreens) - 1;
- *pScreen = screenInfo.screens[index];
- *x += (*pScreen)->width;
- } else {
- *x -= (*pScreen)->width;
- index = (index + 1) % screenInfo.numScreens;
- *pScreen = screenInfo.screens[index];
- }
- ret = TRUE;
- }
- return ret;
-}
-
-static void
-sunCrossScreen (pScreen, entering)
- ScreenPtr pScreen;
- Bool entering;
-{
- if (sunFbs[pScreen->myNum].EnterLeave)
- (*sunFbs[pScreen->myNum].EnterLeave) (pScreen, entering ? 0 : 1);
-}
-
-static void
-sunWarpCursor (pScreen, x, y)
- ScreenPtr pScreen;
- int x, y;
-{
- sigset_t newsigmask;
-
- (void) sigemptyset (&newsigmask);
- (void) sigaddset (&newsigmask, SIGIO);
- (void) sigprocmask (SIG_BLOCK, &newsigmask, (sigset_t *)NULL);
- miPointerWarpCursor (pScreen, x, y);
- (void) sigprocmask (SIG_UNBLOCK, &newsigmask, (sigset_t *)NULL);
-}
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyUtil.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyUtil.c
deleted file mode 100644
index e260acfee..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyUtil.c
+++ /dev/null
@@ -1,509 +0,0 @@
-/* $Xorg: sunLyUtil.c,v 1.3 2000/08/17 19:48:37 cpqbld Exp $ */
-/*
- * CG3 and CG6 utility functions for LynxOS, derived from NetBSD
- * Copyright 1996 by Thomas Mueller
- *
- * 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, and that the name of Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyUtil.c,v 3.1 1996/12/27 06:51:42 dawes Exp $ */
-
-/* $NetBSD: bt_subr.c,v 1.4 1994/11/20 20:51:54 deraadt Exp $ */
-
-/*
- * Copyright (c) 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Lawrence Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)bt_subr.c 8.2 (Berkeley) 1/21/94
- */
-
-/* adaption for LynxOS microSPARC 2.4.0 and X11R6[.1]
- * Copyright 1996 by Thomas Mueller <tm@systrix.de>
- *
- * 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, and that the name of Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#include "sun.h"
-#include "btreg.h"
-#include "btvar.h"
-#include "cgsixreg.h"
-#define useracc(a,b,c) (1)
-
-/*
- * Common code for dealing with Brooktree video DACs.
- * (Contains some software-only code as well, since the colormap
- * ioctls are shared between the cgthree and cgsix drivers.)
- */
-
-/*
- * Implement an FBIOGETCMAP-like ioctl.
- */
-int
-bt_getcmap(struct fbcmap *p, union bt_cmap *cm, int cmsize)
-{
- u_int i;
- u_int start;
- u_int count;
- u_char *cp;
-
- start = p->index;
- count = p->count;
- if (start >= cmsize || start + count > cmsize)
- return (EINVAL);
- if (!useracc(p->red, count, B_WRITE) ||
- !useracc(p->green, count, B_WRITE) ||
- !useracc(p->blue, count, B_WRITE))
- return (EFAULT);
- for (cp = &cm->cm_map[start][0], i = 0; i < count; cp += 3, i++) {
- p->red[i] = cp[0];
- p->green[i] = cp[1];
- p->blue[i] = cp[2];
- }
- return (0);
-}
-
-/*
- * Implement the software portion of an FBIOPUTCMAP-like ioctl.
- */
-int
-bt_putcmap(struct fbcmap *p, union bt_cmap *cm, int cmsize)
-{
- u_int i;
- int start;
- int count;
- u_char *cp;
-
- start = p->index;
- count = p->count;
- if (start >= cmsize || start + count > cmsize)
- return (EINVAL);
- if (!useracc(p->red, count, B_READ) ||
- !useracc(p->green, count, B_READ) ||
- !useracc(p->blue, count, B_READ))
- return (EFAULT);
- for (cp = &cm->cm_map[start][0], i = 0; i < count; cp += 3, i++) {
- cp[0] = p->red[i];
- cp[1] = p->green[i];
- cp[2] = p->blue[i];
- }
- return (0);
-}
-
-union cursor_cmap { /* colormap, like bt_cmap, but tiny */
- u_char cm_map[2][3]; /* 2 R/G/B entries */
- u_int cm_chip[2]; /* 2 chip equivalents */
-};
-
-struct cg6_cursor { /* cg6 hardware cursor status */
- short cc_enable; /* cursor is enabled */
- struct fbcurpos cc_pos; /* position */
- struct fbcurpos cc_hot; /* hot-spot */
- struct fbcurpos cc_size; /* size of mask & image fields */
- u_int cc_bits[2][32]; /* space for mask & image bits */
- union cursor_cmap cc_color; /* cursor colormap */
-};
-
-static union bt_cmap sc_cmap; /* local copy of LUT */
-static int blanked = 1; /* to jump-start it ... */
-static struct cg6_cursor sc_cursor; /* cursor info */
-
-/*
- * Clean up hardware state (e.g., after bootup or after X crashes).
- */
-static void
-cg6_reset(fbFd * fb)
-{
- volatile struct cg6_tec_xxx *tec;
- int fhc;
- short fhcrev;
- volatile struct bt_regs *bt;
-
- /* hide the cursor, just in case */
- ((volatile struct cg6_thc *) (fb->thc))->thc_cursxy =
- (THC_CURSOFF << 16) | THC_CURSOFF;
-
- /* turn off frobs in transform engine (makes X11 work) */
- tec = fb->tec;
- tec->tec_mv = 0;
- tec->tec_clip = 0;
- tec->tec_vdc = 0;
-
- /* take care of hardware bugs in old revisions */
- fhcrev = (*(int *) fb->fhc >> FHC_REV_SHIFT) &
- (FHC_REV_MASK >> FHC_REV_SHIFT);
- if (fhcrev < 5) {
- /*
- * Keep current resolution; set cpu to 68020, set test
- * window (size 1Kx1K), and for rev 1, disable dest cache.
- */
- fhc = (*(int *) fb->fhc & FHC_RES_MASK) | FHC_CPU_68020 |
- FHC_TEST |
- (11 << FHC_TESTX_SHIFT) | (11 << FHC_TESTY_SHIFT);
- if (fhcrev < 2)
- fhc |= FHC_DST_DISABLE;
- *(int *) fb->fhc = fhc;
- }
- /* Enable cursor in Brooktree DAC. */
- bt = fb->ramdac;
- bt->bt_addr = 0x06 << 24;
- bt->bt_ctrl |= 0x03 << 24;
-}
-
-static void
-cg6_loadcursor(fbFd * fb)
-{
- volatile struct cg6_thc *thc;
- u_int edgemask;
- u_int m;
- int i;
-
- /*
- * Keep the top size.x bits. Here we *throw out* the top
- * size.x bits from an all-one-bits word, introducing zeros in
- * the top size.x bits, then invert all the bits to get what
- * we really wanted as our mask. But this fails if size.x is
- * 32---a sparc uses only the low 5 bits of the shift count---
- * so we have to special case that.
- */
- edgemask = ~0;
- if (sc_cursor.cc_size.x < 32)
- edgemask = ~(edgemask >> sc_cursor.cc_size.x);
- thc = (volatile struct cg6_thc *) fb->thc;
- for (i = 0; i < 32; i++) {
- m = sc_cursor.cc_bits[0][i] & edgemask;
- thc->thc_cursmask[i] = m;
- thc->thc_cursbits[i] = m & sc_cursor.cc_bits[1][i];
- }
-}
-
-static void
-cg6_setcursor(fbFd * fb)
-{
- /* we need to subtract the hot-spot value here */
-#define COORD(f) (sc_cursor.cc_pos.f - sc_cursor.cc_hot.f)
- ((volatile struct cg6_thc *) (fb->thc))->thc_cursxy = sc_cursor.cc_enable ?
- ((COORD(x) << 16) | (COORD(y) & 0xffff)) :
- (THC_CURSOFF << 16) | THC_CURSOFF;
-#undef COORD
-}
-
-/*
- * Load the cursor (overlay `foreground' and `background') colors.
- */
-static void
-cg6_loadomap(fbFd * fb)
-{
- volatile struct bt_regs *bt;
- u_int i;
-
- bt = (volatile struct bt_regs *) fb->ramdac;
- bt->bt_addr = 0x01 << 24; /* set background color */
- i = sc_cursor.cc_color.cm_chip[0];
- bt->bt_omap = i; /* R */
- bt->bt_omap = i << 8; /* G */
- bt->bt_omap = i << 16; /* B */
-
- bt->bt_addr = 0x03 << 24; /* set foreground color */
- bt->bt_omap = i << 24; /* R */
- i = sc_cursor.cc_color.cm_chip[1];
- bt->bt_omap = i; /* G */
- bt->bt_omap = i << 8; /* B */
-}
-
-/*
- * Load a subset of the current (new) colormap into the color DAC.
- */
-static void
-cg6_loadcmap(fbFd * fb, union bt_cmap *cm, int start, int ncolors)
-{
- volatile struct bt_regs *bt;
- u_int *ip;
- u_int i;
- int count;
-
- ip = &cm->cm_chip[BT_D4M3(start)]; /* start/4 * 3 */
- count = BT_D4M3(start + ncolors - 1) - BT_D4M3(start) + 3;
- bt = (struct bt_regs *) fb->ramdac;
- bt->bt_addr = BT_D4M4(start) << 24;
- while (--count >= 0) {
- i = *ip++;
- /* hardware that makes one want to pound boards with hammers */
- bt->bt_cmap = i;
- bt->bt_cmap = i << 8;
- bt->bt_cmap = i << 16;
- bt->bt_cmap = i << 24;
- }
-}
-
-/*
- * Undo the effect of an FBIOSVIDEO that turns the video off on a CG6
- */
-static void
-cg6_unblank(fbFd * dev)
-{
- volatile struct cg6_thc *thc = (volatile struct cg6_thc *) dev->thc;
- unsigned long x;
- unsigned long y;
-
- if (blanked) {
- thc->thc_misc = (thc->thc_misc & ~THC_MISC_VIDEN) | THC_MISC_VIDEN;
- }
- blanked = 0;
-}
-
-/*
- * Load a subset of the current (new) colormap into the Brooktree DAC.
- */
-static void
-cg3_loadcmap(fbFd * fb, union bt_cmap *cm, int start, int ncolors)
-{
- volatile struct bt_regs *bt;
- u_int *ip;
- int count;
-
- ip = &cm->cm_chip[BT_D4M3(start)]; /* start/4 * 3 */
- count = BT_D4M3(start + ncolors - 1) - BT_D4M3(start) + 3;
- bt = (struct bt_regs *) fb->ramdac;
- bt->bt_addr = BT_D4M4(start);
- while (--count >= 0)
- bt->bt_cmap = *ip++;
-}
-
-/*
- * Undo the effect of an FBIOSVIDEO that turns the video off on a CG3
- */
-static void
-cg3_unblank(fbFd * dev)
-{
- volatile struct bt_regs *bt;
-
- if (blanked) {
- bt = (struct bt_regs *) dev->ramdac;
- /* restore color 0 (and R of color 1) */
- bt->bt_addr = 0;
- bt->bt_cmap = sc_cmap.cm_chip[0];
-
- /* restore read mask */
- bt->bt_addr = 0x06; /* command reg */
- bt->bt_ctrl = 0x73; /* overlay plane */
- bt->bt_addr = 0x04; /* read mask */
- bt->bt_ctrl = 0xff; /* color planes */
- }
- blanked = 0;
-}
-
-int
-sunIoctl(fbFd * fb, int cmd, void *arg)
-{
- int error;
- int v;
- int i;
- u_int count;
- union cursor_cmap tcm;
-
- switch (cmd) {
- default:
- errno = EINVAL;
- return -1;
- case FBIOPUTCMAP:
-#define q ((struct fbcmap *)arg)
- if (error = bt_putcmap(q, &sc_cmap, 256))
- return error;
- if (fb->thc) { /* CG6 */
- cg6_loadcmap(fb, &sc_cmap, q->index, q->count);
- } else { /* CG3 */
- cg3_loadcmap(fb, &sc_cmap, q->index, q->count);
- }
- break;
- case FBIOSVIDEO:
- if (fb->thc) { /* CG6 */
- if (*(int *) arg)
- cg6_unblank(fb);
- else {
- if (!blanked) {
- volatile struct cg6_thc *thc =
- (volatile struct cg6_thc *) fb->thc;
-
- thc->thc_misc = (thc->thc_misc & ~THC_MISC_VIDEN);
- }
- blanked = 1;
- }
- } else { /* CG3 */
- if (*(int *) arg)
- cg3_unblank(fb);
- else {
- if (!blanked) {
- volatile struct bt_regs *bt;
-
- bt = (struct bt_regs *) fb->ramdac;
- bt->bt_addr = 0x06; /* command reg */
- bt->bt_ctrl = 0x70; /* overlay plane */
- bt->bt_addr = 0x04; /* read mask */
- bt->bt_ctrl = 0x00; /* color planes */
-
- /*
- * Set color 0 to black -- note that this overwrites R of
- * color 1.
- */
- bt->bt_addr = 0;
- bt->bt_cmap = 0;
-
- }
- blanked = 1;
- }
- }
- break;
-/* these are for both FBIOSCURSOR and FBIOGCURSOR */
-#define p ((struct fbcursor *)arg)
-#define cc (&sc_cursor)
-
- case FBIOSCURSOR:
- if (!fb->thc) { /* reject non CG6 */
- errno = EINVAL;
- return -1;
- }
- /*
- * For setcmap and setshape, verify parameters, so that
- * we do not get halfway through an update and then crap
- * out with the software state screwed up.
- */
- v = p->set;
- if (v & FB_CUR_SETCMAP) {
- /*
- * This use of a temporary copy of the cursor
- * colormap is not terribly efficient, but these
- * copies are small (8 bytes)...
- */
- tcm = cc->cc_color;
- error = bt_putcmap(&p->cmap, (union bt_cmap *) &tcm, 2);
- if (error)
- return (error);
- }
- if (v & FB_CUR_SETSHAPE) {
- if ((u_int) p->size.x > 32 || (u_int) p->size.y > 32)
- return (EINVAL);
- count = p->size.y * 32 / NBBY;
- if (!useracc(p->image, count, B_READ) ||
- !useracc(p->mask, count, B_READ))
- return (EFAULT);
- }
- /* parameters are OK; do it */
- if (v & (FB_CUR_SETCUR | FB_CUR_SETPOS | FB_CUR_SETHOT)) {
- if (v & FB_CUR_SETCUR)
- cc->cc_enable = p->enable;
- if (v & FB_CUR_SETPOS)
- cc->cc_pos = p->pos;
- if (v & FB_CUR_SETHOT)
- cc->cc_hot = p->hot;
- cg6_setcursor(fb);
- }
- if (v & FB_CUR_SETCMAP) {
- cc->cc_color = tcm;
- cg6_loadomap(fb); /* XXX defer to vertical retrace */
- }
- if (v & FB_CUR_SETSHAPE) {
- cc->cc_size = p->size;
- count = p->size.y * 32 / NBBY;
- bzero((caddr_t) cc->cc_bits, sizeof cc->cc_bits);
- bcopy(p->mask, (caddr_t) cc->cc_bits[0], count);
- bcopy(p->image, (caddr_t) cc->cc_bits[1], count);
- cg6_loadcursor(fb);
- }
- break;
- case FBIOSCURPOS:
- if (!fb->thc) { /* reject non CG6 */
- errno = EINVAL;
- return -1;
- }
- sc_cursor.cc_pos = *(struct fbcurpos *) arg;
- cg6_setcursor(fb);
- break;
-
- case FBIOGCURMAX:
- if (!fb->thc) { /* reject non CG6 */
- errno = EINVAL;
- return -1;
- }
- /* max cursor size is 32x32 */
- ((struct fbcurpos *) arg)->x = 32;
- ((struct fbcurpos *) arg)->y = 32;
- break;
- case FBIORESET:
- if (!fb->thc) { /* reject non CG6 */
- errno = EINVAL;
- return -1;
- }
- cg6_reset(fb);
- }
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/vuid_event.h b/nx-X11/programs/Xserver/hw/sunLynx/vuid_event.h
deleted file mode 100644
index 37b3fd5b3..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/vuid_event.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* $Xorg: vuid_event.h,v 1.3 2000/08/17 19:48:38 cpqbld Exp $ */
-/*
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Lawrence Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)vuid_event.h 8.1 (Berkeley) 6/11/93
- */
-/* $NetBSD: vuid_event.h,v 1.2 1994/11/20 20:53:39 deraadt Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/vuid_event.h,v 3.1 1996/12/27 06:51:43 dawes Exp $ */
-
-/*
- * The following is a minimal emulation of Sun's `Firm_event' structures
- * and related operations necessary to make X11 happy (i.e., make it
- * compile, and make old X11 binaries run).
- */
-typedef struct firm_event {
- u_short id; /* key or MS_* or LOC_[XY]_DELTA */
- u_short pad; /* unused, at least by X11 */
- int value; /* VKEY_{UP,DOWN} or locator delta */
- struct timeval time;
-} Firm_event;
-
-/*
- * Special `id' fields. These weird numbers simply match the old binaries.
- * Others are in 0..0x7f and are keyboard key numbers (keyboard dependent!).
- */
-#define MS_LEFT 0x7f20 /* left mouse button */
-#define MS_MIDDLE 0x7f21 /* middle mouse button */
-#define MS_RIGHT 0x7f22 /* right mouse button */
-#define LOC_X_DELTA 0x7f80 /* mouse delta-X */
-#define LOC_Y_DELTA 0x7f81 /* mouse delta-Y */
-#define LOC_X_ABSOLUTE 0x7f82 /* X compat, unsupported */
-#define LOC_Y_ABSOLUTE 0x7f83 /* X compat, unsupported */
-
-/*
- * Special `value' fields. These apply to keys and mouse buttons. The
- * value of a mouse delta is the delta. Note that positive deltas are
- * left and up (not left and down as you might expect).
- */
-#define VKEY_UP 0 /* key or button went up */
-#define VKEY_DOWN 1 /* key or button went down */
-
-/*
- * The following ioctls are clearly intended to take things in and out
- * of `firm event' mode. Since we always run in this mode (as far as
- * /dev/kbd and /dev/mouse are concerned, anyway), we always claim to
- * be in this mode and reject anything else.
- */
-#define VUIDSFORMAT _IOW('v', 1, int)
-#define VUIDGFORMAT _IOR('v', 2, int)
-#define VUID_FIRM_EVENT 1 /* the only format we support */
diff --git a/nx-X11/programs/Xserver/hw/vfb/Imakefile b/nx-X11/programs/Xserver/hw/vfb/Imakefile
deleted file mode 100644
index b58ff8fab..000000000
--- a/nx-X11/programs/Xserver/hw/vfb/Imakefile
+++ /dev/null
@@ -1,71 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.5 2000/08/17 19:48:38 cpqbld Exp $
-
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/hw/vfb/Imakefile,v 3.30 2001/05/31 16:11:10 dawes Exp $
-
-#include <Server.tmpl>
-
-#if HasShm
-SHMDEF = -DHAS_SHM
-#endif
-
-XCOMM add more architectures here as we discover them
-#if defined(HPArchitecture) || \
- (defined(SparcArchitecture) && !defined(LynxOSArchitecture)) || \
- SystemV4 || \
- defined(OSF1Architecture) || \
- defined(i386BsdArchitecture) || \
- (defined(KFreeBSDArchitecture) && defined(i386Architecture)) || \
- defined(LinuxArchitecture) || \
- defined(DarwinArchitecture)
-MMAPDEF = -DHAS_MMAP
-#endif
-
-#ifdef OS2Architecture
-SRCS1 = os2_stubs.c
-OBJS1 = os2_stubs.o
-#endif
-
-SRCSA = InitInput.c InitOutput.c stubs.c $(SRCS1) miinitext.c $(SRCS2)
-
-OBJSA = InitInput.o InitOutput.o stubs.o $(OBJS1) miinitext.o $(OBJS2)
-
-INCLUDES = -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \
- -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include -I../../os \
- -I$(SERVERSRC)/Xext -I$(EXTINCSRC) -I$(XINCLUDESRC) \
- -I$(SERVERSRC)/render
-
-DEFINES = $(OS_DEFINES) $(SHMDEF) $(MMAPDEF) -UXFree86LOADER
-
-
-#if BuildDPMS
-SRCSC = dpmsstubs.c
-OBJSC = dpmsstubs.o
-#endif
-
-SRCS = $(SRCSA) $(SRCSB) $(SRCSC)
-OBJS = $(OBJSA) $(OBJSB) $(OBJSC)
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(vfb,$(OBJS))
-
-#ifdef OS2Architecture
-LinkSourceFile(os2_stubs.c,../xfree86/os-support/os2)
-SpecialCObjectRule(os2_stubs,$(ICONFIGFILES),-DOS2NULLSELECT)
-#endif
-
-LinkSourceFile(stubs.c,../../Xi)
-SpecialCObjectRule(InitInput,$(ICONFIGFILES),$(EXT_DEFINES))
-
-LinkSourceFile(miinitext.c,$(SERVERSRC)/mi)
-SpecialCObjectRule(miinitext,$(ICONFIGFILES),$(EXT_DEFINES) $(PAN_DEFINES) -DNO_HW_ONLY_EXTS -DNO_MODULE_EXTS $(EXT_MODULE_DEFINES) -UXFree86LOADER)
-
-#if BuildDPMS
-LinkSourceFile(dpmsstubs.c,$(SERVERSRC)/Xext)
-SpecialCObjectRule(dpmsstubs,$(ICONFIGFILES),$(EXT_DEFINES))
-#endif
-
-InstallManPage(Xvfb,$(MANDIR))
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/vfb/InitInput.c b/nx-X11/programs/Xserver/hw/vfb/InitInput.c
deleted file mode 100644
index 57f466444..000000000
--- a/nx-X11/programs/Xserver/hw/vfb/InitInput.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/* $Xorg: InitInput.c,v 1.4 2001/02/09 02:04:44 xorgcvs Exp $ */
-/*
-
-Copyright 1993, 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.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/vfb/InitInput.c,v 3.9 2001/12/14 19:59:45 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#define NEED_EVENTS
-#include "mi.h"
-#include <X11/Xproto.h>
-#include "scrnintstr.h"
-#include "inputstr.h"
-#include <X11/Xos.h>
-#include "mibstore.h"
-#include "mipointer.h"
-#include "lk201kbd.h"
-#include <X11/keysym.h>
-
-Bool
-LegalModifier(unsigned int key, DevicePtr pDev)
-{
- return TRUE;
-}
-
-void
-ProcessInputEvents()
-{
- mieqProcessInputEvents();
- miPointerUpdate();
-}
-
-#define VFB_MIN_KEY 8
-#define VFB_MAX_KEY 255
-KeySym map[MAP_LENGTH * LK201_GLYPHS_PER_KEY];
-
-/* The only reason for using the LK201 mappings here was that they were
- * easy to lift.
- */
-static Bool
-GetLK201Mappings(KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
-#define INDEX(in) ((in - VFB_MIN_KEY) * LK201_GLYPHS_PER_KEY)
- int i;
-
- for (i = 0; i < MAP_LENGTH; i++)
- pModMap[i] = NoSymbol; /* make sure it is restored */
- pModMap[ KEY_LOCK ] = LockMask;
- pModMap[ KEY_SHIFT ] = ShiftMask;
- pModMap[ KEY_CTRL ] = ControlMask;
- pModMap[ KEY_COMPOSE ] = Mod1Mask;
-
- pKeySyms->minKeyCode = VFB_MIN_KEY;
- pKeySyms->maxKeyCode = VFB_MAX_KEY;
- pKeySyms->mapWidth = LK201_GLYPHS_PER_KEY;
- pKeySyms->map = map;
-
- for (i = 0; i < (MAP_LENGTH * LK201_GLYPHS_PER_KEY); i++)
- map[i] = NoSymbol; /* make sure it is restored */
-
- map[INDEX(KEY_F1)] = XK_F1;
- map[INDEX(KEY_F2)] = XK_F2;
- map[INDEX(KEY_F3)] = XK_F3;
- map[INDEX(KEY_F4)] = XK_F4;
- map[INDEX(KEY_F5)] = XK_F5;
- map[INDEX(KEY_F6)] = XK_F6;
- map[INDEX(KEY_F7)] = XK_F7;
- map[INDEX(KEY_F8)] = XK_F8;
- map[INDEX(KEY_F9)] = XK_F9;
- map[INDEX(KEY_F10)] = XK_F10;
- map[INDEX(KEY_F11)] = XK_F11;
- map[INDEX(KEY_F12)] = XK_F12;
- map[INDEX(KEY_F13)] = XK_F13;
- map[INDEX(KEY_F14)] = XK_F14;
-
- map[INDEX(KEY_HELP)] = XK_Help;
- map[INDEX(KEY_MENU)] = XK_Menu;
-
- map[INDEX(KEY_F17)] = XK_F17;
- map[INDEX(KEY_F18)] = XK_F18;
- map[INDEX(KEY_F19)] = XK_F19;
- map[INDEX(KEY_F20)] = XK_F20;
-
- map[INDEX(KEY_FIND)] = XK_Find;
- map[INDEX(KEY_INSERT_HERE)] = XK_Insert;
- map[INDEX(KEY_REMOVE)] = XK_Delete;
- map[INDEX(KEY_SELECT)] = XK_Select;
- map[INDEX(KEY_PREV_SCREEN)] = XK_Prior;
- map[INDEX(KEY_NEXT_SCREEN)] = XK_Next;
-
- map[INDEX(KEY_KP_0)] = XK_KP_0;
- map[INDEX(KEY_KP_PERIOD)] = XK_KP_Decimal;
- map[INDEX(KEY_KP_ENTER)] = XK_KP_Enter;
- map[INDEX(KEY_KP_1)] = XK_KP_1;
- map[INDEX(KEY_KP_2)] = XK_KP_2;
- map[INDEX(KEY_KP_3)] = XK_KP_3;
- map[INDEX(KEY_KP_4)] = XK_KP_4;
- map[INDEX(KEY_KP_5)] = XK_KP_5;
- map[INDEX(KEY_KP_6)] = XK_KP_6;
- map[INDEX(KEY_KP_COMMA)] = XK_KP_Separator;
- map[INDEX(KEY_KP_7)] = XK_KP_7;
- map[INDEX(KEY_KP_8)] = XK_KP_8;
- map[INDEX(KEY_KP_9)] = XK_KP_9;
- map[INDEX(KEY_KP_HYPHEN)] = XK_KP_Subtract;
- map[INDEX(KEY_KP_PF1)] = XK_KP_F1;
- map[INDEX(KEY_KP_PF2)] = XK_KP_F2;
- map[INDEX(KEY_KP_PF3)] = XK_KP_F3;
- map[INDEX(KEY_KP_PF4)] = XK_KP_F4;
-
- map[INDEX(KEY_LEFT)] = XK_Left;
- map[INDEX(KEY_RIGHT)] = XK_Right;
- map[INDEX(KEY_DOWN)] = XK_Down;
- map[INDEX(KEY_UP)] = XK_Up;
-
- map[INDEX(KEY_SHIFT)] = XK_Shift_L;
- map[INDEX(KEY_CTRL)] = XK_Control_L;
- map[INDEX(KEY_LOCK)] = XK_Caps_Lock;
- map[INDEX(KEY_COMPOSE)] = XK_Multi_key;
- map[INDEX(KEY_COMPOSE)+1] = XK_Meta_L;
- map[INDEX(KEY_DELETE)] = XK_Delete;
- map[INDEX(KEY_RETURN)] = XK_Return;
- map[INDEX(KEY_TAB)] = XK_Tab;
-
- map[INDEX(KEY_TILDE)] = XK_quoteleft;
- map[INDEX(KEY_TILDE)+1] = XK_asciitilde;
-
- map[INDEX(KEY_TR_1)] = XK_1;
- map[INDEX(KEY_TR_1)+1] = XK_exclam;
- map[INDEX(KEY_Q)] = XK_Q;
- map[INDEX(KEY_A)] = XK_A;
- map[INDEX(KEY_Z)] = XK_Z;
-
- map[INDEX(KEY_TR_2)] = XK_2;
- map[INDEX(KEY_TR_2)+1] = XK_at;
-
- map[INDEX(KEY_W)] = XK_W;
- map[INDEX(KEY_S)] = XK_S;
- map[INDEX(KEY_X)] = XK_X;
-
- map[INDEX(KEY_LANGLE_RANGLE)] = XK_less;
- map[INDEX(KEY_LANGLE_RANGLE)+1] = XK_greater;
-
- map[INDEX(KEY_TR_3)] = XK_3;
- map[INDEX(KEY_TR_3)+1] = XK_numbersign;
-
- map[INDEX(KEY_E)] = XK_E;
- map[INDEX(KEY_D)] = XK_D;
- map[INDEX(KEY_C)] = XK_C;
-
- map[INDEX(KEY_TR_4)] = XK_4;
- map[INDEX(KEY_TR_4)+1] = XK_dollar;
-
- map[INDEX(KEY_R)] = XK_R;
- map[INDEX(KEY_F)] = XK_F;
- map[INDEX(KEY_V)] = XK_V;
- map[INDEX(KEY_SPACE)] = XK_space;
-
- map[INDEX(KEY_TR_5)] = XK_5;
- map[INDEX(KEY_TR_5)+1] = XK_percent;
-
- map[INDEX(KEY_T)] = XK_T;
- map[INDEX(KEY_G)] = XK_G;
- map[INDEX(KEY_B)] = XK_B;
-
- map[INDEX(KEY_TR_6)] = XK_6;
- map[INDEX(KEY_TR_6)+1] = XK_asciicircum;
-
- map[INDEX(KEY_Y)] = XK_Y;
- map[INDEX(KEY_H)] = XK_H;
- map[INDEX(KEY_N)] = XK_N;
-
- map[INDEX(KEY_TR_7)] = XK_7;
- map[INDEX(KEY_TR_7)+1] = XK_ampersand;
-
- map[INDEX(KEY_U)] = XK_U;
- map[INDEX(KEY_J)] = XK_J;
- map[INDEX(KEY_M)] = XK_M;
-
- map[INDEX(KEY_TR_8)] = XK_8;
- map[INDEX(KEY_TR_8)+1] = XK_asterisk;
-
- map[INDEX(KEY_I)] = XK_I;
- map[INDEX(KEY_K)] = XK_K;
-
- map[INDEX(KEY_COMMA)] = XK_comma;
- map[INDEX(KEY_COMMA)+1] = XK_less;
-
- map[INDEX(KEY_TR_9)] = XK_9;
- map[INDEX(KEY_TR_9)+1] = XK_parenleft;
-
- map[INDEX(KEY_O)] = XK_O;
- map[INDEX(KEY_L)] = XK_L;
-
- map[INDEX(KEY_PERIOD)] = XK_period;
- map[INDEX(KEY_PERIOD)+1] = XK_greater;
-
- map[INDEX(KEY_TR_0)] = XK_0;
- map[INDEX(KEY_TR_0)+1] = XK_parenright;
-
- map[INDEX(KEY_P)] = XK_P;
-
- map[INDEX(KEY_SEMICOLON)] = XK_semicolon;
- map[INDEX(KEY_SEMICOLON)+1] = XK_colon;
-
- map[INDEX(KEY_QMARK)] = XK_slash;
- map[INDEX(KEY_QMARK)+1] = XK_question;
-
- map[INDEX(KEY_PLUS)] = XK_equal;
- map[INDEX(KEY_PLUS)+1] = XK_plus;
-
- map[INDEX(KEY_RBRACE)] = XK_bracketright;
- map[INDEX(KEY_RBRACE)+1] = XK_braceright;
-
- map[INDEX(KEY_VBAR)] = XK_backslash;
- map[INDEX(KEY_VBAR)+1] = XK_bar;
-
- map[INDEX(KEY_UBAR)] = XK_minus;
- map[INDEX(KEY_UBAR)+1] = XK_underscore;
-
- map[INDEX(KEY_LBRACE)] = XK_bracketleft;
- map[INDEX(KEY_LBRACE)+1] = XK_braceleft;
-
- map[INDEX(KEY_QUOTE)] = XK_quoteright;
- map[INDEX(KEY_QUOTE)+1] = XK_quotedbl;
-
- map[INDEX(KEY_F11)] = XK_Escape;
-
- return TRUE;
-#undef INDEX
-}
-
-static int
-vfbKeybdProc(DeviceIntPtr pDevice, int onoff)
-{
- KeySymsRec keySyms;
- CARD8 modMap[MAP_LENGTH];
- DevicePtr pDev = (DevicePtr)pDevice;
-
- switch (onoff)
- {
- case DEVICE_INIT:
- GetLK201Mappings(&keySyms, modMap);
- InitKeyboardDeviceStruct(pDev, &keySyms, modMap,
- (BellProcPtr)NoopDDA, (KbdCtrlProcPtr)NoopDDA);
- break;
- case DEVICE_ON:
- pDev->on = TRUE;
- break;
- case DEVICE_OFF:
- pDev->on = FALSE;
- break;
- case DEVICE_CLOSE:
- break;
- }
- return Success;
-}
-
-static int
-vfbMouseProc(DeviceIntPtr pDevice, int onoff)
-{
- BYTE map[4];
- DevicePtr pDev = (DevicePtr)pDevice;
-
- switch (onoff)
- {
- case DEVICE_INIT:
- map[1] = 1;
- map[2] = 2;
- map[3] = 3;
- InitPointerDeviceStruct(pDev, map, 3, miPointerGetMotionEvents,
- (PtrCtrlProcPtr)NoopDDA, miPointerGetMotionBufferSize());
- break;
-
- case DEVICE_ON:
- pDev->on = TRUE;
- break;
-
- case DEVICE_OFF:
- pDev->on = FALSE;
- break;
-
- case DEVICE_CLOSE:
- break;
- }
- return Success;
-}
-
-void
-InitInput(int argc, char *argv[])
-{
- DeviceIntPtr p, k;
- p = AddInputDevice(vfbMouseProc, TRUE);
- k = AddInputDevice(vfbKeybdProc, TRUE);
- RegisterPointerDevice(p);
- RegisterKeyboardDevice(k);
- miRegisterPointerDevice(screenInfo.screens[0], p);
- (void)mieqInit ((DevicePtr) k, (DevicePtr) p);
-}
-
-#ifdef XTESTEXT1
-void
-XTestGenerateEvent(int dev_type, int keycode, int keystate, int mousex,
- int mousey)
-{
-}
-
-void
-XTestGetPointerPos(short *fmousex, short *fmousey)
-{
-}
-
-void
-XTestJumpPointer(int jx, int jy, int dev_type)
-{
-}
-#endif
-
diff --git a/nx-X11/programs/Xserver/hw/vfb/InitOutput.c b/nx-X11/programs/Xserver/hw/vfb/InitOutput.c
deleted file mode 100644
index 630d3e133..000000000
--- a/nx-X11/programs/Xserver/hw/vfb/InitOutput.c
+++ /dev/null
@@ -1,1046 +0,0 @@
-/* $Xorg: InitOutput.c,v 1.4 2001/02/09 02:04:45 xorgcvs Exp $ */
-/*
-
-Copyright 1993, 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.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/vfb/InitOutput.c,v 3.25 2003/11/15 04:01:56 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if defined(WIN32)
-#include <X11/Xwinsock.h>
-#endif
-#include <stdio.h>
-#include <X11/X.h>
-#define NEED_EVENTS
-#include <X11/Xproto.h>
-#include <X11/Xos.h>
-#include "scrnintstr.h"
-#include "servermd.h"
-#define PSZ 8
-#include "fb.h"
-#include "mibstore.h"
-#include "colormapst.h"
-#include "gcstruct.h"
-#include "input.h"
-#include "mipointer.h"
-#include "micmap.h"
-#include <sys/types.h>
-#ifdef HAS_MMAP
-#include <sys/mman.h>
-#ifndef MAP_FILE
-#define MAP_FILE 0
-#endif
-#endif /* HAS_MMAP */
-#include <sys/stat.h>
-#include <errno.h>
-#ifndef WIN32
-#include <sys/param.h>
-#endif
-#include <X11/XWDFile.h>
-#ifdef HAS_SHM
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#endif /* HAS_SHM */
-#include "dix.h"
-#include "miline.h"
-
-#define VFB_DEFAULT_WIDTH 1280
-#define VFB_DEFAULT_HEIGHT 1024
-#define VFB_DEFAULT_DEPTH 8
-#define VFB_DEFAULT_WHITEPIXEL 1
-#define VFB_DEFAULT_BLACKPIXEL 0
-#define VFB_DEFAULT_LINEBIAS 0
-#define XWD_WINDOW_NAME_LEN 60
-
-typedef struct
-{
- int scrnum;
- int width;
- int paddedBytesWidth;
- int paddedWidth;
- int height;
- int depth;
- int bitsPerPixel;
- int sizeInBytes;
- int ncolors;
- char *pfbMemory;
- XWDColor *pXWDCmap;
- XWDFileHeader *pXWDHeader;
- Pixel blackPixel;
- Pixel whitePixel;
- unsigned int lineBias;
- CloseScreenProcPtr closeScreen;
-
-#ifdef HAS_MMAP
- int mmap_fd;
- char mmap_file[MAXPATHLEN];
-#endif
-
-#ifdef HAS_SHM
- int shmid;
-#endif
-} vfbScreenInfo, *vfbScreenInfoPtr;
-
-static int vfbNumScreens;
-static vfbScreenInfo vfbScreens[MAXSCREENS];
-static Bool vfbPixmapDepths[33];
-#ifdef HAS_MMAP
-static char *pfbdir = NULL;
-#endif
-typedef enum { NORMAL_MEMORY_FB, SHARED_MEMORY_FB, MMAPPED_FILE_FB } fbMemType;
-static fbMemType fbmemtype = NORMAL_MEMORY_FB;
-static char needswap = 0;
-static int lastScreen = -1;
-static Bool Render = TRUE;
-
-#define swapcopy16(_dst, _src) \
- if (needswap) { CARD16 _s = _src; cpswaps(_s, _dst); } \
- else _dst = _src;
-
-#define swapcopy32(_dst, _src) \
- if (needswap) { CARD32 _s = _src; cpswapl(_s, _dst); } \
- else _dst = _src;
-
-
-static void
-vfbInitializePixmapDepths(void)
-{
- int i;
- vfbPixmapDepths[1] = TRUE; /* always need bitmaps */
- for (i = 2; i <= 32; i++)
- vfbPixmapDepths[i] = FALSE;
-}
-
-static void
-vfbInitializeDefaultScreens(void)
-{
- int i;
-
- for (i = 0; i < MAXSCREENS; i++)
- {
- vfbScreens[i].scrnum = i;
- vfbScreens[i].width = VFB_DEFAULT_WIDTH;
- vfbScreens[i].height = VFB_DEFAULT_HEIGHT;
- vfbScreens[i].depth = VFB_DEFAULT_DEPTH;
- vfbScreens[i].blackPixel = VFB_DEFAULT_BLACKPIXEL;
- vfbScreens[i].whitePixel = VFB_DEFAULT_WHITEPIXEL;
- vfbScreens[i].lineBias = VFB_DEFAULT_LINEBIAS;
- vfbScreens[i].pfbMemory = NULL;
- }
- vfbNumScreens = 1;
-}
-
-static int
-vfbBitsPerPixel(int depth)
-{
- if (depth == 1) return 1;
- else if (depth <= 8) return 8;
- else if (depth <= 16) return 16;
- else return 32;
-}
-
-void
-ddxGiveUp()
-{
- int i;
-
- /* clean up the framebuffers */
-
- switch (fbmemtype)
- {
-#ifdef HAS_MMAP
- case MMAPPED_FILE_FB:
- for (i = 0; i < vfbNumScreens; i++)
- {
- if (-1 == unlink(vfbScreens[i].mmap_file))
- {
- perror("unlink");
- ErrorF("unlink %s failed, errno %d",
- vfbScreens[i].mmap_file, errno);
- }
- }
- break;
-#else /* HAS_MMAP */
- case MMAPPED_FILE_FB:
- break;
-#endif /* HAS_MMAP */
-
-#ifdef HAS_SHM
- case SHARED_MEMORY_FB:
- for (i = 0; i < vfbNumScreens; i++)
- {
- if (-1 == shmdt((char *)vfbScreens[i].pXWDHeader))
- {
- perror("shmdt");
- ErrorF("shmdt failed, errno %d", errno);
- }
- }
- break;
-#else /* HAS_SHM */
- case SHARED_MEMORY_FB:
- break;
-#endif /* HAS_SHM */
-
- case NORMAL_MEMORY_FB:
- for (i = 0; i < vfbNumScreens; i++)
- {
- Xfree(vfbScreens[i].pXWDHeader);
- }
- break;
- }
-}
-
-void
-AbortDDX()
-{
- ddxGiveUp();
-}
-
-#ifdef __DARWIN__
-void
-DarwinHandleGUI(int argc, char *argv[])
-{
-}
-
-void GlxExtensionInit();
-void GlxWrapInitVisuals(void *procPtr);
-
-void
-DarwinGlxExtensionInit()
-{
- GlxExtensionInit();
-}
-
-void
-DarwinGlxWrapInitVisuals(
- void *procPtr)
-{
- GlxWrapInitVisuals(procPtr);
-}
-#endif
-
-void
-OsVendorInit()
-{
-}
-
-void
-OsVendorFatalError()
-{
-}
-
-void ddxBeforeReset(void)
-{
- return;
-}
-
-void
-ddxUseMsg()
-{
- ErrorF("-screen scrn WxHxD set screen's width, height, depth\n");
- ErrorF("-pixdepths list-of-int support given pixmap depths\n");
-#ifdef RENDER
- ErrorF("+/-render turn on/of RENDER extension support"
- "(default on)\n");
-#endif
- ErrorF("-linebias n adjust thin line pixelization\n");
- ErrorF("-blackpixel n pixel value for black\n");
- ErrorF("-whitepixel n pixel value for white\n");
-
-#ifdef HAS_MMAP
- ErrorF("-fbdir directory put framebuffers in mmap'ed files in directory\n");
-#endif
-
-#ifdef HAS_SHM
- ErrorF("-shmem put framebuffers in shared memory\n");
-#endif
-}
-
-/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
-void ddxInitGlobals(void)
-{
-}
-
-int
-ddxProcessArgument(int argc, char *argv[], int i)
-{
- static Bool firstTime = TRUE;
-
- if (firstTime)
- {
- vfbInitializeDefaultScreens();
- vfbInitializePixmapDepths();
- firstTime = FALSE;
- }
-
- if (strcmp (argv[i], "-screen") == 0) /* -screen n WxHxD */
- {
- int screenNum;
- if (i + 2 >= argc) UseMsg();
- screenNum = atoi(argv[i+1]);
- if (screenNum < 0 || screenNum >= MAXSCREENS)
- {
- ErrorF("Invalid screen number %d\n", screenNum);
- UseMsg();
- }
- if (3 != sscanf(argv[i+2], "%dx%dx%d",
- &vfbScreens[screenNum].width,
- &vfbScreens[screenNum].height,
- &vfbScreens[screenNum].depth))
- {
- ErrorF("Invalid screen configuration %s\n", argv[i+2]);
- UseMsg();
- }
-
- if (screenNum >= vfbNumScreens)
- vfbNumScreens = screenNum + 1;
- lastScreen = screenNum;
- return 3;
- }
-
- if (strcmp (argv[i], "-pixdepths") == 0) /* -pixdepths list-of-depth */
- {
- int depth, ret = 1;
-
- if (++i >= argc) UseMsg();
- while ((i < argc) && (depth = atoi(argv[i++])) != 0)
- {
- if (depth < 0 || depth > 32)
- {
- ErrorF("Invalid pixmap depth %d\n", depth);
- UseMsg();
- }
- vfbPixmapDepths[depth] = TRUE;
- ret++;
- }
- return ret;
- }
-
- if (strcmp (argv[i], "+render") == 0) /* +render */
- {
- Render = TRUE;
- return 1;
- }
-
- if (strcmp (argv[i], "-render") == 0) /* -render */
- {
- Render = FALSE;
- return 1;
- }
-
- if (strcmp (argv[i], "-blackpixel") == 0) /* -blackpixel n */
- {
- Pixel pix;
- if (++i >= argc) UseMsg();
- pix = atoi(argv[i]);
- if (-1 == lastScreen)
- {
- int i;
- for (i = 0; i < MAXSCREENS; i++)
- {
- vfbScreens[i].blackPixel = pix;
- }
- }
- else
- {
- vfbScreens[lastScreen].blackPixel = pix;
- }
- return 2;
- }
-
- if (strcmp (argv[i], "-whitepixel") == 0) /* -whitepixel n */
- {
- Pixel pix;
- if (++i >= argc) UseMsg();
- pix = atoi(argv[i]);
- if (-1 == lastScreen)
- {
- int i;
- for (i = 0; i < MAXSCREENS; i++)
- {
- vfbScreens[i].whitePixel = pix;
- }
- }
- else
- {
- vfbScreens[lastScreen].whitePixel = pix;
- }
- return 2;
- }
-
- if (strcmp (argv[i], "-linebias") == 0) /* -linebias n */
- {
- unsigned int linebias;
- if (++i >= argc) UseMsg();
- linebias = atoi(argv[i]);
- if (-1 == lastScreen)
- {
- int i;
- for (i = 0; i < MAXSCREENS; i++)
- {
- vfbScreens[i].lineBias = linebias;
- }
- }
- else
- {
- vfbScreens[lastScreen].lineBias = linebias;
- }
- return 2;
- }
-
-#ifdef HAS_MMAP
- if (strcmp (argv[i], "-fbdir") == 0) /* -fbdir directory */
- {
- if (++i >= argc) UseMsg();
- pfbdir = argv[i];
- fbmemtype = MMAPPED_FILE_FB;
- return 2;
- }
-#endif /* HAS_MMAP */
-
-#ifdef HAS_SHM
- if (strcmp (argv[i], "-shmem") == 0) /* -shmem */
- {
- fbmemtype = SHARED_MEMORY_FB;
- return 1;
- }
-#endif
-
- return 0;
-}
-
-#ifdef DDXTIME /* from ServerOSDefines */
-CARD32
-GetTimeInMillis()
-{
- struct timeval tp;
-
- X_GETTIMEOFDAY(&tp);
- return(tp.tv_sec * 1000) + (tp.tv_usec / 1000);
-}
-#endif
-
-static ColormapPtr InstalledMaps[MAXSCREENS];
-
-static int
-vfbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps)
-{
- /* By the time we are processing requests, we can guarantee that there
- * is always a colormap installed */
- *pmaps = InstalledMaps[pScreen->myNum]->mid;
- return (1);
-}
-
-
-static void
-vfbInstallColormap(ColormapPtr pmap)
-{
- int index = pmap->pScreen->myNum;
- ColormapPtr oldpmap = InstalledMaps[index];
-
- if (pmap != oldpmap)
- {
- int entries;
- XWDFileHeader *pXWDHeader;
- XWDColor *pXWDCmap;
- VisualPtr pVisual;
- Pixel * ppix;
- xrgb * prgb;
- xColorItem *defs;
- int i;
-
- if(oldpmap != (ColormapPtr)None)
- WalkTree(pmap->pScreen, TellLostMap, (char *)&oldpmap->mid);
- /* Install pmap */
- InstalledMaps[index] = pmap;
- WalkTree(pmap->pScreen, TellGainedMap, (char *)&pmap->mid);
-
- entries = pmap->pVisual->ColormapEntries;
- pXWDHeader = vfbScreens[pmap->pScreen->myNum].pXWDHeader;
- pXWDCmap = vfbScreens[pmap->pScreen->myNum].pXWDCmap;
- pVisual = pmap->pVisual;
-
- swapcopy32(pXWDHeader->visual_class, pVisual->class);
- swapcopy32(pXWDHeader->red_mask, pVisual->redMask);
- swapcopy32(pXWDHeader->green_mask, pVisual->greenMask);
- swapcopy32(pXWDHeader->blue_mask, pVisual->blueMask);
- swapcopy32(pXWDHeader->bits_per_rgb, pVisual->bitsPerRGBValue);
- swapcopy32(pXWDHeader->colormap_entries, pVisual->ColormapEntries);
-
- ppix = (Pixel *)ALLOCATE_LOCAL(entries * sizeof(Pixel));
- prgb = (xrgb *)ALLOCATE_LOCAL(entries * sizeof(xrgb));
- defs = (xColorItem *)ALLOCATE_LOCAL(entries * sizeof(xColorItem));
-
- for (i = 0; i < entries; i++) ppix[i] = i;
- /* XXX truecolor */
- QueryColors(pmap, entries, ppix, prgb);
-
- for (i = 0; i < entries; i++) { /* convert xrgbs to xColorItems */
- defs[i].pixel = ppix[i] & 0xff; /* change pixel to index */
- defs[i].red = prgb[i].red;
- defs[i].green = prgb[i].green;
- defs[i].blue = prgb[i].blue;
- defs[i].flags = DoRed|DoGreen|DoBlue;
- }
- (*pmap->pScreen->StoreColors)(pmap, entries, defs);
-
- DEALLOCATE_LOCAL(ppix);
- DEALLOCATE_LOCAL(prgb);
- DEALLOCATE_LOCAL(defs);
- }
-}
-
-static void
-vfbUninstallColormap(ColormapPtr pmap)
-{
- ColormapPtr curpmap = InstalledMaps[pmap->pScreen->myNum];
-
- if(pmap == curpmap)
- {
- if (pmap->mid != pmap->pScreen->defColormap)
- {
- curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap,
- RT_COLORMAP);
- (*pmap->pScreen->InstallColormap)(curpmap);
- }
- }
-}
-
-static void
-vfbStoreColors(ColormapPtr pmap, int ndef, xColorItem *pdefs)
-{
- XWDColor *pXWDCmap;
- int i;
-
- if (pmap != InstalledMaps[pmap->pScreen->myNum])
- {
- return;
- }
-
- pXWDCmap = vfbScreens[pmap->pScreen->myNum].pXWDCmap;
-
- if ((pmap->pVisual->class | DynamicClass) == DirectColor)
- {
- return;
- }
-
- for (i = 0; i < ndef; i++)
- {
- if (pdefs[i].flags & DoRed)
- {
- swapcopy16(pXWDCmap[pdefs[i].pixel].red, pdefs[i].red);
- }
- if (pdefs[i].flags & DoGreen)
- {
- swapcopy16(pXWDCmap[pdefs[i].pixel].green, pdefs[i].green);
- }
- if (pdefs[i].flags & DoBlue)
- {
- swapcopy16(pXWDCmap[pdefs[i].pixel].blue, pdefs[i].blue);
- }
- }
-}
-
-static Bool
-vfbSaveScreen(ScreenPtr pScreen, int on)
-{
- return TRUE;
-}
-
-#ifdef HAS_MMAP
-
-/* this flushes any changes to the screens out to the mmapped file */
-static void
-vfbBlockHandler(pointer blockData, OSTimePtr pTimeout, pointer pReadmask)
-{
- int i;
-
- for (i = 0; i < vfbNumScreens; i++)
- {
-#ifdef MS_ASYNC
- if (-1 == msync((caddr_t)vfbScreens[i].pXWDHeader,
- (size_t)vfbScreens[i].sizeInBytes, MS_ASYNC))
-#else
- /* silly NetBSD and who else? */
- if (-1 == msync((caddr_t)vfbScreens[i].pXWDHeader,
- (size_t)vfbScreens[i].sizeInBytes))
-#endif
- {
- perror("msync");
- ErrorF("msync failed, errno %d", errno);
- }
- }
-}
-
-
-static void
-vfbWakeupHandler(pointer blockData, int result, pointer pReadmask)
-{
-}
-
-
-static void
-vfbAllocateMmappedFramebuffer(vfbScreenInfoPtr pvfb)
-{
-#define DUMMY_BUFFER_SIZE 65536
- char dummyBuffer[DUMMY_BUFFER_SIZE];
- int currentFileSize, writeThisTime;
-
- sprintf(pvfb->mmap_file, "%s/Xvfb_screen%d", pfbdir, pvfb->scrnum);
- if (-1 == (pvfb->mmap_fd = open(pvfb->mmap_file, O_CREAT|O_RDWR, 0666)))
- {
- perror("open");
- ErrorF("open %s failed, errno %d", pvfb->mmap_file, errno);
- return;
- }
-
- /* Extend the file to be the proper size */
-
- bzero(dummyBuffer, DUMMY_BUFFER_SIZE);
- for (currentFileSize = 0;
- currentFileSize < pvfb->sizeInBytes;
- currentFileSize += writeThisTime)
- {
- writeThisTime = min(DUMMY_BUFFER_SIZE,
- pvfb->sizeInBytes - currentFileSize);
- if (-1 == write(pvfb->mmap_fd, dummyBuffer, writeThisTime))
- {
- perror("write");
- ErrorF("write %s failed, errno %d", pvfb->mmap_file, errno);
- return;
- }
- }
-
- /* try to mmap the file */
-
- pvfb->pXWDHeader = (XWDFileHeader *)mmap((caddr_t)NULL, pvfb->sizeInBytes,
- PROT_READ|PROT_WRITE,
- MAP_FILE|MAP_SHARED,
- pvfb->mmap_fd, 0);
- if (-1 == (long)pvfb->pXWDHeader)
- {
- perror("mmap");
- ErrorF("mmap %s failed, errno %d", pvfb->mmap_file, errno);
- pvfb->pXWDHeader = NULL;
- return;
- }
-
- if (!RegisterBlockAndWakeupHandlers(vfbBlockHandler, vfbWakeupHandler,
- NULL))
- {
- pvfb->pXWDHeader = NULL;
- }
-}
-#endif /* HAS_MMAP */
-
-
-#ifdef HAS_SHM
-static void
-vfbAllocateSharedMemoryFramebuffer(vfbScreenInfoPtr pvfb)
-{
- /* create the shared memory segment */
-
- pvfb->shmid = shmget(IPC_PRIVATE, pvfb->sizeInBytes, IPC_CREAT|0777);
- if (pvfb->shmid < 0)
- {
- perror("shmget");
- ErrorF("shmget %d bytes failed, errno %d", pvfb->sizeInBytes, errno);
- return;
- }
-
- /* try to attach it */
-
- pvfb->pXWDHeader = (XWDFileHeader *)shmat(pvfb->shmid, 0, 0);
- if (-1 == (long)pvfb->pXWDHeader)
- {
- perror("shmat");
- ErrorF("shmat failed, errno %d", errno);
- pvfb->pXWDHeader = NULL;
- return;
- }
-
- ErrorF("screen %d shmid %d\n", pvfb->scrnum, pvfb->shmid);
-}
-#endif /* HAS_SHM */
-
-static char *
-vfbAllocateFramebufferMemory(vfbScreenInfoPtr pvfb)
-{
- if (pvfb->pfbMemory) return pvfb->pfbMemory; /* already done */
-
- pvfb->sizeInBytes = pvfb->paddedBytesWidth * pvfb->height;
-
- /* Calculate how many entries in colormap. This is rather bogus, because
- * the visuals haven't even been set up yet, but we need to know because we
- * have to allocate space in the file for the colormap. The number 10
- * below comes from the MAX_PSEUDO_DEPTH define in cfbcmap.c.
- */
-
- if (pvfb->depth <= 10)
- { /* single index colormaps */
- pvfb->ncolors = 1 << pvfb->depth;
- }
- else
- { /* decomposed colormaps */
- int nplanes_per_color_component = pvfb->depth / 3;
- if (pvfb->depth % 3) nplanes_per_color_component++;
- pvfb->ncolors = 1 << nplanes_per_color_component;
- }
-
- /* add extra bytes for XWDFileHeader, window name, and colormap */
-
- pvfb->sizeInBytes += SIZEOF(XWDheader) + XWD_WINDOW_NAME_LEN +
- pvfb->ncolors * SIZEOF(XWDColor);
-
- pvfb->pXWDHeader = NULL;
- switch (fbmemtype)
- {
-#ifdef HAS_MMAP
- case MMAPPED_FILE_FB: vfbAllocateMmappedFramebuffer(pvfb); break;
-#else
- case MMAPPED_FILE_FB: break;
-#endif
-
-#ifdef HAS_SHM
- case SHARED_MEMORY_FB: vfbAllocateSharedMemoryFramebuffer(pvfb); break;
-#else
- case SHARED_MEMORY_FB: break;
-#endif
-
- case NORMAL_MEMORY_FB:
- pvfb->pXWDHeader = (XWDFileHeader *)Xalloc(pvfb->sizeInBytes);
- break;
- }
-
- if (pvfb->pXWDHeader)
- {
- pvfb->pXWDCmap = (XWDColor *)((char *)pvfb->pXWDHeader
- + SIZEOF(XWDheader) + XWD_WINDOW_NAME_LEN);
- pvfb->pfbMemory = (char *)(pvfb->pXWDCmap + pvfb->ncolors);
-
- return pvfb->pfbMemory;
- }
- else
- return NULL;
-}
-
-
-static void
-vfbWriteXWDFileHeader(ScreenPtr pScreen)
-{
- vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
- XWDFileHeader *pXWDHeader = pvfb->pXWDHeader;
- char hostname[XWD_WINDOW_NAME_LEN];
- unsigned long swaptest = 1;
- int i;
-
- needswap = *(char *) &swaptest;
-
- pXWDHeader->header_size = (char *)pvfb->pXWDCmap - (char *)pvfb->pXWDHeader;
- pXWDHeader->file_version = XWD_FILE_VERSION;
-
- pXWDHeader->pixmap_format = ZPixmap;
- pXWDHeader->pixmap_depth = pvfb->depth;
- pXWDHeader->pixmap_height = pXWDHeader->window_height = pvfb->height;
- pXWDHeader->xoffset = 0;
- pXWDHeader->byte_order = IMAGE_BYTE_ORDER;
- pXWDHeader->bitmap_bit_order = BITMAP_BIT_ORDER;
-#ifndef INTERNAL_VS_EXTERNAL_PADDING
- pXWDHeader->pixmap_width = pXWDHeader->window_width = pvfb->width;
- pXWDHeader->bitmap_unit = BITMAP_SCANLINE_UNIT;
- pXWDHeader->bitmap_pad = BITMAP_SCANLINE_PAD;
-#else
- pXWDHeader->pixmap_width = pXWDHeader->window_width = pvfb->paddedWidth;
- pXWDHeader->bitmap_unit = BITMAP_SCANLINE_UNIT_PROTO;
- pXWDHeader->bitmap_pad = BITMAP_SCANLINE_PAD_PROTO;
-#endif
- pXWDHeader->bits_per_pixel = pvfb->bitsPerPixel;
- pXWDHeader->bytes_per_line = pvfb->paddedBytesWidth;
- pXWDHeader->ncolors = pvfb->ncolors;
-
- /* visual related fields are written when colormap is installed */
-
- pXWDHeader->window_x = pXWDHeader->window_y = 0;
- pXWDHeader->window_bdrwidth = 0;
-
- /* write xwd "window" name: Xvfb hostname:server.screen */
-
- if (-1 == gethostname(hostname, sizeof(hostname)))
- hostname[0] = 0;
- else
- hostname[XWD_WINDOW_NAME_LEN-1] = 0;
- sprintf((char *)(pXWDHeader+1), "Xvfb %s:%s.%d", hostname, display,
- pScreen->myNum);
-
- /* write colormap pixel slot values */
-
- for (i = 0; i < pvfb->ncolors; i++)
- {
- pvfb->pXWDCmap[i].pixel = i;
- }
-
- /* byte swap to most significant byte first */
-
- if (needswap)
- {
- SwapLongs((CARD32 *)pXWDHeader, SIZEOF(XWDheader)/4);
- for (i = 0; i < pvfb->ncolors; i++)
- {
- register char n;
- swapl(&pvfb->pXWDCmap[i].pixel, n);
- }
- }
-}
-
-
-static Bool
-vfbCursorOffScreen (ScreenPtr *ppScreen, int *x, int *y)
-{
- return FALSE;
-}
-
-static void
-vfbCrossScreen (ScreenPtr pScreen, Bool entering)
-{
-}
-
-static miPointerScreenFuncRec vfbPointerCursorFuncs =
-{
- vfbCursorOffScreen,
- vfbCrossScreen,
- miPointerWarpCursor
-};
-
-static Bool
-vfbCloseScreen(int index, ScreenPtr pScreen)
-{
- vfbScreenInfoPtr pvfb = &vfbScreens[index];
- int i;
-
- pScreen->CloseScreen = pvfb->closeScreen;
-
- /*
- * XXX probably lots of stuff to clean. For now,
- * clear InstalledMaps[] so that server reset works correctly.
- */
- for (i = 0; i < MAXSCREENS; i++)
- InstalledMaps[i] = NULL;
-
- return pScreen->CloseScreen(index, pScreen);
-}
-
-static Bool
-vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
-{
- vfbScreenInfoPtr pvfb = &vfbScreens[index];
- int dpix = monitorResolution, dpiy = monitorResolution;
- int ret;
- char *pbits;
-
- if (dpix == 0)
- dpix = 100;
-
- if (dpiy == 0)
- dpiy = 100;
-
- pvfb->paddedBytesWidth = PixmapBytePad(pvfb->width, pvfb->depth);
- pvfb->bitsPerPixel = vfbBitsPerPixel(pvfb->depth);
- if (pvfb->bitsPerPixel >= 8 )
- pvfb->paddedWidth = pvfb->paddedBytesWidth / (pvfb->bitsPerPixel / 8);
- else
- pvfb->paddedWidth = pvfb->paddedBytesWidth * 8;
- pbits = vfbAllocateFramebufferMemory(pvfb);
- if (!pbits) return FALSE;
-
- miSetPixmapDepths ();
-
- switch (pvfb->depth) {
- case 8:
- miSetVisualTypesAndMasks (8,
- ((1 << StaticGray) |
- (1 << GrayScale) |
- (1 << StaticColor) |
- (1 << PseudoColor) |
- (1 << TrueColor) |
- (1 << DirectColor)),
- 8, PseudoColor, 0, 0, 0);
- break;
-#if 0
- /* 12bit PseudoColor with 12bit color resolution
- * (to simulate SGI hardware and the 12bit PseudoColor emulation layer) */
- case 12:
- miSetVisualTypesAndMasks (12,
- ((1 << StaticGray) |
- (1 << GrayScale) |
- (1 << StaticColor) |
- (1 << PseudoColor) |
- (1 << TrueColor) |
- (1 << DirectColor)),
- 12, PseudoColor, 0, 0, 0);
- break;
-#endif
- case 15:
- miSetVisualTypesAndMasks (15,
- ((1 << TrueColor) |
- (1 << DirectColor)),
- 8, TrueColor, 0x7c00, 0x03e0, 0x001f);
- break;
- case 16:
- miSetVisualTypesAndMasks (16,
- ((1 << TrueColor) |
- (1 << DirectColor)),
- 8, TrueColor, 0xf800, 0x07e0, 0x001f);
- break;
- case 24:
- miSetVisualTypesAndMasks (24,
- ((1 << TrueColor) |
- (1 << DirectColor)),
- 8, TrueColor, 0xff0000, 0x00ff00, 0x0000ff);
- break;
-#if 0
- /* 30bit TrueColor (to simulate Sun's XVR-1000/-4000 high quality
- * framebuffer series) */
- case 30:
- miSetVisualTypesAndMasks (30,
- ((1 << TrueColor) |
- (1 << DirectColor)),
- 10, TrueColor, 0x3ff00000, 0x000ffc00, 0x000003ff);
- break;
-#endif
- }
-
- ret = fbScreenInit(pScreen, pbits, pvfb->width, pvfb->height,
- dpix, dpiy, pvfb->paddedWidth,pvfb->bitsPerPixel);
-#ifdef RENDER
- if (ret && Render)
- fbPictureInit (pScreen, 0, 0);
-#endif
-
- if (!ret) return FALSE;
-
- miInitializeBackingStore(pScreen);
-
- /*
- * Circumvent the backing store that was just initialised. This amounts
- * to a truely bizarre way of initialising SaveDoomedAreas and friends.
- */
-
- pScreen->InstallColormap = vfbInstallColormap;
- pScreen->UninstallColormap = vfbUninstallColormap;
- pScreen->ListInstalledColormaps = vfbListInstalledColormaps;
-
- pScreen->SaveScreen = vfbSaveScreen;
- pScreen->StoreColors = vfbStoreColors;
-
- miDCInitialize(pScreen, &vfbPointerCursorFuncs);
-
- vfbWriteXWDFileHeader(pScreen);
-
- pScreen->blackPixel = pvfb->blackPixel;
- pScreen->whitePixel = pvfb->whitePixel;
-
- ret = fbCreateDefColormap(pScreen);
-
- miSetZeroLineBias(pScreen, pvfb->lineBias);
-
- pvfb->closeScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = vfbCloseScreen;
-
- return ret;
-
-} /* end vfbScreenInit */
-
-
-void
-InitOutput(ScreenInfo *screenInfo, int argc, char **argv)
-{
- int i;
- int NumFormats = 0;
-
- /* initialize pixmap formats */
-
- /* must have a pixmap depth to match every screen depth */
- for (i = 0; i < vfbNumScreens; i++)
- {
- vfbPixmapDepths[vfbScreens[i].depth] = TRUE;
- }
-
- /* RENDER needs a good set of pixmaps. */
- if (Render) {
- vfbPixmapDepths[1] = TRUE;
- vfbPixmapDepths[4] = TRUE;
- vfbPixmapDepths[8] = TRUE;
-#if 0
- vfbPixmapDepths[12] = TRUE;
-#endif
-/* vfbPixmapDepths[15] = TRUE; */
- vfbPixmapDepths[16] = TRUE;
- vfbPixmapDepths[24] = TRUE;
-#if 0
- vfbPixmapDepths[30] = TRUE;
-#endif
- vfbPixmapDepths[32] = TRUE;
- }
-
- for (i = 1; i <= 32; i++)
- {
- if (vfbPixmapDepths[i])
- {
- if (NumFormats >= MAXFORMATS)
- FatalError ("MAXFORMATS is too small for this server\n");
- screenInfo->formats[NumFormats].depth = i;
- screenInfo->formats[NumFormats].bitsPerPixel = vfbBitsPerPixel(i);
- screenInfo->formats[NumFormats].scanlinePad = BITMAP_SCANLINE_PAD;
- NumFormats++;
- }
- }
-
- screenInfo->imageByteOrder = IMAGE_BYTE_ORDER;
- screenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
- screenInfo->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
- screenInfo->bitmapBitOrder = BITMAP_BIT_ORDER;
- screenInfo->numPixmapFormats = NumFormats;
-
- /* initialize screens */
-
- for (i = 0; i < vfbNumScreens; i++)
- {
- if (-1 == AddScreen(vfbScreenInit, argc, argv))
- {
- FatalError("Couldn't add screen %d", i);
- }
- }
-
-} /* end InitOutput */
-
-/* this is just to get the server to link on AIX */
-#ifdef AIXV3
-int SelectWaitTime = 10000; /* usec */
-#endif
-
diff --git a/nx-X11/programs/Xserver/hw/vfb/Xvfb.man b/nx-X11/programs/Xserver/hw/vfb/Xvfb.man
deleted file mode 100644
index 7499c49f0..000000000
--- a/nx-X11/programs/Xserver/hw/vfb/Xvfb.man
+++ /dev/null
@@ -1,132 +0,0 @@
-.\" $XdotOrg: xc/programs/Xserver/hw/vfb/Xvfb.man,v 1.4 2005/09/08 01:15:47 anholt Exp $
-.\" $Xorg: Xvfb.man,v 1.4 2001/02/09 02:04:45 xorgcvs Exp $
-.\" Copyright 1993, 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.
-.\"
-.\" $XFree86: xc/programs/Xserver/hw/vfb/Xvfb.man,v 1.9 2001/12/14 19:59:45 dawes Exp $
-.\"
-.TH XVFB 1 __xorgversion__
-.SH NAME
-Xvfb \- virtual framebuffer X server for X Version 11
-.SH SYNOPSIS
-.B Xvfb
-[ option ] ...
-.SH DESCRIPTION
-.I Xvfb
-is an X server that can run on machines with no display hardware
-and no physical input devices. It emulates a dumb framebuffer using
-virtual memory.
-.PP
-The primary use of this server was intended to be server testing. The
-fb code for any depth can be exercised with this server
-without the need for real hardware that supports the desired depths.
-The X community has found many other novel uses for \fIXvfb\fP,
-including testing clients against unusual depths and screen
-configurations, doing batch processing with \fIXvfb\fP as a background
-rendering engine, load testing, as an aid to porting the X server to a
-new platform, and providing an unobtrusive way to run applications
-that don't really need an X server but insist on having one anyway.
-.SH BUILDING
-To build \fIXvfb\fP, put the following in your host.def and remake.
-.PP
-\&#define BuildServer YES /\(** if you aren't already building other servers */
-.br
-\&#define XVirtualFramebufferServer YES
-
-.SH OPTIONS
-.PP
-In addition to the normal server options described in the \fIXserver(1)\fP
-manual page, \fIXvfb\fP accepts the following command line switches:
-.TP 4
-.B "\-screen \fIscreennum\fP \fIWxHxD\fP"
-This option creates screen \fIscreennum\fP and sets its width, height,
-and depth to W, H, and D respectively. By default, only screen 0 exists
-and has the dimensions 1280x1024x12.
-.TP 4
-.B "\-pixdepths \fIlist-of-depths\fP"
-This option specifies a list of pixmap depths that the server should
-support in addition to the depths implied by the supported screens.
-\fIlist-of-depths\fP is a space-separated list of integers that can
-have values from 1 to 32.
-.TP 4
-.B "\-fbdir \fIframebuffer-directory\fP"
-This option specifies the directory in which the memory mapped files
-containing the framebuffer memory should be created.
-See FILES.
-This option only exists on machines that have the mmap and msync system
-calls.
-.TP 4
-.B "\-shmem"
-This option specifies that the framebuffer should be put in shared memory.
-The shared memory ID for each screen will be printed by the server.
-The shared memory is in xwd format.
-This option only exists on machines that support the System V shared memory
-interface.
-.PP
-If neither \fB\-shmem\fP nor \fB\-fbdir\fP is specified,
-the framebuffer memory will be allocated with malloc().
-.TP 4
-.B "\-linebias \fIn\fP"
-This option specifies how to adjust the pixelization of thin lines.
-The value \fIn\fP is a bitmask of octants in which to prefer an axial
-step when the Bresenham error term is exactly zero. See the file
-Xserver/mi/miline.h for more information. This option is probably only useful
-to server developers to experiment with the range of line pixelization
-possible with the fb code.
-.TP 4
-.B "\-blackpixel \fIpixel-value\fP, \-whitepixel \fIpixel-value\fP"
-These options specify the black and white pixel values the server should use.
-.SH FILES
-The following files are created if the \-fbdir option is given.
-.TP 4
-\fIframebuffer-directory\fP/Xvfb_screen<n>
-Memory mapped file containing screen n's framebuffer memory, one file
-per screen. The file is in xwd format. Thus, taking a full-screen
-snapshot can be done with a file copy command, and the resulting
-snapshot will even contain the cursor image.
-.SH EXAMPLES
-.TP 8
-Xvfb :1 -screen 0 1600x1200x32
-The server will listen for connections as server number 1, and screen 0
-will be depth 32 1600x1200.
-.TP 8
-Xvfb :1 -screen 1 1600x1200x16
-The server will listen for connections as server number 1, will have the
-default screen configuration (one screen, 1280x1024x12), and screen 1
-will be depth 16 1600x1200.
-.TP 8
-Xvfb -pixdepths 3 27 -fbdir /usr/tmp
-The server will listen for connections as server number 0, will have the
-default screen configuration (one screen, 1280x1024x12),
-will also support pixmap
-depths of 3 and 27,
-and will use memory mapped files in /usr/tmp for the framebuffer.
-.TP 8
-xwud -in /usr/tmp/Xvfb_screen0
-Displays screen 0 of the server started by the preceding example.
-.SH "SEE ALSO"
-.PP
-X(__miscmansuffix__), Xserver(1), xwd(1), xwud(1), XWDFile.h
-.SH AUTHORS
-David P. Wiggins, The Open Group, Inc.
diff --git a/nx-X11/programs/Xserver/hw/vfb/lk201kbd.h b/nx-X11/programs/Xserver/hw/vfb/lk201kbd.h
deleted file mode 100644
index 9b4090ed0..000000000
--- a/nx-X11/programs/Xserver/hw/vfb/lk201kbd.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* $Xorg: lk201kbd.h,v 1.4 2001/02/09 02:04:45 xorgcvs Exp $ */
-
-#define MIN_LK201_KEY 86
-#define MAX_LK201_KEY 251
-#define LK201_GLYPHS_PER_KEY 2
-
-#define KEY_F1 86
-#define KEY_F2 87
-#define KEY_F3 88
-#define KEY_F4 89
-#define KEY_F5 90
-#define KEY_F6 100
-#define KEY_F7 101
-#define KEY_F8 102
-#define KEY_F9 103
-#define KEY_F10 104
-#define KEY_F11 113
-#define KEY_F12 114
-#define KEY_F13 115
-#define KEY_F14 116
-#define KEY_HELP 124
-#define KEY_MENU 125
-#define KEY_F17 128
-#define KEY_F18 129
-#define KEY_F19 130
-#define KEY_F20 131
-#define KEY_FIND 138
-#define KEY_INSERT_HERE 139
-#define KEY_REMOVE 140
-#define KEY_SELECT 141
-#define KEY_PREV_SCREEN 142
-#define KEY_NEXT_SCREEN 143
-#define KEY_KP_0 146 /* key pad */
-#define KEY_KP_PERIOD 148 /* key pad */
-#define KEY_KP_ENTER 149 /* key pad */
-#define KEY_KP_1 150 /* key pad */
-#define KEY_KP_2 151 /* key pad */
-#define KEY_KP_3 152 /* key pad */
-#define KEY_KP_4 153 /* key pad */
-#define KEY_KP_5 154 /* key pad */
-#define KEY_KP_6 155 /* key pad */
-#define KEY_KP_COMMA 156 /* key pad */
-#define KEY_KP_7 157 /* key pad */
-#define KEY_KP_8 158 /* key pad */
-#define KEY_KP_9 159 /* key pad */
-#define KEY_KP_HYPHEN 160
-#define KEY_KP_PF1 161
-#define KEY_KP_PF2 162
-#define KEY_KP_PF3 163
-#define KEY_KP_PF4 164
-#define KEY_LEFT 167
-#define KEY_RIGHT 168
-#define KEY_DOWN 169
-#define KEY_UP 170
-#define KEY_SHIFT 174
-#define KEY_CTRL 175
-#define KEY_LOCK 176
-#define KEY_COMPOSE 177
-#define KEY_APPLE 177
-#define KEY_META 177
-#define KEY_DELETE 188
-#define KEY_RETURN 189
-#define KEY_TAB 190
-#define KEY_TILDE 191
-#define KEY_TR_1 192 /* Top Row */
-#define KEY_Q 193
-#define KEY_A 194
-#define KEY_Z 195
-#define KEY_TR_2 197
-#define KEY_W 198
-#define KEY_S 199
-#define KEY_X 200
-#define KEY_LANGLE_RANGLE 201 /* xxx */
-#define KEY_TR_3 203
-#define KEY_E 204
-#define KEY_D 205
-#define KEY_C 206
-#define KEY_TR_4 208
-#define KEY_R 209
-#define KEY_F 210
-#define KEY_V 211
-#define KEY_SPACE 212
-#define KEY_TR_5 214
-#define KEY_T 215
-#define KEY_G 216
-#define KEY_B 217
-#define KEY_TR_6 219
-#define KEY_Y 220
-#define KEY_H 221
-#define KEY_N 222
-#define KEY_TR_7 224
-#define KEY_U 225
-#define KEY_J 226
-#define KEY_M 227
-#define KEY_TR_8 229
-#define KEY_I 230
-#define KEY_K 231
-#define KEY_COMMA 232 /* xxx */
-#define KEY_TR_9 234
-#define KEY_O 235
-#define KEY_L 236
-#define KEY_PERIOD 237 /* xxx */
-#define KEY_TR_0 239
-#define KEY_P 240
-#define KEY_SEMICOLON 242 /* xxx */
-#define KEY_QMARK 243
-#define KEY_PLUS 245 /* xxx */
-#define KEY_RBRACE 246
-#define KEY_VBAR 247 /* xxx */
-#define KEY_UBAR 249 /* xxx */
-#define KEY_LBRACE 250
-#define KEY_QUOTE 251
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/common/Imakefile
deleted file mode 100644
index 41bc6781e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/Imakefile
+++ /dev/null
@@ -1,275 +0,0 @@
-XCOMM $XConsortium: Imakefile /main/34 1996/10/27 11:05:08 kaleb $
-
-
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/common/Imakefile,v 3.154 2003/10/08 14:58:26 dawes Exp $
-
-
-
-#include <Server.tmpl>
-
-#ifdef i386MachArchitecture
-#ifdef GNUMachArchitecture
- KBD = xf86Kbd
-#else
- KBD = xf86KbdMach
-#endif /* GNUMachArchitecture */
-#else
-# if defined(i386BsdArchitecture) || defined(AlphaBsdArchitecture) \
- || defined(OpenBSDArchitecture) || defined(NetBSDArchitecture) \
- || defined(KFreeBSDArchitecture)
- KBD = xf86KbdBSD
-# else
-# ifdef LinuxArchitecture
- KBD = xf86KbdLnx
-# else
- KBD = xf86Kbd
-# endif
-# endif
-#endif
-
-#if UseDeprecatedKeyboardDriver
-KEYBOARD_DEFS = -DUSE_DEPRECATED_KEYBOARD_DRIVER
-#endif
-
-#if defined(SparcArchitecture) || defined(Sparc64Architecture)
- SBUSSRC = xf86sbusBus.c
- SBUSOBJ = xf86sbusBus.o
-#endif
-
-#if BuildXKB
- XKBDDXSRC = xf86XKB.c
- XKBDDXOBJ = xf86XKB.o
-#endif
-
-#if BuildDebug
- DEBUGSRC = xf86Debug.c
- DEBUGOBJ = xf86Debug.o
-#endif
-
-#if BuildXInputExt
- XF86_XINPUT_SRC = xf86Xinput.c xisb.c
- XF86_XINPUT_OBJ = xf86Xinput.o xisb.o
-#endif
-
-#if BuildRandR
- RANDRINCS = -I../../../randr
- RANDRSRC = xf86RandR.c
- RANDROBJ = xf86RandR.o
-#endif
-
-MODPATHDEFINES = -DDEFAULT_MODULE_PATH=\"$(MODULEDIR)\"
-LOGDEFINES = -DDEFAULT_LOGPREFIX=\"$(LOGDIRECTORY)/XLogFile.\"
-
-#if DoLoadableServer
-EXT_MODULES_DEFINES = $(GLX_DEFINES)
-#endif
-
-#if UseMemLeak
-MDEBUGDEFS = -DMEMDEBUG
-#endif
-
-#if defined(SunArchitecture) && ((OSMajorVersion == 5) && (OSMinorVersion >= 9))
-BACKTRACE_DEFS = -DHAVE_WALKCONTEXT
-#elif defined(LinuxCLibMajorVersion) && ((LinuxCLibMajorVersion == 6) && (LinuxCLibMinorVersion >= 1))
-BACKTRACE_DEFS = -DHAVE_EXECINFO_H
-#endif
-
-SRCS = \
- xf86Configure.c \
- xf86Bus.c \
- xf86isaBus.c \
- xf86pciBus.c \
- xf86fbBus.c \
- xf86noBus.c \
- xf86IniExt.c \
- xf86Config.c \
- xf86AutoConfig.c \
- xf86Cursor.c \
- xf86DGA.c \
- xf86DPMS.c \
- xf86DefModeSet.c \
- xf86DoProbe.c \
- xf86DoScanPci.c \
- xf86Events.c \
- xf86Globals.c \
- xf86Helper.c \
- xf86Init.c \
- xf86Io.c \
- xf86MiscExt.c \
- xf86Mode.c \
- xf86Option.c \
- xf86VidMode.c \
- xf86fbman.c \
- xf86xv.c \
- xf86xvmc.c \
- xf86cmap.c\
- xf86PM.c \
- xf86Versions.c \
- xorgHelper.c \
- $(DEBUGSRC) \
- $(KBD).c \
- $(SBUSSRC) \
- $(XF86_XINPUT_SRC) \
- $(XINPUT_DEV_SRCS) \
- $(XKBDDXSRC) \
- $(SERVERSRCS) \
- $(RANDRSRC)
-
-OBJS = \
- xf86Configure.o \
- xf86Bus.o \
- xf86isaBus.o \
- xf86pciBus.o \
- xf86fbBus.o \
- xf86noBus.o \
- xf86Config.o \
- xf86AutoConfig.o \
- xf86Cursor.o \
- xf86DGA.o \
- xf86DPMS.o \
- xf86DefModeSet.o \
- xf86DoProbe.o \
- xf86DoScanPci.o \
- xf86Events.o \
- xf86Globals.o \
- xf86Helper.o \
- xf86Io.o \
- xf86MiscExt.o \
- xf86Mode.o \
- xf86Option.o \
- xf86VidMode.o \
- xf86fbman.o \
- xf86xv.o \
- xf86xvmc.o \
- xf86cmap.o\
- xf86PM.o \
- xf86Versions.o \
- xorgHelper.o \
- $(DEBUGOBJ) \
- $(SBUSOBJ) \
- $(XF86_XINPUT_OBJ) \
- $(XKBDDXOBJ) \
- $(KBD).o \
- $(RANDROBJ)
-
-OFILES = \
- xf86Init.o \
- xf86IniExt.o
-
- VGAINCLUDES = -I$(XF86SRC)/vgahw
- INCLUDES = -I. -I$(XF86OSSRC) -I$(XF86OSSRC)/bus -I$(SERVERSRC)/mfb \
- -I$(SERVERSRC)/mi -I$(SERVERSRC)/include -I$(SERVERSRC)/os \
- -I$(XINCLUDESRC) -I$(SERVERSRC)/Xext -I$(EXTINCSRC) \
- -I$(SERVERSRC)/Xi -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c \
- -I$(FONTLIBSRC)/include -I$(FONTINCSRC) \
- -I$(XF86SRC) -I$(XF86PARSERSRC) \
- -I$(XF86SRC)/loader $(VGAINCLUDES) -I$(XF86SRC)/rac \
- -I$(XF86SRC)/scanpci -I$(XF86SRC)/vbe -I$(XF86SRC)/int10 \
- -I$(XF86SRC)/ddc -I$(SERVERSRC)/render $(RANDRINCS)
-
- OSNAME = OSName
- OSVENDOR = OSVendor
- OSNAMEDEF = -DOSNAME='" $(OSNAME)"' -DOSVENDOR='" $(OSVENDOR)"'
-#if defined(XorgCustomVersion) || defined(XFree86CustomVersion)
-# if defined(XorgCustomVersion)
-CUSTOMVERSION = XorgCustomVersion
-# else
-CUSTOMVERSION = XFree86CustomVersion
-# endif /* XorgCustomVersion */
- CUSTOMVERDEF = -DXORG_CUSTOM_VERSION='$(CUSTOMVERSION)'
-#endif /* XorgCustomVersion || XFree86CustomVersion */
-#if defined(BuilderString)
- BUILDERSTRING = BuilderString
- BUILDERMSG = -DBUILDERSTRING='$(BUILDERSTRING)'
-#endif
- XORGREL = XOrgReleaseString
- XORGREL_DEF = -DXORG_RELEASE="\"$(XORGREL)\""
-#if defined(XorgDateString)
- XORGDATE = XorgDateString
- XORGDATE_DEF = -DXORG_DATE='$(XORGDATE)'
-#endif
-
-CONSDEFINES = XFree86ConsoleDefines
-EXP_DEFINES = -DEXPIRY_TIME=XorgServerExpiry $(EXP_FORCE_DEFINES)
- DRIVERS = XF86CardDrivers
- IDRIVERS = XInputDrivers
-XCONFIGDEFINES = -DPROJECTROOT='"$(PROJECTROOT)"' \
- -DBINDIR='"$(BINDIR)"' \
- -DDRIVERS='"$(DRIVERS)"' \
- -DIDRIVERS='"$(IDRIVERS)"'
-XF86CONFIGFILE = XConfigFile
-XCONFIGUREDEFINES = -DXF86CONFIGFILE='"$(XF86CONFIGFILE)"'
-
- DEFINES = $(CONSDEFINES) $(KBDDEFINES) $(EXT_DEFINES) $(OS_DEFINES) \
- $(CONFIG_DEFINES) $(XKBDEFRULESDEFS) $(VENDORSUPPORTDEFS) \
- $(VENDOR_DEFINES) -DXF86PM
-
-AllTarget($(OFILES))
-
-SpecialCObjectRule(xf86Bus,NullParameter,$(BUGMSG) $(VGAINCLUDES))
-SpecialCObjectRule(xf86Init,$(ICONFIGFILES),$(OSNAMEDEF) $(BUILDERMSG) $(BUGMSG) $(CUSTOMVERDEF) $(XORGREL_DEF) $(XORGDATE_DEF) $(EXT_DEFINES) $(MDEBUGDEFS) $(KEYBOARD_DEFS))
-SpecialCObjectRule(xf86Events,$(ICONFIGFILES),$(EXT_DEFINES) $(MDEBUGDEFS) $(BACKTRACE_DEFS))
-SpecialCObjectRule(xf86Globals,$(ICONFIGFILES),$(EXT_DEFINES) $(MODPATHDEFINES) $(LOGDEFINES))
-SpecialCObjectRule(xf86AutoConfig,$(ICONFIGFILES),$(XCONFIGDEFINES))
-SpecialCObjectRule(xf86Config,$(ICONFIGFILES),$(XCONFIGDEFINES) $(KEYBOARD_DEFS))
-SpecialCObjectRule(xf86Configure,$(ICONFIGFILES),$(XCONFIGUREDEFINES) $(KEYBOARD_DEFS))
-
-SpecialCObjectRule(xf86IniExt,$(ICONFIGFILES),$(EXT_DEFINES) $(EXT_MODULES_DEFINES))
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(xf86,$(OBJS))
-
-LinkFile(xf86IniExt.c,$(SERVERSRC)/mi/miinitext.c)
-LinkSourceFile(xf86Version.h,..)
-LinkSourceFile(xorgVersion.h,..)
-LinkSourceFile(xf86Pci.h,$(XF86OSSRC)/bus)
-#ifdef SparcArchitecture
-LinkSourceFile(xf86Sbus.h,$(XF86OSSRC)/bus)
-#endif
-
-#if HasPerl
-MODEDEFSRCS = ../etc/vesamodes ../etc/extramodes
-
-MODEDEFS = modedefs
-
-$(MODEDEFS): $(MODEDEFSRCS)
- RemoveFile($@)
- cat $(MODEDEFSRCS) > $@
-
-includes:: xf86DefModeSet.c
-
-xf86DefModeSet.c: $(MODEDEFS) modeline2c.pl
- RemoveFile($@)
- RunPerlScript(modeline2c.pl, < $(MODEDEFS) > $@)
-
-clean::
- RemoveFile($(MODEDEFS))
- RemoveFile(xf86DefModeSet.c)
-#else
-LinkFile(xf86DefModeSet.c,xf86DefModes.c)
-#endif
-
-DependTarget()
-
-InstallDriverSDKNonExecFile(compiler.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(fourcc.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86Module.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86Opt.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86Pci.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86PciInfo.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86Priv.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86Privstr.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86Resources.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86Version.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xorgVersion.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86Xinput.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86cmap.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86fbman.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86str.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86xv.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86xvmc.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xisb.h,$(DRIVERSDKINCLUDEDIR))
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/atKeynames.h b/nx-X11/programs/Xserver/hw/xfree86/common/atKeynames.h
deleted file mode 100644
index d37f5b0f0..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/atKeynames.h
+++ /dev/null
@@ -1,298 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/atKeynames.h,v 3.21 2003/10/09 11:43:59 pascal Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- *
- * 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, and that the name of Thomas Roell not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Roell makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/*
- * Copyright (c) 1994-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* $XConsortium: atKeynames.h /main/11 1996/03/09 11:17:41 kaleb $ */
-
-#ifndef _ATKEYNAMES_H
-#define _ATKEYNAMES_H
-
-#define XK_TECHNICAL
-#define XK_KATAKANA
-#include <X11/keysym.h>
-#include <X11/XF86keysym.h>
-
-#define GLYPHS_PER_KEY 4
-#define NUM_KEYCODES 248
-#define MIN_KEYCODE 8
-#define MAX_KEYCODE (NUM_KEYCODES + MIN_KEYCODE - 1)
-
-#define AltMask Mod1Mask
-#define NumLockMask Mod2Mask
-#define AltLangMask Mod3Mask
-#define KanaMask Mod4Mask
-#define ScrollLockMask Mod5Mask
-
-#define KeyPressed(k) (keyc->down[k >> 3] & (1 << (k & 7)))
-#define ModifierDown(k) ((keyc->state & (k)) == (k))
-
-/*
- * NOTE: The AT/MF keyboards can generate (via the 8042) two (MF: three)
- * sets of scancodes. Set3 can only be generated by a MF keyboard.
- * Set2 sends a makecode for keypress, and the same code prefixed by a
- * F0 for keyrelease. This is a little bit ugly to handle. Thus we use
- * here for X386 the PC/XT compatible Set1. This set uses 8bit scancodes.
- * Bit 7 ist set if the key is released. The code E0 switches to a
- * different meaning to add the new MF cursorkeys, while not breaking old
- * applications. E1 is another special prefix. Since I assume that there
- * will be further versions of PC/XT scancode compatible keyboards, we
- * may be in trouble one day.
- *
- * IDEA: 1) Use Set2 on AT84 keyboards and translate it to MF Set3.
- * 2) Use the keyboards native set and translate it to common keysyms.
- */
-
-/*
- * definition of the AT84/MF101/MF102 Keyboard:
- * ============================================================
- * Defined Key Cap Glyphs Pressed value
- * Key Name Main Also (hex) (dec)
- * ---------------- ---------- ------- ------ ------
- */
-
-#define KEY_Escape /* Escape 0x01 */ 1
-#define KEY_1 /* 1 ! 0x02 */ 2
-#define KEY_2 /* 2 @ 0x03 */ 3
-#define KEY_3 /* 3 # 0x04 */ 4
-#define KEY_4 /* 4 $ 0x05 */ 5
-#define KEY_5 /* 5 % 0x06 */ 6
-#define KEY_6 /* 6 ^ 0x07 */ 7
-#define KEY_7 /* 7 & 0x08 */ 8
-#define KEY_8 /* 8 * 0x09 */ 9
-#define KEY_9 /* 9 ( 0x0a */ 10
-#define KEY_0 /* 0 ) 0x0b */ 11
-#define KEY_Minus /* - (Minus) _ (Under) 0x0c */ 12
-#define KEY_Equal /* = (Equal) + 0x0d */ 13
-#define KEY_BackSpace /* Back Space 0x0e */ 14
-#define KEY_Tab /* Tab 0x0f */ 15
-#define KEY_Q /* Q 0x10 */ 16
-#define KEY_W /* W 0x11 */ 17
-#define KEY_E /* E 0x12 */ 18
-#define KEY_R /* R 0x13 */ 19
-#define KEY_T /* T 0x14 */ 20
-#define KEY_Y /* Y 0x15 */ 21
-#define KEY_U /* U 0x16 */ 22
-#define KEY_I /* I 0x17 */ 23
-#define KEY_O /* O 0x18 */ 24
-#define KEY_P /* P 0x19 */ 25
-#define KEY_LBrace /* [ { 0x1a */ 26
-#define KEY_RBrace /* ] } 0x1b */ 27
-#define KEY_Enter /* Enter 0x1c */ 28
-#define KEY_LCtrl /* Ctrl(left) 0x1d */ 29
-#define KEY_A /* A 0x1e */ 30
-#define KEY_S /* S 0x1f */ 31
-#define KEY_D /* D 0x20 */ 32
-#define KEY_F /* F 0x21 */ 33
-#define KEY_G /* G 0x22 */ 34
-#define KEY_H /* H 0x23 */ 35
-#define KEY_J /* J 0x24 */ 36
-#define KEY_K /* K 0x25 */ 37
-#define KEY_L /* L 0x26 */ 38
-#define KEY_SemiColon /* ;(SemiColon) :(Colon) 0x27 */ 39
-#define KEY_Quote /* ' (Apostr) " (Quote) 0x28 */ 40
-#define KEY_Tilde /* ` (Accent) ~ (Tilde) 0x29 */ 41
-#define KEY_ShiftL /* Shift(left) 0x2a */ 42
-#define KEY_BSlash /* \(BckSlash) |(VertBar)0x2b */ 43
-#define KEY_Z /* Z 0x2c */ 44
-#define KEY_X /* X 0x2d */ 45
-#define KEY_C /* C 0x2e */ 46
-#define KEY_V /* V 0x2f */ 47
-#define KEY_B /* B 0x30 */ 48
-#define KEY_N /* N 0x31 */ 49
-#define KEY_M /* M 0x32 */ 50
-#define KEY_Comma /* , (Comma) < (Less) 0x33 */ 51
-#define KEY_Period /* . (Period) >(Greater)0x34 */ 52
-#define KEY_Slash /* / (Slash) ? 0x35 */ 53
-#define KEY_ShiftR /* Shift(right) 0x36 */ 54
-#define KEY_KP_Multiply /* * 0x37 */ 55
-#define KEY_Alt /* Alt(left) 0x38 */ 56
-#define KEY_Space /* (SpaceBar) 0x39 */ 57
-#define KEY_CapsLock /* CapsLock 0x3a */ 58
-#define KEY_F1 /* F1 0x3b */ 59
-#define KEY_F2 /* F2 0x3c */ 60
-#define KEY_F3 /* F3 0x3d */ 61
-#define KEY_F4 /* F4 0x3e */ 62
-#define KEY_F5 /* F5 0x3f */ 63
-#define KEY_F6 /* F6 0x40 */ 64
-#define KEY_F7 /* F7 0x41 */ 65
-#define KEY_F8 /* F8 0x42 */ 66
-#define KEY_F9 /* F9 0x43 */ 67
-#define KEY_F10 /* F10 0x44 */ 68
-#define KEY_NumLock /* NumLock 0x45 */ 69
-#define KEY_ScrollLock /* ScrollLock 0x46 */ 70
-#define KEY_KP_7 /* 7 Home 0x47 */ 71
-#define KEY_KP_8 /* 8 Up 0x48 */ 72
-#define KEY_KP_9 /* 9 PgUp 0x49 */ 73
-#define KEY_KP_Minus /* - (Minus) 0x4a */ 74
-#define KEY_KP_4 /* 4 Left 0x4b */ 75
-#define KEY_KP_5 /* 5 0x4c */ 76
-#define KEY_KP_6 /* 6 Right 0x4d */ 77
-#define KEY_KP_Plus /* + (Plus) 0x4e */ 78
-#define KEY_KP_1 /* 1 End 0x4f */ 79
-#define KEY_KP_2 /* 2 Down 0x50 */ 80
-#define KEY_KP_3 /* 3 PgDown 0x51 */ 81
-#define KEY_KP_0 /* 0 Insert 0x52 */ 82
-#define KEY_KP_Decimal /* . (Decimal) Delete 0x53 */ 83
-#define KEY_SysReqest /* SysReqest 0x54 */ 84
- /* NOTUSED 0x55 */
-#define KEY_Less /* < (Less) >(Greater) 0x56 */ 86
-#define KEY_F11 /* F11 0x57 */ 87
-#define KEY_F12 /* F12 0x58 */ 88
-
-#define KEY_Prefix0 /* special 0x60 */ 96
-#define KEY_Prefix1 /* specail 0x61 */ 97
-
-/*
- * The 'scancodes' below are generated by the server, because the MF101/102
- * keyboard sends them as sequence of other scancodes
- */
-#define KEY_Home /* Home 0x59 */ 89
-#define KEY_Up /* Up 0x5a */ 90
-#define KEY_PgUp /* PgUp 0x5b */ 91
-#define KEY_Left /* Left 0x5c */ 92
-#define KEY_Begin /* Begin 0x5d */ 93
-#define KEY_Right /* Right 0x5e */ 94
-#define KEY_End /* End 0x5f */ 95
-#define KEY_Down /* Down 0x60 */ 96
-#define KEY_PgDown /* PgDown 0x61 */ 97
-#define KEY_Insert /* Insert 0x62 */ 98
-#define KEY_Delete /* Delete 0x63 */ 99
-#define KEY_KP_Enter /* Enter 0x64 */ 100
-#define KEY_RCtrl /* Ctrl(right) 0x65 */ 101
-#define KEY_Pause /* Pause 0x66 */ 102
-#define KEY_Print /* Print 0x67 */ 103
-#define KEY_KP_Divide /* Divide 0x68 */ 104
-#define KEY_AltLang /* AtlLang(right) 0x69 */ 105
-#define KEY_Break /* Break 0x6a */ 106
-#define KEY_LMeta /* Left Meta 0x6b */ 107
-#define KEY_RMeta /* Right Meta 0x6c */ 108
-#define KEY_Menu /* Menu 0x6d */ 109
-#define KEY_F13 /* F13 0x6e */ 110
-#define KEY_F14 /* F14 0x6f */ 111
-#define KEY_F15 /* F15 0x70 */ 112
-#define KEY_HKTG /* Hirugana/Katakana tog 0x70 */ 112
-#define KEY_F16 /* F16 0x71 */ 113
-#define KEY_F17 /* F17 0x72 */ 114
-#define KEY_KP_DEC /* KP_DEC 0x73 */ 115
-#define KEY_BSlash2 /* \ _ 0x73 */ 115
-#define KEY_KP_Equal /* Equal (Keypad) 0x76 */ 118
-#define KEY_XFER /* Kanji Transfer 0x79 */ 121
-#define KEY_NFER /* No Kanji Transfer 0x7b */ 123
-#define KEY_Yen /* Yen 0x7d */ 125
-
-#define KEY_Power /* Power Key 0x84 */ 132
-#define KEY_Mute /* Audio Mute 0x85 */ 133
-#define KEY_AudioLower /* Audio Lower 0x86 */ 134
-#define KEY_AudioRaise /* Audio Raise 0x87 */ 135
-#define KEY_Help /* Help 0x88 */ 136
-#define KEY_L1 /* Stop 0x89 */ 137
-#define KEY_L2 /* Again 0x8a */ 138
-#define KEY_L3 /* Props 0x8b */ 139
-#define KEY_L4 /* Undo 0x8c */ 140
-#define KEY_L5 /* Front 0x8d */ 141
-#define KEY_L6 /* Copy 0x8e */ 142
-#define KEY_L7 /* Open 0x8f */ 143
-#define KEY_L8 /* Paste 0x90 */ 144
-#define KEY_L9 /* Find 0x91 */ 145
-#define KEY_L10 /* Cut 0x92 */ 146
-
-/*
- * Fake 'scancodes' in the following ranges are generated for 2-byte
- * codes not handled elsewhere. These correspond to most extended keys
- * on so-called "Internet" keyboards:
- *
- * 0x79-0x93
- * 0x96-0xa1
- * 0xa3-0xac
- * 0xb1-0xb4
- * 0xba-0xbd
- * 0xc2
- * 0xcc-0xd2
- * 0xd6-0xf7
- */
-
-/*
- * Remapped 'scancodes' are generated for single-byte codes in the range
- * 0x59-0x5f,0x62-0x76. These are used for some extra keys on some keyboards.
- */
-
-#define KEY_0x59 0x95
-#define KEY_0x5A 0xA2
-#define KEY_0x5B 0xAD
-#define KEY_0x5C KEY_KP_EQUAL
-#define KEY_0x5D 0xAE
-#define KEY_0x5E 0xAF
-#define KEY_0x5F 0xB0
-#define KEY_0x62 0xB5
-#define KEY_0x63 0xB6
-#define KEY_0x64 0xB7
-#define KEY_0x65 0xB8
-#define KEY_0x66 0xB9
-#define KEY_0x67 0xBE
-#define KEY_0x68 0xBF
-#define KEY_0x69 0xC0
-#define KEY_0x6A 0xC1
-#define KEY_0x6B 0xC3
-#define KEY_0x6C 0xC4
-#define KEY_0x6D 0xC5
-#define KEY_0x6E 0xC6
-#define KEY_0x6F 0xC7
-#define KEY_0x70 0xC8
-#define KEY_0x71 0xC9
-#define KEY_0x72 0xCA
-#define KEY_0x73 0xCB
-#define KEY_0x74 0xD3
-#define KEY_0x75 0xD4
-#define KEY_0x76 0xD5
-
-/* These are for "notused" and "unknown" entries in translation maps. */
-#define KEY_NOTUSED 0
-#define KEY_UNKNOWN 255
-
-#endif /* _ATKEYNAMES_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/fourcc.h b/nx-X11/programs/Xserver/hw/xfree86/common/fourcc.h
deleted file mode 100644
index e60aa4e83..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/fourcc.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/fourcc.h,v 1.5 2003/08/24 17:36:48 dawes Exp $ */
-
-/*
- * Copyright (c) 2000-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- This header file contains listings of STANDARD guids for video formats.
- Please do not place non-registered, or incomplete entries in this file.
- A list of some popular fourcc's are at: http://www.webartz.com/fourcc/
- For an explanation of fourcc <-> guid mappings see RFC2361.
-*/
-
-#ifndef _XF86_FOURCC_H_
-#define _XF86_FOURCC_H_ 1
-
-#define FOURCC_YUY2 0x32595559
-#define XVIMAGE_YUY2 \
- { \
- FOURCC_YUY2, \
- XvYUV, \
- LSBFirst, \
- {'Y','U','Y','2', \
- 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, \
- 16, \
- XvPacked, \
- 1, \
- 0, 0, 0, 0, \
- 8, 8, 8, \
- 1, 2, 2, \
- 1, 1, 1, \
- {'Y','U','Y','V', \
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, \
- XvTopToBottom \
- }
-
-#define FOURCC_YV12 0x32315659
-#define XVIMAGE_YV12 \
- { \
- FOURCC_YV12, \
- XvYUV, \
- LSBFirst, \
- {'Y','V','1','2', \
- 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, \
- 12, \
- XvPlanar, \
- 3, \
- 0, 0, 0, 0, \
- 8, 8, 8, \
- 1, 2, 2, \
- 1, 2, 2, \
- {'Y','V','U', \
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, \
- XvTopToBottom \
- }
-
-#define FOURCC_I420 0x30323449
-#define XVIMAGE_I420 \
- { \
- FOURCC_I420, \
- XvYUV, \
- LSBFirst, \
- {'I','4','2','0', \
- 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, \
- 12, \
- XvPlanar, \
- 3, \
- 0, 0, 0, 0, \
- 8, 8, 8, \
- 1, 2, 2, \
- 1, 2, 2, \
- {'Y','U','V', \
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, \
- XvTopToBottom \
- }
-
-
-#define FOURCC_UYVY 0x59565955
-#define XVIMAGE_UYVY \
- { \
- FOURCC_UYVY, \
- XvYUV, \
- LSBFirst, \
- {'U','Y','V','Y', \
- 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, \
- 16, \
- XvPacked, \
- 1, \
- 0, 0, 0, 0, \
- 8, 8, 8, \
- 1, 2, 2, \
- 1, 1, 1, \
- {'U','Y','V','Y', \
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, \
- XvTopToBottom \
- }
-
-#define FOURCC_IA44 0x34344149
-#define XVIMAGE_IA44 \
- { \
- FOURCC_IA44, \
- XvYUV, \
- LSBFirst, \
- {'I','A','4','4', \
- 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, \
- 8, \
- XvPacked, \
- 1, \
- 0, 0, 0, 0, \
- 8, 8, 8, \
- 1, 1, 1, \
- 1, 1, 1, \
- {'A','I', \
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, \
- XvTopToBottom \
- }
-
-#define FOURCC_AI44 0x34344941
-#define XVIMAGE_AI44 \
- { \
- FOURCC_AI44, \
- XvYUV, \
- LSBFirst, \
- {'A','I','4','4', \
- 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, \
- 8, \
- XvPacked, \
- 1, \
- 0, 0, 0, 0, \
- 8, 8, 8, \
- 1, 1, 1, \
- 1, 1, 1, \
- {'I','A', \
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, \
- XvTopToBottom \
- }
-
-#endif /* _XF86_FOURCC_H_ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/modeline2c.pl b/nx-X11/programs/Xserver/hw/xfree86/common/modeline2c.pl
deleted file mode 100644
index cc6c6925e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/modeline2c.pl
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/usr/bin/perl
-
-# automatically generate the xf86DefModeSet.c file from a normal
-# XF86Config style file of Modelines
-#
-# run as
-#
-# perl /modeline2c.pl < [modesfile] > xf86DefModes.c
-#
-# hackish perl - author Dirk Hohndel
-#
-# Copyright 1999-2003 by The XFree86 Project, Inc.
-#
-# 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
-# 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
-# and author(s) 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 copyright holder(s) and author(s).
-#
-# $XFree86: xc/programs/Xserver/hw/xfree86/common/modeline2c.pl,v 1.10tsi Exp $
-
-#my %flagshash;
-$flagshash{""} = "0";
-# $flagshash{"Interlace"} = "V_INTERLACE";
-# $flagshash{"+hsync"} = "V_PHSYNC";
-# $flagshash{"-hsync"} = "V_NHSYNC";
-# $flagshash{"+vsync"} = "V_PVSYNC";
-# $flagshash{"-vsync"} = "V_NVSYNC";
-# XXX I'm definitely not a perl guru... -- tsi
-$flagshash{"+hsync +vsync"} = "V_PHSYNC | V_PVSYNC";
-$flagshash{"+hsync -vsync"} = "V_PHSYNC | V_NVSYNC";
-$flagshash{"-hsync +vsync"} = "V_NHSYNC | V_PVSYNC";
-$flagshash{"-hsync -vsync"} = "V_NHSYNC | V_NVSYNC";
-$flagshash{"+hsync +vsync interlace"} = "V_PHSYNC | V_PVSYNC | V_INTERLACE";
-$flagshash{"+hsync -vsync interlace"} = "V_PHSYNC | V_NVSYNC | V_INTERLACE";
-$flagshash{"-hsync +vsync interlace"} = "V_NHSYNC | V_PVSYNC | V_INTERLACE";
-$flagshash{"-hsync -vsync interlace"} = "V_NHSYNC | V_NVSYNC | V_INTERLACE";
-
-# stop CVS from expanding the XFree86 Id here...
-
-$proj = "XFree86";
-printf("/* \$$proj\$ */
-
-/* THIS FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT -- LOOK at
- * modeline2c.pl */
-
-/*
- * Copyright 1999-2003 by The XFree86 Project, Inc.
- *
- * Author: Dirk Hohndel <hohndel\@XFree86.Org>
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef __UNIXOS2__
-#define I_NEED_OS2_H
-#endif
-#include \"xf86.h\"
-#include \"xf86Config.h\"
-#include \"xf86Priv.h\"
-#include \"xf86_OSlib.h\"
-
-#include \"globals.h\"
-
-#define MODEPREFIX(name) NULL, NULL, name, MODE_OK, M_T_DEFAULT
-#define MODESUFFIX 0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,0,NULL,0,0.0,0.0
-
-DisplayModeRec xf86DefaultModes [] = {
-");
-while (<>) {
- if (/^\#/) {
- s/^\#//;
- chop;
- print "/*" . $_ . " */\n";
- }
- if (/^ModeLine\s+(\S+)\s+([\d.\s]+)(.*)/i) {
- $name = $1;
- $values = $2;
- $flags = $3;
- $flags =~ y/A-Z/a-z/;
- $values =~ /([\d.]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/;
- printf("\t{MODEPREFIX(%s),%d, %d,%d,%d,%d,0, %d,%d,%d,%d,0, %s, MODESUFFIX},\n",
- $name,$1*1000,$2,$3,$4,$5,$6,$7,$8,$9,$flagshash{$flags});
-# Also generate half-width doublescanned modes
- printf("\t{MODEPREFIX(\"%dx%d\"),%d, %d,%d,%d,%d,0, %d,%d,%d,%d,0, %s | V_DBLSCAN, MODESUFFIX},\n",
- $2/2,$6/2,$1*500,$2/2,$3/2,$4/2,$5/2,$6/2,$7/2,$8/2,$9/2,$flagshash{$flags});
- }
-
-
-}
-printf("\t{MODEPREFIX(NULL),0,0,0,0,0,0,0,0,0,0,0,0,MODESUFFIX}\n};\n");
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/scoasm.h b/nx-X11/programs/Xserver/hw/xfree86/common/scoasm.h
deleted file mode 100644
index 5a5af8eb9..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/scoasm.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/scoasm.h,v 3.1 2003/08/24 17:36:49 dawes Exp $ */
-
-/*
- * Copyright (c) 1996 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * scoasm.h - used to define inline versions of certain functions which
- * do NOT appear in sys/inline.h.
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#if defined(__SCO__) && defined(__USLC__)
-#ifndef _SCOASM_HDR_INC
-#define _SCOASM_HDR_INC
-
-asm void outl(port,val)
-{
-%reg port,val;
- movl port, %edx
- movl val, %eax
- outl (%dx)
-%reg port; mem val;
- movl port, %edx
- movl val, %eax
- outl (%dx)
-%mem port; reg val;
- movw port, %dx
- movl val, %eax
- outl (%dx)
-%mem port,val;
- movw port, %dx
- movl val, %eax
- outl (%dx)
-}
-
-asm void outw(port,val)
-{
-%reg port,val;
- movl port, %edx
- movl val, %eax
- data16
- outl (%dx)
-%reg port; mem val;
- movl port, %edx
- movw val, %ax
- data16
- outl (%dx)
-%mem port; reg val;
- movw port, %dx
- movl val, %eax
- data16
- outl (%dx)
-%mem port,val;
- movw port, %dx
- movw val, %ax
- data16
- outl (%dx)
-}
-
-asm void outb(port,val)
-{
-%reg port,val;
- movl port, %edx
- movl val, %eax
- outb (%dx)
-%reg port; mem val;
- movl port, %edx
- movb val, %al
- outb (%dx)
-%mem port; reg val;
- movw port, %dx
- movl val, %eax
- outb (%dx)
-%mem port,val;
- movw port, %dx
- movb val, %al
- outb (%dx)
-}
-
-asm int inl(port)
-{
-%reg port;
- movl port, %edx
- inl (%dx)
-%mem port;
- movw port, %dx
- inl (%dx)
-}
-
-asm int inw(port)
-{
-%reg port;
- subl %eax, %eax
- movl port, %edx
- data16
- inl (%dx)
-%mem port;
- subl %eax, %eax
- movw port, %dx
- data16
- inl (%dx)
-}
-
-asm int inb(port)
-{
-%reg port;
- subl %eax, %eax
- movl port, %edx
- inb (%dx)
-%mem port;
- subl %eax, %eax
- movw port, %dx
- inb (%dx)
-}
-
-#endif /* _SCOASM_HDR_INC */
-#endif /* __SCO__ && __USLC__ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86.h
deleted file mode 100644
index 010360cf3..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86.h
+++ /dev/null
@@ -1,447 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86.h,v 3.173 2004/01/27 01:31:44 dawes Exp $ */
-
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains declarations for public XFree86 functions and variables,
- * and definitions of public macros.
- *
- * "public" means available to video drivers.
- */
-
-#ifndef _XF86_H
-#define _XF86_H
-
-#include "xf86str.h"
-#include "xf86Opt.h"
-#include <X11/Xfuncproto.h>
-#ifndef IN_MODULE
-#include <stdarg.h>
-#else
-#include "xf86_ansic.h"
-#endif
-#ifdef RANDR
-#include <X11/extensions/randr.h>
-#endif
-
-#include "propertyst.h"
-
-/* General parameters */
-extern int xf86DoConfigure;
-extern Bool xf86DoConfigurePass1;
-extern int xf86ScreenIndex; /* Index into pScreen.devPrivates */
-extern int xf86CreateRootWindowIndex; /* Index into pScreen.devPrivates */
-extern int xf86PixmapIndex;
-extern Bool xf86ResAccessEnter;
-extern ScrnInfoPtr *xf86Screens; /* List of pointers to ScrnInfoRecs */
-extern const unsigned char byte_reversed[256];
-extern ScrnInfoPtr xf86CurrentScreen;
-extern Bool pciSlotClaimed;
-extern Bool isaSlotClaimed;
-extern Bool fbSlotClaimed;
-#ifdef __sparc__
-extern Bool sbusSlotClaimed;
-#endif
-extern confDRIRec xf86ConfigDRI;
-extern Bool xf86inSuspend;
-
-#define XF86SCRNINFO(p) ((ScrnInfoPtr)((p)->devPrivates[xf86ScreenIndex].ptr))
-
-#define XF86FLIP_PIXELS() \
- do { \
- if (xf86GetFlipPixels()) { \
- pScreen->whitePixel = (pScreen->whitePixel) ? 0 : 1; \
- pScreen->blackPixel = (pScreen->blackPixel) ? 0 : 1; \
- } \
- while (0)
-
-#define BOOLTOSTRING(b) ((b) ? "TRUE" : "FALSE")
-
-#define PIX24TOBPP(p) (((p) == Pix24Use24) ? 24 : \
- (((p) == Pix24Use32) ? 32 : 0))
-
-/* variables for debugging */
-#ifdef BUILDDEBUG
-extern char* xf86p8bit[];
-extern CARD32 xf86DummyVar1;
-extern CARD32 xf86DummyVar2;
-extern CARD32 xf86DummyVar3;
-#endif
-
-/* Function Prototypes */
-#ifndef _NO_XF86_PROTOTYPES
-
-/* xf86Bus.c */
-
-Bool xf86CheckPciSlot(int bus, int device, int func);
-int xf86ClaimPciSlot(int bus, int device, int func, DriverPtr drvp,
- int chipset, GDevPtr dev, Bool active);
-Bool xf86ParsePciBusString(const char *busID, int *bus, int *device,
- int *func);
-Bool xf86ComparePciBusString(const char *busID, int bus, int device, int func);
-void xf86FormatPciBusNumber(int busnum, char *buffer);
-pciVideoPtr *xf86GetPciVideoInfo(void);
-pciConfigPtr *xf86GetPciConfigInfo(void);
-void xf86SetPciVideo(pciVideoPtr, resType);
-void xf86PrintResList(int verb, resPtr list);
-resPtr xf86AddRangesToList(resPtr list, resRange *pRange, int entityIndex);
-int xf86ClaimIsaSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active);
-int xf86GetIsaInfoForScreen(int scrnIndex);
-int xf86GetFbInfoForScreen(int scrnIndex);
-Bool xf86ParseIsaBusString(const char *busID);
-int xf86ClaimFbSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active);
-int xf86ClaimNoSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active);
-void xf86EnableAccess(ScrnInfoPtr pScrn);
-void xf86SetCurrentAccess(Bool Enable, ScrnInfoPtr pScrn);
-Bool xf86IsPrimaryPci(pciVideoPtr pPci);
-Bool xf86IsPrimaryIsa(void);
-int xf86CheckPciGAType(pciVideoPtr pPci);
-/* new RAC */
-resPtr xf86AddResToList(resPtr rlist, resRange *Range, int entityIndex);
-resPtr xf86JoinResLists(resPtr rlist1, resPtr rlist2);
-resPtr xf86DupResList(const resPtr rlist);
-void xf86FreeResList(resPtr rlist);
-void xf86ClaimFixedResources(resList list, int entityIndex);
-Bool xf86DriverHasEntities(DriverPtr drvp);
-void xf86AddEntityToScreen(ScrnInfoPtr pScrn, int entityIndex);
-void xf86SetEntityInstanceForScreen(ScrnInfoPtr pScrn, int entityIndex,
- int instance);
-int xf86GetNumEntityInstances(int entityIndex);
-GDevPtr xf86GetDevFromEntity(int entityIndex, int instance);
-void xf86RemoveEntityFromScreen(ScrnInfoPtr pScrn, int entityIndex);
-EntityInfoPtr xf86GetEntityInfo(int entityIndex);
-pciVideoPtr xf86GetPciInfoForEntity(int entityIndex);
-int xf86GetPciEntity(int bus, int dev, int func);
-Bool xf86SetEntityFuncs(int entityIndex, EntityProc init,
- EntityProc enter, EntityProc leave, pointer);
-void xf86DeallocateResourcesForEntity(int entityIndex, unsigned long type);
-resPtr xf86RegisterResources(int entityIndex, resList list,
- unsigned long Access);
-Bool xf86CheckPciMemBase(pciVideoPtr pPci, memType base);
-void xf86SetAccessFuncs(EntityInfoPtr pEnt, xf86SetAccessFuncPtr funcs,
- xf86SetAccessFuncPtr oldFuncs);
-Bool xf86IsEntityPrimary(int entityIndex);
-Bool xf86FixPciResource(int entityIndex, int prt, memType alignment,
- unsigned long type);
-resPtr xf86ReallocatePciResources(int entityIndex, resPtr pRes);
-resPtr xf86SetOperatingState(resList list, int entityIndex, int mask);
-void xf86EnterServerState(xf86State state);
-resRange xf86GetBlock(unsigned long type, memType size,
- memType window_start, memType window_end,
- memType align_mask, resPtr avoid);
-resRange xf86GetSparse(unsigned long type, memType fixed_bits,
- memType decode_mask, memType address_mask,
- resPtr avoid);
-memType xf86ChkConflict(resRange *rgp, int entityIndex);
-Bool xf86IsPciDevPresent(int bus, int dev, int func);
-ScrnInfoPtr xf86FindScreenForEntity(int entityIndex);
-Bool xf86NoSharedResources(int screenIndex, resType res);
-resPtr xf86FindIntersectOfLists(resPtr l1, resPtr l2);
-pciVideoPtr xf86FindPciDeviceVendor(CARD16 vendorID, CARD16 deviceID,
- char n, pciVideoPtr pvp_exclude);
-pciVideoPtr xf86FindPciClass(CARD8 intf, CARD8 subClass, CARD16 class,
- char n, pciVideoPtr pvp_exclude);
-#ifdef INCLUDE_DEPRECATED
-void xf86EnablePciBusMaster(pciVideoPtr pPci, Bool enable);
-#endif
-void xf86RegisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func, pointer arg);
-Bool xf86DeregisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func);
-#ifdef async
-Bool xf86QueueAsyncEvent(void (*func)(pointer),pointer arg);
-#endif
-
-int xf86GetLastScrnFlag(int entityIndex);
-void xf86SetLastScrnFlag(int entityIndex, int scrnIndex);
-Bool xf86IsEntityShared(int entityIndex);
-void xf86SetEntityShared(int entityIndex);
-Bool xf86IsEntitySharable(int entityIndex);
-void xf86SetEntitySharable(int entityIndex);
-Bool xf86IsPrimInitDone(int entityIndex);
-void xf86SetPrimInitDone(int entityIndex);
-void xf86ClearPrimInitDone(int entityIndex);
-int xf86AllocateEntityPrivateIndex(void);
-DevUnion *xf86GetEntityPrivate(int entityIndex, int privIndex);
-
-/* xf86Configure.c */
-GDevPtr xf86AddBusDeviceToConfigure(const char *driver, BusType bus,
- void *busData, int chipset);
-GDevPtr xf86AddDeviceToConfigure(const char *driver, pciVideoPtr pVideo,
- int chipset);
-
-/* xf86Cursor.c */
-
-void xf86LockZoom(ScreenPtr pScreen, int lock);
-void xf86InitViewport(ScrnInfoPtr pScr);
-void xf86SetViewport(ScreenPtr pScreen, int x, int y);
-void xf86ZoomViewport(ScreenPtr pScreen, int zoom);
-Bool xf86SwitchMode(ScreenPtr pScreen, DisplayModePtr mode);
-void *xf86GetPointerScreenFuncs(void);
-void xf86InitOrigins(void);
-void xf86ReconfigureLayout(void);
-
-/* xf86DPMS.c */
-
-Bool xf86DPMSInit(ScreenPtr pScreen, DPMSSetProcPtr set, int flags);
-
-/* xf86DGA.c */
-
-Bool DGAInit(ScreenPtr pScreen, DGAFunctionPtr funcs, DGAModePtr modes,
- int num);
-Bool DGAReInitModes(ScreenPtr pScreen, DGAModePtr modes, int num);
-xf86SetDGAModeProc xf86SetDGAMode;
-
-/* xf86Events.c */
-
-void SetTimeSinceLastInputEvent(void);
-pointer xf86AddInputHandler(int fd, InputHandlerProc proc, pointer data);
-int xf86RemoveInputHandler(pointer handler);
-void xf86DisableInputHandler(pointer handler);
-void xf86EnableInputHandler(pointer handler);
-void xf86InterceptSignals(int *signo);
-void xf86InterceptSigIll(void (*sigillhandler)(void));
-Bool xf86EnableVTSwitch(Bool new);
-Bool xf86CommonSpecialKey(int key, Bool down, int modifiers);
-void xf86ProcessActionEvent(ActionEvent action, void *arg);
-
-/* xf86Helper.c */
-
-void xf86AddDriver(DriverPtr driver, pointer module, int flags);
-void xf86DeleteDriver(int drvIndex);
-ScrnInfoPtr xf86AllocateScreen(DriverPtr drv, int flags);
-void xf86DeleteScreen(int scrnIndex, int flags);
-int xf86AllocateScrnInfoPrivateIndex(void);
-Bool xf86AddPixFormat(ScrnInfoPtr pScrn, int depth, int bpp, int pad);
-Bool xf86SetDepthBpp(ScrnInfoPtr scrp, int depth, int bpp, int fbbpp,
- int depth24flags);
-void xf86PrintDepthBpp(ScrnInfoPtr scrp);
-Bool xf86SetWeight(ScrnInfoPtr scrp, rgb weight, rgb mask);
-Bool xf86SetDefaultVisual(ScrnInfoPtr scrp, int visual);
-Bool xf86SetGamma(ScrnInfoPtr scrp, Gamma newGamma);
-void xf86SetDpi(ScrnInfoPtr pScrn, int x, int y);
-void xf86SetBlackWhitePixels(ScreenPtr pScreen);
-void xf86EnableDisableFBAccess(int scrnIndex, Bool enable);
-void xf86VDrvMsgVerb(int scrnIndex, MessageType type, int verb,
- const char *format, va_list args);
-void xf86DrvMsgVerb(int scrnIndex, MessageType type, int verb,
- const char *format, ...) _printf_attribute(4,5);
-void xf86DrvMsg(int scrnIndex, MessageType type, const char *format, ...)
- _printf_attribute(3,4);
-void xf86MsgVerb(MessageType type, int verb, const char *format, ...)
- _printf_attribute(3,4);
-void xf86Msg(MessageType type, const char *format, ...) _printf_attribute(2,3);
-void xf86ErrorFVerb(int verb, const char *format, ...) _printf_attribute(2,3);
-void xf86ErrorF(const char *format, ...) _printf_attribute(1,2);
-const char *xf86TokenToString(SymTabPtr table, int token);
-int xf86StringToToken(SymTabPtr table, const char *string);
-void xf86ShowClocks(ScrnInfoPtr scrp, MessageType from);
-void xf86PrintChipsets(const char *drvname, const char *drvmsg,
- SymTabPtr chips);
-int xf86MatchDevice(const char *drivername, GDevPtr **driversectlist);
-int xf86MatchPciInstances(const char *driverName, int vendorID,
- SymTabPtr chipsets, PciChipsets *PCIchipsets,
- GDevPtr *devList, int numDevs, DriverPtr drvp,
- int **foundEntities);
-int xf86MatchIsaInstances(const char *driverName, SymTabPtr chipsets,
- IsaChipsets *ISAchipsets, DriverPtr drvp,
- FindIsaDevProc FindIsaDevice, GDevPtr *devList,
- int numDevs, int **foundEntities);
-void xf86GetClocks(ScrnInfoPtr pScrn, int num,
- Bool (*ClockFunc)(ScrnInfoPtr, int),
- void (*ProtectRegs)(ScrnInfoPtr, Bool),
- void (*BlankScreen)(ScrnInfoPtr, Bool),
- IOADDRESS vertsyncreg, int maskval,
- int knownclkindex, int knownclkvalue);
-void xf86SetPriority(Bool up);
-const char *xf86GetVisualName(int visual);
-int xf86GetVerbosity(void);
-Pix24Flags xf86GetPix24(void);
-int xf86GetDepth(void);
-rgb xf86GetWeight(void);
-Gamma xf86GetGamma(void);
-Bool xf86GetFlipPixels(void);
-const char *xf86GetServerName(void);
-Bool xf86ServerIsExiting(void);
-Bool xf86ServerIsResetting(void);
-Bool xf86ServerIsInitialising(void);
-Bool xf86ServerIsOnlyDetecting(void);
-Bool xf86ServerIsOnlyProbing(void);
-Bool xf86CaughtSignal(void);
-Bool xf86GetVidModeAllowNonLocal(void);
-Bool xf86GetVidModeEnabled(void);
-Bool xf86GetModInDevAllowNonLocal(void);
-Bool xf86GetModInDevEnabled(void);
-Bool xf86GetAllowMouseOpenFail(void);
-Bool xf86IsPc98(void);
-void xf86DisableRandR(void);
-CARD32 xf86GetVersion(void);
-CARD32 xorgGetVersion(void);
-CARD32 xf86GetModuleVersion(pointer module);
-pointer xf86LoadDrvSubModule(DriverPtr drv, const char *name);
-pointer xf86LoadSubModule(ScrnInfoPtr pScrn, const char *name);
-pointer xf86LoadOneModule(char *name, pointer optlist);
-void xf86UnloadSubModule(pointer mod);
-Bool xf86LoaderCheckSymbol(const char *name);
-void xf86LoaderReqSymLists(const char **, ...);
-void xf86LoaderReqSymbols(const char *, ...);
-void xf86LoaderRefSymLists(const char **, ...);
-void xf86LoaderRefSymbols(const char *, ...);
-void xf86SetBackingStore(ScreenPtr pScreen);
-void xf86SetSilkenMouse(ScreenPtr pScreen);
-int xf86NewSerialNumber(WindowPtr p, pointer unused);
-pointer xf86FindXvOptions(int scrnIndex, int adapt_index, char *port_name,
- char **adaptor_name, pointer *adaptor_options);
-void xf86GetOS(const char **name, int *major, int *minor, int *teeny);
-ScrnInfoPtr xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag,
- int entityIndex,PciChipsets *p_chip,
- resList res, EntityProc init,
- EntityProc enter, EntityProc leave,
- pointer private);
-ScrnInfoPtr xf86ConfigIsaEntity(ScrnInfoPtr pScrn, int scrnFlag,
- int entityIndex, IsaChipsets *i_chip,
- resList res, EntityProc init,
- EntityProc enter, EntityProc leave,
- pointer private);
-ScrnInfoPtr xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag,
- int entityIndex, EntityProc init,
- EntityProc enter, EntityProc leave,
- pointer private);
-/* Obsolete! don't use */
-Bool xf86ConfigActivePciEntity(ScrnInfoPtr pScrn,
- int entityIndex,PciChipsets *p_chip,
- resList res, EntityProc init,
- EntityProc enter, EntityProc leave,
- pointer private);
-/* Obsolete! don't use */
-Bool xf86ConfigActiveIsaEntity(ScrnInfoPtr pScrn,
- int entityIndex, IsaChipsets *i_chip,
- resList res, EntityProc init,
- EntityProc enter, EntityProc leave,
- pointer private);
-void xf86ConfigPciEntityInactive(EntityInfoPtr pEnt, PciChipsets *p_chip,
- resList res, EntityProc init,
- EntityProc enter, EntityProc leave,
- pointer private);
-void xf86ConfigIsaEntityInactive(EntityInfoPtr pEnt, IsaChipsets *i_chip,
- resList res, EntityProc init,
- EntityProc enter, EntityProc leave,
- pointer private);
-void xf86ConfigFbEntityInactive(EntityInfoPtr pEnt, EntityProc init,
- EntityProc enter, EntityProc leave,
- pointer private);
-Bool xf86IsScreenPrimary(int scrnIndex);
-int xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type,
- int format, unsigned long len,
- pointer value);
-Bool xf86IsUnblank(int mode);
-
-#ifdef XFree86LOADER
-void xf86AddModuleInfo(ModuleInfoPtr info, pointer module);
-void xf86DeleteModuleInfo(int idx);
-#endif
-
-/* xf86Debug.c */
-#ifdef BUILDDEBUG
- void xf86Break1(void);
-void xf86Break2(void);
-void xf86Break3(void);
-CARD8 xf86PeekFb8(CARD8 *p);
-CARD16 xf86PeekFb16(CARD16 *p);
-CARD32 xf86PeekFb32(CARD32 *p);
-void xf86PokeFb8(CARD8 *p, CARD8 v);
-void xf86PokeFb16(CARD16 *p, CARD16 v);
-void xf86PokeFb32(CARD16 *p, CARD32 v);
-CARD8 xf86PeekMmio8(pointer Base, unsigned long Offset);
-CARD16 xf86PeekMmio16(pointer Base, unsigned long Offset);
-CARD32 xf86PeekMmio32(pointer Base, unsigned long Offset);
-void xf86PokeMmio8(pointer Base, unsigned long Offset, CARD8 v);
-void xf86PokeMmio16(pointer Base, unsigned long Offset, CARD16 v);
-void xf86PokeMmio32(pointer Base, unsigned long Offset, CARD32 v);
-extern void xf86SPTimestamp(xf86TsPtr* timestamp, char* string);
-extern void xf86STimestamp(xf86TsPtr* timestamp);
-#endif
-
-/* xf86Init.c */
-
-PixmapFormatPtr xf86GetPixFormat(ScrnInfoPtr pScrn, int depth);
-int xf86GetBppFromDepth(ScrnInfoPtr pScrn, int depth);
-
-/* xf86Mode.c */
-
-int xf86GetNearestClock(ScrnInfoPtr scrp, int freq, Bool allowDiv2,
- int DivFactor, int MulFactor, int *divider);
-const char *xf86ModeStatusToString(ModeStatus status);
-ModeStatus xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep,
- ClockRangePtr clockRanges, LookupModeFlags strategy);
-ModeStatus xf86CheckModeForMonitor(DisplayModePtr mode, MonPtr monitor);
-ModeStatus xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode,
- ClockRangePtr clockRanges,
- LookupModeFlags strategy,
- int maxPitch, int virtualX,
- int virtualY);
-ModeStatus xf86CheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode,
- int flags);
-int xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
- char **modeNames, ClockRangePtr clockRanges,
- int *linePitches, int minPitch, int maxPitch,
- int minHeight, int maxHeight, int pitchInc,
- int virtualX, int virtualY, int apertureSize,
- LookupModeFlags strategy);
-void xf86DeleteMode(DisplayModePtr *modeList, DisplayModePtr mode);
-void xf86PruneDriverModes(ScrnInfoPtr scrp);
-void xf86SetCrtcForModes(ScrnInfoPtr scrp, int adjustFlags);
-void xf86PrintModes(ScrnInfoPtr scrp);
-void xf86ShowClockRanges(ScrnInfoPtr scrp, ClockRangePtr clockRanges);
-
-/* xf86Option.c */
-
-void xf86CollectOptions(ScrnInfoPtr pScrn, pointer extraOpts);
-
-
-/* xf86RandR.c */
-#ifdef RANDR
-Bool xf86RandRInit (ScreenPtr pScreen);
-void xf86RandRSetInitialMode (ScreenPtr pScreen);
-Rotation xf86GetRotation(ScreenPtr pScreen);
-Bool xf86RandRSetNewVirtualAndDimensions(ScreenPtr pScreen,
- int newvirtX, int newvirtY,
- int newmmWidth, int newmmHeight, Bool resetMode);
-#endif
-
-/* xf86VidModeExtentionInit.c */
-
-Bool VidModeExtensionInit(ScreenPtr pScreen);
-
-/* xf86Versions.c */
-CARD32 xf86GetBuiltinInterfaceVersion(BuiltinInterface iface, int flag);
-Bool xf86RegisterBuiltinInterfaceVersion(BuiltinInterface iface,
- CARD32 version, int flags);
-
-
-#endif /* _NO_XF86_PROTOTYPES */
-
-#endif /* _XF86_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86AutoConfig.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86AutoConfig.c
deleted file mode 100644
index 36e400cd1..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86AutoConfig.c
+++ /dev/null
@@ -1,368 +0,0 @@
-/* $DHD: xc/programs/Xserver/hw/xfree86/common/xf86AutoConfig.c,v 1.15 2003/09/24 19:39:36 dawes Exp $ */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86AutoConfig.c,v 1.4 2005/08/23 20:12:26 alanc Exp $ */
-
-/*
- * Copyright 2003 by David H. Dawes.
- * Copyright 2003 by X-Oz Technologies.
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- *
- * Author: David Dawes <dawes@XFree86.Org>.
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86AutoConfig.c,v 1.2 2003/11/03 05:11:01 tsi Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "xf86Config.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/*
- * Sections for the default built-in configuration.
- */
-
-#define BUILTIN_MODULE_SECTION \
- "Section \"Module\"\n" \
- "\tLoad\t\"extmod\"\n" \
- "\tLoad\t\"dbe\"\n" \
- "\tLoad\t\"glx\"\n" \
- "\tLoad\t\"freetype\"\n" \
- "EndSection\n\n"
-
-#define BUILTIN_DEVICE_NAME \
- "\"Builtin Default %s Device %d\""
-
-#define BUILTIN_DEVICE_SECTION_PRE \
- "Section \"Device\"\n" \
- "\tIdentifier\t" BUILTIN_DEVICE_NAME "\n" \
- "\tDriver\t\"%s\"\n"
-
-#define BUILTIN_DEVICE_SECTION_POST \
- "EndSection\n\n"
-
-#define BUILTIN_DEVICE_SECTION \
- BUILTIN_DEVICE_SECTION_PRE \
- BUILTIN_DEVICE_SECTION_POST
-
-#define BUILTIN_MONITOR_NAME \
- "\"Builtin Default Monitor\""
-
-#define BUILTIN_MONITOR_SECTION \
- "Section \"Monitor\"\n" \
- "\tIdentifier\t" BUILTIN_MONITOR_NAME "\n" \
- "\tOption\t\"TargetRefresh\"\t\"75.0\"\n" \
- "EndSection\n\n"
-
-#define BUILTIN_SCREEN_NAME \
- "\"Builtin Default %s Screen %d\""
-
-#define BUILTIN_SCREEN_SECTION \
- "Section \"Screen\"\n" \
- "\tIdentifier\t" BUILTIN_SCREEN_NAME "\n" \
- "\tDevice\t" BUILTIN_DEVICE_NAME "\n" \
- "\tMonitor\t" BUILTIN_MONITOR_NAME "\n" \
- "EndSection\n\n"
-
-#define BUILTIN_LAYOUT_SECTION_PRE \
- "Section \"ServerLayout\"\n" \
- "\tIdentifier\t\"Builtin Default Layout\"\n"
-
-#define BUILTIN_LAYOUT_SCREEN_LINE \
- "\tScreen\t" BUILTIN_SCREEN_NAME "\n"
-
-#define BUILTIN_LAYOUT_SECTION_POST \
- "EndSection\n\n"
-
-
-#ifndef GET_CONFIG_CMD
-#define GET_CONFIG_CMD "getconfig"
-#endif
-
-#ifndef GETCONFIG_DIR
-#define GETCONFIG_DIR PROJECTROOT "/lib/X11/getconfig"
-#endif
-
-#define GETCONFIG_WHITESPACE " \t\n"
-
-static const char **builtinConfig = NULL;
-static int builtinLines = 0;
-static const char *deviceList[] = {
- "fbdev",
- "vesa",
- "vga",
- NULL
-};
-
-/*
- * A built-in config file is stored as an array of strings, with each string
- * representing a single line. AppendToConfig() breaks up the string "s"
- * into lines, and appends those lines it to builtinConfig.
- */
-
-static void
-AppendToList(const char *s, const char ***list, int *lines)
-{
- char *str, *newstr, *p;
-
- str = xnfstrdup(s);
- for (p = strtok(str, "\n"); p; p = strtok(NULL, "\n")) {
- (*lines)++;
- *list = xnfrealloc(*list, (*lines + 1) * sizeof(**list));
- newstr = xnfalloc(strlen(p) + 2);
- strcpy(newstr, p);
- strcat(newstr, "\n");
- (*list)[*lines - 1] = newstr;
- (*list)[*lines] = NULL;
- }
- xfree(str);
-}
-
-static void
-FreeList(const char ***list, int *lines)
-{
- int i;
-
- for (i = 0; i < *lines; i++) {
- if ((*list)[i])
- xfree((*list)[i]);
- }
- xfree(*list);
- *list = NULL;
- *lines = 0;
-}
-
-static void
-FreeConfig(void)
-{
- FreeList(&builtinConfig, &builtinLines);
-}
-
-static void
-AppendToConfig(const char *s)
-{
- AppendToList(s, &builtinConfig, &builtinLines);
-}
-
-Bool
-xf86AutoConfig(void)
-{
- const char **p;
- char buf[1024];
- pciVideoPtr *pciptr, info = NULL;
- char *driver = NULL;
- FILE *gp = NULL;
- ConfigStatus ret;
-
- /* Find the primary device, and get some information about it. */
- if (xf86PciVideoInfo) {
- for (pciptr = xf86PciVideoInfo; (info = *pciptr); pciptr++) {
- if (xf86IsPrimaryPci(info)) {
- break;
- }
- }
- if (!info) {
- ErrorF("Primary device is not PCI\n");
- }
- } else {
- ErrorF("xf86PciVideoInfo is not set\n");
- }
-
- if (info) {
- char *tmp;
- char *path = NULL, *a, *b;
- char *searchPath = NULL;
-
- /*
- * Look for the getconfig program first in the xf86ModulePath
- * directories, then in GETCONFIG_DIR, then in BINDIR. If it
- * isn't found in any of those locations, just use the normal
- * search path.
- */
-
- if (xf86ModulePath) {
- a = xnfstrdup(xf86ModulePath);
- b = strtok(a, ",");
- while (b) {
- path = xnfrealloc(path,
- strlen(b) + 1 + strlen(GET_CONFIG_CMD) + 1);
- sprintf(path, "%s/%s", b, GET_CONFIG_CMD);
- if (access(path, X_OK) == 0)
- break;
- b = strtok(NULL, ",");
- }
- if (!b) {
- xfree(path);
- path = NULL;
- }
- xfree(a);
- }
-
- if (!path) {
- path = xnfstrdup(GETCONFIG_DIR "/" GET_CONFIG_CMD);
- if (access(path, X_OK) != 0) {
- xfree(path);
- path = NULL;
- }
- }
-
-#ifdef BINDIR
- if (!path) {
- path = xnfstrdup(BINDIR "/" GET_CONFIG_CMD);
- if (access(path, X_OK) != 0) {
- xfree(path);
- path = NULL;
- }
- }
-#endif
-
- if (!path)
- path = xnfstrdup(GET_CONFIG_CMD);
-
- /*
- * Build up the config file directory search path:
- *
- * /etc/X11
- * PROJECTROOT/etc/X11
- * xf86ModulePath
- * PROJECTROOT/lib/X11/getconfig (GETCONFIG_DIR)
- */
-
- searchPath = xnfalloc(strlen("/etc/X11") + 1 +
- strlen(PROJECTROOT "/etc/X11") + 1 +
- (xf86ModulePath ? strlen(xf86ModulePath) : 0)
- + 1 +
- strlen(GETCONFIG_DIR) + 1);
- strcpy(searchPath, "/etc/X11," PROJECTROOT "/etc/X11,");
- if (xf86ModulePath && *xf86ModulePath) {
- strcat(searchPath, xf86ModulePath);
- strcat(searchPath, ",");
- }
- strcat(searchPath, GETCONFIG_DIR);
-
- ErrorF("xf86AutoConfig: Primary PCI is %d:%d:%d\n",
- info->bus, info->device, info->func);
-
- snprintf(buf, sizeof(buf), "%s"
-#ifdef DEBUG
- " -D"
-#endif
- " -X %d"
- " -I %s"
- " -v 0x%04x -d 0x%04x -r 0x%02x -s 0x%04x"
- " -b 0x%04x -c 0x%04x",
- path,
- (unsigned int)xorgGetVersion(),
- searchPath,
- info->vendor, info->chipType, info->chipRev,
- info->subsysVendor, info->subsysCard,
- info->class << 8 | info->subclass);
- ErrorF("Running \"%s\"\n", buf);
- gp = Popen(buf, "r");
- if (gp) {
- if (fgets(buf, sizeof(buf) - 1, gp)) {
- buf[strlen(buf) - 1] = '\0';
- tmp = strtok(buf, GETCONFIG_WHITESPACE);
- if (tmp)
- driver = xnfstrdup(tmp);
- }
- }
- xfree(path);
- xfree(searchPath);
- }
-
- AppendToConfig(BUILTIN_MODULE_SECTION);
- AppendToConfig(BUILTIN_MONITOR_SECTION);
-
- if (driver) {
- snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION_PRE,
- driver, 0, driver);
- AppendToConfig(buf);
- ErrorF("New driver is \"%s\"\n", driver);
- buf[0] = '\t';
- while (fgets(buf + 1, sizeof(buf) - 2, gp)) {
- AppendToConfig(buf);
- ErrorF("Extra line: %s", buf);
- }
- AppendToConfig(BUILTIN_DEVICE_SECTION_POST);
- snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION,
- driver, 0, driver, 0);
- AppendToConfig(buf);
- }
-
- if (gp)
- Pclose(gp);
-
- for (p = deviceList; *p; p++) {
- snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p);
- AppendToConfig(buf);
- snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
- AppendToConfig(buf);
- }
-
- AppendToConfig(BUILTIN_LAYOUT_SECTION_PRE);
- if (driver) {
- snprintf(buf, sizeof(buf), BUILTIN_LAYOUT_SCREEN_LINE, driver, 0);
- AppendToConfig(buf);
- }
- for (p = deviceList; *p; p++) {
- snprintf(buf, sizeof(buf), BUILTIN_LAYOUT_SCREEN_LINE, *p, 0);
- AppendToConfig(buf);
- }
- AppendToConfig(BUILTIN_LAYOUT_SECTION_POST);
-
-#ifdef BUILTIN_EXTRA
- AppendToConfig(BUILTIN_EXTRA);
-#endif
-
- if (driver)
- xfree(driver);
-
- xf86MsgVerb(X_DEFAULT, 0,
- "Using default built-in configuration (%d lines)\n",
- builtinLines);
-
- xf86MsgVerb(X_DEFAULT, 3, "--- Start of built-in configuration ---\n");
- for (p = builtinConfig; *p; p++)
- xf86ErrorFVerb(3, "\t%s", *p);
- xf86MsgVerb(X_DEFAULT, 3, "--- End of built-in configuration ---\n");
-
- xf86setBuiltinConfig(builtinConfig);
- ret = xf86HandleConfigFile(TRUE);
- FreeConfig();
- switch(ret) {
- case CONFIG_OK:
- return TRUE;
- default:
- xf86Msg(X_ERROR, "Error parsing the built-in default configuration.\n");
- return FALSE;
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Bus.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Bus.c
deleted file mode 100644
index e0cc4dd65..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Bus.c
+++ /dev/null
@@ -1,3317 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Bus.c,v 1.80 2004/02/05 18:24:59 eich Exp $ */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#define REDUCER
-/*
- * This file contains the interfaces to the bus-specific code
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Resources.h"
-
-/* Bus-specific headers */
-
-#include "xf86Bus.h"
-
-#define XF86_OS_PRIVS
-#define NEED_OS_RAC_PROTOS
-#include "xf86_OSproc.h"
-
-#include "xf86RAC.h"
-
-/* Entity data */
-EntityPtr *xf86Entities = NULL; /* Bus slots claimed by drivers */
-int xf86NumEntities = 0;
-static int xf86EntityPrivateCount = 0;
-BusAccPtr xf86BusAccInfo = NULL;
-
-xf86AccessRec AccessNULL = {NULL,NULL,NULL};
-
-xf86CurrentAccessRec xf86CurrentAccess = {NULL,NULL};
-
-BusRec primaryBus = { BUS_NONE, {{0}}};
-
-Bool xf86ResAccessEnter = FALSE;
-
-#ifdef REDUCER
-/* Resources that temporarily conflict with estimated resources */
-static resPtr AccReducers = NULL;
-#endif
-
-/* resource lists */
-resPtr Acc = NULL;
-resPtr osRes = NULL;
-
-/* allocatable ranges */
-resPtr ResRange = NULL;
-
-/* predefined special resources */
-resRange resVgaExclusive[] = {_VGA_EXCLUSIVE, _END};
-resRange resVgaShared[] = {_VGA_SHARED, _END};
-resRange resVgaMemShared[] = {_VGA_SHARED_MEM,_END};
-resRange resVgaIoShared[] = {_VGA_SHARED_IO,_END};
-resRange resVgaUnusedExclusive[] = {_VGA_EXCLUSIVE_UNUSED, _END};
-resRange resVgaUnusedShared[] = {_VGA_SHARED_UNUSED, _END};
-resRange resVgaSparseExclusive[] = {_VGA_EXCLUSIVE_SPARSE, _END};
-resRange resVgaSparseShared[] = {_VGA_SHARED_SPARSE, _END};
-resRange res8514Exclusive[] = {_8514_EXCLUSIVE, _END};
-resRange res8514Shared[] = {_8514_SHARED, _END};
-
-/* Flag: do we need RAC ? */
-static Bool needRAC = FALSE;
-static Bool doFramebufferMode = FALSE;
-
-/* state change notification callback list */
-static StateChangeNotificationPtr StateChangeNotificationList;
-static void notifyStateChange(xf86NotifyState state);
-
-#undef MIN
-#define MIN(x,y) ((x<y)?x:y)
-
-
-/*
- * Call the bus probes relevant to the architecture.
- *
- * The only one available so far is for PCI and SBUS.
- */
-
-void
-xf86BusProbe(void)
-{
- xf86PciProbe();
-#if defined(__sparc__) && !defined(__OpenBSD__)
- xf86SbusProbe();
-#endif
-}
-
-/*
- * Determine what bus type the busID string represents. The start of the
- * bus-dependent part of the string is returned as retID.
- */
-
-BusType
-StringToBusType(const char* busID, const char **retID)
-{
- char *p, *s;
- BusType ret = BUS_NONE;
-
- /* If no type field, Default to PCI */
- if (isdigit(busID[0])) {
- if (retID)
- *retID = busID;
- return BUS_PCI;
- }
-
- s = xstrdup(busID);
- p = strtok(s, ":");
- if (p == NULL || *p == 0) {
- xfree(s);
- return BUS_NONE;
- }
- if (!xf86NameCmp(p, "pci") || !xf86NameCmp(p, "agp"))
- ret = BUS_PCI;
- if (!xf86NameCmp(p, "isa"))
- ret = BUS_ISA;
- if (!xf86NameCmp(p, "sbus"))
- ret = BUS_SBUS;
- if (ret != BUS_NONE)
- if (retID)
- *retID = busID + strlen(p) + 1;
- xfree(s);
- return ret;
-}
-
-/*
- * Entity related code.
- */
-
-void
-xf86EntityInit(void)
-{
- int i;
- resPtr *pprev_next;
- resPtr res;
- xf86AccessPtr pacc;
-
- for (i = 0; i < xf86NumEntities; i++)
- if (xf86Entities[i]->entityInit) {
- if (xf86Entities[i]->access->busAcc)
- ((BusAccPtr)xf86Entities[i]->access->busAcc)->set_f
- (xf86Entities[i]->access->busAcc);
- pacc = xf86Entities[i]->access->fallback;
- if (pacc->AccessEnable)
- pacc->AccessEnable(pacc->arg);
- xf86Entities[i]->entityInit(i,xf86Entities[i]->private);
- if (pacc->AccessDisable)
- pacc->AccessDisable(pacc->arg);
- /* remove init resources after init is processed */
- pprev_next = &Acc;
- res = Acc;
- while (res) {
- if (res->res_type & ResInit && (res->entityIndex == i)) {
- (*pprev_next) = res->next;
- xfree(res);
- } else
- pprev_next = &(res->next);
- res = (*pprev_next);
- }
- }
-}
-
-int
-xf86AllocateEntity(void)
-{
- xf86NumEntities++;
- xf86Entities = xnfrealloc(xf86Entities,
- sizeof(EntityPtr) * xf86NumEntities);
- xf86Entities[xf86NumEntities - 1] = xnfcalloc(1,sizeof(EntityRec));
- xf86Entities[xf86NumEntities - 1]->entityPrivates =
- xnfcalloc(sizeof(DevUnion) * xf86EntityPrivateCount, 1);
- return (xf86NumEntities - 1);
-}
-
-static void
-EntityEnter(void)
-{
- int i;
- xf86AccessPtr pacc;
-
- for (i = 0; i < xf86NumEntities; i++)
- if (xf86Entities[i]->entityEnter) {
- if (xf86Entities[i]->access->busAcc)
- ((BusAccPtr)xf86Entities[i]->access->busAcc)->set_f
- (xf86Entities[i]->access->busAcc);
- pacc = xf86Entities[i]->access->fallback;
- if (pacc->AccessEnable)
- pacc->AccessEnable(pacc->arg);
- xf86Entities[i]->entityEnter(i,xf86Entities[i]->private);
- if (pacc->AccessDisable)
- pacc->AccessDisable(pacc->arg);
- }
-}
-
-static void
-EntityLeave(void)
-{
- int i;
- xf86AccessPtr pacc;
-
- for (i = 0; i < xf86NumEntities; i++)
- if (xf86Entities[i]->entityLeave) {
- if (xf86Entities[i]->access->busAcc)
- ((BusAccPtr)xf86Entities[i]->access->busAcc)->set_f
- (xf86Entities[i]->access->busAcc);
- pacc = xf86Entities[i]->access->fallback;
- if (pacc->AccessEnable)
- pacc->AccessEnable(pacc->arg);
- xf86Entities[i]->entityLeave(i,xf86Entities[i]->private);
- if (pacc->AccessDisable)
- pacc->AccessDisable(pacc->arg);
- }
-}
-
-Bool
-xf86IsEntityPrimary(int entityIndex)
-{
- EntityPtr pEnt = xf86Entities[entityIndex];
-
- if (primaryBus.type != pEnt->busType) return FALSE;
-
- switch (pEnt->busType) {
- case BUS_PCI:
- return (pEnt->pciBusId.bus == primaryBus.id.pci.bus &&
- pEnt->pciBusId.device == primaryBus.id.pci.device &&
- pEnt->pciBusId.func == primaryBus.id.pci.func);
- case BUS_ISA:
- return TRUE;
- case BUS_SBUS:
- return (pEnt->sbusBusId.fbNum == primaryBus.id.sbus.fbNum);
- default:
- return FALSE;
- }
-}
-
-Bool
-xf86SetEntityFuncs(int entityIndex, EntityProc init, EntityProc enter,
- EntityProc leave, pointer private)
-{
- if (entityIndex >= xf86NumEntities)
- return FALSE;
- xf86Entities[entityIndex]->entityInit = init;
- xf86Entities[entityIndex]->entityEnter = enter;
- xf86Entities[entityIndex]->entityLeave = leave;
- xf86Entities[entityIndex]->private = private;
- return TRUE;
-}
-
-Bool
-xf86DriverHasEntities(DriverPtr drvp)
-{
- int i;
- for (i = 0; i < xf86NumEntities; i++) {
- if (xf86Entities[i]->driver == drvp)
- return TRUE;
- }
- return FALSE;
-}
-
-void
-xf86AddEntityToScreen(ScrnInfoPtr pScrn, int entityIndex)
-{
- if (entityIndex == -1)
- return;
- if (xf86Entities[entityIndex]->inUse &&
- !(xf86Entities[entityIndex]->entityProp & IS_SHARED_ACCEL))
- FatalError("Requested Entity already in use!\n");
-
- pScrn->numEntities++;
- pScrn->entityList = xnfrealloc(pScrn->entityList,
- pScrn->numEntities * sizeof(int));
- pScrn->entityList[pScrn->numEntities - 1] = entityIndex;
- xf86Entities[entityIndex]->access->next = pScrn->access;
- pScrn->access = xf86Entities[entityIndex]->access;
- xf86Entities[entityIndex]->inUse = TRUE;
- pScrn->entityInstanceList = xnfrealloc(pScrn->entityInstanceList,
- pScrn->numEntities * sizeof(int));
- pScrn->entityInstanceList[pScrn->numEntities - 1] = 0;
- pScrn->domainIOBase = xf86Entities[entityIndex]->domainIO;
-}
-
-void
-xf86SetEntityInstanceForScreen(ScrnInfoPtr pScrn, int entityIndex, int instance)
-{
- int i;
-
- if (entityIndex == -1 || entityIndex >= xf86NumEntities)
- return;
-
- for (i = 0; i < pScrn->numEntities; i++) {
- if (pScrn->entityList[i] == entityIndex) {
- pScrn->entityInstanceList[i] = instance;
- break;
- }
- }
-}
-
-/*
- * XXX This needs to be updated for the case where a single entity may have
- * instances associated with more than one screen.
- */
-ScrnInfoPtr
-xf86FindScreenForEntity(int entityIndex)
-{
- int i,j;
-
- if (entityIndex == -1) return NULL;
-
- if (xf86Screens) {
- for (i = 0; i < xf86NumScreens; i++) {
- for (j = 0; j < xf86Screens[i]->numEntities; j++) {
- if ( xf86Screens[i]->entityList[j] == entityIndex )
- return (xf86Screens[i]);
- }
- }
- }
- return NULL;
-}
-
-void
-xf86RemoveEntityFromScreen(ScrnInfoPtr pScrn, int entityIndex)
-{
- int i;
- EntityAccessPtr *ptr = (EntityAccessPtr *)&pScrn->access;
- EntityAccessPtr peacc;
-
- for (i = 0; i < pScrn->numEntities; i++) {
- if (pScrn->entityList[i] == entityIndex) {
- peacc = xf86Entities[pScrn->entityList[i]]->access;
- (*ptr) = peacc->next;
- /* disable entity: call disable func */
- if (peacc->pAccess && peacc->pAccess->AccessDisable)
- peacc->pAccess->AccessDisable(peacc->pAccess->arg);
- /* also disable fallback - just in case */
- if (peacc->fallback && peacc->fallback->AccessDisable)
- peacc->fallback->AccessDisable(peacc->fallback->arg);
- for (i++; i < pScrn->numEntities; i++)
- pScrn->entityList[i-1] = pScrn->entityList[i];
- pScrn->numEntities--;
- xf86Entities[entityIndex]->inUse = FALSE;
- break;
- }
- ptr = &(xf86Entities[pScrn->entityList[i]]->access->next);
- }
-}
-
-/*
- * xf86ClearEntitiesForScreen() - called when a screen is deleted
- * to mark it's entities unused. Called by xf86DeleteScreen().
- */
-void
-xf86ClearEntityListForScreen(int scrnIndex)
-{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
- EntityAccessPtr peacc;
- int i, entityIndex;
-
- if (pScrn->entityList == NULL || pScrn->numEntities == 0) return;
-
- for (i = 0; i < pScrn->numEntities; i++) {
- entityIndex = pScrn->entityList[i];
- xf86Entities[entityIndex]->inUse = FALSE;
- /* disable resource: call the disable function */
- peacc = xf86Entities[entityIndex]->access;
- if (peacc->pAccess && peacc->pAccess->AccessDisable)
- peacc->pAccess->AccessDisable(peacc->pAccess->arg);
- /* and the fallback function */
- if (peacc->fallback && peacc->fallback->AccessDisable)
- peacc->fallback->AccessDisable(peacc->fallback->arg);
- /* shared resources are only needed when entity is active: remove */
- xf86DeallocateResourcesForEntity(entityIndex, ResShared);
- }
- xfree(pScrn->entityList);
- xfree(pScrn->entityInstanceList);
- if (pScrn->CurrentAccess->pIoAccess == (EntityAccessPtr)pScrn->access)
- pScrn->CurrentAccess->pIoAccess = NULL;
- if (pScrn->CurrentAccess->pMemAccess == (EntityAccessPtr)pScrn->access)
- pScrn->CurrentAccess->pMemAccess = NULL;
- pScrn->entityList = NULL;
- pScrn->entityInstanceList = NULL;
-}
-
-void
-xf86DeallocateResourcesForEntity(int entityIndex, unsigned long type)
-{
- resPtr *pprev_next = &Acc;
- resPtr res = Acc;
-
- while (res) {
- if (res->entityIndex == entityIndex &&
- (type & ResAccMask & res->res_type))
- {
- (*pprev_next) = res->next;
- xfree(res);
- } else
- pprev_next = &(res->next);
- res = (*pprev_next);
- }
-}
-
-/*
- * Add an extra device section (GDevPtr) to an entity.
- */
-
-void
-xf86AddDevToEntity(int entityIndex, GDevPtr dev)
-{
- EntityPtr pEnt;
-
- if (entityIndex >= xf86NumEntities)
- return;
-
- pEnt = xf86Entities[entityIndex];
- pEnt->numInstances++;
- pEnt->devices = xnfrealloc(pEnt->devices,
- pEnt->numInstances * sizeof(GDevPtr));
- pEnt->devices[pEnt->numInstances - 1] = dev;
- dev->claimed = TRUE;
-}
-
-/*
- * xf86GetEntityInfo() -- This function hands information from the
- * EntityRec struct to the drivers. The EntityRec structure itself
- * remains invisible to the driver.
- */
-EntityInfoPtr
-xf86GetEntityInfo(int entityIndex)
-{
- EntityInfoPtr pEnt;
- int i;
-
- if (entityIndex >= xf86NumEntities)
- return NULL;
-
- pEnt = xnfcalloc(1,sizeof(EntityInfoRec));
- pEnt->index = entityIndex;
- pEnt->location = xf86Entities[entityIndex]->bus;
- pEnt->active = xf86Entities[entityIndex]->active;
- pEnt->chipset = xf86Entities[entityIndex]->chipset;
- pEnt->resources = xf86Entities[entityIndex]->resources;
- pEnt->driver = xf86Entities[entityIndex]->driver;
- if ( (xf86Entities[entityIndex]->devices) &&
- (xf86Entities[entityIndex]->devices[0]) ) {
- for (i = 0; i < xf86Entities[entityIndex]->numInstances; i++)
- if (xf86Entities[entityIndex]->devices[i]->screen == 0)
- break;
- pEnt->device = xf86Entities[entityIndex]->devices[i];
- } else
- pEnt->device = NULL;
-
- return pEnt;
-}
-
-int
-xf86GetNumEntityInstances(int entityIndex)
-{
- if (entityIndex >= xf86NumEntities)
- return -1;
-
- return xf86Entities[entityIndex]->numInstances;
-}
-
-GDevPtr
-xf86GetDevFromEntity(int entityIndex, int instance)
-{
- int i;
-
- /* We might not use AddDevtoEntity */
- if ( (!xf86Entities[entityIndex]->devices) ||
- (!xf86Entities[entityIndex]->devices[0]) )
- return NULL;
-
- if (entityIndex >= xf86NumEntities ||
- instance >= xf86Entities[entityIndex]->numInstances)
- return NULL;
-
- for (i = 0; i < xf86Entities[entityIndex]->numInstances; i++)
- if (xf86Entities[entityIndex]->devices[i]->screen == instance)
- break;
- return xf86Entities[entityIndex]->devices[i];
-}
-
-/*
- * general generic disable function.
- */
-static void
-disableAccess(void)
-{
- int i;
- xf86AccessPtr pacc;
- EntityAccessPtr peacc;
-
- /* call disable funcs and reset current access pointer */
- /* the entity specific access funcs are in an enabled */
- /* state - driver must restore their state explicitely */
- for (i = 0; i < xf86NumScreens; i++) {
- peacc = xf86Screens[i]->CurrentAccess->pIoAccess;
- while (peacc) {
- if (peacc->pAccess && peacc->pAccess->AccessDisable)
- peacc->pAccess->AccessDisable(peacc->pAccess->arg);
- peacc = peacc->next;
- }
- xf86Screens[i]->CurrentAccess->pIoAccess = NULL;
- peacc = xf86Screens[i]->CurrentAccess->pMemAccess;
- while (peacc) {
- if (peacc->pAccess && peacc->pAccess->AccessDisable)
- peacc->pAccess->AccessDisable(peacc->pAccess->arg);
- peacc = peacc->next;
- }
- xf86Screens[i]->CurrentAccess->pMemAccess = NULL;
- }
- /* then call the generic entity disable funcs */
- for (i = 0; i < xf86NumEntities; i++) {
- pacc = xf86Entities[i]->access->fallback;
- if (pacc->AccessDisable)
- pacc->AccessDisable(pacc->arg);
- }
-}
-
-static void
-clearAccess(void)
-{
- int i;
-
- /* call disable funcs and reset current access pointer */
- /* the entity specific access funcs are in an enabled */
- /* state - driver must restore their state explicitely */
- for (i = 0; i < xf86NumScreens; i++) {
- xf86Screens[i]->CurrentAccess->pIoAccess = NULL;
- xf86Screens[i]->CurrentAccess->pMemAccess = NULL;
- }
-
-}
-
-/*
- * Generic interface to bus specific code - add other buses here
- */
-
-/*
- * xf86AccessInit() - set up everything needed for access control
- * called only once on first server generation.
- */
-void
-xf86AccessInit(void)
-{
- initPciState();
- initPciBusState();
- DisablePciBusAccess();
- DisablePciAccess();
-
- xf86ResAccessEnter = TRUE;
-}
-
-/*
- * xf86AccessEnter() -- gets called to save the text mode VGA IO
- * resources when reentering the server after a VT switch.
- */
-void
-xf86AccessEnter(void)
-{
- if (xf86ResAccessEnter)
- return;
-
- /*
- * on enter we simply disable routing of special resources
- * to any bus and let the RAC code to "open" the right bridges.
- */
- PciBusStateEnter();
- DisablePciBusAccess();
- PciStateEnter();
- disableAccess();
- EntityEnter();
- notifyStateChange(NOTIFY_ENTER);
- xf86EnterServerState(SETUP);
- xf86ResAccessEnter = TRUE;
-}
-
-/*
- * xf86AccessLeave() -- prepares access for and calls the
- * entityLeave() functions.
- * xf86AccessLeaveState() --- gets called to restore the
- * access to the VGA IO resources when switching VT or on
- * server exit.
- * This was split to call xf86AccessLeaveState() from
- * ddxGiveUp().
- */
-void
-xf86AccessLeave(void)
-{
- if (!xf86ResAccessEnter)
- return;
- notifyStateChange(NOTIFY_LEAVE);
- disableAccess();
- DisablePciBusAccess();
- EntityLeave();
-}
-
-void
-xf86AccessLeaveState(void)
-{
- if (!xf86ResAccessEnter)
- return;
- xf86ResAccessEnter = FALSE;
- PciStateLeave();
- PciBusStateLeave();
-}
-
-/*
- * xf86AccessRestoreState() - Restore the access registers to the
- * state before X was started. This is handy for framebuffers.
- */
-static void
-xf86AccessRestoreState(void)
-{
- if (!xf86ResAccessEnter)
- return;
- PciStateLeave();
- PciBusStateLeave();
-}
-
-/*
- * xf86EnableAccess() -- enable access to controlled resources.
- * To reduce latency when switching access the ScrnInfoRec has
- * a linked list of the EntityAccPtr of all screen entities.
- */
-/*
- * switching access needs to be done in te following oder:
- * disable
- * 1. disable old entity
- * 2. reroute bus
- * 3. enable new entity
- * Otherwise resources needed for access control might be shadowed
- * by other resources!
- */
-#ifdef async
-
-static AsyncQPtr *AsyncQ = NULL;
-ScrnInfoPtr xf86CurrentScreen = NULL;
-
-#define SETUP_Q org = AsyncQ; \
- AsyncQ = &new;
-
-#define PROCESS_Q xf86CurrentScreen = pScrn;
- if (!new) AsyncQ = org; \
- else { \
- AsyncQPtr tmp_Q; \
- while (1) {\
- new->func(new->arg);\
- if (!(new->next)) {\
- AsyncQ = org; xfree(new); break; \
- } \
- tmp_Q = new->next; \
- xfree(new); \
- new = tmp_Q; \
- } \
- }
-#else
-#define SETUP_Q
-#define PROCESS_Q
-#endif
-
-void
-xf86EnableAccess(ScrnInfoPtr pScrn)
-{
- register EntityAccessPtr peAcc = (EntityAccessPtr) pScrn->access;
- register EntityAccessPtr pceAcc;
- register xf86AccessPtr pAcc;
- EntityAccessPtr tmp;
-#ifdef async
- AsyncQPtr *org, new = NULL;
-#endif
-
-#ifdef DEBUG
- ErrorF("Enable access %i\n",pScrn->scrnIndex);
-#endif
-
- /* Entity is not under access control or currently enabled */
- if (!pScrn->access) {
- if (pScrn->busAccess) {
- SETUP_Q;
- ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
- PROCESS_Q;
- }
- return;
- }
-
- switch (pScrn->resourceType) {
- case IO:
- pceAcc = pScrn->CurrentAccess->pIoAccess;
- if (peAcc == pceAcc) {
- return;
- }
- SETUP_Q;
- if (pScrn->CurrentAccess->pMemAccess == pceAcc)
- pScrn->CurrentAccess->pMemAccess = NULL;
- while (pceAcc) {
- pAcc = pceAcc->pAccess;
- if ( pAcc && pAcc->AccessDisable)
- (*pAcc->AccessDisable)(pAcc->arg);
- pceAcc = pceAcc->next;
- }
- if (pScrn->busAccess)
- ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
- while (peAcc) {
- pAcc = peAcc->pAccess;
- if (pAcc && pAcc->AccessEnable)
- (*pAcc->AccessEnable)(pAcc->arg);
- peAcc = peAcc->next;
- }
- pScrn->CurrentAccess->pIoAccess = (EntityAccessPtr) pScrn->access;
- PROCESS_Q;
- return;
-
- case MEM_IO:
- pceAcc = pScrn->CurrentAccess->pIoAccess;
- if (peAcc != pceAcc) { /* current Io != pAccess */
- SETUP_Q;
- tmp = pceAcc;
- while (pceAcc) {
- pAcc = pceAcc->pAccess;
- if (pAcc && pAcc->AccessDisable)
- (*pAcc->AccessDisable)(pAcc->arg);
- pceAcc = pceAcc->next;
- }
- pceAcc = pScrn->CurrentAccess->pMemAccess;
- if (peAcc != pceAcc /* current Mem != pAccess */
- && tmp !=pceAcc) {
- while (pceAcc) {
- pAcc = pceAcc->pAccess;
- if (pAcc && pAcc->AccessDisable)
- (*pAcc->AccessDisable)(pAcc->arg);
- pceAcc = pceAcc->next;
- }
- }
- } else { /* current Io == pAccess */
- pceAcc = pScrn->CurrentAccess->pMemAccess;
- if (pceAcc == peAcc) { /* current Mem == pAccess */
- return;
- }
- SETUP_Q;
- while (pceAcc) { /* current Mem != pAccess */
- pAcc = pceAcc->pAccess;
- if (pAcc && pAcc->AccessDisable)
- (*pAcc->AccessDisable)(pAcc->arg);
- pceAcc = pceAcc->next;
- }
- }
- if (pScrn->busAccess)
- ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
- while (peAcc) {
- pAcc = peAcc->pAccess;
- if (pAcc && pAcc->AccessEnable)
- (*pAcc->AccessEnable)(pAcc->arg);
- peAcc = peAcc->next;
- }
- pScrn->CurrentAccess->pMemAccess =
- pScrn->CurrentAccess->pIoAccess = (EntityAccessPtr) pScrn->access;
- PROCESS_Q;
- return;
-
- case MEM:
- pceAcc = pScrn->CurrentAccess->pMemAccess;
- if (peAcc == pceAcc) {
- return;
- }
- SETUP_Q;
- if (pScrn->CurrentAccess->pIoAccess == pceAcc)
- pScrn->CurrentAccess->pIoAccess = NULL;
- while (pceAcc) {
- pAcc = pceAcc->pAccess;
- if ( pAcc && pAcc->AccessDisable)
- (*pAcc->AccessDisable)(pAcc->arg);
- pceAcc = pceAcc->next;
- }
- if (pScrn->busAccess)
- ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
- while (peAcc) {
- pAcc = peAcc->pAccess;
- if (pAcc && pAcc->AccessEnable)
- (*pAcc->AccessEnable)(pAcc->arg);
- peAcc = peAcc->next;
- }
- pScrn->CurrentAccess->pMemAccess = (EntityAccessPtr) pScrn->access;
- PROCESS_Q;
- return;
-
- case NONE:
- if (pScrn->busAccess) {
- SETUP_Q;
- ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
- PROCESS_Q;
- }
- return;
- }
-}
-
-void
-xf86SetCurrentAccess(Bool Enable, ScrnInfoPtr pScrn)
-{
- EntityAccessPtr pceAcc2 = NULL;
- register EntityAccessPtr pceAcc = NULL;
- register xf86AccessPtr pAcc;
-
-
- switch(pScrn->resourceType) {
- case IO:
- pceAcc = pScrn->CurrentAccess->pIoAccess;
- break;
- case MEM:
- pceAcc = pScrn->CurrentAccess->pMemAccess;
- break;
- case MEM_IO:
- pceAcc = pScrn->CurrentAccess->pMemAccess;
- pceAcc2 = pScrn->CurrentAccess->pIoAccess;
- break;
- default:
- break;
- }
-
- while (pceAcc) {
- pAcc = pceAcc->pAccess;
- if ( pAcc) {
- if (!Enable) {
- if (pAcc->AccessDisable)
- (*pAcc->AccessDisable)(pAcc->arg);
- } else {
- if (pAcc->AccessEnable)
- (*pAcc->AccessEnable)(pAcc->arg);
- }
- }
- pceAcc = pceAcc->next;
- if (!pceAcc) {
- pceAcc = pceAcc2;
- pceAcc2 = NULL;
- }
- }
-}
-
-void
-xf86SetAccessFuncs(EntityInfoPtr pEnt, xf86SetAccessFuncPtr funcs,
- xf86SetAccessFuncPtr oldFuncs)
-{
- AccessFuncPtr rac;
-
- if (!xf86Entities[pEnt->index]->rac)
- xf86Entities[pEnt->index]->rac = xnfcalloc(1,sizeof(AccessFuncRec));
-
- rac = xf86Entities[pEnt->index]->rac;
-
- if (funcs->mem == funcs->io_mem && funcs->mem && funcs->io)
- xf86Entities[pEnt->index]->entityProp |= NO_SEPARATE_MEM_FROM_IO;
- if (funcs->io == funcs->io_mem && funcs->mem && funcs->io)
- xf86Entities[pEnt->index]->entityProp |= NO_SEPARATE_IO_FROM_MEM;
-
- rac->mem_new = funcs->mem;
- rac->io_new = funcs->io;
- rac->io_mem_new = funcs->io_mem;
-
- rac->old = oldFuncs;
-}
-
-/*
- * Conflict checking
- */
-
-static memType
-getMask(memType val)
-{
- memType mask = 0;
- memType tmp = 0;
-
- mask=~mask;
- tmp = ~((~tmp) >> 1);
-
- while (!(val & tmp)) {
- mask = mask >> 1;
- val = val << 1;
- }
- return mask;
-}
-
-/*
- * checkConflictBlock() -- check for conflicts of a block resource range.
- * If conflict is found return end of conflicting range. Else return 0.
- */
-static memType
-checkConflictBlock(resRange *range, resPtr pRes)
-{
- memType val,tmp,prev;
- int i;
-
- switch (pRes->res_type & ResExtMask) {
- case ResBlock:
- if (range->rBegin < pRes->block_end &&
- range->rEnd > pRes->block_begin) {
-#ifdef DEBUG
- ErrorF("b-b conflict w: %lx %lx\n",
- pRes->block_begin,pRes->block_end);
-#endif
- return pRes->block_end < range->rEnd ?
- pRes->block_end : range->rEnd;
- }
- return 0;
- case ResSparse:
- if (pRes->sparse_base > range->rEnd) return 0;
-
- val = (~pRes->sparse_mask | pRes->sparse_base) & getMask(range->rEnd);
-#ifdef DEBUG
- ErrorF("base = 0x%lx, mask = 0x%lx, begin = 0x%lx, end = 0x%lx ,"
- "val = 0x%lx\n",
- pRes->sparse_base, pRes->sparse_mask, range->rBegin,
- range->rEnd, val);
-#endif
- i = sizeof(memType) * 8;
- tmp = prev = pRes->sparse_base;
-
- while (i) {
- tmp |= 1<< (--i) & val;
- if (tmp > range->rEnd)
- tmp = prev;
- else
- prev = tmp;
- }
- if (tmp >= range->rBegin) {
-#ifdef DEBUG
- ErrorF("conflict found at: 0x%lx\n",tmp);
- ErrorF("b-d conflict w: %lx %lx\n",
- pRes->sparse_base,pRes->sparse_mask);
-#endif
- return tmp;
- }
- else
- return 0;
- }
- return 0;
-}
-
-/*
- * checkConflictSparse() -- check for conflicts of a sparse resource range.
- * If conflict is found return base of conflicting region. Else return 0.
- */
-#define mt_max ~(memType)0
-#define length sizeof(memType) * 8
-static memType
-checkConflictSparse(resRange *range, resPtr pRes)
-{
- memType val, tmp, prev;
- int i;
-
- switch (pRes->res_type & ResExtMask) {
- case ResSparse:
- tmp = pRes->sparse_mask & range->rMask;
- if ((tmp & pRes->sparse_base) == (tmp & range->rBase)) {
-#ifdef DEBUG
- ErrorF("s-b conflict w: %lx %lx\n",
- pRes->sparse_base,pRes->sparse_mask);
-#endif
- return pRes->sparse_mask;
- }
- return 0;
-
- case ResBlock:
- if (pRes->block_end < range->rBase) return 0;
-
- val = (~range->rMask | range->rBase) & getMask(pRes->block_end);
- i = length;
- tmp = prev = range->rBase;
-
- while (i) {
-#ifdef DEBUG
- ErrorF("tmp = 0x%lx\n",tmp);
-#endif
- tmp |= 1<< (--i) & val;
- if (tmp > pRes->block_end)
- tmp = prev;
- else
- prev = tmp;
- }
- if (tmp < pRes->block_begin)
- return 0;
- else {
- /*
- * now we subdivide the block region in sparse regions
- * with base values = 2^n and find the smallest mask.
- * This might be done in a simpler way....
- */
- memType mask, m_mask = 0, base = pRes->block_begin;
- int i;
- while (base < pRes->block_end) {
- for (i = 1; i < length; i++)
- if ( base != (base & (mt_max << i))) break;
- mask = mt_max >> (length - i);
- do mask >>= 1;
- while ((mask + base + 1) > pRes->block_end);
- /* m_mask and are _inverted_ sparse masks */
- m_mask = mask > m_mask ? mask : m_mask;
- base = base + mask + 1;
- }
-#ifdef DEBUG
- ErrorF("conflict found at: 0x%lx\n",tmp);
- ErrorF("b-b conflict w: %lx %lx\n",
- pRes->block_begin,pRes->block_end);
-#endif
- return ~m_mask;
- }
- }
- return 0;
-}
-#undef mt_max
-#undef length
-
-/*
- * needCheck() -- this function decides whether to check for conflicts
- * depending on the types of the resource ranges and their locations
- */
-static Bool
-needCheck(resPtr pRes, unsigned long type, int entityIndex, xf86State state)
-{
- /* the same entity shouldn't conflict with itself */
- ScrnInfoPtr pScrn;
- int i;
- BusType loc = BUS_NONE;
- BusType r_loc = BUS_NONE;
-
- /* Ignore overlapped ranges that have been nullified */
- if ((pRes->res_type & ResOverlap) && (pRes->block_begin > pRes->block_end))
- return FALSE;
-
- if ((pRes->res_type & ResTypeMask) != (type & ResTypeMask))
- return FALSE;
-
- /*
- * Resources set by BIOS (ResBios) are allowed to conflict
- * with resources marked (ResBios).
- */
- if (pRes->res_type & type & ResBios)
- return FALSE;
-
- /*If requested, skip over estimated resources */
- if (pRes->res_type & type & ResEstimated)
- return FALSE;
-
- if (type & pRes->res_type & ResUnused)
- return FALSE;
-
- if (state == OPERATING) {
- if (type & ResDisableOpr || pRes->res_type & ResDisableOpr)
- return FALSE;
- if (type & pRes->res_type & ResUnusedOpr) return FALSE;
- /*
- * Maybe we should have ResUnused set The resUnusedOpr
- * bit, too. This way we could avoid this confusion
- */
- if ((type & ResUnusedOpr && pRes->res_type & ResUnused) ||
- (type & ResUnused && pRes->res_type & ResUnusedOpr))
- return FALSE;
- }
-
- if (entityIndex > -1)
- loc = xf86Entities[entityIndex]->busType;
- if (pRes->entityIndex > -1)
- r_loc = xf86Entities[pRes->entityIndex]->busType;
-
- switch (type & ResAccMask) {
- case ResExclusive:
- switch (pRes->res_type & ResAccMask) {
- case ResExclusive:
- break;
- case ResShared:
- /* ISA buses are only locally exclusive on a PCI system */
- if (loc == BUS_ISA && r_loc == BUS_PCI)
- return FALSE;
- break;
- }
- break;
- case ResShared:
- switch (pRes->res_type & ResAccMask) {
- case ResExclusive:
- /* ISA buses are only locally exclusive on a PCI system */
- if (loc == BUS_PCI && r_loc == BUS_ISA)
- return FALSE;
- break;
- case ResShared:
- return FALSE;
- }
- break;
- case ResAny:
- break;
- }
-
- if (pRes->entityIndex == entityIndex) return FALSE;
-
- if (pRes->entityIndex > -1 &&
- (pScrn = xf86FindScreenForEntity(entityIndex))) {
- for (i = 0; i < pScrn->numEntities; i++)
- if (pScrn->entityList[i] == pRes->entityIndex) return FALSE;
- }
- return TRUE;
-}
-
-/*
- * checkConflict() - main conflict checking function which all other
- * function call.
- */
-static memType
-checkConflict(resRange *rgp, resPtr pRes, int entityIndex,
- xf86State state, Bool ignoreIdentical)
-{
- memType ret;
-
- while(pRes) {
- if (!needCheck(pRes,rgp->type, entityIndex ,state)) {
- pRes = pRes->next;
- continue;
- }
- switch (rgp->type & ResExtMask) {
- case ResBlock:
- if (rgp->rEnd < rgp->rBegin) {
- xf86Msg(X_ERROR,"end of block range 0x%lx < begin 0x%lx\n",
- rgp->rEnd,rgp->rBegin);
- return 0;
- }
- if ((ret = checkConflictBlock(rgp, pRes))) {
- if (!ignoreIdentical || (rgp->rBegin != pRes->block_begin)
- || (rgp->rEnd != pRes->block_end))
- return ret;
- }
- break;
- case ResSparse:
- if ((rgp->rBase & rgp->rMask) != rgp->rBase) {
- xf86Msg(X_ERROR,"sparse io range (base: 0x%lx mask: 0x%lx)"
- "doesn't satisfy (base & mask = mask)\n",
- rgp->rBase, rgp->rMask);
- return 0;
- }
- if ((ret = checkConflictSparse(rgp, pRes))) {
- if (!ignoreIdentical || (rgp->rBase != pRes->sparse_base)
- || (rgp->rMask != pRes->sparse_mask))
- return ret;
- }
- break;
- }
- pRes = pRes->next;
- }
- return 0;
-}
-
-/*
- * ChkConflict() -- used within xxxBus ; find conflict with any location.
- */
-memType
-ChkConflict(resRange *rgp, resPtr res, xf86State state)
-{
- return checkConflict(rgp, res, -2, state,FALSE);
-}
-
-/*
- * xf86ChkConflict() - This function is the low level interface to
- * the resource broker that gets exported. Tests all resources ie.
- * performs test with SETUP flag.
- */
-memType
-xf86ChkConflict(resRange *rgp, int entityIndex)
-{
- return checkConflict(rgp, Acc, entityIndex, SETUP,FALSE);
-}
-
-/*
- * Resources List handling
- */
-
-resPtr
-xf86JoinResLists(resPtr rlist1, resPtr rlist2)
-{
- resPtr pRes;
-
- if (!rlist1)
- return rlist2;
-
- if (!rlist2)
- return rlist1;
-
- for (pRes = rlist1; pRes->next; pRes = pRes->next)
- ;
- pRes->next = rlist2;
- return rlist1;
-}
-
-resPtr
-xf86AddResToList(resPtr rlist, resRange *range, int entityIndex)
-{
- resPtr new;
-
- switch (range->type & ResExtMask) {
- case ResBlock:
- if (range->rEnd < range->rBegin) {
- xf86Msg(X_ERROR,"end of block range 0x%lx < begin 0x%lx\n",
- range->rEnd,range->rBegin);
- return rlist;
- }
- break;
- case ResSparse:
- if ((range->rBase & range->rMask) != range->rBase) {
- xf86Msg(X_ERROR,"sparse io range (base: 0x%lx mask: 0x%lx)"
- "doesn't satisfy (base & mask = mask)\n",
- range->rBase, range->rMask);
- return rlist;
- }
- break;
- }
-
- new = xnfalloc(sizeof(resRec));
- /*
- * Only background resources may be registered with ResBios
- * and ResEstimated set. Other resources only set it for
- * testing.
- */
- if (entityIndex != (-1))
- range->type &= ~(ResBios | ResEstimated);
- new->val = *range;
- new->entityIndex = entityIndex;
- new->next = rlist;
- return new;
-}
-
-void
-xf86FreeResList(resPtr rlist)
-{
- resPtr pRes;
-
- if (!rlist)
- return;
-
- for (pRes = rlist->next; pRes; rlist = pRes, pRes = pRes->next)
- xfree(rlist);
- xfree(rlist);
-}
-
-resPtr
-xf86DupResList(const resPtr rlist)
-{
- resPtr pRes, ret, prev, new;
-
- if (!rlist)
- return NULL;
-
- ret = xnfalloc(sizeof(resRec));
- *ret = *rlist;
- prev = ret;
- for (pRes = rlist->next; pRes; pRes = pRes->next) {
- new = xnfalloc(sizeof(resRec));
- *new = *pRes;
- prev->next = new;
- prev = new;
- }
- return ret;
-}
-
-void
-xf86PrintResList(int verb, resPtr list)
-{
- int i = 0;
- const char *s, *r;
- resPtr tmp = list;
- unsigned long type;
-
- if (!list)
- return;
-
- type = ResMem;
- r = "M";
- while (1) {
- while (list) {
- if ((list->res_type & ResPhysMask) == type) {
- switch (list->res_type & ResExtMask) {
- case ResBlock:
- xf86ErrorFVerb(verb,
- "\t[%d] %d\t%ld\t0x%08lx - 0x%08lx (0x%lx)",
- i, list->entityIndex,
- (list->res_type & ResDomain) >> 24,
- list->block_begin, list->block_end,
- list->block_end - list->block_begin + 1);
- break;
- case ResSparse:
- xf86ErrorFVerb(verb, "\t[%d] %d\t%ld\t0x%08lx - 0x%08lx ",
- i, list->entityIndex,
- (list->res_type & ResDomain) >> 24,
- list->sparse_base,list->sparse_mask);
- break;
- default:
- list = list->next;
- continue;
- }
- xf86ErrorFVerb(verb, " %s", r);
- switch (list->res_type & ResAccMask) {
- case ResExclusive:
- if (list->res_type & ResUnused)
- s = "x";
- else
- s = "X";
- break;
- case ResShared:
- if (list->res_type & ResUnused)
- s = "s";
- else
- s = "S";
- break;
- default:
- s = "?";
- }
- xf86ErrorFVerb(verb, "%s", s);
- switch (list->res_type & ResExtMask) {
- case ResBlock:
- s = "[B]";
- break;
- case ResSparse:
- s = "[S]";
- break;
- default:
- s = "[?]";
- }
- xf86ErrorFVerb(verb, "%s", s);
- if (list->res_type & ResEstimated)
- xf86ErrorFVerb(verb, "E");
- if (list->res_type & ResOverlap)
- xf86ErrorFVerb(verb, "O");
- if (list->res_type & ResInit)
- xf86ErrorFVerb(verb, "t");
- if (list->res_type & ResBios)
- xf86ErrorFVerb(verb, "(B)");
- if (list->res_type & ResBus)
- xf86ErrorFVerb(verb, "(b)");
- if (list->res_type & ResOprMask) {
- switch (list->res_type & ResOprMask) {
- case ResUnusedOpr:
- s = "(OprU)";
- break;
- case ResDisableOpr:
- s = "(OprD)";
- break;
- default:
- s = "(Opr?)";
- break;
- }
- xf86ErrorFVerb(verb, "%s", s);
- }
- xf86ErrorFVerb(verb, "\n");
- i++;
- }
- list = list->next;
- }
- if (type == ResIo) break;
- type = ResIo;
- r = "I";
- list = tmp;
- }
-}
-
-resPtr
-xf86AddRangesToList(resPtr list, resRange *pRange, int entityIndex)
-{
- while(pRange && pRange->type != ResEnd) {
- list = xf86AddResToList(list,pRange,entityIndex);
- pRange++;
- }
- return list;
-}
-
-void
-xf86ResourceBrokerInit(void)
-{
- resPtr resPci;
-
- osRes = NULL;
-
- /* Get the addressable ranges */
- ResRange = xf86BusAccWindowsFromOS();
- xf86MsgVerb(X_INFO, 3, "Addressable bus resource ranges are\n");
- xf86PrintResList(3, ResRange);
-
- /* Get the ranges used exclusively by the system */
- osRes = xf86AccResFromOS(osRes);
- xf86MsgVerb(X_INFO, 3, "OS-reported resource ranges:\n");
- xf86PrintResList(3, osRes);
-
- /* Bus dep initialization */
- resPci = ResourceBrokerInitPci(&osRes);
- Acc = xf86JoinResLists(xf86DupResList(osRes), resPci);
-
- xf86MsgVerb(X_INFO, 3, "All system resource ranges:\n");
- xf86PrintResList(3, Acc);
-
-}
-
-#define MEM_ALIGN (1024 * 1024)
-
-/*
- * RemoveOverlaps() -- remove overlaps between resources of the
- * same kind.
- * Beware: This function doesn't check for access attributes.
- * At resource broker initialization this is no problem as this
- * only deals with exclusive resources.
- */
-#if 0
-void
-RemoveOverlaps(resPtr target, resPtr list, Bool pow2Alignment, Bool useEstimated)
-{
- resPtr pRes;
- memType size, newsize, adjust;
-
- if (!target)
- return;
-
- for (pRes = list; pRes; pRes = pRes->next) {
- if (pRes != target
- && ((pRes->res_type & ResTypeMask) ==
- (target->res_type & ResTypeMask))
- && pRes->block_begin <= target->block_end
- && pRes->block_end >= target->block_begin) {
- /* Possibly ignore estimated resources */
- if (!useEstimated && (pRes->res_type & ResEstimated)) continue;
- /*
- * Target should be a larger region than pRes. If pRes fully
- * contains target, don't do anything unless target can overlap.
- */
- if (pRes->block_begin <= target->block_begin &&
- pRes->block_end >= target->block_end) {
- if (target->res_type & ResOverlap) {
- /* Nullify range but keep its ResOverlap bit on */
- target->block_end = target->block_begin - 1;
- return;
- }
- continue;
- }
- /*
- * In cases where the target and pRes have the same starting
- * address, reduce the size of the target (given it's an estimate).
- */
- if (pRes->block_begin == target->block_begin) {
- if (target->res_type & ResOverlap)
- target->block_end = target->block_begin - 1;
- else
- target->block_end = pRes->block_end;
- }
- /* Otherwise, trim target to remove the overlap */
- else if (pRes->block_begin <= target->block_end) {
- target->block_end = pRes->block_begin - 1;
- } else if (!pow2Alignment &&
- pRes->block_end >= target->block_begin) {
- target->block_begin = pRes->block_end + 1;
- }
- if (pow2Alignment) {
- /*
- * Align to a power of two. This requires finding the
- * largest power of two that is smaller than the adjusted
- * size.
- */
- size = target->block_end - target->block_begin + 1;
- newsize = 1UL << (sizeof(memType) * 8 - 1);
- while (!(newsize & size))
- newsize >>= 1;
- target->block_end = target->block_begin + newsize - 1;
- } else if (target->block_end > MEM_ALIGN) {
- /* Align the end to MEM_ALIGN */
- if ((adjust = (target->block_end + 1) % MEM_ALIGN))
- target->block_end -= adjust;
- }
- }
- }
-}
-#else
-
-void
-RemoveOverlaps(resPtr target, resPtr list, Bool pow2Alignment, Bool useEstimated)
-{
- resPtr pRes;
- memType size, newsize, adjust;
-
- if (!target)
- return;
-
- if (!(target->res_type & ResEstimated) /* Don't touch sure resources */
- && !(target->res_type & ResOverlap)) /* Unless they may overlap */
- return;
-
- for (pRes = list; pRes; pRes = pRes->next) {
- if (pRes == target
- || ((pRes->res_type & ResTypeMask) !=
- (target->res_type & ResTypeMask))
- || pRes->block_begin > target->block_end
- || pRes->block_end < target->block_begin)
- continue;
-
- if (pRes->block_begin <= target->block_begin) {
- /* Possibly ignore estimated resources */
- if (!useEstimated && (pRes->res_type & ResEstimated))
- continue;
-
- /* Special cases */
- if (pRes->block_end >= target->block_end) {
- /*
- * If pRes fully contains target, don't do anything
- * unless target can overlap.
- */
- if (target->res_type & ResOverlap) {
- /* Nullify range but keep its ResOverlap bit on */
- target->block_end = target->block_begin - 1;
- return;
- } else
- continue;
- } else {
-#if 0 /* Don't trim start address - we trust what we got */
- /*
- * If !pow2Alignment trim start address: !pow2Alingment
- * is only set when estimated OS addresses are handled.
- * In cases where the target and pRes have the same
- * starting address, reduce the size of the target
- * (given it's an estimate).
- */
- if (!pow2Alignment)
- target->block_begin = pRes->block_end + 1;
- else
-#endif
- if (pRes->block_begin == target->block_begin)
- target->block_end = pRes->block_end;
- else
- continue;
- }
- } else {
- /* Trim target to remove the overlap */
- target->block_end = pRes->block_begin - 1;
- }
- if (pow2Alignment) {
- /*
- * Align to a power of two. This requires finding the
- * largest power of two that is smaller than the adjusted
- * size.
- */
- size = target->block_end - target->block_begin + 1;
- newsize = 1UL << (sizeof(memType) * 8 - 1);
- while (!(newsize & size))
- newsize >>= 1;
- target->block_end = target->block_begin + newsize - 1;
- } else if (target->block_end > MEM_ALIGN) {
- /* Align the end to MEM_ALIGN */
- if ((adjust = (target->block_end + 1) % MEM_ALIGN))
- target->block_end -= adjust;
- }
- }
-}
-
-#endif
-
-/*
- * Resource request code
- */
-
-#define ALIGN(x,a) ((x) + a) &~(a)
-
-resRange
-xf86GetBlock(unsigned long type, memType size,
- memType window_start, memType window_end,
- memType align_mask, resPtr avoid)
-{
- memType min, max, tmp;
- resRange r = {ResEnd,0,0};
- resPtr res_range = ResRange;
-
- if (!size) return r;
- if (window_end < window_start || (window_end - window_start) < (size - 1)) {
- ErrorF("Requesting insufficient memory window!:"
- " start: 0x%lx end: 0x%lx size 0x%lx\n",
- window_start,window_end,size);
- return r;
- }
- type = (type & ~(ResExtMask | ResBios | ResEstimated)) | ResBlock;
-
- while (res_range) {
- if ((type & ResTypeMask) == (res_range->res_type & ResTypeMask)) {
- if (res_range->block_begin > window_start)
- min = res_range->block_begin;
- else
- min = window_start;
- if (res_range->block_end < window_end)
- max = res_range->block_end;
- else
- max = window_end;
- min = ALIGN(min,align_mask);
- /* do not produce an overflow! */
- while (min < max && (max - min) >= (size - 1)) {
- RANGE(r,min,min + size - 1,type);
- tmp = ChkConflict(&r,Acc,SETUP);
- if (!tmp) {
- tmp = ChkConflict(&r,avoid,SETUP);
- if (!tmp) {
- return r;
- }
- }
- min = ALIGN(tmp,align_mask);
- }
- }
- res_range = res_range->next;
- }
- RANGE(r,0,0,ResEnd);
- return r;
-}
-
-#define mt_max ~(memType)0
-#define length sizeof(memType) * 8
-/*
- * make_base() -- assign the lowest bits to the bits set in mask.
- * example: mask 011010 val 0000110 -> 011000
- */
-static memType
-make_base(memType val, memType mask)
-{
- int i,j = 0;
- memType ret = 0
- ;
- for (i = 0;i<length;i++) {
- if ((1 << i) & mask) {
- ret |= (((val >> j) & 1) << i);
- j++;
- }
- }
- return ret;
-}
-
-/*
- * make_base() -- assign the bits set in mask to the lowest bits.
- * example: mask 011010 , val 010010 -> 000011
- */
-static memType
-unmake_base(memType val, memType mask)
-{
- int i,j = 0;
- memType ret = 0;
-
- for (i = 0;i<length;i++) {
- if ((1 << i) & mask) {
- ret |= (((val >> i) & 1) << j);
- j++;
- }
- }
- return ret;
-}
-
-static memType
-fix_counter(memType val, memType old_mask, memType mask)
-{
- mask = old_mask & mask;
-
- val = make_base(val,old_mask);
- return unmake_base(val,mask);
-}
-
-resRange
-xf86GetSparse(unsigned long type, memType fixed_bits,
- memType decode_mask, memType address_mask, resPtr avoid)
-{
- resRange r = {ResEnd,0,0};
- memType new_mask;
- memType mask1;
- memType base;
- memType counter = 0;
- memType counter1;
- memType max_counter = ~(memType)0;
- memType max_counter1;
- memType conflict = 0;
-
- /* for sanity */
- type = (type & ~(ResExtMask | ResBios | ResEstimated)) | ResSparse;
-
- /*
- * a sparse address consists of 3 parts:
- * fixed_bits: F bits which hard decoded by the hardware
- * decode_bits: D bits which are used to decode address
- * but which may be set by software
- * address_bits: A bits which are used to address the
- * sparse range.
- * the decode_mask marks all decode bits while the address_mask
- * masks out all address_bits:
- * F D A
- * decode_mask: 0 1 0
- * address_mask: 1 1 0
- */
- decode_mask &= address_mask;
- new_mask = decode_mask;
-
- /*
- * We start by setting the decode_mask bits to different values
- * when a conflict is found the address_mask of the conflicting
- * resource is returned. We remove those bits from decode_mask
- * that are also set in the returned address_mask as they always
- * conflict with resources which use them as address masks.
- * The resoulting mask is stored in new_mask.
- * We continue until no conflict is found or until we have
- * tried all possible settings of new_mask.
- */
- while (1) {
- base = make_base(counter,new_mask) | fixed_bits;
- RANGE(r,base,address_mask,type);
- conflict = ChkConflict(&r,Acc,SETUP);
- if (!conflict) {
- conflict = ChkConflict(&r,avoid,SETUP);
- if (!conflict) {
- return r;
- }
- }
- counter = fix_counter(counter,new_mask,conflict);
- max_counter = fix_counter(max_counter,new_mask,conflict);
- new_mask &= conflict;
- counter ++;
- if (counter > max_counter) break;
- }
- if (!new_mask && (new_mask == decode_mask)) {
- RANGE(r,0,0,ResEnd);
- return r;
- }
- /*
- * if we haven't been successful we also try to modify those
- * bits in decode_mask that are not at the same time set in
- * new mask. These bits overlap with address_bits of some
- * resources. If a conflict with a resource of this kind is
- * found (ie. returned_mask & mask1 != mask1) with
- * mask1 = decode_mask & ~new_mask we cannot
- * use our choice of bits in the new_mask part. We try
- * another choice.
- */
- max_counter = fix_counter(mt_max,mt_max,new_mask);
- mask1 = decode_mask & ~new_mask;
- max_counter1 = fix_counter(mt_max,mt_max,mask1);
- counter = 0;
-
- while (1) {
- counter1 = 0;
- while (1) {
- base = make_base(counter1,mask1);
- RANGE(r,base,address_mask,type);
- conflict = ChkConflict(&r,Acc,SETUP);
- if (!conflict) {
- conflict = ChkConflict(&r,avoid,SETUP);
- if (!conflict) {
- return r;
- }
- }
- counter1 ++;
- if ((mask1 & conflict) != mask1 || counter1 > max_counter1)
- break;
- }
- counter ++;
- if (counter > max_counter) break;
- }
- RANGE(r,0,0,ResEnd);
- return r;
-}
-
-#undef length
-#undef mt_max
-
-/*
- * Resource registrarion
- */
-
-static resList
-xf86GetResourcesImplicitly(int entityIndex)
-{
- if (entityIndex >= xf86NumEntities) return NULL;
-
- switch (xf86Entities[entityIndex]->bus.type) {
- case BUS_ISA:
- case BUS_NONE:
- case BUS_SBUS:
- return NULL;
- case BUS_PCI:
- return GetImplicitPciResources(entityIndex);
- case BUS_last:
- return NULL;
- }
- return NULL;
-}
-
-static void
-convertRange2Host(int entityIndex, resRange *pRange)
-{
- if (pRange->type & ResBus) {
- switch (xf86Entities[entityIndex]->busType) {
- case BUS_PCI:
- pciConvertRange2Host(entityIndex,pRange);
- break;
- case BUS_ISA:
- isaConvertRange2Host(pRange);
- break;
- default:
- break;
- }
-
- pRange->type &= ~ResBus;
- }
-}
-
-/*
- * xf86RegisterResources() -- attempts to register listed resources.
- * If list is NULL it tries to obtain resources implicitly. Function
- * returns a resPtr listing all resources not successfully registered.
- */
-
-resPtr
-xf86RegisterResources(int entityIndex, resList list, unsigned long access)
-{
- resPtr res = NULL;
- resRange range;
- resList list_f = NULL;
-
- if (!list) {
- list = xf86GetResourcesImplicitly(entityIndex);
- /* these resources have to be in host address space already */
- if (!list) return NULL;
- list_f = list;
- }
-
- while(list->type != ResEnd) {
- range = *list;
-
- convertRange2Host(entityIndex,&range);
-
- if ((access != ResNone) && (access & ResAccMask)) {
- range.type = (range.type & ~ResAccMask) | (access & ResAccMask);
- }
- range.type &= ~ResEstimated; /* Not allowed for drivers */
-#if !((defined(__alpha__) || (defined(__ia64__))) && defined(linux))
- /* On Alpha Linux, do not check for conflicts, trust the kernel. */
- if (checkConflict(&range, Acc, entityIndex, SETUP,TRUE))
- res = xf86AddResToList(res,&range,entityIndex);
- else
-#endif
- {
- Acc = xf86AddResToList(Acc,&range,entityIndex);
- }
- list++;
- }
- if (list_f)
- xfree(list_f);
-
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3,"Resources after driver initialization\n");
- xf86PrintResList(3, Acc);
- if (res) xf86MsgVerb(X_INFO, 3,
- "Failed Resources after driver initialization "
- "for Entity: %i\n",entityIndex);
- xf86PrintResList(3, res);
-#endif
- return res;
-
-}
-
-static void
-busTypeSpecific(EntityPtr pEnt, xf86State state, xf86AccessPtr *acc_mem,
- xf86AccessPtr *acc_io, xf86AccessPtr *acc_mem_io)
-{
- pciAccPtr *ppaccp;
-
- switch (pEnt->bus.type) {
- case BUS_ISA:
- case BUS_SBUS:
- *acc_mem = *acc_io = *acc_mem_io = &AccessNULL;
- break;
- break;
- case BUS_PCI:
- ppaccp = xf86PciAccInfo;
- while (*ppaccp) {
- if ((*ppaccp)->busnum == pEnt->pciBusId.bus
- && (*ppaccp)->devnum == pEnt->pciBusId.device
- && (*ppaccp)->funcnum == pEnt->pciBusId.func) {
- *acc_io = &(*ppaccp)->ioAccess;
- *acc_mem = &(*ppaccp)->memAccess;
- *acc_mem_io = &(*ppaccp)->io_memAccess;
- break;
- }
- ppaccp++;
- }
- break;
- default:
- *acc_mem = *acc_io = *acc_mem_io = NULL;
- break;
- }
- return;
-}
-
-static void
-setAccess(EntityPtr pEnt, xf86State state)
-{
-
- xf86AccessPtr acc_mem, acc_io, acc_mem_io;
- xf86AccessPtr org_mem = NULL, org_io = NULL, org_mem_io = NULL;
- int prop;
-
- busTypeSpecific(pEnt,state,&acc_mem,&acc_io,&acc_mem_io);
-
- /* The replacement function needs to handle _all_ shared resources */
- /* unless they are handeled locally and disabled otherwise */
- if (pEnt->rac) {
- if (pEnt->rac->io_new) {
- org_io = acc_io;
- acc_io = pEnt->rac->io_new;
- }
- if (pEnt->rac->mem_new) {
- org_mem = acc_mem;
- acc_mem = pEnt->rac->mem_new;
- }
- if (pEnt->rac->io_mem_new) {
- org_mem_io = acc_mem_io;
- acc_mem_io = pEnt->rac->io_mem_new;
- }
- }
-
- if (state == OPERATING) {
- prop = pEnt->entityProp;
- switch(pEnt->entityProp & NEED_SHARED) {
- case NEED_SHARED:
- pEnt->access->rt = MEM_IO;
- break;
- case NEED_IO_SHARED:
- pEnt->access->rt = IO;
- break;
- case NEED_MEM_SHARED:
- pEnt->access->rt = MEM;
- break;
- default:
- pEnt->access->rt = NONE;
- }
- } else {
- prop = NEED_SHARED | NEED_MEM | NEED_IO;
- pEnt->access->rt = MEM_IO;
- }
-
- switch(pEnt->access->rt) {
- case IO:
- pEnt->access->pAccess = acc_io;
- break;
- case MEM:
- pEnt->access->pAccess = acc_mem;
- break;
- case MEM_IO:
- pEnt->access->pAccess = acc_mem_io;
- break;
- default: /* no conflicts at all */
- pEnt->access->pAccess = NULL; /* remove from RAC */
- break;
- }
-
- if (org_io) {
- /* does the driver want the old access func? */
- if (pEnt->rac->old) {
- /* give it to the driver, leave state disabled */
- pEnt->rac->old->io = org_io;
- } else if (org_io->AccessEnable) {
- /* driver doesn't want it - enable generic access */
- org_io->AccessEnable(org_io->arg);
- }
- }
-
- if (org_mem_io) {
- /* does the driver want the old access func? */
- if (pEnt->rac->old) {
- /* give it to the driver, leave state disabled */
- pEnt->rac->old->io_mem = org_mem_io;
- } else if (org_mem_io->AccessEnable) {
- /* driver doesn't want it - enable generic access */
- org_mem_io->AccessEnable(org_mem_io->arg);
- }
- }
-
- if (org_mem) {
- /* does the driver want the old access func? */
- if (pEnt->rac->old) {
- /* give it to the driver, leave state disabled */
- pEnt->rac->old->mem = org_mem;
- } else if (org_mem->AccessEnable) {
- /* driver doesn't want it - enable generic access */
- org_mem->AccessEnable(org_mem->arg);
- }
- }
-
- if (!(prop & NEED_MEM_SHARED)){
- if (prop & NEED_MEM) {
- if (acc_mem && acc_mem->AccessEnable)
- acc_mem->AccessEnable(acc_mem->arg);
- } else {
- if (acc_mem && acc_mem->AccessDisable)
- acc_mem->AccessDisable(acc_mem->arg);
- }
- }
-
- if (!(prop & NEED_IO_SHARED)) {
- if (prop & NEED_IO) {
- if (acc_io && acc_io->AccessEnable)
- acc_io->AccessEnable(acc_io->arg);
- } else {
- if (acc_io && acc_io->AccessDisable)
- acc_io->AccessDisable(acc_io->arg);
- }
- }
-
- /* disable shared resources */
- if (pEnt->access->pAccess
- && pEnt->access->pAccess->AccessDisable)
- pEnt->access->pAccess->AccessDisable(pEnt->access->pAccess->arg);
-
- /*
- * If device is not under access control it is enabled.
- * If it needs bus routing do it here as it isn't bus
- * type specific. Any conflicts should be checked at this
- * stage
- */
- if (!pEnt->access->pAccess
- && (pEnt->entityProp & (state == SETUP ? NEED_VGA_ROUTED_SETUP :
- NEED_VGA_ROUTED)))
- ((BusAccPtr)pEnt->busAcc)->set_f(pEnt->busAcc);
-}
-
-
-/*
- * xf86EnterServerState() -- set state the server is in.
- */
-
-typedef enum { TRI_UNSET, TRI_TRUE, TRI_FALSE } TriState;
-
-static void
-SetSIGIOForState(xf86State state)
-{
- static int sigio_state;
- static TriState sigio_blocked = TRI_UNSET;
-
- if ((state == SETUP) && (sigio_blocked != TRI_TRUE)) {
- sigio_state = xf86BlockSIGIO();
- sigio_blocked = TRI_TRUE;
- } else if ((state == OPERATING) && (sigio_blocked != TRI_UNSET)) {
- xf86UnblockSIGIO(sigio_state);
- sigio_blocked = TRI_FALSE;
- }
-}
-
-void
-xf86EnterServerState(xf86State state)
-{
- EntityPtr pEnt;
- ScrnInfoPtr pScrn;
- int i,j;
- int needVGA = 0;
- resType rt;
- /*
- * This is a good place to block SIGIO during SETUP state.
- * SIGIO should be blocked in SETUP state otherwise (u)sleep()
- * might get interrupted early.
- * We take care not to call xf86BlockSIGIO() twice.
- */
- SetSIGIOForState(state);
-#ifdef DEBUG
- if (state == SETUP)
- ErrorF("Entering SETUP state\n");
- else
- ErrorF("Entering OPERATING state\n");
-#endif
-
- /* When servicing a dumb framebuffer we don't need to do anything */
- if (doFramebufferMode) return;
-
- for (i=0; i<xf86NumScreens; i++) {
- pScrn = xf86Screens[i];
- j = pScrn->entityList[pScrn->numEntities - 1];
- pScrn->access = xf86Entities[j]->access;
-
- for (j = 0; j<xf86Screens[i]->numEntities; j++) {
- pEnt = xf86Entities[xf86Screens[i]->entityList[j]];
- if (pEnt->entityProp & (state == SETUP ? NEED_VGA_ROUTED_SETUP
- : NEED_VGA_ROUTED))
- xf86Screens[i]->busAccess = pEnt->busAcc;
- }
- if (xf86Screens[i]->busAccess)
- needVGA ++;
- }
-
- /*
- * if we just have one screen we don't have RAC.
- * Therefore just enable the screen and return.
- */
- if (!needRAC) {
- xf86EnableAccess(xf86Screens[0]);
- notifyStateChange(NOTIFY_ENABLE);
- return;
- }
-
- if (state == SETUP)
- notifyStateChange(NOTIFY_SETUP_TRANSITION);
- else
- notifyStateChange(NOTIFY_OPERATING_TRANSITION);
-
- clearAccess();
- for (i=0; i<xf86NumScreens;i++) {
-
- rt = NONE;
-
- for (j = 0; j<xf86Screens[i]->numEntities; j++) {
- pEnt = xf86Entities[xf86Screens[i]->entityList[j]];
- setAccess(pEnt,state);
-
- if (pEnt->access->rt != NONE) {
- if (rt != NONE && rt != pEnt->access->rt)
- rt = MEM_IO;
- else
- rt = pEnt->access->rt;
- }
- }
- xf86Screens[i]->resourceType = rt;
- if (rt == NONE) {
- xf86Screens[i]->access = NULL;
- if (needVGA < 2)
- xf86Screens[i]->busAccess = NULL;
- }
-
-#ifdef DEBUG
- if (xf86Screens[i]->busAccess)
- ErrorF("Screen %i setting vga route\n",i);
-#endif
- switch (rt) {
- case MEM_IO:
- xf86MsgVerb(X_INFO, 3, "Screen %i shares mem & io resources\n",i);
- break;
- case IO:
- xf86MsgVerb(X_INFO, 3, "Screen %i shares io resources\n",i);
- break;
- case MEM:
- xf86MsgVerb(X_INFO, 3, "Screen %i shares mem resources\n",i);
- break;
- default:
- xf86MsgVerb(X_INFO, 3, "Entity %i shares no resources\n",i);
- break;
- }
- }
- if (state == SETUP)
- notifyStateChange(NOTIFY_SETUP);
- else
- notifyStateChange(NOTIFY_OPERATING);
-}
-
-/*
- * xf86SetOperatingState() -- Set ResOperMask for resources listed.
- */
-resPtr
-xf86SetOperatingState(resList list, int entityIndex, int mask)
-{
- resPtr acc;
- resPtr r_fail = NULL;
- resRange range;
-
- while (list->type != ResEnd) {
- range = *list;
- convertRange2Host(entityIndex,&range);
-
- acc = Acc;
- while (acc) {
-#define MASK (ResTypeMask | ResExtMask)
- if ((acc->entityIndex == entityIndex)
- && (acc->val.a == range.a) && (acc->val.b == range.b)
- && ((acc->val.type & MASK) == (range.type & MASK)))
- break;
-#undef MASK
- acc = acc->next;
- }
- if (acc)
- acc->val.type = (acc->val.type & ~ResOprMask)
- | (mask & ResOprMask);
- else {
- r_fail = xf86AddResToList(r_fail,&range,entityIndex);
- }
- list ++;
- }
-
- return r_fail;
-}
-
-/*
- * Stage specific code
- */
- /*
- * ProcessEstimatedConflicts() -- Do something about driver-registered
- * resources that conflict with estimated resources. For now, just register
- * them with a logged warning.
- */
-#ifdef REDUCER
-static void
-ProcessEstimatedConflicts(void)
-{
- if (!AccReducers)
- return;
-
- /* Temporary */
- xf86MsgVerb(X_WARNING, 3,
- "Registering the following despite conflicts with estimated"
- " resources:\n");
- xf86PrintResList(3, AccReducers);
- Acc = xf86JoinResLists(Acc, AccReducers);
- AccReducers = NULL;
-}
-#endif
-
-/*
- * xf86ClaimFixedResources() -- This function gets called from the
- * driver Probe() function to claim fixed resources.
- */
-static void
-resError(resList list)
-{
- FatalError("A driver tried to allocate the %s %sresource at \n"
- "0x%lx:0x%lx which conflicted with another resource. Send the\n"
- "output of the server to %s. Please \n"
- "specify your computer hardware as closely as possible.\n",
- ResIsBlock(list)?"Block":"Sparse",
- ResIsMem(list)?"Mem":"Io",
- ResIsBlock(list)?list->rBegin:list->rBase,
- ResIsBlock(list)?list->rEnd:list->rMask,BUILDERADDR);
-}
-
-/*
- * xf86ClaimFixedResources() is used to allocate non-relocatable resources.
- * This should only be done by a driver's Probe() function.
- */
-void
-xf86ClaimFixedResources(resList list, int entityIndex)
-{
- resPtr ptr = NULL;
- resRange range;
-
- if (!list) return;
-
- while (list->type !=ResEnd) {
- range = *list;
-
- convertRange2Host(entityIndex,&range);
-
- range.type &= ~ResEstimated; /* Not allowed for drivers */
- switch (range.type & ResAccMask) {
- case ResExclusive:
- if (!xf86ChkConflict(&range, entityIndex)) {
- Acc = xf86AddResToList(Acc, &range, entityIndex);
-#ifdef REDUCER
- } else {
- range.type |= ResEstimated;
- if (!xf86ChkConflict(&range, entityIndex) &&
- !checkConflict(&range, AccReducers, entityIndex,
- SETUP, FALSE)) {
- range.type &= ~(ResEstimated | ResBios);
- AccReducers =
- xf86AddResToList(AccReducers, &range, entityIndex);
-#endif
- } else resError(&range); /* no return */
-#ifdef REDUCER
- }
-#endif
- break;
- case ResShared:
- /* at this stage the resources are just added to the
- * EntityRec. After the Probe() phase this list is checked by
- * xf86PostProbe(). All resources which don't
- * conflict with already allocated ones are allocated
- * and removed from the EntityRec. Thus a non-empty resource
- * list in the EntityRec indicates resource conflicts the
- * driver should either handle or fail.
- */
- if (xf86Entities[entityIndex]->active)
- ptr = xf86AddResToList(ptr,&range,entityIndex);
- break;
- }
- list++;
- }
- xf86Entities[entityIndex]->resources =
- xf86JoinResLists(xf86Entities[entityIndex]->resources,ptr);
- xf86MsgVerb(X_INFO, 3,
- "resource ranges after xf86ClaimFixedResources() call:\n");
- xf86PrintResList(3,Acc);
-#ifdef REDUCER
- ProcessEstimatedConflicts();
-#endif
-#ifdef DEBUG
- if (ptr) {
- xf86MsgVerb(X_INFO, 3, "to be registered later:\n");
- xf86PrintResList(3,ptr);
- }
-#endif
-}
-
-static void
-checkRoutingForScreens(xf86State state)
-{
- resList list = resVgaUnusedExclusive;
- resPtr pResVGA = NULL;
- resPtr pResVGAHost;
- pointer vga = NULL;
- int i,j;
- int entityIndex;
- EntityPtr pEnt;
- resPtr pAcc;
- resRange range;
-
- /*
- * find devices that need VGA routed: ie the ones that have
- * registered VGA resources without ResUnused. ResUnused
- * doesn't conflict with itself therefore use it here.
- */
- while (list->type != ResEnd) { /* create resPtr from resList for VGA */
- range = *list;
- range.type &= ~(ResBios | ResEstimated); /* if set remove them */
- pResVGA = xf86AddResToList(pResVGA, &range, -1);
- list++;
- }
-
- for (i = 0; i < xf86NumScreens; i++) {
- for (j = 0; j < xf86Screens[i]->numEntities; j++) {
- entityIndex = xf86Screens[i]->entityList[j];
- pEnt = xf86Entities[entityIndex];
- pAcc = Acc;
- vga = NULL;
- pResVGAHost = xf86DupResList(pResVGA);
- xf86ConvertListToHost(entityIndex,pResVGAHost);
- while (pAcc) {
- if (pAcc->entityIndex == entityIndex)
- if (checkConflict(&pAcc->val, pResVGAHost,
- entityIndex, state, FALSE)) {
- if (vga && vga != pEnt->busAcc) {
- xf86Msg(X_ERROR, "Screen %i needs vga routed to"
- "different buses - deleting\n",i);
- xf86DeleteScreen(i--,0);
- }
-#ifdef DEBUG
- {
- resPtr rlist = xf86AddResToList(NULL,&pAcc->val,
- pAcc->entityIndex);
- xf86MsgVerb(X_INFO,3,"====== %s\n",
- state == OPERATING ? "OPERATING"
- : "SETUP");
- xf86MsgVerb(X_INFO,3,"%s Resource:\n",
- (pAcc->val.type) & ResMem ? "Mem" :"Io");
- xf86PrintResList(3,rlist);
- xf86FreeResList(rlist);
- xf86MsgVerb(X_INFO,3,"Conflicts with:\n");
- xf86PrintResList(3,pResVGAHost);
- xf86MsgVerb(X_INFO,3,"=====\n");
- }
-#endif
- vga = pEnt->busAcc;
- pEnt->entityProp |= (state == SETUP
- ? NEED_VGA_ROUTED_SETUP : NEED_VGA_ROUTED);
- if (state == OPERATING) {
- if (pAcc->val.type & ResMem)
- pEnt->entityProp |= NEED_VGA_MEM;
- else
- pEnt->entityProp |= NEED_VGA_IO;
- }
- }
- pAcc = pAcc->next;
- }
- if (vga)
- xf86MsgVerb(X_INFO, 3,"Setting vga for screen %i.\n",i);
- xf86FreeResList(pResVGAHost);
- }
- }
- xf86FreeResList(pResVGA);
-}
-
-/*
- * xf86PostProbe() -- Allocate all non conflicting resources
- * This function gets called by xf86Init().
- */
-void
-xf86PostProbe(void)
-{
- memType val;
- int i,j;
- resPtr resp, acc, tmp, resp_x, *pprev_next;
-
- if (fbSlotClaimed) {
- if (pciSlotClaimed || isaSlotClaimed
-#if defined(__sparc__) && !defined(__OpenBSD__)
- || sbusSlotClaimed
-#endif
- ) {
- FatalError("Cannot run in framebuffer mode. Please specify busIDs "
- " for all framebuffer devices\n");
- return;
- } else {
- xf86Msg(X_INFO,"Running in FRAMEBUFFER Mode\n");
- xf86AccessRestoreState();
- notifyStateChange(NOTIFY_ENABLE);
- doFramebufferMode = TRUE;
-
- return;
- }
- }
- /* don't compare against ResInit - remove it from clone.*/
- acc = tmp = xf86DupResList(Acc);
- pprev_next = &acc;
- while (tmp) {
- if (tmp->res_type & ResInit) {
- (*pprev_next) = tmp->next;
- xfree(tmp);
- } else
- pprev_next = &(tmp->next);
- tmp = (*pprev_next);
- }
-
- for (i=0; i<xf86NumEntities; i++) {
- resp = xf86Entities[i]->resources;
- xf86Entities[i]->resources = NULL;
- resp_x = NULL;
- while (resp) {
- if (! (val = checkConflict(&resp->val,acc,i,SETUP,FALSE))) {
- resp->res_type &= ~(ResBios); /* just used for chkConflict() */
- tmp = resp_x;
- resp_x = resp;
- resp = resp->next;
- resp_x->next = tmp;
-#ifdef REDUCER
- } else {
- resp->res_type |= ResEstimated;
- if (!checkConflict(&resp->val, acc, i, SETUP, FALSE)) {
- resp->res_type &= ~(ResEstimated | ResBios);
- tmp = AccReducers;
- AccReducers = resp;
- resp = resp->next;
- AccReducers->next = tmp;
-#endif
- } else {
- xf86MsgVerb(X_INFO, 3, "Found conflict at: 0x%lx\n",val);
- resp->res_type &= ~ResEstimated;
- tmp = xf86Entities[i]->resources;
- xf86Entities[i]->resources = resp;
- resp = resp->next;
- xf86Entities[i]->resources->next = tmp;
- }
-#ifdef REDUCER
- }
-#endif
- }
- xf86JoinResLists(Acc,resp_x);
-#ifdef REDUCER
- ProcessEstimatedConflicts();
-#endif
- }
- xf86FreeResList(acc);
-#if !(defined(__alpha__) && defined(linux)) && \
- !(defined(__ia64__) && defined(linux)) && \
- !(defined(__sparc64__) && defined(__OpenBSD__))
- /*
- * No need to validate on Alpha Linux or OpenBSD/sparc64,
- * trust the kernel.
- */
- ValidatePci();
-#endif
-
- xf86MsgVerb(X_INFO, 3, "resource ranges after probing:\n");
- xf86PrintResList(3, Acc);
- checkRoutingForScreens(SETUP);
-
- for (i = 0; i < xf86NumScreens; i++) {
- for (j = 0; j<xf86Screens[i]->numEntities; j++) {
- EntityPtr pEnt = xf86Entities[xf86Screens[i]->entityList[j]];
- if ((pEnt->entityProp & NEED_VGA_ROUTED_SETUP) &&
- ((xf86Screens[i]->busAccess = pEnt->busAcc)))
- break;
- }
- }
-}
-
-static void
-checkRequiredResources(int entityIndex)
-{
- resRange range;
- resPtr pAcc = Acc;
- const EntityPtr pEnt = xf86Entities[entityIndex];
- while (pAcc) {
- if (pAcc->entityIndex == entityIndex) {
- range = pAcc->val;
- /* ResAny to find conflicts with anything. */
- range.type = (range.type & ~ResAccMask) | ResAny | ResBios;
- if (checkConflict(&range,Acc,entityIndex,OPERATING,FALSE))
- switch (pAcc->res_type & ResPhysMask) {
- case ResMem:
- pEnt->entityProp |= NEED_MEM_SHARED;
- break;
- case ResIo:
- pEnt->entityProp |= NEED_IO_SHARED;
- break;
- }
- if (!(pAcc->res_type & ResOprMask)) {
- switch (pAcc->res_type & ResPhysMask) {
- case ResMem:
- pEnt->entityProp |= NEED_MEM;
- break;
- case ResIo:
- pEnt->entityProp |= NEED_IO;
- break;
- }
- }
- }
- pAcc = pAcc->next;
- }
-
- /* check if we can separately enable mem/io resources */
- /* XXX we still need to find out how to set this yet */
- if ( ((pEnt->entityProp & NO_SEPARATE_MEM_FROM_IO)
- && (pEnt->entityProp & NEED_MEM_SHARED))
- || ((pEnt->entityProp & NO_SEPARATE_IO_FROM_MEM)
- && (pEnt->entityProp & NEED_IO_SHARED)) )
- pEnt->entityProp |= NEED_SHARED;
- /*
- * After we have checked all resources of an entity agains any
- * other resource we know if the entity need this resource type
- * (ie. mem/io) at all. if not we can disable this type completely,
- * so no need to share it either.
- */
- if ((pEnt->entityProp & NEED_MEM_SHARED)
- && (!(pEnt->entityProp & NEED_MEM))
- && (!(pEnt->entityProp & NO_SEPARATE_MEM_FROM_IO)))
- pEnt->entityProp &= ~(unsigned long)NEED_MEM_SHARED;
-
- if ((pEnt->entityProp & NEED_IO_SHARED)
- && (!(pEnt->entityProp & NEED_IO))
- && (!(pEnt->entityProp & NO_SEPARATE_IO_FROM_MEM)))
- pEnt->entityProp &= ~(unsigned long)NEED_IO_SHARED;
-}
-
-void
-xf86PostPreInit()
-{
- if (doFramebufferMode) return;
-
- if (xf86NumScreens > 1)
- needRAC = TRUE;
-
-#ifdef XFree86LOADER
- xf86MsgVerb(X_INFO, 3, "do I need RAC?");
-
- if (needRAC) {
- xf86ErrorFVerb(3, " Yes, I do.\n");
-
- if (!xf86LoadOneModule("rac",NULL))
- FatalError("Cannot load RAC module\n");
- } else
- xf86ErrorFVerb(3, " No, I don't.\n");
-#endif
-
- xf86MsgVerb(X_INFO, 3, "resource ranges after preInit:\n");
- xf86PrintResList(3, Acc);
-}
-
-void
-xf86PostScreenInit(void)
-{
- int i,j;
- ScreenPtr pScreen;
- unsigned int flags;
- int nummem = 0, numio = 0;
-#ifdef XFree86LOADER
- pointer xf86RACInit = NULL;
-#endif
-
- if (doFramebufferMode) {
- SetSIGIOForState(OPERATING);
- return;
- }
-
-#ifdef XFree86LOADER
- if (needRAC) {
- xf86RACInit = LoaderSymbol("xf86RACInit");
- if (!xf86RACInit)
- FatalError("Cannot resolve symbol \"xf86RACInit\"\n");
- }
-#endif
-#ifdef DEBUG
- ErrorF("PostScreenInit generation: %i\n",serverGeneration);
-#endif
- if (serverGeneration == 1) {
- checkRoutingForScreens(OPERATING);
- for (i=0; i<xf86NumEntities; i++) {
- checkRequiredResources(i);
- }
-
- /*
- * after removing NEED_XXX_SHARED from entities that
- * don't need need XXX resources at all we might have
- * a single entity left that has NEED_XXX_SHARED set.
- * In this case we can delete that, too.
- */
- for (i = 0; i < xf86NumEntities; i++) {
- if (xf86Entities[i]->entityProp & NEED_MEM_SHARED)
- nummem++;
- if (xf86Entities[i]->entityProp & NEED_IO_SHARED)
- numio++;
- }
- for (i = 0; i < xf86NumEntities; i++) {
- if (nummem < 2)
- xf86Entities[i]->entityProp &= ~NEED_MEM_SHARED;
- if (numio < 2)
- xf86Entities[i]->entityProp &= ~NEED_IO_SHARED;
- }
- }
-
- if (xf86Screens && needRAC) {
- int needRACforVga = 0;
-
- for (i = 0; i < xf86NumScreens; i++) {
- for (j = 0; j < xf86Screens[i]->numEntities; j++) {
- if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
- & NEED_VGA_ROUTED) {
- needRACforVga ++;
- break; /* only count each screen once */
- }
- }
- }
-
- for (i = 0; i < xf86NumScreens; i++) {
- Bool needRACforMem = FALSE, needRACforIo = FALSE;
-
- for (j = 0; j < xf86Screens[i]->numEntities; j++) {
- if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
- & NEED_MEM_SHARED)
- needRACforMem = TRUE;
- if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
- & NEED_IO_SHARED)
- needRACforIo = TRUE;
- /*
- * We may need RAC although we don't share any resources
- * as we need to route VGA to the correct bus. This can
- * only be done simultaniously for MEM and IO.
- */
- if (needRACforVga > 1) {
- if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
- & NEED_VGA_MEM)
- needRACforMem = TRUE;
- if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
- & NEED_VGA_IO)
- needRACforIo = TRUE;
- }
- }
-
- pScreen = xf86Screens[i]->pScreen;
- flags = 0;
- if (needRACforMem) {
- flags |= xf86Screens[i]->racMemFlags;
- xf86ErrorFVerb(3, "Screen %d is using RAC for mem\n", i);
- }
- if (needRACforIo) {
- flags |= xf86Screens[i]->racIoFlags;
- xf86ErrorFVerb(3, "Screen %d is using RAC for io\n", i);
- }
-
-#ifdef XFree86LOADER
- ((Bool(*)(ScreenPtr,unsigned int))xf86RACInit)
- (pScreen,flags);
-#else
- xf86RACInit(pScreen,flags);
-#endif
- }
- }
-
- xf86EnterServerState(OPERATING);
-
-}
-
-/*
- * Sets
- */
-
-
-static resPtr
-decomposeSparse(resRange range)
-{
- resRange new;
- resPtr ret = NULL;
- memType val = range.rBegin;
- int i = 0;
-
- new.type = (range.type & ~ResExtMask) | ResSparse;
-
- while (1) {
- if (val & 0x01) {
- new.rBase = (val << i);
- new.rMask = ~((1 << i) - 1);
- ret = xf86AddResToList(ret,&new,-1);
- val ++;
- }
- i++;
- val >>= 1;
- if ((((val + 1) << i) - 1) > range.rEnd)
- break;
- }
- i--;
- val <<= 1;
-
- while (1) {
- if((((val + 1) << i) - 1)> range.rEnd) {
- if (--i < 0) break;
- val <<= 1;
- } else {
- new.rBase = (val << i);
- new.rMask = ~((1 << i) - 1);
- val++;
- ret = xf86AddResToList(ret,&new,-1);
- }
- }
- return ret;
-}
-
-static Bool
-x_isSubsetOf(resRange range, resPtr list1, resPtr list2)
-{
- resRange range1, range2;
- memType m1_A_m2;
- Bool ret;
- resPtr list;
-
- if (list1) {
- list = list1;
- if ((range.type & ResTypeMask) == (list->res_type & ResTypeMask)) {
- switch (range.type & ResExtMask) {
- case ResBlock:
- if ((list->res_type & ResExtMask) == ResBlock) {
- if (range.rBegin >= list->block_begin
- && range.rEnd <= list->block_end)
- return TRUE;
- else if (range.rBegin < list->block_begin
- && range.rEnd > list->block_end) {
- RANGE(range1, range.rBegin, list->block_begin - 1,
- range.type);
- RANGE(range2, list->block_end + 1, range.rEnd,
- range.type);
- return (x_isSubsetOf(range1,list->next,list2) &&
- x_isSubsetOf(range2,list->next,list2));
- }
- else if (range.rBegin >= list->block_begin
- && range.rBegin <= list->block_end) {
- RANGE(range1, list->block_end + 1, range.rEnd,
- range.type);
- return (x_isSubsetOf(range1,list->next,list2));
- } else if (range.rEnd >= list->block_begin
- && range.rEnd <= list->block_end) {
- RANGE(range1,range.rBegin, list->block_begin - 1,
- range.type);
- return (x_isSubsetOf(range1,list->next,list2));
- }
- }
- break;
- case ResSparse:
- if ((list->res_type & ResExtMask) == ResSparse) {
- memType test;
- int i;
-
- m1_A_m2 = range.rMask & list->sparse_mask;
- if ((range.rBase ^ list->sparse_base) & m1_A_m2)
- break;
- /*
- * We use the following system:
- * let 0 ^= mask:1 base:0, 1 ^= mask:1 base:1,
- * X mask:0 ; S: set TSS: test set for subset
- * NTSS: new test set after test
- * S: 1 0 1 0 X X 0 1 X
- * TSS: 1 0 0 1 1 0 X X X
- * T: 0 0 1 1 0 0 0 0 0
- * NTSS: 1 0 0/X 1/X 1 0 1 0 X
- * R: 0 0 0 0 0 0 1 1 0
- * If R != 0 TSS and S are disjunct
- * If R == 0 TSS is subset of S
- * If R != 0 NTSS contains elements from TSS
- * which are not also members of S.
- * If a T is set one of the correspondig bits
- * in NTSS must be set to the specified value
- * all other are X
- */
- test = list->sparse_mask & ~range.rMask;
- if (test == 0)
- return TRUE;
- for (i = 0; i < sizeof(memType); i++) {
- if ((test >> i) & 0x1) {
- RANGE(range1, ((range.rBase & list->sparse_base)
- | (range.rBase & ~list->sparse_mask)
- | ((~list->sparse_base & list->sparse_mask)
- & ~range.rMask)) & range1.rMask,
- ((range.rMask | list->sparse_mask) & ~test)
- | (1 << i), range.type);
- return (x_isSubsetOf(range1,list->next,list2));
- }
- }
- }
- break;
- }
- }
- return (x_isSubsetOf(range,list->next,list2));
- } else if (list2) {
- resPtr tmpList = NULL;
- switch (range.type & ResExtMask) {
- case ResBlock:
- tmpList = decomposeSparse(range);
- while (tmpList) {
- if (!x_isSubsetOf(tmpList->val,list2,NULL)) {
- xf86FreeResList(tmpList);
- return FALSE;
- }
- tmpList = tmpList->next;
- }
- xf86FreeResList(tmpList);
- return TRUE;
- break;
- case ResSparse:
- while (list2) {
- tmpList = xf86JoinResLists(tmpList,decomposeSparse(list2->val));
- list2 = list2->next;
- }
- ret = x_isSubsetOf(range,tmpList,NULL);
- xf86FreeResList(tmpList);
- return ret;
- break;
- }
- } else
- return FALSE;
-
- return FALSE;
-}
-
-Bool
-xf86IsSubsetOf(resRange range, resPtr list)
-{
- resPtr dup = xf86DupResList(list);
- resPtr r_sp = NULL, r = NULL, tmp = NULL;
- Bool ret = FALSE;
-
- while (dup) {
- tmp = dup;
- dup = dup->next;
- switch (tmp->res_type & ResExtMask) {
- case ResBlock:
- tmp->next = r;
- r = tmp;
- break;
- case ResSparse:
- tmp->next = r_sp;
- r_sp = tmp;
- break;
- }
- }
-
- switch (range.type & ResExtMask) {
- case ResBlock:
- ret = x_isSubsetOf(range,r,r_sp);
- break;
- case ResSparse:
- ret = x_isSubsetOf(range,r_sp,r);
- break;
- }
- xf86FreeResList(r);
- xf86FreeResList(r_sp);
-
- return ret;
-}
-
-Bool
-xf86IsListSubsetOf(resPtr list, resPtr BaseList)
-{
- while (list) {
- if (! xf86IsSubsetOf(list->val,BaseList))
- return FALSE;
- list = list->next;
- }
- return TRUE;
-}
-
-resPtr
-findIntersect(resRange Range, resPtr list)
-{
- resRange range;
- resPtr new = NULL;
-
- while (list) {
- if ((Range.type & ResTypeMask) == (list->res_type & ResTypeMask)) {
- switch (Range.type & ResExtMask) {
- case ResBlock:
- switch (list->res_type & ResExtMask) {
- case ResBlock:
- if (Range.rBegin >= list->block_begin)
- range.rBegin = Range.rBegin;
- else
- range.rBegin = list->block_begin;
- if (Range.rEnd <= list->block_end)
- range.rEnd = Range.rEnd;
- else
- range.rEnd = list->block_end;
- if (range.rEnd > range.rBegin) {
- range.type = Range.type;
- new = xf86AddResToList(new,&range,-1);
- }
- break;
- case ResSparse:
- new = xf86JoinResLists(new,xf86FindIntersectOfLists(new,decomposeSparse(list->val)));
- break;
- }
- break;
- case ResSparse:
- switch (list->res_type & ResExtMask) {
- case ResSparse:
- if (!((~(range.rBase ^ list->sparse_base)
- & (range.rMask & list->sparse_mask)))) {
- RANGE(range, (range.rBase & list->sparse_base)
- | (~range.rMask & list->sparse_base)
- | (~list->sparse_mask & range.rBase),
- range.rMask | list->sparse_mask,
- Range.type);
- new = xf86AddResToList(new,&range,-1);
- }
- break;
- case ResBlock:
- new = xf86JoinResLists(new,xf86FindIntersectOfLists(
- decomposeSparse(range),list));
- break;
- }
- }
- }
- list = list->next;
- }
- return new;
-}
-
-resPtr
-xf86FindIntersectOfLists(resPtr l1, resPtr l2)
-{
- resPtr ret = NULL;
-
- while (l1) {
- ret = xf86JoinResLists(ret,findIntersect(l1->val,l2));
- l1 = l1->next;
- }
- return ret;
-}
-
-#if 0 /* Not used */
-static resPtr
-xf86FindComplement(resRange Range)
-{
- resRange range;
- memType tmp;
- resPtr new = NULL;
- int i;
-
- switch (Range.type & ResExtMask) {
- case ResBlock:
- if (Range.rBegin > 0) {
- RANGE(range, 0, Range.rBegin - 1, Range.type);
- new = xf86AddResToList(new,&range,-1);
- }
- if (Range.rEnd < (memType)~0) {
- RANGE(range,Range.rEnd + 1, (memType)~0, Range.type);
- new = xf86AddResToList(new,&range,-1);
- }
- break;
- case ResSparse:
- tmp = Range.rMask;
- for (i = 0; i < sizeof(memType); i++) {
- if (tmp & 0x1) {
- RANGE(range,(~Range.rMask & range.rMask),(1 << i), Range.type);
- new = xf86AddResToList(new,&range,-1);
- }
- }
- break;
- default:
- break;
- }
- return new;
-}
-#endif
-
-resPtr
-xf86ExtractTypeFromList(resPtr list, unsigned long type)
-{
- resPtr ret = NULL;
-
- while (list) {
- if ((list->res_type & ResTypeMask) == type)
- ret = xf86AddResToList(ret,&(list->val),list->entityIndex);
- list = list->next;
- }
- return ret;
-}
-
-/*------------------------------------------------------------*/
-static void CheckGenericGA(void);
-
-/*
- * xf86FindPrimaryDevice() - Find the display device which
- * was active when the server was started.
- */
-void
-xf86FindPrimaryDevice()
-{
- /* if no VGA device is found check for primary PCI device */
- if (primaryBus.type == BUS_NONE && xorgHWAccess)
- CheckGenericGA();
- if (primaryBus.type != BUS_NONE) {
- char *bus;
- char *loc = xnfcalloc(1,9);
- if (loc == NULL) return;
-
- switch (primaryBus.type) {
- case BUS_PCI:
- bus = "PCI";
- sprintf(loc," %2.2x:%2.2x:%1.1x",primaryBus.id.pci.bus,
- primaryBus.id.pci.device,primaryBus.id.pci.func);
- break;
- case BUS_ISA:
- bus = "ISA";
- loc[0] = '\0';
- break;
- case BUS_SBUS:
- bus = "SBUS";
- sprintf(loc," %2.2x",primaryBus.id.sbus.fbNum);
- break;
- default:
- bus = "";
- loc[0] = '\0';
- }
-
- xf86MsgVerb(X_INFO, 2, "Primary Device is: %s%s\n",bus,loc);
- xfree(loc);
- }
-
-}
-
-#if !defined(__sparc__) && !defined(__powerpc__) && !defined(__mips__)
-#include "vgaHW.h"
-#include "compiler.h"
-#endif
-
-/*
- * CheckGenericGA() - Check for presence of a VGA device.
- */
-static void
-CheckGenericGA()
-{
-/* This needs to be changed for multiple domains */
-#if !defined(__sparc__) && !defined(__powerpc__) && !defined(__mips__) && !defined(__ia64__)
- IOADDRESS GenericIOBase = VGAHW_GET_IOBASE();
- CARD8 CurrentValue, TestValue;
-
- /* VGA CRTC registers are not used here, so don't bother unlocking them */
-
- /* VGA has one more read/write attribute register than EGA */
- (void) inb(GenericIOBase + VGA_IN_STAT_1_OFFSET); /* Reset flip-flop */
- outb(VGA_ATTR_INDEX, 0x14 | 0x20);
- CurrentValue = inb(VGA_ATTR_DATA_R);
- outb(VGA_ATTR_DATA_W, CurrentValue ^ 0x0F);
- outb(VGA_ATTR_INDEX, 0x14 | 0x20);
- TestValue = inb(VGA_ATTR_DATA_R);
- outb(VGA_ATTR_DATA_W, CurrentValue);
-
- if ((CurrentValue ^ 0x0F) == TestValue) {
- primaryBus.type = BUS_ISA;
- }
-#endif
-}
-
-Bool
-xf86NoSharedResources(int screenIndex,resType res)
-{
- int j;
-
- if (screenIndex > xf86NumScreens)
- return TRUE;
-
- for (j = 0; j < xf86Screens[screenIndex]->numEntities; j++) {
- switch (res) {
- case IO:
- if ( xf86Entities[xf86Screens[screenIndex]->entityList[j]]->entityProp
- & NEED_IO_SHARED)
- return FALSE;
- break;
- case MEM:
- if ( xf86Entities[xf86Screens[screenIndex]->entityList[j]]->entityProp
- & NEED_MEM_SHARED)
- return FALSE;
- break;
- case MEM_IO:
- if ( xf86Entities[xf86Screens[screenIndex]->entityList[j]]->entityProp
- & NEED_SHARED)
- return FALSE;
- break;
- case NONE:
- break;
- }
- }
- return TRUE;
-}
-
-void
-xf86ConvertListToHost(int entityIndex, resPtr list)
-{
- while (list) {
- convertRange2Host(entityIndex, &list->val);
- list = list->next;
- }
-}
-
-void
-xf86RegisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func, pointer arg)
-{
- StateChangeNotificationPtr ptr =
- (StateChangeNotificationPtr)xnfalloc(sizeof(StateChangeNotificationRec));
-
- ptr->func = func;
- ptr->arg = arg;
- ptr->next = StateChangeNotificationList;
- StateChangeNotificationList = ptr;
-}
-
-Bool
-xf86DeregisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func)
-{
- StateChangeNotificationPtr *ptr = &StateChangeNotificationList;
- StateChangeNotificationPtr tmp;
-
- while (*ptr) {
- if ((*ptr)->func == func) {
- tmp = (*ptr);
- (*ptr) = (*ptr)->next;
- xfree(tmp);
- return TRUE;
- }
- ptr = &((*ptr)->next);
- }
- return FALSE;
-}
-
-static void
-notifyStateChange(xf86NotifyState state)
-{
- StateChangeNotificationPtr ptr = StateChangeNotificationList;
- while (ptr) {
- ptr->func(state,ptr->arg);
- ptr = ptr->next;
- }
-}
-
-#ifdef async
-Bool
-xf86QueueAsyncEvent(void (*func)(pointer),pointer arg)
-{
- AsyncQPtr new;
-
- if (!AsyncQ) return FALSE;
-
- new = (AsyncQPtr)xfnalloc(sizeof(AsyncQRec));
- new->func = func;
- new->arg = arg;
- (*AsyncQPtr)->next = new;
- AsyncQPtr = &new;
- return TRUE;
-}
-#endif
-
-/* Multihead accel sharing accessor functions and entity Private handling */
-
-int
-xf86GetLastScrnFlag(int entityIndex)
-{
- if(entityIndex < xf86NumEntities) {
- return(xf86Entities[entityIndex]->lastScrnFlag);
- } else {
- return -1;
- }
-}
-
-void
-xf86SetLastScrnFlag(int entityIndex, int scrnIndex)
-{
- if(entityIndex < xf86NumEntities) {
- xf86Entities[entityIndex]->lastScrnFlag = scrnIndex;
- }
-}
-
-Bool
-xf86IsEntityShared(int entityIndex)
-{
- if(entityIndex < xf86NumEntities) {
- if(xf86Entities[entityIndex]->entityProp & IS_SHARED_ACCEL) {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-void
-xf86SetEntityShared(int entityIndex)
-{
- if(entityIndex < xf86NumEntities) {
- xf86Entities[entityIndex]->entityProp |= IS_SHARED_ACCEL;
- }
-}
-
-Bool
-xf86IsEntitySharable(int entityIndex)
-{
- if(entityIndex < xf86NumEntities) {
- if(xf86Entities[entityIndex]->entityProp & ACCEL_IS_SHARABLE) {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-void
-xf86SetEntitySharable(int entityIndex)
-{
- if(entityIndex < xf86NumEntities) {
- xf86Entities[entityIndex]->entityProp |= ACCEL_IS_SHARABLE;
- }
-}
-
-Bool
-xf86IsPrimInitDone(int entityIndex)
-{
- if(entityIndex < xf86NumEntities) {
- if(xf86Entities[entityIndex]->entityProp & SA_PRIM_INIT_DONE) {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-void
-xf86SetPrimInitDone(int entityIndex)
-{
- if(entityIndex < xf86NumEntities) {
- xf86Entities[entityIndex]->entityProp |= SA_PRIM_INIT_DONE;
- }
-}
-
-void
-xf86ClearPrimInitDone(int entityIndex)
-{
- if(entityIndex < xf86NumEntities) {
- xf86Entities[entityIndex]->entityProp &= ~SA_PRIM_INIT_DONE;
- }
-}
-
-
-/*
- * Allocate a private in the entities.
- */
-
-int
-xf86AllocateEntityPrivateIndex(void)
-{
- int idx, i;
- EntityPtr pEnt;
- DevUnion *nprivs;
-
- idx = xf86EntityPrivateCount++;
- for (i = 0; i < xf86NumEntities; i++) {
- pEnt = xf86Entities[i];
- nprivs = xnfrealloc(pEnt->entityPrivates,
- xf86EntityPrivateCount * sizeof(DevUnion));
- /* Zero the new private */
- bzero(&nprivs[idx], sizeof(DevUnion));
- pEnt->entityPrivates = nprivs;
- }
- return idx;
-}
-
-DevUnion *
-xf86GetEntityPrivate(int entityIndex, int privIndex)
-{
- if (entityIndex >= xf86NumEntities || privIndex >= xf86EntityPrivateCount)
- return NULL;
-
- return &(xf86Entities[entityIndex]->entityPrivates[privIndex]);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Bus.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Bus.h
deleted file mode 100644
index 96da6e6a9..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Bus.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Bus.h,v 1.23 2003/08/24 17:36:50 dawes Exp $ */
-
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains definitions of the bus-related data structures/types.
- * Everything contained here is private to xf86Bus.c. In particular the
- * video drivers must not include this file.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _XF86_BUS_H
-#define _XF86_BUS_H
-
-#include "xf86pciBus.h"
-#ifdef __sparc__
-#include "xf86sbusBus.h"
-#endif
-
-typedef struct racInfo {
- xf86AccessPtr mem_new;
- xf86AccessPtr io_new;
- xf86AccessPtr io_mem_new;
- xf86SetAccessFuncPtr old;
-} AccessFuncRec, *AccessFuncPtr;
-
-
-typedef struct {
- DriverPtr driver;
- int chipset;
- int entityProp;
- EntityProc entityInit;
- EntityProc entityEnter;
- EntityProc entityLeave;
- pointer private;
- resPtr resources;
- Bool active;
- Bool inUse;
- BusRec bus;
- EntityAccessPtr access;
- AccessFuncPtr rac;
- pointer busAcc;
- int lastScrnFlag;
- DevUnion * entityPrivates;
- int numInstances;
- GDevPtr * devices;
- IOADDRESS domainIO;
-} EntityRec, *EntityPtr;
-
-/* asynchronous event handling */
-#ifdef async
-typedef struct _AsyncQRec {
- void (*func)(pointer);
- pointer arg;
- struct _AsyncQRec *next;
-} AsyncQRec, *AsyncQPtr;
-#endif
-
-#define NO_SEPARATE_IO_FROM_MEM 0x0001
-#define NO_SEPARATE_MEM_FROM_IO 0x0002
-#define NEED_VGA_ROUTED 0x0004
-#define NEED_VGA_ROUTED_SETUP 0x0008
-#define NEED_MEM 0x0010
-#define NEED_IO 0x0020
-#define NEED_MEM_SHARED 0x0040
-#define NEED_IO_SHARED 0x0080
-#define ACCEL_IS_SHARABLE 0x0100
-#define IS_SHARED_ACCEL 0x0200
-#define SA_PRIM_INIT_DONE 0x0400
-#define NEED_VGA_MEM 0x1000
-#define NEED_VGA_IO 0x2000
-
-#define NEED_SHARED (NEED_MEM_SHARED | NEED_IO_SHARED)
-
-#define busType bus.type
-#define pciBusId bus.id.pci
-#define isaBusId bus.id.isa
-#define sbusBusId bus.id.sbus
-
-struct x_BusAccRec;
-typedef void (*BusAccProcPtr)(struct x_BusAccRec *ptr);
-
-typedef struct x_BusAccRec {
- BusAccProcPtr set_f;
- BusAccProcPtr enable_f;
- BusAccProcPtr disable_f;
- BusAccProcPtr save_f;
- BusAccProcPtr restore_f;
- struct x_BusAccRec *current; /* pointer to bridge open on this bus */
- struct x_BusAccRec *primary; /* pointer to the bus connecting to this */
- struct x_BusAccRec *next; /* this links the different buses together */
- BusType type;
- BusType busdep_type;
- /* Bus-specific fields */
- union {
- struct {
- int bus;
- int primary_bus;
- PCITAG acc;
- pciBridgesSave save;
- } pci;
- } busdep;
-} BusAccRec, *BusAccPtr;
-
-/* state change notification callback */
-typedef struct _stateChange {
- xf86StateChangeNotificationCallbackFunc func;
- pointer arg;
- struct _stateChange *next;
-} StateChangeNotificationRec, *StateChangeNotificationPtr;
-
-
-extern EntityPtr *xf86Entities;
-extern int xf86NumEntities;
-extern xf86AccessRec AccessNULL;
-extern BusRec primaryBus;
-extern resPtr Acc;
-extern resPtr osRes;
-extern resPtr ResRange;
-extern BusAccPtr xf86BusAccInfo;
-
-int xf86AllocateEntity(void);
-BusType StringToBusType(const char* busID, const char **retID);
-memType ChkConflict(resRange *rgp, resPtr res, xf86State state);
-Bool xf86IsSubsetOf(resRange range, resPtr list);
-Bool xf86IsListSubsetOf(resPtr list, resPtr BaseList);
-resPtr xf86ExtractTypeFromList(resPtr list, unsigned long type);
-resPtr findIntersect(resRange Range, resPtr list);
-resPtr xf86FindIntersect(resRange Range, resPtr list);
-void RemoveOverlaps(resPtr target, resPtr list, Bool pow2Alignment,
- Bool useEstimated);
-void xf86ConvertListToHost(int entityIndex, resPtr list);
-
-#endif /* _XF86_BUS_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Config.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Config.c
deleted file mode 100644
index 0f03560a7..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Config.c
+++ /dev/null
@@ -1,2740 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86Config.c,v 1.21 2005/12/20 22:30:50 alanc Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Config.c,v 3.276 2003/10/08 14:58:26 dawes Exp $ */
-
-
-/*
- * Loosely based on code bearing the following copyright:
- *
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- */
-
-/*
- * Copyright 1992-2003 by The XFree86 Project, Inc.
- * Copyright 1997 by Metro Link, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- *
- * Authors:
- * Dirk Hohndel <hohndel@XFree86.Org>
- * David Dawes <dawes@XFree86.Org>
- * Marc La France <tsi@XFree86.Org>
- * Egbert Eich <eich@XFree86.Org>
- * ... and others
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef XF86DRI
-#include <sys/types.h>
-#include <grp.h>
-#endif
-
-#ifdef __UNIXOS2__
-#define I_NEED_OS2_H
-#endif
-
-#include "xf86.h"
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "xf86Config.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include "globals.h"
-
-#ifdef XINPUT
-#include "xf86Xinput.h"
-extern DeviceAssocRec mouse_assoc;
-#endif
-
-#ifdef XKB
-#define XKB_IN_SERVER
-#include <X11/extensions/XKBsrv.h>
-#endif
-
-#ifdef RENDER
-#include "picture.h"
-#endif
-
-#if (defined(i386) || defined(__i386__)) && \
- (defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
- defined(__NetBSD__) || defined(linux) || \
- (defined(SVR4) && !defined(sun)) || defined(__GNU__))
-#define SUPPORT_PC98
-#endif
-
-/*
- * These paths define the way the config file search is done. The escape
- * sequences are documented in parser/scan.c.
- */
-#ifndef ROOT_CONFIGPATH
-#define ROOT_CONFIGPATH "%A," "%R," \
- "/etc/X11/%R," "%P/etc/X11/%R," \
- "%E," "%F," \
- "/etc/X11/%F," "%P/etc/X11/%F," \
- "%D/%X," \
- "/etc/X11/%X-%M," "/etc/X11/%X," "/etc/%X," \
- "%P/etc/X11/%X.%H," "%P/etc/X11/%X-%M," \
- "%P/etc/X11/%X," \
- "%P/lib/X11/%X.%H," "%P/lib/X11/%X-%M," \
- "%P/lib/X11/%X"
-#endif
-#ifndef USER_CONFIGPATH
-#define USER_CONFIGPATH "/etc/X11/%S," "%P/etc/X11/%S," \
- "/etc/X11/%G," "%P/etc/X11/%G," \
- "/etc/X11/%X-%M," "/etc/X11/%X," "/etc/%X," \
- "%P/etc/X11/%X.%H," "%P/etc/X11/%X-%M," \
- "%P/etc/X11/%X," \
- "%P/lib/X11/%X.%H," "%P/lib/X11/%X-%M," \
- "%P/lib/X11/%X"
-#endif
-#ifndef PROJECTROOT
-#define PROJECTROOT "/usr/X11R6"
-#endif
-
-static char *fontPath = NULL;
-
-/* Forward declarations */
-static Bool configScreen(confScreenPtr screenp, XF86ConfScreenPtr conf_screen,
- int scrnum, MessageType from);
-static Bool configMonitor(MonPtr monitorp, XF86ConfMonitorPtr conf_monitor);
-static Bool configDevice(GDevPtr devicep, XF86ConfDevicePtr conf_device,
- Bool active);
-static Bool configInput(IDevPtr inputp, XF86ConfInputPtr conf_input,
- MessageType from);
-static Bool configDisplay(DispPtr displayp, XF86ConfDisplayPtr conf_display);
-static Bool addDefaultModes(MonPtr monitorp);
-#ifdef XF86DRI
-static Bool configDRI(XF86ConfDRIPtr drip);
-#endif
-static Bool configExtensions(XF86ConfExtensionsPtr conf_ext);
-
-/*
- * xf86GetPathElem --
- * Extract a single element from the font path string starting at
- * pnt. The font path element will be returned, and pnt will be
- * updated to point to the start of the next element, or set to
- * NULL if there are no more.
- */
-static char *
-xf86GetPathElem(char **pnt)
-{
- char *p1;
-
- p1 = *pnt;
- *pnt = index(*pnt, ',');
- if (*pnt != NULL) {
- **pnt = '\0';
- *pnt += 1;
- }
- return(p1);
-}
-
-/*
- * xf86ValidateFontPath --
- * Validates the user-specified font path. Each element that
- * begins with a '/' is checked to make sure the directory exists.
- * If the directory exists, the existence of a file named 'fonts.dir'
- * is checked. If either check fails, an error is printed and the
- * element is removed from the font path.
- */
-
-#define DIR_FILE "/fonts.dir"
-static char *
-xf86ValidateFontPath(char *path)
-{
- char *tmp_path, *out_pnt, *path_elem, *next, *p1, *dir_elem;
- struct stat stat_buf;
- int flag;
- int dirlen;
-
- tmp_path = xcalloc(1,strlen(path)+1);
- out_pnt = tmp_path;
- path_elem = NULL;
- next = path;
- while (next != NULL) {
- path_elem = xf86GetPathElem(&next);
- if (*path_elem == '/') {
-#ifndef __UNIXOS2__
- dir_elem = xnfcalloc(1, strlen(path_elem) + 1);
- if ((p1 = strchr(path_elem, ':')) != 0)
-#else
- /* OS/2 must prepend X11ROOT */
- path_elem = (char*)__XOS2RedirRoot(path_elem);
- dir_elem = xnfcalloc(1, strlen(path_elem) + 1);
- if (p1 = strchr(path_elem+2, ':'))
-#endif
- dirlen = p1 - path_elem;
- else
- dirlen = strlen(path_elem);
- strncpy(dir_elem, path_elem, dirlen);
- dir_elem[dirlen] = '\0';
- flag = stat(dir_elem, &stat_buf);
- if (flag == 0)
- if (!S_ISDIR(stat_buf.st_mode))
- flag = -1;
- if (flag != 0) {
- xf86Msg(X_WARNING, "The directory \"%s\" does not exist.\n", dir_elem);
- xf86ErrorF("\tEntry deleted from font path.\n");
- xfree(dir_elem);
- continue;
- }
- else {
- p1 = xnfalloc(strlen(dir_elem)+strlen(DIR_FILE)+1);
- strcpy(p1, dir_elem);
- strcat(p1, DIR_FILE);
- flag = stat(p1, &stat_buf);
- if (flag == 0)
- if (!S_ISREG(stat_buf.st_mode))
- flag = -1;
-#ifndef __UNIXOS2__
- xfree(p1);
-#endif
- if (flag != 0) {
- xf86Msg(X_WARNING,
- "`fonts.dir' not found (or not valid) in \"%s\".\n",
- dir_elem);
- xf86ErrorF("\tEntry deleted from font path.\n");
- xf86ErrorF("\t(Run 'mkfontdir' on \"%s\").\n", dir_elem);
- xfree(dir_elem);
- continue;
- }
- }
- xfree(dir_elem);
- }
-
- /*
- * Either an OK directory, or a font server name. So add it to
- * the path.
- */
- if (out_pnt != tmp_path)
- *out_pnt++ = ',';
- strcat(out_pnt, path_elem);
- out_pnt += strlen(path_elem);
- }
- return(tmp_path);
-}
-
-
-/*
- * use the datastructure that the parser provides and pick out the parts
- * that we need at this point
- */
-char **
-xf86ModulelistFromConfig(pointer **optlist)
-{
- int count = 0;
- char **modulearray;
- pointer *optarray;
- XF86LoadPtr modp;
-
- /*
- * make sure the config file has been parsed and that we have a
- * ModulePath set; if no ModulePath was given, use the default
- * ModulePath
- */
- if (xf86configptr == NULL) {
- xf86Msg(X_ERROR, "Cannot access global config data structure\n");
- return NULL;
- }
-
- if (xf86configptr->conf_modules) {
- /*
- * Walk the list of modules in the "Module" section to determine how
- * many we have.
- */
- modp = xf86configptr->conf_modules->mod_load_lst;
- while (modp) {
- count++;
- modp = (XF86LoadPtr) modp->list.next;
- }
- }
- if (count == 0)
- return NULL;
-
- /*
- * allocate the memory and walk the list again to fill in the pointers
- */
- modulearray = xnfalloc((count + 1) * sizeof(char*));
- optarray = xnfalloc((count + 1) * sizeof(pointer));
- count = 0;
- if (xf86configptr->conf_modules) {
- modp = xf86configptr->conf_modules->mod_load_lst;
- while (modp) {
- modulearray[count] = modp->load_name;
- optarray[count] = modp->load_opt;
- count++;
- modp = (XF86LoadPtr) modp->list.next;
- }
- }
- modulearray[count] = NULL;
- optarray[count] = NULL;
- if (optlist)
- *optlist = optarray;
- else
- xfree(optarray);
- return modulearray;
-}
-
-
-char **
-xf86DriverlistFromConfig()
-{
- int count = 0;
- int j;
- char **modulearray;
- screenLayoutPtr slp;
-
- /*
- * make sure the config file has been parsed and that we have a
- * ModulePath set; if no ModulePath was given, use the default
- * ModulePath
- */
- if (xf86configptr == NULL) {
- xf86Msg(X_ERROR, "Cannot access global config data structure\n");
- return NULL;
- }
-
- /*
- * Walk the list of driver lines in active "Device" sections to
- * determine now many implicitly loaded modules there are.
- *
- */
- if (xf86ConfigLayout.screens) {
- slp = xf86ConfigLayout.screens;
- while ((slp++)->screen) {
- count++;
- }
- }
-
- /*
- * Handle the set of inactive "Device" sections.
- */
- j = 0;
- while (xf86ConfigLayout.inactives[j++].identifier)
- count++;
-
- if (count == 0)
- return NULL;
-
- /*
- * allocate the memory and walk the list again to fill in the pointers
- */
- modulearray = xnfalloc((count + 1) * sizeof(char*));
- count = 0;
- slp = xf86ConfigLayout.screens;
- while (slp->screen) {
- modulearray[count] = slp->screen->device->driver;
- count++;
- slp++;
- }
-
- j = 0;
-
- while (xf86ConfigLayout.inactives[j].identifier)
- modulearray[count++] = xf86ConfigLayout.inactives[j++].driver;
-
- modulearray[count] = NULL;
-
- /* Remove duplicates */
- for (count = 0; modulearray[count] != NULL; count++) {
- int i;
-
- for (i = 0; i < count; i++)
- if (xf86NameCmp(modulearray[i], modulearray[count]) == 0) {
- modulearray[count] = "";
- break;
- }
- }
- return modulearray;
-}
-
-
-Bool
-xf86BuiltinInputDriver(const char *name)
-{
-#ifdef USE_DEPRECATED_KEYBOARD_DRIVER
- if (xf86NameCmp(name, "keyboard") == 0)
- return TRUE;
- else
-#endif
- return FALSE;
-}
-
-char **
-xf86InputDriverlistFromConfig()
-{
- int count = 0;
- char **modulearray;
- IDevPtr idp;
-
- /*
- * make sure the config file has been parsed and that we have a
- * ModulePath set; if no ModulePath was given, use the default
- * ModulePath
- */
- if (xf86configptr == NULL) {
- xf86Msg(X_ERROR, "Cannot access global config data structure\n");
- return NULL;
- }
-
- /*
- * Walk the list of driver lines in active "InputDevice" sections to
- * determine now many implicitly loaded modules there are.
- */
- if (xf86ConfigLayout.inputs) {
- idp = xf86ConfigLayout.inputs;
- while (idp->identifier) {
- if (!xf86BuiltinInputDriver(idp->driver))
- count++;
- idp++;
- }
- }
-
- if (count == 0)
- return NULL;
-
- /*
- * allocate the memory and walk the list again to fill in the pointers
- */
- modulearray = xnfalloc((count + 1) * sizeof(char*));
- count = 0;
- idp = xf86ConfigLayout.inputs;
- while (idp->identifier) {
- if (!xf86BuiltinInputDriver(idp->driver)) {
- modulearray[count] = idp->driver;
- count++;
- }
- idp++;
- }
- modulearray[count] = NULL;
-
- /* Remove duplicates */
- for (count = 0; modulearray[count] != NULL; count++) {
- int i;
-
- for (i = 0; i < count; i++)
- if (xf86NameCmp(modulearray[i], modulearray[count]) == 0) {
- modulearray[count] = "";
- break;
- }
- }
- return modulearray;
-}
-
-static void
-fixup_video_driver_list(char **drivers)
-{
- static const char *fallback[5] = { "vga", "vesa", "fbdev", "wsfb", NULL };
- char **end, **drv;
- char *x;
- char **ati, **atimisc;
- int i;
-
- /* walk to the end of the list */
- for (end = drivers; *end && **end; end++) ;
- end--;
-
- /*
- * for each of the fallback drivers, if we find it in the list,
- * swap it with the last available non-fallback driver.
- */
- for (i = 0; fallback[i]; i++) {
- for (drv = drivers; drv != end; drv++) {
- if (strstr(*drv, fallback[i])) {
- x = *drv; *drv = *end; *end = x;
- end--;
- break;
- }
- }
- }
- /*
- * since the ati wrapper driver is gross and awful, sort ati before
- * atimisc, which makes sure all the ati symbols are visible in xorgcfg.
- */
- for (drv = drivers; drv != end; drv++) {
- if (!strcmp(*drv, "atimisc")) {
- atimisc = drv;
- for (drv = atimisc; drv != end; drv++) {
- if (!strcmp(*drv, "ati")) {
- ati = drv;
- x = *ati; *ati = *atimisc; *atimisc = x;
- return;
- }
- }
- /* if we get here, ati was already ahead of atimisc */
- return;
- }
- }
-}
-
-
-/*
- * Generate a compiled-in list of driver names. This is used to produce a
- * consistent probe order. For the loader server, we also look for vendor-
- * provided modules, pre-pending them to our own list.
- */
-static char **
-GenerateDriverlist(char * dirname, char * drivernames)
-{
-#ifdef XFree86LOADER
- char **ret;
- char *subdirs[] = { dirname, NULL };
- static const char *patlist[] = {"(.*)_drv\\.so", "(.*)_drv\\.o", NULL};
- ret = LoaderListDirs(subdirs, patlist);
-
- /* fix up the probe order for video drivers */
- if (strstr(dirname, "drivers"))
- fixup_video_driver_list(ret);
-
- return ret;
-#else /* non-loadable server */
- char *cp, **driverlist;
- int count;
-
- /* Count the number needed */
- count = 0;
- cp = drivernames;
- while (*cp) {
- while (*cp && isspace(*cp)) cp++;
- if (!*cp) break;
- count++;
- while (*cp && !isspace(*cp)) cp++;
- }
-
- if (!count)
- return NULL;
-
- /* Now allocate the array of pointers to 0-terminated driver names */
- driverlist = (char **)xnfalloc((count + 1) * sizeof(char *));
- count = 0;
- cp = drivernames;
- while (*cp) {
- while (*cp && isspace(*cp)) cp++;
- if (!*cp) break;
- driverlist[count++] = cp;
- while (*cp && !isspace(*cp)) cp++;
- if (!*cp) break;
- *cp++ = 0;
- }
- driverlist[count] = NULL;
-
- return driverlist;
-#endif
-}
-
-
-char **
-xf86DriverlistFromCompile(void)
-{
- static char **driverlist = NULL;
- static Bool generated = FALSE;
-
- /* This string is modified in-place */
- static char drivernames[] = DRIVERS;
-
- if (!generated) {
- generated = TRUE;
- driverlist = GenerateDriverlist("drivers", drivernames);
- }
-
- return driverlist;
-}
-
-
-char **
-xf86InputDriverlistFromCompile(void)
-{
- static char **driverlist = NULL;
- static Bool generated = FALSE;
-
- /* This string is modified in-place */
- static char drivernames[] = IDRIVERS;
-
- if (!generated) {
- generated = TRUE;
- driverlist = GenerateDriverlist("input", drivernames);
- }
-
- return driverlist;
-}
-
-
-/*
- * xf86ConfigError --
- * Print a READABLE ErrorMessage!!! All information that is
- * available is printed.
- */
-static void
-xf86ConfigError(char *msg, ...)
-{
- va_list ap;
-
- ErrorF("\nConfig Error:\n");
- va_start(ap, msg);
- VErrorF(msg, ap);
- va_end(ap);
- ErrorF("\n");
- return;
-}
-
-static Bool
-configFiles(XF86ConfFilesPtr fileconf)
-{
- MessageType pathFrom = X_DEFAULT;
-
- /* FontPath */
-
- /* Try XF86Config FontPath first */
- if (!xf86fpFlag) {
- if (fileconf) {
- if (fileconf->file_fontpath) {
- char *f = xf86ValidateFontPath(fileconf->file_fontpath);
- pathFrom = X_CONFIG;
- if (*f)
- defaultFontPath = f;
- else {
- xf86Msg(X_WARNING,
- "FontPath is completely invalid. Using compiled-in default.\n");
- fontPath = NULL;
- pathFrom = X_DEFAULT;
- }
- }
- } else {
- xf86Msg(X_WARNING,
- "No FontPath specified. Using compiled-in default.\n");
- pathFrom = X_DEFAULT;
- }
- } else {
- /* Use fontpath specified with '-fp' */
- if (fontPath)
- {
- fontPath = NULL;
- }
- pathFrom = X_CMDLINE;
- }
- if (!fileconf) {
- /* xf86ValidateFontPath will write into it's arg, but defaultFontPath
- could be static, so we make a copy. */
- char *f = xnfalloc(strlen(defaultFontPath) + 1);
- f[0] = '\0';
- strcpy (f, defaultFontPath);
- defaultFontPath = xf86ValidateFontPath(f);
- xfree(f);
- } else {
- if (fileconf) {
- if (!fileconf->file_fontpath) {
- /* xf86ValidateFontPath will write into it's arg, but defaultFontPath
- could be static, so we make a copy. */
- char *f = xnfalloc(strlen(defaultFontPath) + 1);
- f[0] = '\0';
- strcpy (f, defaultFontPath);
- defaultFontPath = xf86ValidateFontPath(f);
- xfree(f);
- }
- }
- }
-
- /* If defaultFontPath is still empty, exit here */
-
- if (! *defaultFontPath)
- FatalError("No valid FontPath could be found.");
-
- xf86Msg(pathFrom, "FontPath set to \"%s\"\n", defaultFontPath);
-
- /* RgbPath */
-
- pathFrom = X_DEFAULT;
-
- if (xf86coFlag)
- pathFrom = X_CMDLINE;
- else if (fileconf) {
- if (fileconf->file_rgbpath) {
- rgbPath = fileconf->file_rgbpath;
- pathFrom = X_CONFIG;
- }
- }
-
- xf86Msg(pathFrom, "RgbPath set to \"%s\"\n", rgbPath);
-
- if (fileconf && fileconf->file_inputdevs) {
- xf86InputDeviceList = fileconf->file_inputdevs;
- xf86Msg(X_CONFIG, "Input device list set to \"%s\"\n",
- xf86InputDeviceList);
- }
-
-
-#ifdef XFree86LOADER
- /* ModulePath */
-
- if (fileconf) {
- if (xf86ModPathFrom != X_CMDLINE && fileconf->file_modulepath) {
- xf86ModulePath = fileconf->file_modulepath;
- xf86ModPathFrom = X_CONFIG;
- }
- }
-
- xf86Msg(xf86ModPathFrom, "ModulePath set to \"%s\"\n", xf86ModulePath);
-#endif
-
-#if 0
- /* LogFile */
- /*
- * XXX The problem with this is that the log file is already open.
- * One option might be to copy the exiting contents to the new location.
- * and re-open it. The down side is that the default location would
- * already have been overwritten. Another option would be to start with
- * unique temporary location, then copy it once the correct name is known.
- * A problem with this is what happens if the server exits before that
- * happens.
- */
- if (xf86LogFileFrom == X_DEFAULT && fileconf->file_logfile) {
- xf86LogFile = fileconf->file_logfile;
- xf86LogFileFrom = X_CONFIG;
- }
-#endif
-
- return TRUE;
-}
-
-typedef enum {
- FLAG_NOTRAPSIGNALS,
- FLAG_DONTVTSWITCH,
- FLAG_DONTZAP,
- FLAG_DONTZOOM,
- FLAG_DISABLEVIDMODE,
- FLAG_ALLOWNONLOCAL,
- FLAG_DISABLEMODINDEV,
- FLAG_MODINDEVALLOWNONLOCAL,
- FLAG_ALLOWMOUSEOPENFAIL,
- FLAG_VTINIT,
- FLAG_VTSYSREQ,
- FLAG_XKBDISABLE,
- FLAG_PCIPROBE1,
- FLAG_PCIPROBE2,
- FLAG_PCIFORCECONFIG1,
- FLAG_PCIFORCECONFIG2,
- FLAG_PCIFORCENONE,
- FLAG_PCIOSCONFIG,
- FLAG_SAVER_BLANKTIME,
- FLAG_DPMS_STANDBYTIME,
- FLAG_DPMS_SUSPENDTIME,
- FLAG_DPMS_OFFTIME,
- FLAG_PIXMAP,
- FLAG_PC98,
- FLAG_ESTIMATE_SIZES_AGGRESSIVELY,
- FLAG_NOPM,
- FLAG_XINERAMA,
- FLAG_ALLOW_DEACTIVATE_GRABS,
- FLAG_ALLOW_CLOSEDOWN_GRABS,
- FLAG_LOG,
- FLAG_RENDER_COLORMAP_MODE,
- FLAG_HANDLE_SPECIAL_KEYS,
- FLAG_RANDR
-} FlagValues;
-
-static OptionInfoRec FlagOptions[] = {
- { FLAG_NOTRAPSIGNALS, "NoTrapSignals", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_DONTVTSWITCH, "DontVTSwitch", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_DONTZAP, "DontZap", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_DONTZOOM, "DontZoom", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_DISABLEVIDMODE, "DisableVidModeExtension", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_ALLOWNONLOCAL, "AllowNonLocalXvidtune", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_DISABLEMODINDEV, "DisableModInDev", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_MODINDEVALLOWNONLOCAL, "AllowNonLocalModInDev", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_ALLOWMOUSEOPENFAIL, "AllowMouseOpenFail", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_VTINIT, "VTInit", OPTV_STRING,
- {0}, FALSE },
- { FLAG_VTSYSREQ, "VTSysReq", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_XKBDISABLE, "XkbDisable", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_PCIPROBE1, "PciProbe1" , OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_PCIPROBE2, "PciProbe2", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_PCIFORCECONFIG1, "PciForceConfig1", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_PCIFORCECONFIG2, "PciForceConfig2", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_PCIFORCENONE, "PciForceNone", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_PCIOSCONFIG, "PciOsConfig", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_SAVER_BLANKTIME, "BlankTime" , OPTV_INTEGER,
- {0}, FALSE },
- { FLAG_DPMS_STANDBYTIME, "StandbyTime", OPTV_INTEGER,
- {0}, FALSE },
- { FLAG_DPMS_SUSPENDTIME, "SuspendTime", OPTV_INTEGER,
- {0}, FALSE },
- { FLAG_DPMS_OFFTIME, "OffTime", OPTV_INTEGER,
- {0}, FALSE },
- { FLAG_PIXMAP, "Pixmap", OPTV_INTEGER,
- {0}, FALSE },
- { FLAG_PC98, "PC98", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_ESTIMATE_SIZES_AGGRESSIVELY,"EstimateSizesAggressively",OPTV_INTEGER,
- {0}, FALSE },
- { FLAG_NOPM, "NoPM", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_XINERAMA, "Xinerama", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_ALLOW_DEACTIVATE_GRABS,"AllowDeactivateGrabs", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_ALLOW_CLOSEDOWN_GRABS, "AllowClosedownGrabs", OPTV_BOOLEAN,
- {0}, FALSE },
- { FLAG_LOG, "Log", OPTV_STRING,
- {0}, FALSE },
- { FLAG_RENDER_COLORMAP_MODE, "RenderColormapMode", OPTV_STRING,
- {0}, FALSE },
- { FLAG_HANDLE_SPECIAL_KEYS, "HandleSpecialKeys", OPTV_STRING,
- {0}, FALSE },
- { FLAG_RANDR, "RandR", OPTV_BOOLEAN,
- {0}, FALSE },
- { -1, NULL, OPTV_NONE,
- {0}, FALSE },
-};
-
-#if defined(i386) || defined(__i386__)
-static Bool
-detectPC98(void)
-{
-#ifdef SUPPORT_PC98
- unsigned char buf[2];
-
- if (xf86ReadBIOS(0xf8000, 0xe80, buf, 2) != 2)
- return FALSE;
- if ((buf[0] == 0x98) && (buf[1] == 0x21))
- return TRUE;
- else
- return FALSE;
-#else
- return FALSE;
-#endif
-}
-#endif /* __i386__ */
-
-static Bool
-configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
-{
- XF86OptionPtr optp, tmp;
- int i;
- Pix24Flags pix24 = Pix24DontCare;
- Bool value;
- MessageType from;
-
- /*
- * Merge the ServerLayout and ServerFlags options. The former have
- * precedence over the latter.
- */
- optp = NULL;
- if (flagsconf && flagsconf->flg_option_lst)
- optp = xf86optionListDup(flagsconf->flg_option_lst);
- if (layoutopts) {
- tmp = xf86optionListDup(layoutopts);
- if (optp)
- optp = xf86optionListMerge(optp, tmp);
- else
- optp = tmp;
- }
-
- xf86ProcessOptions(-1, optp, FlagOptions);
-
- xf86GetOptValBool(FlagOptions, FLAG_NOTRAPSIGNALS, &xf86Info.notrapSignals);
- xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch);
- xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap);
- xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom);
-
- xf86GetOptValBool(FlagOptions, FLAG_ALLOW_DEACTIVATE_GRABS,
- &(xf86Info.grabInfo.allowDeactivate));
- xf86GetOptValBool(FlagOptions, FLAG_ALLOW_CLOSEDOWN_GRABS,
- &(xf86Info.grabInfo.allowClosedown));
-
- /*
- * Set things up based on the config file information. Some of these
- * settings may be overridden later when the command line options are
- * checked.
- */
-#ifdef XF86VIDMODE
- if (xf86GetOptValBool(FlagOptions, FLAG_DISABLEVIDMODE, &value))
- xf86Info.vidModeEnabled = !value;
- if (xf86GetOptValBool(FlagOptions, FLAG_ALLOWNONLOCAL, &value))
- xf86Info.vidModeAllowNonLocal = value;
-#endif
-
-#ifdef XF86MISC
- if (xf86GetOptValBool(FlagOptions, FLAG_DISABLEMODINDEV, &value))
- xf86Info.miscModInDevEnabled = !value;
- if (xf86GetOptValBool(FlagOptions, FLAG_MODINDEVALLOWNONLOCAL, &value))
- xf86Info.miscModInDevAllowNonLocal = value;
-#endif
-
- if (xf86GetOptValBool(FlagOptions, FLAG_ALLOWMOUSEOPENFAIL, &value))
- xf86Info.allowMouseOpenFail = value;
-
- if (xf86GetOptValBool(FlagOptions, FLAG_VTSYSREQ, &value)) {
-#ifdef USE_VT_SYSREQ
- xf86Info.vtSysreq = value;
- xf86Msg(X_CONFIG, "VTSysReq %s\n", value ? "enabled" : "disabled");
-#else
- if (value)
- xf86Msg(X_WARNING, "VTSysReq is not supported on this OS\n");
-#endif
- }
-
- if (xf86GetOptValBool(FlagOptions, FLAG_XKBDISABLE, &value)) {
-#ifdef XKB
- noXkbExtension = value;
- xf86Msg(X_CONFIG, "Xkb %s\n", value ? "disabled" : "enabled");
-#else
- if (!value)
- xf86Msg(X_WARNING, "Xserver doesn't support XKB\n");
-#endif
- }
-
- xf86Info.vtinit = xf86GetOptValString(FlagOptions, FLAG_VTINIT);
-
- if (xf86IsOptionSet(FlagOptions, FLAG_PCIPROBE1))
- xf86Info.pciFlags = PCIProbe1;
- if (xf86IsOptionSet(FlagOptions, FLAG_PCIPROBE2))
- xf86Info.pciFlags = PCIProbe2;
- if (xf86IsOptionSet(FlagOptions, FLAG_PCIFORCECONFIG1))
- xf86Info.pciFlags = PCIForceConfig1;
- if (xf86IsOptionSet(FlagOptions, FLAG_PCIFORCECONFIG2))
- xf86Info.pciFlags = PCIForceConfig2;
- if (xf86IsOptionSet(FlagOptions, FLAG_PCIOSCONFIG))
- xf86Info.pciFlags = PCIOsConfig;
- if (xf86IsOptionSet(FlagOptions, FLAG_PCIFORCENONE))
- xf86Info.pciFlags = PCIForceNone;
-
- xf86Info.pmFlag = TRUE;
- if (xf86GetOptValBool(FlagOptions, FLAG_NOPM, &value))
- xf86Info.pmFlag = !value;
- {
- const char *s;
- if ((s = xf86GetOptValString(FlagOptions, FLAG_LOG))) {
- if (!xf86NameCmp(s,"flush")) {
- xf86Msg(X_CONFIG, "Flushing logfile enabled\n");
- xf86Info.log = LogFlush;
- LogSetParameter(XLOG_FLUSH, TRUE);
- } else if (!xf86NameCmp(s,"sync")) {
- xf86Msg(X_CONFIG, "Syncing logfile enabled\n");
- xf86Info.log = LogSync;
- LogSetParameter(XLOG_SYNC, TRUE);
- } else {
- xf86Msg(X_WARNING,"Unknown Log option\n");
- }
- }
- }
-
-#ifdef RENDER
- {
- const char *s;
-
- if ((s = xf86GetOptValString(FlagOptions, FLAG_RENDER_COLORMAP_MODE))){
- int policy = PictureParseCmapPolicy (s);
- if (policy == PictureCmapPolicyInvalid)
- xf86Msg(X_WARNING, "Unknown colormap policy \"%s\"\n", s);
- else
- {
- xf86Msg(X_CONFIG, "Render colormap policy set to %s\n", s);
- PictureCmapPolicy = policy;
- }
- }
- }
-#endif
- {
- const char *s;
- if ((s = xf86GetOptValString(FlagOptions, FLAG_HANDLE_SPECIAL_KEYS))) {
- if (!xf86NameCmp(s,"always")) {
- xf86Msg(X_CONFIG, "Always handling special keys in DDX\n");
- xf86Info.ddxSpecialKeys = SKAlways;
- } else if (!xf86NameCmp(s,"whenneeded")) {
- xf86Msg(X_CONFIG, "Special keys handled in DDX only if needed\n");
- xf86Info.ddxSpecialKeys = SKWhenNeeded;
- } else if (!xf86NameCmp(s,"never")) {
- xf86Msg(X_CONFIG, "Never handling special keys in DDX\n");
- xf86Info.ddxSpecialKeys = SKNever;
- } else {
- xf86Msg(X_WARNING,"Unknown HandleSpecialKeys option\n");
- }
- }
- }
-#ifdef RANDR
- xf86Info.disableRandR = FALSE;
- xf86Info.randRFrom = X_DEFAULT;
- if (xf86GetOptValBool(FlagOptions, FLAG_RANDR, &value)) {
- xf86Info.disableRandR = !value;
- xf86Info.randRFrom = X_CONFIG;
- }
-#endif
- i = -1;
- xf86GetOptValInteger(FlagOptions, FLAG_ESTIMATE_SIZES_AGGRESSIVELY, &i);
- if (i >= 0)
- xf86Info.estimateSizesAggressively = i;
- else
- xf86Info.estimateSizesAggressively = 0;
-
-/* Make sure that timers don't overflow CARD32's after multiplying */
-#define MAX_TIME_IN_MIN (0x7fffffff / MILLI_PER_MIN)
-
- i = -1;
- xf86GetOptValInteger(FlagOptions, FLAG_SAVER_BLANKTIME, &i);
- if ((i >= 0) && (i < MAX_TIME_IN_MIN))
- ScreenSaverTime = defaultScreenSaverTime = i * MILLI_PER_MIN;
- else if (i != -1)
- xf86ConfigError("BlankTime value %d outside legal range of 0 - %d minutes",
- i, MAX_TIME_IN_MIN);
-
-#ifdef DPMSExtension
- i = -1;
- xf86GetOptValInteger(FlagOptions, FLAG_DPMS_STANDBYTIME, &i);
- if ((i >= 0) && (i < MAX_TIME_IN_MIN))
- DPMSStandbyTime = defaultDPMSStandbyTime = i * MILLI_PER_MIN;
- else if (i != -1)
- xf86ConfigError("StandbyTime value %d outside legal range of 0 - %d minutes",
- i, MAX_TIME_IN_MIN);
- i = -1;
- xf86GetOptValInteger(FlagOptions, FLAG_DPMS_SUSPENDTIME, &i);
- if ((i >= 0) && (i < MAX_TIME_IN_MIN))
- DPMSSuspendTime = defaultDPMSSuspendTime = i * MILLI_PER_MIN;
- else if (i != -1)
- xf86ConfigError("SuspendTime value %d outside legal range of 0 - %d minutes",
- i, MAX_TIME_IN_MIN);
- i = -1;
- xf86GetOptValInteger(FlagOptions, FLAG_DPMS_OFFTIME, &i);
- if ((i >= 0) && (i < MAX_TIME_IN_MIN))
- DPMSOffTime = defaultDPMSOffTime = i * MILLI_PER_MIN;
- else if (i != -1)
- xf86ConfigError("OffTime value %d outside legal range of 0 - %d minutes",
- i, MAX_TIME_IN_MIN);
-#endif
-
- i = -1;
- xf86GetOptValInteger(FlagOptions, FLAG_PIXMAP, &i);
- switch (i) {
- case 24:
- pix24 = Pix24Use24;
- break;
- case 32:
- pix24 = Pix24Use32;
- break;
- case -1:
- break;
- default:
- xf86ConfigError("Pixmap option's value (%d) must be 24 or 32\n", i);
- return FALSE;
- }
- if (xf86Pix24 != Pix24DontCare) {
- xf86Info.pixmap24 = xf86Pix24;
- xf86Info.pix24From = X_CMDLINE;
- } else if (pix24 != Pix24DontCare) {
- xf86Info.pixmap24 = pix24;
- xf86Info.pix24From = X_CONFIG;
- } else {
- xf86Info.pixmap24 = Pix24DontCare;
- xf86Info.pix24From = X_DEFAULT;
- }
-#if defined(i386) || defined(__i386__)
- if (xf86GetOptValBool(FlagOptions, FLAG_PC98, &value)) {
- xf86Info.pc98 = value;
- if (value) {
- xf86Msg(X_CONFIG, "Japanese PC98 architecture\n");
- }
- } else
- if (detectPC98()) {
- xf86Info.pc98 = TRUE;
- xf86Msg(X_PROBED, "Japanese PC98 architecture\n");
- }
-#endif
-
-#ifdef PANORAMIX
- from = X_DEFAULT;
- if (!noPanoramiXExtension)
- from = X_CMDLINE;
- else if (xf86GetOptValBool(FlagOptions, FLAG_XINERAMA, &value)) {
- noPanoramiXExtension = !value;
- from = X_CONFIG;
- }
- if (!noPanoramiXExtension)
- xf86Msg(from, "Xinerama: enabled\n");
-#endif
-
- return TRUE;
-}
-
-/*
- * XXX This function is temporary, and will be removed when the keyboard
- * driver is converted into a regular input driver.
- */
-static Bool
-configInputKbd(IDevPtr inputp)
-{
- char *s;
- MessageType from = X_DEFAULT;
- Bool customKeycodesDefault = FALSE;
- int verb = 0;
-#if defined(XQUEUE)
- char *kbdproto = "Xqueue";
-#else
- char *kbdproto = "standard";
-#endif
-
- /* Initialize defaults */
- xf86Info.xleds = 0L;
- xf86Info.kbdDelay = 500;
- xf86Info.kbdRate = 30;
-
- xf86Info.kbdProc = NULL;
- xf86Info.vtinit = NULL;
- xf86Info.vtSysreq = VT_SYSREQ_DEFAULT;
-#if defined(SVR4) && defined(i386)
- xf86Info.panix106 = FALSE;
-#endif
- xf86Info.kbdCustomKeycodes = FALSE;
-#ifdef WSCONS_SUPPORT
- xf86Info.kbdFd = -1;
-#endif
-#ifdef XKB
- if (!xf86IsPc98()) {
- xf86Info.xkbrules = __XKBDEFRULES__;
- xf86Info.xkbmodel = "pc105";
- xf86Info.xkblayout = "us";
- xf86Info.xkbvariant = NULL;
- xf86Info.xkboptions = NULL;
- } else {
- xf86Info.xkbrules = "xfree98";
- xf86Info.xkbmodel = "pc98";
- xf86Info.xkblayout = "nec/jp";
- xf86Info.xkbvariant = NULL;
- xf86Info.xkboptions = NULL;
- }
- xf86Info.xkbcomponents_specified = FALSE;
- /* Should discourage the use of these. */
- xf86Info.xkbkeymap = NULL;
- xf86Info.xkbtypes = NULL;
- xf86Info.xkbcompat = NULL;
- xf86Info.xkbkeycodes = NULL;
- xf86Info.xkbsymbols = NULL;
- xf86Info.xkbgeometry = NULL;
-#endif
-
- s = xf86SetStrOption(inputp->commonOptions, "Protocol", kbdproto);
- if (xf86NameCmp(s, "standard") == 0) {
- xf86Info.kbdProc = xf86KbdProc;
- xf86Info.kbdEvents = xf86KbdEvents;
- xfree(s);
- } else if (xf86NameCmp(s, "xqueue") == 0) {
-#ifdef __UNIXWARE__
- /*
- * To retain compatibility with older config files, on UnixWare, we
- * accept the xqueue protocol but use the normal keyboard procs.
- */
- xf86Info.kbdProc = xf86KbdProc;
- xf86Info.kbdEvents = xf86KbdEvents;
-#else
-#ifdef XQUEUE
- xf86Info.kbdProc = xf86XqueKbdProc;
- xf86Info.kbdEvents = xf86XqueEvents;
- xf86Msg(X_CONFIG, "Xqueue selected for keyboard input\n");
-#endif
-#endif
- xfree(s);
-#ifdef WSCONS_SUPPORT
- } else if (xf86NameCmp(s, "wskbd") == 0) {
- xf86Info.kbdProc = xf86KbdProc;
- xf86Info.kbdEvents = xf86WSKbdEvents;
- xfree(s);
- s = xf86SetStrOption(inputp->commonOptions, "Device", NULL);
- xf86Msg(X_CONFIG, "Keyboard: Protocol: wskbd\n");
- if (s == NULL) {
- xf86ConfigError("A \"device\" option is required with"
- " the \"wskbd\" keyboard protocol");
- return FALSE;
- }
- xf86Info.kbdFd = open(s, O_RDWR | O_NONBLOCK | O_EXCL);
- if (xf86Info.kbdFd == -1) {
- xf86ConfigError("cannot open \"%s\"", s);
- xfree(s);
- return FALSE;
- }
- xfree(s);
- /* Find out keyboard type */
- if (ioctl(xf86Info.kbdFd, WSKBDIO_GTYPE, &xf86Info.wsKbdType) == -1) {
- xf86ConfigError("cannot get keyboard type");
- close(xf86Info.kbdFd);
- return FALSE;
- }
- switch (xf86Info.wsKbdType) {
- case WSKBD_TYPE_PC_XT:
- xf86Msg(X_PROBED, "Keyboard type: XT\n");
- break;
- case WSKBD_TYPE_PC_AT:
- xf86Msg(X_PROBED, "Keyboard type: AT\n");
- break;
- case WSKBD_TYPE_USB:
- xf86Msg(X_PROBED, "Keyboard type: USB\n");
- break;
-#ifdef WSKBD_TYPE_ADB
- case WSKBD_TYPE_ADB:
- xf86Msg(X_PROBED, "Keyboard type: ADB\n");
- break;
-#endif
-#ifdef WSKBD_TYPE_SUN
- case WSKBD_TYPE_SUN:
- xf86Msg(X_PROBED, "Keyboard type: Sun\n");
- break;
-#endif
-#ifdef WSKBD_TYPE_SUN5
- case WSKBD_TYPE_SUN5:
- xf86Msg(X_PROBED, "Keyboard type: Sun5\n");
- break;
-#endif
- default:
- xf86ConfigError("Unsupported wskbd type \"%d\"",
- xf86Info.wsKbdType);
- close(xf86Info.kbdFd);
- return FALSE;
- }
-#endif
- } else {
- xf86ConfigError("\"%s\" is not a valid keyboard protocol name", s);
- xfree(s);
- return FALSE;
- }
-
- s = xf86SetStrOption(inputp->commonOptions, "AutoRepeat", NULL);
- if (s) {
- if (sscanf(s, "%d %d", &xf86Info.kbdDelay, &xf86Info.kbdRate) != 2) {
- xf86ConfigError("\"%s\" is not a valid AutoRepeat value", s);
- xfree(s);
- return FALSE;
- }
- xfree(s);
- }
-
- s = xf86SetStrOption(inputp->commonOptions, "XLeds", NULL);
- if (s) {
- char *l, *end;
- unsigned int i;
- l = strtok(s, " \t\n");
- while (l) {
- i = strtoul(l, &end, 0);
- if (*end == '\0')
- xf86Info.xleds |= 1L << (i - 1);
- else {
- xf86ConfigError("\"%s\" is not a valid XLeds value", l);
- xfree(s);
- return FALSE;
- }
- l = strtok(NULL, " \t\n");
- }
- xfree(s);
- }
-
-#ifdef XKB
- from = X_DEFAULT;
- if (noXkbExtension)
- from = X_CMDLINE;
- else if (xf86FindOption(inputp->commonOptions, "XkbDisable")) {
- xf86Msg(X_WARNING, "KEYBOARD: XKB should be disabled in the "
- "ServerFlags section instead\n"
- "\tof in the \"keyboard\" InputDevice section.\n");
- noXkbExtension =
- xf86SetBoolOption(inputp->commonOptions, "XkbDisable", FALSE);
- from = X_CONFIG;
- }
- if (noXkbExtension)
- xf86Msg(from, "XKB: disabled\n");
-
-#define NULL_IF_EMPTY(s) (s[0] ? s : (xfree(s), (char *)NULL))
-
- if (!noXkbExtension && !XkbInitialMap) {
- if ((s = xf86SetStrOption(inputp->commonOptions, "XkbKeymap", NULL))) {
- xf86Info.xkbkeymap = NULL_IF_EMPTY(s);
- xf86Msg(X_CONFIG, "XKB: keymap: \"%s\" "
- "(overrides other XKB settings)\n", xf86Info.xkbkeymap);
- } else {
- if ((s = xf86SetStrOption(inputp->commonOptions, "XkbCompat", NULL))) {
- xf86Info.xkbcompat = NULL_IF_EMPTY(s);
- xf86Info.xkbcomponents_specified = TRUE;
- xf86Msg(X_CONFIG, "XKB: compat: \"%s\"\n", s);
- }
-
- if ((s = xf86SetStrOption(inputp->commonOptions, "XkbTypes", NULL))) {
- xf86Info.xkbtypes = NULL_IF_EMPTY(s);
- xf86Info.xkbcomponents_specified = TRUE;
- xf86Msg(X_CONFIG, "XKB: types: \"%s\"\n", s);
- }
-
- if ((s = xf86SetStrOption(inputp->commonOptions, "XkbKeycodes", NULL))) {
- xf86Info.xkbkeycodes = NULL_IF_EMPTY(s);
- xf86Info.xkbcomponents_specified = TRUE;
- xf86Msg(X_CONFIG, "XKB: keycodes: \"%s\"\n", s);
- }
-
- if ((s = xf86SetStrOption(inputp->commonOptions, "XkbGeometry", NULL))) {
- xf86Info.xkbgeometry = NULL_IF_EMPTY(s);
- xf86Info.xkbcomponents_specified = TRUE;
- xf86Msg(X_CONFIG, "XKB: geometry: \"%s\"\n", s);
- }
-
- if ((s = xf86SetStrOption(inputp->commonOptions, "XkbSymbols", NULL))) {
- xf86Info.xkbsymbols = NULL_IF_EMPTY(s);
- xf86Info.xkbcomponents_specified = TRUE;
- xf86Msg(X_CONFIG, "XKB: symbols: \"%s\"\n", s);
- }
-
- if ((s = xf86SetStrOption(inputp->commonOptions, "XkbRules", NULL))) {
- xf86Info.xkbrules = NULL_IF_EMPTY(s);
- xf86Info.xkbcomponents_specified = TRUE;
- xf86Msg(X_CONFIG, "XKB: rules: \"%s\"\n", s);
- }
-
- if ((s = xf86SetStrOption(inputp->commonOptions, "XkbModel", NULL))) {
- xf86Info.xkbmodel = NULL_IF_EMPTY(s);
- xf86Info.xkbcomponents_specified = TRUE;
- xf86Msg(X_CONFIG, "XKB: model: \"%s\"\n", s);
- }
-
- if ((s = xf86SetStrOption(inputp->commonOptions, "XkbLayout", NULL))) {
- xf86Info.xkblayout = NULL_IF_EMPTY(s);
- xf86Info.xkbcomponents_specified = TRUE;
- xf86Msg(X_CONFIG, "XKB: layout: \"%s\"\n", s);
- }
-
- if ((s = xf86SetStrOption(inputp->commonOptions, "XkbVariant", NULL))) {
- xf86Info.xkbvariant = NULL_IF_EMPTY(s);
- xf86Info.xkbcomponents_specified = TRUE;
- xf86Msg(X_CONFIG, "XKB: variant: \"%s\"\n", s);
- }
-
- if ((s = xf86SetStrOption(inputp->commonOptions, "XkbOptions", NULL))) {
- xf86Info.xkboptions = NULL_IF_EMPTY(s);
- xf86Info.xkbcomponents_specified = TRUE;
- xf86Msg(X_CONFIG, "XKB: options: \"%s\"\n", s);
- }
- }
- }
-#undef NULL_IF_EMPTY
-#endif
-#if defined(SVR4) && defined(i386)
- if ((xf86Info.panix106 =
- xf86SetBoolOption(inputp->commonOptions, "Panix106", FALSE))) {
- xf86Msg(X_CONFIG, "PANIX106: enabled\n");
- }
-#endif
-
- /*
- * This was once a compile time option (ASSUME_CUSTOM_KEYCODES)
- * defaulting to 1 on Linux/PPC. It is no longer necessary, but for
- * backwards compatibility we provide 'Option "CustomKeycodes"'
- * and try to autoprobe on Linux/PPC.
- */
- from = X_DEFAULT;
- verb = 2;
-#if defined(__linux__) && defined(__powerpc__)
- {
- FILE *f;
-
- f = fopen("/proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes","r");
- if (f) {
- if (fgetc(f) == '0') {
- customKeycodesDefault = TRUE;
- from = X_PROBED;
- verb = 1;
- }
- fclose(f);
- }
- }
-#endif
- if (xf86FindOption(inputp->commonOptions, "CustomKeycodes")) {
- from = X_CONFIG;
- verb = 1;
- }
- xf86Info.kbdCustomKeycodes =
- xf86SetBoolOption(inputp->commonOptions, "CustomKeycodes",
- customKeycodesDefault);
- xf86MsgVerb(from, verb, "Keyboard: CustomKeycode %s\n",
- xf86Info.kbdCustomKeycodes ? "enabled" : "disabled");
-
- return TRUE;
-}
-
-/*
- * Locate the core input devices. These can be specified/located in
- * the following ways, in order of priority:
- *
- * 1. The InputDevices named by the -pointer and -keyboard command line
- * options.
- * 2. The "CorePointer" and "CoreKeyboard" InputDevices referred to by
- * the active ServerLayout.
- * 3. The first InputDevices marked as "CorePointer" and "CoreKeyboard".
- * 4. The first InputDevices that use the 'mouse' and 'keyboard' or 'kbd'
- * drivers.
- * 5. Default devices with an empty (default) configuration. These defaults
- * will reference the 'mouse' and 'keyboard' drivers.
- */
-
-static Bool
-checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout)
-{
- IDevPtr corePointer = NULL, coreKeyboard = NULL;
- Bool foundPointer = FALSE, foundKeyboard = FALSE;
- const char *pointerMsg = NULL, *keyboardMsg = NULL;
- IDevPtr indp;
- IDevRec Pointer, Keyboard;
- XF86ConfInputPtr confInput;
- XF86ConfInputRec defPtr, defKbd;
- int count = 0;
- MessageType from = X_DEFAULT;
-
- /*
- * First check if a core pointer or core keyboard have been specified
- * in the active ServerLayout. If more than one is specified for either,
- * remove the core attribute from the later ones.
- */
- for (indp = servlayoutp->inputs; indp->identifier; indp++) {
- pointer opt1 = NULL, opt2 = NULL;
- if (indp->commonOptions &&
- xf86CheckBoolOption(indp->commonOptions, "CorePointer", FALSE)) {
- opt1 = indp->commonOptions;
- }
- if (indp->extraOptions &&
- xf86CheckBoolOption(indp->extraOptions, "CorePointer", FALSE)) {
- opt2 = indp->extraOptions;
- }
- if (opt1 || opt2) {
- if (!corePointer) {
- corePointer = indp;
- } else {
- if (opt1)
- xf86ReplaceBoolOption(opt1, "CorePointer", FALSE);
- if (opt2)
- xf86ReplaceBoolOption(opt2, "CorePointer", FALSE);
- xf86Msg(X_WARNING, "Duplicate core pointer devices. "
- "Removing core pointer attribute from \"%s\"\n",
- indp->identifier);
- }
- }
- opt1 = opt2 = NULL;
- if (indp->commonOptions &&
- xf86CheckBoolOption(indp->commonOptions, "CoreKeyboard", FALSE)) {
- opt1 = indp->commonOptions;
- }
- if (indp->extraOptions &&
- xf86CheckBoolOption(indp->extraOptions, "CoreKeyboard", FALSE)) {
- opt2 = indp->extraOptions;
- }
- if (opt1 || opt2) {
- if (!coreKeyboard) {
- coreKeyboard = indp;
- } else {
- if (opt1)
- xf86ReplaceBoolOption(opt1, "CoreKeyboard", FALSE);
- if (opt2)
- xf86ReplaceBoolOption(opt2, "CoreKeyboard", FALSE);
- xf86Msg(X_WARNING, "Duplicate core keyboard devices. "
- "Removing core keyboard attribute from \"%s\"\n",
- indp->identifier);
- }
- }
- count++;
- }
-
- confInput = NULL;
-
- /* 1. Check for the -pointer command line option. */
- if (xf86PointerName) {
- confInput = xf86findInput(xf86PointerName,
- xf86configptr->conf_input_lst);
- if (!confInput) {
- xf86Msg(X_ERROR, "No InputDevice section called \"%s\"\n",
- xf86PointerName);
- return FALSE;
- }
- from = X_CMDLINE;
- /*
- * If one was already specified in the ServerLayout, it needs to be
- * removed.
- */
- if (corePointer) {
- for (indp = servlayoutp->inputs; indp->identifier; indp++)
- if (indp == corePointer)
- break;
- for (; indp->identifier; indp++)
- indp[0] = indp[1];
- count--;
- }
- corePointer = NULL;
- foundPointer = TRUE;
- }
-
- /* 2. ServerLayout-specified core pointer. */
- if (corePointer) {
- foundPointer = TRUE;
- from = X_CONFIG;
- }
-
- /* 3. First core pointer device. */
- if (!foundPointer) {
- XF86ConfInputPtr p;
-
- for (p = xf86configptr->conf_input_lst; p; p = p->list.next) {
- if (p->inp_option_lst &&
- xf86CheckBoolOption(p->inp_option_lst, "CorePointer", FALSE)) {
- confInput = p;
- foundPointer = TRUE;
- from = X_DEFAULT;
- pointerMsg = "first core pointer device";
- break;
- }
- }
- }
-
- /* 4. First pointer with 'mouse' as the driver. */
- if (!foundPointer) {
- confInput = xf86findInput(CONF_IMPLICIT_POINTER,
- xf86configptr->conf_input_lst);
- if (!confInput) {
- confInput = xf86findInputByDriver("mouse",
- xf86configptr->conf_input_lst);
- }
- if (confInput) {
- foundPointer = TRUE;
- from = X_DEFAULT;
- pointerMsg = "first mouse device";
- }
- }
-
- /* 5. Built-in default. */
- if (!foundPointer) {
- bzero(&defPtr, sizeof(defPtr));
- defPtr.inp_identifier = "<default pointer>";
- defPtr.inp_driver = "mouse";
- confInput = &defPtr;
- foundPointer = TRUE;
- from = X_DEFAULT;
- pointerMsg = "default mouse configuration";
- }
-
- /* Add the core pointer device to the layout, and set it to Core. */
- if (foundPointer && confInput) {
- foundPointer = configInput(&Pointer, confInput, from);
- if (foundPointer) {
- count++;
- indp = xnfrealloc(servlayoutp->inputs,
- (count + 1) * sizeof(IDevRec));
- indp[count - 1] = Pointer;
- indp[count - 1].extraOptions =
- xf86addNewOption(NULL, "CorePointer", NULL);
- indp[count].identifier = NULL;
- servlayoutp->inputs = indp;
- }
- }
-
- if (!foundPointer) {
- /* This shouldn't happen. */
- xf86Msg(X_ERROR, "Cannot locate a core pointer device.\n");
- return FALSE;
- }
-
- confInput = NULL;
-
- /* 1. Check for the -keyboard command line option. */
- if (xf86KeyboardName) {
- confInput = xf86findInput(xf86KeyboardName,
- xf86configptr->conf_input_lst);
- if (!confInput) {
- xf86Msg(X_ERROR, "No InputDevice section called \"%s\"\n",
- xf86KeyboardName);
- return FALSE;
- }
- from = X_CMDLINE;
- /*
- * If one was already specified in the ServerLayout, it needs to be
- * removed.
- */
- if (coreKeyboard) {
- for (indp = servlayoutp->inputs; indp->identifier; indp++)
- if (indp == coreKeyboard)
- break;
- for (; indp->identifier; indp++)
- indp[0] = indp[1];
- count--;
- }
- coreKeyboard = NULL;
- foundKeyboard = TRUE;
- }
-
- /* 2. ServerLayout-specified core keyboard. */
- if (coreKeyboard) {
- foundKeyboard = TRUE;
- from = X_CONFIG;
- }
-
- /* 3. First core keyboard device. */
- if (!foundKeyboard) {
- XF86ConfInputPtr p;
-
- for (p = xf86configptr->conf_input_lst; p; p = p->list.next) {
- if (p->inp_option_lst &&
- xf86CheckBoolOption(p->inp_option_lst, "CoreKeyboard", FALSE)) {
- confInput = p;
- foundKeyboard = TRUE;
- from = X_DEFAULT;
- keyboardMsg = "first core keyboard device";
- break;
- }
- }
- }
-
- /* 4. First keyboard with 'keyboard' or 'kbd' as the driver. */
- if (!foundKeyboard) {
- confInput = xf86findInput(CONF_IMPLICIT_KEYBOARD,
- xf86configptr->conf_input_lst);
- if (!confInput) {
- confInput = xf86findInputByDriver("kbd",
- xf86configptr->conf_input_lst);
- }
- if (!confInput) {
- confInput = xf86findInputByDriver("keyboard",
- xf86configptr->conf_input_lst);
- }
- if (confInput) {
- foundKeyboard = TRUE;
- from = X_DEFAULT;
- keyboardMsg = "first keyboard device";
- }
- }
-
- /* 5. Built-in default. */
- if (!foundKeyboard) {
- bzero(&defKbd, sizeof(defKbd));
- defKbd.inp_identifier = "<default keyboard>";
- defKbd.inp_driver = "kbd";
- confInput = &defKbd;
- foundKeyboard = TRUE;
- keyboardMsg = "default keyboard configuration";
- from = X_DEFAULT;
- }
-
- /* Add the core keyboard device to the layout, and set it to Core. */
- if (foundKeyboard && confInput) {
- foundKeyboard = configInput(&Keyboard, confInput, from);
- if (foundKeyboard) {
- count++;
- indp = xnfrealloc(servlayoutp->inputs,
- (count + 1) * sizeof(IDevRec));
- indp[count - 1] = Keyboard;
- indp[count - 1].extraOptions =
- xf86addNewOption(NULL, "CoreKeyboard", NULL);
- indp[count].identifier = NULL;
- servlayoutp->inputs = indp;
- }
- }
-
- if (!foundKeyboard) {
- /* This shouldn't happen. */
- xf86Msg(X_ERROR, "Cannot locate a core keyboard device.\n");
- return FALSE;
- }
-
- if (pointerMsg) {
- xf86Msg(X_WARNING, "The core pointer device wasn't specified "
- "explicitly in the layout.\n"
- "\tUsing the %s.\n", pointerMsg);
- }
-
- if (keyboardMsg) {
- xf86Msg(X_WARNING, "The core keyboard device wasn't specified "
- "explicitly in the layout.\n"
- "\tUsing the %s.\n", keyboardMsg);
- }
-
- return TRUE;
-}
-
-typedef enum {
- LAYOUT_ISOLATEDEVICE,
- LAYOUT_SINGLECARD
-} LayoutValues;
-
-static OptionInfoRec LayoutOptions[] = {
- { LAYOUT_ISOLATEDEVICE, "IsolateDevice", OPTV_STRING,
- {0}, FALSE },
- { LAYOUT_SINGLECARD, "SingleCard", OPTV_BOOLEAN,
- {0}, FALSE },
- { -1, NULL, OPTV_NONE,
- {0}, FALSE },
-};
-
-/*
- * figure out which layout is active, which screens are used in that layout,
- * which drivers and monitors are used in these screens
- */
-static Bool
-configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout,
- char *default_layout)
-{
- XF86ConfAdjacencyPtr adjp;
- XF86ConfInactivePtr idp;
- XF86ConfInputrefPtr irp;
- int count = 0;
- int scrnum;
- XF86ConfLayoutPtr l;
- MessageType from;
- screenLayoutPtr slp;
- GDevPtr gdp;
- IDevPtr indp;
- int i = 0, j;
-
- if (!servlayoutp)
- return FALSE;
-
- /*
- * which layout section is the active one?
- *
- * If there is a -layout command line option, use that one, otherwise
- * pick the first one.
- */
- from = X_DEFAULT;
- if (xf86LayoutName != NULL)
- from = X_CMDLINE;
- else if (default_layout) {
- xf86LayoutName = default_layout;
- from = X_CONFIG;
- }
- if (xf86LayoutName != NULL) {
- if ((l = xf86findLayout(xf86LayoutName, conf_layout)) == NULL) {
- xf86Msg(X_ERROR, "No ServerLayout section called \"%s\"\n",
- xf86LayoutName);
- return FALSE;
- }
- conf_layout = l;
- }
- xf86Msg(from, "ServerLayout \"%s\"\n", conf_layout->lay_identifier);
- adjp = conf_layout->lay_adjacency_lst;
-
- /*
- * we know that each screen is referenced exactly once on the left side
- * of a layout statement in the Layout section. So to allocate the right
- * size for the array we do a quick walk of the list to figure out how
- * many sections we have
- */
- while (adjp) {
- count++;
- adjp = (XF86ConfAdjacencyPtr)adjp->list.next;
- }
-#ifdef DEBUG
- ErrorF("Found %d screens in the layout section %s",
- count, conf_layout->lay_identifier);
-#endif
- slp = xnfcalloc(1, (count + 1) * sizeof(screenLayoutRec));
- slp[count].screen = NULL;
- /*
- * now that we have storage, loop over the list again and fill in our
- * data structure; at this point we do not fill in the adjacency
- * information as it is not clear if we need it at all
- */
- adjp = conf_layout->lay_adjacency_lst;
- count = 0;
- while (adjp) {
- slp[count].screen = xnfcalloc(1, sizeof(confScreenRec));
- if (adjp->adj_scrnum < 0)
- scrnum = count;
- else
- scrnum = adjp->adj_scrnum;
- if (!configScreen(slp[count].screen, adjp->adj_screen, scrnum,
- X_CONFIG))
- return FALSE;
- slp[count].x = adjp->adj_x;
- slp[count].y = adjp->adj_y;
- slp[count].refname = adjp->adj_refscreen;
- switch (adjp->adj_where) {
- case CONF_ADJ_OBSOLETE:
- slp[count].where = PosObsolete;
- slp[count].topname = adjp->adj_top_str;
- slp[count].bottomname = adjp->adj_bottom_str;
- slp[count].leftname = adjp->adj_left_str;
- slp[count].rightname = adjp->adj_right_str;
- break;
- case CONF_ADJ_ABSOLUTE:
- slp[count].where = PosAbsolute;
- break;
- case CONF_ADJ_RIGHTOF:
- slp[count].where = PosRightOf;
- break;
- case CONF_ADJ_LEFTOF:
- slp[count].where = PosLeftOf;
- break;
- case CONF_ADJ_ABOVE:
- slp[count].where = PosAbove;
- break;
- case CONF_ADJ_BELOW:
- slp[count].where = PosBelow;
- break;
- case CONF_ADJ_RELATIVE:
- slp[count].where = PosRelative;
- break;
- }
- count++;
- adjp = (XF86ConfAdjacencyPtr)adjp->list.next;
- }
-
- /* XXX Need to tie down the upper left screen. */
-
- /* Fill in the refscreen and top/bottom/left/right values */
- for (i = 0; i < count; i++) {
- for (j = 0; j < count; j++) {
- if (slp[i].refname &&
- strcmp(slp[i].refname, slp[j].screen->id) == 0) {
- slp[i].refscreen = slp[j].screen;
- }
- if (slp[i].topname &&
- strcmp(slp[i].topname, slp[j].screen->id) == 0) {
- slp[i].top = slp[j].screen;
- }
- if (slp[i].bottomname &&
- strcmp(slp[i].bottomname, slp[j].screen->id) == 0) {
- slp[i].bottom = slp[j].screen;
- }
- if (slp[i].leftname &&
- strcmp(slp[i].leftname, slp[j].screen->id) == 0) {
- slp[i].left = slp[j].screen;
- }
- if (slp[i].rightname &&
- strcmp(slp[i].rightname, slp[j].screen->id) == 0) {
- slp[i].right = slp[j].screen;
- }
- }
- if (slp[i].where != PosObsolete
- && slp[i].where != PosAbsolute
- && !slp[i].refscreen) {
- xf86Msg(X_ERROR,"Screen %s doesn't exist: deleting placement\n",
- slp[i].refname);
- slp[i].where = PosAbsolute;
- slp[i].x = 0;
- slp[i].y = 0;
- }
- }
-
-#ifdef LAYOUT_DEBUG
- ErrorF("Layout \"%s\"\n", conf_layout->lay_identifier);
- for (i = 0; i < count; i++) {
- ErrorF("Screen: \"%s\" (%d):\n", slp[i].screen->id,
- slp[i].screen->screennum);
- switch (slp[i].where) {
- case PosObsolete:
- ErrorF("\tObsolete format: \"%s\" \"%s\" \"%s\" \"%s\"\n",
- slp[i].top, slp[i].bottom, slp[i].left, slp[i].right);
- break;
- case PosAbsolute:
- if (slp[i].x == -1)
- if (slp[i].screen->screennum == 0)
- ErrorF("\tImplicitly left-most\n");
- else
- ErrorF("\tImplicitly right of screen %d\n",
- slp[i].screen->screennum - 1);
- else
- ErrorF("\t%d %d\n", slp[i].x, slp[i].y);
- break;
- case PosRightOf:
- ErrorF("\tRight of \"%s\"\n", slp[i].refscreen->id);
- break;
- case PosLeftOf:
- ErrorF("\tLeft of \"%s\"\n", slp[i].refscreen->id);
- break;
- case PosAbove:
- ErrorF("\tAbove \"%s\"\n", slp[i].refscreen->id);
- break;
- case PosBelow:
- ErrorF("\tBelow \"%s\"\n", slp[i].refscreen->id);
- break;
- case PosRelative:
- ErrorF("\t%d %d relative to \"%s\"\n", slp[i].x, slp[i].y,
- slp[i].refscreen->id);
- break;
- }
- }
-#endif
- /*
- * Count the number of inactive devices.
- */
- count = 0;
- idp = conf_layout->lay_inactive_lst;
- while (idp) {
- count++;
- idp = (XF86ConfInactivePtr)idp->list.next;
- }
-#ifdef DEBUG
- ErrorF("Found %d inactive devices in the layout section %s",
- count, conf_layout->lay_identifier);
-#endif
- gdp = xnfalloc((count + 1) * sizeof(GDevRec));
- gdp[count].identifier = NULL;
- idp = conf_layout->lay_inactive_lst;
- count = 0;
- while (idp) {
- if (!configDevice(&gdp[count], idp->inactive_device, FALSE))
- return FALSE;
- count++;
- idp = (XF86ConfInactivePtr)idp->list.next;
- }
- /*
- * Count the number of input devices.
- */
- count = 0;
- irp = conf_layout->lay_input_lst;
- while (irp) {
- count++;
- irp = (XF86ConfInputrefPtr)irp->list.next;
- }
-#ifdef DEBUG
- ErrorF("Found %d input devices in the layout section %s",
- count, conf_layout->lay_identifier);
-#endif
- indp = xnfalloc((count + 1) * sizeof(IDevRec));
- indp[count].identifier = NULL;
- irp = conf_layout->lay_input_lst;
- count = 0;
- while (irp) {
- if (!configInput(&indp[count], irp->iref_inputdev, X_CONFIG))
- return FALSE;
- indp[count].extraOptions = irp->iref_option_lst;
- count++;
- irp = (XF86ConfInputrefPtr)irp->list.next;
- }
- servlayoutp->id = conf_layout->lay_identifier;
- servlayoutp->screens = slp;
- servlayoutp->inactives = gdp;
- servlayoutp->inputs = indp;
- servlayoutp->options = conf_layout->lay_option_lst;
- from = X_DEFAULT;
-
- if (!checkCoreInputDevices(servlayoutp, FALSE))
- return FALSE;
- return TRUE;
-}
-
-/*
- * No layout section, so find the first Screen section and set that up as
- * the only active screen.
- */
-static Bool
-configImpliedLayout(serverLayoutPtr servlayoutp, XF86ConfScreenPtr conf_screen)
-{
- MessageType from;
- XF86ConfScreenPtr s;
- screenLayoutPtr slp;
- IDevPtr indp;
-
- if (!servlayoutp)
- return FALSE;
-
- if (conf_screen == NULL) {
- xf86ConfigError("No Screen sections present\n");
- return FALSE;
- }
-
- /*
- * which screen section is the active one?
- *
- * If there is a -screen option, use that one, otherwise use the first
- * one.
- */
-
- from = X_CONFIG;
- if (xf86ScreenName != NULL) {
- if ((s = xf86findScreen(xf86ScreenName, conf_screen)) == NULL) {
- xf86Msg(X_ERROR, "No Screen section called \"%s\"\n",
- xf86ScreenName);
- return FALSE;
- }
- conf_screen = s;
- from = X_CMDLINE;
- }
-
- /* We have exactly one screen */
-
- slp = xnfcalloc(1, 2 * sizeof(screenLayoutRec));
- slp[0].screen = xnfcalloc(1, sizeof(confScreenRec));
- slp[1].screen = NULL;
- if (!configScreen(slp[0].screen, conf_screen, 0, from))
- return FALSE;
- servlayoutp->id = "(implicit)";
- servlayoutp->screens = slp;
- servlayoutp->inactives = xnfcalloc(1, sizeof(GDevRec));
- servlayoutp->options = NULL;
- /* Set up an empty input device list, then look for some core devices. */
- indp = xnfalloc(sizeof(IDevRec));
- indp->identifier = NULL;
- servlayoutp->inputs = indp;
- if (!checkCoreInputDevices(servlayoutp, TRUE))
- return FALSE;
-
- return TRUE;
-}
-
-static Bool
-configXvAdaptor(confXvAdaptorPtr adaptor, XF86ConfVideoAdaptorPtr conf_adaptor)
-{
- int count = 0;
- XF86ConfVideoPortPtr conf_port;
-
- xf86Msg(X_CONFIG, "| |-->VideoAdaptor \"%s\"\n",
- conf_adaptor->va_identifier);
- adaptor->identifier = conf_adaptor->va_identifier;
- adaptor->options = conf_adaptor->va_option_lst;
- if (conf_adaptor->va_busid || conf_adaptor->va_driver) {
- xf86Msg(X_CONFIG, "| | Unsupported device type, skipping entry\n");
- return FALSE;
- }
-
- /*
- * figure out how many videoport subsections there are and fill them in
- */
- conf_port = conf_adaptor->va_port_lst;
- while(conf_port) {
- count++;
- conf_port = (XF86ConfVideoPortPtr)conf_port->list.next;
- }
- adaptor->ports = xnfalloc((count) * sizeof(confXvPortRec));
- adaptor->numports = count;
- count = 0;
- conf_port = conf_adaptor->va_port_lst;
- while(conf_port) {
- adaptor->ports[count].identifier = conf_port->vp_identifier;
- adaptor->ports[count].options = conf_port->vp_option_lst;
- count++;
- conf_port = (XF86ConfVideoPortPtr)conf_port->list.next;
- }
-
- return TRUE;
-}
-
-static Bool
-configScreen(confScreenPtr screenp, XF86ConfScreenPtr conf_screen, int scrnum,
- MessageType from)
-{
- int count = 0;
- XF86ConfDisplayPtr dispptr;
- XF86ConfAdaptorLinkPtr conf_adaptor;
- Bool defaultMonitor = FALSE;
-
- xf86Msg(from, "|-->Screen \"%s\" (%d)\n", conf_screen->scrn_identifier,
- scrnum);
- /*
- * now we fill in the elements of the screen
- */
- screenp->id = conf_screen->scrn_identifier;
- screenp->screennum = scrnum;
- screenp->defaultdepth = conf_screen->scrn_defaultdepth;
- screenp->defaultbpp = conf_screen->scrn_defaultbpp;
- screenp->defaultfbbpp = conf_screen->scrn_defaultfbbpp;
- screenp->monitor = xnfcalloc(1, sizeof(MonRec));
- /* If no monitor is specified, create a default one. */
- if (!conf_screen->scrn_monitor) {
- XF86ConfMonitorRec defMon;
-
- bzero(&defMon, sizeof(defMon));
- defMon.mon_identifier = "<default monitor>";
- /*
- * TARGET_REFRESH_RATE may be defined to effectively limit the
- * default resolution to the largest that has a "good" refresh
- * rate.
- */
-#ifdef TARGET_REFRESH_RATE
- defMon.mon_option_lst = xf86ReplaceRealOption(defMon.mon_option_lst,
- "TargetRefresh",
- TARGET_REFRESH_RATE);
-#endif
- if (!configMonitor(screenp->monitor, &defMon))
- return FALSE;
- defaultMonitor = TRUE;
- } else {
- if (!configMonitor(screenp->monitor,conf_screen->scrn_monitor))
- return FALSE;
- }
- screenp->device = xnfcalloc(1, sizeof(GDevRec));
- configDevice(screenp->device,conf_screen->scrn_device, TRUE);
- screenp->device->myScreenSection = screenp;
- screenp->options = conf_screen->scrn_option_lst;
-
- /*
- * figure out how many display subsections there are and fill them in
- */
- dispptr = conf_screen->scrn_display_lst;
- while(dispptr) {
- count++;
- dispptr = (XF86ConfDisplayPtr)dispptr->list.next;
- }
- screenp->displays = xnfalloc((count) * sizeof(DispRec));
- screenp->numdisplays = count;
- count = 0;
- dispptr = conf_screen->scrn_display_lst;
- while(dispptr) {
- configDisplay(&(screenp->displays[count]),dispptr);
- count++;
- dispptr = (XF86ConfDisplayPtr)dispptr->list.next;
- }
-
- /*
- * figure out how many videoadaptor references there are and fill them in
- */
- conf_adaptor = conf_screen->scrn_adaptor_lst;
- while(conf_adaptor) {
- count++;
- conf_adaptor = (XF86ConfAdaptorLinkPtr)conf_adaptor->list.next;
- }
- screenp->xvadaptors = xnfalloc((count) * sizeof(confXvAdaptorRec));
- screenp->numxvadaptors = 0;
- conf_adaptor = conf_screen->scrn_adaptor_lst;
- while(conf_adaptor) {
- if (configXvAdaptor(&(screenp->xvadaptors[screenp->numxvadaptors]),
- conf_adaptor->al_adaptor))
- screenp->numxvadaptors++;
- conf_adaptor = (XF86ConfAdaptorLinkPtr)conf_adaptor->list.next;
- }
-
- if (defaultMonitor) {
- xf86Msg(X_WARNING, "No monitor specified for screen \"%s\".\n"
- "\tUsing a default monitor configuration.\n", screenp->id);
- }
- return TRUE;
-}
-
-static Bool
-configMonitor(MonPtr monitorp, XF86ConfMonitorPtr conf_monitor)
-{
- int count;
- DisplayModePtr mode,last = NULL;
- XF86ConfModeLinePtr cmodep;
- XF86ConfModesPtr modes;
- XF86ConfModesLinkPtr modeslnk = conf_monitor->mon_modes_sect_lst;
- Gamma zeros = {0.0, 0.0, 0.0};
- float badgamma = 0.0;
-
- xf86Msg(X_CONFIG, "| |-->Monitor \"%s\"\n",
- conf_monitor->mon_identifier);
- monitorp->id = conf_monitor->mon_identifier;
- monitorp->vendor = conf_monitor->mon_vendor;
- monitorp->model = conf_monitor->mon_modelname;
- monitorp->Modes = NULL;
- monitorp->Last = NULL;
- monitorp->gamma = zeros;
- monitorp->widthmm = conf_monitor->mon_width;
- monitorp->heightmm = conf_monitor->mon_height;
- monitorp->options = conf_monitor->mon_option_lst;
-
- /*
- * fill in the monitor structure
- */
- for( count = 0 ;
- count < conf_monitor->mon_n_hsync && count < MAX_HSYNC;
- count++) {
- monitorp->hsync[count].hi = conf_monitor->mon_hsync[count].hi;
- monitorp->hsync[count].lo = conf_monitor->mon_hsync[count].lo;
- }
- monitorp->nHsync = count;
- for( count = 0 ;
- count < conf_monitor->mon_n_vrefresh && count < MAX_VREFRESH;
- count++) {
- monitorp->vrefresh[count].hi = conf_monitor->mon_vrefresh[count].hi;
- monitorp->vrefresh[count].lo = conf_monitor->mon_vrefresh[count].lo;
- }
- monitorp->nVrefresh = count;
-
- /*
- * first we collect the mode lines from the UseModes directive
- */
- while(modeslnk)
- {
- modes = xf86findModes (modeslnk->ml_modes_str,
- xf86configptr->conf_modes_lst);
- modeslnk->ml_modes = modes;
-
-
- /* now add the modes found in the modes
- section to the list of modes for this
- monitor unless it has been added before
- because we are reusing the same section
- for another screen */
- if (xf86itemNotSublist(
- (GenericListPtr)conf_monitor->mon_modeline_lst,
- (GenericListPtr)modes->mon_modeline_lst)) {
- conf_monitor->mon_modeline_lst = (XF86ConfModeLinePtr)
- xf86addListItem(
- (GenericListPtr)conf_monitor->mon_modeline_lst,
- (GenericListPtr)modes->mon_modeline_lst);
- }
- modeslnk = modeslnk->list.next;
- }
-
- /*
- * we need to hook in the mode lines now
- * here both data structures use lists, only our internal one
- * is double linked
- */
- cmodep = conf_monitor->mon_modeline_lst;
- while( cmodep ) {
- mode = xnfalloc(sizeof(DisplayModeRec));
- memset(mode,'\0',sizeof(DisplayModeRec));
- mode->type = 0;
- mode->Clock = cmodep->ml_clock;
- mode->HDisplay = cmodep->ml_hdisplay;
- mode->HSyncStart = cmodep->ml_hsyncstart;
- mode->HSyncEnd = cmodep->ml_hsyncend;
- mode->HTotal = cmodep->ml_htotal;
- mode->VDisplay = cmodep->ml_vdisplay;
- mode->VSyncStart = cmodep->ml_vsyncstart;
- mode->VSyncEnd = cmodep->ml_vsyncend;
- mode->VTotal = cmodep->ml_vtotal;
- mode->Flags = cmodep->ml_flags;
- mode->HSkew = cmodep->ml_hskew;
- mode->VScan = cmodep->ml_vscan;
- mode->name = xnfstrdup(cmodep->ml_identifier);
- if( last ) {
- mode->prev = last;
- last->next = mode;
- }
- else {
- /*
- * this is the first mode
- */
- monitorp->Modes = mode;
- mode->prev = NULL;
- }
- last = mode;
- cmodep = (XF86ConfModeLinePtr)cmodep->list.next;
- }
- if(last){
- last->next = NULL;
- }
- monitorp->Last = last;
-
- /* add the (VESA) default modes */
- if (! addDefaultModes(monitorp) )
- return FALSE;
-
- if (conf_monitor->mon_gamma_red > GAMMA_ZERO)
- monitorp->gamma.red = conf_monitor->mon_gamma_red;
- if (conf_monitor->mon_gamma_green > GAMMA_ZERO)
- monitorp->gamma.green = conf_monitor->mon_gamma_green;
- if (conf_monitor->mon_gamma_blue > GAMMA_ZERO)
- monitorp->gamma.blue = conf_monitor->mon_gamma_blue;
-
- /* Check that the gamma values are within range */
- if (monitorp->gamma.red > GAMMA_ZERO &&
- (monitorp->gamma.red < GAMMA_MIN ||
- monitorp->gamma.red > GAMMA_MAX)) {
- badgamma = monitorp->gamma.red;
- } else if (monitorp->gamma.green > GAMMA_ZERO &&
- (monitorp->gamma.green < GAMMA_MIN ||
- monitorp->gamma.green > GAMMA_MAX)) {
- badgamma = monitorp->gamma.green;
- } else if (monitorp->gamma.blue > GAMMA_ZERO &&
- (monitorp->gamma.blue < GAMMA_MIN ||
- monitorp->gamma.blue > GAMMA_MAX)) {
- badgamma = monitorp->gamma.blue;
- }
- if (badgamma > GAMMA_ZERO) {
- xf86ConfigError("Gamma value %.f is out of range (%.2f - %.1f)\n",
- badgamma, GAMMA_MIN, GAMMA_MAX);
- return FALSE;
- }
-
- return TRUE;
-}
-
-static int
-lookupVisual(const char *visname)
-{
- int i;
-
- if (!visname || !*visname)
- return -1;
-
- for (i = 0; i <= DirectColor; i++) {
- if (!xf86nameCompare(visname, xf86VisualNames[i]))
- break;
- }
-
- if (i <= DirectColor)
- return i;
-
- return -1;
-}
-
-
-static Bool
-configDisplay(DispPtr displayp, XF86ConfDisplayPtr conf_display)
-{
- int count = 0;
- XF86ModePtr modep;
-
- displayp->frameX0 = conf_display->disp_frameX0;
- displayp->frameY0 = conf_display->disp_frameY0;
- displayp->virtualX = conf_display->disp_virtualX;
- displayp->virtualY = conf_display->disp_virtualY;
- displayp->depth = conf_display->disp_depth;
- displayp->fbbpp = conf_display->disp_bpp;
- displayp->weight.red = conf_display->disp_weight.red;
- displayp->weight.green = conf_display->disp_weight.green;
- displayp->weight.blue = conf_display->disp_weight.blue;
- displayp->blackColour.red = conf_display->disp_black.red;
- displayp->blackColour.green = conf_display->disp_black.green;
- displayp->blackColour.blue = conf_display->disp_black.blue;
- displayp->whiteColour.red = conf_display->disp_white.red;
- displayp->whiteColour.green = conf_display->disp_white.green;
- displayp->whiteColour.blue = conf_display->disp_white.blue;
- displayp->options = conf_display->disp_option_lst;
- if (conf_display->disp_visual) {
- displayp->defaultVisual = lookupVisual(conf_display->disp_visual);
- if (displayp->defaultVisual == -1) {
- xf86ConfigError("Invalid visual name: \"%s\"",
- conf_display->disp_visual);
- return FALSE;
- }
- } else {
- displayp->defaultVisual = -1;
- }
-
- /*
- * now hook in the modes
- */
- modep = conf_display->disp_mode_lst;
- while(modep) {
- count++;
- modep = (XF86ModePtr)modep->list.next;
- }
- displayp->modes = xnfalloc((count+1) * sizeof(char*));
- modep = conf_display->disp_mode_lst;
- count = 0;
- while(modep) {
- displayp->modes[count] = modep->mode_name;
- count++;
- modep = (XF86ModePtr)modep->list.next;
- }
- displayp->modes[count] = NULL;
-
- return TRUE;
-}
-
-static Bool
-configDevice(GDevPtr devicep, XF86ConfDevicePtr conf_device, Bool active)
-{
- int i;
-
- if (active)
- xf86Msg(X_CONFIG, "| |-->Device \"%s\"\n",
- conf_device->dev_identifier);
- else
- xf86Msg(X_CONFIG, "|-->Inactive Device \"%s\"\n",
- conf_device->dev_identifier);
-
- devicep->identifier = conf_device->dev_identifier;
- devicep->vendor = conf_device->dev_vendor;
- devicep->board = conf_device->dev_board;
- devicep->chipset = conf_device->dev_chipset;
- devicep->ramdac = conf_device->dev_ramdac;
- devicep->driver = conf_device->dev_driver;
- devicep->active = active;
- devicep->videoRam = conf_device->dev_videoram;
- devicep->BiosBase = conf_device->dev_bios_base;
- devicep->MemBase = conf_device->dev_mem_base;
- devicep->IOBase = conf_device->dev_io_base;
- devicep->clockchip = conf_device->dev_clockchip;
- devicep->busID = conf_device->dev_busid;
- devicep->textClockFreq = conf_device->dev_textclockfreq;
- devicep->chipID = conf_device->dev_chipid;
- devicep->chipRev = conf_device->dev_chiprev;
- devicep->options = conf_device->dev_option_lst;
- devicep->irq = conf_device->dev_irq;
- devicep->screen = conf_device->dev_screen;
-
- for (i = 0; i < MAXDACSPEEDS; i++) {
- if (i < CONF_MAXDACSPEEDS)
- devicep->dacSpeeds[i] = conf_device->dev_dacSpeeds[i];
- else
- devicep->dacSpeeds[i] = 0;
- }
- devicep->numclocks = conf_device->dev_clocks;
- if (devicep->numclocks > MAXCLOCKS)
- devicep->numclocks = MAXCLOCKS;
- for (i = 0; i < devicep->numclocks; i++) {
- devicep->clock[i] = conf_device->dev_clock[i];
- }
- devicep->claimed = FALSE;
-
- return TRUE;
-}
-
-#ifdef XF86DRI
-static Bool
-configDRI(XF86ConfDRIPtr drip)
-{
- int count = 0;
- XF86ConfBuffersPtr bufs;
- int i;
- struct group *grp;
-
- xf86ConfigDRI.group = -1;
- xf86ConfigDRI.mode = 0;
- xf86ConfigDRI.bufs_count = 0;
- xf86ConfigDRI.bufs = NULL;
-
- if (drip) {
- if (drip->dri_group_name) {
- if ((grp = getgrnam(drip->dri_group_name)))
- xf86ConfigDRI.group = grp->gr_gid;
- } else {
- if (drip->dri_group >= 0)
- xf86ConfigDRI.group = drip->dri_group;
- }
- xf86ConfigDRI.mode = drip->dri_mode;
- for (bufs = drip->dri_buffers_lst; bufs; bufs = bufs->list.next)
- ++count;
-
- xf86ConfigDRI.bufs_count = count;
- xf86ConfigDRI.bufs = xnfalloc(count * sizeof(*xf86ConfigDRI.bufs));
-
- for (i = 0, bufs = drip->dri_buffers_lst;
- i < count;
- i++, bufs = bufs->list.next) {
-
- xf86ConfigDRI.bufs[i].count = bufs->buf_count;
- xf86ConfigDRI.bufs[i].size = bufs->buf_size;
- /* FIXME: Flags not implemented. These
- could be used, for example, to specify a
- contiguous block and/or write-combining
- cache policy. */
- xf86ConfigDRI.bufs[i].flags = 0;
- }
- }
-
- return TRUE;
-}
-#endif
-
-static Bool
-configExtensions(XF86ConfExtensionsPtr conf_ext)
-{
- XF86OptionPtr o;
-
- /* Extension enable/disable in miinitext.c */
- extern Bool EnableDisableExtension(char *name, Bool enable);
-
- if (conf_ext && conf_ext->ext_option_lst) {
- for (o = conf_ext->ext_option_lst; o; o = xf86NextOption(o)) {
- char *name = xf86OptionName(o);
- char *val = xf86OptionValue(o);
- char *n;
- Bool enable = TRUE;
-
- /* Handle "No<ExtensionName>" */
- n = xf86NormalizeName(name);
- if (strncmp(n, "no", 2) == 0) {
- name += 2;
- enable = FALSE;
- }
-
- if (!val ||
- xf86NameCmp(val, "enable") == 0 ||
- xf86NameCmp(val, "enabled") == 0 ||
- xf86NameCmp(val, "on") == 0 ||
- xf86NameCmp(val, "1") == 0 ||
- xf86NameCmp(val, "yes") == 0 ||
- xf86NameCmp(val, "true") == 0) {
- /* NOTHING NEEDED -- enabling is handled below */
- } else if (xf86NameCmp(val, "disable") == 0 ||
- xf86NameCmp(val, "disabled") == 0 ||
- xf86NameCmp(val, "off") == 0 ||
- xf86NameCmp(val, "0") == 0 ||
- xf86NameCmp(val, "no") == 0 ||
- xf86NameCmp(val, "false") == 0) {
- enable = !enable;
- } else {
- xf86Msg(X_ERROR,
- "%s is not a valid value for the Extension option\n",
- val);
- return FALSE;
- }
-
- if (EnableDisableExtension(name, enable)) {
- xf86Msg(X_CONFIG, "Extension \"%s\" is %s\n",
- name, enable ? "enabled" : "disabled");
- } else {
- xf86Msg(X_WARNING, "Ignoring unrecognized extension \"%s\"\n",
- name);
- }
- }
- }
-
- return TRUE;
-}
-
-static Bool
-configInput(IDevPtr inputp, XF86ConfInputPtr conf_input, MessageType from)
-{
- xf86Msg(from, "|-->Input Device \"%s\"\n", conf_input->inp_identifier);
- inputp->identifier = conf_input->inp_identifier;
- inputp->driver = conf_input->inp_driver;
- inputp->commonOptions = conf_input->inp_option_lst;
- inputp->extraOptions = NULL;
-
- /* XXX This is required until the keyboard driver is converted */
- if (!xf86NameCmp(inputp->driver, "keyboard"))
- return configInputKbd(inputp);
-
- return TRUE;
-}
-
-static Bool
-modeIsPresent(char * modename,MonPtr monitorp)
-{
- DisplayModePtr knownmodes = monitorp->Modes;
-
- /* all I can think of is a linear search... */
- while(knownmodes != NULL)
- {
- if(!strcmp(modename,knownmodes->name) &&
- !(knownmodes->type & M_T_DEFAULT))
- return TRUE;
- knownmodes = knownmodes->next;
- }
- return FALSE;
-}
-
-static Bool
-addDefaultModes(MonPtr monitorp)
-{
- DisplayModePtr mode;
- DisplayModePtr last = monitorp->Last;
- int i = 0;
-
- while (xf86DefaultModes[i].name != NULL)
- {
- if ( ! modeIsPresent(xf86DefaultModes[i].name,monitorp) )
- do
- {
- mode = xnfalloc(sizeof(DisplayModeRec));
- memcpy(mode,&xf86DefaultModes[i],sizeof(DisplayModeRec));
- if (xf86DefaultModes[i].name)
- mode->name = xnfstrdup(xf86DefaultModes[i].name);
- if( last ) {
- mode->prev = last;
- last->next = mode;
- }
- else {
- /* this is the first mode */
- monitorp->Modes = mode;
- mode->prev = NULL;
- }
- last = mode;
- i++;
- }
- while((xf86DefaultModes[i].name != NULL) &&
- (!strcmp(xf86DefaultModes[i].name,xf86DefaultModes[i-1].name)));
- else
- i++;
- }
- monitorp->Last = last;
-
- return TRUE;
-}
-
-/*
- * load the config file and fill the global data structure
- */
-ConfigStatus
-xf86HandleConfigFile(Bool autoconfig)
-{
- const char *filename;
- char *searchpath;
- MessageType from = X_DEFAULT;
- char *scanptr;
- Bool singlecard = 0;
-
- if (!autoconfig) {
- if (getuid() == 0)
- searchpath = ROOT_CONFIGPATH;
- else
- searchpath = USER_CONFIGPATH;
-
- if (xf86ConfigFile)
- from = X_CMDLINE;
-
- filename = xf86openConfigFile(searchpath, xf86ConfigFile, PROJECTROOT);
- if (filename) {
- xf86MsgVerb(from, 0, "Using config file: \"%s\"\n", filename);
- xf86ConfigFile = xnfstrdup(filename);
- } else {
- xf86Msg(X_ERROR, "Unable to locate/open config file");
- if (xf86ConfigFile)
- xf86ErrorFVerb(0, ": \"%s\"", xf86ConfigFile);
- xf86ErrorFVerb(0, "\n");
- return CONFIG_NOFILE;
- }
- }
-
- if ((xf86configptr = xf86readConfigFile ()) == NULL) {
- xf86Msg(X_ERROR, "Problem parsing the config file\n");
- return CONFIG_PARSE_ERROR;
- }
- xf86closeConfigFile ();
-
- /* Initialise a few things. */
-
- /*
- * now we convert part of the information contained in the parser
- * structures into our own structures.
- * The important part here is to figure out which Screen Sections
- * in the XF86Config file are active so that we can piece together
- * the modes that we need later down the road.
- * And while we are at it, we'll decode the rest of the stuff as well
- */
-
- /* First check if a layout section is present, and if it is valid. */
-
- if (xf86configptr->conf_layout_lst == NULL || xf86ScreenName != NULL) {
- if (xf86ScreenName == NULL) {
- xf86Msg(X_WARNING,
- "No Layout section. Using the first Screen section.\n");
- }
- if (!configImpliedLayout(&xf86ConfigLayout,
- xf86configptr->conf_screen_lst)) {
- xf86Msg(X_ERROR, "Unable to determine the screen layout\n");
- return CONFIG_PARSE_ERROR;
- }
- } else {
- if (xf86configptr->conf_flags != NULL) {
- char *dfltlayout = NULL;
- pointer optlist = xf86configptr->conf_flags->flg_option_lst;
-
- if (optlist && xf86FindOption(optlist, "defaultserverlayout"))
- dfltlayout = xf86SetStrOption(optlist, "defaultserverlayout", NULL);
- if (!configLayout(&xf86ConfigLayout, xf86configptr->conf_layout_lst,
- dfltlayout)) {
- xf86Msg(X_ERROR, "Unable to determine the screen layout\n");
- return CONFIG_PARSE_ERROR;
- }
- } else {
- if (!configLayout(&xf86ConfigLayout, xf86configptr->conf_layout_lst,
- NULL)) {
- xf86Msg(X_ERROR, "Unable to determine the screen layout\n");
- return CONFIG_PARSE_ERROR;
- }
- }
- }
-
- xf86ProcessOptions(-1, xf86ConfigLayout.options, LayoutOptions);
-
- if ((scanptr = xf86GetOptValString(LayoutOptions, LAYOUT_ISOLATEDEVICE))) {
- ; /* IsolateDevice specified; overrides SingleCard */
- } else {
- xf86GetOptValBool(LayoutOptions, LAYOUT_SINGLECARD, &singlecard);
- if (singlecard)
- scanptr = xf86ConfigLayout.screens->screen->device->busID;
- }
- if (scanptr) {
- int bus, device, func, stroffset = 0;
- if (strncmp(scanptr, "PCI:", 4) != 0) {
- xf86Msg(X_WARNING, "Bus types other than PCI not yet isolable.\n"
- "\tIgnoring IsolateDevice option.\n");
- } else if (sscanf(scanptr, "PCI:%d:%d:%d", &bus, &device, &func) == 3) {
- xf86IsolateDevice.bus = bus;
- xf86IsolateDevice.device = device;
- xf86IsolateDevice.func = func;
- xf86Msg(X_INFO,
- "Isolating PCI bus \"%d:%d:%d\"\n", bus, device, func);
- }
- }
-
- /* Now process everything else */
-
- if (!configFiles(xf86configptr->conf_files) ||
- !configServerFlags(xf86configptr->conf_flags,
- xf86ConfigLayout.options) ||
- !configExtensions(xf86configptr->conf_extensions)
-#ifdef XF86DRI
- || !configDRI(xf86configptr->conf_dri)
-#endif
- ) {
- ErrorF ("Problem when converting the config data structures\n");
- return CONFIG_PARSE_ERROR;
- }
-
- /*
- * Handle some command line options that can override some of the
- * ServerFlags settings.
- */
-#ifdef XF86VIDMODE
- if (xf86VidModeDisabled)
- xf86Info.vidModeEnabled = FALSE;
- if (xf86VidModeAllowNonLocal)
- xf86Info.vidModeAllowNonLocal = TRUE;
-#endif
-
-#ifdef XF86MISC
- if (xf86MiscModInDevDisabled)
- xf86Info.miscModInDevEnabled = FALSE;
- if (xf86MiscModInDevAllowNonLocal)
- xf86Info.miscModInDevAllowNonLocal = TRUE;
-#endif
-
- if (xf86AllowMouseOpenFail)
- xf86Info.allowMouseOpenFail = TRUE;
-
- return CONFIG_OK;
-}
-
-
-/* These make the equivalent parser functions visible to the common layer. */
-Bool
-xf86PathIsAbsolute(const char *path)
-{
- return (xf86pathIsAbsolute(path) != 0);
-}
-
-Bool
-xf86PathIsSafe(const char *path)
-{
- return (xf86pathIsSafe(path) != 0);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Config.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Config.h
deleted file mode 100644
index 77b25ed32..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Config.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Config.h,v 1.7 2003/10/08 14:58:27 dawes Exp $ */
-
-/*
- * Copyright (c) 1997-2000 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _xf86_config_h
-#define _xf86_config_h
-
-#ifdef HAVE_PARSER_DECLS
-/*
- * global structure that holds the result of parsing the config file
- */
-extern XF86ConfigPtr xf86configptr;
-#endif
-
-typedef enum _ConfigStatus {
- CONFIG_OK = 0,
- CONFIG_PARSE_ERROR,
- CONFIG_NOFILE
-} ConfigStatus;
-
-/*
- * prototypes
- */
-char ** xf86ModulelistFromConfig(pointer **);
-char ** xf86DriverlistFromConfig(void);
-char ** xf86DriverlistFromCompile(void);
-char ** xf86InputDriverlistFromConfig(void);
-char ** xf86InputDriverlistFromCompile(void);
-Bool xf86BuiltinInputDriver(const char *);
-ConfigStatus xf86HandleConfigFile(Bool);
-
-Bool xf86AutoConfig(void);
-
-#endif /* _xf86_config_h */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Configure.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Configure.c
deleted file mode 100644
index 208961f6a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Configure.c
+++ /dev/null
@@ -1,1049 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Configure.c,v 3.80 2003/10/08 14:58:27 dawes Exp $ */
-/*
- * Copyright 2000-2002 by Alan Hourihane, Flint Mountain, North Wales.
- *
- * 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, and that the name of Alan Hourihane not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Alan Hourihane makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Alan Hourihane, alanh@fairlite.demon.co.uk
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "os.h"
-#ifdef XFree86LOADER
-#include "loaderProcs.h"
-#endif
-#include "xf86.h"
-#include "xf86Config.h"
-#include "xf86_OSlib.h"
-#include "xf86Priv.h"
-#include "xf86PciData.h"
-#define IN_XSERVER
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-#include "vbe.h"
-#include "xf86DDC.h"
-#if defined(__sparc__) && !defined(__OpenBSD__)
-#include "xf86Bus.h"
-#include "xf86Sbus.h"
-#endif
-#include "globals.h"
-
-typedef struct _DevToConfig {
- GDevRec GDev;
- pciVideoPtr pVideo;
-#if defined(__sparc__) && !defined(__OpenBSD__)
- sbusDevicePtr sVideo;
-#endif
- int iDriver;
-} DevToConfigRec, *DevToConfigPtr;
-
-static DevToConfigPtr DevToConfig = NULL;
-static int nDevToConfig = 0, CurrentDriver;
-
-xf86MonPtr ConfiguredMonitor;
-Bool xf86DoConfigurePass1 = TRUE;
-Bool foundMouse = FALSE;
-
-#if defined(__UNIXOS2__)
-#define DFLT_MOUSE_DEV "mouse$"
-#define DFLT_MOUSE_PROTO "OS2Mouse"
-#elif defined(__SCO__)
-static char *DFLT_MOUSE_PROTO = "OSMouse";
-#elif defined(__UNIXWARE__)
-static char *DFLT_MOUSE_PROTO = "Xqueue";
-static char *DFLT_MOUSE_DEV = "/dev/mouse";
-#elif defined(QNX4)
-static char *DFLT_MOUSE_PROTO = "OSMouse";
-static char *DFLT_MOUSE_DEV = "/dev/mouse";
-#elif defined(__QNXNTO__)
-static char *DFLT_MOUSE_PROTO = "OSMouse";
-static char *DFLT_MOUSE_DEV = "/dev/devi/mouse0";
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-static char *DFLT_MOUSE_DEV = "/dev/sysmouse";
-static char *DFLT_MOUSE_PROTO = "auto";
-#else
-static char *DFLT_MOUSE_DEV = "/dev/mouse";
-static char *DFLT_MOUSE_PROTO = "auto";
-#endif
-
-/*
- * This is called by the driver, either through xf86Match???Instances() or
- * directly. We allocate a GDevRec and fill it in as much as we can, letting
- * the caller fill in the rest and/or change it as it sees fit.
- */
-GDevPtr
-xf86AddBusDeviceToConfigure(const char *driver, BusType bus, void *busData, int chipset)
-{
- int i, j;
- pciVideoPtr pVideo = NULL;
- Bool isPrimary = FALSE;
-
- if (xf86DoProbe || !xf86DoConfigure || !xf86DoConfigurePass1)
- return NULL;
-
- /* Check for duplicates */
- switch (bus) {
- case BUS_PCI:
- pVideo = (pciVideoPtr) busData;
- for (i = 0; i < nDevToConfig; i++)
- if (DevToConfig[i].pVideo &&
- (DevToConfig[i].pVideo->bus == pVideo->bus) &&
- (DevToConfig[i].pVideo->device == pVideo->device) &&
- (DevToConfig[i].pVideo->func == pVideo->func))
- return NULL;
- isPrimary = xf86IsPrimaryPci(pVideo);
- break;
- case BUS_ISA:
- /*
- * This needs to be revisited as it doesn't allow for non-PCI
- * multihead.
- */
- if (!xf86IsPrimaryIsa())
- return NULL;
- isPrimary = TRUE;
- for (i = 0; i < nDevToConfig; i++)
- if (!DevToConfig[i].pVideo)
- return NULL;
- break;
-#if defined(__sparc__) && !defined(__OpenBSD__)
- case BUS_SBUS:
- for (i = 0; i < nDevToConfig; i++)
- if (DevToConfig[i].sVideo &&
- DevToConfig[i].sVideo->fbNum == ((sbusDevicePtr) busData)->fbNum)
- return NULL;
- break;
-#endif
- default:
- return NULL;
- }
-
- /* Allocate new structure occurrence */
- i = nDevToConfig++;
- DevToConfig =
- xnfrealloc(DevToConfig, nDevToConfig * sizeof(DevToConfigRec));
-#if 1 /* Doesn't work when a driver detects more than one adapter */
- if ((i > 0) && isPrimary) {
- memmove(DevToConfig + 1,DevToConfig,
- (nDevToConfig - 1) * sizeof(DevToConfigRec));
- i = 0;
- }
-#endif
- memset(DevToConfig + i, 0, sizeof(DevToConfigRec));
-
-# define NewDevice DevToConfig[i]
-
- NewDevice.GDev.chipID = NewDevice.GDev.chipRev = NewDevice.GDev.irq = -1;
-
- NewDevice.iDriver = CurrentDriver;
-
- /* Fill in what we know, converting the driver name to lower case */
- NewDevice.GDev.driver = xnfalloc(strlen(driver) + 1);
- for (j = 0; (NewDevice.GDev.driver[j] = tolower(driver[j])); j++);
-
- switch (bus) {
- case BUS_PCI: {
- const char *VendorName;
- const char *CardName;
- char busnum[8];
-
- NewDevice.pVideo = pVideo;
- xf86FindPciNamesByDevice(pVideo->vendor, pVideo->chipType,
- NOVENDOR, NOSUBSYS,
- &VendorName, &CardName, NULL, NULL);
-
- if (!VendorName) {
- VendorName = xnfalloc(15);
- sprintf((char*)VendorName, "Unknown Vendor");
- }
-
- if (!CardName) {
- CardName = xnfalloc(14);
- sprintf((char*)CardName, "Unknown Board");
- }
-
- NewDevice.GDev.identifier =
- xnfalloc(strlen(VendorName) + strlen(CardName) + 2);
- sprintf(NewDevice.GDev.identifier, "%s %s", VendorName, CardName);
-
- NewDevice.GDev.vendor = (char *)VendorName;
- NewDevice.GDev.board = (char *)CardName;
-
- NewDevice.GDev.busID = xnfalloc(16);
- xf86FormatPciBusNumber(pVideo->bus, busnum);
- sprintf(NewDevice.GDev.busID, "PCI:%s:%d:%d",
- busnum, pVideo->device, pVideo->func);
-
- NewDevice.GDev.chipID = pVideo->chipType;
- NewDevice.GDev.chipRev = pVideo->chipRev;
-
- if (chipset < 0)
- chipset = (pVideo->vendor << 16) | pVideo->chipType;
- }
- break;
- case BUS_ISA:
- NewDevice.GDev.identifier = "ISA Adapter";
- NewDevice.GDev.busID = "ISA";
- break;
-#if defined(__sparc__) && !defined(__OpenBSD__)
- case BUS_SBUS: {
- char *promPath = NULL;
- NewDevice.sVideo = (sbusDevicePtr) busData;
- NewDevice.GDev.identifier = NewDevice.sVideo->descr;
- if (sparcPromInit() >= 0) {
- promPath = sparcPromNode2Pathname(&NewDevice.sVideo->node);
- sparcPromClose();
- }
- if (promPath) {
- NewDevice.GDev.busID = xnfalloc(strlen(promPath) + 6);
- sprintf(NewDevice.GDev.busID, "SBUS:%s", promPath);
- xfree(promPath);
- } else {
- NewDevice.GDev.busID = xnfalloc(12);
- sprintf(NewDevice.GDev.busID, "SBUS:fb%d", NewDevice.sVideo->fbNum);
- }
- }
- break;
-#endif
- default:
- break;
- }
-
- /* Get driver's available options */
- if (xf86DriverList[CurrentDriver]->AvailableOptions)
- NewDevice.GDev.options = (OptionInfoPtr)
- (*xf86DriverList[CurrentDriver]->AvailableOptions)(chipset,
- bus);
-
- return &NewDevice.GDev;
-
-# undef NewDevice
-}
-
-/*
- * Backwards compatibility
- */
-GDevPtr
-xf86AddDeviceToConfigure(const char *driver, pciVideoPtr pVideo, int chipset)
-{
- return xf86AddBusDeviceToConfigure(driver, pVideo ? BUS_PCI : BUS_ISA,
- pVideo, chipset);
-}
-
-static XF86ConfInputPtr
-configureInputSection (void)
-{
- XF86ConfInputPtr mouse = NULL;
- parsePrologue (XF86ConfInputPtr, XF86ConfInputRec)
-
- ptr->inp_identifier = "Keyboard0";
-#ifdef USE_DEPRECATED_KEYBOARD_DRIVER
- ptr->inp_driver = "keyboard";
-#else
- ptr->inp_driver = "kbd";
-#endif
- ptr->list.next = NULL;
-
- /* Crude mechanism to auto-detect mouse (os dependent) */
- {
- int fd;
-#if 0 && defined linux
- /* Our autodetection code can do a better job */
- int len;
- char path[32];
-
- if ((len = readlink(DFLT_MOUSE_DEV, path, sizeof(path) - 1)) > 0) {
- path[len] = '\0';
- if (strstr(path, "psaux") != NULL)
- DFLT_MOUSE_PROTO = "PS/2";
- }
-#endif
-#ifdef WSCONS_SUPPORT
- fd = open("/dev/wsmouse", 0);
- if (fd > 0) {
- DFLT_MOUSE_DEV = "/dev/wsmouse";
- DFLT_MOUSE_PROTO = "wsmouse";
- close(fd);
- } else {
- ErrorF("cannot open /dev/wsmouse\n");
- }
-#endif
-
-#ifndef __SCO__
- fd = open(DFLT_MOUSE_DEV, 0);
- if (fd != -1) {
- foundMouse = TRUE;
- close(fd);
- }
-#else
- foundMouse = TRUE;
-#endif
- }
-
- mouse = xf86confmalloc(sizeof(XF86ConfInputRec));
- memset((XF86ConfInputPtr)mouse,0,sizeof(XF86ConfInputRec));
- mouse->inp_identifier = "Mouse0";
- mouse->inp_driver = "mouse";
- mouse->inp_option_lst =
- xf86addNewOption(mouse->inp_option_lst, "Protocol", DFLT_MOUSE_PROTO);
-#ifndef __SCO__
- mouse->inp_option_lst =
- xf86addNewOption(mouse->inp_option_lst, "Device", DFLT_MOUSE_DEV);
-#endif
- mouse->inp_option_lst =
- xf86addNewOption(mouse->inp_option_lst, "ZAxisMapping", "4 5 6 7");
- ptr = (XF86ConfInputPtr)xf86addListItem((glp)ptr, (glp)mouse);
- return ptr;
-}
-
-static XF86ConfDRIPtr
-configureDRISection (void)
-{
-#ifdef NOTYET
- parsePrologue (XF86ConfDRIPtr, XF86ConfDRIRec)
-
- return ptr;
-#else
- return NULL;
-#endif
-}
-
-static XF86ConfVendorPtr
-configureVendorSection (void)
-{
- parsePrologue (XF86ConfVendorPtr, XF86ConfVendorRec)
-
- return NULL;
-#if 0
- return ptr;
-#endif
-}
-
-static XF86ConfScreenPtr
-configureScreenSection (int screennum)
-{
- int i;
- int depths[] = { 1, 4, 8, 15, 16, 24/*, 32*/ };
- parsePrologue (XF86ConfScreenPtr, XF86ConfScreenRec)
-
- ptr->scrn_identifier = xf86confmalloc(18);
- sprintf(ptr->scrn_identifier, "Screen%d", screennum);
- ptr->scrn_monitor_str = xf86confmalloc(19);
- sprintf(ptr->scrn_monitor_str, "Monitor%d", screennum);
- ptr->scrn_device_str = xf86confmalloc(16);
- sprintf(ptr->scrn_device_str, "Card%d", screennum);
-
- for (i=0; i<sizeof(depths)/sizeof(depths[0]); i++)
- {
- XF86ConfDisplayPtr display;
-
- display = xf86confmalloc(sizeof(XF86ConfDisplayRec));
- memset((XF86ConfDisplayPtr)display,0,sizeof(XF86ConfDisplayRec));
- display->disp_depth = depths[i];
- display->disp_black.red = display->disp_white.red = -1;
- display->disp_black.green = display->disp_white.green = -1;
- display->disp_black.blue = display->disp_white.blue = -1;
- ptr->scrn_display_lst = (XF86ConfDisplayPtr)xf86addListItem(
- (glp)ptr->scrn_display_lst, (glp)display);
- }
-
- return ptr;
-}
-
-static const char*
-optionTypeToSting(OptionValueType type)
-{
- switch (type) {
- case OPTV_NONE:
- return "";
- case OPTV_INTEGER:
- return "<i>";
- case OPTV_STRING:
- return "<str>";
- case OPTV_ANYSTR:
- return "[<str>]";
- case OPTV_REAL:
- return "<f>";
- case OPTV_BOOLEAN:
- return "[<bool>]";
- case OPTV_FREQ:
- return "<freq>";
- default:
- return "";
- }
-}
-
-static XF86ConfDevicePtr
-configureDeviceSection (int screennum)
-{
- char identifier[16];
- OptionInfoPtr p;
- int i = 0;
-#ifdef DO_FBDEV_PROBE
- Bool foundFBDEV = FALSE;
-#endif
- parsePrologue (XF86ConfDevicePtr, XF86ConfDeviceRec)
-
- /* Move device info to parser structure */
- sprintf(identifier, "Card%d", screennum);
- ptr->dev_identifier = strdup(identifier);
-/* ptr->dev_identifier = DevToConfig[screennum].GDev.identifier;*/
- ptr->dev_vendor = DevToConfig[screennum].GDev.vendor;
- ptr->dev_board = DevToConfig[screennum].GDev.board;
- ptr->dev_chipset = DevToConfig[screennum].GDev.chipset;
- ptr->dev_busid = DevToConfig[screennum].GDev.busID;
- ptr->dev_driver = DevToConfig[screennum].GDev.driver;
- ptr->dev_ramdac = DevToConfig[screennum].GDev.ramdac;
- for (i = 0; (i < MAXDACSPEEDS) && (i < CONF_MAXDACSPEEDS); i++)
- ptr->dev_dacSpeeds[i] = DevToConfig[screennum].GDev.dacSpeeds[i];
- ptr->dev_videoram = DevToConfig[screennum].GDev.videoRam;
- ptr->dev_textclockfreq = DevToConfig[screennum].GDev.textClockFreq;
- ptr->dev_bios_base = DevToConfig[screennum].GDev.BiosBase;
- ptr->dev_mem_base = DevToConfig[screennum].GDev.MemBase;
- ptr->dev_io_base = DevToConfig[screennum].GDev.IOBase;
- ptr->dev_clockchip = DevToConfig[screennum].GDev.clockchip;
- for (i = 0; (i < MAXCLOCKS) && (i < DevToConfig[screennum].GDev.numclocks); i++)
- ptr->dev_clock[i] = DevToConfig[screennum].GDev.clock[i];
- ptr->dev_clocks = i;
- ptr->dev_chipid = DevToConfig[screennum].GDev.chipID;
- ptr->dev_chiprev = DevToConfig[screennum].GDev.chipRev;
- ptr->dev_irq = DevToConfig[screennum].GDev.irq;
-
- /* Make sure older drivers don't segv */
- if (DevToConfig[screennum].GDev.options) {
- /* Fill in the available driver options for people to use */
- const char *descrip =
- " ### Available Driver options are:-\n"
- " ### Values: <i>: integer, <f>: float, "
- "<bool>: \"True\"/\"False\",\n"
- " ### <string>: \"String\", <freq>: \"<f> Hz/kHz/MHz\"\n"
- " ### [arg]: arg optional\n";
- ptr->dev_comment = xstrdup(descrip);
- if (ptr->dev_comment) {
- for (p = DevToConfig[screennum].GDev.options;
- p->name != NULL; p++) {
- char *p_e;
- const char *prefix = " #Option ";
- const char *middle = " \t# ";
- const char *suffix = "\n";
- const char *opttype = optionTypeToSting(p->type);
- char *optname;
- int len = strlen(ptr->dev_comment) + strlen(prefix) +
- strlen(middle) + strlen(suffix) + 1;
-
- optname = xalloc(strlen(p->name) + 2 + 1);
- if (!optname)
- break;
- sprintf(optname, "\"%s\"", p->name);
-
- len += max(20, strlen(optname));
- len += strlen(opttype);
-
- ptr->dev_comment = xrealloc(ptr->dev_comment, len);
- if (!ptr->dev_comment)
- break;
- p_e = ptr->dev_comment + strlen(ptr->dev_comment);
- sprintf(p_e, "%s%-20s%s%s%s", prefix, optname, middle,
- opttype, suffix);
- xfree(optname);
- }
- }
- }
-
-#ifdef DO_FBDEV_PROBE
- /* Crude mechanism to auto-detect fbdev (os dependent) */
- /* Skip it for now. Options list it anyway, and we can't
- * determine which screen/driver this belongs too anyway. */
- {
- int fd;
-
- fd = open("/dev/fb0", 0);
- if (fd != -1) {
- foundFBDEV = TRUE;
- close(fd);
- }
- }
-
- if (foundFBDEV) {
- XF86OptionPtr fbdev;
-
- fbdev = xf86confmalloc(sizeof(XF86OptionRec));
- memset((XF86OptionPtr)fbdev,0,sizeof(XF86OptionRec));
- fbdev->opt_name = "UseFBDev";
- fbdev->opt_val = "ON";
- ptr->dev_option_lst = (XF86OptionPtr)xf86addListItem(
- (glp)ptr->dev_option_lst, (glp)fbdev);
- }
-#endif
-
- return ptr;
-}
-
-static XF86ConfLayoutPtr
-configureLayoutSection (void)
-{
- int scrnum = 0;
- parsePrologue (XF86ConfLayoutPtr, XF86ConfLayoutRec)
-
- ptr->lay_identifier = "X.org Configured";
-
- {
- XF86ConfInputrefPtr iptr;
-
- iptr = xf86confmalloc (sizeof (XF86ConfInputrefRec));
- iptr->list.next = NULL;
- iptr->iref_option_lst = NULL;
- iptr->iref_inputdev_str = "Mouse0";
- iptr->iref_option_lst =
- xf86addNewOption (iptr->iref_option_lst, "CorePointer", NULL);
- ptr->lay_input_lst = (XF86ConfInputrefPtr)
- xf86addListItem ((glp) ptr->lay_input_lst, (glp) iptr);
- }
-
- {
- XF86ConfInputrefPtr iptr;
-
- iptr = xf86confmalloc (sizeof (XF86ConfInputrefRec));
- iptr->list.next = NULL;
- iptr->iref_option_lst = NULL;
- iptr->iref_inputdev_str = "Keyboard0";
- iptr->iref_option_lst =
- xf86addNewOption (iptr->iref_option_lst, "CoreKeyboard", NULL);
- ptr->lay_input_lst = (XF86ConfInputrefPtr)
- xf86addListItem ((glp) ptr->lay_input_lst, (glp) iptr);
- }
-
- for (scrnum = 0; scrnum < nDevToConfig; scrnum++) {
- XF86ConfAdjacencyPtr aptr;
-
- aptr = xf86confmalloc (sizeof (XF86ConfAdjacencyRec));
- aptr->list.next = NULL;
- aptr->adj_x = 0;
- aptr->adj_y = 0;
- aptr->adj_scrnum = scrnum;
- aptr->adj_screen_str = xnfalloc(18);
- sprintf(aptr->adj_screen_str, "Screen%d", scrnum);
- if (scrnum == 0) {
- aptr->adj_where = CONF_ADJ_ABSOLUTE;
- aptr->adj_refscreen = NULL;
- }
- else {
- aptr->adj_where = CONF_ADJ_RIGHTOF;
- aptr->adj_refscreen = xnfalloc(18);
- sprintf(aptr->adj_refscreen, "Screen%d", scrnum - 1);
- }
- ptr->lay_adjacency_lst =
- (XF86ConfAdjacencyPtr)xf86addListItem((glp)ptr->lay_adjacency_lst,
- (glp)aptr);
- }
-
- return ptr;
-}
-
-static XF86ConfModesPtr
-configureModesSection (void)
-{
-#ifdef NOTYET
- parsePrologue (XF86ConfModesPtr, XF86ConfModesRec)
-
- return ptr;
-#else
- return NULL;
-#endif
-}
-
-static XF86ConfVideoAdaptorPtr
-configureVideoAdaptorSection (void)
-{
- parsePrologue (XF86ConfVideoAdaptorPtr, XF86ConfVideoAdaptorRec)
-
- return NULL;
-#if 0
- return ptr;
-#endif
-}
-
-static XF86ConfFlagsPtr
-configureFlagsSection (void)
-{
- parsePrologue (XF86ConfFlagsPtr, XF86ConfFlagsRec)
-
- return ptr;
-}
-
-static XF86ConfModulePtr
-configureModuleSection (void)
-{
-#ifdef XFree86LOADER
- char **elist, **el;
- /* Find the list of extension modules. */
- const char *esubdirs[] = {
- "extensions",
- NULL
- };
- const char *fsubdirs[] = {
- "fonts",
- NULL
- };
-#endif
- parsePrologue (XF86ConfModulePtr, XF86ConfModuleRec)
-
-#ifdef XFree86LOADER
- elist = LoaderListDirs(esubdirs, NULL);
- if (elist) {
- for (el = elist; *el; el++) {
- XF86LoadPtr module;
-
- module = xf86confmalloc(sizeof(XF86LoadRec));
- memset((XF86LoadPtr)module,0,sizeof(XF86LoadRec));
- module->load_name = *el;
- /* HACK, remove GLcore, glx, loads it as a submodule */
- if (strcmp(*el, "GLcore"))
- ptr->mod_load_lst = (XF86LoadPtr)xf86addListItem(
- (glp)ptr->mod_load_lst, (glp)module);
- }
- xfree(elist);
- }
-
- /* Process list of font backends separately to include only required ones */
- elist = LoaderListDirs(fsubdirs, NULL);
- if (elist) {
- for (el = elist; *el; el++) {
- XF86LoadPtr module;
-
- module = xf86confmalloc(sizeof(XF86LoadRec));
- memset((XF86LoadPtr)module,0,sizeof(XF86LoadRec));
- module->load_name = *el;
-
- /* Add only those font backends which are referenced by fontpath */
- /* 'strstr(dFP,"/dir")' is meant as 'dFP =~ m(/dir\W)' */
- if (defaultFontPath && (
- (strcmp(*el, "freetype") == 0 &&
- strstr(defaultFontPath, "/TTF")) ||
- (strcmp(*el, "type1") == 0 &&
- strstr(defaultFontPath, "/Type1")) ||
- (strcmp(*el, "speedo") == 0 &&
- strstr(defaultFontPath, "/Speedo"))))
- ptr->mod_load_lst = (XF86LoadPtr)xf86addListItem(
- (glp)ptr->mod_load_lst, (glp)module);
- }
- xfree(elist);
- }
-#endif
-
- return ptr;
-}
-
-static XF86ConfFilesPtr
-configureFilesSection (void)
-{
- parsePrologue (XF86ConfFilesPtr, XF86ConfFilesRec)
-
-#ifdef XFree86LOADER
- if (xf86ModulePath)
- ptr->file_modulepath = strdup(xf86ModulePath);
-#endif
- if (defaultFontPath)
- ptr->file_fontpath = strdup(defaultFontPath);
- if (rgbPath)
- ptr->file_rgbpath = strdup(rgbPath);
-
- return ptr;
-}
-
-static XF86ConfMonitorPtr
-configureMonitorSection (int screennum)
-{
- parsePrologue (XF86ConfMonitorPtr, XF86ConfMonitorRec)
-
- ptr->mon_identifier = xf86confmalloc(19);
- sprintf(ptr->mon_identifier, "Monitor%d", screennum);
- ptr->mon_vendor = strdup("Monitor Vendor");
- ptr->mon_modelname = strdup("Monitor Model");
-
- return ptr;
-}
-
-static XF86ConfMonitorPtr
-configureDDCMonitorSection (int screennum)
-{
- int i = 0;
- int len, mon_width, mon_height;
-#define displaySizeMaxLen 80
- char displaySize_string[displaySizeMaxLen];
- int displaySizeLen;
-
- parsePrologue (XF86ConfMonitorPtr, XF86ConfMonitorRec)
-
- ptr->mon_identifier = xf86confmalloc(19);
- sprintf(ptr->mon_identifier, "Monitor%d", screennum);
- ptr->mon_vendor = strdup(ConfiguredMonitor->vendor.name);
- ptr->mon_modelname = xf86confmalloc(12);
- sprintf(ptr->mon_modelname, "%x", ConfiguredMonitor->vendor.prod_id);
-
- /* features in centimetres, we want millimetres */
- mon_width = 10 * ConfiguredMonitor->features.hsize ;
- mon_height = 10 * ConfiguredMonitor->features.vsize ;
-
-#ifdef CONFIGURE_DISPLAYSIZE
- ptr->mon_width = mon_width;
- ptr->mon_height = mon_height;
-#else
- if (mon_width && mon_height) {
- /* when values available add DisplaySize option AS A COMMENT */
-
- displaySizeLen = snprintf(displaySize_string, displaySizeMaxLen,
- "\t#DisplaySize\t%5d %5d\t# mm\n",
- mon_width, mon_height);
-
- if (displaySizeLen>0 && displaySizeLen<displaySizeMaxLen) {
- if (ptr->mon_comment) {
- len = strlen(ptr->mon_comment);
- } else {
- len = 0;
- }
- if ((ptr->mon_comment =
- xf86confrealloc(ptr->mon_comment,
- len+strlen(displaySize_string)))) {
- strcpy(ptr->mon_comment + len, displaySize_string);
- }
- }
- }
-#endif /* def CONFIGURE_DISPLAYSIZE */
-
- for (i=0;i<4;i++) {
- switch (ConfiguredMonitor->det_mon[i].type) {
- case DS_NAME:
- ptr->mon_modelname = xf86confrealloc(ptr->mon_modelname,
- strlen((char*)(ConfiguredMonitor->det_mon[i].section.name))
- + 1);
- strcpy(ptr->mon_modelname,
- (char*)(ConfiguredMonitor->det_mon[i].section.name));
- break;
- case DS_RANGES:
- ptr->mon_hsync[ptr->mon_n_hsync].lo =
- ConfiguredMonitor->det_mon[i].section.ranges.min_h;
- ptr->mon_hsync[ptr->mon_n_hsync].hi =
- ConfiguredMonitor->det_mon[i].section.ranges.max_h;
- ptr->mon_n_vrefresh = 1;
- ptr->mon_vrefresh[ptr->mon_n_hsync].lo =
- ConfiguredMonitor->det_mon[i].section.ranges.min_v;
- ptr->mon_vrefresh[ptr->mon_n_hsync].hi =
- ConfiguredMonitor->det_mon[i].section.ranges.max_v;
- ptr->mon_n_hsync++;
- default:
- break;
- }
- }
-
- if (ConfiguredMonitor->features.dpms) {
- ptr->mon_option_lst = xf86addNewOption(ptr->mon_option_lst, "DPMS", NULL);
- }
-
- return ptr;
-}
-
-void
-DoConfigure()
-{
- int i,j, screennum = -1;
- char *home = NULL;
- char *filename = NULL;
- XF86ConfigPtr xf86config = NULL;
- char **vlist, **vl;
- int *dev2screen;
-
- vlist = xf86DriverlistFromCompile();
-
- if (!vlist) {
- ErrorF("Missing output drivers. Configuration failed.\n");
- goto bail;
- }
-
- ErrorF("List of video drivers:\n");
- for (vl = vlist; *vl; vl++)
- ErrorF("\t%s\n", *vl);
-
-#ifdef XFree86LOADER
- /* Load all the drivers that were found. */
- xf86LoadModules(vlist, NULL);
-#endif /* XFree86LOADER */
-
- xfree(vlist);
-
- for (i = 0; i < xf86NumDrivers; i++) {
- xorgHWFlags flags;
- if (!xf86DriverList[i]->driverFunc
- || !xf86DriverList[i]->driverFunc(NULL,
- GET_REQUIRED_HW_INTERFACES,
- &flags)
- || NEED_IO_ENABLED(flags)) {
- xorgHWAccess = TRUE;
- break;
- }
- }
- /* Enable full I/O access */
- if (xorgHWAccess) {
- if(!xf86EnableIO())
- /* oops, we have failed */
- xorgHWAccess = FALSE;
- }
-
- /* Disable PCI devices */
- xf86ResourceBrokerInit();
- xf86AccessInit();
- xf86FindPrimaryDevice();
-
- /* Create XF86Config file structure */
- xf86config = malloc(sizeof(XF86ConfigRec));
- memset ((XF86ConfigPtr)xf86config, 0, sizeof(XF86ConfigRec));
- xf86config->conf_device_lst = NULL;
- xf86config->conf_screen_lst = NULL;
- xf86config->conf_monitor_lst = NULL;
-
- /* Call all of the probe functions, reporting the results. */
- for (CurrentDriver = 0; CurrentDriver < xf86NumDrivers; CurrentDriver++) {
- xorgHWFlags flags;
-
- if (!xorgHWAccess) {
- if (!xf86DriverList[CurrentDriver]->driverFunc
- || !xf86DriverList[CurrentDriver]->driverFunc(NULL,
- GET_REQUIRED_HW_INTERFACES,
- &flags)
- || NEED_IO_ENABLED(flags))
- continue;
- }
-
- if (xf86DriverList[CurrentDriver]->Probe == NULL) continue;
-
- if ((*xf86DriverList[CurrentDriver]->Probe)(
- xf86DriverList[CurrentDriver], PROBE_DETECT) &&
- xf86DriverList[CurrentDriver]->Identify)
- (*xf86DriverList[CurrentDriver]->Identify)(0);
- }
-
- if (nDevToConfig <= 0) {
- ErrorF("No devices to configure. Configuration failed.\n");
- goto bail;
- }
-
- /* Add device, monitor and screen sections for detected devices */
- for (screennum = 0; screennum < nDevToConfig; screennum++) {
- XF86ConfDevicePtr DevicePtr;
- XF86ConfMonitorPtr MonitorPtr;
- XF86ConfScreenPtr ScreenPtr;
-
- DevicePtr = configureDeviceSection(screennum);
- xf86config->conf_device_lst = (XF86ConfDevicePtr)xf86addListItem(
- (glp)xf86config->conf_device_lst, (glp)DevicePtr);
- MonitorPtr = configureMonitorSection(screennum);
- xf86config->conf_monitor_lst = (XF86ConfMonitorPtr)xf86addListItem(
- (glp)xf86config->conf_monitor_lst, (glp)MonitorPtr);
- ScreenPtr = configureScreenSection(screennum);
- xf86config->conf_screen_lst = (XF86ConfScreenPtr)xf86addListItem(
- (glp)xf86config->conf_screen_lst, (glp)ScreenPtr);
- }
-
- xf86config->conf_files = configureFilesSection();
- xf86config->conf_modules = configureModuleSection();
- xf86config->conf_flags = configureFlagsSection();
- xf86config->conf_videoadaptor_lst = configureVideoAdaptorSection();
- xf86config->conf_modes_lst = configureModesSection();
- xf86config->conf_vendor_lst = configureVendorSection();
- xf86config->conf_dri = configureDRISection();
- xf86config->conf_input_lst = configureInputSection();
- xf86config->conf_layout_lst = configureLayoutSection();
-
- if (!(home = getenv("HOME")))
- home = "/";
- {
-#ifdef __UNIXOS2__
-#define PATH_MAX 2048
-#endif
-#if !defined(PATH_MAX)
-#define PATH_MAX 1024
-#endif
- const char* configfile = XF86CONFIGFILE".new";
- char homebuf[PATH_MAX];
- /* getenv might return R/O memory, as with OS/2 */
- strncpy(homebuf,home,PATH_MAX-1);
- homebuf[PATH_MAX-1] = '\0';
- home = homebuf;
- if (!(filename =
- (char *)ALLOCATE_LOCAL(strlen(home) +
- strlen(configfile) + 3)))
-
- if (home[0] == '/' && home[1] == '\0')
- home[0] = '\0';
-#ifndef QNX4
- sprintf(filename, "%s/%s", home,configfile);
-#else
- sprintf(filename, "//%d%s/%s", getnid(),home,configfile);
-#endif
-
- }
-
- xf86writeConfigFile(filename, xf86config);
-
- xf86DoConfigurePass1 = FALSE;
- /* Try to get DDC information filled in */
- xf86ConfigFile = filename;
- if (xf86HandleConfigFile(FALSE) != CONFIG_OK) {
- goto bail;
- }
-
- xf86DoConfigurePass1 = FALSE;
-
- dev2screen = xnfcalloc(1,xf86NumDrivers*sizeof(int));
-
- {
- Bool *driverProbed = xnfcalloc(1,xf86NumDrivers*sizeof(Bool));
- for (screennum = 0; screennum < nDevToConfig; screennum++) {
- int k,l,n,oldNumScreens;
-
- i = DevToConfig[screennum].iDriver;
-
- if (driverProbed[i]) continue;
- driverProbed[i] = TRUE;
-
- oldNumScreens = xf86NumScreens;
-
- (*xf86DriverList[i]->Probe)(xf86DriverList[i], 0);
-
- /* reorder */
- k = screennum > 0 ? screennum : 1;
- for (l = oldNumScreens; l < xf86NumScreens; l++) {
- /* is screen primary? */
- Bool primary = FALSE;
- for (n = 0; n<xf86Screens[l]->numEntities; n++) {
- if (xf86IsEntityPrimary(xf86Screens[l]->entityList[n])) {
- dev2screen[0] = l;
- primary = TRUE;
- break;
- }
- }
- if (primary) continue;
- /* not primary: assign it to next device of same driver */
- /*
- * NOTE: we assume that devices in DevToConfig
- * and xf86Screens[] have the same order except
- * for the primary device which always comes first.
- */
- for (; k < nDevToConfig; k++) {
- if (DevToConfig[k].iDriver == i) {
- dev2screen[k++] = l;
- break;
- }
- }
- }
- xf86SetPciVideo(NULL,NONE);
- }
- xfree(driverProbed);
- }
-
-
- if (nDevToConfig != xf86NumScreens) {
- ErrorF("Number of created screens does not match number of detected"
- " devices.\n Configuration failed.\n");
- goto bail;
- }
-
- xf86PostProbe();
- xf86EntityInit();
-
- for (j = 0; j < xf86NumScreens; j++) {
- xf86Screens[j]->scrnIndex = j;
- }
-
- xf86freeMonitorList(xf86config->conf_monitor_lst);
- xf86config->conf_monitor_lst = NULL;
- xf86freeScreenList(xf86config->conf_screen_lst);
- xf86config->conf_screen_lst = NULL;
- for (j = 0; j < xf86NumScreens; j++) {
- XF86ConfMonitorPtr MonitorPtr;
- XF86ConfScreenPtr ScreenPtr;
-
- ConfiguredMonitor = NULL;
-
- xf86EnableAccess(xf86Screens[dev2screen[j]]);
- if ((*xf86Screens[dev2screen[j]]->PreInit)(xf86Screens[dev2screen[j]],
- PROBE_DETECT) &&
- ConfiguredMonitor) {
- MonitorPtr = configureDDCMonitorSection(j);
- } else {
- MonitorPtr = configureMonitorSection(j);
- }
- ScreenPtr = configureScreenSection(j);
- xf86config->conf_monitor_lst = (XF86ConfMonitorPtr)xf86addListItem(
- (glp)xf86config->conf_monitor_lst, (glp)MonitorPtr);
- xf86config->conf_screen_lst = (XF86ConfScreenPtr)xf86addListItem(
- (glp)xf86config->conf_screen_lst, (glp)ScreenPtr);
- }
-
- xf86writeConfigFile(filename, xf86config);
-
- ErrorF("\n");
-
-#ifdef __SCO__
- ErrorF("\n"__XSERVERNAME__
- " is using the kernel event driver to access the mouse.\n"
- "If you wish to use the internal "__XSERVERNAME__
- " mouse drivers, please\n"
- "edit the file and correct the Device.\n");
-#else /* !__SCO__ */
- if (!foundMouse) {
- ErrorF("\n"__XSERVERNAME__" is not able to detect your mouse.\n"
- "Edit the file and correct the Device.\n");
- } else {
-#ifndef __UNIXOS2__ /* OS/2 definitely has a mouse */
- ErrorF("\n"__XSERVERNAME__" detected your mouse at device %s.\n"
- "Please check your config if the mouse is still not\n"
- "operational, as by default "__XSERVERNAME__
- " tries to autodetect\n"
- "the protocol.\n",DFLT_MOUSE_DEV);
-#endif
- }
-#endif /* !__SCO__ */
-
- if (xf86NumScreens > 1) {
- ErrorF("\n"__XSERVERNAME__
- " has configured a multihead system, please check your config.\n");
- }
-
- ErrorF("\nYour %s file is %s\n\n", XF86CONFIGFILE ,filename);
- ErrorF("To test the server, run 'X -config %s'\n\n", filename);
-
-bail:
- OsCleanup(TRUE);
- AbortDDX();
- fflush(stderr);
- exit(0);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Cursor.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Cursor.c
deleted file mode 100644
index 0e2d77492..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Cursor.c
+++ /dev/null
@@ -1,788 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Cursor.c,v 3.37 2003/11/07 22:20:17 dawes Exp $ */
-/*
- * Copyright (c) 1994-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* $XConsortium: xf86Cursor.c /main/10 1996/10/19 17:58:23 kaleb $ */
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "cursor.h"
-#include "mipointer.h"
-#include "scrnintstr.h"
-#include "globals.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSproc.h"
-
-#ifdef XINPUT
-#include <X11/extensions/XIproto.h>
-#include "xf86Xinput.h"
-#endif
-
-#ifdef XFreeXDGA
-#include "dgaproc.h"
-#endif
-
-typedef struct _xf86EdgeRec {
- short screen;
- short start;
- short end;
- DDXPointRec offset;
- struct _xf86EdgeRec *next;
-} xf86EdgeRec, *xf86EdgePtr;
-
-typedef struct {
- xf86EdgePtr left, right, up, down;
-} xf86ScreenLayoutRec, *xf86ScreenLayoutPtr;
-
-static Bool xf86CursorOffScreen(ScreenPtr *pScreen, int *x, int *y);
-static void xf86CrossScreen(ScreenPtr pScreen, Bool entering);
-static void xf86WarpCursor(ScreenPtr pScreen, int x, int y);
-
-static void xf86PointerMoved(int scrnIndex, int x, int y);
-
-static miPointerScreenFuncRec xf86PointerScreenFuncs = {
- xf86CursorOffScreen,
- xf86CrossScreen,
- xf86WarpCursor,
-#ifdef XINPUT
- xf86eqEnqueue,
- xf86eqSwitchScreen
-#else
- /* let miPointerInitialize take care of these */
- NULL,
- NULL
-#endif
-};
-
-static xf86ScreenLayoutRec xf86ScreenLayout[MAXSCREENS];
-
-static Bool HardEdges;
-
-/*
- * xf86InitViewport --
- * Initialize paning & zooming parameters, so that a driver must only
- * check what resolutions are possible and whether the virtual area
- * is valid if specified.
- */
-
-void
-xf86InitViewport(ScrnInfoPtr pScr)
-{
-
- pScr->PointerMoved = xf86PointerMoved;
-
- /*
- * Compute the initial Viewport if necessary
- */
- if (pScr->display) {
- if (pScr->display->frameX0 < 0) {
- pScr->frameX0 = (pScr->virtualX - pScr->modes->HDisplay) / 2;
- pScr->frameY0 = (pScr->virtualY - pScr->modes->VDisplay) / 2;
- } else {
- pScr->frameX0 = pScr->display->frameX0;
- pScr->frameY0 = pScr->display->frameY0;
- }
- }
-
- pScr->frameX1 = pScr->frameX0 + pScr->modes->HDisplay - 1;
- pScr->frameY1 = pScr->frameY0 + pScr->modes->VDisplay - 1;
-
- /*
- * Now adjust the initial Viewport, so it lies within the virtual area
- */
- if (pScr->frameX1 >= pScr->virtualX)
- {
- pScr->frameX0 = pScr->virtualX - pScr->modes->HDisplay;
- pScr->frameX1 = pScr->frameX0 + pScr->modes->HDisplay - 1;
- }
-
- if (pScr->frameY1 >= pScr->virtualY)
- {
- pScr->frameY0 = pScr->virtualY - pScr->modes->VDisplay;
- pScr->frameY1 = pScr->frameY0 + pScr->modes->VDisplay - 1;
- }
-}
-
-
-/*
- * xf86SetViewport --
- * Scroll the visual part of the screen so the pointer is visible.
- */
-
-void
-xf86SetViewport(ScreenPtr pScreen, int x, int y)
-{
- ScrnInfoPtr pScr = XF86SCRNINFO(pScreen);
-
- (*pScr->PointerMoved)(pScreen->myNum, x, y);
-}
-
-
-static void
-xf86PointerMoved(int scrnIndex, int x, int y)
-{
- Bool frameChanged = FALSE;
- ScrnInfoPtr pScr = xf86Screens[scrnIndex];
-
- /*
- * check wether (x,y) belongs to the visual part of the screen
- * if not, change the base of the displayed frame accoring
- */
- if ( pScr->frameX0 > x) {
- pScr->frameX0 = x;
- pScr->frameX1 = x + pScr->currentMode->HDisplay - 1;
- frameChanged = TRUE ;
- }
-
- if ( pScr->frameX1 < x) {
- pScr->frameX1 = x + 1;
- pScr->frameX0 = x - pScr->currentMode->HDisplay + 1;
- frameChanged = TRUE ;
- }
-
- if ( pScr->frameY0 > y) {
- pScr->frameY0 = y;
- pScr->frameY1 = y + pScr->currentMode->VDisplay - 1;
- frameChanged = TRUE;
- }
-
- if ( pScr->frameY1 < y) {
- pScr->frameY1 = y;
- pScr->frameY0 = y - pScr->currentMode->VDisplay + 1;
- frameChanged = TRUE;
- }
-
- if (frameChanged && pScr->AdjustFrame != NULL)
- pScr->AdjustFrame(pScr->scrnIndex, pScr->frameX0, pScr->frameY0, 0);
-}
-
-/*
- * xf86LockZoom --
- * Enable/disable ZoomViewport
- */
-
-void
-xf86LockZoom(ScreenPtr pScreen, Bool lock)
-{
- XF86SCRNINFO(pScreen)->zoomLocked = lock;
-}
-
-/*
- * xf86SwitchMode --
- * This is called by both keyboard processing and the VidMode extension to
- * set a new mode.
- */
-
-Bool
-xf86SwitchMode(ScreenPtr pScreen, DisplayModePtr mode)
-{
- ScrnInfoPtr pScr = XF86SCRNINFO(pScreen);
- ScreenPtr pCursorScreen;
- Bool Switched;
- int px, py;
-
- if (!pScr->vtSema || !mode || !pScr->SwitchMode)
- return FALSE;
-
-#ifdef XFreeXDGA
- if (DGAActive(pScr->scrnIndex))
- return FALSE;
-#endif
-
- if (mode == pScr->currentMode)
- return TRUE;
-
- if (mode->HDisplay > pScr->virtualX || mode->VDisplay > pScr->virtualY)
- return FALSE;
-
- pCursorScreen = miPointerCurrentScreen();
- if (pScreen == pCursorScreen)
- miPointerPosition(&px, &py);
-
- xf86EnterServerState(SETUP);
- Switched = (*pScr->SwitchMode)(pScr->scrnIndex, mode, 0);
- xf86EnterServerState(OPERATING);
- if (Switched) {
- pScr->currentMode = mode;
-
- /*
- * Adjust frame for new display size.
- */
- if (pScreen == pCursorScreen)
- pScr->frameX0 = px - (mode->HDisplay / 2) + 1;
- else
- pScr->frameX0 = (pScr->frameX0 + pScr->frameX1 + 1 - mode->HDisplay) / 2;
-
- if (pScr->frameX0 < 0)
- pScr->frameX0 = 0;
-
- pScr->frameX1 = pScr->frameX0 + mode->HDisplay - 1;
- if (pScr->frameX1 >= pScr->virtualX) {
- pScr->frameX0 = pScr->virtualX - mode->HDisplay;
- pScr->frameX1 = pScr->virtualX - 1;
- }
-
- if (pScreen == pCursorScreen)
- pScr->frameY0 = py - (mode->VDisplay / 2) + 1;
- else
- pScr->frameY0 = (pScr->frameY0 + pScr->frameY1 + 1 - mode->VDisplay) / 2;
-
- if (pScr->frameY0 < 0)
- pScr->frameY0 = 0;
-
- pScr->frameY1 = pScr->frameY0 + mode->VDisplay - 1;
- if (pScr->frameY1 >= pScr->virtualY) {
- pScr->frameY0 = pScr->virtualY - mode->VDisplay;
- pScr->frameY1 = pScr->virtualY - 1;
- }
- }
-
- if (pScr->AdjustFrame)
- (*pScr->AdjustFrame)(pScr->scrnIndex, pScr->frameX0, pScr->frameY0, 0);
-
- if (pScreen == pCursorScreen)
- xf86WarpCursor(pScreen, px, py);
-
- return Switched;
-}
-
-/*
- * xf86ZoomViewport --
- * Reinitialize the visual part of the screen for another mode.
- */
-
-void
-xf86ZoomViewport(ScreenPtr pScreen, int zoom)
-{
- ScrnInfoPtr pScr = XF86SCRNINFO(pScreen);
- DisplayModePtr mode;
-
- if (pScr->zoomLocked || !(mode = pScr->currentMode))
- return;
-
- do {
- if (zoom > 0)
- mode = mode->next;
- else
- mode = mode->prev;
- } while (mode != pScr->currentMode && !(mode->type & M_T_USERDEF));
-
- (void)xf86SwitchMode(pScreen, mode);
-}
-
-
-static xf86EdgePtr
-FindEdge(xf86EdgePtr edge, int val)
-{
- while(edge && (edge->end <= val))
- edge = edge->next;
-
- if(edge && (edge->start <= val))
- return edge;
-
- return NULL;
-}
-
-/*
- * xf86CursorOffScreen --
- * Check whether it is necessary to switch to another screen
- */
-
-static Bool
-xf86CursorOffScreen(ScreenPtr *pScreen, int *x, int *y)
-{
- xf86EdgePtr edge;
- int tmp;
-
- if(screenInfo.numScreens == 1)
- return FALSE;
-
- if(*x < 0) {
- tmp = *y;
- if(tmp < 0) tmp = 0;
- if(tmp >= (*pScreen)->height) tmp = (*pScreen)->height - 1;
-
- if((edge = xf86ScreenLayout[(*pScreen)->myNum].left))
- edge = FindEdge(edge, tmp);
-
- if(!edge) *x = 0;
- else {
- *x += edge->offset.x;
- *y += edge->offset.y;
- *pScreen = xf86Screens[edge->screen]->pScreen;
- }
- }
-
- if(*x >= (*pScreen)->width) {
- tmp = *y;
- if(tmp < 0) tmp = 0;
- if(tmp >= (*pScreen)->height) tmp = (*pScreen)->height - 1;
-
- if((edge = xf86ScreenLayout[(*pScreen)->myNum].right))
- edge = FindEdge(edge, tmp);
-
- if(!edge) *x = (*pScreen)->width - 1;
- else {
- *x += edge->offset.x;
- *y += edge->offset.y;
- *pScreen = xf86Screens[edge->screen]->pScreen;
- }
- }
-
- if(*y < 0) {
- tmp = *x;
- if(tmp < 0) tmp = 0;
- if(tmp >= (*pScreen)->width) tmp = (*pScreen)->width - 1;
-
- if((edge = xf86ScreenLayout[(*pScreen)->myNum].up))
- edge = FindEdge(edge, tmp);
-
- if(!edge) *y = 0;
- else {
- *x += edge->offset.x;
- *y += edge->offset.y;
- *pScreen = xf86Screens[edge->screen]->pScreen;
- }
- }
-
- if(*y >= (*pScreen)->height) {
- tmp = *x;
- if(tmp < 0) tmp = 0;
- if(tmp >= (*pScreen)->width) tmp = (*pScreen)->width - 1;
-
- if((edge = xf86ScreenLayout[(*pScreen)->myNum].down))
- edge = FindEdge(edge, tmp);
-
- if(!edge) *y = (*pScreen)->height - 1;
- else {
- *x += edge->offset.x;
- *y += edge->offset.y;
- (*pScreen) = xf86Screens[edge->screen]->pScreen;
- }
- }
-
-
-#if 0
- /* This presents problems for overlapping screens when
- HardEdges is used. Have to think about the logic more */
- if((*x < 0) || (*x >= (*pScreen)->width) ||
- (*y < 0) || (*y >= (*pScreen)->height)) {
- /* We may have crossed more than one screen */
- xf86CursorOffScreen(pScreen, x, y);
- }
-#endif
-
- return TRUE;
-}
-
-
-
-/*
- * xf86CrossScreen --
- * Switch to another screen
- */
-
-/* NEED TO CHECK THIS */
-/* ARGSUSED */
-static void
-xf86CrossScreen (ScreenPtr pScreen, Bool entering)
-{
-#if 0
- if (xf86Info.sharedMonitor)
- (XF86SCRNINFO(pScreen)->EnterLeaveMonitor)(entering);
- (XF86SCRNINFO(pScreen)->EnterLeaveCursor)(entering);
-#endif
-}
-
-
-/*
- * xf86WarpCursor --
- * Warp possible to another screen
- */
-
-/* ARGSUSED */
-static void
-xf86WarpCursor (ScreenPtr pScreen, int x, int y)
-{
- int sigstate;
- sigstate = xf86BlockSIGIO ();
- miPointerWarpCursor(pScreen,x,y);
-
- xf86Info.currentScreen = pScreen;
- xf86UnblockSIGIO (sigstate);
-}
-
-
-void *
-xf86GetPointerScreenFuncs(void)
-{
- return (void *)&xf86PointerScreenFuncs;
-}
-
-
-static xf86EdgePtr
-AddEdge(
- xf86EdgePtr edge,
- short min,
- short max,
- short dx,
- short dy,
- short screen
-){
- xf86EdgePtr pEdge = edge, pPrev = NULL, pNew;
-
- while(1) {
- while(pEdge && (min >= pEdge->end)) {
- pPrev = pEdge;
- pEdge = pEdge->next;
- }
-
- if(!pEdge) {
- if(!(pNew = xalloc(sizeof(xf86EdgeRec))))
- break;
-
- pNew->screen = screen;
- pNew->start = min;
- pNew->end = max;
- pNew->offset.x = dx;
- pNew->offset.y = dy;
- pNew->next = NULL;
-
- if(pPrev)
- pPrev->next = pNew;
- else
- edge = pNew;
-
- break;
- } else if (min < pEdge->start) {
- if(!(pNew = xalloc(sizeof(xf86EdgeRec))))
- break;
-
- pNew->screen = screen;
- pNew->start = min;
- pNew->offset.x = dx;
- pNew->offset.y = dy;
- pNew->next = pEdge;
-
- if(pPrev) pPrev->next = pNew;
- else edge = pNew;
-
- if(max <= pEdge->start) {
- pNew->end = max;
- break;
- } else {
- pNew->end = pEdge->start;
- min = pEdge->end;
- }
- } else
- min = pEdge->end;
-
- pPrev = pEdge;
- pEdge = pEdge->next;
-
- if(max <= min) break;
- }
-
- return edge;
-}
-
-static void
-FillOutEdge(xf86EdgePtr pEdge, int limit)
-{
- xf86EdgePtr pNext;
- int diff;
-
- if(pEdge->start > 0) pEdge->start = 0;
-
- while((pNext = pEdge->next)) {
- diff = pNext->start - pEdge->end;
- if(diff > 0) {
- pEdge->end += diff >> 1;
- pNext->start -= diff - (diff >> 1);
- }
- pEdge = pNext;
- }
-
- if(pEdge->end < limit)
- pEdge->end = limit;
-}
-
-/*
- * xf86InitOrigins() can deal with a maximum of 32 screens
- * on 32 bit architectures, 64 on 64 bit architectures.
- */
-
-void
-xf86InitOrigins(void)
-{
- unsigned long screensLeft, prevScreensLeft, mask;
- screenLayoutPtr screen;
- ScreenPtr pScreen;
- int x1, x2, y1, y2, left, right, top, bottom;
- int i, j, ref, minX, minY, min, max;
- xf86ScreenLayoutPtr pLayout;
- Bool OldStyleConfig = FALSE;
-
- /* need to have this set up with a config file option */
- HardEdges = FALSE;
-
- bzero(xf86ScreenLayout, MAXSCREENS * sizeof(xf86ScreenLayoutRec));
-
- screensLeft = prevScreensLeft = (1 << xf86NumScreens) - 1;
-
- while(1) {
- for(mask = screensLeft, i = 0; mask; mask >>= 1, i++) {
- if(!(mask & 1L)) continue;
-
- screen = &xf86ConfigLayout.screens[i];
-
- switch(screen->where) {
- case PosObsolete:
- OldStyleConfig = TRUE;
- pLayout = &xf86ScreenLayout[i];
- /* force edge lists */
- if(screen->left) {
- ref = screen->left->screennum;
- pLayout->left = AddEdge(pLayout->left,
- 0, xf86Screens[i]->pScreen->height,
- xf86Screens[ref]->pScreen->width, 0, ref);
- }
- if(screen->right) {
- ref = screen->right->screennum;
- pScreen = xf86Screens[i]->pScreen;
- pLayout->right = AddEdge(pLayout->right,
- 0, pScreen->height, -pScreen->width, 0, ref);
- }
- if(screen->top) {
- ref = screen->top->screennum;
- pLayout->up = AddEdge(pLayout->up,
- 0, xf86Screens[i]->pScreen->width,
- 0, xf86Screens[ref]->pScreen->height, ref);
- }
- if(screen->bottom) {
- ref = screen->bottom->screennum;
- pScreen = xf86Screens[i]->pScreen;
- pLayout->down = AddEdge(pLayout->down,
- 0, pScreen->width, 0, -pScreen->height, ref);
- }
- /* we could also try to place it based on those
- relative locations if we wanted to */
- screen->x = screen->y = 0;
- /* FALLTHROUGH */
- case PosAbsolute:
- dixScreenOrigins[i].x = screen->x;
- dixScreenOrigins[i].y = screen->y;
- screensLeft &= ~(1 << i);
- break;
- case PosRelative:
- ref = screen->refscreen->screennum;
- if(screensLeft & (1 << ref)) break;
- dixScreenOrigins[i].x = dixScreenOrigins[ref].x + screen->x;
- dixScreenOrigins[i].y = dixScreenOrigins[ref].y + screen->y;
- screensLeft &= ~(1 << i);
- break;
- case PosRightOf:
- ref = screen->refscreen->screennum;
- if(screensLeft & (1 << ref)) break;
- pScreen = xf86Screens[ref]->pScreen;
- dixScreenOrigins[i].x =
- dixScreenOrigins[ref].x + pScreen->width;
- dixScreenOrigins[i].y = dixScreenOrigins[ref].y;
- screensLeft &= ~(1 << i);
- break;
- case PosLeftOf:
- ref = screen->refscreen->screennum;
- if(screensLeft & (1 << ref)) break;
- pScreen = xf86Screens[i]->pScreen;
- dixScreenOrigins[i].x =
- dixScreenOrigins[ref].x - pScreen->width;
- dixScreenOrigins[i].y = dixScreenOrigins[ref].y;
- screensLeft &= ~(1 << i);
- break;
- case PosBelow:
- ref = screen->refscreen->screennum;
- if(screensLeft & (1 << ref)) break;
- pScreen = xf86Screens[ref]->pScreen;
- dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
- dixScreenOrigins[i].y =
- dixScreenOrigins[ref].y + pScreen->height;
- screensLeft &= ~(1 << i);
- break;
- case PosAbove:
- ref = screen->refscreen->screennum;
- if(screensLeft & (1 << ref)) break;
- pScreen = xf86Screens[i]->pScreen;
- dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
- dixScreenOrigins[i].y =
- dixScreenOrigins[ref].y - pScreen->height;
- screensLeft &= ~(1 << i);
- break;
- default:
- ErrorF("Illegal placement keyword in Layout!\n");
- break;
- }
-
- }
-
- if(!screensLeft) break;
-
- if(screensLeft == prevScreensLeft) {
- /* All the remaining screens are referencing each other.
- Assign a value to one of them and go through again */
- i = 0;
- while(!((1 << i) & screensLeft)){ i++; }
-
- ref = xf86ConfigLayout.screens[i].refscreen->screennum;
- dixScreenOrigins[ref].x = dixScreenOrigins[ref].y = 0;
- screensLeft &= ~(1 << ref);
- }
-
- prevScreensLeft = screensLeft;
- }
-
- /* justify the topmost and leftmost to (0,0) */
- minX = dixScreenOrigins[0].x;
- minY = dixScreenOrigins[0].y;
-
- for(i = 1; i < xf86NumScreens; i++) {
- if(dixScreenOrigins[i].x < minX)
- minX = dixScreenOrigins[i].x;
- if(dixScreenOrigins[i].y < minY)
- minY = dixScreenOrigins[i].y;
- }
-
- if (minX || minY) {
- for(i = 0; i < xf86NumScreens; i++) {
- dixScreenOrigins[i].x -= minX;
- dixScreenOrigins[i].y -= minY;
- }
- }
-
-
- /* Create the edge lists */
-
- if(!OldStyleConfig) {
- for(i = 0; i < xf86NumScreens; i++) {
- pLayout = &xf86ScreenLayout[i];
-
- pScreen = xf86Screens[i]->pScreen;
-
- left = dixScreenOrigins[i].x;
- right = left + pScreen->width;
- top = dixScreenOrigins[i].y;
- bottom = top + pScreen->height;
-
- for(j = 0; j < xf86NumScreens; j++) {
- if(i == j) continue;
-
- x1 = dixScreenOrigins[j].x;
- x2 = x1 + xf86Screens[j]->pScreen->width;
- y1 = dixScreenOrigins[j].y;
- y2 = y1 + xf86Screens[j]->pScreen->height;
-
- if((bottom > y1) && (top < y2)) {
- min = y1 - top;
- if(min < 0) min = 0;
- max = pScreen->height - (bottom - y2);
- if(max > pScreen->height) max = pScreen->height;
-
- if(((left - 1) >= x1) && ((left - 1) < x2))
- pLayout->left = AddEdge(pLayout->left, min, max,
- dixScreenOrigins[i].x - dixScreenOrigins[j].x,
- dixScreenOrigins[i].y - dixScreenOrigins[j].y, j);
-
- if((right >= x1) && (right < x2))
- pLayout->right = AddEdge(pLayout->right, min, max,
- dixScreenOrigins[i].x - dixScreenOrigins[j].x,
- dixScreenOrigins[i].y - dixScreenOrigins[j].y, j);
- }
-
-
- if((left < x2) && (right > x1)) {
- min = x1 - left;
- if(min < 0) min = 0;
- max = pScreen->width - (right - x2);
- if(max > pScreen->width) max = pScreen->width;
-
- if(((top - 1) >= y1) && ((top - 1) < y2))
- pLayout->up = AddEdge(pLayout->up, min, max,
- dixScreenOrigins[i].x - dixScreenOrigins[j].x,
- dixScreenOrigins[i].y - dixScreenOrigins[j].y, j);
-
- if((bottom >= y1) && (bottom < y2))
- pLayout->down = AddEdge(pLayout->down, min, max,
- dixScreenOrigins[i].x - dixScreenOrigins[j].x,
- dixScreenOrigins[i].y - dixScreenOrigins[j].y, j);
- }
- }
- }
- }
-
- if(!HardEdges && !OldStyleConfig) {
- for(i = 0; i < xf86NumScreens; i++) {
- pLayout = &xf86ScreenLayout[i];
- pScreen = xf86Screens[i]->pScreen;
- if(pLayout->left)
- FillOutEdge(pLayout->left, pScreen->height);
- if(pLayout->right)
- FillOutEdge(pLayout->right, pScreen->height);
- if(pLayout->up)
- FillOutEdge(pLayout->up, pScreen->width);
- if(pLayout->down)
- FillOutEdge(pLayout->down, pScreen->width);
- }
- }
-}
-
-void
-xf86ReconfigureLayout(void)
-{
- int i;
-
- for (i = 0; i < MAXSCREENS; i++) {
- xf86ScreenLayoutPtr sl = &xf86ScreenLayout[i];
- /* we don't have to zero these, xf86InitOrigins() takes care of that */
- if (sl->left) xfree(sl->left);
- if (sl->right) xfree(sl->right);
- if (sl->up) xfree(sl->up);
- if (sl->down) xfree(sl->down);
- }
-
- xf86InitOrigins();
-}
-
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86DGA.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86DGA.c
deleted file mode 100644
index a213e39e2..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86DGA.c
+++ /dev/null
@@ -1,1267 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86DGA.c,v 1.7 2005/11/08 03:12:43 alanc Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86DGA.c,v 1.46 2002/12/03 18:17:40 tsi Exp $ */
-/*
- * Copyright (c) 1998-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- *
- * Written by Mark Vojkovich
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86str.h"
-#include "xf86Priv.h"
-#include "dgaproc.h"
-#include <X11/extensions/xf86dgastr.h>
-#include "colormapst.h"
-#include "pixmapstr.h"
-#include "inputstr.h"
-#include "globals.h"
-#include "servermd.h"
-#include "micmap.h"
-#ifdef XKB
-#include <X11/extensions/XKBsrv.h>
-#endif
-#include "xf86Xinput.h"
-
-static unsigned long DGAGeneration = 0;
-static int DGAScreenIndex = -1;
-
-static Bool DGACloseScreen(int i, ScreenPtr pScreen);
-static void DGADestroyColormap(ColormapPtr pmap);
-static void DGAInstallColormap(ColormapPtr pmap);
-static void DGAUninstallColormap(ColormapPtr pmap);
-
-static void
-DGACopyModeInfo(
- DGAModePtr mode,
- XDGAModePtr xmode
-);
-
-#if defined(XFree86LOADER) || !defined(XFreeXDGA)
-int *XDGAEventBase = NULL;
-#else
-int *XDGAEventBase = &DGAEventBase;
-#endif
-
-#define DGA_GET_SCREEN_PRIV(pScreen) \
- ((DGAScreenPtr)((pScreen)->devPrivates[DGAScreenIndex].ptr))
-
-
-typedef struct _FakedVisualList{
- Bool free;
- VisualPtr pVisual;
- struct _FakedVisualList *next;
-} FakedVisualList;
-
-
-typedef struct {
- ScrnInfoPtr pScrn;
- int numModes;
- DGAModePtr modes;
- CloseScreenProcPtr CloseScreen;
- DestroyColormapProcPtr DestroyColormap;
- InstallColormapProcPtr InstallColormap;
- UninstallColormapProcPtr UninstallColormap;
- DGADevicePtr current;
- DGAFunctionPtr funcs;
- int input;
- ClientPtr client;
- int pixmapMode;
- FakedVisualList *fakedVisuals;
- ColormapPtr dgaColormap;
- ColormapPtr savedColormap;
- Bool grabMouse;
- Bool grabKeyboard;
-} DGAScreenRec, *DGAScreenPtr;
-
-
-Bool
-DGAInit(
- ScreenPtr pScreen,
- DGAFunctionPtr funcs,
- DGAModePtr modes,
- int num
-){
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- DGAScreenPtr pScreenPriv;
- int i;
-
- if(!funcs || !funcs->SetMode || !funcs->OpenFramebuffer)
- return FALSE;
-
- if(!modes || num <= 0)
- return FALSE;
-
- if(DGAGeneration != serverGeneration) {
- if((DGAScreenIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- DGAGeneration = serverGeneration;
- }
-
- if(!(pScreenPriv = (DGAScreenPtr)xalloc(sizeof(DGAScreenRec))))
- return FALSE;
-
- pScreenPriv->pScrn = pScrn;
- pScreenPriv->numModes = num;
- pScreenPriv->modes = modes;
- pScreenPriv->current = NULL;
-
- pScreenPriv->funcs = funcs;
- pScreenPriv->input = 0;
- pScreenPriv->client = NULL;
- pScreenPriv->fakedVisuals = NULL;
- pScreenPriv->dgaColormap = NULL;
- pScreenPriv->savedColormap = NULL;
- pScreenPriv->grabMouse = FALSE;
- pScreenPriv->grabKeyboard = FALSE;
-
- for(i = 0; i < num; i++)
- modes[i].num = i + 1;
-
-#ifdef PANORAMIX
- if(!noPanoramiXExtension)
- for(i = 0; i < num; i++)
- modes[i].flags &= ~DGA_PIXMAP_AVAILABLE;
-#endif
-
-
- pScreen->devPrivates[DGAScreenIndex].ptr = (pointer)pScreenPriv;
- pScreenPriv->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = DGACloseScreen;
- pScreenPriv->DestroyColormap = pScreen->DestroyColormap;
- pScreen->DestroyColormap = DGADestroyColormap;
- pScreenPriv->InstallColormap = pScreen->InstallColormap;
- pScreen->InstallColormap = DGAInstallColormap;
- pScreenPriv->UninstallColormap = pScreen->UninstallColormap;
- pScreen->UninstallColormap = DGAUninstallColormap;
-
- /*
- * This is now set in InitOutput().
- *
- pScrn->SetDGAMode = xf86SetDGAMode;
- */
-
- return TRUE;
-}
-
-/* DGAReInitModes allows the driver to re-initialize
- * the DGA mode list.
- */
-
-Bool
-DGAReInitModes(
- ScreenPtr pScreen,
- DGAModePtr modes,
- int num
-){
- DGAScreenPtr pScreenPriv;
- int i;
-
- /* No DGA? Ignore call (but don't make it look like it failed) */
- if(DGAScreenIndex < 0)
- return TRUE;
-
- pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
-
- /* Same as above */
- if(!pScreenPriv)
- return TRUE;
-
- /* Can't do this while DGA is active */
- if(pScreenPriv->current)
- return FALSE;
-
- /* Quick sanity check */
- if(!num)
- modes = NULL;
- else if(!modes)
- num = 0;
-
- pScreenPriv->numModes = num;
- pScreenPriv->modes = modes;
-
- /* This practically disables DGA. So be it. */
- if(!num)
- return TRUE;
-
- for(i = 0; i < num; i++)
- modes[i].num = i + 1;
-
-#ifdef PANORAMIX
- if(!noPanoramiXExtension)
- for(i = 0; i < num; i++)
- modes[i].flags &= ~DGA_PIXMAP_AVAILABLE;
-#endif
-
- return TRUE;
-}
-
-static void
-FreeMarkedVisuals(ScreenPtr pScreen)
-{
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
- FakedVisualList *prev, *curr, *tmp;
-
- if(!pScreenPriv->fakedVisuals)
- return;
-
- prev = NULL;
- curr = pScreenPriv->fakedVisuals;
-
- while(curr) {
- if(curr->free) {
- tmp = curr;
- curr = curr->next;
- if(prev)
- prev->next = curr;
- else
- pScreenPriv->fakedVisuals = curr;
- xfree(tmp->pVisual);
- xfree(tmp);
- } else {
- prev = curr;
- curr = curr->next;
- }
- }
-}
-
-
-static Bool
-DGACloseScreen(int i, ScreenPtr pScreen)
-{
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
-
- FreeMarkedVisuals(pScreen);
-
- pScreen->CloseScreen = pScreenPriv->CloseScreen;
- pScreen->DestroyColormap = pScreenPriv->DestroyColormap;
- pScreen->InstallColormap = pScreenPriv->InstallColormap;
- pScreen->UninstallColormap = pScreenPriv->UninstallColormap;
-
- /* DGAShutdown() should have ensured that no DGA
- screen were active by here */
-
- xfree(pScreenPriv);
-
- return((*pScreen->CloseScreen)(i, pScreen));
-}
-
-
-static void
-DGADestroyColormap(ColormapPtr pmap)
-{
- ScreenPtr pScreen = pmap->pScreen;
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
- VisualPtr pVisual = pmap->pVisual;
-
- if(pScreenPriv->fakedVisuals) {
- FakedVisualList *curr = pScreenPriv->fakedVisuals;
-
- while(curr) {
- if(curr->pVisual == pVisual) {
- /* We can't get rid of them yet since FreeColormap
- still needs the pVisual during the cleanup */
- curr->free = TRUE;
- break;
- }
- curr = curr->next;
- }
- }
-
- if(pScreenPriv->DestroyColormap) {
- pScreen->DestroyColormap = pScreenPriv->DestroyColormap;
- (*pScreen->DestroyColormap)(pmap);
- pScreen->DestroyColormap = DGADestroyColormap;
- }
-}
-
-
-static void
-DGAInstallColormap(ColormapPtr pmap)
-{
- ScreenPtr pScreen = pmap->pScreen;
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
-
- if(pScreenPriv->current && pScreenPriv->dgaColormap) {
- if (pmap != pScreenPriv->dgaColormap) {
- pScreenPriv->savedColormap = pmap;
- pmap = pScreenPriv->dgaColormap;
- }
- }
-
- pScreen->InstallColormap = pScreenPriv->InstallColormap;
- (*pScreen->InstallColormap)(pmap);
- pScreen->InstallColormap = DGAInstallColormap;
-}
-
-static void
-DGAUninstallColormap(ColormapPtr pmap)
-{
- ScreenPtr pScreen = pmap->pScreen;
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
-
- if(pScreenPriv->current && pScreenPriv->dgaColormap) {
- if (pmap == pScreenPriv->dgaColormap) {
- pScreenPriv->dgaColormap = NULL;
- }
- }
-
- pScreen->UninstallColormap = pScreenPriv->UninstallColormap;
- (*pScreen->UninstallColormap)(pmap);
- pScreen->UninstallColormap = DGAUninstallColormap;
-}
-
-int
-xf86SetDGAMode(
- int index,
- int num,
- DGADevicePtr devRet
-){
- ScreenPtr pScreen = screenInfo.screens[index];
- DGAScreenPtr pScreenPriv;
- ScrnInfoPtr pScrn;
- DGADevicePtr device;
- PixmapPtr pPix = NULL;
- DGAModePtr pMode = NULL;
-
- /* First check if DGAInit was successful on this screen */
- if (DGAScreenIndex < 0)
- return BadValue;
- pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
- if (!pScreenPriv)
- return BadValue;
- pScrn = pScreenPriv->pScrn;
-
- if(!num) {
- if(pScreenPriv->current) {
- PixmapPtr oldPix = pScreenPriv->current->pPix;
- if(oldPix) {
- if(oldPix->drawable.id)
- FreeResource(oldPix->drawable.id, RT_NONE);
- else
- (*pScreen->DestroyPixmap)(oldPix);
- }
- xfree(pScreenPriv->current);
- pScreenPriv->current = NULL;
- pScrn->vtSema = TRUE;
- (*pScreenPriv->funcs->SetMode)(pScrn, NULL);
- if(pScreenPriv->savedColormap) {
- (*pScreen->InstallColormap)(pScreenPriv->savedColormap);
- pScreenPriv->savedColormap = NULL;
- }
- pScreenPriv->dgaColormap = NULL;
- (*pScrn->EnableDisableFBAccess)(index, TRUE);
-
- FreeMarkedVisuals(pScreen);
- }
-
- pScreenPriv->grabMouse = FALSE;
- pScreenPriv->grabKeyboard = FALSE;
-
- return Success;
- }
-
- if(!pScrn->vtSema && !pScreenPriv->current) /* Really switched away */
- return BadAlloc;
-
- if((num > 0) && (num <= pScreenPriv->numModes))
- pMode = &(pScreenPriv->modes[num - 1]);
- else
- return BadValue;
-
- if(!(device = (DGADevicePtr)xalloc(sizeof(DGADeviceRec))))
- return BadAlloc;
-
- if(!pScreenPriv->current) {
- Bool oldVTSema = pScrn->vtSema;
-
- pScrn->vtSema = FALSE; /* kludge until we rewrite VT switching */
- (*pScrn->EnableDisableFBAccess)(index, FALSE);
- pScrn->vtSema = oldVTSema;
- }
-
- if(!(*pScreenPriv->funcs->SetMode)(pScrn, pMode)) {
- xfree(device);
- return BadAlloc;
- }
-
- pScrn->currentMode = pMode->mode;
-
- if(!pScreenPriv->current && !pScreenPriv->input) {
- /* if it's multihead we need to warp the cursor off of
- our screen so it doesn't get trapped */
- }
-
- pScrn->vtSema = FALSE;
-
- if(pScreenPriv->current) {
- PixmapPtr oldPix = pScreenPriv->current->pPix;
- if(oldPix) {
- if(oldPix->drawable.id)
- FreeResource(oldPix->drawable.id, RT_NONE);
- else
- (*pScreen->DestroyPixmap)(oldPix);
- }
- xfree(pScreenPriv->current);
- pScreenPriv->current = NULL;
- }
-
- if(pMode->flags & DGA_PIXMAP_AVAILABLE) {
- if((pPix = (*pScreen->CreatePixmap)(pScreen, 0, 0, pMode->depth))) {
- (*pScreen->ModifyPixmapHeader)(pPix,
- pMode->pixmapWidth, pMode->pixmapHeight,
- pMode->depth, pMode->bitsPerPixel,
- pMode->bytesPerScanline,
- (pointer)(pMode->address));
- }
- }
-
- devRet->mode = device->mode = pMode;
- devRet->pPix = device->pPix = pPix;
- pScreenPriv->current = device;
- pScreenPriv->pixmapMode = FALSE;
- pScreenPriv->grabMouse = TRUE;
- pScreenPriv->grabKeyboard = TRUE;
-
- return Success;
-}
-
-
-
-/*********** exported ones ***************/
-
-void
-DGASetInputMode(int index, Bool keyboard, Bool mouse)
-{
- ScreenPtr pScreen = screenInfo.screens[index];
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
-
- if (pScreenPriv)
- {
- pScreenPriv->grabMouse = mouse;
- pScreenPriv->grabKeyboard = keyboard;
- }
-}
-
-Bool
-DGAChangePixmapMode(int index, int *x, int *y, int mode)
-{
- DGAScreenPtr pScreenPriv;
- DGADevicePtr pDev;
- DGAModePtr pMode;
- PixmapPtr pPix;
-
- if(DGAScreenIndex < 0)
- return FALSE;
-
- pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- if(!pScreenPriv || !pScreenPriv->current || !pScreenPriv->current->pPix)
- return FALSE;
-
- pDev = pScreenPriv->current;
- pPix = pDev->pPix;
- pMode = pDev->mode;
-
- if(mode) {
- int shift = 2;
-
- if(*x > (pMode->pixmapWidth - pMode->viewportWidth))
- *x = pMode->pixmapWidth - pMode->viewportWidth;
- if(*y > (pMode->pixmapHeight - pMode->viewportHeight))
- *y = pMode->pixmapHeight - pMode->viewportHeight;
-
- switch(xf86Screens[index]->bitsPerPixel) {
- case 16: shift = 1; break;
- case 32: shift = 0; break;
- default: break;
- }
-
- if(BITMAP_SCANLINE_PAD == 64)
- shift++;
-
- *x = (*x >> shift) << shift;
-
- pPix->drawable.x = *x;
- pPix->drawable.y = *y;
- pPix->drawable.width = pMode->viewportWidth;
- pPix->drawable.height = pMode->viewportHeight;
- } else {
- pPix->drawable.x = 0;
- pPix->drawable.y = 0;
- pPix->drawable.width = pMode->pixmapWidth;
- pPix->drawable.height = pMode->pixmapHeight;
- }
- pPix->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- pScreenPriv->pixmapMode = mode;
-
- return TRUE;
-}
-
-Bool
-DGAAvailable(int index)
-{
- if(DGAScreenIndex < 0)
- return FALSE;
-
- if (!xf86NoSharedResources(((ScrnInfoPtr)screenInfo.screens[index]->
- devPrivates[xf86ScreenIndex].ptr)->scrnIndex,MEM))
- return FALSE;
-
- if(DGA_GET_SCREEN_PRIV(screenInfo.screens[index]))
- return TRUE;
-
- return FALSE;
-}
-
-Bool
-DGAActive(int index)
-{
- DGAScreenPtr pScreenPriv;
-
- if(DGAScreenIndex < 0)
- return FALSE;
-
- pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- if(pScreenPriv && pScreenPriv->current)
- return TRUE;
-
- return FALSE;
-}
-
-
-
-/* Called by the event code in case the server is abruptly terminated */
-
-void
-DGAShutdown()
-{
- ScrnInfoPtr pScrn;
- int i;
-
- if(DGAScreenIndex < 0)
- return;
-
- for(i = 0; i < screenInfo.numScreens; i++) {
- pScrn = xf86Screens[i];
-
- (void)(*pScrn->SetDGAMode)(pScrn->scrnIndex, 0, NULL);
- }
-}
-
-/* Called by the extension to initialize a mode */
-
-int
-DGASetMode(
- int index,
- int num,
- XDGAModePtr mode,
- PixmapPtr *pPix
-){
- ScrnInfoPtr pScrn = xf86Screens[index];
- DGADeviceRec device;
- int ret;
-
- /* We rely on the extension to check that DGA is available */
-
- ret = (*pScrn->SetDGAMode)(index, num, &device);
- if((ret == Success) && num) {
- DGACopyModeInfo(device.mode, mode);
- *pPix = device.pPix;
- }
-
- return ret;
-}
-
-/* Called from the extension to let the DDX know which events are requested */
-
-void
-DGASelectInput(
- int index,
- ClientPtr client,
- long mask
-){
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- /* We rely on the extension to check that DGA is available */
- pScreenPriv->client = client;
- pScreenPriv->input = mask;
-}
-
-int
-DGAGetViewportStatus(int index)
-{
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- /* We rely on the extension to check that DGA is active */
-
- if (!pScreenPriv->funcs->GetViewport)
- return 0;
-
- return (*pScreenPriv->funcs->GetViewport)(pScreenPriv->pScrn);
-}
-
-int
-DGASetViewport(
- int index,
- int x, int y,
- int mode
-){
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- if (pScreenPriv->funcs->SetViewport)
- (*pScreenPriv->funcs->SetViewport)(pScreenPriv->pScrn, x, y, mode);
- return Success;
-}
-
-
-static int
-BitsClear(CARD32 data)
-{
- int bits = 0;
- CARD32 mask;
-
- for(mask = 1; mask; mask <<= 1) {
- if(!(data & mask)) bits++;
- else break;
- }
-
- return bits;
-}
-
-int
-DGACreateColormap(int index, ClientPtr client, int id, int mode, int alloc)
-{
- ScreenPtr pScreen = screenInfo.screens[index];
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
- FakedVisualList *fvlp;
- VisualPtr pVisual;
- DGAModePtr pMode;
- ColormapPtr pmap;
-
- if(!mode || (mode > pScreenPriv->numModes))
- return BadValue;
-
- if((alloc != AllocNone) && (alloc != AllocAll))
- return BadValue;
-
- pMode = &(pScreenPriv->modes[mode - 1]);
-
- if(!(pVisual = xalloc(sizeof(VisualRec))))
- return BadAlloc;
-
- pVisual->vid = FakeClientID(0);
- pVisual->class = pMode->visualClass;
- pVisual->nplanes = pMode->depth;
- pVisual->ColormapEntries = 1 << pMode->depth;
- pVisual->bitsPerRGBValue = (pMode->depth + 2) / 3;
-
- switch (pVisual->class) {
- case PseudoColor:
- case GrayScale:
- case StaticGray:
- pVisual->bitsPerRGBValue = 8; /* not quite */
- pVisual->redMask = 0;
- pVisual->greenMask = 0;
- pVisual->blueMask = 0;
- pVisual->offsetRed = 0;
- pVisual->offsetGreen = 0;
- pVisual->offsetBlue = 0;
- break;
- case DirectColor:
- case TrueColor:
- pVisual->ColormapEntries = 1 << pVisual->bitsPerRGBValue;
- /* fall through */
- case StaticColor:
- pVisual->redMask = pMode->red_mask;
- pVisual->greenMask = pMode->green_mask;
- pVisual->blueMask = pMode->blue_mask;
- pVisual->offsetRed = BitsClear(pVisual->redMask);
- pVisual->offsetGreen = BitsClear(pVisual->greenMask);
- pVisual->offsetBlue = BitsClear(pVisual->blueMask);
- }
-
- if(!(fvlp = xalloc(sizeof(FakedVisualList)))) {
- xfree(pVisual);
- return BadAlloc;
- }
-
- fvlp->free = FALSE;
- fvlp->pVisual = pVisual;
- fvlp->next = pScreenPriv->fakedVisuals;
- pScreenPriv->fakedVisuals = fvlp;
-
- LEGAL_NEW_RESOURCE(id, client);
-
- return CreateColormap(id, pScreen, pVisual, &pmap, alloc, client->index);
-}
-
-/* Called by the extension to install a colormap on DGA active screens */
-
-void
-DGAInstallCmap(ColormapPtr cmap)
-{
- ScreenPtr pScreen = cmap->pScreen;
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
-
- /* We rely on the extension to check that DGA is active */
-
- if(!pScreenPriv->dgaColormap)
- pScreenPriv->savedColormap = miInstalledMaps[pScreen->myNum];
-
- pScreenPriv->dgaColormap = cmap;
-
- (*pScreen->InstallColormap)(cmap);
-}
-
-int
-DGASync(int index)
-{
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- /* We rely on the extension to check that DGA is active */
-
- if (pScreenPriv->funcs->Sync)
- (*pScreenPriv->funcs->Sync)(pScreenPriv->pScrn);
-
- return Success;
-}
-
-int
-DGAFillRect(
- int index,
- int x, int y, int w, int h,
- unsigned long color
-){
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- /* We rely on the extension to check that DGA is active */
-
- if(pScreenPriv->funcs->FillRect &&
- (pScreenPriv->current->mode->flags & DGA_FILL_RECT)) {
-
- (*pScreenPriv->funcs->FillRect)(pScreenPriv->pScrn, x, y, w, h, color);
- return Success;
- }
- return BadMatch;
-}
-
-int
-DGABlitRect(
- int index,
- int srcx, int srcy,
- int w, int h,
- int dstx, int dsty
-){
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- /* We rely on the extension to check that DGA is active */
-
- if(pScreenPriv->funcs->BlitRect &&
- (pScreenPriv->current->mode->flags & DGA_BLIT_RECT)) {
-
- (*pScreenPriv->funcs->BlitRect)(pScreenPriv->pScrn,
- srcx, srcy, w, h, dstx, dsty);
- return Success;
- }
- return BadMatch;
-}
-
-int
-DGABlitTransRect(
- int index,
- int srcx, int srcy,
- int w, int h,
- int dstx, int dsty,
- unsigned long color
-){
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- /* We rely on the extension to check that DGA is active */
-
- if(pScreenPriv->funcs->BlitTransRect &&
- (pScreenPriv->current->mode->flags & DGA_BLIT_RECT_TRANS)) {
-
- (*pScreenPriv->funcs->BlitTransRect)(pScreenPriv->pScrn,
- srcx, srcy, w, h, dstx, dsty, color);
- return Success;
- }
- return BadMatch;
-}
-
-
-int
-DGAGetModes(int index)
-{
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
- /* We rely on the extension to check that DGA is available */
-
- return pScreenPriv->numModes;
-}
-
-
-int
-DGAGetModeInfo(
- int index,
- XDGAModePtr mode,
- int num
-){
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
- /* We rely on the extension to check that DGA is available */
-
- if((num <= 0) || (num > pScreenPriv->numModes))
- return BadValue;
-
- DGACopyModeInfo(&(pScreenPriv->modes[num - 1]), mode);
-
- return Success;
-}
-
-
-static void
-DGACopyModeInfo(
- DGAModePtr mode,
- XDGAModePtr xmode
-){
- DisplayModePtr dmode = mode->mode;
-
- xmode->num = mode->num;
- xmode->name = dmode->name;
- xmode->VSync_num = (int)(dmode->VRefresh * 1000.0);
- xmode->VSync_den = 1000;
- xmode->flags = mode->flags;
- xmode->imageWidth = mode->imageWidth;
- xmode->imageHeight = mode->imageHeight;
- xmode->pixmapWidth = mode->pixmapWidth;
- xmode->pixmapHeight = mode->pixmapHeight;
- xmode->bytesPerScanline = mode->bytesPerScanline;
- xmode->byteOrder = mode->byteOrder;
- xmode->depth = mode->depth;
- xmode->bitsPerPixel = mode->bitsPerPixel;
- xmode->red_mask = mode->red_mask;
- xmode->green_mask = mode->green_mask;
- xmode->blue_mask = mode->blue_mask;
- xmode->visualClass = mode->visualClass;
- xmode->viewportWidth = mode->viewportWidth;
- xmode->viewportHeight = mode->viewportHeight;
- xmode->xViewportStep = mode->xViewportStep;
- xmode->yViewportStep = mode->yViewportStep;
- xmode->maxViewportX = mode->maxViewportX;
- xmode->maxViewportY = mode->maxViewportY;
- xmode->viewportFlags = mode->viewportFlags;
- xmode->reserved1 = mode->reserved1;
- xmode->reserved2 = mode->reserved2;
- xmode->offset = mode->offset;
-
- if(dmode->Flags & V_INTERLACE) xmode->flags |= DGA_INTERLACED;
- if(dmode->Flags & V_DBLSCAN) xmode->flags |= DGA_DOUBLESCAN;
-}
-
-
-Bool
-DGAVTSwitch(void)
-{
- ScreenPtr pScreen;
- int i;
-
- for(i = 0; i < screenInfo.numScreens; i++) {
- pScreen = screenInfo.screens[i];
-
- /* Alternatively, this could send events to DGA clients */
-
- if(DGAScreenIndex >= 0) {
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
-
- if(pScreenPriv && pScreenPriv->current)
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-
-/* We have the power to steal or modify events that are about to get queued */
-
-Bool
-DGAStealKeyEvent(int index, xEvent *e)
-{
- DGAScreenPtr pScreenPriv;
- dgaEvent de;
-
- if(DGAScreenIndex < 0) /* no DGA */
- return FALSE;
-
- pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- if(!pScreenPriv || !pScreenPriv->grabKeyboard) /* no direct mode */
- return FALSE;
-
- de.u.u.type = e->u.u.type + *XDGAEventBase;
- de.u.u.detail = e->u.u.detail;
- de.u.event.time = e->u.keyButtonPointer.time;
- xf86eqEnqueue ((xEvent *) &de);
- return TRUE;
-}
-
-static int DGAMouseX, DGAMouseY;
-
-Bool
-DGAStealMouseEvent(int index, xEvent *e, int dx, int dy)
-{
- DGAScreenPtr pScreenPriv;
- dgaEvent de;
-
- if(DGAScreenIndex < 0) /* no DGA */
- return FALSE;
-
- pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- if(!pScreenPriv || !pScreenPriv->grabMouse) /* no direct mode */
- return FALSE;
-
- DGAMouseX += dx;
- if (DGAMouseX < 0)
- DGAMouseX = 0;
- else if (DGAMouseX > screenInfo.screens[index]->width)
- DGAMouseX = screenInfo.screens[index]->width;
- DGAMouseY += dy;
- if (DGAMouseY < 0)
- DGAMouseY = 0;
- else if (DGAMouseY > screenInfo.screens[index]->height)
- DGAMouseY = screenInfo.screens[index]->height;
- de.u.u.type = e->u.u.type + *XDGAEventBase;
- de.u.u.detail = e->u.u.detail;
- de.u.event.time = e->u.keyButtonPointer.time;
- de.u.event.dx = dx;
- de.u.event.dy = dy;
- de.u.event.pad1 = DGAMouseX;
- de.u.event.pad2 = DGAMouseY;
- xf86eqEnqueue ((xEvent *) &de);
- return TRUE;
-}
-
-Bool
-DGAIsDgaEvent (xEvent *e)
-{
- int coreEquiv;
- if (DGAScreenIndex < 0 || XDGAEventBase == 0)
- return FALSE;
- coreEquiv = e->u.u.type - *XDGAEventBase;
- if (KeyPress <= coreEquiv && coreEquiv <= MotionNotify)
- return TRUE;
- return FALSE;
-}
-
-#define NoSuchEvent 0x80000000 /* so doesn't match NoEventMask */
-static Mask filters[] =
-{
- NoSuchEvent, /* 0 */
- NoSuchEvent, /* 1 */
- KeyPressMask, /* KeyPress */
- KeyReleaseMask, /* KeyRelease */
- ButtonPressMask, /* ButtonPress */
- ButtonReleaseMask, /* ButtonRelease */
- PointerMotionMask, /* MotionNotify (initial state) */
-};
-
-static void
-DGAProcessKeyboardEvent (ScreenPtr pScreen, dgaEvent *de, DeviceIntPtr keybd)
-{
- int key, bit;
- register BYTE *kptr;
- register int i;
- register CARD8 modifiers;
- register CARD16 mask;
- int coreEquiv;
- xEvent core;
- KeyClassPtr keyc = keybd->key;
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
-
- coreEquiv = de->u.u.type - *XDGAEventBase;
-
- /*
- * Fill in remaining event state
- */
- de->u.event.dx = 0;
- de->u.event.dy = 0;
- de->u.event.screen = pScreen->myNum;
- de->u.event.state = keyc->state | (inputInfo.pointer)->button->state;
-
- /*
- * Keep the core state in sync by duplicating what
- * CoreProcessKeyboardEvent does
- */
- key = de->u.u.detail;
- kptr = &keyc->down[key >> 3];
- bit = 1 << (key & 7);
- modifiers = keyc->modifierMap[key];
- switch (coreEquiv)
- {
- case KeyPress:
- inputInfo.pointer->valuator->motionHintWindow = NullWindow;
- *kptr |= bit;
- keyc->prev_state = keyc->state;
-#ifdef XKB
- if (noXkbExtension)
-#endif
- {
-
- for (i = 0, mask = 1; modifiers; i++, mask <<= 1)
- {
- if (mask & modifiers)
- {
- /* This key affects modifier "i" */
- keyc->modifierKeyCount[i]++;
- keyc->state |= mask;
- modifiers &= ~mask;
- }
- }
- }
- break;
- case KeyRelease:
- inputInfo.pointer->valuator->motionHintWindow = NullWindow;
- *kptr &= ~bit;
- keyc->prev_state = keyc->state;
-#ifdef XKB
- if (noXkbExtension)
-#endif
- {
- for (i = 0, mask = 1; modifiers; i++, mask <<= 1)
- {
- if (mask & modifiers) {
- /* This key affects modifier "i" */
- if (--keyc->modifierKeyCount[i] <= 0) {
- keyc->state &= ~mask;
- keyc->modifierKeyCount[i] = 0;
- }
- modifiers &= ~mask;
- }
- }
- }
- break;
- }
- /*
- * Deliver the DGA event
- */
- if (pScreenPriv->client)
- {
- /* If the DGA client has selected input, then deliver based on the usual filter */
- TryClientEvents (pScreenPriv->client, (xEvent *) de, 1,
- filters[coreEquiv], pScreenPriv->input, 0);
- }
- else
- {
- /* If the keyboard is actively grabbed, deliver a grabbed core event */
- if (keybd->grab && !keybd->fromPassiveGrab)
- {
- core.u.u.type = coreEquiv;
- core.u.u.detail = de->u.u.detail;
- core.u.keyButtonPointer.time = de->u.event.time;
- core.u.keyButtonPointer.eventX = de->u.event.dx;
- core.u.keyButtonPointer.eventY = de->u.event.dy;
- core.u.keyButtonPointer.rootX = de->u.event.dx;
- core.u.keyButtonPointer.rootY = de->u.event.dy;
- core.u.keyButtonPointer.state = de->u.event.state;
- DeliverGrabbedEvent (&core, keybd, FALSE, 1);
- }
- }
-}
-
-static void
-DGAProcessPointerEvent (ScreenPtr pScreen, dgaEvent *de, DeviceIntPtr mouse)
-{
- ButtonClassPtr butc = mouse->button;
- int coreEquiv;
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
- xEvent core;
-
- coreEquiv = de->u.u.type - *XDGAEventBase;
- /*
- * Fill in remaining event state
- */
- de->u.event.screen = pScreen->myNum;
- de->u.event.state = butc->state | inputInfo.keyboard->key->state;
- /*
- * Keep the core state in sync by duplicating what
- * CoreProcessPointerEvent does
- */
- if (coreEquiv != MotionNotify)
- {
- register int key;
- register BYTE *kptr;
- int bit;
-
- key = de->u.u.detail;
- kptr = &butc->down[key >> 3];
- bit = 1 << (key & 7);
- switch (coreEquiv)
- {
- case ButtonPress:
- mouse->valuator->motionHintWindow = NullWindow;
- if (!(*kptr & bit))
- butc->buttonsDown++;
- butc->motionMask = ButtonMotionMask;
- *kptr |= bit;
- if (key <= 5)
- butc->state |= (Button1Mask >> 1) << key;
- break;
- case ButtonRelease:
- mouse->valuator->motionHintWindow = NullWindow;
- if (*kptr & bit)
- --butc->buttonsDown;
- if (!butc->buttonsDown)
- butc->motionMask = 0;
- *kptr &= ~bit;
- if (key == 0)
- return;
- if (key <= 5)
- butc->state &= ~((Button1Mask >> 1) << key);
- break;
- }
- }
- /*
- * Deliver the DGA event
- */
- if (pScreenPriv->client)
- {
- /* If the DGA client has selected input, then deliver based on the usual filter */
- TryClientEvents (pScreenPriv->client, (xEvent *) de, 1,
- filters[coreEquiv], pScreenPriv->input, 0);
- }
- else
- {
- /* If the pointer is actively grabbed, deliver a grabbed core event */
- if (mouse->grab && !mouse->fromPassiveGrab)
- {
- core.u.u.type = coreEquiv;
- core.u.u.detail = de->u.u.detail;
- core.u.keyButtonPointer.time = de->u.event.time;
- core.u.keyButtonPointer.eventX = de->u.event.dx;
- core.u.keyButtonPointer.eventY = de->u.event.dy;
- core.u.keyButtonPointer.rootX = de->u.event.dx;
- core.u.keyButtonPointer.rootY = de->u.event.dy;
- core.u.keyButtonPointer.state = de->u.event.state;
- DeliverGrabbedEvent (&core, mouse, FALSE, 1);
- }
- }
-}
-
-Bool
-DGADeliverEvent (ScreenPtr pScreen, xEvent *e)
-{
- dgaEvent *de = (dgaEvent *) e;
- DGAScreenPtr pScreenPriv;
- int coreEquiv;
-
- /* no DGA */
- if (DGAScreenIndex < 0 || XDGAEventBase == 0)
- return FALSE;
- pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
-
- /* DGA not initialized on this screen */
- if (!pScreenPriv)
- return FALSE;
-
- coreEquiv = de->u.u.type - *XDGAEventBase;
- /* Not a DGA event */
- if (coreEquiv < KeyPress || coreEquiv > MotionNotify)
- return FALSE;
-
- switch (coreEquiv) {
- case KeyPress:
- case KeyRelease:
- DGAProcessKeyboardEvent (pScreen, de, inputInfo.keyboard);
- break;
- default:
- DGAProcessPointerEvent (pScreen, de, inputInfo.pointer);
- break;
- }
- return TRUE;
-}
-
-Bool
-DGAOpenFramebuffer(
- int index,
- char **name,
- unsigned char **mem,
- int *size,
- int *offset,
- int *flags
-){
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- /* We rely on the extension to check that DGA is available */
-
- return (*pScreenPriv->funcs->OpenFramebuffer)(pScreenPriv->pScrn,
- name, mem, size, offset, flags);
-}
-
-void
-DGACloseFramebuffer(int index)
-{
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
-
- /* We rely on the extension to check that DGA is available */
- if(pScreenPriv->funcs->CloseFramebuffer)
- (*pScreenPriv->funcs->CloseFramebuffer)(pScreenPriv->pScrn);
-}
-
-/* For DGA 1.0 backwards compatibility only */
-
-int
-DGAGetOldDGAMode(int index)
-{
- DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(screenInfo.screens[index]);
- ScrnInfoPtr pScrn = pScreenPriv->pScrn;
- DGAModePtr mode;
- int i, w, h, p;
-
- /* We rely on the extension to check that DGA is available */
-
- w = pScrn->currentMode->HDisplay;
- h = pScrn->currentMode->VDisplay;
- p = ((pScrn->displayWidth * (pScrn->bitsPerPixel >> 3)) + 3) & ~3L;
-
- for(i = 0; i < pScreenPriv->numModes; i++) {
- mode = &(pScreenPriv->modes[i]);
-
- if((mode->viewportWidth == w) && (mode->viewportHeight == h) &&
- (mode->bytesPerScanline == p) &&
- (mode->bitsPerPixel == pScrn->bitsPerPixel) &&
- (mode->depth == pScrn->depth)) {
-
- return mode->num;
- }
- }
-
- return 0;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86DPMS.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86DPMS.c
deleted file mode 100644
index f02585a0f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86DPMS.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86DPMS.c,v 1.11 2003/11/11 21:02:28 dawes Exp $ */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86DPMS.c,v 1.8 2005/07/03 08:53:42 daniels Exp $ */
-
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains the DPMS functions required by the extension.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "globals.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#ifdef DPMSExtension
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
-#include "dpmsproc.h"
-#endif
-
-
-#ifdef DPMSExtension
-static int DPMSGeneration = 0;
-static int DPMSIndex = -1;
-static Bool DPMSClose(int i, ScreenPtr pScreen);
-static int DPMSCount = 0;
-#endif
-
-
-Bool
-xf86DPMSInit(ScreenPtr pScreen, DPMSSetProcPtr set, int flags)
-{
-#ifdef DPMSExtension
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- DPMSPtr pDPMS;
- pointer DPMSOpt;
-
- if (serverGeneration != DPMSGeneration) {
- if ((DPMSIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- DPMSGeneration = serverGeneration;
- }
-
- if (DPMSDisabledSwitch)
- DPMSEnabled = FALSE;
- if (!(pScreen->devPrivates[DPMSIndex].ptr = xcalloc(sizeof(DPMSRec), 1)))
- return FALSE;
-
- pDPMS = (DPMSPtr)pScreen->devPrivates[DPMSIndex].ptr;
- pScrn->DPMSSet = set;
- pDPMS->Flags = flags;
- DPMSOpt = xf86FindOption(pScrn->options, "dpms");
- if (DPMSOpt) {
- if ((pDPMS->Enabled
- = xf86SetBoolOption(pScrn->options, "dpms", FALSE))
- && !DPMSDisabledSwitch)
- DPMSEnabled = TRUE;
- xf86MarkOptionUsed(DPMSOpt);
- xf86DrvMsg(pScreen->myNum, X_CONFIG, "DPMS enabled\n");
- } else if (DPMSEnabledSwitch) {
- if (!DPMSDisabledSwitch)
- DPMSEnabled = TRUE;
- pDPMS->Enabled = TRUE;
- }
- else {
- pDPMS->Enabled = defaultDPMSEnabled;
- }
- pDPMS->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = DPMSClose;
- DPMSCount++;
- return TRUE;
-#else
- return FALSE;
-#endif
-}
-
-
-#ifdef DPMSExtension
-
-static Bool
-DPMSClose(int i, ScreenPtr pScreen)
-{
- DPMSPtr pDPMS;
-
- /* This shouldn't happen */
- if (DPMSIndex < 0)
- return FALSE;
-
- pDPMS = (DPMSPtr)pScreen->devPrivates[DPMSIndex].ptr;
-
- /* This shouldn't happen */
- if (!pDPMS)
- return FALSE;
-
- pScreen->CloseScreen = pDPMS->CloseScreen;
-
- /*
- * Turn on DPMS when shutting down. If this function can be used
- * depends on the order the driver wraps things. If this is called
- * after the driver has shut down everything the driver will have
- * to deal with this internally.
- */
- if (xf86Screens[i]->vtSema && xf86Screens[i]->DPMSSet) {
- xf86Screens[i]->DPMSSet(xf86Screens[i],DPMSModeOn,0);
- }
-
- xfree((pointer)pDPMS);
- pScreen->devPrivates[DPMSIndex].ptr = NULL;
- if (--DPMSCount == 0)
- DPMSIndex = -1;
- return pScreen->CloseScreen(i, pScreen);
-}
-
-
-/*
- * DPMSSet --
- * Device dependent DPMS mode setting hook. This is called whenever
- * the DPMS mode is to be changed.
- */
-void
-DPMSSet(int level)
-{
- int i;
- DPMSPtr pDPMS;
- ScrnInfoPtr pScrn;
-
- DPMSPowerLevel = level;
-
- if (DPMSIndex < 0)
- return;
-
- if (level != DPMSModeOn)
- SaveScreens(SCREEN_SAVER_FORCER, ScreenSaverActive);
-
- /* For each screen, set the DPMS level */
- for (i = 0; i < xf86NumScreens; i++) {
- pScrn = xf86Screens[i];
- pDPMS = (DPMSPtr)screenInfo.screens[i]->devPrivates[DPMSIndex].ptr;
- if (pDPMS && pScrn->DPMSSet && pDPMS->Enabled && pScrn->vtSema) {
- xf86EnableAccess(pScrn);
- pScrn->DPMSSet(pScrn, level, 0);
- }
- }
-}
-
-
-/*
- * DPMSSupported --
- * Return TRUE if any screen supports DPMS.
- */
-Bool
-DPMSSupported(void)
-{
- int i;
- DPMSPtr pDPMS;
- ScrnInfoPtr pScrn;
-
- if (DPMSIndex < 0) {
- return FALSE;
- }
-
- /* For each screen, check if DPMS is supported */
- for (i = 0; i < xf86NumScreens; i++) {
- pScrn = xf86Screens[i];
- pDPMS = (DPMSPtr)screenInfo.screens[i]->devPrivates[DPMSIndex].ptr;
- if (pDPMS && pScrn->DPMSSet)
- return TRUE;
- }
- return FALSE;
-}
-
-
-/*
- * DPMSGet --
- * Device dependent DPMS mode getting hook. This returns the current
- * DPMS mode, or -1 if DPMS is not supported.
- *
- * This should hook in to the appropriate driver-level function, which
- * will be added to the ScrnInfoRec.
- *
- * NOTES:
- * 1. the calling interface should be changed to specify which
- * screen to check.
- * 2. It isn't clear that this function is ever used or what it should
- * return.
- */
-int
-DPMSGet(int *level)
-{
- return DPMSPowerLevel;
-}
-
-#endif /* DPMSExtension */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Debug.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Debug.c
deleted file mode 100644
index 15c267232..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Debug.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Debug.c,v 1.7 2003/09/24 02:43:17 dawes Exp $ */
-
-/*
- * Copyright (c) 2000-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef __UNIXOS2__
-#define I_NEED_OS2_H
-#endif
-
-#include <sys/time.h>
-#include <unistd.h>
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "compiler.h"
-
-void xf86Break1(void)
-{
-}
-
-void xf86Break2(void)
-{
-}
-
-void xf86Break3(void)
-{
-}
-
-char *xf86p8bit[] = { "00000000", "00000001", "00000010", "00000011",
- "00000100", "00000101", "00000110", "00000111",
- "00001000", "00001001", "00001010", "00001011",
- "00001100", "00001101", "00001110", "00001111",
- "00010000", "00010001", "00010010", "00010011",
- "00010100", "00010101", "00010110", "00010111",
- "00011000", "00011001", "00011010", "00011011",
- "00011100", "00011101", "00011110", "00011111",
- "00100000", "00100001", "00100010", "00100011",
- "00100100", "00100101", "00100110", "00100111",
- "00101000", "00101001", "00101010", "00101011",
- "00101100", "00101101", "00101110", "00101111",
- "00110000", "00110001", "00110010", "00110011",
- "00110100", "00110101", "00110110", "00110111",
- "00111000", "00111001", "00111010", "00111011",
- "00111100", "00111101", "00111110", "00111111",
- "01000000", "01000001", "01000010", "01000011",
- "01000100", "01000101", "01000110", "01000111",
- "01001000", "01001001", "01001010", "01001011",
- "01001100", "01001101", "01001110", "01001111",
- "01010000", "01010001", "01010010", "01010011",
- "01010100", "01010101", "01010110", "01010111",
- "01011000", "01011001", "01011010", "01011011",
- "01011100", "01011101", "01011110", "01011111",
- "01100000", "01100001", "01100010", "01100011",
- "01100100", "01100101", "01100110", "01100111",
- "01101000", "01101001", "01101010", "01101011",
- "01101100", "01101101", "01101110", "01101111",
- "01110000", "01110001", "01110010", "01110011",
- "01110100", "01110101", "01110110", "01110111",
- "01111000", "01111001", "01111010", "01111011",
- "01111100", "01111101", "01111110", "01111111",
- "10000000", "10000001", "10000010", "10000011",
- "10000100", "10000101", "10000110", "10000111",
- "10001000", "10001001", "10001010", "10001011",
- "10001100", "10001101", "10001110", "10001111",
- "10010000", "10010001", "10010010", "10010011",
- "10010100", "10010101", "10010110", "10010111",
- "10011000", "10011001", "10011010", "10011011",
- "10011100", "10011101", "10011110", "10011111",
- "10100000", "10100001", "10100010", "10100011",
- "10100100", "10100101", "10100110", "10100111",
- "10101000", "10101001", "10101010", "10101011",
- "10101100", "10101101", "10101110", "10101111",
- "10110000", "10110001", "10110010", "10110011",
- "10110100", "10110101", "10110110", "10110111",
- "10111000", "10111001", "10111010", "10111011",
- "10111100", "10111101", "10111110", "10111111",
- "11000000", "11000001", "11000010", "11000011",
- "11000100", "11000101", "11000110", "11000111",
- "11001000", "11001001", "11001010", "11001011",
- "11001100", "11001101", "11001110", "11001111",
- "11010000", "11010001", "11010010", "11010011",
- "11010100", "11010101", "11010110", "11010111",
- "11011000", "11011001", "11011010", "11011011",
- "11011100", "11011101", "11011110", "11011111",
- "11100000", "11100001", "11100010", "11100011",
- "11100100", "11100101", "11100110", "11100111",
- "11101000", "11101001", "11101010", "11101011",
- "11101100", "11101101", "11101110", "11101111",
- "11110000", "11110001", "11110010", "11110011",
- "11110100", "11110101", "11110110", "11110111",
- "11111000", "11111001", "11111010", "11111011",
- "11111100", "11111101", "11111110", "11111111"
-};
-
-CARD32 xf86DummyVar1;
-CARD32 xf86DummyVar2;
-CARD32 xf86DummyVar3;
-
-CARD8 xf86PeekFb8(CARD8 *p) { return *p; }
-CARD16 xf86PeekFb16(CARD16 *p) { return *p; }
-CARD32 xf86PeekFb32(CARD32 *p) { return *p; }
-void xf86PokeFb8(CARD8 *p, CARD8 v) { *p = v; }
-void xf86PokeFb16(CARD16 *p, CARD16 v) { *p = v; }
-void xf86PokeFb32(CARD16 *p, CARD32 v) { *p = v; }
-
-CARD8 xf86PeekMmio8(pointer Base, unsigned long Offset)
-{
- return MMIO_IN8(Base,Offset);
-}
-
-CARD16 xf86PeekMmio16(pointer Base, unsigned long Offset)
-{
- return MMIO_IN16(Base,Offset);
-}
-
-CARD32 xf86PeekMmio32(pointer Base, unsigned long Offset)
-{
- return MMIO_IN32(Base,Offset);
-}
-
-void xf86PokeMmio8(pointer Base, unsigned long Offset, CARD8 v)
-{
- MMIO_OUT8(Base,Offset,v);
-}
-
-void xf86PokeMmio16(pointer Base, unsigned long Offset, CARD16 v)
-{
- MMIO_OUT16(Base,Offset,v);
-}
-
-void xf86PokeMmio32(pointer Base, unsigned long Offset, CARD32 v)
-{
- MMIO_OUT32(Base,Offset,v);
-}
-
-
-void
-xf86STimestamp(xf86TsPtr* timestamp)
-{
- if (*timestamp) {
- gettimeofday((struct timeval*)*timestamp,NULL);
- } else {
- *timestamp = xnfalloc(sizeof(xf86TsRec));
- gettimeofday((struct timeval*)*timestamp,NULL);
- }
-}
-
-void
-xf86SPTimestamp(xf86TsPtr* timestamp, char *str)
-{
- if (*timestamp) {
- long diff;
- struct timeval ts;
- ts = **(struct timeval**)timestamp;
- gettimeofday((struct timeval*)*timestamp,NULL);
- if (ts.tv_usec > (*timestamp)->usec)
- diff = ((*timestamp)->sec - ts.tv_sec - 1) * 1000
- + (ts.tv_usec - (*timestamp)->usec) / 1000;
- else
- diff = ((*timestamp)->sec - ts.tv_sec) * 1000
- +(- ts.tv_usec + (*timestamp)->usec) / 1000;
- ErrorF("%s Elapsed: %li\n",str,diff);
- } else {
- *timestamp = xnfalloc(sizeof(xf86TsRec));
- gettimeofday((struct timeval*)*timestamp,NULL);
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86DefModes.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86DefModes.c
deleted file mode 100644
index a39d0a212..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86DefModes.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/* $XFree86$ */
-
-/* THIS FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT -- LOOK at
- * modeline2c.pl */
-
-/*
- * Copyright 1999-2003 by The XFree86 Project, Inc.
- *
- * Author: Dirk Hohndel <hohndel@XFree86.Org>
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef __UNIXOS2__
-#define I_NEED_OS2_H
-#endif
-#include "xf86.h"
-#include "xf86Config.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include "globals.h"
-
-#define MODEPREFIX(name) NULL, NULL, name, MODE_OK, M_T_DEFAULT
-#define MODESUFFIX 0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,0,NULL,0,0.0,0.0
-
-DisplayModeRec xf86DefaultModes [] = {
-/* 640x350 @ 85Hz (VESA) hsync: 37.9kHz */
- {MODEPREFIX("640x350"),31500, 640,672,736,832,0, 350,382,385,445,0, V_PHSYNC | V_NVSYNC, MODESUFFIX},
- {MODEPREFIX("320x175"),15750, 320,336,368,416,0, 175,191,192,222,0, V_PHSYNC | V_NVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 640x400 @ 85Hz (VESA) hsync: 37.9kHz */
- {MODEPREFIX("640x400"),31500, 640,672,736,832,0, 400,401,404,445,0, V_NHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("320x200"),15750, 320,336,368,416,0, 200,200,202,222,0, V_NHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 720x400 @ 85Hz (VESA) hsync: 37.9kHz */
- {MODEPREFIX("720x400"),35500, 720,756,828,936,0, 400,401,404,446,0, V_NHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("360x200"),17750, 360,378,414,468,0, 200,200,202,223,0, V_NHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz */
- {MODEPREFIX("640x480"),25200, 640,656,752,800,0, 480,490,492,525,0, V_NHSYNC | V_NVSYNC, MODESUFFIX},
- {MODEPREFIX("320x240"),12600, 320,328,376,400,0, 240,245,246,262,0, V_NHSYNC | V_NVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 640x480 @ 72Hz (VESA) hsync: 37.9kHz */
- {MODEPREFIX("640x480"),31500, 640,664,704,832,0, 480,489,491,520,0, V_NHSYNC | V_NVSYNC, MODESUFFIX},
- {MODEPREFIX("320x240"),15750, 320,332,352,416,0, 240,244,245,260,0, V_NHSYNC | V_NVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 640x480 @ 75Hz (VESA) hsync: 37.5kHz */
- {MODEPREFIX("640x480"),31500, 640,656,720,840,0, 480,481,484,500,0, V_NHSYNC | V_NVSYNC, MODESUFFIX},
- {MODEPREFIX("320x240"),15750, 320,328,360,420,0, 240,240,242,250,0, V_NHSYNC | V_NVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 640x480 @ 85Hz (VESA) hsync: 43.3kHz */
- {MODEPREFIX("640x480"),36000, 640,696,752,832,0, 480,481,484,509,0, V_NHSYNC | V_NVSYNC, MODESUFFIX},
- {MODEPREFIX("320x240"),18000, 320,348,376,416,0, 240,240,242,254,0, V_NHSYNC | V_NVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 800x600 @ 56Hz (VESA) hsync: 35.2kHz */
- {MODEPREFIX("800x600"),36000, 800,824,896,1024,0, 600,601,603,625,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("400x300"),18000, 400,412,448,512,0, 300,300,301,312,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 800x600 @ 60Hz (VESA) hsync: 37.9kHz */
- {MODEPREFIX("800x600"),40000, 800,840,968,1056,0, 600,601,605,628,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("400x300"),20000, 400,420,484,528,0, 300,300,302,314,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 800x600 @ 72Hz (VESA) hsync: 48.1kHz */
- {MODEPREFIX("800x600"),50000, 800,856,976,1040,0, 600,637,643,666,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("400x300"),25000, 400,428,488,520,0, 300,318,321,333,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 800x600 @ 75Hz (VESA) hsync: 46.9kHz */
- {MODEPREFIX("800x600"),49500, 800,816,896,1056,0, 600,601,604,625,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("400x300"),24750, 400,408,448,528,0, 300,300,302,312,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 800x600 @ 85Hz (VESA) hsync: 53.7kHz */
- {MODEPREFIX("800x600"),56300, 800,832,896,1048,0, 600,601,604,631,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("400x300"),28150, 400,416,448,524,0, 300,300,302,315,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1024x768i @ 43Hz (industry standard) hsync: 35.5kHz */
- {MODEPREFIX("1024x768"),44900, 1024,1032,1208,1264,0, 768,768,776,817,0, V_PHSYNC | V_PVSYNC | V_INTERLACE, MODESUFFIX},
- {MODEPREFIX("512x384"),22450, 512,516,604,632,0, 384,384,388,408,0, V_PHSYNC | V_PVSYNC | V_INTERLACE | V_DBLSCAN, MODESUFFIX},
-/* 1024x768 @ 60Hz (VESA) hsync: 48.4kHz */
- {MODEPREFIX("1024x768"),65000, 1024,1048,1184,1344,0, 768,771,777,806,0, V_NHSYNC | V_NVSYNC, MODESUFFIX},
- {MODEPREFIX("512x384"),32500, 512,524,592,672,0, 384,385,388,403,0, V_NHSYNC | V_NVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1024x768 @ 70Hz (VESA) hsync: 56.5kHz */
- {MODEPREFIX("1024x768"),75000, 1024,1048,1184,1328,0, 768,771,777,806,0, V_NHSYNC | V_NVSYNC, MODESUFFIX},
- {MODEPREFIX("512x384"),37500, 512,524,592,664,0, 384,385,388,403,0, V_NHSYNC | V_NVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1024x768 @ 75Hz (VESA) hsync: 60.0kHz */
- {MODEPREFIX("1024x768"),78800, 1024,1040,1136,1312,0, 768,769,772,800,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("512x384"),39400, 512,520,568,656,0, 384,384,386,400,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1024x768 @ 85Hz (VESA) hsync: 68.7kHz */
- {MODEPREFIX("1024x768"),94500, 1024,1072,1168,1376,0, 768,769,772,808,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("512x384"),47250, 512,536,584,688,0, 384,384,386,404,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1152x864 @ 75Hz (VESA) hsync: 67.5kHz */
- {MODEPREFIX("1152x864"),108000, 1152,1216,1344,1600,0, 864,865,868,900,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("576x432"),54000, 576,608,672,800,0, 432,432,434,450,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1280x960 @ 60Hz (VESA) hsync: 60.0kHz */
- {MODEPREFIX("1280x960"),108000, 1280,1376,1488,1800,0, 960,961,964,1000,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("640x480"),54000, 640,688,744,900,0, 480,480,482,500,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1280x960 @ 85Hz (VESA) hsync: 85.9kHz */
- {MODEPREFIX("1280x960"),148500, 1280,1344,1504,1728,0, 960,961,964,1011,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("640x480"),74250, 640,672,752,864,0, 480,480,482,505,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1280x1024 @ 60Hz (VESA) hsync: 64.0kHz */
- {MODEPREFIX("1280x1024"),108000, 1280,1328,1440,1688,0, 1024,1025,1028,1066,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("640x512"),54000, 640,664,720,844,0, 512,512,514,533,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1280x1024 @ 75Hz (VESA) hsync: 80.0kHz */
- {MODEPREFIX("1280x1024"),135000, 1280,1296,1440,1688,0, 1024,1025,1028,1066,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("640x512"),67500, 640,648,720,844,0, 512,512,514,533,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1280x1024 @ 85Hz (VESA) hsync: 91.1kHz */
- {MODEPREFIX("1280x1024"),157500, 1280,1344,1504,1728,0, 1024,1025,1028,1072,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("640x512"),78750, 640,672,752,864,0, 512,512,514,536,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1600x1200 @ 60Hz (VESA) hsync: 75.0kHz */
- {MODEPREFIX("1600x1200"),162000, 1600,1664,1856,2160,0, 1200,1201,1204,1250,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("800x600"),81000, 800,832,928,1080,0, 600,600,602,625,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1600x1200 @ 65Hz (VESA) hsync: 81.3kHz */
- {MODEPREFIX("1600x1200"),175500, 1600,1664,1856,2160,0, 1200,1201,1204,1250,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("800x600"),87750, 800,832,928,1080,0, 600,600,602,625,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1600x1200 @ 70Hz (VESA) hsync: 87.5kHz */
- {MODEPREFIX("1600x1200"),189000, 1600,1664,1856,2160,0, 1200,1201,1204,1250,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("800x600"),94500, 800,832,928,1080,0, 600,600,602,625,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1600x1200 @ 75Hz (VESA) hsync: 93.8kHz */
- {MODEPREFIX("1600x1200"),202500, 1600,1664,1856,2160,0, 1200,1201,1204,1250,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("800x600"),101250, 800,832,928,1080,0, 600,600,602,625,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1600x1200 @ 85Hz (VESA) hsync: 106.3kHz */
- {MODEPREFIX("1600x1200"),229500, 1600,1664,1856,2160,0, 1200,1201,1204,1250,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("800x600"),114750, 800,832,928,1080,0, 600,600,602,625,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1792x1344 @ 60Hz (VESA) hsync: 83.6kHz */
- {MODEPREFIX("1792x1344"),204800, 1792,1920,2120,2448,0, 1344,1345,1348,1394,0, V_NHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("896x672"),102400, 896,960,1060,1224,0, 672,672,674,697,0, V_NHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1792x1344 @ 75Hz (VESA) hsync: 106.3kHz */
- {MODEPREFIX("1792x1344"),261000, 1792,1888,2104,2456,0, 1344,1345,1348,1417,0, V_NHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("896x672"),130500, 896,944,1052,1228,0, 672,672,674,708,0, V_NHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1856x1392 @ 60Hz (VESA) hsync: 86.3kHz */
- {MODEPREFIX("1856x1392"),218300, 1856,1952,2176,2528,0, 1392,1393,1396,1439,0, V_NHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("928x696"),109150, 928,976,1088,1264,0, 696,696,698,719,0, V_NHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1856x1392 @ 75Hz (VESA) hsync: 112.5kHz */
- {MODEPREFIX("1856x1392"),288000, 1856,1984,2208,2560,0, 1392,1393,1396,1500,0, V_NHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("928x696"),144000, 928,992,1104,1280,0, 696,696,698,750,0, V_NHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1920x1440 @ 60Hz (VESA) hsync: 90.0kHz */
- {MODEPREFIX("1920x1440"),234000, 1920,2048,2256,2600,0, 1440,1441,1444,1500,0, V_NHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("960x720"),117000, 960,1024,1128,1300,0, 720,720,722,750,0, V_NHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1920x1440 @ 75Hz (VESA) hsync: 112.5kHz */
- {MODEPREFIX("1920x1440"),297000, 1920,2064,2288,2640,0, 1440,1441,1444,1500,0, V_NHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("960x720"),148500, 960,1032,1144,1320,0, 720,720,722,750,0, V_NHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz */
- {MODEPREFIX("832x624"),57284, 832,864,928,1152,0, 624,625,628,667,0, V_NHSYNC | V_NVSYNC, MODESUFFIX},
- {MODEPREFIX("416x312"),28642, 416,432,464,576,0, 312,312,314,333,0, V_NHSYNC | V_NVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1152x768 @ 54.8Hz (Titanium PowerBook) hsync: 44.2kHz */
- {MODEPREFIX("1152x768"),64995, 1152,1178,1314,1472,0, 768,771,777,806,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("576x384"),32497, 576,589,657,736,0, 384,385,388,403,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz */
- {MODEPREFIX("1400x1050"),122000, 1400,1488,1640,1880,0, 1050,1052,1064,1082,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("700x525"),61000, 700,744,820,940,0, 525,526,532,541,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz */
- {MODEPREFIX("1400x1050"),155800, 1400,1464,1784,1912,0, 1050,1052,1064,1090,0, V_PHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("700x525"),77900, 700,732,892,956,0, 525,526,532,545,0, V_PHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1600x1024 @ 60Hz (SGI 1600SW) hsync: 64.0kHz */
- {MODEPREFIX("1600x1024"),106910, 1600,1620,1640,1670,0, 1024,1027,1030,1067,0, V_NHSYNC | V_NVSYNC, MODESUFFIX},
- {MODEPREFIX("800x512"),53455, 800,810,820,835,0, 512,513,515,533,0, V_NHSYNC | V_NVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz */
- {MODEPREFIX("1920x1440"),341350, 1920,2072,2288,2656,0, 1440,1441,1444,1512,0, V_NHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("960x720"),170675, 960,1036,1144,1328,0, 720,720,722,756,0, V_NHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 2048x1536 @ 60Hz (VESA GTF) hsync: 95.3kHz */
- {MODEPREFIX("2048x1536"),266950, 2048,2200,2424,2800,0, 1536,1537,1540,1589,0, V_NHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("1024x768"),133475, 1024,1100,1212,1400,0, 768,768,770,794,0, V_NHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 2048x1536 @ 75Hz (VESA GTF) hsync: 120.2kHz */
- {MODEPREFIX("2048x1536"),340480, 2048,2216,2440,2832,0, 1536,1537,1540,1603,0, V_NHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("1024x768"),170240, 1024,1108,1220,1416,0, 768,768,770,801,0, V_NHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
-/* 2048x1536 @ 85Hz (VESA GTF) hsync: 137.0kHz */
- {MODEPREFIX("2048x1536"),388040, 2048,2216,2440,2832,0, 1536,1537,1540,1612,0, V_NHSYNC | V_PVSYNC, MODESUFFIX},
- {MODEPREFIX("1024x768"),194020, 1024,1108,1220,1416,0, 768,768,770,806,0, V_NHSYNC | V_PVSYNC | V_DBLSCAN, MODESUFFIX},
- {MODEPREFIX(NULL),0,0,0,0,0,0,0,0,0,0,0,0,MODESUFFIX}
-};
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86DoProbe.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86DoProbe.c
deleted file mode 100644
index 2f5b03eb1..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86DoProbe.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86DoProbe.c,v 1.14 2003/10/29 04:17:21 dawes Exp $ */
-/*
- * Copyright (c) 1999-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * finish setting up the server
- * Load the driver modules and call their probe functions.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "os.h"
-#ifdef XFree86LOADER
-#include "loaderProcs.h"
-#include "xf86Config.h"
-#endif /* XFree86LOADER */
-#include "xf86_OSlib.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-
-void
-DoProbeArgs(int argc, char **argv, int i)
-{
-}
-
-void
-DoProbe()
-{
- int i;
- Bool probeResult;
- Bool ioEnableFailed = FALSE;
-
-#ifdef XFree86LOADER
- /* Find the list of video driver modules. */
- char **list = xf86DriverlistFromCompile();
- char **l;
-
- if (list) {
- ErrorF("List of video driver modules:\n");
- for (l = list; *l; l++)
- ErrorF("\t%s\n", *l);
- } else {
- ErrorF("No video driver modules found\n");
- }
-
- /* Load all the drivers that were found. */
- xf86LoadModules(list, NULL);
-#endif /* XFree86LOADER */
-
- /* Disable PCI devices */
- xf86AccessInit();
-
- /* Call all of the probe functions, reporting the results. */
- for (i = 0; i < xf86NumDrivers; i++) {
-
- if (!xorgHWAccess) {
- xorgHWFlags flags;
- if (!xf86DriverList[i]->driverFunc
- || !xf86DriverList[i]->driverFunc(NULL,
- GET_REQUIRED_HW_INTERFACES,
- &flags)
- || NEED_IO_ENABLED(flags)) {
- if (ioEnableFailed)
- continue;
- if (!xf86EnableIO()) {
- ioEnableFailed = TRUE;
- continue;
- }
- xorgHWAccess = TRUE;
- }
- }
-
- if (xf86DriverList[i]->Probe == NULL) continue;
-
- xf86MsgVerb(X_INFO, 3, "Probing in driver %s\n",
- xf86DriverList[i]->driverName);
- probeResult =
- (*xf86DriverList[i]->Probe)(xf86DriverList[i], PROBE_DETECT);
- if (!probeResult) {
- xf86ErrorF("Probe in driver `%s' returns FALSE\n",
- xf86DriverList[i]->driverName);
- } else {
- xf86ErrorF("Probe in driver `%s' returns TRUE\n",
- xf86DriverList[i]->driverName);
-
- /* If we have a result, then call driver's Identify function */
- if (xf86DriverList[i]->Identify != NULL) {
- int verbose = xf86SetVerbosity(1);
- (*xf86DriverList[i]->Identify)(0);
- xf86SetVerbosity(verbose);
- }
- }
- }
-
- OsCleanup(TRUE);
- AbortDDX();
- fflush(stderr);
- exit(0);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c
deleted file mode 100644
index 9f8c15651..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c,v 1.15 2003/09/23 06:43:46 dawes Exp $ */
-/*
- * Copyright (c) 1999-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * Finish setting up the server.
- * Call the functions from the scanpci module.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "os.h"
-#ifdef XFree86LOADER
-#include "loaderProcs.h"
-#endif
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Pci.h"
-#include "xf86ScanPci.h"
-
-
-void DoScanPci(int argc, char **argv, int i)
-{
- int j,skip,globalVerbose,scanpciVerbose;
- ScanPciSetupProcPtr PciSetup;
- ScanPciDisplayCardInfoProcPtr DisplayPCICardInfo;
-#ifdef XFree86LOADER
- int errmaj, errmin;
-#endif
-
- /*
- * first we need to finish setup of the OS so that we can call other
- * functions in the server
- */
- OsInit();
-
- /*
- * The old verbosity processing that was here isn't useful anymore, but
- * for compatibility purposes, ignore verbosity changes after the -scanpci
- * flag.
- */
- globalVerbose = xf86Verbose;
-
- /*
- * next we process the arguments that are remaining on the command line,
- * so that things like the module path can be set there
- */
- for ( j = i+1; j < argc; j++ ) {
- if ((skip = ddxProcessArgument(argc, argv, j)))
- j += (skip - 1);
- }
-
- /*
- * Was the verbosity level increased? If so, set it back.
- */
- if (xf86Verbose > globalVerbose)
- xf86SetVerbosity(globalVerbose);
-
- /*
- * Setting scanpciVerbose to 0 will ensure that the output will go to
- * stderr for all reasonable default stderr verbosity levels.
- */
- scanpciVerbose = 0;
-
- /*
- * now get the loader set up and load the scanpci module
- */
-#ifdef XFree86LOADER
- /* Initialise the loader */
- LoaderInit();
- /* Tell the loader the default module search path */
- LoaderSetPath(xf86ModulePath);
-
- if (!LoadModule("scanpci", NULL, NULL, NULL, NULL, NULL,
- &errmaj, &errmin)) {
- LoaderErrorMsg(NULL, "scanpci", errmaj, errmin);
- exit(1);
- }
- if (LoaderCheckUnresolved(LD_RESOLV_IFDONE)) {
- /* For now, just a warning */
- xf86Msg(X_WARNING, "Some symbols could not be resolved!\n");
- }
- PciSetup = (ScanPciSetupProcPtr)LoaderSymbol("ScanPciSetupPciIds");
- DisplayPCICardInfo =
- (ScanPciDisplayCardInfoProcPtr)LoaderSymbol("ScanPciDisplayPCICardInfo");
-#else
- PciSetup = ScanPciSetupPciIds;
- DisplayPCICardInfo = ScanPciDisplayPCICardInfo;
-#endif
-
- if (!(*PciSetup)())
- FatalError("ScanPciSetupPciIds() failed\n");
- (*DisplayPCICardInfo)(scanpciVerbose);
-
- /*
- * That's it; we really should clean things up, but a simple
- * exit seems to be all we need.
- */
- exit(0);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Events.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Events.c
deleted file mode 100644
index c1b478ee2..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Events.c
+++ /dev/null
@@ -1,1865 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Events.c,v 3.159 2003/11/22 04:22:11 dawes Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- *
- * 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, and that the name of Thomas Roell not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Roell makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/*
- * Copyright (c) 1994-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* $XConsortium: xf86Events.c /main/46 1996/10/25 11:36:30 kaleb $ */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86Events.c,v 1.21 2005/11/08 06:33:28 jkj Exp $ */
-
-/* [JCH-96/01/21] Extended std reverse map to four buttons. */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef __UNIXOS2__
-#define I_NEED_OS2_H
-#endif
-
-#include <X11/X.h>
-#include <X11/Xpoll.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#define XF86_OS_PRIVS
-#include "xf86_OSlib.h"
-#include "atKeynames.h"
-
-
-#ifdef XFreeXDGA
-#include "dgaproc.h"
-#endif
-
-#ifdef XINPUT
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#else
-#include "inputstr.h"
-#endif
-#include "xf86Xinput.h"
-
-#include "mi.h"
-#include "mipointer.h"
-
-#ifdef XF86BIGFONT
-#define _XF86BIGFONT_SERVER_
-#include <X11/extensions/xf86bigfont.h>
-#endif
-
-#ifdef XKB
-extern Bool noXkbExtension;
-#endif
-
-#ifdef DPMSExtension
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
-#include "dpmsproc.h"
-#endif
-
-#define XE_POINTER 1
-#define XE_KEYBOARD 2
-
-#ifdef XINPUT
-#define __EqEnqueue(ev) xf86eqEnqueue(ev)
-#else
-#define __EqEnqueue(ev) mieqEnqueue(ev)
-#endif
-
-#define EqEnqueue(ev) { \
- int __sigstate = xf86BlockSIGIO (); \
- __EqEnqueue (ev); \
- xf86UnblockSIGIO(__sigstate); \
-}
-
-#ifdef XTESTEXT1
-
-#define XTestSERVER_SIDE
-#include <X11/extensions/xtestext1.h>
-extern short xtest_mousex;
-extern short xtest_mousey;
-extern int on_steal_input;
-extern Bool XTestStealKeyData();
-extern void XTestStealMotionData();
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- if (!on_steal_input || \
- XTestStealKeyData((ev)->u.u.detail, (ev)->u.u.type, dev_type, \
- xtest_mousex, xtest_mousey)) \
- EqEnqueue((ev))
-#else /* ! XTESTEXT1 */
-
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- EqEnqueue((ev))
-
-#endif
-
-/*
- * The first of many hacks to get VT switching to work under
- * Solaris 2.1 for x86. The basic problem is that Solaris is supposed
- * to be SVR4. It is for the most part, except where the video interface
- * is concerned. These hacks work around those problems.
- * See the comments for Linux, and SCO.
- *
- * This is a toggling variable:
- * FALSE = No VT switching keys have been pressed last time around
- * TRUE = Possible VT switch Pending
- * (DWH - 12/2/93)
- *
- * This has been generalised to work with Linux and *BSD+syscons (DHD)
- */
-
-#ifdef USE_VT_SYSREQ
-Bool VTSysreqToggle = FALSE;
-#endif /* !USE_VT_SYSREQ */
-Bool VTSwitchEnabled = TRUE; /* Allows run-time disabling for
- *BSD and for avoiding VT
- switches when using the DRI
- automatic full screen mode.*/
-
-extern fd_set EnabledDevices;
-
-#if defined(XQUEUE)
-extern void xf86XqueRequest(void);
-#endif
-#ifdef XF86PM
-extern void (*xf86OSPMClose)(void);
-#endif
-
-static void xf86VTSwitch(void);
-
-/*
- * Allow arbitrary drivers or other XFree86 code to register with our main
- * Wakeup handler.
- */
-typedef struct x_IHRec {
- int fd;
- InputHandlerProc ihproc;
- pointer data;
- Bool enabled;
- struct x_IHRec * next;
-} IHRec, *IHPtr;
-
-static IHPtr InputHandlers = NULL;
-
-
-/*
- * TimeSinceLastInputEvent --
- * Function used for screensaver purposes by the os module. Returns the
- * time in milliseconds since there last was any input.
- */
-
-int
-TimeSinceLastInputEvent()
-{
- if (xf86Info.lastEventTime == 0) {
- xf86Info.lastEventTime = GetTimeInMillis();
- }
- return GetTimeInMillis() - xf86Info.lastEventTime;
-}
-
-
-
-/*
- * SetTimeSinceLastInputEvent --
- * Set the lastEventTime to now.
- */
-
-void
-SetTimeSinceLastInputEvent()
-{
- xf86Info.lastEventTime = GetTimeInMillis();
-}
-
-
-
-/*
- * ProcessInputEvents --
- * Retrieve all waiting input events and pass them to DIX in their
- * correct chronological order. Only reads from the system pointer
- * and keyboard.
- */
-
-void
-ProcessInputEvents ()
-{
- int x, y;
-#ifdef INHERIT_LOCK_STATE
- static int generation = 0;
-#endif
-
- /*
- * With INHERIT_LOCK_STATE defined, the initial state of CapsLock, NumLock
- * and ScrollLock will be set to match that of the VT the server is
- * running on.
- */
-#ifdef INHERIT_LOCK_STATE
- if (generation != serverGeneration) {
- xEvent kevent;
- DevicePtr pKeyboard = xf86Info.pKeyboard;
- extern unsigned int xf86InitialCaps, xf86InitialNum, xf86InitialScroll;
-
- generation = serverGeneration;
- kevent.u.keyButtonPointer.time = GetTimeInMillis();
- kevent.u.keyButtonPointer.rootX = 0;
- kevent.u.keyButtonPointer.rootY = 0;
- kevent.u.u.type = KeyPress;
-
-
- if (xf86InitialCaps) {
- kevent.u.u.detail = xf86InitialCaps;
- (* pKeyboard->processInputProc)(&kevent, (DeviceIntPtr)pKeyboard, 1);
- xf86InitialCaps = 0;
- }
- if (xf86InitialNum) {
- kevent.u.u.detail = xf86InitialNum;
- (* pKeyboard->processInputProc)(&kevent, (DeviceIntPtr)pKeyboard, 1);
- xf86InitialNum = 0;
- }
- if (xf86InitialScroll) {
- kevent.u.u.detail = xf86InitialScroll;
- (* pKeyboard->processInputProc)(&kevent, (DeviceIntPtr)pKeyboard, 1);
- xf86InitialScroll = 0;
- }
- }
-#endif
-
- xf86Info.inputPending = FALSE;
-
-#ifdef XINPUT
- xf86eqProcessInputEvents();
-#else
- mieqProcessInputEvents();
-#endif
- miPointerUpdate();
-
- miPointerPosition(&x, &y);
- xf86SetViewport(xf86Info.currentScreen, x, y);
-}
-
-void
-xf86GrabServerCallback(CallbackListPtr *callbacks, pointer data, pointer args)
-{
- ServerGrabInfoRec *grab = (ServerGrabInfoRec*)args;
-
- xf86Info.grabInfo.server.client = grab->client;
- xf86Info.grabInfo.server.grabstate = grab->grabstate;
-}
-
-/*
- * Handle keyboard events that cause some kind of "action"
- * (i.e., server termination, video mode changes, VT switches, etc.)
- */
-void
-xf86ProcessActionEvent(ActionEvent action, void *arg)
-{
-#ifdef DEBUG
- ErrorF("ProcessActionEvent(%d,%x)\n", (int) action, arg);
-#endif
- switch (action) {
- case ACTION_TERMINATE:
- if (!xf86Info.dontZap) {
-#ifdef XFreeXDGA
- DGAShutdown();
-#endif
- GiveUp(0);
- }
- break;
- case ACTION_NEXT_MODE:
- if (!xf86Info.dontZoom)
- xf86ZoomViewport(xf86Info.currentScreen, 1);
- break;
- case ACTION_PREV_MODE:
- if (!xf86Info.dontZoom)
- xf86ZoomViewport(xf86Info.currentScreen, -1);
- break;
- case ACTION_DISABLEGRAB:
- if (!xf86Info.grabInfo.disabled && xf86Info.grabInfo.allowDeactivate) {
- if (inputInfo.pointer && inputInfo.pointer->grab != NULL &&
- inputInfo.pointer->DeactivateGrab)
- inputInfo.pointer->DeactivateGrab(inputInfo.pointer);
- if (inputInfo.keyboard && inputInfo.keyboard->grab != NULL &&
- inputInfo.keyboard->DeactivateGrab)
- inputInfo.keyboard->DeactivateGrab(inputInfo.keyboard);
- }
- break;
- case ACTION_CLOSECLIENT:
- if (!xf86Info.grabInfo.disabled && xf86Info.grabInfo.allowClosedown) {
- ClientPtr pointer, keyboard, server;
-
- pointer = keyboard = server = NULL;
- if (inputInfo.pointer && inputInfo.pointer->grab != NULL)
- pointer = clients[CLIENT_ID(inputInfo.pointer->grab->resource)];
- if (inputInfo.keyboard && inputInfo.keyboard->grab != NULL) {
- keyboard = clients[CLIENT_ID(inputInfo.keyboard->grab->resource)];
- if (keyboard == pointer)
- keyboard = NULL;
- }
- if ((xf86Info.grabInfo.server.grabstate == SERVER_GRABBED) &&
- (((server = xf86Info.grabInfo.server.client) == pointer) ||
- (server == keyboard)))
- server = NULL;
-
- if (pointer)
- CloseDownClient(pointer);
- if (keyboard)
- CloseDownClient(keyboard);
- if (server)
- CloseDownClient(server);
- }
- break;
-#if !defined(__SOL8__) && !defined(__UNIXOS2__) && !defined(sgi) && \
- (!defined(sun) || defined(i386)) && defined(VT_ACTIVATE)
- case ACTION_SWITCHSCREEN:
- if (VTSwitchEnabled && !xf86Info.dontVTSwitch && arg) {
- int vtno = *((int *) arg);
-#if defined(__SCO__) || defined(__UNIXWARE__)
- vtno--;
-#endif
-#if defined(QNX4)
- xf86Info.vtRequestsPending = vtno;
-#else
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, vtno) < 0)
- ErrorF("Failed to switch consoles (%s)\n", strerror(errno));
-#endif
- }
- break;
- case ACTION_SWITCHSCREEN_NEXT:
- if (VTSwitchEnabled && !xf86Info.dontVTSwitch) {
-/* Shouldn't this be true for (sun) && (i386) && (SVR4) ? */
-#if defined(__SCO__) || defined(__UNIXWARE__)
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) < 0)
-#else
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno + 1) < 0)
-#endif
-#if defined (__SCO__) || (defined(sun) && defined (i386) && defined (SVR4)) || defined(__UNIXWARE__)
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, 0) < 0)
-#else
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, 1) < 0)
-#endif
- ErrorF("Failed to switch consoles (%s)\n", strerror(errno));
- }
- break;
- case ACTION_SWITCHSCREEN_PREV:
- if (VTSwitchEnabled && !xf86Info.dontVTSwitch && xf86Info.vtno > 0) {
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno - 1) < 0)
- ErrorF("Failed to switch consoles (%s)\n", strerror(errno));
- }
- break;
-#endif
- case ACTION_MESSAGE:
- {
- char *retstr, *message = (char *) arg;
- ScrnInfoPtr pScr = XF86SCRNINFO(xf86Info.currentScreen);
-
-#ifdef DEBUG
- ErrorF("ActionMessage: '%s'\n", message);
-#endif
- /* Okay the message made it to the ddx. The common layer */
- /* can check for relevant messages here and react to any */
- /* that have a global effect. For example: */
- /* */
- /* if (!strcmp(message, "foo") { */
- /* do_foo(); break */
- /* } */
- /* */
- /* otherwise fallback to sending a key event message to */
- /* the current screen's driver: */
- if (*pScr->HandleMessage != NULL) {
- (void) (*pScr->HandleMessage)(pScr->scrnIndex,
- "KeyEventMessage", message, &retstr);
- }
- }
- break;
- default:
- break;
- }
-}
-
-/*
- * xf86PostKbdEvent --
- * Translate the raw hardware KbdEvent into an XEvent, and tell DIX
- * about it. Scancode preprocessing and so on is done ...
- *
- * OS/2 specific xf86PostKbdEvent(key) has been moved to os-support/os2/os2_kbd.c
- * as some things differ, and I did not want to scatter this routine with
- * ifdefs further (hv).
- */
-
-#ifdef __linux__
-extern u_char SpecialServerMap[];
-#endif
-
-#if !defined(__UNIXOS2__)
-void
-xf86PostKbdEvent(unsigned key)
-{
- int scanCode = (key & 0x7f);
- int specialkey = 0;
- Bool down = (key & 0x80 ? FALSE : TRUE);
- KeyClassRec *keyc = ((DeviceIntPtr)xf86Info.pKeyboard)->key;
- Bool updateLeds = FALSE;
- Bool UsePrefix = FALSE;
- Bool Direction = FALSE;
- xEvent kevent;
- KeySym *keysym;
- int keycode;
- static int lockkeys = 0;
-#if defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT)
- static Bool first_time = TRUE;
-#endif
-#if defined(__sparc__) && defined(__linux__)
- static int kbdSun = -1;
-#endif
- /* Disable any keyboard processing while in suspend */
- if (xf86inSuspend)
- return;
-
-#if defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT)
- if (first_time)
- {
- first_time = FALSE;
- VTSwitchEnabled = (xf86Info.consType == SYSCONS)
- || (xf86Info.consType == PCVT);
- }
-#endif
-
-#if defined (__sparc__) && defined(__linux__)
- if (kbdSun == -1) {
- if ((xf86Info.xkbmodel && !strcmp(xf86Info.xkbmodel, "sun"))
- || (xf86Info.xkbrules && !strcmp(xf86Info.xkbrules, "sun")))
- kbdSun = 1;
- else
- kbdSun = 0;
- }
- if (kbdSun)
- goto special;
-#endif /* __sparc__ && __linux__ */
-
-#ifdef __linux__
- if (xf86Info.kbdCustomKeycodes) {
- specialkey = SpecialServerMap[scanCode];
- goto customkeycodes;
- }
-#endif
-
- /*
- * First do some special scancode remapping ...
- */
- if (xf86Info.scanPrefix == 0) {
-
- switch (scanCode) {
- case KEY_Prefix0:
- case KEY_Prefix1:
-#if defined(PCCONS_SUPPORT) || defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT)
- if (xf86Info.consType == PCCONS || xf86Info.consType == SYSCONS
- || xf86Info.consType == PCVT
-#ifdef WSCONS_SUPPORT
- || (xf86Info.consType == WSCONS && xf86Info.kbdEvents != xf86WSKbdEvents)
-#endif
- ) {
-#endif
- xf86Info.scanPrefix = scanCode; /* special prefixes */
- return;
-#if defined(PCCONS_SUPPORT) || defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT)
- }
- break;
-#endif
- }
-#if defined (i386) && defined (SVR4)
- /*
- * PANIX returns DICOP standards based keycodes in using 106jp
- * keyboard. We need to remap some keys.
- */
- if(xf86Info.panix106 == TRUE){
- switch (scanCode) {
- case 0x56: scanCode = KEY_BSlash2; break; /* Backslash */
- case 0x5A: scanCode = KEY_NFER; break; /* No Kanji Transfer*/
- case 0x5B: scanCode = KEY_XFER; break; /* Kanji Tranfer */
- case 0x5C: scanCode = KEY_Yen; break; /* Yen curs pgup */
- case 0x6B: scanCode = KEY_Left; break; /* Cur Left */
- case 0x6F: scanCode = KEY_PgUp; break; /* Cur PageUp */
- case 0x72: scanCode = KEY_AltLang; break; /* AltLang(right) */
- case 0x73: scanCode = KEY_RCtrl; break; /* not needed */
- }
- } else
-#endif /* i386 && SVR4 */
- {
- switch (scanCode) {
- case 0x59: scanCode = KEY_0x59; break;
- case 0x5a: scanCode = KEY_0x5A; break;
- case 0x5b: scanCode = KEY_0x5B; break;
- case 0x5c: scanCode = KEY_KP_Equal; break; /* Keypad Equal */
- case 0x5d: scanCode = KEY_0x5D; break;
- case 0x5e: scanCode = KEY_0x5E; break;
- case 0x5f: scanCode = KEY_0x5F; break;
- case 0x62: scanCode = KEY_0x62; break;
- case 0x63: scanCode = KEY_0x63; break;
- case 0x64: scanCode = KEY_0x64; break;
- case 0x65: scanCode = KEY_0x65; break;
- case 0x66: scanCode = KEY_0x66; break;
- case 0x67: scanCode = KEY_0x67; break;
- case 0x68: scanCode = KEY_0x68; break;
- case 0x69: scanCode = KEY_0x69; break;
- case 0x6a: scanCode = KEY_0x6A; break;
- case 0x6b: scanCode = KEY_0x6B; break;
- case 0x6c: scanCode = KEY_0x6C; break;
- case 0x6d: scanCode = KEY_0x6D; break;
- case 0x6e: scanCode = KEY_0x6E; break;
- case 0x6f: scanCode = KEY_0x6F; break;
- case 0x70: scanCode = KEY_0x70; break;
- case 0x71: scanCode = KEY_0x71; break;
- case 0x72: scanCode = KEY_0x72; break;
- case 0x73: scanCode = KEY_0x73; break;
- case 0x74: scanCode = KEY_0x74; break;
- case 0x75: scanCode = KEY_0x75; break;
- case 0x76: scanCode = KEY_0x76; break;
- }
- }
- }
-
- else if (
-#ifdef CSRG_BASED
- (xf86Info.consType == PCCONS || xf86Info.consType == SYSCONS
- || xf86Info.consType == PCVT
-#ifdef WSCONS_SUPPORT
- || (xf86Info.consType == WSCONS && xf86Info.kbdEvents !=
- xf86WSKbdEvents)
-#endif
- ) &&
-#endif
- (xf86Info.scanPrefix == KEY_Prefix0)) {
- xf86Info.scanPrefix = 0;
-
- switch (scanCode) {
- case KEY_KP_7: scanCode = KEY_Home; break; /* curs home */
- case KEY_KP_8: scanCode = KEY_Up; break; /* curs up */
- case KEY_KP_9: scanCode = KEY_PgUp; break; /* curs pgup */
- case KEY_KP_4: scanCode = KEY_Left; break; /* curs left */
- case KEY_KP_5: scanCode = KEY_Begin; break; /* curs begin */
- case KEY_KP_6: scanCode = KEY_Right; break; /* curs right */
- case KEY_KP_1: scanCode = KEY_End; break; /* curs end */
- case KEY_KP_2: scanCode = KEY_Down; break; /* curs down */
- case KEY_KP_3: scanCode = KEY_PgDown; break; /* curs pgdown */
- case KEY_KP_0: scanCode = KEY_Insert; break; /* curs insert */
- case KEY_KP_Decimal: scanCode = KEY_Delete; break; /* curs delete */
- case KEY_Enter: scanCode = KEY_KP_Enter; break; /* keypad enter */
- case KEY_LCtrl: scanCode = KEY_RCtrl; break; /* right ctrl */
- case KEY_KP_Multiply: scanCode = KEY_Print; break; /* print */
- case KEY_Slash: scanCode = KEY_KP_Divide; break; /* keyp divide */
- case KEY_Alt: scanCode = KEY_AltLang; break; /* right alt */
- case KEY_ScrollLock: scanCode = KEY_Break; break; /* curs break */
- case 0x5b: scanCode = KEY_LMeta; break;
- case 0x5c: scanCode = KEY_RMeta; break;
- case 0x5d: scanCode = KEY_Menu; break;
- case KEY_F3: scanCode = KEY_F13; break;
- case KEY_F4: scanCode = KEY_F14; break;
- case KEY_F5: scanCode = KEY_F15; break;
- case KEY_F6: scanCode = KEY_F16; break;
- case KEY_F7: scanCode = KEY_F17; break;
- case KEY_KP_Plus: scanCode = KEY_KP_DEC; break;
- /*
- * Ignore virtual shifts (E0 2A, E0 AA, E0 36, E0 B6)
- */
- case 0x2A:
- case 0x36:
- return;
- default:
- xf86MsgVerb(X_INFO, 4, "Unreported Prefix0 scancode: 0x%02x\n",
- scanCode);
- /*
- * "Internet" keyboards are generating lots of new codes. Let them
- * pass. There is little consistency between them, so don't bother
- * with symbolic names at this level.
- */
- scanCode += 0x78;
- }
- }
-
- else if (xf86Info.scanPrefix == KEY_Prefix1)
- {
- xf86Info.scanPrefix = (scanCode == KEY_LCtrl) ? KEY_LCtrl : 0;
- return;
- }
-
- else if (xf86Info.scanPrefix == KEY_LCtrl)
- {
- xf86Info.scanPrefix = 0;
- if (scanCode != KEY_NumLock) return;
- scanCode = KEY_Pause; /* pause */
- }
-
-#ifndef __sparc64__
- /*
- * PC keyboards generate separate key codes for
- * Alt+Print and Control+Pause but in the X keyboard model
- * they need to get the same key code as the base key on the same
- * physical keyboard key.
- */
- if (scanCode == KEY_SysReqest)
- scanCode = KEY_Print;
- else if (scanCode == KEY_Break)
- scanCode = KEY_Pause;
-#endif
-
- /*
- * and now get some special keysequences
- */
-
- specialkey = scanCode;
-
-#ifdef __linux__
-customkeycodes:
-#endif
-#if defined(i386) || defined(__i386__)
- if (xf86IsPc98()) {
- switch (scanCode) {
- case 0x0e: specialkey = 0x0e; break; /* KEY_BackSpace */
- case 0x40: specialkey = 0x4a; break; /* KEY_KP_Minus */
- case 0x49: specialkey = 0x4e; break; /* KEY_KP_Plus */
-
- /* XXX needs cases for KEY_KP_Divide and KEY_KP_Multiply */
-
- case 0x62: specialkey = 0x3b; break; /* KEY_F1 */
- case 0x63: specialkey = 0x3c; break; /* KEY_F2 */
- case 0x64: specialkey = 0x3d; break; /* KEY_F3 */
- case 0x65: specialkey = 0x3e; break; /* KEY_F4 */
- case 0x66: specialkey = 0x3f; break; /* KEY_F5 */
- case 0x67: specialkey = 0x40; break; /* KEY_F6 */
- case 0x68: specialkey = 0x41; break; /* KEY_F7 */
- case 0x69: specialkey = 0x42; break; /* KEY_F8 */
- case 0x6a: specialkey = 0x43; break; /* KEY_F9 */
- case 0x6b: specialkey = 0x44; break; /* KEY_F10 */
- /* case 0x73: specialkey = 0x38; break; KEY_Alt */
- /* case 0x74: specialkey = 0x1d; break; KEY_LCtrl */
- default: specialkey = 0x00; break;
- }
- }
-#endif
-#if defined (__sparc__) && defined(__linux__)
-special:
- if (kbdSun) {
- switch (scanCode) {
- case 0x2b: specialkey = KEY_BackSpace; break;
- case 0x47: specialkey = KEY_KP_Minus; break;
- case 0x7d: specialkey = KEY_KP_Plus; break;
-
- /* XXX needs cases for KEY_KP_Divide and KEY_KP_Multiply */
-
- case 0x05: specialkey = KEY_F1; break;
- case 0x06: specialkey = KEY_F2; break;
- case 0x08: specialkey = KEY_F3; break;
- case 0x0a: specialkey = KEY_F4; break;
- case 0x0c: specialkey = KEY_F5; break;
- case 0x0e: specialkey = KEY_F6; break;
- case 0x10: specialkey = KEY_F7; break;
- case 0x11: specialkey = KEY_F8; break;
- case 0x12: specialkey = KEY_F9; break;
- case 0x07: specialkey = KEY_F10; break;
- case 0x09: specialkey = KEY_F11; break;
- case 0x0b: specialkey = KEY_F12; break;
- default: specialkey = 0; break;
- }
- /*
- * XXX XXX XXX:
- *
- * I really don't know what's wrong here, but passing the real
- * scanCode offsets by one from XKB's point of view.
- *
- * (ecd@skynet.be, 980405)
- */
- scanCode--;
- }
-#endif /* defined (__sparc__) && defined(__linux__) */
-
-#ifdef XKB
- if ((xf86Info.ddxSpecialKeys == SKWhenNeeded &&
- !xf86Info.ActionKeyBindingsSet) ||
- noXkbExtension || xf86Info.ddxSpecialKeys == SKAlways) {
-#endif
- if (!(ModifierDown(ShiftMask)) &&
- ((ModifierDown(ControlMask | AltMask)) ||
- (ModifierDown(ControlMask | AltLangMask))))
- {
- switch (specialkey) {
-
- case KEY_BackSpace:
- xf86ProcessActionEvent(ACTION_TERMINATE, NULL);
- break;
-
- /*
- * Check grabs
- */
- case KEY_KP_Divide:
- xf86ProcessActionEvent(ACTION_DISABLEGRAB, NULL);
- break;
- case KEY_KP_Multiply:
- xf86ProcessActionEvent(ACTION_CLOSECLIENT, NULL);
- break;
-
- /*
- * Video mode switches
- */
- case KEY_KP_Minus: /* Keypad - */
- if (down) xf86ProcessActionEvent(ACTION_PREV_MODE, NULL);
- if (!xf86Info.dontZoom) return;
- break;
-
- case KEY_KP_Plus: /* Keypad + */
- if (down) xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL);
- if (!xf86Info.dontZoom) return;
- break;
-
- /* Under QNX4, we set the vtPending flag for VT switching and
- * let the VT switch function do the rest...
- * This is a little different from the other OS'es.
- */
-#if defined(QNX4)
- case KEY_1:
- case KEY_2:
- case KEY_3:
- case KEY_4:
- case KEY_5:
- case KEY_6:
- case KEY_7:
- case KEY_8:
- case KEY_9:
- if (VTSwitchEnabled && !xf86Info.dontVTSwitch) {
- if (down) {
- int vtno = specialkey - KEY_1 + 1;
- xf86ProcessActionEvent(ACTION_SWITCHSCREEN, (void *) &vtno);
- }
- return;
- }
- break;
-#endif
-
-#if defined(linux) || (defined(CSRG_BASED) && (defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT))) || defined(__SCO__) || defined(__UNIXWARE__)
- /*
- * Under Linux, the raw keycodes are consumed before the kernel
- * does any processing on them, so we must emulate the vt switching
- * we want ourselves.
- */
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
- case KEY_F11:
- case KEY_F12:
- if ((VTSwitchEnabled && !xf86Info.vtSysreq && !xf86Info.dontVTSwitch)
-#if (defined(CSRG_BASED) && (defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT)))
- && (xf86Info.consType == SYSCONS || xf86Info.consType == PCVT)
-#endif
- ) {
- int vtno = specialkey - KEY_F1 + 1;
- if (specialkey == KEY_F11 || specialkey == KEY_F12)
- vtno = specialkey - KEY_F11 + 11;
- if (down)
- xf86ProcessActionEvent(ACTION_SWITCHSCREEN, (void *) &vtno);
- return;
- }
- break;
-#endif /* linux || BSD with VTs */
-
- /* just worth mentioning here: any 386bsd keyboard driver
- * (pccons.c or co_kbd.c) catches CTRL-ALT-DEL and CTRL-ALT-ESC
- * before any application (e.g. XF86) will see it
- * OBS: syscons does not, nor does pcvt !
- */
- }
- }
-
- /*
- * Start of actual Solaris VT switching code.
- * This should pretty much emulate standard SVR4 switching keys.
- *
- * DWH 12/2/93
- */
-
-#ifdef USE_VT_SYSREQ
- if (VTSwitchEnabled && xf86Info.vtSysreq && !xf86Info.dontVTSwitch)
- {
- switch (specialkey)
- {
- /*
- * syscons on *BSD doesn't have a VT #0 -- don't think Linux does
- * either
- */
-#if defined (sun) && defined (i386) && defined (SVR4)
- case KEY_H:
- if (VTSysreqToggle && down)
- {
- xf86ProcessActionEvent(ACTION_SWITCHSCREEN, NULL);
- VTSysreqToggle = 0;
- return;
- }
- break;
-
- /*
- * Yah, I know the N, and P keys seem backwards, however that's
- * how they work under Solaris
- * XXXX N means go to next active VT not necessarily vtno+1 (or vtno-1)
- */
-
- case KEY_N:
- if (VTSysreqToggle && down)
- {
- xf86ProcessActionEvent(ACTION_SWITCHSCREEN_NEXT, NULL);
- VTSysreqToggle = FALSE;
- return;
- }
- break;
-
- case KEY_P:
- if (VTSysreqToggle && down)
- {
- xf86ProcessActionEvent(ACTION_SWITCHSCREEN_NEXT, NULL);
- VTSysreqToggle = FALSE;
- return;
- }
- break;
-#endif
-
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
- case KEY_F11:
- case KEY_F12:
- if (VTSysreqToggle && down)
- { int vtno = specialkey - KEY_F1 + 1;
- if (specialkey == KEY_F11 || specialkey == KEY_F12)
- vtno = specialkey - KEY_F11 + 11;
- xf86ProcessActionEvent(ACTION_SWITCHSCREEN, (void *) &vtno);
- VTSysreqToggle = FALSE;
- return;
- }
- break;
-
- /* Ignore these keys -- ie don't let them cancel an alt-sysreq */
- case KEY_Alt:
- case KEY_AltLang:
- break;
-
- case KEY_SysReqest:
- if (down && (ModifierDown(AltMask) || ModifierDown(AltLangMask)))
- VTSysreqToggle = TRUE;
- break;
-
- default:
- if (VTSysreqToggle)
- {
- /*
- * We only land here when Alt-SysReq is followed by a
- * non-switching key.
- */
- VTSysreqToggle = FALSE;
-
- }
- }
- }
-
-#endif /* USE_VT_SYSREQ */
-
-#ifdef __SCO__
- /*
- * With the console in raw mode, SCO will not switch consoles,
- * you get around this by activating the next console along, if
- * this fails then go back to console 0, if there is only one
- * then it doesn't matter, switching to yourself is a nop as far
- * as the console driver is concerned.
- * We could do something similar to linux here but SCO ODT uses
- * Ctrl-PrintScrn, so why change?
- */
- if (specialkey == KEY_Print && ModifierDown(ControlMask)) {
- if (down)
- xf86ProcessActionEvent(ACTION_SWITCHSCREEN_NEXT, NULL);
- return;
- }
-#endif /* __SCO__ */
-#ifdef XKB
- }
-#endif
-
- /*
- * Now map the scancodes to real X-keycodes ...
- */
- keycode = scanCode + MIN_KEYCODE;
- keysym = (keyc->curKeySyms.map +
- keyc->curKeySyms.mapWidth *
- (keycode - keyc->curKeySyms.minKeyCode));
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- /*
- * Filter autorepeated caps/num/scroll lock keycodes.
- */
-#define CAPSFLAG 0x01
-#define NUMFLAG 0x02
-#define SCROLLFLAG 0x04
-#define MODEFLAG 0x08
- if( down ) {
- switch( keysym[0] ) {
- case XK_Caps_Lock :
- if (lockkeys & CAPSFLAG)
- return;
- else
- lockkeys |= CAPSFLAG;
- break;
-
- case XK_Num_Lock :
- if (lockkeys & NUMFLAG)
- return;
- else
- lockkeys |= NUMFLAG;
- break;
-
- case XK_Scroll_Lock :
- if (lockkeys & SCROLLFLAG)
- return;
- else
- lockkeys |= SCROLLFLAG;
- break;
- }
- if (keysym[1] == XF86XK_ModeLock)
- {
- if (lockkeys & MODEFLAG)
- return;
- else
- lockkeys |= MODEFLAG;
- }
-
- }
- else {
- switch( keysym[0] ) {
- case XK_Caps_Lock :
- lockkeys &= ~CAPSFLAG;
- break;
-
- case XK_Num_Lock :
- lockkeys &= ~NUMFLAG;
- break;
-
- case XK_Scroll_Lock :
- lockkeys &= ~SCROLLFLAG;
- break;
- }
- if (keysym[1] == XF86XK_ModeLock)
- lockkeys &= ~MODEFLAG;
- }
-
- /*
- * LockKey special handling:
- * ignore releases, toggle on & off on presses.
- * Don't deal with the Caps_Lock keysym directly, but check the lock modifier
- */
- if (keyc->modifierMap[keycode] & LockMask ||
- keysym[0] == XK_Scroll_Lock ||
- keysym[1] == XF86XK_ModeLock ||
- keysym[0] == XK_Num_Lock)
- {
- Bool flag;
-
- if (!down) return;
- if (KeyPressed(keycode)) {
- down = !down;
- flag = FALSE;
- }
- else
- flag = TRUE;
-
- if (keyc->modifierMap[keycode] & LockMask) xf86Info.capsLock = flag;
- if (keysym[0] == XK_Num_Lock) xf86Info.numLock = flag;
- if (keysym[0] == XK_Scroll_Lock) xf86Info.scrollLock = flag;
- if (keysym[1] == XF86XK_ModeLock) xf86Info.modeSwitchLock = flag;
- updateLeds = TRUE;
- }
-
- if (!xf86Info.kbdCustomKeycodes) {
- /*
- * normal, non-keypad keys
- */
- if (scanCode < KEY_KP_7 || scanCode > KEY_KP_Decimal) {
-#if !defined(CSRG_BASED) && \
- !defined(__GNU__) && \
- defined(KB_84)
- /*
- * magic ALT_L key on AT84 keyboards for multilingual support
- */
- if (xf86Info.kbdType == KB_84 &&
- ModifierDown(AltMask) &&
- keysym[2] != NoSymbol)
- {
- UsePrefix = TRUE;
- Direction = TRUE;
- }
-#endif /* !CSRG_BASED && ... */
- }
- }
- if (updateLeds) xf86UpdateKbdLeds();
-#ifdef XKB
- }
-#endif
-
- /*
- * check for an autorepeat-event
- */
- if (down && KeyPressed(keycode)) {
- KbdFeedbackClassRec *kbdfeed = ((DeviceIntPtr)xf86Info.pKeyboard)->kbdfeed;
- if ((xf86Info.autoRepeat != AutoRepeatModeOn) ||
- keyc->modifierMap[keycode] ||
- (kbdfeed && !(kbdfeed->ctrl.autoRepeats[keycode>>3] & ( 1<<(keycode&7) ))))
- return;
- }
-
-
- xf86Info.lastEventTime = kevent.u.keyButtonPointer.time = GetTimeInMillis();
- /*
- * And now send these prefixes ...
- * NOTE: There cannot be multiple Mode_Switch keys !!!!
- */
- if (UsePrefix)
- {
- ENQUEUE(&kevent,
- keyc->modifierKeyMap[keyc->maxKeysPerModifier*7],
- (Direction ? KeyPress : KeyRelease),
- XE_KEYBOARD);
- ENQUEUE(&kevent, keycode, (down ? KeyPress : KeyRelease), XE_KEYBOARD);
- ENQUEUE(&kevent,
- keyc->modifierKeyMap[keyc->maxKeysPerModifier*7],
- (Direction ? KeyRelease : KeyPress),
- XE_KEYBOARD);
- }
- else
- {
- ENQUEUE(&kevent, keycode, (down ? KeyPress : KeyRelease), XE_KEYBOARD);
- }
-}
-#endif /* !__UNIXOS2__ */
-
-#define ModifierIsSet(k) ((modifiers & (k)) == (k))
-
-Bool
-xf86CommonSpecialKey(int key, Bool down, int modifiers)
-{
- if ((!ModifierIsSet(ShiftMask)) &&
- (((ModifierIsSet(ControlMask | AltMask)) ||
- (ModifierIsSet(ControlMask | AltLangMask))))) {
- switch (key) {
-
- case KEY_BackSpace:
- xf86ProcessActionEvent(ACTION_TERMINATE, NULL);
- break;
-
- /*
- * Check grabs
- */
- case KEY_KP_Divide:
- xf86ProcessActionEvent(ACTION_DISABLEGRAB, NULL);
- break;
- case KEY_KP_Multiply:
- xf86ProcessActionEvent(ACTION_CLOSECLIENT, NULL);
- break;
-
- /*
- * The idea here is to pass the scancode down to a list of
- * registered routines. There should be some standard conventions
- * for processing certain keys.
- */
- case KEY_KP_Minus: /* Keypad - */
- if (down) xf86ProcessActionEvent(ACTION_PREV_MODE, NULL);
- if (!xf86Info.dontZoom) return TRUE;
- break;
-
- case KEY_KP_Plus: /* Keypad + */
- if (down) xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL);
- if (!xf86Info.dontZoom) return TRUE;
- break;
- }
- }
- return FALSE;
-}
-
-/*
- * xf86Wakeup --
- * Os wakeup handler.
- */
-
-/* ARGSUSED */
-void
-xf86Wakeup(pointer blockData, int err, pointer pReadmask)
-{
-#if !defined(__UNIXOS2__) && !defined(__QNX__)
- fd_set* LastSelectMask = (fd_set*)pReadmask;
- fd_set devicesWithInput;
- InputInfoPtr pInfo;
-
- if (err >= 0) {
-
- XFD_ANDSET(&devicesWithInput, LastSelectMask, &EnabledDevices);
- if (XFD_ANYSET(&devicesWithInput)) {
- if (xf86Info.kbdEvents)
- (xf86Info.kbdEvents)();
- pInfo = xf86InputDevs;
- while (pInfo) {
- if (pInfo->read_input && pInfo->fd >= 0 &&
- (FD_ISSET(pInfo->fd, &devicesWithInput) != 0)) {
- int sigstate = xf86BlockSIGIO();
-
- pInfo->read_input(pInfo);
- xf86UnblockSIGIO(sigstate);
- /*
- * Remove the descriptior from the set because more than one
- * device may share the same file descriptor.
- */
- FD_CLR(pInfo->fd, &devicesWithInput);
- }
- pInfo = pInfo->next;
- }
- }
- }
-#else /* __UNIXOS2__ and __QNX__ */
-
- InputInfoPtr pInfo;
-
- (xf86Info.kbdEvents)(); /* Under OS/2 and QNX, always call */
-
- pInfo = xf86InputDevs;
- while (pInfo) {
- if (pInfo->read_input && pInfo->fd >= 0) {
- int sigstate = xf86BlockSIGIO();
-
- pInfo->read_input(pInfo);
- xf86UnblockSIGIO(sigstate);
- /*
- * Must break here because more than one device may share
- * the same file descriptor.
- */
- break;
- }
- pInfo = pInfo->next;
- }
-
-#endif /* __UNIXOS2__ and __QNX__ */
-
- if (err >= 0) { /* we don't want the handlers called if select() */
- IHPtr ih; /* returned with an error condition, do we? */
-
- for (ih = InputHandlers; ih; ih = ih->next) {
- if (ih->enabled && ih->fd >= 0 && ih->ihproc &&
- (FD_ISSET(ih->fd, ((fd_set *)pReadmask)) != 0)) {
- ih->ihproc(ih->fd, ih->data);
- }
- }
- }
-
- if (xf86VTSwitchPending()) xf86VTSwitch();
-
- if (xf86Info.inputPending) ProcessInputEvents();
-}
-
-
-/*
- * xf86SigioReadInput --
- * signal handler for the SIGIO signal.
- */
-static void
-xf86SigioReadInput(int fd,
- void *closure)
-{
- int sigstate = xf86BlockSIGIO();
- InputInfoPtr pInfo = (InputInfoPtr) closure;
-
- pInfo->read_input(pInfo);
-
- xf86UnblockSIGIO(sigstate);
-}
-
-/*
- * xf86AddEnabledDevice --
- *
- */
-void
-xf86AddEnabledDevice(InputInfoPtr pInfo)
-{
- if (!xf86InstallSIGIOHandler (pInfo->fd, xf86SigioReadInput, pInfo)) {
- AddEnabledDevice(pInfo->fd);
- }
-}
-
-/*
- * xf86RemoveEnabledDevice --
- *
- */
-void
-xf86RemoveEnabledDevice(InputInfoPtr pInfo)
-{
- if (!xf86RemoveSIGIOHandler (pInfo->fd)) {
- RemoveEnabledDevice(pInfo->fd);
- }
-}
-
-static int *xf86SignalIntercept = NULL;
-
-void
-xf86InterceptSignals(int *signo)
-{
- if ((xf86SignalIntercept = signo))
- *signo = -1;
-}
-
-static void (*xf86SigIllHandler)(void) = NULL;
-
-void
-xf86InterceptSigIll(void (*sigillhandler)(void))
-{
- xf86SigIllHandler = sigillhandler;
-}
-
-#ifdef HAVE_EXECINFO_H
-#define HAVE_BACKTRACE
-#include <execinfo.h>
-#endif
-
-#ifdef HAVE_BACKTRACE
-
-static __inline__ void xorg_backtrace(void)
-{
- void *array[32]; /* deeper nesting than this means something's wrong */
- size_t size, i;
- char **strings;
- ErrorF("\nBacktrace:\n");
- size = backtrace(array, 32);
- strings = backtrace_symbols(array, size);
- for (i = 0; i < size; i++)
- ErrorF("%d: %s\n", i, strings[i]);
- free(strings);
-}
-
-#else /* not glibc or glibc < 2.1 */
-
-# if defined(sun) && defined(__SVR4)
-# define HAVE_PSTACK
-# endif
-
-# if defined(HAVE_WALKCONTEXT) /* Solaris 9 & later */
-
-# include <ucontext.h>
-# include <signal.h>
-# include <dlfcn.h>
-# include <sys/elf.h>
-
-#ifdef _LP64
-# define ElfSym Elf64_Sym
-#else
-# define ElfSym Elf32_Sym
-#endif
-
-/* Called for each frame on the stack to print it's contents */
-static int xorg_backtrace_frame(uintptr_t pc, int signo, void *arg)
-{
- Dl_info dlinfo;
- ElfSym *dlsym;
- char header[32];
- int depth = *((int *) arg);
-
- if (signo) {
- char signame[SIG2STR_MAX];
-
- if (sig2str(signo, signame) != 0) {
- strcpy(signame, "unknown");
- }
-
- ErrorF("** Signal %d (%s)\n", signo, signame);
- }
-
- snprintf(header, sizeof(header), "%d: 0x%lx", depth, pc);
- *((int *) arg) = depth + 1;
-
- /* Ask system dynamic loader for info on the address */
- if (dladdr1((void *) pc, &dlinfo, (void **) &dlsym, RTLD_DL_SYMENT)) {
- unsigned long offset = pc - (uintptr_t) dlinfo.dli_saddr;
- const char *symname;
-
- if (offset < dlsym->st_size) { /* inside a function */
- symname = dlinfo.dli_sname;
- } else { /* found which file it was in, but not which function */
- symname = "<section start>";
- offset = pc - (uintptr_t)dlinfo.dli_fbase;
- }
- ErrorF("%s: %s:%s+0x%lx\n", header, dlinfo.dli_fname,
- symname, offset);
-
- } else {
- /* Couldn't find symbol info from system dynamic loader, should
- * probably poke elfloader here, but haven't written that code yet,
- * so we just print the pc.
- */
- ErrorF("%s\n", header);
- }
-
- return 0;
-}
-# endif /* HAVE_WALKCONTEXT */
-
-# ifdef HAVE_PSTACK
-static int xorg_backtrace_pstack(void) {
- pid_t kidpid;
- int pipefd[2];
-
- if (pipe(pipefd) != 0) {
- return -1;
- }
-
- kidpid = fork1();
-
- if (kidpid == -1) {
- /* ERROR */
- return -1;
- } else if (kidpid == 0) {
- /* CHILD */
- char parent[16];
-
- seteuid(0);
- close(STDIN_FILENO);
- close(STDOUT_FILENO);
- dup2(pipefd[1],STDOUT_FILENO);
- closefrom(STDERR_FILENO);
-
- snprintf(parent, sizeof(parent), "%d", getppid());
- execle("/usr/bin/pstack", "pstack", parent, NULL);
- exit(1);
- } else {
- /* PARENT */
- char btline[256];
- int kidstat;
- int bytesread;
- int done = 0;
-
- close(pipefd[1]);
-
- while (!done) {
- bytesread = read(pipefd[0], btline, sizeof(btline) - 1);
-
- if (bytesread > 0) {
- btline[bytesread] = 0;
- ErrorF("%s", btline);
- }
- else if ((bytesread < 0) ||
- ((errno != EINTR) && (errno != EAGAIN)))
- done = 1;
- }
- close(pipefd[0]);
- waitpid(kidpid, &kidstat, 0);
- if (kidstat != 0)
- return -1;
- }
- return 0;
-}
-# endif /* HAVE_PSTACK */
-
-
-# if defined(HAVE_PSTACK) || defined(HAVE_WALKCONTEXT)
-
-static __inline__ void xorg_backtrace(void) {
-
- ErrorF("\nBacktrace:\n");
-
-# ifdef HAVE_PSTACK
-/* First try fork/exec of pstack - otherwise fall back to walkcontext
- pstack is preferred since it can print names of non-exported functions */
-
- if (xorg_backtrace_pstack() < 0)
-# endif
- {
-# ifdef HAVE_WALKCONTEXT
- ucontext_t u;
- int depth = 1;
-
- if (getcontext(&u) == 0)
- walkcontext(&u, xorg_backtrace_frame, &depth);
- else
-# endif
- Error("Failed to get backtrace info");
- }
- ErrorF("\n");
-}
-
-# else
-
-/* Default fallback if we can't find any way to get a backtrace */
-static __inline__ void xorg_backtrace(void) { return; }
-
-# endif
-#endif
-
-/*
- * xf86SigHandler --
- * Catch unexpected signals and exit or continue cleanly.
- */
-void
-xf86SigHandler(int signo)
-{
- if ((signo == SIGILL) && xf86SigIllHandler) {
- (*xf86SigIllHandler)();
- /* Re-arm handler just in case we unexpectedly return here */
- (void) signal(signo, xf86SigHandler);
- return;
- }
-
- if (xf86SignalIntercept && (*xf86SignalIntercept < 0)) {
- *xf86SignalIntercept = signo;
- /* Re-arm handler just in case */
- (void) signal(signo, xf86SigHandler);
- return;
- }
-
- signal(signo,SIG_IGN);
- xf86Info.caughtSignal = TRUE;
-#ifdef XF86BIGFONT
- XF86BigfontCleanup();
-#endif
-#if defined(XFree86LOADER)
- if (xf86Initialising)
- LoaderCheckUnresolved(LD_RESOLV_IFDONE);
- ErrorF("\n"
- " *** If unresolved symbols were reported above, they might not\n"
- " *** be the reason for the server aborting.\n");
-#endif
-
- xorg_backtrace();
-
- FatalError("Caught signal %d. Server aborting\n", signo);
-}
-
-#ifdef MEMDEBUG
-void
-xf86SigMemDebug(int signo)
-{
- CheckMemory();
- (void) signal(signo, xf86SigMemDebug);
- return;
-}
-#endif
-
-/*
- * xf86VTSwitch --
- * Handle requests for switching the vt.
- */
-static void
-xf86VTSwitch()
-{
- int i, prevSIGIO;
- InputInfoPtr pInfo;
- IHPtr ih;
-
-#ifdef DEBUG
- ErrorF("xf86VTSwitch()\n");
-#endif
-
-#ifdef XFreeXDGA
- if(!DGAVTSwitch())
- return;
-#endif
-
- /*
- * Since all screens are currently all in the same state it is sufficient
- * check the first. This might change in future.
- */
- if (xf86Screens[0]->vtSema) {
-
-#ifdef DEBUG
- ErrorF("xf86VTSwitch: Leaving, xf86Exiting is %s\n",
- BOOLTOSTRING((dispatchException & DE_TERMINATE) ? TRUE : FALSE));
-#endif
-#ifdef DPMSExtension
- if (DPMSPowerLevel != DPMSModeOn)
- DPMSSet(DPMSModeOn);
-#endif
- for (i = 0; i < xf86NumScreens; i++) {
- if (!(dispatchException & DE_TERMINATE))
- if (xf86Screens[i]->EnableDisableFBAccess)
- (*xf86Screens[i]->EnableDisableFBAccess) (i, FALSE);
- }
-#if !defined(__UNIXOS2__)
-
- /*
- * Keep the order: Disable Device > LeaveVT
- * EnterVT > EnableDevice
- */
- DisableDevice((DeviceIntPtr)xf86Info.pKeyboard);
- pInfo = xf86InputDevs;
- while (pInfo) {
- DisableDevice(pInfo->dev);
- pInfo = pInfo->next;
- }
-#endif /* !__UNIXOS2__ */
- xf86EnterServerState(SETUP);
- for (i = 0; i < xf86NumScreens; i++)
- xf86Screens[i]->LeaveVT(i, 0);
-
- for (ih = InputHandlers; ih; ih = ih->next)
- xf86DisableInputHandler(ih);
- xf86AccessLeave(); /* We need this here, otherwise */
- xf86AccessLeaveState(); /* console won't be restored */
-
- if (!xf86VTSwitchAway()) {
- /*
- * switch failed
- */
-
-#ifdef DEBUG
- ErrorF("xf86VTSwitch: Leave failed\n");
-#endif
- prevSIGIO = xf86BlockSIGIO();
- xf86AccessEnter();
- xf86EnterServerState(SETUP);
- for (i = 0; i < xf86NumScreens; i++) {
- if (!xf86Screens[i]->EnterVT(i, 0))
- FatalError("EnterVT failed for screen %d\n", i);
- }
- xf86EnterServerState(OPERATING);
- if (!(dispatchException & DE_TERMINATE)) {
- for (i = 0; i < xf86NumScreens; i++) {
- if (xf86Screens[i]->EnableDisableFBAccess)
- (*xf86Screens[i]->EnableDisableFBAccess) (i, TRUE);
- }
- }
- SaveScreens(SCREEN_SAVER_FORCER, ScreenSaverReset);
-
-#if !defined(__UNIXOS2__)
- EnableDevice((DeviceIntPtr)xf86Info.pKeyboard);
- pInfo = xf86InputDevs;
- while (pInfo) {
- EnableDevice(pInfo->dev);
- pInfo = pInfo->next;
- }
-#endif /* !__UNIXOS2__ */
- for (ih = InputHandlers; ih; ih = ih->next)
- xf86EnableInputHandler(ih);
-
- xf86UnblockSIGIO(prevSIGIO);
-
- } else {
-#ifdef XF86PM
- if (xf86OSPMClose)
- xf86OSPMClose();
- xf86OSPMClose = NULL;
-#endif
-
- for (i = 0; i < xf86NumScreens; i++) {
- /*
- * zero all access functions to
- * trap calls when switched away.
- */
- xf86Screens[i]->vtSema = FALSE;
- xf86Screens[i]->access = NULL;
- xf86Screens[i]->busAccess = NULL;
- }
- if (xorgHWAccess)
- xf86DisableIO();
- }
- } else {
-
-#ifdef DEBUG
- ErrorF("xf86VTSwitch: Entering\n");
-#endif
- if (!xf86VTSwitchTo()) return;
-
- prevSIGIO = xf86BlockSIGIO();
-#ifdef XF86PM
- xf86OSPMClose = xf86OSPMOpen();
-#endif
-
- if (xorgHWAccess)
- xf86EnableIO();
- xf86AccessEnter();
- xf86EnterServerState(SETUP);
- for (i = 0; i < xf86NumScreens; i++) {
- xf86Screens[i]->vtSema = TRUE;
- if (!xf86Screens[i]->EnterVT(i, 0))
- FatalError("EnterVT failed for screen %d\n", i);
- }
- xf86EnterServerState(OPERATING);
- for (i = 0; i < xf86NumScreens; i++) {
- if (xf86Screens[i]->EnableDisableFBAccess)
- (*xf86Screens[i]->EnableDisableFBAccess)(i, TRUE);
- }
-
- /* Turn screen saver off when switching back */
- SaveScreens(SCREEN_SAVER_FORCER,ScreenSaverReset);
-
-#if !defined(__UNIXOS2__)
- EnableDevice((DeviceIntPtr)xf86Info.pKeyboard);
- pInfo = xf86InputDevs;
- while (pInfo) {
- EnableDevice(pInfo->dev);
- pInfo = pInfo->next;
- }
-#endif /* !__UNIXOS2__ */
-
- for (ih = InputHandlers; ih; ih = ih->next)
- xf86EnableInputHandler(ih);
-
- xf86UnblockSIGIO(prevSIGIO);
- }
-}
-
-
-/* Input handler registration */
-
-pointer
-xf86AddInputHandler(int fd, InputHandlerProc proc, pointer data)
-{
- IHPtr ih;
-
- if (fd < 0 || !proc)
- return NULL;
-
- ih = xcalloc(sizeof(*ih), 1);
- if (!ih)
- return NULL;
-
- ih->fd = fd;
- ih->ihproc = proc;
- ih->data = data;
- ih->enabled = TRUE;
-
- ih->next = InputHandlers;
- InputHandlers = ih;
-
- AddEnabledDevice(fd);
-
- return ih;
-}
-
-int
-xf86RemoveInputHandler(pointer handler)
-{
- IHPtr ih, p;
- int fd;
-
- if (!handler)
- return -1;
-
- ih = handler;
- fd = ih->fd;
-
- if (ih->fd >= 0)
- RemoveEnabledDevice(ih->fd);
-
- if (ih == InputHandlers)
- InputHandlers = ih->next;
- else {
- p = InputHandlers;
- while (p && p->next != ih)
- p = p->next;
- if (ih)
- p->next = ih->next;
- }
- xfree(ih);
- return fd;
-}
-
-void
-xf86DisableInputHandler(pointer handler)
-{
- IHPtr ih;
-
- if (!handler)
- return;
-
- ih = handler;
- ih->enabled = FALSE;
- if (ih->fd >= 0)
- RemoveEnabledDevice(ih->fd);
-}
-
-void
-xf86EnableInputHandler(pointer handler)
-{
- IHPtr ih;
-
- if (!handler)
- return;
-
- ih = handler;
- ih->enabled = TRUE;
- if (ih->fd >= 0)
- AddEnabledDevice(ih->fd);
-}
-
-/*
- * As used currently by the DRI, the return value is ignored.
- */
-Bool
-xf86EnableVTSwitch(Bool new)
-{
- static Bool def = TRUE;
- Bool old;
-
- old = VTSwitchEnabled;
- if (!new) {
- /* Disable VT switching */
- def = VTSwitchEnabled;
- VTSwitchEnabled = FALSE;
- } else {
- /* Restore VT switching to default */
- VTSwitchEnabled = def;
- }
- return old;
-}
-
-#ifdef XTESTEXT1
-
-void
-XTestGetPointerPos(short *fmousex, short *fmousey)
-{
- int x,y;
-
- miPointerPosition(&x, &y);
- *fmousex = x;
- *fmousey = y;
-}
-
-
-
-void
-XTestJumpPointer(int jx, int jy, int dev_type)
-{
- miPointerAbsoluteCursor(jx, jy, GetTimeInMillis() );
-}
-
-void
-XTestGenerateEvent(int dev_type, int keycode, int keystate, int mousex,
- int mousey)
-{
- xEvent tevent;
-
- tevent.u.u.type = (dev_type == XE_POINTER) ?
- (keystate == XTestKEY_UP) ? ButtonRelease : ButtonPress :
- (keystate == XTestKEY_UP) ? KeyRelease : KeyPress;
- tevent.u.u.detail = keycode;
- tevent.u.keyButtonPointer.rootX = mousex;
- tevent.u.keyButtonPointer.rootY = mousey;
- tevent.u.keyButtonPointer.time = xf86Info.lastEventTime = GetTimeInMillis();
-#ifdef XINPUT
- xf86eqEnqueue(&tevent);
-#else
- mieqEnqueue(&tevent);
-#endif
- xf86Info.inputPending = TRUE; /* virtual event */
-}
-
-#endif /* XTESTEXT1 */
-
-void
-xf86ReloadInputDevs(int sig)
-{
- InputInfoPtr pInfo;
-
- signal(sig, (void(*)(int))xf86ReloadInputDevs);
-
- DisableDevice((DeviceIntPtr)xf86Info.pKeyboard);
- EnableDevice((DeviceIntPtr)xf86Info.pKeyboard);
-
- pInfo = xf86InputDevs;
- while (pInfo) {
- DisableDevice(pInfo->dev);
- EnableDevice(pInfo->dev);
- pInfo = pInfo->next;
- }
-
- return;
-}
-
-#ifdef WSCONS_SUPPORT
-
-/* XXX Currently XKB is mandatory. */
-
-extern int WSKbdToKeycode(int);
-
-void
-xf86PostWSKbdEvent(struct wscons_event *event)
-{
- int type = event->type;
- int value = event->value;
- unsigned int keycode;
- int blocked;
-
- if (type == WSCONS_EVENT_KEY_UP || type == WSCONS_EVENT_KEY_DOWN) {
- Bool down = (type == WSCONS_EVENT_KEY_DOWN ? TRUE : FALSE);
-
- /* map the scancodes to standard XFree86 scancode */
- keycode = WSKbdToKeycode(value);
- if (!down) keycode |= 0x80;
- /* It seems better to block SIGIO there */
- blocked = xf86BlockSIGIO();
- xf86PostKbdEvent(keycode);
- xf86UnblockSIGIO(blocked);
- }
-}
-#endif /* WSCONS_SUPPORT */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Globals.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Globals.c
deleted file mode 100644
index 30fe10554..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Globals.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Globals.c,v 1.42 2004/01/27 01:31:44 dawes Exp $ */
-
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains all the XFree86 global variables.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "windowstr.h"
-#include "propertyst.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Parser.h"
-#include "xf86Xinput.h"
-#include "xf86InPriv.h"
-
-/* Globals that video drivers may access */
-
-int xf86ScreenIndex = -1; /* Index of ScrnInfo in pScreen.devPrivates */
-int xf86CreateRootWindowIndex = -1; /* Index into pScreen.devPrivates */
-ScrnInfoPtr *xf86Screens = NULL; /* List of ScrnInfos */
-int xf86PixmapIndex = 0;
-const unsigned char byte_reversed[256] =
-{
- 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
- 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
- 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
- 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
- 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
- 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
- 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
- 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
- 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
- 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
- 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
- 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
- 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
- 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
- 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
- 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
- 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
- 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
- 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
- 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
- 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
- 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
- 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
- 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
- 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
- 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
- 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
- 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
- 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
- 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
- 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
- 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
-};
-
-/* Globals that input drivers may access */
-InputInfoPtr xf86InputDevs = NULL;
-
-
-/* Globals that video drivers may not access */
-
-xf86InfoRec xf86Info = {
- NULL, /* pKeyboard */
- NULL, /* kbdProc */
- NULL, /* kbdEvents */
- -1, /* consoleFd */
- -1, /* kbdFd */
- -1, /* vtno */
- -1, /* kbdType */
- -1, /* kbdRate */
- -1, /* kbdDelay */
- -1, /* bell_pitch */
- -1, /* bell_duration */
- TRUE, /* autoRepeat */
- 0, /* leds */
- 0, /* xleds */
- NULL, /* vtinit */
- 0, /* scanPrefix */
- FALSE, /* capsLock */
- FALSE, /* numLock */
- FALSE, /* scrollLock */
- FALSE, /* modeSwitchLock */
- FALSE, /* composeLock */
- FALSE, /* vtSysreq */
- SKWhenNeeded, /* ddxSpecialKeys */
- FALSE, /* ActionKeyBindingsSet */
-#if defined(SVR4) && defined(i386)
- FALSE, /* panix106 */
-#endif
-#if defined(__OpenBSD__) || defined(__NetBSD__)
- 0, /* wskbdType */
-#endif
- NULL, /* pMouse */
-#ifdef XINPUT
- NULL, /* mouseLocal */
-#endif
- -1, /* lastEventTime */
- FALSE, /* vtRequestsPending */
- FALSE, /* inputPending */
- FALSE, /* dontVTSwitch */
- FALSE, /* dontZap */
- FALSE, /* dontZoom */
- FALSE, /* notrapSignals */
- FALSE, /* caughtSignal */
- FALSE, /* sharedMonitor */
- NULL, /* currentScreen */
-#ifdef CSRG_BASED
- -1, /* screenFd */
- -1, /* consType */
-#endif
-#ifdef XKB
- NULL, /* xkbkeymap */
- NULL, /* xkbkeycodes */
- NULL, /* xkbtypes */
- NULL, /* xkbcompat */
- NULL, /* xkbsymbols */
- NULL, /* xkbgeometry */
- FALSE, /* xkbcomponents_specified */
- NULL, /* xkbrules */
- NULL, /* xkbmodel */
- NULL, /* xkblayout */
- NULL, /* xkbvariant */
- NULL, /* xkboptions */
-#endif
- FALSE, /* allowMouseOpenFail */
- TRUE, /* vidModeEnabled */
- FALSE, /* vidModeAllowNonLocal */
- TRUE, /* miscModInDevEnabled */
- FALSE, /* miscModInDevAllowNonLocal */
- PCIOsConfig, /* pciFlags */
- Pix24DontCare, /* pixmap24 */
- X_DEFAULT, /* pix24From */
-#if defined(i386) || defined(__i386__)
- FALSE, /* pc98 */
-#endif
- TRUE, /* pmFlag */
- LogNone, /* syncLog */
- 0, /* estimateSizesAggressively */
- FALSE, /* kbdCustomKeycodes */
- FALSE, /* disableRandR */
- X_DEFAULT /* randRFrom */
-};
-const char *xf86ConfigFile = NULL;
-const char *xf86InputDeviceList = NULL;
-const char *xf86ModulePath = DEFAULT_MODULE_PATH;
-MessageType xf86ModPathFrom = X_DEFAULT;
-const char *xf86LogFile = DEFAULT_LOGPREFIX;
-MessageType xf86LogFileFrom = X_DEFAULT;
-Bool xf86LogFileWasOpened = FALSE;
-serverLayoutRec xf86ConfigLayout = {NULL, };
-confDRIRec xf86ConfigDRI = {0, };
-XF86ConfigPtr xf86configptr = NULL;
-Bool xf86Resetting = FALSE;
-Bool xf86Initialising = FALSE;
-Bool xf86ProbeFailed = FALSE;
-Bool xf86DoProbe = FALSE;
-Bool xf86DoConfigure = FALSE;
-#ifdef XFree86LOADER
-DriverPtr *xf86DriverList = NULL;
-int xf86NumDrivers = 0;
-InputDriverPtr *xf86InputDriverList = NULL;
-int xf86NumInputDrivers = 0;
-ModuleInfoPtr *xf86ModuleInfoList = NULL;
-int xf86NumModuleInfos = 0;
-#endif
-int xf86NumScreens = 0;
-
-const char *xf86VisualNames[] = {
- "StaticGray",
- "GrayScale",
- "StaticColor",
- "PseudoColor",
- "TrueColor",
- "DirectColor"
-};
-
-/* Parameters set only from the command line */
-char *xf86ServerName = "no-name";
-Bool xf86fpFlag = FALSE;
-Bool xf86coFlag = FALSE;
-Bool xf86sFlag = FALSE;
-Bool xf86bsEnableFlag = FALSE;
-Bool xf86bsDisableFlag = FALSE;
-Bool xf86silkenMouseDisableFlag = FALSE;
-Bool xf86acpiDisableFlag = FALSE;
-char *xf86LayoutName = NULL;
-char *xf86ScreenName = NULL;
-char *xf86PointerName = NULL;
-char *xf86KeyboardName = NULL;
-Bool xf86ProbeOnly = FALSE;
-int xf86Verbose = DEFAULT_VERBOSE;
-int xf86LogVerbose = DEFAULT_LOG_VERBOSE;
-int xf86FbBpp = -1;
-Pix24Flags xf86Pix24 = Pix24DontCare;
-int xf86Depth = -1;
-rgb xf86Weight = {0, 0, 0};
-Bool xf86FlipPixels = FALSE;
-Gamma xf86Gamma = {0.0, 0.0, 0.0};
-Bool xf86ShowUnresolved = DEFAULT_UNRESOLVED;
-Bool xf86BestRefresh = DEFAULT_BEST_REFRESH;
-Bool xf86AllowMouseOpenFail = FALSE;
-#ifdef XF86VIDMODE
-Bool xf86VidModeDisabled = FALSE;
-Bool xf86VidModeAllowNonLocal = FALSE;
-#endif
-#ifdef XF86MISC
-Bool xf86MiscModInDevDisabled = FALSE;
-Bool xf86MiscModInDevAllowNonLocal = FALSE;
-#endif
-RootWinPropPtr *xf86RegisteredPropertiesTable = NULL;
-Bool xf86inSuspend = FALSE;
-Bool xorgHWAccess = FALSE;
-PciBusId xf86IsolateDevice;
-
-#ifdef DLOPEN_HACK
-/*
- * This stuff is a hack to allow dlopen() modules to work. It is intended
- * only to be used when using dlopen() modules for debugging purposes.
- */
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Helper.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Helper.c
deleted file mode 100644
index a6c7d5c89..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Helper.c
+++ /dev/null
@@ -1,2983 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Helper.c,v 1.136 2004/01/27 01:31:45 dawes Exp $ */
-
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * Authors: Dirk Hohndel <hohndel@XFree86.Org>
- * David Dawes <dawes@XFree86.Org>
- * ... and others
- *
- * This file includes the helper functions that the server provides for
- * different drivers.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "servermd.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-#include "propertyst.h"
-#include "gcstruct.h"
-#include "loaderProcs.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "micmap.h"
-#include "xf86PciInfo.h"
-#include "xf86DDC.h"
-#include "xf86Xinput.h"
-#include "xf86InPriv.h"
-#include "mivalidate.h"
-#include "xf86RAC.h"
-#include "xf86Bus.h"
-#include "xf86Version.h"
-
-/* For xf86GetClocks */
-#if defined(CSRG_BASED) || defined(__GNU__)
-#define HAS_SETPRIORITY
-#include <sys/resource.h>
-#endif
-
-static int xf86ScrnInfoPrivateCount = 0;
-
-
-#ifdef XFree86LOADER
-/* Add a pointer to a new DriverRec to xf86DriverList */
-
-void
-xf86AddDriver(DriverPtr driver, pointer module, int flags)
-{
- /* Don't add null entries */
- if (!driver)
- return;
-
- if (xf86DriverList == NULL)
- xf86NumDrivers = 0;
-
- xf86NumDrivers++;
- xf86DriverList = xnfrealloc(xf86DriverList,
- xf86NumDrivers * sizeof(DriverPtr));
- xf86DriverList[xf86NumDrivers - 1] = xnfalloc(sizeof(DriverRec));
- if (flags & HaveDriverFuncs)
- *xf86DriverList[xf86NumDrivers - 1] = *driver;
- else {
- memcpy(xf86DriverList[xf86NumDrivers - 1], driver, sizeof(DriverRec1));
- xf86DriverList[xf86NumDrivers - 1]->driverFunc = NULL;
- }
- xf86DriverList[xf86NumDrivers - 1]->module = module;
- xf86DriverList[xf86NumDrivers - 1]->refCount = 0;
-}
-
-void
-xf86DeleteDriver(int drvIndex)
-{
- if (xf86DriverList[drvIndex]
- && (!xf86DriverHasEntities(xf86DriverList[drvIndex]))) {
- if (xf86DriverList[drvIndex]->module)
- UnloadModule(xf86DriverList[drvIndex]->module);
- xfree(xf86DriverList[drvIndex]);
- xf86DriverList[drvIndex] = NULL;
- }
-}
-
-/* Add a pointer to a new InputDriverRec to xf86InputDriverList */
-
-void
-xf86AddInputDriver(InputDriverPtr driver, pointer module, int flags)
-{
- /* Don't add null entries */
- if (!driver)
- return;
-
- if (xf86InputDriverList == NULL)
- xf86NumInputDrivers = 0;
-
- xf86NumInputDrivers++;
- xf86InputDriverList = xnfrealloc(xf86InputDriverList,
- xf86NumInputDrivers * sizeof(InputDriverPtr));
- xf86InputDriverList[xf86NumInputDrivers - 1] =
- xnfalloc(sizeof(InputDriverRec));
- *xf86InputDriverList[xf86NumInputDrivers - 1] = *driver;
- xf86InputDriverList[xf86NumInputDrivers - 1]->module = module;
- xf86InputDriverList[xf86NumInputDrivers - 1]->refCount = 0;
-}
-
-void
-xf86DeleteInputDriver(int drvIndex)
-{
- if (xf86InputDriverList[drvIndex] && xf86InputDriverList[drvIndex]->module)
- UnloadModule(xf86InputDriverList[drvIndex]->module);
- xfree(xf86InputDriverList[drvIndex]);
- xf86InputDriverList[drvIndex] = NULL;
-}
-
-void
-xf86AddModuleInfo(ModuleInfoPtr info, pointer module)
-{
- /* Don't add null entries */
- if (!module)
- return;
-
- if (xf86ModuleInfoList == NULL)
- xf86NumModuleInfos = 0;
-
- xf86NumModuleInfos++;
- xf86ModuleInfoList = xnfrealloc(xf86ModuleInfoList,
- xf86NumModuleInfos * sizeof(ModuleInfoPtr));
- xf86ModuleInfoList[xf86NumModuleInfos - 1] = xnfalloc(sizeof(ModuleInfoRec));
- *xf86ModuleInfoList[xf86NumModuleInfos - 1] = *info;
- xf86ModuleInfoList[xf86NumModuleInfos - 1]->module = module;
- xf86ModuleInfoList[xf86NumModuleInfos - 1]->refCount = 0;
-}
-
-void
-xf86DeleteModuleInfo(int idx)
-{
- if (xf86ModuleInfoList[idx]) {
- if (xf86ModuleInfoList[idx]->module)
- UnloadModule(xf86ModuleInfoList[idx]->module);
- xfree(xf86ModuleInfoList[idx]);
- xf86ModuleInfoList[idx] = NULL;
- }
-}
-#endif
-
-
-/* Allocate a new ScrnInfoRec in xf86Screens */
-
-ScrnInfoPtr
-xf86AllocateScreen(DriverPtr drv, int flags)
-{
- int i;
-
- if (xf86Screens == NULL)
- xf86NumScreens = 0;
-
- i = xf86NumScreens++;
- xf86Screens = xnfrealloc(xf86Screens, xf86NumScreens * sizeof(ScrnInfoPtr));
- xf86Screens[i] = xnfcalloc(sizeof(ScrnInfoRec), 1);
- xf86Screens[i]->scrnIndex = i; /* Changes when a screen is removed */
- xf86Screens[i]->origIndex = i; /* This never changes */
- xf86Screens[i]->privates = xnfcalloc(sizeof(DevUnion),
- xf86ScrnInfoPrivateCount);
- /*
- * EnableDisableFBAccess now gets initialized in InitOutput()
- * xf86Screens[i]->EnableDisableFBAccess = xf86EnableDisableFBAccess;
- */
-
- xf86Screens[i]->drv = drv;
- drv->refCount++;
-#ifdef XFree86LOADER
- xf86Screens[i]->module = DuplicateModule(drv->module, NULL);
-#else
- xf86Screens[i]->module = NULL;
-#endif
- /*
- * set the initial access state. This will be modified after PreInit.
- * XXX Or should we do it some other place?
- */
- xf86Screens[i]->CurrentAccess = &xf86CurrentAccess;
- xf86Screens[i]->resourceType = MEM_IO;
-
-#ifdef DEBUG
- /* OOps -- What's this ? */
- ErrorF("xf86AllocateScreen - xf86Screens[%d]->pScreen = %p\n",
- i, xf86Screens[i]->pScreen );
- if ( NULL != xf86Screens[i]->pScreen ) {
- ErrorF("xf86Screens[%d]->pScreen->CreateWindow = %p\n",
- i, xf86Screens[i]->pScreen->CreateWindow );
- }
-#endif
-
- xf86Screens[i]->DriverFunc = drv->driverFunc;
-
- return xf86Screens[i];
-}
-
-
-/*
- * Remove an entry from xf86Screens. Ideally it should free all allocated
- * data. To do this properly may require a driver hook.
- */
-
-void
-xf86DeleteScreen(int scrnIndex, int flags)
-{
- ScrnInfoPtr pScrn;
- int i;
-
- /* First check if the screen is valid */
- if (xf86NumScreens == 0 || xf86Screens == NULL)
- return;
-
- if (scrnIndex > xf86NumScreens - 1)
- return;
-
- if (!(pScrn = xf86Screens[scrnIndex]))
- return;
-
- /* If a FreeScreen function is defined, call it here */
- if (pScrn->FreeScreen != NULL)
- pScrn->FreeScreen(scrnIndex, 0);
-
- while (pScrn->modes)
- xf86DeleteMode(&pScrn->modes, pScrn->modes);
-
- while (pScrn->modePool)
- xf86DeleteMode(&pScrn->modePool, pScrn->modePool);
-
- xf86OptionListFree(pScrn->options);
-
-#ifdef XFree86LOADER
- if (pScrn->module)
- UnloadModule(pScrn->module);
-#endif
-
- if (pScrn->drv)
- pScrn->drv->refCount--;
-
- if (pScrn->privates)
- xfree(pScrn->privates);
-
- xf86ClearEntityListForScreen(scrnIndex);
-
- xfree(pScrn);
-
- /* Move the other entries down, updating their scrnIndex fields */
-
- xf86NumScreens--;
-
- for (i = scrnIndex; i < xf86NumScreens; i++) {
- xf86Screens[i] = xf86Screens[i + 1];
- xf86Screens[i]->scrnIndex = i;
- /* Also need to take care of the screen layout settings */
- }
-}
-
-/*
- * Allocate a private in ScrnInfoRec.
- */
-
-int
-xf86AllocateScrnInfoPrivateIndex(void)
-{
- int idx, i;
- ScrnInfoPtr pScr;
- DevUnion *nprivs;
-
- idx = xf86ScrnInfoPrivateCount++;
- for (i = 0; i < xf86NumScreens; i++) {
- pScr = xf86Screens[i];
- nprivs = xnfrealloc(pScr->privates,
- xf86ScrnInfoPrivateCount * sizeof(DevUnion));
- /* Zero the new private */
- bzero(&nprivs[idx], sizeof(DevUnion));
- pScr->privates = nprivs;
- }
- return idx;
-}
-
-/* Allocate a new InputInfoRec and add it to the head xf86InputDevs. */
-
-InputInfoPtr
-xf86AllocateInput(InputDriverPtr drv, int flags)
-{
- InputInfoPtr new;
-
- if (!(new = xcalloc(sizeof(InputInfoRec), 1)))
- return NULL;
-
- new->drv = drv;
- drv->refCount++;
-#ifdef XFree86LOADER
- new->module = DuplicateModule(drv->module, NULL);
-#else
- new->module = NULL;
-#endif
- new->next = xf86InputDevs;
- xf86InputDevs = new;
- return new;
-}
-
-
-/*
- * Remove an entry from xf86InputDevs. Ideally it should free all allocated
- * data. To do this properly may require a driver hook.
- */
-
-void
-xf86DeleteInput(InputInfoPtr pInp, int flags)
-{
- InputInfoPtr p;
-
- /* First check if the inputdev is valid. */
- if (pInp == NULL)
- return;
-
-#if 0
- /* If a free function is defined, call it here. */
- if (pInp->free)
- pInp->free(pInp, 0);
-#endif
-
-#ifdef XFree86LOADER
- if (pInp->module)
- UnloadModule(pInp->module);
-#endif
-
- if (pInp->drv)
- pInp->drv->refCount--;
-
- if (pInp->private)
- xfree(pInp->private);
-
- /* Remove the entry from the list. */
- if (pInp == xf86InputDevs)
- xf86InputDevs = pInp->next;
- else {
- p = xf86InputDevs;
- while (p && p->next != pInp)
- p = p->next;
- if (p)
- p->next = pInp->next;
- /* Else the entry wasn't in the xf86InputDevs list (ignore this). */
- }
- xfree(pInp);
-}
-
-Bool
-xf86AddPixFormat(ScrnInfoPtr pScrn, int depth, int bpp, int pad)
-{
- int i;
-
- if (pScrn->numFormats >= MAXFORMATS)
- return FALSE;
-
- if (bpp <= 0) {
- if (depth == 1)
- bpp = 1;
- else if (depth <= 8)
- bpp = 8;
- else if (depth <= 16)
- bpp = 16;
- else if (depth <= 32)
- bpp = 32;
- else
- return FALSE;
- }
- if (pad <= 0)
- pad = BITMAP_SCANLINE_PAD;
-
- i = pScrn->numFormats++;
- pScrn->formats[i].depth = depth;
- pScrn->formats[i].bitsPerPixel = bpp;
- pScrn->formats[i].scanlinePad = pad;
- return TRUE;
-}
-
-/*
- * Set the depth we are using based on (in the following order of preference):
- * - values given on the command line
- * - values given in the config file
- * - values provided by the driver
- * - an overall default when nothing else is given
- *
- * Also find a Display subsection matching the depth/bpp found.
- *
- * Sets the following ScrnInfoRec fields:
- * bitsPerPixel, pixmap24, depth, display, imageByteOrder,
- * bitmapScanlinePad, bitmapScanlineUnit, bitmapBitOrder, numFormats,
- * formats, fbFormat.
- */
-
-/* Can the screen handle 24 bpp pixmaps */
-#define DO_PIX24(f) ((f & Support24bppFb) || \
- ((f & Support32bppFb) && (f & SupportConvert24to32)))
-
-/* Can the screen handle 32 bpp pixmaps */
-#define DO_PIX32(f) ((f & Support32bppFb) || \
- ((f & Support24bppFb) && (f & SupportConvert32to24)))
-
-/* Does the screen prefer 32bpp fb for 24bpp pixmaps */
-#define CHOOSE32FOR24(f) ((f & Support32bppFb) && (f & SupportConvert24to32) \
- && (f & PreferConvert24to32))
-
-/* Does the screen prefer 24bpp fb for 32bpp pixmaps */
-#define CHOOSE24FOR32(f) ((f & Support24bppFb) && (f & SupportConvert32to24) \
- && (f & PreferConvert32to24))
-
-/* Can the screen handle 32bpp pixmaps for 24bpp fb */
-#define DO_PIX32FOR24(f) ((f & Support24bppFb) && (f & SupportConvert32to24))
-
-/* Can the screen handle 24bpp pixmaps for 32bpp fb */
-#define DO_PIX24FOR32(f) ((f & Support32bppFb) && (f & SupportConvert24to32))
-
-#ifndef GLOBAL_DEFAULT_DEPTH
-#define GLOBAL_DEFAULT_DEPTH 16
-#endif
-
-#ifndef GLOBAL_DEFAULT_FBBPP
-#define GLOBAL_DEFAULT_FBBPP 16
-#endif
-
-Bool
-xf86SetDepthBpp(ScrnInfoPtr scrp, int depth, int dummy, int fbbpp,
- int depth24flags)
-{
- int i;
- DispPtr disp;
- Pix24Flags pix24 = xf86Info.pixmap24;
- Bool nomatch = FALSE;
-
- scrp->bitsPerPixel = -1;
- scrp->depth = -1;
- scrp->pixmap24 = Pix24DontCare;
- scrp->bitsPerPixelFrom = X_DEFAULT;
- scrp->depthFrom = X_DEFAULT;
-
-#if BITMAP_SCANLINE_UNIT == 64
- /*
- * For platforms with 64-bit scanlines, modify the driver's depth24flags
- * to remove preferences for packed 24bpp modes, which are not currently
- * supported on these platforms.
- */
- depth24flags &= ~(SupportConvert32to24 | SupportConvert32to24 |
- PreferConvert24to32 | PreferConvert32to24);
-#endif
-
- if (xf86FbBpp > 0) {
- scrp->bitsPerPixel = xf86FbBpp;
- scrp->bitsPerPixelFrom = X_CMDLINE;
- }
-
- if (xf86Depth > 0) {
- scrp->depth = xf86Depth;
- scrp->depthFrom = X_CMDLINE;
- }
-
- if (xf86FbBpp < 0 && xf86Depth < 0) {
- if (scrp->confScreen->defaultfbbpp > 0) {
- scrp->bitsPerPixel = scrp->confScreen->defaultfbbpp;
- scrp->bitsPerPixelFrom = X_CONFIG;
- }
- if (scrp->confScreen->defaultdepth > 0) {
- scrp->depth = scrp->confScreen->defaultdepth;
- scrp->depthFrom = X_CONFIG;
- }
-
- if (scrp->confScreen->defaultfbbpp <= 0 &&
- scrp->confScreen->defaultdepth <= 0) {
- /*
- * Check for DefaultDepth and DefaultFbBpp options in the
- * Device sections.
- */
- int i;
- GDevPtr device;
- Bool found = FALSE;
-
- for (i = 0; i < scrp->numEntities; i++) {
- device = xf86GetDevFromEntity(scrp->entityList[i],
- scrp->entityInstanceList[i]);
- if (device && device->options) {
- if (xf86FindOption(device->options, "DefaultDepth")) {
- scrp->depth = xf86SetIntOption(device->options,
- "DefaultDepth", -1);
- scrp->depthFrom = X_CONFIG;
- found = TRUE;
- }
- if (xf86FindOption(device->options, "DefaultFbBpp")) {
- scrp->bitsPerPixel = xf86SetIntOption(device->options,
- "DefaultFbBpp",
- -1);
- scrp->bitsPerPixelFrom = X_CONFIG;
- found = TRUE;
- }
- }
- if (found)
- break;
- }
- }
- }
-
- /* If none of these is set, pick a default */
- if (scrp->bitsPerPixel < 0 && scrp->depth < 0) {
- if (fbbpp > 0 || depth > 0) {
- if (fbbpp > 0)
- scrp->bitsPerPixel = fbbpp;
- if (depth > 0)
- scrp->depth = depth;
- } else {
- scrp->bitsPerPixel = GLOBAL_DEFAULT_FBBPP;
- scrp->depth = GLOBAL_DEFAULT_DEPTH;
- }
- }
-
- /* If any are not given, determine a default for the others */
-
- if (scrp->bitsPerPixel < 0) {
- /* The depth must be set */
- if (scrp->depth > -1) {
- if (scrp->depth == 1)
- scrp->bitsPerPixel = 1;
- else if (scrp->depth <= 4)
- scrp->bitsPerPixel = 4;
- else if (scrp->depth <= 8)
- scrp->bitsPerPixel = 8;
- else if (scrp->depth <= 16)
- scrp->bitsPerPixel = 16;
- else if (scrp->depth <= 24) {
- /*
- * Figure out if a choice is possible based on the depth24
- * and pix24 flags.
- */
- /* Check pix24 first */
- if (pix24 != Pix24DontCare) {
- if (pix24 == Pix24Use32) {
- if (DO_PIX32(depth24flags)) {
- if (CHOOSE24FOR32(depth24flags))
- scrp->bitsPerPixel = 24;
- else
- scrp->bitsPerPixel = 32;
- } else {
- nomatch = TRUE;
- }
- } else if (pix24 == Pix24Use24) {
- if (DO_PIX24(depth24flags)) {
- if (CHOOSE32FOR24(depth24flags))
- scrp->bitsPerPixel = 32;
- else
- scrp->bitsPerPixel = 24;
- } else {
- nomatch = TRUE;
- }
- }
- } else {
- if (DO_PIX32(depth24flags)) {
- if (CHOOSE24FOR32(depth24flags))
- scrp->bitsPerPixel = 24;
- else
- scrp->bitsPerPixel = 32;
- } else if (DO_PIX24(depth24flags)) {
- if (CHOOSE32FOR24(depth24flags))
- scrp->bitsPerPixel = 32;
- else
- scrp->bitsPerPixel = 24;
- }
- }
- } else if (scrp->depth <= 32)
- scrp->bitsPerPixel = 32;
- else {
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Specified depth (%d) is greater than 32\n",
- scrp->depth);
- return FALSE;
- }
- } else {
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "xf86SetDepthBpp: internal error: depth and fbbpp"
- " are both not set\n");
- return FALSE;
- }
- if (scrp->bitsPerPixel < 0) {
- if (nomatch)
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Driver can't support depth 24 pixmap format (%d)\n",
- PIX24TOBPP(pix24));
- else if ((depth24flags & (Support24bppFb | Support32bppFb)) ==
- NoDepth24Support)
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Driver can't support depth 24\n");
- else
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Can't find fbbpp for depth 24\n");
- return FALSE;
- }
- scrp->bitsPerPixelFrom = X_PROBED;
- }
-
- if (scrp->depth <= 0) {
- /* bitsPerPixel is already set */
- switch (scrp->bitsPerPixel) {
- case 32:
- scrp->depth = 24;
- break;
- default:
- /* 1, 4, 8, 16 and 24 */
- scrp->depth = scrp->bitsPerPixel;
- break;
- }
- scrp->depthFrom = X_PROBED;
- }
-
- /* Sanity checks */
- if (scrp->depth < 1 || scrp->depth > 32) {
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Specified depth (%d) is not in the range 1-32\n",
- scrp->depth);
- return FALSE;
- }
- switch (scrp->bitsPerPixel) {
- case 1:
- case 4:
- case 8:
- case 16:
- case 24:
- case 32:
- break;
- default:
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Specified fbbpp (%d) is not a permitted value\n",
- scrp->bitsPerPixel);
- return FALSE;
- }
- if (scrp->depth > scrp->bitsPerPixel) {
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Specified depth (%d) is greater than the fbbpp (%d)\n",
- scrp->depth, scrp->bitsPerPixel);
- return FALSE;
- }
-
- /* set scrp->pixmap24 if the driver isn't flexible */
- if (scrp->bitsPerPixel == 24 && !DO_PIX32FOR24(depth24flags)) {
- scrp->pixmap24 = Pix24Use24;
- }
- if (scrp->bitsPerPixel == 32 && !DO_PIX24FOR32(depth24flags)) {
- scrp->pixmap24 = Pix24Use32;
- }
-
- /*
- * Find the Display subsection matching the depth/fbbpp and initialise
- * scrp->display with it.
- */
- for (i = 0, disp = scrp->confScreen->displays;
- i < scrp->confScreen->numdisplays; i++, disp++) {
- if ((disp->depth == scrp->depth && disp->fbbpp == scrp->bitsPerPixel)
- || (disp->depth == scrp->depth && disp->fbbpp <= 0)
- || (disp->fbbpp == scrp->bitsPerPixel && disp->depth <= 0)) {
- scrp->display = disp;
- break;
- }
- }
-
- /*
- * If an exact match can't be found, see if there is one with no
- * depth or fbbpp specified.
- */
- if (i == scrp->confScreen->numdisplays) {
- for (i = 0, disp = scrp->confScreen->displays;
- i < scrp->confScreen->numdisplays; i++, disp++) {
- if (disp->depth <= 0 && disp->fbbpp <= 0) {
- scrp->display = disp;
- break;
- }
- }
- }
-
- /*
- * If all else fails, create a default one.
- */
- if (i == scrp->confScreen->numdisplays) {
- scrp->confScreen->numdisplays++;
- scrp->confScreen->displays =
- xnfrealloc(scrp->confScreen->displays,
- scrp->confScreen->numdisplays * sizeof(DispRec));
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Creating default Display subsection in Screen section\n"
- "\t\"%s\" for depth/fbbpp %d/%d\n",
- scrp->confScreen->id, scrp->depth, scrp->bitsPerPixel);
- memset(&scrp->confScreen->displays[i], 0, sizeof(DispRec));
- scrp->confScreen->displays[i].blackColour.red = -1;
- scrp->confScreen->displays[i].blackColour.green = -1;
- scrp->confScreen->displays[i].blackColour.blue = -1;
- scrp->confScreen->displays[i].whiteColour.red = -1;
- scrp->confScreen->displays[i].whiteColour.green = -1;
- scrp->confScreen->displays[i].whiteColour.blue = -1;
- scrp->confScreen->displays[i].defaultVisual = -1;
- scrp->confScreen->displays[i].modes = xnfalloc(sizeof(char *));
- scrp->confScreen->displays[i].modes[0] = NULL;
- scrp->confScreen->displays[i].depth = depth;
- scrp->confScreen->displays[i].fbbpp = fbbpp;
- scrp->display = &scrp->confScreen->displays[i];
- }
-
- /*
- * Setup defaults for the display-wide attributes the framebuffer will
- * need. These defaults should eventually be set globally, and not
- * dependent on the screens.
- */
- scrp->imageByteOrder = IMAGE_BYTE_ORDER;
- scrp->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
- if (scrp->depth < 8) {
- /* Planar modes need these settings */
- scrp->bitmapScanlineUnit = 8;
- scrp->bitmapBitOrder = MSBFirst;
- } else {
- scrp->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
- scrp->bitmapBitOrder = BITMAP_BIT_ORDER;
- }
-
- /*
- * If an unusual depth is required, add it to scrp->formats. The formats
- * for the common depths are handled globally in InitOutput
- */
- switch (scrp->depth) {
- case 1:
- case 4:
- case 8:
- case 15:
- case 16:
- case 24:
- /* Common depths. Nothing to do for them */
- break;
- default:
- if (!xf86AddPixFormat(scrp, scrp->depth, 0, 0)) {
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Can't add pixmap format for depth %d\n", scrp->depth);
- return FALSE;
- }
- }
-
- /* Initialise the framebuffer format for this screen */
- scrp->fbFormat.depth = scrp->depth;
- scrp->fbFormat.bitsPerPixel = scrp->bitsPerPixel;
- scrp->fbFormat.scanlinePad = BITMAP_SCANLINE_PAD;
-
- return TRUE;
-}
-
-/*
- * Print out the selected depth and bpp.
- */
-void
-xf86PrintDepthBpp(ScrnInfoPtr scrp)
-{
- xf86DrvMsg(scrp->scrnIndex, scrp->depthFrom, "Depth %d, ", scrp->depth);
- xf86Msg(scrp->bitsPerPixelFrom, "framebuffer bpp %d\n", scrp->bitsPerPixel);
-}
-
-/*
- * xf86SetWeight sets scrp->weight, scrp->mask, scrp->offset, and for depths
- * greater than MAX_PSEUDO_DEPTH also scrp->rgbBits.
- */
-Bool
-xf86SetWeight(ScrnInfoPtr scrp, rgb weight, rgb mask)
-{
- MessageType weightFrom = X_DEFAULT;
-
- scrp->weight.red = 0;
- scrp->weight.green = 0;
- scrp->weight.blue = 0;
-
- if (xf86Weight.red > 0 && xf86Weight.green > 0 && xf86Weight.blue > 0) {
- scrp->weight = xf86Weight;
- weightFrom = X_CMDLINE;
- } else if (scrp->display->weight.red > 0 && scrp->display->weight.green > 0
- && scrp->display->weight.blue > 0) {
- scrp->weight = scrp->display->weight;
- weightFrom = X_CONFIG;
- } else if (weight.red > 0 && weight.green > 0 && weight.blue > 0) {
- scrp->weight = weight;
- } else {
- switch (scrp->depth) {
- case 1:
- case 4:
- case 8:
- scrp->weight.red = scrp->weight.green =
- scrp->weight.blue = scrp->rgbBits;
- break;
- case 15:
- scrp->weight.red = scrp->weight.green = scrp->weight.blue = 5;
- break;
- case 16:
- scrp->weight.red = scrp->weight.blue = 5;
- scrp->weight.green = 6;
- break;
- case 24:
- scrp->weight.red = scrp->weight.green = scrp->weight.blue = 8;
- break;
- case 30:
- scrp->weight.red = scrp->weight.green = scrp->weight.blue = 10;
- break;
- }
- }
-
- if (scrp->weight.red)
- xf86DrvMsg(scrp->scrnIndex, weightFrom, "RGB weight %d%d%d\n",
- (int)scrp->weight.red, (int)scrp->weight.green,
- (int)scrp->weight.blue);
-
- if (scrp->depth > MAX_PSEUDO_DEPTH &&
- (scrp->depth != scrp->weight.red + scrp->weight.green +
- scrp->weight.blue)) {
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Weight given (%d%d%d) is inconsistent with the "
- "depth (%d)\n",
- (int)scrp->weight.red, (int)scrp->weight.green,
- (int)scrp->weight.blue, scrp->depth);
- return FALSE;
- }
- if (scrp->depth > MAX_PSEUDO_DEPTH && scrp->weight.red) {
- /*
- * XXX Does this even mean anything for TrueColor visuals?
- * If not, we shouldn't even be setting it here. However, this
- * matches the behaviour of 3.x versions of XFree86.
- */
- scrp->rgbBits = scrp->weight.red;
- if (scrp->weight.green > scrp->rgbBits)
- scrp->rgbBits = scrp->weight.green;
- if (scrp->weight.blue > scrp->rgbBits)
- scrp->rgbBits = scrp->weight.blue;
- }
-
- /* Set the mask and offsets */
- if (mask.red == 0 || mask.green == 0 || mask.blue == 0) {
- /* Default to a setting common to PC hardware */
- scrp->offset.red = scrp->weight.green + scrp->weight.blue;
- scrp->offset.green = scrp->weight.blue;
- scrp->offset.blue = 0;
- scrp->mask.red = ((1 << scrp->weight.red) - 1) << scrp->offset.red;
- scrp->mask.green = ((1 << scrp->weight.green) - 1)
- << scrp->offset.green;
- scrp->mask.blue = (1 << scrp->weight.blue) - 1;
- } else {
- /* Initialise to the values passed */
- scrp->mask.red = mask.red;
- scrp->mask.green = mask.green;
- scrp->mask.blue = mask.blue;
- scrp->offset.red = ffs(mask.red);
- scrp->offset.green = ffs(mask.green);
- scrp->offset.blue = ffs(mask.blue);
- }
- return TRUE;
-}
-
-Bool
-xf86SetDefaultVisual(ScrnInfoPtr scrp, int visual)
-{
- MessageType visualFrom = X_DEFAULT;
-
- if (defaultColorVisualClass >= 0) {
- scrp->defaultVisual = defaultColorVisualClass;
- visualFrom = X_CMDLINE;
- } else if (scrp->display->defaultVisual >= 0) {
- scrp->defaultVisual = scrp->display->defaultVisual;
- visualFrom = X_CONFIG;
- } else if (visual >= 0) {
- scrp->defaultVisual = visual;
- } else {
- if (scrp->depth == 1)
- scrp->defaultVisual = StaticGray;
- else if (scrp->depth == 4)
- scrp->defaultVisual = StaticColor;
- else if (scrp->depth <= MAX_PSEUDO_DEPTH)
- scrp->defaultVisual = PseudoColor;
- else
- scrp->defaultVisual = TrueColor;
- }
- switch (scrp->defaultVisual) {
- case StaticGray:
- case GrayScale:
- case StaticColor:
- case PseudoColor:
- case TrueColor:
- case DirectColor:
- xf86DrvMsg(scrp->scrnIndex, visualFrom, "Default visual is %s\n",
- xf86VisualNames[scrp->defaultVisual]);
- return TRUE;
- default:
-
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Invalid default visual class (%d)\n", scrp->defaultVisual);
- return FALSE;
- }
-}
-
-#define TEST_GAMMA(g) \
- (g).red > GAMMA_ZERO || (g).green > GAMMA_ZERO || (g).blue > GAMMA_ZERO
-
-#define SET_GAMMA(g) \
- (g) > GAMMA_ZERO ? (g) : 1.0
-
-Bool
-xf86SetGamma(ScrnInfoPtr scrp, Gamma gamma)
-{
- MessageType from = X_DEFAULT;
-#if 0
- xf86MonPtr DDC = (xf86MonPtr)(scrp->monitor->DDC);
-#endif
- if (TEST_GAMMA(xf86Gamma)) {
- from = X_CMDLINE;
- scrp->gamma.red = SET_GAMMA(xf86Gamma.red);
- scrp->gamma.green = SET_GAMMA(xf86Gamma.green);
- scrp->gamma.blue = SET_GAMMA(xf86Gamma.blue);
- } else if (TEST_GAMMA(scrp->monitor->gamma)) {
- from = X_CONFIG;
- scrp->gamma.red = SET_GAMMA(scrp->monitor->gamma.red);
- scrp->gamma.green = SET_GAMMA(scrp->monitor->gamma.green);
- scrp->gamma.blue = SET_GAMMA(scrp->monitor->gamma.blue);
-#if 0
- } else if ( DDC && DDC->features.gamma > GAMMA_ZERO ) {
- from = X_PROBED;
- scrp->gamma.red = SET_GAMMA(DDC->features.gamma);
- scrp->gamma.green = SET_GAMMA(DDC->features.gamma);
- scrp->gamma.blue = SET_GAMMA(DDC->features.gamma);
- /* EDID structure version 2 gives optional seperate red, green & blue gamma values
- * in bytes 0x57-0x59 */
-#endif
- } else if (TEST_GAMMA(gamma)) {
- scrp->gamma.red = SET_GAMMA(gamma.red);
- scrp->gamma.green = SET_GAMMA(gamma.green);
- scrp->gamma.blue = SET_GAMMA(gamma.blue);
- } else {
- scrp->gamma.red = 1.0;
- scrp->gamma.green = 1.0;
- scrp->gamma.blue = 1.0;
- }
- xf86DrvMsg(scrp->scrnIndex, from,
- "Using gamma correction (%.1f, %.1f, %.1f)\n",
- scrp->gamma.red, scrp->gamma.green, scrp->gamma.blue);
-
- return TRUE;
-}
-
-#undef TEST_GAMMA
-#undef SET_GAMMA
-
-
-/*
- * Set the DPI from the command line option. XXX should allow it to be
- * calculated from the widthmm/heightmm values.
- */
-
-#undef MMPERINCH
-#define MMPERINCH 25.4
-
-void
-xf86SetDpi(ScrnInfoPtr pScrn, int x, int y)
-{
- MessageType from = X_DEFAULT;
- xf86MonPtr DDC = (xf86MonPtr)(pScrn->monitor->DDC);
- int ddcWidthmm, ddcHeightmm;
- int widthErr, heightErr;
-
- /* XXX Maybe there is no need for widthmm/heightmm in ScrnInfoRec */
- pScrn->widthmm = pScrn->monitor->widthmm;
- pScrn->heightmm = pScrn->monitor->heightmm;
-
- if (DDC && (DDC->features.hsize > 0 && DDC->features.vsize > 0) ) {
- /* DDC gives display size in mm for individual modes,
- * but cm for monitor
- */
- ddcWidthmm = DDC->features.hsize * 10; /* 10mm in 1cm */
- ddcHeightmm = DDC->features.vsize * 10; /* 10mm in 1cm */
- } else {
- ddcWidthmm = ddcHeightmm = 0;
- }
-
- if (monitorResolution > 0) {
- pScrn->xDpi = monitorResolution;
- pScrn->yDpi = monitorResolution;
- from = X_CMDLINE;
- } else if (pScrn->widthmm > 0 || pScrn->heightmm > 0) {
- from = X_CONFIG;
- if (pScrn->widthmm > 0) {
- pScrn->xDpi =
- (int)((double)pScrn->virtualX * MMPERINCH / pScrn->widthmm);
- }
- if (pScrn->heightmm > 0) {
- pScrn->yDpi =
- (int)((double)pScrn->virtualY * MMPERINCH / pScrn->heightmm);
- }
- if (pScrn->xDpi > 0 && pScrn->yDpi <= 0)
- pScrn->yDpi = pScrn->xDpi;
- if (pScrn->yDpi > 0 && pScrn->xDpi <= 0)
- pScrn->xDpi = pScrn->yDpi;
- xf86DrvMsg(pScrn->scrnIndex, from, "Display dimensions: (%d, %d) mm\n",
- pScrn->widthmm, pScrn->heightmm);
-
- /* Warn if config and probe disagree about display size */
- if ( ddcWidthmm && ddcHeightmm ) {
- if (pScrn->widthmm > 0) {
- widthErr = abs(ddcWidthmm - pScrn->widthmm);
- } else {
- widthErr = 0;
- }
- if (pScrn->heightmm > 0) {
- heightErr = abs(ddcHeightmm - pScrn->heightmm);
- } else {
- heightErr = 0;
- }
- if (widthErr>10 || heightErr>10) {
- /* Should include config file name for monitor here */
- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
- "Probed monitor is %dx%d mm, using Displaysize %dx%d mm\n",
- ddcWidthmm,ddcHeightmm, pScrn->widthmm,pScrn->heightmm);
- }
- }
- } else if ( ddcWidthmm && ddcHeightmm ) {
- from = X_PROBED;
- xf86DrvMsg(pScrn->scrnIndex, from, "Display dimensions: (%d, %d) mm\n",
- ddcWidthmm, ddcHeightmm );
- pScrn->widthmm = ddcWidthmm;
- pScrn->heightmm = ddcHeightmm;
- if (pScrn->widthmm > 0) {
- pScrn->xDpi =
- (int)((double)pScrn->virtualX * MMPERINCH / pScrn->widthmm);
- }
- if (pScrn->heightmm > 0) {
- pScrn->yDpi =
- (int)((double)pScrn->virtualY * MMPERINCH / pScrn->heightmm);
- }
- if (pScrn->xDpi > 0 && pScrn->yDpi <= 0)
- pScrn->yDpi = pScrn->xDpi;
- if (pScrn->yDpi > 0 && pScrn->xDpi <= 0)
- pScrn->xDpi = pScrn->yDpi;
- } else {
- if (x > 0)
- pScrn->xDpi = x;
- else
- pScrn->xDpi = DEFAULT_DPI;
- if (y > 0)
- pScrn->yDpi = y;
- else
- pScrn->yDpi = DEFAULT_DPI;
- }
- xf86DrvMsg(pScrn->scrnIndex, from, "DPI set to (%d, %d)\n",
- pScrn->xDpi, pScrn->yDpi);
-}
-
-#undef MMPERINCH
-
-
-void
-xf86SetBlackWhitePixels(ScreenPtr pScreen)
-{
- if (xf86FlipPixels) {
- pScreen->whitePixel = 0;
- pScreen->blackPixel = 1;
- } else {
- pScreen->whitePixel = 1;
- pScreen->blackPixel = 0;
- }
-}
-
-/*
- * xf86SetRootClip --
- * Enable or disable rendering to the screen by
- * setting the root clip list and revalidating
- * all of the windows
- */
-
-static void
-xf86SetRootClip (ScreenPtr pScreen, Bool enable)
-{
- WindowPtr pWin = WindowTable[pScreen->myNum];
- WindowPtr pChild;
- Bool WasViewable = (Bool)(pWin->viewable);
- Bool anyMarked = FALSE;
- RegionPtr pOldClip = NULL, bsExposed;
-#ifdef DO_SAVE_UNDERS
- Bool dosave = FALSE;
-#endif
- WindowPtr pLayerWin;
- BoxRec box;
-
- if (WasViewable)
- {
- for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib)
- {
- (void) (*pScreen->MarkOverlappedWindows)(pChild,
- pChild,
- &pLayerWin);
- }
- (*pScreen->MarkWindow) (pWin);
- anyMarked = TRUE;
- if (pWin->valdata)
- {
- if (HasBorder (pWin))
- {
- RegionPtr borderVisible;
-
- borderVisible = REGION_CREATE(pScreen, NullBox, 1);
- REGION_SUBTRACT(pScreen, borderVisible,
- &pWin->borderClip, &pWin->winSize);
- pWin->valdata->before.borderVisible = borderVisible;
- }
- pWin->valdata->before.resized = TRUE;
- }
- }
-
- /*
- * Use REGION_BREAK to avoid optimizations in ValidateTree
- * that assume the root borderClip can't change well, normally
- * it doesn't...)
- */
- if (enable)
- {
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = pScreen->width;
- box.y2 = pScreen->height;
- REGION_INIT (pScreen, &pWin->winSize, &box, 1);
- REGION_INIT (pScreen, &pWin->borderSize, &box, 1);
- if (WasViewable)
- REGION_RESET(pScreen, &pWin->borderClip, &box);
- pWin->drawable.width = pScreen->width;
- pWin->drawable.height = pScreen->height;
- REGION_BREAK (pWin->drawable.pScreen, &pWin->clipList);
- }
- else
- {
- REGION_EMPTY(pScreen, &pWin->borderClip);
- REGION_BREAK (pWin->drawable.pScreen, &pWin->clipList);
- }
-
- ResizeChildrenWinSize (pWin, 0, 0, 0, 0);
-
- if (WasViewable)
- {
- if (pWin->backStorage)
- {
- pOldClip = REGION_CREATE(pScreen, NullBox, 1);
- REGION_COPY(pScreen, pOldClip, &pWin->clipList);
- }
-
- if (pWin->firstChild)
- {
- anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin->firstChild,
- pWin->firstChild,
- (WindowPtr *)NULL);
- }
- else
- {
- (*pScreen->MarkWindow) (pWin);
- anyMarked = TRUE;
- }
-
-#ifdef DO_SAVE_UNDERS
- if (DO_SAVE_UNDERS(pWin))
- {
- dosave = (*pScreen->ChangeSaveUnder)(pLayerWin, pLayerWin);
- }
-#endif /* DO_SAVE_UNDERS */
-
- if (anyMarked)
- (*pScreen->ValidateTree)(pWin, NullWindow, VTOther);
- }
-
- if (pWin->backStorage &&
- ((pWin->backingStore == Always) || WasViewable))
- {
- if (!WasViewable)
- pOldClip = &pWin->clipList; /* a convenient empty region */
- bsExposed = (*pScreen->TranslateBackingStore)
- (pWin, 0, 0, pOldClip,
- pWin->drawable.x, pWin->drawable.y);
- if (WasViewable)
- REGION_DESTROY(pScreen, pOldClip);
- if (bsExposed)
- {
- RegionPtr valExposed = NullRegion;
-
- if (pWin->valdata)
- valExposed = &pWin->valdata->after.exposed;
- (*pScreen->WindowExposures) (pWin, valExposed, bsExposed);
- if (valExposed)
- REGION_EMPTY(pScreen, valExposed);
- REGION_DESTROY(pScreen, bsExposed);
- }
- }
- if (WasViewable)
- {
- if (anyMarked)
- (*pScreen->HandleExposures)(pWin);
-#ifdef DO_SAVE_UNDERS
- if (dosave)
- (*pScreen->PostChangeSaveUnder)(pLayerWin, pLayerWin);
-#endif /* DO_SAVE_UNDERS */
- if (anyMarked && pScreen->PostValidateTree)
- (*pScreen->PostValidateTree)(pWin, NullWindow, VTOther);
- }
- if (pWin->realized)
- WindowsRestructured ();
- FlushAllOutput ();
-}
-
-/*
- * Function to enable/disable access to the frame buffer
- *
- * This is used when VT switching and when entering/leaving DGA direct mode.
- *
- * This has been rewritten again to eliminate the saved pixmap. The
- * devPrivate field in the screen pixmap is set to NULL to catch code
- * accidentally referencing the frame buffer while the X server is not
- * supposed to touch it.
- *
- * Here, we exchange the pixmap private data, rather than the pixmaps
- * themselves to avoid having to find and change any references to the screen
- * pixmap such as GC's, window privates etc. This also means that this code
- * does not need to know exactly how the pixmap pixels are accessed. Further,
- * this exchange is >not< done through the screen's ModifyPixmapHeader()
- * vector. This means the called frame buffer code layers can determine
- * whether they are switched in or out by keeping track of the root pixmap's
- * private data, and therefore don't need to access pScrnInfo->vtSema.
- */
-void
-xf86EnableDisableFBAccess(int scrnIndex, Bool enable)
-{
- ScrnInfoPtr pScrnInfo = xf86Screens[scrnIndex];
- ScreenPtr pScreen = pScrnInfo->pScreen;
- PixmapPtr pspix;
-
- pspix = (*pScreen->GetScreenPixmap) (pScreen);
- if (enable)
- {
- /*
- * Restore the screen pixmap devPrivate field
- */
- pspix->devPrivate = pScrnInfo->pixmapPrivate;
- /*
- * Restore all of the clip lists on the screen
- */
- if (!xf86Resetting)
- xf86SetRootClip (pScreen, TRUE);
-
- }
- else
- {
- /*
- * Empty all of the clip lists on the screen
- */
- xf86SetRootClip (pScreen, FALSE);
- /*
- * save the screen pixmap devPrivate field and
- * replace it with NULL so accidental references
- * to the frame buffer are caught
- */
- pScrnInfo->pixmapPrivate = pspix->devPrivate;
- pspix->devPrivate.ptr = NULL;
- }
-}
-
-/* Print driver messages in the standard format */
-
-#undef PREFIX_SIZE
-#define PREFIX_SIZE 14
-
-void
-xf86VDrvMsgVerb(int scrnIndex, MessageType type, int verb, const char *format,
- va_list args)
-{
- char *tmpFormat;
-
- /* Prefix the scrnIndex name to the format string. */
- if (scrnIndex >= 0 && scrnIndex < xf86NumScreens &&
- xf86Screens[scrnIndex]->name) {
- tmpFormat = xalloc(strlen(format) +
- strlen(xf86Screens[scrnIndex]->name) +
- PREFIX_SIZE + 1);
- if (!tmpFormat)
- return;
-
- snprintf(tmpFormat, PREFIX_SIZE + 1, "%s(%d): ",
- xf86Screens[scrnIndex]->name, scrnIndex);
-
- strcat(tmpFormat, format);
- LogVMessageVerb(type, verb, tmpFormat, args);
- xfree(tmpFormat);
- } else
- LogVMessageVerb(type, verb, format, args);
-}
-#undef PREFIX_SIZE
-
-/* Print driver messages, with verbose level specified directly */
-void
-xf86DrvMsgVerb(int scrnIndex, MessageType type, int verb, const char *format,
- ...)
-{
- va_list ap;
-
- va_start(ap, format);
- xf86VDrvMsgVerb(scrnIndex, type, verb, format, ap);
- va_end(ap);
-}
-
-/* Print driver messages, with verbose level of 1 (default) */
-void
-xf86DrvMsg(int scrnIndex, MessageType type, const char *format, ...)
-{
- va_list ap;
-
- va_start(ap, format);
- xf86VDrvMsgVerb(scrnIndex, type, 1, format, ap);
- va_end(ap);
-}
-
-/* Print non-driver messages with verbose level specified directly */
-void
-xf86MsgVerb(MessageType type, int verb, const char *format, ...)
-{
- va_list ap;
-
- va_start(ap, format);
- xf86VDrvMsgVerb(-1, type, verb, format, ap);
- va_end(ap);
-}
-
-/* Print non-driver messages with verbose level of 1 (default) */
-void
-xf86Msg(MessageType type, const char *format, ...)
-{
- va_list ap;
-
- va_start(ap, format);
- xf86VDrvMsgVerb(-1, type, 1, format, ap);
- va_end(ap);
-}
-
-/* Just like ErrorF, but with the verbose level checked */
-void
-xf86ErrorFVerb(int verb, const char *format, ...)
-{
- va_list ap;
-
- va_start(ap, format);
- if (xf86Verbose >= verb || xf86LogVerbose >= verb)
- LogVWrite(verb, format, ap);
- va_end(ap);
-}
-
-/* Like xf86ErrorFVerb, but with an implied verbose level of 1 */
-void
-xf86ErrorF(const char *format, ...)
-{
- va_list ap;
-
- va_start(ap, format);
- if (xf86Verbose >= 1 || xf86LogVerbose >= 1)
- LogVWrite(1, format, ap);
- va_end(ap);
-}
-
-
-void
-xf86LogInit()
-{
- char *lf;
-
-#define LOGSUFFIX ".log"
-#define LOGOLDSUFFIX ".old"
-
- /* Get the log file name */
- if (xf86LogFileFrom == X_DEFAULT) {
- /* Append the display number and ".log" */
- lf = malloc(strlen(xf86LogFile) + strlen("%s") +
- strlen(LOGSUFFIX) + 1);
- if (!lf)
- FatalError("Cannot allocate space for the log file name\n");
- sprintf(lf, "%s%%s" LOGSUFFIX, xf86LogFile);
- xf86LogFile = lf;
- }
-
- xf86LogFile = LogInit(xf86LogFile, LOGOLDSUFFIX);
- xf86LogFileWasOpened = TRUE;
-
- xf86SetVerbosity(xf86Verbose);
- xf86SetLogVerbosity(xf86LogVerbose);
-
-#undef LOGSUFFIX
-#undef LOGOLDSUFFIX
-}
-
-void
-xf86CloseLog()
-{
- LogClose();
-}
-
-
-/*
- * Drivers can use these for using their own SymTabRecs.
- */
-
-const char *
-xf86TokenToString(SymTabPtr table, int token)
-{
- int i;
-
- for (i = 0; table[i].token >= 0 && table[i].token != token; i++)
- ;
-
- if (table[i].token < 0)
- return NULL;
- else
- return(table[i].name);
-}
-
-int
-xf86StringToToken(SymTabPtr table, const char *string)
-{
- int i;
-
- if (string == NULL)
- return -1;
-
- for (i = 0; table[i].token >= 0 && xf86NameCmp(string, table[i].name); i++)
- ;
-
- return(table[i].token);
-}
-
-/*
- * helper to display the clocks found on a card
- */
-void
-xf86ShowClocks(ScrnInfoPtr scrp, MessageType from)
-{
- int j;
-
- xf86DrvMsg(scrp->scrnIndex, from, "Pixel clocks available:");
- for (j=0; j < scrp->numClocks; j++) {
- if ((j % 4) == 0) {
- xf86ErrorF("\n");
- xf86DrvMsg(scrp->scrnIndex, from, "pixel clocks:");
- }
- xf86ErrorF(" %7.3f", (double)scrp->clock[j] / 1000.0);
- }
- xf86ErrorF("\n");
-}
-
-
-/*
- * This prints out the driver identify message, including the names of
- * the supported chipsets.
- *
- * XXX This makes assumptions about the line width, etc. Maybe we could
- * use a more general "pretty print" function for messages.
- */
-void
-xf86PrintChipsets(const char *drvname, const char *drvmsg, SymTabPtr chips)
-{
- int len, i;
-
- len = 6 + strlen(drvname) + 2 + strlen(drvmsg) + 2;
- xf86Msg(X_INFO, "%s: %s:", drvname, drvmsg);
- for (i = 0; chips[i].name != NULL; i++) {
- if (i != 0) {
- xf86ErrorF(",");
- len++;
- }
- if (len + 2 + strlen(chips[i].name) < 78) {
- xf86ErrorF(" ");
- len++;
- } else {
- xf86ErrorF("\n\t");
- len = 8;
- }
- xf86ErrorF("%s", chips[i].name);
- len += strlen(chips[i].name);
- }
- xf86ErrorF("\n");
-}
-
-
-#define MAXDRIVERS 64 /* A >hack<, to be sure ... */
-
-
-int
-xf86MatchDevice(const char *drivername, GDevPtr **sectlist)
-{
- GDevPtr gdp, *pgdp = NULL;
- confScreenPtr screensecptr;
- int i,j;
-
- if (sectlist)
- *sectlist = NULL;
-
- if (xf86DoProbe) return 1;
-
- if (xf86DoConfigure && xf86DoConfigurePass1) return 1;
-
- /*
- * This is a very important function that matches the device sections
- * as they show up in the config file with the drivers that the server
- * loads at run time.
- *
- * ChipProbe can call
- * int xf86MatchDevice(char * drivername, GDevPtr ** sectlist)
- * with its driver name. The function allocates an array of GDevPtr and
- * returns this via sectlist and returns the number of elements in
- * this list as return value. 0 means none found, -1 means fatal error.
- *
- * It can figure out which of the Device sections to use for which card
- * (using things like the Card statement, etc). For single headed servers
- * there will of course be just one such Device section.
- */
- i = 0;
-
- /*
- * first we need to loop over all the Screens sections to get to all
- * 'active' device sections
- */
- for (j=0; xf86ConfigLayout.screens[j].screen != NULL; j++) {
- screensecptr = xf86ConfigLayout.screens[j].screen;
- if ((screensecptr->device->driver != NULL)
- && (xf86NameCmp( screensecptr->device->driver,drivername) == 0)
- && (! screensecptr->device->claimed)) {
- /*
- * we have a matching driver that wasn't claimed, yet
- */
- pgdp = xnfrealloc(pgdp, (i + 2) * sizeof(GDevPtr));
- pgdp[i++] = screensecptr->device;
- }
- }
-
- /* Then handle the inactive devices */
- j = 0;
- while (xf86ConfigLayout.inactives[j].identifier) {
- gdp = &xf86ConfigLayout.inactives[j];
- if (gdp->driver && !gdp->claimed &&
- !xf86NameCmp(gdp->driver,drivername)) {
- /* we have a matching driver that wasn't claimed yet */
- pgdp = xnfrealloc(pgdp, (i + 2) * sizeof(GDevPtr));
- pgdp[i++] = gdp;
- }
- j++;
- }
-
- /*
- * make the array NULL terminated and return its address
- */
- if (i)
- pgdp[i] = NULL;
-
- if (sectlist)
- *sectlist = pgdp;
- else
- xfree(pgdp);
- return i;
-}
-
-struct Inst {
- pciVideoPtr pci;
- GDevPtr dev;
- Bool foundHW; /* PCIid in list of supported chipsets */
- Bool claimed; /* BusID matches with a device section */
- int chip;
- int screen;
-};
-
-int
-xf86MatchPciInstances(const char *driverName, int vendorID,
- SymTabPtr chipsets, PciChipsets *PCIchipsets,
- GDevPtr *devList, int numDevs, DriverPtr drvp,
- int **foundEntities)
-{
- int i,j;
- MessageType from;
- pciVideoPtr pPci, *ppPci;
- struct Inst {
- pciVideoPtr pci;
- GDevPtr dev;
- Bool foundHW; /* PCIid in list of supported chipsets */
- Bool claimed; /* BusID matches with a device section */
- int chip;
- int screen;
- } *instances = NULL;
- int numClaimedInstances = 0;
- int allocatedInstances = 0;
- int numFound = 0;
- SymTabRec *c;
- PciChipsets *id;
- GDevPtr devBus = NULL;
- GDevPtr dev = NULL;
- int *retEntities = NULL;
-
- *foundEntities = NULL;
-
- if (vendorID == 0) {
- for (ppPci = xf86PciVideoInfo; *ppPci != NULL; ppPci++) {
- Bool foundVendor = FALSE;
- for (id = PCIchipsets; id->PCIid != -1; id++) {
- if ( (((id->PCIid & 0xFFFF0000) >> 16) == (*ppPci)->vendor)) {
- if (!foundVendor) {
- ++allocatedInstances;
- instances = xnfrealloc(instances,
- allocatedInstances * sizeof(struct Inst));
- instances[allocatedInstances - 1].pci = *ppPci;
- instances[allocatedInstances - 1].dev = NULL;
- instances[allocatedInstances - 1].claimed = FALSE;
- instances[allocatedInstances - 1].foundHW = FALSE;
- instances[allocatedInstances - 1].screen = 0;
- foundVendor = TRUE;
- }
- if ((id->PCIid & 0x0000FFFF) == (*ppPci)->chipType) {
- instances[allocatedInstances - 1].foundHW = TRUE;
- instances[allocatedInstances - 1].chip = id->numChipset;
- numFound++;
- }
- }
- }
- }
- } else if (vendorID == PCI_VENDOR_GENERIC) {
- for (ppPci = xf86PciVideoInfo; *ppPci != NULL; ppPci++) {
- for (id = PCIchipsets; id->PCIid != -1; id++) {
- if (id->PCIid == xf86CheckPciGAType(*ppPci)) {
- ++allocatedInstances;
- instances = xnfrealloc(instances,
- allocatedInstances * sizeof(struct Inst));
- instances[allocatedInstances - 1].pci = *ppPci;
- instances[allocatedInstances - 1].dev = NULL;
- instances[allocatedInstances - 1].claimed = FALSE;
- instances[allocatedInstances - 1].foundHW = TRUE;
- instances[allocatedInstances - 1].chip = id->numChipset;
- instances[allocatedInstances - 1].screen = 0;
- numFound++;
- }
- }
- }
- } else {
- /* Find PCI devices that match the given vendor ID */
- for (ppPci = xf86PciVideoInfo; (ppPci != NULL)
- && (*ppPci != NULL); ppPci++) {
- if ((*ppPci)->vendor == vendorID) {
- ++allocatedInstances;
- instances = xnfrealloc(instances,
- allocatedInstances * sizeof(struct Inst));
- instances[allocatedInstances - 1].pci = *ppPci;
- instances[allocatedInstances - 1].dev = NULL;
- instances[allocatedInstances - 1].claimed = FALSE;
- instances[allocatedInstances - 1].foundHW = FALSE;
- instances[allocatedInstances - 1].screen = 0;
-
- /* Check if the chip type is listed in the chipsets table */
- for (id = PCIchipsets; id->PCIid != -1; id++) {
- if (id->PCIid == (*ppPci)->chipType) {
- instances[allocatedInstances - 1].chip
- = id->numChipset;
- instances[allocatedInstances - 1].foundHW = TRUE;
- numFound++;
- break;
- }
- }
- }
- }
- }
-
- /*
- * This may be debatable, but if no PCI devices with a matching vendor
- * type is found, return zero now. It is probably not desirable to
- * allow the config file to override this.
- */
- if (allocatedInstances <= 0) {
- xfree(instances);
- return 0;
- }
-
- if (xf86DoProbe) {
- xfree(instances);
- return numFound;
- }
-
- if (xf86DoConfigure && xf86DoConfigurePass1) {
- GDevPtr pGDev;
- int actualcards = 0;
- for (i = 0; i < allocatedInstances; i++) {
- pPci = instances[i].pci;
- if (instances[i].foundHW) {
- if (!xf86CheckPciSlot(pPci->bus, pPci->device, pPci->func))
- continue;
- actualcards++;
- pGDev = xf86AddDeviceToConfigure(drvp->driverName,
- instances[i].pci, -1);
- if (pGDev) {
- /*
- * XF86Match???Instances() treat chipID and chipRev as
- * overrides, so clobber them here.
- */
- pGDev->chipID = pGDev->chipRev = -1;
- }
- }
- }
- xfree(instances);
- return actualcards;
- }
-
-#ifdef DEBUG
- ErrorF("%s instances found: %d\n", driverName, allocatedInstances);
-#endif
-
- /*
- * Check for devices that need duplicated instances. This is required
- * when there is more than one screen per entity.
- *
- * XXX This currently doesn't work for cases where the BusID isn't
- * specified explicitly in the config file.
- */
-
- for (j = 0; j < numDevs; j++) {
- if (devList[j]->screen > 0 && devList[j]->busID
- && *devList[j]->busID) {
- for (i = 0; i < allocatedInstances; i++) {
- pPci = instances[i].pci;
- if (xf86ComparePciBusString(devList[j]->busID, pPci->bus,
- pPci->device,
- pPci->func)) {
- allocatedInstances++;
- instances = xnfrealloc(instances,
- allocatedInstances *
- sizeof(struct Inst));
- instances[allocatedInstances - 1] = instances[i];
- instances[allocatedInstances - 1].screen =
- devList[j]->screen;
- numFound++;
- break;
- }
- }
- }
- }
-
- for (i = 0; i < allocatedInstances; i++) {
- pPci = instances[i].pci;
- devBus = NULL;
- dev = NULL;
- for (j = 0; j < numDevs; j++) {
- if (devList[j]->busID && *devList[j]->busID) {
- if (xf86ComparePciBusString(devList[j]->busID, pPci->bus,
- pPci->device,
- pPci->func) &&
- devList[j]->screen == instances[i].screen) {
-
- if (devBus)
- xf86MsgVerb(X_WARNING,0,
- "%s: More than one matching Device section for "
- "instances\n\t(BusID: %s) found: %s\n",
- driverName, devList[j]->busID,
- devList[j]->identifier);
- else
- devBus = devList[j];
- }
- } else {
- /*
- * if device section without BusID is found
- * only assign to it to the primary device.
- */
- if (xf86IsPrimaryPci(pPci)) {
- xf86Msg(X_PROBED, "Assigning device section with no busID"
- " to primary device\n");
- if (dev || devBus)
- xf86MsgVerb(X_WARNING, 0,
- "%s: More than one matching Device section "
- "found: %s\n", driverName, devList[j]->identifier);
- else
- dev = devList[j];
- }
- }
- }
- if (devBus) dev = devBus; /* busID preferred */
- if (!dev) {
- if (xf86CheckPciSlot(pPci->bus, pPci->device, pPci->func)) {
- xf86MsgVerb(X_WARNING, 0, "%s: No matching Device section "
- "for instance (BusID PCI:%i:%i:%i) found\n",
- driverName, pPci->bus, pPci->device, pPci->func);
- }
- } else {
- numClaimedInstances++;
- instances[i].claimed = TRUE;
- instances[i].dev = dev;
- }
- }
-#ifdef DEBUG
- ErrorF("%s instances found: %d\n", driverName, numClaimedInstances);
-#endif
- /*
- * Now check that a chipset or chipID override in the device section
- * is valid. Chipset has precedence over chipID.
- * If chipset is not valid ignore BusSlot completely.
- */
- for (i = 0; i < allocatedInstances && numClaimedInstances > 0; i++) {
- if (!instances[i].claimed) {
- continue;
- }
- from = X_PROBED;
- if (instances[i].dev->chipset) {
- for (c = chipsets; c->token >= 0; c++) {
- if (xf86NameCmp(c->name, instances[i].dev->chipset) == 0)
- break;
- }
- if (c->token == -1) {
- instances[i].claimed = FALSE;
- numClaimedInstances--;
- xf86MsgVerb(X_WARNING, 0, "%s: Chipset \"%s\" in Device "
- "section \"%s\" isn't valid for this driver\n",
- driverName, instances[i].dev->chipset,
- instances[i].dev->identifier);
- } else {
- instances[i].chip = c->token;
-
- for (id = PCIchipsets; id->numChipset >= 0; id++) {
- if (id->numChipset == instances[i].chip)
- break;
- }
- if(id->numChipset >=0){
- xf86Msg(X_CONFIG,"Chipset override: %s\n",
- instances[i].dev->chipset);
- from = X_CONFIG;
- } else {
- instances[i].claimed = FALSE;
- numClaimedInstances--;
- xf86MsgVerb(X_WARNING, 0, "%s: Chipset \"%s\" in Device "
- "section \"%s\" isn't a valid PCI chipset\n",
- driverName, instances[i].dev->chipset,
- instances[i].dev->identifier);
- }
- }
- } else if (instances[i].dev->chipID > 0) {
- for (id = PCIchipsets; id->numChipset >= 0; id++) {
- if (id->PCIid == instances[i].dev->chipID)
- break;
- }
- if (id->numChipset == -1) {
- instances[i].claimed = FALSE;
- numClaimedInstances--;
- xf86MsgVerb(X_WARNING, 0, "%s: ChipID 0x%04X in Device "
- "section \"%s\" isn't valid for this driver\n",
- driverName, instances[i].dev->chipID,
- instances[i].dev->identifier);
- } else {
- instances[i].chip = id->numChipset;
-
- xf86Msg( X_CONFIG,"ChipID override: 0x%04X\n",
- instances[i].dev->chipID);
- from = X_CONFIG;
- }
- } else if (!instances[i].foundHW) {
- /*
- * This means that there was no override and the PCI chipType
- * doesn't match one that is supported
- */
- instances[i].claimed = FALSE;
- numClaimedInstances--;
- }
- if (instances[i].claimed == TRUE){
- for (c = chipsets; c->token >= 0; c++) {
- if (c->token == instances[i].chip)
- break;
- }
- xf86Msg(from,"Chipset %s found\n",
- c->name);
- }
- }
-
- /*
- * Of the claimed instances, check that another driver hasn't already
- * claimed its slot.
- */
- numFound = 0;
- for (i = 0; i < allocatedInstances && numClaimedInstances > 0; i++) {
-
- if (!instances[i].claimed)
- continue;
- pPci = instances[i].pci;
-
-
- /*
- * Allow the same entity to be used more than once for devices with
- * multiple screens per entity. This assumes implicitly that there
- * will be a screen == 0 instance.
- *
- * XXX Need to make sure that two different drivers don't claim
- * the same screen > 0 instance.
- */
- if (instances[i].screen == 0 &&
- !xf86CheckPciSlot(pPci->bus, pPci->device, pPci->func))
- continue;
-
-#ifdef DEBUG
- ErrorF("%s: card at %d:%d:%d is claimed by a Device section\n",
- driverName, pPci->bus, pPci->device, pPci->func);
-#endif
-
- /* Allocate an entry in the lists to be returned */
- numFound++;
- retEntities = xnfrealloc(retEntities, numFound * sizeof(int));
- retEntities[numFound - 1]
- = xf86ClaimPciSlot(pPci->bus, pPci->device,
- pPci->func,drvp, instances[i].chip,
- instances[i].dev,instances[i].dev->active ?
- TRUE : FALSE);
- if (retEntities[numFound - 1] == -1 && instances[i].screen > 0) {
- for (j = 0; j < xf86NumEntities; j++) {
- EntityPtr pEnt = xf86Entities[j];
- if (pEnt->busType != BUS_PCI)
- continue;
- if (pEnt->pciBusId.bus == pPci->bus &&
- pEnt->pciBusId.device == pPci->device &&
- pEnt->pciBusId.func == pPci->func) {
- retEntities[numFound - 1] = j;
- xf86AddDevToEntity(j, instances[i].dev);
- break;
- }
- }
- }
- }
- xfree(instances);
- if (numFound > 0) {
- *foundEntities = retEntities;
- }
-
- return numFound;
-}
-
-int
-xf86MatchIsaInstances(const char *driverName, SymTabPtr chipsets,
- IsaChipsets *ISAchipsets, DriverPtr drvp,
- FindIsaDevProc FindIsaDevice, GDevPtr *devList,
- int numDevs, int **foundEntities)
-{
- SymTabRec *c;
- IsaChipsets *Chips;
- int i;
- int numFound = 0;
- int foundChip = -1;
- int *retEntities = NULL;
-
- *foundEntities = NULL;
-
-#if defined(__sparc__) || defined(__powerpc__)
- FindIsaDevice = NULL; /* Temporary */
-#endif
-
- if (xf86DoProbe || (xf86DoConfigure && xf86DoConfigurePass1)) {
- if (FindIsaDevice &&
- ((foundChip = (*FindIsaDevice)(NULL)) != -1)) {
- xf86AddDeviceToConfigure(drvp->driverName, NULL, foundChip);
- return 1;
- }
- return 0;
- }
-
- for (i = 0; i < numDevs; i++) {
- MessageType from = X_CONFIG;
- GDevPtr dev = NULL;
- GDevPtr devBus = NULL;
-
- if (devList[i]->busID && *devList[i]->busID) {
- if (xf86ParseIsaBusString(devList[i]->busID)) {
- if (devBus) xf86MsgVerb(X_WARNING,0,
- "%s: More than one matching Device "
- "section for ISA-Bus found: %s\n",
- driverName,devList[i]->identifier);
- else devBus = devList[i];
- }
- } else {
- if (xf86IsPrimaryIsa()) {
- if (dev) xf86MsgVerb(X_WARNING,0,
- "%s: More than one matching "
- "Device section found: %s\n",
- driverName,devList[i]->identifier);
- else dev = devList[i];
- }
- }
- if (devBus) dev = devBus;
- if (dev) {
- if (dev->chipset) {
- for (c = chipsets; c->token >= 0; c++) {
- if (xf86NameCmp(c->name, dev->chipset) == 0)
- break;
- }
- if (c->token == -1) {
- xf86MsgVerb(X_WARNING, 0, "%s: Chipset \"%s\" in Device "
- "section \"%s\" isn't valid for this driver\n",
- driverName, dev->chipset,
- dev->identifier);
- } else
- foundChip = c->token;
- } else {
- if (FindIsaDevice) foundChip = (*FindIsaDevice)(dev);
- /* Probe it */
- from = X_PROBED;
- }
- }
-
- /* Check if the chip type is listed in the chipset table - for sanity*/
-
- if (foundChip >= 0){
- for (Chips = ISAchipsets; Chips->numChipset >= 0; Chips++) {
- if (Chips->numChipset == foundChip)
- break;
- }
- if (Chips->numChipset == -1){
- foundChip = -1;
- xf86MsgVerb(X_WARNING,0,
- "%s: Driver detected unknown ISA-Bus Chipset\n",
- driverName);
- }
- }
- if (foundChip != -1) {
- numFound++;
- retEntities = xnfrealloc(retEntities,numFound * sizeof(int));
- retEntities[numFound - 1] =
- xf86ClaimIsaSlot(drvp,foundChip,dev, dev->active ? TRUE : FALSE);
- for (c = chipsets; c->token >= 0; c++) {
- if (c->token == foundChip)
- break;
- }
- xf86Msg(from, "Chipset %s found\n", c->name);
- }
- }
- *foundEntities = retEntities;
-
- return numFound;
-}
-
-/*
- * xf86GetClocks -- get the dot-clocks via a BIG BAD hack ...
- */
-void
-xf86GetClocks(ScrnInfoPtr pScrn, int num, Bool (*ClockFunc)(ScrnInfoPtr, int),
- void (*ProtectRegs)(ScrnInfoPtr, Bool),
- void (*BlankScreen)(ScrnInfoPtr, Bool), IOADDRESS vertsyncreg,
- int maskval, int knownclkindex, int knownclkvalue)
-{
- register int status = vertsyncreg;
- unsigned long i, cnt, rcnt, sync;
-
- /* First save registers that get written on */
- (*ClockFunc)(pScrn, CLK_REG_SAVE);
-
- xf86SetPriority(TRUE);
-
- if (num > MAXCLOCKS)
- num = MAXCLOCKS;
-
- for (i = 0; i < num; i++)
- {
- if (ProtectRegs)
- (*ProtectRegs)(pScrn, TRUE);
- if (!(*ClockFunc)(pScrn, i))
- {
- pScrn->clock[i] = -1;
- continue;
- }
- if (ProtectRegs)
- (*ProtectRegs)(pScrn, FALSE);
- if (BlankScreen)
- (*BlankScreen)(pScrn, FALSE);
-
- usleep(50000); /* let VCO stabilise */
-
- cnt = 0;
- sync = 200000;
-
- /* XXX How critical is this? */
- if (!xf86DisableInterrupts())
- {
- (*ClockFunc)(pScrn, CLK_REG_RESTORE);
- ErrorF("Failed to disable interrupts during clock probe. If\n");
- ErrorF("your OS does not support disabling interrupts, then you\n");
- FatalError("must specify a Clocks line in the XF86Config file.\n");
- }
- while ((inb(status) & maskval) == 0x00)
- if (sync-- == 0) goto finish;
- /* Something appears to be happening, so reset sync count */
- sync = 200000;
- while ((inb(status) & maskval) == maskval)
- if (sync-- == 0) goto finish;
- /* Something appears to be happening, so reset sync count */
- sync = 200000;
- while ((inb(status) & maskval) == 0x00)
- if (sync-- == 0) goto finish;
-
- for (rcnt = 0; rcnt < 5; rcnt++)
- {
- while (!(inb(status) & maskval))
- cnt++;
- while ((inb(status) & maskval))
- cnt++;
- }
-
-finish:
- xf86EnableInterrupts();
-
- pScrn->clock[i] = cnt ? cnt : -1;
- if (BlankScreen)
- (*BlankScreen)(pScrn, TRUE);
- }
-
- xf86SetPriority(FALSE);
-
- for (i = 0; i < num; i++)
- {
- if (i != knownclkindex)
- {
- if (pScrn->clock[i] == -1)
- {
- pScrn->clock[i] = 0;
- }
- else
- {
- pScrn->clock[i] = (int)(0.5 +
- (((float)knownclkvalue) * pScrn->clock[knownclkindex]) /
- (pScrn->clock[i]));
- /* Round to nearest 10KHz */
- pScrn->clock[i] += 5;
- pScrn->clock[i] /= 10;
- pScrn->clock[i] *= 10;
- }
- }
- }
-
- pScrn->clock[knownclkindex] = knownclkvalue;
- pScrn->numClocks = num;
-
- /* Restore registers that were written on */
- (*ClockFunc)(pScrn, CLK_REG_RESTORE);
-}
-
-void
-xf86SetPriority(Bool up)
-{
- static int saved_nice;
-
- if (up) {
-#ifdef HAS_SETPRIORITY
- saved_nice = getpriority(PRIO_PROCESS, 0);
- setpriority(PRIO_PROCESS, 0, -20);
-#endif
-#if defined(SYSV) || defined(SVR4) || defined(linux)
- saved_nice = nice(0);
- nice(-20 - saved_nice);
-#endif
- } else {
-#ifdef HAS_SETPRIORITY
- setpriority(PRIO_PROCESS, 0, saved_nice);
-#endif
-#if defined(SYSV) || defined(SVR4) || defined(linux)
- nice(20 + saved_nice);
-#endif
- }
-}
-
-const char *
-xf86GetVisualName(int visual)
-{
- if (visual < 0 || visual > DirectColor)
- return NULL;
-
- return xf86VisualNames[visual];
-}
-
-
-int
-xf86GetVerbosity()
-{
- return max(xf86Verbose, xf86LogVerbose);
-}
-
-Pix24Flags
-xf86GetPix24()
-{
- return xf86Info.pixmap24;
-}
-
-
-int
-xf86GetDepth()
-{
- return xf86Depth;
-}
-
-
-rgb
-xf86GetWeight()
-{
- return xf86Weight;
-}
-
-
-Gamma
-xf86GetGamma()
-{
- return xf86Gamma;
-}
-
-
-Bool
-xf86GetFlipPixels()
-{
- return xf86FlipPixels;
-}
-
-
-const char *
-xf86GetServerName()
-{
- return xf86ServerName;
-}
-
-
-Bool
-xf86ServerIsExiting()
-{
- return (dispatchException & DE_TERMINATE) == DE_TERMINATE;
-}
-
-
-Bool
-xf86ServerIsResetting()
-{
- return xf86Resetting;
-}
-
-
-Bool
-xf86ServerIsInitialising()
-{
- return xf86Initialising;
-}
-
-
-Bool
-xf86ServerIsOnlyDetecting(void)
-{
- return xf86DoProbe || xf86DoConfigure;
-}
-
-
-Bool
-xf86ServerIsOnlyProbing(void)
-{
- return xf86ProbeOnly;
-}
-
-
-Bool
-xf86CaughtSignal()
-{
- return xf86Info.caughtSignal;
-}
-
-
-Bool
-xf86GetVidModeAllowNonLocal()
-{
- return xf86Info.vidModeAllowNonLocal;
-}
-
-
-Bool
-xf86GetVidModeEnabled()
-{
- return xf86Info.vidModeEnabled;
-}
-
-Bool
-xf86GetModInDevAllowNonLocal()
-{
- return xf86Info.miscModInDevAllowNonLocal;
-}
-
-
-Bool
-xf86GetModInDevEnabled()
-{
- return xf86Info.miscModInDevEnabled;
-}
-
-
-Bool
-xf86GetAllowMouseOpenFail()
-{
- return xf86Info.allowMouseOpenFail;
-}
-
-
-Bool
-xf86IsPc98()
-{
-#if defined(i386) || defined(__i386__)
- return xf86Info.pc98;
-#else
- return FALSE;
-#endif
-}
-
-void
-xf86DisableRandR()
-{
- xf86Info.disableRandR = TRUE;
- xf86Info.randRFrom = X_PROBED;
-}
-
-CARD32
-xf86GetVersion()
-{
- return XF86_VERSION_CURRENT;
-}
-
-CARD32
-xf86GetModuleVersion(pointer module)
-{
-#ifdef XFree86LOADER
- return (CARD32)LoaderGetModuleVersion(module);
-#else
- return 0;
-#endif
-}
-
-pointer
-xf86LoadDrvSubModule(DriverPtr drv, const char *name)
-{
-#ifdef XFree86LOADER
- pointer ret;
- int errmaj = 0, errmin = 0;
-
- ret = LoadSubModule(drv->module, name, NULL, NULL, NULL, NULL,
- &errmaj, &errmin);
- if (!ret)
- LoaderErrorMsg(NULL, name, errmaj, errmin);
- return ret;
-#else
- return (pointer)1;
-#endif
-}
-
-pointer
-xf86LoadSubModule(ScrnInfoPtr pScrn, const char *name)
-{
-#ifdef XFree86LOADER
- pointer ret;
- int errmaj = 0, errmin = 0;
-
- ret = LoadSubModule(pScrn->module, name, NULL, NULL, NULL, NULL,
- &errmaj, &errmin);
- if (!ret)
- LoaderErrorMsg(pScrn->name, name, errmaj, errmin);
- return ret;
-#else
- return (pointer)1;
-#endif
-}
-
-/*
- * xf86LoadOneModule loads a single module.
- */
-pointer
-xf86LoadOneModule(char *name, pointer opt)
-{
-#ifdef XFree86LOADER
- int errmaj, errmin;
-#endif
- char *Name;
- pointer mod;
-
- if (!name)
- return NULL;
-
-#ifndef NORMALISE_MODULE_NAME
- Name = xstrdup(name);
-#else
- /* Normalise the module name */
- Name = xf86NormalizeName(name);
-#endif
-
- /* Skip empty names */
- if (Name == NULL)
- return NULL;
- if (*Name == '\0') {
- xfree(Name);
- return NULL;
- }
-
-#ifdef XFree86LOADER
- mod = LoadModule(Name, NULL, NULL, NULL, opt, NULL, &errmaj, &errmin);
- if (!mod)
- LoaderErrorMsg(NULL, Name, errmaj, errmin);
-#else
- mod = (pointer)1;
-#endif
- xfree(Name);
- return mod;
-}
-
-void
-xf86UnloadSubModule(pointer mod)
-{
- /*
- * This is disabled for now. The loader isn't smart enough yet to undo
- * relocations.
- */
-#if defined(XFree86LOADER) && 0
- UnloadSubModule(mod);
-#endif
-}
-
-Bool
-xf86LoaderCheckSymbol(const char *name)
-{
-#ifdef XFree86LOADER
- return LoaderSymbol(name) != NULL;
-#else
- return TRUE;
-#endif
-}
-
-void
-xf86LoaderReqSymLists(const char **list0, ...)
-{
-#ifdef XFree86LOADER
- va_list ap;
-
- va_start(ap, list0);
- LoaderVReqSymLists(list0, ap);
- va_end(ap);
-#endif
-}
-
-void
-xf86LoaderReqSymbols(const char *sym0, ...)
-{
-#ifdef XFree86LOADER
- va_list ap;
-
- va_start(ap, sym0);
- LoaderVReqSymbols(sym0, ap);
- va_end(ap);
-#endif
-}
-
-void
-xf86LoaderRefSymLists(const char **list0, ...)
-{
-#ifdef XFree86LOADER
- va_list ap;
-
- va_start(ap, list0);
- LoaderVRefSymLists(list0, ap);
- va_end(ap);
-#endif
-}
-
-void
-xf86LoaderRefSymbols(const char *sym0, ...)
-{
-#ifdef XFree86LOADER
- va_list ap;
-
- va_start(ap, sym0);
- LoaderVRefSymbols(sym0, ap);
- va_end(ap);
-#endif
-}
-
-
-typedef enum {
- OPTION_BACKING_STORE
-} BSOpts;
-
-static const OptionInfoRec BSOptions[] = {
- { OPTION_BACKING_STORE, "BackingStore", OPTV_BOOLEAN, {0}, FALSE },
- { -1, NULL, OPTV_NONE, {0}, FALSE }
-};
-
-void
-xf86SetBackingStore(ScreenPtr pScreen)
-{
- Bool useBS = FALSE;
- MessageType from = X_DEFAULT;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- OptionInfoPtr options;
-
- options = xnfalloc(sizeof(BSOptions));
- (void)memcpy(options, BSOptions, sizeof(BSOptions));
- xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, options);
-
- /* check for commandline option here */
- if (xf86bsEnableFlag) {
- from = X_CMDLINE;
- useBS = TRUE;
- } else if (xf86bsDisableFlag) {
- from = X_CMDLINE;
- useBS = FALSE;
- } else {
- if (xf86GetOptValBool(options, OPTION_BACKING_STORE, &useBS))
- from = X_CONFIG;
- }
- xfree(options);
- pScreen->backingStoreSupport = useBS ? Always : NotUseful;
- if (serverGeneration == 1)
- xf86DrvMsg(pScreen->myNum, from, "Backing store %s\n",
- useBS ? "enabled" : "disabled");
-}
-
-
-typedef enum {
- OPTION_SILKEN_MOUSE
-} SMOpts;
-
-static const OptionInfoRec SMOptions[] = {
- { OPTION_SILKEN_MOUSE, "SilkenMouse", OPTV_BOOLEAN, {0}, FALSE },
- { -1, NULL, OPTV_NONE, {0}, FALSE }
-};
-
-void
-xf86SetSilkenMouse (ScreenPtr pScreen)
-{
- Bool useSM = TRUE;
- MessageType from = X_DEFAULT;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- OptionInfoPtr options;
-
- options = xnfalloc(sizeof(SMOptions));
- (void)memcpy(options, SMOptions, sizeof(SMOptions));
- xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, options);
-
- /* check for commandline option here */
- /* disable if screen shares resources */
- if (((pScrn->racMemFlags & RAC_CURSOR) &&
- !xf86NoSharedResources(pScrn->scrnIndex,MEM)) ||
- ((pScrn->racIoFlags & RAC_CURSOR) &&
- !xf86NoSharedResources(pScrn->scrnIndex,IO))) {
- useSM = FALSE;
- from = X_PROBED;
- } else if (xf86silkenMouseDisableFlag) {
- from = X_CMDLINE;
- useSM = FALSE;
- } else {
- if (xf86GetOptValBool(options, OPTION_SILKEN_MOUSE, &useSM))
- from = X_CONFIG;
- }
- xfree(options);
- /*
- * XXX quick hack to report correctly for OSs that can't do SilkenMouse
- * yet. Should handle this differently so that alternate async methods
- * like Xqueue work correctly with this too.
- */
- pScrn->silkenMouse = useSM && xf86SIGIOSupported();
- if (serverGeneration == 1)
- xf86DrvMsg(pScreen->myNum, from, "Silken mouse %s\n",
- pScrn->silkenMouse ? "enabled" : "disabled");
-}
-
-/* Wrote this function for the PM2 Xv driver, preliminary. */
-
-pointer
-xf86FindXvOptions(int scrnIndex, int adaptor_index, char *port_name,
- char **adaptor_name, pointer *adaptor_options)
-{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
- confXvAdaptorPtr adaptor;
- int i;
-
- if (adaptor_index >= pScrn->confScreen->numxvadaptors) {
- if (adaptor_name) *adaptor_name = NULL;
- if (adaptor_options) *adaptor_options = NULL;
- return NULL;
- }
-
- adaptor = &pScrn->confScreen->xvadaptors[adaptor_index];
- if (adaptor_name) *adaptor_name = adaptor->identifier;
- if (adaptor_options) *adaptor_options = adaptor->options;
-
- for (i = 0; i < adaptor->numports; i++)
- if (!xf86NameCmp(adaptor->ports[i].identifier, port_name))
- return adaptor->ports[i].options;
-
- return NULL;
-}
-
-/* Rather than duplicate loader's get OS function, just include it directly */
-#define LoaderGetOS xf86GetOS
-#include "loader/os.c"
-
-/* new RAC */
-/*
- * xf86ConfigIsa/PciEntity() -- These helper functions assign an
- * active entity to a screen, registers its fixed resources, assign
- * special enter/leave functions and their private scratch area to
- * this entity, take the dog for a walk...
- */
-ScrnInfoPtr
-xf86ConfigIsaEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
- IsaChipsets *i_chip, resList res, EntityProc init,
- EntityProc enter, EntityProc leave, pointer private)
-{
- IsaChipsets *i_id;
- EntityInfoPtr pEnt = xf86GetEntityInfo(entityIndex);
- if (!pEnt) return pScrn;
-
- if (!(pEnt->location.type == BUS_ISA)) {
- xfree(pEnt);
- return pScrn;
- }
-
- if (!pEnt->active) {
- xf86ConfigIsaEntityInactive(pEnt, i_chip, res, init, enter,
- leave, private);
- return pScrn;
- }
-
- if (!pScrn)
- pScrn = xf86AllocateScreen(pEnt->driver,scrnFlag);
- xf86AddEntityToScreen(pScrn,entityIndex);
-
- if (i_chip) {
- for (i_id = i_chip; i_id->numChipset != -1; i_id++) {
- if (pEnt->chipset == i_id->numChipset) break;
- }
- xf86ClaimFixedResources(i_id->resList,entityIndex);
- }
- xfree(pEnt);
- xf86ClaimFixedResources(res,entityIndex);
- xf86SetEntityFuncs(entityIndex,init,enter,leave,private);
-
- return pScrn;
-}
-
-ScrnInfoPtr
-xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
- PciChipsets *p_chip, resList res, EntityProc init,
- EntityProc enter, EntityProc leave, pointer private)
-{
- PciChipsets *p_id;
- EntityInfoPtr pEnt = xf86GetEntityInfo(entityIndex);
- if (!pEnt) return pScrn;
-
- if (!(pEnt->location.type == BUS_PCI)
- || !xf86GetPciInfoForEntity(entityIndex)) {
- xfree(pEnt);
- return pScrn;
- }
- if (!pEnt->active) {
- xf86ConfigPciEntityInactive(pEnt, p_chip, res, init, enter,
- leave, private);
- return pScrn;
- }
-
- if (!pScrn)
- pScrn = xf86AllocateScreen(pEnt->driver,scrnFlag);
- if (xf86IsEntitySharable(entityIndex)) {
- xf86SetEntityShared(entityIndex);
- }
- xf86AddEntityToScreen(pScrn,entityIndex);
- if (xf86IsEntityShared(entityIndex)) {
- return pScrn;
- }
- if (p_chip) {
- for (p_id = p_chip; p_id->numChipset != -1; p_id++) {
- if (pEnt->chipset == p_id->numChipset) break;
- }
- xf86ClaimFixedResources(p_id->resList,entityIndex);
- }
- xfree(pEnt);
-
- xf86ClaimFixedResources(res,entityIndex);
- xf86SetEntityFuncs(entityIndex,init,enter,leave,private);
-
- return pScrn;
-}
-
-ScrnInfoPtr
-xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
- EntityProc init, EntityProc enter, EntityProc leave,
- pointer private)
-{
- EntityInfoPtr pEnt = xf86GetEntityInfo(entityIndex);
- if (!pEnt) return pScrn;
-
- if (!(pEnt->location.type == BUS_NONE)) {
- xfree(pEnt);
- return pScrn;
- }
-
- if (!pEnt->active) {
- xf86ConfigFbEntityInactive(pEnt, init, enter, leave, private);
- return pScrn;
- }
-
- if (!pScrn)
- pScrn = xf86AllocateScreen(pEnt->driver,scrnFlag);
- xf86AddEntityToScreen(pScrn,entityIndex);
-
- xf86SetEntityFuncs(entityIndex,init,enter,leave,private);
-
- return pScrn;
-}
-
-/*
- *
- * OBSOLETE ! xf86ConfigActiveIsaEntity() and xf86ConfigActivePciEntity()
- * are obsolete functions. They the are likely to be removed
- * Don't use!
- */
-Bool
-xf86ConfigActiveIsaEntity(ScrnInfoPtr pScrn, int entityIndex,
- IsaChipsets *i_chip, resList res, EntityProc init,
- EntityProc enter, EntityProc leave, pointer private)
-{
- IsaChipsets *i_id;
- EntityInfoPtr pEnt = xf86GetEntityInfo(entityIndex);
- if (!pEnt) return FALSE;
-
- if (!pEnt->active || !(pEnt->location.type == BUS_ISA)) {
- xfree(pEnt);
- return FALSE;
- }
-
- xf86AddEntityToScreen(pScrn,entityIndex);
-
- if (i_chip) {
- for (i_id = i_chip; i_id->numChipset != -1; i_id++) {
- if (pEnt->chipset == i_id->numChipset) break;
- }
- xf86ClaimFixedResources(i_id->resList,entityIndex);
- }
- xfree(pEnt);
- xf86ClaimFixedResources(res,entityIndex);
- if (!xf86SetEntityFuncs(entityIndex,init,enter,leave,private))
- return FALSE;
-
- return TRUE;
-}
-
-Bool
-xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
- PciChipsets *p_chip, resList res, EntityProc init,
- EntityProc enter, EntityProc leave, pointer private)
-{
- PciChipsets *p_id;
- EntityInfoPtr pEnt = xf86GetEntityInfo(entityIndex);
- if (!pEnt) return FALSE;
-
- if (!pEnt->active || !(pEnt->location.type == BUS_PCI)) {
- xfree(pEnt);
- return FALSE;
- }
- xf86AddEntityToScreen(pScrn,entityIndex);
-
- if (p_chip) {
- for (p_id = p_chip; p_id->numChipset != -1; p_id++) {
- if (pEnt->chipset == p_id->numChipset) break;
- }
- xf86ClaimFixedResources(p_id->resList,entityIndex);
- }
- xfree(pEnt);
-
- xf86ClaimFixedResources(res,entityIndex);
- if (!xf86SetEntityFuncs(entityIndex,init,enter,leave,private))
- return FALSE;
-
- return TRUE;
-}
-
-/*
- * xf86ConfigPci/IsaEntityInactive() -- These functions can be used
- * to configure an inactive entity as well as to reconfigure an
- * previously active entity inactive. If the entity has been
- * assigned to a screen before it will be removed. If p_pci(p_isa) is
- * non-NULL all static resources listed there will be registered.
- */
-void
-xf86ConfigPciEntityInactive(EntityInfoPtr pEnt, PciChipsets *p_chip,
- resList res, EntityProc init, EntityProc enter,
- EntityProc leave, pointer private)
-{
- PciChipsets *p_id;
- ScrnInfoPtr pScrn;
-
- if ((pScrn = xf86FindScreenForEntity(pEnt->index)))
- xf86RemoveEntityFromScreen(pScrn,pEnt->index);
- else if (p_chip) {
- for (p_id = p_chip; p_id->numChipset != -1; p_id++) {
- if (pEnt->chipset == p_id->numChipset) break;
- }
- xf86ClaimFixedResources(p_id->resList,pEnt->index);
- }
- xf86ClaimFixedResources(res,pEnt->index);
- /* shared resources are only needed when entity is active: remove */
- xf86DeallocateResourcesForEntity(pEnt->index, ResShared);
- xf86SetEntityFuncs(pEnt->index,init,enter,leave,private);
-}
-
-void
-xf86ConfigIsaEntityInactive(EntityInfoPtr pEnt, IsaChipsets *i_chip,
- resList res, EntityProc init, EntityProc enter,
- EntityProc leave, pointer private)
-{
- IsaChipsets *i_id;
- ScrnInfoPtr pScrn;
-
- if ((pScrn = xf86FindScreenForEntity(pEnt->index)))
- xf86RemoveEntityFromScreen(pScrn,pEnt->index);
- else if (i_chip) {
- for (i_id = i_chip; i_id->numChipset != -1; i_id++) {
- if (pEnt->chipset == i_id->numChipset) break;
- }
- xf86ClaimFixedResources(i_id->resList,pEnt->index);
- }
- xf86ClaimFixedResources(res,pEnt->index);
- /* shared resources are only needed when entity is active: remove */
- xf86DeallocateResourcesForEntity(pEnt->index, ResShared);
- xf86SetEntityFuncs(pEnt->index,init,enter,leave,private);
-}
-
-void
-xf86ConfigFbEntityInactive(EntityInfoPtr pEnt, EntityProc init,
- EntityProc enter, EntityProc leave, pointer private)
-{
- ScrnInfoPtr pScrn;
-
- if ((pScrn = xf86FindScreenForEntity(pEnt->index)))
- xf86RemoveEntityFromScreen(pScrn,pEnt->index);
- xf86SetEntityFuncs(pEnt->index,init,enter,leave,private);
-}
-
-Bool
-xf86IsScreenPrimary(int scrnIndex)
-{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
- int i;
-
- for (i=0 ; i < pScrn->numEntities; i++) {
- if (xf86IsEntityPrimary(i))
- return TRUE;
- }
- return FALSE;
-}
-
-int
-xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type,
- int format, unsigned long len, pointer value )
-{
- RootWinPropPtr pNewProp = NULL, pRegProp;
- int i;
- Bool existing = FALSE;
-
-#ifdef DEBUG
- ErrorF("xf86RegisterRootWindowProperty(%d, %ld, %ld, %d, %ld, %p)\n",
- ScrnIndex, property, type, format, len, value);
-#endif
-
- if (ScrnIndex<0 || ScrnIndex>=xf86NumScreens) {
- return(BadMatch);
- }
-
- if (xf86RegisteredPropertiesTable &&
- xf86RegisteredPropertiesTable[ScrnIndex]) {
- for (pNewProp = xf86RegisteredPropertiesTable[ScrnIndex];
- pNewProp; pNewProp = pNewProp->next) {
- if (strcmp(pNewProp->name, NameForAtom(property)) == 0)
- break;
- }
- }
-
- if (!pNewProp) {
- if ((pNewProp = (RootWinPropPtr)xalloc(sizeof(RootWinProp))) == NULL) {
- return(BadAlloc);
- }
- /*
- * We will put this property at the end of the list so that
- * the changes are made in the order they were requested.
- */
- pNewProp->next = NULL;
- } else {
- if (pNewProp->name)
- xfree(pNewProp->name);
- existing = TRUE;
- }
-
- pNewProp->name = xnfstrdup(NameForAtom(property));
- pNewProp->type = type;
- pNewProp->format = format;
- pNewProp->size = len;
- pNewProp->data = value;
-
-#ifdef DEBUG
- ErrorF("new property filled\n");
-#endif
-
- if (NULL==xf86RegisteredPropertiesTable) {
-#ifdef DEBUG
- ErrorF("creating xf86RegisteredPropertiesTable[] size %d\n",
- xf86NumScreens);
-#endif
- if ( NULL==(xf86RegisteredPropertiesTable=(RootWinPropPtr*)xnfcalloc(sizeof(RootWinProp),xf86NumScreens) )) {
- return(BadAlloc);
- }
- for (i=0; i<xf86NumScreens; i++) {
- xf86RegisteredPropertiesTable[i] = NULL;
- }
- }
-
-#ifdef DEBUG
- ErrorF("xf86RegisteredPropertiesTable %p\n",
- (void *)xf86RegisteredPropertiesTable);
- ErrorF("xf86RegisteredPropertiesTable[%d] %p\n",
- ScrnIndex, (void *)xf86RegisteredPropertiesTable[ScrnIndex]);
-#endif
-
- if (!existing) {
- if ( xf86RegisteredPropertiesTable[ScrnIndex] == NULL) {
- xf86RegisteredPropertiesTable[ScrnIndex] = pNewProp;
- } else {
- pRegProp = xf86RegisteredPropertiesTable[ScrnIndex];
- while (pRegProp->next != NULL) {
-#ifdef DEBUG
- ErrorF("- next %p\n", (void *)pRegProp);
-#endif
- pRegProp = pRegProp->next;
- }
- pRegProp->next = pNewProp;
- }
- }
-#ifdef DEBUG
- ErrorF("xf86RegisterRootWindowProperty succeeded\n");
-#endif
- return(Success);
-}
-
-Bool
-xf86IsUnblank(int mode)
-{
- switch(mode) {
- case SCREEN_SAVER_OFF:
- case SCREEN_SAVER_FORCER:
- return TRUE;
- case SCREEN_SAVER_ON:
- case SCREEN_SAVER_CYCLE:
- return FALSE;
- default:
- xf86MsgVerb(X_WARNING, 0, "Unexpected save screen mode: %d\n", mode);
- return TRUE;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86InPriv.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86InPriv.h
deleted file mode 100644
index 4a02606d3..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86InPriv.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86InPriv.h,v 1.5 2003/08/24 17:36:52 dawes Exp $ */
-
-/*
- * Copyright (c) 1999 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _xf86InPriv_h
-#define _xf86InPriv_h
-
-/* xf86Globals.c */
-#ifdef XFree86LOADER
-extern InputDriverPtr *xf86InputDriverList;
-#else
-extern InputDriverPtr xf86InputDriverList[];
-#endif
-extern int xf86NumInputDrivers;
-
-/* xf86Xinput.c */
-void xf86ActivateDevice(InputInfoPtr pInfo);
-
-#endif /* _xf86InPriv_h */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Init.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Init.c
deleted file mode 100644
index e504c300a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Init.c
+++ /dev/null
@@ -1,2035 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Init.c,v 3.212 2004/01/27 01:31:45 dawes Exp $ */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86Init.c,v 1.29 2005/12/14 20:12:00 ajax Exp $ */
-
-/*
- * Loosely based on code bearing the following copyright:
- *
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- */
-/*
- * Copyright (c) 1992-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdlib.h>
-
-#undef HAS_UTSNAME
-#if !defined(WIN32) && !defined(__UNIXOS2__)
-#define HAS_UTSNAME 1
-#include <sys/utsname.h>
-#endif
-
-#define NEED_EVENTS
-#ifdef __UNIXOS2__
-#define I_NEED_OS2_H
-#endif
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include <X11/Xatom.h>
-#include "input.h"
-#include "servermd.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "site.h"
-#include "mi.h"
-
-#include "compiler.h"
-
-#ifdef XFree86LOADER
-#include "loaderProcs.h"
-#endif
-#ifdef XFreeXDGA
-#include "dgaproc.h"
-#endif
-
-#define XF86_OS_PRIVS
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Config.h"
-#include "xf86_OSlib.h"
-#include "xorgVersion.h"
-#include "xf86Date.h"
-#include "xf86Build.h"
-#include "mipointer.h"
-#ifdef XINPUT
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#else
-#include "inputstr.h"
-#endif
-#include "xf86DDC.h"
-#include "xf86Xinput.h"
-#include "xf86InPriv.h"
-#ifdef RENDER
-#include "picturestr.h"
-#endif
-
-#include "globals.h"
-
-#ifdef XTESTEXT1
-#include "atKeynames.h"
-extern int xtest_command_key;
-#endif /* XTESTEXT1 */
-
-#ifdef DPMSExtension
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
-#include "dpmsproc.h"
-#endif
-
-
-/* forward declarations */
-
-static void xf86PrintBanner(void);
-static void xf86PrintMarkers(void);
-static void xf86RunVtInit(void);
-
-#ifdef __UNIXOS2__
-extern void os2ServerVideoAccess();
-#endif
-
-#ifdef XF86PM
-void (*xf86OSPMClose)(void) = NULL;
-#endif
-
-#ifdef XFree86LOADER
-static char *baseModules[] = {
- "bitmap",
- "pcidata",
- NULL
-};
-#endif
-
-/* Common pixmap formats */
-
-static PixmapFormatRec formats[MAXFORMATS] = {
- { 1, 1, BITMAP_SCANLINE_PAD },
- { 4, 8, BITMAP_SCANLINE_PAD },
- { 8, 8, BITMAP_SCANLINE_PAD },
- { 15, 16, BITMAP_SCANLINE_PAD },
- { 16, 16, BITMAP_SCANLINE_PAD },
- { 24, 32, BITMAP_SCANLINE_PAD },
-#ifdef RENDER
- { 32, 32, BITMAP_SCANLINE_PAD },
-#endif
-};
-#ifdef RENDER
-static int numFormats = 7;
-#else
-static int numFormats = 6;
-#endif
-static Bool formatsDone = FALSE;
-
-InputDriverRec XF86KEYBOARD = {
- 1,
- "keyboard",
- NULL,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-static Bool
-xf86CreateRootWindow(WindowPtr pWin)
-{
- int ret = TRUE;
- int err = Success;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RootWinPropPtr pProp;
- CreateWindowProcPtr CreateWindow =
- (CreateWindowProcPtr)(pScreen->devPrivates[xf86CreateRootWindowIndex].ptr);
-
-#ifdef DEBUG
- ErrorF("xf86CreateRootWindow(%p)\n", pWin);
-#endif
-
- if ( pScreen->CreateWindow != xf86CreateRootWindow ) {
- /* Can't find hook we are hung on */
- xf86DrvMsg(pScreen->myNum, X_WARNING /* X_ERROR */,
- "xf86CreateRootWindow %p called when not in pScreen->CreateWindow %p n",
- (void *)xf86CreateRootWindow,
- (void *)pScreen->CreateWindow );
- }
-
- /* Unhook this function ... */
- pScreen->CreateWindow = CreateWindow;
- pScreen->devPrivates[xf86CreateRootWindowIndex].ptr = NULL;
-
- /* ... and call the previous CreateWindow fuction, if any */
- if (NULL!=pScreen->CreateWindow) {
- ret = (*pScreen->CreateWindow)(pWin);
- }
-
- /* Now do our stuff */
- if (xf86RegisteredPropertiesTable != NULL) {
- if (pWin->parent == NULL && xf86RegisteredPropertiesTable != NULL) {
- for (pProp = xf86RegisteredPropertiesTable[pScreen->myNum];
- pProp != NULL && err==Success;
- pProp = pProp->next )
- {
- Atom prop;
-
- prop = MakeAtom(pProp->name, strlen(pProp->name), TRUE);
- err = ChangeWindowProperty(pWin,
- prop, pProp->type,
- pProp->format, PropModeReplace,
- pProp->size, pProp->data,
- FALSE
- );
- }
-
- /* Look at err */
- ret &= (err==Success);
-
- } else {
- xf86Msg(X_ERROR, "xf86CreateRootWindow unexpectedly called with "
- "non-root window %p (parent %p)\n",
- (void *)pWin, (void *)pWin->parent);
- ret = FALSE;
- }
- }
-
-#ifdef DEBUG
- ErrorF("xf86CreateRootWindow() returns %d\n", ret);
-#endif
- return (ret);
-}
-
-
-/*
- * InitOutput --
- * Initialize screenInfo for all actually accessible framebuffers.
- * That includes vt-manager setup, querying all possible devices and
- * collecting the pixmap formats.
- */
-
-static void
-PostConfigInit(void)
-{
- /*
- * Install signal handler for unexpected signals
- */
- xf86Info.caughtSignal=FALSE;
- if (!xf86Info.notrapSignals) {
- signal(SIGSEGV,xf86SigHandler);
- signal(SIGILL,xf86SigHandler);
-#ifdef SIGEMT
- signal(SIGEMT,xf86SigHandler);
-#endif
- signal(SIGFPE,xf86SigHandler);
-#ifdef SIGBUS
- signal(SIGBUS,xf86SigHandler);
-#endif
-#ifdef SIGSYS
- signal(SIGSYS,xf86SigHandler);
-#endif
-#ifdef SIGXCPU
- signal(SIGXCPU,xf86SigHandler);
-#endif
-#ifdef SIGXFSZ
- signal(SIGXFSZ,xf86SigHandler);
-#endif
-#ifdef MEMDEBUG
- signal(SIGUSR2,xf86SigMemDebug);
-#endif
- }
-
-#ifdef XF86PM
- xf86OSPMClose = xf86OSPMOpen();
-#endif
-
- /* Run an external VT Init program if specified in the config file */
- xf86RunVtInit();
-
- /* Do this after XF86Config is read (it's normally in OsInit()) */
- OsInitColors();
-}
-
-void
-InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
-{
- int i, j, k, scr_index;
- static unsigned long generation = 0;
-#ifdef XFree86LOADER
- char **modulelist;
- pointer *optionlist;
-#endif
- screenLayoutPtr layout;
- Pix24Flags screenpix24, pix24;
- MessageType pix24From = X_DEFAULT;
- Bool pix24Fail = FALSE;
- Bool autoconfig = FALSE;
-
-#ifdef __UNIXOS2__
- os2ServerVideoAccess(); /* See if we have access to the screen before doing anything */
-#endif
-
- xf86Initialising = TRUE;
-
- /* Do this early? */
- if (generation != serverGeneration) {
- xf86ScreenIndex = AllocateScreenPrivateIndex();
- xf86CreateRootWindowIndex = AllocateScreenPrivateIndex();
- xf86PixmapIndex = AllocatePixmapPrivateIndex();
- generation = serverGeneration;
- }
-
- if (serverGeneration == 1) {
-
- pScreenInfo->numScreens = 0;
-
- if ((xf86ServerName = strrchr(argv[0], '/')) != 0)
- xf86ServerName++;
- else
- xf86ServerName = argv[0];
-
- xf86PrintBanner();
- xf86PrintMarkers();
- if (xf86LogFile) {
- time_t t;
- const char *ct;
- t = time(NULL);
- ct = ctime(&t);
- xf86MsgVerb(xf86LogFileFrom, 0, "Log file: \"%s\", Time: %s",
- xf86LogFile, ct);
- }
-
- /* Read and parse the config file */
- if (!xf86DoProbe && !xf86DoConfigure) {
- switch (xf86HandleConfigFile(FALSE)) {
- case CONFIG_OK:
- break;
- case CONFIG_PARSE_ERROR:
- xf86Msg(X_ERROR, "Error parsing the config file\n");
- return;
- case CONFIG_NOFILE:
- autoconfig = TRUE;
- break;
- }
- }
-
- if (!autoconfig)
- PostConfigInit();
-
-#ifdef XFree86LOADER
- /* Initialise the loader */
- LoaderInit();
-
- /* Tell the loader the default module search path */
- LoaderSetPath(xf86ModulePath);
-
-#ifdef TESTING
- {
- char **list, **l;
- const char *subdirs[] = {
- "drivers",
- NULL
- };
- const char *patlist[] = {
- "(.*)_drv\\.so",
- "(.*)_drv\\.o",
- NULL
- };
- ErrorF("Getting module listing...\n");
- list = LoaderListDirs(NULL, NULL);
- if (list)
- for (l = list; *l; l++)
- ErrorF("module: %s\n", *l);
- LoaderFreeDirList(list);
- ErrorF("Getting video driver listing...\n");
- list = LoaderListDirs(subdirs, NULL);
- if (list)
- for (l = list; *l; l++)
- ErrorF("video driver: %s\n", *l);
- LoaderFreeDirList(list);
- ErrorF("Getting driver listing...\n");
- list = LoaderListDirs(NULL, patlist);
- if (list)
- for (l = list; *l; l++)
- ErrorF("video driver: %s\n", *l);
- LoaderFreeDirList(list);
- }
-#endif
-
- /* Force load mandatory base modules */
- if (!xf86LoadModules(baseModules, NULL))
- FatalError("Unable to load required base modules, Exiting...\n");
-
-#endif
-
- xf86OpenConsole();
-
- /* Do a general bus probe. This will be a PCI probe for x86 platforms */
- xf86BusProbe();
-
- if (xf86DoProbe)
- DoProbe();
-
- if (xf86DoConfigure)
- DoConfigure();
-
- if (autoconfig) {
- if (!xf86AutoConfig()) {
- xf86Msg(X_ERROR, "Auto configuration failed\n");
- return;
- }
- PostConfigInit();
- }
-
- /* Initialise the resource broker */
- xf86ResourceBrokerInit();
-
-#ifdef XFree86LOADER
- /* Load all modules specified explicitly in the config file */
- if ((modulelist = xf86ModulelistFromConfig(&optionlist))) {
- xf86LoadModules(modulelist, optionlist);
- xfree(modulelist);
- xfree(optionlist);
- }
-
- /* Load all driver modules specified in the config file */
- if ((modulelist = xf86DriverlistFromConfig())) {
- xf86LoadModules(modulelist, NULL);
- xfree(modulelist);
- }
-
-#ifdef USE_DEPRECATED_KEYBOARD_DRIVER
- /* Setup the builtin input drivers */
- xf86AddInputDriver(&XF86KEYBOARD, NULL, 0);
-#endif
- /* Load all input driver modules specified in the config file. */
- if ((modulelist = xf86InputDriverlistFromConfig())) {
- xf86LoadModules(modulelist, NULL);
- xfree(modulelist);
- }
-
- /*
- * It is expected that xf86AddDriver()/xf86AddInputDriver will be
- * called for each driver as it is loaded. Those functions save the
- * module pointers for drivers.
- * XXX Nothing keeps track of them for other modules.
- */
- /* XXX What do we do if not all of these could be loaded? */
-#endif
-
- /*
- * At this point, xf86DriverList[] is all filled in with entries for
- * each of the drivers to try and xf86NumDrivers has the number of
- * drivers. If there are none, return now.
- */
-
- if (xf86NumDrivers == 0) {
- xf86Msg(X_ERROR, "No drivers available.\n");
- return;
- }
-
- /*
- * Call each of the Identify functions and call the driverFunc to check
- * if HW access is required. The Identify functions print out some
- * identifying information, and anything else that might be
- * needed at this early stage.
- */
-
- for (i = 0; i < xf86NumDrivers; i++) {
- xorgHWFlags flags;
- /* The Identify function is mandatory, but if it isn't there continue */
- if (xf86DriverList[i]->Identify != NULL)
- xf86DriverList[i]->Identify(0);
- else {
- xf86Msg(X_WARNING, "Driver `%s' has no Identify function\n",
- xf86DriverList[i]->driverName ? xf86DriverList[i]->driverName
- : "noname");
- }
- if (!xorgHWAccess
- && (!xf86DriverList[i]->driverFunc
- || !xf86DriverList[i]->driverFunc(NULL,
- GET_REQUIRED_HW_INTERFACES,
- &flags)
- || NEED_IO_ENABLED(flags)))
- xorgHWAccess = TRUE;
- }
-
- /* Enable full I/O access */
- if (xorgHWAccess) {
- if(!xf86EnableIO())
- /* oops, we have failed */
- xorgHWAccess = FALSE;
- }
-
- /*
- * Locate bus slot that had register IO enabled at server startup
- */
-
- xf86AccessInit();
- xf86FindPrimaryDevice();
-
- /*
- * Now call each of the Probe functions. Each successful probe will
- * result in an extra entry added to the xf86Screens[] list for each
- * instance of the hardware found.
- */
-
- for (i = 0; i < xf86NumDrivers; i++) {
- xorgHWFlags flags;
- if (!xorgHWAccess) {
- if (!xf86DriverList[i]->driverFunc
- || !xf86DriverList[i]->driverFunc(NULL,
- GET_REQUIRED_HW_INTERFACES,
- &flags)
- || NEED_IO_ENABLED(flags))
- continue;
- }
-
- if (xf86DriverList[i]->Probe != NULL)
- xf86DriverList[i]->Probe(xf86DriverList[i], PROBE_DEFAULT);
- else {
- xf86MsgVerb(X_WARNING, 0,
- "Driver `%s' has no Probe function (ignoring)\n",
- xf86DriverList[i]->driverName
- ? xf86DriverList[i]->driverName : "noname");
- }
- xf86SetPciVideo(NULL,NONE);
- }
-
- /*
- * If nothing was detected, return now.
- */
-
- if (xf86NumScreens == 0) {
- xf86Msg(X_ERROR, "No devices detected.\n");
- return;
- }
-
- /*
- * Match up the screens found by the probes against those specified
- * in the config file. Remove the ones that won't be used. Sort
- * them in the order specified.
- */
-
- /*
- * What is the best way to do this?
- *
- * For now, go through the screens allocated by the probes, and
- * look for screen config entry which refers to the same device
- * section as picked out by the probe.
- *
- */
-
- for (i = 0; i < xf86NumScreens; i++) {
- for (layout = xf86ConfigLayout.screens; layout->screen != NULL;
- layout++) {
- Bool found = FALSE;
- for (j = 0; j < xf86Screens[i]->numEntities; j++) {
-
- GDevPtr dev =
- xf86GetDevFromEntity(xf86Screens[i]->entityList[j],
- xf86Screens[i]->entityInstanceList[j]);
-
- if (dev == layout->screen->device) {
- /* A match has been found */
- xf86Screens[i]->confScreen = layout->screen;
- found = TRUE;
- break;
- }
- }
- if (found) break;
- }
- if (layout->screen == NULL) {
- /* No match found */
- xf86Msg(X_ERROR,
- "Screen %d deleted because of no matching config section.\n", i);
- xf86DeleteScreen(i--, 0);
- }
- }
-
- /*
- * If no screens left, return now.
- */
-
- if (xf86NumScreens == 0) {
- xf86Msg(X_ERROR,
- "Device(s) detected, but none match those in the config file.\n");
- return;
- }
-
- xf86PostProbe();
- xf86EntityInit();
-
- /*
- * Sort the drivers to match the requested ording. Using a slow
- * bubble sort.
- */
- for (j = 0; j < xf86NumScreens - 1; j++) {
- for (i = 0; i < xf86NumScreens - j - 1; i++) {
- if (xf86Screens[i + 1]->confScreen->screennum <
- xf86Screens[i]->confScreen->screennum) {
- ScrnInfoPtr tmpScrn = xf86Screens[i + 1];
- xf86Screens[i + 1] = xf86Screens[i];
- xf86Screens[i] = tmpScrn;
- }
- }
- }
- /* Fix up the indexes */
- for (i = 0; i < xf86NumScreens; i++) {
- xf86Screens[i]->scrnIndex = i;
- }
-
- /*
- * Call the driver's PreInit()'s to complete initialisation for the first
- * generation.
- */
-
- for (i = 0; i < xf86NumScreens; i++) {
- xf86EnableAccess(xf86Screens[i]);
- if (xf86Screens[i]->PreInit &&
- xf86Screens[i]->PreInit(xf86Screens[i], 0))
- xf86Screens[i]->configured = TRUE;
- }
- for (i = 0; i < xf86NumScreens; i++)
- if (!xf86Screens[i]->configured)
- xf86DeleteScreen(i--, 0);
-
- /*
- * If no screens left, return now.
- */
-
- if (xf86NumScreens == 0) {
- xf86Msg(X_ERROR,
- "Screen(s) found, but none have a usable configuration.\n");
- return;
- }
-
- /* This could be moved into a separate function */
-
- /*
- * Check that all screens have initialised the mandatory function
- * entry points. Delete those which have not.
- */
-
-#define WARN_SCREEN(func) \
- xf86Msg(X_ERROR, "Driver `%s' has no %s function, deleting.\n", \
- xf86Screens[i]->name, (warned++, func))
-
- for (i = 0; i < xf86NumScreens; i++) {
- int warned = 0;
- if (xf86Screens[i]->name == NULL) {
- xf86Screens[i]->name = xnfalloc(strlen("screen") + 1 + 1);
- if (i < 10)
- sprintf(xf86Screens[i]->name, "screen%c", i + '0');
- else
- sprintf(xf86Screens[i]->name, "screen%c", i - 10 + 'A');
- xf86MsgVerb(X_WARNING, 0,
- "Screen driver %d has no name set, using `%s'.\n",
- i, xf86Screens[i]->name);
- }
- if (xf86Screens[i]->ScreenInit == NULL)
- WARN_SCREEN("ScreenInit");
- if (xf86Screens[i]->EnterVT == NULL)
- WARN_SCREEN("EnterVT");
- if (xf86Screens[i]->LeaveVT == NULL)
- WARN_SCREEN("LeaveVT");
- if (warned)
- xf86DeleteScreen(i--, 0);
- }
-
- /*
- * If no screens left, return now.
- */
-
- if (xf86NumScreens == 0) {
- xf86Msg(X_ERROR, "Screen(s) found, but drivers were unusable.\n");
- return;
- }
-
- /* XXX Should this be before or after loading dependent modules? */
- if (xf86ProbeOnly)
- {
- OsCleanup(TRUE);
- AbortDDX();
- fflush(stderr);
- exit(0);
- }
-
-#ifdef XFree86LOADER
- /* Remove (unload) drivers that are not required */
- for (i = 0; i < xf86NumDrivers; i++)
- if (xf86DriverList[i] && xf86DriverList[i]->refCount <= 0)
- xf86DeleteDriver(i);
-#endif
-
- /*
- * At this stage we know how many screens there are.
- */
-
- for (i = 0; i < xf86NumScreens; i++)
- xf86InitViewport(xf86Screens[i]);
-
- /*
- * Collect all pixmap formats and check for conflicts at the display
- * level. Should we die here? Or just delete the offending screens?
- * Also, should this be done for -probeonly?
- */
- screenpix24 = Pix24DontCare;
- for (i = 0; i < xf86NumScreens; i++) {
- if (xf86Screens[i]->imageByteOrder !=
- xf86Screens[0]->imageByteOrder)
- FatalError("Inconsistent display bitmapBitOrder. Exiting\n");
- if (xf86Screens[i]->bitmapScanlinePad !=
- xf86Screens[0]->bitmapScanlinePad)
- FatalError("Inconsistent display bitmapScanlinePad. Exiting\n");
- if (xf86Screens[i]->bitmapScanlineUnit !=
- xf86Screens[0]->bitmapScanlineUnit)
- FatalError("Inconsistent display bitmapScanlineUnit. Exiting\n");
- if (xf86Screens[i]->bitmapBitOrder !=
- xf86Screens[0]->bitmapBitOrder)
- FatalError("Inconsistent display bitmapBitOrder. Exiting\n");
-
- /* Determine the depth 24 pixmap format the screens would like */
- if (xf86Screens[i]->pixmap24 != Pix24DontCare) {
- if (screenpix24 == Pix24DontCare)
- screenpix24 = xf86Screens[i]->pixmap24;
- else if (screenpix24 != xf86Screens[i]->pixmap24)
- FatalError("Inconsistent depth 24 pixmap format. Exiting\n");
- }
- }
- /* check if screenpix24 is consistent with the config/cmdline */
- if (xf86Info.pixmap24 != Pix24DontCare) {
- pix24 = xf86Info.pixmap24;
- pix24From = xf86Info.pix24From;
- if (screenpix24 != Pix24DontCare && screenpix24 != xf86Info.pixmap24)
- pix24Fail = TRUE;
- } else if (screenpix24 != Pix24DontCare) {
- pix24 = screenpix24;
- pix24From = X_PROBED;
- } else
- pix24 = Pix24Use32;
-
- if (pix24Fail)
- FatalError("Screen(s) can't use the required depth 24 pixmap format"
- " (%d). Exiting\n", PIX24TOBPP(pix24));
-
- /* Initialise the depth 24 format */
- for (j = 0; j < numFormats && formats[j].depth != 24; j++)
- ;
- formats[j].bitsPerPixel = PIX24TOBPP(pix24);
-
- /* Collect additional formats */
- for (i = 0; i < xf86NumScreens; i++) {
- for (j = 0; j < xf86Screens[i]->numFormats; j++) {
- for (k = 0; ; k++) {
- if (k >= numFormats) {
- if (k >= MAXFORMATS)
- FatalError("Too many pixmap formats! Exiting\n");
- formats[k] = xf86Screens[i]->formats[j];
- numFormats++;
- break;
- }
- if (formats[k].depth == xf86Screens[i]->formats[j].depth) {
- if ((formats[k].bitsPerPixel ==
- xf86Screens[i]->formats[j].bitsPerPixel) &&
- (formats[k].scanlinePad ==
- xf86Screens[i]->formats[j].scanlinePad))
- break;
- FatalError("Inconsistent pixmap format for depth %d."
- " Exiting\n", formats[k].depth);
- }
- }
- }
- }
- formatsDone = TRUE;
-
- if (xf86Info.vtno >= 0 ) {
-#define VT_ATOM_NAME "XFree86_VT"
- Atom VTAtom=-1;
- CARD32 *VT = NULL;
- int ret;
-
- /* This memory needs to stay available until the screen has been
- initialized, and we can create the property for real.
- */
- if ( (VT = xalloc(sizeof(CARD32)))==NULL ) {
- FatalError("Unable to make VT property - out of memory. Exiting...\n");
- }
- *VT = xf86Info.vtno;
-
- VTAtom = MakeAtom(VT_ATOM_NAME, sizeof(VT_ATOM_NAME), TRUE);
-
- for (i = 0, ret = Success; i < xf86NumScreens && ret == Success; i++) {
- ret = xf86RegisterRootWindowProperty(xf86Screens[i]->scrnIndex,
- VTAtom, XA_INTEGER, 32,
- 1, VT );
- if (ret != Success)
- xf86DrvMsg(xf86Screens[i]->scrnIndex, X_WARNING,
- "Failed to register VT property\n");
- }
- }
-
- /* If a screen uses depth 24, show what the pixmap format is */
- for (i = 0; i < xf86NumScreens; i++) {
- if (xf86Screens[i]->depth == 24) {
- xf86Msg(pix24From, "Depth 24 pixmap format is %d bpp\n",
- PIX24TOBPP(pix24));
- break;
- }
- }
-
-#if BITMAP_SCANLINE_UNIT == 64
- /*
- * cfb24 doesn't currently work on architectures with a 64 bit
- * BITMAP_SCANLINE_UNIT, so check for 24 bit pixel size for pixmaps
- * or framebuffers.
- */
- {
- Bool usesCfb24 = FALSE;
-
- if (PIX24TOBPP(pix24) == 24)
- usesCfb24 = TRUE;
- for (i = 0; i < xf86NumScreens; i++)
- if (xf86Screens[i]->bitsPerPixel == 24)
- usesCfb24 = TRUE;
- if (usesCfb24) {
- FatalError("24-bit pixel size is not supported on systems with"
- " 64-bit scanlines.\n");
- }
- }
-#endif
-
-#ifdef XKB
- xf86InitXkb();
-#endif
- /* set up the proper access funcs */
- xf86PostPreInit();
-
- AddCallback(&ServerGrabCallback, xf86GrabServerCallback, NULL);
-
- } else {
- /*
- * serverGeneration != 1; some OSs have to do things here, too.
- */
- xf86OpenConsole();
-
-#ifdef XF86PM
- /*
- should we reopen it here? We need to deal with an already opened
- device. We could leave this to the OS layer. For now we simply
- close it here
- */
- if (xf86OSPMClose)
- xf86OSPMClose();
- if ((xf86OSPMClose = xf86OSPMOpen()) != NULL)
- xf86MsgVerb(X_INFO, 3, "APM registered successfully\n");
-#endif
-
- /* Make sure full I/O access is enabled */
- if (xorgHWAccess)
- xf86EnableIO();
- }
-
-#if 0
- /*
- * Install signal handler for unexpected signals
- */
- xf86Info.caughtSignal=FALSE;
- if (!xf86Info.notrapSignals)
- {
- signal(SIGSEGV,xf86SigHandler);
- signal(SIGILL,xf86SigHandler);
-#ifdef SIGEMT
- signal(SIGEMT,xf86SigHandler);
-#endif
- signal(SIGFPE,xf86SigHandler);
-#ifdef SIGBUS
- signal(SIGBUS,xf86SigHandler);
-#endif
-#ifdef SIGSYS
- signal(SIGSYS,xf86SigHandler);
-#endif
-#ifdef SIGXCPU
- signal(SIGXCPU,xf86SigHandler);
-#endif
-#ifdef SIGXFSZ
- signal(SIGXFSZ,xf86SigHandler);
-#endif
- }
-#endif
-
- /*
- * Use the previously collected parts to setup pScreenInfo
- */
-
- pScreenInfo->imageByteOrder = xf86Screens[0]->imageByteOrder;
- pScreenInfo->bitmapScanlinePad = xf86Screens[0]->bitmapScanlinePad;
- pScreenInfo->bitmapScanlineUnit = xf86Screens[0]->bitmapScanlineUnit;
- pScreenInfo->bitmapBitOrder = xf86Screens[0]->bitmapBitOrder;
- pScreenInfo->numPixmapFormats = numFormats;
- for (i = 0; i < numFormats; i++)
- pScreenInfo->formats[i] = formats[i];
-
- /* Make sure the server's VT is active */
-
- if (serverGeneration != 1) {
- xf86Resetting = TRUE;
- /* All screens are in the same state, so just check the first */
- if (!xf86Screens[0]->vtSema) {
-#ifdef HAS_USL_VTS
- ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ);
-#endif
- xf86AccessEnter();
- xf86EnterServerState(SETUP);
- }
- }
-#ifdef SCO325
- else {
- /*
- * Under SCO we must ack that we got the console at startup,
- * I think this is the safest way to assure it.
- */
- static int once = 1;
- if (once) {
- once = 0;
- if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ) < 0)
- xf86Msg(X_WARNING, "VT_ACKACQ failed");
- }
- }
-#endif /* SCO325 */
-
- for (i = 0; i < xf86NumScreens; i++) {
- xf86EnableAccess(xf86Screens[i]);
- /*
- * Almost everything uses these defaults, and many of those that
- * don't, will wrap them.
- */
- xf86Screens[i]->EnableDisableFBAccess = xf86EnableDisableFBAccess;
- xf86Screens[i]->SetDGAMode = xf86SetDGAMode;
- xf86Screens[i]->DPMSSet = NULL;
- xf86Screens[i]->LoadPalette = NULL;
- xf86Screens[i]->SetOverscan = NULL;
- xf86Screens[i]->DriverFunc = NULL;
- xf86Screens[i]->pScreen = NULL;
- scr_index = AddScreen(xf86Screens[i]->ScreenInit, argc, argv);
- if (scr_index == i) {
- /*
- * Hook in our ScrnInfoRec, and initialise some other pScreen
- * fields.
- */
- screenInfo.screens[scr_index]->devPrivates[xf86ScreenIndex].ptr
- = (pointer)xf86Screens[i];
- xf86Screens[i]->pScreen = screenInfo.screens[scr_index];
- /* The driver should set this, but make sure it is set anyway */
- xf86Screens[i]->vtSema = TRUE;
- } else {
- /* This shouldn't normally happen */
- FatalError("AddScreen/ScreenInit failed for driver %d\n", i);
- }
-
-#ifdef DEBUG
- ErrorF("InitOutput - xf86Screens[%d]->pScreen = %p\n",
- i, xf86Screens[i]->pScreen );
- ErrorF("xf86Screens[%d]->pScreen->CreateWindow = %p\n",
- i, xf86Screens[i]->pScreen->CreateWindow );
-#endif
-
- screenInfo.screens[scr_index]->devPrivates[xf86CreateRootWindowIndex].ptr
- = (void*)(xf86Screens[i]->pScreen->CreateWindow);
- xf86Screens[i]->pScreen->CreateWindow = xf86CreateRootWindow;
-
-#ifdef RENDER
- if (PictureGetSubpixelOrder (xf86Screens[i]->pScreen) == SubPixelUnknown)
- {
- xf86MonPtr DDC = (xf86MonPtr)(xf86Screens[i]->monitor->DDC);
- PictureSetSubpixelOrder (xf86Screens[i]->pScreen,
- DDC ?
- (DDC->features.input_type ?
- SubPixelHorizontalRGB : SubPixelNone) :
- SubPixelUnknown);
- }
-#endif
-#ifdef RANDR
- if (!xf86Info.disableRandR)
- xf86RandRInit (screenInfo.screens[scr_index]);
- xf86Msg(xf86Info.randRFrom, "RandR %s\n",
- xf86Info.disableRandR ? "disabled" : "enabled");
-#endif
-#ifdef NOT_USED
- /*
- * Here we have to let the driver getting access of the VT. Note that
- * this doesn't mean that the graphics board may access automatically
- * the monitor. If the monitor is shared this is done in xf86CrossScreen!
- */
- if (!xf86Info.sharedMonitor) (xf86Screens[i]->EnterLeaveMonitor)(ENTER);
-#endif
- }
-
-#ifdef XFree86LOADER
- if ((serverGeneration == 1) && LoaderCheckUnresolved(LD_RESOLV_IFDONE)) {
- /* For now, just a warning */
- xf86Msg(X_WARNING, "Some symbols could not be resolved!\n");
- }
-#endif
-
- xf86PostScreenInit();
-
- xf86InitOrigins();
-
- xf86Resetting = FALSE;
- xf86Initialising = FALSE;
-
- RegisterBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA, xf86Wakeup,
- NULL);
-}
-
-
-static InputDriverPtr
-MatchInput(IDevPtr pDev)
-{
- int i;
-
- for (i = 0; i < xf86NumInputDrivers; i++) {
- if (xf86InputDriverList[i] && xf86InputDriverList[i]->driverName &&
- xf86NameCmp(pDev->driver, xf86InputDriverList[i]->driverName) == 0)
- return xf86InputDriverList[i];
- }
- return NULL;
-}
-
-
-/*
- * InitInput --
- * Initialize all supported input devices.
- */
-
-void
-InitInput(argc, argv)
- int argc;
- char **argv;
-{
- IDevPtr pDev;
- InputDriverPtr pDrv;
- InputInfoPtr pInfo;
- static InputInfoPtr coreKeyboard = NULL, corePointer = NULL;
-
- xf86Info.vtRequestsPending = FALSE;
- xf86Info.inputPending = FALSE;
-#ifdef XTESTEXT1
- xtest_command_key = KEY_Begin + MIN_KEYCODE;
-#endif /* XTESTEXT1 */
-
- if (serverGeneration == 1) {
- /* Call the PreInit function for each input device instance. */
- for (pDev = xf86ConfigLayout.inputs; pDev && pDev->identifier; pDev++) {
-#ifdef USE_DEPRECATED_KEYBOARD_DRIVER
- /* XXX The keyboard driver is a special case for now. */
- if (!xf86NameCmp(pDev->driver, "keyboard")) {
- xf86MsgVerb(X_WARNING, 0, "*** WARNING the legacy keyboard driver \"keyboard\" is deprecated\n");
- xf86MsgVerb(X_WARNING, 0, "*** and will be removed in the next release of the Xorg server.\n");
- xf86MsgVerb(X_WARNING, 0, "*** Please consider using the the new \"kbd\" driver for \"%s\".\n",
- pDev->identifier);
-
- continue;
- }
-#endif
-
- if ((pDrv = MatchInput(pDev)) == NULL) {
- xf86Msg(X_ERROR, "No Input driver matching `%s'\n", pDev->driver);
- /* XXX For now, just continue. */
- continue;
- }
- if (!pDrv->PreInit) {
- xf86MsgVerb(X_WARNING, 0,
- "Input driver `%s' has no PreInit function (ignoring)\n",
- pDrv->driverName);
- continue;
- }
- pInfo = pDrv->PreInit(pDrv, pDev, 0);
- if (!pInfo) {
- xf86Msg(X_ERROR, "PreInit returned NULL for \"%s\"\n",
- pDev->identifier);
- continue;
- } else if (!(pInfo->flags & XI86_CONFIGURED)) {
- xf86Msg(X_ERROR, "PreInit failed for input device \"%s\"\n",
- pDev->identifier);
- xf86DeleteInput(pInfo, 0);
- continue;
- }
- if (pInfo->flags & XI86_CORE_KEYBOARD) {
- if (coreKeyboard) {
- xf86Msg(X_ERROR,
- "Attempt to register more than one core keyboard (%s)\n",
- pInfo->name);
- pInfo->flags &= ~XI86_CORE_KEYBOARD;
- } else {
- if (!(pInfo->flags & XI86_KEYBOARD_CAPABLE)) {
- /* XXX just a warning for now */
- xf86Msg(X_WARNING,
- "%s: does not have core keyboard capabilities\n",
- pInfo->name);
- }
- coreKeyboard = pInfo;
- }
- }
- if (pInfo->flags & XI86_CORE_POINTER) {
- if (corePointer) {
- xf86Msg(X_ERROR,
- "Attempt to register more than one core pointer (%s)\n",
- pInfo->name);
- pInfo->flags &= ~XI86_CORE_POINTER;
- } else {
- if (!(pInfo->flags & XI86_POINTER_CAPABLE)) {
- /* XXX just a warning for now */
- xf86Msg(X_WARNING,
- "%s: does not have core pointer capabilities\n",
- pInfo->name);
- }
- corePointer = pInfo;
- }
- }
- }
- if (!corePointer) {
- xf86Msg(X_WARNING, "No core pointer registered\n");
- /* XXX register a dummy core pointer */
- }
-#ifdef NEW_KBD
- if (!coreKeyboard) {
- xf86Msg(X_WARNING, "No core keyboard registered\n");
- /* XXX register a dummy core keyboard */
- }
-#endif
- }
-
- /* Initialise all input devices. */
- pInfo = xf86InputDevs;
- while (pInfo) {
- xf86ActivateDevice(pInfo);
- pInfo = pInfo->next;
- }
-
- if (coreKeyboard) {
- xf86Info.pKeyboard = coreKeyboard->dev;
- xf86Info.kbdEvents = NULL; /* to prevent the internal keybord driver usage*/
- }
- else {
-#ifdef USE_DEPRECATED_KEYBOARD_DRIVER
- /* Only set this if we're allowing the old driver. */
- if (xf86Info.kbdProc != NULL)
- xf86Info.pKeyboard = AddInputDevice(xf86Info.kbdProc, TRUE);
-#endif
- }
- if (corePointer)
- xf86Info.pMouse = corePointer->dev;
- if (xf86Info.pKeyboard)
- RegisterKeyboardDevice(xf86Info.pKeyboard);
-
- miRegisterPointerDevice(screenInfo.screens[0], xf86Info.pMouse);
-#ifdef XINPUT
- xf86eqInit ((DevicePtr)xf86Info.pKeyboard, (DevicePtr)xf86Info.pMouse);
-#else
- mieqInit ((DevicePtr)xf86Info.pKeyboard, (DevicePtr)xf86Info.pMouse);
-#endif
-}
-
-#ifndef SET_STDERR_NONBLOCKING
-#define SET_STDERR_NONBLOCKING 1
-#endif
-
-/*
- * OsVendorInit --
- * OS/Vendor-specific initialisations. Called from OsInit(), which
- * is called by dix before establishing the well known sockets.
- */
-
-void
-OsVendorInit()
-{
- static Bool beenHere = FALSE;
-
- /* xf86WrapperInit() is called directly from OsInit() */
-#ifdef SIGCHLD
- signal(SIGCHLD, SIG_DFL); /* Need to wait for child processes */
-#endif
- OsDelayInitColors = TRUE;
-#ifdef XFree86LOADER
- loadableFonts = TRUE;
-#endif
-
- if (!beenHere)
- xf86LogInit();
-
-#if SET_STDERR_NONBLOCKING
- /* Set stderr to non-blocking. */
-#ifndef O_NONBLOCK
-#if defined(FNDELAY)
-#define O_NONBLOCK FNDELAY
-#elif defined(O_NDELAY)
-#define O_NONBLOCK O_NDELAY
-#endif
-#endif
-
-#ifdef O_NONBLOCK
- if (!beenHere) {
-#if !defined(__EMX__)
- if (geteuid() == 0 && getuid() != geteuid())
-#endif
- {
- int status;
-
- status = fcntl(fileno(stderr), F_GETFL, 0);
- if (status != -1) {
- fcntl(fileno(stderr), F_SETFL, status | O_NONBLOCK);
- }
- }
- }
-#endif
-#endif
-
- beenHere = TRUE;
-}
-
-/*
- * ddxGiveUp --
- * Device dependent cleanup. Called by by dix before normal server death.
- * For SYSV386 we must switch the terminal back to normal mode. No error-
- * checking here, since there should be restored as much as possible.
- */
-
-void
-ddxGiveUp()
-{
- int i;
-
-#ifdef XF86PM
- if (xf86OSPMClose)
- xf86OSPMClose();
- xf86OSPMClose = NULL;
-#endif
-
- xf86AccessLeaveState();
-
- for (i = 0; i < xf86NumScreens; i++) {
- /*
- * zero all access functions to
- * trap calls when switched away.
- */
- xf86Screens[i]->vtSema = FALSE;
- xf86Screens[i]->access = NULL;
- xf86Screens[i]->busAccess = NULL;
- }
-
-#ifdef USE_XF86_SERVERLOCK
- xf86UnlockServer();
-#endif
-#ifdef XFreeXDGA
- DGAShutdown();
-#endif
-
- xf86CloseConsole();
-
- xf86CloseLog();
-
- /* If an unexpected signal was caught, dump a core for debugging */
- if (xf86Info.caughtSignal)
- abort();
-}
-
-
-
-/*
- * AbortDDX --
- * DDX - specific abort routine. Called by AbortServer(). The attempt is
- * made to restore all original setting of the displays. Also all devices
- * are closed.
- */
-
-void
-AbortDDX()
-{
- int i;
-
- /*
- * try to deinitialize all input devices
- */
- if (xf86Info.kbdProc && xf86Info.pKeyboard)
- (xf86Info.kbdProc)(xf86Info.pKeyboard, DEVICE_CLOSE);
-
- /*
- * try to restore the original video state
- */
-#ifdef HAS_USL_VTS
- /* Need the sleep when starting X from within another X session */
- sleep(1);
-#endif
-#ifdef DPMSExtension /* Turn screens back on */
- if (DPMSPowerLevel != DPMSModeOn)
- DPMSSet(DPMSModeOn);
-#endif
- if (xf86Screens) {
- if (xf86Screens[0]->vtSema)
- xf86EnterServerState(SETUP);
- for (i = 0; i < xf86NumScreens; i++)
- if (xf86Screens[i]->vtSema) {
- /*
- * if we are aborting before ScreenInit() has finished
- * we might not have been wrapped yet. Therefore enable
- * screen explicitely.
- */
- xf86EnableAccess(xf86Screens[i]);
- (xf86Screens[i]->LeaveVT)(i, 0);
- }
- }
-
- xf86AccessLeave();
-
- /*
- * This is needed for an abnormal server exit, since the normal exit stuff
- * MUST also be performed (i.e. the vt must be left in a defined state)
- */
- ddxGiveUp();
-}
-
-void
-OsVendorFatalError()
-{
-#ifdef VENDORSUPPORT
- ErrorF("\nPlease refer to your Operating System Vendor support pages\n"
- "at %s for support on this crash.\n",VENDORSUPPORT);
-#else
- ErrorF("\nPlease consult the "XVENDORNAME" support \n"
- "\t at "__VENDORDWEBSUPPORT__"\n for help. \n");
-#endif
- if (xf86LogFile && xf86LogFileWasOpened)
- ErrorF("Please also check the log file at \"%s\" for additional "
- "information.\n", xf86LogFile);
- ErrorF("\n");
-}
-
-int
-xf86SetVerbosity(int verb)
-{
- int save = xf86Verbose;
-
- xf86Verbose = verb;
- LogSetParameter(XLOG_VERBOSITY, verb);
- return save;
-}
-
-int
-xf86SetLogVerbosity(int verb)
-{
- int save = xf86LogVerbose;
-
- xf86LogVerbose = verb;
- LogSetParameter(XLOG_FILE_VERBOSITY, verb);
- return save;
-}
-
-/*
- * ddxProcessArgument --
- * Process device-dependent command line args. Returns 0 if argument is
- * not device dependent, otherwise Count of number of elements of argv
- * that are part of a device dependent commandline option.
- *
- */
-
-
-
-/* ARGSUSED */
-int
-ddxProcessArgument(int argc, char **argv, int i)
-{
- /*
- * Note: can't use xalloc/xfree here because OsInit() hasn't been called
- * yet. Use malloc/free instead.
- */
-
-#define CHECK_FOR_REQUIRED_ARGUMENT() \
- if (((i + 1) >= argc) || (!argv[i + 1])) { \
- ErrorF("Required argument to %s not specified\n", argv[i]); \
- UseMsg(); \
- FatalError("Required argument to %s not specified\n", argv[i]); \
- }
-
- /* First the options that are only allowed for root */
- if (getuid() == 0 || geteuid() != 0)
- {
- if (!strcmp(argv[i], "-modulepath"))
- {
- char *mp;
- CHECK_FOR_REQUIRED_ARGUMENT();
- mp = malloc(strlen(argv[i + 1]) + 1);
- if (!mp)
- FatalError("Can't allocate memory for ModulePath\n");
- strcpy(mp, argv[i + 1]);
- xf86ModulePath = mp;
- xf86ModPathFrom = X_CMDLINE;
- return 2;
- }
- else if (!strcmp(argv[i], "-logfile"))
- {
- char *lf;
- CHECK_FOR_REQUIRED_ARGUMENT();
- lf = malloc(strlen(argv[i + 1]) + 1);
- if (!lf)
- FatalError("Can't allocate memory for LogFile\n");
- strcpy(lf, argv[i + 1]);
- xf86LogFile = lf;
- xf86LogFileFrom = X_CMDLINE;
- return 2;
- }
- } else if (!strcmp(argv[i], "-modulepath") || !strcmp(argv[i], "-logfile")) {
- FatalError("The '%s' option can only be used by root.\n", argv[i]);
- }
- if (!strcmp(argv[i], "-config") || !strcmp(argv[i], "-xf86config"))
- {
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (getuid() != 0 && !xf86PathIsSafe(argv[i + 1])) {
- FatalError("\nInvalid argument for %s\n"
- "\tFor non-root users, the file specified with %s must be\n"
- "\ta relative path and must not contain any \"..\" elements.\n"
- "\tUsing default "__XCONFIGFILE__" search path.\n\n",
- argv[i], argv[i]);
- }
- xf86ConfigFile = argv[i + 1];
- return 2;
- }
- if (!strcmp(argv[i],"-showunresolved"))
- {
- xf86ShowUnresolved = TRUE;
- return 1;
- }
- if (!strcmp(argv[i],"-probeonly"))
- {
- xf86ProbeOnly = TRUE;
- return 1;
- }
- if (!strcmp(argv[i],"-flipPixels"))
- {
- xf86FlipPixels = TRUE;
- return 1;
- }
-#ifdef XF86VIDMODE
- if (!strcmp(argv[i],"-disableVidMode"))
- {
- xf86VidModeDisabled = TRUE;
- return 1;
- }
- if (!strcmp(argv[i],"-allowNonLocalXvidtune"))
- {
- xf86VidModeAllowNonLocal = TRUE;
- return 1;
- }
-#endif
-#ifdef XF86MISC
- if (!strcmp(argv[i],"-disableModInDev"))
- {
- xf86MiscModInDevDisabled = TRUE;
- return 1;
- }
- if (!strcmp(argv[i],"-allowNonLocalModInDev"))
- {
- xf86MiscModInDevAllowNonLocal = TRUE;
- return 1;
- }
-#endif
- if (!strcmp(argv[i],"-allowMouseOpenFail"))
- {
- xf86AllowMouseOpenFail = TRUE;
- return 1;
- }
- if (!strcmp(argv[i],"-bestRefresh"))
- {
- xf86BestRefresh = TRUE;
- return 1;
- }
- if (!strcmp(argv[i],"-ignoreABI"))
- {
-#ifdef XFree86LOADER
- LoaderSetOptions(LDR_OPT_ABI_MISMATCH_NONFATAL);
-#endif
- return 1;
- }
- if (!strcmp(argv[i],"-verbose"))
- {
- if (++i < argc && argv[i])
- {
- char *end;
- long val;
- val = strtol(argv[i], &end, 0);
- if (*end == '\0')
- {
- xf86SetVerbosity(val);
- return 2;
- }
- }
- xf86SetVerbosity(++xf86Verbose);
- return 1;
- }
- if (!strcmp(argv[i],"-logverbose"))
- {
- if (++i < argc && argv[i])
- {
- char *end;
- long val;
- val = strtol(argv[i], &end, 0);
- if (*end == '\0')
- {
- xf86SetLogVerbosity(val);
- return 2;
- }
- }
- xf86SetLogVerbosity(++xf86LogVerbose);
- return 1;
- }
- if (!strcmp(argv[i],"-quiet"))
- {
- xf86SetVerbosity(0);
- return 1;
- }
- if (!strcmp(argv[i],"-showconfig") || !strcmp(argv[i],"-version"))
- {
- xf86PrintBanner();
- exit(0);
- }
- /* Notice the -fp flag, but allow it to pass to the dix layer */
- if (!strcmp(argv[i], "-fp"))
- {
- xf86fpFlag = TRUE;
- return 0;
- }
- /* Notice the -co flag, but allow it to pass to the dix layer */
- if (!strcmp(argv[i], "-co"))
- {
- xf86coFlag = TRUE;
- return 0;
- }
- /* Notice the -bs flag, but allow it to pass to the dix layer */
- if (!strcmp(argv[i], "-bs"))
- {
- xf86bsDisableFlag = TRUE;
- return 0;
- }
- /* Notice the +bs flag, but allow it to pass to the dix layer */
- if (!strcmp(argv[i], "+bs"))
- {
- xf86bsEnableFlag = TRUE;
- return 0;
- }
- /* Notice the -s flag, but allow it to pass to the dix layer */
- if (!strcmp(argv[i], "-s"))
- {
- xf86sFlag = TRUE;
- return 0;
- }
- if (!strcmp(argv[i], "-bpp"))
- {
- ErrorF("The -bpp option is no longer supported.\n"
- "\tUse -depth to set the color depth, and use -fbbpp if you really\n"
- "\tneed to force a non-default framebuffer (hardware) pixel format.\n");
- if (++i >= argc)
- return 1;
- return 2;
- }
- if (!strcmp(argv[i], "-pixmap24"))
- {
- xf86Pix24 = Pix24Use24;
- return 1;
- }
- if (!strcmp(argv[i], "-pixmap32"))
- {
- xf86Pix24 = Pix24Use32;
- return 1;
- }
- if (!strcmp(argv[i], "-fbbpp"))
- {
- int bpp;
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (sscanf(argv[++i], "%d", &bpp) == 1)
- {
- xf86FbBpp = bpp;
- return 2;
- }
- else
- {
- ErrorF("Invalid fbbpp\n");
- return 0;
- }
- }
- if (!strcmp(argv[i], "-depth"))
- {
- int depth;
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (sscanf(argv[++i], "%d", &depth) == 1)
- {
- xf86Depth = depth;
- return 2;
- }
- else
- {
- ErrorF("Invalid depth\n");
- return 0;
- }
- }
- if (!strcmp(argv[i], "-weight"))
- {
- int red, green, blue;
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (sscanf(argv[++i], "%1d%1d%1d", &red, &green, &blue) == 3)
- {
- xf86Weight.red = red;
- xf86Weight.green = green;
- xf86Weight.blue = blue;
- return 2;
- }
- else
- {
- ErrorF("Invalid weighting\n");
- return 0;
- }
- }
- if (!strcmp(argv[i], "-gamma") || !strcmp(argv[i], "-rgamma") ||
- !strcmp(argv[i], "-ggamma") || !strcmp(argv[i], "-bgamma"))
- {
- double gamma;
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (sscanf(argv[++i], "%lf", &gamma) == 1) {
- if (gamma < GAMMA_MIN || gamma > GAMMA_MAX) {
- ErrorF("gamma out of range, only %.2f <= gamma_value <= %.1f"
- " is valid\n", GAMMA_MIN, GAMMA_MAX);
- return 0;
- }
- if (!strcmp(argv[i-1], "-gamma"))
- xf86Gamma.red = xf86Gamma.green = xf86Gamma.blue = gamma;
- else if (!strcmp(argv[i-1], "-rgamma")) xf86Gamma.red = gamma;
- else if (!strcmp(argv[i-1], "-ggamma")) xf86Gamma.green = gamma;
- else if (!strcmp(argv[i-1], "-bgamma")) xf86Gamma.blue = gamma;
- return 2;
- }
- }
- if (!strcmp(argv[i], "-layout"))
- {
- CHECK_FOR_REQUIRED_ARGUMENT();
- xf86LayoutName = argv[++i];
- return 2;
- }
- if (!strcmp(argv[i], "-screen"))
- {
- CHECK_FOR_REQUIRED_ARGUMENT();
- xf86ScreenName = argv[++i];
- return 2;
- }
- if (!strcmp(argv[i], "-pointer"))
- {
- CHECK_FOR_REQUIRED_ARGUMENT();
- xf86PointerName = argv[++i];
- return 2;
- }
- if (!strcmp(argv[i], "-keyboard"))
- {
- CHECK_FOR_REQUIRED_ARGUMENT();
- xf86KeyboardName = argv[++i];
- return 2;
- }
- if (!strcmp(argv[i], "-nosilk"))
- {
- xf86silkenMouseDisableFlag = TRUE;
- return 1;
- }
- if (!strcmp(argv[i], "-noacpi"))
- {
- xf86acpiDisableFlag = TRUE;
- return 1;
- }
- if (!strcmp(argv[i], "-scanpci"))
- {
- DoScanPci(argc, argv, i);
- }
- if (!strcmp(argv[i], "-probe"))
- {
- xf86DoProbe = TRUE;
-#if 0
- DoProbe(argc, argv, i);
-#endif
- return 1;
- }
- if (!strcmp(argv[i], "-configure"))
- {
- if (getuid() != 0 && geteuid() == 0) {
- ErrorF("The '-configure' option can only be used by root.\n");
- exit(1);
- }
- xf86DoConfigure = TRUE;
- xf86AllowMouseOpenFail = TRUE;
- return 1;
- }
- if (!strcmp(argv[i], "-isolateDevice"))
- {
- int bus, device, func;
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (strncmp(argv[++i], "PCI:", 4)) {
- FatalError("Bus types other than PCI not yet isolable\n");
- }
- if (sscanf(argv[i], "PCI:%d:%d:%d", &bus, &device, &func) == 3) {
- xf86IsolateDevice.bus = bus;
- xf86IsolateDevice.device = device;
- xf86IsolateDevice.func = func;
- return 2;
- } else {
- FatalError("Invalid isolated device specification\n");
- }
- }
- /* OS-specific processing */
- return xf86ProcessArgument(argc, argv, i);
-}
-
-/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
-void ddxInitGlobals(void)
-{
-}
-
-/*
- * ddxUseMsg --
- * Print out correct use of device dependent commandline options.
- * Maybe the user now knows what really to do ...
- */
-
-void
-ddxUseMsg()
-{
- ErrorF("\n");
- ErrorF("\n");
- ErrorF("Device Dependent Usage\n");
- if (getuid() == 0 || geteuid() != 0)
- {
- ErrorF("-modulepath paths specify the module search path\n");
- ErrorF("-logfile file specify a log file name\n");
- ErrorF("-configure probe for devices and write an "__XCONFIGFILE__"\n");
- }
- ErrorF("-config file specify a configuration file, relative to the\n");
- ErrorF(" "__XCONFIGFILE__" search path, only root can use absolute\n");
- ErrorF("-probeonly probe for devices, then exit\n");
- ErrorF("-scanpci execute the scanpci module and exit\n");
- ErrorF("-verbose [n] verbose startup messages\n");
- ErrorF("-logverbose [n] verbose log messages\n");
- ErrorF("-quiet minimal startup messages\n");
- ErrorF("-pixmap24 use 24bpp pixmaps for depth 24\n");
- ErrorF("-pixmap32 use 32bpp pixmaps for depth 24\n");
- ErrorF("-fbbpp n set bpp for the framebuffer. Default: 8\n");
- ErrorF("-depth n set colour depth. Default: 8\n");
- ErrorF("-gamma f set gamma value (0.1 < f < 10.0) Default: 1.0\n");
- ErrorF("-rgamma f set gamma value for red phase\n");
- ErrorF("-ggamma f set gamma value for green phase\n");
- ErrorF("-bgamma f set gamma value for blue phase\n");
- ErrorF("-weight nnn set RGB weighting at 16 bpp. Default: 565\n");
- ErrorF("-layout name specify the ServerLayout section name\n");
- ErrorF("-screen name specify the Screen section name\n");
- ErrorF("-keyboard name specify the core keyboard InputDevice name\n");
- ErrorF("-pointer name specify the core pointer InputDevice name\n");
- ErrorF("-nosilk disable Silken Mouse\n");
- ErrorF("-flipPixels swap default black/white Pixel values\n");
-#ifdef XF86VIDMODE
- ErrorF("-disableVidMode disable mode adjustments with xvidtune\n");
- ErrorF("-allowNonLocalXvidtune allow xvidtune to be run as a non-local client\n");
-#endif
-#ifdef XF86MISC
- ErrorF("-disableModInDev disable dynamic modification of input device settings\n");
- ErrorF("-allowNonLocalModInDev allow changes to keyboard and mouse settings\n");
- ErrorF(" from non-local clients\n");
- ErrorF("-allowMouseOpenFail start server even if the mouse can't be initialized\n");
-#endif
- ErrorF("-bestRefresh choose modes with the best refresh rate\n");
- ErrorF("-ignoreABI make module ABI mismatches non-fatal\n");
- ErrorF("-isolateDevice bus_id restrict device resets to bus_id (PCI only)\n");
- ErrorF("-version show the server version\n");
- /* OS-specific usage */
- xf86UseMsg();
- ErrorF("\n");
-}
-
-
-#ifndef OSNAME
-#define OSNAME " unknown"
-#endif
-#ifndef OSVENDOR
-#define OSVENDOR ""
-#endif
-#ifndef PRE_RELEASE
-#define PRE_RELEASE XORG_VERSION_SNAP
-#endif
-
-static void
-xf86PrintBanner()
-{
-#if PRE_RELEASE
- ErrorF("\n"
- "This is a pre-release version of the X server from " XVENDORNAME ".\n"
- "It is not supported in any way.\n"
- "Bugs may be filed in the bugzilla at http://bugs.freedesktop.org/.\n"
- "Select the \"xorg\" product for bugs you find in this release.\n"
- "Before reporting bugs in pre-release versions please check the\n"
- "latest version in the X.Org Foundation CVS repository.\n"
- "See http://wiki.x.org/wiki/CvsPage for CVS access instructions.\n");
-#endif
- ErrorF("\nX Window System Version %d.%d.%d",
- XORG_VERSION_MAJOR,
- XORG_VERSION_MINOR,
- XORG_VERSION_PATCH);
-#if XORG_VERSION_SNAP > 0
- ErrorF(".%d", XORG_VERSION_SNAP);
-#endif
-
-#if XORG_VERSION_SNAP >= 900
- /* When the minor number is 99, that signifies that the we are making
- * a release candidate for a major version. (X.0.0)
- * When the patch number is 99, that signifies that the we are making
- * a release candidate for a minor version. (X.Y.0)
- * When the patch number is < 99, then we are making a release
- * candidate for the next point release. (X.Y.Z)
- */
-#if XORG_VERSION_MINOR >= 99
- ErrorF(" (%d.0.0 RC %d)", XORG_VERSION_MAJOR+1, XORG_VERSION_SNAP - 900);
-#elif XORG_VERSION_PATCH == 99
- ErrorF(" (%d.%d.0 RC %d)", XORG_VERSION_MAJOR, XORG_VERSION_MINOR + 1,
- XORG_VERSION_SNAP - 900);
-#else
- ErrorF(" (%d.%d.%d RC %d)", XORG_VERSION_MAJOR, XORG_VERSION_MINOR,
- XORG_VERSION_PATCH + 1, XORG_VERSION_SNAP - 900);
-#endif
-#endif
-
-#ifdef XORG_CUSTOM_VERSION
- ErrorF(" (%s)", XORG_CUSTOM_VERSION);
-#endif
-#ifndef XORG_DATE
-#define XORG_DATE XF86_DATE
-#endif
- ErrorF("\nRelease Date: %s\n", XORG_DATE);
- ErrorF("X Protocol Version %d, Revision %d, %s\n",
- X_PROTOCOL, X_PROTOCOL_REVISION, XORG_RELEASE );
- ErrorF("Build Operating System:%s%s\n", OSNAME, OSVENDOR);
-#ifdef HAS_UTSNAME
- {
- struct utsname name;
-
- /* Linux & BSD state that 0 is success, SysV (including Solaris, HP-UX,
- and Irix) and Single Unix Spec 3 just say that non-negative is success.
- All agree that failure is represented by a negative number.
- */
- if (uname(&name) >= 0) {
- ErrorF("Current Operating System: %s %s %s %s %s\n",
- name.sysname, name.nodename, name.release, name.version, name.machine);
- }
- }
-#endif
-#if defined(BUILD_DATE) && (BUILD_DATE > 19000000)
- {
- struct tm t;
- char buf[100];
-
- bzero(&t, sizeof(t));
- bzero(buf, sizeof(buf));
- t.tm_mday = BUILD_DATE % 100;
- t.tm_mon = (BUILD_DATE / 100) % 100 - 1;
- t.tm_year = BUILD_DATE / 10000 - 1900;
- if (strftime(buf, sizeof(buf), "%d %B %Y", &t))
- ErrorF("Build Date: %s\n", buf);
- }
-#endif
-#if defined(CLOG_DATE) && (CLOG_DATE > 19000000)
- {
- struct tm t;
- char buf[100];
-
- bzero(&t, sizeof(t));
- bzero(buf, sizeof(buf));
- t.tm_mday = CLOG_DATE % 100;
- t.tm_mon = (CLOG_DATE / 100) % 100 - 1;
- t.tm_year = CLOG_DATE / 10000 - 1900;
- if (strftime(buf, sizeof(buf), "%d %B %Y", &t))
- ErrorF("Changelog Date: %s\n", buf);
- }
-#endif
-#if defined(BUILDERSTRING)
- ErrorF("%s \n",BUILDERSTRING);
-#endif
- ErrorF("\tBefore reporting problems, check "__VENDORDWEBSUPPORT__"\n"
- "\tto make sure that you have the latest version.\n");
-#ifdef XFree86LOADER
- ErrorF("Module Loader present\n");
-#endif
-}
-
-static void
-xf86PrintMarkers()
-{
- LogPrintMarkers();
-}
-
-static void
-xf86RunVtInit(void)
-{
- int i;
-
- /*
- * If VTInit was set, run that program with consoleFd as stdin and stdout
- */
-
- if (xf86Info.vtinit) {
- switch(fork()) {
- case -1:
- FatalError("xf86RunVtInit: fork failed (%s)\n", strerror(errno));
- break;
- case 0: /* child */
- if (setuid(getuid()) == -1) {
- xf86Msg(X_ERROR, "xf86RunVtInit: setuid failed (%s)\n",
- strerror(errno));
- exit(255);
- }
- /* set stdin, stdout to the consoleFd */
- for (i = 0; i < 2; i++) {
- if (xf86Info.consoleFd != i) {
- close(i);
- dup(xf86Info.consoleFd);
- }
- }
- execl("/bin/sh", "sh", "-c", xf86Info.vtinit, (void *)NULL);
- xf86Msg(X_WARNING, "exec of /bin/sh failed for VTInit (%s)\n",
- strerror(errno));
- exit(255);
- break;
- default: /* parent */
- wait(NULL);
- }
- }
-}
-
-#ifdef XFree86LOADER
-/*
- * xf86LoadModules iterates over a list that is being passed in.
- */
-Bool
-xf86LoadModules(char **list, pointer *optlist)
-{
- int errmaj, errmin;
- pointer opt;
- int i;
- char *name;
- Bool failed = FALSE;
-
- if (!list)
- return TRUE;
-
- for (i = 0; list[i] != NULL; i++) {
-
-#ifndef NORMALISE_MODULE_NAME
- name = xstrdup(list[i]);
-#else
- /* Normalise the module name */
- name = xf86NormalizeName(list[i]);
-#endif
-
- /* Skip empty names */
- if (name == NULL || *name == '\0')
- continue;
-
- if (optlist)
- opt = optlist[i];
- else
- opt = NULL;
-
- if (!LoadModule(name, NULL, NULL, NULL, opt, NULL, &errmaj, &errmin)) {
- LoaderErrorMsg(NULL, name, errmaj, errmin);
- failed = TRUE;
- }
- xfree(name);
- }
- return !failed;
-}
-
-#endif
-
-/* Pixmap format stuff */
-
-PixmapFormatPtr
-xf86GetPixFormat(ScrnInfoPtr pScrn, int depth)
-{
- int i;
- static PixmapFormatRec format; /* XXX not reentrant */
-
- /*
- * When the formats[] list initialisation isn't complete, check the
- * depth 24 pixmap config/cmdline options and screen-specified formats.
- */
-
- if (!formatsDone) {
- if (depth == 24) {
- Pix24Flags pix24 = Pix24DontCare;
-
- format.depth = 24;
- format.scanlinePad = BITMAP_SCANLINE_PAD;
- if (xf86Info.pixmap24 != Pix24DontCare)
- pix24 = xf86Info.pixmap24;
- else if (pScrn->pixmap24 != Pix24DontCare)
- pix24 = pScrn->pixmap24;
- if (pix24 == Pix24Use24)
- format.bitsPerPixel = 24;
- else
- format.bitsPerPixel = 32;
- return &format;
- }
- }
-
- for (i = 0; i < numFormats; i++)
- if (formats[i].depth == depth)
- break;
- if (i != numFormats)
- return &formats[i];
- else if (!formatsDone) {
- /* Check for screen-specified formats */
- for (i = 0; i < pScrn->numFormats; i++)
- if (pScrn->formats[i].depth == depth)
- break;
- if (i != pScrn->numFormats)
- return &pScrn->formats[i];
- }
- return NULL;
-}
-
-int
-xf86GetBppFromDepth(ScrnInfoPtr pScrn, int depth)
-{
- PixmapFormatPtr format;
-
-
- format = xf86GetPixFormat(pScrn, depth);
- if (format)
- return format->bitsPerPixel;
- else
- return 0;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Io.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Io.c
deleted file mode 100644
index ef0fddf99..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Io.c
+++ /dev/null
@@ -1,507 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Io.c,v 3.56 2003/11/03 05:11:02 tsi Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- *
- * 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, and that the name of Thomas Roell not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Roell makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/*
- * Copyright (c) 1992-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* $XConsortium: xf86Io.c /main/27 1996/10/19 17:58:55 kaleb $ */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86Io.c,v 1.5 2005/07/03 07:01:24 daniels Exp $ */
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "inputstr.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#define XF86_OS_PRIVS
-#include "xf86_OSlib.h"
-#include "mipointer.h"
-
-#ifdef XINPUT
-#include "xf86Xinput.h"
-#include <X11/extensions/XIproto.h>
-#include "exevents.h"
-#endif
-
-#ifdef XKB
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
-#include <X11/extensions/XKBsrv.h>
-#endif
-
-unsigned int xf86InitialCaps = 0;
-unsigned int xf86InitialNum = 0;
-unsigned int xf86InitialScroll = 0;
-
-#include "atKeynames.h"
-
-/*
- * xf86KbdBell --
- * Ring the terminal/keyboard bell for an amount of time proportional to
- * "loudness".
- */
-
-void
-xf86KbdBell(percent, pKeyboard, ctrl, unused)
- int percent; /* Percentage of full volume */
- DeviceIntPtr pKeyboard; /* Keyboard to ring */
- pointer ctrl;
- int unused;
-{
- xf86SoundKbdBell(percent, xf86Info.bell_pitch, xf86Info.bell_duration);
-}
-
-void
-xf86UpdateKbdLeds()
-{
- int leds = 0;
- if (xf86Info.capsLock) leds |= XLED1;
- if (xf86Info.numLock) leds |= XLED2;
- if (xf86Info.scrollLock || xf86Info.modeSwitchLock) leds |= XLED3;
- if (xf86Info.composeLock) leds |= XLED4;
- xf86Info.leds = (xf86Info.leds & xf86Info.xleds) | (leds & ~xf86Info.xleds);
- xf86KbdLeds();
-}
-
-void
-xf86KbdLeds ()
-{
- int leds, real_leds = 0;
-
-#if defined (__sparc__) && defined(__linux__)
- static int kbdSun = -1;
- if (kbdSun == -1) {
- if ((xf86Info.xkbmodel && !strcmp(xf86Info.xkbmodel, "sun")) ||
- (xf86Info.xkbrules && !strcmp(xf86Info.xkbrules, "sun")))
- kbdSun = 1;
- else
- kbdSun = 0;
- }
- if (kbdSun) {
- if (xf86Info.leds & 0x08) real_leds |= XLED1;
- if (xf86Info.leds & 0x04) real_leds |= XLED3;
- if (xf86Info.leds & 0x02) real_leds |= XLED4;
- if (xf86Info.leds & 0x01) real_leds |= XLED2;
- leds = real_leds;
- real_leds = 0;
- } else {
- leds = xf86Info.leds;
- }
-#else
- leds = xf86Info.leds;
-#endif /* defined (__sparc__) */
-
-#ifdef LED_CAP
- if (leds & XLED1) real_leds |= LED_CAP;
- if (leds & XLED2) real_leds |= LED_NUM;
- if (leds & XLED3) real_leds |= LED_SCR;
-#ifdef LED_COMP
- if (leds & XLED4) real_leds |= LED_COMP;
-#else
- if (leds & XLED4) real_leds |= LED_SCR;
-#endif
-#endif
-#ifdef sun
- /* Pass through any additional LEDs, such as Kana LED on Sun Japanese kbd */
- real_leds |= (leds & 0xFFFFFFF0);
-#endif
- xf86SetKbdLeds(real_leds);
- (void)leds;
-}
-
-/*
- * xf86KbdCtrl --
- * Alter some of the keyboard control parameters. All special protocol
- * values are handled by dix (ProgChangeKeyboardControl)
- */
-
-void
-xf86KbdCtrl (pKeyboard, ctrl)
- DevicePtr pKeyboard; /* Keyboard to alter */
- KeybdCtrl *ctrl;
-{
- int leds;
- xf86Info.bell_pitch = ctrl->bell_pitch;
- xf86Info.bell_duration = ctrl->bell_duration;
- xf86Info.autoRepeat = ctrl->autoRepeat;
-
- xf86Info.composeLock = (ctrl->leds & XCOMP) ? TRUE : FALSE;
-
- leds = (ctrl->leds & ~(XCAPS | XNUM | XSCR));
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- xf86Info.leds = (leds & xf86Info.xleds)|(xf86Info.leds & ~xf86Info.xleds);
-#ifdef XKB
- } else {
- xf86Info.leds = leds;
- }
-#endif
-
- xf86KbdLeds();
-}
-
-/*
- * xf86InitKBD --
- * Reinitialize the keyboard. Only set Lockkeys according to ours leds.
- * Depress all other keys.
- */
-
-void
-xf86InitKBD(init)
-Bool init;
-{
- char leds = 0, rad;
- unsigned int i;
- xEvent kevent;
- DeviceIntPtr pKeyboard = xf86Info.pKeyboard;
- KeyClassRec *keyc = xf86Info.pKeyboard->key;
- KeySym *map = keyc->curKeySyms.map;
-
- kevent.u.keyButtonPointer.time = GetTimeInMillis();
- kevent.u.keyButtonPointer.rootX = 0;
- kevent.u.keyButtonPointer.rootY = 0;
-
- /*
- * Hmm... here is the biggest hack of every time !
- * It may be possible that a switch-vt procedure has finished BEFORE
- * you released all keys neccessary to do this. That peculiar behavior
- * can fool the X-server pretty much, cause it assumes that some keys
- * were not released. TWM may stuck alsmost completly....
- * OK, what we are doing here is after returning from the vt-switch
- * exeplicitely unrelease all keyboard keys before the input-devices
- * are reenabled.
- */
- for (i = keyc->curKeySyms.minKeyCode, map = keyc->curKeySyms.map;
- i < keyc->curKeySyms.maxKeyCode;
- i++, map += keyc->curKeySyms.mapWidth)
- if (KeyPressed(i))
- {
- switch (*map) {
- /* Don't release the lock keys */
- case XK_Caps_Lock:
- case XK_Shift_Lock:
- case XK_Num_Lock:
- case XK_Scroll_Lock:
- case XK_Kana_Lock:
- break;
- default:
- kevent.u.u.detail = i;
- kevent.u.u.type = KeyRelease;
- (* pKeyboard->public.processInputProc)(&kevent, pKeyboard, 1);
- }
- }
-
- xf86Info.scanPrefix = 0;
-
- if (init)
- {
- /*
- * we must deal here with the fact, that on some cases the numlock or
- * capslock key are enabled BEFORE the server is started up. So look
- * here at the state on the according LEDS to determine whether a
- * lock-key is already set.
- */
-
- xf86Info.capsLock = FALSE;
- xf86Info.numLock = FALSE;
- xf86Info.scrollLock = FALSE;
- xf86Info.modeSwitchLock = FALSE;
- xf86Info.composeLock = FALSE;
-
-#ifdef LED_CAP
-#ifdef INHERIT_LOCK_STATE
- leds = xf86Info.leds;
-
- for (i = keyc->curKeySyms.minKeyCode, map = keyc->curKeySyms.map;
- i < keyc->curKeySyms.maxKeyCode;
- i++, map += keyc->curKeySyms.mapWidth)
-
- switch(*map) {
-
- case XK_Caps_Lock:
- case XK_Shift_Lock:
- if (leds & LED_CAP)
- {
- xf86InitialCaps = i;
- xf86Info.capsLock = TRUE;
- }
- break;
-
- case XK_Num_Lock:
- if (leds & LED_NUM)
- {
- xf86InitialNum = i;
- xf86Info.numLock = TRUE;
- }
- break;
-
- case XK_Scroll_Lock:
- case XK_Kana_Lock:
- if (leds & LED_SCR)
- {
- xf86InitialScroll = i;
- xf86Info.scrollLock = TRUE;
- }
- break;
- }
-#endif /* INHERIT_LOCK_STATE */
- xf86SetKbdLeds(leds);
-#endif /* LED_CAP */
- (void)leds;
-
- if (xf86Info.kbdDelay <= 375) rad = 0x00;
- else if (xf86Info.kbdDelay <= 625) rad = 0x20;
- else if (xf86Info.kbdDelay <= 875) rad = 0x40;
- else rad = 0x60;
-
- if (xf86Info.kbdRate <= 2) rad |= 0x1F;
- else if (xf86Info.kbdRate >= 30) rad |= 0x00;
- else rad |= ((58 / xf86Info.kbdRate) - 2);
-
- xf86SetKbdRepeat(rad);
- }
-}
-
-/*
- * xf86KbdProc --
- * Handle the initialization, etc. of a keyboard.
- */
-
-int
-xf86KbdProc (pKeyboard, what)
- DeviceIntPtr pKeyboard; /* Keyboard to manipulate */
- int what; /* What to do to it */
-{
- KeySymsRec keySyms;
- CARD8 modMap[MAP_LENGTH];
- int kbdFd;
-
- switch (what) {
-
- case DEVICE_INIT:
- /*
- * First open and find the current state of the keyboard.
- */
-
- xf86KbdInit();
-
- xf86KbdGetMapping(&keySyms, modMap);
-
-
-#ifndef XKB
- defaultKeyboardControl.leds = xf86GetKbdLeds();
-#else
- defaultKeyboardControl.leds = 0;
-#endif
-
- /*
- * Perform final initialization of the system private keyboard
- * structure and fill in various slots in the device record
- * itself which couldn't be filled in before.
- */
-
- pKeyboard->public.on = FALSE;
-
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- InitKeyboardDeviceStruct((DevicePtr)xf86Info.pKeyboard,
- &keySyms,
- modMap,
- xf86KbdBell,
- (KbdCtrlProcPtr)xf86KbdCtrl);
-#ifdef XKB
- } else {
- XkbComponentNamesRec names;
- XkbDescPtr desc;
- Bool foundTerminate = FALSE;
- int keyc;
- if (XkbInitialMap) {
- if ((xf86Info.xkbkeymap = strchr(XkbInitialMap, '/')) != NULL)
- xf86Info.xkbkeymap++;
- else
- xf86Info.xkbkeymap = XkbInitialMap;
- }
- if (xf86Info.xkbkeymap) {
- names.keymap = xf86Info.xkbkeymap;
- names.keycodes = NULL;
- names.types = NULL;
- names.compat = NULL;
- names.symbols = NULL;
- names.geometry = NULL;
- } else {
- names.keymap = NULL;
- names.keycodes = xf86Info.xkbkeycodes;
- names.types = xf86Info.xkbtypes;
- names.compat = xf86Info.xkbcompat;
- names.symbols = xf86Info.xkbsymbols;
- names.geometry = xf86Info.xkbgeometry;
- }
- if ((xf86Info.xkbkeymap || xf86Info.xkbcomponents_specified)
- && (xf86Info.xkbmodel == NULL || xf86Info.xkblayout == NULL)) {
- xf86Info.xkbrules = NULL;
- }
- XkbSetRulesDflts(xf86Info.xkbrules, xf86Info.xkbmodel,
- xf86Info.xkblayout, xf86Info.xkbvariant,
- xf86Info.xkboptions);
-
- XkbInitKeyboardDeviceStruct(pKeyboard,
- &names,
- &keySyms,
- modMap,
- xf86KbdBell,
- (KbdCtrlProcPtr)xf86KbdCtrl);
-
- /* Search keymap for Terminate action */
- desc = pKeyboard->key->xkbInfo->desc;
- for (keyc = desc->min_key_code; keyc <= desc->max_key_code; keyc++) {
- int i;
- for (i = 1; i <= XkbKeyNumActions(desc, keyc); i++) {
- if (XkbKeyAction(desc, keyc, i)
- && XkbKeyAction(desc, keyc, i)->type == XkbSA_Terminate) {
- foundTerminate = TRUE;
- goto searchdone;
- }
- }
- }
-searchdone:
- xf86Info.ActionKeyBindingsSet = foundTerminate;
- if (!foundTerminate)
- xf86Msg(X_INFO, "Server_Terminate keybinding not found\n");
- }
-#endif
-
- xf86InitKBD(TRUE);
- break;
-
- case DEVICE_ON:
- /*
- * Set the keyboard into "direct" mode and turn on
- * event translation.
- */
-
- kbdFd = xf86KbdOn();
- /*
- * Discard any pending input after a VT switch to prevent the server
- * passing on parts of the VT switch sequence.
- */
- sleep(1);
-#if defined(WSCONS_SUPPORT)
- if (xf86Info.consType != WSCONS) {
-#endif
- if (kbdFd != -1) {
- char buf[16];
- read(kbdFd, buf, 16);
- }
-#if defined(WSCONS_SUPPORT)
- }
-#endif
-
-#if !defined(__UNIXOS2__) /* Under EMX, keyboard cannot be select()'ed */
- if (kbdFd != -1)
- AddEnabledDevice(kbdFd);
-#endif /* __UNIXOS2__ */
-
- pKeyboard->public.on = TRUE;
- xf86InitKBD(FALSE);
- break;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- /*
- * Restore original keyboard directness and translation.
- */
-
- kbdFd = xf86KbdOff();
-
- if (kbdFd != -1)
- RemoveEnabledDevice(kbdFd);
-
- pKeyboard->public.on = FALSE;
- break;
-
- }
- return (Success);
-}
-
-#if defined(DDXTIME) && !defined(QNX4)
-/*
- * These are getting tossed in here until I can think of where
- * they really belong
- */
-#define HALFMONTH ((unsigned long) 1<<31)
-CARD32
-GetTimeInMillis()
-{
- struct timeval tp;
- register CARD32 val;
- register INT32 diff;
- static CARD32 oldval = 0;
- static CARD32 time = 0;
-
- gettimeofday(&tp, 0);
- val = (tp.tv_sec * 1000) + (tp.tv_usec / 1000);
- if (oldval) {
- diff = val - oldval;
- if (diff > 0)
- time += diff;
- }
- oldval = val;
-
- return time;
-}
-#endif /* DDXTIME && !QNX4 */
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Kbd.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Kbd.c
deleted file mode 100644
index 85f9e3406..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Kbd.c
+++ /dev/null
@@ -1,395 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Kbd.c,v 3.26 2003/08/24 17:36:53 dawes Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- *
- * 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, and that the name of Thomas Roell not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Roell makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/*
- * Copyright (c) 1992-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* $XConsortium: xf86Kbd.c /main/10 1996/02/21 17:38:32 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef __UNIXOS2__
-#define I_NEED_OS2_H
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "atKeynames.h"
-#include "xf86Config.h"
-
-#include "xf86Keymap.h"
-
-#if defined(KDGKBTYPE) && \
- !defined(Lynx) && \
- !defined(__UNIXOS2__) && !defined(__mips__) && \
- !defined(__arm32__) && !defined(__GNU__) && !defined(__QNX__)
-#define HAS_GETKBTYPE
-#endif
-#if defined(GIO_KEYMAP) && \
- !defined(Lynx) && \
- !defined(__UNIXOS2__) && !defined(__mips__) && \
- !defined(__arm32__) && !defined(__GNU__) && !defined(DGUX) && \
- !defined(__QNX__)
-#define HAS_GETKEYMAP
-
-#define KD_GET_ENTRY(i,n) \
- eascii_to_x[((keymap.key[i].spcl << (n+1)) & 0x100) + keymap.key[i].map[n]]
-
-/*
- * NOTE: Not all possible remappable symbols are remapped. There are two main
- * reasons:
- * a) The mapping between scancode and SYSV/386 - symboltable
- * is inconsistent between different versions and has some
- * BIG mistakes.
- * b) In X-Windows there is a difference between numpad-keys
- * and normal keys. SYSV/386 uses for both kinds of keys
- * the same symbol.
- *
- * Thus only the alpha keypad and the function keys are translated.
- * Also CapsLock, NumLock, ScrollLock, Shift, Control & Alt.
- */
-
-static unsigned char remap[128] = {
- 0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00 - 0x07 */
- 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08 - 0x0f */
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10 - 0x17 */
- 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18 - 0x1f */
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20 - 0x27 */
- 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28 - 0x2f */
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0, /* 0x30 - 0x37 */
- 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38 - 0x3f */
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0, /* 0x40 - 0x47 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x48 - 0x4f */
- 0, 0, 0, 0, 0, 0, 0x56, 0x57, /* 0x50 - 0x57 */
- 0x58, 0, 0, 0, 0, 0, 0, 0, /* 0x58 - 0x5f */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 - 0x67 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x68 - 0x6f */
- 0, 0, 0x69, 0x65, 0, 0, 0, 0, /* 0x70 - 0x77 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x78 - 0x7f */
-};
-
-static KeySym eascii_to_x[512] = {
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
- NoSymbol, XK_Return, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_Escape,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
- XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
- XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
- XK_comma, XK_minus, XK_period, XK_slash,
- XK_0, XK_1, XK_2, XK_3,
- XK_4, XK_5, XK_6, XK_7,
- XK_8, XK_9, XK_colon, XK_semicolon,
- XK_less, XK_equal, XK_greater, XK_question,
- XK_at, XK_A, XK_B, XK_C,
- XK_D, XK_E, XK_F, XK_G,
- XK_H, XK_I, XK_J, XK_K,
- XK_L, XK_M, XK_N, XK_O,
- XK_P, XK_Q, XK_R, XK_S,
- XK_T, XK_U, XK_V, XK_W,
- XK_X, XK_Y, XK_Z, XK_bracketleft,
- XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
- XK_grave, XK_a, XK_b, XK_c,
- XK_d, XK_e, XK_f, XK_g,
- XK_h, XK_i, XK_j, XK_k,
- XK_l, XK_m, XK_n, XK_o,
- XK_p, XK_q, XK_r, XK_s,
- XK_t, XK_u, XK_v, XK_w,
- XK_x, XK_y, XK_z, XK_braceleft,
- XK_bar, XK_braceright, XK_asciitilde, XK_Delete,
- XK_Ccedilla, XK_udiaeresis, XK_eacute, XK_acircumflex,
- XK_adiaeresis, XK_agrave, XK_aring, XK_ccedilla,
- XK_ecircumflex, XK_ediaeresis, XK_egrave, XK_idiaeresis,
- XK_icircumflex, XK_igrave, XK_Adiaeresis, XK_Aring,
- XK_Eacute, XK_ae, XK_AE, XK_ocircumflex,
- XK_odiaeresis, XK_ograve, XK_ucircumflex, XK_ugrave,
- XK_ydiaeresis, XK_Odiaeresis, XK_Udiaeresis, XK_cent,
- XK_sterling, XK_yen, XK_paragraph, XK_section,
- XK_aacute, XK_iacute, XK_oacute, XK_uacute,
- XK_ntilde, XK_Ntilde, XK_ordfeminine, XK_masculine,
- XK_questiondown,XK_hyphen, XK_notsign, XK_onehalf,
- XK_onequarter, XK_exclamdown, XK_guillemotleft,XK_guillemotright,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_Greek_alpha, XK_ssharp, XK_Greek_GAMMA, XK_Greek_pi,
- XK_Greek_SIGMA, XK_Greek_sigma, XK_mu, XK_Greek_tau,
- XK_Greek_PHI, XK_Greek_THETA, XK_Greek_OMEGA, XK_Greek_delta,
- XK_infinity, XK_Ooblique, XK_Greek_epsilon, XK_intersection,
- XK_identical, XK_plusminus, XK_greaterthanequal, XK_lessthanequal,
- XK_topintegral, XK_botintegral, XK_division, XK_similarequal,
- XK_degree, NoSymbol, NoSymbol, XK_radical,
- XK_Greek_eta, XK_twosuperior, XK_periodcentered, NoSymbol,
-
- /*
- * special marked entries (256 + x)
- */
-
- NoSymbol, NoSymbol, XK_Shift_L, XK_Shift_R,
- XK_Caps_Lock, XK_Num_Lock, XK_Scroll_Lock, XK_Alt_L,
- NoSymbol, XK_Control_L, XK_Alt_L, XK_Alt_R,
- XK_Control_L, XK_Control_R, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_F1,
- XK_F2, XK_F3, XK_F4, XK_F5,
- XK_F6, XK_F7, XK_F8, XK_F9,
- XK_F10, XK_F11, XK_F12, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- };
-
-#endif /* HAS_GETKEYMAP */
-
-/*
- * LegalModifier --
- * determine whether a key is a legal modifier key, i.e send a
- * press/release sequence.
- */
-
-/*ARGSUSED*/
-Bool
-LegalModifier(key, pDev)
- unsigned int key;
- DevicePtr pDev;
-{
- return (TRUE);
-}
-
-
-
-/*
- * xf86KbdGetMapping --
- * Get the national keyboard mapping. The keyboard type is set, a new map
- * and the modifiermap is computed.
- */
-
-void
-xf86KbdGetMapping (pKeySyms, pModMap)
- KeySymsPtr pKeySyms;
- CARD8 *pModMap;
-{
- KeySym *k;
-#ifdef HAS_GETKEYMAP
- keymap_t keymap;
-#endif
- int i;
- KeySym *pMap;
-
-#ifdef HAS_GETKBTYPE
- char type;
-
- xf86Info.kbdType =
- ioctl(xf86Info.consoleFd, KDGKBTYPE, &type) != -1 ? type : KB_101;
- if (xf86Info.kbdType == KB_84)
- pMap = map84;
- else
- pMap = map;
-#else
-/* OS/2 sets the keyboard type during xf86OpenKbd */
-#ifndef __UNIXOS2__
- xf86Info.kbdType = 0;
-#endif
- pMap = map;
-#endif
-
-#ifdef HAS_GETKEYMAP
- /*
- * use the keymap, which can be gotten from our oringinal vt??.
- * ( ttymap(1) !!!! )
- */
- if (ioctl(xf86Info.consoleFd, GIO_KEYMAP, &keymap) != -1) {
- for (i = 0; i < keymap.n_keys && i < NUM_KEYCODES; i++)
-
- if (remap[i]) {
-
- k = pMap + (remap[i] << 2);
-
- k[0] = KD_GET_ENTRY(i,0); /* non-shifed */
- k[1] = KD_GET_ENTRY(i,1); /* shifted */
- k[2] = KD_GET_ENTRY(i,4); /* alt */
- k[3] = KD_GET_ENTRY(i,5); /* alt - shifted */
-
- if (k[3] == k[2]) k[3] = NoSymbol;
- if (k[2] == k[1]) k[2] = NoSymbol;
- if (k[1] == k[0]) k[1] = NoSymbol;
- if (k[0] == k[2] && k[1] == k[3]) k[2] = k[3] = NoSymbol;
- }
- }
-#endif
-
- /*
- * compute the modifier map
- */
- for (i = 0; i < MAP_LENGTH; i++)
- pModMap[i] = NoSymbol; /* make sure it is restored */
-
- for (k = pMap, i = MIN_KEYCODE;
- i < (NUM_KEYCODES + MIN_KEYCODE);
- i++, k += 4)
-
- switch(*k) {
-
- case XK_Shift_L:
- case XK_Shift_R:
- pModMap[i] = ShiftMask;
- break;
-
- case XK_Control_L:
- case XK_Control_R:
- pModMap[i] = ControlMask;
- break;
-
- case XK_Caps_Lock:
- pModMap[i] = LockMask;
- break;
-
- case XK_Alt_L:
- case XK_Alt_R:
- pModMap[i] = AltMask;
- break;
-
- case XK_Num_Lock:
- pModMap[i] = NumLockMask;
- break;
-
- case XK_Scroll_Lock:
- pModMap[i] = ScrollLockMask;
- break;
-
- /* kana support */
- case XK_Kana_Lock:
- case XK_Kana_Shift:
- pModMap[i] = KanaMask;
- break;
-
- /* alternate toggle for multinational support */
- case XK_Mode_switch:
- pModMap[i] = AltLangMask;
- break;
-
- }
-
- pKeySyms->map = pMap;
- pKeySyms->mapWidth = GLYPHS_PER_KEY;
- pKeySyms->minKeyCode = MIN_KEYCODE;
- pKeySyms->maxKeyCode = MAX_KEYCODE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86KbdBSD.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86KbdBSD.c
deleted file mode 100644
index c1f6156e3..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86KbdBSD.c
+++ /dev/null
@@ -1,1266 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86KbdBSD.c,v 3.22 2003/10/07 22:00:52 herrb Exp $ */
-/*
- * Derived from xf86Kbd.c by S_ren Schmidt (sos@login.dkuug.dk)
- * which is Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- * and from xf86KbdCODrv.c by Holger Veit
- *
- * 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, and that the name of Thomas Roell not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Roell makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/*
- * Copyright (c) 1994-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* $XConsortium: xf86KbdBSD.c /main/6 1996/10/23 13:12:27 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "atKeynames.h"
-#include "xf86Keymap.h"
-
-#if (defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT)) && defined(GIO_KEYMAP)
-#define KD_GET_ENTRY(i,n) \
- eascii_to_x[((keymap.key[i].spcl << (n+1)) & 0x100) + keymap.key[i].map[n]]
-
-static unsigned char remap[NUM_KEYCODES] = {
- 0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00 - 0x07 */
- 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08 - 0x0f */
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10 - 0x17 */
- 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18 - 0x1f */
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20 - 0x27 */
- 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28 - 0x2f */
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0, /* 0x30 - 0x37 */
- 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38 - 0x3f */
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0, /* 0x40 - 0x47 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x48 - 0x4f */
- 0, 0, 0, 0, 0, 0, 0x56, 0x57, /* 0x50 - 0x57 */
- 0x58, 0, 0, 0, 0, 0, 0, 0, /* 0x58 - 0x5f */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 - 0x67 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x68 - 0x6f */
- 0, 0, 0x69, 0x65, 0, 0, 0, 0, /* 0x70 - 0x77 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x78 - 0x7f */
-};
-
-/* This table assumes the ibm code page 437 coding for characters
- * > 0x80. They are returned in this form by PCVT */
-static KeySym eascii_to_x[512] = {
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
- NoSymbol, XK_Return, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_Escape,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
- XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
- XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
- XK_comma, XK_minus, XK_period, XK_slash,
- XK_0, XK_1, XK_2, XK_3,
- XK_4, XK_5, XK_6, XK_7,
- XK_8, XK_9, XK_colon, XK_semicolon,
- XK_less, XK_equal, XK_greater, XK_question,
- XK_at, XK_A, XK_B, XK_C,
- XK_D, XK_E, XK_F, XK_G,
- XK_H, XK_I, XK_J, XK_K,
- XK_L, XK_M, XK_N, XK_O,
- XK_P, XK_Q, XK_R, XK_S,
- XK_T, XK_U, XK_V, XK_W,
- XK_X, XK_Y, XK_Z, XK_bracketleft,
- XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
- XK_grave, XK_a, XK_b, XK_c,
- XK_d, XK_e, XK_f, XK_g,
- XK_h, XK_i, XK_j, XK_k,
- XK_l, XK_m, XK_n, XK_o,
- XK_p, XK_q, XK_r, XK_s,
- XK_t, XK_u, XK_v, XK_w,
- XK_x, XK_y, XK_z, XK_braceleft,
- XK_bar, XK_braceright, XK_asciitilde, XK_Delete,
- XK_Ccedilla, XK_udiaeresis, XK_eacute, XK_acircumflex,
- XK_adiaeresis, XK_agrave, XK_aring, XK_ccedilla,
- XK_ecircumflex, XK_ediaeresis, XK_egrave, XK_idiaeresis,
- XK_icircumflex, XK_igrave, XK_Adiaeresis, XK_Aring,
- XK_Eacute, XK_ae, XK_AE, XK_ocircumflex,
- XK_odiaeresis, XK_ograve, XK_ucircumflex, XK_ugrave,
- XK_ydiaeresis, XK_Odiaeresis, XK_Udiaeresis, XK_cent,
- XK_sterling, XK_yen, XK_paragraph, XK_section,
- XK_aacute, XK_iacute, XK_oacute, XK_uacute,
- XK_ntilde, XK_Ntilde, XK_ordfeminine, XK_masculine,
- XK_questiondown,XK_hyphen, XK_notsign, XK_onehalf,
- XK_onequarter, XK_exclamdown, XK_guillemotleft,XK_guillemotright,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_Greek_alpha, XK_ssharp, XK_Greek_GAMMA, XK_Greek_pi,
- XK_Greek_SIGMA, XK_Greek_sigma, XK_mu, XK_Greek_tau,
- XK_Greek_PHI, XK_Greek_THETA, XK_Greek_OMEGA, XK_Greek_delta,
- XK_infinity, XK_Ooblique, XK_Greek_epsilon, XK_intersection,
- XK_identical, XK_plusminus, XK_greaterthanequal, XK_lessthanequal,
- XK_topintegral, XK_botintegral, XK_division, XK_similarequal,
- XK_degree, NoSymbol, NoSymbol, XK_radical,
- XK_Greek_eta, XK_twosuperior, XK_periodcentered, NoSymbol,
-
- /*
- * special marked entries (256 + x)
- */
-
-#if 1
- /* This has been checked against what syscons actually does */
- NoSymbol, NoSymbol, XK_Shift_L, XK_Shift_R,
- XK_Caps_Lock, XK_Num_Lock, XK_Scroll_Lock, XK_Alt_L,
- XK_ISO_Left_Tab,XK_Control_L, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_F1,
- XK_F2, XK_F3, XK_F4, XK_F5,
- XK_F6, XK_F7, XK_F8, XK_F9,
- XK_F10, XK_F11, XK_F12, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_Control_R, XK_Alt_R, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol
-#else
- /* The old table, supposedly for pcvt. */
- NoSymbol, NoSymbol, XK_Shift_L, XK_Shift_R,
- XK_Caps_Lock, XK_Num_Lock, XK_Scroll_Lock, XK_Alt_L,
- NoSymbol, XK_Control_L, XK_Alt_L, XK_Alt_R,
- XK_Control_L, XK_Control_R, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_F1,
- XK_F2, XK_F3, XK_F4, XK_F5,
- XK_F6, XK_F7, XK_F8, XK_F9,
- XK_F10, XK_F11, XK_F12, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol
-#endif
- };
-
-#ifdef __OpenBSD__
-/* don't mark AltR and CtrlR for remapping, since they
- * cannot be remapped by pccons */
-static unsigned char pccons_remap[128] = {
- 0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00 - 0x07 */
- 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08 - 0x0f */
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10 - 0x17 */
- 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18 - 0x1f */
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20 - 0x27 */
- 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28 - 0x2f */
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0, /* 0x30 - 0x37 */
- 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38 - 0x3f */
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0, /* 0x40 - 0x47 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x48 - 0x4f */
- 0, 0, 0, 0, 0, 0, 0x56, 0x57, /* 0x50 - 0x57 */
- 0x58, 0, 0, 0, 0, 0, 0, 0, /* 0x58 - 0x5f */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 - 0x67 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x68 - 0x6f */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x70 - 0x77 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x78 - 0x7f */
-};
-
-/* This table assumes an iso8859_1 encoding for the characters
- * > 80, as returned by pccons */
-static KeySym latin1_to_x[256] = {
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
- NoSymbol, XK_Return, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_Escape,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
- XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
- XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
- XK_comma, XK_minus, XK_period, XK_slash,
- XK_0, XK_1, XK_2, XK_3,
- XK_4, XK_5, XK_6, XK_7,
- XK_8, XK_9, XK_colon, XK_semicolon,
- XK_less, XK_equal, XK_greater, XK_question,
- XK_at, XK_A, XK_B, XK_C,
- XK_D, XK_E, XK_F, XK_G,
- XK_H, XK_I, XK_J, XK_K,
- XK_L, XK_M, XK_N, XK_O,
- XK_P, XK_Q, XK_R, XK_S,
- XK_T, XK_U, XK_V, XK_W,
- XK_X, XK_Y, XK_Z, XK_bracketleft,
- XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
- XK_grave, XK_a, XK_b, XK_c,
- XK_d, XK_e, XK_f, XK_g,
- XK_h, XK_i, XK_j, XK_k,
- XK_l, XK_m, XK_n, XK_o,
- XK_p, XK_q, XK_r, XK_s,
- XK_t, XK_u, XK_v, XK_w,
- XK_x, XK_y, XK_z, XK_braceleft,
- XK_bar, XK_braceright, XK_asciitilde, XK_Delete,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_nobreakspace,XK_exclamdown, XK_cent, XK_sterling,
- XK_currency, XK_yen, XK_brokenbar, XK_section,
- XK_diaeresis, XK_copyright, XK_ordfeminine, XK_guillemotleft,
- XK_notsign, XK_hyphen, XK_registered, XK_macron,
- XK_degree, XK_plusminus, XK_twosuperior, XK_threesuperior,
- XK_acute, XK_mu, XK_paragraph, XK_periodcentered,
- XK_cedilla, XK_onesuperior, XK_masculine, XK_guillemotright,
- XK_onequarter, XK_onehalf, XK_threequarters,XK_questiondown,
- XK_Agrave, XK_Aacute, XK_Acircumflex, XK_Atilde,
- XK_Adiaeresis, XK_Aring, XK_AE, XK_Ccedilla,
- XK_Egrave, XK_Eacute, XK_Ecircumflex, XK_Ediaeresis,
- XK_Igrave, XK_Iacute, XK_Icircumflex, XK_Idiaeresis,
- XK_ETH, XK_Ntilde, XK_Ograve, XK_Oacute,
- XK_Ocircumflex, XK_Otilde, XK_Odiaeresis, XK_multiply,
- XK_Ooblique, XK_Ugrave, XK_Uacute, XK_Ucircumflex,
- XK_Udiaeresis, XK_Yacute, XK_THORN, XK_ssharp,
- XK_agrave, XK_aacute, XK_acircumflex, XK_atilde,
- XK_adiaeresis, XK_aring, XK_ae, XK_ccedilla,
- XK_egrave, XK_eacute, XK_ecircumflex, XK_ediaeresis,
- XK_igrave, XK_iacute, XK_icircumflex, XK_idiaeresis,
- XK_eth, XK_ntilde, XK_ograve, XK_oacute,
- XK_ocircumflex, XK_otilde, XK_odiaeresis, XK_division,
- XK_oslash, XK_ugrave, XK_uacute, XK_ucircumflex,
- XK_udiaeresis, XK_yacute, XK_thorn, XK_ydiaeresis
- };
-#endif
-#endif /* SYSCONS_SUPPORT || PCVT_SUPPORT */
-/*
- * LegalModifier --
- * determine whether a key is a legal modifier key, i.e send a
- * press/release sequence.
- */
-
-/*ARGSUSED*/
-Bool
-LegalModifier(key, pDev)
- unsigned int key;
- DevicePtr pDev;
-{
- return (TRUE);
-}
-
-/*
- * xf86KbdGetMapping --
- * Get the national keyboard mapping. The keyboard type is set, a new map
- * and the modifiermap is computed.
- */
-
-void
-xf86KbdGetMapping (pKeySyms, pModMap)
- KeySymsPtr pKeySyms;
- CARD8 *pModMap;
-{
- KeySym *k;
- int i;
-
-#ifndef __bsdi__
- switch (xf86Info.consType) {
-
-#ifdef PCCONS_SUPPORT
- case PCCONS:
-#if defined(__OpenBSD__)
- /*
- * on OpenBSD, the pccons keymap is programmable, too
- */
- {
- pccons_keymap_t keymap[KB_NUM_KEYS];
- if (ioctl(xf86Info.consoleFd, CONSOLE_GET_KEYMAP, &keymap) != -1) {
- for (i = 0; i < KB_NUM_KEYS; i++)
- if (pccons_remap[i]) {
- k = map + (pccons_remap[i] << 2);
- switch (keymap[i].type) {
- case KB_ASCII:
- /* For ASCII keys, there is only one char in the keymap */
- k[0] = latin1_to_x[(unsigned char)keymap[i].unshift[0]];
- k[1] = latin1_to_x[(unsigned char)keymap[i].shift[0]];
- k[2] = latin1_to_x[(unsigned char)keymap[i].altgr[0]];
- k[3] = latin1_to_x[(unsigned char)keymap[i].shift_altgr[0]];
- break;
- case KB_SCROLL:
- k[0] = XK_Scroll_Lock;
- goto special;
- case KB_NUM:
- k[0] = XK_Num_Lock;
- goto special;
- case KB_CAPS:
- k[0] = XK_Caps_Lock;
- goto special;
- case KB_SHIFT:
- switch (keymap[i].unshift[0]) {
- case 1:
- /* left shift */
- k[0] = XK_Shift_L;
- break;
- case 2:
- /* right shift */
- k[0] = XK_Shift_R;
- break;
- default:
- k[0] = NoSymbol;
- }
- goto special;
- case KB_CTL:
- k[0] = XK_Control_L;
- goto special;
- case KB_ALT:
- k[0] = XK_Alt_L;
- goto special;
- case KB_FUNC:
- switch (keymap[i].unshift[2]) {
- case 'M':
- k[0] = XK_F1;
- break;
- case 'N':
- k[0] = XK_F2;
- break;
- case 'O':
- k[0] = XK_F3;
- break;
- case 'P':
- k[0] = XK_F4;
- break;
- case 'Q':
- k[0] = XK_F5;
- break;
- case 'R':
- k[0] = XK_F6;
- break;
- case 'S':
- k[0] = XK_F7;
- break;
- case 'T':
- k[0] = XK_F8;
- break;
- case 'U':
- k[0] = XK_F9;
- break;
- case 'V':
- k[0] = XK_F10;
- break;
- case 'W':
- k[0] = XK_F11;
- break;
- case 'X':
- k[0] = XK_F12;
- break;
- default:
- k[0] = NoSymbol;
- break;
- }
- goto special;
- default:
- k[0] = NoSymbol;
- special:
- k[1] = k[2] = k[3] = NoSymbol;
- }
- }
- } else {
- ErrorF("Can't read pccons keymap\n");
- }
- }
-#endif /* __OpenBSD__ */
- break;
-#endif
-
-/*
- * XXX wscons has no GIO_KEYMAP
- */
-#if (defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)) && defined(GIO_KEYMAP)
- case SYSCONS:
- case PCVT:
- {
- keymap_t keymap;
-
- if (ioctl(xf86Info.consoleFd, GIO_KEYMAP, &keymap) != -1) {
- for (i = 0; i < keymap.n_keys && i < NUM_KEYCODES; i++)
- if (remap[i]) {
- k = map + (remap[i] << 2);
- k[0] = KD_GET_ENTRY(i,0); /* non-shifed */
- k[1] = KD_GET_ENTRY(i,1); /* shifted */
- k[2] = KD_GET_ENTRY(i,4); /* alt */
- k[3] = KD_GET_ENTRY(i,5); /* alt - shifted */
- if (k[3] == k[2]) k[3] = NoSymbol;
- if (k[2] == k[1]) k[2] = NoSymbol;
- if (k[1] == k[0]) k[1] = NoSymbol;
- if (k[0] == k[2] && k[1] == k[3])
- k[2] = k[3] = NoSymbol;
- }
- }
- }
- break;
-#endif /* SYSCONS || PCVT */
-
- }
-#endif /* !bsdi */
-
- /*
- * compute the modifier map
- */
- for (i = 0; i < MAP_LENGTH; i++)
- pModMap[i] = NoSymbol; /* make sure it is restored */
-
- for (k = map, i = MIN_KEYCODE;
- i < (NUM_KEYCODES + MIN_KEYCODE);
- i++, k += 4)
-
- switch(*k) {
-
- case XK_Shift_L:
- case XK_Shift_R:
- pModMap[i] = ShiftMask;
- break;
-
- case XK_Control_L:
- case XK_Control_R:
- pModMap[i] = ControlMask;
- break;
-
- case XK_Caps_Lock:
- pModMap[i] = LockMask;
- break;
-
- case XK_Alt_L:
- case XK_Alt_R:
- pModMap[i] = AltMask;
- break;
-
- case XK_Num_Lock:
- pModMap[i] = NumLockMask;
- break;
-
- case XK_Scroll_Lock:
- pModMap[i] = ScrollLockMask;
- break;
-
- /* kana support */
- case XK_Kana_Lock:
- case XK_Kana_Shift:
- pModMap[i] = KanaMask;
- break;
-
- /* alternate toggle for multinational support */
- case XK_Mode_switch:
- pModMap[i] = AltLangMask;
- break;
-
- }
-
- xf86Info.kbdType = 0;
-
- pKeySyms->map = map;
- pKeySyms->mapWidth = GLYPHS_PER_KEY;
- pKeySyms->minKeyCode = MIN_KEYCODE;
- pKeySyms->maxKeyCode = MAX_KEYCODE;
-
-}
-
-#ifdef WSCONS_SUPPORT
-#include "atKeynames.h"
-
-static CARD8 wsUsbMap[] = {
- /* 0 */ KEY_NOTUSED,
- /* 1 */ KEY_NOTUSED,
- /* 2 */ KEY_NOTUSED,
- /* 3 */ KEY_NOTUSED,
- /* 4 */ KEY_A,
- /* 5 */ KEY_B,
- /* 6 */ KEY_C,
- /* 7 */ KEY_D,
- /* 8 */ KEY_E,
- /* 9 */ KEY_F,
- /* 10 */ KEY_G,
- /* 11 */ KEY_H,
- /* 12 */ KEY_I,
- /* 13 */ KEY_J,
- /* 14 */ KEY_K,
- /* 15 */ KEY_L,
- /* 16 */ KEY_M,
- /* 17 */ KEY_N,
- /* 18 */ KEY_O,
- /* 19 */ KEY_P,
- /* 20 */ KEY_Q,
- /* 21 */ KEY_R,
- /* 22 */ KEY_S,
- /* 23 */ KEY_T,
- /* 24 */ KEY_U,
- /* 25 */ KEY_V,
- /* 26 */ KEY_W,
- /* 27 */ KEY_X,
- /* 28 */ KEY_Y,
- /* 29 */ KEY_Z,
- /* 30 */ KEY_1, /* 1 !*/
- /* 31 */ KEY_2, /* 2 @ */
- /* 32 */ KEY_3, /* 3 # */
- /* 33 */ KEY_4, /* 4 $ */
- /* 34 */ KEY_5, /* 5 % */
- /* 35 */ KEY_6, /* 6 ^ */
- /* 36 */ KEY_7, /* 7 & */
- /* 37 */ KEY_8, /* 8 * */
- /* 38 */ KEY_9, /* 9 ( */
- /* 39 */ KEY_0, /* 0 ) */
- /* 40 */ KEY_Enter, /* Return */
- /* 41 */ KEY_Escape, /* Escape */
- /* 42 */ KEY_BackSpace, /* Backspace Delete */
- /* 43 */ KEY_Tab, /* Tab */
- /* 44 */ KEY_Space, /* Space */
- /* 45 */ KEY_Minus, /* - _ */
- /* 46 */ KEY_Equal, /* = + */
- /* 47 */ KEY_LBrace, /* [ { */
- /* 48 */ KEY_RBrace, /* ] } */
- /* 49 */ KEY_BSlash, /* \ | */
- /* 50 */ KEY_BSlash2, /* \ _ # ~ on some keyboards */
- /* 51 */ KEY_SemiColon, /* ; : */
- /* 52 */ KEY_Quote, /* ' " */
- /* 53 */ KEY_Tilde, /* ` ~ */
- /* 54 */ KEY_Comma, /* , < */
- /* 55 */ KEY_Period, /* . > */
- /* 56 */ KEY_Slash, /* / ? */
- /* 57 */ KEY_CapsLock, /* Caps Lock */
- /* 58 */ KEY_F1, /* F1 */
- /* 59 */ KEY_F2, /* F2 */
- /* 60 */ KEY_F3, /* F3 */
- /* 61 */ KEY_F4, /* F4 */
- /* 62 */ KEY_F5, /* F5 */
- /* 63 */ KEY_F6, /* F6 */
- /* 64 */ KEY_F7, /* F7 */
- /* 65 */ KEY_F8, /* F8 */
- /* 66 */ KEY_F9, /* F9 */
- /* 67 */ KEY_F10, /* F10 */
- /* 68 */ KEY_F11, /* F11 */
- /* 69 */ KEY_F12, /* F12 */
- /* 70 */ KEY_Print, /* PrintScrn SysReq */
- /* 71 */ KEY_ScrollLock, /* Scroll Lock */
- /* 72 */ KEY_Pause, /* Pause Break */
- /* 73 */ KEY_Insert, /* Insert XXX Help on some Mac Keyboards */
- /* 74 */ KEY_Home, /* Home */
- /* 75 */ KEY_PgUp, /* Page Up */
- /* 76 */ KEY_Delete, /* Delete */
- /* 77 */ KEY_End, /* End */
- /* 78 */ KEY_PgDown, /* Page Down */
- /* 79 */ KEY_Right, /* Right Arrow */
- /* 80 */ KEY_Left, /* Left Arrow */
- /* 81 */ KEY_Down, /* Down Arrow */
- /* 82 */ KEY_Up, /* Up Arrow */
- /* 83 */ KEY_NumLock, /* Num Lock */
- /* 84 */ KEY_KP_Divide, /* Keypad / */
- /* 85 */ KEY_KP_Multiply, /* Keypad * */
- /* 86 */ KEY_KP_Minus, /* Keypad - */
- /* 87 */ KEY_KP_Plus, /* Keypad + */
- /* 88 */ KEY_KP_Enter, /* Keypad Enter */
- /* 89 */ KEY_KP_1, /* Keypad 1 End */
- /* 90 */ KEY_KP_2, /* Keypad 2 Down */
- /* 91 */ KEY_KP_3, /* Keypad 3 Pg Down */
- /* 92 */ KEY_KP_4, /* Keypad 4 Left */
- /* 93 */ KEY_KP_5, /* Keypad 5 */
- /* 94 */ KEY_KP_6, /* Keypad 6 */
- /* 95 */ KEY_KP_7, /* Keypad 7 Home */
- /* 96 */ KEY_KP_8, /* Keypad 8 Up */
- /* 97 */ KEY_KP_9, /* KEypad 9 Pg Up */
- /* 98 */ KEY_KP_0, /* Keypad 0 Ins */
- /* 99 */ KEY_KP_Decimal, /* Keypad . Del */
- /* 100 */ KEY_Less, /* < > on some keyboards */
- /* 101 */ KEY_Menu, /* Menu */
- /* 102 */ KEY_NOTUSED,
- /* 103 */ KEY_KP_Equal, /* Keypad = on Mac keyboards */
- /* 104 */ KEY_NOTUSED,
- /* 105 */ KEY_NOTUSED,
- /* 106 */ KEY_NOTUSED,
- /* 107 */ KEY_NOTUSED,
- /* 108 */ KEY_NOTUSED,
- /* 109 */ KEY_NOTUSED,
- /* 110 */ KEY_NOTUSED,
- /* 111 */ KEY_NOTUSED,
- /* 112 */ KEY_NOTUSED,
- /* 113 */ KEY_NOTUSED,
- /* 114 */ KEY_NOTUSED,
- /* 115 */ KEY_NOTUSED,
- /* 116 */ KEY_NOTUSED,
- /* 117 */ KEY_NOTUSED,
- /* 118 */ KEY_NOTUSED,
- /* 119 */ KEY_NOTUSED,
- /* 120 */ KEY_NOTUSED,
- /* 121 */ KEY_NOTUSED,
- /* 122 */ KEY_NOTUSED,
- /* 123 */ KEY_NOTUSED,
- /* 124 */ KEY_NOTUSED,
- /* 125 */ KEY_NOTUSED,
- /* 126 */ KEY_NOTUSED,
- /* 127 */ KEY_NOTUSED,
- /* 128 */ KEY_NOTUSED,
- /* 129 */ KEY_NOTUSED,
- /* 130 */ KEY_NOTUSED,
- /* 131 */ KEY_NOTUSED,
- /* 132 */ KEY_NOTUSED,
- /* 133 */ KEY_NOTUSED,
- /* 134 */ KEY_NOTUSED,
- /* 135 */ KEY_NOTUSED,
- /* 136 */ KEY_NOTUSED,
- /* 137 */ KEY_NOTUSED,
- /* 138 */ KEY_NOTUSED,
- /* 139 */ KEY_NOTUSED,
- /* 140 */ KEY_NOTUSED,
- /* 141 */ KEY_NOTUSED,
- /* 142 */ KEY_NOTUSED,
- /* 143 */ KEY_NOTUSED,
- /* 144 */ KEY_NOTUSED,
- /* 145 */ KEY_NOTUSED,
- /* 146 */ KEY_NOTUSED,
- /* 147 */ KEY_NOTUSED,
- /* 148 */ KEY_NOTUSED,
- /* 149 */ KEY_NOTUSED,
- /* 150 */ KEY_NOTUSED,
- /* 151 */ KEY_NOTUSED,
- /* 152 */ KEY_NOTUSED,
- /* 153 */ KEY_NOTUSED,
- /* 154 */ KEY_NOTUSED,
- /* 155 */ KEY_NOTUSED,
- /* 156 */ KEY_NOTUSED,
- /* 157 */ KEY_NOTUSED,
- /* 158 */ KEY_NOTUSED,
- /* 159 */ KEY_NOTUSED,
- /* 160 */ KEY_NOTUSED,
- /* 161 */ KEY_NOTUSED,
- /* 162 */ KEY_NOTUSED,
- /* 163 */ KEY_NOTUSED,
- /* 164 */ KEY_NOTUSED,
- /* 165 */ KEY_NOTUSED,
- /* 166 */ KEY_NOTUSED,
- /* 167 */ KEY_NOTUSED,
- /* 168 */ KEY_NOTUSED,
- /* 169 */ KEY_NOTUSED,
- /* 170 */ KEY_NOTUSED,
- /* 171 */ KEY_NOTUSED,
- /* 172 */ KEY_NOTUSED,
- /* 173 */ KEY_NOTUSED,
- /* 174 */ KEY_NOTUSED,
- /* 175 */ KEY_NOTUSED,
- /* 176 */ KEY_NOTUSED,
- /* 177 */ KEY_NOTUSED,
- /* 178 */ KEY_NOTUSED,
- /* 179 */ KEY_NOTUSED,
- /* 180 */ KEY_NOTUSED,
- /* 181 */ KEY_NOTUSED,
- /* 182 */ KEY_NOTUSED,
- /* 183 */ KEY_NOTUSED,
- /* 184 */ KEY_NOTUSED,
- /* 185 */ KEY_NOTUSED,
- /* 186 */ KEY_NOTUSED,
- /* 187 */ KEY_NOTUSED,
- /* 188 */ KEY_NOTUSED,
- /* 189 */ KEY_NOTUSED,
- /* 190 */ KEY_NOTUSED,
- /* 191 */ KEY_NOTUSED,
- /* 192 */ KEY_NOTUSED,
- /* 193 */ KEY_NOTUSED,
- /* 194 */ KEY_NOTUSED,
- /* 195 */ KEY_NOTUSED,
- /* 196 */ KEY_NOTUSED,
- /* 197 */ KEY_NOTUSED,
- /* 198 */ KEY_NOTUSED,
- /* 199 */ KEY_NOTUSED,
- /* 200 */ KEY_NOTUSED,
- /* 201 */ KEY_NOTUSED,
- /* 202 */ KEY_NOTUSED,
- /* 203 */ KEY_NOTUSED,
- /* 204 */ KEY_NOTUSED,
- /* 205 */ KEY_NOTUSED,
- /* 206 */ KEY_NOTUSED,
- /* 207 */ KEY_NOTUSED,
- /* 208 */ KEY_NOTUSED,
- /* 209 */ KEY_NOTUSED,
- /* 210 */ KEY_NOTUSED,
- /* 211 */ KEY_NOTUSED,
- /* 212 */ KEY_NOTUSED,
- /* 213 */ KEY_NOTUSED,
- /* 214 */ KEY_NOTUSED,
- /* 215 */ KEY_NOTUSED,
- /* 216 */ KEY_NOTUSED,
- /* 217 */ KEY_NOTUSED,
- /* 218 */ KEY_NOTUSED,
- /* 219 */ KEY_NOTUSED,
- /* 220 */ KEY_NOTUSED,
- /* 221 */ KEY_NOTUSED,
- /* 222 */ KEY_NOTUSED,
- /* 223 */ KEY_NOTUSED,
- /* 224 */ KEY_LCtrl, /* Left Control */
- /* 225 */ KEY_ShiftL, /* Left Shift */
- /* 226 */ KEY_Alt, /* Left Alt */
- /* 227 */ KEY_LMeta, /* Left Meta */
- /* 228 */ KEY_RCtrl, /* Right Control */
- /* 229 */ KEY_ShiftR, /* Right Shift */
- /* 230 */ KEY_AltLang, /* Right Alt, AKA AltGr */
- /* 231 */ KEY_LMeta, /* Right Meta XXX */
-};
-
-#define WS_USB_MAP_SIZE (sizeof(wsUsbMap)/sizeof(unsigned char))
-
-/* Map for adb keyboards */
-static CARD8 wsAdbMap[] = {
- /* 0 */ KEY_A,
- /* 1 */ KEY_S,
- /* 2 */ KEY_D,
- /* 3 */ KEY_F,
- /* 4 */ KEY_H,
- /* 5 */ KEY_G,
- /* 6 */ KEY_Z,
- /* 7 */ KEY_X,
- /* 8 */ KEY_C,
- /* 9 */ KEY_V,
- /* 10 */ KEY_UNKNOWN, /* @ # on french keyboards */
- /* 11 */ KEY_B,
- /* 12 */ KEY_Q,
- /* 13 */ KEY_W,
- /* 14 */ KEY_E,
- /* 15 */ KEY_R,
- /* 16 */ KEY_Y,
- /* 17 */ KEY_T,
- /* 18 */ KEY_1,
- /* 19 */ KEY_2,
- /* 20 */ KEY_3,
- /* 21 */ KEY_4,
- /* 22 */ KEY_6,
- /* 23 */ KEY_5,
- /* 24 */ KEY_Equal,
- /* 25 */ KEY_9,
- /* 26 */ KEY_7,
- /* 27 */ KEY_Minus,
- /* 28 */ KEY_8,
- /* 29 */ KEY_0,
- /* 30 */ KEY_RBrace,
- /* 31 */ KEY_O,
- /* 32 */ KEY_U,
- /* 33 */ KEY_LBrace,
- /* 34 */ KEY_I,
- /* 35 */ KEY_P,
- /* 36 */ KEY_Enter,
- /* 37 */ KEY_L,
- /* 38 */ KEY_J,
- /* 39 */ KEY_Quote,
- /* 40 */ KEY_K,
- /* 41 */ KEY_SemiColon,
- /* 42 */ KEY_BSlash,
- /* 43 */ KEY_Comma,
- /* 44 */ KEY_Slash,
- /* 45 */ KEY_N,
- /* 46 */ KEY_M,
- /* 47 */ KEY_Period,
- /* 48 */ KEY_Tab,
- /* 49 */ KEY_Space,
- /* 50 */ KEY_Tilde,
- /* 51 */ KEY_Delete,
- /* 52 */ KEY_AltLang,
- /* 53 */ KEY_Escape,
- /* 54 */ KEY_LCtrl,
- /* 55 */ KEY_Alt,
- /* 56 */ KEY_ShiftL,
- /* 57 */ KEY_CapsLock,
- /* 58 */ KEY_LMeta,
- /* 59 */ KEY_Left,
- /* 60 */ KEY_Right,
- /* 61 */ KEY_Down,
- /* 62 */ KEY_Up,
- /* 63 */ KEY_UNKNOWN, /* Fn */
- /* 64 */ KEY_NOTUSED,
- /* 65 */ KEY_KP_Decimal,
- /* 66 */ KEY_NOTUSED,
- /* 67 */ KEY_KP_Multiply,
- /* 68 */ KEY_NOTUSED,
- /* 69 */ KEY_KP_Plus,
- /* 70 */ KEY_NOTUSED,
- /* 71 */ KEY_UNKNOWN, /* Clear */
- /* 72 */ KEY_NOTUSED,
- /* 73 */ KEY_NOTUSED,
- /* 74 */ KEY_NOTUSED,
- /* 75 */ KEY_KP_Divide,
- /* 76 */ KEY_KP_Enter,
- /* 77 */ KEY_NOTUSED,
- /* 78 */ KEY_KP_Minus,
- /* 79 */ KEY_NOTUSED,
- /* 80 */ KEY_NOTUSED,
- /* 81 */ KEY_KP_Equal, /* Keypad = */
- /* 82 */ KEY_KP_0,
- /* 83 */ KEY_KP_1,
- /* 84 */ KEY_KP_2,
- /* 85 */ KEY_KP_3,
- /* 86 */ KEY_KP_4,
- /* 87 */ KEY_KP_5,
- /* 88 */ KEY_KP_6,
- /* 89 */ KEY_KP_7,
- /* 90 */ KEY_NOTUSED,
- /* 91 */ KEY_KP_8,
- /* 92 */ KEY_KP_9,
- /* 93 */ KEY_NOTUSED,
- /* 94 */ KEY_NOTUSED,
- /* 95 */ KEY_UNKNOWN, /* Keypad , */
- /* 96 */ KEY_F5,
- /* 97 */ KEY_F6,
- /* 98 */ KEY_F7,
- /* 99 */ KEY_F3,
- /* 100 */ KEY_F8,
- /* 101 */ KEY_F9,
- /* 102 */ KEY_NOTUSED,
- /* 103 */ KEY_F11,
- /* 104 */ KEY_NOTUSED,
- /* 105 */ KEY_NOTUSED,
- /* 106 */ KEY_KP_Enter,
- /* 107 */ KEY_NOTUSED,
- /* 108 */ KEY_NOTUSED,
- /* 109 */ KEY_F10,
- /* 110 */ KEY_NOTUSED,
- /* 111 */ KEY_F12,
- /* 112 */ KEY_NOTUSED,
- /* 113 */ KEY_NOTUSED,
- /* 114 */ KEY_NOTUSED,
- /* 115 */ KEY_Home,
- /* 116 */ KEY_PgUp,
- /* 117 */ KEY_NOTUSED,
- /* 118 */ KEY_F4,
- /* 119 */ KEY_End,
- /* 120 */ KEY_F2,
- /* 121 */ KEY_PgDown,
- /* 122 */ KEY_F1,
- /* 123 */ KEY_NOTUSED,
- /* 124 */ KEY_NOTUSED,
- /* 125 */ KEY_NOTUSED,
- /* 126 */ KEY_NOTUSED,
- /* 127 */ KEY_NOTUSED,
- /* 128 */ KEY_NOTUSED,
- /* 129 */ KEY_NOTUSED,
- /* 130 */ KEY_NOTUSED,
- /* 131 */ KEY_NOTUSED,
- /* 132 */ KEY_NOTUSED,
- /* 133 */ KEY_NOTUSED,
- /* 134 */ KEY_NOTUSED,
- /* 135 */ KEY_NOTUSED,
- /* 136 */ KEY_NOTUSED,
- /* 137 */ KEY_NOTUSED,
- /* 138 */ KEY_NOTUSED,
- /* 139 */ KEY_NOTUSED,
- /* 140 */ KEY_NOTUSED,
- /* 141 */ KEY_NOTUSED,
- /* 142 */ KEY_NOTUSED,
- /* 143 */ KEY_NOTUSED,
- /* 144 */ KEY_NOTUSED,
- /* 145 */ KEY_NOTUSED,
- /* 146 */ KEY_NOTUSED,
- /* 147 */ KEY_NOTUSED,
- /* 148 */ KEY_NOTUSED,
- /* 149 */ KEY_NOTUSED,
- /* 150 */ KEY_NOTUSED,
- /* 151 */ KEY_NOTUSED,
- /* 152 */ KEY_NOTUSED,
- /* 153 */ KEY_NOTUSED,
- /* 154 */ KEY_NOTUSED,
- /* 155 */ KEY_NOTUSED,
- /* 156 */ KEY_NOTUSED,
- /* 157 */ KEY_NOTUSED,
- /* 158 */ KEY_NOTUSED,
- /* 159 */ KEY_NOTUSED,
- /* 160 */ KEY_NOTUSED,
- /* 161 */ KEY_NOTUSED,
- /* 162 */ KEY_NOTUSED,
- /* 163 */ KEY_NOTUSED,
- /* 164 */ KEY_NOTUSED,
- /* 165 */ KEY_NOTUSED,
- /* 166 */ KEY_NOTUSED,
- /* 167 */ KEY_NOTUSED,
- /* 168 */ KEY_NOTUSED,
- /* 169 */ KEY_NOTUSED,
- /* 170 */ KEY_NOTUSED,
- /* 171 */ KEY_NOTUSED,
- /* 172 */ KEY_NOTUSED,
- /* 173 */ KEY_NOTUSED,
- /* 174 */ KEY_NOTUSED,
- /* 175 */ KEY_NOTUSED,
- /* 176 */ KEY_NOTUSED,
- /* 177 */ KEY_NOTUSED,
- /* 178 */ KEY_NOTUSED,
- /* 179 */ KEY_NOTUSED,
- /* 180 */ KEY_NOTUSED,
- /* 181 */ KEY_NOTUSED,
- /* 182 */ KEY_NOTUSED,
- /* 183 */ KEY_NOTUSED,
- /* 184 */ KEY_NOTUSED,
- /* 185 */ KEY_NOTUSED,
- /* 186 */ KEY_NOTUSED,
- /* 187 */ KEY_NOTUSED,
- /* 188 */ KEY_NOTUSED,
- /* 189 */ KEY_NOTUSED,
- /* 190 */ KEY_NOTUSED,
- /* 191 */ KEY_NOTUSED,
- /* 192 */ KEY_NOTUSED,
- /* 193 */ KEY_NOTUSED,
- /* 194 */ KEY_NOTUSED,
- /* 195 */ KEY_NOTUSED,
- /* 196 */ KEY_NOTUSED,
- /* 197 */ KEY_NOTUSED,
- /* 198 */ KEY_NOTUSED,
- /* 199 */ KEY_NOTUSED,
- /* 200 */ KEY_NOTUSED,
- /* 201 */ KEY_NOTUSED,
- /* 202 */ KEY_NOTUSED,
- /* 203 */ KEY_NOTUSED,
- /* 204 */ KEY_NOTUSED,
- /* 205 */ KEY_NOTUSED,
- /* 206 */ KEY_NOTUSED,
- /* 207 */ KEY_NOTUSED,
- /* 208 */ KEY_NOTUSED,
- /* 209 */ KEY_NOTUSED,
- /* 210 */ KEY_NOTUSED,
- /* 211 */ KEY_NOTUSED,
- /* 212 */ KEY_NOTUSED,
- /* 213 */ KEY_NOTUSED,
- /* 214 */ KEY_NOTUSED,
- /* 215 */ KEY_NOTUSED,
- /* 216 */ KEY_NOTUSED,
- /* 217 */ KEY_NOTUSED,
- /* 218 */ KEY_NOTUSED,
- /* 219 */ KEY_NOTUSED,
- /* 220 */ KEY_NOTUSED,
- /* 221 */ KEY_NOTUSED,
- /* 222 */ KEY_NOTUSED,
- /* 223 */ KEY_NOTUSED,
-};
-
-#define WS_ADB_MAP_SIZE (sizeof(wsAdbMap)/sizeof(unsigned char))
-
-static CARD8 wsSunMap[] = {
- /* 0x00 */ KEY_NOTUSED,
- /* 0x01 */ KEY_NOTUSED, /* stop */
- /* 0x02 */ KEY_NOTUSED, /* BrightnessDown / S-VolumeDown */
- /* 0x03 */ KEY_NOTUSED, /* again */
- /* 0x04 */ KEY_NOTUSED, /* BridgtnessUp / S-VolumeUp */
- /* 0x05 */ KEY_F1,
- /* 0x06 */ KEY_F2,
- /* 0x07 */ KEY_F10,
- /* 0x08 */ KEY_F3,
- /* 0x09 */ KEY_F11,
- /* 0x0a */ KEY_F4,
- /* 0x0b */ KEY_F12,
- /* 0x0c */ KEY_F5,
- /* 0x0d */ KEY_AltLang,
- /* 0x0e */ KEY_F6,
- /* 0x0f */ KEY_NOTUSED,
- /* 0x10 */ KEY_F7,
- /* 0x11 */ KEY_F8,
- /* 0x12 */ KEY_F9,
- /* 0x13 */ KEY_Alt,
- /* 0x14 */ KEY_Up,
- /* 0x15 */ KEY_Pause,
- /* 0x16 */ KEY_Print,
- /* 0x17 */ KEY_NOTUSED, /* props */
- /* 0x18 */ KEY_Left,
- /* 0x19 */ KEY_ScrollLock,
- /* 0x1a */ KEY_NOTUSED, /* undo */
- /* 0x1b */ KEY_Down,
- /* 0x1c */ KEY_Right,
- /* 0x1d */ KEY_Escape,
- /* 0x1e */ KEY_1,
- /* 0x1f */ KEY_2,
- /* 0x20 */ KEY_3,
- /* 0x21 */ KEY_4,
- /* 0x22 */ KEY_5,
- /* 0x23 */ KEY_6,
- /* 0x24 */ KEY_7,
- /* 0x25 */ KEY_8,
- /* 0x26 */ KEY_9,
- /* 0x27 */ KEY_0,
- /* 0x28 */ KEY_Minus,
- /* 0x29 */ KEY_Equal,
- /* 0x2a */ KEY_Tilde,
- /* 0x2b */ KEY_BackSpace,
- /* 0x2c */ KEY_Insert,
- /* 0x2d */ KEY_KP_Equal,
- /* 0x2e */ KEY_KP_Divide,
- /* 0x2f */ KEY_KP_Multiply,
- /* 0x30 */ KEY_NOTUSED,
- /* 0x31 */ KEY_NOTUSED, /* front */
- /* 0x32 */ KEY_KP_Decimal,
- /* 0x33 */ KEY_NOTUSED, /* copy */
- /* 0x34 */ KEY_Home,
- /* 0x35 */ KEY_Tab,
- /* 0x36 */ KEY_Q,
- /* 0x37 */ KEY_W,
- /* 0x38 */ KEY_E,
- /* 0x39 */ KEY_R,
- /* 0x3a */ KEY_T,
- /* 0x3b */ KEY_Y,
- /* 0x3c */ KEY_U,
- /* 0x3d */ KEY_I,
- /* 0x3e */ KEY_O,
- /* 0x3f */ KEY_P,
- /* 0x40 */ KEY_LBrace,
- /* 0x41 */ KEY_RBrace,
- /* 0x42 */ KEY_Delete,
- /* 0x43 */ KEY_NOTUSED, /* compose */
- /* 0x44 */ KEY_KP_7,
- /* 0x45 */ KEY_KP_8,
- /* 0x46 */ KEY_KP_9,
- /* 0x47 */ KEY_KP_Minus,
- /* 0x48 */ KEY_NOTUSED, /* open */
- /* 0x49 */ KEY_NOTUSED, /* paste */
- /* 0x4a */ KEY_End,
- /* 0x4b */ KEY_NOTUSED,
- /* 0x4c */ KEY_LCtrl,
- /* 0x4d */ KEY_A,
- /* 0x4e */ KEY_S,
- /* 0x4f */ KEY_D,
- /* 0x50 */ KEY_F,
- /* 0x51 */ KEY_G,
- /* 0x52 */ KEY_H,
- /* 0x53 */ KEY_J,
- /* 0x54 */ KEY_K,
- /* 0x55 */ KEY_L,
- /* 0x56 */ KEY_SemiColon,
- /* 0x57 */ KEY_Quote,
- /* 0x58 */ KEY_BSlash,
- /* 0x59 */ KEY_Enter,
- /* 0x5a */ KEY_KP_Enter,
- /* 0x5b */ KEY_KP_4,
- /* 0x5c */ KEY_KP_5,
- /* 0x5d */ KEY_KP_6,
- /* 0x5e */ KEY_KP_0,
- /* 0x5f */ KEY_NOTUSED, /* find */
- /* 0x60 */ KEY_PgUp,
- /* 0x61 */ KEY_NOTUSED, /* cut */
- /* 0x62 */ KEY_NumLock,
- /* 0x63 */ KEY_ShiftL,
- /* 0x64 */ KEY_Z,
- /* 0x65 */ KEY_X,
- /* 0x66 */ KEY_C,
- /* 0x67 */ KEY_V,
- /* 0x68 */ KEY_B,
- /* 0x69 */ KEY_N,
- /* 0x6a */ KEY_M,
- /* 0x6b */ KEY_Comma,
- /* 0x6c */ KEY_Period,
- /* 0x6d */ KEY_Slash,
- /* 0x6e */ KEY_ShiftR,
- /* 0x6f */ KEY_NOTUSED, /* linefeed */
- /* 0x70 */ KEY_KP_1,
- /* 0x71 */ KEY_KP_2,
- /* 0x72 */ KEY_KP_3,
- /* 0x73 */ KEY_NOTUSED,
- /* 0x74 */ KEY_NOTUSED,
- /* 0x75 */ KEY_NOTUSED,
- /* 0x76 */ KEY_NOTUSED, /* help */
- /* 0x77 */ KEY_CapsLock,
- /* 0x78 */ KEY_LMeta,
- /* 0x79 */ KEY_Space,
- /* 0x7a */ KEY_RMeta,
- /* 0x7b */ KEY_PgDown,
- /* 0x7c */ KEY_NOTUSED,
- /* 0x7d */ KEY_KP_Plus,
- /* 0x7e */ KEY_NOTUSED,
- /* 0x7f */ KEY_NOTUSED
-};
-
-#define WS_SUN_MAP_SIZE (sizeof(wsSunMap)/sizeof(unsigned char))
-
-/*
- * Translate raw wskbd keyboard event values to XFree86 standard keycodes
- * (based on the AT keyboard scan codes using the tables above
- */
-int
-WSKbdToKeycode(int keycode)
-{
- switch (xf86Info.wsKbdType) {
- case WSKBD_TYPE_PC_XT:
- case WSKBD_TYPE_PC_AT:
- /* No translation needed */
- return keycode;
- case WSKBD_TYPE_USB:
- if (keycode < 0 || keycode >= WS_USB_MAP_SIZE)
- return KEY_UNKNOWN;
- else
- return wsUsbMap[keycode];
-#ifdef WSKBD_TYPE_ADB
- case WSKBD_TYPE_ADB:
- if (keycode < 0 || keycode >= WS_ADB_MAP_SIZE)
- return KEY_UNKNOWN;
- else
- return wsAdbMap[keycode];
-#endif
-#ifdef WSKBD_TYPE_SUN
- case WSKBD_TYPE_SUN:
-#ifdef WSKBD_TYPE_SUN5
- case WSKBD_TYPE_SUN5:
-#endif
- if (keycode < 0 || keycode >= WS_SUN_MAP_SIZE)
- return KEY_UNKNOWN;
- else
- return wsSunMap[keycode];
-#endif
- default:
- ErrorF("Unknown wskbd type %d\n", xf86Info.wsKbdType);
- return KEY_UNKNOWN;
- }
-}
-
-#endif /* WSCONS_SUPPORT */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86KbdLnx.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86KbdLnx.c
deleted file mode 100644
index c5361f5d9..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86KbdLnx.c
+++ /dev/null
@@ -1,651 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86KbdLnx.c,v 3.17 2003/08/24 17:36:53 dawes Exp $ */
-/*
- * Linux version of keymapping setup. The kernel (since 0.99.14) has support
- * for fully remapping the keyboard, but there are some differences between
- * the Linux map and the SVR4 map (esp. in the extended keycodes). We also
- * remove the restriction on what keycodes can be remapped.
- * Orest Zborowski.
- */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- *
- * 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, and that the name of Thomas Roell not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Roell makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/*
- * Copyright (c) 1994-2001 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* $XConsortium: xf86KbdLnx.c /main/7 1996/10/19 17:59:00 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "atKeynames.h"
-
-#include "xf86Keymap.h"
-
-/*
- * LegalModifier --
- * determine whether a key is a legal modifier key, i.e send a
- * press/release sequence.
- */
-
-/*ARGSUSED*/
-Bool
-LegalModifier(unsigned int key, DevicePtr pDev)
-{
- return (TRUE);
-}
-
-/*
- * xf86KbdGetMapping --
- * Get the national keyboard mapping. The keyboard type is set, a new map
- * and the modifiermap is computed.
- */
-
-static void readKernelMapping(KeySymsPtr pKeySyms, CARD8 *pModMap);
-
-void
-xf86KbdGetMapping (KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
- KeySym *k;
- char type;
- int i;
-
- readKernelMapping(pKeySyms, pModMap);
-
- /*
- * compute the modifier map
- */
- for (i = 0; i < MAP_LENGTH; i++)
- pModMap[i] = NoSymbol; /* make sure it is restored */
-
- for (k = map, i = MIN_KEYCODE;
- i < (NUM_KEYCODES + MIN_KEYCODE);
- i++, k += 4)
-
- switch(*k) {
-
- case XK_Shift_L:
- case XK_Shift_R:
- pModMap[i] = ShiftMask;
- break;
-
- case XK_Control_L:
- case XK_Control_R:
- pModMap[i] = ControlMask;
- break;
-
- case XK_Caps_Lock:
- pModMap[i] = LockMask;
- break;
-
- case XK_Alt_L:
- case XK_Alt_R:
- pModMap[i] = AltMask;
- break;
-
- case XK_Num_Lock:
- pModMap[i] = NumLockMask;
- break;
-
- case XK_Scroll_Lock:
- pModMap[i] = ScrollLockMask;
- break;
-
- /* kana support */
- case XK_Kana_Lock:
- case XK_Kana_Shift:
- pModMap[i] = KanaMask;
- break;
-
- /* alternate toggle for multinational support */
- case XK_Mode_switch:
- pModMap[i] = AltLangMask;
- break;
-
- }
-
- xf86Info.kbdType =
- ioctl(xf86Info.consoleFd, KDGKBTYPE, &type) != -1 ? type : KB_101;
-
- pKeySyms->map = map;
- pKeySyms->mapWidth = GLYPHS_PER_KEY;
- pKeySyms->minKeyCode = MIN_KEYCODE;
- pKeySyms->maxKeyCode = MAX_KEYCODE;
-}
-
-#include <linux/keyboard.h>
-
-static KeySym linux_to_x[256] = {
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_Escape,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
- XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
- XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
- XK_comma, XK_minus, XK_period, XK_slash,
- XK_0, XK_1, XK_2, XK_3,
- XK_4, XK_5, XK_6, XK_7,
- XK_8, XK_9, XK_colon, XK_semicolon,
- XK_less, XK_equal, XK_greater, XK_question,
- XK_at, XK_A, XK_B, XK_C,
- XK_D, XK_E, XK_F, XK_G,
- XK_H, XK_I, XK_J, XK_K,
- XK_L, XK_M, XK_N, XK_O,
- XK_P, XK_Q, XK_R, XK_S,
- XK_T, XK_U, XK_V, XK_W,
- XK_X, XK_Y, XK_Z, XK_bracketleft,
- XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
- XK_grave, XK_a, XK_b, XK_c,
- XK_d, XK_e, XK_f, XK_g,
- XK_h, XK_i, XK_j, XK_k,
- XK_l, XK_m, XK_n, XK_o,
- XK_p, XK_q, XK_r, XK_s,
- XK_t, XK_u, XK_v, XK_w,
- XK_x, XK_y, XK_z, XK_braceleft,
- XK_bar, XK_braceright, XK_asciitilde, XK_BackSpace,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_nobreakspace,XK_exclamdown, XK_cent, XK_sterling,
- XK_currency, XK_yen, XK_brokenbar, XK_section,
- XK_diaeresis, XK_copyright, XK_ordfeminine, XK_guillemotleft,
- XK_notsign, XK_hyphen, XK_registered, XK_macron,
- XK_degree, XK_plusminus, XK_twosuperior, XK_threesuperior,
- XK_acute, XK_mu, XK_paragraph, XK_periodcentered,
- XK_cedilla, XK_onesuperior, XK_masculine, XK_guillemotright,
- XK_onequarter, XK_onehalf, XK_threequarters,XK_questiondown,
- XK_Agrave, XK_Aacute, XK_Acircumflex, XK_Atilde,
- XK_Adiaeresis, XK_Aring, XK_AE, XK_Ccedilla,
- XK_Egrave, XK_Eacute, XK_Ecircumflex, XK_Ediaeresis,
- XK_Igrave, XK_Iacute, XK_Icircumflex, XK_Idiaeresis,
- XK_ETH, XK_Ntilde, XK_Ograve, XK_Oacute,
- XK_Ocircumflex, XK_Otilde, XK_Odiaeresis, XK_multiply,
- XK_Ooblique, XK_Ugrave, XK_Uacute, XK_Ucircumflex,
- XK_Udiaeresis, XK_Yacute, XK_THORN, XK_ssharp,
- XK_agrave, XK_aacute, XK_acircumflex, XK_atilde,
- XK_adiaeresis, XK_aring, XK_ae, XK_ccedilla,
- XK_egrave, XK_eacute, XK_ecircumflex, XK_ediaeresis,
- XK_igrave, XK_iacute, XK_icircumflex, XK_idiaeresis,
- XK_eth, XK_ntilde, XK_ograve, XK_oacute,
- XK_ocircumflex, XK_otilde, XK_odiaeresis, XK_division,
- XK_oslash, XK_ugrave, XK_uacute, XK_ucircumflex,
- XK_udiaeresis, XK_yacute, XK_thorn, XK_ydiaeresis
-};
-
-/*
- * Maps the AT keycodes to Linux keycodes
- */
-static unsigned char at2lnx[NUM_KEYCODES] =
-{
- 0x01, /* KEY_Escape */ 0x02, /* KEY_1 */
- 0x03, /* KEY_2 */ 0x04, /* KEY_3 */
- 0x05, /* KEY_4 */ 0x06, /* KEY_5 */
- 0x07, /* KEY_6 */ 0x08, /* KEY_7 */
- 0x09, /* KEY_8 */ 0x0a, /* KEY_9 */
- 0x0b, /* KEY_0 */ 0x0c, /* KEY_Minus */
- 0x0d, /* KEY_Equal */ 0x0e, /* KEY_BackSpace */
- 0x0f, /* KEY_Tab */ 0x10, /* KEY_Q */
- 0x11, /* KEY_W */ 0x12, /* KEY_E */
- 0x13, /* KEY_R */ 0x14, /* KEY_T */
- 0x15, /* KEY_Y */ 0x16, /* KEY_U */
- 0x17, /* KEY_I */ 0x18, /* KEY_O */
- 0x19, /* KEY_P */ 0x1a, /* KEY_LBrace */
- 0x1b, /* KEY_RBrace */ 0x1c, /* KEY_Enter */
- 0x1d, /* KEY_LCtrl */ 0x1e, /* KEY_A */
- 0x1f, /* KEY_S */ 0x20, /* KEY_D */
- 0x21, /* KEY_F */ 0x22, /* KEY_G */
- 0x23, /* KEY_H */ 0x24, /* KEY_J */
- 0x25, /* KEY_K */ 0x26, /* KEY_L */
- 0x27, /* KEY_SemiColon */ 0x28, /* KEY_Quote */
- 0x29, /* KEY_Tilde */ 0x2a, /* KEY_ShiftL */
- 0x2b, /* KEY_BSlash */ 0x2c, /* KEY_Z */
- 0x2d, /* KEY_X */ 0x2e, /* KEY_C */
- 0x2f, /* KEY_V */ 0x30, /* KEY_B */
- 0x31, /* KEY_N */ 0x32, /* KEY_M */
- 0x33, /* KEY_Comma */ 0x34, /* KEY_Period */
- 0x35, /* KEY_Slash */ 0x36, /* KEY_ShiftR */
- 0x37, /* KEY_KP_Multiply */ 0x38, /* KEY_Alt */
- 0x39, /* KEY_Space */ 0x3a, /* KEY_CapsLock */
- 0x3b, /* KEY_F1 */ 0x3c, /* KEY_F2 */
- 0x3d, /* KEY_F3 */ 0x3e, /* KEY_F4 */
- 0x3f, /* KEY_F5 */ 0x40, /* KEY_F6 */
- 0x41, /* KEY_F7 */ 0x42, /* KEY_F8 */
- 0x43, /* KEY_F9 */ 0x44, /* KEY_F10 */
- 0x45, /* KEY_NumLock */ 0x46, /* KEY_ScrollLock */
- 0x47, /* KEY_KP_7 */ 0x48, /* KEY_KP_8 */
- 0x49, /* KEY_KP_9 */ 0x4a, /* KEY_KP_Minus */
- 0x4b, /* KEY_KP_4 */ 0x4c, /* KEY_KP_5 */
- 0x4d, /* KEY_KP_6 */ 0x4e, /* KEY_KP_Plus */
- 0x4f, /* KEY_KP_1 */ 0x50, /* KEY_KP_2 */
- 0x51, /* KEY_KP_3 */ 0x52, /* KEY_KP_0 */
- 0x53, /* KEY_KP_Decimal */ 0x54, /* KEY_SysReqest */
- 0x00, /* 0x55 */ 0x56, /* KEY_Less */
- 0x57, /* KEY_F11 */ 0x58, /* KEY_F12 */
- 0x66, /* KEY_Home */ 0x67, /* KEY_Up */
- 0x68, /* KEY_PgUp */ 0x69, /* KEY_Left */
- 0x5d, /* KEY_Begin */ 0x6a, /* KEY_Right */
- 0x6b, /* KEY_End */ 0x6c, /* KEY_Down */
- 0x6d, /* KEY_PgDown */ 0x6e, /* KEY_Insert */
- 0x6f, /* KEY_Delete */ 0x60, /* KEY_KP_Enter */
- 0x61, /* KEY_RCtrl */ 0x77, /* KEY_Pause */
- 0x63, /* KEY_Print */ 0x62, /* KEY_KP_Divide */
- 0x64, /* KEY_AltLang */ 0x65, /* KEY_Break */
- 0x00, /* KEY_LMeta */ 0x00, /* KEY_RMeta */
- 0x7A, /* KEY_Menu/FOCUS_PF11*/0x00, /* 0x6e */
- 0x7B, /* FOCUS_PF12 */ 0x00, /* 0x70 */
- 0x00, /* 0x71 */ 0x00, /* 0x72 */
- 0x59, /* FOCUS_PF2 */ 0x78, /* FOCUS_PF9 */
- 0x00, /* 0x75 */ 0x00, /* 0x76 */
- 0x5A, /* FOCUS_PF3 */ 0x5B, /* FOCUS_PF4 */
- 0x5C, /* FOCUS_PF5 */ 0x5D, /* FOCUS_PF6 */
- 0x5E, /* FOCUS_PF7 */ 0x5F, /* FOCUS_PF8 */
- 0x7C, /* JAP_86 */ 0x79, /* FOCUS_PF10 */
- 0x00, /* 0x7f */
-};
-#define NUM_AT2LNX (sizeof(at2lnx) / sizeof(at2lnx[0]))
-
-#define NUM_CUSTOMKEYS NR_KEYS
-
-u_char SpecialServerMap[NUM_CUSTOMKEYS];
-
-static void
-readKernelMapping(KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
- KeySym *k;
- int i;
- int maxkey;
- static unsigned char tbl[GLYPHS_PER_KEY] =
- {
- 0, /* unshifted */
- 1, /* shifted */
- 0, /* modeswitch unshifted */
- 0 /* modeswitch shifted */
- };
-
- /*
- * Read the mapping from the kernel.
- * Since we're still using the XFree86 scancode->AT keycode mapping
- * routines, we need to convert the AT keycodes to Linux keycodes,
- * then translate the Linux keysyms into X keysyms.
- *
- * First, figure out which tables to use for the modeswitch columns
- * above, from the XF86Config fields.
- */
- tbl[2] = 8; /* alt */
- tbl[3] = tbl[2] | 1;
-
- if (xf86Info.kbdCustomKeycodes) {
- k = map;
- maxkey = NUM_CUSTOMKEYS;
- }
- else {
- k = map+GLYPHS_PER_KEY;
- maxkey = NUM_AT2LNX;
- }
-
- for (i = 0; i < maxkey; ++i)
- {
- struct kbentry kbe;
- int j;
-
- if (xf86Info.kbdCustomKeycodes)
- kbe.kb_index = i;
- else
- kbe.kb_index = at2lnx[i];
-
- for (j = 0; j < GLYPHS_PER_KEY; ++j, ++k)
- {
- unsigned short kval;
-
- *k = NoSymbol;
-
- kbe.kb_table = tbl[j];
- if (
- (!xf86Info.kbdCustomKeycodes && kbe.kb_index == 0) ||
- ioctl(xf86Info.consoleFd, KDGKBENT, &kbe))
- continue;
-
- kval = KVAL(kbe.kb_value);
- switch (KTYP(kbe.kb_value))
- {
- case KT_LATIN:
- case KT_LETTER:
- *k = linux_to_x[kval];
- break;
-
- case KT_FN:
- if (kval <= 19)
- *k = XK_F1 + kval;
- else switch (kbe.kb_value)
- {
- case K_FIND:
- *k = XK_Home; /* or XK_Find */
- break;
- case K_INSERT:
- *k = XK_Insert;
- break;
- case K_REMOVE:
- *k = XK_Delete;
- break;
- case K_SELECT:
- *k = XK_End; /* or XK_Select */
- break;
- case K_PGUP:
- *k = XK_Prior;
- break;
- case K_PGDN:
- *k = XK_Next;
- break;
- case K_HELP:
- *k = XK_Help;
- break;
- case K_DO:
- *k = XK_Execute;
- break;
- case K_PAUSE:
- *k = XK_Pause;
- break;
- case K_MACRO:
- *k = XK_Menu;
- break;
- default:
- break;
- }
- break;
-
- case KT_SPEC:
- switch (kbe.kb_value)
- {
- case K_ENTER:
- *k = XK_Return;
- break;
- case K_BREAK:
- *k = XK_Break;
- break;
- case K_CAPS:
- *k = XK_Caps_Lock;
- break;
- case K_NUM:
- *k = XK_Num_Lock;
- break;
- case K_HOLD:
- *k = XK_Scroll_Lock;
- break;
- case K_COMPOSE:
- *k = XK_Multi_key;
- break;
- default:
- break;
- }
- break;
-
- case KT_PAD:
- switch (kbe.kb_value)
- {
- case K_PPLUS:
- *k = XK_KP_Add;
- break;
- case K_PMINUS:
- *k = XK_KP_Subtract;
- break;
- case K_PSTAR:
- *k = XK_KP_Multiply;
- break;
- case K_PSLASH:
- *k = XK_KP_Divide;
- break;
- case K_PENTER:
- *k = XK_KP_Enter;
- break;
- case K_PCOMMA:
- *k = XK_KP_Separator;
- break;
- case K_PDOT:
- *k = XK_KP_Decimal;
- break;
- case K_PPLUSMINUS:
- *k = XK_KP_Subtract;
- break;
- default:
- if (kval <= 9)
- *k = XK_KP_0 + kval;
- break;
- }
- break;
-
- /*
- * KT_DEAD keys are for accelerated diacritical creation.
- */
- case KT_DEAD:
- switch (kbe.kb_value)
- {
- case K_DGRAVE:
- *k = XK_dead_grave;
- break;
- case K_DACUTE:
- *k = XK_dead_acute;
- break;
- case K_DCIRCM:
- *k = XK_dead_circumflex;
- break;
- case K_DTILDE:
- *k = XK_dead_tilde;
- break;
- case K_DDIERE:
- *k = XK_dead_diaeresis;
- break;
- }
- break;
-
- case KT_CUR:
- switch (kbe.kb_value)
- {
- case K_DOWN:
- *k = XK_Down;
- break;
- case K_LEFT:
- *k = XK_Left;
- break;
- case K_RIGHT:
- *k = XK_Right;
- break;
- case K_UP:
- *k = XK_Up;
- break;
- }
- break;
-
- case KT_SHIFT:
- switch (kbe.kb_value)
- {
- case K_ALTGR:
- *k = XK_Alt_R;
- break;
- case K_ALT:
- *k = (kbe.kb_index == 0x64 ?
- XK_Alt_R : XK_Alt_L);
- break;
- case K_CTRL:
- *k = (kbe.kb_index == 0x61 ?
- XK_Control_R : XK_Control_L);
- break;
- case K_CTRLL:
- *k = XK_Control_L;
- break;
- case K_CTRLR:
- *k = XK_Control_R;
- break;
- case K_SHIFT:
- *k = (kbe.kb_index == 0x36 ?
- XK_Shift_R : XK_Shift_L);
- break;
- case K_SHIFTL:
- *k = XK_Shift_L;
- break;
- case K_SHIFTR:
- *k = XK_Shift_R;
- break;
- default:
- break;
- }
- break;
-
- /*
- * KT_ASCII keys accumulate a 3 digit decimal number that gets
- * emitted when the shift state changes. We can't emulate that.
- */
- case KT_ASCII:
- break;
-
- case KT_LOCK:
- if (kbe.kb_value == K_SHIFTLOCK)
- *k = XK_Shift_Lock;
- break;
-
- default:
- break;
- }
- }
-
- if (k[-1] == k[-2]) k[-1] = NoSymbol;
- if (k[-2] == k[-3]) k[-2] = NoSymbol;
- if (k[-3] == k[-4]) k[-3] = NoSymbol;
- if (k[-4] == k[-2] && k[-3] == k[-1]) k[-2] = k[-1] = NoSymbol;
- if (k[-1] == k[-4] && k[-2] == k[-3] && k[-2] == NoSymbol) k[-1] =NoSymbol;
- }
-
- if (!xf86Info.kbdCustomKeycodes)
- return;
-
- /*
- * Find the Mapping for the special server functions
- */
- for (i = 0; i < NUM_CUSTOMKEYS; ++i) {
- struct kbentry kbe;
- int special = 0;
-
- kbe.kb_index = i;
- kbe.kb_table = 0; /* Plain map */
- if (!ioctl(xf86Info.consoleFd, KDGKBENT, &kbe))
- switch (kbe.kb_value) {
- case K(KT_LATIN,0x7f): /* This catches DEL too... But who cares? */
- special = KEY_BackSpace;
- break;
- case K_PMINUS:
- special = KEY_KP_Minus;
- break;
- case K_PPLUS:
- special = KEY_KP_Plus;
- break;
- case K_F1:
- special = KEY_F1;
- break;
- case K_F2:
- special = KEY_F2;
- break;
- case K_F3:
- special = KEY_F3;
- break;
- case K_F4:
- special = KEY_F4;
- break;
- case K_F5:
- special = KEY_F5;
- break;
- case K_F6:
- special = KEY_F6;
- break;
- case K_F7:
- special = KEY_F7;
- break;
- case K_F8:
- special = KEY_F8;
- break;
- case K_F9:
- special = KEY_F9;
- break;
- case K_F10:
- special = KEY_F10;
- break;
- case K_F11:
- special = KEY_F11;
- break;
- case K_F12:
- special = KEY_F12;
- break;
- case K_ALT:
- special = KEY_Alt;
- break;
- case K_ALTGR:
- special = KEY_AltLang;
- break;
- case K_CONS:
- special = KEY_SysReqest;
- break;
- }
- SpecialServerMap[i] = special;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86KbdMach.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86KbdMach.c
deleted file mode 100644
index 89c23c24a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86KbdMach.c
+++ /dev/null
@@ -1,317 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86KbdMach.c,v 3.7.4.2 1998/06/04 17:35:20 dawes Exp $ */
-/*
- *****************************************************************************
- * HISTORY
- * Log: xf86KbdMach.c,v
- * Revision 2.1.2.1 92/06/25 10:32:08 moore
- * Incorporate the Elliot Dresselhaus's, Ernest Hua's and local changes
- * to run Thomas Roell's I386 color X11R5. Original code only worked
- * with SCO Unix. New code works with 2.5 and 3.0 Mach
- * [92/06/24 rvb]
- *
- * EndLog
- *
- *****************************************************************************
- */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- *
- * 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, and that the name of Thomas Roell not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Roell makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: xf86KbdMach.c /main/9 1996/02/21 17:38:43 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "atKeynames.h"
-#include "xf86Config.h"
-
-#include "xf86Keymap.h"
-
-static KeySym ascii_to_x[256] = {
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
- NoSymbol, XK_Return, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_Escape,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
- XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
- XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
- XK_comma, XK_minus, XK_period, XK_slash,
- XK_0, XK_1, XK_2, XK_3,
- XK_4, XK_5, XK_6, XK_7,
- XK_8, XK_9, XK_colon, XK_semicolon,
- XK_less, XK_equal, XK_greater, XK_question,
- XK_at, XK_A, XK_B, XK_C,
- XK_D, XK_E, XK_F, XK_G,
- XK_H, XK_I, XK_J, XK_K,
- XK_L, XK_M, XK_N, XK_O,
- XK_P, XK_Q, XK_R, XK_S,
- XK_T, XK_U, XK_V, XK_W,
- XK_X, XK_Y, XK_Z, XK_bracketleft,
- XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
- XK_grave, XK_a, XK_b, XK_c,
- XK_d, XK_e, XK_f, XK_g,
- XK_h, XK_i, XK_j, XK_k,
- XK_l, XK_m, XK_n, XK_o,
- XK_p, XK_q, XK_r, XK_s,
- XK_t, XK_u, XK_v, XK_w,
- XK_x, XK_y, XK_z, XK_braceleft,
- XK_bar, XK_braceright, XK_asciitilde, XK_Delete,
- XK_Ccedilla, XK_udiaeresis, XK_eacute, XK_acircumflex,
- XK_adiaeresis, XK_agrave, XK_aring, XK_ccedilla,
- XK_ecircumflex, XK_ediaeresis, XK_egrave, XK_idiaeresis,
- XK_icircumflex, XK_igrave, XK_Adiaeresis, XK_Aring,
- XK_Eacute, XK_ae, XK_AE, XK_ocircumflex,
- XK_odiaeresis, XK_ograve, XK_ucircumflex, XK_ugrave,
- XK_ydiaeresis, XK_Odiaeresis, XK_Udiaeresis, XK_cent,
- XK_sterling, XK_yen, XK_paragraph, XK_section,
- XK_aacute, XK_iacute, XK_oacute, XK_uacute,
- XK_ntilde, XK_Ntilde, XK_ordfeminine, XK_masculine,
- XK_questiondown,XK_hyphen, XK_notsign, XK_onehalf,
- XK_onequarter, XK_exclamdown, XK_guillemotleft,XK_guillemotright,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_Greek_alpha, XK_ssharp, XK_Greek_GAMMA, XK_Greek_pi,
- XK_Greek_SIGMA, XK_Greek_sigma, XK_mu, XK_Greek_tau,
- XK_Greek_PHI, XK_Greek_THETA, XK_Greek_OMEGA, XK_Greek_delta,
- XK_infinity, XK_Ooblique, XK_Greek_epsilon, XK_intersection,
- XK_identical, XK_plusminus, XK_greaterthanequal, XK_lessthanequal,
- XK_topintegral, XK_botintegral, XK_division, XK_similarequal,
- XK_degree, NoSymbol, NoSymbol, XK_radical,
- XK_Greek_eta, XK_twosuperior, XK_periodcentered, NoSymbol,
- };
-
-/*
- * LegalModifier --
- * determine whether a key is a legal modifier key, i.e send a
- * press/release sequence.
- */
-
-/*ARGSUSED*/
-Bool
-LegalModifier(key, pDev)
- unsigned int key;
- DevicePtr pDev;
-{
- return (TRUE);
-}
-
-
-
-/*
- * xf86KbdGetMapping --
- * Get the national keyboard mapping. The keyboard type is set, a new map
- * and the modifiermap is computed.
- */
-
-void
-xf86KbdGetMapping (pKeySyms, pModMap)
- KeySymsPtr pKeySyms;
- CARD8 *pModMap;
-{
- KeySym *k;
- struct kbentry kbe;
- char type;
- int i, j;
-
- for (i = 0; i < NUMKEYS; i++)
- {
- static int states[] = { NORM_STATE, SHIFT_STATE, ALT_STATE, SHIFT_ALT };
- int j;
-
- k = &map[i*4];
- kbe.kb_index = i;
-
- for (j = 0; j < 4; j++)
- {
- kbe.kb_state = states[j];
-
- if (ioctl (xf86Info.consoleFd, KDGKBENT, &kbe) != -1)
- continue;
-
- if (kbe.kb_value [0] == K_SCAN)
- {
- int keycode = -1;
- switch (kbe.kb_value [1])
- {
- case K_CTLSC: keycode = XK_Control_L; break;
- case K_LSHSC: keycode = XK_Shift_L; break;
- case K_RSHSC: keycode = XK_Shift_R; break;
- case K_ALTSC: keycode = XK_Alt_L; break;
- case K_CLCKSC: keycode = XK_Caps_Lock; break;
- case K_NLCKSC: keycode = XK_Num_Lock; break;
- default: break;
- }
- if (keycode > 0)
- k[j] = keycode;
- }
- else if (kbe.kb_value[1] != NC)
- {
- /* How to handle multiple characters?
- Ignore them for now. */
- }
- else
- {
- k[j] = ascii_to_x[kbe.kb_value[0]];
- }
- }
- }
-
- /*
- * Apply the special key mapping specified in XF86Config
- */
- for (k = map, i = MIN_KEYCODE;
- i < (NUM_KEYCODES + MIN_KEYCODE);
- i++, k += 4) {
- switch (k[0]) {
- case XK_Alt_L:
- j = K_INDEX_LEFTALT;
- break;
- case XK_Alt_R:
- j = K_INDEX_RIGHTALT;
- break;
- case XK_Scroll_Lock:
- j = K_INDEX_SCROLLLOCK;
- break;
- case XK_Control_R:
- j = K_INDEX_RIGHTCTL;
- break;
- default:
- j = -1;
- }
- if (j >= 0)
- switch (xf86Info.specialKeyMap[j]) {
- case KM_META:
- if (k[0] == XK_Alt_R)
- k[1] = XK_Meta_R;
- else {
- k[0] = XK_Alt_L;
- k[1] = XK_Meta_L;
- }
- break;
- case KM_COMPOSE:
- k[0] = XK_Multi_key;
- break;
- case KM_MODESHIFT:
- k[0] = XK_Mode_switch;
- k[1] = NoSymbol;
- break;
- case KM_MODELOCK:
- k[0] = XK_Mode_switch;
- k[1] = XF86XK_ModeLock;
- break;
- case KM_SCROLLLOCK:
- k[0] = XK_Scroll_Lock;
- break;
- case KM_CONTROL:
- k[0] = XK_Control_R;
- break;
- }
- }
-
- /*
- * compute the modifier map
- */
- for (i = 0; i < MAP_LENGTH; i++)
- pModMap[i] = NoSymbol; /* make sure it is restored */
-
- for (k = map, i = MIN_KEYCODE;
- i < (NUM_KEYCODES + MIN_KEYCODE);
- i++, k += 4)
-
- switch(*k) {
-
- case XK_Shift_L:
- case XK_Shift_R:
- pModMap[i] = ShiftMask;
- break;
-
- case XK_Control_L:
- case XK_Control_R:
- pModMap[i] = ControlMask;
- break;
-
- case XK_Caps_Lock:
- pModMap[i] = LockMask;
- break;
-
- case XK_Alt_L:
- case XK_Alt_R:
- pModMap[i] = AltMask;
- break;
-
- case XK_Num_Lock:
- if (!xf86Info.serverNumLock) pModMap[i] = NumLockMask;
- break;
-
- case XK_Scroll_Lock:
- pModMap[i] = ScrollLockMask;
- break;
-
- /* kana support */
- case XK_Kana_Lock:
- case XK_Kana_Shift:
- pModMap[i] = KanaMask;
- break;
-
- /* alternate toggle for multinational support */
- case XK_Mode_switch:
- pModMap[i] = AltLangMask;
- break;
-
- }
-
- xf86Info.kbdType =
- ioctl(xf86Info.kbdFd, KDGKBDTYPE, &type) != -1 ? type : KB_VANILLAKB;
-
- pKeySyms->map = map;
- pKeySyms->mapWidth = GLYPHS_PER_KEY;
- pKeySyms->minKeyCode = MIN_KEYCODE;
- if (xf86Info.serverNumLock)
- pKeySyms->maxKeyCode = MAX_KEYCODE;
- else
- pKeySyms->maxKeyCode = MAX_STD_KEYCODE;
-
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Keymap.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Keymap.h
deleted file mode 100644
index f0998ba9b..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Keymap.h
+++ /dev/null
@@ -1,455 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Keymap.h,v 3.20 2003/08/24 17:36:53 dawes Exp $ */
-
-/*
- * Copyright (c) 1994-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- *
- * For Scancodes see notes in atKeynames.h !!!!
- *
- */
-/* $XConsortium: xf86Keymap.h /main/14 1996/02/21 17:38:47 kaleb $ */
-
-static KeySym map[NUM_KEYCODES * GLYPHS_PER_KEY] = {
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#if !defined(__SOL8__) && (!defined(sun) || defined(i386))
-
- /* 0x00 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x01 */ XK_Escape, NoSymbol, NoSymbol, NoSymbol,
- /* 0x02 */ XK_1, XK_exclam, NoSymbol, NoSymbol,
- /* 0x03 */ XK_2, XK_at, NoSymbol, NoSymbol,
- /* 0x04 */ XK_3, XK_numbersign, NoSymbol, NoSymbol,
- /* 0x05 */ XK_4, XK_dollar, NoSymbol, NoSymbol,
- /* 0x06 */ XK_5, XK_percent, NoSymbol, NoSymbol,
- /* 0x07 */ XK_6, XK_asciicircum, NoSymbol, NoSymbol,
- /* 0x08 */ XK_7, XK_ampersand, NoSymbol, NoSymbol,
- /* 0x09 */ XK_8, XK_asterisk, NoSymbol, NoSymbol,
- /* 0x0a */ XK_9, XK_parenleft, NoSymbol, NoSymbol,
- /* 0x0b */ XK_0, XK_parenright, NoSymbol, NoSymbol,
- /* 0x0c */ XK_minus, XK_underscore, NoSymbol, NoSymbol,
- /* 0x0d */ XK_equal, XK_plus, NoSymbol, NoSymbol,
- /* 0x0e */ XK_BackSpace, NoSymbol, NoSymbol, NoSymbol,
- /* 0x0f */ XK_Tab, XK_ISO_Left_Tab,NoSymbol, NoSymbol,
- /* 0x10 */ XK_Q, NoSymbol, NoSymbol, NoSymbol,
- /* 0x11 */ XK_W, NoSymbol, NoSymbol, NoSymbol,
- /* 0x12 */ XK_E, NoSymbol, NoSymbol, NoSymbol,
- /* 0x13 */ XK_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x14 */ XK_T, NoSymbol, NoSymbol, NoSymbol,
- /* 0x15 */ XK_Y, NoSymbol, NoSymbol, NoSymbol,
- /* 0x16 */ XK_U, NoSymbol, NoSymbol, NoSymbol,
- /* 0x17 */ XK_I, NoSymbol, NoSymbol, NoSymbol,
- /* 0x18 */ XK_O, NoSymbol, NoSymbol, NoSymbol,
- /* 0x19 */ XK_P, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1a */ XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol,
- /* 0x1b */ XK_bracketright,XK_braceright, NoSymbol, NoSymbol,
- /* 0x1c */ XK_Return, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1d */ XK_Control_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1e */ XK_A, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1f */ XK_S, NoSymbol, NoSymbol, NoSymbol,
- /* 0x20 */ XK_D, NoSymbol, NoSymbol, NoSymbol,
- /* 0x21 */ XK_F, NoSymbol, NoSymbol, NoSymbol,
- /* 0x22 */ XK_G, NoSymbol, NoSymbol, NoSymbol,
- /* 0x23 */ XK_H, NoSymbol, NoSymbol, NoSymbol,
- /* 0x24 */ XK_J, NoSymbol, NoSymbol, NoSymbol,
- /* 0x25 */ XK_K, NoSymbol, NoSymbol, NoSymbol,
- /* 0x26 */ XK_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x27 */ XK_semicolon, XK_colon, NoSymbol, NoSymbol,
- /* 0x28 */ XK_quoteright, XK_quotedbl, NoSymbol, NoSymbol,
- /* 0x29 */ XK_quoteleft, XK_asciitilde, NoSymbol, NoSymbol,
- /* 0x2a */ XK_Shift_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2b */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
- /* 0x2c */ XK_Z, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2d */ XK_X, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2e */ XK_C, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2f */ XK_V, NoSymbol, NoSymbol, NoSymbol,
- /* 0x30 */ XK_B, NoSymbol, NoSymbol, NoSymbol,
- /* 0x31 */ XK_N, NoSymbol, NoSymbol, NoSymbol,
- /* 0x32 */ XK_M, NoSymbol, NoSymbol, NoSymbol,
- /* 0x33 */ XK_comma, XK_less, NoSymbol, NoSymbol,
- /* 0x34 */ XK_period, XK_greater, NoSymbol, NoSymbol,
- /* 0x35 */ XK_slash, XK_question, NoSymbol, NoSymbol,
- /* 0x36 */ XK_Shift_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x37 */ XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol,
- /* 0x38 */ XK_Alt_L, XK_Meta_L, NoSymbol, NoSymbol,
- /* 0x39 */ XK_space, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3a */ XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3b */ XK_F1, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3c */ XK_F2, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3d */ XK_F3, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3e */ XK_F4, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3f */ XK_F5, NoSymbol, NoSymbol, NoSymbol,
- /* 0x40 */ XK_F6, NoSymbol, NoSymbol, NoSymbol,
- /* 0x41 */ XK_F7, NoSymbol, NoSymbol, NoSymbol,
- /* 0x42 */ XK_F8, NoSymbol, NoSymbol, NoSymbol,
- /* 0x43 */ XK_F9, NoSymbol, NoSymbol, NoSymbol,
- /* 0x44 */ XK_F10, NoSymbol, NoSymbol, NoSymbol,
- /* 0x45 */ XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x46 */ XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x47 */ XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol,
- /* 0x48 */ XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol,
- /* 0x49 */ XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol,
- /* 0x4a */ XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4b */ XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol,
- /* 0x4c */ XK_KP_Begin, XK_KP_5, NoSymbol, NoSymbol,
- /* 0x4d */ XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol,
- /* 0x4e */ XK_KP_Add, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4f */ XK_KP_End, XK_KP_1, NoSymbol, NoSymbol,
- /* 0x50 */ XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol,
- /* 0x51 */ XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol,
- /* 0x52 */ XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol,
- /* 0x53 */ XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol,
- /* 0x54 */ XK_Sys_Req, NoSymbol, NoSymbol, NoSymbol,
- /* 0x55 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x56 */ XK_less, XK_greater, NoSymbol, NoSymbol,
- /* 0x57 */ XK_F11, NoSymbol, NoSymbol, NoSymbol,
- /* 0x58 */ XK_F12, NoSymbol, NoSymbol, NoSymbol,
- /* 0x59 */ XK_Home, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5a */ XK_Up, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5b */ XK_Prior, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5c */ XK_Left, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5d */ XK_Begin, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5e */ XK_Right, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5f */ XK_End, NoSymbol, NoSymbol, NoSymbol,
- /* 0x60 */ XK_Down, NoSymbol, NoSymbol, NoSymbol,
- /* 0x61 */ XK_Next, NoSymbol, NoSymbol, NoSymbol,
- /* 0x62 */ XK_Insert, NoSymbol, NoSymbol, NoSymbol,
- /* 0x63 */ XK_Delete, NoSymbol, NoSymbol, NoSymbol,
- /* 0x64 */ XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol,
- /* 0x65 */ XK_Control_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x66 */ XK_Pause, NoSymbol, NoSymbol, NoSymbol,
- /* 0x67 */ XK_Print, NoSymbol, NoSymbol, NoSymbol,
- /* 0x68 */ XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol,
- /* 0x69 */ XK_Alt_R, XK_Meta_R, NoSymbol, NoSymbol,
- /* 0x6a */ XK_Break, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6b */ XK_Meta_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6c */ XK_Meta_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6d */ XK_Menu, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6e */ XK_F13, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6f */ XK_F14, NoSymbol, NoSymbol, NoSymbol,
- /* 0x70 */ XK_F15, NoSymbol, NoSymbol, NoSymbol,
- /* 0x71 */ XK_F16, NoSymbol, NoSymbol, NoSymbol,
- /* 0x72 */ XK_F17, NoSymbol, NoSymbol, NoSymbol,
- /* 0x73 */ XK_backslash, XK_underscore, NoSymbol, NoSymbol,
- /* 0x74 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x75 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x76 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x77 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x78 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x79 */ XK_Henkan, XK_Mode_switch, NoSymbol, NoSymbol,
- /* 0x7a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7b */ XK_Muhenkan, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7c */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7d */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
- /* 0x7e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
-
-#else /* SunOS */
-
-/* Assumes a US English keyboard as default - sorry 'bout that
- *
- * Hopefully it'll be enough someone can have a sorta working
- * keyboard, if they're not using XKB
- *
- * DWH 9/12/99
- */
-
- /* 0x00 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x01 */ XK_quoteleft, XK_asciitilde, NoSymbol, NoSymbol,
- /* 0x02 */ XK_1, XK_exclam, NoSymbol, NoSymbol,
- /* 0x03 */ XK_2, XK_at, NoSymbol, NoSymbol,
- /* 0x04 */ XK_3, XK_numbersign, NoSymbol, NoSymbol,
- /* 0x05 */ XK_4, XK_dollar, NoSymbol, NoSymbol,
- /* 0x06 */ XK_5, XK_percent, NoSymbol, NoSymbol,
- /* 0x07 */ XK_6, XK_asciicircum, NoSymbol, NoSymbol,
- /* 0x08 */ XK_7, XK_ampersand, NoSymbol, NoSymbol,
- /* 0x09 */ XK_8, XK_asterisk, NoSymbol, NoSymbol,
- /* 0x0a */ XK_9, XK_parenleft, NoSymbol, NoSymbol,
- /* 0x0b */ XK_0, XK_parenright, NoSymbol, NoSymbol,
- /* 0x0c */ XK_minus, XK_underscore, NoSymbol, NoSymbol,
- /* 0x0d */ XK_equal, XK_plus, NoSymbol, NoSymbol,
- /* 0x0e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x0f */ XK_BackSpace, NoSymbol, NoSymbol, NoSymbol,
- /* 0x10 */ XK_Tab, NoSymbol, NoSymbol, NoSymbol,
- /* 0x11 */ XK_Q, NoSymbol, NoSymbol, NoSymbol,
- /* 0x12 */ XK_W, NoSymbol, NoSymbol, NoSymbol,
- /* 0x13 */ XK_E, NoSymbol, NoSymbol, NoSymbol,
- /* 0x14 */ XK_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x15 */ XK_T, NoSymbol, NoSymbol, NoSymbol,
- /* 0x16 */ XK_Y, NoSymbol, NoSymbol, NoSymbol,
- /* 0x17 */ XK_U, NoSymbol, NoSymbol, NoSymbol,
- /* 0x18 */ XK_I, NoSymbol, NoSymbol, NoSymbol,
- /* 0x19 */ XK_O, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1a */ XK_P, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1b */ XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol,
- /* 0x1c */ XK_bracketright,XK_braceright, NoSymbol, NoSymbol,
- /* 0x1d */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
- /* 0x1e */ XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1f */ XK_A, NoSymbol, NoSymbol, NoSymbol,
- /* 0x20 */ XK_S, NoSymbol, NoSymbol, NoSymbol,
- /* 0x21 */ XK_D, NoSymbol, NoSymbol, NoSymbol,
- /* 0x22 */ XK_F, NoSymbol, NoSymbol, NoSymbol,
- /* 0x23 */ XK_G, NoSymbol, NoSymbol, NoSymbol,
- /* 0x24 */ XK_H, NoSymbol, NoSymbol, NoSymbol,
- /* 0x25 */ XK_J, NoSymbol, NoSymbol, NoSymbol,
- /* 0x26 */ XK_K, NoSymbol, NoSymbol, NoSymbol,
- /* 0x27 */ XK_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x28 */ XK_semicolon, XK_colon, NoSymbol, NoSymbol,
- /* 0x29 */ XK_quoteright, XK_quotedbl, NoSymbol, NoSymbol,
- /* 0x2a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2b */ XK_Return, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2c */ XK_Shift_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2d */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2e */ XK_Z, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2f */ XK_X, NoSymbol, NoSymbol, NoSymbol,
- /* 0x30 */ XK_C, NoSymbol, NoSymbol, NoSymbol,
- /* 0x31 */ XK_V, NoSymbol, NoSymbol, NoSymbol,
- /* 0x32 */ XK_B, NoSymbol, NoSymbol, NoSymbol,
- /* 0x33 */ XK_N, NoSymbol, NoSymbol, NoSymbol,
- /* 0x34 */ XK_M, NoSymbol, NoSymbol, NoSymbol,
- /* 0x35 */ XK_comma, XK_less, NoSymbol, NoSymbol,
- /* 0x36 */ XK_period, XK_greater, NoSymbol, NoSymbol,
- /* 0x37 */ XK_slash, XK_question, NoSymbol, NoSymbol,
- /* 0x38 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x39 */ XK_Shift_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3a */ XK_Control_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3b */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3c */ XK_Alt_L, XK_Meta_L, NoSymbol, NoSymbol,
- /* 0x3d */ XK_space, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3e */ XK_Alt_R, XK_Meta_R, NoSymbol, NoSymbol,
- /* 0x3f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x40 */ XK_Control_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x41 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x42 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x43 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x44 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x45 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x46 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x47 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x48 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x49 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4b */ XK_Insert, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4c */ XK_Delete, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4d */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4f */ XK_Left, NoSymbol, NoSymbol, NoSymbol,
- /* 0x50 */ XK_Home, NoSymbol, NoSymbol, NoSymbol,
- /* 0x51 */ XK_End, NoSymbol, NoSymbol, NoSymbol,
- /* 0x52 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x53 */ XK_Up, NoSymbol, NoSymbol, NoSymbol,
- /* 0x54 */ XK_Down, NoSymbol, NoSymbol, NoSymbol,
- /* 0x55 */ XK_Prior, NoSymbol, NoSymbol, NoSymbol,
- /* 0x56 */ XK_Next, NoSymbol, NoSymbol, NoSymbol,
- /* 0x57 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x58 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x59 */ XK_Right, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5a */ XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5b */ XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol,
- /* 0x5c */ XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol,
- /* 0x5d */ XK_KP_End, XK_KP_1, NoSymbol, NoSymbol,
- /* 0x5e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5f */ XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol,
- /* 0x60 */ XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol,
- /* 0x61 */ NoSymbol, XK_KP_5, NoSymbol, NoSymbol,
- /* 0x62 */ XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol,
- /* 0x63 */ XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol,
- /* 0x64 */ XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol,
- /* 0x65 */ XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol,
- /* 0x66 */ XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol,
- /* 0x67 */ XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol,
- /* 0x68 */ XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol,
- /* 0x69 */ XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6a */ XK_KP_Add, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6b */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6c */ XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6d */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6e */ XK_Escape, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x70 */ XK_F1, NoSymbol, NoSymbol, NoSymbol,
- /* 0x71 */ XK_F2, NoSymbol, NoSymbol, NoSymbol,
- /* 0x72 */ XK_F3, NoSymbol, NoSymbol, NoSymbol,
- /* 0x73 */ XK_F4, NoSymbol, NoSymbol, NoSymbol,
- /* 0x74 */ XK_F5, NoSymbol, NoSymbol, NoSymbol,
- /* 0x75 */ XK_F6, NoSymbol, NoSymbol, NoSymbol,
- /* 0x76 */ XK_F7, NoSymbol, NoSymbol, NoSymbol,
- /* 0x77 */ XK_F8, NoSymbol, NoSymbol, NoSymbol,
- /* 0x78 */ XK_F9, NoSymbol, NoSymbol, NoSymbol,
- /* 0x79 */ XK_F10, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7a */ XK_F11, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7b */ XK_F12, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7c */ XK_Print, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7d */ XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7e */ XK_Pause, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
-
-#endif /* SunOS */
-
-};
-
-#if !defined(Lynx) && \
- !defined(__UNIXOS2__) && \
- !defined(__mips__) && \
- !defined(linux) && \
- !defined(CSRG_BASED) && \
- !defined(__CYGWIN__) && \
- !defined(__SOL8__) && \
- (!defined(sun) || defined(i386))
-
-static KeySym map84[NUM_KEYCODES * GLYPHS_PER_KEY] = {
- /* 0x00 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x01 */ XK_Escape, NoSymbol, NoSymbol, NoSymbol,
- /* 0x02 */ XK_1, XK_exclam, NoSymbol, NoSymbol,
- /* 0x03 */ XK_2, XK_at, NoSymbol, NoSymbol,
- /* 0x04 */ XK_3, XK_numbersign, NoSymbol, NoSymbol,
- /* 0x05 */ XK_4, XK_dollar, NoSymbol, NoSymbol,
- /* 0x06 */ XK_5, XK_percent, NoSymbol, NoSymbol,
- /* 0x07 */ XK_6, XK_asciicircum, NoSymbol, NoSymbol,
- /* 0x08 */ XK_7, XK_ampersand, NoSymbol, NoSymbol,
- /* 0x09 */ XK_8, XK_asterisk, NoSymbol, NoSymbol,
- /* 0x0a */ XK_9, XK_parenleft, NoSymbol, NoSymbol,
- /* 0x0b */ XK_0, XK_parenright, NoSymbol, NoSymbol,
- /* 0x0c */ XK_minus, XK_underscore, NoSymbol, NoSymbol,
- /* 0x0d */ XK_equal, XK_plus, NoSymbol, NoSymbol,
- /* 0x0e */ XK_BackSpace, NoSymbol, NoSymbol, NoSymbol,
- /* 0x0f */ XK_Tab, NoSymbol, NoSymbol, NoSymbol,
- /* 0x10 */ XK_Q, NoSymbol, NoSymbol, NoSymbol,
- /* 0x11 */ XK_W, NoSymbol, NoSymbol, NoSymbol,
- /* 0x12 */ XK_E, NoSymbol, NoSymbol, NoSymbol,
- /* 0x13 */ XK_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x14 */ XK_T, NoSymbol, NoSymbol, NoSymbol,
- /* 0x15 */ XK_Y, NoSymbol, NoSymbol, NoSymbol,
- /* 0x16 */ XK_U, NoSymbol, NoSymbol, NoSymbol,
- /* 0x17 */ XK_I, NoSymbol, NoSymbol, NoSymbol,
- /* 0x18 */ XK_O, NoSymbol, NoSymbol, NoSymbol,
- /* 0x19 */ XK_P, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1a */ XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol,
- /* 0x1b */ XK_bracketright,XK_braceright, NoSymbol, NoSymbol,
- /* 0x1c */ XK_Return, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1d */ XK_Control_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1e */ XK_A, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1f */ XK_S, NoSymbol, NoSymbol, NoSymbol,
- /* 0x20 */ XK_D, NoSymbol, NoSymbol, NoSymbol,
- /* 0x21 */ XK_F, NoSymbol, NoSymbol, NoSymbol,
- /* 0x22 */ XK_G, NoSymbol, NoSymbol, NoSymbol,
- /* 0x23 */ XK_H, NoSymbol, NoSymbol, NoSymbol,
- /* 0x24 */ XK_J, NoSymbol, NoSymbol, NoSymbol,
- /* 0x25 */ XK_K, NoSymbol, NoSymbol, NoSymbol,
- /* 0x26 */ XK_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x27 */ XK_semicolon, XK_colon, NoSymbol, NoSymbol,
- /* 0x28 */ XK_quoteright, XK_quotedbl, NoSymbol, NoSymbol,
- /* 0x29 */ XK_quoteleft, XK_asciitilde, NoSymbol, NoSymbol,
- /* 0x2a */ XK_Shift_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2b */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
- /* 0x2c */ XK_Z, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2d */ XK_X, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2e */ XK_C, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2f */ XK_V, NoSymbol, NoSymbol, NoSymbol,
- /* 0x30 */ XK_B, NoSymbol, NoSymbol, NoSymbol,
- /* 0x31 */ XK_N, NoSymbol, NoSymbol, NoSymbol,
- /* 0x32 */ XK_M, NoSymbol, NoSymbol, NoSymbol,
- /* 0x33 */ XK_comma, XK_less, NoSymbol, NoSymbol,
- /* 0x34 */ XK_period, XK_greater, NoSymbol, NoSymbol,
- /* 0x35 */ XK_slash, XK_question, NoSymbol, NoSymbol,
- /* 0x36 */ XK_Shift_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x37 */ XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol,
- /* 0x38 */ XK_Alt_L, XK_Meta_L, NoSymbol, NoSymbol,
- /* 0x39 */ XK_space, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3a */ XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3b */ XK_F1, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3c */ XK_F2, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3d */ XK_F3, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3e */ XK_F4, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3f */ XK_F5, NoSymbol, NoSymbol, NoSymbol,
- /* 0x40 */ XK_F6, NoSymbol, NoSymbol, NoSymbol,
- /* 0x41 */ XK_F7, NoSymbol, NoSymbol, NoSymbol,
- /* 0x42 */ XK_F8, NoSymbol, NoSymbol, NoSymbol,
- /* 0x43 */ XK_F9, NoSymbol, NoSymbol, NoSymbol,
- /* 0x44 */ XK_F10, NoSymbol, NoSymbol, NoSymbol,
- /* 0x45 */ XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x46 */ XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x47 */ XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol,
- /* 0x48 */ XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol,
- /* 0x49 */ XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol,
- /* 0x4a */ XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4b */ XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol,
- /* 0x4c */ NoSymbol, XK_KP_5, NoSymbol, NoSymbol,
- /* 0x4d */ XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol,
- /* 0x4e */ XK_KP_Add, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4f */ XK_KP_End, XK_KP_1, NoSymbol, NoSymbol,
- /* 0x50 */ XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol,
- /* 0x51 */ XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol,
- /* 0x52 */ XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol,
- /* 0x53 */ XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol,
- /* 0x54 */ XK_Sys_Req, NoSymbol, NoSymbol, NoSymbol,
- /* 0x55 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x56 */ XK_less, XK_greater, NoSymbol, NoSymbol,
- /* 0x57 */ XK_F11, NoSymbol, NoSymbol, NoSymbol,
- /* 0x58 */ XK_F12, NoSymbol, NoSymbol, NoSymbol,
- /* 0x59 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5b */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5c */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5d */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x60 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x61 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x62 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x63 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x64 */ XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol,
- /* 0x65 */ XK_Control_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x66 */ XK_Pause, NoSymbol, NoSymbol, NoSymbol,
- /* 0x67 */ XK_Print, NoSymbol, NoSymbol, NoSymbol,
- /* 0x68 */ XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol,
- /* 0x69 */ XK_Alt_R, XK_Meta_R, NoSymbol, NoSymbol,
- /* 0x6a */ XK_Break, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6b */ XK_Meta_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6c */ XK_Meta_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6d */ XK_Menu, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x70 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x71 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x72 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x73 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x74 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x75 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x76 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x77 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x78 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x79 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7b */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7c */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7d */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
-};
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86MiscExt.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86MiscExt.c
deleted file mode 100644
index de4802744..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86MiscExt.c
+++ /dev/null
@@ -1,660 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86MiscExt.c,v 1.16 2003/11/03 05:11:02 tsi Exp $ */
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains the Pointer/Keyboard functions needed by the
- * XFree86-Misc extension.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef __UNIXOS2__
-#define I_NEED_OS2_H
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-
-#ifdef XF86MISC
-#define _XF86MISC_SERVER_
-#include <X11/extensions/xf86misc.h>
-#include "xf86miscproc.h"
-#endif
-
-#define XF86_OS_PRIVS
-#include "xf86_OSlib.h"
-
-#ifdef XINPUT
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#include "xf86Xinput.h"
-#else
-#include "inputstr.h"
-#endif
-
-#include "xf86OSmouse.h"
-
-#ifdef DEBUG
-# define DEBUG_P(x) ErrorF(x"\n");
-#else
-# define DEBUG_P(x) /**/
-#endif
-
-#ifdef XF86MISC
-
-typedef struct {
- int type;
- int baudrate;
- int samplerate;
- int resolution;
- int buttons;
- Bool em3buttons;
- int em3timeout;
- Bool chordmiddle;
- int flags;
- char* device;
- pointer private;
-} mseParamsRec, *mseParamsPtr;
-
-typedef struct {
- int type;
- int rate;
- int delay;
- int serverNumLock; /* obsolete */
-} kbdParamsRec, *kbdParamsPtr;
-
-/*
- Sigh...
-
- The extension should probably be changed to use protocol
- names instead of ID numbers
-*/
-static struct mouse_map {
- int mtype;
- MouseProtocolID proto;
-} m_map[] =
-{
- { MTYPE_MICROSOFT, PROT_MS },
- { MTYPE_MOUSESYS, PROT_MSC },
- { MTYPE_MMSERIES, PROT_MM },
- { MTYPE_LOGITECH, PROT_LOGI },
- { MTYPE_LOGIMAN, PROT_LOGIMAN },
- { MTYPE_MMHIT, PROT_MMHIT },
- { MTYPE_GLIDEPOINT, PROT_GLIDE },
- { MTYPE_IMSERIAL, PROT_IMSERIAL },
- { MTYPE_THINKING, PROT_THINKING },
- { MTYPE_ACECAD, PROT_ACECAD },
- { MTYPE_PS_2, PROT_PS2 },
- { MTYPE_IMPS2, PROT_IMPS2 },
- { MTYPE_EXPPS2, PROT_EXPPS2 },
- { MTYPE_THINKINGPS2, PROT_THINKPS2 },
- { MTYPE_MMANPLUSPS2, PROT_MMPS2 },
- { MTYPE_GLIDEPOINTPS2, PROT_GLIDEPS2 },
- { MTYPE_NETPS2, PROT_NETPS2 },
- { MTYPE_NETSCROLLPS2, PROT_NETSCPS2 },
- { MTYPE_BUSMOUSE, PROT_BM },
- { MTYPE_AUTOMOUSE, PROT_AUTO },
- { MTYPE_SYSMOUSE, PROT_SYSMOUSE },
- { MTYPE_UNKNOWN, PROT_UNKNOWN }
-};
-
-static int
-MapMseProtoToMisc(MouseProtocolID proto)
-{
- int i;
-
- for (i = 0; m_map[i].proto != PROT_UNKNOWN; i++)
- if (proto == m_map[i].proto)
- return m_map[i].mtype;
-
- return MTYPE_UNKNOWN;
-}
-
-static MouseProtocolID
-MapMseMiscToProto(int proto)
-{
- int i;
-
- for (i = 0; m_map[i].mtype != MTYPE_UNKNOWN; i++)
- if (proto == m_map[i].mtype)
- return m_map[i].proto;
-
- return PROT_UNKNOWN;
-}
-
-Bool
-MiscExtGetMouseSettings(pointer *mouse, char **devname)
-{
- mseParamsPtr mseptr;
-
- DEBUG_P("MiscExtGetMouseSettings");
-
- mseptr = MiscExtCreateStruct(MISC_POINTER);
- if (!mseptr)
- return FALSE;
-
- {
- InputInfoPtr pInfo = mseptr->private;
- MouseDevPtr pMse;
-
- *devname = xf86FindOptionValue(pInfo->options, "Device");
- pMse = pInfo->private;
-
- mseptr->type = MapMseProtoToMisc(pMse->protocolID);
- mseptr->baudrate = pMse->baudRate;
- mseptr->samplerate = pMse->sampleRate;
- mseptr->resolution = pMse->resolution;
- mseptr->buttons = pMse->buttons;
- mseptr->em3buttons = pMse->emulate3Buttons;
- mseptr->em3timeout = pMse->emulate3Timeout;
- mseptr->chordmiddle = pMse->chordMiddle;
- mseptr->flags = pMse->mouseFlags;
- }
- *mouse = mseptr;
- return TRUE;
-}
-
-int
-MiscExtGetMouseValue(pointer mouse, MiscExtMseValType valtype)
-{
- mseParamsPtr mse = mouse;
-
- DEBUG_P("MiscExtGetMouseValue");
-
- switch (valtype) {
- case MISC_MSE_PROTO: return mse->type;
- case MISC_MSE_BAUDRATE: return mse->baudrate;
- case MISC_MSE_SAMPLERATE: return mse->samplerate;
- case MISC_MSE_RESOLUTION: return mse->resolution;
- case MISC_MSE_BUTTONS: return mse->buttons;
- case MISC_MSE_EM3BUTTONS: return mse->em3buttons;
- case MISC_MSE_EM3TIMEOUT: return mse->em3timeout;
- case MISC_MSE_CHORDMIDDLE: return mse->chordmiddle;
- case MISC_MSE_FLAGS: return mse->flags;
- }
- return 0;
-}
-
-Bool
-MiscExtSetMouseValue(pointer mouse, MiscExtMseValType valtype, int value)
-{
- mseParamsPtr mse = mouse;
-
- DEBUG_P("MiscExtSetMouseValue");
-
- switch (valtype) {
- case MISC_MSE_PROTO:
- mse->type = value;
- return TRUE;
- case MISC_MSE_BAUDRATE:
- mse->baudrate = value;
- return TRUE;
- case MISC_MSE_SAMPLERATE:
- mse->samplerate = value;
- return TRUE;
- case MISC_MSE_RESOLUTION:
- mse->resolution = value;
- return TRUE;
- case MISC_MSE_BUTTONS:
- mse->buttons = value;
- return TRUE;
- case MISC_MSE_EM3BUTTONS:
- mse->em3buttons = value;
- return TRUE;
- case MISC_MSE_EM3TIMEOUT:
- mse->em3timeout = value;
- return TRUE;
- case MISC_MSE_CHORDMIDDLE:
- mse->chordmiddle = value;
- return TRUE;
- case MISC_MSE_FLAGS:
- mse->flags = value;
- return TRUE;
- }
- return FALSE;
-}
-
-Bool
-MiscExtSetMouseDevice(pointer mouse, char* device)
-{
- mseParamsPtr mse = mouse;
-
- mse->device = device;
-
- return TRUE;
-}
-
-Bool
-MiscExtGetKbdSettings(pointer *kbd)
-{
- kbdParamsPtr kbdptr;
-
- DEBUG_P("MiscExtGetKbdSettings");
-
- kbdptr = MiscExtCreateStruct(MISC_KEYBOARD);
- if (!kbdptr)
- return FALSE;
- kbdptr->type = xf86Info.kbdType;
- kbdptr->rate = xf86Info.kbdRate;
- kbdptr->delay = xf86Info.kbdDelay;
- *kbd = kbdptr;
- return TRUE;
-}
-
-int
-MiscExtGetKbdValue(pointer keyboard, MiscExtKbdValType valtype)
-{
- kbdParamsPtr kbd = keyboard;
-
- DEBUG_P("MiscExtGetKbdValue");
- switch (valtype) {
- case MISC_KBD_TYPE: return kbd->type;
- case MISC_KBD_RATE: return kbd->rate;
- case MISC_KBD_DELAY: return kbd->delay;
- case MISC_KBD_SERVNUMLOCK: return 0;
- }
- return 0;
-}
-
-Bool
-MiscExtSetKbdValue(pointer keyboard, MiscExtKbdValType valtype, int value)
-{
- kbdParamsPtr kbd = keyboard;
-
- DEBUG_P("MiscExtSetKbdValue");
- switch (valtype) {
- case MISC_KBD_TYPE:
- kbd->type = value;
- return TRUE;
- case MISC_KBD_RATE:
- kbd->rate = value;
- return TRUE;
- case MISC_KBD_DELAY:
- kbd->delay = value;
- return TRUE;
- case MISC_KBD_SERVNUMLOCK:
- return TRUE;
- }
- return FALSE;
-}
-
-static void
-MiscExtClientStateCallback(CallbackListPtr *callbacks,
- pointer data, pointer args)
-{
- NewClientInfoRec *clientinfo = (NewClientInfoRec*)args;
-
- if (clientinfo->client == xf86Info.grabInfo.override &&
- clientinfo->client->clientState == ClientStateGone) {
- xf86Info.grabInfo.override = NULL;
- xf86Info.grabInfo.disabled = 0;
- DeleteCallback(&ClientStateCallback, MiscExtClientStateCallback, NULL);
- }
-}
-
-#define MiscExtGrabStateSuccess 0 /* No errors */
-#define MiscExtGrabStateLocked 1 /* A client already requested that
- * grabs cannot be removed/killed */
-#define MiscExtGrabStateAlready 2 /* Request for enabling/disabling
- * grab removeal/kill already done */
-int
-MiscExtSetGrabKeysState(ClientPtr client, int state)
-{
- DEBUG_P("MiscExtSetGrabKeysState");
-
- if (xf86Info.grabInfo.override == NULL ||
- xf86Info.grabInfo.override == client) {
- if (state == 0 && xf86Info.grabInfo.disabled == 0) {
- xf86Info.grabInfo.disabled = 1;
- AddCallback(&ClientStateCallback,
- MiscExtClientStateCallback, NULL);
- xf86Info.grabInfo.override = client;
- }
- else if (state == 1 && xf86Info.grabInfo.disabled == 1) {
- xf86Info.grabInfo.disabled = 0;
- DeleteCallback(&ClientStateCallback,
- MiscExtClientStateCallback, NULL);
- xf86Info.grabInfo.override = NULL;
- }
- else
- return MiscExtGrabStateAlready;
-
- return MiscExtGrabStateSuccess;
- }
-
- return MiscExtGrabStateLocked;
-}
-
-pointer
-MiscExtCreateStruct(MiscExtStructType mse_or_kbd)
-{
- DEBUG_P("MiscExtCreateStruct");
-
- switch (mse_or_kbd) {
- case MISC_POINTER:
- {
- mseParamsPtr mseptr;
- InputInfoPtr pInfo = xf86InputDevs;
-
- while (pInfo) {
- if (xf86IsCorePointer(pInfo->dev))
- break;
- pInfo = pInfo->next;
- }
- if (!pInfo)
- return NULL;
-
- mseptr = xcalloc(sizeof(mseParamsRec),1);
- if (mseptr)
- mseptr->private = pInfo;
- return mseptr;
- }
- case MISC_KEYBOARD:
- return xcalloc(sizeof(kbdParamsRec),1);
- }
- return 0;
-}
-
-void
-MiscExtDestroyStruct(pointer structure, MiscExtStructType mse_or_kbd)
-{
- DEBUG_P("MiscExtDestroyStruct");
-
- switch (mse_or_kbd) {
- case MISC_POINTER:
- case MISC_KEYBOARD:
- xfree(structure);
- }
-}
-
-static Bool
-MiscExtAuthorizeDevice(InputInfoPtr pInfo, char *device)
-{
- Bool authorized = FALSE;
- char *elem;
- struct stat dev, dev_list;
- const char *olddev = xf86FindOptionValue(pInfo->options, "Device");
-
- if (stat(device,&dev))
- return FALSE;
-
- if (!S_ISCHR(dev.st_mode))
- return FALSE;
-
- if (!stat(olddev,&dev_list)) {
- if (dev_list.st_dev == dev.st_dev
- && dev_list.st_ino == dev.st_ino) {
- authorized = TRUE;
- }
- }
-
- if (!authorized) {
- char *path;
-
- if (!xf86InputDeviceList
- || (path = strdup(xf86InputDeviceList)) == NULL)
- return FALSE;
-
- elem = strtok(path,",");
-
- while (elem) {
-
- if (!stat(elem,&dev_list)) {
- if (dev_list.st_dev == dev.st_dev
- && dev_list.st_ino == dev.st_ino) {
- authorized = TRUE;
- break;
-
- }
- }
- elem = strtok(NULL,",");
- }
- xfree(path);
- }
-#if 0
- ErrorF("AUTHORIZED: %s\n",authorized?"Yes":"No");
-#endif
- return (authorized);
-}
-
-MiscExtReturn
-MiscExtApply(pointer structure, MiscExtStructType mse_or_kbd)
-{
- DEBUG_P("MiscExtApply");
-
- if (mse_or_kbd == MISC_POINTER) {
- Bool protoChanged = FALSE;
- int oldflags;
- Bool reopen = FALSE;
- MouseProtocolID newProtocol;
- mseParamsPtr mse = structure;
- InputInfoPtr pInfo;
- MouseDevPtr pMse;
-#ifdef XFree86LOADER
- pointer xf86MouseProtocolIDToName
- = LoaderSymbol("xf86MouseProtocolIDToName");
- if (!xf86MouseProtocolIDToName)
- return MISC_RET_NOMODULE;
-#endif
- if (mse->type < MTYPE_MICROSOFT
- || ( mse->type > MTYPE_EXPPS2
- && (mse->type!=MTYPE_OSMOUSE && mse->type!=MTYPE_XQUEUE)))
- return MISC_RET_BADMSEPROTO;
-#ifdef OSMOUSE_ONLY
- if (mse->type != MTYPE_OSMOUSE)
- return MISC_RET_BADMSEPROTO;
-#else
- if (mse->type == MTYPE_XQUEUE)
- return MISC_RET_BADMSEPROTO;
- if (mse->type == MTYPE_OSMOUSE)
- return MISC_RET_BADMSEPROTO;
-#endif /* OSMOUSE_ONLY */
-
- if (mse->em3timeout < 0)
- return MISC_RET_BADVAL;
-
- if (mse->type == MTYPE_LOGIMAN
- && !(mse->baudrate == 0
- || mse->baudrate == 1200
- || mse->baudrate == 9600))
- return MISC_RET_BADBAUDRATE;
- if (mse->type == MTYPE_LOGIMAN && mse->samplerate)
- return MISC_RET_BADCOMBO;
-
- if (mse->flags & MF_REOPEN) {
- reopen = TRUE;
- mse->flags &= ~MF_REOPEN;
- }
- if (mse->type != MTYPE_OSMOUSE
- && mse->type != MTYPE_XQUEUE
- && mse->type != MTYPE_PS_2
- && mse->type != MTYPE_BUSMOUSE
- && mse->type != MTYPE_IMPS2
- && mse->type != MTYPE_THINKINGPS2
- && mse->type != MTYPE_MMANPLUSPS2
- && mse->type != MTYPE_GLIDEPOINTPS2
- && mse->type != MTYPE_NETPS2
- && mse->type != MTYPE_NETSCROLLPS2
- && mse->type != MTYPE_SYSMOUSE)
- {
- if (mse->baudrate % 1200 != 0
- || (mse->baudrate != 0 && mse->baudrate < 1200)
- || mse->baudrate > 9600)
- return MISC_RET_BADBAUDRATE;
- }
- if ((mse->flags & (MF_CLEAR_DTR|MF_CLEAR_RTS))
- && (mse->type != MTYPE_MOUSESYS))
- return MISC_RET_BADFLAGS;
-
- if (mse->type != MTYPE_OSMOUSE
- && mse->type != MTYPE_XQUEUE
- && mse->type != MTYPE_BUSMOUSE)
- {
- if (mse->samplerate < 0)
- return MISC_RET_BADVAL;
- }
-
- if (mse->resolution < 0)
- return MISC_RET_BADVAL;
- if (mse->chordmiddle)
- {
- if (mse->em3buttons || !(mse->type == MTYPE_MICROSOFT
- || mse->type == MTYPE_LOGIMAN) )
- return MISC_RET_BADCOMBO;
- }
-
- /* XXX - This still needs work */
-
- pInfo = mse->private;
- pMse = pInfo->private;
- oldflags = pMse->mouseFlags;
-
- newProtocol = MapMseMiscToProto(mse->type);
- protoChanged = pMse->protocolID != newProtocol;
- if (protoChanged
- || pMse->baudRate != mse->baudrate
- || pMse->sampleRate != mse->samplerate
- || pMse->resolution != mse->resolution
- || pMse->mouseFlags != mse->flags)
- reopen = TRUE;
-
- if (mse->device)
- reopen = TRUE;
-
- if (reopen)
- (pMse->device->deviceProc)(pMse->device, DEVICE_CLOSE);
-
- pMse->protocolID = newProtocol;
- pMse->baudRate = mse->baudrate;
- pMse->sampleRate = mse->samplerate;
- pMse->resolution = mse->resolution;
- pMse->buttons = mse->buttons;
- pMse->emulate3Buttons = mse->em3buttons;
- pMse->emulate3Timeout = mse->em3timeout;
- pMse->chordMiddle = mse->chordmiddle;
- pMse->mouseFlags = mse->flags;
-
-#ifdef XFree86LOADER
- pMse->protocol = ((const char *(*)(MouseProtocolID))
- xf86MouseProtocolIDToName)(pMse->protocolID);
-#else
- pMse->protocol = xf86MouseProtocolIDToName(pMse->protocolID);
-#endif
-
- if (mse->device) {
- if (MiscExtAuthorizeDevice(pInfo, mse->device)) {
- xf86ReplaceStrOption(pInfo->options, "Device", mse->device);
- } else {
- return MISC_RET_BADVAL;
- }
- }
-
- if (reopen) {
- /* Only if protocol is changed explicitely disable auto detect */
- if (protoChanged)
- pMse->autoProbe = FALSE;
- (pMse->device->deviceProc)(pMse->device, DEVICE_ON);
- }
- /* Set pInfo->options too */
-
- if ((oldflags & MF_CLEAR_DTR) != (pMse->mouseFlags & MF_CLEAR_DTR))
- xf86ReplaceBoolOption(pInfo->options, "ClearDTR",
- pMse->mouseFlags | MF_CLEAR_DTR);
- if ((oldflags & MF_CLEAR_RTS) != (pMse->mouseFlags & MF_CLEAR_RTS))
- xf86ReplaceBoolOption(pInfo->options, "ClearRTS",
- pMse->mouseFlags | MF_CLEAR_RTS);
- }
- if (mse_or_kbd == MISC_KEYBOARD) {
- kbdParamsPtr kbd = structure;
-
- if (kbd->rate < 0)
- return MISC_RET_BADVAL;
- if (kbd->delay < 0)
- return MISC_RET_BADVAL;
- if (kbd->type < KTYPE_UNKNOWN || kbd->type > KTYPE_XQUEUE)
- return MISC_RET_BADKBDTYPE;
-
- if (xf86Info.kbdRate!=kbd->rate || xf86Info.kbdDelay!=kbd->delay) {
- char rad;
-
- xf86Info.kbdRate = kbd->rate;
- xf86Info.kbdDelay = kbd->delay;
- if (xf86Info.kbdDelay <= 375) rad = 0x00;
- else if (xf86Info.kbdDelay <= 625) rad = 0x20;
- else if (xf86Info.kbdDelay <= 875) rad = 0x40;
- else rad = 0x60;
-
- if (xf86Info.kbdRate <= 2) rad |= 0x1F;
- else if (xf86Info.kbdRate >= 30) rad |= 0x00;
- else rad |= ((58/xf86Info.kbdRate)-2);
-
- xf86SetKbdRepeat(rad);
- }
-#if 0 /* Not done yet */
- xf86Info.kbdType = kbd->kbdtype;
-#endif
- }
- return MISC_RET_SUCCESS;
-}
-
-Bool
-MiscExtGetFilePaths(const char **configfile, const char **modulepath,
- const char **logfile)
-{
- DEBUG_P("MiscExtGetFilePaths");
-
- *configfile = xf86ConfigFile;
- *modulepath = xf86ModulePath;
- *logfile = xf86LogFile;
-
- return TRUE;
-}
-
-int
-MiscExtPassMessage(int scrnIndex, const char *msgtype, const char *msgval,
- char **retstr)
-{
- ScrnInfoPtr pScr = xf86Screens[scrnIndex];
-
- DEBUG_P("MiscExtPassMessage");
-
- /* should check this in the protocol, but xf86NumScreens isn't exported */
- if (scrnIndex >= xf86NumScreens)
- return BadValue;
-
- if (*pScr->HandleMessage == NULL)
- return BadImplementation;
- return (*pScr->HandleMessage)(scrnIndex, msgtype, msgval, retstr);
-}
-
-#endif /* XF86MISC */
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Mode.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Mode.c
deleted file mode 100644
index 2abbd2213..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Mode.c
+++ /dev/null
@@ -1,2185 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86Mode.c,v 1.7 2005/07/03 08:53:42 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Mode.c,v 1.69 2003/10/08 14:58:28 dawes Exp $ */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * Authors: Dirk Hohndel <hohndel@XFree86.Org>
- * David Dawes <dawes@XFree86.Org>
- * Marc La France <tsi@XFree86.Org>
- * ... and others
- *
- * This file includes helper functions for mode related things.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "servermd.h"
-#include "mibank.h"
-#include "globals.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86DDC.h"
-
-/*
- * xf86GetNearestClock --
- * Find closest clock to given frequency (in kHz). This assumes the
- * number of clocks is greater than zero.
- */
-int
-xf86GetNearestClock(ScrnInfoPtr scrp, int freq, Bool allowDiv2,
- int DivFactor, int MulFactor, int *divider)
-{
- int nearestClock = 0, nearestDiv = 1;
- int minimumGap = abs(freq - scrp->clock[0]);
- int i, j, k, gap;
-
- if (allowDiv2)
- k = 2;
- else
- k = 1;
-
- /* Must set this here in case the best match is scrp->clock[0] */
- if (divider != NULL)
- *divider = 0;
-
- for (i = 0; i < scrp->numClocks; i++) {
- for (j = 1; j <= k; j++) {
- gap = abs((freq * j) - ((scrp->clock[i] * DivFactor) / MulFactor));
- if ((gap < minimumGap) ||
- ((gap == minimumGap) && (j < nearestDiv))) {
- minimumGap = gap;
- nearestClock = i;
- nearestDiv = j;
- if (divider != NULL)
- *divider = (j - 1) * V_CLKDIV2;
- }
- }
- }
- return nearestClock;
-}
-
-/*
- * xf86ModeStatusToString
- *
- * Convert a ModeStatus value to a printable message
- */
-
-const char *
-xf86ModeStatusToString(ModeStatus status)
-{
- switch (status) {
- case MODE_OK:
- return "Mode OK";
- case MODE_HSYNC:
- return "hsync out of range";
- case MODE_VSYNC:
- return "vrefresh out of range";
- case MODE_H_ILLEGAL:
- return "illegal horizontal timings";
- case MODE_V_ILLEGAL:
- return "illegal vertical timings";
- case MODE_BAD_WIDTH:
- return "width requires unsupported line pitch";
- case MODE_NOMODE:
- return "no mode of this name";
- case MODE_NO_INTERLACE:
- return "interlace mode not supported";
- case MODE_NO_DBLESCAN:
- return "doublescan mode not supported";
- case MODE_NO_VSCAN:
- return "multiscan mode not supported";
- case MODE_MEM:
- return "insufficient memory for mode";
- case MODE_VIRTUAL_X:
- return "width too large for virtual size";
- case MODE_VIRTUAL_Y:
- return "height too large for virtual size";
- case MODE_MEM_VIRT:
- return "insufficient memory given virtual size";
- case MODE_NOCLOCK:
- return "no clock available for mode";
- case MODE_CLOCK_HIGH:
- return "mode clock too high";
- case MODE_CLOCK_LOW:
- return "mode clock too low";
- case MODE_CLOCK_RANGE:
- return "bad mode clock/interlace/doublescan";
- case MODE_BAD_HVALUE:
- return "horizontal timing out of range";
- case MODE_BAD_VVALUE:
- return "vertical timing out of range";
- case MODE_BAD_VSCAN:
- return "VScan value out of range";
- case MODE_HSYNC_NARROW:
- return "horizontal sync too narrow";
- case MODE_HSYNC_WIDE:
- return "horizontal sync too wide";
- case MODE_HBLANK_NARROW:
- return "horizontal blanking too narrow";
- case MODE_HBLANK_WIDE:
- return "horizontal blanking too wide";
- case MODE_VSYNC_NARROW:
- return "vertical sync too narrow";
- case MODE_VSYNC_WIDE:
- return "vertical sync too wide";
- case MODE_VBLANK_NARROW:
- return "vertical blanking too narrow";
- case MODE_VBLANK_WIDE:
- return "vertical blanking too wide";
- case MODE_PANEL:
- return "exceeds panel dimensions";
- case MODE_INTERLACE_WIDTH:
- return "width too large for interlaced mode";
- case MODE_ONE_WIDTH:
- return "all modes must have the same width";
- case MODE_ONE_HEIGHT:
- return "all modes must have the same height";
- case MODE_ONE_SIZE:
- return "all modes must have the same resolution";
- case MODE_BAD:
- return "unknown reason";
- case MODE_ERROR:
- return "internal error";
- default:
- return "unknown";
- }
-}
-
-/*
- * xf86ShowClockRanges() -- Print the clock ranges allowed
- * and the clock values scaled by ClockMulFactor and ClockDivFactor
- */
-void
-xf86ShowClockRanges(ScrnInfoPtr scrp, ClockRangePtr clockRanges)
-{
- ClockRangePtr cp;
- int MulFactor = 1;
- int DivFactor = 1;
- int i, j;
- int scaledClock;
-
- for (cp = clockRanges; cp != NULL; cp = cp->next) {
- DivFactor = max(1, cp->ClockDivFactor);
- MulFactor = max(1, cp->ClockMulFactor);
- if (scrp->progClock) {
- if (cp->minClock) {
- if (cp->maxClock) {
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Clock range: %6.2f to %6.2f MHz\n",
- (double)cp->minClock / 1000.0,
- (double)cp->maxClock / 1000.0);
- } else {
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Minimum clock: %6.2f MHz\n",
- (double)cp->minClock / 1000.0);
- }
- } else {
- if (cp->maxClock) {
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Maximum clock: %6.2f MHz\n",
- (double)cp->maxClock / 1000.0);
- }
- }
- } else if (DivFactor > 1 || MulFactor > 1) {
- j = 0;
- for (i = 0; i < scrp->numClocks; i++) {
- scaledClock = (scrp->clock[i] * DivFactor) / MulFactor;
- if (scaledClock >= cp->minClock && scaledClock <= cp->maxClock) {
- if ((j % 8) == 0) {
- if (j > 0)
- xf86ErrorF("\n");
- xf86DrvMsg(scrp->scrnIndex, X_INFO, "scaled clocks:");
- }
- xf86ErrorF(" %6.2f", (double)scaledClock / 1000.0);
- j++;
- }
- }
- xf86ErrorF("\n");
- }
- }
-}
-
-
-/*
- * xf86FindClockRangeForMode() [... like the name says ...]
- */
-static ClockRangePtr
-xf86FindClockRangeForMode(ClockRangePtr clockRanges, DisplayModePtr p)
-{
- ClockRangePtr cp;
-
- for (cp = clockRanges; ; cp = cp->next)
- if (!cp ||
- ((p->Clock >= cp->minClock) &&
- (p->Clock <= cp->maxClock) &&
- (cp->interlaceAllowed || !(p->Flags & V_INTERLACE)) &&
- (cp->doubleScanAllowed ||
- ((p->VScan <= 1) && !(p->Flags & V_DBLSCAN)))))
- return cp;
-}
-
-
-/*
- * xf86HandleBuiltinMode() - handles built-in modes
- */
-static ModeStatus
-xf86HandleBuiltinMode(ScrnInfoPtr scrp,
- DisplayModePtr p,
- DisplayModePtr modep,
- ClockRangePtr clockRanges,
- Bool allowDiv2)
-{
- ClockRangePtr cp;
- int extraFlags = 0;
- int MulFactor = 1;
- int DivFactor = 1;
- int clockIndex;
-
- /* Reject previously rejected modes */
- if (p->status != MODE_OK)
- return p->status;
-
- /* Reject previously considered modes */
- if (p->prev)
- return MODE_NOMODE;
-
- if ((p->type & M_T_CLOCK_C) == M_T_CLOCK_C) {
- /* Check clock is in range */
- cp = xf86FindClockRangeForMode(clockRanges, p);
- if (cp == NULL){
- modep->type = p->type;
- p->status = MODE_CLOCK_RANGE;
- return MODE_CLOCK_RANGE;
- }
- DivFactor = cp->ClockDivFactor;
- MulFactor = cp->ClockMulFactor;
- if (!scrp->progClock) {
- clockIndex = xf86GetNearestClock(scrp, p->Clock, allowDiv2,
- cp->ClockDivFactor,
- cp->ClockMulFactor, &extraFlags);
- modep->Clock = (scrp->clock[clockIndex] * DivFactor)
- / MulFactor;
- modep->ClockIndex = clockIndex;
- modep->SynthClock = scrp->clock[clockIndex];
- if (extraFlags & V_CLKDIV2) {
- modep->Clock /= 2;
- modep->SynthClock /= 2;
- }
- } else {
- modep->Clock = p->Clock;
- modep->ClockIndex = -1;
- modep->SynthClock = (modep->Clock * MulFactor)
- / DivFactor;
- }
- modep->PrivFlags = cp->PrivFlags;
- } else {
- if(!scrp->progClock) {
- modep->Clock = p->Clock;
- modep->ClockIndex = p->ClockIndex;
- modep->SynthClock = p->SynthClock;
- } else {
- modep->Clock = p->Clock;
- modep->ClockIndex = -1;
- modep->SynthClock = p->SynthClock;
- }
- modep->PrivFlags = p->PrivFlags;
- }
- modep->type = p->type;
- modep->HDisplay = p->HDisplay;
- modep->HSyncStart = p->HSyncStart;
- modep->HSyncEnd = p->HSyncEnd;
- modep->HTotal = p->HTotal;
- modep->HSkew = p->HSkew;
- modep->VDisplay = p->VDisplay;
- modep->VSyncStart = p->VSyncStart;
- modep->VSyncEnd = p->VSyncEnd;
- modep->VTotal = p->VTotal;
- modep->VScan = p->VScan;
- modep->Flags = p->Flags | extraFlags;
- modep->CrtcHDisplay = p->CrtcHDisplay;
- modep->CrtcHBlankStart = p->CrtcHBlankStart;
- modep->CrtcHSyncStart = p->CrtcHSyncStart;
- modep->CrtcHSyncEnd = p->CrtcHSyncEnd;
- modep->CrtcHBlankEnd = p->CrtcHBlankEnd;
- modep->CrtcHTotal = p->CrtcHTotal;
- modep->CrtcHSkew = p->CrtcHSkew;
- modep->CrtcVDisplay = p->CrtcVDisplay;
- modep->CrtcVBlankStart = p->CrtcVBlankStart;
- modep->CrtcVSyncStart = p->CrtcVSyncStart;
- modep->CrtcVSyncEnd = p->CrtcVSyncEnd;
- modep->CrtcVBlankEnd = p->CrtcVBlankEnd;
- modep->CrtcVTotal = p->CrtcVTotal;
- modep->CrtcHAdjusted = p->CrtcHAdjusted;
- modep->CrtcVAdjusted = p->CrtcVAdjusted;
- modep->HSync = p->HSync;
- modep->VRefresh = p->VRefresh;
- modep->Private = p->Private;
- modep->PrivSize = p->PrivSize;
-
- p->prev = modep;
-
- return MODE_OK;
-}
-
-static double
-ModeHSync(DisplayModePtr mode)
-{
- double hsync = 0.0;
-
- if (mode->HSync > 0.0)
- hsync = mode->HSync;
- else if (mode->HTotal > 0)
- hsync = (float)mode->Clock / (float)mode->HTotal;
-
- return hsync;
-}
-
-static double
-ModeVRefresh(DisplayModePtr mode)
-{
- double refresh = 0.0;
-
- if (mode->VRefresh > 0.0)
- refresh = mode->VRefresh;
- else if (mode->HTotal > 0 && mode->VTotal > 0) {
- refresh = mode->Clock * 1000.0 / mode->HTotal / mode->VTotal;
- if (mode->Flags & V_INTERLACE)
- refresh *= 2.0;
- if (mode->Flags & V_DBLSCAN)
- refresh /= 2.0;
- if (mode->VScan > 1)
- refresh /= (float)(mode->VScan);
- }
- return refresh;
-}
-
-/*
- * xf86LookupMode
- *
- * This function returns a mode from the given list which matches the
- * given name. When multiple modes with the same name are available,
- * the method of picking the matching mode is determined by the
- * strategy selected.
- *
- * This function takes the following parameters:
- * scrp ScrnInfoPtr
- * modep pointer to the returned mode, which must have the name
- * field filled in.
- * clockRanges a list of clock ranges. This is optional when all the
- * modes are built-in modes.
- * strategy how to decide which mode to use from multiple modes with
- * the same name
- *
- * In addition, the following fields from the ScrnInfoRec are used:
- * modePool the list of monitor modes compatible with the driver
- * clocks a list of discrete clocks
- * numClocks number of discrete clocks
- * progClock clock is programmable
- *
- * If a mode was found, its values are filled in to the area pointed to
- * by modep, If a mode was not found the return value indicates the
- * reason.
- */
-
-ModeStatus
-xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep,
- ClockRangePtr clockRanges, LookupModeFlags strategy)
-{
- DisplayModePtr p, bestMode = NULL;
- ClockRangePtr cp;
- int i, k, gap, minimumGap = CLOCK_TOLERANCE + 1;
- double refresh, bestRefresh = 0.0;
- Bool found = FALSE;
- int extraFlags = 0;
- int clockIndex = -1;
- int MulFactor = 1;
- int DivFactor = 1;
- int ModePrivFlags = 0;
- ModeStatus status = MODE_NOMODE;
- Bool allowDiv2 = (strategy & LOOKUP_CLKDIV2) != 0;
- Bool haveBuiltin;
-
- strategy &= ~(LOOKUP_CLKDIV2 | LOOKUP_OPTIONAL_TOLERANCES);
-
- /* Some sanity checking */
- if (scrp == NULL || scrp->modePool == NULL ||
- (!scrp->progClock && scrp->numClocks == 0)) {
- ErrorF("xf86LookupMode: called with invalid scrnInfoRec\n");
- return MODE_ERROR;
- }
- if (modep == NULL || modep->name == NULL) {
- ErrorF("xf86LookupMode: called with invalid modep\n");
- return MODE_ERROR;
- }
- for (cp = clockRanges; cp != NULL; cp = cp->next) {
- /* DivFactor and MulFactor must be > 0 */
- cp->ClockDivFactor = max(1, cp->ClockDivFactor);
- cp->ClockMulFactor = max(1, cp->ClockMulFactor);
- }
-
- haveBuiltin = FALSE;
- /* Scan the mode pool for matching names */
- for (p = scrp->modePool; p != NULL; p = p->next) {
- if (strcmp(p->name, modep->name) == 0) {
- /*
- * Requested mode is a built-in mode. Don't let the user
- * override it.
- * Since built-in modes always come before user specified
- * modes it will always be found first.
- */
- if (p->type & M_T_BUILTIN) {
- haveBuiltin = TRUE;
- }
-
- if (haveBuiltin && !(p->type & M_T_BUILTIN))
- continue;
-
- /* Skip over previously rejected modes */
- if (p->status != MODE_OK) {
- if (!found)
- status = p->status;
- continue;
- }
-
- /* Skip over previously considered modes */
- if (p->prev)
- continue;
-
- if (p->type & M_T_BUILTIN) {
- return xf86HandleBuiltinMode(scrp, p,modep, clockRanges,
- allowDiv2);
- }
-
- /* Check clock is in range */
- cp = xf86FindClockRangeForMode(clockRanges, p);
- if (cp == NULL) {
- /*
- * XXX Could do more here to provide a more detailed
- * reason for not finding a mode.
- */
- p->status = MODE_CLOCK_RANGE;
- if (!found)
- status = MODE_CLOCK_RANGE;
- continue;
- }
-
- /*
- * If programmable clock and strategy is not LOOKUP_BEST_REFRESH,
- * the required mode has been found, otherwise record the refresh
- * and continue looking.
- */
- if (scrp->progClock) {
- found = TRUE;
- if (strategy != LOOKUP_BEST_REFRESH) {
- bestMode = p;
- DivFactor = cp->ClockDivFactor;
- MulFactor = cp->ClockMulFactor;
- ModePrivFlags = cp->PrivFlags;
- break;
- }
- refresh = ModeVRefresh(p);
- if (p->Flags & V_INTERLACE)
- refresh /= INTERLACE_REFRESH_WEIGHT;
- if (refresh > bestRefresh) {
- bestMode = p;
- DivFactor = cp->ClockDivFactor;
- MulFactor = cp->ClockMulFactor;
- ModePrivFlags = cp->PrivFlags;
- bestRefresh = refresh;
- }
- continue;
- }
-
- /*
- * Clock is in range, so if it is not a programmable clock, find
- * a matching clock.
- */
-
- i = xf86GetNearestClock(scrp, p->Clock, allowDiv2,
- cp->ClockDivFactor, cp->ClockMulFactor, &k);
- /*
- * If the clock is too far from the requested clock, this
- * mode is no good.
- */
- if (k & V_CLKDIV2)
- gap = abs((p->Clock * 2) -
- ((scrp->clock[i] * cp->ClockDivFactor) / cp->ClockMulFactor));
- else
- gap = abs(p->Clock -
- ((scrp->clock[i] * cp->ClockDivFactor) / cp->ClockMulFactor));
- if (gap > minimumGap) {
- p->status = MODE_NOCLOCK;
- if (!found)
- status = MODE_NOCLOCK;
- continue;
- }
- found = TRUE;
-
- if (strategy == LOOKUP_BEST_REFRESH) {
- refresh = ModeVRefresh(p);
- if (p->Flags & V_INTERLACE)
- refresh /= INTERLACE_REFRESH_WEIGHT;
- if (refresh > bestRefresh) {
- bestMode = p;
- DivFactor = cp->ClockDivFactor;
- MulFactor = cp->ClockMulFactor;
- ModePrivFlags = cp->PrivFlags;
- extraFlags = k;
- clockIndex = i;
- bestRefresh = refresh;
- }
- continue;
- }
- if (strategy == LOOKUP_CLOSEST_CLOCK) {
- if (gap < minimumGap) {
- bestMode = p;
- DivFactor = cp->ClockDivFactor;
- MulFactor = cp->ClockMulFactor;
- ModePrivFlags = cp->PrivFlags;
- extraFlags = k;
- clockIndex = i;
- minimumGap = gap;
- }
- continue;
- }
- /*
- * If strategy is neither LOOKUP_BEST_REFRESH or
- * LOOKUP_CLOSEST_CLOCK the required mode has been found.
- */
- bestMode = p;
- DivFactor = cp->ClockDivFactor;
- MulFactor = cp->ClockMulFactor;
- ModePrivFlags = cp->PrivFlags;
- extraFlags = k;
- clockIndex = i;
- break;
- }
- }
- if (!found || bestMode == NULL)
- return status;
-
- /* Fill in the mode parameters */
- if (scrp->progClock) {
- modep->Clock = bestMode->Clock;
- modep->ClockIndex = -1;
- modep->SynthClock = (modep->Clock * MulFactor) / DivFactor;
- } else {
- modep->Clock = (scrp->clock[clockIndex] * DivFactor) / MulFactor;
- modep->ClockIndex = clockIndex;
- modep->SynthClock = scrp->clock[clockIndex];
- if (extraFlags & V_CLKDIV2) {
- modep->Clock /= 2;
- modep->SynthClock /= 2;
- }
- }
- modep->type = bestMode->type;
- modep->PrivFlags = ModePrivFlags;
- modep->HDisplay = bestMode->HDisplay;
- modep->HSyncStart = bestMode->HSyncStart;
- modep->HSyncEnd = bestMode->HSyncEnd;
- modep->HTotal = bestMode->HTotal;
- modep->HSkew = bestMode->HSkew;
- modep->VDisplay = bestMode->VDisplay;
- modep->VSyncStart = bestMode->VSyncStart;
- modep->VSyncEnd = bestMode->VSyncEnd;
- modep->VTotal = bestMode->VTotal;
- modep->VScan = bestMode->VScan;
- modep->Flags = bestMode->Flags | extraFlags;
- modep->CrtcHDisplay = bestMode->CrtcHDisplay;
- modep->CrtcHBlankStart = bestMode->CrtcHBlankStart;
- modep->CrtcHSyncStart = bestMode->CrtcHSyncStart;
- modep->CrtcHSyncEnd = bestMode->CrtcHSyncEnd;
- modep->CrtcHBlankEnd = bestMode->CrtcHBlankEnd;
- modep->CrtcHTotal = bestMode->CrtcHTotal;
- modep->CrtcHSkew = bestMode->CrtcHSkew;
- modep->CrtcVDisplay = bestMode->CrtcVDisplay;
- modep->CrtcVBlankStart = bestMode->CrtcVBlankStart;
- modep->CrtcVSyncStart = bestMode->CrtcVSyncStart;
- modep->CrtcVSyncEnd = bestMode->CrtcVSyncEnd;
- modep->CrtcVBlankEnd = bestMode->CrtcVBlankEnd;
- modep->CrtcVTotal = bestMode->CrtcVTotal;
- modep->CrtcHAdjusted = bestMode->CrtcHAdjusted;
- modep->CrtcVAdjusted = bestMode->CrtcVAdjusted;
- modep->HSync = bestMode->HSync;
- modep->VRefresh = bestMode->VRefresh;
- modep->Private = bestMode->Private;
- modep->PrivSize = bestMode->PrivSize;
-
- bestMode->prev = modep;
-
- return MODE_OK;
-}
-
-
-/*
- * xf86SetModeCrtc
- *
- * Initialises the Crtc parameters for a mode. The initialisation includes
- * adjustments for interlaced and double scan modes.
- */
-static void
-xf86SetModeCrtc(DisplayModePtr p, int adjustFlags)
-{
- if ((p == NULL) || ((p->type & M_T_CRTC_C) == M_T_BUILTIN))
- return;
-
- p->CrtcHDisplay = p->HDisplay;
- p->CrtcHSyncStart = p->HSyncStart;
- p->CrtcHSyncEnd = p->HSyncEnd;
- p->CrtcHTotal = p->HTotal;
- p->CrtcHSkew = p->HSkew;
- p->CrtcVDisplay = p->VDisplay;
- p->CrtcVSyncStart = p->VSyncStart;
- p->CrtcVSyncEnd = p->VSyncEnd;
- p->CrtcVTotal = p->VTotal;
- if (p->Flags & V_INTERLACE) {
- if (adjustFlags & INTERLACE_HALVE_V) {
- p->CrtcVDisplay /= 2;
- p->CrtcVSyncStart /= 2;
- p->CrtcVSyncEnd /= 2;
- p->CrtcVTotal /= 2;
- }
- /* Force interlaced modes to have an odd VTotal */
- /* maybe we should only do this when INTERLACE_HALVE_V is set? */
- p->CrtcVTotal |= 1;
- }
-
- if (p->Flags & V_DBLSCAN) {
- p->CrtcVDisplay *= 2;
- p->CrtcVSyncStart *= 2;
- p->CrtcVSyncEnd *= 2;
- p->CrtcVTotal *= 2;
- }
- if (p->VScan > 1) {
- p->CrtcVDisplay *= p->VScan;
- p->CrtcVSyncStart *= p->VScan;
- p->CrtcVSyncEnd *= p->VScan;
- p->CrtcVTotal *= p->VScan;
- }
- p->CrtcHAdjusted = FALSE;
- p->CrtcVAdjusted = FALSE;
-
- /*
- * XXX
- *
- * The following is taken from VGA, but applies to other cores as well.
- */
- p->CrtcVBlankStart = min(p->CrtcVSyncStart, p->CrtcVDisplay);
- p->CrtcVBlankEnd = max(p->CrtcVSyncEnd, p->CrtcVTotal);
- if ((p->CrtcVBlankEnd - p->CrtcVBlankStart) >= 127) {
- /*
- * V Blanking size must be < 127.
- * Moving blank start forward is safer than moving blank end
- * back, since monitors clamp just AFTER the sync pulse (or in
- * the sync pulse), but never before.
- */
- p->CrtcVBlankStart = p->CrtcVBlankEnd - 127;
- /*
- * If VBlankStart is now > VSyncStart move VBlankStart
- * to VSyncStart using the maximum width that fits into
- * VTotal.
- */
- if (p->CrtcVBlankStart > p->CrtcVSyncStart) {
- p->CrtcVBlankStart = p->CrtcVSyncStart;
- p->CrtcVBlankEnd = min(p->CrtcHBlankStart + 127, p->CrtcVTotal);
- }
- }
- p->CrtcHBlankStart = min(p->CrtcHSyncStart, p->CrtcHDisplay);
- p->CrtcHBlankEnd = max(p->CrtcHSyncEnd, p->CrtcHTotal);
-
- if ((p->CrtcHBlankEnd - p->CrtcHBlankStart) >= 63 * 8) {
- /*
- * H Blanking size must be < 63*8. Same remark as above.
- */
- p->CrtcHBlankStart = p->CrtcHBlankEnd - 63 * 8;
- if (p->CrtcHBlankStart > p->CrtcHSyncStart) {
- p->CrtcHBlankStart = p->CrtcHSyncStart;
- p->CrtcHBlankEnd = min(p->CrtcHBlankStart + 63 * 8, p->CrtcHTotal);
- }
- }
-}
-
-/*
- * xf86CheckModeForMonitor
- *
- * This function takes a mode and monitor description, and determines
- * if the mode is valid for the monitor.
- */
-ModeStatus
-xf86CheckModeForMonitor(DisplayModePtr mode, MonPtr monitor)
-{
- int i;
-
- /* Sanity checks */
- if (mode == NULL || monitor == NULL) {
- ErrorF("xf86CheckModeForMonitor: called with invalid parameters\n");
- return MODE_ERROR;
- }
-
-#ifdef DEBUG
- ErrorF("xf86CheckModeForMonitor(%p %s, %p %s)\n",
- mode, mode->name, monitor, monitor->id);
-#endif
-
- if (monitor->DDC) {
- xf86MonPtr DDC = (xf86MonPtr)(monitor->DDC);
- struct detailed_monitor_section* detMon;
- struct monitor_ranges *mon_range;
- int i;
-
- mon_range = NULL;
- for (i = 0; i < 4; i++) {
- detMon = &DDC->det_mon[i];
- if(detMon->type == DS_RANGES) {
- mon_range = &detMon->section.ranges;
- }
- }
- if (mon_range) {
- /* mode->Clock in kHz, DDC in MHz */
- if (mon_range->max_clock < 2550 &&
- mode->Clock / 1000.0 > mon_range->max_clock) {
- xf86Msg(X_WARNING,
- "(%s,%s) mode clock %gMHz exceeds DDC maximum %dMHz\n",
- mode->name, monitor->id,
- mode->Clock/1000.0, mon_range->max_clock);
- }
- }
- }
-
- /* Some basic mode validity checks */
- if (0 >= mode->HDisplay || mode->HDisplay > mode->HSyncStart ||
- mode->HSyncStart >= mode->HSyncEnd || mode->HSyncEnd >= mode->HTotal)
- return MODE_H_ILLEGAL;
-
- if (0 >= mode->VDisplay || mode->VDisplay > mode->VSyncStart ||
- mode->VSyncStart >= mode->VSyncEnd || mode->VSyncEnd >= mode->VTotal)
- return MODE_V_ILLEGAL;
-
- if (monitor->nHsync > 0) {
- /* Check hsync against the allowed ranges */
- float hsync = ModeHSync(mode);
- for (i = 0; i < monitor->nHsync; i++)
- if ((hsync > monitor->hsync[i].lo * (1.0 - SYNC_TOLERANCE)) &&
- (hsync < monitor->hsync[i].hi * (1.0 + SYNC_TOLERANCE)))
- break;
-
- /* Now see whether we ran out of sync ranges without finding a match */
- if (i == monitor->nHsync)
- return MODE_HSYNC;
- }
-
- if (monitor->nVrefresh > 0) {
- /* Check vrefresh against the allowed ranges */
- float vrefrsh = ModeVRefresh(mode);
- for (i = 0; i < monitor->nVrefresh; i++)
- if ((vrefrsh > monitor->vrefresh[i].lo * (1.0 - SYNC_TOLERANCE)) &&
- (vrefrsh < monitor->vrefresh[i].hi * (1.0 + SYNC_TOLERANCE)))
- break;
-
- /* Now see whether we ran out of refresh ranges without finding a match */
- if (i == monitor->nVrefresh)
- return MODE_VSYNC;
- }
-
- /* Force interlaced modes to have an odd VTotal */
- if (mode->Flags & V_INTERLACE)
- mode->CrtcVTotal = mode->VTotal |= 1;
-
- return MODE_OK;
-}
-
-/*
- * xf86CheckModeSize
- *
- * An internal routine to check if a mode fits in video memory. This tries to
- * avoid overflows that would otherwise occur when video memory size is greater
- * than 256MB.
- */
-static Bool
-xf86CheckModeSize(ScrnInfoPtr scrp, int w, int x, int y)
-{
- int bpp = scrp->fbFormat.bitsPerPixel,
- pad = scrp->fbFormat.scanlinePad;
- int lineWidth, lastWidth;
-
- if (scrp->depth == 4)
- pad *= 4; /* 4 planes */
-
- /* Sanity check */
- if ((w < 0) || (x < 0) || (y <= 0))
- return FALSE;
-
- lineWidth = (((w * bpp) + pad - 1) / pad) * pad;
- lastWidth = x * bpp;
-
- /*
- * At this point, we need to compare
- *
- * (lineWidth * (y - 1)) + lastWidth
- *
- * against
- *
- * scrp->videoRam * (1024 * 8)
- *
- * These are bit quantities. To avoid overflows, do the comparison in
- * terms of BITMAP_SCANLINE_PAD units. This assumes BITMAP_SCANLINE_PAD
- * is a power of 2. We currently use 32, which limits us to a video
- * memory size of 8GB.
- */
-
- lineWidth = (lineWidth + (BITMAP_SCANLINE_PAD - 1)) / BITMAP_SCANLINE_PAD;
- lastWidth = (lastWidth + (BITMAP_SCANLINE_PAD - 1)) / BITMAP_SCANLINE_PAD;
-
- if ((lineWidth * (y - 1) + lastWidth) >
- (scrp->videoRam * ((1024 * 8) / BITMAP_SCANLINE_PAD)))
- return FALSE;
-
- return TRUE;
-}
-
-/*
- * xf86InitialCheckModeForDriver
- *
- * This function checks if a mode satisfies a driver's initial requirements:
- * - mode size fits within the available pixel area (memory)
- * - width lies within the range of supported line pitches
- * - mode size fits within virtual size (if fixed)
- * - horizontal timings are in range
- *
- * This function takes the following parameters:
- * scrp ScrnInfoPtr
- * mode mode to check
- * maxPitch (optional) maximum line pitch
- * virtualX (optional) virtual width requested
- * virtualY (optional) virtual height requested
- *
- * In addition, the following fields from the ScrnInfoRec are used:
- * monitor pointer to structure for monitor section
- * fbFormat pixel format for the framebuffer
- * videoRam video memory size (in kB)
- * maxHValue maximum horizontal timing value
- * maxVValue maximum vertical timing value
- */
-
-ModeStatus
-xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode,
- ClockRangePtr clockRanges,
- LookupModeFlags strategy,
- int maxPitch, int virtualX, int virtualY)
-{
- ClockRangePtr cp;
- ModeStatus status;
- Bool allowDiv2 = (strategy & LOOKUP_CLKDIV2) != 0;
- int i, needDiv2;
-
- /* Sanity checks */
- if (!scrp || !mode || !clockRanges) {
- ErrorF("xf86InitialCheckModeForDriver: "
- "called with invalid parameters\n");
- return MODE_ERROR;
- }
-
-#ifdef DEBUG
- ErrorF("xf86InitialCheckModeForDriver(%p, %p %s, %p, 0x%x, %d, %d, %d)\n",
- scrp, mode, mode->name , clockRanges, strategy, maxPitch, virtualX, virtualY);
-#endif
-
- /* Some basic mode validity checks */
- if (0 >= mode->HDisplay || mode->HDisplay > mode->HSyncStart ||
- mode->HSyncStart >= mode->HSyncEnd || mode->HSyncEnd >= mode->HTotal)
- return MODE_H_ILLEGAL;
-
- if (0 >= mode->VDisplay || mode->VDisplay > mode->VSyncStart ||
- mode->VSyncStart >= mode->VSyncEnd || mode->VSyncEnd >= mode->VTotal)
- return MODE_V_ILLEGAL;
-
- if (!xf86CheckModeSize(scrp, mode->HDisplay, mode->HDisplay,
- mode->VDisplay))
- return MODE_MEM;
-
- if (maxPitch > 0 && mode->HDisplay > maxPitch)
- return MODE_BAD_WIDTH;
-
- if (virtualX > 0 && mode->HDisplay > virtualX)
- return MODE_VIRTUAL_X;
-
- if (virtualY > 0 && mode->VDisplay > virtualY)
- return MODE_VIRTUAL_Y;
-
- if (scrp->maxHValue > 0 && mode->HTotal > scrp->maxHValue)
- return MODE_BAD_HVALUE;
-
- if (scrp->maxVValue > 0 && mode->VTotal > scrp->maxVValue)
- return MODE_BAD_VVALUE;
-
- /*
- * The use of the DisplayModeRec's Crtc* and SynthClock elements below is
- * provisional, in that they are later reused by the driver at mode-set
- * time. Here, they are temporarily enlisted to contain the mode timings
- * as seen by the CRT or panel (rather than the CRTC). The driver's
- * ValidMode() is allowed to modify these so it can deal with such things
- * as mode stretching and/or centering. The driver should >NOT< modify the
- * user-supplied values as these are reported back when mode validation is
- * said and done.
- */
- /*
- * NOTE: We (ab)use the mode->Crtc* values here to store timing
- * information for the calculation of Hsync and Vrefresh. Before
- * these values are calculated the driver is given the opportunity
- * to either set these HSync and VRefresh itself or modify the timing
- * values.
- * The difference to the final calculation is small but imortand:
- * here we pass the flag INTERLACE_HALVE_V regardless if the driver
- * sets it or not. This way our calculation of VRefresh has the same
- * effect as if we do if (flags & V_INTERLACE) refresh *= 2.0
- * This dual use of the mode->Crtc* values will certainly create
- * confusion and is bad software design. However since it's part of
- * the driver API it's hard to change.
- */
-
- if (scrp->ValidMode) {
-
- xf86SetModeCrtc(mode, INTERLACE_HALVE_V);
-
- cp = xf86FindClockRangeForMode(clockRanges, mode);
- if (!cp)
- return MODE_CLOCK_RANGE;
-
- if (cp->ClockMulFactor < 1)
- cp->ClockMulFactor = 1;
- if (cp->ClockDivFactor < 1)
- cp->ClockDivFactor = 1;
-
- /*
- * XXX The effect of clock dividers and multipliers on the monitor's
- * pixel clock needs to be verified.
- */
- if (scrp->progClock) {
- mode->SynthClock = mode->Clock;
- } else {
- i = xf86GetNearestClock(scrp, mode->Clock, allowDiv2,
- cp->ClockDivFactor, cp->ClockMulFactor,
- &needDiv2);
- mode->SynthClock = (scrp->clock[i] * cp->ClockDivFactor) /
- cp->ClockMulFactor;
- if (needDiv2 & V_CLKDIV2)
- mode->SynthClock /= 2;
- }
-
- status = (*scrp->ValidMode)(scrp->scrnIndex, mode, FALSE,
- MODECHECK_INITIAL);
- if (status != MODE_OK)
- return status;
-
- if (mode->HSync <= 0.0)
- mode->HSync = (float)mode->SynthClock / (float)mode->CrtcHTotal;
- if (mode->VRefresh <= 0.0)
- mode->VRefresh = (mode->SynthClock * 1000.0)
- / (mode->CrtcHTotal * mode->CrtcVTotal);
- }
-
- mode->HSync = ModeHSync(mode);
- mode->VRefresh = ModeVRefresh(mode);
-
- /* Assume it is OK */
- return MODE_OK;
-}
-
-/*
- * xf86CheckModeForDriver
- *
- * This function is for checking modes while the server is running (for
- * use mainly by the VidMode extension).
- *
- * This function checks if a mode satisfies a driver's requirements:
- * - width lies within the line pitch
- * - mode size fits within virtual size
- * - horizontal/vertical timings are in range
- *
- * This function takes the following parameters:
- * scrp ScrnInfoPtr
- * mode mode to check
- * flags not (currently) used
- *
- * In addition, the following fields from the ScrnInfoRec are used:
- * maxHValue maximum horizontal timing value
- * maxVValue maximum vertical timing value
- * virtualX virtual width
- * virtualY virtual height
- * clockRanges allowable clock ranges
- */
-
-ModeStatus
-xf86CheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, int flags)
-{
- ClockRangesPtr cp;
- int i, k, gap, minimumGap = CLOCK_TOLERANCE + 1;
- int extraFlags = 0;
- int clockIndex = -1;
- int MulFactor = 1;
- int DivFactor = 1;
- int ModePrivFlags = 0;
- Bool allowDiv2;
- ModeStatus status = MODE_NOMODE;
-
- /* Some sanity checking */
- if (scrp == NULL || (!scrp->progClock && scrp->numClocks == 0)) {
- ErrorF("xf86CheckModeForDriver: called with invalid scrnInfoRec\n");
- return MODE_ERROR;
- }
- if (mode == NULL) {
- ErrorF("xf86CheckModeForDriver: called with invalid modep\n");
- return MODE_ERROR;
- }
-
- /* Check the mode size */
- if (mode->HDisplay > scrp->virtualX)
- return MODE_VIRTUAL_X;
-
- if (mode->VDisplay > scrp->virtualY)
- return MODE_VIRTUAL_Y;
-
- if (scrp->maxHValue > 0 && mode->HTotal > scrp->maxHValue)
- return MODE_BAD_HVALUE;
-
- if (scrp->maxVValue > 0 && mode->VTotal > scrp->maxVValue)
- return MODE_BAD_VVALUE;
-
- for (cp = scrp->clockRanges; cp != NULL; cp = cp->next) {
- /* DivFactor and MulFactor must be > 0 */
- cp->ClockDivFactor = max(1, cp->ClockDivFactor);
- cp->ClockMulFactor = max(1, cp->ClockMulFactor);
- }
-
- if (scrp->progClock) {
- /* Check clock is in range */
- for (cp = scrp->clockRanges; cp != NULL; cp = cp->next) {
- if ((cp->minClock <= mode->Clock) &&
- (cp->maxClock >= mode->Clock) &&
- (cp->interlaceAllowed || !(mode->Flags & V_INTERLACE)) &&
- (cp->doubleScanAllowed ||
- ((!(mode->Flags & V_DBLSCAN)) && (mode->VScan <= 1))))
- break;
- }
- if (cp == NULL) {
- return MODE_CLOCK_RANGE;
- }
- /*
- * If programmable clock the required mode has been found
- */
- DivFactor = cp->ClockDivFactor;
- MulFactor = cp->ClockMulFactor;
- ModePrivFlags = cp->PrivFlags;
- } else {
- status = MODE_CLOCK_RANGE;
- /* Check clock is in range */
- for (cp = scrp->clockRanges; cp != NULL; cp = cp->next) {
- if ((cp->minClock <= mode->Clock) &&
- (cp->maxClock >= mode->Clock) &&
- (cp->interlaceAllowed || !(mode->Flags & V_INTERLACE)) &&
- (cp->doubleScanAllowed ||
- ((!(mode->Flags & V_DBLSCAN)) && (mode->VScan <= 1)))) {
-
- /*
- * Clock is in range, so if it is not a programmable clock,
- * find a matching clock.
- */
-
- allowDiv2 = (cp->strategy & LOOKUP_CLKDIV2) != 0;
- i = xf86GetNearestClock(scrp, mode->Clock, allowDiv2,
- cp->ClockDivFactor, cp->ClockMulFactor, &k);
- /*
- * If the clock is too far from the requested clock, this
- * mode is no good.
- */
- if (k & V_CLKDIV2)
- gap = abs((mode->Clock * 2) -
- ((scrp->clock[i] * cp->ClockDivFactor) /
- cp->ClockMulFactor));
- else
- gap = abs(mode->Clock -
- ((scrp->clock[i] * cp->ClockDivFactor) /
- cp->ClockMulFactor));
- if (gap > minimumGap) {
- status = MODE_NOCLOCK;
- continue;
- }
-
- DivFactor = cp->ClockDivFactor;
- MulFactor = cp->ClockMulFactor;
- ModePrivFlags = cp->PrivFlags;
- extraFlags = k;
- clockIndex = i;
- break;
- }
- }
- if (cp == NULL)
- return status;
- }
-
- /* Fill in the mode parameters */
- if (scrp->progClock) {
- mode->ClockIndex = -1;
- mode->SynthClock = (mode->Clock * MulFactor) / DivFactor;
- } else {
- mode->Clock = (scrp->clock[clockIndex] * DivFactor) / MulFactor;
- mode->ClockIndex = clockIndex;
- mode->SynthClock = scrp->clock[clockIndex];
- if (extraFlags & V_CLKDIV2) {
- mode->Clock /= 2;
- mode->SynthClock /= 2;
- }
- }
- mode->PrivFlags = ModePrivFlags;
-
- return MODE_OK;
-}
-
-/*
- * xf86ValidateModes
- *
- * This function takes a set of mode names, modes and limiting conditions,
- * and selects a set of modes and parameters based on those conditions.
- *
- * This function takes the following parameters:
- * scrp ScrnInfoPtr
- * availModes the list of modes available for the monitor
- * modeNames (optional) list of mode names that the screen is requesting
- * clockRanges a list of clock ranges
- * linePitches (optional) a list of line pitches
- * minPitch (optional) minimum line pitch (in pixels)
- * maxPitch (optional) maximum line pitch (in pixels)
- * pitchInc (mandatory) pitch increment (in bits)
- * minHeight (optional) minimum virtual height (in pixels)
- * maxHeight (optional) maximum virtual height (in pixels)
- * virtualX (optional) virtual width requested (in pixels)
- * virtualY (optional) virtual height requested (in pixels)
- * apertureSize size of video aperture (in bytes)
- * strategy how to decide which mode to use from multiple modes with
- * the same name
- *
- * In addition, the following fields from the ScrnInfoRec are used:
- * clocks a list of discrete clocks
- * numClocks number of discrete clocks
- * progClock clock is programmable
- * monitor pointer to structure for monitor section
- * fbFormat format of the framebuffer
- * videoRam video memory size
- * maxHValue maximum horizontal timing value
- * maxVValue maximum vertical timing value
- * xInc horizontal timing increment (defaults to 8 pixels)
- *
- * The function fills in the following ScrnInfoRec fields:
- * modePool A subset of the modes available to the monitor which
- * are compatible with the driver.
- * modes one mode entry for each of the requested modes, with the
- * status field filled in to indicate if the mode has been
- * accepted or not.
- * virtualX the resulting virtual width
- * virtualY the resulting virtual height
- * displayWidth the resulting line pitch
- *
- * The function's return value is the number of matching modes found, or -1
- * if an unrecoverable error was encountered.
- */
-
-int
-xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
- char **modeNames, ClockRangePtr clockRanges,
- int *linePitches, int minPitch, int maxPitch, int pitchInc,
- int minHeight, int maxHeight, int virtualX, int virtualY,
- int apertureSize, LookupModeFlags strategy)
-{
- DisplayModePtr p, q, r, new, last, *endp;
- int i, numModes = 0;
- ModeStatus status;
- int linePitch = -1, virtX = 0, virtY = 0;
- int newLinePitch, newVirtX, newVirtY;
- int modeSize; /* in pixels */
- Bool validateAllDefaultModes = FALSE;
- Bool userModes = FALSE;
- int saveType;
- PixmapFormatRec *BankFormat;
- ClockRangePtr cp;
- ClockRangesPtr storeClockRanges;
- struct monitor_ranges *mon_range = NULL;
- double targetRefresh = 0.0;
- int numTimings = 0;
- range hsync[MAX_HSYNC];
- range vrefresh[MAX_VREFRESH];
-
-#ifdef DEBUG
- ErrorF("xf86ValidateModes(%p, %p, %p, %p,\n\t\t %p, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x)\n",
- scrp, availModes, modeNames, clockRanges,
- linePitches, minPitch, maxPitch, pitchInc,
- minHeight, maxHeight, virtualX, virtualY,
- apertureSize, strategy
- );
-#endif
-
- /* Some sanity checking */
- if (scrp == NULL || scrp->name == NULL || !scrp->monitor ||
- (!scrp->progClock && scrp->numClocks == 0)) {
- ErrorF("xf86ValidateModes: called with invalid scrnInfoRec\n");
- return -1;
- }
- if (linePitches != NULL && linePitches[0] <= 0) {
- ErrorF("xf86ValidateModes: called with invalid linePitches\n");
- return -1;
- }
- if (pitchInc <= 0) {
- ErrorF("xf86ValidateModes: called with invalid pitchInc\n");
- return -1;
- }
- if ((virtualX > 0) != (virtualY > 0)) {
- ErrorF("xf86ValidateModes: called with invalid virtual resolution\n");
- return -1;
- }
-
- /*
- * Probe monitor so that we can enforce/warn about its limits.
- * If one or more DS_RANGES descriptions are present, use the parameters
- * that they provide. Otherwise, deduce limits based on the modes that
- * are shown as supported via standard and detailed timings.
- *
- * XXX The full potential of the DDC/EDID data still isn't being tapped.
- */
- if (scrp->monitor->DDC) {
- MonPtr monitor = scrp->monitor;
- xf86MonPtr DDC = (xf86MonPtr)(scrp->monitor->DDC);
- int i, j;
- float hmin = 1e6, hmax = 0.0, vmin = 1e6, vmax = 0.0;
- float h;
- struct std_timings *t;
- struct detailed_timings *dt;
-
- numTimings = 0;
- for (i = 0; i < DET_TIMINGS; i++) {
- switch (DDC->det_mon[i].type) {
- case DS_RANGES:
- mon_range = &DDC->det_mon[i].section.ranges;
- hsync[numTimings].lo = mon_range->min_h;
- hsync[numTimings].hi = mon_range->max_h;
- vrefresh[numTimings].lo = mon_range->min_v;
- vrefresh[numTimings].hi = mon_range->max_v;
- numTimings++;
- break;
-
- case DS_STD_TIMINGS:
- t = DDC->det_mon[i].section.std_t;
- for (j = 0; j < 5; j++) {
- if (t[j].hsize > 256) { /* sanity check */
- if (t[j].refresh < vmin)
- vmin = t[i].refresh;
- if (t[j].refresh > vmax)
- vmax = t[i].refresh;
- /*
- * For typical modes this is a reasonable estimate
- * of the horizontal sync rate.
- */
- h = t[j].refresh * 1.07 * t[j].vsize / 1000.0;
- if (h < hmin)
- hmin = h;
- if (h > hmax)
- hmax = h;
- }
- }
- break;
-
- case DT:
- dt = &DDC->det_mon[i].section.d_timings;
- if (dt->clock > 15000000) { /* sanity check */
- float v;
- h = (float)dt->clock / (dt->h_active + dt->h_blanking);
- v = h / (dt->v_active + dt->v_blanking);
- h /= 1000.0;
- if (dt->interlaced)
- v /= 2.0;
-
- if (v < vmin)
- vmin = v;
- if (v > vmax)
- vmax = v;
- if (h < hmin)
- hmin = h;
- if (h > hmax)
- hmax = h;
- }
- break;
- }
-
- if (numTimings > MAX_HSYNC)
- break;
- }
-
- if (numTimings == 0) {
- t = DDC->timings2;
- for (i = 0; i < STD_TIMINGS; i++) {
- if (t[i].hsize > 256) { /* sanity check */
- if (t[i].refresh < vmin)
- vmin = t[i].refresh;
- if (t[i].refresh > vmax)
- vmax = t[i].refresh;
- /*
- * For typical modes this is a reasonable estimate
- * of the horizontal sync rate.
- */
- h = t[i].refresh * 1.07 * t[i].vsize / 1000.0;
- if (h < hmin)
- hmin = h;
- if (h > hmax)
- hmax = h;
- }
- }
-
- if (hmax > 0.0) {
- hsync[numTimings].lo = hmin;
- hsync[numTimings].hi = hmax;
- vrefresh[numTimings].lo = vmin;
- vrefresh[numTimings].hi = vmax;
- numTimings++;
- }
- }
-
- if (numTimings > 0) {
-
-#ifdef DEBUG
- for (i = 0; i < numTimings; i++) {
- ErrorF("DDC - Hsync %.1f-%.1f kHz - Vrefresh %.1f-%.1f Hz\n",
- hsync[i].lo, hsync[i].hi,
- vrefresh[i].lo, vrefresh[i].hi);
- }
-#endif
-
-#define DDC_SYNC_TOLERANCE SYNC_TOLERANCE
- if (monitor->nHsync > 0) {
- for (i = 0; i < monitor->nHsync; i++) {
- Bool good = FALSE;
- for (j = 0; j < numTimings; j++) {
- if ((1.0 - DDC_SYNC_TOLERANCE) * hsync[j].lo <=
- monitor->hsync[i].lo &&
- (1.0 + DDC_SYNC_TOLERANCE) * hsync[j].hi >=
- monitor->hsync[i].hi) {
- good = TRUE;
- break;
- }
- }
- if (!good) {
- xf86DrvMsg(scrp->scrnIndex, X_WARNING,
- "config file hsync range %g-%gkHz not within DDC "
- "hsync ranges.\n",
- monitor->hsync[i].lo, monitor->hsync[i].hi);
- }
- }
- }
-
- if (monitor->nVrefresh > 0) {
- for (i = 0; i < monitor->nVrefresh; i++) {
- Bool good = FALSE;
- for (j = 0; j < numTimings; j++) {
- if ((1.0 - DDC_SYNC_TOLERANCE) * vrefresh[j].lo <=
- monitor->vrefresh[0].lo &&
- (1.0 + DDC_SYNC_TOLERANCE) * vrefresh[j].hi >=
- monitor->vrefresh[0].hi) {
- good = TRUE;
- break;
- }
- }
- if (!good) {
- xf86DrvMsg(scrp->scrnIndex, X_WARNING,
- "config file vrefresh range %g-%gHz not within DDC "
- "vrefresh ranges.\n",
- monitor->vrefresh[i].lo, monitor->vrefresh[i].hi);
- }
- }
- }
- }
- }
-
- /*
- * If requested by the driver, allow missing hsync and/or vrefresh ranges
- * in the monitor section.
- */
- if (strategy & LOOKUP_OPTIONAL_TOLERANCES) {
- strategy &= ~LOOKUP_OPTIONAL_TOLERANCES;
- } else {
- const char *type = "";
-
- if (scrp->monitor->nHsync <= 0) {
- if (numTimings > 0) {
- scrp->monitor->nHsync = numTimings;
- for (i = 0; i < numTimings; i++) {
- scrp->monitor->hsync[i].lo = hsync[i].lo;
- scrp->monitor->hsync[i].hi = hsync[i].hi;
- }
- } else {
- scrp->monitor->hsync[0].lo = 28;
- scrp->monitor->hsync[0].hi = 33;
- scrp->monitor->nHsync = 1;
- }
- type = "default ";
- }
- for (i = 0; i < scrp->monitor->nHsync; i++) {
- if (scrp->monitor->hsync[i].lo == scrp->monitor->hsync[i].hi)
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "%s: Using %shsync value of %.2f kHz\n",
- scrp->monitor->id, type,
- scrp->monitor->hsync[i].lo);
- else
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "%s: Using %shsync range of %.2f-%.2f kHz\n",
- scrp->monitor->id, type,
- scrp->monitor->hsync[i].lo,
- scrp->monitor->hsync[i].hi);
- }
-
- type = "";
- if (scrp->monitor->nVrefresh <= 0) {
- if (numTimings > 0) {
- scrp->monitor->nVrefresh = numTimings;
- for (i = 0; i < numTimings; i++) {
- scrp->monitor->vrefresh[i].lo = vrefresh[i].lo;
- scrp->monitor->vrefresh[i].hi = vrefresh[i].hi;
- }
- } else {
- scrp->monitor->vrefresh[0].lo = 43;
- scrp->monitor->vrefresh[0].hi = 72;
- scrp->monitor->nVrefresh = 1;
- }
- type = "default ";
- }
- for (i = 0; i < scrp->monitor->nVrefresh; i++) {
- if (scrp->monitor->vrefresh[i].lo == scrp->monitor->vrefresh[i].hi)
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "%s: Using %svrefresh value of %.2f Hz\n",
- scrp->monitor->id, type,
- scrp->monitor->vrefresh[i].lo);
- else
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "%s: Using %svrefresh range of %.2f-%.2f Hz\n",
- scrp->monitor->id, type,
- scrp->monitor->vrefresh[i].lo,
- scrp->monitor->vrefresh[i].hi);
- }
- }
-
- /*
- * Store the clockRanges for later use by the VidMode extension. Must
- * also store the strategy, since ClockDiv2 flag is stored there.
- */
- storeClockRanges = scrp->clockRanges;
- while (storeClockRanges != NULL) {
- storeClockRanges = storeClockRanges->next;
- }
- for (cp = clockRanges; cp != NULL; cp = cp->next,
- storeClockRanges = storeClockRanges->next) {
- storeClockRanges = xnfalloc(sizeof(ClockRanges));
- if (scrp->clockRanges == NULL)
- scrp->clockRanges = storeClockRanges;
- memcpy(storeClockRanges, cp, sizeof(ClockRange));
- storeClockRanges->strategy = strategy;
- }
-
- /* Determine which pixmap format to pass to miScanLineWidth() */
- if (scrp->depth > 4)
- BankFormat = &scrp->fbFormat;
- else
- BankFormat = xf86GetPixFormat(scrp, 1); /* >not< scrp->depth! */
-
- if (scrp->xInc <= 0)
- scrp->xInc = 8; /* Suitable for VGA and others */
-
-#define _VIRTUALX(x) ((((x) + scrp->xInc - 1) / scrp->xInc) * scrp->xInc)
-
- /*
- * Determine maxPitch if it wasn't given explicitly. Note linePitches
- * always takes precedence if is non-NULL. In that case the minPitch and
- * maxPitch values passed are ignored.
- */
- if (linePitches) {
- minPitch = maxPitch = linePitches[0];
- for (i = 1; linePitches[i] > 0; i++) {
- if (linePitches[i] > maxPitch)
- maxPitch = linePitches[i];
- if (linePitches[i] < minPitch)
- minPitch = linePitches[i];
- }
- }
-
- /* Initial check of virtual size against other constraints */
- scrp->virtualFrom = X_PROBED;
- /*
- * Initialise virtX and virtY if the values are fixed.
- */
- if (virtualY > 0) {
- if (maxHeight > 0 && virtualY > maxHeight) {
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Virtual height (%d) is too large for the hardware "
- "(max %d)\n", virtualY, maxHeight);
- return -1;
- }
-
- if (minHeight > 0 && virtualY < minHeight) {
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Virtual height (%d) is too small for the hardware "
- "(min %d)\n", virtualY, minHeight);
- return -1;
- }
-
- virtualX = _VIRTUALX(virtualX);
- if (linePitches != NULL) {
- for (i = 0; linePitches[i] != 0; i++) {
- if ((linePitches[i] >= virtualX) &&
- (linePitches[i] ==
- miScanLineWidth(virtualX, virtualY, linePitches[i],
- apertureSize, BankFormat, pitchInc))) {
- linePitch = linePitches[i];
- break;
- }
- }
- } else {
- linePitch = miScanLineWidth(virtualX, virtualY, minPitch,
- apertureSize, BankFormat, pitchInc);
- }
-
- if ((linePitch < minPitch) || (linePitch > maxPitch)) {
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Virtual width (%d) is too large for the hardware "
- "(max %d)\n", virtualX, maxPitch);
- return -1;
- }
-
- if (!xf86CheckModeSize(scrp, linePitch, virtualX, virtualY)) {
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Virtual size (%dx%d) (pitch %d) exceeds video memory\n",
- virtualX, virtualY, linePitch);
- return -1;
- }
-
- virtX = virtualX;
- virtY = virtualY;
- scrp->virtualFrom = X_CONFIG;
- }
-
- /* Print clock ranges and scaled clocks */
- xf86ShowClockRanges(scrp, clockRanges);
-
- /*
- * If scrp->modePool hasn't been setup yet, set it up now. This allows the
- * modes that the driver definitely can't use to be weeded out early. Note
- * that a modePool mode's prev field is used to hold a pointer to the
- * member of the scrp->modes list for which a match was considered.
- */
- if (scrp->modePool == NULL) {
- q = NULL;
- for (p = availModes; p != NULL; p = p->next) {
- status = xf86InitialCheckModeForDriver(scrp, p, clockRanges,
- strategy, maxPitch,
- virtualX, virtualY);
-
- if (status == MODE_OK) {
- status = xf86CheckModeForMonitor(p, scrp->monitor);
- }
-
- if (status == MODE_OK) {
- new = xnfalloc(sizeof(DisplayModeRec));
- *new = *p;
- new->next = NULL;
- if (!q) {
- scrp->modePool = new;
- } else {
- q->next = new;
- }
- new->prev = NULL;
- q = new;
- q->name = xnfstrdup(p->name);
- q->status = MODE_OK;
- } else {
- if (p->type & M_T_BUILTIN)
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Not using built-in mode \"%s\" (%s)\n",
- p->name, xf86ModeStatusToString(status));
- else if (p->type & M_T_DEFAULT)
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Not using default mode \"%s\" (%s)\n", p->name,
- xf86ModeStatusToString(status));
- else
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Not using mode \"%s\" (%s)\n", p->name,
- xf86ModeStatusToString(status));
- }
- }
-
- if (scrp->modePool == NULL) {
- xf86DrvMsg(scrp->scrnIndex, X_WARNING, "Mode pool is empty\n");
- return 0;
- }
- } else {
- for (p = scrp->modePool; p != NULL; p = p->next) {
- p->prev = NULL;
- p->status = MODE_OK;
- }
- }
-
- /*
- * Go through the mode pool and see if any modes match the target
- * refresh rate, (if specified). If no modes match, abandon the target.
- */
- targetRefresh = xf86SetRealOption(scrp->options,
- "TargetRefresh", 0.0);
- if (targetRefresh > 0.0) {
- for (p = scrp->modePool; p != NULL; p = p->next) {
- if (ModeVRefresh(p) > targetRefresh * (1.0 - SYNC_TOLERANCE))
- break;
- }
- if (!p)
- targetRefresh = 0.0;
- }
-
- if (targetRefresh > 0.0) {
- xf86DrvMsg(scrp->scrnIndex, X_CONFIG,
- "Target refresh rate is %.1f Hz\n", targetRefresh);
- }
-
- /*
- * Allocate one entry in scrp->modes for each named mode.
- */
- while (scrp->modes)
- xf86DeleteMode(&scrp->modes, scrp->modes);
- endp = &scrp->modes;
- last = NULL;
- if (modeNames != NULL) {
- for (i = 0; modeNames[i] != NULL; i++) {
- userModes = TRUE;
- new = xnfcalloc(1, sizeof(DisplayModeRec));
- new->prev = last;
- new->type = M_T_USERDEF;
- new->name = xnfalloc(strlen(modeNames[i]) + 1);
- strcpy(new->name, modeNames[i]);
- if (new->prev)
- new->prev->next = new;
- *endp = last = new;
- endp = &new->next;
- }
- }
-
- /* Lookup each mode */
-#ifdef RANDR
- if (!xf86Info.disableRandR
-#ifdef PANORAMIX
- && noPanoramiXExtension
-#endif
- )
- validateAllDefaultModes = TRUE;
-#endif
-
- for (p = scrp->modes; ; p = p->next) {
- Bool repeat;
-
- /*
- * If the supplied mode names don't produce a valid mode, scan through
- * unconsidered modePool members until one survives validation. This
- * is done in decreasing order by mode pixel area.
- */
-
- if (p == NULL) {
- if ((numModes > 0) && !validateAllDefaultModes)
- break;
-
- validateAllDefaultModes = TRUE;
- r = NULL;
- modeSize = 0;
- for (q = scrp->modePool; q != NULL; q = q->next) {
- if ((q->prev == NULL) && (q->status == MODE_OK)) {
- /*
- * Deal with the case where this mode wasn't considered
- * because of a builtin mode of the same name.
- */
- for (p = scrp->modes; p != NULL; p = p->next) {
- if ((p->status != MODE_OK) &&
- !strcmp(p->name, q->name))
- break;
- }
-
- if (p != NULL)
- q->prev = p;
- else {
- /*
- * A quick check to not allow default modes with
- * horizontal timing parameters that CRTs may have
- * problems with.
- */
- if ((q->type & M_T_DEFAULT) &&
- ((double)q->HTotal / (double)q->HDisplay) < 1.15)
- continue;
-
- /*
- * If there is a target refresh rate, skip modes that
- * don't match up.
- */
- if (ModeVRefresh(q) <
- (1.0 - SYNC_TOLERANCE) * targetRefresh)
- continue;
-
- if (modeSize < (q->HDisplay * q->VDisplay)) {
- r = q;
- modeSize = q->HDisplay * q->VDisplay;
- }
- }
- }
- }
-
- if (r == NULL)
- break;
-
- p = xnfcalloc(1, sizeof(DisplayModeRec));
- p->prev = last;
- p->name = xnfalloc(strlen(r->name) + 1);
- if (!userModes)
- p->type = M_T_USERDEF;
- strcpy(p->name, r->name);
- if (p->prev)
- p->prev->next = p;
- *endp = last = p;
- endp = &p->next;
- }
-
- repeat = FALSE;
- lookupNext:
- if (repeat && ((status = p->status) != MODE_OK)) {
- if (p->type & M_T_BUILTIN)
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Not using built-in mode \"%s\" (%s)\n",
- p->name, xf86ModeStatusToString(status));
- else if (p->type & M_T_DEFAULT)
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Not using default mode \"%s\" (%s)\n", p->name,
- xf86ModeStatusToString(status));
- else
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Not using mode \"%s\" (%s)\n", p->name,
- xf86ModeStatusToString(status));
- }
- saveType = p->type;
- status = xf86LookupMode(scrp, p, clockRanges, strategy);
- if (repeat && status == MODE_NOMODE) {
- continue;
- }
- if (status != MODE_OK) {
- if (p->type & M_T_BUILTIN)
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Not using built-in mode \"%s\" (%s)\n",
- p->name, xf86ModeStatusToString(status));
- else if (p->type & M_T_DEFAULT)
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Not using default mode \"%s\" (%s)\n", p->name,
- xf86ModeStatusToString(status));
- else
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Not using mode \"%s\" (%s)\n", p->name,
- xf86ModeStatusToString(status));
- }
- if (status == MODE_ERROR) {
- ErrorF("xf86ValidateModes: "
- "unexpected result from xf86LookupMode()\n");
- return -1;
- }
- if (status != MODE_OK) {
- if (p->status == MODE_OK)
- p->status = status;
- continue;
- }
- p->type |= saveType;
- repeat = TRUE;
-
- newLinePitch = linePitch;
- newVirtX = virtX;
- newVirtY = virtY;
-
- /*
- * Don't let non-user defined modes increase the virtual size
- */
- if (!(p->type & M_T_USERDEF) && (numModes > 0)) {
- if (p->HDisplay > virtX) {
- p->status = MODE_VIRTUAL_X;
- goto lookupNext;
- }
- if (p->VDisplay > virtY) {
- p->status = MODE_VIRTUAL_Y;
- goto lookupNext;
- }
- }
- /*
- * Adjust virtual width and height if the mode is too large for the
- * current values and if they are not fixed.
- */
- if (virtualX <= 0 && p->HDisplay > newVirtX)
- newVirtX = _VIRTUALX(p->HDisplay);
- if (virtualY <= 0 && p->VDisplay > newVirtY) {
- if (maxHeight > 0 && p->VDisplay > maxHeight) {
- p->status = MODE_VIRTUAL_Y; /* ? */
- goto lookupNext;
- }
- newVirtY = p->VDisplay;
- }
-
- /*
- * If virtual resolution is to be increased, revalidate it.
- */
- if ((virtX != newVirtX) || (virtY != newVirtY)) {
- if (linePitches != NULL) {
- newLinePitch = -1;
- for (i = 0; linePitches[i] != 0; i++) {
- if ((linePitches[i] >= newVirtX) &&
- (linePitches[i] >= linePitch) &&
- (linePitches[i] ==
- miScanLineWidth(newVirtX, newVirtY, linePitches[i],
- apertureSize, BankFormat, pitchInc))) {
- newLinePitch = linePitches[i];
- break;
- }
- }
- } else {
- if (linePitch < minPitch)
- linePitch = minPitch;
- newLinePitch = miScanLineWidth(newVirtX, newVirtY, linePitch,
- apertureSize, BankFormat,
- pitchInc);
- }
- if ((newLinePitch < minPitch) || (newLinePitch > maxPitch)) {
- p->status = MODE_BAD_WIDTH;
- goto lookupNext;
- }
-
- /*
- * Check that the pixel area required by the new virtual height
- * and line pitch isn't too large.
- */
- if (!xf86CheckModeSize(scrp, newLinePitch, newVirtX, newVirtY)) {
- p->status = MODE_MEM_VIRT;
- goto lookupNext;
- }
- }
-
- if (scrp->ValidMode) {
- /*
- * Give the driver a final say, passing it the proposed virtual
- * geometry.
- */
- scrp->virtualX = newVirtX;
- scrp->virtualY = newVirtY;
- scrp->displayWidth = newLinePitch;
- p->status = (scrp->ValidMode)(scrp->scrnIndex, p, FALSE,
- MODECHECK_FINAL);
-
- if (p->status != MODE_OK) {
- goto lookupNext;
- }
- }
-
- /* Mode has passed all the tests */
- virtX = newVirtX;
- virtY = newVirtY;
- linePitch = newLinePitch;
- p->status = MODE_OK;
- numModes++;
- }
-
-#undef _VIRTUALX
-
- /* Update the ScrnInfoRec parameters */
-
- scrp->virtualX = virtX;
- scrp->virtualY = virtY;
- scrp->displayWidth = linePitch;
-
- if (numModes <= 0)
- return 0;
-
- /* Make the mode list into a circular list by joining up the ends */
- p = scrp->modes;
- while (p->next != NULL)
- p = p->next;
- /* p is now the last mode on the list */
- p->next = scrp->modes;
- scrp->modes->prev = p;
-
- if (minHeight > 0 && virtY < minHeight) {
- xf86DrvMsg(scrp->scrnIndex, X_ERROR,
- "Virtual height (%d) is too small for the hardware "
- "(min %d)\n", virtY, minHeight);
- return -1;
- }
-
- return numModes;
-}
-
-/*
- * xf86DeleteMode
- *
- * This function removes a mode from a list of modes.
- *
- * There are different types of mode lists:
- *
- * - singly linked linear lists, ending in NULL
- * - doubly linked linear lists, starting and ending in NULL
- * - doubly linked circular lists
- *
- */
-
-void
-xf86DeleteMode(DisplayModePtr *modeList, DisplayModePtr mode)
-{
- /* Catch the easy/insane cases */
- if (modeList == NULL || *modeList == NULL || mode == NULL)
- return;
-
- /* If the mode is at the start of the list, move the start of the list */
- if (*modeList == mode)
- *modeList = mode->next;
-
- /* If mode is the only one on the list, set the list to NULL */
- if ((mode == mode->prev) && (mode == mode->next)) {
- *modeList = NULL;
- } else {
- if ((mode->prev != NULL) && (mode->prev->next == mode))
- mode->prev->next = mode->next;
- if ((mode->next != NULL) && (mode->next->prev == mode))
- mode->next->prev = mode->prev;
- }
-
- xfree(mode->name);
- xfree(mode);
-}
-
-/*
- * xf86PruneDriverModes
- *
- * Remove modes from the driver's mode list which have been marked as
- * invalid.
- */
-
-void
-xf86PruneDriverModes(ScrnInfoPtr scrp)
-{
- DisplayModePtr first, p, n;
-
- p = scrp->modes;
- if (p == NULL)
- return;
-
- do {
- if (!(first = scrp->modes))
- return;
- n = p->next;
- if (p->status != MODE_OK) {
-#if 0
- if (p->type & M_T_BUILTIN)
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Not using built-in mode \"%s\" (%s)\n", p->name,
- xf86ModeStatusToString(p->status));
- else if (p->type & M_T_DEFAULT)
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Not using default mode \"%s\" (%s)\n", p->name,
- xf86ModeStatusToString(p->status));
- else
- xf86DrvMsg(scrp->scrnIndex, X_INFO,
- "Not using mode \"%s\" (%s)\n", p->name,
- xf86ModeStatusToString(p->status));
-#endif
- xf86DeleteMode(&(scrp->modes), p);
- }
- p = n;
- } while (p != NULL && p != first);
-
- /* modePool is no longer needed, turf it */
- while (scrp->modePool) {
- /*
- * A modePool mode's prev field is used to hold a pointer to the
- * member of the scrp->modes list for which a match was considered.
- * Clear that pointer first, otherwise xf86DeleteMode might get
- * confused
- */
- scrp->modePool->prev = NULL;
- xf86DeleteMode(&scrp->modePool, scrp->modePool);
- }
-}
-
-
-/*
- * xf86SetCrtcForModes
- *
- * Goes through the screen's mode list, and initialises the Crtc
- * parameters for each mode. The initialisation includes adjustments
- * for interlaced and double scan modes.
- */
-void
-xf86SetCrtcForModes(ScrnInfoPtr scrp, int adjustFlags)
-{
- DisplayModePtr p;
-
- /*
- * Store adjustFlags for use with the VidMode extension. There is an
- * implicit assumption here that SetCrtcForModes is called once.
- */
- scrp->adjustFlags = adjustFlags;
-
- p = scrp->modes;
- if (p == NULL)
- return;
-
- do {
- xf86SetModeCrtc(p, adjustFlags);
-#ifdef DEBUG
- ErrorF("%sMode %s: %d (%d) %d %d (%d) %d %d (%d) %d %d (%d) %d\n",
- (p->type & M_T_DEFAULT) ? "Default " : "",
- p->name, p->CrtcHDisplay, p->CrtcHBlankStart,
- p->CrtcHSyncStart, p->CrtcHSyncEnd, p->CrtcHBlankEnd,
- p->CrtcHTotal, p->CrtcVDisplay, p->CrtcVBlankStart,
- p->CrtcVSyncStart, p->CrtcVSyncEnd, p->CrtcVBlankEnd,
- p->CrtcVTotal);
-#endif
- p = p->next;
- } while (p != NULL && p != scrp->modes);
-}
-
-
-static void
-add(char **p, char *new)
-{
- *p = xnfrealloc(*p, strlen(*p) + strlen(new) + 2);
- strcat(*p, " ");
- strcat(*p, new);
-}
-
-static void
-PrintModeline(int scrnIndex,DisplayModePtr mode)
-{
- char tmp[256];
- char *flags = xnfcalloc(1, 1);
-
- if (mode->HSkew) {
- snprintf(tmp, 256, "hskew %i", mode->HSkew);
- add(&flags, tmp);
- }
- if (mode->VScan) {
- snprintf(tmp, 256, "vscan %i", mode->VScan);
- add(&flags, tmp);
- }
- if (mode->Flags & V_INTERLACE) add(&flags, "interlace");
- if (mode->Flags & V_CSYNC) add(&flags, "composite");
- if (mode->Flags & V_DBLSCAN) add(&flags, "doublescan");
- if (mode->Flags & V_BCAST) add(&flags, "bcast");
- if (mode->Flags & V_PHSYNC) add(&flags, "+hsync");
- if (mode->Flags & V_NHSYNC) add(&flags, "-hsync");
- if (mode->Flags & V_PVSYNC) add(&flags, "+vsync");
- if (mode->Flags & V_NVSYNC) add(&flags, "-vsync");
- if (mode->Flags & V_PCSYNC) add(&flags, "+csync");
- if (mode->Flags & V_NCSYNC) add(&flags, "-csync");
-#if 0
- if (mode->Flags & V_CLKDIV2) add(&flags, "vclk/2");
-#endif
- xf86DrvMsgVerb(scrnIndex, X_INFO, 3,
- "Modeline \"%s\" %6.2f %i %i %i %i %i %i %i %i%s\n",
- mode->name, mode->Clock/1000., mode->HDisplay,
- mode->HSyncStart, mode->HSyncEnd, mode->HTotal,
- mode->VDisplay, mode->VSyncStart, mode->VSyncEnd,
- mode->VTotal, flags);
- xfree(flags);
-}
-
-void
-xf86PrintModes(ScrnInfoPtr scrp)
-{
- DisplayModePtr p;
- float hsync, refresh = 0;
- char *desc, *desc2, *prefix, *uprefix;
-
- if (scrp == NULL)
- return;
-
- xf86DrvMsg(scrp->scrnIndex, scrp->virtualFrom, "Virtual size is %dx%d "
- "(pitch %d)\n", scrp->virtualX, scrp->virtualY,
- scrp->displayWidth);
-
- p = scrp->modes;
- if (p == NULL)
- return;
-
- do {
- desc = desc2 = "";
- hsync = ModeHSync(p);
- refresh = ModeVRefresh(p);
- if (p->Flags & V_INTERLACE) {
- desc = " (I)";
- }
- if (p->Flags & V_DBLSCAN) {
- desc = " (D)";
- }
- if (p->VScan > 1) {
- desc2 = " (VScan)";
- }
- if (p->type & M_T_BUILTIN)
- prefix = "Built-in mode";
- else if (p->type & M_T_DEFAULT)
- prefix = "Default mode";
- else
- prefix = "Mode";
- if (p->type & M_T_USERDEF)
- uprefix = "*";
- else
- uprefix = " ";
- if (hsync == 0 || refresh == 0) {
- if (p->name)
- xf86DrvMsg(scrp->scrnIndex, X_CONFIG,
- "%s%s \"%s\"\n", uprefix, prefix, p->name);
- else
- xf86DrvMsg(scrp->scrnIndex, X_PROBED,
- "%s%s %dx%d (unnamed)\n",
- uprefix, prefix, p->HDisplay, p->VDisplay);
- } else if (p->Clock == p->SynthClock) {
- xf86DrvMsg(scrp->scrnIndex, X_CONFIG,
- "%s%s \"%s\": %.1f MHz, %.1f kHz, %.1f Hz%s%s\n",
- uprefix, prefix, p->name, p->Clock / 1000.0,
- hsync, refresh, desc, desc2);
- } else {
- xf86DrvMsg(scrp->scrnIndex, X_CONFIG,
- "%s%s \"%s\": %.1f MHz (scaled from %.1f MHz), "
- "%.1f kHz, %.1f Hz%s%s\n",
- uprefix, prefix, p->name, p->Clock / 1000.0,
- p->SynthClock / 1000.0, hsync, refresh, desc, desc2);
- }
- if (hsync != 0 && refresh != 0)
- PrintModeline(scrp->scrnIndex,p);
- p = p->next;
- } while (p != NULL && p != scrp->modes);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Module.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Module.h
deleted file mode 100644
index 84c3e32c3..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Module.h
+++ /dev/null
@@ -1,226 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Module.h,v 1.37 2003/08/24 17:36:54 dawes Exp $ */
-
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains the parts of the loader interface that are visible
- * to modules. This is the only loader-related header that modules should
- * include.
- *
- * It should include a bare minimum of other headers.
- *
- * Longer term, the module/loader code should probably live directly under
- * Xserver/.
- *
- * XXX This file arguably belongs in xfree86/loader/.
- */
-
-#ifndef _XF86MODULE_H
-#define _XF86MODULE_H
-
-#include "misc.h"
-#include "xf86Version.h"
-#ifndef NULL
-#define NULL ((void *)0)
-#endif
-
-typedef enum {
- LD_RESOLV_IFDONE = 0, /* only check if no more
- delays pending */
- LD_RESOLV_NOW = 1, /* finish one delay step */
- LD_RESOLV_FORCE = 2 /* force checking... */
-} LoaderResolveOptions;
-
-#define DEFAULT_LIST ((char *)-1)
-
-/* This indicates a special module that doesn't have the usual entry point */
-#define EXTERN_MODULE ((pointer)-1)
-
-/* Built-in ABI classes. These definitions must not be changed. */
-#define ABI_CLASS_NONE NULL
-#define ABI_CLASS_ANSIC "X.Org ANSI C Emulation"
-#define ABI_CLASS_VIDEODRV "X.Org Video Driver"
-#define ABI_CLASS_XINPUT "X.Org XInput driver"
-#define ABI_CLASS_EXTENSION "X.Org Server Extension"
-#define ABI_CLASS_FONT "X.Org Font Renderer"
-
-#define ABI_MINOR_MASK 0x0000FFFF
-#define ABI_MAJOR_MASK 0xFFFF0000
-#define GET_ABI_MINOR(v) ((v) & ABI_MINOR_MASK)
-#define GET_ABI_MAJOR(v) (((v) & ABI_MAJOR_MASK) >> 16)
-#define SET_ABI_VERSION(maj, min) \
- ((((maj) << 16) & ABI_MAJOR_MASK) | ((min) & ABI_MINOR_MASK))
-
-/*
- * ABI versions. Each version has a major and minor revision. Modules
- * using lower minor revisions must work with servers of a higher minor
- * revision. There is no compatibility between different major revisions.
- * Whenever the ABI_ANSIC_VERSION is changed, the others must also be
- * changed. The minor revision mask is 0x0000FFFF and the major revision
- * mask is 0xFFFF0000.
- */
-#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 2)
-#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(0, 8)
-#define ABI_XINPUT_VERSION SET_ABI_VERSION(0, 5)
-#define ABI_EXTENSION_VERSION SET_ABI_VERSION(0, 2)
-#define ABI_FONT_VERSION SET_ABI_VERSION(0, 4)
-
-#define MODINFOSTRING1 0xef23fdc5
-#define MODINFOSTRING2 0x10dc023a
-
-#ifndef MODULEVENDORSTRING
-#ifndef __OS2ELF__
-#define MODULEVENDORSTRING "X.Org Foundation"
-#else
-#define MODULEVENDORSTRING "X.Org Foundation - OS2"
-#endif
-#endif
-
-/* Error return codes for errmaj. New codes must only be added at the end. */
-typedef enum {
- LDR_NOERROR = 0,
- LDR_NOMEM, /* memory allocation failed */
- LDR_NOENT, /* Module file does not exist */
- LDR_NOSUBENT, /* pre-requsite file to be sub-loaded does not exist */
- LDR_NOSPACE, /* internal module array full */
- LDR_NOMODOPEN, /* module file could not be opened (check errmin) */
- LDR_UNKTYPE, /* file is not a recognized module type */
- LDR_NOLOAD, /* type specific loader failed */
- LDR_ONCEONLY, /* Module should only be loaded once (not an error) */
- LDR_NOPORTOPEN, /* could not open port (check errmin) */
- LDR_NOHARDWARE, /* could not query/initialize the hardware device */
- LDR_MISMATCH, /* the module didn't match the spec'd requirments */
- LDR_BADUSAGE, /* LoadModule is called with bad arguments */
- LDR_INVALID, /* The module doesn't have a valid ModuleData object */
- LDR_BADOS, /* The module doesn't support the OS */
- LDR_MODSPECIFIC /* A module-specific error in the SetupProc */
-} LoaderErrorCode;
-
-/*
- * Some common module classes. The moduleclass can be used to identify
- * that modules loaded are of the correct type. This is a finer
- * classification than the ABI classes even though the default set of
- * classes have the same names. For example, not all modules that require
- * the video driver ABI are themselves video drivers.
- */
-#define MOD_CLASS_NONE NULL
-#define MOD_CLASS_VIDEODRV "X.Org Video Driver"
-#define MOD_CLASS_XINPUT "X.Org XInput Driver"
-#define MOD_CLASS_FONT "X.Org Font Renderer"
-#define MOD_CLASS_EXTENSION "X.Org Server Extension"
-
-/* This structure is expected to be returned by the initfunc */
-typedef struct {
- const char * modname; /* name of module, e.g. "foo" */
- const char * vendor; /* vendor specific string */
- CARD32 _modinfo1_; /* constant MODINFOSTRING1/2 to find */
- CARD32 _modinfo2_; /* infoarea with a binary editor or sign tool */
- CARD32 xf86version; /* contains XF86_VERSION_CURRENT */
- CARD8 majorversion; /* module-specific major version */
- CARD8 minorversion; /* module-specific minor version */
- CARD16 patchlevel; /* module-specific patch level */
- const char * abiclass; /* ABI class that the module uses */
- CARD32 abiversion; /* ABI version */
- const char * moduleclass; /* module class description */
- CARD32 checksum[4]; /* contains a digital signature of the */
- /* version info structure */
-} XF86ModuleVersionInfo;
-
-/*
- * This structure can be used to callers of LoadModule and LoadSubModule to
- * specify version and/or ABI requirements.
- */
-typedef struct {
- CARD8 majorversion; /* module-specific major version */
- CARD8 minorversion; /* moudle-specific minor version */
- CARD16 patchlevel; /* module-specific patch level */
- const char * abiclass; /* ABI class that the module uses */
- CARD32 abiversion; /* ABI version */
- const char * moduleclass; /* module class */
-} XF86ModReqInfo;
-
-/* values to indicate unspecified fields in XF86ModReqInfo. */
-#define MAJOR_UNSPEC 0xFF
-#define MINOR_UNSPEC 0xFF
-#define PATCH_UNSPEC 0xFFFF
-#define ABI_VERS_UNSPEC 0xFFFFFFFF
-
-#define MODULE_VERSION_NUMERIC(maj, min, patch) \
- ((((maj) & 0xFF) << 24) | (((min) & 0xFF) << 16) | (patch & 0xFFFF))
-#define GET_MODULE_MAJOR_VERSION(vers) (((vers) >> 24) & 0xFF)
-#define GET_MODULE_MINOR_VERSION(vers) (((vers) >> 16) & 0xFF)
-#define GET_MODULE_PATCHLEVEL(vers) ((vers) & 0xFFFF)
-
-#define INITARGS void
-
-typedef void (*InitExtension)(INITARGS);
-
-typedef struct {
- InitExtension initFunc;
- const char * name;
- Bool *disablePtr;
- InitExtension setupFunc;
- const char ** initDependencies;
-} ExtensionModule;
-
-extern ExtensionModule *ExtensionModuleList;
-
-/* Prototypes for Loader functions that are exported to modules */
-#ifndef IN_LOADER
-/* Prototypes with opaque pointers for use by modules */
-pointer LoadSubModule(pointer, const char *, const char **,
- const char **, pointer, const XF86ModReqInfo *,
- int *, int *);
-void UnloadSubModule(pointer);
-void LoadFont(pointer);
-void UnloadModule (pointer);
-#endif
-pointer LoaderSymbol(const char *);
-char **LoaderListDirs(const char **, const char **);
-void LoaderFreeDirList(char **);
-void LoaderErrorMsg(const char *, const char *, int, int);
-void LoadExtension(ExtensionModule *, Bool);
-void LoaderRefSymLists(const char **, ...);
-void LoaderRefSymbols(const char *, ...);
-void LoaderReqSymLists(const char **, ...);
-void LoaderReqSymbols(const char *, ...);
-int LoaderCheckUnresolved(int);
-void LoaderGetOS(const char **name, int *major, int *minor, int *teeny);
-
-typedef pointer (*ModuleSetupProc)(pointer, pointer, int *, int *);
-typedef void (*ModuleTearDownProc)(pointer);
-#define MODULESETUPPROTO(func) pointer func(pointer, pointer, int*, int*)
-#define MODULETEARDOWNPROTO(func) void func(pointer)
-
-typedef struct {
- XF86ModuleVersionInfo * vers;
- ModuleSetupProc setup;
- ModuleTearDownProc teardown;
-} XF86ModuleData;
-
-#endif /* _XF86STR_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Opt.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Opt.h
deleted file mode 100644
index 718732353..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Opt.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Opt.h,v 1.15 2003/10/08 14:30:38 dawes Exp $ */
-
-/*
- * Copyright (c) 1998-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* Option handling things that ModuleSetup procs can use */
-
-#ifndef _XF86_OPT_H_
-#define _XF86_OPT_H_
-
-typedef struct {
- double freq;
- int units;
-} OptFrequency;
-
-typedef union {
- unsigned long num;
- char * str;
- double realnum;
- Bool bool;
- OptFrequency freq;
-} ValueUnion;
-
-typedef enum {
- OPTV_NONE = 0,
- OPTV_INTEGER,
- OPTV_STRING, /* a non-empty string */
- OPTV_ANYSTR, /* Any string, including an empty one */
- OPTV_REAL,
- OPTV_BOOLEAN,
- OPTV_FREQ
-} OptionValueType;
-
-typedef enum {
- OPTUNITS_HZ = 1,
- OPTUNITS_KHZ,
- OPTUNITS_MHZ
-} OptFreqUnits;
-
-typedef struct {
- int token;
- const char* name;
- OptionValueType type;
- ValueUnion value;
- Bool found;
-} OptionInfoRec, *OptionInfoPtr;
-
-int xf86SetIntOption(pointer optlist, const char *name, int deflt);
-double xf86SetRealOption(pointer optlist, const char *name, double deflt);
-char *xf86SetStrOption(pointer optlist, const char *name, char *deflt);
-int xf86SetBoolOption(pointer list, const char *name, int deflt );
-int xf86CheckIntOption(pointer optlist, const char *name, int deflt);
-double xf86CheckRealOption(pointer optlist, const char *name, double deflt);
-char *xf86CheckStrOption(pointer optlist, const char *name, char *deflt);
-int xf86CheckBoolOption(pointer list, const char *name, int deflt );
-pointer xf86AddNewOption(pointer head, const char *name, const char *val );
-pointer xf86NewOption(char *name, char *value );
-pointer xf86NextOption(pointer list );
-pointer xf86OptionListCreate(const char **options, int count, int used);
-pointer xf86OptionListMerge(pointer head, pointer tail);
-void xf86OptionListFree(pointer opt);
-char *xf86OptionName(pointer opt);
-char *xf86OptionValue(pointer opt);
-void xf86OptionListReport(pointer parm);
-pointer xf86FindOption(pointer options, const char *name);
-char *xf86FindOptionValue(pointer options, const char *name);
-void xf86MarkOptionUsed(pointer option);
-void xf86MarkOptionUsedByName(pointer options, const char *name);
-Bool xf86CheckIfOptionUsed(pointer option);
-Bool xf86CheckIfOptionUsedByName(pointer options, const char *name);
-void xf86ShowUnusedOptions(int scrnIndex, pointer options);
-void xf86ProcessOptions(int scrnIndex, pointer options, OptionInfoPtr optinfo);
-OptionInfoPtr xf86TokenToOptinfo(const OptionInfoRec *table, int token);
-const char *xf86TokenToOptName(const OptionInfoRec *table, int token);
-Bool xf86IsOptionSet(const OptionInfoRec *table, int token);
-char *xf86GetOptValString(const OptionInfoRec *table, int token);
-Bool xf86GetOptValInteger(const OptionInfoRec *table, int token, int *value);
-Bool xf86GetOptValULong(const OptionInfoRec *table, int token, unsigned long *value);
-Bool xf86GetOptValReal(const OptionInfoRec *table, int token, double *value);
-Bool xf86GetOptValFreq(const OptionInfoRec *table, int token,
- OptFreqUnits expectedUnits, double *value);
-Bool xf86GetOptValBool(const OptionInfoRec *table, int token, Bool *value);
-Bool xf86ReturnOptValBool(const OptionInfoRec *table, int token, Bool def);
-int xf86NameCmp(const char *s1, const char *s2);
-char *xf86NormalizeName(const char *s);
-pointer xf86ReplaceIntOption(pointer optlist, const char *name, const int val);
-pointer xf86ReplaceRealOption(pointer optlist, const char *name, const double val);
-pointer xf86ReplaceBoolOption(pointer optlist, const char *name, const Bool val);
-pointer xf86ReplaceStrOption(pointer optlist, const char *name, const char* val);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Option.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Option.c
deleted file mode 100644
index 9bffdee70..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Option.c
+++ /dev/null
@@ -1,884 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Option.c,v 1.29 2003/10/18 12:34:19 dawes Exp $ */
-/*
- * Copyright (c) 1998-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * Author: David Dawes <dawes@xfree86.org>
- *
- * This file includes public option handling functions.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdlib.h>
-#include <ctype.h>
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Xinput.h"
-#include "xf86Optrec.h"
-
-static Bool ParseOptionValue(int scrnIndex, pointer options, OptionInfoPtr p,
- Bool markUsed);
-
-/*
- * xf86CollectOptions collects the options from each of the config file
- * sections used by the screen and puts the combined list in pScrn->options.
- * This function requires that the following have been initialised:
- *
- * pScrn->confScreen
- * pScrn->Entities[i]->device
- * pScrn->display
- * pScrn->monitor
- *
- * The extraOpts parameter may optionally contain a list of additional options
- * to include.
- *
- * The order of precedence for options is:
- *
- * extraOpts, display, confScreen, monitor, device
- */
-
-void
-xf86CollectOptions(ScrnInfoPtr pScrn, pointer extraOpts)
-{
- XF86OptionPtr tmp;
- XF86OptionPtr extras = (XF86OptionPtr)extraOpts;
- GDevPtr device;
-
- int i;
-
- pScrn->options = NULL;
-
- for (i=pScrn->numEntities - 1; i >= 0; i--) {
- device = xf86GetDevFromEntity(pScrn->entityList[i],
- pScrn->entityInstanceList[i]);
- if (device && device->options) {
- tmp = xf86optionListDup(device->options);
- if (pScrn->options)
- xf86optionListMerge(pScrn->options,tmp);
- else
- pScrn->options = tmp;
- }
- }
- if (pScrn->monitor->options) {
- tmp = xf86optionListDup(pScrn->monitor->options);
- if (pScrn->options)
- pScrn->options = xf86optionListMerge(pScrn->options, tmp);
- else
- pScrn->options = tmp;
- }
- if (pScrn->confScreen->options) {
- tmp = xf86optionListDup(pScrn->confScreen->options);
- if (pScrn->options)
- pScrn->options = xf86optionListMerge(pScrn->options, tmp);
- else
- pScrn->options = tmp;
- }
- if (pScrn->display->options) {
- tmp = xf86optionListDup(pScrn->display->options);
- if (pScrn->options)
- pScrn->options = xf86optionListMerge(pScrn->options, tmp);
- else
- pScrn->options = tmp;
- }
- if (extras) {
- tmp = xf86optionListDup(extras);
- if (pScrn->options)
- pScrn->options = xf86optionListMerge(pScrn->options, tmp);
- else
- pScrn->options = tmp;
- }
-}
-
-/*
- * xf86CollectInputOptions collects the options for an InputDevice.
- * This function requires that the following has been initialised:
- *
- * pInfo->conf_idev
- *
- * The extraOpts parameter may optionally contain a list of additional options
- * to include.
- *
- * The order of precedence for options is:
- *
- * extraOpts, pInfo->conf_idev->extraOptions,
- * pInfo->conf_idev->commonOptions, defaultOpts
- */
-
-void
-xf86CollectInputOptions(InputInfoPtr pInfo, const char **defaultOpts,
- pointer extraOpts)
-{
- XF86OptionPtr tmp;
- XF86OptionPtr extras = (XF86OptionPtr)extraOpts;
-
- pInfo->options = NULL;
- if (defaultOpts) {
- pInfo->options = xf86OptionListCreate(defaultOpts, -1, 0);
- }
- if (pInfo->conf_idev->commonOptions) {
- tmp = xf86optionListDup(pInfo->conf_idev->commonOptions);
- if (pInfo->options)
- pInfo->options = xf86optionListMerge(pInfo->options, tmp);
- else
- pInfo->options = tmp;
- }
- if (pInfo->conf_idev->extraOptions) {
- tmp = xf86optionListDup(pInfo->conf_idev->extraOptions);
- if (pInfo->options)
- pInfo->options = xf86optionListMerge(pInfo->options, tmp);
- else
- pInfo->options = tmp;
- }
- if (extras) {
- tmp = xf86optionListDup(extras);
- if (pInfo->options)
- pInfo->options = xf86optionListMerge(pInfo->options, tmp);
- else
- pInfo->options = tmp;
- }
-}
-
-/* Created for new XInput stuff -- essentially extensions to the parser */
-
-static int
-LookupIntOption(pointer optlist, const char *name, int deflt, Bool markUsed)
-{
- OptionInfoRec o;
-
- o.name = name;
- o.type = OPTV_INTEGER;
- if (ParseOptionValue(-1, optlist, &o, markUsed))
- deflt = o.value.num;
- return deflt;
-}
-
-
-static double
-LookupRealOption(pointer optlist, const char *name, double deflt,
- Bool markUsed)
-{
- OptionInfoRec o;
-
- o.name = name;
- o.type = OPTV_REAL;
- if (ParseOptionValue(-1, optlist, &o, markUsed))
- deflt = o.value.realnum;
- return deflt;
-}
-
-
-static char *
-LookupStrOption(pointer optlist, const char *name, char *deflt, Bool markUsed)
-{
- OptionInfoRec o;
-
- o.name = name;
- o.type = OPTV_STRING;
- if (ParseOptionValue(-1, optlist, &o, markUsed))
- deflt = o.value.str;
- if (deflt)
- return xstrdup(deflt);
- else
- return NULL;
-}
-
-
-static int
-LookupBoolOption(pointer optlist, const char *name, int deflt, Bool markUsed)
-{
- OptionInfoRec o;
-
- o.name = name;
- o.type = OPTV_BOOLEAN;
- if (ParseOptionValue(-1, optlist, &o, markUsed))
- deflt = o.value.bool;
- return deflt;
-}
-
-/* These xf86Set* functions are intended for use by non-screen specific code */
-
-int
-xf86SetIntOption(pointer optlist, const char *name, int deflt)
-{
- return LookupIntOption(optlist, name, deflt, TRUE);
-}
-
-
-double
-xf86SetRealOption(pointer optlist, const char *name, double deflt)
-{
- return LookupRealOption(optlist, name, deflt, TRUE);
-}
-
-
-char *
-xf86SetStrOption(pointer optlist, const char *name, char *deflt)
-{
- return LookupStrOption(optlist, name, deflt, TRUE);
-}
-
-
-int
-xf86SetBoolOption(pointer optlist, const char *name, int deflt)
-{
- return LookupBoolOption(optlist, name, deflt, TRUE);
-}
-
-/*
- * These are like the Set*Option functions, but they don't mark the options
- * as used.
- */
-int
-xf86CheckIntOption(pointer optlist, const char *name, int deflt)
-{
- return LookupIntOption(optlist, name, deflt, FALSE);
-}
-
-
-double
-xf86CheckRealOption(pointer optlist, const char *name, double deflt)
-{
- return LookupRealOption(optlist, name, deflt, FALSE);
-}
-
-
-char *
-xf86CheckStrOption(pointer optlist, const char *name, char *deflt)
-{
- return LookupStrOption(optlist, name, deflt, FALSE);
-}
-
-
-int
-xf86CheckBoolOption(pointer optlist, const char *name, int deflt)
-{
- return LookupBoolOption(optlist, name, deflt, FALSE);
-}
-
-/*
- * addNewOption() has the required property of replacing the option value
- * if the option is already present.
- */
-pointer
-xf86ReplaceIntOption(pointer optlist, const char *name, const int val)
-{
- char *tmp = xnfalloc(16);
- sprintf(tmp,"%i",val);
- return xf86AddNewOption(optlist,name,tmp);
-}
-
-pointer
-xf86ReplaceRealOption(pointer optlist, const char *name, const double val)
-{
- char *tmp = xnfalloc(32);
- snprintf(tmp,32,"%f",val);
- return xf86AddNewOption(optlist,name,tmp);
-}
-
-pointer
-xf86ReplaceBoolOption(pointer optlist, const char *name, const Bool val)
-{
- return xf86AddNewOption(optlist,name,val?"True":"False");
-}
-
-pointer
-xf86ReplaceStrOption(pointer optlist, const char *name, const char* val)
-{
- return xf86AddNewOption(optlist,name,val);
-}
-
-pointer
-xf86AddNewOption(pointer head, const char *name, const char *val)
-{
- /* XXX These should actually be allocated in the parser library. */
- char *tmp = strdup(val);
- char *tmp_name = strdup(name);
-
- return xf86addNewOption(head, tmp_name, tmp);
-}
-
-
-pointer
-xf86NewOption(char *name, char *value)
-{
- return xf86newOption(name, value);
-}
-
-
-pointer
-xf86NextOption(pointer list)
-{
- return xf86nextOption(list);
-}
-
-pointer
-xf86OptionListCreate(const char **options, int count, int used)
-{
- return xf86optionListCreate(options, count, used);
-}
-
-pointer
-xf86OptionListMerge(pointer head, pointer tail)
-{
- return xf86optionListMerge(head, tail);
-}
-
-void
-xf86OptionListFree(pointer opt)
-{
- xf86optionListFree(opt);
-}
-
-char *
-xf86OptionName(pointer opt)
-{
- return xf86optionName(opt);
-}
-
-char *
-xf86OptionValue(pointer opt)
-{
- return xf86optionValue(opt);
-}
-
-void
-xf86OptionListReport(pointer parm)
-{
- XF86OptionPtr opts = parm;
-
- while(opts) {
- if (xf86optionValue(opts))
- xf86ErrorFVerb(5, "\tOption \"%s\" \"%s\"\n",
- xf86optionName(opts), xf86optionValue(opts));
- else
- xf86ErrorFVerb( 5, "\tOption \"%s\"\n", xf86optionName(opts));
- opts = xf86nextOption(opts);
- }
-}
-
-/* End of XInput-caused section */
-
-pointer
-xf86FindOption(pointer options, const char *name)
-{
- return xf86findOption(options, name);
-}
-
-
-char *
-xf86FindOptionValue(pointer options, const char *name)
-{
- return xf86findOptionValue(options, name);
-}
-
-
-void
-xf86MarkOptionUsed(pointer option)
-{
- if (option != NULL)
- ((XF86OptionPtr)option)->opt_used = TRUE;
-}
-
-
-void
-xf86MarkOptionUsedByName(pointer options, const char *name)
-{
- XF86OptionPtr opt;
-
- opt = xf86findOption(options, name);
- if (opt != NULL)
- opt->opt_used = TRUE;
-}
-
-Bool
-xf86CheckIfOptionUsed(pointer option)
-{
- if (option != NULL)
- return ((XF86OptionPtr)option)->opt_used;
- else
- return FALSE;
-}
-
-Bool
-xf86CheckIfOptionUsedByName(pointer options, const char *name)
-{
- XF86OptionPtr opt;
-
- opt = xf86findOption(options, name);
- if (opt != NULL)
- return opt->opt_used;
- else
- return FALSE;
-}
-
-void
-xf86ShowUnusedOptions(int scrnIndex, pointer options)
-{
- XF86OptionPtr opt = options;
-
- while (opt) {
- if (opt->opt_name && !opt->opt_used) {
- xf86DrvMsg(scrnIndex, X_WARNING, "Option \"%s\" is not used\n",
- opt->opt_name);
- }
- opt = opt->list.next;
- }
-}
-
-
-static Bool
-GetBoolValue(OptionInfoPtr p, const char *s)
-{
- if (*s == '\0') {
- p->value.bool = TRUE;
- } else {
- if (xf86NameCmp(s, "1") == 0)
- p->value.bool = TRUE;
- else if (xf86NameCmp(s, "on") == 0)
- p->value.bool = TRUE;
- else if (xf86NameCmp(s, "true") == 0)
- p->value.bool = TRUE;
- else if (xf86NameCmp(s, "yes") == 0)
- p->value.bool = TRUE;
- else if (xf86NameCmp(s, "0") == 0)
- p->value.bool = FALSE;
- else if (xf86NameCmp(s, "off") == 0)
- p->value.bool = FALSE;
- else if (xf86NameCmp(s, "false") == 0)
- p->value.bool = FALSE;
- else if (xf86NameCmp(s, "no") == 0)
- p->value.bool = FALSE;
- else
- return FALSE;
- }
- return TRUE;
-}
-
-static Bool
-ParseOptionValue(int scrnIndex, pointer options, OptionInfoPtr p,
- Bool markUsed)
-{
- char *s, *end;
- Bool wasUsed = FALSE;
-
- if ((s = xf86findOptionValue(options, p->name)) != NULL) {
- if (markUsed) {
- wasUsed = xf86CheckIfOptionUsedByName(options, p->name);
- xf86MarkOptionUsedByName(options, p->name);
- }
- switch (p->type) {
- case OPTV_INTEGER:
- if (*s == '\0') {
- xf86DrvMsg(scrnIndex, X_WARNING,
- "Option \"%s\" requires an integer value\n",
- p->name);
- p->found = FALSE;
- } else {
- p->value.num = strtoul(s, &end, 0);
- if (*end == '\0') {
- p->found = TRUE;
- } else {
- xf86DrvMsg(scrnIndex, X_WARNING,
- "Option \"%s\" requires an integer value\n",
- p->name);
- p->found = FALSE;
- }
- }
- break;
- case OPTV_STRING:
- if (*s == '\0') {
- xf86DrvMsg(scrnIndex, X_WARNING,
- "Option \"%s\" requires an string value\n",
- p->name);
- p->found = FALSE;
- } else {
- p->value.str = s;
- p->found = TRUE;
- }
- break;
- case OPTV_ANYSTR:
- p->value.str = s;
- p->found = TRUE;
- break;
- case OPTV_REAL:
- if (*s == '\0') {
- xf86DrvMsg(scrnIndex, X_WARNING,
- "Option \"%s\" requires a floating point value\n",
- p->name);
- p->found = FALSE;
- } else {
- p->value.realnum = strtod(s, &end);
- if (*end == '\0') {
- p->found = TRUE;
- } else {
- xf86DrvMsg(scrnIndex, X_WARNING,
- "Option \"%s\" requires a floating point value\n",
- p->name);
- p->found = FALSE;
- }
- }
- break;
- case OPTV_BOOLEAN:
- if (GetBoolValue(p, s)) {
- p->found = TRUE;
- } else {
- xf86DrvMsg(scrnIndex, X_WARNING,
- "Option \"%s\" requires a boolean value\n", p->name);
- p->found = FALSE;
- }
- break;
- case OPTV_FREQ:
- if (*s == '\0') {
- xf86DrvMsg(scrnIndex, X_WARNING,
- "Option \"%s\" requires a frequency value\n",
- p->name);
- p->found = FALSE;
- } else {
- double freq = strtod(s, &end);
- int units = 0;
-
- if (end != s) {
- p->found = TRUE;
- if (!xf86NameCmp(end, "Hz"))
- units = 1;
- else if (!xf86NameCmp(end, "kHz") ||
- !xf86NameCmp(end, "k"))
- units = 1000;
- else if (!xf86NameCmp(end, "MHz") ||
- !xf86NameCmp(end, "M"))
- units = 1000000;
- else {
- xf86DrvMsg(scrnIndex, X_WARNING,
- "Option \"%s\" requires a frequency value\n",
- p->name);
- p->found = FALSE;
- }
- if (p->found)
- freq *= (double)units;
- } else {
- xf86DrvMsg(scrnIndex, X_WARNING,
- "Option \"%s\" requires a frequency value\n",
- p->name);
- p->found = FALSE;
- }
- if (p->found) {
- p->value.freq.freq = freq;
- p->value.freq.units = units;
- }
- }
- break;
- case OPTV_NONE:
- /* Should never get here */
- p->found = FALSE;
- break;
- }
- if (p->found && markUsed) {
- int verb = 2;
- if (wasUsed)
- verb = 4;
- xf86DrvMsgVerb(scrnIndex, X_CONFIG, verb, "Option \"%s\"", p->name);
- if (!(p->type == OPTV_BOOLEAN && *s == 0)) {
- xf86ErrorFVerb(verb, " \"%s\"", s);
- }
- xf86ErrorFVerb(verb, "\n");
- }
- } else if (p->type == OPTV_BOOLEAN) {
- /* Look for matches with options with or without a "No" prefix. */
- char *n, *newn;
- OptionInfoRec opt;
-
- n = xf86NormalizeName(p->name);
- if (!n) {
- p->found = FALSE;
- return FALSE;
- }
- if (strncmp(n, "no", 2) == 0) {
- newn = n + 2;
- } else {
- xfree(n);
- n = xalloc(strlen(p->name) + 2 + 1);
- if (!n) {
- p->found = FALSE;
- return FALSE;
- }
- strcpy(n, "No");
- strcat(n, p->name);
- newn = n;
- }
- if ((s = xf86findOptionValue(options, newn)) != NULL) {
- if (markUsed)
- xf86MarkOptionUsedByName(options, newn);
- if (GetBoolValue(&opt, s)) {
- p->value.bool = !opt.value.bool;
- p->found = TRUE;
- } else {
- xf86DrvMsg(scrnIndex, X_WARNING,
- "Option \"%s\" requires a boolean value\n", newn);
- p->found = FALSE;
- }
- } else {
- p->found = FALSE;
- }
- if (p->found && markUsed) {
- xf86DrvMsgVerb(scrnIndex, X_CONFIG, 2, "Option \"%s\"", newn);
- if (*s != 0) {
- xf86ErrorFVerb(2, " \"%s\"", s);
- }
- xf86ErrorFVerb(2, "\n");
- }
- xfree(n);
- } else {
- p->found = FALSE;
- }
- return p->found;
-}
-
-
-void
-xf86ProcessOptions(int scrnIndex, pointer options, OptionInfoPtr optinfo)
-{
- OptionInfoPtr p;
-
- for (p = optinfo; p->name != NULL; p++) {
- ParseOptionValue(scrnIndex, options, p, TRUE);
- }
-}
-
-
-OptionInfoPtr
-xf86TokenToOptinfo(const OptionInfoRec *table, int token)
-{
- const OptionInfoRec *p, *match = NULL, *set = NULL;
-
- if (!table) {
- ErrorF("xf86TokenToOptinfo: table is NULL\n");
- return NULL;
- }
-
- for (p = table; p->token >= 0; p++) {
- if (p->token == token) {
- match = p;
- if (p->found)
- set = p;
- }
- }
-
- if (set)
- return (OptionInfoPtr)set;
- else if (match)
- return (OptionInfoPtr)match;
- else
- return NULL;
-}
-
-
-const char *
-xf86TokenToOptName(const OptionInfoRec *table, int token)
-{
- const OptionInfoRec *p;
-
- p = xf86TokenToOptinfo(table, token);
- return p->name;
-}
-
-
-Bool
-xf86IsOptionSet(const OptionInfoRec *table, int token)
-{
- OptionInfoPtr p;
-
- p = xf86TokenToOptinfo(table, token);
- return (p && p->found);
-}
-
-
-char *
-xf86GetOptValString(const OptionInfoRec *table, int token)
-{
- OptionInfoPtr p;
-
- p = xf86TokenToOptinfo(table, token);
- if (p && p->found)
- return p->value.str;
- else
- return NULL;
-}
-
-
-Bool
-xf86GetOptValInteger(const OptionInfoRec *table, int token, int *value)
-{
- OptionInfoPtr p;
-
- p = xf86TokenToOptinfo(table, token);
- if (p && p->found) {
- *value = p->value.num;
- return TRUE;
- } else
- return FALSE;
-}
-
-
-Bool
-xf86GetOptValULong(const OptionInfoRec *table, int token, unsigned long *value)
-{
- OptionInfoPtr p;
-
- p = xf86TokenToOptinfo(table, token);
- if (p && p->found) {
- *value = p->value.num;
- return TRUE;
- } else
- return FALSE;
-}
-
-
-Bool
-xf86GetOptValReal(const OptionInfoRec *table, int token, double *value)
-{
- OptionInfoPtr p;
-
- p = xf86TokenToOptinfo(table, token);
- if (p && p->found) {
- *value = p->value.realnum;
- return TRUE;
- } else
- return FALSE;
-}
-
-
-Bool
-xf86GetOptValFreq(const OptionInfoRec *table, int token,
- OptFreqUnits expectedUnits, double *value)
-{
- OptionInfoPtr p;
-
- p = xf86TokenToOptinfo(table, token);
- if (p && p->found) {
- if (p->value.freq.units > 0) {
- /* Units give, so the scaling is known. */
- switch (expectedUnits) {
- case OPTUNITS_HZ:
- *value = p->value.freq.freq;
- break;
- case OPTUNITS_KHZ:
- *value = p->value.freq.freq / 1000.0;
- break;
- case OPTUNITS_MHZ:
- *value = p->value.freq.freq / 1000000.0;
- break;
- }
- } else {
- /* No units given, so try to guess the scaling. */
- switch (expectedUnits) {
- case OPTUNITS_HZ:
- *value = p->value.freq.freq;
- break;
- case OPTUNITS_KHZ:
- if (p->value.freq.freq > 1000.0)
- *value = p->value.freq.freq / 1000.0;
- else
- *value = p->value.freq.freq;
- break;
- case OPTUNITS_MHZ:
- if (p->value.freq.freq > 1000000.0)
- *value = p->value.freq.freq / 1000000.0;
- else if (p->value.freq.freq > 1000.0)
- *value = p->value.freq.freq / 1000.0;
- else
- *value = p->value.freq.freq;
- }
- }
- return TRUE;
- } else
- return FALSE;
-}
-
-
-Bool
-xf86GetOptValBool(const OptionInfoRec *table, int token, Bool *value)
-{
- OptionInfoPtr p;
-
- p = xf86TokenToOptinfo(table, token);
- if (p && p->found) {
- *value = p->value.bool;
- return TRUE;
- } else
- return FALSE;
-}
-
-
-Bool
-xf86ReturnOptValBool(const OptionInfoRec *table, int token, Bool def)
-{
- OptionInfoPtr p;
-
- p = xf86TokenToOptinfo(table, token);
- if (p && p->found) {
- return p->value.bool;
- } else
- return def;
-}
-
-
-int
-xf86NameCmp(const char *s1, const char *s2)
-{
- return xf86nameCompare(s1, s2);
-}
-
-char *
-xf86NormalizeName(const char *s)
-{
- char *ret, *q;
- const char *p;
-
- if (s == NULL)
- return NULL;
-
- ret = xalloc(strlen(s) + 1);
- for (p = s, q = ret; *p != 0; p++) {
- switch (*p) {
- case '_':
- case ' ':
- case '\t':
- continue;
- default:
- if (isupper(*p))
- *q++ = tolower(*p);
- else
- *q++ = *p;
- }
- }
- *q = '\0';
- return ret;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86PM.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86PM.c
deleted file mode 100644
index 0262be3df..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86PM.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86PM.c,v 3.9 2003/08/24 17:36:54 dawes Exp $ */
-/*
- * Copyright (c) 2000-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Xinput.h"
-
-int (*xf86PMGetEventFromOs)(int fd,pmEvent *events,int num) = NULL;
-pmWait (*xf86PMConfirmEventToOs)(int fd,pmEvent event) = NULL;
-
-static Bool suspended = FALSE;
-
-static int
-eventName(pmEvent event, char **str)
-{
- switch(event) {
- case XF86_APM_SYS_STANDBY: *str="System Standby Request"; return 0;
- case XF86_APM_SYS_SUSPEND: *str="System Suspend Request"; return 0;
- case XF86_APM_CRITICAL_SUSPEND: *str="Critical Suspend"; return 0;
- case XF86_APM_USER_STANDBY: *str="User System Standby Request"; return 0;
- case XF86_APM_USER_SUSPEND: *str="User System Suspend Request"; return 0;
- case XF86_APM_STANDBY_RESUME: *str="System Standby Resume"; return 0;
- case XF86_APM_NORMAL_RESUME: *str="Normal Resume System"; return 0;
- case XF86_APM_CRITICAL_RESUME: *str="Critical Resume System"; return 0;
- case XF86_APM_LOW_BATTERY: *str="Battery Low"; return 3;
- case XF86_APM_POWER_STATUS_CHANGE: *str="Power Status Change";return 3;
- case XF86_APM_UPDATE_TIME: *str="Update Time";return 3;
- case XF86_APM_CAPABILITY_CHANGED: *str="Capability Changed"; return 3;
- case XF86_APM_STANDBY_FAILED: *str="Standby Request Failed"; return 0;
- case XF86_APM_SUSPEND_FAILED: *str="Suspend Request Failed"; return 0;
- default: *str="Unknown Event"; return 0;
- }
-}
-
-static void
-suspend (pmEvent event, Bool undo)
-{
- int i;
- InputInfoPtr pInfo;
-
- xf86inSuspend = TRUE;
-
- for (i = 0; i < xf86NumScreens; i++) {
- xf86EnableAccess(xf86Screens[i]);
- if (xf86Screens[i]->EnableDisableFBAccess)
- (*xf86Screens[i]->EnableDisableFBAccess) (i, FALSE);
- }
-#if !defined(__EMX__)
- pInfo = xf86InputDevs;
- while (pInfo) {
- DisableDevice(pInfo->dev);
- pInfo = pInfo->next;
- }
-#endif
- xf86EnterServerState(SETUP);
- for (i = 0; i < xf86NumScreens; i++) {
- xf86EnableAccess(xf86Screens[i]);
- if (xf86Screens[i]->PMEvent)
- xf86Screens[i]->PMEvent(i,event,undo);
- else {
- xf86Screens[i]->LeaveVT(i, 0);
- xf86Screens[i]->vtSema = FALSE;
- }
- }
- xf86AccessLeave();
- xf86AccessLeaveState();
-}
-
-static void
-resume(pmEvent event, Bool undo)
-{
- int i;
- InputInfoPtr pInfo;
-
- xf86AccessEnter();
- xf86EnterServerState(SETUP);
- for (i = 0; i < xf86NumScreens; i++) {
- xf86EnableAccess(xf86Screens[i]);
- if (xf86Screens[i]->PMEvent)
- xf86Screens[i]->PMEvent(i,event,undo);
- else {
- xf86Screens[i]->vtSema = TRUE;
- xf86Screens[i]->EnterVT(i, 0);
- }
- }
- xf86EnterServerState(OPERATING);
- for (i = 0; i < xf86NumScreens; i++) {
- xf86EnableAccess(xf86Screens[i]);
- if (xf86Screens[i]->EnableDisableFBAccess)
- (*xf86Screens[i]->EnableDisableFBAccess) (i, TRUE);
- }
- SaveScreens(SCREEN_SAVER_FORCER, ScreenSaverReset);
-#if !defined(__EMX__)
- pInfo = xf86InputDevs;
- while (pInfo) {
- EnableDevice(pInfo->dev);
- pInfo = pInfo->next;
- }
-#endif
- xf86inSuspend = FALSE;
-}
-
-static void
-DoApmEvent(pmEvent event, Bool undo)
-{
- /*
- * we leave that as a global function for now. I don't know if
- * this might cause problems in the future. It is a global server
- * variable therefore it needs to be in a server info structure
- */
- int i, setup = 0;
-
- switch(event) {
-#if 0
- case XF86_APM_SYS_STANDBY:
- case XF86_APM_USER_STANDBY:
-#endif
- case XF86_APM_SYS_SUSPEND:
- case XF86_APM_CRITICAL_SUSPEND: /*do we want to delay a critical suspend?*/
- case XF86_APM_USER_SUSPEND:
- /* should we do this ? */
- if (!undo && !suspended) {
- suspend(event,undo);
- suspended = TRUE;
- } else if (undo && suspended) {
- resume(event,undo);
- suspended = FALSE;
- }
- break;
-#if 0
- case XF86_APM_STANDBY_RESUME:
-#endif
- case XF86_APM_NORMAL_RESUME:
- case XF86_APM_CRITICAL_RESUME:
- if (suspended) {
- resume(event,undo);
- suspended = FALSE;
- }
- break;
- default:
- for (i = 0; i < xf86NumScreens; i++) {
- if (xf86Screens[i]->PMEvent) {
- if (!setup) xf86EnterServerState(SETUP);
- setup = 1;
- xf86EnableAccess(xf86Screens[i]);
- xf86Screens[i]->PMEvent(i,event,undo);
- }
- }
- if (setup) xf86EnterServerState(OPERATING);
- break;
- }
-}
-
-#define MAX_NO_EVENTS 8
-
-void
-xf86HandlePMEvents(int fd, pointer data)
-{
- pmEvent events[MAX_NO_EVENTS];
- int i,n;
- Bool wait = FALSE;
-
- if (!xf86PMGetEventFromOs)
- return;
-
- if ((n = xf86PMGetEventFromOs(fd,events,MAX_NO_EVENTS))) {
- do {
- for (i = 0; i < n; i++) {
- char *str = NULL;
- int verb = eventName(events[i],&str);
-
- xf86MsgVerb(X_INFO,verb,"PM Event received: %s\n",str);
- DoApmEvent(events[i],FALSE);
- switch (xf86PMConfirmEventToOs(fd,events[i])) {
- case PM_WAIT:
- wait = TRUE;
- break;
- case PM_CONTINUE:
- wait = FALSE;
- break;
- case PM_FAILED:
- DoApmEvent(events[i],TRUE);
- wait = FALSE;
- break;
- default:
- break;
- }
- }
- if (wait)
- n = xf86PMGetEventFromOs(fd,events,MAX_NO_EVENTS);
- else
- break;
- } while (1);
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86PciInfo.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86PciInfo.h
deleted file mode 100644
index 183797e24..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86PciInfo.h
+++ /dev/null
@@ -1,726 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h,v 1.156 2003/10/30 15:26:33 tsi Exp $ */
-
-/*
- * Copyright (c) 1995-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains macros for the PCI Vendor and Device IDs for video
- * cards plus a few other things that are needed in drivers or elsewhere.
- * This information is used in several ways:
- * 1. It is used by drivers and/or other code.
- * 2. It is used by the pciid2c.pl script to determine what vendor data to
- * include in the pcidata module that the X server loads.
- * 3. A side-effect of 2. affects how config-generation works for
- * otherwise "unknown" cards.
- *
- * Don't add entries here for vendors that don't make video cards,
- * or for non-video devices unless they're needed by a driver or elsewhere.
- * A comprehensive set of PCI vendor, device and subsystem data is
- * auto-generated from the ../etc/pci.ids file using the pciids2c.pl script,
- * and is used in both the scanpci module and the scanpci utility. Don't
- * modify the pci.ids file. If new/corrected entries are required, add them
- * to ../etc/extrapci.ids.
- */
-
-#ifndef _XF86_PCIINFO_H
-#define _XF86_PCIINFO_H
-
-/* PCI Pseudo Vendor */
-#define PCI_VENDOR_GENERIC 0x00FF
-
-#define PCI_VENDOR_REAL3D 0x003D
-#define PCI_VENDOR_COMPAQ 0x0E11
-#define PCI_VENDOR_ATI 0x1002
-#define PCI_VENDOR_AVANCE 0x1005
-#define PCI_VENDOR_TSENG 0x100C
-#define PCI_VENDOR_NS 0x100B
-#define PCI_VENDOR_WEITEK 0x100E
-#define PCI_VENDOR_VIDEOLOGIC 0x1010
-#define PCI_VENDOR_DIGITAL 0x1011
-#define PCI_VENDOR_CIRRUS 0x1013
-#define PCI_VENDOR_AMD 0x1022
-#define PCI_VENDOR_TRIDENT 0x1023
-#define PCI_VENDOR_ALI 0x1025
-#define PCI_VENDOR_DELL 0x1028
-#define PCI_VENDOR_MATROX 0x102B
-#define PCI_VENDOR_CHIPSTECH 0x102C
-#define PCI_VENDOR_MIRO 0x1031
-#define PCI_VENDOR_NEC 0x1033
-#define PCI_VENDOR_SIS 0x1039
-#define PCI_VENDOR_HP 0x103C
-#define PCI_VENDOR_SGS 0x104A
-#define PCI_VENDOR_TI 0x104C
-#define PCI_VENDOR_SONY 0x104D
-#define PCI_VENDOR_OAK 0x104E
-#define PCI_VENDOR_MOTOROLA 0x1057
-#define PCI_VENDOR_NUMNINE 0x105D
-#define PCI_VENDOR_CYRIX 0x1078
-#define PCI_VENDOR_SUN 0x108E
-#define PCI_VENDOR_DIAMOND 0x1092
-#define PCI_VENDOR_BROOKTREE 0x109E
-#define PCI_VENDOR_NEOMAGIC 0x10C8
-#define PCI_VENDOR_NVIDIA 0x10DE
-#define PCI_VENDOR_IMS 0x10E0
-#define PCI_VENDOR_INTEGRAPHICS 0x10EA
-#define PCI_VENDOR_ALLIANCE 0x1142
-#define PCI_VENDOR_RENDITION 0x1163
-#define PCI_VENDOR_3DFX 0x121A
-#define PCI_VENDOR_SMI 0x126F
-#define PCI_VENDOR_TRITECH 0x1292
-#define PCI_VENDOR_NVIDIA_SGS 0x12D2
-#define PCI_VENDOR_VMWARE 0x15AD
-#define PCI_VENDOR_3DLABS 0x3D3D
-#define PCI_VENDOR_AVANCE_2 0x4005
-#define PCI_VENDOR_HERCULES 0x4843
-#define PCI_VENDOR_S3 0x5333
-#define PCI_VENDOR_INTEL 0x8086
-#define PCI_VENDOR_ARK 0xEDD8
-
-
-/* Generic */
-#define PCI_CHIP_VGA 0x0000
-#define PCI_CHIP_8514 0x0001
-
-/* Real 3D */
-#define PCI_CHIP_I740_PCI 0x00D1
-
-/* Compaq */
-#define PCI_CHIP_QV1280 0x3033
-
-/* ATI */
-#define PCI_CHIP_RV380_3150 0x3150
-#define PCI_CHIP_RV380_3151 0x3151
-#define PCI_CHIP_RV380_3152 0x3152
-#define PCI_CHIP_RV380_3153 0x3153
-#define PCI_CHIP_RV380_3154 0x3154
-#define PCI_CHIP_RV380_3156 0x3156
-#define PCI_CHIP_RV380_3E50 0x3E50
-#define PCI_CHIP_RV380_3E51 0x3E51
-#define PCI_CHIP_RV380_3E52 0x3E52
-#define PCI_CHIP_RV380_3E53 0x3E53
-#define PCI_CHIP_RV380_3E54 0x3E54
-#define PCI_CHIP_RV380_3E56 0x3E56
-#define PCI_CHIP_RS100_4136 0x4136
-#define PCI_CHIP_RS200_4137 0x4137
-#define PCI_CHIP_R300_AD 0x4144
-#define PCI_CHIP_R300_AE 0x4145
-#define PCI_CHIP_R300_AF 0x4146
-#define PCI_CHIP_R300_AG 0x4147
-#define PCI_CHIP_R350_AH 0x4148
-#define PCI_CHIP_R350_AI 0x4149
-#define PCI_CHIP_R350_AJ 0x414A
-#define PCI_CHIP_R350_AK 0x414B
-#define PCI_CHIP_RV350_AP 0x4150
-#define PCI_CHIP_RV350_AQ 0x4151
-#define PCI_CHIP_RV360_AR 0x4152
-#define PCI_CHIP_RV350_AS 0x4153
-#define PCI_CHIP_RV350_AT 0x4154
-#define PCI_CHIP_RV350_4155 0x4155
-#define PCI_CHIP_RV350_AV 0x4156
-#define PCI_CHIP_MACH32 0x4158
-#define PCI_CHIP_RS250_4237 0x4237
-#define PCI_CHIP_R200_BB 0x4242
-#define PCI_CHIP_R200_BC 0x4243
-#define PCI_CHIP_RS100_4336 0x4336
-#define PCI_CHIP_RS200_4337 0x4337
-#define PCI_CHIP_MACH64CT 0x4354
-#define PCI_CHIP_MACH64CX 0x4358
-#define PCI_CHIP_RS250_4437 0x4437
-#define PCI_CHIP_MACH64ET 0x4554
-#define PCI_CHIP_MACH64GB 0x4742
-#define PCI_CHIP_MACH64GD 0x4744
-#define PCI_CHIP_MACH64GI 0x4749
-#define PCI_CHIP_MACH64GL 0x474C
-#define PCI_CHIP_MACH64GM 0x474D
-#define PCI_CHIP_MACH64GN 0x474E
-#define PCI_CHIP_MACH64GO 0x474F
-#define PCI_CHIP_MACH64GP 0x4750
-#define PCI_CHIP_MACH64GQ 0x4751
-#define PCI_CHIP_MACH64GR 0x4752
-#define PCI_CHIP_MACH64GS 0x4753
-#define PCI_CHIP_MACH64GT 0x4754
-#define PCI_CHIP_MACH64GU 0x4755
-#define PCI_CHIP_MACH64GV 0x4756
-#define PCI_CHIP_MACH64GW 0x4757
-#define PCI_CHIP_MACH64GX 0x4758
-#define PCI_CHIP_MACH64GY 0x4759
-#define PCI_CHIP_MACH64GZ 0x475A
-#define PCI_CHIP_RV250_Id 0x4964
-#define PCI_CHIP_RV250_Ie 0x4965
-#define PCI_CHIP_RV250_If 0x4966
-#define PCI_CHIP_RV250_Ig 0x4967
-#define PCI_CHIP_R420_JH 0x4A48
-#define PCI_CHIP_R420_JI 0x4A49
-#define PCI_CHIP_R420_JJ 0x4A4A
-#define PCI_CHIP_R420_JK 0x4A4B
-#define PCI_CHIP_R420_JL 0x4A4C
-#define PCI_CHIP_R420_JM 0x4A4D
-#define PCI_CHIP_R420_JN 0x4A4E
-#define PCI_CHIP_R420_4A4F 0x4A4F
-#define PCI_CHIP_R420_JP 0x4A50
-#define PCI_CHIP_R481_4B49 0x4B49
-#define PCI_CHIP_R481_4B4A 0x4B4A
-#define PCI_CHIP_R481_4B4B 0x4B4B
-#define PCI_CHIP_R481_4B4C 0x4B4C
-#define PCI_CHIP_MACH64LB 0x4C42
-#define PCI_CHIP_MACH64LD 0x4C44
-#define PCI_CHIP_RAGE128LE 0x4C45
-#define PCI_CHIP_RAGE128LF 0x4C46
-#define PCI_CHIP_MACH64LG 0x4C47
-#define PCI_CHIP_MACH64LI 0x4C49
-#define PCI_CHIP_MACH64LM 0x4C4D
-#define PCI_CHIP_MACH64LN 0x4C4E
-#define PCI_CHIP_MACH64LP 0x4C50
-#define PCI_CHIP_MACH64LQ 0x4C51
-#define PCI_CHIP_MACH64LR 0x4C52
-#define PCI_CHIP_MACH64LS 0x4C53
-#define PCI_CHIP_RADEON_LW 0x4C57
-#define PCI_CHIP_RADEON_LX 0x4C58
-#define PCI_CHIP_RADEON_LY 0x4C59
-#define PCI_CHIP_RADEON_LZ 0x4C5A
-#define PCI_CHIP_RV250_Ld 0x4C64
-#define PCI_CHIP_RV250_Le 0x4C65
-#define PCI_CHIP_RV250_Lf 0x4C66
-#define PCI_CHIP_RV250_Lg 0x4C67
-#define PCI_CHIP_RV250_Ln 0x4C6E
-#define PCI_CHIP_RAGE128MF 0x4D46
-#define PCI_CHIP_RAGE128ML 0x4D4C
-#define PCI_CHIP_R300_ND 0x4E44
-#define PCI_CHIP_R300_NE 0x4E45
-#define PCI_CHIP_R300_NF 0x4E46
-#define PCI_CHIP_R300_NG 0x4E47
-#define PCI_CHIP_R350_NH 0x4E48
-#define PCI_CHIP_R350_NI 0x4E49
-#define PCI_CHIP_R360_NJ 0x4E4A
-#define PCI_CHIP_R350_NK 0x4E4B
-#define PCI_CHIP_RV350_NP 0x4E50
-#define PCI_CHIP_RV350_NQ 0x4E51
-#define PCI_CHIP_RV350_NR 0x4E52
-#define PCI_CHIP_RV350_NS 0x4E53
-#define PCI_CHIP_RV350_NT 0x4E54
-#define PCI_CHIP_RV350_NV 0x4E56
-#define PCI_CHIP_RAGE128PA 0x5041
-#define PCI_CHIP_RAGE128PB 0x5042
-#define PCI_CHIP_RAGE128PC 0x5043
-#define PCI_CHIP_RAGE128PD 0x5044
-#define PCI_CHIP_RAGE128PE 0x5045
-#define PCI_CHIP_RAGE128PF 0x5046
-#define PCI_CHIP_RAGE128PG 0x5047
-#define PCI_CHIP_RAGE128PH 0x5048
-#define PCI_CHIP_RAGE128PI 0x5049
-#define PCI_CHIP_RAGE128PJ 0x504A
-#define PCI_CHIP_RAGE128PK 0x504B
-#define PCI_CHIP_RAGE128PL 0x504C
-#define PCI_CHIP_RAGE128PM 0x504D
-#define PCI_CHIP_RAGE128PN 0x504E
-#define PCI_CHIP_RAGE128PO 0x504F
-#define PCI_CHIP_RAGE128PP 0x5050
-#define PCI_CHIP_RAGE128PQ 0x5051
-#define PCI_CHIP_RAGE128PR 0x5052
-#define PCI_CHIP_RAGE128PS 0x5053
-#define PCI_CHIP_RAGE128PT 0x5054
-#define PCI_CHIP_RAGE128PU 0x5055
-#define PCI_CHIP_RAGE128PV 0x5056
-#define PCI_CHIP_RAGE128PW 0x5057
-#define PCI_CHIP_RAGE128PX 0x5058
-#define PCI_CHIP_RADEON_QD 0x5144
-#define PCI_CHIP_RADEON_QE 0x5145
-#define PCI_CHIP_RADEON_QF 0x5146
-#define PCI_CHIP_RADEON_QG 0x5147
-#define PCI_CHIP_R200_QH 0x5148
-#define PCI_CHIP_R200_QI 0x5149
-#define PCI_CHIP_R200_QJ 0x514A
-#define PCI_CHIP_R200_QK 0x514B
-#define PCI_CHIP_R200_QL 0x514C
-#define PCI_CHIP_R200_QM 0x514D
-#define PCI_CHIP_R200_QN 0x514E
-#define PCI_CHIP_R200_QO 0x514F
-#define PCI_CHIP_RV200_QW 0x5157
-#define PCI_CHIP_RV200_QX 0x5158
-#define PCI_CHIP_RV100_QY 0x5159
-#define PCI_CHIP_RV100_QZ 0x515A
-#define PCI_CHIP_RN50_515E 0x515E
-#define PCI_CHIP_RAGE128RE 0x5245
-#define PCI_CHIP_RAGE128RF 0x5246
-#define PCI_CHIP_RAGE128RG 0x5247
-#define PCI_CHIP_RAGE128RK 0x524B
-#define PCI_CHIP_RAGE128RL 0x524C
-#define PCI_CHIP_RAGE128SE 0x5345
-#define PCI_CHIP_RAGE128SF 0x5346
-#define PCI_CHIP_RAGE128SG 0x5347
-#define PCI_CHIP_RAGE128SH 0x5348
-#define PCI_CHIP_RAGE128SK 0x534B
-#define PCI_CHIP_RAGE128SL 0x534C
-#define PCI_CHIP_RAGE128SM 0x534D
-#define PCI_CHIP_RAGE128SN 0x534E
-#define PCI_CHIP_RAGE128TF 0x5446
-#define PCI_CHIP_RAGE128TL 0x544C
-#define PCI_CHIP_RAGE128TR 0x5452
-#define PCI_CHIP_RAGE128TS 0x5453
-#define PCI_CHIP_RAGE128TT 0x5454
-#define PCI_CHIP_RAGE128TU 0x5455
-#define PCI_CHIP_RV370_5460 0x5460
-#define PCI_CHIP_RV370_5461 0x5461
-#define PCI_CHIP_RV370_5462 0x5462
-#define PCI_CHIP_RV370_5463 0x5463
-#define PCI_CHIP_RV370_5464 0x5464
-#define PCI_CHIP_RV370_5465 0x5465
-#define PCI_CHIP_RV370_5466 0x5466
-#define PCI_CHIP_RV370_5467 0x5467
-#define PCI_CHIP_R423_UH 0x5548
-#define PCI_CHIP_R423_UI 0x5549
-#define PCI_CHIP_R423_UJ 0x554A
-#define PCI_CHIP_R423_UK 0x554B
-#define PCI_CHIP_R430_554C 0x554C
-#define PCI_CHIP_R430_554D 0x554D
-#define PCI_CHIP_R430_554E 0x554E
-#define PCI_CHIP_R430_554F 0x554F
-#define PCI_CHIP_R423_5550 0x5550
-#define PCI_CHIP_R423_UQ 0x5551
-#define PCI_CHIP_R423_UR 0x5552
-#define PCI_CHIP_R423_UT 0x5554
-#define PCI_CHIP_RV410_564A 0x564A
-#define PCI_CHIP_RV410_564B 0x564B
-#define PCI_CHIP_RV410_5652 0x5652
-#define PCI_CHIP_RV410_5653 0x5653
-#define PCI_CHIP_MACH64VT 0x5654
-#define PCI_CHIP_MACH64VU 0x5655
-#define PCI_CHIP_MACH64VV 0x5656
-#define PCI_CHIP_RS300_5834 0x5834
-#define PCI_CHIP_RS300_5835 0x5835
-#define PCI_CHIP_RS300_5836 0x5836
-#define PCI_CHIP_RS300_5837 0x5837
-#define PCI_CHIP_RS480_5954 0x5954
-#define PCI_CHIP_RS480_5955 0x5955
-#define PCI_CHIP_RV280_5960 0x5960
-#define PCI_CHIP_RV280_5961 0x5961
-#define PCI_CHIP_RV280_5962 0x5962
-#define PCI_CHIP_RV280_5964 0x5964
-#define PCI_CHIP_RV280_5965 0x5965
-#define PCI_CHIP_RN50_5969 0x5969
-#define PCI_CHIP_RS482_5974 0x5974
-#define PCI_CHIP_RS482_5975 0x5975
-#define PCI_CHIP_RS400_5A41 0x5A41
-#define PCI_CHIP_RS400_5A42 0x5A42
-#define PCI_CHIP_RC410_5A61 0x5A61
-#define PCI_CHIP_RC410_5A62 0x5A62
-#define PCI_CHIP_RV370_5B60 0x5B60
-#define PCI_CHIP_RV370_5B61 0x5B61
-#define PCI_CHIP_RV370_5B62 0x5B62
-#define PCI_CHIP_RV370_5B63 0x5B63
-#define PCI_CHIP_RV370_5B64 0x5B64
-#define PCI_CHIP_RV370_5B65 0x5B65
-#define PCI_CHIP_RV370_5B66 0x5B66
-#define PCI_CHIP_RV370_5B67 0x5B67
-#define PCI_CHIP_RV280_5C61 0x5C61
-#define PCI_CHIP_RV280_5C63 0x5C63
-#define PCI_CHIP_R430_5D48 0x5D48
-#define PCI_CHIP_R430_5D49 0x5D49
-#define PCI_CHIP_R430_5D4A 0x5D4A
-#define PCI_CHIP_R480_5D4C 0x5D4C
-#define PCI_CHIP_R480_5D4D 0x5D4D
-#define PCI_CHIP_R480_5D4E 0x5D4E
-#define PCI_CHIP_R480_5D4F 0x5D4F
-#define PCI_CHIP_R480_5D50 0x5D50
-#define PCI_CHIP_R480_5D52 0x5D52
-#define PCI_CHIP_R423_5D57 0x5D57
-#define PCI_CHIP_RV410_5E48 0x5E48
-#define PCI_CHIP_RV410_5E4A 0x5E4A
-#define PCI_CHIP_RV410_5E4B 0x5E4B
-#define PCI_CHIP_RV410_5E4C 0x5E4C
-#define PCI_CHIP_RV410_5E4D 0x5E4D
-#define PCI_CHIP_RV410_5E4F 0x5E4F
-#define PCI_CHIP_RS350_7834 0x7834
-#define PCI_CHIP_RS350_7835 0x7835
-
-/* Avance Logic */
-#define PCI_CHIP_ALG2064 0x2064
-#define PCI_CHIP_ALG2301 0x2301
-#define PCI_CHIP_ALG2501 0x2501
-
-/* Tseng */
-#define PCI_CHIP_ET4000_W32P_A 0x3202
-#define PCI_CHIP_ET4000_W32P_B 0x3205
-#define PCI_CHIP_ET4000_W32P_D 0x3206
-#define PCI_CHIP_ET4000_W32P_C 0x3207
-#define PCI_CHIP_ET6000 0x3208
-#define PCI_CHIP_ET6300 0x4702
-
-/* Weitek */
-#define PCI_CHIP_P9000 0x9001
-#define PCI_CHIP_P9100 0x9100
-
-/* Digital */
-#define PCI_CHIP_DC21050 0x0001
-#define PCI_CHIP_DEC21030 0x0004
-#define PCI_CHIP_TGA2 0x000D
-
-/* Cirrus Logic */
-#define PCI_CHIP_GD7548 0x0038
-#define PCI_CHIP_GD7555 0x0040
-#define PCI_CHIP_GD5430 0x00A0
-#define PCI_CHIP_GD5434_4 0x00A4
-#define PCI_CHIP_GD5434_8 0x00A8
-#define PCI_CHIP_GD5436 0x00AC
-#define PCI_CHIP_GD5446 0x00B8
-#define PCI_CHIP_GD5480 0x00BC
-#define PCI_CHIP_GD5462 0x00D0
-#define PCI_CHIP_GD5464 0x00D4
-#define PCI_CHIP_GD5464BD 0x00D5
-#define PCI_CHIP_GD5465 0x00D6
-#define PCI_CHIP_6729 0x1100
-#define PCI_CHIP_6832 0x1110
-#define PCI_CHIP_GD7542 0x1200
-#define PCI_CHIP_GD7543 0x1202
-#define PCI_CHIP_GD7541 0x1204
-
-/* AMD */
-#define PCI_CHIP_AMD761 0x700E
-
-/* Trident */
-#define PCI_CHIP_2100 0x2100
-#define PCI_CHIP_8400 0x8400
-#define PCI_CHIP_8420 0x8420
-#define PCI_CHIP_8500 0x8500
-#define PCI_CHIP_8520 0x8520
-#define PCI_CHIP_8600 0x8600
-#define PCI_CHIP_8620 0x8620
-#define PCI_CHIP_8820 0x8820
-#define PCI_CHIP_9320 0x9320
-#define PCI_CHIP_9388 0x9388
-#define PCI_CHIP_9397 0x9397
-#define PCI_CHIP_939A 0x939A
-#define PCI_CHIP_9420 0x9420
-#define PCI_CHIP_9440 0x9440
-#define PCI_CHIP_9520 0x9520
-#define PCI_CHIP_9525 0x9525
-#define PCI_CHIP_9540 0x9540
-#define PCI_CHIP_9660 0x9660
-#define PCI_CHIP_9750 0x9750
-#define PCI_CHIP_9850 0x9850
-#define PCI_CHIP_9880 0x9880
-#define PCI_CHIP_9910 0x9910
-
-/* ALI */
-#define PCI_CHIP_M1435 0x1435
-
-/* Matrox */
-#define PCI_CHIP_MGA2085 0x0518
-#define PCI_CHIP_MGA2064 0x0519
-#define PCI_CHIP_MGA1064 0x051A
-#define PCI_CHIP_MGA2164 0x051B
-#define PCI_CHIP_MGA2164_AGP 0x051F
-#define PCI_CHIP_MGAG200_PCI 0x0520
-#define PCI_CHIP_MGAG200 0x0521
-#define PCI_CHIP_MGAG400 0x0525
-#define PCI_CHIP_MGAG550 0x2527
-#define PCI_CHIP_IMPRESSION 0x0D10
-#define PCI_CHIP_MGAG100_PCI 0x1000
-#define PCI_CHIP_MGAG100 0x1001
-
-#define PCI_CARD_G400_TH 0x2179
-#define PCI_CARD_MILL_G200_SD 0xFF00
-#define PCI_CARD_PROD_G100_SD 0xFF01
-#define PCI_CARD_MYST_G200_SD 0xFF02
-#define PCI_CARD_MILL_G200_SG 0xFF03
-#define PCI_CARD_MARV_G200_SD 0xFF04
-
-/* Chips & Tech */
-#define PCI_CHIP_65545 0x00D8
-#define PCI_CHIP_65548 0x00DC
-#define PCI_CHIP_65550 0x00E0
-#define PCI_CHIP_65554 0x00E4
-#define PCI_CHIP_65555 0x00E5
-#define PCI_CHIP_68554 0x00F4
-#define PCI_CHIP_69000 0x00C0
-#define PCI_CHIP_69030 0x0C30
-
-/* Miro */
-#define PCI_CHIP_ZR36050 0x5601
-
-/* NEC */
-#define PCI_CHIP_POWER_VR 0x0046
-
-/* SiS */
-#define PCI_CHIP_SG86C201 0x0001
-#define PCI_CHIP_SG86C202 0x0002
-#define PCI_CHIP_SG85C503 0x0008
-#define PCI_CHIP_SIS5597 0x0200
-/* Agregado por Carlos Duclos & Manuel Jander */
-#define PCI_CHIP_SIS82C204 0x0204
-#define PCI_CHIP_SG86C205 0x0205
-#define PCI_CHIP_SG86C215 0x0215
-#define PCI_CHIP_SG86C225 0x0225
-#define PCI_CHIP_85C501 0x0406
-#define PCI_CHIP_85C496 0x0496
-#define PCI_CHIP_85C601 0x0601
-#define PCI_CHIP_85C5107 0x5107
-#define PCI_CHIP_85C5511 0x5511
-#define PCI_CHIP_85C5513 0x5513
-#define PCI_CHIP_SIS5571 0x5571
-#define PCI_CHIP_SIS5597_2 0x5597
-#define PCI_CHIP_SIS530 0x6306
-#define PCI_CHIP_SIS6326 0x6326
-#define PCI_CHIP_SIS7001 0x7001
-#define PCI_CHIP_SIS300 0x0300
-#define PCI_CHIP_SIS315H 0x0310
-#define PCI_CHIP_SIS315PRO 0x0325
-#define PCI_CHIP_SIS330 0x0330
-#define PCI_CHIP_SIS630 0x6300
-#define PCI_CHIP_SIS540 0x5300
-#define PCI_CHIP_SIS550 0x5315
-#define PCI_CHIP_SIS650 0x6325
-#define PCI_CHIP_SIS730 0x7300
-
-/* Hewlett-Packard */
-#define PCI_CHIP_ELROY 0x1054
-#define PCI_CHIP_ZX1_SBA 0x1229
-#define PCI_CHIP_ZX1_IOC 0x122A
-#define PCI_CHIP_ZX1_LBA 0x122E /* a.k.a. Mercury */
-#define PCI_CHIP_ZX1_AGP8 0x12B4 /* a.k.a. QuickSilver */
-#define PCI_CHIP_ZX2_LBA 0x12EE
-#define PCI_CHIP_ZX2_SBA 0x4030
-#define PCI_CHIP_ZX2_IOC 0x4031
-
-/* SGS */
-#define PCI_CHIP_STG2000 0x0008
-#define PCI_CHIP_STG1764 0x0009
-#define PCI_CHIP_KYROII 0x0010
-
-/* Texas Instruments */
-#define PCI_CHIP_TI_PERMEDIA 0x3D04
-#define PCI_CHIP_TI_PERMEDIA2 0x3D07
-
-/* Oak */
-#define PCI_CHIP_OTI107 0x0107
-
-/* Number Nine */
-#define PCI_CHIP_I128 0x2309
-#define PCI_CHIP_I128_2 0x2339
-#define PCI_CHIP_I128_T2R 0x493D
-#define PCI_CHIP_I128_T2R4 0x5348
-
-/* Sun */
-#define PCI_CHIP_EBUS 0x1000
-#define PCI_CHIP_HAPPY_MEAL 0x1001
-#define PCI_CHIP_SIMBA 0x5000
-#define PCI_CHIP_PSYCHO 0x8000
-#define PCI_CHIP_SCHIZO 0x8001
-#define PCI_CHIP_SABRE 0xA000
-#define PCI_CHIP_HUMMINGBIRD 0xA001
-
-/* BrookTree */
-#define PCI_CHIP_BT848 0x0350
-#define PCI_CHIP_BT849 0x0351
-
-/* NVIDIA */
-#define PCI_CHIP_NV1 0x0008
-#define PCI_CHIP_DAC64 0x0009
-#define PCI_CHIP_TNT 0x0020
-#define PCI_CHIP_TNT2 0x0028
-#define PCI_CHIP_UTNT2 0x0029
-#define PCI_CHIP_VTNT2 0x002C
-#define PCI_CHIP_UVTNT2 0x002D
-#define PCI_CHIP_ITNT2 0x00A0
-#define PCI_CHIP_GEFORCE_256 0x0100
-#define PCI_CHIP_GEFORCE_DDR 0x0101
-#define PCI_CHIP_QUADRO 0x0103
-#define PCI_CHIP_GEFORCE2_MX 0x0110
-#define PCI_CHIP_GEFORCE2_MX_100 0x0111
-#define PCI_CHIP_GEFORCE2_GO 0x0112
-#define PCI_CHIP_QUADRO2_MXR 0x0113
-#define PCI_CHIP_GEFORCE2_GTS 0x0150
-#define PCI_CHIP_GEFORCE2_TI 0x0151
-#define PCI_CHIP_GEFORCE2_ULTRA 0x0152
-#define PCI_CHIP_QUADRO2_PRO 0x0153
-#define PCI_CHIP_GEFORCE4_MX_460 0x0170
-#define PCI_CHIP_GEFORCE4_MX_440 0x0171
-#define PCI_CHIP_GEFORCE4_MX_420 0x0172
-#define PCI_CHIP_GEFORCE4_440_GO 0x0174
-#define PCI_CHIP_GEFORCE4_420_GO 0x0175
-#define PCI_CHIP_GEFORCE4_420_GO_M32 0x0176
-#define PCI_CHIP_QUADRO4_500XGL 0x0178
-#define PCI_CHIP_GEFORCE4_440_GO_M64 0x0179
-#define PCI_CHIP_QUADRO4_200 0x017A
-#define PCI_CHIP_QUADRO4_550XGL 0x017B
-#define PCI_CHIP_QUADRO4_500_GOGL 0x017C
-#define PCI_CHIP_IGEFORCE2 0x01A0
-#define PCI_CHIP_GEFORCE3 0x0200
-#define PCI_CHIP_GEFORCE3_TI_200 0x0201
-#define PCI_CHIP_GEFORCE3_TI_500 0x0202
-#define PCI_CHIP_QUADRO_DCC 0x0203
-#define PCI_CHIP_GEFORCE4_TI_4600 0x0250
-#define PCI_CHIP_GEFORCE4_TI_4400 0x0251
-#define PCI_CHIP_GEFORCE4_TI_4200 0x0253
-#define PCI_CHIP_QUADRO4_900XGL 0x0258
-#define PCI_CHIP_QUADRO4_750XGL 0x0259
-#define PCI_CHIP_QUADRO4_700XGL 0x025B
-
-/* NVIDIA & SGS */
-#define PCI_CHIP_RIVA128 0x0018
-
-/* IMS */
-#define PCI_CHIP_IMSTT128 0x9128
-#define PCI_CHIP_IMSTT3D 0x9135
-
-/* Alliance Semiconductor */
-#define PCI_CHIP_AP6410 0x3210
-#define PCI_CHIP_AP6422 0x6422
-#define PCI_CHIP_AT24 0x6424
-#define PCI_CHIP_AT3D 0x643D
-
-/* 3dfx Interactive */
-#define PCI_CHIP_VOODOO_GRAPHICS 0x0001
-#define PCI_CHIP_VOODOO2 0x0002
-#define PCI_CHIP_BANSHEE 0x0003
-#define PCI_CHIP_VOODOO3 0x0005
-#define PCI_CHIP_VOODOO5 0x0009
-
-#define PCI_CARD_VOODOO3_2000 0x0036
-#define PCI_CARD_VOODOO3_3000 0x003A
-
-/* Rendition */
-#define PCI_CHIP_V1000 0x0001
-#define PCI_CHIP_V2x00 0x2000
-
-/* 3Dlabs */
-#define PCI_CHIP_300SX 0x0001
-#define PCI_CHIP_500TX 0x0002
-#define PCI_CHIP_DELTA 0x0003
-#define PCI_CHIP_PERMEDIA 0x0004
-#define PCI_CHIP_MX 0x0006
-#define PCI_CHIP_PERMEDIA2 0x0007
-#define PCI_CHIP_GAMMA 0x0008
-#define PCI_CHIP_PERMEDIA2V 0x0009
-#define PCI_CHIP_PERMEDIA3 0x000A
-#define PCI_CHIP_PERMEDIA4 0x000C
-#define PCI_CHIP_R4 0x000D
-#define PCI_CHIP_GAMMA2 0x000E
-#define PCI_CHIP_R4ALT 0x0011
-
-/* S3 */
-#define PCI_CHIP_PLATO 0x0551
-#define PCI_CHIP_VIRGE 0x5631
-#define PCI_CHIP_TRIO 0x8811
-#define PCI_CHIP_AURORA64VP 0x8812
-#define PCI_CHIP_TRIO64UVP 0x8814
-#define PCI_CHIP_VIRGE_VX 0x883D
-#define PCI_CHIP_868 0x8880
-#define PCI_CHIP_928 0x88B0
-#define PCI_CHIP_864_0 0x88C0
-#define PCI_CHIP_864_1 0x88C1
-#define PCI_CHIP_964_0 0x88D0
-#define PCI_CHIP_964_1 0x88D1
-#define PCI_CHIP_968 0x88F0
-#define PCI_CHIP_TRIO64V2_DXGX 0x8901
-#define PCI_CHIP_PLATO_PX 0x8902
-#define PCI_CHIP_Trio3D 0x8904
-#define PCI_CHIP_VIRGE_DXGX 0x8A01
-#define PCI_CHIP_VIRGE_GX2 0x8A10
-#define PCI_CHIP_Trio3D_2X 0x8A13
-#define PCI_CHIP_SAVAGE3D 0x8A20
-#define PCI_CHIP_SAVAGE3D_MV 0x8A21
-#define PCI_CHIP_SAVAGE4 0x8A22
-#define PCI_CHIP_PROSAVAGE_PM 0x8A25
-#define PCI_CHIP_PROSAVAGE_KM 0x8A26
-#define PCI_CHIP_VIRGE_MX 0x8C01
-#define PCI_CHIP_VIRGE_MXPLUS 0x8C02
-#define PCI_CHIP_VIRGE_MXP 0x8C03
-#define PCI_CHIP_SAVAGE_MX_MV 0x8C10
-#define PCI_CHIP_SAVAGE_MX 0x8C11
-#define PCI_CHIP_SAVAGE_IX_MV 0x8C12
-#define PCI_CHIP_SAVAGE_IX 0x8C13
-#define PCI_CHIP_SUPSAV_MX128 0x8C22
-#define PCI_CHIP_SUPSAV_MX64 0x8C24
-#define PCI_CHIP_SUPSAV_MX64C 0x8C26
-#define PCI_CHIP_SUPSAV_IX128SDR 0x8C2A
-#define PCI_CHIP_SUPSAV_IX128DDR 0x8C2B
-#define PCI_CHIP_SUPSAV_IX64SDR 0x8C2C
-#define PCI_CHIP_SUPSAV_IX64DDR 0x8C2D
-#define PCI_CHIP_SUPSAV_IXCSDR 0x8C2E
-#define PCI_CHIP_SUPSAV_IXCDDR 0x8C2F
-#define PCI_CHIP_S3TWISTER_P 0x8D01
-#define PCI_CHIP_S3TWISTER_K 0x8D02
-#define PCI_CHIP_PROSAVAGE_DDR 0x8D03
-#define PCI_CHIP_PROSAVAGE_DDRK 0x8D04
-#define PCI_CHIP_SAVAGE2000 0x9102
-
-/* ARK Logic */
-#define PCI_CHIP_1000PV 0xA091
-#define PCI_CHIP_2000PV 0xA099
-#define PCI_CHIP_2000MT 0xA0A1
-#define PCI_CHIP_2000MI 0xA0A9
-
-/* Tritech Microelectronics */
-#define PCI_CHIP_TR25202 0xFC02
-
-/* Neomagic */
-#define PCI_CHIP_NM2070 0x0001
-#define PCI_CHIP_NM2090 0x0002
-#define PCI_CHIP_NM2093 0x0003
-#define PCI_CHIP_NM2097 0x0083
-#define PCI_CHIP_NM2160 0x0004
-#define PCI_CHIP_NM2200 0x0005
-#define PCI_CHIP_NM2230 0x0025
-#define PCI_CHIP_NM2360 0x0006
-#define PCI_CHIP_NM2380 0x0016
-
-/* Intel */
-#define PCI_CHIP_I815_BRIDGE 0x1130
-#define PCI_CHIP_I815 0x1132
-#define PCI_CHIP_82801_P2P 0x244E
-#define PCI_CHIP_845_G_BRIDGE 0x2560
-#define PCI_CHIP_845_G 0x2562
-#define PCI_CHIP_I830_M_BRIDGE 0x3575
-#define PCI_CHIP_I830_M 0x3577
-#define PCI_CHIP_I810_BRIDGE 0x7120
-#define PCI_CHIP_I810 0x7121
-#define PCI_CHIP_I810_DC100_BRIDGE 0x7122
-#define PCI_CHIP_I810_DC100 0x7123
-#define PCI_CHIP_I810_E_BRIDGE 0x7124
-#define PCI_CHIP_I810_E 0x7125
-#define PCI_CHIP_I740_AGP 0x7800
-#define PCI_CHIP_460GX_PXB 0x84CB
-#define PCI_CHIP_460GX_SAC 0x84E0
-#define PCI_CHIP_460GX_GXB_2 0x84E2 /* PCI function 2 */
-#define PCI_CHIP_460GX_WXB 0x84E6
-#define PCI_CHIP_460GX_GXB_1 0x84EA /* PCI function 1 */
-
-/* Silicon Motion Inc. */
-#define PCI_CHIP_SMI910 0x0910
-#define PCI_CHIP_SMI810 0x0810
-#define PCI_CHIP_SMI820 0x0820
-#define PCI_CHIP_SMI710 0x0710
-#define PCI_CHIP_SMI712 0x0712
-#define PCI_CHIP_SMI720 0x0720
-#define PCI_CHIP_SMI731 0x0730
-
-/* VMware */
-#define PCI_CHIP_VMWARE0405 0x0405
-#define PCI_CHIP_VMWARE0710 0x0710
-
-#endif /* _XF86_PCIINFO_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Priv.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Priv.h
deleted file mode 100644
index f32fa768d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Priv.h
+++ /dev/null
@@ -1,228 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Priv.h,v 3.83 2004/01/27 01:31:45 dawes Exp $ */
-
-/*
- * Copyright (c) 1997-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains declarations for private XFree86 functions and variables,
- * and definitions of private macros.
- *
- * "private" means not available to video drivers.
- */
-
-#ifndef _XF86PRIV_H
-#define _XF86PRIV_H
-
-#include "xf86Privstr.h"
-#include "propertyst.h"
-
-/*
- * Parameters set ONLY from the command line options
- * The global state of these things is held in xf86InfoRec (when appropriate).
- */
-extern const char *xf86ConfigFile;
-extern Bool xf86AllowMouseOpenFail;
-#ifdef XF86VIDMODE
-extern Bool xf86VidModeDisabled;
-extern Bool xf86VidModeAllowNonLocal;
-#endif
-#ifdef XF86MISC
-extern Bool xf86MiscModInDevDisabled;
-extern Bool xf86MiscModInDevAllowNonLocal;
-#endif
-extern Bool xf86fpFlag;
-extern Bool xf86coFlag;
-extern Bool xf86sFlag;
-extern Bool xf86bsEnableFlag;
-extern Bool xf86bsDisableFlag;
-extern Bool xf86silkenMouseDisableFlag;
-extern Bool xf86acpiDisableFlag;
-extern char *xf86LayoutName;
-extern char *xf86ScreenName;
-extern char *xf86PointerName;
-extern char *xf86KeyboardName;
-#ifdef KEEPBPP
-extern int xf86Bpp;
-#endif
-extern int xf86FbBpp;
-extern int xf86Depth;
-extern Pix24Flags xf86Pix24;
-extern rgb xf86Weight;
-extern Bool xf86FlipPixels;
-extern Bool xf86BestRefresh;
-extern Gamma xf86Gamma;
-extern char *xf86ServerName;
-extern Bool xf86ShowUnresolved;
-extern PciBusId xf86IsolateDevice;
-
-/* Other parameters */
-
-extern xf86InfoRec xf86Info;
-extern const char *xf86InputDeviceList;
-extern const char *xf86ModulePath;
-extern MessageType xf86ModPathFrom;
-extern const char *xf86LogFile;
-extern MessageType xf86LogFileFrom;
-extern Bool xf86LogFileWasOpened;
-extern serverLayoutRec xf86ConfigLayout;
-extern Pix24Flags xf86ConfigPix24;
-
-extern unsigned short xf86MouseCflags[];
-extern Bool xf86SupportedMouseTypes[];
-extern int xf86NumMouseTypes;
-
-#ifdef XFree86LOADER
-extern DriverPtr *xf86DriverList;
-extern ModuleInfoPtr *xf86ModuleInfoList;
-extern int xf86NumModuleInfos;
-#else
-extern DriverPtr xf86DriverList[];
-#endif
-extern int xf86NumDrivers;
-extern Bool xf86Resetting;
-extern Bool xf86Initialising;
-extern Bool xf86ProbeFailed;
-extern int xf86NumScreens;
-extern pciVideoPtr *xf86PciVideoInfo;
-extern xf86CurrentAccessRec xf86CurrentAccess;
-extern const char *xf86VisualNames[];
-extern int xf86Verbose; /* verbosity level */
-extern int xf86LogVerbose; /* log file verbosity level */
-extern Bool xf86ProbeOnly;
-extern Bool xf86DoProbe;
-extern Bool xorgHWAccess;
-
-extern RootWinPropPtr *xf86RegisteredPropertiesTable;
-
-#ifndef DEFAULT_VERBOSE
-#define DEFAULT_VERBOSE 0
-#endif
-#ifndef DEFAULT_LOG_VERBOSE
-#define DEFAULT_LOG_VERBOSE 3
-#endif
-#ifndef DEFAULT_DPI
-#define DEFAULT_DPI 75
-#endif
-
-#define DEFAULT_UNRESOLVED TRUE
-#define DEFAULT_BEST_REFRESH FALSE
-
-/* Function Prototypes */
-#ifndef _NO_XF86_PROTOTYPES
-
-/* xf86Bus.c */
-
-void xf86BusProbe(void);
-void xf86ChangeBusIndex(int oldIndex, int newIndex);
-void xf86AccessInit(void);
-void xf86AccessEnter(void);
-void xf86AccessLeave(void);
-void xf86EntityInit(void);
-void xf86EntityEnter(void);
-void xf86EntityLeave(void);
-void xf86AccessLeaveState(void);
-
-void xf86FindPrimaryDevice(void);
-/* new RAC */
-void xf86ResourceBrokerInit(void);
-void xf86PostProbe(void);
-void xf86ClearEntityListForScreen(int scrnIndex);
-void xf86AddDevToEntity(int entityIndex, GDevPtr dev);
-extern void xf86PostPreInit(void);
-extern void xf86PostScreenInit(void);
-extern memType getValidBIOSBase(PCITAG tag, int num);
-extern int pciTestMultiDeviceCard(int bus, int dev, int func, PCITAG** pTag);
-
-/* xf86Config.c */
-
-Bool xf86PathIsAbsolute(const char *path);
-Bool xf86PathIsSafe(const char *path);
-
-/* xf86DefaultModes */
-
-extern DisplayModeRec xf86DefaultModes [];
-
-/* xf86DoScanPci.c */
-
-void DoScanPci(int argc, char **argv, int i);
-
-/* xf86DoProbe.c */
-void DoProbeArgs(int argc, char **argv, int i);
-void DoProbe(void);
-void DoConfigure(void);
-
-/* xf86Events.c */
-
-void xf86PostKbdEvent(unsigned key);
-void xf86PostMseEvent(DeviceIntPtr device, int buttons, int dx, int dy);
-void xf86Wakeup(pointer blockData, int err, pointer pReadmask);
-void xf86SigHandler(int signo);
-#ifdef MEMDEBUG
-void xf86SigMemDebug(int signo);
-#endif
-void xf86HandlePMEvents(int fd, pointer data);
-extern int (*xf86PMGetEventFromOs)(int fd,pmEvent *events,int num);
-extern pmWait (*xf86PMConfirmEventToOs)(int fd,pmEvent event);
-void xf86GrabServerCallback(CallbackListPtr *, pointer, pointer);
-
-/* xf86Helper.c */
-void xf86LogInit(void);
-void xf86CloseLog(void);
-
-/* xf86Init.c */
-Bool xf86LoadModules(char **list, pointer *optlist);
-int xf86SetVerbosity(int verb);
-int xf86SetLogVerbosity(int verb);
-
-/* xf86Io.c */
-
-void xf86KbdBell(int percent, DeviceIntPtr pKeyboard, pointer ctrl,
- int unused);
-void xf86KbdLeds(void);
-void xf86UpdateKbdLeds(void);
-void xf86KbdCtrl(DevicePtr pKeyboard, KeybdCtrl *ctrl);
-void xf86InitKBD(Bool init);
-int xf86KbdProc(DeviceIntPtr pKeyboard, int what);
-
-/* xf86Kbd.c */
-
-void xf86KbdGetMapping(KeySymsPtr pKeySyms, CARD8 *pModMap);
-
-/* xf86Lock.c */
-
-#ifdef USE_XF86_SERVERLOCK
-void xf86UnlockServer(void);
-#endif
-
-/* xf86XKB.c */
-
-void xf86InitXkb(void);
-
-#endif /* _NO_XF86_PROTOTYPES */
-
-
-#endif /* _XF86PRIV_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Privstr.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Privstr.h
deleted file mode 100644
index 2f15e14cb..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Privstr.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Privstr.h,v 1.41 2004/01/27 01:31:45 dawes Exp $ */
-
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains definitions of the private XFree86 data structures/types.
- * None of the data structures here should be used by video drivers.
- */
-
-#ifndef _XF86PRIVSTR_H
-#define _XF86PRIVSTR_H
-
-#include "xf86Pci.h"
-#include "xf86str.h"
-
-/* PCI probe flags */
-
-typedef enum {
- PCIProbe1 = 0,
- PCIProbe2,
- PCIForceConfig1,
- PCIForceConfig2,
- PCIForceNone,
- PCIOsConfig
-} PciProbeType;
-
-typedef enum {
- LogNone,
- LogFlush,
- LogSync
-} Log;
-
-typedef enum {
- SKNever,
- SKWhenNeeded,
- SKAlways
-} SpecialKeysInDDX;
-
-/*
- * xf86InfoRec contains global parameters which the video drivers never
- * need to access. Global parameters which the video drivers do need
- * should be individual globals.
- */
-
-typedef struct {
-
- /* keyboard part */
- DeviceIntPtr pKeyboard;
- DeviceProc kbdProc; /* procedure for initializing */
- void (* kbdEvents)(void); /* proc for processing events */
- int consoleFd;
- int kbdFd;
- int vtno;
- int kbdType; /* AT84 / AT101 */
- int kbdRate;
- int kbdDelay;
- int bell_pitch;
- int bell_duration;
- Bool autoRepeat;
- unsigned long leds;
- unsigned long xleds;
- char * vtinit;
- int scanPrefix; /* scancode-state */
- Bool capsLock;
- Bool numLock;
- Bool scrollLock;
- Bool modeSwitchLock;
- Bool composeLock;
- Bool vtSysreq;
- SpecialKeysInDDX ddxSpecialKeys;
- Bool ActionKeyBindingsSet;
-#if defined(SVR4) && defined(i386)
- Bool panix106;
-#endif /* SVR4 && i386 */
-#if defined(__OpenBSD__) || defined(__NetBSD__)
- int wsKbdType;
-#endif
-
- /* mouse part */
- DeviceIntPtr pMouse;
-#ifdef XINPUT
- pointer mouseLocal;
-#endif
-
- /* event handler part */
- int lastEventTime;
- Bool vtRequestsPending;
- Bool inputPending;
- Bool dontVTSwitch;
- Bool dontZap;
- Bool dontZoom;
- Bool notrapSignals; /* don't exit cleanly - die at fault */
- Bool caughtSignal;
-
- /* graphics part */
- Bool sharedMonitor;
- ScreenPtr currentScreen;
-#if defined(CSRG_BASED) || defined(__FreeBSD_kernel__)
- int screenFd; /* fd for memory mapped access to
- * vga card */
- int consType; /* Which console driver? */
-#endif
-
-#ifdef XKB
- /*
- * would like to use an XkbComponentNamesRec here but can't without
- * pulling in a bunch of header files. :-(
- */
- char * xkbkeymap;
- char * xkbkeycodes;
- char * xkbtypes;
- char * xkbcompat;
- char * xkbsymbols;
- char * xkbgeometry;
- Bool xkbcomponents_specified;
- char * xkbrules;
- char * xkbmodel;
- char * xkblayout;
- char * xkbvariant;
- char * xkboptions;
-#endif
-
- /* Other things */
- Bool allowMouseOpenFail;
- Bool vidModeEnabled; /* VidMode extension enabled */
- Bool vidModeAllowNonLocal; /* allow non-local VidMode
- * connections */
- Bool miscModInDevEnabled; /* Allow input devices to be
- * changed */
- Bool miscModInDevAllowNonLocal;
- PciProbeType pciFlags;
- Pix24Flags pixmap24;
- MessageType pix24From;
-#if defined(i386) || defined(__i386__)
- Bool pc98;
-#endif
- Bool pmFlag;
- Log log;
- int estimateSizesAggressively;
- Bool kbdCustomKeycodes;
- Bool disableRandR;
- MessageType randRFrom;
- struct {
- Bool disabled; /* enable/disable deactivating
- * grabs or closing the
- * connection to the grabbing
- * client */
- ClientPtr override; /* client that disabled
- * grab deactivation.
- */
- Bool allowDeactivate;
- Bool allowClosedown;
- ServerGrabInfoRec server;
- } grabInfo;
-} xf86InfoRec, *xf86InfoPtr;
-
-#ifdef DPMSExtension
-/* Private info for DPMS */
-typedef struct {
- CloseScreenProcPtr CloseScreen;
- Bool Enabled;
- int Flags;
-} DPMSRec, *DPMSPtr;
-#endif
-
-#ifdef XF86VIDMODE
-/* Private info for Video Mode Extentsion */
-typedef struct {
- DisplayModePtr First;
- DisplayModePtr Next;
- int Flags;
- CloseScreenProcPtr CloseScreen;
-} VidModeRec, *VidModePtr;
-#endif
-
-/* Information for root window properties. */
-typedef struct _RootWinProp {
- struct _RootWinProp * next;
- char * name;
- Atom type;
- short format;
- long size;
- pointer data;
-} RootWinProp, *RootWinPropPtr;
-
-/* private resource types */
-#define ResNoAvoid ResBios
-
-/* ISC's cc can't handle ~ of UL constants, so explicitly type cast them. */
-#define XLED1 ((unsigned long) 0x00000001)
-#define XLED2 ((unsigned long) 0x00000002)
-#define XLED3 ((unsigned long) 0x00000004)
-#define XLED4 ((unsigned long) 0x00000008)
-#define XCAPS ((unsigned long) 0x20000000)
-#define XNUM ((unsigned long) 0x40000000)
-#define XSCR ((unsigned long) 0x80000000)
-#define XCOMP ((unsigned long) 0x00008000)
-
-/* BSD console driver types (consType) */
-#if defined(CSRG_BASED) || defined(__FreeBSD_kernel__)
-#define PCCONS 0
-#define CODRV011 1
-#define CODRV01X 2
-#define SYSCONS 8
-#define PCVT 16
-#define WSCONS 32
-#endif
-
-#endif /* _XF86PRIVSTR_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86RandR.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86RandR.c
deleted file mode 100644
index 4fb844a0f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86RandR.c
+++ /dev/null
@@ -1,438 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86RandR.c,v 1.25 2005/10/30 17:38:49 twini Exp $ */
-/*
- * $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86RandR.c,v 1.7tsi Exp $
- *
- * Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "mibank.h"
-#include "globals.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86DDC.h"
-#include "mipointer.h"
-#include <randrstr.h>
-
-typedef struct _xf86RandRInfo {
- CreateScreenResourcesProcPtr CreateScreenResources;
- CloseScreenProcPtr CloseScreen;
- int virtualX;
- int virtualY;
- int mmWidth;
- int mmHeight;
- Rotation rotation;
-} XF86RandRInfoRec, *XF86RandRInfoPtr;
-
-static int xf86RandRIndex = -1;
-static int xf86RandRGeneration;
-
-#define XF86RANDRINFO(p) ((XF86RandRInfoPtr) (p)->devPrivates[xf86RandRIndex].ptr)
-
-static int
-xf86RandRModeRefresh (DisplayModePtr mode)
-{
- if (mode->VRefresh)
- return (int) (mode->VRefresh + 0.5);
- else
- return (int) (mode->Clock * 1000.0 / mode->HTotal / mode->VTotal + 0.5);
-}
-
-static Bool
-xf86RandRGetInfo (ScreenPtr pScreen, Rotation *rotations)
-{
- RRScreenSizePtr pSize;
- ScrnInfoPtr scrp = XF86SCRNINFO(pScreen);
- XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
- DisplayModePtr mode;
- int refresh0 = 60;
- xorgRRModeMM RRModeMM;
-
- *rotations = RR_Rotate_0;
-
- for (mode = scrp->modes; ; mode = mode->next)
- {
- int refresh = xf86RandRModeRefresh (mode);
-
- if (mode == scrp->modes)
- refresh0 = refresh;
-
- RRModeMM.mode = mode;
- RRModeMM.virtX = randrp->virtualX;
- RRModeMM.virtY = randrp->virtualY;
- RRModeMM.mmWidth = randrp->mmWidth;
- RRModeMM.mmHeight = randrp->mmHeight;
-
- if(scrp->DriverFunc) {
- (*scrp->DriverFunc)(scrp, RR_GET_MODE_MM, &RRModeMM);
- }
-
- pSize = RRRegisterSize (pScreen,
- mode->HDisplay, mode->VDisplay,
- RRModeMM.mmWidth, RRModeMM.mmHeight);
- if (!pSize)
- return FALSE;
- RRRegisterRate (pScreen, pSize, refresh);
- if (mode == scrp->currentMode &&
- mode->HDisplay == scrp->virtualX && mode->VDisplay == scrp->virtualY)
- RRSetCurrentConfig (pScreen, randrp->rotation, refresh, pSize);
- if (mode->next == scrp->modes)
- break;
- }
- if (scrp->currentMode->HDisplay != randrp->virtualX ||
- scrp->currentMode->VDisplay != randrp->virtualY)
- {
- mode = scrp->modes;
-
- RRModeMM.mode = NULL;
- RRModeMM.virtX = randrp->virtualX;
- RRModeMM.virtY = randrp->virtualY;
- RRModeMM.mmWidth = randrp->mmWidth;
- RRModeMM.mmHeight = randrp->mmHeight;
-
- if(scrp->DriverFunc) {
- (*scrp->DriverFunc)(scrp, RR_GET_MODE_MM, &RRModeMM);
- }
-
- pSize = RRRegisterSize (pScreen,
- randrp->virtualX, randrp->virtualY,
- RRModeMM.mmWidth, RRModeMM.mmHeight);
- if (!pSize)
- return FALSE;
- RRRegisterRate (pScreen, pSize, refresh0);
- if (scrp->virtualX == randrp->virtualX &&
- scrp->virtualY == randrp->virtualY)
- {
- RRSetCurrentConfig (pScreen, randrp->rotation, refresh0, pSize);
- }
- }
-
- /* If there is driver support for randr, let it set our supported rotations */
- if(scrp->DriverFunc) {
- xorgRRRotation RRRotation;
-
- RRRotation.RRRotations = *rotations;
- if (!(*scrp->DriverFunc)(scrp, RR_GET_INFO, &RRRotation))
- return TRUE;
- *rotations = RRRotation.RRRotations;
- }
-
- return TRUE;
-}
-
-static Bool
-xf86RandRSetMode (ScreenPtr pScreen,
- DisplayModePtr mode,
- Bool useVirtual,
- int mmWidth,
- int mmHeight)
-{
- ScrnInfoPtr scrp = XF86SCRNINFO(pScreen);
- XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
- int oldWidth = pScreen->width;
- int oldHeight = pScreen->height;
- int oldmmWidth = pScreen->mmWidth;
- int oldmmHeight = pScreen->mmHeight;
- WindowPtr pRoot = WindowTable[pScreen->myNum];
- Bool ret = TRUE;
-
- if (pRoot)
- (*scrp->EnableDisableFBAccess) (pScreen->myNum, FALSE);
- if (useVirtual)
- {
- scrp->virtualX = randrp->virtualX;
- scrp->virtualY = randrp->virtualY;
- }
- else
- {
- scrp->virtualX = mode->HDisplay;
- scrp->virtualY = mode->VDisplay;
- }
- if(randrp->rotation & (RR_Rotate_90 | RR_Rotate_270))
- {
- /* If the screen is rotated 90 or 270 degrees, swap the sizes. */
- pScreen->width = scrp->virtualY;
- pScreen->height = scrp->virtualX;
- pScreen->mmWidth = mmHeight;
- pScreen->mmHeight = mmWidth;
- }
- else
- {
- pScreen->width = scrp->virtualX;
- pScreen->height = scrp->virtualY;
- pScreen->mmWidth = mmWidth;
- pScreen->mmHeight = mmHeight;
- }
- if (!xf86SwitchMode (pScreen, mode))
- {
- scrp->virtualX = pScreen->width = oldWidth;
- scrp->virtualY = pScreen->height = oldHeight;
- pScreen->mmWidth = oldmmWidth;
- pScreen->mmHeight = oldmmHeight;
- ret = FALSE;
- }
- /*
- * Make sure the layout is correct
- */
- xf86ReconfigureLayout();
-
- /*
- * Make sure the whole screen is visible
- */
- xf86SetViewport (pScreen, pScreen->width, pScreen->height);
- xf86SetViewport (pScreen, 0, 0);
- if (pRoot)
- (*scrp->EnableDisableFBAccess) (pScreen->myNum, TRUE);
- return ret;
-}
-
-static Bool
-xf86RandRSetConfig (ScreenPtr pScreen,
- Rotation rotation,
- int rate,
- RRScreenSizePtr pSize)
-{
- ScrnInfoPtr scrp = XF86SCRNINFO(pScreen);
- XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
- DisplayModePtr mode;
- int px, py;
- Bool useVirtual = FALSE;
- Rotation oldRotation = randrp->rotation;
-
- miPointerPosition (&px, &py);
- for (mode = scrp->modes; ; mode = mode->next)
- {
- if (mode->HDisplay == pSize->width &&
- mode->VDisplay == pSize->height &&
- (rate == 0 || xf86RandRModeRefresh (mode) == rate))
- break;
- if (mode->next == scrp->modes)
- {
- if (pSize->width == randrp->virtualX &&
- pSize->height == randrp->virtualY)
- {
- mode = scrp->modes;
- useVirtual = TRUE;
- break;
- }
- return FALSE;
- }
- }
-
- if (randrp->rotation != rotation) {
-
- /* Have the driver do its thing. */
- if (scrp->DriverFunc) {
- xorgRRRotation RRRotation;
- RRRotation.RRConfig.rotation = rotation;
- RRRotation.RRConfig.rate = rate;
- RRRotation.RRConfig.width = pSize->width;
- RRRotation.RRConfig.height = pSize->height;
-
- /*
- * Currently we need to rely on HW support for rotation.
- */
- if (!(*scrp->DriverFunc)(scrp, RR_SET_CONFIG, &RRRotation))
- return FALSE;
- } else
- return FALSE;
-
- randrp->rotation = rotation;
- }
-
- if (!xf86RandRSetMode (pScreen, mode, useVirtual, pSize->mmWidth, pSize->mmHeight)) {
- if(randrp->rotation != oldRotation) {
- /* Have the driver undo its thing. */
- if (scrp->DriverFunc) {
- xorgRRRotation RRRotation;
- RRRotation.RRConfig.rotation = oldRotation;
- RRRotation.RRConfig.rate = xf86RandRModeRefresh (scrp->currentMode);
- RRRotation.RRConfig.width = pScreen->width;
- RRRotation.RRConfig.height = pScreen->height;
- (*scrp->DriverFunc)(scrp, RR_SET_CONFIG, &RRRotation);
- }
-
- randrp->rotation = oldRotation;
- }
- return FALSE;
- }
- /*
- * Move the cursor back where it belongs; SwitchMode repositions it
- */
- if (pScreen == miPointerCurrentScreen ())
- {
- px = (px >= pScreen->width ? (pScreen->width - 1) : px);
- py = (py >= pScreen->height ? (pScreen->height - 1) : py);
-
- xf86SetViewport(pScreen, px, py);
-
- (*pScreen->SetCursorPosition) (pScreen, px, py, FALSE);
- }
-
- return TRUE;
-}
-
-/*
- * Wait until the screen is initialized before whacking the
- * sizes around; otherwise the screen pixmap will be allocated
- * at the current mode size rather than the maximum size
- */
-static Bool
-xf86RandRCreateScreenResources (ScreenPtr pScreen)
-{
- XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
-#if 0
- ScrnInfoPtr scrp = XF86SCRNINFO(pScreen);
- DisplayModePtr mode;
-#endif
-
- pScreen->CreateScreenResources = randrp->CreateScreenResources;
- if (!(*pScreen->CreateScreenResources) (pScreen))
- return FALSE;
-
-#if 0
- mode = scrp->currentMode;
- if (mode)
- xf86RandRSetMode (pScreen, mode, TRUE);
-#endif
-
- return TRUE;
-}
-
-/*
- * Reset size back to original
- */
-static Bool
-xf86RandRCloseScreen (int index, ScreenPtr pScreen)
-{
- ScrnInfoPtr scrp = XF86SCRNINFO(pScreen);
- XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
-
- scrp->virtualX = pScreen->width = randrp->virtualX;
- scrp->virtualY = pScreen->height = randrp->virtualY;
- scrp->currentMode = scrp->modes;
- pScreen->CloseScreen = randrp->CloseScreen;
- xfree (randrp);
- pScreen->devPrivates[xf86RandRIndex].ptr = 0;
- return (*pScreen->CloseScreen) (index, pScreen);
-}
-
-Rotation
-xf86GetRotation(ScreenPtr pScreen)
-{
- if (xf86RandRIndex == -1)
- return RR_Rotate_0;
-
- return XF86RANDRINFO(pScreen)->rotation;
-}
-
-/* Function to change RandR's idea of the virtual screen size */
-Bool
-xf86RandRSetNewVirtualAndDimensions(ScreenPtr pScreen,
- int newvirtX, int newvirtY, int newmmWidth, int newmmHeight,
- Bool resetMode)
-{
- XF86RandRInfoPtr randrp;
-
- if (xf86RandRIndex == -1)
- return FALSE;
-
- randrp = XF86RANDRINFO(pScreen);
- if (randrp == NULL)
- return FALSE;
-
- if (newvirtX > 0)
- randrp->virtualX = newvirtX;
-
- if (newvirtY > 0)
- randrp->virtualY = newvirtY;
-
- if (newmmWidth > 0)
- randrp->mmWidth = newmmWidth;
-
- if (newmmHeight > 0)
- randrp->mmHeight = newmmHeight;
-
- /* This is only for during server start */
- if (resetMode) {
- return (xf86RandRSetMode(pScreen,
- XF86SCRNINFO(pScreen)->currentMode,
- TRUE,
- pScreen->mmWidth, pScreen->mmHeight));
- }
-
- return TRUE;
-}
-
-Bool
-xf86RandRInit (ScreenPtr pScreen)
-{
- rrScrPrivPtr rp;
- XF86RandRInfoPtr randrp;
- ScrnInfoPtr scrp = XF86SCRNINFO(pScreen);
-
-#ifdef PANORAMIX
- /* XXX disable RandR when using Xinerama */
- if (!noPanoramiXExtension)
- return TRUE;
-#endif
- if (xf86RandRGeneration != serverGeneration)
- {
- xf86RandRIndex = AllocateScreenPrivateIndex();
- xf86RandRGeneration = serverGeneration;
- }
-
- randrp = xalloc (sizeof (XF86RandRInfoRec));
- if (!randrp)
- return FALSE;
-
- if (!RRScreenInit (pScreen))
- {
- xfree (randrp);
- return FALSE;
- }
- rp = rrGetScrPriv(pScreen);
- rp->rrGetInfo = xf86RandRGetInfo;
- rp->rrSetConfig = xf86RandRSetConfig;
-
- randrp->virtualX = scrp->virtualX;
- randrp->virtualY = scrp->virtualY;
- randrp->mmWidth = pScreen->mmWidth;
- randrp->mmHeight = pScreen->mmHeight;
-
- randrp->CreateScreenResources = pScreen->CreateScreenResources;
- pScreen->CreateScreenResources = xf86RandRCreateScreenResources;
-
- randrp->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = xf86RandRCloseScreen;
-
- randrp->rotation = RR_Rotate_0;
-
- pScreen->devPrivates[xf86RandRIndex].ptr = randrp;
- return TRUE;
-}
-
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Resources.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Resources.h
deleted file mode 100644
index ce2c62bb3..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Resources.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Resources.h,v 1.15 2003/08/24 17:36:55 dawes Exp $ */
-
-/*
- * Copyright (c) 1999-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifndef _XF86_RESOURCES_H
-
-#define _XF86_RESOURCES_H
-
-#include "xf86str.h"
-
-#define _END {ResEnd,0,0}
-
-#define _VGA_EXCLUSIVE \
- {ResExcMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResExcMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResExcMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
- {ResExcIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
- {ResExcIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
-
-#define _VGA_SHARED \
- {ResShrMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResShrMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResShrMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
- {ResShrIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
- {ResShrIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
-
-#define _VGA_SHARED_MEM \
- {ResShrMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResShrMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResShrMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF}
-
-#define _VGA_SHARED_IO \
- {ResShrIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
- {ResShrIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
-
-/*
- * Exclusive unused VGA: resources unneeded but cannot be disabled.
- * Like old Millennium.
- */
-#define _VGA_EXCLUSIVE_UNUSED \
- {ResExcUusdMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResExcUusdMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResExcUusdMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
- {ResExcUusdIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
- {ResExcUusdIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
-
-/*
- * Shared unused VGA: resources unneeded but cannot be disabled
- * independently. This is used to determine if a device needs RAC.
- */
-#define _VGA_SHARED_UNUSED \
- {ResShrUusdMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResShrUusdMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResShrUusdMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
- {ResShrUusdIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
- {ResShrUusdIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
-
-/*
- * Sparse versions of the above for those adapters that respond to all ISA
- * aliases of VGA ports.
- */
-#define _VGA_EXCLUSIVE_SPARSE \
- {ResExcMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResExcMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResExcMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
- {ResExcIoSparse | ResBios | ResBus, 0x03B0, 0x03F8},\
- {ResExcIoSparse | ResBios | ResBus, 0x03B8, 0x03FC},\
- {ResExcIoSparse | ResBios | ResBus, 0x03C0, 0x03E0}
-
-#define _VGA_SHARED_SPARSE \
- {ResShrMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResShrMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResShrMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
- {ResShrIoSparse | ResBios | ResBus, 0x03B0, 0x03F8},\
- {ResShrIoSparse | ResBios | ResBus, 0x03B8, 0x03FC},\
- {ResShrIoSparse | ResBios | ResBus, 0x03C0, 0x03E0}
-
-#define _8514_EXCLUSIVE \
- {ResExcIoSparse | ResBios | ResBus, 0x02E8, 0x03F8}
-
-#define _8514_SHARED \
- {ResShrIoSparse | ResBios | ResBus, 0x02E8, 0x03F8}
-
-/* Predefined resources */
-extern resRange resVgaExclusive[];
-extern resRange resVgaShared[];
-extern resRange resVgaIoShared[];
-extern resRange resVgaMemShared[];
-extern resRange resVgaUnusedExclusive[];
-extern resRange resVgaUnusedShared[];
-extern resRange resVgaSparseExclusive[];
-extern resRange resVgaSparseShared[];
-extern resRange res8514Exclusive[];
-extern resRange res8514Shared[];
-
-/* Less misleading aliases for xf86SetOperatingState() */
-#define resVgaMem resVgaMemShared
-#define resVgaIo resVgaIoShared
-#define resVga resVgaShared
-
-/* Old style names */
-#define RES_EXCLUSIVE_VGA resVgaExclusive
-#define RES_SHARED_VGA resVgaShared
-#define RES_EXCLUSIVE_8514 res8514Exclusive
-#define RES_SHARED_8514 res8514Shared
-
-#define _PCI_AVOID_PC_STYLE \
- {ResExcIoSparse | ResBus, 0x0100, 0x0300},\
- {ResExcIoSparse | ResBus, 0x0200, 0x0200},\
- {ResExcMemBlock | ResBus, 0xA0000,0xFFFFF}
-
-extern resRange PciAvoid[];
-
-#define RES_UNDEFINED NULL
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Versions.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Versions.c
deleted file mode 100644
index 6de7d53c2..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Versions.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Versions.c,v 1.2 2003/08/24 20:01:19 dawes Exp $ */
-/*
- * Copyright (c) 2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86OSmouse.h"
-#include "xf86OSKbd.h"
-
-static CARD32 registeredVersions[NUM_BUILTIN_IFS];
-
-CARD32
-xf86GetBuiltinInterfaceVersion(BuiltinInterface iface, int flags)
-{
- if (iface < 0 || iface >= NUM_BUILTIN_IFS) {
- xf86Msg(X_ERROR, "xf86GetBuiltinInterfaceVersion: Unexpected interface"
- "query: %d\n", iface);
- return 0;
- }
-
- if (registeredVersions[iface])
- return registeredVersions[iface];
-
- /* Most built-in interfaces are handled this way. */
- switch (iface) {
- case BUILTIN_IF_OSMOUSE:
- return OS_MOUSE_VERSION_CURRENT;
- case BUILTIN_IF_OSKBD:
- return OS_KBD_VERSION_CURRENT;
- default:
- xf86Msg(X_ERROR, "xf86GetBuiltinInterfaceVersion: internal error: "
- "interface %d not handled\n", iface);
- return 0;
- }
-}
-
-Bool
-xf86RegisterBuiltinInterfaceVersion(BuiltinInterface iface, CARD32 version,
- int flags)
-{
- if (iface < 0 || iface >= NUM_BUILTIN_IFS) {
- xf86Msg(X_ERROR, "xf86RegisterBuiltinInterfaceVersion: "
- "unexpected interface number: %d\n", iface);
- return FALSE;
- }
- if (version == 0) {
- xf86Msg(X_ERROR, "xf86RegisterBuiltinInterfaceVersion: "
- "versions must be greater than zero\n");
- return FALSE;
- }
- registeredVersions[iface] = version;
- return TRUE;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86VidMode.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86VidMode.c
deleted file mode 100644
index 81e4b969e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86VidMode.c
+++ /dev/null
@@ -1,722 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86VidMode.c,v 1.17 2003/08/24 17:36:55 dawes Exp $ */
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains the VidMode functions required by the extension.
- * These have been added to avoid the need for the higher level extension
- * code to access the private XFree86 data structures directly. Wherever
- * possible this code uses the functions in xf86Mode.c to do the work,
- * so that two version of code that do similar things don't have to be
- * maintained.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-
-#ifdef XF86VIDMODE
-#include "vidmodeproc.h"
-#include "xf86cmap.h"
-
-static int VidModeGeneration = 0;
-static int VidModeIndex = -1;
-static int VidModeCount = 0;
-static Bool VidModeClose(int i, ScreenPtr pScreen);
-
-#define VMPTR(p) ((VidModePtr)(p)->devPrivates[VidModeIndex].ptr)
-
-#endif
-
-#ifdef DEBUG
-# define DEBUG_P(x) ErrorF(x"\n");
-#else
-# define DEBUG_P(x) /**/
-#endif
-
-Bool
-VidModeExtensionInit(ScreenPtr pScreen)
-{
-#ifdef XF86VIDMODE
- VidModePtr pVidMode;
-
- DEBUG_P("VidModeExtensionInit");
-
- if (!xf86GetVidModeEnabled()) {
- DEBUG_P("!xf86GetVidModeEnabled()");
- return FALSE;
- }
-
- if (serverGeneration != VidModeGeneration) {
- if ((VidModeIndex = AllocateScreenPrivateIndex()) < 0) {
- DEBUG_P("AllocateScreenPrivateIndex() failed");
- return FALSE;
- }
- VidModeGeneration = serverGeneration;
- }
-
- if (!(pScreen->devPrivates[VidModeIndex].ptr = xcalloc(sizeof(VidModeRec), 1))) {
- DEBUG_P("xcalloc failed");
- return FALSE;
- }
-
- pVidMode = VMPTR(pScreen);
- pVidMode->Flags = 0;
- pVidMode->Next = NULL;
- pVidMode->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = VidModeClose;
- VidModeCount++;
- return TRUE;
-#else
- DEBUG_P("no vidmode extension");
- return FALSE;
-#endif
-}
-
-
-#ifdef XF86VIDMODE
-
-static Bool
-VidModeClose(int i, ScreenPtr pScreen)
-{
- VidModePtr pVidMode = VMPTR(pScreen);
-
- DEBUG_P("VidModeClose");
-
- /* This shouldn't happen */
- if (!pVidMode)
- return FALSE;
-
- pScreen->CloseScreen = pVidMode->CloseScreen;
-
- if (--VidModeCount == 0) {
- if (pScreen->devPrivates[VidModeIndex].ptr)
- xfree(pScreen->devPrivates[VidModeIndex].ptr);
- pScreen->devPrivates[VidModeIndex].ptr = NULL;
- VidModeIndex = -1;
- }
- return pScreen->CloseScreen(i, pScreen);
-}
-
-Bool
-VidModeAvailable(int scrnIndex)
-{
- ScrnInfoPtr pScrn;
- VidModePtr pVidMode;
-
- DEBUG_P("VidModeAvailable");
-
- if (VidModeIndex < 0) {
- DEBUG_P("VidModeIndex < 0");
- return FALSE;
- }
-
- pScrn = xf86Screens[scrnIndex];
- if (pScrn == NULL) {
- DEBUG_P("pScrn == NULL");
- return FALSE;
- }
-
- pVidMode = VMPTR(pScrn->pScreen);
- if (pVidMode)
- return TRUE;
- else {
- DEBUG_P("pVidMode == NULL");
- return FALSE;
- }
-}
-
-Bool
-VidModeGetCurrentModeline(int scrnIndex, pointer *mode, int *dotClock)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeGetCurrentModeline");
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- *mode = (pointer)(pScrn->currentMode);
- *dotClock = pScrn->currentMode->Clock;
-
- return TRUE;
-}
-
-int
-VidModeGetDotClock(int scrnIndex, int Clock)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeGetDotClock");
-
- if (!VidModeAvailable(scrnIndex))
- return 0;
-
- pScrn = xf86Screens[scrnIndex];
- if ((pScrn->progClock) || (Clock > MAXCLOCKS))
- return Clock;
- else
- return pScrn->clock[Clock];
-}
-
-int
-VidModeGetNumOfClocks(int scrnIndex, Bool *progClock)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeGetNumOfClocks");
-
- if (!VidModeAvailable(scrnIndex))
- return 0;
-
- pScrn = xf86Screens[scrnIndex];
- if (pScrn->progClock){
- *progClock = TRUE;
- return 0;
- } else {
- *progClock = FALSE;
- return pScrn->numClocks;
- }
-}
-
-Bool
-VidModeGetClocks(int scrnIndex, int *Clocks)
-{
- ScrnInfoPtr pScrn;
- int i;
-
- DEBUG_P("VidModeGetClocks");
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
-
- if (pScrn->progClock)
- return FALSE;
-
- for (i = 0; i < pScrn->numClocks; i++)
- *Clocks++ = pScrn->clock[i];
-
- return TRUE;
-}
-
-
-Bool
-VidModeGetFirstModeline(int scrnIndex, pointer *mode, int *dotClock)
-{
- ScrnInfoPtr pScrn;
- VidModePtr pVidMode;
-
- DEBUG_P("VidModeGetFirstModeline");
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- pVidMode = VMPTR(pScrn->pScreen);
- pVidMode->First = pScrn->modes;
- pVidMode->Next = pVidMode->First->next;
-
- if (pVidMode->First->status == MODE_OK) {
- *mode = (pointer)(pVidMode->First);
- *dotClock = VidModeGetDotClock(scrnIndex, pVidMode->First->Clock);
- return TRUE;
- }
-
- return VidModeGetNextModeline(scrnIndex, mode, dotClock);
-}
-
-Bool
-VidModeGetNextModeline(int scrnIndex, pointer *mode, int *dotClock)
-{
- ScrnInfoPtr pScrn;
- VidModePtr pVidMode;
- DisplayModePtr p;
-
- DEBUG_P("VidModeGetNextModeline");
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- pVidMode = VMPTR(pScrn->pScreen);
-
- for (p = pVidMode->Next; p != NULL && p != pVidMode->First; p = p->next) {
- if (p->status == MODE_OK) {
- pVidMode->Next = p->next;
- *mode = (pointer)p;
- *dotClock = VidModeGetDotClock(scrnIndex, p->Clock);
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-Bool
-VidModeDeleteModeline(int scrnIndex, pointer mode)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeDeleteModeline");
-
- if ((mode == NULL) || (!VidModeAvailable(scrnIndex)))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- xf86DeleteMode(&(pScrn->modes), (DisplayModePtr)mode);
- return TRUE;
-}
-
-Bool
-VidModeZoomViewport(int scrnIndex, int zoom)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeZoomViewPort");
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- xf86ZoomViewport(pScrn->pScreen, zoom);
- return TRUE;
-}
-
-Bool
-VidModeSetViewPort(int scrnIndex, int x, int y)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeSetViewPort");
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- pScrn->frameX0 = min( max(x, 0),
- pScrn->virtualX - pScrn->currentMode->HDisplay );
- pScrn->frameX1 = pScrn->frameX0 + pScrn->currentMode->HDisplay - 1;
- pScrn->frameY0 = min( max(y, 0),
- pScrn->virtualY - pScrn->currentMode->VDisplay );
- pScrn->frameY1 = pScrn->frameY0 + pScrn->currentMode->VDisplay - 1;
- if (pScrn->AdjustFrame != NULL)
- (pScrn->AdjustFrame)(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
-
- return TRUE;
-}
-
-Bool
-VidModeGetViewPort(int scrnIndex, int *x, int *y)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeGetViewPort");
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- *x = pScrn->frameX0;
- *y = pScrn->frameY0;
- return TRUE;
-}
-
-Bool
-VidModeSwitchMode(int scrnIndex, pointer mode)
-{
- ScrnInfoPtr pScrn;
- DisplayModePtr pTmpMode;
- Bool retval;
-
- DEBUG_P("VidModeSwitchMode");
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- /* save in case we fail */
- pTmpMode = pScrn->currentMode;
- /* Force a mode switch */
- pScrn->currentMode = NULL;
- retval = xf86SwitchMode(pScrn->pScreen, mode);
- /* we failed: restore it */
- if (retval == FALSE)
- pScrn->currentMode = pTmpMode;
- return retval;
-}
-
-Bool
-VidModeLockZoom(int scrnIndex, Bool lock)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeLockZoom");
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
-
- if (xf86Info.dontZoom)
- return FALSE;
-
- xf86LockZoom(pScrn->pScreen, lock);
- return TRUE;
-}
-
-Bool
-VidModeGetMonitor(int scrnIndex, pointer *monitor)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeGetMonitor");
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- *monitor = (pointer)(pScrn->monitor);
-
- return TRUE;
-}
-
-ModeStatus
-VidModeCheckModeForMonitor(int scrnIndex, pointer mode)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeCheckModeForMonitor");
-
- if ((mode == NULL) || (!VidModeAvailable(scrnIndex)))
- return MODE_ERROR;
-
- pScrn = xf86Screens[scrnIndex];
-
- return xf86CheckModeForMonitor((DisplayModePtr)mode, pScrn->monitor);
-}
-
-ModeStatus
-VidModeCheckModeForDriver(int scrnIndex, pointer mode)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeCheckModeForDriver");
-
- if ((mode == NULL) || (!VidModeAvailable(scrnIndex)))
- return MODE_ERROR;
-
- pScrn = xf86Screens[scrnIndex];
-
- return xf86CheckModeForDriver(pScrn, (DisplayModePtr)mode, 0);
-}
-
-void
-VidModeSetCrtcForMode(int scrnIndex, pointer mode)
-{
- ScrnInfoPtr pScrn;
- DisplayModePtr ScreenModes;
-
- DEBUG_P("VidModeSetCrtcForMode");
-
- if ((mode == NULL) || (!VidModeAvailable(scrnIndex)))
- return;
-
- /* Ugly hack so that the xf86Mode.c function can be used without change */
- pScrn = xf86Screens[scrnIndex];
- ScreenModes = pScrn->modes;
- pScrn->modes = (DisplayModePtr)mode;
-
- xf86SetCrtcForModes(pScrn, pScrn->adjustFlags);
- pScrn->modes = ScreenModes;
- return;
-}
-
-Bool
-VidModeAddModeline(int scrnIndex, pointer mode)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeAddModeline");
-
- if ((mode == NULL) || (!VidModeAvailable(scrnIndex)))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
-
- ((DisplayModePtr)mode)->name = strdup(""); /* freed by deletemode */
- ((DisplayModePtr)mode)->status = MODE_OK;
- ((DisplayModePtr)mode)->next = pScrn->modes->next;
- ((DisplayModePtr)mode)->prev = pScrn->modes;
- pScrn->modes->next = (DisplayModePtr)mode;
- if( ((DisplayModePtr)mode)->next != NULL )
- ((DisplayModePtr)mode)->next->prev = (DisplayModePtr)mode;
-
- return TRUE;
-}
-
-int
-VidModeGetNumOfModes(int scrnIndex)
-{
- pointer mode = NULL;
- int dotClock= 0, nummodes = 0;
-
- DEBUG_P("VidModeGetNumOfModes");
-
- if (!VidModeGetFirstModeline(scrnIndex, &mode, &dotClock))
- return nummodes;
-
- do {
- nummodes++;
- if (!VidModeGetNextModeline(scrnIndex, &mode, &dotClock))
- return nummodes;
- } while (TRUE);
-}
-
-Bool
-VidModeSetGamma(int scrnIndex, float red, float green, float blue)
-{
- ScrnInfoPtr pScrn;
- Gamma gamma;
-
- DEBUG_P("VidModeSetGamma");
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- gamma.red = red;
- gamma.green = green;
- gamma.blue = blue;
- if (xf86ChangeGamma(pScrn->pScreen, gamma) != Success)
- return FALSE;
- else
- return TRUE;
-}
-
-Bool
-VidModeGetGamma(int scrnIndex, float *red, float *green, float *blue)
-{
- ScrnInfoPtr pScrn;
-
- DEBUG_P("VidModeGetGamma");
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- *red = pScrn->gamma.red;
- *green = pScrn->gamma.green;
- *blue = pScrn->gamma.blue;
- return TRUE;
-}
-
-Bool
-VidModeSetGammaRamp(int scrnIndex, int size, CARD16 *r, CARD16 *g, CARD16 *b)
-{
- ScrnInfoPtr pScrn;
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- xf86ChangeGammaRamp(pScrn->pScreen, size, r, g, b);
- return TRUE;
-}
-
-Bool
-VidModeGetGammaRamp(int scrnIndex, int size, CARD16 *r, CARD16 *g, CARD16 *b)
-{
- ScrnInfoPtr pScrn;
-
- if (!VidModeAvailable(scrnIndex))
- return FALSE;
-
- pScrn = xf86Screens[scrnIndex];
- xf86GetGammaRamp(pScrn->pScreen, size, r, g, b);
- return TRUE;
-}
-
-int
-VidModeGetGammaRampSize(int scrnIndex)
-{
- if (!VidModeAvailable(scrnIndex))
- return 0;
-
- return xf86GetGammaRampSize(xf86Screens[scrnIndex]->pScreen);
-}
-
-pointer
-VidModeCreateMode(void)
-{
- DisplayModePtr mode;
-
- mode = xalloc(sizeof(DisplayModeRec));
- if (mode != NULL) {
- mode->name = "";
- mode->VScan = 1; /* divides refresh rate. default = 1 */
- mode->Private = NULL;
- mode->next = mode;
- mode->prev = mode;
- }
- return mode;
-}
-
-void
-VidModeCopyMode(pointer modefrom, pointer modeto)
-{
- memcpy(modeto, modefrom, sizeof(DisplayModeRec));
-}
-
-
-int
-VidModeGetModeValue(pointer mode, int valtyp)
-{
- int ret = 0;
-
- switch (valtyp) {
- case VIDMODE_H_DISPLAY:
- ret = ((DisplayModePtr) mode)->HDisplay;
- break;
- case VIDMODE_H_SYNCSTART:
- ret = ((DisplayModePtr)mode)->HSyncStart;
- break;
- case VIDMODE_H_SYNCEND:
- ret = ((DisplayModePtr)mode)->HSyncEnd;
- break;
- case VIDMODE_H_TOTAL:
- ret = ((DisplayModePtr)mode)->HTotal;
- break;
- case VIDMODE_H_SKEW:
- ret = ((DisplayModePtr)mode)->HSkew;
- break;
- case VIDMODE_V_DISPLAY:
- ret = ((DisplayModePtr)mode)->VDisplay;
- break;
- case VIDMODE_V_SYNCSTART:
- ret = ((DisplayModePtr)mode)->VSyncStart;
- break;
- case VIDMODE_V_SYNCEND:
- ret = ((DisplayModePtr)mode)->VSyncEnd;
- break;
- case VIDMODE_V_TOTAL:
- ret = ((DisplayModePtr)mode)->VTotal;
- break;
- case VIDMODE_FLAGS:
- ret = ((DisplayModePtr)mode)->Flags;
- break;
- case VIDMODE_CLOCK:
- ret = ((DisplayModePtr)mode)->Clock;
- break;
- }
- return ret;
-}
-
-void
-VidModeSetModeValue(pointer mode, int valtyp, int val)
-{
- switch (valtyp) {
- case VIDMODE_H_DISPLAY:
- ((DisplayModePtr)mode)->HDisplay = val;
- break;
- case VIDMODE_H_SYNCSTART:
- ((DisplayModePtr)mode)->HSyncStart = val;
- break;
- case VIDMODE_H_SYNCEND:
- ((DisplayModePtr)mode)->HSyncEnd = val;
- break;
- case VIDMODE_H_TOTAL:
- ((DisplayModePtr)mode)->HTotal = val;
- break;
- case VIDMODE_H_SKEW:
- ((DisplayModePtr)mode)->HSkew = val;
- break;
- case VIDMODE_V_DISPLAY:
- ((DisplayModePtr)mode)->VDisplay = val;
- break;
- case VIDMODE_V_SYNCSTART:
- ((DisplayModePtr)mode)->VSyncStart = val;
- break;
- case VIDMODE_V_SYNCEND:
- ((DisplayModePtr)mode)->VSyncEnd = val;
- break;
- case VIDMODE_V_TOTAL:
- ((DisplayModePtr)mode)->VTotal = val;
- break;
- case VIDMODE_FLAGS:
- ((DisplayModePtr)mode)->Flags = val;
- break;
- case VIDMODE_CLOCK:
- ((DisplayModePtr)mode)->Clock = val;
- break;
- }
- return;
-}
-
-vidMonitorValue
-VidModeGetMonitorValue(pointer monitor, int valtyp, int indx)
-{
- vidMonitorValue ret;
-
- switch (valtyp) {
- case VIDMODE_MON_VENDOR:
- ret.ptr = (((MonPtr)monitor)->vendor);
- break;
- case VIDMODE_MON_MODEL:
- ret.ptr = (((MonPtr)monitor)->model);
- break;
- case VIDMODE_MON_NHSYNC:
- ret.i = ((MonPtr)monitor)->nHsync;
- break;
- case VIDMODE_MON_NVREFRESH:
- ret.i = ((MonPtr)monitor)->nVrefresh;
- break;
- case VIDMODE_MON_HSYNC_LO:
- ret.f = (100.0 * ((MonPtr)monitor)->hsync[indx].lo);
- break;
- case VIDMODE_MON_HSYNC_HI:
- ret.f = (100.0 * ((MonPtr)monitor)->hsync[indx].hi);
- break;
- case VIDMODE_MON_VREFRESH_LO:
- ret.f = (100.0 * ((MonPtr)monitor)->vrefresh[indx].lo);
- break;
- case VIDMODE_MON_VREFRESH_HI:
- ret.f = (100.0 * ((MonPtr)monitor)->vrefresh[indx].hi);
- break;
- }
- return ret;
-}
-
-
-#endif /* XF86VIDMODE */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86XKB.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86XKB.c
deleted file mode 100644
index 68be17c3a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86XKB.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/* $XConsortium: xf86XKB.c /main/4 1996/02/04 09:28:04 kaleb $ */
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-/*
- * Copyright (c) 1994-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86XKB.c,v 3.12 2003/08/24 17:36:55 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#define NEED_EVENTS 1
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include <X11/keysym.h>
-#include "inputstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include <X11/extensions/XI.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#define XF86_OS_PRIVS
-#include "xf86_OSlib.h"
-
-#include <X11/extensions/XKBsrv.h>
-
-void
-xf86InitXkb(void)
-{
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Xinput.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Xinput.c
deleted file mode 100644
index cc9e76361..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Xinput.c
+++ /dev/null
@@ -1,1513 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Xinput.c,v 3.70 2003/11/03 05:11:02 tsi Exp $ */
-/*
- * Copyright 1995-1999 by Frederic Lepied, France. <Lepied@XFree86.org>
- *
- * 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, and that the name of Frederic Lepied not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Frederic Lepied makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * FREDERIC LEPIED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL FREDERIC LEPIED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/*
- * Copyright (c) 2000-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-/* $XConsortium: xf86Xinput.c /main/14 1996/10/27 11:05:25 kaleb $ */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86Xinput.c,v 1.7 2005/10/21 19:06:13 ajax Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/Xfuncproto.h>
-#include <X11/Xmd.h>
-#ifdef XINPUT
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#endif
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Xinput.h"
-#ifdef XINPUT
-#include "XIstubs.h"
-#endif
-#include "mipointer.h"
-#include "xf86InPriv.h"
-
-#ifdef DPMSExtension
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
-#include "dpmsproc.h"
-#endif
-
-#ifdef XFreeXDGA
-#include "dgaproc.h"
-#endif
-
-#include "exevents.h" /* AddInputDevice */
-#include "exglobals.h"
-
-#define EXTENSION_PROC_ARGS void *
-#include "extnsionst.h"
-#include "extinit.h" /* LookupDeviceIntRec */
-
-#include "windowstr.h" /* screenIsSaved */
-
-#include <stdarg.h>
-
-#include "osdep.h" /* EnabledDevices */
-#include <X11/Xpoll.h>
-#include "xf86_OSproc.h" /* sigio stuff */
-
-/******************************************************************************
- * debugging macro
- *****************************************************************************/
-#ifdef DBG
-#undef DBG
-#endif
-#ifdef DEBUG
-#undef DEBUG
-#endif
-
-#define DEBUG 0
-
-#if DEBUG
-static int debug_level = 0;
-
-#define DBG(lvl, f) {if ((lvl) <= debug_level) f;}
-#else
-#define DBG(lvl, f)
-#endif
-
-/******************************************************************************
- * macros
- *****************************************************************************/
-#define ENQUEUE(e) xf86eqEnqueue((e))
-
-/***********************************************************************
- *
- * xf86AlwaysCoreControl --
- *
- * Control proc for the integer feedback that controls the always
- * core feature.
- *
- ***********************************************************************
- */
-static void
-xf86AlwaysCoreControl(DeviceIntPtr device,
- IntegerCtrl *control)
-{
-}
-
-/***********************************************************************
- *
- * Core devices functions --
- *
- * Test if device is the core device by checking the
- * value of always core feedback and the inputInfo struct.
- *
- ***********************************************************************
- */
-int
-xf86IsCorePointer(DeviceIntPtr device)
-{
- return(device == inputInfo.pointer);
-}
-
-static int
-xf86ShareCorePointer(DeviceIntPtr device)
-{
- LocalDevicePtr local = (LocalDevicePtr) device->public.devicePrivate;
-
- return((local->always_core_feedback &&
- local->always_core_feedback->ctrl.integer_displayed));
-}
-
-static Bool
-xf86SendDragEvents(DeviceIntPtr device)
-{
- LocalDevicePtr local = (LocalDevicePtr) device->public.devicePrivate;
-
- if (inputInfo.pointer->button->buttonsDown > 0)
- return (local->flags & XI86_SEND_DRAG_EVENTS);
- else
- return (TRUE);
-}
-
-int
-xf86IsCoreKeyboard(DeviceIntPtr device)
-{
- LocalDevicePtr local = (LocalDevicePtr) device->public.devicePrivate;
-
- return((local->flags & XI86_ALWAYS_CORE) ||
- (device == inputInfo.keyboard));
-}
-
-void
-xf86XInputSetSendCoreEvents(LocalDevicePtr local, Bool always)
-{
- if (always) {
- local->flags |= XI86_ALWAYS_CORE;
- } else {
- local->flags &= ~XI86_ALWAYS_CORE;
- }
-}
-
-static int xf86CoreButtonState;
-
-/***********************************************************************
- *
- * xf86CheckButton --
- *
- * Test if the core pointer button state is coherent with
- * the button event to send.
- *
- ***********************************************************************
- */
-Bool
-xf86CheckButton(int button,
- int down)
-{
- int check;
- int bit = (1 << (button - 1));
-
- check = xf86CoreButtonState & bit;
-
- DBG(5, ErrorF("xf86CheckButton "
- "button=%d down=%d state=%d check=%d returns ",
- button, down, xf86CoreButtonState, check));
- if ((check && down) || (!check && !down)) {
- DBG(5, ErrorF("FALSE\n"));
- return FALSE;
- }
- xf86CoreButtonState ^= bit;
-
- DBG(5, ErrorF("TRUE\n"));
- return TRUE;
-}
-
-/***********************************************************************
- *
- * xf86ProcessCommonOptions --
- *
- * Process global options.
- *
- ***********************************************************************
- */
-void
-xf86ProcessCommonOptions(LocalDevicePtr local,
- pointer list)
-{
- if (xf86SetBoolOption(list, "AlwaysCore", 0) ||
- xf86SetBoolOption(list, "SendCoreEvents", 0)) {
- local->flags |= XI86_ALWAYS_CORE;
- xf86Msg(X_CONFIG, "%s: always reports core events\n", local->name);
- }
-
- if (xf86SetBoolOption(list, "CorePointer", 0)) {
- local->flags |= XI86_CORE_POINTER;
- xf86Msg(X_CONFIG, "%s: Core Pointer\n", local->name);
- }
-
- if (xf86SetBoolOption(list, "CoreKeyboard", 0)) {
- local->flags |= XI86_CORE_KEYBOARD;
- xf86Msg(X_CONFIG, "%s: Core Keyboard\n", local->name);
- }
-
- if (xf86SetBoolOption(list, "SendDragEvents", 1)) {
- local->flags |= XI86_SEND_DRAG_EVENTS;
- } else {
- xf86Msg(X_CONFIG, "%s: doesn't report drag events\n", local->name);
- }
-
- local->history_size = xf86SetIntOption(list, "HistorySize", 0);
-
- if (local->history_size > 0) {
- xf86Msg(X_CONFIG, "%s: has a history of %d motions\n", local->name,
- local->history_size);
- }
-}
-
-/***********************************************************************
- *
- * xf86XinputFinalizeInit --
- *
- * Create and initialize an integer feedback to control the always
- * core feature.
- *
- ***********************************************************************
- */
-void
-xf86XinputFinalizeInit(DeviceIntPtr dev)
-{
- LocalDevicePtr local = (LocalDevicePtr)dev->public.devicePrivate;
-
- local->dxremaind = 0.0;
- local->dyremaind = 0.0;
-
- if (InitIntegerFeedbackClassDeviceStruct(dev, xf86AlwaysCoreControl) == FALSE) {
- ErrorF("Unable to init integer feedback for always core feature\n");
- } else {
- local->always_core_feedback = dev->intfeed;
- dev->intfeed->ctrl.integer_displayed = (local->flags & XI86_ALWAYS_CORE) ? 1 : 0;
- }
-}
-
-/***********************************************************************
- *
- * xf86ActivateDevice --
- *
- * Initialize an input device.
- *
- ***********************************************************************
- */
-void
-xf86ActivateDevice(LocalDevicePtr local)
-{
- DeviceIntPtr dev;
-
- if (local->flags & XI86_CONFIGURED) {
- int open_on_init;
-
- open_on_init = local->flags &
- (XI86_OPEN_ON_INIT |
- XI86_ALWAYS_CORE | XI86_CORE_POINTER | XI86_CORE_KEYBOARD);
-
- dev = AddInputDevice(local->device_control,
- open_on_init);
- if (dev == NULL)
- FatalError("Too many input devices");
-
- local->atom = MakeAtom(local->type_name,
- strlen(local->type_name),
- TRUE);
- AssignTypeAndName (dev, local->atom, local->name);
- dev->public.devicePrivate = (pointer) local;
- local->dev = dev;
-
- xf86XinputFinalizeInit(dev);
-
- /*
- * XXX Can a single device instance be both core keyboard and
- * core pointer? If so, this should be changed.
- */
- if (local->flags & XI86_CORE_POINTER)
- RegisterPointerDevice(dev);
- else if (local->flags & XI86_CORE_KEYBOARD)
- RegisterKeyboardDevice(dev);
-#ifdef XINPUT
- else
- RegisterOtherDevice(dev);
-#endif
-
- if (serverGeneration == 1)
- xf86Msg(X_INFO, "XINPUT: Adding extended input device \"%s\" (type: %s)\n",
- local->name, local->type_name);
- }
-}
-
-
-#ifdef XINPUT
-/***********************************************************************
- *
- * Caller: ProcXOpenDevice
- *
- * This is the implementation-dependent routine to open an input device.
- * Some implementations open all input devices when the server is first
- * initialized, and never close them. Other implementations open only
- * the X pointer and keyboard devices during server initialization,
- * and only open other input devices when some client makes an
- * XOpenDevice request. This entry point is for the latter type of
- * implementation.
- *
- * If the physical device is not already open, do it here. In this case,
- * you need to keep track of the fact that one or more clients has the
- * device open, and physically close it when the last client that has
- * it open does an XCloseDevice.
- *
- * The default implementation is to do nothing (assume all input devices
- * are opened during X server initialization and kept open).
- *
- ***********************************************************************
- */
-
-void
-OpenInputDevice(DeviceIntPtr dev,
- ClientPtr client,
- int *status)
-{
- if (!dev->inited) {
- *status = BadDevice;
- } else {
- if (!dev->public.on) {
- if (!EnableDevice(dev)) {
- *status = BadDevice;
- } else {
- /* to prevent ProcXOpenDevice to call EnableDevice again */
- dev->startup = FALSE;
- }
- }
- }
-}
-
-
-/***********************************************************************
- *
- * Caller: ProcXChangeKeyboardDevice
- *
- * This procedure does the implementation-dependent portion of the work
- * needed to change the keyboard device.
- *
- * The X keyboard device has a FocusRec. If the device that has been
- * made into the new X keyboard did not have a FocusRec,
- * ProcXChangeKeyboardDevice will allocate one for it.
- *
- * If you do not want clients to be able to focus the old X keyboard
- * device, call DeleteFocusClassDeviceStruct to free the FocusRec.
- *
- * If you support input devices with keys that you do not want to be
- * used as the X keyboard, you need to check for them here and return
- * a BadDevice error.
- *
- * The default implementation is to do nothing (assume you do want
- * clients to be able to focus the old X keyboard). The commented-out
- * sample code shows what you might do if you don't want the default.
- *
- ***********************************************************************
- */
-
-int
-ChangeKeyboardDevice (DeviceIntPtr old_dev, DeviceIntPtr new_dev)
-{
- /**********************************************************************
- * DeleteFocusClassDeviceStruct(old_dev); * defined in xchgptr.c *
- **********************************************************************/
- return !Success;
-}
-
-
-/***********************************************************************
- *
- * Caller: ProcXChangePointerDevice
- *
- * This procedure does the implementation-dependent portion of the work
- * needed to change the pointer device.
- *
- * The X pointer device does not have a FocusRec. If the device that
- * has been made into the new X pointer had a FocusRec,
- * ProcXChangePointerDevice will free it.
- *
- * If you want clients to be able to focus the old pointer device that
- * has now become accessible through the input extension, you need to
- * add a FocusRec to it here.
- *
- * The XChangePointerDevice protocol request also allows the client
- * to choose which axes of the new pointer device are used to move
- * the X cursor in the X- and Y- directions. If the axes are different
- * than the default ones, you need to keep track of that here.
- *
- * If you support input devices with valuators that you do not want to be
- * used as the X pointer, you need to check for them here and return a
- * BadDevice error.
- *
- * The default implementation is to do nothing (assume you don't want
- * clients to be able to focus the old X pointer). The commented-out
- * sample code shows what you might do if you don't want the default.
- *
- ***********************************************************************
- */
-
-int
-ChangePointerDevice (
- DeviceIntPtr old_dev,
- DeviceIntPtr new_dev,
- unsigned char x,
- unsigned char y)
-{
- /************************************************************************
- InitFocusClassDeviceStruct(old_dev); * allow focusing old ptr*
-
- x_axis = x; * keep track of new x-axis*
- y_axis = y; * keep track of new y-axis*
- if (x_axis != 0 || y_axis != 1)
- axes_changed = TRUE; * remember axes have changed*
- else
- axes_changed = FALSE;
- *************************************************************************/
-
- /*
- * We don't allow axis swap or other exotic features.
- */
- if (x == 0 && y == 1) {
- LocalDevicePtr old_local = (LocalDevicePtr)old_dev->public.devicePrivate;
- LocalDevicePtr new_local = (LocalDevicePtr)new_dev->public.devicePrivate;
-
- InitFocusClassDeviceStruct(old_dev);
-
- /* Restore Extended motion history information */
- old_dev->valuator->GetMotionProc = old_local->motion_history_proc;
- old_dev->valuator->numMotionEvents = old_local->history_size;
-
- /* Save Extended motion history information */
- new_local->motion_history_proc = new_dev->valuator->GetMotionProc;
- new_local->history_size = new_dev->valuator->numMotionEvents;
-
- /* Set Core motion history information */
- new_dev->valuator->GetMotionProc = miPointerGetMotionEvents;
- new_dev->valuator->numMotionEvents = miPointerGetMotionBufferSize();
-
- return Success;
- }
- else
- return !Success;
-}
-
-
-/***********************************************************************
- *
- * Caller: ProcXCloseDevice
- *
- * Take care of implementation-dependent details of closing a device.
- * Some implementations may actually close the device, others may just
- * remove this clients interest in that device.
- *
- * The default implementation is to do nothing (assume all input devices
- * are initialized during X server initialization and kept open).
- *
- ***********************************************************************
- */
-
-void
-CloseInputDevice (DeviceIntPtr d, ClientPtr client)
-{
- ErrorF("ProcXCloseDevice to close or not ?\n");
-}
-
-
-/***********************************************************************
- *
- * Caller: ProcXListInputDevices
- *
- * This is the implementation-dependent routine to initialize an input
- * device to the point that information about it can be listed.
- * Some implementations open all input devices when the server is first
- * initialized, and never close them. Other implementations open only
- * the X pointer and keyboard devices during server initialization,
- * and only open other input devices when some client makes an
- * XOpenDevice request. If some other process has the device open, the
- * server may not be able to get information about the device to list it.
- *
- * This procedure should be used by implementations that do not initialize
- * all input devices at server startup. It should do device-dependent
- * initialization for any devices not previously initialized, and call
- * AddInputDevice for each of those devices so that a DeviceIntRec will be
- * created for them.
- *
- * The default implementation is to do nothing (assume all input devices
- * are initialized during X server initialization and kept open).
- * The commented-out sample code shows what you might do if you don't want
- * the default.
- *
- ***********************************************************************
- */
-
-void
-AddOtherInputDevices ()
-{
-}
-
-
-/****************************************************************************
- *
- * Caller: ProcXSetDeviceMode
- *
- * Change the mode of an extension device.
- * This function is used to change the mode of a device from reporting
- * relative motion to reporting absolute positional information, and
- * vice versa.
- * The default implementation below is that no such devices are supported.
- *
- ***********************************************************************
- */
-
-int
-SetDeviceMode (ClientPtr client, DeviceIntPtr dev, int mode)
-{
- LocalDevicePtr local = (LocalDevicePtr)dev->public.devicePrivate;
-
- if (local->switch_mode) {
- return (*local->switch_mode)(client, dev, mode);
- }
- else
- return BadMatch;
-}
-
-
-/***********************************************************************
- *
- * Caller: ProcXSetDeviceValuators
- *
- * Set the value of valuators on an extension input device.
- * This function is used to set the initial value of valuators on
- * those input devices that are capable of reporting either relative
- * motion or an absolute position, and allow an initial position to be set.
- * The default implementation below is that no such devices are supported.
- *
- ***********************************************************************
- */
-
-int
-SetDeviceValuators (ClientPtr client, DeviceIntPtr dev, int *valuators,
- int first_valuator, int num_valuators)
-{
- return BadMatch;
-}
-
-
-/***********************************************************************
- *
- * Caller: ProcXChangeDeviceControl
- *
- * Change the specified device controls on an extension input device.
- *
- ***********************************************************************
- */
-
-int
-ChangeDeviceControl (ClientPtr client, DeviceIntPtr dev, xDeviceCtl *control)
-{
- LocalDevicePtr local = (LocalDevicePtr)dev->public.devicePrivate;
-
- if (!local->control_proc) {
- return (BadMatch);
- }
- else {
- return (*local->control_proc)(local, control);
- }
-}
-#endif
-
-/*
- * adapted from mieq.c to support extended events
- *
- */
-#define QUEUE_SIZE 256
-
-typedef struct _Event {
- xEvent event;
-#ifdef XINPUT
- deviceValuator val;
-#endif
- ScreenPtr pScreen;
-} EventRec, *EventPtr;
-
-typedef struct _EventQueue {
- HWEventQueueType head, tail;
- CARD32 lastEventTime; /* to avoid time running backwards */
- Bool lastMotion;
- EventRec events[QUEUE_SIZE]; /* static allocation for signals */
- DevicePtr pKbd, pPtr; /* device pointer, to get funcs */
- ScreenPtr pEnqueueScreen; /* screen events are being delivered to */
- ScreenPtr pDequeueScreen; /* screen events are being dispatched to */
-} EventQueueRec, *EventQueuePtr;
-
-static EventQueueRec xf86EventQueue;
-
-Bool
-xf86eqInit (DevicePtr pKbd, DevicePtr pPtr)
-{
- xf86EventQueue.head = xf86EventQueue.tail = 0;
- xf86EventQueue.lastEventTime = GetTimeInMillis ();
- xf86EventQueue.pKbd = pKbd;
- xf86EventQueue.pPtr = pPtr;
- xf86EventQueue.lastMotion = FALSE;
- xf86EventQueue.pEnqueueScreen = screenInfo.screens[0];
- xf86EventQueue.pDequeueScreen = xf86EventQueue.pEnqueueScreen;
- SetInputCheck (&xf86EventQueue.head, &xf86EventQueue.tail);
- return TRUE;
-}
-
-/*
- * Must be reentrant with ProcessInputEvents. Assumption: xf86eqEnqueue
- * will never be interrupted. If this is called from both signal
- * handlers and regular code, make sure the signal is suspended when
- * called from regular code.
- */
-
-void
-xf86eqEnqueue (xEvent *e)
-{
- int oldtail, newtail;
- Bool isMotion;
-#ifdef XINPUT
- int count;
-
- xf86AssertBlockedSIGIO ("xf86eqEnqueue");
- switch (e->u.u.type) {
- case KeyPress:
- case KeyRelease:
-#ifdef XFreeXDGA
- /* we do this here, because nobody seems to be calling
- xf86PostKeyEvent(). We can't steal MotionNotify events here
- because the motion-relative information has been lost already. */
- if(DGAStealKeyEvent(xf86EventQueue.pEnqueueScreen->myNum, e))
- return;
-#endif
- /* fall through */
- case ButtonPress:
- case ButtonRelease:
- case MotionNotify:
- count = 1;
- break;
- default:
-#ifdef XFreeXDGA
- if (DGAIsDgaEvent (e))
- {
- count = 1;
- break;
- }
-#endif
- if (!((deviceKeyButtonPointer *) e)->deviceid & MORE_EVENTS) {
- count = 1;
- }
- else {
- count = 2;
- }
- break;
- }
-#endif
-
- oldtail = xf86EventQueue.tail;
- isMotion = e->u.u.type == MotionNotify;
- if (isMotion && xf86EventQueue.lastMotion && oldtail != xf86EventQueue.head) {
- if (oldtail == 0)
- oldtail = QUEUE_SIZE;
- oldtail = oldtail - 1;
- }
- else {
- newtail = oldtail + 1;
- if (newtail == QUEUE_SIZE)
- newtail = 0;
- /* Toss events which come in late */
- if (newtail == xf86EventQueue.head)
- return;
- xf86EventQueue.tail = newtail;
- }
-
- xf86EventQueue.lastMotion = isMotion;
- xf86EventQueue.events[oldtail].event = *e;
-#ifdef XINPUT
- if (count == 2) {
- xf86EventQueue.events[oldtail].val = *((deviceValuator *) (((deviceKeyButtonPointer *) e)+1));
- }
-#endif
- /*
- * Make sure that event times don't go backwards - this
- * is "unnecessary", but very useful
- */
- if (e->u.keyButtonPointer.time < xf86EventQueue.lastEventTime &&
- xf86EventQueue.lastEventTime - e->u.keyButtonPointer.time < 10000) {
-
- xf86EventQueue.events[oldtail].event.u.keyButtonPointer.time =
- xf86EventQueue.lastEventTime;
- }
- xf86EventQueue.events[oldtail].pScreen = xf86EventQueue.pEnqueueScreen;
-}
-
-/*
- * Call this from ProcessInputEvents()
- */
-void
-xf86eqProcessInputEvents ()
-{
- EventRec *e;
- int x, y;
- struct {
- xEvent event;
-#ifdef XINPUT
- deviceValuator val;
-#endif
- } xe;
-#ifdef XINPUT
- DeviceIntPtr dev;
- int id, count;
- deviceKeyButtonPointer *dev_xe;
-#endif
-
- while (xf86EventQueue.head != xf86EventQueue.tail) {
- if (screenIsSaved == SCREEN_SAVER_ON)
- SaveScreens (SCREEN_SAVER_OFF, ScreenSaverReset);
-#ifdef DPMSExtension
- if (DPMSPowerLevel != DPMSModeOn)
- DPMSSet(DPMSModeOn);
-#endif
-
- e = &xf86EventQueue.events[xf86EventQueue.head];
- /*
- * Assumption - screen switching can only occur on motion events
- */
- if (e->pScreen != xf86EventQueue.pDequeueScreen) {
- xf86EventQueue.pDequeueScreen = e->pScreen;
- x = e->event.u.keyButtonPointer.rootX;
- y = e->event.u.keyButtonPointer.rootY;
- if (xf86EventQueue.head == QUEUE_SIZE - 1)
- xf86EventQueue.head = 0;
- else
- ++xf86EventQueue.head;
- NewCurrentScreen (xf86EventQueue.pDequeueScreen, x, y);
- }
- else {
- xe.event = e->event;
- xe.val = e->val;
- if (xf86EventQueue.head == QUEUE_SIZE - 1)
- xf86EventQueue.head = 0;
- else
- ++xf86EventQueue.head;
- switch (xe.event.u.u.type) {
- case KeyPress:
- case KeyRelease:
- (*xf86EventQueue.pKbd->processInputProc)
- (&xe.event, (DeviceIntPtr)xf86EventQueue.pKbd, 1);
- break;
-#ifdef XINPUT
- case ButtonPress:
- case ButtonRelease:
- case MotionNotify:
- (*(inputInfo.pointer->public.processInputProc))
- (&xe.event, (DeviceIntPtr)inputInfo.pointer, 1);
- break;
-
- default:
-#ifdef XFreeXDGA
- if (DGADeliverEvent (xf86EventQueue.pDequeueScreen, &xe.event))
- break;
-#endif
- dev_xe = (deviceKeyButtonPointer *) &xe.event;
- id = dev_xe->deviceid & DEVICE_BITS;
- if (!(dev_xe->deviceid & MORE_EVENTS)) {
- count = 1;
- }
- else {
- count = 2;
- }
- dev = LookupDeviceIntRec(id);
- if (dev == NULL) {
- ErrorF("LookupDeviceIntRec id=0x%x not found\n", id);
-/* FatalError("xf86eqProcessInputEvents : device not found.\n");
- */
- break;
- }
- if (!dev->public.processInputProc) {
- FatalError("xf86eqProcessInputEvents : device has no input proc.\n");
- break;
- }
- (*dev->public.processInputProc)(&xe.event, dev, count);
-#else
- default:
- (*xf86EventQueue.pPtr->processInputProc)
- (&xe.event, (DeviceIntPtr)xf86EventQueue.pPtr, 1);
-#endif
- break;
- }
- }
- }
-}
-
-void
-xf86eqSwitchScreen(ScreenPtr pScreen,
- Bool fromDIX)
-{
- xf86EventQueue.pEnqueueScreen = pScreen;
-
- if (fromDIX)
- xf86EventQueue.pDequeueScreen = pScreen;
-}
-
-/*
- * convenient functions to post events
- */
-
-void
-xf86PostMotionEvent(DeviceIntPtr device,
- int is_absolute,
- int first_valuator,
- int num_valuators,
- ...)
-{
- va_list var;
- int loop;
- xEvent xE[2];
- deviceKeyButtonPointer *xev = (deviceKeyButtonPointer*) xE;
- deviceValuator *xv = (deviceValuator*) xev+1;
- LocalDevicePtr local = (LocalDevicePtr) device->public.devicePrivate;
- char *buff = 0;
- Time current;
- Bool is_core = xf86IsCorePointer(device);
- Bool is_shared = xf86ShareCorePointer(device);
- Bool drag = xf86SendDragEvents(device);
- ValuatorClassPtr val = device->valuator;
- int valuator[6];
- int oldaxis[6];
- int *axisvals;
- int dx = 0, dy = 0;
- float mult;
- int x, y;
- int loop_start;
- int i;
- int num;
-
- DBG(5, ErrorF("xf86PostMotionEvent BEGIN 0x%x(%s) is_core=%s is_shared=%s is_absolute=%s\n",
- device, device->name,
- is_core ? "True" : "False",
- is_shared ? "True" : "False",
- is_absolute ? "True" : "False"));
-
- xf86Info.lastEventTime = xev->time = current = GetTimeInMillis();
-
- if (!is_core) {
- if (HAS_MOTION_HISTORY(local)) {
- buff = ((char *)local->motion_history +
- (sizeof(INT32) * local->dev->valuator->numAxes + sizeof(Time)) * local->last);
- }
- }
-
- if (num_valuators && (!val || (first_valuator + num_valuators > val->numAxes))) {
- ErrorF("Bad valuators reported for device \"%s\"\n", device->name);
- return;
- }
-
- axisvals = val->axisVal;
-
- va_start(var, num_valuators);
-
- loop_start = first_valuator;
- for(loop=0; loop<num_valuators; loop++) {
-
- valuator[loop%6] = va_arg(var,int);
-
- if (loop % 6 == 5 || loop == num_valuators - 1) {
- num = loop % 6 + 1;
- /*
- * Adjust first two relative valuators
- */
- if (!is_absolute && num_valuators >= 2 && loop_start == 0) {
-
- dx = valuator[0];
- dy = valuator[1];
-
- /*
- * Accelerate
- */
- if (device->ptrfeed && device->ptrfeed->ctrl.num) {
- /* modeled from xf86Events.c */
- if (device->ptrfeed->ctrl.threshold) {
- if ((abs(dx) + abs(dy)) >= device->ptrfeed->ctrl.threshold) {
- local->dxremaind = ((float)dx * (float)(device->ptrfeed->ctrl.num)) /
- (float)(device->ptrfeed->ctrl.den) + local->dxremaind;
- valuator[0] = (int)local->dxremaind;
- local->dxremaind = local->dxremaind - (float)valuator[0];
-
- local->dyremaind = ((float)dy * (float)(device->ptrfeed->ctrl.num)) /
- (float)(device->ptrfeed->ctrl.den) + local->dyremaind;
- valuator[1] = (int)local->dyremaind;
- local->dyremaind = local->dyremaind - (float)valuator[1];
- }
- }
- else if (dx || dy) {
- mult = pow((float)(dx*dx+dy*dy),
- ((float)(device->ptrfeed->ctrl.num) /
- (float)(device->ptrfeed->ctrl.den) - 1.0) /
- 2.0) / 2.0;
- if (dx) {
- local->dxremaind = mult * (float)dx + local->dxremaind;
- valuator[0] = (int)local->dxremaind;
- local->dxremaind = local->dxremaind - (float)valuator[0];
- }
- if (dy) {
- local->dyremaind = mult * (float)dy + local->dyremaind;
- valuator[1] = (int)local->dyremaind;
- local->dyremaind = local->dyremaind - (float)valuator[1];
- }
- }
- DBG(6, ErrorF("xf86PostMotionEvent acceleration v0=%d v1=%d\n",
- valuator[0], valuator[1]));
- }
-
- /*
- * Map current position back to device space in case
- * the cursor was warped
- */
- if (is_core || is_shared)
- {
- miPointerPosition (&x, &y);
- if (local->reverse_conversion_proc)
- (*local->reverse_conversion_proc)(local, x, y, axisvals);
- else
- {
- axisvals[0] = x;
- axisvals[1] = y;
- }
- }
- }
-
- /*
- * Update axes
- */
- for (i = 0; i < num; i++)
- {
- oldaxis[i] = axisvals[loop_start + i];
- if (is_absolute)
- axisvals[loop_start + i] = valuator[i];
- else
- axisvals[loop_start + i] += valuator[i];
- }
-
- /*
- * Deliver extension event
- */
- if (!is_core) {
- xev->type = DeviceMotionNotify;
- xev->detail = 0;
- xev->deviceid = device->id | MORE_EVENTS;
-
- xv->type = DeviceValuator;
- xv->deviceid = device->id;
-
- xv->device_state = 0;
- xv->num_valuators = num;
- xv->first_valuator = loop_start;
- memcpy (&xv->valuator0, &axisvals[loop_start],
- sizeof(INT32)*xv->num_valuators);
-
- if (HAS_MOTION_HISTORY(local)) {
- *(Time*)buff = current;
- memcpy(buff+sizeof(Time)+sizeof(INT32)*xv->first_valuator,
- &axisvals[loop_start],
- sizeof(INT32)*xv->num_valuators);
- }
- ENQUEUE(xE);
- }
-
- /*
- * Deliver core event
- */
- if (is_core ||
- (is_shared && num_valuators >= 2 && loop_start == 0)) {
-#ifdef XFreeXDGA
- /*
- * Let DGA peek at the event and steal it
- */
- xev->type = MotionNotify;
- xev->detail = 0;
- if (is_absolute)
- {
- dx = axisvals[0] - oldaxis[0];
- dy = axisvals[1] - oldaxis[1];
- }
- if (DGAStealMouseEvent(xf86EventQueue.pEnqueueScreen->myNum,
- xE, dx, dy))
- continue;
-#endif
- if (!(*local->conversion_proc)(local, loop_start, num,
- axisvals[0], axisvals[1],
- axisvals[2], axisvals[3],
- axisvals[4], axisvals[5],
- &x, &y))
- continue;
-
- if (drag)
- miPointerAbsoluteCursor (x, y, current);
- /*
- * Retrieve the position
- */
- miPointerPosition (&x, &y);
- if (local->reverse_conversion_proc)
- (*local->reverse_conversion_proc)(local, x, y, axisvals);
- else
- {
- axisvals[0] = x;
- axisvals[1] = y;
- }
- }
- loop_start += 6;
- }
- }
- va_end(var);
- if (HAS_MOTION_HISTORY(local)) {
- local->last = (local->last + 1) % device->valuator->numMotionEvents;
- if (local->last == local->first)
- local->first = (local->first + 1) % device->valuator->numMotionEvents;
- }
- DBG(5, ErrorF("xf86PostMotionEvent END 0x%x(%s) is_core=%s is_shared=%s\n",
- device, device->name,
- is_core ? "True" : "False",
- is_shared ? "True" : "False"));
-}
-
-void
-xf86PostProximityEvent(DeviceIntPtr device,
- int is_in,
- int first_valuator,
- int num_valuators,
- ...)
-{
- va_list var;
- int loop;
- xEvent xE[2];
- deviceKeyButtonPointer *xev = (deviceKeyButtonPointer*) xE;
- deviceValuator *xv = (deviceValuator*) xev+1;
- ValuatorClassPtr val = device->valuator;
- Bool is_core = xf86IsCorePointer(device);
- Bool is_absolute = val && ((val->mode & 1) == Relative);
-
- DBG(5, ErrorF("xf86PostProximityEvent BEGIN 0x%x(%s) prox=%s is_core=%s is_absolute=%s\n",
- device, device->name, is_in ? "true" : "false",
- is_core ? "True" : "False",
- is_absolute ? "True" : "False"));
-
- if (is_core) {
- return;
- }
-
- if (num_valuators && (!val || (first_valuator + num_valuators > val->numAxes))) {
- ErrorF("Bad valuators reported for device \"%s\"\n", device->name);
- return;
- }
-
- xev->type = is_in ? ProximityIn : ProximityOut;
- xev->detail = 0;
- xev->deviceid = device->id | MORE_EVENTS;
-
- xv->type = DeviceValuator;
- xv->deviceid = device->id;
- xv->device_state = 0;
-
- if ((device->valuator->mode & 1) == Relative) {
- num_valuators = 0;
- }
-
- if (num_valuators != 0) {
- int *axisvals = val->axisVal;
-
- va_start(var, num_valuators);
-
- for(loop=0; loop<num_valuators; loop++) {
- switch (loop % 6) {
- case 0:
- xv->valuator0 = is_absolute ? va_arg(var, int) : axisvals[loop];
- break;
- case 1:
- xv->valuator1 = is_absolute ? va_arg(var, int) : axisvals[loop];
- break;
- case 2:
- xv->valuator2 = is_absolute ? va_arg(var, int) : axisvals[loop];
- break;
- case 3:
- xv->valuator3 = is_absolute ? va_arg(var, int) : axisvals[loop];
- break;
- case 4:
- xv->valuator4 = is_absolute ? va_arg(var, int) : axisvals[loop];
- break;
- case 5:
- xv->valuator5 = is_absolute ? va_arg(var, int) : axisvals[loop];
- break;
- }
- if ((loop % 6 == 5) || (loop == num_valuators - 1)) {
- xf86Info.lastEventTime = xev->time = GetTimeInMillis();
-
- xv->num_valuators = (loop % 6) + 1;
- xv->first_valuator = first_valuator + (loop / 6) * 6;
- ENQUEUE(xE);
- }
- }
- va_end(var);
- }
- else {
- /* no valuator */
- xf86Info.lastEventTime = xev->time = GetTimeInMillis();
-
- xv->num_valuators = 0;
- xv->first_valuator = 0;
- ENQUEUE(xE);
- }
- DBG(5, ErrorF("xf86PostProximityEvent END 0x%x(%s) prox=%s is_core=%s is_absolute=%s\n",
- device, device->name, is_in ? "true" : "false",
- is_core ? "True" : "False",
- is_absolute ? "True" : "False"));
-
-}
-
-void
-xf86PostButtonEvent(DeviceIntPtr device,
- int is_absolute,
- int button,
- int is_down,
- int first_valuator,
- int num_valuators,
- ...)
-{
- va_list var;
- int loop;
- xEvent xE[2];
- deviceKeyButtonPointer *xev = (deviceKeyButtonPointer*) xE;
- deviceValuator *xv = (deviceValuator*) xev+1;
- ValuatorClassPtr val = device->valuator;
- Bool is_core = xf86IsCorePointer(device);
- Bool is_shared = xf86ShareCorePointer(device);
-
- DBG(5, ErrorF("xf86PostButtonEvent BEGIN 0x%x(%s) button=%d down=%s is_core=%s is_shared=%s is_absolute=%s\n",
- device, device->name, button,
- is_down ? "True" : "False",
- is_core ? "True" : "False",
- is_shared ? "True" : "False",
- is_absolute ? "True" : "False"));
-
- /* Check the core pointer button state not to send an inconsistent
- * event. This can happen with the AlwaysCore feature.
- */
- if ((is_core || is_shared) &&
- !xf86CheckButton(device->button->map[button], is_down))
- {
- return;
- }
-
- if (num_valuators && (!val || (first_valuator + num_valuators > val->numAxes))) {
- ErrorF("Bad valuators reported for device \"%s\"\n", device->name);
- return;
- }
-
- if (!is_core) {
- xev->type = is_down ? DeviceButtonPress : DeviceButtonRelease;
- xev->detail = button;
- xev->deviceid = device->id | MORE_EVENTS;
-
- xv->type = DeviceValuator;
- xv->deviceid = device->id;
- xv->device_state = 0;
-
- if (num_valuators != 0) {
- int *axisvals = val->axisVal;
-
- va_start(var, num_valuators);
-
- for(loop=0; loop<num_valuators; loop++) {
- switch (loop % 6) {
- case 0:
- xv->valuator0 = is_absolute ? va_arg(var, int) : axisvals[loop];
- break;
- case 1:
- xv->valuator1 = is_absolute ? va_arg(var, int) : axisvals[loop];
- break;
- case 2:
- xv->valuator2 = is_absolute ? va_arg(var, int) : axisvals[loop];
- break;
- case 3:
- xv->valuator3 = is_absolute ? va_arg(var, int) : axisvals[loop];
- break;
- case 4:
- xv->valuator4 = is_absolute ? va_arg(var, int) : axisvals[loop];
- break;
- case 5:
- xv->valuator5 = is_absolute ? va_arg(var, int) : axisvals[loop];
- break;
- }
- if ((loop % 6 == 5) || (loop == num_valuators - 1)) {
- xf86Info.lastEventTime = xev->time = GetTimeInMillis();
- xv->num_valuators = (loop % 6) + 1;
- xv->first_valuator = first_valuator + (loop / 6) * 6;
- ENQUEUE(xE);
-
- }
- }
- va_end(var);
- }
- else {
- /* no valuator */
- xf86Info.lastEventTime = xev->time = GetTimeInMillis();
- xv->num_valuators = 0;
- xv->first_valuator = 0;
- ENQUEUE(xE);
- }
- }
-
- /* removed rootX/rootY as DIX sets these fields */
- if (is_core || is_shared) {
- xE->u.u.type = is_down ? ButtonPress : ButtonRelease;
- xE->u.u.detail = device->button->map[button];
- xf86Info.lastEventTime = xE->u.keyButtonPointer.time = GetTimeInMillis();
-
-#ifdef XFreeXDGA
- if (!DGAStealMouseEvent(xf86EventQueue.pEnqueueScreen->myNum, xE, 0, 0))
-#endif
- ENQUEUE(xE);
- }
- DBG(5, ErrorF("xf86PostButtonEvent END\n"));
-}
-
-void
-xf86PostKeyEvent(DeviceIntPtr device,
- unsigned int key_code,
- int is_down,
- int is_absolute,
- int first_valuator,
- int num_valuators,
- ...)
-{
- va_list var;
- int loop;
- xEvent xE[2];
- deviceKeyButtonPointer *xev = (deviceKeyButtonPointer*) xE;
- deviceValuator *xv = (deviceValuator*) xev+1;
-
- va_start(var, num_valuators);
-
- for(loop=0; loop<num_valuators; loop++) {
- switch (loop % 6) {
- case 0:
- xv->valuator0 = va_arg(var, int);
- break;
- case 1:
- xv->valuator1 = va_arg(var, int);
- break;
- case 2:
- xv->valuator2 = va_arg(var, int);
- break;
- case 3:
- xv->valuator3 = va_arg(var, int);
- break;
- case 4:
- xv->valuator4 = va_arg(var, int);
- break;
- case 5:
- xv->valuator5 = va_arg(var, int);
- break;
- }
- if (((loop % 6 == 5) || (loop == num_valuators - 1))) {
- xev->type = is_down ? DeviceKeyPress : DeviceKeyRelease;
- xev->detail = key_code;
-
- xf86Info.lastEventTime = xev->time = GetTimeInMillis();
- xev->deviceid = device->id | MORE_EVENTS;
-
- xv->type = DeviceValuator;
- xv->deviceid = device->id;
- xv->device_state = 0;
- /* if the device is in the relative mode we don't have to send valuators */
- xv->num_valuators = is_absolute ? (loop % 6) + 1 : 0;
- xv->first_valuator = first_valuator + (loop / 6) * 6;
-
- ENQUEUE(xE);
- /* if the device is in the relative mode only one event is needed */
- if (!is_absolute) break;
- }
- }
- va_end(var);
-}
-
-void
-xf86PostKeyboardEvent(DeviceIntPtr device,
- unsigned int key_code,
- int is_down)
-{
- xEvent xE[2];
- deviceKeyButtonPointer *xev = (deviceKeyButtonPointer*) xE;
-
- if (xf86IsCoreKeyboard(device)) {
- xev->type = is_down ? KeyPress : KeyRelease;
- } else {
- xev->type = is_down ? DeviceKeyPress : DeviceKeyRelease;
- }
- xev->detail = key_code;
- xf86Info.lastEventTime = xev->time = GetTimeInMillis();
-
-#ifdef XFreeXDGA
- /* if(!DGAStealKeyEvent(xf86EventQueue.pEnqueueScreen->myNum, xE)) */
-#endif
- ENQUEUE(xE);
-}
-
-/*
- * Motion history management.
- */
-
-void
-xf86MotionHistoryAllocate(LocalDevicePtr local)
-{
- ValuatorClassPtr valuator = local->dev->valuator;
-
- if (!HAS_MOTION_HISTORY(local))
- return;
- if (local->motion_history) xfree(local->motion_history);
- local->motion_history = xalloc((sizeof(INT32) * valuator->numAxes + sizeof(Time))
- * valuator->numMotionEvents);
- local->first = 0;
- local->last = 0;
-}
-
-int
-xf86GetMotionEvents(DeviceIntPtr dev,
- xTimecoord *buff,
- unsigned long start,
- unsigned long stop,
- ScreenPtr pScreen)
-{
- LocalDevicePtr local = (LocalDevicePtr)dev->public.devicePrivate;
- ValuatorClassPtr valuator = dev->valuator;
- int num = 0;
- int loop = local->first;
- int size;
- Time current;
-
- if (!HAS_MOTION_HISTORY(local))
- return 0;
-
- size = (sizeof(INT32) * valuator->numAxes + sizeof(Time));
-
- while (loop != local->last) {
- current = *(Time*)(((char *)local->motion_history)+loop*size);
- if (current > stop)
- return num;
- if (current >= start) {
- memcpy(((char *)buff)+size*num,
- ((char *)local->motion_history)+loop*size, size);
- num++;
- }
- loop = (loop + 1) % valuator->numMotionEvents;
- }
- return num;
-}
-
-LocalDevicePtr
-xf86FirstLocalDevice()
-{
- return xf86InputDevs;
-}
-
-/*
- * Cx - raw data from touch screen
- * Sxhigh - scaled highest dimension
- * (remember, this is of rows - 1 because of 0 origin)
- * Sxlow - scaled lowest dimension
- * Rxhigh - highest raw value from touch screen calibration
- * Rxlow - lowest raw value from touch screen calibration
- *
- * This function is the same for X or Y coordinates.
- * You may have to reverse the high and low values to compensate for
- * different orgins on the touch screen vs X.
- */
-
-int
-xf86ScaleAxis(int Cx,
- int Sxhigh,
- int Sxlow,
- int Rxhigh,
- int Rxlow )
-{
- int X;
- int dSx = Sxhigh - Sxlow;
- int dRx = Rxhigh - Rxlow;
-
- dSx = Sxhigh - Sxlow;
- if (dRx) {
- X = ((dSx * (Cx - Rxlow)) / dRx) + Sxlow;
- }
- else {
- X = 0;
- ErrorF ("Divide by Zero in xf86ScaleAxis");
- }
-
- if (X > Sxlow)
- X = Sxlow;
- if (X < Sxhigh)
- X = Sxhigh;
-
- return (X);
-}
-
-/*
- * This function checks the given screen against the current screen and
- * makes changes if appropriate. It should be called from an XInput driver's
- * ReadInput function before any events are posted, if the device is screen
- * specific like a touch screen.
- */
-void
-xf86XInputSetScreen(LocalDevicePtr local,
- int screen_number,
- int x,
- int y)
-{
- if ((xf86IsCorePointer(local->dev) || xf86ShareCorePointer(local->dev)) &&
- (miPointerCurrentScreen() != screenInfo.screens[screen_number])) {
- miPointerSetNewScreen (screen_number, x, y);
- }
-}
-
-
-void
-xf86InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, int minval, int maxval,
- int resolution, int min_res, int max_res)
-{
-#ifdef XINPUT
- if (maxval == -1) {
- if (axnum == 0)
- maxval = screenInfo.screens[0]->width - 1;
- else if (axnum == 1)
- maxval = screenInfo.screens[0]->height - 1;
- /* else? */
- }
- InitValuatorAxisStruct(dev, axnum, minval, maxval, resolution, min_res,
- max_res);
-#endif
-}
-
-/*
- * Set the valuator values to be in synch with dix/event.c
- * DefineInitialRootWindow().
- */
-void
-xf86InitValuatorDefaults(DeviceIntPtr dev, int axnum)
-{
-#ifdef XINPUT
- if (axnum == 0)
- dev->valuator->axisVal[0] = screenInfo.screens[0]->width / 2;
- else if (axnum == 1)
- dev->valuator->axisVal[1] = screenInfo.screens[0]->height / 2;
-#endif
-}
-
-/* end of xf86Xinput.c */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Xinput.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86Xinput.h
deleted file mode 100644
index 0c20f78fe..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86Xinput.h
+++ /dev/null
@@ -1,220 +0,0 @@
-/* $XConsortium: xf86Xinput.h /main/11 1996/10/27 11:05:29 kaleb $ */
-/*
- * Copyright 1995-1999 by Frederic Lepied, France. <Lepied@XFree86.org>
- *
- * 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, and that the name of Frederic Lepied not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Frederic Lepied makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * FREDERIC LEPIED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL FREDERIC LEPIED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/*
- * Copyright (c) 2000-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Xinput.h,v 3.36 2003/08/24 17:36:55 dawes Exp $ */
-
-#ifndef _xf86Xinput_h
-#define _xf86Xinput_h
-
-#ifndef NEED_EVENTS
-#define NEED_EVENTS
-#endif
-#include "xf86str.h"
-#include "inputstr.h"
-#ifdef XINPUT
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#include "XIstubs.h"
-#endif
-
-/* Input device flags */
-#define XI86_OPEN_ON_INIT 0x01 /* open the device at startup time */
-#define XI86_CONFIGURED 0x02 /* the device has been configured */
-#define XI86_ALWAYS_CORE 0x04 /* device always controls the pointer */
-/* the device sends Xinput and core pointer events */
-#define XI86_SEND_CORE_EVENTS XI86_ALWAYS_CORE
-/* if the device is the core pointer or is sending core events, and
- * SEND_DRAG_EVENTS is false, and a buttons is done, then no motion events
- * (mouse drag action) are sent. This is mainly to allow a touch screen to be
- * used with netscape and other browsers which do strange things if the mouse
- * moves between button down and button up. With a touch screen, this motion
- * is common due to the user's finger moving slightly.
- */
-#define XI86_SEND_DRAG_EVENTS 0x08
-#define XI86_CORE_POINTER 0x10 /* device is the core pointer */
-#define XI86_CORE_KEYBOARD 0x20 /* device is the core keyboard */
-#define XI86_POINTER_CAPABLE 0x40 /* capable of being a core pointer */
-#define XI86_KEYBOARD_CAPABLE 0x80 /* capable of being a core keyboard */
-
-#define XI_PRIVATE(dev) \
- (((LocalDevicePtr)((dev)->public.devicePrivate))->private)
-
-#ifdef DBG
-#undef DBG
-#endif
-#define DBG(lvl, f) {if ((lvl) <= xf86GetVerbosity()) f;}
-
-#ifdef HAS_MOTION_HISTORY
-#undef HAS_MOTION_HISTORY
-#endif
-#define HAS_MOTION_HISTORY(local) ((local)->dev->valuator && (local)->dev->valuator->numMotionEvents)
-
-#ifdef XINPUT
-/* This holds the input driver entry and module information. */
-typedef struct _InputDriverRec {
- int driverVersion;
- char * driverName;
- void (*Identify)(int flags);
- struct _LocalDeviceRec *(*PreInit)(struct _InputDriverRec *drv,
- IDevPtr dev, int flags);
- void (*UnInit)(struct _InputDriverRec *drv,
- struct _LocalDeviceRec *pInfo,
- int flags);
- pointer module;
- int refCount;
-} InputDriverRec, *InputDriverPtr;
-#endif
-
-/* This is to input devices what the ScrnInfoRec is to screens. */
-
-typedef struct _LocalDeviceRec {
- struct _LocalDeviceRec *next;
- char * name;
- int flags;
-
- Bool (*device_control)(DeviceIntPtr device, int what);
- void (*read_input)(struct _LocalDeviceRec *local);
- int (*control_proc)(struct _LocalDeviceRec *local,
- xDeviceCtl *control);
- void (*close_proc)(struct _LocalDeviceRec *local);
- int (*switch_mode)(ClientPtr client, DeviceIntPtr dev,
- int mode);
- Bool (*conversion_proc)(struct _LocalDeviceRec *local,
- int first, int num, int v0,
- int v1, int v2, int v3, int v4,
- int v5, int *x, int *y);
- Bool (*reverse_conversion_proc)(
- struct _LocalDeviceRec *local,
- int x, int y, int *valuators);
-
- int fd;
- Atom atom;
- DeviceIntPtr dev;
- pointer private;
- int private_flags;
- pointer motion_history;
- ValuatorMotionProcPtr motion_history_proc;
- unsigned int history_size; /* only for configuration purpose */
- unsigned int first;
- unsigned int last;
- int old_x;
- int old_y;
- float dxremaind;
- float dyremaind;
- char * type_name;
- IntegerFeedbackPtr always_core_feedback;
- IDevPtr conf_idev;
- InputDriverPtr drv;
- pointer module;
- pointer options;
-} LocalDeviceRec, *LocalDevicePtr, InputInfoRec, *InputInfoPtr;
-
-typedef struct _DeviceAssocRec
-{
- char * config_section_name;
- LocalDevicePtr (*device_allocate)(void);
-} DeviceAssocRec, *DeviceAssocPtr;
-
-/* xf86Globals.c */
-extern InputInfoPtr xf86InputDevs;
-
-/* xf86Xinput.c */
-int xf86IsCorePointer(DeviceIntPtr dev);
-int xf86IsCoreKeyboard(DeviceIntPtr dev);
-void xf86XInputSetSendCoreEvents(LocalDevicePtr local, Bool always);
-#define xf86AlwaysCore(a,b) xf86XInputSetSendCoreEvents(a,b)
-
-void InitExtInput(void);
-Bool xf86eqInit(DevicePtr pKbd, DevicePtr pPtr);
-void xf86eqEnqueue(struct _xEvent *event);
-void xf86eqProcessInputEvents (void);
-void xf86eqSwitchScreen(ScreenPtr pScreen, Bool fromDIX);
-void xf86PostMotionEvent(DeviceIntPtr device, int is_absolute,
- int first_valuator, int num_valuators, ...);
-void xf86PostProximityEvent(DeviceIntPtr device, int is_in,
- int first_valuator, int num_valuators, ...);
-void xf86PostButtonEvent(DeviceIntPtr device, int is_absolute, int button,
- int is_down, int first_valuator, int num_valuators,
- ...);
-void xf86PostKeyEvent(DeviceIntPtr device, unsigned int key_code, int is_down,
- int is_absolute, int first_valuator, int num_valuators,
- ...);
-void xf86PostKeyboardEvent(DeviceIntPtr device, unsigned int key_code,
- int is_down);
-void xf86MotionHistoryAllocate(LocalDevicePtr local);
-int xf86GetMotionEvents(DeviceIntPtr dev, xTimecoord *buff,
- unsigned long start, unsigned long stop,
- ScreenPtr pScreen);
-void xf86XinputFinalizeInit(DeviceIntPtr dev);
-Bool xf86CheckButton(int button, int down);
-void xf86SwitchCoreDevice(LocalDevicePtr device, DeviceIntPtr core);
-LocalDevicePtr xf86FirstLocalDevice(void);
-int xf86ScaleAxis(int Cx, int Sxhigh, int Sxlow, int Rxhigh, int Rxlow);
-void xf86XInputSetScreen(LocalDevicePtr local, int screen_number, int x, int y);
-void xf86ProcessCommonOptions(InputInfoPtr pInfo, pointer options);
-void xf86InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, int minval,
- int maxval, int resolution, int min_res,
- int max_res);
-void xf86InitValuatorDefaults(DeviceIntPtr dev, int axnum);
-void xf86AddEnabledDevice(InputInfoPtr pInfo);
-void xf86RemoveEnabledDevice(InputInfoPtr pInfo);
-
-/* xf86Helper.c */
-void xf86AddInputDriver(InputDriverPtr driver, pointer module, int flags);
-void xf86DeleteInputDriver(int drvIndex);
-InputInfoPtr xf86AllocateInput(InputDriverPtr drv, int flags);
-void xf86DeleteInput(InputInfoPtr pInp, int flags);
-
-/* xf86Option.c */
-void xf86CollectInputOptions(InputInfoPtr pInfo, const char **defaultOpts,
- pointer extraOpts);
-
-#endif /* _xf86Xinput_h */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86cmap.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86cmap.c
deleted file mode 100644
index b77e9fb47..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86cmap.c
+++ /dev/null
@@ -1,1123 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86cmap.c,v 1.9 2005/09/05 07:43:51 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86cmap.c,v 1.25 2003/10/17 20:02:12 alanh Exp $ */
-/*
- * Copyright (c) 1998-2001 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#if defined(_XOPEN_SOURCE) || defined(__QNXNTO__) \
- || (defined(sun) && defined(__SVR4))
-#include <math.h>
-#else
-#define _XOPEN_SOURCE /* to get prototype for pow on some systems */
-#include <math.h>
-#undef _XOPEN_SOURCE
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include <X11/Xproto.h>
-#include "colormapst.h"
-#include "scrnintstr.h"
-
-#include "resource.h"
-
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#include "xf86str.h"
-#include "micmap.h"
-
-#ifdef XFreeXDGA
-#define _XF86DGA_SERVER_
-#include <X11/extensions/xf86dgastr.h>
-#include "dgaproc.h"
-#endif
-
-#include "xf86cmap.h"
-
-#define SCREEN_PROLOGUE(pScreen, field) ((pScreen)->field = \
- ((CMapScreenPtr) (pScreen)->devPrivates[CMapScreenIndex].ptr)->field)
-#define SCREEN_EPILOGUE(pScreen, field, wrapper)\
- ((pScreen)->field = wrapper)
-
-#define LOAD_PALETTE(pmap, index) \
- ((pmap == miInstalledMaps[index]) && \
- ((pScreenPriv->flags & CMAP_LOAD_EVEN_IF_OFFSCREEN) || \
- xf86Screens[index]->vtSema || pScreenPriv->isDGAmode))
-
-
-typedef struct _CMapLink {
- ColormapPtr cmap;
- struct _CMapLink *next;
-} CMapLink, *CMapLinkPtr;
-
-typedef struct {
- ScrnInfoPtr pScrn;
- CloseScreenProcPtr CloseScreen;
- CreateColormapProcPtr CreateColormap;
- DestroyColormapProcPtr DestroyColormap;
- InstallColormapProcPtr InstallColormap;
- StoreColorsProcPtr StoreColors;
- Bool (*EnterVT)(int, int);
- Bool (*SwitchMode)(int, DisplayModePtr, int);
- int (*SetDGAMode)(int, int, DGADevicePtr);
- int maxColors;
- int sigRGBbits;
- int gammaElements;
- LOCO *gamma;
- int *PreAllocIndices;
- CMapLinkPtr maps;
- unsigned int flags;
- Bool isDGAmode;
-} CMapScreenRec, *CMapScreenPtr;
-
-typedef struct {
- int numColors;
- LOCO *colors;
- Bool recalculate;
- int overscan;
-} CMapColormapRec, *CMapColormapPtr;
-
-static unsigned long CMapGeneration = 0;
-static int CMapScreenIndex = -1;
-static int CMapColormapIndex = -1;
-
-static void CMapInstallColormap(ColormapPtr);
-static void CMapStoreColors(ColormapPtr, int, xColorItem *);
-static Bool CMapCloseScreen (int, ScreenPtr);
-static Bool CMapCreateColormap (ColormapPtr);
-static void CMapDestroyColormap (ColormapPtr);
-
-static Bool CMapEnterVT(int, int);
-static Bool CMapSwitchMode(int, DisplayModePtr, int);
-static int CMapSetDGAMode(int, int, DGADevicePtr);
-static int CMapChangeGamma(int, Gamma);
-
-static void ComputeGamma(CMapScreenPtr);
-static Bool CMapAllocateColormapPrivate(ColormapPtr);
-static Bool CMapInitDefMap(ColormapPtr,int);
-static void CMapRefreshColors(ColormapPtr, int, int*);
-static void CMapSetOverscan(ColormapPtr, int, int *);
-static void CMapReinstallMap(ColormapPtr);
-static void CMapUnwrapScreen(ScreenPtr pScreen);
-
-
-
-Bool xf86HandleColormaps(
- ScreenPtr pScreen,
- int maxColors,
- int sigRGBbits,
- xf86LoadPaletteProc *loadPalette,
- xf86SetOverscanProc *setOverscan,
- unsigned int flags
-){
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- ColormapPtr pDefMap = NULL;
- CMapScreenPtr pScreenPriv;
- LOCO *gamma;
- int *indices;
- int elements;
-
- if(!maxColors || !sigRGBbits || !loadPalette)
- return FALSE;
-
- if(CMapGeneration != serverGeneration) {
- if(((CMapScreenIndex = AllocateScreenPrivateIndex()) < 0) ||
- ((CMapColormapIndex = AllocateColormapPrivateIndex(
- CMapInitDefMap)) < 0))
- return FALSE;
- CMapGeneration = serverGeneration;
- }
-
- elements = 1 << sigRGBbits;
-
- if(!(gamma = xalloc(elements * sizeof(LOCO))))
- return FALSE;
-
- if(!(indices = xalloc(maxColors * sizeof(int)))) {
- xfree(gamma);
- return FALSE;
- }
-
- if(!(pScreenPriv = xalloc(sizeof(CMapScreenRec)))) {
- xfree(gamma);
- xfree(indices);
- return FALSE;
- }
-
- pScreen->devPrivates[CMapScreenIndex].ptr = (pointer)pScreenPriv;
-
- pScreenPriv->CloseScreen = pScreen->CloseScreen;
- pScreenPriv->CreateColormap = pScreen->CreateColormap;
- pScreenPriv->DestroyColormap = pScreen->DestroyColormap;
- pScreenPriv->InstallColormap = pScreen->InstallColormap;
- pScreenPriv->StoreColors = pScreen->StoreColors;
- pScreen->CloseScreen = CMapCloseScreen;
- pScreen->CreateColormap = CMapCreateColormap;
- pScreen->DestroyColormap = CMapDestroyColormap;
- pScreen->InstallColormap = CMapInstallColormap;
- pScreen->StoreColors = CMapStoreColors;
-
- pScreenPriv->pScrn = pScrn;
- pScrn->LoadPalette = loadPalette;
- pScrn->SetOverscan = setOverscan;
- pScreenPriv->maxColors = maxColors;
- pScreenPriv->sigRGBbits = sigRGBbits;
- pScreenPriv->gammaElements = elements;
- pScreenPriv->gamma = gamma;
- pScreenPriv->PreAllocIndices = indices;
- pScreenPriv->maps = NULL;
- pScreenPriv->flags = flags;
- pScreenPriv->isDGAmode = FALSE;
-
- pScreenPriv->EnterVT = pScrn->EnterVT;
- pScreenPriv->SwitchMode = pScrn->SwitchMode;
- pScreenPriv->SetDGAMode = pScrn->SetDGAMode;
-
- if (!(flags & CMAP_LOAD_EVEN_IF_OFFSCREEN)) {
- pScrn->EnterVT = CMapEnterVT;
- if ((flags & CMAP_RELOAD_ON_MODE_SWITCH) && pScrn->SwitchMode)
- pScrn->SwitchMode = CMapSwitchMode;
- }
-#ifdef XFreeXDGA
- pScrn->SetDGAMode = CMapSetDGAMode;
-#endif
- pScrn->ChangeGamma = CMapChangeGamma;
-
- ComputeGamma(pScreenPriv);
-
- /* get the default map */
-
- pDefMap = (ColormapPtr) LookupIDByType(pScreen->defColormap, RT_COLORMAP);
-
- if(!CMapAllocateColormapPrivate(pDefMap)) {
- CMapUnwrapScreen(pScreen);
- return FALSE;
- }
-
- /* Force the initial map to be loaded */
- miInstalledMaps[pScreen->myNum] = NULL;
- CMapInstallColormap(pDefMap);
- return TRUE;
-}
-
-static Bool
-CMapInitDefMap(ColormapPtr cmap, int index)
-{
- return TRUE;
-}
-
-
-/**** Screen functions ****/
-
-
-static Bool
-CMapCloseScreen (int i, ScreenPtr pScreen)
-{
- CMapUnwrapScreen(pScreen);
-
- return (*pScreen->CloseScreen) (i, pScreen);
-}
-
-static Bool
-CMapColormapUseMax(VisualPtr pVisual, CMapScreenPtr pScreenPriv)
-{
- if (pVisual->nplanes > 16)
- return TRUE;
- return ((1 << pVisual->nplanes) > pScreenPriv->maxColors);
-}
-
-static Bool
-CMapAllocateColormapPrivate(ColormapPtr pmap)
-{
- CMapScreenPtr pScreenPriv =
- (CMapScreenPtr) pmap->pScreen->devPrivates[CMapScreenIndex].ptr;
- CMapColormapPtr pColPriv;
- CMapLinkPtr pLink;
- int numColors;
- LOCO *colors;
-
- if (CMapColormapUseMax(pmap->pVisual, pScreenPriv))
- numColors = pmap->pVisual->ColormapEntries;
- else
- numColors = 1 << pmap->pVisual->nplanes;
-
- if(!(colors = xalloc(numColors * sizeof(LOCO))))
- return FALSE;
-
- if(!(pColPriv = xalloc(sizeof(CMapColormapRec)))) {
- xfree(colors);
- return FALSE;
- }
-
- pmap->devPrivates[CMapColormapIndex].ptr = (pointer)pColPriv;
-
- pColPriv->numColors = numColors;
- pColPriv->colors = colors;
- pColPriv->recalculate = TRUE;
- pColPriv->overscan = -1;
-
- /* add map to list */
- pLink = xalloc(sizeof(CMapLink));
- if(pLink) {
- pLink->cmap = pmap;
- pLink->next = pScreenPriv->maps;
- pScreenPriv->maps = pLink;
- }
-
- return TRUE;
-}
-
-static Bool
-CMapCreateColormap (ColormapPtr pmap)
-{
- ScreenPtr pScreen = pmap->pScreen;
- CMapScreenPtr pScreenPriv =
- (CMapScreenPtr)pScreen->devPrivates[CMapScreenIndex].ptr;
- Bool ret = FALSE;
-
- pScreen->CreateColormap = pScreenPriv->CreateColormap;
- if((*pScreen->CreateColormap)(pmap)) {
- if(CMapAllocateColormapPrivate(pmap))
- ret = TRUE;
- }
- pScreen->CreateColormap = CMapCreateColormap;
-
- return ret;
-}
-
-static void
-CMapDestroyColormap (ColormapPtr cmap)
-{
- ScreenPtr pScreen = cmap->pScreen;
- CMapScreenPtr pScreenPriv =
- (CMapScreenPtr) pScreen->devPrivates[CMapScreenIndex].ptr;
- CMapColormapPtr pColPriv =
- (CMapColormapPtr) cmap->devPrivates[CMapColormapIndex].ptr;
- CMapLinkPtr prevLink = NULL, pLink = pScreenPriv->maps;
-
- if(pColPriv) {
- if(pColPriv->colors) xfree(pColPriv->colors);
- xfree(pColPriv);
- }
-
- /* remove map from list */
- while(pLink) {
- if(pLink->cmap == cmap) {
- if(prevLink)
- prevLink->next = pLink->next;
- else
- pScreenPriv->maps = pLink->next;
- xfree(pLink);
- break;
- }
- prevLink = pLink;
- pLink = pLink->next;
- }
-
- if(pScreenPriv->DestroyColormap) {
- pScreen->DestroyColormap = pScreenPriv->DestroyColormap;
- (*pScreen->DestroyColormap)(cmap);
- pScreen->DestroyColormap = CMapDestroyColormap;
- }
-}
-
-
-
-static void
-CMapStoreColors(
- ColormapPtr pmap,
- int ndef,
- xColorItem *pdefs
-){
- ScreenPtr pScreen = pmap->pScreen;
- VisualPtr pVisual = pmap->pVisual;
- CMapScreenPtr pScreenPriv =
- (CMapScreenPtr) pScreen->devPrivates[CMapScreenIndex].ptr;
- int *indices = pScreenPriv->PreAllocIndices;
- int num = ndef;
-
- /* At the moment this isn't necessary since there's nobody below us */
- pScreen->StoreColors = pScreenPriv->StoreColors;
- (*pScreen->StoreColors)(pmap, ndef, pdefs);
- pScreen->StoreColors = CMapStoreColors;
-
- /* should never get here for these */
- if( (pVisual->class == TrueColor) ||
- (pVisual->class == StaticColor) ||
- (pVisual->class == StaticGray))
- return;
-
- if(pVisual->class == DirectColor) {
- CMapColormapPtr pColPriv =
- (CMapColormapPtr) pmap->devPrivates[CMapColormapIndex].ptr;
- int i;
-
- if (CMapColormapUseMax(pVisual, pScreenPriv)) {
- int index;
-
- num = 0;
- while(ndef--) {
- if(pdefs[ndef].flags & DoRed) {
- index = (pdefs[ndef].pixel & pVisual->redMask) >>
- pVisual->offsetRed;
- i = num;
- while(i--)
- if(indices[i] == index) break;
- if(i == -1)
- indices[num++] = index;
- }
- if(pdefs[ndef].flags & DoGreen) {
- index = (pdefs[ndef].pixel & pVisual->greenMask) >>
- pVisual->offsetGreen;
- i = num;
- while(i--)
- if(indices[i] == index) break;
- if(i == -1)
- indices[num++] = index;
- }
- if(pdefs[ndef].flags & DoBlue) {
- index = (pdefs[ndef].pixel & pVisual->blueMask) >>
- pVisual->offsetBlue;
- i = num;
- while(i--)
- if(indices[i] == index) break;
- if(i == -1)
- indices[num++] = index;
- }
- }
-
- } else {
- /* not really as overkill as it seems */
- num = pColPriv->numColors;
- for(i = 0; i < pColPriv->numColors; i++)
- indices[i] = i;
- }
- } else {
- while(ndef--)
- indices[ndef] = pdefs[ndef].pixel;
- }
-
- CMapRefreshColors(pmap, num, indices);
-}
-
-
-static void
-CMapInstallColormap(ColormapPtr pmap)
-{
- ScreenPtr pScreen = pmap->pScreen;
- int index = pScreen->myNum;
- CMapScreenPtr pScreenPriv =
- (CMapScreenPtr) pScreen->devPrivates[CMapScreenIndex].ptr;
-
- if (pmap == miInstalledMaps[index])
- return;
-
- pScreen->InstallColormap = pScreenPriv->InstallColormap;
- (*pScreen->InstallColormap)(pmap);
- pScreen->InstallColormap = CMapInstallColormap;
-
- /* Important. We let the lower layers, namely DGA,
- overwrite the choice of Colormap to install */
- if (miInstalledMaps[index])
- pmap = miInstalledMaps[index];
-
- if (!(pScreenPriv->flags & CMAP_PALETTED_TRUECOLOR) &&
- (pmap->pVisual->class == TrueColor) &&
- CMapColormapUseMax(pmap->pVisual, pScreenPriv))
- return;
-
- if(LOAD_PALETTE(pmap, index))
- CMapReinstallMap(pmap);
-}
-
-
-/**** ScrnInfoRec functions ****/
-
-static Bool
-CMapEnterVT(int index, int flags)
-{
- ScreenPtr pScreen = screenInfo.screens[index];
- CMapScreenPtr pScreenPriv =
- (CMapScreenPtr) pScreen->devPrivates[CMapScreenIndex].ptr;
-
- if((*pScreenPriv->EnterVT)(index, flags)) {
- if(miInstalledMaps[index])
- CMapReinstallMap(miInstalledMaps[index]);
- return TRUE;
- }
- return FALSE;
-}
-
-
-static Bool
-CMapSwitchMode(int index, DisplayModePtr mode, int flags)
-{
- ScreenPtr pScreen = screenInfo.screens[index];
- CMapScreenPtr pScreenPriv =
- (CMapScreenPtr) pScreen->devPrivates[CMapScreenIndex].ptr;
-
- if((*pScreenPriv->SwitchMode)(index, mode, flags)) {
- if(miInstalledMaps[index])
- CMapReinstallMap(miInstalledMaps[index]);
- return TRUE;
- }
- return FALSE;
-}
-
-#ifdef XFreeXDGA
-static int
-CMapSetDGAMode(int index, int num, DGADevicePtr dev)
-{
- ScreenPtr pScreen = screenInfo.screens[index];
- CMapScreenPtr pScreenPriv =
- (CMapScreenPtr) pScreen->devPrivates[CMapScreenIndex].ptr;
- int ret;
-
- ret = (*pScreenPriv->SetDGAMode)(index, num, dev);
-
- pScreenPriv->isDGAmode = DGAActive(index);
-
- if(!pScreenPriv->isDGAmode && miInstalledMaps[index]
- && xf86Screens[pScreen->myNum]->vtSema)
- CMapReinstallMap(miInstalledMaps[index]);
-
- return ret;
-}
-#endif
-
-
-/**** Utilities ****/
-
-static void
-CMapReinstallMap(ColormapPtr pmap)
-{
- CMapScreenPtr pScreenPriv =
- (CMapScreenPtr) pmap->pScreen->devPrivates[CMapScreenIndex].ptr;
- CMapColormapPtr cmapPriv =
- (CMapColormapPtr) pmap->devPrivates[CMapColormapIndex].ptr;
- ScrnInfoPtr pScrn = xf86Screens[pmap->pScreen->myNum];
- int i = cmapPriv->numColors;
- int *indices = pScreenPriv->PreAllocIndices;
-
- while(i--)
- indices[i] = i;
-
- if(cmapPriv->recalculate)
- CMapRefreshColors(pmap, cmapPriv->numColors, indices);
- else {
- (*pScrn->LoadPalette)(pScrn, cmapPriv->numColors,
- indices, cmapPriv->colors, pmap->pVisual);
- if (pScrn->SetOverscan) {
-#ifdef DEBUGOVERSCAN
- ErrorF("SetOverscan() called from CMapReinstallMap\n");
-#endif
- pScrn->SetOverscan(pScrn, cmapPriv->overscan);
- }
- }
-
- cmapPriv->recalculate = FALSE;
-}
-
-
-static void
-CMapRefreshColors(ColormapPtr pmap, int defs, int* indices)
-{
- CMapScreenPtr pScreenPriv =
- (CMapScreenPtr) pmap->pScreen->devPrivates[CMapScreenIndex].ptr;
- CMapColormapPtr pColPriv =
- (CMapColormapPtr) pmap->devPrivates[CMapColormapIndex].ptr;
- VisualPtr pVisual = pmap->pVisual;
- ScrnInfoPtr pScrn = xf86Screens[pmap->pScreen->myNum];
- int numColors, i;
- LOCO *gamma, *colors;
- EntryPtr entry;
- int reds, greens, blues, maxValue, index, shift;
-
- numColors = pColPriv->numColors;
- shift = 16 - pScreenPriv->sigRGBbits;
- maxValue = (1 << pScreenPriv->sigRGBbits) - 1;
- gamma = pScreenPriv->gamma;
- colors = pColPriv->colors;
-
- reds = pVisual->redMask >> pVisual->offsetRed;
- greens = pVisual->greenMask >> pVisual->offsetGreen;
- blues = pVisual->blueMask >> pVisual->offsetBlue;
-
- switch(pVisual->class) {
- case StaticGray:
- for(i = 0; i <= numColors - 1; i++) {
- index = i * maxValue / numColors;
- colors[i].red = gamma[index].red;
- colors[i].green = gamma[index].green;
- colors[i].blue = gamma[index].blue;
- }
- break;
- case TrueColor:
- if (CMapColormapUseMax(pVisual, pScreenPriv)) {
- for(i = 0; i <= reds; i++)
- colors[i].red = gamma[i * maxValue / reds].red;
- for(i = 0; i <= greens; i++)
- colors[i].green = gamma[i * maxValue / greens].green;
- for(i = 0; i <= blues; i++)
- colors[i].blue = gamma[i * maxValue / blues].blue;
- break;
- }
- for(i = 0; i < numColors; i++) {
- colors[i].red = gamma[((i >> pVisual->offsetRed) & reds) *
- maxValue / reds].red;
- colors[i].green = gamma[((i >> pVisual->offsetGreen) & greens) *
- maxValue / greens].green;
- colors[i].blue = gamma[((i >> pVisual->offsetBlue) & blues) *
- maxValue / blues].blue;
- }
- break;
- case StaticColor:
- case PseudoColor:
- case GrayScale:
- for(i = 0; i < defs; i++) {
- index = indices[i];
- entry = (EntryPtr)&pmap->red[index];
-
- if(entry->fShared) {
- colors[index].red =
- gamma[entry->co.shco.red->color >> shift].red;
- colors[index].green =
- gamma[entry->co.shco.green->color >> shift].green;
- colors[index].blue =
- gamma[entry->co.shco.blue->color >> shift].blue;
- } else {
- colors[index].red =
- gamma[entry->co.local.red >> shift].red;
- colors[index].green =
- gamma[entry->co.local.green >> shift].green;
- colors[index].blue =
- gamma[entry->co.local.blue >> shift].blue;
- }
- }
- break;
- case DirectColor:
- if (CMapColormapUseMax(pVisual, pScreenPriv)) {
- for(i = 0; i < defs; i++) {
- index = indices[i];
- if(index <= reds)
- colors[index].red =
- gamma[pmap->red[index].co.local.red >> shift].red;
- if(index <= greens)
- colors[index].green =
- gamma[pmap->green[index].co.local.green >> shift].green;
- if(index <= blues)
- colors[index].blue =
- gamma[pmap->blue[index].co.local.blue >> shift].blue;
-
- }
- break;
- }
- for(i = 0; i < defs; i++) {
- index = indices[i];
-
- colors[index].red = gamma[pmap->red[
- (index >> pVisual->offsetRed) & reds
- ].co.local.red >> shift].red;
- colors[index].green = gamma[pmap->green[
- (index >> pVisual->offsetGreen) & greens
- ].co.local.green >> shift].green;
- colors[index].blue = gamma[pmap->blue[
- (index >> pVisual->offsetBlue) & blues
- ].co.local.blue >> shift].blue;
- }
- break;
- }
-
-
- if(LOAD_PALETTE(pmap, pmap->pScreen->myNum))
- (*pScrn->LoadPalette)(pScreenPriv->pScrn, defs, indices,
- colors, pmap->pVisual);
-
- if (pScrn->SetOverscan)
- CMapSetOverscan(pmap, defs, indices);
-
-}
-
-static Bool
-CMapCompareColors(LOCO *color1, LOCO *color2)
-{
- /* return TRUE if the color1 is "closer" to black than color2 */
-#ifdef DEBUGOVERSCAN
- ErrorF("#%02x%02x%02x vs #%02x%02x%02x (%d vs %d)\n",
- color1->red, color1->green, color1->blue,
- color2->red, color2->green, color2->blue,
- color1->red + color1->green + color1->blue,
- color2->red + color2->green + color2->blue);
-#endif
- return (color1->red + color1->green + color1->blue <
- color2->red + color2->green + color2->blue);
-}
-
-static void
-CMapSetOverscan(ColormapPtr pmap, int defs, int *indices)
-{
- CMapScreenPtr pScreenPriv =
- (CMapScreenPtr) pmap->pScreen->devPrivates[CMapScreenIndex].ptr;
- CMapColormapPtr pColPriv =
- (CMapColormapPtr) pmap->devPrivates[CMapColormapIndex].ptr;
- ScrnInfoPtr pScrn = xf86Screens[pmap->pScreen->myNum];
- VisualPtr pVisual = pmap->pVisual;
- int i;
- LOCO *colors;
- int index;
- Bool newOverscan = FALSE;
- int overscan, tmpOverscan;
-
- colors = pColPriv->colors;
- overscan = pColPriv->overscan;
-
- /*
- * Search for a new overscan index in the following cases:
- *
- * - The index hasn't yet been initialised.  In this case search
- * for an index that is black or a close match to black.
- *
- * - The colour of the old index is changed. In this case search
- * all indices for a black or close match to black.
- *
- * - The colour of the old index wasn't black. In this case only
- * search the indices that were changed for a better match to black.
- */
-
- switch (pVisual->class) {
- case StaticGray:
- case TrueColor:
- /* Should only come here once. Initialise the overscan index to 0 */
- overscan = 0;
- newOverscan = TRUE;
- break;
- case StaticColor:
- /*
- * Only come here once, but search for the overscan in the same way
- * as for the other cases.
- */
- case DirectColor:
- case PseudoColor:
- case GrayScale:
- if (overscan < 0 || overscan > pScreenPriv->maxColors - 1) {
- /* Uninitialised */
- newOverscan = TRUE;
- } else {
- /* Check if the overscan was changed */
- for (i = 0; i < defs; i++) {
- index = indices[i];
- if (index == overscan) {
- newOverscan = TRUE;
- break;
- }
- }
- }
- if (newOverscan) {
- /* The overscan is either uninitialised or it has been changed */
-
- if (overscan < 0 || overscan > pScreenPriv->maxColors - 1)
- tmpOverscan = pScreenPriv->maxColors - 1;
- else
- tmpOverscan = overscan;
-
- /* search all entries for a close match to black */
- for (i = pScreenPriv->maxColors - 1; i >= 0; i--) {
- if (colors[i].red == 0 && colors[i].green == 0 &&
- colors[i].blue == 0) {
- overscan = i;
-#ifdef DEBUGOVERSCAN
- ErrorF("Black found at index 0x%02x\n", i);
-#endif
- break;
- } else {
-#ifdef DEBUGOVERSCAN
- ErrorF("0x%02x: ", i);
-#endif
- if (CMapCompareColors(&colors[i], &colors[tmpOverscan])) {
- tmpOverscan = i;
-#ifdef DEBUGOVERSCAN
- ErrorF("possible \"Black\" at index 0x%02x\n", i);
-#endif
- }
- }
- }
- if (i < 0)
- overscan = tmpOverscan;
- } else {
- /* Check of the old overscan wasn't black */
- if (colors[overscan].red != 0 || colors[overscan].green != 0 ||
- colors[overscan].blue != 0) {
- int oldOverscan = tmpOverscan = overscan;
- /* See of there is now a better match */
- for (i = 0; i < defs; i++) {
- index = indices[i];
- if (colors[index].red == 0 && colors[index].green == 0 &&
- colors[index].blue == 0) {
- overscan = index;
-#ifdef DEBUGOVERSCAN
- ErrorF("Black found at index 0x%02x\n", index);
-#endif
- break;
- } else {
-#ifdef DEBUGOVERSCAN
- ErrorF("0x%02x: ", index);
-#endif
- if (CMapCompareColors(&colors[index],
- &colors[tmpOverscan])) {
- tmpOverscan = index;
-#ifdef DEBUGOVERSCAN
- ErrorF("possible \"Black\" at index 0x%02x\n",
- index);
-#endif
- }
- }
- }
- if (i == defs)
- overscan = tmpOverscan;
- if (overscan != oldOverscan)
- newOverscan = TRUE;
- }
- }
- break;
- }
- if (newOverscan) {
- pColPriv->overscan = overscan;
- if (LOAD_PALETTE(pmap, pmap->pScreen->myNum)) {
-#ifdef DEBUGOVERSCAN
- ErrorF("SetOverscan() called from CmapSetOverscan\n");
-#endif
- pScrn->SetOverscan(pScreenPriv->pScrn, overscan);
- }
- }
-}
-
-static void
-CMapUnwrapScreen(ScreenPtr pScreen)
-{
- CMapScreenPtr pScreenPriv =
- (CMapScreenPtr) pScreen->devPrivates[CMapScreenIndex].ptr;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
-
- pScreen->CloseScreen = pScreenPriv->CloseScreen;
- pScreen->CreateColormap = pScreenPriv->CreateColormap;
- pScreen->DestroyColormap = pScreenPriv->DestroyColormap;
- pScreen->InstallColormap = pScreenPriv->InstallColormap;
- pScreen->StoreColors = pScreenPriv->StoreColors;
-
- pScrn->EnterVT = pScreenPriv->EnterVT;
- pScrn->SwitchMode = pScreenPriv->SwitchMode;
- pScrn->SetDGAMode = pScreenPriv->SetDGAMode;
-
- xfree(pScreenPriv->gamma);
- xfree(pScreenPriv->PreAllocIndices);
- xfree(pScreenPriv);
-}
-
-
-static void
-ComputeGamma(CMapScreenPtr priv)
-{
- int elements = priv->gammaElements - 1;
- double RedGamma, GreenGamma, BlueGamma;
- int i;
-
-#ifndef DONT_CHECK_GAMMA
- /* This check is to catch drivers that are not initialising pScrn->gamma */
- if (priv->pScrn->gamma.red < GAMMA_MIN ||
- priv->pScrn->gamma.red > GAMMA_MAX ||
- priv->pScrn->gamma.green < GAMMA_MIN ||
- priv->pScrn->gamma.green > GAMMA_MAX ||
- priv->pScrn->gamma.blue < GAMMA_MIN ||
- priv->pScrn->gamma.blue > GAMMA_MAX) {
-
- xf86DrvMsgVerb(priv->pScrn->scrnIndex, X_WARNING, 0,
- "The %s driver didn't call xf86SetGamma() to initialise\n"
- "\tthe gamma values.\n", priv->pScrn->driverName);
- xf86DrvMsgVerb(priv->pScrn->scrnIndex, X_WARNING, 0,
- "PLEASE FIX THE `%s' DRIVER!\n", priv->pScrn->driverName);
- priv->pScrn->gamma.red = 1.0;
- priv->pScrn->gamma.green = 1.0;
- priv->pScrn->gamma.blue = 1.0;
- }
-#endif
-
- RedGamma = 1.0 / (double)priv->pScrn->gamma.red;
- GreenGamma = 1.0 / (double)priv->pScrn->gamma.green;
- BlueGamma = 1.0 / (double)priv->pScrn->gamma.blue;
-
- for(i = 0; i <= elements; i++) {
- if(RedGamma == 1.0)
- priv->gamma[i].red = i;
- else
- priv->gamma[i].red = (CARD16)(pow((double)i/(double)elements,
- RedGamma) * (double)elements + 0.5);
-
- if(GreenGamma == 1.0)
- priv->gamma[i].green = i;
- else
- priv->gamma[i].green = (CARD16)(pow((double)i/(double)elements,
- GreenGamma) * (double)elements + 0.5);
-
- if(BlueGamma == 1.0)
- priv->gamma[i].blue = i;
- else
- priv->gamma[i].blue = (CARD16)(pow((double)i/(double)elements,
- BlueGamma) * (double)elements + 0.5);
- }
-}
-
-
-int
-CMapChangeGamma(
- int index,
- Gamma gamma
-){
- ScrnInfoPtr pScrn = xf86Screens[index];
- ScreenPtr pScreen = pScrn->pScreen;
- CMapColormapPtr pColPriv;
- CMapScreenPtr pScreenPriv;
- CMapLinkPtr pLink;
-
- /* Is this sufficient checking ? */
- if(CMapScreenIndex == -1)
- return BadImplementation;
-
- pScreenPriv = (CMapScreenPtr)pScreen->devPrivates[CMapScreenIndex].ptr;
- if(!pScreenPriv)
- return BadImplementation;
-
- if (gamma.red < GAMMA_MIN || gamma.red > GAMMA_MAX ||
- gamma.green < GAMMA_MIN || gamma.green > GAMMA_MAX ||
- gamma.blue < GAMMA_MIN || gamma.blue > GAMMA_MAX)
- return BadValue;
-
- pScrn->gamma.red = gamma.red;
- pScrn->gamma.green = gamma.green;
- pScrn->gamma.blue = gamma.blue;
-
- ComputeGamma(pScreenPriv);
-
- /* mark all colormaps on this screen */
- pLink = pScreenPriv->maps;
- while(pLink) {
- pColPriv =
- (CMapColormapPtr) pLink->cmap->devPrivates[CMapColormapIndex].ptr;
- pColPriv->recalculate = TRUE;
- pLink = pLink->next;
- }
-
- if(miInstalledMaps[pScreen->myNum] &&
- ((pScreenPriv->flags & CMAP_LOAD_EVEN_IF_OFFSCREEN) ||
- pScrn->vtSema || pScreenPriv->isDGAmode)) {
- ColormapPtr pMap = miInstalledMaps[pScreen->myNum];
-
- if (!(pScreenPriv->flags & CMAP_PALETTED_TRUECOLOR) &&
- (pMap->pVisual->class == TrueColor) &&
- CMapColormapUseMax(pMap->pVisual, pScreenPriv)) {
-
- /* if the current map doesn't have a palette look
- for another map to change the gamma on. */
-
- pLink = pScreenPriv->maps;
- while(pLink) {
- if(pLink->cmap->pVisual->class == PseudoColor)
- break;
- pLink = pLink->next;
- }
-
- if(pLink) {
- /* need to trick CMapRefreshColors() into thinking
- this is the currently installed map */
- miInstalledMaps[pScreen->myNum] = pLink->cmap;
- CMapReinstallMap(pLink->cmap);
- miInstalledMaps[pScreen->myNum] = pMap;
- }
- } else
- CMapReinstallMap(pMap);
- }
-
- return Success;
-}
-
-
-static void
-ComputeGammaRamp (
- CMapScreenPtr priv,
- unsigned short *red,
- unsigned short *green,
- unsigned short *blue
-){
- int elements = priv->gammaElements;
- LOCO *entry = priv->gamma;
- int shift = 16 - priv->sigRGBbits;
-
- while(elements--) {
- entry->red = *(red++) >> shift;
- entry->green = *(green++) >> shift;
- entry->blue = *(blue++) >> shift;
- entry++;
- }
-}
-
-int
-xf86ChangeGammaRamp(
- ScreenPtr pScreen,
- int size,
- unsigned short *red,
- unsigned short *green,
- unsigned short *blue
-){
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- CMapColormapPtr pColPriv;
- CMapScreenPtr pScreenPriv;
- CMapLinkPtr pLink;
-
- if(CMapScreenIndex == -1)
- return BadImplementation;
-
- pScreenPriv = (CMapScreenPtr)pScreen->devPrivates[CMapScreenIndex].ptr;
- if(!pScreenPriv)
- return BadImplementation;
-
- if(pScreenPriv->gammaElements != size)
- return BadValue;
-
- ComputeGammaRamp(pScreenPriv, red, green, blue);
-
- /* mark all colormaps on this screen */
- pLink = pScreenPriv->maps;
- while(pLink) {
- pColPriv =
- (CMapColormapPtr) pLink->cmap->devPrivates[CMapColormapIndex].ptr;
- pColPriv->recalculate = TRUE;
- pLink = pLink->next;
- }
-
- if(miInstalledMaps[pScreen->myNum] &&
- ((pScreenPriv->flags & CMAP_LOAD_EVEN_IF_OFFSCREEN) ||
- pScrn->vtSema || pScreenPriv->isDGAmode)) {
- ColormapPtr pMap = miInstalledMaps[pScreen->myNum];
-
- if (!(pScreenPriv->flags & CMAP_PALETTED_TRUECOLOR) &&
- (pMap->pVisual->class == TrueColor) &&
- CMapColormapUseMax(pMap->pVisual, pScreenPriv)) {
-
- /* if the current map doesn't have a palette look
- for another map to change the gamma on. */
-
- pLink = pScreenPriv->maps;
- while(pLink) {
- if(pLink->cmap->pVisual->class == PseudoColor)
- break;
- pLink = pLink->next;
- }
-
- if(pLink) {
- /* need to trick CMapRefreshColors() into thinking
- this is the currently installed map */
- miInstalledMaps[pScreen->myNum] = pLink->cmap;
- CMapReinstallMap(pLink->cmap);
- miInstalledMaps[pScreen->myNum] = pMap;
- }
- } else
- CMapReinstallMap(pMap);
- }
-
- return Success;
-}
-
-int
-xf86GetGammaRampSize(ScreenPtr pScreen)
-{
- CMapScreenPtr pScreenPriv;
-
- if(CMapScreenIndex == -1) return 0;
-
- pScreenPriv = (CMapScreenPtr)pScreen->devPrivates[CMapScreenIndex].ptr;
- if(!pScreenPriv) return 0;
-
- return pScreenPriv->gammaElements;
-}
-
-int
-xf86GetGammaRamp(
- ScreenPtr pScreen,
- int size,
- unsigned short *red,
- unsigned short *green,
- unsigned short *blue
-){
- CMapScreenPtr pScreenPriv;
- LOCO *entry;
- int shift, sigbits;
-
- if(CMapScreenIndex == -1)
- return BadImplementation;
-
- pScreenPriv = (CMapScreenPtr)pScreen->devPrivates[CMapScreenIndex].ptr;
- if(!pScreenPriv)
- return BadImplementation;
-
- if(size > pScreenPriv->gammaElements)
- return BadValue;
-
- entry = pScreenPriv->gamma;
- sigbits = pScreenPriv->sigRGBbits;
-
- while(size--) {
- *red = entry->red << (16 - sigbits);
- *green = entry->green << (16 - sigbits);
- *blue = entry->blue << (16 - sigbits);
- shift = sigbits;
- while(shift < 16) {
- *red |= *red >> shift;
- *green |= *green >> shift;
- *blue |= *blue >> shift;
- shift += sigbits;
- }
- red++; green++; blue++;
- entry++;
- }
-
- return Success;
-}
-
-int
-xf86ChangeGamma(
- ScreenPtr pScreen,
- Gamma gamma
-){
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
-
- if(pScrn->ChangeGamma)
- return (*pScrn->ChangeGamma)(pScreen->myNum, gamma);
-
- return Success; /* Success? */
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86cmap.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86cmap.h
deleted file mode 100644
index 4291b971a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86cmap.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86cmap.h,v 1.9 2003/10/17 20:02:12 alanh Exp $ */
-
-/*
- * Copyright (c) 1998-2001 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifndef _XF86CMAP_H
-#define _XF86CMAP_H
-
-#include "xf86str.h"
-#include "colormapst.h"
-
-#define CMAP_PALETTED_TRUECOLOR 0x0000001
-#define CMAP_RELOAD_ON_MODE_SWITCH 0x0000002
-#define CMAP_LOAD_EVEN_IF_OFFSCREEN 0x0000004
-
-Bool xf86HandleColormaps(
- ScreenPtr pScreen,
- int maxCol,
- int sigRGBbits,
- xf86LoadPaletteProc *loadPalette,
- xf86SetOverscanProc *setOverscan,
- unsigned int flags
-);
-
-int
-xf86ChangeGamma(
- ScreenPtr pScreen,
- Gamma newGamma
-);
-
-int
-xf86ChangeGammaRamp(
- ScreenPtr pScreen,
- int size,
- unsigned short *red,
- unsigned short *green,
- unsigned short *blue
-);
-
-int xf86GetGammaRampSize(ScreenPtr pScreen);
-
-int
-xf86GetGammaRamp(
- ScreenPtr pScreen,
- int size,
- unsigned short *red,
- unsigned short *green,
- unsigned short *blue
-);
-
-#endif /* _XF86CMAP_H */
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86fbBus.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86fbBus.c
deleted file mode 100644
index 28a65302d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86fbBus.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86fbBus.c,v 1.3 2003/08/24 17:36:55 dawes Exp $ */
-
-/*
- * Copyright (c) 2000-2001 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains the interfaces to the bus-specific code
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Resources.h"
-
-#include "xf86Bus.h"
-
-#define XF86_OS_PRIVS
-#define NEED_OS_RAC_PROTOS
-#include "xf86_OSproc.h"
-
-#include "xf86RAC.h"
-
-Bool fbSlotClaimed = FALSE;
-
-int
-xf86ClaimFbSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
-{
- EntityPtr p;
- int num;
-
- num = xf86AllocateEntity();
- p = xf86Entities[num];
- p->driver = drvp;
- p->chipset = 0;
- p->busType = BUS_NONE;
- p->active = active;
- p->inUse = FALSE;
- xf86AddDevToEntity(num, dev);
- p->access = xnfcalloc(1,sizeof(EntityAccessRec));
- p->access->fallback = &AccessNULL;
- p->access->pAccess = &AccessNULL;
- p->busAcc = NULL;
-
- fbSlotClaimed = TRUE;
- return num;
-}
-
-/*
- * Get the list of FB "slots" claimed by a screen
- */
-int
-xf86GetFbInfoForScreen(int scrnIndex)
-{
- int num = 0;
- int i;
- EntityPtr p;
-
- for (i = 0; i < xf86Screens[scrnIndex]->numEntities; i++) {
- p = xf86Entities[xf86Screens[scrnIndex]->entityList[i]];
- if (p->busType == BUS_NONE) {
- num++;
- }
- }
- return num;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86fbman.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86fbman.c
deleted file mode 100644
index 31c84c49f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86fbman.c
+++ /dev/null
@@ -1,1445 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86fbman.c,v 1.28 2003/11/03 05:11:03 tsi Exp $ */
-
-/*
- * Copyright (c) 1998-2001 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "misc.h"
-#include "xf86.h"
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "regionstr.h"
-#include "xf86fbman.h"
-
-/*
-#define DEBUG
-*/
-
-static int xf86FBMangerIndex = -1;
-static unsigned long xf86ManagerGeneration = 0;
-
-Bool xf86RegisterOffscreenManager(
- ScreenPtr pScreen,
- FBManagerFuncsPtr funcs
-){
-
- if(xf86ManagerGeneration != serverGeneration) {
- if((xf86FBMangerIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- xf86ManagerGeneration = serverGeneration;
- }
-
- pScreen->devPrivates[xf86FBMangerIndex].ptr = (pointer)funcs;
-
- return TRUE;
-}
-
-
-Bool
-xf86FBManagerRunning(ScreenPtr pScreen)
-{
- if(xf86FBMangerIndex < 0)
- return FALSE;
- if(!pScreen->devPrivates[xf86FBMangerIndex].ptr)
- return FALSE;
-
- return TRUE;
-}
-
-Bool
-xf86RegisterFreeBoxCallback(
- ScreenPtr pScreen,
- FreeBoxCallbackProcPtr FreeBoxCallback,
- pointer devPriv
-){
- FBManagerFuncsPtr funcs;
-
- if(xf86FBMangerIndex < 0)
- return FALSE;
- if(!(funcs = (FBManagerFuncsPtr)pScreen->devPrivates[xf86FBMangerIndex].ptr))
- return FALSE;
-
- return (*funcs->RegisterFreeBoxCallback)(pScreen, FreeBoxCallback, devPriv);
-}
-
-
-FBAreaPtr
-xf86AllocateOffscreenArea(
- ScreenPtr pScreen,
- int w, int h,
- int gran,
- MoveAreaCallbackProcPtr moveCB,
- RemoveAreaCallbackProcPtr removeCB,
- pointer privData
-){
- FBManagerFuncsPtr funcs;
-
- if(xf86FBMangerIndex < 0)
- return NULL;
- if(!(funcs = (FBManagerFuncsPtr)pScreen->devPrivates[xf86FBMangerIndex].ptr))
- return NULL;
-
- return (*funcs->AllocateOffscreenArea)(
- pScreen, w, h, gran, moveCB, removeCB, privData);
-}
-
-
-FBLinearPtr
-xf86AllocateOffscreenLinear(
- ScreenPtr pScreen,
- int length,
- int gran,
- MoveLinearCallbackProcPtr moveCB,
- RemoveLinearCallbackProcPtr removeCB,
- pointer privData
-){
- FBManagerFuncsPtr funcs;
-
- if(xf86FBMangerIndex < 0)
- return NULL;
- if(!(funcs = (FBManagerFuncsPtr)pScreen->devPrivates[xf86FBMangerIndex].ptr))
- return NULL;
-
- return (*funcs->AllocateOffscreenLinear)(
- pScreen, length, gran, moveCB, removeCB, privData);
-}
-
-
-void
-xf86FreeOffscreenArea(FBAreaPtr area)
-{
- FBManagerFuncsPtr funcs;
-
- if(!area) return;
-
- if(xf86FBMangerIndex < 0)
- return;
- if(!(funcs =
- (FBManagerFuncsPtr)area->pScreen->devPrivates[xf86FBMangerIndex].ptr))
- return;
-
- (*funcs->FreeOffscreenArea)(area);
-
- return;
-}
-
-
-void
-xf86FreeOffscreenLinear(FBLinearPtr linear)
-{
- FBManagerFuncsPtr funcs;
-
- if(!linear) return;
-
- if(xf86FBMangerIndex < 0)
- return;
- if(!(funcs =
- (FBManagerFuncsPtr)linear->pScreen->devPrivates[xf86FBMangerIndex].ptr))
- return;
-
- (*funcs->FreeOffscreenLinear)(linear);
-
- return;
-}
-
-
-Bool
-xf86ResizeOffscreenArea(
- FBAreaPtr resize,
- int w, int h
-){
- FBManagerFuncsPtr funcs;
-
- if(!resize) return FALSE;
-
- if(xf86FBMangerIndex < 0)
- return FALSE;
- if(!(funcs =
- (FBManagerFuncsPtr)resize->pScreen->devPrivates[xf86FBMangerIndex].ptr))
- return FALSE;
-
- return (*funcs->ResizeOffscreenArea)(resize, w, h);
-}
-
-Bool
-xf86ResizeOffscreenLinear(
- FBLinearPtr resize,
- int size
-){
- FBManagerFuncsPtr funcs;
-
- if(!resize) return FALSE;
-
- if(xf86FBMangerIndex < 0)
- return FALSE;
- if(!(funcs =
- (FBManagerFuncsPtr)resize->pScreen->devPrivates[xf86FBMangerIndex].ptr))
- return FALSE;
-
- return (*funcs->ResizeOffscreenLinear)(resize, size);
-}
-
-
-Bool
-xf86QueryLargestOffscreenArea(
- ScreenPtr pScreen,
- int *w, int *h,
- int gran,
- int preferences,
- int severity
-){
- FBManagerFuncsPtr funcs;
-
- *w = 0;
- *h = 0;
-
- if(xf86FBMangerIndex < 0)
- return FALSE;
- if(!(funcs = (FBManagerFuncsPtr)pScreen->devPrivates[xf86FBMangerIndex].ptr))
- return FALSE;
-
- return (*funcs->QueryLargestOffscreenArea)(
- pScreen, w, h, gran, preferences, severity);
-}
-
-Bool
-xf86QueryLargestOffscreenLinear(
- ScreenPtr pScreen,
- int *size,
- int gran,
- int severity
-){
- FBManagerFuncsPtr funcs;
-
- *size = 0;
-
- if(xf86FBMangerIndex < 0)
- return FALSE;
- if(!(funcs = (FBManagerFuncsPtr)pScreen->devPrivates[xf86FBMangerIndex].ptr))
- return FALSE;
-
- return (*funcs->QueryLargestOffscreenLinear)(
- pScreen, size, gran, severity);
-}
-
-
-Bool
-xf86PurgeUnlockedOffscreenAreas(ScreenPtr pScreen)
-{
- FBManagerFuncsPtr funcs;
-
- if(xf86FBMangerIndex < 0)
- return FALSE;
- if(!(funcs = (FBManagerFuncsPtr)pScreen->devPrivates[xf86FBMangerIndex].ptr))
- return FALSE;
-
- return (*funcs->PurgeOffscreenAreas)(pScreen);
-}
-
-/************************************************************\
-
- Below is a specific implementation of an offscreen manager.
-
-\************************************************************/
-
-static unsigned long xf86FBGeneration = 0;
-static int xf86FBScreenIndex = -1;
-
-typedef struct _FBLink {
- FBArea area;
- struct _FBLink *next;
-} FBLink, *FBLinkPtr;
-
-typedef struct _FBLinearLink {
- FBLinear linear;
- int free; /* need to add free here as FBLinear is publicly accessible */
- FBAreaPtr area; /* only used if allocation came from XY area */
- struct _FBLinearLink *next;
-} FBLinearLink, *FBLinearLinkPtr;
-
-
-typedef struct {
- ScreenPtr pScreen;
- RegionPtr InitialBoxes;
- RegionPtr FreeBoxes;
- FBLinkPtr UsedAreas;
- int NumUsedAreas;
- FBLinearLinkPtr LinearAreas;
- CloseScreenProcPtr CloseScreen;
- int NumCallbacks;
- FreeBoxCallbackProcPtr *FreeBoxesUpdateCallback;
- DevUnion *devPrivates;
-} FBManager, *FBManagerPtr;
-
-
-static void
-SendCallFreeBoxCallbacks(FBManagerPtr offman)
-{
- int i = offman->NumCallbacks;
-
- while(i--) {
- (*offman->FreeBoxesUpdateCallback[i])(
- offman->pScreen, offman->FreeBoxes, offman->devPrivates[i].ptr);
- }
-}
-
-static Bool
-localRegisterFreeBoxCallback(
- ScreenPtr pScreen,
- FreeBoxCallbackProcPtr FreeBoxCallback,
- pointer devPriv
-){
- FBManagerPtr offman;
- FreeBoxCallbackProcPtr *newCallbacks;
- DevUnion *newPrivates;
-
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
- newCallbacks = xrealloc( offman->FreeBoxesUpdateCallback,
- sizeof(FreeBoxCallbackProcPtr) * (offman->NumCallbacks + 1));
-
- newPrivates = xrealloc(offman->devPrivates,
- sizeof(DevUnion) * (offman->NumCallbacks + 1));
-
- if(!newCallbacks || !newPrivates)
- return FALSE;
-
- offman->FreeBoxesUpdateCallback = newCallbacks;
- offman->devPrivates = newPrivates;
-
- offman->FreeBoxesUpdateCallback[offman->NumCallbacks] = FreeBoxCallback;
- offman->devPrivates[offman->NumCallbacks].ptr = devPriv;
- offman->NumCallbacks++;
-
- SendCallFreeBoxCallbacks(offman);
-
- return TRUE;
-}
-
-
-static FBAreaPtr
-AllocateArea(
- FBManagerPtr offman,
- int w, int h,
- int granularity,
- MoveAreaCallbackProcPtr moveCB,
- RemoveAreaCallbackProcPtr removeCB,
- pointer privData
-){
- ScreenPtr pScreen = offman->pScreen;
- FBLinkPtr link = NULL;
- FBAreaPtr area = NULL;
- RegionRec NewReg;
- int i, x = 0, num;
- BoxPtr boxp;
-
- if(granularity <= 1) granularity = 0;
-
- boxp = REGION_RECTS(offman->FreeBoxes);
- num = REGION_NUM_RECTS(offman->FreeBoxes);
-
- /* look through the free boxes */
- for(i = 0; i < num; i++, boxp++) {
- x = boxp->x1;
- if(granularity) {
- int tmp = x % granularity;
- if(tmp) x += (granularity - tmp);
- }
-
- if(((boxp->y2 - boxp->y1) < h) || ((boxp->x2 - x) < w))
- continue;
-
- link = xalloc(sizeof(FBLink));
- if(!link) return NULL;
-
- area = &(link->area);
- link->next = offman->UsedAreas;
- offman->UsedAreas = link;
- offman->NumUsedAreas++;
- break;
- }
-
- /* try to boot a removeable one out if we are not expendable ourselves */
- if(!area && !removeCB) {
- link = offman->UsedAreas;
-
- while(link) {
- if(!link->area.RemoveAreaCallback) {
- link = link->next;
- continue;
- }
-
- boxp = &(link->area.box);
- x = boxp->x1;
- if(granularity) {
- int tmp = x % granularity;
- if(tmp) x += (granularity - tmp);
- }
-
- if(((boxp->y2 - boxp->y1) < h) || ((boxp->x2 - x) < w)) {
- link = link->next;
- continue;
- }
-
- /* bye, bye */
- (*link->area.RemoveAreaCallback)(&link->area);
- REGION_INIT(pScreen, &NewReg, &(link->area.box), 1);
- REGION_UNION(pScreen, offman->FreeBoxes, offman->FreeBoxes, &NewReg);
- REGION_UNINIT(pScreen, &NewReg);
-
- area = &(link->area);
- break;
- }
- }
-
- if(area) {
- area->pScreen = pScreen;
- area->granularity = granularity;
- area->box.x1 = x;
- area->box.x2 = x + w;
- area->box.y1 = boxp->y1;
- area->box.y2 = boxp->y1 + h;
- area->MoveAreaCallback = moveCB;
- area->RemoveAreaCallback = removeCB;
- area->devPrivate.ptr = privData;
-
- REGION_INIT(pScreen, &NewReg, &(area->box), 1);
- REGION_SUBTRACT(pScreen, offman->FreeBoxes, offman->FreeBoxes, &NewReg);
- REGION_UNINIT(pScreen, &NewReg);
- }
-
- return area;
-}
-
-static FBAreaPtr
-localAllocateOffscreenArea(
- ScreenPtr pScreen,
- int w, int h,
- int gran,
- MoveAreaCallbackProcPtr moveCB,
- RemoveAreaCallbackProcPtr removeCB,
- pointer privData
-){
- FBManagerPtr offman;
- FBAreaPtr area = NULL;
-
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
- if((area = AllocateArea(offman, w, h, gran, moveCB, removeCB, privData)))
- SendCallFreeBoxCallbacks(offman);
-
- return area;
-}
-
-
-static void
-localFreeOffscreenArea(FBAreaPtr area)
-{
- FBManagerPtr offman;
- FBLinkPtr pLink, pLinkPrev = NULL;
- RegionRec FreedRegion;
- ScreenPtr pScreen;
-
- pScreen = area->pScreen;
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
- pLink = offman->UsedAreas;
- if(!pLink) return;
-
- while(&(pLink->area) != area) {
- pLinkPrev = pLink;
- pLink = pLink->next;
- if(!pLink) return;
- }
-
- /* put the area back into the pool */
- REGION_INIT(pScreen, &FreedRegion, &(pLink->area.box), 1);
- REGION_UNION(pScreen, offman->FreeBoxes, offman->FreeBoxes, &FreedRegion);
- REGION_UNINIT(pScreen, &FreedRegion);
-
- if(pLinkPrev)
- pLinkPrev->next = pLink->next;
- else offman->UsedAreas = pLink->next;
-
- xfree(pLink);
- offman->NumUsedAreas--;
-
- SendCallFreeBoxCallbacks(offman);
-}
-
-
-
-static Bool
-localResizeOffscreenArea(
- FBAreaPtr resize,
- int w, int h
-){
- FBManagerPtr offman;
- ScreenPtr pScreen;
- BoxRec OrigArea;
- RegionRec FreedReg;
- FBAreaPtr area = NULL;
- FBLinkPtr pLink, newLink, pLinkPrev = NULL;
-
- pScreen = resize->pScreen;
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
- /* find this link */
- if(!(pLink = offman->UsedAreas))
- return FALSE;
-
- while(&(pLink->area) != resize) {
- pLinkPrev = pLink;
- pLink = pLink->next;
- if(!pLink) return FALSE;
- }
-
- OrigArea.x1 = resize->box.x1;
- OrigArea.x2 = resize->box.x2;
- OrigArea.y1 = resize->box.y1;
- OrigArea.y2 = resize->box.y2;
-
- /* if it's smaller, this is easy */
-
- if((w <= (resize->box.x2 - resize->box.x1)) &&
- (h <= (resize->box.y2 - resize->box.y1))) {
- RegionRec NewReg;
-
- resize->box.x2 = resize->box.x1 + w;
- resize->box.y2 = resize->box.y1 + h;
-
- if((resize->box.y2 == OrigArea.y2) &&
- (resize->box.x2 == OrigArea.x2))
- return TRUE;
-
- REGION_INIT(pScreen, &FreedReg, &OrigArea, 1);
- REGION_INIT(pScreen, &NewReg, &(resize->box), 1);
- REGION_SUBTRACT(pScreen, &FreedReg, &FreedReg, &NewReg);
- REGION_UNION(pScreen, offman->FreeBoxes, offman->FreeBoxes, &FreedReg);
- REGION_UNINIT(pScreen, &FreedReg);
- REGION_UNINIT(pScreen, &NewReg);
-
- SendCallFreeBoxCallbacks(offman);
-
- return TRUE;
- }
-
-
- /* otherwise we remove the old region */
-
- REGION_INIT(pScreen, &FreedReg, &OrigArea, 1);
- REGION_UNION(pScreen, offman->FreeBoxes, offman->FreeBoxes, &FreedReg);
-
- /* remove the old link */
- if(pLinkPrev)
- pLinkPrev->next = pLink->next;
- else offman->UsedAreas = pLink->next;
-
- /* and try to add a new one */
-
- if((area = AllocateArea(offman, w, h, resize->granularity,
- resize->MoveAreaCallback, resize->RemoveAreaCallback,
- resize->devPrivate.ptr))) {
-
- /* copy data over to our link and replace the new with old */
- memcpy(resize, area, sizeof(FBArea));
-
- pLinkPrev = NULL;
- newLink = offman->UsedAreas;
-
- while(&(newLink->area) != area) {
- pLinkPrev = newLink;
- newLink = newLink->next;
- }
-
- if(pLinkPrev)
- pLinkPrev->next = newLink->next;
- else offman->UsedAreas = newLink->next;
-
- pLink->next = offman->UsedAreas;
- offman->UsedAreas = pLink;
-
- xfree(newLink);
-
- /* AllocateArea added one but we really only exchanged one */
- offman->NumUsedAreas--;
- } else {
- /* reinstate the old region */
- REGION_SUBTRACT(pScreen, offman->FreeBoxes, offman->FreeBoxes, &FreedReg);
- REGION_UNINIT(pScreen, &FreedReg);
-
- pLink->next = offman->UsedAreas;
- offman->UsedAreas = pLink;
- return FALSE;
- }
-
-
- REGION_UNINIT(pScreen, &FreedReg);
-
- SendCallFreeBoxCallbacks(offman);
-
- return TRUE;
-}
-
-static Bool
-localQueryLargestOffscreenArea(
- ScreenPtr pScreen,
- int *width, int *height,
- int granularity,
- int preferences,
- int severity
-){
- FBManagerPtr offman;
- RegionPtr newRegion = NULL;
- BoxPtr pbox;
- int nbox;
- int x, w, h, area, oldArea;
-
- *width = *height = oldArea = 0;
-
- if(granularity <= 1) granularity = 0;
-
- if((preferences < 0) || (preferences > 3))
- return FALSE;
-
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
- if(severity < 0) severity = 0;
- if(severity > 2) severity = 2;
-
- switch(severity) {
- case 2:
- if(offman->NumUsedAreas) {
- FBLinkPtr pLink;
- RegionRec tmpRegion;
- newRegion = REGION_CREATE(pScreen, NULL, 1);
- REGION_COPY(pScreen, newRegion, offman->InitialBoxes);
- pLink = offman->UsedAreas;
-
- while(pLink) {
- if(!pLink->area.RemoveAreaCallback) {
- REGION_INIT(pScreen, &tmpRegion, &(pLink->area.box), 1);
- REGION_SUBTRACT(pScreen, newRegion, newRegion, &tmpRegion);
- REGION_UNINIT(pScreen, &tmpRegion);
- }
- pLink = pLink->next;
- }
-
- nbox = REGION_NUM_RECTS(newRegion);
- pbox = REGION_RECTS(newRegion);
- break;
- }
- case 1:
- if(offman->NumUsedAreas) {
- FBLinkPtr pLink;
- RegionRec tmpRegion;
- newRegion = REGION_CREATE(pScreen, NULL, 1);
- REGION_COPY(pScreen, newRegion, offman->FreeBoxes);
- pLink = offman->UsedAreas;
-
- while(pLink) {
- if(pLink->area.RemoveAreaCallback) {
- REGION_INIT(pScreen, &tmpRegion, &(pLink->area.box), 1);
- REGION_APPEND(pScreen, newRegion, &tmpRegion);
- REGION_UNINIT(pScreen, &tmpRegion);
- }
- pLink = pLink->next;
- }
-
- nbox = REGION_NUM_RECTS(newRegion);
- pbox = REGION_RECTS(newRegion);
- break;
- }
- default:
- nbox = REGION_NUM_RECTS(offman->FreeBoxes);
- pbox = REGION_RECTS(offman->FreeBoxes);
- break;
- }
-
- while(nbox--) {
- x = pbox->x1;
- if(granularity) {
- int tmp = x % granularity;
- if(tmp) x += (granularity - tmp);
- }
-
- w = pbox->x2 - x;
- h = pbox->y2 - pbox->y1;
- area = w * h;
-
- if(w > 0) {
- Bool gotIt = FALSE;
- switch(preferences) {
- case FAVOR_AREA_THEN_WIDTH:
- if((area > oldArea) || ((area == oldArea) && (w > *width)))
- gotIt = TRUE;
- break;
- case FAVOR_AREA_THEN_HEIGHT:
- if((area > oldArea) || ((area == oldArea) && (h > *height)))
- gotIt = TRUE;
- break;
- case FAVOR_WIDTH_THEN_AREA:
- if((w > *width) || ((w == *width) && (area > oldArea)))
- gotIt = TRUE;
- break;
- case FAVOR_HEIGHT_THEN_AREA:
- if((h > *height) || ((h == *height) && (area > oldArea)))
- gotIt = TRUE;
- break;
- }
- if(gotIt) {
- *width = w;
- *height = h;
- oldArea = area;
- }
- }
- pbox++;
- }
-
- if(newRegion)
- REGION_DESTROY(pScreen, newRegion);
-
- return TRUE;
-}
-
-static Bool
-localPurgeUnlockedOffscreenAreas(ScreenPtr pScreen)
-{
- FBManagerPtr offman;
- FBLinkPtr pLink, tmp, pPrev = NULL;
- RegionRec FreedRegion;
- Bool anyUsed = FALSE;
-
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
- pLink = offman->UsedAreas;
- if(!pLink) return TRUE;
-
- while(pLink) {
- if(pLink->area.RemoveAreaCallback) {
- (*pLink->area.RemoveAreaCallback)(&pLink->area);
-
- REGION_INIT(pScreen, &FreedRegion, &(pLink->area.box), 1);
- REGION_APPEND(pScreen, offman->FreeBoxes, &FreedRegion);
- REGION_UNINIT(pScreen, &FreedRegion);
-
- if(pPrev)
- pPrev->next = pLink->next;
- else offman->UsedAreas = pLink->next;
-
- tmp = pLink;
- pLink = pLink->next;
- xfree(tmp);
- offman->NumUsedAreas--;
- anyUsed = TRUE;
- } else {
- pPrev = pLink;
- pLink = pLink->next;
- }
- }
-
- if(anyUsed) {
- REGION_VALIDATE(pScreen, offman->FreeBoxes, &anyUsed);
- SendCallFreeBoxCallbacks(offman);
- }
-
- return TRUE;
-}
-
-static void
-LinearMoveCBWrapper(FBAreaPtr from, FBAreaPtr to)
-{
- /* this will never get called */
-}
-
-static void
-LinearRemoveCBWrapper(FBAreaPtr area)
-{
- FBManagerPtr offman;
- FBLinearLinkPtr pLink, pLinkPrev = NULL;
- ScreenPtr pScreen = area->pScreen;
-
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
- pLink = offman->LinearAreas;
- if(!pLink) return;
-
- while(pLink->area != area) {
- pLinkPrev = pLink;
- pLink = pLink->next;
- if(!pLink) return;
- }
-
- /* give the user the callback it is expecting */
- (*pLink->linear.RemoveLinearCallback)(&(pLink->linear));
-
- if(pLinkPrev)
- pLinkPrev->next = pLink->next;
- else offman->LinearAreas = pLink->next;
-
- xfree(pLink);
-}
-
-#ifdef DEBUG
-static void
-Dump(FBLinearLinkPtr pLink)
-{
- if (!pLink) ErrorF("MMmm, PLINK IS NULL!\n");
-
- while (pLink) {
- ErrorF(" Offset:%08x, Size:%08x, %s,%s\n",
- pLink->linear.offset,
- pLink->linear.size,
- pLink->free ? "Free" : "Used",
- pLink->area ? "Area" : "Linear");
-
- pLink = pLink->next;
- }
-}
-#endif
-
-static FBLinearPtr
-AllocateLinear(
- FBManagerPtr offman,
- int size,
- int granularity,
- pointer privData
-){
- ScreenPtr pScreen = offman->pScreen;
- FBLinearLinkPtr linear = NULL;
- FBLinearLinkPtr newlink = NULL;
- int offset, end;
-
- if(size <= 0) return NULL;
-
- if (!offman->LinearAreas) return NULL;
-
- linear = offman->LinearAreas;
- while (linear) {
- /* Make sure we get a free area that's not an XY fallback case */
- if (!linear->area && linear->free) {
- offset = (linear->linear.offset + granularity) & ~granularity;
- end = offset+size;
- if (end <= (linear->linear.offset + linear->linear.size))
- break;
- }
- linear = linear->next;
- }
- if (!linear)
- return NULL;
-
- /* break left */
- if (offset > linear->linear.offset) {
- newlink = xalloc(sizeof(FBLinearLink));
- if (!newlink)
- return NULL;
- newlink->area = NULL;
- newlink->linear.offset = offset;
- newlink->linear.size = linear->linear.size - (offset - linear->linear.offset);
- newlink->free = 1;
- newlink->next = linear->next;
- linear->linear.size -= newlink->linear.size;
- linear->next = newlink;
- linear = newlink;
- }
-
- /* break right */
- if (size < linear->linear.size) {
- newlink = xalloc(sizeof(FBLinearLink));
- if (!newlink)
- return NULL;
- newlink->area = NULL;
- newlink->linear.offset = offset + size;
- newlink->linear.size = linear->linear.size - size;
- newlink->free = 1;
- newlink->next = linear->next;
- linear->linear.size = size;
- linear->next = newlink;
- }
-
- /* p = middle block */
- linear->linear.granularity = granularity;
- linear->free = 0;
- linear->linear.pScreen = pScreen;
- linear->linear.MoveLinearCallback = NULL;
- linear->linear.RemoveLinearCallback = NULL;
- linear->linear.devPrivate.ptr = NULL;
-
-#ifdef DEBUG
- Dump(offman->LinearAreas);
-#endif
-
- return &(linear->linear);
-}
-
-static FBLinearPtr
-localAllocateOffscreenLinear(
- ScreenPtr pScreen,
- int length,
- int gran,
- MoveLinearCallbackProcPtr moveCB,
- RemoveLinearCallbackProcPtr removeCB,
- pointer privData
-){
- FBManagerPtr offman;
- FBLinearLinkPtr link;
- FBAreaPtr area;
- FBLinearPtr linear = NULL;
- BoxPtr extents;
- int w, h, pitch;
-
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
- /* Try to allocate from linear memory first...... */
-#ifdef DEBUG
- ErrorF("ALLOCATING LINEAR\n");
-#endif
- if ((linear = AllocateLinear(offman, length, gran, privData)))
- return linear;
-
-#ifdef DEBUG
- ErrorF("NOPE, ALLOCATING AREA\n");
-#endif
-
- if(!(link = xalloc(sizeof(FBLinearLink))))
- return NULL;
-
- /* No linear available, so try and pinch some from the XY areas */
- extents = REGION_EXTENTS(pScreen, offman->InitialBoxes);
- pitch = extents->x2 - extents->x1;
-
- if(gran && ((gran > pitch) || (pitch % gran))) {
- /* we can't match the specified alignment with XY allocations */
- xfree(link);
- return NULL;
- }
-
- if(length < pitch) { /* special case */
- w = length;
- h = 1;
- } else {
- w = pitch;
- h = (length + pitch - 1) / pitch;
- }
-
- if((area = localAllocateOffscreenArea(pScreen, w, h, gran,
- moveCB ? LinearMoveCBWrapper : NULL,
- removeCB ? LinearRemoveCBWrapper : NULL,
- privData)))
- {
- link->area = area;
- link->free = 0;
- link->next = offman->LinearAreas;
- offman->LinearAreas = link;
- linear = &(link->linear);
- linear->pScreen = pScreen;
- linear->size = h * w;
- linear->offset = (pitch * area->box.y1) + area->box.x1;
- linear->granularity = gran;
- linear->MoveLinearCallback = moveCB;
- linear->RemoveLinearCallback = removeCB;
- linear->devPrivate.ptr = privData;
- } else
- xfree(link);
-
-#ifdef DEBUG
- Dump(offman->LinearAreas);
-#endif
-
- return linear;
-}
-
-
-static void
-localFreeOffscreenLinear(FBLinearPtr linear)
-{
- FBManagerPtr offman;
- FBLinearLinkPtr pLink, pLinkPrev = NULL;
- ScreenPtr pScreen = linear->pScreen;
-
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
- pLink = offman->LinearAreas;
- if(!pLink) return;
-
- while(&(pLink->linear) != linear) {
- pLinkPrev = pLink;
- pLink = pLink->next;
- if(!pLink) return;
- }
-
- if(pLink->area) { /* really an XY area */
-#ifdef DEBUG
- ErrorF("FREEING AREA\n");
-#endif
- localFreeOffscreenArea(pLink->area);
- if(pLinkPrev)
- pLinkPrev->next = pLink->next;
- else offman->LinearAreas = pLink->next;
- xfree(pLink);
-#ifdef DEBUG
- Dump(offman->LinearAreas);
-#endif
- return;
- }
-
- pLink->free = 1;
-
- if (pLink->next && pLink->next->free) {
- FBLinearLinkPtr p = pLink->next;
- pLink->linear.size += p->linear.size;
- pLink->next = p->next;
- free(p);
- }
-
- if(pLinkPrev) {
- if (pLinkPrev->next && pLinkPrev->next->free && !pLinkPrev->area) {
- FBLinearLinkPtr p = pLinkPrev->next;
- pLinkPrev->linear.size += p->linear.size;
- pLinkPrev->next = p->next;
- free(p);
- }
- }
-
-#ifdef DEBUG
- ErrorF("FREEING LINEAR\n");
- Dump(offman->LinearAreas);
-#endif
-}
-
-
-static Bool
-localResizeOffscreenLinear(FBLinearPtr resize, int length)
-{
- FBManagerPtr offman;
- FBLinearLinkPtr pLink;
- ScreenPtr pScreen = resize->pScreen;
-
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
- pLink = offman->LinearAreas;
- if(!pLink) return FALSE;
-
- while(&(pLink->linear) != resize) {
- pLink = pLink->next;
- if(!pLink) return FALSE;
- }
-
- /* This could actually be alot smarter and try to move allocations
- from XY to linear when available. For now if it was XY, we keep
- it XY */
-
- if(pLink->area) { /* really an XY area */
- BoxPtr extents;
- int pitch, w, h;
-
- extents = REGION_EXTENTS(pScreen, offman->InitialBoxes);
- pitch = extents->x2 - extents->x1;
-
- if(length < pitch) { /* special case */
- w = length;
- h = 1;
- } else {
- w = pitch;
- h = (length + pitch - 1) / pitch;
- }
-
- if(localResizeOffscreenArea(pLink->area, w, h)) {
- resize->size = h * w;
- resize->offset = (pitch * pLink->area->box.y1) + pLink->area->box.x1;
- return TRUE;
- }
- } else {
- /* TODO!!!! resize the linear area */
- }
-
- return FALSE;
-}
-
-
-static Bool
-localQueryLargestOffscreenLinear(
- ScreenPtr pScreen,
- int *size,
- int gran,
- int priority
-)
-{
- FBManagerPtr offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
- FBLinearLinkPtr pLink;
- FBLinearLinkPtr pLinkRet;
-
- *size = 0;
-
- pLink = offman->LinearAreas;
-
- if (pLink && !pLink->area) {
- pLinkRet = pLink;
- while (pLink) {
- if (pLink->free) {
- if (pLink->linear.size > pLinkRet->linear.size)
- pLinkRet = pLink;
- }
- pLink = pLink->next;
- }
-
- if (pLinkRet->free) {
- *size = pLinkRet->linear.size;
- return TRUE;
- }
- } else {
- int w, h;
-
- if(localQueryLargestOffscreenArea(pScreen, &w, &h, gran,
- FAVOR_WIDTH_THEN_AREA, priority))
- {
- FBManagerPtr offman;
- BoxPtr extents;
-
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
- extents = REGION_EXTENTS(pScreen, offman->InitialBoxes);
- if((extents->x2 - extents->x1) == w)
- *size = w * h;
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-
-static FBManagerFuncs xf86FBManFuncs = {
- localAllocateOffscreenArea,
- localFreeOffscreenArea,
- localResizeOffscreenArea,
- localQueryLargestOffscreenArea,
- localRegisterFreeBoxCallback,
- localAllocateOffscreenLinear,
- localFreeOffscreenLinear,
- localResizeOffscreenLinear,
- localQueryLargestOffscreenLinear,
- localPurgeUnlockedOffscreenAreas
- };
-
-
-static Bool
-xf86FBCloseScreen (int i, ScreenPtr pScreen)
-{
- FBLinkPtr pLink, tmp;
- FBLinearLinkPtr pLinearLink, tmp2;
- FBManagerPtr offman =
- (FBManagerPtr) pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
-
- pScreen->CloseScreen = offman->CloseScreen;
-
- pLink = offman->UsedAreas;
- while(pLink) {
- tmp = pLink;
- pLink = pLink->next;
- xfree(tmp);
- }
-
- pLinearLink = offman->LinearAreas;
- while(pLinearLink) {
- tmp2 = pLinearLink;
- pLinearLink = pLinearLink->next;
- xfree(tmp2);
- }
-
- REGION_DESTROY(pScreen, offman->InitialBoxes);
- REGION_DESTROY(pScreen, offman->FreeBoxes);
-
- xfree(offman->FreeBoxesUpdateCallback);
- xfree(offman->devPrivates);
- xfree(offman);
- pScreen->devPrivates[xf86FBScreenIndex].ptr = NULL;
-
- return (*pScreen->CloseScreen) (i, pScreen);
-}
-
-Bool
-xf86InitFBManager(
- ScreenPtr pScreen,
- BoxPtr FullBox
-){
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- RegionRec ScreenRegion;
- RegionRec FullRegion;
- BoxRec ScreenBox;
- Bool ret;
-
- ScreenBox.x1 = 0;
- ScreenBox.y1 = 0;
- ScreenBox.x2 = pScrn->virtualX;
- ScreenBox.y2 = pScrn->virtualY;
-
- if((FullBox->x1 > ScreenBox.x1) || (FullBox->y1 > ScreenBox.y1) ||
- (FullBox->x2 < ScreenBox.x2) || (FullBox->y2 < ScreenBox.y2)) {
- return FALSE;
- }
-
- if (FullBox->y2 < FullBox->y1) return FALSE;
- if (FullBox->x2 < FullBox->x2) return FALSE;
-
- REGION_INIT(pScreen, &ScreenRegion, &ScreenBox, 1);
- REGION_INIT(pScreen, &FullRegion, FullBox, 1);
-
- REGION_SUBTRACT(pScreen, &FullRegion, &FullRegion, &ScreenRegion);
-
- ret = xf86InitFBManagerRegion(pScreen, &FullRegion);
-
- REGION_UNINIT(pScreen, &ScreenRegion);
- REGION_UNINIT(pScreen, &FullRegion);
-
- return ret;
-}
-
-Bool
-xf86InitFBManagerArea(
- ScreenPtr pScreen,
- int PixelArea,
- int Verbosity
-)
-{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- xRectangle Rect[3];
- RegionPtr pRegion, pScreenRegion;
- int nRect;
- Bool ret = FALSE;
-
- if (PixelArea < (pScrn->displayWidth * pScrn->virtualY))
- return FALSE;
-
- Rect[0].x = Rect[0].y = 0;
- Rect[0].width = pScrn->displayWidth;
- Rect[0].height = PixelArea / pScrn->displayWidth;
- nRect = 1;
-
- /* Add a possible partial scanline */
- if ((Rect[1].height = Rect[1].width = PixelArea % pScrn->displayWidth)) {
- Rect[1].x = 0;
- Rect[1].y = Rect[0].height;
- Rect[1].height = 1;
- nRect++;
- }
-
- /* Factor out virtual resolution */
- pRegion = RECTS_TO_REGION(pScreen, nRect, Rect, 0);
- if (pRegion) {
- if (!REGION_NAR(pRegion)) {
- Rect[2].x = Rect[2].y = 0;
- Rect[2].width = pScrn->virtualX;
- Rect[2].height = pScrn->virtualY;
-
- pScreenRegion = RECTS_TO_REGION(pScreen, 1, &Rect[2], 0);
- if (pScreenRegion) {
- if (!REGION_NAR(pScreenRegion)) {
- REGION_SUBTRACT(pScreen, pRegion, pRegion, pScreenRegion);
-
- ret = xf86InitFBManagerRegion(pScreen, pRegion);
-
- if (ret && xf86GetVerbosity() >= Verbosity) {
- int scrnIndex = pScrn->scrnIndex;
-
- xf86DrvMsgVerb(scrnIndex, X_INFO, Verbosity,
- "Largest offscreen areas (with overlaps):\n");
-
- if (Rect[2].width < Rect[0].width) {
- xf86DrvMsgVerb(scrnIndex, X_INFO, Verbosity,
- "\t%d x %d rectangle at %d,0\n",
- Rect[0].width - Rect[2].width,
- Rect[0].height,
- Rect[2].width);
- }
- if (Rect[2].width < Rect[1].width) {
- xf86DrvMsgVerb(scrnIndex, X_INFO, Verbosity,
- "\t%d x %d rectangle at %d,0\n",
- Rect[1].width - Rect[2].width,
- Rect[0].height + Rect[1].height,
- Rect[2].width);
- }
- if (Rect[2].height < Rect[0].height) {
- xf86DrvMsgVerb(scrnIndex, X_INFO, Verbosity,
- "\t%d x %d rectangle at 0,%d\n",
- Rect[0].width,
- Rect[0].height - Rect[2].height,
- Rect[2].height);
- }
- if (Rect[1].height) {
- xf86DrvMsgVerb(scrnIndex, X_INFO, Verbosity,
- "\t%d x %d rectangle at 0,%d\n",
- Rect[1].width,
- Rect[0].height - Rect[2].height +
- Rect[1].height,
- Rect[2].height);
- }
- }
- }
-
- REGION_DESTROY(pScreen, pScreenRegion);
- }
- }
-
- REGION_DESTROY(pScreen, pRegion);
- }
-
- return ret;
-}
-
-Bool
-xf86InitFBManagerRegion(
- ScreenPtr pScreen,
- RegionPtr FullRegion
-){
- FBManagerPtr offman;
-
- if(REGION_NIL(FullRegion))
- return FALSE;
-
- if(xf86FBGeneration != serverGeneration) {
- if((xf86FBScreenIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- xf86FBGeneration = serverGeneration;
- }
-
- if(!xf86RegisterOffscreenManager(pScreen, &xf86FBManFuncs))
- return FALSE;
-
- offman = xalloc(sizeof(FBManager));
- if(!offman) return FALSE;
-
- pScreen->devPrivates[xf86FBScreenIndex].ptr = (pointer)offman;
-
- offman->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = xf86FBCloseScreen;
-
- offman->InitialBoxes = REGION_CREATE(pScreen, NULL, 1);
- offman->FreeBoxes = REGION_CREATE(pScreen, NULL, 1);
-
- REGION_COPY(pScreen, offman->InitialBoxes, FullRegion);
- REGION_COPY(pScreen, offman->FreeBoxes, FullRegion);
-
- offman->pScreen = pScreen;
- offman->UsedAreas = NULL;
- offman->LinearAreas = NULL;
- offman->NumUsedAreas = 0;
- offman->NumCallbacks = 0;
- offman->FreeBoxesUpdateCallback = NULL;
- offman->devPrivates = NULL;
-
- return TRUE;
-}
-
-Bool
-xf86InitFBManagerLinear(
- ScreenPtr pScreen,
- int offset,
- int size
-){
- FBManagerPtr offman;
- FBLinearLinkPtr link;
- FBLinearPtr linear;
-
- if (size <= 0)
- return FALSE;
-
- /* we expect people to have called the Area setup first for pixmap cache */
- if (!pScreen->devPrivates[xf86FBScreenIndex].ptr)
- return FALSE;
-
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
- offman->LinearAreas = xalloc(sizeof(FBLinearLink));
- if (!offman->LinearAreas)
- return FALSE;
-
- link = offman->LinearAreas;
- link->area = NULL;
- link->next = NULL;
- link->free = 1;
- linear = &(link->linear);
- linear->pScreen = pScreen;
- linear->size = size;
- linear->offset = offset;
- linear->granularity = 0;
- linear->MoveLinearCallback = NULL;
- linear->RemoveLinearCallback = NULL;
- linear->devPrivate.ptr = NULL;
-
- return TRUE;
-}
-
-
-/* This is an implementation specific function and should
- disappear after the next release. People should use the
- real linear functions instead */
-
-FBAreaPtr
-xf86AllocateLinearOffscreenArea (
- ScreenPtr pScreen,
- int length,
- int gran,
- MoveAreaCallbackProcPtr moveCB,
- RemoveAreaCallbackProcPtr removeCB,
- pointer privData
-){
- FBManagerFuncsPtr funcs;
- FBManagerPtr offman;
- BoxPtr extents;
- int w, h;
-
- if(xf86FBMangerIndex < 0)
- return NULL;
- if(!(funcs = (FBManagerFuncsPtr)pScreen->devPrivates[xf86FBMangerIndex].ptr))
- return NULL;
-
- offman = pScreen->devPrivates[xf86FBScreenIndex].ptr;
-
- extents = REGION_EXTENTS(pScreen, offman->InitialBoxes);
- w = extents->x2 - extents->x1;
-
- if(gran && ((gran > w) || (w % gran))) {
- /* we can't match the specified alignment with XY allocations */
- return NULL;
- }
-
- if(length <= w) { /* special case */
- h = 1;
- w = length;
- } else {
- h = (length + w - 1) / w;
- }
-
- return (*funcs->AllocateOffscreenArea)(
- pScreen, w, h, gran, moveCB, removeCB, privData);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86fbman.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86fbman.h
deleted file mode 100644
index adb26a1f1..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86fbman.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86fbman.h,v 1.14 2003/10/09 12:40:54 alanh Exp $ */
-
-/*
- * Copyright (c) 1998-2001 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifndef _XF86FBMAN_H
-#define _XF86FBMAN_H
-
-
-#include "scrnintstr.h"
-#include "regionstr.h"
-
-
-#define FAVOR_AREA_THEN_WIDTH 0
-#define FAVOR_AREA_THEN_HEIGHT 1
-#define FAVOR_WIDTH_THEN_AREA 2
-#define FAVOR_HEIGHT_THEN_AREA 3
-
-#define PRIORITY_LOW 0
-#define PRIORITY_NORMAL 1
-#define PRIORITY_EXTREME 2
-
-
-typedef struct _FBArea {
- ScreenPtr pScreen;
- BoxRec box;
- int granularity;
- void (*MoveAreaCallback)(struct _FBArea*, struct _FBArea*);
- void (*RemoveAreaCallback)(struct _FBArea*);
- DevUnion devPrivate;
-} FBArea, *FBAreaPtr;
-
-typedef struct _FBLinear {
- ScreenPtr pScreen;
- int size;
- int offset;
- int granularity;
- void (*MoveLinearCallback)(struct _FBLinear*, struct _FBLinear*);
- void (*RemoveLinearCallback)(struct _FBLinear*);
- DevUnion devPrivate;
-} FBLinear, *FBLinearPtr;
-
-typedef void (*FreeBoxCallbackProcPtr)(ScreenPtr, RegionPtr, pointer);
-typedef void (*MoveAreaCallbackProcPtr)(FBAreaPtr, FBAreaPtr);
-typedef void (*RemoveAreaCallbackProcPtr)(FBAreaPtr);
-
-typedef void (*MoveLinearCallbackProcPtr)(FBLinearPtr, FBLinearPtr);
-typedef void (*RemoveLinearCallbackProcPtr)(FBLinearPtr);
-
-
-typedef struct {
- FBAreaPtr (*AllocateOffscreenArea)(
- ScreenPtr pScreen,
- int w, int h,
- int granularity,
- MoveAreaCallbackProcPtr moveCB,
- RemoveAreaCallbackProcPtr removeCB,
- pointer privData);
- void (*FreeOffscreenArea)(FBAreaPtr area);
- Bool (*ResizeOffscreenArea)(FBAreaPtr area, int w, int h);
- Bool (*QueryLargestOffscreenArea)(
- ScreenPtr pScreen,
- int *width, int *height,
- int granularity,
- int preferences,
- int priority);
- Bool (*RegisterFreeBoxCallback)(
- ScreenPtr pScreen,
- FreeBoxCallbackProcPtr FreeBoxCallback,
- pointer devPriv);
-/* linear functions */
- FBLinearPtr (*AllocateOffscreenLinear)(
- ScreenPtr pScreen,
- int size,
- int granularity,
- MoveLinearCallbackProcPtr moveCB,
- RemoveLinearCallbackProcPtr removeCB,
- pointer privData);
- void (*FreeOffscreenLinear)(FBLinearPtr area);
- Bool (*ResizeOffscreenLinear)(FBLinearPtr area, int size);
- Bool (*QueryLargestOffscreenLinear)(
- ScreenPtr pScreen,
- int *size,
- int granularity,
- int priority);
- Bool (*PurgeOffscreenAreas) (ScreenPtr);
-} FBManagerFuncs, *FBManagerFuncsPtr;
-
-
-Bool xf86RegisterOffscreenManager(
- ScreenPtr pScreen,
- FBManagerFuncsPtr funcs
-);
-
-Bool
-xf86InitFBManagerRegion(
- ScreenPtr pScreen,
- RegionPtr ScreenRegion
-);
-
-Bool
-xf86InitFBManagerArea(
- ScreenPtr pScreen,
- int PixalArea,
- int Verbosity
-);
-
-Bool
-xf86InitFBManager(
- ScreenPtr pScreen,
- BoxPtr FullBox
-);
-
-Bool
-xf86InitFBManagerLinear(
- ScreenPtr pScreen,
- int offset,
- int size
-);
-
-Bool
-xf86FBManagerRunning(
- ScreenPtr pScreen
-);
-
-FBAreaPtr
-xf86AllocateOffscreenArea (
- ScreenPtr pScreen,
- int w, int h,
- int granularity,
- MoveAreaCallbackProcPtr moveCB,
- RemoveAreaCallbackProcPtr removeCB,
- pointer privData
-);
-
-FBAreaPtr
-xf86AllocateLinearOffscreenArea (
- ScreenPtr pScreen,
- int length,
- int granularity,
- MoveAreaCallbackProcPtr moveCB,
- RemoveAreaCallbackProcPtr removeCB,
- pointer privData
-);
-
-FBLinearPtr
-xf86AllocateOffscreenLinear (
- ScreenPtr pScreen,
- int length,
- int granularity,
- MoveLinearCallbackProcPtr moveCB,
- RemoveLinearCallbackProcPtr removeCB,
- pointer privData
-);
-
-void xf86FreeOffscreenArea(FBAreaPtr area);
-void xf86FreeOffscreenLinear(FBLinearPtr area);
-
-Bool
-xf86ResizeOffscreenArea(
- FBAreaPtr resize,
- int w, int h
-);
-
-Bool
-xf86ResizeOffscreenLinear(
- FBLinearPtr resize,
- int size
-);
-
-
-Bool
-xf86RegisterFreeBoxCallback(
- ScreenPtr pScreen,
- FreeBoxCallbackProcPtr FreeBoxCallback,
- pointer devPriv
-);
-
-Bool
-xf86PurgeUnlockedOffscreenAreas(
- ScreenPtr pScreen
-);
-
-
-Bool
-xf86QueryLargestOffscreenArea(
- ScreenPtr pScreen,
- int *width, int *height,
- int granularity,
- int preferences,
- int priority
-);
-
-Bool
-xf86QueryLargestOffscreenLinear(
- ScreenPtr pScreen,
- int *size,
- int granularity,
- int priority
-);
-
-
-#endif /* _XF86FBMAN_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86isaBus.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86isaBus.c
deleted file mode 100644
index 2cad85de8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86isaBus.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86isaBus.c,v 3.6 2003/08/24 17:36:55 dawes Exp $ */
-/*
- * Copyright (c) 1997-2000 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/*
- * This file contains the interfaces to the bus-specific code
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Resources.h"
-
-#include "xf86Bus.h"
-
-#define XF86_OS_PRIVS
-#define NEED_OS_RAC_PROTOS
-#include "xf86_OSproc.h"
-
-#include "xf86RAC.h"
-
-Bool isaSlotClaimed = FALSE;
-
-/*
- * If the slot requested is already in use, return FALSE.
- * Otherwise, claim the slot for the screen requesting it.
- */
-
-int
-xf86ClaimIsaSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
-{
- EntityPtr p;
- BusAccPtr pbap = xf86BusAccInfo;
- int num;
-
- num = xf86AllocateEntity();
- p = xf86Entities[num];
- p->driver = drvp;
- p->chipset = chipset;
- p->busType = BUS_ISA;
- p->active = active;
- p->inUse = FALSE;
- xf86AddDevToEntity(num, dev);
- p->access = xnfcalloc(1,sizeof(EntityAccessRec));
- p->access->fallback = &AccessNULL;
- p->access->pAccess = &AccessNULL;
- p->busAcc = NULL;
- while (pbap) {
- if (pbap->type == BUS_ISA)
- p->busAcc = pbap;
- pbap = pbap->next;
- }
- isaSlotClaimed = TRUE;
- return num;
-}
-
-/*
- * Get the list of ISA "slots" claimed by a screen
- *
- * Note: The ISA implementation here assumes that only one ISA "slot" type
- * can be claimed by any one screen. That means a return value other than
- * 0 or 1 isn't useful.
- */
-int
-xf86GetIsaInfoForScreen(int scrnIndex)
-{
- int num = 0;
- int i;
- EntityPtr p;
-
- for (i = 0; i < xf86Screens[scrnIndex]->numEntities; i++) {
- p = xf86Entities[xf86Screens[scrnIndex]->entityList[i]];
- if (p->busType == BUS_ISA) {
- num++;
- }
- }
- return num;
-}
-
-/*
- * Parse a BUS ID string, and return True if it is a ISA bus id.
- */
-
-Bool
-xf86ParseIsaBusString(const char *busID)
-{
- /*
- * The format assumed to be "isa" or "isa:"
- */
- return (StringToBusType(busID,NULL) == BUS_ISA);
-}
-
-
-/*
- * xf86IsPrimaryIsa() -- return TRUE if primary device
- * is ISA.
- */
-
-Bool
-xf86IsPrimaryIsa(void)
-{
- return ( primaryBus.type == BUS_ISA );
-}
-
-void
-isaConvertRange2Host(resRange *pRange)
-{
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86noBus.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86noBus.c
deleted file mode 100644
index 09f2f4407..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86noBus.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86noBus.c,v 1.2 2003/08/24 17:36:55 dawes Exp $ */
-
-/*
- * Copyright (c) 2000-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains the interfaces to the bus-specific code
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Resources.h"
-
-#include "xf86Bus.h"
-
-#define XF86_OS_PRIVS
-#define NEED_OS_RAC_PROTOS
-#include "xf86_OSproc.h"
-
-#include "xf86RAC.h"
-
-int
-xf86ClaimNoSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
-{
- EntityPtr p;
- int num;
-
- num = xf86AllocateEntity();
- p = xf86Entities[num];
- p->driver = drvp;
- p->chipset = 0;
- p->busType = BUS_NONE;
- p->active = active;
- p->inUse = FALSE;
- xf86AddDevToEntity(num, dev);
- p->access = xnfcalloc(1,sizeof(EntityAccessRec));
- p->access->fallback = &AccessNULL;
- p->access->pAccess = &AccessNULL;
- p->busAcc = NULL;
-
- return num;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86pciBus.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86pciBus.c
deleted file mode 100644
index 8fa199872..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86pciBus.c
+++ /dev/null
@@ -1,3506 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c,v 3.77 2003/11/03 05:11:03 tsi Exp $ */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains the interfaces to the bus-specific code
- */
-#define INCLUDE_DEPRECATED 1
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <X11/X.h>
-#include "os.h"
-#include "Pci.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Resources.h"
-
-/* Bus-specific headers */
-#include "xf86PciData.h"
-
-#include "xf86Bus.h"
-
-#define XF86_OS_PRIVS
-#define NEED_OS_RAC_PROTOS
-#include "xf86_OSproc.h"
-
-#include "xf86RAC.h"
-
-/* Bus-specific globals */
-Bool pciSlotClaimed = FALSE;
-pciConfigPtr *xf86PciInfo = NULL; /* Full PCI probe info */
-pciVideoPtr *xf86PciVideoInfo = NULL; /* PCI probe for video hw */
-pciAccPtr * xf86PciAccInfo = NULL; /* PCI access related */
-
-/* pcidata globals */
-ScanPciSetupProcPtr xf86SetupPciIds = NULL;
-ScanPciCloseProcPtr xf86ClosePciIds = NULL;
-ScanPciFindByDeviceProcPtr xf86FindPciNamesByDevice = NULL;
-ScanPciFindBySubsysProcPtr xf86FindPciNamesBySubsys = NULL;
-ScanPciFindClassBySubsysProcPtr xf86FindPciClassBySubsys = NULL;
-ScanPciFindClassByDeviceProcPtr xf86FindPciClassByDevice = NULL;
-
-static resPtr pciAvoidRes = NULL;
-
-/* PCI buses */
-static PciBusPtr xf86PciBus = NULL;
-/* Bus-specific probe/sorting functions */
-
-/* PCI classes that get included in xf86PciVideoInfo */
-#define PCIINFOCLASSES(b,s) \
- (((b) == PCI_CLASS_PREHISTORIC) || \
- ((b) == PCI_CLASS_DISPLAY) || \
- ((b) == PCI_CLASS_MULTIMEDIA && (s) == PCI_SUBCLASS_MULTIMEDIA_VIDEO) || \
- ((b) == PCI_CLASS_PROCESSOR && (s) == PCI_SUBCLASS_PROCESSOR_COPROC))
-
-/*
- * PCI classes that have messages printed always. The others are only
- * have a message printed when the vendor/dev IDs are recognised.
- */
-#define PCIALWAYSPRINTCLASSES(b,s) \
- (((b) == PCI_CLASS_PREHISTORIC && (s) == PCI_SUBCLASS_PREHISTORIC_VGA) || \
- ((b) == PCI_CLASS_DISPLAY) || \
- ((b) == PCI_CLASS_MULTIMEDIA && (s) == PCI_SUBCLASS_MULTIMEDIA_VIDEO))
-
-/*
- * PCI classes for which potentially destructive checking of the map sizes
- * may be done. Any classes where this may be unsafe should be omitted
- * from this list.
- */
-#define PCINONSYSTEMCLASSES(b,s) PCIALWAYSPRINTCLASSES(b,s)
-
-/*
- * PCI classes that use RAC
- */
-#define PCISHAREDIOCLASSES(b,s) \
- (((b) == PCI_CLASS_PREHISTORIC && (s) == PCI_SUBCLASS_PREHISTORIC_VGA) || \
- ((b) == PCI_CLASS_DISPLAY && (s) == PCI_SUBCLASS_DISPLAY_VGA))
-
-#define PCI_MEM32_LENGTH_MAX 0xFFFFFFFF
-
-#define B2M(tag,base) pciBusAddrToHostAddr(tag,PCI_MEM,base)
-#define B2I(tag,base) pciBusAddrToHostAddr(tag,PCI_IO,base)
-#define B2H(tag,base,type) (((type & ResPhysMask) == ResMem) ? \
- B2M(tag, base) : B2I(tag, base))
-#define M2B(tag,base) pciHostAddrToBusAddr(tag,PCI_MEM,base)
-#define I2B(tag,base) pciHostAddrToBusAddr(tag,PCI_IO,base)
-#define H2B(tag,base,type) (((type & ResPhysMask) == ResMem) ? \
- M2B(tag, base) : I2B(tag, base))
-#define TAG(pvp) (pciTag(pvp->bus,pvp->device,pvp->func))
-#define SIZE(size) ((1 << size) - 1)
-#define PCI_SIZE(type,tag,size) (((type & ResPhysMask) == ResMem) \
- ? pciBusAddrToHostAddr(tag,PCI_MEM_SIZE,size) \
- : pciBusAddrToHostAddr(tag,PCI_IO_SIZE,size))
-#define PCI_M_RANGE(range,tag,begin,end,type) \
- { \
- RANGE(range, B2M(tag, begin), B2M(tag, end), \
- RANGE_TYPE(type, xf86GetPciDomain(tag))); \
- }
-#define PCI_I_RANGE(range,tag,begin,end,type) \
- { \
- RANGE(range, B2I(tag, begin), B2I(tag, end), \
- RANGE_TYPE(type, xf86GetPciDomain(tag))); \
- }
-#define PCI_X_RANGE(range,tag,begin,end,type) \
-{ if ((type & ResPhysMask) == ResMem) PCI_M_RANGE(range,tag,begin,end,type); \
- else PCI_I_RANGE(range,tag,begin,end,type); }
-#define P_M_RANGE(range,tag,begin,size,type) \
- PCI_M_RANGE(range,tag,begin,(begin + SIZE(size)),type)
-#define P_I_RANGE(range,tag,begin,size,type) \
- PCI_I_RANGE(range,tag,begin,(begin + SIZE(size)),type)
-#define P_X_RANGE(range,tag,begin,size,type) \
-{ if ((type & ResPhysMask) == ResMem) P_M_RANGE(range,tag,begin,size,type); \
- else P_I_RANGE(range,tag,begin,size,type); }
-#define PV_M_RANGE(range,pvp,i,type) \
- P_M_RANGE(range,TAG(pvp),pvp->memBase[i],pvp->size[i],type)
-#define PV_B_RANGE(range,pvp,type) \
- P_M_RANGE(range,TAG(pvp),pvp->biosBase,pvp->biosSize,type)
-#define PV_I_RANGE(range,pvp,i,type) \
- P_I_RANGE(range,TAG(pvp),pvp->ioBase[i],pvp->size[i],type)
-
-static void getPciClassFlags(pciConfigPtr *pcrpp);
-static void pciConvertListToHost(int bus, int dev, int func, resPtr list);
-static PciBusPtr xf86GetPciBridgeInfo(void);
-
-void
-xf86FormatPciBusNumber(int busnum, char *buffer)
-{
- /* 'buffer' should be at least 8 characters long */
- if (busnum < 256)
- sprintf(buffer, "%d", busnum);
- else
- sprintf(buffer, "%d@%d", busnum & 0x00ff, busnum >> 8);
-}
-
-static Bool
-IsBaseUnassigned(CARD32 base)
-{
- CARD32 mask;
-
- if (base & PCI_MAP_IO)
- mask = ~PCI_MAP_IO_ATTR_MASK;
- else
- mask = ~PCI_MAP_MEMORY_ATTR_MASK;
-
- base &= mask;
- return (!base || (base == mask));
-}
-
-static Bool
-IsBaseUnassigned64(CARD32 base0, CARD32 base1)
-{
- base0 &= ~PCI_MAP_MEMORY_ATTR_MASK;
- base1 &= 0xffffffff;
-
- return ((!base0 && !base1)
- || ((base0 == ~PCI_MAP_MEMORY_ATTR_MASK)
- && (base1 == 0xffffffff)));
-}
-
-static void
-FindPCIVideoInfo(void)
-{
- pciConfigPtr pcrp, *pcrpp;
- int i = 0, j, k;
- int num = 0;
- pciVideoPtr info;
- int DoIsolateDeviceCheck = 0;
-
- if (xf86IsolateDevice.bus || xf86IsolateDevice.device || xf86IsolateDevice.func)
- DoIsolateDeviceCheck = 1;
- pcrpp = xf86PciInfo = xf86scanpci(0);
- getPciClassFlags(pcrpp);
-
- if (pcrpp == NULL) {
- xf86PciVideoInfo = NULL;
- return;
- }
- xf86PciBus = xf86GetPciBridgeInfo();
-
- while ((pcrp = pcrpp[i])) {
- int baseclass;
- int subclass;
-
- if (pcrp->listed_class & 0xffff) {
- baseclass = (pcrp->listed_class >> 8) & 0xff;
- subclass = pcrp->listed_class & 0xff;
- } else {
- baseclass = pcrp->pci_base_class;
- subclass = pcrp->pci_sub_class;
- }
-
- if (PCIINFOCLASSES(baseclass, subclass) &&
- (DoIsolateDeviceCheck ?
- (xf86IsolateDevice.bus == pcrp->busnum &&
- xf86IsolateDevice.device == pcrp->devnum &&
- xf86IsolateDevice.func == pcrp->funcnum) : 1)) {
- num++;
- xf86PciVideoInfo = xnfrealloc(xf86PciVideoInfo,
- sizeof(pciVideoPtr) * (num + 1));
- xf86PciVideoInfo[num] = NULL;
- info = xf86PciVideoInfo[num - 1] = xnfalloc(sizeof(pciVideoRec));
- info->validSize = FALSE;
- info->vendor = pcrp->pci_vendor;
- info->chipType = pcrp->pci_device;
- info->chipRev = pcrp->pci_rev_id;
- info->subsysVendor = pcrp->pci_subsys_vendor;
- info->subsysCard = pcrp->pci_subsys_card;
- info->bus = pcrp->busnum;
- info->device = pcrp->devnum;
- info->func = pcrp->funcnum;
- info->class = baseclass;
- info->subclass = pcrp->pci_sub_class;
- info->interface = pcrp->pci_prog_if;
- info->biosBase = PCIGETROM(pcrp->pci_baserom);
- info->biosSize = pciGetBaseSize(pcrp->tag, 6, TRUE, NULL);
- info->thisCard = pcrp;
- info->validate = FALSE;
-#ifdef INCLUDE_XF86_NO_DOMAIN
- if ((PCISHAREDIOCLASSES(baseclass, subclass))
- && (pcrp->pci_command & PCI_CMD_IO_ENABLE) &&
- (pcrp->pci_prog_if == 0)) {
-
- /*
- * Attempt to ensure that VGA is actually routed to this
- * adapter on entry. This needs to be fixed when we finally
- * grok host bridges (and multiple bus trees).
- */
- j = info->bus;
- while (TRUE) {
- PciBusPtr pBus = xf86PciBus;
- while (pBus && j != pBus->secondary)
- pBus = pBus->next;
- if (!pBus || !(pBus->brcontrol & PCI_PCI_BRIDGE_VGA_EN))
- break;
- if (j == pBus->primary) {
- if (primaryBus.type == BUS_NONE) {
- /* assumption: primary adapter is always VGA */
- primaryBus.type = BUS_PCI;
- primaryBus.id.pci.bus = pcrp->busnum;
- primaryBus.id.pci.device = pcrp->devnum;
- primaryBus.id.pci.func = pcrp->funcnum;
- } else if (primaryBus.type < BUS_last) {
- xf86Msg(X_NOTICE,
- "More than one primary device found\n");
- primaryBus.type ^= (BusType)(-1);
- }
- break;
- }
- j = pBus->primary;
- }
- }
-#endif
-
- for (j = 0; j < 6; j++) {
- info->memBase[j] = 0;
- info->ioBase[j] = 0;
- if (PCINONSYSTEMCLASSES(baseclass, subclass)) {
- info->size[j] =
- pciGetBaseSize(pcrp->tag, j, TRUE, &info->validSize);
- pcrp->minBasesize = info->validSize;
- } else {
- info->size[j] = pcrp->basesize[j];
- info->validSize = pcrp->minBasesize;
- }
- info->type[j] = 0;
- }
-
- if (PCINONSYSTEMCLASSES(baseclass, subclass)) {
- /*
- * Check of a PCI base is unassigned. If so
- * attempt to fix it. Validation will determine
- * if the value was correct later on.
- */
- CARD32 *base = &pcrp->pci_base0;
-
- for (j = 0; j < 6; j++) {
- if (!PCI_MAP_IS64BITMEM(base[j])) {
- if (info->size[j] && IsBaseUnassigned(base[j]))
- base[j] = pciCheckForBrokenBase(pcrp->tag, j);
- } else {
- if (j == 5) /* bail out */
- break;
- if (info->size[j]
- && IsBaseUnassigned64(base[j],base[j+1])) {
- base[j] = pciCheckForBrokenBase(pcrp->tag, j);
- j++;
- base[j] = pciCheckForBrokenBase(pcrp->tag, j);
- }
- }
- }
- }
-
- /*
- * 64-bit base addresses are checked for and avoided on 32-bit
- * platforms.
- */
- for (j = 0; j < 6; ++j) {
- CARD32 bar = (&pcrp->pci_base0)[j];
-
- if (bar != 0) {
- if (bar & PCI_MAP_IO) {
- info->ioBase[j] = (memType)PCIGETIO(bar);
- info->type[j] = bar & PCI_MAP_IO_ATTR_MASK;
- } else {
- info->type[j] = bar & PCI_MAP_MEMORY_ATTR_MASK;
- info->memBase[j] = (memType)PCIGETMEMORY(bar);
- if (PCI_MAP_IS64BITMEM(bar)) {
- if (j == 5) {
- xf86MsgVerb(X_WARNING, 0,
- "****BAR5 specified as 64-bit wide, "
- "which is not possible. "
- "Ignoring BAR5.****\n");
- info->memBase[j] = 0;
- } else {
- CARD32 bar_hi = PCIGETMEMORY64HIGH((&pcrp->pci_base0)[j]);
-#if defined(LONG64) || defined(WORD64)
- /* 64 bit architecture */
- info->memBase[j] |=
- (memType)bar_hi << 32;
-#else
- if (bar_hi != 0)
- info->memBase[j] = 0;
-#endif
- ++j; /* Step over the next BAR */
- }
- }
- }
- }
- }
- info->listed_class = pcrp->listed_class;
- }
- i++;
- }
-
- /* If we haven't found a primary device try a different heuristic */
- if (primaryBus.type == BUS_NONE && num) {
- for (i = 0; i < num; i++) {
- info = xf86PciVideoInfo[i];
- pcrp = info->thisCard;
-
- if ((pcrp->pci_command & PCI_CMD_MEM_ENABLE) &&
- (num == 1 ||
- ((info->class == PCI_CLASS_DISPLAY) &&
- (info->subclass == PCI_SUBCLASS_DISPLAY_VGA)))) {
- if (primaryBus.type == BUS_NONE) {
- primaryBus.type = BUS_PCI;
- primaryBus.id.pci.bus = pcrp->busnum;
- primaryBus.id.pci.device = pcrp->devnum;
- primaryBus.id.pci.func = pcrp->funcnum;
- } else {
- xf86Msg(X_NOTICE,
- "More than one possible primary device found\n");
- primaryBus.type ^= (BusType)(-1);
- }
- }
- }
- }
-
- /* Print a summary of the video devices found */
- for (k = 0; k < num; k++) {
- const char *vendorname = NULL, *chipname = NULL;
- const char *prim = " ";
- char busnum[8];
- Bool memdone = FALSE, iodone = FALSE;
-
- i = 0;
- info = xf86PciVideoInfo[k];
- xf86FormatPciBusNumber(info->bus, busnum);
- xf86FindPciNamesByDevice(info->vendor, info->chipType,
- NOVENDOR, NOSUBSYS,
- &vendorname, &chipname, NULL, NULL);
- if ((!vendorname || !chipname) &&
- !PCIALWAYSPRINTCLASSES(info->class, info->subclass))
- continue;
- if (xf86IsPrimaryPci(info))
- prim = "*";
-
- xf86Msg(X_PROBED, "PCI:%s(%s:%d:%d) ", prim, busnum, info->device,
- info->func);
- if (vendorname)
- xf86ErrorF("%s ", vendorname);
- else
- xf86ErrorF("unknown vendor (0x%04x) ", info->vendor);
- if (chipname)
- xf86ErrorF("%s ", chipname);
- else
- xf86ErrorF("unknown chipset (0x%04x) ", info->chipType);
- xf86ErrorF("rev %d", info->chipRev);
- for (i = 0; i < 6; i++) {
- if (info->memBase[i] &&
- (info->memBase[i] < (memType)(-1 << info->size[i]))) {
- if (!memdone) {
- xf86ErrorF(", Mem @ ");
- memdone = TRUE;
- } else
- xf86ErrorF(", ");
- xf86ErrorF("0x%08lx/%d", info->memBase[i], info->size[i]);
- }
- }
- for (i = 0; i < 6; i++) {
- if (info->ioBase[i] &&
- (info->ioBase[i] < (memType)(-1 << info->size[i]))) {
- if (!iodone) {
- xf86ErrorF(", I/O @ ");
- iodone = TRUE;
- } else
- xf86ErrorF(", ");
- xf86ErrorF("0x%04lx/%d", info->ioBase[i], info->size[i]);
- }
- }
- if (info->biosBase &&
- (info->biosBase < (memType)(-1 << info->biosSize)))
- xf86ErrorF(", BIOS @ 0x%08lx/%d", info->biosBase, info->biosSize);
- xf86ErrorF("\n");
- }
-}
-
-/*
- * fixPciSizeInfo() -- fix pci size info by testing it destructively
- * (if not already done), fix pciVideoInfo and entry in the resource
- * list.
- */
-/*
- * Note: once we have OS support to read the sizes GetBaseSize() will
- * have to be wrapped by the OS layer. fixPciSizeInfo() should also
- * be wrapped by the OS layer to do nothing if the size is always
- * returned correctly by GetBaseSize(). It should however set validate
- * in pciVideoRec if validation is required. ValidatePci() also needs
- * to be wrapped by the OS layer. This may do nothing if the OS has
- * already taken care of validation. fixPciResource() may be moved to
- * OS layer with minimal changes. Once the wrapping layer is in place
- * the common level and drivers should not reference these functions
- * directly but thru the OS layer.
- */
-
-static void
-fixPciSizeInfo(int entityIndex)
-{
- pciVideoPtr pvp;
- resPtr pAcc;
- PCITAG tag;
- int j;
-
- if (! (pvp = xf86GetPciInfoForEntity(entityIndex))) return;
- if (pvp->validSize) return;
-
- tag = pciTag(pvp->bus,pvp->device,pvp->func);
-
- for (j = 0; j < 6; j++) {
- pAcc = Acc;
- if (pvp->memBase[j])
- while (pAcc) {
- if (((pAcc->res_type & (ResPhysMask | ResBlock))
- == (ResMem | ResBlock))
- && (pAcc->block_begin == B2M(TAG(pvp),pvp->memBase[j]))
- && (pAcc->block_end == B2M(TAG(pvp),pvp->memBase[j]
- + SIZE(pvp->size[j])))) break;
- pAcc = pAcc->next;
- }
- else if (pvp->ioBase[j])
- while (pAcc) {
- if (((pAcc->res_type & (ResPhysMask | ResBlock)) ==
- (ResIo | ResBlock))
- && (pAcc->block_begin == B2I(TAG(pvp),pvp->ioBase[j]))
- && (pAcc->block_end == B2I(TAG(pvp),pvp->ioBase[j]
- + SIZE(pvp->size[j])))) break;
- pAcc = pAcc->next;
- }
- else continue;
- pvp->size[j] = pciGetBaseSize(tag, j, TRUE, &pvp->validSize);
- if (pAcc) {
- pAcc->block_end = pvp->memBase[j] ?
- B2M(TAG(pvp),pvp->memBase[j] + SIZE(pvp->size[j]))
- : B2I(TAG(pvp),pvp->ioBase[j] + SIZE(pvp->size[j]));
- pAcc->res_type &= ~ResEstimated;
- pAcc->res_type |= ResBios;
- }
- }
- if (pvp->biosBase) {
- pAcc = Acc;
- while (pAcc) {
- if (((pAcc->res_type & (ResPhysMask | ResBlock)) ==
- (ResMem | ResBlock))
- && (pAcc->block_begin == B2M(TAG(pvp),pvp->biosBase))
- && (pAcc->block_end == B2M(TAG(pvp),pvp->biosBase
- + SIZE(pvp->biosSize)))) break;
- pAcc = pAcc->next;
- }
- pvp->biosSize = pciGetBaseSize(tag, 6, TRUE, &pvp->validSize);
- if (pAcc) {
- pAcc->block_end = B2M(TAG(pvp),pvp->biosBase+SIZE(pvp->biosSize));
- pAcc->res_type &= ~ResEstimated;
- pAcc->res_type |= ResBios;
- }
- }
-}
-
-/*
- * IO enable/disable related routines for PCI
- */
-#define pArg ((pciArg*)arg)
-#define SETBITS PCI_CMD_IO_ENABLE
-static void
-pciIoAccessEnable(void* arg)
-{
-#ifdef DEBUG
- ErrorF("pciIoAccessEnable: 0x%05lx\n", *(PCITAG *)arg);
-#endif
- pArg->ctrl |= SETBITS | PCI_CMD_MASTER_ENABLE;
- pciWriteLong(pArg->tag, PCI_CMD_STAT_REG, pArg->ctrl);
-}
-
-static void
-pciIoAccessDisable(void* arg)
-{
-#ifdef DEBUG
- ErrorF("pciIoAccessDisable: 0x%05lx\n", *(PCITAG *)arg);
-#endif
- pArg->ctrl &= ~SETBITS;
- pciWriteLong(pArg->tag, PCI_CMD_STAT_REG, pArg->ctrl);
-}
-
-#undef SETBITS
-#define SETBITS (PCI_CMD_IO_ENABLE | PCI_CMD_MEM_ENABLE)
-static void
-pciIo_MemAccessEnable(void* arg)
-{
-#ifdef DEBUG
- ErrorF("pciIo_MemAccessEnable: 0x%05lx\n", *(PCITAG *)arg);
-#endif
- pArg->ctrl |= SETBITS | PCI_CMD_MASTER_ENABLE;
- pciWriteLong(pArg->tag, PCI_CMD_STAT_REG, pArg->ctrl);
-}
-
-static void
-pciIo_MemAccessDisable(void* arg)
-{
-#ifdef DEBUG
- ErrorF("pciIo_MemAccessDisable: 0x%05lx\n", *(PCITAG *)arg);
-#endif
- pArg->ctrl &= ~SETBITS;
- pciWriteLong(pArg->tag, PCI_CMD_STAT_REG, pArg->ctrl);
-}
-
-#undef SETBITS
-#define SETBITS (PCI_CMD_MEM_ENABLE)
-static void
-pciMemAccessEnable(void* arg)
-{
-#ifdef DEBUG
- ErrorF("pciMemAccessEnable: 0x%05lx\n", *(PCITAG *)arg);
-#endif
- pArg->ctrl |= SETBITS | PCI_CMD_MASTER_ENABLE;
- pciWriteLong(pArg->tag, PCI_CMD_STAT_REG, pArg->ctrl);
-}
-
-static void
-pciMemAccessDisable(void* arg)
-{
-#ifdef DEBUG
- ErrorF("pciMemAccessDisable: 0x%05lx\n", *(PCITAG *)arg);
-#endif
- pArg->ctrl &= ~SETBITS;
- pciWriteLong(pArg->tag, PCI_CMD_STAT_REG, pArg->ctrl);
-}
-#undef SETBITS
-#undef pArg
-
-
-/* move to OS layer */
-#define MASKBITS (PCI_PCI_BRIDGE_VGA_EN | PCI_PCI_BRIDGE_MASTER_ABORT_EN)
-static void
-pciBusAccessEnable(BusAccPtr ptr)
-{
- PCITAG tag = ptr->busdep.pci.acc;
- CARD16 ctrl;
-
-#ifdef DEBUG
- ErrorF("pciBusAccessEnable: bus=%d\n", ptr->busdep.pci.bus);
-#endif
- ctrl = pciReadWord(tag, PCI_PCI_BRIDGE_CONTROL_REG);
- if ((ctrl & MASKBITS) != PCI_PCI_BRIDGE_VGA_EN) {
- ctrl = (ctrl | PCI_PCI_BRIDGE_VGA_EN) &
- ~(PCI_PCI_BRIDGE_MASTER_ABORT_EN | PCI_PCI_BRIDGE_SECONDARY_RESET);
- pciWriteWord(tag, PCI_PCI_BRIDGE_CONTROL_REG, ctrl);
- }
-}
-
-/* move to OS layer */
-static void
-pciBusAccessDisable(BusAccPtr ptr)
-{
- PCITAG tag = ptr->busdep.pci.acc;
- CARD16 ctrl;
-
-#ifdef DEBUG
- ErrorF("pciBusAccessDisable: bus=%d\n", ptr->busdep.pci.bus);
-#endif
- ctrl = pciReadWord(tag, PCI_PCI_BRIDGE_CONTROL_REG);
- if (ctrl & MASKBITS) {
- ctrl &= ~(MASKBITS | PCI_PCI_BRIDGE_SECONDARY_RESET);
- pciWriteWord(tag, PCI_PCI_BRIDGE_CONTROL_REG, ctrl);
- }
-}
-#undef MASKBITS
-
-/* move to OS layer */
-static void
-pciDrvBusAccessEnable(BusAccPtr ptr)
-{
- int bus = ptr->busdep.pci.bus;
-
-#ifdef DEBUG
- ErrorF("pciDrvBusAccessEnable: bus=%d\n", bus);
-#endif
- (*pciBusInfo[bus]->funcs->pciControlBridge)(bus,
- PCI_PCI_BRIDGE_VGA_EN,
- PCI_PCI_BRIDGE_VGA_EN);
-}
-
-/* move to OS layer */
-static void
-pciDrvBusAccessDisable(BusAccPtr ptr)
-{
- int bus = ptr->busdep.pci.bus;
-
-#ifdef DEBUG
- ErrorF("pciDrvBusAccessDisable: bus=%d\n", bus);
-#endif
- (*pciBusInfo[bus]->funcs->pciControlBridge)(bus,
- PCI_PCI_BRIDGE_VGA_EN, 0);
-}
-
-
-static void
-pciSetBusAccess(BusAccPtr ptr)
-{
-#ifdef DEBUG
- ErrorF("pciSetBusAccess: route VGA to bus %d\n", ptr->busdep.pci.bus);
-#endif
-
- if (!ptr->primary && !ptr->current)
- return;
-
- if (ptr->current && ptr->current->disable_f)
- (*ptr->current->disable_f)(ptr->current);
- ptr->current = NULL;
-
- /* walk down */
- while (ptr->primary) { /* No enable for root bus */
- if (ptr != ptr->primary->current) {
- if (ptr->primary->current && ptr->primary->current->disable_f)
- (*ptr->primary->current->disable_f)(ptr->primary->current);
- if (ptr->enable_f)
- (*ptr->enable_f)(ptr);
- ptr->primary->current = ptr;
- }
- ptr = ptr->primary;
- }
-}
-
-/* move to OS layer */
-static void
-savePciState(PCITAG tag, pciSavePtr ptr)
-{
- int i;
-
- ptr->command = pciReadLong(tag, PCI_CMD_STAT_REG);
- for (i=0; i < 6; i++)
- ptr->base[i] = pciReadLong(tag, PCI_CMD_BASE_REG + i*4);
- ptr->biosBase = pciReadLong(tag, PCI_CMD_BIOS_REG);
-}
-
-/* move to OS layer */
-static void
-restorePciState(PCITAG tag, pciSavePtr ptr)
-{
- int i;
-
- /* disable card before setting anything */
- pciSetBitsLong(tag, PCI_CMD_STAT_REG,
- PCI_CMD_MEM_ENABLE | PCI_CMD_IO_ENABLE , 0);
- pciWriteLong(tag,PCI_CMD_BIOS_REG, ptr->biosBase);
- for (i=0; i<6; i++)
- pciWriteLong(tag, PCI_CMD_BASE_REG + i*4, ptr->base[i]);
- pciWriteLong(tag, PCI_CMD_STAT_REG, ptr->command);
-}
-
-/* move to OS layer */
-static void
-savePciBusState(BusAccPtr ptr)
-{
- PCITAG tag = ptr->busdep.pci.acc;
-
- ptr->busdep.pci.save.control =
- pciReadWord(tag, PCI_PCI_BRIDGE_CONTROL_REG) &
- ~PCI_PCI_BRIDGE_SECONDARY_RESET;
- /* Allow master aborts to complete normally on non-root buses */
- if (ptr->busdep.pci.save.control & PCI_PCI_BRIDGE_MASTER_ABORT_EN)
- pciWriteWord(tag, PCI_PCI_BRIDGE_CONTROL_REG,
- ptr->busdep.pci.save.control & ~PCI_PCI_BRIDGE_MASTER_ABORT_EN);
-}
-
-/* move to OS layer */
-#define MASKBITS (PCI_PCI_BRIDGE_VGA_EN | PCI_PCI_BRIDGE_MASTER_ABORT_EN)
-static void
-restorePciBusState(BusAccPtr ptr)
-{
- PCITAG tag = ptr->busdep.pci.acc;
- CARD16 ctrl;
-
- /* Only restore the bits we've changed (and don't cause resets) */
- ctrl = pciReadWord(tag, PCI_PCI_BRIDGE_CONTROL_REG);
- if ((ctrl ^ ptr->busdep.pci.save.control) & MASKBITS) {
- ctrl &= ~(MASKBITS | PCI_PCI_BRIDGE_SECONDARY_RESET);
- ctrl |= ptr->busdep.pci.save.control & MASKBITS;
- pciWriteWord(tag, PCI_PCI_BRIDGE_CONTROL_REG, ctrl);
- }
-}
-#undef MASKBITS
-
-/* move to OS layer */
-static void
-savePciDrvBusState(BusAccPtr ptr)
-{
- int bus = ptr->busdep.pci.bus;
-
- ptr->busdep.pci.save.control =
- (*pciBusInfo[bus]->funcs->pciControlBridge)(bus, 0, 0);
- /* Allow master aborts to complete normally on this bus */
- (*pciBusInfo[bus]->funcs->pciControlBridge)(bus,
- PCI_PCI_BRIDGE_MASTER_ABORT_EN,
- 0);
-}
-
-/* move to OS layer */
-static void
-restorePciDrvBusState(BusAccPtr ptr)
-{
- int bus = ptr->busdep.pci.bus;
-
- (*pciBusInfo[bus]->funcs->pciControlBridge)(bus, (CARD16)(-1),
- ptr->busdep.pci.save.control);
-}
-
-
-static void
-disablePciBios(PCITAG tag)
-{
- pciSetBitsLong(tag, PCI_CMD_BIOS_REG, PCI_CMD_BIOS_ENABLE, 0);
-}
-
-/* ????? */
-static void
-correctPciSize(memType base, memType oldsize, memType newsize,
- unsigned long type)
-{
- pciConfigPtr pcrp, *pcrpp;
- pciVideoPtr pvp, *pvpp;
- CARD32 *basep;
- int i;
- int old_bits = 0, new_bits = 0;
-
- if (oldsize + 1) while (oldsize & 1) {
- old_bits ++;
- oldsize >>= 1;
- }
- if (newsize + 1) while (newsize & 1) {
- new_bits ++;
- newsize >>= 1;
- }
-
- for (pcrpp = xf86PciInfo, pcrp = *pcrpp; pcrp; pcrp = *++(pcrpp)) {
-
- /* Only process devices with type 0 headers */
- if ((pcrp->pci_header_type & 0x7f) != 0)
- continue;
-
- basep = &pcrp->pci_base0;
- for (i = 0; i < 6; i++) {
- if (basep[i] && (pcrp->basesize[i] == old_bits)) {
- if ((((type & ResPhysMask) == ResIo) &&
- PCI_MAP_IS_IO(basep[i]) &&
- B2I(pcrp->tag,PCIGETIO(basep[i]) == base)) ||
- (((type & ResPhysMask) == ResMem) &&
- PCI_MAP_IS_MEM(basep[i]) &&
- (((!PCI_MAP_IS64BITMEM(basep[i])) &&
- (B2M(pcrp->tag,PCIGETMEMORY(basep[i])) == base))
-#if defined(LONG64) || defined(WORD64)
- ||
- (B2M(pcrp->tag,PCIGETMEMORY64(basep[i])) == base)
-#else
- ||
- (!basep[i+1]
- && (B2M(pcrp->tag,PCIGETMEMORY(basep[i])) == base))
-#endif
- ))) {
- pcrp->basesize[i] = new_bits;
- break; /* to next device */
- }
- }
- if (PCI_MAP_IS64BITMEM(basep[i])) i++;
- }
- }
-
- if (xf86PciVideoInfo) {
- for (pvpp = xf86PciVideoInfo, pvp = *pvpp; pvp; pvp = *(++pvpp)) {
-
- for (i = 0; i < 6; i++) {
- if (pvp->size[i] == old_bits) {
- if ((((type & ResPhysMask) == ResIo) && pvp->ioBase[i]
- && (B2I(TAG(pvp),pvp->ioBase[i]) == base)) ||
- (((type & ResPhysMask) == ResMem) && pvp->memBase[i]
- && (B2M(TAG(pvp),pvp->memBase[i]) == base))) {
- pvp->size[i] = new_bits;
- break; /* to next device */
- }
- }
- }
- }
- }
-}
-
-/* ????? */
-static void
-removeOverlapsWithBridges(int busIndex, resPtr target)
-{
- PciBusPtr pbp;
- resPtr tmp,bridgeRes = NULL;
- resRange range;
-
- if (!target)
- return;
-
- if (!ResCanOverlap(&target->val))
- return;
-
- range = target->val;
-
- for (pbp=xf86PciBus; pbp; pbp = pbp->next) {
- if (pbp->primary == busIndex) {
- tmp = xf86DupResList(pbp->preferred_io);
- bridgeRes = xf86JoinResLists(tmp,bridgeRes);
- tmp = xf86DupResList(pbp->preferred_mem);
- bridgeRes = xf86JoinResLists(tmp,bridgeRes);
- tmp = xf86DupResList(pbp->preferred_pmem);
- bridgeRes = xf86JoinResLists(tmp,bridgeRes);
- }
- }
-
- RemoveOverlaps(target, bridgeRes, TRUE, TRUE);
- if (range.rEnd > target->block_end) {
- correctPciSize(range.rBegin, range.rEnd - range.rBegin,
- target->block_end - target->block_begin,
- target->res_type);
- xf86MsgVerb(X_INFO, 3,
- "PCI %s resource overlap reduced 0x%08lx from 0x%08lx to 0x%08lx\n",
- ((target->res_type & ResPhysMask) == ResMem) ? "Memory" : "I/O",
- range.rBegin, range.rEnd, target->block_end);
- }
- xf86FreeResList(bridgeRes);
-}
-
-/* ????? */
-static void
-xf86GetPciRes(resPtr *activeRes, resPtr *inactiveRes)
-{
- pciConfigPtr pcrp, *pcrpp;
- pciVideoPtr pvp, *pvpp;
- CARD32 *basep;
- int i;
- resPtr pRes, tmp;
- resRange range;
- long resMisc;
-
- if (activeRes)
- *activeRes = NULL;
- if (inactiveRes)
- *inactiveRes = NULL;
-
- if (!activeRes || !inactiveRes || !xf86PciInfo)
- return;
-
- if (xf86PciVideoInfo)
- for (pvpp = xf86PciVideoInfo, pvp = *pvpp; pvp; pvp = *(++pvpp)) {
- resPtr *res;
-
- if (PCINONSYSTEMCLASSES(pvp->class, pvp->subclass))
- resMisc = ResBios;
- else
- resMisc = 0;
-
- if (((pciConfigPtr)pvp->thisCard)->pci_command
- & (PCI_CMD_IO_ENABLE | PCI_CMD_MEM_ENABLE))
- res = activeRes;
- else
- res = inactiveRes;
-
- if (!pvp->validSize)
- resMisc |= ResEstimated;
-
- for (i = 0; i < 6; i++) {
- if (pvp->ioBase[i] &&
- (pvp->ioBase[i] < (memType)(-1 << pvp->size[i]))) {
- PV_I_RANGE(range,pvp,i,ResExcIoBlock | resMisc);
- tmp = xf86AddResToList(NULL, &range, -1);
- removeOverlapsWithBridges(pvp->bus,tmp);
- *res = xf86JoinResLists(tmp,*res);
- } else if (pvp->memBase[i] &&
- (pvp->memBase[i] < (memType)(-1 << pvp->size[i]))) {
- PV_M_RANGE(range, pvp,i, ResExcMemBlock | resMisc);
- tmp = xf86AddResToList(NULL, &range, -1);
- removeOverlapsWithBridges(pvp->bus,tmp);
- *res = xf86JoinResLists(tmp,*res);
- }
- }
- /* FIXME!!!: Don't use BIOS resources for overlap
- * checking but reserve them!
- */
- if (pvp->biosBase &&
- (pvp->biosBase < (memType)(-1 << pvp->biosSize))) {
- PV_B_RANGE(range, pvp, ResExcMemBlock | resMisc);
- tmp = xf86AddResToList(NULL, &range, -1);
- removeOverlapsWithBridges(pvp->bus,tmp);
- *res = xf86JoinResLists(tmp,*res);
- }
- }
-
- for (pcrpp = xf86PciInfo, pcrp = *pcrpp; pcrp; pcrp = *++(pcrpp)) {
- resPtr *res;
- CARD8 baseclass, subclass;
-
- if (pcrp->listed_class & 0x0ffff) {
- baseclass = pcrp->listed_class >> 8;
- subclass = pcrp->listed_class;
- } else {
- baseclass = pcrp->pci_base_class;
- subclass = pcrp->pci_sub_class;
- }
-
- if (PCIINFOCLASSES(baseclass, subclass))
- continue;
-
- /* Only process devices with type 0 headers */
- if ((pcrp->pci_header_type & 0x7f) != 0)
- continue;
-
- if (!pcrp->minBasesize)
- resMisc = ResEstimated;
- else
- resMisc = 0;
-
- /*
- * Allow resources allocated to host bridges to overlap. Perhaps, this
- * needs to be specific to AGP-capable chipsets. AGP "memory"
- * sometimes gets allocated within the range routed to the AGP bus.
- */
- if ((baseclass == PCI_CLASS_BRIDGE) &&
- (subclass == PCI_SUBCLASS_BRIDGE_HOST))
- resMisc |= ResOverlap;
-
- basep = &pcrp->pci_base0;
- for (i = 0; i < 6; i++) {
- if (basep[i]) {
- if (PCI_MAP_IS_IO(basep[i])) {
- if (pcrp->pci_command & PCI_CMD_IO_ENABLE)
- res = activeRes;
- else
- res = inactiveRes;
- P_I_RANGE(range, pcrp->tag, PCIGETIO(basep[i]),
- pcrp->basesize[i], ResExcIoBlock | resMisc)
- } else if (!PCI_MAP_IS64BITMEM(basep[i])) {
- if (pcrp->pci_command & PCI_CMD_MEM_ENABLE)
- res = activeRes;
- else
- res = inactiveRes;
- P_M_RANGE(range, pcrp->tag, PCIGETMEMORY(basep[i]),
- pcrp->basesize[i], ResExcMemBlock | resMisc)
- } else {
- i++;
-#if defined(LONG64) || defined(WORD64)
- P_M_RANGE(range,pcrp->tag,PCIGETMEMORY64(basep[i - 1]),
- pcrp->basesize[i - 1], ResExcMemBlock | resMisc)
-#else
- if (basep[i])
- continue;
- P_M_RANGE(range, pcrp->tag, PCIGETMEMORY(basep[i - 1]),
- pcrp->basesize[i - 1], ResExcMemBlock | resMisc)
-#endif
- if (pcrp->pci_command & PCI_CMD_MEM_ENABLE)
- res = activeRes;
- else
- res = inactiveRes;
- }
- if (range.rBegin) { /* catch cases where PCI base is unset */
- tmp = xf86AddResToList(NULL, &range, -1);
- removeOverlapsWithBridges(pcrp->busnum,tmp);
- *res = xf86JoinResLists(tmp,*res);
- }
- }
- }
-
- /* Ignore disabled non-video ROMs */
- if ((pcrp->pci_command & PCI_CMD_MEM_ENABLE) &&
- (pcrp->pci_baserom & PCI_MAP_ROM_DECODE_ENABLE)) {
- P_M_RANGE(range,pcrp->tag,PCIGETROM(pcrp->pci_baserom),
- pcrp->basesize[6], ResExcMemBlock | resMisc);
- if (range.rBegin) {
- tmp = xf86AddResToList(NULL, &range, -1);
- removeOverlapsWithBridges(pcrp->busnum, tmp);
- *activeRes = xf86JoinResLists(tmp, *activeRes);
- }
- }
- }
-
- if (*activeRes) {
- xf86MsgVerb(X_INFO, 3, "Active PCI resource ranges:\n");
- xf86PrintResList(3, *activeRes);
- }
- if (*inactiveRes) {
- xf86MsgVerb(X_INFO, 3, "Inactive PCI resource ranges:\n");
- xf86PrintResList(3, *inactiveRes);
- }
-
- /*
- * Adjust ranges based on the assumption that there are no real
- * overlaps in the PCI base allocations. This assumption should be
- * reasonable in most cases. It may be possible to refine the
- * approximated PCI base sizes by considering bus mapping information
- * from PCI-PCI bridges.
- */
-
- if (*activeRes) {
- /* Check for overlaps */
- for (pRes = *activeRes; pRes; pRes = pRes->next) {
- if (ResCanOverlap(&pRes->val)) {
- range = pRes->val;
-
- RemoveOverlaps(pRes, *activeRes, TRUE, TRUE);
- RemoveOverlaps(pRes, *inactiveRes, TRUE,
- (xf86Info.estimateSizesAggressively > 0));
-
- if (range.rEnd > pRes->block_end) {
- correctPciSize(range.rBegin, range.rEnd - range.rBegin,
- pRes->block_end - pRes->block_begin,
- pRes->res_type);
- xf86MsgVerb(X_INFO, 3,
- "PCI %s resource overlap reduced 0x%08lx"
- " from 0x%08lx to 0x%08lx\n",
- ((pRes->res_type & ResPhysMask) == ResMem) ?
- "Memory" : "I/O",
- range.rBegin, range.rEnd, pRes->block_end);
- }
- }
- }
- xf86MsgVerb(X_INFO, 3,
- "Active PCI resource ranges after removing overlaps:\n");
- xf86PrintResList(3, *activeRes);
- }
-
- if (*inactiveRes) {
- /* Check for overlaps */
- for (pRes = *inactiveRes; pRes; pRes = pRes->next) {
- if (ResCanOverlap(&pRes->val)) {
- range = pRes->val;
-
- RemoveOverlaps(pRes, *activeRes, TRUE,
- (xf86Info.estimateSizesAggressively > 1));
- RemoveOverlaps(pRes, *inactiveRes, TRUE,
- (xf86Info.estimateSizesAggressively > 1));
-
- if (range.rEnd > pRes->block_end) {
- correctPciSize(range.rBegin, range.rEnd - range.rBegin,
- pRes->block_end - pRes->block_begin,
- pRes->res_type);
- xf86MsgVerb(X_INFO, 3,
- "PCI %s resource overlap reduced 0x%08lx"
- " from 0x%08lx to 0x%08lx\n",
- ((pRes->res_type & ResPhysMask) == ResMem) ?
- "Memory" : "I/O",
- range.rBegin, range.rEnd, pRes->block_end);
- }
-
- }
- }
- xf86MsgVerb(X_INFO, 3,
- "Inactive PCI resource ranges after removing overlaps:\n");
- xf86PrintResList(3, *inactiveRes);
- }
-}
-
-resPtr
-ResourceBrokerInitPci(resPtr *osRes)
-{
- resPtr activeRes, inactiveRes;
- resPtr tmp;
-
- /* Get bus-specific system resources (PCI) */
- xf86GetPciRes(&activeRes, &inactiveRes);
-
- /*
- * Adjust OS-reported resource ranges based on the assumption that there
- * are no overlaps with the PCI base allocations. This should be a good
- * assumption because writes to PCI address space won't be routed directly
- * to host memory.
- */
-
- for (tmp = *osRes; tmp; tmp = tmp->next)
- RemoveOverlaps(tmp, activeRes, FALSE, TRUE);
-
- xf86MsgVerb(X_INFO, 3, "OS-reported resource ranges after removing"
- " overlaps with PCI:\n");
- xf86PrintResList(3, *osRes);
-
- pciAvoidRes = xf86AddRangesToList(pciAvoidRes,PciAvoid,-1);
- for (tmp = pciAvoidRes; tmp; tmp = tmp->next)
- RemoveOverlaps(tmp, activeRes, FALSE, TRUE);
- tmp = xf86DupResList(*osRes);
- pciAvoidRes = xf86JoinResLists(pciAvoidRes,tmp);
-
- return (xf86JoinResLists(activeRes,inactiveRes));
-}
-
-
-/*
- * PCI Resource modification
- */
-static Bool
-fixPciResource(int prt, memType alignment, pciVideoPtr pvp, unsigned long type)
-{
- int res_n;
- memType *p_base;
- int *p_size;
- unsigned char p_type;
- resPtr AccTmp = NULL;
- resPtr orgAcc = NULL;
- resPtr *pAcc = &AccTmp;
- resPtr avoid = NULL;
- resRange range;
- resPtr resSize = NULL;
- resPtr w_tmp, w = NULL, w_2nd = NULL;
- PCITAG tag;
- PciBusPtr pbp = xf86PciBus;
- pciConfigPtr pcp;
- resPtr tmp;
-
- if (!pvp) return FALSE;
- tag = pciTag(pvp->bus,pvp->device,pvp->func);
- pcp = pvp->thisCard;
-
- type &= ResAccMask;
- if (!type) type = ResShared;
- if (prt < 6) {
- if (pvp->memBase[prt]) {
- type |= ResMem;
- res_n = prt;
- p_base = &(pvp->memBase[res_n]);
- p_size = &(pvp->size[res_n]);
- p_type = pvp->type[res_n];
- if (!PCI_MAP_IS64BITMEM(pvp->type[res_n])) {
- PCI_M_RANGE(range,tag,0,0xffffffff,ResExcMemBlock);
- resSize = xf86AddResToList(resSize,&range,-1);
- }
- } else if (pvp->ioBase[prt]){
- type |= ResIo;
- res_n = prt;
- p_base = &(pvp->ioBase[res_n]);
- p_size = &(pvp->size[res_n]);
- p_type = pvp->type[res_n];
- PCI_I_RANGE(range, tag, 0, 0xffffffff, ResExcIoBlock);
- resSize = xf86AddResToList(resSize, &range, -1);
- } else return FALSE;
- } else if (prt == 6) {
- type |= ResMem;
- res_n = 0xff; /* special flag for bios rom */
- p_base = &(pvp->biosBase);
- p_size = &(pvp->biosSize);
- /* XXX This should also include the PCI_MAP_MEMORY_TYPE_MASK part */
- p_type = 0;
- PCI_M_RANGE(range,tag,0,0xffffffff,ResExcMemBlock);
- resSize = xf86AddResToList(resSize,&range,-1);
- } else return FALSE;
-
- if (! *p_base) return FALSE;
-
- type |= (range.type & ResDomain) | ResBlock;
-
- /* setup avoid: PciAvoid is bus range: convert later */
- avoid = xf86DupResList(pciAvoidRes);
-
- while (pbp) {
- if (pbp->secondary == pvp->bus) {
- if ((type & ResPhysMask) == ResMem) {
- if (((p_type & PCI_MAP_MEMORY_CACHABLE)
-#if 0 /*EE*/
- || (res_n == 0xff)/* bios should also be prefetchable */
-#endif
- )) {
- if (pbp->preferred_pmem)
- w = xf86FindIntersectOfLists(pbp->preferred_pmem,
- ResRange);
- else if (pbp->pmem)
- w = xf86FindIntersectOfLists(pbp->pmem,ResRange);
-
- if (pbp->preferred_mem)
- w_2nd = xf86FindIntersectOfLists(pbp->preferred_mem,
- ResRange);
- else if (pbp->mem)
- w_2nd = xf86FindIntersectOfLists(pbp->mem,
- ResRange);
- } else {
- if (pbp->preferred_mem)
- w = xf86FindIntersectOfLists(pbp->preferred_mem,
- ResRange);
- else if (pbp->mem)
- w = xf86FindIntersectOfLists(pbp->mem,ResRange);
- }
- } else {
- if (pbp->preferred_io)
- w = xf86FindIntersectOfLists(pbp->preferred_io,ResRange);
- if (pbp->io)
- w = xf86FindIntersectOfLists(pbp->io,ResRange);
- }
- } else if (pbp->primary == pvp->bus) {
- if ((type & ResPhysMask) == ResMem) {
- tmp = xf86DupResList(pbp->preferred_pmem);
- avoid = xf86JoinResLists(avoid, tmp);
- tmp = xf86DupResList(pbp->preferred_mem);
- avoid = xf86JoinResLists(avoid, tmp);
- } else {
- tmp = xf86DupResList(pbp->preferred_io);
- avoid = xf86JoinResLists(avoid, tmp);
- }
- }
- pbp = pbp->next;
- }
-
- /* convert bus based entries in avoid list to host base */
- pciConvertListToHost(pvp->bus,pvp->device,pvp->func, avoid);
-
- if (!w)
- w = xf86DupResList(ResRange);
- xf86MsgVerb(X_INFO, 3, "window:\n");
- xf86PrintResList(3, w);
- xf86MsgVerb(X_INFO, 3, "resSize:\n");
- xf86PrintResList(3, resSize);
-
- if (resSize) {
- w_tmp = w;
- w = xf86FindIntersectOfLists(w,resSize);
- xf86FreeResList(w_tmp);
- if (w_2nd) {
- w_tmp = w_2nd;
- w_2nd = xf86FindIntersectOfLists(w_2nd,resSize);
- xf86FreeResList(w_tmp);
- }
- xf86FreeResList(resSize);
- }
- xf86MsgVerb(X_INFO, 3, "window fixed:\n");
- xf86PrintResList(3, w);
-
- if (!alignment)
- alignment = (1 << (*p_size)) - 1;
-
- /* Access list holds bios resources -- remove this one */
-#ifdef NOTYET
- AccTmp = xf86DupResList(Acc);
- while ((*pAcc)) {
- if ((((*pAcc)->res_type & (type & ~ResAccMask))
- == (type & ~ResAccMask))
- && ((*pAcc)->block_begin == (B2H(tag,(*p_base),type)))
- && ((*pAcc)->block_end == (B2H(tag,
- (*p_base)+SIZE(*p_size),type)))) {
- resPtr acc_tmp = (*pAcc)->next;
- xfree((*pAcc));
- (*pAcc) = acc_tmp;
- break;
- } else
- pAcc = &((*pAcc)->next);
- }
- /* check if we really need to fix anything */
- P_X_RANGE(range,tag,(*p_base),(*p_base) + SIZE((*p_size)),type);
- if (!ChkConflict(&range,avoid,SETUP)
- && !ChkConflict(&range,AccTmp,SETUP)
- && ((B2H(tag,(*p_base),type) & PCI_SIZE(type,tag,alignment)
- == range->block_begin)
- && ((xf86IsSubsetOf(range,w)
- || (w_2nd && xf86IsSubsetOf(range,w_2n))))) {
-#ifdef DEBUG
- ErrorF("nothing to fix\n");
-#endif
- xf86FreeResList(AccTmp);
- xf86FreeResList(w);
- xf86FreeResList(w_2nd);
- xf86FreeResList(avoid);
- return TRUE;
- }
-#ifdef DEBUG
- ErrorF("removing old resource\n");
-#endif
- orgAcc = Acc;
- Acc = AccTmp;
-#else
- orgAcc = xf86DupResList(Acc);
- pAcc = &Acc;
- while (*pAcc) {
- if ((((*pAcc)->res_type & (ResTypeMask|ResExtMask)) ==
- (type & ~ResAccMask))
- && ((*pAcc)->block_begin == B2H(tag,(*p_base),type))
- && ((*pAcc)->block_end == B2H(tag,(*p_base) + SIZE(*p_size),
- type))) {
-#ifdef DEBUG
- ErrorF("removing old resource\n");
-#endif
- tmp = *pAcc;
- *pAcc = (*pAcc)->next;
- tmp->next = NULL;
- xf86FreeResList(tmp);
- break;
- } else
- pAcc = &((*pAcc)->next);
- }
-#endif
-
-#ifdef DEBUG
- ErrorF("base: 0x%lx alignment: 0x%lx host alignment: 0x%lx size[bit]: 0x%x\n",
- (*p_base),alignment,PCI_SIZE(type,tag,alignment),(*p_size));
- xf86MsgVerb(X_INFO, 3, "window:\n");
- xf86PrintResList(3, w);
- if (w_2nd)
- xf86MsgVerb(X_INFO, 3, "2nd window:\n");
- xf86PrintResList(3, w_2nd);
- xf86ErrorFVerb(3,"avoid:\n");
- xf86PrintResList(3,avoid);
-#endif
- w_tmp = w;
- while (w) {
- if ((type & ResTypeMask) == (w->res_type & ResTypeMask)) {
-#ifdef DEBUG
- ErrorF("block_begin: 0x%lx block_end: 0x%lx\n",w->block_begin,
- w->block_end);
-#endif
- range = xf86GetBlock(type,PCI_SIZE(type,tag,alignment + 1),
- w->block_begin, w->block_end,
- PCI_SIZE(type,tag,alignment),avoid);
- if (range.type != ResEnd)
- break;
- }
- w = w->next;
- }
- xf86FreeResList(w_tmp);
- /* if unsuccessful and memory prefetchable try non-prefetchable */
- if (range.type == ResEnd && w_2nd) {
- w_tmp = w_2nd;
- while (w_2nd) {
- if ((type & ResTypeMask) == (w_2nd->res_type & ResTypeMask)) {
-#ifdef DEBUG
- ErrorF("block_begin: 0x%lx block_end: 0x%lx\n",w_2nd->block_begin,
- w_2nd->block_end);
-#endif
- range = xf86GetBlock(type,PCI_SIZE(type,tag,alignment + 1),
- w_2nd->block_begin, w_2nd->block_end,
- PCI_SIZE(type,tag,alignment),avoid);
- if (range.type != ResEnd)
- break;
- }
- w_2nd = w_2nd->next;
- }
- xf86FreeResList(w_tmp);
- }
- xf86FreeResList(avoid);
-
- if (range.type == ResEnd) {
- xf86MsgVerb(X_ERROR,3,"Cannot find a replacement memory range\n");
- xf86FreeResList(Acc);
- Acc = orgAcc;
- return FALSE;
- }
- xf86FreeResList(orgAcc);
-#ifdef DEBUG
- ErrorF("begin: 0x%lx, end: 0x%lx\n",range.a,range.b);
-#endif
-
- (*p_size) = 0;
- while (alignment >> (*p_size))
- (*p_size)++;
- (*p_base) = H2B(tag,range.rBegin,type);
-#ifdef DEBUG
- ErrorF("New PCI res %i base: 0x%lx, size: 0x%lx, type %s\n",
- res_n,(*p_base),(1 << (*p_size)),
- ((type & ResPhysMask) == ResMem) ? "Mem" : "Io");
-#endif
- if (res_n != 0xff) {
- if ((type & ResPhysMask) == ResMem)
- pvp->memBase[prt] = range.rBegin;
- else
- pvp->ioBase[prt] = range.rBegin;
- ((CARD32 *)(&(pcp->pci_base0)))[res_n] =
- (CARD32)(*p_base) | (CARD32)(p_type);
- pciWriteLong(tag, PCI_CMD_BASE_REG + res_n * sizeof(CARD32),
- ((CARD32 *)(&(pcp->pci_base0)))[res_n]);
- if (PCI_MAP_IS64BITMEM(p_type)) {
-#if defined(LONG64) || defined(WORD64)
- ((CARD32 *)(&(pcp->pci_base0)))[res_n + 1] =
- (CARD32)(*p_base >> 32);
- pciWriteLong(tag, PCI_CMD_BASE_REG + (res_n + 1) * sizeof(CARD32),
- ((CARD32 *)(&(pcp->pci_base0)))[res_n + 1]);
-#else
- ((CARD32 *)(&(pcp->pci_base0)))[res_n + 1] = 0;
- pciWriteLong(tag, PCI_CMD_BASE_REG + (res_n + 1) * sizeof(CARD32),
- 0);
-#endif
- }
- } else {
- pvp->biosBase = range.rBegin;
- pcp->pci_baserom = (pciReadLong(tag,PCI_CMD_BIOS_REG) & 0x01) |
- (CARD32)(*p_base);
- pciWriteLong(tag, PCI_CMD_BIOS_REG, pcp->pci_baserom);
- }
- /* @@@ fake BIOS allocated resource */
- range.type |= ResBios;
- Acc = xf86AddResToList(Acc, &range,-1);
-
- return TRUE;
-
-}
-
-Bool
-xf86FixPciResource(int entityIndex, int prt, memType alignment,
- unsigned long type)
-{
- pciVideoPtr pvp = xf86GetPciInfoForEntity(entityIndex);
- return fixPciResource(prt, alignment, pvp, type);
-}
-
-resPtr
-xf86ReallocatePciResources(int entityIndex, resPtr pRes)
-{
- pciVideoPtr pvp = xf86GetPciInfoForEntity(entityIndex);
- resPtr pBad = NULL,pResTmp;
- unsigned int prt = 0;
- int i;
-
- if (!pvp) return pRes;
-
- while (pRes) {
- switch (pRes->res_type & ResPhysMask) {
- case ResMem:
- if (pRes->block_begin == B2M(TAG(pvp),pvp->biosBase) &&
- pRes->block_end == B2M(TAG(pvp),pvp->biosBase
- + SIZE(pvp->biosSize)))
- prt = 6;
- else for (i = 0 ; i < 6; i++)
- if ((pRes->block_begin == B2M(TAG(pvp),pvp->memBase[i]))
- && (pRes->block_end == B2M(TAG(pvp),pvp->memBase[i]
- + SIZE(pvp->size[i])))) {
- prt = i;
- break;
- }
- break;
- case ResIo:
- for (i = 0 ; i < 6; i++)
- if (pRes->block_begin == B2I(TAG(pvp),pvp->ioBase[i])
- && pRes->block_end == B2I(TAG(pvp),pvp->ioBase[i]
- + SIZE(pvp->size[i]))) {
- prt = i;
- break;
- }
- break;
- }
-
- if (!prt) return pRes;
-
- pResTmp = pRes->next;
- if (! fixPciResource(prt, 0, pvp, pRes->res_type)) {
- pRes->next = pBad;
- pBad = pRes;
- } else
- xfree(pRes);
-
- pRes = pResTmp;
- }
- return pBad;
-}
-
-/*
- * BIOS releated
- */
-memType
-getValidBIOSBase(PCITAG tag, int num)
-{
- pciVideoPtr pvp = NULL;
- PciBusPtr pbp;
- resPtr m = NULL;
- resPtr tmp, avoid, mem = NULL;
- resRange range;
- memType ret;
- int n = 0;
- int i;
- CARD32 biosSize, alignment;
-
- if (!xf86PciVideoInfo) return 0;
-
- while ((pvp = xf86PciVideoInfo[n++])) {
- if (pciTag(pvp->bus,pvp->device,pvp->func) == tag)
- break;
- }
- if (!pvp) return 0;
-
- biosSize = pvp->biosSize;
- alignment = (1 << biosSize) - 1;
- if (biosSize > 24)
- biosSize = 24;
-
- switch ((romBaseSource)num) {
- case ROM_BASE_PRESET:
- return 0; /* This should not happen */
- case ROM_BASE_BIOS:
- /* In some cases the BIOS base register contains the size mask */
- if ((memType)(-1 << biosSize) == PCIGETROM(pvp->biosBase))
- return 0;
- /* Make sure we don't conflict with our own mem resources */
- for (i = 0; i < 6; i++) {
- if (!pvp->memBase[i])
- continue;
- P_M_RANGE(range,TAG(pvp),pvp->memBase[i],pvp->size[i],
- ResExcMemBlock);
- mem = xf86AddResToList(mem,&range,-1);
- }
- P_M_RANGE(range, TAG(pvp),pvp->biosBase,biosSize,ResExcMemBlock);
- ret = pvp->biosBase;
- break;
- case ROM_BASE_MEM0:
- case ROM_BASE_MEM1:
- case ROM_BASE_MEM2:
- case ROM_BASE_MEM3:
- case ROM_BASE_MEM4:
- case ROM_BASE_MEM5:
- if (!pvp->memBase[num] || (pvp->size[num] < biosSize))
- return 0;
- P_M_RANGE(range, TAG(pvp),pvp->memBase[num],biosSize,
- ResExcMemBlock);
- ret = pvp->memBase[num];
- break;
- case ROM_BASE_FIND:
- ret = 0;
- break;
- default:
- return 0; /* This should not happen */
- }
-
- /* Now find the ranges for validation */
- avoid = xf86DupResList(pciAvoidRes);
- pbp = xf86PciBus;
- while (pbp) {
- if (pbp->secondary == pvp->bus) {
- if (pbp->preferred_pmem)
- tmp = xf86DupResList(pbp->preferred_pmem);
- else
- tmp = xf86DupResList(pbp->pmem);
- m = xf86JoinResLists(m,tmp);
- if (pbp->preferred_mem)
- tmp = xf86DupResList(pbp->preferred_mem);
- else
- tmp = xf86DupResList(pbp->mem);
- m = xf86JoinResLists(m,tmp);
- tmp = m;
- while (tmp) {
- tmp->block_end = min(tmp->block_end,PCI_MEM32_LENGTH_MAX);
- tmp = tmp->next;
- }
- } else if ((pbp->primary == pvp->bus) &&
- (pbp->secondary >= 0) &&
- (pbp->primary != pbp->secondary)) {
- tmp = xf86DupResList(pbp->preferred_pmem);
- avoid = xf86JoinResLists(avoid, tmp);
- tmp = xf86DupResList(pbp->pmem);
- avoid = xf86JoinResLists(avoid, tmp);
- tmp = xf86DupResList(pbp->preferred_mem);
- avoid = xf86JoinResLists(avoid, tmp);
- tmp = xf86DupResList(pbp->mem);
- avoid = xf86JoinResLists(avoid, tmp);
- }
- pbp = pbp->next;
- }
- pciConvertListToHost(pvp->bus,pvp->device,pvp->func, avoid);
- if (mem)
- pciConvertListToHost(pvp->bus,pvp->device,pvp->func, mem);
-
- if (!ret) {
- /* Return a possible window */
- while (m) {
- range = xf86GetBlock(RANGE_TYPE(ResExcMemBlock, xf86GetPciDomain(tag)),
- PCI_SIZE(ResMem, TAG(pvp), 1 << biosSize),
- m->block_begin, m->block_end,
- PCI_SIZE(ResMem, TAG(pvp), alignment),
- avoid);
- if (range.type != ResEnd) {
- ret = M2B(TAG(pvp), range.rBase);
- break;
- }
- m = m->next;
- }
- } else {
-#if !defined(__ia64__) /* on ia64, trust the kernel, don't look for overlaps */
- if (!xf86IsSubsetOf(range, m) ||
- ChkConflict(&range, avoid, SETUP)
- || (mem && ChkConflict(&range, mem, SETUP)))
- ret = 0;
-#endif
- }
-
- xf86FreeResList(avoid);
- xf86FreeResList(m);
- return ret;
-}
-
-/*
- * xf86Bus.c interface
- */
-
-void
-xf86PciProbe(void)
-{
- /*
- * Initialise the pcidata entry points.
- */
-#ifdef XFree86LOADER
- xf86SetupPciIds = (ScanPciSetupProcPtr)LoaderSymbol("ScanPciSetupPciIds");
- xf86ClosePciIds = (ScanPciCloseProcPtr)LoaderSymbol("ScanPciClosePciIds");
- xf86FindPciNamesByDevice =
- (ScanPciFindByDeviceProcPtr)LoaderSymbol("ScanPciFindPciNamesByDevice");
- xf86FindPciNamesBySubsys =
- (ScanPciFindBySubsysProcPtr)LoaderSymbol("ScanPciFindPciNamesBySubsys");
- xf86FindPciClassBySubsys =
- (ScanPciFindClassBySubsysProcPtr)LoaderSymbol("ScanPciFindPciClassBySubsys");
- xf86FindPciClassByDevice =
- (ScanPciFindClassByDeviceProcPtr)LoaderSymbol("ScanPciFindPciClassByDevice");
-#else
- xf86SetupPciIds = ScanPciSetupPciIds;
- xf86ClosePciIds = ScanPciClosePciIds;
- xf86FindPciNamesByDevice = ScanPciFindPciNamesByDevice;
- xf86FindPciNamesBySubsys = ScanPciFindPciNamesBySubsys;
- xf86FindPciClassBySubsys = ScanPciFindPciClassBySubsys;
- xf86FindPciClassByDevice = ScanPciFindPciClassByDevice;
-#endif
-
- if (!xf86SetupPciIds())
- FatalError("xf86SetupPciIds() failed\n");
-
- FindPCIVideoInfo();
-}
-
-static void alignBridgeRanges(PciBusPtr PciBusBase, PciBusPtr primary);
-
-static void
-printBridgeInfo(PciBusPtr PciBus)
-{
- char primary[8], secondary[8], subordinate[8], brbus[8];
-
- xf86FormatPciBusNumber(PciBus->primary, primary);
- xf86FormatPciBusNumber(PciBus->secondary, secondary);
- xf86FormatPciBusNumber(PciBus->subordinate, subordinate);
- xf86FormatPciBusNumber(PciBus->brbus, brbus);
-
- xf86MsgVerb(X_INFO, 3, "Bus %s: bridge is at (%s:%d:%d), (%s,%s,%s),"
- " BCTRL: 0x%04x (VGA_EN is %s)\n",
- secondary, brbus, PciBus->brdev, PciBus->brfunc,
- primary, secondary, subordinate, PciBus->brcontrol,
- (PciBus->brcontrol & PCI_PCI_BRIDGE_VGA_EN) ?
- "set" : "cleared");
- if (PciBus->preferred_io) {
- xf86MsgVerb(X_INFO, 3,
- "Bus %s I/O range:\n", secondary);
- xf86PrintResList(3, PciBus->preferred_io);
- }
- if (PciBus->preferred_mem) {
- xf86MsgVerb(X_INFO, 3,
- "Bus %s non-prefetchable memory range:\n", secondary);
- xf86PrintResList(3, PciBus->preferred_mem);
- }
- if (PciBus->preferred_pmem) {
- xf86MsgVerb(X_INFO, 3,
- "Bus %s prefetchable memory range:\n", secondary);
- xf86PrintResList(3, PciBus->preferred_pmem);
- }
-}
-
-static PciBusPtr
-xf86GetPciBridgeInfo(void)
-{
- const pciConfigPtr *pcrpp;
- pciConfigPtr pcrp;
- pciBusInfo_t *pBusInfo;
- resRange range;
- PciBusPtr PciBus, PciBusBase = NULL;
- PciBusPtr *pnPciBus = &PciBusBase;
- int MaxBus = 0;
- int i, domain;
- int primary, secondary, subordinate;
- memType base, limit;
-
- resPtr pciBusAccWindows = xf86PciBusAccWindowsFromOS();
-
- if (xf86PciInfo == NULL)
- return NULL;
-
- /* Add each bridge */
- for (pcrpp = xf86PciInfo, pcrp = *pcrpp; pcrp; pcrp = *(++pcrpp)) {
- if (pcrp->busnum > MaxBus)
- MaxBus = pcrp->busnum;
- if ((pcrp->pci_base_class == PCI_CLASS_BRIDGE) ||
- (((pcrp->listed_class >> 8) & 0xff) == PCI_CLASS_BRIDGE)) {
- int sub_class;
- sub_class = (pcrp->listed_class & 0xffff) ?
- (pcrp->listed_class & 0xff) : pcrp->pci_sub_class;
- domain = xf86GetPciDomain(pcrp->tag);
-
- switch (sub_class) {
- case PCI_SUBCLASS_BRIDGE_PCI:
- /* something fishy about the header? If so: just ignore! */
- if ((pcrp->pci_header_type & 0x7f) != 0x01) {
- xf86MsgVerb(X_WARNING, 3, "PCI-PCI bridge at %x:%x:%x has"
- " unexpected header: 0x%x",
- pcrp->busnum, pcrp->devnum,
- pcrp->funcnum, pcrp->pci_header_type);
- break;
- }
-
- domain = pcrp->busnum & 0x0000FF00;
- primary = pcrp->busnum;
- secondary = domain | pcrp->pci_secondary_bus_number;
- subordinate = domain | pcrp->pci_subordinate_bus_number;
-
- /* Is this the correct bridge? If not, ignore it */
- pBusInfo = pcrp->businfo;
- if (pBusInfo && (pcrp != pBusInfo->bridge)) {
- xf86MsgVerb(X_WARNING, 3, "PCI bridge mismatch for bus %x:"
- " %x:%x:%x and %x:%x:%x\n", secondary,
- pcrp->busnum, pcrp->devnum, pcrp->funcnum,
- pBusInfo->bridge->busnum,
- pBusInfo->bridge->devnum,
- pBusInfo->bridge->funcnum);
- break;
- }
-
- if (pBusInfo && pBusInfo->funcs->pciGetBridgeBuses)
- (*pBusInfo->funcs->pciGetBridgeBuses)(secondary,
- &primary,
- &secondary,
- &subordinate);
-
- if (!pcrp->fakeDevice && (primary >= secondary)) {
- xf86MsgVerb(X_WARNING, 3, "Misconfigured PCI bridge"
- " %x:%x:%x (%x,%x)\n",
- pcrp->busnum, pcrp->devnum, pcrp->funcnum,
- primary, secondary);
- break;
- }
-
- *pnPciBus = PciBus = xnfcalloc(1, sizeof(PciBusRec));
- pnPciBus = &PciBus->next;
-
- PciBus->primary = primary;
- PciBus->secondary = secondary;
- PciBus->subordinate = subordinate;
-
- PciBus->brbus = pcrp->busnum;
- PciBus->brdev = pcrp->devnum;
- PciBus->brfunc = pcrp->funcnum;
-
- PciBus->subclass = sub_class;
- PciBus->interface = pcrp->pci_prog_if;
-
- if (pBusInfo && pBusInfo->funcs->pciControlBridge)
- PciBus->brcontrol =
- (*pBusInfo->funcs->pciControlBridge)(secondary, 0, 0);
- else
- PciBus->brcontrol = pcrp->pci_bridge_control;
-
- if (pBusInfo && pBusInfo->funcs->pciGetBridgeResources) {
- (*pBusInfo->funcs->pciGetBridgeResources)(secondary,
- (pointer *)&PciBus->preferred_io,
- (pointer *)&PciBus->preferred_mem,
- (pointer *)&PciBus->preferred_pmem);
- break;
- }
-
- if ((pcrp->pci_command & PCI_CMD_IO_ENABLE) &&
- (pcrp->pci_upper_io_base || pcrp->pci_io_base ||
- pcrp->pci_upper_io_limit || pcrp->pci_io_limit)) {
- base = (pcrp->pci_upper_io_base << 16) |
- ((pcrp->pci_io_base & 0xf0u) << 8);
- limit = (pcrp->pci_upper_io_limit << 16) |
- ((pcrp->pci_io_limit & 0xf0u) << 8) | 0x0fff;
- /*
- * Deal with bridge ISA mode (256 wide ranges spaced 1K
- * apart, but only in the first 64K).
- */
- if (pcrp->pci_bridge_control & PCI_PCI_BRIDGE_ISA_EN) {
- while ((base <= (CARD16)(-1)) && (base <= limit)) {
- PCI_I_RANGE(range, pcrp->tag,
- base, base + (CARD8)(-1),
- ResIo | ResBlock | ResExclusive);
- PciBus->preferred_io =
- xf86AddResToList(PciBus->preferred_io,
- &range, -1);
- base += 0x0400;
- }
- }
- if (base <= limit) {
- PCI_I_RANGE(range, pcrp->tag, base, limit,
- ResIo | ResBlock | ResExclusive);
- PciBus->preferred_io =
- xf86AddResToList(PciBus->preferred_io, &range, -1);
- }
- }
- if (pcrp->pci_command & PCI_CMD_MEM_ENABLE) {
- /*
- * The P2P spec requires these next two, but some bridges
- * don't comply. Err on the side of caution, making the not
- * so bold assumption that no bridge would ever re-route the
- * bottom megabyte.
- */
- if (pcrp->pci_mem_base || pcrp->pci_mem_limit) {
- base = pcrp->pci_mem_base & 0xfff0u;
- limit = pcrp->pci_mem_limit & 0xfff0u;
- if (base <= limit) {
- PCI_M_RANGE(range, pcrp->tag,
- base << 16, (limit << 16) | 0x0fffff,
- ResMem | ResBlock | ResExclusive);
- PciBus->preferred_mem =
- xf86AddResToList(PciBus->preferred_mem, &range, -1);
- }
- }
-
- if (pcrp->pci_prefetch_mem_base ||
- pcrp->pci_prefetch_mem_limit ||
- pcrp->pci_prefetch_upper_mem_base ||
- pcrp->pci_prefetch_upper_mem_limit) {
- base = pcrp->pci_prefetch_mem_base & 0xfff0u;
- limit = pcrp->pci_prefetch_mem_limit & 0xfff0u;
-#if defined(LONG64) || defined(WORD64)
- base |= (memType)pcrp->pci_prefetch_upper_mem_base << 16;
- limit |= (memType)pcrp->pci_prefetch_upper_mem_limit << 16;
-#endif
- if (base <= limit) {
- PCI_M_RANGE(range, pcrp->tag,
- base << 16, (limit << 16) | 0xfffff,
- ResMem | ResBlock | ResExclusive);
- PciBus->preferred_pmem =
- xf86AddResToList(PciBus->preferred_pmem,
- &range, -1);
- }
- }
- }
- break;
-
- case PCI_SUBCLASS_BRIDGE_CARDBUS:
- /* something fishy about the header? If so: just ignore! */
- if ((pcrp->pci_header_type & 0x7f) != 0x02) {
- xf86MsgVerb(X_WARNING, 3, "PCI-CardBus bridge at %x:%x:%x"
- " has unexpected header: 0x%x",
- pcrp->busnum, pcrp->devnum,
- pcrp->funcnum, pcrp->pci_header_type);
- break;
- }
-
- domain = pcrp->busnum & 0x0000FF00;
- primary = pcrp->busnum;
- secondary = domain | pcrp->pci_cb_cardbus_bus_number;
- subordinate = domain | pcrp->pci_subordinate_bus_number;
-
- /* Is this the correct bridge? If not, ignore it */
- pBusInfo = pcrp->businfo;
- if (pBusInfo && (pcrp != pBusInfo->bridge)) {
- xf86MsgVerb(X_WARNING, 3, "CardBus bridge mismatch for bus"
- " %x: %x:%x:%x and %x:%x:%x\n", secondary,
- pcrp->busnum, pcrp->devnum, pcrp->funcnum,
- pBusInfo->bridge->busnum,
- pBusInfo->bridge->devnum,
- pBusInfo->bridge->funcnum);
- break;
- }
-
- if (pBusInfo && pBusInfo->funcs->pciGetBridgeBuses)
- (*pBusInfo->funcs->pciGetBridgeBuses)(secondary,
- &primary,
- &secondary,
- &subordinate);
-
- if (primary >= secondary) {
- if (pcrp->pci_cb_cardbus_bus_number != 0)
- xf86MsgVerb(X_WARNING, 3, "Misconfigured CardBus"
- " bridge %x:%x:%x (%x,%x)\n",
- pcrp->busnum, pcrp->devnum, pcrp->funcnum,
- primary, secondary);
- break;
- }
-
- *pnPciBus = PciBus = xnfcalloc(1, sizeof(PciBusRec));
- pnPciBus = &PciBus->next;
-
- PciBus->primary = primary;
- PciBus->secondary = secondary;
- PciBus->subordinate = subordinate;
-
- PciBus->brbus = pcrp->busnum;
- PciBus->brdev = pcrp->devnum;
- PciBus->brfunc = pcrp->funcnum;
-
- PciBus->subclass = sub_class;
- PciBus->interface = pcrp->pci_prog_if;
-
- if (pBusInfo && pBusInfo->funcs->pciControlBridge)
- PciBus->brcontrol =
- (*pBusInfo->funcs->pciControlBridge)(secondary, 0, 0);
- else
- PciBus->brcontrol = pcrp->pci_bridge_control;
-
- if (pBusInfo && pBusInfo->funcs->pciGetBridgeResources) {
- (*pBusInfo->funcs->pciGetBridgeResources)(secondary,
- (pointer *)&PciBus->preferred_io,
- (pointer *)&PciBus->preferred_mem,
- (pointer *)&PciBus->preferred_pmem);
- break;
- }
-
- if (pcrp->pci_command & PCI_CMD_IO_ENABLE) {
- if (pcrp->pci_cb_iobase0) {
- base = PCI_CB_IOBASE(pcrp->pci_cb_iobase0);
- limit = PCI_CB_IOLIMIT(pcrp->pci_cb_iolimit0);
-
- /*
- * Deal with bridge ISA mode (256-wide ranges spaced 1K
- * apart (start to start), but only in the first 64K).
- */
- if (pcrp->pci_bridge_control & PCI_PCI_BRIDGE_ISA_EN) {
- while ((base <= (CARD16)(-1)) &&
- (base <= limit)) {
- PCI_I_RANGE(range, pcrp->tag,
- base, base + (CARD8)(-1),
- ResIo | ResBlock | ResExclusive);
- PciBus->preferred_io =
- xf86AddResToList(PciBus->preferred_io,
- &range, -1);
- base += 0x0400;
- }
- }
-
- if (base <= limit) {
- PCI_I_RANGE(range, pcrp->tag, base, limit,
- ResIo | ResBlock | ResExclusive);
- PciBus->preferred_io =
- xf86AddResToList(PciBus->preferred_io,
- &range, -1);
- }
- }
-
- if (pcrp->pci_cb_iobase1) {
- base = PCI_CB_IOBASE(pcrp->pci_cb_iobase1);
- limit = PCI_CB_IOLIMIT(pcrp->pci_cb_iolimit1);
-
- /*
- * Deal with bridge ISA mode (256-wide ranges spaced 1K
- * apart (start to start), but only in the first 64K).
- */
- if (pcrp->pci_bridge_control & PCI_PCI_BRIDGE_ISA_EN) {
- while ((base <= (CARD16)(-1)) &&
- (base <= limit)) {
- PCI_I_RANGE(range, pcrp->tag,
- base, base + (CARD8)(-1),
- ResIo | ResBlock | ResExclusive);
- PciBus->preferred_io =
- xf86AddResToList(PciBus->preferred_io,
- &range, -1);
- base += 0x0400;
- }
- }
-
- if (base <= limit) {
- PCI_I_RANGE(range, pcrp->tag, base, limit,
- ResIo | ResBlock | ResExclusive);
- PciBus->preferred_io =
- xf86AddResToList(PciBus->preferred_io,
- &range, -1);
- }
- }
- }
-
- if (pcrp->pci_command & PCI_CMD_MEM_ENABLE) {
- if ((pcrp->pci_cb_membase0) &&
- (pcrp->pci_cb_membase0 <= pcrp->pci_cb_memlimit0)) {
- PCI_M_RANGE(range, pcrp->tag,
- pcrp->pci_cb_membase0 & ~0x0fff,
- pcrp->pci_cb_memlimit0 | 0x0fff,
- ResMem | ResBlock | ResExclusive);
- if (pcrp->pci_bridge_control &
- PCI_CB_BRIDGE_CTL_PREFETCH_MEM0)
- PciBus->preferred_pmem =
- xf86AddResToList(PciBus->preferred_pmem,
- &range, -1);
- else
- PciBus->preferred_mem =
- xf86AddResToList(PciBus->preferred_mem,
- &range, -1);
- }
- if ((pcrp->pci_cb_membase1) &&
- (pcrp->pci_cb_membase1 <= pcrp->pci_cb_memlimit1)) {
- PCI_M_RANGE(range, pcrp->tag,
- pcrp->pci_cb_membase1 & ~0x0fff,
- pcrp->pci_cb_memlimit1 | 0x0fff,
- ResMem | ResBlock | ResExclusive);
- if (pcrp->pci_bridge_control &
- PCI_CB_BRIDGE_CTL_PREFETCH_MEM1)
- PciBus->preferred_pmem =
- xf86AddResToList(PciBus->preferred_pmem,
- &range, -1);
- else
- PciBus->preferred_mem =
- xf86AddResToList(PciBus->preferred_mem,
- &range, -1);
- }
- }
-
- break;
-
- case PCI_SUBCLASS_BRIDGE_ISA:
- case PCI_SUBCLASS_BRIDGE_EISA:
- case PCI_SUBCLASS_BRIDGE_MC:
- *pnPciBus = PciBus = xnfcalloc(1, sizeof(PciBusRec));
- pnPciBus = &PciBus->next;
- PciBus->primary = pcrp->busnum;
- PciBus->secondary = PciBus->subordinate = -1;
- PciBus->brbus = pcrp->busnum;
- PciBus->brdev = pcrp->devnum;
- PciBus->brfunc = pcrp->funcnum;
- PciBus->subclass = sub_class;
- PciBus->brcontrol = PCI_PCI_BRIDGE_VGA_EN;
- break;
-
- case PCI_SUBCLASS_BRIDGE_HOST:
- /* Is this the correct bridge? If not, ignore bus info */
- pBusInfo = pcrp->businfo;
-
- if (!pBusInfo || pBusInfo == HOST_NO_BUS)
- break;
-
- secondary = 0;
- /* Find "secondary" bus segment */
- while (pBusInfo != pciBusInfo[secondary])
- secondary++;
- if (pcrp != pBusInfo->bridge) {
- xf86MsgVerb(X_WARNING, 3, "Host bridge mismatch for"
- " bus %x: %x:%x:%x and %x:%x:%x\n",
- pBusInfo->primary_bus,
- pcrp->busnum, pcrp->devnum, pcrp->funcnum,
- pBusInfo->bridge->busnum,
- pBusInfo->bridge->devnum,
- pBusInfo->bridge->funcnum);
- pBusInfo = NULL;
- }
-
- *pnPciBus = PciBus = xnfcalloc(1, sizeof(PciBusRec));
- pnPciBus = &PciBus->next;
-
-
- PciBus->primary = PciBus->secondary = secondary;
- PciBus->subordinate = pciNumBuses - 1;
-
- if (pBusInfo->funcs->pciGetBridgeBuses)
- (*pBusInfo->funcs->pciGetBridgeBuses)
- (secondary,
- &PciBus->primary,
- &PciBus->secondary,
- &PciBus->subordinate);
-
- PciBus->brbus = pcrp->busnum;
- PciBus->brdev = pcrp->devnum;
- PciBus->brfunc = pcrp->funcnum;
-
- PciBus->subclass = sub_class;
-
- if (pBusInfo && pBusInfo->funcs->pciControlBridge)
- PciBus->brcontrol =
- (*pBusInfo->funcs->pciControlBridge)(secondary, 0, 0);
- else
- PciBus->brcontrol = PCI_PCI_BRIDGE_VGA_EN;
-
- if (pBusInfo && pBusInfo->funcs->pciGetBridgeResources) {
- (*pBusInfo->funcs->pciGetBridgeResources)
- (secondary,
- (pointer *)&PciBus->preferred_io,
- (pointer *)&PciBus->preferred_mem,
- (pointer *)&PciBus->preferred_pmem);
- break;
- }
-
- PciBus->preferred_io =
- xf86ExtractTypeFromList(pciBusAccWindows,
- RANGE_TYPE(ResIo, domain));
- PciBus->preferred_mem =
- xf86ExtractTypeFromList(pciBusAccWindows,
- RANGE_TYPE(ResMem, domain));
- PciBus->preferred_pmem =
- xf86ExtractTypeFromList(pciBusAccWindows,
- RANGE_TYPE(ResMem, domain));
- break;
-
- default:
- break;
- }
- }
- }
- for (i = 0; i <= MaxBus; i++) { /* find PCI buses not attached to bridge */
- if (!pciBusInfo[i])
- continue;
- for (PciBus = PciBusBase; PciBus; PciBus = PciBus->next)
- if (PciBus->secondary == i) break;
- if (!PciBus) { /* We assume it's behind a HOST-PCI bridge */
- /*
- * Find the 'smallest' free HOST-PCI bridge, where 'small' is in
- * the order of pciTag().
- */
- PCITAG minTag = 0xFFFFFFFF, tag;
- PciBusPtr PciBusFound = NULL;
- for (PciBus = PciBusBase; PciBus; PciBus = PciBus->next)
- if ((PciBus->subclass == PCI_SUBCLASS_BRIDGE_HOST) &&
- (PciBus->secondary == -1) &&
- ((tag = pciTag(PciBus->brbus,PciBus->brdev,PciBus->brfunc))
- < minTag) ) {
- minTag = tag;
- PciBusFound = PciBus;
- }
- if (PciBusFound)
- PciBusFound->secondary = i;
- else { /* if nothing found it may not be visible: create new */
- /* Find a device on this bus */
- domain = 0;
- for (pcrpp = xf86PciInfo; (pcrp = *pcrpp); pcrpp++) {
- if (pcrp->busnum == i) {
- domain = xf86GetPciDomain(pcrp->tag);
- break;
- }
- }
- *pnPciBus = PciBus = xnfcalloc(1, sizeof(PciBusRec));
- pnPciBus = &PciBus->next;
- PciBus->primary = PciBus->secondary = i;
- PciBus->subclass = PCI_SUBCLASS_BRIDGE_HOST;
- PciBus->brcontrol = PCI_PCI_BRIDGE_VGA_EN;
- PciBus->preferred_io =
- xf86ExtractTypeFromList(pciBusAccWindows,
- RANGE_TYPE(ResIo, domain));
- PciBus->preferred_mem =
- xf86ExtractTypeFromList(pciBusAccWindows,
- RANGE_TYPE(ResMem, domain));
- PciBus->preferred_pmem =
- xf86ExtractTypeFromList(pciBusAccWindows,
- RANGE_TYPE(ResMem, domain));
- }
- }
- }
-
- for (PciBus = PciBusBase; PciBus; PciBus = PciBus->next) {
- if (PciBus->primary == PciBus->secondary) {
- alignBridgeRanges(PciBusBase, PciBus);
- }
- }
-
- for (PciBus = PciBusBase; PciBus; PciBus = PciBus->next) {
- switch (PciBus->subclass) {
- case PCI_SUBCLASS_BRIDGE_PCI:
- if (PciBus->interface == PCI_IF_BRIDGE_PCI_SUBTRACTIVE)
- xf86MsgVerb(X_INFO, 3, "Subtractive PCI-to-PCI bridge:\n");
- else
- xf86MsgVerb(X_INFO, 3, "PCI-to-PCI bridge:\n");
- break;
- case PCI_SUBCLASS_BRIDGE_CARDBUS:
- xf86MsgVerb(X_INFO, 3, "PCI-to-CardBus bridge:\n");
- break;
- case PCI_SUBCLASS_BRIDGE_HOST:
- xf86MsgVerb(X_INFO, 3, "Host-to-PCI bridge:\n");
- break;
- case PCI_SUBCLASS_BRIDGE_ISA:
- xf86MsgVerb(X_INFO, 3, "PCI-to-ISA bridge:\n");
- break;
- case PCI_SUBCLASS_BRIDGE_EISA:
- xf86MsgVerb(X_INFO, 3, "PCI-to-EISA bridge:\n");
- break;
- case PCI_SUBCLASS_BRIDGE_MC:
- xf86MsgVerb(X_INFO, 3, "PCI-to-MCA bridge:\n");
- break;
- default:
- break;
- }
- printBridgeInfo(PciBus);
- }
- xf86FreeResList(pciBusAccWindows);
- return PciBusBase;
-}
-
-static void
-alignBridgeRanges(PciBusPtr PciBusBase, PciBusPtr primary)
-{
- PciBusPtr PciBus;
-
- for (PciBus = PciBusBase; PciBus; PciBus = PciBus->next) {
- if ((PciBus != primary) && (PciBus->primary != -1)
- && (PciBus->primary == primary->secondary)) {
- resPtr tmp;
- tmp = xf86FindIntersectOfLists(primary->preferred_io,
- PciBus->preferred_io);
- xf86FreeResList(PciBus->preferred_io);
- PciBus->preferred_io = tmp;
- tmp = xf86FindIntersectOfLists(primary->preferred_pmem,
- PciBus->preferred_pmem);
- xf86FreeResList(PciBus->preferred_pmem);
- PciBus->preferred_pmem = tmp;
- tmp = xf86FindIntersectOfLists(primary->preferred_mem,
- PciBus->preferred_mem);
- xf86FreeResList(PciBus->preferred_mem);
- PciBus->preferred_mem = tmp;
-
- /* Deal with subtractive decoding */
- switch (PciBus->subclass) {
- case PCI_SUBCLASS_BRIDGE_PCI:
- if (PciBus->interface != PCI_IF_BRIDGE_PCI_SUBTRACTIVE)
- break;
- /* Fall through */
-#if 0 /* Not yet */
- case PCI_SUBCLASS_BRIDGE_ISA:
- case PCI_SUBCLASS_BRIDGE_EISA:
- case PCI_SUBCLASS_BRIDGE_MC:
-#endif
- if (!(PciBus->io = primary->io))
- PciBus->io = primary->preferred_io;
- if (!(PciBus->mem = primary->mem))
- PciBus->mem = primary->preferred_mem;
- if (!(PciBus->pmem = primary->pmem))
- PciBus->pmem = primary->preferred_pmem;
- default:
- break;
- }
-
- alignBridgeRanges(PciBusBase, PciBus);
- }
- }
-}
-
-void
-ValidatePci(void)
-{
- pciVideoPtr pvp, pvp1;
- PciBusPtr pbp;
- pciConfigPtr pcrp, *pcrpp;
- CARD32 *basep;
- resPtr Sys;
- resRange range;
- int n = 0, m, i;
-
- if (!xf86PciVideoInfo) return;
-
- /*
- * Mark all pciInfoRecs that need to be validated. These are
- * the ones which have been assigned to a screen.
- */
- Sys = xf86DupResList(osRes);
- /* Only validate graphics devices in use */
- for (i=0; i<xf86NumScreens; i++) {
- for (m = 0; m < xf86Screens[i]->numEntities; m++)
- if ((pvp = xf86GetPciInfoForEntity(xf86Screens[i]->entityList[m])))
- pvp->validate = TRUE;
- }
-
- /*
- * Collect all background PCI resources we need to validate against.
- * These are all resources which don't belong to PCINONSYSTEMCLASSES
- * and which have not been assigned to an entity.
- */
- /* First get the PCIINFOCLASSES */
- m = 0;
- while ((pvp = xf86PciVideoInfo[m++])) {
- /* is it a PCINONSYSTEMCLASS? */
- if (PCINONSYSTEMCLASSES(pvp->class, pvp->subclass))
- continue;
- /* has it an Entity assigned to it? */
- for (i=0; i<xf86NumEntities; i++) {
- EntityPtr p = xf86Entities[i];
- if (p->busType != BUS_PCI)
- continue;
- if (p->pciBusId.bus == pvp->bus
- && p->pciBusId.device == pvp->device
- && p->pciBusId.func == pvp->func)
- break;
- }
- if (i != xf86NumEntities) /* found an Entity for this one */
- continue;
-
- for (i = 0; i<6; i++) {
- if (pvp->ioBase[i]) {
- PV_I_RANGE(range,pvp,i,ResExcIoBlock);
- Sys = xf86AddResToList(Sys,&range,-1);
- } else if (pvp->memBase[i]) {
- PV_M_RANGE(range,pvp,i,ResExcMemBlock);
- Sys = xf86AddResToList(Sys,&range,-1);
- }
- }
- }
- for (pcrpp = xf86PciInfo, pcrp = *pcrpp; pcrp; pcrp = *++(pcrpp)) {
-
- /* These were handled above */
- if (PCIINFOCLASSES(pcrp->pci_base_class, pcrp->pci_sub_class))
- continue;
-
- if ((pcrp->pci_header_type & 0x7f) ||
- !(pcrp->pci_command & (PCI_CMD_IO_ENABLE | PCI_CMD_MEM_ENABLE)))
- continue;
-
- basep = &pcrp->pci_base0;
- for (i = 0; i < 6; i++) {
- if (basep[i]) {
- if (PCI_MAP_IS_IO(basep[i])) {
- if (!(pcrp->pci_command & PCI_CMD_IO_ENABLE))
- continue;
- P_I_RANGE(range, pcrp->tag, PCIGETIO(basep[i]),
- pcrp->basesize[i], ResExcIoBlock)
- } else if (!PCI_MAP_IS64BITMEM(basep[i])) {
- if (!(pcrp->pci_command & PCI_CMD_MEM_ENABLE))
- continue;
- P_M_RANGE(range, pcrp->tag, PCIGETMEMORY(basep[i]),
- pcrp->basesize[i], ResExcMemBlock)
- } else {
- i++;
- if (!(pcrp->pci_command & PCI_CMD_MEM_ENABLE))
- continue;
-#if defined(LONG64) || defined(WORD64)
- P_M_RANGE(range, pcrp->tag, PCIGETMEMORY64(basep[i-1]),
- pcrp->basesize[i-1], ResExcMemBlock)
-#else
- if (basep[i])
- continue;
- P_M_RANGE(range, pcrp->tag, PCIGETMEMORY(basep[i-1]),
- pcrp->basesize[i-1], ResExcMemBlock)
-#endif
- }
- Sys = xf86AddResToList(Sys, &range, -1);
- }
- }
- if ((pcrp->pci_baserom) &&
- (pcrp->pci_command & PCI_CMD_MEM_ENABLE) &&
- (pcrp->pci_baserom & PCI_MAP_ROM_DECODE_ENABLE)) {
- P_M_RANGE(range,pcrp->tag,PCIGETROM(pcrp->pci_baserom),
- pcrp->basesize[6],ResExcMemBlock);
- Sys = xf86AddResToList(Sys, &range, -1);
- }
- }
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3,"Sys:\n");
- xf86PrintResList(3,Sys);
-#endif
-
- /*
- * The order the video devices are listed in is
- * just right: the lower buses come first.
- * This way we attempt to fix a conflict of
- * a lower bus device with a higher bus device
- * where we have more room to find different
- * resources.
- */
- while ((pvp = xf86PciVideoInfo[n++])) {
- resPtr res_mp = NULL, res_m_io = NULL;
- resPtr NonSys;
- resPtr tmp, avoid = NULL;
-
- if (!pvp->validate) continue;
- NonSys = xf86DupResList(Sys);
- m = n;
- while ((pvp1 = xf86PciVideoInfo[m++])) {
- if (!pvp1->validate) continue;
- for (i = 0; i<6; i++) {
- if (pvp1->ioBase[i]) {
- PV_I_RANGE(range,pvp1,i,ResExcIoBlock);
- NonSys = xf86AddResToList(NonSys,&range,-1);
- } else if (pvp1->memBase[i]) {
- PV_M_RANGE(range,pvp1,i,ResExcMemBlock);
- NonSys = xf86AddResToList(NonSys,&range,-1);
- }
- }
- }
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3,"NonSys:\n");
- xf86PrintResList(3,NonSys);
-#endif
- pbp = xf86PciBus;
- while (pbp) {
- if (pbp->secondary == pvp->bus) {
- if (pbp->preferred_pmem) {
- /* keep prefetchable separate */
- res_mp =
- xf86FindIntersectOfLists(pbp->preferred_pmem, ResRange);
- }
- if (pbp->pmem) {
- res_mp = xf86FindIntersectOfLists(pbp->pmem, ResRange);
- }
- if (pbp->preferred_mem) {
- res_m_io =
- xf86FindIntersectOfLists(pbp->preferred_mem, ResRange);
- }
- if (pbp->mem) {
- res_m_io = xf86FindIntersectOfLists(pbp->mem, ResRange);
- }
- if (pbp->preferred_io) {
- res_m_io = xf86JoinResLists(res_m_io,
- xf86FindIntersectOfLists(pbp->preferred_io, ResRange));
- }
- if (pbp->io) {
- res_m_io = xf86JoinResLists(res_m_io,
- xf86FindIntersectOfLists(pbp->preferred_io, ResRange));
- }
- } else if ((pbp->primary == pvp->bus) &&
- (pbp->secondary >= 0) &&
- (pbp->primary != pbp->secondary)) {
- tmp = xf86DupResList(pbp->preferred_pmem);
- avoid = xf86JoinResLists(avoid, tmp);
- tmp = xf86DupResList(pbp->preferred_mem);
- avoid = xf86JoinResLists(avoid, tmp);
- tmp = xf86DupResList(pbp->preferred_io);
- avoid = xf86JoinResLists(avoid, tmp);
- }
- pbp = pbp->next;
- }
- if (res_m_io == NULL)
- res_m_io = xf86DupResList(ResRange);
-
- pciConvertListToHost(pvp->bus,pvp->device,pvp->func, avoid);
-
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3,"avoid:\n");
- xf86PrintResList(3,avoid);
- xf86MsgVerb(X_INFO, 3,"prefetchable Memory:\n");
- xf86PrintResList(3,res_mp);
- xf86MsgVerb(X_INFO, 3,"MEM/IO:\n");
- xf86PrintResList(3,res_m_io);
-#endif
- for (i = 0; i < 6; i++) {
- int j;
- resPtr own = NULL;
- for (j = i+1; j < 6; j++) {
- if (pvp->ioBase[j]) {
- PV_I_RANGE(range,pvp,j,ResExcIoBlock);
- own = xf86AddResToList(own,&range,-1);
- } else if (pvp->memBase[j]) {
- PV_M_RANGE(range,pvp,j,ResExcMemBlock);
- own = xf86AddResToList(own,&range,-1);
- }
- }
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3, "own:\n");
- xf86PrintResList(3, own);
-#endif
- if (pvp->ioBase[i]) {
- PV_I_RANGE(range,pvp,i,ResExcIoBlock);
- if (xf86IsSubsetOf(range,res_m_io)
- && ! ChkConflict(&range,own,SETUP)
- && ! ChkConflict(&range,avoid,SETUP)
- && ! ChkConflict(&range,NonSys,SETUP)) {
- xf86FreeResList(own);
- continue;
- }
- xf86MsgVerb(X_WARNING, 0,
- "****INVALID IO ALLOCATION**** b: 0x%lx e: 0x%lx "
- "correcting\a\n", range.rBegin,range.rEnd);
-#ifdef DEBUG
- sleep(2);
-#endif
- fixPciResource(i, 0, pvp, range.type);
- } else if (pvp->memBase[i]) {
- PV_M_RANGE(range,pvp,i,ResExcMemBlock);
- if (pvp->type[i] & PCI_MAP_MEMORY_CACHABLE) {
- if (xf86IsSubsetOf(range,res_mp)
- && ! ChkConflict(&range,own,SETUP)
- && ! ChkConflict(&range,avoid,SETUP)
- && ! ChkConflict(&range,NonSys,SETUP)) {
- xf86FreeResList(own);
- continue;
- }
- }
- if (xf86IsSubsetOf(range,res_m_io)
- && ! ChkConflict(&range,own,SETUP)
- && ! ChkConflict(&range,avoid,SETUP)
- && ! ChkConflict(&range,NonSys,SETUP)) {
- xf86FreeResList(own);
- continue;
- }
- xf86MsgVerb(X_WARNING, 0,
- "****INVALID MEM ALLOCATION**** b: 0x%lx e: 0x%lx "
- "correcting\a\n", range.rBegin,range.rEnd);
- if (ChkConflict(&range,own,SETUP)) {
- xf86MsgVerb(X_INFO,3,"own\n");
- xf86PrintResList(3,own);
- }
- if (ChkConflict(&range,avoid,SETUP)) {
- xf86MsgVerb(X_INFO,3,"avoid\n");
- xf86PrintResList(3,avoid);
- }
- if (ChkConflict(&range,NonSys,SETUP)) {
- xf86MsgVerb(X_INFO,3,"NonSys\n");
- xf86PrintResList(3,NonSys);
- }
-
-#ifdef DEBUG
- sleep(2);
-#endif
- fixPciResource(i, 0, pvp, range.type);
- }
- xf86FreeResList(own);
- }
- xf86FreeResList(avoid);
- xf86FreeResList(NonSys);
- xf86FreeResList(res_mp);
- xf86FreeResList(res_m_io);
- }
- xf86FreeResList(Sys);
-}
-
-resList
-GetImplicitPciResources(int entityIndex)
-{
- pciVideoPtr pvp;
- int i;
- resList list = NULL;
- int num = 0;
-
- if (! (pvp = xf86GetPciInfoForEntity(entityIndex))) return NULL;
-
- for (i = 0; i < 6; i++) {
- if (pvp->ioBase[i]) {
- list = xnfrealloc(list,sizeof(resRange) * (++num));
- PV_I_RANGE(list[num - 1],pvp,i,ResShrIoBlock | ResBios);
- } else if (pvp->memBase[i]) {
- list = xnfrealloc(list,sizeof(resRange) * (++num));
- PV_M_RANGE(list[num - 1],pvp,i,ResShrMemBlock | ResBios);
- }
- }
-#if 0
- if (pvp->biosBase) {
- list = xnfrealloc(list,sizeof(resRange) * (++num));
- PV_B_RANGE(list[num - 1],pvp,ResShrMemBlock | ResBios);
- }
-#endif
- list = xnfrealloc(list,sizeof(resRange) * (++num));
- list[num - 1].type = ResEnd;
-
- return list;
-}
-
-void
-initPciState(void)
-{
- int i = 0;
- int j = 0;
- pciVideoPtr pvp;
- pciAccPtr pcaccp;
-
- if (xf86PciAccInfo != NULL)
- return;
-
- if (xf86PciVideoInfo == NULL)
- return;
-
- while ((pvp = xf86PciVideoInfo[i]) != NULL) {
- i++;
- j++;
- xf86PciAccInfo = xnfrealloc(xf86PciAccInfo,
- sizeof(pciAccPtr) * (j + 1));
- xf86PciAccInfo[j] = NULL;
- pcaccp = xf86PciAccInfo[j - 1] = xnfalloc(sizeof(pciAccRec));
- pcaccp->busnum = pvp->bus;
- pcaccp->devnum = pvp->device;
- pcaccp->funcnum = pvp->func;
- pcaccp->arg.tag = pciTag(pvp->bus, pvp->device, pvp->func);
- pcaccp->ioAccess.AccessDisable = pciIoAccessDisable;
- pcaccp->ioAccess.AccessEnable = pciIoAccessEnable;
- pcaccp->ioAccess.arg = &pcaccp->arg;
- pcaccp->io_memAccess.AccessDisable = pciIo_MemAccessDisable;
- pcaccp->io_memAccess.AccessEnable = pciIo_MemAccessEnable;
- pcaccp->io_memAccess.arg = &pcaccp->arg;
- pcaccp->memAccess.AccessDisable = pciMemAccessDisable;
- pcaccp->memAccess.AccessEnable = pciMemAccessEnable;
- pcaccp->memAccess.arg = &pcaccp->arg;
- if (PCISHAREDIOCLASSES(pvp->class, pvp->subclass))
- pcaccp->ctrl = TRUE;
- else
- pcaccp->ctrl = FALSE;
- savePciState(pcaccp->arg.tag, &pcaccp->save);
- pcaccp->arg.ctrl = pcaccp->save.command;
- }
-}
-
-/*
- * initPciBusState() - fill out the BusAccRec for a PCI bus.
- * Theory: each bus is associated with one bridge connecting it
- * to its parent bus. The address of a bridge is therefore stored
- * in the BusAccRec of the bus it connects to. Each bus can
- * have several bridges connecting secondary buses to it. Only one
- * of these bridges can be open. Therefore the status of a bridge
- * associated with a bus is stored in the BusAccRec of the parent
- * the bridge connects to. The first member of the structure is
- * a pointer to a function that open access to this bus. This function
- * receives a pointer to the structure itself as argument. This
- * design should be common to BusAccRecs of any type of buses we
- * support. The remeinder of the structure is bus type specific.
- * In this case it contains a pointer to the structure of the
- * parent bus. Thus enabling access to a specific bus is simple:
- * 1. Close any bridge going to secondary buses.
- * 2. Climb down the ladder and enable any bridge on buses
- * on the path from the CPU to this bus.
- */
-
-void
-initPciBusState(void)
-{
- BusAccPtr pbap, pbap_tmp;
- PciBusPtr pbp = xf86PciBus;
- pciBusInfo_t *pBusInfo;
-
- while (pbp) {
- pbap = xnfcalloc(1,sizeof(BusAccRec));
- pbap->busdep.pci.bus = pbp->secondary;
- pbap->busdep.pci.primary_bus = pbp->primary;
- pbap->busdep_type = BUS_PCI;
- pbap->busdep.pci.acc = PCITAG_SPECIAL;
-
- if ((pbp->secondary >= 0) && (pbp->secondary < pciNumBuses) &&
- (pBusInfo = pciBusInfo[pbp->secondary]) &&
- pBusInfo->funcs->pciControlBridge) {
- pbap->type = BUS_PCI;
- pbap->save_f = savePciDrvBusState;
- pbap->restore_f = restorePciDrvBusState;
- pbap->set_f = pciSetBusAccess;
- pbap->enable_f = pciDrvBusAccessEnable;
- pbap->disable_f = pciDrvBusAccessDisable;
- savePciDrvBusState(pbap);
- } else switch (pbp->subclass) {
- case PCI_SUBCLASS_BRIDGE_HOST:
- pbap->type = BUS_PCI;
- pbap->set_f = pciSetBusAccess;
- break;
- case PCI_SUBCLASS_BRIDGE_PCI:
- case PCI_SUBCLASS_BRIDGE_CARDBUS:
- pbap->type = BUS_PCI;
- pbap->save_f = savePciBusState;
- pbap->restore_f = restorePciBusState;
- pbap->set_f = pciSetBusAccess;
- pbap->enable_f = pciBusAccessEnable;
- pbap->disable_f = pciBusAccessDisable;
- pbap->busdep.pci.acc = pciTag(pbp->brbus,pbp->brdev,pbp->brfunc);
- savePciBusState(pbap);
- break;
- case PCI_SUBCLASS_BRIDGE_ISA:
- case PCI_SUBCLASS_BRIDGE_EISA:
- case PCI_SUBCLASS_BRIDGE_MC:
- pbap->type = BUS_ISA;
- pbap->set_f = pciSetBusAccess;
- break;
- }
- pbap->next = xf86BusAccInfo;
- xf86BusAccInfo = pbap;
- pbp = pbp->next;
- }
-
- pbap = xf86BusAccInfo;
-
- while (pbap) {
- pbap->primary = NULL;
- if (pbap->busdep_type == BUS_PCI
- && pbap->busdep.pci.primary_bus > -1) {
- pbap_tmp = xf86BusAccInfo;
- while (pbap_tmp) {
- if (pbap_tmp->busdep_type == BUS_PCI &&
- pbap_tmp->busdep.pci.bus == pbap->busdep.pci.primary_bus) {
- /* Don't create loops */
- if (pbap == pbap_tmp)
- break;
- pbap->primary = pbap_tmp;
- break;
- }
- pbap_tmp = pbap_tmp->next;
- }
- }
- pbap = pbap->next;
- }
-}
-
-void
-PciStateEnter(void)
-{
- pciAccPtr paccp;
- int i = 0;
-
- if (xf86PciAccInfo == NULL)
- return;
-
- while ((paccp = xf86PciAccInfo[i]) != NULL) {
- i++;
- if (!paccp->ctrl)
- continue;
- savePciState(paccp->arg.tag, &paccp->save);
- restorePciState(paccp->arg.tag, &paccp->restore);
- paccp->arg.ctrl = paccp->restore.command;
- }
-}
-
-void
-PciBusStateEnter(void)
-{
- BusAccPtr pbap = xf86BusAccInfo;
-
- while (pbap) {
- if (pbap->save_f)
- pbap->save_f(pbap);
- pbap = pbap->next;
- }
-}
-
-void
-PciStateLeave(void)
-{
- pciAccPtr paccp;
- int i = 0;
-
- if (xf86PciAccInfo == NULL)
- return;
-
- while ((paccp = xf86PciAccInfo[i]) != NULL) {
- i++;
- if (!paccp->ctrl)
- continue;
- savePciState(paccp->arg.tag, &paccp->restore);
- restorePciState(paccp->arg.tag, &paccp->save);
- }
-}
-
-void
-PciBusStateLeave(void)
-{
- BusAccPtr pbap = xf86BusAccInfo;
-
- while (pbap) {
- if (pbap->restore_f)
- pbap->restore_f(pbap);
- pbap = pbap->next;
- }
-}
-
-void
-DisablePciAccess(void)
-{
- int i = 0;
- pciAccPtr paccp;
- if (xf86PciAccInfo == NULL)
- return;
-
- while ((paccp = xf86PciAccInfo[i]) != NULL) {
- i++;
- if (!paccp->ctrl) /* disable devices that are under control initially*/
- continue;
- pciIo_MemAccessDisable(paccp->io_memAccess.arg);
- }
-}
-
-void
-DisablePciBusAccess(void)
-{
- BusAccPtr pbap = xf86BusAccInfo;
-
- while (pbap) {
- if (pbap->disable_f)
- pbap->disable_f(pbap);
- if (pbap->primary)
- pbap->primary->current = NULL;
- pbap = pbap->next;
- }
-}
-
-/*
- * Public functions
- */
-
-Bool
-xf86IsPciDevPresent(int bus, int dev, int func)
-{
- int i = 0;
- pciConfigPtr pcp;
-
- while ((pcp = xf86PciInfo[i]) != NULL) {
- if ((pcp->busnum == bus)
- && (pcp->devnum == dev)
- && (pcp->funcnum == func))
- return TRUE;
- i++;
- }
- return FALSE;
-}
-
-/*
- * If the slot requested is already in use, return -1.
- * Otherwise, claim the slot for the screen requesting it.
- */
-
-int
-xf86ClaimPciSlot(int bus, int device, int func, DriverPtr drvp,
- int chipset, GDevPtr dev, Bool active)
-{
- EntityPtr p = NULL;
- pciAccPtr *ppaccp = xf86PciAccInfo;
- BusAccPtr pbap = xf86BusAccInfo;
-
- int num;
-
- if (xf86CheckPciSlot(bus, device, func)) {
- num = xf86AllocateEntity();
- p = xf86Entities[num];
- p->driver = drvp;
- p->chipset = chipset;
- p->busType = BUS_PCI;
- p->pciBusId.bus = bus;
- p->pciBusId.device = device;
- p->pciBusId.func = func;
- p->active = active;
- p->inUse = FALSE;
- if (dev)
- xf86AddDevToEntity(num, dev);
- /* Here we initialize the access structure */
- p->access = xnfcalloc(1,sizeof(EntityAccessRec));
- while (ppaccp && *ppaccp) {
- if ((*ppaccp)->busnum == bus
- && (*ppaccp)->devnum == device
- && (*ppaccp)->funcnum == func) {
- p->access->fallback = &(*ppaccp)->io_memAccess;
- p->access->pAccess = &(*ppaccp)->io_memAccess;
- (*ppaccp)->ctrl = TRUE; /* mark control if not already */
- break;
- }
- ppaccp++;
- }
- if (!ppaccp || !*ppaccp) {
- p->access->fallback = &AccessNULL;
- p->access->pAccess = &AccessNULL;
- }
-
- p->busAcc = NULL;
- while (pbap) {
- if (pbap->type == BUS_PCI && pbap->busdep.pci.bus == bus)
- p->busAcc = pbap;
- pbap = pbap->next;
- }
- fixPciSizeInfo(num);
-
- /* in case bios is enabled disable it */
- disablePciBios(pciTag(bus,device,func));
- pciSlotClaimed = TRUE;
-
- if (active) {
- /* Map in this domain's I/O space */
- p->domainIO = xf86MapDomainIO(-1, VIDMEM_MMIO,
- pciTag(bus, device, func), 0, 1);
- }
-
- return num;
- } else
- return -1;
-}
-
-/*
- * Get xf86PciVideoInfo for a driver.
- */
-pciVideoPtr *
-xf86GetPciVideoInfo(void)
-{
- return xf86PciVideoInfo;
-}
-
-/* --- Used by ATI driver, but also more generally useful */
-
-/*
- * Get the full xf86scanpci data.
- */
-pciConfigPtr *
-xf86GetPciConfigInfo(void)
-{
- return xf86PciInfo;
-}
-
-/*
- * Enable a device and route VGA to it. This is intended for a driver's
- * Probe(), before creating EntityRec's. Only one device can be thus enabled
- * at any one time, and should be disabled when the driver is done with it.
- *
- * The following special calls are also available:
- *
- * pvp == NULL && rt == NONE disable previously enabled device
- * pvp != NULL && rt == NONE ensure device is disabled
- * pvp == NULL && rt != NONE disable >all< subsequent calls to this function
- * (done from xf86PostProbe())
- * The last combination has been removed! To do this cleanly we have
- * to implement stages and need to test at each stage dependent function
- * if it is allowed to execute.
- *
- * The device represented by pvp may not have been previously claimed.
- */
-void
-xf86SetPciVideo(pciVideoPtr pvp, resType rt)
-{
- static BusAccPtr pbap = NULL;
- static xf86AccessPtr pAcc = NULL;
- static Bool DoneProbes = FALSE;
- pciAccPtr pcaccp;
- int i;
-
- if (DoneProbes)
- return;
-
- /* Disable previous access */
- if (pAcc) {
- if (pAcc->AccessDisable)
- (*pAcc->AccessDisable)(pAcc->arg);
- pAcc = NULL;
- }
- if (pbap) {
- while (pbap->primary) {
- if (pbap->disable_f)
- (*pbap->disable_f)(pbap);
- pbap->primary->current = NULL;
- pbap = pbap->primary;
- }
- pbap = NULL;
- }
-
- /* Check for xf86PostProbe's magic combo */
- if (!pvp) {
- if (rt != NONE)
- DoneProbes = TRUE;
- return;
- }
-
- /* Validate device */
- if (!xf86PciVideoInfo || !xf86PciAccInfo || !xf86BusAccInfo)
- return;
-
- for (i = 0; pvp != xf86PciVideoInfo[i]; i++)
- if (!xf86PciVideoInfo[i])
- return;
-
- /* Ignore request for claimed adapters */
- if (!xf86CheckPciSlot(pvp->bus, pvp->device, pvp->func))
- return;
-
- /* Find pciAccRec structure */
- for (i = 0; ; i++) {
- if (!(pcaccp = xf86PciAccInfo[i]))
- return;
- if ((pvp->bus == pcaccp->busnum) &&
- (pvp->device == pcaccp->devnum) &&
- (pvp->func == pcaccp->funcnum))
- break;
- }
-
- if (rt == NONE) {
- /* This is a call to ensure the adapter is disabled */
- if (pcaccp->io_memAccess.AccessDisable)
- (*pcaccp->io_memAccess.AccessDisable)(pcaccp->io_memAccess.arg);
- return;
- }
-
- /* Find BusAccRec structure */
- for (pbap = xf86BusAccInfo; ; pbap = pbap->next) {
- if (!pbap)
- return;
- if (pvp->bus == pbap->busdep.pci.bus)
- break;
- }
-
- /* Route VGA */
- if (pbap->set_f)
- (*pbap->set_f)(pbap);
-
- /* Enable device */
- switch (rt) {
- case IO:
- pAcc = &pcaccp->ioAccess;
- break;
- case MEM_IO:
- pAcc = &pcaccp->io_memAccess;
- break;
- case MEM:
- pAcc = &pcaccp->memAccess;
- break;
- default: /* no compiler noise */
- break;
- }
-
- if (pAcc && pAcc->AccessEnable)
- (*pAcc->AccessEnable)(pAcc->arg);
-}
-
-/*
- * Parse a BUS ID string, and return the PCI bus parameters if it was
- * in the correct format for a PCI bus id.
- */
-
-Bool
-xf86ParsePciBusString(const char *busID, int *bus, int *device, int *func)
-{
- /*
- * The format is assumed to be "bus[@domain]:device[:func]", where domain,
- * bus, device and func are decimal integers. domain and func may be
- * omitted and assumed to be zero, although doing this isn't encouraged.
- */
-
- char *p, *s, *d;
- const char *id;
- int i;
-
- if (StringToBusType(busID, &id) != BUS_PCI)
- return FALSE;
-
- s = xstrdup(id);
- p = strtok(s, ":");
- if (p == NULL || *p == 0) {
- xfree(s);
- return FALSE;
- }
- d = strpbrk(p, "@");
- if (d != NULL) {
- *(d++) = 0;
- for (i = 0; d[i] != 0; i++) {
- if (!isdigit(d[i])) {
- xfree(s);
- return FALSE;
- }
- }
- }
- for (i = 0; p[i] != 0; i++) {
- if (!isdigit(p[i])) {
- xfree(s);
- return FALSE;
- }
- }
- *bus = atoi(p);
- if (d != NULL && *d != 0)
- *bus += atoi(d) << 8;
- p = strtok(NULL, ":");
- if (p == NULL || *p == 0) {
- xfree(s);
- return FALSE;
- }
- for (i = 0; p[i] != 0; i++) {
- if (!isdigit(p[i])) {
- xfree(s);
- return FALSE;
- }
- }
- *device = atoi(p);
- *func = 0;
- p = strtok(NULL, ":");
- if (p == NULL || *p == 0) {
- xfree(s);
- return TRUE;
- }
- for (i = 0; p[i] != 0; i++) {
- if (!isdigit(p[i])) {
- xfree(s);
- return FALSE;
- }
- }
- *func = atoi(p);
- xfree(s);
- return TRUE;
-}
-
-/*
- * Compare a BUS ID string with a PCI bus id. Return TRUE if they match.
- */
-
-Bool
-xf86ComparePciBusString(const char *busID, int bus, int device, int func)
-{
- int ibus, idevice, ifunc;
-
- if (xf86ParsePciBusString(busID, &ibus, &idevice, &ifunc)) {
- return bus == ibus && device == idevice && func == ifunc;
- } else {
- return FALSE;
- }
-}
-
-/*
- * xf86IsPrimaryPci() -- return TRUE if primary device
- * is PCI and bus, dev and func numbers match.
- */
-
-Bool
-xf86IsPrimaryPci(pciVideoPtr pPci)
-{
- if (primaryBus.type != BUS_PCI) return FALSE;
- return (pPci->bus == primaryBus.id.pci.bus &&
- pPci->device == primaryBus.id.pci.device &&
- pPci->func == primaryBus.id.pci.func);
-}
-
-/*
- * xf86CheckPciGAType() -- return type of PCI graphics adapter.
- */
-int
-xf86CheckPciGAType(pciVideoPtr pPci)
-{
- int i = 0;
- pciConfigPtr pcp;
-
- while ((pcp = xf86PciInfo[i]) != NULL) {
- if (pPci->bus == pcp->busnum && pPci->device == pcp->devnum
- && pPci->func == pcp->funcnum) {
- if (pcp->pci_base_class == PCI_CLASS_PREHISTORIC &&
- pcp->pci_sub_class == PCI_SUBCLASS_PREHISTORIC_VGA)
- return PCI_CHIP_VGA ;
- if (pcp->pci_base_class == PCI_CLASS_DISPLAY &&
- pcp->pci_sub_class == PCI_SUBCLASS_DISPLAY_VGA) {
- if (pcp->pci_prog_if == 0)
- return PCI_CHIP_VGA ;
- if (pcp->pci_prog_if == 1)
- return PCI_CHIP_8514;
- }
- return -1;
- }
- i++;
- }
- return -1;
-}
-
-/*
- * xf86GetPciInfoForEntity() -- Get the pciVideoRec of entity.
- */
-pciVideoPtr
-xf86GetPciInfoForEntity(int entityIndex)
-{
- pciVideoPtr *ppPci;
- EntityPtr p;
-
- if (entityIndex >= xf86NumEntities)
- return NULL;
-
- p = xf86Entities[entityIndex];
- if (p->busType != BUS_PCI)
- return NULL;
-
- for (ppPci = xf86PciVideoInfo; *ppPci != NULL; ppPci++) {
- if (p->pciBusId.bus == (*ppPci)->bus &&
- p->pciBusId.device == (*ppPci)->device &&
- p->pciBusId.func == (*ppPci)->func)
- return (*ppPci);
- }
- return NULL;
-}
-
-int
-xf86GetPciEntity(int bus, int dev, int func)
-{
- int i;
-
- for (i = 0; i < xf86NumEntities; i++) {
- EntityPtr p = xf86Entities[i];
- if (p->busType != BUS_PCI) continue;
-
- if (p->pciBusId.bus == bus &&
- p->pciBusId.device == dev &&
- p->pciBusId.func == func)
- return i;
- }
- return -1;
-}
-
-/*
- * xf86CheckPciMemBase() checks that the memory base value matches one of the
- * PCI base address register values for the given PCI device.
- */
-Bool
-xf86CheckPciMemBase(pciVideoPtr pPci, memType base)
-{
- int i;
-
- for (i = 0; i < 6; i++)
- if (base == pPci->memBase[i])
- return TRUE;
- return FALSE;
-}
-
-/*
- * Check if the slot requested is free. If it is already in use, return FALSE.
- */
-
-Bool
-xf86CheckPciSlot(int bus, int device, int func)
-{
- int i;
- EntityPtr p;
-
- for (i = 0; i < xf86NumEntities; i++) {
- p = xf86Entities[i];
- /* Check if this PCI slot is taken */
- if (p->busType == BUS_PCI && p->pciBusId.bus == bus &&
- p->pciBusId.device == device && p->pciBusId.func == func)
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/*
- * This used to load the scanpci module. The pcidata module is now used
- * (which the server always loads early). The main difference between the
- * two modules is size, and the scanpci module should only ever be loaded
- * when the X server is run with the -scanpci flag.
- *
- * To make sure that the required information is present in the pcidata
- * module, add a PCI_VENDOR_* macro for the relevant vendor to xf86PciInfo.h,
- * and add the class override data to ../etc/extrapci.ids.
- */
-
-static void
-getPciClassFlags(pciConfigPtr *pcrpp)
-{
- pciConfigPtr pcrp;
- int i = 0;
-
- if (!pcrpp)
- return;
- while ((pcrp = pcrpp[i])) {
- if (!(pcrp->listed_class =
- xf86FindPciClassBySubsys(pcrp->pci_subsys_vendor,
- pcrp->pci_subsys_card))) {
- pcrp->listed_class =
- xf86FindPciClassByDevice(pcrp->pci_vendor, pcrp->pci_device);
- }
- i++;
- }
-}
-
-/*
- * xf86FindPciVendorDevice() xf86FindPciClass(): These functions
- * are meant to be used by the pci bios emulation. Some bioses
- * need to see if there are _other_ chips of the same type around
- * so by setting pvp_exclude one pci device can be explicitely
- * _excluded if required.
- */
-pciVideoPtr
-xf86FindPciDeviceVendor(CARD16 vendorID, CARD16 deviceID,
- char n, pciVideoPtr pvp_exclude)
-{
- pciVideoPtr pvp, *ppvp;
- n++;
-
- for (ppvp = xf86PciVideoInfo, pvp =*ppvp; pvp ; pvp = *(++ppvp)) {
- if (pvp == pvp_exclude) continue;
- if ((pvp->vendor == vendorID) && (pvp->chipType == deviceID)) {
- if (!(--n)) break;
- }
- }
- return pvp;
-}
-
-pciVideoPtr
-xf86FindPciClass(CARD8 intf, CARD8 subClass, CARD16 class,
- char n, pciVideoPtr pvp_exclude)
-{
- pciVideoPtr pvp, *ppvp;
- n++;
-
- for (ppvp = xf86PciVideoInfo, pvp =*ppvp; pvp ; pvp = *(++ppvp)) {
- if (pvp == pvp_exclude) continue;
- if ((pvp->interface == intf) && (pvp->subclass == subClass)
- && (pvp->class == class)) {
- if (!(--n)) break;
- }
- }
- return pvp;
-}
-
-/*
- * This attempts to detect a multi-device card and sets up a list
- * of pci tags of the devices of this card. On some of these
- * cards the BIOS is not visible from all chipsets. We therefore
- * need to use the BIOS from a chipset where it is visible.
- * We do the following heuristics:
- * If we detect only identical pci devices on a bus we assume it's
- * a multi-device card. This assumption isn't true always, however.
- * One might just use identical cards on a bus. We therefore don't
- * detect this situation when we set up the PCI video info. Instead
- * we wait until an attempt to read the BIOS fails.
- */
-int
-pciTestMultiDeviceCard(int bus, int dev, int func, PCITAG** pTag)
-{
- pciConfigPtr *ppcrp = xf86PciInfo;
- pciConfigPtr pcrp = NULL;
- int i,j;
- Bool multicard = FALSE;
- Bool multifunc = FALSE;
- char str[256];
- char *str1;
-
- str1 = str;
- if (!pTag)
- return 0;
-
- *pTag = NULL;
-
- for (i=0; i < 8; i++) {
- j = 0;
-
- while (ppcrp[j]) {
- if (ppcrp[j]->busnum == bus && ppcrp[j]->funcnum == i) {
- pcrp = ppcrp[j];
- break;
- }
- j++;
- }
-
- if (!pcrp) return 0;
-
- /*
- * we check all functions here: since multifunc devices need
- * to implement func 0 we catch all devices on the bus when
- * i = 0
- */
- if (pcrp->pci_header_type &0x80)
- multifunc = TRUE;
-
- j = 0;
-
- while (ppcrp[j]) {
- if (ppcrp[j]->busnum == bus && ppcrp[j]->funcnum == i
- && ppcrp[j]->devnum != pcrp->devnum) {
- /* don't test subsys ID here. It might be set by POST
- - however some cards might not have been POSTed */
- if (ppcrp[j]->pci_device_vendor != pcrp->pci_device_vendor
- || ppcrp[j]->pci_header_type != pcrp->pci_header_type )
- return 0;
- else
- multicard = TRUE;
- }
- j++;
- }
- if (!multifunc)
- break;
- }
-
- if (!multicard)
- return 0;
-
- j = 0;
- i = 0;
- while (ppcrp[i]) {
- if (ppcrp[i]->busnum == bus && ppcrp[i]->funcnum == func) {
- str1 += sprintf(str1,"[%x:%x:%x]",ppcrp[i]->busnum,
- ppcrp[i]->devnum,ppcrp[i]->funcnum);
- *pTag = xnfrealloc(*pTag,sizeof(PCITAG) * (j + 1));
- (*pTag)[j++] = pciTag(ppcrp[i]->busnum,
- ppcrp[i]->devnum,ppcrp[i]->funcnum);
- }
- i++;
- }
- xf86MsgVerb(X_INFO,3,"Multi Device Card detected: %s\n",str);
- return j;
-}
-
-static void
-pciTagConvertRange2Host(PCITAG tag, resRange *pRange)
-{
- if (!(pRange->type & ResBus))
- return;
-
- switch(pRange->type & ResPhysMask) {
- case ResMem:
- switch(pRange->type & ResExtMask) {
- case ResBlock:
- pRange->rBegin = pciBusAddrToHostAddr(tag,PCI_MEM, pRange->rBegin);
- pRange->rEnd = pciBusAddrToHostAddr(tag,PCI_MEM, pRange->rEnd);
- break;
- case ResSparse:
- pRange->rBase = pciBusAddrToHostAddr(tag,PCI_MEM_SPARSE_BASE,
- pRange->rBegin);
- pRange->rMask = pciBusAddrToHostAddr(tag,PCI_MEM_SPARSE_MASK,
- pRange->rEnd);
- break;
- }
- break;
- case ResIo:
- switch(pRange->type & ResExtMask) {
- case ResBlock:
- pRange->rBegin = pciBusAddrToHostAddr(tag,PCI_IO, pRange->rBegin);
- pRange->rEnd = pciBusAddrToHostAddr(tag,PCI_IO, pRange->rEnd);
- break;
- case ResSparse:
- pRange->rBase = pciBusAddrToHostAddr(tag,PCI_IO_SPARSE_BASE
- , pRange->rBegin);
- pRange->rMask = pciBusAddrToHostAddr(tag,PCI_IO_SPARSE_MASK
- , pRange->rEnd);
- break;
- }
- break;
- }
-
- /* Set domain number */
- pRange->type &= ~(ResDomain | ResBus);
- pRange->type |= xf86GetPciDomain(tag) << 24;
-}
-
-static void
-pciConvertListToHost(int bus, int dev, int func, resPtr list)
-{
- PCITAG tag = pciTag(bus,dev,func);
- while (list) {
- pciTagConvertRange2Host(tag, &list->val);
- list = list->next;
- }
-}
-
-static void
-updateAccessInfoStatusControlInfo(PCITAG tag, CARD32 ctrl)
-{
- int i;
-
- if (!xf86PciAccInfo)
- return;
-
- for (i = 0; xf86PciAccInfo[i] != NULL; i++) {
- if (xf86PciAccInfo[i]->arg.tag == tag)
- xf86PciAccInfo[i]->arg.ctrl = ctrl;
- }
-}
-
-void
-pciConvertRange2Host(int entityIndex, resRange *pRange)
-{
- PCITAG tag;
- pciVideoPtr pvp;
-
- pvp = xf86GetPciInfoForEntity(entityIndex);
- if (!pvp) return;
- tag = TAG(pvp);
- pciTagConvertRange2Host(tag, pRange);
-}
-
-
-#ifdef INCLUDE_DEPRECATED
-void
-xf86EnablePciBusMaster(pciVideoPtr pPci, Bool enable)
-{
- CARD32 temp;
- PCITAG tag;
-
- if (!pPci) return;
-
- tag = pciTag(pPci->bus, pPci->device, pPci->func);
- temp = pciReadLong(tag, PCI_CMD_STAT_REG);
- if (enable) {
- updateAccessInfoStatusControlInfo(tag, temp | PCI_CMD_MASTER_ENABLE);
- pciWriteLong(tag, PCI_CMD_STAT_REG, temp | PCI_CMD_MASTER_ENABLE);
- } else {
- updateAccessInfoStatusControlInfo(tag, temp & ~PCI_CMD_MASTER_ENABLE);
- pciWriteLong(tag, PCI_CMD_STAT_REG, temp & ~PCI_CMD_MASTER_ENABLE);
- }
-}
-#endif /* INCLUDE_DEPRECATED */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86pciBus.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86pciBus.h
deleted file mode 100644
index 75d82fbcf..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86pciBus.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86pciBus.h,v 3.10 2003/08/24 17:36:56 dawes Exp $ */
-
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _XF86_PCI_BUS_H
-#define _XF86_PCI_BUS_H
-
-#define PCITAG_SPECIAL pciTag(0xFF,0xFF,0xFF)
-
-typedef struct {
- CARD32 command;
- CARD32 base[6];
- CARD32 biosBase;
-} pciSave, *pciSavePtr;
-
-typedef struct {
- PCITAG tag;
- CARD32 ctrl;
-} pciArg;
-
-typedef struct {
- int busnum;
- int devnum;
- int funcnum;
- pciArg arg;
- xf86AccessRec ioAccess;
- xf86AccessRec io_memAccess;
- xf86AccessRec memAccess;
- pciSave save;
- pciSave restore;
- Bool ctrl;
-} pciAccRec, *pciAccPtr;
-
-typedef union {
- CARD16 control;
-} pciBridgesSave, *pciBridgesSavePtr;
-
-typedef struct pciBusRec {
- int brbus, brdev, brfunc; /* ID of the bridge to this bus */
- int primary, secondary, subordinate;
- int subclass; /* bridge type */
- int interface;
- resPtr preferred_io; /* I/O range */
- resPtr preferred_mem; /* non-prefetchable memory range */
- resPtr preferred_pmem; /* prefetchable memory range */
- resPtr io; /* for subtractive PCI-PCI bridges */
- resPtr mem;
- resPtr pmem;
- int brcontrol; /* bridge_control byte */
- struct pciBusRec *next;
-} PciBusRec, *PciBusPtr;
-
-void xf86PciProbe(void);
-void ValidatePci(void);
-resList GetImplicitPciResources(int entityIndex);
-void initPciState(void);
-void initPciBusState(void);
-void DisablePciAccess(void);
-void DisablePciBusAccess(void);
-void PciStateEnter(void);
-void PciBusStateEnter(void);
-void PciStateLeave(void);
-void PciBusStateLeave(void);
-resPtr ResourceBrokerInitPci(resPtr *osRes);
-void pciConvertRange2Host(int entityIndex, resRange *pRange);
-void isaConvertRange2Host(resRange *pRange);
-
-extern pciAccPtr * xf86PciAccInfo;
-
-#endif /* _XF86_PCI_BUS_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86sbusBus.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86sbusBus.c
deleted file mode 100644
index 3d6576f52..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86sbusBus.c
+++ /dev/null
@@ -1,709 +0,0 @@
-/*
- * SBUS bus-specific code.
- *
- * Copyright (C) 2000 Jakub Jelinek (jakub@redhat.com)
- *
- * 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 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 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
- * JAKUB JELINEK 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.
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86sbusBus.c,v 3.6 2001/03/03 22:16:35 tsi Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <ctype.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Resources.h"
-#include "xf86cmap.h"
-
-#include "xf86Bus.h"
-
-#include "xf86sbusBus.h"
-#include "xf86Sbus.h"
-
-Bool sbusSlotClaimed = FALSE;
-
-static int xf86nSbusInfo;
-
-static void
-CheckSbusDevice(const char *device, int fbNum)
-{
- int fd, i;
- struct fbgattr fbattr;
- sbusDevicePtr psdp;
-
- fd = open(device, O_RDONLY, 0);
- if (fd < 0)
- return;
- memset(&fbattr, 0, sizeof(fbattr));
- if (ioctl(fd, FBIOGATTR, &fbattr) < 0) {
- if (ioctl(fd, FBIOGTYPE, &fbattr.fbtype) < 0) {
- close(fd);
- return;
- }
- }
- close(fd);
- for (i = 0; sbusDeviceTable[i].devId; i++)
- if (sbusDeviceTable[i].fbType == fbattr.fbtype.fb_type)
- break;
- if (! sbusDeviceTable[i].devId)
- return;
- xf86SbusInfo = xnfrealloc(xf86SbusInfo, sizeof(psdp) * (++xf86nSbusInfo + 1));
- xf86SbusInfo[xf86nSbusInfo] = NULL;
- xf86SbusInfo[xf86nSbusInfo - 1] = psdp = xnfcalloc(sizeof (sbusDevice), 1);
- psdp->devId = sbusDeviceTable[i].devId;
- psdp->fbNum = fbNum;
- psdp->device = xnfstrdup(device);
- psdp->width = fbattr.fbtype.fb_width;
- psdp->height = fbattr.fbtype.fb_height;
- psdp->fd = -1;
-}
-
-void
-xf86SbusProbe(void)
-{
- int i, useProm = 0;
- char fbDevName[32];
- sbusDevicePtr psdp, *psdpp;
-
- xf86SbusInfo = xalloc(sizeof(psdp));
- *xf86SbusInfo = NULL;
- for (i = 0; i < 32; i++) {
- sprintf(fbDevName, "/dev/fb%d", i);
- CheckSbusDevice(fbDevName, i);
- }
- if (sparcPromInit() >= 0) {
- useProm = 1;
- sparcPromAssignNodes();
- }
- for (psdpp = xf86SbusInfo; (psdp = *psdpp); psdpp++) {
- for (i = 0; sbusDeviceTable[i].devId; i++)
- if (sbusDeviceTable[i].devId == psdp->devId)
- psdp->descr = sbusDeviceTable[i].descr;
- /*
- * If we can use PROM information and found the PROM node for this
- * device, we can tell more about the card.
- */
- if (useProm && psdp->node.node) {
- char *prop, *promPath;
- int len, chiprev, vmsize;
-
- switch (psdp->devId) {
- case SBUS_DEVICE_MGX:
- prop = sparcPromGetProperty(&psdp->node, "fb_size", &len);
- if (prop && len == 4 && *(int *)prop == 0x400000)
- psdp->descr = "Quantum 3D MGXplus with 4M VRAM";
- break;
- case SBUS_DEVICE_CG6:
- chiprev = 0;
- vmsize = 0;
- prop = sparcPromGetProperty(&psdp->node, "chiprev", &len);
- if (prop && len == 4)
- chiprev = *(int *)prop;
- prop = sparcPromGetProperty(&psdp->node, "vmsize", &len);
- if (prop && len == 4)
- vmsize = *(int *)prop;
- switch (chiprev) {
- case 1:
- case 2:
- case 3:
- case 4:
- psdp->descr = "Sun Double width GX"; break;
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- psdp->descr = "Sun Single width GX"; break;
- case 11:
- switch (vmsize) {
- case 2:
- psdp->descr = "Sun Turbo GX with 1M VSIMM"; break;
- case 4:
- psdp->descr = "Sun Turbo GX Plus"; break;
- default:
- psdp->descr = "Sun Turbo GX"; break;
- }
- }
- break;
- case SBUS_DEVICE_CG14:
- prop = sparcPromGetProperty(&psdp->node, "reg", &len);
- vmsize = 0;
- if (prop && !(len % 12) && len > 0)
- vmsize = *(int *)(prop + len - 4);
- switch (vmsize) {
- case 0x400000:
- psdp->descr = "Sun SX with 4M VSIMM"; break;
- case 0x800000:
- psdp->descr = "Sun SX with 8M VSIMM"; break;
- }
- break;
- case SBUS_DEVICE_LEO:
- prop = sparcPromGetProperty(&psdp->node, "model", &len);
- if (prop && len > 0 && !strstr(prop, "501-2503"))
- psdp->descr = "Sun Turbo ZX";
- break;
- case SBUS_DEVICE_TCX:
- if (sparcPromGetBool(&psdp->node, "tcx-8-bit"))
- psdp->descr = "Sun TCX (8bit)";
- else
- psdp->descr = "Sun TCX (S24)";
- break;
- case SBUS_DEVICE_FFB:
- prop = sparcPromGetProperty(&psdp->node, "name", &len);
- chiprev = 0;
- prop = sparcPromGetProperty(&psdp->node, "board_type", &len);
- if (prop && len == 4)
- chiprev = *(int *)prop;
- if (strstr (prop, "afb")) {
- if (chiprev == 3)
- psdp->descr = "Sun|Elite3D-M6 Horizontal";
- } else {
- switch (chiprev) {
- case 0x08:
- psdp->descr = "Sun FFB 67MHz Creator"; break;
- case 0x0b:
- psdp->descr = "Sun FFB 67MHz Creator 3D"; break;
- case 0x1b:
- psdp->descr = "Sun FFB 75MHz Creator 3D"; break;
- case 0x20:
- case 0x28:
- psdp->descr = "Sun FFB2 Vertical Creator"; break;
- case 0x23:
- case 0x2b:
- psdp->descr = "Sun FFB2 Vertical Creator 3D"; break;
- case 0x30:
- psdp->descr = "Sun FFB2+ Vertical Creator"; break;
- case 0x33:
- psdp->descr = "Sun FFB2+ Vertical Creator 3D"; break;
- case 0x40:
- case 0x48:
- psdp->descr = "Sun FFB2 Horizontal Creator"; break;
- case 0x43:
- case 0x4b:
- psdp->descr = "Sun FFB2 Horizontal Creator 3D"; break;
- }
- }
- break;
- }
-
- xf86Msg(X_PROBED, "SBUS:(0x%08x) %s", psdp->node.node, psdp->descr);
- promPath = sparcPromNode2Pathname (&psdp->node);
- if (promPath) {
- xf86ErrorF(" at %s", promPath);
- xfree(promPath);
- }
- } else
- xf86Msg(X_PROBED, "SBUS: %s", psdp->descr);
- xf86ErrorF("\n");
- }
- if (useProm)
- sparcPromClose();
-}
-
-/*
- * Parse a BUS ID string, and return the SBUS bus parameters if it was
- * in the correct format for a SBUS bus id.
- */
-
-Bool
-xf86ParseSbusBusString(const char *busID, int *fbNum)
-{
- /*
- * The format is assumed to be one of:
- * "fbN", e.g. "fb1", which means the device corresponding to /dev/fbN
- * "nameN", e.g. "cgsix0", which means Nth instance of card NAME
- * "/prompath", e.g. "/sbus@0,10001000/cgsix@3,0" which is PROM pathname
- * to the device.
- */
-
- const char *id;
- int i, len;
-
- if (StringToBusType(busID, &id) != BUS_SBUS)
- return FALSE;
-
- if (*id != '/') {
- if (!strncmp (id, "fb", 2)) {
- if (!isdigit(id[2]))
- return FALSE;
- *fbNum = atoi(id + 2);
- return TRUE;
- } else {
- sbusDevicePtr *psdpp;
- int devId;
-
- for (i = 0, len = 0; sbusDeviceTable[i].devId; i++) {
- len = strlen(sbusDeviceTable[i].promName);
- if (!strncmp (sbusDeviceTable[i].promName, id, len)
- && isdigit(id[len]))
- break;
- }
- devId = sbusDeviceTable[i].devId;
- if (!devId) return FALSE;
- i = atoi(id + len);
- for (psdpp = xf86SbusInfo; *psdpp; ++psdpp) {
- if ((*psdpp)->devId != devId)
- continue;
- if (!i) {
- *fbNum = (*psdpp)->fbNum;
- return TRUE;
- }
- i--;
- }
- }
- return FALSE;
- }
-
- if (sparcPromInit() >= 0) {
- i = sparcPromPathname2Node(id);
- sparcPromClose();
- if (i) {
- sbusDevicePtr *psdpp;
- for (psdpp = xf86SbusInfo; *psdpp; ++psdpp) {
- if ((*psdpp)->node.node == i) {
- *fbNum = (*psdpp)->fbNum;
- return TRUE;
- }
- }
- }
- }
- return FALSE;
-}
-
-/*
- * Compare a BUS ID string with a SBUS bus id. Return TRUE if they match.
- */
-
-Bool
-xf86CompareSbusBusString(const char *busID, int fbNum)
-{
- int iFbNum;
-
- if (xf86ParseSbusBusString(busID, &iFbNum)) {
- return fbNum == iFbNum;
- } else {
- return FALSE;
- }
-}
-
-/*
- * Check if the slot requested is free. If it is already in use, return FALSE.
- */
-
-Bool
-xf86CheckSbusSlot(int fbNum)
-{
- int i;
- EntityPtr p;
-
- for (i = 0; i < xf86NumEntities; i++) {
- p = xf86Entities[i];
- /* Check if this SBUS slot is taken */
- if (p->busType == BUS_SBUS && p->sbusBusId.fbNum == fbNum)
- return FALSE;
- }
-
- return TRUE;
-}
-
-/*
- * If the slot requested is already in use, return -1.
- * Otherwise, claim the slot for the screen requesting it.
- */
-
-int
-xf86ClaimSbusSlot(sbusDevicePtr psdp, DriverPtr drvp,
- GDevPtr dev, Bool active)
-{
- EntityPtr p = NULL;
-
- int num;
-
- if (xf86CheckSbusSlot(psdp->fbNum)) {
- num = xf86AllocateEntity();
- p = xf86Entities[num];
- p->driver = drvp;
- p->chipset = -1;
- p->busType = BUS_SBUS;
- xf86AddDevToEntity(num, dev);
- p->sbusBusId.fbNum = psdp->fbNum;
- p->active = active;
- p->inUse = FALSE;
- /* Here we initialize the access structure */
- p->access = xnfcalloc(1,sizeof(EntityAccessRec));
- p->access->fallback = &AccessNULL;
- p->access->pAccess = &AccessNULL;
- sbusSlotClaimed = TRUE;
- return num;
- } else
- return -1;
-}
-
-int
-xf86MatchSbusInstances(const char *driverName, int sbusDevId,
- GDevPtr *devList, int numDevs, DriverPtr drvp,
- int **foundEntities)
-{
- int i,j;
- sbusDevicePtr psdp, *psdpp;
- int numClaimedInstances = 0;
- int allocatedInstances = 0;
- int numFound = 0;
- GDevPtr devBus = NULL;
- GDevPtr dev = NULL;
- int *retEntities = NULL;
- int useProm = 0;
-
- struct Inst {
- sbusDevicePtr sbus;
- GDevPtr dev;
- Bool claimed; /* BusID matches with a device section */
- } *instances = NULL;
-
- *foundEntities = NULL;
- for (psdpp = xf86SbusInfo, psdp = *psdpp; psdp; psdp = *++psdpp) {
- if (psdp->devId != sbusDevId)
- continue;
- if (psdp->fd == -2)
- continue;
- ++allocatedInstances;
- instances = xnfrealloc(instances,
- allocatedInstances * sizeof(struct Inst));
- instances[allocatedInstances - 1].sbus = psdp;
- instances[allocatedInstances - 1].dev = NULL;
- instances[allocatedInstances - 1].claimed = FALSE;
- numFound++;
- }
-
- /*
- * This may be debatable, but if no SBUS devices with a matching vendor
- * type is found, return zero now. It is probably not desirable to
- * allow the config file to override this.
- */
- if (allocatedInstances <= 0) {
- xfree(instances);
- return 0;
- }
-
- if (xf86DoProbe) {
- xfree(instances);
- return numFound;
- }
-
- if (sparcPromInit() >= 0)
- useProm = 1;
-
- if (xf86DoConfigure && xf86DoConfigurePass1) {
- GDevPtr pGDev;
- int actualcards = 0;
- for (i = 0; i < allocatedInstances; i++) {
- actualcards++;
- pGDev = xf86AddBusDeviceToConfigure(drvp->driverName, BUS_SBUS,
- instances[i].sbus, -1);
- if (pGDev) {
- /*
- * XF86Match???Instances() treat chipID and chipRev as
- * overrides, so clobber them here.
- */
- pGDev->chipID = pGDev->chipRev = -1;
- }
- }
- xfree(instances);
- if (useProm)
- sparcPromClose();
- return actualcards;
- }
-
-#ifdef DEBUG
- ErrorF("%s instances found: %d\n", driverName, allocatedInstances);
-#endif
-
- for (i = 0; i < allocatedInstances; i++) {
- char *promPath = NULL;
-
- psdp = instances[i].sbus;
- devBus = NULL;
- dev = NULL;
- if (useProm && psdp->node.node)
- promPath = sparcPromNode2Pathname(&psdp->node);
-
- for (j = 0; j < numDevs; j++) {
- if (devList[j]->busID && *devList[j]->busID) {
- if (xf86CompareSbusBusString(devList[j]->busID, psdp->fbNum)) {
- if (devBus)
- xf86MsgVerb(X_WARNING,0,
- "%s: More than one matching Device section for "
- "instance (BusID: %s) found: %s\n",
- driverName,devList[j]->identifier,
- devList[j]->busID);
- else
- devBus = devList[j];
- }
- } else {
- if (!dev && !devBus) {
- if (promPath)
- xf86Msg(X_PROBED, "Assigning device section with no busID to SBUS:%s\n",
- promPath);
- else
- xf86Msg(X_PROBED, "Assigning device section with no busID to SBUS:fb%d\n",
- psdp->fbNum);
- dev = devList[j];
- } else
- xf86MsgVerb(X_WARNING, 0,
- "%s: More than one matching Device section "
- "found: %s\n", driverName, devList[j]->identifier);
- }
- }
- if (devBus) dev = devBus; /* busID preferred */
- if (!dev && psdp->fd != -2) {
- if (promPath) {
- xf86MsgVerb(X_WARNING, 0, "%s: No matching Device section "
- "for instance (BusID SBUS:%s) found\n",
- driverName, promPath);
- } else
- xf86MsgVerb(X_WARNING, 0, "%s: No matching Device section "
- "for instance (BusID SBUS:fb%d) found\n",
- driverName, psdp->fbNum);
- } else if (dev) {
- numClaimedInstances++;
- instances[i].claimed = TRUE;
- instances[i].dev = dev;
- }
- if (promPath)
- xfree(promPath);
- }
-
-#ifdef DEBUG
- ErrorF("%s instances found: %d\n", driverName, numClaimedInstances);
-#endif
-
- /*
- * Of the claimed instances, check that another driver hasn't already
- * claimed its slot.
- */
- numFound = 0;
- for (i = 0; i < allocatedInstances && numClaimedInstances > 0; i++) {
- if (!instances[i].claimed)
- continue;
- psdp = instances[i].sbus;
- if (!xf86CheckSbusSlot(psdp->fbNum))
- continue;
-
-#ifdef DEBUG
- ErrorF("%s: card at fb%d %08x is claimed by a Device section\n",
- driverName, psdp->fbNum, psdp->node.node);
-#endif
-
- /* Allocate an entry in the lists to be returned */
- numFound++;
- retEntities = xnfrealloc(retEntities, numFound * sizeof(int));
- retEntities[numFound - 1]
- = xf86ClaimSbusSlot(psdp, drvp, instances[i].dev,instances[i].dev->active ?
- TRUE : FALSE);
- }
- xfree(instances);
- if (numFound > 0) {
- *foundEntities = retEntities;
- }
-
- if (useProm)
- sparcPromClose();
-
- return numFound;
-}
-
-/*
- * xf86GetSbusInfoForEntity() -- Get the sbusDevicePtr of entity.
- */
-sbusDevicePtr
-xf86GetSbusInfoForEntity(int entityIndex)
-{
- sbusDevicePtr *psdpp;
- EntityPtr p = xf86Entities[entityIndex];
-
- if (entityIndex >= xf86NumEntities
- || p->busType != BUS_SBUS) return NULL;
-
- for (psdpp = xf86SbusInfo; *psdpp != NULL; psdpp++) {
- if (p->sbusBusId.fbNum == (*psdpp)->fbNum)
- return (*psdpp);
- }
- return NULL;
-}
-
-int
-xf86GetEntityForSbusInfo(sbusDevicePtr psdp)
-{
- int i;
-
- for (i = 0; i < xf86NumEntities; i++) {
- EntityPtr p = xf86Entities[i];
- if (p->busType != BUS_SBUS) continue;
-
- if (p->sbusBusId.fbNum == psdp->fbNum)
- return i;
- }
- return -1;
-}
-
-void
-xf86SbusUseBuiltinMode(ScrnInfoPtr pScrn, sbusDevicePtr psdp)
-{
- DisplayModePtr mode;
-
- mode = xnfcalloc(sizeof(DisplayModeRec), 1);
- mode->name = "current";
- mode->next = mode;
- mode->prev = mode;
- mode->type = M_T_BUILTIN;
- mode->Clock = 100000000;
- mode->HDisplay = psdp->width;
- mode->HSyncStart = psdp->width;
- mode->HSyncEnd = psdp->width;
- mode->HTotal = psdp->width;
- mode->VDisplay = psdp->height;
- mode->VSyncStart = psdp->height;
- mode->VSyncEnd = psdp->height;
- mode->VTotal = psdp->height;
- mode->SynthClock = mode->Clock;
- mode->CrtcHDisplay = mode->HDisplay;
- mode->CrtcHSyncStart = mode->HSyncStart;
- mode->CrtcHSyncEnd = mode->HSyncEnd;
- mode->CrtcHTotal = mode->HTotal;
- mode->CrtcVDisplay = mode->VDisplay;
- mode->CrtcVSyncStart = mode->VSyncStart;
- mode->CrtcVSyncEnd = mode->VSyncEnd;
- mode->CrtcVTotal = mode->VTotal;
- mode->CrtcHAdjusted = FALSE;
- mode->CrtcVAdjusted = FALSE;
- pScrn->modes = mode;
- pScrn->virtualX = psdp->width;
- pScrn->virtualY = psdp->height;
-}
-
-static int sbusPaletteIndex = -1;
-static unsigned long sbusPaletteGeneration = 0;
-typedef struct _sbusCmap {
- sbusDevicePtr psdp;
- CloseScreenProcPtr CloseScreen;
- Bool origCmapValid;
- unsigned char origRed[16];
- unsigned char origGreen[16];
- unsigned char origBlue[16];
-} sbusCmapRec, *sbusCmapPtr;
-
-#define SBUSCMAPPTR(pScreen) ((sbusCmapPtr)((pScreen)->devPrivates[sbusPaletteIndex].ptr))
-
-static void
-xf86SbusCmapLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
- LOCO *colors, VisualPtr pVisual)
-{
- int i, index;
- sbusCmapPtr cmap;
- struct fbcmap fbcmap;
- unsigned char *data = ALLOCATE_LOCAL(numColors*3);
-
- cmap = SBUSCMAPPTR(pScrn->pScreen);
- if (!cmap) return;
- fbcmap.count = 0;
- fbcmap.index = indices[0];
- fbcmap.red = data;
- fbcmap.green = data + numColors;
- fbcmap.blue = fbcmap.green + numColors;
- for (i = 0; i < numColors; i++) {
- index = indices[i];
- if (fbcmap.count && index != fbcmap.index + fbcmap.count) {
- ioctl (cmap->psdp->fd, FBIOPUTCMAP, &fbcmap);
- fbcmap.count = 0;
- fbcmap.index = index;
- }
- fbcmap.red[fbcmap.count] = colors[index].red;
- fbcmap.green[fbcmap.count] = colors[index].green;
- fbcmap.blue[fbcmap.count++] = colors[index].blue;
- }
- ioctl (cmap->psdp->fd, FBIOPUTCMAP, &fbcmap);
- DEALLOCATE_LOCAL(data);
-}
-
-static Bool
-xf86SbusCmapCloseScreen(int i, ScreenPtr pScreen)
-{
- sbusCmapPtr cmap;
- struct fbcmap fbcmap;
-
- cmap = SBUSCMAPPTR(pScreen);
- if (cmap->origCmapValid) {
- fbcmap.index = 0;
- fbcmap.count = 16;
- fbcmap.red = cmap->origRed;
- fbcmap.green = cmap->origGreen;
- fbcmap.blue = cmap->origBlue;
- ioctl (cmap->psdp->fd, FBIOPUTCMAP, &fbcmap);
- }
- pScreen->CloseScreen = cmap->CloseScreen;
- xfree (cmap);
- return (*pScreen->CloseScreen) (i, pScreen);
-}
-
-Bool
-xf86SbusHandleColormaps(ScreenPtr pScreen, sbusDevicePtr psdp)
-{
- sbusCmapPtr cmap;
- struct fbcmap fbcmap;
- unsigned char data[2];
-
- if(sbusPaletteGeneration != serverGeneration) {
- if((sbusPaletteIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- sbusPaletteGeneration = serverGeneration;
- }
- cmap = xnfcalloc(1, sizeof(sbusCmapRec));
- pScreen->devPrivates[sbusPaletteIndex].ptr = cmap;
- cmap->psdp = psdp;
- fbcmap.index = 0;
- fbcmap.count = 16;
- fbcmap.red = cmap->origRed;
- fbcmap.green = cmap->origGreen;
- fbcmap.blue = cmap->origBlue;
- if (ioctl (psdp->fd, FBIOGETCMAP, &fbcmap) >= 0)
- cmap->origCmapValid = TRUE;
- fbcmap.index = 0;
- fbcmap.count = 2;
- fbcmap.red = data;
- fbcmap.green = data;
- fbcmap.blue = data;
- if (pScreen->whitePixel == 0) {
- data[0] = 255;
- data[1] = 0;
- } else {
- data[0] = 0;
- data[1] = 255;
- }
- ioctl (psdp->fd, FBIOPUTCMAP, &fbcmap);
- cmap->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = xf86SbusCmapCloseScreen;
- return xf86HandleColormaps(pScreen, 256, 8,
- xf86SbusCmapLoadPalette, NULL, 0);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86sbusBus.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86sbusBus.h
deleted file mode 100644
index 81c1b84ac..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86sbusBus.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * SBUS bus-specific declarations
- *
- * Copyright (C) 2000 Jakub Jelinek (jakub@redhat.com)
- *
- * 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 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 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
- * JAKUB JELINEK 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.
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86sbusBus.h,v 3.4 2001/10/28 03:33:19 tsi Exp $ */
-
-#ifndef _XF86_SBUSBUS_H
-#define _XF86_SBUSBUS_H
-
-#include "xf86str.h"
-
-#define SBUS_DEVICE_BW2 0x0001
-#define SBUS_DEVICE_CG2 0x0002
-#define SBUS_DEVICE_CG3 0x0003
-#define SBUS_DEVICE_CG4 0x0004
-#define SBUS_DEVICE_CG6 0x0005
-#define SBUS_DEVICE_CG8 0x0006
-#define SBUS_DEVICE_CG12 0x0007
-#define SBUS_DEVICE_CG14 0x0008
-#define SBUS_DEVICE_LEO 0x0009
-#define SBUS_DEVICE_TCX 0x000a
-#define SBUS_DEVICE_FFB 0x000b
-#define SBUS_DEVICE_GT 0x000c
-#define SBUS_DEVICE_MGX 0x000d
-
-typedef struct sbus_prom_node {
- int node;
- /* Because of misdesigned openpromio */
- int cookie[2];
-} sbusPromNode, *sbusPromNodePtr;
-
-typedef struct sbus_device {
- int devId;
- int fbNum;
- int fd;
- int width, height;
- sbusPromNode node;
- char *descr;
- char *device;
-} sbusDevice, *sbusDevicePtr;
-
-extern struct sbus_devtable {
- int devId;
- int fbType;
- char *promName;
- char *descr;
-} sbusDeviceTable[];
-
-void xf86SbusProbe(void);
-extern sbusDevicePtr *xf86SbusInfo;
-
-int xf86MatchSbusInstances(const char *driverName, int sbusDevId,
- GDevPtr *devList, int numDevs, DriverPtr drvp,
- int **foundEntities);
-sbusDevicePtr xf86GetSbusInfoForEntity(int entityIndex);
-int xf86GetEntityForSbusInfo(sbusDevicePtr psdp);
-void xf86SbusUseBuiltinMode(ScrnInfoPtr pScrn, sbusDevicePtr psdp);
-pointer xf86MapSbusMem(sbusDevicePtr psdp, unsigned long offset,
- unsigned long size);
-void xf86UnmapSbusMem(sbusDevicePtr psdp, pointer addr, unsigned long size);
-void xf86SbusHideOsHwCursor(sbusDevicePtr psdp);
-void xf86SbusSetOsHwCursorCmap(sbusDevicePtr psdp, int bg, int fg);
-Bool xf86SbusHandleColormaps(ScreenPtr pScreen, sbusDevicePtr psdp);
-
-extern int promRootNode;
-
-int promGetSibling(int node);
-int promGetChild(int node);
-char * promGetProperty(const char *prop, int *lenp);
-int promGetBool(const char *prop);
-
-int sparcPromInit(void);
-void sparcPromClose(void);
-char * sparcPromGetProperty(sbusPromNodePtr pnode, const char *prop, int *lenp);
-int sparcPromGetBool(sbusPromNodePtr pnode, const char *prop);
-void sparcPromAssignNodes(void);
-char * sparcPromNode2Pathname(sbusPromNodePtr pnode);
-int sparcPromPathname2Node(const char *pathName);
-
-#endif /* _XF86_SBUSBUS_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86str.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86str.h
deleted file mode 100644
index 82faaaac1..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86str.h
+++ /dev/null
@@ -1,1140 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86str.h,v 1.97 2003/10/30 17:36:56 tsi Exp $ */
-
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * This file contains definitions of the public XFree86 data structures/types.
- * Any data structures that video drivers need to access should go here.
- */
-
-#ifndef _XF86STR_H
-#define _XF86STR_H
-
-#include "misc.h"
-#include "input.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "colormapst.h"
-#include "xf86Module.h"
-#include "xf86Opt.h"
-#include "xf86Pci.h"
-
-/*
- * memType is of the size of the addressable memory (machine size)
- * usually unsigned long.
- */
-typedef unsigned long memType;
-
-/* Video mode flags */
-
-typedef enum {
- V_PHSYNC = 0x0001,
- V_NHSYNC = 0x0002,
- V_PVSYNC = 0x0004,
- V_NVSYNC = 0x0008,
- V_INTERLACE = 0x0010,
- V_DBLSCAN = 0x0020,
- V_CSYNC = 0x0040,
- V_PCSYNC = 0x0080,
- V_NCSYNC = 0x0100,
- V_HSKEW = 0x0200, /* hskew provided */
- V_BCAST = 0x0400,
- V_PIXMUX = 0x1000,
- V_DBLCLK = 0x2000,
- V_CLKDIV2 = 0x4000
-} ModeFlags;
-
-typedef enum {
- INTERLACE_HALVE_V = 0x0001 /* Halve V values for interlacing */
-} CrtcAdjustFlags;
-
-/* Flags passed to ChipValidMode() */
-typedef enum {
- MODECHECK_INITIAL = 0,
- MODECHECK_FINAL = 1
-} ModeCheckFlags;
-
-/* These are possible return values for xf86CheckMode() and ValidMode() */
-typedef enum {
- MODE_OK = 0, /* Mode OK */
- MODE_HSYNC, /* hsync out of range */
- MODE_VSYNC, /* vsync out of range */
- MODE_H_ILLEGAL, /* mode has illegal horizontal timings */
- MODE_V_ILLEGAL, /* mode has illegal horizontal timings */
- MODE_BAD_WIDTH, /* requires an unsupported linepitch */
- MODE_NOMODE, /* no mode with a maching name */
- MODE_NO_INTERLACE, /* interlaced mode not supported */
- MODE_NO_DBLESCAN, /* doublescan mode not supported */
- MODE_NO_VSCAN, /* multiscan mode not supported */
- MODE_MEM, /* insufficient video memory */
- MODE_VIRTUAL_X, /* mode width too large for specified virtual size */
- MODE_VIRTUAL_Y, /* mode height too large for specified virtual size */
- MODE_MEM_VIRT, /* insufficient video memory given virtual size */
- MODE_NOCLOCK, /* no fixed clock available */
- MODE_CLOCK_HIGH, /* clock required is too high */
- MODE_CLOCK_LOW, /* clock required is too low */
- MODE_CLOCK_RANGE, /* clock/mode isn't in a ClockRange */
- MODE_BAD_HVALUE, /* horizontal timing was out of range */
- MODE_BAD_VVALUE, /* vertical timing was out of range */
- MODE_BAD_VSCAN, /* VScan value out of range */
- MODE_HSYNC_NARROW, /* horizontal sync too narrow */
- MODE_HSYNC_WIDE, /* horizontal sync too wide */
- MODE_HBLANK_NARROW, /* horizontal blanking too narrow */
- MODE_HBLANK_WIDE, /* horizontal blanking too wide */
- MODE_VSYNC_NARROW, /* vertical sync too narrow */
- MODE_VSYNC_WIDE, /* vertical sync too wide */
- MODE_VBLANK_NARROW, /* vertical blanking too narrow */
- MODE_VBLANK_WIDE, /* vertical blanking too wide */
- MODE_PANEL, /* exceeds panel dimensions */
- MODE_INTERLACE_WIDTH, /* width too large for interlaced mode */
- MODE_ONE_WIDTH, /* only one width is supported */
- MODE_ONE_HEIGHT, /* only one height is supported */
- MODE_ONE_SIZE, /* only one resolution is supported */
- MODE_BAD = -2, /* unspecified reason */
- MODE_ERROR = -1 /* error condition */
-} ModeStatus;
-
-# define M_T_BUILTIN 0x01 /* built-in mode */
-# define M_T_CLOCK_C (0x02 | M_T_BUILTIN) /* built-in mode - configure clock */
-# define M_T_CRTC_C (0x04 | M_T_BUILTIN) /* built-in mode - configure CRTC */
-# define M_T_CLOCK_CRTC_C (M_T_CLOCK_C | M_T_CRTC_C)
- /* built-in mode - configure CRTC and clock */
-# define M_T_DEFAULT 0x10 /* (VESA) default modes */
-# define M_T_USERDEF 0x20 /* One of the modes from the config file */
-
-/* Video mode */
-typedef struct _DisplayModeRec {
- struct _DisplayModeRec * prev;
- struct _DisplayModeRec * next;
- char * name; /* identifier for the mode */
- ModeStatus status;
- int type;
-
- /* These are the values that the user sees/provides */
- int Clock; /* pixel clock freq (kHz) */
- int HDisplay; /* horizontal timing */
- int HSyncStart;
- int HSyncEnd;
- int HTotal;
- int HSkew;
- int VDisplay; /* vertical timing */
- int VSyncStart;
- int VSyncEnd;
- int VTotal;
- int VScan;
- int Flags;
-
- /* These are the values the hardware uses */
- int ClockIndex;
- int SynthClock; /* Actual clock freq to
- * be programmed (kHz) */
- int CrtcHDisplay;
- int CrtcHBlankStart;
- int CrtcHSyncStart;
- int CrtcHSyncEnd;
- int CrtcHBlankEnd;
- int CrtcHTotal;
- int CrtcHSkew;
- int CrtcVDisplay;
- int CrtcVBlankStart;
- int CrtcVSyncStart;
- int CrtcVSyncEnd;
- int CrtcVBlankEnd;
- int CrtcVTotal;
- Bool CrtcHAdjusted;
- Bool CrtcVAdjusted;
- int PrivSize;
- INT32 * Private;
- int PrivFlags;
-
- float HSync, VRefresh;
-} DisplayModeRec, *DisplayModePtr;
-
-/* The monitor description */
-
-#define MAX_HSYNC 8
-#define MAX_VREFRESH 8
-
-typedef struct { float hi, lo; } range;
-
-typedef struct { CARD32 red, green, blue; } rgb;
-
-typedef struct { float red, green, blue; } Gamma;
-
-/* The permitted gamma range is 1 / GAMMA_MAX <= g <= GAMMA_MAX */
-#define GAMMA_MAX 10.0
-#define GAMMA_MIN (1.0 / GAMMA_MAX)
-#define GAMMA_ZERO (GAMMA_MIN / 100.0)
-
-typedef struct {
- char * id;
- char * vendor;
- char * model;
- int nHsync;
- range hsync[MAX_HSYNC];
- int nVrefresh;
- range vrefresh[MAX_VREFRESH];
- DisplayModePtr Modes; /* Start of the monitor's mode list */
- DisplayModePtr Last; /* End of the monitor's mode list */
- Gamma gamma; /* Gamma of the monitor */
- int widthmm;
- int heightmm;
- pointer options;
- pointer DDC;
-} MonRec, *MonPtr;
-
-/* the list of clock ranges */
-typedef struct x_ClockRange {
- struct x_ClockRange *next;
- int minClock; /* (kHz) */
- int maxClock; /* (kHz) */
- int clockIndex; /* -1 for programmable clocks */
- Bool interlaceAllowed;
- Bool doubleScanAllowed;
- int ClockMulFactor;
- int ClockDivFactor;
- int PrivFlags;
-} ClockRange, *ClockRangePtr;
-
-/* Need to store the strategy with clockRange for VidMode extension */
-typedef struct x_ClockRanges {
- struct x_ClockRanges *next;
- int minClock;
- int maxClock;
- int clockIndex; /* -1 for programmable clocks */
- Bool interlaceAllowed;
- Bool doubleScanAllowed;
- int ClockMulFactor;
- int ClockDivFactor;
- int PrivFlags;
- int strategy;
-} ClockRanges, *ClockRangesPtr;
-
-/*
- * The driverFunc. xorgDriverFuncOp specifies the action driver should
- * perform. If requested option is not supported function should return
- * FALSE. pointer can be used to pass arguments to the function or
- * to return data to the caller.
- */
-typedef struct _ScrnInfoRec *ScrnInfoPtr;
-
-/* do not change order */
-typedef enum {
- RR_GET_INFO,
- RR_SET_CONFIG,
- RR_GET_MODE_MM,
- GET_REQUIRED_HW_INTERFACES = 10
-} xorgDriverFuncOp;
-
-typedef Bool xorgDriverFuncProc (ScrnInfoPtr, xorgDriverFuncOp,
- pointer);
-
-/* RR_GET_INFO, RR_SET_CONFIG */
-typedef struct {
- int rotation;
- int rate;
- int width;
- int height;
-} xorgRRConfig;
-
-typedef union {
- short RRRotations;
- xorgRRConfig RRConfig;
-} xorgRRRotation, *xorgRRRotationPtr;
-
-/* RR_GET_MODE_MM */
-typedef struct {
- DisplayModePtr mode;
- int virtX;
- int virtY;
- int mmWidth;
- int mmHeight;
-} xorgRRModeMM, *xorgRRModeMMPtr;
-
-/* GET_REQUIRED_HW_INTERFACES */
-#define HW_IO 1
-#define HW_MMIO 2
-#define NEED_IO_ENABLED(x) (x & HW_IO)
-
-typedef CARD32 xorgHWFlags;
-
-/*
- * The driver list struct. This contains the information required for each
- * driver before a ScrnInfoRec has been allocated.
- */
-struct _DriverRec;
-
-typedef struct {
- int driverVersion;
- char * driverName;
- void (*Identify)(int flags);
- Bool (*Probe)(struct _DriverRec *drv, int flags);
- const OptionInfoRec * (*AvailableOptions)(int chipid, int bustype);
- pointer module;
- int refCount;
-} DriverRec1;
-
-typedef struct _DriverRec {
- int driverVersion;
- char * driverName;
- void (*Identify)(int flags);
- Bool (*Probe)(struct _DriverRec *drv, int flags);
- const OptionInfoRec * (*AvailableOptions)(int chipid, int bustype);
- pointer module;
- int refCount;
- xorgDriverFuncProc *driverFunc;
-} DriverRec, *DriverPtr;
-
-/*
- * AddDriver flags
- */
-#define HaveDriverFuncs 1
-
-
-#ifdef XFree86LOADER
-/*
- * The optional module list struct. This allows modules exporting helping
- * functions to configuration tools, the Xserver, or any other
- * application/module interested in such information.
- */
-typedef struct _ModuleInfoRec {
- int moduleVersion;
- char * moduleName;
- pointer module;
- int refCount;
- const OptionInfoRec * (*AvailableOptions)(void *unused);
- pointer unused[8]; /* leave some space for more fields */
-} ModuleInfoRec, *ModuleInfoPtr;
-#endif
-
-/*
- * These are the private bus types. New types can be added here. Types
- * required for the public interface should be added to xf86str.h, with
- * function prototypes added to xf86.h.
- */
-
-/* Tolerate prior #include <linux/input.h> */
-#if defined(linux) && defined(_INPUT_H)
-#undef BUS_NONE
-#undef BUS_ISA
-#undef BUS_PCI
-#undef BUS_SBUS
-#undef BUS_last
-#endif
-
-typedef enum {
- BUS_NONE,
- BUS_ISA,
- BUS_PCI,
- BUS_SBUS,
- BUS_last /* Keep last */
-} BusType;
-
-typedef struct {
- int bus;
- int device;
- int func;
-} PciBusId;
-
-typedef struct {
- unsigned int dummy;
-} IsaBusId;
-
-typedef struct {
- int fbNum;
-} SbusBusId;
-
-typedef struct _bus {
- BusType type;
- union {
- IsaBusId isa;
- PciBusId pci;
- SbusBusId sbus;
- } id;
-} BusRec, *BusPtr;
-
-#define MAXCLOCKS 128
-typedef enum {
- DAC_BPP8 = 0,
- DAC_BPP16,
- DAC_BPP24,
- DAC_BPP32,
- MAXDACSPEEDS
-} DacSpeedIndex;
-
-typedef struct {
- char * identifier;
- char * vendor;
- char * board;
- char * chipset;
- char * ramdac;
- char * driver;
- struct _confscreenrec * myScreenSection;
- Bool claimed;
- int dacSpeeds[MAXDACSPEEDS];
- int numclocks;
- int clock[MAXCLOCKS];
- char * clockchip;
- char * busID;
- Bool active;
- Bool inUse;
- int videoRam;
- int textClockFreq;
- unsigned long BiosBase; /* Base address of video BIOS */
- unsigned long MemBase; /* Frame buffer base address */
- unsigned long IOBase;
- int chipID;
- int chipRev;
- pointer options;
- int irq;
- int screen; /* For multi-CRTC cards */
-} GDevRec, *GDevPtr;
-
-typedef int (*FindIsaDevProc)(GDevPtr dev);
-
-typedef struct {
- char * identifier;
- char * driver;
- pointer commonOptions;
- pointer extraOptions;
-} IDevRec, *IDevPtr;
-
-typedef struct {
- int vendor;
- int chipType;
- int chipRev;
- int subsysVendor;
- int subsysCard;
- int bus;
- int device;
- int func;
- int class;
- int subclass;
- int interface;
- memType memBase[6];
- memType ioBase[6];
- int size[6];
- unsigned char type[6];
- memType biosBase;
- int biosSize;
- pointer thisCard;
- Bool validSize;
- Bool validate;
- CARD32 listed_class;
-} pciVideoRec, *pciVideoPtr;
-
-typedef struct {
- int frameX0;
- int frameY0;
- int virtualX;
- int virtualY;
- int depth;
- int fbbpp;
- rgb weight;
- rgb blackColour;
- rgb whiteColour;
- int defaultVisual;
- char ** modes;
- pointer options;
-} DispRec, *DispPtr;
-
-typedef struct _confxvportrec {
- char * identifier;
- pointer options;
-} confXvPortRec, *confXvPortPtr;
-
-typedef struct _confxvadaptrec {
- char * identifier;
- int numports;
- confXvPortPtr ports;
- pointer options;
-} confXvAdaptorRec, *confXvAdaptorPtr;
-
-typedef struct _confscreenrec {
- char * id;
- int screennum;
- int defaultdepth;
- int defaultbpp;
- int defaultfbbpp;
- MonPtr monitor;
- GDevPtr device;
- int numdisplays;
- DispPtr displays;
- int numxvadaptors;
- confXvAdaptorPtr xvadaptors;
- pointer options;
-} confScreenRec, *confScreenPtr;
-
-typedef enum {
- PosObsolete = -1,
- PosAbsolute = 0,
- PosRightOf,
- PosLeftOf,
- PosAbove,
- PosBelow,
- PosRelative
-} PositionType;
-
-typedef struct _screenlayoutrec {
- confScreenPtr screen;
- char * topname;
- confScreenPtr top;
- char * bottomname;
- confScreenPtr bottom;
- char * leftname;
- confScreenPtr left;
- char * rightname;
- confScreenPtr right;
- PositionType where;
- int x;
- int y;
- char * refname;
- confScreenPtr refscreen;
-} screenLayoutRec, *screenLayoutPtr;
-
-typedef struct _serverlayoutrec {
- char * id;
- screenLayoutPtr screens;
- GDevPtr inactives;
- IDevPtr inputs;
- pointer options;
-} serverLayoutRec, *serverLayoutPtr;
-
-typedef struct _confdribufferrec {
- int count;
- int size;
- enum {
- XF86DRI_WC_HINT = 0x0001 /* Placeholder: not implemented */
- } flags;
-} confDRIBufferRec, *confDRIBufferPtr;
-
-typedef struct _confdrirec {
- int group;
- int mode;
- int bufs_count;
- confDRIBufferRec *bufs;
-} confDRIRec, *confDRIPtr;
-
-/* These values should be adjusted when new fields are added to ScrnInfoRec */
-#define NUM_RESERVED_INTS 16
-#define NUM_RESERVED_POINTERS 15
-#define NUM_RESERVED_FUNCS 11
-
-typedef pointer (*funcPointer)(void);
-
-/* flags for depth 24 pixmap options */
-typedef enum {
- Pix24DontCare = 0,
- Pix24Use24,
- Pix24Use32
-} Pix24Flags;
-
-/* Power management events: so far we only support APM */
-
-typedef enum {
- XF86_APM_UNKNOWN = -1,
- XF86_APM_SYS_STANDBY,
- XF86_APM_SYS_SUSPEND,
- XF86_APM_CRITICAL_SUSPEND,
- XF86_APM_USER_STANDBY,
- XF86_APM_USER_SUSPEND,
- XF86_APM_STANDBY_RESUME,
- XF86_APM_NORMAL_RESUME,
- XF86_APM_CRITICAL_RESUME,
- XF86_APM_LOW_BATTERY,
- XF86_APM_POWER_STATUS_CHANGE,
- XF86_APM_UPDATE_TIME,
- XF86_APM_CAPABILITY_CHANGED,
- XF86_APM_STANDBY_FAILED,
- XF86_APM_SUSPEND_FAILED
-} pmEvent;
-
-typedef enum {
- PM_WAIT,
- PM_CONTINUE,
- PM_FAILED,
- PM_NONE
-} pmWait;
-
-/*
- * The IO access enabler struct. This contains the address for
- * the IOEnable/IODisable funcs for their specific bus along
- * with a pointer to data needed by them
- */
-typedef struct _AccessRec {
- void (*AccessDisable)(void *arg);
- void (*AccessEnable)(void *arg);
- void *arg;
-} xf86AccessRec, *xf86AccessPtr;
-
-typedef struct {
- xf86AccessPtr mem;
- xf86AccessPtr io;
- xf86AccessPtr io_mem;
-} xf86SetAccessFuncRec, *xf86SetAccessFuncPtr;
-
-/* bus-access-related types */
-typedef enum {
- NONE,
- IO,
- MEM_IO,
- MEM
-} resType;
-
-typedef struct _EntityAccessRec {
- xf86AccessPtr fallback;
- xf86AccessPtr pAccess;
- resType rt;
- pointer busAcc;
- struct _EntityAccessRec *next;
-} EntityAccessRec, *EntityAccessPtr;
-
-typedef struct _CurrAccRec {
- EntityAccessPtr pMemAccess;
- EntityAccessPtr pIoAccess;
-} xf86CurrentAccessRec, *xf86CurrentAccessPtr;
-
-/* new RAC */
-
-/* Resource Type values */
-#define ResNone ((unsigned long)(-1))
-
-#define ResMem 0x0001
-#define ResIo 0x0002
-#define ResIrq 0x0003
-#define ResDma 0x0004
-#define ResPciCfg 0x000e /* PCI Configuration space */
-#define ResPhysMask 0x000F
-
-#define ResExclusive 0x0010
-#define ResShared 0x0020
-#define ResAny 0x0040
-#define ResAccMask 0x0070
-#define ResUnused 0x0080
-
-#define ResUnusedOpr 0x0100
-#define ResDisableOpr 0x0200
-#define ResOprMask 0x0300
-
-#define ResBlock 0x0400
-#define ResSparse 0x0800
-#define ResExtMask 0x0C00
-
-#define ResEstimated 0x001000
-#define ResInit 0x002000
-#define ResBios 0x004000
-#define ResMiscMask 0x00F000
-
-#define ResBus 0x010000
-#define ResOverlap 0x020000
-
-#if defined(__alpha__) && defined(linux)
-# define ResDomain 0x1ff000000ul
-#else
-# define ResDomain 0xff000000ul
-#endif
-#define ResTypeMask (ResPhysMask | ResDomain) /* For conflict check */
-
-#define ResEnd ResNone
-
-#define ResExcMemBlock (ResMem | ResExclusive | ResBlock)
-#define ResExcIoBlock (ResIo | ResExclusive | ResBlock)
-#define ResShrMemBlock (ResMem | ResShared | ResBlock)
-#define ResShrIoBlock (ResIo | ResShared | ResBlock)
-#define ResExcUusdMemBlock (ResMem | ResExclusive | ResUnused | ResBlock)
-#define ResExcUusdIoBlock (ResIo | ResExclusive | ResUnused | ResBlock)
-#define ResShrUusdMemBlock (ResMem | ResShared | ResUnused | ResBlock)
-#define ResShrUusdIoBlock (ResIo | ResShared | ResUnused | ResBlock)
-#define ResExcUusdMemSparse (ResMem | ResExclusive | ResUnused | ResSparse)
-#define ResExcUusdIoSparse (ResIo | ResExclusive | ResUnused | ResSparse)
-#define ResShrUusdMemSparse (ResMem | ResShared | ResUnused | ResSparse)
-#define ResShrUusdIoSparse (ResIo | ResShared | ResUnused | ResSparse)
-
-#define ResExcMemSparse (ResMem | ResExclusive | ResSparse)
-#define ResExcIoSparse (ResIo | ResExclusive | ResSparse)
-#define ResShrMemSparse (ResMem | ResShared | ResSparse)
-#define ResShrIoSparse (ResIo | ResShared | ResSparse)
-#define ResUusdMemSparse (ResMem | ResUnused | ResSparse)
-#define ResUusdIoSparse (ResIo | ResUnused | ResSparse)
-
-#define ResIsMem(r) (((r)->type & ResPhysMask) == ResMem)
-#define ResIsIo(r) (((r)->type & ResPhysMask) == ResIo)
-#define ResIsExclusive(r) (((r)->type & ResAccMask) == ResExclusive)
-#define ResIsShared(r) (((r)->type & ResAccMask) == ResShared)
-#define ResIsUnused(r) (((r)->type & ResAccMask) == ResUnused)
-#define ResIsBlock(r) (((r)->type & ResExtMask) == ResBlock)
-#define ResIsSparse(r) (((r)->type & ResExtMask) == ResSparse)
-#define ResIsEstimated(r) (((r)->type & ResMiscMask) == ResEstimated)
-#define ResCanOverlap(r) (ResIsEstimated(r) || ((r)->type & ResOverlap))
-
-typedef struct {
- unsigned long type; /* shared, exclusive, unused etc. */
- memType a;
- memType b;
-} resRange, *resList;
-
-#define RANGE_TYPE(type, domain) \
- (((unsigned long)(domain) << 24) | ((type) & ~ResBus))
-#define RANGE(r,u,v,t) {\
- (r).a = (u);\
- (r).b = (v);\
- (r).type = (t);\
- }
-
-#define rBase a
-#define rMask b
-#define rBegin a
-#define rEnd b
-
-/* resource record */
-typedef struct _resRec *resPtr;
-typedef struct _resRec {
- resRange val;
- int entityIndex; /* who owns the resource */
- resPtr next;
-} resRec;
-
-#define sparse_base val.rBase
-#define sparse_mask val.rMask
-#define block_begin val.rBegin
-#define block_end val.rEnd
-#define res_type val.type
-
-typedef struct {
- int numChipset;
- resRange *resList;
-} IsaChipsets;
-
-typedef struct {
- int numChipset;
- int PCIid;
- resRange *resList;
-} PciChipsets;
-
-/* Entity properties */
-typedef void (*EntityProc)(int entityIndex,pointer private);
-
-typedef struct _entityInfo {
- int index;
- BusRec location;
- int chipset;
- Bool active;
- resPtr resources;
- GDevPtr device;
- DriverPtr driver;
-} EntityInfoRec, *EntityInfoPtr;
-
-/* server states */
-
-typedef enum {
- SETUP,
- OPERATING
-} xf86State;
-
-typedef enum {
- NOTIFY_SETUP_TRANSITION,
- NOTIFY_SETUP,
- NOTIFY_OPERATING,
- NOTIFY_OPERATING_TRANSITION,
- NOTIFY_ENABLE,
- NOTIFY_ENTER,
- NOTIFY_LEAVE
-} xf86NotifyState;
-
-typedef void (*xf86StateChangeNotificationCallbackFunc)(xf86NotifyState state,pointer);
-
-/* DGA */
-
-typedef struct {
- int num; /* A unique identifier for the mode (num > 0) */
- DisplayModePtr mode;
- int flags; /* DGA_CONCURRENT_ACCESS, etc... */
- int imageWidth; /* linear accessible portion (pixels) */
- int imageHeight;
- int pixmapWidth; /* Xlib accessible portion (pixels) */
- int pixmapHeight; /* both fields ignored if no concurrent access */
- int bytesPerScanline;
- int byteOrder; /* MSBFirst, LSBFirst */
- int depth;
- int bitsPerPixel;
- unsigned long red_mask;
- unsigned long green_mask;
- unsigned long blue_mask;
- short visualClass;
- int viewportWidth;
- int viewportHeight;
- int xViewportStep; /* viewport position granularity */
- int yViewportStep;
- int maxViewportX; /* max viewport origin */
- int maxViewportY;
- int viewportFlags; /* types of page flipping possible */
- int offset; /* offset into physical memory */
- unsigned char *address; /* server's mapped framebuffer */
- int reserved1;
- int reserved2;
-} DGAModeRec, *DGAModePtr;
-
-typedef struct {
- DGAModePtr mode;
- PixmapPtr pPix;
-} DGADeviceRec, *DGADevicePtr;
-
-/*
- * Flags for driver Probe() functions.
- */
-#define PROBE_DEFAULT 0x00
-#define PROBE_DETECT 0x01
-#define PROBE_TRYHARD 0x02
-
-/*
- * Driver entry point types
- */
-
-typedef Bool xf86ProbeProc (DriverPtr, int);
-typedef Bool xf86PreInitProc (ScrnInfoPtr, int);
-typedef Bool xf86ScreenInitProc (int, ScreenPtr, int, char**);
-typedef Bool xf86SwitchModeProc (int, DisplayModePtr, int);
-typedef void xf86AdjustFrameProc (int, int, int, int);
-typedef Bool xf86EnterVTProc (int, int);
-typedef void xf86LeaveVTProc (int, int);
-typedef void xf86FreeScreenProc (int, int);
-typedef ModeStatus xf86ValidModeProc (int, DisplayModePtr, Bool, int);
-typedef void xf86EnableDisableFBAccessProc(int, Bool);
-typedef int xf86SetDGAModeProc (int, int, DGADevicePtr);
-typedef int xf86ChangeGammaProc (int, Gamma);
-typedef void xf86PointerMovedProc (int, int, int);
-typedef Bool xf86PMEventProc (int, pmEvent, Bool);
-typedef int xf86HandleMessageProc (int, const char*, const char*, char**);
-typedef void xf86DPMSSetProc (ScrnInfoPtr, int, int);
-typedef void xf86LoadPaletteProc (ScrnInfoPtr, int, int *, LOCO *, VisualPtr);
-typedef void xf86SetOverscanProc (ScrnInfoPtr, int);
-
-
-/*
- * ScrnInfoRec
- *
- * There is one of these for each screen, and it holds all the screen-specific
- * information.
- *
- * Note: the size and layout must be kept the same across versions. New
- * fields are to be added in place of the "reserved*" fields. No fields
- * are to be dependent on compile-time defines.
- */
-
-
-typedef struct _ScrnInfoRec {
- int driverVersion;
- char * driverName; /* canonical name used in */
- /* the config file */
- ScreenPtr pScreen; /* Pointer to the ScreenRec */
- int scrnIndex; /* Number of this screen */
- Bool configured; /* Is this screen valid */
- int origIndex; /* initial number assigned to
- * this screen before
- * finalising the number of
- * available screens */
-
- /* Display-wide screenInfo values needed by this screen */
- int imageByteOrder;
- int bitmapScanlineUnit;
- int bitmapScanlinePad;
- int bitmapBitOrder;
- int numFormats;
- PixmapFormatRec formats[MAXFORMATS];
- PixmapFormatRec fbFormat;
-
- int bitsPerPixel; /* fb bpp */
- Pix24Flags pixmap24; /* pixmap pref for depth 24 */
- int depth; /* depth of default visual */
- MessageType depthFrom; /* set from config? */
- MessageType bitsPerPixelFrom; /* set from config? */
- rgb weight; /* r/g/b weights */
- rgb mask; /* rgb masks */
- rgb offset; /* rgb offsets */
- int rgbBits; /* Number of bits in r/g/b */
- Gamma gamma; /* Gamma of the monitor */
- int defaultVisual; /* default visual class */
- int maxHValue; /* max horizontal timing */
- int maxVValue; /* max vertical timing value */
- int virtualX; /* Virtual width */
- int virtualY; /* Virtual height */
- int xInc; /* Horizontal timing increment */
- MessageType virtualFrom; /* set from config? */
- int displayWidth; /* memory pitch */
- int frameX0; /* viewport position */
- int frameY0;
- int frameX1;
- int frameY1;
- int zoomLocked; /* Disallow mode changes */
- DisplayModePtr modePool; /* list of compatible modes */
- DisplayModePtr modes; /* list of actual modes */
- DisplayModePtr currentMode; /* current mode
- * This was previously
- * overloaded with the modes
- * field, which is a pointer
- * into a circular list */
- confScreenPtr confScreen; /* Screen config info */
- MonPtr monitor; /* Monitor information */
- DispPtr display; /* Display information */
- int * entityList; /* List of device entities */
- int numEntities;
- int widthmm; /* physical display dimensions
- * in mm */
- int heightmm;
- int xDpi; /* width DPI */
- int yDpi; /* height DPI */
- char * name; /* Name to prefix messages */
- pointer driverPrivate; /* Driver private area */
- DevUnion * privates; /* Other privates can hook in
- * here */
- DriverPtr drv; /* xf86DriverList[] entry */
- pointer module; /* Pointer to module head */
- int colorKey;
- int overlayFlags;
-
- /* Some of these may be moved out of here into the driver private area */
-
- char * chipset; /* chipset name */
- char * ramdac; /* ramdac name */
- char * clockchip; /* clock name */
- Bool progClock; /* clock is programmable */
- int numClocks; /* number of clocks */
- int clock[MAXCLOCKS]; /* list of clock frequencies */
- int videoRam; /* amount of video ram (kb) */
- unsigned long biosBase; /* Base address of video BIOS */
- unsigned long memPhysBase; /* Physical address of FB */
- unsigned long fbOffset; /* Offset of FB in the above */
- IOADDRESS domainIOBase; /* Domain I/O base address */
- int memClk; /* memory clock */
- int textClockFreq; /* clock of text mode */
- Bool flipPixels; /* swap default black/white */
- pointer options;
-
- int chipID;
- int chipRev;
- int racMemFlags;
- int racIoFlags;
- pointer access;
- xf86CurrentAccessPtr CurrentAccess;
- resType resourceType;
- pointer busAccess;
-
- /* Allow screens to be enabled/disabled individually */
- Bool vtSema;
- DevUnion pixmapPrivate; /* saved devPrivate from pixmap */
-
- /* hw cursor moves at SIGIO time */
- Bool silkenMouse;
-
- /* Storage for clockRanges and adjustFlags for use with the VidMode ext */
- ClockRangesPtr clockRanges;
- int adjustFlags;
-
- /*
- * These can be used when the minor ABI version is incremented.
- * The NUM_* parameters must be reduced appropriately to keep the
- * structure size and alignment unchanged.
- */
- int reservedInt[NUM_RESERVED_INTS];
-
- int * entityInstanceList;
- pointer reservedPtr[NUM_RESERVED_POINTERS];
-
- /*
- * Driver entry points.
- *
- */
-
- xf86ProbeProc *Probe;
- xf86PreInitProc *PreInit;
- xf86ScreenInitProc *ScreenInit;
- xf86SwitchModeProc *SwitchMode;
- xf86AdjustFrameProc *AdjustFrame;
- xf86EnterVTProc *EnterVT;
- xf86LeaveVTProc *LeaveVT;
- xf86FreeScreenProc *FreeScreen;
- xf86ValidModeProc *ValidMode;
- xf86EnableDisableFBAccessProc *EnableDisableFBAccess;
- xf86SetDGAModeProc *SetDGAMode;
- xf86ChangeGammaProc *ChangeGamma;
- xf86PointerMovedProc *PointerMoved;
- xf86PMEventProc *PMEvent;
- xf86HandleMessageProc *HandleMessage;
- xf86DPMSSetProc *DPMSSet;
- xf86LoadPaletteProc *LoadPalette;
- xf86SetOverscanProc *SetOverscan;
- xorgDriverFuncProc *DriverFunc;
-
- /*
- * This can be used when the minor ABI version is incremented.
- * The NUM_* parameter must be reduced appropriately to keep the
- * structure size and alignment unchanged.
- */
- funcPointer reservedFuncs[NUM_RESERVED_FUNCS];
-
-} ScrnInfoRec;
-
-
-typedef struct {
- Bool (*OpenFramebuffer)(
- ScrnInfoPtr pScrn,
- char **name,
- unsigned char **mem,
- int *size,
- int *offset,
- int *extra
- );
- void (*CloseFramebuffer)(ScrnInfoPtr pScrn);
- Bool (*SetMode)(ScrnInfoPtr pScrn, DGAModePtr pMode);
- void (*SetViewport)(ScrnInfoPtr pScrn, int x, int y, int flags);
- int (*GetViewport)(ScrnInfoPtr pScrn);
- void (*Sync)(ScrnInfoPtr);
- void (*FillRect)(
- ScrnInfoPtr pScrn,
- int x, int y, int w, int h,
- unsigned long color
- );
- void (*BlitRect)(
- ScrnInfoPtr pScrn,
- int srcx, int srcy,
- int w, int h,
- int dstx, int dsty
- );
- void (*BlitTransRect)(
- ScrnInfoPtr pScrn,
- int srcx, int srcy,
- int w, int h,
- int dstx, int dsty,
- unsigned long color
- );
-} DGAFunctionRec, *DGAFunctionPtr;
-
-typedef struct {
- int token; /* id of the token */
- const char * name; /* token name */
-} SymTabRec, *SymTabPtr;
-
-/* flags for xf86LookupMode */
-typedef enum {
- LOOKUP_DEFAULT = 0, /* Use default mode lookup method */
- LOOKUP_BEST_REFRESH, /* Pick modes with best refresh */
- LOOKUP_CLOSEST_CLOCK, /* Pick modes with the closest clock */
- LOOKUP_LIST_ORDER, /* Pick first useful mode in list */
- LOOKUP_CLKDIV2 = 0x0100, /* Allow half clocks */
- LOOKUP_OPTIONAL_TOLERANCES = 0x0200 /* Allow missing hsync/vrefresh */
-} LookupModeFlags;
-
-#define NoDepth24Support 0x00
-#define Support24bppFb 0x01 /* 24bpp framebuffer supported */
-#define Support32bppFb 0x02 /* 32bpp framebuffer supported */
-#define SupportConvert24to32 0x04 /* Can convert 24bpp pixmap to 32bpp */
-#define SupportConvert32to24 0x08 /* Can convert 32bpp pixmap to 24bpp */
-#define PreferConvert24to32 0x10 /* prefer 24bpp pixmap to 32bpp conv */
-#define PreferConvert32to24 0x20 /* prefer 32bpp pixmap to 24bpp conv */
-
-
-/* For DPMS */
-typedef void (*DPMSSetProcPtr)(ScrnInfoPtr, int, int);
-
-/* Input handler proc */
-typedef void (*InputHandlerProc)(int fd, pointer data);
-
-/* These are used by xf86GetClocks */
-#define CLK_REG_SAVE -1
-#define CLK_REG_RESTORE -2
-
-/* xf86Debug.c */
-#ifdef BUILDDEBUG
-typedef struct {
- long sec;
- long usec;
-} xf86TsRec, *xf86TsPtr;
-#endif
-
-/*
- * misc constants
- */
-#define INTERLACE_REFRESH_WEIGHT 1.5
-#define SYNC_TOLERANCE 0.01 /* 1 percent */
-#define CLOCK_TOLERANCE 2000 /* Clock matching tolerance (2MHz) */
-
-
-#define OVERLAY_8_32_DUALFB 0x00000001
-#define OVERLAY_8_24_DUALFB 0x00000002
-#define OVERLAY_8_16_DUALFB 0x00000004
-#define OVERLAY_8_32_PLANAR 0x00000008
-
-#if 0
-#define LD_RESOLV_IFDONE 0 /* only check if no more
- delays pending */
-#define LD_RESOLV_NOW 1 /* finish one delay step */
-#define LD_RESOLV_FORCE 2 /* force checking... */
-#endif
-
-/* Values of xf86Info.mouseFlags */
-#define MF_CLEAR_DTR 1
-#define MF_CLEAR_RTS 2
-
-/* Action Events */
-typedef enum {
- ACTION_TERMINATE = 0, /* Terminate Server */
- ACTION_NEXT_MODE = 10, /* Switch to next video mode */
- ACTION_PREV_MODE,
- ACTION_DISABLEGRAB = 20, /* Cancel server/pointer/kbd grabs */
- ACTION_CLOSECLIENT, /* Kill client holding grab */
- ACTION_SWITCHSCREEN = 100, /* VT switch */
- ACTION_SWITCHSCREEN_NEXT,
- ACTION_SWITCHSCREEN_PREV,
- ACTION_MESSAGE = 9999 /* Generic message passing */
-} ActionEvent;
-
-/* xf86Versions.c */
-/*
- * Never change existing values, and always assign values explicitly.
- * NUM_BUILTIN_IFS must always be the last entry.
- */
-typedef enum {
- BUILTIN_IF_OSMOUSE = 0,
- BUILTIN_IF_OSKBD = 1,
- NUM_BUILTIN_IFS
-} BuiltinInterface;
-
-/*
- * These are intentionally the same as the module version macros.
- * It is possible to register a module as providing a specific interface,
- * in which case the module's version is used. This feature isn't
- * really ready for use yet though.
- */
-
-#define BUILTIN_INTERFACE_VERSION_NUMERIC(maj, min, patch) \
- ((((maj) & 0xFF) << 24) | (((min) & 0xFF) << 16) | (patch & 0xFFFF))
-#define GET_BUILTIN_INTERFACE_MAJOR_VERSION(vers) (((vers) >> 24) & 0xFF)
-#define GET_BUILTIN_INTERFACE_MINOR_VERSION(vers) (((vers) >> 16) & 0xFF)
-#define GET_BUILTIN_INTERFACE_PATCH_VERSION(vers) ((vers) & 0xFFFF)
-
-#endif /* _XF86STR_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86xv.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86xv.c
deleted file mode 100644
index 35695bd9e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86xv.c
+++ /dev/null
@@ -1,2050 +0,0 @@
-/*
- * XFree86 Xv DDX written by Mark Vojkovich (markv@valinux.com)
- */
-/*
- * Copyright (c) 1998-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86xv.c,v 1.37 2003/11/10 18:22:15 tsi Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "misc.h"
-#include "xf86.h"
-#include "xf86_OSproc.h"
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "scrnintstr.h"
-#include "regionstr.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "mivalidate.h"
-#include "validate.h"
-#include "resource.h"
-#include "gcstruct.h"
-#include "dixstruct.h"
-
-#include <X11/extensions/Xv.h>
-#include <X11/extensions/Xvproto.h>
-#include "xvdix.h"
-#ifdef XFree86LOADER
-#include "xvmodproc.h"
-#endif
-
-#include "xf86xvpriv.h"
-
-
-/* XvScreenRec fields */
-
-static Bool xf86XVCloseScreen(int, ScreenPtr);
-static int xf86XVQueryAdaptors(ScreenPtr, XvAdaptorPtr *, int *);
-
-/* XvAdaptorRec fields */
-
-static int xf86XVAllocatePort(unsigned long, XvPortPtr, XvPortPtr*);
-static int xf86XVFreePort(XvPortPtr);
-static int xf86XVPutVideo(ClientPtr, DrawablePtr,XvPortPtr, GCPtr,
- INT16, INT16, CARD16, CARD16,
- INT16, INT16, CARD16, CARD16);
-static int xf86XVPutStill(ClientPtr, DrawablePtr,XvPortPtr, GCPtr,
- INT16, INT16, CARD16, CARD16,
- INT16, INT16, CARD16, CARD16);
-static int xf86XVGetVideo(ClientPtr, DrawablePtr,XvPortPtr, GCPtr,
- INT16, INT16, CARD16, CARD16,
- INT16, INT16, CARD16, CARD16);
-static int xf86XVGetStill(ClientPtr, DrawablePtr,XvPortPtr, GCPtr,
- INT16, INT16, CARD16, CARD16,
- INT16, INT16, CARD16, CARD16);
-static int xf86XVStopVideo(ClientPtr, XvPortPtr, DrawablePtr);
-static int xf86XVSetPortAttribute(ClientPtr, XvPortPtr, Atom, INT32);
-static int xf86XVGetPortAttribute(ClientPtr, XvPortPtr, Atom, INT32*);
-static int xf86XVQueryBestSize(ClientPtr, XvPortPtr, CARD8,
- CARD16, CARD16,CARD16, CARD16,
- unsigned int*, unsigned int*);
-static int xf86XVPutImage(ClientPtr, DrawablePtr, XvPortPtr, GCPtr,
- INT16, INT16, CARD16, CARD16,
- INT16, INT16, CARD16, CARD16,
- XvImagePtr, unsigned char*, Bool,
- CARD16, CARD16);
-static int xf86XVQueryImageAttributes(ClientPtr, XvPortPtr, XvImagePtr,
- CARD16*, CARD16*, int*, int*);
-
-
-/* ScreenRec fields */
-
-static Bool xf86XVDestroyWindow(WindowPtr pWin);
-static void xf86XVWindowExposures(WindowPtr pWin, RegionPtr r1, RegionPtr r2);
-static void xf86XVClipNotify(WindowPtr pWin, int dx, int dy);
-
-/* ScrnInfoRec functions */
-
-static Bool xf86XVEnterVT(int, int);
-static void xf86XVLeaveVT(int, int);
-static void xf86XVAdjustFrame(int index, int x, int y, int flags);
-
-/* misc */
-
-static Bool xf86XVInitAdaptors(ScreenPtr, XF86VideoAdaptorPtr*, int);
-
-
-int XF86XVWindowIndex = -1;
-int XF86XvScreenIndex = -1;
-static unsigned long XF86XVGeneration = 0;
-static unsigned long PortResource = 0;
-
-#ifdef XFree86LOADER
-int (*XvGetScreenIndexProc)(void) = NULL;
-unsigned long (*XvGetRTPortProc)(void) = NULL;
-int (*XvScreenInitProc)(ScreenPtr) = NULL;
-#else
-int (*XvGetScreenIndexProc)(void) = XvGetScreenIndex;
-unsigned long (*XvGetRTPortProc)(void) = XvGetRTPort;
-int (*XvScreenInitProc)(ScreenPtr) = XvScreenInit;
-#endif
-
-
-#define GET_XV_SCREEN(pScreen) \
- ((XvScreenPtr)((pScreen)->devPrivates[XF86XvScreenIndex].ptr))
-
-#define GET_XF86XV_SCREEN(pScreen) \
- ((XF86XVScreenPtr)(GET_XV_SCREEN(pScreen)->devPriv.ptr))
-
-#define GET_XF86XV_WINDOW(pWin) \
- ((XF86XVWindowPtr)((pWin)->devPrivates[XF86XVWindowIndex].ptr))
-
-static xf86XVInitGenericAdaptorPtr *GenDrivers = NULL;
-static int NumGenDrivers = 0;
-
-int
-xf86XVRegisterGenericAdaptorDriver(
- xf86XVInitGenericAdaptorPtr InitFunc
-){
- xf86XVInitGenericAdaptorPtr *newdrivers;
-
- newdrivers = xrealloc(GenDrivers, sizeof(xf86XVInitGenericAdaptorPtr) *
- (1 + NumGenDrivers));
- if (!newdrivers)
- return 0;
- GenDrivers = newdrivers;
-
- GenDrivers[NumGenDrivers++] = InitFunc;
-
- return 1;
-}
-
-int
-xf86XVListGenericAdaptors(
- ScrnInfoPtr pScrn,
- XF86VideoAdaptorPtr **adaptors
-){
- int i,j,n,num;
- XF86VideoAdaptorPtr *DrivAdap,*new;
-
- num = 0;
- *adaptors = NULL;
- /*
- * The v4l driver registers itself first, but can use surfaces registered
- * by other drivers. So, call the v4l driver last.
- */
- for (i = NumGenDrivers; --i >= 0; ) {
- DrivAdap = NULL;
- n = (*GenDrivers[i])(pScrn, &DrivAdap);
- if (0 == n)
- continue;
- new = xrealloc(*adaptors, sizeof(XF86VideoAdaptorPtr) * (num+n));
- if (NULL == new)
- continue;
- *adaptors = new;
- for (j = 0; j < n; j++, num++)
- (*adaptors)[num] = DrivAdap[j];
- }
- return num;
-}
-
-
-/**************** Offscreen surface stuff *******************/
-
-typedef struct {
- XF86OffscreenImagePtr images;
- int num;
-} OffscreenImageRec;
-
-static OffscreenImageRec OffscreenImages[MAXSCREENS];
-
-Bool
-xf86XVRegisterOffscreenImages(
- ScreenPtr pScreen,
- XF86OffscreenImagePtr images,
- int num
-){
- OffscreenImages[pScreen->myNum].num = num;
- OffscreenImages[pScreen->myNum].images = images;
-
- return TRUE;
-}
-
-XF86OffscreenImagePtr
-xf86XVQueryOffscreenImages(
- ScreenPtr pScreen,
- int *num
-){
- *num = OffscreenImages[pScreen->myNum].num;
- return OffscreenImages[pScreen->myNum].images;
-}
-
-
-XF86VideoAdaptorPtr
-xf86XVAllocateVideoAdaptorRec(ScrnInfoPtr pScrn)
-{
- return xcalloc(1, sizeof(XF86VideoAdaptorRec));
-}
-
-void
-xf86XVFreeVideoAdaptorRec(XF86VideoAdaptorPtr ptr)
-{
- xfree(ptr);
-}
-
-
-Bool
-xf86XVScreenInit(
- ScreenPtr pScreen,
- XF86VideoAdaptorPtr *adaptors,
- int num
-){
- ScrnInfoPtr pScrn;
- XF86XVScreenPtr ScreenPriv;
- XvScreenPtr pxvs;
-
- if(num <= 0 ||
- !XvGetScreenIndexProc || !XvGetRTPortProc || !XvScreenInitProc)
- return FALSE;
-
- if(XF86XVGeneration != serverGeneration) {
- if((XF86XVWindowIndex = AllocateWindowPrivateIndex()) < 0)
- return FALSE;
- XF86XVGeneration = serverGeneration;
- }
-
- if(!AllocateWindowPrivate(pScreen,XF86XVWindowIndex,0))
- return FALSE;
-
- if(Success != (*XvScreenInitProc)(pScreen)) return FALSE;
-
- XF86XvScreenIndex = (*XvGetScreenIndexProc)();
- PortResource = (*XvGetRTPortProc)();
-
- pxvs = GET_XV_SCREEN(pScreen);
-
- /* Anyone initializing the Xv layer must provide these two.
- The Xv di layer calls them without even checking if they exist! */
-
- pxvs->ddCloseScreen = xf86XVCloseScreen;
- pxvs->ddQueryAdaptors = xf86XVQueryAdaptors;
-
- /* The Xv di layer provides us with a private hook so that we don't
- have to allocate our own screen private. They also provide
- a CloseScreen hook so that we don't have to wrap it. I'm not
- sure that I appreciate that. */
-
- ScreenPriv = xalloc(sizeof(XF86XVScreenRec));
- pxvs->devPriv.ptr = (pointer)ScreenPriv;
-
- if(!ScreenPriv) return FALSE;
-
- pScrn = xf86Screens[pScreen->myNum];
-
- ScreenPriv->videoGC = NULL; /* for the helper */
-
- ScreenPriv->DestroyWindow = pScreen->DestroyWindow;
- ScreenPriv->WindowExposures = pScreen->WindowExposures;
- ScreenPriv->ClipNotify = pScreen->ClipNotify;
- ScreenPriv->EnterVT = pScrn->EnterVT;
- ScreenPriv->LeaveVT = pScrn->LeaveVT;
- ScreenPriv->AdjustFrame = pScrn->AdjustFrame;
-
- pScreen->DestroyWindow = xf86XVDestroyWindow;
- pScreen->WindowExposures = xf86XVWindowExposures;
- pScreen->ClipNotify = xf86XVClipNotify;
- pScrn->EnterVT = xf86XVEnterVT;
- pScrn->LeaveVT = xf86XVLeaveVT;
- if(pScrn->AdjustFrame)
- pScrn->AdjustFrame = xf86XVAdjustFrame;
-
- if(!xf86XVInitAdaptors(pScreen, adaptors, num))
- return FALSE;
-
- return TRUE;
-}
-
-static void
-xf86XVFreeAdaptor(XvAdaptorPtr pAdaptor)
-{
- int i;
-
- xfree(pAdaptor->name);
-
- if(pAdaptor->pEncodings) {
- XvEncodingPtr pEncode = pAdaptor->pEncodings;
-
- for(i = 0; i < pAdaptor->nEncodings; i++, pEncode++)
- xfree(pEncode->name);
- xfree(pAdaptor->pEncodings);
- }
-
- xfree(pAdaptor->pFormats);
-
- if(pAdaptor->pPorts) {
- XvPortPtr pPort = pAdaptor->pPorts;
- XvPortRecPrivatePtr pPriv;
-
- for(i = 0; i < pAdaptor->nPorts; i++, pPort++) {
- pPriv = (XvPortRecPrivatePtr)pPort->devPriv.ptr;
- if(pPriv) {
- if(pPriv->clientClip)
- REGION_DESTROY(pAdaptor->pScreen, pPriv->clientClip);
- if(pPriv->pCompositeClip && pPriv->FreeCompositeClip)
- REGION_DESTROY(pAdaptor->pScreen, pPriv->pCompositeClip);
- xfree(pPriv);
- }
- }
- xfree(pAdaptor->pPorts);
- }
-
- if(pAdaptor->nAttributes) {
- XvAttributePtr pAttribute = pAdaptor->pAttributes;
-
- for(i = 0; i < pAdaptor->nAttributes; i++, pAttribute++)
- xfree(pAttribute->name);
- xfree(pAdaptor->pAttributes);
- }
-
- xfree(pAdaptor->pImages);
- xfree(pAdaptor->devPriv.ptr);
-}
-
-static Bool
-xf86XVInitAdaptors(
- ScreenPtr pScreen,
- XF86VideoAdaptorPtr *infoPtr,
- int number
-) {
- XvScreenPtr pxvs = GET_XV_SCREEN(pScreen);
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- XF86VideoAdaptorPtr adaptorPtr;
- XvAdaptorPtr pAdaptor, pa;
- XvAdaptorRecPrivatePtr adaptorPriv;
- int na, numAdaptor;
- XvPortRecPrivatePtr portPriv;
- XvPortPtr pPort, pp;
- int numPort;
- XF86AttributePtr attributePtr;
- XvAttributePtr pAttribute, pat;
- XF86VideoFormatPtr formatPtr;
- XvFormatPtr pFormat, pf;
- int numFormat, totFormat;
- XF86VideoEncodingPtr encodingPtr;
- XvEncodingPtr pEncode, pe;
- XF86ImagePtr imagePtr;
- XvImagePtr pImage, pi;
- int numVisuals;
- VisualPtr pVisual;
- int i;
-
- pxvs->nAdaptors = 0;
- pxvs->pAdaptors = NULL;
-
- if(!(pAdaptor = xcalloc(number, sizeof(XvAdaptorRec))))
- return FALSE;
-
- for(pa = pAdaptor, na = 0, numAdaptor = 0; na < number; na++, adaptorPtr++) {
- adaptorPtr = infoPtr[na];
-
- if(!adaptorPtr->StopVideo || !adaptorPtr->SetPortAttribute ||
- !adaptorPtr->GetPortAttribute || !adaptorPtr->QueryBestSize)
- continue;
-
- /* client libs expect at least one encoding */
- if(!adaptorPtr->nEncodings || !adaptorPtr->pEncodings)
- continue;
-
- pa->type = adaptorPtr->type;
-
- if(!adaptorPtr->PutVideo && !adaptorPtr->GetVideo)
- pa->type &= ~XvVideoMask;
-
- if(!adaptorPtr->PutStill && !adaptorPtr->GetStill)
- pa->type &= ~XvStillMask;
-
- if(!adaptorPtr->PutImage || !adaptorPtr->QueryImageAttributes)
- pa->type &= ~XvImageMask;
-
- if(!adaptorPtr->PutVideo && !adaptorPtr->PutImage &&
- !adaptorPtr->PutStill)
- pa->type &= ~XvInputMask;
-
- if(!adaptorPtr->GetVideo && !adaptorPtr->GetStill)
- pa->type &= ~XvOutputMask;
-
- if(!(adaptorPtr->type & (XvPixmapMask | XvWindowMask)))
- continue;
- if(!(adaptorPtr->type & (XvImageMask | XvVideoMask | XvStillMask)))
- continue;
-
- pa->pScreen = pScreen;
- pa->ddAllocatePort = xf86XVAllocatePort;
- pa->ddFreePort = xf86XVFreePort;
- pa->ddPutVideo = xf86XVPutVideo;
- pa->ddPutStill = xf86XVPutStill;
- pa->ddGetVideo = xf86XVGetVideo;
- pa->ddGetStill = xf86XVGetStill;
- pa->ddStopVideo = xf86XVStopVideo;
- pa->ddPutImage = xf86XVPutImage;
- pa->ddSetPortAttribute = xf86XVSetPortAttribute;
- pa->ddGetPortAttribute = xf86XVGetPortAttribute;
- pa->ddQueryBestSize = xf86XVQueryBestSize;
- pa->ddQueryImageAttributes = xf86XVQueryImageAttributes;
- if((pa->name = xalloc(strlen(adaptorPtr->name) + 1)))
- strcpy(pa->name, adaptorPtr->name);
-
- if(adaptorPtr->nEncodings &&
- (pEncode = xcalloc(adaptorPtr->nEncodings, sizeof(XvEncodingRec)))) {
-
- for(pe = pEncode, encodingPtr = adaptorPtr->pEncodings, i = 0;
- i < adaptorPtr->nEncodings; pe++, i++, encodingPtr++)
- {
- pe->id = encodingPtr->id;
- pe->pScreen = pScreen;
- if((pe->name = xalloc(strlen(encodingPtr->name) + 1)))
- strcpy(pe->name, encodingPtr->name);
- pe->width = encodingPtr->width;
- pe->height = encodingPtr->height;
- pe->rate.numerator = encodingPtr->rate.numerator;
- pe->rate.denominator = encodingPtr->rate.denominator;
- }
- pa->nEncodings = adaptorPtr->nEncodings;
- pa->pEncodings = pEncode;
- }
-
- if(adaptorPtr->nImages &&
- (pImage = xcalloc(adaptorPtr->nImages, sizeof(XvImageRec)))) {
-
- for(i = 0, pi = pImage, imagePtr = adaptorPtr->pImages;
- i < adaptorPtr->nImages; i++, pi++, imagePtr++)
- {
- pi->id = imagePtr->id;
- pi->type = imagePtr->type;
- pi->byte_order = imagePtr->byte_order;
- memcpy(pi->guid, imagePtr->guid, 16);
- pi->bits_per_pixel = imagePtr->bits_per_pixel;
- pi->format = imagePtr->format;
- pi->num_planes = imagePtr->num_planes;
- pi->depth = imagePtr->depth;
- pi->red_mask = imagePtr->red_mask;
- pi->green_mask = imagePtr->green_mask;
- pi->blue_mask = imagePtr->blue_mask;
- pi->y_sample_bits = imagePtr->y_sample_bits;
- pi->u_sample_bits = imagePtr->u_sample_bits;
- pi->v_sample_bits = imagePtr->v_sample_bits;
- pi->horz_y_period = imagePtr->horz_y_period;
- pi->horz_u_period = imagePtr->horz_u_period;
- pi->horz_v_period = imagePtr->horz_v_period;
- pi->vert_y_period = imagePtr->vert_y_period;
- pi->vert_u_period = imagePtr->vert_u_period;
- pi->vert_v_period = imagePtr->vert_v_period;
- memcpy(pi->component_order, imagePtr->component_order, 32);
- pi->scanline_order = imagePtr->scanline_order;
- }
- pa->nImages = adaptorPtr->nImages;
- pa->pImages = pImage;
- }
-
- if(adaptorPtr->nAttributes &&
- (pAttribute = xcalloc(adaptorPtr->nAttributes, sizeof(XvAttributeRec))))
- {
- for(pat = pAttribute, attributePtr = adaptorPtr->pAttributes, i = 0;
- i < adaptorPtr->nAttributes; pat++, i++, attributePtr++)
- {
- pat->flags = attributePtr->flags;
- pat->min_value = attributePtr->min_value;
- pat->max_value = attributePtr->max_value;
- if((pat->name = xalloc(strlen(attributePtr->name) + 1)))
- strcpy(pat->name, attributePtr->name);
- }
- pa->nAttributes = adaptorPtr->nAttributes;
- pa->pAttributes = pAttribute;
- }
-
-
- totFormat = adaptorPtr->nFormats;
-
- if(!(pFormat = xcalloc(totFormat, sizeof(XvFormatRec)))) {
- xf86XVFreeAdaptor(pa);
- continue;
- }
- for(pf = pFormat, i = 0, numFormat = 0, formatPtr = adaptorPtr->pFormats;
- i < adaptorPtr->nFormats; i++, formatPtr++)
- {
- numVisuals = pScreen->numVisuals;
- pVisual = pScreen->visuals;
-
- while(numVisuals--) {
- if((pVisual->class == formatPtr->class) &&
- (pVisual->nplanes == formatPtr->depth)) {
-
- if(numFormat >= totFormat) {
- void *moreSpace;
- totFormat *= 2;
- moreSpace = xrealloc(pFormat,
- totFormat * sizeof(XvFormatRec));
- if(!moreSpace) break;
- pFormat = moreSpace;
- pf = pFormat + numFormat;
- }
-
- pf->visual = pVisual->vid;
- pf->depth = formatPtr->depth;
-
- pf++;
- numFormat++;
- }
- pVisual++;
- }
- }
- pa->nFormats = numFormat;
- pa->pFormats = pFormat;
- if(!numFormat) {
- xf86XVFreeAdaptor(pa);
- continue;
- }
-
- if(!(adaptorPriv = xcalloc(1, sizeof(XvAdaptorRecPrivate)))) {
- xf86XVFreeAdaptor(pa);
- continue;
- }
-
- adaptorPriv->flags = adaptorPtr->flags;
- adaptorPriv->PutVideo = adaptorPtr->PutVideo;
- adaptorPriv->PutStill = adaptorPtr->PutStill;
- adaptorPriv->GetVideo = adaptorPtr->GetVideo;
- adaptorPriv->GetStill = adaptorPtr->GetStill;
- adaptorPriv->StopVideo = adaptorPtr->StopVideo;
- adaptorPriv->SetPortAttribute = adaptorPtr->SetPortAttribute;
- adaptorPriv->GetPortAttribute = adaptorPtr->GetPortAttribute;
- adaptorPriv->QueryBestSize = adaptorPtr->QueryBestSize;
- adaptorPriv->QueryImageAttributes = adaptorPtr->QueryImageAttributes;
- adaptorPriv->PutImage = adaptorPtr->PutImage;
- adaptorPriv->ReputImage = adaptorPtr->ReputImage;
-
- pa->devPriv.ptr = (pointer)adaptorPriv;
-
- if(!(pPort = xcalloc(adaptorPtr->nPorts, sizeof(XvPortRec)))) {
- xf86XVFreeAdaptor(pa);
- continue;
- }
- for(pp = pPort, i = 0, numPort = 0;
- i < adaptorPtr->nPorts; i++) {
-
- if(!(pp->id = FakeClientID(0)))
- continue;
-
- if(!(portPriv = xcalloc(1, sizeof(XvPortRecPrivate))))
- continue;
-
- if(!AddResource(pp->id, PortResource, pp)) {
- xfree(portPriv);
- continue;
- }
-
- pp->pAdaptor = pa;
- pp->pNotify = (XvPortNotifyPtr)NULL;
- pp->pDraw = (DrawablePtr)NULL;
- pp->client = (ClientPtr)NULL;
- pp->grab.client = (ClientPtr)NULL;
- pp->time = currentTime;
- pp->devPriv.ptr = portPriv;
-
- portPriv->pScrn = pScrn;
- portPriv->AdaptorRec = adaptorPriv;
- portPriv->DevPriv.ptr = adaptorPtr->pPortPrivates[i].ptr;
-
- pp++;
- numPort++;
- }
- pa->nPorts = numPort;
- pa->pPorts = pPort;
- if(!numPort) {
- xf86XVFreeAdaptor(pa);
- continue;
- }
-
- pa->base_id = pPort->id;
-
- pa++;
- numAdaptor++;
- }
-
- if(numAdaptor) {
- pxvs->nAdaptors = numAdaptor;
- pxvs->pAdaptors = pAdaptor;
- } else {
- xfree(pAdaptor);
- return FALSE;
- }
-
- return TRUE;
-}
-
-/* Video should be clipped to the intersection of the window cliplist
- and the client cliplist specified in the GC for which the video was
- initialized. When we need to reclip a window, the GC that started
- the video may not even be around anymore. That's why we save the
- client clip from the GC when the video is initialized. We then
- use xf86XVUpdateCompositeClip to calculate the new composite clip
- when we need it. This is different from what DEC did. They saved
- the GC and used it's clip list when they needed to reclip the window,
- even if the client clip was different from the one the video was
- initialized with. If the original GC was destroyed, they had to stop
- the video. I like the new method better (MArk).
-
- This function only works for windows. Will need to rewrite when
- (if) we support pixmap rendering.
-*/
-
-static void
-xf86XVUpdateCompositeClip(XvPortRecPrivatePtr portPriv)
-{
- RegionPtr pregWin, pCompositeClip;
- WindowPtr pWin;
- ScreenPtr pScreen;
- Bool freeCompClip = FALSE;
-
- if(portPriv->pCompositeClip)
- return;
-
- pWin = (WindowPtr)portPriv->pDraw;
- pScreen = pWin->drawable.pScreen;
-
- /* get window clip list */
- if(portPriv->subWindowMode == IncludeInferiors) {
- pregWin = NotClippedByChildren(pWin);
- freeCompClip = TRUE;
- } else
- pregWin = &pWin->clipList;
-
- if(!portPriv->clientClip) {
- portPriv->pCompositeClip = pregWin;
- portPriv->FreeCompositeClip = freeCompClip;
- return;
- }
-
- pCompositeClip = REGION_CREATE(pScreen, NullBox, 1);
- REGION_COPY(pScreen, pCompositeClip, portPriv->clientClip);
- REGION_TRANSLATE(pScreen, pCompositeClip,
- portPriv->pDraw->x + portPriv->clipOrg.x,
- portPriv->pDraw->y + portPriv->clipOrg.y);
- REGION_INTERSECT(pScreen, pCompositeClip, pregWin, pCompositeClip);
-
- portPriv->pCompositeClip = pCompositeClip;
- portPriv->FreeCompositeClip = TRUE;
-
- if(freeCompClip) {
- REGION_DESTROY(pScreen, pregWin);
- }
-}
-
-/* Save the current clientClip and update the CompositeClip whenever
- we have a fresh GC */
-
-static void
-xf86XVCopyClip(
- XvPortRecPrivatePtr portPriv,
- GCPtr pGC
-){
- ScreenPtr pScreen = pGC->pScreen;
-
- /* copy the new clip if it exists */
- if((pGC->clientClipType == CT_REGION) && pGC->clientClip) {
- if(!portPriv->clientClip)
- portPriv->clientClip = REGION_CREATE(pScreen, NullBox, 1);
- /* Note: this is in window coordinates */
- REGION_COPY(pScreen, portPriv->clientClip, pGC->clientClip);
- } else if(portPriv->clientClip) { /* free the old clientClip */
- REGION_DESTROY(pScreen, portPriv->clientClip);
- portPriv->clientClip = NULL;
- }
-
- /* get rid of the old clip list */
- if(portPriv->pCompositeClip && portPriv->FreeCompositeClip) {
- REGION_DESTROY(pScreen, portPriv->pCompositeClip);
- }
-
- portPriv->clipOrg = pGC->clipOrg;
- portPriv->pCompositeClip = pGC->pCompositeClip;
- portPriv->FreeCompositeClip = FALSE;
- portPriv->subWindowMode = pGC->subWindowMode;
-}
-
-static int
-xf86XVRegetVideo(XvPortRecPrivatePtr portPriv)
-{
- RegionRec WinRegion;
- RegionRec ClipRegion;
- BoxRec WinBox;
- ScreenPtr pScreen;
- int ret = Success;
- Bool clippedAway = FALSE;
-
- pScreen = portPriv->pDraw->pScreen;
- xf86XVUpdateCompositeClip(portPriv);
-
- /* translate the video region to the screen */
- WinBox.x1 = portPriv->pDraw->x + portPriv->drw_x;
- WinBox.y1 = portPriv->pDraw->y + portPriv->drw_y;
- WinBox.x2 = WinBox.x1 + portPriv->drw_w;
- WinBox.y2 = WinBox.y1 + portPriv->drw_h;
-
- /* clip to the window composite clip */
- REGION_INIT(pScreen, &WinRegion, &WinBox, 1);
- REGION_NULL(pScreen, &ClipRegion);
- REGION_INTERSECT(pScreen, &ClipRegion, &WinRegion, portPriv->pCompositeClip);
-
- /* that's all if it's totally obscured */
- if(!REGION_NOTEMPTY(pScreen, &ClipRegion)) {
- clippedAway = TRUE;
- goto CLIP_VIDEO_BAILOUT;
- }
-
- if(portPriv->AdaptorRec->flags & VIDEO_INVERT_CLIPLIST) {
- REGION_SUBTRACT(pScreen, &ClipRegion, &WinRegion, &ClipRegion);
- }
-
- ret = (*portPriv->AdaptorRec->GetVideo)(portPriv->pScrn,
- portPriv->vid_x, portPriv->vid_y,
- WinBox.x1, WinBox.y1,
- portPriv->vid_w, portPriv->vid_h,
- portPriv->drw_w, portPriv->drw_h,
- &ClipRegion, portPriv->DevPriv.ptr);
-
- if(ret == Success)
- portPriv->isOn = XV_ON;
-
-CLIP_VIDEO_BAILOUT:
-
- if((clippedAway || (ret != Success)) && portPriv->isOn == XV_ON) {
- (*portPriv->AdaptorRec->StopVideo)(
- portPriv->pScrn, portPriv->DevPriv.ptr, FALSE);
- portPriv->isOn = XV_PENDING;
- }
-
- /* This clip was copied and only good for one shot */
- if(!portPriv->FreeCompositeClip)
- portPriv->pCompositeClip = NULL;
-
- REGION_UNINIT(pScreen, &WinRegion);
- REGION_UNINIT(pScreen, &ClipRegion);
-
- return ret;
-}
-
-
-static int
-xf86XVReputVideo(XvPortRecPrivatePtr portPriv)
-{
- RegionRec WinRegion;
- RegionRec ClipRegion;
- BoxRec WinBox;
- ScreenPtr pScreen;
- int ret = Success;
- Bool clippedAway = FALSE;
-
- pScreen = portPriv->pDraw->pScreen;
-
- xf86XVUpdateCompositeClip(portPriv);
-
- /* translate the video region to the screen */
- WinBox.x1 = portPriv->pDraw->x + portPriv->drw_x;
- WinBox.y1 = portPriv->pDraw->y + portPriv->drw_y;
- WinBox.x2 = WinBox.x1 + portPriv->drw_w;
- WinBox.y2 = WinBox.y1 + portPriv->drw_h;
-
- /* clip to the window composite clip */
- REGION_INIT(pScreen, &WinRegion, &WinBox, 1);
- REGION_NULL(pScreen, &ClipRegion);
- REGION_INTERSECT(pScreen, &ClipRegion, &WinRegion, portPriv->pCompositeClip);
-
- /* clip and translate to the viewport */
- if(portPriv->AdaptorRec->flags & VIDEO_CLIP_TO_VIEWPORT) {
- RegionRec VPReg;
- BoxRec VPBox;
-
- VPBox.x1 = portPriv->pScrn->frameX0;
- VPBox.y1 = portPriv->pScrn->frameY0;
- VPBox.x2 = portPriv->pScrn->frameX1;
- VPBox.y2 = portPriv->pScrn->frameY1;
-
- REGION_INIT(pScreen, &VPReg, &VPBox, 1);
- REGION_INTERSECT(pScreen, &ClipRegion, &ClipRegion, &VPReg);
- REGION_UNINIT(pScreen, &VPReg);
- }
-
- /* that's all if it's totally obscured */
- if(!REGION_NOTEMPTY(pScreen, &ClipRegion)) {
- clippedAway = TRUE;
- goto CLIP_VIDEO_BAILOUT;
- }
-
- /* bailout if we have to clip but the hardware doesn't support it */
- if(portPriv->AdaptorRec->flags & VIDEO_NO_CLIPPING) {
- BoxPtr clipBox = REGION_RECTS(&ClipRegion);
- if( (REGION_NUM_RECTS(&ClipRegion) != 1) ||
- (clipBox->x1 != WinBox.x1) || (clipBox->x2 != WinBox.x2) ||
- (clipBox->y1 != WinBox.y1) || (clipBox->y2 != WinBox.y2))
- {
- clippedAway = TRUE;
- goto CLIP_VIDEO_BAILOUT;
- }
- }
-
- if(portPriv->AdaptorRec->flags & VIDEO_INVERT_CLIPLIST) {
- REGION_SUBTRACT(pScreen, &ClipRegion, &WinRegion, &ClipRegion);
- }
-
- ret = (*portPriv->AdaptorRec->PutVideo)(portPriv->pScrn,
- portPriv->vid_x, portPriv->vid_y,
- WinBox.x1, WinBox.y1,
- portPriv->vid_w, portPriv->vid_h,
- portPriv->drw_w, portPriv->drw_h,
- &ClipRegion, portPriv->DevPriv.ptr);
-
- if(ret == Success) portPriv->isOn = XV_ON;
-
-CLIP_VIDEO_BAILOUT:
-
- if((clippedAway || (ret != Success)) && (portPriv->isOn == XV_ON)) {
- (*portPriv->AdaptorRec->StopVideo)(
- portPriv->pScrn, portPriv->DevPriv.ptr, FALSE);
- portPriv->isOn = XV_PENDING;
- }
-
- /* This clip was copied and only good for one shot */
- if(!portPriv->FreeCompositeClip)
- portPriv->pCompositeClip = NULL;
-
- REGION_UNINIT(pScreen, &WinRegion);
- REGION_UNINIT(pScreen, &ClipRegion);
-
- return ret;
-}
-
-static int
-xf86XVReputImage(XvPortRecPrivatePtr portPriv)
-{
- RegionRec WinRegion;
- RegionRec ClipRegion;
- BoxRec WinBox;
- ScreenPtr pScreen;
- int ret = Success;
- Bool clippedAway = FALSE;
-
- pScreen = portPriv->pDraw->pScreen;
-
- xf86XVUpdateCompositeClip(portPriv);
-
- /* translate the video region to the screen */
- WinBox.x1 = portPriv->pDraw->x + portPriv->drw_x;
- WinBox.y1 = portPriv->pDraw->y + portPriv->drw_y;
- WinBox.x2 = WinBox.x1 + portPriv->drw_w;
- WinBox.y2 = WinBox.y1 + portPriv->drw_h;
-
- /* clip to the window composite clip */
- REGION_INIT(pScreen, &WinRegion, &WinBox, 1);
- REGION_NULL(pScreen, &ClipRegion);
- REGION_INTERSECT(pScreen, &ClipRegion, &WinRegion, portPriv->pCompositeClip);
-
- /* clip and translate to the viewport */
- if(portPriv->AdaptorRec->flags & VIDEO_CLIP_TO_VIEWPORT) {
- RegionRec VPReg;
- BoxRec VPBox;
-
- VPBox.x1 = portPriv->pScrn->frameX0;
- VPBox.y1 = portPriv->pScrn->frameY0;
- VPBox.x2 = portPriv->pScrn->frameX1;
- VPBox.y2 = portPriv->pScrn->frameY1;
-
- REGION_INIT(pScreen, &VPReg, &VPBox, 1);
- REGION_INTERSECT(pScreen, &ClipRegion, &ClipRegion, &VPReg);
- REGION_UNINIT(pScreen, &VPReg);
- }
-
- /* that's all if it's totally obscured */
- if(!REGION_NOTEMPTY(pScreen, &ClipRegion)) {
- clippedAway = TRUE;
- goto CLIP_VIDEO_BAILOUT;
- }
-
- /* bailout if we have to clip but the hardware doesn't support it */
- if(portPriv->AdaptorRec->flags & VIDEO_NO_CLIPPING) {
- BoxPtr clipBox = REGION_RECTS(&ClipRegion);
- if( (REGION_NUM_RECTS(&ClipRegion) != 1) ||
- (clipBox->x1 != WinBox.x1) || (clipBox->x2 != WinBox.x2) ||
- (clipBox->y1 != WinBox.y1) || (clipBox->y2 != WinBox.y2))
- {
- clippedAway = TRUE;
- goto CLIP_VIDEO_BAILOUT;
- }
- }
-
- if(portPriv->AdaptorRec->flags & VIDEO_INVERT_CLIPLIST) {
- REGION_SUBTRACT(pScreen, &ClipRegion, &WinRegion, &ClipRegion);
- }
-
- ret = (*portPriv->AdaptorRec->ReputImage)(portPriv->pScrn,
- WinBox.x1, WinBox.y1,
- &ClipRegion, portPriv->DevPriv.ptr);
-
- portPriv->isOn = (ret == Success) ? XV_ON : XV_OFF;
-
-CLIP_VIDEO_BAILOUT:
-
- if((clippedAway || (ret != Success)) && (portPriv->isOn == XV_ON)) {
- (*portPriv->AdaptorRec->StopVideo)(
- portPriv->pScrn, portPriv->DevPriv.ptr, FALSE);
- portPriv->isOn = XV_PENDING;
- }
-
- /* This clip was copied and only good for one shot */
- if(!portPriv->FreeCompositeClip)
- portPriv->pCompositeClip = NULL;
-
- REGION_UNINIT(pScreen, &WinRegion);
- REGION_UNINIT(pScreen, &ClipRegion);
-
- return ret;
-}
-
-
-static int
-xf86XVReputAllVideo(WindowPtr pWin, pointer data)
-{
- XF86XVWindowPtr WinPriv = GET_XF86XV_WINDOW(pWin);
-
- while(WinPriv) {
- if(WinPriv->PortRec->type == XvInputMask)
- xf86XVReputVideo(WinPriv->PortRec);
- else
- xf86XVRegetVideo(WinPriv->PortRec);
- WinPriv = WinPriv->next;
- }
-
- return WT_WALKCHILDREN;
-}
-
-static int
-xf86XVEnlistPortInWindow(WindowPtr pWin, XvPortRecPrivatePtr portPriv)
-{
- XF86XVWindowPtr winPriv, PrivRoot;
-
- winPriv = PrivRoot = GET_XF86XV_WINDOW(pWin);
-
- /* Enlist our port in the window private */
- while(winPriv) {
- if(winPriv->PortRec == portPriv) /* we're already listed */
- break;
- winPriv = winPriv->next;
- }
-
- if(!winPriv) {
- winPriv = xalloc(sizeof(XF86XVWindowRec));
- if(!winPriv) return BadAlloc;
- winPriv->PortRec = portPriv;
- winPriv->next = PrivRoot;
- pWin->devPrivates[XF86XVWindowIndex].ptr = (pointer)winPriv;
- }
- return Success;
-}
-
-
-static void
-xf86XVRemovePortFromWindow(WindowPtr pWin, XvPortRecPrivatePtr portPriv)
-{
- XF86XVWindowPtr winPriv, prevPriv = NULL;
-
- winPriv = GET_XF86XV_WINDOW(pWin);
-
- while(winPriv) {
- if(winPriv->PortRec == portPriv) {
- if(prevPriv)
- prevPriv->next = winPriv->next;
- else
- pWin->devPrivates[XF86XVWindowIndex].ptr =
- (pointer)winPriv->next;
- xfree(winPriv);
- break;
- }
- prevPriv = winPriv;
- winPriv = winPriv->next;
- }
- portPriv->pDraw = NULL;
-}
-
-/**** ScreenRec fields ****/
-
-static Bool
-xf86XVDestroyWindow(WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- XF86XVScreenPtr ScreenPriv = GET_XF86XV_SCREEN(pScreen);
- XF86XVWindowPtr tmp, WinPriv = GET_XF86XV_WINDOW(pWin);
- int ret;
-
- while(WinPriv) {
- XvPortRecPrivatePtr pPriv = WinPriv->PortRec;
-
- if(pPriv->isOn > XV_OFF) {
- (*pPriv->AdaptorRec->StopVideo)(
- pPriv->pScrn, pPriv->DevPriv.ptr, TRUE);
- pPriv->isOn = XV_OFF;
- }
-
- pPriv->pDraw = NULL;
- tmp = WinPriv;
- WinPriv = WinPriv->next;
- xfree(tmp);
- }
-
- pWin->devPrivates[XF86XVWindowIndex].ptr = NULL;
-
- pScreen->DestroyWindow = ScreenPriv->DestroyWindow;
- ret = (*pScreen->DestroyWindow)(pWin);
- pScreen->DestroyWindow = xf86XVDestroyWindow;
-
- return ret;
-}
-
-
-static void
-xf86XVWindowExposures(WindowPtr pWin, RegionPtr reg1, RegionPtr reg2)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- XF86XVScreenPtr ScreenPriv = GET_XF86XV_SCREEN(pScreen);
- XF86XVWindowPtr WinPriv = GET_XF86XV_WINDOW(pWin);
- XF86XVWindowPtr pPrev;
- XvPortRecPrivatePtr pPriv;
- Bool AreasExposed;
-
- AreasExposed = (WinPriv && reg1 && REGION_NOTEMPTY(pScreen, reg1));
-
- pScreen->WindowExposures = ScreenPriv->WindowExposures;
- (*pScreen->WindowExposures)(pWin, reg1, reg2);
- pScreen->WindowExposures = xf86XVWindowExposures;
-
- /* filter out XClearWindow/Area */
- if (!pWin->valdata) return;
-
- pPrev = NULL;
-
- while(WinPriv) {
- pPriv = WinPriv->PortRec;
-
- /* Reput anyone with a reput function */
-
- switch(pPriv->type) {
- case XvInputMask:
- xf86XVReputVideo(pPriv);
- break;
- case XvOutputMask:
- xf86XVRegetVideo(pPriv);
- break;
- default: /* overlaid still/image*/
- if (pPriv->AdaptorRec->ReputImage)
- xf86XVReputImage(pPriv);
- else if(AreasExposed) {
- XF86XVWindowPtr tmp;
-
- if (pPriv->isOn == XV_ON) {
- (*pPriv->AdaptorRec->StopVideo)(
- pPriv->pScrn, pPriv->DevPriv.ptr, FALSE);
- pPriv->isOn = XV_PENDING;
- }
- pPriv->pDraw = NULL;
-
- if(!pPrev)
- pWin->devPrivates[XF86XVWindowIndex].ptr =
- (pointer)(WinPriv->next);
- else
- pPrev->next = WinPriv->next;
- tmp = WinPriv;
- WinPriv = WinPriv->next;
- xfree(tmp);
- continue;
- }
- break;
- }
- pPrev = WinPriv;
- WinPriv = WinPriv->next;
- }
-}
-
-
-static void
-xf86XVClipNotify(WindowPtr pWin, int dx, int dy)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- XF86XVScreenPtr ScreenPriv = GET_XF86XV_SCREEN(pScreen);
- XF86XVWindowPtr WinPriv = GET_XF86XV_WINDOW(pWin);
- XF86XVWindowPtr tmp, pPrev = NULL;
- XvPortRecPrivatePtr pPriv;
- Bool visible = (pWin->visibility == VisibilityUnobscured) ||
- (pWin->visibility == VisibilityPartiallyObscured);
-
- while(WinPriv) {
- pPriv = WinPriv->PortRec;
-
- if(pPriv->pCompositeClip && pPriv->FreeCompositeClip)
- REGION_DESTROY(pScreen, pPriv->pCompositeClip);
-
- pPriv->pCompositeClip = NULL;
-
- /* Stop everything except images, but stop them too if the
- window isn't visible. But we only remove the images. */
-
- if(pPriv->type || !visible) {
- if(pPriv->isOn == XV_ON) {
- (*pPriv->AdaptorRec->StopVideo)(
- pPriv->pScrn, pPriv->DevPriv.ptr, FALSE);
- pPriv->isOn = XV_PENDING;
- }
-
- if(!pPriv->type) { /* overlaid still/image */
- pPriv->pDraw = NULL;
-
- if(!pPrev)
- pWin->devPrivates[XF86XVWindowIndex].ptr =
- (pointer)(WinPriv->next);
- else
- pPrev->next = WinPriv->next;
- tmp = WinPriv;
- WinPriv = WinPriv->next;
- xfree(tmp);
- continue;
- }
- }
-
- pPrev = WinPriv;
- WinPriv = WinPriv->next;
- }
-
- if(ScreenPriv->ClipNotify) {
- pScreen->ClipNotify = ScreenPriv->ClipNotify;
- (*pScreen->ClipNotify)(pWin, dx, dy);
- pScreen->ClipNotify = xf86XVClipNotify;
- }
-}
-
-
-
-/**** Required XvScreenRec fields ****/
-
-static Bool
-xf86XVCloseScreen(int i, ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- XvScreenPtr pxvs = GET_XV_SCREEN(pScreen);
- XF86XVScreenPtr ScreenPriv = GET_XF86XV_SCREEN(pScreen);
- XvAdaptorPtr pa;
- int c;
-
- /* Clear offscreen images */
- (void)memset(&OffscreenImages[pScreen->myNum], 0, sizeof(OffscreenImages[0]));
-
- if(!ScreenPriv) return TRUE;
-
- if(ScreenPriv->videoGC) {
- FreeGC(ScreenPriv->videoGC, 0);
- ScreenPriv->videoGC = NULL;
- }
-
- pScreen->DestroyWindow = ScreenPriv->DestroyWindow;
- pScreen->WindowExposures = ScreenPriv->WindowExposures;
- pScreen->ClipNotify = ScreenPriv->ClipNotify;
-
- pScrn->EnterVT = ScreenPriv->EnterVT;
- pScrn->LeaveVT = ScreenPriv->LeaveVT;
- pScrn->AdjustFrame = ScreenPriv->AdjustFrame;
-
- for(c = 0, pa = pxvs->pAdaptors; c < pxvs->nAdaptors; c++, pa++) {
- xf86XVFreeAdaptor(pa);
- }
-
- xfree(pxvs->pAdaptors);
- xfree(ScreenPriv);
- return TRUE;
-}
-
-
-static int
-xf86XVQueryAdaptors(
- ScreenPtr pScreen,
- XvAdaptorPtr *p_pAdaptors,
- int *p_nAdaptors
-){
- XvScreenPtr pxvs = GET_XV_SCREEN(pScreen);
-
- *p_nAdaptors = pxvs->nAdaptors;
- *p_pAdaptors = pxvs->pAdaptors;
-
- return (Success);
-}
-
-
-/**** ScrnInfoRec fields ****/
-
-static Bool
-xf86XVEnterVT(int index, int flags)
-{
- ScreenPtr pScreen = screenInfo.screens[index];
- XF86XVScreenPtr ScreenPriv = GET_XF86XV_SCREEN(pScreen);
- Bool ret;
-
- ret = (*ScreenPriv->EnterVT)(index, flags);
-
- if(ret) WalkTree(pScreen, xf86XVReputAllVideo, 0);
-
- return ret;
-}
-
-static void
-xf86XVLeaveVT(int index, int flags)
-{
- ScreenPtr pScreen = screenInfo.screens[index];
- XvScreenPtr pxvs = GET_XV_SCREEN(pScreen);
- XF86XVScreenPtr ScreenPriv = GET_XF86XV_SCREEN(pScreen);
- XvAdaptorPtr pAdaptor;
- XvPortPtr pPort;
- XvPortRecPrivatePtr pPriv;
- int i, j;
-
- for(i = 0; i < pxvs->nAdaptors; i++) {
- pAdaptor = &pxvs->pAdaptors[i];
- for(j = 0; j < pAdaptor->nPorts; j++) {
- pPort = &pAdaptor->pPorts[j];
- pPriv = (XvPortRecPrivatePtr)pPort->devPriv.ptr;
- if(pPriv->isOn > XV_OFF) {
-
- (*pPriv->AdaptorRec->StopVideo)(
- pPriv->pScrn, pPriv->DevPriv.ptr, TRUE);
- pPriv->isOn = XV_OFF;
-
- if(pPriv->pCompositeClip && pPriv->FreeCompositeClip)
- REGION_DESTROY(pScreen, pPriv->pCompositeClip);
-
- pPriv->pCompositeClip = NULL;
-
- if(!pPriv->type && pPriv->pDraw) { /* still */
- xf86XVRemovePortFromWindow((WindowPtr)pPriv->pDraw, pPriv);
- }
- }
- }
- }
-
- (*ScreenPriv->LeaveVT)(index, flags);
-}
-
-static void
-xf86XVAdjustFrame(int index, int x, int y, int flags)
-{
- ScrnInfoPtr pScrn = xf86Screens[index];
- ScreenPtr pScreen = pScrn->pScreen;
- XvScreenPtr pxvs = GET_XV_SCREEN(pScreen);
- XF86XVScreenPtr ScreenPriv = GET_XF86XV_SCREEN(pScreen);
- WindowPtr pWin;
- XvAdaptorPtr pa;
- int c, i;
-
- if(ScreenPriv->AdjustFrame) {
- pScrn->AdjustFrame = ScreenPriv->AdjustFrame;
- (*pScrn->AdjustFrame)(index, x, y, flags);
- pScrn->AdjustFrame = xf86XVAdjustFrame;
- }
-
- for(c = pxvs->nAdaptors, pa = pxvs->pAdaptors; c > 0; c--, pa++) {
- XvPortPtr pPort = pa->pPorts;
- XvPortRecPrivatePtr pPriv;
-
- for(i = pa->nPorts; i > 0; i--, pPort++) {
- pPriv = (XvPortRecPrivatePtr)pPort->devPriv.ptr;
-
- if(!pPriv->type && (pPriv->isOn == XV_ON)) { /* overlaid still/image */
-
- if(pPriv->pCompositeClip && pPriv->FreeCompositeClip)
- REGION_DESTROY(pScreen, pPriv->pCompositeClip);
-
- pPriv->pCompositeClip = NULL;
-
- pWin = (WindowPtr)pPriv->pDraw;
-
- if ((pPriv->AdaptorRec->ReputImage) &&
- ((pWin->visibility == VisibilityUnobscured) ||
- (pWin->visibility == VisibilityPartiallyObscured)))
- {
- xf86XVReputImage(pPriv);
- } else {
- (*pPriv->AdaptorRec->StopVideo)(
- pPriv->pScrn, pPriv->DevPriv.ptr, FALSE);
- xf86XVRemovePortFromWindow(pWin, pPriv);
- pPriv->isOn = XV_PENDING;
- continue;
- }
- }
- }
- }
-}
-
-
-/**** XvAdaptorRec fields ****/
-
-static int
-xf86XVAllocatePort(
- unsigned long port,
- XvPortPtr pPort,
- XvPortPtr *ppPort
-){
- *ppPort = pPort;
- return Success;
-}
-
-
-
-static int
-xf86XVFreePort(XvPortPtr pPort)
-{
- return Success;
-}
-
-
-static int
-xf86XVPutVideo(
- ClientPtr client,
- DrawablePtr pDraw,
- XvPortPtr pPort,
- GCPtr pGC,
- INT16 vid_x, INT16 vid_y,
- CARD16 vid_w, CARD16 vid_h,
- INT16 drw_x, INT16 drw_y,
- CARD16 drw_w, CARD16 drw_h
-){
- XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr)(pPort->devPriv.ptr);
- int result;
-
- /* No dumping video to pixmaps... For now anyhow */
- if(pDraw->type != DRAWABLE_WINDOW) {
- pPort->pDraw = (DrawablePtr)NULL;
- return BadAlloc;
- }
-
- /* If we are changing windows, unregister our port in the old window */
- if(portPriv->pDraw && (portPriv->pDraw != pDraw))
- xf86XVRemovePortFromWindow((WindowPtr)(portPriv->pDraw), portPriv);
-
- /* Register our port with the new window */
- result = xf86XVEnlistPortInWindow((WindowPtr)pDraw, portPriv);
- if(result != Success) return result;
-
- portPriv->pDraw = pDraw;
- portPriv->type = XvInputMask;
-
- /* save a copy of these parameters */
- portPriv->vid_x = vid_x; portPriv->vid_y = vid_y;
- portPriv->vid_w = vid_w; portPriv->vid_h = vid_h;
- portPriv->drw_x = drw_x; portPriv->drw_y = drw_y;
- portPriv->drw_w = drw_w; portPriv->drw_h = drw_h;
-
- /* make sure we have the most recent copy of the clientClip */
- xf86XVCopyClip(portPriv, pGC);
-
- /* To indicate to the DI layer that we were successful */
- pPort->pDraw = pDraw;
-
- if(!portPriv->pScrn->vtSema) return Success; /* Success ? */
-
- return(xf86XVReputVideo(portPriv));
-}
-
-static int
-xf86XVPutStill(
- ClientPtr client,
- DrawablePtr pDraw,
- XvPortPtr pPort,
- GCPtr pGC,
- INT16 vid_x, INT16 vid_y,
- CARD16 vid_w, CARD16 vid_h,
- INT16 drw_x, INT16 drw_y,
- CARD16 drw_w, CARD16 drw_h
-){
- XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr)(pPort->devPriv.ptr);
- ScreenPtr pScreen;
- RegionRec WinRegion;
- RegionRec ClipRegion;
- BoxRec WinBox;
- int ret = Success;
- Bool clippedAway = FALSE;
-
- if (pDraw->type != DRAWABLE_WINDOW)
- return BadAlloc;
-
- if(!portPriv->pScrn->vtSema) return Success; /* Success ? */
-
- pScreen = pDraw->pScreen;
-
- WinBox.x1 = pDraw->x + drw_x;
- WinBox.y1 = pDraw->y + drw_y;
- WinBox.x2 = WinBox.x1 + drw_w;
- WinBox.y2 = WinBox.y1 + drw_h;
-
- REGION_INIT(pScreen, &WinRegion, &WinBox, 1);
- REGION_NULL(pScreen, &ClipRegion);
- REGION_INTERSECT(pScreen, &ClipRegion, &WinRegion, pGC->pCompositeClip);
-
- if(portPriv->AdaptorRec->flags & VIDEO_CLIP_TO_VIEWPORT) {
- RegionRec VPReg;
- BoxRec VPBox;
-
- VPBox.x1 = portPriv->pScrn->frameX0;
- VPBox.y1 = portPriv->pScrn->frameY0;
- VPBox.x2 = portPriv->pScrn->frameX1;
- VPBox.y2 = portPriv->pScrn->frameY1;
-
- REGION_INIT(pScreen, &VPReg, &VPBox, 1);
- REGION_INTERSECT(pScreen, &ClipRegion, &ClipRegion, &VPReg);
- REGION_UNINIT(pScreen, &VPReg);
- }
-
- if(portPriv->pDraw) {
- xf86XVRemovePortFromWindow((WindowPtr)(portPriv->pDraw), portPriv);
- }
-
- if(!REGION_NOTEMPTY(pScreen, &ClipRegion)) {
- clippedAway = TRUE;
- goto PUT_STILL_BAILOUT;
- }
-
- if(portPriv->AdaptorRec->flags & VIDEO_NO_CLIPPING) {
- BoxPtr clipBox = REGION_RECTS(&ClipRegion);
- if( (REGION_NUM_RECTS(&ClipRegion) != 1) ||
- (clipBox->x1 != WinBox.x1) || (clipBox->x2 != WinBox.x2) ||
- (clipBox->y1 != WinBox.y1) || (clipBox->y2 != WinBox.y2))
- {
- clippedAway = TRUE;
- goto PUT_STILL_BAILOUT;
- }
- }
-
- if(portPriv->AdaptorRec->flags & VIDEO_INVERT_CLIPLIST) {
- REGION_SUBTRACT(pScreen, &ClipRegion, &WinRegion, &ClipRegion);
- }
-
- ret = (*portPriv->AdaptorRec->PutStill)(portPriv->pScrn,
- vid_x, vid_y, WinBox.x1, WinBox.y1,
- vid_w, vid_h, drw_w, drw_h,
- &ClipRegion, portPriv->DevPriv.ptr);
-
- if((ret == Success) &&
- (portPriv->AdaptorRec->flags & VIDEO_OVERLAID_STILLS)) {
-
- xf86XVEnlistPortInWindow((WindowPtr)pDraw, portPriv);
- portPriv->isOn = XV_ON;
- portPriv->pDraw = pDraw;
- portPriv->drw_x = drw_x; portPriv->drw_y = drw_y;
- portPriv->drw_w = drw_w; portPriv->drw_h = drw_h;
- portPriv->type = 0; /* no mask means it's transient and should
- not be reput once it's removed */
- pPort->pDraw = pDraw; /* make sure we can get stop requests */
- }
-
-PUT_STILL_BAILOUT:
-
- if((clippedAway || (ret != Success)) && (portPriv->isOn == XV_ON)) {
- (*portPriv->AdaptorRec->StopVideo)(
- portPriv->pScrn, portPriv->DevPriv.ptr, FALSE);
- portPriv->isOn = XV_PENDING;
- }
-
- REGION_UNINIT(pScreen, &WinRegion);
- REGION_UNINIT(pScreen, &ClipRegion);
-
- return ret;
-}
-
-static int
-xf86XVGetVideo(
- ClientPtr client,
- DrawablePtr pDraw,
- XvPortPtr pPort,
- GCPtr pGC,
- INT16 vid_x, INT16 vid_y,
- CARD16 vid_w, CARD16 vid_h,
- INT16 drw_x, INT16 drw_y,
- CARD16 drw_w, CARD16 drw_h
-){
- XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr)(pPort->devPriv.ptr);
- int result;
-
- /* No pixmaps... For now anyhow */
- if(pDraw->type != DRAWABLE_WINDOW) {
- pPort->pDraw = (DrawablePtr)NULL;
- return BadAlloc;
- }
-
- /* If we are changing windows, unregister our port in the old window */
- if(portPriv->pDraw && (portPriv->pDraw != pDraw))
- xf86XVRemovePortFromWindow((WindowPtr)(portPriv->pDraw), portPriv);
-
- /* Register our port with the new window */
- result = xf86XVEnlistPortInWindow((WindowPtr)pDraw, portPriv);
- if(result != Success) return result;
-
- portPriv->pDraw = pDraw;
- portPriv->type = XvOutputMask;
-
- /* save a copy of these parameters */
- portPriv->vid_x = vid_x; portPriv->vid_y = vid_y;
- portPriv->vid_w = vid_w; portPriv->vid_h = vid_h;
- portPriv->drw_x = drw_x; portPriv->drw_y = drw_y;
- portPriv->drw_w = drw_w; portPriv->drw_h = drw_h;
-
- /* make sure we have the most recent copy of the clientClip */
- xf86XVCopyClip(portPriv, pGC);
-
- /* To indicate to the DI layer that we were successful */
- pPort->pDraw = pDraw;
-
- if(!portPriv->pScrn->vtSema) return Success; /* Success ? */
-
- return(xf86XVRegetVideo(portPriv));
-}
-
-static int
-xf86XVGetStill(
- ClientPtr client,
- DrawablePtr pDraw,
- XvPortPtr pPort,
- GCPtr pGC,
- INT16 vid_x, INT16 vid_y,
- CARD16 vid_w, CARD16 vid_h,
- INT16 drw_x, INT16 drw_y,
- CARD16 drw_w, CARD16 drw_h
-){
- XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr)(pPort->devPriv.ptr);
- ScreenPtr pScreen;
- RegionRec WinRegion;
- RegionRec ClipRegion;
- BoxRec WinBox;
- int ret = Success;
- Bool clippedAway = FALSE;
-
- if (pDraw->type != DRAWABLE_WINDOW)
- return BadAlloc;
-
- if(!portPriv->pScrn->vtSema) return Success; /* Success ? */
-
- pScreen = pDraw->pScreen;
-
- WinBox.x1 = pDraw->x + drw_x;
- WinBox.y1 = pDraw->y + drw_y;
- WinBox.x2 = WinBox.x1 + drw_w;
- WinBox.y2 = WinBox.y1 + drw_h;
-
- REGION_INIT(pScreen, &WinRegion, &WinBox, 1);
- REGION_NULL(pScreen, &ClipRegion);
- REGION_INTERSECT(pScreen, &ClipRegion, &WinRegion, pGC->pCompositeClip);
-
- if(portPriv->pDraw) {
- xf86XVRemovePortFromWindow((WindowPtr)(portPriv->pDraw), portPriv);
- }
-
- if(!REGION_NOTEMPTY(pScreen, &ClipRegion)) {
- clippedAway = TRUE;
- goto GET_STILL_BAILOUT;
- }
-
- if(portPriv->AdaptorRec->flags & VIDEO_INVERT_CLIPLIST) {
- REGION_SUBTRACT(pScreen, &ClipRegion, &WinRegion, &ClipRegion);
- }
-
- ret = (*portPriv->AdaptorRec->GetStill)(portPriv->pScrn,
- vid_x, vid_y, WinBox.x1, WinBox.y1,
- vid_w, vid_h, drw_w, drw_h,
- &ClipRegion, portPriv->DevPriv.ptr);
-
-GET_STILL_BAILOUT:
-
- if((clippedAway || (ret != Success)) && (portPriv->isOn == XV_ON)) {
- (*portPriv->AdaptorRec->StopVideo)(
- portPriv->pScrn, portPriv->DevPriv.ptr, FALSE);
- portPriv->isOn = XV_PENDING;
- }
-
- REGION_UNINIT(pScreen, &WinRegion);
- REGION_UNINIT(pScreen, &ClipRegion);
-
- return ret;
-}
-
-
-
-static int
-xf86XVStopVideo(
- ClientPtr client,
- XvPortPtr pPort,
- DrawablePtr pDraw
-){
- XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr)(pPort->devPriv.ptr);
-
- if(pDraw->type != DRAWABLE_WINDOW)
- return BadAlloc;
-
- xf86XVRemovePortFromWindow((WindowPtr)pDraw, portPriv);
-
- if(!portPriv->pScrn->vtSema) return Success; /* Success ? */
-
- /* Must free resources. */
-
- if(portPriv->isOn > XV_OFF) {
- (*portPriv->AdaptorRec->StopVideo)(
- portPriv->pScrn, portPriv->DevPriv.ptr, TRUE);
- portPriv->isOn = XV_OFF;
- }
-
- return Success;
-}
-
-static int
-xf86XVSetPortAttribute(
- ClientPtr client,
- XvPortPtr pPort,
- Atom attribute,
- INT32 value
-){
- XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr)(pPort->devPriv.ptr);
-
- return((*portPriv->AdaptorRec->SetPortAttribute)(portPriv->pScrn,
- attribute, value, portPriv->DevPriv.ptr));
-}
-
-
-static int
-xf86XVGetPortAttribute(
- ClientPtr client,
- XvPortPtr pPort,
- Atom attribute,
- INT32 *p_value
-){
- XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr)(pPort->devPriv.ptr);
-
- return((*portPriv->AdaptorRec->GetPortAttribute)(portPriv->pScrn,
- attribute, p_value, portPriv->DevPriv.ptr));
-}
-
-
-
-static int
-xf86XVQueryBestSize(
- ClientPtr client,
- XvPortPtr pPort,
- CARD8 motion,
- CARD16 vid_w, CARD16 vid_h,
- CARD16 drw_w, CARD16 drw_h,
- unsigned int *p_w, unsigned int *p_h
-){
- XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr)(pPort->devPriv.ptr);
-
- (*portPriv->AdaptorRec->QueryBestSize)(portPriv->pScrn,
- (Bool)motion, vid_w, vid_h, drw_w, drw_h,
- p_w, p_h, portPriv->DevPriv.ptr);
-
- return Success;
-}
-
-
-static int
-xf86XVPutImage(
- ClientPtr client,
- DrawablePtr pDraw,
- XvPortPtr pPort,
- GCPtr pGC,
- INT16 src_x, INT16 src_y,
- CARD16 src_w, CARD16 src_h,
- INT16 drw_x, INT16 drw_y,
- CARD16 drw_w, CARD16 drw_h,
- XvImagePtr format,
- unsigned char* data,
- Bool sync,
- CARD16 width, CARD16 height
-){
- XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr)(pPort->devPriv.ptr);
- ScreenPtr pScreen;
- RegionRec WinRegion;
- RegionRec ClipRegion;
- BoxRec WinBox;
- int ret = Success;
- Bool clippedAway = FALSE;
-
- if (pDraw->type != DRAWABLE_WINDOW)
- return BadAlloc;
-
- if(!portPriv->pScrn->vtSema) return Success; /* Success ? */
-
- pScreen = pDraw->pScreen;
-
- WinBox.x1 = pDraw->x + drw_x;
- WinBox.y1 = pDraw->y + drw_y;
- WinBox.x2 = WinBox.x1 + drw_w;
- WinBox.y2 = WinBox.y1 + drw_h;
-
- REGION_INIT(pScreen, &WinRegion, &WinBox, 1);
- REGION_NULL(pScreen, &ClipRegion);
- REGION_INTERSECT(pScreen, &ClipRegion, &WinRegion, pGC->pCompositeClip);
-
- if(portPriv->AdaptorRec->flags & VIDEO_CLIP_TO_VIEWPORT) {
- RegionRec VPReg;
- BoxRec VPBox;
-
- VPBox.x1 = portPriv->pScrn->frameX0;
- VPBox.y1 = portPriv->pScrn->frameY0;
- VPBox.x2 = portPriv->pScrn->frameX1 + 1;
- VPBox.y2 = portPriv->pScrn->frameY1 + 1;
-
- REGION_INIT(pScreen, &VPReg, &VPBox, 1);
- REGION_INTERSECT(pScreen, &ClipRegion, &ClipRegion, &VPReg);
- REGION_UNINIT(pScreen, &VPReg);
- }
-
- if(portPriv->pDraw) {
- xf86XVRemovePortFromWindow((WindowPtr)(portPriv->pDraw), portPriv);
- }
-
- if(!REGION_NOTEMPTY(pScreen, &ClipRegion)) {
- clippedAway = TRUE;
- goto PUT_IMAGE_BAILOUT;
- }
-
- if(portPriv->AdaptorRec->flags & VIDEO_NO_CLIPPING) {
- BoxPtr clipBox = REGION_RECTS(&ClipRegion);
- if( (REGION_NUM_RECTS(&ClipRegion) != 1) ||
- (clipBox->x1 != WinBox.x1) || (clipBox->x2 != WinBox.x2) ||
- (clipBox->y1 != WinBox.y1) || (clipBox->y2 != WinBox.y2))
- {
- clippedAway = TRUE;
- goto PUT_IMAGE_BAILOUT;
- }
- }
-
- if(portPriv->AdaptorRec->flags & VIDEO_INVERT_CLIPLIST) {
- REGION_SUBTRACT(pScreen, &ClipRegion, &WinRegion, &ClipRegion);
- }
-
- ret = (*portPriv->AdaptorRec->PutImage)(portPriv->pScrn,
- src_x, src_y, WinBox.x1, WinBox.y1,
- src_w, src_h, drw_w, drw_h, format->id, data, width, height,
- sync, &ClipRegion, portPriv->DevPriv.ptr);
-
- if((ret == Success) &&
- (portPriv->AdaptorRec->flags & VIDEO_OVERLAID_IMAGES)) {
-
- xf86XVEnlistPortInWindow((WindowPtr)pDraw, portPriv);
- portPriv->isOn = XV_ON;
- portPriv->pDraw = pDraw;
- portPriv->drw_x = drw_x; portPriv->drw_y = drw_y;
- portPriv->drw_w = drw_w; portPriv->drw_h = drw_h;
- portPriv->type = 0; /* no mask means it's transient and should
- not be reput once it's removed */
- pPort->pDraw = pDraw; /* make sure we can get stop requests */
- }
-
-PUT_IMAGE_BAILOUT:
-
- if((clippedAway || (ret != Success)) && (portPriv->isOn == XV_ON)) {
- (*portPriv->AdaptorRec->StopVideo)(
- portPriv->pScrn, portPriv->DevPriv.ptr, FALSE);
- portPriv->isOn = XV_PENDING;
- }
-
- REGION_UNINIT(pScreen, &WinRegion);
- REGION_UNINIT(pScreen, &ClipRegion);
-
- return ret;
-}
-
-
-static int
-xf86XVQueryImageAttributes(
- ClientPtr client,
- XvPortPtr pPort,
- XvImagePtr format,
- CARD16 *width,
- CARD16 *height,
- int *pitches,
- int *offsets
-){
- XvPortRecPrivatePtr portPriv = (XvPortRecPrivatePtr)(pPort->devPriv.ptr);
-
- return (*portPriv->AdaptorRec->QueryImageAttributes)(portPriv->pScrn,
- format->id, width, height, pitches, offsets);
-}
-
-void
-xf86XVFillKeyHelper (ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes)
-{
- XF86XVScreenPtr ScreenPriv = GET_XF86XV_SCREEN(pScreen);
- DrawablePtr root = &WindowTable[pScreen->myNum]->drawable;
- XID pval[2];
- BoxPtr pbox = REGION_RECTS(clipboxes);
- int i, nbox = REGION_NUM_RECTS(clipboxes);
- xRectangle *rects;
-
- if(!xf86Screens[pScreen->myNum]->vtSema) return;
-
- if(!ScreenPriv->videoGC) {
- int status;
- pval[0] = key;
- pval[1] = IncludeInferiors;
- ScreenPriv->videoGC = CreateGC(root, GCForeground | GCSubwindowMode,
- pval, &status);
- if(!ScreenPriv->videoGC) return;
- ValidateGC(root, ScreenPriv->videoGC);
- } else if (key != ScreenPriv->videoGC->fgPixel){
- pval[0] = key;
- ChangeGC(ScreenPriv->videoGC, GCForeground, pval);
- ValidateGC(root, ScreenPriv->videoGC);
- }
-
- rects = ALLOCATE_LOCAL(nbox * sizeof(xRectangle));
-
- for(i = 0; i < nbox; i++, pbox++) {
- rects[i].x = pbox->x1;
- rects[i].y = pbox->y1;
- rects[i].width = pbox->x2 - pbox->x1;
- rects[i].height = pbox->y2 - pbox->y1;
- }
-
- (*ScreenPriv->videoGC->ops->PolyFillRect)(
- root, ScreenPriv->videoGC, nbox, rects);
-
- DEALLOCATE_LOCAL(rects);
-}
-
-/* xf86XVClipVideoHelper -
-
- Takes the dst box in standard X BoxRec form (top and left
- edges inclusive, bottom and right exclusive). The new dst
- box is returned. The source boundaries are given (x1, y1
- inclusive, x2, y2 exclusive) and returned are the new source
- boundaries in 16.16 fixed point.
-*/
-
-#define DummyScreen screenInfo.screens[0]
-
-Bool
-xf86XVClipVideoHelper(
- BoxPtr dst,
- INT32 *xa,
- INT32 *xb,
- INT32 *ya,
- INT32 *yb,
- RegionPtr reg,
- INT32 width,
- INT32 height
-){
- double xsw, xdw, ysw, ydw;
- INT32 delta;
- BoxPtr extents = REGION_EXTENTS(DummyScreen, reg);
- int diff;
-
- xsw = (*xb - *xa) << 16;
- xdw = dst->x2 - dst->x1;
- ysw = (*yb - *ya) << 16;
- ydw = dst->y2 - dst->y1;
-
- *xa <<= 16; *xb <<= 16;
- *ya <<= 16; *yb <<= 16;
-
- diff = extents->x1 - dst->x1;
- if (diff > 0) {
- dst->x1 = extents->x1;
- *xa += (diff * xsw) / xdw;
- }
- diff = dst->x2 - extents->x2;
- if (diff > 0) {
- dst->x2 = extents->x2;
- *xb -= (diff * xsw) / xdw;
- }
- diff = extents->y1 - dst->y1;
- if (diff > 0) {
- dst->y1 = extents->y1;
- *ya += (diff * ysw) / ydw;
- }
- diff = dst->y2 - extents->y2;
- if (diff > 0) {
- dst->y2 = extents->y2;
- *yb -= (diff * ysw) / ydw;
- }
-
- if (*xa < 0) {
- diff = (((-*xa) * xdw) + xsw - 1) / xsw;
- dst->x1 += diff;
- *xa += (diff * xsw) / xdw;
- }
- delta = *xb - (width << 16);
- if (delta > 0) {
- diff = ((delta * xdw) + xsw - 1) / xsw;
- dst->x2 -= diff;
- *xb -= (diff * xsw) / xdw;
- }
- if (*xa >= *xb) return FALSE;
-
- if (*ya < 0) {
- diff = (((-*ya) * ydw) + ysw - 1) / ysw;
- dst->y1 += diff;
- *ya += (diff * ysw) / ydw;
- }
- delta = *yb - (height << 16);
- if (delta > 0) {
- diff = ((delta * ydw) + ysw - 1) / ysw;
- dst->y2 -= diff;
- *yb -= (diff * ysw) / ydw;
- }
- if (*ya >= *yb) return FALSE;
-
- if ((dst->x1 > extents->x1) || (dst->x2 < extents->x2) ||
- (dst->y1 > extents->y1) || (dst->y2 < extents->y2))
- {
- RegionRec clipReg;
- REGION_INIT(DummyScreen, &clipReg, dst, 1);
- REGION_INTERSECT(DummyScreen, reg, reg, &clipReg);
- REGION_UNINIT(DummyScreen, &clipReg);
- }
- return TRUE;
-}
-
-void
-xf86XVCopyYUV12ToPacked(
- const void *srcy,
- const void *srcv,
- const void *srcu,
- void *dst,
- int srcPitchy,
- int srcPitchuv,
- int dstPitch,
- int h,
- int w
-){
- CARD32 *Dst;
- const CARD8 *Y, *U, *V;
- int i, j;
-
- w >>= 1;
-
- for (j = 0; j < h; j++) {
- Dst = dst;
- Y = srcy; V = srcv; U = srcu;
- i = w;
- while (i >= 4) {
-#if X_BYTE_ORDER == X_LITTLE_ENDIAN
- Dst[0] = Y[0] | (Y[1] << 16) | (U[0] << 8) | (V[0] << 24);
- Dst[1] = Y[2] | (Y[3] << 16) | (U[1] << 8) | (V[1] << 24);
- Dst[2] = Y[4] | (Y[5] << 16) | (U[2] << 8) | (V[2] << 24);
- Dst[3] = Y[6] | (Y[7] << 16) | (U[3] << 8) | (V[3] << 24);
-#else
- /* This assumes a little-endian framebuffer */
- Dst[0] = (Y[0] << 24) | (Y[1] << 8) | (U[0] << 16) | V[0];
- Dst[1] = (Y[2] << 24) | (Y[3] << 8) | (U[1] << 16) | V[1];
- Dst[2] = (Y[4] << 24) | (Y[5] << 8) | (U[2] << 16) | V[2];
- Dst[3] = (Y[6] << 24) | (Y[7] << 8) | (U[3] << 16) | V[3];
-#endif
- Dst += 4; Y += 8; V += 4; U += 4;
- i -= 4;
- }
-
- while (i--) {
-#if X_BYTE_ORDER == X_LITTLE_ENDIAN
- Dst[0] = Y[0] | (Y[1] << 16) | (U[0] << 8) | (V[0] << 24);
-#else
- /* This assumes a little-endian framebuffer */
- Dst[0] = (Y[0] << 24) | (Y[1] << 8) | (U[0] << 16) | V[0];
-#endif
- Dst++; Y += 2; V++; U++;
- }
-
- dst = (CARD8 *)dst + dstPitch;
- srcy = (const CARD8 *)srcy + srcPitchy;
- if (j & 1) {
- srcu = (const CARD8 *)srcu + srcPitchuv;
- srcv = (const CARD8 *)srcv + srcPitchuv;
- }
- }
-}
-
-void
-xf86XVCopyPacked(
- const void *src,
- void *dst,
- int srcPitch,
- int dstPitch,
- int h,
- int w
-){
- const CARD32 *Src;
- CARD32 *Dst;
- int i;
-
- w >>= 1;
- while (--h >= 0) {
- do {
- Dst = dst; Src = src;
- i = w;
- while (i >= 4) {
- Dst[0] = Src[0];
- Dst[1] = Src[1];
- Dst[2] = Src[2];
- Dst[3] = Src[3];
- Dst += 4; Src += 4; i -= 4;
- }
- if (!i) break;
- Dst[0] = Src[0];
- if (i == 1) break;
- Dst[1] = Src[1];
- if (i == 2) break;
- Dst[2] = Src[2];
- } while (0);
-
- src = (const CARD8 *)src + srcPitch;
- dst = (CARD8 *)dst + dstPitch;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86xv.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86xv.h
deleted file mode 100644
index 316d6c9e5..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86xv.h
+++ /dev/null
@@ -1,271 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86xv.h,v 1.25 2003/08/24 17:36:56 dawes Exp $ */
-
-/*
- * Copyright (c) 1998-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifndef _XF86XV_H_
-#define _XF86XV_H_
-
-#include "xvdix.h"
-#include "xf86str.h"
-
-#define VIDEO_NO_CLIPPING 0x00000001
-#define VIDEO_INVERT_CLIPLIST 0x00000002
-#define VIDEO_OVERLAID_IMAGES 0x00000004
-#define VIDEO_OVERLAID_STILLS 0x00000008
-#define VIDEO_CLIP_TO_VIEWPORT 0x00000010
-
-typedef struct {
- int id;
- int type;
- int byte_order;
- unsigned char guid[16];
- int bits_per_pixel;
- int format;
- int num_planes;
-
- /* for RGB formats only */
- int depth;
- unsigned int red_mask;
- unsigned int green_mask;
- unsigned int blue_mask;
-
- /* for YUV formats only */
- unsigned int y_sample_bits;
- unsigned int u_sample_bits;
- unsigned int v_sample_bits;
- unsigned int horz_y_period;
- unsigned int horz_u_period;
- unsigned int horz_v_period;
- unsigned int vert_y_period;
- unsigned int vert_u_period;
- unsigned int vert_v_period;
- char component_order[32];
- int scanline_order;
-} XF86ImageRec, *XF86ImagePtr;
-
-
-typedef struct {
- ScrnInfoPtr pScrn;
- int id;
- unsigned short width, height;
- int *pitches; /* bytes */
- int *offsets; /* in bytes from start of framebuffer */
- DevUnion devPrivate;
-} XF86SurfaceRec, *XF86SurfacePtr;
-
-
-typedef int (* PutVideoFuncPtr)( ScrnInfoPtr pScrn,
- short vid_x, short vid_y, short drw_x, short drw_y,
- short vid_w, short vid_h, short drw_w, short drw_h,
- RegionPtr clipBoxes, pointer data );
-typedef int (* PutStillFuncPtr)( ScrnInfoPtr pScrn,
- short vid_x, short vid_y, short drw_x, short drw_y,
- short vid_w, short vid_h, short drw_w, short drw_h,
- RegionPtr clipBoxes, pointer data );
-typedef int (* GetVideoFuncPtr)( ScrnInfoPtr pScrn,
- short vid_x, short vid_y, short drw_x, short drw_y,
- short vid_w, short vid_h, short drw_w, short drw_h,
- RegionPtr clipBoxes, pointer data );
-typedef int (* GetStillFuncPtr)( ScrnInfoPtr pScrn,
- short vid_x, short vid_y, short drw_x, short drw_y,
- short vid_w, short vid_h, short drw_w, short drw_h,
- RegionPtr clipBoxes, pointer data );
-typedef void (* StopVideoFuncPtr)(ScrnInfoPtr pScrn, pointer data, Bool Exit);
-typedef int (* SetPortAttributeFuncPtr)(ScrnInfoPtr pScrn, Atom attribute,
- INT32 value, pointer data);
-typedef int (* GetPortAttributeFuncPtr)(ScrnInfoPtr pScrn, Atom attribute,
- INT32 *value, pointer data);
-typedef void (* QueryBestSizeFuncPtr)(ScrnInfoPtr pScrn, Bool motion,
- short vid_w, short vid_h, short drw_w, short drw_h,
- unsigned int *p_w, unsigned int *p_h, pointer data);
-typedef int (* PutImageFuncPtr)( ScrnInfoPtr pScrn,
- short src_x, short src_y, short drw_x, short drw_y,
- short src_w, short src_h, short drw_w, short drw_h,
- int image, unsigned char* buf, short width, short height, Bool Sync,
- RegionPtr clipBoxes, pointer data );
-typedef int (* ReputImageFuncPtr)( ScrnInfoPtr pScrn, short drw_x, short drw_y,
- RegionPtr clipBoxes, pointer data );
-typedef int (*QueryImageAttributesFuncPtr)(ScrnInfoPtr pScrn,
- int image, unsigned short *width, unsigned short *height,
- int *pitches, int *offsets);
-
-typedef enum {
- XV_OFF,
- XV_PENDING,
- XV_ON
-} XvStatus;
-
-/*** this is what the driver needs to fill out ***/
-
-typedef struct {
- int id;
- char *name;
- unsigned short width, height;
- XvRationalRec rate;
-} XF86VideoEncodingRec, *XF86VideoEncodingPtr;
-
-typedef struct {
- char depth;
- short class;
-} XF86VideoFormatRec, *XF86VideoFormatPtr;
-
-typedef struct {
- int flags;
- int min_value;
- int max_value;
- char *name;
-} XF86AttributeRec, *XF86AttributePtr;
-
-typedef struct {
- unsigned int type;
- int flags;
- char *name;
- int nEncodings;
- XF86VideoEncodingPtr pEncodings;
- int nFormats;
- XF86VideoFormatPtr pFormats;
- int nPorts;
- DevUnion *pPortPrivates;
- int nAttributes;
- XF86AttributePtr pAttributes;
- int nImages;
- XF86ImagePtr pImages;
- PutVideoFuncPtr PutVideo;
- PutStillFuncPtr PutStill;
- GetVideoFuncPtr GetVideo;
- GetStillFuncPtr GetStill;
- StopVideoFuncPtr StopVideo;
- SetPortAttributeFuncPtr SetPortAttribute;
- GetPortAttributeFuncPtr GetPortAttribute;
- QueryBestSizeFuncPtr QueryBestSize;
- PutImageFuncPtr PutImage;
- ReputImageFuncPtr ReputImage;
- QueryImageAttributesFuncPtr QueryImageAttributes;
-} XF86VideoAdaptorRec, *XF86VideoAdaptorPtr;
-
-typedef struct {
- XF86ImagePtr image;
- int flags;
- int (*alloc_surface)(ScrnInfoPtr pScrn,
- int id,
- unsigned short width,
- unsigned short height,
- XF86SurfacePtr surface);
- int (*free_surface)(XF86SurfacePtr surface);
- int (*display) (XF86SurfacePtr surface,
- short vid_x, short vid_y,
- short drw_x, short drw_y,
- short vid_w, short vid_h,
- short drw_w, short drw_h,
- RegionPtr clipBoxes);
- int (*stop) (XF86SurfacePtr surface);
- int (*getAttribute) (ScrnInfoPtr pScrn, Atom attr, INT32 *value);
- int (*setAttribute) (ScrnInfoPtr pScrn, Atom attr, INT32 value);
- int max_width;
- int max_height;
- int num_attributes;
- XF86AttributePtr attributes;
-} XF86OffscreenImageRec, *XF86OffscreenImagePtr;
-
-Bool
-xf86XVScreenInit(
- ScreenPtr pScreen,
- XF86VideoAdaptorPtr *Adaptors,
- int num
-);
-
-typedef int (* xf86XVInitGenericAdaptorPtr)(ScrnInfoPtr pScrn,
- XF86VideoAdaptorPtr **Adaptors);
-
-int
-xf86XVRegisterGenericAdaptorDriver(
- xf86XVInitGenericAdaptorPtr InitFunc
-);
-
-int
-xf86XVListGenericAdaptors(
- ScrnInfoPtr pScrn,
- XF86VideoAdaptorPtr **Adaptors
-);
-
-Bool
-xf86XVRegisterOffscreenImages(
- ScreenPtr pScreen,
- XF86OffscreenImagePtr images,
- int num
-);
-
-XF86OffscreenImagePtr
-xf86XVQueryOffscreenImages(
- ScreenPtr pScreen,
- int *num
-);
-
-XF86VideoAdaptorPtr xf86XVAllocateVideoAdaptorRec(ScrnInfoPtr pScrn);
-
-void xf86XVFreeVideoAdaptorRec(XF86VideoAdaptorPtr ptr);
-
-void
-xf86XVFillKeyHelper (ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes);
-
-Bool
-xf86XVClipVideoHelper(
- BoxPtr dst,
- INT32 *xa,
- INT32 *xb,
- INT32 *ya,
- INT32 *yb,
- RegionPtr reg,
- INT32 width,
- INT32 height
-);
-
-void
-xf86XVCopyYUV12ToPacked(
- const void *srcy,
- const void *srcv,
- const void *srcu,
- void *dst,
- int srcPitchy,
- int srcPitchuv,
- int dstPitch,
- int h,
- int w
-);
-
-void
-xf86XVCopyPacked(
- const void *src,
- void *dst,
- int srcPitch,
- int dstPitch,
- int h,
- int w
-);
-
-#endif /* _XF86XV_H_ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86xvmc.c b/nx-X11/programs/Xserver/hw/xfree86/common/xf86xvmc.c
deleted file mode 100644
index a39e1bd4d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86xvmc.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86xvmc.c,v 1.6 2003/10/08 22:31:59 mvojkovi Exp $ */
-
-/*
- * Copyright (c) 2001-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "misc.h"
-#include "xf86.h"
-#include "xf86_OSproc.h"
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "scrnintstr.h"
-#include "resource.h"
-#include "dixstruct.h"
-
-#ifdef XFree86LOADER
-#include "xvmodproc.h"
-#endif
-
-#include "xf86xvpriv.h"
-#include "xf86xvmc.h"
-
-#ifdef XFree86LOADER
-int (*XvMCScreenInitProc)(ScreenPtr, int, XvMCAdaptorPtr) = NULL;
-#else
-int (*XvMCScreenInitProc)(ScreenPtr, int, XvMCAdaptorPtr) = XvMCScreenInit;
-#endif
-
-
-typedef struct {
- CloseScreenProcPtr CloseScreen;
- int num_adaptors;
- XF86MCAdaptorPtr *adaptors;
- XvMCAdaptorPtr dixinfo;
-} xf86XvMCScreenRec, *xf86XvMCScreenPtr;
-
-static unsigned long XF86XvMCGeneration = 0;
-static int XF86XvMCScreenIndex = -1;
-
-#define XF86XVMC_GET_PRIVATE(pScreen) \
- (xf86XvMCScreenPtr)((pScreen)->devPrivates[XF86XvMCScreenIndex].ptr)
-
-
-static int
-xf86XvMCCreateContext (
- XvPortPtr pPort,
- XvMCContextPtr pContext,
- int *num_priv,
- CARD32 **priv
-)
-{
- xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pContext->pScreen);
- ScrnInfoPtr pScrn = xf86Screens[pContext->pScreen->myNum];
-
- pContext->port_priv = (XvPortRecPrivatePtr)(pPort->devPriv.ptr);
-
- return (*pScreenPriv->adaptors[pContext->adapt_num]->CreateContext)(
- pScrn, pContext, num_priv, priv);
-}
-
-static void
-xf86XvMCDestroyContext ( XvMCContextPtr pContext)
-{
- xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pContext->pScreen);
- ScrnInfoPtr pScrn = xf86Screens[pContext->pScreen->myNum];
-
- (*pScreenPriv->adaptors[pContext->adapt_num]->DestroyContext)(
- pScrn, pContext);
-}
-
-static int
-xf86XvMCCreateSurface (
- XvMCSurfacePtr pSurface,
- int *num_priv,
- CARD32 **priv
-)
-{
- XvMCContextPtr pContext = pSurface->context;
- xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pContext->pScreen);
- ScrnInfoPtr pScrn = xf86Screens[pContext->pScreen->myNum];
-
- return (*pScreenPriv->adaptors[pContext->adapt_num]->CreateSurface)(
- pScrn, pSurface, num_priv, priv);
-}
-
-static void
-xf86XvMCDestroySurface (XvMCSurfacePtr pSurface)
-{
- XvMCContextPtr pContext = pSurface->context;
- xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pContext->pScreen);
- ScrnInfoPtr pScrn = xf86Screens[pContext->pScreen->myNum];
-
- (*pScreenPriv->adaptors[pContext->adapt_num]->DestroySurface)(
- pScrn, pSurface);
-}
-
-static int
-xf86XvMCCreateSubpicture (
- XvMCSubpicturePtr pSubpicture,
- int *num_priv,
- CARD32 **priv
-)
-{
- XvMCContextPtr pContext = pSubpicture->context;
- xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pContext->pScreen);
- ScrnInfoPtr pScrn = xf86Screens[pContext->pScreen->myNum];
-
- return (*pScreenPriv->adaptors[pContext->adapt_num]->CreateSubpicture)(
- pScrn, pSubpicture, num_priv, priv);
-}
-
-static void
-xf86XvMCDestroySubpicture (XvMCSubpicturePtr pSubpicture)
-{
- XvMCContextPtr pContext = pSubpicture->context;
- xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pContext->pScreen);
- ScrnInfoPtr pScrn = xf86Screens[pContext->pScreen->myNum];
-
- (*pScreenPriv->adaptors[pContext->adapt_num]->DestroySubpicture)(
- pScrn, pSubpicture);
-}
-
-
-static Bool
-xf86XvMCCloseScreen (int i, ScreenPtr pScreen)
-{
- xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pScreen);
-
- pScreen->CloseScreen = pScreenPriv->CloseScreen;
-
- xfree(pScreenPriv->dixinfo);
- xfree(pScreenPriv);
-
- return (*pScreen->CloseScreen)(i, pScreen);
-}
-
-Bool xf86XvMCScreenInit(
- ScreenPtr pScreen,
- int num_adaptors,
- XF86MCAdaptorPtr *adaptors
-)
-{
- XvMCAdaptorPtr pAdapt;
- xf86XvMCScreenPtr pScreenPriv;
- XvScreenPtr pxvs =
- (XvScreenPtr)(pScreen->devPrivates[XF86XvScreenIndex].ptr);
-
- int i, j;
-
- if(!XvMCScreenInitProc) return FALSE;
-
- if(XF86XvMCGeneration != serverGeneration) {
- if((XF86XvMCScreenIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- XF86XvMCGeneration = serverGeneration;
- }
-
- if(!(pAdapt = xalloc(sizeof(XvMCAdaptorRec) * num_adaptors)))
- return FALSE;
-
- if(!(pScreenPriv = xalloc(sizeof(xf86XvMCScreenRec)))) {
- xfree(pAdapt);
- return FALSE;
- }
-
- pScreen->devPrivates[XF86XvMCScreenIndex].ptr = (pointer)pScreenPriv;
-
- pScreenPriv->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = xf86XvMCCloseScreen;
-
- pScreenPriv->num_adaptors = num_adaptors;
- pScreenPriv->adaptors = adaptors;
- pScreenPriv->dixinfo = pAdapt;
-
- for(i = 0; i < num_adaptors; i++) {
- pAdapt[i].xv_adaptor = NULL;
- for(j = 0; j < pxvs->nAdaptors; j++) {
- if(!strcmp((*adaptors)->name, pxvs->pAdaptors[j].name)) {
- pAdapt[i].xv_adaptor = &(pxvs->pAdaptors[j]);
- break;
- }
- }
- if(!pAdapt[i].xv_adaptor) {
- /* no adaptor by that name */
- xfree(pAdapt);
- return FALSE;
- }
- pAdapt[i].num_surfaces = (*adaptors)->num_surfaces;
- pAdapt[i].surfaces = (XvMCSurfaceInfoPtr*)((*adaptors)->surfaces);
- pAdapt[i].num_subpictures = (*adaptors)->num_subpictures;
- pAdapt[i].subpictures = (XvImagePtr*)((*adaptors)->subpictures);
- pAdapt[i].CreateContext = xf86XvMCCreateContext;
- pAdapt[i].DestroyContext = xf86XvMCDestroyContext;
- pAdapt[i].CreateSurface = xf86XvMCCreateSurface;
- pAdapt[i].DestroySurface = xf86XvMCDestroySurface;
- pAdapt[i].CreateSubpicture = xf86XvMCCreateSubpicture;
- pAdapt[i].DestroySubpicture = xf86XvMCDestroySubpicture;
- adaptors++;
- }
-
- if(Success != (*XvMCScreenInitProc)(pScreen, num_adaptors, pAdapt))
- return FALSE;
-
- return TRUE;
-}
-
-XF86MCAdaptorPtr xf86XvMCCreateAdaptorRec (void)
-{
- return xcalloc(1, sizeof(XF86MCAdaptorRec));
-}
-
-void xf86XvMCDestroyAdaptorRec(XF86MCAdaptorPtr adaptor)
-{
- xfree(adaptor);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86xvmc.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86xvmc.h
deleted file mode 100644
index 0b073aac8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86xvmc.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86xvmc.h,v 1.7 2003/10/08 22:31:59 mvojkovi Exp $ */
-
-/*
- * Copyright (c) 2001 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifndef _XF86XVMC_H
-#define _XF86XVMC_H
-
-#include "xvmcext.h"
-#include "xf86xv.h"
-
-typedef struct {
- int num_xvimages;
- int *xvimage_ids; /* reference the subpictures in the XF86MCAdaptorRec */
-} XF86MCImageIDList;
-
-typedef struct {
- int surface_type_id; /* Driver generated. Must be unique on the port */
- int chroma_format;
- int color_description; /* no longer used */
- unsigned short max_width;
- unsigned short max_height;
- unsigned short subpicture_max_width;
- unsigned short subpicture_max_height;
- int mc_type;
- int flags;
- XF86MCImageIDList *compatible_subpictures; /* can be null, if none */
-} XF86MCSurfaceInfoRec, *XF86MCSurfaceInfoPtr;
-
-
-/*
- xf86XvMCCreateContextProc
-
- DIX will fill everything out in the context except the driver_priv.
- The port_priv holds the private data specified for the port when
- Xv was initialized by the driver.
- The driver may store whatever it wants in driver_priv and edit
- the width, height and flags. If the driver wants to return something
- to the client it can allocate space in priv and specify the number
- of 32 bit words in num_priv. This must be dynamically allocated
- space because DIX will free it after it passes it to the client.
-*/
-
-
-typedef int (*xf86XvMCCreateContextProcPtr) (
- ScrnInfoPtr pScrn,
- XvMCContextPtr context,
- int *num_priv,
- CARD32 **priv
-);
-
-typedef void (*xf86XvMCDestroyContextProcPtr) (
- ScrnInfoPtr pScrn,
- XvMCContextPtr context
-);
-
-/*
- xf86XvMCCreateSurfaceProc
-
- DIX will fill everything out in the surface except the driver_priv.
- The driver may store whatever it wants in driver_priv. The driver
- may pass data back to the client in the same manner as the
- xf86XvMCCreateContextProc.
-*/
-
-
-typedef int (*xf86XvMCCreateSurfaceProcPtr) (
- ScrnInfoPtr pScrn,
- XvMCSurfacePtr surface,
- int *num_priv,
- CARD32 **priv
-);
-
-typedef void (*xf86XvMCDestroySurfaceProcPtr) (
- ScrnInfoPtr pScrn,
- XvMCSurfacePtr surface
-);
-
-/*
- xf86XvMCCreateSubpictureProc
-
- DIX will fill everything out in the subpicture except the driver_priv,
- num_palette_entries, entry_bytes and component_order. The driver may
- store whatever it wants in driver_priv and edit the width and height.
- If it is a paletted subpicture the driver needs to fill out the
- num_palette_entries, entry_bytes and component_order. These are
- not communicated to the client until the time the surface is
- created.
-
- The driver may pass data back to the client in the same manner as the
- xf86XvMCCreateContextProc.
-*/
-
-
-typedef int (*xf86XvMCCreateSubpictureProcPtr) (
- ScrnInfoPtr pScrn,
- XvMCSubpicturePtr subpicture,
- int *num_priv,
- CARD32 **priv
-);
-
-typedef void (*xf86XvMCDestroySubpictureProcPtr) (
- ScrnInfoPtr pScrn,
- XvMCSubpicturePtr subpicture
-);
-
-
-typedef struct {
- char *name;
- int num_surfaces;
- XF86MCSurfaceInfoPtr *surfaces;
- int num_subpictures;
- XF86ImagePtr *subpictures;
- xf86XvMCCreateContextProcPtr CreateContext;
- xf86XvMCDestroyContextProcPtr DestroyContext;
- xf86XvMCCreateSurfaceProcPtr CreateSurface;
- xf86XvMCDestroySurfaceProcPtr DestroySurface;
- xf86XvMCCreateSubpictureProcPtr CreateSubpicture;
- xf86XvMCDestroySubpictureProcPtr DestroySubpicture;
-} XF86MCAdaptorRec, *XF86MCAdaptorPtr;
-
-/*
- xf86XvMCScreenInit
-
- Unlike Xv, the adaptor data is not copied from this structure.
- This structure's data is used so it must stick around for the
- life of the server. Note that it's an array of pointers not
- an array of structures.
-*/
-
-Bool xf86XvMCScreenInit(
- ScreenPtr pScreen,
- int num_adaptors,
- XF86MCAdaptorPtr *adaptors
-);
-
-XF86MCAdaptorPtr xf86XvMCCreateAdaptorRec (void);
-void xf86XvMCDestroyAdaptorRec(XF86MCAdaptorPtr adaptor);
-
-#endif /* _XF86XVMC_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xf86xvpriv.h b/nx-X11/programs/Xserver/hw/xfree86/common/xf86xvpriv.h
deleted file mode 100644
index 0d1efdafb..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xf86xvpriv.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86xvpriv.h,v 1.2 2003/08/24 17:36:56 dawes Exp $ */
-
-/*
- * Copyright (c) 2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifndef _XF86XVPRIV_H_
-#define _XF86XVPRIV_H_
-
-#include "xf86xv.h"
-
-/*** These are DDX layer privates ***/
-
-extern int XF86XvScreenIndex;
-
-typedef struct {
- DestroyWindowProcPtr DestroyWindow;
- ClipNotifyProcPtr ClipNotify;
- WindowExposuresProcPtr WindowExposures;
- void (*AdjustFrame)(int, int, int, int);
- Bool (*EnterVT)(int, int);
- void (*LeaveVT)(int, int);
- GCPtr videoGC;
-} XF86XVScreenRec, *XF86XVScreenPtr;
-
-typedef struct {
- int flags;
- PutVideoFuncPtr PutVideo;
- PutStillFuncPtr PutStill;
- GetVideoFuncPtr GetVideo;
- GetStillFuncPtr GetStill;
- StopVideoFuncPtr StopVideo;
- SetPortAttributeFuncPtr SetPortAttribute;
- GetPortAttributeFuncPtr GetPortAttribute;
- QueryBestSizeFuncPtr QueryBestSize;
- PutImageFuncPtr PutImage;
- ReputImageFuncPtr ReputImage;
- QueryImageAttributesFuncPtr QueryImageAttributes;
-} XvAdaptorRecPrivate, *XvAdaptorRecPrivatePtr;
-
-typedef struct {
- ScrnInfoPtr pScrn;
- DrawablePtr pDraw;
- unsigned char type;
- unsigned int subWindowMode;
- DDXPointRec clipOrg;
- RegionPtr clientClip;
- RegionPtr pCompositeClip;
- Bool FreeCompositeClip;
- XvAdaptorRecPrivatePtr AdaptorRec;
- XvStatus isOn;
- Bool moved;
- int vid_x, vid_y, vid_w, vid_h;
- int drw_x, drw_y, drw_w, drw_h;
- DevUnion DevPriv;
-} XvPortRecPrivate, *XvPortRecPrivatePtr;
-
-typedef struct _XF86XVWindowRec{
- XvPortRecPrivatePtr PortRec;
- struct _XF86XVWindowRec *next;
-} XF86XVWindowRec, *XF86XVWindowPtr;
-
-#endif /* _XF86XVPRIV_H_ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xisb.c b/nx-X11/programs/Xserver/hw/xfree86/common/xisb.c
deleted file mode 100644
index 4ffc3ede4..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xisb.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xisb.c,v 1.5 2000/11/06 19:24:07 dawes Exp $ */
-
-/*
- X Input Serial Buffer routines for use in any XInput driver that accesses
- a serial device.
-*/
-
-
-/*****************************************************************************
- * Standard Headers
- ****************************************************************************/
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef __UNIXOS2__
-#define I_NEED_OS2_H
-#endif
-
-#include <misc.h>
-#include <xf86.h>
-#include <xf86Version.h>
-#include <xf86_OSproc.h>
-#include <xf86_OSlib.h>
-#include <xf86Xinput.h>
-#include "xisb.h"
-
-/*****************************************************************************
- * Local Headers
- ****************************************************************************/
-
-/*****************************************************************************
- * Variables without includable headers
- ****************************************************************************/
-
-/*****************************************************************************
- * Local Variables
- ****************************************************************************/
-
-/*****************************************************************************
- * Function Definitions
- ****************************************************************************/
-
-XISBuffer *
-XisbNew (int fd, xf86ssize_t size)
-{
- XISBuffer *b;
-
- b = xalloc (sizeof (XISBuffer));
- if (!b)
- return (NULL);
- b->buf = xalloc ((sizeof (unsigned char) * size));
- if (!b->buf)
- {
- xfree (b);
- return (NULL);
- }
-
- b->fd = fd;
- b->trace = 0;
- b->block_duration = 0;
- b->current = 1; /* force it to be past the end to trigger initial read */
- b->end = 0;
- b->buffer_size = size;
- return (b);
-}
-
-void
-XisbFree (XISBuffer *b)
-{
- xfree (b->buf);
- xfree (b);
-}
-
-int
-XisbRead (XISBuffer *b)
-{
- int ret;
-
- if (b->current >= b->end)
- {
- if (b->block_duration >= 0)
- {
- if (xf86WaitForInput (b->fd, b->block_duration) < 1)
- return (-1);
- }
- else
- {
- /*
- * automatically clear it so if XisbRead is called in a loop
- * the next call will make sure there is data with select and
- * thus prevent a blocking read
- */
- b->block_duration = 0;
- }
-
- ret = xf86ReadSerial (b->fd, b->buf, b->buffer_size);
- switch (ret)
- {
- case 0:
- return (-1); /* timeout */
- case -1:
- return (-2); /* error */
- default:
- b->end = ret;
- b->current = 0;
- break;
- }
- }
- if (b->trace)
- ErrorF ("read 0x%02x (%c)\n", b->buf[b->current],
- isprint(b->buf[b->current])?b->buf[b->current]:'.');
-
- return (b->buf[b->current++]);
-}
-
-/* the only purpose of this function is to provide output tracing */
-xf86ssize_t
-XisbWrite (XISBuffer *b, unsigned char *msg, xf86ssize_t len)
-{
- if (b->trace)
- {
- int i = 0;
- for (i = 0; i < len; i++)
- ErrorF ("\t\twrote 0x%02x (%c)\n", msg[i], msg[i]);
- }
- return (xf86WriteSerial (b->fd, msg, len));
-}
-
-/* turn tracing of this buffer on (1) or off (0) */
-void
-XisbTrace (XISBuffer *b, int trace)
-{
- b->trace = trace;
-}
-
-/*
- * specify a block_duration of -1 when you know the buffer's fd is ready to
- * read. After a read, it is automatically set to 0 so that the next read
- * will use check to select for data and prevent a block.
- * It is the caller's responsibility to set the block_duration to -1 if it
- * knows that there is data to read (because the main select loop triggered
- * the read) and want's to avoid the unnecessary overhead of the select call
- *
- * a zero or positive block duration will cause the select to block for the
- * give duration in usecs.
- */
-
-void
-XisbBlockDuration (XISBuffer *b, int block_duration)
-{
- b->block_duration = block_duration;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xisb.h b/nx-X11/programs/Xserver/hw/xfree86/common/xisb.h
deleted file mode 100644
index 39ae2ee11..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xisb.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/* $XFree86$ */
-
-#ifndef _xisb_H_
-#define _xisb_H_
-
-/******************************************************************************
- * Definitions
- * structs, typedefs, #defines, enums
- *****************************************************************************/
-
-typedef struct _XISBuffer
-{
- int fd;
- int trace;
- int block_duration;
- xf86ssize_t current; /* bytes read */
- xf86ssize_t end;
- xf86ssize_t buffer_size;
- unsigned char *buf;
-} XISBuffer;
-
-/******************************************************************************
- * Declarations
- * variables: use xisb_LOC in front
- * of globals.
- * put locals in the .c file.
- *****************************************************************************/
-XISBuffer * XisbNew (int fd, xf86ssize_t size);
-void XisbFree (XISBuffer *b);
-int XisbRead (XISBuffer *b);
-xf86ssize_t XisbWrite (XISBuffer *b, unsigned char *msg, xf86ssize_t len);
-void XisbTrace (XISBuffer *b, int trace);
-void XisbBlockDuration (XISBuffer *b, int block_duration);
-
-/*
- * DO NOT PUT ANYTHING AFTER THIS ENDIF
- */
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/common/xorgHelper.c b/nx-X11/programs/Xserver/hw/xfree86/common/xorgHelper.c
deleted file mode 100644
index 408583da8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/common/xorgHelper.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xorgHelper.c,v 1.6 2005/07/03 08:53:42 daniels Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "servermd.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-#include "propertyst.h"
-#include "gcstruct.h"
-#include "loaderProcs.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xorgVersion.h"
-
-
-CARD32
-xorgGetVersion()
-{
- return XORG_VERSION_CURRENT;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/Imakefile
deleted file mode 100644
index 648fdc762..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/Imakefile
+++ /dev/null
@@ -1,130 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/Imakefile,v 3.61 2003/11/03 05:11:51 tsi Exp $
-
-
-
-
-
-XCOMM $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/Imakefile,v 1.6 2005/12/01 02:15:38 ajax Exp $
-XCOMM $XConsortium: Imakefile /main/9 1996/10/25 15:38:46 kaleb $
-
-#include <Server.tmpl>
-
-#define IHaveSubdirs
-
-#if defined(i386Architecture) || defined(ia64Architecture) || \
- (defined(SunArchitecture) && defined(SparcArchitecture)) || \
- (defined(KFreeBSDArchitecture) && defined(AlphaArchitecture)) || \
- (defined(KFreeBSDArchitecture) && defined(Sparc64Architecture)) || \
- (defined(KFreeBSDArchitecture) && defined(PpcArchitecture)) || \
- (defined(KNetBSDArchitecture) && defined(AlphaArchitecture)) || \
- (defined(KNetBSDArchitecture) && defined(PpcArchitecture)) || \
- (defined(KNetBSDArchitecture) && defined(SparcArchitecture)) || \
- defined(KOpenBSDArchitecture) || defined(SGIArchitecture) || \
- (defined(LynxOSArchitecture) && defined(PpcArchitecture)) || \
- defined(AMD64Architecture) || defined(LinuxArchitecture) || \
- defined(GNUMachArchitecture)
-BUS_SUBDIR = bus
-#endif
-
-#if defined(QNX4Architecture)
-OS_SUBDIR = qnx4
-#endif
-
-#if defined(NTOArchitecture)
-OS_SUBDIR = nto
-#endif
-
-#if defined(SVR3Architecture)
-# if defined(i386ScoArchitecture)
-OS_SUBDIR = sco
-# else
-OS_SUBDIR = sysv
-# endif
-#endif
-
-#if defined(SVR4Architecture)
-# if defined(SunArchitecture)
-OS_SUBDIR = sunos
-# elif defined(PmaxOSArchitecture)
-OS_SUBDIR = pmax
-# elif defined(DguxArchitecture)
-OS_SUBDIR = dgux
-# elif defined(SGIArchitecture)
-OS_SUBDIR = irix
-# elif defined(UnixWareArchitecture)
-OS_SUBDIR = usl
-# else
-OS_SUBDIR = sysv
-# endif
-#endif
-
-#if defined(LinuxArchitecture)
-OS_SUBDIR = linux
-#endif
-
-#if defined(LynxOSArchitecture)
-OS_SUBDIR = lynxos
-#endif
-
-#if defined(KFreeBSDArchitecture) || defined(NetBSDArchitecture) || \
- defined(OpenBSDArchitecture)
-OS_SUBDIR = bsd
-#endif
-
-#if defined(BSDOSArchitecture)
-OS_SUBDIR = bsdi
-#endif
-
-#if defined(GNUMachArchitecture)
-OS_SUBDIR = hurd
-#endif
-
-#if defined(OS2Architecture)
-OS_SUBDIR = os2
-#endif
-
-#if defined(i386Sco325Architecture)
-OS_SUBDIR = sco
-#endif
-
-#if !DoLoadableServer
-
-#if BuildXF86DRI
-DRM_SRC = $(OS_SUBDIR)/drm/?*.c
-DRM_OBJ = $(OS_SUBDIR)/drm/?*.o
-DRM_DONES = $(OS_SUBDIR)/drm/DONE
-#endif
-
-#endif
-
-LIBDRM_DIR = ../../../../../extras/drm/libdrm
-
-SUBDIRS = $(OS_SUBDIR) $(BUS_SUBDIR) misc
-
-SRCS = $(OS_SUBDIR)/?*.c $(BUS_SUBDIR)/?*.c misc/?*.c $(DRM_SRC)
-OBJS = $(OS_SUBDIR)/?*.o $(BUS_SUBDIR)/?*.o misc/?*.o $(DRM_OBJ)
-
-DONES = $(OS_SUBDIR)/DONE $(BUS_SUBDIR)/DONE misc/DONE $(DRM_DONES)
-
-#if HasParallelMake
-MakeMutex($(SUBDIRS) $(OBJS) $(DONES))
-#endif
-
-#if HasGnuMake || HasBsdMake
-$(DONES): $(SUBDIRS)
-#endif
-
-NormalDepLibraryTarget(xf86_os,$(SUBDIRS) $(DONES),$(OBJS))
-
-ForceSubdirs($(SUBDIRS))
-
-DependSubdirs($(SUBDIRS))
-
-LinkSourceFile(xf86drm.h,$(LIBDRM_DIR))
-
-InstallDriverSDKNonExecFile(xf86_OSproc.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86_OSlib.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86_ansic.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86_libc.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(xf86drm.h,$(DRIVERSDKINCLUDEDIR))
-InstallDriverSDKNonExecFile(assyntax.h,$(DRIVERSDKINCLUDEDIR))
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/README.OS-lib b/nx-X11/programs/Xserver/hw/xfree86/os-support/README.OS-lib
deleted file mode 100644
index 43312e4e8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/README.OS-lib
+++ /dev/null
@@ -1,506 +0,0 @@
-
- README for XFree86 OS-support Layer
- -----------------------------------
-
-Contents
---------
- 1) Overview
- 2) Directory Layout
- 3) Adding a new OS
- 4) OS Support API
-
-1 - Overview
-------------
- This directory contains the OS support layer functions for the XFree86
-servers. In addition, some miscellaneous server support functions (not
-OS-dependent) are included here, to take advantage of the fact that this
-library comes last in the linking order.
-
-Most of the functionality required to support a new OS is encapsulated in
-this library. It is hoped that all OS-specific details can be encapsulated,
-but that is not likely ever to be completely possible. Hence some minor
-changes will wind up being made in other parts of the server. The major
-design principles for this library are maintainability, readability, and
-portability. Sometimes these goals conflict; some somewhat arbitrary choices
-have been made in implementation.
-
-2 - Directory Layout
---------------------
- os-support/ Contains headers and documentation; no code
- misc/ Non-OS-specific miscellaneous functions that
- fit best into the link architecture this way.
- shared/ Contains files with functions used by more than one
- OS. These are symlinked into the OS subdirectories
- at build time via Imakefile rules. This is alway
- preferable to reproducing functions in more than one
- OS library.
- bsd/ OS support for the 386BSD/NetBSD/FreeBSD operating
- systems.
- bsdi/ OS support for the BSD/386 operating system.
- linux/ OS support for the Linux operating system.
- os2/ OS support for OS/2 2.11 and OS/2 Warp
- sco/ OS support for the SCO SVR3.x operating system.
- solx86/ OS support for the Solaris x86 operating system.
- sysv/ OS support for all SVR4.0 and SVR4.2, and for
- ISC and AT&T SVR3.2 operating systems.
-
-3 - Adding A New OS
--------------------
- Adding a support for a new operating system entails implementing all of
-the functions described in the API below. Many of these functions are no-ops
-for many operating systems, and appropriate files with dummy declarations are
-available in the 'shared' subdirectory.
-
-If your OS is sufficiently similar to an existing OS, you can make use of
-the existing subdirectory. One of the reasons for implementing this OS
-library was the unmaintainability of the spagetti-#ifdef code that existed
-before. You should try to avoid cluttering the code with #ifdef's. If
-you find that the subdirectory is getting cluttered, split off into a
-seperate subdirectory (e.g. as was done for SCO, rather than cluttering
-the 'sysv' subdirectory). You can split functions out of an existing
-subdirectory into the 'shared' subdirectory, if that is appropriate. Just
-remember to update the Imakefile for the old subdirectory.
-
-You will still likely have to make some small changes to other parts of
-the server. You should not put OS-specific #define's or #include's anywhere
-else in the server. These should all go in the "xf86_OSlib.h" header file
-in this directory.
-
-4 - OS Support API
------------------
-void xf86OpenConsole(void)
-{
- /*
- * Open console device, activate VTs, etc, etc. Fill in requisite
- * pieces of xf86Info. Most of this code comes from xf86Init.c
- */
-}
-
-void xf86CloseConsole(void)
-{
- /*
- * Close console at server exit.
- */
-}
-
-Bool xf86VTSwitchPending(void)
-{
- /*
- * Returns TRUE iff there is a VT switch operation pending for
- * the server. In the USL VT model, this is indicated via a
- * signal handler. Should return FALSE always for OSs without
- * VTs.
- */
-}
-
-Bool xf86VTSwitchAway(void)
-{
- /*
- * Handles the OS-specific action for switching away from the active
- * VT. Returns FALSE if the switch away fails. Should return
- * FALSE always for OSs without VTs (then again, this function
- * should never be called in that case).
- */
-}
-
-Bool xf86VTSwitchTo(void)
-{
- /*
- * Handles the OS-specific action for switching to the active VT.
- * Returns FALSE if the switch to fails. Should return TRUE
- * always for OSs without VTs (then again, this function should
- * never be called in that case).
- */
-}
-
-Bool xf86LinearVidMem(void)
-{
- /*
- * Returns TRUE if the OS supports mapping linear frame buffers
- * (ie memory at addresses above physical memory).
- */
-}
-
-pointer xf86MapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- /*
- * Handle mapping the video memory. Returns (pointer *)0 for
- * failure; causes server exit. It is allowable to call FatalError()
- * from inside this function and exit directly.
- */
-}
-
-void xf86UnMapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- /*
- * Handle unmapping the video memory. This should undo what
- * xf86MapVidMem() does. Base is a pointer obtained from
- * a previous call to xf86MapVidMem().
- */
-}
-
-void xf86MapDisplay(int ScreenNum, int Region)
-{
- /*
- * For OSs that require the screen be mapped when entering a VT.
- * A dummy function will be defined for OSs that don't require
- * this (or don't have VTs at all).
- */
-}
-
-void xf86UnMapDisplay(int ScreenNum, int Region)
-{
- /*
- * For Os that require that the screen be unmapped when leaving a
- * VT. A dummy function will be defined for OSs that don't require
- * this (or don't have VTs at all).
- */
-}
-
-int xf86ReadBIOS(unsigned long Base, unsigned long Offset,
- unsigned char *Buf, int Len)
-{
- /*
- * Read Len bytes from the BIOS at address Base, offset Offset,
- * into buffer Buf. Returns -1 for failure or if the OS does
- * not support reading the BIOS. This causes a driver probe
- * to fail, but does not cause the server to abort.
- */
-}
-
-
-void xf86EnableIOPorts(int ScreenNum)
-{
- /*
- * Enables I/O permissions. The OS layer should
- * enable all I/O port access.
- */
-}
-
-void xf86DisableIOPorts(int ScreenNum)
-{
- /*
- * Disables I/O permissions.
- */
-}
-
-Bool xf86DisableInterrupts(void)
-{
- /*
- * Disable interrupts if allowed for this OS. Returns FALSE if
- * this is not allowed or if the attempt fails for some reason.
- */
-}
-
-void xf86EnableInterrupts(void)
-{
- /*
- * Reenable interrupts
- */
-}
-
-int xf86ProcessArgument(int argc, char *argv[], int i)
-{
- /*
- * Process OS-specific command-line arguments. See
- * ddxProcessArgument() for more info.
- */
-}
-
-void xf86UseMsg(void)
-{
- /*
- * Print list of OS-specific command-line arguments. See
- * ddxUseMsg() for more info.
- */
-}
-
-void xf86SoundKbdBell(int loudness, int pitch, int duration)
-{
- /*
- * Sound the keyboard bell. pitch is in Hz, duration in ms,
- * loudness is in the range 0-100 (0 -> off). For systems
- * where the loudness can't be controlled, scale the duration
- * by loudness/50.
- */
-}
-
-void xf86SetKbdLeds(int leds)
-{
- /*
- * Set the keyboard LEDs to the state indicated in leds
- */
-}
-
-int xf86GetKbdLeds(void)
-{
- /*
- * Return the state of the keyboard LEDs. If the OS doesn't
- * support this, return 0.
- */
-}
-
-void xf86SetKbdRepeat(char rad)
-{
- /*
- * Set the keyboard repeat rate and delay according the
- * the rad value. The lower 5 bits determine the repeat
- * rate (lower value -> higher rate). The next 2 bits
- * determine the delay.
- * This should possibly be changed to take separate rate and
- * delay parameters.
- */
-}
-
-void xf86KbdInit(void)
-{
- /*
- * Save initial keyboard state. This is called at the start of
- * each server generation.
- */
-}
-
-int xf86KbdOn(void)
-{
- /*
- * Set the keyboard up for use with X. This is called whenever
- * the server becomes active (ie at the start of each generation and
- * whenever its VT becomes active). Return the file descriptor
- * for keyboard input. Return -1 if there is no file descriptor
- * to add as an input device. If there are errors encountered,
- * call FatalError(). A return value of -1 is not considered an
- * error condition.
- */
-}
-
-int xf86KbdOff(void)
-{
- /*
- * Return the keyboard to the state saved by xf86KbdInit(). This is
- * called at the end of a server generation, and also when the
- * server's VT ceases being active. Returns the keyboard file
- * descriptor. Returns -1 if there is no file descriptor to be
- * removed as an input device. Errors should be handled the same
- * way as in xf86KbdOn().
- */
-}
-
-void xf86KbdEvents(void)
-{
- /*
- * Read characters from the keyboard device, and post the events
- * by calling xf86PostKbdEvent(). Read as much as is available
- * without waiting.
- */
-}
-
-void xf86SetMouseSpeed(int old, int new, unsigned cflag)
-{
- /*
- * Set the speed of the mouse port. old is the previous speed,
- * new is the new speed, and cflag is the value of the termio[s]
- * c_cflag field. For mice that have programmable speed operation,
- * this should send the appropriate commands to the mouse.
- */
-}
-
-void xf86MouseInit(void)
-{
- /*
- * This is called at the start of each server generation. In most
- * cases this is a noop. If the mouse must not be opened/closed
- * when VT switching, the open should be done here.
- */
-}
-
-int xf86MousedOn(void)
-{
- /*
- * Set the mouse up for use with X. This is called whenever
- * the server becomes active (ie at the start of each generation and
- * whenever its VT becomes active). This function normally opens
- * the mouse device, and may call xf86SetupMouse() to initialise
- * the mouse parameters. Return the file descriptor for mouse input.
- * Return -1 if there is no file descriptor to add as an input
- * device. If there are errors encountered, call FatalError().
- * A return value of -1 is not considered an error condition.
- */
-}
-
-int xf86MouseOff(Bool doclose)
-{
- /*
- * Release the mouse from use with X. This is called at the end
- * of a server generation (with doclose==TRUE), and also when the
- * server's VT ceases being active (with doclose==FALSE). If the
- * mouse should not be opened/closed when VT switching, the close
- * should be done here when doclose==TRUE. For other systems, the
- * mouse device should be closed regardless of the doclose value.
- * Returns the mouse file descriptor. Returns -1 if there is no
- * file descriptor to be removed as an input device. Errors
- * should be handled the same way as in xf86MouseOn().
- */
-}
-
-void xf86MouseEvents(void)
-{
- /*
- * Read characters from the mouse device, and post the events
- * by calling xf86PostMseEvent(). Read as much as is available
- * without waiting. If the OS doesn't handle the mouse protocol
- * translation, xf86MouseProtocol() may be called to do the
- * translation and event posting. If the OS does handle the protocol
- * translation, MOUSE_PROTOCOL_IN_KERNEL should be #define'd in
- * xf86_OSlib.h.
- */
-}
-
-int xf86OsMouseProc(DevicePtr pPointer, int what)
-{
- /*
- * Implements the device-proc for the pointer device when an
- * OS-based mouse driver is being used (as opposed to the
- * server's internal mouse driver). Implemented as any other
- * device-proc in the server.
- *
- * This function only needs to be implemented if USE_OSMOUSE is
- * defined for the OS.
- */
-}
-
-int xf86OsMouseEvents(void)
-{
- /*
- * When supporting an OS-based mouse driver (as opposed to the
- * server's internal mouse driver), read some events from the device
- * and post them to the DIX layer through xf86PostMseEvent().
- *
- * This function only needs to be implemented if USE_OSMOUSE is
- * defined for the OS.
- */
-}
-
-void xf86OsMouseOption(int token, pointer lex_ptr)
-{
- /*
- * Used in parsing an OsMouse keyword from the Xconfig file.
- * Passed the token type and a pointer to the token value.
- * The function should do whatever is appropriate for the OS's
- * mouse driver.
- *
- * This function only needs to be implemented if USE_OSMOUSE is
- * defined for the OS.
- */
-}
-
-/*
- * The following functions are simply wrappers around the OS specific
- * libc functions
- */
-
-void *
-xf86memmove(void * dest, const void * src, INT32 n)
-{
- return(memmove(dest,src,n));
-}
-
-void *
-xf86memset(void * s, int c, INT32 n)
-{
- return(memset(s,c,n));
-}
-
-void *
-xf86memcpy(void * dest, const void * src, INT32 n)
-{
- return(memcpy(dest,src,n));
-}
-
-int
-xf86memcmp(const void * s1, const void * s2, INT32 n)
-{
- return(memcmp(s1,s2,n));
-}
-
-char *
-xf86strcat(char * dest, const char * src)
-{
- return(strcat(dest,src));
-}
-
-char *
-xf86strcpy(char * dest, const char * src)
-{
- return(strcpy(dest,src));
-}
-
-int
-xf86strcmp(const char * s1, const char * s2)
-{
- return(strcmp(s1,s2));
-}
-
-int
-xf86strncmp(const char * s1, const char * s2, INT32 n)
-{
- return(strncmp(s1,s2,n));
-}
-
-size_t
-xf86strlen(const char * s)
-{
- return(strlen(s));
-}
-
-void
-xf86getsecs(INT32 * secs, INT32 * usecs)
-{
- struct timeval tv;
-
- gettimeofday(&tv, NULL);
- *secs = tv.tv_sec;
- *usecs= tv.tv_usec;
-
- return;
-}
-
-double
-xf86exp(double x)
-{
- return(exp(x));
-}
-
-double
-xf86log(double x)
-{
- return(log(x));
-}
-
-double
-xf86pow(double x, double y)
-{
- return(pow(x,y));
-}
-
-double
-xf86sqrt(double x)
-{
- return(sqrt(x));
-}
-
-double
-xf86cos(double x)
-{
- return(cos(x));
-}
-
-
-
-
-$XFree86: xc/programs/Xserver/hw/xfree86/os-support/README.OS-lib,v 3.9 2001/07/23 13:15:48 dawes Exp $
-
-
-
-
-
-$XConsortium: README.OS-lib /main/5 1996/02/21 17:50:28 kaleb $
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/assyntax.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/assyntax.h
deleted file mode 100644
index 13cc2f3e0..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/assyntax.h
+++ /dev/null
@@ -1,753 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/assyntax.h,v 3.13 2003/08/24 17:37:03 dawes Exp $ */
-
-#ifndef __ASSYNTAX_H__
-#define __ASSYNTAX_H__
-
-/*
- * Copyright 1992 Vrije Universiteit, The Netherlands
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of the Vrije Universiteit not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. The Vrije Universiteit makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * The Vrije Universiteit DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL The Vrije Universiteit BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/*
- * Copyright (c) 1993-1999 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* $XConsortium: assyntax.h /main/5 1996/02/21 17:50:49 kaleb $ */
-
- /*
- * assyntax.h
- *
- * Select the syntax appropriate to the 386 assembler being used
- * To add support for more assemblers add more columns to the CHOICE
- * macro. Note that register names must also have uppercase names
- * to avoid macro recursion. e.g., #define ah %ah recurses!
- *
- * NB 1. Some of the macros for certain assemblers imply that the code is to
- * run in protected mode!! Caveat emptor.
- *
- * NB 2. 486 specific instructions are not included. This is to discourage
- * their accidental use in code that is intended to run on 386 and 486
- * systems.
- *
- * Supported assemblers:
- *
- * (a) AT&T SysVr4 as(1): default
- * (b) GNU Assembler gas: define USE_GAS or GNU_ASSEMBLER
- * (c) Amsterdam Compiler kit: define ACK_ASSEMBLER
- *
- * The following naming conventions have been used to identify the various
- * data types:
- * _SR = segment register version
- * Integer:
- * _Q = quadword = 64 bits
- * _L = long = 32 bits
- * _W = short = 16 bits
- * _B = byte = 8 bits
- * Floating-point:
- * _X = m80real = 80 bits
- * _D = double = 64 bits
- * _S = single = 32 bits
- *
- * Author: Gregory J. Sharp, Sept 1992
- * Vrije Universiteit, Amsterdam, The Netherlands
- */
-
-#if defined(USE_GAS) && !defined(GNU_ASSEMBLER)
-#define GNU_ASSEMBLER
-#endif
-
-#if (defined(__STDC__) && !defined(UNIXCPP)) || (defined (sun) && defined (i386) && defined (SVR4) && defined (__STDC__) && !defined (__GNUC__))
-#define CONCAT(x, y) x ## y
-#else
-#define CONCAT(x, y) x/**/y
-#endif
-
-#ifdef ACK_ASSEMBLER
-
-/* Assume we write code for 32-bit protected mode! */
-
-/* Redefine register names for GAS & AT&T assemblers */
-#define AL al
-#define AH ah
-#define AX ax
-#define EAX ax
-#define BL bl
-#define BH bh
-#define BX bx
-#define EBX bx
-#define CL cl
-#define CH ch
-#define CX cx
-#define ECX cx
-#define DL dl
-#define DH dh
-#define DX dx
-#define EDX dx
-#define BP bp
-#define EBP bp
-#define SI si
-#define ESI si
-#define DI di
-#define EDI di
-#define SP sp
-#define ESP sp
-#define CS cs
-#define SS ss
-#define DS ds
-#define ES es
-#define FS fs
-#define GS gs
-/* Control Registers */
-#define CR0 cr0
-#define CR1 cr1
-#define CR2 cr2
-#define CR3 cr3
-/* Debug Registers */
-#define DR0 dr0
-#define DR1 dr1
-#define DR2 dr2
-#define DR3 dr3
-#define DR4 dr4
-#define DR5 dr5
-#define DR6 dr6
-#define DR7 dr7
-/* Floating-point Stack */
-#define ST st
-
-#define AS_BEGIN .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
-
-
-#define _WTOG o16 /* word toggle for _W instructions */
-#define _LTOG /* long toggle for _L instructions */
-#define ADDR_TOGGLE a16
-#define OPSZ_TOGGLE o16
-#define USE16 .use16
-#define USE32 .use32
-
-#define CHOICE(a,b,c) c
-
-#else /* AT&T or GAS */
-
-/* Redefine register names for GAS & AT&T assemblers */
-#define AL %al
-#define AH %ah
-#define AX %ax
-#define EAX %eax
-#define BL %bl
-#define BH %bh
-#define BX %bx
-#define EBX %ebx
-#define CL %cl
-#define CH %ch
-#define CX %cx
-#define ECX %ecx
-#define DL %dl
-#define DH %dh
-#define DX %dx
-#define EDX %edx
-#define BP %bp
-#define EBP %ebp
-#define SI %si
-#define ESI %esi
-#define DI %di
-#define EDI %edi
-#define SP %sp
-#define ESP %esp
-#define CS %cs
-#define SS %ss
-#define DS %ds
-#define ES %es
-#define FS %fs
-#define GS %gs
-/* Control Registers */
-#define CR0 %cr0
-#define CR1 %cr1
-#define CR2 %cr2
-#define CR3 %cr3
-/* Debug Registers */
-#define DR0 %db0
-#define DR1 %db1
-#define DR2 %db2
-#define DR3 %db3
-#define DR4 %db4
-#define DR5 %db5
-#define DR6 %db6
-#define DR7 %db7
-/* Floating-point Stack */
-#define ST %st
-
-#define AS_BEGIN
-#define USE16
-#define USE32
-
-#ifdef GNU_ASSEMBLER
-
-#define ADDR_TOGGLE aword
-#define OPSZ_TOGGLE word
-
-#define CHOICE(a,b,c) b
-
-#else
-/*
- * AT&T ASSEMBLER SYNTAX
- * *********************
- */
-#define CHOICE(a,b,c) a
-
-#define ADDR_TOGGLE addr16
-#define OPSZ_TOGGLE data16
-
-#endif /* GNU_ASSEMBLER */
-#endif /* ACK_ASSEMBLER */
-
-
-#if defined(__QNX__) || defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) || defined(__ELF__) || defined(__GNU__)
-#define GLNAME(a) a
-#else
-#define GLNAME(a) CONCAT(_,a)
-#endif
-
-
- /****************************************/
- /* */
- /* Select the various choices */
- /* */
- /****************************************/
-
-
-/* Redefine assembler directives */
-/*********************************/
-#define GLOBL CHOICE(.globl, .globl, .extern)
-#define ALIGNTEXT4 CHOICE(.align 4, .align ARG2(2,0x90), .align 4)
-#define ALIGNTEXT2 CHOICE(.align 2, .align ARG2(1,0x90), .align 2)
-/* ALIGNTEXT4ifNOP is the same as ALIGNTEXT4, but only if the space is
- * guaranteed to be filled with NOPs. Otherwise it does nothing.
- */
-#define ALIGNTEXT4ifNOP CHOICE(.align 4, .align ARG2(2,0x90), /*can't do it*/)
-#define ALIGNDATA4 CHOICE(.align 4, .align ARG2(2,0x0), .align 4)
-#define ALIGNDATA2 CHOICE(.align 2, .align ARG2(1,0x0), .align 2)
-#define FILE(s) CHOICE(.file s, .file s, .file s)
-#define STRING(s) CHOICE(.string s, .asciz s, .asciz s)
-#define D_LONG CHOICE(.long, .long, .data4)
-#define D_WORD CHOICE(.value, .short, .data2)
-#define D_BYTE CHOICE(.byte, .byte, .data1)
-#define SPACE CHOICE(.comm, .space, .space)
-#define COMM CHOICE(.comm, .comm, .comm)
-#define SEG_DATA CHOICE(.data, .data, .sect .data)
-#define SEG_TEXT CHOICE(.text, .text, .sect .text)
-#define SEG_BSS CHOICE(.bss, .bss, .sect .bss)
-
-#ifdef GNU_ASSEMBLER
-#define D_SPACE(n) . = . + n
-#else
-#define D_SPACE(n) .space n
-#endif
-
-/* Addressing Modes */
-/* Immediate Mode */
-#define ADDR(a) CHOICE(CONCAT($,a), CONCAT($,a), a)
-#define CONST(a) CHOICE(CONCAT($,a), CONCAT($,a), a)
-
-/* Indirect Mode */
-#define CONTENT(a) CHOICE(a, a, (a)) /* take contents of variable */
-#define REGIND(a) CHOICE((a), (a), (a)) /* Register a indirect */
-/* Register b indirect plus displacement a */
-#define REGOFF(a, b) CHOICE(a(b), a(b), a(b))
-/* Reg indirect Base + Index + Displacement - this is mainly for 16-bit mode
- * which has no scaling
- */
-#define REGBID(b,i,d) CHOICE(d(b,i), d(b,i), d(b)(i))
-/* Reg indirect Base + (Index * Scale) + Displacement */
-#define REGBISD(b,i,s,d) CHOICE(d(b,i,s), d(b,i,s), d(b)(i*s))
-/* Displaced Scaled Index: */
-#define REGDIS(d,i,s) CHOICE(d(,i,s), d(,i,s), d(i * s))
-/* Indexed Base: */
-#define REGBI(b,i) CHOICE((b,i), (b,i), (b)(i))
-/* Displaced Base: */
-#define REGDB(d,b) CHOICE(d(b), d(b), d(b))
-/* Variable indirect: */
-#define VARINDIRECT(var) CHOICE(*var, *var, (var))
-/* Use register contents as jump/call target: */
-#define CODEPTR(reg) CHOICE(*reg, *reg, reg)
-
-/* For expressions requiring bracketing
- * eg. (CRT0_PM | CRT_EM)
- */
-
-#define EXPR(a) CHOICE([a], (a), [a])
-#define ENOT(a) CHOICE(0!a, ~a, ~a)
-#define EMUL(a,b) CHOICE(a\*b, a*b, a*b)
-#define EDIV(a,b) CHOICE(a\/b, a/b, a/b)
-
-/*
- * We have to beat the problem of commas within arguments to choice.
- * eg. choice (add a,b, add b,a) will get argument mismatch. Luckily ANSI
- * and other known cpp definitions evaluate arguments before substitution
- * so the following works.
- */
-#define ARG2(a, b) a,b
-#define ARG3(a,b,c) a,b,c
-
-/* Redefine assembler commands */
-#define AAA CHOICE(aaa, aaa, aaa)
-#define AAD CHOICE(aad, aad, aad)
-#define AAM CHOICE(aam, aam, aam)
-#define AAS CHOICE(aas, aas, aas)
-#define ADC_L(a, b) CHOICE(adcl ARG2(a,b), adcl ARG2(a,b), _LTOG adc ARG2(b,a))
-#define ADC_W(a, b) CHOICE(adcw ARG2(a,b), adcw ARG2(a,b), _WTOG adc ARG2(b,a))
-#define ADC_B(a, b) CHOICE(adcb ARG2(a,b), adcb ARG2(a,b), adcb ARG2(b,a))
-#define ADD_L(a, b) CHOICE(addl ARG2(a,b), addl ARG2(a,b), _LTOG add ARG2(b,a))
-#define ADD_W(a, b) CHOICE(addw ARG2(a,b), addw ARG2(a,b), _WTOG add ARG2(b,a))
-#define ADD_B(a, b) CHOICE(addb ARG2(a,b), addb ARG2(a,b), addb ARG2(b,a))
-#define AND_L(a, b) CHOICE(andl ARG2(a,b), andl ARG2(a,b), _LTOG and ARG2(b,a))
-#define AND_W(a, b) CHOICE(andw ARG2(a,b), andw ARG2(a,b), _WTOG and ARG2(b,a))
-#define AND_B(a, b) CHOICE(andb ARG2(a,b), andb ARG2(a,b), andb ARG2(b,a))
-#define ARPL(a,b) CHOICE(arpl ARG2(a,b), arpl ARG2(a,b), arpl ARG2(b,a))
-#define BOUND_L(a, b) CHOICE(boundl ARG2(a,b), boundl ARG2(b,a), _LTOG bound ARG2(b,a))
-#define BOUND_W(a, b) CHOICE(boundw ARG2(a,b), boundw ARG2(b,a), _WTOG bound ARG2(b,a))
-#define BSF_L(a, b) CHOICE(bsfl ARG2(a,b), bsfl ARG2(a,b), _LTOG bsf ARG2(b,a))
-#define BSF_W(a, b) CHOICE(bsfw ARG2(a,b), bsfw ARG2(a,b), _WTOG bsf ARG2(b,a))
-#define BSR_L(a, b) CHOICE(bsrl ARG2(a,b), bsrl ARG2(a,b), _LTOG bsr ARG2(b,a))
-#define BSR_W(a, b) CHOICE(bsrw ARG2(a,b), bsrw ARG2(a,b), _WTOG bsr ARG2(b,a))
-#define BT_L(a, b) CHOICE(btl ARG2(a,b), btl ARG2(a,b), _LTOG bt ARG2(b,a))
-#define BT_W(a, b) CHOICE(btw ARG2(a,b), btw ARG2(a,b), _WTOG bt ARG2(b,a))
-#define BTC_L(a, b) CHOICE(btcl ARG2(a,b), btcl ARG2(a,b), _LTOG btc ARG2(b,a))
-#define BTC_W(a, b) CHOICE(btcw ARG2(a,b), btcw ARG2(a,b), _WTOG btc ARG2(b,a))
-#define BTR_L(a, b) CHOICE(btrl ARG2(a,b), btrl ARG2(a,b), _LTOG btr ARG2(b,a))
-#define BTR_W(a, b) CHOICE(btrw ARG2(a,b), btrw ARG2(a,b), _WTOG btr ARG2(b,a))
-#define BTS_L(a, b) CHOICE(btsl ARG2(a,b), btsl ARG2(a,b), _LTOG bts ARG2(b,a))
-#define BTS_W(a, b) CHOICE(btsw ARG2(a,b), btsw ARG2(a,b), _WTOG bts ARG2(b,a))
-#define CALL(a) CHOICE(call a, call a, call a)
-#define CALLF(s,a) CHOICE(lcall ARG2(s,a), lcall ARG2(s,a), callf s:a)
-#define CBW CHOICE(cbtw, cbw, cbw)
-#define CWDE CHOICE(cwtd, cwde, cwde)
-#define CLC CHOICE(clc, clc, clc)
-#define CLD CHOICE(cld, cld, cld)
-#define CLI CHOICE(cli, cli, cli)
-#define CLTS CHOICE(clts, clts, clts)
-#define CMC CHOICE(cmc, cmc, cmc)
-#define CMP_L(a, b) CHOICE(cmpl ARG2(a,b), cmpl ARG2(a,b), _LTOG cmp ARG2(b,a))
-#define CMP_W(a, b) CHOICE(cmpw ARG2(a,b), cmpw ARG2(a,b), _WTOG cmp ARG2(b,a))
-#define CMP_B(a, b) CHOICE(cmpb ARG2(a,b), cmpb ARG2(a,b), cmpb ARG2(b,a))
-#define CMPS_L CHOICE(cmpsl, cmpsl, _LTOG cmps)
-#define CMPS_W CHOICE(cmpsw, cmpsw, _WTOG cmps)
-#define CMPS_B CHOICE(cmpsb, cmpsb, cmpsb)
-#define CWD CHOICE(cwtl, cwd, cwd)
-#define CDQ CHOICE(cltd, cdq, cdq)
-#define DAA CHOICE(daa, daa, daa)
-#define DAS CHOICE(das, das, das)
-#define DEC_L(a) CHOICE(decl a, decl a, _LTOG dec a)
-#define DEC_W(a) CHOICE(decw a, decw a, _WTOG dec a)
-#define DEC_B(a) CHOICE(decb a, decb a, decb a)
-#define DIV_L(a) CHOICE(divl a, divl a, div a)
-#define DIV_W(a) CHOICE(divw a, divw a, div a)
-#define DIV_B(a) CHOICE(divb a, divb a, divb a)
-#define ENTER(a,b) CHOICE(enter ARG2(a,b), enter ARG2(a,b), enter ARG2(b,a))
-#define HLT CHOICE(hlt, hlt, hlt)
-#define IDIV_L(a) CHOICE(idivl a, idivl a, _LTOG idiv a)
-#define IDIV_W(a) CHOICE(idivw a, idivw a, _WTOG idiv a)
-#define IDIV_B(a) CHOICE(idivb a, idivb a, idivb a)
-/* More forms than this for imul!! */
-#define IMUL_L(a, b) CHOICE(imull ARG2(a,b), imull ARG2(a,b), _LTOG imul ARG2(b,a))
-#define IMUL_W(a, b) CHOICE(imulw ARG2(a,b), imulw ARG2(a,b), _WTOG imul ARG2(b,a))
-#define IMUL_B(a) CHOICE(imulb a, imulb a, imulb a)
-#define IN_L CHOICE(inl (DX), inl ARG2(DX,EAX), _LTOG in DX)
-#define IN_W CHOICE(inw (DX), inw ARG2(DX,AX), _WTOG in DX)
-#define IN_B CHOICE(inb (DX), inb ARG2(DX,AL), inb DX)
-/* Please AS code writer: use the following ONLY, if you refer to ports<256
- * directly, but not in IN1_W(DX), for instance, even if IN1_ looks nicer
- */
-#if defined (sun)
-#define IN1_L(a) CHOICE(inl (a), inl ARG2(a,EAX), _LTOG in a)
-#define IN1_W(a) CHOICE(inw (a), inw ARG2(a,AX), _WTOG in a)
-#define IN1_B(a) CHOICE(inb (a), inb ARG2(a,AL), inb a)
-#else
-#define IN1_L(a) CHOICE(inl a, inl ARG2(a,EAX), _LTOG in a)
-#define IN1_W(a) CHOICE(inw a, inw ARG2(a,AX), _WTOG in a)
-#define IN1_B(a) CHOICE(inb a, inb ARG2(a,AL), inb a)
-#endif
-#define INC_L(a) CHOICE(incl a, incl a, _LTOG inc a)
-#define INC_W(a) CHOICE(incw a, incw a, _WTOG inc a)
-#define INC_B(a) CHOICE(incb a, incb a, incb a)
-#define INS_L CHOICE(insl, insl, _LTOG ins)
-#define INS_W CHOICE(insw, insw, _WTOG ins)
-#define INS_B CHOICE(insb, insb, insb)
-#define INT(a) CHOICE(int a, int a, int a)
-#define INT3 CHOICE(int CONST(3), int3, int CONST(3))
-#define INTO CHOICE(into, into, into)
-#define IRET CHOICE(iret, iret, iret)
-#define IRETD CHOICE(iret, iret, iretd)
-#define JA(a) CHOICE(ja a, ja a, ja a)
-#define JAE(a) CHOICE(jae a, jae a, jae a)
-#define JB(a) CHOICE(jb a, jb a, jb a)
-#define JBE(a) CHOICE(jbe a, jbe a, jbe a)
-#define JC(a) CHOICE(jc a, jc a, jc a)
-#define JE(a) CHOICE(je a, je a, je a)
-#define JG(a) CHOICE(jg a, jg a, jg a)
-#define JGE(a) CHOICE(jge a, jge a, jge a)
-#define JL(a) CHOICE(jl a, jl a, jl a)
-#define JLE(a) CHOICE(jle a, jle a, jle a)
-#define JNA(a) CHOICE(jna a, jna a, jna a)
-#define JNAE(a) CHOICE(jnae a, jnae a, jnae a)
-#define JNB(a) CHOICE(jnb a, jnb a, jnb a)
-#define JNBE(a) CHOICE(jnbe a, jnbe a, jnbe a)
-#define JNC(a) CHOICE(jnc a, jnc a, jnc a)
-#define JNE(a) CHOICE(jne a, jne a, jne a)
-#define JNG(a) CHOICE(jng a, jng a, jng a)
-#define JNGE(a) CHOICE(jnge a, jnge a, jnge a)
-#define JNL(a) CHOICE(jnl a, jnl a, jnl a)
-#define JNLE(a) CHOICE(jnle a, jnle a, jnle a)
-#define JNO(a) CHOICE(jno a, jno a, jno a)
-#define JNP(a) CHOICE(jnp a, jnp a, jnp a)
-#define JNS(a) CHOICE(jns a, jns a, jns a)
-#define JNZ(a) CHOICE(jnz a, jnz a, jnz a)
-#define JO(a) CHOICE(jo a, jo a, jo a)
-#define JP(a) CHOICE(jp a, jp a, jp a)
-#define JPE(a) CHOICE(jpe a, jpe a, jpe a)
-#define JPO(a) CHOICE(jpo a, jpo a, jpo a)
-#define JS(a) CHOICE(js a, js a, js a)
-#define JZ(a) CHOICE(jz a, jz a, jz a)
-#define JMP(a) CHOICE(jmp a, jmp a, jmp a)
-#define JMPF(s,a) CHOICE(ljmp ARG2(s,a), ljmp ARG2(s,a), jmpf s:a)
-#define LAHF CHOICE(lahf, lahf, lahf)
-#if !defined(_REAL_MODE) && !defined(_V86_MODE)
-#define LAR(a, b) CHOICE(lar ARG2(a, b), lar ARG2(a, b), lar ARG2(b, a))
-#endif
-#define LEA_L(a, b) CHOICE(leal ARG2(a,b), leal ARG2(a,b), _LTOG lea ARG2(b,a))
-#define LEA_W(a, b) CHOICE(leaw ARG2(a,b), leaw ARG2(a,b), _WTOG lea ARG2(b,a))
-#define LEAVE CHOICE(leave, leave, leave)
-#define LGDT(a) CHOICE(lgdt a, lgdt a, lgdt a)
-#define LIDT(a) CHOICE(lidt a, lidt a, lidt a)
-#define LDS(a, b) CHOICE(ldsl ARG2(a,b), lds ARG2(a,b), lds ARG2(b,a))
-#define LES(a, b) CHOICE(lesl ARG2(a,b), les ARG2(a,b), les ARG2(b,a))
-#define LFS(a, b) CHOICE(lfsl ARG2(a,b), lfs ARG2(a,b), lfs ARG2(b,a))
-#define LGS(a, b) CHOICE(lgsl ARG2(a,b), lgs ARG2(a,b), lgs ARG2(b,a))
-#define LSS(a, b) CHOICE(lssl ARG2(a,b), lss ARG2(a,b), lss ARG2(b,a))
-#define LLDT(a) CHOICE(lldt a, lldt a, lldt a)
-#define LMSW(a) CHOICE(lmsw a, lmsw a, lmsw a)
-#define LOCK CHOICE(lock, lock, lock)
-#define LODS_L CHOICE(lodsl, lodsl, _LTOG lods)
-#define LODS_W CHOICE(lodsw, lodsw, _WTOG lods)
-#define LODS_B CHOICE(lodsb, lodsb, lodsb)
-#define LOOP(a) CHOICE(loop a, loop a, loop a)
-#define LOOPE(a) CHOICE(loope a, loope a, loope a)
-#define LOOPZ(a) CHOICE(loopz a, loopz a, loopz a)
-#define LOOPNE(a) CHOICE(loopne a, loopne a, loopne a)
-#define LOOPNZ(a) CHOICE(loopnz a, loopnz a, loopnz a)
-#if !defined(_REAL_MODE) && !defined(_V86_MODE)
-#define LSL(a, b) CHOICE(lsl ARG2(a,b), lsl ARG2(a,b), lsl ARG2(b,a))
-#endif
-#define LTR(a) CHOICE(ltr a, ltr a, ltr a)
-#define MOV_SR(a, b) CHOICE(movw ARG2(a,b), mov ARG2(a,b), mov ARG2(b,a))
-#define MOV_L(a, b) CHOICE(movl ARG2(a,b), movl ARG2(a,b), _LTOG mov ARG2(b,a))
-#define MOV_W(a, b) CHOICE(movw ARG2(a,b), movw ARG2(a,b), _WTOG mov ARG2(b,a))
-#define MOV_B(a, b) CHOICE(movb ARG2(a,b), movb ARG2(a,b), movb ARG2(b,a))
-#define MOVS_L CHOICE(movsl, movsl, _LTOG movs)
-#define MOVS_W CHOICE(movsw, movsw, _WTOG movs)
-#define MOVS_B CHOICE(movsb, movsb, movsb)
-#define MOVSX_BL(a, b) CHOICE(movsbl ARG2(a,b), movsbl ARG2(a,b), movsx ARG2(b,a))
-#define MOVSX_BW(a, b) CHOICE(movsbw ARG2(a,b), movsbw ARG2(a,b), movsx ARG2(b,a))
-#define MOVSX_WL(a, b) CHOICE(movswl ARG2(a,b), movswl ARG2(a,b), movsx ARG2(b,a))
-#define MOVZX_BL(a, b) CHOICE(movzbl ARG2(a,b), movzbl ARG2(a,b), movzx ARG2(b,a))
-#define MOVZX_BW(a, b) CHOICE(movzbw ARG2(a,b), movzbw ARG2(a,b), movzx ARG2(b,a))
-#define MOVZX_WL(a, b) CHOICE(movzwl ARG2(a,b), movzwl ARG2(a,b), movzx ARG2(b,a))
-#define MUL_L(a) CHOICE(mull a, mull a, _LTOG mul a)
-#define MUL_W(a) CHOICE(mulw a, mulw a, _WTOG mul a)
-#define MUL_B(a) CHOICE(mulb a, mulb a, mulb a)
-#define NEG_L(a) CHOICE(negl a, negl a, _LTOG neg a)
-#define NEG_W(a) CHOICE(negw a, negw a, _WTOG neg a)
-#define NEG_B(a) CHOICE(negb a, negb a, negb a)
-#define NOP CHOICE(nop, nop, nop)
-#define NOT_L(a) CHOICE(notl a, notl a, _LTOG not a)
-#define NOT_W(a) CHOICE(notw a, notw a, _WTOG not a)
-#define NOT_B(a) CHOICE(notb a, notb a, notb a)
-#define OR_L(a,b) CHOICE(orl ARG2(a,b), orl ARG2(a,b), _LTOG or ARG2(b,a))
-#define OR_W(a,b) CHOICE(orw ARG2(a,b), orw ARG2(a,b), _WTOG or ARG2(b,a))
-#define OR_B(a,b) CHOICE(orb ARG2(a,b), orb ARG2(a,b), orb ARG2(b,a))
-#define OUT_L CHOICE(outl (DX), outl ARG2(EAX,DX), _LTOG out DX)
-#define OUT_W CHOICE(outw (DX), outw ARG2(AX,DX), _WTOG out DX)
-#define OUT_B CHOICE(outb (DX), outb ARG2(AL,DX), outb DX)
-/* Please AS code writer: use the following ONLY, if you refer to ports<256
- * directly, but not in OUT1_W(DX), for instance, even if OUT1_ looks nicer
- */
-#define OUT1_L(a) CHOICE(outl (a), outl ARG2(EAX,a), _LTOG out a)
-#define OUT1_W(a) CHOICE(outw (a), outw ARG2(AX,a), _WTOG out a)
-#define OUT1_B(a) CHOICE(outb (a), outb ARG2(AL,a), outb a)
-#define OUTS_L CHOICE(outsl, outsl, _LTOG outs)
-#define OUTS_W CHOICE(outsw, outsw, _WTOG outs)
-#define OUTS_B CHOICE(outsb, outsb, outsb)
-#define POP_SR(a) CHOICE(pop a, pop a, pop a)
-#define POP_L(a) CHOICE(popl a, popl a, _LTOG pop a)
-#define POP_W(a) CHOICE(popw a, popw a, _WTOG pop a)
-#define POPA_L CHOICE(popal, popal, _LTOG popa)
-#define POPA_W CHOICE(popaw, popaw, _WTOG popa)
-#define POPF_L CHOICE(popfl, popfl, _LTOG popf)
-#define POPF_W CHOICE(popfw, popfw, _WTOG popf)
-#define PUSH_SR(a) CHOICE(push a, push a, push a)
-#define PUSH_L(a) CHOICE(pushl a, pushl a, _LTOG push a)
-#define PUSH_W(a) CHOICE(pushw a, pushw a, _WTOG push a)
-#define PUSH_B(a) CHOICE(push a, pushb a, push a)
-#define PUSHA_L CHOICE(pushal, pushal, _LTOG pusha)
-#define PUSHA_W CHOICE(pushaw, pushaw, _WTOG pusha)
-#define PUSHF_L CHOICE(pushfl, pushfl, _LTOG pushf)
-#define PUSHF_W CHOICE(pushfw, pushfw, _WTOG pushf)
-#define RCL_L(a, b) CHOICE(rcll ARG2(a,b), rcll ARG2(a,b), _LTOG rcl ARG2(b,a))
-#define RCL_W(a, b) CHOICE(rclw ARG2(a,b), rclw ARG2(a,b), _WTOG rcl ARG2(b,a))
-#define RCL_B(a, b) CHOICE(rclb ARG2(a,b), rclb ARG2(a,b), rclb ARG2(b,a))
-#define RCR_L(a, b) CHOICE(rcrl ARG2(a,b), rcrl ARG2(a,b), _LTOG rcr ARG2(b,a))
-#define RCR_W(a, b) CHOICE(rcrw ARG2(a,b), rcrw ARG2(a,b), _WTOG rcr ARG2(b,a))
-#define RCR_B(a, b) CHOICE(rcrb ARG2(a,b), rcrb ARG2(a,b), rcrb ARG2(b,a))
-#define ROL_L(a, b) CHOICE(roll ARG2(a,b), roll ARG2(a,b), _LTOG rol ARG2(b,a))
-#define ROL_W(a, b) CHOICE(rolw ARG2(a,b), rolw ARG2(a,b), _WTOG rol ARG2(b,a))
-#define ROL_B(a, b) CHOICE(rolb ARG2(a,b), rolb ARG2(a,b), rolb ARG2(b,a))
-#define ROR_L(a, b) CHOICE(rorl ARG2(a,b), rorl ARG2(a,b), _LTOG ror ARG2(b,a))
-#define ROR_W(a, b) CHOICE(rorw ARG2(a,b), rorw ARG2(a,b), _WTOG ror ARG2(b,a))
-#define ROR_B(a, b) CHOICE(rorb ARG2(a,b), rorb ARG2(a,b), rorb ARG2(b,a))
-#define REP CHOICE(rep ;, rep ;, repe)
-#define REPE CHOICE(repz ;, repe ;, repe)
-#define REPNE CHOICE(repnz ;, repne ;, repne)
-#define REPNZ REPNE
-#define REPZ REPE
-#define RET CHOICE(ret, ret, ret)
-#define SAHF CHOICE(sahf, sahf, sahf)
-#define SAL_L(a, b) CHOICE(sall ARG2(a,b), sall ARG2(a,b), _LTOG sal ARG2(b,a))
-#define SAL_W(a, b) CHOICE(salw ARG2(a,b), salw ARG2(a,b), _WTOG sal ARG2(b,a))
-#define SAL_B(a, b) CHOICE(salb ARG2(a,b), salb ARG2(a,b), salb ARG2(b,a))
-#define SAR_L(a, b) CHOICE(sarl ARG2(a,b), sarl ARG2(a,b), _LTOG sar ARG2(b,a))
-#define SAR_W(a, b) CHOICE(sarw ARG2(a,b), sarw ARG2(a,b), _WTOG sar ARG2(b,a))
-#define SAR_B(a, b) CHOICE(sarb ARG2(a,b), sarb ARG2(a,b), sarb ARG2(b,a))
-#define SBB_L(a, b) CHOICE(sbbl ARG2(a,b), sbbl ARG2(a,b), _LTOG sbb ARG2(b,a))
-#define SBB_W(a, b) CHOICE(sbbw ARG2(a,b), sbbw ARG2(a,b), _WTOG sbb ARG2(b,a))
-#define SBB_B(a, b) CHOICE(sbbb ARG2(a,b), sbbb ARG2(a,b), sbbb ARG2(b,a))
-#define SCAS_L CHOICE(scasl, scasl, _LTOG scas)
-#define SCAS_W CHOICE(scasw, scasw, _WTOG scas)
-#define SCAS_B CHOICE(scasb, scasb, scasb)
-#define SETA(a) CHOICE(seta a, seta a, seta a)
-#define SETAE(a) CHOICE(setae a, setae a, setae a)
-#define SETB(a) CHOICE(setb a, setb a, setb a)
-#define SETBE(a) CHOICE(setbe a, setbe a, setbe a)
-#define SETC(a) CHOICE(setc a, setb a, setb a)
-#define SETE(a) CHOICE(sete a, sete a, sete a)
-#define SETG(a) CHOICE(setg a, setg a, setg a)
-#define SETGE(a) CHOICE(setge a, setge a, setge a)
-#define SETL(a) CHOICE(setl a, setl a, setl a)
-#define SETLE(a) CHOICE(setle a, setle a, setle a)
-#define SETNA(a) CHOICE(setna a, setna a, setna a)
-#define SETNAE(a) CHOICE(setnae a, setnae a, setnae a)
-#define SETNB(a) CHOICE(setnb a, setnb a, setnb a)
-#define SETNBE(a) CHOICE(setnbe a, setnbe a, setnbe a)
-#define SETNC(a) CHOICE(setnc a, setnb a, setnb a)
-#define SETNE(a) CHOICE(setne a, setne a, setne a)
-#define SETNG(a) CHOICE(setng a, setng a, setng a)
-#define SETNGE(a) CHOICE(setnge a, setnge a, setnge a)
-#define SETNL(a) CHOICE(setnl a, setnl a, setnl a)
-#define SETNLE(a) CHOICE(setnle a, setnle a, setnle a)
-#define SETNO(a) CHOICE(setno a, setno a, setno a)
-#define SETNP(a) CHOICE(setnp a, setnp a, setnp a)
-#define SETNS(a) CHOICE(setns a, setns a, setna a)
-#define SETNZ(a) CHOICE(setnz a, setnz a, setnz a)
-#define SETO(a) CHOICE(seto a, seto a, seto a)
-#define SETP(a) CHOICE(setp a, setp a, setp a)
-#define SETPE(a) CHOICE(setpe a, setpe a, setpe a)
-#define SETPO(a) CHOICE(setpo a, setpo a, setpo a)
-#define SETS(a) CHOICE(sets a, sets a, seta a)
-#define SETZ(a) CHOICE(setz a, setz a, setz a)
-#define SGDT(a) CHOICE(sgdt a, sgdt a, sgdt a)
-#define SIDT(a) CHOICE(sidt a, sidt a, sidt a)
-#define SHL_L(a, b) CHOICE(shll ARG2(a,b), shll ARG2(a,b), _LTOG shl ARG2(b,a))
-#define SHL_W(a, b) CHOICE(shlw ARG2(a,b), shlw ARG2(a,b), _WTOG shl ARG2(b,a))
-#define SHL_B(a, b) CHOICE(shlb ARG2(a,b), shlb ARG2(a,b), shlb ARG2(b,a))
-#define SHLD_L(a,b,c) CHOICE(shldl ARG3(a,b,c), shldl ARG3(a,b,c), _LTOG shld ARG3(c,b,a))
-#define SHLD2_L(a,b) CHOICE(shldl ARG2(a,b), shldl ARG3(CL,a,b), _LTOG shld ARG3(b,a,CL))
-#define SHLD_W(a,b,c) CHOICE(shldw ARG3(a,b,c), shldw ARG3(a,b,c), _WTOG shld ARG3(c,b,a))
-#define SHLD2_W(a,b) CHOICE(shldw ARG2(a,b), shldw ARG3(CL,a,b), _WTOG shld ARG3(b,a,CL))
-#define SHR_L(a, b) CHOICE(shrl ARG2(a,b), shrl ARG2(a,b), _LTOG shr ARG2(b,a))
-#define SHR_W(a, b) CHOICE(shrw ARG2(a,b), shrw ARG2(a,b), _WTOG shr ARG2(b,a))
-#define SHR_B(a, b) CHOICE(shrb ARG2(a,b), shrb ARG2(a,b), shrb ARG2(b,a))
-#define SHRD_L(a,b,c) CHOICE(shrdl ARG3(a,b,c), shrdl ARG3(a,b,c), _LTOG shrd ARG3(c,b,a))
-#define SHRD2_L(a,b) CHOICE(shrdl ARG2(a,b), shrdl ARG3(CL,a,b), _LTOG shrd ARG3(b,a,CL))
-#define SHRD_W(a,b,c) CHOICE(shrdw ARG3(a,b,c), shrdw ARG3(a,b,c), _WTOG shrd ARG3(c,b,a))
-#define SHRD2_W(a,b) CHOICE(shrdw ARG2(a,b), shrdw ARG3(CL,a,b), _WTOG shrd ARG3(b,a,CL))
-#define SLDT(a) CHOICE(sldt a, sldt a, sldt a)
-#define SMSW(a) CHOICE(smsw a, smsw a, smsw a)
-#define STC CHOICE(stc, stc, stc)
-#define STD CHOICE(std, std, std)
-#define STI CHOICE(sti, sti, sti)
-#define STOS_L CHOICE(stosl, stosl, _LTOG stos)
-#define STOS_W CHOICE(stosw, stosw, _WTOG stos)
-#define STOS_B CHOICE(stosb, stosb, stosb)
-#define STR(a) CHOICE(str a, str a, str a)
-#define SUB_L(a, b) CHOICE(subl ARG2(a,b), subl ARG2(a,b), _LTOG sub ARG2(b,a))
-#define SUB_W(a, b) CHOICE(subw ARG2(a,b), subw ARG2(a,b), _WTOG sub ARG2(b,a))
-#define SUB_B(a, b) CHOICE(subb ARG2(a,b), subb ARG2(a,b), subb ARG2(b,a))
-#define TEST_L(a, b) CHOICE(testl ARG2(a,b), testl ARG2(a,b), _LTOG test ARG2(b,a))
-#define TEST_W(a, b) CHOICE(testw ARG2(a,b), testw ARG2(a,b), _WTOG test ARG2(b,a))
-#define TEST_B(a, b) CHOICE(testb ARG2(a,b), testb ARG2(a,b), testb ARG2(b,a))
-#define VERR(a) CHOICE(verr a, verr a, verr a)
-#define VERW(a) CHOICE(verw a, verw a, verw a)
-#define WAIT CHOICE(wait, wait, wait)
-#define XCHG_L(a, b) CHOICE(xchgl ARG2(a,b), xchgl ARG2(a,b), _LTOG xchg ARG2(b,a))
-#define XCHG_W(a, b) CHOICE(xchgw ARG2(a,b), xchgw ARG2(a,b), _WTOG xchg ARG2(b,a))
-#define XCHG_B(a, b) CHOICE(xchgb ARG2(a,b), xchgb ARG2(a,b), xchgb ARG2(b,a))
-#define XLAT CHOICE(xlat, xlat, xlat)
-#define XOR_L(a, b) CHOICE(xorl ARG2(a,b), xorl ARG2(a,b), _LTOG xor ARG2(b,a))
-#define XOR_W(a, b) CHOICE(xorw ARG2(a,b), xorw ARG2(a,b), _WTOG xor ARG2(b,a))
-#define XOR_B(a, b) CHOICE(xorb ARG2(a,b), xorb ARG2(a,b), xorb ARG2(b,a))
-
-
-/* Floating Point Instructions */
-#define F2XM1 CHOICE(f2xm1, f2xm1, f2xm1)
-#define FABS CHOICE(fabs, fabs, fabs)
-#define FADD_D(a) CHOICE(faddl a, faddl a, faddd a)
-#define FADD_S(a) CHOICE(fadds a, fadds a, fadds a)
-#define FADD2(a, b) CHOICE(fadd ARG2(a,b), fadd ARG2(a,b), fadd ARG2(b,a))
-#define FADDP(a, b) CHOICE(faddp ARG2(a,b), faddp ARG2(a,b), faddp ARG2(b,a))
-#define FIADD_L(a) CHOICE(fiaddl a, fiaddl a, fiaddl a)
-#define FIADD_W(a) CHOICE(fiadd a, fiadds a, fiadds a)
-#define FBLD(a) CHOICE(fbld a, fbld a, fbld a)
-#define FBSTP(a) CHOICE(fbstp a, fbstp a, fbstp a)
-#define FCHS CHOICE(fchs, fchs, fchs)
-#define FCLEX CHOICE(fclex, wait; fnclex, wait; fclex)
-#define FNCLEX CHOICE(fnclex, fnclex, fclex)
-#define FCOM(a) CHOICE(fcom a, fcom a, fcom a)
-#define FCOM_D(a) CHOICE(fcoml a, fcoml a, fcomd a)
-#define FCOM_S(a) CHOICE(fcoms a, fcoms a, fcoms a)
-#define FCOMP(a) CHOICE(fcomp a, fcomp a, fcomp a)
-#define FCOMP_D(a) CHOICE(fcompl a, fcompl a, fcompd a)
-#define FCOMP_S(a) CHOICE(fcomps a, fcomps a, fcomps a)
-#define FCOMPP CHOICE(fcompp, fcompp, fcompp)
-#define FCOS CHOICE(fcos, fcos, fcos)
-#define FDECSTP CHOICE(fdecstp, fdecstp, fdecstp)
-#define FDIV_D(a) CHOICE(fdivl a, fdivl a, fdivd a)
-#define FDIV_S(a) CHOICE(fdivs a, fdivs a, fdivs a)
-#define FDIV2(a, b) CHOICE(fdiv ARG2(a,b), fdiv ARG2(a,b), fdiv ARG2(b,a))
-#define FDIVP(a, b) CHOICE(fdivp ARG2(a,b), fdivp ARG2(a,b), fdivp ARG2(b,a))
-#define FIDIV_L(a) CHOICE(fidivl a, fidivl a, fidivl a)
-#define FIDIV_W(a) CHOICE(fidiv a, fidivs a, fidivs a)
-#define FDIVR_D(a) CHOICE(fdivrl a, fdivrl a, fdivrd a)
-#define FDIVR_S(a) CHOICE(fdivrs a, fdivrs a, fdivrs a)
-#define FDIVR2(a, b) CHOICE(fdivr ARG2(a,b), fdivr ARG2(a,b), fdivr ARG2(b,a))
-#define FDIVRP(a, b) CHOICE(fdivrp ARG2(a,b), fdivrp ARG2(a,b), fdivrp ARG2(b,a))
-#define FIDIVR_L(a) CHOICE(fidivrl a, fidivrl a, fidivrl a)
-#define FIDIVR_W(a) CHOICE(fidivr a, fidivrs a, fidivrs a)
-#define FFREE(a) CHOICE(ffree a, ffree a, ffree a)
-#define FICOM_L(a) CHOICE(ficoml a, ficoml a, ficoml a)
-#define FICOM_W(a) CHOICE(ficom a, ficoms a, ficoms a)
-#define FICOMP_L(a) CHOICE(ficompl a, ficompl a, ficompl a)
-#define FICOMP_W(a) CHOICE(ficomp a, ficomps a, ficomps a)
-#define FILD_Q(a) CHOICE(fildll a, fildq a, fildq a)
-#define FILD_L(a) CHOICE(fildl a, fildl a, fildl a)
-#define FILD_W(a) CHOICE(fild a, filds a, filds a)
-#define FINCSTP CHOICE(fincstp, fincstp, fincstp)
-#define FINIT CHOICE(finit, wait; fninit, wait; finit)
-#define FNINIT CHOICE(fninit, fninit, finit)
-#define FIST_L(a) CHOICE(fistl a, fistl a, fistl a)
-#define FIST_W(a) CHOICE(fist a, fists a, fists a)
-#define FISTP_Q(a) CHOICE(fistpll a, fistpq a, fistpq a)
-#define FISTP_L(a) CHOICE(fistpl a, fistpl a, fistpl a)
-#define FISTP_W(a) CHOICE(fistp a, fistps a, fistps a)
-#define FLD_X(a) CHOICE(fldt a, fldt a, fldx a) /* 80 bit data type! */
-#define FLD_D(a) CHOICE(fldl a, fldl a, fldd a)
-#define FLD_S(a) CHOICE(flds a, flds a, flds a)
-#define FLD1 CHOICE(fld1, fld1, fld1)
-#define FLDL2T CHOICE(fldl2t, fldl2t, fldl2t)
-#define FLDL2E CHOICE(fldl2e, fldl2e, fldl2e)
-#define FLDPI CHOICE(fldpi, fldpi, fldpi)
-#define FLDLG2 CHOICE(fldlg2, fldlg2, fldlg2)
-#define FLDLN2 CHOICE(fldln2, fldln2, fldln2)
-#define FLDZ CHOICE(fldz, fldz, fldz)
-#define FLDCW(a) CHOICE(fldcw a, fldcw a, fldcw a)
-#define FLDENV(a) CHOICE(fldenv a, fldenv a, fldenv a)
-#define FMUL_S(a) CHOICE(fmuls a, fmuls a, fmuls a)
-#define FMUL_D(a) CHOICE(fmull a, fmull a, fmuld a)
-#define FMUL2(a, b) CHOICE(fmul ARG2(a,b), fmul ARG2(a,b), fmul ARG2(b,a))
-#define FMULP(a, b) CHOICE(fmulp ARG2(a,b), fmulp ARG2(a,b), fmulp ARG2(b,a))
-#define FIMUL_L(a) CHOICE(fimull a, fimull a, fimull a)
-#define FIMUL_W(a) CHOICE(fimul a, fimuls a, fimuls a)
-#define FNOP CHOICE(fnop, fnop, fnop)
-#define FPATAN CHOICE(fpatan, fpatan, fpatan)
-#define FPREM CHOICE(fprem, fprem, fprem)
-#define FPREM1 CHOICE(fprem1, fprem1, fprem1)
-#define FPTAN CHOICE(fptan, fptan, fptan)
-#define FRNDINT CHOICE(frndint, frndint, frndint)
-#define FRSTOR(a) CHOICE(frstor a, frstor a, frstor a)
-#define FSAVE(a) CHOICE(fsave a, wait; fnsave a, wait; fsave a)
-#define FNSAVE(a) CHOICE(fnsave a, fnsave a, fsave a)
-#define FSCALE CHOICE(fscale, fscale, fscale)
-#define FSIN CHOICE(fsin, fsin, fsin)
-#define FSINCOS CHOICE(fsincos, fsincos, fsincos)
-#define FSQRT CHOICE(fsqrt, fsqrt, fsqrt)
-#define FST_D(a) CHOICE(fstl a, fstl a, fstd a)
-#define FST_S(a) CHOICE(fsts a, fsts a, fsts a)
-#define FSTP_X(a) CHOICE(fstpt a, fstpt a, fstpx a)
-#define FSTP_D(a) CHOICE(fstpl a, fstpl a, fstpd a)
-#define FSTP_S(a) CHOICE(fstps a, fstps a, fstps a)
-#define FSTCW(a) CHOICE(fstcw a, wait; fnstcw a, wait; fstcw a)
-#define FNSTCW(a) CHOICE(fnstcw a, fnstcw a, fstcw a)
-#define FSTENV(a) CHOICE(fstenv a, wait; fnstenv a, fstenv a)
-#define FNSTENV(a) CHOICE(fnstenv a, fnstenv a, fstenv a)
-#define FSTSW(a) CHOICE(fstsw a, wait; fnstsw a, wait; fstsw a)
-#define FNSTSW(a) CHOICE(fnstsw a, fnstsw a, fstsw a)
-#define FSUB_S(a) CHOICE(fsubs a, fsubs a, fsubs a)
-#define FSUB_D(a) CHOICE(fsubl a, fsubl a, fsubd a)
-#define FSUB2(a, b) CHOICE(fsub ARG2(a,b), fsub ARG2(a,b), fsub ARG2(b,a))
-#define FSUBP(a, b) CHOICE(fsubp ARG2(a,b), fsubp ARG2(a,b), fsubp ARG2(b,a))
-#define FISUB_L(a) CHOICE(fisubl a, fisubl a, fisubl a)
-#define FISUB_W(a) CHOICE(fisub a, fisubs a, fisubs a)
-#define FSUBR_S(a) CHOICE(fsubrs a, fsubrs a, fsubrs a)
-#define FSUBR_D(a) CHOICE(fsubrl a, fsubrl a, fsubrd a)
-#define FSUBR2(a, b) CHOICE(fsubr ARG2(a,b), fsubr ARG2(a,b), fsubr ARG2(b,a))
-#define FSUBRP(a, b) CHOICE(fsubrp ARG2(a,b), fsubrp ARG2(a,b), fsubrp ARG2(b,a))
-#define FISUBR_L(a) CHOICE(fisubrl a, fisubrl a, fisubrl a)
-#define FISUBR_W(a) CHOICE(fisubr a, fisubrs a, fisubrs a)
-#define FTST CHOICE(ftst, ftst, ftst)
-#define FUCOM(a) CHOICE(fucom a, fucom a, fucom a)
-#define FUCOMP(a) CHOICE(fucomp a, fucomp a, fucomp a)
-#define FUCOMPP CHOICE(fucompp, fucompp, fucompp)
-#define FWAIT CHOICE(wait, wait, wait)
-#define FXAM CHOICE(fxam, fxam, fxam)
-#define FXCH(a) CHOICE(fxch a, fxch a, fxch a)
-#define FXTRACT CHOICE(fxtract, fxtract, fxtract)
-#define FYL2X CHOICE(fyl2x, fyl2x, fyl2x)
-#define FYL2XP1 CHOICE(fyl2xp1, fyl2xp1, fyl2xp1)
-
-#endif /* __ASSYNTAX_H__ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/Imakefile
deleted file mode 100644
index 00309690e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/Imakefile
+++ /dev/null
@@ -1,242 +0,0 @@
-XCOMM $XConsortium: Imakefile /main/12 1996/10/27 11:06:35 kaleb $
-
-
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/Imakefile,v 3.61 2003/10/07 22:30:00 herrb Exp $
-
-#include <Server.tmpl>
-
-#if defined(KFreeBSDArchitecture) || defined(NetBSDArchitecture) || defined(OpenBSDArchitecture)
-#if BuildXInputExt
-# if JoystickSupport
- JOYSTICK_SRC = bsd_jstk.c
-# endif
-# if DoLoadableServer
-SHARED_CFLAGS = PositionIndependentCFlags
-# else
-# if JoystickSupport
- JOYSTICK_OBJ = bsd_jstk.o
-# endif
-# endif
-#endif
-#endif
-
-#if defined(NetBSDArchitecture) \
- && ((OSMajorVersion == 1 && OSMinorVersion >= 1) || OSMajorVersion >= 2)
-# if defined(AlphaArchitecture)
- IOPERMDEFINES = -DUSE_ALPHA_PIO
-# elif defined(ArcArchitecture)
- IOPERMDEFINES = -DUSE_ARC_MMAP
-# elif defined(Arm32Architecture)
- IOPERMDEFINES = -DUSE_ARM32_MMAP
-# elif defined(PpcArchitecture) || \
- defined(Sparc64Architecture)
- IOPERM_SRC = ioperm_noop.c
- IOPERM_OBJ = ioperm_noop.o
-# else
- IOPERMDEFINES = -DUSE_I386_IOPL
-# endif
-#elif defined(OpenBSDArchitecture)
-# if defined(i386Architecture)
- IOPERMDEFINES = -DUSE_I386_IOPL
-# elif defined(AMD64Architecture)
- IOPERMDEFINES = -DUSE_AMD64_IOPL
-# else
- IOPERM_SRC = ioperm_noop.c
- IOPERM_OBJ = ioperm_noop.o
-# endif
-#elif defined(KFreeBSDArchitecture)
-# if defined(i386Architecture) || defined(AMD64Architecture)
- IOPERMDEFINES = -DUSE_DEV_IO
-# elif defined(AlphaBsdArchitecture)
- IOPERMDEFINES = -DUSE_ALPHA_PORTS
-# else
- IOPERM_SRC = ioperm_noop.c
- IOPERM_OBJ = ioperm_noop.o
-# endif
-#endif
-
-#if BuildXF86DRI
-DRI_SRC = sigio.c
-DRI_OBJ = sigio.o
-#endif
-
-MOUSESRC = bsd_mouse.c
-MOUSEOBJ = bsd_mouse.o
-
-KBDSRC = bsd_kbd.c bsd_KbdMap.c at_scancode.c
-KBDOBJ = bsd_kbd.o bsd_KbdMap.o at_scancode.o
-
-#if HasMTRRSupport
-MTRRDEFINES = -DHAS_MTRR_SUPPORT
-#endif
-
-#if defined(NetBSDArchitecture) && defined(HasMTRRBuiltin)
-MTRRDEFINES = -DHAS_MTRR_BUILTIN
-#endif
-
-SYSVIPCDEFINES = -DHAVE_SYSV_IPC
-
-#if UsbMouseSupport
-USBMOUSEDEFINES1 = -DUSBMOUSE_SUPPORT
-#if !HasLibUsb
-LIBUSBINCLUDES = -Ilibusb
-#define IHaveSubdirs
-SUBDIRS = libusb
-#else
-#if HasLibUsbHid
-USBMOUSEDEFINES2 = -DHAS_LIB_USB_HID
-#endif
-#endif
-#endif
-USBMOUSEDEFINES = $(USBMOUSEDEFINES1) $(USBMOUSEDEFINES2)
-
-#if (defined(OpenBSDArchitecture) || defined(NetBSDArchitecture)) && defined(i386Architecture)
-# if !defined(HasApmKqueue) || !HasApmKqueue
-APMSRC = bsd_apm.c
-APMOBJ = bsd_apm.o
-# else
-APMSRC = bsd_kqueue_apm.c
-APMOBJ = bsd_kqueue_apm.o
-# endif
-#else
-APMSRC = pm_noop.c
-APMOBJ = pm_noop.o
-#endif
-
-#if defined(KFreeBSDArchitecture) && (OSMajorVersion > 2)
-KMODSRC = bsd_kmod.c
-KMODOBJ = bsd_kmod.o
-#else
-KMODSRC = kmod_noop.c
-KMODOBJ = kmod_noop.o
-#endif
-
-#if defined(i386Architecture) || defined(ia64Architecture)
-RES_SRC=stdResource.c
-RES_OBJ=stdResource.o
-#else
-RES_SRC=bsdResource.c
-RES_OBJ=bsdResource.o
-#endif
-
-#if defined(AlphaArchitecture)
-AXP_SRC=bsd_ev56.c xf86Axp.c bsd_axp.c
-AXP_OBJ=bsd_ev56.o xf86Axp.o bsd_axp.o
-#endif
-
-#if (defined(KFreeBSDArchitecture) || defined(NetBSDArchitecture) || \
- defined(OpenBSDArchitecture)) && HasAgpGart
-AGP_SRC=lnx_agp.c
-AGP_OBJ=lnx_agp.o
-#else
-AGP_SRC=agp_noop.c
-AGP_OBJ=agp_noop.o
-#endif
-
-#if defined(i386Architecture) || defined(AMD64Architecture)
-VIDEO_SRC = i386_video.c
-VIDEO_OBJ = i386_video.o
-#elif defined(AlphaArchitecture)
-VIDEO_SRC = alpha_video.c
-VIDEO_OBJ = alpha_video.o
-#elif defined(PpcArchitecture)
-VIDEO_SRC = ppc_video.c
-VIDEO_OBJ = ppc_video.o
-#elif defined(Arm32Architecture)
-VIDEO_SRC = arm_video.c
-VIDEO_OBJ = arm_video.o
-#elif defined(SparcArchitecture) || defined(Sparc64Architecture)
-VIDEO_SRC = sparc64_video.c
-VIDEO_OBJ = sparc64_video.o
-#else
-#error Unknown architecture !
-#endif
-
-SRCS = bsd_init.c $(VIDEO_SRC) bsd_io.c bsd_VTsw.c \
- libc_wrapper.c $(IOPERM_SRC) std_kbdEv.c posix_tty.c $(MOUSESRC) \
- $(RES_SRC) stdPci.c vidmem.c $(JOYSTICK_SRC) sigio.c $(APMSRC) \
- $(AXP_SRC) $(KMODSRC) $(AGP_SRC) $(KBDSRC)
-
-OBJS = bsd_init.o $(VIDEO_OBJ) bsd_io.o bsd_VTsw.o \
- libc_wrapper.o $(IOPERM_OBJ) std_kbdEv.o posix_tty.o $(MOUSEOBJ) \
- $(RES_OBJ) stdPci.o vidmem.o $(JOYSTICK_OBJ) sigio.o $(APMOBJ) \
- $(AXP_OBJ) $(KMODOBJ) $(AGP_OBJ) $(KBDOBJ)
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(EXTINCSRC) -I$(SERVERSRC)/mi $(APINCLUDES) \
- $(LIBUSBINCLUDES) -I$(XF86OSSRC)/shared -I$(DRMSRCDIR)/shared-core
-
-CONSDEFINES = XFree86ConsoleDefines
-RESDEFINES = -DUSESTDRES
-
-#if defined(HasNetBSDApertureDriver) && HasNetBSDApertureDriver
-APDEFINES = -DHAS_APERTURE_DRV
-#endif
-
-DEFINES = $(CONSDEFINES) $(APDEFINES) $(IOPERMDEFINES) $(RESDEFINES) \
- $(MTRRDEFINES) $(USBMOUSEDEFINES) $(SYSVIPCDEFINES)
-
-#if defined(AlphaArchitecture)
-SpecialObjectRule(bsd_ev56.o, bsd_ev56.c, -mcpu=ev56)
-#endif
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-#if BuildXF86DRI
-#define IHaveSubdirs
-SUBDIRS = drm
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-#endif
-
-#if BuildXInputExt
-# if DoLoadableServer
-# if JoystickSupport
-AllTarget(bsd_jstk.o)
-#if 0
-InstallDynamicModule(bsd_jstk.o,$(MODULEDIR),input)
-#endif
-# endif
-# endif
-#endif
-
-#if !defined(NetBSDArchitecture) && !defined(OpenBSDArchitecture) || \
- !defined(i386Architecture)
-LinkSourceFile(pm_noop.c,../shared)
-#endif
-LinkSourceFile(ioperm_noop.c,../shared)
-LinkSourceFile(std_kbdEv.c,../shared)
-LinkSourceFile(at_scancode.c,../shared)
-LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(vidmem.c,../shared)
-LinkSourceFile(sigio.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-#if (defined(KFreeBSDArchitecture) || defined(NetBSDArchitecture) || \
- defined(OpenBSDArchitecture)) && HasAgpGart
-LinkSourceFile(lnx_agp.c,../linux)
-#else
-LinkSourceFile(agp_noop.c,../shared)
-#endif
-#if defined(AlphaArchitecture)
-LinkSourceFile(xf86Axp.c,../shared)
-#endif
-
-DependTarget()
-
-#if UsbMouseSupport && !HasLibUsb
-MakeSubdirs($(SUBDIRS))
-
-DependSubdirs($(SUBDIRS))
-#endif
-
-#if 0
-InstallDriverSDKDynamicModule(bsd_jstk.o,$(DRIVERSDKMODULEDIR))
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/alpha_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/alpha_video.c
deleted file mode 100644
index ca0f0f8e7..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/alpha_video.c
+++ /dev/null
@@ -1,735 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/alpha_video.c,v 1.6 2003/12/30 15:18:30 herrb Exp $ */
-/*
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Rich Murphey and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Rich Murphey and
- * David Wexelblat make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/* $XConsortium: bsd_video.c /main/10 1996/10/25 11:37:57 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-
-#include <sys/param.h>
-#ifndef __NetBSD__
-# include <sys/sysctl.h>
-# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-# include <machine/sysarch.h>
-# endif
-# else
-# include <machine/sysarch.h>
-#endif
-
-#include "xf86Axp.h"
-
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-#if defined(__NetBSD__) && !defined(MAP_FILE)
-#define MAP_FLAGS MAP_SHARED
-#else
-#define MAP_FLAGS (MAP_FILE | MAP_SHARED)
-#endif
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((caddr_t)-1)
-#endif
-
-axpDevice bsdGetAXP(void);
-
-#ifndef __NetBSD__
-extern unsigned long dense_base(void);
-
-static int axpSystem = -1;
-static unsigned long hae_thresh;
-static unsigned long hae_mask;
-static unsigned long bus_base;
-static unsigned long sparse_size;
-
-static unsigned long
-memory_base(void)
-{
- static unsigned long base = 0;
-
- if (base == 0) {
- size_t len = sizeof(base);
- int error;
-#ifdef __OpenBSD__
- int mib[3];
-
- mib[0] = CTL_MACHDEP;
- mib[1] = CPU_CHIPSET;
- mib[2] = CPU_CHIPSET_MEM;
-
- if ((error = sysctl(mib, 3, &base, &len, NULL, 0)) < 0)
-#else
- if ((error = sysctlbyname("hw.chipset.memory", &base, &len,
- 0, 0)) < 0)
-#endif
- FatalError("xf86MapVidMem: can't find memory\n");
- }
-
- return base;
-}
-
-static int
-has_bwx(void)
-{
- static int bwx = 0;
- size_t len = sizeof(bwx);
- int error;
-#ifdef __OpenBSD__
- int mib[3];
-
- mib[0] = CTL_MACHDEP;
- mib[1] = CPU_CHIPSET;
- mib[2] = CPU_CHIPSET_BWX;
-
- if ((error = sysctl(mib, 3, &bwx, &len, NULL, 0)) < 0)
- return FALSE;
- else
- return bwx;
-#else
- if ((error = sysctlbyname("hw.chipset.bwx", &bwx, &len, 0, 0)) < 0)
- return FALSE;
- else
- return bwx;
-#endif
-}
-#else /* __NetBSD__ */
-static unsigned long hae_thresh = (1UL << 24);
-static unsigned long hae_mask = 0xf8000000UL; /* XXX - should use xf86AXP.c */
-static struct alpha_bus_window *abw;
-static int abw_count = -1;
-
-static void
-init_abw(void)
-{
- if (abw_count < 0) {
- abw_count = alpha_bus_getwindows(ALPHA_BUS_TYPE_PCI_MEM, &abw);
- if (abw_count <= 0)
- FatalError("init_abw: alpha_bus_getwindows failed\n");
- }
-}
-
-static int
-has_bwx(void)
-{
- if (abw_count < 0)
- init_abw();
-
- xf86Msg(X_INFO, "has_bwx = %d\n",
- abw[0].abw_abst.abst_flags & ABST_BWX ? 1 : 0); /* XXXX */
- return abw[0].abw_abst.abst_flags & ABST_BWX;
-}
-
-static unsigned long
-dense_base(void)
-{
- if (abw_count < 0)
- init_abw();
-
- /* XXX check abst_flags for ABST_DENSE just to be safe? */
- xf86Msg(X_INFO, "dense base = %#lx\n",
- abw[0].abw_abst.abst_sys_start); /* XXXX */
- return abw[0].abw_abst.abst_sys_start;
-}
-
-static unsigned long
-memory_base(void)
-{
- if (abw_count < 0)
- init_abw();
-
- if (abw_count > 0) {
- xf86Msg(X_INFO, "memory base = %#lx\n",
- abw[1].abw_abst.abst_sys_start); /* XXXX */
- return abw[1].abw_abst.abst_sys_start;
- } else {
- xf86Msg(X_INFO, "no memory base\n"); /* XXXX */
- return 0;
- }
-}
-#endif /* __NetBSD__ */
-
-#define BUS_BASE dense_base()
-#define BUS_BASE_BWX memory_base()
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-#ifdef __OpenBSD__
-#define SYSCTL_MSG "\tCheck that you have set 'machdep.allowaperture=1'\n"\
- "\tin /etc/sysctl.conf and reboot your machine\n" \
- "\trefer to xf86(4) for details"
-#endif
-
-static Bool useDevMem = FALSE;
-static int devMemFd = -1;
-
-#ifdef HAS_APERTURE_DRV
-#define DEV_APERTURE "/dev/xf86"
-#endif
-#define DEV_MEM "/dev/mem"
-
-static pointer mapVidMem(int, unsigned long, unsigned long, int);
-static void unmapVidMem(int, pointer, unsigned long);
-static pointer mapVidMemSparse(int, unsigned long, unsigned long, int);
-static void unmapVidMemSparse(int, pointer, unsigned long);
-
-/*
- * Check if /dev/mem can be mmap'd. If it can't print a warning when
- * "warn" is TRUE.
- */
-static void
-checkDevMem(Bool warn)
-{
- static Bool devMemChecked = FALSE;
- int fd;
- pointer base;
-
- if (devMemChecked)
- return;
- devMemChecked = TRUE;
-
-#ifdef HAS_APERTURE_DRV
- /* Try the aperture driver first */
- if ((fd = open(DEV_APERTURE, O_RDWR)) >= 0) {
- /* Try to map a page at the VGA address */
- base = mmap((caddr_t)0, 4096, PROT_READ | PROT_WRITE,
- MAP_FLAGS, fd, (off_t)0xA0000 + BUS_BASE);
-
- if (base != MAP_FAILED) {
- munmap((caddr_t)base, 4096);
- devMemFd = fd;
- useDevMem = TRUE;
- xf86Msg(X_INFO, "checkDevMem: using aperture driver %s\n",
- DEV_APERTURE);
- return;
- } else {
- if (warn) {
- xf86Msg(X_WARNING, "checkDevMem: failed to mmap %s (%s)\n",
- DEV_APERTURE, strerror(errno));
- }
- }
- }
-#endif
- if ((fd = open(DEV_MEM, O_RDWR)) >= 0) {
- /* Try to map a page at the VGA address */
- base = mmap((caddr_t)0, 4096, PROT_READ | PROT_WRITE,
- MAP_FLAGS, fd, (off_t)0xA0000 + BUS_BASE);
-
- if (base != MAP_FAILED) {
- munmap((caddr_t)base, 4096);
- devMemFd = fd;
- useDevMem = TRUE;
- return;
- } else {
- if (warn) {
- xf86Msg(X_WARNING, "checkDevMem: failed to mmap %s (%s)\n",
- DEV_MEM, strerror(errno));
- }
- }
- }
- if (warn) {
-#ifndef HAS_APERTURE_DRV
- xf86Msg(X_WARNING, "checkDevMem: failed to open/mmap %s (%s)\n",
- DEV_MEM, strerror(errno));
-#else
-#ifndef __OpenBSD__
- xf86Msg(X_WARNING, "checkDevMem: failed to open %s and %s\n"
- "\t(%s)\n", DEV_APERTURE, DEV_MEM, strerror(errno));
-#else /* __OpenBSD__ */
- xf86Msg(X_WARNING, "checkDevMem: failed to open %s and %s\n"
- "\t(%s)\n%s", DEV_APERTURE, DEV_MEM, strerror(errno),
- SYSCTL_MSG);
-#endif /* __OpenBSD__ */
-#endif
- xf86ErrorF("\tlinear framebuffer access unavailable\n");
- }
- useDevMem = FALSE;
- return;
-}
-
-void
-xf86OSInitVidMem(VidMemInfoPtr pVidMem)
-{
- checkDevMem(TRUE);
- pVidMem->linearSupported = useDevMem;
-
- if (has_bwx()) {
- xf86Msg(X_PROBED,"Machine type has 8/16 bit access\n");
- pVidMem->mapMem = mapVidMem;
- pVidMem->unmapMem = unmapVidMem;
- } else {
- xf86Msg(X_PROBED,"Machine needs sparse mapping\n");
- pVidMem->mapMem = mapVidMemSparse;
- pVidMem->unmapMem = unmapVidMemSparse;
-#ifndef __NetBSD__
- if (axpSystem == -1)
- axpSystem = bsdGetAXP();
- hae_thresh = xf86AXPParams[axpSystem].hae_thresh;
- hae_mask = xf86AXPParams[axpSystem].hae_mask;
- sparse_size = xf86AXPParams[axpSystem].size;
-#endif /* __NetBSD__ */
- }
- pVidMem->initialised = TRUE;
-}
-
-static pointer
-mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- pointer base;
-
- checkDevMem(FALSE);
- Base = Base & ((1L<<32) - 1);
-
- if (useDevMem)
- {
- if (devMemFd < 0)
- {
- FatalError("xf86MapVidMem: failed to open %s (%s)\n",
- DEV_MEM, strerror(errno));
- }
- base = mmap((caddr_t)0, Size,
- (flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_FLAGS, devMemFd, (off_t)Base + BUS_BASE_BWX);
- if (base == MAP_FAILED)
- {
- FatalError("%s: could not mmap %s [s=%lx,a=%lx] (%s)\n",
- "xf86MapVidMem", DEV_MEM, Size, Base,
- strerror(errno));
- }
- return(base);
- }
-
- /* else, mmap /dev/vga */
- if ((unsigned long)Base < 0xA0000 || (unsigned long)Base >= 0xC0000)
- {
- FatalError("%s: Address 0x%lx outside allowable range\n",
- "xf86MapVidMem", Base);
- }
- base = mmap(0, Size,
- (flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_FLAGS, xf86Info.screenFd,
- (unsigned long)Base + BUS_BASE);
- if (base == MAP_FAILED)
- {
- FatalError("xf86MapVidMem: Could not mmap /dev/vga (%s)\n",
- strerror(errno));
- }
- return(base);
-}
-
-static void
-unmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- munmap((caddr_t)Base, Size);
-}
-
-/*
- * Read BIOS via mmap()ing DEV_MEM
- */
-
-int
-xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
- int Len)
-{
- unsigned char *ptr;
- int psize;
- int mlen;
-
- checkDevMem(TRUE);
- if (devMemFd == -1) {
- return(-1);
- }
-
- psize = xf86getpagesize();
- Offset += Base & (psize - 1);
- Base &= ~(psize - 1);
- mlen = (Offset + Len + psize - 1) & ~(psize - 1);
- ptr = (unsigned char *)mmap((caddr_t)0, mlen, PROT_READ,
- MAP_SHARED, devMemFd, (off_t)Base+BUS_BASE);
- if ((long)ptr == -1)
- {
- xf86Msg(X_WARNING,
- "xf86ReadBIOS: %s mmap[s=%x,a=%lx,o=%lx] failed (%s)\n",
- DEV_MEM, Len, Base, Offset, strerror(errno));
- return(-1);
- }
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3, "xf86ReadBIOS: BIOS at 0x%08x has signature 0x%04x\n",
- Base, ptr[0] | (ptr[1] << 8));
-#endif
- (void)memcpy(Buf, (void *)(ptr + Offset), Len);
- (void)munmap((caddr_t)ptr, mlen);
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3, "xf86ReadBIOS(%x, %x, Buf, %x)"
- "-> %02x %02x %02x %02x...\n",
- Base, Offset, Len, Buf[0], Buf[1], Buf[2], Buf[3]);
-#endif
- return(Len);
-}
-
-
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
-
-extern int ioperm(unsigned long from, unsigned long num, int on);
-
-Bool
-xf86EnableIO()
-{
- if (!ioperm(0, 65536, TRUE))
- return TRUE;
- return FALSE;
-}
-
-void
-xf86DisableIO()
-{
- return;
-}
-
-#endif /* __FreeBSD_kernel__ || __OpenBSD__ */
-
-#ifdef USE_ALPHA_PIO
-
-Bool
-xf86EnableIO()
-{
- alpha_pci_io_enable(1);
- return TRUE;
-}
-
-void
-xf86DisableIO()
-{
- alpha_pci_io_enable(0);
-}
-
-#endif /* USE_ALPHA_PIO */
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool
-xf86DisableInterrupts()
-{
-
- return(TRUE);
-}
-
-void
-xf86EnableInterrupts()
-{
- return;
-}
-
-
-#define vuip volatile unsigned int *
-
-static unsigned long msb_set = 0;
-static pointer memSBase = 0;
-static pointer memBase = 0;
-
-extern int readDense8(pointer Base, register unsigned long Offset);
-extern int readDense16(pointer Base, register unsigned long Offset);
-extern int readDense32(pointer Base, register unsigned long Offset);
-extern void
-writeDenseNB8(int Value, pointer Base, register unsigned long Offset);
-extern void
-writeDenseNB16(int Value, pointer Base, register unsigned long Offset);
-extern void
-writeDenseNB32(int Value, pointer Base, register unsigned long Offset);
-extern void
-writeDense8(int Value, pointer Base, register unsigned long Offset);
-extern void
-writeDense16(int Value, pointer Base, register unsigned long Offset);
-extern void
-writeDense32(int Value, pointer Base, register unsigned long Offset);
-
-static int readSparse8(pointer Base, register unsigned long Offset);
-static int readSparse16(pointer Base, register unsigned long Offset);
-static int readSparse32(pointer Base, register unsigned long Offset);
-static void
-writeSparseNB8(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparseNB16(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparseNB32(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparse8(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparse16(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparse32(int Value, pointer Base, register unsigned long Offset);
-
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-extern int sysarch(int, void *);
-#endif
-
-struct parms {
- u_int64_t hae;
-};
-
-#ifndef __NetBSD__
-static int
-sethae(u_int64_t hae)
-{
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-#ifndef ALPHA_SETHAE
-#define ALPHA_SETHAE 0
-#endif
- struct parms p;
- p.hae = hae;
- return (sysarch(ALPHA_SETHAE, (char *)&p));
-#endif
-#ifdef __OpenBSD__
- return -1;
-#endif
-}
-#endif /* __NetBSD__ */
-
-static pointer
-mapVidMemSparse(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- static Bool was_here = FALSE;
-
- if (!was_here) {
- was_here = TRUE;
-
- checkDevMem(FALSE);
-
- xf86WriteMmio8 = writeSparse8;
- xf86WriteMmio16 = writeSparse16;
- xf86WriteMmio32 = writeSparse32;
- xf86WriteMmioNB8 = writeSparseNB8;
- xf86WriteMmioNB16 = writeSparseNB16;
- xf86WriteMmioNB32 = writeSparseNB32;
- xf86ReadMmio8 = readSparse8;
- xf86ReadMmio16 = readSparse16;
- xf86ReadMmio32 = readSparse32;
-
- memBase = mmap((caddr_t)0, 0x100000000,
- PROT_READ | PROT_WRITE,
- MAP_SHARED, devMemFd,
- (off_t) BUS_BASE);
- memSBase = mmap((caddr_t)0, 0x100000000,
- PROT_READ | PROT_WRITE,
- MAP_SHARED, devMemFd,
- (off_t) BUS_BASE_BWX);
-
- if (memSBase == MAP_FAILED || memBase == MAP_FAILED) {
- FatalError("xf86MapVidMem: Could not mmap framebuffer (%s)\n",
- strerror(errno));
- }
- }
- return (pointer)((unsigned long)memBase + Base);
-}
-
-static void
-unmapVidMemSparse(int ScreenNum, pointer Base, unsigned long Size)
-{
-}
-
-static int
-readSparse8(pointer Base, register unsigned long Offset)
-{
- register unsigned long result, shift;
- register unsigned long msb;
- mem_barrier();
- Offset += (unsigned long)Base - (unsigned long)memBase;
- shift = (Offset & 0x3) << 3;
- if (Offset >= (hae_thresh)) {
- msb = Offset & hae_mask;
- Offset -= msb;
- if (msb_set != msb) {
-#ifndef __NetBSD__
- sethae(msb);
-#endif
- msb_set = msb;
- }
- }
- result = *(vuip) ((unsigned long)memSBase + (Offset << 5));
- result >>= shift;
- return 0xffUL & result;
-}
-
-static int
-readSparse16(pointer Base, register unsigned long Offset)
-{
- register unsigned long result, shift;
- register unsigned long msb;
-
- mem_barrier();
- Offset += (unsigned long)Base - (unsigned long)memBase;
- shift = (Offset & 0x2) << 3;
- if (Offset >= (hae_thresh)) {
- msb = Offset & hae_mask;
- Offset -= msb;
- if (msb_set != msb) {
-#ifndef __NetBSD__
- sethae(msb);
-#endif
- msb_set = msb;
- }
- }
- result = *(vuip)((unsigned long)memSBase+(Offset<<5)+(1<<(5-2)));
- result >>= shift;
- return 0xffffUL & result;
-}
-
-static int
-readSparse32(pointer Base, register unsigned long Offset)
-{
- mem_barrier();
- return *(vuip)((unsigned long)Base+(Offset));
-}
-
-static void
-writeSparse8(int Value, pointer Base, register unsigned long Offset)
-{
- register unsigned long msb;
- register unsigned int b = Value & 0xffU;
-
- write_mem_barrier();
- Offset += (unsigned long)Base - (unsigned long)memBase;
- if (Offset >= (hae_thresh)) {
- msb = Offset & hae_mask;
- Offset -= msb;
- if (msb_set != msb) {
-#ifndef __NetBSD__
- sethae(msb);
-#endif
- msb_set = msb;
- }
- }
- *(vuip) ((unsigned long)memSBase + (Offset << 5)) = b * 0x01010101;
-}
-
-static void
-writeSparse16(int Value, pointer Base, register unsigned long Offset)
-{
- register unsigned long msb;
- register unsigned int w = Value & 0xffffU;
-
- write_mem_barrier();
- Offset += (unsigned long)Base - (unsigned long)memBase;
- if (Offset >= (hae_thresh)) {
- msb = Offset & hae_mask;
- Offset -= msb;
- if (msb_set != msb) {
-#ifndef __NetBSD__
- sethae(msb);
-#endif
- msb_set = msb;
- }
- }
- *(vuip)((unsigned long)memSBase+(Offset<<5)+(1<<(5-2))) =
- w * 0x00010001;
-
-}
-
-static void
-writeSparse32(int Value, pointer Base, register unsigned long Offset)
-{
- write_mem_barrier();
- *(vuip)((unsigned long)Base + (Offset)) = Value;
- return;
-}
-
-static void
-writeSparseNB8(int Value, pointer Base, register unsigned long Offset)
-{
- register unsigned long msb;
- register unsigned int b = Value & 0xffU;
-
- Offset += (unsigned long)Base - (unsigned long)memBase;
- if (Offset >= (hae_thresh)) {
- msb = Offset & hae_mask;
- Offset -= msb;
- if (msb_set != msb) {
-#ifndef __NetBSD__
- sethae(msb);
-#endif
- msb_set = msb;
- }
- }
- *(vuip) ((unsigned long)memSBase + (Offset << 5)) = b * 0x01010101;
-}
-
-static void
-writeSparseNB16(int Value, pointer Base, register unsigned long Offset)
-{
- register unsigned long msb;
- register unsigned int w = Value & 0xffffU;
-
- Offset += (unsigned long)Base - (unsigned long)memBase;
- if (Offset >= (hae_thresh)) {
- msb = Offset & hae_mask ;
- Offset -= msb;
- if (msb_set != msb) {
-#ifndef __NetBSD__
- sethae(msb);
-#endif
- msb_set = msb;
- }
- }
- *(vuip)((unsigned long)memSBase+(Offset<<5)+(1<<(5-2))) =
- w * 0x00010001;
-}
-
-static void
-writeSparseNB32(int Value, pointer Base, register unsigned long Offset)
-{
- *(vuip)((unsigned long)Base + (Offset)) = Value;
- return;
-}
-
-void (*xf86WriteMmio8)(int Value, pointer Base, unsigned long Offset)
- = writeDense8;
-void (*xf86WriteMmio16)(int Value, pointer Base, unsigned long Offset)
- = writeDense16;
-void (*xf86WriteMmio32)(int Value, pointer Base, unsigned long Offset)
- = writeDense32;
-void (*xf86WriteMmioNB8)(int Value, pointer Base, unsigned long Offset)
- = writeDenseNB8;
-void (*xf86WriteMmioNB16)(int Value, pointer Base, unsigned long Offset)
- = writeDenseNB16;
-void (*xf86WriteMmioNB32)(int Value, pointer Base, unsigned long Offset)
- = writeDenseNB32;
-int (*xf86ReadMmio8)(pointer Base, unsigned long Offset)
- = readDense8;
-int (*xf86ReadMmio16)(pointer Base, unsigned long Offset)
- = readDense16;
-int (*xf86ReadMmio32)(pointer Base, unsigned long Offset)
- = readDense32;
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/arm_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/arm_video.c
deleted file mode 100644
index 98fb8f993..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/arm_video.c
+++ /dev/null
@@ -1,690 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/arm_video.c,v 1.1tsi Exp $ */
-/*
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Rich Murphey and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Rich Murphey and
- * David Wexelblat make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/*
- * The ARM32 code here carries the following copyright:
- *
- * Copyright 1997
- * Digital Equipment Corporation. All rights reserved.
- * This software is furnished under license and may be used and copied only in
- * accordance with the following terms and conditions. Subject to these
- * conditions, you may download, copy, install, use, modify and distribute
- * this software in source and/or binary form. No title or ownership is
- * transferred hereby.
- *
- * 1) Any source code used, modified or distributed must reproduce and retain
- * this copyright notice and list of conditions as they appear in the
- * source file.
- *
- * 2) No right is granted to use any trade name, trademark, or logo of Digital
- * Equipment Corporation. Neither the "Digital Equipment Corporation"
- * name nor any trademark or logo of Digital Equipment Corporation may be
- * used to endorse or promote products derived from this software without
- * the prior written permission of Digital Equipment Corporation.
- *
- * 3) This software is provided "AS-IS" and any express or implied warranties,
- * including but not limited to, any implied warranties of merchantability,
- * fitness for a particular purpose, or non-infringement are disclaimed.
- * In no event shall DIGITAL be liable for any damages whatsoever, and in
- * particular, DIGITAL shall not be liable for special, indirect,
- * consequential, or incidental damages or damages for lost profits, loss
- * of revenue or loss of use, whether such damages arise in contract,
- * negligence, tort, under statute, in equity, at law or otherwise, even
- * if advised of the possibility of such damage.
- *
- */
-
-/* $XConsortium: bsd_video.c /main/10 1996/10/25 11:37:57 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-#ifdef __arm32__
-#include "machine/devmap.h"
-struct memAccess
-{
- int ioctl;
- struct map_info memInfo;
- pointer regionVirtBase;
- Bool Checked;
- Bool OK;
-};
-
-static pointer xf86MapInfoMap();
-static void xf86MapInfoUnmap();
-static struct memAccess *checkMapInfo();
-extern int vgaPhysLinearBase;
-
-/* A memAccess structure is needed for each possible region */
-struct memAccess vgaMemInfo = { CONSOLE_GET_MEM_INFO, NULL, NULL,
- FALSE, FALSE };
-struct memAccess linearMemInfo = { CONSOLE_GET_LINEAR_INFO, NULL, NULL,
- FALSE, FALSE };
-struct memAccess ioMemInfo = { CONSOLE_GET_IO_INFO, NULL, NULL,
- FALSE, FALSE };
-#endif /* __arm32__ */
-
-#if defined(__NetBSD__) && !defined(MAP_FILE)
-#define MAP_FLAGS MAP_SHARED
-#else
-#define MAP_FLAGS (MAP_FILE | MAP_SHARED)
-#endif
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((caddr_t)-1)
-#endif
-
-
-#define BUS_BASE 0L
-#define BUS_BASE_BWX 0L
-
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-static Bool useDevMem = FALSE;
-static int devMemFd = -1;
-
-#define DEV_MEM "/dev/mem"
-
-static pointer mapVidMem(int, unsigned long, unsigned long, int);
-static void unmapVidMem(int, pointer, unsigned long);
-
-/*
- * Check if /dev/mem can be mmap'd. If it can't print a warning when
- * "warn" is TRUE.
- */
-static void
-checkDevMem(Bool warn)
-{
- static Bool devMemChecked = FALSE;
- int fd;
- pointer base;
-
- if (devMemChecked)
- return;
- devMemChecked = TRUE;
-
- if ((fd = open(DEV_MEM, O_RDWR)) >= 0)
- {
- /* Try to map a page at the VGA address */
- base = mmap((caddr_t)0, 4096, PROT_READ | PROT_WRITE,
- MAP_FLAGS, fd, (off_t)0xA0000 + BUS_BASE);
-
- if (base != MAP_FAILED)
- {
- munmap((caddr_t)base, 4096);
- devMemFd = fd;
- useDevMem = TRUE;
- return;
- } else {
- /* This should not happen */
- if (warn)
- {
- xf86Msg(X_WARNING, "checkDevMem: failed to mmap %s (%s)\n",
- DEV_MEM, strerror(errno));
- }
- useDevMem = FALSE;
- return;
- }
- }
- if (warn)
- {
- xf86Msg(X_WARNING, "checkDevMem: failed to open %s (%s)\n",
- DEV_MEM, strerror(errno));
- }
- useDevMem = FALSE;
- return;
-}
-
-void
-xf86OSInitVidMem(VidMemInfoPtr pVidMem)
-{
-
- checkDevMem(TRUE);
- pVidMem->linearSupported = useDevMem;
- pVidMem->mapMem = armMapVidMem;
- pVidMem->unmapVidMem = armUnmapVidMem;
-
- pVidMem->initialised = TRUE;
-}
-
-static pointer
-mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- pointer base;
-
- checkDevMem(FALSE);
-
- if (useDevMem)
- {
- if (devMemFd < 0)
- {
- FatalError("xf86MapVidMem: failed to open %s (%s)\n",
- DEV_MEM, strerror(errno));
- }
- base = mmap((caddr_t)0, Size,
- (flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_FLAGS, devMemFd, (off_t)Base + BUS_BASE_BWX);
- if (base == MAP_FAILED)
- {
- FatalError("%s: could not mmap %s [s=%x,a=%x] (%s)\n",
- "xf86MapVidMem", DEV_MEM, Size, Base,
- strerror(errno));
- }
- return(base);
- }
-
- /* else, mmap /dev/vga */
- if ((unsigned long)Base < 0xA0000 || (unsigned long)Base >= 0xC0000)
- {
- FatalError("%s: Address 0x%x outside allowable range\n",
- "xf86MapVidMem", Base);
- }
- base = mmap(0, Size,
- (flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_FLAGS, xf86Info.screenFd,
- (unsigned long)Base - 0xA0000);
- if (base == MAP_FAILED)
- {
- FatalError("xf86MapVidMem: Could not mmap /dev/vga (%s)\n",
- strerror(errno));
- }
- return(base);
-}
-
-static void
-unmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- munmap((caddr_t)Base, Size);
-}
-
-/*
- * Read BIOS via mmap()ing DEV_MEM
- */
-
-int
-xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
- int Len)
-{
- unsigned char *ptr;
- int psize;
- int mlen;
-
- checkDevMem(TRUE);
- if (devMemFd == -1) {
- return(-1);
- }
-
- psize = xf86getpagesize();
- Offset += Base & (psize - 1);
- Base &= ~(psize - 1);
- mlen = (Offset + Len + psize - 1) & ~(psize - 1);
- ptr = (unsigned char *)mmap((caddr_t)0, mlen, PROT_READ,
- MAP_SHARED, devMemFd, (off_t)Base+BUS_BASE);
- if ((long)ptr == -1)
- {
- xf86Msg(X_WARNING,
- "xf86ReadBIOS: %s mmap[s=%x,a=%x,o=%x] failed (%s)\n",
- DEV_MEM, Len, Base, Offset, strerror(errno));
- return(-1);
- }
-#ifdef DEBUG
- ErrorF("xf86ReadBIOS: BIOS at 0x%08x has signature 0x%04x\n",
- Base, ptr[0] | (ptr[1] << 8));
-#endif
- (void)memcpy(Buf, (void *)(ptr + Offset), Len);
- (void)munmap((caddr_t)ptr, mlen);
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3, "xf86ReadBIOS(%x, %x, Buf, %x)"
- "-> %02x %02x %02x %02x...\n",
- Base, Offset, Len, Buf[0], Buf[1], Buf[2], Buf[3]);
-#endif
- return(Len);
-}
-
-
-/* XXX This needs to be updated for the ND */
-
-/*
-** Find out whether the console driver provides memory mapping information
-** for the specified region and return the map_info pointer. Print a warning if required.
-*/
-static struct memAccess *
-checkMapInfo(Bool warn, int Region)
-{
- struct memAccess *memAccP;
-
- switch (Region)
- {
- case VGA_REGION:
- memAccP = &vgaMemInfo;
- break;
-
- case LINEAR_REGION:
- memAccP = &linearMemInfo;
- break;
-
- case MMIO_REGION:
- memAccP = &ioMemInfo;
- break;
-
- default:
- return NULL;
- break;
- }
-
- if(!memAccP->Checked)
- {
- if(ioctl(xf86Info.screenFd, memAccP->ioctl, &(memAccP->memInfo)) == -1)
- {
- if(warn)
- {
- xf86Msg(X_WARNING,
- "checkMapInfo: failed to get map info for region %d\n\t(%s)\n",
- Region, strerror(errno));
- }
- }
- else
- {
- if(memAccP->memInfo.u.map_info_mmap.map_offset
- != MAP_INFO_UNKNOWN)
- memAccP->OK = TRUE;
- }
- memAccP->Checked = TRUE;
- }
- if (memAccP->OK)
- {
- return memAccP;
- }
- else
- {
- return NULL;
- }
-}
-
-static pointer
-xf86MapInfoMap(struct memAccess *memInfoP, pointer Base, unsigned long Size)
-{
- struct map_info *mapInfoP = &(memInfoP->memInfo);
-
- if (mapInfoP->u.map_info_mmap.map_size == MAP_INFO_UNKNOWN)
- {
- Size = (unsigned long)Base + Size;
- }
- else
- {
- Size = mapInfoP->u.map_info_mmap.map_size;
- }
-
- switch(mapInfoP->method)
- {
- case MAP_MMAP:
- /* Need to remap if size is unknown because we may not have
- mapped the whole region initially */
- if(memInfoP->regionVirtBase == NULL ||
- mapInfoP->u.map_info_mmap.map_size == MAP_INFO_UNKNOWN)
- {
- if((memInfoP->regionVirtBase =
- mmap((caddr_t)0,
- Size,
- PROT_READ | PROT_WRITE,
- MAP_SHARED,
- xf86Info.screenFd,
- (unsigned long)mapInfoP->u.map_info_mmap.map_offset))
- == (pointer)-1)
- {
- FatalError("xf86MapInfoMap: Failed to map memory at 0x%x\n\t%s\n",
- mapInfoP->u.map_info_mmap.map_offset, strerror(errno));
- }
- if(mapInfoP->u.map_info_mmap.internal_offset > 0)
- memInfoP->regionVirtBase +=
- mapInfoP->u.map_info_mmap.internal_offset;
- }
- break;
-
- default:
- FatalError("xf86MapInfoMap: Unsuported mapping method\n");
- break;
- }
-
- return (pointer)((int)memInfoP->regionVirtBase + (int)Base);
-}
-
-static void
-xf86MapInfoUnmap(struct memAccess *memInfoP, unsigned long Size)
-{
- struct map_info *mapInfoP = &(memInfoP->memInfo);
-
- switch(mapInfoP->method)
- {
- case MAP_MMAP:
- if(memInfoP->regionVirtBase != NULL)
- {
- if(mapInfoP->u.map_info_mmap.map_size != MAP_INFO_UNKNOWN)
- Size = mapInfoP->u.map_info_mmap.map_size;
- munmap((caddr_t)memInfoP->regionVirtBase, Size);
- memInfoP->regionVirtBase = NULL;
- }
- break;
- default:
- FatalError("xf86MapInfoMap: Unsuported mapping method\n");
- break;
- }
-}
-
-static pointer
-armMapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- struct memAccess *memInfoP;
-
- if((memInfoP = checkMapInfo(FALSE, Region)) != NULL)
- {
- /*
- ** xf86 passes in a physical address offset from the start
- ** of physical memory, but xf86MapInfoMap expects an
- ** offset from the start of the specified region - it gets
- ** the physical address of the region from the display driver.
- */
- switch(Region)
- {
- case LINEAR_REGION:
- if (vgaPhysLinearBase)
- {
- Base -= vgaPhysLinearBase;
- }
- break;
- case VGA_REGION:
- Base -= 0xA0000;
- break;
- }
-
- base = xf86MapInfoMap(memInfoP, Base, Size);
- return (base);
- }
- return mapVidMem(ScreenNum, Base, Size, flags);
-}
-
-static void
-armUnmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- struct memAccess *memInfoP;
-
- if((memInfoP = checkMapInfo(FALSE, Region)) != NULL)
- {
- xf86MapInfoUnmap(memInfoP, Base, Size);
- }
- unmapVidMem(ScreenNum, Base, Size);
-}
-
-#ifdef USE_DEV_IO
-static int IoFd = -1;
-
-Bool
-xf86EnableIO()
-{
- if (IoFd >= 0)
- return TRUE;
-
- if ((IoFd = open("/dev/io", O_RDWR)) == -1)
- {
- xf86Msg(X_WARNING,"xf86EnableIO: "
- "Failed to open /dev/io for extended I/O\n");
- return FALSE;
- }
- return TRUE;
-}
-
-void
-xf86DisableIO()
-{
- if (IoFd < 0)
- return;
-
- close(IoFd);
- IoFd = -1;
- return;
-}
-
-#endif
-
-#if defined(USE_ARC_MMAP) || defined(__arm32__)
-
-Bool
-xf86EnableIO()
-{
- int fd;
- pointer base;
-
- if (ExtendedEnabled)
- return TRUE;
-
- if ((fd = open("/dev/ttyC0", O_RDWR)) >= 0) {
- /* Try to map a page at the pccons I/O space */
- base = (pointer)mmap((caddr_t)0, 65536, PROT_READ | PROT_WRITE,
- MAP_FLAGS, fd, (off_t)0x0000);
-
- if (base != (pointer)-1) {
- IOPortBase = base;
- }
- else {
- xf86Msg(X_WARNING,"EnableIO: failed to mmap %s (%s)\n",
- "/dev/ttyC0", strerror(errno));
- return FALSE;
- }
- }
- else {
- xf86Msg("EnableIO: failed to open %s (%s)\n",
- "/dev/ttyC0", strerror(errno));
- return FALSE;
- }
-
- ExtendedEnabled = TRUE;
-
- return TRUE;
-}
-
-void
-xf86DisableIO()
-{
- return;
-}
-
-#endif /* USE_ARC_MMAP */
-
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool
-xf86DisableInterrupts()
-{
-
- return(TRUE);
-}
-
-void
-xf86EnableInterrupts()
-{
-
- return;
-}
-
-
-
-#if 0
-/*
- * XXX This is here for reference. It needs to be handled differently for the
- * ND.
- */
-#if defined(USE_ARC_MMAP) || defined(__arm32__)
-
-#ifdef USE_ARM32_MMAP
-#define DEV_MEM_IOBASE 0x43000000
-#endif
-
-static Bool ScreenEnabled[MAXSCREENS];
-static Bool ExtendedEnabled = FALSE;
-static Bool InitDone = FALSE;
-
-Bool
-xf86EnableIOPorts(ScreenNum)
-int ScreenNum;
-{
- int i;
- int fd;
- pointer base;
-
-#ifdef __arm32__
- struct memAccess *memInfoP;
- int *Size;
-#endif
-
- ScreenEnabled[ScreenNum] = TRUE;
-
- if (ExtendedEnabled)
- return TRUE;
-
-#ifdef USE_ARC_MMAP
- if ((fd = open("/dev/ttyC0", O_RDWR)) >= 0) {
- /* Try to map a page at the pccons I/O space */
- base = (pointer)mmap((caddr_t)0, 65536, PROT_READ | PROT_WRITE,
- MAP_FLAGS, fd, (off_t)0x0000);
-
- if (base != (pointer)-1) {
- IOPortBase = base;
- }
- else {
- xf86Msg(X_ERROR,
- "EnableIOPorts: failed to mmap %s (%s)\n",
- "/dev/ttyC0", strerror(errno));
- }
- }
- else {
- xf86Msg(X_ERROR, "EnableIOPorts: failed to open %s (%s)\n",
- "/dev/ttyC0", strerror(errno));
- }
-#endif
-
-#ifdef __arm32__
- IOPortBase = (unsigned int)-1;
-
- if((memInfoP = checkMapInfo(TRUE, MMIO_REGION)) != NULL)
- {
- /*
- * xf86MapInfoMap maps an offset from the start of video IO
- * space (e.g. 0x3B0), but IOPortBase is expected to map to
- * physical address 0x000, so subtract the start of video I/O
- * space from the result. This is safe for now becase we
- * actually mmap the start of the page, then the start of video
- * I/O space is added as an internal offset.
- */
- IOPortBase = (unsigned int)xf86MapInfoMap(memInfoP,
- (caddr_t)0x0, 0L)
- - memInfoP->memInfo.u.map_info_mmap.internal_offset;
- ExtendedEnabled = TRUE;
- return TRUE;
- }
-#ifdef USE_ARM32_MMAP
- checkDevMem(TRUE);
-
- if (devMemFd >= 0 && useDevMem)
- {
- base = (pointer)mmap((caddr_t)0, 0x400, PROT_READ | PROT_WRITE,
- MAP_FLAGS, devMemFd, (off_t)DEV_MEM_IOBASE);
-
- if (base != (pointer)-1)
- IOPortBase = (unsigned int)base;
- }
-
- if (IOPortBase == (unsigned int)-1)
- {
- xf86Msg(X_WARNING,"xf86EnableIOPorts: failed to open mem device or map IO base. \n\
-Make sure you have the Aperture Driver installed, or a kernel built with the INSECURE option\n");
- return FALSE;
- }
-#else
- /* We don't have the IOBASE, so we can't map the address */
- xf86Msg(X_WARNING,"xf86EnableIOPorts: failed to open mem device or map IO base. \n\
-Try building the server with USE_ARM32_MMAP defined\n");
- return FALSE;
-#endif
-#endif
-
- ExtendedEnabled = TRUE;
-
- return TRUE;
-}
-
-void
-xf86DisableIOPorts(ScreenNum)
-int ScreenNum;
-{
- int i;
-#ifdef __arm32__
- struct memAccess *memInfoP;
-#endif
-
- ScreenEnabled[ScreenNum] = FALSE;
-
-#ifdef __arm32__
- if((memInfoP = checkMapInfo(FALSE, MMIO_REGION)) != NULL)
- {
- xf86MapInfoUnmap(memInfoP, 0);
- }
-#endif
-
-#ifdef USE_ARM32_MMAP
- if (!ExtendedEnabled)
- return;
-
- for (i = 0; i < MAXSCREENS; i++)
- if (ScreenEnabled[i])
- return;
-
- munmap((caddr_t)IOPortBase, 0x400);
- IOPortBase = (unsigned int)-1;
- ExtendedEnabled = FALSE;
-#endif
-
- return;
-}
-
-#endif /* USE_ARC_MMAP || USE_ARM32_MMAP */
-#endif
-
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsdResource.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsdResource.c
deleted file mode 100644
index d38230a83..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsdResource.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsdResource.c,v 1.6 2001/02/16 14:45:10 tsi Exp $ */
-
-/* Resource information code */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Privstr.h"
-#include "xf86Pci.h"
-#include "xf86Resources.h"
-#define NEED_OS_RAC_PROTOS
-#include "xf86_OSlib.h"
-
-/* Avoid Imakefile changes */
-#include "bus/Pci.h"
-
-resRange PciAvoid[] = {_PCI_AVOID_PC_STYLE, _END};
-
-#ifdef INCLUDE_XF86_NO_DOMAIN
-
-#if defined(__alpha__) || defined(__sparc64__) || defined(__amd64__)
-
-resPtr
-xf86BusAccWindowsFromOS(void)
-{
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-resPtr
-xf86PciBusAccWindowsFromOS(void)
-{
- resPtr ret = NULL;
- resRange range;
-
- /*
- * Only allow the upper half of the pci memory range to be used
- * for allocation. The lower half includes magic regions for DMA.
- * XXX this is not right for XP1000's and similar where we use the
- * region 0x40000000-0xbfffffff for DMA but this only matters if
- * the bios screws up the pci region mappings.
- */
- RANGE(range, 0x80000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-#ifdef INCLUDE_UNUSED
-
-resPtr
-xf86IsaBusAccWindowsFromOS(void)
-{
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-#endif /* INCLUDE_UNUSED */
-
-resPtr
-xf86AccResFromOS(resPtr ret)
-{
- resRange range;
-
- /*
- * Fallback is to claim the following areas:
- *
- * 0x000c0000 - 0x000effff location of VGA and other extensions ROMS
- */
-
- RANGE(range, 0x000c0000, 0x000effff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- /*
- * Fallback would be to claim well known ports in the 0x0 - 0x3ff range
- * along with their sparse I/O aliases, but that's too imprecise. Instead
- * claim a bare minimum here.
- */
- RANGE(range, 0x00000000, 0x000000ff, ResExcIoBlock); /* For mainboard */
- ret = xf86AddResToList(ret, &range, -1);
-
- /*
- * At minimum, the top and bottom resources must be claimed, so that
- * resources that are (or appear to be) unallocated can be relocated.
- */
- RANGE(range, 0x00000000, 0x00000000, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xffffffff, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-/* RANGE(range, 0x00000000, 0x00000000, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1); */
- RANGE(range, 0xffffffff, 0xffffffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- /* XXX add others */
- return ret;
-}
-
-#elif defined(__powerpc__)
-
-resPtr
-xf86BusAccWindowsFromOS(void)
-{
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-resPtr
-xf86PciBusAccWindowsFromOS(void)
-{
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-#ifdef INCLUDE_UNUSED
-
-resPtr
-xf86IsaBusAccWindowsFromOS(void)
-{
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-#endif /* INCLUDE_UNUSED */
-
-resPtr
-xf86AccResFromOS(resPtr ret)
-{
- resRange range;
-
- /*
- * At minimum, the top and bottom resources must be claimed, so that
- * resources that are (or appear to be) unallocated can be relocated.
- */
- RANGE(range, 0x00000000, 0x00000000, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xffffffff, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x00000000, 0x00000000, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x0000ffff, 0x0000ffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- return ret;
-}
-
-#else
-
-#error : Put your platform dependent code here!!
-
-#endif
-
-#endif /* INCLUDE_XF86_NO_DOMAIN */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_KbdMap.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_KbdMap.c
deleted file mode 100644
index d225c1f38..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_KbdMap.c
+++ /dev/null
@@ -1,1087 +0,0 @@
-/* $XFree86$ */
-
-/*
- * Slightly modified xf86KbdBSD.c which is
- *
- * Derived from xf86Kbd.c by S_ren Schmidt (sos@login.dkuug.dk)
- * which is Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- * and from xf86KbdCODrv.c by Holger Veit
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Xinput.h"
-#include "xf86OSKbd.h"
-#include "atKeynames.h"
-#include "xf86Keymap.h"
-#include "bsd_kbd.h"
-
-#if (defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT)) && defined(GIO_KEYMAP)
-#define KD_GET_ENTRY(i,n) \
- eascii_to_x[((keymap.key[i].spcl << (n+1)) & 0x100) + keymap.key[i].map[n]]
-
-static unsigned char remap[NUM_KEYCODES] = {
- 0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00 - 0x07 */
- 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08 - 0x0f */
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10 - 0x17 */
- 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18 - 0x1f */
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20 - 0x27 */
- 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28 - 0x2f */
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0, /* 0x30 - 0x37 */
- 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38 - 0x3f */
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0, /* 0x40 - 0x47 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x48 - 0x4f */
- 0, 0, 0, 0, 0, 0, 0x56, 0x57, /* 0x50 - 0x57 */
- 0x58, 0, 0, 0, 0, 0, 0, 0, /* 0x58 - 0x5f */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 - 0x67 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x68 - 0x6f */
- 0, 0, 0x69, 0x65, 0, 0, 0, 0, /* 0x70 - 0x77 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x78 - 0x7f */
-};
-
-/* This table assumes the ibm code page 437 coding for characters
- * > 0x80. They are returned in this form by PCVT */
-static KeySym eascii_to_x[512] = {
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
- NoSymbol, XK_Return, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_Escape,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
- XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
- XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
- XK_comma, XK_minus, XK_period, XK_slash,
- XK_0, XK_1, XK_2, XK_3,
- XK_4, XK_5, XK_6, XK_7,
- XK_8, XK_9, XK_colon, XK_semicolon,
- XK_less, XK_equal, XK_greater, XK_question,
- XK_at, XK_A, XK_B, XK_C,
- XK_D, XK_E, XK_F, XK_G,
- XK_H, XK_I, XK_J, XK_K,
- XK_L, XK_M, XK_N, XK_O,
- XK_P, XK_Q, XK_R, XK_S,
- XK_T, XK_U, XK_V, XK_W,
- XK_X, XK_Y, XK_Z, XK_bracketleft,
- XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
- XK_grave, XK_a, XK_b, XK_c,
- XK_d, XK_e, XK_f, XK_g,
- XK_h, XK_i, XK_j, XK_k,
- XK_l, XK_m, XK_n, XK_o,
- XK_p, XK_q, XK_r, XK_s,
- XK_t, XK_u, XK_v, XK_w,
- XK_x, XK_y, XK_z, XK_braceleft,
- XK_bar, XK_braceright, XK_asciitilde, XK_Delete,
- XK_Ccedilla, XK_udiaeresis, XK_eacute, XK_acircumflex,
- XK_adiaeresis, XK_agrave, XK_aring, XK_ccedilla,
- XK_ecircumflex, XK_ediaeresis, XK_egrave, XK_idiaeresis,
- XK_icircumflex, XK_igrave, XK_Adiaeresis, XK_Aring,
- XK_Eacute, XK_ae, XK_AE, XK_ocircumflex,
- XK_odiaeresis, XK_ograve, XK_ucircumflex, XK_ugrave,
- XK_ydiaeresis, XK_Odiaeresis, XK_Udiaeresis, XK_cent,
- XK_sterling, XK_yen, XK_paragraph, XK_section,
- XK_aacute, XK_iacute, XK_oacute, XK_uacute,
- XK_ntilde, XK_Ntilde, XK_ordfeminine, XK_masculine,
- XK_questiondown,XK_hyphen, XK_notsign, XK_onehalf,
- XK_onequarter, XK_exclamdown, XK_guillemotleft,XK_guillemotright,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_Greek_alpha, XK_ssharp, XK_Greek_GAMMA, XK_Greek_pi,
- XK_Greek_SIGMA, XK_Greek_sigma, XK_mu, XK_Greek_tau,
- XK_Greek_PHI, XK_Greek_THETA, XK_Greek_OMEGA, XK_Greek_delta,
- XK_infinity, XK_Ooblique, XK_Greek_epsilon, XK_intersection,
- XK_identical, XK_plusminus, XK_greaterthanequal, XK_lessthanequal,
- XK_topintegral, XK_botintegral, XK_division, XK_similarequal,
- XK_degree, NoSymbol, NoSymbol, XK_radical,
- XK_Greek_eta, XK_twosuperior, XK_periodcentered, NoSymbol,
-
- /*
- * special marked entries (256 + x)
- */
-
- /* This has been checked against what syscons actually does */
- NoSymbol, NoSymbol, XK_Shift_L, XK_Shift_R,
- XK_Caps_Lock, XK_Num_Lock, XK_Scroll_Lock, XK_Alt_L,
- XK_ISO_Left_Tab,XK_Control_L, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_F1,
- XK_F2, XK_F3, XK_F4, XK_F5,
- XK_F6, XK_F7, XK_F8, XK_F9,
- XK_F10, XK_F11, XK_F12, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_Control_R, XK_Alt_R, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol
-};
-
-#ifdef __OpenBSD__
-/* don't mark AltR and CtrlR for remapping, since they
- * cannot be remapped by pccons */
-static unsigned char pccons_remap[128] = {
- 0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00 - 0x07 */
- 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08 - 0x0f */
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10 - 0x17 */
- 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18 - 0x1f */
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20 - 0x27 */
- 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28 - 0x2f */
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0, /* 0x30 - 0x37 */
- 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38 - 0x3f */
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0, /* 0x40 - 0x47 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x48 - 0x4f */
- 0, 0, 0, 0, 0, 0, 0x56, 0x57, /* 0x50 - 0x57 */
- 0x58, 0, 0, 0, 0, 0, 0, 0, /* 0x58 - 0x5f */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 - 0x67 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x68 - 0x6f */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x70 - 0x77 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x78 - 0x7f */
-};
-
-/* This table assumes an iso8859_1 encoding for the characters
- * > 80, as returned by pccons */
-static KeySym latin1_to_x[256] = {
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
- NoSymbol, XK_Return, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_Escape,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
- XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
- XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
- XK_comma, XK_minus, XK_period, XK_slash,
- XK_0, XK_1, XK_2, XK_3,
- XK_4, XK_5, XK_6, XK_7,
- XK_8, XK_9, XK_colon, XK_semicolon,
- XK_less, XK_equal, XK_greater, XK_question,
- XK_at, XK_A, XK_B, XK_C,
- XK_D, XK_E, XK_F, XK_G,
- XK_H, XK_I, XK_J, XK_K,
- XK_L, XK_M, XK_N, XK_O,
- XK_P, XK_Q, XK_R, XK_S,
- XK_T, XK_U, XK_V, XK_W,
- XK_X, XK_Y, XK_Z, XK_bracketleft,
- XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
- XK_grave, XK_a, XK_b, XK_c,
- XK_d, XK_e, XK_f, XK_g,
- XK_h, XK_i, XK_j, XK_k,
- XK_l, XK_m, XK_n, XK_o,
- XK_p, XK_q, XK_r, XK_s,
- XK_t, XK_u, XK_v, XK_w,
- XK_x, XK_y, XK_z, XK_braceleft,
- XK_bar, XK_braceright, XK_asciitilde, XK_Delete,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_nobreakspace,XK_exclamdown, XK_cent, XK_sterling,
- XK_currency, XK_yen, XK_brokenbar, XK_section,
- XK_diaeresis, XK_copyright, XK_ordfeminine, XK_guillemotleft,
- XK_notsign, XK_hyphen, XK_registered, XK_macron,
- XK_degree, XK_plusminus, XK_twosuperior, XK_threesuperior,
- XK_acute, XK_mu, XK_paragraph, XK_periodcentered,
- XK_cedilla, XK_onesuperior, XK_masculine, XK_guillemotright,
- XK_onequarter, XK_onehalf, XK_threequarters,XK_questiondown,
- XK_Agrave, XK_Aacute, XK_Acircumflex, XK_Atilde,
- XK_Adiaeresis, XK_Aring, XK_AE, XK_Ccedilla,
- XK_Egrave, XK_Eacute, XK_Ecircumflex, XK_Ediaeresis,
- XK_Igrave, XK_Iacute, XK_Icircumflex, XK_Idiaeresis,
- XK_ETH, XK_Ntilde, XK_Ograve, XK_Oacute,
- XK_Ocircumflex, XK_Otilde, XK_Odiaeresis, XK_multiply,
- XK_Ooblique, XK_Ugrave, XK_Uacute, XK_Ucircumflex,
- XK_Udiaeresis, XK_Yacute, XK_THORN, XK_ssharp,
- XK_agrave, XK_aacute, XK_acircumflex, XK_atilde,
- XK_adiaeresis, XK_aring, XK_ae, XK_ccedilla,
- XK_egrave, XK_eacute, XK_ecircumflex, XK_ediaeresis,
- XK_igrave, XK_iacute, XK_icircumflex, XK_idiaeresis,
- XK_eth, XK_ntilde, XK_ograve, XK_oacute,
- XK_ocircumflex, XK_otilde, XK_odiaeresis, XK_division,
- XK_oslash, XK_ugrave, XK_uacute, XK_ucircumflex,
- XK_udiaeresis, XK_yacute, XK_thorn, XK_ydiaeresis
- };
-#endif
-
-#ifdef SYSCONS_SUPPORT
-static
-unsigned char sysconsCODEMap[] = {
- KEY_KP_Enter, KEY_RCtrl, KEY_KP_Divide, KEY_Print,
- KEY_AltLang, KEY_KP_7, KEY_KP_8, KEY_KP_9,
- KEY_KP_4, KEY_KP_6, KEY_KP_1, KEY_KP_2,
- KEY_KP_3, KEY_KP_0, KEY_KP_Decimal, KEY_Pause,
- KEY_LMeta, KEY_RMeta, KEY_Menu, KEY_Break
-};
-static
-TransMapRec sysconsCODE = {
- 0x59,
- 0x6d,
- sysconsCODEMap
-};
-#endif
-#endif /* SYSCONS_SUPPORT || PCVT_SUPPORT */
-
-#ifdef WSCONS_SUPPORT
-
-static CARD8 wsUsbMap[] = {
- /* 0 */ KEY_NOTUSED,
- /* 1 */ KEY_NOTUSED,
- /* 2 */ KEY_NOTUSED,
- /* 3 */ KEY_NOTUSED,
- /* 4 */ KEY_A,
- /* 5 */ KEY_B,
- /* 6 */ KEY_C,
- /* 7 */ KEY_D,
- /* 8 */ KEY_E,
- /* 9 */ KEY_F,
- /* 10 */ KEY_G,
- /* 11 */ KEY_H,
- /* 12 */ KEY_I,
- /* 13 */ KEY_J,
- /* 14 */ KEY_K,
- /* 15 */ KEY_L,
- /* 16 */ KEY_M,
- /* 17 */ KEY_N,
- /* 18 */ KEY_O,
- /* 19 */ KEY_P,
- /* 20 */ KEY_Q,
- /* 21 */ KEY_R,
- /* 22 */ KEY_S,
- /* 23 */ KEY_T,
- /* 24 */ KEY_U,
- /* 25 */ KEY_V,
- /* 26 */ KEY_W,
- /* 27 */ KEY_X,
- /* 28 */ KEY_Y,
- /* 29 */ KEY_Z,
- /* 30 */ KEY_1, /* 1 !*/
- /* 31 */ KEY_2, /* 2 @ */
- /* 32 */ KEY_3, /* 3 # */
- /* 33 */ KEY_4, /* 4 $ */
- /* 34 */ KEY_5, /* 5 % */
- /* 35 */ KEY_6, /* 6 ^ */
- /* 36 */ KEY_7, /* 7 & */
- /* 37 */ KEY_8, /* 8 * */
- /* 38 */ KEY_9, /* 9 ( */
- /* 39 */ KEY_0, /* 0 ) */
- /* 40 */ KEY_Enter, /* Return */
- /* 41 */ KEY_Escape, /* Escape */
- /* 42 */ KEY_BackSpace, /* Backspace Delete */
- /* 43 */ KEY_Tab, /* Tab */
- /* 44 */ KEY_Space, /* Space */
- /* 45 */ KEY_Minus, /* - _ */
- /* 46 */ KEY_Equal, /* = + */
- /* 47 */ KEY_LBrace, /* [ { */
- /* 48 */ KEY_RBrace, /* ] } */
- /* 49 */ KEY_BSlash, /* \ | */
- /* 50 */ KEY_BSlash2, /* \ _ # ~ on some keyboards */
- /* 51 */ KEY_SemiColon, /* ; : */
- /* 52 */ KEY_Quote, /* ' " */
- /* 53 */ KEY_Tilde, /* ` ~ */
- /* 54 */ KEY_Comma, /* , < */
- /* 55 */ KEY_Period, /* . > */
- /* 56 */ KEY_Slash, /* / ? */
- /* 57 */ KEY_CapsLock, /* Caps Lock */
- /* 58 */ KEY_F1, /* F1 */
- /* 59 */ KEY_F2, /* F2 */
- /* 60 */ KEY_F3, /* F3 */
- /* 61 */ KEY_F4, /* F4 */
- /* 62 */ KEY_F5, /* F5 */
- /* 63 */ KEY_F6, /* F6 */
- /* 64 */ KEY_F7, /* F7 */
- /* 65 */ KEY_F8, /* F8 */
- /* 66 */ KEY_F9, /* F9 */
- /* 67 */ KEY_F10, /* F10 */
- /* 68 */ KEY_F11, /* F11 */
- /* 69 */ KEY_F12, /* F12 */
- /* 70 */ KEY_Print, /* PrintScrn SysReq */
- /* 71 */ KEY_ScrollLock, /* Scroll Lock */
- /* 72 */ KEY_Pause, /* Pause Break */
- /* 73 */ KEY_Insert, /* Insert XXX Help on some Mac Keyboards */
- /* 74 */ KEY_Home, /* Home */
- /* 75 */ KEY_PgUp, /* Page Up */
- /* 76 */ KEY_Delete, /* Delete */
- /* 77 */ KEY_End, /* End */
- /* 78 */ KEY_PgDown, /* Page Down */
- /* 79 */ KEY_Right, /* Right Arrow */
- /* 80 */ KEY_Left, /* Left Arrow */
- /* 81 */ KEY_Down, /* Down Arrow */
- /* 82 */ KEY_Up, /* Up Arrow */
- /* 83 */ KEY_NumLock, /* Num Lock */
- /* 84 */ KEY_KP_Divide, /* Keypad / */
- /* 85 */ KEY_KP_Multiply, /* Keypad * */
- /* 86 */ KEY_KP_Minus, /* Keypad - */
- /* 87 */ KEY_KP_Plus, /* Keypad + */
- /* 88 */ KEY_KP_Enter, /* Keypad Enter */
- /* 89 */ KEY_KP_1, /* Keypad 1 End */
- /* 90 */ KEY_KP_2, /* Keypad 2 Down */
- /* 91 */ KEY_KP_3, /* Keypad 3 Pg Down */
- /* 92 */ KEY_KP_4, /* Keypad 4 Left */
- /* 93 */ KEY_KP_5, /* Keypad 5 */
- /* 94 */ KEY_KP_6, /* Keypad 6 */
- /* 95 */ KEY_KP_7, /* Keypad 7 Home */
- /* 96 */ KEY_KP_8, /* Keypad 8 Up */
- /* 97 */ KEY_KP_9, /* KEypad 9 Pg Up */
- /* 98 */ KEY_KP_0, /* Keypad 0 Ins */
- /* 99 */ KEY_KP_Decimal, /* Keypad . Del */
- /* 100 */ KEY_Less, /* < > on some keyboards */
- /* 101 */ KEY_Menu, /* Menu */
- /* 102 */ KEY_NOTUSED,
- /* 103 */ KEY_KP_Equal, /* Keypad = on Mac keyboards */
- /* 104 */ KEY_NOTUSED,
- /* 105 */ KEY_NOTUSED,
- /* 106 */ KEY_NOTUSED,
- /* 107 */ KEY_NOTUSED,
- /* 108 */ KEY_NOTUSED,
- /* 109 */ KEY_NOTUSED,
- /* 110 */ KEY_NOTUSED,
- /* 111 */ KEY_NOTUSED,
- /* 112 */ KEY_NOTUSED,
- /* 113 */ KEY_NOTUSED,
- /* 114 */ KEY_NOTUSED,
- /* 115 */ KEY_NOTUSED,
- /* 116 */ KEY_NOTUSED,
- /* 117 */ KEY_NOTUSED,
- /* 118 */ KEY_NOTUSED,
- /* 119 */ KEY_NOTUSED,
- /* 120 */ KEY_NOTUSED,
- /* 121 */ KEY_NOTUSED,
- /* 122 */ KEY_NOTUSED,
- /* 123 */ KEY_NOTUSED,
- /* 124 */ KEY_NOTUSED,
- /* 125 */ KEY_NOTUSED,
- /* 126 */ KEY_NOTUSED,
- /* 127 */ KEY_NOTUSED,
- /* 128 */ KEY_NOTUSED,
- /* 129 */ KEY_NOTUSED,
- /* 130 */ KEY_NOTUSED,
- /* 131 */ KEY_NOTUSED,
- /* 132 */ KEY_NOTUSED,
- /* 133 */ KEY_NOTUSED,
- /* 134 */ KEY_NOTUSED,
- /* 135 */ KEY_NOTUSED,
- /* 136 */ KEY_NOTUSED,
- /* 137 */ KEY_NOTUSED,
- /* 138 */ KEY_NOTUSED,
- /* 139 */ KEY_NOTUSED,
- /* 140 */ KEY_NOTUSED,
- /* 141 */ KEY_NOTUSED,
- /* 142 */ KEY_NOTUSED,
- /* 143 */ KEY_NOTUSED,
- /* 144 */ KEY_NOTUSED,
- /* 145 */ KEY_NOTUSED,
- /* 146 */ KEY_NOTUSED,
- /* 147 */ KEY_NOTUSED,
- /* 148 */ KEY_NOTUSED,
- /* 149 */ KEY_NOTUSED,
- /* 150 */ KEY_NOTUSED,
- /* 151 */ KEY_NOTUSED,
- /* 152 */ KEY_NOTUSED,
- /* 153 */ KEY_NOTUSED,
- /* 154 */ KEY_NOTUSED,
- /* 155 */ KEY_NOTUSED,
- /* 156 */ KEY_NOTUSED,
- /* 157 */ KEY_NOTUSED,
- /* 158 */ KEY_NOTUSED,
- /* 159 */ KEY_NOTUSED,
- /* 160 */ KEY_NOTUSED,
- /* 161 */ KEY_NOTUSED,
- /* 162 */ KEY_NOTUSED,
- /* 163 */ KEY_NOTUSED,
- /* 164 */ KEY_NOTUSED,
- /* 165 */ KEY_NOTUSED,
- /* 166 */ KEY_NOTUSED,
- /* 167 */ KEY_NOTUSED,
- /* 168 */ KEY_NOTUSED,
- /* 169 */ KEY_NOTUSED,
- /* 170 */ KEY_NOTUSED,
- /* 171 */ KEY_NOTUSED,
- /* 172 */ KEY_NOTUSED,
- /* 173 */ KEY_NOTUSED,
- /* 174 */ KEY_NOTUSED,
- /* 175 */ KEY_NOTUSED,
- /* 176 */ KEY_NOTUSED,
- /* 177 */ KEY_NOTUSED,
- /* 178 */ KEY_NOTUSED,
- /* 179 */ KEY_NOTUSED,
- /* 180 */ KEY_NOTUSED,
- /* 181 */ KEY_NOTUSED,
- /* 182 */ KEY_NOTUSED,
- /* 183 */ KEY_NOTUSED,
- /* 184 */ KEY_NOTUSED,
- /* 185 */ KEY_NOTUSED,
- /* 186 */ KEY_NOTUSED,
- /* 187 */ KEY_NOTUSED,
- /* 188 */ KEY_NOTUSED,
- /* 189 */ KEY_NOTUSED,
- /* 190 */ KEY_NOTUSED,
- /* 191 */ KEY_NOTUSED,
- /* 192 */ KEY_NOTUSED,
- /* 193 */ KEY_NOTUSED,
- /* 194 */ KEY_NOTUSED,
- /* 195 */ KEY_NOTUSED,
- /* 196 */ KEY_NOTUSED,
- /* 197 */ KEY_NOTUSED,
- /* 198 */ KEY_NOTUSED,
- /* 199 */ KEY_NOTUSED,
- /* 200 */ KEY_NOTUSED,
- /* 201 */ KEY_NOTUSED,
- /* 202 */ KEY_NOTUSED,
- /* 203 */ KEY_NOTUSED,
- /* 204 */ KEY_NOTUSED,
- /* 205 */ KEY_NOTUSED,
- /* 206 */ KEY_NOTUSED,
- /* 207 */ KEY_NOTUSED,
- /* 208 */ KEY_NOTUSED,
- /* 209 */ KEY_NOTUSED,
- /* 210 */ KEY_NOTUSED,
- /* 211 */ KEY_NOTUSED,
- /* 212 */ KEY_NOTUSED,
- /* 213 */ KEY_NOTUSED,
- /* 214 */ KEY_NOTUSED,
- /* 215 */ KEY_NOTUSED,
- /* 216 */ KEY_NOTUSED,
- /* 217 */ KEY_NOTUSED,
- /* 218 */ KEY_NOTUSED,
- /* 219 */ KEY_NOTUSED,
- /* 220 */ KEY_NOTUSED,
- /* 221 */ KEY_NOTUSED,
- /* 222 */ KEY_NOTUSED,
- /* 223 */ KEY_NOTUSED,
- /* 224 */ KEY_LCtrl, /* Left Control */
- /* 225 */ KEY_ShiftL, /* Left Shift */
- /* 226 */ KEY_Alt, /* Left Alt */
- /* 227 */ KEY_LMeta, /* Left Meta */
- /* 228 */ KEY_RCtrl, /* Right Control */
- /* 229 */ KEY_ShiftR, /* Right Shift */
- /* 230 */ KEY_AltLang, /* Right Alt, AKA AltGr */
- /* 231 */ KEY_LMeta, /* Right Meta XXX */
-};
-#define WS_USB_MAP_SIZE (sizeof(wsUsbMap)/sizeof(unsigned char))
-
-static
-TransMapRec wsUsb = {
- 0,
- WS_USB_MAP_SIZE,
- wsUsbMap
-};
-
-/* Map for adb keyboards */
-static CARD8 wsAdbMap[] = {
- /* 0 */ KEY_A,
- /* 1 */ KEY_S,
- /* 2 */ KEY_D,
- /* 3 */ KEY_F,
- /* 4 */ KEY_H,
- /* 5 */ KEY_G,
- /* 6 */ KEY_Z,
- /* 7 */ KEY_X,
- /* 8 */ KEY_C,
- /* 9 */ KEY_V,
- /* 10 */ KEY_UNKNOWN, /* @ # on french keyboards */
- /* 11 */ KEY_B,
- /* 12 */ KEY_Q,
- /* 13 */ KEY_W,
- /* 14 */ KEY_E,
- /* 15 */ KEY_R,
- /* 16 */ KEY_Y,
- /* 17 */ KEY_T,
- /* 18 */ KEY_1,
- /* 19 */ KEY_2,
- /* 20 */ KEY_3,
- /* 21 */ KEY_4,
- /* 22 */ KEY_6,
- /* 23 */ KEY_5,
- /* 24 */ KEY_Equal,
- /* 25 */ KEY_9,
- /* 26 */ KEY_7,
- /* 27 */ KEY_Minus,
- /* 28 */ KEY_8,
- /* 29 */ KEY_0,
- /* 30 */ KEY_RBrace,
- /* 31 */ KEY_O,
- /* 32 */ KEY_U,
- /* 33 */ KEY_LBrace,
- /* 34 */ KEY_I,
- /* 35 */ KEY_P,
- /* 36 */ KEY_Enter,
- /* 37 */ KEY_L,
- /* 38 */ KEY_J,
- /* 39 */ KEY_Quote,
- /* 40 */ KEY_K,
- /* 41 */ KEY_SemiColon,
- /* 42 */ KEY_BSlash,
- /* 43 */ KEY_Comma,
- /* 44 */ KEY_Slash,
- /* 45 */ KEY_N,
- /* 46 */ KEY_M,
- /* 47 */ KEY_Period,
- /* 48 */ KEY_Tab,
- /* 49 */ KEY_Space,
- /* 50 */ KEY_Tilde,
- /* 51 */ KEY_Delete,
- /* 52 */ KEY_AltLang,
- /* 53 */ KEY_Escape,
- /* 54 */ KEY_LCtrl,
- /* 55 */ KEY_Alt,
- /* 56 */ KEY_ShiftL,
- /* 57 */ KEY_CapsLock,
- /* 58 */ KEY_LMeta,
- /* 59 */ KEY_Left,
- /* 60 */ KEY_Right,
- /* 61 */ KEY_Down,
- /* 62 */ KEY_Up,
- /* 63 */ KEY_UNKNOWN, /* Fn */
- /* 64 */ KEY_NOTUSED,
- /* 65 */ KEY_KP_Decimal,
- /* 66 */ KEY_NOTUSED,
- /* 67 */ KEY_KP_Multiply,
- /* 68 */ KEY_NOTUSED,
- /* 69 */ KEY_KP_Plus,
- /* 70 */ KEY_NOTUSED,
- /* 71 */ KEY_UNKNOWN, /* Clear */
- /* 72 */ KEY_NOTUSED,
- /* 73 */ KEY_NOTUSED,
- /* 74 */ KEY_NOTUSED,
- /* 75 */ KEY_KP_Divide,
- /* 76 */ KEY_KP_Enter,
- /* 77 */ KEY_NOTUSED,
- /* 78 */ KEY_KP_Minus,
- /* 79 */ KEY_NOTUSED,
- /* 80 */ KEY_NOTUSED,
- /* 81 */ KEY_KP_Equal, /* Keypad = */
- /* 82 */ KEY_KP_0,
- /* 83 */ KEY_KP_1,
- /* 84 */ KEY_KP_2,
- /* 85 */ KEY_KP_3,
- /* 86 */ KEY_KP_4,
- /* 87 */ KEY_KP_5,
- /* 88 */ KEY_KP_6,
- /* 89 */ KEY_KP_7,
- /* 90 */ KEY_NOTUSED,
- /* 91 */ KEY_KP_8,
- /* 92 */ KEY_KP_9,
- /* 93 */ KEY_NOTUSED,
- /* 94 */ KEY_NOTUSED,
- /* 95 */ KEY_UNKNOWN, /* Keypad , */
- /* 96 */ KEY_F5,
- /* 97 */ KEY_F6,
- /* 98 */ KEY_F7,
- /* 99 */ KEY_F3,
- /* 100 */ KEY_F8,
- /* 101 */ KEY_F9,
- /* 102 */ KEY_NOTUSED,
- /* 103 */ KEY_F11,
- /* 104 */ KEY_NOTUSED,
- /* 105 */ KEY_NOTUSED,
- /* 106 */ KEY_KP_Enter,
- /* 107 */ KEY_NOTUSED,
- /* 108 */ KEY_NOTUSED,
- /* 109 */ KEY_F10,
- /* 110 */ KEY_NOTUSED,
- /* 111 */ KEY_F12,
- /* 112 */ KEY_NOTUSED,
- /* 113 */ KEY_NOTUSED,
- /* 114 */ KEY_NOTUSED,
- /* 115 */ KEY_Home,
- /* 116 */ KEY_PgUp,
- /* 117 */ KEY_NOTUSED,
- /* 118 */ KEY_F4,
- /* 119 */ KEY_End,
- /* 120 */ KEY_F2,
- /* 121 */ KEY_PgDown,
- /* 122 */ KEY_F1
-};
-#define WS_ADB_MAP_SIZE (sizeof(wsAdbMap)/sizeof(unsigned char))
-
-static
-TransMapRec wsAdb = {
- 0,
- WS_ADB_MAP_SIZE,
- wsAdbMap
-};
-
-static CARD8 wsSunMap[] = {
- /* 0x00 */ KEY_Help,
- /* 0x01 */ KEY_L1, /* stop */
- /* 0x02 */ KEY_AudioLower, /* BrightnessDown / S-VolumeDown */
- /* 0x03 */ KEY_L2, /* again */
- /* 0x04 */ KEY_AudioRaise, /* BridgtnessUp / S-VolumeUp */
- /* 0x05 */ KEY_F1,
- /* 0x06 */ KEY_F2,
- /* 0x07 */ KEY_F10,
- /* 0x08 */ KEY_F3,
- /* 0x09 */ KEY_F11,
- /* 0x0a */ KEY_F4,
- /* 0x0b */ KEY_F12,
- /* 0x0c */ KEY_F5,
- /* 0x0d */ KEY_AltLang,
- /* 0x0e */ KEY_F6,
- /* 0x0f */ KEY_NOTUSED,
- /* 0x10 */ KEY_F7,
- /* 0x11 */ KEY_F8,
- /* 0x12 */ KEY_F9,
- /* 0x13 */ KEY_Alt,
- /* 0x14 */ KEY_Up,
- /* 0x15 */ KEY_Pause,
- /* 0x16 */ KEY_Print,
- /* 0x17 */ KEY_ScrollLock,
- /* 0x18 */ KEY_Left,
- /* 0x19 */ KEY_L3, /* props */
- /* 0x1a */ KEY_L4, /* undo */
- /* 0x1b */ KEY_Down,
- /* 0x1c */ KEY_Right,
- /* 0x1d */ KEY_Escape,
- /* 0x1e */ KEY_1,
- /* 0x1f */ KEY_2,
- /* 0x20 */ KEY_3,
- /* 0x21 */ KEY_4,
- /* 0x22 */ KEY_5,
- /* 0x23 */ KEY_6,
- /* 0x24 */ KEY_7,
- /* 0x25 */ KEY_8,
- /* 0x26 */ KEY_9,
- /* 0x27 */ KEY_0,
- /* 0x28 */ KEY_Minus,
- /* 0x29 */ KEY_Equal,
- /* 0x2a */ KEY_Tilde,
- /* 0x2b */ KEY_BackSpace,
- /* 0x2c */ KEY_Insert,
- /* 0x2d */ KEY_Mute, /* Audio Mute */
- /* 0x2e */ KEY_KP_Divide,
- /* 0x2f */ KEY_KP_Multiply,
- /* 0x30 */ KEY_NOTUSED,
- /* 0x31 */ KEY_L5, /* front */
- /* 0x32 */ KEY_KP_Decimal,
- /* 0x33 */ KEY_L6, /* copy */
- /* 0x34 */ KEY_Home,
- /* 0x35 */ KEY_Tab,
- /* 0x36 */ KEY_Q,
- /* 0x37 */ KEY_W,
- /* 0x38 */ KEY_E,
- /* 0x39 */ KEY_R,
- /* 0x3a */ KEY_T,
- /* 0x3b */ KEY_Y,
- /* 0x3c */ KEY_U,
- /* 0x3d */ KEY_I,
- /* 0x3e */ KEY_O,
- /* 0x3f */ KEY_P,
- /* 0x40 */ KEY_LBrace,
- /* 0x41 */ KEY_RBrace,
- /* 0x42 */ KEY_Delete,
- /* 0x43 */ KEY_Menu, /* compose */
- /* 0x44 */ KEY_KP_7,
- /* 0x45 */ KEY_KP_8,
- /* 0x46 */ KEY_KP_9,
- /* 0x47 */ KEY_KP_Minus,
- /* 0x48 */ KEY_L7, /* open */
- /* 0x49 */ KEY_L8, /* paste */
- /* 0x4a */ KEY_End,
- /* 0x4b */ KEY_NOTUSED,
- /* 0x4c */ KEY_LCtrl,
- /* 0x4d */ KEY_A,
- /* 0x4e */ KEY_S,
- /* 0x4f */ KEY_D,
- /* 0x50 */ KEY_F,
- /* 0x51 */ KEY_G,
- /* 0x52 */ KEY_H,
- /* 0x53 */ KEY_J,
- /* 0x54 */ KEY_K,
- /* 0x55 */ KEY_L,
- /* 0x56 */ KEY_SemiColon,
- /* 0x57 */ KEY_Quote,
- /* 0x58 */ KEY_BSlash,
- /* 0x59 */ KEY_Enter,
- /* 0x5a */ KEY_KP_Enter,
- /* 0x5b */ KEY_KP_4,
- /* 0x5c */ KEY_KP_5,
- /* 0x5d */ KEY_KP_6,
- /* 0x5e */ KEY_KP_0,
- /* 0x5f */ KEY_L9, /* find */
- /* 0x60 */ KEY_PgUp,
- /* 0x61 */ KEY_L10, /* cut */
- /* 0x62 */ KEY_NumLock,
- /* 0x63 */ KEY_ShiftL,
- /* 0x64 */ KEY_Z,
- /* 0x65 */ KEY_X,
- /* 0x66 */ KEY_C,
- /* 0x67 */ KEY_V,
- /* 0x68 */ KEY_B,
- /* 0x69 */ KEY_N,
- /* 0x6a */ KEY_M,
- /* 0x6b */ KEY_Comma,
- /* 0x6c */ KEY_Period,
- /* 0x6d */ KEY_Slash,
- /* 0x6e */ KEY_ShiftR,
- /* 0x6f */ KEY_NOTUSED, /* linefeed */
- /* 0x70 */ KEY_KP_1,
- /* 0x71 */ KEY_KP_2,
- /* 0x72 */ KEY_KP_3,
- /* 0x73 */ KEY_NOTUSED,
- /* 0x74 */ KEY_NOTUSED,
- /* 0x75 */ KEY_NOTUSED,
- /* 0x76 */ KEY_NOTUSED, /* help */
- /* 0x77 */ KEY_CapsLock,
- /* 0x78 */ KEY_LMeta,
- /* 0x79 */ KEY_Space,
- /* 0x7a */ KEY_RMeta,
- /* 0x7b */ KEY_PgDown,
- /* 0x7c */ KEY_Less, /* < > on some keyboards */
- /* 0x7d */ KEY_KP_Plus,
- /* 0x7e */ KEY_NOTUSED,
- /* 0x7f */ KEY_NOTUSED
-};
-#define WS_SUN_MAP_SIZE (sizeof(wsSunMap)/sizeof(unsigned char))
-
-static
-TransMapRec wsSun = {
- 0,
- WS_SUN_MAP_SIZE,
- wsSunMap
-};
-
-#endif /* WSCONS_SUPPORT */
-
-/*ARGSUSED*/
-
-/*
- * KbdGetMapping --
- * Get the national keyboard mapping. The keyboard type is set, a new map
- * and the modifiermap is computed.
- */
-
-void
-KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- KeySym *k;
- int i;
-
-#ifndef __bsdi__
- switch (pKbd->consType) {
-
-#ifdef PCCONS_SUPPORT
- case PCCONS:
-#if defined(__OpenBSD__)
- /*
- * on OpenBSD, the pccons keymap is programmable, too
- */
- {
- pccons_keymap_t keymap[KB_NUM_KEYS];
- if (ioctl(pInfo->fd, CONSOLE_GET_KEYMAP, &keymap) != -1) {
- for (i = 0; i < KB_NUM_KEYS; i++)
- if (pccons_remap[i]) {
- k = map + (pccons_remap[i] << 2);
- switch (keymap[i].type) {
- case KB_ASCII:
- /* For ASCII keys, there is only one char in the keymap */
- k[0] = latin1_to_x[(unsigned char)keymap[i].unshift[0]];
- k[1] = latin1_to_x[(unsigned char)keymap[i].shift[0]];
- k[2] = latin1_to_x[(unsigned char)keymap[i].altgr[0]];
- k[3] = latin1_to_x[(unsigned char)keymap[i].shift_altgr[0]];
- break;
- case KB_SCROLL:
- k[0] = XK_Scroll_Lock;
- goto special;
- case KB_NUM:
- k[0] = XK_Num_Lock;
- goto special;
- case KB_CAPS:
- k[0] = XK_Caps_Lock;
- goto special;
- case KB_SHIFT:
- switch (keymap[i].unshift[0]) {
- case 1:
- /* left shift */
- k[0] = XK_Shift_L;
- break;
- case 2:
- /* right shift */
- k[0] = XK_Shift_R;
- break;
- default:
- k[0] = NoSymbol;
- }
- goto special;
- case KB_CTL:
- k[0] = XK_Control_L;
- goto special;
- case KB_ALT:
- k[0] = XK_Alt_L;
- goto special;
- case KB_FUNC:
- switch (keymap[i].unshift[2]) {
- case 'M':
- k[0] = XK_F1;
- break;
- case 'N':
- k[0] = XK_F2;
- break;
- case 'O':
- k[0] = XK_F3;
- break;
- case 'P':
- k[0] = XK_F4;
- break;
- case 'Q':
- k[0] = XK_F5;
- break;
- case 'R':
- k[0] = XK_F6;
- break;
- case 'S':
- k[0] = XK_F7;
- break;
- case 'T':
- k[0] = XK_F8;
- break;
- case 'U':
- k[0] = XK_F9;
- break;
- case 'V':
- k[0] = XK_F10;
- break;
- case 'W':
- k[0] = XK_F11;
- break;
- case 'X':
- k[0] = XK_F12;
- break;
- default:
- k[0] = NoSymbol;
- break;
- }
- goto special;
- default:
- k[0] = NoSymbol;
- special:
- k[1] = k[2] = k[3] = NoSymbol;
- }
- }
- } else {
- ErrorF("Can't read pccons keymap\n");
- }
- }
-#endif /* __OpenBSD__ */
- break;
-#endif
-
-/*
- * XXX wscons has no GIO_KEYMAP
- */
-#if (defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)) && defined(GIO_KEYMAP)
- case SYSCONS:
- case PCVT:
- {
- keymap_t keymap;
-
- if (ioctl(pInfo->fd, GIO_KEYMAP, &keymap) != -1) {
- for (i = 0; i < keymap.n_keys && i < NUM_KEYCODES; i++)
- if (remap[i]) {
- k = map + (remap[i] << 2);
- k[0] = KD_GET_ENTRY(i,0); /* non-shifed */
- k[1] = KD_GET_ENTRY(i,1); /* shifted */
- k[2] = KD_GET_ENTRY(i,4); /* alt */
- k[3] = KD_GET_ENTRY(i,5); /* alt - shifted */
- if (k[3] == k[2]) k[3] = NoSymbol;
- if (k[2] == k[1]) k[2] = NoSymbol;
- if (k[1] == k[0]) k[1] = NoSymbol;
- if (k[0] == k[2] && k[1] == k[3])
- k[2] = k[3] = NoSymbol;
- }
- }
- }
- break;
-#endif /* SYSCONS || PCVT */
-
- }
-#endif /* !bsdi */
-
- /*
- * compute the modifier map
- */
- for (i = 0; i < MAP_LENGTH; i++)
- pModMap[i] = NoSymbol; /* make sure it is restored */
-
- for (k = map, i = MIN_KEYCODE;
- i < (NUM_KEYCODES + MIN_KEYCODE);
- i++, k += 4)
-
- switch(*k) {
-
- case XK_Shift_L:
- case XK_Shift_R:
- pModMap[i] = ShiftMask;
- break;
-
- case XK_Control_L:
- case XK_Control_R:
- pModMap[i] = ControlMask;
- break;
-
- case XK_Caps_Lock:
- pModMap[i] = LockMask;
- break;
-
- case XK_Alt_L:
- case XK_Alt_R:
- pModMap[i] = AltMask;
- break;
-
- case XK_Num_Lock:
- pModMap[i] = NumLockMask;
- break;
-
- case XK_Scroll_Lock:
- pModMap[i] = ScrollLockMask;
- break;
-
- /* kana support */
- case XK_Kana_Lock:
- case XK_Kana_Shift:
- pModMap[i] = KanaMask;
- break;
-
- /* alternate toggle for multinational support */
- case XK_Mode_switch:
- pModMap[i] = AltLangMask;
- break;
-
- }
-
- pKbd->kbdType = 0;
-
- pKeySyms->map = map;
- pKeySyms->mapWidth = GLYPHS_PER_KEY;
- pKeySyms->minKeyCode = MIN_KEYCODE;
- pKeySyms->maxKeyCode = MAX_KEYCODE;
-
- switch(pKbd->consType) {
-#ifdef SYSCONS_SUPPORT
- case SYSCONS:
- if (pKbd->CustomKeycodes)
- pKbd->scancodeMap = &sysconsCODE;
- else
- pKbd->RemapScanCode = ATScancode;
- break;
-#endif
-#if defined(PCCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case PCCONS:
- case PCVT:
- pKbd->RemapScanCode = ATScancode;
- break;
-#endif
-#ifdef WSCONS_SUPPORT
- case WSCONS:
- if (!pKbd->isConsole) {
- switch (pKbd->wsKbdType) {
- case WSKBD_TYPE_PC_XT:
- case WSKBD_TYPE_PC_AT:
- pKbd->RemapScanCode = ATScancode;
- break;
- case WSKBD_TYPE_USB:
- pKbd->scancodeMap = &wsUsb;
- break;
-#ifdef WSKBD_TYPE_ADB
- case WSKBD_TYPE_ADB:
- pKbd->scancodeMap = &wsAdb;
- break;
-#endif
-#ifdef WSKBD_TYPE_SUN
-#ifdef WSKBD_TYPE_SUN5
- case WSKBD_TYPE_SUN5:
-#endif
- case WSKBD_TYPE_SUN:
- pKbd->scancodeMap = &wsSun;
- break;
-#endif
- default:
- ErrorF("Unknown wskbd type %d\n", pKbd->wsKbdType);
- }
- } else {
- pKbd->RemapScanCode = ATScancode;
- }
- break;
-#endif
- }
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_VTsw.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_VTsw.c
deleted file mode 100644
index d97782dc6..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_VTsw.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_VTsw.c,v 3.5.4.3 1998/06/05 16:23:03 dawes Exp $ */
-/*
- * Derived from VTsw_usl.c which is
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- * by S_ren Schmidt (sos@login.dkuug.dk)
- *
- * 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, and that the name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: bsd_VTsw.c /main/4 1996/02/21 17:50:57 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/*
- * Handle the VT-switching interface for OSs that use USL-style ioctl()s
- * (the bsd, sysv, sco, and linux subdirs).
- */
-
-/*
- * This function is the signal handler for the VT-switching signal. It
- * is only referenced inside the OS-support layer.
- */
-void
-xf86VTRequest(int sig)
-{
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- if (xf86Info.consType == SYSCONS || xf86Info.consType == PCVT) {
- xf86Info.vtRequestsPending = TRUE;
- }
-#endif
- return;
-}
-
-Bool
-xf86VTSwitchPending()
-{
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- if (xf86Info.consType == SYSCONS || xf86Info.consType == PCVT) {
- return(xf86Info.vtRequestsPending ? TRUE : FALSE);
- }
-#endif
- return FALSE;
-}
-
-Bool
-xf86VTSwitchAway()
-{
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- if (xf86Info.consType == SYSCONS || xf86Info.consType == PCVT) {
- xf86Info.vtRequestsPending = FALSE;
- if (ioctl(xf86Info.consoleFd, VT_RELDISP, 1) < 0)
- return(FALSE);
- else
- return(TRUE);
- }
-#endif
- return FALSE;
-}
-
-Bool
-xf86VTSwitchTo()
-{
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- if (xf86Info.consType == SYSCONS || xf86Info.consType == PCVT) {
- xf86Info.vtRequestsPending = FALSE;
- if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ) < 0)
- return(FALSE);
- else
- return(TRUE);
- }
-#endif
- return(TRUE);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_apm.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_apm.c
deleted file mode 100644
index c8e204307..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_apm.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* $XFree86$ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#define XF86_OS_PRIVS
-#include "xf86_OSproc.h"
-#include "xf86_OSlib.h"
-
-#include <machine/apmvar.h>
-
-#define APM_DEVICE "/dev/apm"
-
-static pointer APMihPtr = NULL;
-static void bsdCloseAPM(void);
-
-static struct {
- u_int apmBsd;
- pmEvent xf86;
-} bsdToXF86Array [] = {
- { APM_STANDBY_REQ, XF86_APM_SYS_STANDBY },
- { APM_SUSPEND_REQ, XF86_APM_SYS_SUSPEND },
- { APM_NORMAL_RESUME, XF86_APM_NORMAL_RESUME },
- { APM_CRIT_RESUME, XF86_APM_CRITICAL_RESUME },
- { APM_BATTERY_LOW, XF86_APM_LOW_BATTERY },
- { APM_POWER_CHANGE, XF86_APM_POWER_STATUS_CHANGE },
- { APM_UPDATE_TIME, XF86_APM_UPDATE_TIME },
- { APM_CRIT_SUSPEND_REQ, XF86_APM_CRITICAL_SUSPEND },
- { APM_USER_STANDBY_REQ, XF86_APM_USER_STANDBY },
- { APM_USER_SUSPEND_REQ, XF86_APM_USER_SUSPEND },
- { APM_SYS_STANDBY_RESUME, XF86_APM_STANDBY_RESUME },
-#ifdef APM_CAPABILITY_CHANGE
- { APM_CAPABILITY_CHANGE, XF86_APM_CAPABILITY_CHANGED },
-#endif
-};
-
-#define numApmEvents (sizeof(bsdToXF86Array) / sizeof(bsdToXF86Array[0]))
-
-static pmEvent
-bsdToXF86(int type)
-{
- int i;
-
- for (i = 0; i < numApmEvents; i++) {
- if (type == bsdToXF86Array[i].apmBsd) {
- return bsdToXF86Array[i].xf86;
- }
- }
- return XF86_APM_UNKNOWN;
-}
-
-/*
- * APM events can be requested direclty from /dev/apm
- */
-static int
-bsdPMGetEventFromOS(int fd, pmEvent *events, int num)
-{
- struct apm_event_info bsdEvent;
- int i;
-
- for (i = 0; i < num; i++) {
-
- if (ioctl(fd, APM_IOC_NEXTEVENT, &bsdEvent) < 0) {
- if (errno != EAGAIN) {
- xf86Msg(X_WARNING, "bsdPMGetEventFromOS: APM_IOC_NEXTEVENT"
- " errno = %d\n", errno);
- }
- break;
- }
- events[i] = bsdToXF86(bsdEvent.type);
- }
- return i;
-}
-
-/*
- * XXX This won't work on /dev/apm !
- * We should either use /dev/apm_ctl (and kill apmd(8))
- * or talk to apmd (but its protocol is not publically available)...
- */
-static pmWait
-bsdPMConfirmEventToOs(int fd, pmEvent event)
-{
- switch (event) {
- case XF86_APM_SYS_STANDBY:
- case XF86_APM_USER_STANDBY:
- if (ioctl( fd, APM_IOC_STANDBY, NULL ) == 0)
- return PM_WAIT; /* should we stop the Xserver in standby, too? */
- else
- return PM_NONE;
- case XF86_APM_SYS_SUSPEND:
- case XF86_APM_CRITICAL_SUSPEND:
- case XF86_APM_USER_SUSPEND:
- if (ioctl( fd, APM_IOC_SUSPEND, NULL ) == 0)
- return PM_WAIT;
- else
- return PM_NONE;
- case XF86_APM_STANDBY_RESUME:
- case XF86_APM_NORMAL_RESUME:
- case XF86_APM_CRITICAL_RESUME:
- case XF86_APM_STANDBY_FAILED:
- case XF86_APM_SUSPEND_FAILED:
- return PM_CONTINUE;
- default:
- return PM_NONE;
- }
-}
-
-PMClose
-xf86OSPMOpen(void)
-{
- int fd;
-
- if (APMihPtr || !xf86Info.pmFlag) {
- return NULL;
- }
-
- if ((fd = open(APM_DEVICE, O_RDWR)) == -1) {
- return NULL;
- }
- xf86PMGetEventFromOs = bsdPMGetEventFromOS;
- xf86PMConfirmEventToOs = bsdPMConfirmEventToOs;
- APMihPtr = xf86AddInputHandler(fd, xf86HandlePMEvents, NULL);
- return bsdCloseAPM;
-}
-
-static void
-bsdCloseAPM(void)
-{
- int fd;
-
- if (APMihPtr) {
- fd = xf86RemoveInputHandler(APMihPtr);
- close(fd);
- APMihPtr = NULL;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_axp.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_axp.c
deleted file mode 100644
index 00b928a5e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_axp.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* $XFree86: bsd_axp.c,v 1.2 2002/10/29 23:19:13 herrb Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Axp.h"
-#include <sys/param.h>
-#include "xf86_OSlib.h"
-#include <stdio.h>
-#include <sys/sysctl.h>
-
-axpDevice bsdGetAXP(void);
-
-/*
- * BSD does a very nice job providing system information to
- * user space programs. Unfortunately it doesn't provide all
- * the information required. Therefore we just obtain the
- * system type and look up the rest from a list we maintain
- * ourselves.
- */
-
-typedef struct {
- char *name;
- int type;
-} _AXP;
-
-static _AXP axpList[] = {
- {"apecs",APECS},
- {"pyxis",PYXIS},
- {"cia",CIA},
- {"irongate",IRONGATE},
- {"lca",LCA},
- {"t2",T2},
- {"tsunami",TSUNAMI},
- {NULL,NONE}
-};
-
-axpDevice
-bsdGetAXP(void)
-{
- int i;
- char sysname[64];
- size_t len = sizeof(sysname);
-
-#ifdef __OpenBSD__
- int mib[3];
- int error;
-
- mib[0] = CTL_MACHDEP;
- mib[1] = CPU_CHIPSET;
- mib[2] = CPU_CHIPSET_TYPE;
-
- if ((error = sysctl(mib, 3, &sysname, &len, NULL, 0)) < 0)
-#else
- if ((sysctlbyname("hw.chipset.type", &sysname, &len,
- 0, 0)) < 0)
-#endif
- FatalError("bsdGetAXP: can't find machine type\n");
-#ifdef DEBUG
- xf86Msg(X_INFO,"AXP is a: %s\n",sysname);
-#endif
- for (i=0;;i++) {
- if (axpList[i].name == NULL)
- return NONE;
- if (!strcmp(sysname, axpList[i].name))
- return axpList[i].type;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_ev56.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_ev56.c
deleted file mode 100644
index 62952a343..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_ev56.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_ev56.c,v 1.1 2000/03/05 16:59:17 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-int readDense8(pointer Base, register unsigned long Offset);
-int readDense16(pointer Base, register unsigned long Offset);
-int readDense32(pointer Base, register unsigned long Offset);
-void
-writeDenseNB8(int Value, pointer Base, register unsigned long Offset);
-void
-writeDenseNB16(int Value, pointer Base, register unsigned long Offset);
-void
-writeDenseNB32(int Value, pointer Base, register unsigned long Offset);
-void
-writeDense8(int Value, pointer Base, register unsigned long Offset);
-void
-writeDense16(int Value, pointer Base, register unsigned long Offset);
-void
-writeDense32(int Value, pointer Base, register unsigned long Offset);
-
-int
-readDense8(pointer Base, register unsigned long Offset)
-{
- mem_barrier();
- return *(volatile CARD8*) ((unsigned long)Base+(Offset));
-}
-
-int
-readDense16(pointer Base, register unsigned long Offset)
-{
- mem_barrier();
- return *(volatile CARD16*) ((unsigned long)Base+(Offset));
-}
-
-int
-readDense32(pointer Base, register unsigned long Offset)
-{
- mem_barrier();
- return *(volatile CARD32*)((unsigned long)Base+(Offset));
-}
-
-void
-writeDenseNB8(int Value, pointer Base, register unsigned long Offset)
-{
- *(volatile CARD8*)((unsigned long)Base+(Offset)) = Value;
-}
-
-void
-writeDenseNB16(int Value, pointer Base, register unsigned long Offset)
-{
- *(volatile CARD16*)((unsigned long)Base + (Offset)) = Value;
-}
-
-void
-writeDenseNB32(int Value, pointer Base, register unsigned long Offset)
-{
- *(volatile CARD32*)((unsigned long)Base+(Offset)) = Value;
-}
-
-void
-writeDense8(int Value, pointer Base, register unsigned long Offset)
-{
- write_mem_barrier();
- *(volatile CARD8 *)((unsigned long)Base+(Offset)) = Value;
-}
-
-void
-writeDense16(int Value, pointer Base, register unsigned long Offset)
-{
- write_mem_barrier();
- *(volatile CARD16 *)((unsigned long)Base+(Offset)) = Value;
-}
-
-void
-writeDense32(int Value, pointer Base, register unsigned long Offset)
-{
- write_mem_barrier();
- *(volatile CARD32 *)((unsigned long)Base+(Offset)) = Value;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_init.c
deleted file mode 100644
index 4d883a2be..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_init.c
+++ /dev/null
@@ -1,738 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_init.c,v 3.21 2003/09/24 02:43:34 dawes Exp $ */
-/*
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Rich Murphey and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Rich Murphey and
- * David Wexelblat make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: bsd_init.c /main/8 1996/10/23 13:13:05 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include <sys/utsname.h>
-#include <sys/ioctl.h>
-#include <stdlib.h>
-#include <errno.h>
-
-static Bool KeepTty = FALSE;
-static int devConsoleFd = -1;
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
-static int VTnum = -1;
-static int initialVT = -1;
-#endif
-
-#ifdef PCCONS_SUPPORT
-/* Stock 0.1 386bsd pccons console driver interface */
-#ifndef __OpenBSD__
-# define PCCONS_CONSOLE_DEV1 "/dev/ttyv0"
-#else
-# define PCCONS_CONSOLE_DEV1 "/dev/ttyC0"
-#endif
-#define PCCONS_CONSOLE_DEV2 "/dev/vga"
-#define PCCONS_CONSOLE_MODE O_RDWR|O_NDELAY
-#endif
-
-#ifdef SYSCONS_SUPPORT
-/* The FreeBSD 1.1 version syscons driver uses /dev/ttyv0 */
-#define SYSCONS_CONSOLE_DEV1 "/dev/ttyv0"
-#define SYSCONS_CONSOLE_DEV2 "/dev/vga"
-#define SYSCONS_CONSOLE_MODE O_RDWR|O_NDELAY
-#endif
-
-#ifdef PCVT_SUPPORT
-/* Hellmuth Michaelis' pcvt driver */
-#ifndef __OpenBSD__
-# define PCVT_CONSOLE_DEV "/dev/ttyv0"
-#else
-# define PCVT_CONSOLE_DEV "/dev/ttyC0"
-#endif
-#define PCVT_CONSOLE_MODE O_RDWR|O_NDELAY
-#endif
-
-#if defined(WSCONS_SUPPORT) && defined(__NetBSD__)
-/* NetBSD's new console driver */
-#define WSCONS_PCVT_COMPAT_CONSOLE_DEV "/dev/ttyE0"
-#endif
-
-#ifdef __GLIBC__
-#define setpgrp setpgid
-#endif
-
-#define CHECK_DRIVER_MSG \
- "Check your kernel's console driver configuration and /dev entries"
-
-static char *supported_drivers[] = {
-#ifdef PCCONS_SUPPORT
- "pccons (with X support)",
-#endif
-#ifdef SYSCONS_SUPPORT
- "syscons",
-#endif
-#ifdef PCVT_SUPPORT
- "pcvt",
-#endif
-#ifdef WSCONS_SUPPORT
- "wscons",
-#endif
-};
-
-
-/*
- * Functions to probe for the existance of a supported console driver.
- * Any function returns either a valid file descriptor (driver probed
- * succesfully), -1 (driver not found), or uses FatalError() if the
- * driver was found but proved to not support the required mode to run
- * an X server.
- */
-
-typedef int (*xf86ConsOpen_t)(void);
-
-#ifdef PCCONS_SUPPORT
-static int xf86OpenPccons(void);
-#endif /* PCCONS_SUPPORT */
-
-#ifdef SYSCONS_SUPPORT
-static int xf86OpenSyscons(void);
-#endif /* SYSCONS_SUPPORT */
-
-#ifdef PCVT_SUPPORT
-static int xf86OpenPcvt(void);
-#endif /* PCVT_SUPPORT */
-
-#ifdef WSCONS_SUPPORT
-static int xf86OpenWScons(void);
-#endif
-
-/*
- * The sequence of the driver probes is important; start with the
- * driver that is best distinguishable, and end with the most generic
- * driver. (Otherwise, pcvt would also probe as syscons, and either
- * pcvt or syscons might succesfully probe as pccons.)
- */
-static xf86ConsOpen_t xf86ConsTab[] = {
-#ifdef PCVT_SUPPORT
- xf86OpenPcvt,
-#endif
-#ifdef SYSCONS_SUPPORT
- xf86OpenSyscons,
-#endif
-#ifdef PCCONS_SUPPORT
- xf86OpenPccons,
-#endif
-#ifdef WSCONS_SUPPORT
- xf86OpenWScons,
-#endif
- (xf86ConsOpen_t)NULL
-};
-
-
-void
-xf86OpenConsole()
-{
- int i, fd = -1;
- xf86ConsOpen_t *driver;
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- int result;
- struct utsname uts;
- vtmode_t vtmode;
-#endif
-
- if (serverGeneration == 1)
- {
- /* check if we are run with euid==0 */
- if (geteuid() != 0)
- {
- FatalError("xf86OpenConsole: Server must be suid root");
- }
-
- if (!KeepTty)
- {
- /*
- * detaching the controlling tty solves problems of kbd character
- * loss. This is not interesting for CO driver, because it is
- * exclusive.
- */
- setpgrp(0, getpid());
- if ((i = open("/dev/tty",O_RDWR)) >= 0)
- {
- ioctl(i,TIOCNOTTY,(char *)0);
- close(i);
- }
- }
-
- /* detect which driver we are running on */
- for (driver = xf86ConsTab; *driver; driver++)
- {
- if ((fd = (*driver)()) >= 0)
- break;
- }
-
- /* Check that a supported console driver was found */
- if (fd < 0)
- {
- char cons_drivers[80] = {0, };
- for (i = 0; i < sizeof(supported_drivers) / sizeof(char *); i++)
- {
- if (i)
- {
- strcat(cons_drivers, ", ");
- }
- strcat(cons_drivers, supported_drivers[i]);
- }
- FatalError(
- "%s: No console driver found\n\tSupported drivers: %s\n\t%s",
- "xf86OpenConsole", cons_drivers, CHECK_DRIVER_MSG);
- }
-#if 0 /* stdin is already closed in OsInit() */
- fclose(stdin);
-#endif
- xf86Info.consoleFd = fd;
- xf86Info.screenFd = fd;
-
- switch (xf86Info.consType)
- {
-#ifdef PCCONS_SUPPORT
- case PCCONS:
- if (ioctl (xf86Info.consoleFd, CONSOLE_X_MODE_ON, 0) < 0)
- {
- FatalError("%s: CONSOLE_X_MODE_ON failed (%s)\n%s",
- "xf86OpenConsole", strerror(errno),
- CHECK_DRIVER_MSG);
- }
- /*
- * Hack to prevent keyboard hanging when syslogd closes
- * /dev/console
- */
- if ((devConsoleFd = open("/dev/console", O_WRONLY,0)) < 0)
- {
- xf86Msg(X_WARNING,
- "xf86OpenConsole: couldn't open /dev/console (%s)\n",
- strerror(errno));
- }
- break;
-#endif
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case SYSCONS:
- /* as of FreeBSD 2.2.8, syscons driver does not need the #1 vt
- * switching anymore. Here we check for FreeBSD 3.1 and up.
- * Add cases for other *BSD that behave the same.
- */
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
- uname (&uts);
- i = atof(uts.release) * 100;
- if (i >= 310) goto acquire_vt;
-#endif
- /* otherwise fall through */
- case PCVT:
- /*
- * First activate the #1 VT. This is a hack to allow a server
- * to be started while another one is active. There should be
- * a better way.
- */
- if (initialVT != 1) {
-
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, 1) != 0)
- {
- xf86Msg(X_WARNING,
- "xf86OpenConsole: VT_ACTIVATE failed\n");
- }
- sleep(1);
- }
-
-acquire_vt:
- /*
- * now get the VT
- */
- SYSCALL(result =
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno));
- if (result != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
- }
- SYSCALL(result =
- ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno));
- if (result != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
- }
-
- signal(SIGUSR1, xf86VTRequest);
-
- vtmode.mode = VT_PROCESS;
- vtmode.relsig = SIGUSR1;
- vtmode.acqsig = SIGUSR1;
- vtmode.frsig = SIGUSR1;
- if (ioctl(xf86Info.consoleFd, VT_SETMODE, &vtmode) < 0)
- {
- FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed");
- }
-#if !defined(USE_DEV_IO) && !defined(USE_I386_IOPL)
- if (ioctl(xf86Info.consoleFd, KDENABIO, 0) < 0)
- {
- FatalError("xf86OpenConsole: KDENABIO failed (%s)",
- strerror(errno));
- }
-#endif
- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0)
- {
- FatalError("xf86OpenConsole: KDSETMODE KD_GRAPHICS failed");
- }
- break;
-#endif /* SYSCONS_SUPPORT || PCVT_SUPPORT */
-#ifdef WSCONS_SUPPORT
- case WSCONS:
- fprintf(stderr, "xf86OpenConsole\n");
- /* xf86Info.consoleFd = open("/dev/wskbd0", 0); */
- break;
-#endif
- }
- }
- else
- {
- /* serverGeneration != 1 */
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- if (xf86Info.consType == SYSCONS || xf86Info.consType == PCVT)
- {
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
- }
- }
-#endif /* SYSCONS_SUPPORT || PCVT_SUPPORT */
- }
- return;
-}
-
-
-#ifdef PCCONS_SUPPORT
-
-static int
-xf86OpenPccons()
-{
- int fd = -1;
-
- if ((fd = open(PCCONS_CONSOLE_DEV1, PCCONS_CONSOLE_MODE, 0))
- >= 0 ||
- (fd = open(PCCONS_CONSOLE_DEV2, PCCONS_CONSOLE_MODE, 0))
- >= 0)
- {
- if (ioctl(fd, CONSOLE_X_MODE_OFF, 0) < 0)
- {
- FatalError(
- "%s: CONSOLE_X_MODE_OFF failed (%s)\n%s\n%s",
- "xf86OpenPccons",
- strerror(errno),
- "Was expecting pccons driver with X support",
- CHECK_DRIVER_MSG);
- }
- xf86Info.consType = PCCONS;
- xf86Msg(X_PROBED, "Using pccons driver with X support\n");
- }
- return fd;
-}
-
-#endif /* PCCONS_SUPPORT */
-
-#ifdef SYSCONS_SUPPORT
-
-static int
-xf86OpenSyscons()
-{
- int fd = -1;
- vtmode_t vtmode;
- char vtname[12];
- struct stat status;
- long syscons_version;
- MessageType from;
-
- /* Check for syscons */
- if ((fd = open(SYSCONS_CONSOLE_DEV1, SYSCONS_CONSOLE_MODE, 0)) >= 0
- || (fd = open(SYSCONS_CONSOLE_DEV2, SYSCONS_CONSOLE_MODE, 0)) >= 0)
- {
- if (ioctl(fd, VT_GETMODE, &vtmode) >= 0)
- {
- /* Get syscons version */
- if (ioctl(fd, CONS_GETVERS, &syscons_version) < 0)
- {
- syscons_version = 0;
- }
-
- xf86Info.vtno = VTnum;
- from = X_CMDLINE;
-
-#ifdef VT_GETACTIVE
- if (ioctl(fd, VT_GETACTIVE, &initialVT) < 0)
- initialVT = -1;
-#endif
- if (xf86Info.vtno == -1)
- {
- /*
- * For old syscons versions (<0x100), VT_OPENQRY returns
- * the current VT rather than the next free VT. In this
- * case, the server gets started on the current VT instead
- * of the next free VT.
- */
-
-#if 0
- /* check for the fixed VT_OPENQRY */
- if (syscons_version >= 0x100)
- {
-#endif
- if (ioctl(fd, VT_OPENQRY, &xf86Info.vtno) < 0)
- {
- /* No free VTs */
- xf86Info.vtno = -1;
- }
-#if 0
- }
-#endif
-
- if (xf86Info.vtno == -1)
- {
- /*
- * All VTs are in use. If initialVT was found, use it.
- * Otherwise, if stdin is a VT, use that one.
- * XXX stdin is already closed, so this won't work.
- */
- if (initialVT != -1)
- {
- xf86Info.vtno = initialVT;
- }
- else if ((fstat(0, &status) >= 0)
- && S_ISCHR(status.st_mode)
- && (ioctl(0, VT_GETMODE, &vtmode) >= 0))
- {
- /* stdin is a VT */
- xf86Info.vtno = minor(status.st_rdev) + 1;
- }
- else
- {
- if (syscons_version >= 0x100)
- {
- FatalError("%s: Cannot find a free VT",
- "xf86OpenSyscons");
- }
- /* Should no longer reach here */
- FatalError("%s: %s %s\n\t%s %s",
- "xf86OpenSyscons",
- "syscons versions prior to 1.0 require",
- "either the",
- "server's stdin be a VT",
- "or the use of the vtxx server option");
- }
- }
- from = X_PROBED;
- }
-
- close(fd);
-#ifndef __OpenBSD__
- sprintf(vtname, "/dev/ttyv%01x", xf86Info.vtno - 1);
-#else
- sprintf(vtname, "/dev/ttyC%01x", xf86Info.vtno - 1);
-#endif
- if ((fd = open(vtname, SYSCONS_CONSOLE_MODE, 0)) < 0)
- {
- FatalError("xf86OpenSyscons: Cannot open %s (%s)",
- vtname, strerror(errno));
- }
- if (ioctl(fd, VT_GETMODE, &vtmode) < 0)
- {
- FatalError("xf86OpenSyscons: VT_GETMODE failed");
- }
- xf86Info.consType = SYSCONS;
- xf86Msg(X_PROBED, "Using syscons driver with X support");
- if (syscons_version >= 0x100)
- {
- xf86ErrorF(" (version %ld.%ld)\n", syscons_version >> 8,
- syscons_version & 0xFF);
- }
- else
- {
- xf86ErrorF(" (version 0.x)\n");
- }
- xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno);
- }
- else
- {
- /* VT_GETMODE failed, probably not syscons */
- close(fd);
- fd = -1;
- }
- }
- return fd;
-}
-
-#endif /* SYSCONS_SUPPORT */
-
-
-#ifdef PCVT_SUPPORT
-
-static int
-xf86OpenPcvt()
-{
- /* This looks much like syscons, since pcvt is API compatible */
- int fd = -1;
- vtmode_t vtmode;
- char vtname[12], *vtprefix;
- struct stat status;
- struct pcvtid pcvt_version;
-
-#ifndef __OpenBSD__
- vtprefix = "/dev/ttyv";
-#else
- vtprefix = "/dev/ttyC";
-#endif
-
- fd = open(PCVT_CONSOLE_DEV, PCVT_CONSOLE_MODE, 0);
-#ifdef WSCONS_PCVT_COMPAT_CONSOLE_DEV
- if (fd < 0)
- {
- fd = open(WSCONS_PCVT_COMPAT_CONSOLE_DEV, PCVT_CONSOLE_MODE, 0);
- vtprefix = "/dev/ttyE";
- }
-#endif
- if (fd >= 0)
- {
- if (ioctl(fd, VGAPCVTID, &pcvt_version) >= 0)
- {
- if(ioctl(fd, VT_GETMODE, &vtmode) < 0)
- {
- FatalError("%s: VT_GETMODE failed\n%s%s\n%s",
- "xf86OpenPcvt",
- "Found pcvt driver but X11 seems to be",
- " not supported.", CHECK_DRIVER_MSG);
- }
-
- xf86Info.vtno = VTnum;
-
- if (ioctl(fd, VT_GETACTIVE, &initialVT) < 0)
- initialVT = -1;
-
- if (xf86Info.vtno == -1)
- {
- if (ioctl(fd, VT_OPENQRY, &xf86Info.vtno) < 0)
- {
- /* No free VTs */
- xf86Info.vtno = -1;
- }
-
- if (xf86Info.vtno == -1)
- {
- /*
- * All VTs are in use. If initialVT was found, use it.
- * Otherwise, if stdin is a VT, use that one.
- * XXX stdin is already closed, so this won't work.
- */
- if (initialVT != -1)
- {
- xf86Info.vtno = initialVT;
- }
- else if ((fstat(0, &status) >= 0)
- && S_ISCHR(status.st_mode)
- && (ioctl(0, VT_GETMODE, &vtmode) >= 0))
- {
- /* stdin is a VT */
- xf86Info.vtno = minor(status.st_rdev) + 1;
- }
- else
- {
- FatalError("%s: Cannot find a free VT",
- "xf86OpenPcvt");
- }
- }
- }
-
- close(fd);
- sprintf(vtname, "%s%01x", vtprefix, xf86Info.vtno - 1);
- if ((fd = open(vtname, PCVT_CONSOLE_MODE, 0)) < 0)
- {
- FatalError("xf86OpenPcvt: Cannot open %s (%s)",
- vtname, strerror(errno));
- }
- if (ioctl(fd, VT_GETMODE, &vtmode) < 0)
- {
- FatalError("xf86OpenPcvt: VT_GETMODE failed");
- }
- xf86Info.consType = PCVT;
-#ifdef WSCONS_SUPPORT
- xf86Msg(X_PROBED,
- "Using wscons driver in pcvt compatibility mode "
- "(version %d.%d)\n",
- pcvt_version.rmajor, pcvt_version.rminor);
-#else
- xf86Msg(X_PROBED, "Using pcvt driver (version %d.%d)\n",
- pcvt_version.rmajor, pcvt_version.rminor);
-#endif
- }
- else
- {
- /* Not pcvt */
- close(fd);
- fd = -1;
- }
- }
- return fd;
-}
-
-#endif /* PCVT_SUPPORT */
-
-#ifdef WSCONS_SUPPORT
-
-static int
-xf86OpenWScons()
-{
- int fd = -1;
- int mode = WSDISPLAYIO_MODE_MAPPED;
- int i;
- char ttyname[16];
-
- /* XXX Is this ok? */
- for (i = 0; i < 8; i++) {
-#if defined(__NetBSD__)
- sprintf(ttyname, "/dev/ttyE%d", i);
-#elif defined(__OpenBSD__)
- sprintf(ttyname, "/dev/ttyC%d", i);
-#endif
- if ((fd = open(ttyname, 2)) != -1)
- break;
- }
- if (fd != -1) {
- if (ioctl(fd, WSDISPLAYIO_SMODE, &mode) < 0) {
- FatalError("%s: WSDISPLAYIO_MODE_MAPPED failed (%s)\n%s",
- "xf86OpenConsole", strerror(errno),
- CHECK_DRIVER_MSG);
- }
- xf86Info.consType = WSCONS;
- xf86Msg(X_PROBED, "Using wscons driver\n");
- }
- return fd;
-}
-
-#endif /* WSCONS_SUPPORT */
-
-void
-xf86CloseConsole()
-{
-#if defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT)
- struct vt_mode VT;
-#endif
-
- switch (xf86Info.consType)
- {
-#ifdef PCCONS_SUPPORT
- case PCCONS:
- ioctl (xf86Info.consoleFd, CONSOLE_X_MODE_OFF, 0);
- break;
-#endif /* PCCONS_SUPPORT */
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case SYSCONS:
- case PCVT:
- ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT); /* Back to text mode */
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) != -1)
- {
- VT.mode = VT_AUTO;
- ioctl(xf86Info.consoleFd, VT_SETMODE, &VT); /* dflt vt handling */
- }
-#if !defined(USE_DEV_IO) && !defined(USE_I386_IOPL)
- if (ioctl(xf86Info.consoleFd, KDDISABIO, 0) < 0)
- {
- xf86FatalError("xf86CloseConsole: KDDISABIO failed (%s)",
- strerror(errno));
- }
-#endif
- if (initialVT != -1)
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, initialVT);
- break;
-#endif /* SYSCONS_SUPPORT || PCVT_SUPPORT */
-#ifdef WSCONS_SUPPORT
- case WSCONS:
- {
- int mode = WSDISPLAYIO_MODE_EMUL;
- ioctl(xf86Info.screenFd, WSDISPLAYIO_SMODE, &mode);
- break;
- }
-#endif
- }
-
- if (xf86Info.screenFd != xf86Info.consoleFd)
- {
- close(xf86Info.screenFd);
- close(xf86Info.consoleFd);
- if ((xf86Info.consoleFd = open("/dev/console",O_RDONLY,0)) <0)
- {
- xf86FatalError("xf86CloseConsole: Cannot open /dev/console (%s)",
- strerror(errno));
- }
- }
- close(xf86Info.consoleFd);
- if (devConsoleFd >= 0)
- close(devConsoleFd);
- return;
-}
-
-int
-xf86ProcessArgument(int argc, char *argv[], int i)
-{
- /*
- * Keep server from detaching from controlling tty. This is useful
- * when debugging (so the server can receive keyboard signals.
- */
- if (!strcmp(argv[i], "-keeptty"))
- {
- KeepTty = TRUE;
- return(1);
- }
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
- {
- if (sscanf(argv[i], "vt%2d", &VTnum) == 0 ||
- VTnum < 1 || VTnum > 12)
- {
- UseMsg();
- VTnum = -1;
- return(0);
- }
- return(1);
- }
-#endif /* SYSCONS_SUPPORT || PCVT_SUPPORT */
- return(0);
-}
-
-void
-xf86UseMsg()
-{
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- ErrorF("vtXX use the specified VT number (1-12)\n");
-#endif /* SYSCONS_SUPPORT || PCVT_SUPPORT */
- ErrorF("-keeptty ");
- ErrorF("don't detach controlling tty (for debugging only)\n");
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_io.c
deleted file mode 100644
index 3b1f58889..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_io.c
+++ /dev/null
@@ -1,294 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_io.c,v 3.22 2002/05/18 21:15:16 herrb Exp $ */
-/*
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- *
- * 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, and that the names of Rich Murphey and David Dawes
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Rich Murphey and
- * David Dawes make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * RICH MURPHEY AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID DAWES BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: bsd_io.c /main/11 1996/10/19 18:06:07 kaleb $ */
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <termios.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#ifdef WSCONS_SUPPORT
-#define KBD_FD(i) ((i).kbdFd != -1 ? (i).kbdFd : (i).consoleFd)
-#endif
-
-void
-xf86SoundKbdBell(int loudness, int pitch, int duration)
-{
-#ifdef WSCONS_SUPPORT
- struct wskbd_bell_data wsb;
-#endif
-
- if (loudness && pitch)
- {
-#ifdef PCCONS_SUPPORT
- int data[2];
-#endif
-
- switch (xf86Info.consType) {
-
-#ifdef PCCONS_SUPPORT
- case PCCONS:
- data[0] = pitch;
- data[1] = (duration * loudness) / 50;
- ioctl(xf86Info.consoleFd, CONSOLE_X_BELL, data);
- break;
-#endif
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case SYSCONS:
- case PCVT:
- ioctl(xf86Info.consoleFd, KDMKTONE,
- ((1193190 / pitch) & 0xffff) |
- (((unsigned long)duration*loudness/50)<<16));
- break;
-#endif
-#if defined (WSCONS_SUPPORT)
- case WSCONS:
- wsb.which = WSKBD_BELL_DOALL;
- wsb.pitch = pitch;
- wsb.period = duration;
- wsb.volume = loudness;
- ioctl(KBD_FD(xf86Info), WSKBDIO_COMPLEXBELL,
- &wsb);
- break;
-#endif
- }
- }
-}
-
-void
-xf86SetKbdLeds(int leds)
-{
- switch (xf86Info.consType) {
-
- case PCCONS:
- break;
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case SYSCONS:
- case PCVT:
- ioctl(xf86Info.consoleFd, KDSETLED, leds);
- break;
-#endif
-#if defined(WSCONS_SUPPORT)
- case WSCONS:
- ioctl(KBD_FD(xf86Info), WSKBDIO_SETLEDS, &leds);
- break;
-#endif
- }
-}
-
-int
-xf86GetKbdLeds()
-{
- int leds = 0;
-
- switch (xf86Info.consType) {
-
- case PCCONS:
- break;
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case SYSCONS:
- case PCVT:
- ioctl(xf86Info.consoleFd, KDGETLED, &leds);
- break;
-#endif
-#if defined(WSCONS_SUPPORT)
- case WSCONS:
- ioctl(KBD_FD(xf86Info), WSKBDIO_GETLEDS, &leds);
- break;
-#endif
- }
- return(leds);
-}
-
-void
-xf86SetKbdRepeat(char rad)
-{
- switch (xf86Info.consType) {
-
- case PCCONS:
- break;
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case SYSCONS:
- case PCVT:
- ioctl(xf86Info.consoleFd, KDSETRAD, rad);
- break;
-#endif
- }
-}
-
-#if defined(SYSCONS_SUPPORT) || defined(PCCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT)
-static struct termios kbdtty;
-#endif
-
-void
-xf86KbdInit()
-{
- switch (xf86Info.consType) {
-
-#if defined(PCCONS_SUPPORT) || defined(SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case PCCONS:
- case SYSCONS:
- case PCVT:
- tcgetattr(xf86Info.consoleFd, &kbdtty);
- break;
-#endif
-#if defined WSCONS_SUPPORT
- case WSCONS:
- if (xf86Info.kbdFd != -1)
- xf86FlushInput(xf86Info.kbdFd);
- else
- tcgetattr(xf86Info.consoleFd, &kbdtty);
- break;
-#endif
- }
-}
-
-int
-xf86KbdOn()
-{
- struct termios nTty;
-#ifdef WSCONS_SUPPORT
- int option;
-#endif
-
-
- switch (xf86Info.consType) {
-
-#if defined(SYSCONS_SUPPORT) || defined(PCCONS_SUPPORT) || defined(PCVT_SUPPORT)
- case SYSCONS:
- case PCCONS:
- case PCVT:
- nTty = kbdtty;
- nTty.c_iflag = IGNPAR | IGNBRK;
- nTty.c_oflag = 0;
- nTty.c_cflag = CREAD | CS8;
- nTty.c_lflag = 0;
- nTty.c_cc[VTIME] = 0;
- nTty.c_cc[VMIN] = 1;
- cfsetispeed(&nTty, 9600);
- cfsetospeed(&nTty, 9600);
- tcsetattr(xf86Info.consoleFd, TCSANOW, &nTty);
-
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- ioctl(xf86Info.consoleFd, KDSKBMODE, K_RAW);
-#endif
- break;
-#endif
-#ifdef WSCONS_SUPPORT
- case WSCONS:
- if (xf86Info.kbdFd == -1) {
- nTty = kbdtty;
- nTty.c_iflag = IGNPAR | IGNBRK;
- nTty.c_oflag = 0;
- nTty.c_cflag = CREAD | CS8;
- nTty.c_lflag = 0;
- nTty.c_cc[VTIME] = 0;
- nTty.c_cc[VMIN] = 1;
- cfsetispeed(&nTty, 9600);
- cfsetospeed(&nTty, 9600);
- tcsetattr(xf86Info.consoleFd, TCSANOW, &nTty);
- option = WSKBD_RAW;
- if (ioctl(xf86Info.consoleFd, WSKBDIO_SETMODE,
- &option) == -1)
- FatalError("can't switch keyboard to raw mode. "
- "Enable support for it in the kernel\n"
- "or use for example:\n\n"
- "Option \"Protocol\" \"wskbd\"\n"
- "Option \"Device\" \"/dev/wskbd0\"\n"
- "\nin your XF86Config(5) file\n");
- } else {
- return xf86Info.kbdFd;
- }
-#endif
- }
- return(xf86Info.consoleFd);
-}
-
-int
-xf86KbdOff()
-{
-#ifdef WSCONS_SUPPORT
- int option;
-#endif
-
- switch (xf86Info.consType) {
-
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case SYSCONS:
- case PCVT:
- ioctl(xf86Info.consoleFd, KDSKBMODE, K_XLATE);
- /* FALL THROUGH */
-#endif
-#if defined(SYSCONS_SUPPORT) || defined(PCCONS_SUPPORT) || defined(PCVT_SUPPORT)
- case PCCONS:
- tcsetattr(xf86Info.consoleFd, TCSANOW, &kbdtty);
- break;
-#endif
-#ifdef WSCONS_SUPPORT
- case WSCONS:
- if (xf86Info.kbdFd != -1) {
- return xf86Info.kbdFd;
- } else {
- option = WSKBD_TRANSLATED;
- ioctl(xf86Info.consoleFd, WSKBDIO_SETMODE, &option);
- tcsetattr(xf86Info.consoleFd, TCSANOW, &kbdtty);
- }
- break;
-#endif
- }
- return(xf86Info.consoleFd);
-}
-
-#ifdef WSCONS_SUPPORT
-
-#define NUMEVENTS 64
-
-void
-xf86WSKbdEvents(void)
-{
- static struct wscons_event events[NUMEVENTS];
- int n, i;
-
- n = read(xf86Info.kbdFd, events, sizeof events);
- if (n <= 0)
- return;
- n /= sizeof(struct wscons_event);
- for (i = 0; i < n; i++)
- xf86PostWSKbdEvent(&events[i]);
-}
-
-#endif /* WSCONS_SUPPORT */
-
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_jstk.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_jstk.c
deleted file mode 100644
index 00f457b88..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_jstk.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright 1995 by Frederic Lepied, France. <fred@sugix.frmug.fr.net>
- *
- * 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, and that the name of Frederic Lepied not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Frederic Lepied makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * FREDERIC LEPIED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL FREDERIC LEPIED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/* Modified for FreeBSD by David Dawes <dawes@XFree86.org> */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_jstk.c,v 3.7 1998/07/25 16:56:34 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <sys/types.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <machine/joystick.h>
-#include <fcntl.h>
-
-#ifdef XFree86LOADER
-#include "misc.h"
-#include "xf86_libc.h"
-#endif
-#include "xf86.h"
-
-#define JS_RETURN sizeof(struct joystick)
-
-/***********************************************************************
- *
- * xf86JoystickOn --
- *
- * open the device and init timeout according to the device value.
- *
- ***********************************************************************
- */
-
-int
-xf86JoystickOn(char * name, int *timeout, int *centerX, int *centerY)
-{
- int status;
- int changed = 0;
- int timeinmicros;
- struct joystick js;
-
-#ifdef DEBUG
- ErrorF("xf86JoystickOn: %s\n", name);
-#endif
-
- if ((status = open(name, O_RDWR | O_NDELAY, 0)) < 0)
- {
- xf86Msg(X_WARNING, "xf86JoystickOn: Cannot open joystick '%s' (%s)\n",
- name, strerror(errno));
- return -1;
- }
-
- if (*timeout <= 0) {
- /* Use the current setting */
- ioctl(status, JOY_GETTIMEOUT, (char *)&timeinmicros);
- *timeout = timeinmicros / 1000;
- if (*timeout == 0)
- *timeout = 1;
- changed = 1;
- }
- /* Maximum allowed timeout in the FreeBSD driver is 10ms */
- if (*timeout > 10) {
- *timeout = 10;
- changed = 1;
- }
-
- if (changed)
- xf86Msg(X_PROBED, "Joystick: timeout value = %d\n", *timeout);
-
- timeinmicros = *timeout * 1000;
-
- /* Assume the joystick is centred when this is called */
- read(status, &js, JS_RETURN);
- if (*centerX < 0) {
- *centerX = js.x;
- xf86Msg(X_PROBED, "Joystick: CenterX set to %d\n", *centerX);
- }
- if (*centerY < 0) {
- *centerY = js.y;
- xf86Msg(X_PROBED, "Joystick: CenterY set to %d\n", *centerY);
- }
-
- return status;
-}
-
-/***********************************************************************
- *
- * xf86JoystickInit --
- *
- * called when X device is initialized.
- *
- ***********************************************************************
- */
-
-void
-xf86JoystickInit()
-{
- return;
-}
-
-/***********************************************************************
- *
- * xf86JoystickOff --
- *
- * close the handle.
- *
- ***********************************************************************
- */
-
-int
-xf86JoystickOff(int *fd, int doclose)
-{
- int oldfd;
-
- if (((oldfd = *fd) >= 0) && doclose) {
- close(*fd);
- *fd = -1;
- }
- return oldfd;
-}
-
-/***********************************************************************
- *
- * xf86JoystickGetState --
- *
- * return the state of buttons and the position of the joystick.
- *
- ***********************************************************************
- */
-
-int
-xf86JoystickGetState(int fd, int *x, int *y, int *buttons)
-{
- struct joystick js;
- int status;
-
- status = read(fd, &js, JS_RETURN);
-
- if (status != JS_RETURN)
- {
- Error("Joystick read");
- return 0;
- }
-
- *x = js.x;
- *y = js.y;
- *buttons = js.b1 | (js.b2 << 1);
-#ifdef DEBUG
- ErrorF("xf86JoystickGetState: x = %d, y = %d, buttons = %d\n", *x, *y,
- *buttons);
-#endif
-
- return 1;
-}
-
-#ifdef XFree86LOADER
-/*
- * Entry point for XFree86 Loader
- */
-void
-bsd_jstkModuleInit(pointer *data, INT32 *magic)
-{
- *magic = MAGIC_DONE;
- *data = NULL;
-}
-#endif
-/* end of bsd_jstk.c */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c
deleted file mode 100644
index 18219e5bc..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c
+++ /dev/null
@@ -1,573 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c,v 1.8 2003/11/04 03:16:58 tsi Exp $ */
-
-/*
- * Copyright (c) 2002 by The XFree86 Project, Inc.
- * Author: Ivan Pascal.
- *
- * Based on the code from bsd_io.c which is
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- */
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <termios.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include "xf86Xinput.h"
-#include "xf86OSKbd.h"
-#include "atKeynames.h"
-#include "bsd_kbd.h"
-
-extern Bool VTSwitchEnabled;
-#ifdef USE_VT_SYSREQ
-extern Bool VTSysreqToggle;
-#endif
-
-static KbdProtocolRec protocols[] = {
- {"standard", PROT_STD },
-#ifdef WSCONS_SUPPORT
- {"wskbd", PROT_WSCONS },
-#endif
- { NULL, PROT_UNKNOWN_KBD }
-};
-
-typedef struct {
- struct termios kbdtty;
-} BsdKbdPrivRec, *BsdKbdPrivPtr;
-
-static
-int KbdInit(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- BsdKbdPrivPtr priv = (BsdKbdPrivPtr) pKbd->private;
-
- if (pKbd->isConsole) {
- switch (pKbd->consType) {
-#if defined(PCCONS_SUPPORT) || defined(SYSCONS_SUPPORT) || defined (PCVT_SUPPORT) || defined (WSCONS_SUPPORT)
- case PCCONS:
- case SYSCONS:
- case PCVT:
-#if defined WSCONS_SUPPORT
- case WSCONS:
-#endif
- tcgetattr(pInfo->fd, &(priv->kbdtty));
-#endif
- break;
- }
- }
-
- return Success;
-}
-
-static void
-SetKbdLeds(InputInfoPtr pInfo, int leds)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int real_leds = 0;
-
-#ifdef LED_CAP
- if (leds & XLED1) real_leds |= LED_CAP;
-#endif
-#ifdef LED_NUM
- if (leds & XLED2) real_leds |= LED_NUM;
-#endif
-#ifdef LED_SCR
- if (leds & XLED3) real_leds |= LED_SCR;
- if (leds & XLED4) real_leds |= LED_SCR;
-#endif
-
- switch (pKbd->consType) {
-
- case PCCONS:
- break;
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case SYSCONS:
- case PCVT:
- ioctl(pInfo->fd, KDSETLED, real_leds);
- break;
-#endif
-#if defined(WSCONS_SUPPORT)
- case WSCONS:
- ioctl(pInfo->fd, WSKBDIO_SETLEDS, &real_leds);
- break;
-#endif
- }
-}
-
-static int
-GetKbdLeds(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int leds = 0, real_leds = 0;
-
- switch (pKbd->consType) {
- case PCCONS:
- break;
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case SYSCONS:
- case PCVT:
- ioctl(pInfo->fd, KDGETLED, &real_leds);
- break;
-#endif
-#if defined(WSCONS_SUPPORT)
- case WSCONS:
- ioctl(pInfo->fd, WSKBDIO_GETLEDS, &real_leds);
- break;
-#endif
- }
-
-#ifdef LED_CAP
- if (real_leds & LED_CAP) leds |= XLED1;
-#endif
-#ifdef LED_NUM
- if (real_leds & LED_NUM) leds |= XLED2;
-#endif
-#ifdef LED_SCR
- if (real_leds & LED_SCR) leds |= XLED3;
-#endif
-
- return(leds);
-}
-
-static void
-SetKbdRepeat(InputInfoPtr pInfo, char rad)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- switch (pKbd->consType) {
-
- case PCCONS:
- break;
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case SYSCONS:
- case PCVT:
- ioctl(pInfo->fd, KDSETRAD, rad);
- break;
-#endif
- }
-}
-
-static int
-KbdOn(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-#if defined(SYSCONS_SUPPORT) || defined(PCCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT)
- BsdKbdPrivPtr priv = (BsdKbdPrivPtr) pKbd->private;
- struct termios nTty;
-#endif
-#ifdef WSCONS_SUPPORT
- int option;
-#endif
-
- if (pKbd->isConsole) {
- switch (pKbd->consType) {
-
-#if defined(SYSCONS_SUPPORT) || defined(PCCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT)
- case SYSCONS:
- case PCCONS:
- case PCVT:
-#ifdef WSCONS_SUPPORT
- case WSCONS:
-#endif
- nTty = priv->kbdtty;
- nTty.c_iflag = IGNPAR | IGNBRK;
- nTty.c_oflag = 0;
- nTty.c_cflag = CREAD | CS8;
- nTty.c_lflag = 0;
- nTty.c_cc[VTIME] = 0;
- nTty.c_cc[VMIN] = 1;
- cfsetispeed(&nTty, 9600);
- cfsetospeed(&nTty, 9600);
- if (tcsetattr(pInfo->fd, TCSANOW, &nTty) < 0) {
- xf86Msg(X_ERROR, "KbdOn: tcsetattr: %s\n",
- strerror(errno));
- }
- break;
-#endif
- }
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT) || defined (WSCONS_SUPPORT)
- switch (pKbd->consType) {
- case SYSCONS:
- case PCVT:
-#ifdef K_CODE
- if (pKbd->CustomKeycodes)
- ioctl(pInfo->fd, KDSKBMODE, K_CODE);
- else
- ioctl(pInfo->fd, KDSKBMODE, K_RAW);
-#else
- ioctl(pInfo->fd, KDSKBMODE, K_RAW);
-#endif
- break;
-#endif
-#ifdef WSCONS_SUPPORT
- case WSCONS:
- option = WSKBD_RAW;
- if (ioctl(pInfo->fd, WSKBDIO_SETMODE, &option) == -1) {
- FatalError("can't switch keyboard to raw mode. "
- "Enable support for it in the kernel\n"
- "or use for example:\n\n"
- "Option \"Protocol\" \"wskbd\"\n"
- "Option \"Device\" \"/dev/wskbd0\"\n"
- "\nin your xorg.conf(5) file\n");
- }
- break;
-#endif
- }
- }
- return Success;
-}
-
-static int
-KbdOff(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- BsdKbdPrivPtr priv = (BsdKbdPrivPtr) pKbd->private;
-#ifdef WSCONS_SUPPORT
- int option;
-#endif
-
- if (pKbd->isConsole) {
- switch (pKbd->consType) {
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case SYSCONS:
- case PCVT:
- ioctl(pInfo->fd, KDSKBMODE, K_XLATE);
- /* FALL THROUGH */
-#endif
-#if defined(SYSCONS_SUPPORT) || defined(PCCONS_SUPPORT) || defined(PCVT_SUPPORT)
- case PCCONS:
- tcsetattr(pInfo->fd, TCSANOW, &(priv->kbdtty));
- break;
-#endif
-#ifdef WSCONS_SUPPORT
- case WSCONS:
- option = WSKBD_TRANSLATED;
- ioctl(xf86Info.consoleFd, WSKBDIO_SETMODE, &option);
- tcsetattr(pInfo->fd, TCSANOW, &(priv->kbdtty));
- break;
-#endif
- }
- }
- return Success;
-}
-
-static void
-SoundBell(InputInfoPtr pInfo, int loudness, int pitch, int duration)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-#ifdef WSCONS_SUPPORT
- struct wskbd_bell_data wsb;
-#endif
-
- if (loudness && pitch) {
- switch (pKbd->consType) {
-#ifdef PCCONS_SUPPORT
- case PCCONS:
- { int data[2];
- data[0] = pitch;
- data[1] = (duration * loudness) / 50;
- ioctl(pInfo->fd, CONSOLE_X_BELL, data);
- break;
- }
-#endif
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- case SYSCONS:
- case PCVT:
- ioctl(pInfo->fd, KDMKTONE,
- ((1193190 / pitch) & 0xffff) |
- (((unsigned long)duration*loudness/50)<<16));
- break;
-#endif
-#if defined (WSCONS_SUPPORT)
- case WSCONS:
- wsb.which = WSKBD_BELL_DOALL;
- wsb.pitch = pitch;
- wsb.period = duration;
- wsb.volume = loudness;
- ioctl(pInfo->fd, WSKBDIO_COMPLEXBELL, &wsb);
- break;
-#endif
- }
- }
-}
-
-#define ModifierSet(k) ((modifiers & (k)) == (k))
-
-static
-Bool SpecialKey(InputInfoPtr pInfo, int key, Bool down, int modifiers)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-
- if(!pKbd->vtSwitchSupported)
- return FALSE;
-
- if ((ModifierSet(ControlMask | AltMask)) ||
- (ModifierSet(ControlMask | AltLangMask))) {
- if (VTSwitchEnabled && !xf86Info.vtSysreq && !xf86Info.dontVTSwitch) {
- switch (key) {
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
-#ifdef VT_ACTIVATE
- if (down) {
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, key - KEY_F1 + 1);
- return TRUE;
- }
-#endif
- case KEY_F11:
- case KEY_F12:
-#ifdef VT_ACTIVATE
- if (down) {
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, key - KEY_F11 + 11);
- return TRUE;
- }
-#endif
- }
- }
- }
-#ifdef USE_VT_SYSREQ
- if (VTSwitchEnabled && xf86Info.vtSysreq && !xf86Info.dontVTSwitch) {
- switch (key) {
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
- if (VTSysreqToggle && down) {
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, key - KEY_F1 + 1);
- VTSysreqToggle = FALSE;
- return TRUE;
- }
- break;
- case KEY_F11:
- case KEY_F12:
- if (VTSysreqToggle && down) {
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, key - KEY_F11 + 11);
- VTSysreqToggle = FALSE;
- return TRUE;
- }
- break;
- /* Ignore these keys -- ie don't let them cancel an alt-sysreq */
- case KEY_Alt:
- case KEY_AltLang:
- break;
- case KEY_SysReqest:
- if ((ModifierSet(AltMask) || ModifierSet(AltLangMask)) && down)
- VTSysreqToggle = TRUE;
- break;
- default:
- /*
- * We only land here when Alt-SysReq is followed by a
- * non-switching key.
- */
- if (VTSysreqToggle)
- VTSysreqToggle = FALSE;
- }
- }
-#endif /* USE_VT_SYSREQ */
-
- return FALSE;
-}
-
-static void
-stdReadInput(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- unsigned char rBuf[64];
- int nBytes, i;
- if ((nBytes = read( pInfo->fd, (char *)rBuf, sizeof(rBuf))) > 0) {
- for (i = 0; i < nBytes; i++)
- pKbd->PostEvent(pInfo, rBuf[i] & 0x7f,
- rBuf[i] & 0x80 ? FALSE : TRUE);
- }
-}
-
-#ifdef WSCONS_SUPPORT
-
-static void
-WSReadInput(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- struct wscons_event events[64];
- int type;
- int blocked, n, i;
-
- if ((n = read( pInfo->fd, events, sizeof(events))) > 0) {
- n /= sizeof(struct wscons_event);
- for (i = 0; i < n; i++) {
- type = events[i].type;
- if (type == WSCONS_EVENT_KEY_UP || type == WSCONS_EVENT_KEY_DOWN) {
- /* It seems better to block SIGIO there */
- blocked = xf86BlockSIGIO();
- pKbd->PostEvent(pInfo, (unsigned int)(events[i].value),
- type == WSCONS_EVENT_KEY_DOWN ? TRUE : FALSE);
- xf86UnblockSIGIO(blocked);
- }
- } /* for */
- }
-}
-
-static void
-printWsType(char *type, char *devname)
-{
- xf86Msg(X_PROBED, "%s: Keyboard type: %s\n", type, devname);
-}
-#endif
-
-static Bool
-OpenKeyboard(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int i;
- KbdProtocolId prot = PROT_UNKNOWN_KBD;
- char *s;
-
- s = xf86SetStrOption(pInfo->options, "Protocol", NULL);
- for (i = 0; protocols[i].name; i++) {
- if (xf86NameCmp(s, protocols[i].name) == 0) {
- prot = protocols[i].id;
- break;
- }
- }
-
- switch (prot) {
- case PROT_STD:
- pInfo->read_input = stdReadInput;
- break;
-#ifdef WSCONS_SUPPORT
- case PROT_WSCONS:
- pInfo->read_input = WSReadInput;
- break;
-#endif
- default:
- xf86Msg(X_ERROR,"\"%s\" is not a valid keyboard protocol name\n", s);
- xfree(s);
- return FALSE;
- }
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, s);
- xfree(s);
-
- s = xf86SetStrOption(pInfo->options, "Device", NULL);
- if (s == NULL) {
- if (prot == PROT_WSCONS) {
- xf86Msg(X_ERROR,"A \"device\" option is required with"
- " the \"wskbd\" keyboard protocol\n");
- return FALSE;
- } else {
- pInfo->fd = xf86Info.consoleFd;
- pKbd->isConsole = TRUE;
- pKbd->consType = xf86Info.consType;
- }
- } else {
- pInfo->fd = open(s, O_RDONLY | O_NONBLOCK | O_EXCL);
- if (pInfo->fd == -1) {
- xf86Msg(X_ERROR, "%s: cannot open \"%s\"\n", pInfo->name, s);
- xfree(s);
- return FALSE;
- }
- pKbd->isConsole = FALSE;
- pKbd->consType = xf86Info.consType;
- xfree(s);
- }
-
-#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
- if (pKbd->isConsole &&
- ((pKbd->consType == SYSCONS) || (pKbd->consType == PCVT)))
- pKbd->vtSwitchSupported = TRUE;
-#endif
-
-#ifdef WSCONS_SUPPORT
- if( prot == PROT_WSCONS) {
- pKbd->consType = WSCONS;
- /* Find out keyboard type */
- if (ioctl(pInfo->fd, WSKBDIO_GTYPE, &(pKbd->wsKbdType)) == -1) {
- xf86Msg(X_ERROR, "%s: cannot get keyboard type", pInfo->name);
- close(pInfo->fd);
- return FALSE;
- }
- switch (pKbd->wsKbdType) {
- case WSKBD_TYPE_PC_XT:
- printWsType("XT", pInfo->name);
- break;
- case WSKBD_TYPE_PC_AT:
- printWsType("AT", pInfo->name);
- break;
- case WSKBD_TYPE_USB:
- printWsType("USB", pInfo->name);
- break;
-#ifdef WSKBD_TYPE_ADB
- case WSKBD_TYPE_ADB:
- printWsType("ADB", pInfo->name);
- break;
-#endif
-#ifdef WSKBD_TYPE_SUN
- case WSKBD_TYPE_SUN:
- printWsType("Sun", pInfo->name);
- break;
-#endif
-#ifdef WSKBD_TYPE_SUN5
- case WSKBD_TYPE_SUN5:
- xf86Msg(X_PROBED, "Keyboard type: Sun5\n");
- break;
-#endif
- default:
- xf86Msg(X_ERROR, "%s: Unsupported wskbd type \"%d\"",
- pInfo->name, pKbd->wsKbdType);
- close(pInfo->fd);
- return FALSE;
- }
- }
-#endif
- return TRUE;
-}
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = pInfo->private;
-
- pKbd->KbdInit = KbdInit;
- pKbd->KbdOn = KbdOn;
- pKbd->KbdOff = KbdOff;
- pKbd->Bell = SoundBell;
- pKbd->SetLeds = SetKbdLeds;
- pKbd->GetLeds = GetKbdLeds;
- pKbd->SetKbdRepeat = SetKbdRepeat;
- pKbd->KbdGetMapping = KbdGetMapping;
- pKbd->SpecialKey = SpecialKey;
-
- pKbd->RemapScanCode = NULL;
- pKbd->GetSpecialKey = NULL;
-
- pKbd->OpenKeyboard = OpenKeyboard;
- pKbd->vtSwitchSupported = FALSE;
- pKbd->CustomKeycodes = FALSE;
-
- pKbd->private = xcalloc(sizeof(BsdKbdPrivRec), 1);
- if (pKbd->private == NULL) {
- xf86Msg(X_ERROR,"can't allocate keyboard OS private data\n");
- return FALSE;
- }
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.h
deleted file mode 100644
index 7b9cd434e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* $XFree86$ */
-
-extern void KbdGetMapping(InputInfoPtr pInfo, KeySymsPtr pKeySyms,
- CARD8 *pModMap);
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kmod.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kmod.c
deleted file mode 100644
index ecaf78028..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kmod.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* $XFree86$ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <errno.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/param.h>
-#include <sys/linker.h>
-
-#include "xf86_OSproc.h"
-#include "xf86_ansic.h"
-
-/*
- * Load a FreeBSD kernel module.
- * This is used by the DRI/DRM to load a DRM kernel module when
- * the X server starts. It could be used for other purposes in the future.
- * Input:
- * modName - name of the kernel module (Ex: "tdfx")
- * Return:
- * 0 for failure, 1 for success
- */
-int xf86LoadKernelModule(const char *modName)
-{
- if (kldload(modName) != -1)
- return 1;
- else
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c
deleted file mode 100644
index 5215d54e4..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c,v 1.5 2002/07/30 23:24:32 herrb Exp $ */
-/*
- * Copyright (C) 2001 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- * 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 XFree86 Project.
- */
-/* $OpenBSD: bsd_kqueue_apm.c,v 1.5 2002/07/30 23:07:42 matthieu Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#define XF86_OS_PRIVS
-#include "xf86_OSproc.h"
-#include "xf86_OSlib.h"
-
-#include <sys/event.h>
-#include <machine/apmvar.h>
-
-#define _PATH_APM_SOCKET "/var/run/apmdev"
-#define _PATH_APM_DEV "/dev/apm"
-#define _PATH_APM_CTLDEV "/dev/apmctl"
-
-static pointer APMihPtr = NULL;
-static int devFd = -1;
-static int ctlFd = -1;
-static void bsdCloseAPM(void);
-
-static struct {
- u_int apmBsd;
- pmEvent xf86;
-} bsdToXF86Array [] = {
- { APM_STANDBY_REQ, XF86_APM_SYS_STANDBY },
- { APM_SUSPEND_REQ, XF86_APM_SYS_SUSPEND },
- { APM_NORMAL_RESUME, XF86_APM_NORMAL_RESUME },
- { APM_CRIT_RESUME, XF86_APM_CRITICAL_RESUME },
- { APM_BATTERY_LOW, XF86_APM_LOW_BATTERY },
- { APM_POWER_CHANGE, XF86_APM_POWER_STATUS_CHANGE },
- { APM_UPDATE_TIME, XF86_APM_UPDATE_TIME },
- { APM_CRIT_SUSPEND_REQ, XF86_APM_CRITICAL_SUSPEND },
- { APM_USER_STANDBY_REQ, XF86_APM_USER_STANDBY },
- { APM_USER_SUSPEND_REQ, XF86_APM_USER_SUSPEND },
- { APM_SYS_STANDBY_RESUME, XF86_APM_STANDBY_RESUME },
-#ifdef APM_CAPABILITY_CHANGE
- { APM_CAPABILITY_CHANGE, XF86_APM_CAPABILITY_CHANGED },
-#endif
-};
-
-#define numApmEvents (sizeof(bsdToXF86Array) / sizeof(bsdToXF86Array[0]))
-
-static pmEvent
-bsdToXF86(int type)
-{
- int i;
-
- for (i = 0; i < numApmEvents; i++) {
- if (type == bsdToXF86Array[i].apmBsd) {
- return bsdToXF86Array[i].xf86;
- }
- }
- return XF86_APM_UNKNOWN;
-}
-
-/*
- * APM events can be requested direclty from /dev/apm
- */
-static int
-bsdPMGetEventFromOS(int kq, pmEvent *events, int num)
-{
- struct kevent ev;
- int i, result;
- struct timespec ts = { 0, 0 };
-
- for (i = 0; i < num; i++) {
- result = kevent(kq, NULL, 0, &ev, 1, &ts);
- if (result == 0 || APM_EVENT_TYPE(ev.data) == APM_NOEVENT) {
- /* no event */
- break;
- } else if (result < 0) {
- xf86Msg(X_WARNING, "bsdPMGetEventFromOS: kevent returns"
- " errno = %d\n", errno);
- break;
- }
- events[i] = bsdToXF86(APM_EVENT_TYPE(ev.data));
- }
- return i;
-}
-
-/*
- * If apmd(8) is running, he will get the events and handle them,
- * so, we've nothing to do here.
- * Otherwise, opening /dev/apmctl will succeed and we have to send the
- * confirmations to /dev/apmctl.
- */
-static pmWait
-bsdPMConfirmEventToOs(int dummyfd, pmEvent event)
-{
- if (ctlFd < 0) {
- if ((ctlFd = open(_PATH_APM_CTLDEV, O_RDWR)) < 0) {
- return PM_NONE;
- }
- }
- /* apmctl open succeedeed */
- switch (event) {
- case XF86_APM_SYS_STANDBY:
- case XF86_APM_USER_STANDBY:
- if (ioctl( ctlFd, APM_IOC_STANDBY, NULL ) == 0)
- return PM_WAIT; /* should we stop the Xserver in standby, too? */
- else
- return PM_NONE;
-
- case XF86_APM_SYS_SUSPEND:
- case XF86_APM_CRITICAL_SUSPEND:
- case XF86_APM_USER_SUSPEND:
- if (ioctl( ctlFd, APM_IOC_SUSPEND, NULL ) == 0)
- return PM_WAIT;
- else
- return PM_NONE;
- break;
- case XF86_APM_STANDBY_RESUME:
- case XF86_APM_NORMAL_RESUME:
- case XF86_APM_CRITICAL_RESUME:
- case XF86_APM_STANDBY_FAILED:
- case XF86_APM_SUSPEND_FAILED:
- return PM_CONTINUE;
- break;
- default:
- return PM_NONE;
- }
-}
-
-PMClose
-xf86OSPMOpen(void)
-{
- int kq;
- struct kevent ev;
-
- if (APMihPtr || !xf86Info.pmFlag) {
- return NULL;
- }
- if ((devFd = open(_PATH_APM_DEV, O_RDONLY)) == -1) {
- return NULL;
- }
- if ((kq = kqueue()) <= 0) {
- close(devFd);
- return NULL;
- }
- EV_SET(&ev, devFd, EVFILT_READ, EV_ADD | EV_ENABLE | EV_CLEAR,
- 0, 0, NULL);
- if (kevent(kq, &ev, 1, NULL, 0, NULL) < 0) {
- close(devFd);
- return NULL;
- }
-
- xf86PMGetEventFromOs = bsdPMGetEventFromOS;
- xf86PMConfirmEventToOs = bsdPMConfirmEventToOs;
- APMihPtr = xf86AddInputHandler(kq, xf86HandlePMEvents, NULL);
- return bsdCloseAPM;
-}
-
-static void
-bsdCloseAPM(void)
-{
- int kq;
-
- if (APMihPtr) {
- kq = xf86RemoveInputHandler(APMihPtr);
- close(devFd);
- devFd = -1;
- close(kq);
- if (ctlFd >= 0) {
- close(ctlFd);
- ctlFd = -1;
- }
- APMihPtr = NULL;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c
deleted file mode 100644
index 6ef300197..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c
+++ /dev/null
@@ -1,792 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c,v 1.28 2004/02/06 17:15:36 tsi Exp $ */
-
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-#include "xisb.h"
-#include "mipointer.h"
-#ifdef WSCONS_SUPPORT
-#include <dev/wscons/wsconsio.h>
-#endif
-#ifdef USBMOUSE_SUPPORT
-#ifdef HAS_LIB_USB_HID
-#include <usbhid.h>
-#else
-#include "usb.h"
-#endif
-
-#include <dev/usb/usb.h>
-#ifdef USB_GET_REPORT_ID
-#define USB_NEW_HID
-#endif
-
-#define HUP_GENERIC_DESKTOP 0x0001
-#define HUP_BUTTON 0x0009
-
-#define HUG_X 0x0030
-#define HUG_Y 0x0031
-#define HUG_Z 0x0032
-#define HUG_WHEEL 0x0038
-
-#define HID_USAGE2(p,u) (((p) << 16) | u)
-
-/* The UMS mices have middle button as number 3 */
-#define UMS_BUT(i) ((i) == 0 ? 2 : (i) == 1 ? 0 : (i) == 2 ? 1 : (i))
-#endif /* USBMOUSE_SUPPORT */
-
-#ifdef USBMOUSE_SUPPORT
-static void usbSigioReadInput (int fd, void *closure);
-#endif
-
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-/* These are for FreeBSD */
-#define DEFAULT_MOUSE_DEV "/dev/mouse"
-#define DEFAULT_SYSMOUSE_DEV "/dev/sysmouse"
-#define DEFAULT_PS2_DEV "/dev/psm0"
-
-static const char *mouseDevs[] = {
- DEFAULT_MOUSE_DEV,
- DEFAULT_SYSMOUSE_DEV,
- DEFAULT_PS2_DEV,
- NULL
-};
-#elif defined(__OpenBSD__) && defined(WSCONS_SUPPORT)
-/* Only wsmouse mices are autoconfigured for now on OpenBSD */
-#define DEFAULT_WSMOUSE_DEV "/dev/wsmouse"
-#define DEFAULT_WSMOUSE0_DEV "/dev/wsmouse0"
-
-static const char *mouseDevs[] = {
- DEFAULT_WSMOUSE_DEV,
- DEFAULT_WSMOUSE0_DEV,
- NULL
-};
-#endif
-
-static int
-SupportedInterfaces(void)
-{
-#if defined(__NetBSD__)
- return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_AUTO;
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
- return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_AUTO | MSE_MISC;
-#else
- return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_AUTO;
-#endif
-}
-
-/* Names of protocols that are handled internally here. */
-static const char *internalNames[] = {
-#if defined(WSCONS_SUPPORT)
- "WSMouse",
-#endif
-#if defined(USBMOUSE_SUPPORT)
- "usb",
-#endif
- NULL
-};
-
-/*
- * Names of MSC_MISC protocols that the OS supports. These are decoded by
- * main "mouse" driver.
- */
-static const char *miscNames[] = {
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
- "SysMouse",
-#endif
- NULL
-};
-
-static const char **
-BuiltinNames(void)
-{
- return internalNames;
-}
-
-static Bool
-CheckProtocol(const char *protocol)
-{
- int i;
-
- for (i = 0; internalNames[i]; i++)
- if (xf86NameCmp(protocol, internalNames[i]) == 0)
- return TRUE;
- for (i = 0; miscNames[i]; i++)
- if (xf86NameCmp(protocol, miscNames[i]) == 0)
- return TRUE;
- return FALSE;
-}
-
-static const char *
-DefaultProtocol(void)
-{
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
- return "Auto";
-#elif defined(__OpenBSD__) && defined(WSCONS_SUPPORT)
- return "WSMouse";
-#else
- return NULL;
-#endif
-}
-
-#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && defined(MOUSE_PROTO_SYSMOUSE)
-static struct {
- int dproto;
- const char *name;
-} devproto[] = {
- { MOUSE_PROTO_MS, "Microsoft" },
- { MOUSE_PROTO_MSC, "MouseSystems" },
- { MOUSE_PROTO_LOGI, "Logitech" },
- { MOUSE_PROTO_MM, "MMSeries" },
- { MOUSE_PROTO_LOGIMOUSEMAN, "MouseMan" },
- { MOUSE_PROTO_BUS, "BusMouse" },
- { MOUSE_PROTO_INPORT, "BusMouse" },
- { MOUSE_PROTO_PS2, "PS/2" },
- { MOUSE_PROTO_HITTAB, "MMHitTab" },
- { MOUSE_PROTO_GLIDEPOINT, "GlidePoint" },
- { MOUSE_PROTO_INTELLI, "Intellimouse" },
- { MOUSE_PROTO_THINK, "ThinkingMouse" },
- { MOUSE_PROTO_SYSMOUSE, "SysMouse" }
-};
-
-static const char *
-SetupAuto(InputInfoPtr pInfo, int *protoPara)
-{
- int i;
- mousehw_t hw;
- mousemode_t mode;
-
- if (pInfo->fd == -1)
- return NULL;
-
- /* set the driver operation level, if applicable */
- i = 1;
- ioctl(pInfo->fd, MOUSE_SETLEVEL, &i);
-
- /* interrogate the driver and get some intelligence on the device. */
- hw.iftype = MOUSE_IF_UNKNOWN;
- hw.model = MOUSE_MODEL_GENERIC;
- ioctl(pInfo->fd, MOUSE_GETHWINFO, &hw);
- xf86MsgVerb(X_INFO, 3, "%s: SetupAuto: hw.iftype is %d, hw.model is %d\n",
- pInfo->name, hw.iftype, hw.model);
- if (ioctl(pInfo->fd, MOUSE_GETMODE, &mode) == 0) {
- for (i = 0; i < sizeof(devproto)/sizeof(devproto[0]); ++i) {
- if (mode.protocol == devproto[i].dproto) {
- /* override some parameters */
- if (protoPara) {
- protoPara[4] = mode.packetsize;
- protoPara[0] = mode.syncmask[0];
- protoPara[1] = mode.syncmask[1];
- }
- xf86MsgVerb(X_INFO, 3, "%s: SetupAuto: protocol is %s\n",
- pInfo->name, devproto[i].name);
- return devproto[i].name;
- }
- }
- }
- return NULL;
-}
-
-static void
-SetSysMouseRes(InputInfoPtr pInfo, const char *protocol, int rate, int res)
-{
- mousemode_t mode;
- MouseDevPtr pMse;
-
- pMse = pInfo->private;
-
- mode.rate = rate > 0 ? rate : -1;
- mode.resolution = res > 0 ? res : -1;
- mode.accelfactor = -1;
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
- if (pMse->autoProbe ||
- (protocol && xf86NameCmp(protocol, "SysMouse") == 0)) {
- /*
- * As the FreeBSD sysmouse driver defaults to protocol level 0
- * everytime it is opened we enforce protocol level 1 again at
- * this point.
- */
- mode.level = 1;
- } else
- mode.level = -1;
-#else
- mode.level = -1;
-#endif
- ioctl(pInfo->fd, MOUSE_SETMODE, &mode);
-}
-#endif
-
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-
-#define MOUSED_PID_FILE "/var/run/moused.pid"
-
-/*
- * Try to check if moused is running. DEFAULT_SYSMOUSE_DEV is useless without
- * it. There doesn't seem to be a better way of checking.
- */
-static Bool
-MousedRunning(void)
-{
- FILE *f = NULL;
- unsigned int pid;
-
- if ((f = fopen(MOUSED_PID_FILE, "r")) != NULL) {
- if (fscanf(f, "%u", &pid) == 1 && pid > 0) {
- if (kill(pid, 0) == 0) {
- fclose(f);
- return TRUE;
- }
- }
- fclose(f);
- }
- return FALSE;
-}
-
-static const char *
-FindDevice(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- int fd = -1;
- const char **pdev, *dev = NULL;
- Bool devMouse = FALSE;
- struct stat devMouseStat;
- struct stat sb;
-
- for (pdev = mouseDevs; *pdev; pdev++) {
- SYSCALL (fd = open(*pdev, O_RDWR | O_NONBLOCK));
- if (fd == -1) {
-#ifdef DEBUG
- ErrorF("Cannot open %s (%s)\n", *pdev, strerror(errno));
-#endif
- } else {
- /*
- * /dev/mouse is held until checks for matches with other devices
- * are done. This is so that when it points to /dev/sysmouse,
- * the test for whether /dev/sysmouse is usable can be made.
- */
- if (!strcmp(*pdev, DEFAULT_MOUSE_DEV)) {
- if (fstat(fd, &devMouseStat) == 0)
- devMouse = TRUE;
- close(fd);
- continue;
- } else if (!strcmp(*pdev, DEFAULT_SYSMOUSE_DEV)) {
- /* Check if /dev/mouse is the same as /dev/sysmouse. */
- if (devMouse && fstat(fd, &sb) == 0 &&
- devMouseStat.st_dev == sb.st_dev &&
- devMouseStat.st_ino == sb.st_ino) {
- /* If the same, use /dev/sysmouse. */
- devMouse = FALSE;
- }
- close(fd);
- if (MousedRunning())
- break;
- else {
-#ifdef DEBUG
- ErrorF("moused isn't running\n");
-#endif
- }
- } else {
- close(fd);
- break;
- }
- }
- }
-
- if (*pdev)
- dev = *pdev;
- else if (devMouse)
- dev = DEFAULT_MOUSE_DEV;
-
- if (dev) {
- /* Set the Device option. */
- pInfo->conf_idev->commonOptions =
- xf86AddNewOption(pInfo->conf_idev->commonOptions, "Device", dev);
- xf86Msg(X_INFO, "%s: Setting Device option to \"%s\"\n",
- pInfo->name, dev);
- }
-
- return *pdev;
-}
-#endif
-
-#if defined(__OpenBSD__) && defined(WSCONS_SUPPORT)
-
-/* Only support wsmouse configuration for now */
-static const char *
-SetupAuto(InputInfoPtr pInfo, int *protoPara)
-{
-
- xf86MsgVerb(X_INFO, 3, "%s: SetupAuto: protocol is %s\n",
- pInfo->name, "wsmouse");
- return "wsmouse";
-}
-
-static void
-SetMouseRes(InputInfoPtr pInfo, const char *protocol, int rate, int res)
-{
-
- xf86MsgVerb(X_INFO, 3, "%s: SetMouseRes: protocol %s rate %d res %d\n",
- pInfo->name, protocol, rate, res);
-}
-
-static const char *
-FindDevice(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- int fd = -1;
- const char **pdev;
-
- for (pdev = mouseDevs; *pdev; pdev++) {
- SYSCALL(fd = open(*pdev, O_RDWR | O_NONBLOCK));
- if (fd != -1) {
- /* Set the Device option. */
- pInfo->conf_idev->commonOptions =
- xf86AddNewOption(pInfo->conf_idev->commonOptions,
- "Device", *pdev);
- xf86Msg(X_INFO, "%s: found Device \"%s\"\n",
- pInfo->name, *pdev);
- close(fd);
- break;
- }
- }
- return *pdev;
-}
-#endif /* __OpenBSD__ && WSCONS_SUPPORT */
-
-#ifdef WSCONS_SUPPORT
-#define NUMEVENTS 64
-
-static void
-wsconsReadInput(InputInfoPtr pInfo)
-{
- MouseDevPtr pMse;
- static struct wscons_event eventList[NUMEVENTS];
- int n, c;
- struct wscons_event *event = eventList;
- unsigned char *pBuf;
-
- pMse = pInfo->private;
-
- XisbBlockDuration(pMse->buffer, -1);
- pBuf = (unsigned char *)eventList;
- n = 0;
- while ((c = XisbRead(pMse->buffer)) >= 0 && n < sizeof(eventList)) {
- pBuf[n++] = (unsigned char)c;
- }
-
- if (n == 0)
- return;
-
- n /= sizeof(struct wscons_event);
- while( n-- ) {
- int buttons = pMse->lastButtons;
- int dx = 0, dy = 0, dz = 0, dw = 0;
- switch (event->type) {
- case WSCONS_EVENT_MOUSE_UP:
-#define BUTBIT (1 << (event->value <= 2 ? 2 - event->value : event->value))
- buttons &= ~BUTBIT;
- break;
- case WSCONS_EVENT_MOUSE_DOWN:
- buttons |= BUTBIT;
- break;
- case WSCONS_EVENT_MOUSE_DELTA_X:
- dx = event->value;
- break;
- case WSCONS_EVENT_MOUSE_DELTA_Y:
- dy = -event->value;
- break;
-#ifdef WSCONS_EVENT_MOUSE_DELTA_Z
- case WSCONS_EVENT_MOUSE_DELTA_Z:
- dz = event->value;
- break;
-#endif
- default:
- xf86Msg(X_WARNING, "%s: bad wsmouse event type=%d\n", pInfo->name,
- event->type);
- ++event;
- continue;
- }
-
- pMse->PostEvent(pInfo, buttons, dx, dy, dz, dw);
- ++event;
- }
- return;
-}
-
-
-/* This function is called when the protocol is "wsmouse". */
-static Bool
-wsconsPreInit(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- MouseDevPtr pMse = pInfo->private;
-
- pMse->protocol = protocol;
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
-
- /* Collect the options, and process the common options. */
- xf86CollectInputOptions(pInfo, NULL, NULL);
- xf86ProcessCommonOptions(pInfo, pInfo->options);
-
- /* Check if the device can be opened. */
- pInfo->fd = xf86OpenSerial(pInfo->options);
- if (pInfo->fd == -1) {
- if (xf86GetAllowMouseOpenFail())
- xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
- else {
- xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name);
- xfree(pMse);
- return FALSE;
- }
- }
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
-
- /* Process common mouse options (like Emulate3Buttons, etc). */
- pMse->CommonOptions(pInfo);
-
- /* Setup the local input proc. */
- pInfo->read_input = wsconsReadInput;
- pMse->xisbscale = sizeof(struct wscons_event);
-
- pInfo->flags |= XI86_CONFIGURED;
- return TRUE;
-}
-#endif
-
-#if defined(USBMOUSE_SUPPORT)
-
-typedef struct _UsbMseRec {
- int packetSize;
- int iid;
- hid_item_t loc_x; /* x locator item */
- hid_item_t loc_y; /* y locator item */
- hid_item_t loc_z; /* z (wheel) locator item */
- hid_item_t loc_btn[MSE_MAXBUTTONS]; /* buttons locator items */
- unsigned char *buffer;
-} UsbMseRec, *UsbMsePtr;
-
-static int
-usbMouseProc(DeviceIntPtr pPointer, int what)
-{
- InputInfoPtr pInfo;
- MouseDevPtr pMse;
- UsbMsePtr pUsbMse;
- unsigned char map[MSE_MAXBUTTONS + 1];
- int nbuttons;
-
- pInfo = pPointer->public.devicePrivate;
- pMse = pInfo->private;
- pMse->device = pPointer;
- pUsbMse = pMse->mousePriv;
-
- switch (what) {
- case DEVICE_INIT:
- pPointer->public.on = FALSE;
-
- for (nbuttons = 0; nbuttons < MSE_MAXBUTTONS; ++nbuttons)
- map[nbuttons + 1] = nbuttons + 1;
-
- InitPointerDeviceStruct((DevicePtr)pPointer,
- map,
- min(pMse->buttons, MSE_MAXBUTTONS),
- miPointerGetMotionEvents,
- pMse->Ctrl,
- miPointerGetMotionBufferSize());
-
- /* X valuator */
- xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 0);
- /* Y valuator */
- xf86InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 1);
- xf86MotionHistoryAllocate(pInfo);
- break;
-
- case DEVICE_ON:
- pInfo->fd = xf86OpenSerial(pInfo->options);
- if (pInfo->fd == -1)
- xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
- else {
- pMse->buffer = XisbNew(pInfo->fd, pUsbMse->packetSize);
- if (!pMse->buffer) {
- xfree(pMse);
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
- } else {
- xf86FlushInput(pInfo->fd);
- if (!xf86InstallSIGIOHandler (pInfo->fd, usbSigioReadInput,
- pInfo))
- AddEnabledDevice(pInfo->fd);
- }
- }
- pMse->lastButtons = 0;
- pMse->lastMappedButtons = 0;
- pMse->emulateState = 0;
- pPointer->public.on = TRUE;
- break;
-
- case DEVICE_OFF:
- case DEVICE_CLOSE:
- if (pInfo->fd != -1) {
- RemoveEnabledDevice(pInfo->fd);
- if (pUsbMse->packetSize > 8 && pUsbMse->buffer) {
- xfree(pUsbMse->buffer);
- }
- if (pMse->buffer) {
- XisbFree(pMse->buffer);
- pMse->buffer = NULL;
- }
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
- }
- pPointer->public.on = FALSE;
- usleep(300000);
- break;
- }
- return Success;
-}
-
-static void
-usbReadInput(InputInfoPtr pInfo)
-{
- MouseDevPtr pMse;
- UsbMsePtr pUsbMse;
- int buttons = pMse->lastButtons;
- int dx = 0, dy = 0, dz = 0, dw = 0;
- int n, c;
- unsigned char *pBuf;
-
- pMse = pInfo->private;
- pUsbMse = pMse->mousePriv;
-
- XisbBlockDuration(pMse->buffer, -1);
- pBuf = pUsbMse->buffer;
- n = 0;
- while ((c = XisbRead(pMse->buffer)) >= 0 && n < pUsbMse->packetSize) {
- pBuf[n++] = (unsigned char)c;
- }
- if (n == 0)
- return;
- if (n != pUsbMse->packetSize) {
- xf86Msg(X_WARNING, "%s: incomplete packet, size %d\n", pInfo->name,
- n);
- }
- /* discard packets with an id that don't match the mouse */
- /* XXX this is probably not the right thing */
- if (pUsbMse->iid != 0) {
- if (*pBuf++ != pUsbMse->iid)
- return;
- }
- dx = hid_get_data(pBuf, &pUsbMse->loc_x);
- dy = hid_get_data(pBuf, &pUsbMse->loc_y);
- dz = hid_get_data(pBuf, &pUsbMse->loc_z);
-
- buttons = 0;
- for (n = 0; n < pMse->buttons; n++) {
- if (hid_get_data(pBuf, &pUsbMse->loc_btn[n]))
- buttons |= (1 << UMS_BUT(n));
- }
- pMse->PostEvent(pInfo, buttons, dx, dy, dz, dw);
- return;
-}
-
-static void
-usbSigioReadInput (int fd, void *closure)
-{
- usbReadInput ((InputInfoPtr) closure);
-}
-
-/* This function is called when the protocol is "usb". */
-static Bool
-usbPreInit(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- MouseDevPtr pMse = pInfo->private;
- UsbMsePtr pUsbMse;
- report_desc_t reportDesc;
- int i;
-
- pUsbMse = xalloc(sizeof(UsbMseRec));
- if (pUsbMse == NULL) {
- xf86Msg(X_ERROR, "%s: cannot allocate UsbMouseRec\n", pInfo->name);
- xfree(pMse);
- return FALSE;
- }
-
- pMse->protocol = protocol;
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
-
- /* Collect the options, and process the common options. */
- xf86CollectInputOptions(pInfo, NULL, NULL);
- xf86ProcessCommonOptions(pInfo, pInfo->options);
-
- /* Check if the device can be opened. */
- pInfo->fd = xf86OpenSerial(pInfo->options);
- if (pInfo->fd == -1) {
- if (xf86GetAllowMouseOpenFail())
- xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
- else {
- xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name);
- xfree(pUsbMse);
- xfree(pMse);
- return FALSE;
- }
- }
- /* Get USB informations */
- reportDesc = hid_get_report_desc(pInfo->fd);
- /* Get packet size & iid */
-#ifdef USB_NEW_HID
- if (ioctl(pInfo->fd, USB_GET_REPORT_ID, &pUsbMse->iid) == -1) {
- xf86Msg(X_ERROR, "Error ioctl USB_GET_REPORT_ID on %s : %s\n",
- pInfo->name, strerror(errno));
- return FALSE;
- }
- pUsbMse->packetSize = hid_report_size(reportDesc, hid_input,
- pUsbMse->iid);
-#else
- pUsbMse->packetSize = hid_report_size(reportDesc, hid_input,
- &pUsbMse->iid);
-#endif
- /* Allocate buffer */
- if (pUsbMse->packetSize <= 8) {
- pUsbMse->buffer = pMse->protoBuf;
- } else {
- pUsbMse->buffer = xalloc(pUsbMse->packetSize);
- }
- if (pUsbMse->buffer == NULL) {
- xf86Msg(X_ERROR, "%s: cannot allocate buffer\n", pInfo->name);
- xfree(pUsbMse);
- xfree(pMse);
- xf86CloseSerial(pInfo->fd);
- return FALSE;
- }
-#ifdef USB_NEW_HID
- if (hid_locate(reportDesc, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_X),
- hid_input, &pUsbMse->loc_x, pUsbMse->iid) < 0) {
- xf86Msg(X_WARNING, "%s: no x locator\n", pInfo->name);
- }
- if (hid_locate(reportDesc, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_Y),
- hid_input, &pUsbMse->loc_y, pUsbMse->iid) < 0) {
- xf86Msg(X_WARNING, "%s: no y locator\n", pInfo->name);
- }
- if (hid_locate(reportDesc, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_WHEEL),
- hid_input, &pUsbMse->loc_z, pUsbMse->iid) < 0) {
- }
-#else
- if (hid_locate(reportDesc, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_X),
- hid_input, &pUsbMse->loc_x) < 0) {
- xf86Msg(X_WARNING, "%s: no x locator\n", pInfo->name);
- }
- if (hid_locate(reportDesc, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_Y),
- hid_input, &pUsbMse->loc_y) < 0) {
- xf86Msg(X_WARNING, "%s: no y locator\n", pInfo->name);
- }
- if (hid_locate(reportDesc, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_WHEEL),
- hid_input, &pUsbMse->loc_z) < 0) {
- }
-#endif
- /* Probe for number of buttons */
- for (i = 1; i <= MSE_MAXBUTTONS; i++) {
- if (!hid_locate(reportDesc, HID_USAGE2(HUP_BUTTON, i),
- hid_input, &pUsbMse->loc_btn[i-1]
-#ifdef USB_NEW_HID
- , pUsbMse->iid
-#endif
- ))
- break;
- }
- pMse->buttons = i-1;
-
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
-
- /* Private structure */
- pMse->mousePriv = pUsbMse;
-
- /* Process common mouse options (like Emulate3Buttons, etc). */
- pMse->CommonOptions(pInfo);
-
- /* Setup the local procs. */
- pInfo->device_control = usbMouseProc;
- pInfo->read_input = usbReadInput;
-
- pInfo->flags |= XI86_CONFIGURED;
- return TRUE;
-}
-#endif /* USBMOUSE */
-
-static Bool
-bsdMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- /* The protocol is guaranteed to be one of the internalNames[] */
-#ifdef WSCONS_SUPPORT
- if (xf86NameCmp(protocol, "WSMouse") == 0) {
- return wsconsPreInit(pInfo, protocol, flags);
- }
-#endif
-#ifdef USBMOUSE_SUPPORT
- if (xf86NameCmp(protocol, "usb") == 0) {
- return usbPreInit(pInfo, protocol, flags);
- }
-#endif
- return TRUE;
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
- p->SupportedInterfaces = SupportedInterfaces;
- p->BuiltinNames = BuiltinNames;
- p->DefaultProtocol = DefaultProtocol;
- p->CheckProtocol = CheckProtocol;
-#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && defined(MOUSE_PROTO_SYSMOUSE)
- p->SetupAuto = SetupAuto;
- p->SetPS2Res = SetSysMouseRes;
- p->SetBMRes = SetSysMouseRes;
- p->SetMiscRes = SetSysMouseRes;
-#endif
-#if defined(__OpenBSD__) && defined(WSCONS_SUPPORT)
- p->SetupAuto = SetupAuto;
- p->SetMiscRes = SetMouseRes;
-#endif
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
- p->FindDevice = FindDevice;
-#endif
- p->PreInit = bsdMousePreInit;
- return p;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/drm/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/drm/Imakefile
deleted file mode 100644
index 9cb04a516..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/drm/Imakefile
+++ /dev/null
@@ -1,63 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/Imakefile,v 1.14 2003/05/08 21:49:01 herrb Exp $
-XCOMM $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile,v 1.7 1999/09/14 19:55:15 faith Exp $
-
-#define IHaveModules
-#include <Server.tmpl>
-
-#if DoLoadableServer
-MSRC = drmmodule.c
-MOBJ = drmmodule.o
-#endif
-
-#if BuildXF86DRI
-#if HasMTRRSupport
-MTRR_DEFINES = -DHAS_MTRR_SUPPORT
-#endif
-
-#if defined(KFreeBSDArchitecture)
-OS_SUBDIR = freebsd
-#elif defined(NetBSDArchitecture)
-OS_SUBDIR = netbsd
-#elif defined(OpenBSDArchitecture)
-OS_SUBDIR = openbsd
-#else
-OS_SUBDIR = extensions
-#endif
-
- SRCS = xf86drm.c \
- xf86drmHash.c \
- xf86drmRandom.c \
- xf86drmSL.c \
- $(MSRC)
-
- OBJS = xf86drm.o \
- xf86drmHash.o \
- xf86drmRandom.o \
- xf86drmSL.o \
- $(MOBJ)
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(EXTINCSRC) -I../.. -I$(DRMSRCDIR)/bsd-core \
- -I$(DRMSRCDIR)/shared-core
-
-DEFINES = $(MTRR_DEFINES) $(GLX_DEFINES)
-
-ModuleObjectRule()
-LibraryModuleTarget(drm,$(OBJS))
-NormalLintTarget($(SRCS))
-
-InstallLibraryModule(drm,$(MODULEDIR),$(OS_SUBDIR))
-#endif
-
-DependTarget()
-
-LIBDRM_DIR = ../../../../../../../extras/drm/libdrm
-#if DoLoadableServer
-LinkSourceFile(drmmodule.c,$(XF86OSSRC)/linux/drm)
-#endif
-LinkSourceFile(xf86drm.c,$(LIBDRM_DIR))
-LinkSourceFile(xf86drmHash.c,$(LIBDRM_DIR))
-LinkSourceFile(xf86drmRandom.c,$(LIBDRM_DIR))
-LinkSourceFile(xf86drmSL.c,$(LIBDRM_DIR))
-
-InstallDriverSDKLibraryModule(drm,$(DRIVERSDKMODULEDIR),$(OS_SUBDIR))
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/i386_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/i386_video.c
deleted file mode 100644
index 3f4cdb010..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/i386_video.c
+++ /dev/null
@@ -1,999 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/i386_video.c,v 1.4 2003/09/24 02:43:34 dawes Exp $ */
-/*
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Rich Murphey and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Rich Murphey and
- * David Wexelblat make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/* $XConsortium: bsd_video.c /main/10 1996/10/25 11:37:57 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-
-#include <errno.h>
-#include <sys/mman.h>
-
-#ifdef HAS_MTRR_SUPPORT
-#ifndef __NetBSD__
-#include <sys/types.h>
-#include <sys/memrange.h>
-#else
-#include "memrange.h"
-#endif
-#define X_MTRR_ID "XFree86"
-#endif
-
-#if defined(HAS_MTRR_BUILTIN) && defined(__NetBSD__)
-#include <machine/mtrr.h>
-#include <machine/sysarch.h>
-#include <sys/queue.h>
-#endif
-
-#if defined(__OpenBSD__) && defined(__amd64__)
-#include <machine/mtrr.h>
-#include <machine/sysarch.h>
-#endif
-
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-#if defined(__NetBSD__) && !defined(MAP_FILE)
-#define MAP_FLAGS MAP_SHARED
-#else
-#define MAP_FLAGS (MAP_FILE | MAP_SHARED)
-#endif
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((caddr_t)-1)
-#endif
-
-#ifdef __OpenBSD__
-#define SYSCTL_MSG "\tCheck that you have set 'machdep.allowaperture=1'\n"\
- "\tin /etc/sysctl.conf and reboot your machine\n" \
- "\trefer to xf86(4) for details"
-#define SYSCTL_MSG2 \
- "Check that you have set 'machdep.allowaperture=2'\n" \
- "\tin /etc/sysctl.conf and reboot your machine\n" \
- "\trefer to xf86(4) for details"
-#endif
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-static Bool useDevMem = FALSE;
-static int devMemFd = -1;
-
-#ifdef HAS_APERTURE_DRV
-#define DEV_APERTURE "/dev/xf86"
-#endif
-#define DEV_MEM "/dev/mem"
-
-static pointer mapVidMem(int, unsigned long, unsigned long, int);
-static void unmapVidMem(int, pointer, unsigned long);
-
-#ifdef HAS_MTRR_SUPPORT
-static pointer setWC(int, unsigned long, unsigned long, Bool, MessageType);
-static void undoWC(int, pointer);
-static Bool cleanMTRR(void);
-#endif
-#if defined(HAS_MTRR_BUILTIN) && defined(__NetBSD__)
-static pointer NetBSDsetWC(int, unsigned long, unsigned long, Bool,
- MessageType);
-static void NetBSDundoWC(int, pointer);
-#endif
-#if defined(__amd64__) && defined(__OpenBSD__)
-static pointer amd64setWC(int, unsigned long, unsigned long, Bool,
- MessageType);
-static void amd64undoWC(int, pointer);
-#endif
-
-/*
- * Check if /dev/mem can be mmap'd. If it can't print a warning when
- * "warn" is TRUE.
- */
-static void
-checkDevMem(Bool warn)
-{
- static Bool devMemChecked = FALSE;
- int fd;
- pointer base;
-
- if (devMemChecked)
- return;
- devMemChecked = TRUE;
-
- if ((fd = open(DEV_MEM, O_RDWR)) >= 0)
- {
- /* Try to map a page at the VGA address */
- base = mmap((caddr_t)0, 4096, PROT_READ | PROT_WRITE,
- MAP_FLAGS, fd, (off_t)0xA0000);
-
- if (base != MAP_FAILED)
- {
- munmap((caddr_t)base, 4096);
- devMemFd = fd;
- useDevMem = TRUE;
- return;
- } else {
- /* This should not happen */
- if (warn)
- {
- xf86Msg(X_WARNING, "checkDevMem: failed to mmap %s (%s)\n",
- DEV_MEM, strerror(errno));
- }
- useDevMem = FALSE;
- return;
- }
- }
-#ifndef HAS_APERTURE_DRV
- if (warn)
- {
- xf86Msg(X_WARNING, "checkDevMem: failed to open %s (%s)\n",
- DEV_MEM, strerror(errno));
- }
- useDevMem = FALSE;
- return;
-#else
- /* Failed to open /dev/mem, try the aperture driver */
- if ((fd = open(DEV_APERTURE, O_RDWR)) >= 0)
- {
- /* Try to map a page at the VGA address */
- base = mmap((caddr_t)0, 4096, PROT_READ | PROT_WRITE,
- MAP_FLAGS, fd, (off_t)0xA0000);
-
- if (base != MAP_FAILED)
- {
- munmap((caddr_t)base, 4096);
- devMemFd = fd;
- useDevMem = TRUE;
- xf86Msg(X_INFO, "checkDevMem: using aperture driver %s\n",
- DEV_APERTURE);
- return;
- } else {
-
- if (warn)
- {
- xf86Msg(X_WARNING, "checkDevMem: failed to mmap %s (%s)\n",
- DEV_APERTURE, strerror(errno));
- }
- }
- } else {
- if (warn)
- {
-#ifndef __OpenBSD__
- xf86Msg(X_WARNING, "checkDevMem: failed to open %s and %s\n"
- "\t(%s)\n", DEV_MEM, DEV_APERTURE, strerror(errno));
-#else /* __OpenBSD__ */
- xf86Msg(X_WARNING, "checkDevMem: failed to open %s and %s\n"
- "\t(%s)\n%s", DEV_MEM, DEV_APERTURE, strerror(errno),
- SYSCTL_MSG);
-#endif /* __OpenBSD__ */
- }
- }
-
- useDevMem = FALSE;
- return;
-
-#endif
-}
-
-void
-xf86OSInitVidMem(VidMemInfoPtr pVidMem)
-{
- checkDevMem(TRUE);
- pVidMem->linearSupported = useDevMem;
- pVidMem->mapMem = mapVidMem;
- pVidMem->unmapMem = unmapVidMem;
-
-#ifdef HAS_MTRR_SUPPORT
- if (useDevMem) {
- if (cleanMTRR()) {
- pVidMem->setWC = setWC;
- pVidMem->undoWC = undoWC;
- }
- }
-#endif
-#if defined(HAS_MTRR_BUILTIN) && defined(__NetBSD__)
- pVidMem->setWC = NetBSDsetWC;
- pVidMem->undoWC = NetBSDundoWC;
-#endif
-#if defined(__amd64__) && defined(__OpenBSD__)
- pVidMem->setWC = amd64setWC;
- pVidMem->undoWC = amd64undoWC;
-#endif
- pVidMem->initialised = TRUE;
-}
-
-static pointer
-mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- pointer base;
-
- checkDevMem(FALSE);
-
- if (useDevMem)
- {
- if (devMemFd < 0)
- {
- FatalError("xf86MapVidMem: failed to open %s (%s)",
- DEV_MEM, strerror(errno));
- }
- base = mmap((caddr_t)0, Size,
- (flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_FLAGS, devMemFd, (off_t)Base);
- if (base == MAP_FAILED)
- {
- FatalError("%s: could not mmap %s [s=%lx,a=%lx] (%s)",
- "xf86MapVidMem", DEV_MEM, Size, Base,
- strerror(errno));
- }
- return(base);
- }
-
- /* else, mmap /dev/vga */
- if ((unsigned long)Base < 0xA0000 || (unsigned long)Base >= 0xC0000)
- {
- FatalError("%s: Address 0x%lx outside allowable range",
- "xf86MapVidMem", Base);
- }
- base = mmap(0, Size,
- (flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_FLAGS, xf86Info.screenFd,
- (unsigned long)Base - 0xA0000
- );
- if (base == MAP_FAILED)
- {
- FatalError("xf86MapVidMem: Could not mmap /dev/vga (%s)",
- strerror(errno));
- }
- return(base);
-}
-
-static void
-unmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- munmap((caddr_t)Base, Size);
-}
-
-/*
- * Read BIOS via mmap()ing DEV_MEM
- */
-
-int
-xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
- int Len)
-{
- unsigned char *ptr;
- int psize;
- int mlen;
-
- checkDevMem(TRUE);
- if (devMemFd == -1) {
- return(-1);
- }
-
- psize = xf86getpagesize();
- Offset += Base & (psize - 1);
- Base &= ~(psize - 1);
- mlen = (Offset + Len + psize - 1) & ~(psize - 1);
- ptr = (unsigned char *)mmap((caddr_t)0, mlen, PROT_READ,
- MAP_SHARED, devMemFd, (off_t)Base);
- if ((long)ptr == -1)
- {
- xf86Msg(X_WARNING,
- "xf86ReadBIOS: %s mmap[s=%x,a=%lx,o=%lx] failed (%s)\n",
- DEV_MEM, Len, Base, Offset, strerror(errno));
-#ifdef __OpenBSD__
- if (Base < 0xa0000) {
- xf86Msg(X_WARNING, SYSCTL_MSG2);
- }
-#endif
- return(-1);
- }
-#ifdef DEBUG
- ErrorF("xf86ReadBIOS: BIOS at 0x%08x has signature 0x%04x\n",
- Base, ptr[0] | (ptr[1] << 8));
-#endif
- (void)memcpy(Buf, (void *)(ptr + Offset), Len);
- (void)munmap((caddr_t)ptr, mlen);
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3, "xf86ReadBIOS(%x, %x, Buf, %x)"
- "-> %02x %02x %02x %02x...\n",
- Base, Offset, Len, Buf[0], Buf[1], Buf[2], Buf[3]);
-#endif
- return(Len);
-}
-
-#ifdef USE_I386_IOPL
-/***************************************************************************/
-/* I/O Permissions section */
-/***************************************************************************/
-
-static Bool ExtendedEnabled = FALSE;
-
-Bool
-xf86EnableIO()
-{
- if (ExtendedEnabled)
- return TRUE;
-
- if (i386_iopl(TRUE) < 0)
- {
-#ifndef __OpenBSD__
- xf86Msg(X_WARNING,"%s: Failed to set IOPL for extended I/O",
- "xf86EnableIO");
-#else
- xf86Msg(X_WARNING,"%s: Failed to set IOPL for extended I/O\n%s",
- "xf86EnableIO", SYSCTL_MSG);
-#endif
- return FALSE;
- }
- ExtendedEnabled = TRUE;
-
- return TRUE;
-}
-
-void
-xf86DisableIO()
-{
- if (!ExtendedEnabled)
- return;
-
- i386_iopl(FALSE);
- ExtendedEnabled = FALSE;
-
- return;
-}
-
-#endif /* USE_I386_IOPL */
-
-#ifdef USE_AMD64_IOPL
-/***************************************************************************/
-/* I/O Permissions section */
-/***************************************************************************/
-
-static Bool ExtendedEnabled = FALSE;
-
-Bool
-xf86EnableIO()
-{
- if (ExtendedEnabled)
- return TRUE;
-
- if (amd64_iopl(TRUE) < 0)
- {
-#ifndef __OpenBSD__
- xf86Msg(X_WARNING,"%s: Failed to set IOPL for extended I/O",
- "xf86EnableIO");
-#else
- xf86Msg(X_WARNING,"%s: Failed to set IOPL for extended I/O\n%s",
- "xf86EnableIO", SYSCTL_MSG);
-#endif
- return FALSE;
- }
- ExtendedEnabled = TRUE;
-
- return TRUE;
-}
-
-void
-xf86DisableIO()
-{
- if (!ExtendedEnabled)
- return;
-
- if (amd64_iopl(FALSE) == 0) {
- ExtendedEnabled = FALSE;
- }
- /* Otherwise, the X server has revoqued its root uid,
- and thus cannot give up IO privileges any more */
-
- return;
-}
-
-#endif /* USE_AMD64_IOPL */
-
-#ifdef USE_DEV_IO
-static int IoFd = -1;
-
-Bool
-xf86EnableIO()
-{
- if (IoFd >= 0)
- return TRUE;
-
- if ((IoFd = open("/dev/io", O_RDWR)) == -1)
- {
- xf86Msg(X_WARNING,"xf86EnableIO: "
- "Failed to open /dev/io for extended I/O");
- return FALSE;
- }
- return TRUE;
-}
-
-void
-xf86DisableIO()
-{
- if (IoFd < 0)
- return;
-
- close(IoFd);
- IoFd = -1;
- return;
-}
-
-#endif
-
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool
-xf86DisableInterrupts()
-{
-
-#ifdef __GNUC__
- __asm__ __volatile__("cli");
-#else
- asm("cli");
-#endif /* __GNUC__ */
-
- return(TRUE);
-}
-
-void
-xf86EnableInterrupts()
-{
-
-#ifdef __GNUC__
- __asm__ __volatile__("sti");
-#else
- asm("sti");
-#endif /* __GNUC__ */
-
- return;
-}
-
-
-#ifdef __NetBSD__
-/***************************************************************************/
-/* Set TV output mode */
-/***************************************************************************/
-void
-xf86SetTVOut(int mode)
-{
- switch (xf86Info.consType)
- {
-#ifdef PCCONS_SUPPORT
- case PCCONS:{
-
- if (ioctl (xf86Info.consoleFd, CONSOLE_X_TV_ON, &mode) < 0)
- {
- xf86Msg(X_WARNING,
- "xf86SetTVOut: Could not set console to TV output, %s\n",
- strerror(errno));
- }
- }
- break;
-#endif /* PCCONS_SUPPORT */
-
- default:
- FatalError("Xf86SetTVOut: Unsupported console");
- break;
- }
- return;
-}
-
-void
-xf86SetRGBOut()
-{
- switch (xf86Info.consType)
- {
-#ifdef PCCONS_SUPPORT
- case PCCONS:{
-
- if (ioctl (xf86Info.consoleFd, CONSOLE_X_TV_OFF, 0) < 0)
- {
- xf86Msg(X_WARNING,
- "xf86SetTVOut: Could not set console to RGB output, %s\n",
- strerror(errno));
- }
- }
- break;
-#endif /* PCCONS_SUPPORT */
-
- default:
- FatalError("Xf86SetTVOut: Unsupported console");
- break;
- }
- return;
-}
-#endif
-
-#ifdef HAS_MTRR_SUPPORT
-/* memory range (MTRR) support for FreeBSD */
-
-/*
- * This code is experimental. Some parts may be overkill, and other parts
- * may be incomplete.
- */
-
-/*
- * getAllRanges returns the full list of memory ranges with attributes set.
- */
-
-static struct mem_range_desc *
-getAllRanges(int *nmr)
-{
- struct mem_range_desc *mrd;
- struct mem_range_op mro;
-
- /*
- * Find how many ranges there are. If this fails, then the kernel
- * probably doesn't have MTRR support.
- */
- mro.mo_arg[0] = 0;
- if (ioctl(devMemFd, MEMRANGE_GET, &mro))
- return NULL;
- *nmr = mro.mo_arg[0];
- mrd = xnfalloc(*nmr * sizeof(struct mem_range_desc));
- mro.mo_arg[0] = *nmr;
- mro.mo_desc = mrd;
- if (ioctl(devMemFd, MEMRANGE_GET, &mro)) {
- xfree(mrd);
- return NULL;
- }
- return mrd;
-}
-
-/*
- * cleanMTRR removes any memory attribute that may be left by a previous
- * X server. Normally there won't be any, but this takes care of the
- * case where a server crashed without being able finish cleaning up.
- */
-
-static Bool
-cleanMTRR()
-{
- struct mem_range_desc *mrd;
- struct mem_range_op mro;
- int nmr, i;
-
- /* This shouldn't happen */
- if (devMemFd < 0)
- return FALSE;
-
- if (!(mrd = getAllRanges(&nmr)))
- return FALSE;
-
- for (i = 0; i < nmr; i++) {
- if (strcmp(mrd[i].mr_owner, X_MTRR_ID) == 0 &&
- (mrd[i].mr_flags & MDF_ACTIVE)) {
-#ifdef DEBUG
- ErrorF("Clean for (0x%lx,0x%lx)\n",
- (unsigned long)mrd[i].mr_base,
- (unsigned long)rd[i].mr_len);
-#endif
- if (mrd[i].mr_flags & MDF_FIXACTIVE) {
- mro.mo_arg[0] = MEMRANGE_SET_UPDATE;
- mrd[i].mr_flags = MDF_UNCACHEABLE;
- } else {
- mro.mo_arg[0] = MEMRANGE_SET_REMOVE;
- }
- mro.mo_desc = mrd + i;
- ioctl(devMemFd, MEMRANGE_SET, &mro);
- }
- }
-#ifdef DEBUG
- sleep(10);
-#endif
- xfree(mrd);
- return TRUE;
-}
-
-typedef struct x_RangeRec {
- struct mem_range_desc mrd;
- Bool wasWC;
- struct x_RangeRec * next;
-} RangeRec, *RangePtr;
-
-static void
-freeRangeList(RangePtr range)
-{
- RangePtr rp;
-
- while (range) {
- rp = range;
- range = rp->next;
- xfree(rp);
- }
-}
-
-static RangePtr
-dupRangeList(RangePtr list)
-{
- RangePtr new = NULL, rp, p;
-
- rp = list;
- while (rp) {
- p = xnfalloc(sizeof(RangeRec));
- *p = *rp;
- p->next = new;
- new = p;
- rp = rp->next;
- }
- return new;
-}
-
-static RangePtr
-sortRangeList(RangePtr list)
-{
- RangePtr rp1, rp2, copy, sorted = NULL, minp, prev, minprev;
- unsigned long minBase;
-
- /* Sort by base address */
- rp1 = copy = dupRangeList(list);
- while (rp1) {
- minBase = rp1->mrd.mr_base;
- minp = rp1;
- minprev = NULL;
- prev = rp1;
- rp2 = rp1->next;
- while (rp2) {
- if (rp2->mrd.mr_base < minBase) {
- minBase = rp2->mrd.mr_base;
- minp = rp2;
- minprev = prev;
- }
- prev = rp2;
- rp2 = rp2->next;
- }
- if (minprev) {
- minprev->next = minp->next;
- rp1 = copy;
- } else {
- rp1 = minp->next;
- }
- minp->next = sorted;
- sorted = minp;
- }
- return sorted;
-}
-
-/*
- * findRanges returns a list of ranges that overlap the specified range.
- */
-
-static void
-findRanges(unsigned long base, unsigned long size, RangePtr *ucp, RangePtr *wcp)
-{
- struct mem_range_desc *mrd;
- int nmr, i;
- RangePtr rp, *p;
-
- if (!(mrd = getAllRanges(&nmr)))
- return;
-
- for (i = 0; i < nmr; i++) {
- if ((mrd[i].mr_flags & MDF_ACTIVE) &&
- mrd[i].mr_base < base + size &&
- mrd[i].mr_base + mrd[i].mr_len > base) {
- if (mrd[i].mr_flags & MDF_WRITECOMBINE)
- p = wcp;
- else if (mrd[i].mr_flags & MDF_UNCACHEABLE)
- p = ucp;
- else
- continue;
- rp = xnfalloc(sizeof(RangeRec));
- rp->mrd = mrd[i];
- rp->next = *p;
- *p = rp;
- }
- }
- xfree(mrd);
-}
-
-/*
- * This checks if the existing overlapping ranges fully cover the requested
- * range. Is this overkill?
- */
-
-static Bool
-fullCoverage(unsigned long base, unsigned long size, RangePtr overlap)
-{
- RangePtr rp1, sorted = NULL;
- unsigned long end;
-
- sorted = sortRangeList(overlap);
- /* Look for gaps */
- rp1 = sorted;
- end = base + size;
- while (rp1) {
- if (rp1->mrd.mr_base > base) {
- freeRangeList(sorted);
- return FALSE;
- } else {
- base = rp1->mrd.mr_base + rp1->mrd.mr_len;
- }
- if (base >= end) {
- freeRangeList(sorted);
- return TRUE;
- }
- rp1 = rp1->next;
- }
- freeRangeList(sorted);
- return FALSE;
-}
-
-static pointer
-addWC(int screenNum, unsigned long base, unsigned long size, MessageType from)
-{
- RangePtr uc = NULL, wc = NULL, retlist = NULL;
- struct mem_range_desc mrd;
- struct mem_range_op mro;
-
- findRanges(base, size, &uc, &wc);
-
- /* See of the full range is already WC */
- if (!uc && fullCoverage(base, size, wc)) {
- xf86DrvMsg(screenNum, from,
- "Write-combining range (0x%lx,0x%lx) was already set\n",
- base, size);
- return NULL;
- }
-
- /* Otherwise, try to add the new range */
- mrd.mr_base = base;
- mrd.mr_len = size;
- strcpy(mrd.mr_owner, X_MTRR_ID);
- mrd.mr_flags = MDF_WRITECOMBINE;
- mro.mo_desc = &mrd;
- mro.mo_arg[0] = MEMRANGE_SET_UPDATE;
- if (ioctl(devMemFd, MEMRANGE_SET, &mro)) {
- xf86DrvMsg(screenNum, X_WARNING,
- "Failed to set write-combining range "
- "(0x%lx,0x%lx)\n", base, size);
- return NULL;
- } else {
- xf86DrvMsg(screenNum, from,
- "Write-combining range (0x%lx,0x%lx)\n", base, size);
- retlist = xnfalloc(sizeof(RangeRec));
- retlist->mrd = mrd;
- retlist->wasWC = FALSE;
- retlist->next = NULL;
- return retlist;
- }
-}
-
-static pointer
-delWC(int screenNum, unsigned long base, unsigned long size, MessageType from)
-{
- RangePtr uc = NULL, wc = NULL, retlist = NULL;
- struct mem_range_desc mrd;
- struct mem_range_op mro;
-
- findRanges(base, size, &uc, &wc);
-
- /*
- * See of the full range is already not WC, or if there is full
- * coverage from UC ranges.
- */
- if (!wc || fullCoverage(base, size, uc)) {
- xf86DrvMsg(screenNum, from,
- "Write-combining range (0x%lx,0x%lx) was already clear\n",
- base, size);
- return NULL;
- }
-
- /* Otherwise, try to add the new range */
- mrd.mr_base = base;
- mrd.mr_len = size;
- strcpy(mrd.mr_owner, X_MTRR_ID);
- mrd.mr_flags = MDF_UNCACHEABLE;
- mro.mo_desc = &mrd;
- mro.mo_arg[0] = MEMRANGE_SET_UPDATE;
- if (ioctl(devMemFd, MEMRANGE_SET, &mro)) {
- xf86DrvMsg(screenNum, X_WARNING,
- "Failed to remove write-combining range "
- "(0x%lx,0x%lx)\n", base, size);
- /* XXX Should then remove all of the overlapping WC ranges */
- return NULL;
- } else {
- xf86DrvMsg(screenNum, from,
- "Removed Write-combining range (0x%lx,0x%lx)\n",
- base, size);
- retlist = xnfalloc(sizeof(RangeRec));
- retlist->mrd = mrd;
- retlist->wasWC = TRUE;
- retlist->next = NULL;
- return retlist;
- }
-}
-
-static pointer
-setWC(int screenNum, unsigned long base, unsigned long size, Bool enable,
- MessageType from)
-{
- if (enable)
- return addWC(screenNum, base, size, from);
- else
- return delWC(screenNum, base, size, from);
-}
-
-static void
-undoWC(int screenNum, pointer list)
-{
- RangePtr rp;
- struct mem_range_op mro;
- Bool failed;
-
- rp = list;
- while (rp) {
-#ifdef DEBUG
- ErrorF("Undo for (0x%lx,0x%lx), %d\n",
- (unsigned long)rp->mrd.mr_base,
- (unsigned long)rp->mrd.mr_len, rp->wasWC);
-#endif
- failed = FALSE;
- if (rp->wasWC) {
- mro.mo_arg[0] = MEMRANGE_SET_UPDATE;
- rp->mrd.mr_flags = MDF_WRITECOMBINE;
- strcpy(rp->mrd.mr_owner, "unknown");
- } else {
- mro.mo_arg[0] = MEMRANGE_SET_REMOVE;
- }
- mro.mo_desc = &rp->mrd;
-
- if (ioctl(devMemFd, MEMRANGE_SET, &mro)) {
- if (!rp->wasWC) {
- mro.mo_arg[0] = MEMRANGE_SET_UPDATE;
- rp->mrd.mr_flags = MDF_UNCACHEABLE;
- strcpy(rp->mrd.mr_owner, "unknown");
- if (ioctl(devMemFd, MEMRANGE_SET, &mro))
- failed = TRUE;
- } else
- failed = TRUE;
- }
- if (failed) {
- xf86DrvMsg(screenNum, X_WARNING,
- "Failed to restore MTRR range (0x%lx,0x%lx)\n",
- (unsigned long)rp->mrd.mr_base,
- (unsigned long)rp->mrd.mr_len);
- }
- rp = rp->next;
- }
-}
-
-#endif /* HAS_MTRR_SUPPORT */
-
-
-#if defined(HAS_MTRR_BUILTIN) && defined(__NetBSD__)
-static pointer
-NetBSDsetWC(int screenNum, unsigned long base, unsigned long size, Bool enable,
- MessageType from)
-{
- struct mtrr *mtrrp;
- int n;
-
- xf86DrvMsg(screenNum, X_WARNING,
- "%s MTRR %lx - %lx\n", enable ? "set" : "remove",
- base, (base + size));
-
- mtrrp = xnfalloc(sizeof (struct mtrr));
- mtrrp->base = base;
- mtrrp->len = size;
- mtrrp->type = MTRR_TYPE_WC;
-
- /*
- * MTRR_PRIVATE will make this MTRR get reset automatically
- * if this process exits, so we have no need for an explicit
- * cleanup operation when starting a new server.
- */
-
- if (enable)
- mtrrp->flags = MTRR_VALID | MTRR_PRIVATE;
- else
- mtrrp->flags = 0;
- n = 1;
-
- if (i386_set_mtrr(mtrrp, &n) < 0) {
- xfree(mtrrp);
- return NULL;
- }
- return mtrrp;
-}
-
-static void
-NetBSDundoWC(int screenNum, pointer list)
-{
- struct mtrr *mtrrp = (struct mtrr *)list;
- int n;
-
- if (mtrrp == NULL)
- return;
- n = 1;
- mtrrp->flags &= ~MTRR_VALID;
- i386_set_mtrr(mtrrp, &n);
- xfree(mtrrp);
-}
-#endif
-
-#if defined(__OpenBSD__) && defined(__amd64__)
-static pointer
-amd64setWC(int screenNum, unsigned long base, unsigned long size, Bool enable,
- MessageType from)
-{
- struct mtrr *mtrrp;
- int n;
-
- xf86DrvMsg(screenNum, X_WARNING,
- "%s MTRR %lx - %lx\n", enable ? "set" : "remove",
- base, (base + size));
-
- mtrrp = xnfalloc(sizeof (struct mtrr));
- mtrrp->base = base;
- mtrrp->len = size;
- mtrrp->type = MTRR_TYPE_WC;
-
- /*
- * MTRR_PRIVATE will make this MTRR get reset automatically
- * if this process exits, so we have no need for an explicit
- * cleanup operation when starting a new server.
- */
-
- if (enable)
- mtrrp->flags = MTRR_VALID | MTRR_PRIVATE;
- else
- mtrrp->flags = 0;
- n = 1;
-
- if (amd64_set_mtrr(mtrrp, &n) < 0) {
- xfree(mtrrp);
- return NULL;
- }
- return mtrrp;
-}
-
-static void
-amd64undoWC(int screenNum, pointer list)
-{
- struct mtrr *mtrrp = (struct mtrr *)list;
- int n;
-
- if (mtrrp == NULL)
- return;
- n = 1;
- mtrrp->flags &= ~MTRR_VALID;
- amd64_set_mtrr(mtrrp, &n);
- xfree(mtrrp);
-}
-#endif /* OpenBSD/amd64 */
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/Imakefile
deleted file mode 100644
index 15b784797..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/Imakefile
+++ /dev/null
@@ -1,10 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/libusb/Imakefile,v 1.1.2.1 1999/12/01 12:49:27 hohndel Exp $
-
-#include <Server.tmpl>
-
-SRCS = data.c descr.c parse.c usage.c
-OBJS = data.o descr.o parse.o usage.o
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(usb,$(OBJS))
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/data.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/data.c
deleted file mode 100644
index 0ac1a63bc..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/data.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/* $NetBSD: data.c,v 1.6 1999/09/20 04:48:12 lukem Exp $ */
-
-/*
- * Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/libusb/data.c,v 1.1.2.2 1999/12/03 10:12:41 hohndel Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <assert.h>
-#include <stdlib.h>
-#include "usb.h"
-
-int
-hid_get_data(void *p, hid_item_t *h)
-{
- unsigned char *buf;
- unsigned int hpos;
- unsigned int hsize;
- int data;
- int i, end, offs;
-
- _DIAGASSERT(p != NULL);
- _DIAGASSERT(h != NULL);
-
- buf = p;
- hpos = h->pos; /* bit position of data */
- hsize = h->report_size; /* bit length of data */
-
- if (hsize == 0)
- return (0);
- offs = hpos / 8;
- end = (hpos + hsize) / 8 - offs;
- data = 0;
- for (i = 0; i <= end; i++)
- data |= buf[offs + i] << (i*8);
- data >>= hpos % 8;
- data &= (1 << hsize) - 1;
- if (h->logical_minimum < 0) {
- /* Need to sign extend */
- hsize = sizeof data * 8 - hsize;
- data = (data << hsize) >> hsize;
- }
- return (data);
-}
-
-void
-hid_set_data(void *p, hid_item_t *h, int data)
-{
- unsigned char *buf;
- unsigned int hpos;
- unsigned int hsize;
- int i, end, offs;
-
- _DIAGASSERT(p != NULL);
- _DIAGASSERT(h != NULL);
-
- buf = p;
- hpos = h->pos; /* bit position of data */
- hsize = h->report_size; /* bit length of data */
-
- if (hsize != 32)
- data &= (1 << hsize) - 1;
- data <<= (hpos % 8);
-
- offs = hpos / 8;
- end = (hpos + hsize) / 8 - offs;
- data = 0;
- for (i = 0; i <= end; i++)
- buf[offs + i] |= (data >> (i*8)) & 0xff;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/descr.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/descr.c
deleted file mode 100644
index 2306d2f58..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/descr.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* $NetBSD: descr.c,v 1.7 1999/10/13 17:48:04 drochner Exp $ */
-
-/*
- * Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/libusb/descr.c,v 1.1.2.2 1999/12/03 10:12:42 hohndel Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <sys/types.h>
-
-#include <assert.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/time.h>
-
-#include <dev/usb/usb.h>
-
-#include "usb.h"
-#include "usbvar.h"
-
-report_desc_t
-hid_get_report_desc(fd)
- int fd;
-{
- struct usb_ctl_report_desc rep;
- report_desc_t r;
-
- _DIAGASSERT(fd != -1);
-
- rep.size = 0;
- if (ioctl(fd, USB_GET_REPORT_DESC, &rep) < 0)
- return (0);
- r = malloc(sizeof *r + rep.size);
- if (r == 0) {
- errno = ENOMEM;
- return (0);
- }
- r->size = rep.size;
- memcpy(r->data, rep.data, (unsigned int)rep.size);
- return (r);
-}
-
-void
-hid_dispose_report_desc(r)
- report_desc_t r;
-{
-
- free(r);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/parse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/parse.c
deleted file mode 100644
index feff9779a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/parse.c
+++ /dev/null
@@ -1,404 +0,0 @@
-/* $NetBSD: parse.c,v 1.7 1999/10/13 17:48:04 drochner Exp $ */
-
-/*
- * Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/libusb/parse.c,v 1.1.2.2 1999/12/03 10:12:42 hohndel Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/time.h>
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbhid.h>
-
-#include "usb.h"
-#include "usbvar.h"
-
-#define MAXUSAGE 100
-struct hid_data {
- u_char *start;
- u_char *end;
- u_char *p;
- hid_item_t cur;
- unsigned int usages[MAXUSAGE];
- int nusage;
- int minset;
- int multi;
- int multimax;
- int kindset;
-};
-
-static int min(int x, int y) { return x < y ? x : y; }
-
-static void
-hid_clear_local(hid_item_t *c)
-{
-
- _DIAGASSERT(c != NULL);
-
- c->usage = 0;
- c->usage_minimum = 0;
- c->usage_maximum = 0;
- c->designator_index = 0;
- c->designator_minimum = 0;
- c->designator_maximum = 0;
- c->string_index = 0;
- c->string_minimum = 0;
- c->string_maximum = 0;
- c->set_delimiter = 0;
-}
-
-hid_data_t
-hid_start_parse(report_desc_t d, int kindset)
-{
- struct hid_data *s;
-
- _DIAGASSERT(d != NULL);
-
- s = malloc(sizeof *s);
- memset(s, 0, sizeof *s);
- s->start = s->p = d->data;
- s->end = d->data + d->size;
- s->kindset = kindset;
- return (s);
-}
-
-void
-hid_end_parse(hid_data_t s)
-{
-
- _DIAGASSERT(s != NULL);
-
- while (s->cur.next) {
- hid_item_t *hi = s->cur.next->next;
- free(s->cur.next);
- s->cur.next = hi;
- }
- free(s);
-}
-
-int
-hid_get_item(hid_data_t s, hid_item_t *h)
-{
- hid_item_t *c;
- unsigned int bTag = 0, bType = 0, bSize;
- unsigned char *data;
- int dval;
- unsigned char *p;
- hid_item_t *hi;
- int i;
-
- _DIAGASSERT(s != NULL);
- _DIAGASSERT(h != NULL);
-
- c = &s->cur;
-
- top:
- if (s->multimax) {
- if (s->multi < s->multimax) {
- c->usage = s->usages[min(s->multi, s->nusage-1)];
- s->multi++;
- *h = *c;
- c->pos += c->report_size;
- h->next = 0;
- return (1);
- } else {
- c->report_count = s->multimax;
- s->multimax = 0;
- s->nusage = 0;
- hid_clear_local(c);
- }
- }
- for (;;) {
- p = s->p;
- if (p >= s->end)
- return (0);
-
- bSize = *p++;
- if (bSize == 0xfe) {
- /* long item */
- bSize = *p++;
- bSize |= *p++ << 8;
- bTag = *p++;
- data = p;
- p += bSize;
- } else {
- /* short item */
- bTag = bSize >> 4;
- bType = (bSize >> 2) & 3;
- bSize &= 3;
- if (bSize == 3) bSize = 4;
- data = p;
- p += bSize;
- }
- s->p = p;
- /*
- * The spec is unclear if the data is signed or unsigned.
- */
- switch(bSize) {
- case 0:
- dval = 0;
- break;
- case 1:
- dval = (int8_t)*data++;
- break;
- case 2:
- dval = *data++;
- dval |= *data++ << 8;
- dval = (int16_t)dval;
- break;
- case 4:
- dval = *data++;
- dval |= *data++ << 8;
- dval |= *data++ << 16;
- dval |= *data++ << 24;
- break;
- default:
- return (-1);
- }
-
- switch (bType) {
- case 0: /* Main */
- switch (bTag) {
- case 8: /* Input */
- if (!(s->kindset & (1 << hid_input)))
- continue;
- c->kind = hid_input;
- c->flags = dval;
- ret:
- if (c->flags & HIO_VARIABLE) {
- s->multimax = c->report_count;
- s->multi = 0;
- c->report_count = 1;
- if (s->minset) {
- for (i = c->usage_minimum;
- i <= c->usage_maximum;
- i++) {
- s->usages[s->nusage] = i;
- if (s->nusage < MAXUSAGE-1)
- s->nusage++;
- }
- s->minset = 0;
- }
- goto top;
- } else {
- if (s->minset)
- c->usage = c->usage_minimum;
- *h = *c;
- h->next = 0;
- c->pos += c->report_size * c->report_count;
- hid_clear_local(c);
- s->minset = 0;
- return (1);
- }
- case 9: /* Output */
- if (!(s->kindset & (1 << hid_output)))
- continue;
- c->kind = hid_output;
- c->flags = dval;
- goto ret;
- case 10: /* Collection */
- c->kind = hid_collection;
- c->collection = dval;
- c->collevel++;
- *h = *c;
- hid_clear_local(c);
- s->nusage = 0;
- return (1);
- case 11: /* Feature */
- if (!(s->kindset & (1 << hid_feature)))
- continue;
- c->kind = hid_feature;
- c->flags = dval;
- goto ret;
- case 12: /* End collection */
- c->kind = hid_endcollection;
- c->collevel--;
- *h = *c;
- hid_clear_local(c);
- s->nusage = 0;
- return (1);
- default:
- return (-2);
- }
-
- case 1: /* Global */
- switch (bTag) {
- case 0:
- c->_usage_page = dval << 16;
- break;
- case 1:
- c->logical_minimum = dval;
- break;
- case 2:
- c->logical_maximum = dval;
- break;
- case 3:
- c->physical_maximum = dval;
- break;
- case 4:
- c->physical_maximum = dval;
- break;
- case 5:
- c->unit_exponent = dval;
- break;
- case 6:
- c->unit = dval;
- break;
- case 7:
- c->report_size = dval;
- break;
- case 8:
- c->report_ID = dval;
- break;
- case 9:
- c->report_count = dval;
- break;
- case 10: /* Push */
- hi = malloc(sizeof *hi);
- *hi = s->cur;
- c->next = hi;
- break;
- case 11: /* Pop */
- hi = c->next;
- s->cur = *hi;
- free(hi);
- break;
- default:
- return (-3);
- }
- break;
- case 2: /* Local */
- switch (bTag) {
- case 0:
- if (bSize == 1)
- dval = c->_usage_page | (dval&0xff);
- else if (bSize == 2)
- dval = c->_usage_page | (dval&0xffff);
- c->usage = dval;
- if (s->nusage < MAXUSAGE)
- s->usages[s->nusage++] = dval;
- /* else XXX */
- break;
- case 1:
- s->minset = 1;
- if (bSize == 1)
- dval = c->_usage_page | (dval&0xff);
- else if (bSize == 2)
- dval = c->_usage_page | (dval&0xffff);
- c->usage_minimum = dval;
- break;
- case 2:
- if (bSize == 1)
- dval = c->_usage_page | (dval&0xff);
- else if (bSize == 2)
- dval = c->_usage_page | (dval&0xffff);
- c->usage_maximum = dval;
- break;
- case 3:
- c->designator_index = dval;
- break;
- case 4:
- c->designator_minimum = dval;
- break;
- case 5:
- c->designator_maximum = dval;
- break;
- case 7:
- c->string_index = dval;
- break;
- case 8:
- c->string_minimum = dval;
- break;
- case 9:
- c->string_maximum = dval;
- break;
- case 10:
- c->set_delimiter = dval;
- break;
- default:
- return (-4);
- }
- break;
- default:
- return (-5);
- }
- }
-}
-
-int
-hid_report_size(report_desc_t r, enum hid_kind k, int *idp)
-{
- struct hid_data *d;
- hid_item_t h;
- int size, id;
-
- _DIAGASSERT(r != NULL);
- /* idp may be NULL */
-
- id = 0;
- if (idp)
- *idp = 0;
- memset(&h, 0, sizeof h);
- for (d = hid_start_parse(r, 1<<k); hid_get_item(d, &h); ) {
- if (h.report_ID != 0) {
- if (idp)
- *idp = h.report_ID;
- id = 8;
- }
- }
- hid_end_parse(d);
- size = h.pos + id;
- return ((size + 7) / 8);
-}
-
-int
-hid_locate(desc, u, k, h)
- report_desc_t desc;
- unsigned int u;
- enum hid_kind k;
- hid_item_t *h;
-{
- hid_data_t d;
-
- _DIAGASSERT(desc != NULL);
- _DIAGASSERT(h != NULL);
-
- for (d = hid_start_parse(desc, 1<<k); hid_get_item(d, h); ) {
- if (h->kind == k && !(h->flags & HIO_CONST) && h->usage == u) {
- hid_end_parse(d);
- return (1);
- }
- }
- hid_end_parse(d);
- h->report_size = 0;
- return (0);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usage.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usage.c
deleted file mode 100644
index f909ee691..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usage.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/* $NetBSD: usage.c,v 1.4 1999/07/02 15:46:53 simonb Exp $ */
-
-/*
- * Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/libusb/usage.c,v 1.1.2.2 1999/12/03 10:12:42 hohndel Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <ctype.h>
-#include <err.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "usb.h"
-
-#define _PATH_HIDTABLE "/usr/share/misc/usb_hid_usages"
-
-struct usage_in_page {
- char *name;
- int usage;
-};
-
-static struct usage_page {
- char *name;
- int usage;
- struct usage_in_page *page_contents;
- int pagesize, pagesizemax;
-} *pages;
-static int npages, npagesmax;
-
-#ifdef DEBUG
-void
-dump_hid_table(void)
-{
- int i, j;
-
- for (i = 0; i < npages; i++) {
- printf("%d\t%s\n", pages[i].usage, pages[i].name);
- for (j = 0; j < pages[i].pagesize; j++) {
- printf("\t%d\t%s\n", pages[i].page_contents[j].usage,
- pages[i].page_contents[j].name);
- }
- }
-}
-#endif
-
-void
-hid_init(char *hidname)
-{
- FILE *f;
- char line[100], name[100], *p, *n;
- int no;
- int lineno;
- struct usage_page *curpage = 0;
-
- if (hidname == 0)
- hidname = _PATH_HIDTABLE;
-
- f = fopen(hidname, "r");
- if (f == NULL)
- err(1, "%s", hidname);
- for (lineno = 1; ; lineno++) {
- if (fgets(line, sizeof line, f) == NULL)
- break;
- if (line[0] == '#')
- continue;
- for (p = line; *p && isspace(*p); p++)
- ;
- if (!*p)
- continue;
- if (sscanf(line, " * %[^\n]", name) == 1)
- no = -1;
- else if (sscanf(line, " 0x%x %[^\n]", &no, name) != 2 &&
- sscanf(line, " %d %[^\n]", &no, name) != 2)
- errx(1, "file %s, line %d, syntax error\n",
- hidname, lineno);
- for (p = name; *p; p++)
- if (isspace(*p) || *p == '.')
- *p = '_';
- n = strdup(name);
- if (!n)
- err(1, "strdup");
- if (isspace(line[0])) {
- if (!curpage)
- errx(1, "file %s, line %d, syntax error\n",
- hidname, lineno);
- if (curpage->pagesize >= curpage->pagesizemax) {
- curpage->pagesizemax += 10;
- curpage->page_contents =
- realloc(curpage->page_contents,
- curpage->pagesizemax *
- sizeof (struct usage_in_page));
- if (!curpage->page_contents)
- err(1, "realloc");
- }
- curpage->page_contents[curpage->pagesize].name = n;
- curpage->page_contents[curpage->pagesize].usage = no;
- curpage->pagesize++;
- } else {
- if (npages >= npagesmax) {
- if (pages == 0) {
- npagesmax = 5;
- pages = malloc(npagesmax *
- sizeof (struct usage_page));
- } else {
- npagesmax += 5;
- pages = realloc(pages,
- npagesmax *
- sizeof (struct usage_page));
- }
- if (!pages)
- err(1, "alloc");
- }
- curpage = &pages[npages++];
- curpage->name = n;
- curpage->usage = no;
- curpage->pagesize = 0;
- curpage->pagesizemax = 10;
- curpage->page_contents =
- malloc(curpage->pagesizemax *
- sizeof (struct usage_in_page));
- if (!curpage->page_contents)
- err(1, "malloc");
- }
- }
- fclose(f);
-#ifdef DEBUG
- dump_hid_table();
-#endif
-}
-
-char *
-hid_usage_page(int i)
-{
- static char b[10];
- int k;
-
- if (!pages)
- errx(1, "no hid table\n");
-
- for (k = 0; k < npages; k++)
- if (pages[k].usage == i)
- return pages[k].name;
- sprintf(b, "0x%02x", i);
- return b;
-}
-
-char *
-hid_usage_in_page(unsigned int u)
-{
- int page = HID_PAGE(u);
- int i = HID_USAGE(u);
- static char b[100];
- int j, k, us;
-
- for (k = 0; k < npages; k++)
- if (pages[k].usage == page)
- break;
- if (k >= npages)
- goto bad;
- for (j = 0; j < pages[k].pagesize; j++) {
- us = pages[k].page_contents[j].usage;
- if (us == -1) {
- sprintf(b, pages[k].page_contents[j].name, i);
- return b;
- }
- if (us == i)
- return pages[k].page_contents[j].name;
- }
- bad:
- sprintf(b, "0x%02x", i);
- return b;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb.3 b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb.3
deleted file mode 100644
index db0b1b08f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb.3
+++ /dev/null
@@ -1,191 +0,0 @@
-.\" $NetBSD: usb.3,v 1.9 1999/11/08 22:33:40 augustss Exp $
-.\"
-.\" Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org>
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $XFree86: xc/programs/Xserver/hw/xfree86/os-support/libusb/usb.3,v 1.1.2.2 1999/12/03 10:12:42 hohndel Exp $
-.\"
-.Dd May 11, 1999
-.Dt USB 3
-.Os
-.Sh NAME
-.Nm usb ,
-.Nm hid_get_report_desc ,
-.Nm hid_dispose_report_desc ,
-.Nm hid_start_parse ,
-.Nm hid_end_parse ,
-.Nm hid_get_item ,
-.Nm hid_report_size ,
-.Nm hid_locate ,
-.Nm hid_usage_page ,
-.Nm hid_usage_in_page ,
-.Nm hid_init ,
-.Nm hid_get_data ,
-.Nm hid_set_data
-.Nd USB HID access routines
-.Sh LIBRARY
-.Lb libusb
-.Sh SYNOPSIS
-.Fd #include <usb.h>
-.Ft report_desc_t
-.Fn hid_get_report_desc "int file"
-.Ft void
-.Fn hid_dispose_report_desc "report_desc_t d"
-.Ft hid_data_t
-.Fn hid_start_parse "report_desc_t d" "int kindset"
-.Ft void
-.Fn hid_end_parse "hid_data_t s"
-.Ft int
-.Fn hid_get_item "hid_data_t s" "hid_item_t *h"
-.Ft int
-.Fn hid_report_size "report_desc_t d" "hid_kind_t k" "int *idp"
-.Ft int
-.Fn hid_locate "report_desc_t d" "u_int usage" "hid_kind_t k" "hid_item_t *h"
-.Ft char *
-.Fn hid_usage_page "int i"
-.Ft char *
-.Fn hid_usage_in_page "u_int u"
-.Ft void
-.Fn hid_init "char *file"
-.Ft int
-.Fn hid_get_data "void *data" "hid_item_t *h"
-.Ft void
-.Fn hid_set_data "void *data" "hid_item_t *h" "u_int data"
-.Sh DESCRIPTION
-The
-.Nm
-library provides routines to extract data from USB Human Interface Devices.
-.Ss INTRODUCTION
-USB HID devices send and receive data layed out a device dependent
-way. The
-.Nm
-library contains routines to extract the
-.Em report descriptor
-which contains the data layout information and then use this information.
-.Pp
-The routines can be divided into four parts: extraction of the descriptor,
-parsing of the descriptor, translating to/from symbolic names, and
-data manipulation.
-.Ss DESCRIPTOR FUNCTIONS
-A report descriptor can be obtained by calling
-.Fn hid_get_report_desc
-with a file descriptor obtained by opening a
-.Xr uhid 4
-device.
-When the report descriptor is no longer needed it should be freed
-by calling
-.Fn hid_dispose_report_desc .
-The type
-.Fa report_desc_t
-is opaque and should be used when calling the parsing functions.
-.Ss DESCRIPTOR PARSING FUNCTIONS
-To parse the report descriptor the
-.Fn hid_start_parse
-function should be called with a report descriptor and a set that
-describes which items that are interesting. The set is obtained
-by oring together values
-.Fa "(1 << k)"
-where
-.Fa k
-is an item of type
-.Fa hid_kind_t .
-The function returns
-.Fa NULL
-if the initialization fails, otherwise an opaque value to be used
-in subsequent calls.
-After parsing the
-.Fn hid_end_parse
-function should be called to free internal data structures.
-.Pp
-To iterate through all the items in the report descriptor
-.Fn hid_get_item
-should be called while it returns a value greater than 0.
-When the report descriptor ends it will returns 0; a syntax
-error within the report descriptor will cause a return value less
-than 0.
-The struct pointed to by
-.Fa h
-will be filled with the relevant data for the item.
-The definition of
-.Fa hid_item_t
-can be found in
-.Pa <usb.h>
-and the meaning of the components in the USB HID documentation.
-.Pp
-Data should be read/written to the device in the size of
-the report. The size of a report (of a certain kind) can be
-computed by the
-.Fn hid_report_size
-function. If the report is prefixed by an ID byte it is
-stored at
-.Fa idp ,
-otherwise it will contain 0.
-.Pp
-To locate a single item the
-.Fn hid_locate
-function can be used. It should be given the usage code of
-the item and its kind and it will fill the item and return
-non-zero if the item was found.
-.Pp
-.Ss NAME TRANSLATION FUNCTIONS
-The function
-.Fn hid_usage_page
-will return the symbolic name of a usage page, and the function
-.Fn hid_usage_in_page
-will return the symbolic name of the usage within the page.
-Both these functions may return a pointer to static data.
-Before either of these functions can be called the usage table
-must be parsed, this is done by calling
-.Fn hid_init
-with the name of the table. Passing
-.Fa NULL
-to this function will cause it to use the default table.
-.Ss DATA EXTRACTION FUNCTIONS
-Given the data obtained from a HID device and an item in the
-report descriptor the
-.Fn hid_get_data
-function extracts the value of the item.
-Conversely
-.Fn hid_set_data
-can be used to put data into a report (which must be zeroed first).
-.Sh EXAMPLE
-Not yet.
-.Sh FILES
-.Pa /usr/share/misc/usb_hid_usages
-The default HID usage table.
-.Sh BUGS
-This man page is woefully incomplete.
-.Sh SEE ALSO
-The
-.Tn USB
-specifications can be found at
-.Dv http://www.usb.org/developers/docs.htm .
-.Pp
-.Xr hid 4 ,
-.Xr usb 4 .
-.Sh HISTORY
-The
-.Nm
-library first appeared in
-.Nx 1.5 .
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb.h
deleted file mode 100644
index 445428118..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* $NetBSD: usb.h,v 1.5 1999/07/02 15:46:53 simonb Exp $ */
-
-/*
- * Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/libusb/usb.h,v 1.1.2.2 1999/12/03 10:12:43 hohndel Exp $ */
-
-#define _DIAGASSERT(e) assert(e)
-
-typedef struct report_desc *report_desc_t;
-
-typedef struct hid_data *hid_data_t;
-
-typedef enum hid_kind {
- hid_input, hid_output, hid_feature, hid_collection, hid_endcollection
-}hid_kind_t;
-
-typedef struct hid_item {
- /* Global */
- int _usage_page;
- int logical_minimum;
- int logical_maximum;
- int physical_minimum;
- int physical_maximum;
- int unit_exponent;
- int unit;
- int report_size;
- int report_ID;
- int report_count;
- /* Local */
- unsigned int usage;
- int usage_minimum;
- int usage_maximum;
- int designator_index;
- int designator_minimum;
- int designator_maximum;
- int string_index;
- int string_minimum;
- int string_maximum;
- int set_delimiter;
- /* Misc */
- int collection;
- int collevel;
- enum hid_kind kind;
- unsigned int flags;
- /* Absolute data position (bits) */
- unsigned int pos;
- /* */
- struct hid_item *next;
-} hid_item_t;
-
-#define HID_PAGE(u) ((u) >> 16)
-#define HID_USAGE(u) ((u) & 0xffff)
-
-/* Obtaining a report descriptor, descr.c: */
-report_desc_t hid_get_report_desc __P((int file));
-void hid_dispose_report_desc __P((report_desc_t));
-
-/* Parsing of a HID report descriptor, parse.c: */
-hid_data_t hid_start_parse __P((report_desc_t d, int kindset));
-void hid_end_parse __P((hid_data_t s));
-int hid_get_item __P((hid_data_t s, hid_item_t *h));
-int hid_report_size __P((report_desc_t d, enum hid_kind k, int *idp));
-int hid_locate __P((report_desc_t d, unsigned int usage, enum hid_kind k, hid_item_t *h));
-
-/* Conversion to/from usage names, usage.c: */
-char *hid_usage_page __P((int i));
-char *hid_usage_in_page __P((unsigned int u));
-void hid_init __P((char *file));
-
-/* Extracting/insertion of data, data.c: */
-int hid_get_data __P((void *p, hid_item_t *h));
-void hid_set_data __P((void *p, hid_item_t *h, int data));
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb_hid_usages b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb_hid_usages
deleted file mode 100644
index 02f122028..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb_hid_usages
+++ /dev/null
@@ -1,1079 +0,0 @@
-# $NetBSD: usb_hid_usages,v 1.3 1999/07/02 15:46:53 simonb Exp $
-#
-# USB HID usage table
-# Syntax:
-# - lines that do not start with a white space give the number and name of
-# a usage page.
-# - lines that start with a white space give the number and name of
-# a usage with the last given page.
-# If the number is * then the line matches all usages and the name
-# is a printf formatting string that will be given the usage number.
-#
-# $XFree86: xc/programs/Xserver/hw/xfree86/os-support/libusb/usb_hid_usages,v 1.1.2.2 1999/12/03 10:12:43 hohndel Exp $
-#
-1 Generic Desktop
- 0x00 Undefined
- 0x01 Pointer
- 0x02 Mouse
- 0x03 Reserved
- 0x04 Joystick
- 0x05 Game Pad
- 0x06 Keyboard
- 0x07 Keypad
- 0x08 Multi-axis Controller
- 0x30 X
- 0x31 Y
- 0x32 Z
- 0x33 Rx
- 0x34 Ry
- 0x35 Rz
- 0x36 Slider
- 0x37 Dial
- 0x38 Wheel
- 0x39 Hat Switch
- 0x3A Counted Buffer
- 0x3B Byte Count
- 0x3C Motion Wakeup
- 0x40 Vx
- 0x41 Vy
- 0x42 Vz
- 0x43 Vbrx
- 0x44 Vbry
- 0x45 Vbrx
- 0x46 Vno
- 0x80 System Control
- 0x81 System Power Down
- 0x82 System Sleep
- 0x83 System Wake Up
- 0x84 System Context Menu
- 0x85 System Main Menu
- 0x86 System App Menu
- 0x87 System Menu Help
- 0x88 System Menu Exit
- 0x89 System Menu Select
- 0x8A System Menu Right
- 0x8B System Menu Left
- 0x8C System Menu Up
- 0x8D System Menu Down
- 0x90 D-pad Up
- 0x91 D-pad Down
- 0x92 D-pad Right
- 0x93 D-pad Left
-
-2 Simulation Controls
- 0x00 Undefined
- 0x01 Flight Simulation Device
- 0x02 Automobile Simulation Device
- 0x03 Tank Simulation Device
- 0x04 Spaceship Simulation Device
- 0x05 Submarine Simulation Device
- 0x06 Sailing Simulation Device
- 0x07 Motorcycle Simulation Device
- 0x08 Sports Simulation Device
- 0x09 Airplane Simulation Device
- 0x0A Helicopter Simulation Device
- 0x0B Magic Carpet Simulation Device
- 0x0C Bicycle
- 0x20 Flight Control Stick
- 0x21 Flight Stick
- 0x22 Cyclic Control
- 0x23 Cyclic Trim
- 0x24 Flight Yoke
- 0x25 Track Control
- 0x26 Driving Control
- 0xB0 Aileron
- 0xB1 Aileron Trim
- 0xB2 Anti-Torque Control
- 0xB3 Auto-pilot Enable
- 0xB4 Chaff Release
- 0xB5 Collective Control
- 0xB6 Dive Brake
- 0xB7 Electronic Counter Measures
- 0xB8 Elevator
- 0xB9 Elevator Trim
- 0xBA Rudder
- 0xBB Throttle
- 0xBC Flight Communication
- 0xBD Flare Release
- 0xBE Landing Gear
- 0xBF Toe Brake
- 0xC0 Trigger
- 0xC1 Weapons Arm
- 0xC2 Weapons Select
- 0xC3 Wing Flaps
- 0xC4 Accelerator
- 0xC5 Brake
- 0xC6 Clutch
- 0xC7 Shifter
- 0xC8 Steering
- 0xC9 Turret Direction
- 0xCA Barrel Elevation
- 0xCB Dive Plane
- 0xCC Ballast
- 0xCD Bicycle Crank
- 0xCE Handle Bars
- 0xCF Front Brake
- 0xD0 Rear Brake
-
-3 VR Controls
- 0x00 Unidentified
- 0x01 Belt
- 0x02 Body Suit
- 0x03 Flexor
- 0x04 Glove
- 0x05 Head Tracker
- 0x06 Head Mounted Display
- 0x07 Hand Tracker
- 0x08 Oculometer
- 0x09 Vest
- 0x0A Animatronic Device
- 0x20 Stereo Enable
- 0x21 Display Enable
-
-4 Sports Controls
- 0x00 Unidentified
- 0x01 Baseball Bat
- 0x02 Golf Club
- 0x03 Rowing Machine
- 0x04 Treadmill
- 0x30 Oar
- 0x31 Slope
- 0x32 Rate
- 0x33 Stick Speed
- 0x34 Stick Face Angle
- 0x35 Stick Heel/Toe
- 0x36 Stick Follow Through
- 0x37 Stick Tempo
- 0x38 Stick Type
- 0x39 Stick Height
- 0x50 Putter
- 0x51 1 Iron
- 0x52 2 Iron
- 0x53 3 Iron
- 0x54 4 Iron
- 0x55 5 Iron
- 0x56 6 Iron
- 0x57 7 Iron
- 0x58 8 Iron
- 0x59 9 Iron
- 0x5A 10 Iron
- 0x5B 11 Iron
- 0x5C Sand Wedge
- 0x5D Loft Wedge
- 0x5E Power Wedge
- 0x5F 1 Wood
- 0x60 3 Wood
- 0x61 5 Wood
- 0x62 7 Wood
- 0x63 9 Wood
-
-5 Game Controls
- 0x00 Undefined
- 0x01 3D Game Controller
- 0x02 Pinball Device
- 0x03 Gun Device
- 0x20 Point of View
- 0x21 Turn Right/Left
- 0x22 Pitch Right/Left
- 0x23 Roll Forward/Backward
- 0x24 Move Right/Left
- 0x25 Move Forward/Backward
- 0x26 Move Up/Down
- 0x27 Lean Right/Left
- 0x28 Lean Forward/Backward
- 0x29 Height of POV
- 0x2A Flipper
- 0x2B Secondary Flipper
- 0x2C Bump
- 0x2D New Game
- 0x2E Shoot Ball
- 0x2F Player
- 0x30 Gun Bolt
- 0x31 Gun Clip
- 0x32 Gun Selector
- 0x33 Gun Single Shot
- 0x34 Gun Burst
- 0x35 Gun Automatic
- 0x36 Gun Safety
- 0x37 Gamepad Fire/Jump
- 0x39 Gamepad Trigger
-
-7 Keyboard
- 0x00 Reserved (no event indicated)
- 0x01 Keyboard ErrorRollOver
- 0x02 Keyboard POSTFail
- 0x03 Keyboard ErrorUndefined
- 0x04 Keyboard a and A
- 0x05 Keyboard b and B
- 0x06 Keyboard c and C
- 0x07 Keyboard d and D
- 0x08 Keyboard e and E
- 0x09 Keyboard f and F
- 0x0A Keyboard g and G
- 0x0B Keyboard h and H
- 0x0C Keyboard i and I
- 0x0D Keyboard j and J
- 0x0E Keyboard k and K
- 0x0F Keyboard l and L
- 0x10 Keyboard m and M
- 0x11 Keyboard n and N
- 0x12 Keyboard o and O
- 0x13 Keyboard p and P
- 0x14 Keyboard q and Q
- 0x15 Keyboard r and R
- 0x16 Keyboard s and S
- 0x17 Keyboard t and T
- 0x18 Keyboard u and U
- 0x19 Keyboard v and V
- 0x1A Keyboard w and W
- 0x1B Keyboard x and X
- 0x1C Keyboard y and Y
- 0x1D Keyboard z and Z
- 0x1E Keyboard 1 and !
- 0x1F Keyboard 2 and @
- 0x20 Keyboard 3 and #
- 0x21 Keyboard 4 and $
- 0x22 Keyboard 5 and %
- 0x23 Keyboard 6 and ^
- 0x24 Keyboard 7 and &
- 0x25 Keyboard 8 and *
- 0x26 Keyboard 9 and (
- 0x27 Keyboard 0 and )
- 0x28 Keyboard Return (ENTER)
- 0x29 Keyboard ESCAPE
- 0x2A Keyboard DELETE (Backspace)
- 0x2B Keyboard Tab
- 0x2C Keyboard Spacebar
- 0x2D Keyboard - and (underscore)
- 0x2E Keyboard = and +
- 0x2F Keyboard [ and {
- 0x30 Keyboard ] and }
- 0x31 Keyboard \ and |
- 0x32 Keyboard Non-US # and ~
- 0x33 Keyboard ; and :
- 0x34 Keyboard ' and "
- 0x35 Keyboard Grave Accent and Tilde
- 0x36 Keyboard, and <
- 0x37 Keyboard . and >
- 0x38 Keyboard / and ?
- 0x39 Keyboard Caps Lock
- 0x3A Keyboard F1
- 0x3B Keyboard F2
- 0x3C Keyboard F3
- 0x3D Keyboard F4
- 0x3E Keyboard F5
- 0x3F Keyboard F6
- 0x40 Keyboard F7
- 0x41 Keyboard F8
- 0x42 Keyboard F9
- 0x43 Keyboard F10
- 0x44 Keyboard F11
- 0x45 Keyboard F12
- 0x46 Keyboard PrintScreen
- 0x47 Keyboard Scroll Lock
- 0x48 Keyboard Pause
- 0x49 Keyboard Insert
- 0x4A Keyboard Home
- 0x4B Keyboard PageUp
- 0x4C Keyboard Delete Forward
- 0x4D Keyboard End
- 0x4E Keyboard PageDown
- 0x4F Keyboard RightArrow
- 0x50 Keyboard LeftArrow
- 0x51 Keyboard DownArrow
- 0x52 Keyboard UpArrow
- 0x53 Keypad Num Lock and Clear
- 0x54 Keypad /
- 0x55 Keypad *
- 0x56 Keypad -
- 0x57 Keypad +
- 0x58 Keypad ENTER
- 0x59 Keypad 1 and End
- 0x5A Keypad 2 and Down Arrow
- 0x5B Keypad 3 and PageDn
- 0x5C Keypad 4 and Left Arrow
- 0x5D Keypad 5
- 0x5E Keypad 6 and Right Arrow
- 0x5F Keypad 7 and Home
- 0x60 Keypad 8 and Up Arrow
- 0x61 Keypad 9 and PageUp
- 0x62 Keypad 0 and Insert
- 0x63 Keypad . and Delete
- 0x64 Keyboard Non-US \ and |
- 0x65 Keyboard Application
- 0x66 Keyboard Power
- 0x67 Keypad =
- 0x68 Keyboard F13
- 0x69 Keyboard F14
- 0x6A Keyboard F15
- 0x6B Keyboard F16
- 0x6C Keyboard F17
- 0x6D Keyboard F18
- 0x6E Keyboard F19
- 0x6F Keyboard F20
- 0x70 Keyboard F21
- 0x71 Keyboard F22
- 0x72 Keyboard F23
- 0x73 Keyboard F24
- 0x74 Keyboard Execute
- 0x75 Keyboard Help
- 0x76 Keyboard Menu
- 0x77 Keyboard Select
- 0x78 Keyboard Stop
- 0x79 Keyboard Again
- 0x7A Keyboard Undo
- 0x7B Keyboard Cut
- 0x7C Keyboard Copy
- 0x7D Keyboard Paste
- 0x7E Keyboard Find
- 0x7F Keyboard Mute
- 0x80 Keyboard Volume Up
- 0x81 Keyboard Volume Down
- 0x82 Keyboard Locking Caps Lock
- 0x83 Keyboard Locking Num Lock
- 0x84 Keyboard Locking Scroll Lock
- 0x85 Keypad Comma
- 0x86 Keypad Equal Sign
- 0x87 Keyboard International1
- 0x88 Keyboard International2
- 0x89 Keyboard International3
- 0x8A Keyboard International4
- 0x8B Keyboard International5
- 0x8C Keyboard International6
- 0x8D Keyboard International7
- 0x8E Keyboard International8
- 0x8F Keyboard International9
- 0x90 Keyboard LANG1
- 0x91 Keyboard LANG2
- 0x92 Keyboard LANG3
- 0x93 Keyboard LANG4
- 0x94 Keyboard LANG5
- 0x95 Keyboard LANG6
- 0x96 Keyboard LANG7
- 0x97 Keyboard LANG8
- 0x98 Keyboard LANG9
- 0x99 Keyboard Alternate Erase
- 0x9A Keyboard SysReq/Attention
- 0x9B Keyboard Cancel
- 0x9C Keyboard Clear
- 0x9D Keyboard Prior
- 0x9E Keyboard Return
- 0x9F Keyboard Separator
- 0xA0 Keyboard Out
- 0xA1 Keyboard Oper
- 0xA2 Keyboard Clear/Again
- 0xA3 Keyboard CrSel/Props
- 0xA4 Keyboard ExSel
- 0xE0 Keyboard LeftControl
- 0xE1 Keyboard LeftShift
- 0xE2 Keyboard LeftAlt
- 0xE3 Keyboard Left GUI
- 0xE4 Keyboard RightControl
- 0xE5 Keyboard RightShift
- 0xE6 Keyboard RightAlt
- 0xE7 Keyboard Right GUI
-
-8 LEDs
- 0x00 Undefined
- 0x01 Num Lock
- 0x02 Caps Lock
- 0x03 Scroll Lock
- 0x04 Compose
- 0x05 Kana
- 0x06 Power
- 0x07 Shift
- 0x08 Do Not Disturb
- 0x09 Mute
- 0x0A Tone Enable
- 0x0B High Cut Filter
- 0x0C Low Cut Filter
- 0x0D Equalizer Enable
- 0x0E Sound Field On
- 0x0F Surround Field On
- 0x10 Repeat
- 0x11 Stereo
- 0x12 Sampling Rate Detect
- 0x13 Spinning
- 0x14 CAV
- 0x15 CLV
- 0x16 Recording Format Detect
- 0x17 Off-Hook
- 0x18 Ring
- 0x19 Message Waiting
- 0x1A Data Mode
- 0x1B Battery Operation
- 0x1C Battery OK
- 0x1D Battery Low
- 0x1E Speaker
- 0x1F Head Set
- 0x20 Hold
- 0x21 Microphone
- 0x22 Coverage
- 0x23 Night Mode
- 0x24 Send Calls
- 0x25 Call Pickup
- 0x26 Conference
- 0x27 Stand-by
- 0x28 Camera On
- 0x29 Camera Off
- 0x2A On-Line
- 0x2B Off-Line
- 0x2C Busy
- 0x2D Ready
- 0x2E Paper-Out
- 0x2F Paper-Jam
- 0x30 Remote
- 0x31 Forward
- 0x32 Reverse
- 0x33 Stop
- 0x34 Rewind
- 0x35 Fast Forward
- 0x36 Play
- 0x37 Pause
- 0x38 Record
- 0x39 Error
- 0x3A Usage Selected Indicator
- 0x3B Usage In Use Indicator
- 0x3C Usage Multi Mode Indicator
- 0x3D Indicator On
- 0x3E Indicator Flash
- 0x3F Indicator Slow Blink
- 0x40 Indicator Fast Blink
- 0x41 Indicator Off
- 0x42 Flash On Time
- 0x43 Slow Blink On Time
- 0x44 Slow Blink Off Time
- 0x45 Fast Blink On Time
- 0x46 Fast Blink Off Time
- 0x47 Usage Indicator Color
- 0x48 Red
- 0x49 Green
- 0x4A Amber
- 0x4B Generic Indicator
- 0x4C System Suspend
- 0x4D External Power Connected
- 0x4C-FFFF Reserved
-
-9 Button
- 0x00 No Button Pressed
- * Button %d
-
-10 Ordinal
- 0x00 Unused
- * Instance %d
-
-11 Telephony
- 0x00 Unassigned
- 0x01 Phone
- 0x02 Answering Machine
- 0x03 Message Controls
- 0x04 Handset
- 0x05 Headset
- 0x06 Telephony Key Pad
- 0x07 Programmable Button
- 0x20 Hook Switch
- 0x21 Flash
- 0x22 Feature
- 0x23 Hold
- 0x24 Redial
- 0x25 Transfer
- 0x26 Drop
- 0x27 Park
- 0x28 Forward Calls
- 0x29 Alternate Function
- 0x2A Line
- 0x2B Speaker Phone
- 0x2C Conference
- 0x2D Ring Enable
- 0x2E Ring Select
- 0x2F Phone Mute
- 0x30 Caller ID
- 0x50 Speed Dial
- 0x51 Store Number
- 0x52 Recall Number
- 0x53 Phone Directory
- 0x70 Voice Mail
- 0x71 Screen Calls
- 0x72 Do Not Disturb
- 0x73 Message
- 0x74 Answer On/Off
- 0x90 Inside Dial Tone
- 0x91 Outside Dial Tone
- 0x92 Inside Ring Tone
- 0x93 Outside Ring Tone
- 0x94 Priority Ring Tone
- 0x95 Inside Ringback
- 0x96 Priority Ringback
- 0x97 Line Busy Tone
- 0x98 Reorder Tone
- 0x99 Call Waiting Tone
- 0x9A Confirmation Tone 1
- 0x9B Confirmation Tone 2
- 0x9C Tones Off
- 0xB0 Phone Key 0
- 0xB1 Phone Key 1
- 0xB2 Phone Key 2
- 0xB3 Phone Key 3
- 0xB4 Phone Key 4
- 0xB5 Phone Key 5
- 0xB6 Phone Key 6
- 0xB7 Phone Key 7
- 0xB8 Phone Key 8
- 0xB9 Phone Key 9
- 0xBA Phone Key Star
- 0xBB Phone Key Pound
- 0xBC Phone Key A
- 0xBD Phone Key B
- 0xBE Phone Key C
- 0xBF Phone Key D
-
-12 Consumer
- 0x00 Unassigned
- 0x01 Consumer Control
- 0x02 Numeric Key Pad
- 0x03 Programmable Buttons
- 0x20 +10
- 0x21 +100
- 0x22 AM/PM
- 0x30 Power
- 0x31 Reset
- 0x32 Sleep
- 0x33 Sleep After
- 0x34 Sleep Mode
- 0x35 Illumination
- 0x36 Function Buttons
- 0x40 Menu
- 0x41 Menu Pick
- 0x42 Menu Up
- 0x43 Menu Down
- 0x44 Menu Left
- 0x45 Menu Right
- 0x46 Menu Escape
- 0x47 Menu Value Increase
- 0x48 Menu Value Decrease
- 0x60 Data On Screen
- 0x61 Closed Caption
- 0x62 Closed Caption Select
- 0x63 VCR/TV
- 0x64 Broadcast Mode
- 0x65 Snapshot
- 0x66 Still
- 0x80 Selection
- 0x81 Assign Selection
- 0x82 Mode Step
- 0x83 Recall Last
- 0x84 Enter Channel
- 0x85 Order Movie
- 0x86 Channel
- 0x87 Media Selection
- 0x88 Media Select Computer
- 0x89 Media Select TV
- 0x8A Media Select WWW
- 0x8B Media Select DVD
- 0x8C Media Select Telephone
- 0x8D Media Select Program Guide
- 0x8E Media Select Video Phone
- 0x8F Media Select Games
- 0x90 Media Select Messages
- 0x91 Media Select CD
- 0x92 Media Select VCR
- 0x93 Media Select Tuner
- 0x94 Quit
- 0x95 Help
- 0x96 Media Select Tape
- 0x97 Media Select Cable
- 0x98 Media Select Satellite
- 0x99 Media Select Security
- 0x9A Media Select Home
- 0x9B Media Select Call
- 0x9C Channel Increment
- 0x9D Channel Decrement
- 0x9E Media Select SAP
- 0xA0 VCR Plus
- 0xA1 Once
- 0xA2 Daily
- 0xA3 Weekly
- 0xA4 Monthly
- 0xB0 Play
- 0xB1 Pause
- 0xB2 Record
- 0xB3 Fast Forward
- 0xB4 Rewind
- 0xB5 Scan Next Track
- 0xB6 Scan Previous Track
- 0xB7 Stop
- 0xB8 Eject
- 0xB9 Random Play
- 0xBA Select DisC
- 0xBB Enter Disc
- 0xBC Repeat
- 0xBD Tracking
- 0xBE Track Normal
- 0xBF Slow Tracking
- 0xC0 Frame Forward
- 0xC1 Frame Back
- 0xC2 Mark
- 0xC3 Clear Mark
- 0xC4 Repeat From Mark
- 0xC5 Return To Mark
- 0xC6 Search Mark Forward
- 0xC7 Search Mark Backwards
- 0xC8 Counter Reset
- 0xC9 Show Counter
- 0xCA Tracking Increment
- 0xCB Tracking Decrement
- 0xE0 Volume
- 0xE1 Balance
- 0xE2 Mute
- 0xE3 Bass
- 0xE4 Treble
- 0xE5 Bass Boost
- 0xE6 Surround Mode
- 0xE7 Loudness
- 0xE8 MPX
- 0xE9 Volume Up
- 0xEA Volume Down
- 0xF0 Speed Select
- 0xF1 Playback Speed
- 0xF2 Standard Play
- 0xF3 Long Play
- 0xF4 Extended Play
- 0xF5 Slow
- 0x100 Fan Enable
- 0x101 Fan Speed
- 0x102 Light
- 0x103 Light Illumination Level
- 0x104 Climate Control Enable
- 0x105 Room Temperature
- 0x106 Security Enable
- 0x107 Fire Alarm
- 0x108 Police Alarm
- 0x150 Balance Right
- 0x151 Balance Left
- 0x152 Bass Increment
- 0x153 Bass Decrement
- 0x154 Treble Increment
- 0x155 Treble Decrement
- 0x160 Speaker System
- 0x161 Channel Left
- 0x162 Channel Right
- 0x163 Channel Center
- 0x164 Channel Front
- 0x165 Channel Center Front
- 0x166 Channel Side
- 0x167 Channel Surround
- 0x168 Channel Low Frequency Enhancement
- 0x169 Channel Top
- 0x16A Channel Unknown
- 0x170 Sub-channel
- 0x171 Sub-channel Increment
- 0x172 Sub-channel Decrement
- 0x173 Alternate Audio Increment
- 0x174 Alternate Audio Decrement
- 0x180 Application Launch Buttons
- 0x181 AL Launch Button Configuration Tool
- 0x182 AL Programmable Button Configuration
- 0x183 AL Consumer Control Configuration
- 0x184 AL Word Processor
- 0x185 AL Text Editor
- 0x186 AL Spreadsheet
- 0x187 AL Graphics Editor
- 0x188 AL Presentation App
- 0x189 AL Database App
- 0x18A AL Email Reader
- 0x18B AL Newsreader
- 0x18C AL Voicemail
- 0x18D AL Contacts/Address Book
- 0x18E AL Calendar/Schedule
- 0x18F AL Task/Project Manager
- 0x190 AL Log/Journal/Timecard
- 0x191 AL Checkbook/Finance
- 0x192 AL Calculator
- 0x193 AL A/V Capture/Playback
- 0x194 AL Local Machine Browser
- 0x195 AL LAN/WAN Browser
- 0x196 AL Internet Browser
- 0x197 AL Remote Networking/ISP Connect
- 0x198 AL Network Conference
- 0x199 AL Network Chat
- 0x19A AL Telephony/Dialer
- 0x19B AL Logon
- 0x19C AL Logoff
- 0x19D AL Logon/Logoff
- 0x19E AL Terminal Lock/Screensaver
- 0x19F AL Control Panel
- 0x1A0 AL Command Line Processor/Run
- 0x1A1 AL Process/Task Manager
- 0x1A2 AL Select Tast/Application
- 0x1A3 AL Next Task/Application
- 0x1A4 AL Previous Task/Application
- 0x1A5 AL Preemptive Halt Task/Application
- 0x200 Generic GUI Application Controls
- 0x201 AC New
- 0x202 AC Open
- 0x203 AC Close
- 0x204 AC Exit
- 0x205 AC Maximize
- 0x206 AC Minimize
- 0x207 AC Save
- 0x208 AC Print
- 0x209 AC Properties
- 0x21A AC Undo
- 0x21B AC Copy
- 0x21C AC Cut
- 0x21D AC Paste
- 0x21E AC Select All
- 0x21F AC Find
- 0x220 AC Find and Replace
- 0x221 AC Search
- 0x222 AC Go To
- 0x223 AC Home
- 0x224 AC Back
- 0x225 AC Forward
- 0x226 AC Stop
- 0x227 AC Refresh
- 0x228 AC Previous Link
- 0x229 AC Next Link
- 0x22A AC Bookmarks
- 0x22B AC History
- 0x22C AC Subscriptions
- 0x22D AC Zoom In
- 0x22E AC Zoom Out
- 0x22F AC Zoom
- 0x230 AC Full Screen View
- 0x231 AC Normal View
- 0x232 AC View Toggle
- 0x233 AC Scroll Up
- 0x234 AC Scroll Down
- 0x235 AC Scroll
- 0x236 AC Pan Left
- 0x237 AC Pan Right
- 0x238 AC Pan
- 0x239 AC New Window
- 0x23A AC Tile Horizontally
- 0x23B AC Tile Vertically
- 0x23C AC Format
-
-13 Digitizer
- 0x00 Undefined
- 0x01 Digitizer
- 0x02 Pen
- 0x03 Light Pen
- 0x04 Touch Screen
- 0x05 Touch Pad
- 0x06 White Board
- 0x07 Coordinate Measuring Machine
- 0x08 3-D Digitizer
- 0x09 Stereo Plotter
- 0x0A Articulated Arm
- 0x0B Armature
- 0x0C Multiple Point Digitizer
- 0x0D Free Space Wand
- 0x20 Stylus
- 0x21 Puck
- 0x22 Finger
- 0x30 Tip Pressure
- 0x31 Barrel Pressure
- 0x32 In Range
- 0x33 Touch
- 0x34 Untouch
- 0x35 Tap
- 0x36 Quality
- 0x37 Data Valid
- 0x38 Transducer Index
- 0x39 Tablet Function Keys
- 0x3A Program Change Keys
- 0x3B Battery Strength
- 0x3C Invert
- 0x3D X Tilt
- 0x3E Y Tilt
- 0x3F Azimuth
- 0x40 Altitude
- 0x41 Twist
- 0x42 Tip Switch
- 0x43 Secondary Tip Switch
- 0x44 Barrel Switch
- 0x45 Eraser
- 0x46 Tablet Pick
-
-15 Physical Interface Device
-
-16 Unicode
- * Unicode Char u%04x
-
-20 Alphnumeric Display
- 0x00 Undefined
- 0x01 Alphanumeric Display
- 0x20 Display Attributes Report
- 0x21 ASCII Character Set
- 0x22 Data Read Back
- 0x23 Font Read Back
- 0x24 Display Control Report
- 0x25 Clear Display
- 0x26 Display Enable
- 0x27 Screen Saver Delay
- 0x28 Screen Saver Enable
- 0x29 Vertical Scroll
- 0x2A Horizontal Scroll
- 0x2B Character Report
- 0x2C Display Data
- 0x2D Display Status
- 0x2E Stat Not Ready
- 0x2F Stat Ready
- 0x30 Err Not a loadable character
- 0x31 Err Font data cannot be read
- 0x32 Cursor Position Report
- 0x33 Row
- 0x34 Column
- 0x35 Rows
- 0x36 Columns
- 0x37 Cursor Pixel Positioning
- 0x38 Cursor Mode
- 0x39 Cursor Enable
- 0x3A Cursor Blink
- 0x3B Font Report
- 0x3C Font Data
- 0x3D Character Width
- 0x3E Character Height
- 0x3F Character Spacing Horizontal
- 0x40 Character Spacing Vertical
- 0x41 Unicode Character Set
-
-128 Monitor
- 0x00 Undefined
- 0x01 Monitor Control
- 0x02 EDID Information
- 0x03 VDIF Information
- 0x04 VESA Version
- 0x05 On Screen Display
- 0x06 Auto Size Center
- 0x07 Polarity Horz Synch
- 0x08 Polarity Vert Synch
- 0x09 Sync Type
- 0x0A Screen Position
- 0x0B Horizontal Frequency
- 0x0C Vertical Frequency
-
-129 Monitor Enumerated Values
- 0x00 unassigned
- * ENUM %d
-
-130 VESA Virtual Controls
- 0x10 Brightness
- 0x12 Contrast
- 0x16 Video Gain Red
- 0x18 Video Gain Green
- 0x1A Video Gain Blue
- 0x1C Focus
- 0x20 Horizontal Position
- 0x22 Horizontal Size
- 0x24 Horizontal Pincushion
- 0x26 Horizontal Pincushion Balance
- 0x28 Horizontal Misconvergence
- 0x2A Horizontal Linearity
- 0x2C Horizontal Linearity Balance
- 0x30 Vertical Position
- 0x32 Vertical Size
- 0x34 Vertical Pincushion
- 0x36 Vertical Pincushion Balance
- 0x38 Vertical Misconvergence
- 0x3A Vertical Linearity
- 0x3C Vertical Linearity Balance
- 0x40 Parallelogram Distortion
- 0x42 Trapezoidal Distortion
- 0x44 Tilt
- 0x46 Top Corner Distortion Control
- 0x48 Top Corner Distortion Balance
- 0x4A Bottom Corner Distortion Control
- 0x4C Bottom Corner Distortion Balance
- 0x56 Moiré Horizontal
- 0x58 Moiré Vertical
- 0x5E Input Level Select
- 0x60 Input Source Select
- 0x62 Stereo Mode
- 0x6C Video Black Level Red
- 0x6E Video Black Level Green
- 0x70 Video Black Level Blue
-
-131 VESA Command
- 0x00 Undefined
- 0x01 Settings
- 0x02 Degauss
-
-132 Power Device
- 0x00 Undefined
- 0x01 iName
- 0x02 PresentStatus
- 0x03 ChangedStatus
- 0x04 UPS
- 0x05 PowerSupply
- 0x10 BatterySystem
- 0x11 BatterySystemID
- 0x12 Battery
- 0x13 BatteryID
- 0x14 Charger
- 0x15 ChargerID
- 0x16 PowerConverter
- 0x17 PowerConverterID
- 0x18 OutletSystem
- 0x19 OutletSystemID
- 0x1A Input
- 0x1B InputID
- 0x1C Output
- 0x1D OutputID
- 0x1E Flow
- 0x1F FlowID
- 0x20 Outlet
- 0x21 OutletID
- 0x22 Gang
- 0x23 GangID
- 0x24 Sink
- 0x25 SinkID
- 0x30 Voltage
- 0x31 Current
- 0x32 Frequency
- 0x33 ApparentPower
- 0x34 ActivePower
- 0x35 PercentLoad
- 0x36 Temperature
- 0x37 Humidity
- 0x40 ConfigVoltage
- 0x41 ConfigCurrent
- 0x42 ConfigFrequency
- 0x43 ConfigApparentPower
- 0x44 ConfigActivePower
- 0x45 ConfigPercentLoad
- 0x46 ConfigTemperature
- 0x47 ConfigHumidity
- 0x50 SwitchOnControl
- 0x51 SwitchOffControl
- 0x52 ToggleControl
- 0x53 LowVoltageTransfer
- 0x54 HighVoltageTransfer
- 0x55 DelayBeforeReboot
- 0x56 DelayBeforeStartup
- 0x57 DelayBeforeShutdown
- 0x58 Test
- 0x59 Vendorspecificcommand
- 0x60 Present
- 0x61 Good
- 0x62 InternalFailure
- 0x63 VoltageOutOfRange
- 0x64 FrequencyOutOfRange
- 0x65 Overload
- 0x66 OverCharged
- 0x67 OverTemperature
- 0x68 ShutdownRequested
- 0x69 ShutdownImminent
- 0x6A VendorSpecificAnswerValid
- 0x6B SwitchOn/Off
- 0x6C Switcheble
- 0x6D Used
- 0x6E Boost
- 0x6F Buck
- 0x70 Initialized
- 0x71 Tested
-
-133 Battery System
- 0x00 Undefined
- 0x01 SMBBatteryMode
- 0x02 SMBBatteryStatus
- 0x03 SMBAlarmWarning
- 0x04 SMBChargerMode
- 0x05 SMBChargerStatus
- 0x06 SMBChargerSpecInfo
- 0x07 SMBSelectorState
- 0x08 SMBSelectorPreset
- 0x09 SMBSelectorInfo
- 0x10 OptionalMfgFunction1
- 0x11 OptionalMfgFunction2
- 0x12 OptionalMfgFunction3
- 0x13 OptionalMfgFunction4
- 0x14 OptionalMfgFunction5
- 0x15 ConnectionToSMBus
- 0x16 OutputConnection
- 0x17 ChargerConnection
- 0x18 BatteryInsertion
- 0x19 Usenext
- 0x1A OKToUse
- 0x28 ManufacturerAccess
- 0x29 RemainingCapacityLimit
- 0x2A RemainingTimeLimit
- 0x2B AtRate
- 0x2C CapacityMode
- 0x2D BroadcastToCharger
- 0x2E PrimaryBattery
- 0x2F ChargeController
- 0x40 TerminateCharge
- 0x41 TermminateDischarge
- 0x42 BelowRemainingCapacityLimit
- 0x43 RemainingTimeLimitExpired
- 0x44 Charging
- 0x45 Discharging
- 0x46 FullyCharged
- 0x47 FullyDischarged
- 0x48 ConditionningFlag
- 0x49 AtRateOK
- 0x4A SMBErrorCode
- 0x4B NeedReplacement
- 0x60 AtRateTimeToFull
- 0x61 AtRateTimeToEmpty
- 0x62 AverageCurrent
- 0x63 Maxerror
- 0x64 RelativeStateOfCharge
- 0x65 AbsoluteStateOfCharge
- 0x66 RemainingCapacity
- 0x67 FullChargeCapacity
- 0x68 RunTimeToEmpty
- 0x69 AverageTimeToEmpty
- 0x6A AverageTimeToFull
- 0x6B CycleCount
- 0x80 BattPackModelLevel
- 0x81 InternalChargeController
- 0x82 PrimaryBatterySupport
- 0x83 DesignCapacity
- 0x84 SpecificationInfo
- 0x85 ManufacturerDate
- 0x86 SerialNumber
- 0x87 iManufacturerName
- 0x88 iDevicename
- 0x89 iDeviceChemistery
- 0x8A iManufacturerData
- 0x8B Rechargeable
- 0x8C WarningCapacityLimit
- 0x8D CapacityGranularity1
- 0x8E CapacityGranularity2
- 0xC0 InhibitCharge
- 0xC1 EnablePolling
- 0xC2 ResetToZero
- 0xD0 ACPresent
- 0xD1 BatteryPresent
- 0xD2 PowerFail
- 0xD3 AlarmInhibited
- 0xD4 ThermistorUnderRange
- 0xD5 ThermistorHot
- 0xD6 ThermistorCold
- 0xD7 ThermistorOverRange
- 0xD8 VoltageOutOfRange
- 0xD9 CurrentOutOfRange
- 0xDA CurrentNotRegulated
- 0xDB VoltageNotRegulated
- 0xDC MasterMode
- 0xDD ChargerBattery/HostControlled
- 0xF0 ChargerSpecInfo
- 0xF1 ChargerSpecRef
- 0xF2 Level2
- 0xF3 Level3
-
-140 Bar Code Scanner
-
-141 Scale Device
-
-144 Camera Control
-
-145 Arcade Device
-
-# Some Micro$oft non-standard extensions
-0xff00 Microsoft
- 0xe9 Base Up
- 0xea Base Down
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usbvar.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usbvar.h
deleted file mode 100644
index 60883dd47..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usbvar.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* $NetBSD: usbvar.h,v 1.2 1999/05/11 21:15:46 augustss Exp $ */
-
-/*
- * Copyright (c) 1999 Lennart Augustsson <augustss@netbsd.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/libusb/usbvar.h,v 1.1.2.2 1999/12/03 10:12:43 hohndel Exp $ */
-
-struct report_desc {
- unsigned int size;
- unsigned char data[1];
-};
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/memrange.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/memrange.h
deleted file mode 100644
index 0f4b270f4..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/memrange.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Memory range attribute operations, peformed on /dev/mem
- *
- * $FreeBSD: src/sys/sys/memrange.h,v 1.4 1999/12/29 04:24:44 peter Exp $
- */
-/* $XFree86$ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _MEMRANGE_H
-#define _MEMRANGE_H
-
-/* Memory range attributes */
-#define MDF_UNCACHEABLE (1<<0) /* region not cached */
-#define MDF_WRITECOMBINE (1<<1) /* region supports "write combine"
- * action */
-#define MDF_WRITETHROUGH (1<<2) /* write-through cached */
-#define MDF_WRITEBACK (1<<3) /* write-back cached */
-#define MDF_WRITEPROTECT (1<<4) /* read-only region */
-#define MDF_ATTRMASK (0x00ffffff)
-
-#define MDF_FIXBASE (1<<24) /* fixed base */
-#define MDF_FIXLEN (1<<25) /* fixed length */
-#define MDF_FIRMWARE (1<<26) /* set by firmware (XXX not useful?) */
-#define MDF_ACTIVE (1<<27) /* currently active */
-#define MDF_BOGUS (1<<28) /* we don't like it */
-#define MDF_FIXACTIVE (1<<29) /* can't be turned off */
-#define MDF_BUSY (1<<30) /* range is in use */
-
-struct mem_range_desc {
- u_int64_t mr_base;
- u_int64_t mr_len;
- int mr_flags;
- char mr_owner[8];
-};
-
-struct mem_range_op {
- struct mem_range_desc *mo_desc;
- int mo_arg[2];
-#define MEMRANGE_SET_UPDATE 0
-#define MEMRANGE_SET_REMOVE 1
- /* XXX want a flag that says "set and undo when I exit" */
-};
-#define MEMRANGE_GET _IOWR('m', 50, struct mem_range_op)
-#define MEMRANGE_SET _IOW('m', 51, struct mem_range_op)
-
-#ifdef _KERNEL
-
-struct mem_range_softc;
-struct mem_range_ops {
- void (*init) __P((struct mem_range_softc * sc));
- int (*set) __P((struct mem_range_softc * sc, struct mem_range_desc * mrd, int *arg));
- void (*initAP) __P((struct mem_range_softc * sc));
-};
-
-struct mem_range_softc {
- struct mem_range_ops *mr_op;
- int mr_cap;
- int mr_ndesc;
- struct mem_range_desc *mr_desc;
-};
-
-extern struct mem_range_softc mem_range_softc;
-
-extern int mem_range_attr_get __P((struct mem_range_desc * mrd, int *arg));
-extern int mem_range_attr_set __P((struct mem_range_desc * mrd, int *arg));
-extern void mem_range_AP_init __P((void));
-#endif
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/ppc_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/ppc_video.c
deleted file mode 100644
index edcb20c1b..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/ppc_video.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* $XFree86: ppc_video.c,v 1.5 2003/03/14 13:46:04 tsi Exp $ */
-/*
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Rich Murphey and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Rich Murphey and
- * David Wexelblat make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/* $XConsortium: bsd_video.c /main/10 1996/10/25 11:37:57 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-#include "bus/Pci.h"
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((caddr_t)-1)
-#endif
-
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-#ifndef __OpenBSD__
-#define DEV_MEM "/dev/mem"
-#else
-#define DEV_MEM "/dev/xf86"
-#endif
-
-static pointer ppcMapVidMem(int, unsigned long, unsigned long, int flags);
-static void ppcUnmapVidMem(int, pointer, unsigned long);
-
-void
-xf86OSInitVidMem(VidMemInfoPtr pVidMem)
-{
- pVidMem->linearSupported = TRUE;
- pVidMem->mapMem = ppcMapVidMem;
- pVidMem->unmapMem = ppcUnmapVidMem;
- pVidMem->initialised = TRUE;
-}
-
-
-volatile unsigned char *ioBase = MAP_FAILED;
-
-static pointer
-ppcMapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- int fd = xf86Info.screenFd;
- pointer base;
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3, "mapVidMem %lx, %lx, fd = %d",
- Base, Size, fd);
-#endif
-
- base = mmap(0, Size,
- (flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_SHARED, fd, Base);
- if (base == MAP_FAILED)
- FatalError("%s: could not mmap screen [s=%x,a=%x] (%s)",
- "xf86MapVidMem", Size, Base, strerror(errno));
-
- return base;
-}
-
-static void
-ppcUnmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- munmap(Base, Size);
-}
-
-int
-xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
- int Len)
-{
- int rv;
- static int kmem = -1;
-
- if (kmem == -1) {
- kmem = open(DEV_MEM, 2);
- if (kmem == -1) {
- FatalError("xf86ReadBIOS: open %s", DEV_MEM);
- }
- }
-
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3, "xf86ReadBIOS() %lx %lx, %x\n",
- Base, Offset, Len);
-#endif
-
-
- lseek(kmem, Base + Offset, 0);
- rv = read(kmem, Buf, Len);
-
- return rv;
-}
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool
-xf86DisableInterrupts()
-{
-
- return(TRUE);
-}
-
-void
-xf86EnableInterrupts()
-{
-
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/sparc64_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/sparc64_video.c
deleted file mode 100644
index d9dfcca31..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsd/sparc64_video.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* $XFree86: sparc64_video.c,v 1.2 2003/03/14 13:46:04 tsi Exp $ */
-/*
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Rich Murphey and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Rich Murphey and
- * David Wexelblat make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-
-/* $XConsortium: bsd_video.c /main/10 1996/10/25 11:37:57 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((caddr_t)-1)
-#endif
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-static pointer sparc64MapVidMem(int, unsigned long, unsigned long, int);
-static void sparc64UnmapVidMem(int, pointer, unsigned long);
-
-void
-xf86OSInitVidMem(VidMemInfoPtr pVidMem)
-{
- pVidMem->linearSupported = TRUE;
- pVidMem->mapMem = sparc64MapVidMem;
- pVidMem->unmapMem = sparc64UnmapVidMem;
- pVidMem->initialised = TRUE;
-}
-
-static pointer
-sparc64MapVidMem(int ScreenNum, unsigned long Base, unsigned long Size,
- int flags)
-{
- int fd = xf86Info.screenFd;
- pointer base;
-
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3, "mapVidMem %lx, %lx, fd = %d",
- Base, Size, fd);
-#endif
-
- base = mmap(0, Size,
- (flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_SHARED, fd, Base);
- if (base == MAP_FAILED)
- FatalError("%s: could not mmap screen [s=%x,a=%x] (%s)",
- "xf86MapVidMem", Size, Base, strerror(errno));
- return base;
-}
-
-static void
-sparc64UnmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- munmap(Base, Size);
-}
-
-int
-xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
- int Len)
-{
-
- return (0);
-}
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool
-xf86DisableInterrupts()
-{
-
- return(TRUE);
-}
-
-void
-xf86EnableInterrupts()
-{
-
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/Imakefile
deleted file mode 100644
index 820f76c20..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/Imakefile
+++ /dev/null
@@ -1,46 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsdi/Imakefile,v 3.14 2002/10/11 01:46:58 dawes Exp $
-
-
-
-
-XCOMM $XConsortium: Imakefile /main/4 1996/09/28 17:23:38 rws $
-
-#include <Server.tmpl>
-
-MOUSESRC = bsdi_mouse.c
-MOUSEOBJ = bsdi_mouse.o
-
-SRCS = bsdi_init.c bsdi_video.c bsdi_io.c bios_devmem.c \
- VTsw_noop.c std_kbdEv.c posix_tty.c $(MOUSESRC) \
- libc_wrapper.c stdResource.c stdPci.c sigiostubs.c pm_noop.c \
- kmod_noop.c agp_noop.c
-
-OBJS = bsdi_init.o bsdi_video.o bsdi_io.o bios_devmem.o \
- VTsw_noop.o std_kbdEv.o posix_tty.o $(MOUSEOBJ) \
- libc_wrapper.o stdResource.o stdPci.o sigiostubs.o pm_noop.o \
- kmod_noop.o agp_noop.o
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(EXTINCSRC)
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(RESDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-LinkSourceFile(bios_devmem.c,../shared)
-LinkSourceFile(VTsw_noop.c,../shared)
-LinkSourceFile(std_kbdEv.c,../shared)
-LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(sigiostubs.c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(agp_noop.c,../shared)
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_init.c
deleted file mode 100644
index 5a166ed26..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_init.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_init.c,v 3.5.4.2 1998/06/05 16:23:08 dawes Exp $ */
-/*
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Rich Murphey and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Rich Murphey and
- * David Wexelblat make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: bsdi_init.c /main/5 1996/02/21 17:51:15 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include <sys/param.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-extern Bool RunFromSmartParent;
-
-static Bool KeepTty = FALSE;
-
-#if BSD >= 199306
-static void
-NonBlockConsoleOff()
-{
- register int i;
-
- i = fcntl(2, F_GETFL, 0);
- if (i >= 0)
- (void) fcntl(2, F_SETFL, i & ~FNDELAY);
-}
-#endif
-
-void
-xf86OpenConsole()
-{
- int i, fd;
-
- if (serverGeneration == 1)
- {
- /* check if we're run with euid==0 */
- if (geteuid() != 0)
- {
- FatalError("xf86OpenConsole: Server must be suid root\n");
- }
-
- if (!KeepTty)
- {
-#if BSD >= 199306
- if (RunFromSmartParent) {
- if (atexit(NonBlockConsoleOff))
- xf86Msg(X_WARNING,
- "InitOutput: can't register NBIO exit handler\n");
- i = fcntl(2, F_GETFL, 0);
- if (i >= 0)
- i = fcntl(2, F_SETFL, i | FNDELAY);
- if (i < 0)
- xf86Msg(X_WARNING,
- "InitOutput: can't put stderr in non-block mode\n");
- }
-#else
- /*
- * detaching the controlling tty solves problems of kbd character
- * loss. This is not interesting for CO driver, because it is
- * exclusive.
- */
- setpgrp(0, getpid());
- if ((i = open("/dev/tty",O_RDWR)) >= 0)
- {
- ioctl(i,TIOCNOTTY,(char *)0);
- close(i);
- }
-#endif
- }
-
- if ((xf86Info.consoleFd = open("/dev/kbd", O_RDWR|O_NDELAY,0)) < 0)
- {
- FatalError("xf86OpenConsole: Cannot open /dev/kbd (%s)\n",
- strerror(errno));
- }
- if ((xf86Info.screenFd = open("/dev/vga", O_RDWR|O_NDELAY,0)) < 0)
- {
- FatalError("xf86OpenConsole: Cannot open /dev/vga (%s)\n",
- strerror(errno));
- }
-
- if (ioctl(xf86Info.consoleFd, PCCONIOCRAW, 0) < 0)
- {
- FatalError("%s: PCCONIOCRAW failed (%s)\n",
- "xf86OpenConsole", strerror(errno));
- }
- }
- return;
-}
-
-void
-xf86CloseConsole()
-{
- ioctl (xf86Info.consoleFd, PCCONIOCCOOK, 0);
-
- if (xf86Info.screenFd != xf86Info.consoleFd)
- {
- close(xf86Info.screenFd);
- }
- close(xf86Info.consoleFd);
- return;
-}
-
-int
-xf86ProcessArgument (int argc, char *argv[], int i)
-{
- /*
- * Keep server from detaching from controlling tty. This is useful
- * when debugging (so the server can receive keyboard signals.
- */
- if (!strcmp(argv[i], "-keeptty"))
- {
- KeepTty = TRUE;
- return(1);
- }
- return(0);
-}
-
-void
-xf86UseMsg()
-{
- ErrorF("-keeptty ");
- ErrorF("don't detach controlling tty (for debugging only)\n");
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_io.c
deleted file mode 100644
index e37bf308c..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_io.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_io.c,v 3.13 2002/10/11 01:40:34 dawes Exp $ */
-/*
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- *
- * 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, and that the names of Rich Murphey and David Dawes
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Rich Murphey and
- * David Dawes make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * RICH MURPHEY AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID DAWES BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: bsdi_io.c /main/10 1996/10/19 18:06:13 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-void
-xf86SoundKbdBell(int loudness, int pitch, int duration)
-{
- if (loudness && pitch)
- {
- int data[2];
-
- data[0] = pitch;
- data[1] = (duration * loudness) / 50;
- ioctl(xf86Info.consoleFd, PCCONIOCBEEP, data);
- }
-}
-
-void
-xf86SetKbdLeds(int leds)
-{
- ioctl(xf86Info.consoleFd, PCCONIOCSETLED, &leds);
-}
-
-int
-xf86GetKbdLeds()
-{
- return(0);
-}
-
-void
-xf86SetKbdRepeat(char rad)
-{
- return;
-}
-
-static struct termio kbdtty;
-
-void
-xf86KbdInit()
-{
- tcgetattr(xf86Info.consoleFd, &kbdtty);
-}
-
-int
-xf86KbdOn()
-{
- struct termios nTty;
-
- nTty = kbdtty;
- nTty.c_iflag = IGNPAR | IGNBRK;
- nTty.c_oflag = 0;
- nTty.c_cflag = CREAD | CS8;
- nTty.c_lflag = 0;
- nTty.c_cc[VTIME] = 0;
- nTty.c_cc[VMIN] = 1;
- cfsetispeed(&nTty, 9600);
- cfsetospeed(&nTty, 9600);
- tcsetattr(xf86Info.consoleFd, TCSANOW, &nTty);
- return(xf86Info.consoleFd);
-}
-
-int
-xf86KbdOff()
-{
- tcsetattr(xf86Info.consoleFd, TCSANOW, &kbdtty);
- return(xf86Info.consoleFd);
-}
-
-#include "xf86OSKbd.h"
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_mouse.c
deleted file mode 100644
index fb50cfcee..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_mouse.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_mouse.c,v 1.1 1999/05/22 08:40:10 dawes Exp $ */
-
-/*
- * Copyright 1999 by The XFree86 Project, Inc.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-
-static int
-SupportedInterfaces(void)
-{
- /* XXX This needs to be checked. */
- return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_AUTO;
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
- p->SupportedInterfaces = SupportedInterfaces;
- return p;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_video.c
deleted file mode 100644
index 5b1e474c7..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_video.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsdi/bsdi_video.c,v 3.10 2003/03/14 13:46:05 tsi Exp $ */
-/*
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Rich Murphey and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Rich Murphey and
- * David Wexelblat make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: bsdi_video.c /main/4 1996/02/21 17:51:22 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((void *)-1)
-#endif
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-pointer
-xf86MapVidMem(int ScreenNum, int Flags, unsigned long Base, unsigned long Size)
-{
- pointer base;
-
- /* just try the mapping, and either it will work, or not */
- base = mmap(0, Size,
- (Flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_FILE, xf86Info.screenFd, Base - 0xA0000);
- if (base == MAP_FAILED)
- {
- FatalError("xf86MapVidMem: Could not mmap /dev/vga (%s) at 0x%x\n",
- strerror(errno), Base);
- }
- return(base);
-}
-
-void
-xf86UnMapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- munmap((caddr_t)Base, Size);
-}
-
-Bool
-xf86LinearVidMem()
-{
- return(TRUE);
-}
-
-/***************************************************************************/
-/* I/O Permissions section */
-/***************************************************************************/
-
-/*
- * BSDI has a single system-wide TSS I/O bitmap that covers ports up to
- * 0xFFFF. By default, the TSS has ports 0x3B0-0x3DF enabled.
- *
- * It also allows the IOPL to be enabled or disabled on a per-process
- * basis. Here, we use the IOPL only.
- */
-
-static Bool ExtendedEnabled = FALSE;
-
-Bool
-xf86EnableIO()
-{
- if (ExtendedEnabled)
- return TRUE;
-
- if (ioctl(xf86Info.consoleFd, PCCONENABIOPL, 0) < 0)
- {
- xf86Msg(X_WARNING,"%s: Failed to set IOPL for extended I/O\n",
- "xf86EnableIOPorts");
- return FALSE;
- }
- ExtendedEnabled = TRUE;
- return TRUE;
-}
-
-void
-xf86DisableIO()
-{
- if (!ExtendedEnabled)
- return;
-
- ioctl(xf86Info.consoleFd, PCCONDISABIOPL, 0);
- ExtendedEnabled = FALSE;
-}
-
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool
-xf86DisableInterrupts()
-{
- if (!ExtendedEnabled)
- {
- if (ioctl(xf86Info.consoleFd, PCCONENABIOPL, 0) < 0)
- {
- return(FALSE);
- }
- }
-
-#ifdef __GNUC__
- __asm__ __volatile__("cli");
-#else
- asm("cli");
-#endif /* __GNUC__ */
-
- if (!ExtendedEnabled)
- {
- ioctl(xf86Info.consoleFd, PCCONDISABIOPL, 0);
- }
-
- return(TRUE);
-}
-
-void
-xf86EnableInterrupts()
-{
- if (!ExtendedEnabled)
- {
- ioctl(xf86Info.consoleFd, PCCONENABIOPL, 0);
- }
-
-#ifdef __GNUC__
- __asm__ __volatile__("sti");
-#else
- asm("sti");
-#endif /* __GNUC__ */
-
- if (!ExtendedEnabled)
- {
- ioctl(xf86Info.consoleFd, PCCONDISABIOPL, 0);
- }
-
- return;
-}
-
-void
-xf86MapReadSideEffects(int ScreenNum, int Flags, pointer Base,
- unsigned long Size)
-{
-}
-
-Bool
-xf86CheckMTRR(int ScreenNum)
-{
- return FALSE;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c
deleted file mode 100644
index 255dfa12f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c
+++ /dev/null
@@ -1,470 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c,v 1.4 2003/08/29 21:08:06 tsi Exp $ */
-/*
- * Copyright (C) 2002-2003 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-/*
- * This file contains the glue necessary for support of Intel's 460GX chipset.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "460gxPCI.h"
-#include "xf86.h"
-#include "Pci.h"
-
-/* 460GX register definitions */
-/* SAC at 0:10:0 */
-#define CBN 0x0040
-/* SAC at CBN:0:0 */
-#define DEVNPRES 0x0070
-/* SAC at CBN:1[0-7]:0 */
-#define BUSNO 0x0048
-#define SUBNO 0x0049
-#define VGASE 0x0080
-#define PCIS 0x0084
-#define IOR 0x008C
-#define IORD 0x008E /* CBN:10:0 only */
-/* PXB at CBN:1[0-7]:1 */
-#define ERRCMD 0x0046
-
-static int cbn_460gx = -1;
-static CARD32 cbdevs_460gx = 0;
-static CARD16 iord_460gx;
-static int busno_460gx[8], subno_460gx[8];
-static CARD8 pcis_460gx[8], ior_460gx[8];
-static CARD8 has_err_460gx[8], err_460gx[8];
-static CARD8 iomap_460gx[16]; /* One for each 4k */
-static pciBusFuncs_t BusFuncs_460gx;
-
-static pciConfigPtr
-Verify460GXBus(int bus)
-{
- pciConfigPtr pPCI;
-
- if ((bus < 0) || (bus >= pciNumBuses) ||
- !pciBusInfo[bus] || !(pPCI = pciBusInfo[bus]->bridge) ||
- (pPCI->busnum != cbn_460gx) || (pPCI->funcnum != 0) ||
- (pPCI->devnum < 0x10) || (pPCI->devnum > 0x17))
- return NULL;
-
- return pPCI;
-}
-
-/*
- * This function is called to emulate the various settings in a P2P or CardBus
- * bridge's control register using one of a 460GX's SAC host bridges.
- */
-static CARD16
-Control460GXBridge(int bus, CARD16 mask, CARD16 value)
-{
- pciConfigPtr pPCI;
- PCITAG tag;
- CARD16 current = 0;
- CARD8 tmp;
-
- if ((pPCI = Verify460GXBus(bus))) {
- /* Start with VGA enablement */
- tmp = pciReadByte(pPCI->tag, VGASE);
- if (tmp & 0x01) {
- current |= PCI_PCI_BRIDGE_VGA_EN;
- if ((mask & PCI_PCI_BRIDGE_VGA_EN) &&
- !(value & PCI_PCI_BRIDGE_VGA_EN))
- pciWriteByte(pPCI->tag, VGASE, tmp & ~0x01);
- } else {
- if (mask & value & PCI_PCI_BRIDGE_VGA_EN)
- pciWriteByte(pPCI->tag, VGASE, tmp | 0x01);
- }
-
- /* Move on to master abort failure enablement */
- if (has_err_460gx[pPCI->devnum - 0x10]) {
- tag = PCI_MAKE_TAG(pPCI->busnum, pPCI->devnum, pPCI->funcnum + 1);
- tmp = pciReadByte(tag, ERRCMD);
- if (tmp & 0x01) {
- current |= PCI_PCI_BRIDGE_MASTER_ABORT_EN;
- if ((mask & PCI_PCI_BRIDGE_MASTER_ABORT_EN) &&
- !(value & PCI_PCI_BRIDGE_MASTER_ABORT_EN))
- pciWriteByte(tag, ERRCMD, tmp & ~0x01);
- } else {
- if (mask & value & PCI_PCI_BRIDGE_MASTER_ABORT_EN)
- pciWriteByte(tag, ERRCMD, tmp | 0x01);
- }
- }
-
- /* Put emulation of any other P2P bridge control here */
- }
-
- return (current & ~mask) | (value & mask);
-}
-
-/*
- * Retrieve various bus numbers representing the connections provided by 460GX
- * host bridges.
- */
-static void
-Get460GXBridgeBuses(int bus, int *primary, int *secondary, int *subordinate)
-{
- pciConfigPtr pPCI = Verify460GXBus(bus);
- int i;
-
- /* The returned bus numbers are initialised by the caller */
-
- if (!pPCI)
- return;
-
- i = pPCI->devnum - 0x10;
-
- /* These are not modified, so no need to re-read them */
- if (primary)
- *primary = pPCI->busnum;
- if (secondary)
- *secondary = busno_460gx[i];
- if (subordinate)
- *subordinate = subno_460gx[i];
-}
-
-/* Retrieves a list of the resources routed to a host bridge's secondary bus */
-static void
-Get460GXBridgeResources(int bus,
- pointer *ppIoRes,
- pointer *ppMemRes,
- pointer *ppPmemRes)
-{
- pciConfigPtr pPCI = Verify460GXBus(bus);
- resRange range;
- unsigned int i, j;
-
- if (ppIoRes) {
- xf86FreeResList(*ppIoRes);
- *ppIoRes = NULL;
-
- if (pPCI) {
- for (i = 0; i <= 0x0F; i++) {
- if (iomap_460gx[i] != pPCI->devnum)
- continue;
-
- RANGE(range, i << 12, ((i + 1) << 12) - 1,
- RANGE_TYPE(ResExcIoBlock, 0));
- *ppIoRes = xf86AddResToList(*ppIoRes, &range, -1);
- }
- }
- }
-
- if (ppMemRes) {
- xf86FreeResList(*ppMemRes);
- *ppMemRes = NULL;
-
- if (pPCI) {
- if (!(i = (pPCI->devnum - 0x10)))
- j = 127; /* (4GB - 32M) / 32M */
- else
- j = pcis_460gx[i - 1] & 0x7F;
-
- i = pcis_460gx[i] & 0x7F;
- if (i < j) {
- RANGE(range, i << 25, (j << 25) - 1,
- RANGE_TYPE(ResExcMemBlock, 0));
- *ppMemRes = xf86AddResToList(*ppMemRes, &range, -1);
- }
- }
- }
-
- if (ppPmemRes) {
- xf86FreeResList(*ppPmemRes);
- *ppPmemRes = NULL;
- }
-}
-
-/*
- * This checks for, and validates, the presence of the 460GX chipset, and sets
- * cbn_460gx to a positive value accordingly. This function returns TRUE if
- * the chipset scan is to be stopped, or FALSE if the scan is to move on to the
- * next chipset.
- */
-
-Bool
-xorgProbe460GX(scanpciWrapperOpt flags)
-{
- pciBusInfo_t *pBusInfo;
- PCITAG tag;
-
- /* Bus zero should already be set up */
- if (!(pBusInfo = pciBusInfo[0])) {
- cbn_460gx = -1;
- return FALSE;
- }
- /* First look for a 460GX's primary host bridge */
- tag = PCI_MAKE_TAG(0, 0x10, 0);
- if (pciReadLong(tag, PCI_ID_REG) == DEVID(VENDOR_INTEL, CHIP_460GX_SAC)) {
- return TRUE;
- }
-
- cbn_460gx = -1;
-
- return FALSE;
-}
-
-void
-xf86PreScan460GX(void)
-{
- pciBusInfo_t *pBusInfo;
- PCITAG tag;
- CARD32 tmp;
- int i, devno;
-
- if (!(pBusInfo = pciBusInfo[0]))
- return;
-
- /* Get CBN (Chipset bus number) */
- tag = PCI_MAKE_TAG(0, 0x10, 0);
- if (!(cbn_460gx = (unsigned int)pciReadByte(tag, CBN))) {
- /* Sanity check failed */
- cbn_460gx = -1;
- return;
- }
-
- if (pciNumBuses <= cbn_460gx)
- pciNumBuses = cbn_460gx + 1;
-
- /* Set up bus CBN */
- if (!pciBusInfo[cbn_460gx]) {
- pciBusInfo[cbn_460gx] = xnfalloc(sizeof(pciBusInfo_t));
- *pciBusInfo[cbn_460gx] = *pBusInfo;
- }
-
- tag = PCI_MAKE_TAG(cbn_460gx, 0, 0);
- if (pciReadLong(tag, PCI_ID_REG) != DEVID(VENDOR_INTEL, CHIP_460GX_SAC)) {
- /* Sanity check failed */
- cbn_460gx = -1;
- return;
- }
-
- /*
- * Find out which CBN devices the firmware thinks are present. Of these,
- * we are only interested in devices 0x10 through 0x17.
- */
- cbdevs_460gx = pciReadLong(tag, DEVNPRES);
-
- for (i = 0, devno = 0x10; devno <= 0x17; i++, devno++) {
- tag = PCI_MAKE_TAG(cbn_460gx, devno, 0);
- if (pciReadLong(tag, PCI_ID_REG) !=
- DEVID(VENDOR_INTEL, CHIP_460GX_SAC)) {
- /* Sanity check failed */
- cbn_460gx = -1;
- return;
- }
-
- if (devno == 0x10)
- iord_460gx = pciReadWord(tag, IORD);
-
- busno_460gx[i] = (unsigned int)pciReadByte(tag, BUSNO);
- subno_460gx[i] = (unsigned int)pciReadByte(tag, SUBNO);
- pcis_460gx[i] = pciReadByte(tag, PCIS);
- ior_460gx[i] = pciReadByte(tag, IOR);
-
- has_err_460gx[i] = err_460gx[i] = 0; /* Insurance */
-
- tag = PCI_MAKE_TAG(cbn_460gx, devno, 1);
- tmp = pciReadLong(tag, PCI_ID_REG);
- switch (tmp) {
- case DEVID(VENDOR_INTEL, CHIP_460GX_PXB):
- case DEVID(VENDOR_INTEL, CHIP_460GX_WXB):
- if (cbdevs_460gx & (1 << devno)) {
- /* Sanity check failed */
- cbn_460gx = -1;
- return;
- }
-
- /*
- * XXX I don't have WXB docs, but PCI register dumps indicate that
- * the registers we are interested in are consistent with those of
- * the PXB.
- */
- err_460gx[i] = pciReadByte(tag, ERRCMD);
- has_err_460gx[i] = 1;
- break;
-
- case DEVID(VENDOR_INTEL, CHIP_460GX_GXB_1):
- if (cbdevs_460gx & (1 << devno)) {
- /* Sanity check failed */
- cbn_460gx = -1;
- return;
- }
-
- /*
- * XXX GXB isn't documented to have an ERRCMD register, nor any
- * other means of failing master aborts. For now, assume master
- * aborts are always allowed to complete normally.
- */
- break;
-
- default:
- if (((CARD16)(tmp + 1U) <= (CARD16)1U) &&
- (cbdevs_460gx & (1U << devno)))
- break;
- /* Sanity check failed */
- cbn_460gx = -1;
- return;
- }
- }
-
- /* Allow master aborts to complete normally */
- for (i = 0, devno = 0x10; devno <= 0x17; i++, devno++) {
- if (!(err_460gx[i] & 0x01))
- continue;
-
- pciWriteByte(PCI_MAKE_TAG(cbn_460gx, devno, 1),
- ERRCMD, err_460gx[i] & ~0x01);
- }
-
- /*
- * The 460GX spec says that any access to buses higher than CBN will be
- * master-aborted. It seems possible however that this is not the case in
- * all 460GX implementations. For now, limit the bus scan to CBN, unless
- * we have already found a higher bus number.
- */
- for (i = 0; subno_460gx[i] < cbn_460gx; ) {
- if (++i < 8)
- continue;
-
- pciMaxBusNum = cbn_460gx + 1;
- break;
- }
-
- return;
-}
-
-/* This does some 460GX-related processing after the PCI bus scan */
-void
-xf86PostScan460GX(void)
-{
- pciConfigPtr pPCI, *ppPCI;
- pciBusInfo_t *pBusInfo;
- int i, j, devno;
-
- if (cbn_460gx <= 0)
- return;
-
- /* Set up our extra bus functions */
- BusFuncs_460gx = *(pciBusInfo[0]->funcs);
- BusFuncs_460gx.pciControlBridge = Control460GXBridge;
- BusFuncs_460gx.pciGetBridgeBuses = Get460GXBridgeBuses;
- BusFuncs_460gx.pciGetBridgeResources = Get460GXBridgeResources;
-
- /*
- * Mark all host bridges so that they are ignored by the upper-level
- * xf86GetPciBridgeInfo() function. This marking is later clobbered by the
- * tail end of xf86scanpci() for those bridges that actually have bus
- * segments associated with them.
- */
- ppPCI = xf86scanpci(0); /* Recursion is only apparent */
- while ((pPCI = *ppPCI++)) {
- if ((pPCI->pci_base_class == PCI_CLASS_BRIDGE) &&
- (pPCI->pci_sub_class == PCI_SUBCLASS_BRIDGE_HOST))
- pPCI->businfo = HOST_NO_BUS;
- }
-
- ppPCI = xf86scanpci(0); /* Recursion is only apparent */
- j = 0;
-
- /*
- * Fix up CBN bus linkage. This is somewhat arbitrary. The bridge chosen
- * for this must be a CBN device so that bus CBN can be recognised as the
- * root segment. It also cannot be any of the bus expanders (devices
- * CBN:0x10:0 through CBN:0x17:0 nor any of their functions). For now, we
- * chose the SAC host bridge at CBN:0:0.
- */
- pBusInfo = pciBusInfo[cbn_460gx];
- pBusInfo->bridge = pciBusInfo[0]->bridge; /* Just in case */
- while ((pPCI = *ppPCI++)) {
- if (pPCI->busnum < cbn_460gx)
- continue;
- if (pPCI->busnum > cbn_460gx)
- break;
- if (pPCI->devnum < 0)
- continue;
- if (pPCI->devnum > 0)
- break;
- if (pPCI->funcnum < 0)
- continue;
- if (pPCI->funcnum > 0)
- break;
-
- pBusInfo->bridge = pPCI;
- pBusInfo->secondary = FALSE;
- pBusInfo->primary_bus = cbn_460gx;
- break;
- }
-
- for (i = 0, devno = 0x10; devno <= 0x17; i++, devno++) {
- /* Restore ERRCMD registers */
- if (err_460gx[i] & 0x01)
- pciWriteByte(PCI_MAKE_TAG(cbn_460gx, devno, 1),
- ERRCMD, err_460gx[i]);
-
- if (!(cbdevs_460gx & (1 << devno))) {
- while ((pPCI = *ppPCI++)) {
- if (pPCI->busnum < cbn_460gx)
- continue;
- if (pPCI->busnum > cbn_460gx)
- break;
- if (pPCI->devnum < devno)
- continue;
- if (pPCI->devnum > devno)
- break;
- if (pPCI->funcnum < 0)
- continue;
- if (pPCI->funcnum > 0)
- break;
-
- if ((pBusInfo == pciBusInfo[busno_460gx[i]]))
- break;
-
- /* Fix bus linkage */
- pBusInfo->bridge = pPCI;
- pBusInfo->secondary = TRUE;
- pBusInfo->primary_bus = cbn_460gx;
-
- /* Plug in chipset routines */
- pBusInfo->funcs = &BusFuncs_460gx;
- break;
- }
- }
-
- /* Decode IOR registers */
- for(; j <= (ior_460gx[i] & 0x0F); j++)
- iomap_460gx[j] = devno;
- }
-
- /* The bottom 4k of I/O space is always routed to PCI0a */
- iomap_460gx[0] = 0x10;
-
- /* Decode IORD register */
- for (j = 1; j <= 0x0F; j++)
- if (iord_460gx & (1 << j))
- iomap_460gx[j] = 0x10;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.h
deleted file mode 100644
index 65a19b2f0..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.h,v 1.1 2003/01/02 18:12:48 tsi Exp $ */
-/*
- * Copyright (C) 2002-2003 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef PCI_460GX_H
-#define PCI_460GX_H 1
-
-#include <X11/Xdefs.h>
-#include <Pci.h>
-
-Bool xorgProbe460GX(scanpciWrapperOpt flags);
-void xf86PreScan460GX(void);
-void xf86PostScan460GX(void);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Imakefile
deleted file mode 100644
index bae6ee7c2..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Imakefile
+++ /dev/null
@@ -1,165 +0,0 @@
-XCOMM $XConsortium: Imakefile /main/16 1996/10/27 18:07:43 kaleb $
-
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile,v 1.29tsi Exp $
-
-#include <Server.tmpl>
-
-#if defined(LinuxArchitecture) && defined(AlphaArchitecture)
-
-XCOMM Alpha (Linux) PCI driver
-
-PCIDRVRSRC = axpPci.c
-PCIDRVROBJ = axpPci.o
-
-#elif defined(LinuxArchitecture) && defined(SparcArchitecture)
-
-XCOMM Sparc SBUS driver and generic Linux PCI driver
-
-PCIDRVRSRC = sparcPci.c linuxPci.c
-PCIDRVROBJ = sparcPci.o linuxPci.o
-SBUSDRVSRC = Sbus.c
-SBUSDRVOBJ = Sbus.o
-
-#elif defined(SunArchitecture) && defined(SparcArchitecture)
-
-XCOMM Sparc SBUS & PCI drivers
-
-PCIDRVRSRC = sparcPci.c
-PCIDRVROBJ = sparcPci.o
-SBUSDRVSRC = Sbus.c
-SBUSDRVOBJ = Sbus.o
-
-#elif defined(LinuxArchitecture) && \
- (defined(PpcArchitecture) || \
- defined(Ppc64Architecture) || \
- defined(MipsArchitecture) || \
- defined(ia64Architecture) || \
- defined(Mc68020Architecture) || \
- defined(Arm32Architecture) || \
- defined(HPArchitecture) || \
- defined(s390Architecture) || \
- defined(SuperHArchitecture) || \
- defined(SuperHebArchitecture))
-
-XCOMM generic linux PCI driver (using /proc/bus/pci, requires kernel 2.2)
-
-PCIDRVRSRC = linuxPci.c
-PCIDRVROBJ = linuxPci.o
-
-#elif defined(OpenBSDArchitecture) && \
- (defined(PpcArchitecture) || \
- defined(AlphaArchitecture) || \
- defined(Sparc64Architecture))
-
-XCOMM OpenBSD/alpha, OpenBSD/powerpc and OpenBSD/sparc64
-
-PCIDRVRSRC = freebsdPci.c
-PCIDRVROBJ = freebsdPci.o
-
-#elif defined(NetBSDArchitecture) && defined(PpcArchitecture)
-
-XCOMM NetBSD/powerpc
-
-PCIDRVRSRC = netbsdPci.c
-PCIDRVROBJ = netbsdPci.o
-
-#elif defined(FreeBSDArchitecture) && defined(PpcArchitecture)
-
-XCOMM FreeBSD/PowerPC PCI driver (using /dev/pci)
-
-PCIDRVRSRC = freebsdPci.c
-PCIDRVROBJ = freebsdPci.o
-
-#elif defined(PpcArchitecture)
-
-XCOMM PowerPC PCI drivers
-
-PCIDRVRSRC = ppcPci.c
-PCIDRVROBJ = ppcPci.o
-
-#elif defined(LinuxArchitecture) && \
- (defined(i386Architecture) || defined(AMD64Architecture))
-
-XCOMM ix86 PCI driver with OS fallback for Linux
-
-PCIDRVRSRC = ix86Pci.c linuxPci.c
-PCIDRVROBJ = ix86Pci.o linuxPci.o
-
-#elif defined(KFreeBSDArchitecture) && \
- (defined(AlphaArchitecture) || defined(AMD64Architecture))
-
-XCOMM generic FreeBSD PCI driver (using /dev/pci)
-
-PCIDRVRSRC = freebsdPci.c
-PCIDRVROBJ = freebsdPci.o
-
-#elif defined(KFreeBSDArchitecture) && defined(Sparc64Architecture)
-
-XCOMM Sparc SBUS & PCI drivers
-
-PCIDRVRSRC = freebsdPci.c
-PCIDRVROBJ = freebsdPci.o
-SBUSDRVSRC = Sbus.c
-SBUSDRVOBJ = Sbus.o
-
-#elif defined(NetBSDArchitecture) && defined(AlphaArchitecture)
-
-XCOMM Alpha (NetBSD) PCI driver
-
-PCIDRVRSRC = netbsdPci.c
-PCIDRVROBJ = netbsdPci.o
-
-#elif defined(i386Architecture) || \
- defined(ia64Architecture) || \
- defined(AMD64Architecture)
-
-XCOMM ix86 PCI driver
-
-PCIDRVRSRC = ix86Pci.c
-PCIDRVROBJ = ix86Pci.o
-XCOMM PCIDRVRSRC = linuxPci.c
-XCOMM PCIDRVROBJ = linuxPci.o
-
-#else
-XCOMM no PCI driver -- shouldn't get here
-#endif
-
-#if defined(SparcArchitecture)
-# if !defined(SunArchitecture)
-PCIARCHSRC = sparcPci.c
-PCIARCHOBJ = sparcPci.o
-# endif
-#elif defined(ia64Architecture)
-PCIARCHSRC = 460gxPCI.c e8870PCI.c zx1PCI.c altixPCI.c
-PCIARCHOBJ = 460gxPCI.o e8870PCI.o zx1PCI.o altixPCI.o
-#endif
-
-SRCS = Pci.c $(PCIDRVRSRC) $(SBUSDRVSRC) $(PCIARCHSRC)
-OBJS = Pci.o $(PCIDRVROBJ) $(SBUSDRVOBJ) $(PCIARCHOBJ)
-
-INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86OSSRC) \
- -I$(SERVERSRC)/include -I$(XINCLUDESRC)
-
-NormalLibraryObjectRule()
-SubdirLibraryRule($(OBJS))
-
-/*
- * egcs 1.1.2 as provided with some Linux distributions has an optimisation
- * bug that results in bad code for this file.
- */
-#if Egcs112Bug
-SpecialCObjectRule(Pci,NullParameter,-O0)
-#endif
-
-#if defined(SunArchitecture) && defined(SparcArchitecture)
-
-LFS_DEFINES = `getconf LFS_CFLAGS`
-
-SpecialCObjectRule(sparcPci,NullParameter,$(LFS_DEFINES))
-
-#endif
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Pci.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Pci.c
deleted file mode 100644
index 4e71eb614..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Pci.c
+++ /dev/null
@@ -1,1453 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.c,v 1.82 2004/01/16 15:39:04 tsi Exp $ */
-/*
- * Pci.c - New server PCI access functions
- *
- * The XFree86 server PCI access functions have been reimplemented as a
- * framework that allows each supported platform/OS to have their own
- * platform/OS specific pci driver.
- *
- * All of the public PCI access functions exported to the other parts of
- * the server are declared in Pci.h and defined herein. These include:
- * pciInit() - Initialize PCI access functions
- * pciFindFirst() - Find a PCI device by dev/vend id
- * pciFindNext() - Find another PCI device by dev/vend id
- * pciReadLong() - Read a 32 bit value from a device's cfg space
- * pciReadWord() - Read a 16 bit value from a device's cfg space
- * pciReadByte() - Read an 8 bit value from a device's cfg space
- * pciWriteLong() - Write a 32 bit value to a device's cfg space
- * pciWriteWord() - Write a 16 bit value to a device's cfg space
- * pciWriteByte() - Write an 8 bit value to a device's cfg space
- * pciSetBitsLong() - Write a 32 bit value against a mask
- * pciSetBitsByte() - Write an 8 bit value against a mask
- * pciTag() - Return tag for a given PCI bus, device, &
- * function
- * pciBusAddrToHostAddr() - Convert a PCI address to a host address
- * pciHostAddrToBusAddr() - Convert a host address to a PCI address
- * pciGetBaseSize() - Returns the number of bits in a PCI base
- * addr mapping
- * xf86MapPciMem() - Like xf86MapVidMem() except function expects
- * a PCI address and a PCITAG that identifies
- * a PCI device
- * xf86ReadPciBIOS() - Like xf86ReadBIOS() but can handle PCI/host
- * address translation and BIOS decode enabling
- * xf86scanpci() - Return info about all PCI devices
- * xf86GetPciDomain() - Return domain number from a PCITAG
- * xf86MapDomainMemory() - Like xf86MapPciMem() but can handle
- * domain/host address translation
- * xf86MapDomainIO() - Maps PCI I/O spaces
- * xf86ReadDomainMemory() - Like xf86ReadPciBIOS() but can handle
- * domain/host address translation
- *
- * The actual PCI backend driver is selected by the pciInit() function
- * (see below) using either compile time definitions, run-time checks,
- * or both.
- *
- * Certain generic functions are provided that make the implementation
- * of certain well behaved platforms (e.g. those supporting PCI config
- * mechanism 1 or some thing close to it) very easy.
- *
- * Less well behaved platforms/OS's can roll their own functions.
- *
- * To add support for another platform/OS, add a call to fooPciInit() within
- * pciInit() below under the correct compile time definition or run-time
- * conditional.
- *
- * The fooPciInit() procedure must do three things:
- * 1) Initialize the pciBusTable[] for all primary PCI buses including
- * the per domain PCI access functions (readLong, writeLong,
- * addrBusToHost, and addrHostToBus).
- *
- * 2) Add entries to pciBusTable[] for configured secondary buses. This
- * step may be skipped if a platform is using the generic findFirst/
- * findNext functions because these procedures will automatically
- * discover and add secondary buses dynamically.
- *
- * 3) Overide default settings for global PCI access functions if
- * required. These include pciFindFirstFP, pciFindNextFP,
- * Of course, if you choose not to use one of the generic
- * functions, you will need to provide a platform specifc replacement.
- *
- * Gary Barton
- * Concurrent Computer Corporation
- * garyb@gate.net
- *
- */
-
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * This software is derived from the original XFree86 PCI code
- * which includes the following copyright notices as well:
- *
- * Copyright 1995 by Robin Cutshaw <robin@XFree86.Org>
- *
- * 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, and that the names of the above listed copyright holder(s)
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. The above listed
- * copyright holder(s) make(s) no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * This code is also based heavily on the code in FreeBSD-current, which was
- * written by Wolfgang Stanglmeier, and contains the following copyright:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <errno.h>
-#include <signal.h>
-#include <X11/Xarch.h>
-#include "compiler.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#define XF86_OS_PRIVS
-#include "xf86_OSproc.h"
-#include "Pci.h"
-
-#define PCI_MFDEV_SUPPORT 1 /* Include PCI multifunction device support */
-#define PCI_BRIDGE_SUPPORT 1 /* Include support for PCI-to-PCI bridges */
-
-/*
- * Global data
- */
-static int pciInitialized = 0;
-
-CARD32 pciDevid; /* Requested device/vendor ID (after mask) */
-CARD32 pciDevidMask; /* Bit mask applied (AND) before comparison */
- /* of real devid's with requested */
-
-int pciBusNum; /* Bus Number of current device */
-int pciDevNum; /* Device number of current device */
-int pciFuncNum; /* Function number of current device */
-PCITAG pciDeviceTag; /* Tag for current device */
-
-pciBusInfo_t *pciBusInfo[MAX_PCI_BUSES] = { NULL, };
-int pciNumBuses = 0; /* Actual number of PCI buses */
-int pciMaxBusNum = MAX_PCI_BUSES;
-static Bool inProbe = FALSE;
-
-static pciConfigPtr pci_devp[MAX_PCI_DEVICES + 1] = {NULL, };
-
-/*
- * Platform specific PCI function pointers.
- *
- * NOTE: A platform/OS specific pci init procedure can override these defaults
- * by setting them to the appropriate platform dependent functions.
- */
-PCITAG (*pciFindFirstFP)(void) = pciGenFindFirst;
-PCITAG (*pciFindNextFP)(void) = pciGenFindNext;
-
-/*
- * pciInit - choose correct platform/OS specific PCI init routine
- */
-void
-pciInit()
-{
- if (pciInitialized)
- return;
-
- pciInitialized = 1;
-
- /* XXX */
-#if defined(DEBUGPCI)
- if (DEBUGPCI >= xf86Verbose)
- xf86Verbose = DEBUGPCI;
-#endif
-
- ARCH_PCI_INIT();
-#if defined(ARCH_PCI_OS_INIT)
- if (pciNumBuses <= 0)
- ARCH_PCI_OS_INIT();
-#endif
-}
-
-PCITAG
-pciFindFirst(CARD32 id, CARD32 mask)
-{
-#ifdef DEBUGPCI
- ErrorF("pciFindFirst(0x%lx, 0x%lx), pciInit = %d\n", id, mask, pciInitialized);
-#endif
- pciInit();
-
- pciDevid = id & mask;
- pciDevidMask = mask;
-
- return((*pciFindFirstFP)());
-}
-
-PCITAG
-pciFindNext(void)
-{
-#ifdef DEBUGPCI
- ErrorF("pciFindNext(), pciInit = %d\n", pciInitialized);
-#endif
- pciInit();
-
- return((*pciFindNextFP)());
-}
-
-CARD32
-pciReadLong(PCITAG tag, int offset)
-{
- int bus = PCI_BUS_FROM_TAG(tag);
-
-#ifdef DEBUGPCI
- ErrorF("pciReadLong(0x%lx, %d)\n", tag, offset);
-#endif
- pciInit();
-
- if ((bus >= 0) && ((bus < pciNumBuses) || inProbe) && pciBusInfo[bus] &&
- pciBusInfo[bus]->funcs->pciReadLong) {
- CARD32 rv = (*pciBusInfo[bus]->funcs->pciReadLong)(tag, offset);
-
- PCITRACE(1, ("pciReadLong: tag=0x%x [b=%d,d=%d,f=%d] returns 0x%08x\n",
- tag, bus, PCI_DEV_FROM_TAG(tag), PCI_FUNC_FROM_TAG(tag), rv));
- return(rv);
- }
-
- return(PCI_NOT_FOUND);
-}
-
-CARD16
-pciReadWord(PCITAG tag, int offset)
-{
- CARD32 tmp;
- int shift = (offset & 3) * 8;
- int aligned_offset = offset & ~3;
- int bus = PCI_BUS_FROM_TAG(tag);
-
- if (shift != 0 && shift != 16)
- FatalError("pciReadWord: Alignment error: Cannot read 16 bits "
- "at offset %d\n", offset);
-
- pciInit();
-
- if ((bus >= 0) && ((bus < pciNumBuses) || inProbe) && pciBusInfo[bus] &&
- pciBusInfo[bus]->funcs->pciReadWord) {
- CARD32 rv = (*pciBusInfo[bus]->funcs->pciReadWord)(tag, offset);
-
- return(rv);
- } else {
- tmp = pciReadLong(tag, aligned_offset);
-
- return((CARD16)((tmp >> shift) & 0xffff));
- }
-}
-
-CARD8
-pciReadByte(PCITAG tag, int offset)
-{
- CARD32 tmp;
- int shift = (offset & 3) * 8;
- int aligned_offset = offset & ~3;
- int bus = PCI_BUS_FROM_TAG(tag);
-
- pciInit();
-
- if ((bus >= 0) && ((bus < pciNumBuses) || inProbe) && pciBusInfo[bus] &&
- pciBusInfo[bus]->funcs->pciReadByte) {
- CARD8 rv = (*pciBusInfo[bus]->funcs->pciReadByte)(tag, offset);
-
- return(rv);
- } else {
- tmp = pciReadLong(tag, aligned_offset);
-
- return((CARD8)((tmp >> shift) & 0xff));
- }
-}
-
-void
-pciWriteLong(PCITAG tag, int offset, CARD32 val)
-{
- int bus = PCI_BUS_FROM_TAG(tag);
-
- pciInit();
-
- if ((bus >= 0) && (bus < pciNumBuses) && pciBusInfo[bus] &&
- pciBusInfo[bus]->funcs->pciWriteLong)
- (*pciBusInfo[bus]->funcs->pciWriteLong)(tag, offset, val);
-}
-
-void
-pciWriteWord(PCITAG tag, int offset, CARD16 val)
-{
- CARD32 tmp;
- int aligned_offset = offset & ~3;
- int shift = (offset & 3) * 8;
- int bus = PCI_BUS_FROM_TAG(tag);
-
- if (shift != 0 && shift != 16)
- FatalError("pciWriteWord: Alignment Error: Cannot read 16 bits "
- "from offset %d\n", offset);
-
- pciInit();
-
- if ((bus >= 0) && (bus < pciNumBuses) && pciBusInfo[bus] &&
- pciBusInfo[bus]->funcs->pciWriteWord) {
- (*pciBusInfo[bus]->funcs->pciWriteWord)(tag, offset, val);
- } else {
- tmp = pciReadLong(tag, aligned_offset);
-
- tmp &= ~(0xffffL << shift);
- tmp |= (((CARD32)val) << shift);
-
- pciWriteLong(tag, aligned_offset, tmp);
- }
-}
-
-void
-pciWriteByte(PCITAG tag, int offset, CARD8 val)
-{
- CARD32 tmp;
- int aligned_offset = offset & ~3;
- int shift = (offset & 3) *8 ;
- int bus = PCI_BUS_FROM_TAG(tag);
-
- pciInit();
-
- if ((bus >= 0) && (bus < pciNumBuses) && pciBusInfo[bus] &&
- pciBusInfo[bus]->funcs->pciWriteByte) {
- (*pciBusInfo[bus]->funcs->pciWriteByte)(tag, offset, val);
- } else {
-
- tmp = pciReadLong(tag, aligned_offset);
-
- tmp &= ~(0xffL << shift);
- tmp |= (((CARD32)val) << shift);
-
- pciWriteLong(tag, aligned_offset, tmp);
- }
-}
-
-void
-pciSetBitsLong(PCITAG tag, int offset, CARD32 mask, CARD32 val)
-{
- int bus = PCI_BUS_FROM_TAG(tag);
-
-#ifdef DEBUGPCI
- ErrorF("pciReadLong(0x%lx, %d)\n", tag, offset);
-#endif
- pciInit();
-
- if ((bus >= 0) && (bus < pciNumBuses) && pciBusInfo[bus] &&
- pciBusInfo[bus]->funcs->pciSetBitsLong) {
- (*pciBusInfo[bus]->funcs->pciSetBitsLong)(tag, offset, mask, val);
- }
-}
-
-void
-pciSetBitsByte(PCITAG tag, int offset, CARD8 mask, CARD8 val)
-{
- CARD32 tmp_mask, tmp_val;
- int aligned_offset = offset & ~3;
- int shift = (offset & 3) *8 ;
-
- tmp_mask = mask << shift;
- tmp_val = val << shift;
- pciSetBitsLong(tag, aligned_offset, tmp_mask, tmp_val);
-}
-
-ADDRESS
-pciBusAddrToHostAddr(PCITAG tag, PciAddrType type, ADDRESS addr)
-{
- int bus = PCI_BUS_FROM_TAG(tag);
-
- pciInit();
-
- if ((bus >= 0) && (bus < pciNumBuses) && pciBusInfo[bus] &&
- pciBusInfo[bus]->funcs->pciAddrBusToHost)
- return (*pciBusInfo[bus]->funcs->pciAddrBusToHost)(tag, type, addr);
- else
- return(addr);
-}
-
-ADDRESS
-pciHostAddrToBusAddr(PCITAG tag, PciAddrType type, ADDRESS addr)
-{
- int bus = PCI_BUS_FROM_TAG(tag);
-
- pciInit();
-
- if ((bus >= 0) && (bus < pciNumBuses) && pciBusInfo[bus] &&
- pciBusInfo[bus]->funcs->pciAddrHostToBus)
- return (*pciBusInfo[bus]->funcs->pciAddrHostToBus)(tag, type, addr);
- else
- return(addr);
-}
-
-/*
- * pciGetBaseSize() returns the size of a PCI base address mapping in bits.
- * The index identifies the base register: 0-5 are the six standard registers,
- * and 6 is the ROM base register. If destructive is TRUE, it will write
- * to the base address register to get an accurate result. Otherwise it
- * makes a conservative guess based on the alignment of the already allocated
- * address. If the result is accurate (ie, not an over-estimate), this is
- * indicated by setting *min to TRUE (when min is non-NULL). This happens
- * when either the destructive flag is set, the information is supplied by
- * the OS if the OS supports this.
- */
-
-int
-pciGetBaseSize(PCITAG tag, int index, Bool destructive, Bool *min)
-{
- int offset;
- CARD32 addr1;
- CARD32 addr2;
- CARD32 mask1;
- CARD32 mask2;
- int bits = 0;
-
- /*
- * Eventually a function for this should be added to pciBusFuncs_t, but for
- * now we'll just use a simple method based on the alignment of the already
- * allocated address.
- */
-
- /*
- * silently ignore bogus index values. Valid values are 0-6. 0-5 are
- * the 6 base address registers, and 6 is the ROM base address register.
- */
- if (index < 0 || index > 6)
- return 0;
-
- pciInit();
-
- if (xf86GetPciSizeFromOS(tag, index, &bits)) {
- if (min)
- *min = TRUE;
- return bits;
- }
-
- if (min)
- *min = destructive;
-
- /* Get the PCI offset */
- if (index == 6)
- offset = PCI_MAP_ROM_REG;
- else
- offset = PCI_MAP_REG_START + (index << 2);
-
- addr1 = pciReadLong(tag, offset);
- /*
- * Check if this is the second part of a 64 bit address.
- * XXX need to check how endianness affects 64 bit addresses.
- */
- if (index > 0 && index < 6) {
- addr2 = pciReadLong(tag, offset - 4);
- if (PCI_MAP_IS_MEM(addr2) && PCI_MAP_IS64BITMEM(addr2))
- return 0;
- }
-
- if (destructive) {
- pciWriteLong(tag, offset, 0xffffffff);
- mask1 = pciReadLong(tag, offset);
- pciWriteLong(tag, offset, addr1);
- } else {
- mask1 = addr1;
- }
-
- /* Check if this is the first part of a 64 bit address. */
- if (index < 5 && PCI_MAP_IS_MEM(mask1) && PCI_MAP_IS64BITMEM(mask1)) {
- if (PCIGETMEMORY(mask1) == 0) {
- addr2 = pciReadLong(tag, offset + 4);
- if (destructive) {
- pciWriteLong(tag, offset + 4, 0xffffffff);
- mask2 = pciReadLong(tag, offset + 4);
- pciWriteLong(tag, offset + 4, addr2);
- } else {
- mask2 = addr2;
- }
- if (mask2 == 0)
- return 0;
- bits = 32;
- while ((mask2 & 1) == 0) {
- bits++;
- mask2 >>= 1;
- }
- if (bits > 32)
- return bits;
- }
- }
- if (index < 6)
- if (PCI_MAP_IS_MEM(mask1))
- mask1 = PCIGETMEMORY(mask1);
- else
- mask1 = PCIGETIO(mask1);
- else
- mask1 = PCIGETROM(mask1);
- if (mask1 == 0)
- return 0;
- bits = 0;
- while ((mask1 & 1) == 0) {
- bits++;
- mask1 >>= 1;
- }
- /* I/O maps can be no larger than 8 bits */
-
- if ((index < 6) && PCI_MAP_IS_IO(addr1) && bits > 8)
- bits = 8;
- /* ROM maps can be no larger than 24 bits */
- if (index == 6 && bits > 24)
- bits = 24;
- return bits;
-}
-
-PCITAG
-pciTag(int busnum, int devnum, int funcnum)
-{
- return(PCI_MAKE_TAG(busnum,devnum,funcnum));
-}
-
-#if defined(PCI_MFDEV_SUPPORT) || defined(PowerMAX_OS)
-
-Bool
-pciMfDev(int busnum, int devnum)
-{
- PCITAG tag0, tag1;
- CARD32 id0, id1, val;
-
- /* Detect a multi-function device that complies to the PCI 2.0 spec */
-
- tag0 = PCI_MAKE_TAG(busnum, devnum, 0);
- id0 = pciReadLong(tag0, PCI_ID_REG);
- if ((CARD16)(id0 + 1) <= (CARD16)1UL)
- return FALSE;
-
- val = pciReadLong(tag0, PCI_HEADER_MISC) & 0x00ff0000;
- if ((val != 0x00ff0000) && (val & PCI_HEADER_MULTIFUNCTION))
- return TRUE;
-
- /*
- * Now, to find non-compliant devices...
- * If there is a valid ID for function 1 and the ID for func 0 and 1
- * are different, or the base0 values of func 0 and 1 are differend,
- * then assume there is a multi-function device.
- */
- tag1 = PCI_MAKE_TAG(busnum, devnum, 1);
- id1 = pciReadLong(tag1, PCI_ID_REG);
- if ((CARD16)(id1 + 1) <= (CARD16)1UL)
- return FALSE;
-
- /* Vendor IDs should match */
- if ((id0 ^ id1) & 0x0000ffff)
- return FALSE;
-
- if ((id0 != id1) ||
- /* Note the following test is valid for header types 0, 1 and 2 */
- (pciReadLong(tag0, PCI_MAP_REG_START) !=
- pciReadLong(tag1, PCI_MAP_REG_START)))
- return TRUE;
-
- return FALSE;
-}
-
-#endif
-
-/*
- * Generic find/read/write functions
- */
-PCITAG
-pciGenFindNext(void)
-{
- CARD32 devid, tmp;
- int sec_bus, pri_bus;
- static int previousBus = 0;
- Bool speculativeProbe = FALSE;
- unsigned char base_class, sub_class;
-
-#ifdef DEBUGPCI
- ErrorF("pciGenFindNext\n");
-#endif
-
- for (;;) {
-
-#ifdef DEBUGPCI
- ErrorF("pciGenFindNext: pciBusNum %d\n", pciBusNum);
-#endif
- if (pciBusNum == -1) {
- /*
- * Start at top of the order
- */
- if (pciNumBuses <= 0)
- return(PCI_NOT_FOUND);
-
- /* Skip ahead to the first bus defined by pciInit() */
- for (pciBusNum = 0; !pciBusInfo[pciBusNum]; ++pciBusNum);
- pciFuncNum = 0;
- pciDevNum = 0;
- previousBus = pciBusNum; /* make sure previousBus exists */
- } else {
-#ifdef PCI_MFDEV_SUPPORT
-#ifdef DEBUGPCI
- ErrorF("pciGenFindNext: pciFuncNum %d\n", pciFuncNum);
-#endif
- /*
- * Somewhere in middle of order. Determine who's
- * next up
- */
- if (pciFuncNum == 0) {
- /*
- * Is current dev a multifunction device?
- */
- if (!speculativeProbe && pciMfDev(pciBusNum, pciDevNum))
- /* Probe for other functions */
- pciFuncNum = 1;
- else
- /*
- * No more functions this device. Next
- * device please
- */
- pciDevNum ++;
- } else if (++pciFuncNum >= 8) {
- /* No more functions for this device. Next device please */
- pciFuncNum = 0;
- pciDevNum ++;
- }
-#else
- pciDevNum ++;
-#endif
- if (pciDevNum >= 32 ||
- !pciBusInfo[pciBusNum] ||
- pciDevNum >= pciBusInfo[pciBusNum]->numDevices) {
-#ifdef DEBUGPCI
- ErrorF("pciGenFindNext: next bus\n");
-#endif
- /*
- * No more devices for this bus. Next bus please
- */
- if (speculativeProbe) {
- NextSpeculativeBus:
- xfree(pciBusInfo[pciBusNum]);
- pciBusInfo[pciBusNum] = NULL;
- speculativeProbe = FALSE;
- }
-
- if (++pciBusNum >= pciMaxBusNum) {
-#ifdef DEBUGPCI
- ErrorF("pciGenFindNext: out of buses\n");
-#endif
- /* No more buses. All done for now */
- return(PCI_NOT_FOUND);
- }
-
- pciDevNum = 0;
- }
- }
-
-#ifdef DEBUGPCI
- ErrorF("pciGenFindNext: pciBusInfo[%d] = 0x%lx\n", pciBusNum, pciBusInfo[pciBusNum]);
-#endif
- if (!pciBusInfo[pciBusNum]) {
- pciBusInfo[pciBusNum] = xnfalloc(sizeof(pciBusInfo_t));
- *pciBusInfo[pciBusNum] = *pciBusInfo[previousBus];
-
- speculativeProbe = TRUE;
- }
-
- /*
- * At this point, pciBusNum, pciDevNum, and pciFuncNum have been
- * advanced to the next device. Compute the tag, and read the
- * device/vendor ID field.
- */
-#ifdef DEBUGPCI
- ErrorF("pciGenFindNext: [%d, %d, %d]\n", pciBusNum, pciDevNum, pciFuncNum);
-#endif
- pciDeviceTag = PCI_MAKE_TAG(pciBusNum, pciDevNum, pciFuncNum);
- inProbe = TRUE;
- devid = pciReadLong(pciDeviceTag, PCI_ID_REG);
- inProbe = FALSE;
-#ifdef DEBUGPCI
- ErrorF("pciGenFindNext: pciDeviceTag = 0x%lx, devid = 0x%lx\n", pciDeviceTag, devid);
-#endif
- if ((CARD16)(devid + 1U) <= (CARD16)1UL)
- continue; /* Nobody home. Next device please */
-
- /*
- * Some devices mis-decode configuration cycles in such a way as to
- * create phantom buses.
- */
- if (speculativeProbe && (pciDevNum == 0) && (pciFuncNum == 0) &&
- (PCI_BUS_NO_DOMAIN(pciBusNum) > 0)) {
- for (;;) {
- if (++pciDevNum >= pciBusInfo[pciBusNum]->numDevices)
- goto NextSpeculativeBus;
- if (devid !=
- pciReadLong(PCI_MAKE_TAG(pciBusNum, pciDevNum, 0),
- PCI_ID_REG))
- break;
- }
-
- pciDevNum = 0;
- }
-
- if (pciNumBuses <= pciBusNum)
- pciNumBuses = pciBusNum + 1;
-
- speculativeProbe = FALSE;
- previousBus = pciBusNum;
-
-#ifdef PCI_BRIDGE_SUPPORT
- /*
- * Before checking for a specific devid, look for enabled
- * PCI to PCI bridge devices. If one is found, create and
- * initialize a bus info record (if one does not already exist).
- */
- tmp = pciReadLong(pciDeviceTag, PCI_CLASS_REG);
- base_class = PCI_CLASS_EXTRACT(tmp);
- sub_class = PCI_SUBCLASS_EXTRACT(tmp);
- if ((base_class == PCI_CLASS_BRIDGE) &&
- ((sub_class == PCI_SUBCLASS_BRIDGE_PCI) ||
- (sub_class == PCI_SUBCLASS_BRIDGE_CARDBUS))) {
- tmp = pciReadLong(pciDeviceTag, PCI_PCI_BRIDGE_BUS_REG);
- sec_bus = PCI_SECONDARY_BUS_EXTRACT(tmp, pciDeviceTag);
- pri_bus = PCI_PRIMARY_BUS_EXTRACT(tmp, pciDeviceTag);
-#ifdef DEBUGPCI
- ErrorF("pciGenFindNext: pri_bus %d sec_bus %d\n",
- pri_bus, sec_bus);
-#endif
- if (pciBusNum != pri_bus) {
- /* Some bridges do not implement the primary bus register */
- if ((PCI_BUS_NO_DOMAIN(pri_bus) != 0) ||
- (sub_class != PCI_SUBCLASS_BRIDGE_CARDBUS))
- xf86Msg(X_WARNING,
- "pciGenFindNext: primary bus mismatch on PCI"
- " bridge 0x%08lx (0x%02x, 0x%02x)\n",
- pciDeviceTag, pciBusNum, pri_bus);
- pri_bus = pciBusNum;
- }
- if ((pri_bus < sec_bus) && (sec_bus < pciMaxBusNum) &&
- pciBusInfo[pri_bus]) {
- /*
- * Found a secondary PCI bus
- */
- if (!pciBusInfo[sec_bus]) {
- pciBusInfo[sec_bus] = xnfalloc(sizeof(pciBusInfo_t));
-
- /* Copy parents settings... */
- *pciBusInfo[sec_bus] = *pciBusInfo[pri_bus];
- }
-
- /* ...but not everything same as parent */
- pciBusInfo[sec_bus]->primary_bus = pri_bus;
- pciBusInfo[sec_bus]->secondary = TRUE;
- pciBusInfo[sec_bus]->numDevices = 32;
-
- if (pciNumBuses <= sec_bus)
- pciNumBuses = sec_bus + 1;
- }
- }
-#endif
-
- /*
- * Does this device match the requested devid after
- * applying mask?
- */
-#ifdef DEBUGPCI
- ErrorF("pciGenFindNext: pciDevidMask = 0x%lx, pciDevid = 0x%lx\n", pciDevidMask, pciDevid);
-#endif
- if ((devid & pciDevidMask) == pciDevid)
- /* Yes - Return it. Otherwise, next device */
- return(pciDeviceTag); /* got a match */
-
- } /* for */
- /*NOTREACHED*/
-}
-
-PCITAG
-pciGenFindFirst(void)
-{
- /* Reset PCI bus number to start from top */
- pciBusNum = -1;
-
- return pciGenFindNext();
-}
-
-CARD32
-pciByteSwap(CARD32 u)
-{
-#if X_BYTE_ORDER == X_BIG_ENDIAN
-# if defined(__powerpc__) && defined(PowerMAX_OS)
- CARD32 tmp;
-
- __inst_stwbrx(u, &tmp, 0);
-
- return(tmp);
-
-# else /* !PowerMAX_OS */
-
- return lswapl(u);
-
-# endif /* !PowerMAX_OS */
-
-#else /* !BIG_ENDIAN */
-
- return(u);
-
-#endif
-}
-
-ADDRESS
-pciAddrNOOP(PCITAG tag, PciAddrType type, ADDRESS addr)
-{
- return(addr);
-}
-
-pciConfigPtr *
-xf86scanpci(int flags)
-{
- pciConfigPtr devp;
- pciBusInfo_t *busp;
- int idx = 0, i;
- PCITAG tag;
- static Bool done = FALSE;
-
- /*
- * if we haven't found PCI devices checking for pci_devp may
- * result in an endless recursion if platform/OS specific PCI
- * bus probing code calls this function from with in it.
- */
- if (done || pci_devp[0])
- return pci_devp;
-
- done = TRUE;
-
- pciInit();
-
-#ifdef XF86SCANPCI_WRAPPER
- XF86SCANPCI_WRAPPER(SCANPCI_INIT);
-#endif
-
- tag = pciFindFirst(0,0); /* 0 mask means match any valid device */
- /* Check if no devices, return now */
- if (tag == PCI_NOT_FOUND) {
-#ifdef XF86SCANPCI_WRAPPER
- XF86SCANPCI_WRAPPER(SCANPCI_TERM);
-#endif
- return NULL;
- }
-
-#ifdef DEBUGPCI
- ErrorF("xf86scanpci: tag = 0x%lx\n", tag);
-#endif
-#ifndef OLD_FORMAT
- xf86MsgVerb(X_INFO, 2, "PCI: PCI scan (all values are in hex)\n");
-#endif
-
- while (idx < MAX_PCI_DEVICES && tag != PCI_NOT_FOUND) {
- devp = xcalloc(1, sizeof(pciDevice));
- if (!devp) {
- xf86Msg(X_ERROR,
- "xf86scanpci: Out of memory after %d devices!!\n", idx);
- return (pciConfigPtr *)NULL;
- }
-
- /* Identify pci device by bus, dev, func, and tag */
- devp->tag = tag;
- devp->busnum = PCI_BUS_FROM_TAG(tag);
- devp->devnum = PCI_DEV_FROM_TAG(tag);
- devp->funcnum = PCI_FUNC_FROM_TAG(tag);
-
- /* Read config space for this device */
- for (i = 0; i < 17; i++) /* PCI hdr plus 1st dev spec dword */
- devp->cfgspc.dwords[i] = pciReadLong(tag, i * sizeof(CARD32));
-
- /* Some broken devices don't implement this field... */
- if (devp->pci_header_type == 0xff)
- devp->pci_header_type = 0;
-
- switch (devp->pci_header_type & 0x7f) {
- case 0:
- /* Get base address sizes for type 0 headers */
- for (i = 0; i < 7; i++)
- devp->basesize[i] =
- pciGetBaseSize(tag, i, FALSE, &devp->minBasesize);
- break;
-
- case 1:
- case 2:
- /* Allow master aborts to complete normally on secondary buses */
- if (!(devp->pci_bridge_control & PCI_PCI_BRIDGE_MASTER_ABORT_EN))
- break;
- pciWriteByte(tag, PCI_PCI_BRIDGE_CONTROL_REG,
- devp->pci_bridge_control &
- ~(PCI_PCI_BRIDGE_MASTER_ABORT_EN |
- PCI_PCI_BRIDGE_SECONDARY_RESET));
- break;
-
- default:
- break;
- }
-
-#ifdef OLD_FORMAT
- xf86MsgVerb(X_INFO, 2, "PCI: BusID 0x%.2x,0x%02x,0x%1x "
- "ID 0x%04x,0x%04x Rev 0x%02x Class 0x%02x,0x%02x\n",
- devp->busnum, devp->devnum, devp->funcnum,
- devp->pci_vendor, devp->pci_device, devp->pci_rev_id,
- devp->pci_base_class, devp->pci_sub_class);
-#else
- xf86MsgVerb(X_INFO, 2, "PCI: %.2x:%02x:%1x: chip %04x,%04x"
- " card %04x,%04x rev %02x class %02x,%02x,%02x hdr %02x\n",
- devp->busnum, devp->devnum, devp->funcnum,
- devp->pci_vendor, devp->pci_device,
- devp->pci_subsys_vendor, devp->pci_subsys_card,
- devp->pci_rev_id, devp->pci_base_class,
- devp->pci_sub_class, devp->pci_prog_if,
- devp->pci_header_type);
-#endif
-
- pci_devp[idx++] = devp;
- tag = pciFindNext();
-
-#ifdef DEBUGPCI
- ErrorF("xf86scanpci: tag = pciFindNext = 0x%lx\n", tag);
-#endif
- }
-
- /* Restore modified data (in reverse order), and link buses */
- while (--idx >= 0) {
- devp = pci_devp[idx];
- switch (devp->pci_header_type & 0x7f) {
- case 0:
- if ((devp->pci_base_class != PCI_CLASS_BRIDGE) ||
- (devp->pci_sub_class != PCI_SUBCLASS_BRIDGE_HOST))
- break;
- pciBusInfo[devp->busnum]->bridge = devp;
- pciBusInfo[devp->busnum]->primary_bus = devp->busnum;
- break;
-
- case 1:
- case 2:
- i = PCI_SECONDARY_BUS_EXTRACT(devp->pci_pp_bus_register, devp->tag);
- if (i > devp->busnum) {
- if (pciBusInfo[i]) {
- pciBusInfo[i]->bridge = devp;
- /*
- * The back link needs to be set here, and is unlikely to
- * change.
- */
- devp->businfo = pciBusInfo[i];
- }
-#ifdef ARCH_PCI_PCI_BRIDGE
- ARCH_PCI_PCI_BRIDGE(devp);
-#endif
- }
- if (!(devp->pci_bridge_control & PCI_PCI_BRIDGE_MASTER_ABORT_EN))
- break;
- pciWriteByte(devp->tag, PCI_PCI_BRIDGE_CONTROL_REG,
- devp->pci_bridge_control & ~PCI_PCI_BRIDGE_SECONDARY_RESET);
- break;
-
- default:
- break;
- }
- }
-
-#ifdef XF86SCANPCI_WRAPPER
- XF86SCANPCI_WRAPPER(SCANPCI_TERM);
-#endif
-
- /*
- * Lastly, link bridges to their secondary bus, after the architecture has
- * had a chance to modify these assignments.
- */
- for (idx = 0; idx < pciNumBuses; idx++) {
- if (!(busp = pciBusInfo[idx]) || !(devp = busp->bridge))
- continue;
- devp->businfo = busp;
- }
-
-#ifndef OLD_FORMAT
- xf86MsgVerb(X_INFO, 2, "PCI: End of PCI scan\n");
-#endif
-
- return pci_devp;
-}
-
-CARD32
-pciCheckForBrokenBase(PCITAG Tag,int basereg)
-{
- pciWriteLong(Tag, PCI_MAP_REG_START + (basereg << 2), 0xffffffff);
- return pciReadLong(Tag, PCI_MAP_REG_START + (basereg << 2));
-}
-
-#if defined(INCLUDE_XF86_MAP_PCI_MEM)
-
-pointer
-xf86MapPciMem(int ScreenNum, int Flags, PCITAG Tag, ADDRESS Base,
- unsigned long Size)
-{
- ADDRESS hostbase = pciBusAddrToHostAddr(Tag, PCI_MEM,Base);
- pointer base;
- CARD32 save = 0;
-
- /*
- * If there are possible read side-effects, disable memory while
- * doing the mapping.
- */
- if (Flags & VIDMEM_READSIDEEFFECT) {
- save = pciReadLong(Tag, PCI_CMD_STAT_REG);
- pciWriteLong(Tag, PCI_CMD_STAT_REG,
- save & ~PCI_CMD_MEM_ENABLE);
- }
- base = xf86MapDomainMemory(ScreenNum, Flags, Tag, hostbase, Size);
- if (!base) {
- FatalError("xf86MapPciMem: Could not mmap PCI memory "
- "[base=0x%lx,hostbase=0x%lx,size=%lx] (%s)\n",
- Base, hostbase, Size, strerror(errno));
- }
- /*
- * If read side-effects, do whatever might be needed to prevent
- * unintended reads, then restore PCI_CMD_STAT_REG.
- */
- if (Flags & VIDMEM_READSIDEEFFECT) {
- xf86MapReadSideEffects(ScreenNum, Flags, base, Size);
- pciWriteLong(Tag, PCI_CMD_STAT_REG, save);
- }
- return((pointer)base);
-}
-
-static int
-handlePciBIOS(PCITAG Tag, int basereg,
- int (*func)(PCITAG, CARD8*, ADDRESS, pointer),
- pointer args)
-{
- CARD32 romsave = 0;
- int i;
- romBaseSource b_reg;
- ADDRESS hostbase;
- CARD8 tmp[64];
- int ret = 0;
-
- romsave = pciReadLong(Tag, PCI_MAP_ROM_REG);
-
- for (i = ROM_BASE_PRESET; i <= ROM_BASE_FIND; i++) {
- memType savebase = 0, newbase, romaddr;
-
- switch (i) {
- case ROM_BASE_PRESET:
- /* Does the driver have a preference? */
- if (basereg > ROM_BASE_PRESET && basereg <= ROM_BASE_FIND)
- b_reg = basereg;
- else
- b_reg = ++i;
- break;
- case ROM_BASE_FIND:
- /*
- * If we have something that looks like a valid address
- * in romsave, it's probably not going to help to try
- * to guess a new address and reprogram it.
- */
- if (PCIGETROM(romsave)) {
- pciWriteLong(Tag, PCI_MAP_ROM_REG, PCI_MAP_ROM_ADDRESS_MASK);
- if (romsave != pciReadLong(Tag, PCI_MAP_ROM_REG)) {
- pciWriteLong(Tag, PCI_MAP_ROM_REG, romsave);
- continue;
- }
- }
- default:
- b_reg = i;
- }
-
- if (!(newbase = getValidBIOSBase(Tag, b_reg)))
- continue; /* no valid address found */
-
- romaddr = PCIGETROM(newbase);
-
- /* if we use a mem base save it and move it out of the way */
- if (b_reg >= 0 && b_reg <= 5) {
- savebase = pciReadLong(Tag, PCI_MAP_REG_START+(b_reg<<2));
- xf86MsgVerb(X_INFO,5,"xf86ReadPciBios: modifying membase[%i]"
- " for device %i:%i:%i\n", basereg,
- (int)PCI_BUS_FROM_TAG(Tag), (int)PCI_DEV_FROM_TAG(Tag),
- (int)PCI_FUNC_FROM_TAG(Tag));
- pciWriteLong(Tag, PCI_MAP_REG_START + (b_reg << 2),
- (CARD32)~0);
- }
- /* Set ROM base address and enable ROM address decoding */
- pciWriteLong(Tag, PCI_MAP_ROM_REG, romaddr
- | PCI_MAP_ROM_DECODE_ENABLE);
-
- hostbase = pciBusAddrToHostAddr(Tag, PCI_MEM, PCIGETROM(romaddr));
-
- if ((xf86ReadDomainMemory(Tag, hostbase, sizeof(tmp), tmp) !=
- sizeof(tmp)) ||
- (tmp[0] != 0x55) || (tmp[1] != 0xaa) || !tmp[2] ) {
- /* Restore the base registers if they were changed. */
- pciWriteLong(Tag, PCI_MAP_ROM_REG, romsave);
- if (savebase) pciWriteLong(Tag, PCI_MAP_REG_START + (b_reg << 2),
- (CARD32) savebase);
-
- /* No BIOS found: try another address */
- continue;
- }
-
- ret = (*func)(Tag, tmp, hostbase, args);
-
- /* Restore the base register if it was changed. */
- if (savebase) pciWriteLong(Tag, PCI_MAP_REG_START + (b_reg << 2),
- (CARD32) savebase);
- /* Restore ROM address decoding */
- pciWriteLong(Tag, PCI_MAP_ROM_REG, romsave);
-
- return ret;
- }
- /* Restore ROM address decoding */
- pciWriteLong(Tag, PCI_MAP_ROM_REG, romsave);
- return 0;
-}
-
-typedef struct {
- unsigned long Offset;
- int Len;
- unsigned char *Buf;
- PciBiosType BiosType;
-} readBios, *readBiosPtr;
-
-static int
-readPciBios(PCITAG Tag, CARD8* tmp, ADDRESS hostbase, pointer args)
-{
- unsigned int image_length = 0;
- readBiosPtr rd = args;
- int ret;
-
- /* We found a PCI BIOS Image. Now we look for the correct type */
- while ((tmp[0] == 0x55) && (tmp[1] == 0xAA)) {
- unsigned short data_off = tmp[0x18] | (tmp[0x19] << 8);
- unsigned char data[0x18];
- unsigned char type;
-
- if ((xf86ReadDomainMemory(Tag, hostbase + data_off, sizeof(data), data)
- != sizeof(data)) ||
- (data[0] != 'P') ||
- (data[1] != 'C') ||
- (data[2] != 'I') ||
- (data[3] != 'R'))
- break;
- type = data[0x14];
-#ifdef PRINT_PCI
- ErrorF("data segment in BIOS: 0x%x, type: 0x%x\n", data_off, type);
-#endif
- if (type != rd->BiosType) { /* not correct image: find next one */
- unsigned char indicator = data[0x15];
- unsigned int i_length;
- if (indicator & 0x80) /* last image */
- break;
- i_length = (data[0x10] | (data[0x11] << 8)) << 9;
-#ifdef PRINT_PCI
- ErrorF("data image length: 0x%x, ind: 0x%x\n",
- image_length, indicator);
-#endif
- hostbase += i_length;
- if (xf86ReadDomainMemory(Tag, hostbase, sizeof(tmp), tmp)
- != sizeof(tmp))
- break;
- continue;
- }
- /* OK, we have a PCI BIOS Image of the correct type */
-
- if (rd->BiosType == PCI_BIOS_PC)
- image_length = tmp[2] << 9;
- else
- image_length = (data[0x10] | (data[0x11] << 8)) << 9;
-#ifdef PRINT_PCI
- ErrorF("BIOS length: 0x%x\n", image_length);
-#endif
- break;
- }
-
- ret = 0;
- if (image_length) {
-
- /*
- * if no length is given return the full lenght,
- * Offset 0. Beware: Area pointed to by Buf must
- * be large enough!
- */
- if (rd->Len == 0) {
- rd->Len = image_length;
- rd->Offset = 0;
- }
- if ((rd->Offset) > (image_length)) {
- xf86Msg(X_WARNING,"xf86ReadPciBios: requesting data past "
- "end of BIOS %li > %i\n",(rd->Offset) , (image_length));
- } else {
- if ((rd->Offset + rd->Len) > (image_length)) {
- rd->Len = (image_length) - rd->Offset;
- xf86MsgVerb(X_INFO,3,"Truncating PCI BIOS Length to %i\n",rd->Len);
- }
- }
-
- /* Read BIOS */
- ret = xf86ReadDomainMemory(Tag, hostbase + rd->Offset, rd->Len, rd->Buf);
- }
-
- return ret;
-}
-
-static int
-getPciBIOSTypes(PCITAG Tag, CARD8* tmp, ADDRESS hostbase, pointer arg)
-{
- int n = 0;
- PciBiosType *Buf = arg;
-
- /* We found a PCI BIOS Image. Now we collect the types type */
- do {
- unsigned short data_off = tmp[0x18] | (tmp[0x19] << 8);
- unsigned char data[0x16];
- unsigned int i_length;
-
- if ((xf86ReadDomainMemory(Tag, hostbase + data_off, sizeof(data), data)
- != sizeof(data)) ||
- (data[0] != 'P') ||
- (data[1] != 'C') ||
- (data[2] != 'I') ||
- (data[3] != 'R'))
- break;
-
- if (data[0x14] >= PCI_BIOS_OTHER)
- *Buf++ = PCI_BIOS_OTHER;
- else
- *Buf++ = data[0x14];
-
- n++;
- if (data[0x15] & 0x80) /* last image */
- break;
-#ifdef PRINT_PCI
- ErrorF("data segment in BIOS: 0x%x, type: 0x%x\n", data_off, type);
-#endif
- i_length = (data[0x10] | (data[0x11] << 8)) << 9;
-#ifdef PRINT_PCI
- ErrorF("data image length: 0x%x, ind: 0x%x\n",
- image_length, indicator);
-#endif
- hostbase += i_length;
- if (xf86ReadDomainMemory(Tag, hostbase, sizeof(tmp), tmp)
- != sizeof(tmp))
- break;
- continue;
- } while ((tmp[0] == 0x55) && (tmp[1] == 0xAA));
- return n;
-}
-
-typedef CARD32 (*ReadProcPtr)(PCITAG, int);
-typedef void (*WriteProcPtr)(PCITAG, int, CARD32);
-
-static int
-HandlePciBios(PCITAG Tag, int basereg,
- int (*func)(PCITAG, CARD8*, ADDRESS, pointer),
- pointer ptr)
-{
- int n, num;
- CARD32 Acc1, Acc2;
- PCITAG *pTag;
- int i;
-
- n = handlePciBIOS(Tag,basereg,func,ptr);
- if (n)
- return n;
-
- num = pciTestMultiDeviceCard(PCI_BUS_FROM_TAG(Tag),
- PCI_DEV_FROM_TAG(Tag),
- PCI_FUNC_FROM_TAG(Tag),&pTag);
-
- if (!num) return 0;
-
-#define PCI_ENA (PCI_CMD_MEM_ENABLE | PCI_CMD_IO_ENABLE)
- Acc1 = pciReadLong(Tag, PCI_CMD_STAT_REG);
- pciWriteLong(Tag, PCI_CMD_STAT_REG, (Acc1 & ~PCI_ENA));
-
- for (i = 0; i < num; i++) {
- Acc2 = pciReadLong(pTag[i], PCI_CMD_STAT_REG);
- pciWriteLong(pTag[i], PCI_CMD_STAT_REG, (Acc2 | PCI_ENA));
-
- n = handlePciBIOS(pTag[i],0,func,ptr);
-
- pciWriteLong(pTag[i], PCI_CMD_STAT_REG, Acc2);
- if (n)
- break;
- }
- pciWriteLong(Tag, PCI_CMD_STAT_REG, Acc1);
- return n;
-}
-
-int
-xf86ReadPciBIOS(unsigned long Offset, PCITAG Tag, int basereg,
- unsigned char *Buf, int Len)
-{
- return xf86ReadPciBIOSByType(Offset, Tag, basereg, Buf, Len, PCI_BIOS_PC);
-}
-
-int
-xf86ReadPciBIOSByType(unsigned long Offset, PCITAG Tag, int basereg,
- unsigned char *Buf, int Len, PciBiosType Type)
-{
-
- readBios rb;
- rb.Offset = Offset;
- rb.Len = Len;
- rb.Buf = Buf;
- rb.BiosType = Type;
-
- return HandlePciBios(Tag, basereg, readPciBios, &rb);
-}
-
-int
-xf86GetAvailablePciBIOSTypes(PCITAG Tag, int basereg, PciBiosType *Buf)
-{
- return HandlePciBios(Tag, basereg, getPciBIOSTypes, (pointer) Buf);
-}
-
-#endif /* INCLUDE_XF86_MAP_PCI_MEM */
-
-#ifdef INCLUDE_XF86_NO_DOMAIN
-
-int
-xf86GetPciDomain(PCITAG Tag)
-{
- return 0;
-}
-
-pointer
-xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag,
- ADDRESS Base, unsigned long Size)
-{
- return xf86MapVidMem(ScreenNum, Flags, Base, Size);
-}
-
-IOADDRESS
-xf86MapDomainIO(int ScreenNum, int Flags, PCITAG Tag,
- IOADDRESS Base, unsigned long Size)
-{
- return Base;
-}
-
-int
-xf86ReadDomainMemory(PCITAG Tag, ADDRESS Base, int Len, unsigned char *Buf)
-{
- int ret, length, rlength;
-
- /* Read in 64kB chunks */
- ret = 0;
- while ((length = Len) > 0) {
- if (length > 0x010000) length = 0x010000;
- rlength = xf86ReadBIOS(Base, 0, Buf, length);
- if (rlength < 0) {
- ret = rlength;
- break;
- }
- ret += rlength;
- if (rlength < length) break;
- Base += rlength;
- Buf += rlength;
- Len -= rlength;
- }
-
- return ret;
-}
-
-#endif /* INCLUDE_XF86_NO_DOMAIN */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Pci.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Pci.h
deleted file mode 100644
index 70293d3f4..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Pci.h
+++ /dev/null
@@ -1,449 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.h,v 1.45 2004/02/02 03:55:31 dawes Exp $ */
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * This file is derived in part from the original xf86_PCI.h that included
- * following copyright message:
- *
- * Copyright 1995 by Robin Cutshaw <robin@XFree86.Org>
- *
- * 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, and that the names of the above listed copyright holder(s)
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. The above listed
- * copyright holder(s) make(s) no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/*
- * This file has the private Pci definitions. The public ones are imported
- * from xf86Pci.h. Drivers should not use this file.
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _PCI_H
-#define _PCI_H 1
-
-#include <X11/Xarch.h>
-#include <X11/Xfuncproto.h>
-#include "xf86Pci.h"
-#include "xf86PciInfo.h"
-
-/*
- * Global Definitions
- */
-#define MAX_PCI_DEVICES 128 /* Max number of devices accomodated */
- /* by xf86scanpci */
-#if defined(sun) && defined(SVR4) && defined(sparc)
-# define MAX_PCI_BUSES 4096 /* Max number of PCI buses */
-#elif defined(__alpha__) && defined (linux)
-# define MAX_PCI_DOMAINS 512
-# define PCI_DOM_MASK 0x01fful
-# define MAX_PCI_BUSES (MAX_PCI_DOMAINS*256) /* 256 per domain */
-#else
-# define MAX_PCI_BUSES 256 /* Max number of PCI buses */
-#endif
-
-#define DEVID(vendor, device) \
- ((CARD32)((PCI_##device << 16) | PCI_##vendor))
-
-#ifndef PCI_DOM_MASK
-# define PCI_DOM_MASK 0x0ffu
-#endif
-#define PCI_DOMBUS_MASK (((PCI_DOM_MASK) << 8) | 0x0ffu)
-
-/*
- * "b" contains an optional domain number.
- */
-#define PCI_MAKE_TAG(b,d,f) ((((b) & (PCI_DOMBUS_MASK)) << 16) | \
- (((d) & 0x00001fu) << 11) | \
- (((f) & 0x000007u) << 8))
-
-#define PCI_MAKE_BUS(d,b) ((((d) & (PCI_DOM_MASK)) << 8) | ((b) & 0xffu))
-
-#define PCI_DOM_FROM_TAG(tag) (((tag) >> 24) & (PCI_DOM_MASK))
-#define PCI_BUS_FROM_TAG(tag) (((tag) >> 16) & (PCI_DOMBUS_MASK))
-#define PCI_DEV_FROM_TAG(tag) (((tag) & 0x0000f800u) >> 11)
-#define PCI_FUNC_FROM_TAG(tag) (((tag) & 0x00000700u) >> 8)
-
-#define PCI_DFN_FROM_TAG(tag) (((tag) & 0x0000ff00u) >> 8)
-#define PCI_BDEV_FROM_TAG(tag) ((tag) & 0x00fff800u)
-
-#define PCI_DOM_FROM_BUS(bus) (((bus) >> 8) & (PCI_DOM_MASK))
-#define PCI_BUS_NO_DOMAIN(bus) ((bus) & 0xffu)
-#define PCI_TAG_NO_DOMAIN(tag) ((tag) & 0x00ffff00u)
-
-/*
- * Macros for bus numbers found in P2P headers.
- */
-#define PCI_PRIMARY_BUS_EXTRACT(x, tag) \
- ((((x) & PCI_PRIMARY_BUS_MASK ) >> 0) | (PCI_DOM_FROM_TAG(tag) << 8))
-#define PCI_SECONDARY_BUS_EXTRACT(x, tag) \
- ((((x) & PCI_SECONDARY_BUS_MASK ) >> 8) | (PCI_DOM_FROM_TAG(tag) << 8))
-#define PCI_SUBORDINATE_BUS_EXTRACT(x, tag) \
- ((((x) & PCI_SUBORDINATE_BUS_MASK) >> 16) | (PCI_DOM_FROM_TAG(tag) << 8))
-
-#define PCI_PRIMARY_BUS_INSERT(x, y) \
- (((x) & ~PCI_PRIMARY_BUS_MASK ) | (((y) & 0xffu) << 0))
-#define PCI_SECONDARY_BUS_INSERT(x, y) \
- (((x) & ~PCI_SECONDARY_BUS_MASK ) | (((y) & 0xffu) << 8))
-#define PCI_SUBORDINATE_BUS_INSERT(x, y) \
- (((x) & ~PCI_SUBORDINATE_BUS_MASK) | (((y) & 0xffu) << 16))
-
-/* Ditto for CardBus bridges */
-#define PCI_CB_PRIMARY_BUS_EXTRACT(x, tag) \
- PCI_PRIMARY_BUS_EXTRACT(x, tag)
-#define PCI_CB_CARDBUS_BUS_EXTRACT(x, tag) \
- PCI_SECONDARY_BUS_EXTRACT(x, tag)
-#define PCI_CB_SUBORDINATE_BUS_EXTRACT(x, tag) \
- PCI_SUBORDINATE_BUS_EXTRACT(x, tag)
-
-#define PCI_CB_PRIMARY_BUS_INSERT(x, tag) \
- PCI_PRIMARY_BUS_INSERT(x, tag)
-#define PCI_CB_CARDBUS_BUS_INSERT(x, tag) \
- PCI_SECONDARY_BUS_INSERT(x, tag)
-#define PCI_CB_SUBORDINATE_BUS_INSERT(x, tag) \
- PCI_SUBORDINATE_BUS_INSERT(x, tag)
-
-#if X_BYTE_ORDER == X_BIG_ENDIAN
-#define PCI_CPU(val) (((val >> 24) & 0x000000ff) | \
- ((val >> 8) & 0x0000ff00) | \
- ((val << 8) & 0x00ff0000) | \
- ((val << 24) & 0xff000000))
-#define PCI_CPU16(val) (((val >> 8) & 0x000000ff) | \
- ((val << 8) & 0x0000ff00))
-#else
-#define PCI_CPU(val) (val)
-#define PCI_CPU16(val) (val)
-#endif
-
-/*
- * Debug Macros/Definitions
- */
-/* #define DEBUGPCI 2 */ /* Disable/enable trace in PCI code */
-
-#if defined(DEBUGPCI)
-
-# define PCITRACE(lvl,printfargs) \
- if (lvl > xf86Verbose) { \
- ErrorF printfargs; \
- }
-
-#else /* !defined(DEBUGPCI) */
-
-# define PCITRACE(lvl,printfargs)
-
-#endif /* !defined(DEBUGPCI) */
-
-/*
- * PCI Config mechanism definitions
- */
-#define PCI_EN 0x80000000
-
-#define PCI_CFGMECH1_ADDRESS_REG 0xCF8
-#define PCI_CFGMECH1_DATA_REG 0xCFC
-
-#define PCI_CFGMECH1_MAXDEV 32
-
-/*
- * Select architecture specific PCI init function
- */
-#if defined(__alpha__)
-# if defined(linux)
-# define ARCH_PCI_INIT axpPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# elif defined(__FreeBSD__) || defined(__OpenBSD__)
-# define ARCH_PCI_INIT freebsdPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# elif defined(__NetBSD__)
-# define ARCH_PCI_INIT netbsdPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# endif
-#elif defined(__arm__)
-# if defined(linux)
-# define ARCH_PCI_INIT linuxPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# endif
-#elif defined(__hppa__)
-# if defined(linux)
-# define ARCH_PCI_INIT linuxPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# endif
-#elif defined(__ia64__)
-# if defined(linux)
-# define ARCH_PCI_INIT linuxPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# elif defined(FreeBSD)
-# define ARCH_PCI_INIT freebsdPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# endif
-# define XF86SCANPCI_WRAPPER ia64ScanPCIWrapper
-#elif defined(__i386__) || defined(i386)
-# define ARCH_PCI_INIT ix86PciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# if defined(linux)
-# define ARCH_PCI_OS_INIT linuxPciInit
-# endif
-#elif defined(__mc68000__)
-# if defined(linux)
-# define ARCH_PCI_INIT linuxPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# endif
-#elif defined(__mips__)
-# if defined(linux)
-# define ARCH_PCI_INIT linuxPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# endif
-#elif defined(__powerpc__) || defined(__powerpc64__)
-# if defined(linux)
-# define ARCH_PCI_INIT linuxPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN /* Needs kernel work to remove */
-# elif defined(__FreeBSD__) || defined(__OpenBSD__)
-# define ARCH_PCI_INIT freebsdPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# elif defined(__NetBSD__)
-# define ARCH_PCI_INIT netbsdPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# elif defined(PowerMAX_OS) /* This port is broken */
-# define ARCH_PCI_INIT ppcPciInit
-# else
-# define ARCH_PCI_INIT ppcPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# endif
-#elif defined(__s390__)
-# if defined(linux)
-# define ARCH_PCI_INIT linuxPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# endif
-#elif defined(__sh__)
-# if defined(linux)
-# define ARCH_PCI_INIT linuxPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# endif
-#elif defined(__sparc__) || defined(sparc)
-# if defined(linux)
-# define ARCH_PCI_INIT linuxPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# elif defined(sun)
-# define ARCH_PCI_INIT sparcPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# elif (defined(__OpenBSD__) || defined(__FreeBSD__)) && defined(__sparc64__)
-# define ARCH_PCI_INIT freebsdPciInit
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# endif
-# if !defined(__FreeBSD__)
-# define ARCH_PCI_PCI_BRIDGE sparcPciPciBridge
-# endif
-#elif defined(__amd64__) || defined(__amd64)
-# if defined(__FreeBSD__)
-# define ARCH_PCI_INIT freebsdPciInit
-# else
-# define ARCH_PCI_INIT ix86PciInit
-# endif
-# define INCLUDE_XF86_MAP_PCI_MEM
-# define INCLUDE_XF86_NO_DOMAIN
-# if defined(linux)
-# define ARCH_PCI_OS_INIT linuxPciInit
-# endif
-#endif
-
-#ifndef ARCH_PCI_INIT
-#error No PCI support available for this architecture/OS combination
-#endif
-
-extern void ARCH_PCI_INIT(void);
-#if defined(ARCH_PCI_OS_INIT)
-extern void ARCH_PCI_OS_INIT(void);
-#endif
-
-#if defined(ARCH_PCI_PCI_BRIDGE)
-extern void ARCH_PCI_PCI_BRIDGE(pciConfigPtr pPCI);
-#endif
-
-#if defined(XF86SCANPCI_WRAPPER)
-typedef enum {
- SCANPCI_INIT,
- SCANPCI_TERM
-} scanpciWrapperOpt;
-extern void XF86SCANPCI_WRAPPER(scanpciWrapperOpt flags);
-#endif
-
-/*
- * Table of functions used to access a specific PCI bus domain
- * (e.g. a primary PCI bus and all of its secondaries)
- */
-typedef struct pci_bus_funcs {
- CARD32 (*pciReadLong)(PCITAG, int);
- void (*pciWriteLong)(PCITAG, int, CARD32);
- void (*pciSetBitsLong)(PCITAG, int, CARD32, CARD32);
- ADDRESS (*pciAddrHostToBus)(PCITAG, PciAddrType, ADDRESS);
- ADDRESS (*pciAddrBusToHost)(PCITAG, PciAddrType, ADDRESS);
- /*
- * The next three are optional. If NULL, the corresponding function is
- * to be performed generically.
- */
- CARD16 (*pciControlBridge)(int, CARD16, CARD16);
- void (*pciGetBridgeBuses)(int, int *, int *, int *);
- /* Use pointer's to avoid #include recursion */
- void (*pciGetBridgeResources)(int, pointer *, pointer *, pointer *);
-
- /* These are optional and will be implemented using read long
- * if not present. */
- CARD8 (*pciReadByte)(PCITAG, int);
- void (*pciWriteByte)(PCITAG, int, CARD8);
- CARD16 (*pciReadWord)(PCITAG, int);
- void (*pciWriteWord)(PCITAG, int, CARD16);
-
-} pciBusFuncs_t, *pciBusFuncs_p;
-
-/*
- * pciBusInfo_t - One structure per defined PCI bus
- */
-typedef struct pci_bus_info {
- unsigned char configMech; /* PCI config type to use */
- unsigned char numDevices; /* Range of valid devnums */
- unsigned char secondary; /* Boolean: bus is a secondary */
- int primary_bus; /* Parent bus */
-#ifdef PowerMAX_OS
- unsigned long ppc_io_base; /* PowerPC I/O spc membase */
- unsigned long ppc_io_size; /* PowerPC I/O spc size */
-#endif
- pciBusFuncs_p funcs; /* PCI access functions */
- void *pciBusPriv; /* Implementation private data */
- pciConfigPtr bridge; /* bridge that opens this bus */
-} pciBusInfo_t;
-
-#define HOST_NO_BUS ((pciBusInfo_t *)(-1))
-
-/* configMech values */
-#define PCI_CFG_MECH_UNKNOWN 0 /* Not yet known */
-#define PCI_CFG_MECH_1 1 /* Most machines */
-#define PCI_CFG_MECH_2 2 /* Older PC's */
-#define PCI_CFG_MECH_OTHER 3 /* Something else */
-
-/* Generic PCI service functions and helpers */
-PCITAG pciGenFindFirst(void);
-PCITAG pciGenFindNext(void);
-CARD32 pciCfgMech1Read(PCITAG tag, int offset);
-void pciCfgMech1Write(PCITAG tag, int offset, CARD32 val);
-void pciCfgMech1SetBits(PCITAG tag, int offset, CARD32 mask,
- CARD32 val);
-CARD32 pciByteSwap(CARD32);
-Bool pciMfDev(int, int);
-ADDRESS pciAddrNOOP(PCITAG tag, PciAddrType type, ADDRESS);
-
-extern PCITAG (*pciFindFirstFP)(void);
-extern PCITAG (*pciFindNextFP)(void);
-
-extern CARD32 pciDevid;
-extern CARD32 pciDevidMask;
-
-extern int pciMaxBusNum;
-
-extern int pciBusNum;
-extern int pciDevNum;
-extern int pciFuncNum;
-extern PCITAG pciDeviceTag;
-
-extern pciBusInfo_t *pciBusInfo[];
-
-#endif /* _PCI_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Sbus.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Sbus.c
deleted file mode 100644
index 168bc669e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/Sbus.c
+++ /dev/null
@@ -1,637 +0,0 @@
-/*
- * SBUS and OpenPROM access functions.
- *
- * Copyright (C) 2000 Jakub Jelinek (jakub@redhat.com)
- *
- * 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 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 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
- * JAKUB JELINEK 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.
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Sbus.c,v 1.2tsi Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <fcntl.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#ifdef sun
-#include <sys/utsname.h>
-#endif
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include "xf86sbusBus.h"
-#include "xf86Sbus.h"
-
-int promRootNode;
-
-static int promFd = -1;
-static int promCurrentNode;
-static int promOpenCount = 0;
-static int promP1275 = -1;
-#define MAX_PROP 128
-#define MAX_VAL (4096-128-4)
-static struct openpromio *promOpio;
-
-sbusDevicePtr *xf86SbusInfo = NULL;
-
-struct sbus_devtable sbusDeviceTable[] = {
- { SBUS_DEVICE_BW2, FBTYPE_SUN2BW, "bwtwo", "Sun Monochrome (bwtwo)" },
- { SBUS_DEVICE_CG2, FBTYPE_SUN2COLOR, "cgtwo", "Sun Color2 (cgtwo)" },
- { SBUS_DEVICE_CG3, FBTYPE_SUN3COLOR, "cgthree", "Sun Color3 (cgthree)" },
- { SBUS_DEVICE_CG4, FBTYPE_SUN4COLOR, "cgfour", "Sun Color4 (cgfour)" },
- { SBUS_DEVICE_CG6, FBTYPE_SUNFAST_COLOR, "cgsix", "Sun GX" },
- { SBUS_DEVICE_CG8, FBTYPE_MEMCOLOR, "cgeight", "Sun CG8/RasterOps" },
- { SBUS_DEVICE_CG12, FBTYPE_SUNGP3, "cgtwelve", "Sun GS (cgtwelve)" },
- { SBUS_DEVICE_CG14, FBTYPE_MDICOLOR, "cgfourteen", "Sun SX" },
- { SBUS_DEVICE_GT, FBTYPE_SUNGT, "gt", "Sun Graphics Tower" },
- { SBUS_DEVICE_MGX, -1, "mgx", "Quantum 3D MGXplus" },
- { SBUS_DEVICE_LEO, FBTYPE_SUNLEO, "leo", "Sun ZX or Turbo ZX" },
- { SBUS_DEVICE_TCX, FBTYPE_TCXCOLOR, "tcx", "Sun TCX" },
- { SBUS_DEVICE_FFB, FBTYPE_CREATOR, "ffb", "Sun FFB" },
- { SBUS_DEVICE_FFB, FBTYPE_CREATOR, "afb", "Sun Elite3D" },
- { 0, 0, NULL }
-};
-
-int
-promGetSibling(int node)
-{
- promOpio->oprom_size = sizeof(int);
-
- if (node == -1) return 0;
- *(int *)promOpio->oprom_array = node;
- if (ioctl(promFd, OPROMNEXT, promOpio) < 0)
- return 0;
- promCurrentNode = *(int *)promOpio->oprom_array;
- return *(int *)promOpio->oprom_array;
-}
-
-int
-promGetChild(int node)
-{
- promOpio->oprom_size = sizeof(int);
-
- if (!node || node == -1) return 0;
- *(int *)promOpio->oprom_array = node;
- if (ioctl(promFd, OPROMCHILD, promOpio) < 0)
- return 0;
- promCurrentNode = *(int *)promOpio->oprom_array;
- return *(int *)promOpio->oprom_array;
-}
-
-char *
-promGetProperty(const char *prop, int *lenp)
-{
- promOpio->oprom_size = MAX_VAL;
-
- strcpy(promOpio->oprom_array, prop);
- if (ioctl(promFd, OPROMGETPROP, promOpio) < 0)
- return 0;
- if (lenp) *lenp = promOpio->oprom_size;
- return promOpio->oprom_array;
-}
-
-int
-promGetBool(const char *prop)
-{
- promOpio->oprom_size = 0;
-
- *(int *)promOpio->oprom_array = 0;
- for (;;) {
- promOpio->oprom_size = MAX_PROP;
- if (ioctl(promFd, OPROMNXTPROP, promOpio) < 0)
- return 0;
- if (!promOpio->oprom_size)
- return 0;
- if (!strcmp(promOpio->oprom_array, prop))
- return 1;
- }
-}
-
-#define PROM_NODE_SIBLING 0x01
-#define PROM_NODE_PREF 0x02
-#define PROM_NODE_SBUS 0x04
-#define PROM_NODE_EBUS 0x08
-#define PROM_NODE_PCI 0x10
-
-static int
-promSetNode(sbusPromNodePtr pnode)
-{
- int node;
-
- if (!pnode->node || pnode->node == -1)
- return -1;
- if (pnode->cookie[0] & PROM_NODE_SIBLING)
- node = promGetSibling(pnode->cookie[1]);
- else
- node = promGetChild(pnode->cookie[1]);
- if (pnode->node != node)
- return -1;
- return 0;
-}
-
-static void
-promIsP1275(void)
-{
-#ifdef linux
- FILE *f;
- char buffer[1024];
-
- if (promP1275 != -1)
- return;
- promP1275 = 0;
- f = fopen("/proc/cpuinfo","r");
- if (!f) return;
- while (fgets(buffer, 1024, f) != NULL)
- if (!strncmp (buffer, "type", 4) && strstr (buffer, "sun4u")) {
- promP1275 = 1;
- break;
- }
- fclose(f);
-#elif defined(sun)
- struct utsname buffer;
-
- if ((uname(&buffer) >= 0) && !strcmp(buffer.machine, "sun4u"))
- promP1275 = TRUE;
- else
- promP1275 = FALSE;
-#elif defined(__FreeBSD__)
- promP1275 = TRUE;
-#else
-#error Missing promIsP1275() function for this OS
-#endif
-}
-
-void
-sparcPromClose(void)
-{
- if (promOpenCount > 1) {
- promOpenCount--;
- return;
- }
- if (promFd != -1) {
- close(promFd);
- promFd = -1;
- }
- if (promOpio) {
- xfree(promOpio);
- promOpio = NULL;
- }
- promOpenCount = 0;
-}
-
-int
-sparcPromInit(void)
-{
- if (promOpenCount) {
- promOpenCount++;
- return 0;
- }
- promFd = open("/dev/openprom", O_RDONLY, 0);
- if (promFd == -1)
- return -1;
- promOpio = (struct openpromio *)xalloc(4096);
- if (!promOpio) {
- sparcPromClose();
- return -1;
- }
- promRootNode = promGetSibling(0);
- if (!promRootNode) {
- sparcPromClose();
- return -1;
- }
- promIsP1275();
- promOpenCount++;
-
- return 0;
-}
-
-char *
-sparcPromGetProperty(sbusPromNodePtr pnode, const char *prop, int *lenp)
-{
- if (promSetNode(pnode))
- return NULL;
- return promGetProperty(prop, lenp);
-}
-
-int
-sparcPromGetBool(sbusPromNodePtr pnode, const char *prop)
-{
- if (promSetNode(pnode))
- return 0;
- return promGetBool(prop);
-}
-
-static void
-promWalkAssignNodes(int node, int oldnode, int flags, sbusDevicePtr *devicePtrs)
-{
- int nextnode;
- int len, sbus = flags & PROM_NODE_SBUS;
- char *prop;
- int devId, i, j;
- sbusPromNode pNode, pNode2;
-
- prop = promGetProperty("device_type", &len);
- if (prop && (len > 0)) do {
- if (!strcmp(prop, "display")) {
- prop = promGetProperty("name", &len);
- if (!prop || len <= 0)
- break;
- while ((*prop >= 'A' && *prop <= 'Z') || *prop == ',')
- prop++;
- for (i = 0; sbusDeviceTable[i].devId; i++)
- if (!strcmp(prop, sbusDeviceTable[i].promName))
- break;
- devId = sbusDeviceTable[i].devId;
- if (!devId)
- break;
- if (!sbus) {
- if (devId == SBUS_DEVICE_FFB) {
- /*
- * All /SUNW,ffb outside of SBUS tree come before all
- * /SUNW,afb outside of SBUS tree in Linux.
- */
- if (!strcmp(prop, "afb"))
- flags |= PROM_NODE_PREF;
- } else if (devId != SBUS_DEVICE_CG14)
- break;
- }
- for (i = 0; i < 32; i++) {
- if (!devicePtrs[i] || devicePtrs[i]->devId != devId)
- continue;
- if (devicePtrs[i]->node.node) {
- if ((devicePtrs[i]->node.cookie[0] & ~PROM_NODE_SIBLING) <=
- (flags & ~PROM_NODE_SIBLING))
- continue;
- for (j = i + 1, pNode = devicePtrs[i]->node; j < 32; j++) {
- if (!devicePtrs[j] || devicePtrs[j]->devId != devId)
- continue;
- pNode2 = devicePtrs[j]->node;
- devicePtrs[j]->node = pNode;
- pNode = pNode2;
- }
- }
- devicePtrs[i]->node.node = node;
- devicePtrs[i]->node.cookie[0] = flags;
- devicePtrs[i]->node.cookie[1] = oldnode;
- break;
- }
- break;
- }
- } while (0);
-
- prop = promGetProperty("name", &len);
- if (prop && len > 0) {
- if (!strcmp(prop, "sbus") || !strcmp(prop, "sbi"))
- sbus = PROM_NODE_SBUS;
- }
-
- nextnode = promGetChild(node);
- if (nextnode)
- promWalkAssignNodes(nextnode, node, sbus, devicePtrs);
-
- nextnode = promGetSibling(node);
- if (nextnode)
- promWalkAssignNodes(nextnode, node, PROM_NODE_SIBLING | sbus, devicePtrs);
-}
-
-void
-sparcPromAssignNodes(void)
-{
- sbusDevicePtr psdp, *psdpp;
- int n, holes = 0, i, j;
- FILE *f;
- sbusDevicePtr devicePtrs[32];
-
- (void)memset(devicePtrs, 0, sizeof(devicePtrs));
- for (psdpp = xf86SbusInfo, n = 0; (psdp = *psdpp); psdpp++, n++) {
- if (psdp->fbNum != n)
- holes = 1;
- devicePtrs[psdp->fbNum] = psdp;
- }
- if (holes && (f = fopen("/proc/fb", "r")) != NULL) {
- /* We could not open one of fb devices, check /proc/fb to see what
- * were the types of the cards missed. */
- char buffer[64];
- int fbNum, devId;
- static struct {
- int devId;
- char *prefix;
- } procFbPrefixes[] = {
- { SBUS_DEVICE_BW2, "BWtwo" },
- { SBUS_DEVICE_CG14, "CGfourteen" },
- { SBUS_DEVICE_CG6, "CGsix" },
- { SBUS_DEVICE_CG3, "CGthree" },
- { SBUS_DEVICE_FFB, "Creator" },
- { SBUS_DEVICE_FFB, "Elite 3D" },
- { SBUS_DEVICE_LEO, "Leo" },
- { SBUS_DEVICE_TCX, "TCX" },
- { 0, NULL },
- };
-
- while (fscanf(f, "%d %63s\n", &fbNum, buffer) == 2) {
- for (i = 0; procFbPrefixes[i].devId; i++)
- if (! strncmp(procFbPrefixes[i].prefix, buffer,
- strlen(procFbPrefixes[i].prefix)))
- break;
- devId = procFbPrefixes[i].devId;
- if (! devId) continue;
- if (devicePtrs[fbNum]) {
- if (devicePtrs[fbNum]->devId != devId)
- xf86ErrorF("Inconsistent /proc/fb with FBIOGATTR\n");
- } else if (!devicePtrs[fbNum]) {
- devicePtrs[fbNum] = psdp = xnfcalloc(sizeof (sbusDevice), 1);
- psdp->devId = devId;
- psdp->fbNum = fbNum;
- psdp->fd = -2;
- }
- }
- fclose(f);
- }
- promGetSibling(0);
- promWalkAssignNodes(promRootNode, 0, PROM_NODE_PREF, devicePtrs);
- for (i = 0, j = 0; i < 32; i++)
- if (devicePtrs[i] && devicePtrs[i]->fbNum == -1)
- j++;
- xf86SbusInfo = xnfrealloc(xf86SbusInfo, sizeof(psdp) * (n + j + 1));
- for (i = 0, psdpp = xf86SbusInfo; i < 32; i++)
- if (devicePtrs[i]) {
- if (devicePtrs[i]->fbNum == -1) {
- memmove(psdpp + 1, psdpp, sizeof(psdpp) * (n + 1));
- *psdpp = devicePtrs[i];
- } else
- n--;
- }
-}
-
-static char *
-promGetReg(int type)
-{
- char *prop;
- int len;
- static char regstr[40];
-
- regstr[0] = 0;
- prop = promGetProperty("reg", &len);
- if (prop && len >= 4) {
- unsigned int *reg = (unsigned int *)prop;
- if (!promP1275 || (type == PROM_NODE_SBUS) || (type == PROM_NODE_EBUS))
- sprintf (regstr, "@%x,%x", reg[0], reg[1]);
- else if (type == PROM_NODE_PCI) {
- if ((reg[0] >> 8) & 7)
- sprintf (regstr, "@%x,%x", (reg[0] >> 11) & 0x1f, (reg[0] >> 8) & 7);
- else
- sprintf (regstr, "@%x", (reg[0] >> 11) & 0x1f);
- } else if (len == 4)
- sprintf (regstr, "@%x", reg[0]);
- else {
- unsigned int regs[2];
-
- /* Things get more complicated on UPA. If upa-portid exists,
- then address is @upa-portid,second-int-in-reg, otherwise
- it is @first-int-in-reg/16,second-int-in-reg (well, probably
- upa-portid always exists, but just to be safe). */
- memcpy (regs, reg, sizeof(regs));
- prop = promGetProperty("upa-portid", &len);
- if (prop && len == 4) {
- reg = (unsigned int *)prop;
- sprintf (regstr, "@%x,%x", reg[0], regs[1]);
- } else
- sprintf (regstr, "@%x,%x", regs[0] >> 4, regs[1]);
- }
- }
- return regstr;
-}
-
-static int
-promWalkNode2Pathname(char *path, int parent, int node, int searchNode, int type)
-{
- int nextnode;
- int len, ntype = type;
- char *prop, *p;
-
- prop = promGetProperty("name", &len);
- *path = '/';
- if (!prop || len <= 0)
- return 0;
- if ((!strcmp(prop, "sbus") || !strcmp(prop, "sbi")) && !type)
- ntype = PROM_NODE_SBUS;
- else if (!strcmp(prop, "ebus") && type == PROM_NODE_PCI)
- ntype = PROM_NODE_EBUS;
- else if (!strcmp(prop, "pci") && !type)
- ntype = PROM_NODE_PCI;
- strcpy (path + 1, prop);
- p = promGetReg(type);
- if (*p)
- strcat (path, p);
- if (node == searchNode)
- return 1;
- nextnode = promGetChild(node);
- if (nextnode &&
- promWalkNode2Pathname(strchr(path, 0), node, nextnode, searchNode, ntype))
- return 1;
- nextnode = promGetSibling(node);
- if (nextnode &&
- promWalkNode2Pathname(path, parent, nextnode, searchNode, type))
- return 1;
- return 0;
-}
-
-char *
-sparcPromNode2Pathname(sbusPromNodePtr pnode)
-{
- char *ret;
-
- if (!pnode->node) return NULL;
- ret = xalloc(4096);
- if (!ret) return NULL;
- if (promWalkNode2Pathname(ret, promRootNode, promGetChild(promRootNode), pnode->node, 0))
- return ret;
- xfree(ret);
- return NULL;
-}
-
-static int
-promWalkPathname2Node(char *name, char *regstr, int parent, int type)
-{
- int len, node, ret;
- char *prop, *p;
-
- for (;;) {
- prop = promGetProperty("name", &len);
- if (!prop || len <= 0)
- return 0;
- if ((!strcmp(prop, "sbus") || !strcmp(prop, "sbi")) && !type)
- type = PROM_NODE_SBUS;
- else if (!strcmp(prop, "ebus") && type == PROM_NODE_PCI)
- type = PROM_NODE_EBUS;
- else if (!strcmp(prop, "pci") && !type)
- type = PROM_NODE_PCI;
- for (node = promGetChild(parent); node; node = promGetSibling(node)) {
- prop = promGetProperty("name", &len);
- if (!prop || len <= 0)
- continue;
- if (*name && strcmp(name, prop))
- continue;
- if (*regstr) {
- p = promGetReg(type);
- if (! *p || strcmp(p + 1, regstr))
- continue;
- }
- break;
- }
- if (!node) {
- for (node = promGetChild(parent); node; node = promGetSibling(node)) {
- ret = promWalkPathname2Node(name, regstr, node, type);
- if (ret) return ret;
- }
- return 0;
- }
- name = strchr(regstr, 0) + 1;
- if (! *name)
- return node;
- p = strchr(name, '/');
- if (p)
- *p = 0;
- else
- p = strchr(name, 0);
- regstr = strchr(name, '@');
- if (regstr)
- *regstr++ = 0;
- else
- regstr = p;
- if (name == regstr)
- return 0;
- parent = node;
- }
-}
-
-int
-sparcPromPathname2Node(const char *pathName)
-{
- int i;
- char *name, *regstr, *p;
-
- i = strlen(pathName);
- name = xalloc(i + 2);
- if (! name) return 0;
- strcpy (name, pathName);
- name [i + 1] = 0;
- if (name[0] != '/')
- return 0;
- p = strchr(name + 1, '/');
- if (p)
- *p = 0;
- else
- p = strchr(name, 0);
- regstr = strchr(name, '@');
- if (regstr)
- *regstr++ = 0;
- else
- regstr = p;
- if (name + 1 == regstr)
- return 0;
- promGetSibling(0);
- i = promWalkPathname2Node(name + 1, regstr, promRootNode, 0);
- xfree(name);
- return i;
-}
-
-pointer
-xf86MapSbusMem(sbusDevicePtr psdp, unsigned long offset, unsigned long size)
-{
- pointer ret;
- unsigned long pagemask = xf86getpagesize() - 1;
- unsigned long off = offset & ~pagemask;
- unsigned long len = ((offset + size + pagemask) & ~pagemask) - off;
-
- if (psdp->fd == -1) {
- psdp->fd = open(psdp->device, O_RDWR);
- if (psdp->fd == -1)
- return NULL;
- } else if (psdp->fd < 0)
- return NULL;
-
- ret = (pointer) mmap (NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE,
- psdp->fd, off);
- if (ret == (pointer) -1) {
- ret = (pointer) mmap (NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED,
- psdp->fd, off);
- }
- if (ret == (pointer) -1)
- return NULL;
-
- return (char *)ret + (offset - off);
-}
-
-void
-xf86UnmapSbusMem(sbusDevicePtr psdp, pointer addr, unsigned long size)
-{
- unsigned long mask = xf86getpagesize() - 1;
- unsigned long base = (unsigned long)addr & ~mask;
- unsigned long len = (((unsigned long)addr + size + mask) & ~mask) - base;
-
- munmap ((pointer)base, len);
-}
-
-/* Tell OS that we are driving the HW cursor ourselves. */
-void
-xf86SbusHideOsHwCursor(sbusDevicePtr psdp)
-{
- struct fbcursor fbcursor;
- unsigned char zeros[8];
-
- memset(&fbcursor, 0, sizeof(fbcursor));
- memset(&zeros, 0, sizeof(zeros));
- fbcursor.cmap.count = 2;
- fbcursor.cmap.red = zeros;
- fbcursor.cmap.green = zeros;
- fbcursor.cmap.blue = zeros;
- fbcursor.image = (char *)zeros;
- fbcursor.mask = (char *)zeros;
- fbcursor.size.x = 32;
- fbcursor.size.y = 1;
- fbcursor.set = FB_CUR_SETALL;
- ioctl(psdp->fd, FBIOSCURSOR, &fbcursor);
-}
-
-/* Set HW cursor colormap. */
-void
-xf86SbusSetOsHwCursorCmap(sbusDevicePtr psdp, int bg, int fg)
-{
- struct fbcursor fbcursor;
- unsigned char red[2], green[2], blue[2];
-
- memset(&fbcursor, 0, sizeof(fbcursor));
- red[0] = bg >> 16;
- green[0] = bg >> 8;
- blue[0] = bg;
- red[1] = fg >> 16;
- green[1] = fg >> 8;
- blue[1] = fg;
- fbcursor.cmap.count = 2;
- fbcursor.cmap.red = red;
- fbcursor.cmap.green = green;
- fbcursor.cmap.blue = blue;
- fbcursor.set = FB_CUR_SETCMAP;
- ioctl(psdp->fd, FBIOSCURSOR, &fbcursor);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/altixPCI.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/altixPCI.c
deleted file mode 100644
index 010f6619a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/altixPCI.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * This file contains the glue necessary for support of SGI's Altix chipset.
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include <unistd.h>
-#include "altixPCI.h"
-#include "xf86.h"
-#include "Pci.h"
-
-/*
- * get_dev_on_bus - Return the first device we find on segnum, busnum
- *
- * Walk all the PCI devices and return the first one found on segnum, busnum.
- * There may be a better way to do this in some xf86* function I don't know
- * about.
- */
-static pciDevice *get_dev_on_bus(unsigned int segnum, unsigned int busnum)
-{
- pciDevice **pdev = xf86scanpci(0);
- int i;
-
- for (i = 0; pdev[i] != NULL; i++)
- if (PCI_DOM_FROM_TAG(pdev[i]->tag) == segnum &&
- pdev[i]->busnum == busnum)
- return pdev[i];
- /* Should never get here... */
- ErrorF("No PCI device found on %04x:%02x??", segnum, busnum);
- return NULL;
-}
-
-/*
- * get_bridge_info - fill in the bridge info for bus_info based on pdev
- *
- * Find the parent bus for pdev if it exists, otherwise assume pdev *is*
- * the parent bus. We need this on Altix because our bridges are transparent.
- */
-static void get_bridge_info(pciBusInfo_t *bus_info, pciDevice *pdev)
-{
- unsigned int parent_segnum, segnum = PCI_DOM_FROM_TAG(pdev->tag);
- unsigned int parent_busnum, busnum = pdev->busnum;
- char bridge_path[] = "/sys/class/pci_bus/0000:00/bridge";
- char bridge_target[] = "../../../devices/pci0000:00";
-
- /* Path to this device's bridge */
- sprintf(bridge_path, "/sys/class/pci_bus/%04x:%02x/bridge", segnum,
- busnum);
-
- if (readlink(bridge_path, bridge_target, strlen(bridge_target)) < 0) {
- perror("failed to dereference bridge link");
- ErrorF("failed to dereference bridge link, aborting\n");
- exit(-1);
- }
-
- sscanf(bridge_target, "../../../devices/pci%04x:%02x", &parent_segnum,
- &parent_busnum);
-
- /*
- * If there's no bridge or the bridge points to the device, use
- * pdev as the bridge
- */
- if (segnum == parent_segnum && busnum == parent_busnum) {
- bus_info->bridge = pdev;
- bus_info->secondary = FALSE;
- bus_info->primary_bus = busnum;
- } else {
- bus_info->bridge = get_dev_on_bus(parent_segnum,
- parent_busnum);
- bus_info->secondary = TRUE;
- bus_info->primary_bus = parent_busnum;
- }
- pdev->businfo = bus_info;
- pdev->pci_base_class = PCI_CLASS_DISPLAY;
- pdev->pci_sub_class = PCI_SUBCLASS_PREHISTORIC_VGA;
-}
-
-void xf86PreScanAltix(void)
-{
- /* Nothing to see here... */
-}
-
-void xf86PostScanAltix(void)
-{
- pciConfigPtr *pdev;
- pciBusInfo_t *bus_info;
- int prevBusNum, curBusNum, idx;
-
- /*
- * Altix PCI bridges are invisible to userspace, so we make each device
- * look like it's its own bridge unless it actually has a parent (as in
- * the case of PCI to PCI bridges).
- */
- bus_info = pciBusInfo[0];
- pdev = xf86scanpci(0);
- prevBusNum = curBusNum = pdev[0]->busnum;
- bus_info = pciBusInfo[curBusNum];
- bus_info->bridge = pdev[0];
- bus_info->secondary = FALSE;
- bus_info->primary_bus = curBusNum;
-
- /* Walk all the PCI devices, assigning their bridge info */
- for (idx = 0; pdev[idx] != NULL; idx++) {
- if (pdev[idx]->busnum == prevBusNum)
- continue; /* Already fixed up this bus */
-
- curBusNum = pdev[idx]->busnum;
- bus_info = pciBusInfo[curBusNum];
-
- /*
- * Fill in bus_info for pdev. The bridge field will either
- * be pdev[idx] or a device on the parent bus.
- */
- get_bridge_info(bus_info, pdev[idx]);
- prevBusNum = curBusNum;
- }
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/altixPCI.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/altixPCI.h
deleted file mode 100644
index 2a738f362..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/altixPCI.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef PCI_ALTIX_H
-#define PCI_ALTIX_H 1
-
-#include <X11/Xdefs.h>
-#include <Pci.h>
-
-Bool xorgProbeAltix(scanpciWrapperOpt flags);
-void xf86PreScanAltix(void);
-void xf86PostScanAltix(void);
-
-/* Some defines for PCI */
-#define VENDOR_SGI 0x10A9
-#define CHIP_TIO_CA 0x1010
-#define CHIP_PIC_PCI 0x1011
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/axpPci.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/axpPci.c
deleted file mode 100644
index 08c7fbd39..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/axpPci.c
+++ /dev/null
@@ -1,478 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/axpPci.c,v 1.14 2002/12/11 02:44:28 dawes Exp $ */
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include "compiler.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "Pci.h"
-
-#include <asm/unistd.h>
-#include "../linux/lnx.h" /* for _iobase */
-
-/*
- * Alpha/Linux platform specific PCI access functions
- */
-static CARD32 axpPciCfgRead(PCITAG tag, int off);
-static void axpPciCfgWrite(PCITAG, int off, CARD32 val);
-static void axpPciCfgSetBits(PCITAG tag, int off, CARD32 mask, CARD32 bits);
-
-static pciBusFuncs_t axpFuncs0 = {
-/* pciReadLong */ axpPciCfgRead,
-/* pciWriteLong */ axpPciCfgWrite,
-/* pciSetBitsLong */ axpPciCfgSetBits,
-/* pciAddrHostToBus */ pciAddrNOOP,
-/* pciAddrBusToHost */ pciAddrNOOP
-};
-
-typedef struct _axpDomainRec {
- int domain, hose;
- int root_bus;
- unsigned long dense_io, sparse_io;
- unsigned long dense_mem, sparse_mem;
- IOADDRESS mapped_io;
-} axpDomainRec, *axpDomainPtr;
-
-#define MAX_DOMAINS (MAX_PCI_BUSES / 256)
-static axpDomainPtr xf86DomainInfo[MAX_DOMAINS] = { NULL, };
-static int pciNumDomains = 0;
-
-/*
- * For debug, domain assignment can start downward from a fixed base
- * (instead of up from 0) by defining FORCE_HIGH_DOMAINS. This allows
- * debug of large domain numbers and sparse domain numbering on systems
- * which don't have as many hoses.
- */
-#if 0
-# define FORCE_HIGH_DOMAINS MAX_DOMAINS /* assign domains downward from here */
-#endif
-
-/*
- * If FORCE_HIGH_DOMAINS is set, make sure it's not larger than the
- * max domain
- */
-#if defined(FORCE_HIGH_DOMAINS) && (FORCE_HIGH_DOMAINS > MAX_DOMAINS)
-# undef FORCE_HIGH_DOMAINS
-# define FORCE_HIGH_DOMAINS MAX_DOMAINS
-#endif
-
-static int
-axpSetupDomains(void)
-{
- axpDomainRec axpDomain;
- int numDomains = 0;
- int hose;
-
-#ifndef INCLUDE_XF86_NO_DOMAIN
-
-#ifdef FORCE_HIGH_DOMAINS
- xf86Msg(X_WARNING,
- "DEBUG OPTION FORCE_HIGH_DOMAINS in use - DRI will *NOT* work\n");
- numDomains = FORCE_HIGH_DOMAINS;
-#endif
-
- /*
- * Since each hose has a different address space, hoses are a perfect
- * overlay for domains, so set up one domain for each hose present
- * in the system. We have to loop through all possible hoses because
- * some systems allow sparse I/O controllers.
- */
- for(hose = 0; hose < MAX_DOMAINS; hose++) {
- axpDomain.root_bus = _iobase(IOBASE_ROOT_BUS, hose, -1, -1);
- if (axpDomain.root_bus < 0) continue;
-
- axpDomain.hose = hose;
-
-#ifndef FORCE_HIGH_DOMAINS
-
- axpDomain.domain = axpDomain.hose = hose;
- numDomains = axpDomain.domain + 1;
-
-#else /* FORCE_HIGH_DOMAINS */
-
- axpDomain.domain = numDomains - hose - 1;
-
- xf86Msg(X_WARNING,
- "FORCE_HIGH_DOMAINS - assigned hose %d to domain %d\n",
- axpDomain.hose, axpDomain.domain);
-
-#endif /* FORCE_HIGH_DOMAINS */
-
- axpDomain.dense_io = _iobase(IOBASE_DENSE_IO, hose, -1, -1);
- axpDomain.sparse_io = _iobase(IOBASE_SPARSE_IO, hose, -1, -1);
- axpDomain.mapped_io = 0;
- axpDomain.dense_mem = _iobase(IOBASE_DENSE_MEM, hose, -1, -1);
- axpDomain.sparse_mem = _iobase(IOBASE_SPARSE_MEM, hose, -1, -1);
-
- xf86DomainInfo[axpDomain.domain] = xnfalloc(sizeof(axpDomainRec));
- *(xf86DomainInfo[axpDomain.domain]) = axpDomain;
-
- /*
- * For now, only allow a single domain (hose) on sparse i/o systems.
- *
- * Allowing multiple domains on sparse systems would require:
- * 1) either
- * a) revamping the sparse video mapping code to allow
- * for multiple unrelated address regions
- * -- OR --
- * b) implementing sparse mapping directly in
- * xf86MapDomainMemory
- * 2) revaming read/write sparse routines to correctly handle
- * the solution to 1)
- * 3) implementing a sparse I/O system (mapping, inX/outX)
- * independent of glibc, since the glibc version only
- * supports hose 0
- */
- if (axpDomain.sparse_io) {
- if (_iobase(IOBASE_ROOT_BUS, hose + 1, -1, -1) >= 0) {
- /*
- * It's a sparse i/o system with (at least) one more hose,
- * show a message indicating that video is constrained to
- * hose 0
- */
- xf86Msg(X_INFO,
- "Sparse I/O system - constraining video to hose 0\n");
- }
- break;
- }
- }
-
-#else /* INCLUDE_XF86_NO_DOMAIN */
-
- /*
- * domain support is not included, so just set up a single domain (0)
- * to represent the first hose so that axpPciInit will still have
- * be able to set up the root bus
- */
- xf86DomainInfo[0] = xnfalloc(sizeof(axpDomainRec));
- *(xf86DomainInfo[0]) = axpDomain;
- numDomains = 1;
-
-#endif /* INCLUDE_XF86_NO_DOMAIN */
-
- return numDomains;
-}
-
-void
-axpPciInit()
-{
- axpDomainPtr pDomain;
- int domain, bus;
-
- pciNumDomains = axpSetupDomains();
-
- for(domain = 0; domain < pciNumDomains; domain++) {
- if (!(pDomain = xf86DomainInfo[domain])) continue;
-
- /*
- * Since any bridged buses will be behind a probed pci-pci bridge,
- * only set up the root bus for each domain (hose) and the bridged
- * buses will be set up as they are found.
- */
- bus = PCI_MAKE_BUS(domain, 0);
- pciBusInfo[bus] = xnfalloc(sizeof(pciBusInfo_t));
- (void)memset(pciBusInfo[bus], 0, sizeof(pciBusInfo_t));
-
- pciBusInfo[bus]->configMech = PCI_CFG_MECH_OTHER;
- pciBusInfo[bus]->numDevices = 32;
- pciBusInfo[bus]->funcs = &axpFuncs0;
- pciBusInfo[bus]->pciBusPriv = pDomain;
-
- pciNumBuses = bus + 1;
- }
-
- pciFindFirstFP = pciGenFindFirst;
- pciFindNextFP = pciGenFindNext;
-}
-
-/*
- * Alpha/Linux PCI configuration space access routines
- */
-static int
-axpPciBusFromTag(PCITAG tag)
-{
- pciBusInfo_t *pBusInfo;
- axpDomainPtr pDomain;
- int bus, dfn;
-
- bus = PCI_BUS_FROM_TAG(tag);
- if ((bus >= pciNumBuses)
- || !(pBusInfo = pciBusInfo[bus])
- || !(pDomain = pBusInfo->pciBusPriv)
- || (pDomain->domain != PCI_DOM_FROM_TAG(tag))) return -1;
-
- bus = PCI_BUS_NO_DOMAIN(bus) + pDomain->root_bus;
- dfn = PCI_DFN_FROM_TAG(tag);
- if (_iobase(IOBASE_HOSE, -1, bus, dfn) != pDomain->hose) return -1;
-
- return bus;
-}
-
-static CARD32
-axpPciCfgRead(PCITAG tag, int off)
-{
- int bus, dfn;
- CARD32 val = 0xffffffff;
-
- if ((bus = axpPciBusFromTag(tag)) >= 0) {
- dfn = PCI_DFN_FROM_TAG(tag);
-
- syscall(__NR_pciconfig_read, bus, dfn, off, 4, &val);
- }
- return(val);
-}
-
-static void
-axpPciCfgWrite(PCITAG tag, int off, CARD32 val)
-{
- int bus, dfn;
-
- if ((bus = axpPciBusFromTag(tag)) >= 0) {
- dfn = PCI_DFN_FROM_TAG(tag);
- syscall(__NR_pciconfig_write, bus, dfn, off, 4, &val);
- }
-}
-
-static void
-axpPciCfgSetBits(PCITAG tag, int off, CARD32 mask, CARD32 bits)
-{
- int bus, dfn;
- CARD32 val = 0xffffffff;
-
- if ((bus = axpPciBusFromTag(tag)) >= 0) {
- dfn = PCI_DFN_FROM_TAG(tag);
-
- syscall(__NR_pciconfig_read, bus, dfn, off, 4, &val);
- val = (val & ~mask) | (bits & mask);
- syscall(__NR_pciconfig_write, bus, dfn, off, 4, &val);
- }
-}
-
-#ifndef INCLUDE_XF86_NO_DOMAIN
-
-/*
- * Alpha/Linux addressing domain support
- */
-
-int
-xf86GetPciDomain(PCITAG Tag)
-{
- return PCI_DOM_FROM_TAG(Tag);
-}
-
-pointer
-xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag,
- ADDRESS Base, unsigned long Size)
-{
- axpDomainPtr pDomain;
- int domain = PCI_DOM_FROM_TAG(Tag);
-
- if ((domain < 0) || (domain >= pciNumDomains) ||
- !(pDomain = xf86DomainInfo[domain]))
- FatalError("%s called with invalid parameters\n", __FUNCTION__);
-
- /*
- * xf86MapVidMem already does what we need, but remember to subtract
- * _bus_base() (the physical dense memory root of hose 0) since
- * xf86MapVidMem is expecting an offset relative to _bus_base() rather
- * than an actual physical address.
- */
- return xf86MapVidMem(ScreenNum, Flags,
- pDomain->dense_mem + Base - _bus_base(), Size);
-}
-
-IOADDRESS
-xf86MapDomainIO(int ScreenNum, int Flags, PCITAG Tag,
- IOADDRESS Base, unsigned long Size)
-{
- axpDomainPtr pDomain;
- int domain = PCI_DOM_FROM_TAG(Tag);
-
- if ((domain < 0) || (domain >= pciNumDomains) ||
- !(pDomain = xf86DomainInfo[domain]))
- FatalError("%s called with invalid parameters\n", __FUNCTION__);
-
- /*
- * Use glibc inx/outx routines for sparse I/O, so just return the
- * base [this is ok since we also constrain sparse I/O systems to
- * a single domain in axpSetupDomains()]
- */
- if (pDomain->sparse_io) return Base;
-
- /*
- * I/O addresses on Alpha are really just different physical memory
- * addresses that the system corelogic turns into I/O commands on the
- * bus, so just use xf86MapVidMem to map I/O as well, but remember
- * to subtract _bus_base() (the physical dense memory root of hose 0)
- * since xf86MapVidMem is expecting an offset relative to _bus_base()
- * rather than an actual physical address.
- *
- * Map the entire I/O space (64kB) at once and only once.
- */
- if (!pDomain->mapped_io)
- pDomain->mapped_io = (IOADDRESS)xf86MapVidMem(ScreenNum, Flags,
- pDomain->dense_io - _bus_base(),
- 0x10000);
-
- return pDomain->mapped_io + Base;
-}
-
-int
-xf86ReadDomainMemory(PCITAG Tag, ADDRESS Base, int Len, unsigned char *Buf)
-{
- static unsigned long pagemask = 0;
- unsigned char *MappedAddr;
- unsigned long MapSize;
- ADDRESS MapBase;
- int i;
-
- if (!pagemask) pagemask = xf86getpagesize() - 1;
-
- /* Ensure page boundaries */
- MapBase = Base & ~pagemask;
- MapSize = ((Base + Len + pagemask) & ~pagemask) - MapBase;
-
- /*
- * VIDMEM_MMIO in order to get sparse mapping on sparse memory systems
- * so we can use mmio functions to read (that way we can really get byte
- * at a time reads on dense memory systems with byte/word instructions.
- */
- MappedAddr = xf86MapDomainMemory(-1, VIDMEM_READONLY | VIDMEM_MMIO,
- Tag, MapBase, MapSize);
-
- for (i = 0; i < Len; i++) {
- *Buf++ = xf86ReadMmio8(MappedAddr, Base - MapBase + i);
- }
-
- xf86UnMapVidMem(-1, MappedAddr, MapSize);
- return Len;
-}
-
-resPtr
-xf86PciBusAccWindowsFromOS(void)
-{
- resPtr pRes = NULL;
- resRange range;
- int domain;
-
- for(domain = 0; domain < pciNumDomains; domain++) {
- if (!xf86DomainInfo[domain]) continue;
-
- RANGE(range, 0, 0xffffffffUL,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- RANGE(range, 0, 0x0000ffffUL,
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- }
-
- return pRes;
-}
-
-resPtr
-xf86BusAccWindowsFromOS(void)
-{
- return xf86PciBusAccWindowsFromOS();
-}
-
-resPtr
-xf86AccResFromOS(resPtr pRes)
-{
- resRange range;
- int domain;
-
- for(domain = 0; domain < pciNumDomains; domain++) {
- if (!xf86DomainInfo[domain]) continue;
-
- /*
- * Fallback is to claim the following areas:
- *
- * 0x000c0000 - 0x000effff location of VGA and other extensions ROMS
- */
-
- RANGE(range, 0x000c0000, 0x000effff,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- /*
- * Fallback would be to claim well known ports in the 0x0 - 0x3ff
- * range along with their sparse I/O aliases, but that's too
- * imprecise. Instead claim a bare minimum here.
- */
- RANGE(range, 0x00000000, 0x000000ff,
- RANGE_TYPE(ResExcIoBlock, domain)); /* For mainboard */
- pRes = xf86AddResToList(pRes, &range, -1);
-
- /*
- * At minimum, the top and bottom resources must be claimed, so that
- * resources that are (or appear to be) unallocated can be relocated.
- */
- RANGE(range, 0x00000000, 0x00000000,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- RANGE(range, 0xffffffff, 0xffffffff,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-/* RANGE(range, 0x00000000, 0x00000000,
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1); */
- RANGE(range, 0xffffffff, 0xffffffff,
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- }
-
- return pRes;
-}
-
-#endif /* !INCLUDE_XF86_NO_DOMAIN */
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.c
deleted file mode 100644
index 65b0c0474..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.c,v 1.2 2003/07/17 15:08:22 tsi Exp $ */
-/*
- * Copyright (C) 2002-2003 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-/*
- * This file contains the glue necessary for support of Intel's E8870 chipset.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "e8870PCI.h"
-#include "xf86.h"
-#include "Pci.h"
-
-Bool
-xorgProbeE8870(scanpciWrapperOpt flags)
-{
- PCITAG tag;
-
- /* Look for an E8870's Hub interface */
- tag = PCI_MAKE_TAG(0, 0x1E, 0);
- if (pciReadLong(tag, PCI_ID_REG) == DEVID(VENDOR_INTEL, CHIP_82801_P2P))
- return TRUE;
-
- return FALSE;
-}
-
-void
-xf86PreScanE8870(void)
-{
- /* XXX Fill me in... */
- return;
-}
-
-void
-xf86PostScanE8870(void)
-{
- /* XXX Fill me in... */
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.h
deleted file mode 100644
index 9efa0ed6d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.h,v 1.1 2003/02/23 20:26:49 tsi Exp $ */
-/*
- * Copyright (C) 2002-2003 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef PCI_E8870_H
-#define PCI_E8870_H 1
-
-#include <X11/Xdefs.h>
-#include <Pci.h>
-
-Bool xorgProbeE8870(scanpciWrapperOpt flags);
-void xf86PreScanE8870(void);
-void xf86PostScanE8870(void);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/freebsdPci.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/freebsdPci.c
deleted file mode 100644
index f6d6f8a6d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/freebsdPci.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/freebsdPci.c,v 1.4 2002/07/24 19:06:52 tsi Exp $ */
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include "compiler.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "Pci.h"
-
-#include <sys/pciio.h>
-
-/*
- * freebsd platform specific PCI access functions -- using /dev/pci
- * needs kernel version 2.2.x
- */
-static CARD32 freebsdPciCfgRead(PCITAG tag, int off);
-static void freebsdPciCfgWrite(PCITAG, int off, CARD32 val);
-static void freebsdPciCfgSetBits(PCITAG tag, int off, CARD32 mask, CARD32 bits);
-
-static pciBusFuncs_t freebsdFuncs0 = {
-/* pciReadLong */ freebsdPciCfgRead,
-/* pciWriteLong */ freebsdPciCfgWrite,
-/* pciSetBitsLong */ freebsdPciCfgSetBits,
-/* pciAddrHostToBus */ pciAddrNOOP,
-/* pciAddrBusToHost */ pciAddrNOOP
-};
-
-static pciBusInfo_t freebsdPci0 = {
-/* configMech */ PCI_CFG_MECH_OTHER,
-/* numDevices */ 32,
-/* secondary */ FALSE,
-/* primary_bus */ 0,
-#ifdef PowerMAX_OS
-/* ppc_io_base */ 0,
-/* ppc_io_size */ 0,
-#endif
-/* funcs */ &freebsdFuncs0,
-/* pciBusPriv */ NULL,
-/* bridge */ NULL
-};
-
-#if !defined(__OpenBSD__) && !defined(__FreeBSD__)
-#if X_BYTE_ORDER == X_BIG_ENDIAN
-#ifdef __sparc__
-#ifndef ASI_PL
-#define ASI_PL 0x88
-#endif
-#define PCI_CPU(val) ({ \
-int __ret; \
-__asm__ __volatile__("lduwa [%1] %2, %0" : "=r" (__ret) : "r" (&val), "i" (ASI_PL)); \
-__ret; \
-})
-#else
-#define PCI_CPU(val) (((val >> 24) & 0x000000ff) | \
- ((val >> 8) & 0x0000ff00) | \
- ((val << 8) & 0x00ff0000) | \
- ((val << 24) & 0xff000000))
-#endif
-#else
-#define PCI_CPU(val) (val)
-#endif
-#else /* ! OpenBSD */
-/* OpenBSD has already the bytes in the right order
- for all architectures */
-#define PCI_CPU(val) (val)
-#endif
-
-
-#define BUS(tag) (((tag)>>16)&0xff)
-#define DFN(tag) (((tag)>>8)&0xff)
-
-static int pciFd = -1;
-
-void
-freebsdPciInit()
-{
- pciFd = open("/dev/pci", O_RDWR);
- if (pciFd < 0)
- return;
-
- pciNumBuses = 1;
- pciBusInfo[0] = &freebsdPci0;
- pciFindFirstFP = pciGenFindFirst;
- pciFindNextFP = pciGenFindNext;
-}
-
-static CARD32
-freebsdPciCfgRead(PCITAG tag, int off)
-{
- struct pci_io io;
- int error;
- io.pi_sel.pc_bus = BUS(tag);
- io.pi_sel.pc_dev = DFN(tag) >> 3;
- io.pi_sel.pc_func = DFN(tag) & 7;
- io.pi_reg = off;
- io.pi_width = 4;
- error = ioctl(pciFd, PCIOCREAD, &io);
- if (error)
- return ~0;
- return PCI_CPU(io.pi_data);
-}
-
-static void
-freebsdPciCfgWrite(PCITAG tag, int off, CARD32 val)
-{
- struct pci_io io;
- io.pi_sel.pc_bus = BUS(tag);
- io.pi_sel.pc_dev = DFN(tag) >> 3;
- io.pi_sel.pc_func = DFN(tag) & 7;
- io.pi_reg = off;
- io.pi_width = 4;
- io.pi_data = PCI_CPU(val);
- ioctl(pciFd, PCIOCWRITE, &io);
-}
-
-static void
-freebsdPciCfgSetBits(PCITAG tag, int off, CARD32 mask, CARD32 bits)
-{
- CARD32 val = freebsdPciCfgRead(tag, off);
- val = (val & ~mask) | (bits & mask);
- freebsdPciCfgWrite(tag, off, val);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/ix86Pci.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/ix86Pci.c
deleted file mode 100644
index 6e2b650d1..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/ix86Pci.c
+++ /dev/null
@@ -1,704 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/ix86Pci.c,v 1.25 2003/09/24 02:43:34 dawes Exp $ */
-/*
- * ix86Pci.c - x86 PCI driver
- *
- * The XFree86 server PCI access functions have been reimplemented as a
- * framework that allows each supported platform/OS to have their own
- * platform/OS specific PCI driver.
- *
- * Most of the code of these functions was simply lifted from the
- * Intel architecture specifric portion of the original Xfree86
- * PCI code in hw/xfree86/common_hw/xf86_PCI.C...
- *
- * Gary Barton
- * Concurrent Computer Corporation
- * garyb@gate.net
- */
-
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * This software is derived from the original XFree86 PCI code
- * which includes the following copyright notices as well:
- *
- * Copyright 1995 by Robin Cutshaw <robin@XFree86.Org>
- *
- * 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, and that the names of the above listed copyright holder(s)
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. The above listed
- * copyright holder(s) make(s) no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * This code is also based heavily on the code in FreeBSD-current, which was
- * written by Wolfgang Stanglmeier, and contains the following copyright:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include "compiler.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "Pci.h"
-
-#ifdef PC98
-#define outb(port,data) _outb(port,data)
-#define outl(port,data) _outl(port,data)
-#define inb(port) _inb(port)
-#define inl(port) _inl(port)
-#endif
-
-#define PCI_CFGMECH2_ENABLE_REG 0xCF8
-#ifdef PC98
-#define PCI_CFGMECH2_FORWARD_REG 0xCF9
-#else
-#define PCI_CFGMECH2_FORWARD_REG 0xCFA
-#endif
-
-#define PCI_CFGMECH2_MAXDEV 16
-
-#define PCI_ADDR_FROM_TAG_CFG1(tag,reg) (PCI_EN | tag | (reg & 0xfc))
-#define PCI_FORWARD_FROM_TAG(tag) PCI_BUS_FROM_TAG(tag)
-#define PCI_ENABLE_FROM_TAG(tag) (0xf0 | (((tag) & 0x00000700) >> 7))
-#define PCI_ADDR_FROM_TAG_CFG2(tag,reg) (0xc000 | (((tag) & 0x0000f800) >> 3) \
- | (reg & 0xfc))
-
-/*
- * Intel x86 platform specific PCI access functions
- */
-static CARD32 ix86PciReadLongSetup(PCITAG tag, int off);
-static void ix86PciWriteLongSetup(PCITAG, int off, CARD32 val);
-static void ix86PciSetBitsLongSetup(PCITAG, int off, CARD32 mask, CARD32 val);
-static CARD32 ix86PciReadLongCFG1(PCITAG tag, int off);
-static void ix86PciWriteLongCFG1(PCITAG, int off, CARD32 val);
-static void ix86PciSetBitsLongCFG1(PCITAG, int off, CARD32 mask, CARD32 val);
-static CARD32 ix86PciReadLongCFG2(PCITAG tag, int off);
-static void ix86PciWriteLongCFG2(PCITAG, int off, CARD32 val);
-static void ix86PciSetBitsLongCFG2(PCITAG, int off, CARD32 mask, CARD32 val);
-
-static pciBusFuncs_t ix86Funcs0 = {
-/* pciReadLong */ ix86PciReadLongSetup,
-/* pciWriteLong */ ix86PciWriteLongSetup,
-/* pciSetBitsLong */ ix86PciSetBitsLongSetup,
-/* pciAddrHostToBus */ pciAddrNOOP,
-/* pciAddrBusToHost */ pciAddrNOOP
-};
-
-static pciBusFuncs_t ix86Funcs1 = {
-/* pciReadLong */ ix86PciReadLongCFG1,
-/* pciWriteLong */ ix86PciWriteLongCFG1,
-/* pciSetBitsLong */ ix86PciSetBitsLongCFG1,
-/* pciAddrHostToBus */ pciAddrNOOP,
-/* pciAddrBusToHost */ pciAddrNOOP
-};
-
-static pciBusFuncs_t ix86Funcs2 = {
-/* pciReadLong */ ix86PciReadLongCFG2,
-/* pciWriteLong */ ix86PciWriteLongCFG2,
-/* pciSetBitsLong */ ix86PciSetBitsLongCFG2,
-/* pciAddrHostToBus */ pciAddrNOOP,
-/* pciAddrBusToHost */ pciAddrNOOP
-};
-
-static pciBusInfo_t ix86Pci0 = {
-/* configMech */ PCI_CFG_MECH_UNKNOWN, /* Set by ix86PciInit() */
-/* numDevices */ 0, /* Set by ix86PciInit() */
-/* secondary */ FALSE,
-/* primary_bus */ 0,
-#ifdef PowerMAX_OS
-/* ppc_io_base */ 0,
-/* ppc_io_size */ 0,
-#endif
-/* funcs */ &ix86Funcs0, /* Set by ix86PciInit() */
-/* pciBusPriv */ NULL,
-/* bridge */ NULL
-};
-
-static Bool
-ix86PciBusCheck(void)
-{
- PCITAG tag;
- CARD32 id, class;
- CARD8 device;
-
- for (device = 0; device < ix86Pci0.numDevices; device++) {
- tag = PCI_MAKE_TAG(0, device, 0);
- id = (*ix86Pci0.funcs->pciReadLong)(tag, PCI_ID_REG);
-
- if ((CARD16)(id + 1U) <= (CARD16)1UL)
- continue;
-
- /* The rest of this is inspired by the Linux kernel */
- class = (*ix86Pci0.funcs->pciReadLong)(tag, PCI_CLASS_REG);
-
- /* Ignore revision id and programming interface */
- switch (class >> 16) {
- case (PCI_CLASS_PREHISTORIC << 8) | PCI_SUBCLASS_PREHISTORIC_MISC:
- /* Check for vendors of known buggy chipsets */
- id &= 0x0000ffff;
- if ((id == PCI_VENDOR_INTEL) || (id == PCI_VENDOR_COMPAQ))
- return TRUE;
- continue;
-
- case (PCI_CLASS_PREHISTORIC << 8) | PCI_SUBCLASS_PREHISTORIC_VGA:
- case (PCI_CLASS_DISPLAY << 8) | PCI_SUBCLASS_DISPLAY_VGA:
- case (PCI_CLASS_BRIDGE << 8) | PCI_SUBCLASS_BRIDGE_HOST:
- return TRUE;
-
- default:
- break;
- }
- }
- return FALSE;
-}
-
-static
-void ix86PciSelectCfgmech(void)
-{
- static Bool beenhere = FALSE;
- CARD32 mode1Res1 = 0, mode1Res2 = 0, oldVal1 = 0;
- CARD8 mode2Res1 = 0, mode2Res2 = 0, oldVal2 = 0;
- int stages = 0;
-
- if (beenhere)
- return; /* Been there, done that */
-
- beenhere = TRUE;
-
- /*
- * Determine if motherboard chipset supports PCI Config Mech 1 or 2
- * We rely on xf86Info.pciFlags to tell which mechanisms to try....
- */
- switch (xf86Info.pciFlags) {
-
- case PCIOsConfig:
-#ifdef ARCH_PCI_OS_INIT
- return;
-#endif
-
- case PCIProbe1:
- if (!xf86EnableIO())
- return;
-
- xf86MsgVerb(X_INFO, 2,
- "PCI: Probing config type using method 1\n");
- oldVal1 = inl(PCI_CFGMECH1_ADDRESS_REG);
-
-#ifdef DEBUGPCI
- if (xf86Verbose > 2) {
- ErrorF("Checking config type 1:\n"
- "\tinitial value of MODE1_ADDR_REG is 0x%08x\n", oldVal1);
- ErrorF("\tChecking that all bits in mask 0x7f000000 are clear\n");
- }
-#endif
-
- /* Assuming config type 1 to start with */
- if ((oldVal1 & 0x7f000000) == 0) {
-
- stages |= 0x01;
-
-#ifdef DEBUGPCI
- if (xf86Verbose > 2) {
- ErrorF("\tValue indicates possibly config type 1\n");
- ErrorF("\tWriting 32-bit value 0x%08x to MODE1_ADDR_REG\n", PCI_EN);
-#if 0
- ErrorF("\tWriting 8-bit value 0x00 to MODE1_ADDR_REG + 3\n");
-#endif
- }
-#endif
-
- ix86Pci0.configMech = PCI_CFG_MECH_1;
- ix86Pci0.numDevices = PCI_CFGMECH1_MAXDEV;
- ix86Pci0.funcs = &ix86Funcs1;
-
- outl(PCI_CFGMECH1_ADDRESS_REG, PCI_EN);
-
-#if 0
- /*
- * This seems to cause some Neptune-based PCI machines to switch
- * from config type 1 to config type 2
- */
- outb(PCI_CFGMECH1_ADDRESS_REG + 3, 0);
-#endif
- mode1Res1 = inl(PCI_CFGMECH1_ADDRESS_REG);
-
-#ifdef DEBUGPCI
- if (xf86Verbose > 2) {
- ErrorF("\tValue read back from MODE1_ADDR_REG is 0x%08x\n",
- mode1Res1);
- ErrorF("\tRestoring original contents of MODE1_ADDR_REG\n");
- }
-#endif
-
- outl(PCI_CFGMECH1_ADDRESS_REG, oldVal1);
-
- if (mode1Res1) {
-
- stages |= 0x02;
-
-#ifdef DEBUGPCI
- if (xf86Verbose > 2) {
- ErrorF("\tValue read back is non-zero, and indicates possible"
- " config type 1\n");
- }
-#endif
-
- if (ix86PciBusCheck()) {
-
-#ifdef DEBUGPCI
- if (xf86Verbose > 2)
- ErrorF("\tBus check Confirms this: ");
-#endif
-
- xf86MsgVerb(X_INFO, 2, "PCI: Config type is 1\n");
- xf86MsgVerb(X_INFO, 3,
- "PCI: stages = 0x%02x, oldVal1 = 0x%08lx, mode1Res1"
- " = 0x%08lx\n", stages, (unsigned long)oldVal1,
- (unsigned long)mode1Res1);
- return;
- }
-
-#ifdef DEBUGPCI
- if (xf86Verbose > 2) {
- ErrorF("\tBus check fails to confirm this, continuing type 1"
- " check ...\n");
- }
-#endif
-
- }
-
- stages |= 0x04;
-
-#ifdef DEBUGPCI
- if (xf86Verbose > 2) {
- ErrorF("\tWriting 0xff000001 to MODE1_ADDR_REG\n");
- }
-#endif
- outl(PCI_CFGMECH1_ADDRESS_REG, 0xff000001);
- mode1Res2 = inl(PCI_CFGMECH1_ADDRESS_REG);
-
-#ifdef DEBUGPCI
- if (xf86Verbose > 2) {
- ErrorF("\tValue read back from MODE1_ADDR_REG is 0x%08x\n",
- mode1Res2);
- ErrorF("\tRestoring original contents of MODE1_ADDR_REG\n");
- }
-#endif
-
- outl(PCI_CFGMECH1_ADDRESS_REG, oldVal1);
-
- if ((mode1Res2 & 0x80000001) == 0x80000000) {
-
- stages |= 0x08;
-
-#ifdef DEBUGPCI
- if (xf86Verbose > 2) {
- ErrorF("\tValue read back has only the msb set\n"
- "\tThis indicates possible config type 1\n");
- }
-#endif
-
- if (ix86PciBusCheck()) {
-
-#ifdef DEBUGPCI
- if (xf86Verbose > 2)
- ErrorF("\tBus check Confirms this: ");
-#endif
-
- xf86MsgVerb(X_INFO, 2, "PCI: Config type is 1\n");
- xf86MsgVerb(X_INFO, 3,
- "PCI: stages = 0x%02x, oldVal1 = 0x%08lx,\n"
- "\tmode1Res1 = 0x%08lx, mode1Res2 = 0x%08lx\n",
- stages, (unsigned long)oldVal1,
- (unsigned long)mode1Res1, (unsigned long)mode1Res2);
- return;
- }
-
-#ifdef DEBUGPCI
- if (xf86Verbose > 2) {
- ErrorF("\tBus check fails to confirm this.\n");
- }
-#endif
-
- }
- }
-
- xf86MsgVerb(X_INFO, 3, "PCI: Standard check for type 1 failed.\n");
- xf86MsgVerb(X_INFO, 3, "PCI: stages = 0x%02x, oldVal1 = 0x%08lx,\n"
- "\tmode1Res1 = 0x%08lx, mode1Res2 = 0x%08lx\n",
- stages, (unsigned long)oldVal1, (unsigned long)mode1Res1,
- (unsigned long)mode1Res2);
-
- /* Try config type 2 */
- oldVal2 = inb(PCI_CFGMECH2_ENABLE_REG);
- if ((oldVal2 & 0xf0) == 0) {
- ix86Pci0.configMech = PCI_CFG_MECH_2;
- ix86Pci0.numDevices = PCI_CFGMECH2_MAXDEV;
- ix86Pci0.funcs = &ix86Funcs2;
-
- outb(PCI_CFGMECH2_ENABLE_REG, 0x0e);
- mode2Res1 = inb(PCI_CFGMECH2_ENABLE_REG);
- outb(PCI_CFGMECH2_ENABLE_REG, oldVal2);
-
- if (mode2Res1 == 0x0e) {
- if (ix86PciBusCheck()) {
- xf86MsgVerb(X_INFO, 2, "PCI: Config type is 2\n");
- return;
- }
- }
- }
- break; /* } */
-
- case PCIProbe2: /* { */
- if (!xf86EnableIO())
- return;
-
- /* The scanpci-style detection method */
-
- xf86MsgVerb(X_INFO, 2, "PCI: Probing config type using method 2\n");
-
- outb(PCI_CFGMECH2_ENABLE_REG, 0x00);
- outb(PCI_CFGMECH2_FORWARD_REG, 0x00);
- mode2Res1 = inb(PCI_CFGMECH2_ENABLE_REG);
- mode2Res2 = inb(PCI_CFGMECH2_FORWARD_REG);
-
- if (mode2Res1 == 0 && mode2Res2 == 0) {
- xf86MsgVerb(X_INFO, 2, "PCI: Config type is 2\n");
- ix86Pci0.configMech = PCI_CFG_MECH_2;
- ix86Pci0.numDevices = PCI_CFGMECH2_MAXDEV;
- ix86Pci0.funcs = &ix86Funcs2;
- return;
- }
-
- oldVal1 = inl(PCI_CFGMECH1_ADDRESS_REG);
- outl(PCI_CFGMECH1_ADDRESS_REG, PCI_EN);
- mode1Res1 = inl(PCI_CFGMECH1_ADDRESS_REG);
- outl(PCI_CFGMECH1_ADDRESS_REG, oldVal1);
- if (mode1Res1 == PCI_EN) {
- xf86MsgVerb(X_INFO, 2, "PCI: Config type is 1\n");
- ix86Pci0.configMech = PCI_CFG_MECH_1;
- ix86Pci0.numDevices = PCI_CFGMECH1_MAXDEV;
- ix86Pci0.funcs = &ix86Funcs1;
- return;
- }
- break; /* } */
-
- case PCIForceConfig1:
- if (!xf86EnableIO())
- return;
-
- xf86MsgVerb(X_INFO, 2, "PCI: Forcing config type 1\n");
-
- ix86Pci0.configMech = PCI_CFG_MECH_1;
- ix86Pci0.numDevices = PCI_CFGMECH1_MAXDEV;
- ix86Pci0.funcs = &ix86Funcs1;
- return;
-
- case PCIForceConfig2:
- if (!xf86EnableIO())
- return;
-
- xf86MsgVerb(X_INFO, 2, "PCI: Forcing config type 2\n");
-
- ix86Pci0.configMech = PCI_CFG_MECH_2;
- ix86Pci0.numDevices = PCI_CFGMECH2_MAXDEV;
- ix86Pci0.funcs = &ix86Funcs2;
- return;
-
- case PCIForceNone:
- break;
- }
-
- /* No PCI found */
- ix86Pci0.configMech = PCI_CFG_MECH_UNKNOWN;
- xf86MsgVerb(X_INFO, 2, "PCI: No PCI bus found or probed for\n");
-}
-
-#if 0
-static pciTagRec
-ix86PcibusTag(CARD8 bus, CARD8 cardnum, CARD8 func)
-{
- pciTagRec tag;
-
- tag.cfg1 = 0;
-
- if (func > 7 || cardnum >= pciBusInfo[bus]->numDevices)
- return tag;
-
- switch (ix86Pci0.configMech) {
- case PCI_CFG_MECH_1:
- tag.cfg1 = PCI_EN | ((CARD32)bus << 16) |
- ((CARD32)cardnum << 11) |
- ((CARD32)func << 8);
- break;
-
- case PCI_CFG_MECH_2:
- tag.cfg2.port = 0xc000 | ((CARD16)cardnum << 8);
- tag.cfg2.enable = 0xf0 | (func << 1);
- tag.cfg2.forward = bus;
- break;
- }
-
- return tag;
-}
-#endif
-
-static CARD32
-ix86PciReadLongSetup(PCITAG Tag, int reg)
-{
- ix86PciSelectCfgmech();
- return (*ix86Pci0.funcs->pciReadLong)(Tag,reg);
-}
-
-static CARD32
-ix86PciReadLongCFG1(PCITAG Tag, int reg)
-{
- CARD32 addr, data = 0;
-
-#ifdef DEBUGPCI
- ErrorF("ix86PciReadLong 0x%lx, %d\n", Tag, reg);
-#endif
-
- addr = PCI_ADDR_FROM_TAG_CFG1(Tag,reg);
- outl(PCI_CFGMECH1_ADDRESS_REG, addr);
- data = inl(PCI_CFGMECH1_DATA_REG);
- outl(PCI_CFGMECH1_ADDRESS_REG, 0);
-
-#ifdef DEBUGPCI
- ErrorF("ix86PciReadLong 0x%lx\n", data);
-#endif
-
- return data;
-}
-
-static CARD32
-ix86PciReadLongCFG2(PCITAG Tag, int reg)
-{
- CARD32 addr, data = 0;
- CARD8 forward, enable;
-
-#ifdef DEBUGPCI
- ErrorF("ix86PciReadLong 0x%lx, %d\n", Tag, reg);
-#endif
-
- forward = PCI_FORWARD_FROM_TAG(Tag);
- enable = PCI_ENABLE_FROM_TAG(Tag);
- addr = PCI_ADDR_FROM_TAG_CFG2(Tag,reg);
-
- outb(PCI_CFGMECH2_ENABLE_REG, enable);
- outb(PCI_CFGMECH2_FORWARD_REG, forward);
- data = inl((CARD16)addr);
- outb(PCI_CFGMECH2_ENABLE_REG, 0);
- outb(PCI_CFGMECH2_FORWARD_REG, 0);
-
-#ifdef DEBUGPCI
- ErrorF("ix86PciReadLong 0x%lx\n", data);
-#endif
-
- return data;
-}
-
-static void
-ix86PciWriteLongSetup(PCITAG Tag, int reg, CARD32 data)
-{
- ix86PciSelectCfgmech();
- (*ix86Pci0.funcs->pciWriteLong)(Tag,reg,data);
-}
-
-static void
-ix86PciWriteLongCFG1(PCITAG Tag, int reg, CARD32 data)
-{
- CARD32 addr;
-
- addr = PCI_ADDR_FROM_TAG_CFG1(Tag,reg);
- outl(PCI_CFGMECH1_ADDRESS_REG, addr);
- outl(PCI_CFGMECH1_DATA_REG, data);
- outl(PCI_CFGMECH1_ADDRESS_REG, 0);
-}
-
-static void
-ix86PciWriteLongCFG2(PCITAG Tag, int reg, CARD32 data)
-{
- CARD32 addr;
- CARD8 forward, enable;
-
- forward = PCI_FORWARD_FROM_TAG(Tag);
- enable = PCI_ENABLE_FROM_TAG(Tag);
- addr = PCI_ADDR_FROM_TAG_CFG2(Tag,reg);
-
- outb(PCI_CFGMECH2_ENABLE_REG, enable);
- outb(PCI_CFGMECH2_FORWARD_REG, forward);
- outl((CARD16)addr, data);
- outb(PCI_CFGMECH2_ENABLE_REG, 0);
- outb(PCI_CFGMECH2_FORWARD_REG, 0);
-}
-
-static void
-ix86PciSetBitsLongSetup(PCITAG Tag, int reg, CARD32 mask, CARD32 val)
-{
- ix86PciSelectCfgmech();
- (*ix86Pci0.funcs->pciSetBitsLong)(Tag,reg,mask,val);
-}
-
-static void
-ix86PciSetBitsLongCFG1(PCITAG Tag, int reg, CARD32 mask, CARD32 val)
-{
- CARD32 addr, data = 0;
-
-#ifdef DEBUGPCI
- ErrorF("ix86PciSetBitsLong 0x%lx, %d\n", Tag, reg);
-#endif
-
- addr = PCI_ADDR_FROM_TAG_CFG1(Tag,reg);
- outl(PCI_CFGMECH1_ADDRESS_REG, addr);
- data = inl(PCI_CFGMECH1_DATA_REG);
- data = (data & ~mask) | (val & mask);
- outl(PCI_CFGMECH1_DATA_REG, data);
- outl(PCI_CFGMECH1_ADDRESS_REG, 0);
-}
-
-static void
-ix86PciSetBitsLongCFG2(PCITAG Tag, int reg, CARD32 mask, CARD32 val)
-{
- CARD32 addr, data = 0;
- CARD8 enable, forward;
-
-#ifdef DEBUGPCI
- ErrorF("ix86PciSetBitsLong 0x%lx, %d\n", Tag, reg);
-#endif
-
- forward = PCI_FORWARD_FROM_TAG(Tag);
- enable = PCI_ENABLE_FROM_TAG(Tag);
- addr = PCI_ADDR_FROM_TAG_CFG2(Tag,reg);
-
- outb(PCI_CFGMECH2_ENABLE_REG, enable);
- outb(PCI_CFGMECH2_FORWARD_REG, forward);
- data = inl((CARD16)addr);
- data = (data & ~mask) | (val & mask);
- outl((CARD16)addr, data);
- outb(PCI_CFGMECH2_ENABLE_REG, 0);
- outb(PCI_CFGMECH2_FORWARD_REG, 0);
-}
-
-void
-ix86PciInit()
-{
- /* Initialize pciBusInfo[] array and function pointers */
- pciNumBuses = 1;
- pciBusInfo[0] = &ix86Pci0;
- pciFindFirstFP = pciGenFindFirst;
- pciFindNextFP = pciGenFindNext;
-
- /* Make sure that there is a PCI bus present. */
- ix86PciSelectCfgmech();
- if (ix86Pci0.configMech == PCI_CFG_MECH_UNKNOWN) {
- pciNumBuses = 0;
- pciBusInfo[0] = NULL;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c
deleted file mode 100644
index 40fb4604b..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c
+++ /dev/null
@@ -1,894 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c,v 1.9 2002/09/24 16:14:16 tsi Exp $ */
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include "compiler.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "Pci.h"
-
-/*
- * linux platform specific PCI access functions -- using /proc/bus/pci
- * needs kernel version 2.2.x
- */
-static CARD32 linuxPciCfgRead(PCITAG tag, int off);
-static void linuxPciCfgWrite(PCITAG, int off, CARD32 val);
-static void linuxPciCfgSetBits(PCITAG tag, int off, CARD32 mask, CARD32 bits);
-static ADDRESS linuxTransAddrBusToHost(PCITAG tag, PciAddrType type, ADDRESS addr);
-#if defined(__powerpc__)
-static ADDRESS linuxPpcBusAddrToHostAddr(PCITAG, PciAddrType, ADDRESS);
-static ADDRESS linuxPpcHostAddrToBusAddr(PCITAG, PciAddrType, ADDRESS);
-#endif
-
-static CARD8 linuxPciCfgReadByte(PCITAG tag, int off);
-static void linuxPciCfgWriteByte(PCITAG tag, int off, CARD8 val);
-static CARD16 linuxPciCfgReadWord(PCITAG tag, int off);
-static void linuxPciCfgWriteWord(PCITAG tag, int off, CARD16 val);
-
-static pciBusFuncs_t linuxFuncs0 = {
-/* pciReadLong */ linuxPciCfgRead,
-/* pciWriteLong */ linuxPciCfgWrite,
-/* pciSetBitsLong */ linuxPciCfgSetBits,
-#if defined(__powerpc__)
-/* pciAddrHostToBus */ linuxPpcHostAddrToBusAddr,
-/* pciAddrBusToHost */ linuxPpcBusAddrToHostAddr,
-#else
-/* pciAddrHostToBus */ pciAddrNOOP,
-/* pciAddrBusToHost */ linuxTransAddrBusToHost,
-#endif
-
-/* pciControlBridge */ NULL,
-/* pciGetBridgeBuses */ NULL,
-/* pciGetBridgeResources */ NULL,
-
-/* pciReadByte */ linuxPciCfgReadByte,
-/* pciWriteByte */ linuxPciCfgWriteByte,
-
-/* pciReadWord */ linuxPciCfgReadWord,
-/* pciWriteWord */ linuxPciCfgWriteWord,
-};
-
-static pciBusInfo_t linuxPci0 = {
-/* configMech */ PCI_CFG_MECH_OTHER,
-/* numDevices */ 32,
-/* secondary */ FALSE,
-/* primary_bus */ 0,
-#ifdef PowerMAX_OS
-/* ppc_io_base */ 0,
-/* ppc_io_size */ 0,
-#endif
-/* funcs */ &linuxFuncs0,
-/* pciBusPriv */ NULL,
-/* bridge */ NULL
-};
-
-void
-linuxPciInit()
-{
- struct stat st;
- if ((xf86Info.pciFlags == PCIForceNone) ||
- (-1 == stat("/proc/bus/pci", &st))) {
- /* when using this as default for all linux architectures,
- we'll need a fallback for 2.0 kernels here */
- return;
- }
- pciNumBuses = 1;
- pciBusInfo[0] = &linuxPci0;
- pciFindFirstFP = pciGenFindFirst;
- pciFindNextFP = pciGenFindNext;
-}
-
-static int
-linuxPciOpenFile(PCITAG tag, Bool write)
-{
- static int lbus,ldev,lfunc,fd = -1,is_write = 0;
- int bus, dev, func;
- char file[32];
- struct stat ignored;
-
- bus = PCI_BUS_FROM_TAG(tag);
- dev = PCI_DEV_FROM_TAG(tag);
- func = PCI_FUNC_FROM_TAG(tag);
- if (fd == -1 || (write && (!is_write))
- || bus != lbus || dev != ldev || func != lfunc) {
- if (fd != -1)
- close(fd);
- if (bus < 256) {
- sprintf(file,"/proc/bus/pci/%02x",bus);
- if (stat(file, &ignored) < 0)
- sprintf(file, "/proc/bus/pci/0000:%02x/%02x.%1x",
- bus, dev, func);
- else
- sprintf(file, "/proc/bus/pci/%02x/%02x.%1x",
- bus, dev, func);
- } else {
- sprintf(file,"/proc/bus/pci/%04x",bus);
- if (stat(file, &ignored) < 0)
- sprintf(file, "/proc/bus/pci/0000:%04x/%02x.%1x",
- bus, dev, func);
- else
- sprintf(file, "/proc/bus/pci/%04x/%02x.%1x",
- bus, dev, func);
- }
- if (write) {
- fd = open(file,O_RDWR);
- if (fd != -1) is_write = TRUE;
- } else switch (is_write) {
- case TRUE:
- fd = open(file,O_RDWR);
- if (fd > -1)
- break;
- default:
- fd = open(file,O_RDONLY);
- is_write = FALSE;
- }
-
- lbus = bus;
- ldev = dev;
- lfunc = func;
- }
- return fd;
-}
-
-static CARD32
-linuxPciCfgRead(PCITAG tag, int off)
-{
- int fd;
- CARD32 val = 0xffffffff;
-
- if (-1 != (fd = linuxPciOpenFile(tag,FALSE))) {
- lseek(fd,off,SEEK_SET);
- read(fd,&val,4);
- }
- return PCI_CPU(val);
-}
-
-static void
-linuxPciCfgWrite(PCITAG tag, int off, CARD32 val)
-{
- int fd;
-
- if (-1 != (fd = linuxPciOpenFile(tag,TRUE))) {
- lseek(fd,off,SEEK_SET);
- val = PCI_CPU(val);
- write(fd,&val,4);
- }
-}
-
-static void
-linuxPciCfgSetBits(PCITAG tag, int off, CARD32 mask, CARD32 bits)
-{
- int fd;
- CARD32 val = 0xffffffff;
-
- if (-1 != (fd = linuxPciOpenFile(tag,TRUE))) {
- lseek(fd,off,SEEK_SET);
- read(fd,&val,4);
- val = PCI_CPU(val);
- val = (val & ~mask) | (bits & mask);
- val = PCI_CPU(val);
- lseek(fd,off,SEEK_SET);
- write(fd,&val,4);
- }
-}
-
-/*
- * This function will convert a BAR address into a host address
- * suitable for passing into the mmap function of a /proc/bus
- * device.
- */
-ADDRESS linuxTransAddrBusToHost(PCITAG tag, PciAddrType type, ADDRESS addr)
-{
- ADDRESS ret = xf86GetOSOffsetFromPCI(tag, PCI_MEM|PCI_IO, addr);
-
- if (ret)
- return ret;
-
- /*
- * if it is not a BAR address, it must be legacy, (or wrong)
- * return it as is..
- */
- return addr;
-}
-
-
-#if defined(__powerpc__)
-
-#ifndef __NR_pciconfig_iobase
-#define __NR_pciconfig_iobase 200
-#endif
-
-static ADDRESS
-linuxPpcBusAddrToHostAddr(PCITAG tag, PciAddrType type, ADDRESS addr)
-{
- if (type == PCI_MEM)
- {
- ADDRESS membase = syscall(__NR_pciconfig_iobase, 1,
- PCI_BUS_FROM_TAG(tag), PCI_DFN_FROM_TAG(tag));
- return (addr + membase);
- }
- else if (type == PCI_IO)
- {
- ADDRESS iobase = syscall(__NR_pciconfig_iobase, 2,
- PCI_BUS_FROM_TAG(tag), PCI_DFN_FROM_TAG(tag));
- return (addr + iobase);
- }
- else return addr;
-}
-
-static ADDRESS
-linuxPpcHostAddrToBusAddr(PCITAG tag, PciAddrType type, ADDRESS addr)
-{
- if (type == PCI_MEM)
- {
- ADDRESS membase = syscall(__NR_pciconfig_iobase, 1,
- PCI_BUS_FROM_TAG(tag), PCI_DFN_FROM_TAG(tag));
- return (addr - membase);
- }
- else if (type == PCI_IO)
- {
- ADDRESS iobase = syscall(__NR_pciconfig_iobase, 2,
- PCI_BUS_FROM_TAG(tag), PCI_DFN_FROM_TAG(tag));
- return (addr - iobase);
- }
- else return addr;
-}
-
-#endif /* __powerpc__ */
-
-static CARD8
-linuxPciCfgReadByte(PCITAG tag, int off)
-{
- int fd;
- CARD8 val = 0xff;
-
- if (-1 != (fd = linuxPciOpenFile(tag,FALSE))) {
- lseek(fd,off,SEEK_SET);
- read(fd,&val,1);
- }
-
- return val;
-}
-
-static void
-linuxPciCfgWriteByte(PCITAG tag, int off, CARD8 val)
-{
- int fd;
-
- if (-1 != (fd = linuxPciOpenFile(tag,TRUE))) {
- lseek(fd,off,SEEK_SET);
- write(fd, &val, 1);
- }
-}
-
-static CARD16
-linuxPciCfgReadWord(PCITAG tag, int off)
-{
- int fd;
- CARD16 val = 0xff;
-
- if (-1 != (fd = linuxPciOpenFile(tag,FALSE))) {
- lseek(fd, off, SEEK_SET);
- read(fd, &val, 2);
- }
-
- return PCI_CPU16(val);
-}
-
-static void
-linuxPciCfgWriteWord(PCITAG tag, int off, CARD16 val)
-{
- int fd;
-
- if (-1 != (fd = linuxPciOpenFile(tag,TRUE))) {
- lseek(fd, off, SEEK_SET);
- val = PCI_CPU16(val);
- write(fd, &val, 2);
- }
-}
-
-#ifndef INCLUDE_XF86_NO_DOMAIN
-
-/*
- * Compiling the following simply requires the presence of <linux/pci.c>.
- * Actually running this is another matter altogether...
- *
- * This scheme requires that the kernel allow mmap()'ing of a host bridge's I/O
- * and memory spaces through its /proc/bus/pci/BUS/DFN entry. Which one is
- * determined by a prior ioctl().
- *
- * For the sparc64 port, this means 2.4.12 or later. For ppc, this
- * functionality is almost, but not quite there yet. Alpha and other kernel
- * ports to multi-domain architectures still need to implement this.
- *
- * This scheme is also predicated on the use of an IOADDRESS compatible type to
- * designate I/O addresses. Although IOADDRESS is defined as an unsigned
- * integral type, it is actually the virtual address of, i.e. a pointer to, the
- * I/O port to access. And so, the inX/outX macros in "compiler.h" need to be
- * #define'd appropriately (as is done on SPARC's).
- *
- * Another requirement to port this scheme to another multi-domain architecture
- * is to add the appropriate entries in the pciControllerSizes array below.
- *
- * TO DO: Address the deleterious reaction some host bridges have to master
- * aborts. This is already done for secondary PCI buses, but not yet
- * for accesses to primary buses (except for the SPARC port, where
- * master aborts are avoided during PCI scans).
- */
-
-#include <linux/pci.h>
-
-#ifndef PCIIOC_BASE /* Ioctls for /proc/bus/pci/X/Y nodes. */
-#define PCIIOC_BASE ('P' << 24 | 'C' << 16 | 'I' << 8)
-
-/* Get controller for PCI device. */
-#define PCIIOC_CONTROLLER (PCIIOC_BASE | 0x00)
-/* Set mmap state to I/O space. */
-#define PCIIOC_MMAP_IS_IO (PCIIOC_BASE | 0x01)
-/* Set mmap state to MEM space. */
-#define PCIIOC_MMAP_IS_MEM (PCIIOC_BASE | 0x02)
-/* Enable/disable write-combining. */
-#define PCIIOC_WRITE_COMBINE (PCIIOC_BASE | 0x03)
-
-#endif
-
-/* This probably shouldn't be Linux-specific */
-static pciConfigPtr
-xf86GetPciHostConfigFromTag(PCITAG Tag)
-{
- int bus = PCI_BUS_FROM_TAG(Tag);
- pciBusInfo_t *pBusInfo;
-
- while ((bus < pciNumBuses) && (pBusInfo = pciBusInfo[bus])) {
- if (bus == pBusInfo->primary_bus)
- return pBusInfo->bridge;
- bus = pBusInfo->primary_bus;
- }
-
- return NULL; /* Bad data */
-}
-
-/*
- * This is ugly, but until I can extract this information from the kernel,
- * it'll have to do. The default I/O space size is 64K, and 4G for memory.
- * Anything else needs to go in this table. (PowerPC folk take note.)
- *
- * Note that Linux/SPARC userland is 32-bit, so 4G overflows to zero here.
- *
- * Please keep this table in ascending vendor/device order.
- */
-static struct pciSizes {
- unsigned short vendor, device;
- unsigned long io_size, mem_size;
-} pciControllerSizes[] = {
- {
- PCI_VENDOR_SUN, PCI_CHIP_PSYCHO,
- 1U << 16, 1U << 31
- },
- {
- PCI_VENDOR_SUN, PCI_CHIP_SCHIZO,
- 1U << 24, 1U << 31 /* ??? */
- },
- {
- PCI_VENDOR_SUN, PCI_CHIP_SABRE,
- 1U << 24, (unsigned long)(1ULL << 32)
- },
- {
- PCI_VENDOR_SUN, PCI_CHIP_HUMMINGBIRD,
- 1U << 24, (unsigned long)(1ULL << 32)
- }
-};
-#define NUM_SIZES (sizeof(pciControllerSizes) / sizeof(pciControllerSizes[0]))
-
-static unsigned long
-linuxGetIOSize(PCITAG Tag)
-{
- pciConfigPtr pPCI;
- int i;
-
- /* Find host bridge */
- if ((pPCI = xf86GetPciHostConfigFromTag(Tag))) {
- /* Look up vendor/device */
- for (i = 0; i < NUM_SIZES; i++) {
- if (pPCI->pci_vendor > pciControllerSizes[i].vendor)
- continue;
- if (pPCI->pci_vendor < pciControllerSizes[i].vendor)
- break;
- if (pPCI->pci_device > pciControllerSizes[i].device)
- continue;
- if (pPCI->pci_device < pciControllerSizes[i].device)
- break;
- return pciControllerSizes[i].io_size;
- }
- }
-
- return 1U << 16; /* Default to 64K */
-}
-
-static void
-linuxGetSizes(PCITAG Tag, unsigned long *io_size, unsigned long *mem_size)
-{
- pciConfigPtr pPCI;
- int i;
-
- *io_size = (1U << 16); /* Default to 64K */
- *mem_size = (unsigned long)(1ULL << 32); /* Default to 4G */
-
- /* Find host bridge */
- if ((pPCI = xf86GetPciHostConfigFromTag(Tag))) {
- /* Look up vendor/device */
- for (i = 0; i < NUM_SIZES; i++) {
- if (pPCI->pci_vendor > pciControllerSizes[i].vendor)
- continue;
- if (pPCI->pci_vendor < pciControllerSizes[i].vendor)
- break;
- if (pPCI->pci_device > pciControllerSizes[i].device)
- continue;
- if (pPCI->pci_device < pciControllerSizes[i].device)
- break;
- *io_size = pciControllerSizes[i].io_size;
- *mem_size = pciControllerSizes[i].mem_size;
- break;
- }
- }
-}
-
-int
-xf86GetPciDomain(PCITAG Tag)
-{
- pciConfigPtr pPCI;
- int fd, result;
-
- pPCI = xf86GetPciHostConfigFromTag(Tag);
-
- if (pPCI && (result = PCI_DOM_FROM_BUS(pPCI->busnum)))
- return result;
-
- if (!pPCI || pPCI->fakeDevice)
- return 1; /* Domain 0 is reserved */
-
- if ((fd = linuxPciOpenFile(pPCI ? pPCI->tag : 0,FALSE)) < 0)
- return 0;
-
- if ((result = ioctl(fd, PCIIOC_CONTROLLER, 0)) < 0)
- return 0;
-
- return result + 1; /* Domain 0 is reserved */
-}
-
-static pointer
-linuxMapPci(int ScreenNum, int Flags, PCITAG Tag,
- ADDRESS Base, unsigned long Size, int mmap_ioctl)
-{
- do {
- pciConfigPtr pPCI;
- unsigned char *result;
- ADDRESS realBase, Offset;
- int fd, mmapflags, prot;
-
- xf86InitVidMem();
-
- pPCI = xf86GetPciHostConfigFromTag(Tag);
-
- if (((fd = linuxPciOpenFile(pPCI ? pPCI->tag : 0,FALSE)) < 0) ||
- (ioctl(fd, mmap_ioctl, 0) < 0))
- break;
-
-/* Note: IA-64 doesn't compile this and doesn't need to */
-#ifdef __ia64__
-
-# ifndef MAP_WRITECOMBINED
-# define MAP_WRITECOMBINED 0x00010000
-# endif
-# ifndef MAP_NONCACHED
-# define MAP_NONCACHED 0x00020000
-# endif
-
- if (Flags & VIDMEM_FRAMEBUFFER)
- mmapflags = MAP_SHARED | MAP_WRITECOMBINED;
- else
- mmapflags = MAP_SHARED | MAP_NONCACHED;
-
-#else /* !__ia64__ */
-
- mmapflags = (Flags & VIDMEM_FRAMEBUFFER) / VIDMEM_FRAMEBUFFER;
-
- if (ioctl(fd, PCIIOC_WRITE_COMBINE, mmapflags) < 0)
- break;
-
- mmapflags = MAP_SHARED;
-
-#endif /* ?__ia64__ */
-
- /* Align to page boundary */
- realBase = Base & ~(getpagesize() - 1);
- Offset = Base - realBase;
-
- if (Flags & VIDMEM_READONLY)
- prot = PROT_READ;
- else
- prot = PROT_READ | PROT_WRITE;
-
- result = mmap(NULL, Size + Offset, prot, mmapflags, fd, realBase);
-
- if (!result || ((pointer)result == MAP_FAILED))
- return NULL;
-
- xf86MakeNewMapping(ScreenNum, Flags, realBase, Size + Offset, result);
-
- return result + Offset;
- } while (0);
-
- if (mmap_ioctl == PCIIOC_MMAP_IS_MEM)
- return xf86MapVidMem(ScreenNum, Flags, Base, Size);
-
- return NULL;
-}
-
-#define MAX_DOMAINS 257
-static pointer DomainMmappedIO[MAX_DOMAINS];
-static pointer DomainMmappedMem[MAX_DOMAINS];
-
-static int
-linuxOpenLegacy(PCITAG Tag, char *name)
-{
-#define PREFIX "/sys/class/pci_bus/%04x:%02x/%s"
- char *path;
- int domain, bus;
- pciBusInfo_t *pBusInfo;
- pciConfigPtr bridge = NULL;
- int fd;
-
- path = xalloc(strlen(PREFIX) + strlen(name));
- if (!path)
- return -1;
-
- for (;;) {
- domain = xf86GetPciDomain(Tag);
- bus = PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(Tag));
-
- /* Domain 0 is reserved -- see xf86GetPciDomain() */
- if ((domain <= 0) || (domain >= MAX_DOMAINS))
- FatalError("linuxOpenLegacy(): domain out of range\n");
-
- sprintf(path, PREFIX, domain - 1, bus, name);
- fd = open(path, O_RDWR);
- if (fd >= 0) {
- xfree(path);
- return fd;
- }
-
- pBusInfo = pciBusInfo[bus];
- if (!pBusInfo || (bridge == pBusInfo->bridge) ||
- !(bridge = pBusInfo->bridge)) {
- xfree(path);
- return -1;
- }
-
- Tag = bridge->tag;
- }
-
- xfree(path);
- return fd;
-}
-
-/*
- * xf86MapDomainMemory - memory map PCI domain memory
- *
- * This routine maps the memory region in the domain specified by Tag and
- * returns a pointer to it. The pointer is saved for future use if it's in
- * the legacy ISA memory space (memory in a domain between 0 and 1MB).
- */
-pointer
-xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag,
- ADDRESS Base, unsigned long Size)
-{
- int domain = xf86GetPciDomain(Tag);
- int fd;
-
- /*
- * We use /proc/bus/pci on non-legacy addresses or if the Linux sysfs
- * legacy_mem interface is unavailable.
- */
- if (Base > 1024*1024)
- return linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
- PCIIOC_MMAP_IS_MEM);
-
- if ((fd = linuxOpenLegacy(Tag, "legacy_mem")) < 0)
- return linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
- PCIIOC_MMAP_IS_MEM);
-
-
- /* If we haven't already mapped this legacy space, try to. */
- if (!DomainMmappedMem[domain]) {
- DomainMmappedMem[domain] = mmap(NULL, 1024*1024, PROT_READ|PROT_WRITE,
- MAP_SHARED, fd, 0);
- if (DomainMmappedMem[domain] == MAP_FAILED) {
- close(fd);
- perror("mmap failure");
- FatalError("xf86MapDomainMem(): mmap() failure\n");
- }
- }
-
- close(fd);
- return (pointer)((char *)DomainMmappedMem[domain] + Base);
-}
-
-/*
- * xf86MapDomainIO - map I/O space in this domain
- *
- * Each domain has a legacy ISA I/O space. This routine will try to
- * map it using the Linux sysfs legacy_io interface. If that fails,
- * it'll fall back to using /proc/bus/pci.
- *
- * If the legacy_io interface *does* exist, the file descriptor (fd below)
- * will be saved in the DomainMmappedIO array in the upper bits of the
- * pointer. Callers will do I/O with small port numbers (<64k values), so
- * the platform I/O code can extract the port number and the fd, lseek to
- * the port number in the legacy_io file, and issue the read or write.
- *
- * This has no means of returning failure, so all errors are fatal
- */
-IOADDRESS
-xf86MapDomainIO(int ScreenNum, int Flags, PCITAG Tag,
- IOADDRESS Base, unsigned long Size)
-{
- int domain = xf86GetPciDomain(Tag);
- int fd;
-
- if ((domain <= 0) || (domain >= MAX_DOMAINS))
- FatalError("xf86MapDomainIO(): domain out of range\n");
-
- if (DomainMmappedIO[domain])
- return (IOADDRESS)DomainMmappedIO[domain] + Base;
-
- /* Permanently map all of I/O space */
- if ((fd = linuxOpenLegacy(Tag, "legacy_io")) < 0) {
- DomainMmappedIO[domain] = linuxMapPci(ScreenNum, Flags, Tag,
- 0, linuxGetIOSize(Tag),
- PCIIOC_MMAP_IS_IO);
- /* ia64 can't mmap legacy IO port space */
- if (!DomainMmappedIO[domain])
- return Base;
- }
- else { /* legacy_io file exists, encode fd */
- DomainMmappedIO[domain] = (pointer)(fd << 24);
- }
-
- return (IOADDRESS)DomainMmappedIO[domain] + Base;
-}
-
-/*
- * xf86ReadDomainMemory - copy from domain memory into a caller supplied buffer
- */
-int
-xf86ReadDomainMemory(PCITAG Tag, ADDRESS Base, int Len, unsigned char *Buf)
-{
- unsigned char *ptr, *src;
- ADDRESS offset;
- unsigned long size;
- int len, pagemask = getpagesize() - 1;
-
- unsigned int i, dom, bus, dev, func;
- unsigned int fd;
- char file[256];
- struct stat st;
-
- dom = PCI_DOM_FROM_TAG(Tag);
- bus = PCI_BUS_FROM_TAG(Tag);
- dev = PCI_DEV_FROM_TAG(Tag);
- func = PCI_FUNC_FROM_TAG(Tag);
- sprintf(file, "/sys/devices/pci%04x:%02x/%04x:%02x:%02x.%1x/rom",
- dom, bus, dom, bus, dev, func);
-
- /*
- * If the caller wants the ROM and the sysfs rom interface exists,
- * try to use it instead of reading it from /proc/bus/pci.
- */
- if (((Base & 0xfffff) == 0xC0000) && (stat(file, &st) == 0)) {
- if ((fd = open(file, O_RDWR)))
- Base = 0x0;
-
- /* enable the ROM first */
- write(fd, "1", 2);
- lseek(fd, 0, SEEK_SET);
-
- /* copy the ROM until we hit Len, EOF or read error */
- for (i = 0; i < Len && read(fd, Buf, 1) > 0; Buf++, i++)
- ;
-
- write(fd, "0", 2);
- close(fd);
-
- return Len;
- }
-
- /* Ensure page boundaries */
- offset = Base & ~pagemask;
- size = ((Base + Len + pagemask) & ~pagemask) - offset;
-
- ptr = xf86MapDomainMemory(-1, VIDMEM_READONLY, Tag, offset, size);
-
- if (!ptr)
- return -1;
-
- /* Using memcpy() here can hang the system */
- src = ptr + (Base - offset);
- for (len = Len; len-- > 0;)
- *Buf++ = *src++;
-
- xf86UnMapVidMem(-1, ptr, size);
-
- return Len;
-}
-
-resPtr
-xf86BusAccWindowsFromOS(void)
-{
- pciConfigPtr *ppPCI, pPCI;
- resPtr pRes = NULL;
- resRange range;
- unsigned long io_size, mem_size;
- int domain;
-
- if ((ppPCI = xf86scanpci(0))) {
- for (; (pPCI = *ppPCI); ppPCI++) {
- if ((pPCI->pci_base_class != PCI_CLASS_BRIDGE) ||
- (pPCI->pci_sub_class != PCI_SUBCLASS_BRIDGE_HOST))
- continue;
-
- domain = xf86GetPciDomain(pPCI->tag);
- linuxGetSizes(pPCI->tag, &io_size, &mem_size);
-
- RANGE(range, 0, (ADDRESS)(mem_size - 1),
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- RANGE(range, 0, (IOADDRESS)(io_size - 1),
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- if (domain <= 0)
- break;
- }
- }
-
- return pRes;
-}
-
-resPtr
-xf86PciBusAccWindowsFromOS(void)
-{
- pciConfigPtr *ppPCI, pPCI;
- resPtr pRes = NULL;
- resRange range;
- unsigned long io_size, mem_size;
- int domain;
-
- if ((ppPCI = xf86scanpci(0))) {
- for (; (pPCI = *ppPCI); ppPCI++) {
- if ((pPCI->pci_base_class != PCI_CLASS_BRIDGE) ||
- (pPCI->pci_sub_class != PCI_SUBCLASS_BRIDGE_HOST))
- continue;
-
- domain = xf86GetPciDomain(pPCI->tag);
- linuxGetSizes(pPCI->tag, &io_size, &mem_size);
-
- RANGE(range, 0, (ADDRESS)(mem_size - 1),
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- RANGE(range, 0, (IOADDRESS)(io_size - 1),
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- if (domain <= 0)
- break;
- }
- }
-
- return pRes;
-}
-
-
-resPtr
-xf86AccResFromOS(resPtr pRes)
-{
- pciConfigPtr *ppPCI, pPCI;
- resRange range;
- unsigned long io_size, mem_size;
- int domain;
-
- if ((ppPCI = xf86scanpci(0))) {
- for (; (pPCI = *ppPCI); ppPCI++) {
- if ((pPCI->pci_base_class != PCI_CLASS_BRIDGE) ||
- (pPCI->pci_sub_class != PCI_SUBCLASS_BRIDGE_HOST))
- continue;
-
- domain = xf86GetPciDomain(pPCI->tag);
- linuxGetSizes(pPCI->tag, &io_size, &mem_size);
-
- /*
- * At minimum, the top and bottom resources must be claimed, so
- * that resources that are (or appear to be) unallocated can be
- * relocated.
- */
- RANGE(range, 0x00000000u, 0x0009ffffu,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- RANGE(range, 0x000c0000u, 0x000effffu,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- RANGE(range, 0x000f0000u, 0x000fffffu,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- RANGE(range, (ADDRESS)(mem_size - 1), (ADDRESS)(mem_size - 1),
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- RANGE(range, 0x00000000u, 0x00000000u,
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- RANGE(range, (IOADDRESS)(io_size - 1), (IOADDRESS)(io_size - 1),
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- if (domain <= 0)
- break;
- }
- }
-
- return pRes;
-}
-
-#endif /* !INCLUDE_XF86_NO_DOMAIN */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/netbsdPci.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/netbsdPci.c
deleted file mode 100644
index 7dbbfdec7..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/netbsdPci.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/netbsdPci.c,v 1.4 2003/08/24 17:37:04 dawes Exp $ */
-/*
- * Copyright (C) 1994-2003 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- * 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 XFree86 Project.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <dev/pci/pciio.h>
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86OSpriv.h"
-
-#include "Pci.h"
-
-static CARD32 netbsdPciConfRead(PCITAG, int);
-static void netbsdPciConfWrite(PCITAG, int, CARD32);
-static void netbsdPciSetBits(PCITAG, int, CARD32, CARD32);
-
-static int devpci = -1;
-
-static pciBusFuncs_t netbsdFuncs0 = {
-/* pciReadLong */ netbsdPciConfRead,
-/* pciWriteLong */ netbsdPciConfWrite,
-/* pciSetBitsLong */ netbsdPciSetBits,
-/* pciAddrHostToBus */ pciAddrNOOP,
-/* pciAddrBusToHost */ pciAddrNOOP
-};
-
-static pciBusInfo_t netbsdPci0 = {
-/* configMech */ PCI_CFG_MECH_OTHER,
-/* numDevices */ 32,
-/* secondary */ FALSE,
-/* primary_bus */ 0,
-/* funcs */ &netbsdFuncs0,
-/* pciBusPriv */ NULL,
-/* bridge */ NULL
-};
-
-void
-netbsdPciInit()
-{
- struct pciio_businfo pci_businfo;
-
- devpci = open("/dev/pci0", O_RDWR);
- if (devpci == -1)
- FatalError("netbsdPciInit: can't open /dev/pci0\n");
-
- pciNumBuses = 1;
- pciBusInfo[0] = &netbsdPci0;
- pciFindFirstFP = pciGenFindFirst;
- pciFindNextFP = pciGenFindNext;
- /* use businfo to get the number of devs */
- if (ioctl(devpci, PCI_IOC_BUSINFO, &pci_businfo) != 0)
- FatalError("netbsdPciInit: not a PCI bus device");
- netbsdPci0.numDevices = pci_businfo.maxdevs;
-}
-
-static CARD32
-netbsdPciConfRead(PCITAG tag, int reg)
-{
- struct pciio_bdf_cfgreg bdfr;
-
- bdfr.bus = PCI_BUS_FROM_TAG(tag);
- bdfr.device = PCI_DEV_FROM_TAG(tag);
- bdfr.function = PCI_FUNC_FROM_TAG(tag);
- bdfr.cfgreg.reg = reg;
-
- if (ioctl(devpci, PCI_IOC_BDF_CFGREAD, &bdfr) == -1)
- FatalError("netbsdPciConfRead: failed on %d/%d/%d\n",
- bdfr.bus, bdfr.device, bdfr.function);
-
- return (bdfr.cfgreg.val);
-}
-
-static void
-netbsdPciConfWrite(PCITAG tag, int reg, CARD32 val)
-{
- struct pciio_bdf_cfgreg bdfr;
-
- bdfr.bus = PCI_BUS_FROM_TAG(tag);
- bdfr.device = PCI_DEV_FROM_TAG(tag);
- bdfr.function = PCI_FUNC_FROM_TAG(tag);
- bdfr.cfgreg.reg = reg;
- bdfr.cfgreg.val = val;
-
- if (ioctl(devpci, PCI_IOC_BDF_CFGWRITE, &bdfr) == -1)
- FatalError("netbsdPciConfWrite: failed on %d/%d/%d\n",
- bdfr.bus, bdfr.device, bdfr.function);
-}
-
-static void
-netbsdPciSetBits(PCITAG tag, int reg, CARD32 mask, CARD32 bits)
-{
- CARD32 val;
-
- val = netbsdPciConfRead(tag, reg);
- val = (val & ~mask) | (bits & mask);
- netbsdPciConfWrite(tag, reg, val);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/ppcPci.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/ppcPci.c
deleted file mode 100644
index 7a438af67..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/ppcPci.c
+++ /dev/null
@@ -1,311 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/ppcPci.c,v 1.8 2002/07/24 19:06:52 tsi Exp $ */
-/*
- * ppcPci.c - PowerPC PCI access functions
- *
- * PCI driver functions supporting Motorola PowerPC platforms
- * including Powerstack(RiscPC/RiscPC+), PowerStackII, MTX, and
- * MVME 160x/260x/360x/460x VME boards
- *
- * Gary Barton
- * Concurrent Computer Corporation
- * garyb@gate.net
- *
- */
-
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include "compiler.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "Pci.h"
-
-#ifndef MAP_FAILED
-#define MAP_FAILED (pointer)(-1)
-#endif
-
-void
-ppcPciInit()
-{
-#if defined(PowerMAX_OS)
- extern void pmaxPciInit(void);
-
- pmaxPciInit();
-
-#else
-
- static void motoppcPciInit(void);
- motoppcPciInit();
-
-#endif
-}
-
-#if defined(PowerMAX_OS)
-
-/*
- * Motorola PowerPC platform support
- *
- * The following code should support the MVME 1600 & 2600 VME boards
- * as well as the various PowerStack and RiscPC models. All of these
- * machines support PCI config mechanism #1 and use the std config
- * address and data regs locations:
- * cfg address reg = 0xcf8 (PCI I/O)
- * cfg data reg = 0xcfc (PCI I/O)
- *
- * The moto machines do have different address maps on either side
- * of the PCI-host bridge though.
- */
-static ADDRESS motoppcBusAddrToHostAddr(PCITAG, PciAddrType, ADDRESS);
-static ADDRESS motoppcHostAddrToBusAddr(PCITAG, PciAddrType, ADDRESS);
-static CARD32 pciCfgMech1Read(PCITAG tag, int offset);
-static void pciCfgMech1Write(PCITAG tag, int offset, CARD32 val);
-static void pciCfgMech1SetBits(PCITAG tag, int offset,
- CARD32 mask, CARD32 val);
-
-
-static pciBusFuncs_t motoppcFuncs0 = {
-/* pciReadLong */ pciCfgMech1Read,
-/* pciWriteLong */ pciCfgMech1Write,
-/* pciSetBitsLong */ pciCfgMech1SetBits,
-/* pciAddrHostToBus */ motoppcHostAddrToBusAddr,
-/* pciAddrBusToHost */ motoppcBusAddrToHostAddr
-};
-
-static pciBusInfo_t motoppcPci0 = {
-/* configMech */ PCI_CFG_MECH_1,
-/* numDevices */ 32,
-/* secondary */ FALSE,
-/* primary_bus */ 0,
-#ifdef PowerMAX_OS
-/* ppc_io_base */ 0x80000000,
-/* ppc_io_size */ 64 * 1024,
-#endif
-/* funcs */ &motoppcFuncs0,
-/* pciBusPriv */ NULL,
-/* bridge */ NULL
-};
-
-extern volatile unsigned char *ioBase;
-
-static void
-motoppcPciInit()
-{
- pciNumBuses = 1;
- pciBusInfo[0] = &motoppcPci0;
- pciFindFirstFP = pciGenFindFirst;
- pciFindNextFP = pciGenFindNext;
-
- if (!xf86EnableIO())
- FatalError("motoppcPciInit: EnableIO failed\n");
-
- if (ioBase == MAP_FAILED) {
- ppcPciIoMap(0); /* Make inb/outb et al work for pci0 and its secondaries */
-
- if (ioBase == MAP_FAILED) {
- FatalError("motoppcPciInit: Cannot map pci0 I/O segment!!!\n");
- /*NOTREACHED*/
- }
- }
-}
-
-extern unsigned long motoPciMemBase = 0;
-
-#if defined(Lynx) && defined(__powerpc__)
-extern unsigned long motoPciMemLen = 0x40000000;
-#else
-extern unsigned long motoPciMemLen = 0x3f000000;
-#endif
-
-extern unsigned long motoPciMemBaseCPU = 0xc0000000;
-
-static ADDRESS
-motoppcBusAddrToHostAddr(PCITAG tag, PciAddrType type, ADDRESS addr)
-{
- unsigned long addr_l = (unsigned long)addr;
-
- if (type == PCI_MEM) {
- if (addr_l >= motoPciMemBase && addr_l < motoPciMemLen)
- /*
- * PCI memory space addresses [0-0x3effffff] are
- * are seen at [0xc0000000,0xfeffffff] on moto host
- */
- return((ADDRESS)((motoPciMemBaseCPU - motoPciMemBase) + addr_l));
-
- else if (addr_l >= 0x80000000)
- /*
- * Moto host memory [0,0x7fffffff] is seen at
- * [0x80000000,0xffffffff] on PCI bus
- */
- return((ADDRESS)(addr_l & 0x7fffffff));
- else
- FatalError("motoppcBusAddrToHostAddr: PCI addr 0x%x is not accessible to host!!!\n",
- addr_l);
- } else
- return addr;
-
- /*NOTREACHED*/
-}
-
-static ADDRESS
-motoppcHostAddrToBusAddr(PCITAG tag, PciAddrType type, ADDRESS addr)
-{
- unsigned long addr_l = (unsigned long)addr;
-
- if (type == PCI_MEM) {
- if (addr_l < 0x80000000)
- /*
- * Moto host memory [0,0x7fffffff] is seen at
- * [0x80000000,0xffffffff] on PCI bus
- */
- return((ADDRESS)(0x80000000 | addr_l));
-
- else if (addr_l >= motoPciMemBaseCPU && addr_l < motoPciMemBaseCPU + motoPciMemLen)
- /*
- * PCI memory space addresses [0-0x3effffff] are
- * are seen at [0xc0000000,0xfeffffff] on moto host
- */
- return((ADDRESS)(addr_l - (motoPciMemBaseCPU - motoPciMemBase)));
-
- else
- FatalError("motoppcHostAddrToBusAddr: Host addr 0x%x is not accessible to PCI!!!\n",
- addr_l);
- } else
- return addr;
-
- /*NOTREACHED*/
-}
-
-#if defined (__powerpc__)
-static int buserr_detected;
-
-static
-void buserr(int sig)
-{
- buserr_detected = 1;
-}
-#endif
-
-static CARD32
-pciCfgMech1Read(PCITAG tag, int offset)
-{
- unsigned long rv = 0xffffffff;
-#ifdef DEBUGPCI
- ErrorF("pciCfgMech1Read(tag=%08x,offset=%08x)\n", tag, offset);
-#endif
-
-#if defined(__powerpc__)
- signal(SIGBUS, buserr);
- buserr_detected = 0;
-#endif
-
- outl(0xCF8, PCI_EN | tag | (offset & 0xfc));
- rv = inl(0xCFC);
-
-#if defined(__powerpc__)
- signal(SIGBUS, SIG_DFL);
- if (buserr_detected)
- {
-#ifdef DEBUGPCI
- ErrorF("pciCfgMech1Read() BUS ERROR\n");
-#endif
- return(0xffffffff);
- }
- else
-#endif
- return(rv);
-}
-
-static void
-pciCfgMech1Write(PCITAG tag, int offset, CARD32 val)
-{
-#ifdef DEBUGPCI
- ErrorF("pciCfgMech1Write(tag=%08x,offset=%08x,val=%08x)\n",
- tag, offset,val);
-#endif
-
-#if defined(__powerpc__)
- signal(SIGBUS, SIG_IGN);
-#endif
-
- outl(0xCF8, PCI_EN | tag | (offset & 0xfc));
-#if defined(Lynx) && defined(__powerpc__)
- outb(0x80, 0x00); /* without this the next access fails
- * on my Powerstack system when we use
- * assembler inlines for outl */
-#endif
- outl(0xCFC, val);
-
-#if defined(__powerpc__)
- signal(SIGBUS, SIG_DFL);
-#endif
-}
-
-static void
-pciCfgMech1SetBits(PCITAG tag, int offset, CARD32 mask, CARD32 val)
-{
- unsigned long rv = 0xffffffff;
-
-#if defined(__powerpc__)
- signal(SIGBUS, buserr);
-#endif
-
- outl(0xCF8, PCI_EN | tag | (offset & 0xfc));
- rv = inl(0xCFC);
- rv = (rv & ~mask) | val;
- outl(0xCFC, rv);
-
-#if defined(__powerpc__)
- signal(SIGBUS, SIG_DFL);
-#endif
-}
-
-#endif /* PowerMAX_OS */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/sparcPci.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/sparcPci.c
deleted file mode 100644
index 48e10ede4..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/sparcPci.c
+++ /dev/null
@@ -1,1052 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/sparcPci.c,v 1.14 2003/08/24 17:37:04 dawes Exp $ */
-/*
- * Copyright (C) 2001-2003 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "Pci.h"
-#include "xf86sbusBus.h"
-
-#if defined(sun)
-
-extern char *apertureDevName;
-static int apertureFd = -1;
-
-/*
- * A version of xf86MapVidMem() that allows for 64-bit displacements (but not
- * sizes). Areas thus mapped can be unmapped by xf86UnMapVidMem().
- */
-static pointer
-sparcMapAperture(int iScreen, int Flags,
- unsigned long long Base, unsigned long Size)
-{
- pointer result;
- static int lastFlags = 0;
-
- /* Assume both Base & Size are multiples of the page size */
-
- if ((apertureFd < 0) || (Flags != lastFlags)) {
- if (apertureFd >= 0)
- close(apertureFd);
- lastFlags = Flags;
- apertureFd = open(apertureDevName,
- (Flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
- if (apertureFd < 0)
- FatalError("sparcMapAperture: open failure: %s\n",
- strerror(errno));
- }
-
- result = mmap(NULL, Size,
- (Flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_SHARED, apertureFd, (off_t)Base);
-
- if (result == MAP_FAILED)
- FatalError("sparcMapAperture: mmap failure: %s\n", strerror(errno));
-
- return result;
-}
-
-/*
- * Platform-specific bus privates.
- */
-typedef struct _sparcDomainRec {
- unsigned long long io_addr, io_size;
- unsigned long long mem_addr, mem_size;
- pointer pci, io;
- int bus_min, bus_max;
- unsigned char dfn_mask[256 / 8];
-} sparcDomainRec, *sparcDomainPtr;
-
-#define SetBitInMap(bit, map) \
- do { \
- int _bit = (bit); \
- (map)[_bit >> 3] |= 1 << (_bit & 7); \
- } while (0)
-
-#define IsBitSetInMap(bit, map) \
- ((map)[(bit) >> 3] & (1 << ((bit) & 7)))
-
-/*
- * Domain 0 is reserved for the one that represents the system as a whole, i.e.
- * the one without any resource relocations.
- */
-#define MAX_DOMAINS (MAX_PCI_BUSES / 256)
-static sparcDomainPtr xf86DomainInfo[MAX_DOMAINS];
-static int pciNumDomains = 1;
-
-/* Variables that are assigned this must be declared volatile */
-#define PciReg(base, tag, off, type) \
- *(volatile type *)(pointer)((char *)(base) + \
- (PCI_TAG_NO_DOMAIN(tag) | (off)))
-
-/* Generic SPARC PCI access functions */
-static CARD32
-sparcPciCfgRead32(PCITAG tag, int off)
-{
- pciBusInfo_t *pBusInfo;
- sparcDomainPtr pDomain;
- volatile CARD32 result = (CARD32)(-1); /* Must be volatile */
- int bus;
-
- if ((off >= 0) && (off <= 252) && !(off & 3) &&
- ((bus = PCI_BUS_FROM_TAG(tag)) < pciNumBuses) &&
- (pBusInfo = pciBusInfo[bus]) && (pDomain = pBusInfo->pciBusPriv) &&
- (bus >= pDomain->bus_min) && (bus < pDomain->bus_max) &&
- ((bus > pDomain->bus_min) ||
- IsBitSetInMap(PCI_DFN_FROM_TAG(tag), pDomain->dfn_mask))) {
- result = PciReg(pDomain->pci, tag, off, CARD32);
-
- result = PCI_CPU(result);
- }
-
- return result;
-}
-
-static void
-sparcPciCfgWrite32(PCITAG tag, int off, CARD32 val)
-{
- pciBusInfo_t *pBusInfo;
- sparcDomainPtr pDomain;
- int bus;
-
- if ((off < 0) || (off > 252) || (off & 3) ||
- ((bus = PCI_BUS_FROM_TAG(tag)) >= pciNumBuses) ||
- !(pBusInfo = pciBusInfo[bus]) || !(pDomain = pBusInfo->pciBusPriv) ||
- (bus < pDomain->bus_min) || (bus >= pDomain->bus_max) ||
- ((bus == pDomain->bus_min) &&
- !IsBitSetInMap(PCI_DFN_FROM_TAG(tag), pDomain->dfn_mask)))
- return;
-
- val = PCI_CPU(val);
- PciReg(pDomain->pci, tag, off, CARD32) = val;
-}
-
-static void
-sparcPciCfgSetBits32(PCITAG tag, int off, CARD32 mask, CARD32 bits)
-{
- CARD32 PciVal;
-
- PciVal = sparcPciCfgRead32(tag, off);
- PciVal &= ~mask;
- PciVal |= bits;
- sparcPciCfgWrite32(tag, off, PciVal);
-}
-
-static pciBusFuncs_t sparcPCIFunctions =
-{
- sparcPciCfgRead32,
- sparcPciCfgWrite32,
- sparcPciCfgSetBits32,
- pciAddrNOOP,
- pciAddrNOOP
-};
-
-/*
- * Sabre-specific versions of the above because of its peculiar access size
- * requirements.
- */
-static CARD32
-sabrePciCfgRead32(PCITAG tag, int off)
-{
- pciBusInfo_t *pBusInfo;
- sparcDomainPtr pDomain;
- volatile CARD32 result; /* Must be volatile */
- int bus;
-
- if (PCI_BDEV_FROM_TAG(tag))
- return sparcPciCfgRead32(tag, off);
-
- if (PCI_FUNC_FROM_TAG(tag) || (off < 0) || (off > 252) || (off & 3) ||
- ((bus = PCI_BUS_FROM_TAG(tag)) >= pciNumBuses) ||
- !(pBusInfo = pciBusInfo[bus]) || !(pDomain = pBusInfo->pciBusPriv) ||
- (bus != pDomain->bus_min))
- return (CARD32)(-1);
-
- if (off < 8) {
- result = (PciReg(pDomain->pci, tag, off, CARD16) << 16) |
- PciReg(pDomain->pci, tag, off + 2, CARD16);
- return PCI_CPU(result);
- }
-
- result = (PciReg(pDomain->pci, tag, off + 3, CARD8) << 24) |
- (PciReg(pDomain->pci, tag, off + 2, CARD8) << 16) |
- (PciReg(pDomain->pci, tag, off + 1, CARD8) << 8) |
- (PciReg(pDomain->pci, tag, off , CARD8) );
- return result;
-}
-
-static void
-sabrePciCfgWrite32(PCITAG tag, int off, CARD32 val)
-{
- pciBusInfo_t *pBusInfo;
- sparcDomainPtr pDomain;
- int bus;
-
- if (PCI_BDEV_FROM_TAG(tag))
- sparcPciCfgWrite32(tag, off, val);
- else if (!PCI_FUNC_FROM_TAG(tag) &&
- (off >= 0) && (off <= 252) && !(off & 3) &&
- ((bus = PCI_BUS_FROM_TAG(tag)) < pciNumBuses) &&
- (pBusInfo = pciBusInfo[bus]) &&
- (pDomain = pBusInfo->pciBusPriv) &&
- (bus == pDomain->bus_min)) {
- if (off < 8) {
- val = PCI_CPU(val);
- PciReg(pDomain->pci, tag, off , CARD16) = val >> 16;
- PciReg(pDomain->pci, tag, off + 2, CARD16) = val;
- } else {
- PciReg(pDomain->pci, tag, off , CARD8) = val;
- PciReg(pDomain->pci, tag, off + 1, CARD8) = val >> 8;
- PciReg(pDomain->pci, tag, off + 2, CARD8) = val >> 16;
- PciReg(pDomain->pci, tag, off + 3, CARD8) = val >> 24;
- }
- }
-}
-
-static void
-sabrePciCfgSetBits32(PCITAG tag, int off, CARD32 mask, CARD32 bits)
-{
- CARD32 PciVal;
-
- PciVal = sabrePciCfgRead32(tag, off);
- PciVal &= ~mask;
- PciVal |= bits;
- sabrePciCfgWrite32(tag, off, PciVal);
-}
-
-static pciBusFuncs_t sabrePCIFunctions =
-{
- sabrePciCfgRead32,
- sabrePciCfgWrite32,
- sabrePciCfgSetBits32,
- pciAddrNOOP,
- pciAddrNOOP
-};
-
-static int pagemask;
-
-/* Scan PROM for all PCI host bridges in the system */
-void
-sparcPciInit(void)
-{
- int node, node2;
-
- if (!xf86LinearVidMem())
- return;
-
- apertureFd = open(apertureDevName, O_RDWR);
- if (apertureFd < 0) {
- xf86Msg(X_ERROR,
- "sparcPciInit: open failure: %s\n", strerror(errno));
- return;
- }
-
- sparcPromInit();
- pagemask = xf86getpagesize() - 1;
-
- for (node = promGetChild(promRootNode);
- node;
- node = promGetSibling(node)) {
- unsigned long long pci_addr;
- sparcDomainRec domain;
- sparcDomainPtr pDomain;
- pciBusFuncs_p pFunctions;
- char *prop_val;
- int prop_len, bus;
-
- prop_val = promGetProperty("name", &prop_len);
- /* Some PROMs include the trailing null; some don't */
- if (!prop_val || (prop_len < 3) || (prop_len > 4) ||
- strcmp(prop_val, "pci"))
- continue;
-
- prop_val = promGetProperty("model", &prop_len);
- if (!prop_val || (prop_len <= 0)) {
- prop_val = promGetProperty("compatible", &prop_len);
- if (!prop_val || (prop_len <= 0))
- continue;
- }
-
- pFunctions = &sparcPCIFunctions;
- (void)memset(&domain, 0, sizeof(domain));
-
- if (!strncmp("SUNW,sabre", prop_val, prop_len) ||
- !strncmp("pci108e,a000", prop_val, prop_len) ||
- !strncmp("pci108e,a001", prop_val, prop_len)) {
- /*
- * There can only be one "Sabre" bridge in a system. It provides
- * PCI configuration space, a 24-bit I/O space and a 32-bit memory
- * space, all three of which are at fixed physical CPU addresses.
- */
- static Bool sabre_seen = FALSE;
-
- xf86Msg(X_INFO,
- "Sabre or Hummingbird PCI host bridge found (\"%s\")\n",
- prop_val);
-
- /* There can only be one Sabre */
- if (sabre_seen)
- continue;
- sabre_seen = TRUE;
-
- /* Get "bus-range" property */
- prop_val = promGetProperty("bus-range", &prop_len);
- if (!prop_val || (prop_len != 8) ||
- (((unsigned int *)prop_val)[0]) ||
- (((unsigned int *)prop_val)[1] >= 256))
- continue;
-
- pci_addr = 0x01fe01000000ull;
- domain.io_addr = 0x01fe02000000ull;
- domain.io_size = 0x000001000000ull;
- domain.mem_addr = 0x01ff00000000ull;
- domain.mem_size = 0x000100000000ull;
- domain.bus_min = 0; /* Always */
- domain.bus_max = ((int *)prop_val)[1];
-
- pFunctions = &sabrePCIFunctions;
- } else
- if (!strncmp("SUNW,psycho", prop_val, prop_len) ||
- !strncmp("pci108e,8000", prop_val, prop_len)) {
- /*
- * A "Psycho" host bridge provides two PCI interfaces, each with
- * its own 16-bit I/O and 31-bit memory spaces. Both share the
- * same PCI configuration space. Here, they are assigned separate
- * domain numbers to prevent unintentional I/O and/or memory
- * resource conflicts.
- */
- xf86Msg(X_INFO,
- "Psycho PCI host bridge found (\"%s\")\n", prop_val);
-
- /* Get "bus-range" property */
- prop_val = promGetProperty("bus-range", &prop_len);
- if (!prop_val || (prop_len != 8) ||
- (((unsigned int *)prop_val)[1] >= 256) ||
- (((unsigned int *)prop_val)[0] > ((unsigned int *)prop_val)[1]))
- continue;
-
- domain.bus_min = ((int *)prop_val)[0];
- domain.bus_max = ((int *)prop_val)[1];
-
- /* Get "ranges" property */
- prop_val = promGetProperty("ranges", &prop_len);
- if (!prop_val || (prop_len != 112) ||
- prop_val[0] || (prop_val[28] != 0x01u) ||
- (prop_val[56] != 0x02u) || (prop_val[84] != 0x03u) ||
- (((unsigned int *)prop_val)[4] != 0x01000000u) ||
- ((unsigned int *)prop_val)[5] ||
- ((unsigned int *)prop_val)[12] ||
- (((unsigned int *)prop_val)[13] != 0x00010000u) ||
- ((unsigned int *)prop_val)[19] ||
- (((unsigned int *)prop_val)[20] != 0x80000000u) ||
- ((((unsigned int *)prop_val)[11] & ~0x00010000u) !=
- 0x02000000u) ||
- (((unsigned int *)prop_val)[18] & ~0x80000000u) ||
- (((unsigned int *)prop_val)[3] !=
- ((unsigned int *)prop_val)[10]) ||
- (((unsigned int *)prop_val)[17] !=
- ((unsigned int *)prop_val)[24]) ||
- (((unsigned int *)prop_val)[18] !=
- ((unsigned int *)prop_val)[25]) ||
- (((unsigned int *)prop_val)[19] !=
- ((unsigned int *)prop_val)[26]) ||
- (((unsigned int *)prop_val)[20] !=
- ((unsigned int *)prop_val)[27]))
- continue;
-
- /* Use memcpy() to avoid alignment issues */
- (void)memcpy(&pci_addr, prop_val + 12,
- sizeof(pci_addr));
- (void)memcpy(&domain.io_addr, prop_val + 40,
- sizeof(domain.io_addr));
- (void)memcpy(&domain.mem_addr, prop_val + 68,
- sizeof(domain.mem_addr));
-
- domain.io_size = 0x000000010000ull;
- domain.mem_size = 0x000080000000ull;
- } else
- if (!strncmp("SUNW,schizo", prop_val, prop_len) ||
- !strncmp("pci108e,8001", prop_val, prop_len)) {
- /*
- * I have no docs on the "Schizo", but judging from the Linux
- * kernel, it also provides two PCI domains. Each PCI
- * configuration space is the usual 16M in size, followed by a
- * variable-length I/O space. Each domain also provides a
- * variable-length memory space. The kernel seems to think the I/O
- * spaces are 16M long, and the memory spaces, 2G, but these
- * assumptions are actually only present in source code comments.
- * Sun has, however, confirmed to me the validity of these
- * assumptions.
- */
- volatile unsigned long long mem_match, mem_mask, io_match, io_mask;
- unsigned long Offset;
- pointer pSchizo;
-
- xf86Msg(X_INFO,
- "Schizo PCI host bridge found (\"%s\")\n", prop_val);
-
- /* Get "bus-range" property */
- prop_val = promGetProperty("bus-range", &prop_len);
- if (!prop_val || (prop_len != 8) ||
- (((unsigned int *)prop_val)[1] >= 256) ||
- (((unsigned int *)prop_val)[0] > ((unsigned int *)prop_val)[1]))
- continue;
-
- domain.bus_min = ((int *)prop_val)[0];
- domain.bus_max = ((int *)prop_val)[1];
-
- /* Get "reg" property */
- prop_val = promGetProperty("reg", &prop_len);
- if (!prop_val || (prop_len != 48))
- continue;
-
- /* Temporarily map some of Schizo's registers */
- pSchizo = sparcMapAperture(-1, VIDMEM_MMIO,
- ((unsigned long long *)prop_val)[2] - 0x000000010000ull,
- 0x00010000ul);
-
- /* Determine where PCI config, I/O and memory spaces reside */
- if ((((unsigned long long *)prop_val)[0] & 0x000000700000ull) ==
- 0x000000600000ull)
- Offset = 0x0040;
- else
- Offset = 0x0060;
-
- mem_match = PciReg(pSchizo, 0, Offset, unsigned long long);
- mem_mask = PciReg(pSchizo, 0, Offset + 8, unsigned long long);
- io_match = PciReg(pSchizo, 0, Offset + 16, unsigned long long);
- io_mask = PciReg(pSchizo, 0, Offset + 24, unsigned long long);
-
- /* Unmap Schizo registers */
- xf86UnMapVidMem(-1, pSchizo, 0x00010000ul);
-
- /* Calculate sizes */
- mem_mask = (((mem_mask - 1) ^ mem_mask) >> 1) + 1;
- io_mask = (((io_mask - 1) ^ io_mask ) >> 1) + 1;
-
- if (io_mask <= 0x000001000000ull) /* Nothing left for I/O */
- continue;
-
- domain.mem_addr = mem_match & ~0x8000000000000000ull;
- domain.mem_size = mem_mask;
- pci_addr = io_match & ~0x8000000000000000ull;
- domain.io_addr = pci_addr + 0x0000000001000000ull;
- domain.io_size = io_mask - 0x0000000001000000ull;
- } else {
- xf86Msg(X_WARNING, "Unknown PCI host bridge: \"%s\"\n", prop_val);
- continue;
- }
-
- /* Only map as much PCI configuration as we need */
- domain.pci = (char *)sparcMapAperture(-1, VIDMEM_MMIO,
- pci_addr + PCI_MAKE_TAG(domain.bus_min, 0, 0),
- PCI_MAKE_TAG(domain.bus_max - domain.bus_min + 1, 0, 0)) -
- PCI_MAKE_TAG(domain.bus_min, 0, 0);
-
- /* Allocate a domain record */
- pDomain = xnfalloc(sizeof(sparcDomainRec));
- *pDomain = domain;
-
- /*
- * Allocate and prime pciBusInfo records. These are allocated one at a
- * time because those for empty buses are eventually released.
- */
- bus = pDomain->bus_min =
- PCI_MAKE_BUS(pciNumDomains, domain.bus_min);
- pciNumBuses = pDomain->bus_max =
- PCI_MAKE_BUS(pciNumDomains, domain.bus_max) + 1;
-
- pciBusInfo[bus] = xnfcalloc(1, sizeof(pciBusInfo_t));
- pciBusInfo[bus]->configMech = PCI_CFG_MECH_OTHER;
- pciBusInfo[bus]->numDevices = 32;
- pciBusInfo[bus]->funcs = pFunctions;
- pciBusInfo[bus]->pciBusPriv = pDomain;
- while (++bus < pciNumBuses) {
- pciBusInfo[bus] = xnfalloc(sizeof(pciBusInfo_t));
- *(pciBusInfo[bus]) = *(pciBusInfo[bus - 1]);
- pciBusInfo[bus]->funcs = &sparcPCIFunctions;
- }
-
- /* Next domain, please... */
- xf86DomainInfo[pciNumDomains++] = pDomain;
-
- /*
- * OK, enough of the straight-forward stuff. Time to deal with some
- * brokenness...
- *
- * The PCI specs require that when a bus transaction remains unclaimed
- * for too long, the master entity on that bus is to cancel the
- * transaction it issued or passed on with a master abort. Two
- * outcomes are possible:
- *
- * - the master abort can be treated as an error that is propogated
- * back through the bus tree to the entity that ultimately originated
- * the transaction; or
- * - the transaction can be allowed to complete normally, which means
- * that writes are ignored and reads return all ones.
- *
- * In the first case, if the CPU happens to be at the tail end of the
- * tree path through one of its host bridges, it will be told there is
- * a hardware mal-function, despite being generated by software.
- *
- * For a software function (be it firmware, OS or userland application)
- * to determine how a PCI bus tree is populated, it must be able to
- * detect when master aborts occur. Obviously, PCI discovery is much
- * simpler when master aborts are allowed to complete normally.
- *
- * Unfortunately, a number of non-Intel PCI implementations have chosen
- * to treat master aborts as severe errors. The net effect is to
- * cripple PCI discovery algorithms in userland.
- *
- * On SPARCs, master aborts cause a number of different behaviours,
- * including delivering a signal to the userland application, rebooting
- * the system, "dropping down" to firmware, or, worst of all, bus
- * lockouts. Even in the first case, the SIGBUS signal that is
- * eventually generated isn't delivered in a timely enough fashion to
- * allow an application to reliably detect the master abort that
- * ultimately caused it.
- *
- * This can be somewhat mitigated. On all architectures, master aborts
- * that occur on secondary buses can be forced to complete normally
- * because the PCI-to-PCI bridges that serve them are governed by an
- * industry-wide specification. (This is just another way of saying
- * that whatever justification there might be for erroring out master
- * aborts is deemed by the industry as insufficient to generate more
- * PCI non-compliance than there already is...)
- *
- * This leaves us with master aborts that occur on primary buses.
- * There is no specification for host-to-PCI bridges. Bridges used in
- * SPARCs can be told to ignore all PCI errors, but not specifically
- * master aborts. Not only is this too coarse-grained, but
- * master-aborted read transactions on the primary bus end up returning
- * garbage rather than all ones.
- *
- * I have elected to work around this the only way I can think of doing
- * so right now. The following scans an additional PROM level and
- * builds a device/function map for the primary bus. I can only hope
- * this PROM information represents all devices on the primary bus,
- * rather than only a subset of them.
- *
- * Master aborts are useful in other ways too, that are not addressed
- * here. These include determining whether or not a domain provides
- * VGA, or if a PCI device actually implements PCI disablement.
- *
- * --- TSI @ UQV 2001.09.19
- */
- for (node2 = promGetChild(node);
- node2;
- node2 = promGetSibling(node2)) {
- /* Get "reg" property */
- prop_val = promGetProperty("reg", &prop_len);
- if (!prop_val || (prop_len % 20))
- continue;
-
- /*
- * It's unnecessary to scan the entire "reg" property, but I'll do
- * so anyway.
- */
- prop_len /= 20;
- for (; prop_len--; prop_val += 20)
- SetBitInMap(PCI_DFN_FROM_TAG(*(PCITAG *)prop_val),
- pDomain->dfn_mask);
- }
-
- /* Assume the host bridge is device 0, function 0 on its bus */
- SetBitInMap(0, pDomain->dfn_mask);
- }
-
- sparcPromClose();
-
- close(apertureFd);
- apertureFd = -1;
-}
-
-#ifndef INCLUDE_XF86_NO_DOMAIN
-
-int
-xf86GetPciDomain(PCITAG Tag)
-{
- return PCI_DOM_FROM_TAG(Tag);
-}
-
-pointer
-xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag,
- ADDRESS Base, unsigned long Size)
-{
- sparcDomainPtr pDomain;
- pointer result;
- int domain = PCI_DOM_FROM_TAG(Tag);
-
- if ((domain <= 0) || (domain >= pciNumDomains) ||
- !(pDomain = xf86DomainInfo[domain]) ||
- (((unsigned long long)Base + (unsigned long long)Size) >
- pDomain->mem_size))
- FatalError("xf86MapDomainMemory() called with invalid parameters.\n");
-
- result = sparcMapAperture(ScreenNum, Flags, pDomain->mem_addr + Base, Size);
-
- if (apertureFd >= 0) {
- close(apertureFd);
- apertureFd = -1;
- }
-
- return result;
-}
-
-IOADDRESS
-xf86MapDomainIO(int ScreenNum, int Flags, PCITAG Tag,
- IOADDRESS Base, unsigned long Size)
-{
- sparcDomainPtr pDomain;
- int domain = PCI_DOM_FROM_TAG(Tag);
-
- if ((domain <= 0) || (domain >= pciNumDomains) ||
- !(pDomain = xf86DomainInfo[domain]) ||
- (((unsigned long long)Base + (unsigned long long)Size) >
- pDomain->io_size))
- FatalError("xf86MapDomainIO() called with invalid parameters.\n");
-
- /* Permanently map all of I/O space */
- if (!pDomain->io) {
- pDomain->io = sparcMapAperture(ScreenNum, Flags,
- pDomain->io_addr, pDomain->io_size);
-
- if (apertureFd >= 0) {
- close(apertureFd);
- apertureFd = -1;
- }
- }
-
- return (IOADDRESS)pDomain->io + Base;
-}
-
-int
-xf86ReadDomainMemory(PCITAG Tag, ADDRESS Base, int Len, unsigned char *Buf)
-{
- unsigned char *ptr, *src;
- ADDRESS offset;
- unsigned long size;
- int len;
-
- /* Ensure page boundaries */
- offset = Base & ~pagemask;
- size = ((Base + Len + pagemask) & ~pagemask) - offset;
-
- ptr = xf86MapDomainMemory(-1, VIDMEM_READONLY, Tag, offset, size);
-
- /* Using memcpy() here hangs the system */
- src = ptr + (Base - offset);
- for (len = Len; len-- > 0;)
- *Buf++ = *src++;
-
- xf86UnMapVidMem(-1, ptr, size);
-
- return Len;
-}
-
-resPtr
-xf86BusAccWindowsFromOS(void)
-{
- sparcDomainPtr pDomain;
- resPtr pRes = NULL;
- resRange range;
- int domain;
-
- for (domain = 1; domain < pciNumDomains; domain++) {
- if (!(pDomain = xf86DomainInfo[domain]))
- continue;
-
- RANGE(range, 0, pDomain->mem_size - 1,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- RANGE(range, 0, pDomain->io_size - 1,
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- }
-
- return pRes;
-}
-
-resPtr
-xf86PciBusAccWindowsFromOS(void)
-{
- sparcDomainPtr pDomain;
- resPtr pRes = NULL;
- resRange range;
- int domain;
-
- for (domain = 1; domain < pciNumDomains; domain++) {
- if (!(pDomain = xf86DomainInfo[domain]))
- continue;
-
- RANGE(range, 0, pDomain->mem_size - 1,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- RANGE(range, 0, pDomain->io_size - 1,
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- }
-
- return pRes;
-}
-
-resPtr
-xf86AccResFromOS(resPtr pRes)
-{
- sparcDomainPtr pDomain;
- resRange range;
- int domain;
-
- for (domain = 1; domain < pciNumDomains; domain++) {
- if (!(pDomain = xf86DomainInfo[domain]))
- continue;
-
- /*
- * At minimum, the top and bottom resources must be claimed, so that
- * resources that are (or appear to be) unallocated can be relocated.
- */
- RANGE(range, 0x00000000u, 0x0009ffffu,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- RANGE(range, 0x000c0000u, 0x000effffu,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- RANGE(range, 0x000f0000u, 0x000fffffu,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- RANGE(range, pDomain->mem_size - 1, pDomain->mem_size - 1,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- RANGE(range, 0x00000000u, 0x00000000u,
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- RANGE(range, pDomain->io_size - 1, pDomain->io_size - 1,
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- }
-
- return pRes;
-}
-
-#endif /* !INCLUDE_XF86_NO_DOMAIN */
-
-#endif /* defined(sun) */
-
-#if defined(ARCH_PCI_PCI_BRIDGE)
-
-/* Definitions specific to Sun's APB P2P bridge (a.k.a. Simba) */
-#define APB_IO_ADDRESS_MAP 0xDE
-#define APB_MEM_ADDRESS_MAP 0xDF
-
-/*
- * Simba's can only occur on bus 0. Furthermore, Simba's must have a non-zero
- * device/function number because the Sabre interface they must connect to
- * occupies the 0:0:0 slot. Also, there can be only one Sabre interface in the
- * system, and therefore, only one Simba function can route any particular
- * resource. Thus, it is appropriate to use a single set of static variables
- * to hold the tag of the Simba function routing a VGA resource range at any
- * one time, and to test these variables for non-zero to determine whether or
- * not the Sabre would master-abort a VGA access (and kill the system).
- *
- * The trick is to determine when it is safe to re-route VGA, because doing so
- * re-routes much more.
- */
-static PCITAG simbavgaIOTag = 0, simbavgaMemTag = 0;
-static Bool simbavgaRoutingAllow = TRUE;
-
-/*
- * Scan the bus subtree rooted at 'bus' for a non-display device that might be
- * decoding the bottom 2 MB of I/O space and/or the bottom 512 MB of memory
- * space. Reset simbavgaRoutingAllow if such a device is found.
- *
- * XXX For now, this is very conservative and should be made less so as the
- * need arises.
- */
-static void
-simbaCheckBus(CARD16 pcicommand, int bus)
-{
- pciConfigPtr pPCI, *ppPCI = xf86scanpci(0);
-
- while ((pPCI = *ppPCI++)) {
- if (pPCI->busnum < bus)
- continue;
- if (pPCI->busnum > bus)
- break;
-
- /* XXX Assume all devices respect PCI disablement */
- if (!(pcicommand & pPCI->pci_command))
- continue;
-
- /* XXX This doesn't deal with mis-advertised classes */
- switch (pPCI->pci_base_class) {
- case PCI_CLASS_PREHISTORIC:
- if (pPCI->pci_sub_class == PCI_SUBCLASS_PREHISTORIC_VGA)
- continue; /* Ignore VGA */
- break;
-
- case PCI_CLASS_DISPLAY:
- continue;
-
- case PCI_CLASS_BRIDGE:
- switch (pPCI->pci_sub_class) {
- case PCI_SUBCLASS_BRIDGE_PCI:
- case PCI_SUBCLASS_BRIDGE_CARDBUS:
- /* Scan secondary bus */
- /* XXX First check bridge routing? */
- simbaCheckBus(pcicommand & pPCI->pci_command,
- PCI_SECONDARY_BUS_EXTRACT(pPCI->pci_pp_bus_register,
- pPCI->tag));
- if (!simbavgaRoutingAllow)
- return;
-
- default:
- break;
- }
-
- default:
- break;
- }
-
- /*
- * XXX We could check the device's bases here, but PCI doesn't limit
- * the device's decoding to them.
- */
-
- simbavgaRoutingAllow = FALSE;
- break;
- }
-}
-
-static pciConfigPtr
-simbaVerifyBus(int bus)
-{
- pciConfigPtr pPCI;
- if ((bus < 0) || (bus >= pciNumBuses) ||
- !pciBusInfo[bus] || !(pPCI = pciBusInfo[bus]->bridge) ||
- (pPCI->pci_device_vendor != DEVID(VENDOR_SUN, CHIP_SIMBA)))
- return NULL;
-
- return pPCI;
-}
-
-static CARD16
-simbaControlBridge(int bus, CARD16 mask, CARD16 value)
-{
- pciConfigPtr pPCI;
- CARD16 current = 0, tmp;
- CARD8 iomap, memmap;
-
- if ((pPCI = simbaVerifyBus(bus))) {
- /*
- * The Simba does not implement VGA enablement as described in the P2P
- * spec. It does however route I/O and memory in large enough chunks
- * so that we can determine were VGA resources would be routed
- * (including ISA VGA I/O aliases). We can allow changes to that
- * routing only under certain circumstances.
- */
- iomap = pciReadByte(pPCI->tag, APB_IO_ADDRESS_MAP);
- memmap = pciReadByte(pPCI->tag, APB_MEM_ADDRESS_MAP);
- if (iomap & memmap & 0x01) {
- current |= PCI_PCI_BRIDGE_VGA_EN;
- if ((mask & PCI_PCI_BRIDGE_VGA_EN) &&
- !(value & PCI_PCI_BRIDGE_VGA_EN)) {
- if (!simbavgaRoutingAllow) {
- xf86MsgVerb(X_WARNING, 3, "Attempt to disable VGA routing"
- " through Simba at %x:%x:%x disallowed.\n",
- pPCI->busnum, pPCI->devnum, pPCI->funcnum);
- value |= PCI_PCI_BRIDGE_VGA_EN;
- } else {
- pciWriteByte(pPCI->tag, APB_IO_ADDRESS_MAP,
- iomap & ~0x01);
- pciWriteByte(pPCI->tag, APB_MEM_ADDRESS_MAP,
- memmap & ~0x01);
- simbavgaIOTag = simbavgaMemTag = 0;
- }
- }
- } else {
- if (mask & value & PCI_PCI_BRIDGE_VGA_EN) {
- if (!simbavgaRoutingAllow) {
- xf86MsgVerb(X_WARNING, 3, "Attempt to enable VGA routing"
- " through Simba at %x:%x:%x disallowed.\n",
- pPCI->busnum, pPCI->devnum, pPCI->funcnum);
- value &= ~PCI_PCI_BRIDGE_VGA_EN;
- } else {
- if (pPCI->tag != simbavgaIOTag) {
- if (simbavgaIOTag) {
- tmp = pciReadByte(simbavgaIOTag,
- APB_IO_ADDRESS_MAP);
- pciWriteByte(simbavgaIOTag, APB_IO_ADDRESS_MAP,
- tmp & ~0x01);
- }
-
- pciWriteByte(pPCI->tag, APB_IO_ADDRESS_MAP,
- iomap | 0x01);
- simbavgaIOTag = pPCI->tag;
- }
-
- if (pPCI->tag != simbavgaMemTag) {
- if (simbavgaMemTag) {
- tmp = pciReadByte(simbavgaMemTag,
- APB_MEM_ADDRESS_MAP);
- pciWriteByte(simbavgaMemTag, APB_MEM_ADDRESS_MAP,
- tmp & ~0x01);
- }
-
- pciWriteByte(pPCI->tag, APB_MEM_ADDRESS_MAP,
- memmap | 0x01);
- simbavgaMemTag = pPCI->tag;
- }
- }
- }
- }
-
- /* Move on to master abort failure enablement (as per P2P spec) */
- tmp = pciReadWord(pPCI->tag, PCI_PCI_BRIDGE_CONTROL_REG);
- current |= tmp;
- if (tmp & PCI_PCI_BRIDGE_MASTER_ABORT_EN) {
- if ((mask & PCI_PCI_BRIDGE_MASTER_ABORT_EN) &&
- !(value & PCI_PCI_BRIDGE_MASTER_ABORT_EN))
- pciWriteWord(pPCI->tag, PCI_PCI_BRIDGE_CONTROL_REG,
- tmp & ~PCI_PCI_BRIDGE_MASTER_ABORT_EN);
- } else {
- if (mask & value & PCI_PCI_BRIDGE_MASTER_ABORT_EN)
- pciWriteWord(pPCI->tag, PCI_PCI_BRIDGE_CONTROL_REG,
- tmp | PCI_PCI_BRIDGE_MASTER_ABORT_EN);
- }
-
- /* Insert emulation of other P2P controls here */
- }
-
- return (current & ~mask) | (value & mask);
-}
-
-static void
-simbaGetBridgeResources(int bus,
- pointer *ppIoRes,
- pointer *ppMemRes,
- pointer *ppPmemRes)
-{
- pciConfigPtr pPCI = simbaVerifyBus(bus);
- resRange range;
- int i;
-
- if (!pPCI)
- return;
-
- if (ppIoRes) {
- xf86FreeResList(*ppIoRes);
- *ppIoRes = NULL;
-
- if (pPCI->pci_command & PCI_CMD_IO_ENABLE) {
- unsigned char iomap = pciReadByte(pPCI->tag, APB_IO_ADDRESS_MAP);
- if (simbavgaRoutingAllow)
- iomap |= 0x01;
- for (i = 0; i < 8; i++) {
- if (iomap & (1 << i)) {
- RANGE(range, i << 21, ((i + 1) << 21) - 1,
- RANGE_TYPE(ResExcIoBlock,
- xf86GetPciDomain(pPCI->tag)));
- *ppIoRes = xf86AddResToList(*ppIoRes, &range, -1);
- }
- }
- }
- }
-
- if (ppMemRes) {
- xf86FreeResList(*ppMemRes);
- *ppMemRes = NULL;
-
- if (pPCI->pci_command & PCI_CMD_MEM_ENABLE) {
- unsigned char memmap = pciReadByte(pPCI->tag, APB_MEM_ADDRESS_MAP);
- if (simbavgaRoutingAllow)
- memmap |= 0x01;
- for (i = 0; i < 8; i++) {
- if (memmap & (1 << i)) {
- RANGE(range, i << 29, ((i + 1) << 29) - 1,
- RANGE_TYPE(ResExcMemBlock,
- xf86GetPciDomain(pPCI->tag)));
- *ppMemRes = xf86AddResToList(*ppMemRes, &range, -1);
- }
- }
- }
- }
-
- if (ppPmemRes) {
- xf86FreeResList(*ppPmemRes);
- *ppPmemRes = NULL;
- }
-}
-
-void ARCH_PCI_PCI_BRIDGE(pciConfigPtr pPCI)
-{
- static pciBusFuncs_t simbaBusFuncs;
- pciBusInfo_t *pBusInfo;
- CARD16 pcicommand;
-
- if (pPCI->pci_device_vendor != DEVID(VENDOR_SUN, CHIP_SIMBA))
- return;
-
- pBusInfo = pPCI->businfo;
-
- simbaBusFuncs = *(pBusInfo->funcs);
- simbaBusFuncs.pciControlBridge = simbaControlBridge;
- simbaBusFuncs.pciGetBridgeResources = simbaGetBridgeResources;
-
- pBusInfo->funcs = &simbaBusFuncs;
-
- if (!simbavgaRoutingAllow)
- return;
-
- pcicommand = 0;
-
- if (pciReadByte(pPCI->tag, APB_IO_ADDRESS_MAP) & 0x01) {
- pcicommand |= PCI_CMD_IO_ENABLE;
- simbavgaIOTag = pPCI->tag;
- }
-
- if (pciReadByte(pPCI->tag, APB_MEM_ADDRESS_MAP) & 0x01) {
- pcicommand |= PCI_CMD_MEM_ENABLE;
- simbavgaMemTag = pPCI->tag;
- }
-
- if (!pcicommand)
- return;
-
- simbaCheckBus(pcicommand,
- PCI_SECONDARY_BUS_EXTRACT(pPCI->pci_pp_bus_register, pPCI->tag));
-}
-
-#endif /* defined(ARCH_PCI_PCI_BRIDGE) */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/xf86Pci.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/xf86Pci.h
deleted file mode 100644
index a8b7ef492..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/xf86Pci.h
+++ /dev/null
@@ -1,807 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/xf86Pci.h,v 1.39 2003/08/24 17:37:05 dawes Exp $ */
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * This file is derived in part from the original xf86_PCI.h that included
- * following copyright message:
- *
- * Copyright 1995 by Robin Cutshaw <robin@XFree86.Org>
- *
- * 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, and that the names of the above listed copyright holder(s)
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. The above listed
- * copyright holder(s) make(s) no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/*
- * This file contains just the public interface to the PCI code.
- * Drivers should use this file rather than Pci.h.
- */
-
-#ifndef _XF86PCI_H
-#define _XF86PCI_H 1
-#include <X11/Xarch.h>
-#include <X11/Xfuncproto.h>
-#include "misc.h"
-
-#define PCI_NOT_FOUND 0xFFFFFFFFU
-
-/*
- * PCI cfg space definitions (e.g. stuff right out of the PCI spec)
- */
-
-/* Device identification register */
-#define PCI_ID_REG 0x00
-
-/* Command and status register */
-#define PCI_CMD_STAT_REG 0x04
-#define PCI_CMD_BASE_REG 0x10
-#define PCI_CMD_BIOS_REG 0x30
-#define PCI_CMD_MASK 0xffff
-#define PCI_CMD_IO_ENABLE 0x01
-#define PCI_CMD_MEM_ENABLE 0x02
-#define PCI_CMD_MASTER_ENABLE 0x04
-#define PCI_CMD_SPECIAL_ENABLE 0x08
-#define PCI_CMD_INVALIDATE_ENABLE 0x10
-#define PCI_CMD_PALETTE_ENABLE 0x20
-#define PCI_CMD_PARITY_ENABLE 0x40
-#define PCI_CMD_STEPPING_ENABLE 0x80
-#define PCI_CMD_SERR_ENABLE 0x100
-#define PCI_CMD_BACKTOBACK_ENABLE 0x200
-#define PCI_CMD_BIOS_ENABLE 0x01
-
-/* base class */
-#define PCI_CLASS_REG 0x08
-#define PCI_CLASS_MASK 0xff000000
-#define PCI_CLASS_SHIFT 24
-#define PCI_CLASS_EXTRACT(x) \
- (((x) & PCI_CLASS_MASK) >> PCI_CLASS_SHIFT)
-
-/* base class values */
-#define PCI_CLASS_PREHISTORIC 0x00
-#define PCI_CLASS_MASS_STORAGE 0x01
-#define PCI_CLASS_NETWORK 0x02
-#define PCI_CLASS_DISPLAY 0x03
-#define PCI_CLASS_MULTIMEDIA 0x04
-#define PCI_CLASS_MEMORY 0x05
-#define PCI_CLASS_BRIDGE 0x06
-#define PCI_CLASS_COMMUNICATIONS 0x07
-#define PCI_CLASS_SYSPERIPH 0x08
-#define PCI_CLASS_INPUT 0x09
-#define PCI_CLASS_DOCKING 0x0a
-#define PCI_CLASS_PROCESSOR 0x0b
-#define PCI_CLASS_SERIALBUS 0x0c
-#define PCI_CLASS_WIRELESS 0x0d
-#define PCI_CLASS_I2O 0x0e
-#define PCI_CLASS_SATELLITE 0x0f
-#define PCI_CLASS_CRYPT 0x10
-#define PCI_CLASS_DATA_ACQUISTION 0x11
-#define PCI_CLASS_UNDEFINED 0xff
-
-/* sub class */
-#define PCI_SUBCLASS_MASK 0x00ff0000
-#define PCI_SUBCLASS_SHIFT 16
-#define PCI_SUBCLASS_EXTRACT(x) \
- (((x) & PCI_SUBCLASS_MASK) >> PCI_SUBCLASS_SHIFT)
-
-/* Sub class values */
-/* 0x00 prehistoric subclasses */
-#define PCI_SUBCLASS_PREHISTORIC_MISC 0x00
-#define PCI_SUBCLASS_PREHISTORIC_VGA 0x01
-
-/* 0x01 mass storage subclasses */
-#define PCI_SUBCLASS_MASS_STORAGE_SCSI 0x00
-#define PCI_SUBCLASS_MASS_STORAGE_IDE 0x01
-#define PCI_SUBCLASS_MASS_STORAGE_FLOPPY 0x02
-#define PCI_SUBCLASS_MASS_STORAGE_IPI 0x03
-#define PCI_SUBCLASS_MASS_STORAGE_MISC 0x80
-
-/* 0x02 network subclasses */
-#define PCI_SUBCLASS_NETWORK_ETHERNET 0x00
-#define PCI_SUBCLASS_NETWORK_TOKENRING 0x01
-#define PCI_SUBCLASS_NETWORK_FDDI 0x02
-#define PCI_SUBCLASS_NETWORK_MISC 0x80
-
-/* 0x03 display subclasses */
-#define PCI_SUBCLASS_DISPLAY_VGA 0x00
-#define PCI_SUBCLASS_DISPLAY_XGA 0x01
-#define PCI_SUBCLASS_DISPLAY_MISC 0x80
-
-/* 0x04 multimedia subclasses */
-#define PCI_SUBCLASS_MULTIMEDIA_VIDEO 0x00
-#define PCI_SUBCLASS_MULTIMEDIA_AUDIO 0x01
-#define PCI_SUBCLASS_MULTIMEDIA_MISC 0x80
-
-/* 0x05 memory subclasses */
-#define PCI_SUBCLASS_MEMORY_RAM 0x00
-#define PCI_SUBCLASS_MEMORY_FLASH 0x01
-#define PCI_SUBCLASS_MEMORY_MISC 0x80
-
-/* 0x06 bridge subclasses */
-#define PCI_SUBCLASS_BRIDGE_HOST 0x00
-#define PCI_SUBCLASS_BRIDGE_ISA 0x01
-#define PCI_SUBCLASS_BRIDGE_EISA 0x02
-#define PCI_SUBCLASS_BRIDGE_MC 0x03
-#define PCI_SUBCLASS_BRIDGE_PCI 0x04
-#define PCI_SUBCLASS_BRIDGE_PCMCIA 0x05
-#define PCI_SUBCLASS_BRIDGE_NUBUS 0x06
-#define PCI_SUBCLASS_BRIDGE_CARDBUS 0x07
-#define PCI_SUBCLASS_BRIDGE_RACEWAY 0x08
-#define PCI_SUBCLASS_BRIDGE_MISC 0x80
-#define PCI_IF_BRIDGE_PCI_SUBTRACTIVE 0x01
-
-/* 0x07 communications controller subclasses */
-#define PCI_SUBCLASS_COMMUNICATIONS_SERIAL 0x00
-#define PCI_SUBCLASS_COMMUNICATIONS_PARALLEL 0x01
-#define PCI_SUBCLASS_COMMUNICATIONS_MULTISERIAL 0x02
-#define PCI_SUBCLASS_COMMUNICATIONS_MODEM 0x03
-#define PCI_SUBCLASS_COMMUNICATIONS_MISC 0x80
-
-/* 0x08 generic system peripherals subclasses */
-#define PCI_SUBCLASS_SYSPERIPH_PIC 0x00
-#define PCI_SUBCLASS_SYSPERIPH_DMA 0x01
-#define PCI_SUBCLASS_SYSPERIPH_TIMER 0x02
-#define PCI_SUBCLASS_SYSPERIPH_RTC 0x03
-#define PCI_SUBCLASS_SYSPERIPH_HOTPCI 0x04
-#define PCI_SUBCLASS_SYSPERIPH_MISC 0x80
-
-/* 0x09 input device subclasses */
-#define PCI_SUBCLASS_INPUT_KEYBOARD 0x00
-#define PCI_SUBCLASS_INPUT_DIGITIZER 0x01
-#define PCI_SUBCLASS_INPUT_MOUSE 0x02
-#define PCI_SUBCLASS_INPUT_SCANNER 0x03
-#define PCI_SUBCLASS_INPUT_GAMEPORT 0x04
-#define PCI_SUBCLASS_INPUT_MISC 0x80
-
-/* 0x0a docking station subclasses */
-#define PCI_SUBCLASS_DOCKING_GENERIC 0x00
-#define PCI_SUBCLASS_DOCKING_MISC 0x80
-
-/* 0x0b processor subclasses */
-#define PCI_SUBCLASS_PROCESSOR_386 0x00
-#define PCI_SUBCLASS_PROCESSOR_486 0x01
-#define PCI_SUBCLASS_PROCESSOR_PENTIUM 0x02
-#define PCI_SUBCLASS_PROCESSOR_ALPHA 0x10
-#define PCI_SUBCLASS_PROCESSOR_POWERPC 0x20
-#define PCI_SUBCLASS_PROCESSOR_MIPS 0x30
-#define PCI_SUBCLASS_PROCESSOR_COPROC 0x40
-
-/* 0x0c serial bus controller subclasses */
-#define PCI_SUBCLASS_SERIAL_FIREWIRE 0x00
-#define PCI_SUBCLASS_SERIAL_ACCESS 0x01
-#define PCI_SUBCLASS_SERIAL_SSA 0x02
-#define PCI_SUBCLASS_SERIAL_USB 0x03
-#define PCI_SUBCLASS_SERIAL_FIBRECHANNEL 0x04
-#define PCI_SUBCLASS_SERIAL_SMBUS 0x05
-
-/* 0x0d wireless controller subclasses */
-#define PCI_SUBCLASS_WIRELESS_IRDA 0x00
-#define PCI_SUBCLASS_WIRELESS_CONSUMER_IR 0x01
-#define PCI_SUBCLASS_WIRELESS_RF 0x02
-#define PCI_SUBCLASS_WIRELESS_MISC 0x80
-
-/* 0x0e intelligent I/O controller subclasses */
-#define PCI_SUBCLASS_I2O_I2O 0x00
-
-/* 0x0f satellite communications controller subclasses */
-#define PCI_SUBCLASS_SATELLITE_TV 0x01
-#define PCI_SUBCLASS_SATELLITE_AUDIO 0x02
-#define PCI_SUBCLASS_SATELLITE_VOICE 0x03
-#define PCI_SUBCLASS_SATELLITE_DATA 0x04
-
-/* 0x10 encryption/decryption controller subclasses */
-#define PCI_SUBCLASS_CRYPT_NET_COMPUTING 0x00
-#define PCI_SUBCLASS_CRYPT_ENTERTAINMENT 0x10
-#define PCI_SUBCLASS_CRYPT_MISC 0x80
-
-/* 0x11 data acquisition and signal processing controller subclasses */
-#define PCI_SUBCLASS_DATAACQ_DPIO 0x00
-#define PCI_SUBCLASS_DATAACQ_MISC 0x80
-
-
-/* Header */
-#define PCI_HEADER_MISC 0x0c
-#define PCI_HEADER_MULTIFUNCTION 0x00800000
-
-/* Interrupt configration register */
-#define PCI_INTERRUPT_REG 0x3c
-#define PCI_INTERRUPT_PIN_MASK 0x0000ff00
-#define PCI_INTERRUPT_PIN_EXTRACT(x) \
- ((((x) & PCI_INTERRUPT_PIN_MASK) >> 8) & 0xff)
-#define PCI_INTERRUPT_PIN_NONE 0x00
-#define PCI_INTERRUPT_PIN_A 0x01
-#define PCI_INTERRUPT_PIN_B 0x02
-#define PCI_INTERRUPT_PIN_C 0x03
-#define PCI_INTERRUPT_PIN_D 0x04
-
-#define PCI_INTERRUPT_LINE_MASK 0x000000ff
-#define PCI_INTERRUPT_LINE_EXTRACT(x) \
- ((((x) & PCI_INTERRUPT_LINE_MASK) >> 0) & 0xff)
-#define PCI_INTERRUPT_LINE_INSERT(x,v) \
- (((x) & ~PCI_INTERRUPT_LINE_MASK) | ((v) << 0))
-
-/* Base registers */
-#define PCI_MAP_REG_START 0x10
-#define PCI_MAP_REG_END 0x28
-#define PCI_MAP_ROM_REG 0x30
-
-#define PCI_MAP_MEMORY 0x00000000
-#define PCI_MAP_IO 0x00000001
-
-#define PCI_MAP_MEMORY_TYPE 0x00000007
-#define PCI_MAP_IO_TYPE 0x00000003
-
-#define PCI_MAP_MEMORY_TYPE_32BIT 0x00000000
-#define PCI_MAP_MEMORY_TYPE_32BIT_1M 0x00000002
-#define PCI_MAP_MEMORY_TYPE_64BIT 0x00000004
-#define PCI_MAP_MEMORY_TYPE_MASK 0x00000006
-#define PCI_MAP_MEMORY_CACHABLE 0x00000008
-#define PCI_MAP_MEMORY_ATTR_MASK 0x0000000e
-#define PCI_MAP_MEMORY_ADDRESS_MASK 0xfffffff0
-
-#define PCI_MAP_IO_ATTR_MASK 0x00000003
-
-#define PCI_MAP_IS_IO(b) ((b) & PCI_MAP_IO)
-#define PCI_MAP_IS_MEM(b) (!PCI_MAP_IS_IO(b))
-
-#define PCI_MAP_IS64BITMEM(b) \
- (((b) & PCI_MAP_MEMORY_TYPE) == PCI_MAP_MEMORY_TYPE_64BIT)
-
-#define PCIGETMEMORY(b) ((b) & PCI_MAP_MEMORY_ADDRESS_MASK)
-#define PCIGETMEMORY64HIGH(b) (*((CARD32*)&(b) + 1))
-#define PCIGETMEMORY64(b) \
- (PCIGETMEMORY(b) | ((CARD64)PCIGETMEMORY64HIGH(b) << 32))
-
-#define PCI_MAP_IO_ADDRESS_MASK 0xfffffffc
-
-#define PCIGETIO(b) ((b) & PCI_MAP_IO_ADDRESS_MASK)
-
-#define PCI_MAP_ROM_DECODE_ENABLE 0x00000001
-#define PCI_MAP_ROM_ADDRESS_MASK 0xfffff800
-
-#define PCIGETROM(b) ((b) & PCI_MAP_ROM_ADDRESS_MASK)
-
-/* PCI-PCI bridge mapping registers */
-#define PCI_PCI_BRIDGE_BUS_REG 0x18
-#define PCI_SUBORDINATE_BUS_MASK 0x00ff0000
-#define PCI_SECONDARY_BUS_MASK 0x0000ff00
-#define PCI_PRIMARY_BUS_MASK 0x000000ff
-
-#define PCI_PCI_BRIDGE_IO_REG 0x1c
-#define PCI_PCI_BRIDGE_MEM_REG 0x20
-#define PCI_PCI_BRIDGE_PMEM_REG 0x24
-
-#define PCI_PPB_IOBASE_EXTRACT(x) (((x) << 8) & 0xFF00)
-#define PCI_PPB_IOLIMIT_EXTRACT(x) (((x) << 0) & 0xFF00)
-
-#define PCI_PPB_MEMBASE_EXTRACT(x) (((x) << 16) & 0xFFFF0000)
-#define PCI_PPB_MEMLIMIT_EXTRACT(x) (((x) << 0) & 0xFFFF0000)
-
-#define PCI_PCI_BRIDGE_CONTROL_REG 0x3E
-#define PCI_PCI_BRIDGE_PARITY_EN 0x01
-#define PCI_PCI_BRIDGE_SERR_EN 0x02
-#define PCI_PCI_BRIDGE_ISA_EN 0x04
-#define PCI_PCI_BRIDGE_VGA_EN 0x08
-#define PCI_PCI_BRIDGE_MASTER_ABORT_EN 0x20
-#define PCI_PCI_BRIDGE_SECONDARY_RESET 0x40
-#define PCI_PCI_BRIDGE_FAST_B2B_EN 0x80
-/* header type 2 extensions */
-#define PCI_CB_BRIDGE_CTL_CB_RESET 0x40 /* CardBus reset */
-#define PCI_CB_BRIDGE_CTL_16BIT_INT 0x80 /* Enable interrupt for 16-bit cards */
-#define PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 0x100
-#define PCI_CB_BRIDGE_CTL_PREFETCH_MEM1 0x200
-#define PCI_CB_BRIDGE_CTL_POST_WRITES 0x400
-
-#define PCI_CB_SEC_STATUS_REG 0x16 /* Secondary status */
-#define PCI_CB_PRIMARY_BUS_REG 0x18 /* PCI bus number */
-#define PCI_CB_CARD_BUS_REG 0x19 /* CardBus bus number */
-#define PCI_CB_SUBORDINATE_BUS_REG 0x1a /* Subordinate bus number */
-#define PCI_CB_LATENCY_TIMER_REG 0x1b /* CardBus latency timer */
-#define PCI_CB_MEM_BASE_0_REG 0x1c
-#define PCI_CB_MEM_LIMIT_0_REG 0x20
-#define PCI_CB_MEM_BASE_1_REG 0x24
-#define PCI_CB_MEM_LIMIT_1_REG 0x28
-#define PCI_CB_IO_BASE_0_REG 0x2c
-#define PCI_CB_IO_LIMIT_0_REG 0x30
-#define PCI_CB_IO_BASE_1_REG 0x34
-#define PCI_CB_IO_LIMIT_1_REG 0x38
-#define PCI_CB_BRIDGE_CONTROL_REG 0x3E
-
-#define PCI_CB_IO_RANGE_MASK ~0x03
-#define PCI_CB_IOBASE(x) (x & PCI_CB_IO_RANGE_MASK)
-#define PCI_CB_IOLIMIT(x) ((x & PCI_CB_IO_RANGE_MASK) + 3)
-
-/* Subsystem identification register */
-#define PCI_SUBSYSTEM_ID_REG 0x2c
-
-/* User defined cfg space regs */
-#define PCI_REG_USERCONFIG 0x40
-#define PCI_OPTION_REG 0x40
-
-/*
- * Typedefs, etc...
- */
-
-/* Primitive Types */
-typedef unsigned long ADDRESS; /* Memory/PCI address */
-typedef unsigned long IOADDRESS; /* Must be large enough for a pointer */
-typedef unsigned long PCITAG;
-
-/*
- * PCI configuration space
- */
-typedef struct pci_cfg_regs {
- /* start of official PCI config space header */
- union { /* Offset 0x0 - 0x3 */
- CARD32 device_vendor;
- struct {
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- CARD16 device;
- CARD16 vendor;
-#else
- CARD16 vendor;
- CARD16 device;
-#endif
- } dv;
- } dv_id;
-
- union { /* Offset 0x4 - 0x8 */
- CARD32 status_command;
- struct {
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- CARD16 status;
- CARD16 command;
-#else
- CARD16 command;
- CARD16 status;
-#endif
- } sc;
- } stat_cmd;
-
- union { /* Offset 0x8 - 0xb */
- CARD32 class_revision;
- struct {
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- CARD8 base_class;
- CARD8 sub_class;
- CARD8 prog_if;
- CARD8 rev_id;
-#else
- CARD8 rev_id;
- CARD8 prog_if;
- CARD8 sub_class;
- CARD8 base_class;
-#endif
- } cr;
- } class_rev;
-
- union { /* Offset 0xc - 0xf */
- CARD32 bist_header_latency_cache;
- struct {
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- CARD8 bist;
- CARD8 header_type;
- CARD8 latency_timer;
- CARD8 cache_line_size;
-#else
- CARD8 cache_line_size;
- CARD8 latency_timer;
- CARD8 header_type;
- CARD8 bist;
-#endif
- } bhlc;
- } bhlc;
- union { /* Offset 0x10 - 0x3b */
- struct { /* header type 2 */
- CARD32 cg_rsrvd1; /* 0x10 */
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- CARD16 secondary_status; /* 0x16 */
- CARD16 cg_rsrvd2; /* 0x14 */
-
- union {
- CARD32 cg_bus_reg;
- struct {
- CARD8 latency_timer; /* 0x1b */
- CARD8 subordinate_bus_number; /* 0x1a */
- CARD8 cardbus_bus_number; /* 0x19 */
- CARD8 primary_bus_number; /* 0x18 */
- } cgbr;
- } cgbr;
-#else
- CARD16 cg_rsrvd2; /* 0x14 */
- CARD16 secondary_status; /* 0x16 */
-
- union {
- CARD32 cg_bus_reg;
- struct {
- CARD8 primary_bus_number; /* 0x18 */
- CARD8 cardbus_bus_number; /* 0x19 */
- CARD8 subordinate_bus_number; /* 0x1a */
- CARD8 latency_timer; /* 0x1b */
- } cgbr;
- } cgbr;
-#endif
- CARD32 mem_base0; /* 0x1c */
- CARD32 mem_limit0; /* 0x20 */
- CARD32 mem_base1; /* 0x24 */
- CARD32 mem_limit1; /* 0x28 */
- CARD32 io_base0; /* 0x2c */
- CARD32 io_limit0; /* 0x30 */
- CARD32 io_base1; /* 0x34 */
- CARD32 io_limit1; /* 0x38 */
- } cg;
- struct {
- union { /* Offset 0x10 - 0x27 */
- struct { /* header type 0 */
- CARD32 dv_base0;
- CARD32 dv_base1;
- CARD32 dv_base2;
- CARD32 dv_base3;
- CARD32 dv_base4;
- CARD32 dv_base5;
- } dv;
- struct { /* header type 1 */
- CARD32 bg_rsrvd[2];
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- union {
- CARD32 pp_bus_reg;
- struct {
- CARD8 secondary_latency_timer;
- CARD8 subordinate_bus_number;
- CARD8 secondary_bus_number;
- CARD8 primary_bus_number;
- } ppbr;
- } ppbr;
-
- CARD16 secondary_status;
- CARD8 io_limit;
- CARD8 io_base;
-
- CARD16 mem_limit;
- CARD16 mem_base;
-
- CARD16 prefetch_mem_limit;
- CARD16 prefetch_mem_base;
-#else
- union {
- CARD32 pp_bus_reg;
- struct {
- CARD8 primary_bus_number;
- CARD8 secondary_bus_number;
- CARD8 subordinate_bus_number;
- CARD8 secondary_latency_timer;
- } ppbr;
- } ppbr;
-
- CARD8 io_base;
- CARD8 io_limit;
- CARD16 secondary_status;
-
- CARD16 mem_base;
- CARD16 mem_limit;
-
- CARD16 prefetch_mem_base;
- CARD16 prefetch_mem_limit;
-#endif
- } bg;
- } bc;
- union { /* Offset 0x28 - 0x2b */
- CARD32 rsvd1;
- CARD32 pftch_umem_base;
- CARD32 cardbus_cis_ptr;
- } um_c_cis;
- union { /* Offset 0x2c - 0x2f */
- CARD32 subsys_card_vendor;
- CARD32 pftch_umem_limit;
- CARD32 rsvd2;
- struct {
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- CARD16 subsys_card;
- CARD16 subsys_vendor;
-#else
- CARD16 subsys_vendor;
- CARD16 subsys_card;
-#endif
- } ssys;
- } um_ssys_id;
- union { /* Offset 0x30 - 0x33 */
- CARD32 baserom;
- struct {
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- CARD16 io_ulimit;
- CARD16 io_ubase;
-#else
- CARD16 io_ubase;
- CARD16 io_ulimit;
-#endif
- } b_u_io;
- } uio_rom;
- struct {
- CARD32 rsvd3; /* Offset 0x34 - 0x37 */
- CARD32 rsvd4; /* Offset 0x38 - 0x3b */
- } rsvd;
- } cd;
- } cx;
- union { /* Offset 0x3c - 0x3f */
- union { /* header type 0 */
- CARD32 max_min_ipin_iline;
- struct {
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- CARD8 max_lat;
- CARD8 min_gnt;
- CARD8 int_pin;
- CARD8 int_line;
-#else
- CARD8 int_line;
- CARD8 int_pin;
- CARD8 min_gnt;
- CARD8 max_lat;
-#endif
- } mmii;
- } mmii;
- struct { /* header type 1 */
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- CARD16 bridge_control; /* upper 8 bits reserved */
- CARD8 rsvd2;
- CARD8 rsvd1;
-#else
- CARD8 rsvd1;
- CARD8 rsvd2;
- CARD16 bridge_control; /* upper 8 bits reserved */
-#endif
- } bctrl;
- } bm;
- union { /* Offset 0x40 - 0xff */
- CARD32 dwords[48];
- CARD8 bytes[192];
- } devspf;
-} pciCfgRegs;
-
-typedef union pci_cfg_spc {
- pciCfgRegs regs;
- CARD32 dwords[256/sizeof(CARD32)];
- CARD8 bytes[256/sizeof(CARD8)];
-} pciCfgSpc;
-
-/*
- * Data structure returned by xf86scanpci including contents of
- * PCI config space header
- */
-typedef struct pci_device {
- PCITAG tag;
- int busnum;
- int devnum;
- int funcnum;
- pciCfgSpc cfgspc;
- int basesize[7]; /* number of bits in base addr allocations */
- Bool minBasesize;
- CARD32 listed_class;
- pointer businfo; /* pointer to secondary's bus info structure */
- Bool fakeDevice; /* Device added by system chipset support */
-} pciDevice, *pciConfigPtr;
-
-typedef enum {
- PCI_MEM,
- PCI_MEM_SIZE,
- PCI_MEM_SPARSE_BASE,
- PCI_MEM_SPARSE_MASK,
- PCI_IO,
- PCI_IO_SIZE,
- PCI_IO_SPARSE_BASE,
- PCI_IO_SPARSE_MASK
-} PciAddrType;
-
-#define pci_device_vendor cfgspc.regs.dv_id.device_vendor
-#define pci_vendor cfgspc.regs.dv_id.dv.vendor
-#define pci_device cfgspc.regs.dv_id.dv.device
-#define pci_status_command cfgspc.regs.stat_cmd.status_command
-#define pci_command cfgspc.regs.stat_cmd.sc.command
-#define pci_status cfgspc.regs.stat_cmd.sc.status
-#define pci_class_revision cfgspc.regs.class_rev.class_revision
-#define pci_rev_id cfgspc.regs.class_rev.cr.rev_id
-#define pci_prog_if cfgspc.regs.class_rev.cr.prog_if
-#define pci_sub_class cfgspc.regs.class_rev.cr.sub_class
-#define pci_base_class cfgspc.regs.class_rev.cr.base_class
-#define pci_bist_header_latency_cache cfgspc.regs.bhlc.bist_header_latency_cache
-#define pci_cache_line_size cfgspc.regs.bhlc.bhlc.cache_line_size
-#define pci_latency_timer cfgspc.regs.bhlc.bhlc.latency_timer
-#define pci_header_type cfgspc.regs.bhlc.bhlc.header_type
-#define pci_bist cfgspc.regs.bhlc.bhlc.bist
-#define pci_cb_secondary_status cfgspc.regs.cx.cg.secondary_status
-#define pci_cb_bus_register cfgspc.regs.cx.cg.cgbr.cg_bus_reg
-#define pci_cb_primary_bus_number cfgspc.regs.cx.cg.cgbr.cgbr.primary_bus_number
-#define pci_cb_cardbus_bus_number cfgspc.regs.cx.cg.cgbr.cgbr.cardbus_bus_number
-#define pci_cb_subordinate_bus_number cfgspc.regs.cx.cg.cgbr.cgbr.subordinate_bus_number
-#define pci_cb_latency_timer cfgspc.regs.cx.cg.cgbr.cgbr.latency_timer
-#define pci_cb_membase0 cfgspc.regs.cx.cg.mem_base0
-#define pci_cb_memlimit0 cfgspc.regs.cx.cg.mem_limit0
-#define pci_cb_membase1 cfgspc.regs.cx.cg.mem_base1
-#define pci_cb_memlimit1 cfgspc.regs.cx.cg.mem_limit1
-#define pci_cb_iobase0 cfgspc.regs.cx.cg.io_base0
-#define pci_cb_iolimit0 cfgspc.regs.cx.cg.io_limit0
-#define pci_cb_iobase1 cfgspc.regs.cx.cg.io_base1
-#define pci_cb_iolimit1 cfgspc.regs.cx.cg.io_limit1
-#define pci_base0 cfgspc.regs.cx.cd.bc.dv.dv_base0
-#define pci_base1 cfgspc.regs.cx.cd.bc.dv.dv_base1
-#define pci_base2 cfgspc.regs.cx.cd.bc.dv.dv_base2
-#define pci_base3 cfgspc.regs.cx.cd.bc.dv.dv_base3
-#define pci_base4 cfgspc.regs.cx.cd.bc.dv.dv_base4
-#define pci_base5 cfgspc.regs.cx.cd.bc.dv.dv_base5
-#define pci_cardbus_cis_ptr cfgspc.regs.cx.cd.umem_c_cis.cardbus_cis_ptr
-#define pci_subsys_card_vendor cfgspc.regs.cx.cd.um_ssys_id.subsys_card_vendor
-#define pci_subsys_vendor cfgspc.regs.cx.cd.um_ssys_id.ssys.subsys_vendor
-#define pci_subsys_card cfgspc.regs.cx.cd.um_ssys_id.ssys.subsys_card
-#define pci_baserom cfgspc.regs.cx.cd.uio_rom.baserom
-#define pci_pp_bus_register cfgspc.regs.cx.cd.bc.bg.ppbr.pp_bus_reg
-#define pci_primary_bus_number cfgspc.regs.cx.cd.bc.bg.ppbr.ppbr.primary_bus_number
-#define pci_secondary_bus_number cfgspc.regs.cx.cd.bc.bg.ppbr.ppbr.secondary_bus_number
-#define pci_subordinate_bus_number cfgspc.regs.cx.cd.bc.bg.ppbr.ppbr.subordinate_bus_number
-#define pci_secondary_latency_timer cfgspc.regs.cx.cd.bc.bg.ppbr.ppbr.secondary_latency_timer
-#define pci_io_base cfgspc.regs.cx.cd.bc.bg.io_base
-#define pci_io_limit cfgspc.regs.cx.cd.bc.bg.io_limit
-#define pci_secondary_status cfgspc.regs.cx.cd.bc.bg.secondary_status
-#define pci_mem_base cfgspc.regs.cx.cd.bc.bg.mem_base
-#define pci_mem_limit cfgspc.regs.cx.cd.bc.bg.mem_limit
-#define pci_prefetch_mem_base cfgspc.regs.cx.cd.bc.bg.prefetch_mem_base
-#define pci_prefetch_mem_limit cfgspc.regs.cx.cd.bc.bg.prefetch_mem_limit
-#define pci_rsvd1 cfgspc.regs.cx.cd.um_c_cis.rsvd1
-#define pci_rsvd2 cfgspc.regs.cx.cd.um_ssys_id.rsvd2
-#define pci_prefetch_upper_mem_base cfgspc.regs.cx.cd.um_c_cis.pftch_umem_base
-#define pci_prefetch_upper_mem_limit cfgspc.regs.cx.cd.um_ssys_id.pftch_umem_limit
-#define pci_upper_io_base cfgspc.regs.cx.cd.uio_rom.b_u_io.io_ubase
-#define pci_upper_io_limit cfgspc.regs.cx.cd.uio_rom.b_u_io.io_ulimit
-#define pci_int_line cfgspc.regs.bm.mmii.mmii.int_line
-#define pci_int_pin cfgspc.regs.bm.mmii.mmii.int_pin
-#define pci_min_gnt cfgspc.regs.bm.mmii.mmii.min_gnt
-#define pci_max_lat cfgspc.regs.bm.mmii.mmii.max_lat
-#define pci_max_min_ipin_iline cfgspc.regs.bm.mmii.max_min_ipin_iline
-#define pci_bridge_control cfgspc.regs.bm.bctrl.bridge_control
-#define pci_user_config cfgspc.regs.devspf.dwords[0]
-#define pci_user_config_0 cfgspc.regs.devspf.bytes[0]
-#define pci_user_config_1 cfgspc.regs.devspf.bytes[1]
-#define pci_user_config_2 cfgspc.regs.devspf.bytes[2]
-#define pci_user_config_3 cfgspc.regs.devspf.bytes[3]
-
-typedef enum {
- PCI_BIOS_PC = 0,
- PCI_BIOS_OPEN_FIRMARE,
- PCI_BIOS_HP_PA_RISC,
- PCI_BIOS_OTHER
-} PciBiosType;
-
-/* Public PCI access functions */
-void pciInit(void);
-PCITAG pciFindFirst(CARD32 id, CARD32 mask);
-PCITAG pciFindNext(void);
-CARD32 pciReadLong(PCITAG tag, int offset);
-CARD16 pciReadWord(PCITAG tag, int offset);
-CARD8 pciReadByte(PCITAG tag, int offset);
-void pciWriteLong(PCITAG tag, int offset, CARD32 val);
-void pciWriteWord(PCITAG tag, int offset, CARD16 val);
-void pciWriteByte(PCITAG tag, int offset, CARD8 val);
-void pciSetBitsLong(PCITAG tag, int offset, CARD32 mask, CARD32 val);
-void pciSetBitsByte(PCITAG tag, int offset, CARD8 mask, CARD8 val);
-ADDRESS pciBusAddrToHostAddr(PCITAG tag, PciAddrType type, ADDRESS addr);
-ADDRESS pciHostAddrToBusAddr(PCITAG tag, PciAddrType type, ADDRESS addr);
-PCITAG pciTag(int busnum, int devnum, int funcnum);
-int pciGetBaseSize(PCITAG tag, int indx, Bool destructive, Bool *min);
-CARD32 pciCheckForBrokenBase(PCITAG tag,int basereg);
-pointer xf86MapPciMem(int ScreenNum, int Flags, PCITAG Tag,
- ADDRESS Base, unsigned long Size);
-int xf86ReadPciBIOS(unsigned long Offset, PCITAG Tag, int basereg,
- unsigned char *Buf, int Len);
-int xf86ReadPciBIOSByType(unsigned long Offset, PCITAG Tag,
- int basereg, unsigned char *Buf,
- int Len, PciBiosType Type);
-int xf86GetAvailablePciBIOSTypes(PCITAG Tag, int basereg,
- PciBiosType *Buf);
-pciConfigPtr *xf86scanpci(int flags);
-
-extern int pciNumBuses;
-
-/* Domain access functions. Some of these probably shouldn't be public */
-int xf86GetPciDomain(PCITAG tag);
-pointer xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag,
- ADDRESS Base, unsigned long Size);
-IOADDRESS xf86MapDomainIO(int ScreenNum, int Flags, PCITAG Tag,
- IOADDRESS Base, unsigned long Size);
-int xf86ReadDomainMemory(PCITAG Tag, ADDRESS Base, int Len,
- unsigned char *Buf);
-
-typedef enum {
- ROM_BASE_PRESET = -2,
- ROM_BASE_BIOS,
- ROM_BASE_MEM0 = 0,
- ROM_BASE_MEM1,
- ROM_BASE_MEM2,
- ROM_BASE_MEM3,
- ROM_BASE_MEM4,
- ROM_BASE_MEM5,
- ROM_BASE_FIND
-} romBaseSource;
-
-#endif /* _XF86PCI_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/xf86Sbus.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/xf86Sbus.h
deleted file mode 100644
index 21b05cba4..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/xf86Sbus.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Platform specific SBUS and OpenPROM access declarations.
- *
- * Copyright (C) 2000 Jakub Jelinek (jakub@redhat.com)
- *
- * 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 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 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
- * JAKUB JELINEK 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.
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/xf86Sbus.h,v 1.3 2001/04/20 17:02:43 tsi Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _XF86_SBUS_H
-#define _XF86_SBUS_H
-
-#if defined(linux)
-#include <asm/types.h>
-#include <linux/fb.h>
-#include <asm/fbio.h>
-#include <asm/openpromio.h>
-#elif defined(SVR4)
-#include <sys/fbio.h>
-#include <sys/openpromio.h>
-#elif defined(__OpenBSD__) && defined(__sparc64__)
-/* XXX */
-#elif defined(CSRG_BASED)
-#if defined(__FreeBSD__)
-#include <sys/types.h>
-#include <sys/fbio.h>
-#include <dev/ofw/openpromio.h>
-#else
-#include <machine/fbio.h>
-#endif
-#else
-#include <sun/fbio.h>
-#endif
-
-#ifndef FBTYPE_SUNGP3
-#define FBTYPE_SUNGP3 -1
-#endif
-#ifndef FBTYPE_MDICOLOR
-#define FBTYPE_MDICOLOR -1
-#endif
-#ifndef FBTYPE_SUNLEO
-#define FBTYPE_SUNLEO -1
-#endif
-#ifndef FBTYPE_TCXCOLOR
-#define FBTYPE_TCXCOLOR -1
-#endif
-#ifndef FBTYPE_CREATOR
-#define FBTYPE_CREATOR -1
-#endif
-
-#endif /* _XF86_SBUS_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c
deleted file mode 100644
index 3d219c86f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c
+++ /dev/null
@@ -1,1133 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c,v 1.8 2004/01/16 15:39:38 tsi Exp $ */
-/*
- * Copyright (C) 2002-2003 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-/*
- * This file contains the glue necessary for support of HP's ZX1 chipset.
- * Keep in mind that this chipset is used in both Itanium2 and PA-RISC
- * architectures.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "zx1PCI.h"
-#include "xf86.h"
-#include "xf86_OSlib.h"
-#include "Pci.h"
-
-#define MIO_BASE 0xFED00000UL /* mio register base */
-#define MIO_SIZE 0x00002000UL /* 8k, minimum */
-
-/* ZX1 mio register definitions */
-#define MIO_FUNCTION0 0x0000U
-
-#define MODULE_INFO 0x0100U
-#define STATUS_CONTROL 0x0108U
-#define DILLON_PRESENT 0x02UL
-
-#define LMMIO_DIR_BASE0 0x0300U
-#define LMMIO_DIR_MASK0 0x0308U
-#define LMMIO_DIR_ROUTE0 0x0310U
-#define LMMIO_DIR_BASE1 0x0318U
-#define LMMIO_DIR_MASK1 0x0320U
-#define LMMIO_DIR_ROUTE1 0x0328U
-#define LMMIO_DIR_BASE2 0x0330U
-#define LMMIO_DIR_MASK2 0x0338U
-#define LMMIO_DIR_ROUTE2 0x0340U
-#define LMMIO_DIR_BASE3 0x0348U
-#define LMMIO_DIR_MASK3 0x0350U
-#define LMMIO_DIR_ROUTE3 0x0358U
-#define LMMIO_DIST_BASE 0x0360U
-#define LMMIO_DIST_MASK 0x0368U
-#define LMMIO_DIST_ROUTE 0x0370U
-#define GMMIO_DIST_BASE 0x0378U
-#define PORT_DISABLE 0x02UL
-#define MAP_TO_LMMIO 0x04UL
-#define GMMIO_DIST_MASK 0x0380U
-#define GMMIO_DIST_ROUTE 0x0388U
-#define IOS_DIST_BASE 0x0390U
-#define IOS_DIST_MASK 0x0398U
-#define IOS_DIST_ROUTE 0x03A0U
-#define ROPE_CONFIG_BASE 0x03A8U
-#define VGA_ROUTE 0x03B0U
-#define VGA_ENABLE 0x8000000000000000UL
-#define VGA_LIGHT 0x4000000000000000UL
-
-#define IOS_DIR_BASE 0x03C0U
-#define IOS_DIR_MASK 0x03C8U
-#define IOS_DIR_ROUTE 0x03D0U
-#define IOS_BASE 0x03D8U
-
-#define MIO_FUNCTION1 0x1000U
-
-#define ROPE_CONFIG 0x1040U
-#define ROPE_D0 0x0100UL
-#define ROPE_D2 0x0200UL
-#define ROPE_D4 0x0400UL
-#define ROPE_D6 0x0800UL
-#define ROPE_Q0 0x1000UL
-#define ROPE_Q4 0x2000UL
-
-#define LBA_PORT0_CNTRL 0x1200U
-#define LBA_PORT1_CNTRL 0x1208U
-#define LBA_PORT2_CNTRL 0x1210U
-#define LBA_PORT3_CNTRL 0x1218U
-#define LBA_PORT4_CNTRL 0x1220U
-#define LBA_PORT5_CNTRL 0x1228U
-#define LBA_PORT6_CNTRL 0x1230U
-#define LBA_PORT7_CNTRL 0x1238U
-#define LBA_RESET_FUNCTION 0x0000000001UL
-#define LBA_CLEAR_ERROR 0x0000000010UL
-#define LBA_HARD_FAIL 0x0000000040UL
-#define LBA_RESET_COMPLETE 0x0100000000UL
-
-#define ROPE_PAGE_CONTROL 0x1418U
-
-/*
- * Total ioa configuration space size is actually 128k, but we only need the
- * first 64k.
- */
-#define IOA_SIZE 0x00010000UL
-
-/* ZX1 ioa register definitions */
-#define IOA_CONFIG_ADDR 0x0040U
-#define IOA_CONFIG_DATA 0x0048U
-
-#define IOA_SECONDARY_BUS 0x0058U
-#define IOA_SUBORDINATE_BUS 0x0059U
-
-#define IOA_CONTROL 0x0108U
-#define IOA_RESET_FUNCTION 0x0000000001UL
-#define IOA_FORWARD_VGA 0x0000000008UL
-#define IOA_CLEAR_ERROR 0x0000000010UL
-#define IOA_HARD_FAIL 0x0000000040UL
-#define IOA_RESET_COMPLETE 0x0100000000UL
-
-#define IOA_LMMIO_BASE 0x0200U
-#define IOA_LMMIO_MASK 0x0208U
-#define IOA_GMMIO_BASE 0x0210U
-#define IOA_GMMIO_MASK 0x0218U
-#define IOA_WLMMIO_BASE 0x0220U
-#define IOA_WLMMIO_MASK 0x0228U
-#define IOA_WGMMIO_BASE 0x0230U
-#define IOA_WGMMIO_MASK 0x0238U
-#define IOA_IOS_BASE 0x0240U
-#define IOA_IOS_MASK 0x0248U
-#define IOA_ELMMIO_BASE 0x0250U
-#define IOA_ELMMIO_MASK 0x0258U
-#define IOA_EIOS_BASE 0x0260U
-#define IOA_EIOS_MASK 0x0268U
-#define IOA_GLOBAL_MASK 0x0270U
-#define IOA_SLAVE_CONTROL 0x0278U
-#define IOA_VGA_PEER_ENABLE 0x2000UL
-#define IOA_MSI_BASE 0x0280U
-#define IOA_MSI_MASK 0x0288U
-
-#define IOA_DMA_BASE 0x02B0U
-#define IOA_DMA_MASK 0x02B8U
-
-#define IOA_ERROR_CONFIG 0x0680U
-#define IOA_ERROR_PIOWRITE 0x0001UL
-#define IOA_ERROR_PIOREAD 0x0002UL
-#define IOA_ERROR_DMAWRITE 0x0004UL
-#define IOA_ERROR_DMAREAD 0x0008UL
-#define IOA_ERROR_CONFIG_MASTER 0x0010UL
-#define IOA_ERROR_SMART 0x0020UL
-#define IOA_ERROR_FATAL_SERR 0x0040UL
-#define IOA_ERROR_ASSERT_SERR 0x0080UL
-/* ? 0x0100UL */
-#define IOA_ERROR_LOOPBACK 0x0200UL
-#define IOA_ERROR_CONFIG_TARGET 0x0400UL
-#define IOA_ERROR_IO_MASTER 0x0800UL
-#define IOA_ERROR_IO_TARGET 0x1000UL
-#define IOA_ERROR_MEM_MASTER 0x2000UL
-#define IOA_ERROR_MEM_TARGET 0x4000UL
-#define IOA_ERROR_HF_IO_FATAL 0x8000UL
-
-#define RANGE_ENABLE 0x01UL /* In various base registers */
-
-#define IO_MASK ((1UL << 16) - 1UL)
-#define LMMIO_MASK ((1UL << 32) - 1UL)
-#ifdef __ia64__
-#define GMMIO_MASK ((1UL << 44) - 1UL)
-#else /* PA-RISC */
-#define GMMIO_MASK ((1UL << 40) - 1UL)
-#endif
-
-#define PDH_START 0xFF000000UL
-#define PDH_LAST 0xFFFFFFFFUL
-
-static CARD8 *pZX1mio = NULL,
- *pZX1ioa = NULL;
-
-/* Per-rope data */
-static INT8 zx1_ropemap[8];
-static CARD32 zx1_pciids[8];
-static CARD64 zx1_lbacntl[8];
-static int zx1_busno[8], zx1_subno[8];
-
-/* Array of Booleans for non-empty buses */
-static INT8 zx1_busnmpt[MAX_PCI_BUSES];
-
-static pciBusFuncs_t zx1BusFuncs;
-static int zx1_fakebus = -1;
-static Bool zx1_hasvga = FALSE;
-
-static pointer pZX1IoRes[8], pZX1MemRes[8]; /* Rope resources */
-
-/* Non-PCI configuration space access macros */
-#define MIO_BYTE(offset) \
- (*(volatile CARD8 *)(pointer)(pZX1mio + (offset)))
-#define MIO_WORD(offset) \
- (*(volatile CARD16 *)(pointer)(pZX1mio + (offset)))
-#define MIO_LONG(offset) \
- (*(volatile CARD32 *)(pointer)(pZX1mio + (offset)))
-#define MIO_QUAD(offset) \
- (*(volatile CARD64 *)(pointer)(pZX1mio + (offset)))
-#define IOA_BYTE(ioa, offset) \
- (*(volatile CARD8 *)(pointer)(pZX1ioa + ((offset) + ((ioa) << 13))))
-#define IOA_WORD(ioa, offset) \
- (*(volatile CARD16 *)(pointer)(pZX1ioa + ((offset) + ((ioa) << 13))))
-#define IOA_LONG(ioa, offset) \
- (*(volatile CARD32 *)(pointer)(pZX1ioa + ((offset) + ((ioa) << 13))))
-#define IOA_QUAD(ioa, offset) \
- (*(volatile CARD64 *)(pointer)(pZX1ioa + ((offset) + ((ioa) << 13))))
-
-/* Range definitions */
-#define MAX_RANGE 16
-static CARD64 bot[MAX_RANGE], top[MAX_RANGE], msk[MAX_RANGE], siz[MAX_RANGE];
-static INT8 *pDecode[MAX_RANGE];
-static int nRange = 0;
-
-/* Track a resource range and assign a granularity to it */
-static void
-SetRange(CARD64 base, CARD64 last, CARD8 width)
-{
- int i;
-
- bot[nRange] = base;
- top[nRange] = last;
- msk[nRange] = (CARD64)(-1L);
- if (base)
- msk[nRange] &= (base ^ (base - 1UL)) >> 1;
- if (last + 1UL)
- msk[nRange] &= (last ^ (last + 1UL)) >> 1;
- if (width < 64)
- msk[nRange] &= (1UL << width) - 1UL;
-
- /* Look for overlapping ranges */
- for (i = 0; i < nRange; i++) {
- if ((bot[i] > top[i]) ||
- (top[nRange] < bot[i]) ||
- (top[i] < bot[nRange]))
- continue;
-
- /* Merge in overlapping range */
- if (bot[nRange] > bot[i])
- bot[nRange] = bot[i];
- if (top[nRange] < top[i])
- top[nRange] = top[i];
-
- /* Assign finer granularity */
- msk[nRange] &= msk[i];
- bot[i] = 1UL;
- top[i] = 0;
- }
-
- nRange++;
-}
-
-/* Lookup granularity associated with the range containing 'base' */
-static int
-GetRange(CARD64 base)
-{
- int i;
-
- for (i = 0; i < nRange; i++) {
- if ((bot[i] > top[i]) ||
- (base < bot[i]) ||
- (base > top[i]))
- continue;
-
- if (pDecode[i])
- break;
-
- /* Allocate decoding array */
- msk[i]++;
- siz[i] = ((top[i] - bot[i] + 1UL) / msk[i]) + 1UL;
- pDecode[i] = xnfalloc(siz[i]);
- (void)memset(pDecode[i], -1, siz[i]);
- break;
- }
-
- return i;
-}
-
-/*
- * Verify that 'bus' is a rope's secondary bus and return the pciConfigPtr of
- * the associated fake PCI-to-PCI bridge.
- */
-static pciConfigPtr
-VerifyZX1Bus(int bus)
-{
- pciConfigPtr pPCI;
-
- if ((bus < 0) || (bus >= pciNumBuses) ||
- !pciBusInfo[bus] || !(pPCI = pciBusInfo[bus]->bridge) ||
- (pPCI->busnum != zx1_fakebus) || (pPCI->funcnum != 0) ||
- (pPCI->devnum < 0x10) || (pPCI->devnum > 0x17))
- return NULL;
-
- return pPCI;
-}
-
-/*
- * This function is called to emulate the various settings in a P2P or CardBus
- * bridge's control register on a ZX1-based system.
- */
-static CARD16
-ControlZX1Bridge(int bus, CARD16 mask, CARD16 value)
-{
- pciConfigPtr pPCI;
- CARD64 tmp1, tmp2, tmp3, ropenum;
- CARD16 current = 0;
-
- if ((pPCI = VerifyZX1Bus(bus))) {
- ropenum = pPCI->devnum & 0x07;
-
- /*
- * Start with VGA enablement. This preserves the "VGA-lite" bit
- * in mio's VGA_ROUTE register, and the VPE bit in each ioa's
- * SLAVE_CONTROL register.
- */
- tmp1 = MIO_QUAD(VGA_ROUTE);
- tmp2 = IOA_QUAD(ropenum, IOA_CONTROL) &
- ~(IOA_RESET_FUNCTION | IOA_CLEAR_ERROR);
- if ((tmp1 & VGA_ENABLE) && ((tmp1 & 0x07UL) == ropenum)) {
- current |= PCI_PCI_BRIDGE_VGA_EN;
- if ((mask & PCI_PCI_BRIDGE_VGA_EN) &&
- !(value & PCI_PCI_BRIDGE_VGA_EN)) {
- MIO_QUAD(VGA_ROUTE) = tmp1 & ~VGA_ENABLE;
- tmp2 &= ~IOA_FORWARD_VGA;
- IOA_QUAD(ropenum, IOA_CONTROL) = tmp2;
- }
- } else if (mask & value & PCI_PCI_BRIDGE_VGA_EN) {
- if (!zx1_hasvga) {
- xf86MsgVerb(X_WARNING, 3,
- "HP ZX1: Attempt to enable VGA routing to bus %d"
- " through rope %ld disallowed\n", bus, ropenum);
- value &= ~PCI_PCI_BRIDGE_VGA_EN;
- } else {
- if (tmp1 & VGA_ENABLE) {
- /*
- * VGA is routed somewhere else. Disable it.
- */
- MIO_QUAD(VGA_ROUTE) = 0UL;
- tmp3 = IOA_QUAD(tmp1 & 0x07UL, IOA_CONTROL);
- if (tmp3 & IOA_FORWARD_VGA)
- IOA_QUAD(tmp1 & 0x07UL, IOA_CONTROL) = tmp3 &
- ~(IOA_RESET_FUNCTION | IOA_FORWARD_VGA |
- IOA_CLEAR_ERROR);
- }
- if (!(tmp2 & IOA_FORWARD_VGA)) {
- tmp2 |= IOA_FORWARD_VGA;
- IOA_QUAD(ropenum, IOA_CONTROL) = tmp2;
- }
- tmp1 = (tmp1 & ~0x07UL) | ropenum | VGA_ENABLE;
- MIO_QUAD(VGA_ROUTE) = tmp1;
- }
- }
-
- /* Move on to master abort failure enablement */
- tmp1 = MIO_QUAD((ropenum << 3) + LBA_PORT0_CNTRL) &
- ~(LBA_RESET_FUNCTION | LBA_CLEAR_ERROR);
- if ((tmp1 & LBA_HARD_FAIL) || (tmp2 & IOA_HARD_FAIL)) {
- current |= PCI_PCI_BRIDGE_MASTER_ABORT_EN;
- if ((mask & PCI_PCI_BRIDGE_MASTER_ABORT_EN) &&
- !(value & PCI_PCI_BRIDGE_MASTER_ABORT_EN)) {
- if (tmp1 & LBA_HARD_FAIL)
- MIO_QUAD((ropenum << 3) + LBA_PORT0_CNTRL) =
- tmp1 & ~LBA_HARD_FAIL;
- if (tmp2 & IOA_HARD_FAIL) {
- tmp2 &= ~IOA_HARD_FAIL;
- IOA_QUAD(ropenum, IOA_CONTROL) = tmp2;
- }
- }
- } else {
- if (mask & value & PCI_PCI_BRIDGE_MASTER_ABORT_EN) {
- if (!(tmp1 & LBA_HARD_FAIL))
- MIO_QUAD((ropenum << 3) + LBA_PORT0_CNTRL) =
- tmp1 | LBA_HARD_FAIL;
- if (!(tmp2 & IOA_HARD_FAIL)) {
- tmp2 |= IOA_HARD_FAIL;
- IOA_QUAD(ropenum, IOA_CONTROL) = tmp2;
- }
- }
- }
-
- /* Put emulation of any other P2P bridge control here */
- }
-
- return (current & ~mask) | (value & mask);
-}
-
-/* Retrieves a list of the resources routed to a rope's secondary bus */
-static void
-GetZX1BridgeResources(int bus,
- pointer *ppIoRes,
- pointer *ppMemRes,
- pointer *ppPmemRes)
-{
- pciConfigPtr pPCI = VerifyZX1Bus(bus);
-
- if (ppIoRes) {
- xf86FreeResList(*ppIoRes);
- *ppIoRes =
- pPCI ? xf86DupResList(pZX1IoRes[pPCI->devnum & 0x07]) : NULL;
- }
-
- if (ppMemRes) {
- xf86FreeResList(*ppMemRes);
- *ppMemRes =
- pPCI ? xf86DupResList(pZX1MemRes[pPCI->devnum & 0x07]) : NULL;
- }
-
- if (ppPmemRes) {
- xf86FreeResList(*ppPmemRes);
- *ppPmemRes = NULL;
- }
-}
-
-/* The fake bus */
-static CARD32
-zx1FakeReadLong(PCITAG tag, int offset)
-{
- FatalError("zx1FakeReadLong(0x%lX, 0x%X) called\n",
- (unsigned long)tag, offset);
-}
-
-static void
-zx1FakeWriteLong(PCITAG tag, int offset, CARD32 val)
-{
- FatalError("zx1FakeWriteLong(0x%lX, 0x%X, 0x%08X) called\n",
- (unsigned long)tag, offset, val);
-}
-
-static void
-zx1FakeSetBits(PCITAG tag, int offset, CARD32 mask, CARD32 bits)
-{
- CARD32 val;
-
- val = zx1FakeReadLong(tag, offset);
- val &= ~mask;
- val |= bits;
- zx1FakeWriteLong(tag, offset, val);
-}
-
-static pciBusFuncs_t zx1FakeBusFuncs = {
- zx1FakeReadLong,
- zx1FakeWriteLong,
- zx1FakeSetBits
-};
-
-static pciBusInfo_t zx1FakeBus = {
- 0, /* configMech -- copied from bus 0 */
- 0, /* numDevices -- copied from bus 0 */
- FALSE, /* secondary */
- 0, /* primary_bus -- dynamically set */
-#ifdef PowerMAX_OS
- 0, /* ppc_io_base -- ignored */
- 0, /* ppc_io_size -- ignored */
-#endif
- &zx1FakeBusFuncs, /* funcs */
- NULL, /* pciBusPriv -- none */
- NULL, /* bridge -- dynamically set */
-};
-
-void
-xf86PreScanZX1(void)
-{
- resRange range;
- unsigned long mapSize = xf86getpagesize();
- unsigned long tmp, base, ioaaddr;
- unsigned long flagsd, based, lastd, maskd, routed;
- unsigned long flags0, base0, last0, mask0, route0;
- unsigned long flags1, base1, last1, mask1, route1;
- unsigned long flags2, base2, last2, mask2, route2;
- unsigned long flags3, base3, last3, mask3, route3;
- unsigned long flagsg, baseg, lastg, maskg, routeg;
- unsigned long flagsl, basel, lastl;
- int i, rope;
-
- /* Map mio registers (minimum 8k) */
- if (mapSize < MIO_SIZE)
- mapSize = MIO_SIZE;
-
- if (!(pZX1mio = xf86MapVidMem(-1, VIDMEM_MMIO, MIO_BASE, mapSize)))
- return;
-
- /* Look for ZX1's SBA and IOC */
- if (((MIO_LONG(MIO_FUNCTION0 + PCI_ID_REG) !=
- DEVID(VENDOR_HP, CHIP_ZX1_SBA)) ||
- (MIO_LONG(MIO_FUNCTION1 + PCI_ID_REG) !=
- DEVID(VENDOR_HP, CHIP_ZX1_IOC))) &&
- ((MIO_LONG(MIO_FUNCTION0 + PCI_ID_REG) !=
- DEVID(VENDOR_HP, CHIP_ZX2_SBA)) ||
- (MIO_LONG(MIO_FUNCTION1 + PCI_ID_REG) !=
- DEVID(VENDOR_HP, CHIP_ZX2_IOC)))) {
- xf86UnMapVidMem(-1, pZX1mio, mapSize);
- pZX1mio = NULL;
- return;
- }
-
- /* Map rope configuration space */
- ioaaddr = MIO_QUAD(ROPE_CONFIG_BASE);
- if (!(ioaaddr & RANGE_ENABLE) || /* No ropes */
- ((ioaaddr = ioaaddr & ~RANGE_ENABLE) & 0x01FFFFUL) || /* Not aligned */
- !(pZX1ioa = xf86MapVidMem(-1, VIDMEM_MMIO, ioaaddr, IOA_SIZE))) {
- xf86UnMapVidMem(-1, pZX1mio, mapSize);
- pZX1mio = NULL;
- return;
- }
-
- for (i = 0; i < 8; i++) {
- zx1_ropemap[i] = i;
- zx1_lbacntl[i] = 0;
- xf86FreeResList(pZX1IoRes[i]);
- xf86FreeResList(pZX1MemRes[i]);
- pZX1IoRes[i] = pZX1MemRes[i] = NULL;
- }
-
- /*
- * Determine which of 8 possible ropes exist in the system. This is done
- * by looking at their "coupling" to generate a list of candidates,
- * whittling this list down by factoring in ROPE_PAGE_CONTROL register
- * contents, then poking each candidate's configuration space to determine
- * its existence.
- */
- tmp = MIO_QUAD(ROPE_CONFIG);
- if (tmp & ROPE_D0)
- zx1_ropemap[1] = 0;
- if (tmp & ROPE_D2)
- zx1_ropemap[3] = 2;
- if (tmp & ROPE_D4)
- zx1_ropemap[5] = 4;
- if (tmp & ROPE_D6)
- zx1_ropemap[7] = 6;
- if (tmp & ROPE_Q0)
- zx1_ropemap[1] = zx1_ropemap[2] = zx1_ropemap[3] = 0;
- if (tmp & ROPE_Q4)
- zx1_ropemap[5] = zx1_ropemap[6] = zx1_ropemap[7] = 4;
-
- /*
- * zx2 should allow better probing support via hard-fails, so no need to
- * use the ROPE_PAGE_CONTROL register. Also, zx2 always has ropes 3 & 7
- * active regardless of bundling.
- */
- if (MIO_LONG(MIO_FUNCTION0 + PCI_ID_REG) !=
- DEVID(VENDOR_HP, CHIP_ZX2_SBA)) {
-
- tmp = MIO_QUAD(ROPE_PAGE_CONTROL);
- for (i = 0; i < 8; i++, tmp >>= 8)
- if (!(CARD8)tmp)
- zx1_ropemap[i] = -1;
- } else {
- zx1_ropemap[3] = 3;
- zx1_ropemap[7] = 7;
- }
-
- for (i = 0; i < 8; ) {
- if (zx1_ropemap[i] == i) {
-
- /* Prevent hard-fails */
- zx1_lbacntl[i] = MIO_QUAD((i << 3) + LBA_PORT0_CNTRL) &
- ~(LBA_RESET_FUNCTION | LBA_CLEAR_ERROR);
- if (zx1_lbacntl[i] & LBA_HARD_FAIL)
- MIO_QUAD((i << 3) + LBA_PORT0_CNTRL) =
- zx1_lbacntl[i] & ~LBA_HARD_FAIL;
-
- /* Poke for an ioa */
- zx1_pciids[i] = IOA_LONG(i, PCI_ID_REG);
- switch (zx1_pciids[i]) {
- case DEVID(VENDOR_HP, CHIP_ELROY):
- case DEVID(VENDOR_HP, CHIP_ZX1_LBA): /* Mercury */
- case DEVID(VENDOR_HP, CHIP_ZX1_AGP8): /* QuickSilver */
- case DEVID(VENDOR_HP, CHIP_ZX2_LBA):
- /* Expected vendor/device IDs */
- zx1_busno[i] =
- (unsigned int)IOA_BYTE(i, IOA_SECONDARY_BUS);
- zx1_subno[i] =
- (unsigned int)IOA_BYTE(i, IOA_SUBORDINATE_BUS);
- break;
-
- default:
- if ((CARD16)(zx1_pciids[i] + 1U) > (CARD16)1U)
- xf86MsgVerb(X_NOTICE, 0,
- "HP ZX1: Unexpected vendor/device id 0x%08X"
- " on rope %d\n", zx1_pciids[i], i);
- /* Nobody home, or not the "right" kind of rope guest */
-
- /*
- * Restore hard-fail setting. For "active" ropes, this is done
- * later.
- */
- if (zx1_lbacntl[i] & LBA_HARD_FAIL) {
- MIO_QUAD((i << 3) + LBA_PORT0_CNTRL) = zx1_lbacntl[i];
- zx1_lbacntl[i] = 0;
- }
-
- /* Ignore this rope and its couplings */
- do {
- zx1_ropemap[i++] = -1;
- } while ((i < 8) && (zx1_ropemap[i] < i));
- continue; /* Avoid over-incrementing 'i' */
- }
- }
- i++;
- }
-
- /* Determine if VGA is currently routed */
- tmp = MIO_QUAD(VGA_ROUTE);
- if (tmp & VGA_ENABLE)
- zx1_hasvga = TRUE;
-
- /*
- * Decode mio resource "coarse" routing (i.e. ignoring VGA). Due to the
- * rather unusual flexibility of this chipset, this is done in a number of
- * stages. For each of I/O and memory, first decode the relevant registers
- * to generate ranges with an associated granularity. Overlapping ranges
- * are merged into a larger range with the finer granularity. Each
- * original range is then more thoroughly decoded using the granularity
- * associated with the merged range that contains it. The result is then
- * converted into resource lists for the common layer.
- *
- * Note that this doesn't care whether or not read-only bits are actually
- * set as documented, nor that mask bits are contiguous. This does,
- * however, factor in upper limits on I/O, LMMIO anf GMMIO addresses, and
- * thus assumes high-order address bits are ignored rather than decoded.
- * For example, an I/O address of 0x76543210 will be treated as 0x3210
- * rather than considered out-of-range. In part, this handling is a
- * consequence of the fact that high-order mask bits are zeroes instead of
- * ones.
- */
-
- flagsd = 0; based = 0; lastd = 0; maskd = 0; routed = 0;
- flags0 = 0; base0 = 0; last0 = 0; mask0 = 0; route0 = 0;
- flags1 = 0; base1 = 0; last1 = 0; mask1 = 0; route1 = 0;
- flags2 = 0; base2 = 0; last2 = 0; mask2 = 0; route2 = 0;
- flags3 = 0; base3 = 0; last3 = 0; mask3 = 0; route3 = 0;
- flagsg = 0; baseg = 0; lastg = 0; maskg = 0; routeg = 0;
- flagsl = 0; basel = 0; lastl = 0;
-
- if ((tmp = MIO_QUAD(IOS_DIST_BASE)) & RANGE_ENABLE) {
- flagsd = RANGE_ENABLE;
- maskd = MIO_QUAD(IOS_DIST_MASK);
- based = tmp & maskd & (~RANGE_ENABLE & IO_MASK);
- lastd = based | (~maskd & IO_MASK);
- routed = MIO_QUAD(IOS_DIST_ROUTE) >> 58;
- SetRange(based, lastd, routed);
- }
-
- if ((tmp = MIO_QUAD(IOS_DIR_BASE)) & RANGE_ENABLE) {
- flags0 = RANGE_ENABLE;
- mask0 = MIO_QUAD(IOS_DIR_MASK);
- base0 = tmp & mask0 & (~RANGE_ENABLE & IO_MASK);
- last0 = base0 | (~mask0 & IO_MASK);
- route0 = MIO_QUAD(IOS_DIR_ROUTE) & 0x07U;
- SetRange(base0, last0, 64);
- }
-
- if (flagsd) {
- i = GetRange(based);
- for (tmp = based; tmp <= lastd; tmp += msk[i]) {
- if ((tmp & maskd) == based) {
- base = (tmp - bot[i]) / msk[i];
- pDecode[i][base] = zx1_ropemap[(tmp >> routed) & 0x07U];
- }
- }
-
- flagsd = 0;
- }
-
- if (flags0) {
- i = GetRange(base0);
- for (tmp = base0; tmp <= last0; tmp += msk[i]) {
- if ((tmp & mask0) == base0) {
- base = (tmp - bot[i]) / msk[i];
- pDecode[i][base] = zx1_ropemap[route0];
- }
- }
-
- flags0 = 0;
- }
-
- for (i = 0; i < nRange; i++) {
- if (!pDecode[i])
- continue;
-
- rope = pDecode[i][0];
- for (base = tmp = 0; ++tmp < siz[i]; ) {
- if (rope == pDecode[i][tmp])
- continue;
-
- if (rope >= 0) {
- RANGE(range, (base * msk[i]) + bot[i],
- (tmp * msk[i]) + bot[i] - 1UL,
- RANGE_TYPE(ResExcIoBlock, 0));
- pZX1IoRes[rope] =
- xf86AddResToList(pZX1IoRes[rope], &range, -1);
- }
-
- base = tmp;
- rope = pDecode[i][base];
- }
-
- xfree(pDecode[i]);
- pDecode[i] = NULL;
- }
-
- nRange = 0;
-
- /*
- * Move on to CPU memory access decoding. For now, don't tell the common
- * layer about CPU memory ranges that are either relocated to 0 or
- * translated into PCI I/O.
- */
-
- SetRange(MIO_BASE, MIO_BASE + MIO_SIZE - 1UL, 64); /* mio */
- SetRange(ioaaddr, ioaaddr + ((IOA_SIZE << 1) - 1UL), 64); /* ioa */
- SetRange(PDH_START, PDH_LAST, 64); /* PDH */
-
- SetRange(MIO_BASE, LMMIO_MASK, 64); /* Completeness */
-
- if ((tmp = MIO_QUAD(LMMIO_DIST_BASE)) & RANGE_ENABLE) {
- flagsd = RANGE_ENABLE;
- maskd = MIO_QUAD(LMMIO_DIST_MASK);
- based = tmp & maskd & (~RANGE_ENABLE & LMMIO_MASK);
- lastd = based | (~maskd & LMMIO_MASK);
- routed = MIO_QUAD(LMMIO_DIST_ROUTE) >> 58;
- SetRange(based, lastd, routed);
- }
-
- if ((tmp = MIO_QUAD(LMMIO_DIR_BASE0)) & RANGE_ENABLE) {
- flags0 = RANGE_ENABLE;
- mask0 = MIO_QUAD(LMMIO_DIR_MASK0);
- base0 = tmp & mask0 & (~RANGE_ENABLE & LMMIO_MASK);
- last0 = base0 | (~mask0 & LMMIO_MASK);
- route0 = MIO_QUAD(LMMIO_DIR_ROUTE0) & 0x07U;
- SetRange(base0, last0, 64);
- }
-
- if ((tmp = MIO_QUAD(LMMIO_DIR_BASE1)) & RANGE_ENABLE) {
- flags1 = RANGE_ENABLE;
- mask1 = MIO_QUAD(LMMIO_DIR_MASK1);
- base1 = tmp & mask1 & (~RANGE_ENABLE & LMMIO_MASK);
- last1 = base1 | (~mask1 & LMMIO_MASK);
- route1 = MIO_QUAD(LMMIO_DIR_ROUTE1) & 0x07U;
- SetRange(base1, last1, 64);
- }
-
- if ((tmp = MIO_QUAD(LMMIO_DIR_BASE2)) & RANGE_ENABLE) {
- flags2 = RANGE_ENABLE;
- mask2 = MIO_QUAD(LMMIO_DIR_MASK2);
- base2 = tmp & mask2 & (~RANGE_ENABLE & LMMIO_MASK);
- last2 = base2 | (~mask2 & LMMIO_MASK);
- route2 = MIO_QUAD(LMMIO_DIR_ROUTE2) & 0x07U;
- SetRange(base2, last2, 64);
- }
-
- if ((tmp = MIO_QUAD(LMMIO_DIR_BASE3)) & RANGE_ENABLE) {
- flags3 = RANGE_ENABLE;
- mask3 = MIO_QUAD(LMMIO_DIR_MASK3);
- base3 = tmp & mask3 & (~RANGE_ENABLE & LMMIO_MASK);
- last3 = base3 | (~mask3 & LMMIO_MASK);
- route3 = MIO_QUAD(LMMIO_DIR_ROUTE3) & 0x07U;
- SetRange(base3, last3, 64);
- }
-
- if ((tmp = MIO_QUAD(GMMIO_DIST_BASE)) & RANGE_ENABLE) {
- flagsg = tmp & (RANGE_ENABLE | PORT_DISABLE | MAP_TO_LMMIO);
- maskg = MIO_QUAD(GMMIO_DIST_MASK);
- baseg = tmp & maskg &
- (~(RANGE_ENABLE | PORT_DISABLE | MAP_TO_LMMIO) & GMMIO_MASK);
- lastg = baseg | (~maskg & GMMIO_MASK);
- tmp = routeg = MIO_QUAD(GMMIO_DIST_ROUTE) >> 58;
- if (!(flagsg & (PORT_DISABLE & MAP_TO_LMMIO)) && (tmp > 26))
- tmp = 26;
- SetRange(baseg, lastg, tmp);
- }
-
- if ((tmp = MIO_QUAD(IOS_BASE)) & RANGE_ENABLE) {
- flagsl = RANGE_ENABLE;
- basel = tmp & (~RANGE_ENABLE & GMMIO_MASK);
- lastl = basel | 0x001FFFFFUL;
- SetRange(basel, lastl, 64);
- }
-
- if (flagsd) {
- i = GetRange(based);
- for (tmp = based; tmp <= lastd; tmp += msk[i]) {
- if ((tmp & maskd) == based) {
- base = (tmp - bot[i]) / msk[i];
- pDecode[i][base] = zx1_ropemap[(tmp >> routed) & 0x07U];
- }
- }
-
- flagsd = 0;
- }
-
- /* LMMIO distributed range does not address anything beyond 0xFED00000 */
- i = GetRange(MIO_BASE);
- for (tmp = MIO_BASE; tmp <= LMMIO_MASK; tmp += msk[i]) {
- base = (tmp - bot[i]) / msk[i];
- pDecode[i][base] = -1;
- }
-
- /* Dillon space can sometimes be redirected to rope 0 */
- tmp = MIO_QUAD(STATUS_CONTROL);
- if (!(tmp & DILLON_PRESENT)) {
- i = GetRange(PDH_START);
- for (tmp = PDH_START; tmp <= PDH_LAST; tmp += msk[i]) {
- base = (tmp - bot[i]) / msk[i];
- pDecode[i][base] = zx1_ropemap[0];
- }
- }
-
- if (flagsg) {
- unsigned long mask = (0x07UL << routeg) | maskg;
-
- i = GetRange(baseg);
- for (tmp = baseg; tmp <= lastg; tmp += msk[i]) {
- if ((tmp & maskg) == baseg) {
- base = (tmp - bot[i]) / msk[i];
-
- if ((flagsg & MAP_TO_LMMIO) ||
- (!(flagsg & PORT_DISABLE) &&
- (tmp <= ((tmp & mask) | 0x03FFFFFFUL)))) {
- pDecode[i][base] = -1;
- } else {
- pDecode[i][base] = zx1_ropemap[(tmp >> routeg) & 0x07U];
- }
- }
- }
-
- flagsg = 0;
- }
-
- if (flagsl) {
- i = GetRange(basel);
- for (tmp = basel; tmp <= lastl; tmp += msk[i]) {
- base = (tmp - bot[i]) / msk[i];
- pDecode[i][base] = -1;
- }
-
- flagsl = 0;
- }
-
- /* For now, assume directed LMMIO ranges don't overlap with each other */
- if (flags0) {
- i = GetRange(base0);
- for (tmp = base0; tmp <= last0; tmp += msk[i]) {
- if ((tmp & mask0) == base0) {
- base = (tmp - bot[i]) / msk[i];
- pDecode[i][base] = zx1_ropemap[route0];
- }
- }
-
- flags0 = 0;
- }
-
- if (flags1) {
- i = GetRange(base1);
- for (tmp = base1; tmp <= last1; tmp += msk[i]) {
- if ((tmp & mask1) == base1) {
- base = (tmp - bot[i]) / msk[i];
- pDecode[i][base] = zx1_ropemap[route1];
- }
- }
-
- flags1 = 0;
- }
-
- if (flags2) {
- i = GetRange(base2);
- for (tmp = base2; tmp <= last2; tmp += msk[i]) {
- if ((tmp & mask2) == base2) {
- base = (tmp - bot[i]) / msk[i];
- pDecode[i][base] = zx1_ropemap[route2];
- }
- }
-
- flags2 = 0;
- }
-
- if (flags3) {
- i = GetRange(base3);
- for (tmp = base3; tmp <= last3; tmp += msk[i]) {
- if ((tmp & mask3) == base3) {
- base = (tmp - bot[i]) / msk[i];
- pDecode[i][base] = zx1_ropemap[route3];
- }
- }
-
- flags3 = 0;
- }
-
- /* Claim iao config area */
- i = GetRange(ioaaddr);
- for (tmp = ioaaddr; tmp < ioaaddr + (IOA_SIZE << 1); tmp += msk[i]) {
- base = (tmp - bot[i]) / msk[i];
- pDecode[i][base] = -1;
- }
-
- /* Claim mio config area */
- i = GetRange(MIO_BASE);
- for (tmp = MIO_BASE; tmp < (MIO_BASE + MIO_SIZE); tmp += msk[i]) {
- base = (tmp - bot[i]) / msk[i];
- pDecode[i][base] = -1;
- }
-
- for (i = 0; i < nRange; i++) {
- if (!pDecode[i])
- continue;
-
- rope = pDecode[i][0];
- for (base = tmp = 0; ++tmp < siz[i]; ) {
- if (rope == pDecode[i][tmp])
- continue;
-
- if (rope >= 0) {
- RANGE(range, (base * msk[i]) + bot[i],
- (tmp * msk[i]) + bot[i] - 1UL,
- RANGE_TYPE(ResExcMemBlock, 0));
- pZX1MemRes[rope] =
- xf86AddResToList(pZX1MemRes[rope], &range, -1);
- }
-
- base = tmp;
- rope = pDecode[i][base];
- }
-
- xfree(pDecode[i]);
- pDecode[i] = NULL;
- }
-
- nRange = 0;
-
- return;
-}
-
-/* This is called to finalise the results of a PCI bus scan */
-void
-xf86PostScanZX1(void)
-{
- pciConfigPtr pPCI, *ppPCI, *ppPCI2;
- pciBusInfo_t *pBusInfo;
- int i, idx;
-
- if (!pZX1mio)
- return;
-
- (void)memset(zx1_busnmpt, FALSE, sizeof(zx1_busnmpt));
- pBusInfo = pciBusInfo[0];
-
- /*
- * Certain 2.4 & 2.5 Linux kernels add fake PCI devices. Remove them to
- * prevent any possible interference with our PCI validation.
- *
- * Also, if VGA isn't routed on server entry, determine if VGA routing
- * needs to be enabled while the server is running.
- */
- idx = 0;
- ppPCI = ppPCI2 = xf86scanpci(0); /* Recursion is only apparent */
- while ((pPCI = *ppPCI2++)) {
- switch (pPCI->pci_device_vendor) {
- case DEVID(VENDOR_HP, CHIP_ELROY):
- case DEVID(VENDOR_HP, CHIP_ZX1_SBA): /* Pluto function 0 */
- case DEVID(VENDOR_HP, CHIP_ZX1_IOC): /* Pluto function 1 */
- case DEVID(VENDOR_HP, CHIP_ZX1_LBA): /* Mercury */
- case DEVID(VENDOR_HP, CHIP_ZX1_AGP8): /* QuickSilver */
- case DEVID(VENDOR_HP, CHIP_ZX2_SBA):
- case DEVID(VENDOR_HP, CHIP_ZX2_IOC):
- case DEVID(VENDOR_HP, CHIP_ZX2_LBA):
- xfree(pPCI); /* Remove it */
- continue;
-
- default:
- *ppPCI++ = pPCI;
- idx++;
-
- zx1_busnmpt[pPCI->busnum] = TRUE;
-
- if (zx1_hasvga)
- continue;
-
- switch (pPCI->pci_base_class) {
- case PCI_CLASS_PREHISTORIC:
- if (pPCI->pci_sub_class == PCI_SUBCLASS_PREHISTORIC_VGA)
- break;
- continue;
-
- case PCI_CLASS_DISPLAY:
- if (pPCI->pci_sub_class == PCI_SUBCLASS_DISPLAY_VGA)
- break;
- continue;
-
- default:
- continue;
- }
-
- zx1_hasvga = TRUE;
- continue;
- }
- }
-
- /*
- * Restore hard-fail settings and figure out the actual secondary and
- * subordinate bus numbers.
- */
- for (i = 0; i < 8; i++) {
- if (zx1_ropemap[i] != i)
- continue;
-
- if (zx1_lbacntl[i] & LBA_HARD_FAIL)
- MIO_QUAD((i << 3) + LBA_PORT0_CNTRL) = zx1_lbacntl[i];
-
- while ((zx1_busno[i] < zx1_subno[i]) && !pciBusInfo[zx1_subno[i]])
- zx1_subno[i]--;
-
- if (zx1_fakebus <= zx1_subno[i])
- zx1_fakebus = zx1_subno[i] + 1;
-
- while (!zx1_busnmpt[zx1_busno[i]]) {
- if (zx1_busno[i]) /* Info for bus zero is in static storage */
- xfree(pciBusInfo[zx1_busno[i]]);
- pciBusInfo[zx1_busno[i]++] = NULL;
- if (zx1_busno[i] > zx1_subno[i])
- break;
- }
- }
-
- if (zx1_fakebus >= pciNumBuses) {
- if (zx1_fakebus >= pciMaxBusNum)
- FatalError("HP ZX1: No room for fake PCI bus\n");
- pciNumBuses = zx1_fakebus + 1;
- }
-
- /* Set up our extra bus functions */
- zx1BusFuncs = *(pBusInfo->funcs);
- zx1BusFuncs.pciControlBridge = ControlZX1Bridge;
- zx1BusFuncs.pciGetBridgeResources = GetZX1BridgeResources;
-
- /* Set up our own fake bus to act as the root segment */
- zx1FakeBus.configMech = pBusInfo->configMech;
- zx1FakeBus.numDevices = pBusInfo->numDevices;
- zx1FakeBus.primary_bus = zx1_fakebus;
- pciBusInfo[zx1_fakebus] = &zx1FakeBus;
-
- /* Add the fake bus' host bridge */
- if (++idx >= MAX_PCI_DEVICES)
- FatalError("HP ZX1: No room for fake Host-to-PCI bridge\n");
- *ppPCI++ = zx1FakeBus.bridge = pPCI = xnfcalloc(1, sizeof(pciDevice));
- pPCI->tag = PCI_MAKE_TAG(zx1_fakebus, 0, 0);
- pPCI->busnum = zx1_fakebus;
- /* pPCI->devnum = pPCI->funcnum = 0; */
- pPCI->pci_device_vendor = DEVID(VENDOR_HP, CHIP_ZX1_SBA);
- pPCI->pci_base_class = PCI_CLASS_BRIDGE;
- /* pPCI->pci_sub_class = PCI_SUBCLASS_BRIDGE_HOST; */
- pPCI->fakeDevice = TRUE;
-
-#ifdef OLD_FORMAT
- xf86MsgVerb(X_INFO, 2, "PCI: BusID 0x%.2x,0x%02x,0x%1x "
- "ID 0x%04x,0x%04x Rev 0x%02x Class 0x%02x,0x%02x\n",
- pPCI->busnum, pPCI->devnum, pPCI->funcnum,
- pPCI->pci_vendor, pPCI->pci_device, pPCI->pci_rev_id,
- pPCI->pci_base_class, pPCI->pci_sub_class);
-#else
- xf86MsgVerb(X_INFO, 2, "PCI: %.2x:%02x:%1x: chip %04x,%04x"
- " card %04x,%04x rev %02x class %02x,%02x,%02x hdr %02x\n",
- pPCI->busnum, pPCI->devnum, pPCI->funcnum,
- pPCI->pci_vendor, pPCI->pci_device,
- pPCI->pci_subsys_vendor, pPCI->pci_subsys_card,
- pPCI->pci_rev_id, pPCI->pci_base_class,
- pPCI->pci_sub_class, pPCI->pci_prog_if,
- pPCI->pci_header_type);
-#endif
-
- /* Add a fake PCI-to-PCI bridge to represent each active rope */
- for (i = 0; i < 8; i++) {
- if ((zx1_ropemap[i] != i) || (zx1_busno[i] > zx1_subno[i]) ||
- !(pBusInfo = pciBusInfo[zx1_busno[i]]))
- continue;
-
- if (++idx >= MAX_PCI_DEVICES)
- FatalError("HP ZX1: No room for fake PCI-to-PCI bridge\n");
- *ppPCI++ = pPCI = xnfcalloc(1, sizeof(pciDevice));
- pPCI->busnum = zx1_fakebus;
- pPCI->devnum = i | 0x10;
- /* pPCI->funcnum = 0; */
- pPCI->tag = PCI_MAKE_TAG(zx1_fakebus, pPCI->devnum, 0);
- pPCI->pci_device_vendor = zx1_pciids[i];
- pPCI->pci_base_class = PCI_CLASS_BRIDGE;
- pPCI->pci_sub_class = PCI_SUBCLASS_BRIDGE_PCI;
- pPCI->pci_header_type = 1;
- pPCI->pci_primary_bus_number = zx1_fakebus;
- pPCI->pci_secondary_bus_number = zx1_busno[i];
- pPCI->pci_subordinate_bus_number = zx1_subno[i];
- pPCI->fakeDevice = TRUE;
-
- pBusInfo->bridge = pPCI;
- pBusInfo->secondary = TRUE;
- pBusInfo->primary_bus = zx1_fakebus;
-
- /* Plug in chipset routines */
- pBusInfo->funcs = &zx1BusFuncs;
-
- /* Set bridge control register for scanpci utility */
- pPCI->pci_bridge_control = ControlZX1Bridge(zx1_busno[i], 0, 0);
-
-#ifdef OLD_FORMAT
- xf86MsgVerb(X_INFO, 2, "PCI: BusID 0x%.2x,0x%02x,0x%1x "
- "ID 0x%04x,0x%04x Rev 0x%02x Class 0x%02x,0x%02x\n",
- pPCI->busnum, pPCI->devnum, pPCI->funcnum,
- pPCI->pci_vendor, pPCI->pci_device, pPCI->pci_rev_id,
- pPCI->pci_base_class, pPCI->pci_sub_class);
-#else
- xf86MsgVerb(X_INFO, 2, "PCI: %.2x:%02x:%1x: chip %04x,%04x"
- " card %04x,%04x rev %02x class %02x,%02x,%02x hdr %02x\n",
- pPCI->busnum, pPCI->devnum, pPCI->funcnum,
- pPCI->pci_vendor, pPCI->pci_device,
- pPCI->pci_subsys_vendor, pPCI->pci_subsys_card,
- pPCI->pci_rev_id, pPCI->pci_base_class,
- pPCI->pci_sub_class, pPCI->pci_prog_if,
- pPCI->pci_header_type);
-#endif
- }
-
- *ppPCI = NULL; /* Terminate array */
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.h
deleted file mode 100644
index 2795b4459..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.h,v 1.1 2003/02/23 20:26:49 tsi Exp $ */
-/*
- * Copyright (C) 2002-2003 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef PCI_ZX1_H
-#define PCI_ZX1_H 1
-
-#include <X11/Xdefs.h>
-
-void xf86PreScanZX1(void);
-void xf86PostScanZX1(void);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/Imakefile
deleted file mode 100644
index 261bd6bab..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/Imakefile
+++ /dev/null
@@ -1,35 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/dgux/Imakefile,v 1.8 2002/10/11 01:46:59 dawes Exp $
-#include <Server.tmpl>
-
-BIOS_MOD = bios_DGmmap
-
-SRCS = dgux_init.c dgux_video.c IO_utils.c dgux_io.c $(BIOS_MOD).c VTsw_noop.c \
- dgux_kbd.c dgux_kbdEv.c dgux_tty.c std_mouse.c std_mseEv.c \
- stdResource.c stdPci.c sigiostubs.c pm_noop.c kmod_noop.c agp_noop.c
-
-OBJS = dgux_init.o dgux_video.o IO_utils.o dgux_io.o $(BIOS_MOD).o VTsw_noop.o \
- dgux_kbd.o dgux_kbdEv.o dgux_tty.o std_mouse.o std_mseEv.o \
- stdResource.o stdPci.o sigiostubs.o pm_noop.o kmod_noop.o agp_noop.o
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(EXTINCSRC)
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(RESDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-LinkSourceFile(VTsw_noop,../shared)
-LinkSourceFile(IO_utils,../shared)
-LinkSourceFile(std_mouse,../shared)
-LinkSourceFile(std_mseEv,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(sigiostubs.c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(agp_noop.c,../shared)
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/bios_DGmmap.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/bios_DGmmap.c
deleted file mode 100644
index 95aad7a12..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/bios_DGmmap.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/dgux/bios_DGmmap.c,v 1.3 2000/02/11 22:36:02 dawes Exp $ */
-/*
- * INTEL DG/UX RELEASE 4.20 MU03
- * Copyright 1997 Takis Psarogiannakopoulos Cambridge,UK
- * <takis@dpmms.cam.ac.uk>
- *
- * 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.
- * XCONSORTIUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FITNESS, IN NO EVENT SHALL XCONSORTIUM BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/*
- * Read the BIOS via mmap() to the device /dev/mem.
- */
-int xf86ReadBIOS(Base, Offset, Buf, Len)
-unsigned long Base;
-unsigned long Offset;
-unsigned char *Buf;
-int Len;
-{
- int fd;
- unsigned char *ptr;
- int psize;
- int mlen;
-
- if ((fd = open(DEV_MEM, O_RDONLY)) < 0)
- {
- ErrorF("xf86ReadBios: Failed to open %s (%s)\n", DEV_MEM,
- strerror(errno));
- return(-1);
- }
- psize = xf86getpagesize();
- Offset += Base & (psize - 1);
- Base &= ~(psize - 1);
- mlen = (Offset + Len + psize - 1) & ~(psize - 1);
- ptr = (unsigned char *)mmap((caddr_t)0, mlen, PROT_READ, MAP_SHARED,
- fd, (off_t)Base);
- if ((int)ptr == -1)
- {
- ErrorF("xf86ReadBios: %s mmap failed\n", DEV_MEM);
- close(fd);
- return(-1);
- }
- (void)memcpy(Buf, (void *)(ptr + Offset), Len);
- (void)munmap((caddr_t)ptr, mlen);
- (void)close(fd);
- return(Len);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_init.c
deleted file mode 100644
index b7282a004..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_init.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/dgux/dgux_init.c,v 1.1 1998/12/13 07:37:46 dawes Exp $ */
-/*
- * INTEL DG/UX RELEASE 4.20 MU03
- * Copyright 1997 Takis Psarogiannakopoulos Cambridge,UK
- * <takis@dpmms.cam.ac.uk>
- *
- * 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.
- * XCONSORTIUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FITNESS, IN NO EVENT SHALL XCONSORTIUM BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Procs.h"
-#include "xf86_OSlib.h"
-
-static Bool KeepTty = FALSE;
-static Bool Protect0 = FALSE;
-static int VTnum = -1;
-
-extern void xf86VTRequest(
- int
-);
-
-void xf86OpenConsole()
-{
- int i;
- int fd;
- char vtname[14];
-
- if (serverGeneration == 1)
- {
- /* check if we're run with euid==0 */
- if (geteuid() != 0)
- {
- FatalError("xf86OpenConsole: Server must be suid root\n");
- }
- if (Protect0)
- {
- int fd = -1;
-
- if ((fd = open("/dev/zero", O_RDONLY, 0)) < 0)
- {
- ErrorF("xf86OpenConsole: cannot open /dev/zero (%s)\n",
- strerror(errno));
- }
- else
- {
- if ((int)mmap(0, 0x1000, PROT_NONE,
- MAP_FIXED | MAP_SHARED, fd, 0) == -1)
- {
- ErrorF("xf86OpenConsole: failed to protect page 0 (%s)\n",
- strerror(errno));
- }
- close(fd);
- }
- }
- if (VTnum != -1)
- {
- xf86Info.vtno = VTnum;
- }
- else
- {
- if ((fd = open("/dev/console",O_WRONLY,0)) < 0)
- {
- FatalError(
- "xf86OpenConsole: Cannot open system tty (/dev/console), (%s)\n",
- strerror(errno));
- }
- close(fd);
- }
- xf86Info.vtno=0;
- ErrorF(" (Intel DG/ux: using VT number: systty%d)\n\n", xf86Info.vtno);
-
- sprintf(vtname,"/dev/console");
-
- xf86Config(FALSE); /* Read XF86Config */
-
- if (!KeepTty)
- {
- setpgrp();
- }
-
- if ((xf86Info.consoleFd = open("/dev/console", O_RDWR|O_NDELAY, 0)) < 0)
- {
- FatalError("xf86OpenConsole: Cannot open %s (%s)\n",
- vtname, strerror(errno));
- }
-
-
-
- if ((xf86Info.kbdFd = open("/dev/keybd", O_RDONLY|O_NDELAY, 0)) < 0)
- {
- FatalError("xf86OpenConsole: Cannot open keyboard (/dev/keybd), (%s)\n", strerror(errno));
- }
- /* change ownerships and Grab all other system consoles */
- chown(vtname, getuid(), getgid());
- chown("/dev/syscon", getuid(), getgid());
- chown("/dev/systty", getuid(), getgid());
- if (!KeepTty)
- {
- /*
- * Detach from the controlling tty to avoid char loss
- */
- if ((i = open("/dev/tty",O_RDWR)) >= 0)
- {
- ioctl(i, TIOCNOTTY, 0);
- close(i);
- }
- }
- }
- else
- {
- /* serverGeneration != 1 */
- if (!xf86VTSema)
- sleep(5);
- }
- return;
-}
-
-void xf86CloseConsole()
-{
- close(xf86Info.kbdFd); /* Close the keyboard */
- close(xf86Info.consoleFd); /* Close the system console */
- return;
-}
-
-int xf86ProcessArgument(argc, argv, i)
-int argc;
-char *argv[];
-int i;
-{
- if (!strcmp(argv[i], "-keeptty"))
- {
- KeepTty = TRUE;
- return(1);
- }
- if (!strcmp(argv[i], "-protect0"))
- {
- Protect0 = TRUE;
- return(1);
- }
- if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
- {
- if (sscanf(argv[i], "vt%2d", &VTnum) == 0)
- {
- UseMsg();
- VTnum = -1;
- return(0);
- }
- return(1);
- }
- return(0);
-}
-
-void xf86UseMsg()
-{
- ErrorF("-keeptty ");
- ErrorF("don't detach controlling tty (for debugging only)\n");
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_io.c
deleted file mode 100644
index b66051f63..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_io.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/dgux/dgux_io.c,v 1.3 2002/10/11 01:40:34 dawes Exp $ */
-/*
- * INTEL DG/UX RELEASE 4.20 MU03
- * Copyright 1997 Takis Psarogiannakopoulos Cambridge,UK
- * <takis@dpmms.cam.ac.uk>
- *
- * 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.
- * XCONSORTIUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FITNESS, IN NO EVENT SHALL XCONSORTIUM BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "inputstr.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86Procs.h"
-#include "xf86_OSlib.h"
-
-
-
-void xf86SoundKbdBell(loudness, pitch, duration)
-int loudness;
-int pitch;
-int duration;
-{
- if (loudness && pitch)
- {
-
- /*
- * We use KBD_TONE_HIGH to avoid putting the server
- * to sleep
- */
- ioctl(xf86Info.kbdFd, KBD_TONE_HIGH,
- ((1193190 / pitch) & 0xffff) |
- (((unsigned long)duration *
- loudness / 50) << 16));
-
- }
-}
-
-
-
-void xf86MouseInit(mouse)
-MouseDevPtr mouse;
-{
- return;
-}
-
-
-
-/* Added for DG/ux: only RDONLY will not crash the Xserver */
-int xf86MouseOn(mouse)
-MouseDevPtr mouse;
-{
- if ((mouse->mseFd = open(mouse->mseDevice, O_RDONLY|O_NDELAY)) < 0)
- {
- if (xf86Info.allowMouseOpenFail) {
- ErrorF("Cannot open mouse (%s) - Continuing...\n",
- strerror(errno));
- return(-2);
- }
- FatalError("Cannot open mouse (%s)\n", strerror(errno));
- }
-
- xf86SetupMouse(mouse);
-
- /* Flush any pending input */
- ioctl(mouse->mseFd, TCFLSH, 0);
- return(mouse->mseFd);
-}
-
-#include "xf86OSKbd.h"
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_kbd.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_kbd.c
deleted file mode 100644
index 7c25fb390..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_kbd.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/dgux/dgux_kbd.c,v 1.1 1998/12/13 07:37:46 dawes Exp $ */
-/*
- * INTEL DG/UX RELEASE 4.20 MU03
- * Copyright 1997 Takis Psarogiannakopoulos Cambridge,UK
- * <takis@dpmms.cam.ac.uk>
- *
- * 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.
- * XCONSORTIUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FITNESS, IN NO EVENT SHALL XCONSORTIUM BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/* *Contents*
-
- 1 xf86KbdSetLeds
- 2 xf86KbdGetLeds
- 3 xf86SetKbdRepeat
- 4 xf86KbdInit()
- 5 xf86KbdOn()
- 6 xf86KbdOff()
-
-*/
-
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "inputstr.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86Procs.h"
-#include "xf86_OSlib.h"
-
-
-static struct termios kbdtty;
-
-
-/* ADDED FOR INTEL DGUX */
-void xf86SetKbdLeds(leds)
-int leds;
-{
- ioctl(xf86Info.kbdFd, KBD_SET_LED, leds);
-}
-
-
-
-/* ADDED FOR INTEL DGUX */
-int xf86GetKbdLeds()
-{
- int leds;
-
- ioctl(xf86Info.kbdFd, KBD_GET_STATE, &leds);
- return(leds);
-}
-
-/* ADDED FOR INTEL DGUX */
-void xf86SetKbdRepeat(char rad)
-{
- return;
-}
-
-
-
-
-/* ADDED FOR INTEL DGUX */
-
-void xf86KbdInit()
-{
- tcgetattr(xf86Info.kbdFd, &kbdtty);
-}
-
-
-
-
-
-/* ADDED FOR INTEL DGUX */
-
-int xf86KbdOn()
-{
- struct termios nTty;
-
- nTty = kbdtty;
- nTty.c_iflag = IGNPAR | IGNBRK;
- nTty.c_oflag = 0;
- nTty.c_cflag = CREAD | CS8;
- nTty.c_lflag = 0;
- nTty.c_cc[VTIME] = 0;
- nTty.c_cc[VMIN] = 1;
- cfsetispeed(&nTty, 9600);
- cfsetospeed(&nTty, 9600);
- tcsetattr(xf86Info.kbdFd, TCSANOW, &nTty);
- return(xf86Info.kbdFd);
-}
-
-
-
-
-
-/* Intel DG/ux */
-int xf86KbdOff()
-{
- tcsetattr(xf86Info.kbdFd, TCSANOW, &kbdtty);
- return(xf86Info.kbdFd);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_kbdEv.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_kbdEv.c
deleted file mode 100644
index 1651f20d8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_kbdEv.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $XFree86$ */
-/*
- * INTEL DG/UX RELEASE 4.20 MU02
- * Copyright 1997 Takis Psarogiannakopoulos Cambridge,UK
- * <takis@dpmms.cam.ac.uk>
- *
- * 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.
- * XCONSORTIUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FITNESS, IN NO EVENT SHALL XCONSORTIUM BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "inputstr.h"
-#include "scrnintstr.h"
-
-#include "xf86Procs.h"
-#include "xf86_OSlib.h"
-
-void xf86KbdEvents()
-{
- unsigned char rBuf[64];
- int nBytes, i;
-
- if ((nBytes = read( xf86Info.kbdFd, (char *)rBuf, sizeof(rBuf))) > 0)
- {
- for (i = 0; i < nBytes; i++)
- xf86PostKbdEvent(rBuf[i]);
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_tty.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_tty.c
deleted file mode 100644
index b6dee0421..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_tty.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/dgux/dgux_tty.c,v 1.1 1998/12/13 07:37:47 dawes Exp $ */
-/*
- * INTEL DG/UX RELEASE 4.20 MU03
- * Copyright 1997 Takis Psarogiannakopoulos Cambridge,UK
- * <takis@dpmms.cam.ac.uk>
- *
- * 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.
- * XCONSORTIUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FITNESS, IN NO EVENT SHALL XCONSORTIUM BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* BSD (POSIX) Flavor tty for ix86 DG/ux R4.20MU03 */
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "inputstr.h"
-#include "scrnintstr.h"
-
-#include "xf86Procs.h"
-#include "xf86_OSlib.h"
-#include "xf86_Config.h"
-
-static Bool not_a_tty = FALSE;
-
-void xf86SetMouseSpeed(mouse, old, new, cflag)
-MouseDevPtr mouse;
-int old;
-int new;
-unsigned cflag;
-{
- struct termios tty;
- char *c;
-
- if (not_a_tty)
- return;
-
- if (tcgetattr(mouse->mseFd, &tty) < 0)
- {
- not_a_tty = TRUE;
- ErrorF("Warning: %s unable to get status of mouse fd (%s)\n",
- mouse->mseDevice, strerror(errno));
- return;
- }
-
- /* this will query the initial baudrate only once */
- if (mouse->oldBaudRate < 0) {
- switch (cfgetispeed(&tty))
- {
- case B9600:
- mouse->oldBaudRate = 9600;
- break;
- case B4800:
- mouse->oldBaudRate = 4800;
- break;
- case B2400:
- mouse->oldBaudRate = 2400;
- break;
- case B1200:
- default:
- mouse->oldBaudRate = 1200;
- break;
- }
- }
-
- tty.c_iflag = IGNBRK | IGNPAR;
- tty.c_oflag = 0;
- tty.c_lflag = 0;
- tty.c_cflag = (tcflag_t)cflag;
- tty.c_cc[VTIME] = 0;
- tty.c_cc[VMIN] = 1;
-
- switch (old)
- {
- case 9600:
- cfsetispeed(&tty, B9600);
- cfsetospeed(&tty, B9600);
- break;
- case 4800:
- cfsetispeed(&tty, B4800);
- cfsetospeed(&tty, B4800);
- break;
- case 2400:
- cfsetispeed(&tty, B2400);
- cfsetospeed(&tty, B2400);
- break;
- case 1200:
- default:
- cfsetispeed(&tty, B1200);
- cfsetospeed(&tty, B1200);
- }
-
- if (tcsetattr(mouse->mseFd, TCSADRAIN, &tty) < 0)
- {
- if (xf86Info.allowMouseOpenFail) {
- ErrorF("Unable to set status of mouse fd (%s) - Continuing...\n",
- strerror(errno));
- return;
- }
- xf86FatalError("Unable to set status of mouse fd (%s)\n",
- strerror(errno));
- }
-
- switch (new)
- {
- case 9600:
- c = "*q";
- cfsetispeed(&tty, B9600);
- cfsetospeed(&tty, B9600);
- break;
- case 4800:
- c = "*p";
- cfsetispeed(&tty, B4800);
- cfsetospeed(&tty, B4800);
- break;
- case 2400:
- c = "*o";
- cfsetispeed(&tty, B2400);
- cfsetospeed(&tty, B2400);
- break;
- case 1200:
- default:
- c = "*n";
- cfsetispeed(&tty, B1200);
- cfsetospeed(&tty, B1200);
- }
-
- if (mouse->mseType == P_LOGIMAN || mouse->mseType == P_LOGI)
- {
- if (write(mouse->mseFd, c, 2) != 2)
- {
- if (xf86AllowMouseOpenFail) {
- ErrorF("Unable to write to mouse fd (%s) - Continuing...\n",
- strerror(errno));
- return;
- }
- xf86FatalError("Unable to write to mouse fd (%s)\n",
- strerror(errno));
- }
- }
- usleep(100000);
-
- if (tcsetattr(mouse->mseFd, TCSADRAIN, &tty) < 0)
- {
- if (xf86AllowMouseOpenFail) {
- ErrorF("Unable to set status of mouse fd (%s) - Continuing...\n",
- strerror(errno));
- return;
- }
- xf86FatalError("Unable to set status of mouse fd (%s)\n",
- strerror(errno));
- }
-}
-
-/* ADDED FOR X 3.3.2.3 */
-int
-xf86FlushInput(fd)
-int fd;
-{
- return tcflush(fd, TCIFLUSH);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_video.c
deleted file mode 100644
index 25336d68a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/dgux/dgux_video.c
+++ /dev/null
@@ -1,441 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/dgux/dgux_video.c,v 1.6tsi Exp $ */
-/*
- * INTEL DG/UX RELEASE 4.20 MU03
- * Copyright 1997 Takis Psarogiannakopoulos Cambridge,UK
- * <takis@dpmms.cam.ac.uk>
- *
- *
- * 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.
- * XFREE86 PROJECT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FITNESS, IN NO EVENT SHALL XCONSORTIUM BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((void *)-1)
-#endif
-
-/* Stuff for the SET_IOPL() ,RESET_IOPL() */
-/* #include <fcntl.h> */
-static int io_takis;
-int set_takis;
-
-
-/***************************************************************************/
-/* SET_IOPL() and RESET_IOPL() section for ix86 DG/ux 4.20MU03 */
-/***************************************************************************/
-
-
-int SET_IOPL()
-{
- io_takis=open("/dev/console", O_RDWR,0);
- if ((io_takis) < 0)
- {
- return(-1);
- }
- set_takis = ioctl(io_takis,KDENABIO,0);
-
- if (set_takis < 0)
- {
- return(-1);
- }
- return(1);
-}
-
-
-
-
-void RESET_IOPL()
-{
-
- ioctl(io_takis,KDDISABIO,0);
- close(io_takis);
- return;
-
-}
-
-/***************************************************************************/
-/* DG/ux Video Memory Mapping part */
-/***************************************************************************/
-
-#undef HAS_SVR3_MMAPDRV /* ix86 DG/ux is a typical SVR4 without SVR3_MMAPDRV */
-
-Bool xf86LinearVidMem()
-{
- return(TRUE);
-}
-
-pointer
-xf86MapVidMem(int ScreenNum, int Flags, unsigned long Base, unsigned long Size)
-{
- pointer base;
- int fd;
-
- fd = open(DEV_MEM, (Flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
- if (fd < 0)
- {
- FatalError("xf86MapVidMem: failed to open %s (%s)\n",
- DEV_MEM, strerror(errno));
- }
- base = mmap((caddr_t)0, Size,
- (Flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_SHARED, fd, (off_t)Base);
- close(fd);
- if (base == MAP_FAILED)
- {
- FatalError("%s: Could not mmap framebuffer [s=%x,a=%x] (%s)\n",
- "xf86MapVidMem", Size, Base, strerror(errno));
- }
-
- return(base);
-}
-
-void xf86UnMapVidMem(ScreenNum, Region, Base, Size)
-int ScreenNum;
-int Region;
-pointer Base;
-unsigned long Size;
-{
- munmap(Base, Size);
-}
-
-/***************************************************************************/
-/* I/O Permissions section */
-/***************************************************************************/
-
-#define ALWAYS_USE_EXTENDED
-#ifdef ALWAYS_USE_EXTENDED
-
-static Bool ScreenEnabled[MAXSCREENS];
-static Bool ExtendedEnabled = FALSE;
-static Bool InitDone = FALSE;
-
-void
-xf86ClearIOPortList(ScreenNum)
-int ScreenNum;
-{
- if (!InitDone)
- {
- int i;
- for (i = 0; i < MAXSCREENS; i++)
- ScreenEnabled[i] = FALSE;
- InitDone = TRUE;
- }
- return;
-}
-
-void
-xf86AddIOPorts(ScreenNum, NumPorts, Ports)
-int ScreenNum;
-int NumPorts;
-unsigned *Ports;
-{
- return;
-}
-
-void
-xf86EnableIOPorts(ScreenNum)
-int ScreenNum;
-{
- int i;
-
- ScreenEnabled[ScreenNum] = TRUE;
-
- if (ExtendedEnabled)
- return;
-
- if (SET_IOPL() < 0)
- {
- FatalError("%s: Failed to set IOPL for extended I/O\n",
- "xf86EnableIOPorts");
- }
- ExtendedEnabled = TRUE;
-
- return;
-}
-
-void
-xf86DisableIOPorts(ScreenNum)
-int ScreenNum;
-{
- int i;
-
- ScreenEnabled[ScreenNum] = FALSE;
-
- if (!ExtendedEnabled)
- return;
-
- for (i = 0; i < MAXSCREENS; i++)
- if (ScreenEnabled[i])
- return;
-
- RESET_IOPL();
- ExtendedEnabled = FALSE;
-
- return;
-}
-
-#else /* !ALWAYS_USE_EXTENDED */
-
-#define DISABLED 0
-#define NON_EXTENDED 1
-#define EXTENDED 2
-
-static unsigned *EnabledPorts[MAXSCREENS];
-static int NumEnabledPorts[MAXSCREENS];
-static Bool ScreenEnabled[MAXSCREENS];
-static Bool ExtendedPorts[MAXSCREENS];
-static Bool ExtendedEnabled = FALSE;
-static Bool InitDone = FALSE;
-static struct kd_disparam OrigParams;
-
-void xf86ClearIOPortList(ScreenNum)
-int ScreenNum;
-{
- if (!InitDone)
- {
- xf86InitPortLists(EnabledPorts, NumEnabledPorts, ScreenEnabled,
- ExtendedPorts, MAXSCREENS);
- if (ioctl(xf86Info.consoleFd, KDDISPTYPE, &OrigParams) < 0)
- {
- FatalError("%s: Could not get display parameters\n",
- "xf86ClearIOPortList");
- }
- InitDone = TRUE;
- return;
- }
- ExtendedPorts[ScreenNum] = FALSE;
- if (EnabledPorts[ScreenNum] != (unsigned *)NULL)
- xfree(EnabledPorts[ScreenNum]);
- EnabledPorts[ScreenNum] = (unsigned *)NULL;
- NumEnabledPorts[ScreenNum] = 0;
-}
-
-void xf86AddIOPorts(ScreenNum, NumPorts, Ports)
-int ScreenNum;
-int NumPorts;
-unsigned *Ports;
-{
- int i;
-
- if (!InitDone)
- {
- FatalError("xf86AddIOPorts: I/O control lists not initialised\n");
- }
- EnabledPorts[ScreenNum] = xrealloc(EnabledPorts[ScreenNum],
- (NumEnabledPorts[ScreenNum]+NumPorts)*sizeof(unsigned));
- for (i = 0; i < NumPorts; i++)
- {
- EnabledPorts[ScreenNum][NumEnabledPorts[ScreenNum] + i] =
- Ports[i];
- if (Ports[i] > 0x3FF)
- ExtendedPorts[ScreenNum] = TRUE;
- }
- NumEnabledPorts[ScreenNum] += NumPorts;
-}
-
-void xf86EnableIOPorts(ScreenNum)
-int ScreenNum;
-{
- struct kd_disparam param;
- int i, j;
-
- if (ScreenEnabled[ScreenNum])
- return;
-
- for (i = 0; i < MAXSCREENS; i++)
- {
- if (ExtendedPorts[i] && (ScreenEnabled[i] || i == ScreenNum))
- {
- if (SET_IOPL() < 0)
- {
- FatalError("%s: Failed to set IOPL for extended I/O\n",
- "xf86EnableIOPorts");
- }
- ExtendedEnabled = TRUE;
- break;
- }
- }
- if (ExtendedEnabled && i == MAXSCREENS)
- {
- RESET_IOPL();
- ExtendedEnabled = FALSE;
- }
- if (ioctl(xf86Info.consoleFd, KDDISPTYPE, &param) < 0)
- {
- FatalError("%s: Could not get display parameters\n",
- "xf86EnableIOPorts");
- }
- for (i = 0; i < NumEnabledPorts[ScreenNum]; i++)
- {
- unsigned port = EnabledPorts[ScreenNum][i];
-
- if (port > 0x3FF)
- continue;
-
- if (!xf86CheckPorts(port, EnabledPorts, NumEnabledPorts,
- ScreenEnabled, MAXSCREENS))
- {
- continue;
- }
- for (j=0; j < MKDIOADDR; j++)
- {
- if (param.ioaddr[j] == port)
- {
- break;
- }
- }
- if (j == MKDIOADDR)
- {
- if (ioctl(xf86Info.consoleFd, KDADDIO, port) < 0)
- {
- FatalError("%s: Failed to enable port 0x%x\n",
- "xf86EnableIOPorts", port);
- }
- }
- }
- if (ioctl(xf86Info.consoleFd, KDENABIO, 0) < 0)
- {
- FatalError("xf86EnableIOPorts: I/O port enable failed (%s)\n",
- strerror(errno));
- }
- ScreenEnabled[ScreenNum] = TRUE;
- return;
-}
-
-void xf86DisableIOPorts(ScreenNum)
-int ScreenNum;
-{
- struct kd_disparam param;
- int i, j;
-
- if (!ScreenEnabled[ScreenNum])
- return;
-
- ScreenEnabled[ScreenNum] = FALSE;
- for (i = 0; i < MAXSCREENS; i++)
- {
- if (ScreenEnabled[i] && ExtendedPorts[i])
- break;
- }
- if (ExtendedEnabled && i == MAXSCREENS)
- {
- RESET_IOPL();
- ExtendedEnabled = FALSE;
- }
- /* Turn off I/O before changing the access list */
- ioctl(xf86Info.consoleFd, KDDISABIO, 0);
- if (ioctl(xf86Info.consoleFd, KDDISPTYPE, &param) < 0)
- {
- ErrorF("%s: Could not get display parameters\n",
- "xf86DisableIOPorts");
- return;
- }
-
- for (i=0; i < MKDIOADDR; i++)
- {
- if (param.ioaddr[i] == 0)
- {
- break;
- }
- if (!xf86CheckPorts(param.ioaddr[i], EnabledPorts,
- NumEnabledPorts, ScreenEnabled, MAXSCREENS))
- {
- continue;
- }
- for (j=0; j < MKDIOADDR; j++)
- {
- if (param.ioaddr[i] == OrigParams.ioaddr[j])
- {
- /*
- * Port was one of the original ones; don't
- * touch it.
- */
- break;
- }
- }
- if (j == MKDIOADDR)
- {
- /*
- * We added this port, so remove it.
- */
- ioctl(xf86Info.consoleFd, KDDELIO, param.ioaddr[i]);
- }
- }
- for (i = 0; i < MAXSCREENS; i++)
- {
- if (ScreenEnabled[i])
- {
- ioctl(xf86Info.consoleFd, KDENABIO, 0);
- break;
- }
- }
- return;
-}
-#endif
-
-void xf86DisableIOPrivs()
-{
- if (ExtendedEnabled)
- RESET_IOPL();
- return;
-}
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-
-Bool xf86DisableInterrupts()
-{
-
-#ifdef __GNUC__
- __asm__ __volatile__("cli");
-#else
- asm("cli");
-#endif /* __GNUC__ */
-
- return(TRUE);
-}
-
-void xf86EnableInterrupts()
-{
-
-#ifdef __GNUC__
- __asm__ __volatile__("sti");
-#else
- asm("sti");
-#endif /* __GNUC__ */
-
- return;
-}
-
-
-void
-xf86MapReadSideEffects(int ScreenNum, int Flags, pointer Base,
- unsigned long Size)
-{
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/Imakefile
deleted file mode 100644
index 7716ed348..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/Imakefile
+++ /dev/null
@@ -1,40 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/hurd/Imakefile,v 1.14 2002/10/11 01:46:59 dawes Exp $
-
-#include <Server.tmpl>
-
-BIOS_MOD = bios_mmap
-
-MOUSESRC = hurd_mouse.c
-MOUSEOBJ = hurd_mouse.o
-
-SRCS = hurd_init.c hurd_video.c hurd_io.c libc_wrapper.c $(BIOS_MOD).c \
- VTsw_noop.c posix_tty.c $(MOUSESRC) \
- stdResource.c stdPci.c sigiostubs.c pm_noop.c kmod_noop.c agp_noop.c
-
-OBJS = hurd_init.o hurd_video.o hurd_io.o libc_wrapper.o $(BIOS_MOD).o \
- VTsw_noop.o posix_tty.o $(MOUSEOBJ) \
- stdResource.o stdPci.o sigiostubs.o pm_noop.o kmod_noop.o agp_noop.o
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(EXTINCSRC) -I$(SERVERSRC)/mi
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(RESDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-
-LinkSourceFile(VTsw_noop.c,../shared)
-LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(sigiostubs.c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(agp_noop.c,../shared)
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/bios_mmap.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/bios_mmap.c
deleted file mode 100644
index 132e755e2..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/bios_mmap.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 1997 by UCHIYAMA Yasushi
- *
- * 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, and that the name of UCHIYAMA Yasushi not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. UCHIYAMA Yasushi makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL UCHIYAMA YASUSHI BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86$ */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include<mach.h>
-#include<device/device.h>
-
-#include <X11/X.h>
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#define BIOS_SIZE 0x20000
-
-int
-xf86ReadBIOS(unsigned long Base,unsigned long Offset,unsigned char *Buf,int Len)
-{
- mach_port_t device,iopl_dev;
- memory_object_t iopl_mem;
- vm_address_t addr = (vm_address_t)0; /* serach starting address */
- kern_return_t err;
-
-
- err = get_privileged_ports (NULL, &device);
- if( err )
- {
- errno = err;
- FatalError("xf86ReadBIOS() can't get_privileged_ports. (%s)\n",strerror(errno));
- }
- err = device_open(device,D_READ|D_WRITE,"iopl",&iopl_dev);
- mach_port_deallocate (mach_task_self (), device);
- if( err )
- {
- errno = err;
- FatalError("xf86ReadBIOS() can't device_open. (%s)\n",strerror(errno));
- }
- err = device_map(iopl_dev,VM_PROT_READ|VM_PROT_WRITE, Base , BIOS_SIZE ,&iopl_mem,0);
- if( err )
- {
- errno = err;
- FatalError("xf86ReadBIOS() can't device_map. (%s)\n",strerror(errno));
- }
- err = vm_map(mach_task_self(),
- &addr,
- BIOS_SIZE,
- 0,
- TRUE,
- iopl_mem,
- Base,
- FALSE,
- VM_PROT_READ|VM_PROT_WRITE,
- VM_PROT_READ|VM_PROT_WRITE,
- VM_INHERIT_SHARE);
- mach_port_deallocate(mach_task_self(),iopl_mem);
- if( err )
- {
- errno = err;
- FatalError("xf86ReadBIOS() can't vm_map. (%s)\n",strerror(errno));
- }
-
- memcpy(Buf,(void*)((int)addr + Offset), Len);
-
- err = vm_deallocate(mach_task_self(), addr, BIOS_SIZE);
- if( err )
- {
- errno = err;
- FatalError("xf86ReadBIOS() can't vm_deallocate. (%s)\n",strerror(errno));
- }
-
- return Len;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_init.c
deleted file mode 100644
index aec5b3d46..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_init.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 1997,1998 by UCHIYAMA Yasushi
- *
- * 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, and that the name of UCHIYAMA Yasushi not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. UCHIYAMA Yasushi makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL UCHIYAMA YASUSHI BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/hurd/hurd_init.c,v 1.1 1998/08/16 10:25:48 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include <stdio.h>
-#include <errno.h>
-#include <sys/time.h>
-#include <sys/file.h>
-#include <assert.h>
-#include <mach.h>
-
-int
-xf86ProcessArgument( int argc,char **argv, int i )
-{
- return 0;
-}
-void
-xf86UseMsg()
-{
- return;
-}
-
-
-void
-xf86OpenConsole()
-{
- if( serverGeneration == 1 )
- {
- kern_return_t err;
- mach_port_t device;
- int fd;
- err = get_privileged_ports( NULL, &device );
- if( err )
- {
- errno = err;
- FatalError( "xf86KbdInit can't get_privileged_ports. (%s)\n" , strerror(errno) );
- }
- mach_port_deallocate (mach_task_self (), device);
-
- if( ( fd = open( "/dev/kbd" , O_RDONLY|O_NONBLOCK ) ) < 0 )
- {
- fprintf( stderr , "Cannot open keyboard (%s)\n",strerror(errno) );
- exit(1);
- }
- xf86Info.consoleFd = fd;
- }
- return;
-}
-
-void
-xf86CloseConsole()
-{
- close( xf86Info.consoleFd );
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_io.c
deleted file mode 100644
index 32b4bc71d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_io.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright 1997,1998 by UCHIYAMA Yasushi
- *
- * 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, and that the name of UCHIYAMA Yasushi not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. UCHIYAMA Yasushi makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL UCHIYAMA YASUSHI BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/hurd/hurd_io.c,v 1.8 2002/10/11 01:40:35 dawes Exp $ */
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "inputstr.h"
-#include "scrnintstr.h"
-#include "mipointer.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include <stdio.h>
-#include <errno.h>
-#include <sys/time.h>
-#include <sys/file.h>
-#include <assert.h>
-#include <mach.h>
-#include <sys/ioctl.h>
-
-typedef unsigned short kev_type; /* kd event type */
-typedef unsigned char Scancode;
-
-struct mouse_motion {
- short mm_deltaX; /* units? */
- short mm_deltaY;
-};
-
-typedef struct {
- kev_type type; /* see below */
- struct timeval time; /* timestamp */
- union { /* value associated with event */
- boolean_t up; /* MOUSE_LEFT .. MOUSE_RIGHT */
- Scancode sc; /* KEYBD_EVENT */
- struct mouse_motion mmotion; /* MOUSE_MOTION */
- } value;
-} kd_event;
-
-/*
- * kd_event ID's.
- */
-#define MOUSE_LEFT 1 /* mouse left button up/down */
-#define MOUSE_MIDDLE 2
-#define MOUSE_RIGHT 3
-#define MOUSE_MOTION 4 /* mouse motion */
-#define KEYBD_EVENT 5 /* key up/down */
-
-/***********************************************************************
- * Keyboard
- **********************************************************************/
-void
-xf86SoundKbdBell(int loudness,int pitch,int duration)
-{
- return;
-}
-
-void
-xf86SetKbdLeds(int leds)
-{
- return;
-}
-
-int
-xf86GetKbdLeds()
-{
- return 0;
-}
-
-void
-xf86SetKbdRepeat(char rad)
-{
- return;
-}
-
-void
-xf86KbdInit()
-{
- return;
-}
-int
-xf86KbdOn()
-{
- int data = 1;
- if( ioctl( xf86Info.consoleFd, _IOW('k', 1, int),&data) < 0)
- FatalError("Cannot set event mode on keyboard (%s)\n",strerror(errno));
- return xf86Info.consoleFd;
-}
-int
-xf86KbdOff()
-{
- int data = 2;
- if( ioctl( xf86Info.consoleFd, _IOW('k', 1, int),&data) < 0)
- FatalError("can't reset keyboard mode (%s)\n",strerror(errno));
-}
-
-void
-xf86KbdEvents()
-{
- kd_event ke;
- while( read(xf86Info.consoleFd, &ke, sizeof(ke)) == sizeof(ke) )
- xf86PostKbdEvent(ke.value.sc);
-}
-
-#include "xf86OSKbd.h"
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_mouse.c
deleted file mode 100644
index 84a5c46da..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_mouse.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Copyright 1997,1998 by UCHIYAMA Yasushi
- *
- * 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, and that the name of UCHIYAMA Yasushi not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. UCHIYAMA Yasushi makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL UCHIYAMA YASUSHI BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/hurd/hurd_mouse.c,v 1.7 2000/02/10 22:33:44 dawes Exp $ */
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "inputstr.h"
-#include "scrnintstr.h"
-#include "mipointer.h"
-
-#include "xf86.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-#include "xf86_OSlib.h"
-
-#include <stdio.h>
-#include <errno.h>
-#include <sys/time.h>
-#include <sys/file.h>
-#include <assert.h>
-#include <mach.h>
-#include <sys/ioctl.h>
-
-typedef unsigned short kev_type; /* kd event type */
-typedef unsigned char Scancode;
-
-struct mouse_motion {
- short mm_deltaX; /* units? */
- short mm_deltaY;
-};
-
-typedef struct {
- kev_type type; /* see below */
- struct timeval time; /* timestamp */
- union { /* value associated with event */
- boolean_t up; /* MOUSE_LEFT .. MOUSE_RIGHT */
- Scancode sc; /* KEYBD_EVENT */
- struct mouse_motion mmotion; /* MOUSE_MOTION */
- } value;
-} kd_event;
-
-/*
- * kd_event ID's.
- */
-#define MOUSE_LEFT 1 /* mouse left button up/down */
-#define MOUSE_MIDDLE 2
-#define MOUSE_RIGHT 3
-#define MOUSE_MOTION 4 /* mouse motion */
-#define KEYBD_EVENT 5 /* key up/down */
-
-#define NUMEVENTS 64
-
-/*
- * OsMouseProc --
- * Handle the initialization, etc. of a mouse
- */
-static int
-OsMouseProc(DeviceIntPtr pPointer, int what)
-{
- InputInfoPtr pInfo;
- MouseDevPtr pMse;
- unsigned char map[MSE_MAXBUTTONS + 1];
- int nbuttons;
-
- pInfo = pPointer->public.devicePrivate;
- pMse = pInfo->private;
- pMse->device = pPointer;
-
- switch (what) {
- case DEVICE_INIT:
- pPointer->public.on = FALSE;
-
- for (nbuttons = 0; nbuttons < MSE_MAXBUTTONS; ++nbuttons)
- map[nbuttons + 1] = nbuttons + 1;
-
- InitPointerDeviceStruct((DevicePtr)pPointer,
- map,
- min(pMse->buttons, MSE_MAXBUTTONS),
- miPointerGetMotionEvents,
- pMse->Ctrl,
- miPointerGetMotionBufferSize());
-
- /* X valuator */
- xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 0);
- /* Y valuator */
- xf86InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 1);
- xf86MotionHistoryAllocate(pInfo);
- break;
-
- case DEVICE_ON:
- pInfo->fd = xf86OpenSerial(pInfo->options);
- if (pInfo->fd == -1)
- xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
- else {
- pMse->buffer = XisbNew(pInfo->fd,
- NUMEVENTS * sizeof(kd_event));
- if (!pMse->buffer) {
- xfree(pMse);
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
- } else {
- xf86FlushInput(pInfo->fd);
- AddEnabledDevice(pInfo->fd);
- }
- }
- pMse->lastButtons = 0;
- pMse->lastMappedButtons = 0;
- pMse->emulateState = 0;
- pPointer->public.on = TRUE;
- break;
-
- case DEVICE_OFF:
- case DEVICE_CLOSE:
- if (pInfo->fd != -1) {
- RemoveEnabledDevice(pInfo->fd);
- if (pMse->buffer) {
- XisbFree(pMse->buffer);
- pMse->buffer = NULL;
- }
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
- }
- pPointer->public.on = FALSE;
- usleep(300000);
- break;
- }
- return Success;
-}
-
-/*
- * OsMouseReadInput --
- * Get some events from our queue. Process all outstanding events now.
- */
-static void
-OsMouseReadInput(InputInfoPtr pInfo)
-{
- MouseDevPtr pMse;
- static kd_event eventList[NUMEVENTS];
- int n, c;
- kd_event *event = eventList;
- unsigned char *pBuf;
-
- pMse = pInfo->private;
-
- XisbBlockDuration(pMse->buffer, -1);
- pBuf = (unsigned char *)eventList;
- n = 0;
- while ((c = XisbRead(pMse->buffer)) >= 0 && n < sizeof(eventList))
- pBuf[n++] = (unsigned char)c;
-
- if (n == 0)
- return;
-
- n /= sizeof(kd_event);
- while( n-- ) {
- int buttons = pMse->lastButtons;
- int dx = 0, dy = 0;
- switch (event->type) {
- case MOUSE_RIGHT:
- buttons = buttons & 6 |(event->value.up ? 0 : 1);
- break;
- case MOUSE_MIDDLE:
- buttons = buttons & 5 |(event->value.up ? 0 : 2);
- break;
- case MOUSE_LEFT:
- buttons = buttons & 3 |(event->value.up ? 0 : 4) ;
- break;
- case MOUSE_MOTION:
- dx = event->value.mmotion.mm_deltaX;
- dy = - event->value.mmotion.mm_deltaY;
- break;
- default:
- ErrorF("Bad mouse event (%d)\n",event->type);
- continue;
- }
- pMse->PostEvent(pInfo, buttons, dx, dy, 0, 0);
- ++event;
- }
- return;
-}
-
-static Bool
-OsMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- MouseDevPtr pMse;
-
- /* This is called when the protocol is "OSMouse". */
-
- pMse = pInfo->private;
- pMse->protocol = protocol;
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
-
- /* Collect the options, and process the common options. */
- xf86CollectInputOptions(pInfo, NULL, NULL);
- xf86ProcessCommonOptions(pInfo, pInfo->options);
-
- /* Check if the device can be opened. */
- pInfo->fd = xf86OpenSerial(pInfo->options);
- if (pInfo->fd == -1) {
- if (xf86GetAllowMouseOpenFail())
- xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
- else {
- xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name);
- xfree(pMse);
- return FALSE;
- }
- }
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
-
- /* Process common mouse options (like Emulate3Buttons, etc). */
- pMse->CommonOptions(pInfo);
-
- /* Setup the local procs. */
- pInfo->device_control = OsMouseProc;
- pInfo->read_input = OsMouseReadInput;
-
- pInfo->flags |= XI86_CONFIGURED;
- return TRUE;
-}
-
-static int
-SupportedInterfaces(void)
-{
- /* XXX Need to check this. */
- return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_AUTO;
-}
-
-static const char *internalNames[] = {
- "OSMouse",
- NULL
-};
-
-static const char **
-BuiltinNames(void)
-{
- return internalNames;
-}
-
-static Bool
-CheckProtocol(const char *protocol)
-{
- int i;
-
- for (i = 0; internalNames[i]; i++)
- if (xf86NameCmp(protocol, internalNames[i]) == 0)
- return TRUE;
- return FALSE;
-}
-
-/* XXX Is this appropriate? If not, this function should be removed. */
-static const char *
-DefaultProtocol(void)
-{
- return "OSMouse";
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
- p->SupportedInterfaces = SupportedInterfaces;
- p->BuiltinNames = BuiltinNames;
- p->DefaultProtocol = DefaultProtocol;
- p->CheckProtocol = CheckProtocol;
- p->PreInit = OsMousePreInit;
- return p;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_video.c
deleted file mode 100644
index ecb8df1db..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/hurd/hurd_video.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright 1997, 1998 by UCHIYAMA Yasushi
- *
- * 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, and that the name of UCHIYAMA Yasushi not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. UCHIYAMA Yasushi makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL UCHIYAMA YASUSHI BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/hurd/hurd_video.c,v 1.3 1999/04/29 12:24:52 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <mach.h>
-#include <device/device.h>
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/**************************************************************************
- * Video Memory Mapping section
- ***************************************************************************/
-pointer
-xf86MapVidMem(int ScreenNum,int Flags, unsigned long Base, unsigned long Size)
-{
- mach_port_t device,iopl_dev;
- memory_object_t iopl_mem;
- kern_return_t err;
- vm_address_t addr=(vm_address_t)0;
-
- err = get_privileged_ports (NULL, &device);
- if( err )
- {
- errno = err;
- FatalError("xf86MapVidMem() can't get_privileged_ports. (%s)\n",strerror(errno));
- }
- err = device_open(device,D_READ|D_WRITE,"iopl",&iopl_dev);
- mach_port_deallocate (mach_task_self(), device);
- if( err )
- {
- errno = err;
- FatalError("xf86MapVidMem() can't device_open. (%s)\n",strerror(errno));
- }
-
- err = device_map(iopl_dev,VM_PROT_READ|VM_PROT_WRITE, Base , Size ,&iopl_mem,0);
- if( err )
- {
- errno = err;
- FatalError("xf86MapVidMem() can't device_map. (%s)\n",strerror(errno));
- }
- err = vm_map(mach_task_self(),
- &addr,
- Size,
- 0, /* mask */
- TRUE, /* anywhere */
- iopl_mem,
- (vm_offset_t)Base,
- FALSE, /* copy on write */
- VM_PROT_READ|VM_PROT_WRITE,
- VM_PROT_READ|VM_PROT_WRITE,
- VM_INHERIT_SHARE);
- mach_port_deallocate(mach_task_self(),iopl_mem);
- if( err )
- {
- errno = err;
- FatalError("xf86MapVidMem() can't vm_map.(iopl_mem) (%s)\n",strerror(errno));
- }
- mach_port_deallocate(mach_task_self(),iopl_dev);
- if( err )
- {
- errno = err;
- FatalError("xf86MapVidMem() can't mach_port_deallocate.(iopl_dev) (%s)\n",strerror(errno));
- }
- return (pointer)addr;
-}
-
-void
-xf86UnMapVidMem(int ScreenNum,pointer Base,unsigned long Size)
-{
- kern_return_t err = vm_deallocate(mach_task_self(), (int)Base, Size);
- if( err )
- {
- errno = err;
- ErrorF("xf86UnMapVidMem: can't dealloc framebuffer space (%s)\n",strerror(errno));
- }
- return;
-}
-
-Bool
-xf86LinearVidMem()
-{
- return(TRUE);
-}
-
-/**************************************************************************
- * I/O Permissions section
- ***************************************************************************/
-Bool
-xf86EnableIO()
-{
- return TRUE;
-}
-
-void
-xf86DisableIO()
-{
- return;
-}
-
-void
-xf86ClearIOPortList(int ScreenNum)
-{
- return;
-}
-void
-xf86AddIOPorts(int ScreenNum,int NumPorts,unsigned int *Ports)
-{
- return;
-}
-void
-xf86EnableIOPorts(int ScreenNum)
-{
- return;
-}
-
-void
-xf86DisableIOPorts(int ScreenNum)
-{
- return;
-}
-void
-xf86DisableIOPrivs()
-{
- return;
-}
-/**************************************************************************
- * Interrupt Handling section
- **************************************************************************/
-Bool
-xf86DisableInterrupts()
-{
- return TRUE;
-}
-void
-xf86EnableInterrupts()
-{
- return;
-}
-
-void
-xf86MapReadSideEffects(int ScreenNum, int Flags, pointer Base,
- unsigned long Size)
-{
-}
-
-Bool
-xf86CheckMTRR(int s)
-{
- return FALSE;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/int10Defines.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/int10Defines.h
deleted file mode 100644
index 56e10cf67..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/int10Defines.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/int10Defines.h,v 1.4 2003/08/24 17:37:03 dawes Exp $ */
-/*
- * Copyright (c) 2000-2001 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _INT10DEFINES_H_
-#define _INT10DEFINES_H_ 1
-
-#ifdef _VM86_LINUX
-
-#include <asm/vm86.h>
-
-#define CPU_R(type,name,num) \
- (((type *)&(((struct vm86_struct *)REG->cpuRegs)->regs.name))[num])
-#define CPU_RD(name,num) CPU_R(CARD32,name,num)
-#define CPU_RW(name,num) CPU_R(CARD16,name,num)
-#define CPU_RB(name,num) CPU_R(CARD8,name,num)
-
-#define X86_EAX CPU_RD(eax,0)
-#define X86_EBX CPU_RD(ebx,0)
-#define X86_ECX CPU_RD(ecx,0)
-#define X86_EDX CPU_RD(edx,0)
-#define X86_ESI CPU_RD(esi,0)
-#define X86_EDI CPU_RD(edi,0)
-#define X86_EBP CPU_RD(ebp,0)
-#define X86_EIP CPU_RD(eip,0)
-#define X86_ESP CPU_RD(esp,0)
-#define X86_EFLAGS CPU_RD(eflags,0)
-
-#define X86_FLAGS CPU_RW(eflags,0)
-#define X86_AX CPU_RW(eax,0)
-#define X86_BX CPU_RW(ebx,0)
-#define X86_CX CPU_RW(ecx,0)
-#define X86_DX CPU_RW(edx,0)
-#define X86_SI CPU_RW(esi,0)
-#define X86_DI CPU_RW(edi,0)
-#define X86_BP CPU_RW(ebp,0)
-#define X86_IP CPU_RW(eip,0)
-#define X86_SP CPU_RW(esp,0)
-#define X86_CS CPU_RW(cs,0)
-#define X86_DS CPU_RW(ds,0)
-#define X86_ES CPU_RW(es,0)
-#define X86_SS CPU_RW(ss,0)
-#define X86_FS CPU_RW(fs,0)
-#define X86_GS CPU_RW(gs,0)
-
-#define X86_AL CPU_RB(eax,0)
-#define X86_BL CPU_RB(ebx,0)
-#define X86_CL CPU_RB(ecx,0)
-#define X86_DL CPU_RB(edx,0)
-
-#define X86_AH CPU_RB(eax,1)
-#define X86_BH CPU_RB(ebx,1)
-#define X86_CH CPU_RB(ecx,1)
-#define X86_DH CPU_RB(edx,1)
-
-#elif defined(_X86EMU)
-
-#include "xf86x86emu.h"
-
-#endif
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/Imakefile
deleted file mode 100644
index 8ef246842..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/Imakefile
+++ /dev/null
@@ -1,142 +0,0 @@
-XCOMM $XConsortium: Imakefile /main/10 1996/10/19 18:06:19 kaleb $
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile,v 3.45 2002/09/16 18:06:13 eich Exp $
-
-#include <Server.tmpl>
-
-#if BuildXInputExt
-# if JoystickSupport
- JOYSTICK_SRC = lnx_jstk.c
-# endif
-# if DoLoadableServer
-SHARED_CFLAGS = PositionIndependentCFlags
-# else
-# if JoystickSupport
- JOYSTICK_OBJ = lnx_jstk.o
-# endif
-# endif
-#endif
-
-#if HasMTRRSupport
-MTRRDEFINES = -DHAS_MTRR_SUPPORT
-#endif
-
-DRI_SRC = sigio.c
-DRI_OBJ = sigio.o
-
-MOUSESRC = lnx_mouse.c
-MOUSEOBJ = lnx_mouse.o
-
-KBDSRC = lnx_kbd.c lnx_KbdMap.c at_scancode.c
-KBDOBJ = lnx_kbd.o lnx_KbdMap.o at_scancode.o
-
-#if defined(i386Architecture) || defined(ia64Architecture) || defined(AMD64Architecture)
-RES_SRCS=stdResource.c
-RES_OBJS=stdResource.o
-#else
-RES_SRCS=lnxResource.c
-RES_OBJS=lnxResource.o
-#endif
-
-#if defined(AlphaArchitecture)
-PLATFORM_SRC=lnx_ev56.c xf86Axp.c lnx_axp.c
-PLATFORM_OBJ=lnx_ev56.o xf86Axp.o lnx_axp.o
-#endif
-#if defined (ia64Architecture)
-PLATFORM_SRC=ia64Pci.c lnx_ia64.c
-PLATFORM_OBJ=ia64Pci.o lnx_ia64.o
-PLATFORM_DEFINES=-DOS_PROBE_PCI_CHIPSET=lnxProbePciChipset
-#endif
-
-#if DoOSFontRestore
-FONTSRC=lnx_font.c
-FONTOBJ=lnx_font.o
-# ifndef FontRestoreCheckOsVersion
-# define FontRestoreCheckOsVersion YES
-# endif
-FONT_DEFINES=-DDO_OS_FONTRESTORE -DCHECK_OS_VERSION=FontRestoreCheckOsVersion
-#endif
-
-SRCS = lnx_init.c lnx_video.c lnx_io.c libc_wrapper.c bios_mmap.c \
- VTsw_usl.c std_kbdEv.c posix_tty.c lnx_acpi.c $(MOUSESRC) \
- lnx_pci.c vidmem.c lnx_apm.c $(JOYSTICK_SRC) $(DRI_SRC) $(RES_SRCS) \
- $(PLATFORM_SRC) lnx_kmod.c lnx_agp.c $(FONTSRC) $(KBDSRC) /*wcHelper.c*/
-
-OBJS = lnx_init.o lnx_video.o lnx_io.o libc_wrapper.o bios_mmap.o \
- VTsw_usl.o std_kbdEv.o posix_tty.o lnx_acpi.o $(MOUSEOBJ) \
- lnx_pci.o vidmem.o lnx_apm.o $(JOYSTICK_OBJ) $(DRI_OBJ) $(RES_OBJS) \
- $(PLATFORM_OBJ) lnx_kmod.o lnx_agp.o $(FONTOBJ) $(KBDOBJ) /*wcHelper.o*/
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(EXTINCSRC) -I$(XF86OSSRC)/shared \
- -I$(XF86OSSRC)/bus -I$(DRMSRCDIR)/shared-core
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(MTRRDEFINES) $(RESDEFINES) $(PLATFORM_DEFINES) $(FONT_DEFINES) -DHAVE_SYSV_IPC
-
-#if defined(AlphaArchitecture)
-SpecialObjectRule(lnx_ev56.o, lnx_ev56.c, -mcpu=ev56)
-#endif
-
-#if DoOSFontRestore
-SpecialObjectRule(VTsw_usl.o, VTsw_usl.c, -DOSHEADER=\"lnx.h\" -DOSSWITCHAWAY="lnx_switchaway()")
-#endif
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-#if BuildXF86DRI
-DRISUBDIR = drm
-#endif
-TESTVAR = XF86INT10_BUILD
-
-#if XF86INT10_BUILD > X86EMU_GENERIC
-INT10SUBDIR = int10
-#endif
-
-#if BuildXF86DRI || (XF86INT10_BUILD > X86EMU_GENERIC)
-#define IHaveSubdirs
-SUBDIRS = $(DRISUBDIR) $(INT10SUBDIR)
-#endif
-
-#ifdef IHaveSubdirs
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-#endif
-
-#if BuildXInputExt
-# if DoLoadableServer
-# if JoystickSupport
-AllTarget(lnx_jstk.o)
-#if 0
-InstallDynamicModule(lnx_jstk.o,$(MODULEDIR),input)
-#endif
-# endif
-# endif
-#endif
-
-LinkSourceFile(bios_mmap.c,../shared)
-LinkSourceFile(std_kbdEv.c,../shared)
-LinkSourceFile(at_scancode.c,../shared)
-LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(vidmem.c,../shared)
-LinkSourceFile(VTsw_usl.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-
-LinkSourceFile($(DRI_SRC),../shared)
-
-#if defined(i386Architecture) || defined(ia64Architecture) || defined (AMD64Architecture)
-LinkSourceFile(stdResource.c,../shared)
-#endif
-#if defined(AlphaArchitecture)
-LinkSourceFile(xf86Axp.c,../shared)
-#endif
-#if defined(ia64Architecture)
-LinkSourceFile(ia64Pci.c,../shared)
-#endif
-DependTarget()
-
-#if 0
-InstallDriverSDKDynamicModule(lnx_jstk.o,$(DRIVERSDKMODULEDIR))
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile
deleted file mode 100644
index 54511fbe0..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/drm/Imakefile
+++ /dev/null
@@ -1,64 +0,0 @@
-XCOMM $XFree86: Imakefile,v 1.13 2002/10/30 12:52:32 alanh Exp $
-
-#define IHaveModules
-#include <Server.tmpl>
-
-#if DoLoadableServer
-MSRC = drmmodule.c
-MOBJ = drmmodule.o
-#endif
-
-#if BuildXF86DRI
-#if HasMTRRSupport
-MTRR_DEFINES = -DHAS_MTRR_SUPPORT
-#endif
-
- SRCS = xf86drm.c \
- xf86drmHash.c \
- xf86drmRandom.c \
- xf86drmSL.c \
- $(MSRC)
-
- OBJS = xf86drm.o \
- xf86drmHash.o \
- xf86drmRandom.o \
- xf86drmSL.o \
- $(MOBJ)
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(EXTINCSRC) -I../.. -I$(DRMSRCDIR)/linux-core \
- -I$(DRMSRCDIR)/shared-core
-
-DEFINES = $(MTRR_DEFINES) $(GLX_DEFINES)
-
-LIBDRM_DIR = ../../../../../../../extras/drm/libdrm
-
-LinkSourceFile(xf86drm.c,$(LIBDRM_DIR))
-LinkSourceFile(xf86drmHash.c,$(LIBDRM_DIR))
-LinkSourceFile(xf86drmRandom.c,$(LIBDRM_DIR))
-LinkSourceFile(xf86drmSL.c,$(LIBDRM_DIR))
-
-#if DoLoadableServer
-
-ModuleObjectRule()
-LibraryModuleTarget(drm,$(OBJS))
-NormalLintTarget($(SRCS))
-
-#ifdef LinuxArchitecture
-InstallLibraryModule(drm,$(MODULEDIR),linux)
-#endif
-
-#else
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-#endif
-
-
-DependTarget()
-#endif
-
-
-
-InstallDriverSDKLibraryModule(drm,$(DRIVERSDKMODULEDIR),linux)
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c
deleted file mode 100644
index fd751e756..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* drmmodule.c -- Module initialization
- * Created: Fri Jun 4 09:05:48 1999 by faith@precisioninsight.com
- *
- * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
- * 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
- * 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 NONINFRINGEMENT. IN NO EVENT SHALL
- * PRECISION INSIGHT AND/OR ITS 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 <faith@valinux.com>
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/drmmodule.c,v 1.2 2000/02/23 04:47:22 martin Exp $
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Module.h"
-
-static MODULESETUPPROTO(drmSetup);
-
-static XF86ModuleVersionInfo VersRec =
-{
- "drm",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- 1, 0, 0,
- ABI_CLASS_EXTENSION,
- ABI_EXTENSION_VERSION,
- MOD_CLASS_NONE,
- {0,0,0,0}
-};
-
-XF86ModuleData drmModuleData = { &VersRec, drmSetup, NULL };
-
-static pointer
-drmSetup(pointer module, pointer opts, int *errmaj, int *errmin)
-{
- return (void *)1;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/Imakefile
deleted file mode 100644
index 6a23e75e5..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/Imakefile
+++ /dev/null
@@ -1,77 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/int10/Imakefile,v 1.15 2003/06/12 14:12:36 eich Exp $
-
-#define IHaveModules
-
-#include <Server.tmpl>
-
-#define IHaveSubdirs
-
-
-#if defined(XF86INT10_BUILD) && \
- ( !defined(DoLoadableServer) || !defined(Int10SubLibs))
-#define DoSingleLib
-# if XF86INT10_BUILD == X86VM
-EXPOBJS = vm86/helper_exec.o vm86/linux_vm86.o vm86/xf86int10.o
-SUBDIRS = vm86
-# elif XF86INT10_BUILD == X86EMU_OS
-EXPOBJS = x86emu/x86emu.o x86emu/xf86int10.o x86emu/helper_exec.o \
- x86emu/xf86x86emu.o
-SUBDIRS = x86emu
-# endif
-#else
-SUBDIRS = vm86 x86emu
-LNXDEF = -DDoSubModules
-#endif
-
-
-#ifdef IHaveSubdirs
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-#endif
-
-SRCS = pci.c xf86int10module.c helper_mem.c linux.c
-OBJS = pci.o xf86int10module.o helper_mem.o linux.o
-
-
-LinkSourceFile(helper_mem.c,$(XF86SRC)/int10)
-LinkSourceFile(pci.c,$(XF86SRC)/int10)
-LinkSourceFile(xf86int10module.c,$(XF86SRC)/int10)
-
-
-INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86SRC)/int10 \
- -I$(XF86OSSRC) \
- -I$(SERVERSRC)/include -I$(XINCLUDESRC) -I$(X86EMUINCLUDES)
-
-DEFINES=-DHAVE_SYSV_IPC $(X86EMUDEFINES) $(EXTRADEFINES)
-
-#if defined(i386Architecture) || defined (AMD64Architecture)
-EXTRADEFINES=-D_PC
-#endif
-
-
-SpecialObjectRule(linux.o, linux.c, -DHAVE_SYSV_IPC $(LNXDEF))
-
-
-#if defined(XF86INT10_BUILD) && XF86INT10_BUILD > X86EMU_GENERIC
-
-ModuleObjectRule()
-
-#if HasParallelMake && defined (DoSingleLib)
-MakeMutex($(SUBDIRS) $(EXPOBJS) $(DONES))
-#endif
-
-LibraryModuleTarget(int10, $(OBJS) $(EXPOBJS))
-
-InstallLibraryModule(int10,$(MODULEDIR),linux)
-
-all::
- @(set -x; cd ../..; \
- RemoveFile(LibraryTargetName(int10)); \
- $(LN) linux/int10/LibraryTargetName(int10) . )
-
-InstallDriverSDKLibraryModule(int10,$(DRIVERSDKMODULEDIR),.)
-
-#endif
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c
deleted file mode 100644
index b8e821cd1..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c
+++ /dev/null
@@ -1,649 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c,v 1.32 2004/02/05 18:24:59 eich Exp $ */
-/*
- * linux specific part of the int10 module
- * Copyright 1999, 2000, 2001, 2002, 2003, 2004 Egbert Eich
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#include "xf86_ansic.h"
-#include "xf86Pci.h"
-#include "compiler.h"
-#define _INT10_PRIVATE
-#include "xf86int10.h"
-#ifdef __sparc__
-#define DEV_MEM "/dev/fb"
-#else
-#define DEV_MEM "/dev/mem"
-#endif
-#ifndef XFree86LOADER
-#include <sys/mman.h>
-#ifndef MAP_FAILED
-#define MAP_FAILED ((void *)-1)
-#endif
-#endif
-#define ALLOC_ENTRIES(x) ((V_RAM / x) - 1)
-#define SHMERRORPTR (pointer)(-1)
-
-static int counter = 0;
-static unsigned long int10Generation = 0;
-
-static CARD8 read_b(xf86Int10InfoPtr pInt, int addr);
-static CARD16 read_w(xf86Int10InfoPtr pInt, int addr);
-static CARD32 read_l(xf86Int10InfoPtr pInt, int addr);
-static void write_b(xf86Int10InfoPtr pInt, int addr, CARD8 val);
-static void write_w(xf86Int10InfoPtr pInt, int addr, CARD16 val);
-static void write_l(xf86Int10InfoPtr pInt, int addr, CARD32 val);
-
-int10MemRec linuxMem = {
- read_b,
- read_w,
- read_l,
- write_b,
- write_w,
- write_l
-};
-
-typedef struct {
- int lowMem;
- int highMem;
- char* base;
- char* base_high;
- int screen;
- char* alloc;
-} linuxInt10Priv;
-
-#if defined DoSubModules
-
-typedef enum {
- INT10_NOT_LOADED,
- INT10_LOADED_VM86,
- INT10_LOADED_X86EMU,
- INT10_LOAD_FAILED
-} Int10LinuxSubModuleState;
-
-static Int10LinuxSubModuleState loadedSubModule = INT10_NOT_LOADED;
-
-static Int10LinuxSubModuleState int10LinuxLoadSubModule(ScrnInfoPtr pScrn);
-
-#endif /* DoSubModules */
-
-xf86Int10InfoPtr
-xf86InitInt10(int entityIndex)
-{
- return xf86ExtendedInitInt10(entityIndex, 0);
-}
-
-xf86Int10InfoPtr
-xf86ExtendedInitInt10(int entityIndex, int Flags)
-{
- xf86Int10InfoPtr pInt = NULL;
- CARD8 *bios_base;
- int screen;
- int fd;
- static void* vidMem = NULL;
- static void* sysMem = NULL;
- void* vMem = NULL;
- void *options = NULL;
- int low_mem;
- int high_mem = -1;
- char *base = SHMERRORPTR;
- char *base_high = SHMERRORPTR;
- int pagesize;
- memType cs;
- legacyVGARec vga;
- xf86int10BiosLocation bios;
- Bool videoBiosMapped = FALSE;
-
- if (int10Generation != serverGeneration) {
- counter = 0;
- int10Generation = serverGeneration;
- }
-
- screen = (xf86FindScreenForEntity(entityIndex))->scrnIndex;
-
- options = xf86HandleInt10Options(xf86Screens[screen],entityIndex);
-
- if (int10skip(options)) {
- xfree(options);
- return NULL;
- }
-
-#if defined DoSubModules
- if (loadedSubModule == INT10_NOT_LOADED)
- loadedSubModule = int10LinuxLoadSubModule(xf86Screens[screen]);
-
- if (loadedSubModule == INT10_LOAD_FAILED)
- return NULL;
-#endif
-
- if ((!vidMem) || (!sysMem)) {
- if ((fd = open(DEV_MEM, O_RDWR, 0)) >= 0) {
- if (!sysMem) {
-#ifdef DEBUG
- ErrorF("Mapping sys bios area\n");
-#endif
- if ((sysMem = mmap((void *)(SYS_BIOS), BIOS_SIZE,
- PROT_READ | PROT_EXEC,
- MAP_SHARED | MAP_FIXED, fd, SYS_BIOS))
- == MAP_FAILED) {
- xf86DrvMsg(screen, X_ERROR, "Cannot map SYS BIOS\n");
- close(fd);
- goto error0;
- }
- }
- if (!vidMem) {
-#ifdef DEBUG
- ErrorF("Mapping VRAM area\n");
-#endif
- if ((vidMem = mmap((void *)(V_RAM), VRAM_SIZE,
- PROT_READ | PROT_WRITE | PROT_EXEC,
- MAP_SHARED | MAP_FIXED, fd, V_RAM))
- == MAP_FAILED) {
- xf86DrvMsg(screen, X_ERROR, "Cannot map V_RAM\n");
- close(fd);
- goto error0;
- }
- }
- close(fd);
- } else {
- xf86DrvMsg(screen, X_ERROR, "Cannot open %s\n", DEV_MEM);
- goto error0;
- }
- }
-
- pInt = (xf86Int10InfoPtr)xnfcalloc(1, sizeof(xf86Int10InfoRec));
- pInt->scrnIndex = screen;
- pInt->entityIndex = entityIndex;
- if (!xf86Int10ExecSetup(pInt))
- goto error0;
- pInt->mem = &linuxMem;
- pagesize = getpagesize();
- pInt->private = (pointer)xnfcalloc(1, sizeof(linuxInt10Priv));
- ((linuxInt10Priv*)pInt->private)->screen = screen;
- ((linuxInt10Priv*)pInt->private)->alloc =
- (pointer)xnfcalloc(1, ALLOC_ENTRIES(pagesize));
-
- if (!xf86IsEntityPrimary(entityIndex)) {
-#ifdef DEBUG
- ErrorF("Mapping high memory area\n");
-#endif
- if ((high_mem = shmget(counter++, HIGH_MEM_SIZE,
- IPC_CREAT | SHM_R | SHM_W)) == -1) {
- if (errno == ENOSYS)
- xf86DrvMsg(screen, X_ERROR, "shmget error\n Please reconfigure"
- " your kernel to include System V IPC support\n");
- else
- xf86DrvMsg(screen, X_ERROR,
- "shmget(highmem) error: %s\n",strerror(errno));
- goto error1;
- }
- } else {
-#ifdef DEBUG
- ErrorF("Mapping Video BIOS\n");
-#endif
- videoBiosMapped = TRUE;
- if ((fd = open(DEV_MEM, O_RDWR, 0)) >= 0) {
- if ((vMem = mmap((void *)(V_BIOS), SYS_BIOS - V_BIOS,
- PROT_READ | PROT_WRITE | PROT_EXEC,
- MAP_SHARED | MAP_FIXED, fd, V_BIOS))
- == MAP_FAILED) {
- xf86DrvMsg(screen, X_ERROR, "Cannot map V_BIOS\n");
- close(fd);
- goto error1;
- }
- close (fd);
- } else
- goto error1;
- }
- ((linuxInt10Priv*)pInt->private)->highMem = high_mem;
-
-#ifdef DEBUG
- ErrorF("Mapping 640kB area\n");
-#endif
- if ((low_mem = shmget(counter++, V_RAM,
- IPC_CREAT | SHM_R | SHM_W)) == -1) {
- xf86DrvMsg(screen, X_ERROR,
- "shmget(lowmem) error: %s\n",strerror(errno));
- goto error2;
- }
-
- ((linuxInt10Priv*)pInt->private)->lowMem = low_mem;
- base = shmat(low_mem, 0, 0);
- if (base == SHMERRORPTR) {
- xf86DrvMsg(screen, X_ERROR,
- "shmat(low_mem) error: %s\n",strerror(errno));
- goto error3;
- }
- ((linuxInt10Priv *)pInt->private)->base = base;
- if (high_mem > -1) {
- base_high = shmat(high_mem, 0, 0);
- if (base_high == SHMERRORPTR) {
- xf86DrvMsg(screen, X_ERROR,
- "shmat(high_mem) error: %s\n",strerror(errno));
- goto error3;
- }
- ((linuxInt10Priv*)pInt->private)->base_high = base_high;
- } else
- ((linuxInt10Priv*)pInt->private)->base_high = NULL;
-
- if (!MapCurrentInt10(pInt))
- goto error3;
-
- Int10Current = pInt;
-
-#ifdef DEBUG
- ErrorF("Mapping int area\n");
-#endif
- if (xf86ReadBIOS(0, 0, (unsigned char *)0, LOW_PAGE_SIZE) < 0) {
- xf86DrvMsg(screen, X_ERROR, "Cannot read int vect\n");
- goto error3;
- }
-#ifdef DEBUG
- ErrorF("done\n");
-#endif
- /*
- * Read in everything between V_BIOS and SYS_BIOS as some system BIOSes
- * have executable code there. Note that xf86ReadBIOS() can only bring in
- * 64K bytes at a time.
- */
- if (!videoBiosMapped) {
- (void)memset((pointer)V_BIOS, 0, SYS_BIOS - V_BIOS);
-#ifdef DEBUG
- ErrorF("Reading BIOS\n");
-#endif
- for (cs = V_BIOS; cs < SYS_BIOS; cs += V_BIOS_SIZE)
- if (xf86ReadBIOS(cs, 0, (pointer)cs, V_BIOS_SIZE) < V_BIOS_SIZE)
- xf86DrvMsg(screen, X_WARNING,
- "Unable to retrieve all of segment 0x%06lX.\n", cs);
-#ifdef DEBUG
- ErrorF("done\n");
-#endif
- }
-
- xf86int10ParseBiosLocation(options,&bios);
-
- if (xf86IsEntityPrimary(entityIndex)
- && !(initPrimary(options))) {
- if (bios.bus == BUS_ISA && bios.location.legacy) {
- xf86DrvMsg(screen, X_CONFIG,
- "Overriding BIOS location: 0x%x\n",
- bios.location.legacy);
- cs = bios.location.legacy >> 4;
- bios_base = (unsigned char *)(cs << 4);
- if (!int10_check_bios(screen, cs, bios_base)) {
- xf86DrvMsg(screen, X_ERROR,
- "No V_BIOS at specified address 0x%lx\n",cs << 4);
- goto error3;
- }
- } else {
- if (bios.bus == BUS_PCI) {
- xf86DrvMsg(screen, X_WARNING,
- "Option BiosLocation for primary device ignored: "
- "It points to PCI.\n");
- xf86DrvMsg(screen, X_WARNING,
- "You must set Option InitPrimary also\n");
- }
-
- cs = ((CARD16*)0)[(0x10<<1) + 1];
-
- bios_base = (unsigned char *)(cs << 4);
-
- if (!int10_check_bios(screen, cs, bios_base)) {
- cs = ((CARD16*)0)[(0x42 << 1) + 1];
- bios_base = (unsigned char *)(cs << 4);
- if (!int10_check_bios(screen, cs, bios_base)) {
- cs = V_BIOS >> 4;
- bios_base = (unsigned char *)(cs << 4);
- if (!int10_check_bios(screen, cs, bios_base)) {
- xf86DrvMsg(screen, X_ERROR, "No V_BIOS found\n");
- goto error3;
- }
- }
- }
- }
-
- xf86DrvMsg(screen, X_INFO, "Primary V_BIOS segment is: 0x%lx\n", cs);
-
- pInt->BIOSseg = cs;
- set_return_trap(pInt);
-#ifdef _PC
- pInt->Flags = Flags & (SET_BIOS_SCRATCH | RESTORE_BIOS_SCRATCH);
- if (! (pInt->Flags & SET_BIOS_SCRATCH))
- pInt->Flags &= ~RESTORE_BIOS_SCRATCH;
- xf86Int10SaveRestoreBIOSVars(pInt, TRUE);
-#endif
- } else {
- EntityInfoPtr pEnt = xf86GetEntityInfo(pInt->entityIndex);
- BusType location_type;
-
- if (bios.bus != BUS_NONE) {
- switch (location_type = bios.bus) {
- case BUS_PCI:
- xf86DrvMsg(screen,X_CONFIG,"Overriding bios location: "
- "PCI:%i:%i%i\n",bios.location.pci.bus,
- bios.location.pci.dev,bios.location.pci.func);
- break;
- case BUS_ISA:
- if (bios.location.legacy)
- xf86DrvMsg(screen,X_CONFIG,"Overriding bios location: "
- "Legacy:0x%x\n",bios.location.legacy);
- else
- xf86DrvMsg(screen,X_CONFIG,"Overriding bios location: "
- "Legacy\n");
- break;
- default:
- break;
- }
- } else
- location_type = pEnt->location.type;
-
- switch (location_type) {
- case BUS_PCI:
- {
- int pci_entity;
-
- if (bios.bus == BUS_PCI)
- pci_entity = xf86GetPciEntity(bios.location.pci.bus,
- bios.location.pci.dev,
- bios.location.pci.func);
- else
- pci_entity = pInt->entityIndex;
- if (!mapPciRom(pci_entity, (unsigned char *)(V_BIOS))) {
- xf86DrvMsg(screen, X_ERROR, "Cannot read V_BIOS\n");
- goto error3;
- }
- pInt->BIOSseg = V_BIOS >> 4;
- break;
- }
- case BUS_ISA:
- if (bios.bus == BUS_ISA && bios.location.legacy) {
- cs = bios.location.legacy >> 4;
- bios_base = (unsigned char *)(cs << 4);
- if (!int10_check_bios(screen, cs, bios_base)) {
- xf86DrvMsg(screen,X_ERROR,"No V_BIOS found "
- "on override address %p\n",bios_base);
- goto error3;
- }
- } else {
- cs = ((CARD16*)0)[(0x10<<1)+1];
- bios_base = (unsigned char *)(cs << 4);
-
- if (!int10_check_bios(screen, cs, bios_base)) {
- cs = ((CARD16*)0)[(0x42<<1)+1];
- bios_base = (unsigned char *)(cs << 4);
- if (!int10_check_bios(screen, cs, bios_base)) {
- cs = V_BIOS >> 4;
- bios_base = (unsigned char *)(cs << 4);
- if (!int10_check_bios(screen, cs, bios_base)) {
- xf86DrvMsg(screen,X_ERROR,"No V_BIOS found\n");
- goto error3;
- }
- }
- }
- }
- xf86DrvMsg(screen,X_INFO,"Primary V_BIOS segment is: 0x%lx\n",cs);
- pInt->BIOSseg = cs;
- break;
- default:
- goto error3;
- }
- xfree(pEnt);
- pInt->num = 0xe6;
- reset_int_vect(pInt);
- set_return_trap(pInt);
- LockLegacyVGA(pInt, &vga);
- xf86ExecX86int10(pInt);
- UnlockLegacyVGA(pInt, &vga);
- }
-#ifdef DEBUG
- dprint(0xc0000, 0x20);
-#endif
-
- xfree(options);
- return pInt;
-
-error3:
- if (base_high)
- shmdt(base_high);
- shmdt(base);
- shmdt(0);
- if (base_high)
- shmdt((char*)HIGH_MEM);
- shmctl(low_mem, IPC_RMID, NULL);
- Int10Current = NULL;
-error2:
- if (high_mem > -1)
- shmctl(high_mem, IPC_RMID,NULL);
-error1:
- if (vMem)
- munmap(vMem, SYS_BIOS - V_BIOS);
- xfree(((linuxInt10Priv*)pInt->private)->alloc);
- xfree(pInt->private);
-error0:
- xfree(options);
- xfree(pInt);
- return NULL;
-}
-
-Bool
-MapCurrentInt10(xf86Int10InfoPtr pInt)
-{
- pointer addr;
- int fd = -1;
-
- if (Int10Current) {
- shmdt(0);
- if (((linuxInt10Priv*)Int10Current->private)->highMem >= 0)
- shmdt((char*)HIGH_MEM);
- else
- munmap((pointer)V_BIOS, (SYS_BIOS - V_BIOS));
- }
- addr = shmat(((linuxInt10Priv*)pInt->private)->lowMem, (char*)1, SHM_RND);
- if (addr == SHMERRORPTR) {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "Cannot shmat() low memory\n");
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
- "shmat(low_mem) error: %s\n",strerror(errno));
- return FALSE;
- }
-
- if (((linuxInt10Priv*)pInt->private)->highMem >= 0) {
- addr = shmat(((linuxInt10Priv*)pInt->private)->highMem,
- (char*)HIGH_MEM, 0);
- if (addr == SHMERRORPTR) {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
- "Cannot shmat() high memory\n");
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
- "shmget error: %s\n",strerror(errno));
- return FALSE;
- }
- } else {
- if ((fd = open(DEV_MEM, O_RDWR, 0)) >= 0) {
- if (mmap((void *)(V_BIOS), SYS_BIOS - V_BIOS,
- PROT_READ | PROT_WRITE | PROT_EXEC,
- MAP_SHARED | MAP_FIXED, fd, V_BIOS)
- == MAP_FAILED) {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "Cannot map V_BIOS\n");
- close (fd);
- return FALSE;
- }
- } else {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "Cannot open %s\n",DEV_MEM);
- return FALSE;
- }
- close (fd);
- }
-
- return TRUE;
-}
-
-void
-xf86FreeInt10(xf86Int10InfoPtr pInt)
-{
- if (!pInt)
- return;
-
-#ifdef _PC
- xf86Int10SaveRestoreBIOSVars(pInt, FALSE);
-#endif
- if (Int10Current == pInt) {
- shmdt(0);
- if (((linuxInt10Priv*)pInt->private)->highMem >= 0)
- shmdt((char*)HIGH_MEM);
- else
- munmap((pointer)V_BIOS, (SYS_BIOS - V_BIOS));
- Int10Current = NULL;
- }
-
- if (((linuxInt10Priv*)pInt->private)->base_high)
- shmdt(((linuxInt10Priv*)pInt->private)->base_high);
- shmdt(((linuxInt10Priv*)pInt->private)->base);
- shmctl(((linuxInt10Priv*)pInt->private)->lowMem, IPC_RMID, NULL);
- if (((linuxInt10Priv*)pInt->private)->highMem >= 0)
- shmctl(((linuxInt10Priv*)pInt->private)->highMem, IPC_RMID, NULL);
- xfree(((linuxInt10Priv*)pInt->private)->alloc);
- xfree(pInt->private);
- xfree(pInt);
-}
-
-void *
-xf86Int10AllocPages(xf86Int10InfoPtr pInt, int num, int *off)
-{
- int pagesize = getpagesize();
- int num_pages = ALLOC_ENTRIES(pagesize);
- int i, j;
-
- for (i = 0; i < (num_pages - num); i++) {
- if (((linuxInt10Priv*)pInt->private)->alloc[i] == 0) {
- for (j = i; j < (num + i); j++)
- if ((((linuxInt10Priv*)pInt->private)->alloc[j] != 0))
- break;
- if (j == (num + i))
- break;
- else
- i = i + num;
- }
- }
- if (i == (num_pages - num))
- return NULL;
-
- for (j = i; j < (i + num); j++)
- ((linuxInt10Priv*)pInt->private)->alloc[j] = 1;
-
- *off = (i + 1) * pagesize;
-
- return ((linuxInt10Priv*)pInt->private)->base + ((i + 1) * pagesize);
-}
-
-void
-xf86Int10FreePages(xf86Int10InfoPtr pInt, void *pbase, int num)
-{
- int pagesize = getpagesize();
- int first = (((unsigned long)pbase
- - (unsigned long)((linuxInt10Priv*)pInt->private)->base)
- / pagesize) - 1;
- int i;
-
- for (i = first; i < (first + num); i++)
- ((linuxInt10Priv*)pInt->private)->alloc[i] = 0;
-}
-
-static CARD8
-read_b(xf86Int10InfoPtr pInt, int addr)
-{
- return *((CARD8 *)(memType)addr);
-}
-
-static CARD16
-read_w(xf86Int10InfoPtr pInt, int addr)
-{
- return *((CARD16 *)(memType)addr);
-}
-
-static CARD32
-read_l(xf86Int10InfoPtr pInt, int addr)
-{
- return *((CARD32 *)(memType)addr);
-}
-
-static void
-write_b(xf86Int10InfoPtr pInt, int addr, CARD8 val)
-{
- *((CARD8 *)(memType)addr) = val;
-}
-
-static void
-write_w(xf86Int10InfoPtr pInt, int addr, CARD16 val)
-{
- *((CARD16 *)(memType)addr) = val;
-}
-
-static
-void write_l(xf86Int10InfoPtr pInt, int addr, CARD32 val)
-{
- *((CARD32 *)(memType) addr) = val;
-}
-
-pointer
-xf86int10Addr(xf86Int10InfoPtr pInt, CARD32 addr)
-{
- if (addr < V_RAM)
- return ((linuxInt10Priv*)pInt->private)->base + addr;
- else if (addr < V_BIOS)
- return (pointer)(memType)addr;
- else if (addr < SYS_BIOS) {
- if (((linuxInt10Priv*)pInt->private)->base_high)
- return (pointer)(((linuxInt10Priv*)pInt->private)->base_high
- - V_BIOS + addr);
- else
- return (pointer) (memType)addr;
- } else
- return (pointer) (memType)addr;
-}
-
-#if defined DoSubModules
-
-static Bool
-vm86_tst(void)
-{
- int __res;
-
-#ifdef __PIC__
- /* When compiling with -fPIC, we can't use asm constraint "b" because
- %ebx is already taken by gcc. */
- __asm__ __volatile__("pushl %%ebx\n\t"
- "movl %2,%%ebx\n\t"
- "movl %1,%%eax\n\t"
- "int $0x80\n\t"
- "popl %%ebx"
- :"=a" (__res)
- :"n" ((int)113), "r" (NULL));
-#else
- __asm__ __volatile__("int $0x80\n\t"
- :"=a" (__res):"a" ((int)113),
- "b" ((struct vm86_struct *)NULL));
-#endif
-
- if (__res < 0 && __res == -ENOSYS)
- return FALSE;
-
- return TRUE;
-}
-
-static Int10LinuxSubModuleState
-int10LinuxLoadSubModule(ScrnInfoPtr pScrn)
-{
- if (vm86_tst()) {
- if (xf86LoadSubModule(pScrn,"vm86"))
- return INT10_LOADED_VM86;
- }
- if (xf86LoadSubModule(pScrn,"x86emu"))
- return INT10_LOADED_X86EMU;
-
- return INT10_LOAD_FAILED;
-}
-
-#endif /* DoSubModules */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/Imakefile
deleted file mode 100644
index 522369894..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/Imakefile
+++ /dev/null
@@ -1,55 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/Imakefile,v 1.2 2003/06/12 14:12:37 eich Exp $
-
-#define IHaveModules
-
-#include <Server.tmpl>
-
-SRCS1 = linux_vm86.c helper_exec.c xf86int10.c
-OBJS1 = linux_vm86.o helper_exec.o xf86int10.o
-
-#if defined(DoLoadableServer) && defined(Int10SubLibs)
-SUBMODSRCS = xf86vm86module.c
-SUBMODOBJS = xf86vm86module.o
-#endif
-
-OBJS = $(SUBMODOBJS) $(OBJS1)
-SRCS = $(SUBMODSRCS) $(SRCS1)
-
-LinkSourceFile(helper_exec.c,$(XF86SRC)/int10)
-LinkSourceFile(xf86int10.c,$(XF86SRC)/int10)
-LinkFile(xf86vm86module.c,$(XF86SRC)/int10/xf86int10module.c)
-
-
-INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86SRC)/int10 \
- -I$(XF86OSSRC) \
- -I$(SERVERSRC)/include -I$(XINCLUDESRC) -I$(X86EMUINCLUDES)
-
-DEFINES=-DHAVE_SYSV_IPC $(X86EMUDEFINES) $(EXTRADEFINES)
-
-#if defined(i386Architecture) || defined (AMD64Architecture)
-EXTRADEFINES=-D_PC
-#endif
-
-SpecialObjectRule(xf86vm86module.o, xf86vm86module.c, -DMOD_NAME=vm86)
-SpecialObjectRule(helper_exec.o, helper_exec.c, -D_VM86_LINUX)
-SpecialObjectRule(xf86int10.o, xf86int10.c, -D_VM86_LINUX -DSHOW_ALL_DEVICES)
-SpecialObjectRule(linux_vm86.o, linux_vm86.c, -D_VM86_LINUX)
-
-ModuleObjectRule()
-
-#if defined(DoLoadableServer) && defined(Int10SubLibs)
-LibraryModuleTarget(vm86, $(OBJS))
-InstallLibraryModule(vm86,$(MODULEDIR),linux)
-
-all::
- @(set -x; cd ../..; \
- RemoveFile(LibraryTargetName(vm86)); \
- $(LN) linux/int10/vm86/LibraryTargetName(vm86) . )
-
-InstallDriverSDKLibraryModule(vm86,$(DRIVERSDKMODULEDIR),.)
-#else
-SubdirLibraryRule($(OBJS))
-#endif
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c
deleted file mode 100644
index e99cde8da..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c
+++ /dev/null
@@ -1,302 +0,0 @@
-/* $XFree86$ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#include "xf86_ansic.h"
-#include "xf86Pci.h"
-#include "compiler.h"
-#define _INT10_PRIVATE
-#include "xf86int10.h"
-
-#define REG pInt
-
-#ifdef _VM86_LINUX
-#include "int10Defines.h"
-
-static int vm86_rep(struct vm86_struct *ptr);
-static struct vm86_struct vm86_s;
-
-Bool
-xf86Int10ExecSetup(xf86Int10InfoPtr pInt)
-{
-#define VM86S ((struct vm86_struct *)pInt->cpuRegs)
-
- pInt->cpuRegs = &vm86_s;
- VM86S->flags = 0;
- VM86S->screen_bitmap = 0;
- VM86S->cpu_type = CPU_586;
- memset(&VM86S->int_revectored, 0xff, sizeof(VM86S->int_revectored));
- memset(&VM86S->int21_revectored, 0xff, sizeof(VM86S->int21_revectored));
- return TRUE;
-}
-
-/* get the linear address */
-#define LIN_PREF_SI ((pref_seg << 4) + X86_SI)
-#define LWECX ((prefix66 ^ prefix67) ? X86_ECX : X86_CX)
-#define LWECX_ZERO {if (prefix66 ^ prefix67) X86_ECX = 0; else X86_CX = 0;}
-#define DF (1 << 10)
-
-/* vm86 fault handling */
-static Bool
-vm86_GP_fault(xf86Int10InfoPtr pInt)
-{
- unsigned char *csp, *lina;
- CARD32 org_eip;
- int pref_seg;
- int done, is_rep, prefix66, prefix67;
-
- csp = lina = SEG_ADR((unsigned char *), X86_CS, IP);
-
- is_rep = 0;
- prefix66 = prefix67 = 0;
- pref_seg = -1;
-
- /* eat up prefixes */
- done = 0;
- do {
- switch (MEM_RB(pInt, (int)csp++)) {
- case 0x66: /* operand prefix */ prefix66=1; break;
- case 0x67: /* address prefix */ prefix67=1; break;
- case 0x2e: /* CS */ pref_seg=X86_CS; break;
- case 0x3e: /* DS */ pref_seg=X86_DS; break;
- case 0x26: /* ES */ pref_seg=X86_ES; break;
- case 0x36: /* SS */ pref_seg=X86_SS; break;
- case 0x65: /* GS */ pref_seg=X86_GS; break;
- case 0x64: /* FS */ pref_seg=X86_FS; break;
- case 0xf0: /* lock */ break;
- case 0xf2: /* repnz */
- case 0xf3: /* rep */ is_rep=1; break;
- default: done=1;
- }
- } while (!done);
- csp--; /* oops one too many */
- org_eip = X86_EIP;
- X86_IP += (csp - lina);
-
- switch (MEM_RB(pInt, (int)csp)) {
- case 0x6c: /* insb */
- /* NOTE: ES can't be overwritten; prefixes 66,67 should use esi,edi,ecx
- * but is anyone using extended regs in real mode? */
- /* WARNING: no test for DI wrapping! */
- X86_EDI += port_rep_inb(pInt, X86_DX, SEG_EADR((CARD32), X86_ES, DI),
- X86_FLAGS & DF, is_rep ? LWECX : 1);
- if (is_rep) LWECX_ZERO;
- X86_IP++;
- break;
-
- case 0x6d: /* (rep) insw / insd */
- /* NOTE: ES can't be overwritten */
- /* WARNING: no test for _DI wrapping! */
- if (prefix66) {
- X86_DI += port_rep_inl(pInt, X86_DX, SEG_ADR((CARD32), X86_ES, DI),
- X86_EFLAGS & DF, is_rep ? LWECX : 1);
- }
- else {
- X86_DI += port_rep_inw(pInt, X86_DX, SEG_ADR((CARD32), X86_ES, DI),
- X86_FLAGS & DF, is_rep ? LWECX : 1);
- }
- if (is_rep) LWECX_ZERO;
- X86_IP++;
- break;
-
- case 0x6e: /* (rep) outsb */
- if (pref_seg < 0) pref_seg = X86_DS;
- /* WARNING: no test for _SI wrapping! */
- X86_SI += port_rep_outb(pInt, X86_DX, (CARD32)LIN_PREF_SI,
- X86_FLAGS & DF, is_rep ? LWECX : 1);
- if (is_rep) LWECX_ZERO;
- X86_IP++;
- break;
-
- case 0x6f: /* (rep) outsw / outsd */
- if (pref_seg < 0) pref_seg = X86_DS;
- /* WARNING: no test for _SI wrapping! */
- if (prefix66) {
- X86_SI += port_rep_outl(pInt, X86_DX, (CARD32)LIN_PREF_SI,
- X86_EFLAGS & DF, is_rep ? LWECX : 1);
- }
- else {
- X86_SI += port_rep_outw(pInt, X86_DX, (CARD32)LIN_PREF_SI,
- X86_FLAGS & DF, is_rep ? LWECX : 1);
- }
- if (is_rep) LWECX_ZERO;
- X86_IP++;
- break;
-
- case 0xe5: /* inw xx, inl xx */
- if (prefix66) X86_EAX = x_inl(csp[1]);
- else X86_AX = x_inw(csp[1]);
- X86_IP += 2;
- break;
-
- case 0xe4: /* inb xx */
- X86_AL = x_inb(csp[1]);
- X86_IP += 2;
- break;
-
- case 0xed: /* inw dx, inl dx */
- if (prefix66) X86_EAX = x_inl(X86_DX);
- else X86_AX = x_inw(X86_DX);
- X86_IP += 1;
- break;
-
- case 0xec: /* inb dx */
- X86_AL = x_inb(X86_DX);
- X86_IP += 1;
- break;
-
- case 0xe7: /* outw xx */
- if (prefix66) x_outl(csp[1], X86_EAX);
- else x_outw(csp[1], X86_AX);
- X86_IP += 2;
- break;
-
- case 0xe6: /* outb xx */
- x_outb(csp[1], X86_AL);
- X86_IP += 2;
- break;
-
- case 0xef: /* outw dx */
- if (prefix66) x_outl(X86_DX, X86_EAX);
- else x_outw(X86_DX, X86_AX);
- X86_IP += 1;
- break;
-
- case 0xee: /* outb dx */
- x_outb(X86_DX, X86_AL);
- X86_IP += 1;
- break;
-
- case 0xf4:
-#ifdef DEBUG
- ErrorF("hlt at %p\n", lina);
-#endif
- return FALSE;
-
- case 0x0f:
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
- "CPU 0x0f Trap at CS:EIP=0x%4.4x:0x%8.8lx\n", X86_CS, X86_EIP);
- goto op0ferr;
-
- default:
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "unknown reason for exception\n");
-
- op0ferr:
- dump_registers(pInt);
- stack_trace(pInt);
- dump_code(pInt);
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "cannot continue\n");
- return FALSE;
- } /* end of switch() */
- return TRUE;
-}
-
-static int
-do_vm86(xf86Int10InfoPtr pInt)
-{
- int retval, signo;
-
- xf86InterceptSignals(&signo);
- retval = vm86_rep(VM86S);
- xf86InterceptSignals(NULL);
-
- if (signo >= 0) {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
- "vm86() syscall generated signal %d.\n", signo);
- dump_registers(pInt);
- dump_code(pInt);
- stack_trace(pInt);
- return 0;
- }
-
- switch (VM86_TYPE(retval)) {
- case VM86_UNKNOWN:
- if (!vm86_GP_fault(pInt)) return 0;
- break;
- case VM86_STI:
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "vm86_sti :-((\n");
- dump_registers(pInt);
- dump_code(pInt);
- stack_trace(pInt);
- return 0;
- case VM86_INTx:
- pInt->num = VM86_ARG(retval);
- if (!int_handler(pInt)) {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
- "Unknown vm86_int: 0x%X\n\n", VM86_ARG(retval));
- dump_registers(pInt);
- dump_code(pInt);
- stack_trace(pInt);
- return 0;
- }
- /* I'm not sure yet what to do if we can handle ints */
- break;
- case VM86_SIGNAL:
- return 1;
- /*
- * we used to warn here and bail out - but now the sigio stuff
- * always fires signals at us. So we just ignore them for now.
- */
- xf86DrvMsg(pInt->scrnIndex, X_WARNING, "received signal\n");
- return 0;
- default:
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "unknown type(0x%x)=0x%x\n",
- VM86_ARG(retval), VM86_TYPE(retval));
- dump_registers(pInt);
- dump_code(pInt);
- stack_trace(pInt);
- return 0;
- }
-
- return 1;
-}
-
-void
-xf86ExecX86int10(xf86Int10InfoPtr pInt)
-{
- int sig = setup_int(pInt);
-
- if (int_handler(pInt))
- while(do_vm86(pInt)) {};
-
- finish_int(pInt, sig);
-}
-
-static int
-vm86_rep(struct vm86_struct *ptr)
-{
- int __res;
-
-#ifdef __PIC__
- /* When compiling with -fPIC, we can't use asm constraint "b" because
- %ebx is already taken by gcc. */
- __asm__ __volatile__("pushl %%ebx\n\t"
- "push %%gs\n\t"
- "movl %2,%%ebx\n\t"
- "movl %1,%%eax\n\t"
- "int $0x80\n\t"
- "pop %%gs\n\t"
- "popl %%ebx"
- :"=a" (__res)
- :"n" ((int)113), "r" ((struct vm86_struct *)ptr));
-#else
- __asm__ __volatile__("push %%gs\n\t"
- "int $0x80\n\t"
- "pop %%gs"
- :"=a" (__res):"a" ((int)113),
- "b" ((struct vm86_struct *)ptr));
-#endif
-
- if (__res < 0) {
- errno = -__res;
- __res = -1;
- }
- else errno = 0;
- return __res;
-}
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/x86emu/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/x86emu/Imakefile
deleted file mode 100644
index 8a0dc4463..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/x86emu/Imakefile
+++ /dev/null
@@ -1,86 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/int10/x86emu/Imakefile,v 1.2 2003/06/12 14:12:37 eich Exp $
-
-#define IHaveModules
-
-#include <Server.tmpl>
-
-SRCS1 = xf86x86emu.c helper_exec.c xf86int10.c
-OBJS1 = xf86x86emu.o helper_exec.o xf86int10.o
-
-#if defined(DoLoadableServer) && defined(Int10SubLibs)
-SUBMODSRCS = xf86x86emumodule.c
-SUBMODOBJS = xf86x86emumodule.o
-#endif
-
-SRCS2 = $(SUBMODSRCS) $(SRCS1)
-OBJS2 = $(SUBMODOBJS) $(OBJS1)
-
-LinkSourceFile(helper_exec.c,$(XF86SRC)/int10)
-LinkSourceFile(xf86int10.c,$(XF86SRC)/int10)
-LinkSourceFile(xf86x86emu.c,$(XF86SRC)/int10)
-LinkFile(xf86x86emumodule.c,$(XF86SRC)/int10/xf86int10module.c)
-
-
-INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86SRC)/int10 \
- -I$(XF86OSSRC) \
- -I$(SERVERSRC)/include -I$(XINCLUDESRC) -I$(X86EMUINCLUDES)
-
-DEFINES=-DHAVE_SYSV_IPC $(X86EMUDEFINES) $(EXTRADEFINES)
-
-#if defined(i386Architecture) || defined (AMD64Architecture)
-EXTRADEFINES=-D_PC
-#endif
-
-SpecialObjectRule(xf86x86emumodule.o, xf86x86emumodule.c, -DMOD_NAME=x86emu)
-SpecialObjectRule(helper_exec.o, helper_exec.c, -D_X86EMU)
-SpecialObjectRule(xf86int10.o, xf86int10.c, -D_X86EMU -DSHOW_ALL_DEVICES)
-SpecialObjectRule(linux.o, linux.c, -D_X86EMU -DHAVE_SYSV_IPC)
-
-X86TOPDIR = $(TOP)/extras/x86emu
-X86SRCDIR = $(X86TOPDIR)/src/x86emu
-X86EMUINCLUDES = $(X86TOPDIR)/include -I$(X86SRCDIR)
-# if DoLoadableServer
-X86EMUMODDEFS = -DNO_SYS_HEADERS
-# endif
-
-X86EMUDEFINES = -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG $(X86EMUMODDEFS)
-
-#if !defined(X86EMU_LIBPATH)
-X86EMUSRCS = x86emu.c
-X86EMUOBJS = x86emu.o
-
-LinkSourceFile(x86emu.c,$(XF86SRC)/int10)
-LinkSourceFile(debug.c,$(X86SRCDIR))
-LinkSourceFile(decode.c,$(X86SRCDIR))
-LinkSourceFile(fpu.c,$(X86SRCDIR))
-LinkSourceFile(ops.c,$(X86SRCDIR))
-LinkSourceFile(ops2.c,$(X86SRCDIR))
-LinkSourceFile(prim_ops.c,$(X86SRCDIR))
-LinkSourceFile(sys.c,$(X86SRCDIR))
-#else
-BuildObjectFromLibraryWithPath(X86EMU_LIBPATH,x86emu,x86emu)
-X86EMUOBJS = x86emu.o
-#endif
-
-SRCS = $(SRCS2) $(X86EMUSRCS)
-OBJS = $(OBJS2) $(X86EMUOBJS)
-
-ModuleObjectRule()
-
-#if defined(DoLoadableServer) && defined(Int10SubLibs)
-LibraryModuleTarget(x86emu, $(OBJS))
-
-InstallLibraryModule(x86emu,$(MODULEDIR),linux)
-
-all::
- @(set -x; cd ../..; \
- RemoveFile(LibraryTargetName(x86emu)); \
- $(LN) linux/int10/x86emu/LibraryTargetName(x86emu) . )
-
-InstallDriverSDKLibraryModule(x86emu,$(DRIVERSDKMODULEDIR),.)
-#else
-SubdirLibraryRule($(OBJS))
-#endif
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx.h
deleted file mode 100644
index 68ad34011..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* $XFree86: Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef LNX_H_
-# ifdef __alpha__
-extern unsigned long _bus_base __P ((void)) __attribute__ ((const));
-extern unsigned long _bus_base_sparse __P ((void)) __attribute__ ((const));
-extern int iopl __P ((int __level));
-
-/* new pciconfig_iobase syscall added in 2.2.15 and 2.3.99 */
-# include <linux/unistd.h>
-# include <asm/pci.h>
-extern long (*_iobase)(unsigned, int, int, int);
-
-/*
- * _iobase deals with the case the __NR_pciconfig_iobase is either undefined
- * or unsupported by the kernel, but we need to make sure that the `which'
- * argument symbols are defined.
- */
-# ifndef IOBASE_HOSE
-# define IOBASE_HOSE 0
-# endif
-# ifndef IOBASE_SPARSE_MEM
-# define IOBASE_SPARSE_MEM 1
-# endif
-# ifndef IOBASE_DENSE_MEM
-# define IOBASE_DENSE_MEM 2
-# endif
-# ifndef IOBASE_SPARSE_IO
-# define IOBASE_SPARSE_IO 3
-# endif
-# ifndef IOBASE_DENSE_IO
-# define IOBASE_DENSE_IO 4
-# endif
-# ifndef IOBASE_ROOT_BUS
-# define IOBASE_ROOT_BUS 5
-# endif
-# ifndef IOBASE_FROM_HOSE
-# define IOBASE_FROM_HOSE 0x10000
-# endif
-# endif /* __alpha__ */
-
-# if defined(DO_OS_FONTRESTORE)
-Bool lnx_savefont(void);
-Bool lnx_restorefont(void);
-Bool lnx_switchaway(void);
-void lnx_freefontdata(void);
-# endif
-
-#define LNX_H_
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnxResource.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnxResource.c
deleted file mode 100644
index 690d3bc8f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnxResource.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnxResource.c,v 3.18 2002/01/25 21:56:19 tsi Exp $ */
-
-/* Resource information code */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Privstr.h"
-#include "xf86Pci.h"
-#include "xf86Resources.h"
-#define NEED_OS_RAC_PROTOS
-#include "xf86_OSlib.h"
-#include "lnx.h"
-
-/* Avoid Imakefile changes */
-#include "bus/Pci.h"
-
-resRange PciAvoid[] =
-{
-#if !defined(__sparc__) || !defined(INCLUDE_XF86_NO_DOMAIN)
- _PCI_AVOID_PC_STYLE,
-#endif
- _END
-};
-
-#ifdef INCLUDE_XF86_NO_DOMAIN
-
-#ifdef __alpha__
-
-resPtr
-xf86BusAccWindowsFromOS(void)
-{
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-resPtr
-xf86PciBusAccWindowsFromOS(void)
-{
- resPtr ret = NULL;
- resRange range;
- /*
- * On the Alpha the first 16MB of every 128 Mb segment in
- * sparse address space are an image of the ISA bus range
- */
- if (_bus_base_sparse()) {
- RANGE(range, 0x00000000, 0x07ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x09000000, 0x0fffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x11000000, 0x17ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x19000000, 0x1fffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x21000000, 0x27ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x29000000, 0x2fffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x31000000, 0x37ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x39000000, 0x3fffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x41000000, 0x47ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x49000000, 0x4fffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x51000000, 0x57ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x59000000, 0x5fffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x61000000, 0x67ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x69000000, 0x6fffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x71000000, 0x77ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x79000000, 0x7fffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x81000000, 0x87ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x89000000, 0x8fffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x91000000, 0x97ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x99000000, 0x9fffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xa1000000, 0xa7ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xa9000000, 0xafffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xb1000000, 0xb7ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xb9000000, 0xbfffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xc1000000, 0xc7ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xc9000000, 0xcfffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xd1000000, 0xd7ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xd9000000, 0xdfffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xe1000000, 0xe7ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xe9000000, 0xefffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xf1000000, 0xf7ffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xf9000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- } else {
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- }
- RANGE(range, 0x00000000, 0xffffffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-#ifdef INCLUDE_UNUSED
-
-resPtr
-xf86IsaBusAccWindowsFromOS(void)
-{
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-#endif /* INCLUDE_UNUSED */
-
-resPtr
-xf86AccResFromOS(resPtr ret)
-{
- resRange range;
-
- /*
- * Fallback is to claim the following areas:
- *
- * 0x000c0000 - 0x000effff location of VGA and other extensions ROMS
- */
-
- RANGE(range, 0x000c0000, 0x000effff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- /*
- * Fallback would be to claim well known ports in the 0x0 - 0x3ff range
- * along with their sparse I/O aliases, but that's too imprecise. Instead
- * claim a bare minimum here.
- */
- RANGE(range, 0x00000000, 0x000000ff, ResExcIoBlock); /* For mainboard */
- ret = xf86AddResToList(ret, &range, -1);
-
- /*
- * At minimum, the top and bottom resources must be claimed, so that
- * resources that are (or appear to be) unallocated can be relocated.
- */
- RANGE(range, 0x00000000, 0x00000000, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xffffffff, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-/* RANGE(range, 0x00000000, 0x00000000, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1); */
- RANGE(range, 0xffffffff, 0xffffffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- /* XXX add others */
- return ret;
-}
-
-#elif defined(__powerpc__) || \
- defined(__sparc__) || \
- defined(__mips__) || \
- defined(__sh__) || \
- defined(__mc68000__) || \
- defined(__arm__) || \
- defined(__s390__) || \
- defined(__hppa__)
-
- /*
- * XXX this isn't exactly correct but it will get the server working
- * for now until we get something better.
- */
-
-resPtr
-xf86BusAccWindowsFromOS(void)
-{
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
-#if defined(__sparc__) || defined(__powerpc__)
- RANGE(range, 0x00000000, 0x00ffffff, ResExcIoBlock);
-#else
- RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
-#endif
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-resPtr
-xf86PciBusAccWindowsFromOS(void)
-{
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
-#if defined(__sparc__) || defined(__powerpc__)
- RANGE(range, 0x00000000, 0x00ffffff, ResExcIoBlock);
-#else
- RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
-#endif
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-#ifdef INCLUDE_UNUSED
-
-resPtr
-xf86IsaBusAccWindowsFromOS(void)
-{
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
-#if defined(__sparc__) || defined(__powerpc__)
- RANGE(range, 0x00000000, 0x00ffffff, ResExcIoBlock);
-#else
- RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
-#endif
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-#endif /* INCLUDE_UNUSED */
-
-resPtr
-xf86AccResFromOS(resPtr ret)
-{
- resRange range;
-
- /*
- * At minimum, the top and bottom resources must be claimed, so that
- * resources that are (or appear to be) unallocated can be relocated.
- */
- RANGE(range, 0x00000000, 0x00000000, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xffffffff, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x00000000, 0x00000000, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
-#if defined(__sparc__) || defined(__powerpc__)
- RANGE(range, 0x00ffffff, 0x00ffffff, ResExcIoBlock);
-#else
- RANGE(range, 0x0000ffff, 0x0000ffff, ResExcIoBlock);
-#endif
- ret = xf86AddResToList(ret, &range, -1);
-
- return ret;
-}
-
-#else
-
-#error : Put your platform dependent code here!!
-
-#endif
-
-#endif /* INCLUDE_XF86_NO_DOMAIN */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_KbdMap.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_KbdMap.c
deleted file mode 100644
index 3a5a57b8c..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_KbdMap.c
+++ /dev/null
@@ -1,606 +0,0 @@
-/* $XFree86$ */
-
-/*
- * Slightly modified xf86KbdLnx.c which is
- *
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Xinput.h"
-#include "xf86OSKbd.h"
-#include "atKeynames.h"
-
-#include "xf86Keymap.h"
-
-#include "lnx_kbd.h"
-
-/*ARGSUSED*/
-
-/*
- * KbdGetMapping --
- * Get the national keyboard mapping. The keyboard type is set, a new map
- * and the modifiermap is computed.
- */
-
-static void readKernelMapping(InputInfoPtr pInfo,
- KeySymsPtr pKeySyms, CARD8 *pModMap);
-void
-KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- KeySym *k;
- char type;
- int i;
-
- readKernelMapping(pInfo, pKeySyms, pModMap);
-
- /*
- * compute the modifier map
- */
- for (i = 0; i < MAP_LENGTH; i++)
- pModMap[i] = NoSymbol; /* make sure it is restored */
-
- for (k = map, i = MIN_KEYCODE;
- i < (NUM_KEYCODES + MIN_KEYCODE);
- i++, k += 4)
-
- switch(*k) {
-
- case XK_Shift_L:
- case XK_Shift_R:
- pModMap[i] = ShiftMask;
- break;
-
- case XK_Control_L:
- case XK_Control_R:
- pModMap[i] = ControlMask;
- break;
-
- case XK_Caps_Lock:
- pModMap[i] = LockMask;
- break;
-
- case XK_Alt_L:
- case XK_Alt_R:
- pModMap[i] = AltMask;
- break;
-
- case XK_Num_Lock:
- pModMap[i] = NumLockMask;
- break;
-
- case XK_Scroll_Lock:
- pModMap[i] = ScrollLockMask;
- break;
-
- /* kana support */
- case XK_Kana_Lock:
- case XK_Kana_Shift:
- pModMap[i] = KanaMask;
- break;
-
- /* alternate toggle for multinational support */
- case XK_Mode_switch:
- pModMap[i] = AltLangMask;
- break;
-
- }
-
- pKbd->kbdType = ioctl(pInfo->fd, KDGKBTYPE, &type) != -1 ? type : KB_101;
-
- pKeySyms->map = map;
- pKeySyms->mapWidth = GLYPHS_PER_KEY;
- pKeySyms->minKeyCode = MIN_KEYCODE;
- pKeySyms->maxKeyCode = MAX_KEYCODE;
-}
-
-#include <linux/keyboard.h>
-
-static KeySym linux_to_x[256] = {
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_Escape,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
- XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
- XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
- XK_comma, XK_minus, XK_period, XK_slash,
- XK_0, XK_1, XK_2, XK_3,
- XK_4, XK_5, XK_6, XK_7,
- XK_8, XK_9, XK_colon, XK_semicolon,
- XK_less, XK_equal, XK_greater, XK_question,
- XK_at, XK_A, XK_B, XK_C,
- XK_D, XK_E, XK_F, XK_G,
- XK_H, XK_I, XK_J, XK_K,
- XK_L, XK_M, XK_N, XK_O,
- XK_P, XK_Q, XK_R, XK_S,
- XK_T, XK_U, XK_V, XK_W,
- XK_X, XK_Y, XK_Z, XK_bracketleft,
- XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
- XK_grave, XK_a, XK_b, XK_c,
- XK_d, XK_e, XK_f, XK_g,
- XK_h, XK_i, XK_j, XK_k,
- XK_l, XK_m, XK_n, XK_o,
- XK_p, XK_q, XK_r, XK_s,
- XK_t, XK_u, XK_v, XK_w,
- XK_x, XK_y, XK_z, XK_braceleft,
- XK_bar, XK_braceright, XK_asciitilde, XK_BackSpace,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_nobreakspace,XK_exclamdown, XK_cent, XK_sterling,
- XK_currency, XK_yen, XK_brokenbar, XK_section,
- XK_diaeresis, XK_copyright, XK_ordfeminine, XK_guillemotleft,
- XK_notsign, XK_hyphen, XK_registered, XK_macron,
- XK_degree, XK_plusminus, XK_twosuperior, XK_threesuperior,
- XK_acute, XK_mu, XK_paragraph, XK_periodcentered,
- XK_cedilla, XK_onesuperior, XK_masculine, XK_guillemotright,
- XK_onequarter, XK_onehalf, XK_threequarters,XK_questiondown,
- XK_Agrave, XK_Aacute, XK_Acircumflex, XK_Atilde,
- XK_Adiaeresis, XK_Aring, XK_AE, XK_Ccedilla,
- XK_Egrave, XK_Eacute, XK_Ecircumflex, XK_Ediaeresis,
- XK_Igrave, XK_Iacute, XK_Icircumflex, XK_Idiaeresis,
- XK_ETH, XK_Ntilde, XK_Ograve, XK_Oacute,
- XK_Ocircumflex, XK_Otilde, XK_Odiaeresis, XK_multiply,
- XK_Ooblique, XK_Ugrave, XK_Uacute, XK_Ucircumflex,
- XK_Udiaeresis, XK_Yacute, XK_THORN, XK_ssharp,
- XK_agrave, XK_aacute, XK_acircumflex, XK_atilde,
- XK_adiaeresis, XK_aring, XK_ae, XK_ccedilla,
- XK_egrave, XK_eacute, XK_ecircumflex, XK_ediaeresis,
- XK_igrave, XK_iacute, XK_icircumflex, XK_idiaeresis,
- XK_eth, XK_ntilde, XK_ograve, XK_oacute,
- XK_ocircumflex, XK_otilde, XK_odiaeresis, XK_division,
- XK_oslash, XK_ugrave, XK_uacute, XK_ucircumflex,
- XK_udiaeresis, XK_yacute, XK_thorn, XK_ydiaeresis
-};
-
-/*
- * Maps the AT keycodes to Linux keycodes
- */
-static unsigned char at2lnx[NUM_KEYCODES] =
-{
- 0x01, /* KEY_Escape */ 0x02, /* KEY_1 */
- 0x03, /* KEY_2 */ 0x04, /* KEY_3 */
- 0x05, /* KEY_4 */ 0x06, /* KEY_5 */
- 0x07, /* KEY_6 */ 0x08, /* KEY_7 */
- 0x09, /* KEY_8 */ 0x0a, /* KEY_9 */
- 0x0b, /* KEY_0 */ 0x0c, /* KEY_Minus */
- 0x0d, /* KEY_Equal */ 0x0e, /* KEY_BackSpace */
- 0x0f, /* KEY_Tab */ 0x10, /* KEY_Q */
- 0x11, /* KEY_W */ 0x12, /* KEY_E */
- 0x13, /* KEY_R */ 0x14, /* KEY_T */
- 0x15, /* KEY_Y */ 0x16, /* KEY_U */
- 0x17, /* KEY_I */ 0x18, /* KEY_O */
- 0x19, /* KEY_P */ 0x1a, /* KEY_LBrace */
- 0x1b, /* KEY_RBrace */ 0x1c, /* KEY_Enter */
- 0x1d, /* KEY_LCtrl */ 0x1e, /* KEY_A */
- 0x1f, /* KEY_S */ 0x20, /* KEY_D */
- 0x21, /* KEY_F */ 0x22, /* KEY_G */
- 0x23, /* KEY_H */ 0x24, /* KEY_J */
- 0x25, /* KEY_K */ 0x26, /* KEY_L */
- 0x27, /* KEY_SemiColon */ 0x28, /* KEY_Quote */
- 0x29, /* KEY_Tilde */ 0x2a, /* KEY_ShiftL */
- 0x2b, /* KEY_BSlash */ 0x2c, /* KEY_Z */
- 0x2d, /* KEY_X */ 0x2e, /* KEY_C */
- 0x2f, /* KEY_V */ 0x30, /* KEY_B */
- 0x31, /* KEY_N */ 0x32, /* KEY_M */
- 0x33, /* KEY_Comma */ 0x34, /* KEY_Period */
- 0x35, /* KEY_Slash */ 0x36, /* KEY_ShiftR */
- 0x37, /* KEY_KP_Multiply */ 0x38, /* KEY_Alt */
- 0x39, /* KEY_Space */ 0x3a, /* KEY_CapsLock */
- 0x3b, /* KEY_F1 */ 0x3c, /* KEY_F2 */
- 0x3d, /* KEY_F3 */ 0x3e, /* KEY_F4 */
- 0x3f, /* KEY_F5 */ 0x40, /* KEY_F6 */
- 0x41, /* KEY_F7 */ 0x42, /* KEY_F8 */
- 0x43, /* KEY_F9 */ 0x44, /* KEY_F10 */
- 0x45, /* KEY_NumLock */ 0x46, /* KEY_ScrollLock */
- 0x47, /* KEY_KP_7 */ 0x48, /* KEY_KP_8 */
- 0x49, /* KEY_KP_9 */ 0x4a, /* KEY_KP_Minus */
- 0x4b, /* KEY_KP_4 */ 0x4c, /* KEY_KP_5 */
- 0x4d, /* KEY_KP_6 */ 0x4e, /* KEY_KP_Plus */
- 0x4f, /* KEY_KP_1 */ 0x50, /* KEY_KP_2 */
- 0x51, /* KEY_KP_3 */ 0x52, /* KEY_KP_0 */
- 0x53, /* KEY_KP_Decimal */ 0x54, /* KEY_SysReqest */
- 0x00, /* 0x55 */ 0x56, /* KEY_Less */
- 0x57, /* KEY_F11 */ 0x58, /* KEY_F12 */
- 0x66, /* KEY_Home */ 0x67, /* KEY_Up */
- 0x68, /* KEY_PgUp */ 0x69, /* KEY_Left */
- 0x5d, /* KEY_Begin */ 0x6a, /* KEY_Right */
- 0x6b, /* KEY_End */ 0x6c, /* KEY_Down */
- 0x6d, /* KEY_PgDown */ 0x6e, /* KEY_Insert */
- 0x6f, /* KEY_Delete */ 0x60, /* KEY_KP_Enter */
- 0x61, /* KEY_RCtrl */ 0x77, /* KEY_Pause */
- 0x63, /* KEY_Print */ 0x62, /* KEY_KP_Divide */
- 0x64, /* KEY_AltLang */ 0x65, /* KEY_Break */
- 0x00, /* KEY_LMeta */ 0x00, /* KEY_RMeta */
- 0x7A, /* KEY_Menu/FOCUS_PF11*/0x00, /* 0x6e */
- 0x7B, /* FOCUS_PF12 */ 0x00, /* 0x70 */
- 0x00, /* 0x71 */ 0x00, /* 0x72 */
- 0x59, /* FOCUS_PF2 */ 0x78, /* FOCUS_PF9 */
- 0x00, /* 0x75 */ 0x00, /* 0x76 */
- 0x5A, /* FOCUS_PF3 */ 0x5B, /* FOCUS_PF4 */
- 0x5C, /* FOCUS_PF5 */ 0x5D, /* FOCUS_PF6 */
- 0x5E, /* FOCUS_PF7 */ 0x5F, /* FOCUS_PF8 */
- 0x7C, /* JAP_86 */ 0x79, /* FOCUS_PF10 */
- 0x00, /* 0x7f */
-};
-#define NUM_AT2LNX (sizeof(at2lnx) / sizeof(at2lnx[0]))
-
-#define NUM_CUSTOMKEYS NR_KEYS
-
-static void
-readKernelMapping(InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- KeySym *k;
- int i;
- int maxkey;
- static unsigned char tbl[GLYPHS_PER_KEY] =
- {
- 0, /* unshifted */
- 1, /* shifted */
- 0, /* modeswitch unshifted */
- 0 /* modeswitch shifted */
- };
-
- /*
- * Read the mapping from the kernel.
- * Since we're still using the XFree86 scancode->AT keycode mapping
- * routines, we need to convert the AT keycodes to Linux keycodes,
- * then translate the Linux keysyms into X keysyms.
- *
- * First, figure out which tables to use for the modeswitch columns
- * above, from the XF86Config fields.
- */
- tbl[2] = 8; /* alt */
- tbl[3] = tbl[2] | 1;
-
- if (pKbd->CustomKeycodes) {
- k = map;
- maxkey = NUM_CUSTOMKEYS;
- }
- else {
- k = map+GLYPHS_PER_KEY;
- maxkey = NUM_AT2LNX;
- }
-
- for (i = 0; i < maxkey; ++i)
- {
- struct kbentry kbe;
- int j;
-
- if (pKbd->CustomKeycodes)
- kbe.kb_index = i;
- else
- kbe.kb_index = at2lnx[i];
-
- for (j = 0; j < GLYPHS_PER_KEY; ++j, ++k)
- {
- unsigned short kval;
-
- *k = NoSymbol;
-
- kbe.kb_table = tbl[j];
- if (
- (!pKbd->CustomKeycodes && kbe.kb_index == 0) ||
- ioctl(pInfo->fd, KDGKBENT, &kbe))
- continue;
-
- kval = KVAL(kbe.kb_value);
- switch (KTYP(kbe.kb_value))
- {
- case KT_LATIN:
- case KT_LETTER:
- *k = linux_to_x[kval];
- break;
-
- case KT_FN:
- if (kval <= 19)
- *k = XK_F1 + kval;
- else switch (kbe.kb_value)
- {
- case K_FIND:
- *k = XK_Home; /* or XK_Find */
- break;
- case K_INSERT:
- *k = XK_Insert;
- break;
- case K_REMOVE:
- *k = XK_Delete;
- break;
- case K_SELECT:
- *k = XK_End; /* or XK_Select */
- break;
- case K_PGUP:
- *k = XK_Prior;
- break;
- case K_PGDN:
- *k = XK_Next;
- break;
- case K_HELP:
- *k = XK_Help;
- break;
- case K_DO:
- *k = XK_Execute;
- break;
- case K_PAUSE:
- *k = XK_Pause;
- break;
- case K_MACRO:
- *k = XK_Menu;
- break;
- default:
- break;
- }
- break;
-
- case KT_SPEC:
- switch (kbe.kb_value)
- {
- case K_ENTER:
- *k = XK_Return;
- break;
- case K_BREAK:
- *k = XK_Break;
- break;
- case K_CAPS:
- *k = XK_Caps_Lock;
- break;
- case K_NUM:
- *k = XK_Num_Lock;
- break;
- case K_HOLD:
- *k = XK_Scroll_Lock;
- break;
- case K_COMPOSE:
- *k = XK_Multi_key;
- break;
- default:
- break;
- }
- break;
-
- case KT_PAD:
- switch (kbe.kb_value)
- {
- case K_PPLUS:
- *k = XK_KP_Add;
- break;
- case K_PMINUS:
- *k = XK_KP_Subtract;
- break;
- case K_PSTAR:
- *k = XK_KP_Multiply;
- break;
- case K_PSLASH:
- *k = XK_KP_Divide;
- break;
- case K_PENTER:
- *k = XK_KP_Enter;
- break;
- case K_PCOMMA:
- *k = XK_KP_Separator;
- break;
- case K_PDOT:
- *k = XK_KP_Decimal;
- break;
- case K_PPLUSMINUS:
- *k = XK_KP_Subtract;
- break;
- default:
- if (kval <= 9)
- *k = XK_KP_0 + kval;
- break;
- }
- break;
-
- /*
- * KT_DEAD keys are for accelerated diacritical creation.
- */
- case KT_DEAD:
- switch (kbe.kb_value)
- {
- case K_DGRAVE:
- *k = XK_dead_grave;
- break;
- case K_DACUTE:
- *k = XK_dead_acute;
- break;
- case K_DCIRCM:
- *k = XK_dead_circumflex;
- break;
- case K_DTILDE:
- *k = XK_dead_tilde;
- break;
- case K_DDIERE:
- *k = XK_dead_diaeresis;
- break;
- }
- break;
-
- case KT_CUR:
- switch (kbe.kb_value)
- {
- case K_DOWN:
- *k = XK_Down;
- break;
- case K_LEFT:
- *k = XK_Left;
- break;
- case K_RIGHT:
- *k = XK_Right;
- break;
- case K_UP:
- *k = XK_Up;
- break;
- }
- break;
-
- case KT_SHIFT:
- switch (kbe.kb_value)
- {
- case K_ALTGR:
- *k = XK_Alt_R;
- break;
- case K_ALT:
- *k = (kbe.kb_index == 0x64 ?
- XK_Alt_R : XK_Alt_L);
- break;
- case K_CTRL:
- *k = (kbe.kb_index == 0x61 ?
- XK_Control_R : XK_Control_L);
- break;
- case K_CTRLL:
- *k = XK_Control_L;
- break;
- case K_CTRLR:
- *k = XK_Control_R;
- break;
- case K_SHIFT:
- *k = (kbe.kb_index == 0x36 ?
- XK_Shift_R : XK_Shift_L);
- break;
- case K_SHIFTL:
- *k = XK_Shift_L;
- break;
- case K_SHIFTR:
- *k = XK_Shift_R;
- break;
- default:
- break;
- }
- break;
-
- /*
- * KT_ASCII keys accumulate a 3 digit decimal number that gets
- * emitted when the shift state changes. We can't emulate that.
- */
- case KT_ASCII:
- break;
-
- case KT_LOCK:
- if (kbe.kb_value == K_SHIFTLOCK)
- *k = XK_Shift_Lock;
- break;
-
- default:
- break;
- }
- }
-
- if (k[-1] == k[-2]) k[-1] = NoSymbol;
- if (k[-2] == k[-3]) k[-2] = NoSymbol;
- if (k[-3] == k[-4]) k[-3] = NoSymbol;
- if (k[-4] == k[-2] && k[-3] == k[-1]) k[-2] = k[-1] = NoSymbol;
- if (k[-1] == k[-4] && k[-2] == k[-3] && k[-2] == NoSymbol) k[-1] =NoSymbol;
- }
-
- if (!pKbd->CustomKeycodes)
- return;
-
- /*
- * Find the Mapping for the special server functions
- */
- pKbd->specialMap = (TransMapPtr) xcalloc(NUM_CUSTOMKEYS, 1);
- if (pKbd->specialMap != NULL) {
- pKbd->specialMap->end = NUM_CUSTOMKEYS;
- pKbd->specialMap->map = (unsigned char*) xcalloc(NUM_CUSTOMKEYS, 1);
- if (pKbd->specialMap == NULL) {
- xfree(pKbd->specialMap);
- pKbd->specialMap = NULL;
- }
- }
- if (pKbd->specialMap == NULL) {
- xf86Msg(X_ERROR, "%s can't allocate \"special map\"\n", pInfo->name);
- return;
- }
-
- for (i = 0; i < NUM_CUSTOMKEYS; ++i) {
- struct kbentry kbe;
- int special = 0;
-
- kbe.kb_index = i;
- kbe.kb_table = 0; /* Plain map */
- if (!ioctl(pInfo->fd, KDGKBENT, &kbe))
- switch (kbe.kb_value) {
- case K(KT_LATIN,0x7f): /* This catches DEL too... But who cares? */
- special = KEY_BackSpace;
- break;
- case K_PMINUS:
- special = KEY_KP_Minus;
- break;
- case K_PPLUS:
- special = KEY_KP_Plus;
- break;
- case K_F1:
- special = KEY_F1;
- break;
- case K_F2:
- special = KEY_F2;
- break;
- case K_F3:
- special = KEY_F3;
- break;
- case K_F4:
- special = KEY_F4;
- break;
- case K_F5:
- special = KEY_F5;
- break;
- case K_F6:
- special = KEY_F6;
- break;
- case K_F7:
- special = KEY_F7;
- break;
- case K_F8:
- special = KEY_F8;
- break;
- case K_F9:
- special = KEY_F9;
- break;
- case K_F10:
- special = KEY_F10;
- break;
- case K_F11:
- special = KEY_F11;
- break;
- case K_F12:
- special = KEY_F12;
- break;
- case K_ALT:
- special = KEY_Alt;
- break;
- case K_ALTGR:
- special = KEY_AltLang;
- break;
- case K_CONS:
- special = KEY_SysReqest;
- break;
- }
- pKbd->specialMap->map[i] = special;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_acpi.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_acpi.c
deleted file mode 100644
index 9d1dea77d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_acpi.c
+++ /dev/null
@@ -1,170 +0,0 @@
-#include "X.h"
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#define XF86_OS_PRIVS
-#include "xf86_OSproc.h"
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-
-#define ACPI_SOCKET "/var/run/acpid.socket"
-#define ACPI_EVENTS "/proc/acpi/event"
-
-#define ACPI_VIDEO_NOTIFY_SWITCH 0x80
-#define ACPI_VIDEO_NOTIFY_PROBE 0x81
-#define ACPI_VIDEO_NOTIFY_CYCLE 0x82
-#define ACPI_VIDEO_NOTIFY_NEXT_OUTPUT 0x83
-#define ACPI_VIDEO_NOTIFY_PREV_OUTPUT 0x84
-
-#define ACPI_VIDEO_NOTIFY_CYCLE_BRIGHTNESS 0x82
-#define ACPI_VIDEO_NOTIFY_INC_BRIGHTNESS 0x83
-#define ACPI_VIDEO_NOTIFY_DEC_BRIGHTNESS 0x84
-#define ACPI_VIDEO_NOTIFY_ZERO_BRIGHTNESS 0x85
-#define ACPI_VIDEO_NOTIFY_DISPLAY_OFF 0x86
-
-#define ACPI_VIDEO_HEAD_INVALID (~0u - 1)
-#define ACPI_VIDEO_HEAD_END (~0u)
-
-static void lnxCloseACPI(void);
-static pointer ACPIihPtr = NULL;
-PMClose lnxACPIOpen(void);
-
-#define LINE_LENGTH 80
-
-static int
-lnxACPIGetEventFromOs(int fd, pmEvent *events, int num)
-{
- char ev[LINE_LENGTH];
- int n;
-
- memset(ev, 0, LINE_LENGTH);
-
- n = read( fd, ev, LINE_LENGTH );
-
- /* Check that we have a video event */
- if (strstr(ev, "video") == ev) {
- char *video = NULL;
- char *GFX = NULL;
- char *notify = NULL;
- char *data = NULL; /* doesn't appear to be used in the kernel */
- unsigned long int notify_l, data_l;
-
- video = strtok(ev, "video");
-
- GFX = strtok(NULL, " ");
-#if 0
- ErrorF("GFX: %s\n",GFX);
-#endif
-
- notify = strtok(NULL, " ");
- notify_l = strtoul(notify, NULL, 16);
-#if 0
- ErrorF("notify: 0x%lx\n",notify_l);
-#endif
-
- data = strtok(NULL, " ");
- data_l = strtoul(data, NULL, 16);
-#if 0
- ErrorF("data: 0x%lx\n",data_l);
-#endif
-
- /* We currently don't differentiate between any event */
- switch (notify_l) {
- case ACPI_VIDEO_NOTIFY_SWITCH:
- break;
- case ACPI_VIDEO_NOTIFY_PROBE:
- break;
- case ACPI_VIDEO_NOTIFY_CYCLE:
- break;
- case ACPI_VIDEO_NOTIFY_NEXT_OUTPUT:
- break;
- case ACPI_VIDEO_NOTIFY_PREV_OUTPUT:
- break;
- default:
- break;
- }
-
- /* Deal with all ACPI events as a capability change */
- events[0] = XF86_APM_CAPABILITY_CHANGED;
-
- return 1;
- }
-
- return 0;
-}
-
-static pmWait
-lnxACPIConfirmEventToOs(int fd, pmEvent event)
-{
- /* No ability to send back to the kernel in ACPI */
- switch (event) {
- default:
- return PM_NONE;
- }
-}
-
-PMClose
-lnxACPIOpen(void)
-{
- int fd;
- struct sockaddr_un addr;
- int r = -1;
-
-#ifdef DEBUG
- ErrorF("ACPI: OSPMOpen called\n");
-#endif
- if (ACPIihPtr || !xf86Info.pmFlag)
- return NULL;
-
-#ifdef DEBUG
- ErrorF("ACPI: Opening device\n");
-#endif
- if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) > -1) {
- memset(&addr, 0, sizeof(addr));
- addr.sun_family = AF_UNIX;
- strcpy(addr.sun_path, ACPI_SOCKET);
- if ((r = connect(fd, (struct sockaddr*)&addr, sizeof(addr))) == -1) {
- shutdown(fd, 2);
- close(fd);
- fd = -1;
- }
- }
-
- /* acpid's socket isn't available, so try going direct */
- if (fd == -1) {
- if ((fd = open(ACPI_EVENTS, O_RDONLY)) < 0) {
- xf86MsgVerb(X_WARNING,3,"Open ACPI failed (%s) (%s)\n", ACPI_EVENTS,
- strerror(errno));
- return NULL;
- }
- }
-
- xf86PMGetEventFromOs = lnxACPIGetEventFromOs;
- xf86PMConfirmEventToOs = lnxACPIConfirmEventToOs;
- ACPIihPtr = xf86AddInputHandler(fd,xf86HandlePMEvents,NULL);
- xf86MsgVerb(X_INFO,3,"Open ACPI successful (%s)\n", (r != -1) ? ACPI_SOCKET : ACPI_EVENTS);
-
- return lnxCloseACPI;
-}
-
-static void
-lnxCloseACPI(void)
-{
- int fd;
-
-#ifdef DEBUG
- ErrorF("ACPI: Closing device\n");
-#endif
- if (ACPIihPtr) {
- fd = xf86RemoveInputHandler(ACPIihPtr);
- shutdown(fd, 2);
- close(fd);
- ACPIihPtr = NULL;
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_agp.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_agp.c
deleted file mode 100644
index 6a5c83db2..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_agp.c
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- * Abstraction of the AGP GART interface.
- *
- * This version is for both Linux and FreeBSD.
- *
- * Copyright © 2000 VA Linux Systems, Inc.
- * Copyright © 2001 The XFree86 Project, Inc.
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_agp.c,v 3.11 2003/04/03 22:47:42 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-#if defined(linux)
-#include <asm/ioctl.h>
-#include <linux/agpgart.h>
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
-#include <sys/ioctl.h>
-#include <sys/agpio.h>
-#endif
-
-#ifndef AGP_DEVICE
-#define AGP_DEVICE "/dev/agpgart"
-#endif
-/* AGP page size is independent of the host page size. */
-#ifndef AGP_PAGE_SIZE
-#define AGP_PAGE_SIZE 4096
-#endif
-#define AGPGART_MAJOR_VERSION 0
-#define AGPGART_MINOR_VERSION 99
-
-static int gartFd = -1;
-static int acquiredScreen = -1;
-static Bool initDone = FALSE;
-/*
- * Close /dev/agpgart. This frees all associated memory allocated during
- * this server generation.
- */
-Bool
-xf86GARTCloseScreen(int screenNum)
-{
- if(gartFd != -1) {
- close(gartFd);
- acquiredScreen = -1;
- gartFd = -1;
- initDone = FALSE;
- }
- return TRUE;
-}
-
-/*
- * Open /dev/agpgart. Keep it open until xf86GARTCloseScreen is called.
- */
-static Bool
-GARTInit(int screenNum)
-{
- struct _agp_info agpinf;
-
- if (initDone)
- return (gartFd != -1);
-
- initDone = TRUE;
-
- if (gartFd == -1)
- gartFd = open(AGP_DEVICE, O_RDWR, 0);
- else
- return FALSE;
-
- if (gartFd == -1) {
- xf86DrvMsg(screenNum, X_ERROR,
- "GARTInit: Unable to open " AGP_DEVICE " (%s)\n",
- strerror(errno));
- return FALSE;
- }
-
- xf86AcquireGART(-1);
- /* Check the kernel driver version. */
- if (ioctl(gartFd, AGPIOC_INFO, &agpinf) != 0) {
- xf86DrvMsg(screenNum, X_ERROR,
- "GARTInit: AGPIOC_INFO failed (%s)\n", strerror(errno));
- close(gartFd);
- gartFd = -1;
- return FALSE;
- }
- xf86ReleaseGART(-1);
-
-#if defined(linux)
- /* Per Dave Jones, every effort will be made to keep the
- * agpgart interface backwards compatible, so allow all
- * future versions.
- */
- if (
-#if (AGPGART_MAJOR_VERSION > 0) /* quiet compiler */
- agpinf.version.major < AGPGART_MAJOR_VERSION ||
-#endif
- (agpinf.version.major == AGPGART_MAJOR_VERSION &&
- agpinf.version.minor < AGPGART_MINOR_VERSION)) {
- xf86DrvMsg(screenNum, X_ERROR,
- "GARTInit: Kernel agpgart driver version is not current"
- " (%d.%d vs %d.%d)\n",
- agpinf.version.major, agpinf.version.minor,
- AGPGART_MAJOR_VERSION, AGPGART_MINOR_VERSION);
- close(gartFd);
- gartFd = -1;
- return FALSE;
- }
-#endif
-
- return TRUE;
-}
-
-Bool
-xf86AgpGARTSupported()
-{
- return GARTInit(-1);
-}
-
-AgpInfoPtr
-xf86GetAGPInfo(int screenNum)
-{
- struct _agp_info agpinf;
- AgpInfoPtr info;
-
- if (!GARTInit(screenNum))
- return NULL;
-
-
- if ((info = xcalloc(sizeof(AgpInfo), 1)) == NULL) {
- xf86DrvMsg(screenNum, X_ERROR,
- "xf86GetAGPInfo: Failed to allocate AgpInfo\n");
- return NULL;
- }
-
- memset((char*)&agpinf, 0, sizeof(agpinf));
-
- if (ioctl(gartFd, AGPIOC_INFO, &agpinf) != 0) {
- xf86DrvMsg(screenNum, X_ERROR,
- "xf86GetAGPInfo: AGPIOC_INFO failed (%s)\n",
- strerror(errno));
- return NULL;
- }
-
- info->bridgeId = agpinf.bridge_id;
- info->agpMode = agpinf.agp_mode;
- info->base = agpinf.aper_base;
- info->size = agpinf.aper_size;
- info->totalPages = agpinf.pg_total;
- info->systemPages = agpinf.pg_system;
- info->usedPages = agpinf.pg_used;
-
- xf86DrvMsg(screenNum, X_INFO, "Kernel reported %d total, %d used\n", agpinf.pg_total, agpinf.pg_used);
-
- return info;
-}
-
-/*
- * XXX If multiple screens can acquire the GART, should we have a reference
- * count instead of using acquiredScreen?
- */
-
-Bool
-xf86AcquireGART(int screenNum)
-{
- if (screenNum != -1 && !GARTInit(screenNum))
- return FALSE;
-
- if (screenNum == -1 || acquiredScreen != screenNum) {
- if (ioctl(gartFd, AGPIOC_ACQUIRE, 0) != 0) {
- xf86DrvMsg(screenNum, X_WARNING,
- "xf86AcquireGART: AGPIOC_ACQUIRE failed (%s)\n",
- strerror(errno));
- return FALSE;
- }
- acquiredScreen = screenNum;
- }
- return TRUE;
-}
-
-Bool
-xf86ReleaseGART(int screenNum)
-{
- if (screenNum != -1 && !GARTInit(screenNum))
- return FALSE;
-
- if (acquiredScreen == screenNum) {
- /*
- * The FreeBSD agp driver removes allocations on release.
- * The Linux driver doesn't. xf86ReleaseGART() is expected
- * to give up access to the GART, but not to remove any
- * allocations.
- */
-#if !defined(linux)
- if (screenNum == -1)
-#endif
- {
- if (ioctl(gartFd, AGPIOC_RELEASE, 0) != 0) {
- xf86DrvMsg(screenNum, X_WARNING,
- "xf86ReleaseGART: AGPIOC_RELEASE failed (%s)\n",
- strerror(errno));
- return FALSE;
- }
- acquiredScreen = -1;
- }
- return TRUE;
- }
- return FALSE;
-}
-
-int
-xf86AllocateGARTMemory(int screenNum, unsigned long size, int type,
- unsigned long *physical)
-{
- struct _agp_allocate alloc;
- int pages;
-
- /*
- * Allocates "size" bytes of GART memory (rounds up to the next
- * page multiple) or type "type". A handle (key) for the allocated
- * memory is returned. On error, the return value is -1.
- */
-
- if (!GARTInit(screenNum) || acquiredScreen != screenNum)
- return -1;
-
- pages = (size / AGP_PAGE_SIZE);
- if (size % AGP_PAGE_SIZE != 0)
- pages++;
-
- /* XXX check for pages == 0? */
-
- alloc.pg_count = pages;
- alloc.type = type;
-
- if (ioctl(gartFd, AGPIOC_ALLOCATE, &alloc) != 0) {
- xf86DrvMsg(screenNum, X_WARNING, "xf86AllocateGARTMemory: "
- "allocation of %d pages failed\n\t(%s)\n", pages,
- strerror(errno));
- return -1;
- }
-
- if (physical)
- *physical = alloc.physical;
-
- return alloc.key;
-}
-
-Bool
-xf86DeallocateGARTMemory(int screenNum, int key)
-{
- if (!GARTInit(screenNum) || acquiredScreen != screenNum)
- return FALSE;
-
- if (acquiredScreen != screenNum) {
- xf86DrvMsg(screenNum, X_ERROR,
- "xf86UnbindGARTMemory: AGP not acquired by this screen\n");
- return FALSE;
- }
-
- if (ioctl(gartFd, AGPIOC_DEALLOCATE, (int *)key) != 0) {
- xf86DrvMsg(screenNum, X_WARNING,"xf86DeAllocateGARTMemory: "
- "deallocation gart memory with key %d failed\n\t(%s)\n",
- key, strerror(errno));
- return FALSE;
- }
-
- return TRUE;
-}
-
-/* Bind GART memory with "key" at "offset" */
-Bool
-xf86BindGARTMemory(int screenNum, int key, unsigned long offset)
-{
- struct _agp_bind bind;
- int pageOffset;
-
- if (!GARTInit(screenNum) || acquiredScreen != screenNum)
- return FALSE;
-
- if (acquiredScreen != screenNum) {
- xf86DrvMsg(screenNum, X_ERROR,
- "xf86BindGARTMemory: AGP not acquired by this screen\n");
- return FALSE;
- }
-
- if (offset % AGP_PAGE_SIZE != 0) {
- xf86DrvMsg(screenNum, X_WARNING, "xf86BindGARTMemory: "
- "offset (0x%lx) is not page-aligned (%d)\n",
- offset, AGP_PAGE_SIZE);
- return FALSE;
- }
- pageOffset = offset / AGP_PAGE_SIZE;
-
- xf86DrvMsgVerb(screenNum, X_INFO, 3,
- "xf86BindGARTMemory: bind key %d at 0x%08lx "
- "(pgoffset %d)\n", key, offset, pageOffset);
-
- bind.pg_start = pageOffset;
- bind.key = key;
-
- if (ioctl(gartFd, AGPIOC_BIND, &bind) != 0) {
- xf86DrvMsg(screenNum, X_WARNING, "xf86BindGARTMemory: "
- "binding of gart memory with key %d\n"
- "\tat offset 0x%lx failed (%s)\n",
- key, offset, strerror(errno));
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/* Unbind GART memory with "key" */
-Bool
-xf86UnbindGARTMemory(int screenNum, int key)
-{
- struct _agp_unbind unbind;
-
- if (!GARTInit(screenNum) || acquiredScreen != screenNum)
- return FALSE;
-
- if (acquiredScreen != screenNum) {
- xf86DrvMsg(screenNum, X_ERROR,
- "xf86UnbindGARTMemory: AGP not acquired by this screen\n");
- return FALSE;
- }
-
- unbind.priority = 0;
- unbind.key = key;
-
- if (ioctl(gartFd, AGPIOC_UNBIND, &unbind) != 0) {
- xf86DrvMsg(screenNum, X_WARNING, "xf86UnbindGARTMemory: "
- "unbinding of gart memory with key %d "
- "failed (%s)\n", key, strerror(errno));
- return FALSE;
- }
-
- xf86DrvMsgVerb(screenNum, X_INFO, 3,
- "xf86UnbindGARTMemory: unbind key %d\n", key);
-
- return TRUE;
-}
-
-
-/* XXX Interface may change. */
-Bool
-xf86EnableAGP(int screenNum, CARD32 mode)
-{
- agp_setup setup;
-
- if (!GARTInit(screenNum) || acquiredScreen != screenNum)
- return FALSE;
-
- setup.agp_mode = mode;
- if (ioctl(gartFd, AGPIOC_SETUP, &setup) != 0) {
- xf86DrvMsg(screenNum, X_WARNING, "xf86EnableAGP: "
- "AGPIOC_SETUP with mode %ld failed (%s)\n",
- (unsigned long)mode, strerror(errno));
- return FALSE;
- }
-
- return TRUE;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_apm.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_apm.c
deleted file mode 100644
index bd78d877f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_apm.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_apm.c,v 3.12 2001/12/24 22:54:31 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#define XF86_OS_PRIVS
-#include "xf86_OSproc.h"
-#include "lnx.h"
-#include <linux/apm_bios.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-
-#define APM_PROC "/proc/apm"
-#define APM_DEVICE "/dev/apm_bios"
-
-#ifndef APM_STANDBY_FAILED
-# define APM_STANDBY_FAILED 0xf000
-#endif
-#ifndef APM_SUSPEND_FAILED
-# define APM_SUSPEND_FAILED 0xf001
-#endif
-
-static PMClose lnxAPMOpen(void);
-extern PMClose lnxACPIOpen(void);
-static void lnxCloseAPM(void);
-static pointer APMihPtr = NULL;
-
-static struct {
- apm_event_t apmLinux;
- pmEvent xf86;
-} LinuxToXF86[] = {
- { APM_SYS_STANDBY, XF86_APM_SYS_STANDBY },
- { APM_SYS_SUSPEND, XF86_APM_SYS_SUSPEND },
- { APM_NORMAL_RESUME, XF86_APM_NORMAL_RESUME },
- { APM_CRITICAL_RESUME, XF86_APM_CRITICAL_RESUME },
- { APM_LOW_BATTERY, XF86_APM_LOW_BATTERY },
- { APM_POWER_STATUS_CHANGE, XF86_APM_POWER_STATUS_CHANGE },
- { APM_UPDATE_TIME, XF86_APM_UPDATE_TIME },
- { APM_CRITICAL_SUSPEND, XF86_APM_CRITICAL_SUSPEND },
- { APM_USER_STANDBY, XF86_APM_USER_STANDBY },
- { APM_USER_SUSPEND, XF86_APM_USER_SUSPEND },
- { APM_STANDBY_RESUME, XF86_APM_STANDBY_RESUME },
-#if defined(APM_CAPABILITY_CHANGED)
- { APM_CAPABILITY_CHANGED, XF86_CAPABILITY_CHANGED },
-#endif
-#if 0
- { APM_STANDBY_FAILED, XF86_APM_STANDBY_FAILED },
- { APM_SUSPEND_FAILED, XF86_APM_SUSPEND_FAILED }
-#endif
-};
-
-#define numApmEvents (sizeof(LinuxToXF86) / sizeof(LinuxToXF86[0]))
-
-/*
- * APM is still under construction.
- * I'm not sure if the places where I initialize/deinitialize
- * apm is correct. Also I don't know what to do in SETUP state.
- * This depends if wakeup gets called in this situation, too.
- * Also we need to check if the action that is taken on an
- * event is reasonable.
- */
-static int
-lnxPMGetEventFromOs(int fd, pmEvent *events, int num)
-{
- int i,j,n;
- apm_event_t linuxEvents[8];
-
- if ((n = read( fd, linuxEvents, num * sizeof(apm_event_t) )) == -1)
- return 0;
- n /= sizeof(apm_event_t);
- if (n > num)
- n = num;
- for (i = 0; i < n; i++) {
- for (j = 0; j < numApmEvents; j++)
- if (LinuxToXF86[j].apmLinux == linuxEvents[i]) {
- events[i] = LinuxToXF86[j].xf86;
- break;
- }
- if (j == numApmEvents)
- events[i] = XF86_APM_UNKNOWN;
- }
- return n;
-}
-
-static pmWait
-lnxPMConfirmEventToOs(int fd, pmEvent event)
-{
- switch (event) {
- case XF86_APM_SYS_STANDBY:
- case XF86_APM_USER_STANDBY:
- if (ioctl( fd, APM_IOC_STANDBY, NULL ))
- return PM_FAILED;
- return PM_CONTINUE;
- case XF86_APM_SYS_SUSPEND:
- case XF86_APM_CRITICAL_SUSPEND:
- case XF86_APM_USER_SUSPEND:
- if (ioctl( fd, APM_IOC_SUSPEND, NULL )) {
- /* I believe this is wrong (EE)
- EBUSY is sent when a device refuses to be suspended.
- In this case we still need to undo everything we have
- done to suspend ourselves or we will stay in suspended
- state forever. */
- if (errno == EBUSY)
- return PM_CONTINUE;
- else
- return PM_FAILED;
- }
- return PM_CONTINUE;
- case XF86_APM_STANDBY_RESUME:
- case XF86_APM_NORMAL_RESUME:
- case XF86_APM_CRITICAL_RESUME:
- case XF86_APM_STANDBY_FAILED:
- case XF86_APM_SUSPEND_FAILED:
- return PM_CONTINUE;
- default:
- return PM_NONE;
- }
-}
-
-PMClose
-xf86OSPMOpen(void)
-{
- PMClose ret = NULL;
-
- /* Favour ACPI over APM, but only when enabled */
-
- if (!xf86acpiDisableFlag)
- ret = lnxACPIOpen();
-
- if (!ret)
- ret = lnxAPMOpen();
-
- return ret;
-}
-
-static PMClose
-lnxAPMOpen(void)
-{
- int fd, pfd;
-
-#ifdef DEBUG
- ErrorF("APM: OSPMOpen called\n");
-#endif
- if (APMihPtr || !xf86Info.pmFlag)
- return NULL;
-
-#ifdef DEBUG
- ErrorF("APM: Opening device\n");
-#endif
- if ((fd = open( APM_DEVICE, O_RDWR )) > -1) {
- if (access( APM_PROC, R_OK ) ||
- ((pfd = open( APM_PROC, O_RDONLY)) == -1)) {
- xf86MsgVerb(X_WARNING,3,"Cannot open APM (%s) (%s)\n",
- APM_PROC, strerror(errno));
- close(fd);
- return NULL;
- } else
- close(pfd);
- xf86PMGetEventFromOs = lnxPMGetEventFromOs;
- xf86PMConfirmEventToOs = lnxPMConfirmEventToOs;
- APMihPtr = xf86AddInputHandler(fd,xf86HandlePMEvents,NULL);
- xf86MsgVerb(X_INFO,3,"Open APM successful\n");
- return lnxCloseAPM;
- }
- xf86MsgVerb(X_INFO,3,"No APM support in BIOS or kernel\n");
- return NULL;
-}
-
-static void
-lnxCloseAPM(void)
-{
- int fd;
-
-#ifdef DEBUG
- ErrorF("APM: Closing device\n");
-#endif
- if (APMihPtr) {
- fd = xf86RemoveInputHandler(APMihPtr);
- close(fd);
- APMihPtr = NULL;
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_axp.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_axp.c
deleted file mode 100644
index fd47a5559..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_axp.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_axp.c,v 1.3 2001/02/15 11:03:56 alanh Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "shared/xf86Axp.h"
-
-axpDevice lnxGetAXP(void);
-
-typedef struct
- { char* sysName;
- char* sysVari;
- char* cpu;
- axpDevice sys; }
-AXP;
-
-static AXP axpList[] = {
- { "Tsunami", NULL, NULL, TSUNAMI },
- { "Eiger", NULL, NULL, TSUNAMI },
- {"Noname", NULL, NULL, LCA },
- { "AlphaBook1", NULL, NULL, LCA },
- {"EB66", NULL, NULL, LCA},
- {"EB64+",NULL,NULL, APECS},
- {"Noritake",NULL,"EV5",CIA},
- {"Noritake",NULL,"EV56",CIA},
- {"Noritake",NULL,NULL,APECS},
- {"XL",NULL,NULL,APECS},
- {"Avanti",NULL,NULL,APECS},
- {"Mikasa",NULL,"EV5",CIA},
- {"Mikasa",NULL,"EV56",CIA},
- {"Mikasa",NULL,NULL,APECS},
- {"EB164","EB164",NULL,CIA},
- {"EB164","PC164", NULL,CIA},
- {"EB164","LX164",NULL, PYXIS},
- {"EB164","SX164",NULL, PYXIS},
- {"EB164","RX164",NULL, POLARIS},
- {"Alcor",NULL,NULL,CIA},
- {"Takara",NULL,NULL,CIA},
- {"Sable",NULL, "EV5",T2_GAMMA},
- {"Sable",NULL,"EV56",T2_GAMMA},
- {"Sable",NULL,NULL,T2},
- {"Rawhide",NULL,NULL,MCPCIA},
- {"Jensen",NULL,NULL,JENSEN},
- {"Miata",NULL,NULL,PYXIS_CIA},
- {"Ruffian",NULL,NULL,PYXIS_CIA},
- {"Nautilus",NULL,NULL,IRONGATE},
- {NULL,NULL,NULL,NONE}
-};
-
-
-axpDevice
-lnxGetAXP(void)
-{
- FILE *file;
- int count = 0;
- char res[256];
- char cpu[255];
- char systype[255];
- char sysvari[255];
- if (!(file = fopen("/proc/cpuinfo","r")))
- return SYS_NONE;
- do {
- if (!fgets(res,0xff,file)) return SYS_NONE;
- switch (count) {
- case 1:
- sscanf(res, "cpu model : %s",cpu);
-#ifdef DEBUG
- ErrorF("CPU %s\n",cpu);
-#endif
- break;
- case 5:
- sscanf(res, "system type : %s",systype);
-#ifdef DEBUG
- ErrorF("system type : %s\n",systype);
-#endif
- break;
- case 6:
- sscanf(res, "system variation : %s",sysvari);
-#ifdef DEBUG
- ErrorF("system variation: %s\n",sysvari);
-#endif
- break;
- }
- count++;
- } while (count < 8);
-
- fclose(file);
-
- count = 0;
-
- do {
- if (!axpList[count].sysName || !strcmp(axpList[count].sysName,systype)) {
- if (axpList[count].sysVari && strcmp(axpList[count].sysVari,sysvari)) {
- count++;
- continue;
- };
- if (axpList[count].cpu && strcmp(axpList[count].cpu,cpu)) {
- count++;
- continue;
- }
- return axpList[count].sys;
- }
- count++;
- } while (1);
-}
-
-/*
- * pciconfig_iobase wrappers and dynamic i/o selection
- */
-#include <linux/unistd.h>
-#include <asm/pci.h>
-#include <errno.h>
-
-/* glibc versions (single hose only) */
-extern void _outb(char val, unsigned long port);
-extern void _outw(short val, unsigned long port);
-extern void _outl(int val, unsigned long port);
-extern unsigned int _inb(unsigned long port);
-extern unsigned int _inw(unsigned long port);
-extern unsigned int _inl(unsigned long port);
-
-extern void _dense_outb(char, unsigned long);
-extern void _dense_outw(short, unsigned long);
-extern void _dense_outl(int, unsigned long);
-extern unsigned int _dense_inb(unsigned long);
-extern unsigned int _dense_inw(unsigned long);
-extern unsigned int _dense_inl(unsigned long);
-
-void (*_alpha_outb)(char, unsigned long) = _outb;
-void (*_alpha_outw)(short, unsigned long) = _outw;
-void (*_alpha_outl)(int, unsigned long) = _outl;
-unsigned int (*_alpha_inb)(unsigned long) = _inb;
-unsigned int (*_alpha_inw)(unsigned long) = _inw;
-unsigned int (*_alpha_inl)(unsigned long) = _inl;
-
-static long _alpha_iobase_query(unsigned, int, int, int);
-long (*_iobase)(unsigned, int, int, int) = _alpha_iobase_query;
-
-static long
-_alpha_iobase(unsigned flags, int hose, int bus, int devfn)
-{
-#ifdef __NR_pciconfig_iobase
- if (bus < 0) {
- bus = hose;
- flags |= IOBASE_FROM_HOSE;
- }
-
- return syscall(__NR_pciconfig_iobase, flags, bus, devfn);
-#else
- return -ENOSYS
-#endif
-}
-
-static long
-_alpha_iobase_legacy(unsigned flags, int hose, int bus, int devfn)
-{
- if (hose > 0) return -ENODEV;
- if (flags & IOBASE_DENSE_MEM) return _bus_base();
- if (flags & IOBASE_SPARSE_MEM) return _bus_base_sparse();
- return 0;
-}
-
-static long
-_alpha_iobase_query(unsigned flags, int hose, int bus, int devfn)
-{
- /*
- * Only use iobase if the syscall is supported *and* it's
- * a dense io system
- */
- if (_alpha_iobase(IOBASE_DENSE_IO, 0, 0, 0) > 0) {
- /*
- * The syscall worked and it's a dense io system - take over the
- * io subsystem
- */
- _iobase = _alpha_iobase;
-
-#ifndef INCLUDE_XF86_NO_DOMAIN
- /*
- * Only take over the inx/outx functions if this is a dense I/O
- * system *and* addressing domains are being used. The dense I/O
- * routines expect I/O to be mapped (as done in xf86MapDomainIO)
- */
- _alpha_outb = _dense_outb;
- _alpha_outw = _dense_outw;
- _alpha_outl = _dense_outl;
- _alpha_inb = _dense_inb;
- _alpha_inw = _dense_inw;
- _alpha_inl = _dense_inl;
-#endif /* !INCLUDE_XF86_NO_DOMAIN */
- } else _iobase = _alpha_iobase_legacy;
-
- return _iobase(flags, hose, bus, devfn);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_ev56.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_ev56.c
deleted file mode 100644
index 63077e907..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_ev56.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_ev56.c,v 3.5 2000/02/17 13:45:49 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-int readDense8(pointer Base, register unsigned long Offset);
-int readDense16(pointer Base, register unsigned long Offset);
-int readDense32(pointer Base, register unsigned long Offset);
-void
-writeDenseNB8(int Value, pointer Base, register unsigned long Offset);
-void
-writeDenseNB16(int Value, pointer Base, register unsigned long Offset);
-void
-writeDenseNB32(int Value, pointer Base, register unsigned long Offset);
-void
-writeDense8(int Value, pointer Base, register unsigned long Offset);
-void
-writeDense16(int Value, pointer Base, register unsigned long Offset);
-void
-writeDense32(int Value, pointer Base, register unsigned long Offset);
-
-int
-readDense8(pointer Base, register unsigned long Offset)
-{
- mem_barrier();
- return *(volatile CARD8*) ((unsigned long)Base+(Offset));
-}
-
-int
-readDense16(pointer Base, register unsigned long Offset)
-{
- mem_barrier();
- return *(volatile CARD16*) ((unsigned long)Base+(Offset));
-}
-
-int
-readDense32(pointer Base, register unsigned long Offset)
-{
- mem_barrier();
- return *(volatile CARD32*)((unsigned long)Base+(Offset));
-}
-
-void
-writeDenseNB8(int Value, pointer Base, register unsigned long Offset)
-{
- *(volatile CARD8*)((unsigned long)Base+(Offset)) = Value;
-}
-
-void
-writeDenseNB16(int Value, pointer Base, register unsigned long Offset)
-{
- *(volatile CARD16*)((unsigned long)Base + (Offset)) = Value;
-}
-
-void
-writeDenseNB32(int Value, pointer Base, register unsigned long Offset)
-{
- *(volatile CARD32*)((unsigned long)Base+(Offset)) = Value;
-}
-
-void
-writeDense8(int Value, pointer Base, register unsigned long Offset)
-{
- write_mem_barrier();
- *(volatile CARD8 *)((unsigned long)Base+(Offset)) = Value;
-}
-
-void
-writeDense16(int Value, pointer Base, register unsigned long Offset)
-{
- write_mem_barrier();
- *(volatile CARD16 *)((unsigned long)Base+(Offset)) = Value;
-}
-
-void
-writeDense32(int Value, pointer Base, register unsigned long Offset)
-{
- write_mem_barrier();
- *(volatile CARD32 *)((unsigned long)Base+(Offset)) = Value;
-}
-
-
-#ifndef INCLUDE_XF86_NO_DOMAIN
-
-void
-_dense_outb(char val, unsigned long port)
-{
- if ((port & ~0xffff) == 0) return _outb(val, port);
-
- write_mem_barrier();
- *(volatile CARD8 *)port = val;
-}
-
-void
-_dense_outw(short val, unsigned long port)
-{
- if ((port & ~0xffff) == 0) return _outw(val, port);
-
- write_mem_barrier();
- *(volatile CARD16 *)port = val;
-}
-
-void
-_dense_outl(int val, unsigned long port)
-{
- if ((port & ~0xffff) == 0) return _outl(val, port);
-
- write_mem_barrier();
- *(volatile CARD32 *)port = val;
-}
-
-unsigned int
-_dense_inb(unsigned long port)
-{
- if ((port & ~0xffff) == 0) return _inb(port);
-
- mem_barrier();
- return *(volatile CARD8 *)port;
-}
-
-unsigned int
-_dense_inw(unsigned long port)
-{
- if ((port & ~0xffff) == 0) return _inw(port);
-
- mem_barrier();
- return *(volatile CARD16 *)port;
-}
-
-unsigned int
-_dense_inl(unsigned long port)
-{
- if ((port & ~0xffff) == 0) return _inl(port);
-
- mem_barrier();
- return *(volatile CARD32 *)port;
-}
-
-#endif /* !INCLUDE_XF86_NO_DOMAIN */
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_font.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_font.c
deleted file mode 100644
index e9a5b6aef..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_font.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * Copyright 2004, Egbert Eich
- *
- * 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 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 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
- * EGBERT EICH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
- * NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of Egbert Eich shall not
- * be used in advertising or otherwise to promote the sale, use or other deal-
- *ings in this Software without prior written authorization from Egbert Eich.
- *
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "lnx.h"
-
-#include <sys/stat.h>
-#include <string.h>
-#include <errno.h>
-
-struct {
- int width;
- int height;
- int charcount;
- unsigned char *data;
-} lnxfont = { 0, 0, 0, NULL };
-
-
-static Bool
-getfont(int *width, int *height,
- int *charcount, unsigned char *data)
-{
- struct console_font_op op;
- struct consolefontdesc ds;
- int result;
-
- op.op = KD_FONT_OP_GET;
- op.width = *width;
- op.height = *height;
- op.charcount = *charcount;
- op.data = data;
- op.flags = 0;
-
- SYSCALL(result = ioctl(xf86Info.consoleFd, KDFONTOP, &op));
-#ifdef DEBUG
- ErrorF("Console font read: h: %i count: %i\n",op.height,op.charcount);
-#endif
-
- if (!result) {
-
- *width = op.width;
- *height = op.height;
- *charcount = op.charcount;
-
- return TRUE;
- }
-
- if (errno != ENOSYS && errno != EINVAL)
- return FALSE;
-
- /* GIO_FONTX fallback */
- ds.charcount = *charcount;
- ds.charheight = *height;
- ds.chardata = (char *)data;
- *width = 8;
-
- SYSCALL(result = ioctl(xf86Info.consoleFd, GIO_FONTX, &ds));
-
- if (!result) {
-
- *charcount = ds.charcount;
- *height = ds.charheight;
-
- return TRUE;
- }
-
- if (errno != ENOSYS && errno != EINVAL)
- return FALSE;
-
- /* GIO_FONT fallback */
- if (*charcount < 256)
- return FALSE;
-
- SYSCALL(result = ioctl(xf86Info.consoleFd, GIO_FONT, data));
-
- if (!result) {
- *height = 0;
- *charcount = 512;
- return TRUE;
- }
-
- return FALSE;
-
-}
-
-#define VERSION_LEN 31
-
-Bool
-lnx_savefont(void)
-{
- unsigned char *fontdata;
-#if CHECK_OS_VERSION
- char kernel_version[VERSION_LEN + 1];
- int k_major, k_minor, k_release;
-#endif
- int size;
- int fd;
- int width = 32, height = 32, charcount = 2048;
-
-#ifdef DEBUG
- ErrorF("SAVE font\n");
-#endif
-
-#if CHECK_OS_VERSION
- /* Check if the kernel has full support for this */
- if ((fd = open ("/proc/sys/kernel/osrelease",O_RDONLY)) == -1) {
- close (fd);
- return TRUE;
- }
- size = read(fd, kernel_version, VERSION_LEN);
- close (fd);
-
- if (size < 0)
- return TRUE;
-
- size = sscanf(kernel_version, "%d.%d.%d",&k_major,&k_minor,&k_release);
- if (size < 3
- || (k_major < 2)
- || ((k_major == 2)
- && ((k_minor < 6)
- || ( k_minor == 6
- && k_release < 11))))
- return TRUE;
-#endif
-
- /* if we are in fbdev mode we don't bother saving fonts */
- if ((fd = open ("/dev/fb0",O_RDWR)) != -1) {
- close (fd);
- return TRUE;
- }
-
- if (!getfont(&width, &height, &charcount, NULL)) {
- xf86Msg(X_WARNING,
- "lnx_savefont: cannot obtain font info\n");
- goto error;
- } else if (charcount == 2048) {
- xf86Msg(X_WARNING, "lnx_savefont: "
- "kernel bug: kernel doesn't report font info\n");
- return FALSE;
- }
-
- size = (width + 7)/8 * 32 * charcount;
- fontdata = (unsigned char *)xnfalloc(size);
- if (!fontdata) {
- xf86Msg(X_WARNING,
- "lnx_savefont: cannot allocate memory to save font\n");
- goto error;
- }
-
- if (!getfont(&width, &height, &charcount, fontdata)) {
- xf86Msg(X_WARNING,"lnx_savefont: cannot read font data\n");
- goto error;
- }
- lnxfont.width = width;
- lnxfont.height = height;
- lnxfont.charcount = charcount;
- lnxfont.data = fontdata;
-
- return TRUE;
-
- error:
- return FALSE;
-}
-
-static Bool
-setfont(int width, int height,
- int charcount, unsigned char *data)
-{
- struct console_font_op op;
- struct consolefontdesc ds;
- int result;
-
- op.op = KD_FONT_OP_SET;
- op.flags = 0;
- op.charcount = charcount;
- op.width = width;
- op.height = height;
- op.data = data;
-
- SYSCALL(result = ioctl(xf86Info.consoleFd, KDFONTOP, &op));
-
- if (!result)
- return TRUE;
-
- if (errno != ENOSYS && errno != EINVAL)
- return FALSE;
-
- /* PIO_FONTX fallback */
- if (width != 8)
- return FALSE;
-
- ds.charcount = charcount;
- ds.chardata = (char *)data;
- ds.charheight = height;
- SYSCALL(result = ioctl(xf86Info.consoleFd, PIO_FONTX, &ds));
-
- if (!result)
- return TRUE;
-
- if (errno != ENOSYS && errno != EINVAL)
- return FALSE;
-
- /* PIO_FONT fallback */
- SYSCALL(result = ioctl(xf86Info.consoleFd, PIO_FONT, data));
-
- if (!result)
- return TRUE;
-
- return FALSE;
-}
-
-Bool
-lnx_restorefont(void)
-{
- if (lnxfont.data == NULL)
- return FALSE;
-#ifdef DEBUG
- ErrorF("RESTORE font\n");
-#endif
-#if 0
- /* must wack the height to make the kernel reprogram the VGA registers */
- if (!setfont(lnxfont.width, lnxfont.height + 1, lnxfont.charcount,
- lnxfont.data)) {
- xf86Msg(X_WARNING,"lnx_fontretore: cannot write font data\n");
- return FALSE;
- }
-#endif
- if (!setfont(lnxfont.width, lnxfont.height, lnxfont.charcount,
- lnxfont.data)) {
- xf86Msg(X_WARNING,"lnx_restorefont: cannot write font data\n");
- return FALSE;
- }
-
- return TRUE;
-}
-
-Bool
-lnx_switchaway(void)
-{
- Bool ret;
-
- /* temporarily switch to text mode */
- ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT);
- ret = lnx_restorefont();
- ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS);
- return ret;
-}
-
-void
-lnx_freefontdata(void)
-{
- if (lnxfont.data == NULL)
- return;
-
- xfree(lnxfont.data);
- lnxfont.data = NULL;
- lnxfont.width = lnxfont.height = lnxfont.charcount = 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_ia64.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_ia64.c
deleted file mode 100644
index 5f742d01f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_ia64.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2004, Egbert Eich
- *
- * 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 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 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
- * EGBERT EICH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
- * NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of Egbert Eich shall not
- * be used in advertising or otherwise to promote the sale, use or other deal-
- *ings in this Software without prior written authorization from Egbert Eich.
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/utsname.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-#include "ia64Pci.h"
-#include "Pci.h"
-
-#if defined OS_PROBE_PCI_CHIPSET
-IA64Chipset OS_PROBE_PCI_CHIPSET(scanpciWrapperOpt flags)
-{
- struct stat unused;
- struct utsname utsName;
-
- if (!stat("/proc/bus/mckinley/zx1",&unused)
- || !stat("/proc/bus/mckinley/zx2",&unused))
- return ZX1_CHIPSET;
-
- if (!stat("/proc/sgi_sn/licenseID", &unused)) {
- int major, minor, patch;
- char *c;
-
- /* We need a 2.6.11 or better kernel for Altix support */
- uname(&utsName);
- c = utsName.release;
-
- major = atoi(c);
- c = strstr(c, ".") + 1;
- minor = atoi(c);
- c = strstr(c, ".") + 1;
- patch = atoi(c);
-
- if (major < 2 || (major == 2 && minor < 6) ||
- (major == 2 && minor == 6 && patch < 11)) {
- ErrorF("Kernel 2.6.11 or better needed for Altix support\n");
- return NONE_CHIPSET;
- }
- return ALTIX_CHIPSET;
- }
-
- return NONE_CHIPSET;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c
deleted file mode 100644
index 1eb0f33fe..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c
+++ /dev/null
@@ -1,415 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c,v 1.9 2005/08/26 07:35:55 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c,v 3.14 2001/10/31 22:50:30 tsi Exp $ */
-/*
- * Copyright 1992 by Orest Zborowski <obz@Kodak.com>
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Orest Zborowski and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Orest Zborowski
- * and David Wexelblat make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OREST ZBOROWSKI AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: lnx_init.c /main/7 1996/10/23 18:46:30 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "lnx.h"
-
-#include <sys/stat.h>
-
-#ifdef USE_DEV_FB
-extern char *getenv(const char *);
-#include <linux/fb.h>
-char *fb_dev_name;
-#endif
-
-static Bool KeepTty = FALSE;
-static int VTnum = -1;
-static Bool VTSwitch = TRUE;
-static Bool ShareVTs = FALSE;
-static int activeVT = -1;
-
-static int vtPermSave[4];
-static char vtname[11];
-
-static int
-saveVtPerms(void)
-{
- /* We need to use stat to get permissions. */
- struct stat svtp;
-
- /* Do them numerically ordered, hard coded tty0 first. */
- if (stat("/dev/tty0", &svtp) != 0)
- return 0;
- vtPermSave[0] = (int)svtp.st_uid;
- vtPermSave[1] = (int)svtp.st_gid;
-
- /* Now check the console we are dealing with. */
- if (stat(vtname, &svtp) != 0)
- return 0;
- vtPermSave[2] = (int)svtp.st_uid;
- vtPermSave[3] = (int)svtp.st_gid;
-
- return 1;
-}
-
-static void
-restoreVtPerms(void)
-{
- /* Set the terminal permissions back to before we started. */
- chown("/dev/tty0", vtPermSave[0], vtPermSave[1]);
- chown(vtname, vtPermSave[2], vtPermSave[3]);
-}
-
-void
-xf86OpenConsole(void)
-{
- int i, fd = -1;
- struct vt_mode VT;
- struct vt_stat vts;
- MessageType from = X_PROBED;
-#ifdef USE_DEV_FB
- struct fb_var_screeninfo var;
- int fbfd;
-#endif
- char *tty0[] = { "/dev/tty0", "/dev/vc/0", NULL };
- char *vcs[] = { "/dev/vc/%d", "/dev/tty%d", NULL };
-
- if (serverGeneration == 1) {
-
- /* when KeepTty check if we're run with euid==0 */
- if (KeepTty && geteuid() != 0)
- FatalError("xf86OpenConsole:"
- " Server must be suid root for option \"KeepTTY\"\n");
-
- /*
- * setup the virtual terminal manager
- */
- if (VTnum != -1) {
- xf86Info.vtno = VTnum;
- from = X_CMDLINE;
- } else {
-
- i=0;
- while (tty0[i] != NULL) {
- if ((fd = open(tty0[i],O_WRONLY,0)) >= 0)
- break;
- i++;
- }
-
- if (fd < 0)
- FatalError(
- "xf86OpenConsole: Cannot open /dev/tty0 (%s)\n",
- strerror(errno));
-
- if (ShareVTs)
- {
- if (ioctl(fd, VT_GETSTATE, &vts) == 0)
- xf86Info.vtno = vts.v_active;
- else
- FatalError("xf86OpenConsole: Cannot find the current"
- " VT (%s)\n", strerror(errno));
- } else {
- if ((ioctl(fd, VT_OPENQRY, &xf86Info.vtno) < 0) ||
- (xf86Info.vtno == -1))
- FatalError("xf86OpenConsole: Cannot find a free VT: %s\n",
- strerror(errno));
- }
- close(fd);
- }
-
-#ifdef USE_DEV_FB
- if (!ShareVTs)
- {
- fb_dev_name=getenv("FRAMEBUFFER");
- if (!fb_dev_name)
- fb_dev_name="/dev/fb0current";
-
- if ((fbfd = open(fb_dev_name, O_RDONLY)) < 0)
- FatalError("xf86OpenConsole: Cannot open %s (%s)\n",
- fb_dev_name, strerror(errno));
-
- if (ioctl(fbfd, FBIOGET_VSCREENINFO, &var) < 0)
- FatalError("xf86OpenConsole: Unable to get screen info %s\n",
- strerror(errno));
- }
-#endif
- xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno);
-
- if (!KeepTty) {
- pid_t ppid = getppid();
- pid_t ppgid;
- ppgid = getpgid(ppid);
-
- /*
- * change to parent process group that pgid != pid so
- * that setsid() doesn't fail and we become process
- * group leader
- */
- if (setpgid(0,ppgid) < 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: setpgid failed: %s\n",
- strerror(errno));
-
- /* become process group leader */
- if ((setsid() < 0))
- xf86Msg(X_WARNING, "xf86OpenConsole: setsid failed: %s\n",
- strerror(errno));
- }
-
- i=0;
- while (vcs[i] != NULL) {
- sprintf(vtname, vcs[i], xf86Info.vtno); /* /dev/tty1-64 */
- if ((xf86Info.consoleFd = open(vtname, O_RDWR|O_NDELAY, 0)) >= 0)
- break;
- i++;
- }
-
- if (xf86Info.consoleFd < 0)
- FatalError("xf86OpenConsole: Cannot open virtual console"
- " %d (%s)\n", xf86Info.vtno, strerror(errno));
-
- if (!ShareVTs)
- {
- /*
- * Grab the vt ownership before we overwrite it.
- * Hard coded /dev/tty0 into this function as well for below.
- */
- if (!saveVtPerms())
- xf86Msg(X_WARNING,
- "xf86OpenConsole: Could not save ownership of VT\n");
-
- /* change ownership of the vt */
- if (chown(vtname, getuid(), getgid()) < 0)
- xf86Msg(X_WARNING,"xf86OpenConsole: chown %s failed: %s\n",
- vtname, strerror(errno));
-
- /*
- * the current VT device we're running on is not "console", we want
- * to grab all consoles too
- *
- * Why is this needed??
- */
- if (chown("/dev/tty0", getuid(), getgid()) < 0)
- xf86Msg(X_WARNING,"xf86OpenConsole: chown /dev/tty0 failed: %s\n",
- strerror(errno));
- }
-
- /*
- * Linux doesn't switch to an active vt after the last close of a vt,
- * so we do this ourselves by remembering which is active now.
- */
- if (ioctl(xf86Info.consoleFd, VT_GETSTATE, &vts) < 0)
- xf86Msg(X_WARNING,"xf86OpenConsole: VT_GETSTATE failed: %s\n",
- strerror(errno));
- else
- activeVT = vts.v_active;
-
-#if 0
- if (!KeepTty) {
- /*
- * Detach from the controlling tty to avoid char loss
- */
- if ((i = open("/dev/tty",O_RDWR)) >= 0) {
- ioctl(i, TIOCNOTTY, 0);
- close(i);
- }
- }
-#endif
-
- if (!ShareVTs)
- {
-#if defined(DO_OS_FONTRESTORE)
- lnx_savefont();
-#endif
- /*
- * now get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) < 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed: %s\n",
- strerror(errno));
-
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) < 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed: %s\n",
- strerror(errno));
-
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0)
- FatalError("xf86OpenConsole: VT_GETMODE failed %s\n",
- strerror(errno));
-
- signal(SIGUSR1, xf86VTRequest);
-
- VT.mode = VT_PROCESS;
- VT.relsig = SIGUSR1;
- VT.acqsig = SIGUSR1;
-
- if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0)
- FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed: %s\n",
- strerror(errno));
-
- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0)
- FatalError("xf86OpenConsole: KDSETMODE KD_GRAPHICS failed %s\n",
- strerror(errno));
-
- /* we really should have a InitOSInputDevices() function instead
- * of Init?$#*&Device(). So I just place it here */
-
-#ifdef USE_DEV_FB
- /* copy info to new console */
- var.yoffset=0;
- var.xoffset=0;
- if (ioctl(fbfd, FBIOPUT_VSCREENINFO, &var))
- FatalError("Unable to set screen info\n");
- close(fbfd);
-#endif
- } else { /* ShareVTs */
- close(xf86Info.consoleFd);
- }
- signal(SIGUSR2, xf86ReloadInputDevs);
- } else { /* serverGeneration != 1 */
- if (!ShareVTs && VTSwitch)
- {
- /*
- * now get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) < 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed %s\n",
- strerror(errno));
- }
-
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) < 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed %s\n",
- strerror(errno));
- }
- return;
-}
-
-void
-xf86CloseConsole()
-{
- struct vt_mode VT;
-#if defined(DO_OS_FONTRESTORE)
- struct vt_stat vts;
- int vtno = -1;
-#endif
-
- if (ShareVTs) return;
-
-#if defined(DO_OS_FONTRESTORE)
- if (ioctl(xf86Info.consoleFd, VT_GETSTATE, &vts) < 0)
- xf86Msg(X_WARNING, "xf86CloseConsole: VT_GETSTATE failed: %s\n",
- strerror(errno));
- else
- vtno = vts.v_active;
-#endif
-
- /* Back to text mode ... */
- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT) < 0)
- xf86Msg(X_WARNING, "xf86CloseConsole: KDSETMODE failed: %s\n",
- strerror(errno));
-
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0)
- xf86Msg(X_WARNING, "xf86CloseConsole: VT_GETMODE failed: %s\n",
- strerror(errno));
- else {
- /* set dflt vt handling */
- VT.mode = VT_AUTO;
- if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0)
- xf86Msg(X_WARNING, "xf86CloseConsole: VT_SETMODE failed: %s\n",
- strerror(errno));
- }
-
- if (VTSwitch)
- {
- /*
- * Perform a switch back to the active VT when we were started
- */
- if (activeVT >= 0) {
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, activeVT) < 0)
- xf86Msg(X_WARNING, "xf86CloseConsole: VT_ACTIVATE failed: %s\n",
- strerror(errno));
- activeVT = -1;
- }
-
-#if defined(DO_OS_FONTRESTORE)
- if (xf86Info.vtno == vtno) /* check if we are active */
- lnx_restorefont();
- lnx_freefontdata();
-#endif
- }
- close(xf86Info.consoleFd); /* make the vt-manager happy */
-
- restoreVtPerms(); /* restore the permissions */
-
- return;
-}
-
-int
-xf86ProcessArgument(int argc, char *argv[], int i)
-{
- /*
- * Keep server from detaching from controlling tty. This is useful
- * when debugging (so the server can receive keyboard signals.
- */
- if (!strcmp(argv[i], "-keeptty"))
- {
- KeepTty = TRUE;
- return(1);
- }
- if (!strcmp(argv[i], "-novtswitch"))
- {
- VTSwitch = FALSE;
- return(1);
- }
- if (!strcmp(argv[i], "-sharevts"))
- {
- ShareVTs = TRUE;
- return(1);
- }
- if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
- {
- if (sscanf(argv[i], "vt%2d", &VTnum) == 0)
- {
- UseMsg();
- VTnum = -1;
- return(0);
- }
- return(1);
- }
- return(0);
-}
-
-void
-xf86UseMsg()
-{
- ErrorF("vtXX use the specified VT number\n");
- ErrorF("-keeptty ");
- ErrorF("don't detach controlling tty (for debugging only)\n");
- ErrorF("-novtswitch don't immediately switch to new VT\n");
- ErrorF("-sharevts share VTs with another X server\n");
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c
deleted file mode 100644
index 47df0dfb6..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c,v 3.25 2003/08/19 17:32:34 tsi Exp $ */
-/*
- * Copyright 1992 by Orest Zborowski <obz@Kodak.com>
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- *
- * 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, and that the names of Orest Zborowski and David Dawes
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Orest Zborowski
- * and David Dawes make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OREST ZBOROWSKI AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID DAWES BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: lnx_io.c /main/8 1996/10/19 18:06:28 kaleb $ */
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#define KBC_TIMEOUT 250 /* Timeout in ms for sending to keyboard controller */
-
-void
-xf86SoundKbdBell(int loudness, int pitch, int duration)
-{
- if (loudness && pitch)
- {
- ioctl(xf86Info.consoleFd, KDMKTONE,
- ((1193190 / pitch) & 0xffff) |
- (((unsigned long)duration *
- loudness / 50) << 16));
- }
-}
-
-void
-xf86SetKbdLeds(int leds)
-{
- ioctl(xf86Info.consoleFd, KDSETLED, leds);
-}
-
-int
-xf86GetKbdLeds()
-{
- int leds = 0;
-
- ioctl(xf86Info.consoleFd, KDGETLED, &leds);
- return(leds);
-}
-
-/* kbd rate stuff based on kbdrate.c from Rik Faith <faith@cs.unc.edu> et.al.
- * from util-linux-2.9t package */
-
-#include <linux/kd.h>
-#include <linux/version.h>
-#ifdef __sparc__
-#include <asm/param.h>
-#include <asm/kbio.h>
-#endif
-
-/* Deal with spurious kernel header change in struct kbd_repeat.
- We undo this define after the routine using that struct is over,
- so as not to interfere with other 'rate' elements. */
-#if defined(LINUX_VERSION_CODE) && defined(KERNEL_VERSION)
-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,42)
-# define rate period
-# endif
-#endif
-
-static int
-KDKBDREP_ioctl_ok(int rate, int delay) {
-#if defined(KDKBDREP) && !defined(__sparc__)
- /* This ioctl is defined in <linux/kd.h> but is not
- implemented anywhere - must be in some m68k patches. */
- struct kbd_repeat kbdrep_s;
-
- /* don't change, just test */
- kbdrep_s.rate = -1;
- kbdrep_s.delay = -1;
- if (ioctl( xf86Info.consoleFd, KDKBDREP, &kbdrep_s )) {
- return 0;
- }
- /* do the change */
- if (rate == 0) /* switch repeat off */
- kbdrep_s.rate = 0;
- else
- kbdrep_s.rate = 10000 / rate; /* convert cps to msec */
- if (kbdrep_s.rate < 1)
- kbdrep_s.rate = 1;
- kbdrep_s.delay = delay;
- if (kbdrep_s.delay < 1)
- kbdrep_s.delay = 1;
-
- if (ioctl( xf86Info.consoleFd, KDKBDREP, &kbdrep_s )) {
- return 0;
- }
-
- return 1; /* success! */
-#else /* no KDKBDREP */
- return 0;
-#endif /* KDKBDREP */
-}
-
-#undef rate
-
-/* Undo the earlier define for the struct kbd_repeat problem. */
-#if defined(LINUX_VERSION_CODE) && defined(KERNEL_VERSION)
-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,42)
-# undef rate
-# endif
-#endif
-
-static int
-KIOCSRATE_ioctl_ok(int rate, int delay) {
-#ifdef KIOCSRATE
- struct kbd_rate kbdrate_s;
- int fd;
-
- fd = open("/dev/kbd", O_RDONLY);
- if (fd == -1)
- return 0;
-
- kbdrate_s.rate = (rate + 5) / 10; /* must be integer, so round up */
- kbdrate_s.delay = delay * HZ / 1000; /* convert ms to Hz */
- if (kbdrate_s.rate > 50)
- kbdrate_s.rate = 50;
-
- if (ioctl( fd, KIOCSRATE, &kbdrate_s )) {
- return 0;
- }
-
- close( fd );
-
- return 1;
-#else /* no KIOCSRATE */
- return 0;
-#endif /* KIOCSRATE */
-}
-
-void xf86SetKbdRepeat(char rad)
-{
-#ifdef __sparc__
- int rate = 500; /* Default rate */
- int delay = 200; /* Default delay */
-#else
- int rate = 300; /* Default rate */
- int delay = 250; /* Default delay */
-#endif
-
-#if defined(__alpha__) || defined (__i386__) || defined(__ia64__)
- int i;
- int timeout;
- int value = 0x7f; /* Maximum delay with slowest rate */
-
- static int valid_rates[] = { 300, 267, 240, 218, 200, 185, 171, 160, 150,
- 133, 120, 109, 100, 92, 86, 80, 75, 67,
- 60, 55, 50, 46, 43, 40, 37, 33, 30, 27,
- 25, 23, 21, 20 };
-#define RATE_COUNT (sizeof( valid_rates ) / sizeof( int ))
-
- static int valid_delays[] = { 250, 500, 750, 1000 };
-#define DELAY_COUNT (sizeof( valid_delays ) / sizeof( int ))
-#endif
-
- if (xf86Info.kbdRate >= 0)
- rate = xf86Info.kbdRate * 10;
- if (xf86Info.kbdDelay >= 0)
- delay = xf86Info.kbdDelay;
-
- if(KDKBDREP_ioctl_ok(rate, delay)) /* m68k? */
- return;
-
- if(KIOCSRATE_ioctl_ok(rate, delay)) /* sparc? */
- return;
-
- if (xf86IsPc98())
- return;
-
-#if defined(__alpha__) || defined (__i386__) || defined(__ia64__)
-
- /* The ioport way */
-
- for (i = 0; i < RATE_COUNT; i++)
- if (rate >= valid_rates[i]) {
- value &= 0x60;
- value |= i;
- break;
- }
-
- for (i = 0; i < DELAY_COUNT; i++)
- if (delay <= valid_delays[i]) {
- value &= 0x1f;
- value |= i << 5;
- break;
- }
-
- timeout = KBC_TIMEOUT;
- while (((inb(0x64) & 2) == 2) && --timeout)
- usleep(1000); /* wait */
-
- if (timeout == 0)
- return;
-
- outb(0x60, 0xf3); /* set typematic rate */
- while (((inb(0x64) & 2) == 2) && --timeout)
- usleep(1000); /* wait */
-
- usleep(10000);
- outb(0x60, value);
-
-#endif /* __alpha__ || __i386__ || __ia64__ */
-}
-
-static int kbdtrans;
-static struct termios kbdtty;
-
-void
-xf86KbdInit()
-{
- ioctl (xf86Info.consoleFd, KDGKBMODE, &kbdtrans);
- tcgetattr (xf86Info.consoleFd, &kbdtty);
-}
-
-int
-xf86KbdOn()
-{
- struct termios nTty;
-
-#ifdef __powerpc__
- if (xf86Info.kbdCustomKeycodes)
- ioctl(xf86Info.consoleFd, KDSKBMODE, K_MEDIUMRAW);
- else
-#endif
- ioctl(xf86Info.consoleFd, KDSKBMODE, K_RAW);
-
- nTty = kbdtty;
- nTty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- nTty.c_oflag = 0;
- nTty.c_cflag = CREAD | CS8;
- nTty.c_lflag = 0;
- nTty.c_cc[VTIME]=0;
- nTty.c_cc[VMIN]=1;
- cfsetispeed(&nTty, 9600);
- cfsetospeed(&nTty, 9600);
- tcsetattr(xf86Info.consoleFd, TCSANOW, &nTty);
- return(xf86Info.consoleFd);
-}
-
-int
-xf86KbdOff()
-{
- ioctl(xf86Info.consoleFd, KDSKBMODE, kbdtrans);
- tcsetattr(xf86Info.consoleFd, TCSANOW, &kbdtty);
- return(xf86Info.consoleFd);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_jstk.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_jstk.c
deleted file mode 100644
index dafdc0594..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_jstk.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/* $XConsortium: lnx_jstk.c /main/7 1996/02/21 17:51:36 kaleb $ */
-/* Id: lnx_jstk.c,v 1.1 1995/12/20 14:06:09 lepied Exp */
-/*
- * Copyright 1995 by Frederic Lepied, France. <fred@sugix.frmug.fr.net>
- *
- * 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, and that the name of Frederic Lepied not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Frederic Lepied makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * FREDERIC LEPIED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL FREDERIC LEPIED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_jstk.c,v 3.8.2.1 1998/06/05 16:23:12 dawes Exp $ */
-
-static const char rcs_id[] = "Id: lnx_jstk.c,v 1.1 1995/12/20 14:06:09 lepied Exp";
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <sys/types.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#define inline __inline__
-#include <linux/joystick.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-
-#ifdef XFree86LOADER
-#include "xf86.h"
-#include "xf86_ansic.h"
-#endif
-
-#if !defined(JSIOCGTIMELIMIT)
-/* make 2.1.x joystick.h backward compatable */
-#define JSIOCGTIMELIMIT JS_GET_TIMELIMIT
-#define JSIOCSTIMELIMIT JS_SET_TIMELIMIT
-#define js_status JS_DATA_TYPE
-#endif
-
-
-/***********************************************************************
- *
- * xf86JoystickOn --
- *
- * open the device and init timeout according to the device value.
- *
- ***********************************************************************
- */
-
-int
-xf86JoystickOn(char *name, int *timeout, int *centerX, int *centerY)
-{
- int fd;
- struct js_status js;
-
-#ifdef DEBUG
- ErrorF("xf86JoystickOn %s\n", name);
-#endif
-
- if ((fd = open(name, O_RDWR | O_NDELAY, 0)) < 0)
- {
- xf86Msg(X_WARNING, "Cannot open joystick '%s' (%s)\n", name,
- strerror(errno));
- return -1;
- }
-
- if (*timeout == 0) {
- if (ioctl (fd, JSIOCGTIMELIMIT, timeout) == -1) {
- Error("joystick JSIOCGTIMELIMIT ioctl");
- }
- else {
- xf86Msg(X_CONFIG, "Joystick: timeout value = %d\n", *timeout);
- }
- }
- else {
- if (ioctl(fd, JSIOCSTIMELIMIT, timeout) == -1) {
- Error("joystick JSIOCSTIMELIMIT ioctl");
- }
- }
-
- /* Assume the joystick is centred when this is called */
- read(fd, &js, JS_RETURN);
- if (*centerX < 0) {
- *centerX = js.x;
- xf86Msg(X_CONFIG, "Joystick: CenterX set to %d\n", *centerX);
- }
- if (*centerY < 0) {
- *centerY = js.y;
- xf86Msg(X_CONFIG, "Joystick: CenterY set to %d\n", *centerY);
- }
-
- return fd;
-}
-
-/***********************************************************************
- *
- * xf86JoystickInit --
- *
- * called when X device is initialized.
- *
- ***********************************************************************
- */
-
-void
-xf86JoystickInit()
-{
- return;
-}
-
-/***********************************************************************
- *
- * xf86JoystickOff --
- *
- * close the handle.
- *
- ***********************************************************************
- */
-
-int
-xf86JoystickOff(int *fd, int doclose)
-{
- int oldfd;
-
- if (((oldfd = *fd) >= 0) && doclose) {
- close(*fd);
- *fd = -1;
- }
- return oldfd;
-}
-
-/***********************************************************************
- *
- * xf86JoystickGetState --
- *
- * return the state of buttons and the position of the joystick.
- *
- ***********************************************************************
- */
-
-int
-xf86JoystickGetState(int fd, int *x, int *y, int *buttons)
-{
- struct js_status js;
- int status;
-
- status = read(fd, &js, JS_RETURN);
-
- if (status != JS_RETURN)
- {
- Error("Joystick read");
- return 0;
- }
-
- *x = js.x;
- *y = js.y;
- *buttons = js.buttons;
-
- return 1;
-}
-
-#ifdef XFree86LOADER
-/*
- * Entry point for XFree86 Loader
- */
-void
-linux_jstkModuleInit(pointer *data, INT32 *magic)
-{
- *magic = MAGIC_DONE;
- *data = NULL;
-}
-#endif
-
-/* end of lnx_jstk.c */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c
deleted file mode 100644
index b1fc95b56..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c
+++ /dev/null
@@ -1,559 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c,v 1.4 2003/11/03 05:11:52 tsi Exp $ */
-
-/*
- * Copyright (c) 2002 by The XFree86 Project, Inc.
- * Author: Ivan Pascal.
- *
- * Based on the code from lnx_io.c which is
- * Copyright 1992 by Orest Zborowski <obz@Kodak.com>
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- */
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include "xf86Xinput.h"
-#include "xf86OSKbd.h"
-#include "atKeynames.h"
-#if defined(DO_OS_FONTRESTORE)
-#include "lnx.h"
-#endif
-#include "lnx_kbd.h"
-
-#define KBC_TIMEOUT 250 /* Timeout in ms for sending to keyboard controller */
-
-static KbdProtocolRec protocols[] = {
- {"standard", PROT_STD },
- { NULL, PROT_UNKNOWN_KBD }
-};
-
-extern Bool VTSwitchEnabled;
-#ifdef USE_VT_SYSREQ
-extern Bool VTSysreqToggle;
-#endif
-
-static void
-SoundBell(InputInfoPtr pInfo, int loudness, int pitch, int duration)
-{
- if (loudness && pitch)
- {
- ioctl(pInfo->fd, KDMKTONE,
- ((1193190 / pitch) & 0xffff) |
- (((unsigned long)duration *
- loudness / 50) << 16));
- }
-}
-
-static void
-SetKbdLeds(InputInfoPtr pInfo, int leds)
-{
- int real_leds = 0;
-
-#if defined (__sparc__)
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- if (pKbd->sunKbd) {
- if (leds & 0x08) real_leds |= XLED1;
- if (leds & 0x04) real_leds |= XLED3;
- if (leds & 0x02) real_leds |= XLED4;
- if (leds & 0x01) real_leds |= XLED2;
- leds = real_leds;
- real_leds = 0;
- }
-#endif /* defined (__sparc__) */
-#ifdef LED_CAP
- if (leds & XLED1) real_leds |= LED_CAP;
- if (leds & XLED2) real_leds |= LED_NUM;
- if (leds & XLED3) real_leds |= LED_SCR;
-#ifdef LED_COMP
- if (leds & XLED4) real_leds |= LED_COMP;
-#else
- if (leds & XLED4) real_leds |= LED_SCR;
-#endif
-#endif
- ioctl(pInfo->fd, KDSETLED, real_leds);
-}
-
-static int
-GetKbdLeds(InputInfoPtr pInfo)
-{
- int real_leds, leds = 0;
-
- ioctl(pInfo->fd, KDGETLED, &real_leds);
-
- if (real_leds & LED_CAP) leds |= XLED1;
- if (real_leds & LED_NUM) leds |= XLED2;
- if (real_leds & LED_SCR) leds |= XLED3;
-
- return(leds);
-}
-
-/* kbd rate stuff based on kbdrate.c from Rik Faith <faith@cs.unc.edu> et.al.
- * from util-linux-2.9t package */
-
-#include <linux/kd.h>
-#include <linux/version.h>
-#ifdef __sparc__
-#include <asm/param.h>
-#include <asm/kbio.h>
-#endif
-
-/* Deal with spurious kernel header change in struct kbd_repeat.
- We undo this define after the routine using that struct is over,
- so as not to interfere with other 'rate' elements. */
-#if defined(LINUX_VERSION_CODE) && defined(KERNEL_VERSION)
-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,42)
-# define rate period
-# endif
-#endif
-
-static int
-KDKBDREP_ioctl_ok(int rate, int delay) {
-#if defined(KDKBDREP) && !defined(__sparc__)
- /* This ioctl is defined in <linux/kd.h> but is not
- implemented anywhere - must be in some m68k patches. */
- struct kbd_repeat kbdrep_s;
-
- /* don't change, just test */
- kbdrep_s.rate = -1;
- kbdrep_s.delay = -1;
- if (ioctl( xf86Info.consoleFd, KDKBDREP, &kbdrep_s )) {
- return 0;
- }
-
- /* do the change */
- if (rate == 0) /* switch repeat off */
- kbdrep_s.rate = 0;
- else
- kbdrep_s.rate = 10000 / rate; /* convert cps to msec */
- if (kbdrep_s.rate < 1)
- kbdrep_s.rate = 1;
- kbdrep_s.delay = delay;
- if (kbdrep_s.delay < 1)
- kbdrep_s.delay = 1;
-
- if (ioctl( xf86Info.consoleFd, KDKBDREP, &kbdrep_s )) {
- return 0;
- }
-
- return 1; /* success! */
-#else /* no KDKBDREP */
- return 0;
-#endif /* KDKBDREP */
-}
-
-#undef rate
-
-/* Undo the earlier define for the struct kbd_repeat problem. */
-#if defined(LINUX_VERSION_CODE) && defined(KERNEL_VERSION)
-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,42)
-# undef rate
-# endif
-#endif
-
-static int
-KIOCSRATE_ioctl_ok(int rate, int delay) {
-#ifdef KIOCSRATE
- struct kbd_rate kbdrate_s;
- int fd;
-
- fd = open("/dev/kbd", O_RDONLY);
- if (fd == -1)
- return 0;
-
- kbdrate_s.rate = (rate + 5) / 10; /* must be integer, so round up */
- kbdrate_s.delay = delay * HZ / 1000; /* convert ms to Hz */
- if (kbdrate_s.rate > 50)
- kbdrate_s.rate = 50;
-
- if (ioctl( fd, KIOCSRATE, &kbdrate_s )) {
- return 0;
- }
-
- close( fd );
-
- return 1;
-#else /* no KIOCSRATE */
- return 0;
-#endif /* KIOCSRATE */
-}
-
-#undef rate
-
-static void
-SetKbdRepeat(InputInfoPtr pInfo, char rad)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int i;
- int timeout;
- int value = 0x7f; /* Maximum delay with slowest rate */
-
-#ifdef __sparc__
- int rate = 500; /* Default rate */
- int delay = 200; /* Default delay */
-#else
- int rate = 300; /* Default rate */
- int delay = 250; /* Default delay */
-#endif
-
- static int valid_rates[] = { 300, 267, 240, 218, 200, 185, 171, 160, 150,
- 133, 120, 109, 100, 92, 86, 80, 75, 67,
- 60, 55, 50, 46, 43, 40, 37, 33, 30, 27,
- 25, 23, 21, 20 };
-#define RATE_COUNT (sizeof( valid_rates ) / sizeof( int ))
-
- static int valid_delays[] = { 250, 500, 750, 1000 };
-#define DELAY_COUNT (sizeof( valid_delays ) / sizeof( int ))
-
- if (pKbd->rate >= 0)
- rate = pKbd->rate * 10;
- if (pKbd->delay >= 0)
- delay = pKbd->delay;
-
- if(KDKBDREP_ioctl_ok(rate, delay)) /* m68k? */
- return;
-
- if(KIOCSRATE_ioctl_ok(rate, delay)) /* sparc? */
- return;
-
- if (xf86IsPc98())
- return;
-
-#if defined(__alpha__) || defined (__i386__) || defined(__ia64__)
-
- if (!xorgHWAccess) {
- if (xf86EnableIO())
- xorgHWAccess = TRUE;
- else
- return;
- }
-
- /* The ioport way */
-
- for (i = 0; i < RATE_COUNT; i++)
- if (rate >= valid_rates[i]) {
- value &= 0x60;
- value |= i;
- break;
- }
-
- for (i = 0; i < DELAY_COUNT; i++)
- if (delay <= valid_delays[i]) {
- value &= 0x1f;
- value |= i << 5;
- break;
- }
-
- timeout = KBC_TIMEOUT;
- while (((inb(0x64) & 2) == 2) && --timeout)
- usleep(1000); /* wait */
-
- if (timeout == 0)
- return;
-
- outb(0x60, 0xf3); /* set typematic rate */
- while (((inb(0x64) & 2) == 2) && --timeout)
- usleep(1000); /* wait */
-
- usleep(10000);
- outb(0x60, value);
-
-#endif /* __alpha__ || __i386__ || __ia64__ */
-}
-
-typedef struct {
- int kbdtrans;
- struct termios kbdtty;
-} LnxKbdPrivRec, *LnxKbdPrivPtr;
-
-static int
-KbdInit(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- LnxKbdPrivPtr priv = (LnxKbdPrivPtr) pKbd->private;
-
- if (pKbd->isConsole) {
- ioctl (pInfo->fd, KDGKBMODE, &(priv->kbdtrans));
- tcgetattr (pInfo->fd, &(priv->kbdtty));
- }
- if (!pKbd->CustomKeycodes) {
- pKbd->RemapScanCode = ATScancode;
- }
-
- return Success;
-}
-
-static int
-KbdOn(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- LnxKbdPrivPtr priv = (LnxKbdPrivPtr) pKbd->private;
- struct termios nTty;
-
- if (pKbd->isConsole) {
- if (pKbd->CustomKeycodes)
- ioctl(pInfo->fd, KDSKBMODE, K_MEDIUMRAW);
- else
- ioctl(pInfo->fd, KDSKBMODE, K_RAW);
-
- nTty = priv->kbdtty;
- nTty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- nTty.c_oflag = 0;
- nTty.c_cflag = CREAD | CS8;
- nTty.c_lflag = 0;
- nTty.c_cc[VTIME]=0;
- nTty.c_cc[VMIN]=1;
- cfsetispeed(&nTty, 9600);
- cfsetospeed(&nTty, 9600);
- tcsetattr(pInfo->fd, TCSANOW, &nTty);
- }
- return Success;
-}
-
-static int
-KbdOff(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- LnxKbdPrivPtr priv = (LnxKbdPrivPtr) pKbd->private;
-
- if (pKbd->isConsole) {
- ioctl(pInfo->fd, KDSKBMODE, priv->kbdtrans);
- tcsetattr(pInfo->fd, TCSANOW, &(priv->kbdtty));
- }
- return Success;
-}
-
-static int
-GetSpecialKey(InputInfoPtr pInfo, int scanCode)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int specialkey = scanCode;
-
-#if defined (__sparc__)
- if (pKbd->sunKbd) {
- switch (scanCode) {
- case 0x2b: specialkey = KEY_BackSpace; break;
- case 0x47: specialkey = KEY_KP_Minus; break;
- case 0x7d: specialkey = KEY_KP_Plus; break;
- /* XXX needs cases for KEY_KP_Divide and KEY_KP_Multiply */
- case 0x05: specialkey = KEY_F1; break;
- case 0x06: specialkey = KEY_F2; break;
- case 0x08: specialkey = KEY_F3; break;
- case 0x0a: specialkey = KEY_F4; break;
- case 0x0c: specialkey = KEY_F5; break;
- case 0x0e: specialkey = KEY_F6; break;
- case 0x10: specialkey = KEY_F7; break;
- case 0x11: specialkey = KEY_F8; break;
- case 0x12: specialkey = KEY_F9; break;
- case 0x07: specialkey = KEY_F10; break;
- case 0x09: specialkey = KEY_F11; break;
- case 0x0b: specialkey = KEY_F12; break;
- default: specialkey = 0; break;
- }
- return specialkey;
- }
-#endif
-
- if (pKbd->CustomKeycodes) {
- specialkey = pKbd->specialMap->map[scanCode];
- }
- return specialkey;
-}
-
-#define ModifierSet(k) ((modifiers & (k)) == (k))
-
-static
-Bool SpecialKey(InputInfoPtr pInfo, int key, Bool down, int modifiers)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-
- if(!pKbd->vtSwitchSupported)
- return FALSE;
-
- if ((ModifierSet(ControlMask | AltMask)) ||
- (ModifierSet(ControlMask | AltLangMask))) {
- if (VTSwitchEnabled && !xf86Info.vtSysreq && !xf86Info.dontVTSwitch) {
- switch (key) {
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
- if (down) {
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, key - KEY_F1 + 1);
- return TRUE;
- }
- case KEY_F11:
- case KEY_F12:
- if (down) {
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, key - KEY_F11 + 11);
- return TRUE;
- }
- }
- }
- }
-#ifdef USE_VT_SYSREQ
- if (VTSwitchEnabled && xf86Info.vtSysreq && !xf86Info.dontVTSwitch) {
- switch (key) {
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
- if (VTSysreqToggle && down) {
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, key - KEY_F1 + 1);
- VTSysreqToggle = FALSE;
- return TRUE;
- }
- break;
- case KEY_F11:
- case KEY_F12:
- if (VTSysreqToggle && down) {
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, key - KEY_F11 + 11);
- VTSysreqToggle = FALSE;
- return TRUE;
- }
- break;
- /* Ignore these keys -- ie don't let them cancel an alt-sysreq */
- case KEY_Alt:
- case KEY_AltLang:
- break;
- case KEY_SysReqest:
- if ((ModifierSet(AltMask) || ModifierSet(AltLangMask)) && down)
- VTSysreqToggle = TRUE;
- break;
- default:
- /*
- * We only land here when Alt-SysReq is followed by a
- * non-switching key.
- */
- if (VTSysreqToggle)
- VTSysreqToggle = FALSE;
- }
- }
-#endif /* USE_VT_SYSREQ */
- return FALSE;
-}
-
-static void
-stdReadInput(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- unsigned char rBuf[64];
- int nBytes, i;
- if ((nBytes = read( pInfo->fd, (char *)rBuf, sizeof(rBuf))) > 0) {
- for (i = 0; i < nBytes; i++)
- pKbd->PostEvent(pInfo, rBuf[i] & 0x7f,
- rBuf[i] & 0x80 ? FALSE : TRUE);
- }
-}
-
-static Bool
-OpenKeyboard(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int i;
- KbdProtocolId prot = PROT_UNKNOWN_KBD;
- char *s;
-
- s = xf86SetStrOption(pInfo->options, "Protocol", NULL);
- for (i = 0; protocols[i].name; i++) {
- if (xf86NameCmp(s, protocols[i].name) == 0) {
- prot = protocols[i].id;
- break;
- }
- }
-
- switch (prot) {
- case PROT_STD:
- pInfo->read_input = stdReadInput;
- break;
- default:
- xf86Msg(X_ERROR,"\"%s\" is not a valid keyboard protocol name\n", s);
- xfree(s);
- return FALSE;
- }
-
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, s);
- xfree(s);
-
- s = xf86SetStrOption(pInfo->options, "Device", NULL);
- if (s == NULL) {
- pInfo->fd = xf86Info.consoleFd;
- pKbd->isConsole = TRUE;
- } else {
- pInfo->fd = open(s, O_RDONLY | O_NONBLOCK | O_EXCL);
- if (pInfo->fd == -1) {
- xf86Msg(X_ERROR, "%s: cannot open \"%s\"\n", pInfo->name, s);
- xfree(s);
- return FALSE;
- }
- pKbd->isConsole = FALSE;
- xfree(s);
- }
-
- if (pKbd->isConsole)
- pKbd->vtSwitchSupported = TRUE;
-
- return TRUE;
-}
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = pInfo->private;
-
- pKbd->KbdInit = KbdInit;
- pKbd->KbdOn = KbdOn;
- pKbd->KbdOff = KbdOff;
- pKbd->Bell = SoundBell;
- pKbd->SetLeds = SetKbdLeds;
- pKbd->GetLeds = GetKbdLeds;
- pKbd->SetKbdRepeat = SetKbdRepeat;
- pKbd->KbdGetMapping = KbdGetMapping;
- pKbd->SpecialKey = SpecialKey;
-
- pKbd->RemapScanCode = NULL;
- pKbd->GetSpecialKey = GetSpecialKey;
-
- pKbd->OpenKeyboard = OpenKeyboard;
- pKbd->vtSwitchSupported = FALSE;
-
- pKbd->private = xcalloc(sizeof(LnxKbdPrivRec), 1);
- if (pKbd->private == NULL) {
- xf86Msg(X_ERROR,"can't allocate keyboard OS private data\n");
- return FALSE;
- }
-
-#if defined(__powerpc__)
- {
- FILE *f;
- f = fopen("/proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes","r");
- if (f) {
- if (fgetc(f) == '0')
- pKbd->CustomKeycodes = TRUE;
- fclose(f);
- }
- }
-#endif
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.h
deleted file mode 100644
index 7b9cd434e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* $XFree86$ */
-
-extern void KbdGetMapping(InputInfoPtr pInfo, KeySymsPtr pKeySyms,
- CARD8 *pModMap);
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_kmod.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_kmod.c
deleted file mode 100644
index c211d115a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_kmod.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kmod.c,v 3.5 2001/10/01 13:44:14 eich Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <errno.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include "xf86_OSlib.h"
-#include "xf86.h"
-
-
-#define MODPROBE_PATH_FILE "/proc/sys/kernel/modprobe"
-#define MAX_PATH 1024
-
-
-#if 0
-/* XFree86 #defines execl to be the xf86execl() function which does
- * a fork AND exec. We don't want that. We want the regular,
- * standard execl().
- */
-#ifdef execl
-#undef execl
-#endif
-#endif
-
-
-/*
- * Load a Linux kernel module.
- * This is used by the DRI/DRM to load a DRM kernel module when
- * the X server starts. It could be used for other purposes in the future.
- * Input:
- * modName - name of the kernel module (Ex: "tdfx")
- * Return:
- * 0 for failure, 1 for success
- */
-int
-xf86LoadKernelModule(const char *modName)
-{
- char mpPath[MAX_PATH] = "";
- int fd = -1, status, n;
- pid_t pid;
-
- /* get the path to the modprobe program */
- fd = open(MODPROBE_PATH_FILE, O_RDONLY);
- if (fd >= 0) {
- int count = read(fd, mpPath, MAX_PATH - 1);
- if (count <= 0) {
- mpPath[0] = 0;
- }
- else if (mpPath[count - 1] == '\n') {
- mpPath[count - 1] = 0; /* replaces \n with \0 */
- }
- close(fd);
- /* if this worked, mpPath will be "/sbin/modprobe" or similar. */
- }
-
- if (mpPath[0] == 0) {
- /* we failed to get the path from the system, use a default */
- strcpy(mpPath, "/sbin/modprobe");
- }
-
- /* now fork/exec the modprobe command */
- /*
- * It would be good to capture stdout/stderr so that it can be directed
- * to the log file. modprobe errors currently are missing from the log
- * file.
- */
- switch (pid = fork()) {
- case 0: /* child */
- /* change real/effective user ID to 0/0 as we need to
- * preinstall agpgart module for some DRM modules
- */
- if (setreuid(0,0)) {
- xf86Msg(X_WARNING,"LoadKernelModule: "
- "Setting of real/effective user Id to 0/0 failed");
- }
- setenv("PATH","/sbin",1);
- n = execl(mpPath, "modprobe", modName, NULL);
- xf86Msg(X_WARNING,"LoadKernelModule %s\n",strerror(errno));
- exit(EXIT_FAILURE); /* if we get here the child's exec failed */
- break;
- case -1: /* fork failed */
- return 0;
- default: /* fork worked */
- {
- /* XXX we loop over waitpid() because it sometimes fails on
- * the first attempt. Don't know why!
- */
- int count = 0, p;
- do {
- p = waitpid(pid, &status, 0);
- } while (p == -1 && count++ < 4);
-
- if (p == -1) {
- return 0;
- }
-
- if (WIFEXITED(status) && WEXITSTATUS(status) == 0) {
- return 1; /* success! */
- }
- else {
- return 0;
- }
- }
- }
-
- /* never get here */
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_mouse.c
deleted file mode 100644
index d73c69853..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_mouse.c
+++ /dev/null
@@ -1,206 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_mouse.c,v 1.2 2003/10/08 14:58:30 dawes Exp $ */
-
-/*
- * Copyright 1999 by The XFree86 Project, Inc.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-#include "xf86_OSlib.h"
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-static int
-SupportedInterfaces(void)
-{
- return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_AUTO;
-}
-
-static const char *
-DefaultProtocol(void)
-{
- return "Auto";
-}
-
-#define DEFAULT_MOUSE_DEV "/dev/mouse"
-#define DEFAULT_PS2_DEV "/dev/psaux"
-#define DEFAULT_GPM_DATA_DEV "/dev/gpmdata"
-#define DEFAULT_GPM_CTL_DEV "/dev/gpmdata"
-
-static const char *mouseDevs[] = {
- DEFAULT_MOUSE_DEV,
- DEFAULT_PS2_DEV,
- DEFAULT_GPM_DATA_DEV,
- NULL
-};
-
-typedef enum {
- MOUSE_PROTO_UNKNOWN = 0,
- MOUSE_PROTO_SERIAL,
- MOUSE_PROTO_PS2,
- MOUSE_PROTO_MSC,
- MOUSE_PROTO_GPM
-} protocolTypes;
-
-static struct {
- protocolTypes proto;
- const char *name;
-} devproto[] = {
- { MOUSE_PROTO_UNKNOWN, NULL },
- { MOUSE_PROTO_PS2, "PS/2" },
- { MOUSE_PROTO_MSC, "MouseSystems" },
- { MOUSE_PROTO_GPM, "GPM" }
-};
-
-static const char *
-FindDevice(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- int fd = -1;
- const char **pdev;
-
- for (pdev = mouseDevs; *pdev; pdev++) {
- SYSCALL (fd = open(*pdev, O_RDWR | O_NONBLOCK | O_EXCL));
- if (fd == -1) {
-#ifdef DEBUG
- ErrorF("Cannot open %s (%s)\n", *pdev, strerror(errno));
-#endif
- } else
- break;
- }
-
- if (*pdev) {
- close(fd);
- /* Set the Device option. */
- pInfo->conf_idev->commonOptions =
- xf86AddNewOption(pInfo->conf_idev->commonOptions, "Device", *pdev);
- xf86Msg(X_INFO, "%s: Setting Device option to \"%s\"\n",
- pInfo->name, *pdev);
- }
-
- return *pdev;
-}
-
-static const char *
-GuessProtocol(InputInfoPtr pInfo, int flags)
-{
- int fd = -1;
- const char *dev;
- char *realdev;
- struct stat sbuf;
- int i;
- int proto = MOUSE_PROTO_UNKNOWN;
-
- dev = xf86SetStrOption(pInfo->conf_idev->commonOptions, "Device", NULL);
- if (!dev) {
-#ifdef DEBUG
- ErrorF("xf86SetStrOption failed to return the device name\n");
-#endif
- return NULL;
- }
- /* Look at the device name to guess the protocol. */
- realdev = NULL;
- if (strcmp(dev, DEFAULT_MOUSE_DEV) == 0) {
- if (lstat(dev, &sbuf) != 0) {
-#ifdef DEBUG
- ErrorF("lstat failed for %s (%s)\n", dev, strerror(errno));
-#endif
- return NULL;
- }
- if (S_ISLNK(sbuf.st_mode)) {
- realdev = xnfalloc(PATH_MAX + 1);
- i = readlink(dev, realdev, PATH_MAX);
- if (i <= 0) {
-#ifdef DEBUG
- ErrorF("readlink failed for %s (%s)\n", dev, strerror(errno));
-#endif
- xfree(realdev);
- return NULL;
- }
- realdev[i] = '\0';
- }
- }
- if (!realdev)
- realdev = xnfstrdup(dev);
- else {
- /* If realdev doesn't contain a '/' then prepend "/dev/" */
- if (!strchr(realdev, '/')) {
- char *tmp = xnfalloc(strlen(realdev) + 5 + 1);
- sprintf(tmp, "/dev/%s", realdev);
- xfree(realdev);
- realdev = tmp;
- }
- }
-
- if (strcmp(realdev, DEFAULT_PS2_DEV) == 0)
- proto = MOUSE_PROTO_PS2;
- else if (strcmp(realdev, DEFAULT_GPM_DATA_DEV) == 0)
- proto = MOUSE_PROTO_MSC;
- else if (strcmp(realdev, DEFAULT_GPM_CTL_DEV) == 0)
- proto = MOUSE_PROTO_GPM;
- xfree(realdev);
- /*
- * If the protocol can't be guessed from the device name,
- * try to characterise it.
- */
- if (proto == MOUSE_PROTO_UNKNOWN) {
- SYSCALL (fd = open(dev, O_RDWR | O_NONBLOCK | O_EXCL));
- if (isatty(fd)) {
- /* Serial PnP has already failed, so give up. */
- } else {
- if (fstat(fd, &sbuf) != 0) {
-#ifdef DEBUG
- ErrorF("fstat failed for %s (%s)\n", dev, strerror(errno));
-#endif
- close(fd);
- return NULL;
- }
- if (S_ISFIFO(sbuf.st_mode)) {
- /* Assume GPM data in MSC format. */
- proto = MOUSE_PROTO_MSC;
- } else {
- /* Default to PS/2 */
- proto = MOUSE_PROTO_PS2;
- }
- }
- close(fd);
- }
- if (proto == MOUSE_PROTO_UNKNOWN) {
- xf86Msg(X_ERROR, "%s: GuessProtocol: Cannot find mouse protocol.\n",
- pInfo->name);
- return NULL;
- } else {
- for (i = 0; i < sizeof(devproto)/sizeof(devproto[0]); i++) {
- if (devproto[i].proto == proto) {
- xf86Msg(X_INFO,
- "%s: GuessProtocol: "
- "setting mouse protocol to \"%s\"\n",
- pInfo->name, devproto[i].name);
- return devproto[i].name;
- }
- }
- }
- return NULL;
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
- p->SupportedInterfaces = SupportedInterfaces;
- p->DefaultProtocol = DefaultProtocol;
- p->FindDevice = FindDevice;
- p->GuessProtocol = GuessProtocol;
- return p;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_pci.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_pci.c
deleted file mode 100644
index cec9226c8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_pci.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_pci.c,v 3.8 2002/04/09 15:59:37 tsi Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#define XF86_OS_PRIVS
-#include "xf86_OSproc.h"
-#include "xf86Pci.h"
-
-#ifdef __sparc__
-#define PCIADDR_TYPE long long
-#define PCIADDR_IGNORE_FMT "%*x"
-#define PCIADDR_FMT "%llx"
-#else
-#define PCIADDR_TYPE long
-#define PCIADDR_IGNORE_FMT "%*x"
-#define PCIADDR_FMT "%lx"
-#endif
-
-FILE *xf86OSLinuxPCIFile = NULL;
-
-Bool
-xf86GetPciSizeFromOS(PCITAG tag, int index, int* bits)
-{
- char c[0x200];
- char *res;
- unsigned int bus, devfn, dev, fn;
- unsigned PCIADDR_TYPE size[7];
- unsigned int num;
- signed PCIADDR_TYPE Size;
-
- if (index > 7)
- return FALSE;
-
- if (!xf86OSLinuxPCIFile && \
- !(xf86OSLinuxPCIFile = fopen("/proc/bus/pci/devices","r")))
- return FALSE;
- do {
- res = fgets(c,0x1ff,xf86OSLinuxPCIFile);
- if (res) {
- num = sscanf(res,
- /*bus+dev vendorid deviceid irq */
- "%02x%02x\t%*04x%*04x\t%*x"
- /* 7 PCI resource base addresses */
- "\t" PCIADDR_IGNORE_FMT
- "\t" PCIADDR_IGNORE_FMT
- "\t" PCIADDR_IGNORE_FMT
- "\t" PCIADDR_IGNORE_FMT
- "\t" PCIADDR_IGNORE_FMT
- "\t" PCIADDR_IGNORE_FMT
- "\t" PCIADDR_IGNORE_FMT
- /* 7 PCI resource sizes, and then optionally a driver name */
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT,
- &bus,&devfn,&size[0],&size[1],&size[2],&size[3],
- &size[4],&size[5],&size[6]);
- if (num != 9) { /* apparantly not 2.3 style */
- fseek(xf86OSLinuxPCIFile, 0L, SEEK_SET);
- return FALSE;
- }
- dev = devfn >> 3;
- fn = devfn & 0x7;
- if (tag == pciTag(bus,dev,fn)) {
- *bits = 0;
- if (size[index] != 0) {
- Size = size[index] - ((PCIADDR_TYPE) 1);
- while (Size & ((PCIADDR_TYPE) 0x01)) {
- Size = Size >> ((PCIADDR_TYPE) 1);
- (*bits)++;
- }
- }
- fseek(xf86OSLinuxPCIFile, 0L, SEEK_SET);
- return TRUE;
- }
- }
- } while (res);
-
- fseek(xf86OSLinuxPCIFile, 0L, SEEK_SET);
- return FALSE;
-}
-
-
-
-/* Query the kvirt address (64bit) of a BAR range from TAG */
-Bool
-xf86GetPciOffsetFromOS(PCITAG tag, int index, unsigned long* bases)
-{
- FILE *file;
- char c[0x200];
- char *res;
- unsigned int bus, devfn, dev, fn;
- unsigned PCIADDR_TYPE offset[7];
- unsigned int num;
-
- if (index > 7)
- return FALSE;
-
- if (!(file = fopen("/proc/bus/pci/devices","r")))
- return FALSE;
- do {
- res = fgets(c,0x1ff,file);
- if (res) {
- num = sscanf(res,
- /*bus+dev vendorid deviceid irq */
- "%02x%02x\t%*04x%*04x\t%*x"
- /* 7 PCI resource base addresses */
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- /* 7 PCI resource sizes, and then optionally a driver name */
- "\t" PCIADDR_IGNORE_FMT
- "\t" PCIADDR_IGNORE_FMT
- "\t" PCIADDR_IGNORE_FMT
- "\t" PCIADDR_IGNORE_FMT
- "\t" PCIADDR_IGNORE_FMT
- "\t" PCIADDR_IGNORE_FMT
- "\t" PCIADDR_IGNORE_FMT,
- &bus,&devfn,&offset[0],&offset[1],&offset[2],&offset[3],
- &offset[4],&offset[5],&offset[6]);
- if (num != 9) { /* apparantly not 2.3 style */
- fclose(file);
- return FALSE;
- }
-
- dev = devfn >> 3;
- fn = devfn & 0x7;
- if (tag == pciTag(bus,dev,fn)) {
- /* return the offset for the index requested */
- *bases = offset[index];
- fclose(file);
- return TRUE;
- }
- }
- } while (res);
-
- fclose(file);
- return FALSE;
-}
-
-/* Query the kvirt address (64bit) of a BAR range from size for a given TAG */
-unsigned long
-xf86GetOSOffsetFromPCI(PCITAG tag, int space, unsigned long base)
-{
- FILE *file;
- char c[0x200];
- char *res;
- unsigned int bus, devfn, dev, fn;
- unsigned PCIADDR_TYPE offset[7];
- unsigned PCIADDR_TYPE size[7];
- unsigned int num;
- unsigned int ndx;
-
- if (!(file = fopen("/proc/bus/pci/devices","r")))
- return 0;
- do {
- res = fgets(c,0x1ff,file);
- if (res) {
- num = sscanf(res,
- /*bus+dev vendorid deviceid irq */
- "%02x%02x\t%*04x%*04x\t%*x"
- /* 7 PCI resource base addresses */
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- /* 7 PCI resource sizes, and then optionally a driver name */
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT
- "\t" PCIADDR_FMT,
- &bus,&devfn,&offset[0],&offset[1],&offset[2],&offset[3],
- &offset[4],&offset[5],&offset[6], &size[0], &size[1], &size[2],
- &size[3], &size[4], &size[5], &size[6]);
- if (num != 16) { /* apparantly not 2.3 style */
- fclose(file);
- return 0;
- }
-
- dev = devfn >> 3;
- fn = devfn & 0x7;
- if (tag == pciTag(bus,dev,fn)) {
- /* ok now look through all the BAR values of this device */
- for (ndx=0; ndx<7; ndx++) {
- unsigned long savePtr;
- /*
- * remember to lop of the last 4bits of the BAR values as they are
- * memory attributes
- */
- if (ndx == 6)
- savePtr = (0xFFFFFFF0) &
- pciReadLong(tag, PCI_CMD_BIOS_REG);
- else /* this the ROM bar */
- savePtr = (0xFFFFFFF0) &
- pciReadLong(tag, PCI_CMD_BASE_REG + (0x4 * ndx));
-
- /* find the index of the incoming base */
- if (base >= savePtr && base <= (savePtr + size[ndx])) {
- fclose(file);
- return (offset[ndx] & ~(0xFUL)) + (base - savePtr);
- }
- }
- }
- }
- } while (res);
-
- fclose(file);
- return 0;
-
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c
deleted file mode 100644
index 577439c54..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c
+++ /dev/null
@@ -1,1169 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c,v 1.10 2005/09/19 18:38:26 alanc Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c,v 3.67 2003/06/25 18:27:07 eich Exp $ */
-/*
- * Copyright 1992 by Orest Zborowski <obz@Kodak.com>
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Orest Zborowski and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Orest Zborowski
- * and David Wexelblat make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OREST ZBOROWSKI AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: lnx_video.c /main/9 1996/10/19 18:06:34 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <errno.h>
-#include <string.h>
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-#include "lnx.h"
-#ifdef __alpha__
-#include "shared/xf86Axp.h"
-#endif
-
-#ifdef HAS_MTRR_SUPPORT
-#include <asm/mtrr.h>
-#endif
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((void *)-1)
-#endif
-
-static Bool ExtendedEnabled = FALSE;
-
-#ifdef __ia64__
-
-#include "compiler.h"
-#include <sys/io.h>
-
-#elif !defined(__powerpc__) && \
- !defined(__mc68000__) && \
- !defined(__sparc__) && \
- !defined(__mips__)
-
-/*
- * Due to conflicts with "compiler.h", don't rely on <sys/io.h> to declare
- * these.
- */
-extern int ioperm(unsigned long __from, unsigned long __num, int __turn_on);
-extern int iopl(int __level);
-
-#endif
-
-#ifdef __alpha__
-
-# ifdef LIBC_IS_FIXED
-extern void sethae(unsigned long hae);
-# else
-# include <unistd.h>
-# define sethae(x) syscall(301,x);
-# endif
-
-/* define to test the Sparse addressing on a non-Jensen */
-# ifdef TEST_JENSEN_CODE
-# define isJensen (1)
-# else
-# define isJensen (axpSystem == JENSEN)
-# endif
-
-# define BUS_BASE bus_base
-
-#else
-
-#define BUS_BASE (0)
-
-#endif /* __alpha__ */
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-static pointer mapVidMem(int, unsigned long, unsigned long, int);
-static void unmapVidMem(int, pointer, unsigned long);
-#if defined (__alpha__)
-static pointer mapVidMemSparse(int, unsigned long, unsigned long, int);
-extern axpDevice lnxGetAXP(void);
-static void unmapVidMemSparse(int, pointer, unsigned long);
-# if defined(JENSEN_SUPPORT)
-static pointer mapVidMemJensen(int, unsigned long, unsigned long, int);
-static void unmapVidMemJensen(int, pointer, unsigned long);
-# endif
-static axpDevice axpSystem = -1;
-static Bool needSparse;
-static unsigned long hae_thresh;
-static unsigned long hae_mask;
-static unsigned long bus_base;
-static unsigned long sparse_size;
-#endif
-
-#ifdef HAS_MTRR_SUPPORT
-
-#define SPLIT_WC_REGIONS 1
-
-static pointer setWC(int, unsigned long, unsigned long, Bool, MessageType);
-static void undoWC(int, pointer);
-
-/* The file desc for /proc/mtrr. Once opened, left opened, and the mtrr
- driver will clean up when we exit. */
-#define MTRR_FD_UNOPENED (-1) /* We have yet to open /proc/mtrr */
-#define MTRR_FD_PROBLEM (-2) /* We tried to open /proc/mtrr, but had
- a problem. */
-static int mtrr_fd = MTRR_FD_UNOPENED;
-
-/* Open /proc/mtrr. FALSE on failure. Will always fail on Linux 2.0,
- and will fail on Linux 2.2 with MTRR support configured out,
- so verbosity should be chosen appropriately. */
-static Bool
-mtrr_open(int verbosity)
-{
- /* Only report absence of /proc/mtrr once. */
- static Bool warned = FALSE;
-
- char **fn;
- static char *mtrr_files[] = {
- "/dev/cpu/mtrr", /* Possible future name */
- "/proc/mtrr", /* Current name */
- NULL
- };
-
- if (mtrr_fd == MTRR_FD_UNOPENED) {
- /* So open it. */
- for (fn = mtrr_files; mtrr_fd < 0 && *fn; fn++)
- mtrr_fd = open(*fn, O_WRONLY);
-
- if (mtrr_fd < 0)
- mtrr_fd = MTRR_FD_PROBLEM;
- }
-
- if (mtrr_fd == MTRR_FD_PROBLEM) {
- /* To make sure we only ever warn once, need to check
- verbosity outside xf86MsgVerb */
- if (!warned && verbosity <= xf86GetVerbosity()) {
- xf86MsgVerb(X_WARNING, verbosity,
- "System lacks support for changing MTRRs\n");
- warned = TRUE;
- }
-
- return FALSE;
- }
- else
- return TRUE;
-}
-
-/*
- * We maintain a list of WC regions for each physical mapping so they can
- * be undone when unmapping.
- */
-
-struct mtrr_wc_region {
- struct mtrr_sentry sentry;
- Bool added; /* added WC or removed it */
- struct mtrr_wc_region * next;
-};
-
-
-static struct mtrr_wc_region *
-mtrr_cull_wc_region(int screenNum, unsigned long base, unsigned long size,
- MessageType from)
-{
- /* Some BIOS writers thought that setting wc over the mmio
- region of a graphics devices was a good idea. Try to fix
- it. */
-
- struct mtrr_gentry gent;
- struct mtrr_wc_region *wcreturn = NULL, *wcr;
- int count, ret=0;
-
- /* Linux 2.0 users should not get a warning without -verbose */
- if (!mtrr_open(2))
- return NULL;
-
- for (gent.regnum = 0;
- ioctl(mtrr_fd, MTRRIOC_GET_ENTRY, &gent) >= 0;
- gent.regnum++) {
- if (gent.type != MTRR_TYPE_WRCOMB
- || gent.base + gent.size <= base
- || base + size <= gent.base)
- continue;
-
- /* Found an overlapping region. Delete it. */
-
- wcr = xalloc(sizeof(*wcr));
- if (!wcr)
- return NULL;
- wcr->sentry.base = gent.base;
- wcr->sentry.size = gent.size;
- wcr->sentry.type = MTRR_TYPE_WRCOMB;
- wcr->added = FALSE;
-
- count = 3;
- while (count-- &&
- (ret = ioctl(mtrr_fd, MTRRIOC_KILL_ENTRY, &(wcr->sentry))) < 0);
-
- if (ret >= 0) {
- xf86DrvMsg(screenNum, from,
- "Removed MMIO write-combining range "
- "(0x%lx,0x%lx)\n",
- (unsigned long) gent.base, (unsigned long) gent.size);
- wcr->next = wcreturn;
- wcreturn = wcr;
- gent.regnum--;
- } else {
- xfree(wcr);
- xf86DrvMsgVerb(screenNum, X_WARNING, 0,
- "Failed to remove MMIO "
- "write-combining range (0x%lx,0x%lx)\n",
- gent.base, (unsigned long) gent.size);
- }
- }
- return wcreturn;
-}
-
-
-static struct mtrr_wc_region *
-mtrr_remove_offending(int screenNum, unsigned long base, unsigned long size,
- MessageType from)
-{
- struct mtrr_gentry gent;
- struct mtrr_wc_region *wcreturn = NULL, **wcr;
-
- if (!mtrr_open(2))
- return NULL;
-
- wcr = &wcreturn;
- for (gent.regnum = 0;
- ioctl(mtrr_fd, MTRRIOC_GET_ENTRY, &gent) >= 0; gent.regnum++ ) {
- if (gent.type == MTRR_TYPE_WRCOMB
- && ((gent.base >= base && gent.base + gent.size < base + size) ||
- (gent.base > base && gent.base + gent.size <= base + size))) {
- *wcr = mtrr_cull_wc_region(screenNum, gent.base, gent.size, from);
- if (*wcr) gent.regnum--;
- while(*wcr) {
- wcr = &((*wcr)->next);
- }
- }
- }
- return wcreturn;
-}
-
-
-static struct mtrr_wc_region *
-mtrr_add_wc_region(int screenNum, unsigned long base, unsigned long size,
- MessageType from)
-{
- struct mtrr_wc_region **wcr, *wcreturn, *curwcr;
-
- /*
- * There can be only one....
- */
-
- wcreturn = mtrr_remove_offending(screenNum, base, size, from);
- wcr = &wcreturn;
- while (*wcr) {
- wcr = &((*wcr)->next);
- }
-
- /* Linux 2.0 should not warn, unless the user explicitly asks for
- WC. */
-
- if (!mtrr_open(from == X_CONFIG ? 0 : 2))
- return wcreturn;
-
- *wcr = curwcr = xalloc(sizeof(**wcr));
- if (!curwcr)
- return wcreturn;
-
- curwcr->sentry.base = base;
- curwcr->sentry.size = size;
- curwcr->sentry.type = MTRR_TYPE_WRCOMB;
- curwcr->added = TRUE;
- curwcr->next = NULL;
-
-#if SPLIT_WC_REGIONS
- /*
- * Splits up the write-combining region if it is not aligned on a
- * size boundary.
- */
-
- {
- unsigned long lbase, d_size = 1;
- unsigned long n_size = size;
- unsigned long n_base = base;
-
- for (lbase = n_base, d_size = 1; !(lbase & 1);
- lbase = lbase >> 1, d_size <<= 1);
- while (d_size > n_size)
- d_size = d_size >> 1;
-#ifdef DEBUG
- ErrorF("WC_BASE: 0x%lx WC_END: 0x%lx\n",base,base+d_size-1);
-#endif
- n_base += d_size;
- n_size -= d_size;
- if (n_size) {
- xf86DrvMsgVerb(screenNum,X_INFO,3,"Splitting WC range: "
- "base: 0x%lx, size: 0x%lx\n",base,size);
- curwcr->next = mtrr_add_wc_region(screenNum, n_base, n_size,from);
- }
- curwcr->sentry.size = d_size;
- }
-
- /*****************************************************************/
-#endif /* SPLIT_WC_REGIONS */
-
- if (ioctl(mtrr_fd, MTRRIOC_ADD_ENTRY, &curwcr->sentry) >= 0) {
- /* Avoid printing on every VT switch */
- if (xf86ServerIsInitialising()) {
- xf86DrvMsg(screenNum, from,
- "Write-combining range (0x%lx,0x%lx)\n",
- base, size);
- }
- return wcreturn;
- }
- else {
- *wcr = curwcr->next;
- xfree(curwcr);
-
- /* Don't complain about the VGA region: MTRR fixed
- regions aren't currently supported, but might be in
- the future. */
- if ((unsigned long)base >= 0x100000) {
- xf86DrvMsgVerb(screenNum, X_WARNING, 0,
- "Failed to set up write-combining range "
- "(0x%lx,0x%lx)\n", base, size);
- }
- return wcreturn;
- }
-}
-
-static void
-mtrr_undo_wc_region(int screenNum, struct mtrr_wc_region *wcr)
-{
- struct mtrr_wc_region *p, *prev;
-
- if (mtrr_fd > 0) {
- p = wcr;
- while (p) {
- if (p->added)
- ioctl(mtrr_fd, MTRRIOC_DEL_ENTRY, &p->sentry);
- prev = p;
- p = p->next;
- xfree(prev);
- }
- }
-}
-
-static pointer
-setWC(int screenNum, unsigned long base, unsigned long size, Bool enable,
- MessageType from)
-{
- if (enable)
- return mtrr_add_wc_region(screenNum, base, size, from);
- else
- return mtrr_cull_wc_region(screenNum, base, size, from);
-}
-
-static void
-undoWC(int screenNum, pointer regioninfo)
-{
- mtrr_undo_wc_region(screenNum, regioninfo);
-}
-
-#endif /* HAS_MTRR_SUPPORT */
-
-void
-xf86OSInitVidMem(VidMemInfoPtr pVidMem)
-{
- pVidMem->linearSupported = TRUE;
-#ifdef __alpha__
- if (axpSystem == -1) {
- axpSystem = lnxGetAXP();
- if ((needSparse = (_bus_base_sparse() > 0))) {
- hae_thresh = xf86AXPParams[axpSystem].hae_thresh;
- hae_mask = xf86AXPParams[axpSystem].hae_mask;
- sparse_size = xf86AXPParams[axpSystem].size;
- }
- bus_base = _bus_base();
- }
- if (isJensen) {
-# ifndef JENSEN_SUPPORT
- FatalError("Jensen is not supported any more\n"
- "If you are intereseted in fixing Jensen support\n"
- "please contact xfree86@xfree86.org\n");
-# else
- xf86Msg(X_INFO,"Machine type is Jensen\n");
- pVidMem->mapMem = mapVidMemJensen;
- pVidMem->unmapMem = unmapVidMemJensen;
-# endif /* JENSEN_SUPPORT */
- } else if (needSparse) {
- xf86Msg(X_INFO,"Machine needs sparse mapping\n");
- pVidMem->mapMem = mapVidMemSparse;
- pVidMem->unmapMem = unmapVidMemSparse;
- } else {
- xf86Msg(X_INFO,"Machine type has 8/16 bit access\n");
- pVidMem->mapMem = mapVidMem;
- pVidMem->unmapMem = unmapVidMem;
- }
-#else
- pVidMem->mapMem = mapVidMem;
- pVidMem->unmapMem = unmapVidMem;
-#endif /* __alpha__ */
-
-
-#ifdef HAS_MTRR_SUPPORT
- pVidMem->setWC = setWC;
- pVidMem->undoWC = undoWC;
-#endif
- pVidMem->initialised = TRUE;
-}
-
-#ifdef __sparc__
-/* Basically, you simply cannot do this on Sparc. You have to do something portable
- * like use /dev/fb* or mmap() on /proc/bus/pci/X/Y nodes. -DaveM
- */
-static pointer mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- return NULL;
-}
-#else
-static pointer
-mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- pointer base;
- int fd;
- int mapflags = MAP_SHARED;
- int prot;
- memType realBase, alignOff;
-
- realBase = Base & ~(getpagesize() - 1);
- alignOff = Base - realBase;
-#ifdef DEBUG
- ErrorF("base: %lx, realBase: %lx, alignOff: %lx \n",
- Base,realBase,alignOff);
-#endif
-
-#if defined(__ia64__)
-#ifndef MAP_WRITECOMBINED
-#define MAP_WRITECOMBINED 0x00010000
-#endif
-#ifndef MAP_NONCACHED
-#define MAP_NONCACHED 0x00020000
-#endif
- if(flags & VIDMEM_FRAMEBUFFER)
- mapflags |= MAP_WRITECOMBINED;
- else
- mapflags |= MAP_NONCACHED;
-#endif
-
-#if 0
- /* this will disappear when people upgrade their kernels */
- fd = open(DEV_MEM,
- ((flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR) | O_SYNC);
-#else
- fd = open(DEV_MEM, (flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
-#endif
- if (fd < 0)
- {
- FatalError("xf86MapVidMem: failed to open " DEV_MEM " (%s)\n",
- strerror(errno));
- }
-
- if (flags & VIDMEM_READONLY)
- prot = PROT_READ;
- else
- prot = PROT_READ | PROT_WRITE;
-
- /* This requires linux-0.99.pl10 or above */
- base = mmap((caddr_t)0, Size + alignOff, prot, mapflags, fd,
- (off_t)realBase + BUS_BASE);
- close(fd);
- if (base == MAP_FAILED) {
- FatalError("xf86MapVidMem: Could not mmap framebuffer"
- " (0x%08lx,0x%lx) (%s)\n", Base, Size,
- strerror(errno));
- }
-#ifdef DEBUG
- ErrorF("base: %lx aligned base: %lx\n",base, base + alignOff);
-#endif
- return (char *)base + alignOff;
-}
-#endif /* !(__sparc__) */
-
-static void
-unmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- memType alignOff = (memType)Base
- - ((memType)Base & ~(getpagesize() - 1));
-
-#ifdef DEBUG
- ErrorF("alignment offset: %lx\n",alignOff);
-#endif
- munmap((caddr_t)((memType)Base - alignOff), (Size + alignOff));
-}
-
-
-/***************************************************************************/
-/* I/O Permissions section */
-/***************************************************************************/
-
-#if defined(__powerpc__)
-volatile unsigned char *ioBase = NULL;
-
-#ifndef __NR_pciconfig_iobase
-#define __NR_pciconfig_iobase 200
-#endif
-
-#endif
-
-Bool
-xf86EnableIO(void)
-{
-#if defined(__powerpc__)
- int fd;
- unsigned int ioBase_phys;
-#endif
-
- if (ExtendedEnabled)
- return TRUE;
-
-#if defined(__powerpc__)
- ioBase_phys = syscall(__NR_pciconfig_iobase, 2, 0, 0);
-
- fd = open("/dev/mem", O_RDWR);
- if (ioBase == NULL) {
- ioBase = (volatile unsigned char *)mmap(0, 0x20000,
- PROT_READ | PROT_WRITE, MAP_SHARED, fd,
- ioBase_phys);
-/* Should this be fatal or just a warning? */
-#if 0
- if (ioBase == MAP_FAILED) {
- xf86Msg(X_WARNING,
- "xf86EnableIOPorts: Failed to map iobase (%s)\n",
- strerror(errno));
- return FALSE;
- }
-#endif
- }
- close(fd);
-#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__)
- if (ioperm(0, 1024, 1) || iopl(3)) {
- if (errno == ENODEV)
- ErrorF("xf86EnableIOPorts: no I/O ports found\n");
- else
- FatalError("xf86EnableIOPorts: failed to set IOPL"
- " for I/O (%s)\n", strerror(errno));
- return FALSE;
- }
-# if !defined(__alpha__)
- ioperm(0x40,4,0); /* trap access to the timer chip */
- ioperm(0x60,4,0); /* trap access to the keyboard controller */
-# endif
-#endif
- ExtendedEnabled = TRUE;
-
- return TRUE;
-}
-
-void
-xf86DisableIO(void)
-{
- if (!ExtendedEnabled)
- return;
-#if defined(__powerpc__)
- munmap(ioBase, 0x20000);
- ioBase = NULL;
-#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__)
- iopl(0);
- ioperm(0, 1024, 0);
-#endif
- ExtendedEnabled = FALSE;
-
- return;
-}
-
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-/* XXX The #ifdefs should be made simpler. */
-
-Bool
-xf86DisableInterrupts()
-{
-#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__sh__) && !defined(__hppa__)
- if (!ExtendedEnabled)
- if (iopl(3) || ioperm(0, 1024, 1))
- return (FALSE);
-#endif
-#if defined(__alpha__) || defined(__mc68000__) || defined(__powerpc__) || defined(__sparc__) || defined(__mips__) || defined(__arm__) || defined(__sh__) || defined(__ia64__) || defined(__hppa__)
-#else
-# ifdef __GNUC__
-# if defined(__ia64__)
-# if 0
- __asm__ __volatile__ (";; rsm psr.i;; srlz.d" ::: "memory");
-# endif
-# else
- __asm__ __volatile__("cli");
-# endif
-# else
- asm("cli");
-# endif
-#endif
-#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__ia64__) && !defined(__hppa__)
- if (!ExtendedEnabled) {
- iopl(0);
- ioperm(0, 1024, 0);
- }
-
-#endif
- return (TRUE);
-}
-
-void
-xf86EnableInterrupts()
-{
-#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__sh__) && !defined(__hppa__)
- if (!ExtendedEnabled)
- if (iopl(3) || ioperm(0, 1024, 1))
- return;
-#endif
-#if defined(__alpha__) || defined(__mc68000__) || defined(__powerpc__) || defined(__sparc__) || defined(__mips__) || defined(__arm__) || defined(__sh__) || defined(__ia64__) || defined(__hppa__)
-#else
-# ifdef __GNUC__
-# if defined(__ia64__)
-# if 0
- __asm__ __volatile__ (";; ssm psr.i;; srlz.d" ::: "memory");
-# endif
-# else
- __asm__ __volatile__("sti");
-# endif
-# else
- asm("sti");
-# endif
-#endif
-#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__ia64__) && !defined(__hppa__)
- if (!ExtendedEnabled) {
- iopl(0);
- ioperm(0, 1024, 0);
- }
-#endif
- return;
-}
-
-#if defined (__alpha__)
-
-#define vuip volatile unsigned int *
-
-extern int readDense8(pointer Base, register unsigned long Offset);
-extern int readDense16(pointer Base, register unsigned long Offset);
-extern int readDense32(pointer Base, register unsigned long Offset);
-extern void
-writeDenseNB8(int Value, pointer Base, register unsigned long Offset);
-extern void
-writeDenseNB16(int Value, pointer Base, register unsigned long Offset);
-extern void
-writeDenseNB32(int Value, pointer Base, register unsigned long Offset);
-extern void
-writeDense8(int Value, pointer Base, register unsigned long Offset);
-extern void
-writeDense16(int Value, pointer Base, register unsigned long Offset);
-extern void
-writeDense32(int Value, pointer Base, register unsigned long Offset);
-
-static int readSparse8(pointer Base, register unsigned long Offset);
-static int readSparse16(pointer Base, register unsigned long Offset);
-static int readSparse32(pointer Base, register unsigned long Offset);
-static void
-writeSparseNB8(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparseNB16(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparseNB32(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparse8(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparse16(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparse32(int Value, pointer Base, register unsigned long Offset);
-
-#define DENSE_BASE 0x2ff00000000UL
-#define SPARSE_BASE 0x30000000000UL
-
-static unsigned long msb_set = 0;
-
-static pointer
-mapVidMemSparse(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- int fd, prot;
- unsigned long ret, rets = 0;
-
- static Bool was_here = FALSE;
-
- if (!was_here) {
- was_here = TRUE;
-
- xf86WriteMmio8 = writeSparse8;
- xf86WriteMmio16 = writeSparse16;
- xf86WriteMmio32 = writeSparse32;
- xf86WriteMmioNB8 = writeSparseNB8;
- xf86WriteMmioNB16 = writeSparseNB16;
- xf86WriteMmioNB32 = writeSparseNB32;
- xf86ReadMmio8 = readSparse8;
- xf86ReadMmio16 = readSparse16;
- xf86ReadMmio32 = readSparse32;
- }
-
- fd = open(DEV_MEM, (flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
- if (fd < 0) {
- FatalError("xf86MapVidMem: failed to open " DEV_MEM " (%s)\n",
- strerror(errno));
- }
-
-#if 0
- xf86Msg(X_INFO,"mapVidMemSparse: try Base 0x%lx size 0x%lx flags 0x%x\n",
- Base, Size, flags);
-#endif
-
- if (flags & VIDMEM_READONLY)
- prot = PROT_READ;
- else
- prot = PROT_READ | PROT_WRITE;
-
- /* This requirers linux-0.99.pl10 or above */
-
- /*
- * Always do DENSE mmap, since read32/write32 currently require it.
- */
- ret = (unsigned long)mmap((caddr_t)(DENSE_BASE + Base), Size,
- prot, MAP_SHARED, fd,
- (off_t) (bus_base + Base));
-
- /*
- * Do SPARSE mmap only when MMIO and not MMIO_32BIT, or FRAMEBUFFER
- * and SPARSE (which should require the use of read/write macros).
- *
- * By not SPARSE mmapping an 8MB framebuffer, we can save approx. 256K
- * bytes worth of pagetable (32 pages).
- */
- if (((flags & VIDMEM_MMIO) && !(flags & VIDMEM_MMIO_32BIT)) ||
- ((flags & VIDMEM_FRAMEBUFFER) && (flags & VIDMEM_SPARSE)))
- {
- rets = (unsigned long)mmap((caddr_t)(SPARSE_BASE + (Base << 5)),
- Size << 5, prot, MAP_SHARED, fd,
- (off_t) _bus_base_sparse() + (Base << 5));
- }
-
- close(fd);
-
- if (ret == (unsigned long)MAP_FAILED) {
- FatalError("xf86MapVidMemSparse: Could not (dense) mmap fb (%s)\n",
- strerror(errno));
- }
-
- if (((flags & VIDMEM_MMIO) && !(flags & VIDMEM_MMIO_32BIT)) ||
- ((flags & VIDMEM_FRAMEBUFFER) && (flags & VIDMEM_SPARSE)))
- {
- if (rets == (unsigned long)MAP_FAILED ||
- rets != (SPARSE_BASE + (Base << 5)))
- {
- FatalError("mapVidMemSparse: Could not (sparse) mmap fb (%s)\n",
- strerror(errno));
- }
- }
-
-#if 1
- if (rets)
- xf86Msg(X_INFO,"mapVidMemSparse: mapped Base 0x%lx size 0x%lx"
- " to DENSE at 0x%lx and SPARSE at 0x%lx\n",
- Base, Size, ret, rets);
- else
- xf86Msg(X_INFO,"mapVidMemSparse: mapped Base 0x%lx size 0x%lx"
- " to DENSE only at 0x%lx\n",
- Base, Size, ret);
-
-#endif
- return (pointer) ret;
-}
-
-static void
-unmapVidMemSparse(int ScreenNum, pointer Base, unsigned long Size)
-{
- unsigned long Offset = (unsigned long)Base - DENSE_BASE;
-#if 1
- xf86Msg(X_INFO,"unmapVidMemSparse: unmapping Base 0x%lx Size 0x%lx\n",
- Base, Size);
-#endif
- /* Unmap DENSE always. */
- munmap((caddr_t)Base, Size);
-
- /* Unmap SPARSE always, and ignore error in case we did not map it. */
- munmap((caddr_t)(SPARSE_BASE + (Offset << 5)), Size << 5);
-}
-
-static int
-readSparse8(pointer Base, register unsigned long Offset)
-{
- register unsigned long result, shift;
- register unsigned long msb;
-
- mem_barrier();
- Offset += (unsigned long)Base - DENSE_BASE;
- shift = (Offset & 0x3) << 3;
- if (Offset >= (hae_thresh)) {
- msb = Offset & hae_mask;
- Offset -= msb;
- if (msb_set != msb) {
- sethae(msb);
- msb_set = msb;
- }
- }
-
- mem_barrier();
- result = *(vuip) (SPARSE_BASE + (Offset << 5));
- result >>= shift;
- return 0xffUL & result;
-}
-
-static int
-readSparse16(pointer Base, register unsigned long Offset)
-{
- register unsigned long result, shift;
- register unsigned long msb;
-
- mem_barrier();
- Offset += (unsigned long)Base - DENSE_BASE;
- shift = (Offset & 0x2) << 3;
- if (Offset >= hae_thresh) {
- msb = Offset & hae_mask;
- Offset -= msb;
- if (msb_set != msb) {
- sethae(msb);
- msb_set = msb;
- }
- }
-
- mem_barrier();
- result = *(vuip)(SPARSE_BASE + (Offset<<5) + (1<<(5-2)));
- result >>= shift;
- return 0xffffUL & result;
-}
-
-static int
-readSparse32(pointer Base, register unsigned long Offset)
-{
- /* NOTE: this is really using DENSE. */
- mem_barrier();
- return *(vuip)((unsigned long)Base+(Offset));
-}
-
-static void
-writeSparse8(int Value, pointer Base, register unsigned long Offset)
-{
- register unsigned long msb;
- register unsigned int b = Value & 0xffU;
-
- write_mem_barrier();
- Offset += (unsigned long)Base - DENSE_BASE;
- if (Offset >= hae_thresh) {
- msb = Offset & hae_mask;
- Offset -= msb;
- if (msb_set != msb) {
- sethae(msb);
- msb_set = msb;
- }
- }
-
- write_mem_barrier();
- *(vuip) (SPARSE_BASE + (Offset << 5)) = b * 0x01010101;
-}
-
-static void
-writeSparse16(int Value, pointer Base, register unsigned long Offset)
-{
- register unsigned long msb;
- register unsigned int w = Value & 0xffffU;
-
- write_mem_barrier();
- Offset += (unsigned long)Base - DENSE_BASE;
- if (Offset >= hae_thresh) {
- msb = Offset & hae_mask;
- Offset -= msb;
- if (msb_set != msb) {
- sethae(msb);
- msb_set = msb;
- }
- }
-
- write_mem_barrier();
- *(vuip)(SPARSE_BASE + (Offset<<5) + (1<<(5-2))) = w * 0x00010001;
-}
-
-static void
-writeSparse32(int Value, pointer Base, register unsigned long Offset)
-{
- /* NOTE: this is really using DENSE. */
- write_mem_barrier();
- *(vuip)((unsigned long)Base + (Offset)) = Value;
- return;
-}
-
-static void
-writeSparseNB8(int Value, pointer Base, register unsigned long Offset)
-{
- register unsigned long msb;
- register unsigned int b = Value & 0xffU;
-
- Offset += (unsigned long)Base - DENSE_BASE;
- if (Offset >= hae_thresh) {
- msb = Offset & hae_mask;
- Offset -= msb;
- if (msb_set != msb) {
- sethae(msb);
- msb_set = msb;
- }
- }
- *(vuip) (SPARSE_BASE + (Offset << 5)) = b * 0x01010101;
-}
-
-static void
-writeSparseNB16(int Value, pointer Base, register unsigned long Offset)
-{
- register unsigned long msb;
- register unsigned int w = Value & 0xffffU;
-
- Offset += (unsigned long)Base - DENSE_BASE;
- if (Offset >= hae_thresh) {
- msb = Offset & hae_mask;
- Offset -= msb;
- if (msb_set != msb) {
- sethae(msb);
- msb_set = msb;
- }
- }
- *(vuip)(SPARSE_BASE+(Offset<<5)+(1<<(5-2))) = w * 0x00010001;
-}
-
-static void
-writeSparseNB32(int Value, pointer Base, register unsigned long Offset)
-{
- /* NOTE: this is really using DENSE. */
- *(vuip)((unsigned long)Base + (Offset)) = Value;
- return;
-}
-
-void (*xf86WriteMmio8)(int Value, pointer Base, unsigned long Offset)
- = writeDense8;
-void (*xf86WriteMmio16)(int Value, pointer Base, unsigned long Offset)
- = writeDense16;
-void (*xf86WriteMmio32)(int Value, pointer Base, unsigned long Offset)
- = writeDense32;
-void (*xf86WriteMmioNB8)(int Value, pointer Base, unsigned long Offset)
- = writeDenseNB8;
-void (*xf86WriteMmioNB16)(int Value, pointer Base, unsigned long Offset)
- = writeDenseNB16;
-void (*xf86WriteMmioNB32)(int Value, pointer Base, unsigned long Offset)
- = writeDenseNB32;
-int (*xf86ReadMmio8)(pointer Base, unsigned long Offset)
- = readDense8;
-int (*xf86ReadMmio16)(pointer Base, unsigned long Offset)
- = readDense16;
-int (*xf86ReadMmio32)(pointer Base, unsigned long Offset)
- = readDense32;
-
-#ifdef JENSEN_SUPPORT
-
-static int
-readSparseJensen8(pointer Base, register unsigned long Offset);
-static int
-readSparseJensen16(pointer Base, register unsigned long Offset);
-static int
-readSparseJensen32(pointer Base, register unsigned long Offset);
-static void
-writeSparseJensen8(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparseJensen16(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparseJensen32(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparseJensenNB8(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparseJensenNB16(int Value, pointer Base, register unsigned long Offset);
-static void
-writeSparseJensenNB32(int Value, pointer Base, register unsigned long Offset);
-
-/*
- * The Jensen lacks dense memory, thus we have to address the bus via
- * the sparse addressing scheme.
- *
- * Martin Ostermann (ost@comnets.rwth-aachen.de) - Apr.-Sep. 1996
- */
-
-#ifdef TEST_JENSEN_CODE
-#define SPARSE (5)
-#else
-#define SPARSE (7)
-#endif
-
-#define JENSEN_SHIFT(x) ((long)x<<SPARSE)
-
-static pointer
-mapVidMemJensen(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- pointer base;
- int fd, prot;
-
- xf86WriteMmio8 = writeSparseJensen8;
- xf86WriteMmio16 = writeSparseJensen16;
- xf86WriteMmio32 = writeSparseJensen32;
- xf86WriteMmioNB8 = writeSparseJensenNB8;
- xf86WriteMmioNB16 = writeSparseJensenNB16;
- xf86WriteMmioNB32 = writeSparseJensenNB32;
- xf86ReadMmio8 = readSparseJensen8;
- xf86ReadMmio16 = readSparseJensen16;
- xf86ReadMmio32 = readSparseJensen32;
-
- fd = open(DEV_MEM, (flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
- if (fd < 0) {
- FatalError("xf86MapVidMem: failed to open " DEV_MEM " (%s)\n",
- strerror(errno));
- }
-
- if (flags & VIDMEM_READONLY)
- prot = PROT_READ;
- else
- prot = PROT_READ | PROT_WRITE;
-
- /* This requires linux-0.99.pl10 or above */
- base = mmap((caddr_t)0, JENSEN_SHIFT(Size),
- prot, MAP_SHARED, fd,
- (off_t)(JENSEN_SHIFT((off_t)Base) + _bus_base_sparse()));
- close(fd);
- if (base == MAP_FAILED) {
- FatalError("xf86MapVidMem: Could not mmap framebuffer"
- " (0x%08x,0x%x) (%s)\n", Base, Size,
- strerror(errno));
- }
- return base;
-}
-
-static void
-unmapVidMemJensen(int ScreenNum, pointer Base, unsigned long Size)
-{
- munmap((caddr_t)Base, JENSEN_SHIFT(Size));
-}
-
-static int
-readSparseJensen8(pointer Base, register unsigned long Offset)
-{
- register unsigned long result, shift;
-
- mem_barrier();
- shift = (Offset & 0x3) << 3;
-
- result = *(vuip) ((unsigned long)Base + (Offset << SPARSE));
-
- result >>= shift;
- return 0xffUL & result;
-}
-
-static int
-readSparseJensen16(pointer Base, register unsigned long Offset)
-{
- register unsigned long result, shift;
-
- mem_barrier();
- shift = (Offset & 0x2) << 3;
-
- result = *(vuip)((unsigned long)Base+(Offset<<SPARSE)+(1<<(SPARSE-2)));
-
- result >>= shift;
- return 0xffffUL & result;
-}
-
-static int
-readSparseJensen32(pointer Base, register unsigned long Offset)
-{
- register unsigned long result;
-
- mem_barrier();
- result = *(vuip)((unsigned long)Base+(Offset<<SPARSE)+(3<<(SPARSE-2)));
-
- return result;
-}
-
-static void
-writeSparseJensen8(int Value, pointer Base, register unsigned long Offset)
-{
- register unsigned int b = Value & 0xffU;
-
- write_mem_barrier();
- *(vuip) ((unsigned long)Base + (Offset << SPARSE)) = b * 0x01010101;
-}
-
-static void
-writeSparseJensen16(int Value, pointer Base, register unsigned long Offset)
-{
- register unsigned int w = Value & 0xffffU;
-
- write_mem_barrier();
- *(vuip)((unsigned long)Base+(Offset<<SPARSE)+(1<<(SPARSE-2))) =
- w * 0x00010001;
-}
-
-static void
-writeSparseJensen32(int Value, pointer Base, register unsigned long Offset)
-{
- write_mem_barrier();
- *(vuip)((unsigned long)Base+(Offset<<SPARSE)+(3<<(SPARSE-2))) = Value;
-}
-
-static void
-writeSparseJensenNB8(int Value, pointer Base, register unsigned long Offset)
-{
- register unsigned int b = Value & 0xffU;
-
- *(vuip) ((unsigned long)Base + (Offset << SPARSE)) = b * 0x01010101;
-}
-
-static void
-writeSparseJensenNB16(int Value, pointer Base, register unsigned long Offset)
-{
- register unsigned int w = Value & 0xffffU;
-
- *(vuip)((unsigned long)Base+(Offset<<SPARSE)+(1<<(SPARSE-2))) =
- w * 0x00010001;
-}
-
-static void
-writeSparseJensenNB32(int Value, pointer Base, register unsigned long Offset)
-{
- *(vuip)((unsigned long)Base+(Offset<<SPARSE)+(3<<(SPARSE-2))) = Value;
-}
-#endif /* JENSEN_SUPPORT */
-
-#endif /* __alpha__ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/Imakefile
deleted file mode 100644
index 350856905..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/Imakefile
+++ /dev/null
@@ -1,62 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/Imakefile,v 3.23 2002/10/17 02:22:46 dawes Exp $
-#include <Server.tmpl>
-
-#if AllowSIGIO
-SIGIO=sigio
-#else
-SIGIO=sigiostubs
-#endif
-
-#if !defined(PpcArchitecture)
-#if HasMTRRSupport
-MTRRDEFINES = -DHAS_MTRR_SUPPORT
-#endif
-IOPERM_SRCS=ioperm_noop.c
-IOPERM_OBJS=ioperm_noop.o
-#endif
-
-#if defined(PpcArchitecture)
-PPC_SRCS=lynx_noinline.c lynx_ppc.c
-PPC_OBJS=lynx_noinline.o lynx_ppc.o
-#endif
-
-MOUSESRC = lynx_mouse.c
-MOUSEOBJ = lynx_mouse.o
-
-SRCS = lynx_init.c lynx_video.c lynx_io.c lynx_mmap.c \
- VTsw_usl.c std_kbdEv.c posix_tty.c $(MOUSESRC) \
- $(IOPERM_SRCS) $(PPC_SRCS) libc_wrapper.c stdResource.c stdPci.c \
- vidmem.c $(SIGIO).c pm_noop.c kmod_noop.c agp_noop.c
-
-OBJS = lynx_init.o lynx_video.o lynx_io.o lynx_mmap.o \
- VTsw_usl.o std_kbdEv.o posix_tty.o $(MOUSEOBJ) \
- $(IOPERM_OBJS) $(PPC_OBJS) libc_wrapper.o stdResource.o stdPci.o \
- vidmem.o $(SIGIO).o pm_noop.o kmod_noop.o agp_noop.o
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(EXTINCSRC) \
- -I$(ENV_PREFIX)/sys/lynx.os -I$(DRMSRCDIR)/shared-core
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(RESDEFINES) $(MTRRDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-#if !defined(PpcArchitecture)
-LinkSourceFile(ioperm_noop.c,../shared)
-#endif
-LinkSourceFile(VTsw_usl.c,../shared)
-LinkSourceFile(std_kbdEv.c,../shared)
-LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(vidmem.c,../shared)
-LinkSourceFile($(SIGIO).c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(agp_noop.c,../shared)
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_init.c
deleted file mode 100644
index 84db50127..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_init.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright 1993 by Thomas Mueller
- *
- * 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, and that the name of Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_init.c,v 3.2 1998/07/25 16:56:45 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-static int VTnum = -1;
-
-void
-xf86OpenConsole()
-{
- struct vt_mode VT;
- char vtname1[11];
- int fd, pgrp;
- MessageType from = X_PROBED;
-
- if (serverGeneration == 1)
- {
- /* check if we're run with euid==0 */
- if (geteuid() != 0)
- {
- FatalError("xf86OpenConsole: Server must be suid root\n");
- }
-
- /*
- * setup the virtual terminal manager
- * NOTE:
- * We use the out-of-the-box atc terminal driver,
- * not the GE contributed vdt driver.
- * Also, we do setup signals for VT switching which
- * is not really necessary because we don't feed the
- * VT switch keystrokes to the kernel in xf86Events.c
- * (it bombs occasionally...)
- */
- if (VTnum != -1)
- {
- xf86Info.vtno = VTnum;
- from = X_CMDLINE;
- }
- else
- {
- /* We could use /dev/con which is usually a symlink
- * to /dev/atc0 but one could configure the system
- * to use a serial line as console device, so to
- * be sure we take /dev/atc0.
- */
- if ((fd = open("/dev/atc0",O_WRONLY,0)) < 0)
- {
- FatalError(
- "xf86OpenConsole: Cannot open /dev/atc0 (%s)\n",
- strerror(errno));
- }
- if ((ioctl(fd, VT_OPENQRY, &xf86Info.vtno) < 0) ||
- (xf86Info.vtno == -1))
- {
- FatalError("xf86OpenConsole: Cannot find a free VT\n");
- }
- close(fd);
- }
- xf86Msg(from, "using VT number %d\n", xf86Info.vtno);
-
- sprintf(vtname1,"/dev/atc%d",xf86Info.vtno);
-
- pgrp = getpgrp(); /* POSIX version ! */
- ioctl(xf86Info.consoleFd, TIOCSPGRP, &pgrp);
-
- if ((xf86Info.consoleFd = open(vtname1,O_RDWR|O_NDELAY,0)) < 0)
- {
- FatalError(
- "xf86OpenConsole: Cannot open %s (%s)\n",
- vtname1, strerror(errno));
- }
- /* change ownership of the vt */
- chown(vtname1, getuid(), getgid());
-
- /*
- * now get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
- }
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0)
- {
- FatalError("xf86OpenConsole: VT_GETMODE failed\n");
- }
-
- /* for future use... */
- signal(SIGUSR1, xf86VTRequest);
-
- VT.mode = VT_PROCESS;
- VT.relsig = SIGUSR1;
- VT.acqsig = SIGUSR1;
- if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0)
- {
- FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed\n");
- }
- }
- else
- {
- /* serverGeneration != 1 */
- /*
- * now get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
- }
- /*
- * If the server doesn't have the VT when the reset occurs,
- * this is to make sure we don't continue until the activate
- * signal is received.
- */
- if (!xf86Screens[0]->vtSema)
- sleep(5);
- }
- return;
-}
-
-void
-xf86CloseConsole()
-{
- struct vt_mode VT;
-
-#if 0
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno);
- ioctl(xf86Info.consoleFd, VT_WAITACTIVE, 0);
-#endif
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) != -1)
- {
- VT.mode = VT_AUTO;
- ioctl(xf86Info.consoleFd, VT_SETMODE, &VT); /* set dflt vt handling */
- }
- close(xf86Info.consoleFd); /* make the vt-manager happy */
- return;
-}
-
-int
-xf86ProcessArgument(int argc, char *argv[], int i)
-{
- if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
- {
- if (sscanf(argv[i], "vt%2d", &VTnum) == 0)
- {
- UseMsg();
- VTnum = -1;
- return(0);
- }
- return(1);
- }
- return(0);
-}
-
-void
-xf86UseMsg()
-{
- ErrorF("vtXX use the specified VT number\n");
- return;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_io.c
deleted file mode 100644
index afd3f8962..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_io.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright 1993 by Thomas Mueller
- *
- * 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, and that the name of Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_io.c,v 3.9 2002/10/11 01:40:35 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#if defined(KDMKTONE) || defined(KIOCSOUND)
-/* Lynx 2.2.1 has sophisticated atc stuff.... */
-void
-xf86SoundKbdBell(int loudness, int pitch, int duration)
-{
- if (loudness && pitch)
- {
-#ifdef KDMKTONE
- /*
- * If we have KDMKTONE use it to avoid putting the server
- * to sleep
- */
- ioctl(xf86Info.consoleFd, KDMKTONE,
- (pitch & 0xffff) |
- (((unsigned long)duration *
- loudness / 50) << 16));
-#else
- ioctl(xf86Info.consoleFd, KIOCSOUND, pitch);
- usleep(xf86Info.bell_duration * loudness * 20);
- ioctl(xf86Info.consoleFd, KIOCSOUND, 0);
-#endif
- }
-}
-
-#else
-
-/* this is pulled from /sys/drivers/vt100/atbeep.c */
-
-#define SPEAKER_CONTROL 0x61
-#define TIMER_CONTROL 0x43
-#define TIMER_DATA 0x42
-#define TIMER_LOAD_CMD 0xb6
-
-#define TIMER_CONSTANT 1193280
-#define FREQ_LO(f) ((TIMER_CONSTANT / (f)) % 256)
-#define FREQ_HI(f) ((TIMER_CONSTANT / (f)) / 256)
-
-void
-xf86SoundKbdBell(int loudness, int pitch, int duration)
-{
- int flo = FREQ_LO(pitch);
- int fhi = FREQ_HI(pitch);
-
- outb(TIMER_CONTROL, TIMER_LOAD_CMD);
- outb(TIMER_DATA, flo);
- outb(TIMER_DATA, fhi);
-
- /* speaker on */
- outb(SPEAKER_CONTROL, inb(SPEAKER_CONTROL) | 3);
- usleep(xf86Info.bell_duration * loudness * 20);
- /* speaker off */
- outb(SPEAKER_CONTROL, inb(SPEAKER_CONTROL) & ~3);
-}
-#endif
-
-void
-xf86SetKbdLeds(int leds)
-{
-#ifdef KBD_SET_LEDS
- ioctl(xf86Info.consoleFd, KBD_SET_LEDS, &leds);
-#endif
-}
-
-int
-xf86GetKbdLeds()
-{
-#ifdef KBD_SET_LEDS
- int leds;
-
- if (ioctl(xf86Info.consoleFd, KBD_SET_LEDS, &leds) < 0)
- return 0;
-
- return leds;
-#endif
- return 0;
-}
-
-void
-xf86SetKbdRepeat(char rad)
-{
-}
-
-static struct termio kbdtty;
-
-void
-xf86KbdInit()
-{
- ioctl(xf86Info.consoleFd, TCGETA, &kbdtty);
-}
-
-int
-xf86KbdOn()
-{
- struct termio nTty;
-
- /* set CAPS_LOCK to behave as CAPS_LOCK not as CTRL */
- write(xf86Info.consoleFd, "\033<", 2);
-
- /* enable scan mode */
- ioctl(xf86Info.consoleFd, TIO_ENSCANMODE, NULL);
-
- nTty = kbdtty;
- nTty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- nTty.c_oflag = 0;
- nTty.c_cflag = CREAD | CS8;
- nTty.c_lflag = 0;
- nTty.c_cc[VTIME]=0;
- nTty.c_cc[VMIN]=1;
- ioctl(xf86Info.consoleFd, TCSETA, &nTty);
-
- return(xf86Info.consoleFd);
-}
-
-int
-xf86KbdOff()
-{
- /* disable scan mode */
- ioctl(xf86Info.consoleFd, TIO_DISSCANMODE, NULL);
- ioctl(xf86Info.consoleFd, TCSETA, &kbdtty);
- return(xf86Info.consoleFd);
-}
-
-#include "xf86OSKbd.h"
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_mmap.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_mmap.c
deleted file mode 100644
index c00b6700f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_mmap.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 1993 by Thomas Mueller
- *
- * 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, and that the name of Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_mmap.c,v 3.5 1998/08/29 05:43:58 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/*
- * Read BIOS using smem_create facility
- */
-
-int
-xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
- int Len)
-{
-#if defined(__powerpc__)
- xf86Msg(X_WARNING, "xf86ReadBios: no BIOS-probe on PowerPC\n");
- return(-1);
-#else
- char *p;
- int mlen;
-
- mlen = (Offset + Len + 4095) & ~4095;
- p = smem_create("BIOS-probe", (char *)Base, mlen, SM_READ);
- if (p == NULL)
- {
- /* check if there is a stale segment around */
- if (smem_remove("BIOS-probe") == 0) {
- xf86Msg(X_INFO,
- "xf86ReadBios: removed stale smem_ segment\n");
- p = smem_create("BIOS-probe", (char *)Base, mlen, SM_READ);
- }
- if (p == NULL) {
- xf86Msg(X_WARNING, "xf86ReadBios: Failed to smem_create "
- "Base %x len %x %s \n",
- Base, mlen, strerror(errno));
- return(-1);
- }
- }
- memcpy(Buf, p + Offset, Len);
- smem_create(NULL, p, 0, SM_DETACH);
- smem_remove("BIOS-probe");
- return(Len);
-#endif
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_mouse.c
deleted file mode 100644
index 68aca5d38..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_mouse.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_mouse.c,v 1.1 1999/05/22 08:40:14 dawes Exp $ */
-
-/*
- * Copyright 1999 by The XFree86 Project, Inc.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-
-static int
-SupportedInterfaces(void)
-{
- /* XXX Need to check this. */
- return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_AUTO;
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
- p->SupportedInterfaces = SupportedInterfaces;
- return p;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_noinline.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_noinline.c
deleted file mode 100644
index 1c12f62f9..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_noinline.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_noinline.c,v 3.5 2000/07/31 23:25:18 tsi Exp $ */
-/*
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#if /* NO_INLINE && */ defined(__powerpc__)
-
-#include "xf86Pci.h"
-
-extern volatile unsigned char *ioBase;
-
-void
-eieio()
-{
- __asm__ __volatile__ ("eieio");
-}
-
-unsigned long
-ldl_brx(volatile unsigned char *base, int ndx)
-{
- register unsigned long tmp = *(volatile unsigned long *)(base+ndx);
- return( ((tmp & 0x000000ff) << 24) |
- ((tmp & 0x0000ff00) << 8) |
- ((tmp & 0x00ff0000) >> 8) |
- ((tmp & 0xff000000) >> 24) );
-}
-
-unsigned short
-ldw_brx(volatile unsigned char *base, int ndx)
-{
- register unsigned short tmp = *(volatile unsigned short *)(base+ndx);
- return((tmp << 8) | (tmp >> 8));
-}
-
-void
-stl_brx(unsigned long val, volatile unsigned char *base, int ndx)
-{
- unsigned char *p = (unsigned char *)&val;
- unsigned long tmp = (p[3] << 24) | (p[2] << 16) | (p[1] << 8) | (p[0] << 0);
- *(volatile unsigned long *)(base+ndx) = tmp;
-}
-
-void
-stw_brx(unsigned short val, volatile unsigned char *base, int ndx)
-{
- unsigned char *p = (unsigned char *)&val;
- unsigned short tmp = (p[1] << 8) | p[0];
- *(volatile unsigned short *)(base+ndx) = tmp;
-}
-
-void
-outb(IOADDRESS port, unsigned char value)
-{
- *((volatile unsigned char *)(ioBase + port)) = value; eieio();
-}
-
-void
-outw(IOADDRESS port, unsigned short value)
-{
- stw_brx(value, ioBase, port); eieio();
-}
-
-void
-outl(IOADDRESS port, unsigned int value)
-{
- stl_brx(value, ioBase, port); eieio();
-}
-
-unsigned char
-inb(IOADDRESS port)
-{
- unsigned char val;
-
- val = *((volatile unsigned char *)(ioBase + port)); eieio();
- return(val);
-}
-
-unsigned short
-inw(IOADDRESS port)
-{
- unsigned short val;
-
- val = ldw_brx(ioBase, port); eieio();
- return(val);
-}
-
-unsigned int
-inl(IOADDRESS port)
-{
- unsigned int val;
-
- val = ldl_brx(ioBase, port); eieio();
- return(val);
-}
-
-unsigned long
-ldl_u(void *p)
-{
- return (((*(unsigned char *)(p)) |
- (*((unsigned char *)(p)+1)<<8) |
- (*((unsigned char *)(p)+2)<<16) |
- (*((unsigned char *)(p)+3)<<24)));
-}
-
-unsigned long
-ldq_u(void *p)
-{
- return ldl_u(p);
-}
-
-unsigned short
-ldw_u(void *p)
-{
- return(((*(unsigned char *)(p)) |
- (*((unsigned char *)(p)+1)<<8)));
-}
-
-void
-stl_u(unsigned long v, void *p)
-{
-
- (*(unsigned char *)(p)) = (v);
- (*((unsigned char *)(p)+1)) = ((v) >> 8);
- (*((unsigned char *)(p)+2)) = ((v) >> 16);
- (*((unsigned char *)(p)+3)) = ((v) >> 24);
-}
-
-void
-stq_u(unsigned long v, void *p)
-{
- stl_u(v,p);
-}
-
-void
-stw_u(unsigned short v, void *p)
-{
- (*(unsigned char *)(p)) = (v);
- (*((unsigned char *)(p)+1)) = ((v) >> 8);
-}
-
-
-void
-mem_barrier(void)
-{
- __asm__ __volatile__("eieio");
-}
-
-void
-write_mem_barrier(void)
-{
- __asm__ __volatile__("eieio");
-}
-
-#endif /* NO_INLINE && __powerpc__ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.S b/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.S
deleted file mode 100644
index 3865850d1..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.S
+++ /dev/null
@@ -1,70 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.S,v 1.1 1999/07/10 07:24:49 dawes Exp $ */
-/*
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
- .file "ppc.s"
-.toc
- .csect .text[PR]
- .balign 4
- .globl ppc_flush_icache
- .globl .ppc_flush_icache
-.csect ppc_flush_icache[DS]
-ppc_flush_icache:
- .long .ppc_flush_icache, TOC[tc0], 0
-.csect .text[PR]
-.ppc_flush_icache:
- mflr 0
- stw 31,-4(1)
- stw 0,8(1)
- stwu 1,-64(1)
- mr 31,1
- stw 3,88(31)
- li 6, 0 /* __inst_dcbf (addr, 0); */
- dcbf 3, 6
- li 5, 32 /* __inst_dcbf (addr, LINESIZE); */
- dcbf 3, 5
- sync /* __inst_sync (); */
- li 4,0 /* __inst_icbi (addr, 0); */
- icbi 3,4
- li 7,32 /* __inst_icbi (addr, LINESIZE); */
- icbi 3,7
- sync /* __inst_sync (); */
- isync /* __inst_isync (); */
-L..1:
- lwz 1,0(1)
- lwz 0,8(1)
- mtlr 0
- lwz 31,-4(1)
- blr
-LT..ppc_flush_icache:
- .long 0
- .byte 0,0,32,97,128,1,1,1
- .long 0
- .long LT..ppc_flush_icache-.ppc_flush_icache
- .short 16
- .byte "ppc_flush_icache"
- .byte 31
-_section_.text:
- .csect .data[RW]
- .long _section_.text
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.c
deleted file mode 100644
index 12fa3bcae..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.S,v 1.1 1999/07/10 07:24:49 dawes Exp $ */
-/*
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-void ppc_flush_icache()
-{
-__asm__ __volatile__ (" \
- mflr 0 ;\
- stw 31,-4(1) ;\
- stw 0,8(1) ;\
- stwu 1,-64(1) ;\
- mr 31,1 ;\
- stw 3,88(31) ;\
- li 6, 0 ;\
- dcbf 3, 6 ;\
- li 5, 32 ;\
- dcbf 3, 5 ;\
- sync ;\
- li 4,0 ;\
- icbi 3,4 ;\
- li 7,32 ;\
- icbi 3,7 ;\
- sync ;\
- isync ;\
- lwz 1,0(1) ;\
- lwz 0,8(1) ;\
- mtlr 0 ;\
- lwz 31,-4(1) ;\
- blr ;\
-");
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_video.c
deleted file mode 100644
index 5d0949091..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_video.c
+++ /dev/null
@@ -1,711 +0,0 @@
-/*
- * Copyright 1993 by Thomas Mueller
- *
- * 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, and that the name of Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_video.c,v 3.17 2000/10/28 01:42:27 mvojkovi Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-#if defined(__powerpc__)
-
-# if defined(USE_MACHINE_ABSOLUTE)
-# include <machine/absolute.h>
-# else
-# define __USER_SPACE_INCLUDE
-# include <hw_absolute.h>
-# endif
-
-void ppcPciIoMap(int bus);
-#endif
-
-#if 0
-#define DEBUG
-#endif
-
-#ifdef HAS_MTRR_SUPPORT
-#include <sys/memrange.h>
-#define X_MTRR_ID "XFree86"
-
-static pointer setWC(int, unsigned long, unsigned long, Bool, MessageType);
-static void undoWC(int, pointer);
-static Bool cleanMTRR(void);
-static int devMemFd = -1;
-#define MTRR_DEVICE "/dev/mtrr"
-#endif
-
-
-#if !defined(NO_MMAP)
-#include <sys/mman.h>
-
-int smem_remove(char *name)
-{
- return(0);
-}
-
-char *smem_create(char *name, char *arg_addr, long size, int mode)
-{
- int fd;
- void *addr = 0;
- char *retval;
- size_t len = size;
- int prot = PROT_READ|PROT_WRITE|PROT_UNCACHE;
- int flags = MAP_SHARED;
- off_t off = (off_t)arg_addr;
-
- if ((fd = open("/dev/mem" , O_RDWR)) < 0)
- {
- retval = (char *)-1;
- }
- else
- {
- if (mode == SM_DETACH)
- {
- munmap(arg_addr, len);
- retval = 0;
- }
- else
- {
- if ((retval = mmap (addr, len, prot, flags, fd, off) ) == MAP_FAILED)
- {
- retval = (char *)-1;
- }
- }
-
- close(fd);
- }
-
- return(retval);
-}
-
-#endif
-
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-typedef struct
-{
- char name[16];
- unsigned long Base;
- unsigned long Size;
- char *ptr;
- int RefCnt;
-}
-_SMEMS;
-
-#define MAX_SMEMS 16
-
-static _SMEMS smems[MAX_SMEMS];
-
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((void *)-1)
-#endif
-
-static void
-smemCleanup(void)
-{
- int i;
-
- for (i = 0; i < MAX_SMEMS; i++) {
- if (*smems[i].name && smems[i].ptr) {
- (void)smem_create(NULL, smems[i].ptr, 0, SM_DETACH);
- (void)smem_remove(smems[i].name);
- *smems[i].name = '\0';
- smems[i].ptr = NULL;
- smems[i].Base = 0;
- smems[i].Size = 0;
- smems[i].RefCnt = 0;
- }
- }
-}
-
-static pointer
-MapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- static int once;
- int free_slot = -1;
- int i;
-
- if (!once)
- {
- atexit(smemCleanup);
- once = 1;
- }
- for (i = 0; i < MAX_SMEMS; i++)
- {
- if (!*smems[i].name && free_slot == -1)
- free_slot = i;
- if (smems[i].Base == Base && smems[i].Size == Size
- && *smems[i].name) {
- smems[i].RefCnt++;
- return smems[i].ptr;
- }
- }
- if (i == MAX_SMEMS && free_slot == -1)
- {
- FatalError("MapVidMem: failed to smem_create Base %x Size %x (out of SMEMS entries)\n",
- Base, Size);
- }
-
- i = free_slot;
- sprintf(smems[i].name, "Video-%d", i);
- smems[i].Base = Base;
- smems[i].Size = Size;
-
- xf86MsgVerb(X_INFO, 3, "MapVidMem: Base=0x%x Size=0x%x\n",
- Base, Size);
-
-#if defined(__powerpc__)
- if (((unsigned long)Base & PHYS_IO_MEM_START) != PHYS_IO_MEM_START) {
- Base = Base | PHYS_IO_MEM_START;
- }
-#endif
-
- smems[i].ptr = smem_create(smems[i].name, (char *)Base, Size, SM_READ|SM_WRITE);
- smems[i].RefCnt = 1;
- if (smems[i].ptr == NULL)
- {
- /* check if there is a stale segment around */
- if (smem_remove(smems[i].name) == 0) {
- xf86Msg(X_INFO,
- "MapVidMem: removed stale smem_ segment %s\n",
- smems[i].name);
- smems[i].ptr = smem_create(smems[i].name,
- (char *)Base, Size, SM_READ|SM_WRITE);
- }
- if (smems[i].ptr == NULL) {
- *smems[i].name = '\0';
- FatalError("MapVidMem: failed to smem_create Base %x Size %x (%s)\n",
- Base, Size, strerror(errno));
- }
- }
- xf86MsgVerb(X_INFO, 3, "MapVidMem: Base=0x%x Size=0x%x Ptr=0x%x\n",
- Base, Size, smems[i].ptr);
- return smems[i].ptr;
-}
-
-static void
-UnMapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- int i;
-
- xf86MsgVerb(X_INFO, 3, "UnMapVidMem: Base/Ptr=0x%x Size=0x%x\n",
- Base, Size);
- for (i = 0; i < MAX_SMEMS; i++)
- {
- if (*smems[i].name && smems[i].ptr == Base
- && smems[i].Size == Size)
- {
- if (--smems[i].RefCnt > 0)
- return;
-
- (void)smem_create(NULL, smems[i].ptr, 0, SM_DETACH);
- xf86MsgVerb(X_INFO, 3,
- "UnMapVidMem: smem_create(%s, 0x%08x, ... "
- "SM_DETACH)\n", smems[i].name, smems[i].ptr);
- (void)smem_remove(smems[i].name);
- *smems[i].name = '\0';
- smems[i].RefCnt = 0;
- return;
- }
- }
- xf86MsgVerb(X_WARNING, 2,
- "UnMapVidMem: no SMEM found for Base = %lx Size = %lx\n",
- Base, Size);
-}
-
-
-void
-xf86OSInitVidMem(VidMemInfoPtr pVidMem)
-{
- pVidMem->linearSupported = TRUE;
- pVidMem->mapMem = MapVidMem;
- pVidMem->unmapMem = UnMapVidMem;
- pVidMem->setWC = 0;
- pVidMem->undoWC = 0;
-#ifdef HAS_MTRR_SUPPORT
- if (cleanMTRR()) {
- pVidMem->setWC = setWC;
- pVidMem->undoWC = undoWC;
- }
-#endif
- pVidMem->initialised = TRUE;
-}
-
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool
-xf86DisableInterrupts()
-{
- return(TRUE);
-}
-
-void
-xf86EnableInterrupts()
-{
- return;
-}
-
-/***************************************************************************/
-/* I/O Permissions section for PowerPC */
-/***************************************************************************/
-
-#if defined(__powerpc__)
-
-volatile unsigned char *ioBase = MAP_FAILED;
-volatile unsigned char *pciConfBase = MAP_FAILED;
-
-static int IOEnabled;
-
-
-static void
-removeIOSmem(void)
-{
- smem_create(NULL, (char *) ioBase, 0, SM_DETACH);
- smem_remove("IOBASE");
- ioBase = MAP_FAILED;
-}
-
-Bool
-xf86EnableIO()
-{
- if (IOEnabled++ == 0) {
- ioBase = (unsigned char *) smem_create("IOBASE",
- (char *)PHYS_ISA_IO_SPACE, 64*1024, SM_READ|SM_WRITE);
- if (ioBase == MAP_FAILED) {
- --IOEnabled;
- xf86Msg(X_WARNING,"xf86EnableIO: Failed to map I/O\n");
- return FALSE;
- } else {
-#ifdef DEBUG
- ErrorF("xf86EnableIO: mapped I/O at vaddr 0x%08x\n",
- ioBase);
-#endif
- atexit(removeIOSmem);
- }
- }
- return TRUE;
-}
-
-void
-xf86DisableIO()
-{
- if (!IOEnabled)
- return;
-
- if (--IOEnabled == 0)
- removeIOSmem();
- return;
-}
-
-#if 0
-void
-xf86DisableIOPrivs(void)
-{
- return;
-}
-#endif
-void
-ppcPciIoMap(int bus)
-{
- xf86EnableIO();
-}
-
-#endif
-
-
-#ifdef HAS_MTRR_SUPPORT
-/* memory range (MTRR) support for LynxOS (taken from BSD MTRR support) */
-
-/*
- * This code is experimental. Some parts may be overkill, and other parts
- * may be incomplete.
- */
-
-/*
- * getAllRanges returns the full list of memory ranges with attributes set.
- */
-
-static struct mem_range_desc *
-getAllRanges(int *nmr)
-{
- struct mem_range_desc *mrd;
- struct mem_range_op mro;
-
- /*
- * Find how many ranges there are. If this fails, then the kernel
- * probably doesn't have MTRR support.
- */
- mro.mo_arg[0] = 0;
- if (ioctl(devMemFd, MEMRANGE_GET, &mro))
- return NULL;
- *nmr = mro.mo_arg[0];
- mrd = xnfalloc(*nmr * sizeof(struct mem_range_desc));
- mro.mo_arg[0] = *nmr;
- mro.mo_desc = mrd;
- if (ioctl(devMemFd, MEMRANGE_GET, &mro)) {
- xfree(mrd);
- return NULL;
- }
- return mrd;
-}
-
-/*
- * cleanMTRR removes any memory attribute that may be left by a previous
- * X server. Normally there won't be any, but this takes care of the
- * case where a server crashed without being able finish cleaning up.
- */
-
-static Bool
-cleanMTRR()
-{
- struct mem_range_desc *mrd;
- struct mem_range_op mro;
- int nmr, i;
-
- /* This shouldn't happen */
- if (devMemFd < 0) {
- if ((devMemFd = open(MTRR_DEVICE, O_RDONLY)) < 0) {
-perror("open MTRR");
- return FALSE;
- }
- }
-
- if (!(mrd = getAllRanges(&nmr)))
- return FALSE;
-
- for (i = 0; i < nmr; i++) {
- if (strcmp(mrd[i].mr_owner, X_MTRR_ID) == 0 &&
- (mrd[i].mr_flags & MDF_ACTIVE)) {
-#ifdef DEBUG
- ErrorF("Clean for (0x%lx,0x%lx)\n",
- (unsigned long)mrd[i].mr_base,
- (unsigned long)mrd[i].mr_len);
-#endif
- if (mrd[i].mr_flags & MDF_FIXACTIVE) {
- mro.mo_arg[0] = MEMRANGE_SET_UPDATE;
- mrd[i].mr_flags = MDF_UNCACHEABLE;
- } else {
- mro.mo_arg[0] = MEMRANGE_SET_REMOVE;
- }
- mro.mo_desc = mrd + i;
- ioctl(devMemFd, MEMRANGE_SET, &mro);
- }
- }
-#ifdef DEBUG
- sleep(10);
-#endif
- xfree(mrd);
- return TRUE;
-}
-
-typedef struct x_RangeRec {
- struct mem_range_desc mrd;
- Bool wasWC;
- struct x_RangeRec * next;
-} RangeRec, *RangePtr;
-
-static void
-freeRangeList(RangePtr range)
-{
- RangePtr rp;
-
- while (range) {
- rp = range;
- range = rp->next;
- xfree(rp);
- }
-}
-
-static RangePtr
-dupRangeList(RangePtr list)
-{
- RangePtr new = NULL, rp, p;
-
- rp = list;
- while (rp) {
- p = xnfalloc(sizeof(RangeRec));
- *p = *rp;
- p->next = new;
- new = p;
- rp = rp->next;
- }
- return new;
-}
-
-static RangePtr
-sortRangeList(RangePtr list)
-{
- RangePtr rp1, rp2, copy, sorted = NULL, minp, prev, minprev;
- unsigned long minBase;
-
- /* Sort by base address */
- rp1 = copy = dupRangeList(list);
- while (rp1) {
- minBase = rp1->mrd.mr_base;
- minp = rp1;
- minprev = NULL;
- prev = rp1;
- rp2 = rp1->next;
- while (rp2) {
- if (rp2->mrd.mr_base < minBase) {
- minBase = rp2->mrd.mr_base;
- minp = rp2;
- minprev = prev;
- }
- prev = rp2;
- rp2 = rp2->next;
- }
- if (minprev) {
- minprev->next = minp->next;
- rp1 = copy;
- } else {
- rp1 = minp->next;
- }
- minp->next = sorted;
- sorted = minp;
- }
- return sorted;
-}
-
-/*
- * findRanges returns a list of ranges that overlap the specified range.
- */
-
-static void
-findRanges(unsigned long base, unsigned long size, RangePtr *ucp, RangePtr *wcp)
-{
- struct mem_range_desc *mrd;
- int nmr, i;
- RangePtr rp, *p;
-
- if (!(mrd = getAllRanges(&nmr)))
- return;
-
- for (i = 0; i < nmr; i++) {
- if ((mrd[i].mr_flags & MDF_ACTIVE) &&
- mrd[i].mr_base < base + size &&
- mrd[i].mr_base + mrd[i].mr_len > base) {
- if (mrd[i].mr_flags & MDF_WRITECOMBINE)
- p = wcp;
- else if (mrd[i].mr_flags & MDF_UNCACHEABLE)
- p = ucp;
- else
- continue;
- rp = xnfalloc(sizeof(RangeRec));
- rp->mrd = mrd[i];
- rp->next = *p;
- *p = rp;
- }
- }
- xfree(mrd);
-}
-
-/*
- * This checks if the existing overlapping ranges fully cover the requested
- * range. Is this overkill?
- */
-
-static Bool
-fullCoverage(unsigned long base, unsigned long size, RangePtr overlap)
-{
- RangePtr rp1, sorted = NULL;
- unsigned long end;
-
- sorted = sortRangeList(overlap);
- /* Look for gaps */
- rp1 = sorted;
- end = base + size;
- while (rp1) {
- if (rp1->mrd.mr_base > base) {
- freeRangeList(sorted);
- return FALSE;
- } else {
- base = rp1->mrd.mr_base + rp1->mrd.mr_len;
- }
- if (base >= end) {
- freeRangeList(sorted);
- return TRUE;
- }
- rp1 = rp1->next;
- }
- freeRangeList(sorted);
- return FALSE;
-}
-
-static pointer
-addWC(int screenNum, unsigned long base, unsigned long size, MessageType from)
-{
- RangePtr uc = NULL, wc = NULL, retlist = NULL;
- struct mem_range_desc mrd;
- struct mem_range_op mro;
-
- findRanges(base, size, &uc, &wc);
-
- /* See of the full range is already WC */
- if (!uc && fullCoverage(base, size, wc)) {
- xf86DrvMsg(screenNum, from,
- "Write-combining range (0x%lx,0x%lx) was already set\n",
- base, size);
- return NULL;
- }
-
- /* Otherwise, try to add the new range */
- mrd.mr_base = base;
- mrd.mr_len = size;
- strcpy(mrd.mr_owner, X_MTRR_ID);
- mrd.mr_flags = MDF_WRITECOMBINE;
- mro.mo_desc = &mrd;
- mro.mo_arg[0] = MEMRANGE_SET_UPDATE;
- if (ioctl(devMemFd, MEMRANGE_SET, &mro)) {
- xf86DrvMsg(screenNum, X_WARNING,
- "Failed to set write-combining range "
- "(0x%lx,0x%lx)\n", base, size);
- return NULL;
- } else {
- xf86DrvMsg(screenNum, from,
- "Write-combining range (0x%lx,0x%lx)\n", base, size);
- retlist = xnfalloc(sizeof(RangeRec));
- retlist->mrd = mrd;
- retlist->wasWC = FALSE;
- retlist->next = NULL;
- return retlist;
- }
-}
-
-static pointer
-delWC(int screenNum, unsigned long base, unsigned long size, MessageType from)
-{
- RangePtr uc = NULL, wc = NULL, retlist = NULL;
- struct mem_range_desc mrd;
- struct mem_range_op mro;
-
- findRanges(base, size, &uc, &wc);
-
- /*
- * See of the full range is already not WC, or if there is full
- * coverage from UC ranges.
- */
- if (!wc || fullCoverage(base, size, uc)) {
- xf86DrvMsg(screenNum, from,
- "Write-combining range (0x%lx,0x%lx) was already clear\n",
- base, size);
- return NULL;
- }
-
- /* Otherwise, try to add the new range */
- mrd.mr_base = base;
- mrd.mr_len = size;
- strcpy(mrd.mr_owner, X_MTRR_ID);
- mrd.mr_flags = MDF_UNCACHEABLE;
- mro.mo_desc = &mrd;
- mro.mo_arg[0] = MEMRANGE_SET_UPDATE;
- if (ioctl(devMemFd, MEMRANGE_SET, &mro)) {
- xf86DrvMsg(screenNum, X_WARNING,
- "Failed to remove write-combining range "
- "(0x%lx,0x%lx)\n", base, size);
- /* XXX Should then remove all of the overlapping WC ranges */
- return NULL;
- } else {
- xf86DrvMsg(screenNum, from,
- "Removed Write-combining range (0x%lx,0x%lx)\n",
- base, size);
- retlist = xnfalloc(sizeof(RangeRec));
- retlist->mrd = mrd;
- retlist->wasWC = TRUE;
- retlist->next = NULL;
- return retlist;
- }
-}
-
-static pointer
-setWC(int screenNum, unsigned long base, unsigned long size, Bool enable,
- MessageType from)
-{
- if (enable)
- return addWC(screenNum, base, size, from);
- else
- return delWC(screenNum, base, size, from);
-}
-
-static void
-undoWC(int screenNum, pointer list)
-{
- RangePtr rp;
- struct mem_range_op mro;
- Bool failed;
-
- rp = list;
- while (rp) {
-#ifdef DEBUG
- ErrorF("Undo for (0x%lx,0x%lx), %d\n",
- (unsigned long)rp->mrd.mr_base,
- (unsigned long)rp->mrd.mr_len, rp->wasWC);
-#endif
- failed = FALSE;
- if (rp->wasWC) {
- mro.mo_arg[0] = MEMRANGE_SET_UPDATE;
- rp->mrd.mr_flags = MDF_WRITECOMBINE;
- strcpy(rp->mrd.mr_owner, "unknown");
- } else {
- mro.mo_arg[0] = MEMRANGE_SET_REMOVE;
- }
- mro.mo_desc = &rp->mrd;
-
- if (ioctl(devMemFd, MEMRANGE_SET, &mro)) {
- if (!rp->wasWC) {
- mro.mo_arg[0] = MEMRANGE_SET_UPDATE;
- rp->mrd.mr_flags = MDF_UNCACHEABLE;
- strcpy(rp->mrd.mr_owner, "unknown");
- if (ioctl(devMemFd, MEMRANGE_SET, &mro))
- failed = TRUE;
- } else
- failed = TRUE;
- }
- if (failed) {
- xf86DrvMsg(screenNum, X_WARNING,
- "Failed to restore MTRR range (0x%lx,0x%lx)\n",
- (unsigned long)rp->mrd.mr_base,
- (unsigned long)rp->mrd.mr_len);
- }
- rp = rp->next;
- }
-}
-
-#endif /* HAS_MTRR_SUPPORT */
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/BUSmemcpy.S b/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/BUSmemcpy.S
deleted file mode 100644
index 373723c7d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/BUSmemcpy.S
+++ /dev/null
@@ -1,153 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/BUSmemcpy.s,v 1.2 1998/07/25 16:56:49 dawes Exp $ */
-/******************************************************************************
- Copyright 1993 by Glenn G. Lai
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Glenn G. Lai not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-Glenn G. Lai DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-Glenn G. Lai
-P.O. Box 4314
-Austin, Tx 78765
-(glenn@cs.utexas.edu)
-8/9/93
-******************************************************************************/
-/* $XConsortium: BUSmemcpy.s /main/4 1996/02/21 17:39:34 kaleb $ */
-
-/*
- * Modified to use long-alignment of video memory rather than word-alignment
- * to improve performance for LocalBus video cards. Function names changed
- * from ISAToMem and MemToISA to BusToMem and MemToBus.
- *
- * David Dawes <dawes@XFree86.org>, 25 August 1993.
- */
-
-
-#include "assyntax.h"
-
- FILE("BUSmemcpy.s")
-
- AS_BEGIN
-
-/* BusToMem copies from video memory to main memory
- MemToBus copies from main memory to video memory
-
- void xf86BusToMem(unsigned char *dst, unsigned char *src, int len);
- void xf86MemToBus(unsigned char *dst, unsigned char *src, int len);
-*/
-
-#define dst REGOFF(4,ESP)
-#define src REGOFF(8,ESP)
-#define len REGOFF(12,ESP)
-
- GLOBL GLNAME(xf86BusToMem)
- GLOBL GLNAME(xf86MemToBus)
-
- SEG_DATA
-copyright:
- STRING("Copyright 8/9/1993 by Glenn G. Lai")
-
- SEG_TEXT
- ALIGNTEXT4
-GLNAME(xf86BusToMem):
- CLD
- PUSH_L (ESI)
- MOV_L (EDI, EDX)
-
- MOV_L (src, ESI)
- MOV_L (dst, EDI)
- MOV_L (len, ECX)
-
- CMP_L (CONST(7), ECX)
- JC (quickBM)
-
- TEST_L (CONST(1), ESI)
- JZ (BwM)
-
- MOVS_B
- DEC_L (ECX)
-
-BwM:
- TEST_L (CONST(2), ESI)
- JZ (BlM)
-
- MOVS_W
- DEC_L (ECX)
- DEC_L (ECX)
-
-BlM:
- MOV_L (ECX, EAX)
- AND_L (CONST(3), EAX)
- SHR_L (CONST(2), ECX)
- REP
- MOVS_L
- MOV_L (EAX, ECX)
-quickBM:
- OR_L (ECX, ECX)
- JZ (return)
- REP
- MOVS_B
-return:
- POP_L (ESI)
- MOV_L (EDX, EDI)
- RET
-/************************/
-
- ALIGNTEXT4
-GLNAME(xf86MemToBus):
- CLD
- PUSH_L (ESI)
- MOV_L (EDI, EDX)
-
- MOV_L (src, ESI)
- MOV_L (dst, EDI)
- MOV_L (len, ECX)
-
- CMP_L (CONST(7), ECX)
- JC (quickMB)
-
- TEST_L (CONST(1), EDI)
- JZ (MwB)
-
- MOVS_B
- DEC_L (ECX)
-
-MwB:
- TEST_L (CONST(2), EDI)
- JZ (MlB)
-
- MOVS_W
- DEC_L (ECX)
- DEC_L (ECX)
-
-MlB:
- MOV_L (ECX, EAX)
- AND_L (CONST(3), EAX)
- SHR_L (CONST(2), ECX)
- REP
- MOVS_L
- MOV_L (EAX, ECX)
-quickMB:
- OR_L (ECX, ECX)
- JZ (return)
- REP
- MOVS_B
-
- POP_L (ESI)
- MOV_L (EDX, EDI)
- RET
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/BUSmemcpy.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/BUSmemcpy.c
deleted file mode 100644
index 9ff14396c..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/BUSmemcpy.c
+++ /dev/null
@@ -1,413 +0,0 @@
-
-/****************************************************************************
-
- For Alpha Linux, BusToMem() and MemToBus() can be simply memcpy(), BUT:
- we need to prevent unaligned operations when accessing DENSE space on the BUS,
- as the video memory is mmap'd that way. The below code does this.
-
-NOTE: we could simply use the "memcpy()" from LIBC here, but that, currently, is
- not as fast.
-
-Thanks to Linus Torvalds for contributing this code.
-
-****************************************************************************/
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/BUSmemcpy.c,v 1.3 1999/12/03 19:17:44 eich Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#ifdef __alpha__
-
-#include "compiler.h"
-
-/*
- * The Jensen lacks dense memory, thus we have to address the bus via
- * the sparse addressing scheme. These routines are only used in s3im.c
- * Non time critical code uses SlowBCopy_{from/to} bus.
- *
- * Martin Ostermann (ost@comnets.rwth-aachen.de) - Apr.-Sep. 1996
- */
-
-#ifdef TEST_JENSEN_CODE /* define to test the Sparse addressing on a non-Jensen */
-#define LWORD_CODING (0x18)
-#define SPARSE (5)
-#else
-#define LWORD_CODING (0x60)
-#define SPARSE (7)
-#endif
-
-void
-xf86JensenMemToBus(char *Base, long dst, long src, int count)
-{
- if( ((long)src^((long)dst)) & 3) {
- /* src & dst are NOT aligned to each other */
- unsigned long addr;
- unsigned long low_word, high_word,last_read;
- long rm,loop;
- unsigned long tmp,org,org2,mask,src_org,count_org;
-
- src_org=src;
- count_org=count;
-
- /* add EISA longword coding and round off*/
- addr = (long)(Base+(dst<<SPARSE) + LWORD_CODING) & ~(3<<SPARSE);
- rm = (long)dst & 3;
- count += rm;
-
- count = count_org + rm;
- org = *(volatile unsigned int *)addr;
- __asm__("ldq_u %0,%1"
- :"=r" (low_word):"m" (*(unsigned long *)(src_org)));
- src = src_org - rm;
- if( count > 4 ) {
- last_read = src_org+count_org - 1;
- __asm__("ldq_u %0,%1"
- :"=r" (high_word):"m" (*(unsigned long *)(src+4)));
- __asm__("extll %1,%2,%0"
- :"=r" (low_word)
- :"r" (low_word), "r" ((unsigned long)(src)));
- __asm__("extlh %1,%2,%0"
- :"=r" (tmp)
- :"r" (high_word), "r" ((unsigned long)(src)));
- tmp |= low_word;
- src += 4;
- __asm__("mskqh %1,%2,%0"
- :"=r" (tmp)
- :"r" (tmp), "r" (rm));
- __asm__("mskql %1,%2,%0"
- :"=r" (org2)
- :"r" (org), "r" (rm));
- tmp |= org2;
-
- loop = (count-4) >> 2; /* loop eqv. count>=4 ; count -= 4 */
- while (loop) {
- /* tmp to be stored completly -- need to read next word*/
- low_word = high_word;
- *(volatile unsigned int *) (addr) = tmp;
- __asm__("ldq_u %0,%1"
- :"=r" (high_word):"m" (*(unsigned long*)(src+4)));
- loop --;
- __asm__("extll %1,%2,%0"
- :"=r" (low_word)
- :"r" (low_word), "r" ((unsigned long)src));
- __asm__("extlh %1,%2,%0"
- :"=r" (tmp)
- :"r" (high_word), "r" ((unsigned long)src));
- src += 4;
- tmp |= low_word;
- addr += 4<<SPARSE;
- }
- if ( count & 3 ) {
- /* Store tmp completly, and possibly read one more word.*/
- *(volatile unsigned int *) (addr) = tmp;
- __asm__("ldq_u %0,%1"
- :"=r" (tmp):"m" (*((unsigned long *)(last_read)) ));
- addr += 4<<SPARSE;
- __asm__("extll %1,%2,%0"
- :"=r" (low_word)
- :"r" (high_word), "r" ((unsigned long)src));
- __asm__("extlh %1,%2,%0"
- :"=r" (tmp)
- :"r" (tmp), "r" ((unsigned long)src));
- tmp |= low_word;
- org = *(volatile unsigned int *)addr;
-
- __asm__("mskql %1,%2,%0"
- :"=r" (tmp)
- :"r" (tmp), "r" (count&3));
- __asm__("mskqh %1,%2,%0"
- :"=r" (org)
- :"r" (org), "r" (count&3));
-
- tmp |= org;
- }
- *(volatile unsigned int *) (addr) = tmp;
- return;
- } else { /* count > 4 */
- __asm__("ldq_u %0,%1"
- :"=r" (high_word):"m" (*(unsigned long *)(src+4)));
- __asm__("extll %1,%2,%0"
- :"=r" (low_word)
- :"r" (low_word), "r" ((unsigned long)(src)));
- __asm__("extlh %1,%2,%0"
- :"=r" (tmp)
- :"r" (high_word), "r" ((unsigned long)(src)));
- tmp |= low_word;
- if( count < 4 ) {
-
- mask = -1;
- __asm__("mskqh %1,%2,%0"
- :"=r" (mask)
- :"r" (mask), "r" (rm));
- __asm__("mskql %1,%2,%0"
- :"=r" (mask)
- :"r" (mask), "r" (count));
- tmp = (tmp & mask) | (org & ~mask);
- *(volatile unsigned int *) (addr) = tmp;
- return;
- } else {
- __asm__("mskqh %1,%2,%0"
- :"=r" (tmp)
- :"r" (tmp), "r" (rm));
- __asm__("mskql %1,%2,%0"
- :"=r" (org2)
- :"r" (org), "r" (rm));
-
- tmp |= org2;
- *(volatile unsigned int *) (addr) = tmp;
- return;
- }
- }
- } else { /* src & dst are aligned to each other */
- unsigned long addr;
- unsigned int tmp,org,rm;
- unsigned int *src_r;
-
- /* add EISA longword coding and round off*/
- addr = (long)(Base+(dst<<SPARSE) + LWORD_CODING) & ~(3<<SPARSE);
-
- src_r = (unsigned int*)((long)src & ~3L);
- rm=(long)src & 3;
- count += rm;
-
- tmp = *src_r;
- org = *(volatile unsigned int *)addr;
-
- __asm__("mskqh %1,%2,%0"
- :"=r" (tmp)
- :"r" (tmp), "r" (rm));
- __asm__("mskql %1,%2,%0"
- :"=r" (org)
- :"r" (org), "r" (rm));
-
- tmp |= org;
-
- while (count > 4) {
- *(volatile unsigned int *) addr = tmp;
- addr += 4<<SPARSE;
- src_r += 1;
- tmp = *src_r;
- count -= 4;
- }
-
- org = *(volatile unsigned int *)addr;
- __asm__("mskql %1,%2,%0"
- :"=r" (tmp)
- :"r" (tmp), "r" (count));
- __asm__("mskqh %1,%2,%0"
- :"=r" (org)
- :"r" (org), "r" (count));
- tmp |= org;
- *(volatile unsigned int *) (addr) = tmp;
- }
-}
-
-void
-xf86JensenBusToMem(char *Base, char *dst, unsigned long src, int count)
-{
-#if 0
- /* Optimization of BusToMem() is left as an exercise to the reader ;-)
- * Consider that ldq_u/extlh/extll won't work because of the bus being
- * only 4 bytes wide!
- */
-#else
- unsigned long addr;
- long result;
-
- addr = (unsigned long)(Base+(src<<SPARSE)) ;
- while( addr & (3<<SPARSE) ){
- if(count <= 0) return;
- result = *(volatile int *) addr;
- result >>= ((addr>>SPARSE) & 3) * 8;
- *dst++ = (char) result;
- addr += 1<<SPARSE;
- count--;
- }
- count -=4;
- while(count >= 0){
- int i;
-
- result = *(volatile int *) (addr+LWORD_CODING);
- for(i=4;i--;) {
- *dst++ = (char) result;
- result >>= 8;
- }
- addr += 4<<SPARSE;
- count -= 4;
- }
- count +=4;
-
- while( count ){
- result = *(volatile int *) addr;
- result >>= ((addr>>SPARSE) & 3) * 8;
- *dst++ = (char) result;
- addr += 1<<SPARSE;
- count--;
- }
-#endif
-}
-
-
-static unsigned long __memcpy(unsigned long dest, unsigned long src, int n);
-
-void
-xf86BusToMem(unsigned char *dst, unsigned char *src, int len)
-{
- __memcpy((unsigned long)dst, (unsigned long)src, len);
-}
-void
-xf86MemToBus(unsigned char *dst, unsigned char *src, int len)
-{
- if (len == sizeof(int))
- if (!(((long)src | (long)dst) & 3))
- *((unsigned int*)dst) = *((unsigned int*)(src));
- else {
- int i;
- if (((long)src) & 3)
- i = ldl_u((unsigned int*)src);
- else
- i = *(unsigned int*)src;
- if (((long)dst) & 3)
- stl_u(i,(unsigned int*)dst);
- else
- *(unsigned int*)dst = i;
- }
- else
- __memcpy((unsigned long)dst, (unsigned long)src, len);
-}
-
-/*
- * linux/arch/alpha/lib/memcpy.c
- *
- * Copyright (C) 1995 Linus Torvalds, used with his permission.
- */
-
-/*
- * This is a reasonably optimized memcpy() routine.
- */
-
-/*
- * Note that the C code is written to be optimized into good assembly. However,
- * at this point gcc is unable to sanely compile "if (n >= 0)", resulting in a
- * explicit compare against 0 (instead of just using the proper "blt reg, xx" or
- * "bge reg, xx"). I hope alpha-gcc will be fixed to notice this eventually..
- */
-
-/*
- * This should be done in one go with ldq_u*2/mask/stq_u. Do it
- * with a macro so that we can fix it up later..
- */
-#define ALIGN_DEST_TO8(d,s,n) \
- while (d & 7) { \
- if (n <= 0) return; \
- n--; \
- *(char *) d = *(char *) s; \
- d++; s++; \
- }
-
-/*
- * This should similarly be done with ldq_u*2/mask/stq. The destination
- * is aligned, but we don't fill in a full quad-word
- */
-#define DO_REST(d,s,n) \
- while (n > 0) { \
- n--; \
- *(char *) d = *(char *) s; \
- d++; s++; \
- }
-
-/*
- * This should be done with ldq/mask/stq. The source and destination are
- * aligned, but we don't fill in a full quad-word
- */
-#define DO_REST_ALIGNED(d,s,n) DO_REST(d,s,n)
-
-/*
- * This does unaligned memory copies. We want to avoid storing to
- * an unaligned address, as that would do a read-modify-write cycle.
- * We also want to avoid double-reading the unaligned reads.
- *
- * Note the ordering to try to avoid load (and address generation) latencies.
- */
-static __inline__ void __memcpy_unaligned(unsigned long d, unsigned long s, long n)
-{
- ALIGN_DEST_TO8(d,s,n);
- n -= 8; /* to avoid compare against 8 in the loop */
- if (n >= 0) {
- unsigned long low_word, high_word;
- __asm__("ldq_u %0,%1":"=r" (low_word):"m" (*(unsigned long *) s));
- do {
- unsigned long tmp;
- __asm__("ldq_u %0,%1":"=r" (high_word):"m" (*(unsigned long *)(s+8)));
- n -= 8;
- __asm__("extql %1,%2,%0"
- :"=r" (low_word)
- :"r" (low_word), "r" (s));
- __asm__("extqh %1,%2,%0"
- :"=r" (tmp)
- :"r" (high_word), "r" (s));
- s += 8;
- *(unsigned long *) d = low_word | tmp;
- d += 8;
- low_word = high_word;
- } while (n >= 0);
- }
- n += 8;
- DO_REST(d,s,n);
-}
-
-/*
- * Hmm.. Strange. The __asm__ here is there to make gcc use a integer register
- * for the load-store. I don't know why, but it would seem that using a floating
- * point register for the move seems to slow things down (very small difference,
- * though).
- *
- * Note the ordering to try to avoid load (and address generation) latencies.
- */
-static __inline__ void __memcpy_aligned(unsigned long d, unsigned long s, long n)
-{
- ALIGN_DEST_TO8(d,s,n);
- n -= 8;
- while (n >= 0) {
- unsigned long tmp;
- __asm__("ldq %0,%1":"=r" (tmp):"m" (*(unsigned long *) s));
- n -= 8;
- s += 8;
- *(unsigned long *) d = tmp;
- d += 8;
- }
- n += 8;
- DO_REST_ALIGNED(d,s,n);
-}
-
-static unsigned long __memcpy(unsigned long dest, unsigned long src, int n)
-{
- if (!((dest ^ src) & 7)) {
- __memcpy_aligned(dest, src, n);
- return dest;
- }
- __memcpy_unaligned(dest, src, n);
- return dest;
-}
-
-#else /* __alpha__ */
-
-void
-xf86BusToMem(unsigned char *dst, unsigned char *src, int len)
-{
- memcpy(dst, src, len);
-}
-void
-xf86MemToBus(unsigned char *dst, unsigned char *src, int len)
-{
- memcpy(dst, src, len);
-}
-
-#endif /* __alpha__ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/Delay.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/Delay.c
deleted file mode 100644
index 33d0789fd..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/Delay.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/Delay.c,v 3.3 2000/12/08 20:13:38 eich Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef __UNIXOS2__
-#define I_NEED_OS2_H
-#endif
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include <time.h>
-
-void
-xf86UDelay(long usec)
-{
-#if 0
- struct timeval start, interrupt;
-#else
- int sigio;
-
- sigio = xf86BlockSIGIO();
- xf86usleep(usec);
- xf86UnblockSIGIO(sigio);
-#endif
-
-#if 0
- gettimeofday(&start,NULL);
-
- do {
- usleep(usec);
- gettimeofday(&interrupt,NULL);
-
- if ((usec = usec - (interrupt.tv_sec - start.tv_sec) * 1000000
- - (interrupt.tv_usec - start.tv_usec)) < 0)
- break;
- start = interrupt;
- } while (1);
-#endif
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/IODelay.S b/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/IODelay.S
deleted file mode 100644
index 685584653..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/IODelay.S
+++ /dev/null
@@ -1,53 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/IODelay.s,v 1.2 1998/07/25 16:56:49 dawes Exp $ */
-/*******************************************************************************
- Copyright 1994 by Glenn G. Lai
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyr notice appear in all copies and that
-both that copyr notice and this permission notice appear in
-supporting documentation, and that the name of Glenn G. Lai not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-Glenn G. Lai DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-Glenn G. Lai
-P.O. Box 4314
-Austin, Tx 78765
-glenn@cs.utexas.edu)
-7/21/94
-*******************************************************************************/
-/* $XConsortium: IODelay.s /main/4 1996/02/21 17:40:21 kaleb $ */
-
-/*
- * All we really need is a delay of about 40ns for I/O recovery for just
- * about any occasion, but we'll be more conservative here: On a
- * 100-MHz CPU, produce at least a delay of 1,000ns.
- */
-
-#include "assyntax.h"
-
- FILE("DACDelay.s")
-
- AS_BEGIN
-
- GLOBL GLNAME(xf86IODelay)
-
- SEG_TEXT
- ALIGNTEXT4
-GLNAME(xf86IODelay):
- MOV_L (CONST(100), EAX)
-delay_it:
- DEC_L (EAX)
- JNE (delay_it)
- RET
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/IODelay.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/IODelay.c
deleted file mode 100644
index 697c07f61..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/IODelay.c
+++ /dev/null
@@ -1,28 +0,0 @@
-
-/* $XConsortium: IODelay.c /main/1 1996/05/07 17:13:43 kaleb $ */
-/*******************************************************************************
- Stub for Alpha Linux
-*******************************************************************************/
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/IODelay.c,v 1.1.2.1 1998/06/04 17:35:59 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/*
- * All we really need is a delay of about 40ns for I/O recovery for just
- * about any occasion, but we'll be more conservative here: On a
- * 100-MHz CPU, produce at least a delay of 1,000ns.
- */
-void
-xf86IODelay()
-{
- xf86UDelay(1);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/Imakefile
deleted file mode 100644
index d6122f52a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/Imakefile
+++ /dev/null
@@ -1,54 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/Imakefile,v 3.13 2003/12/30 15:21:06 herrb Exp $
-XCOMM $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/misc/Imakefile,v 1.2 2004/04/23 19:54:11 eich Exp $
-
-
-
-XCOMM $XConsortium: Imakefile /main/4 1996/09/28 17:24:12 rws $
-
-#include <Server.tmpl>
-
-
-#if defined(i386Architecture) && !defined(cygwinArchitecture) \
- && !defined(OS2Architecture)
-XSRCS = BUSmemcpy.S IODelay.S SlowBcopy.S
-XOBJS = BUSmemcpy.o IODelay.o SlowBcopy.o
-#else
-XSRCS = BUSmemcpy.c IODelay.c SlowBcopy.c
-XOBJS = BUSmemcpy.o IODelay.o SlowBcopy.o
-#if defined(NetBSDArchitecture)
-BUSmemcpy.o: BUSmemcpy.c
-IODelay.o: IODelay.c
-SlowBcopy.o: SlowBcopy.c
-#endif
-#endif
-
-#if HasGcc || HasGcc2
-ILHACKSRCS = xf86_IlHack.c
-ILHACKOBJS = xf86_IlHack.o
-#elif NeedPortIO
-ILHACKOBJS = PortIO.o
-#endif
-
-SRCS = xf86_Util.c Delay.c $(ILHACKSRCS) $(XSRCS)
-
-OBJS = xf86_Util.o Delay.o $(ILHACKOBJS) $(XOBJS)
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-#if defined(i386Architecture) && !defined(cygwinArchitecture) \
- && !defined(OS2Architecture)
-ObjectFromAsmSource(BUSmemcpy,NullParameter)
-ObjectFromAsmSource(IODelay,NullParameter)
-ObjectFromAsmSource(SlowBcopy,NullParameter)
-#endif
-
-#ifdef NeedPortIO
-ObjectFromAsmSource(PortIO,NullParameter)
-#endif
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/PortIO.S b/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/PortIO.S
deleted file mode 100644
index 75db31156..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/PortIO.S
+++ /dev/null
@@ -1,57 +0,0 @@
-/* $XFree86$ */
-
-/* Port I/O functions for platforms with no inlining. */
-
-#include "assyntax.h"
-
- FILE("PortIO.s")
-
- AS_BEGIN
-
- GLOBL GLNAME(outb)
- GLOBL GLNAME(outw)
- GLOBL GLNAME(outl)
- GLOBL GLNAME(inb)
- GLOBL GLNAME(inw)
- GLOBL GLNAME(inl)
-
- SEG_TEXT
- ALIGNTEXT4
-GLNAME(outb):
- MOV_L (REGOFF(4,ESP), EDX)
- MOV_L (REGOFF(8,ESP), EAX)
- OUT_B
- RET
-
- ALIGNTEXT4
-GLNAME(outw):
- MOV_L (REGOFF(4,ESP), EDX)
- MOV_L (REGOFF(8,ESP), EAX)
- OUT_W
- RET
-
- ALIGNTEXT4
-GLNAME(outl):
- MOV_L (REGOFF(4,ESP), EDX)
- MOV_L (REGOFF(8,ESP), EAX)
- OUT_L
- RET
-
- ALIGNTEXT4
-GLNAME(inb):
- MOV_L (REGOFF(4,ESP), EDX)
- IN_B
- RET
-
- ALIGNTEXT4
-GLNAME(inw):
- MOV_L (REGOFF(4,ESP), EDX)
- IN_L
- RET
-
- ALIGNTEXT4
-GLNAME(inl):
- MOV_L (REGOFF(4,ESP), EDX)
- IN_L
- RET
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/SlowBcopy.S b/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/SlowBcopy.S
deleted file mode 100644
index 9fd73a0f9..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/SlowBcopy.S
+++ /dev/null
@@ -1,108 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/SlowBcopy.s,v 1.2 1998/07/25 16:56:50 dawes Exp $ */
-/*******************************************************************************
- Copyright 1994 by Glenn G. Lai
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyr notice appear in all copies and that
-both that copyr notice and this permission notice appear in
-supporting documentation, and that the name of Glenn G. Lai not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-Glenn G. Lai DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-Glenn G. Lai
-P.O. Box 4314
-Austin, Tx 78765
-glenn@cs.utexas.edu)
-7/21/94
-*******************************************************************************/
-/* $XConsortium: SlowBcopy.s /main/4 1996/02/21 17:40:52 kaleb $ */
-
-/*
- * Modified from the output generated by GCC
- *
- * Create a dependency that should be immune from the effect of register
- * renaming as is commonly seen in superscalar processors. This should
- * insert a minimum of 100-ns delays between reads/writes at clock rates
- * up to 100 MHz---GGL
- *
- * Slowbcopy(char *src, char *dst, int count)
- *
- */
-
-#include "assyntax.h"
-
- FILE("SlowBcopy.s")
-
- AS_BEGIN
-
-gcc2_compiled.:
-___gnu_compiled_c:
-
- GLOBL GLNAME(xf86SlowBcopy)
-
- SEG_TEXT
- ALIGNTEXT4
-GLNAME(xf86SlowBcopy):
- PUSH_L (EBP)
- MOV_L (ESP,EBP)
- PUSH_L (ESI)
- PUSH_L (EBX)
- MOV_L (REGOFF(8,EBP),ECX)
- MOV_L (REGOFF(12,EBP),EDX)
- MOV_L (REGOFF(16,EBP),ESI)
- XOR_L (EAX,EAX)
- CMP_L (ESI,EAX)
- JGE (L3)
-
- ALIGNTEXT4
-L5:
- MOV_B (REGIND(ECX),BL)
-
- MOV_B (BL, BH)
- MOV_B (BH, BL)
- MOV_B (BL, BH)
- MOV_B (BH, BL)
- MOV_B (BL, BH)
- MOV_B (BH, BL)
- MOV_B (BL, BH)
- MOV_B (BH, BL)
- MOV_B (BL, BH)
- MOV_B (BH, BL)
-
- MOV_B (BL,REGIND(EDX))
-
- INC_L (ECX)
- DEC_L (ECX)
- INC_L (ECX)
- DEC_L (ECX)
- INC_L (ECX)
- DEC_L (ECX)
- INC_L (ECX)
- DEC_L (ECX)
- INC_L (ECX)
- DEC_L (ECX)
-
- INC_L (ECX)
- INC_L (EDX)
- INC_L (EAX)
- CMP_L (ESI,EAX)
- JL (L5)
-L3:
- LEA_L (REGOFF(-8,EBP),ESP)
- POP_L (EBX)
- POP_L (ESI)
- MOV_L (EBP,ESP)
- POP_L (EBP)
- RET
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/SlowBcopy.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/SlowBcopy.c
deleted file mode 100644
index ec2c67ffa..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/SlowBcopy.c
+++ /dev/null
@@ -1,114 +0,0 @@
-
-/* $XConsortium: SlowBcopy.c /main/1 1996/05/07 17:14:10 kaleb $ */
-/*******************************************************************************
- for Alpha Linux
-*******************************************************************************/
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/SlowBcopy.c,v 1.6tsi Exp $ */
-
-/*
- * Create a dependency that should be immune from the effect of register
- * renaming as is commonly seen in superscalar processors. This should
- * insert a minimum of 100-ns delays between reads/writes at clock rates
- * up to 100 MHz---GGL
- *
- * Slowbcopy(char *src, char *dst, int count)
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "compiler.h"
-
-/* The outb() isn't needed on my machine, but who knows ... -- ost */
-void
-xf86SlowBcopy(unsigned char *src, unsigned char *dst, int len)
-{
- while(len--)
- {
- *dst++ = *src++;
-#if !defined(__sparc__) && \
- !defined(__powerpc__) && \
- !defined(__mips__) && \
- !defined(__ia64__)
- outb(0x80, 0x00);
-#endif
- }
-}
-
-#ifdef __alpha__
-/*
- * The Jensen lacks dense memory, thus we have to address the bus via
- * the sparse addressing scheme. Time critical code uses routines from
- * BUSmemcpy.c
- *
- * Martin Ostermann (ost@comnets.rwth-aachen.de) - Apr.-Sep. 1996
- */
-
-#ifdef linux
-
-unsigned long _bus_base(void);
-
-#ifdef TEST_JENSEN_CODE /* define to test the Sparse addressing on a non-Jensen */
-#define SPARSE (5)
-#else
-#define SPARSE (7)
-#endif
-
-#define isJensen() (!_bus_base())
-
-#else
-
-#define isJensen() 0
-#define SPARSE 0
-
-#endif
-
-void
-xf86SlowBCopyFromBus(unsigned char *src, unsigned char *dst, int count)
-{
- if (isJensen())
- {
- unsigned long addr;
- long result;
-
- addr = (unsigned long) src;
- while( count ){
- result = *(volatile int *) addr;
- result >>= ((addr>>SPARSE) & 3) * 8;
- *dst++ = (unsigned char) (0xffUL & result);
- addr += 1<<SPARSE;
- count--;
- outb(0x80, 0x00);
- }
- }
- else
- xf86SlowBcopy(src,dst,count);
-}
-
-void
-xf86SlowBCopyToBus(unsigned char *src, unsigned char *dst, int count)
-{
- if (isJensen())
- {
- unsigned long addr;
-
- addr = (unsigned long) dst;
- while(count) {
- *(volatile unsigned int *) addr = (unsigned short)(*src) * 0x01010101;
- src++;
- addr += 1<<SPARSE;
- count--;
- outb(0x80, 0x00);
- }
- }
- else
- xf86SlowBcopy(src,dst,count);
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/xf86_IlHack.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/xf86_IlHack.c
deleted file mode 100644
index d8053f7d2..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/xf86_IlHack.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/xf86_IlHack.c,v 3.4.4.1 1998/06/04 17:36:01 dawes Exp $ */
-/*
- * This file is an incredible crock to get the normally-inline functions
- * built into the server so that things can be debugged properly.
- *
- * Note: this doesn't work when using a compiler other than GCC.
- */
-/* $XConsortium: xf86_IlHack.c /main/4 1996/02/21 17:52:26 kaleb $ */
-
-
-#define static /**/
-#define __inline__ /**/
-#undef NO_INLINE
-#define DO_PROTOTYPES
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "compiler.h"
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/xf86_Util.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/xf86_Util.c
deleted file mode 100644
index afcdd5b69..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/misc/xf86_Util.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/xf86_Util.c,v 3.7 1999/01/14 13:05:05 dawes Exp $ */
-/*
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: xf86_Util.c /main/5 1996/10/23 13:13:10 kaleb $ */
-
-/*
- * This file is for utility functions that will be shared by other pieces
- * of the system. Putting things here ensure that all the linking order
- * dependencies are dealt with, as this library will be linked in last.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <ctype.h>
-
-/* To prevent empty source file warnings */
-int _xf86misc;
-
-#if 0
-/* For use only with gcc */
-#ifdef __GNUC__
-
-#include "os.h"
-
-char *
-debug_alloca(char *file, int line, int size)
-{
- char *ptr;
-
- ptr = Xalloc(size);
- ErrorF("Alloc: %s line %d; ptr = 0x%x, length = %d\n", file, line,
- ptr, size);
- return ptr;
-}
-
-void
-debug_dealloca(char *file, int line, char *ptr)
-{
- ErrorF("Dealloc: %s line %d; ptr = 0x%x\n", file, line, ptr);
- Xfree(ptr);
-}
-#endif
-#endif
-
-#if defined(ISC) || defined(Lynx)
-
-#include <math.h>
-
-/* Needed for apm_driver.c */
-/* These functions are modeled after the functions inside gnu's libc */
-
-static double
-copysign(double x, double y)
-{
- x = fabs(x);
- return y < 0 ? - x : x;
-}
-
-double
-RInt(double x)
-{
- double s,t;
- const double one = 1.0;
- const static double L = 4503599627370496.0E0;
-
- if (x!=x)
- return(x);
- if (copysign(x,one) >= L)
- return(x);
- s = copysign(L,x);
- t = x + s;
- return (t - s);
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/Imakefile
deleted file mode 100644
index fb7132182..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/Imakefile
+++ /dev/null
@@ -1,37 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/nto/Imakefile,v 1.7 2002/10/11 01:46:59 dawes Exp $
-XCOMM
-
-#include <Server.tmpl>
-
-
-SRCS = nto_io.c nto_init.c nto_kbdEv.c nto_ioperm.c nto_video.c \
- VTsw_noop.c posix_tty.c kmod_noop.c agp_noop.c stdResource.c \
- stdPci.c libc_wrapper.c sigiostubs.c pm_noop.c nto_mouse.c
-
-OBJS = nto_io.o nto_init.o nto_kbdEv.o nto_ioperm.o nto_video.o \
- VTsw_noop.o posix_tty.o kmod_noop.o agp_noop.o stdResource.o \
- stdPci.o libc_wrapper.o sigiostubs.o pm_noop.o nto_mouse.o
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC)
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(RESDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(sigiostubs.c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-
-LinkSourceFile(VTsw_noop.c,../shared)
-LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(agp_noop.c,../shared)
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/README b/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/README
deleted file mode 100644
index 8d262fe08..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/README
+++ /dev/null
@@ -1,29 +0,0 @@
-XFree86 on NTO
-
-Status:
-Everything builds, and appears to work. Libraries are built as shared.
-
-Building:
-Buiding is done as cross-development from QNX4. What you'll need:
-
-QNX4 4.24+
-Neutrino 2.0 x86 runtime and development packages for QNX4 host.
-Various QNX4 utilities, such as pdksh, cpp etc.
-
-To build:
-
-type (from the xc/ directory)
-BOOTSTRAPCFLAGS="-D__QNXNTO__ -Di386 -D__GNUC__" make World 2>&1 | tee make.log
-
-you can also make PPC or MIPS clients (-DPPC or -DMIPS):
-BOOTSTRAPCFLAGS="-D__QNXNTO__ -DPPC -D__GNUC__" make World 2>&1 | tee make.log
-
-Let the build run, and then examine make.log for any errors.
-
-
-Note that we'll very soon be able to build X natively on NTO...
-
-Sebastien Marineau
-sebastien@qnx.com
-
-$XFree86: xc/programs/Xserver/hw/xfree86/os-support/nto/README,v 1.1.2.1 1999/07/29 09:40:14 hohndel Exp $
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_init.c
deleted file mode 100644
index 726a8a5ac..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_init.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * (c) Copyright 1998 by Sebastien Marineau
- * <sebastien@qnx.com>
- *
- * 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
- * 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 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
- * SEBASTIEN MARINEAU 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 Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/nto/nto_init.c,v 1.2 1999/12/27 00:45:45 robin Exp $
- */
-
-/* This module contains the NTO-specific functions used at server init.
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <sys/neutrino.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <sys/dcmd_chr.h>
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-extern int NTO_con_fd;
-
-void
-xf86UseMsg()
-{
- ErrorF("No NTO-specific usage options available at this time\n");
- return;
-}
-
-int
-xf86ProcessArgument(argc, argv, i)
-int argc;
-char **argv;
-int i;
-{
-
- return 0;
-
-}
-
-
-/* Right now, OpenConsole() does not do much; later, we may want to handle
- * console switching and so on....
- */
-
-void
-xf86OpenConsole()
-{
- unsigned flags;
-
-
- ThreadCtl(_NTO_TCTL_IO, 0);
-
- if((NTO_con_fd = open("/dev/con1", O_RDWR)) == -1) {
- ErrorF("Unable to open console\n");
- return;
- }
-
- /* Make the console invisible to prevent devc-con from touching hardware */
- flags = _CONCTL_INVISIBLE | _CONCTL_INVISIBLE_CHG;
- devctl(NTO_con_fd, DCMD_CHR_SERCTL, &flags, sizeof flags, 0);
-
- return;
-}
-
-void
-xf86CloseConsole()
-{
- unsigned flags;
-
- /* Make console visible again */
- flags = _CONCTL_INVISIBLE_CHG;
- devctl(NTO_con_fd, DCMD_CHR_SERCTL, &flags, sizeof flags, 0);
- close(NTO_con_fd);
-
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_io.c
deleted file mode 100644
index 9c32afd35..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_io.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * (c) Copyright 1998 by Sebastien Marineau
- * <sebastien@qnx.com>
- *
- * 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
- * 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 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
- * SEBASTIEN MARINEAU 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 Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/nto/nto_io.c,v 1.4 2002/10/11 01:40:35 dawes Exp $
- */
-
-/* This module contains the NTO-specific functions to access the keyboard
- * and the console.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/mman.h>
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-int NTO_kbd_fd = -1;
-int NTO_con_fd = -1;
-
-void
-xf86SoundKbdBell(loudness, pitch, duration)
-int loudness, pitch, duration;
-{
-
-/* Come back and fix! */
-ErrorF("xf86SoundKbdBell: to implement\n");
-}
-
-void
-xf86SetKbdLeds(leds)
-int leds;
-{
-
-ErrorF("xf86SetKbdLeds: to implement\n");
-}
-
-int
-xf86GetKbdLeds()
-{
- int leds;
-
- leds = 0;
- ErrorF("xf86GetKbdLeds: to implement\n");
- return(leds);
-}
-
-/* This is a no-op for now */
-void
-xf86SetKbdRepeat(rad)
-char rad;
-{
- return;
-}
-
-
-/* Need to open keyboard here ? */
-void
-xf86KbdInit()
-{
-
- ErrorF("xf86KbdInit: to implement\n");
- return;
-}
-
-
-int xf86KbdOn()
-{
- /* Here, we need to open /dev/kbd */
- NTO_kbd_fd = open("/dev/kbd", O_RDWR | O_NONBLOCK);
- ErrorF("Opened keyboard device, handle %d\n",NTO_kbd_fd);
- return(NTO_kbd_fd);
-}
-
-int xf86KbdOff()
-{
- close(NTO_kbd_fd);
- NTO_kbd_fd = -1;
- return (-1);
-}
-
-#include "xf86OSKbd.h"
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_ioperm.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_ioperm.c
deleted file mode 100644
index 67a771ff6..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_ioperm.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 1998 by Sebastien Marineau <sebastien@qnx.com>
- *
- * 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, and that the name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Sebastien Marineau makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * SEBASTIEN MARINEAU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/nto/nto_ioperm.c,v 1.2 1999/12/27 00:45:45 robin Exp $
- */
-
-/* I/O functions to enable access to I/O ports under Neutrino */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <sys/neutrino.h>
-#include <errno.h>
-
-
-Bool xf86EnableIO()
-{
- ErrorF("xf86EnableIO: enabling I/O access\n");
- if(ThreadCtl(_NTO_TCTL_IO, 0)) {
- ErrorF("xf86EnableIO: could not set I/O privilege, errno %d\n",errno);
- return FALSE;
- }
- return TRUE;
-}
-
-void xf86DisableIO()
-{
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_kbdEv.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_kbdEv.c
deleted file mode 100644
index a028de6b6..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_kbdEv.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/nto/nto_kbdEv.c,v 1.2 1999/12/27 00:45:46 robin Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Dawes <dawes@physics.su.oz.au>
- *
- * 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, and that the names of Thomas Roell and David Dawes
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Thomas Roell and
- * David Dawes makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THOMAS ROELL AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: std_kbdEv.c /main/4 1996/03/11 10:47:33 kaleb $ */
-
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "inputstr.h"
-#include "scrnintstr.h"
-
-#include "xf86_OSlib.h"
-
-extern int NTO_kbd_fd;
-
-void xf86KbdEvents()
-{
- unsigned char rBuf[64];
- int nBytes, i;
-
- if ((nBytes = read( NTO_kbd_fd, (char *)rBuf, sizeof(rBuf))) > 0) {
- for (i = 0; i < nBytes; i++) {
- xf86PostKbdEvent(rBuf[i]);
- }
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_mouse.c
deleted file mode 100644
index 2dda8aa32..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_mouse.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Written by Frank Liu Oct 10, 2001
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/nto/nto_mouse.c,v 1.1 2001/11/16 16:47:56 dawes Exp $ */
-
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-
-/* copied from mipointer.h */
-extern int miPointerGetMotionEvents(
- DeviceIntPtr /*pPtr*/,
- xTimecoord * /*coords*/,
- unsigned long /*start*/,
- unsigned long /*stop*/,
- ScreenPtr /*pScreen*/
-);
-
-#include <sys/dcmd_input.h>
-#define NUMEVENTS 64 /* don't want to stuck in the mouse read loop */
-
-/*
- * OsMouseReadInput --
- * Get some events from our queue. Process outstanding events now.
- */
-static void
-OsMouseReadInput(InputInfoPtr pInfo)
-{
- int n = 0;
- int buttons, col, row;
- struct _mouse_packet mp;
- MouseDevPtr pMse;
-
- pMse = pInfo->private;
-
- while ( (read(pInfo->fd, &mp, sizeof(struct _mouse_packet)) > 0 )
- && (n < NUMEVENTS ) )
- {
- col = mp.dx;
- row = -mp.dy;
- buttons = mp.hdr.buttons;
- pMse->PostEvent(pInfo, buttons, col, row, 0, 0);
- n++;
- }
-}
-
-/*
- * OsMouseProc --
- * Handle the initialization, etc. of a mouse
- */
-static int
-OsMouseProc(pPointer, what)
-DeviceIntPtr pPointer;
-int what;
-{
- int nbuttons;
- unsigned char map[MSE_MAXBUTTONS + 1];
- MouseDevPtr pMse;
- InputInfoPtr pInfo;
-
- pInfo = pPointer->public.devicePrivate;
- pMse = pInfo->private;
- pMse->device = pPointer;
-
- switch (what) {
- case DEVICE_INIT:
- pPointer->public.on = FALSE;
-
- for (nbuttons = 0; nbuttons < MSE_MAXBUTTONS; ++nbuttons)
- map[nbuttons + 1] = nbuttons + 1;
-
- InitPointerDeviceStruct((DevicePtr)pPointer,
- map,
- min(pMse->buttons, MSE_MAXBUTTONS),
- miPointerGetMotionEvents,
- pMse->Ctrl,
- miPointerGetMotionBufferSize());
-
- /* X valuator */
- xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 0);
- /* Y valuator */
- xf86InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 1);
- xf86MotionHistoryAllocate(pInfo);
- break;
-
- case DEVICE_ON:
- pInfo->fd = xf86OpenSerial(pInfo->options);
- if (pInfo->fd == -1)
- xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
- else {
- AddEnabledDevice(pInfo->fd);
- }
- pMse->lastButtons = 0;
- pMse->lastMappedButtons = 0;
- pMse->emulateState = 0;
- pPointer->public.on = TRUE;
- break;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- if (pInfo->fd != -1) {
- RemoveEnabledDevice(pInfo->fd);
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
- }
- pPointer->public.on = FALSE;
- break;
- }
- return (Success);
-}
-
-static int
-SupportedInterfaces(void)
-{
- /* FIXME: Is this correct? Should we just return MSE_MISC? */
- return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_MISC | MSE_AUTO;
-}
-
-static const char *internalNames[] = {
- "OSMouse",
- NULL
-};
-
-static const char **
-BuiltinNames(void)
-{
- return internalNames;
-}
-
-static Bool
-CheckProtocol(const char *protocol)
-{
- int i;
-
- for (i = 0; internalNames[i]; i++)
- if (xf86NameCmp(protocol, internalNames[i]) == 0)
- return TRUE;
- return FALSE;
-}
-
-/* XXX Is this appropriate? If not, this function should be removed. */
-static const char *
-DefaultProtocol(void)
-{
- return "OSMouse";
-}
-
-static Bool
-OsMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- MouseDevPtr pMse;
-
- /* This is called when the protocol is "OSMouse". */
-
- pMse = pInfo->private;
- pMse->protocol = protocol;
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
-
- /* Collect the options, and process the common options. */
- xf86CollectInputOptions(pInfo, NULL, NULL);
- xf86ProcessCommonOptions(pInfo, pInfo->options);
-
- /* Check if the device can be opened. */
- pInfo->fd = xf86OpenSerial(pInfo->options);
- if (pInfo->fd == -1) {
- if (xf86GetAllowMouseOpenFail())
- xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
- else {
- xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name);
- xfree(pMse);
- return FALSE;
- }
- }
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
-
- /* Process common mouse options (like Emulate3Buttons, etc). */
- pMse->CommonOptions(pInfo);
-
- /* Setup the local procs. */
- pInfo->device_control = OsMouseProc;
- pInfo->read_input = OsMouseReadInput;
-
- pInfo->flags |= XI86_CONFIGURED;
- return TRUE;
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
- p->SupportedInterfaces = SupportedInterfaces;
- p->BuiltinNames = BuiltinNames;
- p->DefaultProtocol = DefaultProtocol;
- p->CheckProtocol = CheckProtocol;
- p->PreInit = OsMousePreInit;
- return p;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_video.c
deleted file mode 100644
index f78f6864a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/nto/nto_video.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/* (c) Copyright 1998 by Sebastien Marineau
- * <sebastien@qnx.com>
- *
- * 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
- * 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 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
- * SEBASTIEN MARINEAU 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 Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/nto/nto_video.c,v 1.3tsi Exp $
- */
-
-/* This module contains the NTO-specific functions to deal with video
- * framebuffer access and interrupts.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <sys/neutrino.h>
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-
-/* These are the interrupt enabling/disabling functions.
- */
-
-void xf86EnableInterrupts()
-{
- InterruptEnable();
-}
-
-Bool xf86DisableInterrupts()
-{
- InterruptDisable();
- return 0;
-}
-
-/* These are the routines to map/unmap video memory... */
-
-Bool xf86LinearVidMem()
-{
- /* Yes we can... */
- return(TRUE);
-}
-
-/* This is our shmem "Physical" handle */
-int NTO_PhMem_fd = -1;
-
-
-/* Map a chunk of physical video memory, using mmap */
-pointer
-xf86MapVidMem(int ScreenNum, int Flags, unsigned long Base, unsigned long Size)
-{
- int fd;
- pointer base;
-
- if(NTO_PhMem_fd < 0) {
- if ((fd = open("/dev/mem", O_RDWR, 0777)) < 0) {
- FatalError("xf86MapVidMem: Failed to open /dev/mem\n");
- }
- NTO_PhMem_fd = fd;
- }
-
- base = mmap((caddr_t)0, Size,
- (Flags & VIDMEM_READONLY) ? PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_SHARED, NTO_PhMem_fd, (off_t)Base);
-
- ErrorF("MapVidMem: addr %08x size %08x addr %08x\n", Base, Size, base);
- if ((long)base == -1) {
- FatalError("xf86MapVidMem: Failed to mmap video memory\n");
- }
-
- return base;
-}
-
-/* ARGSUSED */
-void
-xf86UnMapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
-
- ErrorF("xf86UnmapVidMem: base %x size %x\n", Base, Size);
- munmap((caddr_t) Base, Size);
-
-}
-
-/* Finally, this function allows us to read the video BIOS content */
-
-int
-xf86ReadBIOS(Base, Offset, Buf, Len)
-unsigned long Base, Offset;
-unsigned char *Buf;
-int Len;
-{
- unsigned char * VirtBase;
-
- ErrorF("xf86ReadBIOS: base %x offset %x len %x\n", Base, Offset, Len);
-
- if (NTO_PhMem_fd == -1) {
- if ((NTO_PhMem_fd = open("/dev/mem", O_RDWR, 0777)) < 0) {
- FatalError("xf86ReadBIOS: cannot open Physical memory\n");
- }
- }
-
- /* Use mmap to map BIOS region. Note the restrictions on
- * mmap alignement of offset variable (which must be on a page
- * boundary).
- */
- VirtBase = (unsigned char *) mmap(0, (size_t)((Offset & 0x7fff) + Len), PROT_READ,
- MAP_SHARED, NTO_PhMem_fd, (off_t) (Base + (Offset & 0xffff8000)));
- if((long)VirtBase == -1) {
- FatalError( "xf86ReadBIOS: Could not mmap BIOS memory space, errno=%i\n", errno);
- }
-
- /* So now we have our mapping to the BIOS region */
-
- /* Do a sanity check on what we have just mapped */
- if (((off_t)((off_t)Offset & 0x7FFF) != (off_t)0) &&
- (VirtBase[0] != 0x55) &&
- (VirtBase[1] != 0xaa)) {
- ErrorF( "xf86ReadBIOS: BIOS sanity check failed, addr=%x\n",
- (int)Base + Offset);
- munmap(VirtBase, (Offset & 0x7fff) + Len);
- return -1;
- }
-
- /* Things look good: copy BIOS data */
- memcpy(Buf, VirtBase + (Offset & 0x7fff), Len);
- munmap(VirtBase, (Offset & 0x7fff) + Len);
-
- return Len;
-}
-
-void
-xf86MapReadSideEffects(int ScreenNum, int Flags, pointer base,
- unsigned long Size)
-{
- return;
-}
-
-Bool
-xf86CheckMTRR(int s)
-{
- return FALSE;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/Imakefile
deleted file mode 100644
index 6659da9be..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/Imakefile
+++ /dev/null
@@ -1,45 +0,0 @@
-XCOMM $XConsortium: Imakefile /main/7 1996/09/28 17:24:18 rws $
-
-
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/Imakefile,v 3.20 2002/10/17 02:22:48 dawes Exp $
-#include <Server.tmpl>
-
-BIOS_MOD = os2_bios
-
-SRCS = os2_init.c os2_video.c os2_io.c $(BIOS_MOD).c \
- os2_ioperm.c os2_VTsw.c os2_mouse.c os2_KbdEv.c os2_stubs.c \
- os2_select.c os2_diag.c libc_wrapper.c stdResource.c stdPci.c \
- vidmem.c sigiostubs.c pm_noop.c kmod_noop.c agp_noop.c os2_serial.c \
- os2_kbd.c
-
-OBJS = os2_init.o os2_video.o os2_io.o $(BIOS_MOD).o \
- os2_ioperm.o os2_VTsw.o os2_mouse.o os2_kbdEv.o os2_stubs.o \
- os2_select.o os2_diag.o libc_wrapper.o stdResource.o stdPci.o \
- vidmem.o sigiostubs.o pm_noop.o kmod_noop.o agp_noop.o os2_serial.o \
- os2_kbd.o
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(SERVERSRC)/mi -I$(XINCLUDESRC) -I$(EXTINCSRC)
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(RESDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-NormalAsmObjectRule()
-
-LinkSourceFile(VTsw_noop.c,../shared)
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(vidmem.c,../shared)
-LinkSourceFile(sigiostubs.c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(agp_noop.c,../shared)
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/README b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/README
deleted file mode 100644
index d07059eed..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/README
+++ /dev/null
@@ -1,78 +0,0 @@
-Information on files in this directory
---------------------------------------
-\xc\programs\xserver\hw\xfree86\os-support\os2
-
-The files in this directory form the OS-dependent porting layer of
-XFree86 for OS/2. They are the work of:
-
- Holger Veit <Holger.Veit@gmd.de>
- Sebastien Marineau <marineau@genie.uottawa.ca>
-
-Some functions which were absent from OS/2,
-such as direct access to IO ports and the mapping of physical memory,
-are implemented in a device-driver written for this purpose by Holger Veit
-<Holger.Veit@gmd.de>. The driver also implements several functions
-necessary for xterm.
-The driver should be installed in the config.sys with a line:
-
-DEVICE=path\XF86SUP.SYS
-
-The following gives a brief overview of the implementation of the
-porting layer, and lists some of the "gotchas" when modifying the source.
-
-BIOS and physical memory mapping: This is handled by the functions in XF86SUP.SYS driver.
-
-IO permission: Handled by a function in the XF86SUP.SYS driver. Essentially, IO permissions
-are granted for the whole Xserver at server initialisation. The device-driver sets the IOPL
-level to ring 3 for the Xserver, which in essence gives it the same IO privileges that a
-device-driver has. Note the danger here: the Xserver can write to any IO port it wishes,
-and can disable interrupts (something which it does), thus can potentially hang the system.
-
-VT switching (switching back and forth to the WPS): This is handled by the keyboard driver,
-i.e. the stardard keyboard sequences (CTRL-ESC etc.) trigger the switch back to PM. The
-Xserver is notified of switches by the VIO function VIOSavRedrawWait(), which is run in
-a separate thread. When a switch to/from PM is requested, this function call unblocks, and
-the Xserver either saves or restores the video buffer and video mode. Note that semaphores
-are used to communicate with the main Xserver thread, and handle cases such as server
-reset while the server has lost focus etc.
-A similar mechanism is used to handle hard-error popups. A thread is run which blocks
-on the VIOModeWait() function. When a hard-error notification occurs, the Xserver attempts
-to recover by resetting the screen. Note that, due to some (probable) bugs in the OS/2
-video drivers, this does not always work as expected. According to the specs, the OS/2
-video drivers are supposed to restore the palette when returning from a hard-error. This
-does not seem to be always the case..... so the palette in X may be screwed up after the
-hard-error.
-
-Keyboard input: because X needs all keyboard event to function (both keypresses, key
-releases, for all keys), the keyboard input was implemented by registering a keyboard
-monitor for the Xserver. The keyboard monitor is run in a separate thread, and sends
-the keystrokes back to the Xserver main thread through a queue. Another thread is
-also started, whose purpose is to "eat" the keystrokes returned by KbdCharIn(). Note that
-the monitor was necessary because the OS/2 keyboard driver does not pass all keystrokes
-to the application calling KbdCharIn().
-
-Mouse input: This was implemented similarly to the keyboard input: mouse events are
-read in a thread, which then passes them to the main Xserver thread through a queue.
-
-Select: this unix and emx function has been reimplemented and optimized for the xserver.
-Because of the need to handle input from pipes, sockets, the mouse and keyboard (which
-select() in unix does but the EMX select does not), it was decided to rewrite it in
-order to minimize CPU usage and maximize responsiveness. Essentially, select() blocks on
-a MuxWait semaphore, and unblocks when input is available from pipes, the mouse and the
-keyboard. The MuxWait semaphore times out every timeslice, so that sockets can be checked
-for activity (unfortunately, sockets are not well-handled in the OS/2 TCPIP and one cannot
-attach a semaphore to a socket). There is also the possibility of using the high-resolution
-timer (found in Merlin) to check sockets more often than every timeslice.
-*** Important: in order to maximize speed, certain shortcuts are utilized in this
-implementation of select(), which makes it unsuitable as a general-purpose function. Also,
-it is imperative that the EMX select() never be called from the Xserver! ***
-
-
-If you wish to modify the source, be aware that there may be very good reasons as
-to why certain things were done this way. Usually, if certain function implementations
-appear unnecessarily complicated, it is probably because there were subtle problems
-with the simpler solutions. Due to the complexity of the Xserver code, and the
-differences between OS/2 and unix, there are many potential pitfalls.
-
-$XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/README,v 3.1 1996/01/30 15:26:27 dawes Exp $
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/Imakefile
deleted file mode 100644
index a323229bf..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/Imakefile
+++ /dev/null
@@ -1,110 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/int10/Imakefile,v 1.1 2000/04/05 18:13:55 dawes Exp $
-
-#define IHaveModules
-
-#include <Server.tmpl>
-
-SRCS1 = pci.c xf86int10module.c helper_exec.c helper_mem.c xf86int10.c
-OBJS1 = pci.o xf86int10module.o helper_exec.o helper_mem.o xf86int10.o
-
-LinkSourceFile(helper_mem.c,$(XF86SRC)/int10)
-LinkSourceFile(helper_exec.c,$(XF86SRC)/int10)
-LinkSourceFile(xf86int10.c,$(XF86SRC)/int10)
-LinkSourceFile(pci.c,$(XF86SRC)/int10)
-LinkSourceFile(xf86int10module.c,$(XF86SRC)/int10)
-LinkSourceFile(xf86x86emu.c,$(XF86SRC)/int10)
-LinkSourceFile(generic.c,$(XF86SRC)/int10)
-
-INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86SRC)/int10 \
- -I$(XF86OSSRC) \
- -I$(SERVERSRC)/include -I$(XINCLUDESRC)
-
-DEFINES=-DHAVE_SYSV_IPC
-
-#if 0
-/* debugging stuff */
-#DEFINES =-D_PC
-#undef XF86INT10_BUILD
-#define XF86INT10_BUILD X86EMU_GENERIC
-#define X86EMU_LIBPATH /usr/local/lib
-#endif
-
-#if defined(i386Architecture)
-DEFINES =-D_PC
-#endif
-
-/* XXX keep this temporarily for reference */
-#if 0
-#if (XF86INT10_BUILD == X86EMU_GENERIC)
-
-SRCS = $(SRCS1) xf86x86emu.c generic.c
-OBJS = $(OBJS1) xf86x86emu.o generic.o x86emu.o
-SpecialObjectRule(pci.o, pci.c, -D_X86EMU)
-SpecialObjectRule(helper_exec.o, helper_exec.c, -D_X86EMU)
-SpecialObjectRule(xf86int10.o, xf86int10.c, -D_X86EMU -DSHOW_ALL_DEVICES)
-SpecialObjectRule(generic.o, generic.c, -D_X86EMU)
-SpecialObjectRule(xf86x86emu.o, xf86x86emu.c, -D_X86EMU)
-BuildObjectFromLibraryWithPath(X86EMU_LIBPATH,x86emu,x86emu)
-#endif
-#endif
-
-#if defined(XF86INT10_BUILD) && (XF86INT10_BUILD == X86VM)
-
-SRCS = $(SRCS1) linux.c
-OBJS = $(OBJS1) linux.o
-SpecialObjectRule(pci.o, pci.c, -D_VM86_LINUX)
-SpecialObjectRule(helper_exec.o, helper_exec.c, -D_VM86_LINUX)
-SpecialObjectRule(xf86int10.o, xf86int10.c, -D_VM86_LINUX -DSHOW_ALL_DEVICES)
-SpecialObjectRule(linux.o, linux.c, -D_VM86_LINUX -DHAVE_SYSV_IPC)
-
-#elif (XF86INT10_BUILD == X86EMU_OS)
-
-SpecialObjectRule(pci.o, pci.c, -D_X86EMU)
-SpecialObjectRule(helper_exec.o, helper_exec.c, -D_X86EMU)
-SpecialObjectRule(xf86int10.o, xf86int10.c, -D_X86EMU -DSHOW_ALL_DEVICES)
-SpecialObjectRule(linux.o, linux.c, -D_X86EMU -DHAVE_SYSV_IPC)
-
-X86TOPDIR = $(TOP)/extras/x86emu
-X86SRCDIR = $(X86TOPDIR)/src/x86emu
-X86EMUINCLUDES = -I$(X86TOPDIR)/include -I$(X86SRCDIR)
-
-# if !defined(X86EMU_LIBPATH)
-X86EMUSRCS = debug.c decode.c fpu.c ops.c ops2.c prim_ops.c sys.c
-X86EMUOBJS = debug.o decode.o fpu.o ops.o ops2.o prim_ops.o sys.o
-
-LinkSourceFile(debug.c,$(X86SRCDIR))
-LinkSourceFile(decode.c,$(X86SRCDIR))
-LinkSourceFile(fpu.c,$(X86SRCDIR))
-LinkSourceFile(ops.c,$(X86SRCDIR))
-LinkSourceFile(ops2.c,$(X86SRCDIR))
-LinkSourceFile(prim_ops.c,$(X86SRCDIR))
-LinkSourceFile(sys.c,$(X86SRCDIR))
-# else
-BuildObjectFromLibraryWithPath(X86EMU_LIBPATH,x86emu,x86emu)
-X86EMUOBJS = x86emu.o
-# endif
-
-SRCS = $(SRCS1) xf86x86emu.c linux.c $(X86EMUSRCS)
-OBJS = $(OBJS1) xf86x86emu.o linux.o $(X86EMUOBJS)
-
-#endif
-
-#if defined(XF86INT10_BUILD) && XF86INT10_BUILD > X86EMU_GENERIC
-
-LibraryModuleTarget(int10, $(OBJS))
-
-InstallLibraryModule(int10,$(MODULEDIR),linux)
-
-all::
- @(set -x; cd ../..; \
- RemoveFile(LibraryTargetName(int10)); \
- $(LN) linux/int10/LibraryTargetName(int10) . )
-
-InstallDriverSDKLibraryModule(int10,$(DRIVERSDKMODULEDIR),.)
-
-InstallDriverSDKNonExecFile(../../int10/xf86int10.h,$(DRIVERSDKINCLUDEDIR))
-
-#endif
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/os2.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/os2.c
deleted file mode 100644
index d01cfb373..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/int10/os2.c
+++ /dev/null
@@ -1,452 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/int10/os2.c,v 1.3 2001/04/30 14:34:58 tsi Exp $ */
-/*
- * XFree86 int10 module
- * execute BIOS int 10h calls in x86 real mode environment
- * Copyright 1999 Egbert Eich
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86str.h"
-#include "xf86_OSproc.h"
-#include "xf86_ansic.h"
-#include "xf86Pci.h"
-#include "compiler.h"
-#define _INT10_PRIVATE
-#include "xf86int10.h"
-#include "int10Defines.h"
-
-static CARD8 read_b(xf86Int10InfoPtr pInt,int addr);
-static CARD16 read_w(xf86Int10InfoPtr pInt,int addr);
-static CARD32 read_l(xf86Int10InfoPtr pInt,int addr);
-static void write_b(xf86Int10InfoPtr pInt,int addr, CARD8 val);
-static void write_w(xf86Int10InfoPtr pInt,int addr, CARD16 val);
-static void write_l(xf86Int10InfoPtr pInt,int addr, CARD32 val);
-
-/*
- * the emulator cannot pass a pointer to the current xf86Int10InfoRec
- * to the memory access functions therefore store it here.
- */
-
-typedef struct {
- int shift;
- int pagesize_1;
- int entries;
- void* vRam;
- memType *alloc_rec;
-} genericInt10Priv;
-
-#define INTPriv(x) ((genericInt10Priv*)x->private)
-
-int10MemRec genericMem = {
- read_b,
- read_w,
- read_l,
- write_b,
- write_w,
- write_l
-};
-
-static void MapVRam(xf86Int10InfoPtr pInt);
-static void UnmapVRam(xf86Int10InfoPtr pInt);
-static void setupTable(xf86Int10InfoPtr pInt, memType address,
- int loc,int size);
-
-static void *sysMem = NULL;
-
-xf86Int10InfoPtr
-xf86InitInt10(int entityIndex)
-{
- xf86Int10InfoPtr pInt;
- int screen;
- void* intMem;
- void* vbiosMem;
- int pagesize;
- int entries;
- int shift;
- legacyVGARec vga;
-
- screen = (xf86FindScreenForEntity(entityIndex))->scrnIndex;
-
- if (int10skip(xf86Screens[screen],entityIndex))
- return NULL;
-
- pInt = (xf86Int10InfoPtr)xnfcalloc(1,sizeof(xf86Int10InfoRec));
- pInt->entityIndex = entityIndex;
- if (!xf86Int10ExecSetup(pInt))
- goto error0;
- pInt->mem = &genericMem;
- pagesize = xf86getpagesize();
- pInt->private = (pointer)xnfcalloc(1,sizeof(genericInt10Priv));
- entries = SYS_SIZE / pagesize;
-
- pInt->scrnIndex = screen;
- INTPriv(pInt)->pagesize_1 = pagesize - 1;
- INTPriv(pInt)->entries = entries;
- INTPriv(pInt)->alloc_rec =
- xnfcalloc(1,sizeof(memType) * entries);
- for (shift = 0 ; (pagesize >> shift) ; shift++) {};
- shift -= 1;
- INTPriv(pInt)->shift = shift;
-
- /*
- * we need to map video RAM MMIO as some chipsets map mmio
- * registers into this range.
- */
-
- MapVRam(pInt);
- intMem = xnfalloc(pagesize);
- setupTable(pInt,(memType)intMem,0,pagesize);
- vbiosMem = xnfalloc(V_BIOS_SIZE);
-
-#ifdef _PC
- if (!sysMem)
- sysMem = xf86MapVidMem(screen,VIDMEM_FRAMEBUFFER,SYS_BIOS,BIOS_SIZE);
- setupTable(pInt,(memType)sysMem,SYS_BIOS,BIOS_SIZE);
- if (xf86ReadBIOS(0,0,(unsigned char *)intMem,LOW_PAGE_SIZE) < 0) {
- xf86DrvMsg(screen,X_ERROR,"Cannot read int vect\n");
- goto error1;
- }
- if (xf86IsEntityPrimary(entityIndex)) {
- int size;
- int cs = MEM_RW(pInt,((0x10<<2)+2));
-
-int i,k,m;
-char buf[100], hx[10];
-for (i=0; i<0x100; i+=16) {
-sprintf(buf,"%04x: ",i);
-for (k=0; k<16; k++) {
- m = MEM_RB(pInt,i+k);
- sprintf(hx,"%02x ",((unsigned)m)&0xff);
- strcat(buf,hx);
-}
-xf86DrvMsg(screen,X_INFO,"%s\n",buf);
-}
-
-
-
- xf86DrvMsg(screen,X_INFO,"Primary V_BIOS segmant is: 0x%x\n",cs);
- if (xf86ReadBIOS(cs << 4,0,(unsigned char *)vbiosMem,
- 0x10) < 0) {
- xf86DrvMsg(screen,X_ERROR,"Cannot read V_BIOS (1)\n");
- goto error1;
- }
- if (!((*(CARD8*)vbiosMem == 0x55)
- && (*((CARD8*)vbiosMem + 1) == 0xAA))) {
- xf86DrvMsg(screen,X_ERROR,"No V_BIOS found\n");
- goto error1;
- }
-
- size = *((CARD8*)vbiosMem + 2) * 512;
- if (xf86ReadBIOS(cs << 4,0,vbiosMem, size) < 0) {
- xf86DrvMsg(screen,X_ERROR,"Cannot read V_BIOS (2)\n");
- goto error1;
- }
-
- setupTable(pInt,(memType)vbiosMem,cs<<4,size);
- set_return_trap(pInt);
- pInt->BIOSseg = cs;
- } else {
- reset_int_vect(pInt);
- set_return_trap(pInt);
- if (!mapPciRom(pInt,(unsigned char *)(vbiosMem))) {
- xf86DrvMsg(screen,X_ERROR,"Cannot read V_BIOS (3)\n");
- goto error1;
- }
- setupTable(pInt,(memType)vbiosMem,V_BIOS,V_BIOS_SIZE);
- pInt->BIOSseg = V_BIOS >> 4;
- pInt->num = 0xe6;
- LockLegacyVGA(pInt, &vga);
- xf86ExecX86int10(pInt);
- UnlockLegacyVGA(pInt, &vga);
- }
-#else
- if (!sysMem) {
- sysMem = xnfalloc(BIOS_SIZE);
- setup_system_bios((memType)sysMem);
- }
- setupTable(pInt,(memType)sysMem,SYS_BIOS,BIOS_SIZE);
- setup_int_vect(pInt);
- set_return_trap(pInt);
- if (!mapPciRom(pInt,(unsigned char *)(vbiosMem))) {
- xf86DrvMsg(screen,X_ERROR,"Cannot read V_BIOS (4)\n");
- goto error1;
- }
- setupTable(pInt,(memType)vbiosMem,V_BIOS,V_BIOS_SIZE);
- pInt->BIOSseg = V_BIOS >> 4;
- pInt->num = 0xe6;
- LockLegacyVGA(pInt, &vga);
- xf86ExecX86int10(pInt);
- UnlockLegacyVGA(pInt, &vga);
-#endif
- return pInt;
-
- error1:
- xfree(vbiosMem);
- xfree(intMem);
- UnmapVRam(pInt);
- xfree(INTPriv(pInt)->alloc_rec);
- xfree(pInt->private);
- error0:
- xfree(pInt);
-
- return NULL;
-}
-
-static void
-MapVRam(xf86Int10InfoPtr pInt)
-{
- int screen = pInt->scrnIndex;
- int pagesize = INTPriv(pInt)->pagesize_1 + 1;
- int size = ((VRAM_SIZE + pagesize - 1)/pagesize) * pagesize;
- INTPriv(pInt)->vRam = xf86MapVidMem(screen,VIDMEM_MMIO,V_RAM,size);
-}
-
-static void
-UnmapVRam(xf86Int10InfoPtr pInt)
-{
- int screen = pInt->scrnIndex;
- int pagesize = INTPriv(pInt)->pagesize_1 + 1;
- int size = ((VRAM_SIZE + pagesize - 1)/pagesize) * pagesize;
-
- xf86UnMapVidMem(screen,INTPriv(pInt)->vRam,size);
-}
-
-Bool
-MapCurrentInt10(xf86Int10InfoPtr pInt)
-{
- /* nothing to do here */
- return TRUE;
-}
-
-void
-xf86FreeInt10(xf86Int10InfoPtr pInt)
-{
- int pagesize;
-
- if (!pInt)
- return;
- pagesize = INTPriv(pInt)->pagesize_1 + 1;
- if (Int10Current == pInt)
- Int10Current = NULL;
- xfree(INTPriv(pInt)->alloc_rec[V_BIOS/pagesize]);
- xfree(INTPriv(pInt)->alloc_rec[0]);
- UnmapVRam(pInt);
- xfree(INTPriv(pInt)->alloc_rec);
- xfree(pInt->private);
- xfree(pInt);
-}
-
-void *
-xf86Int10AllocPages(xf86Int10InfoPtr pInt,int num, int *off)
-{
- void* addr;
- int pagesize = INTPriv(pInt)->pagesize_1 + 1;
- int num_pages = INTPriv(pInt)->entries;
- int i,j;
-
- for (i=0;i<num_pages - num;i++) {
- if (INTPriv(pInt)->alloc_rec[i] == 0) {
- for (j=i;j < num + i;j++)
- if ((INTPriv(pInt)->alloc_rec[j] != 0))
- break;
- if (j == num + i)
- break;
- else
- i = i + num;
- }
- }
- if (i == num_pages - num)
- return NULL;
-
- *off = i * pagesize;
- addr = xnfalloc(pagesize * num);
- setupTable(pInt,(memType)addr,*off,pagesize * num);
-
- return addr;
-}
-
-void
-xf86Int10FreePages(xf86Int10InfoPtr pInt, void *pbase, int num)
-{
- int num_pages = INTPriv(pInt)->entries;
- int i,j;
- for (i = 0;i<num_pages - num; i++)
- if (INTPriv(pInt)->alloc_rec[i]==(memType)pbase) {
- for (j = 0; j < num; j++)
- INTPriv(pInt)->alloc_rec[i] = 0;
- break;
- }
- xfree(pbase);
- return;
-}
-
-static void
-setupTable(xf86Int10InfoPtr pInt, memType address,int loc,int size)
-{
- int pagesize = INTPriv(pInt)->pagesize_1 + 1;
- int i,j,num;
-
- i = loc / pagesize;
- num = (size + pagesize - 1)/ pagesize; /* round up to the nearest page */
- /* boudary if size is not */
- /* multiple of pagesize */
- for (j = 0; j<num; j++) {
- INTPriv(pInt)->alloc_rec[i+j] = address;
- address += pagesize;
- }
-}
-
-#define OFF(addr) \
- ((addr) & (INTPriv(pInt)->pagesize_1))
-#define SHIFT \
- (INTPriv(pInt)->shift)
-#define BASE(addr,shift) \
- (INTPriv(pInt)->alloc_rec[addr >> shift])
-#define V_ADDR(addr,shift,off) \
- (BASE(addr,shift) + (off))
-#define VRAM_ADDR(addr) (addr - 0xA0000)
-#define VRAM_BASE (INTPriv(pInt)->vRam)
-
-#define VRAM(addr) ((addr >= 0xA0000) && (addr <= 0xBFFFF))
-#define V_ADDR_RB(addr,shift,off) \
- (VRAM(addr)) ? MMIO_IN8((CARD8*)VRAM_BASE,VRAM_ADDR(addr)) \
- : *(CARD8*) V_ADDR(addr,shift,off)
-#define V_ADDR_RW(addr,shift,off) \
- (VRAM(addr)) ? MMIO_IN16((CARD16*)VRAM_BASE,VRAM_ADDR(addr)) \
- : ldw_u((pointer)V_ADDR(addr,shift,off))
-#define V_ADDR_RL(addr,shift,off) \
- (VRAM(addr)) ? MMIO_IN32((CARD32*)VRAM_BASE,VRAM_ADDR(addr)) \
- : ldl_u((pointer)V_ADDR(addr,shift,off))
-
-#define V_ADDR_WB(addr,shift,off,val) \
- if(VRAM(addr)) \
- MMIO_OUT8((CARD8*)VRAM_BASE,VRAM_ADDR(addr),val); \
- else \
- *(CARD8*) V_ADDR(addr,shift,off) = val;
-#define V_ADDR_WW(addr,shift,off,val) \
- if(VRAM(addr)) \
- MMIO_OUT16((CARD16*)VRAM_BASE,VRAM_ADDR(addr),val); \
- else \
- stw_u((val),(pointer)(V_ADDR(addr,shift,off)));
-
-#define V_ADDR_WL(addr,shift,off,val) \
- if (VRAM(addr)) \
- MMIO_OUT32((CARD32*)VRAM_BASE,VRAM_ADDR(addr),val); \
- else \
- stl_u(val,(pointer)(V_ADDR(addr,shift,off)));
-
-static CARD8
-read_b(xf86Int10InfoPtr pInt, int addr)
-{
- if (!BASE(addr,SHIFT)) return 0xff;
-
- return V_ADDR_RB(addr,SHIFT,OFF(addr));
-}
-
-static CARD16
-read_w(xf86Int10InfoPtr pInt, int addr)
-{
- int shift = SHIFT;
- int off = OFF(addr);
-
- if (!BASE(addr,shift)) return 0xffff;
-
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- return ((V_ADDR_RB(addr,shift,off))
- || ((V_ADDR_RB(addr,shift,off + 1)) << 8));
-#else
- if (OFF(addr + 1) > 0) {
- return V_ADDR_RW(addr,SHIFT,OFF(addr));
- } else {
- return ((V_ADDR_RB(addr,shift,off + 1))
- || ((V_ADDR_RB(addr,shift,off)) << 8));
- }
-#endif
-}
-
-static CARD32
-read_l(xf86Int10InfoPtr pInt, int addr)
-{
- int shift = SHIFT;
- int off = OFF(addr);
-
- if (!BASE(addr,shift)) return 0xffffffff;
-
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- return ((V_ADDR_RB(addr,shift,off))
- || ((V_ADDR_RB(addr,shift,off + 1)) << 8)
- || ((V_ADDR_RB(addr,shift,off + 2)) << 16)
- || ((V_ADDR_RB(addr,shift,off + 3)) << 24));
-#else
- if (OFF(addr + 3) > 2) {
- return V_ADDR_RL(addr,SHIFT,OFF(addr));
- } else {
- return ((V_ADDR_RB(addr,shift,off + 3))
- || ((V_ADDR_RB(addr,shift,off + 2)) << 8)
- || ((V_ADDR_RB(addr,shift,off + 1)) << 16)
- || ((V_ADDR_RB(addr,shift,off)) << 24));
- }
-#endif
-}
-
-static void
-write_b(xf86Int10InfoPtr pInt, int addr, CARD8 val)
-{
- if (!BASE(addr,SHIFT)) return;
-
- V_ADDR_WB(addr,SHIFT,OFF(addr),val);
-}
-
-static void
-write_w(xf86Int10InfoPtr pInt, int addr, CARD16 val)
-{
- int shift = SHIFT;
- int off = OFF(addr);
-
- if (!BASE(addr,shift)) return;
-
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- V_ADDR_WB(addr,shift,off,val);
- V_ADDR_WB(addr,shift,off + 1,val >> 8);
-#else
- if (OFF(addr + 1) > 0) {
- V_ADDR_WW(addr,shift,OFF(addr),val);
- } else {
- V_ADDR_WB(addr,shift,off + 1,val);
- V_ADDR_WB(addr,shift,off,val >> 8);
- }
-#endif
-}
-
-static void
-write_l(xf86Int10InfoPtr pInt, int addr, CARD32 val)
-{
- int shift = SHIFT;
- int off = OFF(addr);
- if (!BASE(addr,shift)) return;
-
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- V_ADDR_WB(addr,shift,off,val);
- V_ADDR_WB(addr,shift,off + 1, val >> 8);
- V_ADDR_WB(addr,shift,off + 2, val >> 16);
- V_ADDR_WB(addr,shift,off + 3, val >> 24);
-#else
- if (OFF(addr + 3) > 2) {
- V_ADDR_WL(addr,shift,OFF(addr),val);
- } else {
- V_ADDR_WB(addr,shift,off + 3, val);
- V_ADDR_WB(addr,shift,off + 2, val >> 8);
- V_ADDR_WB(addr,shift,off + 1, val >> 16);
- V_ADDR_WB(addr,shift,off, val >> 24);
- }
-#endif
-}
-
-pointer
-xf86int10Addr(xf86Int10InfoPtr pInt, CARD32 addr)
-{
- return (pointer) V_ADDR(addr,SHIFT,OFF(addr));
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_VTsw.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_VTsw.c
deleted file mode 100644
index e050a62cb..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_VTsw.c
+++ /dev/null
@@ -1,340 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_VTsw.c,v 3.13 2003/06/10 17:03:54 dawes Exp $ */
-/*
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- * Modified 1996 by Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * 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, and that the name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: os2_VTsw.c /main/7 1996/05/13 16:37:55 kaleb $ */
-
-#define I_NEED_OS2_H
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#define INCL_WINSWITCHLIST
-#define INCL_VIO
-#define INCL_KBD
-#define INCL_DOSPROCESS
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSERRORS
-#undef RT_FONT
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "atKeynames.h"
-
-BOOL SwitchedToWPS=FALSE;
-BOOL WaitingForAccess=FALSE;
-void os2PostKbdEvent();
-HEV hevServerHasFocus;
-HEV hevSwitchRequested;
-HEV hevErrorPopupDetected;
-extern HEV hevPopupPending;
-extern HEV hSwitchToSem;
-BOOL os2PopupErrorPending=FALSE;
-
-/*
- * Added OS/2 code to handle switching back to WPS
- */
-
-
-Bool xf86VTSwitchPending()
-{
- return(xf86Info.vtRequestsPending ? TRUE : FALSE);
-}
-
-Bool xf86VTSwitchAway()
-{
- APIRET rc;
- ULONG drive;
-
- xf86Info.vtRequestsPending=FALSE;
- SwitchedToWPS=TRUE;
-
- rc = DosQuerySysInfo(5,5,&drive,sizeof(drive));
- rc = DosSuppressPopUps(0x0000L,drive+96); /* Disable popups */
- DosPostEventSem(hevSwitchRequested);
- usleep(30000);
- return(TRUE);
-}
-
-Bool xf86VTSwitchTo()
-{
- APIRET rc;
- ULONG drive,postCount;
-
- xf86Info.vtRequestsPending=FALSE;
- SwitchedToWPS=FALSE;
- rc = DosResetEventSem(hSwitchToSem,&postCount);
- DosPostEventSem(hevSwitchRequested);
- rc = DosQuerySysInfo(5,5,&drive,sizeof(drive));
- rc = DosSuppressPopUps(0x0001L,drive+96); /* Disable popups */
-
- /* We reset the state of the control key */
- os2PostKbdEvent(KEY_LCtrl,1);
- os2PostKbdEvent(KEY_LCtrl,0);
- os2PostKbdEvent(KEY_RCtrl,1);
- os2PostKbdEvent(KEY_RCtrl,0);
- os2PostKbdEvent(KEY_Alt,1);
- os2PostKbdEvent(KEY_Alt,0);
- return(TRUE);
-}
-
-
-/* This function is run as a thread and will notify of switch-to/switch-away events */
-void os2VideoNotify(arg)
-void * arg;
-{
- USHORT Indic;
- USHORT NotifyType;
- APIRET rc;
- ULONG postCount;
- Bool FirstTime=TRUE;
- int timeout_count;
-
- rc=DosCreateEventSem(NULL,&hevServerHasFocus,0L,FALSE);
- rc=DosPostEventSem(hevServerHasFocus);
- rc=DosCreateEventSem(NULL,&hevSwitchRequested,0L,FALSE);
- rc=DosPostEventSem(hevSwitchRequested);
-
-
- while(1) {
- Indic=0;
- rc=VioSavRedrawWait(Indic,&NotifyType,(HVIO)0);
-
-/* Here we handle the semaphore used to indicate wether we have screen access */
- if(NotifyType==0) rc=DosResetEventSem(hevServerHasFocus,&postCount);
- if(FirstTime){
- FirstTime=FALSE;
- if(NotifyType==1) NotifyType=65535; /* In case a redraw is requested on first call */
- }
-
- if(NotifyType==1){
-/* Notify os2PseudoSelect() that we are back */
- rc=DosPostEventSem(hSwitchToSem);
- if (rc) xf86Msg(X_ERROR,"Post SwitchToSem returned %d\n");
-/* Sanity check */
- if (!SwitchedToWPS) {
- xf86Msg(X_ERROR,
- "Abnormal switching back to server detected\n");
- }
- }
-
-/* Here we set the semaphore used to indicate switching request */
-
- if((NotifyType!=65535)&&(!WaitingForAccess)) {
- rc=DosResetEventSem(hevSwitchRequested,&postCount);
- xf86Info.vtRequestsPending=TRUE;
-/* Then wait for semaphore to be posted once switch is complete. Wait 20 secs, then kill server */
- timeout_count=0;
- rc=DosSetPriority(2,3,0,1);
- do {
- rc=DosWaitEventSem(hevSwitchRequested,1000L);
- if(rc==ERROR_TIMEOUT){
- timeout_count++;
- if(timeout_count>25){
- xf86Msg(X_ERROR,
- "Server timeout on VT switch request. Server was killed\n");
- DosExit(1L,0);
- }
- if(WaitingForAccess) { /* The server is resetting */
- DosPostEventSem(hevSwitchRequested);
- xf86Info.vtRequestsPending=FALSE;
- }
- }
- } while (rc==ERROR_TIMEOUT);
- rc=DosSetPriority(2,2,0,1);
- }
- if(NotifyType==1) rc=DosPostEventSem(hevServerHasFocus);
- if((NotifyType==0)&&(!SwitchedToWPS))
- xf86Msg(X_ERROR,
- "Abnormal switching away from server!\n");
- } /* endwhile */
-
-/* End of thread */
-}
-
-/* This function is run as a thread and will notify of hard-error events */
-void os2HardErrorNotify(arg)
-void * arg;
-{
- USHORT Indic;
- USHORT NotifyType;
- APIRET rc;
- ULONG postCount;
-
- rc=DosCreateEventSem(NULL,&hevErrorPopupDetected,0L,FALSE);
- rc=DosPostEventSem(hevErrorPopupDetected);
- os2PopupErrorPending=FALSE;
-
- while(1) {
- Indic=0;
- rc=VioModeWait(Indic,&NotifyType,(HVIO)0);
- if(NotifyType==0){
- os2PopupErrorPending=TRUE;
- rc=DosPostEventSem(hSwitchToSem);
- rc=DosResetEventSem(hevErrorPopupDetected,&postCount);
- rc=DosWaitEventSem(hevErrorPopupDetected,20000L);
- if(rc==ERROR_TIMEOUT) GiveUp(0); /* Shutdown on timeout of semaphore */
- }
- } /* endwhile */
-
-/* End of thread */
-}
-
-static BOOL is_redirected = FALSE;
-
-static void
-redirect_output(void)
-{
- /* hv300996 create redirect file on boot drive, instead
- * anywhere you are just standing
- */
- char buf[20],dr[3];
- ULONG drive;
- APIRET rc;
-
- if (is_redirected) return;
-
- if ((rc = DosQuerySysInfo(5,5,&drive,sizeof(drive))) != 0)
- dr[0] = 0;
- else {
- dr[0] = drive+96;
- dr[1] = ':';
- dr[2] = 0;
- }
- sprintf(buf,"%s\\xf86log.os2",dr);
-
- ErrorF("\nThis is the XFree86/OS2-4.0 server\n");
- ErrorF("\nAll output from now on will be redirected to %s\n",buf);
- freopen(buf,"w",stderr);
-
- is_redirected = TRUE;
-}
-
-void
-os2ServerVideoAccess()
-{
- APIRET rc;
- ULONG fgSession;
- ULONG length=4;
- CHAR Status;
-
- /* Redirect output as early as possible */
- /* redirect_output(); */
- /* too many logfiles, server will log to /usr/adm */
-
-/* Wait for screen access. This is called at server reset or at server startup */
-/* Here we do some waiting until this session comes in the foreground before *
- * going any further. This is because we may have been started in the bg */
-
- if(serverGeneration==1){
- rc=VioScrLock(0, &Status, (HVIO)0);
- while(Status != 0){
- rc=VioScrLock(0, &Status, (HVIO)0);
- DosSleep(1000);
- }
- VioScrUnLock((HVIO)0);
- return;
- }
- WaitingForAccess=TRUE;
- rc=DosWaitEventSem(hevServerHasFocus,SEM_INDEFINITE_WAIT);
- WaitingForAccess=FALSE;
- SwitchedToWPS=FALSE; /* In case server has reset while we were switched to WPS */
-}
-
-/* This next function will attempt to recover from a hard error popup
- * with an EnterLeave call
- */
-
-void os2RecoverFromPopup()
-{
- int j;
- ULONG postCount;
-
- if (os2PopupErrorPending) {
-#if 0
- for (j = 0; j < screenInfo.numScreens; j++)
- (XF86SCRNINFO(screenInfo.screens[j])->EnterLeaveVT)(LEAVE, j);
- for (j = 0; j < screenInfo.numScreens; j++)
- (XF86SCRNINFO(screenInfo.screens[j])->EnterLeaveVT)(ENTER, j);
-#endif
- DosResetEventSem(hSwitchToSem,&postCount);
-
- for (j = 0; j < xf86NumScreens; j++) {
- if (xf86Screens[j]->EnableDisableFBAccess)
- (*xf86Screens[j]->EnableDisableFBAccess)(j, FALSE);
- }
- xf86EnterServerState(SETUP);
- for (j = 0; j < xf86NumScreens; j++)
- xf86Screens[j]->LeaveVT(j, 0);
- for (j = 0; j < xf86NumScreens; j++) {
- xf86Screens[j]->EnterVT(j, 0);
- }
- xf86EnterServerState(OPERATING);
- for (j = 0; j < xf86NumScreens; j++) {
- if (xf86Screens[j]->EnableDisableFBAccess)
- (*xf86Screens[j]->EnableDisableFBAccess)(j, TRUE);
- }
-
- /* We reset the state of the control key */
- os2PostKbdEvent(KEY_LCtrl,1);
- os2PostKbdEvent(KEY_LCtrl,0);
- os2PostKbdEvent(KEY_RCtrl,1);
- os2PostKbdEvent(KEY_RCtrl,0);
- os2PostKbdEvent(KEY_Alt,1);
- os2PostKbdEvent(KEY_Alt,0);
-
- /* Turn screen saver off when switching back */
- SaveScreens(SCREEN_SAVER_FORCER,ScreenSaverReset);
- os2PopupErrorPending=FALSE;
- DosPostEventSem(hevErrorPopupDetected);
- }
-}
-
-/* This checks wether a popup event is waiting. The semaphore would be reset
- * by the XF86VIO.DLL function
- */
-
-void os2CheckPopupPending()
-{
- int j;
- ULONG postCount;
-
- return; /* For now this is a no-op */
-
-#if 0
- DosQueryEventSem(hevPopupPending,&postCount);
- if (postCount==0) { /* We have a popup pending */
-#if 0
- for (j = 0; j < screenInfo.numScreens; j++)
- (XF86SCRNINFO(screenInfo.screens[j])->EnterLeaveVT)(LEAVE, j);
-#endif
- DosPostEventSem(hevPopupPending);
- }
-#endif
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_bios.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_bios.c
deleted file mode 100644
index 4069ad745..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_bios.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_bios.c,v 3.10 2000/04/05 18:13:52 dawes Exp $ */
-/*
- * (c) Copyright 1994 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified 1996 by Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_bios.c /main/5 1996/10/27 11:48:45 kaleb $ */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#define INCL_32
-#define INCL_DOS
-#define INCL_DOSFILEMGR
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/*
- * Read BIOS via xf86sup.SYS device driver
- */
-
-static APIRET doioctl(HFILE fd,ULONG addr,ULONG len,unsigned char* dbuf)
-{
- UCHAR *dta;
- ULONG plen,dlen;
- APIRET rc;
-
- struct {
- ULONG command;
- ULONG physaddr;
- USHORT numbytes;
- } par;
-
- /* prepare parameter and data packets for ioctl */
- par.command = 0;
- par.physaddr = addr;
- par.numbytes = dlen = len;
- plen = sizeof(par);
-
- /* issue call to get a readonly copy of BIOS ROM */
- rc = DosDevIOCtl(fd, (ULONG)0x76, (ULONG)0x64,
- (PVOID)&par, (ULONG)plen, (PULONG)&plen,
- (PVOID)dbuf, (ULONG)dlen, (PULONG)&dlen);
-
- return rc;
-}
-
-int xf86ReadBIOS(Base, Offset, Buf, Len)
-unsigned long Base;
-unsigned long Offset;
-unsigned char *Buf;
-int Len;
-{
- HFILE fd;
- int i;
- ULONG action;
- APIRET rc;
- ULONG Phys_address;
- UCHAR* dta;
- int off, chunksz,lensave;
-
- /* allocate dta */
- dta = (UCHAR*)xalloc(Len);
-
- Phys_address=Base+Offset;
-
- /* open the special device pmap$ (default with OS/2) */
- if (DosOpen((PSZ)"PMAP$", (PHFILE)&fd, (PULONG)&action,
- (ULONG)0, FILE_SYSTEM, FILE_OPEN,
- OPEN_SHARE_DENYNONE|OPEN_FLAGS_NOINHERIT|OPEN_ACCESS_READONLY,
- (ULONG)0) != 0) {
- FatalError("xf86ReadBIOS: install DEVICE=path\\xf86sup.SYS!");
- return -1;
- }
-
- /* copy 32K at a time */
- off = 0;
- lensave = Len;
- while (Len > 0) {
- chunksz = (Len > 32768) ? 32768 : Len;
- Len -= chunksz;
- rc = doioctl(fd,(ULONG)Phys_address,chunksz,dta+off);
- if (rc != 0) {
- FatalError("xf86ReadBIOS: BIOS map failed, addr=%lx, rc=%d\n",
- Phys_address,rc);
- xfree(dta);
- DosClose(fd);
- return -1;
- }
- off += chunksz;
- }
-
- /*
- * Sanity check... No longer fatal, as some PS/1 and PS/2 fail here but still work.
- * S. Marineau, 10/10/96
- */
-#if 0
- if ((Phys_address & 0x7fff) != 0 &&
- (dta[0] != 0x55 || dta[1] != 0xaa)) {
- FatalError("BIOS sanity check failed, addr=%x\nPlease report if you encounter problems\n",
- Phys_address);
- }
-#endif
-
- /* copy data to buffer */
- memcpy(Buf, dta, lensave);
- xfree(dta);
-
- /* close device */
- DosClose(fd);
-
- return(lensave);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_diag.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_diag.c
deleted file mode 100644
index f321df5c2..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_diag.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_diag.c,v 3.7 2000/04/05 18:13:52 dawes Exp $ */
-/*
- * (c) Copyright 1997 by Holger Veit
- * <Holger.Veit@gmd.de>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium$ */
-
-/* This file checks whether the user has installed the system correctly,
- * to avoid the numerous questions why this or that does not work
- */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#define INCL_DOSFILEMGR
-#define INCL_KBD
-#define INCL_VIO
-#define INCL_DOSMISC
-#define INCL_DOSPROCESS
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSMODULEMGR
-#define INCL_DOSFILEMGR
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include <netdb.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-static BOOL diag_checks = FALSE;
-
-/* from Eberhard to check for the right EMX version */
-static void
-check_emx (void)
-{
- ULONG rc;
- HMODULE hmod;
- char name[CCHMAXPATH];
- char fail[9];
-
- if (_emx_rev < 50) {
- xf86Msg(X_ERROR,"This program requires emx.dll revision 50 (0.9c fix 2) "
- "or later.\n");
- rc = DosLoadModule (fail, sizeof (fail), "emx", &hmod);
- if (rc == 0) {
- rc = DosQueryModuleName (hmod, sizeof (name), name);
- if (rc == 0)
- xf86Msg(X_ERROR,"Please delete or update `%s'.\n", name);
- DosFreeModule (hmod);
- }
- exit (2);
- }
-}
-
-static void
-check_bsl(const char *var)
-{
- char *t1 = strrchr(var,'\\');
- if (strchr(var,'/')) {
- xf86Msg(X_WARNING,
- "\"%s\" must exclusively use backward slashes \"\\\"\n",
- var);
- }
- if (t1 && *(t1+1)=='\0') {
- xf86Msg(X_WARNING,
- "\"%s\" mustn't end with \"\\\"\n",var);
- *t1 = '\0';
- }
-}
-
-
-static void
-check_fsl(const char *var)
-{
- char *t1 = strrchr(var,'/');
- if (strchr(var,'\\')) {
- xf86Msg(X_WARNING,
- "\"%s\" must exclusively use forward slashes \"/\"\n",
- var);
- }
-}
-
-
-static void
-check_long(const char* path)
-{
- FILE *f;
- char n[300];
-
- sprintf(n,"%s\\xf86_test_for_very_long_filename",path);
- f = fopen(n,"w");
- if (f==NULL) {
- xf86Msg(X_WARNING,
- "\"%s\" does not accept long filenames\nmust reside on HPFS or similar\n",
- path);
- } else {
- fclose(f);
- unlink(n);
- }
-}
-
-static char *
-check_env_present(const char *env)
-{
- char *e = getenv(env);
- if (!e) {
- xf86Msg(X_WARNING,
- "You have no \"%s\" environment variable, but need one\n",
- env);
- return 0;
- }
- return e;
-}
-
-void os2_checkinstallation(void)
-{
- char *emxopt, *tmp, *home, *logname, *termcap;
- char hostname[256], *display, *hostvar, *s, *h;
- struct hostent *hent;
- struct in_addr *in;
- int i;
-
- if (diag_checks) return;
- diag_checks = TRUE;
-
- /* test whether the EMX version is okay */
- check_emx();
-
- /* Check a number of environment variables */
- emxopt = getenv("EMXOPT");
- if (emxopt) {
- for (i=0; i<strlen(emxopt); i++) {
- if (emxopt[i]=='-') {
- switch (emxopt[++i]) {
- case 't':
- xf86Msg(X_ERROR,
- "Remove -t option from EMXOPT variable!\n");
- break;
- case 'r':
- xf86Msg(X_ERROR,
- "Remove -r option from EMXOPT variable!\n");
- }
- }
- }
- }
-
- tmp = check_env_present("TMP");
- if (tmp) {
- check_bsl(tmp);
- check_long(tmp);
- }
-
- home = check_env_present("HOME");
- if (home) {
- check_bsl(home);
- check_long(home);
- }
-
- logname = check_env_present("LOGNAME");
- termcap = check_env_present("TERMCAP");
- if (termcap)
- check_fsl(termcap);
-
- if (gethostname(hostname,sizeof(hostname)) != 0) {
- xf86Msg(X_ERROR,
- "gethostname() failed: Check TCP/IP setup!\n");
- } else {
- xf86Msg(X_INFO,
- "gethostname() returns: \"%s\"\n",hostname);
- }
-
- display = check_env_present("DISPLAY");
- if (display)
- xf86Msg(X_INFO,
- "DISPLAY to listen is set to: \"%s\"\n",
- display);
-
- hostvar = check_env_present("HOSTNAME");
-
- strcpy(hostname,display);
- h = strchr(hostname,':');
- if (!h)
- xf86Msg(X_WARNING,
- "Invalid DISPLAY name: expected something like XXX:0.0\n");
- else
- *h = 0;
- h = strchr(hostname,'/');
- if (h)
- h++;
- else
- h = hostname;
-
- if (stricmp(h,hostvar)) {
- xf86Msg(X_WARNING,
- "HOSTNAME does not match DISPLAY: Do you really mean this?\n");
- xf86Msg(X_WARNING,
- " This means that xinit/startx and client access may not work\n");
- xf86Msg(X_WARNING,
- " which is intentional usually only when connection to a XDM server\n");
- }
-
- hent = gethostbyname(h);
- if (!hent)
- xf86Msg(X_ERROR,
- "gethostbyname() failed: Check TCP/IP setup\n");
- else {
- xf86Msg(X_INFO,
- "gethostbyname() returns the following data:\n");
- xf86Msg(X_INFO," official host name: \"%s\"\n",hent->h_name);
- while ((s= *(hent->h_aliases)) != NULL) {
- xf86Msg(X_INFO,
- " alias: \"%s\"\n",s);
- hent->h_aliases++;
- }
- xf86Msg(X_INFO,
- " addr type = %d, addr length = %d\n",
- hent->h_addrtype, hent->h_length);
- if (hent->h_addrtype == AF_INET) {
- while ((in= (struct in_addr*)*(hent->h_addr_list++)) != NULL) {
- xf86Msg(X_INFO,
- " IP address: \"%s\"\n",
- inet_ntoa(*in));
- }
- } else {
- xf86Msg(X_INFO,
- "Addrtype should be %d: Check network setup and install TCP/IP support correctly\n",
- AF_INET);
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_init.c
deleted file mode 100644
index 81b2689b8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_init.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_init.c,v 3.18 2003/11/29 01:48:31 dawes Exp $ */
-/*
- * (c) Copyright 1994 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified 1996 Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_init.c /main/9 1996/10/19 18:07:13 kaleb $ */
-
-#define I_NEED_OS2_H
-#define INCL_DOSFILEMGR
-#define INCL_KBD
-#define INCL_VIO
-#define INCL_DOSMISC
-#define INCL_DOSPROCESS
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSMODULEMGR
-#define INCL_DOSFILEMGR
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <float.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-VIOMODEINFO OriginalVideoMode;
-void os2VideoNotify();
-void os2HardErrorNotify();
-void os2KbdMonitorThread();
-void os2KbdBitBucketThread();
-HEV hevPopupPending;
-extern HEV hKbdSem;
-extern BOOL os2HRTimerFlag;
-static unsigned short cw;
-extern void os2_checkinstallation(); /* os2_diag.c */
-
-void xf86OpenConsole()
-{
- /* try to catch problems before they become obvious */
- os2_checkinstallation();
-
- if (serverGeneration == 1) {
- HKBD fd;
- ULONG drive;
- ULONG dummy;
- KBDHWID hwid;
- APIRET rc;
- int VioTid;
- ULONG actual_handles;
- LONG new_handles;
-
- /* hv 250197 workaround for xkb-Problem: switch to X11ROOT drive */
- char *x11r = getenv("X11ROOT");
- /* Make sure X11ROOT is set before we go further sm280297 */
- if (x11r == NULL){
- xf86Msg(X_ERROR,
- "Environment variable X11ROOT is not set! Aborting...\n");
- exit(1);
- }
- if (_chdir2(x11r) < 0) {
- xf86Msg(X_ERROR,"Cannot change to X11ROOT directory!\n");
- }
-
- xf86Msg(X_INFO,"Console opened\n");
- OriginalVideoMode.cb=sizeof(VIOMODEINFO);
- rc=VioGetMode(&OriginalVideoMode,(HVIO)0);
- if(rc!=0)
- xf86Msg(X_ERROR,
- "Could not get original video mode. RC=%d\n",rc);
- xf86Info.consoleFd = -1;
-
- /* Set the number of handles to higher than the default 20. Set to 80 which should be plenty */
- new_handles = 0;
- rc = DosSetRelMaxFH(&new_handles,&actual_handles);
- if (actual_handles < 80) {
- new_handles = 80 - actual_handles;
- rc = DosSetRelMaxFH(&new_handles,&actual_handles);
- xf86Msg(X_INFO,"Increased number of available handles to %d\n",
- actual_handles);
- }
-
- /* grab the keyboard */
- rc = KbdGetFocus(0,0);
- if (rc != 0)
- FatalError("xf86OpenConsole: cannot grab kbd focus, rc=%d\n",rc);
-
- /* open the keyboard */
- rc = KbdOpen(&fd);
- if (rc != 0)
- FatalError("xf86OpenConsole: cannot open keyboard, rc=%d\n",rc);
- xf86Info.consoleFd = fd;
-
- xf86Msg(X_INFO,"Keyboard opened\n");
-
- /* assign logical keyboard */
- KbdFreeFocus(0);
- rc = KbdGetFocus(0,fd);
- if (rc != 0)
- FatalError("xf86OpenConsole: cannot set local kbd focus, rc=%d\n",rc);
-
-/* Create kbd queue semaphore */
-
- rc = DosCreateEventSem(NULL,&hKbdSem,DC_SEM_SHARED,TRUE);
- if (rc != 0)
- FatalError("xf86OpenConsole: cannot create keyboard queue semaphore, rc=%d\n",rc);
-
-/* Create popup semaphore */
-
- rc = DosCreateEventSem("\\SEM32\\XF86PUP",&hevPopupPending,DC_SEM_SHARED,1);
- if (rc)
- xf86Msg(X_ERROR,
- "Could not create popup semaphore! RC=%d\n",rc);
-#if 0
- rc=VioRegister("xf86vio","XF86POPUP_SUBCLASS",0x20002004L,0L);
- if (rc) {
- FatalError("Could not register XF86VIO.DLL module. Please install in LIBPATH! RC=%d\n",
- rc);
- }
-#endif
-
-/* Start up the VIO monitor thread */
- VioTid=_beginthread(os2VideoNotify,NULL,0x4000,(void *)NULL);
- xf86Msg(X_INFO,"Started Vio thread, Tid=%d\n",VioTid);
- rc=DosSetPriority(2,3,0,VioTid);
-
-/* Start up the hard-error VIO monitor thread */
- VioTid=_beginthread(os2HardErrorNotify,NULL,0x4000,(void *)NULL);
- xf86Msg(X_INFO,"Started hard error Vio mode monitor thread, Tid=%d\n",
- VioTid);
- rc=DosSetPriority(2,3,0,VioTid);
-
-/* We have to set the codepage before the keyboard monitor is registered */
- rc = KbdSetCp(0,0,fd);
- if(rc != 0)
- FatalError("xf86OpenConsole: cannot set keyboard codepage, rc=%d\n",rc);
-
-/* Start up the kbd monitor thread */
- VioTid=_beginthread(os2KbdMonitorThread,NULL,0x4000,(void *)NULL);
- xf86Msg(X_INFO,"Started Kbd monitor thread, Tid=%d\n",VioTid);
- rc=DosSetPriority(2,3,0,VioTid);
-
-/* Disable hard-errors through DosError */
- rc = DosQuerySysInfo(5,5,&drive,sizeof(drive));
- rc = DosSuppressPopUps(0x0001L,drive+96); /* Disable popups */
-
- hwid.cb = sizeof(hwid); /* fix crash on P9000 */
- rc = KbdGetHWID(&hwid, fd);
- if (rc == 0) {
- switch (hwid.idKbd) {
- default:
- case 0xab54: /* 88/89 key */
- case 0: /*unknown*/
- case 1: /*real AT 84 key*/
- xf86Info.kbdType = KB_84; break;
- case 0xab85: /* 122 key */
- FatalError("Unsupported extended 122key keyboard found!\n",0);
- case 0xab41: /* 101/102 key */
- xf86Info.kbdType = KB_101; break;
- }
- } else
- xf86Info.kbdType = KB_84; /*defensive*/
-
-/* Start up the Kbd bit-bucket thread. We don't want to leave the kbd events in the driver queue */
- VioTid=_beginthread(os2KbdBitBucketThread,NULL,0x2000,(void *)NULL);
- xf86Msg(X_INFO,"Started Kbd bit-bucket thread, Tid=%d\n",VioTid);
-
-/* fg271103: set control word of FPU to default value to prevent SIGFPE in GLX (and elsewhere?) */
-
-#define DEFAULT_X86_FPU 0x037f
-
- cw = _control87(DEFAULT_X86_FPU, 0xFFFF);
- xf86Msg(X_INFO,"Checking FPCW: %#x\n",cw);
-
- if (cw != DEFAULT_X86_FPU) {
- cw = _control87(0,0);
- xf86Msg(X_INFO,"Set FPCW to %#x\n",cw);
- }
-
- }
- return;
-}
-
-void xf86CloseConsole()
-{
- APIRET rc;
- ULONG drive;
-
- if (xf86Info.consoleFd != -1) {
- KbdClose(xf86Info.consoleFd);
- }
- VioSetMode(&OriginalVideoMode,(HVIO)0);
- rc = DosQuerySysInfo(5,5,&drive,sizeof(drive));
- rc = DosSuppressPopUps(0x0000L,drive+96); /* Reenable popups */
- rc = DosCloseEventSem(hevPopupPending);
- rc = VioDeRegister();
- return;
-}
-
-/* ARGSUSED */
-
-int xf86ProcessArgument (argc, argv, i)
-int argc;
-char *argv[];
-int i;
-{
- return 0;
-}
-
-void xf86UseMsg()
-{
- return;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_io.c
deleted file mode 100644
index e6570aeb9..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_io.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_io.c,v 3.19 2003/11/17 22:20:41 dawes Exp $ */
-/*
- * (c) Copyright 1994,1999 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified 1996 by Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_io.c /main/9 1996/05/13 16:38:07 kaleb $ */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xpoll.h>
-#include "compiler.h"
-#include <time.h>
-
-#define INCL_DOSPROCESS
-#define INCL_KBD
-#define INCL_MOU
-#define INCL_DOSDEVIOCTL
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-int os2MouseQueueQuery();
-int os2KbdQueueQuery();
-void os2RecoverFromPopup();
-void os2CheckPopupPending();
-extern BOOL os2PopupErrorPending;
-int _select2 (int, fd_set *, fd_set *,fd_set *, struct timeval *);
-
-
-/***************************************************************************/
-
-void xf86SoundKbdBell(loudness, pitch, duration)
-int loudness;
-int pitch;
-int duration;
-{
- DosBeep((ULONG)pitch, (ULONG)duration);
-}
-
-void xf86SetKbdLeds(leds)
-int leds;
-{
- KBDINFO kinfo;
- APIRET rc;
-
- rc = KbdGetStatus(&kinfo,(HKBD)xf86Info.consoleFd);
- if (!rc) {
- kinfo.fsMask = 0x10;
- kinfo.fsState &= ~0x70;
- kinfo.fsState |= (leds&0x70);
- KbdSetStatus(&kinfo,(HKBD)xf86Info.consoleFd);
- }
-}
-
-int xf86GetKbdLeds()
-{
- KBDINFO kinfo;
- APIRET rc;
-
- rc = KbdGetStatus(&kinfo,(HKBD)xf86Info.consoleFd);
- return rc ? 0 : kinfo.fsState & 0x70;
-}
-
-void xf86SetKbdRepeat(char rad)
-{
- int rc;
- int delay = 250; /* Default delay */
- int rate = 30; /* Default repeat rate */
-
- struct {
- USHORT Delay;
- USHORT Rate;
- } rateDelay;
-
- ULONG rateDelaySize = sizeof(rateDelay);
-
- /*notyet*/
- return;
-
- if (xf86Info.kbdRate >= 0)
- rate = xf86Info.kbdRate;
- if (xf86Info.kbdDelay >= 0)
- delay = xf86Info.kbdDelay;
-
- rateDelay.Delay = delay;
- rateDelay.Rate = rate;
-
- xf86Msg(X_INFO,"Setting typematic rate: Delay=%d, Rate=%d\n",delay,rate);
-
- rc = DosDevIOCtl( (HFILE) xf86Info.consoleFd,
- IOCTL_KEYBOARD,
- KBD_SETTYPAMATICRATE,
- &rateDelay,
- rateDelaySize,
- &rateDelaySize,
- NULL,
- 0,
- NULL);
- if (rc!=0) {
- xf86Msg(X_ERROR,"xf86SetKbdRepeat: DosDevIOCtl returned %d\n",rc);
- }
-}
-
-void xf86KbdInit()
-{
- /*none required*/
-}
-
-
-USHORT OrigKbdState;
-USHORT OrigKbdInterim;
-
-typedef struct {
- USHORT state;
- UCHAR makeCode;
- UCHAR breakCode;
- USHORT keyID;
-} HOTKEYPARAM;
-
-
-int xf86KbdOn()
-{
- KBDINFO info;
- APIRET rc;
- int i,k;
- ULONG len;
-
-
- KbdGetStatus(&info,(HKBD)xf86Info.consoleFd);
- OrigKbdState=info.fsMask;
- OrigKbdInterim=info.fsInterim;
- info.fsMask &= ~0x09;
- info.fsMask |= 0x136;
- info.fsInterim &= ~0x20;
- KbdSetStatus(&info,(HKBD)xf86Info.consoleFd);
- return -1;
-}
-
-int xf86KbdOff()
-{
- ULONG len;
- APIRET rc;
- KBDINFO info;
-
- info.fsMask=OrigKbdState;
- info.fsInterim=OrigKbdInterim;
- KbdSetStatus(&info,(HKBD)xf86Info.consoleFd);
- return -1;
-}
-
-#if 0 /*OBSOLETE*/
-void xf86MouseInit(mouse)
-MouseDevPtr mouse;
-{
- HMOU fd;
- APIRET rc;
- USHORT nbut;
-
- if (serverGeneration == 1) {
- rc = MouOpen((PSZ)NULL,(PHMOU)&fd);
- if (rc != 0)
- FatalError("Cannot open mouse, rc=%d\n", rc);
- mouse->mseFd = fd;
- }
-
- /* flush mouse queue */
- MouFlushQue(fd);
-
- /* check buttons */
- rc = MouGetNumButtons(&nbut,fd);
- if (rc == 0)
- xf86Msg(X_INFO,"OsMouse has %d button(s).\n",nbut);
-}
-#endif
-
-#if 0 /*OBSOLETE*/
-int xf86MouseOn(mouse)
-MouseDevPtr mouse;
-{
-#if 0
- HMOU fd;
- APIRET rc;
- USHORT nbut;
-#endif
- xf86Msg (X_ERROR,
- "Calling MouseOn, a bad thing.... Must be some bug in the code!\n");
-
-#if 0
- if (serverGeneration == 1) {
- rc = MouOpen((PSZ)NULL,(PHMOU)&fd);
- if (rc != 0)
- FatalError("Cannot open mouse, rc=%d\n", rc);
- mouse->mseFd = fd;
- }
-
- /* flush mouse queue */
- MouFlushQue(fd);
-
- /* check buttons */
- rc = MouGetNumButtons(&nbut,fd);
- if (rc == 0)
- xf86Msg(X_INFO,"OsMouse has %d button(s).\n",nbut);
-
- return (mouse->mseFd);
-#endif
-}
-#endif
-
-#if 0 /*OBSOLETE*/
-/* This table is a bit irritating, because these mouse types are infact
- * defined in the OS/2 kernel, but I want to force the user to put
- * "OsMouse" in the config file, and not worry about the particular mouse
- * type that is connected.
- */
-Bool xf86SupportedMouseTypes[] =
-{
- FALSE, /* Microsoft */
- FALSE, /* MouseSystems */
- FALSE, /* MMSeries */
- FALSE, /* Logitech */
- FALSE, /* BusMouse */
- FALSE, /* MouseMan */
- FALSE, /* PS/2 */
- FALSE, /* Hitachi Tablet */
-};
-
-int xf86NumMouseTypes = sizeof(xf86SupportedMouseTypes) /
- sizeof(xf86SupportedMouseTypes[0]);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_ioperm.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_ioperm.c
deleted file mode 100644
index c03bb96af..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_ioperm.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_ioperm.c,v 3.5 1997/08/26 10:01:38 hohndel Exp $ */
-/*
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- * Modified 1996 by Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * 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, and that the name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: os2_ioperm.c /main/4 1996/04/18 16:50:01 kaleb $ */
-
-
-
-#define I_NEED_OS2_H
-#define INCL_32
-#define INCL_DOS
-#define INCL_DOSFILEMGR
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/*
- * To access I/O ports under OS/2, we use the xf86sup.sys driver.
- * For the moment, we use a function which basically grants IO priviledge
- * to the whole server. NOTE: Once the server is running, we should
- * change this to use inline IO functions through the callgate returned by
- * the fastio$ driver.
- */
-
-int ioEnabled=FALSE;
-ULONG action;
-char *ioDrvPath = "/dev/fastio$";
-USHORT callgate[3]={0,0,0};
-
-
-Bool xf86EnableIO()
-{
-
-HFILE hfd;
- ULONG dlen;
- APIRET rc;
-
- /* no need to call multiple times */
- if (ioEnabled) return TRUE;
-
- if (DosOpen((PSZ)ioDrvPath, (PHFILE)&hfd, (PULONG)&action,
- (ULONG)0, FILE_SYSTEM, FILE_OPEN,
- OPEN_SHARE_DENYNONE|OPEN_FLAGS_NOINHERIT|OPEN_ACCESS_READONLY,
- (ULONG)0) != 0) {
- xf86Msg(X_ERROR,"Error opening fastio$ driver...\n");
- xf86Msg(X_ERROR,"Please install xf86sup.sys in config.sys!\n");
- return FALSE;
- }
- callgate[0] = callgate[1] = 0;
-
-/* Get callgate from driver for fast io to ports and other stuff */
-
- rc = DosDevIOCtl(hfd, (ULONG)0x76, (ULONG)0x64,
- NULL, 0, NULL,
- (ULONG*)&callgate[2], sizeof(USHORT), &dlen);
- if (rc) {
- xf86Msg(X_ERROR,
- "EnableIOPorts failed, rc=%d, dlen=%d; emergency exit\n",
- rc,dlen);
- DosClose(hfd);
- return FALSE;
- }
-
-/* Calling callgate with function 13 sets IOPL for the program */
-
- asm volatile ("movl $13,%%ebx;.byte 0xff,0x1d;.long _callgate"
- : /*no outputs */
- : /*no inputs */
- : "eax","ebx","ecx","edx","cc");
-
- ioEnabled = TRUE;
- DosClose(hfd);
- return TRUE;
-}
-
-void xf86DisableIO()
-{
-HFILE hfd;
- ULONG dlen;
- APIRET rc;
-
- /* no need to call multiple times */
- if (!ioEnabled) return;
-
- if (DosOpen((PSZ)ioDrvPath, (PHFILE)&hfd, (PULONG)&action,
- (ULONG)0, FILE_SYSTEM, FILE_OPEN,
- OPEN_SHARE_DENYNONE|OPEN_FLAGS_NOINHERIT|OPEN_ACCESS_READONLY,
- (ULONG)0) != 0) {
- xf86Msg(X_ERROR,"Error opening fastio$ driver...\n");
- xf86Msg(X_ERROR,"Please install xf86sup.sys in config.sys!\n");
- return;
- }
- callgate[0] = callgate[1] = 0;
-
- rc = DosDevIOCtl(hfd, (ULONG)0x76, (ULONG)0x64,
- NULL, 0, NULL,
- (ULONG*)&callgate[2], sizeof(USHORT), &dlen);
- if (rc) {
- xf86Msg(X_ERROR,"DisableIOPorts failed, rc=%d, dlen=%d\n",
- rc,dlen);
- DosClose(hfd);
- return;
- }
-
-/* Function 14 of callgate brings program back to ring 3 */
-
- asm volatile ("movl $14,%%ebx;.byte 0xff,0x1d;.long _callgate"
- : /*no outputs */
- : /*no inputs */
- : "eax","ebx","ecx","edx","cc");
- ioEnabled=FALSE;
- DosClose(hfd);
- return;
-
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbd.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbd.c
deleted file mode 100644
index f99f12c0f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbd.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copied from os2_io.c which is
- *
- * (c) Copyright 1994,1999 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified 1996 by Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XFree86$ */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xpoll.h>
-#include "compiler.h"
-#include <time.h>
-
-#define INCL_DOSPROCESS
-#define INCL_KBD
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Xinput.h"
-#include "xf86OSKbd.h"
-
-
-
-/***************************************************************************/
-
-static void SoundKbdBell(loudness, pitch, duration)
-int loudness;
-int pitch;
-int duration;
-{
- DosBeep((ULONG)pitch, (ULONG)duration);
-}
-
-static void SetKbdLeds(pInfo, leds)
-InputInfoPtr pInfo;
-int leds;
-{
- KBDINFO kinfo;
- APIRET rc;
-
- rc = KbdGetStatus(&kinfo,(HKBD)xf86Info.consoleFd);
- if (!rc) {
- kinfo.fsMask = 0x10;
- kinfo.fsState &= ~0x70;
- kinfo.fsState |= (leds&0x70);
- KbdSetStatus(&kinfo,(HKBD)xf86Info.consoleFd);
- }
-}
-
-static int GetKbdLeds(pInfo)
-InputInfoPtr pInfo;
-{
- KBDINFO kinfo;
- APIRET rc;
-
- rc = KbdGetStatus(&kinfo,(HKBD)xf86Info.consoleFd);
- return rc ? 0 : kinfo.fsState & 0x70;
-}
-
-static void SetKbdRepeat(pInfo, rad)
-InputInfoPtr pInfo;
-char rad;
-{
- /*notyet*/
-}
-
-static void KbdInit(pInfo)
-InputInfoPtr pInfo;
-{
- /*none required*/
- xf86Msg(X_INFO,"XKB module: Keyboard initialized\n");
-}
-
-
-static USHORT OrigKbdState;
-static USHORT OrigKbdInterim;
-
-typedef struct {
- USHORT state;
- UCHAR makeCode;
- UCHAR breakCode;
- USHORT keyID;
-} HOTKEYPARAM;
-
-
-static int KbdOn(pInfo)
-InputInfoPtr pInfo;
-{
- KBDINFO info;
-
- KbdGetStatus(&info,(HKBD)xf86Info.consoleFd);
- OrigKbdState=info.fsMask;
- OrigKbdInterim=info.fsInterim;
- info.fsMask &= ~0x09;
- info.fsMask |= 0x136;
- info.fsInterim &= ~0x20;
- KbdSetStatus(&info,(HKBD)xf86Info.consoleFd);
- return -1;
-}
-
-static int KbdOff(pInfo)
-InputInfoPtr pInfo;
-{
- KBDINFO info;
-
- info.fsMask=OrigKbdState;
- info.fsInterim=OrigKbdInterim;
- KbdSetStatus(&info,(HKBD)xf86Info.consoleFd);
- return -1;
-}
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = pInfo->private;
-
- pKbd->KbdInit = KbdInit;
- pKbd->KbdOn = KbdOn;
- pKbd->KbdOff = KbdOff;
- pKbd->Bell = SoundKbdBell;
- pKbd->SetLeds = SetKbdLeds;
- pKbd->GetLeds = GetKbdLeds;
- pKbd->SetKbdRepeat = SetKbdRepeat;
-
- pKbd->vtSwitchSupported = FALSE;
-
- /* not yet */
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbdEv.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbdEv.c
deleted file mode 100644
index 861fbf089..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_kbdEv.c
+++ /dev/null
@@ -1,511 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_kbdEv.c,v 3.16 2002/05/31 18:46:01 dawes Exp $ */
-/*
- * (c) Copyright 1994,1996,1999 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified 1996 Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_kbdEv.c /main/10 1996/10/27 11:48:48 kaleb $ */
-
-#define I_NEED_OS2_H
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "inputstr.h"
-#include "scrnintstr.h"
-
-#define INCL_KBD
-#define INCL_DOSMONITORS
-#define INCL_WINSWITCHLIST
-#define INCL_DOSQUEUES
-#undef RT_FONT /* must discard this */
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "atKeynames.h"
-
-/* Attention! these lines copied from ../../common/xf86Events.c */
-#define XE_POINTER 1
-#define XE_KEYBOARD 2
-
-#ifdef XKB
-extern Bool noXkbExtension;
-#endif
-
-#ifdef XTESTEXT1
-
-#define XTestSERVER_SIDE
-#include <X11/extensions/xtestext1.h>
-extern short xtest_mousex;
-extern short xtest_mousey;
-extern int on_steal_input;
-extern Bool XTestStealKeyData();
-extern void XTestStealMotionData();
-
-#ifdef XINPUT
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- if (!on_steal_input || \
- XTestStealKeyData((ev)->u.u.detail, (ev)->u.u.type, dev_type, \
- xtest_mousex, xtest_mousey)) \
- xf86eqEnqueue((ev))
-#else
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- if (!on_steal_input || \
- XTestStealKeyData((ev)->u.u.detail, (ev)->u.u.type, dev_type, \
- xtest_mousex, xtest_mousey)) \
- mieqEnqueue((ev))
-#endif
-
-#define MOVEPOINTER(dx, dy, time) \
- if (on_steal_input) \
- XTestStealMotionData(dx, dy, XE_POINTER, xtest_mousex, xtest_mousey); \
- miPointerDeltaCursor (dx, dy, time)
-
-#else /* ! XTESTEXT1 */
-
-#ifdef XINPUT
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- xf86eqEnqueue((ev))
-#else
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- mieqEnqueue((ev))
-#endif
-#define MOVEPOINTER(dx, dy, time) \
- miPointerDeltaCursor (dx, dy, time)
-
-#endif
-/* end of include */
-
-HQUEUE hKbdQueue;
-HEV hKbdSem;
-int last_status;
-int lastStatus;
-int lastShiftState;
-extern BOOL SwitchedToWPS;
-
-void os2PostKbdEvent();
-
-int os2KbdQueueQuery()
-{
- ULONG numElements,postCount;
-
- (void)DosQueryQueue(hKbdQueue,&numElements);
- if (numElements!=0) return 0; /* We have something in queue */
-
- DosResetEventSem(hKbdSem,&postCount);
- return 1;
-}
-
-
-void xf86KbdEvents()
-{
- KBDKEYINFO keybuf;
- ULONG numElements;
- REQUESTDATA requestData;
- ULONG dataLength, postCount;
- PVOID dummy;
- BYTE elemPriority;
- int scan, down;
- static int last;
- USHORT ModState;
- int i;
-
- while(DosReadQueue(hKbdQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hKbdSem) == 0) {
-
- /* xf86Msg(X_INFO,
- "Got queue element. data=%d, scancode =%d,up=%d, ddflag %d\n",
- requestData.ulData,
- (requestData.ulData&0x7F00)>>8,
- requestData.ulData&0x8000,
- requestData.ulData>>16);*/
-
- scan=(requestData.ulData&0x7F00)>>8;
-
- /* the separate cursor keys return 0xe0/scan */
- if ((requestData.ulData & 0x3F0000)==0x20000) scan=0;
- if (requestData.ulData & 0x800000) {
- switch (scan) {
-
-/* BUG ALERT: IBM has in its keyboard driver a 122 key keyboard, which
- * uses the "server generated scancodes" from atKeynames.h as real scan codes.
- * We wait until some poor guy with such a keyboard will break the whole
- * card house though...
- */
- case KEY_KP_7: scan = KEY_Home; break;
- case KEY_KP_8: scan = KEY_Up; break;
- case KEY_KP_9: scan = KEY_PgUp; break;
- case KEY_KP_4: scan = KEY_Left; break;
- case KEY_KP_5: scan = KEY_Begin; break;
- case KEY_KP_6: scan = KEY_Right; break;
- case KEY_KP_1: scan = KEY_End; break;
- case KEY_KP_2: scan = KEY_Down; break;
- case KEY_KP_3: scan = KEY_PgDown; break;
- case KEY_KP_0: scan = KEY_Insert; break;
- case KEY_KP_Decimal: scan = KEY_Delete; break;
- case KEY_Enter: scan = KEY_KP_Enter; break;
- case KEY_LCtrl: scan = KEY_RCtrl; break;
- case KEY_KP_Multiply: scan = KEY_Print; break;
- case KEY_Slash: scan = KEY_KP_Divide; break;
- case KEY_Alt: scan = KEY_AltLang; break;
- case KEY_ScrollLock: scan = KEY_Break; break;
- case 0x5b: scan = KEY_LMeta; break;
- case 0x5c: scan = KEY_RMeta; break;
- case 0x5d: scan = KEY_Menu; break;
- default:
- /* virtual shifts: ignore */
- scan = 0; break;
- }
- }
-
- down = (requestData.ulData&0x8000) ? FALSE : TRUE;
- if (scan!=0) os2PostKbdEvent(scan, down);
- }
- (void)DosResetEventSem(hKbdSem,&postCount);
-}
-
-/*
- * xf86PostKbdEvent --
- * Translate the raw hardware KbdEvent into an XEvent, and tell DIX
- * about it. Scancode preprocessing and so on is done ...
- *
- * OS/2 specific xf86PostKbdEvent(key) has been moved from common/xf86Events.c
- * as some things differ, and I didn't want to scatter this routine with
- * ifdefs further (hv).
- */
-
-void os2PostKbdEvent(unsigned scanCode, Bool down)
-{
- KeyClassRec *keyc = ((DeviceIntPtr)xf86Info.pKeyboard)->key;
- Bool updateLeds = FALSE;
- Bool UsePrefix = FALSE;
- Bool Direction = FALSE;
- xEvent kevent;
- KeySym *keysym;
- int keycode;
- static int lockkeys = 0;
-
- /*
- * and now get some special keysequences
- */
- if ((ModifierDown(ControlMask | AltMask)) ||
- (ModifierDown(ControlMask | AltLangMask))) {
- switch (scanCode) {
- case KEY_BackSpace:
- if (!xf86Info.dontZap) GiveUp(0);
- return;
- case KEY_KP_Minus: /* Keypad - */
- if (!xf86Info.dontZoom) {
- if (down)
- xf86ZoomViewport(xf86Info.currentScreen, -1);
- return;
- }
- break;
- case KEY_KP_Plus: /* Keypad + */
- if (!xf86Info.dontZoom) {
- if (down)
- xf86ZoomViewport(xf86Info.currentScreen, 1);
- return;
- }
- break;
- }
- }
-
- /* CTRL-ESC is std OS/2 hotkey for going back to PM and popping up
- * window list... handled by keyboard driverand PM if you tell it. This is
- * what we have done, and thus should never detect this key combo */
- if (ModifierDown(ControlMask) && scanCode==KEY_Escape) {
- /* eat it */
- return;
- } else if (ModifierDown(AltLangMask|AltMask) && scanCode==KEY_Escape) {
- /* same here */
- return;
- }
-
- /*
- * Now map the scancodes to real X-keycodes ...
- */
- keycode = scanCode + MIN_KEYCODE;
- keysym = (keyc->curKeySyms.map +
- keyc->curKeySyms.mapWidth *
- (keycode - keyc->curKeySyms.minKeyCode));
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- /* Filter autorepeated caps/num/scroll lock keycodes. */
-
-#define CAPSFLAG 0x01
-#define NUMFLAG 0x02
-#define SCROLLFLAG 0x04
-#define MODEFLAG 0x08
- if (down) {
- switch (keysym[0]) {
- case XK_Caps_Lock:
- if (lockkeys & CAPSFLAG)
- return;
- else
- lockkeys |= CAPSFLAG;
- break;
- case XK_Num_Lock:
- if (lockkeys & NUMFLAG)
- return;
- else
- lockkeys |= NUMFLAG;
- break;
- case XK_Scroll_Lock:
- if (lockkeys & SCROLLFLAG)
- return;
- else
- lockkeys |= SCROLLFLAG;
- break;
- }
-
- if (keysym[1] == XF86XK_ModeLock) {
- if (lockkeys & MODEFLAG)
- return;
- else
- lockkeys |= MODEFLAG;
- }
- } else {
- switch (keysym[0]) {
- case XK_Caps_Lock:
- lockkeys &= ~CAPSFLAG;
- break;
- case XK_Num_Lock:
- lockkeys &= ~NUMFLAG;
- break;
- case XK_Scroll_Lock:
- lockkeys &= ~SCROLLFLAG;
- break;
- }
-
- if (keysym[1] == XF86XK_ModeLock)
- lockkeys &= ~MODEFLAG;
- }
-
- /*
- * LockKey special handling:
- * ignore releases, toggle on & off on presses.
- * Don't deal with the Caps_Lock keysym directly,
- * but check the lock modifier
- */
-#ifndef PC98
- if (keyc->modifierMap[keycode] & LockMask ||
- keysym[0] == XK_Scroll_Lock ||
- keysym[1] == XF86XK_ModeLock ||
- keysym[0] == XK_Num_Lock) {
- Bool flag;
-
- if (!down) return;
- flag = !KeyPressed(keycode);
- if (!flag) down = !down;
-
- if (keyc->modifierMap[keycode] & LockMask)
- xf86Info.capsLock = flag;
- if (keysym[0] == XK_Num_Lock)
- xf86Info.numLock = flag;
- if (keysym[0] == XK_Scroll_Lock)
- xf86Info.scrollLock = flag;
- if (keysym[1] == XF86XK_ModeLock)
- xf86Info.modeSwitchLock = flag;
- updateLeds = TRUE;
- }
-#endif /* not PC98 */
-
- /* normal, non-keypad keys */
- if (scanCode < KEY_KP_7 || scanCode > KEY_KP_Decimal) {
- /* magic ALT_L key on AT84 keyboards for multilingual support */
- if (xf86Info.kbdType == KB_84 &&
- ModifierDown(AltMask) &&
- keysym[2] != NoSymbol) {
- UsePrefix = TRUE;
- Direction = TRUE;
- }
- }
-
-#ifdef XKB /* Warning: got position wrong first time */
- }
-#endif
-
- /* check for an autorepeat-event */
- if ((down && KeyPressed(keycode)) &&
- (xf86Info.autoRepeat != AutoRepeatModeOn || keyc->modifierMap[keycode]))
- return;
-
- xf86Info.lastEventTime =
- kevent.u.keyButtonPointer.time =
- GetTimeInMillis();
-
- /*
- * And now send these prefixes ...
- * NOTE: There cannot be multiple Mode_Switch keys !!!!
- */
- if (UsePrefix) {
- ENQUEUE(&kevent,
- keyc->modifierKeyMap[keyc->maxKeysPerModifier*7],
- Direction ? KeyPress : KeyRelease,
- XE_KEYBOARD);
- ENQUEUE(&kevent,
- keycode,
- down ? KeyPress : KeyRelease,
- XE_KEYBOARD);
- ENQUEUE(&kevent,
- keyc->modifierKeyMap[keyc->maxKeysPerModifier*7],
- Direction ? KeyRelease : KeyPress,
- XE_KEYBOARD);
- } else {
-#ifdef XFreeDGA
- if (((ScrnInfoPtr)(xf86Info.currentScreen->devPrivates[xf86ScreenIndex].ptr))->directMode&XF86DGADirectKeyb) {
- XF86DirectVideoKeyEvent(&kevent,
- keycode,
- down ? KeyPress : KeyRelease);
- } else
-#endif
- {
- ENQUEUE(&kevent,
- keycode,
- down ? KeyPress : KeyRelease,
- XE_KEYBOARD);
- }
- }
-
- if (updateLeds) xf86KbdLeds();
-}
-
-#pragma pack(1)
-struct KeyPacket {
- unsigned short mnflags;
- KBDKEYINFO cp;
- unsigned short ddflags;
-};
-#pragma pack()
-
-/* The next function runs as a thread. It registers a monitor on the kbd
- * driver, and uses that to get keystrokes. This is because the standard
- * OS/2 keyboard driver does not send keyboard release events. A queue
- * is used to communicate with the main thread to send keystrokes */
-
-void os2KbdMonitorThread(void* arg)
-{
- struct KeyPacket packet;
- APIRET rc;
- USHORT length,print_flag;
- ULONG queueParam;
- HMONITOR hKbdMonitor;
- MONIN monInbuf;
- MONOUT monOutbuf;
- char queueName[128];
-
-#if 0
- monInbuf=(MONIN *)_tmalloc(2*sizeof(MONIN));
- if (monInbuf==NULL) {
- xf86Msg(X_ERROR,
- "Could not allocate memory in kbd monitor thread!\n");
- exit(1);
- }
- monOutbuf=(MONOUT *) &monInbuf[1];
-#endif
-
- monInbuf.cb=sizeof(MONIN);
- monOutbuf.cb=sizeof(MONOUT);
-
- rc = DosMonOpen("KBD$",&hKbdMonitor);
- xf86Msg(X_INFO,"Opened kbd monitor, rc=%d\n",rc);
- rc = DosMonReg(hKbdMonitor,
- (PBYTE)&monInbuf,(PBYTE)&monOutbuf,(USHORT)2,(USHORT)-1);
- xf86Msg(X_INFO,"Kbd monitor registered, rc=%d\n",rc);
- if (rc) {
- DosMonClose(hKbdMonitor);
- exit(1);
- }
-
- /* create a queue */
- sprintf(queueName,"\\QUEUES\\XF86KBD\\%d",getpid());
- rc = DosCreateQueue(&hKbdQueue,0L,queueName);
- xf86Msg(X_INFO,"Kbd Queue created, rc=%d\n",rc);
- (void)DosPurgeQueue(hKbdQueue);
-
- while (1) {
- length = sizeof(packet);
- rc = DosMonRead((PBYTE)&monInbuf,0,(PBYTE)&packet,&length);
- if (rc) {
- xf86Msg(X_ERROR,
- "DosMonRead returned bad RC! rc=%d\n",rc);
- DosMonClose(hKbdMonitor);
- exit(1);
- }
- queueParam = packet.mnflags+(packet.ddflags<<16);
- if (packet.mnflags&0x7F00)
- DosWriteQueue(hKbdQueue,queueParam,0L,NULL,0L);
- /*xf86Msg(X_INFO,"Wrote a char to queue, rc=%d\n",rc); */
- print_flag = packet.ddflags & 0x1F;
-
- /*xf86Msg(X_INFO,"Kbd Monitor: Key press %d, scan code %d, ddflags %d\n",
- packet.mnflags&0x8000,(packet.mnflags&0x7F00)>>8,packet.ddflags);
- */
-
- /* This line will swallow print-screen keypresses */
- if (print_flag == 0x13 || print_flag == 0x14 ||
- print_flag == 0x15 || print_flag == 0x16)
- rc = 0;
- else
- rc = DosMonWrite((PBYTE)&monOutbuf,(PBYTE)&packet,length);
- if (rc) {
- xf86Msg(X_ERROR,
- "DosMonWrite returned bad RC! rc=%d\n",rc);
- DosMonClose(hKbdMonitor);
- exit(1);
- }
- }
-
- DosCloseQueue(hKbdQueue);
- DosMonClose(hKbdMonitor);
-}
-
-void os2KbdBitBucketThread(void* arg)
-{
- KBDKEYINFO key;
- while (1) {
- if (xf86Info.consoleFd != -1) {
- KbdCharIn(&key,1,xf86Info.consoleFd);
- usleep(100000);
- } else
- usleep(500000);
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_mouse.c
deleted file mode 100644
index e1fd52c2e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_mouse.c
+++ /dev/null
@@ -1,653 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_mouse.c,v 3.17 2002/05/31 18:46:02 dawes Exp $ */
-/*
- * (c) Copyright 1994,1999,2000 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified (c) 1996 Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_mouse.c /main/10 1996/10/27 11:48:51 kaleb $ */
-
-#define I_NEED_OS2_H
-#define NEED_EVENTS
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "inputstr.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#define INCL_DOSFILEMGR
-#define INCL_DOSQUEUES
-#define INCL_MOU
-#undef RT_FONT
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Config.h"
-
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-#include "mipointer.h"
-
-/* The following support code was copied from mouse.c */
-
-/**********************************************************************
- *
- * Emulate3Button support code
- *
- **********************************************************************/
-
-
-/*
- * Lets create a simple finite-state machine for 3 button emulation:
- *
- * We track buttons 1 and 3 (left and right). There are 11 states:
- * 0 ground - initial state
- * 1 delayed left - left pressed, waiting for right
- * 2 delayed right - right pressed, waiting for left
- * 3 pressed middle - right and left pressed, emulated middle sent
- * 4 pressed left - left pressed and sent
- * 5 pressed right - right pressed and sent
- * 6 released left - left released after emulated middle
- * 7 released right - right released after emulated middle
- * 8 repressed left - left pressed after released left
- * 9 repressed right - right pressed after released right
- * 10 pressed both - both pressed, not emulating middle
- *
- * At each state, we need handlers for the following events
- * 0: no buttons down
- * 1: left button down
- * 2: right button down
- * 3: both buttons down
- * 4: emulate3Timeout passed without a button change
- * Note that button events are not deltas, they are the set of buttons being
- * pressed now. It's possible (ie, mouse hardware does it) to go from (eg)
- * left down to right down without anything in between, so all cases must be
- * handled.
- *
- * a handler consists of three values:
- * 0: action1
- * 1: action2
- * 2: new emulation state
- *
- * action > 0: ButtonPress
- * action = 0: nothing
- * action < 0: ButtonRelease
- *
- * The comment preceeding each section is the current emulation state.
- * The comments to the right are of the form
- * <button state> (<events>) -> <new emulation state>
- * which should be read as
- * If the buttons are in <button state>, generate <events> then go to
- * <new emulation state>.
- */
-static signed char stateTab[11][5][3] = {
-/* 0 ground */
- {
- { 0, 0, 0 }, /* nothing -> ground (no change) */
- { 0, 0, 1 }, /* left -> delayed left */
- { 0, 0, 2 }, /* right -> delayed right */
- { 2, 0, 3 }, /* left & right (middle press) -> pressed middle */
- { 0, 0, -1 } /* timeout N/A */
- },
-/* 1 delayed left */
- {
- { 1, -1, 0 }, /* nothing (left event) -> ground */
- { 0, 0, 1 }, /* left -> delayed left (no change) */
- { 1, -1, 2 }, /* right (left event) -> delayed right */
- { 2, 0, 3 }, /* left & right (middle press) -> pressed middle */
- { 1, 0, 4 }, /* timeout (left press) -> pressed left */
- },
-/* 2 delayed right */
- {
- { 3, -3, 0 }, /* nothing (right event) -> ground */
- { 3, -3, 1 }, /* left (right event) -> delayed left (no change) */
- { 0, 0, 2 }, /* right -> delayed right (no change) */
- { 2, 0, 3 }, /* left & right (middle press) -> pressed middle */
- { 3, 0, 5 }, /* timeout (right press) -> pressed right */
- },
-/* 3 pressed middle */
- {
- { -2, 0, 0 }, /* nothing (middle release) -> ground */
- { 0, 0, 7 }, /* left -> released right */
- { 0, 0, 6 }, /* right -> released left */
- { 0, 0, 3 }, /* left & right -> pressed middle (no change) */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 4 pressed left */
- {
- { -1, 0, 0 }, /* nothing (left release) -> ground */
- { 0, 0, 4 }, /* left -> pressed left (no change) */
- { -1, 0, 2 }, /* right (left release) -> delayed right */
- { 3, 0, 10 }, /* left & right (right press) -> pressed both */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 5 pressed right */
- {
- { -3, 0, 0 }, /* nothing (right release) -> ground */
- { -3, 0, 1 }, /* left (right release) -> delayed left */
- { 0, 0, 5 }, /* right -> pressed right (no change) */
- { 1, 0, 10 }, /* left & right (left press) -> pressed both */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 6 released left */
- {
- { -2, 0, 0 }, /* nothing (middle release) -> ground */
- { -2, 0, 1 }, /* left (middle release) -> delayed left */
- { 0, 0, 6 }, /* right -> released left (no change) */
- { 1, 0, 8 }, /* left & right (left press) -> repressed left */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 7 released right */
- {
- { -2, 0, 0 }, /* nothing (middle release) -> ground */
- { 0, 0, 7 }, /* left -> released right (no change) */
- { -2, 0, 2 }, /* right (middle release) -> delayed right */
- { 3, 0, 9 }, /* left & right (right press) -> repressed right */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 8 repressed left */
- {
- { -2, -1, 0 }, /* nothing (middle release, left release) -> ground */
- { -2, 0, 4 }, /* left (middle release) -> pressed left */
- { -1, 0, 6 }, /* right (left release) -> released left */
- { 0, 0, 8 }, /* left & right -> repressed left (no change) */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 9 repressed right */
- {
- { -2, -3, 0 }, /* nothing (middle release, right release) -> ground */
- { -3, 0, 7 }, /* left (right release) -> released right */
- { -2, 0, 5 }, /* right (middle release) -> pressed right */
- { 0, 0, 9 }, /* left & right -> repressed right (no change) */
- { 0, 0, -1 }, /* timeout N/A */
- },
-/* 10 pressed both */
- {
- { -1, -3, 0 }, /* nothing (left release, right release) -> ground */
- { -3, 0, 4 }, /* left (right release) -> pressed left */
- { -1, 0, 5 }, /* right (left release) -> pressed right */
- { 0, 0, 10 }, /* left & right -> pressed both (no change) */
- { 0, 0, -1 }, /* timeout N/A */
- },
-};
-
-/*
- * Table to allow quick reversal of natural button mapping to correct mapping
- */
-
-/*
- * [JCH-96/01/21] The ALPS GlidePoint pad extends the MS protocol
- * with a fourth button activated by tapping the PAD.
- * The 2nd line corresponds to 4th button on; the drv sends
- * the buttons in the following map (MSBit described first) :
- * 0 | 4th | 1st | 2nd | 3rd
- * And we remap them (MSBit described first) :
- * 0 | 4th | 3rd | 2nd | 1st
- */
-static char reverseMap[32] = { 0, 4, 2, 6, 1, 5, 3, 7,
- 8, 12, 10, 14, 9, 13, 11, 15,
- 16, 20, 18, 22, 17, 21, 19, 23,
- 24, 28, 26, 30, 25, 29, 27, 31};
-
-
-static char hitachMap[16] = { 0, 2, 1, 3,
- 8, 10, 9, 11,
- 4, 6, 5, 7,
- 12, 14, 13, 15 };
-
-#define reverseBits(map, b) (((b) & ~0x0f) | map[(b) & 0x0f])
-
-static CARD32
-buttonTimer(InputInfoPtr pInfo)
-{
- MouseDevPtr pMse;
- int sigstate;
- int id;
-
- pMse = pInfo->private;
-
- sigstate = xf86BlockSIGIO ();
-
- pMse->emulate3Pending = FALSE;
- if ((id = stateTab[pMse->emulateState][4][0]) != 0) {
- xf86PostButtonEvent(pInfo->dev, 0, abs(id), (id >= 0), 0, 0);
- pMse->emulateState = stateTab[pMse->emulateState][4][2];
- } else {
- ErrorF("Got unexpected buttonTimer in state %d\n", pMse->emulateState);
- }
-
- xf86UnblockSIGIO (sigstate);
- return 0;
-}
-
-static Bool
-Emulate3ButtonsSoft(InputInfoPtr pInfo)
-{
- MouseDevPtr pMse = pInfo->private;
-
- if (!pMse->emulate3ButtonsSoft)
- return TRUE;
-
- pMse->emulate3Buttons = FALSE;
-
- if (pMse->emulate3Pending)
- buttonTimer(pInfo);
-
- xf86Msg(X_INFO,"3rd Button detected: disabling emulate3Button\n");
-
- return FALSE;
-}
-
-static void MouseBlockHandler(pointer data,
- struct timeval **waitTime,
- pointer LastSelectMask)
-{
- InputInfoPtr pInfo = (InputInfoPtr) data;
- MouseDevPtr pMse = (MouseDevPtr) pInfo->private;
- int ms;
-
- if (pMse->emulate3Pending)
- {
- ms = pMse->emulate3Expires - GetTimeInMillis ();
- if (ms <= 0)
- ms = 0;
- AdjustWaitForDelay (waitTime, ms);
- }
-}
-
-static void MouseWakeupHandler(pointer data,
- int i,
- pointer LastSelectMask)
-{
- InputInfoPtr pInfo = (InputInfoPtr) data;
- MouseDevPtr pMse = (MouseDevPtr) pInfo->private;
- int ms;
-
- if (pMse->emulate3Pending)
- {
- ms = pMse->emulate3Expires - GetTimeInMillis ();
- if (ms <= 0)
- buttonTimer (pInfo);
- }
-}
-
-static int
-SupportedInterfaces(void)
-{
- return MSE_MISC;
-}
-
-static const char* internalNames[] = {
- "OS2Mouse",
- NULL
-};
-
-static const char**
-BuiltinNames(void)
-{
- return internalNames;
-}
-
-static Bool
-CheckProtocol(const char *protocol)
-{
- int i;
-
- for (i = 0; internalNames[i]; i++)
- if (xf86NameCmp(protocol, internalNames[i]) == 0)
- return TRUE;
- return FALSE;
-}
-
-static const char *
-DefaultProtocol(void)
-{
- return "OS2Mouse";
-}
-
-static const char *
-SetupAuto(InputInfoPtr pInfo, int *protoPara)
-{
- return "OS2Mouse";
-}
-
-HMOU hMouse=65535;
-HEV hMouseSem;
-HQUEUE hMouseQueue;
-InputInfoPtr iinfoPtr;
-int MouseTid;
-BOOL HandleValid=FALSE;
-extern BOOL SwitchedToWPS;
-extern CARD32 LastSwitchTime;
-void os2MouseEventThread(void* arg);
-
-static void
-os2MouseReadInput(InputInfoPtr pInfo)
-{
- APIRET rc;
- ULONG postCount,dataLength;
- PVOID dummy;
- int buttons;
- int state;
- int i, dx,dy;
- BYTE elemPriority;
- REQUESTDATA requestData;
-
- MouseDevPtr pMse = pInfo->private;
-
- if (!HandleValid) return;
- while((rc = DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem)) == 0) {
- dx = requestData.ulData;
- (void)DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem);
- dy = requestData.ulData;
- (void)DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem);
- state = requestData.ulData;
- (void)DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem);
- if (requestData.ulData != 0xFFFFFFFF)
- xf86Msg(X_ERROR,
- "Unexpected mouse event tag, %d\n",
- requestData.ulData);
-
- /* Contrary to other systems, OS/2 has mouse buttons *
- * in the proper order, so we reverse them before *
- * sending the event. */
-
- buttons = ((state & 0x06) ? 4 : 0) |
- ((state & 0x18) ? 1 : 0) |
- ((state & 0x60) ? 2 : 0);
- pMse->PostEvent(pInfo, buttons, dx, dy, 0, 0);
- }
- DosResetEventSem(hMouseSem,&postCount);
-}
-
-int os2MouseProc(DeviceIntPtr pPointer, int what)
-{
- APIRET rc = 0;
- USHORT nbuttons, state;
- unsigned char map[MSE_MAXBUTTONS + 1];
- int i;
-
- InputInfoPtr pInfo = pPointer->public.devicePrivate;
- MouseDevPtr pMse = pInfo->private;
- pMse->device = pPointer;
-
- switch (what) {
- case DEVICE_INIT:
- pPointer->public.on = FALSE;
- if (hMouse == 65535)
- rc = MouOpen((PSZ)0, &hMouse);
- if (rc != 0)
- xf86Msg(X_WARNING,"%s: cannot open mouse, rc=%d\n",
- pInfo->name,rc);
- else {
- pInfo->fd = hMouse;
-
- /* flush mouse queue */
- MouFlushQue(hMouse);
-
- /* check buttons */
- rc = MouGetNumButtons(&nbuttons, hMouse);
- if (rc == 0)
- xf86Msg(X_INFO,"%s: Mouse has %d button(s).\n",
- pInfo->name,nbuttons);
- if (nbuttons==2) nbuttons++;
-
- for (i = 1; i<=nbuttons; i++)
- map[i] = i;
-
- InitPointerDeviceStruct((DevicePtr)pPointer, map, nbuttons,
- miPointerGetMotionEvents, pMse->Ctrl,
- miPointerGetMotionBufferSize());
-
- /* X valuator */
- xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 0);
- /* y Valuator */
- InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 1);
- xf86MotionHistoryAllocate(pInfo);
-
- /* OK, we are ready to start up the mouse thread ! */
- if (!HandleValid) {
- rc = DosCreateEventSem(NULL,&hMouseSem,DC_SEM_SHARED,TRUE);
- if (rc != 0)
- xf86Msg(X_ERROR,"%s: could not create mouse queue semaphore, rc=%d\n",
- pInfo->name,rc);
- MouseTid = _beginthread(os2MouseEventThread,NULL,0x4000,(void *)pInfo);
- xf86Msg(X_INFO,
- "%s: Started Mouse event thread, Tid=%d\n",
- pInfo->name, MouseTid);
- DosSetPriority(2,3,0,MouseTid);
- }
- HandleValid=TRUE;
- }
- break;
-
- case DEVICE_ON:
- if (!HandleValid) return -1;
- pMse->lastButtons = 0;
- pMse->lastMappedButtons = 0;
- pMse->emulateState = 0;
- pPointer->public.on = TRUE;
- state = 0x300;
- rc = MouSetDevStatus(&state,hMouse);
- state = 0x7f;
- rc = MouSetEventMask(&state,hMouse);
- MouFlushQue(hMouse);
- if (pMse->emulate3Buttons || pMse->emulate3ButtonsSoft)
- {
- RegisterBlockAndWakeupHandlers (MouseBlockHandler, MouseWakeupHandler,
- (pointer) pInfo);
- }
- break;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- if (!HandleValid) return -1;
- if (pMse->emulate3Buttons || pMse->emulate3ButtonsSoft)
- {
- RemoveBlockAndWakeupHandlers (MouseBlockHandler, MouseWakeupHandler,
- (pointer) pInfo);
- }
- pPointer->public.on = FALSE;
- state = 0x300;
- MouSetDevStatus(&state,hMouse);
- state = 0;
- MouSetEventMask(&state,hMouse);
- if (what == DEVICE_CLOSE) {
-/* Comment out for now as this seems to break server */
-#if 0
- MouClose(hMouse);
- hMouse = 65535;
- pInfo->fd = -1;
- HandleValid = FALSE;
-#endif
- }
- break;
- }
- return Success;
-}
-
-int os2MouseQueueQuery()
-{
- /* Now we check for activity on mouse handles */
- ULONG numElements,postCount;
-
- if (!HandleValid) return(1);
- DosResetEventSem(hMouseSem,&postCount);
- (void)DosQueryQueue(hMouseQueue,&numElements);
- if (numElements>0) { /* Something in mouse queue! */
- return 0; /* Will this work? */
- }
- return 1;
-}
-
-void os2MouseEventThread(void *arg)
-{
- APIRET rc;
- MOUEVENTINFO mev;
- ULONG queueParam;
- USHORT waitflg;
- char queueName[128];
- MouseDevPtr pMse;
-
- iinfoPtr = (InputInfoPtr)arg;
- pMse = iinfoPtr->private;
-
- sprintf(queueName,"\\QUEUES\\XF86MOU\\%d",getpid());
- rc = DosCreateQueue(&hMouseQueue,0L,queueName);
- xf86Msg(X_INFO,"Mouse Queue created, rc=%d\n",rc);
- (void)DosPurgeQueue(hMouseQueue);
-
- while(1) {
- waitflg = 1;
- rc = MouReadEventQue(&mev,&waitflg,hMouse);
- if (rc) {
- xf86Msg(X_ERROR,
- "Bad return code from mouse driver, rc=%d\n",
- rc);
- xf86Msg(X_ERROR,"Mouse aborting!\n");
- break;
- }
-
- queueParam = mev.col;
- if ((rc = DosWriteQueue(hMouseQueue,queueParam,0L,NULL,0L)))
- break;
- queueParam = mev.row;
- if ((rc = DosWriteQueue(hMouseQueue,queueParam,0L,NULL,0L)))
- break;
- queueParam = mev.fs;
- if ((rc = DosWriteQueue(hMouseQueue,queueParam,0L,NULL,0L)))
- break;
- queueParam = 0xFFFFFFFF;
- if ((rc = DosWriteQueue(hMouseQueue,queueParam,0L,NULL,0L)))
- break;
- }
- xf86Msg(X_ERROR,
- "An unrecoverable error in mouse queue has occured, rc=%d. Mouse is shutting down.\n",
- rc);
- DosCloseQueue(hMouseQueue);
-}
-
-
-static Bool
-os2MousePreInit(InputInfoPtr pInfo, const char* protocol, int flags)
-{
- MouseDevPtr pMse = pInfo->private;
-
- pMse->protocol = protocol;
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
-
- /* Collect the options, and process the common options. */
- xf86CollectInputOptions(pInfo, NULL, NULL);
- xf86ProcessCommonOptions(pInfo, pInfo->options);
-
- /* Process common mouse options (like Emulate3Buttons, etc). */
- pMse->CommonOptions(pInfo);
-
- /* Setup the local procs. */
- pInfo->device_control = os2MouseProc;
- pInfo->read_input = os2MouseReadInput;
-
- pInfo->flags |= XI86_CONFIGURED;
- return TRUE;
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
- p->SupportedInterfaces = SupportedInterfaces;
- p->BuiltinNames = BuiltinNames;
- p->DefaultProtocol = DefaultProtocol;
- p->CheckProtocol = CheckProtocol;
- p->PreInit = os2MousePreInit;
- p->SetupAuto = SetupAuto;
- return p;
-}
-
-void xf86OsMouseEvents()
-{
- APIRET rc;
- ULONG postCount,dataLength;
- PVOID dummy;
- int buttons;
- int state;
- int i, dx,dy;
- BYTE elemPriority;
- REQUESTDATA requestData;
-
- MouseDevPtr pMse = iinfoPtr->private;
-
- if (!HandleValid) return;
- while((rc = DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem)) == 0) {
- dx = requestData.ulData;
- (void)DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem);
- dy = requestData.ulData;
- (void)DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem);
- state = requestData.ulData;
- (void)DosReadQueue(hMouseQueue,
- &requestData,&dataLength,&dummy,
- 0L,1L,&elemPriority,hMouseSem);
- if (requestData.ulData != 0xFFFFFFFF)
- xf86Msg(X_ERROR,
- "Unexpected mouse event tag, %d\n",
- requestData.ulData);
-
- /* Contrary to other systems, OS/2 has mouse buttons *
- * in the proper order, so we reverse them before *
- * sending the event. */
-
- buttons = ((state & 0x06) ? 4 : 0) |
- ((state & 0x18) ? 1 : 0) |
- ((state & 0x60) ? 2 : 0);
- pMse->PostEvent(iinfoPtr, buttons, dx, dy, 0, 0);
- }
- DosResetEventSem(hMouseSem,&postCount);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.c
deleted file mode 100644
index 395104242..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.c
+++ /dev/null
@@ -1,497 +0,0 @@
-/* $XConsortium: os2_select.c /main/6 1996/10/27 11:48:55 kaleb $ */
-
-
-
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_select.c,v 3.9 2003/03/25 04:18:24 dawes Exp $ */
-
-/*
- * (c) Copyright 1996 by Sebastien Marineau
- * <marineau@genie.uottawa.ca>
- * Modified 1999 by Holger.Veit@gmd.de
- * Modified 2004 by Frank Giessler
- * <giessler@biomag.uni-jena.de>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- */
-
-/* os2_select.c: reimplementation of the xserver select(), optimized for speed */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <memory.h>
-#include <io.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/errno.h>
-#include <emx/io.h>
-
-#define I_NEED_OS2_H
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSPROFILE
-#define INCL_DOSPROCESS
-#define INCL_DOSFILEMGR
-#define INCL_DOSMISC
-#define INCL_DOSMODULEMGR
-
-
-#include <X11/Xpoll.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include "os2_select.h"
-
-int os2MouseQueueQuery();
-int os2KbdQueueQuery();
-void os2RecoverFromPopup();
-void os2CheckPopupPending();
-void os2SocketMonitorThread();
-extern BOOL os2PopupErrorPending;
-
-extern HEV hKbdSem;
-extern HEV hMouseSem;
-extern HEV hevServerHasFocus;
-HEV hPipeSem;
-HEV hSocketSem;
-HEV hActivateSocketSem;
-HEV hSwitchToSem;
-static HMUX hSelectWait;
-SEMRECORD SelectMuxRecord[5];
-HMODULE hmod_so32dll;
-static struct select_data sd;
-
-static int (*os2_tcp_select)(int *,int,int,int,long);
-static int (*os2_so_cancel)(int);
-static int (*os2_sock_errno)();
-int os2_set_error(ULONG);
-extern int _files[];
-
-
-
-/* This is a new implementation of select, for improved efficiency */
-/* This function performs select() on sockets */
-/* but uses OS/2 internal fncts to check mouse */
-/* and keyboard. S. Marineau, 27/4/96 */
-
-/* This is still VERY messy */
-
-/* A few note on optimizations: this select has been tuned for maximum
-* performance, and thus has a different approach than a general-purpose
-* select. It should not be used in another app without modifications. Further,
-* it may need modifications if the Xserver os code is modified
-* Assumptions: this is never called with anything in exceptfds. This is
-* silently ignored. Further, if any pipes are specified in the write mask, it is
-* because they have just been stuffed full by the xserver. There is not much
-* in immediately returning with those bits set. Instead, we block on the
-* semaphore for at least one tick, which will let the client at least start
-* to flush the pipe. */
-
-int os2PseudoSelect(nfds,readfds,writefds,exceptfds,timeout)
- int nfds;
- fd_set *readfds,*writefds,*exceptfds;
- struct timeval *timeout;
-{
-
- static BOOL FirstTime=TRUE;
-
- int n,ns,np;
- int ready_handles;
- ULONG timeout_ms;
- BOOL any_ready;
- ULONG semKey,postCount;
- APIRET rc;
- char faildata[16];
- static int Socket_Tid;
-
- sd.have_read=FALSE; sd.have_write=FALSE;
- sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0;
- sd.max_fds=31; ready_handles=0; any_ready=FALSE;
- sd.pipe_ntotal=0; sd.pipe_have_write=FALSE;
-
- /* Stuff we have to do the first time this is called to set up various parameters */
-
- if (FirstTime) {
- /* First load the so32dll.dll module and get a pointer to the SELECT fn */
-
- if ((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0) {
- FatalError("Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata);
- }
- if ((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0) {
- FatalError("Could not query address of SELECT, rc = %d.\n",rc);
- }
- if ((rc = DosQueryProcAddr(hmod_so32dll, 0, "SO_CANCEL", (PPFN)&os2_so_cancel))!=0) {
- FatalError("Could not query address of SO_CANCEL, rc = %d.\n",rc);
- }
- if ((rc = DosQueryProcAddr(hmod_so32dll, 0, "SOCK_ERRNO", (PPFN)&os2_sock_errno))!=0) {
- FatalError("Could not query address of SOCK_ERRNO, rc = %d.\n",rc);
- }
-
- /* Call these a first time to set the semaphore */
- xf86OsMouseEvents();
- xf86KbdEvents();
-
- DosCreateEventSem(NULL, &hSocketSem,DC_SEM_SHARED,FALSE);
- DosResetEventSem(hSocketSem,&postCount);
-
- DosCreateEventSem(NULL, &hActivateSocketSem, DC_SEM_SHARED, FALSE);
- DosResetEventSem(hActivateSocketSem, &postCount);
-
- DosCreateEventSem(NULL, &hSwitchToSem, DC_SEM_SHARED, FALSE);
- DosResetEventSem(hSwitchToSem, &postCount);
-
- Socket_Tid = _beginthread(os2SocketMonitorThread, NULL, 0x2000,(void *) NULL);
- xf86Msg(X_INFO,
- "Started Socket monitor thread, TID=%d\n",Socket_Tid);
-
- SelectMuxRecord[0].hsemCur = (HSEM)hMouseSem;
- SelectMuxRecord[0].ulUser = MOUSE_SEM_KEY;
- SelectMuxRecord[1].hsemCur = (HSEM)hKbdSem;
- SelectMuxRecord[1].ulUser = KBD_SEM_KEY;
- SelectMuxRecord[2].hsemCur = (HSEM)hPipeSem;
- SelectMuxRecord[2].ulUser = PIPE_SEM_KEY;
- SelectMuxRecord[3].hsemCur = (HSEM)hSocketSem;
- SelectMuxRecord[3].ulUser = SOCKET_SEM_KEY;
- SelectMuxRecord[4].hsemCur = (HSEM)hSwitchToSem;
- SelectMuxRecord[4].ulUser = SWITCHTO_SEM_KEY;
-
- rc = DosCreateMuxWaitSem(NULL, &hSelectWait, 5, SelectMuxRecord,
- DC_SEM_SHARED | DCMW_WAIT_ANY);
- if (rc) {
- xf86Msg(X_ERROR,"Could not create MuxWait semaphore, rc=%d\n",rc);
- }
- FirstTime = FALSE;
- }
-
- rc = DosResetEventSem(hActivateSocketSem, &postCount);
- /* Set up the time delay structs */
-
- if (timeout!=NULL) {
- timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000;
- } else {
- timeout_ms=1000000; /* This should be large enough... */
- }
-
- /* Zero our local fd_masks */
- {FD_ZERO(&sd.read_copy);}
- {FD_ZERO(&sd.write_copy);}
-
- /* Copy the masks for later use */
- if (readfds!=NULL) { XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE; }
- if (writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy); sd.have_write=TRUE; }
-
- /* And zero the original masks */
- if (sd.have_read){ FD_ZERO(readfds); }
- if (sd.have_write) {FD_ZERO(writefds); }
- if (exceptfds != NULL) {FD_ZERO(exceptfds); }
-
- /* Now we parse the fd_sets passed to select and separate pipe/sockets */
- n = os2_parse_select(&sd,nfds);
-
- /* Now check if we have sockets ready! */
-
- if (sd.socket_ntotal > 0) {
- ns = os2_poll_sockets(&sd,readfds,writefds);
- if (ns>0) {
- ready_handles+=ns;
- any_ready = TRUE;
- } else if (ns == -1) {
- return(-1);
- }
- }
-
- /* And pipes */
-
- if (sd.pipe_ntotal > 0) {
- np = os2_check_pipes(&sd,readfds,writefds);
- if (np > 0) {
- ready_handles+=np;
- any_ready = TRUE;
- } else if (np == -1) {
- return(-1);
- }
- }
-
- /* And finally poll input devices */
- if(!os2MouseQueueQuery() || !os2KbdQueueQuery() ) any_ready = TRUE;
-
- if (xf86Info.vtRequestsPending) any_ready=TRUE;
-
- if (os2PopupErrorPending)
- os2RecoverFromPopup();
-
- if (!any_ready && timeout_ms) {
- DosResetEventSem(hSocketSem,&postCount);
-
- /* Activate the socket thread */
- if (sd.socket_ntotal>0) {
- rc = DosPostEventSem(hActivateSocketSem);
- }
-
- rc = DosWaitMuxWaitSem(hSelectWait, timeout_ms, &semKey);
-
- /* If our socket monitor thread is still blocked in os2_tcp_select()
- * we have to wake it up by calling os2_so_cancel().
- * After that, call os2_tcp_select() once more to get rid of
- * error SOCEINTR (10004)
- */
- if (sd.socket_ntotal>0) {
- rc = DosQueryEventSem(hSocketSem, &postCount);
-
- if (postCount == 0) { /* os2_select still blocked */
- int i,f,g;
- struct select_data *sd_ptr=&sd;
-
- if (sd.socket_nread > 0) {
- for (i=0; i<sd.socket_nread; i++) {
- f = g = sd_ptr->tcp_select_mask[i];
- os2_so_cancel(f);
- os2_tcp_select(&g, 1, 0, 0, 0); /* get rid of error 10004 */
- }
- }
- if (sd.socket_nwrite > 0) {
- for (i=sd.socket_nread;
- i<sd.socket_nread+sd.socket_nwrite;
- i++) {
- f = g = sd_ptr->tcp_select_mask[i];
- os2_so_cancel(f);
- os2_tcp_select(&g, 0, 1, 0, 0); /* get rid of error 10004 */
- }
- }
- } else { /* not blocked, something must be ready -> get it */
- ns = os2_poll_sockets(&sd,readfds,writefds);
- if (ns>0) {
- ready_handles+=ns;
- } else if (ns == -1) {
- return(-1);
- }
- }
- }
- if (sd.pipe_ntotal > 0) {
- rc = DosQueryEventSem(hPipeSem,&postCount);
- if (postCount > 0) {
- np = os2_check_pipes(&sd,readfds,writefds);
- if (np > 0) {
- ready_handles+=np;
- } else if (np == -1) {
- return(-1);
- }
- }
- }
- }
- /* The polling of sockets/pipe automatically set the proper bits */
- return (ready_handles);
-}
-
-
-int os2_parse_select(sd,nfds)
- struct select_data *sd;
- int nfds;
-{
- int i;
- /* First we determine up to which descriptor we need to check. */
- /* No need to check up to 256 if we don't have to (and usually we dont...)*/
- /* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX!!! */
-
- if (nfds > sd->max_fds) {
- for (i=0;i<((FD_SETSIZE+31)/32);i++) {
- if (sd->read_copy.fds_bits[i] ||
- sd->write_copy.fds_bits[i])
- sd->max_fds=(i*32) +32;
- }
- } else { sd->max_fds = nfds; }
-
- /* Check if this is greater than specified in select() call */
- if(sd->max_fds > nfds) sd->max_fds = nfds;
-
- if (sd->have_read) {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->read_copy)) {
- if(_files[i] & F_SOCKET) {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nread++;
- } else if (_files[i] & F_PIPE) {
- sd -> pipe_ntotal++;
- }
- }
- }
- }
- if (sd->have_write) {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->write_copy)) {
- if (_files[i] & F_SOCKET) {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nwrite++;
- } else if (_files[i] & F_PIPE) {
- sd -> pipe_ntotal++;
- sd -> pipe_have_write=TRUE;
- }
- }
- }
- }
- return(sd->socket_ntotal);
-}
-
-
-int os2_poll_sockets(sd,readfds,writefds)
- struct select_data *sd;
- fd_set *readfds,*writefds;
-{
- int e,i;
- int j,n;
-
- memcpy(sd->tcp_select_copy,sd->tcp_select_mask,
- sd->socket_ntotal*sizeof(int));
-
- e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread,
- sd->socket_nwrite, 0, 0);
-
- if (e == 0) return(e);
-
- /* We have something ready? */
- if (e>0) {
- j = 0; n = 0;
- for (i = 0; i < sd->socket_nread; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1) {
- FD_SET (sd->tcp_emx_handles[j], readfds);
- n ++;
- }
- for (i = 0; i < sd->socket_nwrite; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1) {
- FD_SET (sd->tcp_emx_handles[j], writefds);
- n ++;
- }
- errno = 0;
-
- return n;
- }
- if (e<0) {
- /*Error -- TODO */
- xf86Msg(X_ERROR,"Error in server select! sock_errno = %d\n",os2_sock_errno());
- errno = EBADF;
- return (-1);
- }
-}
-
-/* Check to see if anything is ready on pipes */
-
-int os2_check_pipes(sd,readfds,writefds)
- struct select_data *sd;
- fd_set *readfds,*writefds;
-{
- int i,e;
- ULONG ulPostCount;
- PIPESEMSTATE pipeSemState[128];
- APIRET rc;
-
- e = 0;
- rc = DosResetEventSem(hPipeSem,&ulPostCount);
- rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState,
- sizeof(pipeSemState));
- if(rc) xf86Msg(X_ERROR,"SELECT: rc from QueryNPipeSem: %d\n",rc);
- i=0;
- while (pipeSemState[i].fStatus != 0) {
-/* xf86Msg(X_INFO,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n",
- pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey,
- pipeSemState[i].usAvail); */
- if ((pipeSemState[i].fStatus == 1) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))) {
- FD_SET(pipeSemState[i].usKey,readfds);
- e++;
- } else if ((pipeSemState[i].fStatus == 2) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))) {
- FD_SET(pipeSemState[i].usKey,writefds);
- e++;
- } else if ((pipeSemState[i].fStatus == 3) &&
- ((FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) ||
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )) {
- errno = EBADF;
- /* xf86Msg(X_ERROR,"Pipe has closed down, fd=%d\n",pipeSemState[i].usKey); */
- return (-1);
- }
- i++;
- } /* endwhile */
-
- errno = 0;
- return(e);
-}
-
-
-void os2SocketMonitorThread(void *arg)
-{
- struct select_data *sd_ptr = &sd;
- ULONG ulPostCount;
- int e,rc;
-
- /* Make thread time critical */
- DosSetPriority(2L,3L,0L,0L);
-
- while (1) {
- rc = DosWaitEventSem(hActivateSocketSem, SEM_INDEFINITE_WAIT);
- if (rc != 0 )
- xf86Msg(X_ERROR,"Socket monitor: DosWaitEventSem(hActivateSocketSem..) returned %d\n",rc);
-
- rc = DosResetEventSem(hActivateSocketSem,&ulPostCount);
- if (rc != 0 )
- xf86Msg(X_ERROR,"Socket monitor: DosResetEventSem(&hActivateSocketSem..) returned %d\n",rc);
-
- /* fg300104:
- * The next line shouldn't be here, but the DosPostEventSem()
- * below will return 299 from time to time under heavy load
- */
-/* DosResetEventSem(hSocketSem,&ulPostCount);*/
-
- memcpy(sd_ptr->tcp_select_monitor,sd_ptr->tcp_select_mask,
- sd_ptr->socket_ntotal*sizeof(int));
-
- /* call os2_select(), return only if either something is ready or
- * os2_so_cancel() was called
- */
- e = os2_tcp_select(sd_ptr->tcp_select_monitor, sd_ptr->socket_nread,
- sd_ptr->socket_nwrite, 0, -1);
-
- if (e>0) {
- rc = DosPostEventSem(hSocketSem);
- if (rc != 0 )
- xf86Msg(X_ERROR,"Socket monitor: DosPostEventSem(hSocketSem..) returned %d\n",rc);
- } else if (e<0) {
- rc = os2_sock_errno();
- if (rc != 10004)
- xf86Msg(X_ERROR,"Socket monitor: os2_select: sock_errno = %d\n",rc);
- }
-
- rc = DosQueryEventSem(hevServerHasFocus, &ulPostCount);
-
- /* no need to rush while switched away */
- if ((rc==0) && (ulPostCount==0))
- rc == DosWaitEventSem(hevServerHasFocus,31L);
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.h
deleted file mode 100644
index cb2291e09..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_select.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* $XConsortium: os2_select.h /main/1 1996/05/13 16:38:30 kaleb $ */
-/*
- * (c) Copyright 1996 by Sebastien Marineau
- * <marineau@genie.uottawa.ca>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_select.h,v 3.1 1996/12/27 07:04:31 dawes Exp $ */
-
-/* Header file for os2_select.c */
-
-#define MAX_TCP 256
-
-#define MOUSE_SEM_KEY 0x0F01
-#define KBD_SEM_KEY 0x0F02
-#define PIPE_SEM_KEY 0x0F03
-#define SOCKET_SEM_KEY 0x0F04
-#define SWITCHTO_SEM_KEY 0x0F05
-
-
-struct select_data
-{
- fd_set read_copy;
- fd_set write_copy;
- BOOL have_read;
- BOOL have_write;
- int tcp_select_mask[MAX_TCP];
- int tcp_emx_handles[MAX_TCP];
- int tcp_select_copy[MAX_TCP];
- int tcp_select_monitor[MAX_TCP];
- int socket_nread;
- int socket_nwrite;
- int socket_ntotal;
- int pipe_ntotal;
- int pipe_have_write;
- int max_fds;
-};
-
-
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_serial.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_serial.c
deleted file mode 100644
index 6587b1bda..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_serial.c
+++ /dev/null
@@ -1,517 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_serial.c,v 1.3 2000/04/05 18:13:53 dawes Exp $ */
-/*
- * (c) Copyright 1999 by Holger Veit
- * <Holger.Veit@gmd.de>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium$ */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#define INCL_DOSDEVIOCTL
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-static int _set_baudrate(HFILE fd,int baud)
-{
- USHORT br = baud;
- ULONG plen;
- return DosDevIOCtl(fd,IOCTL_ASYNC,ASYNC_SETBAUDRATE,
- (PULONG)&br,sizeof(br),&plen,NULL,0,NULL);
-}
-
-#pragma pack(1)
-typedef struct _glinectl {
- UCHAR databits;
- UCHAR parity;
- UCHAR stopbits;
- UCHAR sendbrk;
-} GLINECTL;
-typedef struct _slinectl {
- UCHAR databits;
- UCHAR parity;
- UCHAR stopbits;
-} SLINECTL;
-
-#pragma pack()
-
-static int _get_linectrl(HFILE fd,GLINECTL* linectrl)
-{
- ULONG dlen;
- return DosDevIOCtl(fd,IOCTL_ASYNC,ASYNC_GETLINECTRL,
- NULL,0,NULL,linectrl,sizeof(GLINECTL),&dlen);
-}
-
-static int _set_linectl(HFILE fd,GLINECTL* linectl)
-{
- ULONG plen;
- return DosDevIOCtl(fd,IOCTL_ASYNC,ASYNC_SETLINECTRL,
- (PULONG)&linectl,sizeof(SLINECTL),&plen,NULL,0,NULL);
-}
-
-static int _get_dcb(HFILE fd,DCBINFO* dcb) {
-
- ULONG dlen;
- return DosDevIOCtl(fd,IOCTL_ASYNC,ASYNC_GETDCBINFO,
- NULL,0,NULL,(PULONG)dcb,sizeof(DCBINFO),&dlen);
-}
-
-static int _set_dcb(HFILE fd,DCBINFO* dcb)
-{
- ULONG plen;
- return DosDevIOCtl(fd,IOCTL_ASYNC, ASYNC_SETDCBINFO,
- (PULONG)dcb,sizeof(DCBINFO),&plen,NULL,0,NULL);
-}
-
-#pragma pack(1)
-typedef struct comsize {
- USHORT nqueued;
- USHORT qsize;
-} COMSIZE;
-#pragma pack()
-
-static int _get_nread(HFILE fd,ULONG* nread)
-{
- ULONG dlen;
- COMSIZE sz;
- APIRET rc = DosDevIOCtl(fd,IOCTL_ASYNC,ASYNC_GETINQUECOUNT,
- NULL, 0, NULL, sz,sizeof(COMSIZE),&dlen);
- *nread = sz.nqueued;
- return rc ? -1 : 0;
-}
-
-int xf86OpenSerial (pointer options)
-{
- APIRET rc;
- HFILE fd, i;
- ULONG action;
- GLINECTL linectl;
-
- char* dev = xf86FindOptionValue (options, "Device");
- xf86MarkOptionUsedByName (options, "Device");
- if (!dev) {
- xf86Msg (X_ERROR, "xf86OpenSerial: No Device specified.\n");
- return -1;
- }
-
- rc = DosOpen(dev, &fd, &action, 0, FILE_NORMAL, FILE_OPEN,
- OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE, NULL);
- if (rc) {
- xf86Msg (X_ERROR,
- "xf86OpenSerial: Cannot open device %s, rc=%d.\n",
- dev, rc);
- return -1;
- }
-
- /* check whether it is an async device */
- if (_get_linectrl(fd,&linectl)) {
- xf86Msg (X_WARNING,
- "xf86OpenSerial: Specified device %s is not a tty\n",
- dev);
- DosClose(fd);
- return -1;
- }
-
- /* set up default port parameters */
- _set_baudrate(fd, 9600);
-
- linectl.databits = 8;
- linectl.parity = 0;
- linectl.stopbits = 0;
- _set_linectl(fd, &linectl);
-
- if (xf86SetSerial (fd, options) == -1) {
- DosClose(fd);
- return -1;
- }
-
- return fd;
-}
-
-int xf86SetSerial (int fd, pointer options)
-{
- APIRET rc;
- USHORT baud;
- ULONG plen,dlen;
- char *s;
-
- GLINECTL linectl;
- DCBINFO dcb;
-
- if ((s = xf86FindOptionValue (options, "BaudRate"))) {
- xf86MarkOptionUsedByName (options, "BaudRate");
- if ((rc = _set_baudrate(fd, atoi(s)))) {
- xf86Msg (X_ERROR,"Set Baudrate: %s, rc=%d\n", s, rc);
- return -1;
- }
- }
-
- /* get line parameters */
- if (DosDevIOCtl((HFILE)fd,IOCTL_ASYNC, ASYNC_GETLINECTRL,
- NULL,0,NULL,
- (PULONG)&linectl,sizeof(GLINECTL),&dlen)) return -1;
-
- if ((s = xf86FindOptionValue (options, "StopBits"))) {
- xf86MarkOptionUsedByName (options, "StopBits");
- switch (atoi (s)) {
- case 1: linectl.stopbits = 0;
- break;
- case 2: linectl.stopbits = 2;
- break;
- default: xf86Msg (X_ERROR,
- "Invalid Option StopBits value: %s\n", s);
- return -1;
- }
- }
-
- if ((s = xf86FindOptionValue (options, "DataBits"))) {
- int db;
- xf86MarkOptionUsedByName (options, "DataBits");
- switch (db = atoi (s)) {
- case 5: case 6: case 7: case 8:
- linectl.databits = db;
- break;
- default: xf86Msg (X_ERROR,
- "Invalid Option DataBits value: %s\n", s);
- return -1;
- }
- }
-
- if ((s = xf86FindOptionValue (options, "Parity"))) {
- xf86MarkOptionUsedByName (options, "Parity");
- if (xf86NameCmp (s, "Odd") == 0)
- linectl.parity = 1; /* odd */
- else if (xf86NameCmp (s, "Even") == 0)
- linectl.parity = 2; /* even */
- else if (xf86NameCmp (s, "None") == 0)
- linectl.parity = 0; /* none */
- else {
- xf86Msg (X_ERROR,
- "Invalid Option Parity value: %s\n", s);
- return -1;
- }
- }
-
- /* set line parameters */
- if (_set_linectl(fd,&linectl)) return -1;
-
- if (xf86FindOptionValue (options, "Vmin"))
- xf86Msg (X_ERROR, "Vmin unsupported on this OS\n");
-
- if (xf86FindOptionValue (options, "Vtime"))
- xf86Msg (X_ERROR, "Vtime unsupported on this OS\n");
-
- /* get device parameters */
- if (_get_dcb(fd,&dcb)) return -1;
-
- if ((s = xf86FindOptionValue (options, "FlowControl"))) {
- xf86MarkOptionUsedByName (options, "FlowControl");
- if (xf86NameCmp (s, "XonXoff") == 0)
- dcb.fbFlowReplace |= 0x03;
- else if (xf86NameCmp (s, "None") == 0)
- dcb.fbFlowReplace &= ~0x03;
- else {
- xf86Msg (X_ERROR,
- "Invalid Option FlowControl value: %s\n", s);
- return -1;
- }
- }
-
- if ((s = xf86FindOptionValue (options, "ClearDTR"))) {
- dcb.fbCtlHndShake &= ~0x03; /* DTR=0 */
- xf86MarkOptionUsedByName (options, "ClearDTR");
- }
-
- if ((s = xf86FindOptionValue (options, "ClearRTS"))) {
- dcb.fbFlowReplace &= ~0xc0; /* RTS=0 */
- xf86MarkOptionUsedByName (options, "ClearRTS");
- }
-
- /* set device parameters */
- return _set_dcb(fd,&dcb) ? -1 : 0;
-}
-
-int xf86ReadSerial (int fd, void *buf, int count)
-{
- ULONG nread,nq;
- APIRET rc;
-
- /* emulate non-blocking read */
- if (_get_nread((HFILE)fd,&nq)) return -1;
- if (nq==0) return 0;
- if (nq < count) count = nq;
-
- rc = DosRead((HFILE)fd,(PVOID)buf,(ULONG)count,&nread);
- return rc ? -1 : (int)nread;
-}
-
-int xf86WriteSerial (int fd, const void *buf, int count)
-{
- ULONG nwrite;
- APIRET rc = DosWrite((HFILE)fd,(PVOID)buf,(ULONG)count,&nwrite);
- return rc ? -1 : (int)nwrite;
-}
-
-int xf86CloseSerial (int fd)
-{
- APIRET rc = DosClose((HFILE)fd);
- return rc ? -1 : 0;
-}
-
-int xf86WaitForInput (int fd, int timeout)
-{
- APIRET rc;
- ULONG dlen,nq;
-
- do {
- if (_get_nread((HFILE)fd,&nq)) return -1;
- if (nq) return 1;
-
- DosSleep(10);
- timeout -= 10000; /* 10000 usec */
- } while (timeout > 0);
-
- return 0;
-}
-
-int xf86SerialSendBreak (int fd, int duration)
-{
- USHORT data;
- ULONG dlen;
- APIRET rc;
- rc = DosDevIOCtl((HFILE)fd,IOCTL_ASYNC,ASYNC_SETBREAKON,
- NULL, 0, NULL,
- &data, sizeof(data), &dlen);
- if (rc)
- return -1;
- DosSleep(500);
-
- rc = DosDevIOCtl((HFILE)fd,IOCTL_ASYNC,ASYNC_SETBREAKOFF,
- NULL, 0, NULL,
- &data, sizeof(data), &dlen);
- return rc ? -1 : 0;
-}
-
-int xf86FlushInput(int fd)
-{
- APIRET rc;
- UCHAR buf;
- ULONG nread,nq;
-
- if (_get_nread((HFILE)fd,&nq)) return -1;
-
- /* eat all chars in queue */
- while (nq) {
- rc = DosRead((HFILE)fd,&buf,1,&nread);
- if (rc) return -1;
- nq--;
- }
- return 0;
-}
-
-static struct states {
- int xf;
- int os;
-} modemStates[] = {
- { XF86_M_DTR, 0x01 },
- { XF86_M_RTS, 0x02 },
- { XF86_M_CTS, 0x10 },
- { XF86_M_DSR, 0x20 },
- { XF86_M_RNG, 0x40 },
- { XF86_M_CAR, 0x80 },
-};
-
-static int numStates = sizeof(modemStates) / sizeof(modemStates[0]);
-
-static int
-xf2osState(int state)
-{
- int i;
- int ret = 0;
-
- for (i = 0; i < numStates; i++)
- if (state & modemStates[i].xf)
- ret |= modemStates[i].os;
- return ret;
-}
-
-static int
-os2xfState(int state)
-{
- int i;
- int ret = 0;
-
- for (i = 0; i < numStates; i++)
- if (state & modemStates[i].os)
- ret |= modemStates[i].xf;
- return ret;
-}
-
-static int
-getOsStateMask(void)
-{
- int i;
- int ret = 0;
- for (i = 0; i < numStates; i++)
- ret |= modemStates[i].os;
- return ret;
-}
-
-static int osStateMask = 0;
-
-static
-int _get_modem_state(int fd,ULONG* state)
-{
- ULONG state1,len;
-
- if (DosDevIOCtl((HFILE)fd,IOCTL_ASYNC,ASYNC_GETMODEMOUTPUT,
- NULL,0,NULL, state, sizeof(BYTE), &len) != 0 ||
- DosDevIOCtl((HFILE)fd,IOCTL_ASYNC,ASYNC_GETMODEMINPUT,
- NULL,0,NULL, &state1, sizeof(BYTE), &len) != 0)
- return -1;
- *state |= state1;
- *state &= 0xff;
- return 0;
-}
-
-static
-int _set_modem_state(int fd,ULONG state,ULONG mask)
-{
- int len;
- struct {
- BYTE onmask;
- BYTE offmask;
- } modemctrl;
- modemctrl.onmask = state;
- modemctrl.offmask = mask;
-
- if (DosDevIOCtl((HFILE)fd,IOCTL_ASYNC,ASYNC_SETMODEMCTRL,
- NULL,0,NULL, (PULONG)&modemctrl, sizeof(modemctrl), &len) != 0)
- return -1;
- else
- return 0;
-}
-
-int
-xf86SetSerialModemState(int fd, int state)
-{
- ULONG s;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
- if (!osStateMask)
- osStateMask = getOsStateMask();
-
- state = xf2osState(state);
-
- if (_get_modem_state(fd,&s) != 0)
- return -1;
-
- s &= ~osStateMask;
- s |= state;
-
- return _set_modem_state(fd,s,0x03);
-}
-
-int
-xf86GetSerialModemState(int fd)
-{
- ULONG s;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
- if (_get_modem_state(fd,&s) != 0)
- return -1;
-
- return os2xfState(s);
-}
-
-int
-xf86SerialModemSetBits(int fd, int bits)
-{
- int ret;
- int s;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
- s = xf2osState(bits);
- return _set_modem_state(fd,s,0x03);
-}
-
-int
-xf86SerialModemClearBits(int fd, int bits)
-{
- int ret;
- int s;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
- s = xf2osState(bits);
- return _set_modem_state(fd, 0, ~s & 0xff);
-}
-
-int
-xf86SetSerialSpeed (int fd, int speed)
-{
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
- return _set_baudrate(fd,speed);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_stubs.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_stubs.c
deleted file mode 100644
index 727a605d1..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_stubs.c
+++ /dev/null
@@ -1,403 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_stubs.c,v 3.4 2002/05/31 18:46:02 dawes Exp $ */
-/*
- * (c) Copyright 1996 by Holger Veit
- * <Holger.Veit@gmd.de>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_stubs.c /main/3 1996/10/27 11:48:58 kaleb $ */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xpoll.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-
-/* This is there to resolve a symbol in Xvfb
- * this version is somewhat crippled compared to the one in os2_io.c
- */
-#ifdef OS2NULLSELECT
-
-/* This below implements select() for calls in xnest. It has been */
-/* somewhat optimized for improved performance, but assumes a few */
-/* things so it cannot be used as a general select. */
-
-#include <sys/select.h>
-#include <sys/errno.h>
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSNPIPES
-#define INCL_DOSMISC
-#define INCL_DOSMODULEMGR
-#undef BOOL
-#undef BYTE
-#include <os2.h>
-
-HEV hPipeSem;
-HMODULE hmod_so32dll;
-static int (*os2_tcp_select)(int*,int,int,int,long);
-ULONG os2_get_sys_millis();
-extern int _files[];
-
-#define MAX_TCP 256
-/* These lifted from sys/emx.h. Change if that changes there! */
-#define F_SOCKET 0x10000000
-#define F_PIPE 0x20000000
-
-struct select_data
-{
- fd_set read_copy;
- fd_set write_copy;
- BOOL have_read;
- BOOL have_write;
- int tcp_select_mask[MAX_TCP];
- int tcp_emx_handles[MAX_TCP];
- int tcp_select_copy[MAX_TCP];
- int socket_nread;
- int socket_nwrite;
- int socket_ntotal;
- int pipe_ntotal;
- int pipe_have_write;
- int max_fds;
-};
-
-int os2PseudoSelect(int nfds, fd_set *readfds, fd_set *writefds,
- fd_set *exceptfds, struct timeval *timeout)
-{
-static BOOL FirstTime=TRUE;
-static haveTCPIP=TRUE;
-ULONG timeout_ms;
-ULONG postCount, start_millis,now_millis;
-char faildata[16];
-struct select_data sd;
-BOOL any_ready;
-int np,ns, i,ready_handles,n;
-APIRET rc;
-
-sd.have_read=FALSE; sd.have_write=FALSE;
-sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0;
-sd.max_fds=31; ready_handles=0; any_ready=FALSE;
-sd.pipe_ntotal=0; sd.pipe_have_write=FALSE;
-
-if(FirstTime){
- /* First load the so32dll.dll module and get a pointer to the SELECT function */
-
- if((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0){
- fprintf(stderr, "Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata);
- haveTCPIP=FALSE;
- }
- if((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0){
- fprintf(stderr, "Could not query address of SELECT, rc = %d.\n",rc);
- haveTCPIP=FALSE;
- }
- /* Call these a first time to set the semaphore */
- /* rc = DosCreateEventSem(NULL, &hPipeSem, DC_SEM_SHARED, FALSE);
- if(rc) {
- fprintf(stderr, "Could not create event semaphore, rc=%d\n",rc);
- return(-1);
- }
- rc = DosResetEventSem(hPipeSem, &postCount); */ /* Done in xtrans code for servers*/
-
- /*fprintf(stderr, "Client select() done first-time stuff, sem handle %d.\n",hPipeSem);*/
-
- FirstTime = FALSE;
-}
-
-/* Set up the time delay structs */
-
- if(timeout!=NULL) {
- timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000;
- }
- else { timeout_ms=1000000; } /* This should be large enough... */
- if(timeout_ms>0) start_millis=os2_get_sys_millis();
-
-/* Copy the masks */
- {FD_ZERO(&sd.read_copy);}
- {FD_ZERO(&sd.write_copy);}
- if(readfds!=NULL){ XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE;}
- if(writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy);sd.have_write=TRUE;}
-
-/* And zero the original masks */
- if(sd.have_read){ FD_ZERO(readfds);}
- if(sd.have_write) {FD_ZERO(writefds);}
- if(exceptfds != NULL) {FD_ZERO(exceptfds);}
-
-/* Now we parse the fd_sets passed to select and separate pipe/sockets */
- n = os2_parse_select(&sd,nfds);
- if(n == -1) {
- errno = EBADF;
- return (-1);
- }
-
-/* Now we have three cases: either we have sockets, pipes, or both */
-/* We handle all three cases differently to optimize things */
-
-/* Case 1: only pipes! */
- if((sd.pipe_ntotal >0) && (!sd.socket_ntotal)){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- return (np);
- }
- else if (np == -1) { return(-1); }
- while(!any_ready){
- rc = DosWaitEventSem(hPipeSem, 1L);
- /* if(rc) fprintf(stderr,"Sem-wait timeout, rc = %d\n",rc); */
- if(rc == 640) {
- return(0);
- }
- if((rc != 0) && (rc != 95)) {errno= EBADF; return(-1);}
- np = os2_check_pipes(&sd,readfds,writefds);
- if (np > 0){
- return(np);
- }
- else if (np < 0){ return(-1); }
- }
- }
-
-/* Case 2: only sockets. Just let the os/2 tcp select do the work */
- if((sd.socket_ntotal > 0) && (!sd.pipe_ntotal)){
- ns = os2_check_sockets(&sd, readfds, writefds, timeout_ms);
- return (ns);
- }
-
-/* Case 3: combination of both */
- if((sd.socket_ntotal > 0) && (sd.pipe_ntotal)){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- any_ready=TRUE;
- ready_handles += np;
- }
- else if (np == -1) { return(-1); }
-
- ns = os2_check_sockets(&sd,readfds,writefds, 0);
- if(ns>0){
- ready_handles+=ns;
- any_ready = TRUE;
- }
- else if (ns == -1) {return(-1);}
-
- while (!any_ready && timeout_ms){
-
- rc = DosWaitEventSem(hPipeSem, 1L);
- if (rc=640) return(0);
- if(rc == 0){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- ready_handles+=np;
- any_ready = TRUE;
- }
- else if (np == -1) {
- return(-1); }
- }
-
- ns = os2_check_sockets(&sd,readfds,writefds,exceptfds, 0);
- if(ns>0){
- ready_handles+=ns;
- any_ready = TRUE;
- }
- else if (ns == -1) {return(-1);}
-
- if (i%8 == 0) {
- now_millis = os2_get_sys_millis();
- if((now_millis-start_millis) > timeout_ms) timeout_ms = 0;
- }
- i++;
- }
- }
-
-return(ready_handles);
-}
-
-
-ULONG os2_get_sys_millis()
-{
- APIRET rc;
- ULONG milli;
-
- rc = DosQuerySysInfo(14, 14, &milli, sizeof(milli));
- if(rc) {
- fprintf(stderr,"Bad return code querying the millisecond counter! rc=%d\n",rc);
- return(0);
- }
- return(milli);
-}
-
-int os2_parse_select(sd,nfds)
-struct select_data *sd;
-int nfds;
-{
- int i;
- APIRET rc;
-/* First we determine up to which descriptor we need to check. */
-/* No need to check up to 256 if we don't have to (and usually we dont...)*/
-/* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX! */
-
- if(nfds > sd->max_fds){
- for(i=0;i<((FD_SETSIZE+31)/32);i++){
- if(sd->read_copy.fds_bits[i] ||
- sd->write_copy.fds_bits[i])
- sd->max_fds=(i*32) +32;
- }
- }
- else { sd->max_fds = nfds; }
-/* Check if result is greater than specified in select() call */
- if(sd->max_fds > nfds) sd->max_fds = nfds;
-
- if (sd->have_read)
- {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->read_copy)){
- if(_files[i] & F_SOCKET)
- {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nread++;
- }
- else if (_files[i] & F_PIPE)
- {
- sd -> pipe_ntotal++;
- /* rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
- if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;} */
- }
- }
- }
- }
-
- if (sd->have_write)
- {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->write_copy)){
- if(_files[i] & F_SOCKET)
- {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nwrite++;
- }
- else if (_files[i] & F_PIPE)
- {
- sd -> pipe_ntotal++;
- /* rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
- if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;} */
- sd -> pipe_have_write=TRUE;
- }
- }
- }
- }
-
-
-return(sd->socket_ntotal);
-}
-
-
-int os2_check_sockets(sd,readfds,writefds)
-struct select_data *sd;
-fd_set *readfds,*writefds;
-{
- int e,i;
- int j,n;
- memcpy(sd->tcp_select_copy,sd->tcp_select_mask,
- sd->socket_ntotal*sizeof(int));
-
- e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread,
- sd->socket_nwrite, 0, 0);
-
- if(e == 0) return(e);
-/* We have something ready? */
- if(e>0){
- j = 0; n = 0;
- for (i = 0; i < sd->socket_nread; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1)
- {
- FD_SET (sd->tcp_emx_handles[j], readfds);
- n ++;
- }
- for (i = 0; i < sd->socket_nwrite; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1)
- {
- FD_SET (sd->tcp_emx_handles[j], writefds);
- n ++;
- }
- errno = 0;
-
- return n;
- }
- if(e<0){
- /*Error -- TODO. EBADF is a good choice for now. */
- fprintf(stderr,"Error in server select! e=%d\n",e);
- errno = EBADF;
- return (-1);
- }
- }
-
-/* Check to see if anything is ready on pipes */
-
-int os2_check_pipes(sd,readfds,writefds)
-struct select_data *sd;
-fd_set *readfds,*writefds;
-{
-int i,e;
-ULONG ulPostCount;
-PIPESEMSTATE pipeSemState[128];
-APIRET rc;
- e = 0;
- rc = DosResetEventSem(hPipeSem,&ulPostCount);
- rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState,
- sizeof(pipeSemState));
- if(rc) fprintf(stderr,"SELECT: rc from QueryNPipeSem: %d\n",rc);
- i=0;
- while (pipeSemState[i].fStatus != 0) {
- /*fprintf(stderr,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n",
- pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey,
- pipeSemState[i].usAvail); */
- if((pipeSemState[i].fStatus == 1) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))){
- FD_SET(pipeSemState[i].usKey,readfds);
- e++;
- }
- else if((pipeSemState[i].fStatus == 2) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))){
- FD_SET(pipeSemState[i].usKey,writefds);
- e++;
- }
- else if( (pipeSemState[i].fStatus == 3) &&
- ( (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) ||
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )){
- errno = EBADF;
- /* fprintf(stderr,"Pipe has closed down, fd=%d\n",pipeSemState[i].usKey); */
- return (-1);
- }
- i++;
- } /* endwhile */
- /*fprintf(stderr,"Done listing pipe sem entries, total %d entries, total ready entries %d\n",i,e);*/
-errno = 0;
-return(e);
-}
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_video.c
deleted file mode 100644
index c45b3165e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/os2/os2_video.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/os2/os2_video.c,v 3.15 2002/05/31 18:46:02 dawes Exp $ */
-/*
- * (c) Copyright 1994,1999 by Holger Veit
- * <Holger.Veit@gmd.de>
- * Modified 1996 by Sebastien Marineau <marineau@genie.uottawa.ca>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Holger Veit shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Holger Veit.
- *
- */
-/* $XConsortium: os2_video.c /main/8 1996/10/27 11:49:02 kaleb $ */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#define INCL_DOSFILEMGR
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-#include "compiler.h"
-
-/***************************************************************************/
-/* Video Memory Mapping helper functions */
-/***************************************************************************/
-
-/* This section uses the xf86sup.sys driver developed for xfree86.
- * The driver allows mapping of physical memory
- * You must install it with a line DEVICE=path\xf86sup.sys in config.sys.
- */
-
-#define LOWORD(X) ((X) & 0xffff)
-#define HIWORD(X) ((X) >> 16)
-
-static HFILE mapdev = -1;
-static ULONG stored_virt_addr;
-static char* mappath = "\\DEV\\PMAP$";
-static HFILE open_mmap()
-{
- APIRET rc;
- ULONG action;
-
- if (mapdev != -1)
- return mapdev;
-
- rc = DosOpen((PSZ)mappath, (PHFILE)&mapdev, (PULONG)&action,
- (ULONG)0, FILE_SYSTEM, FILE_OPEN,
- OPEN_SHARE_DENYNONE|OPEN_FLAGS_NOINHERIT|OPEN_ACCESS_READONLY,
- (ULONG)0);
- if (rc!=0) {
- mapdev = -1; }
- else {
- /* fg030203: ask for driver version of xf86sup.sys;
- no output prior to version 1.539 */
- struct {
- ULONG magic;
- ULONG drvtype;
- ULONG version;
- } drvid;
- ULONG dlen = sizeof(drvid);
- if ((rc=DosDevIOCtl(mapdev, (ULONG)0x76, (ULONG)0x61,
- (PVOID)NULL, (ULONG)0, (PULONG)NULL,
- (PVOID)&drvid, (ULONG)dlen, (PULONG)&dlen))==0) {
- xf86Msg(X_INFO,"PMAP$: driver version = %x.%x\n",
- HIWORD(drvid.version),
- LOWORD(drvid.version));
- }
- }
- return mapdev;
-}
-
-static void close_mmap()
-{
- if (mapdev != -1)
- DosClose(mapdev);
- mapdev = -1;
-}
-
-/* this structure is used as a parameter packet for the direct access
- * ioctl of pmap$
- */
-
-/* Changed here for structure of driver PMAP$ */
-
-typedef struct{
- ULONG addr;
- ULONG size;
-} DIOParPkt;
-
-/* This is the data packet for the mapping function */
-
-typedef struct {
- ULONG addr;
- USHORT sel;
-} DIODtaPkt;
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-/* ARGSUSED */
-static pointer
-mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- DIOParPkt par;
- ULONG plen;
- DIODtaPkt dta;
- ULONG dlen;
- static BOOL ErrRedir = FALSE;
- APIRET rc;
-
- par.addr = (ULONG)Base;
- par.size = (ULONG)Size;
- plen = sizeof(par);
- dlen = sizeof(dta);
-
- open_mmap();
- if (mapdev == -1)
- FatalError("mapVidMem: install DEVICE=path\\XF86SUP.SYS!");
-
- if ((rc=DosDevIOCtl(mapdev, (ULONG)0x76, (ULONG)0x44,
- (PVOID)&par, (ULONG)plen, (PULONG)&plen,
- (PVOID)&dta, (ULONG)dlen, (PULONG)&dlen)) == 0) {
- xf86Msg(X_INFO,"mapVidMem succeeded: (ScreenNum=%d, Base=0x%x, Size=0x%x, vaddr=0x%x)\n",
- ScreenNum, Base, Size, dta.addr);
-
- if (dlen==sizeof(dta)) {
- return (pointer)dta.addr;
- }
- /*else fail*/
- }
-
- /* fail */
- FatalError("mapVidMem FAILED!!: rc = %d (ScreenNum=%d, Base=0x%x, Size=0x%x, return len=%d, vaddr=0x%x, sel=0x%x)\n",
- rc, ScreenNum, Base, Size, dlen, dta.addr, dta.sel);
- return (pointer)0;
-}
-
-/* ARGSUSED */
-static void
-unmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- DIOParPkt par;
- ULONG plen,vmaddr;
- APIRET rc;
-/* We need here the VIRTADDR for unmapping, not the physical address */
-/* This should be taken care of either here by keeping track of allocated */
-/* pointers, but this is also already done in the driver... Thus it would */
-/* be a waste to do this tracking twice. Can this be changed when the fn. */
-/* is called? This would require tracking this function in all servers, */
-/* and changing it appropriately to call this with the virtual adress */
-/* If the above mapping function is only called once, then we can store */
-/* the virtual adress and use it here.... */
-
- par.addr = (ULONG)Base;
- par.size = 0xffffffff; /* This is the virtual address parameter. Set this to ignore */
- plen = sizeof(par);
-
- if (mapdev != -1)
- rc = DosDevIOCtl(mapdev, (ULONG)0x76, (ULONG)0x45,
- (PVOID)&par, (ULONG)plen, (PULONG)&plen,
- &vmaddr, sizeof(ULONG), &plen);
- if (!rc) {
- xf86Msg(X_INFO,"unmapVidMem: Unmap phys memory at virtual address 0x%x\n",
- vmaddr);
- }
- else {
- xf86Msg(X_ERROR,"unmapVidMem: Unmap phys memory at base 0x%x, virtual address 0x%x, rc=%d\n",
- Base,vmaddr,rc);
- }
-/* Now if more than one region has been allocated and we close the driver,
- * the other pointers will immediately become invalid. We avoid closing
- * driver for now, but this should be fixed for server exit
- */
-
- /* close_mmap(); */
-}
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool xf86DisableInterrupts()
-{
- /* allow interrupt disabling but check for side-effects.
- * Not a good policy on OS/2...
- */
- asm ("cli");
- return TRUE;
-}
-
-void xf86EnableInterrupts()
-{
- /*Reenable*/
- asm ("sti");
-}
-
-/***************************************************************************/
-/* Initialize video memory */
-/***************************************************************************/
-
-void
-xf86OSInitVidMem(VidMemInfoPtr pVidMem)
-{
- pVidMem->linearSupported = TRUE;
- pVidMem->mapMem = mapVidMem;
- pVidMem->unmapMem = unmapVidMem;
-#if 0
- pVidMem->mapMemSparse = 0;
- pVidMem->unmapMemSparse = 0;
-#endif
- pVidMem->setWC = 0; /* no MTRR support */
- pVidMem->undoWC = 0;
- pVidMem->initialised = TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/Imakefile
deleted file mode 100644
index 37cc186c4..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/Imakefile
+++ /dev/null
@@ -1,48 +0,0 @@
-
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/pmax/Imakefile,v 1.11 2002/10/11 01:47:00 dawes Exp $
-
-#include <Server.tmpl>
-
-MOUSESRC = pmax_mouse.c
-MOUSEOBJ = pmax_mouse.o
-
-SRCS = pmax_devs.c pmax_init.c pmax_map.c pmax_pci.c pmax_ppc.c \
- bios_V4mmap.c VTsw_usl.c sysv_kbd.c std_kbdEv.c \
- posix_tty.c $(MOUSESRC) xqueue.c ioperm_noop.c \
- libc_wrapper.c stdResource.c stdPci.o sigiostubs.c pm_noop.c \
- kmod_noop.c agp_noop.c
-
-OBJS = pmax_devs.o pmax_init.o pmax_map.o pmax_pci.o pmax_ppc.o \
- bios_V4mmap.o VTsw_usl.o sysv_kbd.o std_kbdEv.o \
- posix_tty.o $(MOUSESRC) xqueue.o ioperm_noop.o \
- libc_wrapper.o stdResource.o stdPci.o sigiostubs.o pm_noop.o \
- kmod_noop.o agp_noop.o
-
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I$(XF86OSSRC)/bus -I. \
- -I$(SERVERSRC)/include -I$(XINCLUDESRC) -I$(EXTINCSRC) -I../sysv
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(RESDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-LinkSourceFile(VTsw_usl.c,../shared)
-LinkSourceFile(ioperm_noop.c,../shared)
-LinkSourceFile(sysv_kbd.c,../shared)
-LinkSourceFile(std_kbdEv.c,../shared)
-LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(sigiostubs.c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(agp_noop.c,../shared)
-
-LinkSourceFile(bios_V4mmap.c,../sysv)
-LinkSourceFile(xqueue.c,../sysv)
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_devs.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_devs.c
deleted file mode 100644
index f221e0755..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_devs.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * This module was derived in part from the original XFree86
- * sysv/sysv_io.c which contains the following copyright notice:
- *
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- *
- * 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, and that the names of Thomas Roell and David Dawes
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Thomas Roell and
- * David Dawes makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THOMAS ROELL AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/pmax/pmax_devs.c,v 1.7 2002/10/11 01:40:36 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-void
-xf86SoundKbdBell(int loudness, int pitch, int duration)
-{
- if (loudness && pitch)
- {
-#ifdef KDMKTONE
- /*
- * If we have KDMKTONE use it to avoid putting the server
- * to sleep
- */
- ioctl(xf86Info.consoleFd, KDMKTONE,
- ((1193190 / pitch) & 0xffff) |
- (((unsigned long)duration *
- loudness / 50) << 16));
-#else
- ioctl(xf86Info.consoleFd, KIOCSOUND, 1193180 / pitch);
- usleep(xf86Info.bell_duration * loudness * 20);
- ioctl(xf86Info.consoleFd, KIOCSOUND, 0);
-#endif
- }
-}
-
-void
-xf86SetKbdLeds(int leds)
-{
-#if 0 /* used to be KBIO_SETMODE */
- ioctl(xf86Info.consoleFd, KBIO_SETMODE, KBM_AT);
- ioctl(xf86Info.consoleFd, KDSETLED, leds);
- ioctl(xf86Info.consoleFd, KBIO_SETMODE, KBM_XT);
-#endif
-
- ioctl(xf86Info.consoleFd, KDSETLED, leds);
-}
-
-#include "xf86OSKbd.h"
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_init.c
deleted file mode 100644
index 7da733d22..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_init.c
+++ /dev/null
@@ -1,473 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/pmax/pmax_init.c,v 1.2.2.2 1998/07/18 17:53:54 dawes Exp $ */
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * This file was derived in part from the original XFree86 sysv OS
- * support which contains the following copyright notice:
- *
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Thomas Roell and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Thomas Roell and
- * David Wexelblat makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THOMAS ROELL AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID WEXELBLAT BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <sys/types.h>
-#include <time.h>
-#include <errno.h>
-
-#include <sys/prosrfs.h>
-#include <sys/cpu.h>
-#include <sys/ipl.h>
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-static Bool KeepTty = FALSE;
-static Bool Protect0 = FALSE;
-static Bool pmaxInitialized = FALSE;
-
-#define VT_DEFAULT -2
-#define VT_NONE -1
-
-static int VTnum = VT_DEFAULT;
-
-extern void pmax_init_splmap(void);
-
-int pmax_sys_type; /* Also used by pmax_pci.c */
-
-/*
- * PowerMAXOS_sys_type()
- *
- * Determine type of PowerHawk, PowerStack, PowerMaxion, or NightHawk
- */
-int
-PowerMAXOS_sys_type(void)
-{
- int fd;
- procfile_t procfile;
-
- fd = open("/system/processor/0",O_RDONLY);
- if (fd<0) {
- FatalError("Cannot open '%s'\n", "/system/processor/0");
- }
-
- if (read(fd, &procfile, sizeof(procfile)) < 0) {
- FatalError("Cannot read '%s'\n", "/system/processor/0");
- }
- close(fd);
-
- return(procfile.cpu_model);
-}
-
-void
-pmaxInit(void)
-{
- char *mach;
-
- if (pmaxInitialized)
- return;
-
- pmaxInitialized = TRUE;
-
- /*
- * Determine type of machine
- */
- pmax_sys_type = PowerMAXOS_sys_type();
- switch(pmax_sys_type) {
-
- case MODEL_NH6400:
- mach ="PowerMAXION (NH6400)";
- break;
-
- case MODEL_NH6408:
- mach = "PowerMAXION (NH6408)";
- break;
-
- case MODEL_NH6800T:
- mach = "TurboHawk";
- break;
-
- case MODEL_MPWR:
- mach = "PowerStack";
- break;
-
- case MODEL_PH610:
- mach = "PowerHawk 610";
- break;
-
- case MODEL_MPWR2:
- mach = "PowerStack II (utah)";
- break;
-
- case MODEL_PH620:
- mach = "PowerHawk 620";
- break;
-
- case MODEL_PH640:
- mach = "PowerHawk 640";
- break;
-
- case MODEL_MMTX:
- mach = "PowerStack II (MTX)";
- break;
-
- default:
- FatalError("pmaxInit: Unknown/unsupported machine type 0x%x\n",
- pmax_sys_type);
- /*NOTREACHED*/
- }
-
- xf86Msg(X_INFO, "pmaxInit: Machine type: %s\n", mach);
-
- /*
- * Map IPL hardware so that interrupts can be (temporarily) disabled
- * (see pmax_video.c)
- */
- pmax_init_splmap();
-
- /*
- * Now that we know the system type, initialize the
- * pci access routines
- */
- pciInit();
-}
-
-void
-xf86OpenConsole()
-{
- struct vt_mode VT;
- char vtname[10];
- MessageType from = X_DEFAULT;
-
- if (serverGeneration == 1)
- {
-
- /* check if we're run with euid==0 */
- if (geteuid() != 0)
- {
- FatalError("xf86OpenConsole: Server must be suid root\n");
- }
-
- /* Protect page 0 to help find NULL dereferencing */
- /* mprotect() doesn't seem to work */
- if (Protect0)
- {
- int fd = -1;
-
- if ((fd = open("/dev/zero", O_RDONLY, 0)) < 0)
- {
- xf86Msg(X_WARNING,
- "xf86OpenConsole: cannot open /dev/zero (%s)\n",
- strerror(errno));
- }
- else
- {
- if ((int)mmap(0, 0x1000, PROT_NONE,
- MAP_FIXED | MAP_SHARED, fd, 0) == -1)
- {
- xf86Msg(X_WARNING,
- "xf86OpenConsole: failed to protect page 0 (%s)\n",
- strerror(errno));
- }
- close(fd);
- }
- }
-
- pmaxInit(); /* Initialize OS specific functions */
-
- /*
- * setup the virtual terminal manager
- */
- if (VTnum == VT_DEFAULT) {
- int fd;
-
- /*
- * No specific VT specified, so ask the vtl term mgr
- * for the next available VT
- */
- if ((fd = open("/dev/vt00",O_WRONLY,0)) < 0) {
- xf86Msg(X_WARNING,
- "xf86OpenConsole: Could not open /dev/vt00 (%s)\n",
- strerror(errno));
- VTnum = VT_NONE;
- }
- else {
- if (ioctl(fd, VT_OPENQRY, &VTnum) < 0)
- {
- xf86Msg(X_WARNING,
- "xf86OpenConsole: Cannot find a free VT\n");
- VTnum = VT_NONE;
- }
- close(fd);
- }
- } else {
- from = X_CMDLINE;
- }
-
- xf86Info.vtno = VTnum;
-
- if (xf86Info.vtno == VT_NONE)
- strcpy(vtname, "/dev/null");
- else
- sprintf(vtname,"/dev/vt%02d",xf86Info.vtno);
-
- xf86Msg(from, "using VT \"%s\"\n\n", vtname);
-
- if (!KeepTty)
- {
- setpgrp();
- }
-
- if ((xf86Info.consoleFd = open(vtname, O_RDWR|O_NDELAY, 0)) < 0)
- {
- FatalError("xf86OpenConsole: Cannot open %s (%s)\n",
- vtname, strerror(errno));
- }
-
- if (xf86Info.vtno != VT_NONE)
- {
- /* change ownership of the vt */
- (void) chown(vtname, getuid(), getgid());
-
- /*
- * now get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
- }
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
- }
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0)
- {
- FatalError("xf86OpenConsole: VT_GETMODE failed\n");
- }
-
- signal(SIGUSR1, xf86VTRequest);
-
- VT.mode = VT_PROCESS;
- VT.relsig = SIGUSR1;
- VT.acqsig = SIGUSR1;
- if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0)
- {
- FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed\n");
- }
- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0)
- {
- FatalError("xf86OpenConsole: KDSETMODE KD_GRAPHICS failed\n");
- }
- }
- }
- else
- {
- /* serverGeneration != 1 */
- /*
- * now get the VT
- */
- if (xf86Info.vtno != VT_NONE)
- {
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
- }
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
- }
- /*
- * If the server doesn't have the VT when the reset occurs,
- * this is to make sure we don't continue until the activate
- * signal is received.
- */
- if (!xf86Screens[0]->vtSema)
- sleep(5);
- }
- }
- return;
-}
-
-void xf86CloseConsole()
-{
- struct vt_mode VT;
-
- if (xf86Info.vtno != VT_NONE)
- {
-
-#if 0
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno);
- ioctl(xf86Info.consoleFd, VT_WAITACTIVE, 0);
-#endif
- ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT); /* Back to text mode ... */
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) != -1)
- {
- VT.mode = VT_AUTO;
- ioctl(xf86Info.consoleFd, VT_SETMODE, &VT); /* set dflt vt handling */
- }
- }
-
- close(xf86Info.consoleFd); /* make the vt-manager happy */
- return;
-}
-
-int xf86ProcessArgument(argc, argv, i)
-int argc;
-char *argv[];
-int i;
-{
- /*
- * Keep server from detaching from controlling tty. This is useful
- * when debugging (so the server can receive keyboard signals.
- */
- if (!strcmp(argv[i], "-keeptty"))
- {
- KeepTty = TRUE;
- return(1);
- }
-
- /*
- * Prevent server from attemping to open a new VT in the "-novt"
- * flag was specified.
- */
- if (!strcmp(argv[i], "-novt"))
- {
- VTnum = VT_NONE;
- return(1);
- }
-
- /*
- * Undocumented flag to protect page 0 from read/write to help
- * catch NULL pointer dereferences. This is purely a debugging
- * flag.
- */
- if (!strcmp(argv[i], "-protect0"))
- {
- Protect0 = TRUE;
- return(1);
- }
-
- if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
- {
- if (sscanf(argv[i], "vt%2d", &VTnum) == 0)
- {
- UseMsg();
- VTnum = VT_DEFAULT;
- return(0);
- }
- return(1);
- }
- return(0);
-}
-
-void xf86UseMsg()
-{
- ErrorF("vtXX use the specified VT number\n");
- ErrorF("-keeptty ");
- ErrorF("don't detach controlling tty (for debugging only)\n");
- ErrorF("-novt ");
- ErrorF("don't allocate and open a new virtual terminal\n");
- return;
-}
-
-
-void
-xf86_pmax_usleep(unsigned long n)
-{
- struct timespec requested,remaining;
- int rv;
-
- requested.tv_sec = n/1000000;
- requested.tv_nsec = (n % 1000000) * 1000;
-
- while ((rv = nanosleep(&requested,&remaining)) < 0) {
- if (errno != EINTR)
- break;
-
- remaining = requested; /* structure assignment */
- }
-
- if (rv) {
- ErrorF("xf86_pmax_usleep: nanosleep() failed: rv=%d, errno=%d\n", rv, errno);
- }
-}
-
-#ifndef usleep
-
-void
-usleep(unsigned long n)
-{
- xf86_pmax_usleep(n);
-}
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_map.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_map.c
deleted file mode 100644
index 36d3366a2..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_map.c
+++ /dev/null
@@ -1,239 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/pmax/pmax_map.c,v 1.7 2000/06/27 14:27:31 tsi Exp $ */
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * This file was derived in part from the original XFree86 sysv OS
- * support which contains the following copyright notice:
- *
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Thomas Roell and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Thomas Roell and
- * David Wexelblat makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THOMAS ROELL AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID WEXELBLAT BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include "Pci.h"
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-/*
- * Map an I/O region given its address (host POV)
- */
-void *
-pmax_iomap(unsigned long base, unsigned long len)
-{
- int fd;
- void *rv;
-
- if ((fd = open("/dev/iomem", O_RDWR)) < 0)
- {
- ErrorF("pmax_iomap: failed to open /dev/iomem (%s)\n",
- strerror(errno));
- return(MAP_FAILED);
- }
-
- rv = (void *)mmap((caddr_t)0, len, PROT_READ|PROT_WRITE,
- MAP_SHARED, fd, (off_t)base);
-
- close(fd);
- return(rv);
-}
-
-Bool
-xf86LinearVidMem()
-{
- return TRUE;
-}
-
-extern void * pmax_iomap(unsigned long, unsigned long);
-
-pointer
-xf86MapVidMem(int ScreenNum, int Region, pointer Base, unsigned long Size)
-{
- ErrorF("%s: Not supported on this OS. Drivers should use xf86MapPciMem() instead\n",
- "xf86MapVidMem");
- FatalError("%s: Cannot map [s=%x,a=%x]\n", "xf86MapVidMem", Size, Base);
-}
-
-
-pointer
-xf86MapPciMem(int ScreenNum, int Flags, PCITAG Tag, pointer Base,
- unsigned long Size)
-{
- pointer hostbase = pciBusAddrToHostAddr(Tag, Base);
- pointer base;
-
- base = (pointer) pmax_iomap((unsigned long)hostbase, Size);
- if (base == MAP_FAILED) {
- xf86Msg(X_WARNING,
- "xf86MapPciMem: Could not mmap PCI memory "
- "[base=0x%x,hostbase=0x%x,size=%x] (%s)\n",
- Base, hostbase, Size, strerror(errno));
- }
- return((pointer)base);
-}
-
-
-/* ARGSUSED */
-void
-xf86UnMapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- munmap(Base, Size);
-}
-
-/*
- * Read BIOS via mmap()ing /dev/iomem.
- */
-/*ARGSUSED*/
-int
-xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf, int Len)
-{
- ErrorF("%s: Not supported on this OS. Drivers should use xf86ReadPciBIOS() instead\n",
- "xf86ReadBIOS");
- FatalError("%s: Cannot read BIOS [base=0x%x,offset=0x%x,size=%d]\n", "xf86ReadBIOS", Base, Offset, Len);
-}
-
-int
-xf86ReadPciBIOS(unsigned long Base, unsigned long Offset, PCITAG Tag,
- unsigned char *Buf, int Len)
-{
- pointer hostbase = pciBusAddrToHostAddr(Tag, (void *)Base);
- char *base;
- int psize;
- int mlen;
-
- psize = xf86getpagesize();
- Offset += Base & (psize - 1);
- Base &= ~(psize - 1);
- mlen = (Offset + Len + psize - 1) & ~(psize - 1);
- base = pmax_iomap((unsigned long)hostbase, mlen);
- if (base == MAP_FAILED) {
- xf86Msg(X_WARNING, "xf86ReadPciBIOS: Could not mmap PCI memory"
- " [base=0x%x,hostbase=0x%x,size=%x] (%s)\n",
- Base, hostbase, mlen, strerror(errno));
- return(0);
- }
-
- (void)memcpy(Buf, base + Offset, Len);
- (void)munmap(base, mlen);
- return(Len);
-}
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-#include <sys/ipl.h>
-
-#ifndef PL_HI
-#define PL_HI PL8
-#endif
-
-#ifndef PL_0
-#define PL_0 PL0
-#endif
-
-static void *spl_map_addr = NULL;
-
-void
-pmax_init_splmap(void)
-{
- spl_map_addr = spl_map(0);
- if (!spl_map_addr) {
- xf86Msg(X_WARNING,
- "pmax_init_splmap: spl_map() failed. "
- "Cannot bind to IPL register\n");
- xf86ErrorF("\tInterrupts cannot be disabled/enabled !!!\n");
- }
-}
-
-
-Bool
-xf86DisableInterrupts()
-{
- if (spl_map_addr) {
- (void)spl_request(PL_HI,spl_map_addr);
- return(TRUE);
- }
-
- return(FALSE);
-}
-
-void xf86EnableInterrupts()
-{
- if (spl_map_addr) {
- (void)spl_request(PL_0, spl_map_addr);
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_mouse.c
deleted file mode 100644
index 1568598c4..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_mouse.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/pmax/pmax_mouse.c,v 1.2 1999/09/04 13:04:46 dawes Exp $ */
-
-/*
- * Copyright 1999 by The XFree86 Project, Inc.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-#include "xqueue.h"
-
-static int
-SupportedInterfaces(void)
-{
- /* XXX Need to check this. */
- return MSE_SERIAL | MSE_AUTO;
-}
-
-static const char *internalNames[] = {
- "Xqueue",
- NULL
-};
-
-static const char **
-BuiltinNames(void)
-{
- return internalNames;
-}
-
-static Bool
-CheckProtocol(const char *protocol)
-{
- int i;
-
- for (i = 0; internalNames[i]; i++)
- if (xf86NameCmp(protocol, internalNames[i]) == 0)
- return TRUE;
- return FALSE;
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
- p->SupportedInterfaces = SupportedInterfaces;
- p->BuiltinNames = BuiltinNames;
- p->CheckProtocol = CheckProtocol;
- p->PreInit = XqueueMousePreInit;
- return p;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_pci.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_pci.c
deleted file mode 100644
index 21f20dff8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_pci.c
+++ /dev/null
@@ -1,1072 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/pmax/pmax_pci.c,v 1.6 2002/07/24 19:06:53 tsi Exp $ */
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include "os.h"
-#include "compiler.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "Pci.h"
-
-#include <sys/prosrfs.h>
-#include <sys/cpu.h>
-
-/*
- * Night Hawk 6400/6408 platform support
- */
-#undef NH640X_PCI_MFDEV_SUPPORT
-#undef NH640X_PCI_BRIDGE_SUPPORT
-
-static void nh640xPciInit(void);
-static PCITAG nh640xPciFindNext(void);
-static PCITAG nh640xPciFindFirst(void);
-static CARD32 nh6400PciReadLong(PCITAG tag, int offset);
-static void nh6400PciWriteLong(PCITAG tag, int offset, CARD32 val);
-static ADDRESS nh6400BusToHostAddr(PCITAG tag, ADDRESS addr);
-static ADDRESS nh6400HostToBusAddr(PCITAG tag, ADDRESS addr);
-static CARD32 nh6408PciReadLong(PCITAG tag, int offset);
-static void nh6408PciWriteLong(PCITAG tag, int offset, CARD32 val);
-static ADDRESS nh6408BusToHostAddr(PCITAG tag, ADDRESS addr);
-static ADDRESS nh6408HostToBusAddr(PCITAG tag, ADDRESS addr);
-
-static pciBusFuncs_t nh6400_pci_funcs = {
- nh6400PciReadLong,
- nh6400PciWriteLong,
- nh6400HostToBusAddr,
- nh6400BusToHostAddr
-};
-
-static pciBusFuncs_t nh6408_pci_funcs = {
- nh6408PciReadLong,
- nh6408PciWriteLong,
- nh6408HostToBusAddr,
- nh6408BusToHostAddr
-};
-
-/*
- * NH640x CFG address and data register offsets from base
- */
-#define NH6400_PCI_CFG_ADDR_REG_OFF 0
-#define NH6400_PCI_CFG_TYPE0_DATA_REG_OFF 0x40
-#define NH6400_PCI_CFG_TYPE1_DATA_REG_OFF 0x80
-
-#define NH6408_PCI_CFG_ADDR_REG_OFF 0
-#define NH6408_PCI_CFG_DATA_REG_OFF 0x10000
-
-/*
- * Possible cfg addr values for NH640x GMEM PMC ports
- */
-static unsigned long nh6400_pmc_cfgaddrs[] = {
- PCI_CFGMECH1_TYPE0_CFGADDR(0,0,0)
-};
-
-/*
- * Possible cfg addr values for devices on a secondary bus
- * (e.g. behind DEC 21152 PCI-to-PCI bridge)
- */
-static unsigned long dec_cfgaddrs[] = {
- PCI_CFGMECH1_TYPE1_CFGADDR(1,0,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,1,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,2,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,3,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,4,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,5,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,6,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,7,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,8,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,9,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,10,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,11,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,12,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,13,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,14,0,0),
- PCI_CFGMECH1_TYPE1_CFGADDR(1,15,0,0)
-};
-
-/*
- * Data structure holding information about various nh640x PCI buses
- */
-struct nh640x_pci_info {
- int busnum;
- int type;
- unsigned long num_cfg_addrs;
- unsigned long *cfg_addrs;
- int primary_bus;
- unsigned long cfgPhysBase;
- unsigned long memBase;
- unsigned long ioBase;
- unsigned long ioSize;
- unsigned char *cfgAddrReg; /* After mapping */
-};
-
-/* Type */
-#define PRIMARY_PCI 0
-#define SECONDARY_PCI 1
-
-static struct nh640x_pci_info nh6400_pci_info[] = {
-/* pci4 */ { 4, PRIMARY_PCI, 1, nh6400_pmc_cfgaddrs, 0, 0xa0000000, 0xa1000000, 0, 0xa2000000 },
-/* pci12 */ { 12, SECONDARY_PCI, 16, dec_cfgaddrs, 4 },
-#if 0
-/* pci5 */ { 5, PRIMARY_PCI, 1, nh6400_pmc_cfgaddrs, 0, 0xb0000000, 0xb1000000, 0, 0xb2000000 },
-/* pci13 */ { 13, SECONDARY_PCI, 16, dec_cfgaddrs, 5 },
-#endif
-};
-
-#define NH6400_NUM_PCI_EXPANSION_BUSES (sizeof(nh6400_pci_info)/sizeof(struct nh640x_pci_info))
-
-static struct nh640x_pci_info nh6408_pci_info[] = {
-/* pci8 */ { 8, PRIMARY_PCI, 1, nh6400_pmc_cfgaddrs, 0, 0x98040000, 0x9a800000, 65536, 0xa0000000 },
-/* pci12 */ { 12, SECONDARY_PCI, 16, dec_cfgaddrs, 8, },
-#if 0
-/* pci9 */ { 9, PRIMARY_PCI, 1, nh6400_pmc_cfgaddrs, 0, 0x99040000, 0x9b800000, 65536, 0xb0000000 },
-/* pci13 */ { 13, SECONDARY_PCI, 16, dec_cfgaddrs, 9, },
-#endif
-};
-
-#define NH6408_NUM_PCI_EXPANSION_BUSES (sizeof(nh6408_pci_info)/sizeof(struct nh640x_pci_info))
-
-extern unsigned long pmax_sys_type;
-
-#define MOTOPPC_IO_BASE 0x80000000L /* Start of PCI/ISA I/O region */
-
-extern void * pmax_iomap(unsigned long, unsigned long);
-extern unsigned long ioSize;
-extern volatile unsigned char *ioBase;
-
-void
-pmaxPciInit(void)
-{
- extern void motoppcPciInit(void);
- extern void nh640xPciInit(void);
- extern void nh6800tPciInit(void);
-
- extern unsigned long motoPciMemBase;
- extern unsigned long motoPciMemLen;
- extern unsigned long motoPciMemBaseCPU;
-
- /*
- * Determine type of machine
- */
- switch(pmax_sys_type) {
- case MODEL_NH6400:
- case MODEL_NH6408:
- nh640xPciInit();
- break;
-
- case MODEL_NH6800T:
- nh6800tPciInit();
- break;
-
- case MODEL_PH620:
- case MODEL_PH640:
- case MODEL_MMTX:
- motoPciMemBase = 0;
- motoPciMemLen = 0x20000000;
- motoPciMemBaseCPU = 0xa0000000;
- /*FALLTHROUGH*/
-
- case MODEL_MPWR:
- case MODEL_PH610:
- case MODEL_MPWR2:
- motoppcPciInit();
- break;
-
- default:
- FatalError("pmaxPciInit: Unsupported machine type\n");
- break;
- }
-}
-
-void
-ppcPciIoMap(int pcibus)
-{
- int primary_bus;
-
- if (ioBase != MAP_FAILED)
- munmap((void*)ioBase,ioSize);
-
- if (!pciBusInfo[pcibus])
- return;
-
- primary_bus = pciBusInfo[pcibus]->primary_bus;
-
- if (!pciBusInfo[primary_bus])
- return;
-
- ioSize = min(pciBusInfo[primary_bus]->ppc_io_size, 64 * 1024);
- if (ioSize) {
- ioBase = (unsigned char *)pmax_iomap(pciBusInfo[primary_bus]->ppc_io_base, ioSize);
- if (ioBase == MAP_FAILED)
- ioSize = 0;
- }
-}
-
-static void
-nh640xPciInit(void)
-{
- int i,n;
- struct nh640x_pci_info *infop;
- pciBusFuncs_p functions;
-
- switch (pmax_sys_type) {
- case MODEL_NH6400:
- n = NH6400_NUM_PCI_EXPANSION_BUSES;
- infop = nh6400_pci_info;
- functions = &nh6400_pci_funcs;
- break;
- case MODEL_NH6408:
- n = NH6408_NUM_PCI_EXPANSION_BUSES;
- infop = nh6408_pci_info;
- functions = &nh6408_pci_funcs;
- break;
- default:
- FatalError("Unknown Power MAXION system type\n");
- /*NOTREACHED*/
- }
-
- /*
- * Initialize entries in pciBusInfo[] table for each defined PCI bus.
- * This table is actually sparse because undefined or inaccessible
- * pci buses are left as NULL entries. Of course, pciFindNext() is
- * aware of this convention, and will skip the undefined buses.
- */
- for (i=0; i<n; infop++,i++) {
- int bus = infop->busnum;
- pciBusInfo_t *busp;
-
- if (pciBusInfo[bus])
- busp = pciBusInfo[bus];
- else
- busp = xalloc(sizeof(pciBusInfo_t));
-
- if (!busp)
- FatalError("nh640xPciInit: xalloc failed\n");
-
- /* Initialize pci bus info */
- busp->configMech = PCI_CFG_MECH_OTHER;
- busp->numDevices = infop->num_cfg_addrs;
- busp->secondary = (infop->type == SECONDARY_PCI ? TRUE : FALSE);
- busp->primary_bus = infop->primary_bus;
- busp->funcs = functions;
- busp->pciBusPriv = infop;
-
- /* Initialize I/O base/size info */
- if (busp->secondary) {
- pciBusInfo_t *pri_busp = pciBusInfo[busp->primary_bus];
- if (pri_busp) {
- busp->ppc_io_base = pri_busp->ppc_io_base;
- busp->ppc_io_size = pri_busp->ppc_io_size;
- }
- }
- else if (infop->ioSize) {
- busp->ppc_io_size = infop->ioSize;
- busp->ppc_io_base = infop->ioBase;
- }
-
- pciBusInfo[bus] = busp;
-
- /*
- * Adjust pciNumBuses to reflect the highest defined entry in pciBusInfo
- */
- if (pciNumBuses < bus)
- pciNumBuses = bus + 1;
- }
-
- pciFindFirstFP = nh640xPciFindFirst;
- pciFindNextFP = nh640xPciFindNext;
-}
-
-static PCITAG
-nh640xPciFindNext(void)
-{
- unsigned long devid, tmp;
- unsigned char base_class, sub_class, sec_bus, pri_bus;
-
- for (;;) {
-
- if (pciBusNum == -1) {
- /*
- * Start at top of the order
- */
- pciBusNum = 0;
- pciFuncNum = 0;
- pciDevNum = 0;
- }
- else {
-#ifdef NH640X_PCI_MFDEV_SUPPORT
- /*
- * Somewhere in middle of order. Determine who's
- * next up
- */
- if (pciFuncNum == 0) {
- /*
- * Is current dev a multifunction device?
- */
- if (pciMfDev(pciBusNum, pciDevNum))
- /* Probe for other functions */
- pciFuncNum = 1;
- else
- /* No more functions this device. Next device please */
- pciDevNum ++;
- }
- else if (++pciFuncNum >= 8) {
- /* No more functions for this device. Next device please */
- pciFuncNum = 0;
- pciDevNum ++;
- }
-#else /* NH640X_PCI_MFDEV_SUPPORT */
- pciDevNum++;
-#endif /* NH640X_PCI_MFDEV_SUPPORT */
-
- if (!pciBusInfo[pciBusNum] || pciDevNum >= pciBusInfo[pciBusNum]->numDevices) {
- /*
- * No more devices for this bus. Next bus please
- */
- if (++pciBusNum >= pciNumBuses)
- /* No more buses. All done for now */
- return(PCI_NOT_FOUND);
-
- pciDevNum = 0;
- }
- }
-
- if (!pciBusInfo[pciBusNum])
- continue; /* Undefined bus, next bus/device please */
-
- /*
- * At this point, pciBusNum, pciDevNum, and pciFuncNum have been
- * advanced to the next device. Compute the tag, and read the
- * device/vendor ID field.
- */
- pciDeviceTag = PCI_MAKE_TAG(pciBusNum, pciDevNum, pciFuncNum);
- devid = pciReadLong(pciDeviceTag, 0);
- if (devid == 0xffffffff)
- continue; /* Nobody home. Next device please */
-
-#ifdef NH640X_PCI_BRIDGE_SUPPORT
- /*
- * Before checking for a specific devid, look for enabled
- * PCI to PCI bridge devices. If one is found, create and
- * initialize a bus info record (if one does not already exist).
- */
- tmp = pciReadLong(pciDeviceTag, PCI_CLASS_CODE_REG);
- base_class = PCI_EXTRACT_BASE_CLASS(tmp);
- sub_class = PCI_EXTRACT_SUBCLASS(tmp);
- if (base_class == PCI_CLASS_BRIDGE && sub_class == PCI_SUBCLASS_BRIDGE_PCI) {
- tmp = pciReadLong(pciDeviceTag, PCI_BRIDGE_BUS_REG);
- sec_bus = PCI_SECONDARY_BUS_EXTRACT(tmp);
- pri_bus = PCI_PRIMARY_BUS_EXTRACT(tmp);
- if (sec_bus > 0 && sec_bus < PCI_MAX_BUSES && pcibusInfo[pri_bus]) {
- /*
- * Found a secondary PCI bus
- */
- if (!pciBusInfo[sec_bus]) {
- pciBusInfo[sec_bus] = xalloc(sizeof(pciBusInfo_t));
-
- if (!pciBusInfo[sec_bus])
- FatalError("nh640xPciFindNext: alloc failed\n!!!");
- }
-
- /* Copy parents settings... */
- *pciBusInfo[sec_bus] = *pcibusInfo[pri_bus];
-
- /* ...but not everything same as parent */
- pciBusInfo[sec_bus]->primary_bus = pri_bus;
- pciBusInfo[sec_bus]->secondary = TRUE;
- pciBusInfo[sec_bus]->numDevices = 32;
-
- if (pciNumBuses < sec_num)
- pciNumBuses = sec_num+1;
- }
- }
-#endif /* NH640X_PCI_BRIDGE_SUPPORT */
-
- /*
- * Does this device match the requested devid after
- * applying mask?
- */
- if ((devid & pciDevidMask) == pciDevid) {
- /* Yes - Return it. Otherwise, next device */
-
- /* However, before returning it, try to map */
- /* I/O region for this PCI bus */
- ppcPciIoMap(PCI_BUS_FROM_TAG(pciDeviceTag));
-
- return(pciDeviceTag); /* got a match */
- }
-
- } /* for */
-
- /*NOTREACHED*/
-}
-
-static PCITAG
-nh640xPciFindFirst(void)
-{
- pciBusNum = -1;
- return(nh640xPciFindNext());
-}
-
-static unsigned long
-nh6400PciReadLong(PCITAG tag, int offset)
-{
- unsigned long tmp;
- char *base;
- int devnum, bus, func, data_reg_offset, ndevs;
- unsigned long cfgaddr;
- pciBusInfo_t *busp, *pri_busp;
- struct nh640x_pci_info *infop, *pri_infop;
-
- bus = PCI_BUS_FROM_TAG(tag);
- devnum = PCI_DEV_FROM_TAG(tag);
- func = PCI_FUNC_FROM_TAG(tag);
-
- xf86MsgVerb(3, X_INFO,
- "nh6400PciReadLong: bus=%d, devnum=%d, func=%d, offset=0x%x\n",
- bus, devnum, func, offset);
-
- if (bus >= pciNumBuses || !pciBusInfo[bus]) {
- xf86Msg(X_WARNING, "nh6400PciReadLong: bus pci%d not defined!!!\n",
- bus);
- return(0xffffffff);
- }
-
- busp = pciBusInfo[bus];
- infop = (struct nh640x_pci_info *)busp->pciBusPriv;
-
- if (busp->secondary) {
- /*
- * Secondary PCI bus behind a pci-to-pci bridge
- */
- pri_busp = pciBusInfo[busp->primary_bus];
- pri_infop = (struct nh640x_pci_info *)pri_busp->pciBusPriv;
- ndevs = 16;
- data_reg_offset = NH6400_PCI_CFG_TYPE1_DATA_REG_OFF; /* For Type 1 cfg cycles */
-
- if (!pri_busp) {
- xf86Msg(X_WARNING,
- "nh6400PciReadLong: pci%d's primary parent [pci%d] "
- "is not defined!!!\n", bus, busp->primary_bus);
- return(0xffffffff);
- }
- }
- else {
- pri_busp = busp;
- pri_infop = infop;
- ndevs = infop->num_cfg_addrs;
- data_reg_offset = NH6400_PCI_CFG_TYPE0_DATA_REG_OFF; /* For Type 0 cfg cycles */
- }
-
- if (devnum >= ndevs) {
- xf86Msg(X_WARNING,
- "nh6400PciReadLong: devnum %d out of range for bus pci%d\n",
- devnum, bus);
- return(0xffffffff);
- }
-
- /*
- * Make sure the cfg address and data registers for this bus are mapped
- * Secondary buses just use the primary parents addreses
- */
- if (!infop->cfgAddrReg) {
- if (!pri_infop->cfgAddrReg) {
- pri_infop->cfgAddrReg = pmax_iomap(pri_infop->cfgPhysBase, 0x1000);
- if (pri_infop->cfgAddrReg == MAP_FAILED) {
- FatalError("nh6400PciReadLong: Cannot map PCI cfg regs @ 0x%08x\n",
- pri_infop->cfgPhysBase);
- /*NOTREACHED*/
- }
- }
- infop->cfgAddrReg = pri_infop->cfgAddrReg;
- infop->cfgPhysBase = pri_infop->cfgPhysBase;
- }
- base = infop->cfgAddrReg;
-
- if (busp->secondary) {
- /* cfgaddr = PCI_CFGMECH1_TYPE1_CFGADDR(bus,devnum,func,offset); */
- cfgaddr = PCI_CFGMECH1_TYPE1_CFGADDR(1,devnum,func,offset); /* Must use bus=1 for now - glb */
- }
- else {
- cfgaddr = infop->cfg_addrs[devnum] + offset;
- }
-
- xf86MsgVerb(X_INFO, 3,
- "nh6400PciReadLong: Writing cfgaddr=0x%x to 0x%x (phys=0x%x)\n",
- cfgaddr, base, infop->cfgPhysBase);
-
- /* There may not be any OS interaction while interrupts are disabled */
- xf86DisableInterrupts();
-
- *((unsigned long *)(base)) = pciByteSwap(cfgaddr); /* Set cfg address */
- eieio();
-
- if (!badaddr(base + data_reg_offset, 4, 0)) {
- tmp = *((unsigned long *)(base + data_reg_offset));
- eieio();
- }
-
- xf86EnableInterrupts();
-
- xf86MsgVerb(X_INFO, 3, "nh6400PciReadLong: Read value=0x%x from 0x%x (phys=0x%x)\n",
- pciByteSwap(tmp), base + data_reg_offset, infop->cfgPhysBase + data_reg_offset);
-
- return(pciByteSwap(tmp));
-}
-
-static void
-nh6400PciWriteLong(PCITAG tag, int offset, unsigned long val)
-{
- char *base;
- int devnum, bus, func, data_reg_offset, ndevs;
- unsigned long cfgaddr;
- pciBusInfo_t *busp, *pri_busp;
- struct nh640x_pci_info *infop, *pri_infop;
-
- bus = PCI_BUS_FROM_TAG(tag);
- devnum = PCI_DEV_FROM_TAG(tag);
- func = PCI_FUNC_FROM_TAG(tag);
-
- xf86MsgVerb(X_INFO, 3,
- "nh6400PciWriteLong: bus=%d, devnum=%d, func=%d, offset=0x%x, "
- val=0x%x\n", bus, devnum, func, offset, val);
-
- if (bus >= pciNumBuses || !pciBusInfo[bus]) {
- xf86Msg(X_WARNING, "nh6400PciWriteLong: bus pci%d not defined!!!\n",
- bus);
- return;
- }
- busp = pciBusInfo[bus];
- infop = (struct nh640x_pci_info *)busp->pciBusPriv;
-
- if (busp->secondary) {
- /*
- * Secondary PCI bus behind a pci-to-pci bridge
- */
- pri_busp = pciBusInfo[busp->primary_bus];
- pri_infop = (struct nh640x_pci_info *)pri_busp->pciBusPriv;
- ndevs = 16;
- data_reg_offset = NH6400_PCI_CFG_TYPE1_DATA_REG_OFF; /* For Type 1 cfg cycles */
-
- if (!pri_busp) {
- xf86Msg(X_WARNING,
- "nh6400PciWriteLong: pci%d's primary parent [pci%d]"
- " is not defined!!!\n", bus, busp->primary_bus);
- return;
- }
- }
- else {
- pri_busp = busp;
- pri_infop = infop;
- ndevs = infop->num_cfg_addrs;
- data_reg_offset = NH6400_PCI_CFG_TYPE0_DATA_REG_OFF; /* For Type 0 cfg cycles */
- }
-
- if (devnum >= ndevs) {
- xf86Msg(X_WARNING,
- "nh6400PciWriteLong: devnum %d out of range for bus pci%d\n",
- devnum, bus);
- return;
- }
-
- /*
- * Make sure the cfg address and data registers for this bus are mapped
- * Secondary buses just use the primary parents addreses
- */
- if (!infop->cfgAddrReg) {
- if (!pri_infop->cfgAddrReg) {
- pri_infop->cfgAddrReg = pmax_iomap(pri_infop->cfgPhysBase, 0x1000);
- if (pri_infop->cfgAddrReg == MAP_FAILED) {
- FatalError("nh6400PciWriteLong: Cannot map PCI cfg regs @ 0x%08x\n",
- pri_infop->cfgPhysBase);
- /*NOTREACHED*/
- }
- }
- infop->cfgAddrReg = pri_infop->cfgAddrReg;
- infop->cfgPhysBase = pri_infop->cfgPhysBase;
- }
- base = infop->cfgAddrReg;
-
- if (busp->secondary) {
- /* cfgaddr = PCI_CFGMECH1_TYPE1_CFGADDR(bus,devnum,func,offset); */
- cfgaddr = PCI_CFGMECH1_TYPE1_CFGADDR(1,devnum,func,offset); /* Must use bus=1 for now - glb */
- }
- else {
- cfgaddr = infop->cfg_addrs[devnum] + offset;
- }
-
- xf86MsgVerb(X_INFO, 3,
- "nh6400PciWriteLong: Writing cfgaddr=0x%x to 0x%x (phys=0x%x)\n",
- cfgaddr, base, infop->cfgPhysBase);
-
- /* There may not be any OS interaction while interrupts are disabled */
- xf86DisableInterrupts();
-
- *((unsigned long *)(base)) = pciByteSwap(cfgaddr); /* Set cfg address */
- eieio();
-
- *((unsigned long *)(base + data_reg_offset)) = pciByteSwap(val);
- eieio();
-
- xf86EnableInterrupts();
-
- xf86MsgVerb(X_INFO, 3,
- "nh6400PciWriteLong: Wrote value=0x%x to 0x%x (phys=0x%x)\n",
- val, base + data_reg_offset,
- infop->cfgPhysBase + data_reg_offset);
-}
-
-/*
- * These next two functions are for debugging purposes only because
- * the nh6400 does not translate passed to/from a PCI domain. However,
- * we do do some bounds checking to make sure things are where they
- * should be.
- */
-static ADDRESS
-nh6400BusToHostAddr(PCITAG tag, ADDRESS addr)
-{
- unsigned long addr_l = (unsigned long)addr;
- int bus = PCI_BUS_FROM_TAG(tag);
- struct nh640x_pci_info *infop;
- int pri_bus;
- unsigned long membase;
-
- if (!pciBusInfo[bus])
- FatalError("nh6400BusToHostAddr: pci%d not defined!!\n", bus);
-
- if (pciBusInfo[bus]->secondary) {
- pri_bus = pciBusInfo[bus]->primary_bus;
-
- if (!pciBusInfo[pri_bus])
- FatalError("nh6400BusToHostAddr: Primary bus pci%d not defined!!\n", pri_bus);
- }
- else
- pri_bus = bus;
-
- infop = (struct nh640x_pci_info *)pciBusInfo[pri_bus]->pciBusPriv;
- membase = infop->memBase;
-
- if (addr_l < 0x80000000)
- /*
- * NH6400 host memory addresses are 0-0x7fffffff
- */
- return(addr);
-
- else if (addr_l >= membase && addr_l < membase + 0x0e000000)
- /*
- * NH6400 host can access PCI memory space addresses
- * [memBase, memBase+0x0dffffff]
- */
- return(addr);
- else
- /* Other addresses are not valid */
- FatalError("nh6400BusToHostAddr: Bus address 0x%x not visible to NH6400 host\n",
- addr_l);
-
- /*NOTREACHED*/
-}
-
-static ADDRESS
-nh6400HostToBusAddr(PCITAG tag, ADDRESS addr)
-{
- unsigned long addr_l = (unsigned long) addr;
- int bus = PCI_BUS_FROM_TAG(tag);
- struct nh640x_pci_info *infop;
- int pri_bus;
- unsigned long membase;
-
- if (!pciBusInfo[bus])
- FatalError("nh6400HostToBusAddr: pci%d not defined!!\n", bus);
-
- if (pciBusInfo[bus]->secondary) {
- pri_bus = pciBusInfo[bus]->primary_bus;
-
- if (!pciBusInfo[pri_bus])
- FatalError("nh6400HostToBusAddr: Primary bus pci%d not defined!!\n", pri_bus);
- }
- else
- pri_bus = bus;
-
- infop = (struct nh640x_pci_info *)pciBusInfo[pri_bus]->pciBusPriv;
- membase = infop->memBase;
-
- if (addr_l < 0x80000000)
- /*
- * NH6400 host memory addresses are 0-0x7fffffff
- */
- return(addr);
-
- else if (addr_l >= membase && addr_l < membase + 0x0e000000)
- /*
- * NH6400 host can access PCI memory space addresses
- * [memBase, memBase+0x0dffffff]
- */
- return(addr);
- else
- /* Other addresses are not valid */
- FatalError("nh6400HostToBusAddr: Bus address 0x%x not visible to NH6400 host\n",
- addr_l);
-
- /*NOTREACHED*/
-}
-
-
-/*
- * NH6408 platform support
- */
-static unsigned long
-nh6408PciReadLong(PCITAG tag, int offset)
-{
- unsigned long tmp;
- char *base;
- int devnum, bus, func, ndevs;
- unsigned long cfgaddr;
- pciBusInfo_t *busp, *pri_busp;
- struct nh640x_pci_info *infop, *pri_infop;
-
- bus = PCI_BUS_FROM_TAG(tag);
- devnum = PCI_DEV_FROM_TAG(tag);
- func = PCI_FUNC_FROM_TAG(tag);
-
- xf86MsgVerb(X_INFO,
- "nh6408PciReadLong: bus=%d, devnum=%d, func=%d, offset=0x%x\n",
- bus, devnum, func, offset);
-
- if (bus >= pciNumBuses || !pciBusInfo[bus]) {
- xf86Msg(X_WARNING, "nh6408PciReadLong: bus pci%d not defined!!!\n",
- bus);
- return(0xffffffff);
- }
-
- busp = pciBusInfo[bus];
- infop = (struct nh640x_pci_info *)busp->pciBusPriv;
-
- if (busp->secondary) {
- /*
- * Secondary PCI bus behind a pci-to-pci bridge
- */
- pri_busp = pciBusInfo[busp->primary_bus];
- pri_infop = (struct nh640x_pci_info *)pri_busp->pciBusPriv;
- ndevs = 16;
-
- if (!pri_busp) {
- xf86Msg(X_WARNING,
- "nh6408PciReadLong: pci%d's primary parent [pci%d] "
- "is not defined!!!\n", bus, busp->primary_bus);
- return(0xffffffff);
- }
- }
- else {
- pri_busp = busp;
- pri_infop = infop;
- ndevs = infop->num_cfg_addrs;
- }
-
- if (devnum >= ndevs) {
- xf86Msg(X_WARNING
- "nh6408PciReadLong: devnum %d out of range for bus pci%d\n",
- devnum, bus);
- return(0xffffffff);
- }
-
- /*
- * Make sure the cfg address and data registers for this bus are mapped
- * Secondary buses just use the primary parents addreses
- */
- if (!infop->cfgAddrReg) {
- if (!pri_infop->cfgAddrReg) {
- pri_infop->cfgAddrReg = pmax_iomap(pri_infop->cfgPhysBase, 0x11000);
- if (pri_infop->cfgAddrReg == MAP_FAILED) {
- FatalError("nh6408PciReadLong: Cannot map PCI cfg regs @ 0x%08x\n",
- pri_infop->cfgPhysBase);
- /*NOTREACHED*/
- }
- }
- infop->cfgAddrReg = pri_infop->cfgAddrReg;
- infop->cfgPhysBase = pri_infop->cfgPhysBase;
- }
- base = infop->cfgAddrReg;
-
- if (busp->secondary) {
- /* cfgaddr = PCI_CFGMECH1_TYPE1_CFGADDR(bus,devnum,func,offset); */
- cfgaddr = PCI_CFGMECH1_TYPE1_CFGADDR(1,devnum,func,offset); /* Must use bus=1 for now - glb */
- }
- else {
- cfgaddr = infop->cfg_addrs[devnum] + offset;
- }
-
- xf86MsgVerb(X_INFO, 3,
- "nh6408PciReadLong: Writing cfgaddr=0x%x to 0x%x (phys=0x%x)\n",
- cfgaddr, base, infop->cfgPhysBase);
-
- /* There may not be any OS interaction while interrupts are disabled */
- xf86DisableInterrupts();
-
- *((unsigned long *)(base)) = pciByteSwap(cfgaddr); /* Set cfg address */
- eieio();
-
- if (!badaddr(base + NH6408_PCI_CFG_DATA_REG_OFF, 4, 0)) {
- tmp = *((unsigned long *)(base + NH6408_PCI_CFG_DATA_REG_OFF));
- eieio();
- }
-
- xf86EnableInterrupts();
-
- xf86MsgVerb(X_INFO, 3, "nh6408PciReadLong: Read value=0x%x from 0x%x (phys=0x%x)\n",
- pciByteSwap(tmp),
- base + NH6408_PCI_CFG_DATA_REG_OFF,
- infop->cfgPhysBase + NH6408_PCI_CFG_DATA_REG_OFF);
-
- return(pciByteSwap(tmp));
-}
-
-static void
-nh6408PciWriteLong(PCITAG tag, int offset, unsigned long val)
-{
- char *base;
- int devnum, bus, func, ndevs;
- unsigned long cfgaddr;
- pciBusInfo_t *busp, *pri_busp;
- struct nh640x_pci_info *infop, *pri_infop;
-
- bus = PCI_BUS_FROM_TAG(tag);
- devnum = PCI_DEV_FROM_TAG(tag);
- func = PCI_FUNC_FROM_TAG(tag);
-
- xf86MsgVerb(X_INFO,
- "nh6408PciWriteLong: bus=%d, devnum=%d, func=%d, offset=0x%x, "
- "val=0x%x\n", bus, devnum, func, offset, val);
-
- if (bus >= pciNumBuses || !pciBusInfo[bus]) {
- xf86Msg(X_WARNING, "nh6408PciWriteLong: bus pci%d not defined!!!\n",
- bus);
- return;
- }
-
- busp = pciBusInfo[bus];
- infop = (struct nh640x_pci_info *)busp->pciBusPriv;
-
- if (busp->secondary) {
- /*
- * Secondary PCI bus behind a pci-to-pci bridge
- */
- pri_busp = pciBusInfo[busp->primary_bus];
- pri_infop = (struct nh640x_pci_info *)pri_busp->pciBusPriv;
- ndevs = 16;
-
- if (!pri_busp) {
- xf86Msg(X_WARNING,
- "nh6408PciWriteLong: pci%d's primary parent [pci%d] "
- is not defined!!!\n", bus, busp->primary_bus);
- return;
- }
- }
- else {
- pri_busp = busp;
- pri_infop = infop;
- ndevs = infop->num_cfg_addrs;
- }
-
- if (devnum >= ndevs) {
- xf86Msg(X_WARNING,
- "nh6408PciWriteLong: devnum %d out of range for bus pci%d\n",
- devnum, bus);
- return;
- }
-
- /*
- * Make sure the cfg address and data registers for this bus are mapped
- * Secondary buses just use the primary parents addreses
- */
- if (!infop->cfgAddrReg) {
- if (!pri_infop->cfgAddrReg) {
- pri_infop->cfgAddrReg = pmax_iomap(pri_infop->cfgPhysBase, 0x11000);
- if (pri_infop->cfgAddrReg == MAP_FAILED) {
- FatalError("nh6408PciWriteLong: Cannot map PCI cfg regs @ 0x%08x\n",
- pri_infop->cfgPhysBase);
- /*NOTREACHED*/
- }
- }
- infop->cfgAddrReg = pri_infop->cfgAddrReg;
- infop->cfgPhysBase = pri_infop->cfgPhysBase;
- }
- base = infop->cfgAddrReg;
-
- if (busp->secondary) {
- /* cfgaddr = PCI_CFGMECH1_TYPE1_CFGADDR(bus,devnum,0,offset); */
- cfgaddr = PCI_CFGMECH1_TYPE1_CFGADDR(1,devnum,0,offset);
- }
- else {
- cfgaddr = infop->cfg_addrs[devnum] + offset;
- }
-
- xf86MsgVerb(X_INFO, 3,
- "nh6408PciWriteLong: Writing cfgaddr=0x%x to 0x%x (phys=0x%x)\n",
- cfgaddr, base, infop->cfgPhysBase);
-
- /* There may not be any OS interaction while interrupts are disabled */
- xf86DisableInterrupts();
-
- *((unsigned long *)(base)) = pciByteSwap(cfgaddr); /* Set cfg address */
- eieio();
-
- *((unsigned long *)(base + NH6408_PCI_CFG_DATA_REG_OFF)) = pciByteSwap(val);
- eieio();
-
- xf86EnableInterrupts();
-
- xf86MsgVerb(X_INFO, 3,
- "nh6408PciWriteLong: Wrote value=0x%x to 0x%x (phys=0x%x)\n",
- val, base + NH6408_PCI_CFG_DATA_REG_OFF,
- infop->cfgPhysBase + NH6408_PCI_CFG_DATA_REG_OFF);
-}
-
-
-static ADDRESS
-nh6408BusToHostAddr(PCITAG tag, ADDRESS addr)
-{
- unsigned long addr_l = (unsigned long)addr;
- int bus = PCI_BUS_FROM_TAG(tag);
- int pri_bus;
- struct nh640x_pci_info *infop;
- unsigned long membase;
-
- if (!pciBusInfo[bus])
- FatalError("nh6408BusToHostAddr: pci%d not defined!!\n", bus);
-
- if (pciBusInfo[bus]->secondary) {
- pri_bus = pciBusInfo[bus]->primary_bus;
-
- if (!pciBusInfo[pri_bus])
- FatalError("nh6408BusToHostAddr: Primary bus pci%d not defined!!\n", pri_bus);
- }
- else
- pri_bus = bus;
-
- infop = (struct nh640x_pci_info *)pciBusInfo[pri_bus]->pciBusPriv;
- membase = infop->memBase;
-
- if (addr_l < 0x10000000)
- /*
- * NH6408 host sees PCI memory space addresses 0-0x0fffffff
- * at the primary PCI buses "memBase" [memBase, memBase+0x0fffffff]
- */
- return((ADDRESS)(membase + addr_l));
-
- else if (addr_l >= 0x80000000)
- /*
- * NH6408 host memory addresses 0-0x7fffffff are seen at
- * 0x80000000-0xffffffff on PCI
- */
- return((ADDRESS)(addr_l & 0x7fffffff));
-
- else
- /* Other addresses are not valid */
- FatalError("nh6408BusToHostAddr: Bus address 0x%x not visible to NH6408 host\n",
- addr_l);
-
- /*NOTREACHED*/
-}
-
-static ADDRESS
-nh6408HostToBusAddr(PCITAG tag, ADDRESS addr)
-{
- unsigned long addr_l = (unsigned long)addr;
- int bus = PCI_BUS_FROM_TAG(tag);
- int pri_bus;
- struct nh640x_pci_info *infop;
- unsigned long membase;
-
- if (!pciBusInfo[bus])
- FatalError("nh6408HostToBusAddr: pci%d not defined!!\n", bus);
-
- if (pciBusInfo[bus]->secondary) {
- pri_bus = pciBusInfo[bus]->primary_bus;
-
- if (!pciBusInfo[pri_bus])
- FatalError("nh6408HostToBusAddr: Primary bus pci%d not defined!!\n", pri_bus);
- }
- else
- pri_bus = bus;
-
- infop = (struct nh640x_pci_info *)pciBusInfo[pri_bus]->pciBusPriv;
- membase = infop->memBase;
-
- if (addr_l < 0x80000000)
- /*
- * NH6408 host memory addresses 0-0x7fffffff are seen at
- * 0x80000000-0xffffffff on PCI
- */
- return((ADDRESS)(addr_l | 0x80000000));
-
- else if (addr_l >= membase && addr_l < (membase + 0x10000000))
- /*
- * NH6408 host sees PCI memory space addresses 0-0x0fffffff
- * at the primary PCI buses "memBase" [memBase, memBase+0x0fffffff]
- */
- return((ADDRESS)(addr_l - membase));
-
- else
- /* Other addresses are not valid */
- FatalError("nh6408HostToBusAddr: Host address 0x%x not visible to pci%d\n",
- addr_l, bus);
-
- /*NOTREACHED*/
-}
-
-/*
- * NH6800 (Turbo) support
- */
-static void
-nh6800tPciInit(void)
-{
- FatalError("nh6800tPciInit: NH6800TURBO not supported (yet)!!!\n");
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_ppc.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_ppc.c
deleted file mode 100644
index aa286d4ac..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/pmax/pmax_ppc.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/pmax/pmax_ppc.c,v 1.3 1998/07/25 16:56:56 dawes Exp $ */
-/*
- * Copyright 1998 by Concurrent Computer Corporation
- *
- * 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, and that the name of Concurrent Computer
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Concurrent Computer Corporation makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Copyright 1998 by Metro Link Incorporated
- *
- * 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, and that the name of Metro Link
- * Incorporated not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Metro Link Incorporated makes no representations
- * about the suitability of this software for any purpose. It is
- * provided "as is" without express or implied warranty.
- *
- * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <sys/types.h>
-#include <errno.h>
-
-#include <sys/prosrfs.h>
-#include <sys/cpu.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-volatile unsigned char *ioBase = MAP_FAILED; /* Also referenced by compiler.h */
-unsigned long ioSize = 0;
-
-#undef outb
-#undef outw
-#undef outl
-#undef inb
-#undef inw
-#undef inl
-
-void
-outb(unsigned int a, unsigned char b)
-{
- if (ioBase == MAP_FAILED) {
- ErrorF("outb(0x%04X, 0x%02X) fails. Uninitialized ioBase\n", a, b);
- return;
- }
-
- *((volatile unsigned char *)(ioBase + a)) = b; eieio();
-}
-
-void
-outw(unsigned int a, unsigned short w)
-{
- if (ioBase == MAP_FAILED) {
- ErrorF("outw(0x%04X, 0x%04X) fails. Unitialized ioBase\n", a, w);
- return;
- }
-
- stw_brx(w,ioBase,a); eieio();
-}
-
-void
-outl(unsigned int a, unsigned int l)
-{
- if (ioBase == MAP_FAILED) {
- ErrorF("outl(0x%04X, 0x%08X) fails. Unitialized ioBase\n", a, l);
- return;
- }
-
- stl_brx(l,ioBase,a); eieio();
-}
-
-unsigned char
-inb(unsigned int a)
-{
- unsigned char b;
-
- if (ioBase == MAP_FAILED) {
- FatalError("%s(0x%04X) fails. Unitialized ioBase\n", "inb", a);
- /*NOTREACHED*/
- }
-
- b = *((volatile unsigned char *)(ioBase + a));
-
- return(b);
-}
-
-unsigned short
-inw(unsigned int a)
-{
- unsigned short w;
-
- if (ioBase == MAP_FAILED) {
- FatalError("%s(0x%04X) fails. Unitialized ioBase\n", "inw", a);
- /*NOTREACHED*/
- }
-
- w = ldw_brx(ioBase,a);
- return(w);
-}
-
-unsigned int
-inl(unsigned int a)
-{
- unsigned int l;
-
- if (ioBase == MAP_FAILED) {
- FatalError("%s(0x%04X) fails. Unitialized ioBase\n", "inl", a);
- /*NOTREACHED*/
- }
-
- l = ldl_brx(ioBase, a);
- return(l);
-}
-
-#ifdef PPCIO_DEBUG
-
-void
-debug_outb(unsigned int a, unsigned char b, int line, char *file)
-{
- if (xf86Verbose > 3)
- ErrorF("outb(0x%04X, 0x%02X) at line %d, file \"%s\"\n", a, b, line, file);
-
- outb(a,b);
-}
-
-void
-debug_outw(unsigned int a, unsigned short w, int line, char *file)
-{
- if (xf86Verbose > 3)
- ErrorF("outw(0x%04X, 0x%04X) at line %d, file \"%s\"\n", a, w, line, file);
-
- outw(a,w);
-}
-
-void
-debug_outl(unsigned int a, unsigned int l, int line, char *file)
-{
- if (xf86Verbose > 3)
- ErrorF("outl(0x%04X, 0x%08X) at line %d, file \"%s\"\n", a, l, line, file);
-
- outl(a,l);
-}
-
-
-unsigned char
-debug_inb(unsigned int a, int line, char *file)
-{
- unsigned char b;
-
- if (xf86Verbose > 4)
- ErrorF("Calling %s(0x%04x) at line %d, file \"%s\" ...\n", "inb", a, line, file);
-
- b = inb(a);
-
- if (xf86Verbose > 3)
- ErrorF("... %s(0x%04X) returns 0x%02X\n", "inb", a, b);
-
- return(b);
-}
-
-unsigned short
-debug_inw(unsigned int a, int line, char *file)
-{
- unsigned short w;
-
- if (xf86Verbose > 4)
- ErrorF("Calling %s(0x%04x) at line %d, file \"%s\" ...\n", "inw", a, line, file);
-
- w = inw(a);
-
- if (xf86Verbose > 3)
- ErrorF("... %s(0x%04X) returns 0x%04X\n", "inw", a, w);
-
- return(w);
-}
-
-unsigned int
-debug_inl(unsigned int a, int line, char *file)
-{
- unsigned int l;
-
- if (xf86Verbose > 4)
- ErrorF("Calling %s(0x%04x) at line %d, file \"%s\" ...\n", "inl", a, line, file);
-
- l = inl(a);
-
- if (xf86Verbose > 3)
- ErrorF("... %s(0x%04X) returns 0x%08X\n", "inl", a, l);
-
- return(l);
-}
-
-#endif /* PPCIO_DEBUG */
-
-/*
- * This is neccessary on the PPC 604 (and 604e) because they have
- * separate I and D caches and the caches must be manually synchronized
- * when applying relocation to the instruction portion of loaded modules.
- */
-#define LINESIZE 32
-#define CACHE_LINE(a) (((unsigned long)a) & ~(LINESIZE-1))
-
-void
-ppc_flush_icache(char *addr)
-{
- /* Flush D-cache to memory */
- __inst_dcbf (addr, 0);
- __inst_dcbf (addr, LINESIZE);
- __inst_sync ();
-
- /* Invalidate I-cache */
- __inst_icbi (addr, 0);
- __inst_icbi (addr, LINESIZE);
- __inst_sync ();
- __inst_isync ();
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/Imakefile
deleted file mode 100644
index 0c8e07b37..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/Imakefile
+++ /dev/null
@@ -1,37 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/qnx4/Imakefile,v 1.7 2002/10/11 01:47:00 dawes Exp $
-
-#include <Server.tmpl>
-
-
-SRCS = qnx_io.c qnx_init.c qnx_utils.c ioperm_noop.c qnx_video.c \
- qnx_VTsw.c qnx_kbd.c posix_tty.c qnx_mouse.c qnx_select.c \
- libc_wrapper.c stdResource.c stdPci.c sigiostubs.c pm_noop.c \
- kmod_noop.c agp_noop.c
-
-OBJS = qnx_io.o qnx_init.o qnx_utils.o ioperm_noop.o qnx_video.o \
- qnx_VTsw.o qnx_kbd.o posix_tty.o qnx_mouse.o qnx_select.o \
- libc_wrapper.o stdResource.o stdPci.o sigiostubs.o pm_noop.o \
- kmod_noop.o agp_noop.o
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC)
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(RESDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(ioperm_noop.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(sigiostubs.c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(agp_noop.c,../shared)
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_VTsw.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_VTsw.c
deleted file mode 100644
index 7902b5597..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_VTsw.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * (c) Copyright 1998 by Sebastien Marineau
- * <sebastien@qnx.com>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Sebastien Marineau shall not
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/qnx/qnx_VTsw.c,v 1.1.2.2 1999/07/23 13:42:32 hohndel Exp $
- */
-
-/* This module contains the code to use _select_receive to handle
- * messages from the Mouse and Input driver. These cannot be select'ed on.
- */
-
-/* This module contains the functions which are used to do
- * VT switching to a text console and back... Experimental.
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include <sys/console.h>
-
-int QNX_console_exist[10];
-Bool QNX_vtswitch_pending = FALSE;
-int QNX_con_toactivate = -1;
-extern struct _console_ctrl *QNX_con_ctrl;
-extern unsigned QNX_con_mask, QNX_con_bits;
-extern pid_t QNX_console_proxy;
-extern int QNX_our_console;
-
-/* This gets called to determine if a VT switch has been requested */
-Bool xf86VTSwitchPending()
-{
- return(xf86Info.vtRequestsPending ? TRUE : FALSE);
-}
-
-/* This is called to do OS-specific stuff when we switch away from
- * our console.
- */
-Bool xf86VTSwitchAway()
-{
- int ret;
- unsigned event, bits;
-
- ErrorF("Called VT switch away!\n");
-
- /* First check wether we are trying to switch to our console... */
- if (xf86Info.vtRequestsPending == QNX_our_console) {
- xf86Info.vtRequestsPending = FALSE;
- return (FALSE);
- }
-
- /* Reenable console switching */
- QNX_con_bits &= ~QNX_con_mask;
- bits = console_ctrl(QNX_con_ctrl, -1, QNX_con_bits, QNX_con_mask);
- QNX_con_mask = 0;
-
- /* And activate the new console. Check if it is valid first... */
- ret = console_active(QNX_con_ctrl, xf86Info.vtRequestsPending);
- ErrorF("xf86VTSwitchAway: Made console %d active, ret %d\n",
- xf86Info.vtRequestsPending, ret);
- xf86Info.vtRequestsPending = FALSE;
-
- if (ret == -1) {
- QNX_con_mask = CONSOLE_INVISIBLE | CONSOLE_NOSWITCH;
- QNX_con_bits = console_ctrl (QNX_con_ctrl,
- QNX_our_console, QNX_con_mask, QNX_con_mask);
- return (FALSE);
- }
- /* Arm the console with the proxy so we know when we come back */
- console_state(QNX_con_ctrl, QNX_our_console, 0L, _CON_EVENT_ACTIVE);
- event = _CON_EVENT_ACTIVE;
- console_arm (QNX_con_ctrl, QNX_our_console, QNX_console_proxy, event);
-
- return(TRUE);
-}
-
-/* And this is called when we are switching back to the server */
-Bool xf86VTSwitchTo()
-{
- unsigned bits, mask;
-
- ErrorF("Called VT switch to the server!\n");
- QNX_con_mask = CONSOLE_INVISIBLE | CONSOLE_NOSWITCH;
- QNX_con_bits = console_ctrl (QNX_con_ctrl, QNX_our_console, QNX_con_mask, QNX_con_mask);
- xf86Info.vtRequestsPending = FALSE;
- return(TRUE);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_init.c
deleted file mode 100644
index b96cc4d30..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_init.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * (c) Copyright 1998 by Sebastien Marineau
- * <sebastien@qnx.com>
- *
- * 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
- * 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 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
- * SEBASTIEN MARINEAU 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 Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/qnx/qnx_init.c,v 1.1.2.2 1999/07/23 13:42:33 hohndel Exp $
- */
-
-/* This module contains the qnx-specific functions used at server init.
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <i86.h>
-#include <sys/mman.h>
-#include <sys/console.h>
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-struct _console_ctrl *QNX_con_ctrl = NULL;
-unsigned long QNX_con_mask = 0;
-unsigned long QNX_con_bits = 0;
-pid_t QNX_console_proxy = -1;
-int QNX_our_console = -1;
-
-void
-xf86UseMsg()
-{
- ErrorF("No QNX-specific usage options available at this time\n");
- return;
-}
-
-int
-xf86ProcessArgument(argc, argv, i)
-int argc;
-char **argv;
-int i;
-{
-
- return 0;
-
-}
-
-
-void
-xf86OpenConsole()
-{
-struct _console_info info;
-unsigned event;
-int default_console = FALSE;
-char con_name[32];
-int active;
-
- ErrorF("xf86OpenConsole\n");
-
- if(QNX_con_ctrl == NULL) {
- /* First open a channel to default stdout */
- xf86Info.consoleFd = fileno(stdout);
- if((QNX_con_ctrl = console_open (fileno(stdout), O_RDWR)) == NULL){
- /* Hmmm. Didn't work. Try to open con1 as default */
-
- if (( xf86Info.consoleFd = open("/dev/con1", O_RDWR)) < 0){
- FatalError("xf86OpenConsole: could not open console driver\n");
- return;
- }
- if((QNX_con_ctrl =
- console_open (xf86Info.consoleFd, O_RDWR)) == NULL){
- FatalError("xf86OpenConsole: could not open console\n");
- }
- default_console = TRUE;
- }
- if(QNX_con_ctrl && console_info(QNX_con_ctrl, 0, &info) == 0 ) {
- if( info.type != _CON_TYPE_STANDARD ) {
- FatalError("xf86OpenConsole: console is not a standard text console\n");
- return;
- }
- }
- else {
- FatalError("xf86OpenConsole: Error querying console\n");
- return;
- }
- }
-
- /* We have a console, and it is text. Keep going */
- /* Next, check if Photon has got the screen */
- if(qnx_name_locate(0, "/qnx/crt", 0, NULL) != -1) {
- FatalError("xf86OpenConsole: Photon has already grabbed the display\n");
- return;
- }
- fclose (stdout);
- /* We have two cases here: either this is the first time through,
- * and QNX_our_console is not set yet, or we're coming here from
- * a reset. In that case, make sure our console is now active
- * before we go further...
- */
- if (QNX_our_console < 0) {
- QNX_our_console = console_active(QNX_con_ctrl, -1);
- }
- else {
- console_arm(QNX_con_ctrl, QNX_our_console, -1, _CON_EVENT_ACTIVE);
- while ((active = console_active(QNX_con_ctrl, -1)) !=
- QNX_our_console) {
- sleep(2);
- ErrorF("Waiting for our console to become active!\n");
- }
- }
- QNX_con_mask = CONSOLE_INVISIBLE | CONSOLE_NOSWITCH;
- QNX_con_bits = console_ctrl (QNX_con_ctrl, QNX_our_console,
- QNX_con_mask, QNX_con_mask);
- ErrorF("xf86OpenConsole: Locked console %d\n", QNX_our_console);
-
- /* If we had the wrong console opened in the first place, reopen */
- if(default_console) {
- close(xf86Info.consoleFd);
- sprintf(con_name, "/dev/con%d", QNX_our_console);
- xf86Info.consoleFd = open(con_name, O_RDWR);
- ErrorF("xf86OpenConsole: reopened console %d\n", QNX_our_console);
- }
-
- /* Next create the proxy used to notify us of console events */
- if(QNX_console_proxy == -1){
- if((QNX_console_proxy = qnx_proxy_attach(0, 0, 0, -1)) == -1){
- ErrorF("xf86OpenConsole: Could not create proxy for VT switching\n");
- }
- }
-
- return;
-}
-
-void
-xf86CloseConsole()
-{
- unsigned bits;
- int font;
-
- ErrorF("xf86CloseConsole\n");
- if(QNX_con_ctrl == NULL) return;
- QNX_con_bits &= ~QNX_con_mask; /* To make sure */
- bits = console_ctrl(QNX_con_ctrl, 0, QNX_con_bits, QNX_con_mask);
-
- ErrorF("xf86CloseConsole: unlocked console\n");
- /* For now, dump malloc info as well */
-#if 0
- malloc_dump(2);
-#endif
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_io.c
deleted file mode 100644
index d1cf5c4bf..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_io.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * (c) Copyright 1998 by Sebastien Marineau
- * <sebastien@qnx.com>
- *
- * 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
- * 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 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
- * SEBASTIEN MARINEAU 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 Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_io.c,v 1.2 2002/10/11 01:40:36 dawes Exp $
- */
-
-/* This module contains the qnx-specific functions to access the keyboard
- * and the console.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <i86.h>
-#include <sys/mman.h>
-#include <sys/qioctl.h>
-#include <errno.h>
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-
-void
-xf86SoundKbdBell(loudness, pitch, duration)
-int loudness, pitch, duration;
-{
-
-/* Come back and fix! */
-ErrorF("xf86SoundKbdBell: to implement\n");
-}
-
-void
-xf86SetKbdLeds(leds)
-int leds;
-{
-unsigned long bits[2], oldbits;
-
- bits[0] = leds;
- bits[1] = LED_CAP | LED_NUM | LED_SCR;
-
- if (qnx_ioctl (xf86Info.consoleFd, QCTL_DEV_CTL, &bits, 8, &oldbits, 4) == -1)
- ErrorF("xf86SetKbdLeds: error setting kbd leds, errno %d\n", errno);
-
-}
-
-int
-xf86GetKbdLeds()
-{
-unsigned long bits[2], oldbits = 0;
-
- bits[0] = bits[1] = 0;
- if (qnx_ioctl(xf86Info.consoleFd, QCTL_DEV_CTL, &bits, 8, &oldbits, 4) == -1)
- ErrorF("xf86SetKbdLeds: error getting kbd leds, errno %d\n", errno);
-
- return(oldbits);
-}
-
-/* This is a no-op for now */
-void
-xf86SetKbdRepeat(rad)
-char rad;
-{
- return;
-}
-
-
-/* This is a no-op for now */
-void
-xf86KbdInit()
-{
-
- return;
-}
-
-#include "xf86OSKbd.h"
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_kbd.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_kbd.c
deleted file mode 100644
index 88a7209cd..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_kbd.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * (c) Copyright 1998 by Sebastien Marineau
- * <sebastien@qnx.com>
- *
- * 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
- * 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 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
- * SEBASTIEN MARINEAU 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 Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/qnx/qnx_kbd.c,v 1.1.2.2 1999/07/23 13:42:35 hohndel Exp $
- */
-
-/* This module contains the qnx-specific functions to access the keyboard
- * and the console.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <i86.h>
-#include <sys/mman.h>
-#include <sys/dev.h>
-#include <errno.h>
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-
-int QNX_kbd_fd = -1;
-pid_t QNX_kbd_proxy = -1;
-
-int
-xf86KbdOn()
-{
-
- if(QNX_kbd_fd == -1)
- QNX_kbd_fd = open("/dev/kbd", O_RDWR);
- if(QNX_kbd_proxy == -1)
- QNX_kbd_proxy = qnx_proxy_attach(0, 0, 0, -1);
- if (QNX_kbd_fd == -1) {
- FatalError("xf86KbdOn: Could not open keyboard, errno = %d\n", errno);
- }
- if (QNX_kbd_proxy == -1) {
- FatalError("xf86KbdOn: Could not create kbd proxy, errno = %d\n", errno);
- }
- if(xf86Verbose)
- ErrorF("xf86KbdOn: fd = %d, proxy = %d\n", QNX_kbd_fd, QNX_kbd_proxy);
- if (dev_arm(QNX_kbd_fd, QNX_kbd_proxy, _DEV_EVENT_RXRDY) == -1)
- FatalError("xf86KbdOn: could not arm kbd proxy, errno %d\n", errno);
- return(-1); /* We don't want to select on kbd handle... */
-
-
-}
-
-int
-xf86KbdOff()
-{
- int fd;
-
- ErrorF("xf86KbdOff:\n ");
- fd = QNX_kbd_fd;
- close(QNX_kbd_fd);
- QNX_kbd_fd = -1;
- return(-1);
-}
-
-void xf86KbdEvents()
-{
- unsigned char rBuf[64];
- int nBytes, i;
-
- if ((nBytes = dev_read( QNX_kbd_fd, (char *)rBuf, sizeof(rBuf),
- 0, 0, 0, 0, NULL)) > 0) {
- for (i = 0; i < nBytes; i++)
- xf86PostKbdEvent(rBuf[i]);
- /* Re-arm proxy */
- dev_arm(QNX_kbd_fd, QNX_kbd_proxy, _DEV_EVENT_RXRDY);
-
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_mouse.c
deleted file mode 100644
index ec45a30be..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_mouse.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * (c) Copyright 1998 by Sebastien Marineau
- * <sebastien@qnx.com>
- *
- * 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
- * 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 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
- * SEBASTIEN MARINEAU 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 Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_mouse.c,v 1.4 2002/01/07 20:38:29 dawes Exp $
- */
-
-/* This module contains the qnx-specific functions to access the keyboard
- * and the console.
- */
-
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <i86.h>
-#include <sys/mman.h>
-#include <sys/dev.h>
-#include <sys/mouse.h>
-#include <sys/proxy.h>
-#include <errno.h>
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-
-extern int miPointerGetMotionEvents(
- DeviceIntPtr /*pPtr*/,
- xTimecoord * /*coords*/,
- unsigned long /*start*/,
- unsigned long /*stop*/,
- ScreenPtr /*pScreen*/
-);
-
-struct _mouse_ctrl *QNX_mouse = NULL;
-pid_t QNX_mouse_proxy = -1;
-Bool QNX_mouse_event = FALSE;
-
-/* the following function is converted from old void xf86OsMouseEvents() */
-static void
-OsMouseReadInput(InputInfoPtr pInfo)
-{
- struct mouse_event events[16];
- int i, nEvents;
- int buttons, col, row;
- int armed = 0;
- MouseDevPtr pMse;
-
- pMse = pInfo->private;
-
- while ((nEvents = mouse_read(QNX_mouse, &events,
- 16, QNX_mouse_proxy, &armed) ) > 0) {
- /* ErrorF("Got mouse event, #%d!\n", nEvents);*/
-
- for (i = 0; i < nEvents; i ++){
- col = events[i].dx;
- row = -events[i].dy;
- buttons = events[i].buttons;
- pMse->PostEvent(pInfo, buttons, col, row, 0, 0);
- }
- }
- if (!armed) ErrorF("Drained mouse queue, armed = 0??\n");
- QNX_mouse_event = FALSE;
-}
-
-/* The main mouse setup proc */
-static int
-OsMouseProc(pPointer, what)
-DeviceIntPtr pPointer;
-int what;
-{
- int i, ret, armed;
- int nbuttons;
- unsigned char *map;
- struct mouse_event mevent;
- MouseDevPtr pMse;
- InputInfoPtr pInfo;
-
- pInfo = pPointer->public.devicePrivate;
- pMse = pInfo->private;
- pMse->device = pPointer;
-
- switch (what) {
- case DEVICE_INIT:
- pPointer->public.on = FALSE;
- if (QNX_mouse_proxy == -1) {
- if((QNX_mouse_proxy =
- qnx_proxy_attach(0, 0, 0, -1)) == -1){
- FatalError("xf86MouseOn: Could not create mouse proxy; %s\n",
- strerror(errno));
- }
- }
- if (QNX_mouse == NULL) QNX_mouse =
- mouse_open(0, NULL, xf86Info.consoleFd);
- if (QNX_mouse == NULL) {
- if (xf86AllowMouseOpenFail) {
- ErrorF("Cannot open mouse (%s) - Continuing...\n",
- strerror(errno));
- return(-1);
- }
- FatalError("Cannot open mouse (%s)\n", strerror(errno));
- }
- /* Ok, so we have opened the channel to the mouse driver */
- ErrorF("Opened mouse: handle %d buttons\n", QNX_mouse->handle,
- QNX_mouse->buttons);
- pInfo->fd = QNX_mouse->fd;
- mouse_flush(QNX_mouse);
- QNX_mouse_event = FALSE;
- /* How de we determine how many buttons we have?? */
- nbuttons = 3;
- map = (unsigned char *) xalloc(nbuttons + 1);
- if (map == (unsigned char *) NULL)
- FatalError("Failed to allocate memory for mouse structures\n");
- for(i=0;i <= nbuttons; i++)
- map[i] = i;
- InitPointerDeviceStruct ((DevicePtr) pPointer, map, nbuttons,
- miPointerGetMotionEvents, pMse->Ctrl,
- miPointerGetMotionBufferSize());
-
- /* X valuator */
- xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 0);
- /* Y valuator */
- xf86InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 1);
- xf86MotionHistoryAllocate(pInfo);
-
- xfree(map);
- break;
-
- case DEVICE_ON:
- if(QNX_mouse == NULL) return(-1);
- pMse->lastButtons = 0;
- pMse->lastMappedButtons = 0;
- pMse->emulateState = 0;
- pPointer->public.on = TRUE;
- mouse_flush(QNX_mouse);
- /* AddEnabledDevice(pInfo->fd); */
- ret = mouse_read(QNX_mouse, &mevent, 0,
- QNX_mouse_proxy, NULL);
- ErrorF("MouseOn: armed proxy, %d, proxy pid %d\n", ret,
- QNX_mouse_proxy);
- if (ret < 0) {
- FatalError("xf86MouseOn: could not arm proxy; %s\n",
- strerror(errno));
- }
- break;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- if(QNX_mouse == NULL) return(-1);
- pPointer->public.on = FALSE;
- if (what == DEVICE_CLOSE){
- mouse_close (QNX_mouse);
- QNX_mouse = NULL;
- }
- pPointer->public.on = FALSE;
- break;
- }
- return (Success);
-}
-
-static int
-SupportedInterfaces(void)
-{
- /* XXX Need to check this. */
- return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_MISC | MSE_AUTO;
-}
-
-static const char *internalNames[] = {
- "OSMouse",
- NULL
-};
-
-static const char **
-BuiltinNames(void)
-{
- return internalNames;
-}
-
-static Bool
-CheckProtocol(const char *protocol)
-{
- int i;
-
- for (i = 0; internalNames[i]; i++)
- if (xf86NameCmp(protocol, internalNames[i]) == 0)
- return TRUE;
- return FALSE;
-}
-
-/* XXX Is this appropriate? If not, this function should be removed. */
-static const char *
-DefaultProtocol(void)
-{
- return "OSMouse";
-}
-
-static Bool
-OsMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- MouseDevPtr pMse;
-
- /* This is called when the protocol is "OSMouse". */
-
- pMse = pInfo->private;
- pMse->protocol = protocol;
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
-
- /* Collect the options, and process the common options. */
- xf86CollectInputOptions(pInfo, NULL, NULL);
- xf86ProcessCommonOptions(pInfo, pInfo->options);
-
- /* Process common mouse options (like Emulate3Buttons, etc). */
- pMse->CommonOptions(pInfo);
-
- /* Setup the local procs. */
- pInfo->device_control = OsMouseProc;
- pInfo->read_input = OsMouseReadInput;
-
- pInfo->flags |= XI86_CONFIGURED;
- return TRUE;
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
- p->SupportedInterfaces = SupportedInterfaces;
- p->BuiltinNames = BuiltinNames;
- p->DefaultProtocol = DefaultProtocol;
- p->CheckProtocol = CheckProtocol;
- p->PreInit = OsMousePreInit;
- return p;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_select.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_select.c
deleted file mode 100644
index 82359fe40..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_select.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * (c) Copyright 1998 by Sebastien Marineau
- * <sebastien@qnx.com>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/qnx/qnx_select.c,v 1.1.2.2 1999/07/23 13:42:37 hohndel Exp $
- */
-
-/* This module contains the code to use _select_receive to handle
- * messages from the Mouse and Input driver. These cannot be select'ed on.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#define FD_SETSIZE 256
-#include <sys/select.h>
-#include <sys/kernel.h>
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-extern pid_t QNX_mouse_proxy;
-extern Bool QNX_mouse_event;
-extern pid_t QNX_console_proxy;
-
-pid_t _select_receive ( pid_t proxy)
-{
-
- pid_t pid;
- char msg[16];
-
- pid = Receive(0, msg, sizeof(msg));
-/* ErrorF("Received message from pid %d %d. Mouse pid %d\n", pid, proxy,
- QNX_mouse_proxy);
-*/
- if (pid == QNX_mouse_proxy) return (-1);
- if (pid == QNX_console_proxy) {
- ErrorF("VT swicth requested by proxy to select()\n");
- xf86Info.vtRequestsPending = TRUE;
- return(-1);
- }
-
- /* For now; check exact semantics */
- return (proxy);
-}
-
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_utils.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_utils.c
deleted file mode 100644
index f78c0453e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_utils.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* This includes various utility functions which are missing otherwise
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/qnx/qnx_utils.c,v 1.1.2.2 1999/07/23 13:42:39 hohndel Exp $
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <limits.h>
-#include <string.h>
-#include <i86.h>
-#include <conio.h>
-#include <time.h>
-
-#include <X11/X.h>
-#include <xf86.h>
-
-void usleep (unsigned long interval) { delay( interval/1000 ); }
-
-/* We have our own version of GetTimeInMillis, because the normal
- * version calls gettimeofday(), which seems to thrash ES...
- */
-CARD32
-GetTimeInMillis()
-{
-struct timespec tp;
-
- qnx_getclock(0, CLOCK_REALTIME, &tp);
- return((tp.tv_sec * 1000) + (tp.tv_nsec / 1000000));
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_video.c
deleted file mode 100644
index 578d33ea0..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_video.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * (c) Copyright 1998 by Sebastien Marineau
- * <sebastien@qnx.com>
- *
- * 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
- * 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 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
- * SEBASTIEN MARINEAU 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 Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_video.c,v 1.3tsi Exp $
- */
-
-/* This module contains the qnx-specific functions to deal with video
- * framebuffer access and interrupts.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <i86.h>
-#include <sys/mman.h>
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-
-/* These are the interrupt enabling/disabling functions. Simply call
- * the Watcom equivalents.
- */
-
-void xf86EnableInterrupts()
-{
- _enable();
-}
-
-void xf86DisableInterrupts()
-{
- xf86ErrorF("Disable interrupts: not yet...\n");
- /* _disable(); */
-}
-
-/* These are the routines to map/unmap video memory... */
-
-Bool xf86LinearVidMem()
-{
- /* Yes we can... */
- xf86ErrorF("xf86LinearMem: called\n");
- return(TRUE);
-}
-
-/* This is our shmem "Physical" handle */
-int QNX_PhMem_fd = -1;
-
-
-/* Map a chunk of physical video memory, using mmap */
-
-pointer xf86MapVidMem(ScreenNum, Flags, Base, Size)
-int ScreenNum;
-int Flags;
-unsigned long Base;
-unsigned long Size;
-{
-int fd;
-void *base;
- xf86ErrorF("xf86MapVidMem called\n");
- if(QNX_PhMem_fd < 0) {
- if ((fd = shm_open("Physical", O_RDWR, 0777)) < 0) {
- FatalError("xf86MapVidMem: Failed to open /dev/shmem\n");
- }
- QNX_PhMem_fd = fd;
- }
- base = mmap((caddr_t)0, Size,
- (Flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_SHARED, QNX_PhMem_fd, (off_t)Base);
- xf86ErrorF("MapVidMem: addr %08x size %08x addr %08x\n", Base,
- Size, base);
- if ((long)base == -1)
- {
- FatalError("xf86MapVidMem: Failed to mmap video memory\n");
- }
- return(base);
-
-}
-
-void xf86UnMapVidMem(ScreenNum, Base, Size)
-int ScreenNum;
-pointer Base;
-unsigned long Size;
-{
-
- xf86ErrorF("xf86UnmapVidMem called\n");
- munmap((caddr_t) Base, Size);
-
-}
-
-/* Finally, this function allows us to read the video BIOS content */
-
-int
-xf86ReadBIOS(Base, Offset, Buf, Len)
-unsigned long Base, Offset;
-unsigned char *Buf;
-int Len;
-{
- unsigned char * VirtBase;
-
- xf86ErrorF("xf86ReadBIOS called\n");
- if (QNX_PhMem_fd == -1)
- {
- if ((QNX_PhMem_fd = shm_open("Physical", O_RDWR, 0777)) < 0)
- {
- FatalError("xf86ReadBIOS: cannot open Physical memory\n");
- }
- }
-
- /* Use mmap to map BIOS region. Note the restrictions on
- * mmap alignement of offset variable (which must be on a page
- * boundary).
- */
- VirtBase = (unsigned char *) mmap(0, (size_t)((Offset & 0x7fff) + Len), PROT_READ,
- MAP_SHARED, QNX_PhMem_fd,
- (off_t) (Base + (Offset & 0xffff8000)));
- if((long)VirtBase == -1) {
- FatalError(
- "xf86ReadBIOS: Could not mmap BIOS memory space, errno=%i\n",
- errno);
- }
-
- /* So now we have our mapping to the BIOS region */
- /* Do a sanity check on what we have just mapped */
- if (((off_t)((off_t)Offset & 0x7FFF) != (off_t)0) &&
- (VirtBase[0] != 0x55) &&
- (VirtBase[1] != 0xaa)) {
- xf86ErrorF(
- "xf86ReadBIOS: BIOS sanity check failed, addr=%x\n",
- (int)Base + Offset);
- munmap(VirtBase, (Offset & 0x7fff) + Len);
- return(-1);
- }
-
- /* Things look good: copy BIOS data */
- memcpy(Buf, VirtBase + (Offset & 0x7fff), Len);
- munmap(VirtBase, (Offset & 0x7fff) + Len);
- return(Len);
-
-}
-
-void
-xf86MapReadSideEffects(int ScreenNum, int Flags, pointer Base,
- unsigned long Size)
-{
- return;
-}
-
-Bool
-xf86CheckMTRR(int s)
-{
- return FALSE;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/Imakefile
deleted file mode 100644
index 35502389a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/Imakefile
+++ /dev/null
@@ -1,56 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sco/Imakefile,v 3.15 2002/10/17 02:22:49 dawes Exp $
-
-
-
-
-XCOMM $XConsortium: Imakefile /main/4 1996/09/28 17:24:25 rws $
-
-#include <Server.tmpl>
-
-SRCS = sco_init.c sco_video.c sco_io.c sco_iop.c sco_mouse.c VTsw_sco.c \
- std_kbdEv.c posix_tty.c bios_mmap.c vidmem.c \
- libc_wrapper.c stdResource.c stdPci.c sigiostubs.c pm_noop.c \
- kmod_noop.c agp_noop.c sco_kbd.c at_scancode.c sco_KbdMap.c
-
-OBJS = sco_init.o sco_video.o sco_io.o sco_iop.o sco_mouse.o VTsw_sco.o \
- std_kbdEv.o posix_tty.o bios_mmap.o vidmem.o \
- libc_wrapper.o stdResource.o stdPci.o sigiostubs.o pm_noop.o \
- kmod_noop.o agp_noop.o sco_kbd.o at_scancode.o sco_KbdMap.o \
- sco_event.o
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(SERVERSRC)/mi -I$(XINCLUDESRC) -I$(EXTINCSRC)
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(RESDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-XCOMM Hack for SCO platforms to get around a bug in GNU ld. The server needs
-XCOMM to link with -levent for the event driver interface. However, that is
-XCOMM a COFF-only library, and GCC/GNU ld only deal with ELF. Theoretically,
-XCOMM GNU ld will convert COFF to ELF on the fly, but it gets it wrong. The
-XCOMM SCO link editor gets it right. So we create an object here that the
-XCOMM server can link against.
-sco_event.o:
- @ar x /usr/lib/libevent.a mouse.o
- @/usr/ccs/bin/elf/ld -r -o sco_event.o mouse.o
- @rm -f mouse.o
-
-LinkSourceFile(bios_mmap.c,../shared)
-LinkSourceFile(std_kbdEv.c,../shared)
-LinkSourceFile(at_scancode.c,../shared)
-LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(sigiostubs.c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(agp_noop.c,../shared)
-LinkSourceFile(vidmem.c,../shared)
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/VTsw_sco.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/VTsw_sco.c
deleted file mode 100644
index beb86ccad..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/VTsw_sco.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sco/VTsw_sco.c,v 1.2 1998/07/25 16:56:57 dawes Exp $ */
-/*
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- * Copyright 1993 by David McCullough <davidm@stallion.oz.au>
- *
- * 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, and that the name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: VTsw_sco.c /main/2 1995/11/13 06:08:36 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/* For the event driver prototypes */
-#include <sys/event.h>
-#include <mouse.h>
-
-/*
- * Handle the VT-switching interface for SCO
- */
-
-/*
- * This function is the signal handler for the VT-switching signal. It
- * is only referenced inside the OS-support layer. NOTE: we do NOT need
- * to re-arm the signal here, since we used sigaction() to set the signal
- * disposition in sco_init.c. If we had used signal(), we would need to
- * re-arm the signal here. All we need to do now is record the fact that
- * we got the signal. XFree86 handles the rest.
- */
-void
-xf86VTRequest(int sig)
-{
- xf86Info.vtRequestsPending = TRUE;
- return;
-}
-
-Bool
-xf86VTSwitchPending(void)
-{
- return(xf86Info.vtRequestsPending ? TRUE : FALSE);
-}
-
-/*
- * When we switch away, we need to flush and suspend the event driver
- * before the VT_RELDISP. We also need to get the current LED status
- * and preserve it, so that we can restore it when we come back.
- */
-static int sco_ledstatus = -1;
-static unsigned int sco_ledstate = 0;
-
-Bool
-xf86VTSwitchAway(void)
-{
- ev_flush();
- ev_suspend();
-
- sco_ledstatus = ioctl(xf86Info.consoleFd, KDGETLED, &sco_ledstate);
-
- xf86Info.vtRequestsPending = FALSE;
- if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_TRUE) < 0) {
- return(FALSE);
- } else {
- return(TRUE);
- }
-}
-
-/*
- * When we come back to the X server, we need to resume the event driver,
- * and we need to restore the LED settings to what they were when we
- * switched away.
- */
-Bool
-xf86VTSwitchTo(void)
-{
- ev_resume();
-
- xf86Info.vtRequestsPending = FALSE;
- if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ) < 0) {
- return(FALSE);
- } else {
- if (sco_ledstatus >= 0) {
- ioctl (xf86Info.consoleFd, KDSETLED, sco_ledstate);
- }
- sco_ledstatus = -1;
-
- /*
- * Convince the console driver this screen is in graphics mode,
- * otherwise it assumes it can do more to the screen than it should.
- */
- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0) {
- ErrorF("Failed to set graphics mode (%s)\n", strerror(errno));
- }
-
- return TRUE;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_KbdMap.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_KbdMap.c
deleted file mode 100644
index 6a0e9de04..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_KbdMap.c
+++ /dev/null
@@ -1,304 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2005 by J. Kean Johnston <jkj@sco.com>
- *
- * 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, and that the name J. Kean Johnston not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. J. Kean Johnston makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
- * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * Based on xf86KbdMap.c, which is
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- * Copyright (c) 1992-2003 by The XFree86 Project, Inc.
- */
-
-#include "X.h"
-#include "Xmd.h"
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Xinput.h"
-#include "xf86OSKbd.h"
-#include "atKeynames.h"
-#include "xf86Keymap.h"
-
-#include "sco_kbd.h"
-
-#define KD_GET_ENTRY(i,n) \
- eascii_to_x[((priv->keymap.key[i].spcl << (n+1)) & 0x100) + priv->keymap.key[i].map[n]]
-
-/*
- * NOTE: Not all possible remappable symbols are remapped. There are two main
- * reasons:
- * a) The mapping between scancode and SYSV/386 - symboltable
- * is inconsistent between different versions and has some
- * BIG mistakes.
- * b) In X-Windows there is a difference between numpad-keys
- * and normal keys. SYSV/386 uses for both kinds of keys
- * the same symbol.
- *
- * Thus only the alpha keypad and the function keys are translated.
- * Also CapsLock, NumLock, ScrollLock, Shift, Control & Alt.
- */
-
-static unsigned char remap[128] = {
- 0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00 - 0x07 */
- 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08 - 0x0f */
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10 - 0x17 */
- 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18 - 0x1f */
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20 - 0x27 */
- 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28 - 0x2f */
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0, /* 0x30 - 0x37 */
- 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38 - 0x3f */
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0, /* 0x40 - 0x47 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x48 - 0x4f */
- 0, 0, 0, 0, 0, 0, 0x56, 0x57, /* 0x50 - 0x57 */
- 0x58, 0, 0, 0, 0, 0, 0, 0, /* 0x58 - 0x5f */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 - 0x67 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x68 - 0x6f */
- 0, 0, 0x69, 0x65, 0, 0, 0, 0, /* 0x70 - 0x77 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x78 - 0x7f */
-};
-
-static KeySym eascii_to_x[512] = {
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
- NoSymbol, XK_Return, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_Escape,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
- XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
- XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
- XK_comma, XK_minus, XK_period, XK_slash,
- XK_0, XK_1, XK_2, XK_3,
- XK_4, XK_5, XK_6, XK_7,
- XK_8, XK_9, XK_colon, XK_semicolon,
- XK_less, XK_equal, XK_greater, XK_question,
- XK_at, XK_A, XK_B, XK_C,
- XK_D, XK_E, XK_F, XK_G,
- XK_H, XK_I, XK_J, XK_K,
- XK_L, XK_M, XK_N, XK_O,
- XK_P, XK_Q, XK_R, XK_S,
- XK_T, XK_U, XK_V, XK_W,
- XK_X, XK_Y, XK_Z, XK_bracketleft,
- XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
- XK_grave, XK_a, XK_b, XK_c,
- XK_d, XK_e, XK_f, XK_g,
- XK_h, XK_i, XK_j, XK_k,
- XK_l, XK_m, XK_n, XK_o,
- XK_p, XK_q, XK_r, XK_s,
- XK_t, XK_u, XK_v, XK_w,
- XK_x, XK_y, XK_z, XK_braceleft,
- XK_bar, XK_braceright, XK_asciitilde, XK_Delete,
- XK_Ccedilla, XK_udiaeresis, XK_eacute, XK_acircumflex,
- XK_adiaeresis, XK_agrave, XK_aring, XK_ccedilla,
- XK_ecircumflex, XK_ediaeresis, XK_egrave, XK_idiaeresis,
- XK_icircumflex, XK_igrave, XK_Adiaeresis, XK_Aring,
- XK_Eacute, XK_ae, XK_AE, XK_ocircumflex,
- XK_odiaeresis, XK_ograve, XK_ucircumflex, XK_ugrave,
- XK_ydiaeresis, XK_Odiaeresis, XK_Udiaeresis, XK_cent,
- XK_sterling, XK_yen, XK_paragraph, XK_section,
- XK_aacute, XK_iacute, XK_oacute, XK_uacute,
- XK_ntilde, XK_Ntilde, XK_ordfeminine, XK_masculine,
- XK_questiondown,XK_hyphen, XK_notsign, XK_onehalf,
- XK_onequarter, XK_exclamdown, XK_guillemotleft,XK_guillemotright,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_Greek_alpha, XK_ssharp, XK_Greek_GAMMA, XK_Greek_pi,
- XK_Greek_SIGMA, XK_Greek_sigma, XK_mu, XK_Greek_tau,
- XK_Greek_PHI, XK_Greek_THETA, XK_Greek_OMEGA, XK_Greek_delta,
- XK_infinity, XK_Ooblique, XK_Greek_epsilon, XK_intersection,
- XK_identical, XK_plusminus, XK_greaterthanequal, XK_lessthanequal,
- XK_topintegral, XK_botintegral, XK_division, XK_similarequal,
- XK_degree, NoSymbol, NoSymbol, XK_radical,
- XK_Greek_eta, XK_twosuperior, XK_periodcentered, NoSymbol,
-
- /*
- * special marked entries (256 + x)
- */
-
- NoSymbol, NoSymbol, XK_Shift_L, XK_Shift_R,
- XK_Caps_Lock, XK_Num_Lock, XK_Scroll_Lock, XK_Alt_L,
- NoSymbol, XK_Control_L, XK_Alt_L, XK_Alt_R,
- XK_Control_L, XK_Control_R, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_F1,
- XK_F2, XK_F3, XK_F4, XK_F5,
- XK_F6, XK_F7, XK_F8, XK_F9,
- XK_F10, XK_F11, XK_F12, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- };
-
-/*
- * KbdGetMapping --
- * Get the national keyboard mapping. The keyboard type is set, a new map
- * and the modifiermap is computed.
- */
-
-void
-KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- ScoKbdPrivPtr priv = (ScoKbdPrivPtr) pKbd->private;
- KeySym *k;
- int i;
- KeySym *pMap = map;
-
- for (i = 0; i < priv->keymap.n_keys && i < NUM_KEYCODES; i++) {
- if (remap[i]) {
- k = pMap + (remap[i] << 2);
-
- k[0] = KD_GET_ENTRY(i,0); /* non-shifed */
- k[1] = KD_GET_ENTRY(i,1); /* shifted */
- k[2] = KD_GET_ENTRY(i,4); /* alt */
- k[3] = KD_GET_ENTRY(i,5); /* alt - shifted */
-
- if (k[3] == k[2]) k[3] = NoSymbol;
- if (k[2] == k[1]) k[2] = NoSymbol;
- if (k[1] == k[0]) k[1] = NoSymbol;
- if (k[0] == k[2] && k[1] == k[3]) k[2] = k[3] = NoSymbol;
- }
- }
-
- /*
- * compute the modifier map
- */
- for (i = 0; i < MAP_LENGTH; i++)
- pModMap[i] = NoSymbol; /* make sure it is restored */
-
- for (k = pMap, i = MIN_KEYCODE;
- i < (NUM_KEYCODES + MIN_KEYCODE);
- i++, k += GLYPHS_PER_KEY) {
-
- switch(*k) {
- case XK_Shift_L:
- case XK_Shift_R:
- pModMap[i] = ShiftMask;
- break;
-
- case XK_Control_L:
- case XK_Control_R:
- pModMap[i] = ControlMask;
- break;
-
- case XK_Caps_Lock:
- pModMap[i] = LockMask;
- break;
-
- case XK_Alt_L:
- case XK_Alt_R:
- pModMap[i] = AltMask;
- break;
-
- case XK_Num_Lock:
- pModMap[i] = NumLockMask;
- break;
-
- case XK_Scroll_Lock:
- pModMap[i] = ScrollLockMask;
- break;
-
- /* kana support */
- case XK_Kana_Lock:
- case XK_Kana_Shift:
- pModMap[i] = KanaMask;
- break;
-
- /* alternate toggle for multinational support */
- case XK_Mode_switch:
- pModMap[i] = AltLangMask;
- break;
- }
- }
-
- pKeySyms->map = pMap;
- pKeySyms->mapWidth = GLYPHS_PER_KEY;
- pKeySyms->minKeyCode = MIN_KEYCODE;
- pKeySyms->maxKeyCode = MAX_KEYCODE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_init.c
deleted file mode 100644
index bc1f3b56d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_init.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sco/sco_init.c,v 3.13 2002/06/03 21:22:10 dawes Exp $ */
-/*
- * Copyright 2001-2005 by J. Kean Johnston <jkj@sco.com>
- *
- * 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, and that the name J. Kean Johnston not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. J. Kean Johnston makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
- * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XConsortium$ */
-
-/* Re-written May 2001 to represent the current state of reality */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-static Bool KeepTty = FALSE;
-static int VTnum = -1;
-static char vtdevice[48];
-static int sco_console_mode = -1;
-
-extern Bool mpxLock;
-
-void
-xf86OpenConsole(void)
-{
- int i, ioctl_ret;
- struct vt_mode VT;
- struct vid_info vidinf;
- struct sigaction sigvtsw;
- char *ttn;
-
- if (serverGeneration == 1) {
- /* check if we're run with euid==0 */
- if (geteuid() != 0) {
- FatalError("xf86OpenConsole: Server must be setuid root\n");
- }
-
- /* If we are run in the background we will get SIGTTOU. Ignore it. */
- OsSignal (SIGTTOU, SIG_IGN);
-
- /*
- * Set up the virtual terminal (multiscreen in SCO parlance).
- * For the actual console itself, screens are numbered from
- * 1 to (usually) 16. However, it is possible to have a nested
- * server, and it is also possible to be on a multi-console
- * system such as MaxSpeed or SunRiver. Therefore, we should
- * not make any assumptions about the TTY name we are on, and
- * instead we rely on ttyname() to give us the real TTY name.
- * Previously, we tried to determine the TTY name manually.
- * This is wrong. The only time we need to futz with the TTY name
- * is if we were given the name of a TTY to run on explicity on
- * the command line.
- */
-
- if (VTnum == -1) {
- /*
- * No device was specified. We need to query the kernel to see which
- * console device we are on (and in fact if we are on a console at all).
- */
- ttn = ttyname (1);
-
- if (ttn == (char *)0) {
- FatalError ("xf86OpenConsole: Could not determine TTY name: %s\n",
- strerror(errno));
- }
- strlcpy (vtdevice, ttn, sizeof(vtdevice));
- } else if (VTnum >= 0) {
- snprintf (vtdevice, sizeof(vtdevice), "/dev/tty%02d", VTnum);
- }
-
- /*
- * Now we can dispose of stdin/stdout
- */
- fclose (stdin);
- fclose (stdout);
-
- if ((xf86Info.consoleFd = open(vtdevice, O_RDWR | O_NDELAY, 0)) < 0) {
- FatalError("xf86OpenConsole: Cannot open %s: %s\n", vtdevice,
- strerror(errno));
- }
-
- /*
- * We make 100% sure we use the correct VT number. This can get ugly
- * where there are multi-consoles in use, so we make sure we query
- * the kernel for the correct VT number. It knows best, we don't.
- */
- vidinf.size = sizeof(vidinf);
- if (ioctl (xf86Info.consoleFd, CONS_GETINFO, &vidinf) < 0) {
- FatalError ("xf86OpenConsole: %s not a console device "
- "or error querying device: %s\n", vtdevice, strerror (errno));
- }
- xf86Info.vtno = vidinf.m_num;
- VTnum = vidinf.m_num + 1; /* 0-based */
-
- ErrorF("(using VT%02d device %s)\n\n", VTnum, vtdevice);
-
- /* We activate the console just in case its not the one we are on */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0) {
- ErrorF("xf86OpenConsole: VT_ACTIVATE failed (%s)\n", strerror(errno));
- }
-
- /* Disassociate from controling TTY */
- if (!KeepTty) {
- setpgrp();
- }
-
- /*
- * Now we get the current mode that the console device is in. We will
- * use this later when we close the console device to restore it to
- * that same mode.
- */
- if ((sco_console_mode = ioctl(xf86Info.consoleFd, CONS_GET, 0L)) < 0) {
- FatalError("xf86OpenConsole: CONS_GET failed on console (%s)\n",
- strerror(errno));
- }
-
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0) {
- FatalError("xf86OpenConsole: VT_GETMODE failed (%s)\n", strerror(errno));
- }
-
- sigvtsw.sa_handler = xf86VTRequest;
- sigfillset(&sigvtsw.sa_mask);
- sigvtsw.sa_flags = 0;
-
- /* NOTE: Using sigaction means we dont have to re-arm the signal */
- sigaction(SIGUSR1, &sigvtsw, NULL);
-
- VT.mode = VT_PROCESS;
- VT.relsig = SIGUSR1;
- VT.acqsig = SIGUSR1;
- VT.frsig = SIGINT; /* Not implemented */
- VT.waitv = 0;
-
- /*
- * The SCO X server tries the following call 5 times. Lets do the same
- * thing. It shouldn't really be required but sometimes things take a
- * while to settle down when switching screens. *helpless shrug* I know
- * its sucks but ...
- */
-
- ioctl_ret = 0;
- for (i = 0; i < 5; i++) {
- ioctl_ret = ioctl(xf86Info.consoleFd, VT_SETMODE, &VT);
- if (ioctl_ret >= 0)
- break;
- usleep(999999); /* Dont use nap() - it forces linking with -lx */
- }
-
- if (ioctl_ret < 0) {
- FatalError("xf86OpenConsole: VT_SETMODE failed (%s)\n", strerror(errno));
- }
-
- /*
- * Convince the console driver we are in graphics mode.
- */
- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0) {
- ErrorF("Failed to set graphics mode (%s)\n", strerror(errno));
- }
- } else { /* serverGeneration != 1 */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0) {
- ErrorF("xf86OpenConsole: VT_ACTIVATE failed (%s)\n", strerror(errno));
- }
- }
-}
-
-/*
- * Restore the console to its previous state. This may cause flicker if
- * the screen was previous in a graphics mode, because we first set it
- * to text mode. This has the advantage of getting the console driver
- * to do a soft reset on the card, which really does help settle the
- * video card down again after coming out of Xfree86.
- */
-void
-xf86CloseConsole(void)
-{
- struct vt_mode VT;
- struct sigaction sigvtsw;
-
- /* Set text mode (possibly briefly) */
- ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT0);
-
- /* Restore the original mode */
- if (sco_console_mode != -1) {
- ioctl(xf86Info.consoleFd, MODESWITCH | sco_console_mode, 0L);
- }
-
- ioctl(xf86Info.consoleFd, VT_RELDISP, 1); /* Release the display */
-
- sigvtsw.sa_handler = SIG_DFL;
- sigfillset(&sigvtsw.sa_mask);
- sigvtsw.sa_flags = 0;
-
- sigaction(SIGUSR1, &sigvtsw, NULL);
-
- VT.mode = VT_AUTO;
- VT.waitv = 0;
- VT.relsig = SIGUSR1;
- VT.acqsig = SIGUSR1;
- VT.frsig = SIGINT;
- ioctl(xf86Info.consoleFd, VT_SETMODE, &VT); /* Revert to auto handling */
-
- close(xf86Info.consoleFd); /* We're done with the device */
-}
-
-int
-xf86ProcessArgument(int argc, char *argv[], int i)
-{
- /*
- * Keep server from detaching from controlling tty. This is useful
- * when debugging (so the server can receive keyboard signals).
- */
- if (!strcmp(argv[i], "-keeptty")) {
- KeepTty = TRUE;
- return(1);
- }
-
- /*
- * By default, the X server wants to bind itself to CPU 0. This makes
- * sure that the server has full access to the I/O ports at IOPL 3.
- * Some SMP systems have trouble with I/O on CPU's other than 0. If,
- * however, you have a system that is well behaved, you can specify
- * this argument and let the scheduler decide which CPU the server
- * should run on.
- */
- if (!strcmp(argv[i], "-nompxlock")) {
- mpxLock = FALSE;
- return (1);
- }
-
- /*
- * Specify the VT number to run on (NOT the device).
- */
- if ((argv[i][0] == 'v') && (argv[i][1] == 't')) {
- if (sscanf(argv[i], "vt%2d", &VTnum) == 0) {
- UseMsg();
- VTnum = -1;
- return(0);
- }
- if (VTnum <= 0) {
- UseMsg();
- VTnum = -1;
- return(0);
- }
- return(1);
- }
-
- /*
- * Use a device the user specifies.
- */
- if (!strcmp(argv[i], "-crt")) {
- if (++i > argc) {
- UseMsg();
- VTnum = -1;
- return(0);
- } else {
- VTnum = -2;
- strlcpy (vtdevice, argv[i], sizeof(vtdevice));
- return(2);
- }
- }
- return(0);
-}
-
-void
-xf86UseMsg(void)
-{
- ErrorF("vtXX use the specified VT number\n");
- ErrorF("-crt DEVICE use the specified VT device\n");
- ErrorF("-nompxlock dont bind X server to CPU 0\n");
- ErrorF("-keeptty ");
- ErrorF("don't detach controlling tty (for debugging only)\n");
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_io.c
deleted file mode 100644
index c97916cf5..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_io.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sco/sco_io.c,v 3.9 2002/10/11 01:40:36 dawes Exp $ */
-/*
- * Copyright 2001 by J. Kean Johnston <jkj@sco.com>
- *
- * 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, and that the name J. Kean Johnston not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. J. Kean Johnston makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
- * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XConsortium$ */
-
-/* Re-written May 2001 to represent the current state of reality */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "compiler.h"
-
-#define _NEED_SYSI86
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86OSpriv.h"
-#include "xf86_OSlib.h"
-
-#include <sys/param.h>
-#include <sys/emap.h>
-#include <sys/nmap.h>
-
-void
-xf86SoundKbdBell(int loudness, int pitch, int duration)
-{
- if (loudness && pitch) {
- ioctl(xf86Info.consoleFd, KIOCSOUND, 1193180 / pitch);
- usleep(duration * loudness * 20);
- ioctl(xf86Info.consoleFd, KIOCSOUND, 0);
- }
-}
-
-void
-xf86SetKbdLeds(int leds)
-{
- /*
- * sleep the first time through under SCO. There appears to be a
- * timing problem in the driver which causes the keyboard to be lost.
- * This usleep stops it from occurring. NOTE: this was in the old code.
- * I am not convinced it is true any longer, but it doesn't hurt to
- * leave this in here.
- */
- static int once = 1;
-
- if (once) {
- usleep(100);
- once = 0;
- }
-
- ioctl(xf86Info.consoleFd, KDSETLED, leds );
-}
-
-int
-xf86GetKbdLeds(void)
-{
- int leds;
-
- ioctl (xf86Info.consoleFd, KDGETLED, &leds);
- return leds;
-}
-
-/*
- * Much of the code in this function is duplicated from the Linux code
- * by Orest Zborowski <obz@Kodak.com> and David Dawes <dawes@xfree86.org>.
- * Please see the file ../linux/lnx_io.c for full copyright information.
- *
- * NOTE: Only OpenServer Release 5.0.6 with Release Supplement 5.0.6A
- * and later have the required ioctl. 5.0.6A or higher is HIGHLY
- * recommended. The console driver is quite a different beast on that OS.
- */
-void
-xf86SetKbdRepeat(char rad)
-{
-#if defined(KBIO_SETRATE)
- int i;
- int value = 0x7f; /* Maximum delay with slowest rate */
- int delay = 250; /* Default delay */
- int rate = 300; /* Default repeat rate */
-
- static int valid_rates[] = { 300, 267, 240, 218, 200, 185, 171, 160, 150,
- 133, 120, 109, 100, 92, 86, 80, 75, 67,
- 60, 55, 50, 46, 43, 40, 37, 33, 30, 27,
- 25, 23, 21, 20 };
-#define RATE_COUNT (sizeof( valid_rates ) / sizeof( int ))
-
- static int valid_delays[] = { 250, 500, 750, 1000 };
-#define DELAY_COUNT (sizeof( valid_delays ) / sizeof( int ))
-
- if (xf86Info.kbdRate >= 0)
- rate = xf86Info.kbdRate * 10;
- if (xf86Info.kbdDelay >= 0)
- delay = xf86Info.kbdDelay;
-
- for (i = 0; i < RATE_COUNT; i++)
- if (rate >= valid_rates[i]) {
- value &= 0x60;
- value |= i;
- break;
- }
-
- for (i = 0; i < DELAY_COUNT; i++)
- if (delay <= valid_delays[i]) {
- value &= 0x1f;
- value |= i << 5;
- break;
- }
-
- ioctl (xf86Info.consoleFd, KBIO_SETRATE, value);
-#endif /* defined(KBIO_SETRATE) */
-}
-
-static Bool use_tcs = TRUE, use_kd = TRUE;
-static Bool no_nmap = TRUE, no_emap = TRUE;
-static int orig_getsc, orig_kbm;
-static struct termios orig_termios;
-static keymap_t keymap, noledmap;
-static uchar_t *sc_mapbuf;
-static uchar_t *sc_mapbuf2;
-
-void
-xf86KbdInit(void)
-{
- orig_getsc = 0;
- if (ioctl (xf86Info.consoleFd, TCGETSC, &orig_getsc) < 0)
- use_tcs = FALSE;
- if (ioctl (xf86Info.consoleFd, KDGKBMODE, &orig_kbm) < 0)
- use_kd = FALSE;
-
- if (!use_tcs && !use_kd)
- FatalError ("xf86KbdInit: Could not determine keyboard mode\n");
-
- /*
- * One day this should be fixed to translate normal ASCII characters
- * back into scancodes or into events that XFree86 wants, but not
- * now. For the time being, we only support scancode mode screens.
- */
- if (use_tcs && !(orig_getsc & KB_ISSCANCODE))
- FatalError ("xf86KbdInit: Keyboard can not send scancodes\n");
-
- /*
- * We need to get the original keyboard map and NUL out the lock
- * modifiers. This prevents the scancode API from messing with
- * the keyboard LED's. We restore the original map when we exit.
- */
- if (ioctl (xf86Info.consoleFd, GIO_KEYMAP, &keymap) < 0) {
- FatalError ("xf86KbdInit: Failed to get keyboard map (%s)\n",
- strerror(errno));
- }
- if (ioctl (xf86Info.consoleFd, GIO_KEYMAP, &noledmap) < 0) {
- FatalError ("xf86KbdInit: Failed to get keyboard map (%s)\n",
- strerror(errno));
- } else {
- int i, j;
-
- for (i = 0; i < noledmap.n_keys; i++) {
- for (j = 0; j < NUM_STATES; j++) {
- if (IS_SPECIAL(noledmap, i, j) &&
- ((noledmap.key[i].map[j] == K_CLK) ||
- (noledmap.key[i].map[j] == K_NLK) ||
- (noledmap.key[i].map[j] == K_SLK))) {
- noledmap.key[i].map[j] = K_NOP;
- }
- }
- }
- }
-
- if (ioctl (xf86Info.consoleFd, XCGETA, &orig_termios) < 0) {
- FatalError ("xf86KbdInit: Failed to get terminal modes (%s)\n",
- strerror(errno));
- }
-
- sc_mapbuf = xalloc (10*BSIZE);
- sc_mapbuf2 = xalloc(10*BSIZE);
-
- /* Get the emap */
- if (ioctl (xf86Info.consoleFd, LDGMAP, sc_mapbuf) < 0) {
- if (errno != ENAVAIL) {
- FatalError ("xf86KbdInit: Failed to retrieve e-map (%s)\n",
- strerror (errno));
- }
- no_emap = FALSE;
- }
-
- /* Get the nmap */
- if (ioctl (xf86Info.consoleFd, NMGMAP, sc_mapbuf2) < 0) {
- if (errno != ENAVAIL) {
- FatalError ("xf86KbdInit: Failed to retrieve n-map (%s)\n",
- strerror (errno));
- }
- no_nmap = FALSE;
- }
-}
-
-int
-xf86KbdOn(void)
-{
- struct termios newtio;
-
- ioctl (xf86Info.consoleFd, LDNMAP); /* Turn e-mapping off */
- ioctl (xf86Info.consoleFd, NMNMAP); /* Turn n-mapping off */
-
- newtio = orig_termios; /* structure copy */
- newtio.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- newtio.c_oflag = 0;
- newtio.c_cflag = CREAD | CS8 | B9600;
- newtio.c_lflag = 0;
- newtio.c_cc[VTIME]=0;
- newtio.c_cc[VMIN]=1;
- cfsetispeed(&newtio, 9600);
- cfsetospeed(&newtio, 9600);
- ioctl(xf86Info.consoleFd, XCSETA, &newtio);
-
- /* Now tell the keyboard driver to send us raw scancodes */
- if (use_tcs) {
- int nm = orig_getsc;
- nm &= ~KB_XSCANCODE;
- ioctl (xf86Info.consoleFd, TCSETSC, &nm);
- }
-
- if (use_kd)
- ioctl (xf86Info.consoleFd, KDSKBMODE, K_RAW);
-
- ioctl (xf86Info.consoleFd, PIO_KEYMAP, &noledmap);
-
- return(xf86Info.consoleFd);
-}
-
-int
-xf86KbdOff(void)
-{
- /* Revert back to original translate scancode mode */
- if (use_tcs)
- ioctl (xf86Info.consoleFd, TCSETSC, &orig_getsc);
- if (use_kd)
- ioctl (xf86Info.consoleFd, KDSKBMODE, orig_kbm);
-
- ioctl (xf86Info.consoleFd, PIO_KEYMAP, &keymap);
-
- if (no_emap)
- ioctl (xf86Info.consoleFd, LDSMAP, sc_mapbuf);
- if (no_nmap)
- ioctl (xf86Info.consoleFd, NMSMAP, sc_mapbuf2);
-
- ioctl(xf86Info.consoleFd, XCSETA, &orig_termios);
-
- return(xf86Info.consoleFd);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_iop.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_iop.c
deleted file mode 100644
index 35d48e04a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_iop.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2001 by J. Kean Johnston <jkj@caldera.com>
- *
- * 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, and that the name J. Kean Johnston not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. J. Kean Johnston makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
- * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XConsortium$ */
-
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "compiler.h"
-
-#define _NEED_SYSI86
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86OSpriv.h"
-#include "xf86_OSlib.h"
-
-
-/***************************************************************************/
-/* I/O Permissions section */
-/***************************************************************************/
-
-/*
- * There is a right way and a wrong way of doing this. Unfortunately, we
- * are forced to do it the wrong way. The right way is to be told the range
- * or ranges of I/O ports the driver(s) need access to, in order to use the
- * CONS_IOPERM ioctl() to grant access only to those ports we care about.
- * This way we can guarantee some small level of stability because a driver
- * does not have access to all ports (which would mean it could play with
- * the PIT and thus affect scheduling times, or a whole slew of other
- * nasty things). However, because XFree86 currently only enables or disables
- * ALL port access, we need to run at IOPL 3, which basically means the
- * X Server runs at the same level as the kernel. You can image why this is
- * unsafe. Oh, and this is not a problem unique to OSR5, other OSes are
- * affected by this as well.
- *
- * So, for the time being, we change our IOPL until such time as the XFree86
- * architecture is changed to allow for tighter control of I/O ports. If and
- * when it is, then the CONS_ADDIOP/DELIOP ioctl() should be used to enable
- * or disable access to the desired ports.
- */
-
-extern long sysi86 (int cmd, ...);
-
-static Bool IOEnabled = FALSE;
-
-Bool
-xf86EnableIO(void)
-{
- if (IOEnabled)
- return TRUE;
-
- if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0) {
- xf86Msg(X_WARNING,"Failed to set IOPL for extended I/O\n");
- return FALSE;
- }
-
- IOEnabled = TRUE;
- return TRUE;
-}
-
-void
-xf86DisableIO(void)
-{
- if (!IOEnabled)
- return;
-
- sysi86(SI86V86, V86SC_IOPL, 0);
- IOEnabled = FALSE;
-}
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool
-xf86DisableInterrupts(void)
-{
- if (!IOEnabled) {
- if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0)
- return FALSE;
- }
-
-#ifdef __GNUC__
- __asm__ __volatile__("cli");
-#else
- asm("cli");
-#endif /* __GNUC__ */
-
- if (!IOEnabled) {
- sysi86(SI86V86, V86SC_IOPL, PS_IOPL);
- }
-
- return(TRUE);
-}
-
-void
-xf86EnableInterrupts(void)
-{
- if (!IOEnabled) {
- if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0)
- return;
- }
-
-#ifdef __GNUC__
- __asm__ __volatile__("sti");
-#else
- asm("sti");
-#endif /* __GNUC__ */
-
- if (!IOEnabled) {
- sysi86(SI86V86, V86SC_IOPL, PS_IOPL);
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_kbd.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_kbd.c
deleted file mode 100644
index a26b7e96b..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_kbd.c
+++ /dev/null
@@ -1,530 +0,0 @@
-/* $XFree86$ */
-/*
- * Copyright 2005 by J. Kean Johnston <jkj@sco.com>
- *
- * 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, and that the name J. Kean Johnston not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. J. Kean Johnston makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
- * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XConsortium$ */
-
-/*
- * Based on sco_io.c which is
- * (C) Copyright 2003 J. Kean Johnston <jkj@sco.com>
- *
- * Based on lnx_kbd.c which is
- * Copyright (c) 2002 by The XFree86 Project, Inc.
- *
- * Based on the code from lnx_io.c which is
- * Copyright 1992 by Orest Zborowski <obz@Kodak.com>
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- */
-
-#define NEED_EVENTS
-#include "X.h"
-
-#include "compiler.h"
-
-#define _NEED_SYSI86
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86OSpriv.h"
-#include "xf86_OSlib.h"
-
-#include "xf86Xinput.h"
-#include "xf86OSKbd.h"
-#include "atKeynames.h"
-#include "sco_kbd.h"
-
-#include <sys/param.h>
-#include <sys/emap.h>
-#include <sys/nmap.h>
-
-static KbdProtocolRec protocols[] = {
- { "standard", PROT_STD },
- { NULL, PROT_UNKNOWN_KBD }
-};
-
-extern Bool VTSwitchEnabled;
-#ifdef USE_VT_SYSREQ
-extern Bool VTSysreqToggle;
-#endif
-
-static void
-SoundBell(InputInfoPtr pInfo, int loudness, int pitch, int duration)
-{
- if (loudness && pitch) {
- ioctl(pInfo->fd, KIOCSOUND, 1193180 / pitch);
- usleep(duration * loudness * 20);
- ioctl(pInfo->fd, KIOCSOUND, 0);
- }
-}
-
-static void
-SetKbdLeds(InputInfoPtr pInfo, int leds)
-{
- int real_leds = 0;
- static int once = 1;
-
- /*
- * sleep the first time through under SCO. There appears to be a
- * timing problem in the driver which causes the keyboard to be lost.
- * This usleep stops it from occurring. NOTE: this was in the old code.
- * I am not convinced it is true any longer, but it doesn't hurt to
- * leave this in here.
- */
- if (once) {
- usleep(100);
- once = 0;
- }
-
-#ifdef LED_CAP
- if (leds & XLED1)
- real_leds |= LED_CAP;
- if (leds & XLED2)
- real_leds |= LED_NUM;
- if (leds & XLED3)
- real_leds |= LED_SCR;
-#ifdef LED_COMP
- if (leds & XLED4)
- real_leds |= LED_COMP;
-#else
- if (leds & XLED4)
- real_leds |= LED_SCR;
-#endif
-#endif
- ioctl(pInfo->fd, KDSETLED, real_leds);
-}
-
-static int
-GetKbdLeds(InputInfoPtr pInfo)
-{
- int real_leds, leds = 0;
-
- ioctl(pInfo->fd, KDGETLED, &real_leds);
-
- if (real_leds & LED_CAP) leds |= XLED1;
- if (real_leds & LED_NUM) leds |= XLED2;
- if (real_leds & LED_SCR) leds |= XLED3;
-
- return(leds);
-}
-
-/*
- * NOTE: Only OpenServer Release 5.0.6 with Release Supplement 5.0.6A
- * and later have the required ioctl. 5.0.6A or higher is HIGHLY
- * recommended. The console driver is quite a different beast on that OS.
- */
-#undef rate
-
-static void
-SetKbdRepeat(InputInfoPtr pInfo, char rad)
-{
-#if defined(KBIO_SETRATE)
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int i;
- int value = 0x7f; /* Maximum delay with slowest rate */
- int delay = 250; /* Default delay */
- int rate = 300; /* Default repeat rate */
-
- static int valid_rates[] = { 300, 267, 240, 218, 200, 185, 171, 160, 150,
- 133, 120, 109, 100, 92, 86, 80, 75, 67,
- 60, 55, 50, 46, 43, 40, 37, 33, 30, 27,
- 25, 23, 21, 20 };
-#define RATE_COUNT (sizeof( valid_rates ) / sizeof( int ))
-
- static int valid_delays[] = { 250, 500, 750, 1000 };
-#define DELAY_COUNT (sizeof( valid_delays ) / sizeof( int ))
-
- if (pKbd->rate >= 0)
- rate = pKbd->rate * 10;
- if (pKbd->delay >= 0)
- delay = pKbd->delay;
-
- for (i = 0; i < RATE_COUNT; i++)
- if (rate >= valid_rates[i]) {
- value &= 0x60;
- value |= i;
- break;
- }
-
- for (i = 0; i < DELAY_COUNT; i++)
- if (delay <= valid_delays[i]) {
- value &= 0x1f;
- value |= i << 5;
- break;
- }
-
- ioctl (pInfo->fd, KBIO_SETRATE, value);
-#endif /* defined(KBIO_SETRATE) */
-}
-
-static int
-KbdInit(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- ScoKbdPrivPtr priv = (ScoKbdPrivPtr) pKbd->private;
-
- if (pKbd->isConsole) {
- priv->use_tcs = 1;
- priv->use_kd = 1;
- priv->no_nmap = 1;
- priv->no_emap = 1;
- priv->orig_getsc = 0;
-
- if (ioctl (pInfo->fd, TCGETSC, &priv->orig_getsc) < 0)
- priv->use_tcs = 0;
- if (ioctl (pInfo->fd, KDGKBMODE, &priv->orig_kbm) < 0)
- priv->use_kd = 0;
-
- if (!priv->use_tcs && !priv->use_kd) {
- xf86Msg (X_ERROR, "KbdInit: Could not determine keyboard mode\n");
- return !Success;
- }
-
- /*
- * One day this should be fixed to translate normal ASCII characters
- * back into scancodes or into events that XFree86 wants, but not
- * now. For the time being, we only support scancode mode screens.
- */
- if (priv->use_tcs && !(priv->orig_getsc & KB_ISSCANCODE)) {
- xf86Msg (X_ERROR, "KbdInit: Keyboard can not send scancodes\n");
- return !Success;
- }
-
- /*
- * We need to get the original keyboard map and NUL out the lock
- * modifiers. This prevents the scancode API from messing with
- * the keyboard LED's. We restore the original map when we exit.
- */
- if (ioctl (pInfo->fd, GIO_KEYMAP, &priv->keymap) < 0) {
- xf86Msg (X_ERROR, "KbdInit: Failed to get keyboard map (%s)\n",
- strerror(errno));
- return !Success;
- }
- if (ioctl (pInfo->fd, GIO_KEYMAP, &priv->noledmap) < 0) {
- xf86Msg (X_ERROR, "KbdInit: Failed to get keyboard map (%s)\n",
- strerror(errno));
- return !Success;
- } else {
- int i, j;
-
- for (i = 0; i < priv->noledmap.n_keys; i++) {
- for (j = 0; j < NUM_STATES; j++) {
- if (IS_SPECIAL(priv->noledmap, i, j) &&
- ((priv->noledmap.key[i].map[j] == K_CLK) ||
- (priv->noledmap.key[i].map[j] == K_NLK) ||
- (priv->noledmap.key[i].map[j] == K_SLK))) {
- priv->noledmap.key[i].map[j] = K_NOP;
- }
- }
- }
- }
-
- if (ioctl (pInfo->fd, XCGETA, &priv->kbdtty) < 0) {
- xf86Msg (X_ERROR, "KbdInit: Failed to get terminal modes (%s)\n",
- strerror(errno));
- return !Success;
- }
-
- priv->sc_mapbuf = xalloc (10*BSIZE);
- priv->sc_mapbuf2 = xalloc(10*BSIZE);
-
- /* Get the emap */
- if (ioctl (pInfo->fd, LDGMAP, priv->sc_mapbuf) < 0) {
- if (errno != ENAVAIL) {
- xf86Msg (X_ERROR, "KbdInit: Failed to retrieve e-map (%s)\n",
- strerror (errno));
- return !Success;
- }
- priv->no_emap = 0;
- }
-
- /* Get the nmap */
- if (ioctl (pInfo->fd, NMGMAP, priv->sc_mapbuf2) < 0) {
- if (errno != ENAVAIL) {
- xf86Msg (X_ERROR, "KbdInit: Failed to retrieve n-map (%s)\n",
- strerror (errno));
- return !Success;
- }
- priv->no_nmap = 0;
- }
- } /* End of if we are on a console */
-
- return Success;
-}
-
-static int
-KbdOn(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- ScoKbdPrivPtr priv = (ScoKbdPrivPtr) pKbd->private;
- struct termios newtio;
-
- if (pKbd->isConsole) {
- ioctl (pInfo->fd, LDNMAP); /* Turn e-mapping off */
- ioctl (pInfo->fd, NMNMAP); /* Turn n-mapping off */
-
- newtio = priv->kbdtty; /* structure copy */
- newtio.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- newtio.c_oflag = 0;
- newtio.c_cflag = CREAD | CS8 | B9600;
- newtio.c_lflag = 0;
- newtio.c_cc[VTIME]=0;
- newtio.c_cc[VMIN]=1;
- cfsetispeed(&newtio, 9600);
- cfsetospeed(&newtio, 9600);
- ioctl(pInfo->fd, XCSETA, &newtio);
-
- /* Now tell the keyboard driver to send us raw scancodes */
- if (priv->use_tcs) {
- int nm = priv->orig_getsc;
- nm &= ~KB_XSCANCODE;
- ioctl (pInfo->fd, TCSETSC, &nm);
- }
-
- if (priv->use_kd)
- ioctl (pInfo->fd, KDSKBMODE, K_RAW);
-
- ioctl (pInfo->fd, PIO_KEYMAP, &priv->noledmap);
- }
-
- return Success;
-}
-
-static int
-KbdOff(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- ScoKbdPrivPtr priv = (ScoKbdPrivPtr) pKbd->private;
-
- if (pKbd->isConsole) {
- /* Revert back to original translate scancode mode */
- if (priv->use_tcs)
- ioctl (pInfo->fd, TCSETSC, &priv->orig_getsc);
- if (priv->use_kd)
- ioctl (pInfo->fd, KDSKBMODE, priv->orig_kbm);
-
- ioctl (pInfo->fd, PIO_KEYMAP, &priv->keymap);
-
- if (priv->no_emap)
- ioctl (pInfo->fd, LDSMAP, priv->sc_mapbuf);
- if (priv->no_nmap)
- ioctl (pInfo->fd, NMSMAP, priv->sc_mapbuf2);
-
- ioctl(pInfo->fd, XCSETA, &priv->kbdtty);
- }
-
- return Success;
-}
-
-static int
-GetSpecialKey(InputInfoPtr pInfo, int scanCode)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int specialkey = scanCode;
-
- if (pKbd->CustomKeycodes) {
- specialkey = pKbd->specialMap->map[scanCode];
- }
- return specialkey;
-}
-
-#define ModifierSet(k) ((modifiers & (k)) == (k))
-
-static Bool
-SpecialKey(InputInfoPtr pInfo, int key, Bool down, int modifiers)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-
- if(!pKbd->vtSwitchSupported)
- return FALSE;
-
- if ((!ModifierSet(ShiftMask)) && ((ModifierSet(ControlMask | AltMask)) ||
- (ModifierSet(ControlMask | AltLangMask)))) {
- if (VTSwitchEnabled && !xf86Info.vtSysreq) {
- switch (key) {
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
- if (down) {
- int sts = key - KEY_F1;
- if (sts != xf86Info.vtno) {
- ioctl(pInfo->fd, VT_ACTIVATE, sts);
- }
- return TRUE;
- }
- case KEY_F11:
- case KEY_F12:
- if (down) {
- int sts = key - KEY_F11 + 10;
- if (sts != xf86Info.vtno) {
- ioctl(pInfo->fd, VT_ACTIVATE, sts);
- }
- return TRUE;
- }
- }
- }
- }
-#ifdef USE_VT_SYSREQ
- if (VTSwitchEnabled && xf86Info.vtSysreq) {
- switch (key) {
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
- if (VTSysreqToggle && down) {
- ioctl(pInfo->fd, VT_ACTIVATE, key - KEY_F1);
- VTSysreqToggle = FALSE;
- return TRUE;
- }
- break;
- case KEY_F11:
- case KEY_F12:
- if (VTSysreqToggle && down) {
- ioctl(pInfo->fd, VT_ACTIVATE, key - KEY_F11 + 10);
- VTSysreqToggle = FALSE;
- return TRUE;
- }
- break;
- /* Ignore these keys -- ie don't let them cancel an alt-sysreq */
- case KEY_Alt:
- case KEY_AltLang:
- break;
- case KEY_SysReqest:
- if (!(ModifierSet(ShiftMask) || ModifierSet(ControlMask))) {
- if ((ModifierSet(AltMask) || ModifierSet(AltLangMask)) && down)
- VTSysreqToggle = TRUE;
- }
- break;
- default:
- /*
- * We only land here when Alt-SysReq is followed by a
- * non-switching key.
- */
- if (VTSysreqToggle)
- VTSysreqToggle = FALSE;
- }
- }
-#endif /* USE_VT_SYSREQ */
- return FALSE;
-}
-
-static void
-stdReadInput(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- unsigned char rBuf[64];
- int nBytes, i;
-
- if ((nBytes = read( pInfo->fd, (char *)rBuf, sizeof(rBuf))) > 0) {
- for (i = 0; i < nBytes; i++) {
- pKbd->PostEvent(pInfo, rBuf[i] & 0x7f, rBuf[i] & 0x80 ? FALSE : TRUE);
- }
- }
-}
-
-static Bool
-OpenKeyboard(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int i;
- KbdProtocolId prot = PROT_UNKNOWN_KBD;
- char *s;
-
- s = xf86SetStrOption(pInfo->options, "Protocol", NULL);
- for (i = 0; protocols[i].name; i++) {
- if (xf86NameCmp(s, protocols[i].name) == 0) {
- prot = protocols[i].id;
- break;
- }
- }
-
- switch (prot) {
- case PROT_STD:
- pInfo->read_input = stdReadInput;
- break;
- default:
- xf86Msg(X_ERROR,"\"%s\" is not a valid keyboard protocol name\n", s);
- xfree(s);
- return FALSE;
- }
-
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, s);
- xfree(s);
-
- s = xf86SetStrOption(pInfo->options, "Device", NULL);
- if (s == NULL) {
- pInfo->fd = xf86Info.consoleFd;
- pKbd->isConsole = TRUE;
- } else {
- pInfo->fd = open(s, O_RDONLY | O_NONBLOCK | O_EXCL);
- if (pInfo->fd == -1) {
- xf86Msg(X_ERROR, "%s: cannot open \"%s\"\n", pInfo->name, s);
- xfree(s);
- return FALSE;
- }
- pKbd->isConsole = FALSE;
- xfree(s);
- }
-
- if (pKbd->isConsole)
- pKbd->vtSwitchSupported = TRUE;
-
- return TRUE;
-}
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = pInfo->private;
-
- pKbd->KbdInit = KbdInit;
- pKbd->KbdOn = KbdOn;
- pKbd->KbdOff = KbdOff;
- pKbd->Bell = SoundBell;
- pKbd->SetLeds = SetKbdLeds;
- pKbd->GetLeds = GetKbdLeds;
- pKbd->SetKbdRepeat = SetKbdRepeat;
- pKbd->KbdGetMapping = KbdGetMapping;
- pKbd->SpecialKey = SpecialKey;
- pKbd->GetSpecialKey = GetSpecialKey;
- pKbd->OpenKeyboard = OpenKeyboard;
- pKbd->RemapScanCode = ATScancode;
- pKbd->vtSwitchSupported = FALSE;
-
- pKbd->private = xcalloc(sizeof(ScoKbdPrivRec), 1);
- if (pKbd->private == NULL) {
- xf86Msg(X_ERROR,"can't allocate keyboard OS private data\n");
- return FALSE;
- }
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_kbd.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_kbd.h
deleted file mode 100644
index a79cd7bb9..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_kbd.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* $XFree86$ */
-#ifndef SCO_KBD_HDR
-#define SCO_KBD_HDR
-
-typedef struct {
- int use_tcs;
- int use_kd;
- int no_nmap;
- int no_emap;
- int orig_getsc;
- int orig_kbm;
- struct termios kbdtty;
- keymap_t keymap, noledmap;
- uchar_t *sc_mapbuf;
- uchar_t *sc_mapbuf2;
-} ScoKbdPrivRec, *ScoKbdPrivPtr;
-
-extern void KbdGetMapping(InputInfoPtr pInfo, KeySymsPtr pKeySyms,
- CARD8 *pModMap);
-#endif /* SCO_KBD_HDR */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_mouse.c
deleted file mode 100644
index ea81c947d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_mouse.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sco/sco_mouse.c,v 3.12 2001/06/30 22:41:49 tsi Exp $ */
-/*
- * Copyright 2001 by J. Kean Johnston <jkj@sco.com>
- *
- * 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, and that the name J. Kean Johnston not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. J. Kean Johnston makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
- * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/* $XConsortium$ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-#include "mipointer.h"
-#include <sys/event.h>
-#include <mouse.h>
-
-static int
-SupportedInterfaces (void)
-{
- return MSE_MISC;
-}
-
-static const char *internalNames[] = {
- "OSMouse",
- NULL
-};
-
-static const char **
-BuiltinNames (void)
-{
- return internalNames;
-}
-
-static Bool
-CheckProtocol (const char *protocol)
-{
- int i;
-
- for (i = 0; internalNames[i]; i++) {
- if (xf86NameCmp (protocol, internalNames[i]) == 0)
- return TRUE;
- }
-
- return FALSE;
-}
-
-static const char *
-DefaultProtocol (void)
-{
- return "OSMouse";
-}
-
-static const char *
-evtErrStr (int evterr)
-{
- switch (evterr) {
- case -1: return "error in config files";
- case -2: return "no mouse devices to attach";
- case -3: return "unable to open device";
- case -4: return "unable to open event queue";
- case -999: return "unable to initialize event driver";
- default: return "unknown event driver error";
- }
-}
-
-static int
-OsMouseProc (DeviceIntPtr pPointer, int what)
-{
- InputInfoPtr pInfo;
- MouseDevPtr pMse;
- unsigned char map[9];
- dmask_t dmask;
- MessageType from = X_CONFIG;
- int evi;
-
- pInfo = pPointer->public.devicePrivate;
- pMse = pInfo->private;
- pMse->device = pPointer;
-
- switch (what) {
- case DEVICE_INIT:
- pPointer->public.on = FALSE;
-
- dmask = D_ABS | D_REL | D_BUTTON;
- if ((evi = ev_initf(xf86Info.consoleFd)) < 0) {
- FatalError ("OsMouseProc: Event driver initialization failed (%s)\n",
- evtErrStr(evi));
- }
- pInfo->fd = ev_open (&dmask);
- if (pInfo->fd < 0) {
- FatalError ("OsMouseProc: DEVICE_INIT failed (%s)\n", evtErrStr(pInfo->fd));
- }
-
- pMse->buttons = xf86SetIntOption (pInfo->options, "Buttons", 0);
- if (pMse->buttons == 0) {
- pMse->buttons = 8;
- from = X_DEFAULT;
- }
- xf86Msg (from, "%s: Buttons: %d\n", pInfo->name, pMse->buttons);
-
- for (evi = 0; evi <= 8; evi++)
- map[evi] = evi;
-
- InitPointerDeviceStruct((DevicePtr)pPointer, map, 8,
- miPointerGetMotionEvents, pMse->Ctrl,
- miPointerGetMotionBufferSize());
-
- /* X valuator */
- xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 0);
-
- /* Y valuator */
- xf86InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 1);
-
- xf86MotionHistoryAllocate(pInfo);
-
- ev_flush();
- ev_suspend();
- break;
-
- case DEVICE_ON:
- pMse->lastButtons = 0;
- pMse->lastMappedButtons = 0;
- pMse->emulateState = 0;
- pPointer->public.on = TRUE;
- ev_resume();
- AddEnabledDevice (pInfo->fd);
- break;
-
- case DEVICE_OFF:
- case DEVICE_CLOSE:
- pPointer->public.on = FALSE;
- RemoveEnabledDevice (pInfo->fd);
- if (what == DEVICE_CLOSE) {
- ev_close();
- pInfo->fd = -1;
- } else {
- ev_suspend();
- }
- break;
- }
-
- return Success;
-}
-
-static void
-OsMouseReadInput (InputInfoPtr pInfo)
-{
- MouseDevPtr pMse;
- EVENT *evp;
-
- pMse = pInfo->private;
-
- while ((evp = ev_read()) != (EVENT *)0) {
- int buttons = EV_BUTTONS(*evp);
- int dx = EV_DX(*evp), dy = -(EV_DY(*evp)), dz = 0;
-
- if (buttons & WHEEL_FWD)
- dz = -1;
- else if (buttons & WHEEL_BACK)
- dz = 1;
-
- buttons &= ~(WHEEL_FWD | WHEEL_BACK);
-
- pMse->PostEvent (pInfo, buttons, dx, dy, dz, 0);
- ev_pop();
- }
-}
-
-static Bool
-OsMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- MouseDevPtr pMse;
-
- /* This is called when the protocol is "OSMouse". */
-
- pMse = pInfo->private;
- pMse->protocol = protocol;
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
-
- /* Collect the options, and process the common options. */
- xf86CollectInputOptions(pInfo, NULL, NULL);
- xf86ProcessCommonOptions(pInfo, pInfo->options);
-
- /* Check if the device can be opened. */
- pInfo->fd = ev_initf(xf86Info.consoleFd);
- if (pInfo->fd != -1) {
- dmask_t dmask = (D_ABS | D_REL | D_BUTTON);
- pInfo->fd = ev_open(&dmask);
- } else {
- pInfo->fd = -999;
- }
-
- if (pInfo->fd < 0) {
- if (xf86GetAllowMouseOpenFail())
- xf86Msg(X_WARNING, "%s: cannot open event manager (%s)\n",
- pInfo->name, evtErrStr(pInfo->fd));
- else {
- xf86Msg(X_ERROR, "%s: cannot open event manager (%s)\n",
- pInfo->name, evtErrStr(pInfo->fd));
- xfree(pMse);
- return FALSE;
- }
- }
- ev_close();
- pInfo->fd = -1;
-
- /* Process common mouse options (like Emulate3Buttons, etc). */
- pMse->CommonOptions(pInfo);
-
- /* Setup the local procs. */
- pInfo->device_control = OsMouseProc;
- pInfo->read_input = OsMouseReadInput;
-
- pInfo->flags |= XI86_CONFIGURED;
- return TRUE;
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit (int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
-
- p->SupportedInterfaces = SupportedInterfaces;
- p->BuiltinNames = BuiltinNames;
- p->DefaultProtocol = DefaultProtocol;
- p->CheckProtocol = CheckProtocol;
- p->PreInit = OsMousePreInit;
-
- return p;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_video.c
deleted file mode 100644
index dd81786bb..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sco/sco_video.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sco/sco_video.c,v 3.8tsi Exp $ */
-/*
- * Copyright 2001 by J. Kean Johnston <jkj@sco.com>
- *
- * 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, and that the name J. Kean Johnston not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. J. Kean Johnston makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
- * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XConsortium$ */
-
-/* Re-written May 2001 to represent the current state of reality */
-
-/*
- * This file contains the completely re-written SCO OpenServer video
- * routines for XFree86 4.x. Much of this is based on the SCO X server
- * code (which is an X11R5 server) and will probably only work on
- * OpenServer versions 5.0.5, 5.0.6 and later. Please send me (jkj@sco.com)
- * email if you have any questions.
- *
- * Ideally, you should use OSR5.0.6A or later, with the updated console
- * driver for 5.0.6A (its the default driver in 5.0.7 and later).
- * However, if you are running on an older system, this code will detect
- * that and adjust accordingly.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#define _NEED_SYSI86
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86OSpriv.h"
-#include "xf86_OSlib.h"
-
-#include <sys/ci/ciioctl.h>
-#define MPXNAME "/dev/atp1"
-#define BASECPU 1
-
-Bool mpxLock = TRUE;
-
-#define USE_VASMETHOD 1
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-static int sco_mcdone = 0, sco_ismc = 0;
-
-/***************************************************************************/
-/*
- * To map the video memory, we first need to see if we are on a multi-console
- * system. If we are, we need to try to use an existing video class in the
- * kernel. We do this by retrieving the list of currently defined classes
- * (via the new CONS_GETCLASS ioctl()) to see if we have a class that will
- * match the range of memory we desire. If we can't find one, we have an
- * error and we abort.
- *
- * If we are not using a multi-console, we can simply use mmap() to map in
- * the frame buffer, using the classs-access method as a fall-back only if
- * the mmap() fails (it shouldn't). We always set the appropriate pointers
- * in the config structure to point ot the right function to map and unmap
- * the video memory. An alternative to using mmap() is to use the new
- * CONS_ADDVAS call, which will use vasmalloc() and vasbind() in the kernel
- * to map the physical address to a virtual one, which it then returns.
- * I am not 100% sure if this is faster or not, but it may prove easier to
- * debug things. Just to be on the safe side, I have included both methods
- * here, and the mmap() method can be used by setting USE_VASMETHOD to 0
- * above.
- */
-
-#if !defined(CONS_ADDVAS)
-# undef USE_VASMETHOD
-# define USE_VASMETHOD 0
-#endif
-
-static int
-scoIsMultiConsole (void)
-{
- int x;
-
- if (sco_mcdone)
- return sco_ismc;
- x = access ("/usr/lib/vidconf/.multiconsole", F_OK);
- if (x == 0)
- sco_ismc = 1;
- sco_mcdone = 1;
- return sco_ismc;
-}
-
-/*
- * This maps memory using mmap()
- */
-static pointer
-mapVidMemMMAP(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- int fd;
- unsigned long realBase, alignOff;
- pointer base;
-
- fd = open (DEV_MEM, (flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
- if (fd < 0) {
- FatalError("xf86MapVidMem: failed to open %s (%s)\n", DEV_MEM,
- strerror(errno));
- return 0; /* NOTREACHED */
- }
-
- realBase = Base & ~(getpagesize() - 1);
- alignOff = Base - realBase;
-
-#ifdef DEBUG
- ErrorF("base: %lx, realBase: %lx, alignOff: %lx\n", Base,realBase,alignOff);
-#endif
-
- base = mmap((caddr_t)0, Size + alignOff,
- (flags & VIDMEM_READONLY) ? PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_SHARED, fd, (off_t)realBase);
- close(fd);
- if (base == MAP_FAILED) {
- FatalError("xf86MapVidMem: Could not mmap framebuffer (0x%08x,0x%x) (%s)\n",
- Base, Size, strerror(errno));
- return 0; /* NOTREACHED */
- }
-
-#ifdef DEBUG
- ErrorF("base: %lx aligned base: %lx\n",base, base + alignOff);
-#endif
- return (pointer)((char *)base + alignOff);
-}
-
-#if (USE_VASMETHOD)
-/*
- * This maps memory using the virtual address space (VAS) console calls.
- */
-static pointer
-mapVidMemVAS(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- struct vidvasmem vas;
- pointer base;
-
- vas.base = (long)Base;
- vas.size = (long)Size;
-
- base = (pointer)ioctl (xf86Info.consoleFd, CONS_ADDVAS, &vas);
- if (base == (pointer)-1) {
- return mapVidMemMMAP(ScreenNum, Base, Size, flags);
- }
- return base;
-}
-#endif /* USE_VASMETHOD */
-
-struct vidclass vidclasslist[] = {
- { "VBE", "", 0xf0000000, 0x2000000, 0 },
- { "P9000", "", 0xc0000000, 0x400000, 0 },
- { "TULIP", "", 0x80000000, 0x400000, 0 },
- { "VIPER", "", 0xa0000000, 0x400000, 0 },
- { "S3T", "", 0xa0000000, 0x200000, 0 },
- { "S3DT", "", 0x4000000, 0x400000, 0 },
- { "MGA", "", 0x2200000, 0x4000, 0 },
- { "CLVGA", "", 0xa0000, 0x20000, 0 },
- { "OLIVE", "", 0xd8000000, 0x400000, 0 },
- { "S3C", "", 0xa0000, 0x10000, 0 },
- { "MGAVLB", "", 0xac000, 0x34000, 0 },
- { "ATI8514", "", 0xFF000, 0x1000, 0 },
- { "GXREGS", "", 0xb0000, 0x10000, 0 },
- { "GX", "", 0xa0000, 0x10000, 0 },
- { "CT64300", "", 0xa0000000, 0x400000, 0 },
- { "SVGA", "", 0xa0000, 0x20000, 0 },
- { "S3V", "", 0xa0000000, 0x400000, 0 },
- { "8514A", "", 0xFF000, 0x1000, 0 },
- { "VGA", "", 0xa0000, 0x10000, 0 },
- { 0 }
-};
-
-static pointer
-mapVidMemVC(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- struct vidclass *vcp;
- char *class = NULL;
- pointer base;
-
- for (vcp = vidclasslist; vcp->name; vcp++) {
- if ((vcp->base == Base) && (vcp->size == Size)) {
- class = vcp->name;
- break;
- }
- }
-
- if (class == NULL) {
- /*
- * As a fall-back, we will try and use the mmap() approach. This may
- * prove to be the wrong thing to do, but time and testing will tell.
- */
- ErrorF("xf86MapVidMem: No class map defined for (0x%08x,0x%08x)\n", Base, Size);
-#if USE_VASMETHOD
- return mapVidMemVAS(ScreenNum, Base, Size, flags);
-#else /* !USE_VASMETHOD */
- return mapVidMemMMAP(ScreenNum, Base, Size, flags);
-#endif
- }
-
- /*
- * We found a suitable class. Try and use it.
- */
- base = (pointer)ioctl(xf86Info.consoleFd, MAP_CLASS, class);
- if ((int)base == -1) {
- FatalError("xf86MapVidMem: Failed to map video memory class `%s'\n", class);
- return 0; /* NOTREACHED */
- }
-
- return base;
-}
-
-/*
- * Unmapping the video memory is easy. We always call munmap(), as it is
- * safe to do so even if we haven't actually mapped in any pages via mmap().
- * In the case where we used the video class, we don't need to do anything
- * as the kernel will clean up the TSS when we exit, and will undo the
- * vasbind() that was done when the class was originally mapped. If we used
- * vasmap, we simply undo the map. Again, it is benign to call vasunmap
- * even if we got the frame buffer via some other mechanism (like mmap).
- */
-
-static void
-unmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
-#if USE_VASMETHOD
- struct vidvasmem vas;
- int x;
-
- vas.base = (long)Base;
- vas.size = (long)Size;
-
- x = ioctl (xf86Info.consoleFd, CONS_DELVAS, &vas);
- if (x == 0)
- return;
-#endif /* USE_VASMETHOD */
-
- munmap(Base, Size);
-}
-
-/*
- * Set things up to point to our local functions. When the kernel gets
- * MTRR support, we will need to add the required functions for that
- * here too. MTRR support will most likely appear in 5.0.8 or 5.1.0.
- *
- * We also want to lock the X server process to the base CPU in an MPX
- * system, since we will be going to IOPL 3. Most engine drivers can cope
- * with I/O access on any CPU but there are a few (AST Manhattan I believe)
- * that can't, so the server needs to be locked to CPU0.
- */
-void
-xf86OSInitVidMem(VidMemInfoPtr pVidMem)
-{
- int mpx_fd;
-
- if (scoIsMultiConsole ()) {
- pVidMem->mapMem = mapVidMemVC;
- } else {
-#if USE_VASMETHOD
- pVidMem->mapMem = mapVidMemVAS;
-#else
- pVidMem->mapMem = mapVidMemMMAP;
-#endif
- }
-
- pVidMem->unmapMem = unmapVidMem;
- pVidMem->linearSupported = TRUE;
- pVidMem->initialised = TRUE;
-
- if (mpxLock && (mpx_fd = open (MPXNAME, O_RDONLY)) > 0) {
- if (ioctl (mpx_fd, ACPU_XLOCK, BASECPU) < 0)
- ErrorF ("xf86OSInitVidMem: Can not bind to CPU 0 (%s)\n",
- strerror(errno));
- close (mpx_fd);
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/VTsw_noop.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/VTsw_noop.c
deleted file mode 100644
index ac8ae3b0a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/VTsw_noop.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/VTsw_noop.c,v 3.1.4.1 1998/06/05 16:23:20 dawes Exp $ */
-/*
- * Copyright 1993 by David Wexelblat <dwex@XFree86.org>
- *
- * 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, and that the name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: VTsw_noop.c /main/3 1996/02/21 17:53:25 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/*
- * No-op functions for OSs without VTs
- */
-
-Bool
-xf86VTSwitchPending()
-{
- return(FALSE);
-}
-
-Bool
-xf86VTSwitchAway()
-{
- return(FALSE);
-}
-
-Bool
-xf86VTSwitchTo()
-{
- return(TRUE);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/VTsw_usl.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/VTsw_usl.c
deleted file mode 100644
index b38470aea..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/VTsw_usl.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/VTsw_usl.c,v 3.1.4.1 1998/06/05 16:23:21 dawes Exp $ */
-/*
- * Copyright 1993 by David Wexelblat <dwex@XFree86.org>
- *
- * 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, and that the name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: VTsw_usl.c /main/3 1996/02/21 17:53:28 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#ifdef OSHEADER
-# include OSHEADER
-#endif
-
-/*
- * Handle the VT-switching interface for OSs that use USL-style ioctl()s
- * (the sysv, sco, and linux subdirs).
- */
-
-/*
- * This function is the signal handler for the VT-switching signal. It
- * is only referenced inside the OS-support layer.
- */
-void
-xf86VTRequest(int sig)
-{
- signal(sig, (void(*)(int))xf86VTRequest);
- xf86Info.vtRequestsPending = TRUE;
- return;
-}
-
-Bool
-xf86VTSwitchPending()
-{
- return(xf86Info.vtRequestsPending ? TRUE : FALSE);
-}
-
-Bool
-xf86VTSwitchAway()
-{
- xf86Info.vtRequestsPending = FALSE;
- if (ioctl(xf86Info.consoleFd, VT_RELDISP, 1) < 0)
- {
- return(FALSE);
- }
- else
- {
-#ifdef OSSWITCHAWAY
- OSSWITCHAWAY;
-#endif
- return(TRUE);
- }
-}
-
-Bool
-xf86VTSwitchTo()
-{
- xf86Info.vtRequestsPending = FALSE;
- if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ) < 0)
- {
- return(FALSE);
- }
- else
- {
- return(TRUE);
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/agp_noop.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/agp_noop.c
deleted file mode 100644
index c13b29c38..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/agp_noop.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/agp_noop.c,v 1.5 2003/08/24 17:37:05 dawes Exp $ */
-/*
- * Copyright (c) 2000-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/*
- * Abstraction of the AGP GART interface. Stubs for platforms without
- * AGP GART support.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef __UNIXOS2__
-# define I_NEED_OS2_H
-#endif
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-Bool
-xf86GARTCloseScreen(int screenNum)
-{
- return FALSE;
-}
-
-Bool
-xf86AgpGARTSupported()
-{
- return FALSE;
-}
-
-AgpInfoPtr
-xf86GetAGPInfo(int screenNum)
-{
- return NULL;
-}
-
-Bool
-xf86AcquireGART(int screenNum)
-{
- return FALSE;
-}
-
-Bool
-xf86ReleaseGART(int screenNum)
-{
- return FALSE;
-}
-
-int
-xf86AllocateGARTMemory(int screenNum, unsigned long size, int type,
- unsigned long *physical)
-{
- return -1;
-}
-
-Bool
-xf86DeallocateGARTMemory(int screenNum, int key)
-{
- return FALSE;
-}
-
-Bool
-xf86BindGARTMemory(int screenNum, int key, unsigned long offset)
-{
- return FALSE;
-}
-
-
-Bool
-xf86UnbindGARTMemory(int screenNum, int key)
-{
- return FALSE;
-}
-
-Bool
-xf86EnableAGP(int screenNum, CARD32 mode)
-{
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/at_scancode.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/at_scancode.c
deleted file mode 100644
index 8947254bc..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/at_scancode.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/at_scancode.c,v 1.4 2003/08/24 17:37:05 dawes Exp $ */
-/*
- * Copyright (c) 2002-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86Xinput.h"
-#include "xf86OSKbd.h"
-#include "atKeynames.h"
-
-Bool
-ATScancode(InputInfoPtr pInfo, int *scanCode)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-
- switch (pKbd->scanPrefix) {
- case 0:
- switch (*scanCode) {
- case KEY_Prefix0:
- case KEY_Prefix1:
- pKbd->scanPrefix = *scanCode; /* special prefixes */
- return TRUE;
- }
- if (!xf86IsPc98()) {
- switch (*scanCode) {
- case 0x59: *scanCode = KEY_0x59; break;
- case 0x5a: *scanCode = KEY_0x5A; break;
- case 0x5b: *scanCode = KEY_0x5B; break;
- case 0x5c: *scanCode = KEY_KP_Equal; break; /* Keypad Equal */
- case 0x5d: *scanCode = KEY_0x5D; break;
- case 0x5e: *scanCode = KEY_0x5E; break;
- case 0x5f: *scanCode = KEY_0x5F; break;
- case 0x62: *scanCode = KEY_0x62; break;
- case 0x63: *scanCode = KEY_0x63; break;
- case 0x64: *scanCode = KEY_0x64; break;
- case 0x65: *scanCode = KEY_0x65; break;
- case 0x66: *scanCode = KEY_0x66; break;
- case 0x67: *scanCode = KEY_0x67; break;
- case 0x68: *scanCode = KEY_0x68; break;
- case 0x69: *scanCode = KEY_0x69; break;
- case 0x6a: *scanCode = KEY_0x6A; break;
- case 0x6b: *scanCode = KEY_0x6B; break;
- case 0x6c: *scanCode = KEY_0x6C; break;
- case 0x6d: *scanCode = KEY_0x6D; break;
- case 0x6e: *scanCode = KEY_0x6E; break;
- case 0x6f: *scanCode = KEY_0x6F; break;
- case 0x70: *scanCode = KEY_0x70; break;
- case 0x71: *scanCode = KEY_0x71; break;
- case 0x72: *scanCode = KEY_0x72; break;
- case 0x73: *scanCode = KEY_0x73; break;
- case 0x74: *scanCode = KEY_0x74; break;
- case 0x75: *scanCode = KEY_0x75; break;
- case 0x76: *scanCode = KEY_0x76; break;
- }
- }
- break;
- case KEY_Prefix0:
- pKbd->scanPrefix = 0;
- switch (*scanCode) {
- case KEY_KP_7: *scanCode = KEY_Home; break; /* curs home */
- case KEY_KP_8: *scanCode = KEY_Up; break; /* curs up */
- case KEY_KP_9: *scanCode = KEY_PgUp; break; /* curs pgup */
- case KEY_KP_4: *scanCode = KEY_Left; break; /* curs left */
- case KEY_KP_5: *scanCode = KEY_Begin; break; /* curs begin */
- case KEY_KP_6: *scanCode = KEY_Right; break; /* curs right */
- case KEY_KP_1: *scanCode = KEY_End; break; /* curs end */
- case KEY_KP_2: *scanCode = KEY_Down; break; /* curs down */
- case KEY_KP_3: *scanCode = KEY_PgDown; break; /* curs pgdown */
- case KEY_KP_0: *scanCode = KEY_Insert; break; /* curs insert */
- case KEY_KP_Decimal: *scanCode = KEY_Delete; break; /* curs delete */
- case KEY_Enter: *scanCode = KEY_KP_Enter; break; /* keypad enter */
- case KEY_LCtrl: *scanCode = KEY_RCtrl; break; /* right ctrl */
- case KEY_KP_Multiply: *scanCode = KEY_Print; break; /* print */
- case KEY_Slash: *scanCode = KEY_KP_Divide; break; /* keyp divide */
- case KEY_Alt: *scanCode = KEY_AltLang; break; /* right alt */
- case KEY_ScrollLock: *scanCode = KEY_Break; break; /* curs break */
- case 0x5b: *scanCode = KEY_LMeta; break;
- case 0x5c: *scanCode = KEY_RMeta; break;
- case 0x5d: *scanCode = KEY_Menu; break;
- case KEY_F3: *scanCode = KEY_F13; break;
- case KEY_F4: *scanCode = KEY_F14; break;
- case KEY_F5: *scanCode = KEY_F15; break;
- case KEY_F6: *scanCode = KEY_F16; break;
- case KEY_F7: *scanCode = KEY_F17; break;
- case KEY_KP_Plus: *scanCode = KEY_KP_DEC; break;
- case 0x2A:
- case 0x36:
- return TRUE;
- default:
- xf86MsgVerb(X_INFO, 4, "Unreported Prefix0 scancode: 0x%02x\n",
- *scanCode);
- *scanCode += 0x78;
- }
- break;
- case KEY_Prefix1:
- pKbd->scanPrefix = (*scanCode == KEY_LCtrl) ? KEY_LCtrl : 0;
- return TRUE;
- case KEY_LCtrl:
- pKbd->scanPrefix = 0;
- if (*scanCode != KEY_NumLock)
- return TRUE;
- *scanCode = KEY_Pause; /* pause */
- }
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/bios_devmem.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/bios_devmem.c
deleted file mode 100644
index 8bd6d3f3e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/bios_devmem.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/bios_devmem.c,v 3.5 1998/09/13 00:51:32 dawes Exp $ */
-/*
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: bios_devmem.c /main/5 1996/10/19 18:07:41 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include <string.h>
-
-/*
- * Read BIOS via /dev/mem.
- */
-
-#ifndef DEV_MEM
-# define DEV_MEM "/dev/mem"
-#endif
-
-int
-xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
- int Len)
-{
- int fd;
-
-#ifdef __ia64__
- if ((fd = open(DEV_MEM, O_RDONLY | O_SYNC)) < 0)
-#else
- if ((fd = open(DEV_MEM, O_RDONLY)) < 0)
-#endif
- {
- xf86Msg(X_WARNING, "xf86ReadBIOS: Failed to open %s (%s)\n",
- DEV_MEM, strerror(errno));
- return(-1);
- }
-
- if (lseek(fd, (Base+Offset), SEEK_SET) < 0)
- {
- xf86Msg(X_WARNING, "xf86ReadBIOS: %s seek failed (%s)\n",
- DEV_MEM, strerror(errno));
- close(fd);
- return(-1);
- }
- if (read(fd, Buf, Len) != Len)
- {
- xf86Msg(X_WARNING, "xf86ReadBIOS: %s read failed (%s)\n",
- DEV_MEM, strerror(errno));
- close(fd);
- return(-1);
- }
- close(fd);
- return(Len);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/bios_mmap.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/bios_mmap.c
deleted file mode 100644
index b4ff8c31f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/bios_mmap.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/bios_mmap.c,v 1.8 2000/11/19 16:38:06 tsi Exp $ */
-/*
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: bios_V4mmap.c /main/4 1996/02/21 17:54:27 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((void *)-1)
-#endif
-
-/*
- * Read BIOS via mmap()ing DEV_MEM
- */
-
-#ifndef __alpha__
-int
-xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
- int Len)
-{
- int fd;
- unsigned char *ptr;
- int psize;
- int mlen;
-
- if ((fd = open(DEV_MEM, O_RDONLY)) < 0)
- {
- xf86Msg(X_WARNING, "xf86ReadBIOS: Failed to open %s (%s)\n",
- DEV_MEM, strerror(errno));
- return(-1);
- }
- psize = xf86getpagesize();
- Offset += Base & (psize - 1);
- Base &= ~(psize - 1);
- mlen = (Offset + Len + psize - 1) & ~(psize - 1);
- ptr = (unsigned char *)mmap((caddr_t)0, mlen, PROT_READ,
- MAP_SHARED, fd, (off_t)Base);
- if (ptr == MAP_FAILED)
- {
- xf86Msg(X_WARNING, "xf86ReadBIOS: %s mmap failed (%s)\n",
- DEV_MEM, strerror(errno));
- close(fd);
- return(-1);
- }
-#ifdef DEBUG
- ErrorF("xf86ReadBIOS: BIOS at 0x%08x has signature 0x%04x\n",
- Base, ptr[0] | (ptr[1] << 8));
-#endif
- (void)memcpy(Buf, (void *)(ptr + Offset), Len);
- (void)munmap((caddr_t)ptr, mlen);
- (void)close(fd);
- return(Len);
-}
-
-#else /* __alpha__ */
-
- /*
- * We trick "mmap" into mapping BUS memory for us via BUS_BASE,
- * which is the KSEG address of the start of the DENSE memory
- * area.
- */
-
- /*
- * NOTE: there prolly ought to be more validity checks and all
- * re: boundaries and sizes and such...
- */
-
-/*
- * The Jensen lacks dense memory, thus we have to address the bus via
- * the sparse addressing scheme.
- *
- * Martin Ostermann (ost@comnets.rwth-aachen.de) - Apr.-Sep. 1996
- */
-
-#ifdef linux
-
-#ifdef TEST_JENSEN_CODE /* define to test the Sparse addressing on a non-Jensen */
-#define SPARSE (5)
-#define isJensen (1)
-#else
-#define isJensen (!_bus_base())
-#define SPARSE (7)
-#endif
-
-extern unsigned long _bus_base(void);
-extern unsigned long _bus_base_sparse(void);
-#define BUS_BASE (isJensen ? _bus_base_sparse() : _bus_base())
-#define JENSEN_SHIFT(x) (isJensen ? ((long)x<<SPARSE) : (long)x)
-
-#else
-
-extern u_int64_t dense_base(void);
-#define BUS_BASE dense_base()
-#define JENSEN_SHIFT(x) ((long) x)
-
-#endif
-
-int
-xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
- int Len)
-{
- caddr_t base;
- int fd;
- int psize;
- int mlen;
-
- if ((fd = open(DEV_MEM, O_RDONLY)) < 0)
- {
- xf86Msg(X_WARNING, "xf86ReadBIOS: Failed to open %s (%s)\n",
- DEV_MEM, strerror(errno));
- return(-1);
- }
-
- psize = xf86getpagesize();
- Offset += Base & (psize - 1);
- Base &= ~(psize - 1);
- mlen = (Offset + Len + psize - 1) & ~(psize - 1);
- base = mmap((caddr_t)0, JENSEN_SHIFT(mlen), PROT_READ,
- MAP_SHARED, fd, (off_t)(JENSEN_SHIFT(Base) + BUS_BASE));
-
- if (base == MAP_FAILED)
- {
- xf86Msg(X_WARNING, "xf86ReadBIOS: Failed to mmap %s (%s)\n",
- DEV_MEM, strerror(errno));
- return(-1);
- }
-
- xf86SlowBCopyFromBus((unsigned char *)(base+JENSEN_SHIFT(Offset)),
- Buf, Len);
-
- munmap((caddr_t)JENSEN_SHIFT(base), JENSEN_SHIFT(mlen));
- close(fd);
- return(Len);
-}
-
-#endif /* __alpha__ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.c
deleted file mode 100644
index ff4312bf5..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/ia64Pci.c,v 1.3 2003/02/23 20:26:49 tsi Exp $ */
-/*
- * Copyright (C) 2002-2003 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-/*
- * This file contains the glue needed to support various IA-64 chipsets.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <fcntl.h>
-#include <unistd.h>
-#include <signal.h>
-#include <dirent.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <linux/pci.h>
-
-#include "compiler.h"
-#include "460gxPCI.h"
-#include "e8870PCI.h"
-#include "zx1PCI.h"
-#include "altixPCI.h"
-#include "Pci.h"
-#include "ia64Pci.h"
-
-/*
- * We use special in/out routines here since Altix platforms require the
- * use of the sysfs legacy_io interface. The legacy_io file maps to the I/O
- * space of a given PCI domain; reads and writes are used to do port I/O.
- * The file descriptor for the file is stored in the upper bits of the
- * value passed in by the caller, and is created and populated by
- * xf86MapDomainIO.
- *
- * If the legacy_io interface doesn't exist, we fall back to the glibc in/out
- * routines, which are prefixed by an underscore (e.g. _outb).
- */
-static int ia64_port_to_fd(unsigned long port)
-{
- return (port >> 24) & 0xffffffff;
-}
-
-void outb(unsigned long port, unsigned char val)
-{
- int fd = ia64_port_to_fd(port);
-
- if (!fd) {
- _outb(val, port & 0xffff);
- goto out;
- }
- if (lseek(fd, port & 0xffff, SEEK_SET) == -1) {
- ErrorF("I/O lseek failed\n");
- goto out;
- }
- if (write(fd, &val, 1) != 1) {
- ErrorF("I/O write failed\n");
- goto out;
- }
- out:
- return;
-}
-
-void outw(unsigned long port, unsigned short val)
-{
- int fd = ia64_port_to_fd(port);
-
- if (!fd) {
- _outw(val, port & 0xffff);
- goto out;
- }
- if (lseek(fd, port & 0xffff, SEEK_SET) == -1) {
- ErrorF("I/O lseek failed\n");
- goto out;
- }
- if (write(fd, &val, 2) != 2) {
- ErrorF("I/O write failed\n");
- goto out;
- }
- out:
- return;
-}
-
-void outl(unsigned long port, unsigned int val)
-{
- int fd = ia64_port_to_fd(port);
-
- if (!fd) {
- _outl(val, port & 0xffff);
- goto out;
- }
- if (lseek(fd, port & 0xffff, SEEK_SET) == -1) {
- ErrorF("I/O lseek failed\n");
- goto out;
- }
- if (write(fd, &val, 4) != 4) {
- ErrorF("I/O write failed\n");
- goto out;
- }
- out:
- return;
-}
-
-unsigned int inb(unsigned long port)
-{
- int fd = ia64_port_to_fd(port);
- unsigned char val;
-
- if (!fd)
- return _inb(port & 0xffff);
-
- if (lseek(fd, port & 0xffff, SEEK_SET) == -1) {
- ErrorF("I/O lseek failed\n");
- val = -1;
- goto out;
- }
- if (read(fd, &val, 1) != 1) {
- ErrorF("I/O read failed\n");
- val = -1;
- goto out;
- }
- out:
- return val;
-}
-
-unsigned int inw(unsigned long port)
-{
- int fd = ia64_port_to_fd(port);
- unsigned short val;
-
- if (!fd)
- return _inw(port & 0xffff);
-
- if (lseek(fd, port & 0xffff, SEEK_SET) == -1) {
- ErrorF("I/O lseek failed\n");
- val = -1;
- goto out;
- }
- if (read(fd, &val, 2) != 2) {
- ErrorF("I/O read failed\n");
- val = -1;
- goto out;
- }
- out:
- return val;
-}
-
-unsigned int inl(unsigned long port)
-{
- int fd = ia64_port_to_fd(port);
- unsigned int val;
-
- if (!fd)
- return _inl(port & 0xffff);
-
- if (lseek(fd, port & 0xffff, SEEK_SET) == -1) {
- ErrorF("I/O lseek failed\n");
- val = -1;
- goto out;
- }
- if (read(fd, &val, 4) != 4) {
- ErrorF("I/O read failed\n");
- val = -1;
- goto out;
- }
- out:
- return val;
-}
-
-void
-ia64ScanPCIWrapper(scanpciWrapperOpt flags)
-{
- static IA64Chipset chipset = NONE_CHIPSET;
-
- if (flags == SCANPCI_INIT) {
-
- /* PCI configuration space probes should be done first */
- if (xorgProbe460GX(flags)) {
- chipset = I460GX_CHIPSET;
- xf86PreScan460GX();
- return;
- } else if (xorgProbeE8870(flags)) {
- chipset = E8870_CHIPSET;
- xf86PreScanE8870();
- return;
- }
-#ifdef OS_PROBE_PCI_CHIPSET
- chipset = OS_PROBE_PCI_CHIPSET(flags);
- switch (chipset) {
- case ZX1_CHIPSET:
- xf86PreScanZX1();
- return;
- case ALTIX_CHIPSET:
- xf86PreScanAltix();
- return;
- default:
- return;
- }
-#endif
- } else /* if (flags == SCANPCI_TERM) */ {
-
- switch (chipset) {
- case I460GX_CHIPSET:
- xf86PostScan460GX();
- return;
- case E8870_CHIPSET:
- xf86PostScanE8870();
- return;
- case ZX1_CHIPSET:
- xf86PostScanZX1();
- return;
- case ALTIX_CHIPSET:
- xf86PostScanAltix();
- return;
- default:
- return;
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.h
deleted file mode 100644
index 978c9ff0e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2004, Egbert Eich
- *
- * 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 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 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
- * EGBERT EICH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
- * NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of Egbert Eich shall not
- * be used in advertising or otherwise to promote the sale, use or other deal-
- *ings in this Software without prior written authorization from Egbert Eich.
- *
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _IA64_PCI_H
-# define _IA64_PCI_H
-
-#include "Pci.h"
-
-typedef enum {
- NONE_CHIPSET,
- I460GX_CHIPSET,
- E8870_CHIPSET,
- ZX1_CHIPSET,
- ALTIX_CHIPSET
-} IA64Chipset;
-
-# ifdef OS_PROBE_PCI_CHIPSET
-extern IA64Chipset OS_PROBE_PCI_CHIPSET(scanpciWrapperOpt flags);
-# endif
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/inout.S b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/inout.S
deleted file mode 100644
index 73a2cbbb6..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/inout.S
+++ /dev/null
@@ -1,111 +0,0 @@
-/* $XConsortium: inout.s /main/6 1996/02/21 17:53:35 kaleb $ */
-
-
-
-
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/inout.s,v 3.5 1996/12/23 06:50:58 dawes Exp $ */
-
-#include "assyntax.h"
-
-/*
- * Make i80386 io primitives available at C-level.
- */
-
- FILE("inout.s")
- AS_BEGIN
- SEG_TEXT
-
-/*
- *-----------------------------------------------------------------------
- * inb ---
- * Input one byte.
- *
- * Results:
- * Byte in al.
- *-----------------------------------------------------------------------
- */
- GLOBL GLNAME(inb)
-GLNAME(inb):
- MOV_L (REGOFF(4,ESP),EDX)
- SUB_L (EAX,EAX)
- IN_B
- RET
-
-/*
- *-----------------------------------------------------------------------
- * outb ---
- * Output one byte.
- *
- * Results:
- * None.
- *-----------------------------------------------------------------------
- */
- GLOBL GLNAME(outb)
-GLNAME(outb):
- MOV_L (REGOFF(4,sp),EDX)
- MOV_L (REGOFF(8,sp),EAX)
- OUT_B
- RET
-/*
- *-----------------------------------------------------------------------
- * inw ---
- * Input one 16-bit word.
- *
- * Results:
- * Word in ax.
- *-----------------------------------------------------------------------
- */
- GLOBL GLNAME(inw)
-GLNAME(inw):
- MOV_L (REGOFF(4,ESP),EDX)
- IN_W
- RET
-
-/*
- *-----------------------------------------------------------------------
- * outw ---
- * Output one 16-bit word.
- *
- * Results:
- * None.
- *-----------------------------------------------------------------------
- */
- GLOBL GLNAME(outw)
-GLNAME(outw):
- MOV_L (REGOFF(4,ESP),EDX)
- MOV_L (REGOFF(8,ESP),EAX)
- OUT_W
- RET
-
-/*
- *-----------------------------------------------------------------------
- * inl ---
- * Input one 32-bit longword.
- *
- * Results:
- * Word in eax.
- *-----------------------------------------------------------------------
- */
- GLOBL GLNAME(inl)
-GLNAME(inl):
- MOV_L (REGOFF(4,ESP),EDX)
- IN_L
- RET
-
-/*
- *-----------------------------------------------------------------------
- * outl ---
- * Output one 32-bit longword.
- *
- * Results:
- * None.
- *-----------------------------------------------------------------------
- */
- GLOBL GLNAME(outl)
-GLNAME(outl):
- MOV_L (REGOFF(4,ESP),EDX)
- MOV_L (REGOFF(8,ESP),EAX)
- OUT_L
- RET
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/ioperm_noop.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/ioperm_noop.c
deleted file mode 100644
index b3ea044f9..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/ioperm_noop.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/ioperm_noop.c,v 3.3 1998/07/25 16:57:00 dawes Exp $ */
-/*
- * Copyright 1993 by David Wexelblat <dwex@XFree86.org>
- *
- * 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, and that the name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: ioperm_noop.c /main/3 1996/02/21 17:53:39 kaleb $ */
-
-/*
- * Some platforms don't bother with I/O permissions,
- * or the permissions are implicit with opening/enabling the console.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-Bool
-xf86EnableIO()
-{
- return TRUE;
-}
-
-void
-xf86DisableIO()
-{
- return;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/kbd.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/kbd.c
deleted file mode 100644
index 822c8fe52..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/kbd.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/kbd.c,v 1.3 2003/08/24 17:37:05 dawes Exp $ */
-/*
- * Copyright (c) 2001-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86OSKbd.h"
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/kmod_noop.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/kmod_noop.c
deleted file mode 100644
index 620e9bf35..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/kmod_noop.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/kmod_noop.c,v 1.2 2003/08/24 17:37:05 dawes Exp $ */
-/*
- * Copyright (c) 2000 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86_OSproc.h"
-
-int xf86LoadKernelModule(const char *pathname)
-{
- (void) pathname;
- return 0; /* failure */
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/libc_wrapper.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/libc_wrapper.c
deleted file mode 100644
index aba445945..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/libc_wrapper.c
+++ /dev/null
@@ -1,2153 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/libc_wrapper.c,v 1.102 2003/11/19 03:52:58 dawes Exp $ */
-/*
- * Copyright 1997-2003 by The XFree86 Project, Inc.
- *
- * 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, and that the names of Orest Zborowski and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Orest Zborowski
- * and David Wexelblat make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THE XFREE86 PROJECT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#if defined(linux) && !defined(__GLIBC__)
-#undef __STRICT_ANSI__
-#endif
-#include <X11/X.h>
-#ifdef __UNIXOS2__
-#define I_NEED_OS2_H
-#endif
-#include <X11/Xmd.h>
-#include <X11/Xos.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#if defined(__bsdi__)
-#undef _POSIX_SOURCE
-#undef _ANSI_SOURCE
-#endif
-#include <sys/time.h>
-#include <math.h>
-#ifdef sun
-#include <ieeefp.h>
-#endif
-#include <stdarg.h>
-#include <fcntl.h>
-#include <X11/Xfuncproto.h>
-#include "os.h"
-#include <ctype.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <stdio.h>
-#include <sys/ioctl.h>
-#ifdef __UNIXOS2__
-#define NO_MMAP
-#include <sys/param.h>
-#endif
-#ifdef HAS_SVR3_MMAPDRV
-#define NO_MMAP
-#ifdef SELF_CONTAINED_WRAPPER
-#include <sys/at_ansi.h>
-#include <sys/kd.h>
-#include <sys/sysmacros.h>
-#if !defined(_NEED_SYSI86)
-# include <sys/immu.h>
-# include <sys/region.h>
-#endif
-#include <sys/mmap.h>
-struct kd_memloc MapDSC;
-int mmapFd = -2;
-#else
-extern struct kd_memloc MapDSC;
-extern int mmapFd;
-#endif
-#endif
-#ifndef NO_MMAP
-#include <sys/mman.h>
-#ifndef MAP_FAILED
-#define MAP_FAILED ((caddr_t)-1)
-#endif
-#endif
-#if !defined(ISC)
-#include <stdlib.h>
-#endif
-
-#define NEED_XF86_TYPES
-#define NEED_XF86_PROTOTYPES
-#define DONT_DEFINE_WRAPPERS
-#include "xf86_ansic.h"
-
-#ifndef SELF_CONTAINED_WRAPPER
-#include "xf86.h"
-#include "xf86Priv.h"
-#define NO_OSLIB_PROTOTYPES
-#define XF86_OS_PRIVS
-#define HAVE_WRAPPER_DECLS
-#include "xf86_OSlib.h"
-#else
-void xf86WrapperInit(void);
-#endif
-
-
-#ifndef X_NOT_POSIX
-#include <dirent.h>
-#else
-#ifdef SYSV
-#include <dirent.h>
-#else
-#ifdef USG
-#include <dirent.h>
-#else
-#include <sys/dir.h>
-#ifndef dirent
-#define dirent direct
-#endif
-#endif
-#endif
-#endif
-typedef struct dirent DIRENTRY;
-
-#ifdef __UNIXOS2__
-#define _POSIX_SOURCE
-#endif
-#ifdef ISC202
-#include <sys/types.h>
-#define WIFEXITED(a) ((a & 0x00ff) == 0) /* LSB will be 0 */
-#define WEXITSTATUS(a) ((a & 0xff00) >> 8)
-#define WIFSIGNALED(a) ((a & 0xff00) == 0) /* MSB will be 0 */
-#define WTERMSIG(a) (a & 0x00ff)
-#else
-#if defined(ISC) && !defined(_POSIX_SOURCE)
-#define _POSIX_SOURCE
-#include <sys/types.h>
-#include <sys/wait.h>
-#undef _POSIX_SOURCE
-#else
-#if (defined(ISC) && defined(_POSIX_SOURCE)) || defined(Lynx) || (defined (__alpha__) && defined(linux))
-#include <sys/types.h>
-#endif
-#include <sys/wait.h>
-#endif
-#endif
-#ifdef Lynx
-#if !defined(S_IFIFO) && defined(S_IFFIFO)
-#define S_IFIFO S_IFFIFO
-#endif
-#endif
-
-/* For xf86getpagesize() */
-#if defined(linux)
-#define HAS_SC_PAGESIZE
-#define HAS_GETPAGESIZE
-#elif defined(CSRG_BASED)
-#define HAS_GETPAGESIZE
-#elif defined(DGUX)
-#define HAS_GETPAGESIZE
-#elif defined(sun) && !defined(SVR4)
-#define HAS_GETPAGESIZE
-#endif
-#ifdef XNO_SYSCONF
-#undef _SC_PAGESIZE
-#endif
-#ifdef HAVE_SYSV_IPC
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#endif
-#include <setjmp.h>
-
-#if defined(setjmp) && defined(__GNU_LIBRARY__) && \
- (!defined(__GLIBC__) || (__GLIBC__ < 2) || \
- ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 3)))
-#define HAS_GLIBC_SIGSETJMP 1
-#endif
-
-#if 0
-#define SETBUF_RETURNS_INT
-#endif
-
-double xf86HUGE_VAL;
-
-#ifndef SELF_CONTAINED_WRAPPERS
-extern void xf86DisableIO(void);
-#endif
-
-/*
- * This file contains the XFree86 wrappers for libc functions that can be
- * called by loadable modules
- */
-
-double
-xf86hypot(double x, double y)
-{
- return(hypot(x,y));
-}
-
-void
-xf86qsort(void *base, xf86size_t nmemb, xf86size_t size,
- int (*comp)(const void *, const void *))
-{
- qsort(base, nmemb, size, comp);
-}
-
-/* string functions */
-
-char*
-xf86strcat(char* dest, const char* src)
-{
- return(strcat(dest,src));
-}
-
-char*
-xf86strchr(const char* s, int c)
-{
- return strchr(s,c);
-}
-
-int
-xf86strcmp(const char* s1, const char* s2)
-{
- return strcmp(s1,s2);
-}
-
-/* Just like the BSD version. It assumes that tolower() is ANSI-compliant */
-int
-xf86strcasecmp(const char* s1, const char* s2)
-{
- const unsigned char *us1 = (const unsigned char *)s1;
- const unsigned char *us2 = (const unsigned char *)s2;
-
- while (tolower(*us1) == tolower(*us2++))
- if (*us1++ == '\0')
- return 0;
-
- return tolower(*us1) - tolower(*--us2);
-}
-
-char*
-xf86strcpy(char* dest, const char* src)
-{
- return strcpy(dest,src);
-}
-
-xf86size_t
-xf86strcspn(const char* s1, const char* s2)
-{
- return (xf86size_t)strcspn(s1,s2);
-}
-
-xf86size_t
-xf86strlen(const char* s)
-{
- return (xf86size_t)strlen(s);
-}
-
-xf86size_t
-xf86strlcat(char *dest, const char *src, xf86size_t size)
-{
- return(strlcat(dest, src, size));
-}
-
-xf86size_t
-xf86strlcpy(char *dest, const char *src, xf86size_t size)
-{
- return strlcpy(dest, src, size);
-}
-
-char*
-xf86strncat(char* dest, const char* src, xf86size_t n)
-{
- return strncat(dest,src,(size_t)n);
-}
-
-int
-xf86strncmp(const char* s1, const char* s2, xf86size_t n)
-{
- return strncmp(s1,s2,(size_t)n);
-}
-
-/* Just like the BSD version. It assumes that tolower() is ANSI-compliant */
-int
-xf86strncasecmp(const char* s1, const char* s2, xf86size_t n)
-{
- if (n != 0) {
- const unsigned char *us1 = (const unsigned char *)s1;
- const unsigned char *us2 = (const unsigned char *)s2;
-
- do {
- if (tolower(*us1) != tolower(*us2++))
- return tolower(*us1) - tolower(*--us2);
- if (*us1++ == '\0')
- break;
- } while (--n != 0);
- }
- return 0;
-}
-
-char*
-xf86strncpy(char* dest, const char* src, xf86size_t n)
-{
- return strncpy(dest,src,(size_t)n);
-}
-
-char*
-xf86strpbrk(const char* s1, const char* s2)
-{
- return strpbrk(s1,s2);
-}
-
-char*
-xf86strrchr(const char* s, int c)
-{
- return strrchr(s,c);
-}
-
-xf86size_t
-xf86strspn(const char* s1, const char* s2)
-{
- return strspn(s1,s2);
-}
-
-char*
-xf86strstr(const char* s1, const char* s2)
-{
- return strstr(s1,s2);
-}
-
-char*
-xf86strtok(char* s1, const char* s2)
-{
- return strtok(s1,s2);
-}
-
-char*
-xf86strdup(const char* s)
-{
- return xstrdup(s);
-}
-
-int
-xf86sprintf(char *s, const char *format, ...)
-{
- int ret;
- va_list args;
- va_start(args, format);
- ret = vsprintf(s, format, args);
- va_end(args);
- return ret;
-}
-
-int
-xf86snprintf(char *s, xf86size_t len, const char *format, ...)
-{
- int ret;
- va_list args;
- va_start(args, format);
- ret = vsnprintf(s, (size_t)len, format, args);
- va_end(args);
- return ret;
-}
-
-void
-xf86bzero(void* s, unsigned int n)
-{
- memset(s, 0, n);
-}
-
-#ifdef HAVE_VSSCANF
-int
-xf86sscanf(char *s, const char *format, ...)
-#else
-int
-xf86sscanf(char *s, const char *format, char *a0, char *a1, char *a2,
- char *a3, char *a4, char *a5, char *a6, char *a7, char *a8,
- char *a9) /* limit of ten args */
-#endif
-{
-#ifdef HAVE_VSSCANF
- int ret;
- va_list args;
- va_start(args, format);
-
- ret = vsscanf(s,format,args);
- va_end(args);
- return ret;
-#else
- return sscanf(s, format, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
-#endif
-}
-
-/* Basic I/O */
-
-int xf86errno;
-
-/* XXX This is not complete */
-
-static int
-xfToOsOpenFlags(int xfflags)
-{
- int flags = 0;
-
- /* XXX This assumes O_RDONLY is 0 */
- if (xfflags & XF86_O_WRONLY)
- flags |= O_WRONLY;
- if (xfflags & XF86_O_RDWR)
- flags |= O_RDWR;
- if (xfflags & XF86_O_CREAT)
- flags |= O_CREAT;
-
- return flags;
-}
-
-int
-xf86open(const char *path, int flags, ...)
-{
- int fd;
- va_list ap;
-
- va_start(ap, flags);
- flags = xfToOsOpenFlags(flags);
- if (flags & O_CREAT) {
- /* can't request a mode_t directly on systems where mode_t
- is an unsigned short */
- mode_t mode = (mode_t)va_arg(ap, unsigned int);
- fd = open(path, flags, mode);
- } else {
- fd = open(path, flags);
- }
- va_end(ap);
- xf86errno = xf86GetErrno();
-
- return fd;
-}
-
-int
-xf86close(int fd)
-{
- int status = close(fd);
-
- xf86errno = xf86GetErrno();
- return status;
-}
-
-long
-xf86lseek(int fd, long offset, int whence)
-{
- switch (whence) {
- case XF86_SEEK_SET:
- whence = SEEK_SET;
- break;
- case XF86_SEEK_CUR:
- whence = SEEK_CUR;
- break;
- case XF86_SEEK_END:
- whence = SEEK_END;
- break;
- }
- return (long)lseek(fd, (off_t)offset, whence);
-}
-
-int
-xf86ioctl(int fd, unsigned long request, pointer argp)
-{
- int status = ioctl(fd, request, argp);
-
- xf86errno = xf86GetErrno();
- return status;
-}
-
-xf86ssize_t
-xf86read(int fd, void *buf, xf86size_t nbytes)
-{
- xf86ssize_t n = read(fd, buf, (size_t)nbytes);
-
- xf86errno = xf86GetErrno();
- return n;
-}
-
-xf86ssize_t
-xf86write(int fd, const void *buf, xf86size_t nbytes)
-{
- xf86ssize_t n = write(fd, buf, (size_t)nbytes);
-
- xf86errno = xf86GetErrno();
- return n;
-}
-
-void*
-xf86mmap(void *start, xf86size_t length, int prot,
- int flags, int fd, xf86size_t /* off_t */ offset)
-{
-#ifndef NO_MMAP
- int p=0, f=0;
- void *rc;
-
- if (flags & XF86_MAP_FIXED) f |= MAP_FIXED;
- if (flags & XF86_MAP_SHARED) f |= MAP_SHARED;
- if (flags & XF86_MAP_PRIVATE) f |= MAP_PRIVATE;
-#if defined(__amd64__) && defined(linux)
- if (flags & XF86_MAP_32BIT) f |= MAP_32BIT;
-#endif
- if (prot & XF86_PROT_EXEC) p |= PROT_EXEC;
- if (prot & XF86_PROT_READ) p |= PROT_READ;
- if (prot & XF86_PROT_WRITE) p |= PROT_WRITE;
- if (prot & XF86_PROT_NONE) p |= PROT_NONE;
-
- rc = mmap(start,(size_t)length,p,f,fd,(off_t)offset);
-
- xf86errno = xf86GetErrno();
- if (rc == MAP_FAILED)
- return XF86_MAP_FAILED;
- else
- return rc;
-#else
-#ifdef HAS_SVR3_MMAPDRV
- void *rc;
-#ifdef SELF_CONTAINED_WRAPPER
- if(mmapFd < 0) {
- if ((mmapFd = open("/dev/mmap", O_RDWR)) == -1) {
- ErrorF("Warning: failed to open /dev/mmap \n");
- xf86errno = xf86_ENOSYS;
- return XF86_MAP_FAILED;
- }
- }
-#endif
- MapDSC.vaddr = (char *)start;
- MapDSC.physaddr = (char *)offset;
- MapDSC.length = length;
- MapDSC.ioflg = 1;
-
- rc = (pointer)ioctl(mmapFd, MAP, &MapDSC);
- xf86errno = xf86GetErrno();
- if (rc == NULL)
- return XF86_MAP_FAILED;
- else
- return rc;
-#else
- ErrorF("Warning: mmap() is not supported on this platform\n");
- xf86errno = xf86_ENOSYS;
- return XF86_MAP_FAILED;
-#endif
-#endif
-}
-
-int
-xf86munmap(void *start, xf86size_t length)
-{
-#ifndef NO_MMAP
- int rc = munmap(start,(size_t)length);
-
- xf86errno = xf86GetErrno();
- return rc;
-#else
-#ifdef HAS_SVR3_MMAPDRV
- int rc = ioctl(mmapFd, UNMAPRM , start);
-
- xf86errno = xf86GetErrno();
- return rc;
-#else
- ErrorF("Warning: munmap() is not supported on this platform\n");
- xf86errno = xf86_ENOSYS;
- return -1;
-#endif
-#endif
-}
-
-int
-xf86stat(const char *file_name, struct xf86stat *xfst)
-{
- int rc;
- struct stat st;
-
- rc = stat(file_name, &st);
- xf86errno = xf86GetErrno();
- xfst->st_rdev = st.st_rdev; /* Not much is currently supported */
- return rc;
-}
-
-int
-xf86fstat(int fd, struct xf86stat *xfst)
-{
- int rc;
- struct stat st;
-
- rc = fstat(fd, &st);
- xf86errno = xf86GetErrno();
- xfst->st_rdev = st.st_rdev; /* Not much is currently supported */
- return rc;
-}
-
-static int
-xfToOsAccessMode(int xfmode)
-{
- switch(xfmode) {
- case XF86_R_OK: return R_OK;
- case XF86_W_OK: return W_OK;
- case XF86_X_OK: return X_OK;
- case XF86_F_OK: return F_OK;
- }
- return 0;
-}
-
-int
-xf86access(const char *pathname, int mode)
-{
- int rc;
-
- mode = xfToOsAccessMode(mode);
- rc = access(pathname, mode);
- xf86errno = xf86GetErrno();
- return rc;
-}
-
-
-
-/* limited stdio support */
-
-#define XF86FILE_magic 0x58464856 /* "XFHV" */
-
-typedef struct _xf86_file_ {
- INT32 fileno;
- INT32 magic;
- FILE* filehnd;
- char* fname;
-} XF86FILE_priv;
-
-XF86FILE_priv stdhnd[3] = {
- { 0, XF86FILE_magic, NULL, "$stdinp$" },
- { 0, XF86FILE_magic, NULL, "$stdout$" },
- { 0, XF86FILE_magic, NULL, "$stderr$" }
-};
-
-XF86FILE* xf86stdin = (XF86FILE*)&stdhnd[0];
-XF86FILE* xf86stdout = (XF86FILE*)&stdhnd[1];
-XF86FILE* xf86stderr = (XF86FILE*)&stdhnd[2];
-
-void
-xf86WrapperInit()
-{
- if (stdhnd[0].filehnd == NULL)
- stdhnd[0].filehnd = stdin;
- if (stdhnd[1].filehnd == NULL)
- stdhnd[1].filehnd = stdout;
- if (stdhnd[2].filehnd == NULL)
- stdhnd[2].filehnd = stderr;
- xf86HUGE_VAL = HUGE_VAL;
-}
-
-XF86FILE*
-xf86fopen(const char* fn, const char* mode)
-{
- XF86FILE_priv* fp;
- FILE *f = fopen(fn,mode);
- xf86errno = xf86GetErrno();
- if (!f) return 0;
-
- fp = xalloc(sizeof(XF86FILE_priv));
- fp->magic = XF86FILE_magic;
- fp->filehnd = f;
- fp->fileno = fileno(f);
- fp->fname = xf86strdup(fn);
-#ifdef DEBUG
- ErrorF("xf86fopen(%s,%s) yields FILE %p XF86FILE %p\n",
- fn,mode,f,fp);
-#endif
- return (XF86FILE*)fp;
-}
-
-static void _xf86checkhndl(XF86FILE_priv* f,const char *func)
-{
- if (!f || f->magic != XF86FILE_magic ||
- !f->filehnd || !f->fname) {
- FatalError("libc_wrapper error: passed invalid FILE handle to %s",
- func);
- exit(42);
- }
-}
-
-int
-xf86fclose(XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
- int ret;
-
- _xf86checkhndl(fp,"xf86fclose");
-
- /* somewhat bad check */
- if (fp->fileno < 3 && fp->fname[0]=='$') {
- /* assume this is stdin/out/err, don't dispose */
- ret = fclose(fp->filehnd);
- } else {
- ret = fclose(fp->filehnd);
- fp->magic = 0; /* invalidate */
- xfree(fp->fname);
- xfree(fp);
- }
- return ret ? -1 : 0;
-}
-
-int
-xf86printf(const char *format, ...)
-{
- int ret;
- va_list args;
- va_start(args, format);
-
- ret = printf(format,args);
- va_end(args);
- return ret;
-}
-
-int
-xf86fprintf(XF86FILE* f, const char *format, ...)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- int ret;
- va_list args;
- va_start(args, format);
-
-#ifdef DEBUG
- ErrorF("xf86fprintf for XF86FILE %p\n", fp);
-#endif
- _xf86checkhndl(fp,"xf86fprintf");
-
- ret = vfprintf(fp->filehnd,format,args);
- va_end(args);
- return ret;
-}
-
-int
-xf86vfprintf(XF86FILE* f, const char *format, va_list ap)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-#ifdef DEBUG
- ErrorF("xf86vfprintf for XF86FILE %p\n", fp);
-#endif
- _xf86checkhndl(fp,"xf86vfprintf");
-
- return vfprintf(fp->filehnd,format,ap);
-}
-
-int
-xf86vsprintf(char *s, const char *format, va_list ap)
-{
- return vsprintf(s, format, ap);
-}
-
-int
-xf86vsnprintf(char *s, xf86size_t len, const char *format, va_list ap)
-{
- return vsnprintf(s, (size_t)len, format, ap);
-}
-
-#ifdef HAVE_VFSCANF
-int
-xf86fscanf(XF86FILE* f, const char *format, ...)
-#else
-int
-xf86fscanf(XF86FILE* f, const char *format, char *a0, char *a1, char *a2,
- char *a3, char *a4, char *a5, char *a6, char *a7, char *a8,
- char *a9) /* limit of ten args */
-#endif
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-#ifdef HAVE_VFSCANF
- int ret;
- va_list args;
- va_start(args, format);
-
- _xf86checkhndl(fp,"xf86fscanf");
-
- ret = vfscanf(fp->filehnd,format,args);
- va_end(args);
- return ret;
-#else
- _xf86checkhndl(fp,"xf86fscanf");
- return fscanf(fp->filehnd, format, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
-#endif
-}
-
-char *
-xf86fgets(char *buf, INT32 n, XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86fgets");
- return fgets(buf,(int)n,fp->filehnd);
-}
-
-int
-xf86fputs(const char *buf, XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86fputs");
- return fputs(buf,fp->filehnd);
-}
-
-int
-xf86getc(XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86getc");
- return getc(fp->filehnd);
-}
-
-int
-xf86fgetc(XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86fgetc");
- return fgetc(fp->filehnd);
-}
-
-int
-xf86fputc(int c,XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86fputc");
- return fputc(c,fp->filehnd);
-}
-
-int
-xf86fflush(XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86fflush");
- return fflush(fp->filehnd);
-}
-
-xf86size_t
-xf86fread(void* buf, xf86size_t sz, xf86size_t cnt, XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
-#ifdef DEBUG
- ErrorF("xf86fread for XF86FILE %p\n", fp);
-#endif
- _xf86checkhndl(fp,"xf86fread");
- return fread(buf,(size_t)sz,(size_t)cnt,fp->filehnd);
-}
-
-xf86size_t
-xf86fwrite(const void* buf, xf86size_t sz, xf86size_t cnt, XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86fwrite");
- return fwrite(buf,(size_t)sz,(size_t)cnt,fp->filehnd);
-}
-
-int
-xf86fseek(XF86FILE* f, long offset, int whence)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86fseek");
- switch (whence) {
- case XF86_SEEK_SET:
- whence = SEEK_SET;
- break;
- case XF86_SEEK_CUR:
- whence = SEEK_CUR;
- break;
- case XF86_SEEK_END:
- whence = SEEK_END;
- break;
- }
- return fseek(fp->filehnd,offset,whence);
-}
-
-long
-xf86ftell(XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86ftell");
- return ftell(fp->filehnd);
-}
-
-#define mapnum(e) case (xf86_##e): err = e; break;
-
-char*
-xf86strerror(int n)
-{
- int err;
-
- switch (n)
- {
- case 0: err = 0; break;
- mapnum (EACCES);
- mapnum (EAGAIN);
- mapnum (EBADF);
- mapnum (EEXIST);
- mapnum (EFAULT);
- mapnum (EINTR);
- mapnum (EINVAL);
- mapnum (EISDIR);
- mapnum (ELOOP); /* not POSIX 1 */
- mapnum (EMFILE);
- mapnum (ENAMETOOLONG);
- mapnum (ENFILE);
- mapnum (ENOENT);
- mapnum (ENOMEM);
- mapnum (ENOSPC);
- mapnum (ENOTDIR);
- mapnum (EPIPE);
- mapnum (EROFS);
-#ifndef __UNIXOS2__
- mapnum (ETXTBSY); /* not POSIX 1 */
-#endif
- mapnum (ENOTTY);
-#ifdef ENOSYS
- mapnum (ENOSYS);
-#endif
- mapnum (EBUSY);
- mapnum (ENODEV);
- mapnum (EIO);
-#ifdef ESRCH
- mapnum (ESRCH);
-#endif
-#ifdef ENXIO
- mapnum (ENXIO);
-#endif
-#ifdef E2BIG
- mapnum (E2BIG);
-#endif
-#ifdef ENOEXEC
- mapnum (ENOEXEC);
-#endif
-#ifdef ECHILD
- mapnum (ECHILD);
-#endif
-#ifdef ENOTBLK
- mapnum (ENOTBLK);
-#endif
-#ifdef EXDEV
- mapnum (EXDEV);
-#endif
-#ifdef EFBIG
- mapnum (EFBIG);
-#endif
-#ifdef ESPIPE
- mapnum (ESPIPE);
-#endif
-#ifdef EMLINK
- mapnum (EMLINK);
-#endif
-#ifdef EDOM
- mapnum (EDOM);
-#endif
-#ifdef ERANGE
- mapnum (ERANGE);
-#endif
-
- default:
- err = 999;
- }
- return strerror(err);
-}
-
-#undef mapnum
-
-
-/* required for portable fgetpos/fsetpos,
- * use as
- * XF86fpos_t* pos = xalloc(xf86fpossize());
- */
-long
-xf86fpossize()
-{
- return sizeof(fpos_t);
-}
-
-int
-xf86fgetpos(XF86FILE* f,XF86fpos_t* pos)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
- fpos_t *ppos = (fpos_t*)pos;
-
- _xf86checkhndl(fp,"xf86fgetpos");
-#ifndef ISC
- return fgetpos(fp->filehnd,ppos);
-#else
- *ppos = ftell(fp->filehnd);
- if (*ppos < 0L)
- return(-1);
- return(0);
-#endif
-}
-
-int
-xf86fsetpos(XF86FILE* f,const XF86fpos_t* pos)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
- fpos_t *ppos = (fpos_t*)pos;
-
- /* XXX need to handle xf86errno here */
- _xf86checkhndl(fp,"xf86fsetpos");
-#ifndef ISC
- return fsetpos(fp->filehnd,ppos);
-#else
- if (ppos == NULL)
- {
- errno = EINVAL;
- return EOF;
- }
- return fseek(fp->filehnd, *ppos, SEEK_SET);
-#endif
-}
-
-void
-xf86perror(const char *s)
-{
- perror(s);
-}
-
-int
-xf86remove(const char *s)
-{
-#ifdef _POSIX_SOURCE
- return remove(s);
-#else
- return unlink(s);
-#endif
-}
-
-int
-xf86rename(const char *old, const char *new)
-{
-#ifdef _POSIX_SOURCE
- return rename(old,new);
-#else
- int ret = link(old,new);
- if (!ret) {
- ret = unlink(old);
- if (ret) unlink(new);
- } else
- ret = unlink(new);
- return ret;
-#endif
-}
-
-void
-xf86rewind(XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86fsetpos");
- rewind(fp->filehnd);
-}
-
-void
-xf86clearerr(XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86clearerr");
- clearerr(fp->filehnd);
-}
-
-int
-xf86feof(XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86feof");
- return feof(fp->filehnd);
-}
-
-int
-xf86ferror(XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86ferror");
- return ferror(fp->filehnd);
-}
-
-XF86FILE*
-xf86freopen(const char* fname,const char* mode,XF86FILE* fold)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)fold;
- FILE *fnew;
-
- _xf86checkhndl(fp,"xf86freopen");
- fnew = freopen(fname,mode,fp->filehnd);
- xf86errno = xf86GetErrno();
- if (!fnew) {
- xf86fclose(fold); /* discard old XF86FILE structure */
- return 0;
- }
- /* recycle the old XF86FILE structure */
- fp->magic = XF86FILE_magic;
- fp->filehnd = fnew;
- fp->fileno = fileno(fnew);
- fp->fname = xf86strdup(fname);
-#ifdef DEBUG
- ErrorF("xf86freopen(%s,%s,%p) yields FILE %p XF86FILE %p\n",
- fname,mode,fold,fnew,fp);
-#endif
- return (XF86FILE*)fp;
-}
-
-int
-xf86setbuf(XF86FILE* f, char *buf)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86fsetbuf");
-#ifdef SETBUF_RETURNS_INT
- return setbuf(fp->filehnd, buf);
-#else
- setbuf(fp->filehnd, buf);
- return 0;
-#endif
-}
-
-int
-xf86setvbuf(XF86FILE* f, char *buf, int mode, xf86size_t size)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
- int vbufmode;
-
- _xf86checkhndl(fp,"xf86fsetvbuf");
-
- switch (mode) {
- case XF86_IONBF:
- vbufmode = _IONBF;
- break;
- case XF86_IOLBF:
- vbufmode = _IOFBF;
- break;
- case XF86_IOFBF:
- vbufmode = _IOLBF;
- break;
- default:
- FatalError("libc_wrapper error: mode in setvbuf incorrect");
- exit(42);
- }
-
- return setvbuf(fp->filehnd,buf,vbufmode,(size_t)size);
-}
-
-XF86FILE*
-xf86tmpfile(void)
-{
-#ifdef NEED_TMPFILE
- return xf86fopen(tmpnam((char*)0),"w+");
-#else
- XF86FILE_priv* fp;
- FILE *f = tmpfile();
- xf86errno = xf86GetErrno();
- if (!f) return 0;
-
- fp = xalloc(sizeof(XF86FILE_priv));
- fp->magic = XF86FILE_magic;
- fp->filehnd = f;
- fp->fileno = fileno(f);
- fp->fname = xf86strdup("*tmpfile*"); /* so that it can be xfree()'d */
-#ifdef DEBUG
- ErrorF("xf86tmpfile() yields FILE %p XF86FILE %p\n",f,fp);
-#endif
- return (XF86FILE*)fp;
-}
-#endif /* HAS_TMPFILE */
-
-
-int
-xf86ungetc(int c,XF86FILE* f)
-{
- XF86FILE_priv* fp = (XF86FILE_priv*)f;
-
- _xf86checkhndl(fp,"xf86ungetc");
- return ungetc(c,fp->filehnd);
-}
-
-/* Misc functions. Some are ANSI C, some are not. */
-
-void
-xf86usleep(usec)
- unsigned long usec;
-{
-#if (defined(SYSV) || defined(SVR4)) && !defined(sun)
- syscall(3112, (usec) / 1000 + 1);
-#else
- usleep(usec);
-#endif
-}
-
-void
-xf86getsecs(long * secs, long * usecs)
-{
- struct timeval tv;
-
- X_GETTIMEOFDAY(&tv);
- if (secs)
- *secs = tv.tv_sec;
- if (usecs)
- *usecs= tv.tv_usec;
-
- return;
-}
-
-int
-xf86ffs(int mask)
-{
- int n;
- if (mask == 0) return 0;
- for (n = 1; (mask & 1)==0; n++)
- mask >>= 1;
- return n;
-}
-
-char *
-xf86getenv(const char * a)
-{
- /* Only allow this when the real and effective uids are the same */
- if (getuid() != geteuid())
- return NULL;
- else
- return(getenv(a));
-}
-
-void *
-xf86bsearch(const void *key, const void *base, xf86size_t nmemb,
- xf86size_t size, int (*compar)(const void *, const void *))
-{
- return bsearch(key, base, (size_t)nmemb, (size_t)size, compar);
-}
-
-int
-xf86execl(const char *pathname, const char *arg, ...)
-{
-#ifndef __UNIXOS2__
- int i;
- pid_t pid;
- int exit_status;
- char *arglist[5];
- va_list args;
- va_start(args, arg);
- arglist[0] = (char*)&args;
- i = 1;
- while (i < 5 && (arglist[i++] = va_arg(args, char *)) != NULL)
- ;
- va_end(args);
-
- if ((pid = fork()) < 0) {
- ErrorF("Fork failed (%s)\n", strerror(errno));
- return -1;
- } else if (pid == 0) { /* child */
- /*
- * Make sure that the child doesn't inherit any I/O permissions it
- * shouldn't have. It's better to put constraints on the development
- * of a clock program than to give I/O permissions to a bogus program
- * in someone's XF86Config file
- */
-#ifndef SELF_CONTAINED_WRAPPER
- xf86DisableIO();
-#endif
- if (setuid(getuid()) == -1) {
- ErrorF("xf86Execl: setuid() failed: %s\n", strerror(errno));
- exit(255);
- }
-#if !defined(SELF_CONTAINED_WRAPPER)
- /* set stdin, stdout to the consoleFD, and leave stderr alone */
- for (i = 0; i < 2; i++)
- {
- if (xf86Info.consoleFd != i)
- {
- close(i);
- dup(xf86Info.consoleFd);
- }
- }
-#endif
-
- execv(pathname, arglist);
- ErrorF("Exec failed for command \"%s\" (%s)\n",
- pathname, strerror(errno));
- exit(255);
- }
-
- /* parent */
- wait(&exit_status);
- if (WIFEXITED(exit_status))
- {
- switch (WEXITSTATUS(exit_status))
- {
- case 0: /* OK */
- return 0;
- case 255: /* exec() failed */
- return(255);
- default: /* bad exit status */
- ErrorF("Program \"%s\" had bad exit status %d\n",
- pathname, WEXITSTATUS(exit_status));
- return(WEXITSTATUS(exit_status));
- }
- }
- else if (WIFSIGNALED(exit_status))
- {
- ErrorF("Program \"%s\" died on signal %d\n",
- pathname, WTERMSIG(exit_status));
- return(WTERMSIG(exit_status));
- }
-#ifdef WIFSTOPPED
- else if (WIFSTOPPED(exit_status))
- {
- ErrorF("Program \"%s\" stopped by signal %d\n",
- pathname, WSTOPSIG(exit_status));
- return(WSTOPSIG(exit_status));
- }
-#endif
- else /* should never get to this point */
- {
- ErrorF("Program \"%s\" has unknown exit condition\n",
- pathname);
- return(1);
- }
-#else
- return(1);
-#endif /* __UNIXOS2__ Disable this crazy business for now */
-}
-
-void
-xf86abort(void)
-{
- ErrorF("Module called abort() function\n");
- abort();
-}
-
-void
-xf86exit(int ex)
-{
- ErrorF("Module called exit() function with value=%d\n",ex);
- exit(ex);
-}
-
-/* directory handling functions */
-#define XF86DIR_magic 0x78666876 /* "xfhv" */
-
-typedef struct _xf86_dir_ {
- DIR *dir;
- INT32 magic;
- XF86DIRENT *dirent;
-} XF86DIR_priv;
-
-static void
-_xf86checkdirhndl(XF86DIR_priv* f,const char *func)
-{
- if (!f || f->magic != XF86DIR_magic || !f->dir || !f->dirent) {
- FatalError("libc_wrapper error: passed invalid DIR handle to %s",
- func);
- exit(42);
- }
-}
-
-XF86DIR *
-xf86opendir(const char *name)
-{
- XF86DIR_priv *dp;
- DIR *dirp;
-
- dirp = opendir(name);
- if (!dirp)
- return (XF86DIR*)0;
-
- dp = xalloc(sizeof(XF86DIR_priv));
- dp->magic = XF86DIR_magic; /* This time I have this, Dirk! :-) */
- dp->dir = dirp;
- dp->dirent = xalloc(sizeof(struct _xf86dirent));
-
- return (XF86DIR*)dp;
-}
-
-XF86DIRENT*
-xf86readdir(XF86DIR* dirp)
-{
- XF86DIR_priv* dp = (XF86DIR_priv*)dirp;
- DIRENTRY *de;
- XF86DIRENT* xde;
- int sz;
-
- _xf86checkdirhndl(dp,"xf86readdir");
-
- de = readdir(dp->dir);
- if (!de)
- return (XF86DIRENT*)0;
- xde = dp->dirent;
- sz = strlen(de->d_name);
- strncpy(xde->d_name,de->d_name, sz>_XF86NAMELEN ? (_XF86NAMELEN+1) : (sz+1));
- xde->d_name[_XF86NAMELEN] = '\0'; /* be sure to have a 0 byte */
- return xde;
-}
-
-void
-xf86rewinddir(XF86DIR* dirp)
-{
- XF86DIR_priv* dp = (XF86DIR_priv*)dirp;
-
- _xf86checkdirhndl(dp,"xf86readdir");
- rewinddir(dp->dir);
-}
-
-int
-xf86closedir(XF86DIR* dir)
-{
- XF86DIR_priv* dp = (XF86DIR_priv*)dir;
- int n;
-
- _xf86checkdirhndl(dp,"xf86readdir");
-
- n = closedir(dp->dir);
- dp->magic = 0;
- xfree(dp->dirent);
- xfree(dp);
-
- return n;
-}
-
-static mode_t
-xfToOsChmodMode(xf86mode_t xfmode)
-{
- mode_t mode = 0;
-
- if (xfmode & XF86_S_ISUID) mode |= S_ISUID;
- if (xfmode & XF86_S_ISGID) mode |= S_ISGID;
-#ifndef __UNIXOS2__
- if (xfmode & XF86_S_ISVTX) mode |= S_ISVTX;
-#endif
- if (xfmode & XF86_S_IRUSR) mode |= S_IRUSR;
- if (xfmode & XF86_S_IWUSR) mode |= S_IWUSR;
- if (xfmode & XF86_S_IXUSR) mode |= S_IXUSR;
- if (xfmode & XF86_S_IRGRP) mode |= S_IRGRP;
- if (xfmode & XF86_S_IWGRP) mode |= S_IWGRP;
- if (xfmode & XF86_S_IXGRP) mode |= S_IXGRP;
- if (xfmode & XF86_S_IROTH) mode |= S_IROTH;
- if (xfmode & XF86_S_IWOTH) mode |= S_IWOTH;
- if (xfmode & XF86_S_IXOTH) mode |= S_IXOTH;
-
- return mode;
-}
-
-int
-xf86chmod(const char *path, xf86mode_t xfmode)
-{
- mode_t mode = xfToOsChmodMode(xfmode);
- int rc = chmod(path, mode);
-
- xf86errno = xf86GetErrno();
- return rc;
-}
-
-int
-xf86chown(const char *path, xf86uid_t owner, xf86gid_t group)
-{
-#ifndef __UNIXOS2__
- int rc = chown(path, owner, group);
-#else
- int rc = 0;
-#endif
- xf86errno = xf86GetErrno();
- return rc;
-}
-
-xf86uid_t
-xf86geteuid(void)
-{
- return geteuid();
-}
-
-xf86gid_t
-xf86getegid(void)
-{
- return getegid();
-}
-
-int
-xf86getpid(void)
-{
- return getpid();
-}
-
-static mode_t
-xfToOsMknodMode(xf86mode_t xfmode)
-{
- mode_t mode = xfToOsChmodMode(xfmode);
-
- if (xfmode & XF86_S_IFREG) mode |= S_IFREG;
- if (xfmode & XF86_S_IFCHR) mode |= S_IFCHR;
-#ifndef __UNIXOS2__
- if (xfmode & XF86_S_IFBLK) mode |= S_IFBLK;
-#endif
- if (xfmode & XF86_S_IFIFO) mode |= S_IFIFO;
-
- return mode;
-}
-
-int xf86mknod(const char *pathname, xf86mode_t xfmode, xf86dev_t dev)
-{
- mode_t mode = xfToOsMknodMode(xfmode);
-#ifndef __UNIXOS2__
- int rc = mknod(pathname, mode, dev);
-#else
- int rc = 0;
-#endif
- xf86errno = xf86GetErrno();
- return rc;
-}
-
-unsigned int xf86sleep(unsigned int seconds)
-{
- return sleep(seconds);
-}
-
-int xf86mkdir(const char *pathname, xf86mode_t xfmode)
-{
- mode_t mode = xfToOsChmodMode(xfmode);
- int rc = mkdir(pathname, mode);
-
- xf86errno = xf86GetErrno();
- return rc;
-}
-
-
-/* Several math functions */
-
-int
-xf86abs(int x)
-{
- return abs(x);
-}
-
-double
-xf86acos(double x)
-{
- return acos(x);
-}
-
-double
-xf86asin(double x)
-{
- return asin(x);
-}
-
-double
-xf86atan(double x)
-{
- return atan(x);
-}
-
-double
-xf86atan2(double x,double y)
-{
- return atan2(x,y);
-}
-
-double
-xf86atof(const char* s)
-{
- return atof(s);
-}
-
-int
-xf86atoi(const char* s)
-{
- return atoi(s);
-}
-
-long
-xf86atol(const char* s)
-{
- return atol(s);
-}
-
-double
-xf86ceil(double x)
-{
- return ceil(x);
-}
-
-double
-xf86cos(double x)
-{
- return(cos(x));
-}
-
-double
-xf86exp(double x)
-{
- return(exp(x));
-}
-
-double
-xf86fabs(double x)
-{
- return(fabs(x));
-}
-
-int
-xf86finite(double x)
-{
-#ifndef QNX4
-#ifndef __UNIXOS2__
- return(finite(x));
-#else
- return(isfinite(x));
-#endif /* __UNIXOS2__ */
-#else
- /* XXX Replace this with something that really works. */
- return 1;
-#endif
-}
-
-double
-xf86floor(double x)
-{
- return floor(x);
-}
-
-double
-xf86fmod(double x,double y)
-{
- return fmod(x,y);
-}
-
-long
-xf86labs(long x)
-{
- return labs(x);
-}
-
-double
-xf86ldexp(double x, int exp)
-{
- return ldexp(x, exp);
-}
-
-double
-xf86log(double x)
-{
- return(log(x));
-}
-
-double
-xf86log10(double x)
-{
- return(log10(x));
-}
-
-double
-xf86modf(double x,double* y)
-{
- return modf(x,y);
-}
-
-double
-xf86pow(double x, double y)
-{
- return(pow(x,y));
-}
-
-double
-xf86sin(double x)
-{
- return sin(x);
-}
-
-double
-xf86sqrt(double x)
-{
- return(sqrt(x));
-}
-
-double
-xf86strtod(const char *s, char **end)
-{
- return strtod(s,end);
-}
-
-long
-xf86strtol(const char *s, char **end, int radix)
-{
- return strtol(s,end,radix);
-}
-
-unsigned long
-xf86strtoul(const char *s, char **end,int radix)
-{
- return strtoul(s,end,radix);
-}
-
-double
-xf86tan(double x)
-{
- return tan(x);
-}
-
-/* memory functions */
-void*
-xf86memchr(const void* s, int c, xf86size_t n)
-{
- return memchr(s,c,(size_t)n);
-}
-
-int
-xf86memcmp(const void* s1, const void* s2, xf86size_t n)
-{
- return(memcmp(s1,s2,(size_t)n));
-}
-
-void*
-xf86memcpy(void* dest, const void* src, xf86size_t n)
-{
- return(memcpy(dest,src,(size_t)n));
-}
-
-void*
-xf86memmove(void* dest, const void* src, xf86size_t n)
-{
- return(memmove(dest,src,(size_t)n));
-}
-
-void*
-xf86memset(void* s, int c, xf86size_t n)
-{
- return(memset(s,c,(size_t)n));
-}
-
-/* ctype functions */
-
-int
-xf86isalnum(int c)
-{
- return isalnum(c) ? 1 : 0;
-}
-
-int
-xf86isalpha(int c)
-{
- return isalpha(c) ? 1 : 0;
-}
-
-int
-xf86iscntrl(int c)
-{
- return iscntrl(c) ? 1 : 0;
-}
-
-int
-xf86isdigit(int c)
-{
- return isdigit(c) ? 1 : 0;
-}
-
-int
-xf86isgraph(int c)
-{
- return isgraph(c) ? 1 : 0;
-}
-
-int
-xf86islower(int c)
-{
- return islower(c) ? 1 : 0;
-}
-
-int
-xf86isprint(int c)
-{
- return isprint(c) ? 1 : 0;
-}
-
-int
-xf86ispunct(int c)
-{
- return ispunct(c) ? 1 : 0;
-}
-
-int
-xf86isspace(int c)
-{
- return isspace(c) ? 1 : 0;
-}
-
-int
-xf86isupper(int c)
-{
- return isupper(c) ? 1 : 0;
-}
-
-int
-xf86isxdigit(int c)
-{
- return isxdigit(c) ? 1 : 0;
-}
-
-int
-xf86tolower(int c)
-{
- return tolower(c);
-}
-
-int
-xf86toupper(int c)
-{
- return toupper(c);
-}
-
-/* memory allocation functions */
-void*
-xf86calloc(xf86size_t sz,xf86size_t n)
-{
- return xcalloc(sz, n);
-}
-
-void
-xf86free(void* p)
-{
- xfree(p);
-}
-
-double
-xf86frexp(double x, int *exp)
-{
- return frexp(x, exp);
-}
-
-void*
-xf86malloc(xf86size_t n)
-{
- return xalloc(n);
-}
-
-void*
-xf86realloc(void* p, xf86size_t n)
-{
- return xrealloc(p,n);
-}
-
-/*
- * XXX This probably doesn't belong here.
- */
-int
-xf86getpagesize()
-{
- static int pagesize = -1;
-
- if (pagesize != -1)
- return pagesize;
-
-#if defined(_SC_PAGESIZE) || defined(HAS_SC_PAGESIZE)
- pagesize = sysconf(_SC_PAGESIZE);
-#endif
-#ifdef _SC_PAGE_SIZE
- if (pagesize == -1)
- pagesize = sysconf(_SC_PAGE_SIZE);
-#endif
-#ifdef HAS_GETPAGESIZE
- if (pagesize == -1)
- pagesize = getpagesize();
-#endif
-#ifdef PAGE_SIZE
- if (pagesize == -1)
- pagesize = PAGE_SIZE;
-#endif
- if (pagesize == -1)
- FatalError("xf86getpagesize: Cannot determine page size");
-
- return pagesize;
-}
-
-
-#define mapnum(e) case (e): return (xf86_##e)
-
-int
-xf86GetErrno ()
-{
- switch (errno)
- {
- case 0: return 0;
- mapnum (EACCES);
- mapnum (EAGAIN);
- mapnum (EBADF);
- mapnum (EEXIST);
- mapnum (EFAULT);
- mapnum (EINTR);
- mapnum (EINVAL);
- mapnum (EISDIR);
- mapnum (ELOOP); /* not POSIX 1 */
- mapnum (EMFILE);
- mapnum (ENAMETOOLONG);
- mapnum (ENFILE);
- mapnum (ENOENT);
- mapnum (ENOMEM);
- mapnum (ENOSPC);
- mapnum (ENOTDIR);
- mapnum (EPIPE);
- mapnum (EROFS);
-#ifndef __UNIXOS2__
- mapnum (ETXTBSY); /* not POSIX 1 */
-#endif
- mapnum (ENOTTY);
-#ifdef ENOSYS
- mapnum (ENOSYS);
-#endif
- mapnum (EBUSY);
- mapnum (ENODEV);
- mapnum (EIO);
-#ifdef ESRCH
- mapnum (ESRCH);
-#endif
-#ifdef ENXIO
- mapnum (ENXIO);
-#endif
-#ifdef E2BIG
- mapnum (E2BIG);
-#endif
-#ifdef ENOEXEC
- mapnum (ENOEXEC);
-#endif
-#ifdef ECHILD
- mapnum (ECHILD);
-#endif
-#ifdef ENOTBLK
- mapnum (ENOTBLK);
-#endif
-#ifdef EXDEV
- mapnum (EXDEV);
-#endif
-#ifdef EFBIG
- mapnum (EFBIG);
-#endif
-#ifdef ESPIPE
- mapnum (ESPIPE);
-#endif
-#ifdef EMLINK
- mapnum (EMLINK);
-#endif
-#ifdef EDOM
- mapnum (EDOM);
-#endif
-#ifdef ERANGE
- mapnum (ERANGE);
-#endif
- default:
- return (xf86_UNKNOWN);
- }
-}
-
-#undef mapnum
-
-
-
-#ifdef HAVE_SYSV_IPC
-
-int
-xf86shmget(xf86key_t key, int size, int xf86shmflg)
-{
- int shmflg;
- int ret;
-
- /* This copies the permissions (SHM_R, SHM_W for u, g, o). */
- shmflg = xf86shmflg & 0777;
-
- if (key == XF86IPC_PRIVATE) key = IPC_PRIVATE;
-
- if (xf86shmflg & XF86IPC_CREAT) shmflg |= IPC_CREAT;
- if (xf86shmflg & XF86IPC_EXCL) shmflg |= IPC_EXCL;
- if (xf86shmflg & XF86IPC_NOWAIT) shmflg |= IPC_NOWAIT;
- ret = shmget((key_t) key, size, shmflg);
-
- if (ret == -1)
- xf86errno = xf86GetErrno();
-
- return ret;
-}
-
-char *
-xf86shmat(int id, char *addr, int xf86shmflg)
-{
- int shmflg = 0;
- pointer ret;
-
-#ifdef SHM_RDONLY
- if (xf86shmflg & XF86SHM_RDONLY) shmflg |= SHM_RDONLY;
-#endif
-#ifdef SHM_RND
- if (xf86shmflg & XF86SHM_RND) shmflg |= SHM_RND;
-#endif
-#ifdef SHM_REMAP
- if (xf86shmflg & XF86SHM_REMAP) shmflg |= SHM_REMAP;
-#endif
-
- ret = shmat(id,addr,shmflg);
-
- if (ret == (pointer) -1)
- xf86errno = xf86GetErrno();
-
- return ret;
-}
-
-int
-xf86shmdt(char *addr)
-{
- int ret;
-
- ret = shmdt(addr);
-
- if (ret == -1)
- xf86errno = xf86GetErrno();
-
- return ret;
-}
-
-/*
- * for now only implement the rmid command.
- */
-int
-xf86shmctl(int id, int xf86cmd, pointer buf)
-{
- int cmd;
- int ret;
-
- switch (xf86cmd) {
- case XF86IPC_RMID:
- cmd = IPC_RMID;
- break;
- default:
- return 0;
- }
-
- ret = shmctl(id, cmd, buf);
-
- if (ret == -1)
- xf86errno = xf86GetErrno();
-
- return ret;
-}
-#else
-
-int
-xf86shmget(xf86key_t key, int size, int xf86shmflg)
-{
- xf86errno = ENOSYS;
-
- return -1;
-}
-
-char *
-xf86shmat(int id, char *addr, int xf86shmflg)
-{
- xf86errno = ENOSYS;
-
- return (char *)-1;
-}
-
-int
-xf86shmctl(int id, int xf86cmd, pointer buf)
-{
- xf86errno = ENOSYS;
-
- return -1;
-}
-
-int
-xf86shmdt(char *addr)
-{
- xf86errno = ENOSYS;
-
- return -1;
-}
-#endif /* HAVE_SYSV_IPC */
-
-int
-xf86getjmptype()
-{
-#ifdef HAS_GLIBC_SIGSETJMP
- return 1;
-#else
- return 0;
-#endif
-}
-
-#ifdef HAS_GLIBC_SIGSETJMP
-
-int
-xf86setjmp(xf86jmp_buf env)
-{
-#if defined(__GLIBC__) && (__GLIBC__ >= 2)
- return __sigsetjmp((void *)env, xf86setjmp1_arg2());
-#else
- return xf86setjmp1(env, xf86setjmp1_arg2());
-#endif
-}
-
-int
-xf86setjmp0(xf86jmp_buf env)
-{
- FatalError("setjmp: type 0 called instead of type %d", xf86getjmptype());
-}
-
-#if !defined(__GLIBC__) || (__GLIBC__ < 2) /* libc5 */
-
-int
-xf86setjmp1(xf86jmp_buf env, int arg2)
-{
- __sigjmp_save((void *)env, arg2);
- return __setjmp((void *)env);
-}
-
-#endif
-
-#else /* HAS_GLIBC_SIGSETJMP */
-
-int
-xf86setjmp1(xf86jmp_buf env, int arg2)
-{
- FatalError("setjmp: type 1 called instead of type %d", xf86getjmptype());
-}
-
-int
-xf86setjmp0(xf86jmp_buf env)
-{
- return setjmp((void *)env);
-}
-
-#endif /* HAS_GLIBC_SIGSETJMP */
-
-int
-xf86setjmp1_arg2()
-{
- return 1;
-}
-
-int
-xf86setjmperror(xf86jmp_buf env)
-{
- FatalError("setjmp: don't know how to handle setjmp() type %d",
- xf86getjmptype());
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/pm_noop.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/pm_noop.c
deleted file mode 100644
index 6e24653ba..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/pm_noop.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/pm_noop.c,v 1.2 2003/08/24 17:37:06 dawes Exp $ */
-/*
- * Copyright (c) 2000 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* Stubs for the OS-support layer power-management functions. */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "os.h"
-#include "xf86.h"
-#include "xf86Priv.h"
-#define XF86_OS_PRIVS
-#include "xf86_OSproc.h"
-
-PMClose
-xf86OSPMOpen(void)
-{
- return NULL;
-}
-
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/posix_tty.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/posix_tty.c
deleted file mode 100644
index be3703944..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/posix_tty.c
+++ /dev/null
@@ -1,689 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/posix_tty.c,v 3.30 2003/08/24 17:37:06 dawes Exp $ */
-/*
- * Copyright 1993-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-
-/* $XConsortium: posix_tty.c /main/7 1996/10/19 18:07:47 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-static int
-GetBaud (int baudrate)
-{
-#ifdef B300
- if (baudrate == 300)
- return B300;
-#endif
-#ifdef B1200
- if (baudrate == 1200)
- return B1200;
-#endif
-#ifdef B2400
- if (baudrate == 2400)
- return B2400;
-#endif
-#ifdef B4800
- if (baudrate == 4800)
- return B4800;
-#endif
-#ifdef B9600
- if (baudrate == 9600)
- return B9600;
-#endif
-#ifdef B19200
- if (baudrate == 19200)
- return B19200;
-#endif
-#ifdef B38400
- if (baudrate == 38400)
- return B38400;
-#endif
-#ifdef B57600
- if (baudrate == 57600)
- return B57600;
-#endif
-#ifdef B115200
- if (baudrate == 115200)
- return B115200;
-#endif
-#ifdef B230400
- if (baudrate == 230400)
- return B230400;
-#endif
-#ifdef B460800
- if (baudrate == 460800)
- return B460800;
-#endif
- return (0);
-}
-
-int
-xf86OpenSerial (pointer options)
-{
-#ifdef Lynx
- struct sgttyb ms_sgtty;
-#endif
- struct termios t;
- int fd, i;
- char *dev;
-
- dev = xf86SetStrOption (options, "Device", NULL);
- if (!dev)
- {
- xf86Msg (X_ERROR, "xf86OpenSerial: No Device specified.\n");
- return (-1);
- }
-
- SYSCALL (fd = open (dev, O_RDWR | O_NONBLOCK));
- if (fd == -1)
- {
- xf86Msg (X_ERROR,
- "xf86OpenSerial: Cannot open device %s\n\t%s.\n",
- dev, strerror (errno));
- xfree(dev);
- return (-1);
- }
-
- if (!isatty (fd))
- {
-#if 1
- /* Allow non-tty devices to be opened. */
- xfree(dev);
- return (fd);
-#else
- xf86Msg (X_WARNING,
- "xf86OpenSerial: Specified device %s is not a tty\n",
- dev);
- SYSCALL (close (fd));
- errno = EINVAL;
- xfree(dev);
- return (-1);
-#endif
- }
-
-#ifdef Lynx
- /* LynxOS does not assert DTR without this */
- ioctl (fd, TIOCGETP, (char *) &ms_sgtty);
- ioctl (fd, TIOCSDTR, (char *) &ms_sgtty);
-#endif
-
- /* set up default port parameters */
- SYSCALL (tcgetattr (fd, &t));
- t.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR\
- |IGNCR|ICRNL|IXON);
- t.c_oflag &= ~OPOST;
- t.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
- t.c_cflag &= ~(CSIZE|PARENB);
- t.c_cflag |= CS8|CLOCAL;
-
- cfsetispeed (&t, B9600);
- cfsetospeed (&t, B9600);
- t.c_cc[VMIN] = 1;
- t.c_cc[VTIME] = 0;
-
- SYSCALL (tcsetattr (fd, TCSANOW, &t));
-
- if (xf86SetSerial (fd, options) == -1)
- {
- SYSCALL (close (fd));
- xfree(dev);
- return (-1);
- }
-
- SYSCALL (i = fcntl (fd, F_GETFL, 0));
- if (i == -1)
- {
- SYSCALL (close (fd));
- xfree(dev);
- return (-1);
- }
- i &= ~O_NONBLOCK;
- SYSCALL (i = fcntl (fd, F_SETFL, i));
- if (i == -1)
- {
- SYSCALL (close (fd));
- xfree(dev);
- return (-1);
- }
- xfree(dev);
- return (fd);
-}
-
-int
-xf86SetSerial (int fd, pointer options)
-{
- struct termios t;
- int val;
- const char *s;
- int baud, r;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
- SYSCALL (tcgetattr (fd, &t));
-
- if ((val = xf86SetIntOption (options, "BaudRate", 0)))
- {
- if ((baud = GetBaud (val)))
- {
- cfsetispeed (&t, baud);
- cfsetospeed (&t, baud);
- }
- else
- {
- xf86Msg (X_ERROR,
- "Invalid Option BaudRate value: %d\n", val);
- return (-1);
- }
- }
-
- if ((val = xf86SetIntOption (options, "StopBits", 0)))
- {
- switch (val)
- {
- case 1:
- t.c_cflag &= ~(CSTOPB);
- break;
- case 2:
- t.c_cflag |= CSTOPB;
- break;
- default:
- xf86Msg (X_ERROR,
- "Invalid Option StopBits value: %d\n", val);
- return (-1);
- break;
- }
- }
-
- if ((val = xf86SetIntOption (options, "DataBits", 0)))
- {
- switch (val)
- {
- case 5:
- t.c_cflag &= ~(CSIZE);
- t.c_cflag |= CS5;
- break;
- case 6:
- t.c_cflag &= ~(CSIZE);
- t.c_cflag |= CS6;
- break;
- case 7:
- t.c_cflag &= ~(CSIZE);
- t.c_cflag |= CS7;
- break;
- case 8:
- t.c_cflag &= ~(CSIZE);
- t.c_cflag |= CS8;
- break;
- default:
- xf86Msg (X_ERROR,
- "Invalid Option DataBits value: %d\n", val);
- return (-1);
- break;
- }
- }
-
- if ((s = xf86SetStrOption (options, "Parity", NULL)))
- {
- if (xf86NameCmp (s, "Odd") == 0)
- {
- t.c_cflag |= PARENB | PARODD;
- }
- else if (xf86NameCmp (s, "Even") == 0)
- {
- t.c_cflag |= PARENB;
- t.c_cflag &= ~(PARODD);
- }
- else if (xf86NameCmp (s, "None") == 0)
- {
- t.c_cflag &= ~(PARENB);
- }
- else
- {
- xf86Msg (X_ERROR, "Invalid Option Parity value: %s\n",
- s);
- return (-1);
- }
- }
-
- if ((val = xf86SetIntOption (options, "Vmin", -1)) != -1)
- {
- t.c_cc[VMIN] = val;
- }
- if ((val = xf86SetIntOption (options, "Vtime", -1)) != -1)
- {
- t.c_cc[VTIME] = val;
- }
-
- if ((s = xf86SetStrOption (options, "FlowControl", NULL)))
- {
- xf86MarkOptionUsedByName (options, "FlowControl");
- if (xf86NameCmp (s, "Xoff") == 0)
- {
- t.c_iflag |= IXOFF;
- }
- else if (xf86NameCmp (s, "Xon") == 0)
- {
- t.c_iflag |= IXON;
- }
- else if (xf86NameCmp (s, "XonXoff") == 0)
- {
- t.c_iflag |= IXON|IXOFF;
- }
- else if (xf86NameCmp (s, "None") == 0)
- {
- t.c_iflag &= ~(IXON | IXOFF);
- }
- else
- {
- xf86Msg (X_ERROR,
- "Invalid Option FlowControl value: %s\n", s);
- return (-1);
- }
- }
-
- if ((xf86SetBoolOption (options, "ClearDTR", FALSE)))
- {
-#ifdef CLEARDTR_SUPPORT
-# if !defined(Lynx) || defined(TIOCMBIC)
- val = TIOCM_DTR;
- SYSCALL (ioctl(fd, TIOCMBIC, &val));
-# else
- SYSCALL (ioctl(fd, TIOCCDTR, NULL));
-# endif
-#else
- xf86Msg (X_WARNING,
- "Option ClearDTR not supported on this OS\n");
- return (-1);
-#endif
- xf86MarkOptionUsedByName (options, "ClearDTR");
- }
-
- if ((xf86SetBoolOption (options, "ClearRTS", FALSE)))
- {
-#ifdef CLEARRTS_SUPPORT
- val = TIOCM_RTS;
- SYSCALL (ioctl(fd, TIOCMBIC, &val));
-#else
- xf86Msg (X_WARNING,
- "Option ClearRTS not supported on this OS\n");
- return (-1);
-#endif
- xf86MarkOptionUsedByName (options, "ClearRTS");
- }
-
- SYSCALL (r = tcsetattr (fd, TCSANOW, &t));
- return (r);
-}
-
-int
-xf86SetSerialSpeed (int fd, int speed)
-{
- struct termios t;
- int baud, r;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
- SYSCALL (tcgetattr (fd, &t));
-
- if ((baud = GetBaud (speed)))
- {
- cfsetispeed (&t, baud);
- cfsetospeed (&t, baud);
- }
- else
- {
- xf86Msg (X_ERROR,
- "Invalid Option BaudRate value: %d\n", speed);
- return (-1);
- }
-
- SYSCALL (r = tcsetattr (fd, TCSANOW, &t));
- return (r);
-}
-
-int
-xf86ReadSerial (int fd, void *buf, int count)
-{
- int r;
-#ifdef DEBUG
- int i;
-#endif
- SYSCALL (r = read (fd, buf, count));
-#ifdef DEBUG
- ErrorF("ReadingSerial: 0x%x",
- (unsigned char)*(((unsigned char *)buf)));
- for (i = 1; i < r; i++)
- ErrorF(", 0x%x",(unsigned char)*(((unsigned char *)buf) + i));
- ErrorF("\n");
-#endif
- return (r);
-}
-
-int
-xf86WriteSerial (int fd, const void *buf, int count)
-{
- int r;
-#ifdef DEBUG
- int i;
-
- ErrorF("WritingSerial: 0x%x",(unsigned char)*(((unsigned char *)buf)));
- for (i = 1; i < count; i++)
- ErrorF(", 0x%x",(unsigned char)*(((unsigned char *)buf) + i));
- ErrorF("\n");
-#endif
- SYSCALL (r = write (fd, buf, count));
- return (r);
-}
-
-int
-xf86CloseSerial (int fd)
-{
- int r;
-
- SYSCALL (r = close (fd));
- return (r);
-}
-
-int
-xf86WaitForInput (int fd, int timeout)
-{
- fd_set readfds;
- struct timeval to;
- int r;
-
- FD_ZERO(&readfds);
-
- if (fd >= 0) {
- FD_SET(fd, &readfds);
- }
-
- to.tv_sec = timeout / 1000000;
- to.tv_usec = timeout % 1000000;
-
- if (fd >= 0) {
- SYSCALL (r = select (FD_SETSIZE, &readfds, NULL, NULL, &to));
- }
- else {
- SYSCALL (r = select (FD_SETSIZE, NULL, NULL, NULL, &to));
- }
- xf86ErrorFVerb (9,"select returned %d\n", r);
- return (r);
-}
-
-int
-xf86SerialSendBreak (int fd, int duration)
-{
- int r;
-
- SYSCALL (r = tcsendbreak (fd, duration));
- return (r);
-
-}
-
-int
-xf86FlushInput(int fd)
-{
- fd_set fds;
- struct timeval timeout;
- char c[4];
-
-#ifdef DEBUG
- ErrorF("FlushingSerial\n");
-#endif
- if (tcflush(fd, TCIFLUSH) == 0)
- return 0;
-
- timeout.tv_sec = 0;
- timeout.tv_usec = 0;
- FD_ZERO(&fds);
- FD_SET(fd, &fds);
- while (select(FD_SETSIZE, &fds, NULL, NULL, &timeout) > 0) {
- if (read(fd, &c, sizeof(c)) < 1)
- return 0;
- FD_ZERO(&fds);
- FD_SET(fd, &fds);
- }
- return 0;
-}
-
-static struct states {
- int xf;
- int os;
-} modemStates[] = {
-#ifdef TIOCM_LE
- { XF86_M_LE, TIOCM_LE },
-#endif
-#ifdef TIOCM_DTR
- { XF86_M_DTR, TIOCM_DTR },
-#endif
-#ifdef TIOCM_RTS
- { XF86_M_RTS, TIOCM_RTS },
-#endif
-#ifdef TIOCM_ST
- { XF86_M_ST, TIOCM_ST },
-#endif
-#ifdef TIOCM_SR
- { XF86_M_SR, TIOCM_SR },
-#endif
-#ifdef TIOCM_CTS
- { XF86_M_CTS, TIOCM_CTS },
-#endif
-#ifdef TIOCM_CAR
- { XF86_M_CAR, TIOCM_CAR },
-#elif defined(TIOCM_CD)
- { XF86_M_CAR, TIOCM_CD },
-#endif
-#ifdef TIOCM_RNG
- { XF86_M_RNG, TIOCM_RNG },
-#elif defined(TIOCM_RI)
- { XF86_M_CAR, TIOCM_RI },
-#endif
-#ifdef TIOCM_DSR
- { XF86_M_DSR, TIOCM_DSR },
-#endif
-};
-
-static int numStates = sizeof(modemStates) / sizeof(modemStates[0]);
-
-static int
-xf2osState(int state)
-{
- int i;
- int ret = 0;
-
- for (i = 0; i < numStates; i++)
- if (state & modemStates[i].xf)
- ret |= modemStates[i].os;
- return ret;
-}
-
-static int
-os2xfState(int state)
-{
- int i;
- int ret = 0;
-
- for (i = 0; i < numStates; i++)
- if (state & modemStates[i].os)
- ret |= modemStates[i].xf;
- return ret;
-}
-
-static int
-getOsStateMask(void)
-{
- int i;
- int ret = 0;
- for (i = 0; i < numStates; i++)
- ret |= modemStates[i].os;
- return ret;
-}
-
-static int osStateMask = 0;
-
-int
-xf86SetSerialModemState(int fd, int state)
-{
- int ret;
- int s;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
-#ifndef TIOCMGET
- return -1;
-#else
- if (!osStateMask)
- osStateMask = getOsStateMask();
-
- state = xf2osState(state);
- SYSCALL((ret = ioctl(fd, TIOCMGET, &s)));
- if (ret < 0)
- return -1;
- s &= ~osStateMask;
- s |= state;
- SYSCALL((ret = ioctl(fd, TIOCMSET, &s)));
- if (ret < 0)
- return -1;
- else
- return 0;
-#endif
-}
-
-int
-xf86GetSerialModemState(int fd)
-{
- int ret;
- int s;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
-#ifndef TIOCMGET
- return -1;
-#else
- SYSCALL((ret = ioctl(fd, TIOCMGET, &s)));
- if (ret < 0)
- return -1;
- return os2xfState(s);
-#endif
-}
-
-int
-xf86SerialModemSetBits(int fd, int bits)
-{
- int ret;
- int s;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
-#ifndef TIOCMGET
- return -1;
-#else
- s = xf2osState(bits);
- SYSCALL((ret = ioctl(fd, TIOCMBIS, &s)));
- return ret;
-#endif
-}
-
-int
-xf86SerialModemClearBits(int fd, int bits)
-{
- int ret;
- int s;
-
- if (fd < 0)
- return -1;
-
- /* Don't try to set parameters for non-tty devices. */
- if (!isatty(fd))
- return 0;
-
-#ifndef TIOCMGET
- return -1;
-#else
- s = xf2osState(bits);
- SYSCALL((ret = ioctl(fd, TIOCMBIC, &s)));
- return ret;
-#endif
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/sigio.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/sigio.c
deleted file mode 100644
index e6da3940f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/sigio.c
+++ /dev/null
@@ -1,312 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c,v 1.16 2003/09/04 00:21:17 dawes Exp $ */
-
-/* sigio.c -- Support for SIGIO handler installation and removal
- * Created: Thu Jun 3 15:39:18 1999 by faith@precisioninsight.com
- *
- * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
- * 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
- * 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 NONINFRINGEMENT. IN NO EVENT SHALL
- * PRECISION INSIGHT AND/OR ITS 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 <faith@valinux.com>
- */
-/*
- * Copyright (c) 2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef XFree86Server
-# include <X11/X.h>
-# include "xf86.h"
-# include "xf86Priv.h"
-# include "xf86_OSlib.h"
-# include "inputstr.h"
-#else
-# include <unistd.h>
-# include <signal.h>
-# include <fcntl.h>
-# include <sys/time.h>
-# include <errno.h>
-# include <stdio.h>
-# include <string.h>
-# define SYSCALL(call) while(((call) == -1) && (errno == EINTR))
-#endif
-
-/*
- * Linux libc5 defines FASYNC, but not O_ASYNC. Don't know if it is
- * functional or not.
- */
-#if defined(FASYNC) && !defined(O_ASYNC)
-# define O_ASYNC FASYNC
-#endif
-
-#ifdef MAX_DEVICES
-/* MAX_DEVICES represents the maximimum number of input devices usable
- * at the same time plus one entry for DRM support.
- */
-# define MAX_FUNCS (MAX_DEVICES + 1)
-#else
-# define MAX_FUNCS 16
-#endif
-
-typedef struct _xf86SigIOFunc {
- void (*f) (int, void *);
- int fd;
- void *closure;
-} Xf86SigIOFunc;
-
-static Xf86SigIOFunc xf86SigIOFuncs[MAX_FUNCS];
-static int xf86SigIOMax;
-static int xf86SigIOMaxFd;
-static fd_set xf86SigIOMask;
-
-/*
- * SIGIO gives no way of discovering which fd signalled, select
- * to discover
- */
-static void
-xf86SIGIO (int sig)
-{
- int i;
- fd_set ready;
- struct timeval to;
- int r;
-
- ready = xf86SigIOMask;
- to.tv_sec = 0;
- to.tv_usec = 0;
- SYSCALL (r = select (xf86SigIOMaxFd, &ready, 0, 0, &to));
- for (i = 0; r > 0 && i < xf86SigIOMax; i++)
- if (xf86SigIOFuncs[i].f && FD_ISSET (xf86SigIOFuncs[i].fd, &ready))
- {
- (*xf86SigIOFuncs[i].f)(xf86SigIOFuncs[i].fd,
- xf86SigIOFuncs[i].closure);
- r--;
- }
-#ifdef XFree86Server
- if (r > 0) {
- xf86Msg(X_ERROR, "SIGIO %d descriptors not handled\n", r);
- }
-#endif
-}
-
-static int
-xf86IsPipe (int fd)
-{
- struct stat buf;
-
- if (fstat (fd, &buf) < 0)
- return 0;
- return S_ISFIFO(buf.st_mode);
-}
-
-int
-xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure)
-{
- struct sigaction sa;
- struct sigaction osa;
- int i;
- int blocked;
-
- for (i = 0; i < MAX_FUNCS; i++)
- {
- if (!xf86SigIOFuncs[i].f)
- {
- if (xf86IsPipe (fd))
- return 0;
- blocked = xf86BlockSIGIO();
- if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_ASYNC) == -1) {
-#ifdef XFree86Server
- xf86Msg(X_WARNING, "fcntl(%d, O_ASYNC): %s\n",
- fd, strerror(errno));
-#else
- fprintf(stderr,"fcntl(%d, O_ASYNC): %s\n",
- fd, strerror(errno));
-#endif
- xf86UnblockSIGIO(blocked);
- return 0;
- }
- if (fcntl(fd, F_SETOWN, getpid()) == -1) {
-#ifdef XFree86Server
- xf86Msg(X_WARNING, "fcntl(%d, F_SETOWN): %s\n",
- fd, strerror(errno));
-#else
- fprintf(stderr,"fcntl(%d, F_SETOWN): %s\n",
- fd, strerror(errno));
-#endif
- xf86UnblockSIGIO(blocked);
- return 0;
- }
- sigemptyset(&sa.sa_mask);
- sigaddset(&sa.sa_mask, SIGIO);
- sa.sa_flags = 0;
- sa.sa_handler = xf86SIGIO;
- sigaction(SIGIO, &sa, &osa);
- xf86SigIOFuncs[i].fd = fd;
- xf86SigIOFuncs[i].closure = closure;
- xf86SigIOFuncs[i].f = f;
- if (i >= xf86SigIOMax)
- xf86SigIOMax = i+1;
- if (fd >= xf86SigIOMaxFd)
- xf86SigIOMaxFd = fd + 1;
- FD_SET (fd, &xf86SigIOMask);
- xf86UnblockSIGIO(blocked);
- return 1;
- }
- /* Allow overwriting of the closure and callback */
- else if (xf86SigIOFuncs[i].fd == fd)
- {
- xf86SigIOFuncs[i].closure = closure;
- xf86SigIOFuncs[i].f = f;
- return 1;
- }
- }
- return 0;
-}
-
-int
-xf86RemoveSIGIOHandler(int fd)
-{
- struct sigaction sa;
- struct sigaction osa;
- int i;
- int max;
- int maxfd;
- int ret;
-
- max = 0;
- maxfd = -1;
- ret = 0;
- for (i = 0; i < MAX_FUNCS; i++)
- {
- if (xf86SigIOFuncs[i].f)
- {
- if (xf86SigIOFuncs[i].fd == fd)
- {
- xf86SigIOFuncs[i].f = 0;
- xf86SigIOFuncs[i].fd = 0;
- xf86SigIOFuncs[i].closure = 0;
- FD_CLR (fd, &xf86SigIOMask);
- ret = 1;
- }
- else
- {
- max = i + 1;
- if (xf86SigIOFuncs[i].fd >= maxfd)
- maxfd = xf86SigIOFuncs[i].fd + 1;
- }
- }
- }
- if (ret)
- {
- fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~O_ASYNC);
- xf86SigIOMax = max;
- xf86SigIOMaxFd = maxfd;
- if (!max)
- {
- sigemptyset(&sa.sa_mask);
- sigaddset(&sa.sa_mask, SIGIO);
- sa.sa_flags = 0;
- sa.sa_handler = SIG_DFL;
- sigaction(SIGIO, &sa, &osa);
- }
- }
- return ret;
-}
-
-int
-xf86BlockSIGIO (void)
-{
- sigset_t set, old;
- int ret;
-
- sigemptyset (&set);
- sigaddset (&set, SIGIO);
- sigprocmask (SIG_BLOCK, &set, &old);
- ret = sigismember (&old, SIGIO);
-#ifdef DEBUG
- ErrorF("%i = xf86BlockSIGIO()\n",ret);
-#endif
- return ret;
-}
-
-void
-xf86UnblockSIGIO (int wasset)
-{
- sigset_t set;
-#ifdef DEBUG
- ErrorF("xf86UnblockSIGIO(%i)\n",wasset);
-#endif
-
- if (!wasset)
- {
- sigemptyset (&set);
- sigaddset (&set, SIGIO);
- sigprocmask (SIG_UNBLOCK, &set, NULL);
- }
-}
-
-#ifdef XFree86Server
-void
-xf86AssertBlockedSIGIO (char *where)
-{
- sigset_t set, old;
-
- sigemptyset (&set);
- sigprocmask (SIG_BLOCK, &set, &old);
- if (!sigismember (&old, SIGIO))
- xf86Msg (X_ERROR, "SIGIO not blocked at %s\n", where);
-}
-
-/* XXX This is a quick hack for the benefit of xf86SetSilkenMouse() */
-
-int
-xf86SIGIOSupported (void)
-{
- return 1;
-}
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/sigiostubs.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/sigiostubs.c
deleted file mode 100644
index 2173bb991..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/sigiostubs.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/sigiostubs.c,v 1.4 2003/08/24 17:37:06 dawes Exp $ */
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/shared/sigiostubs.c,v 1.5 2005/07/03 07:01:35 daniels Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef XFree86Server
-#ifdef __UNIXOS2__
-# define I_NEED_OS2_H
-#endif
-# include <X11/X.h>
-# include "xf86.h"
-# include "xf86Priv.h"
-# include "xf86_OSlib.h"
-#else
-# include <unistd.h>
-# include <signal.h>
-# include <fcntl.h>
-# include <sys/time.h>
-# include <errno.h>
-#endif
-
-int
-xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure)
-{
- return 0;
-}
-
-int
-xf86RemoveSIGIOHandler(int fd)
-{
- return 0;
-}
-
-int
-xf86BlockSIGIO (void)
-{
- return 0;
-}
-
-void
-xf86UnblockSIGIO (int wasset)
-{
-}
-
-#ifdef XFree86Server
-void
-xf86AssertBlockedSIGIO (char *where)
-{
-}
-#endif
-
-/* XXX This is a quick hack for the benefit of xf86SetSilkenMouse() */
-Bool
-xf86SIGIOSupported ()
-{
- return FALSE;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/stdPci.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/stdPci.c
deleted file mode 100644
index 491406f92..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/stdPci.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/stdPci.c,v 3.4 2003/08/24 17:37:06 dawes Exp $ */
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef __UNIXOS2__
-# define I_NEED_OS2_H
-#endif
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Privstr.h"
-#include "xf86Pci.h"
-#define NEED_OS_RAC_PROTOS
-#include "xf86_OSlib.h"
-
-#ifndef HAVE_PCI_SIZE_FUNC
-#define xf86StdGetPciSizeFromOS xf86GetPciSizeFromOS
-#endif
-
-Bool
-xf86StdGetPciSizeFromOS(PCITAG tag, int index, int* bits)
-{
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/stdResource.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/stdResource.c
deleted file mode 100644
index 4704d8194..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/stdResource.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/stdResource.c,v 1.22 2003/08/24 17:37:06 dawes Exp $ */
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* Standard resource information code */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef __UNIXOS2__
-# define I_NEED_OS2_H
-#endif
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Privstr.h"
-#include "xf86Pci.h"
-#define NEED_OS_RAC_PROTOS
-#include "xf86_OSlib.h"
-#include "xf86Resources.h"
-
-#ifdef __UNIXOS2__
-# undef ADDRESS
-#endif
-/* Avoid Imakefile changes */
-#include "bus/Pci.h"
-
-#ifdef USESTDRES
-#define xf86StdBusAccWindowsFromOS xf86BusAccWindowsFromOS
-#define xf86StdAccResFromOS xf86AccResFromOS
-#define xf86StdPciBusAccWindowsFromOS xf86PciBusAccWindowsFromOS
-#define xf86StdIsaBusAccWindowsFromOS xf86IsaBusAccWindowsFromOS
-
-resRange PciAvoid[] = {_PCI_AVOID_PC_STYLE, _END};
-#endif
-
-#ifdef INCLUDE_XF86_NO_DOMAIN
-
-resPtr
-xf86StdBusAccWindowsFromOS(void)
-{
- /* Fallback is to allow addressing of all memory space */
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- /* Fallback is to allow addressing of all I/O space */
- RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-resPtr
-xf86StdPciBusAccWindowsFromOS(void)
-{
- /* Fallback is to allow addressing of all memory space */
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- /* Fallback is to allow addressing of all I/O space */
- RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-#ifdef INCLUDE_UNUSED
-
-resPtr
-xf86StdIsaBusAccWindowsFromOS(void)
-{
- /* Fallback is to allow addressing of all memory space */
- resPtr ret = NULL;
- resRange range;
-
- RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- /* Fallback is to allow addressing of all I/O space */
- RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
- return ret;
-}
-
-#endif /* INCLUDE_UNUSED */
-
-resPtr
-xf86StdAccResFromOS(resPtr ret)
-{
- resRange range;
-
- /*
- * Fallback is to claim the following areas:
- *
- * 0x00000000 - 0x0009ffff low 640k host memory
- * 0x000c0000 - 0x000effff location of VGA and other extensions ROMS
- * 0x000f0000 - 0x000fffff system BIOS
- * 0x00100000 - 0x3fffffff low 1G - 1MB host memory
- * 0xfec00000 - 0xfecfffff default I/O APIC config space
- * 0xfee00000 - 0xfeefffff default Local APIC config space
- * 0xffe00000 - 0xffffffff high BIOS area (should this be included?)
- *
- * reference: Intel 440BX AGP specs
- *
- * The two APIC spaces appear to be BX-specific and should be dealt with
- * elsewhere.
- */
-
- /* Fallback is to claim 0x0 - 0x9ffff and 0x100000 - 0x7fffffff */
- RANGE(range, 0x00000000, 0x0009ffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x000c0000, 0x000effff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x000f0000, 0x000fffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x00100000, 0x3fffffff,
- ResExcMemBlock | ResBios | ResEstimated);
- ret = xf86AddResToList(ret, &range, -1);
-#if 0
- RANGE(range, 0xfec00000, 0xfecfffff, ResExcMemBlock | ResBios);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xfee00000, 0xfeefffff, ResExcMemBlock | ResBios);
- ret = xf86AddResToList(ret, &range, -1);
-#endif
- RANGE(range, 0xffe00000, 0xffffffff, ResExcMemBlock | ResBios);
- ret = xf86AddResToList(ret, &range, -1);
-
- /*
- * Fallback would be to claim well known ports in the 0x0 - 0x3ff range
- * along with their sparse I/O aliases, but that's too imprecise. Instead
- * claim a bare minimum here.
- */
- RANGE(range, 0x00000000, 0x000000ff, ResExcIoBlock); /* For mainboard */
- ret = xf86AddResToList(ret, &range, -1);
-
- /*
- * At minimum, the top and bottom resources must be claimed, so that
- * resources that are (or appear to be) unallocated can be relocated.
- */
-/* RANGE(range, 0x00000000, 0x00000000, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xffffffff, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x00000000, 0x00000000, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1); */
- RANGE(range, 0x0000ffff, 0x0000ffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- /* XXX add others */
- return ret;
-}
-
-#endif /* INCLUDE_XF86_NO_DOMAIN */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/std_kbdEv.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/std_kbdEv.c
deleted file mode 100644
index c678162c2..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/std_kbdEv.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/std_kbdEv.c,v 3.2 1998/07/25 16:57:01 dawes Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- *
- * 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, and that the names of Thomas Roell and David Dawes
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Thomas Roell and
- * David Dawes makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THOMAS ROELL AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: std_kbdEv.c /main/4 1996/03/11 10:47:33 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-void
-xf86KbdEvents()
-{
- unsigned char rBuf[64];
- int nBytes, i;
-
- if ((nBytes = read( xf86Info.consoleFd, (char *)rBuf, sizeof(rBuf)))
- > 0)
- {
- for (i = 0; i < nBytes; i++)
- xf86PostKbdEvent(rBuf[i]);
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/sysv_kbd.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/sysv_kbd.c
deleted file mode 100644
index 3a3544e8c..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/sysv_kbd.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/sysv_kbd.c,v 3.3 1998/07/25 16:57:02 dawes Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Dawes <dawes@XFree86.org>
- *
- * 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, and that the names of Thomas Roell and David Dawes
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Thomas Roell and
- * David Dawes makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THOMAS ROELL AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: sysv_kbd.c /main/3 1996/02/21 17:53:59 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-int
-xf86GetKbdLeds()
-{
- int leds;
-
- ioctl(xf86Info.consoleFd, KDGETLED, &leds);
- return(leds);
-}
-
-void
-xf86SetKbdRepeat(char rad)
-{
-#ifdef KDSETRAD
- ioctl(xf86Info.consoleFd, KDSETRAD, rad);
-#endif
-}
-
-static int kbdtrans;
-static struct termio kbdtty;
-static char *kbdemap = NULL;
-
-void
-xf86KbdInit()
-{
-#ifdef KDGKBMODE
- ioctl (xf86Info.consoleFd, KDGKBMODE, &kbdtrans);
-#endif
- ioctl (xf86Info.consoleFd, TCGETA, &kbdtty);
-#if defined(E_TABSZ)
- kbdemap = xalloc(E_TABSZ);
- if (ioctl(xf86Info.consoleFd, LDGMAP, kbdemap) < 0)
- {
- xfree(kbdemap);
- kbdemap = NULL;
- }
-#endif
-}
-
-int
-xf86KbdOn()
-{
- struct termio nTty;
-
- ioctl(xf86Info.consoleFd, KDSKBMODE, K_RAW);
- ioctl(xf86Info.consoleFd, LDNMAP, 0); /* disable mapping completely */
- nTty = kbdtty;
- nTty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- nTty.c_oflag = 0;
- nTty.c_cflag = CREAD | CS8 | B9600;
- nTty.c_lflag = 0;
- nTty.c_cc[VTIME]=0;
- nTty.c_cc[VMIN]=1;
- ioctl(xf86Info.consoleFd, TCSETA, &nTty);
- return(xf86Info.consoleFd);
-}
-
-int
-xf86KbdOff()
-{
- if (kbdemap)
- {
- ioctl(xf86Info.consoleFd, LDSMAP, kbdemap);
- }
- ioctl(xf86Info.consoleFd, KDSKBMODE, kbdtrans);
- ioctl(xf86Info.consoleFd, TCSETA, &kbdtty);
- return(xf86Info.consoleFd);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/vidmem.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/vidmem.c
deleted file mode 100644
index 237d47a4d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/vidmem.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/vidmem.c,v 1.17 2003/08/24 17:37:06 dawes Exp $ */
-/*
- * Copyright (c) 1993-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef __UNIXOS2__
-# define I_NEED_OS2_H
-#endif
-#include <X11/X.h>
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-/*
- * This file contains the common part of the video memory mapping functions
- */
-
-/*
- * Get a piece of the ScrnInfoRec. At the moment, this is only used to hold
- * the MTRR option information, but it is likely to be expanded if we do
- * auto unmapping of memory at VT switch.
- *
- */
-
-typedef struct {
- unsigned long physBase;
- unsigned long size;
- pointer virtBase;
- pointer mtrrInfo;
- int flags;
-} MappingRec, *MappingPtr;
-
-typedef struct {
- int numMappings;
- MappingPtr * mappings;
- Bool mtrrEnabled;
- MessageType mtrrFrom;
- Bool mtrrOptChecked;
- ScrnInfoPtr pScrn;
-} VidMapRec, *VidMapPtr;
-
-static int vidMapIndex = -1;
-
-#define VIDMAPPTR(p) ((VidMapPtr)((p)->privates[vidMapIndex].ptr))
-
-static VidMemInfo vidMemInfo = {FALSE, };
-static VidMapRec vidMapRec = {0, NULL, TRUE, X_DEFAULT, FALSE, NULL};
-
-static VidMapPtr
-getVidMapRec(int scrnIndex)
-{
- VidMapPtr vp;
- ScrnInfoPtr pScrn;
-
- if ((scrnIndex < 0) ||
- !(pScrn = xf86Screens[scrnIndex]))
- return &vidMapRec;
-
- if (vidMapIndex < 0)
- vidMapIndex = xf86AllocateScrnInfoPrivateIndex();
-
- if (VIDMAPPTR(pScrn) != NULL)
- return VIDMAPPTR(pScrn);
-
- vp = pScrn->privates[vidMapIndex].ptr = xnfcalloc(sizeof(VidMapRec), 1);
- vp->mtrrEnabled = TRUE; /* default to enabled */
- vp->mtrrFrom = X_DEFAULT;
- vp->mtrrOptChecked = FALSE;
- vp->pScrn = pScrn;
- return vp;
-}
-
-static MappingPtr
-newMapping(VidMapPtr vp)
-{
- vp->mappings = xnfrealloc(vp->mappings, sizeof(MappingPtr) *
- (vp->numMappings + 1));
- vp->mappings[vp->numMappings] = xnfcalloc(sizeof(MappingRec), 1);
- return vp->mappings[vp->numMappings++];
-}
-
-static MappingPtr
-findMapping(VidMapPtr vp, pointer vbase, unsigned long size)
-{
- int i;
-
- for (i = 0; i < vp->numMappings; i++) {
- if (vp->mappings[i]->virtBase == vbase &&
- vp->mappings[i]->size == size)
- return vp->mappings[i];
- }
- return NULL;
-}
-
-static void
-removeMapping(VidMapPtr vp, MappingPtr mp)
-{
- int i, found = 0;
-
- for (i = 0; i < vp->numMappings; i++) {
- if (vp->mappings[i] == mp) {
- found = 1;
- xfree(vp->mappings[i]);
- } else if (found) {
- vp->mappings[i - 1] = vp->mappings[i];
- }
- }
- vp->numMappings--;
- vp->mappings[vp->numMappings] = NULL;
-}
-
-enum { OPTION_MTRR };
-static const OptionInfoRec opts[] =
-{
- { OPTION_MTRR, "mtrr", OPTV_BOOLEAN, {0}, FALSE },
- { -1, NULL, OPTV_NONE, {0}, FALSE }
-};
-
-static void
-checkMtrrOption(VidMapPtr vp)
-{
- if (!vp->mtrrOptChecked && vp->pScrn && vp->pScrn->options != NULL) {
- OptionInfoPtr options;
-
- options = xnfalloc(sizeof(opts));
- (void)memcpy(options, opts, sizeof(opts));
- xf86ProcessOptions(vp->pScrn->scrnIndex, vp->pScrn->options,
- options);
- if (xf86GetOptValBool(options, OPTION_MTRR, &vp->mtrrEnabled))
- vp->mtrrFrom = X_CONFIG;
- xfree(options);
- vp->mtrrOptChecked = TRUE;
- }
-}
-
-void
-xf86MakeNewMapping(int ScreenNum, int Flags, unsigned long Base, unsigned long Size, pointer Vbase)
-{
- VidMapPtr vp;
- MappingPtr mp;
-
- vp = getVidMapRec(ScreenNum);
- mp = newMapping(vp);
- mp->physBase = Base;
- mp->size = Size;
- mp->virtBase = Vbase;
- mp->flags = Flags;
-}
-
-void
-xf86InitVidMem(void)
-{
- if (!vidMemInfo.initialised) {
- memset(&vidMemInfo, 0, sizeof(VidMemInfo));
- xf86OSInitVidMem(&vidMemInfo);
- }
-}
-
-pointer
-xf86MapVidMem(int ScreenNum, int Flags, unsigned long Base, unsigned long Size)
-{
- pointer vbase = NULL;
- VidMapPtr vp;
- MappingPtr mp;
-
- if (((Flags & VIDMEM_FRAMEBUFFER) &&
- (Flags & (VIDMEM_MMIO | VIDMEM_MMIO_32BIT))))
- FatalError("Mapping memory with more than one type\n");
-
- xf86InitVidMem();
- if (!vidMemInfo.initialised || !vidMemInfo.mapMem)
- return NULL;
-
- vbase = vidMemInfo.mapMem(ScreenNum, Base, Size, Flags);
-
- if (!vbase || vbase == (pointer)-1)
- return NULL;
-
- vp = getVidMapRec(ScreenNum);
- mp = newMapping(vp);
- mp->physBase = Base;
- mp->size = Size;
- mp->virtBase = vbase;
- mp->flags = Flags;
-
- /*
- * Check the "mtrr" option even when MTRR isn't supported to avoid
- * warnings about unrecognised options.
- */
- checkMtrrOption(vp);
-
- if (vp->mtrrEnabled && vidMemInfo.setWC) {
- if (Flags & (VIDMEM_MMIO | VIDMEM_MMIO_32BIT))
- mp->mtrrInfo =
- vidMemInfo.setWC(ScreenNum, Base, Size, FALSE,
- vp->mtrrFrom);
- else if (Flags & VIDMEM_FRAMEBUFFER)
- mp->mtrrInfo =
- vidMemInfo.setWC(ScreenNum, Base, Size, TRUE,
- vp->mtrrFrom);
- }
- return vbase;
-}
-
-void
-xf86UnMapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- VidMapPtr vp;
- MappingPtr mp;
-
- if (!vidMemInfo.initialised || !vidMemInfo.unmapMem) {
- xf86DrvMsg(ScreenNum, X_WARNING,
- "xf86UnMapVidMem() called before xf86MapVidMem()\n");
- return;
- }
-
- vp = getVidMapRec(ScreenNum);
- mp = findMapping(vp, Base, Size);
- if (!mp) {
- xf86DrvMsg(ScreenNum, X_WARNING,
- "xf86UnMapVidMem: cannot find region for [%p,0x%lx]\n",
- Base, Size);
- return;
- }
- if (vp->mtrrEnabled && vidMemInfo.undoWC && mp)
- vidMemInfo.undoWC(ScreenNum, mp->mtrrInfo);
-
- vidMemInfo.unmapMem(ScreenNum, Base, Size);
- removeMapping(vp, mp);
-}
-
-Bool
-xf86CheckMTRR(int ScreenNum)
-{
- VidMapPtr vp = getVidMapRec(ScreenNum);
-
- /*
- * Check the "mtrr" option even when MTRR isn't supported to avoid
- * warnings about unrecognised options.
- */
- checkMtrrOption(vp);
-
- if (vp->mtrrEnabled && vidMemInfo.setWC)
- return TRUE;
-
- return FALSE;
-}
-
-Bool
-xf86LinearVidMem()
-{
- xf86InitVidMem();
- return vidMemInfo.linearSupported;
-}
-
-void
-xf86MapReadSideEffects(int ScreenNum, int Flags, pointer base,
- unsigned long Size)
-{
- if (!(Flags & VIDMEM_READSIDEEFFECT))
- return;
-
- if (!vidMemInfo.initialised || !vidMemInfo.readSideEffects)
- return;
-
- vidMemInfo.readSideEffects(ScreenNum, base, Size);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/xf86Axp.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/xf86Axp.c
deleted file mode 100644
index b8953f119..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/xf86Axp.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/xf86Axp.c,v 1.3 2003/08/24 17:37:06 dawes Exp $ */
-/*
- * Copyright (c) 2000 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Axp.h"
-
-axpParams xf86AXPParams[] = {
- {SYS_NONE, 0, 0, 0},
- {TSUNAMI, 0, 0, 0},
- {LCA, 1<<24,0xf8000000, 1UL << 32},
- {APECS, 1<<24,0xf8000000, 1UL << 32},
- {T2, 0,0xFC000000, 1UL << 31},
- {T2_GAMMA, 0,0xFC000000, 1UL << 31},
- {CIA, 0,0xE0000000, 1UL << 34},
- {MCPCIA, 0,0xf8000000, 1UL << 31},
- {JENSEN, 0, 0xE000000, 1UL << 32},
- {POLARIS, 0, 0, 0},
- {PYXIS, 0, 0, 0},
- {PYXIS_CIA, 0,0xE0000000, 1UL << 34},
- {IRONGATE, 0, 0, 0}
-};
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/xf86Axp.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/xf86Axp.h
deleted file mode 100644
index 4b8b08370..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/shared/xf86Axp.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* $XFree86$ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _XF86_AXP_H_
-#define _XF86_AXP_H_
-
-typedef enum {
- SYS_NONE,
- TSUNAMI,
- LCA,
- APECS,
- T2,
- T2_GAMMA,
- CIA,
- MCPCIA,
- JENSEN,
- POLARIS,
- PYXIS,
- PYXIS_CIA,
- IRONGATE
-} axpDevice;
-
-typedef struct {
- axpDevice id;
- unsigned long hae_thresh;
- unsigned long hae_mask;
- unsigned long size;
-} axpParams;
-
-extern axpParams xf86AXPParams[];
-
-#endif
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile
deleted file mode 100644
index 2ef24f5e4..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile
+++ /dev/null
@@ -1,119 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile,v 1.4 2002/10/17 02:22:49 dawes Exp $
-XCOMM $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile,v 1.8 2005/11/06 03:49:22 alanc Exp $
-XCOMM
-XCOMM Copyright 2001 The XFree86 Project, Inc. All Rights Reserved.
-XCOMM
-XCOMM Permission is hereby granted, free of charge, to any person obtaining a
-XCOMM copy of this software and associated documentation files (the
-XCOMM "Software"), to deal in the Software without restriction, including
-XCOMM without limitation the rights to use, copy, modify, merge, publish,
-XCOMM distribute, sublicense, and/or sell copies of the Software, and to permit
-XCOMM persons to whom the Software is furnished to do so, subject to the
-XCOMM following conditions:
-XCOMM
-XCOMM The above copyright notice and this permission notice shall be included
-XCOMM in all copies or substantial portions of the Software.
-XCOMM
-XCOMM THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-XCOMM OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-XCOMM MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-XCOMM IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR
-XCOMM OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-XCOMM ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-XCOMM OTHER DEALINGS IN THE SOFTWARE.
-XCOMM
-XCOMM Except as contained in this notice, the name of the XFree86 Project shall
-XCOMM not be used in advertising or otherwise to promote the sale, use or other
-XCOMM dealings in this Software without prior written authorization from the
-XCOMM XFree86 Project.
-XCOMM
-
-/* This is a combined Imakefile intended for all SunOS variants */
-
-#include <Server.tmpl>
-
-#if !HasGcc
-# if HasSunC
-# if !defined(AsmArch) || !defined(AsmFlags)
-# error "Unsupported Architecture for building Xorg server with Sun compilers."
-# error "Need to use gcc or add AsmArch & AsmFlag settings in xc/config/cf/sun.cf"
-# endif
-PROWORKS_ASM_ARCH = AsmArch
-PROWORKS_ASM_FLAGS = AsmFlags
-PROWORKS_INOUT_SRC = solaris-$(PROWORKS_ASM_ARCH).S
-PROWORKS_INOUT_OBJ = solaris-$(PROWORKS_ASM_ARCH).o
-
-all:: $(PROWORKS_ASM_ARCH).il
-includes:: $(PROWORKS_ASM_ARCH).il
-
-CppFileTarget($(PROWORKS_ASM_ARCH).il,solaris-$(PROWORKS_ASM_ARCH).S,-DINLINE_ASM,NullParameter)
-
-$(PROWORKS_INOUT_OBJ): $(PROWORKS_INOUT_SRC)
- $(AS) -P -o $@ $(PROWORKS_ASM_FLAGS) $(PROWORKS_INOUT_SRC)
-
-# elif defined(i386Architecture)
-PROWORKS_INOUT_SRC = sun_inout.s
-PROWORKS_INOUT_OBJ = sun_inout.o
-# endif
-#endif
-
-#if defined(i386Architecture) && (OSMinorVersion < 8)
-IO_SRC = sysv_io.c
-IO_OBJ = sysv_io.o
-KBD_SRCS = sysv_kbd.c std_kbdEv.c
-KBD_OBJS = sysv_kbd.o std_kbdEv.o
-VTSW_SRC = VTsw_usl.c
-VTSW_OBJ = VTsw_usl.o
-#else
-IO_SRC = sun_io.c
-IO_OBJ = sun_io.o
-KBD_SRCS = sun_kbd.c sun_kbdEv.c
-KBD_OBJS = sun_kbd.o sun_kbdEv.o
-VTSW_SRC = VTsw_noop.c
-VTSW_OBJ = VTsw_noop.o
-#endif
-
-#if defined(i386Architecture) || defined(AMD64Architecture)
-AGP_SRC = sun_agp.c
-AGP_OBJ = sun_agp.o
-#else
-AGP_SRC = agp_noop.c
-AGP_OBJ = agp_noop.o
-#endif
-
-#ifdef SVR4Architecture
-SYSVIPCDEFINES = -DHAVE_SYSV_IPC
-#endif
-
-SRCS = sun_bios.c sun_init.c $(IO_SRC) $(KBD_SRCS) $(PROWORKS_INOUT_SRC) \
- sun_mouse.c sun_vid.c $(AGP_SRC) libc_wrapper.c kmod_noop.c pm_noop.c \
- posix_tty.c sigiostubs.c stdPci.c stdResource.c $(VTSW_SRC)
-OBJS = sun_bios.o sun_init.o $(IO_OBJ) $(KBD_OBJS) $(PROWORKS_INOUT_OBJ) \
- sun_mouse.o sun_vid.o $(AGP_OBJ) libc_wrapper.o kmod_noop.o pm_noop.o \
- posix_tty.o sigiostubs.o stdPci.o stdResource.o $(VTSW_OBJ)
-
-INCLUDES = -I. -I$(XF86OSSRC) -I$(XF86COMSRC) \
- -I$(SERVERSRC)/mi -I$(SERVERSRC)/include -I$(SERVERSRC)/Xext \
- -I$(XINCLUDESRC) -I$(EXTINCSRC)
-
-DEFINES = -DUSESTDRES $(VENDOR_DEFINES) $(SYSVIPCDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-NormalAsmObjectRule()
-
-LinkSourceFile($(VTSW_SRC),../shared)
-LinkSourceFile(agp_noop.c,../shared)
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(sigiostubs.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(std_kbdEv.c,../shared)
-LinkSourceFile(sysv_io.c,../sysv)
-LinkSourceFile(sysv_kbd.c,../shared)
-
-DependTarget()
-LintTarget()
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/agpgart.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/agpgart.h
deleted file mode 100644
index 637087527..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/agpgart.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/sunos/agpgart.h,v 1.2 2005/07/01 22:43:25 daniels Exp $ */
-/*
- * AGPGART module version 0.99
- * Copyright (C) 1999 Jeff Hartmann
- * Copyright (C) 1999 Precision Insight, Inc.
- * Copyright (C) 1999 Xi Graphics, Inc.
- *
- * 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
- * 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 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
- * JEFF HARTMANN, OR ANY OTHER CONTRIBUTORS 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.
- */
-/*
- * Copyright 2005 Sun Microsystems, Inc. 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 the rights to use, copy, modify, merge, publish,
- * distribute, and/or sell copies of the Software, and to permit persons
- * to whom the Software is furnished to do so, provided that the above
- * copyright notice(s) and this permission notice appear in all copies of
- * the Software and that both the above copyright notice(s) and this
- * permission notice appear in supporting documentation.
- *
- * 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
- * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
- * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * of the copyright holder.
- */
-
-#ifndef _AGPGART_H
-#define _AGPGART_H
-
-#pragma ident "@(#)agpgart.h 1.1 05/04/04 SMI"
-
-typedef struct _agp_version {
- uint16_t agpv_major;
- uint16_t agpv_minor;
-} agp_version_t;
-
-typedef struct _agp_info {
- agp_version_t agpi_version;
- uint32_t agpi_devid; /* bridge vendor + device */
- uint32_t agpi_mode; /* mode of bridge */
- ulong_t agpi_aperbase; /* base of aperture */
- size_t agpi_apersize; /* aperture range size */
- uint32_t agpi_pgtotal; /* max number of pages in aperture */
- uint32_t agpi_pgsystem; /* same as pg_total */
- uint32_t agpi_pgused; /* NUMBER of currently used pages */
-} agp_info_t;
-
-typedef struct _agp_setup {
- uint32_t agps_mode;
-} agp_setup_t;
-
-typedef struct _agp_allocate {
- int32_t agpa_key;
- uint32_t agpa_pgcount;
- uint32_t agpa_type;
- uint32_t agpa_physical; /* for i810/830 driver */
-} agp_allocate_t;
-
-typedef struct _agp_bind {
- int32_t agpb_key;
- uint32_t agpb_pgstart;
-} agp_bind_t;
-
-typedef struct _agp_unbind {
- int32_t agpu_key;
- uint32_t agpu_pri; /* no use in solaris */
-} agp_unbind_t;
-
-#define AGPIOC_BASE 'G'
-#define AGPIOC_INFO _IOR(AGPIOC_BASE, 0, 100)
-#define AGPIOC_ACQUIRE _IO(AGPIOC_BASE, 1)
-#define AGPIOC_RELEASE _IO(AGPIOC_BASE, 2)
-#define AGPIOC_SETUP _IOW(AGPIOC_BASE, 3, agp_setup_t)
-#define AGPIOC_ALLOCATE _IOWR(AGPIOC_BASE, 4, agp_allocate_t)
-#define AGPIOC_DEALLOCATE _IOW(AGPIOC_BASE, 5, int)
-#define AGPIOC_BIND _IOW(AGPIOC_BASE, 6, agp_bind_t)
-#define AGPIOC_UNBIND _IOW(AGPIOC_BASE, 7, agp_unbind_t)
-
-#define AGP_DEVICE "/dev/agpgart"
-
-#endif /* _AGPGART_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/find_deps.pl b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/find_deps.pl
deleted file mode 100755
index 2eac14f47..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/find_deps.pl
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/usr/bin/perl -w
-#
-# $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/sunos/find_deps.pl,v 1.2 2004/09/22 17:20:56 alanc Exp $
-#
-# Copyright 2004 Sun Microsystems, Inc. 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 the rights to use, copy, modify, merge, publish,
-# distribute, and/or sell copies of the Software, and to permit persons
-# to whom the Software is furnished to do so, provided that the above
-# copyright notice(s) and this permission notice appear in all copies of
-# the Software and that both the above copyright notice(s) and this
-# permission notice appear in supporting documentation.
-#
-# 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
-# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Except as contained in this notice, the name of a copyright holder
-# shall not be used in advertising or otherwise to promote the sale, use
-# or other dealings in this Software without prior written authorization
-# of the copyright holder.
-#
-#------------------------------------------------------------------------------
-#
-# This script scans the X server, it's libraries, and shared object drivers
-# and generates the linker flags necessary to allow the shared object modules
-# to load via dlopen().
-#
-# WARNING: Do not try this at home boys and girls! Only trained professionals
-# should try this stunt. This script is not intended to serve as an example of
-# proper use of the linker or associated tools, but merely as an unfortunately
-# necessary bit of hackery to get Xserver modules to load via Solaris dlopen
-# instead of the XFree86 custom loader/runtime linker.
-#
-# No guarantee of usability or suitablity is made - in fact it's almost
-# guaranteed this is not suitable for any other use, and maybe not even
-# for the one it was intended.
-#
-# Usage: find_deps.pl [-R ProjectRoot] <paths_to_scan>
-# Expects to be called while cwd is a directory containing Xorg or XFree86
-# server binary.
-
-use strict;
-use File::Find;
-use Getopt::Std;
-
-my @objlist = ();
-my %symtable = ();
-
-my $servername;
-
-my $ProjectRoot = "/usr/X11R6";
-
-my %opts;
-getopts('R:', \%opts);
-if (exists($opts{"R"})) {
- $ProjectRoot = $opts{"R"};
-}
-
-if (-f "Xorg") {
- $servername = "Xorg";
-} elsif (-f "XFree86") {
- $servername = "XFree86";
-} else {
- die "Cannot find X server";
-}
-
-$File::Find::name = $servername;
-$_ = $servername;
-&scanobjs;
-
-find({wanted => \&scanobjs, preprocess => \&filterobjs}, @ARGV);
-
-for my $f (@objlist) {
- open(ELFDUMP, "/usr/ccs/bin/elfdump -r $f|") || die "Cannot open file";
- my $edline;
- my %deps = ();
- while ($edline = <ELFDUMP>) {
- next unless $edline =~ /(GLOB_DAT|R_386_32|R_SPARC_32)/;
- my @edpart = split /\s+/, $edline;
- if (exists $symtable{$edpart[$#edpart]}) {
-# print "$f : $edpart[$#edpart] - $symtable{$edpart[$#edpart]}\n";
- $deps{$symtable{$edpart[$#edpart]}} += 1;
- } else {
- print "$f : $edpart[$#edpart] - not found\n";
- }
- }
- close(ELFDUMP);
-
- my $depslist = "";
-
- for my $d (sort keys %deps) {
- next if ($f =~ /$d/ || $d !~ /\.so$/);
- $depslist .= " -Wl,-N,$d";
- }
- print "$f : $depslist\n";
- my $depsfile = $f ."_deps";
- if ($depslist ne "") {
- my $dirlist = "-R $ProjectRoot/lib/modules";
- if ($f =~ /drivers/) {
- $dirlist .= " -R $ProjectRoot/lib/modules/drivers";
- }
- if ($depslist =~ /libfbdevhw.so/) {
- $dirlist .= " -R $ProjectRoot/lib/modules/linux/";
- }
- if ($depslist =~ /libGLcore.so/) {
- $dirlist .= " -R $ProjectRoot/lib/modules/extensions/";
- }
-
- open(MODDEPSFILE, '>', $depsfile) || die "Cannot write to $depsfile";
- print MODDEPSFILE $dirlist, $depslist, "\n";
- close(MODDEPSFILE);
- } elsif (! -z $depsfile) {
- unlink($depsfile);
- system("touch $depsfile");
- }
-}
-
-
-sub filterobjs {
- return (grep( ($_ =~ /\.so$/) || (-d $_) , @_));
-}
-
-sub scanobjs {
- return if /libXfont.so/;
- return if (-d $_);
- print "Scanning $File::Find::name ...\n";
- push @objlist, $File::Find::name;
- open(NMOUT, "/usr/ccs/bin/nm $_|") || die "Cannot nm file $_";
- my $nmline;
- while ($nmline = <NMOUT>) {
- next unless $nmline =~ /\|/;
- my @nmpart = split(/\s*\|\s*/, $nmline);
- next unless ($nmpart[4] eq "GLOB") && ($nmpart[6] ne "UNDEF");
- chomp($nmpart[7]);
- if (! exists $symtable{$nmpart[7]}) {
- $symtable{$nmpart[7]} = $_;
- }
- }
- close(NMOUT);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/solaris-amd64.S b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/solaris-amd64.S
deleted file mode 100644
index 9f5e58cb0..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/solaris-amd64.S
+++ /dev/null
@@ -1,73 +0,0 @@
-/ Copyright 2005 Sun Microsystems, Inc. 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 the rights to use, copy, modify, merge, publish,
-/ distribute, and/or sell copies of the Software, and to permit persons
-/ to whom the Software is furnished to do so, provided that the above
-/ copyright notice(s) and this permission notice appear in all copies of
-/ the Software and that both the above copyright notice(s) and this
-/ permission notice appear in supporting documentation.
-/
-/ 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
-/ OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-/ HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-/ INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-/ FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-/ NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-/ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-/
-/ Except as contained in this notice, the name of a copyright holder
-/ shall not be used in advertising or otherwise to promote the sale, use
-/ or other dealings in this Software without prior written authorization
-/ of the copyright holder.
-
-#ifdef INLINE_ASM
-#define FUNCTION_START(f,n) .inline f,n
-#define FUNCTION_END(f) .end
-#else
-#define _ASM
-#include <sys/asm_linkage.h>
-#define FUNCTION_START(f,n) ENTRY(f)
-#define FUNCTION_END(f) SET_SIZE(f)
-#endif
-
- FUNCTION_START(inb,4)
- movq %rdi, %rdx
- xorq %rax, %rax
- inb (%dx)
- FUNCTION_END(inb)
-
- FUNCTION_START(inw,4)
- movq %rdi, %rdx
- xorq %rax, %rax
- inw (%dx)
- FUNCTION_END(inw)
-
- FUNCTION_START(inl,4)
- movq %rdi, %rdx
- xorq %rax, %rax
- inl (%dx)
- FUNCTION_END(inl)
-
- FUNCTION_START(outb,8)
- movq %rdi, %rdx
- movq %rsi, %rax
- outb (%dx)
- FUNCTION_END(outb)
-
- FUNCTION_START(outw,8)
- movq %rdi, %rdx
- movq %rsi, %rax
- outw (%dx)
- FUNCTION_END(outw)
-
- FUNCTION_START(outl,8)
- movq %rdi, %rdx
- movq %rsi, %rax
- outl (%dx)
- FUNCTION_END(outl)
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/solaris-ia32.S b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/solaris-ia32.S
deleted file mode 100644
index e2d9cf60a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/solaris-ia32.S
+++ /dev/null
@@ -1,73 +0,0 @@
-/ Copyright 2004 Sun Microsystems, Inc. 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 the rights to use, copy, modify, merge, publish,
-/ distribute, and/or sell copies of the Software, and to permit persons
-/ to whom the Software is furnished to do so, provided that the above
-/ copyright notice(s) and this permission notice appear in all copies of
-/ the Software and that both the above copyright notice(s) and this
-/ permission notice appear in supporting documentation.
-/
-/ 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
-/ OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-/ HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-/ INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-/ FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-/ NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-/ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-/
-/ Except as contained in this notice, the name of a copyright holder
-/ shall not be used in advertising or otherwise to promote the sale, use
-/ or other dealings in this Software without prior written authorization
-/ of the copyright holder.
-
-#ifdef INLINE_ASM
-#define FUNCTION_START(f,n) .inline f,n
-#define FUNCTION_END(f) .end
-#else
-#define _ASM
-#include <sys/asm_linkage.h>
-#define FUNCTION_START(f,n) ENTRY(f)
-#define FUNCTION_END(f) SET_SIZE(f)
-#endif
-
- FUNCTION_START(inb,4)
- movl (%esp), %edx
- xorl %eax, %eax
- inb (%dx)
- FUNCTION_END(inb)
-
- FUNCTION_START(inw,4)
- movl (%esp), %edx
- xorl %eax, %eax
- inw (%dx)
- FUNCTION_END(inw)
-
- FUNCTION_START(inl,4)
- movl (%esp), %edx
- xorl %eax, %eax
- inl (%dx)
- FUNCTION_END(inl)
-
- FUNCTION_START(outb,8)
- movl (%esp), %edx
- movl 4(%esp), %eax
- outb (%dx)
- FUNCTION_END(outb)
-
- FUNCTION_START(outw,8)
- movl (%esp), %edx
- movl 4(%esp), %eax
- outw (%dx)
- FUNCTION_END(outw)
-
- FUNCTION_START(outl,8)
- movl (%esp), %edx
- movl 4(%esp), %eax
- outl (%dx)
- FUNCTION_END(outl)
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/solaris-sparcv8plus.S b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/solaris-sparcv8plus.S
deleted file mode 100644
index fb23942ef..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/solaris-sparcv8plus.S
+++ /dev/null
@@ -1,144 +0,0 @@
-/* Copyright 2004 Sun Microsystems, Inc. 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 the rights to use, copy, modify, merge, publish,
- * distribute, and/or sell copies of the Software, and to permit persons
- * to whom the Software is furnished to do so, provided that the above
- * copyright notice(s) and this permission notice appear in all copies of
- * the Software and that both the above copyright notice(s) and this
- * permission notice appear in supporting documentation.
- *
- * 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
- * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
- * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * of the copyright holder.
- */
-
-#ifdef INLINE_ASM
-#define FUNCTION_START(f,n) .inline f,n
-#define FUNCTION_END(f) .end
-#else
-#define _ASM
-#include <sys/asm_linkage.h>
-#define FUNCTION_START(f,n) ENTRY(f)
-#define FUNCTION_END(f) SET_SIZE(f)
-#endif
-
-/* Converted from common/compiler.h gcc inline format to Sun cc inline
- * format by Kenjiro Tsuji
- *
- * The value 0x88 means ASI_PRIMARY_LITTLE.
- * The store or load to/from the address space will be done
- * as little-endian. In the original xrog code, the value
- * is defined as the macro ASI_PL.
- *
- * In the original xorg code, "membar #StoreStore|#StoreLoad"
- * is directly implemented as an instruction "0x8143e00a".
- *
- */
-
- FUNCTION_START(outb, 0)
- stba %o1, [%o0] 0x88
- membar #StoreStore|#StoreLoad
- FUNCTION_END(outb)
-
- FUNCTION_START(outw, 0)
- stha %o1, [%o0] 0x88
- membar #StoreStore|#StoreLoad
- FUNCTION_END(outw)
-
- FUNCTION_START(outl, 0)
- sta %o1, [%o0] 0x88
- membar #StoreStore|#StoreLoad
- FUNCTION_END(outl)
-
- FUNCTION_START(inb, 0)
- lduba [%o0] 0x88, %o0
- FUNCTION_END(inb)
-
- FUNCTION_START(inw, 0)
- lduha [%o0] 0x88, %o0
- FUNCTION_END(inw)
-
- FUNCTION_START(inl, 0)
- lda [%o0] 0x88, %o0
- FUNCTION_END(inl)
-
- FUNCTION_START(xf86ReadMmio8, 0)
- lduba [%o0 + %o1] 0x88, %o0
- FUNCTION_END(xf86ReadMmio8)
-
- FUNCTION_START(xf86ReadMmio16Be, 0)
- lduh [%o0 + %o1], %o0
- FUNCTION_END(xf86ReadMmio16Be)
-
- FUNCTION_START(xf86ReadMmio16Le, 0)
- lduha [%o0 + %o1] 0x88, %o0
- FUNCTION_END(xf86ReadMmio16Le)
-
- FUNCTION_START(xf86ReadMmio32Be, 0)
- ld [%o0 + %o1], %o0
- FUNCTION_END(xf86ReadMmio32Be)
-
- FUNCTION_START(xf86ReadMmio32Le, 0)
- lda [%o0 + %o1] 0x88, %o0
- FUNCTION_END(xf86ReadMmio32Le)
-
- FUNCTION_START(xf86WriteMmio8, 0)
- stba %o2, [%o0 + %o1] 0x88
- membar #StoreStore|#StoreLoad
- FUNCTION_END(xf86WriteMmio8)
-
- FUNCTION_START(xf86WriteMmio16Be, 0)
- sth %o2, [%o0 + %o1]
- membar #StoreStore|#StoreLoad
- FUNCTION_END(xf86WriteMmio16Be)
-
- FUNCTION_START(xf86WriteMmio16Le, 0)
- stha %o2, [%o0 + %o1] 0x88
- membar #StoreStore|#StoreLoad
- FUNCTION_END(xf86WriteMmio16Le)
-
- FUNCTION_START(xf86WriteMmio32Be, 0)
- st %o2, [%o0 + %o1]
- membar #StoreStore|#StoreLoad
- FUNCTION_END(xf86WriteMmio32Be)
-
- FUNCTION_START(xf86WriteMmio32Le, 0)
- sta %o2, [%o0 + %o1] 0x88
- membar #StoreStore|#StoreLoad
- FUNCTION_END(xf86WriteMmio32Le)
-
- FUNCTION_START(xf86WriteMmio8NB, 0)
- add %o0, %o1, %o0
- stba %o2, [%o0] 0x88
- FUNCTION_END(xf86WriteMmio8NB)
-
- FUNCTION_START(xf86WriteMmio16BeNB, 0)
- sth %o2, [%o0 + %o1]
- FUNCTION_END(xf86WriteMmio16BeNB)
-
- FUNCTION_START(xf86WriteMmio16LeNB, 0)
- stha %o2, [%o0 + %o1] 0x88
- FUNCTION_END(xf86WriteMmio16LeNB)
-
- FUNCTION_START(xf86WriteMmio32BeNB, 0)
- st %o2, [%o0 + %o1]
- FUNCTION_END(xf86WriteMmio32BeNB)
-
- FUNCTION_START(xf86WriteMmio32LeNB, 0)
- sta %o2, [%o0 + %o1] 0x88
- FUNCTION_END(xf86WriteMmio32LeNB)
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_agp.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_agp.c
deleted file mode 100644
index 0460f1299..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_agp.c
+++ /dev/null
@@ -1,339 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_agp.c,v 1.5 2005/08/24 22:37:15 alanc Exp $ */
-/*
- * Abstraction of the AGP GART interface.
- *
- * This version is for Solaris.
- *
- * Copyright © 2000 VA Linux Systems, Inc.
- * Copyright © 2001 The XFree86 Project, Inc.
- */
-/* Copyright 2005 Sun Microsystems, Inc. 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 the rights to use, copy, modify, merge, publish,
- * distribute, and/or sell copies of the Software, and to permit persons
- * to whom the Software is furnished to do so, provided that the above
- * copyright notice(s) and this permission notice appear in all copies of
- * the Software and that both the above copyright notice(s) and this
- * permission notice appear in supporting documentation.
- *
- * 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
- * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
- * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * of the copyright holder.
- */
-
-#pragma ident "@(#)sun_agp.c 1.1 05/04/04 SMI"
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86_OSproc.h"
-#include <unistd.h>
-#include <sys/ioccom.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include "agpgart.h"
-
-#ifndef AGP_DEVICE
-#define AGP_DEVICE "/dev/agpgart"
-#endif
-/* AGP page size is independent of the host page size. */
-#ifndef AGP_PAGE_SIZE
-#define AGP_PAGE_SIZE 4096
-#endif
-
-static int gartFd = -1;
-static int acquiredScreen = -1;
-static Bool initDone = FALSE;
-/*
- * Close /dev/agpgart. This frees all associated memory allocated during
- * this server generation.
- */
-Bool
-xf86GARTCloseScreen(int screenNum)
-{
- if (gartFd != -1) {
- close(gartFd);
- acquiredScreen = -1;
- gartFd = -1;
- initDone = FALSE;
-
- xf86DrvMsg(screenNum, X_INFO,
- "xf86GARTCloseScreen: device closed successfully\n");
-
- }
- return TRUE;
-}
-
-/*
- * Open /dev/agpgart. Keep it open until xf86GARTCloseScreen is called.
- */
-static Bool
-GARTInit(int screenNum)
-{
- if (initDone)
- return (gartFd != -1);
-
- if (gartFd == -1)
- gartFd = open(AGP_DEVICE, O_RDWR);
- else
- return FALSE;
-
- if (gartFd == -1) {
- xf86DrvMsg(screenNum, X_ERROR,
- "GARTInit: Unable to open " AGP_DEVICE " (%s)\n",
- strerror(errno));
- return FALSE;
- }
-
- initDone = TRUE;
- xf86DrvMsg(screenNum, X_INFO,
- "GARTInit: " AGP_DEVICE " opened successfully\n");
-
- return TRUE;
-}
-
-Bool
-xf86AgpGARTSupported(void)
-{
- return (GARTInit(-1));
-
-}
-
-AgpInfoPtr
-xf86GetAGPInfo(int screenNum)
-{
- agp_info_t agpinf;
- AgpInfoPtr info;
-
- if (!GARTInit(screenNum))
- return NULL;
-
- if ((info = xcalloc(sizeof(AgpInfo), 1)) == NULL) {
- xf86DrvMsg(screenNum, X_ERROR,
- "xf86GetAGPInfo: Failed to allocate AgpInfo\n");
- return NULL;
- }
-
- if (ioctl(gartFd, AGPIOC_INFO, &agpinf) != 0) {
- xf86DrvMsg(screenNum, X_ERROR,
- "xf86GetAGPInfo: AGPIOC_INFO failed (%s)\n",
- strerror(errno));
- return NULL;
- }
-
- info->bridgeId = agpinf.agpi_devid;
- info->agpMode = agpinf.agpi_mode;
- info->base = agpinf.agpi_aperbase;
- info->size = agpinf.agpi_apersize;
- info->totalPages = (unsigned long)agpinf.agpi_pgtotal;
- info->systemPages = (unsigned long)agpinf.agpi_pgsystem;
- info->usedPages = (unsigned long)agpinf.agpi_pgused;
-
- return info;
-}
-
-Bool
-xf86AcquireGART(int screenNum)
-{
-
- if (!GARTInit(screenNum))
- return FALSE;
-
- if (acquiredScreen != screenNum) {
- if (ioctl(gartFd, AGPIOC_ACQUIRE, 0) != 0) {
- xf86DrvMsg(screenNum, X_WARNING,
- "xf86AcquireGART: AGPIOC_ACQUIRE failed (%s)\n",
- strerror(errno));
- return FALSE;
- }
- acquiredScreen = screenNum;
- xf86DrvMsg(screenNum, X_INFO,
- "xf86AcquireGART: AGPIOC_ACQUIRE succeeded\n");
- }
- return TRUE;
-}
-
-Bool
-xf86ReleaseGART(int screenNum)
-{
-
- if (!GARTInit(screenNum))
- return FALSE;
-
- if (acquiredScreen == screenNum) {
- /*
- * The FreeBSD agp driver removes allocations on release.
- * The Solaris driver doesn't. xf86ReleaseGART() is expected
- * to give up access to the GART, but not to remove any
- * allocations.
- */
-
- if (ioctl(gartFd, AGPIOC_RELEASE, 0) != 0) {
- xf86DrvMsg(screenNum, X_WARNING,
- "xf86ReleaseGART: AGPIOC_RELEASE failed (%s)\n",
- strerror(errno));
- return FALSE;
- }
- acquiredScreen = -1;
- xf86DrvMsg(screenNum, X_INFO,
- "xf86ReleaseGART: AGPIOC_RELEASE succeeded\n");
- return TRUE;
- }
- return FALSE;
-}
-
-int
-xf86AllocateGARTMemory(int screenNum, unsigned long size, int type,
- unsigned long *physical)
-{
- agp_allocate_t alloc;
- int pages;
-
- /*
- * Allocates "size" bytes of GART memory (rounds up to the next
- * page multiple) or type "type". A handle (key) for the allocated
- * memory is returned. On error, the return value is -1.
- * "size" should be larger than 0, or AGPIOC_ALLOCATE ioctl will
- * return error.
- */
-
- if (!GARTInit(screenNum) || (acquiredScreen != screenNum))
- return -1;
-
- pages = (size / AGP_PAGE_SIZE);
- if (size % AGP_PAGE_SIZE != 0)
- pages++;
-
- alloc.agpa_pgcount = pages;
- alloc.agpa_type = type;
-
- if (ioctl(gartFd, AGPIOC_ALLOCATE, &alloc) != 0) {
- xf86DrvMsg(screenNum, X_WARNING, "xf86AllocateGARTMemory: "
- "allocation of %d pages failed\n\t(%s)\n", pages,
- strerror(errno));
- return -1;
- }
-
- if (physical)
- *physical = (unsigned long)alloc.agpa_physical;
-
- return alloc.agpa_key;
-}
-
-Bool
-xf86DeallocateGARTMemory(int screenNum, int key)
-{
- if (!GARTInit(screenNum) || (acquiredScreen != screenNum))
- return FALSE;
-
- if (ioctl(gartFd, AGPIOC_DEALLOCATE, (int *)key) != 0) {
- xf86DrvMsg(screenNum, X_WARNING, "xf86DeAllocateGARTMemory: "
- "deallocation of gart memory with key %d failed\n"
- "\t(%s)\n", key, strerror(errno));
- return FALSE;
- }
-
- return TRUE;
-}
-
-/* Bind GART memory with "key" at "offset" */
-Bool
-xf86BindGARTMemory(int screenNum, int key, unsigned long offset)
-{
- agp_bind_t bind;
- int pageOffset;
-
- if (!GARTInit(screenNum) || (acquiredScreen != screenNum))
- return FALSE;
-
- if (offset % AGP_PAGE_SIZE != 0) {
- xf86DrvMsg(screenNum, X_WARNING, "xf86BindGARTMemory: "
- "offset (0x%lx) is not page-aligned (%d)\n",
- offset, AGP_PAGE_SIZE);
- return FALSE;
- }
- pageOffset = offset / AGP_PAGE_SIZE;
-
- xf86DrvMsgVerb(screenNum, X_INFO, 3,
- "xf86BindGARTMemory: bind key %d at 0x%08lx "
- "(pgoffset %d)\n", key, offset, pageOffset);
-
- bind.agpb_pgstart = pageOffset;
- bind.agpb_key = key;
-
- if (ioctl(gartFd, AGPIOC_BIND, &bind) != 0) {
- xf86DrvMsg(screenNum, X_WARNING, "xf86BindGARTMemory: "
- "binding of gart memory with key %d\n"
- "\tat offset 0x%lx failed (%s)\n",
- key, offset, strerror(errno));
- return FALSE;
- }
-
- return TRUE;
-}
-
-/* Unbind GART memory with "key" */
-Bool
-xf86UnbindGARTMemory(int screenNum, int key)
-{
- agp_unbind_t unbind;
-
- if (!GARTInit(screenNum) || (acquiredScreen != screenNum))
- return FALSE;
-
- unbind.agpu_pri = 0;
- unbind.agpu_key = key;
-
- if (ioctl(gartFd, AGPIOC_UNBIND, &unbind) != 0) {
- xf86DrvMsg(screenNum, X_WARNING, "xf86UnbindGARTMemory: "
- "unbinding of gart memory with key %d "
- "failed (%s)\n", key, strerror(errno));
- return FALSE;
- }
-
- xf86DrvMsgVerb(screenNum, X_INFO, 3,
- "xf86UnbindGARTMemory: unbind key %d\n", key);
-
- return TRUE;
-}
-
-
-/* XXX Interface may change. */
-Bool
-xf86EnableAGP(int screenNum, CARD32 mode)
-{
- agp_setup_t setup;
-
- if (!GARTInit(screenNum) || (acquiredScreen != screenNum))
- return FALSE;
-
- setup.agps_mode = mode;
- if (ioctl(gartFd, AGPIOC_SETUP, &setup) != 0) {
- xf86DrvMsg(screenNum, X_WARNING, "xf86EnableAGP: "
- "AGPIOC_SETUP with mode %x failed (%s)\n",
- mode, strerror(errno));
- return FALSE;
- }
-
- return TRUE;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_bios.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_bios.c
deleted file mode 100644
index 8319de04e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_bios.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_bios.c,v 1.2tsi Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- * Copyright 1999 by David Holland <davidh@iquest.net>
- *
- * 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, and
- * that the names of the copyright holders not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. The copyright holders make no representations
- * about the suitability of this software for any purpose. It is provided "as
- * is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
- * SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef i386
-#define _NEED_SYSI86
-#endif
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((void *)-1)
-#endif
-
-extern char *apertureDevName;
-
-/*
- * Read BIOS via mmap()ing physical memory.
- */
-int
-xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
- int Len)
-{
- int fd;
- unsigned char *ptr;
- char solx86_vtname[20];
- int psize;
- int mlen;
-
- /*
- * Solaris 2.1 x86 SVR4 (10/27/93)
- * The server must treat the virtual terminal device file
- * as the standard SVR4 /dev/pmem. By default, then used VT
- * is considered the "default" file to open.
- *
- * Solaris 2.8 x86 (7/26/99) - DWH
- *
- * Use /dev/xsvc for everything.
- */
- psize = xf86getpagesize();
- Offset += Base & (psize - 1);
- Base &= ~(psize - 1);
- mlen = (Offset + Len + psize - 1) & ~(psize - 1);
-#if defined(i386) && !defined(__SOL8__)
- if (Base >= 0xA0000 && Base + mlen < 0xFFFFF && xf86Info.vtno >= 0)
- sprintf(solx86_vtname, "/dev/vt%02d", xf86Info.vtno);
- else
-#endif
- {
- if (!xf86LinearVidMem())
- FatalError("xf86ReadBIOS: Could not mmap BIOS"
- " [a=%lx]\n", Base);
- sprintf(solx86_vtname, apertureDevName);
- }
-
- if ((fd = open(solx86_vtname, O_RDONLY)) < 0)
- {
- xf86Msg(X_WARNING, "xf86ReadBIOS: Failed to open %s (%s)\n",
- solx86_vtname, strerror(errno));
- return(-1);
- }
- ptr = (unsigned char *)mmap((caddr_t)0, mlen, PROT_READ,
- MAP_SHARED, fd, (off_t)Base);
- if (ptr == MAP_FAILED)
- {
- xf86Msg(X_WARNING, "xf86ReadBIOS: %s mmap failed "
- "[0x%08lx, 0x%04x]\n",
- solx86_vtname, Base, mlen);
- close(fd);
- return -1;
- }
-
- (void)memcpy(Buf, (void *)(ptr + Offset), Len);
- (void)munmap((caddr_t)ptr, mlen);
- (void)close(fd);
-
- return Len;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_init.c
deleted file mode 100644
index b2fc3a41e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_init.c
+++ /dev/null
@@ -1,393 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_init.c,v 1.5 2001/11/25 13:51:24 tsi Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- * Copyright 1999 by David Holland <davidh@iquest.net>
- *
- * 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, and
- * that the names of the copyright holders not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. The copyright holders make no representations
- * about the suitability of this software for any purpose. It is provided "as
- * is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, AND IN NO
- * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_init.c,v 1.5 2005/07/03 07:01:36 daniels Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#if defined(__i386) || defined(__x86)
-# include <sys/kd.h>
-#endif
-
-static Bool KeepTty = FALSE;
-static Bool Protect0 = FALSE;
-#ifdef HAS_USL_VTS
-static int VTnum = -1;
-static int xf86StartVT = -1;
-#endif
-
-#if defined(__SOL8__) || !defined(__i386)
-static char fb_dev[PATH_MAX] = "/dev/fb";
-#else
-static char fb_dev[PATH_MAX] = "/dev/console";
-#endif
-
-void
-xf86OpenConsole(void)
-{
-#ifdef HAS_USL_VTS
- int fd, i;
- struct vt_mode VT;
- struct vt_stat vtinfo;
- int FreeVTslot;
- MessageType from = X_PROBED;
-#endif
-
- if (serverGeneration == 1)
- {
- /* Check if we're run with euid==0 */
- if (geteuid() != 0)
- FatalError("xf86OpenConsole: Server must be suid root\n");
-
- /* Protect page 0 to help find NULL dereferencing */
- /* mprotect() doesn't seem to work */
- if (Protect0)
- {
- int fd = -1;
-
- if ((fd = open("/dev/zero", O_RDONLY, 0)) < 0)
- {
- xf86Msg(X_WARNING,
- "xf86OpenConsole: cannot open /dev/zero (%s)\n",
- strerror(errno));
- }
- else
- {
- if ((int)mmap(0, 0x1000, PROT_NONE,
- MAP_FIXED | MAP_SHARED, fd, 0) == -1)
- xf86Msg(X_WARNING,
- "xf86OpenConsole: failed to protect page 0 (%s)\n",
- strerror(errno));
-
- close(fd);
- }
- }
-
-#ifdef HAS_USL_VTS
-
- /*
- * Setup the virtual terminal manager
- */
- if (VTnum != -1)
- {
- xf86Info.vtno = VTnum;
- from = X_CMDLINE;
- }
- else
- {
- if ((fd = open("/dev/vt00",O_RDWR,0)) < 0)
- FatalError("xf86OpenConsole: Cannot open /dev/vt00 (%s)\n",
- strerror(errno));
-
- if (ioctl(fd, VT_GETSTATE, &vtinfo) < 0)
- FatalError("xf86OpenConsole: Cannot determine current VT\n");
-
- xf86StartVT = vtinfo.v_active;
-
- /*
- * There is a SEVERE problem with x86's VT's. The VT_OPENQRY
- * ioctl() will panic the entire system if all 8 (7 VT's+Console)
- * terminals are used. The only other way I've found to determine
- * if there is a free VT is to try activating all the the available
- * VT's and see if they all succeed - if they do, there there is no
- * free VT, and the Xserver cannot continue without panic'ing the
- * system. (It's ugly, but it seems to work.) Note there is a
- * possible race condition here.
- *
- * David Holland 2/23/94
- */
-
- FreeVTslot = 0;
- for (i = 7; (i >= 0) && !FreeVTslot; i--)
- if (ioctl(fd, VT_ACTIVATE, i) != 0)
- FreeVTslot = 1;
-
- if (!FreeVTslot ||
- (ioctl(fd, VT_OPENQRY, &xf86Info.vtno) < 0) ||
- (xf86Info.vtno == -1))
- FatalError("xf86OpenConsole: Cannot find a free VT\n");
-
- close(fd);
- }
-
- xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno);
-
- sprintf(fb_dev, "/dev/vt%02d", xf86Info.vtno); /* Solaris 2.1 x86 */
-
-#endif /* HAS_USL_VTS */
-
- if (!KeepTty)
- setpgrp();
-
- if (((xf86Info.consoleFd = open(fb_dev, O_RDWR | O_NDELAY, 0)) < 0))
- FatalError("xf86OpenConsole: Cannot open %s (%s)\n",
- fb_dev, strerror(errno));
-
-#ifdef HAS_USL_VTS
-
- /* Change ownership of the vt */
- chown(fb_dev, getuid(), getgid());
-
- /*
- * Now get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
-
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
-
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0)
- FatalError("xf86OpenConsole: VT_GETMODE failed\n");
-
- signal(SIGUSR1, xf86VTRequest);
-
- VT.mode = VT_PROCESS;
- VT.relsig = SIGUSR1;
- VT.acqsig = SIGUSR1;
-
- if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0)
- FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed\n");
-#endif
-#ifdef KDSETMODE
- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0)
- FatalError("xf86OpenConsole: KDSETMODE KD_GRAPHICS failed\n");
-#endif
- }
- else /* serverGeneration != 1 */
- {
-#ifdef HAS_USL_VTS
- /*
- * Now re-get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
-
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
-
- /*
- * If the server doesn't have the VT when the reset occurs,
- * this is to make sure we don't continue until the activate
- * signal is received.
- */
- if (!xf86Screens[0]->vtSema)
- sleep(5);
-
-#endif /* HAS_USL_VTS */
-
- }
-}
-
-void
-xf86CloseConsole(void)
-{
-#ifdef HAS_USL_VTS
- struct vt_mode VT;
-#endif
-#if defined(__SOL8__) || !defined(i386)
- int tmp;
-#endif
-
-#if !defined(i386) && !defined(__x86)
-
- if (!xf86DoProbe && !xf86DoConfigure) {
- int fd;
-
- /*
- * Wipe out framebuffer just like the non-SI Xsun server does. This
- * could be improved by saving framebuffer contents in
- * xf86OpenConsole() above and restoring them here. Also, it's unclear
- * at this point whether this should be done for all framebuffers in
- * the system, rather than only the console.
- */
- if ((fd = open("/dev/fb", O_RDWR, 0)) < 0) {
- xf86Msg(X_WARNING,
- "xf86CloseConsole(): unable to open framebuffer (%s)\n",
- strerror(errno));
- } else {
- struct fbgattr fbattr;
-
- if ((ioctl(fd, FBIOGATTR, &fbattr) < 0) &&
- (ioctl(fd, FBIOGTYPE, &fbattr.fbtype) < 0)) {
- xf86Msg(X_WARNING,
- "xf86CloseConsole(): unable to retrieve framebuffer"
- " attributes (%s)\n", strerror(errno));
- } else {
- pointer fbdata;
-
- fbdata = mmap(NULL, fbattr.fbtype.fb_size,
- PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
- if (fbdata == MAP_FAILED) {
- xf86Msg(X_WARNING,
- "xf86CloseConsole(): unable to mmap framebuffer"
- " (%s)\n", strerror(errno));
- } else {
- (void)memset(fbdata, 0, fbattr.fbtype.fb_size);
- (void)munmap(fbdata, fbattr.fbtype.fb_size);
- }
- }
-
- close(fd);
- }
- }
-
-#endif
-
-#ifdef KDSETMODE
- /* Reset the display back to text mode */
- ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT);
-#endif
-
-#ifdef HAS_USL_VTS
-
- /*
- * Solaris 2.1 x86 doesn't seem to "switch" back to the console when the VT
- * is relinquished and its mode is reset to auto. Also, Solaris 2.1 seems
- * to associate vt00 with the console so I've opened the "console" back up
- * and made it the active vt again in text mode and then closed it. There
- * must be a better hack for this but I'm not aware of one at this time.
- *
- * Doug Anson 11/6/93
- * danson@lgc.com
- *
- * Fixed - 12/5/93 - David Holland - davidh@dorite.use.com
- * Did the whole thing similarly to the way linux does it
- */
-
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) != -1)
- {
- VT.mode = VT_AUTO; /* Set default vt handling */
- ioctl(xf86Info.consoleFd, VT_SETMODE, &VT);
- }
-
- /* Activate the VT that X was started on */
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86StartVT);
-
-#endif /* HAS_USL_VTS */
-
- close(xf86Info.consoleFd);
-
-#if defined(__SOL8__) || !defined(i386)
-
- /*
- * This probably shouldn't be here. However, there is no corresponding
- * xf86CloseKbd() routine - DWH
- */
-
- /* Set the keyboard into "indirect" mode and turn off even translation */
- tmp = 0;
- (void) ioctl(xf86Info.kbdFd, KIOCSDIRECT, &tmp);
- tmp = TR_ASCII;
- (void) ioctl(xf86Info.kbdFd, KIOCTRANS, &tmp);
-
- close(xf86Info.kbdFd);
-
-#endif
-}
-
-int
-xf86ProcessArgument(int argc, char **argv, int i)
-{
- /*
- * Keep server from detaching from controlling tty. This is useful when
- * debugging, so the server can receive keyboard signals.
- */
- if (!strcmp(argv[i], "-keeptty"))
- {
- KeepTty = TRUE;
- return 1;
- }
-
- /*
- * Undocumented flag to protect page 0 from read/write to help catch NULL
- * pointer dereferences. This is purely a debugging flag.
- */
- if (!strcmp(argv[i], "-protect0"))
- {
- Protect0 = TRUE;
- return 1;
- }
-
-#ifdef HAS_USL_VTS
-
- if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
- {
- if (sscanf(argv[i], "vt%2d", &VTnum) == 0)
- {
- UseMsg();
- VTnum = -1;
- return 0;
- }
-
- return 1;
- }
-
-#endif /* HAS_USL_VTS */
-
-#if defined(__SOL8__) || !defined(i386)
-
- if ((i + 1) < argc) {
- if (!strcmp(argv[i], "-dev")) {
- strncpy(fb_dev, argv[i+1], PATH_MAX);
- fb_dev[PATH_MAX - 1] = '\0';
- return 2;
- }
-
- if (!strcmp(argv[i], "-ar1")) {
- xf86Info.kbdDelay = atoi(argv[i + 1]) * 1000;
- return 2;
- }
-
- if (!strcmp(argv[i], "-ar2")) {
- xf86Info.kbdRate = atoi(argv[i + 1]) * 1000;
- return 2;
- }
- }
-
-#endif
-
- return 0;
-}
-
-void xf86UseMsg()
-{
-#ifdef HAS_USL_VTS
- ErrorF("vtXX Use the specified VT number\n");
-#endif
-#if defined(__SOL8__) || !defined(i386)
- ErrorF("-dev <fb> Framebuffer device\n");
- ErrorF("-ar1 <float> Set autorepeat initiate time (sec)\n");
- ErrorF(" (if not using XKB)\n");
- ErrorF("-ar2 <float> Set autorepeat interval time (sec)\n");
- ErrorF(" (if not using XKB)\n");
-#endif
- ErrorF("-keeptty Don't detach controlling tty\n");
- ErrorF(" (for debugging only)\n");
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_inout.s b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_inout.s
deleted file mode 100644
index 5c0b23ef6..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_inout.s
+++ /dev/null
@@ -1,124 +0,0 @@
-/ $XFree86$
-/
-/ Copyright 1994-2001 The XFree86 Project, Inc. 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 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 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
-/ XFREE86 PROJECT 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 XFree86 Project 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
-/ XFree86 Project.
-/
-/
-/ File: sun_inout.s
-/
-/ Purpose: Provide inb(), inw(), inl(), outb(), outw(), outl() functions
-/ for Solaris x86 using the ProWorks compiler by SunPro
-/
-/ Author: Installed into XFree86 SuperProbe by Doug Anson (danson@lgc.com)
-/ Portions donated to XFree86 by Steve Dever (Steve.Dever@Eng.Sun.Com)
-/
-/ Synopsis: (c callable external declarations)
-/ extern unsigned char inb(int port);
-/ extern unsigned short inw(int port);
-/ extern unsigned long inl(int port);
-/ extern void outb(int port, unsigned char value);
-/ extern void outw(int port, unsigned short value);
-/ extern void outl(int port, unsigned long value);
-/
-
-.file "sunos_inout.s"
-.text
-
-.globl inb
-.globl inw
-.globl inl
-.globl outb
-.globl outw
-.globl outl
-
-/
-/ unsigned char inb(int port);
-/
-.align 4
-inb:
- movl 4(%esp),%edx
- subl %eax,%eax
- inb (%dx)
- ret
-.type inb,@function
-.size inb,.-inb
-
-/
-/ unsigned short inw(int port);
-/
-.align 4
-inw:
- movl 4(%esp),%edx
- subl %eax,%eax
- inw (%dx)
- ret
-.type inw,@function
-.size inw,.-inw
-
-/
-/ unsigned long inl(int port);
-/
-.align 4
-inl:
- movl 4(%esp),%edx
- inl (%dx)
- ret
-.type inl,@function
-.size inl,.-inl
-
-/
-/ void outb(int port, unsigned char value);
-/
-.align 4
-outb:
- movl 4(%esp),%edx
- movl 8(%esp),%eax
- outb (%dx)
- ret
-.type outb,@function
-.size outb,.-outb
-
-/
-/ void outw(int port, unsigned short value);
-/
-.align 4
-outw:
- movl 4(%esp),%edx
- movl 8(%esp),%eax
- outw (%dx)
- ret
-.type outw,@function
-.size outw,.-outw
-
-/
-/ void outl(int port, unsigned long value);
-/
-.align 4
-outl:
- movl 4(%esp),%edx
- movl 8(%esp),%eax
- outl (%dx)
- ret
-.type outl,@function
-.size outl,.-outl
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_io.c
deleted file mode 100644
index 2269ef3c9..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_io.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_io.c,v 1.2 2002/10/11 01:40:37 dawes Exp $ */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_io.c,v 1.4 2005/08/13 00:11:28 alanc Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- *
- * 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, and that the names of Thomas Roell and David Dawes
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Thomas Roell and
- * David Dawes makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THOMAS ROELL AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
- * IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES BE LIABLE FOR ANY SPECIAL,
- * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* Copyright 2005 Sun Microsystems, Inc. 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 the rights to use, copy, modify, merge, publish,
- * distribute, and/or sell copies of the Software, and to permit persons
- * to whom the Software is furnished to do so, provided that the above
- * copyright notice(s) and this permission notice appear in all copies of
- * the Software and that both the above copyright notice(s) and this
- * permission notice appear in supporting documentation.
- *
- * 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
- * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
- * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * of the copyright holder.
- */
-
-/* Solaris support routines for builtin "keyboard" driver */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "sun_kbd.h"
-
-static sunKbdPrivRec sunKeyboardPriv;
-
-_X_HIDDEN void
-xf86KbdInit(void)
-{
- const char *kbdName = "keyboard";
- pointer *kbdOptions = NULL;
- IDevPtr pDev;
-
- /* There should be a better way to find the keyboard device name, but
- this seems to work for now. */
- for (pDev = xf86ConfigLayout.inputs; pDev && pDev->identifier; pDev++) {
- if (!xf86NameCmp(pDev->driver, "keyboard")) {
- kbdName = pDev->identifier;
- kbdOptions = pDev->commonOptions;
- break;
- }
- }
-
- if (xf86Info.kbdFd < 0) {
- xf86Info.kbdFd = sunKbdOpen(kbdName, kbdOptions);
- if (xf86Info.kbdFd < 0) {
- FatalError("Unable to open keyboard: /dev/kbd\n");
- }
- }
-
- memset(&sunKeyboardPriv, 0, sizeof(sunKbdPrivRec));
- if (sunKbdInit(&sunKeyboardPriv, xf86Info.kbdFd,
- kbdName, kbdOptions) != Success) {
- FatalError("Unable to initialize keyboard driver\n");
- }
-}
-
-_X_HIDDEN int
-xf86KbdOn(void)
-{
- if (sunKbdOn(&sunKeyboardPriv) != Success) {
- FatalError("Enabling keyboard");
- }
-
- return xf86Info.kbdFd;
-}
-
-_X_HIDDEN int
-xf86KbdOff(void)
-{
- if (sunKbdOff(&sunKeyboardPriv) != Success) {
- FatalError("Disabling keyboard");
- }
-
- return xf86Info.kbdFd;
-}
-
-_X_EXPORT void
-xf86SoundKbdBell(int loudness, int pitch, int duration)
-{
- sunKbdSoundBell(&sunKeyboardPriv, loudness, pitch, duration);
-}
-
-_X_HIDDEN void
-xf86SetKbdLeds(int leds)
-{
- sunKbdSetLeds(&sunKeyboardPriv, leds);
-}
-
-_X_HIDDEN int
-xf86GetKbdLeds(void)
-{
- return sunKbdGetLeds(&sunKeyboardPriv);
-}
-
-_X_HIDDEN void
-xf86SetKbdRepeat(char rad)
-{
- sunKbdSetRepeat(&sunKeyboardPriv, rad);
-}
-
-/*
- * Lets try reading more than one keyboard event at a time in the hopes that
- * this will be slightly more efficient. Or we could just try the MicroSoft
- * method, and forget about efficiency. :-)
- */
-_X_HIDDEN void
-xf86KbdEvents(void)
-{
- Firm_event event[64];
- int nBytes, i;
-
- /* I certainly hope its not possible to read partial events */
-
- if ((nBytes = read(xf86Info.kbdFd, (char *)event, sizeof(event))) > 0)
- {
- for (i = 0; i < (nBytes / sizeof(Firm_event)); i++)
- sunPostKbdEvent(sunKeyboardPriv.ktype, &event[i]);
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbd.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbd.c
deleted file mode 100644
index 0a39155f4..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbd.c
+++ /dev/null
@@ -1,662 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbd.c,v 1.1 2001/05/28 02:42:31 tsi Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Dawes <dawes@XFree86.org>
- * Copyright 1999 by David Holland <davidh@iquest.net)
- *
- * 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, and
- * that the names of Thomas Roell, David Dawes, and David Holland not be used
- * in advertising or publicity pertaining to distribution of the software
- * without specific, written prior permission. Thomas Roell, David Dawes, and
- * David Holland make no representations about the suitability of this software
- * for any purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * THOMAS ROELL, DAVID DAWES, AND DAVID HOLLAND DISCLAIM ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS. IN NO EVENT SHALL THOMAS ROELL, DAVID DAWES, OR DAVID HOLLAND
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-/* Copyright 2004-2005 Sun Microsystems, Inc. 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 the rights to use, copy, modify, merge, publish,
- * distribute, and/or sell copies of the Software, and to permit persons
- * to whom the Software is furnished to do so, provided that the above
- * copyright notice(s) and this permission notice appear in all copies of
- * the Software and that both the above copyright notice(s) and this
- * permission notice appear in supporting documentation.
- *
- * 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
- * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
- * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * of the copyright holder.
- */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbd.c,v 1.7 2005/08/30 22:34:14 alanc Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSKbd.h"
-#include "sun_kbd.h"
-
-/* Define to provide support for using /dev/audio to ring the bell instead of
- the keyboard beeper */
-#define AUDIO_BELL
-
-#ifdef AUDIO_BELL
-#include <sys/audio.h>
-#include <sys/uio.h>
-#include <limits.h>
-#include <math.h>
-#include <poll.h>
-#endif
-
-/***************************************************************************
- * Common implementation of routines shared by "keyboard" driver in sun_io.c
- * and "kbd" driver (later on in this file)
- */
-
-#include <sys/stropts.h>
-#include <sys/vuid_event.h>
-#include <sys/kbd.h>
-
-_X_HIDDEN int
-sunKbdOpen(const char *devName, pointer options)
-{
- int kbdFD;
- const char *kbdPath = NULL;
- const char *defaultKbd = "/dev/kbd";
-
- if (options != NULL) {
- kbdPath = xf86SetStrOption(options, "Device", NULL);
- }
- if (kbdPath == NULL) {
- kbdPath = defaultKbd;
- }
-
- kbdFD = open(kbdPath, O_RDONLY | O_NONBLOCK);
-
- if (kbdFD == -1) {
- xf86Msg(X_ERROR, "%s: cannot open \"%s\"\n", devName, kbdPath);
- } else {
- xf86MsgVerb(X_INFO, 3, "%s: Opened device \"%s\"\n", devName, kbdPath);
- }
-
- if ((kbdPath != NULL) && (kbdPath != defaultKbd)) {
- xfree(kbdPath);
- }
- return kbdFD;
-}
-
-
-/*
- * Save initial keyboard state. This is called at the start of each server
- * generation.
- */
-
-_X_HIDDEN int
-sunKbdInit(sunKbdPrivPtr priv, int kbdFD, const char *devName, pointer options)
-{
- int ktype, klayout, i;
- const char *ktype_name;
-
- priv->kbdFD = kbdFD;
- priv->devName = devName;
- priv->otranslation = -1;
- priv->odirect = -1;
-
- if (options != NULL) {
- priv->strmod = xf86SetStrOption(options, "StreamsModule", NULL);
- priv->audioDevName = xf86SetStrOption(options, "BellDevice", NULL);
-
- if (priv->audioDevName && (priv->audioDevName[0] == '\0')) {
- xfree(priv->audioDevName);
- priv->audioDevName = NULL;
- }
- } else {
- priv->strmod = NULL;
- priv->audioDevName = NULL;
- }
-
- if (priv->strmod) {
- SYSCALL(i = ioctl(priv->kbdFD, I_PUSH, priv->strmod));
- if (i < 0) {
- xf86Msg(X_ERROR,
- "%s: cannot push module '%s' onto keyboard device: %s\n",
- priv->devName, priv->strmod, strerror(errno));
- }
- }
-
- SYSCALL(i = ioctl(kbdFD, KIOCTYPE, &ktype));
- if (i < 0) {
- xf86Msg(X_ERROR, "%s: Unable to determine keyboard type: %s\n",
- devName, strerror(errno));
- return BadImplementation;
- }
-
- SYSCALL(i = ioctl(kbdFD, KIOCLAYOUT, &klayout));
- if (i < 0) {
- xf86Msg(X_ERROR, "%s: Unable to determine keyboard layout: %s\n",
- devName, strerror(errno));
- return BadImplementation;
- }
-
- switch (ktype) {
- case KB_SUN3:
- ktype_name = "Sun Type 3"; break;
- case KB_SUN4:
- ktype_name = "Sun Type 4/5/6"; break;
- case KB_USB:
- ktype_name = "USB"; break;
- case KB_PC:
- ktype_name = "PC"; break;
- default:
- ktype_name = "Unknown"; break;
- }
-
- xf86Msg(X_PROBED, "%s: Keyboard type: %s (%d)\n",
- devName, ktype_name, ktype);
- xf86Msg(X_PROBED, "%s: Keyboard layout: %d\n", devName, klayout);
-
- priv->ktype = ktype;
- priv->keyMap = sunGetKbdMapping(ktype);
- priv->audioState = AB_INITIALIZING;
- priv->oleds = sunKbdGetLeds(priv);
-
- return Success;
-}
-
-_X_HIDDEN int
-sunKbdOn(sunKbdPrivPtr priv)
-{
- int ktrans, kdirect, i;
-
- SYSCALL(i = ioctl(priv->kbdFD, KIOCGDIRECT, &kdirect));
- if (i < 0) {
- xf86Msg(X_ERROR,
- "%s: Unable to determine keyboard direct setting: %s\n",
- priv->devName, strerror(errno));
- return BadImplementation;
- }
-
- priv->odirect = kdirect;
- kdirect = 1;
-
- SYSCALL(i = ioctl(priv->kbdFD, KIOCSDIRECT, &kdirect));
- if (i < 0) {
- xf86Msg(X_ERROR, "%s: Failed turning keyboard direct mode on: %s\n",
- priv->devName, strerror(errno));
- return BadImplementation;
- }
-
- /* Setup translation */
-
- SYSCALL(i = ioctl(priv->kbdFD, KIOCGTRANS, &ktrans));
- if (i < 0) {
- xf86Msg(X_ERROR,
- "%s: Unable to determine keyboard translation mode: %s\n",
- priv->devName, strerror(errno));
- return BadImplementation;
- }
-
- priv->otranslation = ktrans;
- ktrans = TR_UNTRANS_EVENT;
-
- SYSCALL(i = ioctl(priv->kbdFD, KIOCTRANS, &ktrans));
- if (i < 0) {
- xf86Msg(X_ERROR, "%s: Failed setting keyboard translation mode: %s\n",
- priv->devName, strerror(errno));
- return BadImplementation;
- }
-
- return Success;
-}
-
-_X_HIDDEN int
-sunKbdOff(sunKbdPrivPtr priv)
-{
- int i;
-
- /* restore original state */
-
- sunKbdSetLeds(priv, priv->oleds);
-
- if (priv->otranslation != -1) {
- SYSCALL(i = ioctl(priv->kbdFD, KIOCTRANS, &priv->otranslation));
- if (i < 0) {
- xf86Msg(X_ERROR,
- "%s: Unable to restore keyboard translation mode: %s\n",
- priv->devName, strerror(errno));
- return BadImplementation;
- }
- priv->otranslation = -1;
- }
-
- if (priv->odirect != -1) {
- SYSCALL(i = ioctl(priv->kbdFD, KIOCSDIRECT, &priv->odirect));
- if (i < 0) {
- xf86Msg(X_ERROR,
- "%s: Unable to restore keyboard direct setting: %s\n",
- priv->devName, strerror(errno));
- return BadImplementation;
- }
- priv->odirect = -1;
- }
-
- if (priv->strmod) {
- SYSCALL(i = ioctl(priv->kbdFD, I_POP, priv->strmod));
- if (i < 0) {
- xf86Msg(X_WARNING,
- "%s: cannot pop module '%s' off keyboard device: %s\n",
- priv->devName, priv->strmod, strerror(errno));
- }
- }
-
- return Success;
-}
-
-#ifdef AUDIO_BELL
-
-/* Helper function to ring bell via audio device instead of keyboard beeper */
-
-#define BELL_RATE 48000 /* Samples per second */
-#define BELL_HZ 50 /* Fraction of a second i.e. 1/x */
-#define BELL_MS (1000/BELL_HZ) /* MS */
-#define BELL_SAMPLES (BELL_RATE / BELL_HZ)
-#define BELL_MIN 3 /* Min # of repeats */
-
-static int
-sunKbdAudioBell(sunKbdPrivPtr priv, int loudness, int pitch, int duration)
-{
- static short samples[BELL_SAMPLES];
- static short silence[BELL_SAMPLES]; /* "The Sound of Silence" */
- static int lastFreq;
- int cnt;
- int i;
- int written;
- int repeats;
- int freq;
- audio_info_t audioInfo;
- struct iovec iov[IOV_MAX];
- int iovcnt;
- double ampl, cyclen, phase;
- int audioFD;
-
- if ((loudness <= 0) || (pitch <= 0) || (duration <= 0)) {
- return 0;
- }
-
- if ((priv == NULL) || (priv->audioDevName == NULL)) {
- return -1;
- }
-
- if (priv->audioState == AB_INITIALIZING) {
- priv->audioState = AB_NORMAL;
- lastFreq = 0;
- bzero(silence, sizeof(silence));
- }
-
- audioFD = open(priv->audioDevName, O_WRONLY | O_NONBLOCK);
- if (audioFD == -1) {
- xf86Msg(X_ERROR, "%s: cannot open audio device \"%s\": %s\n",
- priv->devName, priv->audioDevName, strerror(errno));
- return -1;
- }
-
- freq = pitch;
- freq = min(freq, (BELL_RATE / 2) - 1);
- freq = max(freq, 2 * BELL_HZ);
-
- /*
- * Ensure full waves per buffer
- */
- freq -= freq % BELL_HZ;
-
- if (freq != lastFreq) {
- lastFreq = freq;
- ampl = 16384.0;
-
- cyclen = (double) freq / (double) BELL_RATE;
- phase = 0.0;
-
- for (i = 0; i < BELL_SAMPLES; i++) {
- samples[i] = (short) (ampl * sin(2.0 * M_PI * phase));
- phase += cyclen;
- if (phase >= 1.0)
- phase -= 1.0;
- }
- }
-
- repeats = (duration + (BELL_MS / 2)) / BELL_MS;
- repeats = max(repeats, BELL_MIN);
-
- loudness = max(0, loudness);
- loudness = min(loudness, 100);
-
-#ifdef DEBUG
- ErrorF("BELL : freq %d volume %d duration %d repeats %d\n",
- freq, loudness, duration, repeats);
-#endif
-
- AUDIO_INITINFO(&audioInfo);
- audioInfo.play.encoding = AUDIO_ENCODING_LINEAR;
- audioInfo.play.sample_rate = BELL_RATE;
- audioInfo.play.channels = 2;
- audioInfo.play.precision = 16;
- audioInfo.play.gain = min(AUDIO_MAX_GAIN, AUDIO_MAX_GAIN * loudness / 100);
-
- if (ioctl(audioFD, AUDIO_SETINFO, &audioInfo) < 0){
- xf86Msg(X_ERROR,
- "%s: AUDIO_SETINFO failed on audio device \"%s\": %s\n",
- priv->devName, priv->audioDevName, strerror(errno));
- close(audioFD);
- return -1;
- }
-
- iovcnt = 0;
-
- for (cnt = 0; cnt <= repeats; cnt++) {
- iov[iovcnt].iov_base = (char *) samples;
- iov[iovcnt++].iov_len = sizeof(samples);
- if (cnt == repeats) {
- /* Insert a bit of silence so that multiple beeps are distinct and
- * not compressed into a single tone.
- */
- iov[iovcnt].iov_base = (char *) silence;
- iov[iovcnt++].iov_len = sizeof(silence);
- }
- if ((iovcnt >= IOV_MAX) || (cnt == repeats)) {
- written = writev(audioFD, iov, iovcnt);
-
- if ((written < ((int)(sizeof(samples) * iovcnt)))) {
- /* audio buffer was full! */
-
- int naptime;
-
- if (written == -1) {
- if (errno != EAGAIN) {
- xf86Msg(X_ERROR,
- "%s: writev failed on audio device \"%s\": %s\n",
- priv->devName, priv->audioDevName,
- strerror(errno));
- close(audioFD);
- return -1;
- }
- i = iovcnt;
- } else {
- i = ((sizeof(samples) * iovcnt) - written)
- / sizeof(samples);
- }
- cnt -= i;
-
- /* sleep a little to allow audio buffer to drain */
- naptime = BELL_MS * i;
- poll(NULL, 0, naptime);
-
- i = ((sizeof(samples) * iovcnt) - written) % sizeof(samples);
- iovcnt = 0;
- if ((written != -1) && (i > 0)) {
- iov[iovcnt].iov_base = ((char *) samples) + i;
- iov[iovcnt++].iov_len = sizeof(samples) - i;
- }
- } else {
- iovcnt = 0;
- }
- }
- }
-
- close(audioFD);
- return 0;
-}
-
-#endif /* AUDIO_BELL */
-
-_X_HIDDEN void
-sunKbdSoundBell(sunKbdPrivPtr priv, int loudness, int pitch, int duration)
-{
- int kbdCmd, i;
-
- if (loudness && pitch)
- {
-#ifdef AUDIO_BELL
- if (priv->audioDevName != NULL) {
- if (sunKbdAudioBell(priv, loudness, pitch, duration) == 0) {
- return;
- }
- }
-#endif
-
- kbdCmd = KBD_CMD_BELL;
-
- SYSCALL(i = ioctl (priv->kbdFD, KIOCCMD, &kbdCmd));
- if (i < 0) {
- xf86Msg(X_ERROR, "%s: Failed to activate bell: %s\n",
- priv->devName, strerror(errno));
- }
-
- usleep(duration * loudness * 20);
-
- kbdCmd = KBD_CMD_NOBELL;
- SYSCALL(i = ioctl (priv->kbdFD, KIOCCMD, &kbdCmd));
- if (i < 0) {
- xf86Msg(X_ERROR, "%s: Failed to deactivate bell: %s\n",
- priv->devName, strerror(errno));
- }
- }
-}
-
-_X_HIDDEN void
-sunKbdSetLeds(sunKbdPrivPtr priv, int leds)
-{
- int i;
-
- SYSCALL(i = ioctl(priv->kbdFD, KIOCSLED, &leds));
- if (i < 0) {
- xf86Msg(X_ERROR, "%s: Failed to set keyboard LED's: %s\n",
- priv->devName, strerror(errno));
- }
-}
-
-_X_HIDDEN int
-sunKbdGetLeds(sunKbdPrivPtr priv)
-{
- int i, leds = 0;
-
- SYSCALL(i = ioctl(priv->kbdFD, KIOCGLED, &leds));
- if (i < 0) {
- xf86Msg(X_ERROR, "%s: Failed to get keyboard LED's: %s\n",
- priv->devName, strerror(errno));
- }
- return leds;
-}
-
-/* ARGSUSED0 */
-_X_HIDDEN void
-sunKbdSetRepeat(sunKbdPrivPtr priv, char rad)
-{
- /* Nothing to do */
-}
-
-/***************************************************************************
- * Routines called from "kbd" driver via proc vectors filled in by
- * xf86OSKbdPreInit().
- */
-
-
-static int
-KbdInit(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
-
- return sunKbdInit(priv, pInfo->fd, pInfo->name, pInfo->options);
-}
-
-
-static int
-KbdOn(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
-
- return sunKbdOn(priv);
-}
-
-static int
-KbdOff(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
-
- return sunKbdOff(priv);
-}
-
-
-static void
-SoundKbdBell(InputInfoPtr pInfo, int loudness, int pitch, int duration)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
-
- sunKbdSoundBell(priv, loudness, pitch, duration);
-}
-
-static void
-SetKbdLeds(InputInfoPtr pInfo, int leds)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
- int real_leds = sunKbdGetLeds(priv);
-
- real_leds &= ~(LED_CAPS_LOCK | LED_NUM_LOCK | LED_SCROLL_LOCK | LED_COMPOSE);
-
- if (leds & XLED1) real_leds |= LED_CAPS_LOCK;
- if (leds & XLED2) real_leds |= LED_NUM_LOCK;
- if (leds & XLED3) real_leds |= LED_SCROLL_LOCK;
- if (leds & XLED4) real_leds |= LED_COMPOSE;
-
- sunKbdSetLeds(priv, real_leds);
-}
-
-static int
-GetKbdLeds(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
- int leds = 0;
- int real_leds = sunKbdGetLeds(priv);
-
- if (real_leds & LED_CAPS_LOCK) leds |= XLED1;
- if (real_leds & LED_NUM_LOCK) leds |= XLED2;
- if (real_leds & LED_SCROLL_LOCK) leds |= XLED3;
- if (real_leds & LED_COMPOSE) leds |= XLED4;
-
- return leds;
-}
-
-static void
-SetKbdRepeat(InputInfoPtr pInfo, char rad)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
-
- sunKbdSetRepeat(priv, rad);
-}
-
-static void
-KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
- /* Should probably do something better here */
- xf86KbdGetMapping(pKeySyms, pModMap);
-}
-
-static void
-ReadInput(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
- Firm_event event[64];
- int nBytes, i;
-
- /* I certainly hope its not possible to read partial events */
-
- if ((nBytes = read(pInfo->fd, (char *)event, sizeof(event))) > 0)
- {
- for (i = 0; i < (nBytes / sizeof(Firm_event)); i++) {
- pKbd->PostEvent(pInfo, priv->keyMap[event[i].id],
- event[i].value == VKEY_DOWN ? TRUE : FALSE);
- }
- }
-}
-
-static Bool
-OpenKeyboard(InputInfoPtr pInfo)
-{
- pInfo->fd = sunKbdOpen(pInfo->name, pInfo->options);
-
- if (pInfo->fd >= 0) {
- pInfo->read_input = ReadInput;
- return TRUE;
- } else {
- return FALSE;
- }
-}
-
-_X_EXPORT Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = pInfo->private;
-
- pKbd->KbdInit = KbdInit;
- pKbd->KbdOn = KbdOn;
- pKbd->KbdOff = KbdOff;
- pKbd->Bell = SoundKbdBell;
- pKbd->SetLeds = SetKbdLeds;
- pKbd->GetLeds = GetKbdLeds;
- pKbd->SetKbdRepeat = SetKbdRepeat;
- pKbd->KbdGetMapping = KbdGetMapping;
-
- pKbd->RemapScanCode = NULL;
- pKbd->GetSpecialKey = NULL;
- pKbd->SpecialKey = NULL;
-
- pKbd->OpenKeyboard = OpenKeyboard;
-
- pKbd->vtSwitchSupported = FALSE;
- pKbd->CustomKeycodes = FALSE;
-
- pKbd->private = xcalloc(sizeof(sunKbdPrivRec), 1);
- if (pKbd->private == NULL) {
- xf86Msg(X_ERROR,"can't allocate keyboard OS private data\n");
- return FALSE;
- } else {
- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
- priv->otranslation = -1;
- priv->odirect = -1;
- }
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbd.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbd.h
deleted file mode 100644
index ed2824b1f..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbd.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright 2005 Sun Microsystems, Inc. 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 the rights to use, copy, modify, merge, publish,
- * distribute, and/or sell copies of the Software, and to permit persons
- * to whom the Software is furnished to do so, provided that the above
- * copyright notice(s) and this permission notice appear in all copies of
- * the Software and that both the above copyright notice(s) and this
- * permission notice appear in supporting documentation.
- *
- * 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
- * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
- * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * of the copyright holder.
- */
-
-#ifndef _XORG_SUN_KBD_H_
-#define _XORG_SUN_KBD_H_
-
-/*
- * Keyboard common implementation routines shared by "keyboard" driver
- * in sun_io.c and "kbd" driver in sun_kbd.c
- */
-
-typedef struct {
- int kbdFD;
- const char * devName;
- int ktype; /* Keyboard type from KIOCTYPE */
- Bool kbdActive; /* Have we set kbd modes for X? */
- int otranslation; /* Original translation mode */
- int odirect; /* Original "direct" mode setting */
- unsigned char oleds; /* Original LED state */
- const char * strmod; /* Streams module pushed on kbd device */
- const char * audioDevName; /* Audio device path to use for bell
- or NULL to use keyboard beeper */
- enum {AB_INITIALIZING, AB_NORMAL} audioState;
- const unsigned char *keyMap;
-} sunKbdPrivRec, *sunKbdPrivPtr;
-
-/* sun_kbd.c */
-extern int sunKbdOpen (const char *devName, pointer options);
-extern int sunKbdInit (sunKbdPrivPtr priv, int kbdFD,
- const char *devName, pointer options);
-extern int sunKbdOn (sunKbdPrivPtr priv);
-extern int sunKbdOff (sunKbdPrivPtr priv);
-
-extern void sunKbdSoundBell (sunKbdPrivPtr priv,
- int loudness, int pitch, int duration);
-
-extern void sunKbdSetLeds (sunKbdPrivPtr priv, int leds);
-extern int sunKbdGetLeds (sunKbdPrivPtr priv);
-extern void sunKbdSetRepeat (sunKbdPrivPtr priv, char rad);
-
-/* sun_kbdEv.c */
-#include <sys/vuid_event.h>
-extern void sunPostKbdEvent (int ktype, Firm_event *event);
-
-extern const unsigned char *sunGetKbdMapping(int ktype);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbdEv.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbdEv.c
deleted file mode 100644
index dbae7c775..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbdEv.c
+++ /dev/null
@@ -1,892 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbdEv.c,v 1.5 2003/08/26 19:00:36 tsi Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- *
- * 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, and
- * that the names of Thomas Roell and David Dawes not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. Thomas Roell and David Dawes make no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * THOMAS ROELL AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
- * IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES BE LIABLE FOR ANY SPECIAL,
- * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/* [JCH-96/01/21] Extended std reverse map to four buttons. */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbdEv.c,v 1.9 2005/08/16 00:40:25 alanc Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "sun_kbd.h"
-
-#ifdef XINPUT
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#include "xf86Xinput.h"
-#else
-#include "inputstr.h"
-#endif
-
-#ifdef XFreeXDGA
-#include "dgaproc.h"
-#endif
-
-#include <sys/kbd.h>
-#include "atKeynames.h"
-
-#ifdef XKB
-extern Bool noXkbExtension;
-#endif
-
-#define XE_POINTER 1
-#define XE_KEYBOARD 2
-
-#ifdef XTESTEXT1
-
-#define XTestSERVER_SIDE
-#include <X11/extensions/xtestext1.h>
-extern short xtest_mousex;
-extern short xtest_mousey;
-extern int on_steal_input;
-extern Bool XTestStealKeyData();
-extern void XTestStealMotionData();
-
-#ifdef XINPUT
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- if (!on_steal_input || \
- XTestStealKeyData((ev)->u.u.detail, (ev)->u.u.type, dev_type, \
- xtest_mousex, xtest_mousey)) \
- xf86eqEnqueue((ev))
-#else
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- if (!on_steal_input || \
- XTestStealKeyData((ev)->u.u.detail, (ev)->u.u.type, dev_type, \
- xtest_mousex, xtest_mousey)) \
- mieqEnqueue((ev))
-#endif
-
-#else /* ! XTESTEXT1 */
-
-#ifdef XINPUT
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- xf86eqEnqueue((ev))
-#else
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- mieqEnqueue((ev))
-#endif
-
-#endif
-
-static void startautorepeat(long keycode);
-static CARD32 processautorepeat(OsTimerPtr timer, CARD32 now, pointer arg);
-
-static OsTimerPtr sunTimer = NULL;
-
-/* Map the Solaris keycodes to the "XFree86" keycodes. */
-/*
- * This doesn't seem right. It probably needs to be dependent on a keyboard
- * type.
- */
-
-/* Additional Sun Japanese Keyboard Keys not defined in common/atKeynames.h */
-#define KEY_Kanji 0x82
-#define KEY_Execute 0x83
-
-static unsigned char map[256] = {
-#if defined(i386) || defined(__i386) || defined(__i386__) || defined(__x86)
- KEY_NOTUSED, /* 0 */
- KEY_Tilde, /* 1 */
- KEY_1, /* 2 */
- KEY_2, /* 3 */
- KEY_3, /* 4 */
- KEY_4, /* 5 */
- KEY_5, /* 6 */
- KEY_6, /* 7 */
- KEY_7, /* 8 */
- KEY_8, /* 9 */
- KEY_9, /* 10 */
- KEY_0, /* 11 */
- KEY_Minus, /* 12 */
- KEY_Equal, /* 13 */
- 0x7D, /*KEY_P_YEN*/ /* 14 */
- KEY_BackSpace, /* 15 */
- KEY_Tab, /* 16 */
- KEY_Q, /* 17 */
- KEY_W, /* 18 */
- KEY_E, /* 19 */
- KEY_R, /* 20 */
- KEY_T, /* 21 */
- KEY_Y, /* 22 */
- KEY_U, /* 23 */
- KEY_I, /* 24 */
- KEY_O, /* 25 */
- KEY_P, /* 26 */
- KEY_LBrace, /* 27 */
- KEY_RBrace, /* 28 */
- KEY_BSlash, /* 29 */
- KEY_CapsLock, /* 30 */
- KEY_A, /* 31 */
- KEY_S, /* 32 */
- KEY_D, /* 33 */
- KEY_F, /* 34 */
- KEY_G, /* 35 */
- KEY_H, /* 36 */
- KEY_J, /* 37 */
- KEY_K, /* 38 */
- KEY_L, /* 39 */
- KEY_SemiColon, /* 40 */
- KEY_Quote, /* 41 */
- KEY_UNKNOWN, /* 42 */
- KEY_Enter, /* 43 */
- KEY_ShiftL, /* 44 */
- KEY_Less, /* 45 */
- KEY_Z, /* 46 */
- KEY_X, /* 47 */
- KEY_C, /* 48 */
- KEY_V, /* 49 */
- KEY_B, /* 50 */
- KEY_N, /* 51 */
- KEY_M, /* 52 */
- KEY_Comma, /* 53 */
- KEY_Period, /* 54 */
- KEY_Slash, /* 55 */
- KEY_BSlash2, /* 56 */
- KEY_ShiftR, /* 57 */
- KEY_LCtrl, /* 58 */
- KEY_LMeta, /* 59 */
- KEY_Alt, /* 60 */
- KEY_Space, /* 61 */
- KEY_AltLang, /* 62 */
- KEY_RMeta, /* 63 */
- KEY_RCtrl, /* 64 */
- KEY_Menu, /* 65 */
- KEY_UNKNOWN, /* 66 */
- KEY_UNKNOWN, /* 67 */
- KEY_UNKNOWN, /* 68 */
- KEY_UNKNOWN, /* 69 */
- KEY_UNKNOWN, /* 70 */
- KEY_UNKNOWN, /* 71 */
- KEY_UNKNOWN, /* 72 */
- KEY_UNKNOWN, /* 73 */
- KEY_UNKNOWN, /* 74 */
- KEY_Insert, /* 75 */
- KEY_Delete, /* 76 */
- KEY_UNKNOWN, /* 77 */
- KEY_UNKNOWN, /* 78 */
- KEY_Left, /* 79 */
- KEY_Home, /* 80 */
- KEY_End, /* 81 */
- KEY_UNKNOWN, /* 82 */
- KEY_Up, /* 83 */
- KEY_Down, /* 84 */
- KEY_PgUp, /* 85 */
- KEY_PgDown, /* 86 */
- KEY_UNKNOWN, /* 87 */
- KEY_UNKNOWN, /* 88 */
- KEY_Right, /* 89 */
- KEY_NumLock, /* 90 */
- KEY_KP_7, /* 91 */
- KEY_KP_4, /* 92 */
- KEY_KP_1, /* 93 */
- KEY_UNKNOWN, /* 94 */
- KEY_KP_Divide, /* 95 */
- KEY_KP_8, /* 96 */
- KEY_KP_5, /* 97 */
- KEY_KP_2, /* 98 */
- KEY_KP_0, /* 99 */
- KEY_KP_Multiply, /* 100 */
- KEY_KP_9, /* 101 */
- KEY_KP_6, /* 102 */
- KEY_KP_3, /* 103 */
- KEY_KP_Decimal, /* 104 */
- KEY_KP_Minus, /* 105 */
- KEY_KP_Plus, /* 106 */
- KEY_UNKNOWN, /* 107 */
- KEY_KP_Enter, /* 108 */
- KEY_UNKNOWN, /* 109 */
- KEY_Escape, /* 110 */
- KEY_UNKNOWN, /* 111 */
- KEY_F1, /* 112 */
- KEY_F2, /* 113 */
- KEY_F3, /* 114 */
- KEY_F4, /* 115 */
- KEY_F5, /* 116 */
- KEY_F6, /* 117 */
- KEY_F7, /* 118 */
- KEY_F8, /* 119 */
- KEY_F9, /* 120 */
- KEY_F10, /* 121 */
- KEY_F11, /* 122 */
- KEY_F12, /* 123 */
- KEY_Print, /* 124 */
- KEY_ScrollLock, /* 125 */
- KEY_Pause, /* 126 */
- KEY_UNKNOWN, /* 127 */
- KEY_UNKNOWN, /* 128 */
- KEY_UNKNOWN, /* 129 */
- KEY_UNKNOWN, /* 130 */
- KEY_NFER, /* 131 */
- KEY_XFER, /* 132 */
- KEY_HKTG, /* 133 */
- KEY_UNKNOWN, /* 134 */
-#elif defined(sparc) || defined(__sparc__)
- KEY_UNKNOWN, /* 0x00 */
- KEY_UNKNOWN, /* 0x01 */
- KEY_UNKNOWN, /* 0x02 */
- KEY_UNKNOWN, /* 0x03 */
- KEY_UNKNOWN, /* 0x04 */
- KEY_F1, /* 0x05 */
- KEY_F2, /* 0x06 */
- KEY_F10, /* 0x07 */
- KEY_F3, /* 0x08 */
- KEY_F11, /* 0x09 */
- KEY_F4, /* 0x0A */
- KEY_F12, /* 0x0B */
- KEY_F5, /* 0x0C */
- KEY_UNKNOWN, /* 0x0D */
- KEY_F6, /* 0x0E */
- KEY_UNKNOWN, /* 0x0F */
- KEY_F7, /* 0x10 */
- KEY_F8, /* 0x11 */
- KEY_F9, /* 0x12 */
- KEY_Alt, /* 0x13 */
- KEY_Up, /* 0x14 */
- KEY_Pause, /* 0x15 */
- KEY_SysReqest, /* 0x16 */
- KEY_ScrollLock, /* 0x17 */
- KEY_Left, /* 0x18 */
- KEY_UNKNOWN, /* 0x19 */
- KEY_UNKNOWN, /* 0x1A */
- KEY_Down, /* 0x1B */
- KEY_Right, /* 0x1C */
- KEY_Escape, /* 0x1D */
- KEY_1, /* 0x1E */
- KEY_2, /* 0x1F */
- KEY_3, /* 0x20 */
- KEY_4, /* 0x21 */
- KEY_5, /* 0x22 */
- KEY_6, /* 0x23 */
- KEY_7, /* 0x24 */
- KEY_8, /* 0x25 */
- KEY_9, /* 0x26 */
- KEY_0, /* 0x27 */
- KEY_Minus, /* 0x28 */
- KEY_Equal, /* 0x29 */
- KEY_Tilde, /* 0x2A */
- KEY_BackSpace, /* 0x2B */
- KEY_Insert, /* 0x2C */
- KEY_UNKNOWN, /* 0x2D */
- KEY_KP_Divide, /* 0x2E */
- KEY_KP_Multiply, /* 0x2F */
- KEY_UNKNOWN, /* 0x30 */
- KEY_UNKNOWN, /* 0x31 */
- KEY_KP_Decimal, /* 0x32 */
- KEY_UNKNOWN, /* 0x33 */
- KEY_Home, /* 0x34 */
- KEY_Tab, /* 0x35 */
- KEY_Q, /* 0x36 */
- KEY_W, /* 0x37 */
- KEY_E, /* 0x38 */
- KEY_R, /* 0x39 */
- KEY_T, /* 0x3A */
- KEY_Y, /* 0x3B */
- KEY_U, /* 0x3C */
- KEY_I, /* 0x3D */
- KEY_O, /* 0x3E */
- KEY_P, /* 0x3F */
- KEY_LBrace, /* 0x40 */
- KEY_RBrace, /* 0x41 */
- KEY_Delete, /* 0x42 */
- KEY_UNKNOWN, /* 0x43 */
- KEY_KP_7, /* 0x44 */
- KEY_KP_8, /* 0x45 */
- KEY_KP_9, /* 0x46 */
- KEY_KP_Minus, /* 0x47 */
- KEY_UNKNOWN, /* 0x48 */
- KEY_UNKNOWN, /* 0x49 */
- KEY_End, /* 0x4A */
- KEY_UNKNOWN, /* 0x4B */
- KEY_LCtrl, /* 0x4C */
- KEY_A, /* 0x4D */
- KEY_S, /* 0x4E */
- KEY_D, /* 0x4F */
- KEY_F, /* 0x50 */
- KEY_G, /* 0x51 */
- KEY_H, /* 0x52 */
- KEY_J, /* 0x53 */
- KEY_K, /* 0x54 */
- KEY_L, /* 0x55 */
- KEY_SemiColon, /* 0x56 */
- KEY_Quote, /* 0x57 */
- KEY_BSlash, /* 0x58 */
- KEY_Enter, /* 0x59 */
- KEY_KP_Enter, /* 0x5A */
- KEY_KP_4, /* 0x5B */
- KEY_KP_5, /* 0x5C */
- KEY_KP_6, /* 0x5D */
- KEY_KP_0, /* 0x5E */
- KEY_UNKNOWN, /* 0x5F */
- KEY_PgUp, /* 0x60 */
- KEY_UNKNOWN, /* 0x61 */
- KEY_NumLock, /* 0x62 */
- KEY_ShiftL, /* 0x63 */
- KEY_Z, /* 0x64 */
- KEY_X, /* 0x65 */
- KEY_C, /* 0x66 */
- KEY_V, /* 0x67 */
- KEY_B, /* 0x68 */
- KEY_N, /* 0x69 */
- KEY_M, /* 0x6A */
- KEY_Comma, /* 0x6B */
- KEY_Period, /* 0x6C */
- KEY_Slash, /* 0x6D */
- KEY_ShiftR, /* 0x6E */
- KEY_UNKNOWN, /* 0x6F */
- KEY_KP_1, /* 0x70 */
- KEY_KP_2, /* 0x71 */
- KEY_KP_3, /* 0x72 */
- KEY_UNKNOWN, /* 0x73 */
- KEY_UNKNOWN, /* 0x74 */
- KEY_UNKNOWN, /* 0x75 */
- KEY_UNKNOWN, /* 0x76 */
- KEY_CapsLock, /* 0x77 */
- KEY_LMeta, /* 0x78 */
- KEY_Space, /* 0x79 */
- KEY_RMeta, /* 0x7A */
- KEY_PgDown, /* 0x7B */
- KEY_UNKNOWN, /* 0x7C */
- KEY_KP_Plus, /* 0x7D */
- KEY_UNKNOWN, /* 0x7E */
- KEY_UNKNOWN, /* 0x7F */
-#endif
- /* The rest default to KEY_UNKNOWN */
-};
-
-#if defined(KB_USB)
-static unsigned char usbmap[256] = {
-/*
- * partially taken from ../bsd/bsd_KbdMap.c
- *
- * added keycodes for Sun special keys (left function keys, audio control)
- */
- /* 0 */ KEY_NOTUSED,
- /* 1 */ KEY_NOTUSED,
- /* 2 */ KEY_NOTUSED,
- /* 3 */ KEY_NOTUSED,
- /* 4 */ KEY_A,
- /* 5 */ KEY_B,
- /* 6 */ KEY_C,
- /* 7 */ KEY_D,
- /* 8 */ KEY_E,
- /* 9 */ KEY_F,
- /* 10 */ KEY_G,
- /* 11 */ KEY_H,
- /* 12 */ KEY_I,
- /* 13 */ KEY_J,
- /* 14 */ KEY_K,
- /* 15 */ KEY_L,
- /* 16 */ KEY_M,
- /* 17 */ KEY_N,
- /* 18 */ KEY_O,
- /* 19 */ KEY_P,
- /* 20 */ KEY_Q,
- /* 21 */ KEY_R,
- /* 22 */ KEY_S,
- /* 23 */ KEY_T,
- /* 24 */ KEY_U,
- /* 25 */ KEY_V,
- /* 26 */ KEY_W,
- /* 27 */ KEY_X,
- /* 28 */ KEY_Y,
- /* 29 */ KEY_Z,
- /* 30 */ KEY_1, /* 1 !*/
- /* 31 */ KEY_2, /* 2 @ */
- /* 32 */ KEY_3, /* 3 # */
- /* 33 */ KEY_4, /* 4 $ */
- /* 34 */ KEY_5, /* 5 % */
- /* 35 */ KEY_6, /* 6 ^ */
- /* 36 */ KEY_7, /* 7 & */
- /* 37 */ KEY_8, /* 8 * */
- /* 38 */ KEY_9, /* 9 ( */
- /* 39 */ KEY_0, /* 0 ) */
- /* 40 */ KEY_Enter, /* Return */
- /* 41 */ KEY_Escape, /* Escape */
- /* 42 */ KEY_BackSpace, /* Backspace Delete */
- /* 43 */ KEY_Tab, /* Tab */
- /* 44 */ KEY_Space, /* Space */
- /* 45 */ KEY_Minus, /* - _ */
- /* 46 */ KEY_Equal, /* = + */
- /* 47 */ KEY_LBrace, /* [ { */
- /* 48 */ KEY_RBrace, /* ] } */
- /* 49 */ KEY_BSlash, /* \ | */
- /* 50 */ KEY_BSlash, /* \ _ # ~ on some keyboards */
- /* 51 */ KEY_SemiColon, /* ; : */
- /* 52 */ KEY_Quote, /* ' " */
- /* 53 */ KEY_Tilde, /* ` ~ */
- /* 54 */ KEY_Comma, /* , < */
- /* 55 */ KEY_Period, /* . > */
- /* 56 */ KEY_Slash, /* / ? */
- /* 57 */ KEY_CapsLock, /* Caps Lock */
- /* 58 */ KEY_F1, /* F1 */
- /* 59 */ KEY_F2, /* F2 */
- /* 60 */ KEY_F3, /* F3 */
- /* 61 */ KEY_F4, /* F4 */
- /* 62 */ KEY_F5, /* F5 */
- /* 63 */ KEY_F6, /* F6 */
- /* 64 */ KEY_F7, /* F7 */
- /* 65 */ KEY_F8, /* F8 */
- /* 66 */ KEY_F9, /* F9 */
- /* 67 */ KEY_F10, /* F10 */
- /* 68 */ KEY_F11, /* F11 */
- /* 69 */ KEY_F12, /* F12 */
- /* 70 */ KEY_Print, /* PrintScrn SysReq */
- /* 71 */ KEY_ScrollLock, /* Scroll Lock */
- /* 72 */ KEY_Pause, /* Pause Break */
- /* 73 */ KEY_Insert, /* Insert XXX Help on some Mac Keyboards */
- /* 74 */ KEY_Home, /* Home */
- /* 75 */ KEY_PgUp, /* Page Up */
- /* 76 */ KEY_Delete, /* Delete */
- /* 77 */ KEY_End, /* End */
- /* 78 */ KEY_PgDown, /* Page Down */
- /* 79 */ KEY_Right, /* Right Arrow */
- /* 80 */ KEY_Left, /* Left Arrow */
- /* 81 */ KEY_Down, /* Down Arrow */
- /* 82 */ KEY_Up, /* Up Arrow */
- /* 83 */ KEY_NumLock, /* Num Lock */
- /* 84 */ KEY_KP_Divide, /* Keypad / */
- /* 85 */ KEY_KP_Multiply, /* Keypad * */
- /* 86 */ KEY_KP_Minus, /* Keypad - */
- /* 87 */ KEY_KP_Plus, /* Keypad + */
- /* 88 */ KEY_KP_Enter, /* Keypad Enter */
- /* 89 */ KEY_KP_1, /* Keypad 1 End */
- /* 90 */ KEY_KP_2, /* Keypad 2 Down */
- /* 91 */ KEY_KP_3, /* Keypad 3 Pg Down */
- /* 92 */ KEY_KP_4, /* Keypad 4 Left */
- /* 93 */ KEY_KP_5, /* Keypad 5 */
- /* 94 */ KEY_KP_6, /* Keypad 6 */
- /* 95 */ KEY_KP_7, /* Keypad 7 Home */
- /* 96 */ KEY_KP_8, /* Keypad 8 Up */
- /* 97 */ KEY_KP_9, /* KEypad 9 Pg Up */
- /* 98 */ KEY_KP_0, /* Keypad 0 Ins */
- /* 99 */ KEY_KP_Decimal, /* Keypad . Del */
- /* 100 */ KEY_Less, /* < > on some keyboards */
- /* 101 */ KEY_Menu, /* Menu */
- /* 102 */ KEY_Power, /* Sun: Power */
- /* 103 */ KEY_KP_Equal, /* Keypad = on Mac keyboards */
- /* 104 */ KEY_NOTUSED,
- /* 105 */ KEY_NOTUSED,
- /* 106 */ KEY_NOTUSED,
- /* 107 */ KEY_NOTUSED,
- /* 108 */ KEY_NOTUSED,
- /* 109 */ KEY_NOTUSED,
- /* 110 */ KEY_NOTUSED,
- /* 111 */ KEY_NOTUSED,
- /* 112 */ KEY_NOTUSED,
- /* 113 */ KEY_NOTUSED,
- /* 114 */ KEY_NOTUSED,
- /* 115 */ KEY_NOTUSED,
- /* 116 */ KEY_L7, /* Sun: Open */
- /* 117 */ KEY_Help, /* Sun: Help */
- /* 118 */ KEY_L3, /* Sun: Props */
- /* 119 */ KEY_L5, /* Sun: Front */
- /* 120 */ KEY_L1, /* Sun: Stop */
- /* 121 */ KEY_L2, /* Sun: Again */
- /* 122 */ KEY_L4, /* Sun: Undo */
- /* 123 */ KEY_L10, /* Sun: Cut */
- /* 124 */ KEY_L6, /* Sun: Copy */
- /* 125 */ KEY_L8, /* Sun: Paste */
- /* 126 */ KEY_L9, /* Sun: Find */
- /* 127 */ KEY_Mute, /* Sun: AudioMute */
- /* 128 */ KEY_AudioRaise, /* Sun: AudioRaise */
- /* 129 */ KEY_AudioLower, /* Sun: AudioLower */
- /* 130 */ KEY_NOTUSED,
- /* 131 */ KEY_NOTUSED,
- /* 132 */ KEY_NOTUSED,
- /* 133 */ KEY_NOTUSED,
- /* 134 */ KEY_NOTUSED,
- /* 135 */ KEY_BSlash2, /* Sun Japanese Kbd: Backslash / Underscore */
- /* 136 */ KEY_XFER, /* Sun Japanese Kbd: Henkan Mode */
- /* 137 */ KEY_Yen, /* Sun Japanese Kbd: Yen / Brokenbar */
- /* 138 */ KEY_Kanji, /* Sun Japanese Kbd: Kanji */
- /* 139 */ KEY_Execute, /* Sun Japanese Kbd: Execute */
- /* 140 */ KEY_NOTUSED,
- /* 141 */ KEY_NOTUSED,
- /* 142 */ KEY_NOTUSED,
- /* 143 */ KEY_NOTUSED,
- /* 144 */ KEY_NOTUSED,
- /* 145 */ KEY_NOTUSED,
- /* 146 */ KEY_NOTUSED,
- /* 147 */ KEY_NOTUSED,
- /* 148 */ KEY_NOTUSED,
- /* 149 */ KEY_NOTUSED,
- /* 150 */ KEY_NOTUSED,
- /* 151 */ KEY_NOTUSED,
- /* 152 */ KEY_NOTUSED,
- /* 153 */ KEY_NOTUSED,
- /* 154 */ KEY_NOTUSED,
- /* 155 */ KEY_NOTUSED,
- /* 156 */ KEY_NOTUSED,
- /* 157 */ KEY_NOTUSED,
- /* 158 */ KEY_NOTUSED,
- /* 159 */ KEY_NOTUSED,
- /* 160 */ KEY_NOTUSED,
- /* 161 */ KEY_NOTUSED,
- /* 162 */ KEY_NOTUSED,
- /* 163 */ KEY_NOTUSED,
- /* 164 */ KEY_NOTUSED,
- /* 165 */ KEY_NOTUSED,
- /* 166 */ KEY_NOTUSED,
- /* 167 */ KEY_NOTUSED,
- /* 168 */ KEY_NOTUSED,
- /* 169 */ KEY_NOTUSED,
- /* 170 */ KEY_NOTUSED,
- /* 171 */ KEY_NOTUSED,
- /* 172 */ KEY_NOTUSED,
- /* 173 */ KEY_NOTUSED,
- /* 174 */ KEY_NOTUSED,
- /* 175 */ KEY_NOTUSED,
- /* 176 */ KEY_NOTUSED,
- /* 177 */ KEY_NOTUSED,
- /* 178 */ KEY_NOTUSED,
- /* 179 */ KEY_NOTUSED,
- /* 180 */ KEY_NOTUSED,
- /* 181 */ KEY_NOTUSED,
- /* 182 */ KEY_NOTUSED,
- /* 183 */ KEY_NOTUSED,
- /* 184 */ KEY_NOTUSED,
- /* 185 */ KEY_NOTUSED,
- /* 186 */ KEY_NOTUSED,
- /* 187 */ KEY_NOTUSED,
- /* 188 */ KEY_NOTUSED,
- /* 189 */ KEY_NOTUSED,
- /* 190 */ KEY_NOTUSED,
- /* 191 */ KEY_NOTUSED,
- /* 192 */ KEY_NOTUSED,
- /* 193 */ KEY_NOTUSED,
- /* 194 */ KEY_NOTUSED,
- /* 195 */ KEY_NOTUSED,
- /* 196 */ KEY_NOTUSED,
- /* 197 */ KEY_NOTUSED,
- /* 198 */ KEY_NOTUSED,
- /* 199 */ KEY_NOTUSED,
- /* 200 */ KEY_NOTUSED,
- /* 201 */ KEY_NOTUSED,
- /* 202 */ KEY_NOTUSED,
- /* 203 */ KEY_NOTUSED,
- /* 204 */ KEY_NOTUSED,
- /* 205 */ KEY_NOTUSED,
- /* 206 */ KEY_NOTUSED,
- /* 207 */ KEY_NOTUSED,
- /* 208 */ KEY_NOTUSED,
- /* 209 */ KEY_NOTUSED,
- /* 210 */ KEY_NOTUSED,
- /* 211 */ KEY_NOTUSED,
- /* 212 */ KEY_NOTUSED,
- /* 213 */ KEY_NOTUSED,
- /* 214 */ KEY_NOTUSED,
- /* 215 */ KEY_NOTUSED,
- /* 216 */ KEY_NOTUSED,
- /* 217 */ KEY_NOTUSED,
- /* 218 */ KEY_NOTUSED,
- /* 219 */ KEY_NOTUSED,
- /* 220 */ KEY_NOTUSED,
- /* 221 */ KEY_NOTUSED,
- /* 222 */ KEY_NOTUSED,
- /* 223 */ KEY_NOTUSED,
- /* 224 */ KEY_LCtrl, /* Left Control */
- /* 225 */ KEY_ShiftL, /* Left Shift */
- /* 226 */ KEY_Alt, /* Left Alt */
- /* 227 */ KEY_LMeta, /* Left Meta */
- /* 228 */ KEY_RCtrl, /* Right Control */
- /* 229 */ KEY_ShiftR, /* Right Shift */
- /* 230 */ KEY_AltLang, /* Right Alt, AKA AltGr */
- /* 231 */ KEY_RMeta, /* Right Meta */
-};
-
-#endif /* KB_USB */
-
-_X_HIDDEN const unsigned char *
-sunGetKbdMapping(int ktype) {
-#if defined(KB_USB)
- if (ktype == KB_USB)
- return usbmap;
- else
-#endif
- return map;
-}
-
-
-/*
- * sunPostKbdEvent --
- * Translate the raw hardware Firm_event into an XEvent, and tell DIX
- * about it. KeyCode preprocessing and so on is done ...
- *
- * Most of the Solaris stuff has whacked Panix/PC98 support in the
- * interests of simplicity - DWH 8/30/99
- */
-
-_X_HIDDEN void
-sunPostKbdEvent(int sun_ktype, Firm_event *event)
-{
- Bool down;
- KeyClassRec *keyc = ((DeviceIntPtr)xf86Info.pKeyboard)->key;
- Bool updateLeds = FALSE;
- xEvent kevent;
- KeySym *keysym;
- int keycode;
- static int lockkeys = 0;
-
- /* Give down a value */
- if (event->value == VKEY_DOWN)
- down = TRUE;
- else
- down = FALSE;
-
-
-#if defined(KB_USB)
- if(sun_ktype == KB_USB)
- keycode = usbmap[event->id];
- else
-#endif
- keycode = map[event->id];
-
- /*
- * and now get some special keysequences
- */
-
-#ifdef XKB
- if (((xf86Info.ddxSpecialKeys == SKWhenNeeded) &&
- (!xf86Info.ActionKeyBindingsSet)) ||
- noXkbExtension || (xf86Info.ddxSpecialKeys == SKAlways))
-#endif
- {
- if (!(ModifierDown(ShiftMask)) &&
- ((ModifierDown(ControlMask | AltMask)) ||
- (ModifierDown(ControlMask | AltLangMask))))
- {
- switch (keycode) {
- /*
- * The idea here is to pass the scancode down to a list of
- * registered routines. There should be some standard conventions
- * for processing certain keys.
- */
- case KEY_BackSpace:
- xf86ProcessActionEvent(ACTION_TERMINATE, NULL);
- break;
-
- /*
- * Check grabs
- */
- case KEY_KP_Divide:
- xf86ProcessActionEvent(ACTION_DISABLEGRAB, NULL);
- break;
- case KEY_KP_Multiply:
- xf86ProcessActionEvent(ACTION_CLOSECLIENT, NULL);
- break;
-
- /*
- * Video mode switches
- */
- case KEY_KP_Minus: /* Keypad - */
- if (down) xf86ProcessActionEvent(ACTION_PREV_MODE, NULL);
- if (!xf86Info.dontZoom) return;
- break;
-
- case KEY_KP_Plus: /* Keypad + */
- if (down) xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL);
- if (!xf86Info.dontZoom) return;
- break;
- }
- }
- }
-
- /*
- * Now map the scancodes to real X-keycodes ...
- */
- if (keycode == KEY_NOTUSED) {
- xf86MsgVerb(X_INFO, 0,
- "raw code %d mapped to KEY_NOTUSED -- please report\n", event->id);
- return;
- }
- if (keycode == KEY_UNKNOWN) {
- xf86MsgVerb(X_INFO, 0,
- "raw code %d mapped to KEY_UNKNOWN -- please report\n", event->id);
- return;
- }
- keycode += MIN_KEYCODE;
- keysym = keyc->curKeySyms.map +
- (keyc->curKeySyms.mapWidth *
- (keycode - keyc->curKeySyms.minKeyCode));
-
-#ifdef XKB
- if (noXkbExtension)
-#endif
- {
- /*
- * Toggle lock keys.
- */
-#define CAPSFLAG 0x01
-#define NUMFLAG 0x02
-#define SCROLLFLAG 0x04
-#define MODEFLAG 0x08
-
- if (down) {
- /*
- * Handle the KeyPresses of the lock keys.
- */
-
- switch (keysym[0]) {
-
- case XK_Caps_Lock:
- if (lockkeys & CAPSFLAG) {
- lockkeys &= ~CAPSFLAG;
- return;
- }
- lockkeys |= CAPSFLAG;
- updateLeds = TRUE;
- xf86Info.capsLock = down;
- break;
-
- case XK_Num_Lock:
- if (lockkeys & NUMFLAG) {
- lockkeys &= ~NUMFLAG;
- return;
- }
- lockkeys |= NUMFLAG;
- updateLeds = TRUE;
- xf86Info.numLock = down;
- break;
-
- case XK_Scroll_Lock:
- if (lockkeys & SCROLLFLAG) {
- lockkeys &= ~SCROLLFLAG;
- return;
- }
- lockkeys |= SCROLLFLAG;
- updateLeds = TRUE;
- xf86Info.scrollLock = down;
- break;
- }
- } else {
- /*
- * Handle the releases of the lock keys.
- */
-
- switch (keysym[0]) {
-
- case XK_Caps_Lock:
- if (lockkeys & CAPSFLAG)
- return;
- updateLeds = TRUE;
- xf86Info.capsLock = down;
- break;
-
- case XK_Num_Lock:
- if (lockkeys & NUMFLAG)
- return;
- updateLeds = TRUE;
- xf86Info.numLock = down;
- break;
-
- case XK_Scroll_Lock:
- if (lockkeys & SCROLLFLAG)
- return;
- updateLeds = TRUE;
- xf86Info.scrollLock = down;
- break;
- }
- }
-
- if (updateLeds)
- xf86KbdLeds();
-
- /*
- * If this keycode is not a modifier key, and its down initiate the
- * autorepeate sequence. (Only necessary if not using XKB).
- *
- * If its not down, then reset the timer.
- */
- if (!keyc->modifierMap[keycode]) {
- if (down) {
- startautorepeat(keycode);
- } else {
- TimerFree(sunTimer);
- sunTimer = NULL;
- }
- }
- }
-
- xf86Info.lastEventTime =
- kevent.u.keyButtonPointer.time =
- GetTimeInMillis();
-
- /*
- * And now send these prefixes ...
- * NOTE: There cannot be multiple Mode_Switch keys !!!!
- */
-
- ENQUEUE(&kevent, keycode, (down ? KeyPress : KeyRelease), XE_KEYBOARD);
-}
-
-
-
-/*
- * Autorepeat stuff
- */
-
-void
-startautorepeat(long keycode)
-{
- sunTimer = TimerSet(sunTimer, /* Timer */
- 0, /* Flags */
- xf86Info.kbdDelay, /* millis */
- processautorepeat, /* callback */
- (pointer) keycode); /* arg for timer */
-}
-
-CARD32
-processautorepeat(OsTimerPtr timer, CARD32 now, pointer arg)
-{
- xEvent kevent;
- int keycode;
-
- keycode = (long)arg;
-
- xf86Info.lastEventTime =
- kevent.u.keyButtonPointer.time =
- GetTimeInMillis();
-
- /*
- * Repeat a key by faking a KeyRelease, and a KeyPress event in rapid
- * succession
- */
-
- ENQUEUE(&kevent, keycode, KeyRelease, XE_KEYBOARD);
- ENQUEUE(&kevent, keycode, KeyPress, XE_KEYBOARD);
-
- /* And return the appropriate value so we get rescheduled */
- return xf86Info.kbdRate;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_mouse.c
deleted file mode 100644
index 928609f0e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_mouse.c
+++ /dev/null
@@ -1,719 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_mouse.c,v 1.4 2002/01/25 21:56:21 tsi Exp $ */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_mouse.c,v 1.8 2005/07/28 02:38:23 alanc Exp $ */
-/*
- * Copyright 1999-2001 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-/* Copyright 2004-2005 Sun Microsystems, Inc. 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 the rights to use, copy, modify, merge, publish,
- * distribute, and/or sell copies of the Software, and to permit persons
- * to whom the Software is furnished to do so, provided that the above
- * copyright notice(s) and this permission notice appear in all copies of
- * the Software and that both the above copyright notice(s) and this
- * permission notice appear in supporting documentation.
- *
- * 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
- * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
- * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder
- * shall not be used in advertising or otherwise to promote the sale, use
- * or other dealings in this Software without prior written authorization
- * of the copyright holder.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86_OSlib.h"
-#include "xf86OSmouse.h"
-
-#if defined(__SOL8__) || !defined(__i386)
-
-#include "xisb.h"
-#include "mipointer.h"
-#include <sys/stropts.h>
-#include <sys/vuid_event.h>
-#include <sys/msio.h>
-
-/* Wheel mouse support in VUID drivers in Solaris 9 updates & Solaris 10 */
-#ifdef WHEEL_DEVID /* Defined in vuid_event.h if VUID wheel support present */
-# define HAVE_VUID_WHEEL
-#endif
-#ifdef HAVE_VUID_WHEEL
-# include <sys/vuid_wheel.h>
-#endif
-
-/* Support for scaling absolute coordinates to screen size in
- * Solaris 10 updates and beyond */
-#if !defined(HAVE_ABSOLUTE_MOUSE_SCALING)
-# ifdef MSIOSRESOLUTION /* Defined in msio.h if scaling support present */
-# define HAVE_ABSOLUTE_MOUSE_SCALING
-# endif
-#endif
-
-/* Names of protocols that are handled internally here. */
-
-static const char *internalNames[] = {
- "VUID",
- NULL
-};
-
-static const char *solarisMouseDevs[] = {
- /* Device file: Protocol: */
- "/dev/mouse", "VUID", /* USB or SPARC */
-#if defined(__i386) || defined(__x86)
- "/dev/kdmouse", "PS/2", /* PS/2 */
-#endif
- NULL
-};
-
-typedef struct _VuidMseRec {
- struct _VuidMseRec *next;
- InputInfoPtr pInfo;
- Firm_event event;
- unsigned char * buffer;
- char * strmod;
- Bool(*wrapped_device_control)(DeviceIntPtr device, int what);
-#ifdef HAVE_ABSOLUTE_MOUSE_SCALING
- Ms_screen_resolution absres;
-#endif
-} VuidMseRec, *VuidMsePtr;
-
-static VuidMsePtr vuidMouseList = NULL;
-
-static int vuidMouseProc(DeviceIntPtr pPointer, int what);
-static void vuidReadInput(InputInfoPtr pInfo);
-
-#ifdef HAVE_ABSOLUTE_MOUSE_SCALING
-static void vuidMouseSendScreenSize(ScreenPtr pScreen, VuidMsePtr pVuidMse);
-static void vuidMouseAdjustFrame(int index, int x, int y, int flags);
-
-static int vuidMouseGeneration = 0;
-static int vuidMouseScreenIndex;
-#define vuidMouseScreenPrivate(s) ((s)->devPrivates[vuidMouseScreenIndex].ptr)
-#endif /* HAVE_ABSOLUTE_MOUSE_SCALING */
-
-static inline
-VuidMsePtr getVuidMsePriv(InputInfoPtr pInfo)
-{
- VuidMsePtr m = vuidMouseList;
-
- while ((m != NULL) && (m->pInfo != pInfo)) {
- m = m->next;
- }
-
- return m;
-}
-
-
-/*
- * Initialize and enable the mouse wheel, if present.
- *
- * Returns 1 if mouse wheel was successfully enabled.
- * Returns 0 if an error occurred or if there is no mouse wheel.
- */
-static int
-vuidMouseWheelInit(InputInfoPtr pInfo)
-{
-#ifdef HAVE_VUID_WHEEL
- wheel_state wstate;
- int nwheel = -1;
- int i;
-
- wstate.vers = VUID_WHEEL_STATE_VERS;
- wstate.id = 0;
- wstate.stateflags = -1;
-
- SYSCALL(i = ioctl(pInfo->fd, VUIDGWHEELCOUNT, &nwheel));
- if (i != 0)
- return (0);
-
- SYSCALL(i = ioctl(pInfo->fd, VUIDGWHEELSTATE, &wstate));
- if (i != 0) {
- xf86Msg(X_WARNING, "%s: couldn't get wheel state\n", pInfo->name);
- return (0);
- }
-
- wstate.stateflags |= VUID_WHEEL_STATE_ENABLED;
-
- SYSCALL(i = ioctl(pInfo->fd, VUIDSWHEELSTATE, &wstate));
- if (i != 0) {
- xf86Msg(X_WARNING, "%s: couldn't enable wheel\n", pInfo->name);
- return (0);
- }
-
- return (1);
-#else
- return (0);
-#endif
-}
-
-
-/* This function is called when the protocol is "VUID". */
-static Bool
-vuidPreInit(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- MouseDevPtr pMse = pInfo->private;
- VuidMsePtr pVuidMse;
- int buttons, i;
-
- pVuidMse = xcalloc(sizeof(VuidMseRec), 1);
- if (pVuidMse == NULL) {
- xf86Msg(X_ERROR, "%s: cannot allocate VuidMouseRec\n", pInfo->name);
- xfree(pMse);
- return FALSE;
- }
-
- pMse->protocol = protocol;
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
-
- /* Collect the options, and process the common options. */
- xf86CollectInputOptions(pInfo, NULL, NULL);
- xf86ProcessCommonOptions(pInfo, pInfo->options);
-
- /* Check if the device can be opened. */
- pInfo->fd = xf86OpenSerial(pInfo->options);
- if (pInfo->fd == -1) {
- if (xf86GetAllowMouseOpenFail())
- xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
- else {
- xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name);
- xfree(pVuidMse);
- xfree(pMse);
- return FALSE;
- }
- }
-
- pVuidMse->buffer = (unsigned char *)&pVuidMse->event;
-
- pVuidMse->strmod = xf86SetStrOption(pInfo->options, "StreamsModule", NULL);
- if (pVuidMse->strmod) {
- SYSCALL(i = ioctl(pInfo->fd, I_PUSH, pVuidMse->strmod));
- if (i < 0) {
- xf86Msg(X_ERROR,
- "%s: cannot push module '%s' onto mouse device: %s\n",
- pInfo->name, pVuidMse->strmod, strerror(errno));
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
- xfree(pVuidMse->strmod);
- xfree(pVuidMse);
- xfree(pMse);
- return FALSE;
- }
- }
-
- buttons = xf86SetIntOption(pInfo->options, "Buttons", 0);
- if (buttons == 0) {
- SYSCALL(i = ioctl(pInfo->fd, MSIOBUTTONS, &buttons));
- if (i == 0) {
- pInfo->conf_idev->commonOptions =
- xf86ReplaceIntOption(pInfo->conf_idev->commonOptions,
- "Buttons", buttons);
- xf86Msg(X_INFO, "%s: Setting Buttons option to \"%d\"\n",
- pInfo->name, buttons);
- }
- }
-
- if (pVuidMse->strmod) {
- SYSCALL(i = ioctl(pInfo->fd, I_POP, pVuidMse->strmod));
- if (i == -1) {
- xf86Msg(X_WARNING,
- "%s: cannot pop module '%s' off mouse device: %s\n",
- pInfo->name, pVuidMse->strmod, strerror(errno));
- }
- }
-
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
-
- /* Process common mouse options (like Emulate3Buttons, etc). */
- pMse->CommonOptions(pInfo);
-
- /* Setup the local procs. */
- pVuidMse->wrapped_device_control = pInfo->device_control;
- pInfo->device_control = vuidMouseProc;
- pInfo->read_input = vuidReadInput;
-
- pMse->xisbscale = sizeof(Firm_event);
-
-#ifdef HAVE_ABSOLUTE_MOUSE_SCALING
- pVuidMse->absres.height = pVuidMse->absres.width = 0;
-#endif
- pVuidMse->pInfo = pInfo;
- pVuidMse->next = vuidMouseList;
- vuidMouseList = pVuidMse;
-
- pInfo->flags |= XI86_CONFIGURED;
- return TRUE;
-}
-
-static void
-vuidFlushAbsEvents(InputInfoPtr pInfo, int absX, int absY,
- Bool *absXset, Bool *absYset)
-{
-#ifdef DEBUG
- ErrorF("vuidFlushAbsEvents: %d,%d (set: %d, %d)\n", absX, absY,
- *absXset, *absYset);
-#endif
- if ((*absXset) && (*absYset)) {
- xf86PostMotionEvent(pInfo->dev,
- /* is_absolute: */ TRUE,
- /* first_valuator: */ 0,
- /* num_valuators: */ 2,
- absX, absY);
- } else if (*absXset) {
- xf86PostMotionEvent(pInfo->dev,
- /* is_absolute: */ TRUE,
- /* first_valuator: */ 0,
- /* num_valuators: */ 1,
- absX);
- } else if (*absYset) {
- xf86PostMotionEvent(pInfo->dev,
- /* is_absolute: */ TRUE,
- /* first_valuator: */ 1,
- /* num_valuators: */ 1,
- absY);
- }
-
- *absXset = FALSE;
- *absYset = FALSE;
-}
-
-static void
-vuidReadInput(InputInfoPtr pInfo)
-{
- MouseDevPtr pMse;
- VuidMsePtr pVuidMse;
- int buttons;
- int dx = 0, dy = 0, dz = 0, dw = 0;
- unsigned int n;
- int c;
- unsigned char *pBuf;
- int wmask;
- int absX, absY;
- Bool absXset = FALSE, absYset = FALSE;
-
- pMse = pInfo->private;
- pVuidMse = getVuidMsePriv(pInfo);
- buttons = pMse->lastButtons;
- XisbBlockDuration(pMse->buffer, -1);
- pBuf = pVuidMse->buffer;
- n = 0;
-
- do {
- while (n < sizeof(Firm_event) && (c = XisbRead(pMse->buffer)) >= 0) {
- pBuf[n++] = (unsigned char)c;
- }
-
- if (n == 0)
- return;
-
- if (n != sizeof(Firm_event)) {
- xf86Msg(X_WARNING, "%s: incomplete packet, size %d\n",
- pInfo->name, n);
- }
-
-#ifdef DEBUG
- ErrorF("vuidReadInput: event type: %3d value: %5d\n",
- pVuidMse->event.id, pVuidMse->event.value);
-#endif
-
- if (pVuidMse->event.id >= BUT_FIRST && pVuidMse->event.id <= BUT_LAST) {
- /* button */
- int butnum = pVuidMse->event.id - BUT_FIRST;
-
- if (butnum < 3)
- butnum = 2 - butnum;
- if (!pVuidMse->event.value)
- buttons &= ~(1 << butnum);
- else
- buttons |= (1 << butnum);
- } else if (pVuidMse->event.id >= VLOC_FIRST &&
- pVuidMse->event.id <= VLOC_LAST) {
- /* axis */
- int delta = pVuidMse->event.value;
- switch(pVuidMse->event.id) {
- case LOC_X_DELTA:
- dx += delta;
- break;
- case LOC_Y_DELTA:
- dy -= delta;
- break;
- case LOC_X_ABSOLUTE:
- if (absXset) {
- vuidFlushAbsEvents(pInfo, absX, absY, &absXset, &absYset);
- }
- absX = delta;
- absXset = TRUE;
- break;
- case LOC_Y_ABSOLUTE:
- if (absYset) {
- vuidFlushAbsEvents(pInfo, absX, absY, &absXset, &absYset);
- }
- absY = delta;
- absYset = TRUE;
- break;
- }
- }
-#ifdef HAVE_VUID_WHEEL
- else if (vuid_in_range(VUID_WHEEL, pVuidMse->event.id)) {
- if (vuid_id_offset(pVuidMse->event.id) == 0)
- dz -= VUID_WHEEL_GETDELTA(pVuidMse->event.value);
- else
- dw -= VUID_WHEEL_GETDELTA(pVuidMse->event.value);
- }
-#endif
-#ifdef HAVE_ABSOLUTE_MOUSE_SCALING
- else if (pVuidMse->event.id == MOUSE_TYPE_ABSOLUTE) {
- /* force sending absolute resolution scaling ioctl */
- pVuidMse->absres.height = pVuidMse->absres.width = 0;
- vuidMouseSendScreenSize(miPointerCurrentScreen(), pVuidMse);
- }
-#endif
-
- n = 0;
- if ((c = XisbRead(pMse->buffer)) >= 0) {
- /* Another packet. Handle it right away. */
- pBuf[n++] = c;
- }
- } while (n != 0);
-
- if (absXset || absYset) {
- vuidFlushAbsEvents(pInfo, absX, absY, &absXset, &absYset);
- }
-
- pMse->PostEvent(pInfo, buttons, dx, dy, dz, dw);
- return;
-}
-
-#ifdef HAVE_ABSOLUTE_MOUSE_SCALING
-static void vuidMouseSendScreenSize(ScreenPtr pScreen, VuidMsePtr pVuidMse)
-{
- InputInfoPtr pInfo = pVuidMse->pInfo;
- ScrnInfoPtr pScr = XF86SCRNINFO(pScreen);
- int result;
-
- if ((pVuidMse->absres.width != pScr->currentMode->HDisplay) ||
- (pVuidMse->absres.height != pScr->currentMode->VDisplay))
- {
- pVuidMse->absres.width = pScr->currentMode->HDisplay;
- pVuidMse->absres.height = pScr->currentMode->VDisplay;
-
- do {
- result = ioctl(pInfo->fd, MSIOSRESOLUTION, &(pVuidMse->absres));
- } while ( (result != 0) && (errno == EINTR) );
-
- if (result != 0) {
- xf86Msg(X_WARNING,
- "%s: couldn't set absolute mouse scaling resolution: %s\n",
- pInfo->name, strerror(errno));
-#ifdef DEBUG
- } else {
- xf86Msg(X_INFO,
- "%s: absolute mouse scaling resolution set to %d x %d\n",
- pInfo->name,
- pVuidMse->absres.width, pVuidMse->absres.height);
-#endif
- }
- }
-}
-
-static void vuidMouseAdjustFrame(int index, int x, int y, int flags)
-{
- ScrnInfoPtr pScrn = xf86Screens[index];
- ScreenPtr pScreen = pScrn->pScreen;
- xf86AdjustFrameProc *wrappedAdjustFrame
- = (xf86AdjustFrameProc *) vuidMouseScreenPrivate(pScreen);
- VuidMsePtr m;
-
- if(wrappedAdjustFrame) {
- pScrn->AdjustFrame = wrappedAdjustFrame;
- (*pScrn->AdjustFrame)(index, x, y, flags);
- pScrn->AdjustFrame = vuidMouseAdjustFrame;
- }
-
- if (miPointerCurrentScreen() == pScreen) {
- for (m = vuidMouseList; m != NULL ; m = m->next) {
- vuidMouseSendScreenSize(pScreen, m);
- }
- }
-}
-#endif /* HAVE_ABSOLUTE_MOUSE_SCALING */
-
-
-static int
-vuidMouseProc(DeviceIntPtr pPointer, int what)
-{
- InputInfoPtr pInfo;
- MouseDevPtr pMse;
- VuidMsePtr pVuidMse;
- int ret = Success;
- int i;
-
- pInfo = pPointer->public.devicePrivate;
- pMse = pInfo->private;
- pMse->device = pPointer;
-
- pVuidMse = getVuidMsePriv(pInfo);
- if (pVuidMse == NULL) {
- return BadImplementation;
- }
-
- switch (what) {
-
- case DEVICE_INIT:
-#ifdef HAVE_ABSOLUTE_MOUSE_SCALING
- if (vuidMouseGeneration != serverGeneration) {
- if ((vuidMouseScreenIndex = AllocateScreenPrivateIndex()) >= 0) {
- for (i = 0; i < screenInfo.numScreens; i++) {
- ScreenPtr pScreen = screenInfo.screens[i];
- ScrnInfoPtr pScrn = XF86SCRNINFO(pScreen);
- vuidMouseScreenPrivate(pScreen)
- = (pointer) pScrn->AdjustFrame;
- pScrn->AdjustFrame = vuidMouseAdjustFrame;
- }
- }
- vuidMouseGeneration = serverGeneration;
- }
-#endif
- ret = pVuidMse->wrapped_device_control(pPointer, what);
- break;
-
- case DEVICE_ON:
- ret = pVuidMse->wrapped_device_control(pPointer, DEVICE_ON);
-
- if ((ret == Success) && (pInfo->fd != -1)) {
- int fmt = VUID_FIRM_EVENT;
-
- if (pVuidMse->strmod) {
- SYSCALL(i = ioctl(pInfo->fd, I_PUSH, pVuidMse->strmod));
- if (i < 0) {
- xf86Msg(X_WARNING,
- "%s: cannot push module '%s' onto mouse device: %s\n",
- pInfo->name, pVuidMse->strmod, strerror(errno));
- xfree(pVuidMse->strmod);
- pVuidMse->strmod = NULL;
- }
- }
- SYSCALL(i = ioctl(pInfo->fd, VUIDSFORMAT, &fmt));
- if (i < 0) {
- xf86Msg(X_WARNING,
- "%s: cannot set mouse device to VUID mode: %s\n",
- pInfo->name, strerror(errno));
- }
- vuidMouseWheelInit(pInfo);
-#ifdef HAVE_ABSOLUTE_MOUSE_SCALING
- vuidMouseSendScreenSize(screenInfo.screens[0], pVuidMse);
-#endif
- xf86FlushInput(pInfo->fd);
- }
- break;
-
- case DEVICE_OFF:
- case DEVICE_CLOSE:
- if (pInfo->fd != -1) {
- if (pVuidMse->strmod) {
- SYSCALL(i = ioctl(pInfo->fd, I_POP, pVuidMse->strmod));
- if (i == -1) {
- xf86Msg(X_WARNING,
- "%s: cannot pop module '%s' off mouse device: %s\n",
- pInfo->name, pVuidMse->strmod, strerror(errno));
- }
- }
- }
- ret = pVuidMse->wrapped_device_control(pPointer, what);
- break;
-
- default: /* Should never be called, but just in case */
- ret = pVuidMse->wrapped_device_control(pPointer, what);
- break;
- }
- return ret;
-}
-
-static Bool
-sunMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- /* The protocol is guaranteed to be one of the internalNames[] */
- if (xf86NameCmp(protocol, "VUID") == 0) {
- return vuidPreInit(pInfo, protocol, flags);
- }
- return TRUE;
-}
-
-static const char **
-BuiltinNames(void)
-{
- return internalNames;
-}
-
-static Bool
-CheckProtocol(const char *protocol)
-{
- int i;
-
- for (i = 0; internalNames[i]; i++)
- if (xf86NameCmp(protocol, internalNames[i]) == 0)
- return TRUE;
-
- return FALSE;
-}
-
-static const char *
-DefaultProtocol(void)
-{
- return "Auto";
-}
-
-static Bool
-solarisMouseAutoProbe(InputInfoPtr pInfo, const char **protocol,
- const char **device)
-{
- const char **pdev, **pproto, *dev = NULL;
- int fd = -1;
- Bool found;
-
- for (pdev = solarisMouseDevs; *pdev; pdev += 2) {
- pproto = pdev + 1;
- if ((*protocol != NULL) && (strcmp(*protocol, "Auto") != 0) &&
- (*pproto != NULL) && (strcmp(*pproto, *protocol) != 0)) {
- continue;
- }
- if ((*device != NULL) && (strcmp(*device, *pdev) != 0)) {
- continue;
- }
- SYSCALL (fd = open(*pdev, O_RDWR | O_NONBLOCK));
- if (fd == -1) {
-#ifdef DEBUG
- ErrorF("Cannot open %s (%s)\n", pdev, strerror(errno));
-#endif
- } else {
- found = TRUE;
- if ((*pproto != NULL) && (strcmp(*pproto, "VUID") == 0)) {
- int i, r;
- SYSCALL(r = ioctl(fd, VUIDGFORMAT, &i));
- if (r < 0) {
- found = FALSE;
- }
- }
- close(fd);
- if (found == TRUE) {
- if (*pproto != NULL) {
- *protocol = *pproto;
- }
- *device = *pdev;
- return TRUE;
- }
- }
- }
- return FALSE;
-}
-
-static const char *
-SetupAuto(InputInfoPtr pInfo, int *protoPara)
-{
- const char *pdev = NULL;
- const char *pproto = NULL;
- MouseDevPtr pMse = pInfo->private;
-
- if (pInfo->fd == -1) {
- /* probe to find device/protocol to use */
- if (solarisMouseAutoProbe(pInfo, &pproto, &pdev) != FALSE) {
- /* Set the Device option. */
- pInfo->conf_idev->commonOptions =
- xf86AddNewOption(pInfo->conf_idev->commonOptions, "Device", pdev);
- xf86Msg(X_INFO, "%s: Setting Device option to \"%s\"\n",
- pInfo->name, pdev);
- }
- } else if (pMse->protocolID == PROT_AUTO) {
- pdev = xf86CheckStrOption(pInfo->conf_idev->commonOptions,
- "Device", NULL);
- solarisMouseAutoProbe(pInfo, &pproto, &pdev);
- }
- return pproto;
-}
-
-static const char *
-FindDevice(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- const char *pdev = NULL;
- const char *pproto = protocol;
-
- if (solarisMouseAutoProbe(pInfo, &pproto, &pdev) != FALSE) {
- /* Set the Device option. */
- pInfo->conf_idev->commonOptions =
- xf86AddNewOption(pInfo->conf_idev->commonOptions, "Device", pdev);
- xf86Msg(X_INFO, "%s: Setting Device option to \"%s\"\n",
- pInfo->name, pdev);
- }
- return pdev;
-}
-
-#else /* __SOL8__ || !__i386 */
-
-#undef MSE_MISC
-#define MSE_MISC 0
-
-#endif /* !__SOL8__ && __i386 */
-
-static int
-SupportedInterfaces(void)
-{
- /* XXX This needs to be checked. */
- return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_AUTO | MSE_XPS2 | MSE_MISC;
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
- p->SupportedInterfaces = SupportedInterfaces;
-#if defined(__SOL8__) || !defined(__i386)
- p->BuiltinNames = BuiltinNames;
- p->CheckProtocol = CheckProtocol;
- p->PreInit = sunMousePreInit;
- p->DefaultProtocol = DefaultProtocol;
- p->SetupAuto = SetupAuto;
- p->FindDevice = FindDevice;
-#endif
- return p;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_vid.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_vid.c
deleted file mode 100644
index 82cd1ae7b..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sunos/sun_vid.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_vid.c,v 1.2 2001/10/28 03:34:03 tsi Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and
- * that the names of the copyright holders not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. The copyright holders make no representations
- * about the suitability of this software for any purpose. It is provided "as
- * is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
- * SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <sys/types.h> /* get __x86 definition if not set by compiler */
-
-#if defined(i386) || defined(__x86)
-#define _NEED_SYSI86
-#endif
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((void *)-1)
-#endif
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-char *apertureDevName = NULL;
-
-Bool
-xf86LinearVidMem(void)
-{
- int mmapFd;
-
- if (apertureDevName)
- return TRUE;
-
- apertureDevName = "/dev/xsvc";
- if ((mmapFd = open(apertureDevName, O_RDWR)) < 0)
- {
- apertureDevName = "/dev/fbs/aperture";
- if((mmapFd = open(apertureDevName, O_RDWR)) < 0)
- {
- xf86MsgVerb(X_WARNING, 0,
- "xf86LinearVidMem: failed to open %s (%s)\n",
- apertureDevName, strerror(errno));
- xf86MsgVerb(X_WARNING, 0,
- "xf86LinearVidMem: either /dev/fbs/aperture or /dev/xsvc"
- " device driver required\n");
- xf86MsgVerb(X_WARNING, 0,
- "xf86LinearVidMem: linear memory access disabled\n");
- apertureDevName = NULL;
- return FALSE;
- }
- }
- close(mmapFd);
- return TRUE;
-}
-
-pointer
-xf86MapVidMem(int ScreenNum, int Flags, unsigned long Base, unsigned long Size)
-{
- pointer base;
- int fd;
- char vtname[20];
-
- /*
- * Solaris 2.1 x86 SVR4 (10/27/93)
- * The server must treat the virtual terminal device file as the
- * standard SVR4 /dev/pmem.
- *
- * Using the /dev/vtXX device as /dev/pmem only works for the
- * A0000-FFFFF region - If we wish you mmap the linear aperture
- * it requires a device driver.
- *
- * So what we'll do is use /dev/vtXX for the A0000-FFFFF stuff, and
- * try to use the /dev/fbs/aperture or /dev/xsvc driver if the server
- * tries to mmap anything > FFFFF. Its very very unlikely that the
- * server will try to mmap anything below FFFFF that can't be handled
- * by /dev/vtXX.
- *
- * DWH - 2/23/94
- * DWH - 1/31/99 (Gee has it really been 5 years?)
- *
- * Solaris 2.8 7/26/99
- * Use /dev/xsvc for everything
- *
- * DWH - 7/26/99 - Solaris8/dev/xsvc changes
- *
- * TSI - 2001.09 - SPARC changes
- */
-
-#if defined(i386) && !defined(__SOL8__)
- if(Base < 0xFFFFF)
- sprintf(vtname, "/dev/vt%02d", xf86Info.vtno);
- else
-#endif
- {
- if (!xf86LinearVidMem())
- FatalError("xf86MapVidMem: no aperture device\n");
-
- strcpy(vtname, apertureDevName);
- }
-
- fd = open(vtname, (Flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
- if (fd < 0)
- FatalError("xf86MapVidMem: failed to open %s (%s)\n",
- vtname, strerror(errno));
-
- base = mmap(NULL, Size,
- (Flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_SHARED, fd, (off_t)Base);
- close(fd);
- if (base == MAP_FAILED)
- FatalError("xf86MapVidMem: mmap failure: %s\n",
- strerror(errno));
-
- return(base);
-}
-
-/* ARGSUSED */
-void
-xf86UnMapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- munmap(Base, Size);
-}
-
-/***************************************************************************/
-/* I/O Permissions section */
-/***************************************************************************/
-
-#if defined(i386) || defined(__x86)
-static Bool ExtendedEnabled = FALSE;
-#endif
-
-Bool
-xf86EnableIO(void)
-{
-#if defined(i386) || defined(__x86)
- if (ExtendedEnabled)
- return TRUE;
-
- if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0) {
- xf86Msg(X_WARNING,"xf86EnableIOPorts: Failed to set IOPL for I/O\n");
- return FALSE;
- }
- ExtendedEnabled = TRUE;
-#endif /* i386 */
- return TRUE;
-}
-
-void
-xf86DisableIO(void)
-{
-#if defined(i386) || defined(__x86)
- if(!ExtendedEnabled)
- return;
-
- sysi86(SI86V86, V86SC_IOPL, 0);
-
- ExtendedEnabled = FALSE;
-#endif /* i386 */
-}
-
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool xf86DisableInterrupts(void)
-{
-#if defined(i386) || defined(__x86)
- if (!ExtendedEnabled && (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0))
- return FALSE;
-
-#ifdef __GNUC__
- __asm__ __volatile__("cli");
-#else
- asm("cli");
-#endif /* __GNUC__ */
-
- if (!ExtendedEnabled)
- sysi86(SI86V86, V86SC_IOPL, 0);
-#endif /* i386 */
-
- return TRUE;
-}
-
-void xf86EnableInterrupts(void)
-{
-#if defined(i386) || defined(__x86)
- if (!ExtendedEnabled && (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0))
- return;
-
-#ifdef __GNUC__
- __asm__ __volatile__("sti");
-#else
- asm("sti");
-#endif /* __GNUC__ */
-
- if (!ExtendedEnabled)
- sysi86(SI86V86, V86SC_IOPL, 0);
-#endif /* i386 */
-}
-
-void
-xf86MapReadSideEffects(int ScreenNum, int Flags, pointer Base,
- unsigned long Size)
-{
-}
-
-Bool
-xf86CheckMTRR(int ScreenNum)
-{
- return FALSE;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/Imakefile
deleted file mode 100644
index 2ba9baf92..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/Imakefile
+++ /dev/null
@@ -1,58 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sysv/Imakefile,v 3.24 2002/10/11 01:47:00 dawes Exp $
-
-
-
-
-
-XCOMM $XConsortium: Imakefile /main/10 1996/10/25 11:38:05 kaleb $
-
-#include <Server.tmpl>
-
-#if defined(SVR4Architecture) || defined(i386Sco325Architecture)
-BIOS_MOD = bios_mmap
-#else
-BIOS_MOD = bios_devmem
-#endif
-
-MOUSESRC = sysv_mouse.c
-MOUSEOBJ = sysv_mouse.o
-
-SRCS = sysv_init.c sysv_video.c sysv_io.c $(BIOS_MOD).c VTsw_usl.c \
- sysv_kbd.c std_kbdEv.c posix_tty.c $(MOUSESRC) xqueue.c \
- libc_wrapper.c stdResource.c stdPci.c vidmem.c sigiostubs.c pm_noop.c \
- kmod_noop.c agp_noop.c
-
-OBJS = sysv_init.o sysv_video.o sysv_io.o $(BIOS_MOD).o VTsw_usl.o \
- sysv_kbd.o std_kbdEv.o posix_tty.o $(MOUSEOBJ) xqueue.o \
- libc_wrapper.o stdResource.o stdPci.o vidmem.o sigiostubs.o pm_noop.o \
- kmod_noop.o agp_noop.o
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(EXTINCSRC) -I$(SERVERSRC)/mi
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(RESDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-#if !defined(SVR4Architecture)
-LinkSourceFile(bios_devmem.c,../shared)
-#else
-LinkSourceFile(bios_mmap.c,../shared)
-#endif
-LinkSourceFile(VTsw_usl.c,../shared)
-LinkSourceFile(sysv_kbd.c,../shared)
-LinkSourceFile(std_kbdEv.c,../shared)
-LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(vidmem.c,../shared)
-LinkSourceFile(sigiostubs.c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(agp_noop.c,../shared)
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_init.c
deleted file mode 100644
index 3edffd446..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_init.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sysv/sysv_init.c,v 3.4.4.3 1998/07/18 17:53:57 dawes Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Thomas Roell and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Thomas Roell and
- * David Wexelblat makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THOMAS ROELL AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID WEXELBLAT BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: sysv_init.c /main/4 1996/02/21 17:54:31 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-static Bool KeepTty = FALSE;
-#ifdef SVR4
-static Bool Protect0 = FALSE;
-#endif
-static int VTnum = -1;
-
-
-void
-xf86OpenConsole()
-{
- int fd;
- struct vt_mode VT;
- char vtname1[10],vtname2[10];
- MessageType from = X_PROBED;
-
- if (serverGeneration == 1)
- {
- /* check if we're run with euid==0 */
- if (geteuid() != 0)
- {
- FatalError("xf86OpenConsole: Server must be suid root\n");
- }
-
-#ifdef SVR4
- /* Protect page 0 to help find NULL dereferencing */
- /* mprotect() doesn't seem to work */
- if (Protect0)
- {
- int fd = -1;
-
- if ((fd = open("/dev/zero", O_RDONLY, 0)) < 0)
- {
- xf86Msg(X_WARNING,
- "xf86OpenConsole: cannot open /dev/zero (%s)\n",
- strerror(errno));
- }
- else
- {
- if ((int)mmap(0, 0x1000, PROT_NONE,
- MAP_FIXED | MAP_SHARED, fd, 0) == -1)
- {
- xf86Msg(X_WARNING,
- "xf86OpenConsole: failed to protect page 0 (%s)\n",
- strerror(errno));
- }
- close(fd);
- }
- }
-#endif
- /*
- * setup the virtual terminal manager
- */
- if (VTnum != -1)
- {
- xf86Info.vtno = VTnum;
- from = X_CMDLINE;
- }
- else
- {
- if ((fd = open("/dev/console",O_WRONLY,0)) < 0)
- {
- FatalError(
- "xf86OpenConsole: Cannot open /dev/console (%s)\n",
- strerror(errno));
- }
- if ((ioctl(fd, VT_OPENQRY, &xf86Info.vtno) < 0) ||
- (xf86Info.vtno == -1))
- {
- FatalError("xf86OpenConsole: Cannot find a free VT\n");
- }
- close(fd);
- }
- xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno);
-
- sprintf(vtname1,"/dev/vc%02d",xf86Info.vtno); /* ESIX */
- sprintf(vtname2,"/dev/vt%02d",xf86Info.vtno); /* rest of the world */
-
- if (!KeepTty)
- {
- setpgrp();
- }
-
- if (((xf86Info.consoleFd = open(vtname1, O_RDWR|O_NDELAY, 0)) < 0) &&
- ((xf86Info.consoleFd = open(vtname2, O_RDWR|O_NDELAY, 0)) < 0))
- {
- FatalError("xf86OpenConsole: Cannot open %s (%s) (%s)\n",
- vtname2, vtname1, strerror(errno));
- }
-
- /* change ownership of the vt */
- if (chown(vtname1, getuid(), getgid()) < 0)
- {
- chown(vtname2, getuid(), getgid());
- }
-
- /*
- * now get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
- }
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
- }
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0)
- {
- FatalError("xf86OpenConsole: VT_GETMODE failed\n");
- }
-
- signal(SIGUSR1, xf86VTRequest);
-
- VT.mode = VT_PROCESS;
- VT.relsig = SIGUSR1;
- VT.acqsig = SIGUSR1;
- if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0)
- {
- FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed\n");
- }
- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0)
- {
- FatalError("xf86OpenConsole: KDSETMODE KD_GRAPHICS failed\n");
- }
- }
- else
- {
- /* serverGeneration != 1 */
- /*
- * now get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
- }
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0)
- {
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
- }
- /*
- * If the server doesn't have the VT when the reset occurs,
- * this is to make sure we don't continue until the activate
- * signal is received.
- */
- if (!xf86Screens[0]->vtSema)
- sleep(5);
- }
- return;
-}
-
-void
-xf86CloseConsole()
-{
- struct vt_mode VT;
-
-#if 0
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno);
- ioctl(xf86Info.consoleFd, VT_WAITACTIVE, 0);
-#endif
- ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT); /* Back to text mode ... */
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) != -1)
- {
- VT.mode = VT_AUTO;
- ioctl(xf86Info.consoleFd, VT_SETMODE, &VT); /* set dflt vt handling */
- }
- close(xf86Info.consoleFd); /* make the vt-manager happy */
- return;
-}
-
-int
-xf86ProcessArgument(int argc, char *argv[], int i)
-{
- /*
- * Keep server from detaching from controlling tty. This is useful
- * when debugging (so the server can receive keyboard signals.
- */
- if (!strcmp(argv[i], "-keeptty"))
- {
- KeepTty = TRUE;
- return(1);
- }
-#ifdef SVR4
- /*
- * Undocumented flag to protect page 0 from read/write to help
- * catch NULL pointer dereferences. This is purely a debugging
- * flag.
- */
- if (!strcmp(argv[i], "-protect0"))
- {
- Protect0 = TRUE;
- return(1);
- }
-#endif
- if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
- {
- if (sscanf(argv[i], "vt%2d", &VTnum) == 0)
- {
- UseMsg();
- VTnum = -1;
- return(0);
- }
- return(1);
- }
- return(0);
-}
-
-void
-xf86UseMsg()
-{
- ErrorF("vtXX use the specified VT number\n");
- ErrorF("-keeptty ");
- ErrorF("don't detach controlling tty (for debugging only)\n");
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_io.c
deleted file mode 100644
index 6fb642bce..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_io.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sysv/sysv_io.c,v 3.10 2002/10/11 01:40:37 dawes Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- *
- * 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, and that the names of Thomas Roell and David Dawes
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Thomas Roell and
- * David Dawes makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THOMAS ROELL AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: sysv_io.c /main/8 1996/10/19 18:08:06 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-void
-xf86SoundKbdBell(int loudness, int pitch, int duration)
-{
- if (loudness && pitch)
- {
-#ifdef KDMKTONE
- /*
- * If we have KDMKTONE use it to avoid putting the server
- * to sleep
- */
- ioctl(xf86Info.consoleFd, KDMKTONE,
- ((1193190 / pitch) & 0xffff) |
- (((unsigned long)duration *
- loudness / 50) << 16));
-#else
- ioctl(xf86Info.consoleFd, KIOCSOUND, 1193180 / pitch);
- usleep(xf86Info.bell_duration * loudness * 20);
- ioctl(xf86Info.consoleFd, KIOCSOUND, 0);
-#endif
- }
-}
-
-void
-xf86SetKbdLeds(int leds)
-{
-#ifdef KBIO_SETMODE
- ioctl(xf86Info.consoleFd, KBIO_SETMODE, KBM_AT);
- ioctl(xf86Info.consoleFd, KDSETLED, leds);
- ioctl(xf86Info.consoleFd, KBIO_SETMODE, KBM_XT);
-#endif
-}
-
-#include "xf86OSKbd.h"
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_mouse.c
deleted file mode 100644
index f839362fc..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_mouse.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sysv/sysv_mouse.c,v 1.3 1999/09/04 13:04:49 dawes Exp $ */
-
-/*
- * Copyright 1999 by The XFree86 Project, Inc.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-#include "xqueue.h"
-
-static int
-SupportedInterfaces(void)
-{
- /* XXX Need to check this. */
- return MSE_SERIAL | MSE_AUTO;
-}
-
-#ifndef ISC
-static const char *internalNames[] = {
- "Xqueue",
- NULL
-};
-
-static const char **
-BuiltinNames(void)
-{
- return internalNames;
-}
-
-static Bool
-CheckProtocol(const char *protocol)
-{
- int i;
-
- for (i = 0; internalNames[i]; i++)
- if (xf86NameCmp(protocol, internalNames[i]) == 0)
- return TRUE;
- return FALSE;
-}
-#endif
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
- p->SupportedInterfaces = SupportedInterfaces;
-#ifndef ISC
- p->BuiltinNames = BuiltinNames;
- p->CheckProtocol = CheckProtocol;
- p->PreInit = XqueueMousePreInit;
-#endif
- return p;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_video.c
deleted file mode 100644
index e8c26dada..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/sysv_video.c
+++ /dev/null
@@ -1,369 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sysv/sysv_video.c,v 3.20tsi Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Thomas Roell and David Wexelblat
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. Thomas Roell and
- * David Wexelblat makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THOMAS ROELL AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID WEXELBLAT BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: sysv_video.c /main/8 1996/10/25 11:38:09 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-
-#define _NEED_SYSI86
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((void *)-1)
-#endif
-
-#ifndef SI86IOPL
-#define SET_IOPL() sysi86(SI86V86,V86SC_IOPL,PS_IOPL)
-#define RESET_IOPL() sysi86(SI86V86,V86SC_IOPL,0)
-#else
-#define SET_IOPL() sysi86(SI86IOPL,3)
-#define RESET_IOPL() sysi86(SI86IOPL,0)
-#endif
-
-/***************************************************************************/
-/* Video Memory Mapping section */
-/***************************************************************************/
-
-/*
- * XXX Support for SVR3 will need to be reworked if needed. In particular
- * the Region parameter is no longer passed, and will need to be dealt
- * with internally if required.
- * OK, i'll rework that thing ... (clean it up a lot)
- * SVR3 Support only with SVR3_MMAPDRV (mr)
- *
- */
-
-#ifdef HAS_SVR3_MMAPDRV
-#ifndef MMAP_DEBUG
-#define MMAP_DEBUG 3
-#endif
-
-struct kd_memloc MapDSC;
-int mmapFd = -2;
-
-static int
-mmapStat(pointer Base, unsigned long Size) {
-
- int nmmreg,i=0,region=-1;
- mmapinfo_t *ibuf;
-
- nmmreg = ioctl(mmapFd, GETNMMREG);
-
- if(nmmreg <= 0)
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "\nNo physical memory mapped currently.\n\n");
- else {
- if((ibuf = (mmapinfo_t *)malloc(nmmreg*sizeof(mmapinfo_t))) == NULL)
- xf86Msg(X_WARNING,
- "Couldn't allocate memory 4 mmapinfo_t\n");
- else {
- if(ioctl(mmapFd, GETMMREG, ibuf) != -1)
- {
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "# mmapStat: [Size=%x,Base=%x]\n", Size, Base);
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "# Physical Address Size Reference Count\n");
- for(i = 0; i < nmmreg; i++) {
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "%-4d 0x%08X %5dk %5d ",
- i, ibuf[i].physaddr, ibuf[i].length/1024, ibuf[i].refcnt);
- if (ibuf[i].physaddr == Base || ibuf[i].length == Size ) {
- xf86MsgVerb(X_INFO, MMAP_DEBUG,"MATCH !!!");
- if (region==-1) region=i;
- }
- xf86ErrorFVerb(MMAP_DEBUG, "\n");
- }
- xf86ErrorFVerb(MMAP_DEBUG, "\n");
- }
- free(ibuf);
- }
- }
- if (region == -1 && nmmreg > 0) region=region * i;
- return(region);
-}
-#endif
-
-
-static Bool
-linearVidMem()
-{
-#ifdef SVR4
- return TRUE;
-#elif defined(HAS_SVR3_MMAPDRV)
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "# xf86LinearVidMem: MMAP 2.2.2 called\n");
-
- if(mmapFd >= 0) return TRUE;
-
- if ((mmapFd = open("/dev/mmap", O_RDWR)) != -1)
- {
- if(ioctl(mmapFd, GETVERSION) < 0x0222) {
- xf86Msg(X_WARNING,
- "xf86LinearVidMem: MMAP 2.2.2 or above required\n");
- xf86ErrorF("\tlinear memory access disabled\n");
- return FALSE;
- }
- return TRUE;
- }
- xf86Msg(X_WARNING, "xf86LinearVidMem: failed to open /dev/mmap (%s)\n",
- strerror(errno));
- xf86ErrorF("\tlinear memory access disabled\n");
- return FALSE;
-#endif
-}
-
-static pointer
-mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- pointer base;
- int fd;
-
-#if defined(SVR4)
- fd = open(DEV_MEM, (flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
- if (fd < 0)
- {
- FatalError("xf86MapVidMem: failed to open %s (%s)\n",
- DEV_MEM, strerror(errno));
- }
- base = mmap((caddr_t)0, Size,
- (flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_SHARED, fd, (off_t)Base);
- close(fd);
- if (base == MAP_FAILED)
- {
- FatalError("%s: Could not mmap framebuffer [s=%x,a=%x] (%s)\n",
- "xf86MapVidMem", Size, Base, strerror(errno));
- }
-#else /* SVR4 */
-#ifdef HAS_SVR3_MMAPDRV
-
- xf86MsgVerb(X_INFO, MMAP_DEBUG, "# xf86MapVidMem: MMAP 2.2.2 called\n");
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "MMAP_VERSION: 0x%x\n",ioctl(mmapFd, GETVERSION));
- if (ioctl(mmapFd, GETVERSION) == -1)
- {
- xf86LinearVidMem();
- }
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "MMAP_VERSION: 0x%x\n",ioctl(mmapFd, GETVERSION));
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "xf86MapVidMem: Screen: %d\n", ScreenNum);
- mmapStat(Base,Size);
- /* To force the MMAP driver to provide the address */
- base = (pointer)0;
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "xf86MapVidMem: [s=%x,a=%x]\n", Size, Base);
- MapDSC.vaddr = (char *)base;
- MapDSC.physaddr = (char *)Base;
- MapDSC.length = Size;
- MapDSC.ioflg = 1;
- if(mmapFd >= 0)
- {
- if((base = (pointer)ioctl(mmapFd, MAP, &MapDSC)) == (pointer)-1)
- {
- FatalError("%s: Could not mmap framebuffer [s=%x,a=%x] (%s)\n",
- "xf86MapVidMem", Size, Base, strerror(errno));
- /* NOTREACHED */
- }
-
- /* Next time we want the same address! */
- MapDSC.vaddr = (char *)base;
- }
-
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "MapDSC.vaddr : 0x%x\n", MapDSC.vaddr);
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "MapDSC.physaddr: 0x%x\n", MapDSC.physaddr);
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "MapDSC.length : %d\n", MapDSC.length);
- mmapStat(Base,Size);
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "xf86MapVidMem: [s=%x,a=%x,b=%x]\n", Size, Base, base);
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "xf86MapVidMem: SUCCEED Mapping FrameBuffer \n");
-#endif /* HAS_SVR3_MMAPDRV */
-#endif /* SVR4 */
- return(base);
-}
-
-/* ARGSUSED */
-static void
-unmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
-#if defined (SVR4)
- munmap(Base, Size);
-#else /* SVR4 */
-#ifdef HAS_SVR3_MMAPDRV
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "# xf86UnMapVidMem: UNMapping FrameBuffer\n");
- mmapStat(Base,Size);
- ioctl(mmapFd, UNMAPRM , Base);
- mmapStat(Base,Size);
- xf86MsgVerb(X_INFO, MMAP_DEBUG,
- "# xf86UnMapVidMem: Screen: %d [v=%x]\n", ScreenNum, Base);
-#endif /* HAS_SVR3_MMAPDRV */
-#endif /* SVR4 */
- return;
-}
-
-#if defined(SVR4) && defined(i386) && !defined(sun)
-/*
- * For some SVR4 versions, a 32-bit read is done for the first location
- * in each page when the page is first mapped. If this is done while
- * memory access is enabled for regions that have read side-effects,
- * this can cause unexpected results, including lockups on some hardware.
- * This function is called to make sure each page is mapped while it is
- * safe to do so.
- */
-
-/*
- * XXX Should get this the correct way (see os/xalloc.c), but since this is
- * for one platform I'll be lazy.
- */
-#define X_PAGE_SIZE 4096
-
-static void
-readSideEffects(int ScreenNum, pointer Base, unsigned long Size)
-{
- unsigned long base, end, addr;
- CARD32 val;
-
- base = (unsigned long)Base;
- end = base + Size;
-
- for (addr = base; addr < end; addr += X_PAGE_SIZE)
- val = *(volatile CARD32 *)addr;
-}
-#endif
-
-void
-xf86OSInitVidMem(VidMemInfoPtr pVidMem)
-{
- pVidMem->linearSupported = linearVidMem();
- pVidMem->mapMem = mapVidMem;
- pVidMem->unmapMem = unmapVidMem;
-#if defined(SVR4) && defined(i386) && !defined(sun)
- pVidMem->readSideEffects = readSideEffects;
-#endif
- pVidMem->initialised = TRUE;
-}
-
-/***************************************************************************/
-/* I/O Permissions section */
-/***************************************************************************/
-
-static Bool ExtendedEnabled = FALSE;
-static Bool InitDone = FALSE;
-
-Bool
-xf86EnableIO()
-{
- int i;
-
- if (ExtendedEnabled)
- return TRUE;
-
- if (SET_IOPL() < 0)
- {
- xf86Msg(X_WARNING,
- "xf86EnableIO: Failed to set IOPL for extended I/O\n");
- return FALSE;
- }
- ExtendedEnabled = TRUE;
-
- return TRUE;
-}
-
-void
-xf86DisableIO()
-{
- if (!ExtendedEnabled)
- return;
-
- RESET_IOPL();
- ExtendedEnabled = FALSE;
-
- return;
-}
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool
-xf86DisableInterrupts()
-{
- if (!ExtendedEnabled)
- {
- if (SET_IOPL() < 0)
- {
- return(FALSE);
- }
- }
-
-#ifdef __GNUC__
- __asm__ __volatile__("cli");
-#else
- asm("cli");
-#endif /* __GNUC__ */
-
- if (!ExtendedEnabled)
- {
- RESET_IOPL();
- }
- return(TRUE);
-}
-
-void
-xf86EnableInterrupts()
-{
- if (!ExtendedEnabled)
- {
- if (SET_IOPL() < 0)
- {
- return;
- }
- }
-
-#ifdef __GNUC__
- __asm__ __volatile__("sti");
-#else
- asm("sti");
-#endif /* __GNUC__ */
-
- if (!ExtendedEnabled)
- {
- RESET_IOPL();
- }
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/xqueue.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/xqueue.c
deleted file mode 100644
index 6c2132cef..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/xqueue.c
+++ /dev/null
@@ -1,543 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sysv/xqueue.c,v 3.19 2000/02/10 22:33:45 dawes Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993-1999 by The XFree86 Project, Inc.
- *
- * 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, and that the name of the copyright holders not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. The copyright holders make no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: xqueue.c /main/8 1996/10/19 18:08:11 kaleb $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-#include "xqueue.h"
-
-#ifdef XQUEUE
-
-static xqEventQueue *XqueQaddr;
-static int xqueFd = -1;
-#ifndef XQUEUE_ASYNC
-static int xquePipe[2];
-#endif
-
-#ifdef XKB
-#include "inputstr.h"
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
-#include <X11/extensions/XKBsrv.h>
-extern Bool noXkbExtension;
-#endif
-
-#include "xf86Xinput.h"
-#include "mipointer.h"
-
-typedef struct {
- int xquePending;
- int xqueSema;
-} XqInfoRec, *XqInfoPtr;
-
-InputInfoPtr XqMouse = NULL;
-InputInfoPtr XqKeyboard = NULL;
-
-#ifndef XQUEUE_ASYNC
-/*
- * xf86XqueSignal --
- * Trap the signal from xqueue and let it be known that events are
- * ready for collection
- */
-
-static void
-xf86XqueSignal(int signum)
-{
- ((XqInfoPtr)(((MouseDevPtr)(XqMouse->private))->mousePriv))->xquePending = 1;
- /*
- * This is a hack, but it is the only reliable way I can find of letting
- * the main select() loop know that there is more input waiting. Receiving
- * a signal will interrupt select(), but there is no way I can find of
- * dealing with events that come in between the end of processing the
- * last set and when select() gets called.
- *
- * Suggestions for better ways of dealing with this without going back to
- * asynchronous event processing are welcome.
- */
-#ifdef DEBUG
- ErrorF("xf86XqueSignal\n");
-#endif
- write(xquePipe[1], "X", 1);
- signal(SIGUSR2, xf86XqueSignal);
-}
-#endif
-
-
-/*
- * xf86XqueKbdProc --
- * Handle the initialization, etc. of a keyboard.
- */
-
-int
-xf86XqueKbdProc(DeviceIntPtr pKeyboard, int what)
-{
- KeySymsRec keySyms;
- CARD8 modMap[MAP_LENGTH];
-
- switch (what) {
-
- case DEVICE_INIT:
-
- xf86KbdGetMapping(&keySyms, modMap);
-
- /*
- * Get also the initial led settings
- */
- ioctl(xf86Info.consoleFd, KDGETLED, &xf86Info.leds);
-
- /*
- * Perform final initialization of the system private keyboard
- * structure and fill in various slots in the device record
- * itself which couldn't be filled in before.
- */
- pKeyboard->public.on = FALSE;
-
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- InitKeyboardDeviceStruct((DevicePtr)xf86Info.pKeyboard,
- &keySyms,
- modMap,
- xf86KbdBell,
- (KbdCtrlProcPtr)xf86KbdCtrl);
-#ifdef XKB
- } else {
- XkbComponentNamesRec names;
- if (XkbInitialMap) {
- if ((xf86Info.xkbkeymap = strchr(XkbInitialMap, '/')) != NULL)
- xf86Info.xkbkeymap++;
- else
- xf86Info.xkbkeymap = XkbInitialMap;
- }
- if (xf86Info.xkbkeymap) {
- names.keymap = xf86Info.xkbkeymap;
- names.keycodes = NULL;
- names.types = NULL;
- names.compat = NULL;
- names.symbols = NULL;
- names.geometry = NULL;
- } else {
- names.keymap = NULL;
- names.keycodes = xf86Info.xkbkeycodes;
- names.types = xf86Info.xkbtypes;
- names.compat = xf86Info.xkbcompat;
- names.symbols = xf86Info.xkbsymbols;
- names.geometry = xf86Info.xkbgeometry;
- }
- if ((xf86Info.xkbkeymap || xf86Info.xkbcomponents_specified)
- && (xf86Info.xkbmodel == NULL || xf86Info.xkblayout == NULL)) {
- xf86Info.xkbrules = NULL;
- }
- XkbSetRulesDflts(xf86Info.xkbrules, xf86Info.xkbmodel,
- xf86Info.xkblayout, xf86Info.xkbvariant,
- xf86Info.xkboptions);
- XkbInitKeyboardDeviceStruct(pKeyboard,
- &names,
- &keySyms,
- modMap,
- xf86KbdBell,
- (KbdCtrlProcPtr)xf86KbdCtrl);
- }
-#endif
-
- xf86InitKBD(TRUE);
- break;
-
- case DEVICE_ON:
- pKeyboard->public.on = TRUE;
- xf86InitKBD(FALSE);
- break;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- pKeyboard->public.on = FALSE;
- break;
- }
-
- return (Success);
-}
-
-
-/*
- * xf86XqueEvents --
- * Get some events from our queue. Nothing to do here ...
- */
-
-void
-xf86XqueEvents()
-{
-}
-
-
-#ifdef XQUEUE_ASYNC
-static void XqDoInput(int signum);
-#endif
-
-void
-XqReadInput(InputInfoPtr pInfo)
-{
- MouseDevPtr pMse;
- XqInfoPtr pXq;
- xqEvent *XqueEvents;
- int XqueHead;
- char buf[100];
- signed char dx, dy;
-
- if (xqueFd < 0)
- return;
-
- pMse = pInfo->private;
- pXq = pMse->mousePriv;
-
- XqueEvents = XqueQaddr->xq_events;
- XqueHead = XqueQaddr->xq_head;
-
- while (XqueHead != XqueQaddr->xq_tail) {
- switch (XqueEvents[XqueHead].xq_type) {
- case XQ_BUTTON:
- pMse->PostEvent(pInfo, ~(XqueEvents[XqueHead].xq_code) & 0x07,
- 0, 0, 0, 0);
-#ifdef DEBUG
- ErrorF("xqueue: buttons: %d\n", ~(XqueEvents[XqueHead].xq_code) & 0x07);
-#endif
- break;
-
- case XQ_MOTION:
- dx = (signed char)XqueEvents[XqueHead].xq_x;
- dy = (signed char)XqueEvents[XqueHead].xq_y;
- pMse->PostEvent(pInfo, ~(XqueEvents[XqueHead].xq_code) & 0x07,
- (int)dx, (int)dy, 0, 0);
-#ifdef DEBUG
- ErrorF("xqueue: Motion: (%d, %d) (buttons: %d)\n", dx, dy, ~(XqueEvents[XqueHead].xq_code) & 0x07);
-#endif
- break;
-
- case XQ_KEY:
- /* XXX Need to deal with the keyboard part nicely. */
-#ifdef DEBUG
- ErrorF("xqueue: key: %d\n", XqueEvents[XqueHead].xq_code);
-#endif
- xf86PostKbdEvent(XqueEvents[XqueHead].xq_code);
- break;
- default:
- xf86Msg(X_WARNING, "Unknown Xque Event: 0x%02x\n",
- XqueEvents[XqueHead].xq_type);
- }
-
- if ((++XqueHead) == XqueQaddr->xq_size) XqueHead = 0;
- xf86Info.inputPending = TRUE;
- }
-
- /* reenable the signal-processing */
-#ifdef XQUEUE_ASYNC
- signal(SIGUSR2, XqDoInput);
-#endif
-
-#ifndef XQUEUE_ASYNC
- {
- int rval;
-
- while ((rval = read(xquePipe[0], buf, sizeof(buf))) > 0)
-#ifdef DEBUG
- ErrorF("Read %d bytes from xquePipe[0]\n", rval);
-#else
- ;
-#endif
- }
-#endif
-
-#ifdef DEBUG
- ErrorF("Leaving XqReadInput()\n");
-#endif
- pXq->xquePending = 0;
- XqueQaddr->xq_head = XqueQaddr->xq_tail;
- XqueQaddr->xq_sigenable = 1; /* UNLOCK */
-}
-
-#ifdef XQUEUE_ASYNC
-static void
-XqDoInput(int signum)
-{
- if (XqMouse)
- XqReadInput(XqMouse);
-}
-#endif
-
-static void
-XqBlock(pointer blockData, OSTimePtr pTimeout, pointer pReadmask)
-{
- InputInfoPtr pInfo;
- MouseDevPtr pMse;
- XqInfoPtr pXq;
- /*
- * On MP SVR4 boxes, a race condition exists because the XQUEUE does
- * not have anyway to lock it for exclusive access. This results in one
- * processor putting something on the queue at the same time the other
- * processor is taking it something off. The count of items in the queue
- * can get off by 1. This just goes and checks to see if an extra event
- * was put in the queue a during this period. The signal for this event
- * was ignored while processing the previous event.
- */
-
- pInfo = blockData;
- pMse = pInfo->private;
- pXq = pMse-> mousePriv;
- if (!pXq->xquePending) {
-#ifdef DEBUG
- ErrorF("XqBlock: calling XqReadInput()\n");
-#endif
- XqReadInput((InputInfoPtr)blockData);
- } else {
-#ifdef DEBUG
- ErrorF("XqBlock: not calling XqReadInput()\n");
-#endif
- ;
- }
- /*
- * Make sure that any events that come in here are passed on without.
- * waiting for the next wakeup.
- */
- if (xf86Info.inputPending) {
-#ifdef DEBUG
- ErrorF("XqBlock: calling ProcessInputEvents()\n");
-#endif
- ProcessInputEvents();
- } else {
-#ifdef DEBUG
- ErrorF("XqBlock: not calling ProcessInputEvents()\n");
-#endif
- ;
- }
-}
-
-/*
- * XqEnable --
- * Enable the handling of the Xque
- */
-
-static int
-XqEnable(InputInfoPtr pInfo)
-{
- MouseDevPtr pMse;
- XqInfoPtr pXq;
- static struct kd_quemode xqueMode;
- static Bool was_here = FALSE;
-
- pMse = pInfo->private;
- pXq = pMse->mousePriv;
-
- if (xqueFd < 0) {
- if ((xqueFd = open("/dev/mouse", O_RDONLY | O_NDELAY)) < 0) {
- if (xf86GetAllowMouseOpenFail()) {
- xf86Msg(X_WARNING,
- "%s: Cannot open /dev/mouse (%s) - Continuing...\n",
- pInfo->name, strerror(errno));
- return Success;
- } else {
- xf86Msg(X_ERROR, "%s: Cannot open /dev/mouse (%s)\n",
- pInfo->name, strerror(errno));
- return !Success;
- }
- }
- }
-#ifndef XQUEUE_ASYNC
- if (!was_here) {
- pipe(xquePipe);
- fcntl(xquePipe[0], F_SETFL, fcntl(xquePipe[0], F_GETFL, 0) | O_NDELAY);
- fcntl(xquePipe[1], F_SETFL, fcntl(xquePipe[1], F_GETFL, 0) | O_NDELAY);
- was_here = TRUE;
- }
-#endif
-
- if (pXq->xqueSema++ == 0) {
-#ifdef XQUEUE_ASYNC
- (void) signal(SIGUSR2, XqDoInput);
-#else
- (void) signal(SIGUSR2, xf86XqueSignal);
-#endif
- xqueMode.qsize = 64; /* max events */
- xqueMode.signo = SIGUSR2;
- ioctl(xf86Info.consoleFd, KDQUEMODE, NULL);
-
- if (ioctl(xf86Info.consoleFd, KDQUEMODE, &xqueMode) < 0) {
- xf86Msg(X_ERROR, "%s: Cannot set KDQUEMODE", pInfo->name);
- return !Success;
- }
- XqueQaddr = (xqEventQueue *)xqueMode.qaddr;
- XqueQaddr->xq_sigenable = 1; /* UNLOCK */
- }
-
- return Success;
-}
-
-
-
-/*
- * xf86XqueDisable --
- * disable the handling of the Xque
- */
-
-static int
-XqDisable(InputInfoPtr pInfo)
-{
- MouseDevPtr pMse;
- XqInfoPtr pXq;
-
- pMse = pInfo->private;
- pXq = pMse->mousePriv;
-
- if (pXq->xqueSema-- == 1)
- {
- XqueQaddr->xq_sigenable = 0; /* LOCK */
-
- if (ioctl(xf86Info.consoleFd, KDQUEMODE, NULL) < 0) {
- xf86Msg(X_ERROR, "%s: Cannot unset KDQUEMODE", pInfo->name);
- return !Success;
- }
- }
-
- if (xqueFd >= 0) {
- close(xqueFd);
- xqueFd = -1;
- }
-
- return Success;
-}
-
-/*
- * XqMouseProc --
- * Handle the initialization, etc. of a mouse
- */
-
-static int
-XqMouseProc(DeviceIntPtr pPointer, int what)
-{
- InputInfoPtr pInfo;
- MouseDevPtr pMse;
- unchar map[4];
- int ret;
-
- pInfo = pPointer->public.devicePrivate;
- pMse = pInfo->private;
- pMse->device = pPointer;
-
- switch (what) {
- case DEVICE_INIT:
- pPointer->public.on = FALSE;
-
- map[1] = 1;
- map[2] = 2;
- map[3] = 3;
-
- InitPointerDeviceStruct((DevicePtr)pPointer,
- map,
- 3,
- miPointerGetMotionEvents,
- pMse->Ctrl,
- miPointerGetMotionBufferSize());
- /* X valuator */
- xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 0);
- /* Y valuator */
- xf86InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 1);
- xf86MotionHistoryAllocate(pInfo);
- RegisterBlockAndWakeupHandlers(XqBlock, (WakeupHandlerProcPtr)NoopDDA,
- pInfo);
- break;
-
- case DEVICE_ON:
- pMse->lastButtons = 0;
- pMse->lastMappedButtons = 0;
- pMse->emulateState = 0;
- pPointer->public.on = TRUE;
- ret = XqEnable(pInfo);
-#ifndef XQUEUE_ASYNC
- if (xquePipe[0] != -1) {
- pInfo->fd = xquePipe[0];
- AddEnabledDevice(xquePipe[0]);
- }
-#endif
- return ret;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- pPointer->public.on = FALSE;
- ret = XqDisable(pInfo);
-#ifndef XQUEUE_ASYNC
- if (xquePipe[0] != -1) {
- RemoveEnabledDevice(xquePipe[0]);
- pInfo->fd = -1;
- }
-#endif
- return ret;
- }
- return Success;
-}
-
-Bool
-XqueueMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- MouseDevPtr pMse;
- XqInfoPtr pXq;
-
- pMse = pInfo->private;
- pMse->protocol = protocol;
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
- pXq = pMse->mousePriv = xnfcalloc(sizeof(XqInfoRec), 1);
-
- /* Collect the options, and process the common options. */
- xf86CollectInputOptions(pInfo, NULL, NULL);
- xf86ProcessCommonOptions(pInfo, pInfo->options);
-
- /* Process common mouse options (like Emulate3Buttons, etc). */
- pMse->CommonOptions(pInfo);
-
- /* Setup the local procs. */
- pInfo->device_control = XqMouseProc;
-#ifdef XQUEUE_ASYNC
- pInfo->read_input = NULL;
-#else
- pInfo->read_input = XqReadInput;
-#endif
- pInfo->fd = -1;
-
- XqMouse = pInfo;
-
- pInfo->flags |= XI86_CONFIGURED;
- return TRUE;
-}
-
-#endif /* XQUEUE */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/xqueue.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/xqueue.h
deleted file mode 100644
index d693d2b36..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/sysv/xqueue.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* $XFree86$ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _XF86_XQUEUE_H_
-#define _XF86_XQUEUE_H_
-
-Bool XqueueMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/Imakefile
deleted file mode 100644
index 034c9c7d6..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/Imakefile
+++ /dev/null
@@ -1,40 +0,0 @@
-XCOMM $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/usl/Imakefile,v 1.2 2005/11/08 06:33:29 jkj Exp $
-XCOMM $XConsortium$
-
-#include <Server.tmpl>
-
-SRCS = usl_init.c usl_video.c usl_io.c usl_iop.c usl_mouse.c usl_vtsw.c \
- usl_xqueue.c std_kbdEv.c posix_tty.c bios_mmap.c vidmem.c \
- libc_wrapper.c stdResource.c stdPci.c sigiostubs.c pm_noop.c \
- kmod_noop.c agp_noop.c usl_kbd.c at_scancode.c usl_KbdMap.c
-
-OBJS = usl_init.o usl_video.o usl_io.o usl_iop.o usl_mouse.o usl_vtsw.o \
- usl_xqueue.o std_kbdEv.o posix_tty.o bios_mmap.o vidmem.o \
- libc_wrapper.o stdResource.o stdPci.o sigiostubs.o pm_noop.o \
- kmod_noop.o agp_noop.o usl_kbd.o at_scancode.o usl_KbdMap.o
-
-INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(SERVERSRC)/mi -I$(XINCLUDESRC) -I$(EXTINCSRC)
-
-RESDEFINES = -DUSESTDRES
-
-DEFINES = $(RESDEFINES)
-
-SubdirLibraryRule($(OBJS))
-NormalLibraryObjectRule()
-
-LinkSourceFile(bios_mmap.c,../shared)
-LinkSourceFile(std_kbdEv.c,../shared)
-LinkSourceFile(at_scancode.c,../shared)
-LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(libc_wrapper.c,../shared)
-LinkSourceFile(stdResource.c,../shared)
-LinkSourceFile(stdPci.c,../shared)
-LinkSourceFile(sigiostubs.c,../shared)
-LinkSourceFile(pm_noop.c,../shared)
-LinkSourceFile(kmod_noop.c,../shared)
-LinkSourceFile(agp_noop.c,../shared)
-LinkSourceFile(vidmem.c,../shared)
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_KbdMap.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_KbdMap.c
deleted file mode 100644
index 57c73f07a..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_KbdMap.c
+++ /dev/null
@@ -1,304 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/usl/usl_KbdMap.c,v 1.2 2005/11/08 06:33:29 jkj Exp $ */
-/*
- * Copyright 2005 by J. Kean Johnston <jkj@sco.com>
- *
- * 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, and that the name J. Kean Johnston not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. J. Kean Johnston makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
- * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * Based on xf86KbdMap.c, which is
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- * Copyright (c) 1992-2003 by The XFree86 Project, Inc.
- */
-
-#include "X.h"
-#include "Xmd.h"
-#include "input.h"
-#include "scrnintstr.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Xinput.h"
-#include "xf86OSKbd.h"
-#include "atKeynames.h"
-#include "xf86Keymap.h"
-
-#include "usl_kbd.h"
-
-#define KD_GET_ENTRY(i,n) \
- eascii_to_x[((priv->keymap.key[i].spcl << (n+1)) & 0x100) + priv->keymap.key[i].map[n]]
-
-/*
- * NOTE: Not all possible remappable symbols are remapped. There are two main
- * reasons:
- * a) The mapping between scancode and SYSV/386 - symboltable
- * is inconsistent between different versions and has some
- * BIG mistakes.
- * b) In X-Windows there is a difference between numpad-keys
- * and normal keys. SYSV/386 uses for both kinds of keys
- * the same symbol.
- *
- * Thus only the alpha keypad and the function keys are translated.
- * Also CapsLock, NumLock, ScrollLock, Shift, Control & Alt.
- */
-
-static unsigned char remap[128] = {
- 0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00 - 0x07 */
- 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08 - 0x0f */
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10 - 0x17 */
- 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18 - 0x1f */
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20 - 0x27 */
- 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28 - 0x2f */
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0, /* 0x30 - 0x37 */
- 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38 - 0x3f */
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0, /* 0x40 - 0x47 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x48 - 0x4f */
- 0, 0, 0, 0, 0, 0, 0x56, 0x57, /* 0x50 - 0x57 */
- 0x58, 0, 0, 0, 0, 0, 0, 0, /* 0x58 - 0x5f */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 - 0x67 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x68 - 0x6f */
- 0, 0, 0x69, 0x65, 0, 0, 0, 0, /* 0x70 - 0x77 */
- 0, 0, 0, 0, 0, 0, 0, 0, /* 0x78 - 0x7f */
-};
-
-static KeySym eascii_to_x[512] = {
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
- NoSymbol, XK_Return, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_Escape,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
- XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
- XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
- XK_comma, XK_minus, XK_period, XK_slash,
- XK_0, XK_1, XK_2, XK_3,
- XK_4, XK_5, XK_6, XK_7,
- XK_8, XK_9, XK_colon, XK_semicolon,
- XK_less, XK_equal, XK_greater, XK_question,
- XK_at, XK_A, XK_B, XK_C,
- XK_D, XK_E, XK_F, XK_G,
- XK_H, XK_I, XK_J, XK_K,
- XK_L, XK_M, XK_N, XK_O,
- XK_P, XK_Q, XK_R, XK_S,
- XK_T, XK_U, XK_V, XK_W,
- XK_X, XK_Y, XK_Z, XK_bracketleft,
- XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
- XK_grave, XK_a, XK_b, XK_c,
- XK_d, XK_e, XK_f, XK_g,
- XK_h, XK_i, XK_j, XK_k,
- XK_l, XK_m, XK_n, XK_o,
- XK_p, XK_q, XK_r, XK_s,
- XK_t, XK_u, XK_v, XK_w,
- XK_x, XK_y, XK_z, XK_braceleft,
- XK_bar, XK_braceright, XK_asciitilde, XK_Delete,
- XK_Ccedilla, XK_udiaeresis, XK_eacute, XK_acircumflex,
- XK_adiaeresis, XK_agrave, XK_aring, XK_ccedilla,
- XK_ecircumflex, XK_ediaeresis, XK_egrave, XK_idiaeresis,
- XK_icircumflex, XK_igrave, XK_Adiaeresis, XK_Aring,
- XK_Eacute, XK_ae, XK_AE, XK_ocircumflex,
- XK_odiaeresis, XK_ograve, XK_ucircumflex, XK_ugrave,
- XK_ydiaeresis, XK_Odiaeresis, XK_Udiaeresis, XK_cent,
- XK_sterling, XK_yen, XK_paragraph, XK_section,
- XK_aacute, XK_iacute, XK_oacute, XK_uacute,
- XK_ntilde, XK_Ntilde, XK_ordfeminine, XK_masculine,
- XK_questiondown,XK_hyphen, XK_notsign, XK_onehalf,
- XK_onequarter, XK_exclamdown, XK_guillemotleft,XK_guillemotright,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- XK_Greek_alpha, XK_ssharp, XK_Greek_GAMMA, XK_Greek_pi,
- XK_Greek_SIGMA, XK_Greek_sigma, XK_mu, XK_Greek_tau,
- XK_Greek_PHI, XK_Greek_THETA, XK_Greek_OMEGA, XK_Greek_delta,
- XK_infinity, XK_Ooblique, XK_Greek_epsilon, XK_intersection,
- XK_identical, XK_plusminus, XK_greaterthanequal, XK_lessthanequal,
- XK_topintegral, XK_botintegral, XK_division, XK_similarequal,
- XK_degree, NoSymbol, NoSymbol, XK_radical,
- XK_Greek_eta, XK_twosuperior, XK_periodcentered, NoSymbol,
-
- /*
- * special marked entries (256 + x)
- */
-
- NoSymbol, NoSymbol, XK_Shift_L, XK_Shift_R,
- XK_Caps_Lock, XK_Num_Lock, XK_Scroll_Lock, XK_Alt_L,
- NoSymbol, XK_Control_L, XK_Alt_L, XK_Alt_R,
- XK_Control_L, XK_Control_R, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, XK_F1,
- XK_F2, XK_F3, XK_F4, XK_F5,
- XK_F6, XK_F7, XK_F8, XK_F9,
- XK_F10, XK_F11, XK_F12, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- };
-
-/*
- * KbdGetMapping --
- * Get the national keyboard mapping. The keyboard type is set, a new map
- * and the modifiermap is computed.
- */
-
-void
-KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- USLKbdPrivPtr priv = (USLKbdPrivPtr) pKbd->private;
- KeySym *k;
- int i;
- KeySym *pMap = map;
-
- for (i = 0; i < priv->keymap.n_keys && i < NUM_KEYCODES; i++) {
- if (remap[i]) {
- k = pMap + (remap[i] << 2);
-
- k[0] = KD_GET_ENTRY(i,0); /* non-shifed */
- k[1] = KD_GET_ENTRY(i,1); /* shifted */
- k[2] = KD_GET_ENTRY(i,4); /* alt */
- k[3] = KD_GET_ENTRY(i,5); /* alt - shifted */
-
- if (k[3] == k[2]) k[3] = NoSymbol;
- if (k[2] == k[1]) k[2] = NoSymbol;
- if (k[1] == k[0]) k[1] = NoSymbol;
- if (k[0] == k[2] && k[1] == k[3]) k[2] = k[3] = NoSymbol;
- }
- }
-
- /*
- * compute the modifier map
- */
- for (i = 0; i < MAP_LENGTH; i++)
- pModMap[i] = NoSymbol; /* make sure it is restored */
-
- for (k = pMap, i = MIN_KEYCODE;
- i < (NUM_KEYCODES + MIN_KEYCODE);
- i++, k += 4) {
-
- switch(*k) {
- case XK_Shift_L:
- case XK_Shift_R:
- pModMap[i] = ShiftMask;
- break;
-
- case XK_Control_L:
- case XK_Control_R:
- pModMap[i] = ControlMask;
- break;
-
- case XK_Caps_Lock:
- pModMap[i] = LockMask;
- break;
-
- case XK_Alt_L:
- case XK_Alt_R:
- pModMap[i] = AltMask;
- break;
-
- case XK_Num_Lock:
- pModMap[i] = NumLockMask;
- break;
-
- case XK_Scroll_Lock:
- pModMap[i] = ScrollLockMask;
- break;
-
- /* kana support */
- case XK_Kana_Lock:
- case XK_Kana_Shift:
- pModMap[i] = KanaMask;
- break;
-
- /* alternate toggle for multinational support */
- case XK_Mode_switch:
- pModMap[i] = AltLangMask;
- break;
- }
- }
-
- pKeySyms->map = pMap;
- pKeySyms->mapWidth = GLYPHS_PER_KEY;
- pKeySyms->minKeyCode = MIN_KEYCODE;
- pKeySyms->maxKeyCode = MAX_KEYCODE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_init.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_init.c
deleted file mode 100644
index 35410b688..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_init.c
+++ /dev/null
@@ -1,359 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/usl/usl_init.c,v 1.2 2005/11/08 06:33:29 jkj Exp $ */
-/*
- * Copyright 2001-2005 by Kean Johnston <jkj@sco.com>
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Thomas Roell, David Wexelblat
- * and Kean Johnston not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- * Thomas Roell, David Wexelblat and Kean Johnston make no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL, DAVID WEXELBLAT AND KEAN JOHNSTON DISCLAIM ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THOMAS ROELLm DAVID WEXELBLAT
- * OR KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- * THIS SOFTWARE.
- *
- */
-/* $XConsortium$ */
-
-#include "X.h"
-#include "Xmd.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include <sys/utsname.h>
-
-static Bool KeepTty = FALSE;
-static Bool Protect0 = FALSE;
-static Bool CRTSpecified = FALSE;
-static int VTnum = -1;
-static char vtdevice[48];
-
-int usl_is_osr6 = -1;
-
-static Bool
-IsConsoleDevice(const char *dev)
-{
- if ((!strcmp (dev, "/dev/console")) ||
- (!strcmp (dev, "/dev/syscon")) ||
- (!strcmp (dev, "/dev/systty")))
- return TRUE;
-
- return FALSE;
-}
-
-static int
-is_osr6 (void)
-{
- struct utsname uts;
-
- if (usl_is_osr6 == -1) {
- if (uname (&uts) < 0) {
- FatalError ("get_usl_ver: Failed to determine UNIX name (%s)\n",
- strerror (errno));
- }
-
- if (uts.version[0] == '6')
- usl_is_osr6 = 1;
- else
- usl_is_osr6 = 0;
- }
-
- return usl_is_osr6;
-}
-
-
-void
-xf86OpenConsole(void)
-{
- int fd, i, ioctl_ret;
- struct vt_mode VT;
- struct vt_stat vts;
- MessageType from = X_PROBED;
- struct sigaction sigvtsw;
- char *ttn;
-
- if (serverGeneration == 1) {
- int isconsole = 0, consdev = 0;
-
- /* check if we're run with euid==0 */
- if (geteuid() != 0) {
- FatalError("xf86OpenConsole: Server must be suid root\n");
- }
-
- /* If we are run in the background we will get SIGTTOU. Ignore it. */
- OsSignal (SIGTTOU, SIG_IGN);
-
- /* Protect page 0 to help find NULL dereferencing */
- /* mprotect() doesn't seem to work */
- if (Protect0) {
- int fd = -1;
-
- if ((fd = open("/dev/zero", O_RDONLY, 0)) < 0) {
- xf86Msg(X_WARNING, "xf86OpenConsole: cannot open /dev/zero (%s)\n",
- strerror(errno));
- } else {
- if ((int)mmap(0, 0x1000, PROT_NONE,
- MAP_FIXED | MAP_SHARED, fd, 0) == -1) {
- xf86Msg(X_WARNING, "xf86OpenConsole: failed to protect page 0 (%s)\n",
- strerror(errno));
- }
- close(fd);
- }
- }
-
- /*
- * setup the virtual terminal manager
- */
- if (VTnum == -1) {
- /*
- * No device was specified. We need to query the kernel to see which
- * console device we are on (and in fact if we are on a console at all).
- */
- if (ioctl (0, VT_GETSTATE, &vts) < 0) {
- FatalError("xf86OpenConsole: Could not query active VT: %s\n",
- strerror(errno));
- }
- VTnum = vts.v_active;
- if (is_osr6())
- snprintf (vtdevice, sizeof(vtdevice), "/dev/tty%02d", VTnum + 1);
- else
- snprintf (vtdevice, sizeof(vtdevice), "/dev/vt%02d", VTnum);
- } else {
- from = X_CMDLINE;
- if (is_osr6())
- snprintf (vtdevice, sizeof(vtdevice), "/dev/tty%02d", VTnum + 1);
- else
- snprintf (vtdevice, sizeof(vtdevice), "/dev/vt%02d", VTnum);
- }
-
- if (IsConsoleDevice(vtdevice)) {
- isconsole = 1;
- CRTSpecified = FALSE; /* Dont honour -crt /dev/console */
- }
-
- if (ioctl (0, KIOCINFO, 0) >= 0)
- consdev = 1 + isconsole;
-
- if ((!CRTSpecified) && (isconsole || (!consdev))) {
- /*
- * Need to find a free VT
- */
- if ((fd = open ("/dev/console", O_WRONLY | O_NOCTTY)) < 0) {
- FatalError ("xf86OpenConsole: Could not open /dev/console: %s\n",
- strerror (errno));
- }
-
- if (ioctl (fd, VT_OPENQRY, &VTnum) < 0) {
- FatalError ("xf86OpenConsole: Cannot find a free VT: %s\n",
- strerror(errno));
- }
- close (fd);
- if (usl_is_osr6)
- snprintf (vtdevice, sizeof(vtdevice), "/dev/tty%02d", VTnum + 1);
- else
- snprintf (vtdevice, sizeof(vtdevice), "/dev/vt%02d", VTnum);
- }
-
- /*
- * Now we can dispose of stdin/stdout
- */
- fclose (stdin);
- fclose (stdout);
-
- if (CRTSpecified || isconsole || consdev != 1) {
- if (!KeepTty) {
- setpgrp();
- }
- }
-
- if ((xf86Info.consoleFd = open(vtdevice, O_RDWR | O_NONBLOCK, 0)) < 0) {
- FatalError("xf86OpenConsole: Cannot open %s: %s\n", vtdevice,
- strerror(errno));
- }
-
- xf86Msg (from, "using VT number %d (%s)\n\n", VTnum, vtdevice);
- xf86Info.vtno = VTnum;
-
- /* change ownership of the vt */
- chown(vtdevice, getuid(), getgid());
-
- /*
- * now get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0) {
- FatalError("xf86OpenConsole: VT_ACTIVATE failed: %s\n",
- strerror(errno));
- }
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0) {
- FatalError("xf86OpenConsole: VT_WAITACTIVE failed: %s\n",strerror(errno));
- }
-
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0) {
- FatalError("xf86OpenConsole: VT_GETMODE failed: %s\n", strerror(errno));
- }
-
- sigvtsw.sa_handler = xf86VTRequest;
- sigfillset(&sigvtsw.sa_mask);
- sigvtsw.sa_flags = 0;
- sigaction(SIGUSR1, &sigvtsw, NULL);
-
- VT.mode = VT_PROCESS;
- VT.relsig = SIGUSR1;
- VT.acqsig = SIGUSR1;
-
- ioctl_ret = ioctl(xf86Info.consoleFd, VT_SETMODE, &VT);
- if (ioctl_ret < 0) {
- FatalError("xf86OpenConsole: VT_SETMODE failed: %s\n", strerror(errno));
- }
-
- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0) {
- FatalError("xf86OpenConsole: KD_GRAPHICS failed: %s\n", strerror(errno));
- }
- } else { /* serverGeneration != 1 */
- /*
- * now get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0) {
- FatalError("xf86OpenConsole: VT_ACTIVATE failed: %s\n", strerror(errno));
- }
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0) {
- FatalError("xf86OpenConsole: VT_WAITACTIVE failed: %s\n",strerror(errno));
- }
- /*
- * If the server doesn't have the VT when the reset occurs,
- * this is to make sure we don't continue until the activate
- * signal is received.
- */
- if (!xf86Screens[0]->vtSema)
- sleep(5);
- }
- return;
-}
-
-void
-xf86CloseConsole(void)
-{
- struct vt_mode VT;
- struct sigaction sigvtsw;
-
- ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT); /* Back to text mode ... */
-
- sigvtsw.sa_handler = SIG_DFL;
- sigfillset(&sigvtsw.sa_mask);
- sigvtsw.sa_flags = 0;
- sigaction(SIGUSR1, &sigvtsw, NULL);
-
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) != -1) {
- VT.mode = VT_AUTO;
- VT.waitv = 0;
- ioctl(xf86Info.consoleFd, VT_SETMODE, &VT); /* set dflt vt handling */
- }
- close(xf86Info.consoleFd); /* make the vt-manager happy */
- return;
-}
-
-int
-xf86ProcessArgument(int argc, char *argv[], int i)
-{
- /*
- * Keep server from detaching from controlling tty. This is useful
- * when debugging (so the server can receive keyboard signals.
- */
- if (!strcmp(argv[i], "-keeptty")) {
- KeepTty = TRUE;
- return(1);
- }
-
- /*
- * Undocumented flag to protect page 0 from read/write to help
- * catch NULL pointer dereferences. This is purely a debugging
- * flag.
- */
- if (!strcmp(argv[i], "-protect0")) {
- Protect0 = TRUE;
- return(1);
- }
-
- if ((argv[i][0] == 'v') && (argv[i][1] == 't')) {
- if (sscanf(argv[i], "vt%2d", &VTnum) == 0) {
- UseMsg();
- VTnum = -1;
- return(0);
- }
- VTnum -= is_osr6();
- CRTSpecified = TRUE;
- return(1);
- }
-
- /*
- * Use a device the user specifies.
- */
- if (!strcmp(argv[i], "-crt")) {
- if (++i > argc) {
- UseMsg();
- VTnum = -1;
- return(0);
- } else {
- char *mytty = ttyname(0);
- char *arg = argv[i];
-
- if (!mytty)
- mytty = "\1";
- if (!arg[0])
- arg = "\2"; /* Prevent idiots from using -crt "" */
-
- if (strcmp (mytty, arg) != 0) {
- char *fmt;
-
- if (is_osr6())
- fmt = "/dev/tty%02d";
- else
- fmt = "/dev/vt%02d";
-
- if (sscanf(arg, fmt, &VTnum) == 0) {
- UseMsg();
- VTnum = -1;
- return(0);
- }
-
- /* OSR6 devices start names at 1, UW7 starts at 0 */
- VTnum -= is_osr6();
- CRTSpecified = TRUE;
- }
- return(2);
- }
- }
- return(0);
-}
-
-void
-xf86UseMsg(void)
-{
- if (is_osr6()) {
- ErrorF("-crt /dev/ttyXX use the specified VT device\n");
- ErrorF("vtXX use the specified VT number (01-16)\n");
- } else {
- ErrorF("-crt /dev/vtXX use the specified VT device\n");
- ErrorF("vtXX use the specified VT number (00-15)\n");
- }
-
- ErrorF("-keeptty ");
- ErrorF("don't detach controlling tty (for debugging only)\n");
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_io.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_io.c
deleted file mode 100644
index c93e8058e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_io.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/usl/usl_io.c,v 1.2 2005/11/08 06:33:30 jkj Exp $ */
-/*
- * Copyright 2001-2005 by Kean Johnston <jkj@sco.com>
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- *
- * 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, and that the names of Thomas Roell, David Dawes
- * and Kean Johnston not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- * Thomas Roell, David Dawes and Kean Johnston make no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL, DAVID DAWES AND KEAN JOHNSTON DISCLAIM ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THOMAS ROELLm DAVID WEXELBLAT
- * OR KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- * THIS SOFTWARE.
- *
- */
-/* $XConsortium$ */
-
-#include "X.h"
-
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-void
-xf86SoundKbdBell(int loudness, int pitch, int duration)
-{
- if (loudness && pitch) {
- ioctl(xf86Info.consoleFd, KIOCSOUND, 1193180 / pitch);
- usleep(xf86Info.bell_duration * loudness * 20);
- ioctl(xf86Info.consoleFd, KIOCSOUND, 0);
- }
-}
-
-void
-xf86SetKbdLeds(int leds)
-{
- ioctl(xf86Info.consoleFd, KDSETLED, leds);
-}
-
-int
-xf86GetKbdLeds(void)
-{
- int leds;
-
- ioctl(xf86Info.consoleFd, KDGETLED, &leds);
- return(leds);
-}
-
-/*
- * Much of the code in this function is duplicated from the Linux code
- * by Orest Zborowski <obz@Kodak.com> and David Dawes <dawes@xfree86.org>.
- * Please see the file ../linux/lnx_io.c for full copyright information.
- */
-void
-xf86SetKbdRepeat(char rad)
-{
- int i;
- int value = 0x7f; /* Maximum delay with slowest rate */
- int delay = 250; /* Default delay */
- int rate = 300; /* Default repeat rate */
-
- static int valid_rates[] = { 300, 267, 240, 218, 200, 185, 171, 160, 150,
- 133, 120, 109, 100, 92, 86, 80, 75, 67,
- 60, 55, 50, 46, 43, 40, 37, 33, 30, 27,
- 25, 23, 21, 20 };
-#define RATE_COUNT (sizeof( valid_rates ) / sizeof( int ))
-
- static int valid_delays[] = { 250, 500, 750, 1000 };
-#define DELAY_COUNT (sizeof( valid_delays ) / sizeof( int ))
-
- if (xf86Info.kbdRate >= 0)
- rate = xf86Info.kbdRate * 10;
- if (xf86Info.kbdDelay >= 0)
- delay = xf86Info.kbdDelay;
-
- for (i = 0; i < RATE_COUNT; i++)
- if (rate >= valid_rates[i]) {
- value &= 0x60;
- value |= i;
- break;
- }
-
- for (i = 0; i < DELAY_COUNT; i++)
- if (delay <= valid_delays[i]) {
- value &= 0x1f;
- value |= i << 5;
- break;
- }
-
- ioctl (xf86Info.consoleFd, KDSETTYPEMATICS, value);
-}
-
-static int orig_kbm;
-static struct termio orig_termio;
-static keymap_t keymap, noledmap;
-
-void
-xf86KbdInit(void)
-{
- ioctl (xf86Info.consoleFd, KDGKBMODE, &orig_kbm);
- ioctl (xf86Info.consoleFd, TCGETA, &orig_termio);
- /*
- * We need to get the original keyboard map and NUL out the lock
- * modifiers. This prevents the scancode API from messing with
- * the keyboard LED's. We restore the original map when we exit.
- */
- if (ioctl (xf86Info.consoleFd, GIO_KEYMAP, &keymap) < 0) {
- FatalError ("xf86KbdInit: Failed to get keyboard map (%s)\n",
- strerror(errno));
- }
- if (ioctl (xf86Info.consoleFd, GIO_KEYMAP, &noledmap) < 0) {
- FatalError ("xf86KbdInit: Failed to get keyboard map (%s)\n",
- strerror(errno));
- } else {
- int i, j;
-
- for (i = 0; i < noledmap.n_keys; i++) {
- for (j = 0; j < NUM_STATES; j++) {
- if (IS_SPECKEY(&noledmap, i, j) &&
- ((noledmap.key[i].map[j] == K_CLK) ||
- (noledmap.key[i].map[j] == K_NLK) ||
- (noledmap.key[i].map[j] == K_SLK))) {
- noledmap.key[i].map[j] = K_NOP;
- }
- }
- }
- }
-}
-
-int
-xf86KbdOn(void)
-{
- struct termio newtio;
-
- newtio = orig_termio; /* structure copy */
- newtio.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- newtio.c_oflag = 0;
- newtio.c_cflag = CREAD | CS8 | B9600;
- newtio.c_lflag = 0;
- newtio.c_cc[VTIME]=0;
- newtio.c_cc[VMIN]=1;
- ioctl(xf86Info.consoleFd, TCSETA, &newtio);
-
- ioctl (xf86Info.consoleFd, KDSKBMODE, K_RAW);
- ioctl (xf86Info.consoleFd, PIO_KEYMAP, &noledmap);
-
- return(xf86Info.consoleFd);
-}
-
-int
-xf86KbdOff(void)
-{
- ioctl (xf86Info.consoleFd, KDSKBMODE, orig_kbm);
- ioctl (xf86Info.consoleFd, PIO_KEYMAP, &keymap);
- ioctl(xf86Info.consoleFd, TCSETA, &orig_termio);
-
- return(xf86Info.consoleFd);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_iop.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_iop.c
deleted file mode 100644
index 362ac369e..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_iop.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/usl/usl_iop.c,v 1.2 2005/11/08 06:33:30 jkj Exp $ */
-/*
- * Copyright 2001,2005 by Kean Johnston <jkj@sco.com>
- *
- * 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, and that the name Kean Johnston not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Kean Johnston makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
- * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XConsortium$ */
-
-
-#include "X.h"
-
-#include "compiler.h"
-
-#define _NEED_SYSI86
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86OSpriv.h"
-#include "xf86_OSlib.h"
-
-
-/***************************************************************************/
-/* I/O Permissions section */
-/***************************************************************************/
-
-static Bool IOEnabled = FALSE;
-
-Bool
-xf86EnableIO(void)
-{
- if (IOEnabled)
- return TRUE;
-
- if (sysi86(SI86IOPL, 3) < 0)
- FatalError("Failed to set IOPL for extended I/O\n");
- IOEnabled = TRUE;
- return TRUE;
-}
-
-void
-xf86DisableIO(void)
-{
- if (!IOEnabled)
- return;
-
- sysi86(SI86IOPL, 0);
- IOEnabled = FALSE;
-}
-
-/***************************************************************************/
-/* Interrupt Handling section */
-/***************************************************************************/
-
-Bool
-xf86DisableInterrupts(void)
-{
- if (!IOEnabled) {
- if (sysi86(SI86IOPL, 3) < 0)
- return FALSE;
- }
-
-#ifdef __GNUC__
- __asm__ __volatile__("cli");
-#else
- asm("cli");
-#endif /* __GNUC__ */
-
- if (!IOEnabled) {
- sysi86(SI86IOPL, 0);
- }
-
- return(TRUE);
-}
-
-void
-xf86EnableInterrupts(void)
-{
- if (!IOEnabled) {
- if (sysi86(SI86IOPL, 3) < 0)
- return;
- }
-
-#ifdef __GNUC__
- __asm__ __volatile__("sti");
-#else
- asm("sti");
-#endif /* __GNUC__ */
-
- if (!IOEnabled) {
- sysi86(SI86IOPL, 0);
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_kbd.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_kbd.c
deleted file mode 100644
index c6e089db8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_kbd.c
+++ /dev/null
@@ -1,456 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/usl/usl_kbd.c,v 1.2 2005/11/08 06:33:30 jkj Exp $ */
-/*
- * Copyright 2005 by Kean Johnston <jkj@sco.com>
- *
- * 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, and that the name Kean Johnston not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Kean Johnston makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
- * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XConsortium$ */
-
-/*
- * Based on sco_io.c which is
- * (C) Copyright 2003 Kean Johnston <jkj@sco.com>
- *
- * Based on lnx_kbd.c which is
- * Copyright (c) 2002 by The XFree86 Project, Inc.
- *
- * Based on the code from lnx_io.c which is
- * Copyright 1992 by Orest Zborowski <obz@Kodak.com>
- * Copyright 1993 by David Dawes <dawes@xfree86.org>
- */
-
-#define NEED_EVENTS
-#include "X.h"
-
-#include "compiler.h"
-
-#define _NEED_SYSI86
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86OSpriv.h"
-#include "xf86_OSlib.h"
-
-#include "xf86Xinput.h"
-#include "xf86OSKbd.h"
-#include "atKeynames.h"
-#include "usl_kbd.h"
-#include "usl_xqueue.h"
-
-#include <sys/param.h>
-
-static KbdProtocolRec protocols[] = {
- { "standard", PROT_STD },
- { "Xqueue", PROT_XQUEUE },
- { NULL, PROT_UNKNOWN_KBD }
-};
-
-extern Bool VTSwitchEnabled;
-#ifdef USE_VT_SYSREQ
-extern Bool VTSysreqToggle;
-#endif
-
-static void
-SoundBell(InputInfoPtr pInfo, int loudness, int pitch, int duration)
-{
- if (loudness && pitch) {
- ioctl(pInfo->fd, KIOCSOUND, 1193180 / pitch);
- usleep(duration * loudness * 20);
- ioctl(pInfo->fd, KIOCSOUND, 0);
- }
-}
-
-static void
-SetKbdLeds(InputInfoPtr pInfo, int leds)
-{
- int real_leds = 0;
-
- if (leds & XLED1)
- real_leds |= LED_CAP;
- if (leds & XLED2)
- real_leds |= LED_NUM;
- if (leds & XLED3)
- real_leds |= LED_SCR;
- ioctl(pInfo->fd, KDSETLED, real_leds);
-}
-
-static int
-GetKbdLeds(InputInfoPtr pInfo)
-{
- int real_leds, leds = 0;
-
- ioctl(pInfo->fd, KDGETLED, &real_leds);
-
- if (real_leds & LED_CAP) leds |= XLED1;
- if (real_leds & LED_NUM) leds |= XLED2;
- if (real_leds & LED_SCR) leds |= XLED3;
-
- return(leds);
-}
-
-static void
-SetKbdRepeat(InputInfoPtr pInfo, char rad)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int i;
- int value = 0x7f; /* Maximum delay with slowest rate */
- int delay = 250; /* Default delay */
- int rate = 300; /* Default repeat rate */
-
- static int valid_rates[] = { 300, 267, 240, 218, 200, 185, 171, 160, 150,
- 133, 120, 109, 100, 92, 86, 80, 75, 67,
- 60, 55, 50, 46, 43, 40, 37, 33, 30, 27,
- 25, 23, 21, 20 };
-#define RATE_COUNT (sizeof( valid_rates ) / sizeof( int ))
-
- static int valid_delays[] = { 250, 500, 750, 1000 };
-#define DELAY_COUNT (sizeof( valid_delays ) / sizeof( int ))
-
- if (pKbd->rate >= 0)
- rate = pKbd->rate * 10;
- if (pKbd->delay >= 0)
- delay = pKbd->delay;
-
- for (i = 0; i < RATE_COUNT; i++)
- if (rate >= valid_rates[i]) {
- value &= 0x60;
- value |= i;
- break;
- }
-
- for (i = 0; i < DELAY_COUNT; i++)
- if (delay <= valid_delays[i]) {
- value &= 0x1f;
- value |= i << 5;
- break;
- }
-
- ioctl (pInfo->fd, KDSETTYPEMATICS, value);
-}
-
-static int
-KbdInit(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- USLKbdPrivPtr priv = (USLKbdPrivPtr) pKbd->private;
-
- if (pKbd->isConsole) {
- if (ioctl (pInfo->fd, KDGKBMODE, &priv->orig_kbm) < 0) {
- xf86Msg (X_ERROR, "KbdInit: Could not determine keyboard mode\n");
- return !Success;
- }
-
- /*
- * We need to get the original keyboard map and NUL out the lock
- * modifiers. This prevents the kernel from messing with
- * the keyboard LED's. We restore the original map when we exit.
- * Note that we also have to eliminate screen switch sequences
- * else the VT manager will switch for us, which we don't want.
- * For example, lets say you had changed the VT manager to switch
- * on Alt-Fx instead of Ctrl-Alt-Fx. This means that while inside
- * X, you cant use, for example, Alt-F4, which is a pain in the
- * fundamental when you're using CDE-like thingies.
- */
- if (ioctl (pInfo->fd, GIO_KEYMAP, &priv->keymap) < 0) {
- xf86Msg (X_ERROR, "KbdInit: Failed to get keyboard map (%s)\n",
- strerror(errno));
- return !Success;
- }
- if (ioctl (pInfo->fd, GIO_KEYMAP, &priv->noledmap) < 0) {
- xf86Msg (X_ERROR, "KbdInit: Failed to get keyboard map (%s)\n",
- strerror(errno));
- return !Success;
- } else {
- int i, j;
-
- for (i = 0; i < priv->noledmap.n_keys; i++) {
- for (j = 0; j < NUM_STATES; j++) {
- if (IS_SPECKEY(&priv->noledmap, i, j) &&
- ((priv->noledmap.key[i].map[j] == K_CLK) ||
- (priv->noledmap.key[i].map[j] == K_NLK) ||
- (priv->noledmap.key[i].map[j] == K_SLK) ||
- (priv->noledmap.key[i].map[j] == K_FRCNEXT) ||
- (priv->noledmap.key[i].map[j] == K_FRCPREV) ||
- ((priv->noledmap.key[i].map[j] >= K_VTF) &&
- (priv->noledmap.key[i].map[j] <= K_VTL)) )) {
- priv->noledmap.key[i].map[j] = K_NOP;
- }
- }
- }
- }
-
- if (ioctl (pInfo->fd, TCGETA, &priv->kbdtty) < 0) {
- xf86Msg (X_ERROR, "KbdInit: Failed to get terminal modes (%s)\n",
- strerror(errno));
- return !Success;
- }
- } /* End of if we are on a console */
-
- return Success;
-}
-
-static int
-KbdOn(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- USLKbdPrivPtr priv = (USLKbdPrivPtr) pKbd->private;
- struct termio newtio;
-
- if (pKbd->isConsole) {
- /*
- * Use the calculated keyboard map that does not have active
- * LED lock handling (we track LEDs ourselves).
- */
- ioctl (pInfo->fd, PIO_KEYMAP, &priv->noledmap);
-
-#ifdef NOTYET
- newtio = priv->kbdtty; /* structure copy */
- newtio.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- newtio.c_oflag = 0;
- newtio.c_cflag = CREAD | CS8 | B9600;
- newtio.c_lflag = 0;
- newtio.c_cc[VTIME]=0;
- newtio.c_cc[VMIN]=1;
- ioctl(pInfo->fd, TCSETA, &newtio);
-
- if (priv->xq == 0)
- ioctl (pInfo->fd, KDSKBMODE, K_RAW);
- else
-#endif
- XqKbdOnOff (pInfo, 1);
- }
-
- return Success;
-}
-
-static int
-KbdOff(InputInfoPtr pInfo, int what)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- USLKbdPrivPtr priv = (USLKbdPrivPtr) pKbd->private;
-
- if (pKbd->isConsole) {
- /* Revert back to original translate scancode mode */
-#ifdef NOTYET
- if (priv->xq == 0)
- ioctl (pInfo->fd, KDSKBMODE, priv->orig_kbm);
- else
-#endif
- XqKbdOnOff (pInfo, 0);
-
- ioctl (pInfo->fd, PIO_KEYMAP, &priv->keymap);
- ioctl(pInfo->fd, TCSETA, &priv->kbdtty);
- }
-
- return Success;
-}
-
-#define ModifierSet(k) ((modifiers & (k)) == (k))
-
-static Bool
-SpecialKey(InputInfoPtr pInfo, int key, Bool down, int modifiers)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-
- if(!pKbd->vtSwitchSupported)
- return FALSE;
-
- if ((!ModifierSet(ShiftMask)) && ((ModifierSet(ControlMask | AltMask)) ||
- (ModifierSet(ControlMask | AltLangMask)))) {
- if (VTSwitchEnabled && !xf86Info.vtSysreq) {
- switch (key) {
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
- if (down) {
- int sts = key - KEY_F1;
- if (sts != xf86Info.vtno) {
- ioctl(pInfo->fd, VT_SWITCH, sts);
- }
- return TRUE;
- }
- case KEY_F11:
- case KEY_F12:
- if (down) {
- int sts = key - KEY_F11 + 10;
- if (sts != xf86Info.vtno) {
- ioctl(pInfo->fd, VT_SWITCH, sts);
- }
- return TRUE;
- }
- }
- }
- }
-#ifdef USE_VT_SYSREQ
- if (VTSwitchEnabled && xf86Info.vtSysreq) {
- switch (key) {
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
- if (VTSysreqToggle && down) {
- ioctl(pInfo->fd, VT_ACTIVATE, key - KEY_F1);
- VTSysreqToggle = FALSE;
- return TRUE;
- }
- break;
- case KEY_F11:
- case KEY_F12:
- if (VTSysreqToggle && down) {
- ioctl(pInfo->fd, VT_ACTIVATE, key - KEY_F11 + 10);
- VTSysreqToggle = FALSE;
- return TRUE;
- }
- break;
- /* Ignore these keys -- ie don't let them cancel an alt-sysreq */
- case KEY_Alt:
- case KEY_AltLang:
- break;
- case KEY_SysReqest:
- if (!(ModifierSet(ShiftMask) || ModifierSet(ControlMask))) {
- if ((ModifierSet(AltMask) || ModifierSet(AltLangMask)) && down)
- VTSysreqToggle = TRUE;
- }
- break;
- default:
- /*
- * We only land here when Alt-SysReq is followed by a
- * non-switching key.
- */
- if (VTSysreqToggle)
- VTSysreqToggle = FALSE;
- }
- }
-#endif /* USE_VT_SYSREQ */
- return FALSE;
-}
-
-#ifdef NOTYET
-static void
-stdReadInput(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- unsigned char rBuf[64];
- int nBytes, i;
-
- if ((nBytes = read( pInfo->fd, (char *)rBuf, sizeof(rBuf))) > 0) {
- for (i = 0; i < nBytes; i++) {
- pKbd->PostEvent(pInfo, rBuf[i] & 0x7f, rBuf[i] & 0x80 ? FALSE : TRUE);
- }
- }
-}
-#endif
-
-static Bool
-OpenKeyboard(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- USLKbdPrivPtr priv = (USLKbdPrivPtr) pKbd->private;
- int i;
- KbdProtocolId prot = PROT_UNKNOWN_KBD;
- char *s;
-
- s = xf86SetStrOption(pInfo->options, "Protocol", NULL);
- for (i = 0; protocols[i].name; i++) {
- if (xf86NameCmp(s, protocols[i].name) == 0) {
- prot = protocols[i].id;
- break;
- }
- }
-
- switch (prot) {
- case PROT_STD:
-#ifdef NOTYET
- pInfo->read_input = stdReadInput;
- priv->xq = 0;
- break;
-#endif
- case PROT_XQUEUE:
- pInfo->read_input = NULL; /* Handled by the XQUEUE signal handler */
- priv->xq = 1;
- break;
- default:
- xf86Msg(X_ERROR,"\"%s\" is not a valid keyboard protocol name\n", s);
- xfree(s);
- return FALSE;
- }
-
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, s);
- xfree(s);
-
- s = xf86SetStrOption(pInfo->options, "Device", NULL);
- if (s == NULL) {
- pInfo->fd = xf86Info.consoleFd;
- pKbd->isConsole = TRUE;
- } else {
- pInfo->fd = open(s, O_RDONLY | O_NONBLOCK | O_EXCL);
- if (pInfo->fd == -1) {
- xf86Msg(X_ERROR, "%s: cannot open \"%s\"\n", pInfo->name, s);
- xfree(s);
- return FALSE;
- }
- pKbd->isConsole = FALSE;
- xfree(s);
- }
-
- if (pKbd->isConsole)
- pKbd->vtSwitchSupported = TRUE;
-
- return TRUE;
-}
-
-Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- KbdDevPtr pKbd = pInfo->private;
-
- pKbd->KbdInit = KbdInit;
- pKbd->KbdOn = KbdOn;
- pKbd->KbdOff = KbdOff;
- pKbd->Bell = SoundBell;
- pKbd->SetLeds = SetKbdLeds;
- pKbd->GetLeds = GetKbdLeds;
- pKbd->SetKbdRepeat = SetKbdRepeat;
- pKbd->KbdGetMapping = KbdGetMapping;
- pKbd->SpecialKey = SpecialKey;
- pKbd->OpenKeyboard = OpenKeyboard;
-
- pKbd->GetSpecialKey = NULL;
- pKbd->RemapScanCode = ATScancode;
- pKbd->vtSwitchSupported = FALSE;
-
- pKbd->private = xcalloc(sizeof(USLKbdPrivRec), 1);
- if (pKbd->private == NULL) {
- xf86Msg(X_ERROR,"can't allocate keyboard OS private data\n");
- return FALSE;
- }
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_kbd.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_kbd.h
deleted file mode 100644
index a65986fe5..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_kbd.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/usl/usl_kbd.h,v 1.2 2005/11/08 06:33:30 jkj Exp $ */
-#ifndef SCO_KBD_HDR
-#define SCO_KBD_HDR
-
-typedef struct {
- int orig_kbm;
- struct termio kbdtty;
- keymap_t keymap, noledmap;
- int xq;
-} USLKbdPrivRec, *USLKbdPrivPtr;
-
-extern void KbdGetMapping(InputInfoPtr pInfo, KeySymsPtr pKeySyms,
- CARD8 *pModMap);
-#endif /* SCO_KBD_HDR */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_mouse.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_mouse.c
deleted file mode 100644
index 708a08e11..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_mouse.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/usl/usl_mouse.c,v 1.3 2005/11/10 02:41:20 jkj Exp $ */
-
-/*
- * Copyright 2005 Kean Johnston
- * Copyright 1999 by The XFree86 Project, Inc.
- *
- * 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, and that the names of The XFree86 Project, Inc
- * and Kean Johnston not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- * The XFree86 Project, Inc and Kean Johnston make no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THE XFREE86 PROJECT, INC AND KEAN JOHNSTON DISCLAIM ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THOMAS ROELLm DAVID WEXELBLAT
- * OR KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- * THIS SOFTWARE.
- *
- */
-
-#include "X.h"
-#include "compiler.h"
-#include "xf86.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "mipointer.h"
-#include "usl_xqueue.h"
-
-static int
-SupportedInterfaces(void)
-{
- return MSE_MISC;
-}
-
-static const char *internalNames[] = {
- "Xqueue",
- NULL
-};
-
-static const char **
-BuiltinNames(void)
-{
- return internalNames;
-}
-
-static const char *
-DefaultProtocol (void)
-{
- return "Xqueue";
-}
-
-static Bool
-CheckProtocol(const char *protocol)
-{
- int i;
-
- for (i = 0; internalNames[i]; i++)
- if (xf86NameCmp(protocol, internalNames[i]) == 0)
- return TRUE;
- return FALSE;
-}
-
-static int
-OsMouseProc(DeviceIntPtr pPointer, int what)
-{
- InputInfoPtr pInfo;
- MouseDevPtr pMse;
- unsigned char map[9];
- int ret;
-
- pInfo = pPointer->public.devicePrivate;
- pMse = pInfo->private;
- pMse->device = pPointer;
-
- switch (what) {
- case DEVICE_INIT:
- pPointer->public.on = FALSE;
-
- for (ret = 0; ret <= 8; ret++)
- map[ret] = ret;
-
- InitPointerDeviceStruct((DevicePtr)pPointer, map, 8,
- miPointerGetMotionEvents, pMse->Ctrl,
- miPointerGetMotionBufferSize());
- /* X valuator */
- xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 0);
-
- /* Y valuator */
- xf86InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 1);
-
- xf86MotionHistoryAllocate(pInfo);
- break;
-
- case DEVICE_ON:
- pMse->lastButtons = 0;
- pMse->emulateState = 0;
- pPointer->public.on = TRUE;
- XqMseOnOff (pInfo, 1);
- break;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- pPointer->public.on = FALSE;
- XqMseOnOff (pInfo, 0);
- break;
- }
- return Success;
-}
-
-static Bool
-OsMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
-{
- /* This is called when the protocol is "Xqueue" */
- MouseDevPtr pMse;
-
- pMse = pInfo->private;
- pMse->protocol = protocol;
- xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
-
- /* Collect the options, and process the common options. */
- xf86CollectInputOptions(pInfo, NULL, NULL);
- xf86ProcessCommonOptions(pInfo, pInfo->options);
-
- pInfo->fd = -1;
-#if 0
- /* Make sure we can open the mouse */
- pInfo->fd = open ("/dev/mouse", O_RDONLY | O_NONBLOCK);
-
- if (pInfo->fd < 0) {
- if (xf86GetAllowMouseOpenFail()) {
- xf86Msg(X_WARNING, "%s: cannot open /dev/mouse (%s)\n",
- pInfo->name, strerror(errno));
- } else {
- xf86Msg(X_ERROR, "%s: cannot open /dev/mouse (%s)\n",
- pInfo->name, strerror(errno));
- xfree(pMse);
- return FALSE;
- }
- }
-#endif
-
- /* Process common mouse options (like Emulate3Buttons, etc). */
- pMse->CommonOptions(pInfo);
-
- /* Setup the local procs. */
- pInfo->device_control = OsMouseProc;
- pInfo->read_input = NULL; /* Handled by the XQUEUE signal handler */
-
- pInfo->flags |= XI86_CONFIGURED;
- return TRUE;
-}
-
-OSMouseInfoPtr
-xf86OSMouseInit(int flags)
-{
- OSMouseInfoPtr p;
-
- p = xcalloc(sizeof(OSMouseInfoRec), 1);
- if (!p)
- return NULL;
-
- p->SupportedInterfaces = SupportedInterfaces;
- p->BuiltinNames = BuiltinNames;
- p->DefaultProtocol = DefaultProtocol;
- p->CheckProtocol = CheckProtocol;
- p->PreInit = OsMousePreInit;
- return p;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_video.c
deleted file mode 100644
index 2c85ea92c..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_video.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/usl/usl_video.c,v 1.2 2005/11/08 06:33:30 jkj Exp $ */
-/*
- * Copyrught 2005 Kean Johnston <jkj@sco.com>
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- *
- * 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, and that the names of Thomas Roell, David Dawes
- * and Kean Johnston not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- * Thomas Roell, David Dawes and Kean Johnston make no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL, DAVID DAWES AND KEAN JOHNSTON DISCLAIM ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THOMAS ROELLm DAVID WEXELBLAT
- * OR KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- * THIS SOFTWARE.
- *
- */
-/* $XConsortium$ */
-
-#include "X.h"
-
-#define _NEED_SYSI86
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86OSpriv.h"
-
-#ifndef MAP_FAILED
-#define MAP_FAILED ((void *)-1)
-#endif
-
-static Bool
-linearVidMem(void)
-{
- return TRUE;
-}
-
-static pointer
-mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
-{
- pointer base;
- int fd;
-
- fd = open(DEV_MEM, (flags & VIDMEM_READONLY) ? O_RDONLY : O_RDWR);
- if (fd < 0) {
- FatalError("xf86MapVidMem: failed to open %s (%s)\n",
- DEV_MEM, strerror(errno));
- }
- base = mmap((caddr_t)0, Size, (flags & VIDMEM_READONLY) ?
- PROT_READ : (PROT_READ | PROT_WRITE),
- MAP_SHARED, fd, (off_t)Base);
- close(fd);
-
- if (base == MAP_FAILED) {
- FatalError("%s: Could not mmap framebuffer [s=%x,a=%x] (%s)\n",
- "xf86MapVidMem", Size, Base, strerror(errno));
- }
- return(base);
-}
-
-/* ARGSUSED */
-static void
-unmapVidMem(int ScreenNum, pointer Base, unsigned long Size)
-{
- munmap(Base, Size);
-}
-
-/*
- * For some SVR4 versions, a 32-bit read is done for the first location
- * in each page when the page is first mapped. If this is done while
- * memory access is enabled for regions that have read side-effects,
- * this can cause unexpected results, including lockups on some hardware.
- * This function is called to make sure each page is mapped while it is
- * safe to do so.
- */
-
-#define X_PAGE_SIZE 4096
-
-static void
-readSideEffects(int ScreenNum, pointer Base, unsigned long Size)
-{
- unsigned long base, end, addr;
- CARD32 val;
-
- base = (unsigned long)Base;
- end = base + Size;
-
- for (addr = base; addr < end; addr += X_PAGE_SIZE)
- val = *(volatile CARD32 *)addr;
-}
-
-void
-xf86OSInitVidMem(VidMemInfoPtr pVidMem)
-{
- pVidMem->linearSupported = linearVidMem();
- pVidMem->mapMem = mapVidMem;
- pVidMem->unmapMem = unmapVidMem;
- pVidMem->readSideEffects = readSideEffects;
- pVidMem->initialised = TRUE;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_vtsw.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_vtsw.c
deleted file mode 100644
index d15a24149..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_vtsw.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/usl/usl_vtsw.c,v 1.2 2005/11/08 06:33:30 jkj Exp $ */
-/*
- * Copyright 2005 by Kean Johnston <jkj@sco.com>
- * Copyright 1993 by David Wexelblat <dwex@goblin.org>
- * Copyright 1993 by David McCullough <davidm@stallion.oz.au>
- *
- * 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, and that the name of David Wexelblat not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. David Wexelblat makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium$ */
-
-#include "X.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-/*
- * Handle the VT-switching interface for SCO UnixWare / OpenServer 6
- */
-
-/*
- * This function is the signal handler for the VT-switching signal. It
- * is only referenced inside the OS-support layer. NOTE: we do NOT need
- * to re-arm the signal here, since we used sigaction() to set the signal
- * disposition in usl_init.c. If we had used signal(), we would need to
- * re-arm the signal here. All we need to do now is record the fact that
- * we got the signal. XFree86 handles the rest.
- */
-void
-xf86VTRequest(int sig)
-{
- xf86Info.vtRequestsPending = TRUE;
- return;
-}
-
-Bool
-xf86VTSwitchPending(void)
-{
- return(xf86Info.vtRequestsPending ? TRUE : FALSE);
-}
-
-static int usl_ledstatus = -1;
-static unsigned int usl_ledstate = 0;
-
-Bool
-xf86VTSwitchAway(void)
-{
- usl_ledstatus = ioctl(xf86Info.consoleFd, KDGETLED, &usl_ledstate);
-
- xf86Info.vtRequestsPending = FALSE;
- if (ioctl(xf86Info.consoleFd, VT_RELDISP, 1) < 0) {
- return(FALSE);
- } else {
- return(TRUE);
- }
-}
-
-Bool
-xf86VTSwitchTo(void)
-{
- xf86Info.vtRequestsPending = FALSE;
- if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ) < 0) {
- return(FALSE);
- } else {
- if (usl_ledstatus >= 0) {
- ioctl (xf86Info.consoleFd, KDSETLED, usl_ledstate);
- }
- usl_ledstatus = -1;
-
- /*
- * Convince the console driver this screen is in graphics mode,
- * otherwise it assumes it can do more to the screen than it should.
- */
- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0) {
- ErrorF("Failed to set graphics mode (%s)\n", strerror(errno));
- }
-
- return TRUE;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_xqueue.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_xqueue.c
deleted file mode 100644
index 8b66ee1f8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_xqueue.c
+++ /dev/null
@@ -1,360 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/usl/usl_xqueue.c,v 1.3 2005/11/10 02:41:20 jkj Exp $ */
-/*
- * Copyright 2005 by Kean Johnston <jkj@sco.com>
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1993-1999 by The XFree86 Project, Inc.
- *
- * 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, and that the name of the copyright holders not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. The copyright holders make no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium$ */
-
-#include "X.h"
-#include "compiler.h"
-
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-#include "xf86Xinput.h"
-#include "xf86OSmouse.h"
-#include "xf86OSKbd.h"
-#include "usl_xqueue.h"
-
-#ifdef XKB
-#include "inputstr.h"
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
-#include <X11/extensions/XKBsrv.h>
-extern Bool noXkbExtension;
-#endif
-
-#include "xf86Xinput.h"
-#include "mipointer.h"
-
-#if !defined(XQ_WHEEL)
-# define XQ_WHEEL 4
-#endif
-
-/*
- * Implementation notes
- *
- * This code is based on a mixture of the original XFree86 sysv/xqueue.c
- * and information gathered from the SCO X server code (no actual code
- * was used, just the principles).
- *
- * The XFree86 XQUEUE code went to some considerable lengths to implement
- * what it calls "asynchronous XQUEUE". This involved creating a pipe,
- * and writing to that pipe each time an XQUEUE signal is received. The
- * one end of that pipe was then added to the list of selectable file
- * descriptors with AddEnabledDevice(). I completely fail to see the need
- * for this, and this code does not implement that mechanism. The server
- * will be interrupted anyway by the XQUEUE driver, so whether we pull the
- * events off the queue at the time we receive the signal or whether we
- * write to a pipe and then have the main select() loop stop and call us,
- * it makes no difference I can fathom.
- *
- * The code also differs from the original XFree86 code in that it maintains
- * local variables for the number of devices initialized. The original code
- * stored that information in the private data pointer of the mouse structure,
- * but this same code is used for both the keyboard and the mouse, so that
- * was changed.
- *
- * Part of the difficulty in dealing with XQUEUE is that it is a single
- * interface to two devices. The recent changes in XFree86/Xorg try to
- * treat the mouse and keyboard as discrete devices, and the code is
- * structured in such a way that they should be able to be independently
- * opened and closed. But we can't do that with XQUEUE, so we have to
- * centralize XQUEUE access here in this module.
- */
-
-static xqEventQueue *xqQaddr = NULL;
-static int xqSigEnable = 1;
-static int xqEnableCount = 0;
-static struct kd_quemode xqMode;
-
-/*
- * These two pointers are set when the keyboard/mouse handler procs
- * are called to turn them on or off. This is so that we can call the
- * correct PostEvent for the device.
- */
-static InputInfoPtr xqMouse = NULL;
-static InputInfoPtr xqKeyboard = NULL;
-
-static void XqSignalHandler (int signo);
-
-/*
- * Private functions
- */
-static void
-XqReset (void)
-{
- if (xqEnableCount > 0) {
- xqQaddr->xq_head = xqQaddr->xq_tail;
- xqQaddr->xq_sigenable = xqSigEnable;
- }
-}
-
-#ifdef NOTNEEDED
-static void
-XqLock (void)
-{
- xqSigEnable = 0;
- if (xqEnableCount > 0) {
- xqQaddr->xq_sigenable = xqSigEnable;
- }
-}
-
-static void
-XqUnlock (void)
-{
- xqSigEnable = 1;
- if (xqEnableCount > 0) {
- xqQaddr->xq_sigenable = xqSigEnable;
- }
-}
-#endif /* NOTNEEDED */
-
-/*
- * Since this code is shared between two devices, we need to keep track
- * of how many times we've been enabled or disabled. For example, if the
- * keyboard has been turned off, but the mouse hasn't, then we do not
- * want the whole queue off. Only when both devices are turned off do we
- * actually disable Xqueue mode. When either device is turned on, we
- * enable it.
- */
-static int
-XqEnable (InputInfoPtr pInfo)
-{
- struct sigaction xqsig;
- static int msefd = -1;
-
- if (msefd == -1) {
- msefd = open ("/dev/mouse", O_RDONLY | O_NONBLOCK);
-#if 0
- msefd = open ("/dev/mouse", O_RDONLY | O_NONBLOCK | O_NOCTTY);
- if (msefd < 0) {
- /*
- * Try giving it a controlling tty
- */
- msefd = open (ttyname(xf86Info.consoleFd), O_RDWR | O_NONBLOCK);
- if (msefd >= 0)
- close (msefd);
- msefd = open ("/dev/mouse", O_RDONLY | O_NONBLOCK | O_NOCTTY);
- if (msefd < 0)
- sleep(2);
- }
-#endif
- }
-
- if (msefd < 0) {
- if (xf86GetAllowMouseOpenFail()) {
- ErrorF("%s: cannot open /dev/mouse (%s)\n",
- ttyname(xf86Info.consoleFd), strerror(errno));
- } else {
- sleep(5);
- FatalError ("%s: cannot open /dev/mouse (%s)\n",
- ttyname(xf86Info.consoleFd), strerror(errno));
- }
- }
-
- if (xqEnableCount++ == 0) {
- xqMode.qaddr = 0;
- ioctl (xf86Info.consoleFd, KDQUEMODE, NULL);
-
- /*
- * Note: We need to make sure the signal is armed before we enable
- * XQUEUE mode, so that if we get events immediately after the ioctl
- * we dont have an unhandled signal coming to the Xserver.
- * Also note that we use sigaction, so that we do not have to re-arm
- * the signal every time it is delivered, which just slows things
- * down (setting a signal is a fairly expensive operation).
- */
-
- xqsig.sa_handler = XqSignalHandler;
- sigfillset (&xqsig.sa_mask);
- xqsig.sa_flags = 0;
- sigaction (SIGUSR2, &xqsig, NULL);
-
- /*
- * This is a fairly large queue size. Since we are reacting to events
- * asynchronously, its best for performance if we deal with as many
- * events as possible, and high resolution mice generate a lot of
- * events.
- */
- xqMode.qsize = 64;
- xqMode.signo = SIGUSR2;
- xqMode.qaddr = 0;
- if (ioctl (xf86Info.consoleFd, KDQUEMODE, &xqMode) < 0) {
- xf86Msg (X_ERROR, "%s: could not set XQUEUE mode (%s)", pInfo->name,
- strerror(errno));
- xqEnableCount--;
-
- xqsig.sa_handler = SIG_DFL;
- sigfillset (&xqsig.sa_mask);
- xqsig.sa_flags = 0;
- sigaction (SIGUSR2, &xqsig, NULL);
-
- return !Success;
- }
-
- /*
- * We're in business. The workstation is now in XQUEUE mode.
- */
- xqQaddr = (xqEventQueue *)xqMode.qaddr;
- xqQaddr->xq_sigenable = 0; /* LOCK */
- nap(500);
- XqReset();
- }
- return Success;
-}
-
-static int
-XqDisable (InputInfoPtr pInfo)
-{
- struct sigaction xqsig;
-
- if (xqEnableCount-- == 1) {
- xqQaddr->xq_sigenable = 0; /* LOCK */
-
- if (ioctl (xf86Info.consoleFd, KDQUEMODE, NULL) < 0) {
- xf86Msg (X_ERROR, "%s: could not unset XQUEUE mode (%s)", pInfo->name,
- strerror(errno));
- xqEnableCount++;
- return !Success;
- }
-
- xqsig.sa_handler = SIG_DFL;
- sigfillset (&xqsig.sa_mask);
- xqsig.sa_flags = 0;
- sigaction (SIGUSR2, &xqsig, NULL);
- }
-
- return Success;
-}
-
-/*
- * XQUEUE signal handler. This is what goes through the list of events
- * we've already received and dispatches them to either the keyboard or
- * mouse event poster.
- */
-static void
-XqSignalHandler (int signo)
-{
- xqEvent *xqEvents = xqQaddr->xq_events;
- int xqHead = xqQaddr->xq_head;
- xEvent xE;
- MouseDevPtr pMse = NULL;
- KbdDevPtr pKbd = NULL;
- signed char dx, dy;
-
- if (xqMouse)
- pMse = (MouseDevPtr)xqMouse->private;
- if (xqKeyboard)
- pKbd = (KbdDevPtr)xqKeyboard->private;
-
- while (xqHead != xqQaddr->xq_tail) {
-
- switch (xqEvents[xqHead].xq_type) {
- case XQ_MOTION:
- dx = (signed char)xqEvents[xqHead].xq_x;
- dy = (signed char)xqEvents[xqHead].xq_y;
- if (pMse)
- pMse->PostEvent(xqMouse, ~(xqEvents[xqHead].xq_code) & 0x07,
- (int)dx, (int)dy, 0, 0);
- break;
-
- case XQ_BUTTON:
- if (pMse)
- pMse->PostEvent(xqMouse, ~(xqEvents[xqHead].xq_code) & 0x07,
- 0, 0, 0, 0);
- break;
-
- case XQ_WHEEL:
- if (pMse) {
- int wbut = pMse->lastButtons, dz;
- if (xqEvents[xqHead].xq_code == 1)
- dz = 1;
- else
- dz = -1;
- pMse->PostEvent(xqMouse, wbut, 0, 0, dz, 0);
- }
- break;
-
- case XQ_KEY:
- if (pKbd)
- pKbd->PostEvent(xqKeyboard, xqEvents[xqHead].xq_code & 0x7f,
- xqEvents[xqHead].xq_code & 0x80 ? FALSE : TRUE);
- break;
-
- default:
- xf86Msg(X_WARNING, "XQUEUE: unknown event type %d\n",
- xqEvents[xqHead].xq_type);
- break;
- }
-
- xqHead++;
- if (xqHead == xqQaddr->xq_size)
- xqHead = 0;
- xf86Info.inputPending = TRUE;
- }
-
- XqReset();
-}
-
-/*
- * Public functions
- */
-int
-XqMseOnOff (InputInfoPtr pInfo, int on)
-{
- if (on) {
- if (xqMouse) {
- if (xqMouse != pInfo)
- xf86Msg(X_WARNING, "XqMseOnOff: mouse pointer structure changed!\n");
- xqMouse = pInfo;
- } else {
- xqMouse = pInfo;
- return XqEnable(pInfo);
- }
- } else {
- xqMouse = NULL;
- return XqDisable(pInfo);
- }
- return Success;
-}
-
-int
-XqKbdOnOff (InputInfoPtr pInfo, int on)
-{
- if (on) {
- if (xqKeyboard) {
- if (xqKeyboard != pInfo)
- xf86Msg(X_WARNING, "XqKbdOnOff: keyboard pointer structure changed!\n");
- xqKeyboard = pInfo;
- } else {
- xqKeyboard = pInfo;
- return XqEnable(pInfo);
- }
- } else {
- xqKeyboard = NULL;
- return XqDisable(pInfo);
- }
- return Success;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_xqueue.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_xqueue.h
deleted file mode 100644
index 2a777accf..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/usl/usl_xqueue.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/usl/usl_xqueue.h,v 1.2 2005/11/08 06:33:30 jkj Exp $ */
-
-#ifndef _XF86_USL_XQUEUE_H_
-#define _XF86_USL_XQUEUE_H_
-
-extern int XqMseOnOff (InputInfoPtr pInfo, int on);
-extern int XqKbdOnOff (InputInfoPtr pInfo, int on);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86OSKbd.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86OSKbd.h
deleted file mode 100644
index 344f7e901..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86OSKbd.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86OSKbd.h,v 1.5tsi Exp $ */
-/*
- * Copyright (c) 2002-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- *
- * Author: Ivan Pascal.
- */
-
-#include "xf86Xinput.h"
-
-Bool ATScancode(InputInfoPtr pInfo, int *scanCode);
-
-/* Public interface to OS-specific keyboard support. */
-
-typedef int (*KbdInitProc)(InputInfoPtr pInfo, int what);
-typedef int (*KbdOnProc)(InputInfoPtr pInfo, int what);
-typedef int (*KbdOffProc)(InputInfoPtr pInfo, int what);
-typedef void (*BellProc)(InputInfoPtr pInfo,
- int loudness, int pitch, int duration);
-typedef void (*SetLedsProc)(InputInfoPtr pInfo, int leds);
-typedef int (*GetLedsProc)(InputInfoPtr pInfo);
-typedef void (*SetKbdRepeatProc)(InputInfoPtr pInfo, char rad);
-typedef void (*KbdGetMappingProc)(InputInfoPtr pInfo,
- KeySymsPtr pKeySyms, CARD8* pModMap);
-typedef int (*GetSpecialKeyProc)(InputInfoPtr pInfo, int scanCode);
-typedef Bool (*SpecialKeyProc)(InputInfoPtr pInfo,
- int key, Bool down, int modifiers);
-typedef int (*RemapScanCodeProc)(InputInfoPtr pInfo, int *scanCode);
-typedef Bool (*OpenKeyboardProc)(InputInfoPtr pInfo);
-typedef void (*PostEventProc)(InputInfoPtr pInfo,
- unsigned int key, Bool down);
-typedef struct {
- int begin;
- int end;
- unsigned char *map;
-} TransMapRec, *TransMapPtr;
-
-typedef struct {
- KbdInitProc KbdInit;
- KbdOnProc KbdOn;
- KbdOffProc KbdOff;
- BellProc Bell;
- SetLedsProc SetLeds;
- GetLedsProc GetLeds;
- SetKbdRepeatProc SetKbdRepeat;
- KbdGetMappingProc KbdGetMapping;
- RemapScanCodeProc RemapScanCode;
- GetSpecialKeyProc GetSpecialKey;
- SpecialKeyProc SpecialKey;
-
- OpenKeyboardProc OpenKeyboard;
- PostEventProc PostEvent;
-
- int rate;
- int delay;
- int bell_pitch;
- int bell_duration;
- Bool autoRepeat;
- unsigned long leds;
- unsigned long xledsMask;
- unsigned long keyLeds;
- int scanPrefix;
- Bool vtSwitchSupported;
- Bool CustomKeycodes;
- Bool noXkb;
- Bool isConsole;
- TransMapPtr scancodeMap;
- TransMapPtr specialMap;
-
- /* os specific */
- pointer private;
- int kbdType;
- int consType;
- int wsKbdType;
- Bool sunKbd;
- Bool Panix106;
-
-} KbdDevRec, *KbdDevPtr;
-
-typedef enum {
- PROT_STD,
- PROT_XQUEUE,
- PROT_WSCONS,
- PROT_USB,
- PROT_UNKNOWN_KBD
-} KbdProtocolId;
-
-typedef struct {
- const char *name;
- KbdProtocolId id;
-} KbdProtocolRec;
-
-Bool xf86OSKbdPreInit(InputInfoPtr pInfo);
-
-/* Adjust this when the kbd interface changes. */
-
-/*
- * History:
- *
- * 1.0.0 - Initial version.
- */
-
-#define OS_KBD_VERSION_MAJOR 1
-#define OS_KBD_VERSION_MINOR 0
-#define OS_KBD_VERSION_PATCH 0
-
-#define OS_KBD_VERSION_CURRENT \
- BUILTIN_INTERFACE_VERSION_NUMERIC(OS_KBD_VERSION_MAJOR, \
- OS_KBD_VERSION_MINOR, \
- OS_KBD_VERSION_PATCH)
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86OSmouse.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86OSmouse.h
deleted file mode 100644
index 9db1bac19..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86OSmouse.h
+++ /dev/null
@@ -1,295 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86OSmouse.h,v 1.24 2003/11/03 05:11:51 tsi Exp $ */
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* Public interface to OS-specific mouse support. */
-
-#ifndef _XF86OSMOUSE_H_
-#define _XF86OSMOUSE_H_
-
-#include "xf86Xinput.h"
-
-/* Mouse interface classes */
-#define MSE_NONE 0x00
-#define MSE_SERIAL 0x01 /* serial port */
-#define MSE_BUS 0x02 /* old bus mouse */
-#define MSE_PS2 0x04 /* standard read-only PS/2 */
-#define MSE_XPS2 0x08 /* extended PS/2 */
-#define MSE_AUTO 0x10 /* auto-detect (PnP) */
-#define MSE_MISC 0x20 /* The OS layer will identify the
- * specific protocol names that are
- * supported for this class. */
-
-/* Mouse Protocol IDs. */
-typedef enum {
- PROT_UNKNOWN = -2,
- PROT_UNSUP = -1, /* protocol is not supported */
- PROT_MS = 0,
- PROT_MSC,
- PROT_MM,
- PROT_LOGI,
- PROT_LOGIMAN,
- PROT_MMHIT,
- PROT_GLIDE,
- PROT_IMSERIAL,
- PROT_THINKING,
- PROT_ACECAD,
- PROT_VALUMOUSESCROLL,
- PROT_PS2,
- PROT_GENPS2,
- PROT_IMPS2,
- PROT_EXPPS2,
- PROT_THINKPS2,
- PROT_MMPS2,
- PROT_GLIDEPS2,
- PROT_NETPS2,
- PROT_NETSCPS2,
- PROT_BM,
- PROT_AUTO,
- PROT_SYSMOUSE,
- PROT_NUMPROTOS /* This must always be last. */
-} MouseProtocolID;
-
-struct _MouseDevRec;
-
-typedef int (*GetInterfaceTypesProc)(void);
-typedef const char **(*BuiltinNamesProc)(void);
-typedef Bool (*CheckProtocolProc)(const char *protocol);
-typedef Bool (*BuiltinPreInitProc)(InputInfoPtr pInfo, const char *protocol,
- int flags);
-typedef const char *(*DefaultProtocolProc)(void);
-typedef const char *(*SetupAutoProc)(InputInfoPtr pInfo, int *protoPara);
-typedef void (*SetResProc)(InputInfoPtr pInfo, const char* protocol, int rate,
- int res);
-typedef const char *(*FindDeviceProc)(InputInfoPtr pInfo, const char *protocol,
- int flags);
-typedef const char *(*GuessProtocolProc)(InputInfoPtr pInfo, int flags);
-
-/*
- * OSMouseInfoRec is used to pass information from the OSMouse layer to the
- * OS-independent mouse driver.
- */
-typedef struct {
- GetInterfaceTypesProc SupportedInterfaces;
- BuiltinNamesProc BuiltinNames;
- CheckProtocolProc CheckProtocol;
- BuiltinPreInitProc PreInit;
- DefaultProtocolProc DefaultProtocol;
- SetupAutoProc SetupAuto;
- SetResProc SetPS2Res;
- SetResProc SetBMRes;
- SetResProc SetMiscRes;
- FindDeviceProc FindDevice;
- GuessProtocolProc GuessProtocol;
-} OSMouseInfoRec, *OSMouseInfoPtr;
-
-/*
- * SupportedInterfaces: Returns the mouse interface types that the OS support.
- * If MSE_MISC is returned, then the BuiltinNames and
- * CheckProtocol should be set.
- *
- * BuiltinNames: Returns the names of the protocols that are fully handled
- * in the OS-specific code. These are names that don't appear
- * directly in the main "mouse" driver.
- *
- * CheckProtocol: Checks if the protocol name given is supported by the
- * OS. It should return TRUE for both "builtin" protocols and
- * protocols of type MSE_MISC that are supported by the OS.
- *
- * PreInit: The PreInit function for protocols that are builtin. This
- * function is passed the protocol name.
- *
- * DefaultProtocol: Returns the name of a default protocol that should be used
- * for the OS when none has been supplied in the config file.
- * This should only be set when there is a reasonable default.
- *
- * SetupAuto: This function can be used to do OS-specific protocol
- * auto-detection. It returns the name of the detected protocol,
- * or NULL when detection fails. It may also adjust one or more
- * of the "protoPara" values for the detected protocol by setting
- * then to something other than -1. SetupAuto gets called in two
- * ways. The first is before any devices have been opened. This
- * can be used when the protocol "Auto" always maps to a single
- * protocol type. The second is with the device open, allowing
- * OS-specific probing to be done.
- *
- * SetPS2Res: Set the resolution and sample rate for MSE_PS2 and MSE_XPS2
- * protocol types.
- *
- * SetBMRes: Set the resolution and sample rate for MSE_BM protocol types.
- *
- * SetMiscRes: Set the resolution and sample rate for MSE_MISC protocol types.
- *
- * FindDevice: This function gets called when no Device has been specified
- * in the config file. OS-specific methods may be used to guess
- * which input device to use. This function is called after the
- * pre-open attempts at protocol discovery are done, but before
- * the device is open. I.e., after the first SetupAuto() call,
- * after the DefaultProtocol() call, but before the PreInit()
- * call. Available protocol information may be used in locating
- * the default input device.
- *
- * GuessProtocol: A last resort attempt at guessing the mouse protocol by
- * whatever OS-specific means might be available. OS-independent
- * things should be in the mouse driver. This function gets
- * called after the mouse driver's OS-independent methods have
- * failed.
- */
-
-extern OSMouseInfoPtr xf86OSMouseInit(int flags);
-
-/* Adjust this when the mouse interface changes. */
-
-/*
- * History:
- *
- * 1.0.0 - Everything up to when versioning was started.
- * 1.1.0 - FindDevice and GuessProtocol added to OSMouseInfoRec
- * 1.2.0 - xisbscale added to MouseDevRec
- *
- */
-
-#define OS_MOUSE_VERSION_MAJOR 1
-#define OS_MOUSE_VERSION_MINOR 2
-#define OS_MOUSE_VERSION_PATCH 0
-
-#define OS_MOUSE_VERSION_CURRENT \
- BUILTIN_INTERFACE_VERSION_NUMERIC(OS_MOUSE_VERSION_MAJOR, \
- OS_MOUSE_VERSION_MINOR, \
- OS_MOUSE_VERSION_PATCH)
-
-#define HAVE_GUESS_PROTOCOL \
- (xf86GetBuiltinInterfaceVersion(BUILTIN_IF_OSMOUSE, 0) >= \
- BUILTIN_INTERFACE_VERSION_NUMERIC(1, 1, 0))
-
-#define HAVE_FIND_DEVICE \
- (xf86GetBuiltinInterfaceVersion(BUILTIN_IF_OSMOUSE, 0) >= \
- BUILTIN_INTERFACE_VERSION_NUMERIC(1, 1, 0))
-
-/* Z axis mapping */
-#define MSE_NOZMAP 0
-#define MSE_MAPTOX -1
-#define MSE_MAPTOY -2
-#define MSE_MAPTOZ -3
-#define MSE_MAPTOW -4
-
-/* Generalize for other axes. */
-#define MSE_NOAXISMAP MSE_NOZMAP
-
-#define MSE_MAXBUTTONS 24
-#define MSE_DFLTBUTTONS 3
-
-/*
- * Mouse device record. This is shared by the mouse driver and the OSMouse
- * layer.
- */
-
-typedef void (*checkMovementsProc)(InputInfoPtr,int, int);
-typedef void (*autoProbeProc)(InputInfoPtr, Bool, Bool);
-typedef Bool (*collectDataProc)(struct _MouseDevRec *, unsigned char);
-typedef Bool (*dataGoodProc)(struct _MouseDevRec *);
-
-typedef void (*PostMseEventProc)(InputInfoPtr pInfo, int buttons,
- int dx, int dy, int dz, int dw);
-typedef void (*MouseCommonOptProc)(InputInfoPtr pInfo);
-
-typedef struct _MouseDevRec {
- PtrCtrlProcPtr Ctrl;
- PostMseEventProc PostEvent;
- MouseCommonOptProc CommonOptions;
- DeviceIntPtr device;
- const char * mseDevice;
- const char * protocol;
- MouseProtocolID protocolID;
- MouseProtocolID oldProtocolID; /* hack */
- int class;
- int mseModel;
- int baudRate;
- int oldBaudRate;
- int sampleRate;
- int lastButtons;
- int threshold; /* acceleration */
- int num;
- int den;
- int buttons; /* # of buttons */
- int emulateState; /* automata state for 2 button mode */
- Bool emulate3Buttons;
- Bool emulate3ButtonsSoft;
- int emulate3Timeout;/* Timeout for 3 button emulation */
- Bool chordMiddle;
- Bool flipXY;
- int invX;
- int invY;
- int mouseFlags; /* Flags to Clear after opening
- * mouse dev */
- int truebuttons; /* (not used)
- * Arg to maintain before
- * emulate3buttons timer callback */
- int resolution;
- int negativeZ; /* button mask */
- int positiveZ; /* button mask */
- int negativeW; /* button mask */
- int positiveW; /* button mask */
- pointer buffer; /* usually an XISBuffer* */
- int protoBufTail;
- unsigned char protoBuf[8];
- unsigned char protoPara[8];
- unsigned char inSync; /* driver in sync with datastream */
- pointer mousePriv; /* private area */
- InputInfoPtr pInfo;
- int origProtocolID;
- const char * origProtocol;
- Bool emulate3Pending;/* timer waiting */
- CARD32 emulate3Expires;/* time to fire emulation code */
- Bool emulateWheel;
- int wheelInertia;
- int wheelButton;
- int negativeX; /* Button values. Unlike the Z and */
- int positiveX; /* W equivalents, these are button */
- int negativeY; /* values rather than button masks. */
- int positiveY;
- int wheelYDistance;
- int wheelXDistance;
- Bool autoProbe;
- checkMovementsProc checkMovements;
- autoProbeProc autoProbeMouse;
- collectDataProc collectData;
- dataGoodProc dataGood;
- int angleOffset;
- pointer pDragLock; /* drag lock area */
- int xisbscale; /* buffer size for 1 event */
- int wheelButtonTimeout;/* Timeout for the wheel button emulation */
- CARD32 wheelButtonExpires;
- int doubleClickSourceButtonMask;
- int doubleClickTargetButton;
- int doubleClickTargetButtonMask;
- int doubleClickOldSourceState;
- int lastMappedButtons;
- int buttonMap[MSE_MAXBUTTONS];
-} MouseDevRec, *MouseDevPtr;
-
-#endif /* _XF86OSMOUSE_H_ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86OSpriv.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86OSpriv.h
deleted file mode 100644
index 449e8ddd0..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86OSpriv.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86OSpriv.h,v 1.6 2003/08/24 17:37:03 dawes Exp $ */
-/*
- * Copyright (c) 1999-2000 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _XF86OSPRIV_H
-#define _XF86OSPRIV_H
-
-typedef pointer (*MapMemProcPtr)(int, unsigned long, unsigned long, int);
-typedef void (*UnmapMemProcPtr)(int, pointer, unsigned long);
-typedef pointer (*SetWCProcPtr)(int, unsigned long, unsigned long, Bool,
- MessageType);
-typedef void (*ProtectMemProcPtr)(int, pointer, unsigned long, Bool);
-typedef void (*UndoWCProcPtr)(int, pointer);
-typedef void (*ReadSideEffectsProcPtr)(int, pointer, unsigned long);
-
-typedef struct {
- Bool initialised;
- MapMemProcPtr mapMem;
- UnmapMemProcPtr unmapMem;
- ProtectMemProcPtr protectMem;
- SetWCProcPtr setWC;
- UndoWCProcPtr undoWC;
- ReadSideEffectsProcPtr readSideEffects;
- Bool linearSupported;
-} VidMemInfo, *VidMemInfoPtr;
-
-void xf86OSInitVidMem(VidMemInfoPtr);
-
-#endif /* _XF86OSPRIV_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h
deleted file mode 100644
index 7e6e60b5b..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h
+++ /dev/null
@@ -1,759 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h,v 3.94 2003/11/03 05:11:51 tsi Exp $ */
-/*
- * Copyright 1990, 1991 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1992 by David Dawes <dawes@XFree86.org>
- * Copyright 1992 by Jim Tsillas <jtsilla@damon.ccs.northeastern.edu>
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1992 by Robert Baron <Robert.Baron@ernst.mach.cs.cmu.edu>
- * Copyright 1992 by Orest Zborowski <obz@eskimo.com>
- * Copyright 1993 by Vrije Universiteit, The Netherlands
- * Copyright 1993 by David Wexelblat <dwex@XFree86.org>
- * Copyright 1994, 1996 by Holger Veit <Holger.Veit@gmd.de>
- * Copyright 1997 by Takis Psarogiannakopoulos <takis@dpmms.cam.ac.uk>
- * Copyright 1994-2003 by The XFree86 Project, Inc
- *
- * 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, and that the names of the above listed copyright holders
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. The above listed
- * copyright holders make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THE ABOVE LISTED COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/*
- * The ARM32 code here carries the following copyright:
- *
- * Copyright 1997
- * Digital Equipment Corporation. All rights reserved.
- * This software is furnished under license and may be used and copied only in
- * accordance with the following terms and conditions. Subject to these
- * conditions, you may download, copy, install, use, modify and distribute
- * this software in source and/or binary form. No title or ownership is
- * transferred hereby.
- *
- * 1) Any source code used, modified or distributed must reproduce and retain
- * this copyright notice and list of conditions as they appear in the
- * source file.
- *
- * 2) No right is granted to use any trade name, trademark, or logo of Digital
- * Equipment Corporation. Neither the "Digital Equipment Corporation"
- * name nor any trademark or logo of Digital Equipment Corporation may be
- * used to endorse or promote products derived from this software without
- * the prior written permission of Digital Equipment Corporation.
- *
- * 3) This software is provided "AS-IS" and any express or implied warranties,
- * including but not limited to, any implied warranties of merchantability,
- * fitness for a particular purpose, or non-infringement are disclaimed.
- * In no event shall DIGITAL be liable for any damages whatsoever, and in
- * particular, DIGITAL shall not be liable for special, indirect,
- * consequential, or incidental damages or damages for lost profits, loss
- * of revenue or loss of use, whether such damages arise in contract,
- * negligence, tort, under statute, in equity, at law or otherwise, even
- * if advised of the possibility of such damage.
- *
- */
-
-/* $XConsortium: xf86_OSlib.h /main/22 1996/10/27 11:06:31 kaleb $ */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h,v 1.13 2005/11/08 06:33:29 jkj Exp $ */
-
-/*
- * This is private, and should not be included by any drivers. Drivers
- * may include xf86_OSproc.h to get prototypes for public interfaces.
- */
-
-#ifndef _XF86_OSLIB_H
-#define _XF86_OSLIB_H
-
-#include <X11/Xos.h>
-#include <X11/Xfuncproto.h>
-
-/*
- * Define some things from the "ANSI" C wrappers that are needed in the
- * the core server.
- */
-#ifndef HAVE_WRAPPER_DECLS
-#define HAVE_WRAPPER_DECLS
-#undef usleep
-#define usleep(a) xf86usleep(a)
-extern void xf86usleep(unsigned long);
-extern int xf86getpagesize(void);
-extern int xf86GetErrno(void);
-typedef unsigned long xf86size_t;
-typedef signed long xf86ssize_t;
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-#include <stddef.h>
-
-/**************************************************************************/
-/* SYSV386 (SVR3, SVR4), including Solaris */
-/**************************************************************************/
-#if (defined(SYSV) || defined(SVR4)) && \
- !defined(DGUX) && !defined(sgi) && \
- (defined(sun) || defined(i386))
-# ifdef SCO325
-# ifndef _SVID3
-# define _SVID3
-# endif
-# ifndef _NO_STATIC
-# define _NO_STATIC
-# endif
-# endif
-# include <sys/ioctl.h>
-# include <signal.h>
-# include <termio.h>
-# include <sys/stat.h>
-# include <sys/types.h>
-# if defined(__SCO__) || defined(ISC)
-# include <sys/param.h>
-# endif
-
-# ifdef ISC
-# define TIOCMSET (TIOC|26) /* set all modem bits */
-# define TIOCMBIS (TIOC|27) /* bis modem bits */
-# define TIOCMBIC (TIOC|28) /* bic modem bits */
-# define TIOCMGET (TIOC|29) /* get all modem bits */
-# endif
-
-# include <errno.h>
-
-# if defined(PowerMAX_OS)
-# define HAS_USL_VTS
-# include <sys/immu.h>
-# include <sys/sysmacros.h>
-# elif defined(_NEED_SYSI86)
-# include <sys/immu.h>
-# if !(defined (sun) && defined (SVR4))
-# include <sys/region.h>
-# endif
-# include <sys/proc.h>
-# include <sys/tss.h>
-# include <sys/sysi86.h>
-# if defined(SVR4) && !defined(sun)
-# include <sys/seg.h>
-# endif /* SVR4 && !sun */
-/* V86SC_IOPL was moved to <sys/sysi86.h> on Solaris 7 and later */
-# if defined(sun) && defined (SVR4) /* Solaris? */
-# if defined(i386) || defined(__x86) /* on x86 or x64? */
-# if !defined(V86SC_IOPL) /* Solaris 7 or later? */
-# include <sys/v86.h> /* Nope */
-# endif
-# endif /* V86SC_IOPL */
-# else
-# include <sys/v86.h> /* Not solaris */
-# endif /* sun && i386 && SVR4 */
-# if defined(sun) && (defined (i386) || defined(__x86)) && defined (SVR4)
-# include <sys/psw.h>
-# endif
-# endif /* _NEED_SYSI86 */
-
-# if defined(HAS_SVR3_MMAPDRV)
-# include <sys/sysmacros.h>
-# if !defined(_NEED_SYSI86)
-# include <sys/immu.h>
-# include <sys/region.h>
-# endif
-# include <sys/mmap.h> /* MMAP driver header */
-# endif
-
-# if !defined(sun) || (!defined(sparc) && !defined(__SOL8__))
-# define HAS_USL_VTS
-# endif
-# if !defined(sun)
-# include <sys/emap.h>
-# endif
-# if defined(SCO325)
-# include <sys/vtkd.h>
-# include <sys/console.h>
-# include <sys/scankbd.h>
-# include <sys/vid.h>
-# define LED_CAP CLKED
-# define LED_NUM NLKED
-# define LED_SCR SLKED
-# elif defined(HAS_USL_VTS)
-# include <sys/at_ansi.h>
-# include <sys/kd.h>
-# include <sys/vt.h>
-# elif defined(sun)
-# include <sys/fbio.h>
-# include <sys/kbd.h>
-# include <sys/kbio.h>
-
-/* undefine symbols from <sys/kbd.h> we don't need that conflict with enum
- definitions in parser/xf86tokens.h */
-# undef STRING
-# undef LEFTALT
-# undef RIGHTALT
-
-# define LED_CAP LED_CAPS_LOCK
-# define LED_NUM LED_NUM_LOCK
-# define LED_SCR LED_SCROLL_LOCK
-# define LED_COMP LED_COMPOSE
-# endif /* sun */
-
-# if !defined(VT_ACKACQ)
-# define VT_ACKACQ 2
-# endif /* !VT_ACKACQ */
-
-# if defined(__SCO__)
-# include <sys/sysmacros.h>
-# define POSIX_TTY
-# endif /* __SCO__ */
-
-# if defined(SVR4) || defined(SCO325)
-# include <sys/mman.h>
-# if !(defined(sun) && defined (SVR4))
-# define DEV_MEM "/dev/pmem"
-# elif defined(PowerMAX_OS)
-# define DEV_MEM "/dev/iomem"
-# endif
-# ifdef SCO325
-# undef DEV_MEM
-# define DEV_MEM "/dev/mem"
-# endif
-# define CLEARDTR_SUPPORT
-# define POSIX_TTY
-# endif /* SVR4 */
-
-# ifdef ISC
-# include <termios.h>
-# define POSIX_TTY
-# endif
-
-# if defined(sun) && defined (i386) && defined (SVR4) && !defined(__SOL8__)
-# define USE_VT_SYSREQ
-# define VT_SYSREQ_DEFAULT TRUE
-# endif
-
-# if defined(ATT) && !defined(i386)
-# define i386 /* not defined in ANSI C mode */
-# endif /* ATT && !i386 */
-
-# if (defined(ATT) || defined(SVR4)) && !defined(sun)
-# ifndef __UNIXWARE__
-# ifndef XQUEUE
-# define XQUEUE
-# endif
-# endif
-# include <sys/xque.h>
-# endif /* ATT || SVR4 */
-
-# ifdef SYSV
-# if !defined(ISC) || defined(ISC202) || defined(ISC22)
-# define NEED_STRERROR
-# endif
-# endif
-
-#endif /* (SYSV || SVR4) && !DGUX */
-
-
-
-/**************************************************************************/
-/* DG/ux R4.20MU03 Intel AViion Machines */
-/**************************************************************************/
-#if defined(DGUX) && defined(SVR4)
-#include <sys/ioctl.h>
-#include <signal.h>
-#include <ctype.h>
-#include <termios.h> /* Use termios for BSD Flavor ttys */
-#include <sys/termios.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <errno.h>
-#include <sys/sysi86.h>
-#include <unistd.h>
-#include <sys/proc.h>
-#include <sys/map.h>
-#include <sys/sysmacros.h>
-#include <sys/mman.h> /* Memory handling */
-#include <sys/kd.h> /* definitios for KDENABIO KDDISABIO needed for IOPL s */
-#include <sys/kbd.h>
-#include <fcntl.h>
-#include <time.h>
-#include <sys/stream.h>
-#include <sys/ptms.h>
-
-#include <sys/socket.h>
-#include <sys/utsname.h>
-#include <sys/stropts.h>
-#include <sys/sockio.h>
-
-
-#define POSIX_TTY
-
-#undef HAS_USL_VTS
-#undef USE_VT_SYSREQ
-#undef VT_ACKACQ
-
-#define LED_CAP KBD_LED_CAPS_LOCK
-#define LED_NUM KBD_LED_NUM_LOCK
-#define LED_SCR KBD_LED_SCROLL_LOCK
-
-#define KDGKBTYPE KBD_GET_LANGUAGE
-
-
-/* General keyboard types */
-# define KB_84 2
-# define KB_101 1 /* Because ioctl(dgkeybdFd,KBD_GET_LANGUAGE,&type) gives 1=US keyboard */
-# define KB_OTHER 3
-
-#define KDSETLED KBD_SET_LED
-#define KDGETLED KBD_GET_STATE
-#undef KDMKTONE
-#define KDMKTONE KBD_TONE_HIGH
-
-
-#undef DEV_MEM
-#define DEV_MEM "/dev/mem"
-#define CLEARDTR_SUPPORT
-
-#undef VT_SYSREQ_DEFAULT
-#define VT_SYSREQ_DEFAULT FALSE /* Make sure that we dont define any VTs since DG/ux has none */
-
-#endif /* DGUX && SVR4 */
-
-/**************************************************************************/
-/* Linux or Glibc-based system */
-/**************************************************************************/
-#if defined(__linux__) || defined(__GLIBC__)
-# include <sys/ioctl.h>
-# include <signal.h>
-# include <stdlib.h>
-# include <sys/types.h>
-# include <assert.h>
-
-#ifdef __GNU__ /* GNU/Hurd */
-# define USE_OSMOUSE
-#endif
-
-# ifdef __linux__
-# include <termio.h>
-# else /* __GLIBC__ */
-# include <termios.h>
-# endif
-# ifdef __sparc__
-# include <sys/param.h>
-# endif
-
-# include <errno.h>
-
-# include <sys/stat.h>
-
-# include <sys/mman.h>
-# ifdef __linux__
-# define HAS_USL_VTS
-# include <sys/kd.h>
-# include <sys/vt.h>
-# define LDGMAP GIO_SCRNMAP
-# define LDSMAP PIO_SCRNMAP
-# define LDNMAP LDSMAP
-# define CLEARDTR_SUPPORT
-# define USE_VT_SYSREQ
-# endif
-
-# define POSIX_TTY
-
-#endif /* __linux__ || __GLIBC__ */
-
-/**************************************************************************/
-/* LynxOS AT */
-/**************************************************************************/
-#if defined(Lynx)
-
-# include <termio.h>
-# include <sys/ioctl.h>
-# include <param.h>
-# include <signal.h>
-# include <kd.h>
-# include <vt.h>
-# include <sys/stat.h>
-
-# include <errno.h>
-extern int errno;
-
-/* smem_create et.al. to access physical memory */
-# include <smem.h>
-
-/* keyboard types */
-# define KB_84 1
-# define KB_101 2
-# define KB_OTHER 3
-
-/* atc drivers ignores argument to VT_RELDISP ioctl */
-# define VT_ACKACQ 2
-
-# include <termios.h>
-# define POSIX_TTY
-# define CLEARDTR_SUPPORT
-
-/* LynxOS 2.5.1 has these */
-# ifdef LED_NUMLOCK
-# define LED_CAP LED_CAPSLOCK
-# define LED_NUM LED_NUMLOCK
-# define LED_SCR LED_SCROLLOCK
-# endif
-
-#endif /* Lynx */
-
-/**************************************************************************/
-/* 386BSD and derivatives, BSD/386 */
-/**************************************************************************/
-
-#if defined(__386BSD__) && (defined(__FreeBSD__) || defined(__NetBSD__))
-# undef __386BSD__
-#endif
-
-#ifdef CSRG_BASED
-# include <sys/ioctl.h>
-# include <signal.h>
-
-# include <termios.h>
-# define termio termios
-# define POSIX_TTY
-
-# include <errno.h>
-
-# include <sys/types.h>
-# include <sys/mman.h>
-# include <sys/stat.h>
-
-# if defined(__bsdi__)
-# include <sys/param.h>
-# if (_BSDI_VERSION < 199510)
-# include <i386/isa/vgaioctl.h>
-# endif
-# endif /* __bsdi__ */
-
-#endif /* CSRG_BASED */
-
-/**************************************************************************/
-/* Kernel of *BSD */
-/**************************************************************************/
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
- defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__)
-
-# include <sys/param.h>
-# if defined(__FreeBSD_version) && !defined(__FreeBSD_kernel_version)
-# define __FreeBSD_kernel_version __FreeBSD_version
-# endif
-
-# if !defined(LINKKIT)
- /* Don't need this stuff for the Link Kit */
-# if defined(__bsdi__)
-# include <i386/isa/pcconsioctl.h>
-# define CONSOLE_X_MODE_ON PCCONIOCRAW
-# define CONSOLE_X_MODE_OFF PCCONIOCCOOK
-# define CONSOLE_X_BELL PCCONIOCBEEP
-# else /* __bsdi__ */
-# if defined(__OpenBSD__)
-# ifdef PCCONS_SUPPORT
-# include <machine/pccons.h>
-# undef CONSOLE_X_MODE_ON
-# undef CONSOLE_X_MODE_OFF
-# undef CONSOLE_X_BELL
-# endif
-# endif
-# ifdef SYSCONS_SUPPORT
-# define COMPAT_SYSCONS
-# if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
-# include <machine/console.h>
-# else
-# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-# if (__FreeBSD_kernel_version >= 410000)
-# include <sys/consio.h>
-# include <sys/kbio.h>
-# else
-# include <machine/console.h>
-# endif /* FreeBSD 4.1 RELEASE or lator */
-# else
-# include <sys/console.h>
-# endif
-# endif
-# endif /* SYSCONS_SUPPORT */
-# if defined(PCVT_SUPPORT)
-# if !defined(SYSCONS_SUPPORT)
- /* no syscons, so include pcvt specific header file */
-# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
-# include <machine/pcvt_ioctl.h>
-# else
-# if defined(__NetBSD__) || defined(__OpenBSD__)
-# if !defined(WSCONS_SUPPORT)
-# include <machine/pcvt_ioctl.h>
-# endif /* WSCONS_SUPPORT */
-# else
-# include <sys/pcvt_ioctl.h>
-# endif /* __NetBSD__ */
-# endif /* __FreeBSD_kernel__ || __OpenBSD__ */
-# else /* pcvt and syscons: hard-code the ID magic */
-# define VGAPCVTID _IOWR('V',113, struct pcvtid)
- struct pcvtid {
- char name[16];
- int rmajor, rminor;
- };
-# endif /* PCVT_SUPPORT && SYSCONS_SUPPORT */
-# endif /* PCVT_SUPPORT */
-# ifdef WSCONS_SUPPORT
-# include <dev/wscons/wsconsio.h>
-# include <dev/wscons/wsdisplay_usl_io.h>
-# endif /* WSCONS_SUPPORT */
-# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-# if (__FreeBSD_kernel_version >= 500013)
-# include <sys/mouse.h>
-# else
-# undef MOUSE_GETINFO
-# include <machine/mouse.h>
-# endif
-# endif
- /* Include these definitions in case ioctl_pc.h didn't get included */
-# ifndef CONSOLE_X_MODE_ON
-# define CONSOLE_X_MODE_ON _IO('t',121)
-# endif
-# ifndef CONSOLE_X_MODE_OFF
-# define CONSOLE_X_MODE_OFF _IO('t',122)
-# endif
-# ifndef CONSOLE_X_BELL
-# define CONSOLE_X_BELL _IOW('t',123,int[2])
-# endif
-# ifndef CONSOLE_X_TV_ON
-# define CONSOLE_X_TV_ON _IOW('t',155,int)
-# define XMODE_RGB 0
-# define XMODE_NTSC 1
-# define XMODE_PAL 2
-# define XMODE_SECAM 3
-# endif
-# ifndef CONSOLE_X_TV_OFF
-# define CONSOLE_X_TV_OFF _IO('t',156)
-# endif
-#ifndef CONSOLE_GET_LINEAR_INFO
-# define CONSOLE_GET_LINEAR_INFO _IOR('t',157,struct map_info)
-#endif
-#ifndef CONSOLE_GET_IO_INFO
-# define CONSOLE_GET_IO_INFO _IOR('t',158,struct map_info)
-#endif
-#ifndef CONSOLE_GET_MEM_INFO
-# define CONSOLE_GET_MEM_INFO _IOR('t',159,struct map_info)
-#endif
-# endif /* __bsdi__ */
-# endif /* !LINKKIT */
-
-#if defined(USE_I386_IOPL) || defined(USE_AMD64_IOPL)
-#include <machine/sysarch.h>
-#endif
-
-# define CLEARDTR_SUPPORT
-
-# if defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT)
-# define USE_VT_SYSREQ
-# endif
-
-#endif
-/* __FreeBSD_kernel__ || __NetBSD__ || __OpenBSD__ || __bsdi__ */
-
-/**************************************************************************/
-/* OS/2 */
-/**************************************************************************/
-/* currently OS/2 with a modified EMX/GCC compiler only */
-#if defined(__UNIXOS2__)
-# include <signal.h>
-# include <errno.h>
-# include <sys/stat.h>
-
-/* I would have liked to have this included here always, but
- * it causes clashes for BYTE and BOOL with Xmd.h, which is too dangerous.
- * So I'll include it in place where I know it does no harm.
- */
-#if defined(I_NEED_OS2_H)
-# undef BOOL
-# undef BYTE
-# include <os2.h>
-#endif
-
- /* keyboard types */
-# define KB_84 1
-# define KB_101 2
-/* could detect more keyboards */
-# define KB_OTHER 3
-
- /* LEDs */
-# define LED_CAP 0x40
-# define LED_NUM 0x20
-# define LED_SCR 0x10
-
- /* mouse driver */
-# define OSMOUSE_ONLY
-# define MOUSE_PROTOCOL_IN_KERNEL
-
-extern char* __XOS2RedirRoot(char*);
-
-#endif
-
-/**************************************************************************/
-/* QNX4 */
-/**************************************************************************/
-/* This is the QNX code for Watcom 10.6 and QNX 4.x */
-#if defined(QNX4)
-#include <signal.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <termios.h>
-#include <ioctl.h>
-#include <sys/param.h>
-
-/* Warning: by default, the fd_set size is 32 in QNX! */
-#define FD_SETSIZE 256
-#include <sys/select.h>
-
- /* keyboard types */
-# define KB_84 1
-# define KB_101 2
-# define KB_OTHER 3
-
- /* LEDs */
-# define LED_CAP 0x04
-# define LED_NUM 0x02
-# define LED_SCR 0x01
-
-# define POSIX_TTY
-# define OSMOUSE_ONLY
-# define MOUSE_PROTOCOL_IN_KERNEL
-
-#define TIOCM_DTR 0x0001 /* data terminal ready */
-#define TIOCM_RTS 0x0002 /* request to send */
-#define TIOCM_CTS 0x1000 /* clear to send */
-#define TIOCM_DSR 0x2000 /* data set ready */
-#define TIOCM_RI 0x4000 /* ring */
-#define TIOCM_RNG TIOCM_RI
-#define TIOCM_CD 0x8000 /* carrier detect */
-#define TIOCM_CAR TIOCM_CD
-#define TIOCM_LE 0x0100 /* line enable */
-#define TIOCM_ST 0x0200 /* secondary transmit */
-#define TIOCM_SR 0x0400 /* secondary receive */
-
-#endif
-
-/**************************************************************************/
-/* QNX/Neutrino */
-/**************************************************************************/
-/* This is the Neutrino code for for NTO2.0 and GCC */
-#if defined(__QNXNTO__)
-#include <signal.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <termios.h>
-#include <ioctl.h>
-#include <sys/param.h>
-
-/* Warning: by default, the fd_set size is 32 in NTO! */
-#define FD_SETSIZE 256
-#include <sys/select.h>
-
- /* keyboard types */
-# define KB_84 1
-# define KB_101 2
-# define KB_OTHER 3
-
-# define POSIX_TTY
-
-#endif
-
-/**************************************************************************/
-/* IRIX */
-/**************************************************************************/
-#if defined(sgi)
-
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#endif
-
-/**************************************************************************/
-/* Generic */
-/**************************************************************************/
-
-#include <sys/wait.h> /* May need to adjust this for other OSs */
-
-/*
- * Hack originally for ISC 2.2 POSIX headers, but may apply elsewhere,
- * and it's safe, so just do it.
- */
-#if !defined(O_NDELAY) && defined(O_NONBLOCK)
-# define O_NDELAY O_NONBLOCK
-#endif /* !O_NDELAY && O_NONBLOCK */
-
-#if !defined(MAXHOSTNAMELEN)
-# define MAXHOSTNAMELEN 32
-#endif /* !MAXHOSTNAMELEN */
-
-#if !defined(X_NOT_POSIX)
-# if defined(_POSIX_SOURCE)
-# include <limits.h>
-# else
-# define _POSIX_SOURCE
-# include <limits.h>
-# undef _POSIX_SOURCE
-# endif /* _POSIX_SOURCE */
-#endif /* !X_NOT_POSIX */
-#if !defined(PATH_MAX)
-# if defined(MAXPATHLEN)
-# define PATH_MAX MAXPATHLEN
-# else
-# define PATH_MAX 1024
-# endif /* MAXPATHLEN */
-#endif /* !PATH_MAX */
-
-#ifdef NEED_STRERROR
-# ifndef strerror
-extern char *sys_errlist[];
-extern int sys_nerr;
-# define strerror(n) \
- ((n) >= 0 && (n) < sys_nerr) ? sys_errlist[n] : "unknown error"
-# endif /* !strerror */
-#endif /* NEED_STRERROR */
-
-#if defined(ISC) || defined(Lynx)
-#define rint(x) RInt(x)
-double RInt(
- double x
-);
-#endif
-
-#ifndef DEV_MEM
-#define DEV_MEM "/dev/mem"
-#endif
-
-#ifndef VT_SYSREQ_DEFAULT
-#define VT_SYSREQ_DEFAULT FALSE
-#endif
-
-#ifdef OSMOUSE_ONLY
-# ifndef MOUSE_PROTOCOL_IN_KERNEL
-# define MOUSE_PROTOCOL_IN_KERNEL
-# endif
-#endif
-
-#define SYSCALL(call) while(((call) == -1) && (errno == EINTR))
-
-#define XF86_OS_PRIVS
-#include "xf86_OSproc.h"
-
-#ifndef NO_COMPILER_H
-#include "compiler.h"
-#endif
-
-#endif /* _XF86_OSLIB_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h b/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h
deleted file mode 100644
index 83ce9ed2b..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Copyright 1990, 1991 by Thomas Roell, Dinkelscherben, Germany
- * Copyright 1992 by David Dawes <dawes@XFree86.org>
- * Copyright 1992 by Jim Tsillas <jtsilla@damon.ccs.northeastern.edu>
- * Copyright 1992 by Rich Murphey <Rich@Rice.edu>
- * Copyright 1992 by Robert Baron <Robert.Baron@ernst.mach.cs.cmu.edu>
- * Copyright 1992 by Orest Zborowski <obz@eskimo.com>
- * Copyright 1993 by Vrije Universiteit, The Netherlands
- * Copyright 1993 by David Wexelblat <dwex@XFree86.org>
- * Copyright 1994, 1996 by Holger Veit <Holger.Veit@gmd.de>
- * Copyright 1994-2003 by The XFree86 Project, Inc
- *
- * 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, and that the names of the above listed copyright holders
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. The above listed
- * copyright holders make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * THE ABOVE LISTED COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/*
- * The ARM32 code here carries the following copyright:
- *
- * Copyright 1997
- * Digital Equipment Corporation. All rights reserved.
- * This software is furnished under license and may be used and copied only in
- * accordance with the following terms and conditions. Subject to these
- * conditions, you may download, copy, install, use, modify and distribute
- * this software in source and/or binary form. No title or ownership is
- * transferred hereby.
- *
- * 1) Any source code used, modified or distributed must reproduce and retain
- * this copyright notice and list of conditions as they appear in the
- * source file.
- *
- * 2) No right is granted to use any trade name, trademark, or logo of Digital
- * Equipment Corporation. Neither the "Digital Equipment Corporation"
- * name nor any trademark or logo of Digital Equipment Corporation may be
- * used to endorse or promote products derived from this software without
- * the prior written permission of Digital Equipment Corporation.
- *
- * 3) This software is provided "AS-IS" and any express or implied warranties,
- * including but not limited to, any implied warranties of merchantability,
- * fitness for a particular purpose, or non-infringement are disclaimed.
- * In no event shall DIGITAL be liable for any damages whatsoever, and in
- * particular, DIGITAL shall not be liable for special, indirect,
- * consequential, or incidental damages or damages for lost profits, loss
- * of revenue or loss of use, whether such damages arise in contract,
- * negligence, tort, under statute, in equity, at law or otherwise, even
- * if advised of the possibility of such damage.
- *
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h,v 3.56 2003/08/24 17:37:03 dawes Exp $ */
-
-#ifndef _XF86_OSPROC_H
-#define _XF86_OSPROC_H
-
-#ifdef XF86_OS_PRIVS
-#include "xf86Pci.h"
-#endif
-
-/*
- * The actual prototypes have been pulled into this seperate file so
- * that they can can be used without pulling in all of the OS specific
- * stuff like sys/stat.h, etc. This casues problem for loadable modules.
- */
-
-/*
- * Flags for xf86MapVidMem(). Multiple flags can be or'd together. The
- * flags may be used as hints. For example it would be permissible to
- * enable write combining for memory marked only for framebuffer use.
- */
-
-#define VIDMEM_FRAMEBUFFER 0x01 /* memory for framebuffer use */
-#define VIDMEM_MMIO 0x02 /* memory for I/O use */
-#define VIDMEM_MMIO_32BIT 0x04 /* memory accesses >= 32bit */
-#define VIDMEM_READSIDEEFFECT 0x08 /* reads can have side-effects */
-#define VIDMEM_SPARSE 0x10 /* sparse mapping required
- * assumed when VIDMEM_MMIO is
- * set. May be used with
- * VIDMEM_FRAMEBUFFER) */
-#define VIDMEM_READONLY 0x20 /* read-only mapping
- * used when reading BIOS images
- * through xf86MapVidMem() */
-
-/*
- * OS-independent modem state flags for xf86SetSerialModemState() and
- * xf86GetSerialModemState().
- */
-#define XF86_M_LE 0x001 /* line enable */
-#define XF86_M_DTR 0x002 /* data terminal ready */
-#define XF86_M_RTS 0x004 /* request to send */
-#define XF86_M_ST 0x008 /* secondary transmit */
-#define XF86_M_SR 0x010 /* secondary receive */
-#define XF86_M_CTS 0x020 /* clear to send */
-#define XF86_M_CAR 0x040 /* carrier detect */
-#define XF86_M_RNG 0x080 /* ring */
-#define XF86_M_DSR 0x100 /* data set ready */
-
-#ifdef XF86_OS_PRIVS
-extern void xf86WrapperInit(void);
-#endif
-
-#ifndef NO_OSLIB_PROTOTYPES
-/*
- * This is to prevent re-entrancy to FatalError() when aborting.
- * Anything that can be called as a result of AbortDDX() should use this
- * instead of FatalError().
- */
-
-#define xf86FatalError(a, b) \
- if (dispatchException & DE_TERMINATE) { \
- ErrorF(a, b); \
- ErrorF("\n"); \
- return; \
- } else FatalError(a, b)
-
-/***************************************************************************/
-/* Prototypes */
-/***************************************************************************/
-
-#include <X11/Xfuncproto.h>
-#include "opaque.h"
-
-#if defined(XQUEUE)
-#include "input.h" /* for DeviceIntPtr */
-#endif
-
-_XFUNCPROTOBEGIN
-
-/* public functions */
-extern Bool xf86LinearVidMem(void);
-extern Bool xf86CheckMTRR(int);
-extern pointer xf86MapVidMem(int, int, unsigned long, unsigned long);
-extern void xf86UnMapVidMem(int, pointer, unsigned long);
-extern void xf86MapReadSideEffects(int, int, pointer, unsigned long);
-extern int xf86ReadBIOS(unsigned long, unsigned long, unsigned char *, int);
-extern Bool xf86EnableIO(void);
-extern void xf86DisableIO(void);
-extern Bool xf86DisableInterrupts(void);
-extern void xf86EnableInterrupts(void);
-extern void xf86SetTVOut(int);
-extern void xf86SetRGBOut(void);
-extern void xf86SoundKbdBell(int, int, int);
-#if defined(QNX4)
-#pragma aux xf86BusToMem modify [eax ebx ecx edx esi edi];
-#pragma aux xf86MemToBus modify [eax ebx ecx edx esi edi];
-#endif
-extern void xf86BusToMem(unsigned char *, unsigned char *, int);
-extern void xf86MemToBus(unsigned char *, unsigned char *, int);
-extern void xf86IODelay(void);
-extern void xf86UDelay(long usec);
-extern void xf86SlowBcopy(unsigned char *, unsigned char *, int);
-extern int xf86OpenSerial(pointer options);
-extern int xf86SetSerial(int fd, pointer options);
-extern int xf86SetSerialSpeed(int fd, int speed);
-extern int xf86ReadSerial(int fd, void *buf, int count);
-extern int xf86WriteSerial(int fd, const void *buf, int count);
-extern int xf86CloseSerial(int fd);
-extern int xf86FlushInput(int fd);
-extern int xf86WaitForInput(int fd, int timeout);
-extern int xf86SerialSendBreak(int fd, int duration);
-extern int xf86SetSerialModemState(int fd, int state);
-extern int xf86GetSerialModemState(int fd);
-extern int xf86SerialModemSetBits(int fd, int bits);
-extern int xf86SerialModemClearBits(int fd, int bits);
-extern int xf86LoadKernelModule(const char *pathname);
-
-/* AGP GART interface */
-
-typedef struct _AgpInfo {
- CARD32 bridgeId;
- CARD32 agpMode;
- unsigned long base;
- unsigned long size;
- unsigned long totalPages;
- unsigned long systemPages;
- unsigned long usedPages;
-} AgpInfo, *AgpInfoPtr;
-
-extern Bool xf86AgpGARTSupported(void);
-extern AgpInfoPtr xf86GetAGPInfo(int screenNum);
-extern Bool xf86AcquireGART(int screenNum);
-extern Bool xf86ReleaseGART(int screenNum);
-extern int xf86AllocateGARTMemory(int screenNum, unsigned long size, int type,
- unsigned long *physical);
-extern Bool xf86DeallocateGARTMemory(int screenNum, int key);
-extern Bool xf86BindGARTMemory(int screenNum, int key, unsigned long offset);
-extern Bool xf86UnbindGARTMemory(int screenNum, int key);
-extern Bool xf86EnableAGP(int screenNum, CARD32 mode);
-extern Bool xf86GARTCloseScreen(int screenNum);
-
-/* These routines are in shared/sigio.c and are not loaded as part of the
- module. These routines are small, and the code if very POSIX-signal (or
- OS-signal) specific, so it seemed better to provide more complex
- wrappers than to wrap each individual function called. */
-extern int xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *);
-extern int xf86RemoveSIGIOHandler(int fd);
-extern int xf86BlockSIGIO (void);
-extern void xf86UnblockSIGIO (int);
-#ifdef XFree86Server
-extern void xf86AssertBlockedSIGIO (char *);
-#endif
-extern Bool xf86SIGIOSupported (void);
-
-#ifdef XF86_OS_PRIVS
-typedef void (*PMClose)(void);
-extern void xf86OpenConsole(void);
-extern void xf86CloseConsole(void);
-extern Bool xf86VTSwitchPending(void);
-extern Bool xf86VTSwitchAway(void);
-extern Bool xf86VTSwitchTo(void);
-extern void xf86VTRequest(int sig);
-extern int xf86ProcessArgument(int, char **, int);
-extern void xf86UseMsg(void);
-extern void xf86SetKbdLeds(int);
-extern int xf86GetKbdLeds(void);
-extern void xf86SetKbdRepeat(char);
-extern void xf86KbdInit(void);
-extern int xf86KbdOn(void);
-extern int xf86KbdOff(void);
-extern void xf86KbdEvents(void);
-#ifdef XQUEUE
-extern int xf86XqueKbdProc(DeviceIntPtr, int);
-extern void xf86XqueEvents(void);
-#endif
-extern void xf86ReloadInputDevs(int sig);
-#ifdef WSCONS_SUPPORT
-extern void xf86WSKbdEvents(void);
-#endif
-extern PMClose xf86OSPMOpen(void);
-
-#ifdef NEED_OS_RAC_PROTOS
-/* RAC-related privs */
-/* internal to os-support layer */
-resPtr xf86StdBusAccWindowsFromOS(void);
-resPtr xf86StdPciAccWindowsFromOS(void);
-resPtr xf86StdIsaAccWindowsFromOS(void);
-resPtr xf86StdAccResFromOS(resPtr ret);
-
-/* available to the common layer */
-resPtr xf86BusAccWindowsFromOS(void);
-resPtr xf86PciBusAccWindowsFromOS(void);
-#ifdef INCLUDE_UNUSED
-resPtr xf86IsaBusAccWindowsFromOS(void);
-#endif
-resPtr xf86AccResFromOS(resPtr ret);
-#endif /* NEED_OS_RAC_PROTOS */
-
-extern Bool xf86GetPciSizeFromOS(PCITAG tag, int indx, int* bits);
-extern Bool xf86GetPciOffsetFromOS(PCITAG tag, int indx, unsigned long* bases);
-extern unsigned long xf86GetOSOffsetFromPCI(PCITAG tag, int space, unsigned long base);
-
-extern void xf86MakeNewMapping(int, int, unsigned long, unsigned long, pointer);
-extern void xf86InitVidMem(void);
-
-#endif /* XF86_OS_PRIVS */
-
-
-_XFUNCPROTOEND
-#endif /* NO_OSLIB_PROTOTYPES */
-
-#endif /* _XF86_OSPROC_H */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Configint.h b/nx-X11/programs/Xserver/hw/xfree86/parser/Configint.h
deleted file mode 100644
index a51116b55..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Configint.h
+++ /dev/null
@@ -1,226 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Configint.h,v 1.21 2003/08/24 17:37:07 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2002 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/*
- * These definitions are used through out the configuration file parser, but
- * they should not be visible outside of the parser.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _Configint_h_
-#define _Configint_h_
-
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-#include <stddef.h>
-#include "xf86Parser.h"
-
-typedef struct
-{
- int num; /* returned number */
- char *str; /* private copy of the return-string */
- double realnum; /* returned number as a real */
-}
-LexRec, *LexPtr;
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#include "configProcs.h"
-#include <stdlib.h>
-#define xf86confmalloc malloc
-#define xf86confrealloc realloc
-#define xf86confcalloc calloc
-#define xf86conffree free
-
-#define TestFree(a) if (a) { xf86conffree (a); a = NULL; }
-
-#define parsePrologue(typeptr,typerec) typeptr ptr; \
-if( (ptr=(typeptr)xf86confcalloc(1,sizeof(typerec))) == NULL ) { return NULL; } \
-memset(ptr,0,sizeof(typerec));
-
-#define parsePrologueVoid(typeptr,typerec) int token; typeptr ptr; \
-if( (ptr=(typeptr)xf86confcalloc(1,sizeof(typerec))) == NULL ) { return; } \
-memset(ptr,0,sizeof(typerec));
-
-#define HANDLE_RETURN(f,func)\
-if ((ptr->f=func) == NULL)\
-{\
- CLEANUP (ptr);\
- return (NULL);\
-}
-
-#define HANDLE_LIST(field,func,type)\
-{\
-type p = func ();\
-if (p == NULL)\
-{\
- CLEANUP (ptr);\
- return (NULL);\
-}\
-else\
-{\
- ptr->field = (type) xf86addListItem ((glp) ptr->field, (glp) p);\
-}\
-}
-
-#define Error(a,b) do { \
- xf86parseError (a, b); CLEANUP (ptr); return NULL; \
- } while (0)
-
-/*
- * These are defines for error messages to promote consistency.
- * error messages are preceded by the line number, section and file name,
- * so these messages should be about the specific keyword and syntax in error.
- * To help limit namespace polution, end each with _MSG.
- * limit messages to 70 characters if possible.
- */
-
-#define BAD_OPTION_MSG \
-"The Option keyword requires 1 or 2 quoted strings to follow it."
-#define INVALID_KEYWORD_MSG \
-"\"%s\" is not a valid keyword in this section."
-#define INVALID_SECTION_MSG \
-"\"%s\" is not a valid section name."
-#define UNEXPECTED_EOF_MSG \
-"Unexpected EOF. Missing EndSection keyword?"
-#define QUOTE_MSG \
-"The %s keyword requires a quoted string to follow it."
-#define NUMBER_MSG \
-"The %s keyword requires a number to follow it."
-#define POSITIVE_INT_MSG \
-"The %s keyword requires a positive integer to follow it."
-#define ZAXISMAPPING_MSG \
-"The ZAxisMapping keyword requires 2 positive numbers or X or Y to follow it."
-#define AUTOREPEAT_MSG \
-"The AutoRepeat keyword requires 2 numbers (delay and rate) to follow it."
-#define XLEDS_MSG \
-"The XLeds keyword requries one or more numbers to follow it."
-#define DACSPEED_MSG \
-"The DacSpeed keyword must be followed by a list of up to %d numbers."
-#define DISPLAYSIZE_MSG \
-"The DisplaySize keyword must be followed by the width and height in mm."
-#define HORIZSYNC_MSG \
-"The HorizSync keyword must be followed by a list of numbers or ranges."
-#define VERTREFRESH_MSG \
-"The VertRefresh keyword must be followed by a list of numbers or ranges."
-#define VIEWPORT_MSG \
-"The Viewport keyword must be followed by an X and Y value."
-#define VIRTUAL_MSG \
-"The Virtual keyword must be followed by a width and height value."
-#define WEIGHT_MSG \
-"The Weight keyword must be followed by red, green and blue values."
-#define BLACK_MSG \
-"The Black keyword must be followed by red, green and blue values."
-#define WHITE_MSG \
-"The White keyword must be followed by red, green and blue values."
-#define SCREEN_MSG \
-"The Screen keyword must be followed by an optional number, a screen name\n" \
-"\tin quotes, and optional position/layout information."
-#define INVALID_SCR_MSG \
-"Invalid Screen line."
-#define INPUTDEV_MSG \
-"The InputDevice keyword must be followed by an input device name in quotes."
-#define INACTIVE_MSG \
-"The Inactive keyword must be followed by a Device name in quotes."
-#define UNDEFINED_SCREEN_MSG \
-"Undefined Screen \"%s\" referenced by ServerLayout \"%s\"."
-#define UNDEFINED_MONITOR_MSG \
-"Undefined Monitor \"%s\" referenced by Screen \"%s\"."
-#define UNDEFINED_MODES_MSG \
-"Undefined Modes Section \"%s\" referenced by Monitor \"%s\"."
-#define UNDEFINED_DEVICE_MSG \
-"Undefined Device \"%s\" referenced by Screen \"%s\"."
-#define UNDEFINED_ADAPTOR_MSG \
-"Undefined VideoAdaptor \"%s\" referenced by Screen \"%s\"."
-#define ADAPTOR_REF_TWICE_MSG \
-"VideoAdaptor \"%s\" already referenced by Screen \"%s\"."
-#define UNDEFINED_DEVICE_LAY_MSG \
-"Undefined Device \"%s\" referenced by ServerLayout \"%s\"."
-#define UNDEFINED_INPUT_MSG \
-"Undefined InputDevice \"%s\" referenced by ServerLayout \"%s\"."
-#define NO_IDENT_MSG \
-"This section must have an Identifier line."
-#define ONLY_ONE_MSG \
-"This section must have only one of either %s line."
-#define UNDEFINED_DRIVER_MSG \
-"Device section \"%s\" must have a Driver line."
-#define UNDEFINED_INPUTDRIVER_MSG \
-"InputDevice section \"%s\" must have a Driver line."
-#define INVALID_GAMMA_MSG \
-"gamma correction value(s) expected\n either one value or three r/g/b values."
-#define GROUP_MSG \
-"The Group keyword must be followed by either a group name in quotes or\n" \
-"\ta numerical group id."
-#define MULTIPLE_MSG \
-"Multiple \"%s\" lines."
-
-/* Warning messages */
-#define OBSOLETE_MSG \
-"Ignoring obsolete keyword \"%s\"."
-#define MOVED_TO_FLAGS_MSG \
-"Keyword \"%s\" is now an Option flag in the ServerFlags section."
-
-#endif /* _Configint_h_ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/DRI.c b/nx-X11/programs/Xserver/hw/xfree86/parser/DRI.c
deleted file mode 100644
index 93d0d4b52..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/DRI.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/* DRI.c -- DRI Section in XF86Config file
- * Created: Fri Mar 19 08:40:22 1999 by faith@precisioninsight.com
- * Revised: Thu Jun 17 16:08:05 1999 by faith@precisioninsight.com
- *
- * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
- * 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
- * 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 NONINFRINGEMENT. IN NO EVENT SHALL
- * PRECISION INSIGHT AND/OR ITS 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.
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/parser/DRI.c,v 1.13 2003/01/01 19:22:20 paulo Exp $
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec DRITab[] =
-{
- {ENDSECTION, "endsection"},
- {GROUP, "group"},
- {BUFFERS, "buffers"},
- {MODE, "mode"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeBuffersList
-
-XF86ConfBuffersPtr
-xf86parseBuffers (void)
-{
- int token;
- parsePrologue (XF86ConfBuffersPtr, XF86ConfBuffersRec)
-
- if (xf86getSubToken (&(ptr->buf_comment)) != NUMBER)
- Error ("Buffers count expected", NULL);
- ptr->buf_count = val.num;
-
- if (xf86getSubToken (&(ptr->buf_comment)) != NUMBER)
- Error ("Buffers size expected", NULL);
- ptr->buf_size = val.num;
-
- if ((token = xf86getSubToken (&(ptr->buf_comment))) == STRING) {
- ptr->buf_flags = val.str;
- if ((token = xf86getToken (NULL)) == COMMENT)
- ptr->buf_comment = xf86addComment(ptr->buf_comment, val.str);
- else
- xf86unGetToken(token);
- }
-
-#ifdef DEBUG
- printf ("Buffers parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-#define CLEANUP xf86freeDRI
-
-XF86ConfDRIPtr
-xf86parseDRISection (void)
-{
- int token;
- parsePrologue (XF86ConfDRIPtr, XF86ConfDRIRec);
-
- /* Zero is a valid value for this. */
- ptr->dri_group = -1;
- while ((token = xf86getToken (DRITab)) != ENDSECTION) {
- switch (token)
- {
- case GROUP:
- if ((token = xf86getSubToken (&(ptr->dri_comment))) == STRING)
- ptr->dri_group_name = val.str;
- else if (token == NUMBER)
- ptr->dri_group = val.num;
- else
- Error (GROUP_MSG, NULL);
- break;
- case MODE:
- if (xf86getSubToken (&(ptr->dri_comment)) != NUMBER)
- Error (NUMBER_MSG, "Mode");
- ptr->dri_mode = val.num;
- break;
- case BUFFERS:
- HANDLE_LIST (dri_buffers_lst, xf86parseBuffers,
- XF86ConfBuffersPtr);
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- case COMMENT:
- ptr->dri_comment = xf86addComment(ptr->dri_comment, val.str);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
-#ifdef DEBUG
- ErrorF("DRI section parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-void
-xf86printDRISection (FILE * cf, XF86ConfDRIPtr ptr)
-{
- XF86ConfBuffersPtr bufs;
-
- if (ptr == NULL)
- return;
-
- fprintf (cf, "Section \"DRI\"\n");
- if (ptr->dri_comment)
- fprintf (cf, "%s", ptr->dri_comment);
- if (ptr->dri_group_name)
- fprintf (cf, "\tGroup \"%s\"\n", ptr->dri_group_name);
- else if (ptr->dri_group >= 0)
- fprintf (cf, "\tGroup %d\n", ptr->dri_group);
- if (ptr->dri_mode)
- fprintf (cf, "\tMode 0%o\n", ptr->dri_mode);
- for (bufs = ptr->dri_buffers_lst; bufs; bufs = bufs->list.next) {
- fprintf (cf, "\tBuffers %d %d",
- bufs->buf_count, bufs->buf_size);
- if (bufs->buf_flags) fprintf (cf, " \"%s\"", bufs->buf_flags);
- if (bufs->buf_comment)
- fprintf(cf, "%s", bufs->buf_comment);
- else
- fprintf (cf, "\n");
- }
- fprintf (cf, "EndSection\n\n");
-}
-
-void
-xf86freeDRI (XF86ConfDRIPtr ptr)
-{
- if (ptr == NULL)
- return;
-
- xf86freeBuffersList (ptr->dri_buffers_lst);
- TestFree (ptr->dri_comment);
- xf86conffree (ptr);
-}
-
-void
-xf86freeBuffersList (XF86ConfBuffersPtr ptr)
-{
- XF86ConfBuffersPtr prev;
-
- while (ptr) {
- TestFree (ptr->buf_flags);
- TestFree (ptr->buf_comment);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Device.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Device.c
deleted file mode 100644
index 6eb2857f0..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Device.c
+++ /dev/null
@@ -1,403 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Device.c,v 1.27 2003/08/24 17:37:07 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-extern LexRec val;
-
-static
-xf86ConfigSymTabRec DeviceTab[] =
-{
- {ENDSECTION, "endsection"},
- {IDENTIFIER, "identifier"},
- {VENDOR, "vendorname"},
- {BOARD, "boardname"},
- {CHIPSET, "chipset"},
- {RAMDAC, "ramdac"},
- {DACSPEED, "dacspeed"},
- {CLOCKS, "clocks"},
- {OPTION, "option"},
- {VIDEORAM, "videoram"},
- {BIOSBASE, "biosbase"},
- {MEMBASE, "membase"},
- {IOBASE, "iobase"},
- {CLOCKCHIP, "clockchip"},
- {CHIPID, "chipid"},
- {CHIPREV, "chiprev"},
- {CARD, "card"},
- {DRIVER, "driver"},
- {BUSID, "busid"},
- {TEXTCLOCKFRQ, "textclockfreq"},
- {IRQ, "irq"},
- {SCREEN, "screen"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeDeviceList
-
-XF86ConfDevicePtr
-xf86parseDeviceSection (void)
-{
- int i;
- int has_ident = FALSE;
- int token;
- parsePrologue (XF86ConfDevicePtr, XF86ConfDeviceRec)
-
- /* Zero is a valid value for these */
- ptr->dev_chipid = -1;
- ptr->dev_chiprev = -1;
- ptr->dev_irq = -1;
- while ((token = xf86getToken (DeviceTab)) != ENDSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->dev_comment = xf86addComment(ptr->dev_comment, val.str);
- break;
- case IDENTIFIER:
- if (xf86getSubToken (&(ptr->dev_comment)) != STRING)
- Error (QUOTE_MSG, "Identifier");
- if (has_ident == TRUE)
- Error (MULTIPLE_MSG, "Identifier");
- ptr->dev_identifier = val.str;
- has_ident = TRUE;
- break;
- case VENDOR:
- if (xf86getSubToken (&(ptr->dev_comment)) != STRING)
- Error (QUOTE_MSG, "Vendor");
- ptr->dev_vendor = val.str;
- break;
- case BOARD:
- if (xf86getSubToken (&(ptr->dev_comment)) != STRING)
- Error (QUOTE_MSG, "Board");
- ptr->dev_board = val.str;
- break;
- case CHIPSET:
- if (xf86getSubToken (&(ptr->dev_comment)) != STRING)
- Error (QUOTE_MSG, "Chipset");
- ptr->dev_chipset = val.str;
- break;
- case CARD:
- if (xf86getSubToken (&(ptr->dev_comment)) != STRING)
- Error (QUOTE_MSG, "Card");
- ptr->dev_card = val.str;
- break;
- case DRIVER:
- if (xf86getSubToken (&(ptr->dev_comment)) != STRING)
- Error (QUOTE_MSG, "Driver");
- ptr->dev_driver = val.str;
- break;
- case RAMDAC:
- if (xf86getSubToken (&(ptr->dev_comment)) != STRING)
- Error (QUOTE_MSG, "Ramdac");
- ptr->dev_ramdac = val.str;
- break;
- case DACSPEED:
- for (i = 0; i < CONF_MAXDACSPEEDS; i++)
- ptr->dev_dacSpeeds[i] = 0;
- if (xf86getSubToken (&(ptr->dev_comment)) != NUMBER)
- {
- Error (DACSPEED_MSG, CONF_MAXDACSPEEDS);
- }
- else
- {
- ptr->dev_dacSpeeds[0] = (int) (val.realnum * 1000.0 + 0.5);
- for (i = 1; i < CONF_MAXDACSPEEDS; i++)
- {
- if (xf86getSubToken (&(ptr->dev_comment)) == NUMBER)
- ptr->dev_dacSpeeds[i] = (int)
- (val.realnum * 1000.0 + 0.5);
- else
- {
- xf86unGetToken (token);
- break;
- }
- }
- }
- break;
- case VIDEORAM:
- if (xf86getSubToken (&(ptr->dev_comment)) != NUMBER)
- Error (NUMBER_MSG, "VideoRam");
- ptr->dev_videoram = val.num;
- break;
- case BIOSBASE:
- if (xf86getSubToken (&(ptr->dev_comment)) != NUMBER)
- Error (NUMBER_MSG, "BIOSBase");
- ptr->dev_bios_base = val.num;
- break;
- case MEMBASE:
- if (xf86getSubToken (&(ptr->dev_comment)) != NUMBER)
- Error (NUMBER_MSG, "MemBase");
- ptr->dev_mem_base = val.num;
- break;
- case IOBASE:
- if (xf86getSubToken (&(ptr->dev_comment)) != NUMBER)
- Error (NUMBER_MSG, "IOBase");
- ptr->dev_io_base = val.num;
- break;
- case CLOCKCHIP:
- if (xf86getSubToken (&(ptr->dev_comment)) != STRING)
- Error (QUOTE_MSG, "ClockChip");
- ptr->dev_clockchip = val.str;
- break;
- case CHIPID:
- if (xf86getSubToken (&(ptr->dev_comment)) != NUMBER)
- Error (NUMBER_MSG, "ChipID");
- ptr->dev_chipid = val.num;
- break;
- case CHIPREV:
- if (xf86getSubToken (&(ptr->dev_comment)) != NUMBER)
- Error (NUMBER_MSG, "ChipRev");
- ptr->dev_chiprev = val.num;
- break;
-
- case CLOCKS:
- token = xf86getSubToken(&(ptr->dev_comment));
- for( i = ptr->dev_clocks;
- token == NUMBER && i < CONF_MAXCLOCKS; i++ ) {
- ptr->dev_clock[i] = (int)(val.realnum * 1000.0 + 0.5);
- token = xf86getSubToken(&(ptr->dev_comment));
- }
- ptr->dev_clocks = i;
- xf86unGetToken (token);
- break;
- case TEXTCLOCKFRQ:
- if ((token = xf86getSubToken(&(ptr->dev_comment))) != NUMBER)
- Error (NUMBER_MSG, "TextClockFreq");
- ptr->dev_textclockfreq = (int)(val.realnum * 1000.0 + 0.5);
- break;
- case OPTION:
- ptr->dev_option_lst = xf86parseOption(ptr->dev_option_lst);
- break;
- case BUSID:
- if (xf86getSubToken (&(ptr->dev_comment)) != STRING)
- Error (QUOTE_MSG, "BusID");
- ptr->dev_busid = val.str;
- break;
- case IRQ:
- if (xf86getSubToken (&(ptr->dev_comment)) != NUMBER)
- Error (QUOTE_MSG, "IRQ");
- ptr->dev_irq = val.num;
- break;
- case SCREEN:
- if (xf86getSubToken (&(ptr->dev_comment)) != NUMBER)
- Error (NUMBER_MSG, "Screen");
- ptr->dev_screen = val.num;
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
- if (!has_ident)
- Error (NO_IDENT_MSG, NULL);
-
-#ifdef DEBUG
- printf ("Device section parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-void
-xf86printDeviceSection (FILE * cf, XF86ConfDevicePtr ptr)
-{
- int i;
-
- while (ptr)
- {
- fprintf (cf, "Section \"Device\"\n");
- if (ptr->dev_comment)
- fprintf (cf, "%s", ptr->dev_comment);
- if (ptr->dev_identifier)
- fprintf (cf, "\tIdentifier \"%s\"\n", ptr->dev_identifier);
- if (ptr->dev_driver)
- fprintf (cf, "\tDriver \"%s\"\n", ptr->dev_driver);
- if (ptr->dev_vendor)
- fprintf (cf, "\tVendorName \"%s\"\n", ptr->dev_vendor);
- if (ptr->dev_board)
- fprintf (cf, "\tBoardName \"%s\"\n", ptr->dev_board);
- if (ptr->dev_chipset)
- fprintf (cf, "\tChipSet \"%s\"\n", ptr->dev_chipset);
- if (ptr->dev_card)
- fprintf (cf, "\tCard \"%s\"\n", ptr->dev_card);
- if (ptr->dev_ramdac)
- fprintf (cf, "\tRamDac \"%s\"\n", ptr->dev_ramdac);
- if (ptr->dev_dacSpeeds[0] > 0 ) {
- fprintf (cf, "\tDacSpeed ");
- for (i = 0; i < CONF_MAXDACSPEEDS
- && ptr->dev_dacSpeeds[i] > 0; i++ )
- fprintf (cf, "%g ", (double) (ptr->dev_dacSpeeds[i])/ 1000.0 );
- fprintf (cf, "\n");
- }
- if (ptr->dev_videoram)
- fprintf (cf, "\tVideoRam %d\n", ptr->dev_videoram);
- if (ptr->dev_bios_base)
- fprintf (cf, "\tBiosBase 0x%lx\n", ptr->dev_bios_base);
- if (ptr->dev_mem_base)
- fprintf (cf, "\tMemBase 0x%lx\n", ptr->dev_mem_base);
- if (ptr->dev_io_base)
- fprintf (cf, "\tIOBase 0x%lx\n", ptr->dev_io_base);
- if (ptr->dev_clockchip)
- fprintf (cf, "\tClockChip \"%s\"\n", ptr->dev_clockchip);
- if (ptr->dev_chipid != -1)
- fprintf (cf, "\tChipId 0x%x\n", ptr->dev_chipid);
- if (ptr->dev_chiprev != -1)
- fprintf (cf, "\tChipRev 0x%x\n", ptr->dev_chiprev);
-
- xf86printOptionList(cf, ptr->dev_option_lst, 1);
- if (ptr->dev_clocks > 0 ) {
- fprintf (cf, "\tClocks ");
- for (i = 0; i < ptr->dev_clocks; i++ )
- fprintf (cf, "%.1f ", (double)ptr->dev_clock[i] / 1000.0 );
- fprintf (cf, "\n");
- }
- if (ptr->dev_textclockfreq) {
- fprintf (cf, "\tTextClockFreq %.1f\n",
- (double)ptr->dev_textclockfreq / 1000.0);
- }
- if (ptr->dev_busid)
- fprintf (cf, "\tBusID \"%s\"\n", ptr->dev_busid);
- if (ptr->dev_screen > 0)
- fprintf (cf, "\tScreen %d\n", ptr->dev_screen);
- if (ptr->dev_irq >= 0)
- fprintf (cf, "\tIRQ %d\n", ptr->dev_irq);
- fprintf (cf, "EndSection\n\n");
- ptr = ptr->list.next;
- }
-}
-
-void
-xf86freeDeviceList (XF86ConfDevicePtr ptr)
-{
- XF86ConfDevicePtr prev;
-
- while (ptr)
- {
- TestFree (ptr->dev_identifier);
- TestFree (ptr->dev_vendor);
- TestFree (ptr->dev_board);
- TestFree (ptr->dev_chipset);
- TestFree (ptr->dev_card);
- TestFree (ptr->dev_driver);
- TestFree (ptr->dev_ramdac);
- TestFree (ptr->dev_clockchip);
- TestFree (ptr->dev_comment);
- xf86optionListFree (ptr->dev_option_lst);
-
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-int
-xf86validateDevice (XF86ConfigPtr p)
-{
- XF86ConfDevicePtr device = p->conf_device_lst;
-
- if (!device) {
- xf86validationError ("At least one Device section is required.");
- return (FALSE);
- }
-
- while (device) {
- if (!device->dev_driver) {
- xf86validationError (UNDEFINED_DRIVER_MSG, device->dev_identifier);
- return (FALSE);
- }
- device = device->list.next;
- }
- return (TRUE);
-}
-
-XF86ConfDevicePtr
-xf86findDevice (const char *ident, XF86ConfDevicePtr p)
-{
- while (p)
- {
- if (xf86nameCompare (ident, p->dev_identifier) == 0)
- return (p);
-
- p = p->list.next;
- }
- return (NULL);
-}
-
-char *
-xf86configStrdup (const char *s)
-{
- char *tmp;
- if (!s) return NULL;
- tmp = xf86confmalloc (sizeof (char) * (strlen (s) + 1));
- if (tmp)
- strcpy (tmp, s);
- return (tmp);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Extensions.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Extensions.c
deleted file mode 100644
index b64f08111..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Extensions.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright 2004 Red Hat Inc., Raleigh, 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:
- * Kevin E. Martin <kem@redhat.com>
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec ExtensionsTab[] =
-{
- {ENDSECTION, "endsection"},
- {OPTION, "option"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeExtensions
-
-XF86ConfExtensionsPtr
-xf86parseExtensionsSection (void)
-{
- int token;
- parsePrologue (XF86ConfExtensionsPtr, XF86ConfExtensionsRec);
-
- while ((token = xf86getToken (ExtensionsTab)) != ENDSECTION) {
- switch (token) {
- case OPTION:
- ptr->ext_option_lst = xf86parseOption(ptr->ext_option_lst);
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- case COMMENT:
- ptr->extensions_comment =
- xf86addComment(ptr->extensions_comment, val.str);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
-#ifdef DEBUG
- ErrorF("Extensions section parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-void
-xf86printExtensionsSection (FILE * cf, XF86ConfExtensionsPtr ptr)
-{
- XF86OptionPtr p;
-
- if (ptr == NULL || ptr->ext_option_lst == NULL)
- return;
-
- p = ptr->ext_option_lst;
- fprintf (cf, "Section \"Extensions\"\n");
- if (ptr->extensions_comment)
- fprintf (cf, "%s", ptr->extensions_comment);
- xf86printOptionList(cf, p, 1);
- fprintf (cf, "EndSection\n\n");
-}
-
-void
-xf86freeExtensions (XF86ConfExtensionsPtr ptr)
-{
- if (ptr == NULL)
- return;
-
- xf86optionListFree (ptr->ext_option_lst);
- TestFree (ptr->extensions_comment);
- xf86conffree (ptr);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Files.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Files.c
deleted file mode 100644
index cbbcc74c8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Files.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Files.c,v 1.16 2003/08/24 17:37:07 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/Xos.h>
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec FilesTab[] =
-{
- {ENDSECTION, "endsection"},
- {FONTPATH, "fontpath"},
- {RGBPATH, "rgbpath"},
- {MODULEPATH, "modulepath"},
- {INPUTDEVICES, "inputdevices"},
- {LOGFILEPATH, "logfile"},
- {-1, ""},
-};
-
-static char *
-prependRoot (char *pathname)
-{
-#ifndef __EMX__
- return pathname;
-#else
- /* XXXX caveat: multiple path components in line */
- return (char *) __XOS2RedirRoot (pathname);
-#endif
-}
-
-#define CLEANUP xf86freeFiles
-
-XF86ConfFilesPtr
-xf86parseFilesSection (void)
-{
- int i, j;
- int k, l;
- char *str;
- int token;
- parsePrologue (XF86ConfFilesPtr, XF86ConfFilesRec)
-
- while ((token = xf86getToken (FilesTab)) != ENDSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->file_comment = xf86addComment(ptr->file_comment, val.str);
- break;
- case FONTPATH:
- if (xf86getSubToken (&(ptr->file_comment)) != STRING)
- Error (QUOTE_MSG, "FontPath");
- j = FALSE;
- str = prependRoot (val.str);
- if (ptr->file_fontpath == NULL)
- {
- ptr->file_fontpath = xf86confmalloc (1);
- ptr->file_fontpath[0] = '\0';
- i = strlen (str) + 1;
- }
- else
- {
- i = strlen (ptr->file_fontpath) + strlen (str) + 1;
- if (ptr->file_fontpath[strlen (ptr->file_fontpath) - 1] != ',')
- {
- i++;
- j = TRUE;
- }
- }
- ptr->file_fontpath =
- xf86confrealloc (ptr->file_fontpath, i);
- if (j)
- strcat (ptr->file_fontpath, ",");
-
- strcat (ptr->file_fontpath, str);
- xf86conffree (val.str);
- break;
- case RGBPATH:
- if (xf86getSubToken (&(ptr->file_comment)) != STRING)
- Error (QUOTE_MSG, "RGBPath");
- ptr->file_rgbpath = val.str;
- break;
- case MODULEPATH:
- if (xf86getSubToken (&(ptr->file_comment)) != STRING)
- Error (QUOTE_MSG, "ModulePath");
- l = FALSE;
- str = prependRoot (val.str);
- if (ptr->file_modulepath == NULL)
- {
- ptr->file_modulepath = xf86confmalloc (1);
- ptr->file_modulepath[0] = '\0';
- k = strlen (str) + 1;
- }
- else
- {
- k = strlen (ptr->file_modulepath) + strlen (str) + 1;
- if (ptr->file_modulepath[strlen (ptr->file_modulepath) - 1] != ',')
- {
- k++;
- l = TRUE;
- }
- }
- ptr->file_modulepath = xf86confrealloc (ptr->file_modulepath, k);
- if (l)
- strcat (ptr->file_modulepath, ",");
-
- strcat (ptr->file_modulepath, str);
- xf86conffree (val.str);
- break;
- case INPUTDEVICES:
- if (xf86getSubToken (&(ptr->file_comment)) != STRING)
- Error (QUOTE_MSG, "InputDevices");
- l = FALSE;
- str = prependRoot (val.str);
- if (ptr->file_inputdevs == NULL)
- {
- ptr->file_inputdevs = xf86confmalloc (1);
- ptr->file_inputdevs[0] = '\0';
- k = strlen (str) + 1;
- }
- else
- {
- k = strlen (ptr->file_inputdevs) + strlen (str) + 1;
- if (ptr->file_inputdevs[strlen (ptr->file_inputdevs) - 1] != ',')
- {
- k++;
- l = TRUE;
- }
- }
- ptr->file_inputdevs = xf86confrealloc (ptr->file_inputdevs, k);
- if (l)
- strcat (ptr->file_inputdevs, ",");
-
- strcat (ptr->file_inputdevs, str);
- xf86conffree (val.str);
- break;
- case LOGFILEPATH:
- if (xf86getSubToken (&(ptr->file_comment)) != STRING)
- Error (QUOTE_MSG, "LogFile");
- ptr->file_logfile = val.str;
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
-#ifdef DEBUG
- printf ("File section parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-void
-xf86printFileSection (FILE * cf, XF86ConfFilesPtr ptr)
-{
- char *p, *s;
-
- if (ptr == NULL)
- return;
-
- if (ptr->file_comment)
- fprintf (cf, "%s", ptr->file_comment);
- if (ptr->file_logfile)
- fprintf (cf, "\tLogFile \"%s\"\n", ptr->file_logfile);
- if (ptr->file_rgbpath)
- fprintf (cf, "\tRgbPath \"%s\"\n", ptr->file_rgbpath);
- if (ptr->file_modulepath)
- {
- s = ptr->file_modulepath;
- p = index (s, ',');
- while (p)
- {
- *p = '\000';
- fprintf (cf, "\tModulePath \"%s\"\n", s);
- *p = ',';
- s = p;
- s++;
- p = index (s, ',');
- }
- fprintf (cf, "\tModulePath \"%s\"\n", s);
- }
- if (ptr->file_inputdevs)
- {
- s = ptr->file_inputdevs;
- p = index (s, ',');
- while (p)
- {
- *p = '\000';
- fprintf (cf, "\tInputDevices \"%s\"\n", s);
- *p = ',';
- s = p;
- s++;
- p = index (s, ',');
- }
- fprintf (cf, "\tInputdevs \"%s\"\n", s);
- }
- if (ptr->file_fontpath)
- {
- s = ptr->file_fontpath;
- p = index (s, ',');
- while (p)
- {
- *p = '\000';
- fprintf (cf, "\tFontPath \"%s\"\n", s);
- *p = ',';
- s = p;
- s++;
- p = index (s, ',');
- }
- fprintf (cf, "\tFontPath \"%s\"\n", s);
- }
-}
-
-void
-xf86freeFiles (XF86ConfFilesPtr p)
-{
- if (p == NULL)
- return;
-
- TestFree (p->file_logfile);
- TestFree (p->file_rgbpath);
- TestFree (p->file_modulepath);
- TestFree (p->file_inputdevs);
- TestFree (p->file_fontpath);
- TestFree (p->file_comment);
-
- xf86conffree (p);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Flags.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Flags.c
deleted file mode 100644
index bda24df1b..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Flags.c
+++ /dev/null
@@ -1,525 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Flags.c,v 1.23 2003/08/24 17:37:07 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-#include <math.h>
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec ServerFlagsTab[] =
-{
- {ENDSECTION, "endsection"},
- {NOTRAPSIGNALS, "notrapsignals"},
- {DONTZAP, "dontzap"},
- {DONTZOOM, "dontzoom"},
- {DISABLEVIDMODE, "disablevidmodeextension"},
- {ALLOWNONLOCAL, "allownonlocalxvidtune"},
- {DISABLEMODINDEV, "disablemodindev"},
- {MODINDEVALLOWNONLOCAL, "allownonlocalmodindev"},
- {ALLOWMOUSEOPENFAIL, "allowmouseopenfail"},
- {OPTION, "option"},
- {BLANKTIME, "blanktime"},
- {STANDBYTIME, "standbytime"},
- {SUSPENDTIME, "suspendtime"},
- {OFFTIME, "offtime"},
- {DEFAULTLAYOUT, "defaultserverlayout"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeFlags
-
-XF86ConfFlagsPtr
-xf86parseFlagsSection (void)
-{
- int token;
- parsePrologue (XF86ConfFlagsPtr, XF86ConfFlagsRec)
-
- while ((token = xf86getToken (ServerFlagsTab)) != ENDSECTION)
- {
- int hasvalue = FALSE;
- int strvalue = FALSE;
- int tokentype;
- switch (token)
- {
- case COMMENT:
- ptr->flg_comment = xf86addComment(ptr->flg_comment, val.str);
- break;
- /*
- * these old keywords are turned into standard generic options.
- * we fall through here on purpose
- */
- case DEFAULTLAYOUT:
- strvalue = TRUE;
- case BLANKTIME:
- case STANDBYTIME:
- case SUSPENDTIME:
- case OFFTIME:
- hasvalue = TRUE;
- case NOTRAPSIGNALS:
- case DONTZAP:
- case DONTZOOM:
- case DISABLEVIDMODE:
- case ALLOWNONLOCAL:
- case DISABLEMODINDEV:
- case MODINDEVALLOWNONLOCAL:
- case ALLOWMOUSEOPENFAIL:
- {
- int i = 0;
- while (ServerFlagsTab[i].token != -1)
- {
- char *tmp;
-
- if (ServerFlagsTab[i].token == token)
- {
- char *valstr = NULL;
- /* can't use strdup because it calls malloc */
- tmp = xf86configStrdup (ServerFlagsTab[i].name);
- if (hasvalue)
- {
- tokentype = xf86getSubToken(&(ptr->flg_comment));
- if (strvalue) {
- if (tokentype != STRING)
- Error (QUOTE_MSG, tmp);
- valstr = val.str;
- } else {
- if (tokentype != NUMBER)
- Error (NUMBER_MSG, tmp);
- valstr = xf86confmalloc(16);
- if (valstr)
- sprintf(valstr, "%d", val.num);
- }
- }
- ptr->flg_option_lst = xf86addNewOption
- (ptr->flg_option_lst, tmp, valstr);
- }
- i++;
- }
- }
- break;
- case OPTION:
- ptr->flg_option_lst = xf86parseOption(ptr->flg_option_lst);
- break;
-
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
-#ifdef DEBUG
- printf ("Flags section parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-void
-xf86printServerFlagsSection (FILE * f, XF86ConfFlagsPtr flags)
-{
- XF86OptionPtr p;
-
- if ((!flags) || (!flags->flg_option_lst))
- return;
- p = flags->flg_option_lst;
- fprintf (f, "Section \"ServerFlags\"\n");
- if (flags->flg_comment)
- fprintf (f, "%s", flags->flg_comment);
- xf86printOptionList(f, p, 1);
- fprintf (f, "EndSection\n\n");
-}
-
-static XF86OptionPtr
-addNewOption2 (XF86OptionPtr head, char *name, char *val, int used)
-{
- XF86OptionPtr new, old = NULL;
-
- /* Don't allow duplicates */
- if (head != NULL && (old = xf86findOption(head, name)) != NULL)
- new = old;
- else {
- new = xf86confcalloc (1, sizeof (XF86OptionRec));
- new->list.next = NULL;
- }
- new->opt_name = name;
- new->opt_val = val;
- new->opt_used = used;
-
- if (old == NULL)
- return ((XF86OptionPtr) xf86addListItem ((glp) head, (glp) new));
- else
- return head;
-}
-
-XF86OptionPtr
-xf86addNewOption (XF86OptionPtr head, char *name, char *val)
-{
- return addNewOption2(head, name, val, 0);
-}
-
-void
-xf86freeFlags (XF86ConfFlagsPtr flags)
-{
- if (flags == NULL)
- return;
- xf86optionListFree (flags->flg_option_lst);
- TestFree(flags->flg_comment);
- xf86conffree (flags);
-}
-
-XF86OptionPtr
-xf86optionListDup (XF86OptionPtr opt)
-{
- XF86OptionPtr newopt = NULL;
-
- while (opt)
- {
- newopt = xf86addNewOption(newopt, xf86configStrdup(opt->opt_name),
- xf86configStrdup(opt->opt_val));
- newopt->opt_used = opt->opt_used;
- if (opt->opt_comment)
- newopt->opt_comment = xf86configStrdup(opt->opt_comment);
- opt = opt->list.next;
- }
- return newopt;
-}
-
-void
-xf86optionListFree (XF86OptionPtr opt)
-{
- XF86OptionPtr prev;
-
- while (opt)
- {
- TestFree (opt->opt_name);
- TestFree (opt->opt_val);
- TestFree (opt->opt_comment);
- prev = opt;
- opt = opt->list.next;
- xf86conffree (prev);
- }
-}
-
-char *
-xf86optionName(XF86OptionPtr opt)
-{
- if (opt)
- return opt->opt_name;
- return 0;
-}
-
-char *
-xf86optionValue(XF86OptionPtr opt)
-{
- if (opt)
- return opt->opt_val;
- return 0;
-}
-
-XF86OptionPtr
-xf86newOption(char *name, char *value)
-{
- XF86OptionPtr opt;
-
- opt = xf86confcalloc(1, sizeof (XF86OptionRec));
- if (!opt)
- return NULL;
-
- opt->opt_used = 0;
- opt->list.next = 0;
- opt->opt_name = name;
- opt->opt_val = value;
-
- return opt;
-}
-
-XF86OptionPtr
-xf86nextOption(XF86OptionPtr list)
-{
- if (!list)
- return NULL;
- return list->list.next;
-}
-
-/*
- * this function searches the given option list for the named option and
- * returns a pointer to the option rec if found. If not found, it returns
- * NULL
- */
-
-XF86OptionPtr
-xf86findOption (XF86OptionPtr list, const char *name)
-{
- while (list)
- {
- if (xf86nameCompare (list->opt_name, name) == 0)
- return (list);
- list = list->list.next;
- }
- return (NULL);
-}
-
-/*
- * this function searches the given option list for the named option. If
- * found and the option has a parameter, a pointer to the parameter is
- * returned. If the option does not have a parameter an empty string is
- * returned. If the option is not found, a NULL is returned.
- */
-
-char *
-xf86findOptionValue (XF86OptionPtr list, const char *name)
-{
- XF86OptionPtr p = xf86findOption (list, name);
-
- if (p)
- {
- if (p->opt_val)
- return (p->opt_val);
- else
- return "";
- }
- return (NULL);
-}
-
-XF86OptionPtr
-xf86optionListCreate( const char **options, int count, int used )
-{
- XF86OptionPtr p = NULL;
- char *t1, *t2;
- int i;
-
- if (count == -1)
- {
- for (count = 0; options[count]; count++)
- ;
- }
- if( (count % 2) != 0 )
- {
- fprintf( stderr, "xf86optionListCreate: count must be an even number.\n" );
- return (NULL);
- }
- for (i = 0; i < count; i += 2)
- {
- /* can't use strdup because it calls malloc */
- t1 = xf86confmalloc (sizeof (char) *
- (strlen (options[i]) + 1));
- strcpy (t1, options[i]);
- t2 = xf86confmalloc (sizeof (char) *
- (strlen (options[i + 1]) + 1));
- strcpy (t2, options[i + 1]);
- p = addNewOption2 (p, t1, t2, used);
- }
-
- return (p);
-}
-
-/* the 2 given lists are merged. If an option with the same name is present in
- * both, the option from the user list - specified in the second argument -
- * is used. The end result is a single valid list of options. Duplicates
- * are freed, and the original lists are no longer guaranteed to be complete.
- */
-XF86OptionPtr
-xf86optionListMerge (XF86OptionPtr head, XF86OptionPtr tail)
-{
- XF86OptionPtr a, b, ap = NULL, bp = NULL;
-
- a = tail;
- b = head;
- while (tail && b) {
- if (xf86nameCompare (a->opt_name, b->opt_name) == 0) {
- if (b == head)
- head = a;
- else
- bp->list.next = a;
- if (a == tail)
- tail = a->list.next;
- else
- ap->list.next = a->list.next;
- a->list.next = b->list.next;
- b->list.next = NULL;
- xf86optionListFree (b);
- b = a->list.next;
- bp = a;
- a = tail;
- ap = NULL;
- } else {
- ap = a;
- if (!(a = a->list.next)) {
- a = tail;
- bp = b;
- b = b->list.next;
- ap = NULL;
- }
- }
- }
-
- if (head) {
- for (a = head; a->list.next; a = a->list.next)
- ;
- a->list.next = tail;
- } else
- head = tail;
-
- return (head);
-}
-
-char *
-xf86uLongToString(unsigned long i)
-{
- char *s;
- int l;
-
- l = (int)(ceil(log10((double)i) + 2.5));
- s = xf86confmalloc(l);
- if (!s)
- return NULL;
- sprintf(s, "%lu", i);
- return s;
-}
-
-void
-xf86debugListOptions(XF86OptionPtr Options)
-{
- while (Options) {
- ErrorF("Option: %s Value: %s\n",Options->opt_name,Options->opt_val);
- Options = Options->list.next;
- }
-}
-
-XF86OptionPtr
-xf86parseOption(XF86OptionPtr head)
-{
- XF86OptionPtr option, cnew, old;
- char *name, *comment = NULL;
- int token;
-
- if ((token = xf86getSubToken(&comment)) != STRING) {
- xf86parseError(BAD_OPTION_MSG, NULL);
- if (comment)
- xf86conffree(comment);
- return (head);
- }
-
- name = val.str;
- if ((token = xf86getSubToken(&comment)) == STRING) {
- option = xf86newOption(name, val.str);
- option->opt_comment = comment;
- if ((token = xf86getToken(NULL)) == COMMENT)
- option->opt_comment = xf86addComment(option->opt_comment, val.str);
- else
- xf86unGetToken(token);
- }
- else {
- option = xf86newOption(name, NULL);
- option->opt_comment = comment;
- if (token == COMMENT)
- option->opt_comment = xf86addComment(option->opt_comment, val.str);
- else
- xf86unGetToken(token);
- }
-
- old = NULL;
-
- /* Don't allow duplicates */
- if (head != NULL && (old = xf86findOption(head, name)) != NULL) {
- cnew = old;
- xf86conffree(option->opt_name);
- TestFree(option->opt_val);
- TestFree(option->opt_comment);
- xf86conffree(option);
- }
- else
- cnew = option;
-
- if (old == NULL)
- return ((XF86OptionPtr)xf86addListItem((glp)head, (glp)cnew));
-
- return (head);
-}
-
-void
-xf86printOptionList(FILE *fp, XF86OptionPtr list, int tabs)
-{
- int i;
-
- if (!list)
- return;
- while (list) {
- for (i = 0; i < tabs; i++)
- fputc('\t', fp);
- if (list->opt_val)
- fprintf(fp, "Option \"%s\" \"%s\"", list->opt_name, list->opt_val);
- else
- fprintf(fp, "Option \"%s\"", list->opt_name);
- if (list->opt_comment)
- fprintf(fp, "%s", list->opt_comment);
- else
- fputc('\n', fp);
- list = list->list.next;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/parser/Imakefile
deleted file mode 100644
index 29708b64b..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Imakefile
+++ /dev/null
@@ -1,51 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Imakefile,v 1.12 2001/01/12 19:28:35 dawes Exp $ */
-
-
-
-#define DoNormalLib YES
-#define DoSharedLib NO
-#define DoDebugLib NO
-#define DoProfileLib NO
-#define HasSharedData NO
-#define LibName xf86config
-
-#define UseDBMalloc NO
-
-#if UseDBMalloc
-SYS_LIBRARIES=-ldbmalloc
-DBMALLOCDEFINE=-DDBMALLOC
-#endif
-
-SYS_LIBRARIES = MathLibrary
-
-XCONFIGFILE = XConfigFile
-XCONFIGDIR = XConfigDir
-#if defined XFree86Version
-XVERS = XFree86Version
-#elif defined (XorgVersion)
-XVERS = XorgVersion
-#endif
-
-INCLUDES = -I. -I$(XF86OSSRC)
-
-HEADERS = xf86Parser.h xf86Optrec.h
-
-SRCS = Device.c Files.c Flags.c Input.c Keyboard.c Layout.c Module.c \
- Video.c Monitor.c Pointer.c Screen.c Vendor.c read.c scan.c write.c \
- DRI.c Extensions.c
-OBJS = Device.o Files.o Flags.o Input.o Keyboard.o Layout.o Module.o \
- Video.o Monitor.o Pointer.o Screen.o Vendor.o read.o scan.o write.o \
- DRI.o Extensions.o
-
-CONFIG_DEFINES = -DXCONFIGDIR=\"$(XCONFIGDIR)\" \
- -DXCONFIGFILE=\"$(XCONFIGFILE)\" \
- -DXVERSION="$(XVERS)"
-
-#include <Library.tmpl>
-
-SpecialCObjectRule(scan,NullParameter,$(CONFIG_DEFINES) $(MODULEDEFINES) $(EXT_DEFINES))
-
-NormalProgramTarget(cpconfig,cpconfig.o $(OBJS),NullParameter,$(LOCAL_LIBRARIES),NullParameter)
-
-AllTarget(ProgramTargetName(cpconfig))
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Input.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Input.c
deleted file mode 100644
index 9f9323f05..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Input.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Input.c,v 1.14 2003/08/24 17:37:07 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-extern LexRec val;
-
-static
-xf86ConfigSymTabRec InputTab[] =
-{
- {ENDSECTION, "endsection"},
- {IDENTIFIER, "identifier"},
- {OPTION, "option"},
- {DRIVER, "driver"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeInputList
-
-XF86ConfInputPtr
-xf86parseInputSection (void)
-{
- int has_ident = FALSE;
- int token;
- parsePrologue (XF86ConfInputPtr, XF86ConfInputRec)
-
- while ((token = xf86getToken (InputTab)) != ENDSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->inp_comment = xf86addComment(ptr->inp_comment, val.str);
- break;
- case IDENTIFIER:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "Identifier");
- if (has_ident == TRUE)
- Error (MULTIPLE_MSG, "Identifier");
- ptr->inp_identifier = val.str;
- has_ident = TRUE;
- break;
- case DRIVER:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "Driver");
- ptr->inp_driver = val.str;
- break;
- case OPTION:
- ptr->inp_option_lst = xf86parseOption(ptr->inp_option_lst);
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
- if (!has_ident)
- Error (NO_IDENT_MSG, NULL);
-
-#ifdef DEBUG
- printf ("InputDevice section parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-void
-xf86printInputSection (FILE * cf, XF86ConfInputPtr ptr)
-{
- while (ptr)
- {
- fprintf (cf, "Section \"InputDevice\"\n");
- if (ptr->inp_comment)
- fprintf (cf, "%s", ptr->inp_comment);
- if (ptr->inp_identifier)
- fprintf (cf, "\tIdentifier \"%s\"\n", ptr->inp_identifier);
- if (ptr->inp_driver)
- fprintf (cf, "\tDriver \"%s\"\n", ptr->inp_driver);
- xf86printOptionList(cf, ptr->inp_option_lst, 1);
- fprintf (cf, "EndSection\n\n");
- ptr = ptr->list.next;
- }
-}
-
-void
-xf86freeInputList (XF86ConfInputPtr ptr)
-{
- XF86ConfInputPtr prev;
-
- while (ptr)
- {
- TestFree (ptr->inp_identifier);
- TestFree (ptr->inp_driver);
- TestFree (ptr->inp_comment);
- xf86optionListFree (ptr->inp_option_lst);
-
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-int
-xf86validateInput (XF86ConfigPtr p)
-{
- XF86ConfInputPtr input = p->conf_input_lst;
-
-#if 0 /* Enable this later */
- if (!input) {
- xf86validationError ("At least one InputDevice section is required.");
- return (FALSE);
- }
-#endif
-
- while (input) {
- if (!input->inp_driver) {
- xf86validationError (UNDEFINED_INPUTDRIVER_MSG, input->inp_identifier);
- return (FALSE);
- }
- input = input->list.next;
- }
- return (TRUE);
-}
-
-XF86ConfInputPtr
-xf86findInput (const char *ident, XF86ConfInputPtr p)
-{
- while (p)
- {
- if (xf86nameCompare (ident, p->inp_identifier) == 0)
- return (p);
-
- p = p->list.next;
- }
- return (NULL);
-}
-
-XF86ConfInputPtr
-xf86findInputByDriver (const char *driver, XF86ConfInputPtr p)
-{
- while (p)
- {
- if (xf86nameCompare (driver, p->inp_driver) == 0)
- return (p);
-
- p = p->list.next;
- }
- return (NULL);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Keyboard.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Keyboard.c
deleted file mode 100644
index 4ba893a9d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Keyboard.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Keyboard.c,v 1.17 2003/08/24 17:37:07 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-#include "ctype.h"
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec KeyboardTab[] =
-{
- {ENDSECTION, "endsection"},
- {KPROTOCOL, "protocol"},
- {AUTOREPEAT, "autorepeat"},
- {XLEDS, "xleds"},
- {PANIX106, "panix106"},
- {XKBKEYMAP, "xkbkeymap"},
- {XKBCOMPAT, "xkbcompat"},
- {XKBTYPES, "xkbtypes"},
- {XKBKEYCODES, "xkbkeycodes"},
- {XKBGEOMETRY, "xkbgeometry"},
- {XKBSYMBOLS, "xkbsymbols"},
- {XKBDISABLE, "xkbdisable"},
- {XKBRULES, "xkbrules"},
- {XKBMODEL, "xkbmodel"},
- {XKBLAYOUT, "xkblayout"},
- {XKBVARIANT, "xkbvariant"},
- {XKBOPTIONS, "xkboptions"},
- /* The next two have become ServerFlags options */
- {VTINIT, "vtinit"},
- {VTSYSREQ, "vtsysreq"},
- /* Obsolete keywords */
- {SERVERNUM, "servernumlock"},
- {LEFTALT, "leftalt"},
- {RIGHTALT, "rightalt"},
- {RIGHTALT, "altgr"},
- {SCROLLLOCK_TOK, "scrolllock"},
- {RIGHTCTL, "rightctl"},
- {-1, ""},
-};
-
-/* Obsolete */
-static xf86ConfigSymTabRec KeyMapTab[] =
-{
- {CONF_KM_META, "meta"},
- {CONF_KM_COMPOSE, "compose"},
- {CONF_KM_MODESHIFT, "modeshift"},
- {CONF_KM_MODELOCK, "modelock"},
- {CONF_KM_SCROLLLOCK, "scrolllock"},
- {CONF_KM_CONTROL, "control"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeInputList
-
-XF86ConfInputPtr
-xf86parseKeyboardSection (void)
-{
- char *s, *s1, *s2;
- int l;
- int token, ntoken;
- parsePrologue (XF86ConfInputPtr, XF86ConfInputRec)
-
- while ((token = xf86getToken (KeyboardTab)) != ENDSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->inp_comment = xf86addComment(ptr->inp_comment, val.str);
- break;
- case KPROTOCOL:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "Protocol");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("Protocol"),
- val.str);
- break;
- case AUTOREPEAT:
- if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER)
- Error (AUTOREPEAT_MSG, NULL);
- s1 = xf86uLongToString(val.num);
- if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER)
- Error (AUTOREPEAT_MSG, NULL);
- s2 = xf86uLongToString(val.num);
- l = strlen(s1) + 1 + strlen(s2) + 1;
- s = xf86confmalloc(l);
- sprintf(s, "%s %s", s1, s2);
- xf86conffree(s1);
- xf86conffree(s2);
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("AutoRepeat"), s);
- break;
- case XLEDS:
- if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER)
- Error (XLEDS_MSG, NULL);
- s = xf86uLongToString(val.num);
- l = strlen(s) + 1;
- while ((token = xf86getSubToken (&(ptr->inp_comment))) == NUMBER)
- {
- s1 = xf86uLongToString(val.num);
- l += (1 + strlen(s1));
- s = xf86confrealloc(s, l);
- strcat(s, " ");
- strcat(s, s1);
- xf86conffree(s1);
- }
- xf86unGetToken (token);
- break;
- case SERVERNUM:
- xf86parseWarning(OBSOLETE_MSG, xf86tokenString());
- break;
- case LEFTALT:
- case RIGHTALT:
- case SCROLLLOCK_TOK:
- case RIGHTCTL:
- xf86parseWarning(OBSOLETE_MSG, xf86tokenString());
- break;
- ntoken = xf86getToken (KeyMapTab);
- switch (ntoken)
- {
- case EOF_TOKEN:
- xf86parseError (UNEXPECTED_EOF_MSG);
- CLEANUP (ptr);
- return (NULL);
- break;
-
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- break;
- case VTINIT:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "VTInit");
- xf86parseWarning(MOVED_TO_FLAGS_MSG, "VTInit");
- break;
- case VTSYSREQ:
- xf86parseWarning(MOVED_TO_FLAGS_MSG, "VTSysReq");
- break;
- case XKBDISABLE:
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("XkbDisable"),
- NULL);
- break;
- case XKBKEYMAP:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "XKBKeymap");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("XkbKeymap"),
- val.str);
- break;
- case XKBCOMPAT:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "XKBCompat");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("XkbCompat"),
- val.str);
- break;
- case XKBTYPES:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "XKBTypes");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("XkbTypes"),
- val.str);
- break;
- case XKBKEYCODES:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "XKBKeycodes");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("XkbKeycodes"),
- val.str);
- break;
- case XKBGEOMETRY:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "XKBGeometry");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("XkbGeometry"),
- val.str);
- break;
- case XKBSYMBOLS:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "XKBSymbols");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("XkbSymbols"),
- val.str);
- break;
- case XKBRULES:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "XKBRules");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("XkbRules"),
- val.str);
- break;
- case XKBMODEL:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "XKBModel");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("XkbModel"),
- val.str);
- break;
- case XKBLAYOUT:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "XKBLayout");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("XkbLayout"),
- val.str);
- break;
- case XKBVARIANT:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "XKBVariant");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("XkbVariant"),
- val.str);
- break;
- case XKBOPTIONS:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "XKBOptions");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("XkbOptions"),
- val.str);
- break;
- case PANIX106:
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("Panix106"), NULL);
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
- ptr->inp_identifier = xf86configStrdup(CONF_IMPLICIT_KEYBOARD);
- ptr->inp_driver = xf86configStrdup("keyboard");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("CoreKeyboard"), NULL);
-
-#ifdef DEBUG
- printf ("Keyboard section parsed\n");
-#endif
-
- return ptr;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Layout.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Layout.c
deleted file mode 100644
index 56d92a79c..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Layout.c
+++ /dev/null
@@ -1,513 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Layout.c,v 1.24 2003/08/24 17:37:07 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-#include <string.h>
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec LayoutTab[] =
-{
- {ENDSECTION, "endsection"},
- {SCREEN, "screen"},
- {IDENTIFIER, "identifier"},
- {INACTIVE, "inactive"},
- {INPUTDEVICE, "inputdevice"},
- {OPTION, "option"},
- {-1, ""},
-};
-
-static xf86ConfigSymTabRec AdjTab[] =
-{
- {RIGHTOF, "rightof"},
- {LEFTOF, "leftof"},
- {ABOVE, "above"},
- {BELOW, "below"},
- {RELATIVE, "relative"},
- {ABSOLUTE, "absolute"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeLayoutList
-
-XF86ConfLayoutPtr
-xf86parseLayoutSection (void)
-{
- int has_ident = FALSE;
- int token;
- parsePrologue (XF86ConfLayoutPtr, XF86ConfLayoutRec)
-
- while ((token = xf86getToken (LayoutTab)) != ENDSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->lay_comment = xf86addComment(ptr->lay_comment, val.str);
- break;
- case IDENTIFIER:
- if (xf86getSubToken (&(ptr->lay_comment)) != STRING)
- Error (QUOTE_MSG, "Identifier");
- if (has_ident == TRUE)
- Error (MULTIPLE_MSG, "Identifier");
- ptr->lay_identifier = val.str;
- has_ident = TRUE;
- break;
- case INACTIVE:
- {
- XF86ConfInactivePtr iptr;
-
- iptr = xf86confcalloc (1, sizeof (XF86ConfInactiveRec));
- iptr->list.next = NULL;
- if (xf86getSubToken (&(ptr->lay_comment)) != STRING)
- Error (INACTIVE_MSG, NULL);
- iptr->inactive_device_str = val.str;
- ptr->lay_inactive_lst = (XF86ConfInactivePtr)
- xf86addListItem ((glp) ptr->lay_inactive_lst, (glp) iptr);
- }
- break;
- case SCREEN:
- {
- XF86ConfAdjacencyPtr aptr;
- int absKeyword = 0;
-
- aptr = xf86confcalloc (1, sizeof (XF86ConfAdjacencyRec));
- aptr->list.next = NULL;
- aptr->adj_scrnum = -1;
- aptr->adj_where = CONF_ADJ_OBSOLETE;
- aptr->adj_x = 0;
- aptr->adj_y = 0;
- aptr->adj_refscreen = NULL;
- if ((token = xf86getSubToken (&(ptr->lay_comment))) == NUMBER)
- aptr->adj_scrnum = val.num;
- else
- xf86unGetToken (token);
- token = xf86getSubToken(&(ptr->lay_comment));
- if (token != STRING)
- Error (SCREEN_MSG, NULL);
- aptr->adj_screen_str = val.str;
-
- token = xf86getSubTokenWithTab(&(ptr->lay_comment), AdjTab);
- switch (token)
- {
- case RIGHTOF:
- aptr->adj_where = CONF_ADJ_RIGHTOF;
- break;
- case LEFTOF:
- aptr->adj_where = CONF_ADJ_LEFTOF;
- break;
- case ABOVE:
- aptr->adj_where = CONF_ADJ_ABOVE;
- break;
- case BELOW:
- aptr->adj_where = CONF_ADJ_BELOW;
- break;
- case RELATIVE:
- aptr->adj_where = CONF_ADJ_RELATIVE;
- break;
- case ABSOLUTE:
- aptr->adj_where = CONF_ADJ_ABSOLUTE;
- absKeyword = 1;
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- xf86unGetToken (token);
- token = xf86getSubToken(&(ptr->lay_comment));
- if (token == STRING)
- aptr->adj_where = CONF_ADJ_OBSOLETE;
- else
- aptr->adj_where = CONF_ADJ_ABSOLUTE;
- }
- switch (aptr->adj_where)
- {
- case CONF_ADJ_ABSOLUTE:
- if (absKeyword)
- token = xf86getSubToken(&(ptr->lay_comment));
- if (token == NUMBER)
- {
- aptr->adj_x = val.num;
- token = xf86getSubToken(&(ptr->lay_comment));
- if (token != NUMBER)
- Error(INVALID_SCR_MSG, NULL);
- aptr->adj_y = val.num;
- } else {
- if (absKeyword)
- Error(INVALID_SCR_MSG, NULL);
- else
- xf86unGetToken (token);
- }
- break;
- case CONF_ADJ_RIGHTOF:
- case CONF_ADJ_LEFTOF:
- case CONF_ADJ_ABOVE:
- case CONF_ADJ_BELOW:
- case CONF_ADJ_RELATIVE:
- token = xf86getSubToken(&(ptr->lay_comment));
- if (token != STRING)
- Error(INVALID_SCR_MSG, NULL);
- aptr->adj_refscreen = val.str;
- if (aptr->adj_where == CONF_ADJ_RELATIVE)
- {
- token = xf86getSubToken(&(ptr->lay_comment));
- if (token != NUMBER)
- Error(INVALID_SCR_MSG, NULL);
- aptr->adj_x = val.num;
- token = xf86getSubToken(&(ptr->lay_comment));
- if (token != NUMBER)
- Error(INVALID_SCR_MSG, NULL);
- aptr->adj_y = val.num;
- }
- break;
- case CONF_ADJ_OBSOLETE:
- /* top */
- aptr->adj_top_str = val.str;
-
- /* bottom */
- if (xf86getSubToken (&(ptr->lay_comment)) != STRING)
- Error (SCREEN_MSG, NULL);
- aptr->adj_bottom_str = val.str;
-
- /* left */
- if (xf86getSubToken (&(ptr->lay_comment)) != STRING)
- Error (SCREEN_MSG, NULL);
- aptr->adj_left_str = val.str;
-
- /* right */
- if (xf86getSubToken (&(ptr->lay_comment)) != STRING)
- Error (SCREEN_MSG, NULL);
- aptr->adj_right_str = val.str;
-
- }
- ptr->lay_adjacency_lst = (XF86ConfAdjacencyPtr)
- xf86addListItem ((glp) ptr->lay_adjacency_lst, (glp) aptr);
- }
- break;
- case INPUTDEVICE:
- {
- XF86ConfInputrefPtr iptr;
-
- iptr = xf86confcalloc (1, sizeof (XF86ConfInputrefRec));
- iptr->list.next = NULL;
- iptr->iref_option_lst = NULL;
- if (xf86getSubToken (&(ptr->lay_comment)) != STRING)
- Error (INPUTDEV_MSG, NULL);
- iptr->iref_inputdev_str = val.str;
- while ((token = xf86getSubToken (&(ptr->lay_comment))) == STRING)
- {
- iptr->iref_option_lst =
- xf86addNewOption (iptr->iref_option_lst, val.str, NULL);
- }
- xf86unGetToken (token);
- ptr->lay_input_lst = (XF86ConfInputrefPtr)
- xf86addListItem ((glp) ptr->lay_input_lst, (glp) iptr);
- }
- break;
- case OPTION:
- ptr->lay_option_lst = xf86parseOption(ptr->lay_option_lst);
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
- if (!has_ident)
- Error (NO_IDENT_MSG, NULL);
-
-#ifdef DEBUG
- printf ("Layout section parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-void
-xf86printLayoutSection (FILE * cf, XF86ConfLayoutPtr ptr)
-{
- XF86ConfAdjacencyPtr aptr;
- XF86ConfInactivePtr iptr;
- XF86ConfInputrefPtr inptr;
- XF86OptionPtr optr;
-
- while (ptr)
- {
- fprintf (cf, "Section \"ServerLayout\"\n");
- if (ptr->lay_comment)
- fprintf (cf, "%s", ptr->lay_comment);
- if (ptr->lay_identifier)
- fprintf (cf, "\tIdentifier \"%s\"\n", ptr->lay_identifier);
-
- for (aptr = ptr->lay_adjacency_lst; aptr; aptr = aptr->list.next)
- {
- fprintf (cf, "\tScreen ");
- if (aptr->adj_scrnum >= 0)
- fprintf (cf, "%2d", aptr->adj_scrnum);
- else
- fprintf (cf, " ");
- fprintf (cf, " \"%s\"", aptr->adj_screen_str);
- switch(aptr->adj_where)
- {
- case CONF_ADJ_OBSOLETE:
- fprintf (cf, " \"%s\"", aptr->adj_top_str);
- fprintf (cf, " \"%s\"", aptr->adj_bottom_str);
- fprintf (cf, " \"%s\"", aptr->adj_right_str);
- fprintf (cf, " \"%s\"\n", aptr->adj_left_str);
- break;
- case CONF_ADJ_ABSOLUTE:
- if (aptr->adj_x != -1)
- fprintf (cf, " %d %d\n", aptr->adj_x, aptr->adj_y);
- else
- fprintf (cf, "\n");
- break;
- case CONF_ADJ_RIGHTOF:
- fprintf (cf, " RightOf \"%s\"\n", aptr->adj_refscreen);
- break;
- case CONF_ADJ_LEFTOF:
- fprintf (cf, " LeftOf \"%s\"\n", aptr->adj_refscreen);
- break;
- case CONF_ADJ_ABOVE:
- fprintf (cf, " Above \"%s\"\n", aptr->adj_refscreen);
- break;
- case CONF_ADJ_BELOW:
- fprintf (cf, " Below \"%s\"\n", aptr->adj_refscreen);
- break;
- case CONF_ADJ_RELATIVE:
- fprintf (cf, " Relative \"%s\" %d %d\n", aptr->adj_refscreen,
- aptr->adj_x, aptr->adj_y);
- break;
- }
- }
- for (iptr = ptr->lay_inactive_lst; iptr; iptr = iptr->list.next)
- fprintf (cf, "\tInactive \"%s\"\n", iptr->inactive_device_str);
- for (inptr = ptr->lay_input_lst; inptr; inptr = inptr->list.next)
- {
- fprintf (cf, "\tInputDevice \"%s\"", inptr->iref_inputdev_str);
- for (optr = inptr->iref_option_lst; optr; optr = optr->list.next)
- {
- fprintf(cf, " \"%s\"", optr->opt_name);
- }
- fprintf(cf, "\n");
- }
- xf86printOptionList(cf, ptr->lay_option_lst, 1);
- fprintf (cf, "EndSection\n\n");
- ptr = ptr->list.next;
- }
-}
-
-void
-xf86freeLayoutList (XF86ConfLayoutPtr ptr)
-{
- XF86ConfLayoutPtr prev;
-
- while (ptr)
- {
- TestFree (ptr->lay_identifier);
- TestFree (ptr->lay_comment);
- xf86freeAdjacencyList (ptr->lay_adjacency_lst);
- xf86freeInputrefList (ptr->lay_input_lst);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-void
-xf86freeAdjacencyList (XF86ConfAdjacencyPtr ptr)
-{
- XF86ConfAdjacencyPtr prev;
-
- while (ptr)
- {
- TestFree (ptr->adj_screen_str);
- TestFree (ptr->adj_top_str);
- TestFree (ptr->adj_bottom_str);
- TestFree (ptr->adj_left_str);
- TestFree (ptr->adj_right_str);
-
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-
-}
-
-void
-xf86freeInputrefList (XF86ConfInputrefPtr ptr)
-{
- XF86ConfInputrefPtr prev;
-
- while (ptr)
- {
- TestFree (ptr->iref_inputdev_str);
- xf86optionListFree (ptr->iref_option_lst);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-
-}
-
-#define CheckScreen(str, ptr)\
-if (str[0] != '\0') \
-{ \
-screen = xf86findScreen (str, p->conf_screen_lst); \
-if (!screen) \
-{ \
- xf86validationError (UNDEFINED_SCREEN_MSG, \
- str, layout->lay_identifier); \
- return (FALSE); \
-} \
-else \
- ptr = screen; \
-}
-
-int
-xf86validateLayout (XF86ConfigPtr p)
-{
- XF86ConfLayoutPtr layout = p->conf_layout_lst;
- XF86ConfAdjacencyPtr adj;
- XF86ConfInactivePtr iptr;
- XF86ConfInputrefPtr inptr;
- XF86ConfScreenPtr screen;
- XF86ConfDevicePtr device;
- XF86ConfInputPtr input;
-
- while (layout)
- {
- adj = layout->lay_adjacency_lst;
- while (adj)
- {
- /* the first one can't be "" but all others can */
- screen = xf86findScreen (adj->adj_screen_str, p->conf_screen_lst);
- if (!screen)
- {
- xf86validationError (UNDEFINED_SCREEN_MSG,
- adj->adj_screen_str, layout->lay_identifier);
- return (FALSE);
- }
- else
- adj->adj_screen = screen;
-
-#if 0
- CheckScreen (adj->adj_top_str, adj->adj_top);
- CheckScreen (adj->adj_bottom_str, adj->adj_bottom);
- CheckScreen (adj->adj_left_str, adj->adj_left);
- CheckScreen (adj->adj_right_str, adj->adj_right);
-#endif
-
- adj = adj->list.next;
- }
- iptr = layout->lay_inactive_lst;
- while (iptr)
- {
- device = xf86findDevice (iptr->inactive_device_str,
- p->conf_device_lst);
- if (!device)
- {
- xf86validationError (UNDEFINED_DEVICE_LAY_MSG,
- iptr->inactive_device_str, layout->lay_identifier);
- return (FALSE);
- }
- else
- iptr->inactive_device = device;
- iptr = iptr->list.next;
- }
- inptr = layout->lay_input_lst;
- while (inptr)
- {
- input = xf86findInput (inptr->iref_inputdev_str,
- p->conf_input_lst);
- if (!input)
- {
- xf86validationError (UNDEFINED_INPUT_MSG,
- inptr->iref_inputdev_str, layout->lay_identifier);
- return (FALSE);
- }
- else
- inptr->iref_inputdev = input;
- inptr = inptr->list.next;
- }
- layout = layout->list.next;
- }
- return (TRUE);
-}
-
-XF86ConfLayoutPtr
-xf86findLayout (const char *name, XF86ConfLayoutPtr list)
-{
- while (list)
- {
- if (xf86nameCompare (list->lay_identifier, name) == 0)
- return (list);
- list = list->list.next;
- }
- return (NULL);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Module.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Module.c
deleted file mode 100644
index 7a5a25207..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Module.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Module.c,v 1.12 2003/08/24 17:37:08 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec SubModuleTab[] =
-{
- {ENDSUBSECTION, "endsubsection"},
- {OPTION, "option"},
- {-1, ""},
-};
-
-static xf86ConfigSymTabRec ModuleTab[] =
-{
- {ENDSECTION, "endsection"},
- {LOAD, "load"},
- {LOAD_DRIVER, "loaddriver"},
- {SUBSECTION, "subsection"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeModules
-
-XF86LoadPtr
-xf86parseModuleSubSection (XF86LoadPtr head, char *name)
-{
- int token;
- parsePrologue (XF86LoadPtr, XF86LoadRec)
-
- ptr->load_name = name;
- ptr->load_type = XF86_LOAD_MODULE;
- ptr->load_opt = NULL;
- ptr->list.next = NULL;
-
- while ((token = xf86getToken (SubModuleTab)) != ENDSUBSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->load_comment = xf86addComment(ptr->load_comment, val.str);
- break;
- case OPTION:
- ptr->load_opt = xf86parseOption(ptr->load_opt);
- break;
- case EOF_TOKEN:
- xf86parseError (UNEXPECTED_EOF_MSG, NULL);
- xf86conffree(ptr);
- return NULL;
- default:
- xf86parseError (INVALID_KEYWORD_MSG, xf86tokenString ());
- xf86conffree(ptr);
- return NULL;
- break;
- }
-
- }
-
- return ((XF86LoadPtr) xf86addListItem ((glp) head, (glp) ptr));
-}
-
-XF86ConfModulePtr
-xf86parseModuleSection (void)
-{
- int token;
- parsePrologue (XF86ConfModulePtr, XF86ConfModuleRec)
-
- while ((token = xf86getToken (ModuleTab)) != ENDSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->mod_comment = xf86addComment(ptr->mod_comment, val.str);
- break;
- case LOAD:
- if (xf86getSubToken (&(ptr->mod_comment)) != STRING)
- Error (QUOTE_MSG, "Load");
- ptr->mod_load_lst =
- xf86addNewLoadDirective (ptr->mod_load_lst, val.str,
- XF86_LOAD_MODULE, NULL);
- break;
- case LOAD_DRIVER:
- if (xf86getSubToken (&(ptr->mod_comment)) != STRING)
- Error (QUOTE_MSG, "LoadDriver");
- ptr->mod_load_lst =
- xf86addNewLoadDirective (ptr->mod_load_lst, val.str,
- XF86_LOAD_DRIVER, NULL);
- break;
- case SUBSECTION:
- if (xf86getSubToken (&(ptr->mod_comment)) != STRING)
- Error (QUOTE_MSG, "SubSection");
- ptr->mod_load_lst =
- xf86parseModuleSubSection (ptr->mod_load_lst, val.str);
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
-#ifdef DEBUG
- printf ("Module section parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-void
-xf86printModuleSection (FILE * cf, XF86ConfModulePtr ptr)
-{
- XF86LoadPtr lptr;
-
- if (ptr == NULL)
- return;
-
- if (ptr->mod_comment)
- fprintf(cf, "%s", ptr->mod_comment);
- for (lptr = ptr->mod_load_lst; lptr; lptr = lptr->list.next)
- {
- switch (lptr->load_type)
- {
- case XF86_LOAD_MODULE:
- if( lptr->load_opt == NULL ) {
- fprintf (cf, "\tLoad \"%s\"", lptr->load_name);
- if (lptr->load_comment)
- fprintf(cf, "%s", lptr->load_comment);
- else
- fputc('\n', cf);
- }
- else
- {
- fprintf (cf, "\tSubSection \"%s\"\n", lptr->load_name);
- if (lptr->load_comment)
- fprintf(cf, "%s", lptr->load_comment);
- xf86printOptionList(cf, lptr->load_opt, 2);
- fprintf (cf, "\tEndSubSection\n");
- }
- break;
- case XF86_LOAD_DRIVER:
- fprintf (cf, "\tLoadDriver \"%s\"", lptr->load_name);
- if (lptr->load_comment)
- fprintf(cf, "%s", lptr->load_comment);
- else
- fputc('\n', cf);
- break;
-#if 0
- default:
- fprintf (cf, "#\tUnknown type \"%s\"\n", lptr->load_name);
- break;
-#endif
- }
- }
-}
-
-XF86LoadPtr
-xf86addNewLoadDirective (XF86LoadPtr head, char *name, int type, XF86OptionPtr opts)
-{
- XF86LoadPtr new;
- int token;
-
- new = xf86confcalloc (1, sizeof (XF86LoadRec));
- new->load_name = name;
- new->load_type = type;
- new->load_opt = opts;
- new->list.next = NULL;
-
- if ((token = xf86getToken(NULL)) == COMMENT)
- new->load_comment = xf86addComment(new->load_comment, val.str);
- else
- xf86unGetToken(token);
-
- return ((XF86LoadPtr) xf86addListItem ((glp) head, (glp) new));
-}
-
-void
-xf86freeModules (XF86ConfModulePtr ptr)
-{
- XF86LoadPtr lptr;
- XF86LoadPtr prev;
-
- if (ptr == NULL)
- return;
- lptr = ptr->mod_load_lst;
- while (lptr)
- {
- TestFree (lptr->load_name);
- TestFree (lptr->load_comment);
- prev = lptr;
- lptr = lptr->list.next;
- xf86conffree (prev);
- }
- TestFree (ptr->mod_comment);
- xf86conffree (ptr);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Monitor.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Monitor.c
deleted file mode 100644
index 52ff5a735..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Monitor.c
+++ /dev/null
@@ -1,907 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Monitor.c,v 1.28 2003/08/24 17:37:08 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec MonitorTab[] =
-{
- {ENDSECTION, "endsection"},
- {IDENTIFIER, "identifier"},
- {VENDOR, "vendorname"},
- {MODEL, "modelname"},
- {USEMODES, "usemodes"},
- {MODELINE, "modeline"},
- {DISPLAYSIZE, "displaysize"},
- {HORIZSYNC, "horizsync"},
- {VERTREFRESH, "vertrefresh"},
- {MODE, "mode"},
- {GAMMA, "gamma"},
- {OPTION, "option"},
- {-1, ""},
-};
-
-static xf86ConfigSymTabRec ModesTab[] =
-{
- {ENDSECTION, "endsection"},
- {IDENTIFIER, "identifier"},
- {MODELINE, "modeline"},
- {MODE, "mode"},
- {-1, ""},
-};
-
-static xf86ConfigSymTabRec TimingTab[] =
-{
- {TT_INTERLACE, "interlace"},
- {TT_PHSYNC, "+hsync"},
- {TT_NHSYNC, "-hsync"},
- {TT_PVSYNC, "+vsync"},
- {TT_NVSYNC, "-vsync"},
- {TT_CSYNC, "composite"},
- {TT_PCSYNC, "+csync"},
- {TT_NCSYNC, "-csync"},
- {TT_DBLSCAN, "doublescan"},
- {TT_HSKEW, "hskew"},
- {TT_BCAST, "bcast"},
- {TT_VSCAN, "vscan"},
- {TT_CUSTOM, "CUSTOM"},
- {-1, ""},
-};
-
-static xf86ConfigSymTabRec ModeTab[] =
-{
- {DOTCLOCK, "dotclock"},
- {HTIMINGS, "htimings"},
- {VTIMINGS, "vtimings"},
- {FLAGS, "flags"},
- {HSKEW, "hskew"},
- {BCAST, "bcast"},
- {VSCAN, "vscan"},
- {ENDMODE, "endmode"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeModeLineList
-
-XF86ConfModeLinePtr
-xf86parseModeLine (void)
-{
- int token;
- parsePrologue (XF86ConfModeLinePtr, XF86ConfModeLineRec)
-
- /* Identifier */
- if (xf86getSubToken (&(ptr->ml_comment)) != STRING)
- Error ("ModeLine identifier expected", NULL);
- ptr->ml_identifier = val.str;
-
- /* DotClock */
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error ("ModeLine dotclock expected", NULL);
- ptr->ml_clock = (int) (val.realnum * 1000.0 + 0.5);
-
- /* HDisplay */
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error ("ModeLine Hdisplay expected", NULL);
- ptr->ml_hdisplay = val.num;
-
- /* HSyncStart */
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error ("ModeLine HSyncStart expected", NULL);
- ptr->ml_hsyncstart = val.num;
-
- /* HSyncEnd */
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error ("ModeLine HSyncEnd expected", NULL);
- ptr->ml_hsyncend = val.num;
-
- /* HTotal */
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error ("ModeLine HTotal expected", NULL);
- ptr->ml_htotal = val.num;
-
- /* VDisplay */
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error ("ModeLine Vdisplay expected", NULL);
- ptr->ml_vdisplay = val.num;
-
- /* VSyncStart */
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error ("ModeLine VSyncStart expected", NULL);
- ptr->ml_vsyncstart = val.num;
-
- /* VSyncEnd */
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error ("ModeLine VSyncEnd expected", NULL);
- ptr->ml_vsyncend = val.num;
-
- /* VTotal */
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error ("ModeLine VTotal expected", NULL);
- ptr->ml_vtotal = val.num;
-
- token = xf86getSubTokenWithTab (&(ptr->ml_comment), TimingTab);
- while ((token == TT_INTERLACE) || (token == TT_PHSYNC) ||
- (token == TT_NHSYNC) || (token == TT_PVSYNC) ||
- (token == TT_NVSYNC) || (token == TT_CSYNC) ||
- (token == TT_PCSYNC) || (token == TT_NCSYNC) ||
- (token == TT_DBLSCAN) || (token == TT_HSKEW) ||
- (token == TT_VSCAN) || (token == TT_BCAST))
- {
- switch (token)
- {
-
- case TT_INTERLACE:
- ptr->ml_flags |= XF86CONF_INTERLACE;
- break;
- case TT_PHSYNC:
- ptr->ml_flags |= XF86CONF_PHSYNC;
- break;
- case TT_NHSYNC:
- ptr->ml_flags |= XF86CONF_NHSYNC;
- break;
- case TT_PVSYNC:
- ptr->ml_flags |= XF86CONF_PVSYNC;
- break;
- case TT_NVSYNC:
- ptr->ml_flags |= XF86CONF_NVSYNC;
- break;
- case TT_CSYNC:
- ptr->ml_flags |= XF86CONF_CSYNC;
- break;
- case TT_PCSYNC:
- ptr->ml_flags |= XF86CONF_PCSYNC;
- break;
- case TT_NCSYNC:
- ptr->ml_flags |= XF86CONF_NCSYNC;
- break;
- case TT_DBLSCAN:
- ptr->ml_flags |= XF86CONF_DBLSCAN;
- break;
- case TT_HSKEW:
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error (NUMBER_MSG, "Hskew");
- ptr->ml_hskew = val.num;
- ptr->ml_flags |= XF86CONF_HSKEW;
- break;
- case TT_BCAST:
- ptr->ml_flags |= XF86CONF_BCAST;
- break;
- case TT_VSCAN:
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error (NUMBER_MSG, "Vscan");
- ptr->ml_vscan = val.num;
- ptr->ml_flags |= XF86CONF_VSCAN;
- break;
- case TT_CUSTOM:
- ptr->ml_flags |= XF86CONF_CUSTOM;
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- token = xf86getSubTokenWithTab (&(ptr->ml_comment), TimingTab);
- }
- xf86unGetToken (token);
-
-#ifdef DEBUG
- printf ("ModeLine parsed\n");
-#endif
- return (ptr);
-}
-
-XF86ConfModeLinePtr
-xf86parseVerboseMode (void)
-{
- int token, token2;
- int had_dotclock = 0, had_htimings = 0, had_vtimings = 0;
- parsePrologue (XF86ConfModeLinePtr, XF86ConfModeLineRec)
-
- if (xf86getSubToken (&(ptr->ml_comment)) != STRING)
- Error ("Mode name expected", NULL);
- ptr->ml_identifier = val.str;
- while ((token = xf86getToken (ModeTab)) != ENDMODE)
- {
- switch (token)
- {
- case COMMENT:
- ptr->ml_comment = xf86addComment(ptr->ml_comment, val.str);
- break;
- case DOTCLOCK:
- if ((token = xf86getSubToken (&(ptr->ml_comment))) != NUMBER)
- Error (NUMBER_MSG, "DotClock");
- ptr->ml_clock = (int) (val.realnum * 1000.0 + 0.5);
- had_dotclock = 1;
- break;
- case HTIMINGS:
- if (xf86getSubToken (&(ptr->ml_comment)) == NUMBER)
- ptr->ml_hdisplay = val.num;
- else
- Error ("Horizontal display expected", NULL);
-
- if (xf86getSubToken (&(ptr->ml_comment)) == NUMBER)
- ptr->ml_hsyncstart = val.num;
- else
- Error ("Horizontal sync start expected", NULL);
-
- if (xf86getSubToken (&(ptr->ml_comment)) == NUMBER)
- ptr->ml_hsyncend = val.num;
- else
- Error ("Horizontal sync end expected", NULL);
-
- if (xf86getSubToken (&(ptr->ml_comment)) == NUMBER)
- ptr->ml_htotal = val.num;
- else
- Error ("Horizontal total expected", NULL);
- had_htimings = 1;
- break;
- case VTIMINGS:
- if (xf86getSubToken (&(ptr->ml_comment)) == NUMBER)
- ptr->ml_vdisplay = val.num;
- else
- Error ("Vertical display expected", NULL);
-
- if (xf86getSubToken (&(ptr->ml_comment)) == NUMBER)
- ptr->ml_vsyncstart = val.num;
- else
- Error ("Vertical sync start expected", NULL);
-
- if (xf86getSubToken (&(ptr->ml_comment)) == NUMBER)
- ptr->ml_vsyncend = val.num;
- else
- Error ("Vertical sync end expected", NULL);
-
- if (xf86getSubToken (&(ptr->ml_comment)) == NUMBER)
- ptr->ml_vtotal = val.num;
- else
- Error ("Vertical total expected", NULL);
- had_vtimings = 1;
- break;
- case FLAGS:
- token = xf86getSubToken (&(ptr->ml_comment));
- if (token != STRING)
- Error (QUOTE_MSG, "Flags");
- while (token == STRING)
- {
- token2 = xf86getStringToken (TimingTab);
- switch (token2)
- {
- case TT_INTERLACE:
- ptr->ml_flags |= XF86CONF_INTERLACE;
- break;
- case TT_PHSYNC:
- ptr->ml_flags |= XF86CONF_PHSYNC;
- break;
- case TT_NHSYNC:
- ptr->ml_flags |= XF86CONF_NHSYNC;
- break;
- case TT_PVSYNC:
- ptr->ml_flags |= XF86CONF_PVSYNC;
- break;
- case TT_NVSYNC:
- ptr->ml_flags |= XF86CONF_NVSYNC;
- break;
- case TT_CSYNC:
- ptr->ml_flags |= XF86CONF_CSYNC;
- break;
- case TT_PCSYNC:
- ptr->ml_flags |= XF86CONF_PCSYNC;
- break;
- case TT_NCSYNC:
- ptr->ml_flags |= XF86CONF_NCSYNC;
- break;
- case TT_DBLSCAN:
- ptr->ml_flags |= XF86CONF_DBLSCAN;
- break;
- case TT_CUSTOM:
- ptr->ml_flags |= XF86CONF_CUSTOM;
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error ("Unknown flag string", NULL);
- break;
- }
- token = xf86getSubToken (&(ptr->ml_comment));
- }
- xf86unGetToken (token);
- break;
- case HSKEW:
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error ("Horizontal skew expected", NULL);
- ptr->ml_flags |= XF86CONF_HSKEW;
- ptr->ml_hskew = val.num;
- break;
- case VSCAN:
- if (xf86getSubToken (&(ptr->ml_comment)) != NUMBER)
- Error ("Vertical scan count expected", NULL);
- ptr->ml_flags |= XF86CONF_VSCAN;
- ptr->ml_vscan = val.num;
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error ("Unexepcted token in verbose \"Mode\" entry\n", NULL);
- }
- }
- if (!had_dotclock)
- Error ("the dotclock is missing", NULL);
- if (!had_htimings)
- Error ("the horizontal timings are missing", NULL);
- if (!had_vtimings)
- Error ("the vertical timings are missing", NULL);
-
-#ifdef DEBUG
- printf ("Verbose Mode parsed\n");
-#endif
- return (ptr);
-}
-
-#undef CLEANUP
-
-#define CLEANUP xf86freeMonitorList
-
-XF86ConfMonitorPtr
-xf86parseMonitorSection (void)
-{
- int has_ident = FALSE;
- int token;
- parsePrologue (XF86ConfMonitorPtr, XF86ConfMonitorRec)
-
- while ((token = xf86getToken (MonitorTab)) != ENDSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->mon_comment = xf86addComment(ptr->mon_comment, val.str);
- break;
- case IDENTIFIER:
- if (xf86getSubToken (&(ptr->mon_comment)) != STRING)
- Error (QUOTE_MSG, "Identifier");
- if (has_ident == TRUE)
- Error (MULTIPLE_MSG, "Identifier");
- ptr->mon_identifier = val.str;
- has_ident = TRUE;
- break;
- case VENDOR:
- if (xf86getSubToken (&(ptr->mon_comment)) != STRING)
- Error (QUOTE_MSG, "Vendor");
- ptr->mon_vendor = val.str;
- break;
- case MODEL:
- if (xf86getSubToken (&(ptr->mon_comment)) != STRING)
- Error (QUOTE_MSG, "ModelName");
- ptr->mon_modelname = val.str;
- break;
- case MODE:
- HANDLE_LIST (mon_modeline_lst, xf86parseVerboseMode,
- XF86ConfModeLinePtr);
- break;
- case MODELINE:
- HANDLE_LIST (mon_modeline_lst, xf86parseModeLine,
- XF86ConfModeLinePtr);
- break;
- case DISPLAYSIZE:
- if (xf86getSubToken (&(ptr->mon_comment)) != NUMBER)
- Error (DISPLAYSIZE_MSG, NULL);
- ptr->mon_width = val.realnum;
- if (xf86getSubToken (&(ptr->mon_comment)) != NUMBER)
- Error (DISPLAYSIZE_MSG, NULL);
- ptr->mon_height = val.realnum;
- break;
-
- case HORIZSYNC:
- if (xf86getSubToken (&(ptr->mon_comment)) != NUMBER)
- Error (HORIZSYNC_MSG, NULL);
- do {
- ptr->mon_hsync[ptr->mon_n_hsync].lo = val.realnum;
- switch (token = xf86getSubToken (&(ptr->mon_comment)))
- {
- case COMMA:
- ptr->mon_hsync[ptr->mon_n_hsync].hi =
- ptr->mon_hsync[ptr->mon_n_hsync].lo;
- break;
- case DASH:
- if (xf86getSubToken (&(ptr->mon_comment)) != NUMBER ||
- (float)val.realnum < ptr->mon_hsync[ptr->mon_n_hsync].lo)
- Error (HORIZSYNC_MSG, NULL);
- ptr->mon_hsync[ptr->mon_n_hsync].hi = val.realnum;
- if ((token = xf86getSubToken (&(ptr->mon_comment))) == COMMA)
- break;
- ptr->mon_n_hsync++;
- goto HorizDone;
- default:
- /* We cannot currently know if a '\n' was found,
- * or this is a real error
- */
- ptr->mon_hsync[ptr->mon_n_hsync].hi =
- ptr->mon_hsync[ptr->mon_n_hsync].lo;
- ptr->mon_n_hsync++;
- goto HorizDone;
- }
- if (ptr->mon_n_hsync >= CONF_MAX_HSYNC)
- Error ("Sorry. Too many horizontal sync intervals.", NULL);
- ptr->mon_n_hsync++;
- } while ((token = xf86getSubToken (&(ptr->mon_comment))) == NUMBER);
-HorizDone:
- xf86unGetToken (token);
- break;
-
- case VERTREFRESH:
- if (xf86getSubToken (&(ptr->mon_comment)) != NUMBER)
- Error (VERTREFRESH_MSG, NULL);
- do {
- ptr->mon_vrefresh[ptr->mon_n_vrefresh].lo = val.realnum;
- switch (token = xf86getSubToken (&(ptr->mon_comment)))
- {
- case COMMA:
- ptr->mon_vrefresh[ptr->mon_n_vrefresh].hi =
- ptr->mon_vrefresh[ptr->mon_n_vrefresh].lo;
- break;
- case DASH:
- if (xf86getSubToken (&(ptr->mon_comment)) != NUMBER ||
- (float)val.realnum < ptr->mon_vrefresh[ptr->mon_n_vrefresh].lo)
- Error (VERTREFRESH_MSG, NULL);
- ptr->mon_vrefresh[ptr->mon_n_vrefresh].hi = val.realnum;
- if ((token = xf86getSubToken (&(ptr->mon_comment))) == COMMA)
- break;
- ptr->mon_n_vrefresh++;
- goto VertDone;
- default:
- /* We cannot currently know if a '\n' was found,
- * or this is a real error
- */
- ptr->mon_vrefresh[ptr->mon_n_vrefresh].hi =
- ptr->mon_vrefresh[ptr->mon_n_vrefresh].lo;
- ptr->mon_n_vrefresh++;
- goto VertDone;
- }
- if (ptr->mon_n_vrefresh >= CONF_MAX_VREFRESH)
- Error ("Sorry. Too many vertical refresh intervals.", NULL);
- ptr->mon_n_vrefresh++;
- } while ((token = xf86getSubToken (&(ptr->mon_comment))) == NUMBER);
-VertDone:
- xf86unGetToken (token);
- break;
-
- case GAMMA:
- if( xf86getSubToken (&(ptr->mon_comment)) != NUMBER )
- {
- Error (INVALID_GAMMA_MSG, NULL);
- }
- else
- {
- ptr->mon_gamma_red = ptr->mon_gamma_green =
- ptr->mon_gamma_blue = val.realnum;
- if( xf86getSubToken (&(ptr->mon_comment)) == NUMBER )
- {
- ptr->mon_gamma_green = val.realnum;
- if( xf86getSubToken (&(ptr->mon_comment)) == NUMBER )
- {
- ptr->mon_gamma_blue = val.realnum;
- }
- else
- {
- Error (INVALID_GAMMA_MSG, NULL);
- }
- }
- else
- xf86unGetToken (token);
- }
- break;
- case OPTION:
- ptr->mon_option_lst = xf86parseOption(ptr->mon_option_lst);
- break;
- case USEMODES:
- {
- XF86ConfModesLinkPtr mptr;
-
- if ((token = xf86getSubToken (&(ptr->mon_comment))) != STRING)
- Error (QUOTE_MSG, "UseModes");
-
- /* add to the end of the list of modes sections
- referenced here */
- mptr = xf86confcalloc (1, sizeof (XF86ConfModesLinkRec));
- mptr->list.next = NULL;
- mptr->ml_modes_str = val.str;
- mptr->ml_modes = NULL;
- ptr->mon_modes_sect_lst = (XF86ConfModesLinkPtr)
- xf86addListItem((GenericListPtr)ptr->mon_modes_sect_lst,
- (GenericListPtr)mptr);
- }
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- xf86parseError (INVALID_KEYWORD_MSG, xf86tokenString ());
- CLEANUP (ptr);
- return NULL;
- break;
- }
- }
-
- if (!has_ident)
- Error (NO_IDENT_MSG, NULL);
-
-#ifdef DEBUG
- printf ("Monitor section parsed\n");
-#endif
- return ptr;
-}
-
-#undef CLEANUP
-#define CLEANUP xf86freeModesList
-
-XF86ConfModesPtr
-xf86parseModesSection (void)
-{
- int has_ident = FALSE;
- int token;
- parsePrologue (XF86ConfModesPtr, XF86ConfModesRec)
-
- while ((token = xf86getToken (ModesTab)) != ENDSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->modes_comment = xf86addComment(ptr->modes_comment, val.str);
- break;
- case IDENTIFIER:
- if (xf86getSubToken (&(ptr->modes_comment)) != STRING)
- Error (QUOTE_MSG, "Identifier");
- if (has_ident == TRUE)
- Error (MULTIPLE_MSG, "Identifier");
- ptr->modes_identifier = val.str;
- has_ident = TRUE;
- break;
- case MODE:
- HANDLE_LIST (mon_modeline_lst, xf86parseVerboseMode,
- XF86ConfModeLinePtr);
- break;
- case MODELINE:
- HANDLE_LIST (mon_modeline_lst, xf86parseModeLine,
- XF86ConfModeLinePtr);
- break;
- default:
- xf86parseError (INVALID_KEYWORD_MSG, xf86tokenString ());
- CLEANUP (ptr);
- return NULL;
- break;
- }
- }
-
- if (!has_ident)
- Error (NO_IDENT_MSG, NULL);
-
-#ifdef DEBUG
- printf ("Modes section parsed\n");
-#endif
- return ptr;
-}
-
-#undef CLEANUP
-
-void
-xf86printMonitorSection (FILE * cf, XF86ConfMonitorPtr ptr)
-{
- int i;
- XF86ConfModeLinePtr mlptr;
- XF86ConfModesLinkPtr mptr;
-
- while (ptr)
- {
- mptr = ptr->mon_modes_sect_lst;
- fprintf (cf, "Section \"Monitor\"\n");
- if (ptr->mon_comment)
- fprintf (cf, "%s", ptr->mon_comment);
- if (ptr->mon_identifier)
- fprintf (cf, "\tIdentifier \"%s\"\n", ptr->mon_identifier);
- if (ptr->mon_vendor)
- fprintf (cf, "\tVendorName \"%s\"\n", ptr->mon_vendor);
- if (ptr->mon_modelname)
- fprintf (cf, "\tModelName \"%s\"\n", ptr->mon_modelname);
- while (mptr) {
- fprintf (cf, "\tUseModes \"%s\"\n", mptr->ml_modes_str);
- mptr = mptr->list.next;
- }
- if (ptr->mon_width)
- fprintf (cf, "\tDisplaySize %d\t%d\n",
- ptr->mon_width,
- ptr->mon_height);
- if ( ptr->mon_n_hsync || ptr->mon_n_vrefresh )
- fprintf(cf," ### Comment all HorizSync and VertSync values to use DDC:\n");
- for (i = 0; i < ptr->mon_n_hsync; i++)
- {
- fprintf (cf, "\tHorizSync %2.1f - %2.1f\n",
- ptr->mon_hsync[i].lo,
- ptr->mon_hsync[i].hi);
- }
- for (i = 0; i < ptr->mon_n_vrefresh; i++)
- {
- fprintf (cf, "\tVertRefresh %2.1f - %2.1f\n",
- ptr->mon_vrefresh[i].lo,
- ptr->mon_vrefresh[i].hi);
- }
- if (ptr->mon_gamma_red) {
- if (ptr->mon_gamma_red == ptr->mon_gamma_green
- && ptr->mon_gamma_red == ptr->mon_gamma_blue)
- {
- fprintf (cf, "\tGamma %.4g\n",
- ptr->mon_gamma_red);
- } else {
- fprintf (cf, "\tGamma %.4g %.4g %.4g\n",
- ptr->mon_gamma_red,
- ptr->mon_gamma_green,
- ptr->mon_gamma_blue);
- }
- }
- for (mlptr = ptr->mon_modeline_lst; mlptr; mlptr = mlptr->list.next)
- {
- fprintf (cf, "\tModeLine \"%s\" %2.1f ",
- mlptr->ml_identifier, mlptr->ml_clock / 1000.0);
- fprintf (cf, "%d %d %d %d %d %d %d %d",
- mlptr->ml_hdisplay, mlptr->ml_hsyncstart,
- mlptr->ml_hsyncend, mlptr->ml_htotal,
- mlptr->ml_vdisplay, mlptr->ml_vsyncstart,
- mlptr->ml_vsyncend, mlptr->ml_vtotal);
- if (mlptr->ml_flags & XF86CONF_PHSYNC)
- fprintf (cf, " +hsync");
- if (mlptr->ml_flags & XF86CONF_NHSYNC)
- fprintf (cf, " -hsync");
- if (mlptr->ml_flags & XF86CONF_PVSYNC)
- fprintf (cf, " +vsync");
- if (mlptr->ml_flags & XF86CONF_NVSYNC)
- fprintf (cf, " -vsync");
- if (mlptr->ml_flags & XF86CONF_INTERLACE)
- fprintf (cf, " interlace");
- if (mlptr->ml_flags & XF86CONF_CSYNC)
- fprintf (cf, " composite");
- if (mlptr->ml_flags & XF86CONF_PCSYNC)
- fprintf (cf, " +csync");
- if (mlptr->ml_flags & XF86CONF_NCSYNC)
- fprintf (cf, " -csync");
- if (mlptr->ml_flags & XF86CONF_DBLSCAN)
- fprintf (cf, " doublescan");
- if (mlptr->ml_flags & XF86CONF_HSKEW)
- fprintf (cf, " hskew %d", mlptr->ml_hskew);
- if (mlptr->ml_flags & XF86CONF_BCAST)
- fprintf (cf, " bcast");
- fprintf (cf, "\n");
- }
- xf86printOptionList(cf, ptr->mon_option_lst, 1);
- fprintf (cf, "EndSection\n\n");
- ptr = ptr->list.next;
- }
-}
-
-void
-xf86printModesSection (FILE * cf, XF86ConfModesPtr ptr)
-{
- XF86ConfModeLinePtr mlptr;
-
- while (ptr)
- {
- fprintf (cf, "Section \"Modes\"\n");
- if (ptr->modes_comment)
- fprintf (cf, "%s", ptr->modes_comment);
- if (ptr->modes_identifier)
- fprintf (cf, "\tIdentifier \"%s\"\n", ptr->modes_identifier);
- for (mlptr = ptr->mon_modeline_lst; mlptr; mlptr = mlptr->list.next)
- {
- fprintf (cf, "\tModeLine \"%s\" %2.1f ",
- mlptr->ml_identifier, mlptr->ml_clock / 1000.0);
- fprintf (cf, "%d %d %d %d %d %d %d %d",
- mlptr->ml_hdisplay, mlptr->ml_hsyncstart,
- mlptr->ml_hsyncend, mlptr->ml_htotal,
- mlptr->ml_vdisplay, mlptr->ml_vsyncstart,
- mlptr->ml_vsyncend, mlptr->ml_vtotal);
- if (mlptr->ml_flags & XF86CONF_PHSYNC)
- fprintf (cf, " +hsync");
- if (mlptr->ml_flags & XF86CONF_NHSYNC)
- fprintf (cf, " -hsync");
- if (mlptr->ml_flags & XF86CONF_PVSYNC)
- fprintf (cf, " +vsync");
- if (mlptr->ml_flags & XF86CONF_NVSYNC)
- fprintf (cf, " -vsync");
- if (mlptr->ml_flags & XF86CONF_INTERLACE)
- fprintf (cf, " interlace");
- if (mlptr->ml_flags & XF86CONF_CSYNC)
- fprintf (cf, " composite");
- if (mlptr->ml_flags & XF86CONF_PCSYNC)
- fprintf (cf, " +csync");
- if (mlptr->ml_flags & XF86CONF_NCSYNC)
- fprintf (cf, " -csync");
- if (mlptr->ml_flags & XF86CONF_DBLSCAN)
- fprintf (cf, " doublescan");
- if (mlptr->ml_flags & XF86CONF_HSKEW)
- fprintf (cf, " hskew %d", mlptr->ml_hskew);
- if (mlptr->ml_flags & XF86CONF_VSCAN)
- fprintf (cf, " vscan %d", mlptr->ml_vscan);
- if (mlptr->ml_flags & XF86CONF_BCAST)
- fprintf (cf, " bcast");
- if (mlptr->ml_comment)
- fprintf (cf, "%s", mlptr->ml_comment);
- else
- fprintf (cf, "\n");
- }
- fprintf (cf, "EndSection\n\n");
- ptr = ptr->list.next;
- }
-}
-
-void
-xf86freeMonitorList (XF86ConfMonitorPtr ptr)
-{
- XF86ConfMonitorPtr prev;
-
- while (ptr)
- {
- TestFree (ptr->mon_identifier);
- TestFree (ptr->mon_vendor);
- TestFree (ptr->mon_modelname);
- TestFree (ptr->mon_comment);
- xf86optionListFree (ptr->mon_option_lst);
- xf86freeModeLineList (ptr->mon_modeline_lst);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-void
-xf86freeModesList (XF86ConfModesPtr ptr)
-{
- XF86ConfModesPtr prev;
-
- while (ptr)
- {
- TestFree (ptr->modes_identifier);
- TestFree (ptr->modes_comment);
- xf86freeModeLineList (ptr->mon_modeline_lst);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-void
-xf86freeModeLineList (XF86ConfModeLinePtr ptr)
-{
- XF86ConfModeLinePtr prev;
- while (ptr)
- {
- TestFree (ptr->ml_identifier);
- TestFree (ptr->ml_comment);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-XF86ConfMonitorPtr
-xf86findMonitor (const char *ident, XF86ConfMonitorPtr p)
-{
- while (p)
- {
- if (xf86nameCompare (ident, p->mon_identifier) == 0)
- return (p);
-
- p = p->list.next;
- }
- return (NULL);
-}
-
-XF86ConfModesPtr
-xf86findModes (const char *ident, XF86ConfModesPtr p)
-{
- while (p)
- {
- if (xf86nameCompare (ident, p->modes_identifier) == 0)
- return (p);
-
- p = p->list.next;
- }
- return (NULL);
-}
-
-XF86ConfModeLinePtr
-xf86findModeLine (const char *ident, XF86ConfModeLinePtr p)
-{
- while (p)
- {
- if (xf86nameCompare (ident, p->ml_identifier) == 0)
- return (p);
-
- p = p->list.next;
- }
- return (NULL);
-}
-
-int
-xf86validateMonitor (XF86ConfigPtr p, XF86ConfScreenPtr screen)
-{
- XF86ConfMonitorPtr monitor = screen->scrn_monitor;
- XF86ConfModesLinkPtr modeslnk = monitor->mon_modes_sect_lst;
- XF86ConfModesPtr modes;
- while(modeslnk)
- {
- modes = xf86findModes (modeslnk->ml_modes_str, p->conf_modes_lst);
- if (!modes)
- {
- xf86validationError (UNDEFINED_MODES_MSG,
- modeslnk->ml_modes_str,
- screen->scrn_identifier);
- return (FALSE);
- }
- modeslnk->ml_modes = modes;
- modeslnk = modeslnk->list.next;
- }
- return (TRUE);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Pointer.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Pointer.c
deleted file mode 100644
index 81984a3e7..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Pointer.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Pointer.c,v 1.13 2003/08/24 17:37:08 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec PointerTab[] =
-{
- {PROTOCOL, "protocol"},
- {EMULATE3, "emulate3buttons"},
- {EM3TIMEOUT, "emulate3timeout"},
- {ENDSUBSECTION, "endsubsection"},
- {ENDSECTION, "endsection"},
- {PDEVICE, "device"},
- {PDEVICE, "port"},
- {BAUDRATE, "baudrate"},
- {SAMPLERATE, "samplerate"},
- {CLEARDTR, "cleardtr"},
- {CLEARRTS, "clearrts"},
- {CHORDMIDDLE, "chordmiddle"},
- {PRESOLUTION, "resolution"},
- {DEVICE_NAME, "devicename"},
- {ALWAYSCORE, "alwayscore"},
- {PBUTTONS, "buttons"},
- {ZAXISMAPPING, "zaxismapping"},
- {-1, ""},
-};
-
-static xf86ConfigSymTabRec ZMapTab[] =
-{
- {XAXIS, "x"},
- {YAXIS, "y"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeInputList
-
-XF86ConfInputPtr
-xf86parsePointerSection (void)
-{
- char *s, *s1, *s2;
- int l;
- int token;
- parsePrologue (XF86ConfInputPtr, XF86ConfInputRec)
-
- while ((token = xf86getToken (PointerTab)) != ENDSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->inp_comment = xf86addComment(ptr->inp_comment, val.str);
- break;
- case PROTOCOL:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "Protocol");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("Protocol"),
- val.str);
- break;
- case PDEVICE:
- if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
- Error (QUOTE_MSG, "Device");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("Device"),
- val.str);
- break;
- case EMULATE3:
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("Emulate3Buttons"),
- NULL);
- break;
- case EM3TIMEOUT:
- if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER || val.num < 0)
- Error (POSITIVE_INT_MSG, "Emulate3Timeout");
- s = xf86uLongToString(val.num);
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("Emulate3Timeout"),
- s);
- break;
- case CHORDMIDDLE:
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("ChordMiddle"),
- NULL);
- break;
- case PBUTTONS:
- if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER || val.num < 0)
- Error (POSITIVE_INT_MSG, "Buttons");
- s = xf86uLongToString(val.num);
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("Buttons"), s);
- break;
- case BAUDRATE:
- if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER || val.num < 0)
- Error (POSITIVE_INT_MSG, "BaudRate");
- s = xf86uLongToString(val.num);
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("BaudRate"), s);
- break;
- case SAMPLERATE:
- if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER || val.num < 0)
- Error (POSITIVE_INT_MSG, "SampleRate");
- s = xf86uLongToString(val.num);
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("SampleRate"), s);
- break;
- case PRESOLUTION:
- if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER || val.num < 0)
- Error (POSITIVE_INT_MSG, "Resolution");
- s = xf86uLongToString(val.num);
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("Resolution"), s);
- break;
- case CLEARDTR:
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("ClearDTR"), NULL);
- break;
- case CLEARRTS:
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("ClearRTS"), NULL);
- break;
- case ZAXISMAPPING:
- switch (xf86getToken(ZMapTab)) {
- case NUMBER:
- if (val.num < 0)
- Error (ZAXISMAPPING_MSG, NULL);
- s1 = xf86uLongToString(val.num);
- if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER || val.num < 0)
- Error (ZAXISMAPPING_MSG, NULL);
- s2 = xf86uLongToString(val.num);
- l = strlen(s1) + 1 + strlen(s2) + 1;
- s = xf86confmalloc(l);
- sprintf(s, "%s %s", s1, s2);
- xf86conffree(s1);
- xf86conffree(s2);
- break;
- case XAXIS:
- s = xf86configStrdup("x");
- break;
- case YAXIS:
- s = xf86configStrdup("y");
- break;
- default:
- Error (ZAXISMAPPING_MSG, NULL);
- break;
- }
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("ZAxisMapping"),
- s);
- break;
- case ALWAYSCORE:
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
- ptr->inp_identifier = xf86configStrdup(CONF_IMPLICIT_POINTER);
- ptr->inp_driver = xf86configStrdup("mouse");
- ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst,
- xf86configStrdup("CorePointer"), NULL);
-
-#ifdef DEBUG
- printf ("Pointer section parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Screen.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Screen.c
deleted file mode 100644
index d572af56c..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Screen.c
+++ /dev/null
@@ -1,578 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Screen.c,v 1.28 2003/11/07 23:41:41 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec DisplayTab[] =
-{
- {ENDSUBSECTION, "endsubsection"},
- {MODES, "modes"},
- {VIEWPORT, "viewport"},
- {VIRTUAL, "virtual"},
- {VISUAL, "visual"},
- {BLACK_TOK, "black"},
- {WHITE_TOK, "white"},
- {DEPTH, "depth"},
- {BPP, "fbbpp"},
- {WEIGHT, "weight"},
- {OPTION, "option"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeDisplayList
-
-XF86ConfDisplayPtr
-xf86parseDisplaySubSection (void)
-{
- int token;
- parsePrologue (XF86ConfDisplayPtr, XF86ConfDisplayRec)
-
- ptr->disp_black.red = ptr->disp_black.green = ptr->disp_black.blue = -1;
- ptr->disp_white.red = ptr->disp_white.green = ptr->disp_white.blue = -1;
- ptr->disp_frameX0 = ptr->disp_frameY0 = -1;
- while ((token = xf86getToken (DisplayTab)) != ENDSUBSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->disp_comment = xf86addComment(ptr->disp_comment, val.str);
- break;
- case VIEWPORT:
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (VIEWPORT_MSG, NULL);
- ptr->disp_frameX0 = val.num;
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (VIEWPORT_MSG, NULL);
- ptr->disp_frameY0 = val.num;
- break;
- case VIRTUAL:
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (VIRTUAL_MSG, NULL);
- ptr->disp_virtualX = val.num;
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (VIRTUAL_MSG, NULL);
- ptr->disp_virtualY = val.num;
- break;
- case DEPTH:
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (NUMBER_MSG, "Display");
- ptr->disp_depth = val.num;
- break;
- case BPP:
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (NUMBER_MSG, "Display");
- ptr->disp_bpp = val.num;
- break;
- case VISUAL:
- if (xf86getSubToken (&(ptr->disp_comment)) != STRING)
- Error (QUOTE_MSG, "Display");
- ptr->disp_visual = val.str;
- break;
- case WEIGHT:
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (WEIGHT_MSG, NULL);
- ptr->disp_weight.red = val.num;
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (WEIGHT_MSG, NULL);
- ptr->disp_weight.green = val.num;
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (WEIGHT_MSG, NULL);
- ptr->disp_weight.blue = val.num;
- break;
- case BLACK_TOK:
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (BLACK_MSG, NULL);
- ptr->disp_black.red = val.num;
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (BLACK_MSG, NULL);
- ptr->disp_black.green = val.num;
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (BLACK_MSG, NULL);
- ptr->disp_black.blue = val.num;
- break;
- case WHITE_TOK:
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (WHITE_MSG, NULL);
- ptr->disp_white.red = val.num;
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (WHITE_MSG, NULL);
- ptr->disp_white.green = val.num;
- if (xf86getSubToken (&(ptr->disp_comment)) != NUMBER)
- Error (WHITE_MSG, NULL);
- ptr->disp_white.blue = val.num;
- break;
- case MODES:
- {
- XF86ModePtr mptr;
-
- while ((token = xf86getSubTokenWithTab (&(ptr->disp_comment), DisplayTab)) == STRING)
- {
- mptr = xf86confcalloc (1, sizeof (XF86ModeRec));
- mptr->mode_name = val.str;
- mptr->list.next = NULL;
- ptr->disp_mode_lst = (XF86ModePtr)
- xf86addListItem ((glp) ptr->disp_mode_lst, (glp) mptr);
- }
- xf86unGetToken (token);
- }
- break;
- case OPTION:
- ptr->disp_option_lst = xf86parseOption(ptr->disp_option_lst);
- break;
-
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
-#ifdef DEBUG
- printf ("Display subsection parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-static xf86ConfigSymTabRec ScreenTab[] =
-{
- {ENDSECTION, "endsection"},
- {IDENTIFIER, "identifier"},
- {OBSDRIVER, "driver"},
- {MDEVICE, "device"},
- {MONITOR, "monitor"},
- {VIDEOADAPTOR, "videoadaptor"},
- {SCREENNO, "screenno"},
- {SUBSECTION, "subsection"},
- {DEFAULTDEPTH, "defaultcolordepth"},
- {DEFAULTDEPTH, "defaultdepth"},
- {DEFAULTBPP, "defaultbpp"},
- {DEFAULTFBBPP, "defaultfbbpp"},
- {OPTION, "option"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeScreenList
-XF86ConfScreenPtr
-xf86parseScreenSection (void)
-{
- int has_ident = FALSE;
- int has_driver= FALSE;
- int token;
-
- parsePrologue (XF86ConfScreenPtr, XF86ConfScreenRec)
-
- while ((token = xf86getToken (ScreenTab)) != ENDSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->scrn_comment = xf86addComment(ptr->scrn_comment, val.str);
- break;
- case IDENTIFIER:
- if (xf86getSubToken (&(ptr->scrn_comment)) != STRING)
- Error (QUOTE_MSG, "Identifier");
- ptr->scrn_identifier = val.str;
- if (has_ident || has_driver)
- Error (ONLY_ONE_MSG,"Identifier or Driver");
- has_ident = TRUE;
- break;
- case OBSDRIVER:
- if (xf86getSubToken (&(ptr->scrn_comment)) != STRING)
- Error (QUOTE_MSG, "Driver");
- ptr->scrn_obso_driver = val.str;
- if (has_ident || has_driver)
- Error (ONLY_ONE_MSG,"Identifier or Driver");
- has_driver = TRUE;
- break;
- case DEFAULTDEPTH:
- if (xf86getSubToken (&(ptr->scrn_comment)) != NUMBER)
- Error (NUMBER_MSG, "DefaultDepth");
- ptr->scrn_defaultdepth = val.num;
- break;
- case DEFAULTBPP:
- if (xf86getSubToken (&(ptr->scrn_comment)) != NUMBER)
- Error (NUMBER_MSG, "DefaultBPP");
- ptr->scrn_defaultbpp = val.num;
- break;
- case DEFAULTFBBPP:
- if (xf86getSubToken (&(ptr->scrn_comment)) != NUMBER)
- Error (NUMBER_MSG, "DefaultFbBPP");
- ptr->scrn_defaultfbbpp = val.num;
- break;
- case MDEVICE:
- if (xf86getSubToken (&(ptr->scrn_comment)) != STRING)
- Error (QUOTE_MSG, "Device");
- ptr->scrn_device_str = val.str;
- break;
- case MONITOR:
- if (xf86getSubToken (&(ptr->scrn_comment)) != STRING)
- Error (QUOTE_MSG, "Monitor");
- ptr->scrn_monitor_str = val.str;
- break;
- case VIDEOADAPTOR:
- {
- XF86ConfAdaptorLinkPtr aptr;
-
- if (xf86getSubToken (&(ptr->scrn_comment)) != STRING)
- Error (QUOTE_MSG, "VideoAdaptor");
-
- /* Don't allow duplicates */
- for (aptr = ptr->scrn_adaptor_lst; aptr;
- aptr = (XF86ConfAdaptorLinkPtr) aptr->list.next)
- if (xf86nameCompare (val.str, aptr->al_adaptor_str) == 0)
- break;
-
- if (aptr == NULL)
- {
- aptr = xf86confcalloc (1, sizeof (XF86ConfAdaptorLinkRec));
- aptr->list.next = NULL;
- aptr->al_adaptor_str = val.str;
- ptr->scrn_adaptor_lst = (XF86ConfAdaptorLinkPtr)
- xf86addListItem ((glp) ptr->scrn_adaptor_lst, (glp) aptr);
- }
- }
- break;
- case OPTION:
- ptr->scrn_option_lst = xf86parseOption(ptr->scrn_option_lst);
- break;
- case SUBSECTION:
- if (xf86getSubToken (&(ptr->scrn_comment)) != STRING)
- Error (QUOTE_MSG, "SubSection");
- {
- xf86conffree(val.str);
- HANDLE_LIST (scrn_display_lst, xf86parseDisplaySubSection,
- XF86ConfDisplayPtr);
- }
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
- if (!has_ident && !has_driver)
- Error (NO_IDENT_MSG, NULL);
-
-#ifdef DEBUG
- printf ("Screen section parsed\n");
-#endif
-
- return ptr;
-}
-
-void
-xf86printScreenSection (FILE * cf, XF86ConfScreenPtr ptr)
-{
- XF86ConfAdaptorLinkPtr aptr;
- XF86ConfDisplayPtr dptr;
- XF86ModePtr mptr;
-
- while (ptr)
- {
- fprintf (cf, "Section \"Screen\"\n");
- if (ptr->scrn_comment)
- fprintf (cf, "%s", ptr->scrn_comment);
- if (ptr->scrn_identifier)
- fprintf (cf, "\tIdentifier \"%s\"\n", ptr->scrn_identifier);
- if (ptr->scrn_obso_driver)
- fprintf (cf, "\tDriver \"%s\"\n", ptr->scrn_obso_driver);
- if (ptr->scrn_device_str)
- fprintf (cf, "\tDevice \"%s\"\n", ptr->scrn_device_str);
- if (ptr->scrn_monitor_str)
- fprintf (cf, "\tMonitor \"%s\"\n", ptr->scrn_monitor_str);
- if (ptr->scrn_defaultdepth)
- fprintf (cf, "\tDefaultDepth %d\n",
- ptr->scrn_defaultdepth);
- if (ptr->scrn_defaultbpp)
- fprintf (cf, "\tDefaultBPP %d\n",
- ptr->scrn_defaultbpp);
- if (ptr->scrn_defaultfbbpp)
- fprintf (cf, "\tDefaultFbBPP %d\n",
- ptr->scrn_defaultfbbpp);
- xf86printOptionList(cf, ptr->scrn_option_lst, 1);
- for (aptr = ptr->scrn_adaptor_lst; aptr; aptr = aptr->list.next)
- {
- fprintf (cf, "\tVideoAdaptor \"%s\"\n", aptr->al_adaptor_str);
- }
- for (dptr = ptr->scrn_display_lst; dptr; dptr = dptr->list.next)
- {
- fprintf (cf, "\tSubSection \"Display\"\n");
- if (dptr->disp_comment)
- fprintf (cf, "%s", dptr->disp_comment);
- if (dptr->disp_frameX0 >= 0 || dptr->disp_frameY0 >= 0)
- {
- fprintf (cf, "\t\tViewport %d %d\n",
- dptr->disp_frameX0, dptr->disp_frameY0);
- }
- if (dptr->disp_virtualX != 0 || dptr->disp_virtualY != 0)
- {
- fprintf (cf, "\t\tVirtual %d %d\n",
- dptr->disp_virtualX, dptr->disp_virtualY);
- }
- if (dptr->disp_depth)
- {
- fprintf (cf, "\t\tDepth %d\n", dptr->disp_depth);
- }
- if (dptr->disp_bpp)
- {
- fprintf (cf, "\t\tFbBPP %d\n", dptr->disp_bpp);
- }
- if (dptr->disp_visual)
- {
- fprintf (cf, "\t\tVisual \"%s\"\n", dptr->disp_visual);
- }
- if (dptr->disp_weight.red != 0)
- {
- fprintf (cf, "\t\tWeight %d %d %d\n",
- dptr->disp_weight.red, dptr->disp_weight.green, dptr->disp_weight.blue);
- }
- if (dptr->disp_black.red != -1)
- {
- fprintf (cf, "\t\tBlack 0x%04x 0x%04x 0x%04x\n",
- dptr->disp_black.red, dptr->disp_black.green, dptr->disp_black.blue);
- }
- if (dptr->disp_white.red != -1)
- {
- fprintf (cf, "\t\tWhite 0x%04x 0x%04x 0x%04x\n",
- dptr->disp_white.red, dptr->disp_white.green, dptr->disp_white.blue);
- }
- if (dptr->disp_mode_lst)
- {
- fprintf (cf, "\t\tModes ");
- }
- for (mptr = dptr->disp_mode_lst; mptr; mptr = mptr->list.next)
- {
- fprintf (cf, " \"%s\"", mptr->mode_name);
- }
- if (dptr->disp_mode_lst)
- {
- fprintf (cf, "\n");
- }
- xf86printOptionList(cf, dptr->disp_option_lst, 2);
- fprintf (cf, "\tEndSubSection\n");
- }
- fprintf (cf, "EndSection\n\n");
- ptr = ptr->list.next;
- }
-
-}
-
-void
-xf86freeScreenList (XF86ConfScreenPtr ptr)
-{
- XF86ConfScreenPtr prev;
-
- while (ptr)
- {
- TestFree (ptr->scrn_identifier);
- TestFree (ptr->scrn_monitor_str);
- TestFree (ptr->scrn_device_str);
- TestFree (ptr->scrn_comment);
- xf86optionListFree (ptr->scrn_option_lst);
- xf86freeAdaptorLinkList (ptr->scrn_adaptor_lst);
- xf86freeDisplayList (ptr->scrn_display_lst);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-void
-xf86freeAdaptorLinkList (XF86ConfAdaptorLinkPtr ptr)
-{
- XF86ConfAdaptorLinkPtr prev;
-
- while (ptr)
- {
- TestFree (ptr->al_adaptor_str);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-void
-xf86freeDisplayList (XF86ConfDisplayPtr ptr)
-{
- XF86ConfDisplayPtr prev;
-
- while (ptr)
- {
- xf86freeModeList (ptr->disp_mode_lst);
- xf86optionListFree (ptr->disp_option_lst);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-void
-xf86freeModeList (XF86ModePtr ptr)
-{
- XF86ModePtr prev;
-
- while (ptr)
- {
- TestFree (ptr->mode_name);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-int
-xf86validateScreen (XF86ConfigPtr p)
-{
- XF86ConfScreenPtr screen = p->conf_screen_lst;
- XF86ConfMonitorPtr monitor;
- XF86ConfDevicePtr device;
- XF86ConfAdaptorLinkPtr adaptor;
-
- if (!screen)
- {
- xf86validationError ("At least one Screen section is required.");
- return (FALSE);
- }
-
- while (screen)
- {
- if (screen->scrn_obso_driver && !screen->scrn_identifier)
- screen->scrn_identifier = screen->scrn_obso_driver;
-
- monitor = xf86findMonitor (screen->scrn_monitor_str, p->conf_monitor_lst);
- if (screen->scrn_monitor_str)
- {
- if (!monitor)
- {
- xf86validationError (UNDEFINED_MONITOR_MSG,
- screen->scrn_monitor_str, screen->scrn_identifier);
- return (FALSE);
- }
- else
- {
- screen->scrn_monitor = monitor;
- if (!xf86validateMonitor(p, screen))
- return (FALSE);
- }
- }
-
- device = xf86findDevice (screen->scrn_device_str, p->conf_device_lst);
- if (!device)
- {
- xf86validationError (UNDEFINED_DEVICE_MSG,
- screen->scrn_device_str, screen->scrn_identifier);
- return (FALSE);
- }
- else
- screen->scrn_device = device;
-
- adaptor = screen->scrn_adaptor_lst;
- while (adaptor)
- {
- adaptor->al_adaptor = xf86findVideoAdaptor (adaptor->al_adaptor_str, p->conf_videoadaptor_lst);
- if (!adaptor->al_adaptor)
- {
- xf86validationError (UNDEFINED_ADAPTOR_MSG, adaptor->al_adaptor_str, screen->scrn_identifier);
- return (FALSE);
- }
- else if (adaptor->al_adaptor->va_fwdref)
- {
- xf86validationError (ADAPTOR_REF_TWICE_MSG, adaptor->al_adaptor_str,
- adaptor->al_adaptor->va_fwdref);
- return (FALSE);
- }
-
- adaptor->al_adaptor->va_fwdref = xf86configStrdup(screen->scrn_identifier);
- adaptor = adaptor->list.next;
- }
-
- screen = screen->list.next;
- }
-
- return (TRUE);
-}
-
-XF86ConfScreenPtr
-xf86findScreen (const char *ident, XF86ConfScreenPtr p)
-{
- while (p)
- {
- if (xf86nameCompare (ident, p->scrn_identifier) == 0)
- return (p);
-
- p = p->list.next;
- }
- return (NULL);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Vendor.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Vendor.c
deleted file mode 100644
index 9c6469bb8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Vendor.c
+++ /dev/null
@@ -1,258 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Vendor.c,v 1.17 2003/08/24 17:37:08 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec VendorSubTab[] =
-{
- {ENDSUBSECTION, "endsubsection"},
- {IDENTIFIER, "identifier"},
- {OPTION, "option"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeVendorSubList
-
-XF86ConfVendSubPtr
-xf86parseVendorSubSection (void)
-{
- int has_ident = FALSE;
- int token;
- parsePrologue (XF86ConfVendSubPtr, XF86ConfVendSubRec)
-
- while ((token = xf86getToken (VendorSubTab)) != ENDSUBSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->vs_comment = xf86addComment(ptr->vs_comment, val.str);
- break;
- case IDENTIFIER:
- if (xf86getSubToken (&(ptr->vs_comment)))
- Error (QUOTE_MSG, "Identifier");
- if (has_ident == TRUE)
- Error (MULTIPLE_MSG, "Identifier");
- ptr->vs_identifier = val.str;
- has_ident = TRUE;
- break;
- case OPTION:
- ptr->vs_option_lst = xf86parseOption(ptr->vs_option_lst);
- break;
-
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
-#ifdef DEBUG
- printf ("Vendor subsection parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-static xf86ConfigSymTabRec VendorTab[] =
-{
- {ENDSECTION, "endsection"},
- {IDENTIFIER, "identifier"},
- {OPTION, "option"},
- {SUBSECTION, "subsection"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeVendorList
-
-XF86ConfVendorPtr
-xf86parseVendorSection (void)
-{
- int has_ident = FALSE;
- int token;
- parsePrologue (XF86ConfVendorPtr, XF86ConfVendorRec)
-
- while ((token = xf86getToken (VendorTab)) != ENDSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->vnd_comment = xf86addComment(ptr->vnd_comment, val.str);
- break;
- case IDENTIFIER:
- if (xf86getSubToken (&(ptr->vnd_comment)) != STRING)
- Error (QUOTE_MSG, "Identifier");
- if (has_ident == TRUE)
- Error (MULTIPLE_MSG, "Identifier");
- ptr->vnd_identifier = val.str;
- has_ident = TRUE;
- break;
- case OPTION:
- ptr->vnd_option_lst = xf86parseOption(ptr->vnd_option_lst);
- break;
- case SUBSECTION:
- if (xf86getSubToken (&(ptr->vnd_comment)) != STRING)
- Error (QUOTE_MSG, "SubSection");
- {
- HANDLE_LIST (vnd_sub_lst, xf86parseVendorSubSection,
- XF86ConfVendSubPtr);
- }
- break;
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
-
- }
-
- if (!has_ident)
- Error (NO_IDENT_MSG, NULL);
-
-#ifdef DEBUG
- printf ("Vendor section parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-void
-xf86printVendorSection (FILE * cf, XF86ConfVendorPtr ptr)
-{
- XF86ConfVendSubPtr pptr;
-
- while (ptr)
- {
- fprintf (cf, "Section \"Vendor\"\n");
- if (ptr->vnd_comment)
- fprintf (cf, "%s", ptr->vnd_comment);
- if (ptr->vnd_identifier)
- fprintf (cf, "\tIdentifier \"%s\"\n", ptr->vnd_identifier);
-
- xf86printOptionList(cf, ptr->vnd_option_lst, 1);
- for (pptr = ptr->vnd_sub_lst; pptr; pptr = pptr->list.next)
- {
- fprintf (cf, "\tSubSection \"Vendor\"\n");
- if (pptr->vs_comment)
- fprintf (cf, "%s", pptr->vs_comment);
- if (pptr->vs_identifier)
- fprintf (cf, "\t\tIdentifier \"%s\"\n", pptr->vs_identifier);
- xf86printOptionList(cf, pptr->vs_option_lst, 2);
- fprintf (cf, "\tEndSubSection\n");
- }
- fprintf (cf, "EndSection\n\n");
- ptr = ptr->list.next;
- }
-}
-
-void
-xf86freeVendorList (XF86ConfVendorPtr p)
-{
- if (p == NULL)
- return;
- xf86freeVendorSubList (p->vnd_sub_lst);
- TestFree (p->vnd_identifier);
- TestFree (p->vnd_comment);
- xf86optionListFree (p->vnd_option_lst);
- xf86conffree (p);
-}
-
-void
-xf86freeVendorSubList (XF86ConfVendSubPtr ptr)
-{
- XF86ConfVendSubPtr prev;
-
- while (ptr)
- {
- TestFree (ptr->vs_identifier);
- TestFree (ptr->vs_name);
- TestFree (ptr->vs_comment);
- xf86optionListFree (ptr->vs_option_lst);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-XF86ConfVendorPtr
-xf86findVendor (const char *name, XF86ConfVendorPtr list)
-{
- while (list)
- {
- if (xf86nameCompare (list->vnd_identifier, name) == 0)
- return (list);
- list = list->list.next;
- }
- return (NULL);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/Video.c b/nx-X11/programs/Xserver/hw/xfree86/parser/Video.c
deleted file mode 100644
index 88788aea8..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/Video.c
+++ /dev/null
@@ -1,297 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/Video.c,v 1.13 2003/08/24 17:37:08 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec VideoPortTab[] =
-{
- {ENDSUBSECTION, "endsubsection"},
- {IDENTIFIER, "identifier"},
- {OPTION, "option"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeVideoPortList
-
-XF86ConfVideoPortPtr
-xf86parseVideoPortSubSection (void)
-{
- int has_ident = FALSE;
- int token;
- parsePrologue (XF86ConfVideoPortPtr, XF86ConfVideoPortRec)
-
- while ((token = xf86getToken (VideoPortTab)) != ENDSUBSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->vp_comment = xf86addComment(ptr->vp_comment, val.str);
- break;
- case IDENTIFIER:
- if (xf86getSubToken (&(ptr->vp_comment)) != STRING)
- Error (QUOTE_MSG, "Identifier");
- if (has_ident == TRUE)
- Error (MULTIPLE_MSG, "Identifier");
- ptr->vp_identifier = val.str;
- has_ident = TRUE;
- break;
- case OPTION:
- ptr->vp_option_lst = xf86parseOption(ptr->vp_option_lst);
- break;
-
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
-#ifdef DEBUG
- printf ("VideoPort subsection parsed\n");
-#endif
-
- return ptr;
-}
-
-#undef CLEANUP
-
-static xf86ConfigSymTabRec VideoAdaptorTab[] =
-{
- {ENDSECTION, "endsection"},
- {IDENTIFIER, "identifier"},
- {VENDOR, "vendorname"},
- {BOARD, "boardname"},
- {BUSID, "busid"},
- {DRIVER, "driver"},
- {OPTION, "option"},
- {SUBSECTION, "subsection"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeVideoAdaptorList
-
-XF86ConfVideoAdaptorPtr
-xf86parseVideoAdaptorSection (void)
-{
- int has_ident = FALSE;
- int token;
-
- parsePrologue (XF86ConfVideoAdaptorPtr, XF86ConfVideoAdaptorRec)
-
- while ((token = xf86getToken (VideoAdaptorTab)) != ENDSECTION)
- {
- switch (token)
- {
- case COMMENT:
- ptr->va_comment = xf86addComment(ptr->va_comment, val.str);
- break;
- case IDENTIFIER:
- if (xf86getSubToken (&(ptr->va_comment)) != STRING)
- Error (QUOTE_MSG, "Identifier");
- ptr->va_identifier = val.str;
- if (has_ident == TRUE)
- Error (MULTIPLE_MSG, "Identifier");
- has_ident = TRUE;
- break;
- case VENDOR:
- if (xf86getSubToken (&(ptr->va_comment)) != STRING)
- Error (QUOTE_MSG, "Vendor");
- ptr->va_vendor = val.str;
- break;
- case BOARD:
- if (xf86getSubToken (&(ptr->va_comment)) != STRING)
- Error (QUOTE_MSG, "Board");
- ptr->va_board = val.str;
- break;
- case BUSID:
- if (xf86getSubToken (&(ptr->va_comment)) != STRING)
- Error (QUOTE_MSG, "BusID");
- ptr->va_busid = val.str;
- break;
- case DRIVER:
- if (xf86getSubToken (&(ptr->va_comment)) != STRING)
- Error (QUOTE_MSG, "Driver");
- ptr->va_driver = val.str;
- break;
- case OPTION:
- ptr->va_option_lst = xf86parseOption(ptr->va_option_lst);
- break;
- case SUBSECTION:
- if (xf86getSubToken (&(ptr->va_comment)) != STRING)
- Error (QUOTE_MSG, "SubSection");
- {
- HANDLE_LIST (va_port_lst, xf86parseVideoPortSubSection,
- XF86ConfVideoPortPtr);
- }
- break;
-
- case EOF_TOKEN:
- Error (UNEXPECTED_EOF_MSG, NULL);
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- break;
- }
- }
-
- if (!has_ident)
- Error (NO_IDENT_MSG, NULL);
-
-#ifdef DEBUG
- printf ("VideoAdaptor section parsed\n");
-#endif
-
- return ptr;
-}
-
-void
-xf86printVideoAdaptorSection (FILE * cf, XF86ConfVideoAdaptorPtr ptr)
-{
- XF86ConfVideoPortPtr pptr;
-
- while (ptr)
- {
- fprintf (cf, "Section \"VideoAdaptor\"\n");
- if (ptr->va_comment)
- fprintf (cf, "%s", ptr->va_comment);
- if (ptr->va_identifier)
- fprintf (cf, "\tIdentifier \"%s\"\n", ptr->va_identifier);
- if (ptr->va_vendor)
- fprintf (cf, "\tVendorName \"%s\"\n", ptr->va_vendor);
- if (ptr->va_board)
- fprintf (cf, "\tBoardName \"%s\"\n", ptr->va_board);
- if (ptr->va_busid)
- fprintf (cf, "\tBusID \"%s\"\n", ptr->va_busid);
- if (ptr->va_driver)
- fprintf (cf, "\tDriver \"%s\"\n", ptr->va_driver);
- xf86printOptionList(cf, ptr->va_option_lst, 1);
- for (pptr = ptr->va_port_lst; pptr; pptr = pptr->list.next)
- {
- fprintf (cf, "\tSubSection \"VideoPort\"\n");
- if (pptr->vp_comment)
- fprintf (cf, "%s", pptr->vp_comment);
- if (pptr->vp_identifier)
- fprintf (cf, "\t\tIdentifier \"%s\"\n", pptr->vp_identifier);
- xf86printOptionList(cf, pptr->vp_option_lst, 2);
- fprintf (cf, "\tEndSubSection\n");
- }
- fprintf (cf, "EndSection\n\n");
- ptr = ptr->list.next;
- }
-
-}
-
-void
-xf86freeVideoAdaptorList (XF86ConfVideoAdaptorPtr ptr)
-{
- XF86ConfVideoAdaptorPtr prev;
-
- while (ptr)
- {
- TestFree (ptr->va_identifier);
- TestFree (ptr->va_vendor);
- TestFree (ptr->va_board);
- TestFree (ptr->va_busid);
- TestFree (ptr->va_driver);
- TestFree (ptr->va_fwdref);
- TestFree (ptr->va_comment);
- xf86freeVideoPortList (ptr->va_port_lst);
- xf86optionListFree (ptr->va_option_lst);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-void
-xf86freeVideoPortList (XF86ConfVideoPortPtr ptr)
-{
- XF86ConfVideoPortPtr prev;
-
- while (ptr)
- {
- TestFree (ptr->vp_identifier);
- TestFree (ptr->vp_comment);
- xf86optionListFree (ptr->vp_option_lst);
- prev = ptr;
- ptr = ptr->list.next;
- xf86conffree (prev);
- }
-}
-
-XF86ConfVideoAdaptorPtr
-xf86findVideoAdaptor (const char *ident, XF86ConfVideoAdaptorPtr p)
-{
- while (p)
- {
- if (xf86nameCompare (ident, p->va_identifier) == 0)
- return (p);
-
- p = p->list.next;
- }
- return (NULL);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/configProcs.h b/nx-X11/programs/Xserver/hw/xfree86/parser/configProcs.h
deleted file mode 100644
index bb5f4e9b2..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/configProcs.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/configProcs.h,v 1.17 2003/08/24 17:37:08 dawes Exp $ */
-/*
- * Copyright (c) 1997-2001 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-/* Private procs. Public procs are in xf86Parser.h and xf86Optrec.h */
-
-/* Device.c */
-XF86ConfDevicePtr xf86parseDeviceSection(void);
-void xf86printDeviceSection(FILE *cf, XF86ConfDevicePtr ptr);
-void xf86freeDeviceList(XF86ConfDevicePtr ptr);
-int xf86validateDevice(XF86ConfigPtr p);
-/* Files.c */
-XF86ConfFilesPtr xf86parseFilesSection(void);
-void xf86printFileSection(FILE *cf, XF86ConfFilesPtr ptr);
-void xf86freeFiles(XF86ConfFilesPtr p);
-/* Flags.c */
-XF86ConfFlagsPtr xf86parseFlagsSection(void);
-void xf86printServerFlagsSection(FILE *f, XF86ConfFlagsPtr flags);
-void xf86freeFlags(XF86ConfFlagsPtr flags);
-/* Input.c */
-XF86ConfInputPtr xf86parseInputSection(void);
-void xf86printInputSection(FILE *f, XF86ConfInputPtr ptr);
-void xf86freeInputList(XF86ConfInputPtr ptr);
-int xf86validateInput (XF86ConfigPtr p);
-/* Keyboard.c */
-XF86ConfInputPtr xf86parseKeyboardSection(void);
-/* Layout.c */
-XF86ConfLayoutPtr xf86parseLayoutSection(void);
-void xf86printLayoutSection(FILE *cf, XF86ConfLayoutPtr ptr);
-void xf86freeLayoutList(XF86ConfLayoutPtr ptr);
-void xf86freeAdjacencyList(XF86ConfAdjacencyPtr ptr);
-void xf86freeInputrefList(XF86ConfInputrefPtr ptr);
-int xf86validateLayout(XF86ConfigPtr p);
-/* Module.c */
-XF86LoadPtr xf86parseModuleSubSection(XF86LoadPtr head, char *name);
-XF86ConfModulePtr xf86parseModuleSection(void);
-void xf86printModuleSection(FILE *cf, XF86ConfModulePtr ptr);
-XF86LoadPtr xf86addNewLoadDirective(XF86LoadPtr head, char *name, int type, XF86OptionPtr opts);
-void xf86freeModules(XF86ConfModulePtr ptr);
-/* Monitor.c */
-XF86ConfModeLinePtr xf86parseModeLine(void);
-XF86ConfModeLinePtr xf86parseVerboseMode(void);
-XF86ConfMonitorPtr xf86parseMonitorSection(void);
-XF86ConfModesPtr xf86parseModesSection(void);
-void xf86printMonitorSection(FILE *cf, XF86ConfMonitorPtr ptr);
-void xf86printModesSection(FILE *cf, XF86ConfModesPtr ptr);
-void xf86freeMonitorList(XF86ConfMonitorPtr ptr);
-void xf86freeModesList(XF86ConfModesPtr ptr);
-void xf86freeModeLineList(XF86ConfModeLinePtr ptr);
-int xf86validateMonitor(XF86ConfigPtr p, XF86ConfScreenPtr screen);
-/* Pointer.c */
-XF86ConfInputPtr xf86parsePointerSection(void);
-/* Screen.c */
-XF86ConfDisplayPtr xf86parseDisplaySubSection(void);
-XF86ConfScreenPtr xf86parseScreenSection(void);
-void xf86printScreenSection(FILE *cf, XF86ConfScreenPtr ptr);
-void xf86freeScreenList(XF86ConfScreenPtr ptr);
-void xf86freeAdaptorLinkList(XF86ConfAdaptorLinkPtr ptr);
-void xf86freeDisplayList(XF86ConfDisplayPtr ptr);
-void xf86freeModeList(XF86ModePtr ptr);
-int xf86validateScreen(XF86ConfigPtr p);
-/* Vendor.c */
-XF86ConfVendorPtr xf86parseVendorSection(void);
-XF86ConfVendSubPtr xf86parseVendorSubSection (void);
-void xf86freeVendorList(XF86ConfVendorPtr p);
-void xf86printVendorSection(FILE * cf, XF86ConfVendorPtr ptr);
-void xf86freeVendorSubList (XF86ConfVendSubPtr ptr);
-/* Video.c */
-XF86ConfVideoPortPtr xf86parseVideoPortSubSection(void);
-XF86ConfVideoAdaptorPtr xf86parseVideoAdaptorSection(void);
-void xf86printVideoAdaptorSection(FILE *cf, XF86ConfVideoAdaptorPtr ptr);
-void xf86freeVideoAdaptorList(XF86ConfVideoAdaptorPtr ptr);
-void xf86freeVideoPortList(XF86ConfVideoPortPtr ptr);
-/* read.c */
-int xf86validateConfig(XF86ConfigPtr p);
-/* scan.c */
-unsigned int xf86strToUL(char *str);
-int xf86getToken(xf86ConfigSymTabRec *tab);
-int xf86getSubToken(char **comment);
-int xf86getSubTokenWithTab(char **comment, xf86ConfigSymTabRec *tab);
-void xf86unGetToken(int token);
-char *xf86tokenString(void);
-void xf86parseError(char *format, ...);
-void xf86parseWarning(char *format, ...);
-void xf86validationError(char *format, ...);
-void xf86setSection(char *section);
-int xf86getStringToken(xf86ConfigSymTabRec *tab);
-/* write.c */
-/* DRI.c */
-XF86ConfBuffersPtr xf86parseBuffers (void);
-void xf86freeBuffersList (XF86ConfBuffersPtr ptr);
-XF86ConfDRIPtr xf86parseDRISection (void);
-void xf86printDRISection (FILE * cf, XF86ConfDRIPtr ptr);
-void xf86freeDRI (XF86ConfDRIPtr ptr);
-/* Extensions.c */
-XF86ConfExtensionsPtr xf86parseExtensionsSection (void);
-void xf86printExtensionsSection (FILE * cf, XF86ConfExtensionsPtr ptr);
-void xf86freeExtensions (XF86ConfExtensionsPtr ptr);
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef IN_XSERVER
-/* Externally provided functions */
-void ErrorF(const char *f, ...);
-void VErrorF(const char *f, va_list args);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/cpconfig.c b/nx-X11/programs/Xserver/hw/xfree86/parser/cpconfig.c
deleted file mode 100644
index 4eb635b30..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/cpconfig.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/cpconfig.c,v 1.6 2000/10/20 14:59:03 alanh Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <ctype.h>
-#include "xf86Parser.h"
-#include "configProcs.h"
-
-#ifdef MALLOC_FUNCTIONS
-void
-xfree (void *p)
-{
- free (p);
- return;
-}
-
-void *
-xalloc (int size)
-{
- return malloc (size);
-}
-
-void *
-xrealloc (void *p, int size)
-{
- return realloc (p, size);
-}
-
-#endif
-
-#define CONFPATH "%A,%R,/etc/X11/%R,%P/etc/X11/%R,%E,%F,/etc/X11/%F," \
- "%P/etc/X11/%F,%D/%X,/etc/X11/%X,/etc/%X,%P/etc/X11/%X.%H," \
- "%P/etc/X11/%X,%P/lib/X11/%X.%H,%P/lib/X11/%X"
-
-int
-main (int argc, char *argv[])
-{
- const char *filename;
- char *cmdline = NULL;
- XF86ConfigPtr conf;
-
- if (argc > 1)
- {
- cmdline = argv[1];
- }
- if ((filename = xf86openConfigFile (CONFPATH, cmdline, NULL)))
- {
- fprintf (stderr, "Opened %s for the config file\n", filename);
- }
- else
- {
- fprintf (stderr, "Unable to open config file\n");
- exit (1);
- }
-
- if ((conf = xf86readConfigFile ()) == NULL)
- {
- fprintf (stderr, "Problem when parsing config file\n");
- }
- else
- {
- fprintf (stderr, "Config file parsed OK\n");
- }
- xf86closeConfigFile ();
-
- if (argc > 2) {
- fprintf(stderr, "Writing config file to `%s'\n", argv[2]);
- xf86writeConfigFile (argv[2], conf);
- }
- exit(0);
-}
-
-/* Functions that the parser requires */
-
-void
-VErrorF(const char *f, va_list args)
-{
- vfprintf(stderr, f, args);
-}
-
-void
-ErrorF(const char *f, ...)
-{
- va_list args;
-
- va_start(args, f);
- vfprintf(stderr, f, args);
- va_end(args);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/read.c b/nx-X11/programs/Xserver/hw/xfree86/parser/read.c
deleted file mode 100644
index 59b0ea6fb..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/read.c
+++ /dev/null
@@ -1,321 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/read.c,v 1.24 2003/08/24 17:37:08 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-extern LexRec val;
-
-static xf86ConfigSymTabRec TopLevelTab[] =
-{
- {SECTION, "section"},
- {-1, ""},
-};
-
-#define CLEANUP xf86freeConfig
-
-XF86ConfigPtr
-xf86readConfigFile (void)
-{
- int token;
- XF86ConfigPtr ptr = NULL;
-
- if ((ptr = xf86confcalloc (1, sizeof (XF86ConfigRec))) == NULL)
- {
- return NULL;
- }
- memset (ptr, 0, sizeof (XF86ConfigRec));
-
- while ((token = xf86getToken (TopLevelTab)) != EOF_TOKEN)
- {
- switch (token)
- {
- case COMMENT:
- ptr->conf_comment = xf86addComment(ptr->conf_comment, val.str);
- break;
- case SECTION:
- if (xf86getSubToken (&(ptr->conf_comment)) != STRING)
- {
- xf86parseError (QUOTE_MSG, "Section");
- CLEANUP (ptr);
- return (NULL);
- }
- xf86setSection (val.str);
- if (xf86nameCompare (val.str, "files") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_RETURN (conf_files, xf86parseFilesSection ());
- }
- else if (xf86nameCompare (val.str, "serverflags") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_RETURN (conf_flags, xf86parseFlagsSection ());
- }
- else if (xf86nameCompare (val.str, "keyboard") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_LIST (conf_input_lst, xf86parseKeyboardSection,
- XF86ConfInputPtr);
- }
- else if (xf86nameCompare (val.str, "pointer") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_LIST (conf_input_lst, xf86parsePointerSection,
- XF86ConfInputPtr);
- }
- else if (xf86nameCompare (val.str, "videoadaptor") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_LIST (conf_videoadaptor_lst, xf86parseVideoAdaptorSection,
- XF86ConfVideoAdaptorPtr);
- }
- else if (xf86nameCompare (val.str, "device") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_LIST (conf_device_lst, xf86parseDeviceSection,
- XF86ConfDevicePtr);
- }
- else if (xf86nameCompare (val.str, "monitor") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_LIST (conf_monitor_lst, xf86parseMonitorSection,
- XF86ConfMonitorPtr);
- }
- else if (xf86nameCompare (val.str, "modes") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_LIST (conf_modes_lst, xf86parseModesSection,
- XF86ConfModesPtr);
- }
- else if (xf86nameCompare (val.str, "screen") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_LIST (conf_screen_lst, xf86parseScreenSection,
- XF86ConfScreenPtr);
- }
- else if (xf86nameCompare(val.str, "inputdevice") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_LIST (conf_input_lst, xf86parseInputSection,
- XF86ConfInputPtr);
- }
- else if (xf86nameCompare (val.str, "module") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_RETURN (conf_modules, xf86parseModuleSection ());
- }
- else if (xf86nameCompare (val.str, "serverlayout") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_LIST (conf_layout_lst, xf86parseLayoutSection,
- XF86ConfLayoutPtr);
- }
- else if (xf86nameCompare (val.str, "vendor") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_LIST (conf_vendor_lst, xf86parseVendorSection,
- XF86ConfVendorPtr);
- }
- else if (xf86nameCompare (val.str, "dri") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_RETURN (conf_dri, xf86parseDRISection ());
- }
- else if (xf86nameCompare (val.str, "extensions") == 0)
- {
- xf86conffree(val.str);
- val.str = NULL;
- HANDLE_RETURN (conf_extensions, xf86parseExtensionsSection ());
- }
- else
- {
- Error (INVALID_SECTION_MSG, xf86tokenString ());
- xf86conffree(val.str);
- val.str = NULL;
- }
- break;
- default:
- Error (INVALID_KEYWORD_MSG, xf86tokenString ());
- xf86conffree(val.str);
- val.str = NULL;
- }
- }
-
- if (xf86validateConfig (ptr))
- return (ptr);
- else
- {
- CLEANUP (ptr);
- return (NULL);
- }
-}
-
-#undef CLEANUP
-
-/*
- * This function resolves name references and reports errors if the named
- * objects cannot be found.
- */
-int
-xf86validateConfig (XF86ConfigPtr p)
-{
- if (!xf86validateDevice (p))
- return FALSE;
- if (!xf86validateScreen (p))
- return FALSE;
- if (!xf86validateInput (p))
- return FALSE;
- if (!xf86validateLayout (p))
- return FALSE;
-
- return (TRUE);
-}
-
-/*
- * adds an item to the end of the linked list. Any record whose first field
- * is a GenericListRec can be cast to this type and used with this function.
- * A pointer to the head of the list is returned to handle the addition of
- * the first item.
- */
-GenericListPtr
-xf86addListItem (GenericListPtr head, GenericListPtr new)
-{
- GenericListPtr p = head;
- GenericListPtr last = NULL;
-
- while (p)
- {
- last = p;
- p = p->next;
- }
-
- if (last)
- {
- last->next = new;
- return (head);
- }
- else
- return (new);
-}
-
-/*
- * Test if one chained list contains the other.
- * In this case both list have the same endpoint (provided they don't loop)
- */
-int
-xf86itemNotSublist(GenericListPtr list_1, GenericListPtr list_2)
-{
- GenericListPtr p = list_1;
- GenericListPtr last_1 = NULL, last_2 = NULL;
-
- while (p) {
- last_1 = p;
- p = p->next;
- }
-
- p = list_2;
- while (p) {
- last_2 = p;
- p = p->next;
- }
-
- return (!(last_1 == last_2));
-}
-
-void
-xf86freeConfig (XF86ConfigPtr p)
-{
- if (p == NULL)
- return;
-
- xf86freeFiles (p->conf_files);
- xf86freeModules (p->conf_modules);
- xf86freeFlags (p->conf_flags);
- xf86freeMonitorList (p->conf_monitor_lst);
- xf86freeModesList (p->conf_modes_lst);
- xf86freeVideoAdaptorList (p->conf_videoadaptor_lst);
- xf86freeDeviceList (p->conf_device_lst);
- xf86freeScreenList (p->conf_screen_lst);
- xf86freeLayoutList (p->conf_layout_lst);
- xf86freeInputList (p->conf_input_lst);
- xf86freeVendorList (p->conf_vendor_lst);
- xf86freeDRI (p->conf_dri);
- xf86freeExtensions (p->conf_extensions);
- TestFree(p->conf_comment);
-
- xf86conffree (p);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/scan.c b/nx-X11/programs/Xserver/hw/xfree86/parser/scan.c
deleted file mode 100644
index ce3cda128..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/scan.c
+++ /dev/null
@@ -1,949 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/scan.c,v 1.30 2003/11/03 05:11:52 tsi Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdarg.h>
-
-#if !defined(X_NOT_POSIX)
-#if defined(_POSIX_SOURCE)
-#include <limits.h>
-#else
-#define _POSIX_SOURCE
-#include <limits.h>
-#undef _POSIX_SOURCE
-#endif /* _POSIX_SOURCE */
-#endif /* !X_NOT_POSIX */
-#if !defined(PATH_MAX)
-#if defined(MAXPATHLEN)
-#define PATH_MAX MAXPATHLEN
-#else
-#define PATH_MAX 1024
-#endif /* MAXPATHLEN */
-#endif /* !PATH_MAX */
-
-#if !defined(MAXHOSTNAMELEN)
-#define MAXHOSTNAMELEN 32
-#endif /* !MAXHOSTNAMELEN */
-
-#include "Configint.h"
-#include "xf86tokens.h"
-
-#define CONFIG_BUF_LEN 1024
-
-static int StringToToken (char *, xf86ConfigSymTabRec *);
-
-static FILE *configFile = NULL;
-static const char **builtinConfig = NULL;
-static int builtinIndex = 0;
-static int configPos = 0; /* current readers position */
-static int configLineNo = 0; /* linenumber */
-static char *configBuf, *configRBuf; /* buffer for lines */
-static char *configPath; /* path to config file */
-static char *configSection = NULL; /* name of current section being parsed */
-static int pushToken = LOCK_TOKEN;
-static int eol_seen = 0; /* private state to handle comments */
-LexRec val;
-
-#ifdef __UNIXOS2__
-extern char *__XOS2RedirRoot(char *path);
-#endif
-
-/*
- * xf86strToUL --
- *
- * A portable, but restricted, version of strtoul(). It only understands
- * hex, octal, and decimal. But it's good enough for our needs.
- */
-unsigned int
-xf86strToUL (char *str)
-{
- int base = 10;
- char *p = str;
- unsigned int tot = 0;
-
- if (*p == '0')
- {
- p++;
- if ((*p == 'x') || (*p == 'X'))
- {
- p++;
- base = 16;
- }
- else
- base = 8;
- }
- while (*p)
- {
- if ((*p >= '0') && (*p <= ((base == 8) ? '7' : '9')))
- {
- tot = tot * base + (*p - '0');
- }
- else if ((base == 16) && (*p >= 'a') && (*p <= 'f'))
- {
- tot = tot * base + 10 + (*p - 'a');
- }
- else if ((base == 16) && (*p >= 'A') && (*p <= 'F'))
- {
- tot = tot * base + 10 + (*p - 'A');
- }
- else
- {
- return (tot);
- }
- p++;
- }
- return (tot);
-}
-
-/*
- * xf86getToken --
- * Read next Token form the config file. Handle the global variable
- * pushToken.
- */
-int
-xf86getToken (xf86ConfigSymTabRec * tab)
-{
- int c, i;
-
- /*
- * First check whether pushToken has a different value than LOCK_TOKEN.
- * In this case rBuf[] contains a valid STRING/TOKEN/NUMBER. But in the
- * oth * case the next token must be read from the input.
- */
- if (pushToken == EOF_TOKEN)
- return (EOF_TOKEN);
- else if (pushToken == LOCK_TOKEN)
- {
- /*
- * eol_seen is only set for the first token after a newline.
- */
- eol_seen = 0;
-
- c = configBuf[configPos];
-
- /*
- * Get start of next Token. EOF is handled,
- * whitespaces are skipped.
- */
-
-again:
- if (!c)
- {
- char *ret;
- if (configFile)
- ret = fgets (configBuf, CONFIG_BUF_LEN - 1, configFile);
- else {
- if (builtinConfig[builtinIndex] == NULL)
- ret = NULL;
- else {
- ret = strncpy(configBuf, builtinConfig[builtinIndex],
- CONFIG_BUF_LEN);
- builtinIndex++;
- }
- }
- if (ret == NULL)
- {
- return (pushToken = EOF_TOKEN);
- }
- configLineNo++;
- configPos = 0;
- eol_seen = 1;
- }
-
- i = 0;
- for (;;) {
- c = configBuf[configPos++];
- configRBuf[i++] = c;
- switch (c) {
- case ' ':
- case '\t':
- case '\r':
- continue;
- case '\n':
- i = 0;
- continue;
- }
- break;
- }
- if (c == '\0')
- goto again;
-
- if (c == '#')
- {
- do
- {
- configRBuf[i++] = (c = configBuf[configPos++]);
- }
- while ((c != '\n') && (c != '\r') && (c != '\0'));
- configRBuf[i] = '\0';
- /* XXX no private copy.
- * Use xf86addComment when setting a comment.
- */
- val.str = configRBuf;
- return (COMMENT);
- }
-
- /* GJA -- handle '-' and ',' * Be careful: "-hsync" is a keyword. */
- else if ((c == ',') && !isalpha (configBuf[configPos]))
- {
- return COMMA;
- }
- else if ((c == '-') && !isalpha (configBuf[configPos]))
- {
- return DASH;
- }
-
- /*
- * Numbers are returned immediately ...
- */
- if (isdigit (c))
- {
- int base;
-
- if (c == '0')
- if ((configBuf[configPos] == 'x') ||
- (configBuf[configPos] == 'X'))
- base = 16;
- else
- base = 8;
- else
- base = 10;
-
- configRBuf[0] = c;
- i = 1;
- while (isdigit (c = configBuf[configPos++]) ||
- (c == '.') || (c == 'x') || (c == 'X') ||
- ((base == 16) && (((c >= 'a') && (c <= 'f')) ||
- ((c >= 'A') && (c <= 'F')))))
- configRBuf[i++] = c;
- configPos--; /* GJA -- one too far */
- configRBuf[i] = '\0';
- val.num = xf86strToUL (configRBuf);
- val.realnum = atof (configRBuf);
- return (NUMBER);
- }
-
- /*
- * All Strings START with a \" ...
- */
- else if (c == '\"')
- {
- i = -1;
- do
- {
- configRBuf[++i] = (c = configBuf[configPos++]);
- }
- while ((c != '\"') && (c != '\n') && (c != '\r') && (c != '\0'));
- configRBuf[i] = '\0';
- val.str = xf86confmalloc (strlen (configRBuf) + 1);
- strcpy (val.str, configRBuf); /* private copy ! */
- return (STRING);
- }
-
- /*
- * ... and now we MUST have a valid token. The search is
- * handled later along with the pushed tokens.
- */
- else
- {
- configRBuf[0] = c;
- i = 0;
- do
- {
- configRBuf[++i] = (c = configBuf[configPos++]);;
- }
- while ((c != ' ') && (c != '\t') && (c != '\n') && (c != '\r') && (c != '\0') && (c != '#'));
- --configPos;
- configRBuf[i] = '\0';
- i = 0;
- }
-
- }
- else
- {
-
- /*
- * Here we deal with pushed tokens. Reinitialize pushToken again. If
- * the pushed token was NUMBER || STRING return them again ...
- */
- int temp = pushToken;
- pushToken = LOCK_TOKEN;
-
- if (temp == COMMA || temp == DASH)
- return (temp);
- if (temp == NUMBER || temp == STRING)
- return (temp);
- }
-
- /*
- * Joop, at last we have to lookup the token ...
- */
- if (tab)
- {
- i = 0;
- while (tab[i].token != -1)
- if (xf86nameCompare (configRBuf, tab[i].name) == 0)
- return (tab[i].token);
- else
- i++;
- }
-
- return (ERROR_TOKEN); /* Error catcher */
-}
-
-int
-xf86getSubToken (char **comment)
-{
- int token;
-
- for (;;) {
- token = xf86getToken(NULL);
- if (token == COMMENT) {
- if (comment)
- *comment = xf86addComment(*comment, val.str);
- }
- else
- return (token);
- }
- /*NOTREACHED*/
-}
-
-int
-xf86getSubTokenWithTab (char **comment, xf86ConfigSymTabRec *tab)
-{
- int token;
-
- for (;;) {
- token = xf86getToken(tab);
- if (token == COMMENT) {
- if (comment)
- *comment = xf86addComment(*comment, val.str);
- }
- else
- return (token);
- }
- /*NOTREACHED*/
-}
-
-void
-xf86unGetToken (int token)
-{
- pushToken = token;
-}
-
-char *
-xf86tokenString (void)
-{
- return configRBuf;
-}
-
-int
-xf86pathIsAbsolute(const char *path)
-{
- if (path && path[0] == '/')
- return 1;
-#ifdef __UNIXOS2__
- if (path && (path[0] == '\\' || (path[1] == ':')))
- return 1;
-#endif
- return 0;
-}
-
-/* A path is "safe" if it is relative and if it contains no ".." elements. */
-int
-xf86pathIsSafe(const char *path)
-{
- if (xf86pathIsAbsolute(path))
- return 0;
-
- /* Compare with ".." */
- if (!strcmp(path, ".."))
- return 0;
-
- /* Look for leading "../" */
- if (!strncmp(path, "../", 3))
- return 0;
-
- /* Look for trailing "/.." */
- if ((strlen(path) > 3) && !strcmp(path + strlen(path) - 3, "/.."))
- return 0;
-
- /* Look for "/../" */
- if (strstr(path, "/../"))
- return 0;
-
- return 1;
-}
-
-/*
- * This function substitutes the following escape sequences:
- *
- * %A cmdline argument as an absolute path (must be absolute to match)
- * %R cmdline argument as a relative path
- * %S cmdline argument as a "safe" path (relative, and no ".." elements)
- * %X default config file name ("xorg.conf")
- * %H hostname
- * %E config file environment ($XORGCONFIG) as an absolute path
- * %F config file environment ($XORGCONFIG) as a relative path
- * %G config file environment ($XORGCONFIG) as a safe path
- * %D $HOME
- * %P projroot
- * %M major version number
- * %% %
- * %& UNIXOS2 only: prepend X11ROOT env var
- */
-
-#ifndef XCONFIGFILE
-#define XCONFIGFILE "xorg.conf"
-#endif
-#ifndef PROJECTROOT
-#define PROJECTROOT "/usr/X11R6"
-#endif
-#ifndef XCONFENV
-#define XCONFENV "XORGCONFIG"
-#endif
-#define XFREE86CFGFILE "XF86Config"
-#ifndef XF86_VERSION_MAJOR
-#ifdef XVERSION
-#if XVERSION > 40000000
-#define XF86_VERSION_MAJOR (XVERSION / 10000000)
-#else
-#define XF86_VERSION_MAJOR (XVERSION / 1000)
-#endif
-#else
-#define XF86_VERSION_MAJOR 4
-#endif
-#endif
-
-#define BAIL_OUT do { \
- xf86conffree(result); \
- return NULL; \
- } while (0)
-
-#define CHECK_LENGTH do { \
- if (l > PATH_MAX) { \
- BAIL_OUT; \
- } \
- } while (0)
-
-#define APPEND_STR(s) do { \
- if (strlen(s) + l > PATH_MAX) { \
- BAIL_OUT; \
- } else { \
- strcpy(result + l, s); \
- l += strlen(s); \
- } \
- } while (0)
-
-static char *
-DoSubstitution(const char *template, const char *cmdline, const char *projroot,
- int *cmdlineUsed, int *envUsed, char *XConfigFile)
-{
- char *result;
- int i, l;
- static const char *env = NULL, *home = NULL;
- static char *hostname = NULL;
- static char majorvers[3] = "";
-#ifdef __UNIXOS2__
- static char *x11root = NULL;
-#endif
-
- if (!template)
- return NULL;
-
- if (cmdlineUsed)
- *cmdlineUsed = 0;
- if (envUsed)
- *envUsed = 0;
-
- result = xf86confmalloc(PATH_MAX + 1);
- l = 0;
- for (i = 0; template[i]; i++) {
- if (template[i] != '%') {
- result[l++] = template[i];
- CHECK_LENGTH;
- } else {
- switch (template[++i]) {
- case 'A':
- if (cmdline && xf86pathIsAbsolute(cmdline)) {
- APPEND_STR(cmdline);
- if (cmdlineUsed)
- *cmdlineUsed = 1;
- } else
- BAIL_OUT;
- break;
- case 'R':
- if (cmdline && !xf86pathIsAbsolute(cmdline)) {
- APPEND_STR(cmdline);
- if (cmdlineUsed)
- *cmdlineUsed = 1;
- } else
- BAIL_OUT;
- break;
- case 'S':
- if (cmdline && xf86pathIsSafe(cmdline)) {
- APPEND_STR(cmdline);
- if (cmdlineUsed)
- *cmdlineUsed = 1;
- } else
- BAIL_OUT;
- break;
- case 'X':
- APPEND_STR(XConfigFile);
- break;
- case 'H':
- if (!hostname) {
- if ((hostname = xf86confmalloc(MAXHOSTNAMELEN + 1))) {
- if (gethostname(hostname, MAXHOSTNAMELEN) == 0) {
- hostname[MAXHOSTNAMELEN] = '\0';
- } else {
- xf86conffree(hostname);
- hostname = NULL;
- }
- }
- }
- if (hostname)
- APPEND_STR(hostname);
- break;
- case 'E':
- if (!env)
- env = getenv(XCONFENV);
- if (env && xf86pathIsAbsolute(env)) {
- APPEND_STR(env);
- if (envUsed)
- *envUsed = 1;
- } else
- BAIL_OUT;
- break;
- case 'F':
- if (!env)
- env = getenv(XCONFENV);
- if (env && !xf86pathIsAbsolute(env)) {
- APPEND_STR(env);
- if (envUsed)
- *envUsed = 1;
- } else
- BAIL_OUT;
- break;
- case 'G':
- if (!env)
- env = getenv(XCONFENV);
- if (env && xf86pathIsSafe(env)) {
- APPEND_STR(env);
- if (envUsed)
- *envUsed = 1;
- } else
- BAIL_OUT;
- break;
- case 'D':
- if (!home)
- home = getenv("HOME");
- if (home && xf86pathIsAbsolute(home))
- APPEND_STR(home);
- else
- BAIL_OUT;
- break;
- case 'P':
- if (projroot && xf86pathIsAbsolute(projroot))
- APPEND_STR(projroot);
- else
- BAIL_OUT;
- break;
- case 'M':
- if (!majorvers[0]) {
- if (XF86_VERSION_MAJOR < 0 || XF86_VERSION_MAJOR > 99) {
- fprintf(stderr, "XF86_VERSION_MAJOR is out of range\n");
- BAIL_OUT;
- } else
- sprintf(majorvers, "%d", XF86_VERSION_MAJOR);
- }
- APPEND_STR(majorvers);
- break;
- case '%':
- result[l++] = '%';
- CHECK_LENGTH;
- break;
-#ifdef __UNIXOS2__
- case '&':
- if (!x11root)
- x11root = getenv("X11ROOT");
- if (x11root)
- APPEND_STR(x11root);
- else
- BAIL_OUT;
- break;
-#endif
- default:
- fprintf(stderr, "invalid escape %%%c found in path template\n",
- template[i]);
- BAIL_OUT;
- break;
- }
- }
- }
-#ifdef DEBUG
- fprintf(stderr, "Converted `%s' to `%s'\n", template, result);
-#endif
- return result;
-}
-
-/*
- * xf86openConfigFile --
- *
- * This function take a config file search path (optional), a command-line
- * specified file name (optional) and the ProjectRoot path (optional) and
- * locates and opens a config file based on that information. If a
- * command-line file name is specified, then this function fails if none
- * of the located files.
- *
- * The return value is a pointer to the actual name of the file that was
- * opened. When no file is found, the return value is NULL.
- *
- * The escape sequences allowed in the search path are defined above.
- *
- */
-
-#ifndef DEFAULT_CONF_PATH
-#define DEFAULT_CONF_PATH "/etc/X11/%S," \
- "%P/etc/X11/%S," \
- "/etc/X11/%G," \
- "%P/etc/X11/%G," \
- "/etc/X11/%X-%M," \
- "/etc/X11/%X," \
- "/etc/%X," \
- "%P/etc/X11/%X.%H," \
- "%P/etc/X11/%X-%M," \
- "%P/etc/X11/%X," \
- "%P/lib/X11/%X.%H," \
- "%P/lib/X11/%X-%M," \
- "%P/lib/X11/%X"
-#endif
-
-const char *
-xf86openConfigFile(const char *path, const char *cmdline, const char *projroot)
-{
- char *pathcopy;
- const char *template;
- int cmdlineUsed = 0;
-
- configFile = NULL;
- configPos = 0; /* current readers position */
- configLineNo = 0; /* linenumber */
- pushToken = LOCK_TOKEN;
-
- if (!path || !path[0])
- path = DEFAULT_CONF_PATH;
- pathcopy = xf86confmalloc(strlen(path) + 1);
- strcpy(pathcopy, path);
- if (!projroot || !projroot[0])
- projroot = PROJECTROOT;
-
- template = strtok(pathcopy, ",");
-
- /* First, search for a config file. */
- while (template && !configFile) {
- if ((configPath = DoSubstitution(template, cmdline, projroot,
- &cmdlineUsed, NULL,
- XCONFIGFILE))) {
- if ((configFile = fopen(configPath, "r")) != 0) {
- if (cmdline && !cmdlineUsed) {
- fclose(configFile);
- configFile = NULL;
- }
- }
- }
- if (configPath && !configFile) {
- xf86conffree(configPath);
- configPath = NULL;
- }
- template = strtok(NULL, ",");
- }
-
- /* Then search for fallback */
- if (!configFile) {
- strcpy(pathcopy, path);
- template = strtok(pathcopy, ",");
-
- while (template && !configFile) {
- if ((configPath = DoSubstitution(template, cmdline, projroot,
- &cmdlineUsed, NULL,
- XFREE86CFGFILE))) {
- if ((configFile = fopen(configPath, "r")) != 0) {
- if (cmdline && !cmdlineUsed) {
- fclose(configFile);
- configFile = NULL;
- }
- }
- }
- if (configPath && !configFile) {
- xf86conffree(configPath);
- configPath = NULL;
- }
- template = strtok(NULL, ",");
- }
- }
-
- xf86conffree(pathcopy);
- if (!configFile) {
-
- return NULL;
- }
-
- configBuf = xf86confmalloc (CONFIG_BUF_LEN);
- configRBuf = xf86confmalloc (CONFIG_BUF_LEN);
- configBuf[0] = '\0'; /* sanity ... */
-
- return configPath;
-}
-
-void
-xf86closeConfigFile (void)
-{
- xf86conffree (configPath);
- configPath = NULL;
- xf86conffree (configRBuf);
- configRBuf = NULL;
- xf86conffree (configBuf);
- configBuf = NULL;
-
- if (configFile) {
- fclose (configFile);
- configFile = NULL;
- } else {
- builtinConfig = NULL;
- builtinIndex = 0;
- }
-}
-
-void
-xf86setBuiltinConfig(const char *config[])
-{
- builtinConfig = config;
- configPath = xf86configStrdup("<builtin configuration>");
- configBuf = xf86confmalloc (CONFIG_BUF_LEN);
- configRBuf = xf86confmalloc (CONFIG_BUF_LEN);
- configBuf[0] = '\0'; /* sanity ... */
-
-}
-
-void
-xf86parseError (char *format,...)
-{
- va_list ap;
-
- ErrorF ("Parse error on line %d of section %s in file %s\n\t",
- configLineNo, configSection, configPath);
- va_start (ap, format);
- VErrorF (format, ap);
- va_end (ap);
-
- ErrorF ("\n");
-}
-
-void
-xf86parseWarning (char *format,...)
-{
- va_list ap;
-
- ErrorF ("Parse warning on line %d of section %s in file %s\n\t",
- configLineNo, configSection, configPath);
- va_start (ap, format);
- VErrorF (format, ap);
- va_end (ap);
-
- ErrorF ("\n");
-}
-
-void
-xf86validationError (char *format,...)
-{
- va_list ap;
-
- ErrorF ("Data incomplete in file %s\n\t", configPath);
- va_start (ap, format);
- VErrorF (format, ap);
- va_end (ap);
-
- ErrorF ("\n");
-}
-
-void
-xf86setSection (char *section)
-{
- if (configSection)
- xf86conffree(configSection);
- configSection = xf86confmalloc(strlen (section) + 1);
- strcpy (configSection, section);
-}
-
-/*
- * xf86getToken --
- * Lookup a string if it is actually a token in disguise.
- */
-int
-xf86getStringToken (xf86ConfigSymTabRec * tab)
-{
- return StringToToken (val.str, tab);
-}
-
-static int
-StringToToken (char *str, xf86ConfigSymTabRec * tab)
-{
- int i;
-
- for (i = 0; tab[i].token != -1; i++)
- {
- if (!xf86nameCompare (tab[i].name, str))
- return tab[i].token;
- }
- return (ERROR_TOKEN);
-}
-
-
-/*
- * Compare two names. The characters '_', ' ', and '\t' are ignored
- * in the comparison.
- */
-int
-xf86nameCompare (const char *s1, const char *s2)
-{
- char c1, c2;
-
- if (!s1 || *s1 == 0) {
- if (!s2 || *s2 == 0)
- return (0);
- else
- return (1);
- }
-
- while (*s1 == '_' || *s1 == ' ' || *s1 == '\t')
- s1++;
- while (*s2 == '_' || *s2 == ' ' || *s2 == '\t')
- s2++;
- c1 = (isupper (*s1) ? tolower (*s1) : *s1);
- c2 = (isupper (*s2) ? tolower (*s2) : *s2);
- while (c1 == c2)
- {
- if (c1 == '\0')
- return (0);
- s1++;
- s2++;
- while (*s1 == '_' || *s1 == ' ' || *s1 == '\t')
- s1++;
- while (*s2 == '_' || *s2 == ' ' || *s2 == '\t')
- s2++;
- c1 = (isupper (*s1) ? tolower (*s1) : *s1);
- c2 = (isupper (*s2) ? tolower (*s2) : *s2);
- }
- return (c1 - c2);
-}
-
-char *
-xf86addComment(char *cur, char *add)
-{
- char *str;
- int len, curlen, iscomment, hasnewline = 0, endnewline;
-
- if (add == NULL || add[0] == '\0')
- return (cur);
-
- if (cur) {
- curlen = strlen(cur);
- if (curlen)
- hasnewline = cur[curlen - 1] == '\n';
- eol_seen = 0;
- }
- else
- curlen = 0;
-
- str = add;
- iscomment = 0;
- while (*str) {
- if (*str != ' ' && *str != '\t')
- break;
- ++str;
- }
- iscomment = (*str == '#');
-
- len = strlen(add);
- endnewline = add[len - 1] == '\n';
- len += 1 + iscomment + (!hasnewline) + (!endnewline) + eol_seen;
-
- if ((str = xf86confrealloc(cur, len + curlen)) == NULL)
- return (cur);
-
- cur = str;
-
- if (eol_seen || (curlen && !hasnewline))
- cur[curlen++] = '\n';
- if (!iscomment)
- cur[curlen++] = '#';
- strcpy(cur + curlen, add);
- if (!endnewline)
- strcat(cur, "\n");
-
- return (cur);
-}
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/write.c b/nx-X11/programs/Xserver/hw/xfree86/parser/write.c
deleted file mode 100644
index 285080d99..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/write.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/write.c,v 1.18 2003/08/24 17:37:08 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/* View/edit this file with tab stops set to 4 */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Parser.h"
-#include "xf86tokens.h"
-#include "Configint.h"
-
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include <errno.h>
-
-#if ((defined(sun) && !defined(SVR4)) || defined(macII)) && !defined(__GLIBC__)
-#ifndef strerror
-extern char *sys_errlist[];
-extern int sys_nerr;
-#define strerror(n) \
- (((n) >= 0 && (n) < sys_nerr) ? sys_errlist[n] : "unknown error")
-#endif
-#endif
-
-#if defined(SVR4) || defined(__linux__) || defined(CSRG_BASED)
-#define HAS_SAVED_IDS_AND_SETEUID
-#endif
-#if defined(__UNIXOS2__) || defined(WIN32)
-#define HAS_NO_UIDS
-#endif
-
-#ifdef HAS_NO_UIDS
-#define doWriteConfigFile xf86writeConfigFile
-#define Local /**/
-#else
-#define Local static
-#endif
-
-Local int
-doWriteConfigFile (const char *filename, XF86ConfigPtr cptr)
-{
- FILE *cf;
-
- if ((cf = fopen (filename, "w")) == NULL)
- {
- return 0;
- }
-
- if (cptr->conf_comment)
- fprintf (cf, "%s\n", cptr->conf_comment);
-
- xf86printLayoutSection (cf, cptr->conf_layout_lst);
-
- fprintf (cf, "Section \"Files\"\n");
- xf86printFileSection (cf, cptr->conf_files);
- fprintf (cf, "EndSection\n\n");
-
- fprintf (cf, "Section \"Module\"\n");
- xf86printModuleSection (cf, cptr->conf_modules);
- fprintf (cf, "EndSection\n\n");
-
- xf86printVendorSection (cf, cptr->conf_vendor_lst);
-
- xf86printServerFlagsSection (cf, cptr->conf_flags);
-
- xf86printInputSection (cf, cptr->conf_input_lst);
-
- xf86printVideoAdaptorSection (cf, cptr->conf_videoadaptor_lst);
-
- xf86printModesSection (cf, cptr->conf_modes_lst);
-
- xf86printMonitorSection (cf, cptr->conf_monitor_lst);
-
- xf86printDeviceSection (cf, cptr->conf_device_lst);
-
- xf86printScreenSection (cf, cptr->conf_screen_lst);
-
- xf86printDRISection (cf, cptr->conf_dri);
-
- xf86printExtensionsSection (cf, cptr->conf_extensions);
-
- fclose(cf);
- return 1;
-}
-
-#ifndef HAS_NO_UIDS
-
-int
-xf86writeConfigFile (const char *filename, XF86ConfigPtr cptr)
-{
- int ret;
-
-#if !defined(HAS_SAVED_IDS_AND_SETEUID)
- int pid, p;
- int status;
- void (*csig)(int);
-#else
- int ruid, euid;
-#endif
-
- if (getuid() != geteuid())
- {
-
-#if !defined(HAS_SAVED_IDS_AND_SETEUID)
- /* Need to fork to change ruid without loosing euid */
-#ifdef SIGCHLD
- csig = signal(SIGCHLD, SIG_DFL);
-#endif
- switch ((pid = fork()))
- {
- case -1:
- ErrorF("xf86writeConfigFile(): fork failed (%s)\n",
- strerror(errno));
- return 0;
- case 0: /* child */
- setuid(getuid());
- ret = doWriteConfigFile(filename, cptr);
- exit(ret);
- break;
- default: /* parent */
- do
- {
- p = waitpid(pid, &status, 0);
- } while (p == -1 && errno == EINTR);
- }
-#ifdef SIGCHLD
- signal(SIGCHLD, csig);
-#endif
- if (p != -1 && WIFEXITED(status) && WEXITSTATUS(status) == 0)
- return 1; /* success */
- else
- return 0;
-
-#else /* HAS_SAVED_IDS_AND_SETEUID */
-
- ruid = getuid();
- euid = geteuid();
-
- if (seteuid(ruid) == -1)
- {
- ErrorF("xf86writeConfigFile(): seteuid(%d) failed (%s)\n",
- ruid, strerror(errno));
- return 0;
- }
- ret = doWriteConfigFile(filename, cptr);
-
- if (seteuid(euid) == -1)
- {
- ErrorF("xf86writeConfigFile(): seteuid(%d) failed (%s)\n",
- euid, strerror(errno));
- }
- return ret;
-
-#endif /* HAS_SAVED_IDS_AND_SETEUID */
-
- }
- else
- {
- return doWriteConfigFile(filename, cptr);
- }
-}
-
-#endif /* !HAS_NO_UIDS */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/xf86Optrec.h b/nx-X11/programs/Xserver/hw/xfree86/parser/xf86Optrec.h
deleted file mode 100644
index c38f2c219..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/xf86Optrec.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/xf86Optrec.h,v 1.11 2003/08/24 17:37:08 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2001 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/*
- * This file contains the Option Record that is passed between the Parser,
- * and Module setup procs.
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _xf86Optrec_h_
-#define _xf86Optrec_h_
-#include <stdio.h>
-
-/*
- * all records that need to be linked lists should contain a GenericList as
- * their first field.
- */
-typedef struct generic_list_rec
-{
- void *next;
-}
-GenericListRec, *GenericListPtr, *glp;
-
-/*
- * All options are stored using this data type.
- */
-typedef struct
-{
- GenericListRec list;
- char *opt_name;
- char *opt_val;
- int opt_used;
- char *opt_comment;
-}
-XF86OptionRec, *XF86OptionPtr;
-
-
-XF86OptionPtr xf86addNewOption(XF86OptionPtr head, char *name, char *val);
-XF86OptionPtr xf86optionListDup(XF86OptionPtr opt);
-void xf86optionListFree(XF86OptionPtr opt);
-char *xf86optionName(XF86OptionPtr opt);
-char *xf86optionValue(XF86OptionPtr opt);
-XF86OptionPtr xf86newOption(char *name, char *value);
-XF86OptionPtr xf86nextOption(XF86OptionPtr list);
-XF86OptionPtr xf86findOption(XF86OptionPtr list, const char *name);
-char *xf86findOptionValue(XF86OptionPtr list, const char *name);
-int xf86findOptionBoolean (XF86OptionPtr, const char *, int);
-XF86OptionPtr xf86optionListCreate(const char **options, int count, int used);
-XF86OptionPtr xf86optionListMerge(XF86OptionPtr head, XF86OptionPtr tail);
-char *xf86configStrdup (const char *s);
-int xf86nameCompare (const char *s1, const char *s2);
-char *xf86uLongToString(unsigned long i);
-void xf86debugListOptions(XF86OptionPtr);
-XF86OptionPtr xf86parseOption(XF86OptionPtr head);
-void xf86printOptionList(FILE *fp, XF86OptionPtr list, int tabs);
-
-
-#endif /* _xf86Optrec_h_ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/xf86Parser.h b/nx-X11/programs/Xserver/hw/xfree86/parser/xf86Parser.h
deleted file mode 100644
index 71568842d..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/xf86Parser.h
+++ /dev/null
@@ -1,483 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/xf86Parser.h,v 1.33 2003/10/08 14:58:30 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-/*
- * This file contains the external interfaces for the XFree86 configuration
- * file parser.
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _xf86Parser_h_
-#define _xf86Parser_h_
-
-#include "xf86Optrec.h"
-
-#define HAVE_PARSER_DECLS
-
-typedef struct
-{
- char *file_logfile;
- char *file_rgbpath;
- char *file_modulepath;
- char *file_inputdevs;
- char *file_fontpath;
- char *file_comment;
-}
-XF86ConfFilesRec, *XF86ConfFilesPtr;
-
-/* Values for load_type */
-#define XF86_LOAD_MODULE 0
-#define XF86_LOAD_DRIVER 1
-
-typedef struct
-{
- GenericListRec list;
- int load_type;
- char *load_name;
- XF86OptionPtr load_opt;
- char *load_comment;
-}
-XF86LoadRec, *XF86LoadPtr;
-
-typedef struct
-{
- XF86LoadPtr mod_load_lst;
- char *mod_comment;
-}
-XF86ConfModuleRec, *XF86ConfModulePtr;
-
-#define CONF_IMPLICIT_KEYBOARD "Implicit Core Keyboard"
-
-#define CONF_IMPLICIT_POINTER "Implicit Core Pointer"
-
-#define XF86CONF_PHSYNC 0x0001
-#define XF86CONF_NHSYNC 0x0002
-#define XF86CONF_PVSYNC 0x0004
-#define XF86CONF_NVSYNC 0x0008
-#define XF86CONF_INTERLACE 0x0010
-#define XF86CONF_DBLSCAN 0x0020
-#define XF86CONF_CSYNC 0x0040
-#define XF86CONF_PCSYNC 0x0080
-#define XF86CONF_NCSYNC 0x0100
-#define XF86CONF_HSKEW 0x0200 /* hskew provided */
-#define XF86CONF_BCAST 0x0400
-#define XF86CONF_CUSTOM 0x0800 /* timing numbers customized by editor */
-#define XF86CONF_VSCAN 0x1000
-
-typedef struct
-{
- GenericListRec list;
- char *ml_identifier;
- int ml_clock;
- int ml_hdisplay;
- int ml_hsyncstart;
- int ml_hsyncend;
- int ml_htotal;
- int ml_vdisplay;
- int ml_vsyncstart;
- int ml_vsyncend;
- int ml_vtotal;
- int ml_vscan;
- int ml_flags;
- int ml_hskew;
- char *ml_comment;
-}
-XF86ConfModeLineRec, *XF86ConfModeLinePtr;
-
-typedef struct
-{
- GenericListRec list;
- char *vp_identifier;
- XF86OptionPtr vp_option_lst;
- char *vp_comment;
-}
-XF86ConfVideoPortRec, *XF86ConfVideoPortPtr;
-
-typedef struct
-{
- GenericListRec list;
- char *va_identifier;
- char *va_vendor;
- char *va_board;
- char *va_busid;
- char *va_driver;
- XF86OptionPtr va_option_lst;
- XF86ConfVideoPortPtr va_port_lst;
- char *va_fwdref;
- char *va_comment;
-}
-XF86ConfVideoAdaptorRec, *XF86ConfVideoAdaptorPtr;
-
-#define CONF_MAX_HSYNC 8
-#define CONF_MAX_VREFRESH 8
-
-typedef struct
-{
- float hi, lo;
-}
-parser_range;
-
-typedef struct
-{
- int red, green, blue;
-}
-parser_rgb;
-
-typedef struct
-{
- GenericListRec list;
- char *modes_identifier;
- XF86ConfModeLinePtr mon_modeline_lst;
- char *modes_comment;
-}
-XF86ConfModesRec, *XF86ConfModesPtr;
-
-typedef struct
-{
- GenericListRec list;
- char *ml_modes_str;
- XF86ConfModesPtr ml_modes;
-}
-XF86ConfModesLinkRec, *XF86ConfModesLinkPtr;
-
-typedef struct
-{
- GenericListRec list;
- char *mon_identifier;
- char *mon_vendor;
- char *mon_modelname;
- int mon_width; /* in mm */
- int mon_height; /* in mm */
- XF86ConfModeLinePtr mon_modeline_lst;
- int mon_n_hsync;
- parser_range mon_hsync[CONF_MAX_HSYNC];
- int mon_n_vrefresh;
- parser_range mon_vrefresh[CONF_MAX_VREFRESH];
- float mon_gamma_red;
- float mon_gamma_green;
- float mon_gamma_blue;
- XF86OptionPtr mon_option_lst;
- XF86ConfModesLinkPtr mon_modes_sect_lst;
- char *mon_comment;
-}
-XF86ConfMonitorRec, *XF86ConfMonitorPtr;
-
-#define CONF_MAXDACSPEEDS 4
-#define CONF_MAXCLOCKS 128
-
-typedef struct
-{
- GenericListRec list;
- char *dev_identifier;
- char *dev_vendor;
- char *dev_board;
- char *dev_chipset;
- char *dev_busid;
- char *dev_card;
- char *dev_driver;
- char *dev_ramdac;
- int dev_dacSpeeds[CONF_MAXDACSPEEDS];
- int dev_videoram;
- int dev_textclockfreq;
- unsigned long dev_bios_base;
- unsigned long dev_mem_base;
- unsigned long dev_io_base;
- char *dev_clockchip;
- int dev_clocks;
- int dev_clock[CONF_MAXCLOCKS];
- int dev_chipid;
- int dev_chiprev;
- int dev_irq;
- int dev_screen;
- XF86OptionPtr dev_option_lst;
- char *dev_comment;
-}
-XF86ConfDeviceRec, *XF86ConfDevicePtr;
-
-typedef struct
-{
- GenericListRec list;
- char *mode_name;
-}
-XF86ModeRec, *XF86ModePtr;
-
-typedef struct
-{
- GenericListRec list;
- int disp_frameX0;
- int disp_frameY0;
- int disp_virtualX;
- int disp_virtualY;
- int disp_depth;
- int disp_bpp;
- char *disp_visual;
- parser_rgb disp_weight;
- parser_rgb disp_black;
- parser_rgb disp_white;
- XF86ModePtr disp_mode_lst;
- XF86OptionPtr disp_option_lst;
- char *disp_comment;
-}
-XF86ConfDisplayRec, *XF86ConfDisplayPtr;
-
-typedef struct
-{
- XF86OptionPtr flg_option_lst;
- char *flg_comment;
-}
-XF86ConfFlagsRec, *XF86ConfFlagsPtr;
-
-typedef struct
-{
- GenericListRec list;
- char *al_adaptor_str;
- XF86ConfVideoAdaptorPtr al_adaptor;
-}
-XF86ConfAdaptorLinkRec, *XF86ConfAdaptorLinkPtr;
-
-typedef struct
-{
- GenericListRec list;
- char *scrn_identifier;
- char *scrn_obso_driver;
- int scrn_defaultdepth;
- int scrn_defaultbpp;
- int scrn_defaultfbbpp;
- char *scrn_monitor_str;
- XF86ConfMonitorPtr scrn_monitor;
- char *scrn_device_str;
- XF86ConfDevicePtr scrn_device;
- XF86ConfAdaptorLinkPtr scrn_adaptor_lst;
- XF86ConfDisplayPtr scrn_display_lst;
- XF86OptionPtr scrn_option_lst;
- char *scrn_comment;
-}
-XF86ConfScreenRec, *XF86ConfScreenPtr;
-
-typedef struct
-{
- GenericListRec list;
- char *inp_identifier;
- char *inp_driver;
- XF86OptionPtr inp_option_lst;
- char *inp_comment;
-}
-XF86ConfInputRec, *XF86ConfInputPtr;
-
-typedef struct
-{
- GenericListRec list;
- XF86ConfInputPtr iref_inputdev;
- char *iref_inputdev_str;
- XF86OptionPtr iref_option_lst;
-}
-XF86ConfInputrefRec, *XF86ConfInputrefPtr;
-
-/* Values for adj_where */
-#define CONF_ADJ_OBSOLETE -1
-#define CONF_ADJ_ABSOLUTE 0
-#define CONF_ADJ_RIGHTOF 1
-#define CONF_ADJ_LEFTOF 2
-#define CONF_ADJ_ABOVE 3
-#define CONF_ADJ_BELOW 4
-#define CONF_ADJ_RELATIVE 5
-
-typedef struct
-{
- GenericListRec list;
- int adj_scrnum;
- XF86ConfScreenPtr adj_screen;
- char *adj_screen_str;
- XF86ConfScreenPtr adj_top;
- char *adj_top_str;
- XF86ConfScreenPtr adj_bottom;
- char *adj_bottom_str;
- XF86ConfScreenPtr adj_left;
- char *adj_left_str;
- XF86ConfScreenPtr adj_right;
- char *adj_right_str;
- int adj_where;
- int adj_x;
- int adj_y;
- char *adj_refscreen;
-}
-XF86ConfAdjacencyRec, *XF86ConfAdjacencyPtr;
-
-typedef struct
-{
- GenericListRec list;
- char *inactive_device_str;
- XF86ConfDevicePtr inactive_device;
-}
-XF86ConfInactiveRec, *XF86ConfInactivePtr;
-
-typedef struct
-{
- GenericListRec list;
- char *lay_identifier;
- XF86ConfAdjacencyPtr lay_adjacency_lst;
- XF86ConfInactivePtr lay_inactive_lst;
- XF86ConfInputrefPtr lay_input_lst;
- XF86OptionPtr lay_option_lst;
- char *lay_comment;
-}
-XF86ConfLayoutRec, *XF86ConfLayoutPtr;
-
-typedef struct
-{
- GenericListRec list;
- char *vs_name;
- char *vs_identifier;
- XF86OptionPtr vs_option_lst;
- char *vs_comment;
-}
-XF86ConfVendSubRec, *XF86ConfVendSubPtr;
-
-typedef struct
-{
- GenericListRec list;
- char *vnd_identifier;
- XF86OptionPtr vnd_option_lst;
- XF86ConfVendSubPtr vnd_sub_lst;
- char *vnd_comment;
-}
-XF86ConfVendorRec, *XF86ConfVendorPtr;
-
-typedef struct
-{
- GenericListRec list;
- int buf_count;
- int buf_size;
- char *buf_flags;
- char *buf_comment;
-}
-XF86ConfBuffersRec, *XF86ConfBuffersPtr;
-
-typedef struct
-{
- char *dri_group_name;
- int dri_group;
- int dri_mode;
- XF86ConfBuffersPtr dri_buffers_lst;
- char *dri_comment;
-}
-XF86ConfDRIRec, *XF86ConfDRIPtr;
-
-typedef struct
-{
- XF86OptionPtr ext_option_lst;
- char *extensions_comment;
-}
-XF86ConfExtensionsRec, *XF86ConfExtensionsPtr;
-
-typedef struct
-{
- XF86ConfFilesPtr conf_files;
- XF86ConfModulePtr conf_modules;
- XF86ConfFlagsPtr conf_flags;
- XF86ConfVideoAdaptorPtr conf_videoadaptor_lst;
- XF86ConfModesPtr conf_modes_lst;
- XF86ConfMonitorPtr conf_monitor_lst;
- XF86ConfDevicePtr conf_device_lst;
- XF86ConfScreenPtr conf_screen_lst;
- XF86ConfInputPtr conf_input_lst;
- XF86ConfLayoutPtr conf_layout_lst;
- XF86ConfVendorPtr conf_vendor_lst;
- XF86ConfDRIPtr conf_dri;
- XF86ConfExtensionsPtr conf_extensions;
- char *conf_comment;
-}
-XF86ConfigRec, *XF86ConfigPtr;
-
-typedef struct
-{
- int token; /* id of the token */
- char *name; /* pointer to the LOWERCASED name */
-}
-xf86ConfigSymTabRec, *xf86ConfigSymTabPtr;
-
-/*
- * prototypes for public functions
- */
-extern const char *xf86openConfigFile (const char *, const char *,
- const char *);
-extern void xf86setBuiltinConfig(const char *config[]);
-extern XF86ConfigPtr xf86readConfigFile (void);
-extern void xf86closeConfigFile (void);
-extern void xf86freeConfig (XF86ConfigPtr p);
-extern int xf86writeConfigFile (const char *, XF86ConfigPtr);
-XF86ConfDevicePtr xf86findDevice(const char *ident, XF86ConfDevicePtr p);
-XF86ConfLayoutPtr xf86findLayout(const char *name, XF86ConfLayoutPtr list);
-XF86ConfMonitorPtr xf86findMonitor(const char *ident, XF86ConfMonitorPtr p);
-XF86ConfModesPtr xf86findModes(const char *ident, XF86ConfModesPtr p);
-XF86ConfModeLinePtr xf86findModeLine(const char *ident, XF86ConfModeLinePtr p);
-XF86ConfScreenPtr xf86findScreen(const char *ident, XF86ConfScreenPtr p);
-XF86ConfInputPtr xf86findInput(const char *ident, XF86ConfInputPtr p);
-XF86ConfInputPtr xf86findInputByDriver(const char *driver, XF86ConfInputPtr p);
-XF86ConfVendorPtr xf86findVendor(const char *name, XF86ConfVendorPtr list);
-XF86ConfVideoAdaptorPtr xf86findVideoAdaptor(const char *ident,
- XF86ConfVideoAdaptorPtr p);
-
-GenericListPtr xf86addListItem(GenericListPtr head, GenericListPtr c_new);
-int xf86itemNotSublist(GenericListPtr list_1, GenericListPtr list_2);
-
-int xf86pathIsAbsolute(const char *path);
-int xf86pathIsSafe(const char *path);
-char *xf86addComment(char *cur, char *add);
-
-#endif /* _xf86Parser_h_ */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/parser/xf86tokens.h b/nx-X11/programs/Xserver/hw/xfree86/parser/xf86tokens.h
deleted file mode 100644
index 3c7e68ece..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/parser/xf86tokens.h
+++ /dev/null
@@ -1,280 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/parser/xf86tokens.h,v 1.20 2003/08/24 17:37:09 dawes Exp $ */
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * 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
- * 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 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 X CONSORTIUM 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 Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _xf86_tokens_h
-#define _xf86_tokens_h
-
-/* Undefine symbols that some OSs might define */
-#undef IOBASE
-
-/*
- * Each token should have a unique value regardless of the section
- * it is used in.
- */
-
-typedef enum {
- /* errno-style tokens */
- EOF_TOKEN = -4,
- LOCK_TOKEN = -3,
- ERROR_TOKEN = -2,
-
- /* value type tokens */
- NUMBER = 1,
- STRING,
-
- /* Tokens that can appear in many sections */
- SECTION,
- SUBSECTION,
- ENDSECTION,
- ENDSUBSECTION,
- IDENTIFIER,
- VENDOR,
- DASH,
- COMMA,
- OPTION,
- COMMENT,
-
- /* Frequency units */
- HRZ,
- KHZ,
- MHZ,
-
- /* File tokens */
- FONTPATH,
- RGBPATH,
- MODULEPATH,
- INPUTDEVICES,
- LOGFILEPATH,
-
- /* Server Flag tokens. These are deprecated in favour of generic Options */
- NOTRAPSIGNALS,
- DONTZAP,
- DONTZOOM,
- DISABLEVIDMODE,
- ALLOWNONLOCAL,
- DISABLEMODINDEV,
- MODINDEVALLOWNONLOCAL,
- ALLOWMOUSEOPENFAIL,
- BLANKTIME,
- STANDBYTIME,
- SUSPENDTIME,
- OFFTIME,
- DEFAULTLAYOUT,
-
- /* Monitor tokens */
- MODEL,
- MODELINE,
- DISPLAYSIZE,
- HORIZSYNC,
- VERTREFRESH,
- MODE,
- GAMMA,
- USEMODES,
-
- /* Modes tokens */
- /* no new ones */
-
- /* Mode tokens */
- DOTCLOCK,
- HTIMINGS,
- VTIMINGS,
- FLAGS,
- HSKEW,
- BCAST,
- VSCAN,
- ENDMODE,
-
- /* Screen tokens */
- OBSDRIVER,
- MDEVICE,
- MONITOR,
- SCREENNO,
- DEFAULTDEPTH,
- DEFAULTBPP,
- DEFAULTFBBPP,
-
- /* VideoAdaptor tokens */
- VIDEOADAPTOR,
-
- /* Mode timing tokens */
- TT_INTERLACE,
- TT_PHSYNC,
- TT_NHSYNC,
- TT_PVSYNC,
- TT_NVSYNC,
- TT_CSYNC,
- TT_PCSYNC,
- TT_NCSYNC,
- TT_DBLSCAN,
- TT_HSKEW,
- TT_BCAST,
- TT_VSCAN,
- TT_CUSTOM,
-
- /* Module tokens */
- LOAD,
- LOAD_DRIVER,
-
- /* Device tokens */
- DRIVER,
- CHIPSET,
- CLOCKS,
- VIDEORAM,
- BOARD,
- IOBASE,
- RAMDAC,
- DACSPEED,
- BIOSBASE,
- MEMBASE,
- CLOCKCHIP,
- CHIPID,
- CHIPREV,
- CARD,
- BUSID,
- TEXTCLOCKFRQ,
- IRQ,
-
- /* Keyboard tokens */
- AUTOREPEAT,
- XLEDS,
- KPROTOCOL,
- XKBKEYMAP,
- XKBCOMPAT,
- XKBTYPES,
- XKBKEYCODES,
- XKBGEOMETRY,
- XKBSYMBOLS,
- XKBDISABLE,
- PANIX106,
- XKBRULES,
- XKBMODEL,
- XKBLAYOUT,
- XKBVARIANT,
- XKBOPTIONS,
- /* The next two have become ServerFlags options */
- VTINIT,
- VTSYSREQ,
- /* Obsolete keyboard tokens */
- SERVERNUM,
- LEFTALT,
- RIGHTALT,
- SCROLLLOCK_TOK,
- RIGHTCTL,
- /* arguments for the above obsolete tokens */
- CONF_KM_META,
- CONF_KM_COMPOSE,
- CONF_KM_MODESHIFT,
- CONF_KM_MODELOCK,
- CONF_KM_SCROLLLOCK,
- CONF_KM_CONTROL,
-
- /* Pointer tokens */
- EMULATE3,
- BAUDRATE,
- SAMPLERATE,
- PRESOLUTION,
- CLEARDTR,
- CLEARRTS,
- CHORDMIDDLE,
- PROTOCOL,
- PDEVICE,
- EM3TIMEOUT,
- DEVICE_NAME,
- ALWAYSCORE,
- PBUTTONS,
- ZAXISMAPPING,
-
- /* Pointer Z axis mapping tokens */
- XAXIS,
- YAXIS,
-
- /* Display tokens */
- MODES,
- VIEWPORT,
- VIRTUAL,
- VISUAL,
- BLACK_TOK,
- WHITE_TOK,
- DEPTH,
- BPP,
- WEIGHT,
-
- /* Layout Tokens */
- SCREEN,
- INACTIVE,
- INPUTDEVICE,
-
- /* Adjaceny Tokens */
- RIGHTOF,
- LEFTOF,
- ABOVE,
- BELOW,
- RELATIVE,
- ABSOLUTE,
-
- /* Vendor Tokens */
- VENDORNAME,
-
- /* DRI Tokens */
- GROUP,
- BUFFERS
-} ParserTokens;
-
-#endif /* _xf86_tokens_h */
diff --git a/nx-X11/programs/Xserver/hw/xfree86/xf86Date.h b/nx-X11/programs/Xserver/hw/xfree86/xf86Date.h
deleted file mode 100644
index ce2b6ee24..000000000
--- a/nx-X11/programs/Xserver/hw/xfree86/xf86Date.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/xf86Date.h,v 1.6 2005/07/03 07:01:24 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86Date.h,v 1.54 2003/12/19 04:52:10 dawes Exp $ */
-/*
- * Copyright (c) 2003 by The XFree86 Project, Inc.
- *
- * 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
- * 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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef XF86_DATE
-
-#define XF86_DATE "18 December 2003"
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xnest/Args.c b/nx-X11/programs/Xserver/hw/xnest/Args.c
deleted file mode 100644
index a36677491..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Args.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/* $Xorg: Args.c,v 1.3 2000/08/17 19:53:26 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "screenint.h"
-#include "input.h"
-#include "misc.h"
-#include "scrnintstr.h"
-#include "servermd.h"
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "Args.h"
-
-char *xnestDisplayName = NULL;
-Bool xnestSynchronize = False;
-Bool xnestFullGeneration = False;
-int xnestDefaultClass;
-Bool xnestUserDefaultClass = False;
-int xnestDefaultDepth;
-Bool xnestUserDefaultDepth = False;
-Bool xnestSoftwareScreenSaver = False;
-int xnestX;
-int xnestY;
-unsigned int xnestWidth;
-unsigned int xnestHeight;
-int xnestUserGeometry = 0;
-int xnestBorderWidth;
-Bool xnestUserBorderWidth = False;
-char *xnestWindowName = NULL;
-int xnestNumScreens = 0;
-Bool xnestDoDirectColormaps = False;
-Window xnestParentWindow = 0;
-
-/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
-void ddxInitGlobals(void)
-{
-}
-
-int
-ddxProcessArgument (int argc, char *argv[], int i)
-{
- if (!strcmp(argv[i], "-display")) {
- if (++i < argc) {
- xnestDisplayName = argv[i];
- return 2;
- }
- return 0;
- }
- if (!strcmp(argv[i], "-sync")) {
- xnestSynchronize = True;
- return 1;
- }
- if (!strcmp(argv[i], "-full")) {
- xnestFullGeneration = True;
- return 1;
- }
- if (!strcmp(argv[i], "-class")) {
- if (++i < argc) {
- if (!strcmp(argv[i], "StaticGray")) {
- xnestDefaultClass = StaticGray;
- xnestUserDefaultClass = True;
- return 2;
- }
- else if (!strcmp(argv[i], "GrayScale")) {
- xnestDefaultClass = GrayScale;
- xnestUserDefaultClass = True;
- return 2;
- }
- else if (!strcmp(argv[i], "StaticColor")) {
- xnestDefaultClass = StaticColor;
- xnestUserDefaultClass = True;
- return 2;
- }
- else if (!strcmp(argv[i], "PseudoColor")) {
- xnestDefaultClass = PseudoColor;
- xnestUserDefaultClass = True;
- return 2;
- }
- else if (!strcmp(argv[i], "TrueColor")) {
- xnestDefaultClass = TrueColor;
- xnestUserDefaultClass = True;
- return 2;
- }
- else if (!strcmp(argv[i], "DirectColor")) {
- xnestDefaultClass = DirectColor;
- xnestUserDefaultClass = True;
- return 2;
- }
- }
- return 0;
- }
- if (!strcmp(argv[i], "-cc")) {
- if (++i < argc && sscanf(argv[i], "%i", &xnestDefaultClass) == 1) {
- if (xnestDefaultClass >= 0 && xnestDefaultClass <= 5) {
- xnestUserDefaultClass = True;
- /* lex the OS layer process it as well, so return 0 */
- }
- }
- return 0;
- }
- if (!strcmp(argv[i], "-depth")) {
- if (++i < argc && sscanf(argv[i], "%i", &xnestDefaultDepth) == 1) {
- if (xnestDefaultDepth > 0) {
- xnestUserDefaultDepth = True;
- return 2;
- }
- }
- return 0;
- }
- if (!strcmp(argv[i], "-sss")) {
- xnestSoftwareScreenSaver = True;
- return 1;
- }
- if (!strcmp(argv[i], "-geometry")) {
- if (++i < argc) {
- xnestUserGeometry = XParseGeometry(argv[i],
- &xnestX, &xnestY,
- &xnestWidth, &xnestHeight);
- if (xnestUserGeometry) return 2;
- }
- return 0;
- }
- if (!strcmp(argv[i], "-bw")) {
- if (++i < argc && sscanf(argv[i], "%i", &xnestBorderWidth) == 1) {
- if (xnestBorderWidth >= 0) {
- xnestUserBorderWidth = True;
- return 2;
- }
- }
- return 0;
- }
- if (!strcmp(argv[i], "-name")) {
- if (++i < argc) {
- xnestWindowName = argv[i];
- return 2;
- }
- return 0;
- }
- if (!strcmp(argv[i], "-scrns")) {
- if (++i < argc && sscanf(argv[i], "%i", &xnestNumScreens) == 1) {
- if (xnestNumScreens > 0) {
- if (xnestNumScreens > MAXSCREENS) {
- ErrorF("Maximum number of screens is %d.\n", MAXSCREENS);
- xnestNumScreens = MAXSCREENS;
- }
- return 2;
- }
- }
- return 0;
- }
- if (!strcmp(argv[i], "-install")) {
- xnestDoDirectColormaps = True;
- return 1;
- }
- if (!strcmp(argv[i], "-parent")) {
- if (++i < argc) {
- xnestParentWindow = (XID) strtol (argv[i], (char**)NULL, 0);
- return 2;
- }
- }
- return 0;
-}
-
-void ddxUseMsg()
-{
- ErrorF("-display string display name of the real server\n");
- ErrorF("-sync sinchronize with the real server\n");
- ErrorF("-full utilize full regeneration\n");
- ErrorF("-class string default visual class\n");
- ErrorF("-depth int default depth\n");
- ErrorF("-sss use software screen saver\n");
- ErrorF("-geometry WxH+X+Y window size and position\n");
- ErrorF("-bw int window border width\n");
- ErrorF("-name string window name\n");
- ErrorF("-scrns int number of screens to generate\n");
- ErrorF("-install instal colormaps directly\n");
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/Args.h b/nx-X11/programs/Xserver/hw/xnest/Args.h
deleted file mode 100644
index a0c586bcb..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Args.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* $Xorg: Args.h,v 1.3 2000/08/17 19:53:27 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifndef XNESTARGC_H
-#define XNESTARGS_H
-
-extern char *xnestDisplayName;
-extern Bool xnestSynchronize;
-extern Bool xnestFullGeneration;
-extern int xnestDefaultClass;
-extern Bool xnestUserDefaultClass;
-extern int xnestDefaultDepth;
-extern Bool xnestUserDefaultDepth;
-extern Bool xnestSoftwareScreenSaver;
-extern int xnestX;
-extern int xnestY;
-extern unsigned int xnestWidth;
-extern unsigned int xnestHeight;
-extern int xnestUserGeometry;
-extern int xnestBorderWidth;
-extern Bool xnestUserBorderWidth;
-extern char *xnestWindowName;
-extern int xnestNumScreens;
-extern Bool xnestDoDirectColormaps;
-extern Window xnestParentWindow;
-
-#endif /* XNESTARGS_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/Color.c b/nx-X11/programs/Xserver/hw/xnest/Color.c
deleted file mode 100644
index 779633a96..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Color.c
+++ /dev/null
@@ -1,497 +0,0 @@
-/* $Xorg: Color.c,v 1.3 2000/08/17 19:53:27 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "scrnintstr.h"
-#include "window.h"
-#include "windowstr.h"
-#include "colormapst.h"
-#include "resource.h"
-
-#include "Xnest.h"
-
-
-#include "Display.h"
-#include "Screen.h"
-#include "Color.h"
-#include "Visual.h"
-#include "XNWindow.h"
-#include "Args.h"
-
-static ColormapPtr InstalledMaps[MAXSCREENS];
-
-Bool
-xnestCreateColormap(ColormapPtr pCmap)
-{
- VisualPtr pVisual;
- XColor *colors;
- int i, ncolors;
- Pixel red, green, blue;
- Pixel redInc, greenInc, blueInc;
-
- pVisual = pCmap->pVisual;
- ncolors = pVisual->ColormapEntries;
-
- pCmap->devPriv = (pointer)xalloc(sizeof(xnestPrivColormap));
-
- xnestColormapPriv(pCmap)->colormap =
- XCreateColormap(xnestDisplay,
- xnestDefaultWindows[pCmap->pScreen->myNum],
- xnestVisual(pVisual),
- (pVisual->class & DynamicClass) ?
- AllocAll : AllocNone);
-
-
- switch (pVisual->class) {
- case StaticGray: /* read only */
- colors = (XColor *)xalloc(ncolors * sizeof(XColor));
- for (i = 0; i < ncolors; i++)
- colors[i].pixel = i;
- XQueryColors(xnestDisplay, xnestColormap(pCmap), colors, ncolors);
- for (i = 0; i < ncolors; i++) {
- pCmap->red[i].co.local.red = colors[i].red;
- pCmap->red[i].co.local.green = colors[i].red;
- pCmap->red[i].co.local.blue = colors[i].red;
- }
- xfree(colors);
- break;
-
- case StaticColor: /* read only */
- colors = (XColor *)xalloc(ncolors * sizeof(XColor));
- for (i = 0; i < ncolors; i++)
- colors[i].pixel = i;
- XQueryColors(xnestDisplay, xnestColormap(pCmap), colors, ncolors);
- for (i = 0; i < ncolors; i++) {
- pCmap->red[i].co.local.red = colors[i].red;
- pCmap->red[i].co.local.green = colors[i].green;
- pCmap->red[i].co.local.blue = colors[i].blue;
- }
- xfree(colors);
- break;
-
- case TrueColor: /* read only */
- colors = (XColor *)xalloc(ncolors * sizeof(XColor));
- red = green = blue = 0L;
- redInc = lowbit(pVisual->redMask);
- greenInc = lowbit(pVisual->greenMask);
- blueInc = lowbit(pVisual->blueMask);
- for (i = 0; i < ncolors; i++) {
- colors[i].pixel = red | green | blue;
- red += redInc;
- if (red > pVisual->redMask) red = 0L;
- green += greenInc;
- if (green > pVisual->greenMask) green = 0L;
- blue += blueInc;
- if (blue > pVisual->blueMask) blue = 0L;
- }
- XQueryColors(xnestDisplay, xnestColormap(pCmap), colors, ncolors);
- for (i = 0; i < ncolors; i++) {
- pCmap->red[i].co.local.red = colors[i].red;
- pCmap->green[i].co.local.green = colors[i].green;
- pCmap->blue[i].co.local.blue = colors[i].blue;
- }
- xfree(colors);
- break;
-
- case GrayScale: /* read and write */
- break;
-
- case PseudoColor: /* read and write */
- break;
-
- case DirectColor: /* read and write */
- break;
- }
-
- return True;
-}
-
-void
-xnestDestroyColormap(ColormapPtr pCmap)
-{
- XFreeColormap(xnestDisplay, xnestColormap(pCmap));
- xfree(pCmap->devPriv);
-}
-
-#define SEARCH_PREDICATE \
- (xnestWindow(pWin) != None && wColormap(pWin) == icws->cmapIDs[i])
-
-static int
-xnestCountInstalledColormapWindows(WindowPtr pWin, pointer ptr)
-{
- xnestInstalledColormapWindows *icws = (xnestInstalledColormapWindows *)ptr;
- int i;
-
- for (i = 0; i < icws->numCmapIDs; i++)
- if (SEARCH_PREDICATE) {
- icws->numWindows++;
- return WT_DONTWALKCHILDREN;
- }
-
- return WT_WALKCHILDREN;
-}
-
-static int
-xnestGetInstalledColormapWindows(WindowPtr pWin, pointer ptr)
-{
- xnestInstalledColormapWindows *icws = (xnestInstalledColormapWindows *)ptr;
- int i;
-
- for (i = 0; i < icws->numCmapIDs; i++)
- if (SEARCH_PREDICATE) {
- icws->windows[icws->index++] = xnestWindow(pWin);
- return WT_DONTWALKCHILDREN;
- }
-
- return WT_WALKCHILDREN;
-}
-
-static Window *xnestOldInstalledColormapWindows = NULL;
-static int xnestNumOldInstalledColormapWindows = 0;
-
-static Bool
-xnestSameInstalledColormapWindows(Window *windows, int numWindows)
-{
- if (xnestNumOldInstalledColormapWindows != numWindows)
- return False;
-
- if (xnestOldInstalledColormapWindows == windows)
- return True;
-
- if (xnestOldInstalledColormapWindows == NULL || windows == NULL)
- return False;
-
- if (memcmp(xnestOldInstalledColormapWindows, windows,
- numWindows * sizeof(Window)))
- return False;
-
- return True;
-}
-
-void
-xnestSetInstalledColormapWindows(ScreenPtr pScreen)
-{
- xnestInstalledColormapWindows icws;
- int numWindows;
-
- icws.cmapIDs = (Colormap *)xalloc(pScreen->maxInstalledCmaps *
- sizeof(Colormap));
- icws.numCmapIDs = xnestListInstalledColormaps(pScreen, icws.cmapIDs);
- icws.numWindows = 0;
- WalkTree(pScreen, xnestCountInstalledColormapWindows, (pointer)&icws);
- if (icws.numWindows) {
- icws.windows = (Window *)xalloc((icws.numWindows + 1) * sizeof(Window));
- icws.index = 0;
- WalkTree(pScreen, xnestGetInstalledColormapWindows, (pointer)&icws);
- icws.windows[icws.numWindows] = xnestDefaultWindows[pScreen->myNum];
- numWindows = icws.numWindows + 1;
- }
- else {
- icws.windows = NULL;
- numWindows = 0;
- }
-
- xfree(icws.cmapIDs);
-
- if (!xnestSameInstalledColormapWindows(icws.windows, icws.numWindows)) {
- if (xnestOldInstalledColormapWindows)
- xfree(xnestOldInstalledColormapWindows);
-
-#ifdef _XSERVER64
- {
- int i;
- Window64 *windows = (Window64 *)xalloc(numWindows * sizeof(Window64));
-
- for(i = 0; i < numWindows; ++i)
- windows[i] = icws.windows[i];
- XSetWMColormapWindows(xnestDisplay, xnestDefaultWindows[pScreen->myNum],
- windows, numWindows);
- xfree(windows);
- }
-#else
- XSetWMColormapWindows(xnestDisplay, xnestDefaultWindows[pScreen->myNum],
- icws.windows, numWindows);
-#endif
-
- xnestOldInstalledColormapWindows = icws.windows;
- xnestNumOldInstalledColormapWindows = icws.numWindows;
-
-#ifdef DUMB_WINDOW_MANAGERS
- /*
- This code is for dumb window managers.
- This will only work with default local visual colormaps.
- */
- if (icws.numWindows)
- {
- WindowPtr pWin;
- Visual *visual;
- ColormapPtr pCmap;
-
- pWin = xnestWindowPtr(icws.windows[0]);
- visual = xnestVisualFromID(pScreen, wVisual(pWin));
-
- if (visual == xnestDefaultVisual(pScreen))
- pCmap = (ColormapPtr)LookupIDByType(wColormap(pWin),
- RT_COLORMAP);
- else
- pCmap = (ColormapPtr)LookupIDByType(pScreen->defColormap,
- RT_COLORMAP);
-
- XSetWindowColormap(xnestDisplay,
- xnestDefaultWindows[pScreen->myNum],
- xnestColormap(pCmap));
- }
-#endif /* DUMB_WINDOW_MANAGERS */
- }
- else
- if (icws.windows) xfree(icws.windows);
-}
-
-void
-xnestSetScreenSaverColormapWindow(ScreenPtr pScreen)
-{
- if (xnestOldInstalledColormapWindows)
- xfree(xnestOldInstalledColormapWindows);
-
-#ifdef _XSERVER64
- {
- Window64 window;
-
- window = xnestScreenSaverWindows[pScreen->myNum];
- XSetWMColormapWindows(xnestDisplay, xnestDefaultWindows[pScreen->myNum],
- &window, 1);
- xnestScreenSaverWindows[pScreen->myNum] = window;
- }
-#else
- XSetWMColormapWindows(xnestDisplay, xnestDefaultWindows[pScreen->myNum],
- &xnestScreenSaverWindows[pScreen->myNum], 1);
-#endif /* _XSERVER64 */
-
- xnestOldInstalledColormapWindows = NULL;
- xnestNumOldInstalledColormapWindows = 0;
-
- xnestDirectUninstallColormaps(pScreen);
-}
-
-void
-xnestDirectInstallColormaps(ScreenPtr pScreen)
-{
- int i, n;
- Colormap pCmapIDs[MAXCMAPS];
-
- if (!xnestDoDirectColormaps) return;
-
- n = (*pScreen->ListInstalledColormaps)(pScreen, pCmapIDs);
-
- for (i = 0; i < n; i++) {
- ColormapPtr pCmap;
-
- pCmap = (ColormapPtr)LookupIDByType(pCmapIDs[i], RT_COLORMAP);
- if (pCmap)
- XInstallColormap(xnestDisplay, xnestColormap(pCmap));
- }
-}
-
-void
-xnestDirectUninstallColormaps(ScreenPtr pScreen)
-{
- int i, n;
- Colormap pCmapIDs[MAXCMAPS];
-
- if (!xnestDoDirectColormaps) return;
-
- n = (*pScreen->ListInstalledColormaps)(pScreen, pCmapIDs);
-
- for (i = 0; i < n; i++) {
- ColormapPtr pCmap;
-
- pCmap = (ColormapPtr)LookupIDByType(pCmapIDs[i], RT_COLORMAP);
- if (pCmap)
- XUninstallColormap(xnestDisplay, xnestColormap(pCmap));
- }
-}
-
-void
-xnestInstallColormap(ColormapPtr pCmap)
-{
- int index;
- ColormapPtr pOldCmap;
-
- index = pCmap->pScreen->myNum;
- pOldCmap = InstalledMaps[index];
-
- if(pCmap != pOldCmap)
- {
- xnestDirectUninstallColormaps(pCmap->pScreen);
-
- /* Uninstall pInstalledMap. Notify all interested parties. */
- if(pOldCmap != (ColormapPtr)None)
- WalkTree(pCmap->pScreen, TellLostMap, (pointer)&pOldCmap->mid);
-
- InstalledMaps[index] = pCmap;
- WalkTree(pCmap->pScreen, TellGainedMap, (pointer)&pCmap->mid);
-
- xnestSetInstalledColormapWindows(pCmap->pScreen);
- xnestDirectInstallColormaps(pCmap->pScreen);
- }
-}
-
-void
-xnestUninstallColormap(ColormapPtr pCmap)
-{
- int index;
- ColormapPtr pCurCmap;
-
- index = pCmap->pScreen->myNum;
- pCurCmap = InstalledMaps[index];
-
- if(pCmap == pCurCmap)
- {
- if (pCmap->mid != pCmap->pScreen->defColormap)
- {
- pCurCmap = (ColormapPtr)LookupIDByType(pCmap->pScreen->defColormap,
- RT_COLORMAP);
- (*pCmap->pScreen->InstallColormap)(pCurCmap);
- }
- }
-}
-
-static Bool xnestInstalledDefaultColormap = False;
-
-int
-xnestListInstalledColormaps(ScreenPtr pScreen, Colormap *pCmapIDs)
-{
- if (xnestInstalledDefaultColormap) {
- *pCmapIDs = InstalledMaps[pScreen->myNum]->mid;
- return 1;
- }
- else
- return 0;
-}
-
-void
-xnestStoreColors(ColormapPtr pCmap, int nColors, xColorItem *pColors)
-{
- if (pCmap->pVisual->class & DynamicClass)
-#ifdef _XSERVER64
- {
- int i;
- XColor *pColors64 = (XColor *)xalloc(nColors * sizeof(XColor) );
-
- for(i = 0; i < nColors; ++i)
- {
- pColors64[i].pixel = pColors[i].pixel;
- pColors64[i].red = pColors[i].red;
- pColors64[i].green = pColors[i].green;
- pColors64[i].blue = pColors[i].blue;
- pColors64[i].flags = pColors[i].flags;
- }
- XStoreColors(xnestDisplay, xnestColormap(pCmap), pColors64, nColors);
- xfree(pColors64);
- }
-#else
- XStoreColors(xnestDisplay, xnestColormap(pCmap),
- (XColor *)pColors, nColors);
-#endif
-}
-
-void
-xnestResolveColor(unsigned short *pRed, unsigned short *pGreen,
- unsigned short *pBlue, VisualPtr pVisual)
-{
- int shift;
- unsigned int lim;
-
- shift = 16 - pVisual->bitsPerRGBValue;
- lim = (1 << pVisual->bitsPerRGBValue) - 1;
-
- if ((pVisual->class == PseudoColor) || (pVisual->class == DirectColor))
- {
- /* rescale to rgb bits */
- *pRed = ((*pRed >> shift) * 65535) / lim;
- *pGreen = ((*pGreen >> shift) * 65535) / lim;
- *pBlue = ((*pBlue >> shift) * 65535) / lim;
- }
- else if (pVisual->class == GrayScale)
- {
- /* rescale to gray then rgb bits */
- *pRed = (30L * *pRed + 59L * *pGreen + 11L * *pBlue) / 100;
- *pBlue = *pGreen = *pRed = ((*pRed >> shift) * 65535) / lim;
- }
- else if (pVisual->class == StaticGray)
- {
- unsigned int limg;
-
- limg = pVisual->ColormapEntries - 1;
- /* rescale to gray then [0..limg] then [0..65535] then rgb bits */
- *pRed = (30L * *pRed + 59L * *pGreen + 11L * *pBlue) / 100;
- *pRed = ((((*pRed * (limg + 1))) >> 16) * 65535) / limg;
- *pBlue = *pGreen = *pRed = ((*pRed >> shift) * 65535) / lim;
- }
- else
- {
- unsigned limr, limg, limb;
-
- limr = pVisual->redMask >> pVisual->offsetRed;
- limg = pVisual->greenMask >> pVisual->offsetGreen;
- limb = pVisual->blueMask >> pVisual->offsetBlue;
- /* rescale to [0..limN] then [0..65535] then rgb bits */
- *pRed = ((((((*pRed * (limr + 1)) >> 16) *
- 65535) / limr) >> shift) * 65535) / lim;
- *pGreen = ((((((*pGreen * (limg + 1)) >> 16) *
- 65535) / limg) >> shift) * 65535) / lim;
- *pBlue = ((((((*pBlue * (limb + 1)) >> 16) *
- 65535) / limb) >> shift) * 65535) / lim;
- }
-}
-
-Bool
-xnestCreateDefaultColormap(ScreenPtr pScreen)
-{
- VisualPtr pVisual;
- ColormapPtr pCmap;
- unsigned short zero = 0, ones = 0xFFFF;
- Pixel wp, bp;
-
- for (pVisual = pScreen->visuals;
- pVisual->vid != pScreen->rootVisual;
- pVisual++);
-
- if (CreateColormap(pScreen->defColormap, pScreen, pVisual, &pCmap,
- (pVisual->class & DynamicClass) ? AllocNone : AllocAll, 0)
- != Success)
- return False;
-
- wp = pScreen->whitePixel;
- bp = pScreen->blackPixel;
- if ((AllocColor(pCmap, &ones, &ones, &ones, &wp, 0) !=
- Success) ||
- (AllocColor(pCmap, &zero, &zero, &zero, &bp, 0) !=
- Success))
- return FALSE;
- pScreen->whitePixel = wp;
- pScreen->blackPixel = bp;
- (*pScreen->InstallColormap)(pCmap);
-
- xnestInstalledDefaultColormap = True;
-
- return True;
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/Color.h b/nx-X11/programs/Xserver/hw/xnest/Color.h
deleted file mode 100644
index 9ce72a946..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Color.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* $Xorg: Color.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifndef XNESTCOLOR_H
-#define XNESTCOLOR_H
-
-#define DUMB_WINDOW_MANAGERS
-
-#define MAXCMAPS 1
-#define MINCMAPS 1
-
-typedef struct {
- Colormap colormap;
-} xnestPrivColormap;
-
-typedef struct {
- int numCmapIDs;
- Colormap *cmapIDs;
- int numWindows;
- Window *windows;
- int index;
-} xnestInstalledColormapWindows;
-
-#define xnestColormapPriv(pCmap) \
- ((xnestPrivColormap *)((pCmap)->devPriv))
-
-#define xnestColormap(pCmap) (xnestColormapPriv(pCmap)->colormap)
-
-#define xnestPixel(pixel) (pixel)
-
-Bool xnestCreateColormap(ColormapPtr pCmap);
-void xnestDestroyColormap(ColormapPtr pCmap);
-void xnestSetInstalledColormapWindows(ScreenPtr pScreen);
-void xnestSetScreenSaverColormapWindow(ScreenPtr pScreen);
-void xnestDirectInstallColormaps(ScreenPtr pScreen);
-void xnestDirectUninstallColormaps(ScreenPtr pScreen);
-void xnestInstallColormap(ColormapPtr pCmap);
-void xnestUninstallColormap(ColormapPtr pCmap);
-int xnestListInstalledColormaps(ScreenPtr pScreen, Colormap *pCmapIDs);
-void xnestStoreColors(ColormapPtr pCmap, int nColors, xColorItem *pColors);
-void xnestResolveColor(unsigned short *pRed, unsigned short *pGreen,
- unsigned short *pBlue, VisualPtr pVisual);
-Bool xnestCreateDefaultColormap(ScreenPtr pScreen);
-
-#endif /* XNESTCOLOR_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/Cursor.c b/nx-X11/programs/Xserver/hw/xnest/Cursor.c
deleted file mode 100644
index f95860022..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Cursor.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* $Xorg: Cursor.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/Cursor.c,v 1.3 2002/11/23 19:27:50 tsi Exp $ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "screenint.h"
-#include "input.h"
-#include "misc.h"
-#include "cursor.h"
-#include "cursorstr.h"
-#include "scrnintstr.h"
-#include "servermd.h"
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "Screen.h"
-#include "XNCursor.h"
-#include "Visual.h"
-#include "Keyboard.h"
-#include "Args.h"
-
-Bool
-xnestRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
-{
- XImage *ximage;
- Pixmap source, mask;
- XColor fg_color, bg_color;
- unsigned long valuemask;
- XGCValues values;
-
- valuemask = GCFunction |
- GCPlaneMask |
- GCForeground |
- GCBackground |
- GCClipMask;
-
- values.function = GXcopy;
- values.plane_mask = AllPlanes;
- values.foreground = 1L;
- values.background = 0L;
- values.clip_mask = None;
-
- XChangeGC(xnestDisplay, xnestBitmapGC, valuemask, &values);
-
- source = XCreatePixmap(xnestDisplay,
- xnestDefaultWindows[pScreen->myNum],
- pCursor->bits->width,
- pCursor->bits->height,
- 1);
-
- mask = XCreatePixmap(xnestDisplay,
- xnestDefaultWindows[pScreen->myNum],
- pCursor->bits->width,
- pCursor->bits->height,
- 1);
-
- ximage = XCreateImage(xnestDisplay,
- xnestDefaultVisual(pScreen),
- 1, XYBitmap, 0,
- (char *)pCursor->bits->source,
- pCursor->bits->width,
- pCursor->bits->height,
- BitmapPad(xnestDisplay), 0);
-
- XPutImage(xnestDisplay, source, xnestBitmapGC, ximage,
- 0, 0, 0, 0, pCursor->bits->width, pCursor->bits->height);
-
- XFree(ximage);
-
- ximage = XCreateImage(xnestDisplay,
- xnestDefaultVisual(pScreen),
- 1, XYBitmap, 0,
- (char *)pCursor->bits->mask,
- pCursor->bits->width,
- pCursor->bits->height,
- BitmapPad(xnestDisplay), 0);
-
- XPutImage(xnestDisplay, mask, xnestBitmapGC, ximage,
- 0, 0, 0, 0, pCursor->bits->width, pCursor->bits->height);
-
- XFree(ximage);
-
- fg_color.red = pCursor->foreRed;
- fg_color.green = pCursor->foreGreen;
- fg_color.blue = pCursor->foreBlue;
-
- bg_color.red = pCursor->backRed;
- bg_color.green = pCursor->backGreen;
- bg_color.blue = pCursor->backBlue;
-
- pCursor->devPriv[pScreen->myNum] = (pointer)xalloc(sizeof(xnestPrivCursor));
- xnestCursorPriv(pCursor, pScreen)->cursor =
- XCreatePixmapCursor(xnestDisplay, source, mask, &fg_color, &bg_color,
- pCursor->bits->xhot, pCursor->bits->yhot);
-
- XFreePixmap(xnestDisplay, source);
- XFreePixmap(xnestDisplay, mask);
-
- return True;
-}
-
-Bool
-xnestUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
-{
- XFreeCursor(xnestDisplay, xnestCursor(pCursor, pScreen));
- xfree(xnestCursorPriv(pCursor, pScreen));
- return True;
-}
-
-void
-xnestRecolorCursor(ScreenPtr pScreen, CursorPtr pCursor, Bool displayed)
-{
- XColor fg_color, bg_color;
-
- fg_color.red = pCursor->foreRed;
- fg_color.green = pCursor->foreGreen;
- fg_color.blue = pCursor->foreBlue;
-
- bg_color.red = pCursor->backRed;
- bg_color.green = pCursor->backGreen;
- bg_color.blue = pCursor->backBlue;
-
- XRecolorCursor(xnestDisplay,
- xnestCursor(pCursor, pScreen),
- &fg_color, &bg_color);
-}
-
-void xnestSetCursor (ScreenPtr pScreen, CursorPtr pCursor, int x, int y)
-{
- if (pCursor)
- {
- XDefineCursor(xnestDisplay,
- xnestDefaultWindows[pScreen->myNum],
- xnestCursor(pCursor, pScreen));
- }
-}
-
-void
-xnestMoveCursor (ScreenPtr pScreen, int x, int y)
-{
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/Display.c b/nx-X11/programs/Xserver/hw/xnest/Display.c
deleted file mode 100644
index fa8457651..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Display.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/* $Xorg: Display.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/Display.c,v 3.4 2001/10/28 03:34:10 tsi Exp $ */
-
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "screenint.h"
-#include "input.h"
-#include "misc.h"
-#include "scrnintstr.h"
-#include "servermd.h"
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "Init.h"
-#include "Args.h"
-
-#include "icon"
-#include "screensaver"
-
-Display *xnestDisplay = NULL;
-XVisualInfo *xnestVisuals;
-int xnestNumVisuals;
-int xnestDefaultVisualIndex;
-Colormap *xnestDefaultColormaps;
-int xnestNumDefaultColormaps;
-int *xnestDepths;
-int xnestNumDepths;
-XPixmapFormatValues *xnestPixmapFormats;
-int xnestNumPixmapFormats;
-Pixel xnestBlackPixel;
-Pixel xnestWhitePixel;
-Drawable xnestDefaultDrawables[MAXDEPTH + 1];
-Pixmap xnestIconBitmap;
-Pixmap xnestScreenSaverPixmap;
-XlibGC xnestBitmapGC;
-unsigned long xnestEventMask;
-
-void
-xnestOpenDisplay(int argc, char *argv[])
-{
- XVisualInfo vi;
- long mask;
- int i, j;
-
- if (!xnestDoFullGeneration) return;
-
- xnestCloseDisplay();
-
- xnestDisplay = XOpenDisplay(xnestDisplayName);
- if (xnestDisplay == NULL)
- FatalError("Unable to open display \"%s\".\n",
- XDisplayName(xnestDisplayName));
-
- if (xnestSynchronize)
- XSynchronize(xnestDisplay, True);
-
- mask = VisualScreenMask;
- vi.screen = DefaultScreen(xnestDisplay);
- xnestVisuals = XGetVisualInfo(xnestDisplay, mask, &vi, &xnestNumVisuals);
- if (xnestNumVisuals == 0 || xnestVisuals == NULL)
- FatalError("Unable to find any visuals.\n");
-
- if (xnestUserDefaultClass || xnestUserDefaultDepth) {
- xnestDefaultVisualIndex = UNDEFINED;
- for (i = 0; i < xnestNumVisuals; i++)
- if ((!xnestUserDefaultClass ||
- xnestVisuals[i].class == xnestDefaultClass)
- &&
- (!xnestUserDefaultDepth ||
- xnestVisuals[i].depth == xnestDefaultDepth)) {
- xnestDefaultVisualIndex = i;
- break;
- }
- if (xnestDefaultVisualIndex == UNDEFINED)
- FatalError("Unable to find desired default visual.\n");
- }
- else {
- vi.visualid = XVisualIDFromVisual(DefaultVisual(xnestDisplay,
- DefaultScreen(xnestDisplay)));
- xnestDefaultVisualIndex = 0;
- for (i = 0; i < xnestNumVisuals; i++)
- if (vi.visualid == xnestVisuals[i].visualid)
- xnestDefaultVisualIndex = i;
- }
-
- xnestNumDefaultColormaps = xnestNumVisuals;
- xnestDefaultColormaps = (Colormap *)xalloc(xnestNumDefaultColormaps *
- sizeof(Colormap));
- for (i = 0; i < xnestNumDefaultColormaps; i++)
- xnestDefaultColormaps[i] = XCreateColormap(xnestDisplay,
- DefaultRootWindow(xnestDisplay),
- xnestVisuals[i].visual,
- AllocNone);
-
- xnestDepths = XListDepths(xnestDisplay, DefaultScreen(xnestDisplay),
- &xnestNumDepths);
-
- xnestPixmapFormats = XListPixmapFormats(xnestDisplay,
- &xnestNumPixmapFormats);
-
- xnestBlackPixel = BlackPixel(xnestDisplay, DefaultScreen(xnestDisplay));
- xnestWhitePixel = WhitePixel(xnestDisplay, DefaultScreen(xnestDisplay));
-
- if (xnestParentWindow != (Window) 0)
- xnestEventMask = StructureNotifyMask;
- else
- xnestEventMask = 0L;
-
- for (i = 0; i <= MAXDEPTH; i++)
- xnestDefaultDrawables[i] = None;
-
- for (i = 0; i < xnestNumPixmapFormats; i++)
- for (j = 0; j < xnestNumDepths; j++)
- if (xnestPixmapFormats[i].depth == 1 ||
- xnestPixmapFormats[i].depth == xnestDepths[j]) {
- xnestDefaultDrawables[xnestPixmapFormats[i].depth] =
- XCreatePixmap(xnestDisplay, DefaultRootWindow(xnestDisplay),
- 1, 1, xnestPixmapFormats[i].depth);
- }
-
- xnestBitmapGC = XCreateGC(xnestDisplay, xnestDefaultDrawables[1], 0L, NULL);
-
- if (!(xnestUserGeometry & XValue))
- xnestX = 0;
-
- if (!(xnestUserGeometry & YValue))
- xnestY = 0;
-
- if (xnestParentWindow == 0) {
- if (!(xnestUserGeometry & WidthValue))
- xnestWidth = 3 * DisplayWidth(xnestDisplay,
- DefaultScreen(xnestDisplay)) / 4;
-
- if (!(xnestUserGeometry & HeightValue))
- xnestHeight = 3 * DisplayHeight(xnestDisplay,
- DefaultScreen(xnestDisplay)) / 4;
- }
-
- if (!xnestUserBorderWidth)
- xnestBorderWidth = 1;
-
- xnestIconBitmap =
- XCreateBitmapFromData(xnestDisplay,
- DefaultRootWindow(xnestDisplay),
- (char *)icon_bits,
- icon_width,
- icon_height);
-
- xnestScreenSaverPixmap =
- XCreatePixmapFromBitmapData(xnestDisplay,
- DefaultRootWindow(xnestDisplay),
- (char *)screensaver_bits,
- screensaver_width,
- screensaver_height,
- xnestWhitePixel,
- xnestBlackPixel,
- DefaultDepth(xnestDisplay,
- DefaultScreen(xnestDisplay)));
-}
-
-void
-xnestCloseDisplay()
-{
- if (!xnestDoFullGeneration || !xnestDisplay) return;
-
- /*
- If xnestDoFullGeneration all x resources will be destroyed upon closing
- the display connection. There is no need to generate extra protocol.
- */
-
- xfree(xnestDefaultColormaps);
- XFree(xnestVisuals);
- XFree(xnestDepths);
- XFree(xnestPixmapFormats);
- XCloseDisplay(xnestDisplay);
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/Display.h b/nx-X11/programs/Xserver/hw/xnest/Display.h
deleted file mode 100644
index 85aedc583..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Display.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* $Xorg: Display.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/Display.h,v 1.6 2001/01/17 22:36:55 dawes Exp $ */
-
-#ifndef XNESTCOMMON_H
-#define XNESTCOMMON_H
-
-#define UNDEFINED -1
-
-#define MAXDEPTH 32
-#define MAXVISUALSPERDEPTH 256
-
-extern Display *xnestDisplay;
-extern XVisualInfo *xnestVisuals;
-extern int xnestNumVisuals;
-extern int xnestDefaultVisualIndex;
-extern Colormap *xnestDefaultColormaps;
-extern int xnestNumDefaultClormaps;
-extern int *xnestDepths;
-extern int xnestNumDepths;
-extern XPixmapFormatValues *xnestPixmapFormats;
-extern int xnestNumPixmapFormats;
-extern Pixel xnestBlackPixel;
-extern Pixel xnestWhitePixel;
-extern Drawable xnestDefaultDrawables[MAXDEPTH + 1];
-extern Pixmap xnestIconBitmap;
-extern Pixmap xnestScreenSaverPixmap;
-extern XlibGC xnestBitmapGC;
-extern unsigned long xnestEventMask;
-
-void xnestOpenDisplay(int argc, char *argv[]);
-void xnestCloseDisplay(void);
-
-#endif /* XNESTCOMMON_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/Drawable.h b/nx-X11/programs/Xserver/hw/xnest/Drawable.h
deleted file mode 100644
index 7b96bdfee..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Drawable.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* $Xorg: Drawable.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifndef XNESTDRAWABLE_H
-#define XNESTDRAWABLE_H
-
-#include "XNWindow.h"
-#include "XNPixmap.h"
-
-#define xnestDrawable(pDrawable) \
- ((pDrawable)->type == DRAWABLE_WINDOW ? \
- xnestWindow((WindowPtr)pDrawable) : \
- xnestPixmap((PixmapPtr)pDrawable))
-
-#endif /* XNESTDRAWABLE_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/Events.c b/nx-X11/programs/Xserver/hw/xnest/Events.c
deleted file mode 100644
index 3d520279c..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Events.c
+++ /dev/null
@@ -1,226 +0,0 @@
-/* $Xorg: Events.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/Events.c,v 1.2 2001/08/01 00:44:57 tsi Exp $ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#define NEED_EVENTS
-#include <X11/Xproto.h>
-#include "screenint.h"
-#include "input.h"
-#include "misc.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "servermd.h"
-
-#include "mi.h"
-
-#include "Xnest.h"
-
-#include "Args.h"
-#include "Color.h"
-#include "Display.h"
-#include "Screen.h"
-#include "XNWindow.h"
-#include "Events.h"
-#include "Keyboard.h"
-#include "mipointer.h"
-
-CARD32 lastEventTime = 0;
-
-void
-ProcessInputEvents()
-{
- mieqProcessInputEvents();
- miPointerUpdate();
-}
-
-int
-TimeSinceLastInputEvent()
-{
- if (lastEventTime == 0)
- lastEventTime = GetTimeInMillis();
- return GetTimeInMillis() - lastEventTime;
-}
-
-void
-SetTimeSinceLastInputEvent()
-{
- lastEventTime = GetTimeInMillis();
-}
-
-static Bool
-xnestExposurePredicate(Display *display, XEvent *event, char *args)
-{
- return (event->type == Expose || event->type == ProcessedExpose);
-}
-
-static Bool
-xnestNotExposurePredicate(Display *display, XEvent *event, char *args)
-{
- return !xnestExposurePredicate(display, event, args);
-}
-
-void
-xnestCollectExposures()
-{
- XEvent X;
- WindowPtr pWin;
- RegionRec Rgn;
- BoxRec Box;
-
- while (XCheckIfEvent(xnestDisplay, &X, xnestExposurePredicate, NULL)) {
- pWin = xnestWindowPtr(X.xexpose.window);
-
- if (pWin) {
- Box.x1 = pWin->drawable.x + wBorderWidth(pWin) + X.xexpose.x;
- Box.y1 = pWin->drawable.y + wBorderWidth(pWin) + X.xexpose.y;
- Box.x2 = Box.x1 + X.xexpose.width;
- Box.y2 = Box.y1 + X.xexpose.height;
-
- REGION_INIT(pWin->drawable.pScreen, &Rgn, &Box, 1);
-
- miWindowExposures(pWin, &Rgn, NullRegion);
- }
- }
-}
-
-void
-xnestQueueKeyEvent(int type, unsigned int keycode)
-{
- xEvent x;
- x.u.u.type = type;
- x.u.u.detail = keycode;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
- mieqEnqueue(&x);
-}
-
-void
-xnestCollectEvents()
-{
- XEvent X;
- xEvent x;
- ScreenPtr pScreen;
-
- while (XCheckIfEvent(xnestDisplay, &X, xnestNotExposurePredicate, NULL)) {
- switch (X.type) {
- case KeyPress:
- xnestUpdateModifierState(X.xkey.state);
- xnestQueueKeyEvent(KeyPress, X.xkey.keycode);
- break;
-
- case KeyRelease:
- xnestUpdateModifierState(X.xkey.state);
- xnestQueueKeyEvent(KeyRelease, X.xkey.keycode);
- break;
-
- case ButtonPress:
- xnestUpdateModifierState(X.xkey.state);
- x.u.u.type = ButtonPress;
- x.u.u.detail = X.xbutton.button;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
- mieqEnqueue(&x);
- break;
-
- case ButtonRelease:
- xnestUpdateModifierState(X.xkey.state);
- x.u.u.type = ButtonRelease;
- x.u.u.detail = X.xbutton.button;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
- mieqEnqueue(&x);
- break;
-
- case MotionNotify:
-#if 0
- x.u.u.type = MotionNotify;
- x.u.keyButtonPointer.rootX = X.xmotion.x;
- x.u.keyButtonPointer.rootY = X.xmotion.y;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
- mieqEnqueue(&x);
-#endif
- miPointerAbsoluteCursor (X.xmotion.x, X.xmotion.y,
- lastEventTime = GetTimeInMillis());
- break;
-
- case FocusIn:
- if (X.xfocus.detail != NotifyInferior) {
- pScreen = xnestScreen(X.xfocus.window);
- if (pScreen)
- xnestDirectInstallColormaps(pScreen);
- }
- break;
-
- case FocusOut:
- if (X.xfocus.detail != NotifyInferior) {
- pScreen = xnestScreen(X.xfocus.window);
- if (pScreen)
- xnestDirectUninstallColormaps(pScreen);
- }
- break;
-
- case KeymapNotify:
- break;
-
- case EnterNotify:
- if (X.xcrossing.detail != NotifyInferior) {
- pScreen = xnestScreen(X.xcrossing.window);
- if (pScreen) {
- NewCurrentScreen(pScreen, X.xcrossing.x, X.xcrossing.y);
-#if 0
- x.u.u.type = MotionNotify;
- x.u.keyButtonPointer.rootX = X.xcrossing.x;
- x.u.keyButtonPointer.rootY = X.xcrossing.y;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
- mieqEnqueue(&x);
-#endif
- miPointerAbsoluteCursor (X.xcrossing.x, X.xcrossing.y,
- lastEventTime = GetTimeInMillis());
- xnestDirectInstallColormaps(pScreen);
- }
- }
- break;
-
- case LeaveNotify:
- if (X.xcrossing.detail != NotifyInferior) {
- pScreen = xnestScreen(X.xcrossing.window);
- if (pScreen) {
- xnestDirectUninstallColormaps(pScreen);
- }
- }
- break;
-
- case DestroyNotify:
- if (xnestParentWindow != (Window) 0 &&
- X.xdestroywindow.window == xnestParentWindow)
- exit (0);
- break;
-
- case CirculateNotify:
- case ConfigureNotify:
- case GravityNotify:
- case MapNotify:
- case ReparentNotify:
- case UnmapNotify:
- break;
-
- default:
- ErrorF("xnest warning: unhandled event\n");
- break;
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/Events.h b/nx-X11/programs/Xserver/hw/xnest/Events.h
deleted file mode 100644
index c61b26c0d..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Events.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* $Xorg: Events.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifndef XNESTEVENTS_H
-#define XNESTEVENTS_H
-
-#include <X11/Xmd.h>
-
-#define ProcessedExpose (LASTEvent + 1)
-
-extern CARD32 lastEventTime;
-
-void SetTimeSinceLastInputEvent(void);
-void xnestCollectExposures(void);
-void xnestCollectEvents(void);
-void xnestQueueKeyEvent(int type, unsigned int keycode);
-
-#endif /* XNESTEVENTS_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/Font.c b/nx-X11/programs/Xserver/hw/xnest/Font.c
deleted file mode 100644
index d86816e8f..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Font.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* $Xorg: Font.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/Font.c,v 3.6 2003/07/16 01:38:51 dawes Exp $ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xatom.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "regionstr.h"
-#include <X11/fonts/font.h>
-#include <X11/fonts/fontstruct.h>
-#include "scrnintstr.h"
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "XNFont.h"
-
-int xnestFontPrivateIndex;
-
-Bool
-xnestRealizeFont(ScreenPtr pScreen, FontPtr pFont)
-{
- pointer priv;
- Atom name_atom, value_atom;
- int nprops;
- FontPropPtr props;
- int i;
- char *name;
-
- FontSetPrivate(pFont, xnestFontPrivateIndex, NULL);
-
- if (requestingClient && XpClientIsPrintClient(requestingClient, NULL))
- return True;
-
- name_atom = MakeAtom("FONT", 4, True);
- value_atom = 0L;
-
- nprops = pFont->info.nprops;
- props = pFont->info.props;
-
- for (i = 0; i < nprops; i++)
- if (props[i].name == name_atom) {
- value_atom = props[i].value;
- break;
- }
-
- if (!value_atom) return False;
-
- name = (char *)NameForAtom(value_atom);
-
- if (!name) return False;
-
- priv = (pointer)xalloc(sizeof(xnestPrivFont));
- FontSetPrivate(pFont, xnestFontPrivateIndex, priv);
-
- xnestFontPriv(pFont)->font_struct = XLoadQueryFont(xnestDisplay, name);
-
- if (!xnestFontStruct(pFont)) return False;
-
- return True;
-}
-
-
-Bool
-xnestUnrealizeFont(ScreenPtr pScreen, FontPtr pFont)
-{
- if (xnestFontPriv(pFont)) {
- if (xnestFontStruct(pFont))
- XFreeFont(xnestDisplay, xnestFontStruct(pFont));
- xfree(xnestFontPriv(pFont));
- FontSetPrivate(pFont, xnestFontPrivateIndex, NULL);
- }
- return True;
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/GC.c b/nx-X11/programs/Xserver/hw/xnest/GC.c
deleted file mode 100644
index e46b48f11..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/GC.c
+++ /dev/null
@@ -1,340 +0,0 @@
-/* $Xorg: GC.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/GC.c,v 3.6 2001/10/28 03:34:11 tsi Exp $ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "mistruct.h"
-#include "region.h"
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "XNGC.h"
-#include "GCOps.h"
-#include "Drawable.h"
-#include "XNFont.h"
-#include "Color.h"
-
-int xnestGCPrivateIndex;
-
-static GCFuncs xnestFuncs = {
- xnestValidateGC,
- xnestChangeGC,
- xnestCopyGC,
- xnestDestroyGC,
- xnestChangeClip,
- xnestDestroyClip,
- xnestCopyClip,
-};
-
-static GCOps xnestOps = {
- xnestFillSpans,
- xnestSetSpans,
- xnestPutImage,
- xnestCopyArea,
- xnestCopyPlane,
- xnestPolyPoint,
- xnestPolylines,
- xnestPolySegment,
- xnestPolyRectangle,
- xnestPolyArc,
- xnestFillPolygon,
- xnestPolyFillRect,
- xnestPolyFillArc,
- xnestPolyText8,
- xnestPolyText16,
- xnestImageText8,
- xnestImageText16,
- xnestImageGlyphBlt,
- xnestPolyGlyphBlt,
- xnestPushPixels
-};
-
-Bool
-xnestCreateGC(GCPtr pGC)
-{
- pGC->clientClipType = CT_NONE;
- pGC->clientClip = NULL;
-
- pGC->funcs = &xnestFuncs;
- pGC->ops = &xnestOps;
-
- pGC->miTranslate = 1;
-
- xnestGCPriv(pGC)->gc = XCreateGC(xnestDisplay,
- xnestDefaultDrawables[pGC->depth],
- 0L, NULL);
- xnestGCPriv(pGC)->nClipRects = 0;
-
- return True;
-}
-
-void
-xnestValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable)
-{
- pGC->lastWinOrg.x = pDrawable->x;
- pGC->lastWinOrg.y = pDrawable->y;
-}
-
-void
-xnestChangeGC(GCPtr pGC, unsigned long mask)
-{
- XGCValues values;
-
- if (mask & GCFunction)
- values.function = pGC->alu;
-
- if (mask & GCPlaneMask)
- values.plane_mask = pGC->planemask;
-
- if (mask & GCForeground)
- values.foreground = xnestPixel(pGC->fgPixel);
-
- if (mask & GCBackground)
- values.background = xnestPixel(pGC->bgPixel);
-
- if (mask & GCLineWidth)
- values.line_width = pGC->lineWidth;
-
- if (mask & GCLineStyle)
- values.line_style = pGC->lineStyle;
-
- if (mask & GCCapStyle)
- values.cap_style = pGC->capStyle;
-
- if (mask & GCJoinStyle)
- values.join_style = pGC->joinStyle;
-
- if (mask & GCFillStyle)
- values.fill_style = pGC->fillStyle;
-
- if (mask & GCFillRule)
- values.fill_rule = pGC->fillRule;
-
- if (mask & GCTile) {
- if (pGC->tileIsPixel)
- mask &= ~GCTile;
- else
- values.tile = xnestPixmap(pGC->tile.pixmap);
- }
-
- if (mask & GCStipple)
- values.stipple = xnestPixmap(pGC->stipple);
-
- if (mask & GCTileStipXOrigin)
- values.ts_x_origin = pGC->patOrg.x;
-
- if (mask & GCTileStipYOrigin)
- values.ts_y_origin = pGC->patOrg.y;
-
- if (mask & GCFont)
- values.font = xnestFont(pGC->font);
-
- if (mask & GCSubwindowMode)
- values.subwindow_mode = pGC->subWindowMode;
-
- if (mask & GCGraphicsExposures)
- values.graphics_exposures = pGC->graphicsExposures;
-
- if (mask & GCClipXOrigin)
- values.clip_x_origin = pGC->clipOrg.x;
-
- if (mask & GCClipYOrigin)
- values.clip_y_origin = pGC->clipOrg.y;
-
- if (mask & GCClipMask) /* this is handled in change clip */
- mask &= ~GCClipMask;
-
- if (mask & GCDashOffset)
- values.dash_offset = pGC->dashOffset;
-
- if (mask & GCDashList) {
- mask &= ~GCDashList;
- XSetDashes(xnestDisplay, xnestGC(pGC),
- pGC->dashOffset, (char *)pGC->dash, pGC->numInDashList);
- }
-
- if (mask & GCArcMode)
- values.arc_mode = pGC->arcMode;
-
- if (mask)
- XChangeGC(xnestDisplay, xnestGC(pGC), mask, &values);
-}
-
-void
-xnestCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst)
-{
- XCopyGC(xnestDisplay, xnestGC(pGCSrc), mask, xnestGC(pGCDst));
-}
-
-void
-xnestDestroyGC(GCPtr pGC)
-{
- XFreeGC(xnestDisplay, xnestGC(pGC));
-}
-
-void
-xnestChangeClip(GCPtr pGC, int type, pointer pValue, int nRects)
-{
- int i, size;
- BoxPtr pBox;
- XRectangle *pRects;
-
- xnestDestroyClipHelper(pGC);
-
- switch(type)
- {
- case CT_NONE:
- XSetClipMask(xnestDisplay, xnestGC(pGC), None);
- break;
-
- case CT_REGION:
- nRects = REGION_NUM_RECTS((RegionPtr)pValue);
- size = nRects * sizeof(*pRects);
- pRects = (XRectangle *) xalloc(size);
- pBox = REGION_RECTS((RegionPtr)pValue);
- for (i = nRects; i-- > 0; ) {
- pRects[i].x = pBox[i].x1;
- pRects[i].y = pBox[i].y1;
- pRects[i].width = pBox[i].x2 - pBox[i].x1;
- pRects[i].height = pBox[i].y2 - pBox[i].y1;
- }
- XSetClipRectangles(xnestDisplay, xnestGC(pGC), 0, 0,
- pRects, nRects, Unsorted);
- xfree((char *) pRects);
- break;
-
- case CT_PIXMAP:
- XSetClipMask(xnestDisplay, xnestGC(pGC),
- xnestPixmap((PixmapPtr)pValue));
- /*
- * Need to change into region, so subsequent uses are with
- * current pixmap contents.
- */
- pGC->clientClip = (pointer) (*pGC->pScreen->BitmapToRegion)((PixmapPtr)pValue);
- (*pGC->pScreen->DestroyPixmap)((PixmapPtr)pValue);
- pValue = pGC->clientClip;
- type = CT_REGION;
- break;
-
- case CT_UNSORTED:
- XSetClipRectangles(xnestDisplay, xnestGC(pGC),
- pGC->clipOrg.x, pGC->clipOrg.y,
- (XRectangle *)pValue, nRects, Unsorted);
- break;
-
- case CT_YSORTED:
- XSetClipRectangles(xnestDisplay, xnestGC(pGC),
- pGC->clipOrg.x, pGC->clipOrg.y,
- (XRectangle *)pValue, nRects, YSorted);
- break;
-
- case CT_YXSORTED:
- XSetClipRectangles(xnestDisplay, xnestGC(pGC),
- pGC->clipOrg.x, pGC->clipOrg.y,
- (XRectangle *)pValue, nRects, YXSorted);
- break;
-
- case CT_YXBANDED:
- XSetClipRectangles(xnestDisplay, xnestGC(pGC),
- pGC->clipOrg.x, pGC->clipOrg.y,
- (XRectangle *)pValue, nRects, YXBanded);
- break;
- }
-
- switch(type)
- {
- default:
- break;
-
- case CT_UNSORTED:
- case CT_YSORTED:
- case CT_YXSORTED:
- case CT_YXBANDED:
-
- /*
- * other parts of server can only deal with CT_NONE,
- * CT_PIXMAP and CT_REGION client clips.
- */
- pGC->clientClip = (pointer) RECTS_TO_REGION(pGC->pScreen, nRects,
- (xRectangle *)pValue, type);
- xfree(pValue);
- pValue = pGC->clientClip;
- type = CT_REGION;
-
- break;
- }
-
- pGC->clientClipType = type;
- pGC->clientClip = pValue;
- xnestGCPriv(pGC)->nClipRects = nRects;
-}
-
-void
-xnestDestroyClip(GCPtr pGC)
-{
- xnestDestroyClipHelper(pGC);
-
- XSetClipMask(xnestDisplay, xnestGC(pGC), None);
-
- pGC->clientClipType = CT_NONE;
- pGC->clientClip = NULL;
- xnestGCPriv(pGC)->nClipRects = 0;
-}
-
-void
-xnestDestroyClipHelper(GCPtr pGC)
-{
- switch (pGC->clientClipType)
- {
- default:
- case CT_NONE:
- break;
-
- case CT_REGION:
- REGION_DESTROY(pGC->pScreen, pGC->clientClip);
- break;
- }
-}
-
-void
-xnestCopyClip(GCPtr pGCDst, GCPtr pGCSrc)
-{
- RegionPtr pRgn;
-
- switch (pGCSrc->clientClipType)
- {
- default:
- case CT_NONE:
- xnestDestroyClip(pGCDst);
- break;
-
- case CT_REGION:
- pRgn = REGION_CREATE(pGCDst->pScreen, NULL, 1);
- REGION_COPY(pGCDst->pScreen, pRgn, pGCSrc->clientClip);
- xnestChangeClip(pGCDst, CT_REGION, pRgn, 0);
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/GCOps.c b/nx-X11/programs/Xserver/hw/xnest/GCOps.c
deleted file mode 100644
index 233424823..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/GCOps.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/* $Xorg: GCOps.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/GCOps.c,v 3.5 2003/07/16 01:38:51 dawes Exp $ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "regionstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "gcstruct.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "region.h"
-#include "servermd.h"
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "Screen.h"
-#include "XNGC.h"
-#include "XNFont.h"
-#include "GCOps.h"
-#include "Drawable.h"
-#include "Visual.h"
-
-void
-xnestFillSpans(DrawablePtr pDrawable, GCPtr pGC, int nSpans, xPoint *pPoints,
- int *pWidths, int fSorted)
-{
- ErrorF("xnest warning: function xnestFillSpans not implemented\n");
-}
-
-void
-xnestSetSpans(DrawablePtr pDrawable, GCPtr pGC, char *pSrc,
- xPoint *pPoints, int *pWidths, int nSpans, int fSorted)
-{
- ErrorF("xnest warning: function xnestSetSpans not implemented\n");
-}
-
-void
-xnestGetSpans(DrawablePtr pDrawable, int maxWidth, DDXPointPtr pPoints,
- int *pWidths, int nSpans, char *pBuffer)
-{
- ErrorF("xnest warning: function xnestGetSpans not implemented\n");
-}
-
-void
-xnestQueryBestSize(int class, unsigned short *pWidth, unsigned short *pHeight,
- ScreenPtr pScreen)
-{
- unsigned int width, height;
-
- width = *pWidth;
- height = *pHeight;
-
- XQueryBestSize(xnestDisplay, class,
- xnestDefaultWindows[pScreen->myNum],
- width, height, &width, &height);
-
- *pWidth = width;
- *pHeight = height;
-}
-
-void
-xnestPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
- int w, int h, int leftPad, int format, char *pImage)
-{
- XImage *ximage;
-
- ximage = XCreateImage(xnestDisplay, xnestDefaultVisual(pDrawable->pScreen),
- depth, format, leftPad, (char *)pImage,
- w, h, BitmapPad(xnestDisplay),
- (format == ZPixmap) ?
- PixmapBytePad(w, depth) : BitmapBytePad(w+leftPad));
-
- if (ximage) {
- XPutImage(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- ximage, 0, 0, x, y, w, h);
- XFree(ximage);
- }
-}
-
-void
-xnestGetImage(DrawablePtr pDrawable, int x, int y, int w, int h,
- unsigned int format, unsigned long planeMask,
- char *pImage)
-{
- XImage *ximage;
- int length;
-
- ximage = XGetImage(xnestDisplay, xnestDrawable(pDrawable),
- x, y, w, h, planeMask, format);
-
- if (ximage) {
- length = ximage->bytes_per_line * ximage->height;
-
- memmove(pImage, ximage->data, length);
-
- XDestroyImage(ximage);
- }
-}
-
-static Bool
-xnestBitBlitPredicate(Display *display, XEvent *event, char *args)
-{
- return (event->type == GraphicsExpose || event->type == NoExpose);
-}
-
-static RegionPtr
-xnestBitBlitHelper(GCPtr pGC)
-{
- if (!pGC->graphicsExposures)
- return NullRegion;
- else {
- XEvent event;
- RegionPtr pReg, pTmpReg;
- BoxRec Box;
- Bool pending, overlap;
-
- pReg = REGION_CREATE(pGC->pScreen, NULL, 1);
- pTmpReg = REGION_CREATE(pGC->pScreen, NULL, 1);
- if(!pReg || !pTmpReg) return NullRegion;
-
- pending = True;
- while (pending) {
- XIfEvent(xnestDisplay, &event, xnestBitBlitPredicate, NULL);
-
- switch (event.type) {
- case NoExpose:
- pending = False;
- break;
-
- case GraphicsExpose:
- Box.x1 = event.xgraphicsexpose.x;
- Box.y1 = event.xgraphicsexpose.y;
- Box.x2 = event.xgraphicsexpose.x + event.xgraphicsexpose.width;
- Box.y2 = event.xgraphicsexpose.y + event.xgraphicsexpose.height;
- REGION_RESET(pGC->pScreen, pTmpReg, &Box);
- REGION_APPEND(pGC->pScreen, pReg, pTmpReg);
- pending = event.xgraphicsexpose.count;
- break;
- }
- }
-
- REGION_DESTROY(pGC->pScreen, pTmpReg);
- REGION_VALIDATE(pGC->pScreen, pReg, &overlap);
- return(pReg);
- }
-}
-
-RegionPtr
-xnestCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable,
- GCPtr pGC, int srcx, int srcy, int width, int height,
- int dstx, int dsty)
-{
- XCopyArea(xnestDisplay,
- xnestDrawable(pSrcDrawable), xnestDrawable(pDstDrawable),
- xnestGC(pGC), srcx, srcy, width, height, dstx, dsty);
-
- return xnestBitBlitHelper(pGC);
-}
-
-RegionPtr
-xnestCopyPlane(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable,
- GCPtr pGC, int srcx, int srcy, int width, int height,
- int dstx, int dsty, unsigned long plane)
-{
- XCopyPlane(xnestDisplay,
- xnestDrawable(pSrcDrawable), xnestDrawable(pDstDrawable),
- xnestGC(pGC), srcx, srcy, width, height, dstx, dsty, plane);
-
- return xnestBitBlitHelper(pGC);
-}
-
-void
-xnestPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int nPoints,
- DDXPointPtr pPoints)
-{
- XDrawPoints(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- (XPoint *)pPoints, nPoints, mode);
-}
-
-void
-xnestPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, int nPoints,
- DDXPointPtr pPoints)
-{
- XDrawLines(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- (XPoint *)pPoints, nPoints, mode);
-}
-
-void
-xnestPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nSegments,
- xSegment *pSegments)
-{
- XDrawSegments(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- (XSegment *)pSegments, nSegments);
-}
-
-void
-xnestPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, int nRectangles,
- xRectangle *pRectangles)
-{
- XDrawRectangles(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- (XRectangle *)pRectangles, nRectangles);
-}
-
-void
-xnestPolyArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs, xArc *pArcs)
-{
- XDrawArcs(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- (XArc *)pArcs, nArcs);
-}
-
-void
-xnestFillPolygon(DrawablePtr pDrawable, GCPtr pGC, int shape, int mode,
- int nPoints, DDXPointPtr pPoints)
-{
- XFillPolygon(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- (XPoint *)pPoints, nPoints, shape, mode);
-}
-
-void
-xnestPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nRectangles,
- xRectangle *pRectangles)
-{
- XFillRectangles(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- (XRectangle *)pRectangles, nRectangles);
-}
-
-void
-xnestPolyFillArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs, xArc *pArcs)
-{
- XFillArcs(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- (XArc *)pArcs, nArcs);
-}
-
-int
-xnestPolyText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count,
- char *string)
-{
- int width;
-
- XDrawString(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- x, y, string, count);
-
- width = XTextWidth(xnestFontStruct(pGC->font), string, count);
-
- return width + x;
-}
-
-int
-xnestPolyText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count,
- unsigned short *string)
-{
- int width;
-
- XDrawString16(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- x, y, (XChar2b *)string, count);
-
- width = XTextWidth16(xnestFontStruct(pGC->font), (XChar2b *)string, count);
-
- return width + x;
-}
-
-void
-xnestImageText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count,
- char *string)
-{
- XDrawImageString(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- x, y, string, count);
-}
-
-void
-xnestImageText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count,
- unsigned short *string)
-{
- XDrawImageString16(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC),
- x, y, (XChar2b *)string, count);
-}
-
-void
-xnestImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
- unsigned int nGlyphs, CharInfoPtr *pCharInfo,
- pointer pGlyphBase)
-{
- ErrorF("xnest warning: function xnestImageGlyphBlt not implemented\n");
-}
-
-void
-xnestPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
- unsigned int nGlyphs, CharInfoPtr *pCharInfo,
- pointer pGlyphBase)
-{
- ErrorF("xnest warning: function xnestPolyGlyphBlt not implemented\n");
-}
-
-void
-xnestPushPixels(GCPtr pGC, PixmapPtr pBitmap, DrawablePtr pDst,
- int width, int height, int x, int y)
-{
- /* only works for solid bitmaps */
- if (pGC->fillStyle == FillSolid)
- {
- XSetStipple (xnestDisplay, xnestGC(pGC), xnestPixmap(pBitmap));
- XSetTSOrigin (xnestDisplay, xnestGC(pGC), x, y);
- XSetFillStyle (xnestDisplay, xnestGC(pGC), FillStippled);
- XFillRectangle (xnestDisplay, xnestDrawable(pDst),
- xnestGC(pGC), x, y, width, height);
- XSetFillStyle (xnestDisplay, xnestGC(pGC), FillSolid);
- }
- else
- ErrorF("xnest warning: function xnestPushPixels not implemented\n");
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/GCOps.h b/nx-X11/programs/Xserver/hw/xnest/GCOps.h
deleted file mode 100644
index ccdc40ebe..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/GCOps.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* $Xorg: GCOps.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifndef XNESTGCOPS_H
-#define XNESTGCOPS_H
-
-void xnestFillSpans(DrawablePtr pDrawable, GCPtr pGC, int nSpans,
- xPoint *pPoints, int *pWidths, int fSorted);
-void xnestSetSpans(DrawablePtr pDrawable, GCPtr pGC, char *pSrc,
- xPoint *pPoints, int *pWidths, int nSpans, int fSorted);
-void xnestGetSpans(DrawablePtr pDrawable, int maxWidth, DDXPointPtr pPoints,
- int *pWidths, int nSpans, char *pBuffer);
-void xnestQueryBestSize(int class, unsigned short *pWidth,
- unsigned short *pHeight, ScreenPtr pScreen);
-void xnestPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
- int w, int h, int leftPad, int format, char *pImage);
-void xnestGetImage(DrawablePtr pDrawable, int x, int y, int w, int h,
- unsigned int format, unsigned long planeMask,
- char *pImage);
-RegionPtr xnestCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable,
- GCPtr pGC, int srcx, int srcy, int width, int height,
- int dstx, int dsty);
-RegionPtr xnestCopyPlane(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable,
- GCPtr pGC, int srcx, int srcy, int width, int height,
- int dstx, int dsty, unsigned long plane);
-void xnestPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int nPoints,
- DDXPointPtr pPoints);
-void xnestPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, int nPoints,
- DDXPointPtr pPoints);
-void xnestPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nSegments,
- xSegment *pSegments);
-void xnestPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, int nRectangles,
- xRectangle *pRectangles);
-void xnestPolyArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs, xArc *pArcs);
-void xnestFillPolygon(DrawablePtr pDrawable, GCPtr pGC, int shape, int mode,
- int nPoints, DDXPointPtr pPoints);
-void xnestPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nRectangles,
- xRectangle *pRectangles);
-void xnestPolyFillArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs, xArc *pArcs);
-int xnestPolyText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count,
- char *string);
-int xnestPolyText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count,
- unsigned short *string);
-void xnestImageText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count,
- char *string);
-void xnestImageText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int count,
- unsigned short *string);
-void xnestImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
- unsigned int nGlyphs, CharInfoPtr *pCharInfo,
- pointer pGlyphBase);
-void xnestPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
- unsigned int nGlyphs, CharInfoPtr *pCharInfo,
- pointer pGlyphBase);
-void xnestPushPixels(GCPtr pGC, PixmapPtr pBitmap, DrawablePtr pDrawable,
- int width, int height, int x, int y);
-
-#endif /* XNESTGCOPS_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/GetTime.c b/nx-X11/programs/Xserver/hw/xnest/GetTime.c
deleted file mode 100644
index bdcc6beae..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/GetTime.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* $Xorg: GetTime.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright (c) 1993 X Consortium
-
-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 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 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 X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-*/
-/* $XFree86$ */
-
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/Xos.h>
-#include "os.h"
-#include <time.h>
-
-#ifdef DDXTIME
-CARD32
-GetTimeInMillis()
-{
- struct timeval tp;
-
- X_GETTIMEOFDAY(&tp);
- return(tp.tv_sec * 1000) + (tp.tv_usec / 1000);
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xnest/Handlers.c b/nx-X11/programs/Xserver/hw/xnest/Handlers.c
deleted file mode 100644
index 9915502c4..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Handlers.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $Xorg: Handlers.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/Handlers.c,v 1.2 2001/08/01 00:44:57 tsi Exp $ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "screenint.h"
-#include "input.h"
-#include "misc.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "servermd.h"
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "Events.h"
-#include "Handlers.h"
-
-void
-xnestBlockHandler(pointer blockData, OSTimePtr pTimeout, pointer pReadMask)
-{
- xnestCollectExposures();
- XFlush(xnestDisplay);
-}
-
-void
-xnestWakeupHandler(pointer blockData, int result, pointer pReadMask)
-{
- xnestCollectEvents();
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/Handlers.h b/nx-X11/programs/Xserver/hw/xnest/Handlers.h
deleted file mode 100644
index 9a1e809cc..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Handlers.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* $Xorg: Handlers.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifndef XNESTHANDLERS_H
-#define XNESTHANDLERS_H
-
-void xnestBlockHandler(pointer blockData, OSTimePtr pTimeout,
- pointer pReadMask);
-void xnestWakeupHandler(pointer blockData, int result, pointer pReadMask);
-
-#endif /* XNESTHANDLERS_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/Imakefile b/nx-X11/programs/Xserver/hw/xnest/Imakefile
deleted file mode 100644
index 95ebd8d79..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Imakefile
+++ /dev/null
@@ -1,90 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:53:28 cpqbld Exp $
-
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/hw/xnest/Imakefile,v 3.28 2003/10/02 13:30:08 eich Exp $
-
-#include <Server.tmpl>
-
-#if BuildDPMS
-DPMSSRC = dpmsstubs.c
-DPMSOBJS = dpmsstubs.o
-#endif
-
-#ifdef OS2Architecture
-SRCS1 = os2Stub.c
-OBJS1 = os2Stub.o
-#endif
-
-SRCS = Args.c \
- Color.c \
- Cursor.c \
- Display.c \
- Events.c \
- Font.c \
- GC.c \
- GCOps.c \
- GetTime.c \
- Handlers.c \
- Init.c \
- Keyboard.c \
- Pixmap.c \
- Pointer.c \
- Screen.c \
- TestExt.c \
- Visual.c \
- Window.c \
- stubs.c \
- miinitext.c $(SRCS1)
-
-OBJS = Args.o \
- Color.o \
- Cursor.o \
- Display.o \
- Events.o \
- Font.o \
- GC.o \
- GCOps.o \
- GetTime.o \
- Handlers.o \
- Init.o \
- Keyboard.o \
- Pixmap.o \
- Pointer.o \
- Screen.o \
- TestExt.o \
- Visual.o \
- Window.o \
- stubs.o \
- miinitext.o $(OBJS1)
-
-
-INCLUDES = -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \
- -I../../mi -I../../include -I../../os \
- -I$(EXTINCSRC) -I$(XINCLUDESRC) -I$(LIBSRC) -I$(SERVERSRC)/Xext
-
-DEFINES = $(OS_DEFINES) $(EXT_DEFINES) -DNO_HW_ONLY_EXTS \
- -UXFree86LOADER -UMITSHM $(XKBDEFRULESDEFS)
-
-XKB_DEFINES = -DXKB_BASE_DIRECTORY=\"$(LIBDIR)/xkb/\"
-
-all:: $(OBJS) $(DPMSOBJS)
-
-LinkSourceFile(stubs.c,$(SERVERSRC)/Xi)
-SpecialCObjectRule(Init,$(ICONFIGFILES),$(_NOOP_))
-LinkSourceFile(miinitext.c,$(SERVERSRC)/mi)
-SpecialCObjectRule(miinitext,$(ICONFIGFILES),-UDPMSExtension)
-SpecialCObjectRule(Keyboard,$(ICONFIGFILES),$(XKB_DEFINES))
-#if BuildDPMS
-LinkSourceFile(dpmsstubs.c,$(SERVERSRC)/Xext)
-SpecialCObjectRule(dpmsstubs,$(ICONFIGFILES),$(EXT_DEFINES))
-#endif
-
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(xnest,$(OBJS))
-
-InstallManPage(Xnest,$(MANDIR))
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xnest/Init.c b/nx-X11/programs/Xserver/hw/xnest/Init.c
deleted file mode 100644
index f2e7122f3..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Init.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/* $Xorg: Init.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/Init.c,v 3.24 2003/01/15 02:34:14 torrey Exp $ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "screenint.h"
-#include "input.h"
-#include "misc.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "servermd.h"
-#include "mi.h"
-#include <X11/fonts/fontstruct.h>
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "Screen.h"
-#include "Pointer.h"
-#include "Keyboard.h"
-#include "Handlers.h"
-#include "Init.h"
-#include "Args.h"
-#include "Drawable.h"
-#include "XNGC.h"
-#include "XNFont.h"
-#ifdef DPMSExtension
-#include "dpmsproc.h"
-#endif
-
-Bool xnestDoFullGeneration = True;
-
-void
-InitOutput(ScreenInfo *screenInfo, int argc, char *argv[])
-{
- int i, j;
-
- xnestOpenDisplay(argc, argv);
-
- screenInfo->imageByteOrder = ImageByteOrder(xnestDisplay);
- screenInfo->bitmapScanlineUnit = BitmapUnit(xnestDisplay);
- screenInfo->bitmapScanlinePad = BitmapPad(xnestDisplay);
- screenInfo->bitmapBitOrder = BitmapBitOrder(xnestDisplay);
-
- screenInfo->numPixmapFormats = 0;
- for (i = 0; i < xnestNumPixmapFormats; i++)
- for (j = 0; j < xnestNumDepths; j++)
- if ((xnestPixmapFormats[i].depth == 1) ||
- (xnestPixmapFormats[i].depth == xnestDepths[j])) {
- screenInfo->formats[screenInfo->numPixmapFormats].depth =
- xnestPixmapFormats[i].depth;
- screenInfo->formats[screenInfo->numPixmapFormats].bitsPerPixel =
- xnestPixmapFormats[i].bits_per_pixel;
- screenInfo->formats[screenInfo->numPixmapFormats].scanlinePad =
- xnestPixmapFormats[i].scanline_pad;
- screenInfo->numPixmapFormats++;
- break;
- }
-
- xnestWindowPrivateIndex = AllocateWindowPrivateIndex();
- xnestGCPrivateIndex = AllocateGCPrivateIndex();
- xnestFontPrivateIndex = AllocateFontPrivateIndex();
-
- if (!xnestNumScreens) xnestNumScreens = 1;
-
- for (i = 0; i < xnestNumScreens; i++)
- AddScreen(xnestOpenScreen, argc, argv);
-
- xnestNumScreens = screenInfo->numScreens;
-
- xnestDoFullGeneration = xnestFullGeneration;
-}
-
-void
-InitInput(int argc, char *argv[])
-{
- xnestPointerDevice = AddInputDevice(xnestPointerProc, TRUE);
- xnestKeyboardDevice = AddInputDevice(xnestKeyboardProc, TRUE);
-
- RegisterPointerDevice(xnestPointerDevice);
- RegisterKeyboardDevice(xnestKeyboardDevice);
-
- mieqInit((DevicePtr)xnestKeyboardDevice, (DevicePtr)xnestPointerDevice);
-
- AddEnabledDevice(XConnectionNumber(xnestDisplay));
-
- RegisterBlockAndWakeupHandlers(xnestBlockHandler, xnestWakeupHandler, NULL);
-}
-
-/*
- * DDX - specific abort routine. Called by AbortServer().
- */
-void AbortDDX()
-{
- xnestDoFullGeneration = True;
- xnestCloseDisplay();
-}
-
-/* Called by GiveUp(). */
-void ddxGiveUp()
-{
- AbortDDX();
-}
-
-#ifdef __DARWIN__
-void
-DarwinHandleGUI(int argc, char *argv[])
-{
-}
-
-void GlxExtensionInit();
-void GlxWrapInitVisuals(void *procPtr);
-
-void
-DarwinGlxExtensionInit()
-{
- GlxExtensionInit();
-}
-
-void
-DarwinGlxWrapInitVisuals(
- void *procPtr)
-{
- GlxWrapInitVisuals(procPtr);
-}
-#endif
-
-void OsVendorInit()
-{
- return;
-}
-
-void OsVendorFatalError()
-{
- return;
-}
-
-void ddxBeforeReset(void)
-{
- return;
-}
-
-/* this is just to get the server to link on AIX */
-#ifdef AIXV3
-int SelectWaitTime = 10000; /* usec */
-#endif
-
diff --git a/nx-X11/programs/Xserver/hw/xnest/Init.h b/nx-X11/programs/Xserver/hw/xnest/Init.h
deleted file mode 100644
index 8fb9956eb..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Init.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* $Xorg: Init.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-
-#ifndef XNESTINIT_H
-#define XNESTINIT_H
-
-extern Bool xnestDoFullGeneration;
-
-#endif /* XNESTINIT_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/Keyboard.c b/nx-X11/programs/Xserver/hw/xnest/Keyboard.c
deleted file mode 100644
index 8628fd485..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Keyboard.c
+++ /dev/null
@@ -1,339 +0,0 @@
-/* $Xorg: Keyboard.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/* $XdotOrg: xc/programs/Xserver/hw/xnest/Keyboard.c,v 1.8 2005/07/14 03:36:44 kem Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/Keyboard.c,v 1.9 2003/09/13 21:33:09 dawes Exp $ */
-
-#define NEED_EVENTS
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include <X11/keysym.h>
-#include "screenint.h"
-#include "inputstr.h"
-#include "misc.h"
-#include "scrnintstr.h"
-#include "servermd.h"
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "Screen.h"
-#include "Keyboard.h"
-#include "Args.h"
-#include "Events.h"
-
-#ifdef XKB
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBsrv.h>
-#include <X11/extensions/XKBconfig.h>
-
-extern Bool
-XkbQueryExtension(
- Display * /* dpy */,
- int * /* opcodeReturn */,
- int * /* eventBaseReturn */,
- int * /* errorBaseReturn */,
- int * /* majorRtrn */,
- int * /* minorRtrn */
-);
-
-extern XkbDescPtr XkbGetKeyboard(
- Display * /* dpy */,
- unsigned int /* which */,
- unsigned int /* deviceSpec */
-);
-
-extern Status XkbGetControls(
- Display * /* dpy */,
- unsigned long /* which */,
- XkbDescPtr /* desc */
-);
-
-#ifndef XKB_BASE_DIRECTORY
-#define XKB_BASE_DIRECTORY "/usr/X11R6/lib/X11/xkb/"
-#endif
-#ifndef XKB_CONFIG_FILE
-#define XKB_CONFIG_FILE "X0-config.keyboard"
-#endif
-#ifndef XKB_DFLT_RULES_FILE
-#define XKB_DFLT_RULES_FILE __XKBDEFRULES__
-#endif
-#ifndef XKB_DFLT_KB_LAYOUT
-#define XKB_DFLT_KB_LAYOUT "us"
-#endif
-#ifndef XKB_DFLT_KB_MODEL
-#define XKB_DFLT_KB_MODEL "pc101"
-#endif
-#ifndef XKB_DFLT_KB_VARIANT
-#define XKB_DFLT_KB_VARIANT NULL
-#endif
-#ifndef XKB_DFLT_KB_OPTIONS
-#define XKB_DFLT_KB_OPTIONS NULL
-#endif
-
-#endif
-
-DeviceIntPtr xnestKeyboardDevice = NULL;
-
-void
-xnestBell(int volume, DeviceIntPtr pDev, pointer ctrl, int cls)
-{
- XBell(xnestDisplay, volume);
-}
-
-void
-xnestChangeKeyboardControl(DeviceIntPtr pDev, KeybdCtrl *ctrl)
-{
-#if 0
- unsigned long value_mask;
- XKeyboardControl values;
- int i;
-
- value_mask = KBKeyClickPercent |
- KBBellPercent |
- KBBellPitch |
- KBBellDuration |
- KBAutoRepeatMode;
-
- values.key_click_percent = ctrl->click;
- values.bell_percent = ctrl->bell;
- values.bell_pitch = ctrl->bell_pitch;
- values.bell_duration = ctrl->bell_duration;
- values.auto_repeat_mode = ctrl->autoRepeat ?
- AutoRepeatModeOn : AutoRepeatModeOff;
-
- XChangeKeyboardControl(xnestDisplay, value_mask, &values);
-
- /*
- value_mask = KBKey | KBAutoRepeatMode;
- At this point, we need to walk through the vector and compare it
- to the current server vector. If there are differences, report them.
- */
-
- value_mask = KBLed | KBLedMode;
- for (i = 1; i <= 32; i++) {
- values.led = i;
- values.led_mode = (ctrl->leds & (1 << (i - 1))) ? LedModeOn : LedModeOff;
- XChangeKeyboardControl(xnestDisplay, value_mask, &values);
- }
-#endif
-}
-
-int
-xnestKeyboardProc(DeviceIntPtr pDev, int onoff)
-{
- XModifierKeymap *modifier_keymap;
- KeySym *keymap;
- int mapWidth;
- int min_keycode, max_keycode;
- KeySymsRec keySyms;
- CARD8 modmap[MAP_LENGTH];
- int i, j;
- XKeyboardState values;
-
- switch (onoff)
- {
- case DEVICE_INIT:
- modifier_keymap = XGetModifierMapping(xnestDisplay);
- XDisplayKeycodes(xnestDisplay, &min_keycode, &max_keycode);
-#ifdef _XSERVER64
- {
- KeySym64 *keymap64;
- int i, len;
- keymap64 = XGetKeyboardMapping(xnestDisplay,
- min_keycode,
- max_keycode - min_keycode + 1,
- &mapWidth);
- len = (max_keycode - min_keycode + 1) * mapWidth;
- keymap = (KeySym *)xalloc(len * sizeof(KeySym));
- for(i = 0; i < len; ++i)
- keymap[i] = keymap64[i];
- XFree(keymap64);
- }
-#else
- keymap = XGetKeyboardMapping(xnestDisplay,
- min_keycode,
- max_keycode - min_keycode + 1,
- &mapWidth);
-#endif
-
- for (i = 0; i < MAP_LENGTH; i++)
- modmap[i] = 0;
- for (j = 0; j < 8; j++)
- for(i = 0; i < modifier_keymap->max_keypermod; i++) {
- CARD8 keycode;
- if ((keycode =
- modifier_keymap->
- modifiermap[j * modifier_keymap->max_keypermod + i]))
- modmap[keycode] |= 1<<j;
- }
- XFreeModifiermap(modifier_keymap);
-
- keySyms.minKeyCode = min_keycode;
- keySyms.maxKeyCode = max_keycode;
- keySyms.mapWidth = mapWidth;
- keySyms.map = keymap;
-
-#ifdef XKB
- if (noXkbExtension) {
-XkbError:
-#endif
- XGetKeyboardControl(xnestDisplay, &values);
-
- memmove((char *) defaultKeyboardControl.autoRepeats,
- (char *) values.auto_repeats, sizeof(values.auto_repeats));
-
- InitKeyboardDeviceStruct(&pDev->public, &keySyms, modmap,
- xnestBell, xnestChangeKeyboardControl);
-#ifdef XKB
- } else {
- FILE *file;
- XkbConfigRtrnRec config;
-
- XkbComponentNamesRec names;
- char *rules, *model, *layout, *variants, *options;
-
- XkbDescPtr xkb;
- int op, event, error, major, minor;
-
- if (XkbQueryExtension(xnestDisplay, &op, &event, &error, &major, &minor) == 0) {
- ErrorF("Unable to initialize XKEYBOARD extension.\n");
- goto XkbError;
- }
- xkb = XkbGetKeyboard(xnestDisplay, XkbGBN_AllComponentsMask, XkbUseCoreKbd);
- if (xkb == NULL || xkb->geom == NULL) {
- ErrorF("Couldn't get keyboard.\n");
- goto XkbError;
- }
- XkbGetControls(xnestDisplay, XkbAllControlsMask, xkb);
-
- memset(&names, 0, sizeof(XkbComponentNamesRec));
- rules = XKB_DFLT_RULES_FILE;
- model = XKB_DFLT_KB_MODEL;
- layout = XKB_DFLT_KB_LAYOUT;
- variants = XKB_DFLT_KB_VARIANT;
- options = XKB_DFLT_KB_OPTIONS;
- if (XkbInitialMap) {
- if ((names.keymap = strchr(XkbInitialMap, '/')) != NULL)
- ++names.keymap;
- else
- names.keymap = XkbInitialMap;
- }
-
- if ((file = fopen(XKB_BASE_DIRECTORY XKB_CONFIG_FILE, "r")) != NULL) {
- if (XkbCFParse(file, XkbCFDflts, xkb, &config) == 0) {
- ErrorF("Error parsing config file.\n");
- fclose(file);
- goto XkbError;
- }
- if (config.rules_file)
- rules = config.rules_file;
- if (config.model)
- model = config.model;
- if (config.layout)
- layout = config.layout;
- if (config.variant)
- variants = config.variant;
- if (config.options)
- options = config.options;
-
- fclose(file);
- }
-
- XkbSetRulesDflts(rules, model, layout, variants, options);
- XkbInitKeyboardDeviceStruct(pDev, &names, &keySyms, modmap,
- xnestBell, xnestChangeKeyboardControl);
- XkbDDXChangeControls(pDev, xkb->ctrls, xkb->ctrls);
- XkbFreeKeyboard(xkb, 0, False);
- }
-#endif
-#ifdef _XSERVER64
- xfree(keymap);
-#else
- XFree(keymap);
-#endif
- break;
- case DEVICE_ON:
- xnestEventMask |= XNEST_KEYBOARD_EVENT_MASK;
- for (i = 0; i < xnestNumScreens; i++)
- XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask);
- break;
- case DEVICE_OFF:
- xnestEventMask &= ~XNEST_KEYBOARD_EVENT_MASK;
- for (i = 0; i < xnestNumScreens; i++)
- XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask);
- break;
- case DEVICE_CLOSE:
- break;
- }
- return Success;
-}
-
-Bool
-LegalModifier(unsigned int key, DevicePtr pDev)
-{
- return TRUE;
-}
-
-void
-xnestUpdateModifierState(unsigned int state)
-{
- DeviceIntPtr pDev = xnestKeyboardDevice;
- KeyClassPtr keyc = pDev->key;
- int i;
- CARD8 mask;
-
- state = state & 0xff;
-
- if (keyc->state == state)
- return;
-
- for (i = 0, mask = 1; i < 8; i++, mask <<= 1) {
- int key;
-
- /* Modifier is down, but shouldn't be
- */
- if ((keyc->state & mask) && !(state & mask)) {
- int count = keyc->modifierKeyCount[i];
-
- for (key = 0; key < MAP_LENGTH; key++)
- if (keyc->modifierMap[key] & mask) {
- int bit;
- BYTE *kptr;
-
- kptr = &keyc->down[key >> 3];
- bit = 1 << (key & 7);
-
- if (*kptr & bit)
- xnestQueueKeyEvent(KeyRelease, key);
-
- if (--count == 0)
- break;
- }
- }
-
- /* Modifier shoud be down, but isn't
- */
- if (!(keyc->state & mask) && (state & mask))
- for (key = 0; key < MAP_LENGTH; key++)
- if (keyc->modifierMap[key] & mask) {
- xnestQueueKeyEvent(KeyPress, key);
- break;
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/Keyboard.h b/nx-X11/programs/Xserver/hw/xnest/Keyboard.h
deleted file mode 100644
index 8237dac14..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Keyboard.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* $Xorg: Keyboard.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifndef XNESTKEYBOARD_H
-#define XNESTKEYBOARD_H
-
-#define XNEST_KEYBOARD_EVENT_MASK \
- (KeyPressMask | KeyReleaseMask | FocusChangeMask | KeymapStateMask)
-
-extern DeviceIntPtr xnestKeyboardDevice;
-
-void xnestBell(int volume, DeviceIntPtr pDev, pointer ctrl, int cls);
-void xnestChangeKeyboardControl(DeviceIntPtr pDev, KeybdCtrl *ctrl);
-int xnestKeyboardProc(DeviceIntPtr pDev, int onoff);
-void xnestUpdateModifierState(unsigned int state);
-
-#endif /* XNESTKEYBOARD_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/Pixmap.c b/nx-X11/programs/Xserver/hw/xnest/Pixmap.c
deleted file mode 100644
index 30ffbc6e6..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Pixmap.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* $Xorg: Pixmap.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/Pixmap.c,v 3.7 2003/07/16 01:38:51 dawes Exp $ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "regionstr.h"
-#include "gc.h"
-#include "servermd.h"
-#include "mi.h"
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "Screen.h"
-#include "XNPixmap.h"
-
-#ifdef PIXPRIV
-int xnestPixmapPrivateIndex;
-#endif
-
-PixmapPtr
-xnestCreatePixmap(ScreenPtr pScreen, int width, int height, int depth)
-{
- PixmapPtr pPixmap;
-
- pPixmap = AllocatePixmap(pScreen, sizeof(xnestPrivPixmap));
- if (!pPixmap)
- return NullPixmap;
- pPixmap->drawable.type = DRAWABLE_PIXMAP;
- pPixmap->drawable.class = 0;
- pPixmap->drawable.depth = depth;
- pPixmap->drawable.bitsPerPixel = depth;
- pPixmap->drawable.id = 0;
- pPixmap->drawable.x = 0;
- pPixmap->drawable.y = 0;
- pPixmap->drawable.width = width;
- pPixmap->drawable.height = height;
- pPixmap->drawable.pScreen = pScreen;
- pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- pPixmap->refcnt = 1;
- pPixmap->devKind = PixmapBytePad(width, depth);
-#ifdef PIXPRIV
- pPixmap->devPrivates[xnestPixmapPrivateIndex].ptr =
- (pointer)((char *)pPixmap + pScreen->totalPixmapSize);
-#else
- pPixmap->devPrivate.ptr = (pointer)(pPixmap + 1);
-#endif
- if (width && height)
- xnestPixmapPriv(pPixmap)->pixmap =
- XCreatePixmap(xnestDisplay,
- xnestDefaultWindows[pScreen->myNum],
- width, height, depth);
- else
- xnestPixmapPriv(pPixmap)->pixmap = 0;
-
- return pPixmap;
-}
-
-Bool
-xnestDestroyPixmap(PixmapPtr pPixmap)
-{
- if(--pPixmap->refcnt)
- return TRUE;
- XFreePixmap(xnestDisplay, xnestPixmap(pPixmap));
- xfree(pPixmap);
- return TRUE;
-}
-
-RegionPtr
-xnestPixmapToRegion(PixmapPtr pPixmap)
-{
- XImage *ximage;
- register RegionPtr pReg, pTmpReg;
- register int x, y;
- unsigned long previousPixel, currentPixel;
- BoxRec Box;
- Bool overlap;
-
- ximage = XGetImage(xnestDisplay, xnestPixmap(pPixmap), 0, 0,
- pPixmap->drawable.width, pPixmap->drawable.height,
- 1, XYPixmap);
-
- pReg = REGION_CREATE(pPixmap->drawable.pScreen, NULL, 1);
- pTmpReg = REGION_CREATE(pPixmap->drawable.pScreen, NULL, 1);
- if(!pReg || !pTmpReg) return NullRegion;
-
- for (y = 0; y < pPixmap->drawable.height; y++) {
- Box.y1 = y;
- Box.y2 = y + 1;
- previousPixel = 0L;
- for (x = 0; x < pPixmap->drawable.width; x++) {
- currentPixel = XGetPixel(ximage, x, y);
- if (previousPixel != currentPixel) {
- if (previousPixel == 0L) {
- /* left edge */
- Box.x1 = x;
- }
- else if (currentPixel == 0L) {
- /* right edge */
- Box.x2 = x;
- REGION_RESET(pPixmap->drawable.pScreen, pTmpReg, &Box);
- REGION_APPEND(pPixmap->drawable.pScreen, pReg, pTmpReg);
- }
- previousPixel = currentPixel;
- }
- }
- if (previousPixel != 0L) {
- /* right edge because of the end of pixmap */
- Box.x2 = pPixmap->drawable.width;
- REGION_RESET(pPixmap->drawable.pScreen, pTmpReg, &Box);
- REGION_APPEND(pPixmap->drawable.pScreen, pReg, pTmpReg);
- }
- }
-
- REGION_DESTROY(pPixmap->drawable.pScreen, pTmpReg);
- XDestroyImage(ximage);
-
- REGION_VALIDATE(pPixmap->drawable.pScreen, pReg, &overlap);
-
- return(pReg);
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/Pointer.c b/nx-X11/programs/Xserver/hw/xnest/Pointer.c
deleted file mode 100644
index 1533a06d8..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Pointer.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* $Xorg: Pointer.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "screenint.h"
-#include "inputstr.h"
-#include "input.h"
-#include "misc.h"
-#include "scrnintstr.h"
-#include "servermd.h"
-#include "mipointer.h"
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "Screen.h"
-#include "Pointer.h"
-#include "Args.h"
-
-DeviceIntPtr xnestPointerDevice = NULL;
-
-void
-xnestChangePointerControl(DeviceIntPtr pDev, PtrCtrl *ctrl)
-{
- XChangePointerControl(xnestDisplay, True, True,
- ctrl->num, ctrl->den, ctrl->threshold);
-}
-
-int
-xnestPointerProc(DeviceIntPtr pDev, int onoff)
-{
- CARD8 map[MAXBUTTONS];
- int nmap;
- int i;
-
- switch (onoff)
- {
- case DEVICE_INIT:
- nmap = XGetPointerMapping(xnestDisplay, map, MAXBUTTONS);
- for (i = 0; i <= nmap; i++)
- map[i] = i; /* buttons are already mapped */
- InitPointerDeviceStruct(&pDev->public, map, nmap,
- miPointerGetMotionEvents,
- xnestChangePointerControl,
- miPointerGetMotionBufferSize());
- break;
- case DEVICE_ON:
- xnestEventMask |= XNEST_POINTER_EVENT_MASK;
- for (i = 0; i < xnestNumScreens; i++)
- XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask);
- break;
- case DEVICE_OFF:
- xnestEventMask &= ~XNEST_POINTER_EVENT_MASK;
- for (i = 0; i < xnestNumScreens; i++)
- XSelectInput(xnestDisplay, xnestDefaultWindows[i], xnestEventMask);
- break;
- case DEVICE_CLOSE:
- break;
- }
- return Success;
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/Pointer.h b/nx-X11/programs/Xserver/hw/xnest/Pointer.h
deleted file mode 100644
index 872dfb8ee..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Pointer.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* $Xorg: Pointer.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifndef XNESTPOINTER_H
-#define XNESTPOINTER_H
-
-#define MAXBUTTONS 256
-
-#define XNEST_POINTER_EVENT_MASK \
- (ButtonPressMask | ButtonReleaseMask | PointerMotionMask | \
- EnterWindowMask | LeaveWindowMask)
-
-extern DeviceIntPtr xnestPointerDevice;
-
-void xnestChangePointerControl(DeviceIntPtr pDev, PtrCtrl *ctrl);
-int xnestPointerProc(DeviceIntPtr pDev, int onoff);
-
-#endif /* XNESTPOINTER_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/Screen.c b/nx-X11/programs/Xserver/hw/xnest/Screen.c
deleted file mode 100644
index 660e54fe7..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Screen.c
+++ /dev/null
@@ -1,458 +0,0 @@
-/* $Xorg: Screen.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/Screen.c,v 3.12 2003/11/14 22:25:59 dawes Exp $ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "scrnintstr.h"
-#include "dix.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "micmap.h"
-#include "colormapst.h"
-#include "resource.h"
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "Screen.h"
-#include "XNGC.h"
-#include "GCOps.h"
-#include "Drawable.h"
-#include "XNFont.h"
-#include "Color.h"
-#include "XNCursor.h"
-#include "Visual.h"
-#include "Events.h"
-#include "Init.h"
-#include "mipointer.h"
-#include "Args.h"
-
-Window xnestDefaultWindows[MAXSCREENS];
-Window xnestScreenSaverWindows[MAXSCREENS];
-
-#ifdef GLXEXT
-extern void GlxWrapInitVisuals(miInitVisualsProcPtr *);
-#endif
-
-#ifdef PIXPRIV
-int xnestScreenGeneration = -1;
-#endif
-
-ScreenPtr
-xnestScreen(Window window)
-{
- int i;
-
- for (i = 0; i < xnestNumScreens; i++)
- if (xnestDefaultWindows[i] == window)
- return screenInfo.screens[i];
-
- return NULL;
-}
-
-static int
-offset(unsigned long mask)
-{
- int count;
-
- for (count = 0; !(mask & 1) && count < 32; count++)
- mask >>= 1;
-
- return count;
-}
-
-static Bool
-xnestSaveScreen(ScreenPtr pScreen, int what)
-{
- if (xnestSoftwareScreenSaver)
- return False;
- else {
- switch (what) {
- case SCREEN_SAVER_ON:
- XMapRaised(xnestDisplay, xnestScreenSaverWindows[pScreen->myNum]);
- xnestSetScreenSaverColormapWindow(pScreen);
- break;
-
- case SCREEN_SAVER_OFF:
- XUnmapWindow(xnestDisplay, xnestScreenSaverWindows[pScreen->myNum]);
- xnestSetInstalledColormapWindows(pScreen);
- break;
-
- case SCREEN_SAVER_FORCER:
- lastEventTime = GetTimeInMillis();
- XUnmapWindow(xnestDisplay, xnestScreenSaverWindows[pScreen->myNum]);
- xnestSetInstalledColormapWindows(pScreen);
- break;
-
- case SCREEN_SAVER_CYCLE:
- XUnmapWindow(xnestDisplay, xnestScreenSaverWindows[pScreen->myNum]);
- xnestSetInstalledColormapWindows(pScreen);
- break;
- }
- return True;
- }
-}
-
-static Bool
-xnestCursorOffScreen(ScreenPtr *ppScreen, int *x, int *y)
-{
- return FALSE;
-}
-
-static void
-xnestCrossScreen(ScreenPtr pScreen, Bool entering)
-{
-}
-
-static miPointerScreenFuncRec xnestPointerCursorFuncs =
-{
- xnestCursorOffScreen,
- xnestCrossScreen,
- miPointerWarpCursor
-};
-
-static miPointerSpriteFuncRec xnestPointerSpriteFuncs =
-{
- xnestRealizeCursor,
- xnestUnrealizeCursor,
- xnestSetCursor,
- xnestMoveCursor,
-};
-
-Bool
-xnestOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[])
-{
- VisualPtr visuals;
- DepthPtr depths;
- int numVisuals, numDepths;
- int i, j, depthIndex;
- unsigned long valuemask;
- XSetWindowAttributes attributes;
- XWindowAttributes gattributes;
- XSizeHints sizeHints;
- VisualID defaultVisual;
- int rootDepth;
-
- if (!(AllocateWindowPrivate(pScreen, xnestWindowPrivateIndex,
- sizeof(xnestPrivWin)) &&
- AllocateGCPrivate(pScreen, xnestGCPrivateIndex,
- sizeof(xnestPrivGC))))
- return False;
-
-#ifdef PIXPRIV
- if (xnestScreenGeneration != serverGeneration) {
- if ((xnestPixmapPrivateIndex = AllocatePixmapPrivateIndex()) < 0)
- return False;
- xnestScreenGeneration = serverGeneration;
- }
-
- if (!AllocatePixmapPrivate(pScreen,xnestPixmapPrivateIndex,
- sizeof (xnestPrivPixmap)))
- return False;
-#endif
- visuals = (VisualPtr)xalloc(xnestNumVisuals * sizeof(VisualRec));
- numVisuals = 0;
-
- depths = (DepthPtr)xalloc(MAXDEPTH * sizeof(DepthRec));
- depths[0].depth = 1;
- depths[0].numVids = 0;
- depths[0].vids = (VisualID *)xalloc(MAXVISUALSPERDEPTH * sizeof(VisualID));
- numDepths = 1;
-
- for (i = 0; i < xnestNumVisuals; i++) {
- visuals[numVisuals].class = xnestVisuals[i].class;
- visuals[numVisuals].bitsPerRGBValue = xnestVisuals[i].bits_per_rgb;
- visuals[numVisuals].ColormapEntries = xnestVisuals[i].colormap_size;
- visuals[numVisuals].nplanes = xnestVisuals[i].depth;
- visuals[numVisuals].redMask = xnestVisuals[i].red_mask;
- visuals[numVisuals].greenMask = xnestVisuals[i].green_mask;
- visuals[numVisuals].blueMask = xnestVisuals[i].blue_mask;
- visuals[numVisuals].offsetRed = offset(xnestVisuals[i].red_mask);
- visuals[numVisuals].offsetGreen = offset(xnestVisuals[i].green_mask);
- visuals[numVisuals].offsetBlue = offset(xnestVisuals[i].blue_mask);
-
- /* Check for and remove duplicates. */
- for (j = 0; j < numVisuals; j++) {
- if (visuals[numVisuals].class == visuals[j].class &&
- visuals[numVisuals].bitsPerRGBValue == visuals[j].bitsPerRGBValue &&
- visuals[numVisuals].ColormapEntries == visuals[j].ColormapEntries &&
- visuals[numVisuals].nplanes == visuals[j].nplanes &&
- visuals[numVisuals].redMask == visuals[j].redMask &&
- visuals[numVisuals].greenMask == visuals[j].greenMask &&
- visuals[numVisuals].blueMask == visuals[j].blueMask &&
- visuals[numVisuals].offsetRed == visuals[j].offsetRed &&
- visuals[numVisuals].offsetGreen == visuals[j].offsetGreen &&
- visuals[numVisuals].offsetBlue == visuals[j].offsetBlue)
- break;
- }
- if (j < numVisuals)
- break;
-
- visuals[numVisuals].vid = FakeClientID(0);
-
- depthIndex = UNDEFINED;
- for (j = 0; j < numDepths; j++)
- if (depths[j].depth == xnestVisuals[i].depth) {
- depthIndex = j;
- break;
- }
-
- if (depthIndex == UNDEFINED) {
- depthIndex = numDepths;
- depths[depthIndex].depth = xnestVisuals[i].depth;
- depths[depthIndex].numVids = 0;
- depths[depthIndex].vids =
- (VisualID *)xalloc(MAXVISUALSPERDEPTH * sizeof(VisualID));
- numDepths++;
- }
- if (depths[depthIndex].numVids >= MAXVISUALSPERDEPTH) {
- FatalError("Visual table overflow");
- }
- depths[depthIndex].vids[depths[depthIndex].numVids] =
- visuals[numVisuals].vid;
- depths[depthIndex].numVids++;
-
- numVisuals++;
- }
- visuals = (VisualPtr)xrealloc(visuals, numVisuals * sizeof(VisualRec));
-
- defaultVisual = visuals[xnestDefaultVisualIndex].vid;
- rootDepth = visuals[xnestDefaultVisualIndex].nplanes;
-
-#ifdef GLXEXT
- {
- miInitVisualsProcPtr proc = NULL;
-
- GlxWrapInitVisuals(&proc);
- /* GlxInitVisuals ignores the last three arguments. */
- proc(&visuals, &depths, &numVisuals, &numDepths,
- &rootDepth, &defaultVisual, 0, 0, 0);
- }
-#endif
-
- if (xnestParentWindow != 0) {
- XGetWindowAttributes(xnestDisplay, xnestParentWindow, &gattributes);
- xnestWidth = gattributes.width;
- xnestHeight = gattributes.height;
- }
-
- /* myNum */
- /* id */
- miScreenInit(pScreen, NULL, xnestWidth, xnestHeight, 1, 1, xnestWidth,
- rootDepth,
- numDepths, depths,
- defaultVisual, /* root visual */
- numVisuals, visuals);
-
-/* miInitializeBackingStore(pScreen); */
-
- pScreen->defColormap = (Colormap) FakeClientID(0);
- pScreen->minInstalledCmaps = MINCMAPS;
- pScreen->maxInstalledCmaps = MAXCMAPS;
- pScreen->backingStoreSupport = NotUseful;
- pScreen->saveUnderSupport = NotUseful;
- pScreen->whitePixel = xnestWhitePixel;
- pScreen->blackPixel = xnestBlackPixel;
- /* rgf */
- /* GCperDepth */
- /* PixmapPerDepth */
- pScreen->devPrivate = NULL;
- /* WindowPrivateLen */
- /* WindowPrivateSizes */
- /* totalWindowSize */
- /* GCPrivateLen */
- /* GCPrivateSizes */
- /* totalGCSize */
-
- /* Random screen procedures */
-
- pScreen->QueryBestSize = xnestQueryBestSize;
- pScreen->SaveScreen = xnestSaveScreen;
- pScreen->GetImage = xnestGetImage;
- pScreen->GetSpans = xnestGetSpans;
- pScreen->PointerNonInterestBox = NULL;
- pScreen->SourceValidate = NULL;
-
- /* Window Procedures */
-
- pScreen->CreateWindow = xnestCreateWindow;
- pScreen->DestroyWindow = xnestDestroyWindow;
- pScreen->PositionWindow = xnestPositionWindow;
- pScreen->ChangeWindowAttributes = xnestChangeWindowAttributes;
- pScreen->RealizeWindow = xnestRealizeWindow;
- pScreen->UnrealizeWindow = xnestUnrealizeWindow;
- pScreen->PostValidateTree = NULL;
- pScreen->WindowExposures = xnestWindowExposures;
- pScreen->PaintWindowBackground = xnestPaintWindowBackground;
- pScreen->PaintWindowBorder = xnestPaintWindowBorder;
- pScreen->CopyWindow = xnestCopyWindow;
- pScreen->ClipNotify = xnestClipNotify;
-
- /* Pixmap procedures */
-
- pScreen->CreatePixmap = xnestCreatePixmap;
- pScreen->DestroyPixmap = xnestDestroyPixmap;
-
- /* Backing store procedures */
-
- pScreen->SaveDoomedAreas = NULL;
- pScreen->RestoreAreas = NULL;
- pScreen->ExposeCopy = NULL;
- pScreen->TranslateBackingStore = NULL;
- pScreen->ClearBackingStore = NULL;
- pScreen->DrawGuarantee = NULL;
-
- /* Font procedures */
-
- pScreen->RealizeFont = xnestRealizeFont;
- pScreen->UnrealizeFont = xnestUnrealizeFont;
-
- /* GC procedures */
-
- pScreen->CreateGC = xnestCreateGC;
-
- /* Colormap procedures */
-
- pScreen->CreateColormap = xnestCreateColormap;
- pScreen->DestroyColormap = xnestDestroyColormap;
- pScreen->InstallColormap = xnestInstallColormap;
- pScreen->UninstallColormap = xnestUninstallColormap;
- pScreen->ListInstalledColormaps = xnestListInstalledColormaps;
- pScreen->StoreColors = xnestStoreColors;
- pScreen->ResolveColor = xnestResolveColor;
-
- pScreen->BitmapToRegion = xnestPixmapToRegion;
-
- /* OS layer procedures */
-
- pScreen->BlockHandler = (ScreenBlockHandlerProcPtr)NoopDDA;
- pScreen->WakeupHandler = (ScreenWakeupHandlerProcPtr)NoopDDA;
- pScreen->blockData = NULL;
- pScreen->wakeupData = NULL;
-
- miPointerInitialize (pScreen, &xnestPointerSpriteFuncs,
- &xnestPointerCursorFuncs, True);
-
- pScreen->mmWidth = xnestWidth * DisplayWidthMM(xnestDisplay,
- DefaultScreen(xnestDisplay)) /
- DisplayWidth(xnestDisplay,
- DefaultScreen(xnestDisplay));
- pScreen->mmHeight = xnestHeight * DisplayHeightMM(xnestDisplay,
- DefaultScreen(xnestDisplay)) /
- DisplayHeight(xnestDisplay,
- DefaultScreen(xnestDisplay));
-
- /* overwrite miCloseScreen with our own */
- pScreen->CloseScreen = xnestCloseScreen;
-
- if (!miScreenDevPrivateInit(pScreen, xnestWidth, NULL))
- return FALSE;
-
-#ifdef SHAPE
- /* overwrite miSetShape with our own */
- pScreen->SetShape = xnestSetShape;
-#endif /* SHAPE */
-
- /* devPrivates */
-
-#define POSITION_OFFSET (pScreen->myNum * (xnestWidth + xnestHeight) / 32)
-
- if (xnestDoFullGeneration) {
-
- valuemask = CWBackPixel | CWEventMask | CWColormap;
- attributes.background_pixel = xnestWhitePixel;
- attributes.event_mask = xnestEventMask;
- attributes.colormap = xnestDefaultVisualColormap(xnestDefaultVisual(pScreen));
-
- if (xnestParentWindow != 0) {
- xnestDefaultWindows[pScreen->myNum] = xnestParentWindow;
- XSelectInput (xnestDisplay, xnestDefaultWindows[pScreen->myNum],
- xnestEventMask);
- } else
- xnestDefaultWindows[pScreen->myNum] =
- XCreateWindow(xnestDisplay,
- DefaultRootWindow(xnestDisplay),
- xnestX + POSITION_OFFSET,
- xnestY + POSITION_OFFSET,
- xnestWidth, xnestHeight,
- xnestBorderWidth,
- pScreen->rootDepth,
- InputOutput,
- xnestDefaultVisual(pScreen),
- valuemask, &attributes);
-
- if (!xnestWindowName)
- xnestWindowName = argv[0];
-
- sizeHints.flags = PPosition | PSize | PMaxSize;
- sizeHints.x = xnestX + POSITION_OFFSET;
- sizeHints.y = xnestY + POSITION_OFFSET;
- sizeHints.width = sizeHints.max_width = xnestWidth;
- sizeHints.height = sizeHints.max_height = xnestHeight;
- if (xnestUserGeometry & XValue || xnestUserGeometry & YValue)
- sizeHints.flags |= USPosition;
- if (xnestUserGeometry & WidthValue || xnestUserGeometry & HeightValue)
- sizeHints.flags |= USSize;
- XSetStandardProperties(xnestDisplay,
- xnestDefaultWindows[pScreen->myNum],
- xnestWindowName,
- xnestWindowName,
- xnestIconBitmap,
- argv, argc, &sizeHints);
-
- XMapWindow(xnestDisplay, xnestDefaultWindows[pScreen->myNum]);
-
- valuemask = CWBackPixmap | CWColormap;
- attributes.background_pixmap = xnestScreenSaverPixmap;
- attributes.colormap =
- DefaultColormap(xnestDisplay, DefaultScreen(xnestDisplay));
- xnestScreenSaverWindows[pScreen->myNum] =
- XCreateWindow(xnestDisplay,
- xnestDefaultWindows[pScreen->myNum],
- 0, 0, xnestWidth, xnestHeight, 0,
- DefaultDepth(xnestDisplay, DefaultScreen(xnestDisplay)),
- InputOutput,
- DefaultVisual(xnestDisplay, DefaultScreen(xnestDisplay)),
- valuemask, &attributes);
- }
-
- if (!xnestCreateDefaultColormap(pScreen)) return False;
-
- return True;
-}
-
-Bool
-xnestCloseScreen(int index, ScreenPtr pScreen)
-{
- int i;
-
- for (i = 0; i < pScreen->numDepths; i++)
- xfree(pScreen->allowedDepths[i].vids);
- xfree(pScreen->allowedDepths);
- xfree(pScreen->visuals);
- xfree(pScreen->devPrivate);
-
- /*
- If xnestDoFullGeneration all x resources will be destroyed upon closing
- the display connection. There is no need to generate extra protocol.
- */
-
- return True;
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/Screen.h b/nx-X11/programs/Xserver/hw/xnest/Screen.h
deleted file mode 100644
index f35a2872d..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Screen.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* $Xorg: Screen.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifndef XNESTSCREEN_H
-#define XNESTSCREEN_H
-
-extern Window xnestDefaultWindows[MAXSCREENS];
-extern Window xnestScreenSaverWindows[MAXSCREENS];
-
-ScreenPtr xnestScreen(Window window);
-Bool xnestOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[]);
-Bool xnestCloseScreen(int index, ScreenPtr pScreen);
-
-#endif /* XNESTSCREEN_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/TestExt.c b/nx-X11/programs/Xserver/hw/xnest/TestExt.c
deleted file mode 100644
index 74446b050..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/TestExt.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* $Xorg: TestExt.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/TestExt.c,v 3.5 2001/08/27 17:41:00 dawes Exp $ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include <X11/Xlib.h>
-#undef Bool
-#include "screenint.h"
-#include "input.h"
-#include "misc.h"
-#include "scrnintstr.h"
-#include "servermd.h"
-#include "mipointer.h"
-#define XTestSERVER_SIDE
-#include <X11/extensions/xtestext1.h>
-#include "xtest1dd.h"
-
-extern CARD32 lastEventTime;
-
-void
-XTestGetPointerPos(short *fmousex, short *fmousey)
-{
- int x,y;
-
- miPointerPosition(&x, &y);
- *fmousex = x;
- *fmousey = y;
-}
-
-void
-XTestJumpPointer(int jx, int jy, int dev_type)
-{
- miPointerAbsoluteCursor(jx, jy, GetTimeInMillis());
-}
-
-void
-XTestGenerateEvent(int dev_type, int keycode, int keystate, int mousex,
- int mousey)
-{
-/*
- xEvent tevent;
-
- tevent.u.u.type = (dev_type == XE_POINTER) ?
- (keystate == XTestKEY_UP) ? ButtonRelease : ButtonPress :
- (keystate == XTestKEY_UP) ? KeyRelease : KeyPress;
- tevent.u.u.detail = keycode;
- tevent.u.keyButtonPointer.rootX = mousex;
- tevent.u.keyButtonPointer.rootY = mousey;
- tevent.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
- mieqEnqueue(&tevent);
-*/
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/Visual.c b/nx-X11/programs/Xserver/hw/xnest/Visual.c
deleted file mode 100644
index bbdb71ec6..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Visual.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* $Xorg: Visual.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "scrnintstr.h"
-#include "dix.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "Xnest.h"
-
-#include "Display.h"
-#include "Visual.h"
-
-Visual *
-xnestVisual(VisualPtr pVisual)
-{
- int i;
-
- for (i = 0; i < xnestNumVisuals; i++)
- if (pVisual->class == xnestVisuals[i].class &&
- pVisual->bitsPerRGBValue == xnestVisuals[i].bits_per_rgb &&
- pVisual->ColormapEntries == xnestVisuals[i].colormap_size &&
- pVisual->nplanes == xnestVisuals[i].depth &&
- pVisual->redMask == xnestVisuals[i].red_mask &&
- pVisual->greenMask == xnestVisuals[i].green_mask &&
- pVisual->blueMask == xnestVisuals[i].blue_mask)
- return xnestVisuals[i].visual;
-
- return NULL;
-}
-
-Visual *
-xnestVisualFromID(ScreenPtr pScreen, VisualID visual)
-{
- int i;
-
- for (i = 0; i < pScreen->numVisuals; i++)
- if (pScreen->visuals[i].vid == visual)
- return xnestVisual(&pScreen->visuals[i]);
-
- return NULL;
-}
-
-Colormap
-xnestDefaultVisualColormap(Visual *visual)
-{
- int i;
-
- for (i = 0; i < xnestNumVisuals; i++)
- if (xnestVisuals[i].visual == visual)
- return xnestDefaultColormaps[i];
-
- return None;
-}
diff --git a/nx-X11/programs/Xserver/hw/xnest/Visual.h b/nx-X11/programs/Xserver/hw/xnest/Visual.h
deleted file mode 100644
index dfa74dbdc..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Visual.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* $Xorg: Visual.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifndef XNESTVISUAL_H
-#define XNESTVISUAL_H
-
-Visual *xnestVisual(VisualPtr pVisual);
-Visual *xnestVisualFromID(ScreenPtr pScreen, VisualID visual);
-Colormap xnestDefaultVisualColormap(Visual *visual);
-
-#define xnestDefaultVisual(pScreen) \
- xnestVisualFromID((pScreen), (pScreen)->rootVisual)
-
-#endif /* XNESTVISUAL_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/Window.c b/nx-X11/programs/Xserver/hw/xnest/Window.c
deleted file mode 100644
index f652c342a..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Window.c
+++ /dev/null
@@ -1,558 +0,0 @@
-/* $Xorg: Window.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/Window.c,v 3.7 2001/10/28 03:34:11 tsi Exp $ */
-
-#ifdef HAVE_XNEST_CONFIG_H
-#include <xnest-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "gcstruct.h"
-#include "window.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "colormapst.h"
-#include "scrnintstr.h"
-#include "region.h"
-
-#include "mi.h"
-
-#include "Xnest.h"
-
-#include "Display.h"
-#include "Screen.h"
-#include "XNGC.h"
-#include "Drawable.h"
-#include "Color.h"
-#include "Visual.h"
-#include "Events.h"
-#include "Args.h"
-
-int xnestWindowPrivateIndex;
-
-static int
-xnestFindWindowMatch(WindowPtr pWin, pointer ptr)
-{
- xnestWindowMatch *wm = (xnestWindowMatch *)ptr;
- if (wm->window == xnestWindow(pWin)) {
- wm->pWin = pWin;
- return WT_STOPWALKING;
- }
- else
- return WT_WALKCHILDREN;
-}
-
-WindowPtr
-xnestWindowPtr(Window window)
-{
- xnestWindowMatch wm;
- int i;
-
- wm.pWin = NullWindow;
- wm.window = window;
-
- for (i = 0; i < xnestNumScreens; i++) {
- WalkTree(screenInfo.screens[i], xnestFindWindowMatch, (pointer) &wm);
- if (wm.pWin) break;
- }
-
- return wm.pWin;
-}
-
-Bool
-xnestCreateWindow(WindowPtr pWin)
-{
- unsigned long mask;
- XSetWindowAttributes attributes;
- Visual *visual;
- ColormapPtr pCmap;
-
- if (pWin->drawable.class == InputOnly) {
- mask = 0L;
- visual = CopyFromParent;
- }
- else {
- mask = CWEventMask | CWBackingStore;
- attributes.event_mask = ExposureMask;
- attributes.backing_store = NotUseful;
-
- if (pWin->parent) {
- if (pWin->optional && pWin->optional->visual != wVisual(pWin->parent)) {
- visual = xnestVisualFromID(pWin->drawable.pScreen, wVisual(pWin));
- mask |= CWColormap;
- if (pWin->optional->colormap) {
- pCmap = (ColormapPtr)LookupIDByType(wColormap(pWin), RT_COLORMAP);
- attributes.colormap = xnestColormap(pCmap);
- }
- else
- attributes.colormap = xnestDefaultVisualColormap(visual);
- }
- else
- visual = CopyFromParent;
- }
- else { /* root windows have their own colormaps at creation time */
- visual = xnestVisualFromID(pWin->drawable.pScreen, wVisual(pWin));
- pCmap = (ColormapPtr)LookupIDByType(wColormap(pWin), RT_COLORMAP);
- mask |= CWColormap;
- attributes.colormap = xnestColormap(pCmap);
- }
- }
-
- xnestWindowPriv(pWin)->window = XCreateWindow(xnestDisplay,
- xnestWindowParent(pWin),
- pWin->origin.x -
- wBorderWidth(pWin),
- pWin->origin.y -
- wBorderWidth(pWin),
- pWin->drawable.width,
- pWin->drawable.height,
- pWin->borderWidth,
- pWin->drawable.depth,
- pWin->drawable.class,
- visual,
- mask, &attributes);
- xnestWindowPriv(pWin)->parent = xnestWindowParent(pWin);
- xnestWindowPriv(pWin)->x = pWin->origin.x - wBorderWidth(pWin);
- xnestWindowPriv(pWin)->y = pWin->origin.y - wBorderWidth(pWin);
- xnestWindowPriv(pWin)->width = pWin->drawable.width;
- xnestWindowPriv(pWin)->height = pWin->drawable.height;
- xnestWindowPriv(pWin)->border_width = pWin->borderWidth;
- xnestWindowPriv(pWin)->sibling_above = None;
- if (pWin->nextSib)
- xnestWindowPriv(pWin->nextSib)->sibling_above = xnestWindow(pWin);
-#ifdef SHAPE
- xnestWindowPriv(pWin)->bounding_shape =
- REGION_CREATE(pWin->drawable.pScreen, NULL, 1);
- xnestWindowPriv(pWin)->clip_shape =
- REGION_CREATE(pWin->drawable.pScreen, NULL, 1);
-#endif /* SHAPE */
-
- if (!pWin->parent) /* only the root window will have the right colormap */
- xnestSetInstalledColormapWindows(pWin->drawable.pScreen);
-
- return True;
-}
-
-Bool
-xnestDestroyWindow(WindowPtr pWin)
-{
- if (pWin->nextSib)
- xnestWindowPriv(pWin->nextSib)->sibling_above =
- xnestWindowPriv(pWin)->sibling_above;
-#ifdef SHAPE
- REGION_DESTROY(pWin->drawable.pScreen,
- xnestWindowPriv(pWin)->bounding_shape);
- REGION_DESTROY(pWin->drawable.pScreen,
- xnestWindowPriv(pWin)->clip_shape);
-#endif
- XDestroyWindow(xnestDisplay, xnestWindow(pWin));
- xnestWindowPriv(pWin)->window = None;
-
- if (pWin->optional && pWin->optional->colormap && pWin->parent)
- xnestSetInstalledColormapWindows(pWin->drawable.pScreen);
-
- return True;
-}
-
-Bool
-xnestPositionWindow(WindowPtr pWin, int x, int y)
-{
- xnestConfigureWindow(pWin,
- CWParent |
- CWX | CWY |
- CWWidth | CWHeight |
- CWBorderWidth);
-
- return True;
-}
-
-void
-xnestConfigureWindow(WindowPtr pWin, unsigned int mask)
-{
- unsigned int valuemask;
- XWindowChanges values;
-
- if (mask & CWParent &&
- xnestWindowPriv(pWin)->parent != xnestWindowParent(pWin)) {
- XReparentWindow(xnestDisplay, xnestWindow(pWin),
- xnestWindowParent(pWin),
- pWin->origin.x - wBorderWidth(pWin),
- pWin->origin.y - wBorderWidth(pWin));
- xnestWindowPriv(pWin)->parent = xnestWindowParent(pWin);
- xnestWindowPriv(pWin)->x = pWin->origin.x - wBorderWidth(pWin);
- xnestWindowPriv(pWin)->y = pWin->origin.y - wBorderWidth(pWin);
- xnestWindowPriv(pWin)->sibling_above = None;
- if (pWin->nextSib)
- xnestWindowPriv(pWin->nextSib)->sibling_above = xnestWindow(pWin);
- }
-
- valuemask = 0;
-
- if (mask & CWX &&
- xnestWindowPriv(pWin)->x != pWin->origin.x - wBorderWidth(pWin)) {
- valuemask |= CWX;
- values.x =
- xnestWindowPriv(pWin)->x =
- pWin->origin.x - wBorderWidth(pWin);
- }
-
- if (mask & CWY &&
- xnestWindowPriv(pWin)->y != pWin->origin.y - wBorderWidth(pWin)) {
- valuemask |= CWY;
- values.y =
- xnestWindowPriv(pWin)->y =
- pWin->origin.y - wBorderWidth(pWin);
- }
-
- if (mask & CWWidth &&
- xnestWindowPriv(pWin)->width != pWin->drawable.width) {
- valuemask |= CWWidth;
- values.width =
- xnestWindowPriv(pWin)->width =
- pWin->drawable.width;
- }
-
- if (mask & CWHeight &&
- xnestWindowPriv(pWin)->height != pWin->drawable.height) {
- valuemask |= CWHeight;
- values.height =
- xnestWindowPriv(pWin)->height =
- pWin->drawable.height;
- }
-
- if (mask & CWBorderWidth &&
- xnestWindowPriv(pWin)->border_width != pWin->borderWidth) {
- valuemask |= CWBorderWidth;
- values.border_width =
- xnestWindowPriv(pWin)->border_width =
- pWin->borderWidth;
- }
-
- if (valuemask)
- XConfigureWindow(xnestDisplay, xnestWindow(pWin), valuemask, &values);
-
- if (mask & CWStackingOrder &&
- xnestWindowPriv(pWin)->sibling_above != xnestWindowSiblingAbove(pWin)) {
- WindowPtr pSib;
-
- /* find the top sibling */
- for (pSib = pWin; pSib->prevSib != NullWindow; pSib = pSib->prevSib);
-
- /* the top sibling */
- valuemask = CWStackMode;
- values.stack_mode = Above;
- XConfigureWindow(xnestDisplay, xnestWindow(pSib), valuemask, &values);
- xnestWindowPriv(pSib)->sibling_above = None;
-
- /* the rest of siblings */
- for (pSib = pSib->nextSib; pSib != NullWindow; pSib = pSib->nextSib) {
- valuemask = CWSibling | CWStackMode;
- values.sibling = xnestWindowSiblingAbove(pSib);
- values.stack_mode = Below;
- XConfigureWindow(xnestDisplay, xnestWindow(pSib), valuemask, &values);
- xnestWindowPriv(pSib)->sibling_above = xnestWindowSiblingAbove(pSib);
- }
- }
-}
-
-Bool
-xnestChangeWindowAttributes(WindowPtr pWin, unsigned long mask)
-{
- XSetWindowAttributes attributes;
-
- if (mask & CWBackPixmap)
- switch (pWin->backgroundState) {
- case None:
- attributes.background_pixmap = None;
- break;
-
- case ParentRelative:
- attributes.background_pixmap = ParentRelative;
- break;
-
- case BackgroundPixmap:
- attributes.background_pixmap = xnestPixmap(pWin->background.pixmap);
- break;
-
- case BackgroundPixel:
- mask &= ~CWBackPixmap;
- break;
- }
-
- if (mask & CWBackPixel) {
- if (pWin->backgroundState == BackgroundPixel)
- attributes.background_pixel = xnestPixel(pWin->background.pixel);
- else
- mask &= ~CWBackPixel;
- }
-
- if (mask & CWBorderPixmap) {
- if (pWin->borderIsPixel)
- mask &= ~CWBorderPixmap;
- else
- attributes.border_pixmap = xnestPixmap(pWin->border.pixmap);
- }
-
- if (mask & CWBorderPixel) {
- if (pWin->borderIsPixel)
- attributes.border_pixel = xnestPixel(pWin->border.pixel);
- else
- mask &= ~CWBorderPixel;
- }
-
- if (mask & CWBitGravity)
- attributes.bit_gravity = pWin->bitGravity;
-
- if (mask & CWWinGravity) /* dix does this for us */
- mask &= ~CWWinGravity;
-
- if (mask & CWBackingStore) /* this is really not useful */
- mask &= ~CWBackingStore;
-
- if (mask & CWBackingPlanes) /* this is really not useful */
- mask &= ~CWBackingPlanes;
-
- if (mask & CWBackingPixel) /* this is really not useful */
- mask &= ~CWBackingPixel;
-
- if (mask & CWOverrideRedirect)
- attributes.override_redirect = pWin->overrideRedirect;
-
- if (mask & CWSaveUnder) /* this is really not useful */
- mask &= ~CWSaveUnder;
-
- if (mask & CWEventMask) /* events are handled elsewhere */
- mask &= ~CWEventMask;
-
- if (mask & CWDontPropagate) /* events are handled elsewhere */
- mask &= ~CWDontPropagate;
-
- if (mask & CWColormap) {
- ColormapPtr pCmap;
-
- pCmap = (ColormapPtr)LookupIDByType(wColormap(pWin), RT_COLORMAP);
-
- attributes.colormap = xnestColormap(pCmap);
-
- xnestSetInstalledColormapWindows(pWin->drawable.pScreen);
- }
-
- if (mask & CWCursor) /* this is handeled in cursor code */
- mask &= ~CWCursor;
-
- if (mask)
- XChangeWindowAttributes(xnestDisplay, xnestWindow(pWin),
- mask, &attributes);
-
- return True;
-}
-
-Bool
-xnestRealizeWindow(WindowPtr pWin)
-{
- xnestConfigureWindow(pWin, CWStackingOrder);
-#ifdef SHAPE
- xnestShapeWindow(pWin);
-#endif /* SHAPE */
- XMapWindow(xnestDisplay, xnestWindow(pWin));
-
- return True;
-}
-
-Bool
-xnestUnrealizeWindow(WindowPtr pWin)
-{
- XUnmapWindow(xnestDisplay, xnestWindow(pWin));
-
- return True;
-}
-
-void
-xnestPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion, int what)
-{
- int i;
- BoxPtr pBox;
-
- xnestConfigureWindow(pWin, CWWidth | CWHeight);
-
- pBox = REGION_RECTS(pRegion);
- for (i = 0; i < REGION_NUM_RECTS(pRegion); i++)
- XClearArea(xnestDisplay, xnestWindow(pWin),
- pBox[i].x1 - pWin->drawable.x,
- pBox[i].y1 - pWin->drawable.y,
- pBox[i].x2 - pBox[i].x1,
- pBox[i].y2 - pBox[i].y1,
- False);
-}
-
-void
-xnestPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion, int what)
-{
- xnestConfigureWindow(pWin, CWBorderWidth);
-}
-
-void
-xnestCopyWindow(WindowPtr pWin, xPoint oldOrigin, RegionPtr oldRegion)
-{
-}
-
-void
-xnestClipNotify(WindowPtr pWin, int dx, int dy)
-{
- xnestConfigureWindow(pWin, CWStackingOrder);
-#ifdef SHAPE
- xnestShapeWindow(pWin);
-#endif /* SHAPE */
-}
-
-static Bool
-xnestWindowExposurePredicate(Display *display, XEvent *event, XPointer ptr)
-{
- return (event->type == Expose && event->xexpose.window == *(Window *)ptr);
-}
-
-void
-xnestWindowExposures(WindowPtr pWin, RegionPtr pRgn, RegionPtr other_exposed)
-{
- XEvent event;
- Window window;
- BoxRec Box;
-
- XSync(xnestDisplay, False);
-
- window = xnestWindow(pWin);
-
- while (XCheckIfEvent(xnestDisplay, &event,
- xnestWindowExposurePredicate, (char *)&window)) {
-
- Box.x1 = pWin->drawable.x + wBorderWidth(pWin) + event.xexpose.x;
- Box.y1 = pWin->drawable.y + wBorderWidth(pWin) + event.xexpose.y;
- Box.x2 = Box.x1 + event.xexpose.width;
- Box.y2 = Box.y1 + event.xexpose.height;
-
- event.xexpose.type = ProcessedExpose;
-
- if (RECT_IN_REGION(pWin->drawable.pScreen, pRgn, &Box) != rgnIN)
- XPutBackEvent(xnestDisplay, &event);
- }
-
- miWindowExposures(pWin, pRgn, other_exposed);
-}
-
-#ifdef SHAPE
-void
-xnestSetShape(WindowPtr pWin)
-{
- xnestShapeWindow(pWin);
- miSetShape(pWin);
-}
-
-static Bool
-xnestRegionEqual(RegionPtr pReg1, RegionPtr pReg2)
-{
- BoxPtr pBox1, pBox2;
- unsigned int n1, n2;
-
- if (pReg1 == pReg2) return True;
-
- if (pReg1 == NullRegion || pReg2 == NullRegion) return False;
-
- pBox1 = REGION_RECTS(pReg1);
- n1 = REGION_NUM_RECTS(pReg1);
-
- pBox2 = REGION_RECTS(pReg2);
- n2 = REGION_NUM_RECTS(pReg2);
-
- if (n1 != n2) return False;
-
- if (pBox1 == pBox2) return True;
-
- if (memcmp(pBox1, pBox2, n1 * sizeof(BoxRec))) return False;
-
- return True;
-}
-
-void
-xnestShapeWindow(WindowPtr pWin)
-{
- Region reg;
- BoxPtr pBox;
- XRectangle rect;
- int i;
-
- if (!xnestRegionEqual(xnestWindowPriv(pWin)->bounding_shape,
- wBoundingShape(pWin))) {
-
- if (wBoundingShape(pWin)) {
- REGION_COPY(pWin->drawable.pScreen,
- xnestWindowPriv(pWin)->bounding_shape, wBoundingShape(pWin));
-
- reg = XCreateRegion();
- pBox = REGION_RECTS(xnestWindowPriv(pWin)->bounding_shape);
- for (i = 0;
- i < REGION_NUM_RECTS(xnestWindowPriv(pWin)->bounding_shape);
- i++) {
- rect.x = pBox[i].x1;
- rect.y = pBox[i].y1;
- rect.width = pBox[i].x2 - pBox[i].x1;
- rect.height = pBox[i].y2 - pBox[i].y1;
- XUnionRectWithRegion(&rect, reg, reg);
- }
- XShapeCombineRegion(xnestDisplay, xnestWindow(pWin),
- ShapeBounding, 0, 0, reg, ShapeSet);
- XDestroyRegion(reg);
- }
- else {
- REGION_EMPTY(pWin->drawable.pScreen,
- xnestWindowPriv(pWin)->bounding_shape);
-
- XShapeCombineMask(xnestDisplay, xnestWindow(pWin),
- ShapeBounding, 0, 0, None, ShapeSet);
- }
- }
-
- if (!xnestRegionEqual(xnestWindowPriv(pWin)->clip_shape,
- wClipShape(pWin))) {
-
- if (wClipShape(pWin)) {
- REGION_COPY(pWin->drawable.pScreen,
- xnestWindowPriv(pWin)->clip_shape, wClipShape(pWin));
-
- reg = XCreateRegion();
- pBox = REGION_RECTS(xnestWindowPriv(pWin)->clip_shape);
- for (i = 0;
- i < REGION_NUM_RECTS(xnestWindowPriv(pWin)->clip_shape);
- i++) {
- rect.x = pBox[i].x1;
- rect.y = pBox[i].y1;
- rect.width = pBox[i].x2 - pBox[i].x1;
- rect.height = pBox[i].y2 - pBox[i].y1;
- XUnionRectWithRegion(&rect, reg, reg);
- }
- XShapeCombineRegion(xnestDisplay, xnestWindow(pWin),
- ShapeClip, 0, 0, reg, ShapeSet);
- XDestroyRegion(reg);
- }
- else {
- REGION_EMPTY(pWin->drawable.pScreen,
- xnestWindowPriv(pWin)->clip_shape);
-
- XShapeCombineMask(xnestDisplay, xnestWindow(pWin),
- ShapeClip, 0, 0, None, ShapeSet);
- }
- }
-}
-#endif /* SHAPE */
diff --git a/nx-X11/programs/Xserver/hw/xnest/XNCursor.h b/nx-X11/programs/Xserver/hw/xnest/XNCursor.h
deleted file mode 100644
index 8684a5e7f..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/XNCursor.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* $Xorg: Cursor.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/XNCursor.h,v 1.2 2002/11/23 19:27:50 tsi Exp $ */
-
-#ifndef XNESTCURSOR_H
-#define XNESTCURSOR_H
-
-typedef struct {
- Cursor cursor;
-} xnestPrivCursor;
-
-#define xnestCursorPriv(pCursor, pScreen) \
- ((xnestPrivCursor *)((pCursor)->devPriv[pScreen->myNum]))
-
-#define xnestCursor(pCursor, pScreen) \
- (xnestCursorPriv(pCursor, pScreen)->cursor)
-
-Bool xnestRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor);
-Bool xnestUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor);
-void xnestSetCursor (ScreenPtr pScreen, CursorPtr pCursor, int x, int y);
-void xnestMoveCursor (ScreenPtr pScreen, int x, int y);
-
-#endif /* XNESTCURSOR_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/XNFont.h b/nx-X11/programs/Xserver/hw/xnest/XNFont.h
deleted file mode 100644
index 7fb4017bd..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/XNFont.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* $Xorg: XNFont.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-
-#ifndef XNESTFONT_H
-#define XNESTFONT_H
-
-typedef struct {
- XFontStruct *font_struct;
-} xnestPrivFont;
-
-extern int xnestFontPrivateIndex;
-
-#define xnestFontPriv(pFont) \
- ((xnestPrivFont *)FontGetPrivate(pFont, xnestFontPrivateIndex))
-
-#define xnestFontStruct(pFont) (xnestFontPriv(pFont)->font_struct)
-
-#define xnestFont(pFont) (xnestFontStruct(pFont)->fid)
-
-Bool xnestRealizeFont(ScreenPtr pScreen, FontPtr pFont);
-Bool xnestUnrealizeFont(ScreenPtr pScreen, FontPtr pFont);
-
-#endif /* XNESTFONT_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/XNGC.h b/nx-X11/programs/Xserver/hw/xnest/XNGC.h
deleted file mode 100644
index 56939cceb..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/XNGC.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* $Xorg: XNGC.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86$ */
-
-#ifndef XNESTGC_H
-#define XNESTGC_H
-
-/* This file uses the GC definition form Xlib.h as XlibGC. */
-
-typedef struct {
- XlibGC gc;
- int nClipRects;
-} xnestPrivGC;
-
-extern int xnestGCPrivateIndex;
-
-#define xnestGCPriv(pGC) \
- ((xnestPrivGC *)((pGC)->devPrivates[xnestGCPrivateIndex].ptr))
-
-#define xnestGC(pGC) (xnestGCPriv(pGC)->gc)
-
-Bool xnestCreateGC(GCPtr pGC);
-void xnestValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable);
-void xnestChangeGC(GCPtr pGC, unsigned long mask);
-void xnestCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst);
-void xnestDestroyGC(GCPtr pGC);
-void xnestChangeClip(GCPtr pGC, int type, pointer pValue, int nRects);
-void xnestDestroyClip(GCPtr pGC);
-void xnestDestroyClipHelper(GCPtr pGC);
-void xnestCopyClip(GCPtr pGCDst, GCPtr pGCSrc);
-
-#endif /* XNESTGC_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/XNPixmap.h b/nx-X11/programs/Xserver/hw/xnest/XNPixmap.h
deleted file mode 100644
index fab1843d1..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/XNPixmap.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* $Xorg: Pixmap.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/XNPixmap.h,v 1.3 2003/01/10 13:29:40 eich Exp $ */
-
-#ifndef XNESTPIXMAP_H
-#define XNESTPIXMAP_H
-
-#ifdef PIXPRIV
-extern int xnestPixmapPrivateIndex;
-#endif
-
-typedef struct {
- Pixmap pixmap;
-} xnestPrivPixmap;
-
-#ifdef PIXPRIV
-#define xnestPixmapPriv(pPixmap) \
- ((xnestPrivPixmap *)((pPixmap)->devPrivates[xnestPixmapPrivateIndex].ptr))
-#else
-#define xnestPixmapPriv(pPixmap) \
- ((xnestPrivPixmap *)((pPixmap)->devPrivate.ptr))
-#endif
-
-#define xnestPixmap(pPixmap) (xnestPixmapPriv(pPixmap)->pixmap)
-
-#define xnestSharePixmap(pPixmap) ((pPixmap)->refcnt++)
-
-PixmapPtr xnestCreatePixmap(ScreenPtr pScreen, int width, int height,
- int depth);
-Bool xnestDestroyPixmap(PixmapPtr pPixmap);
-RegionPtr xnestPixmapToRegion(PixmapPtr pPixmap);
-
-#endif /* XNESTPIXMAP_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/XNWindow.h b/nx-X11/programs/Xserver/hw/xnest/XNWindow.h
deleted file mode 100644
index 3a57646a7..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/XNWindow.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* $Xorg: XNWindow.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xnest/XNWindow.h,v 1.3 2003/11/03 05:36:34 tsi Exp $ */
-
-#ifndef XNESTWINDOW_H
-#define XNESTWINDOW_H
-
-typedef struct {
- Window window;
- Window parent;
- int x;
- int y;
- unsigned int width;
- unsigned int height;
- unsigned int border_width;
- Window sibling_above;
-#ifdef SHAPE
- RegionPtr bounding_shape;
- RegionPtr clip_shape;
-#endif /* SHAPE */
-} xnestPrivWin;
-
-typedef struct {
- WindowPtr pWin;
- Window window;
-} xnestWindowMatch;
-
-extern int xnestWindowPrivateIndex;
-
-#define xnestWindowPriv(pWin) \
- ((xnestPrivWin *)((pWin)->devPrivates[xnestWindowPrivateIndex].ptr))
-
-#define xnestWindow(pWin) (xnestWindowPriv(pWin)->window)
-
-#define xnestWindowParent(pWin) \
- ((pWin)->parent ? \
- xnestWindow((pWin)->parent) : \
- xnestDefaultWindows[pWin->drawable.pScreen->myNum])
-
-#define xnestWindowSiblingAbove(pWin) \
- ((pWin)->prevSib ? xnestWindow((pWin)->prevSib) : None)
-
-#define xnestWindowSiblingBelow(pWin) \
- ((pWin)->nextSib ? xnestWindow((pWin)->nextSib) : None)
-
-#define CWParent CWSibling
-#define CWStackingOrder CWStackMode
-
-WindowPtr xnestWindowPtr(Window window);
-Bool xnestCreateWindow(WindowPtr pWin);
-Bool xnestDestroyWindow(WindowPtr pWin);
-Bool xnestPositionWindow(WindowPtr pWin, int x, int y);
-void xnestConfigureWindow(WindowPtr pWin, unsigned int mask);
-Bool xnestChangeWindowAttributes(WindowPtr pWin, unsigned long mask);
-Bool xnestRealizeWindow(WindowPtr pWin);
-Bool xnestUnrealizeWindow(WindowPtr pWin);
-void xnestPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion, int what);
-void xnestPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion, int what);
-void xnestCopyWindow(WindowPtr pWin, xPoint oldOrigin, RegionPtr oldRegion);
-void xnestClipNotify(WindowPtr pWin, int dx, int dy);
-void xnestWindowExposures(WindowPtr pWin, RegionPtr pRgn,
- RegionPtr other_exposed);
-#ifdef SHAPE
-void xnestSetShape(WindowPtr pWin);
-void xnestShapeWindow(WindowPtr pWin);
-#endif /* SHAPE */
-
-#endif /* XNESTWINDOW_H */
diff --git a/nx-X11/programs/Xserver/hw/xnest/Xnest.h b/nx-X11/programs/Xserver/hw/xnest/Xnest.h
deleted file mode 100644
index ade73833f..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Xnest.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* $Xorg: Xnest.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/*
-
-Copyright (c) 1995 X Consortium
-
-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 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 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 X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-*/
-/* $XFree86$ */
-
-/*
-** Machines with a 64 bit library interface and a 32 bit server require
-** name changes to protect the guilty.
-*/
-#ifdef _XSERVER64
-#define _XSERVER64_tmp
-#undef _XSERVER64
-typedef unsigned long XID64;
-typedef unsigned long Mask64;
-typedef unsigned long Atom64;
-typedef unsigned long VisualID64;
-typedef unsigned long Time64;
-#define XID XID64
-#define Mask Mask64
-#define Atom Atom64
-#define VisualID VisualID64
-#define Time Time64
-typedef XID Window64;
-typedef XID Drawable64;
-typedef XID Font64;
-typedef XID Pixmap64;
-typedef XID Cursor64;
-typedef XID Colormap64;
-typedef XID GContext64;
-typedef XID KeySym64;
-#define Window Window64
-#define Drawable Drawable64
-#define Font Font64
-#define Pixmap Pixmap64
-#define Cursor Cursor64
-#define Colormap Colormap64
-#define GContext GContext64
-#define KeySym KeySym64
-#endif /*_XSERVER64*/
-
-#define GC XlibGC
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/extensions/shape.h>
-#undef GC
-
-#ifdef _XSERVER64_tmp
-#define _XSERVER64
-#undef _XSERVER64_tmp
-#undef XID
-#undef Mask
-#undef Atom
-#undef VisualID
-#undef Time
-#undef Window
-#undef Drawable
-#undef Font
-#undef Pixmap
-#undef Cursor
-#undef Colormap
-#undef GContext
-#undef KeySym
-#endif /*_XSERVER64_tmp*/
-
-
-
-
-
-
diff --git a/nx-X11/programs/Xserver/hw/xnest/Xnest.man b/nx-X11/programs/Xserver/hw/xnest/Xnest.man
deleted file mode 100644
index 131c224f2..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/Xnest.man
+++ /dev/null
@@ -1,264 +0,0 @@
-.\" $Xorg: Xnest.man,v 1.3 2000/08/17 19:53:28 cpqbld Exp $
-.\" Copyright (c) 1993, 1994 X Consortium
-.\"
-.\" 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 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 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 X CONSORTIUM 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 X Consortium 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 X Consortium.
-.\"
-.\" $XFree86: xc/programs/Xserver/hw/xnest/Xnest.man,v 1.6 2001/01/27 18:21:00 dawes Exp $
-.\"
-.TH XNEST 1 __xorgversion__
-.SH NAME
-Xnest \- a nested X server
-.SH SYNOPSIS
-.B Xnest
-[-options]
-.SH DESCRIPTION
-\fIXnest\fP is a client and a server. \fIXnest\fP is a client of the
-real server which manages windows and graphics requests on its behalf.
-\fIXnest\fP is a server to its own clients. \fIXnest\fP manages
-windows and graphics requests on their behalf. To these clients
-\fIXnest\fP appears to be a conventional server.
-.SH OPTIONS
-\fIXnest\fP supports all standard options of the sample server
-implementation. For more details, please see the manual page on your
-system for \fIXserver\fP. The following additional arguments are
-supported as well.
-.TP 4
-.B \-display \fIstring\fP
-This option specifies the display name of the real server that
-\fIXnest\fP should try to connect with. If it is not provided on the
-command line \fIXnest\fP will read the \fIDISPLAY\fP environment
-variable in order to find out the same information.
-.TP 4
-.B \-sync
-This option tells \fIXnest\fP to synchronize its window and graphics
-operations with the real server. This is a useful option for
-debugging, but it will slow down the performance considerably. It
-should not be used unless absolutely necessary.
-.TP 4
-.B \-full
-This option tells \fIXnest\fP to utilize full regeneration of real
-server objects and reopen a new connection to the real server each
-time the nested server regenerates. The sample server implementation
-regenerates all objects in the server when the last client of this
-server terminates. When this happens, \fIXnest\fP by default
-maintains the same top level window and the same real server
-connection in each new generation. If the user selects full
-regeneration, even the top level window and the connection to the real
-server will be regenerated for each server generation.
-.TP 4
-.B \-class \fIstring\fP
-This option specifies the default visual class of the nested server.
-It is similar to the \fI-cc\fP option from the set of standard options
-except that it will accept a string rather than a number for the
-visual class specification. The string must be one of the following
-six values: \fIStaticGray\fP, \fIGrayScale\fP, \fIStaticColor\fP,
-\fIPseudoColor\fP, \fITrueColor\fP, or \fIDirectColor\fP. If both,
-\fI-class\fP and \fI-cc\fP options are specified, the last instance of
-either option assumes precedence. The class of the default visual of
-the nested server need not be the same as the class of the default
-visual of the real server; although, it has to be supported by the
-real server. See \fIxdpyinfo\fP for a list of supported visual
-classes on the real server before starting \fIXnest\fP. If the user
-chooses a static class, all the colors in the default colormap will be
-preallocated. If the user chooses a dynamic class, colors in the
-default colormap will be available to individual clients for
-allocation.
-.TP 4
-.B \-depth \fIint\fP
-This option specifies the default visual depth of the nested server.
-The depth of the default visual of the nested server need not be the
-same as the depth of the default visual of the real server; although,
-it has to be supported by the real server. See \fIxdpyinfo\fP for a
-list of supported visual depths on the real server before starting
-\fIXnest\fP.
-.TP 4
-.B \-sss
-This option tells \fIXnest\fP to use the software screen saver. By
-default \fIXnest\fP will use the screen saver that corresponds to the
-hardware screen saver in the real server. Of course, even this screen
-saver is software generated since \fIXnest\fP does not control any
-actual hardware. However, it is treated as a hardware screen saver
-within the sample server code.
-.TP 4
-.B \-geometry \fIWxH+X+Y\fP
-This option specifies geometry parameters for the top level
-\fIXnest\fP windows. These windows corresponds to the root windows of
-the nested server. The width and height specified with this option
-will be the maximum width and height of each top level \fIXnest\fP
-window. \fIXnest\fP will allow the user to make any top level window
-smaller, but it will not actually change the size of the nested server
-root window. As of yet, there is no mechanism within the sample
-server implementation to change the size of the root window after
-screen initialization. In order to do so, one would probably need to
-extend the X protocol. Therefore, it is not likely that this will be
-available any time soon. If this option is not specified \fIXnest\fP
-will choose width and height to be 3/4 of the dimensions of the root
-window of the real server.
-.TP 4
-.B \-bw \fIint\fP
-This option specifies the border width of the top level \fIXnest\fP
-window. The integer parameter must be a positive number. The default
-border width is 1.
-.TP 4
-.B \-name \fIstring\fP
-This option specifies the name of the top level \fIXnest\fP window.
-The default value is the program name.
-.TP 4
-.B \-scrns \fIint\fP
-This option specifies the number of screens to create in the nested
-server. For each screen, \fIXnest\fP will create a separate top level
-window. Each screen is referenced by the number after the dot in the
-client display name specification. For example, \fIxterm -display
-:1.1\fP will open an \fIxterm\fP client in the nested server with the
-display number \fI:1\fP on the second screen. The number of screens
-is limited by the hard coded constant in the server sample code which
-is usually 3.
-.TP 4
-.B \-install
-This option tells \fIXnest\fP to do its own colormap installation by
-bypassing the real window manager. For it to work properly the user
-will probably have to temporarily quit the real window manager. By
-default \fIXnest\fP will keep the nested client window whose colormap
-should be installed in the real server in the
-\fIWM\_COLORMAP\_WINDOWS\fP property of the top level \fIXnest\fP
-window. If this colormap is of the same visual type as the root
-window of the nested server, \fIXnest\fP will associate this colormap
-with the top level \fIXnest\fP window as well. Since this does not
-have to be the case, window managers should look primarily at the
-\fIWM\_COLORMAP\_WINDOWS\fP property rather than the colormap
-associated with the top level \fIXnest\fP window. Unfortunately,
-window managers are not very good at doing that yet so this option
-might come in handy.
-.TP 4
-.B \-parent \fIwindow_id\fP
-This option tells \fIXnest\fP to use the \fIwindow_id\fP as the
-root window instead of creating a window. This option is used
-by the xrx xnestplugin.
-.SH USAGE
-Starting up \fIXnest\fP is as simple as starting up \fIxclock\fP from
-a terminal emulator. If a user wishes to run \fIXnest\fP on the same
-workstation as the real server, it is important that the nested server
-is given its own listening socket address. Therefore, if there is a
-server already running on the user's workstation, \fIXnest\fP will
-have to be started up with a new display number. Since there is
-usually no more than one server running on a workstation, specifying
-\fIXnest :1\fP on the command line will be sufficient for most users.
-For each server running on the workstation the display number needs to
-be incremented by one. Thus, if you wish to start another
-\fIXnest\fP, you will need to type \fIXnest :2\fP on the command line.
-.PP
-To run clients in the nested server each client needs to be given the
-same display number as the nested server. For example, \fIxterm
--display :1\fP will start up an \fIxterm\fP in the first nested server
-and \fIxterm -display :2\fP will start an \fIxterm\fP in the second
-nested server from the example above. Additional clients can be
-started from these \fIxterm\fPs in each nested server.
-.SH XNEST AS A CLIENT
-\fIXnest\fP behaves and looks to the real server and other real
-clients as another real client. It is a rather demanding client,
-however, since almost any window or graphics request from a nested
-client will result in a window or graphics request from \fIXnest\fP to
-the real server. Therefore, it is desirable that \fIXnest\fP and the
-real server are on a local network, or even better, on the same
-machine. As of now, \fIXnest\fP assumes that the real server supports
-the shape extension. There is no way to turn off this assumption
-dynamically. \fIXnest\fP can be compiled without the shape extension
-built in, and in that case the real server need not support it. The
-dynamic shape extension selection support should be considered in
-further development of \fIXnest\fP.
-.PP
-Since \fIXnest\fP need not use the same default visual as the the real
-server, the top level window of the \fIXnest\fP client always has its
-own colormap. This implies that other windows' colors will not be
-displayed properly while the keyboard or pointer focus is in the
-\fIXnest\fP window, unless the real server has support for more than
-one installed colormap at any time. The colormap associated with the
-top window of the \fIXnest\fP client need not be the appropriate
-colormap that the nested server wants installed in the real server.
-In the case that a nested client attempts to install a colormap of a
-different visual from the default visual of the nested server,
-\fIXnest\fP will put the top window of this nested client and all
-other top windows of the nested clients that use the same colormap
-into the \fIWM\_COLORMAP\_WINDOWS\fP property of the top level
-\fIXnest\fP window on the real server. Thus, it is important that the
-real window manager that manages the \fIXnest\fP top level window
-looks at the \fIWM\_COLORMAP\_WINDOWS\fP property rather than the
-colormap associated with the top level \fIXnest\fP window. Since most
-window managers appear to not implement this convention properly as of
-yet, \fIXnest\fP can optionally do direct installation of colormaps
-into the real server bypassing the real window manager. If the user
-chooses this option, it is usually necessary to temporarily disable
-the real window manager since it will interfere with the \fIXnest\fP
-scheme of colormap installation.
-.PP
-Keyboard and pointer control procedures of the nested server change
-the keyboard and pointer control parameters of the real server.
-Therefore, after \fIXnest\fP is started up, it will change the
-keyboard and pointer controls of the real server to its own internal
-defaults. Perhaps there should be a command line option to tell
-\fIXnest\fP to inherit the keyboard and pointer control parameters
-from the real server rather than imposing its own. This is a future
-consideration.
-.SH XNEST AS A SERVER
-\fIXnest\fP as a server looks exactly like a real server to its own
-clients. For the clients there is no way of telling if they are
-running on a real or a nested server.
-.PP
-As already mentioned, \fIXnest\fP is a very user friendly server when
-it comes to customization. \fIXnest\fP will pick up a number of
-command line arguments that can configure its default visual class and
-depth, number of screens, etc. In the future, \fIXnest\fP should read
-a customization input file to provide even greater freedom and
-simplicity in selecting the desired layout. Unfortunately, there is
-no support for backing store and save under as of yet, but this should
-also be considered in the future development of \fIXnest\fP.
-.PP
-The only apparent intricacy from the users' perspective about using
-\fIXnest\fP as a server is the selection of fonts. \fIXnest\fP
-manages fonts by loading them locally and then passing the font name
-to the real server and asking it to load that font remotely. This
-approach avoids the overload of sending the glyph bits across the
-network for every text operation, although it is really a bug. The
-proper implementation of fonts should be moved into the \fIos\fP
-layer. The consequence of this approach is that the user will have to
-worry about two different font paths - a local one for the nested
-server and a remote one for the real server - since \fIXnest\fP does
-not propagate its font path to the real server. The reason for this
-is because real and nested servers need not run on the same file
-system which makes the two font paths mutually incompatible. Thus, if
-there is a font in the local font path of the nested server, there is
-no guarantee that this font exists in the remote font path of the real
-server. \fIXlsfonts\fP client, if run on the nested server will list
-fonts in the local font path and if run on the real server will list
-fonts in the remote font path. Before a font can be successfully
-opened by the nested server it has to exist in local and remote font
-paths. It is the users' responsibility to make sure that this is the
-case.
-.SH BUGS
-Won't run well on servers supporting different visual depths.
-Still crashes randomly. Probably has some memory leaks.
-.SH AUTHOR
-Davor Matic, MIT X Consortium
-
diff --git a/nx-X11/programs/Xserver/hw/xnest/icon b/nx-X11/programs/Xserver/hw/xnest/icon
deleted file mode 100644
index 725f1131a..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/icon
+++ /dev/null
@@ -1,14 +0,0 @@
-#define icon_width 32
-#define icon_height 32
-static unsigned char icon_bits[] = {
- 0xff, 0x00, 0x00, 0xc0, 0xfe, 0x01, 0x00, 0xc0, 0xfc, 0x03, 0x00, 0x60,
- 0xf8, 0x07, 0x00, 0x30, 0xf8, 0x07, 0x00, 0x18, 0xf0, 0x0f, 0x00, 0x0c,
- 0xe0, 0x1f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x03,
- 0x80, 0x7f, 0x80, 0x01, 0x00, 0xff, 0xc0, 0x00, 0x00, 0xfe, 0x61, 0x00,
- 0x00, 0xfe, 0x31, 0x00, 0x00, 0xfc, 0x33, 0x00, 0x00, 0xf8, 0x1b, 0x00,
- 0x00, 0xf0, 0x0d, 0x00, 0x00, 0xf0, 0x0e, 0x00, 0x00, 0x60, 0x1f, 0x00,
- 0x00, 0xb0, 0x3f, 0x00, 0x00, 0x98, 0x7f, 0x00, 0x00, 0x98, 0x7f, 0x00,
- 0x00, 0x0c, 0xff, 0x00, 0x00, 0x06, 0xfe, 0x01, 0x00, 0x03, 0xfc, 0x03,
- 0x80, 0x01, 0xfc, 0x03, 0xc0, 0x00, 0xf8, 0x07, 0xc0, 0x00, 0xf0, 0x0f,
- 0x60, 0x00, 0xe0, 0x1f, 0x30, 0x00, 0xe0, 0x1f, 0x18, 0x00, 0xc0, 0x3f,
- 0x0c, 0x00, 0x80, 0x7f, 0x06, 0x00, 0x00, 0xff};
diff --git a/nx-X11/programs/Xserver/hw/xnest/os2Stub.c b/nx-X11/programs/Xserver/hw/xnest/os2Stub.c
deleted file mode 100644
index 0868b4480..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/os2Stub.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
- * (c) Copyright 1996 by Sebastien Marineau
- * <marineau@genie.uottawa.ca>
- *
- * 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
- * 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 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
- * HOLGER VEIT 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 Sebastien Marineau shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Sebastien Marineau.
- *
- */
-
-/* $XFree86: xc/programs/Xserver/hw/xnest/os2Stub.c,v 3.1 2002/05/31 18:46:04 dawes Exp $ */
-
-/* This below implements select() for calls in xnest. It has been */
-/* somewhat optimized for improved performance, but assumes a few */
-/* things so it cannot be used as a general select. */
-
-#define I_NEED_OS2_H
-#include <X11/Xpoll.h>
-#include <stdio.h>
-#include <sys/select.h>
-#include <sys/errno.h>
-#include <sys/time.h>
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSNPIPES
-#define INCL_DOSMISC
-#define INCL_DOSMODULEMGR
-#undef BOOL
-#undef BYTE
-#include <os2.h>
-
-HEV hPipeSem;
-HMODULE hmod_so32dll;
-static int (*os2_tcp_select)(int*,int,int,int,long);
-ULONG os2_get_sys_millis();
-extern int _files[];
-
-#define MAX_TCP 256
-/* These lifted from sys/emx.h. Change if that changes there! */
-#define F_SOCKET 0x10000000
-#define F_PIPE 0x20000000
-
-struct select_data
-{
- fd_set read_copy;
- fd_set write_copy;
- BOOL have_read;
- BOOL have_write;
- int tcp_select_mask[MAX_TCP];
- int tcp_emx_handles[MAX_TCP];
- int tcp_select_copy[MAX_TCP];
- int socket_nread;
- int socket_nwrite;
- int socket_ntotal;
- int pipe_ntotal;
- int pipe_have_write;
- int max_fds;
-};
-
-int os2PseudoSelect(int nfds, fd_set *readfds, fd_set *writefds,
- fd_set *exceptfds, struct timeval *timeout)
-{
-static BOOL FirstTime=TRUE;
-static haveTCPIP=TRUE;
-ULONG timeout_ms;
-ULONG postCount, start_millis,now_millis;
-char faildata[16];
-struct select_data sd;
-BOOL any_ready;
-int np,ns, i,ready_handles,n;
-APIRET rc;
-
-sd.have_read=FALSE; sd.have_write=FALSE;
-sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0;
-sd.max_fds=31; ready_handles=0; any_ready=FALSE;
-sd.pipe_ntotal=0; sd.pipe_have_write=FALSE;
-
-if(FirstTime){
- /* First load the so32dll.dll module and get a pointer to the SELECT function */
-
- if((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0){
- fprintf(stderr, "Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata);
- haveTCPIP=FALSE;
- }
- if((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0){
- fprintf(stderr, "Could not query address of SELECT, rc = %d.\n",rc);
- haveTCPIP=FALSE;
- }
- /* Call these a first time to set the semaphore */
- /* rc = DosCreateEventSem(NULL, &hPipeSem, DC_SEM_SHARED, FALSE);
- if(rc) {
- fprintf(stderr, "Could not create event semaphore, rc=%d\n",rc);
- return(-1);
- }
- rc = DosResetEventSem(hPipeSem, &postCount); */ /* Done in xtrans code for servers*/
-
- /*fprintf(stderr, "Client select() done first-time stuff, sem handle %d.\n",hPipeSem);*/
-
- FirstTime = FALSE;
-}
-
-/* Set up the time delay structs */
-
- if(timeout!=NULL) {
- timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000;
- }
- else { timeout_ms=1000000; } /* This should be large enough... */
- if(timeout_ms>0) start_millis=os2_get_sys_millis();
-
-/* Copy the masks */
- {FD_ZERO(&sd.read_copy);}
- {FD_ZERO(&sd.write_copy);}
- if(readfds!=NULL){ XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE;}
- if(writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy);sd.have_write=TRUE;}
-
-/* And zero the original masks */
- if(sd.have_read){ FD_ZERO(readfds);}
- if(sd.have_write) {FD_ZERO(writefds);}
- if(exceptfds != NULL) {FD_ZERO(exceptfds);}
-
-/* Now we parse the fd_sets passed to select and separate pipe/sockets */
- n = os2_parse_select(&sd,nfds);
- if(n == -1) {
- errno = EBADF;
- return (-1);
- }
-
-/* Now we have three cases: either we have sockets, pipes, or both */
-/* We handle all three cases differently to optimize things */
-
-/* Case 1: only pipes! */
- if((sd.pipe_ntotal >0) && (!sd.socket_ntotal)){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- return (np);
- }
- else if (np == -1) { return(-1); }
- while(!any_ready){
- rc = DosWaitEventSem(hPipeSem, 1L);
- /* if(rc) fprintf(stderr,"Sem-wait timeout, rc = %d\n",rc); */
- if(rc == 640) {
- return(0);
- }
- if((rc != 0) && (rc != 95)) {errno= EBADF; return(-1);}
- np = os2_check_pipes(&sd,readfds,writefds);
- if (np > 0){
- return(np);
- }
- else if (np < 0){ return(-1); }
- }
- }
-
-/* Case 2: only sockets. Just let the os/2 tcp select do the work */
- if((sd.socket_ntotal > 0) && (!sd.pipe_ntotal)){
- ns = os2_check_sockets(&sd, readfds, writefds, timeout_ms);
- return (ns);
- }
-
-/* Case 3: combination of both */
- if((sd.socket_ntotal > 0) && (sd.pipe_ntotal)){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- any_ready=TRUE;
- ready_handles += np;
- }
- else if (np == -1) { return(-1); }
-
- ns = os2_check_sockets(&sd,readfds,writefds, 0);
- if(ns>0){
- ready_handles+=ns;
- any_ready = TRUE;
- }
- else if (ns == -1) {return(-1);}
-
- while (!any_ready && timeout_ms){
-
- rc = DosWaitEventSem(hPipeSem, 1L);
- if (rc==640) return(0);
- if(rc == 0){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- ready_handles+=np;
- any_ready = TRUE;
- }
- else if (np == -1) {
- return(-1); }
- }
-
- ns = os2_check_sockets(&sd,readfds,writefds,exceptfds, 0);
- if(ns>0){
- ready_handles+=ns;
- any_ready = TRUE;
- }
- else if (ns == -1) {return(-1);}
-
- if (i%8 == 0) {
- now_millis = os2_get_sys_millis();
- if((now_millis-start_millis) > timeout_ms) timeout_ms = 0;
- }
- i++;
- }
- }
-
-return(ready_handles);
-}
-
-
-ULONG os2_get_sys_millis()
-{
- APIRET rc;
- ULONG milli;
-
- rc = DosQuerySysInfo(14, 14, &milli, sizeof(milli));
- if(rc) {
- fprintf(stderr,"Bad return code querying the millisecond counter! rc=%d\n",rc);
- return(0);
- }
- return(milli);
-}
-
-int os2_parse_select(sd,nfds)
-struct select_data *sd;
-int nfds;
-{
- int i;
- APIRET rc;
-/* First we determine up to which descriptor we need to check. */
-/* No need to check up to 256 if we don't have to (and usually we dont...)*/
-/* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX! */
-
- if(nfds > sd->max_fds){
- for(i=0;i<((FD_SETSIZE+31)/32);i++){
- if(sd->read_copy.fds_bits[i] ||
- sd->write_copy.fds_bits[i])
- sd->max_fds=(i*32) +32;
- }
- }
- else { sd->max_fds = nfds; }
-/* Check if result is greater than specified in select() call */
- if(sd->max_fds > nfds) sd->max_fds = nfds;
-
- if (sd->have_read)
- {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->read_copy)){
- if(_files[i] & F_SOCKET)
- {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nread++;
- }
- else if (_files[i] & F_PIPE)
- {
- sd -> pipe_ntotal++;
- /* rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
- if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;} */
- }
- }
- }
- }
-
- if (sd->have_write)
- {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->write_copy)){
- if(_files[i] & F_SOCKET)
- {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nwrite++;
- }
- else if (_files[i] & F_PIPE)
- {
- sd -> pipe_ntotal++;
- /* rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
- if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;} */
- sd -> pipe_have_write=TRUE;
- }
- }
- }
- }
-
-
-return(sd->socket_ntotal);
-}
-
-
-int os2_check_sockets(sd,readfds,writefds)
-struct select_data *sd;
-fd_set *readfds,*writefds;
-{
- int e,i;
- int j,n;
- memcpy(sd->tcp_select_copy,sd->tcp_select_mask,
- sd->socket_ntotal*sizeof(int));
-
- e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread,
- sd->socket_nwrite, 0, 0);
-
- if(e == 0) return(e);
-/* We have something ready? */
- if(e>0){
- j = 0; n = 0;
- for (i = 0; i < sd->socket_nread; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1)
- {
- FD_SET (sd->tcp_emx_handles[j], readfds);
- n ++;
- }
- for (i = 0; i < sd->socket_nwrite; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1)
- {
- FD_SET (sd->tcp_emx_handles[j], writefds);
- n ++;
- }
- errno = 0;
-
- return n;
- }
- if(e<0){
- /*Error -- TODO. EBADF is a good choice for now. */
- fprintf(stderr,"Error in server select! e=%d\n",e);
- errno = EBADF;
- return (-1);
- }
- }
-
-/* Check to see if anything is ready on pipes */
-
-int os2_check_pipes(sd,readfds,writefds)
-struct select_data *sd;
-fd_set *readfds,*writefds;
-{
-int i,e;
-ULONG ulPostCount;
-PIPESEMSTATE pipeSemState[128];
-APIRET rc;
- e = 0;
- rc = DosResetEventSem(hPipeSem,&ulPostCount);
- rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState,
- sizeof(pipeSemState));
- if(rc) fprintf(stderr,"SELECT: rc from QueryNPipeSem: %d\n",rc);
- i=0;
- while (pipeSemState[i].fStatus != 0) {
- /*fprintf(stderr,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n",
- pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey,
- pipeSemState[i].usAvail); */
- if((pipeSemState[i].fStatus == 1) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))){
- FD_SET(pipeSemState[i].usKey,readfds);
- e++;
- }
- else if((pipeSemState[i].fStatus == 2) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))){
- FD_SET(pipeSemState[i].usKey,writefds);
- e++;
- }
- else if( (pipeSemState[i].fStatus == 3) &&
- ( (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) ||
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )){
- errno = EBADF;
- /* fprintf(stderr,"Pipe has closed down, fd=%d\n",pipeSemState[i].usKey); */
- return (-1);
- }
- i++;
- } /* endwhile */
- /*fprintf(stderr,"Done listing pipe sem entries, total %d entries, total ready entries %d\n",i,e);*/
-errno = 0;
-return(e);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xnest/screensaver b/nx-X11/programs/Xserver/hw/xnest/screensaver
deleted file mode 100644
index 4940f2650..000000000
--- a/nx-X11/programs/Xserver/hw/xnest/screensaver
+++ /dev/null
@@ -1,686 +0,0 @@
-#define screensaver_width 256
-#define screensaver_height 256
-static unsigned char screensaver_bits[] = {
- 0xa8, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
- 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x40, 0x55,
- 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x55, 0x05, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00,
- 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0xa0,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x15, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
- 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0xaa,
- 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0xa0,
- 0xaa, 0x0a, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x50,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0x2a, 0x80, 0x02, 0x80, 0xaa, 0xaa, 0x82, 0x0a, 0xa8, 0x28, 0x80,
- 0x8a, 0x80, 0x2a, 0x80, 0x80, 0x8a, 0xa2, 0x82, 0x0a, 0xaa, 0x0a, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x80, 0x82, 0x41, 0x40, 0x00, 0x50,
- 0x55, 0x41, 0x00, 0x00, 0x04, 0x00, 0x54, 0x40, 0x10, 0x00, 0x40, 0x00,
- 0x51, 0x55, 0x00, 0x15, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x41, 0x00, 0x10, 0x14, 0x00, 0x00, 0x00, 0xa8, 0x8a, 0x02, 0x00, 0x02,
- 0x00, 0x20, 0xa2, 0x00, 0x80, 0x00, 0x08, 0x00, 0xaa, 0x2a, 0x00, 0x2a,
- 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80,
- 0x01, 0x00, 0x01, 0x50, 0x45, 0x05, 0x00, 0x01, 0x10, 0x10, 0x40, 0x11,
- 0x40, 0x00, 0x44, 0x00, 0x50, 0x15, 0x01, 0x15, 0x04, 0x00, 0x40, 0x00,
- 0x05, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x50, 0x20, 0x00, 0x00, 0xa2,
- 0xaa, 0x2a, 0x00, 0x00, 0x02, 0x00, 0xa0, 0x08, 0x00, 0x00, 0x00, 0x00,
- 0xa2, 0xaa, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x01, 0x40, 0x44, 0x15, 0x10, 0x01,
- 0x10, 0x10, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x54, 0x55, 0x41, 0x45,
- 0x04, 0x00, 0x40, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54,
- 0x20, 0x80, 0x00, 0x82, 0xaa, 0x0a, 0x00, 0x00, 0x22, 0x00, 0x80, 0x0a,
- 0x00, 0x00, 0x82, 0x00, 0xa0, 0x8a, 0x22, 0x02, 0x00, 0x08, 0x20, 0x00,
- 0xa8, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x2a, 0x10, 0x40, 0x00, 0x01,
- 0x54, 0x45, 0x10, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x01, 0x00,
- 0x50, 0x45, 0x05, 0x41, 0x00, 0x04, 0x10, 0x00, 0x50, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x15, 0x00, 0x28, 0x00, 0xaa, 0xaa, 0x0a, 0x0a, 0x00,
- 0x20, 0x08, 0x00, 0x20, 0x00, 0x00, 0x80, 0x00, 0xa8, 0xa2, 0x22, 0x2a,
- 0x00, 0x00, 0x0a, 0x00, 0xa8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0a,
- 0x50, 0x05, 0x00, 0x01, 0x55, 0x45, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40,
- 0x01, 0x00, 0x00, 0x00, 0x40, 0x55, 0x11, 0x00, 0x00, 0x54, 0x01, 0x00,
- 0x44, 0x01, 0x00, 0x00, 0x05, 0x40, 0x00, 0x05, 0x00, 0x08, 0x00, 0x80,
- 0xaa, 0xaa, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x80, 0x00,
- 0x80, 0xaa, 0x28, 0x20, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x00, 0x00,
- 0x28, 0x00, 0x80, 0x02, 0x10, 0x10, 0x00, 0x01, 0x54, 0x45, 0x01, 0x00,
- 0x41, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x10, 0x55, 0x14, 0x00,
- 0x00, 0x04, 0x04, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x40, 0x40, 0x01,
- 0x08, 0x00, 0x80, 0x00, 0xa8, 0xa2, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0xa0, 0xaa, 0x00, 0x80, 0x28, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00,
- 0x80, 0x02, 0x00, 0x00, 0x80, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x14, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
- 0x00, 0x40, 0x00, 0x00, 0x08, 0x20, 0x80, 0x00, 0x08, 0x08, 0x80, 0x80,
- 0x80, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x8a, 0x00,
- 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01,
- 0x10, 0x10, 0x00, 0x01, 0x10, 0x45, 0x55, 0x01, 0x00, 0x00, 0x10, 0x00,
- 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00,
- 0x20, 0xa2, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
- 0x00, 0x80, 0x00, 0x02, 0x04, 0x00, 0x40, 0x00, 0x04, 0x04, 0x40, 0x40,
- 0x00, 0x01, 0x00, 0x04, 0x04, 0x00, 0x00, 0x01, 0x00, 0x51, 0x45, 0x05,
- 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x45, 0x01,
- 0x2a, 0x80, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xa0, 0x02, 0x02, 0x80, 0xa8,
- 0x00, 0x2a, 0xa0, 0x02, 0x80, 0xa2, 0x00, 0xa0, 0xa0, 0x0a, 0xa0, 0x00,
- 0x00, 0x00, 0x80, 0x88, 0x02, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x50, 0x41, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
- 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0xaa, 0x0a,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x2a, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
- 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x55, 0x55,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, 0x00, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x05, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x15, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xa8, 0xaa,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x80, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x15, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
- 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0x2a, 0x20, 0x00, 0x00, 0x41, 0x05, 0x55, 0x54, 0x11, 0x04, 0x00, 0x14,
- 0x40, 0x10, 0x44, 0x15, 0x15, 0x00, 0x00, 0x50, 0x01, 0x00, 0x50, 0x55,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x10, 0x50, 0x40,
- 0x82, 0x08, 0x02, 0x08, 0x20, 0x08, 0x00, 0x22, 0xa0, 0x20, 0x88, 0x00,
- 0x22, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x80, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0xaa, 0x08, 0x88, 0x20, 0x44, 0x10, 0x01, 0x04,
- 0x50, 0x04, 0x00, 0x41, 0x10, 0x11, 0x44, 0x00, 0x41, 0x00, 0x00, 0x54,
- 0x41, 0x00, 0x40, 0x55, 0x15, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x54, 0x11, 0x04, 0x11, 0x80, 0x20, 0x02, 0x08, 0xa0, 0x08, 0x00, 0x02,
- 0x88, 0x20, 0x88, 0x00, 0x82, 0x00, 0x00, 0x2a, 0x22, 0x00, 0x80, 0xaa,
- 0x2a, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x08, 0x20,
- 0x40, 0x10, 0x01, 0x04, 0x50, 0x04, 0x00, 0x01, 0x04, 0x41, 0x44, 0x00,
- 0x41, 0x00, 0x00, 0x15, 0x05, 0x14, 0x15, 0x50, 0x10, 0x05, 0x40, 0x41,
- 0x41, 0x10, 0x45, 0x05, 0x50, 0x04, 0x04, 0x10, 0x80, 0x20, 0x02, 0x08,
- 0xa0, 0x08, 0x00, 0x02, 0x08, 0x22, 0x82, 0x00, 0x82, 0x00, 0x00, 0x0a,
- 0x2a, 0x22, 0x8a, 0x22, 0x22, 0x08, 0x80, 0x22, 0x22, 0x88, 0x88, 0x02,
- 0x28, 0x02, 0x08, 0x20, 0x40, 0x10, 0x15, 0x54, 0x10, 0x05, 0x00, 0x14,
- 0x04, 0x41, 0x44, 0x05, 0x41, 0x00, 0x00, 0x05, 0x50, 0x01, 0x41, 0x04,
- 0x05, 0x11, 0x00, 0x05, 0x44, 0x44, 0x50, 0x00, 0x10, 0x05, 0x50, 0x10,
- 0x80, 0x0a, 0x02, 0x08, 0x20, 0x0a, 0x00, 0x20, 0xa8, 0x82, 0x82, 0x00,
- 0x2a, 0x00, 0x80, 0x02, 0x22, 0x02, 0x82, 0x20, 0x20, 0x08, 0x20, 0x88,
- 0x82, 0x88, 0x8a, 0x00, 0x88, 0x0a, 0x80, 0x20, 0x40, 0x04, 0x01, 0x04,
- 0x10, 0x05, 0x00, 0x40, 0x04, 0x41, 0x41, 0x00, 0x11, 0x00, 0x40, 0x01,
- 0x41, 0x41, 0x41, 0x14, 0x15, 0x11, 0x40, 0x44, 0x04, 0x44, 0x40, 0x00,
- 0x44, 0x15, 0x00, 0x11, 0x80, 0x08, 0x02, 0x08, 0x20, 0x0a, 0x00, 0x80,
- 0x08, 0x82, 0x82, 0x00, 0x22, 0x00, 0xa0, 0x00, 0x22, 0x22, 0x82, 0x20,
- 0x22, 0x0a, 0x20, 0x28, 0x82, 0x82, 0x88, 0x00, 0x88, 0x2a, 0x00, 0x22,
- 0x44, 0x10, 0x01, 0x04, 0x10, 0x04, 0x00, 0x41, 0x04, 0x01, 0x41, 0x00,
- 0x41, 0x00, 0x50, 0x01, 0x14, 0x14, 0x01, 0x55, 0x10, 0x15, 0x40, 0x45,
- 0x05, 0x01, 0x45, 0x00, 0x04, 0x55, 0x04, 0x11, 0x82, 0x20, 0x02, 0x08,
- 0x20, 0x08, 0x00, 0x22, 0x08, 0x82, 0x80, 0x00, 0x82, 0x00, 0xa8, 0x00,
- 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0xaa, 0x88, 0x20, 0x41, 0x10, 0x55, 0x54, 0x11, 0x04, 0x00, 0x14,
- 0x04, 0x01, 0x41, 0x15, 0x41, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x51, 0x40,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x15, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x00, 0x54, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa8, 0x02, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00,
- 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x10, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
- 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x15, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00,
- 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa,
- 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00,
- 0x05, 0x14, 0x40, 0x01, 0x41, 0x40, 0x01, 0x14, 0x10, 0x01, 0x00, 0x40,
- 0x01, 0x04, 0x14, 0x14, 0x14, 0x10, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0a, 0xaa, 0x00, 0x00, 0x00, 0x80, 0x82, 0xa0, 0x20, 0x82,
- 0xa2, 0x20, 0x02, 0x22, 0x28, 0x02, 0x00, 0x08, 0x8a, 0x22, 0x08, 0x08,
- 0x22, 0x28, 0x0a, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x54,
- 0x01, 0x00, 0x00, 0x40, 0x41, 0x40, 0x10, 0x04, 0x11, 0x11, 0x04, 0x41,
- 0x10, 0x04, 0x00, 0x04, 0x04, 0x40, 0x10, 0x00, 0x41, 0x10, 0x11, 0x00,
- 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xaa, 0x02, 0x00, 0x00, 0xa0,
- 0x82, 0x80, 0x08, 0x08, 0x02, 0x08, 0x88, 0x80, 0x08, 0x08, 0x00, 0x08,
- 0x08, 0x20, 0x20, 0x80, 0x80, 0x20, 0x00, 0x00, 0x10, 0x50, 0x14, 0x14,
- 0x45, 0x05, 0x40, 0x05, 0x41, 0x14, 0x15, 0x50, 0x41, 0x01, 0x04, 0x00,
- 0x01, 0x04, 0x50, 0x00, 0x11, 0x04, 0x00, 0x14, 0x00, 0x40, 0x10, 0x44,
- 0x00, 0x11, 0x00, 0x00, 0xa0, 0x88, 0x22, 0xa2, 0x88, 0x08, 0x00, 0x2a,
- 0x82, 0x22, 0x22, 0xa8, 0x80, 0x0a, 0x08, 0x00, 0x02, 0xa8, 0x8a, 0xaa,
- 0x08, 0x08, 0x00, 0xa8, 0x00, 0x2a, 0x20, 0x80, 0xaa, 0x20, 0x00, 0x00,
- 0x00, 0x05, 0x04, 0x15, 0x55, 0x04, 0x40, 0x04, 0x50, 0x54, 0x01, 0x54,
- 0x00, 0x54, 0x04, 0x00, 0x01, 0x04, 0x40, 0x00, 0x10, 0x04, 0x00, 0x40,
- 0x05, 0x41, 0x40, 0x40, 0x00, 0x10, 0x00, 0x00, 0x80, 0x08, 0x02, 0x82,
- 0x80, 0x08, 0x80, 0x20, 0x02, 0x02, 0x02, 0x2a, 0x00, 0xa0, 0x08, 0x00,
- 0x02, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x00, 0x8a, 0x20, 0x20, 0x82,
- 0x00, 0x20, 0x00, 0x00, 0x10, 0x45, 0x04, 0x11, 0x51, 0x04, 0x50, 0x44,
- 0x44, 0x44, 0x01, 0x15, 0x00, 0x40, 0x05, 0x00, 0x01, 0x04, 0x40, 0x00,
- 0x10, 0x04, 0x00, 0x00, 0x54, 0x40, 0x40, 0x41, 0x00, 0x10, 0x00, 0x00,
- 0xa0, 0x28, 0x02, 0x0a, 0x8a, 0x08, 0x20, 0x0a, 0x0a, 0x28, 0x02, 0x0a,
- 0x00, 0x80, 0x08, 0x00, 0x02, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x00,
- 0x88, 0x20, 0x80, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x05, 0x40, 0x00, 0x11, 0x00,
- 0x01, 0x10, 0x10, 0x01, 0x11, 0x04, 0x00, 0x04, 0x50, 0x40, 0x41, 0x01,
- 0x01, 0x11, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa,
- 0xaa, 0x00, 0x80, 0x02, 0x80, 0x80, 0x20, 0x02, 0x02, 0x20, 0x08, 0x82,
- 0x08, 0x08, 0x00, 0x08, 0x88, 0x20, 0x80, 0x00, 0x82, 0x20, 0x00, 0x00,
- 0x00, 0x40, 0x01, 0x10, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x40, 0x01,
- 0x40, 0x14, 0x40, 0x41, 0x05, 0x40, 0x01, 0x14, 0x14, 0x14, 0x00, 0x44,
- 0x01, 0x45, 0x00, 0x00, 0x14, 0x54, 0x00, 0x00, 0x00, 0x80, 0x02, 0x08,
- 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x50,
- 0x55, 0x05, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0xa8, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01,
- 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0xa0,
- 0xaa, 0x0a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x15, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x55, 0x15, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x8a, 0x02, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0xa8, 0xa2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x05, 0x50, 0x00, 0x50, 0x40, 0x45, 0x11, 0x00, 0x50,
- 0x40, 0x41, 0x01, 0x00, 0x14, 0x00, 0x51, 0x40, 0x40, 0x00, 0x05, 0x14,
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0a,
- 0x88, 0x02, 0xaa, 0xa8, 0x80, 0x00, 0x00, 0xaa, 0xa8, 0xa2, 0x02, 0x00,
- 0xa2, 0xa0, 0x22, 0xa8, 0xa0, 0xa0, 0x8a, 0x2a, 0x02, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x14, 0x04, 0x01, 0x45, 0x51,
- 0x04, 0x40, 0x00, 0x45, 0x41, 0x51, 0x01, 0x00, 0x41, 0x50, 0x54, 0x50,
- 0x50, 0x50, 0x14, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0a, 0x82, 0xa2, 0xa0, 0x02, 0xa0, 0x88, 0x82,
- 0xa0, 0x88, 0x02, 0x80, 0x82, 0x28, 0x28, 0xa0, 0x20, 0x28, 0x08, 0x8a,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x45, 0x54, 0x00,
- 0x14, 0x40, 0x41, 0x50, 0x05, 0x51, 0x10, 0x41, 0x41, 0x41, 0x01, 0x00,
- 0x05, 0x14, 0x10, 0x50, 0x40, 0x10, 0x14, 0x54, 0x04, 0x00, 0x41, 0x55,
- 0x04, 0x45, 0x01, 0x04, 0x20, 0x02, 0x08, 0x00, 0x2a, 0xa0, 0x00, 0xa0,
- 0x8a, 0x20, 0xa8, 0xa2, 0xa0, 0xa0, 0x00, 0x80, 0x0a, 0x28, 0x28, 0xa0,
- 0x20, 0x28, 0x0a, 0x2a, 0x00, 0x00, 0x22, 0x0a, 0x80, 0x88, 0x02, 0x88,
- 0x04, 0x50, 0x01, 0x00, 0x54, 0x40, 0x01, 0x50, 0x15, 0x10, 0x14, 0x51,
- 0x40, 0x41, 0x01, 0x00, 0x15, 0x14, 0x14, 0x40, 0x11, 0x14, 0x05, 0x14,
- 0x00, 0x40, 0x10, 0x00, 0x15, 0x45, 0x04, 0x01, 0x00, 0x00, 0x08, 0x00,
- 0xa8, 0xa0, 0x00, 0x28, 0x8a, 0x08, 0x0a, 0x28, 0xa0, 0xa0, 0x00, 0x00,
- 0x2a, 0x0a, 0x28, 0xa0, 0x08, 0x8a, 0x02, 0x0a, 0x00, 0x80, 0x00, 0x08,
- 0x80, 0x00, 0x00, 0x82, 0x44, 0x11, 0x00, 0x00, 0x50, 0x50, 0x00, 0x10,
- 0x05, 0x40, 0x15, 0x05, 0x50, 0x50, 0x00, 0x00, 0x14, 0x14, 0x14, 0x40,
- 0x11, 0x54, 0x00, 0x05, 0x00, 0x00, 0x11, 0x00, 0x01, 0x40, 0x04, 0x44,
- 0x80, 0x20, 0x0a, 0x00, 0xa0, 0xa0, 0x00, 0x88, 0x82, 0xa8, 0x0a, 0x00,
- 0xa0, 0xa0, 0x00, 0x00, 0x28, 0x0a, 0x0a, 0xa0, 0x08, 0x0a, 0x00, 0x0a,
- 0x00, 0x00, 0x22, 0x0a, 0xa2, 0x00, 0x00, 0x88, 0x01, 0x40, 0x15, 0x00,
- 0x50, 0x51, 0x40, 0x00, 0x01, 0x51, 0x15, 0x00, 0x50, 0x50, 0x00, 0x00,
- 0x54, 0x14, 0x54, 0x40, 0x05, 0x14, 0x00, 0x05, 0x00, 0x40, 0x41, 0x15,
- 0x14, 0x45, 0x04, 0x05, 0x00, 0x00, 0x00, 0x80, 0xa0, 0xa0, 0x20, 0x88,
- 0x80, 0xaa, 0x08, 0x82, 0x28, 0x28, 0x02, 0x20, 0x28, 0x0a, 0x2a, 0xa0,
- 0x02, 0x0a, 0x88, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x41, 0x40, 0x11, 0x44, 0x00, 0x55, 0x14, 0x44,
- 0x50, 0x50, 0x01, 0x40, 0x10, 0x54, 0x15, 0x40, 0x01, 0x14, 0x04, 0x45,
- 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0x22, 0xa0, 0x0a, 0x00, 0x00, 0x0a, 0x2a, 0x20, 0x28, 0xa8, 0x00, 0xa0,
- 0x08, 0xa8, 0x08, 0xa0, 0x00, 0xa8, 0x82, 0x82, 0x02, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x05, 0x00,
- 0x00, 0x54, 0x55, 0x10, 0x50, 0x50, 0x00, 0x00, 0x05, 0x50, 0x04, 0x40,
- 0x00, 0x50, 0x40, 0x05, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x80, 0xaa, 0x2a,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a,
- 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x55, 0x55,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01,
- 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa8, 0xaa,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00,
- 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x50, 0x55,
- 0x05, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x28,
- 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0a, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
- 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x50, 0x04, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x80, 0xaa,
- 0x2a, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x50, 0x15,
- 0x55, 0x11, 0x55, 0x00, 0x15, 0x00, 0x54, 0x01, 0x00, 0x54, 0x01, 0x40,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x50, 0x00, 0x20, 0x82, 0x20, 0x08, 0x82, 0x00, 0x22, 0x80,
- 0x08, 0x08, 0x28, 0xa2, 0x28, 0x20, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xa2,
- 0x00, 0x04, 0x41, 0x10, 0x04, 0x11, 0x00, 0x40, 0x10, 0x14, 0x10, 0x54,
- 0x54, 0x11, 0x10, 0x00, 0x01, 0x00, 0x50, 0x14, 0x15, 0x05, 0x45, 0x01,
- 0x50, 0x50, 0x44, 0x14, 0x05, 0x00, 0x04, 0x40, 0x20, 0x02, 0x22, 0x02,
- 0x22, 0x08, 0x20, 0x20, 0x00, 0x08, 0x20, 0xa8, 0x28, 0x22, 0x08, 0x80,
- 0x02, 0x00, 0x88, 0x22, 0xa2, 0x88, 0x28, 0x02, 0x88, 0x80, 0x22, 0xa2,
- 0x08, 0x00, 0x08, 0x22, 0x00, 0x04, 0x41, 0x00, 0x04, 0x00, 0x01, 0x40,
- 0x00, 0x10, 0x40, 0x04, 0x11, 0x10, 0x04, 0x10, 0x05, 0x00, 0x10, 0x04,
- 0x01, 0x55, 0x45, 0x04, 0x10, 0x50, 0x44, 0x15, 0x01, 0x00, 0x14, 0x10,
- 0x00, 0x2a, 0xa0, 0x02, 0x2a, 0x20, 0x22, 0x80, 0x02, 0x22, 0x20, 0x02,
- 0x0a, 0xa0, 0x02, 0x08, 0x0a, 0x00, 0x20, 0x02, 0x82, 0x80, 0x20, 0x02,
- 0x80, 0x88, 0x28, 0x82, 0x00, 0x00, 0xa8, 0x20, 0x00, 0x44, 0x40, 0x01,
- 0x14, 0x00, 0x04, 0x00, 0x05, 0x10, 0x40, 0x00, 0x11, 0x10, 0x05, 0x04,
- 0x14, 0x00, 0x44, 0x44, 0x01, 0x51, 0x44, 0x04, 0x10, 0x45, 0x14, 0x11,
- 0x01, 0x00, 0x50, 0x11, 0x00, 0x82, 0x20, 0x02, 0x22, 0x20, 0x28, 0x20,
- 0x08, 0x2a, 0x80, 0x02, 0x02, 0x20, 0x08, 0x00, 0x00, 0x00, 0x28, 0x28,
- 0x02, 0x8a, 0x22, 0x02, 0xa0, 0xa8, 0x08, 0x8a, 0x00, 0x00, 0x80, 0x22,
- 0x00, 0x04, 0x41, 0x10, 0x04, 0x01, 0x10, 0x00, 0x10, 0x41, 0x40, 0x01,
- 0x11, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x51, 0x20, 0x82, 0x20, 0x00,
- 0x02, 0x20, 0x28, 0x20, 0x88, 0x20, 0x80, 0x00, 0x82, 0x20, 0x28, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x22, 0x10, 0x04, 0x45, 0x10, 0x04, 0x01, 0x10, 0x40,
- 0x04, 0x40, 0x00, 0x00, 0x41, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x41,
- 0x8a, 0x0a, 0xaa, 0x8a, 0xaa, 0xa8, 0x20, 0xa0, 0x82, 0xa2, 0x80, 0x80,
- 0xaa, 0xa8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x15, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54,
- 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa0, 0xa2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x2a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x10, 0x50,
- 0x41, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x15, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xa0, 0x80, 0x02, 0xa8, 0x28,
- 0x0a, 0xa0, 0x02, 0xa8, 0x00, 0x8a, 0x02, 0x28, 0x00, 0x00, 0x00, 0x0a,
- 0x28, 0x80, 0x2a, 0x80, 0x22, 0x80, 0x0a, 0x00, 0xa8, 0x00, 0x28, 0x2a,
- 0x00, 0x05, 0x00, 0x50, 0x00, 0x00, 0x55, 0x51, 0x14, 0x14, 0x54, 0x54,
- 0x01, 0x54, 0x01, 0x50, 0x50, 0x05, 0x00, 0x05, 0x00, 0x50, 0x55, 0x40,
- 0x51, 0x50, 0x15, 0x00, 0x54, 0x05, 0x14, 0x55, 0x00, 0x0a, 0x00, 0xa0,
- 0x00, 0x80, 0xaa, 0x2a, 0x2a, 0x08, 0x2a, 0xa8, 0x02, 0xaa, 0x02, 0xa0,
- 0xa0, 0x02, 0x00, 0x0a, 0x00, 0xa8, 0xaa, 0x80, 0x2a, 0xa8, 0x2a, 0x80,
- 0xaa, 0x0a, 0xa8, 0xaa, 0x01, 0x05, 0x00, 0x50, 0x05, 0x40, 0x55, 0x55,
- 0x14, 0x00, 0x14, 0x50, 0x05, 0x54, 0x01, 0x40, 0x51, 0x01, 0x00, 0x55,
- 0x00, 0x54, 0x55, 0x41, 0x15, 0x54, 0x55, 0x40, 0x55, 0x15, 0x54, 0x55,
- 0x02, 0x0a, 0x00, 0xa0, 0x0a, 0xa0, 0x02, 0x2a, 0x2a, 0x00, 0x0a, 0x88,
- 0x0a, 0x2a, 0x00, 0x80, 0xaa, 0x00, 0x00, 0xaa, 0x00, 0xaa, 0xa0, 0xa2,
- 0x0a, 0x2a, 0xa8, 0xa0, 0x0a, 0x0a, 0xaa, 0xa0, 0x01, 0x14, 0x01, 0x40,
- 0x55, 0x50, 0x01, 0x14, 0x14, 0x00, 0x05, 0x04, 0x15, 0x15, 0x00, 0x00,
- 0x51, 0x00, 0x00, 0x54, 0x05, 0x14, 0x40, 0x45, 0x05, 0x15, 0x50, 0x41,
- 0x01, 0x14, 0x54, 0x40, 0x02, 0xa8, 0x00, 0x80, 0xaa, 0xa8, 0x00, 0x2a,
- 0x28, 0x88, 0x02, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
- 0x0a, 0x0a, 0xa0, 0xa2, 0x82, 0x0a, 0xa0, 0xa0, 0x00, 0x28, 0x2a, 0xa0,
- 0x01, 0x50, 0x00, 0x00, 0x55, 0x50, 0x00, 0x14, 0x54, 0x54, 0x05, 0x15,
- 0x14, 0x15, 0x00, 0x00, 0x11, 0x00, 0x00, 0x50, 0x05, 0x15, 0x00, 0x40,
- 0x01, 0x05, 0x40, 0x51, 0x00, 0x14, 0x14, 0x40, 0x00, 0xa8, 0x00, 0x00,
- 0xa8, 0x28, 0x00, 0x28, 0x28, 0xa8, 0x02, 0x80, 0x0a, 0x0a, 0x00, 0x80,
- 0x08, 0x00, 0x00, 0x80, 0x8a, 0x0a, 0x00, 0xa0, 0x80, 0xaa, 0xaa, 0xa8,
- 0xaa, 0x2a, 0x0a, 0xa0, 0x01, 0x44, 0x01, 0x00, 0x50, 0x55, 0x00, 0x14,
- 0x50, 0x14, 0x01, 0x00, 0x15, 0x05, 0x00, 0x40, 0x15, 0x00, 0x00, 0x00,
- 0x15, 0x05, 0x00, 0x50, 0x41, 0x55, 0x55, 0x51, 0x55, 0x15, 0x15, 0x40,
- 0x00, 0x80, 0x02, 0x00, 0xa0, 0x28, 0x00, 0x0a, 0x28, 0x0a, 0x02, 0x00,
- 0x8a, 0x0a, 0x00, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x8a, 0x0a, 0x00, 0xa0,
- 0x80, 0xaa, 0xaa, 0xa8, 0xaa, 0x2a, 0x0a, 0xa0, 0x01, 0x40, 0x01, 0x00,
- 0x50, 0x55, 0x00, 0x14, 0x50, 0x05, 0x00, 0x00, 0x14, 0x05, 0x00, 0x50,
- 0x50, 0x00, 0x00, 0x00, 0x15, 0x05, 0x00, 0x50, 0x40, 0x55, 0x55, 0x51,
- 0x55, 0x15, 0x05, 0x50, 0x00, 0x80, 0x02, 0x2a, 0xa8, 0x28, 0x00, 0x0a,
- 0xa8, 0x0a, 0x80, 0xaa, 0x82, 0x02, 0x00, 0x20, 0xa0, 0x00, 0xa0, 0x82,
- 0x8a, 0x0a, 0x00, 0xa0, 0x80, 0x02, 0x00, 0x28, 0x00, 0x00, 0x0a, 0xa0,
- 0x00, 0x00, 0x05, 0x14, 0x50, 0x54, 0x00, 0x15, 0x50, 0x05, 0x40, 0x55,
- 0x01, 0x05, 0x00, 0x10, 0x40, 0x01, 0x40, 0x01, 0x05, 0x15, 0x50, 0x51,
- 0x40, 0x01, 0x00, 0x50, 0x00, 0x00, 0x05, 0x50, 0x00, 0x00, 0x0a, 0x2a,
- 0xa8, 0xa8, 0x80, 0x0a, 0xa0, 0x02, 0x80, 0x0a, 0x80, 0x02, 0x00, 0x08,
- 0x80, 0x02, 0xa0, 0x82, 0x0a, 0x2a, 0xa8, 0xa0, 0x80, 0x02, 0x2a, 0xa8,
- 0x80, 0x8a, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x54, 0x55, 0x50, 0x55, 0x05,
- 0x50, 0x01, 0x00, 0x00, 0x44, 0x05, 0x00, 0x04, 0x00, 0x05, 0x40, 0x55,
- 0x05, 0x54, 0x55, 0x50, 0x00, 0x55, 0x15, 0x50, 0x55, 0x05, 0x05, 0x50,
- 0x00, 0x00, 0x00, 0xa8, 0x2a, 0xa0, 0xaa, 0x0a, 0xa0, 0x00, 0x08, 0x00,
- 0x8a, 0x02, 0x00, 0x0a, 0x00, 0x00, 0x80, 0xaa, 0x02, 0xaa, 0x2a, 0x28,
- 0x80, 0xaa, 0x0a, 0xa0, 0xaa, 0x82, 0x02, 0x28, 0x00, 0x00, 0x00, 0x50,
- 0x15, 0x40, 0x55, 0x05, 0x40, 0x01, 0x10, 0x00, 0x55, 0x01, 0x00, 0x05,
- 0x00, 0x00, 0x00, 0x55, 0x01, 0x54, 0x15, 0x50, 0x00, 0x55, 0x05, 0x40,
- 0x55, 0x01, 0x05, 0x50, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x80, 0x0a, 0x0a,
- 0xa0, 0x00, 0x00, 0xa0, 0xaa, 0x02, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x2a,
- 0x00, 0xa0, 0x0a, 0x28, 0x00, 0xa8, 0x00, 0x80, 0x2a, 0x80, 0x02, 0x28,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
- 0x55, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0xa0, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa,
- 0xaa, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x50, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x55, 0x05, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x0a, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0xaa, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x45, 0x05, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x22, 0xa0, 0x22, 0xa8, 0x0a, 0xa8, 0x00,
- 0xa8, 0xa0, 0x28, 0x80, 0xaa, 0x22, 0x28, 0xa0, 0x02, 0x2a, 0x2a, 0xa0,
- 0x02, 0x8a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x40, 0x15, 0x50, 0x15, 0x54, 0x15, 0x54, 0x01, 0x55, 0x41, 0x55, 0x00,
- 0x55, 0x11, 0x54, 0x50, 0x05, 0x54, 0x54, 0x54, 0x05, 0x54, 0x05, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x08, 0x08,
- 0x20, 0x08, 0x02, 0x82, 0x82, 0x82, 0x82, 0x00, 0xaa, 0x08, 0x20, 0x20,
- 0x08, 0x08, 0x08, 0x0a, 0x0a, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x50, 0x10, 0x04, 0x10, 0x10, 0x00, 0x01, 0x04,
- 0x01, 0x01, 0x01, 0x01, 0x54, 0x14, 0x11, 0x00, 0x10, 0x10, 0x04, 0x04,
- 0x04, 0x10, 0x00, 0x14, 0x51, 0x10, 0x44, 0x01, 0x50, 0x44, 0x44, 0x14,
- 0xa0, 0x00, 0x02, 0x08, 0x08, 0x80, 0x00, 0x82, 0x00, 0x82, 0x80, 0x00,
- 0xa8, 0x28, 0x00, 0xa0, 0x0a, 0x20, 0x08, 0x02, 0x08, 0x08, 0x00, 0x00,
- 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x05, 0x04, 0x00,
- 0x10, 0x00, 0x55, 0x45, 0x55, 0x41, 0x40, 0x00, 0x54, 0x54, 0x00, 0x50,
- 0x05, 0x10, 0x04, 0x55, 0x05, 0x04, 0x00, 0x44, 0x10, 0x14, 0x45, 0x04,
- 0x10, 0x54, 0x54, 0x04, 0x00, 0x0a, 0x02, 0x00, 0x08, 0x80, 0xaa, 0x82,
- 0xaa, 0x82, 0x80, 0x00, 0x2a, 0xaa, 0x00, 0x08, 0x08, 0x20, 0x02, 0xaa,
- 0x0a, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
- 0x10, 0x14, 0x04, 0x00, 0x04, 0x00, 0x01, 0x40, 0x00, 0x40, 0x40, 0x00,
- 0x15, 0x45, 0x15, 0x04, 0x04, 0x10, 0x01, 0x01, 0x00, 0x04, 0x00, 0x05,
- 0x15, 0x10, 0x44, 0x04, 0x14, 0x14, 0x41, 0x04, 0x08, 0x08, 0x0a, 0x08,
- 0x08, 0x80, 0x02, 0x82, 0x80, 0x20, 0x20, 0x80, 0x8a, 0x8a, 0x22, 0x02,
- 0x02, 0xa0, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x05, 0x54, 0x15, 0x55, 0x01, 0x55, 0x01,
- 0x55, 0x51, 0x51, 0x01, 0x45, 0x05, 0x00, 0x54, 0x15, 0x40, 0x00, 0x54,
- 0x45, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa8, 0x02, 0xa8, 0x82, 0xaa, 0x00, 0xaa, 0x00, 0x2a, 0xa8, 0xa8, 0x80,
- 0x82, 0x22, 0x20, 0xa8, 0x0a, 0x20, 0x00, 0xa8, 0x80, 0xaa, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x55, 0x55, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa0, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0xa8, 0xaa, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0x2a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x54, 0x00, 0x54, 0x55, 0x01, 0x00, 0x40, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a,
- 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x80, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x50, 0x55, 0x05,
- 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x54, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0x0a, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x0a, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05,
- 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x80, 0xaa, 0x2a,
- 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa8, 0x02, 0x08, 0x00, 0x10, 0x50, 0x50, 0x50, 0x40, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x50, 0x00,
- 0x50, 0x00, 0x05, 0x04, 0x01, 0x05, 0x50, 0x40, 0x54, 0x05, 0x04, 0x05,
- 0x8a, 0x20, 0x20, 0x88, 0xa0, 0x28, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00,
- 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x20, 0x00, 0x82, 0x82, 0x08, 0x8a,
- 0x82, 0x08, 0x88, 0xa0, 0xa8, 0x0a, 0x22, 0x28, 0x00, 0x41, 0x00, 0x04,
- 0x41, 0x44, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x55, 0x55,
- 0x00, 0x00, 0x10, 0x00, 0x01, 0x41, 0x10, 0x44, 0x44, 0x10, 0x04, 0x41,
- 0x50, 0x15, 0x11, 0x10, 0x80, 0x80, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x80, 0x00,
- 0x02, 0x22, 0x20, 0x08, 0x20, 0x20, 0x02, 0x22, 0xa0, 0x2a, 0x22, 0x20,
- 0x00, 0x41, 0x10, 0x01, 0x44, 0x00, 0x00, 0x40, 0x41, 0x51, 0x04, 0x14,
- 0x15, 0x00, 0x11, 0x44, 0x50, 0x54, 0x40, 0x01, 0x05, 0x10, 0x00, 0x04,
- 0x10, 0x40, 0x01, 0x44, 0x10, 0x15, 0x51, 0x00, 0xa8, 0x80, 0x00, 0xaa,
- 0x82, 0x00, 0x00, 0x20, 0x22, 0x8a, 0xa2, 0x22, 0x22, 0x80, 0xa0, 0x88,
- 0x88, 0x88, 0x88, 0x02, 0x2a, 0x20, 0x00, 0x08, 0xa0, 0x2a, 0xaa, 0x22,
- 0x20, 0x8a, 0xa0, 0x02, 0x04, 0x01, 0x01, 0x01, 0x40, 0x00, 0x00, 0x40,
- 0x10, 0x10, 0x41, 0x54, 0x11, 0x00, 0x11, 0x40, 0x54, 0x05, 0x04, 0x05,
- 0x50, 0x11, 0x00, 0x04, 0x10, 0x00, 0x01, 0x40, 0x10, 0x45, 0x00, 0x15,
- 0x82, 0x80, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x22, 0x88, 0x02, 0x02,
- 0x22, 0x00, 0x82, 0x08, 0x02, 0x08, 0x02, 0x0a, 0x80, 0x22, 0x00, 0x08,
- 0x20, 0x00, 0x02, 0x20, 0x20, 0xa2, 0x00, 0x28, 0x01, 0x01, 0x05, 0x01,
- 0x40, 0x00, 0x00, 0x40, 0x14, 0x51, 0x41, 0x44, 0x11, 0x40, 0x04, 0x11,
- 0x04, 0x05, 0x01, 0x14, 0x00, 0x15, 0x00, 0x04, 0x10, 0x00, 0x01, 0x40,
- 0x10, 0x51, 0x01, 0x50, 0x82, 0x00, 0x02, 0x02, 0x80, 0x00, 0x00, 0x80,
- 0xa2, 0x88, 0x2a, 0x28, 0x22, 0x80, 0x02, 0x28, 0x8a, 0x88, 0x00, 0x28,
- 0x00, 0x22, 0x00, 0x08, 0x20, 0x00, 0x02, 0x20, 0xa0, 0xa8, 0x02, 0x20,
- 0x01, 0x05, 0x05, 0x04, 0x44, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00,
- 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00, 0x04,
- 0x40, 0x40, 0x04, 0x44, 0x10, 0x51, 0x15, 0x40, 0x82, 0x00, 0x02, 0x08,
- 0x82, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa,
- 0x2a, 0x00, 0x00, 0x00, 0x02, 0x82, 0x08, 0x08, 0x80, 0x20, 0x08, 0x22,
- 0xa0, 0xa0, 0x2a, 0x20, 0x14, 0x01, 0x00, 0x50, 0x50, 0x01, 0x00, 0x00,
- 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00,
- 0x51, 0x00, 0x05, 0x15, 0x00, 0x05, 0x50, 0x50, 0x50, 0x40, 0x15, 0x05,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x2a, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x00, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa0, 0x0a,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x04, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
- 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x50, 0x55, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
- 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa,
- 0x15, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x10, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x2a, 0x00, 0x00, 0x00,
- 0x00, 0xa0, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0xaa, 0x15, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00,
- 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55,
- 0xa2, 0x00, 0x80, 0x02, 0x0a, 0xa2, 0x82, 0x02, 0x0a, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0a, 0xa8, 0xa0, 0x80, 0x82, 0xa0, 0x11, 0x01, 0x00, 0x04,
- 0x11, 0x50, 0x41, 0x04, 0x11, 0x10, 0x00, 0x14, 0x44, 0x40, 0x00, 0x41,
- 0x11, 0x00, 0x14, 0x00, 0x44, 0x05, 0x05, 0x04, 0x45, 0x00, 0x10, 0x44,
- 0x11, 0x11, 0x04, 0x44, 0xa2, 0x02, 0x20, 0x80, 0x20, 0x28, 0x20, 0x08,
- 0x02, 0x20, 0x80, 0x22, 0xa8, 0xa8, 0xa0, 0x82, 0x28, 0x00, 0x28, 0x80,
- 0x22, 0x08, 0x82, 0x0a, 0x22, 0x80, 0x00, 0x82, 0x20, 0x00, 0x88, 0x8a,
- 0x51, 0x05, 0x50, 0x00, 0x10, 0x11, 0x11, 0x10, 0x01, 0x50, 0x40, 0x10,
- 0x54, 0x04, 0x11, 0x04, 0x41, 0x00, 0x50, 0x40, 0x10, 0x04, 0x44, 0x10,
- 0x44, 0x40, 0x01, 0x01, 0x10, 0x10, 0x44, 0x14, 0xa2, 0x00, 0xa0, 0x00,
- 0xa8, 0x02, 0xa0, 0x0a, 0x02, 0xa0, 0xa0, 0x00, 0x0a, 0x82, 0x08, 0x82,
- 0x20, 0x00, 0xa0, 0x20, 0x20, 0x08, 0x22, 0x08, 0x02, 0x80, 0x02, 0x02,
- 0x20, 0xa8, 0x8a, 0x82, 0x51, 0x01, 0x40, 0x01, 0x55, 0x01, 0x10, 0x00,
- 0x01, 0x40, 0x41, 0x00, 0x04, 0x54, 0x50, 0x41, 0x40, 0x00, 0x40, 0x10,
- 0x10, 0x04, 0x41, 0x05, 0x01, 0x00, 0x05, 0x01, 0x10, 0x10, 0x40, 0x50,
- 0xa2, 0x08, 0x80, 0x82, 0xa0, 0x8a, 0x20, 0x00, 0x02, 0x80, 0x22, 0x00,
- 0x02, 0x0a, 0x28, 0x80, 0x20, 0x00, 0x80, 0x20, 0x08, 0x88, 0xa0, 0x00,
- 0x02, 0x00, 0x0a, 0x02, 0x20, 0x08, 0x80, 0xa0, 0x51, 0x01, 0x00, 0x44,
- 0x50, 0x11, 0x10, 0x00, 0x01, 0x00, 0x11, 0x00, 0x01, 0x01, 0x04, 0x40,
- 0x10, 0x00, 0x40, 0x11, 0x10, 0x10, 0x11, 0x00, 0x01, 0x00, 0x10, 0x01,
- 0x10, 0x10, 0x40, 0x50, 0xa2, 0x08, 0x00, 0x88, 0x80, 0x08, 0x20, 0x00,
- 0x02, 0x02, 0x22, 0x00, 0x02, 0x02, 0x08, 0x20, 0x20, 0x00, 0x80, 0x08,
- 0x08, 0x88, 0x20, 0x80, 0x00, 0x00, 0x20, 0x02, 0x20, 0x28, 0x80, 0xa0,
- 0x51, 0x11, 0x10, 0x44, 0x40, 0x50, 0x40, 0x10, 0x01, 0x00, 0x11, 0x00,
- 0x01, 0x01, 0x04, 0x40, 0x10, 0x00, 0x01, 0x11, 0x04, 0x50, 0x10, 0x00,
- 0x01, 0x40, 0x10, 0x04, 0x11, 0x50, 0x00, 0x01, 0xa2, 0x28, 0x20, 0x82,
- 0x0a, 0x20, 0xa0, 0x0a, 0x02, 0x02, 0x22, 0x88, 0x00, 0x82, 0x08, 0x22,
- 0x08, 0x80, 0x80, 0x28, 0x08, 0x28, 0x20, 0x88, 0x00, 0x80, 0x08, 0xaa,
- 0x20, 0xa0, 0x82, 0xaa, 0x41, 0x50, 0x50, 0x01, 0x55, 0x00, 0x00, 0x05,
- 0x05, 0x05, 0x51, 0x04, 0x01, 0x45, 0x14, 0x11, 0x50, 0x00, 0x41, 0x50,
- 0x04, 0x10, 0x50, 0x44, 0x00, 0x40, 0x05, 0x50, 0x50, 0x40, 0x01, 0x14,
- 0xaa, 0xaa, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0x82,
- 0x00, 0x2a, 0xa8, 0x20, 0x28, 0x80, 0x2a, 0x20, 0x08, 0x08, 0xa0, 0x82,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00,
- 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x80, 0x0a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x54, 0x55, 0x01, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0xa0,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x40, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa0, 0xaa, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x50,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x28, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x55, 0x55, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x2a, 0x2a,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x15, 0x15, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xaa, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x45,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x88, 0xa2, 0x22, 0x08, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x88, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x0a, 0x00, 0x0a, 0x08,
- 0x02, 0x22, 0xa0, 0x80, 0x08, 0x00, 0xa0, 0x00, 0x20, 0xa0, 0xa0, 0xa0,
- 0x41, 0x01, 0x51, 0x45, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01,
- 0x00, 0x00, 0x55, 0x55, 0x14, 0x00, 0x11, 0x14, 0x05, 0x45, 0x10, 0x41,
- 0x11, 0x00, 0x40, 0x01, 0x14, 0x41, 0x40, 0x10, 0x82, 0x28, 0xa2, 0xaa,
- 0x80, 0xa2, 0xa2, 0xa0, 0xa8, 0x00, 0x28, 0x28, 0x08, 0xa2, 0x02, 0xaa,
- 0xa8, 0x80, 0x20, 0x88, 0x88, 0x0a, 0x08, 0x82, 0x20, 0x00, 0x80, 0x0a,
- 0x00, 0x82, 0x00, 0x08, 0x04, 0x51, 0x51, 0x55, 0x45, 0x44, 0x11, 0x11,
- 0x11, 0x01, 0x50, 0x44, 0x04, 0x11, 0x05, 0x55, 0x41, 0x41, 0x40, 0x10,
- 0x40, 0x55, 0x04, 0x44, 0x40, 0x00, 0x00, 0x14, 0x00, 0x01, 0x01, 0x04,
- 0x88, 0xa8, 0xa8, 0x2a, 0x2a, 0x20, 0x08, 0x0a, 0x0a, 0x02, 0xa0, 0x80,
- 0x88, 0x08, 0xa2, 0xaa, 0x02, 0x22, 0x00, 0x08, 0xa0, 0x8a, 0x02, 0x88,
- 0x20, 0x00, 0x00, 0x20, 0x00, 0x82, 0x20, 0x02, 0x05, 0x55, 0x54, 0x55,
- 0x44, 0x40, 0x50, 0x51, 0x11, 0x01, 0x04, 0x51, 0x10, 0x51, 0x41, 0x55,
- 0x05, 0x44, 0x00, 0x10, 0x00, 0x50, 0x54, 0x45, 0x40, 0x00, 0x00, 0x40,
- 0x50, 0x01, 0x01, 0x54, 0x80, 0x2a, 0xaa, 0x0a, 0x28, 0x28, 0x08, 0x08,
- 0x08, 0x02, 0x88, 0x88, 0x80, 0x08, 0xa8, 0xaa, 0x0a, 0x28, 0x00, 0x08,
- 0xa0, 0x02, 0x02, 0x80, 0x20, 0x00, 0x00, 0x80, 0x08, 0x02, 0x02, 0x02,
- 0x00, 0x15, 0x55, 0x15, 0x44, 0x44, 0x10, 0x11, 0x11, 0x01, 0x04, 0x45,
- 0x50, 0x10, 0x51, 0x55, 0x15, 0x44, 0x00, 0x10, 0x00, 0x01, 0x04, 0x40,
- 0x40, 0x00, 0x00, 0x40, 0x04, 0x01, 0x11, 0x04, 0x80, 0x0a, 0xaa, 0x2a,
- 0x82, 0x22, 0xa0, 0xa0, 0x08, 0x02, 0xa8, 0xa8, 0x20, 0xa0, 0xa8, 0xaa,
- 0x0a, 0x28, 0x00, 0x08, 0x80, 0x00, 0x02, 0x80, 0x20, 0x00, 0x00, 0x80,
- 0x02, 0x02, 0x0a, 0x02, 0x00, 0x04, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x44, 0x00, 0x10,
- 0x10, 0x00, 0x04, 0x40, 0x40, 0x00, 0x00, 0x40, 0x04, 0x01, 0x04, 0x04,
- 0x08, 0x02, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0xaa, 0x28, 0x82, 0x00, 0x08, 0xa8, 0x80, 0x08, 0x88,
- 0x20, 0x00, 0x20, 0x20, 0x02, 0x0a, 0x0a, 0x08, 0x44, 0x00, 0x50, 0x55,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
- 0x51, 0x01, 0x11, 0x10, 0x54, 0x41, 0x10, 0x44, 0x40, 0x00, 0x40, 0x10,
- 0x04, 0x01, 0x04, 0x10, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00,
- 0x00, 0xa0, 0x00, 0x08, 0x00, 0x00, 0x00, 0xaa, 0x08, 0x00, 0x0a, 0x2a,
- 0x2a, 0x0a, 0xa0, 0xa0, 0xa0, 0x00, 0x20, 0x0a, 0x28, 0x02, 0x00, 0xa0,
- 0x50, 0x01, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/nx-X11/programs/Xserver/hw/xwin/ChangeLog b/nx-X11/programs/Xserver/hw/xwin/ChangeLog
deleted file mode 100644
index 93da0323a..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/ChangeLog
+++ /dev/null
@@ -1,663 +0,0 @@
-2005-07-05 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwm.c:
- Fix crash on server shutdown
-
-2005-07-05 Alexander Gottwald <ago at freedesktop dot org>
-
- * winkeybd.c:
- * winkeybd.h:
- * winwndproc.c:
- Fix simultanious presses of Left and Right Control and Shift keys.
- https://bugs.freedesktop.org/show_bug.cgi?id=3677
-
-2005-07-05 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwm.c:
- Fix typo which broke window titles
-
-2005-07-05 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwndproc.c:
- * winkeybd.c:
- Fix problem with fake Control press on Alt-Gr
- https://bugs.freedesktop.org/show_bug.cgi?id=3680
- https://bugs.freedesktop.org/show_bug.cgi?id=3497
-
- * InitOutput.c:
- Fix static declaration of winGetBaseDir
-
-2005-07-05 Alexander Gottwald <ago at freedesktop dot org>
-
- * winwindow.h:
- * winmultiwindowwm.c:
- * winscrinit.c:
- External windowmanagers could connect in multiwindow mode which lead
- to strange results with the internal windowmanager.
-
-2005-07-05 Alexander Gottwald <ago at freedesktop dot org>
-
- * *.c:
- Include xwin-config.h if HAVE_XWIN_CONFIG is defined
- Cleanup X11 includes handling
- Warning fixes
-
-2005-06-30 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwndproc.c:
- Pass serverClient instead of NULL to ConfigureWindow.
- This should fix a crash reported by Øyvind Harboe
-
-2005-06-08 Alexander Gottwald <ago at freedesktop dot org>
-
- * winlayouts.h:
- Merge from CYGWIN
- Added layout "French (Canada)" as ca_enhanced
- Added Czech (QWERTY) layout
- * winshaddnl.c:
- Merge from CYGWIN
- Print error code if winStoreColorsShadowDDNL fails
-
-2005-06-08 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwindow.c:
- Fix crash reported by Øyvind Harboe
-
-2005-06-03 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwndproc.c:
- * winblock.c:
- Backout last winRaiseWindow patch which caused stacking problems
-
-2005-05-25 Alexander Gottwald <ago at freedesktop dot org>
-
- * win.h:
- * winmultiwindowwm.c:
- Workaround bug in pthread.h
-
-2005-05-08 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwndproc.c:
- * winblock.c:
- Only call ConfigureWindow from winRaiseWindow if the windows
- message dispatch loop is running.
-
-2005-05-02 Alexander Gottwald <ago at freedesktop dot org>
-
- * winerror.c:
- Print correct logfile in FatalError message
-
-2005-04-19 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwndproc.c:
- Prevent recursive calls to winRaiseWindow.
-
-2005-03-10 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwndproc.c:
- Force rebuilding of window stack if a window changes it's state from
- minimized.
-
-2005-03-07 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwndproc.c:
- * winmultiwindowwindow.c:
- Prevent winRaiseWindow from calling ConfigureWindow if the message
- was sent from within winDestroyWindowsWindow
-
- DestroyWindow send a WM_WINDOWPOSCHANGED to another window causing
- a restacking of all windows, even of the window which is just about
- to destroyed and whose structures may not be intact anymore.
-
-2005-02-24 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwndproc.c:
- on WM_WINDOWPOSCHANGED raise window directly and in sync without
- utilizing the async windowmanager thread. Fixes some restacking
- problems occuring which were timing dependent
- Do not raise the window on WM_ACTIVATE
- Removed unused code for WM_WINDOWPOSCHANGING
- ESC is debug key. Print status but do not abort processing the message
-
-2005-02-12 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwindow.c
- * winmultiwindowwndproc.c
- * winwin32rootlesswndproc.c:
- Cleanup some message debugging
-
-2005-02-12 Alexander Gottwald <ago at freedesktop dot org>
-
- * win.h
- * winfont.c
- * winmultiwindowshape.c
- * winmultiwindowwindow.c
- * winpfbdd.c
- * winshaddd.c
- * winshadddnl.c
- * winshadgdi.c
- * winwindow.c:
- Fix incorrect wrapping of functions. Ensure the pointers from pScreen
- point to the called function even if wrapped functions changed it
-
- * winmultiwindowwindow.c:
- Set the window properties to NULL to avoid referencing freed memory
- because of timing problems after deleting a window
-
- * winscrinit.c:
- Do not wrap ChangeWindowAttributes. All functions are noops currently
-
-2005-02-12 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmsg.h:
- * winmsg.c:
- print window handle in message output
-
-2005-02-08 Alexander Gottwald <ago at freedesktop dot org>
-
- * winkeybd.c:
- * winkeynames.h:
- Updated fix for ABNT2 and HK_Toggle keys.
-
-2005-02-08 Alexander Gottwald <ago at freedesktop dot org>
-
- * winkeybd.h:
- * winkeynames.h:
- Backout ABNT2 and HK_Toggle fix since it broke keys F1 and F4.
-
-2005-02-07 Alexander Gottwald <ago at freedesktop dot org>
-
- * winlayouts.h:
- * winconfig.c:
- Moved keyboard layout table to external file.
-
-2005-02-02 Alexander Gottwald <ago at freedesktop dot org>
-
- * wincreatewnd.c:
- Force ShowWindow if XWin was started via run.exe. Fixes mainwindow
- not showing bug
-
-2005-01-31 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwindow.c
- * winmultiwindowwndproc.c:
- Create windows with SWP_NOACTIVATE flag (updated) (Kensuke Matsuzaki)
-
-2005-01-31 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwndproc.c:
- Fixes for window ordering problem (updated) (Kensuke Matsuzaki)
-
-2005-01-31 Alexander Gottwald <ago at freedesktop dot org>
-
- * winconfig.c:
- Added hungarian keyboard layout.
-
-2005-01-31 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmessages.h
- * winmsg.h
- * winmsg.c
- * winmultiwindowwndproc.c
- * winwin32rootlesswndproc.c
- * winwndproc.c:
- Make logging of messages configurable with environment variables
-
-2005-01-31 Alexander Gottwald <ago at freedesktop dot org>
-
- * InitOutput.c:
- resolve SHGetFolderPath dynamicly since it is not available on all Windows
- systems.
-
-2005-01-12 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmsg.c
- * winmsg.h:
- Introduce function winTrace which prints log message with verbosity 10
- * winmultiwindowwindow.c:
- Use winTrace for 3 heavily called functions
-
-2005-01-11 Alexander Gottwald <ago at freedesktop dot org>
-
- * XWin.man:
- Document the -silent-dup-error switch
-
-2005-01-11 Alexander Gottwald <ago at freedesktop dot org>
-
- * winkeyhook.c:
- Do not grab ALT-TAB when window is in multiwindow mode
-
-2005-01-11 Alexander Gottwald <ago at freedesktop dot org>
-
- * winprefs.h:
- Fix crash with not matching definitions of PATH_MAX
-
-2005-01-10 Alexander Gottwald <ago at freedesktop dot org>
-
- * winkeybd.h
- * winkeynames.h:
- Adjust keysyms for Hiragana_Katakana toggle and backslash/underscore
- on Japanese and ABNT2 keyboards
-
-2005-01-10 Alexander Gottwald <ago at freedesktop dot org>
-
- * winkeybd.h
- * winkeyhook.c
- * winwndproc.c:
- Make keyhook feature work in multiwindowmode too
- Hook windows keys
-
-2005-01-08 Alexander Gottwald <ago at freedesktop dot org>
-
- * winblock.c:
- Fix a possible null-pointer dereference (Keishi Suenaga)
-
-2005-01-06 Alexander Gottwald <ago at freedesktop dot org>
-
- * Imakefile
- * InitOutput.c
- * XWin.rc
- * winerror.c
- * wintrayicon.c
- * winvideo.c
- * winshaddd.c
- * winwindow.h:
- Set PROJECT_NAME in Imakefile to create alternative window titles
- for Cygwin/X and Xming
-
-2005-01-06 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowclass.c:
- * winmultiwindowwm.c:
- Fix crash with non-nullterminated strings (reported by Øyvind Harboe)
-
-2004-12-14 Alexander Gottwald <ago at freedesktop dot org>
-
- * InitOutput.c:
- * winprocarg.c:
- EnumDisplayMonitors is not available on Window NT4 and 95. Resolve
- the function dynamicly
-
-2004-12-08 Alexander Gottwald <ago at freedesktop dot org>
-
- * InitOutput.c:
- * winprocarg.c:
- Added support for placing the main window with the @<monitor#>.
- Patch by Mark Fisher, small changes by Alexander Gottwald
-
-2004-12-06 Alexander Gottwald <ago at freedesktop dot org>
-
- * XWin.rc:
- include windows.h
-
-2004-12-05 Alexander Gottwald <ago at freedesktop dot org>
-
- * ddraw.h:
- redone ddraw.h to be able to mix it with w32api style COM header
- files.
-
- * winmultiwindowwm.c:
- * obj_base.h:
- * ddraw.h:
- obj_base.h is not needed anymore. Using <objbase.h> instead.
-
- * winms.h:
- Use Xwindows.h instead of windows.h
-
- * winresource.h:
- do not include win_ms.h
-
- * win.h:
- remove extra definition of sleep()
-
- * InitOutput.c:
- Set HOME to Documents and Settings/username if not set
-
- * winprefs.c:
- Use Xming basedir instead of ProjectRoot for system.XWinrc
-
- * windialogs.c:
- * winshadgdi.c:
- * winprefs.c:
- Fix callback functions to use wBOOL instead of BOOL
-
- * winmultiwindowwindow.c:
- * winwin32rootless.c:
- * winwin32rootlesswindow.c:
- * winerror.c:
- Fix compiler warnings. Added debug output.
-
- * winconfig.c:
- Fix warning about undefined macro max
-
-2004-12-04 Earle Philhower
-
- * InitOutput.c:
- * win.h:
- * wincreatewnd.c:
- * winprocarg.c:
- Optional position -screen parameter (-screen n WxH+X+Y or
- -screen n W H X Y)
-
-2004-12-03 Alexander Gottwald <ago at freedesktop dot org>
-
- * windialogs.c:
- * win.h:
- * Imakefile:
- * winerror.c:
- Removed scprintf, aprintf and snprintf stuff and use newXprintf
-
-2004-12-02 Alexander Gottwald <ago at freedesktop dot org>
-
- * winwin32rootless.c:
- Adjust the width of the rootless backbuffer to match 32 bit alignment
-
- * winprocarg.c:
- Make multiplemonitors default for -internalwm
-
-2004-12-01 Alexander Gottwald <ago at freedesktop dot org>
-
- * InitOutput.c:
- Set XERRORDB environment variable to relocate the XErrorDB file
-
-2004-11-29 Kensuke Matsuzaki <zakki@peppermint.jp>
-
- * winmultiwindowwm.c:
- Fixed windows.h include for cygwin.
-
- * winmultiwindowwindow.c:
- Bugzilla #1945: Stop unnecessary reordering.
-
-2004-11-24 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwm.c:
- Finally the multiwindow mode defines a default cursor
-
-2004-11-22 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowwm.c:
- Fixes for building multiwindow and internalwm on mingw
- * winwin32rootless.c:
- Changed some debugging output
-
-2004-11-22 Alexander Gottwald <ago at freedesktop dot org>
-
- * InitOutput.c, winglobals.c, winprocarg.c:
- Xming: Place logfile in users tempdir
-
-2004-11-15 Alexander Gottwald <ago at freedesktop dot org>
-
- * Imakefile:
- Remove override of HasSnprintf
-
-2004-11-15 Alexander Gottwald <ago at freedesktop dot org>
-
- * Imakefile:
- * InitInput.c: (InitInput):
- * InitOutput.c: (winClipboardShutdown), (ddxGiveUp),
- (winCheckMount), (winGetBaseDir), (winFixupPaths), (OsVendorInit),
- (winCheckDisplayNumber):
- * win.h:
- * winblock.c: (winBlockHandler):
- * winclipboard.h:
- * winclipboardthread.c: (winClipboardProc):
- * winclipboardwndproc.c: (winClipboardWindowProc):
- * winconfig.c: (winConfigKeyboard), (winConfigFiles):
- * wincreatewnd.c: (winCreateBoundingWindowWindowed):
- * windialogs.c: (winDisplayExitDialog), (winExitDlgProc),
- (winAboutDlgProc):
- * winengine.c: (winSetEngine):
- * winerror.c: (OsVendorVErrorF), (winMessageBoxF), (scprintf):
- * winglobals.c: (winInitializeGlobals):
- * winkeybd.c: (winKeybdReleaseKeys):
- * winmultiwindowicons.c:
- * winmultiwindowwindow.c: (winCreateWindowsWindow):
- * winmultiwindowwm.c:
- * winprefs.c: (ReloadPrefs), (HandleCustomWM_COMMAND):
- * winprocarg.c: (ddxProcessArgument):
- * winscrinit.c: (winFinishScreenInitFB):
- * winshadddnl.c:
- * wintrayicon.c: (winHandleIconMessage):
- * winwakeup.c: (winWakeupHandler):
- * winwin32rootless.c: (winMWExtWMCreateFrame):
- * winwindow.c: (winReshapeRootless):
- * winwindow.h:
- * winwndproc.c: (winWindowProc):
- Bufzilla #1802, http://freedesktop.org/bugzilla/show_bug.cgi?id=1802
- Added mingw (Win32) port
-
-2004-11-11 Alexander Gottwald <ago at freedesktop dot org>
-
- * winconfig.c:
- added keyboard layout "French (Switzerland)"
-
-2004-11-06 Alexander Gottwald <ago at freedesktop dot org>
-
- * winwndproc.c, wintrayicon.c, winscrinit.c:
- * winmultiwindowwindow.c:
- Wrap all mwextwm and internalwm code with XWIN_MULTIWINDOWEXTWM
-
-2004-11-04 Kensuke Matsuzaki <zakki@peppermint.jp>
-
- * InitOutput.c: (winUseMsg):
- * win.h:
- * winmultiwindowwindow.c: (winMinimizeWindow):
- * winmultiwindowwm.c: (PushMessage), (UpdateName),
- (PreserveWin32Stack), (winMultiWindowWMProc),
- (winMultiWindowXMsgProc), (winInitWM), (winInitMultiWindowWM),
- (CheckAnotherWindowManager):
- * winprocarg.c: (winInitializeDefaultScreens),
- (ddxProcessArgument):
- * winscrinit.c: (winFinishScreenInitFB):
- * wintrayicon.c: (winHandleIconMessage):
- * winwin32rootless.c: (InitWin32RootlessEngine),
- (winMWExtWMResizeFrame), (winMWExtWMRestackFrame),
- (winMWExtWMStartDrawing), (winMWExtWMRootlessSwitchWindow),
- (winMWExtWMSetNativeProperty):
- * winwin32rootlesswindow.c: (winMWExtWMReorderWindows),
- (winMWExtWMDecorateWindow), (winMWExtWMUpdateWindowDecoration),
- (winIsInternalWMRunning), (winMWExtWMRestackWindows):
- * winwin32rootlesswndproc.c: (winMWExtWMWindowProc):
- * winwindow.h:
- * winwndproc.c: (winWindowProc):
- Add internalwm mode.
-
-2004-10-28 Alexander Gottwald <ago at freedesktop dot org>
-
- * win.h:
- add fRetryCreateSurface
- * winshaddnl.c (winBltExposedRegionsShadowDDNL):
- try to recreate the primary surface if it was lost
- * winshaddnl.c (winCreatePrimarySurfaceShadowDDNL):
- mark screen to retry creating the primary surface if it failed
-
-2004-10-23 Alexander Gottwald <ago at freedesktop dot org>
-
- * winconfig (winConfigFiles):
- Simplify /etc/X11/font-dirs parsing
-
-2004-10-20 Alexander Gottwald <ago at freedesktop dot org>
-
- * XWin.rc, winresource.h, winwndproc.c:
- Add ShowCursor entry to tray menu
-
-2004-10-20 Alexander Gottwald <ago at freedesktop dot org>
-
- * Imakefile:
- Add ETCX11DIR to DEFINES
- * InitOutput.c (InitOutput):
- * winconfig.c (winConfigFiles) :
- Add entries from /etc/X11/font-dirs to default fontpath
-
-2004-10-16 Alexander Gottwald <ago at freedesktop dot org>
-
- * winprocarg.c (winInitializeDefaultScreens, ddxProcessArgument):
- * win.h:
- Make multiple monitors default for -multiwindow and -mwextwm.
- Added a flag to indicate if the user has overridden the multimonitor
- settings. (Øyvind Harboe, Alexander Gottwald)
-
-2004-10-07 Torrey Lyons <torrey at freedesktop dot org>
-
- * winscrinit.c:
- Add compatibility with the generic rootless layer's new
- DoReorderWindow function.
-
-2004-10-05 Alexander Gottwald <ago at freedesktop dot org>
-
- * XWin.rc:
- Set the dialogstyle to DS_CENTERMOUSE. Dialogs will now popup on the
- monitor where the mouse is and not on the center of the whole desktop.
-
-2004-10-02 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmouse.c (winMouseProc):
- Make sure buttons 1-3 are mouse buttons and wheel events are 4-5
- Document code
- Replace ErrorF with appropriate winMsg
- use a symbolic name for the wheel event offset
-
-2004-10-01 Alexander Gottwald <ago at freedesktop dot org>
-
- * wincreatewnd.c (winCreateBoundingWindowWindowed):
- Do not adjust workarea if native windowmanager is used
-
-2004-09-22 Kensuke Matsuzaki
-
- * winclipboardthread.c (winClipboardErrorHandler):
- * winclipboardwndproc.c (winClipboardWindowProc):
- * winclipboardxevents.c (winClipboardFlushXEvents):
- Fix clipboard bug with unicode applications.
-
-2004-09-17 Torrey Lyons <torrey at freedesktop dot org>
-
- * winscrinit.c: (winFinishScreenInitFB):
- Bugzilla #1032: Make rootless acceleration functions compatible with
- Damage.
-
-2004-09-16 Alexander Gottwald <ago at freedesktop dot org>
-
- * wincreatewnd.c (winCreateBoundingWindowWindowed):
- Remove code which prevented the use from specifying the window
- size in nodecoration mode.
-
-2004-08-26 Chris B <news at sempermax dot com>
-
- * win.h, winmessages.h:
- Add defines for WM_XBUTTON
- * winmouse.c (winMouseProc):
- Query number of mouse buttons from windows.
- * winmultiwindowwndproc.c (winTopLevelWindowProc):
- * winwin32rootlesswndproc.c (winMWExtWMWindowProc):
- * winwndproc.c (winWindowProc):
- Handle WM_XBUTTON messages.
-
-2004-08-02 Kensuke Matsuzaki
-
- * winclipboardthread.c winclipboardwndproc.c:
- * winclipboardxevents.c winwin32rootlesswndproc.c:
- Fix the bug that we can't copy & paste multi-byte string to
- Unicode-base Windows application. Rename fUnicodeSupport to
- fUseUnicode, because it don't mean wheather Windows support
- Unicode or not.
-
-2004-07-31 Alexander Gottwald <ago at freedesktop dot org>
-
- * win.h:
- adjust prototype for winInitCmapPrivates to match Egberts change.
-
-2004-07-30 Egbert Eich <eich at freedesktop dot org>
-
- * winallpriv.c: (winInitCmapPrivates):
- test if colormap with index really exists in the list of
- installed maps before using it.
-
-2004-07-09 Alexander Gottwald <ago at freedesktop dot org>
-
- * winconfig.c: Add entry for irish layout (ie)
- * InitOutput.c, winerror.c, winglobals.c: rename g_fUseMsg to
- g_fSilentFatalError
- * InitOutput.c, winglobals.c, winprocarg.c: added commandline option
- -silent-dup-error to allow silent termination if another instance of
- XWin was found running
-
-2004-06-27 Alexander Gottwald <ago at freedesktop dot org>
-
- * winconfig.c: Add entry for us layout. This changes not much but
- removes a strange error message about the unknown us layout.
-
-2004-06-24 Alexander Gottwald <ago at freedesktop dot org>
-
- * InitOutput.c: Check for textmode mounted /tmp and print a warning
-
-2004-06-15 Harold Hunt <huntharo at msu dot edu>
-
- * windialogs.c: Fix path to locally installed changelog for the About
- dialog box.
-
-2004-05-27 Alexander Gottwald <ago at freedesktop dot org>
-
- * winpriv.c: Create win32 window if not already created
- * winmultiwindowwindow.c: Export winCreateWindowWindow
-
-2004-05-27 Alexander Gottwald <ago at freedesktop dot org>
-
- * win.h: Allow CYGDEBUG to defined in the Makefile
- * winwindow.h: Allow CYGWINDOWING_DEBUG to defined in the Makefile
-
-2004-05-19 Alexander Gottwald <ago at freedesktop dot org>
-
- * winmultiwindowicons.c (winInitGlobalIcons): Load the small default
- icon too
- * winprefs.h, winprefs.c (winOverrideDefaultIcon): Takes the iconsize
- as parameter
-
-2004-05-19 Alexander Gottwald <ago at freedesktop dot org>
-
- * win.h, winmultiwindowicons.c (winXIconToHICON): Takes iconsize
- as parameter
- * winglobals.c, winmultiwindowicons.c: Rename g_hiconX to g_hIconX.
- Added new variable g_hSmallIconX for 16x16 icon.
- * winwindow.h, winmultiwindowicons.c (winInitGlobalIcons): Inits the
- global g_hIconX handles.
- * winwindow.h, winmultiwindowicons.c (winDestroyIcon): Free the icon
- without messing with the global icon handle.
- * winmultiwindowicons.c (winSelectIcons): Generate a custom icon from
- window settigns or set them to globals.
- * winmultiwindowshape.c, winmultiwindowwindow.c, winwin32rootless.c,
- winwin32rootlesswindow.c, winwin32rootlesswndproc.c: Remove
- declaration of g_hiconX;
- * winmultiwindowwindow.c (winCreateWindowsWindow),
- winwin32rootless.c (winMWExtWMCreateFrame): Use winSelectIcons
- to get the window icons. Set the small icon too.
- * winmultiwindowwindow.c (winDestroyWindowsWindow),
- winmultiwindowicons.c (winUpdateIcon),
- winprefs.c (ReloadEnumWindowsProc),
- winwin32rootlesswindow.c (winMWExtWMUpdateIcon),
- winwin32rootless.c (winMWExtWMDestroyFrame): Use winDestroyIcon
- to free the icon without destroying the global icon.
-
-2004-05-17 Alexander Gottwald <ago at freedesktop dot org>
-
- * windialogs.c (winExitDlgProc, winAboutDlgProc),
- winmultiwindowwndproc.c (winTopLevelWindowProc),
- winwndproc.c (winWindowProc): Check if g_fSoftwareCursor is set
- before calling ShowCursor.
-
-2004-05-09 Dan Wilks <Dan_Wilks at intuit dot com>
-
- * winclipboard.h: Add extern prototypes for winDebug, winErrorFVerb
- copied from winmsg.h.
- * winclipboardinit.c (winFixClipboardChain): Post rather than send the
- reinit message to the clipboard window. Sending the message caused,
- or possibly just exacerbated an existing, race condition that would
- cause the X server to hang when coming back from a remote desktop
- session.
- * winclipboardwndproc.c (winProcessXEventsTimeout): switch to new
- logging api's.
- * winclipboardwindproc.c (winClipboardWindowProc): switch to new
- logging api's. Add some additional debug logging. Make best effort
- to prevent our window appearing twice in the clipboard chain. Also
- detect loops when they occur and try to behave in a reasonable way.
-
-# vim:ts=8:noexpandtab:encoding=utf8
diff --git a/nx-X11/programs/Xserver/hw/xwin/Imakefile b/nx-X11/programs/Xserver/hw/xwin/Imakefile
deleted file mode 100644
index fe99f0853..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/Imakefile
+++ /dev/null
@@ -1,310 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xwin/Imakefile,v 1.18 2003/10/02 13:30:09 eich Exp $
-
-#include <Server.tmpl>
-
-EXTRADEFINES =
-
-#if HasShm
-SHMDEF = -DHAS_SHM
-#endif
-
-#ifdef cygwinArchitecture
-MMAPDEF = -DHAS_MMAP
-#endif
-
-#if defined(HasDevWindow) && HasDevWindows
-EXTRADEFINES += -DHAS_DEVWINDOWS
-#endif
-
-#if defined(RelocateProjectRoot) && RelocateProjectRoot
-EXTRADEFINES += -DRELOCATE_PROJECTROOT
-#endif
-
-#ifdef cygwinArchitecture
-EXTRADEFINES += -DREAD_FONTDIRS
-#endif
-
-#if defined(mingwArchitecture)
-PROJECT_NAME = Xming
-#elif defined(cygwinArchitecture)
-PROJECT_NAME = Cygwin/X
-#else
-PROJECT_NAME = Xorg
-#endif
-PROJECT_DEFINES = -DPROJECT_NAME="\"$(PROJECT_NAME)\""
-RC_PROJECT_DEFINES = -DPROJECT_NAME="\\\"$(PROJECT_NAME)\\\""
-EXTRA_DEFINES = $(PROJECT_DEFINES)
-
-#if BuildXWinClipboard
-SRCS_CLIPBOARD = \
- winclipboardinit.c \
- winclipboardtextconv.c \
- winclipboardthread.c \
- winclipboardunicode.c \
- winclipboardwndproc.c \
- winclipboardwrappers.c \
- winclipboardxevents.c
-#endif
-
-#if GlxUseWindows
-SRCS_GLX_WINDOWS = \
- winpriv.c
-#endif
-
-#if BuildXWinMultiWindow
-SRCS_MULTIWINDOW = \
- winmultiwindowshape.c \
- winmultiwindowwindow.c \
- winmultiwindowwm.c \
- winmultiwindowwndproc.c
-#endif
-
-#if BuildXWinMultiWindowExtWM
-SRCS_MULTIWINDOWEXTWM = \
- winwin32rootless.c \
- winwin32rootlesswindow.c \
- winwin32rootlesswndproc.c \
- winwindowswm.c
-#endif
-
-#if BuildXWinNativeGDI
-SRCS_NATIVEGDI = \
- winclip.c \
- winfillsp.c \
- winfont.c \
- wingc.c \
- wingetsp.c \
- winnativegdi.c \
- winpixmap.c \
- winpntwin.c \
- winpolyline.c \
- winpushpxl.c \
- winrop.c \
- winsetsp.c
-#endif
-
-#if BuildXWinPrimaryFB
-SRCS_PRIMARYFB = \
- winpfbdd.c
-#endif
-
-#if BuildRandR
-SRCS_RANDR = \
- winrandr.c
-#endif
-
-#if BuildXvExt
-SRCS_XV = \
- winvideo.c
-#endif
-
-SRCS = InitInput.c \
- InitOutput.c \
- stubs.c \
- winallpriv.c \
- winauth.c \
- winblock.c \
- wincmap.c \
- winconfig.c \
- wincreatewnd.c \
- wincursor.c \
- windialogs.c \
- winengine.c \
- winerror.c \
- winglobals.c \
- winkeybd.c \
- winkeyhook.c \
- winmisc.c \
- winmouse.c \
- winmsg.c \
- winmultiwindowclass.c \
- winmultiwindowicons.c \
- winprefs.c \
- winprefslex.l \
- winprefsyacc.y \
- winprocarg.c \
- winregistry.c \
- winscrinit.c \
- winshaddd.c \
- winshadddnl.c \
- winshadgdi.c \
- wintrayicon.c \
- winvalargs.c \
- winwakeup.c \
- winwindow.c \
- winwndproc.c \
- $(SRCS_CLIPBOARD) \
- $(SRCS_GLX_WINDOWS) \
- $(SRCS_MULTIWINDOW) \
- $(SRCS_MULTIWINDOWEXTWM) \
- $(SRCS_NATIVEGDI) \
- $(SRCS_PRIMARYFB) \
- $(SRCS_RANDR) \
- $(SRCS_XV)
-
-winprefsyacc.c: winprefsyacc.y
- bison -d -o winprefsyacc.c winprefsyacc.y
-
-winprefsyacc.h: winprefsyacc.c
-
-winprefslex.c: winprefsyacc.y winprefslex.l winprefsyacc.h
- flex -i -owinprefslex.c winprefslex.l
-
-clean::
- $(RM) winprefslex.c winprefsyacc.h winprefsyacc.c
-
-depend:: winprefslex.c winprefsyacc.h winprefsyacc.c
-
-#if BuildXWinClipboard
-OBJS_CLIPBOARD = \
- winclipboardinit.o \
- winclipboardtextconv.o \
- winclipboardthread.o \
- winclipboardunicode.o \
- winclipboardwndproc.o \
- winclipboardwrappers.o \
- winclipboardxevents.o
-#endif
-
-#if GlxUseWindows
-OBJS_GLX_WINDOWS = \
- winpriv.o
-#endif
-
-#if BuildXWinMultiWindow
-OBJS_MULTIWINDOW = \
- winmultiwindowshape.o \
- winmultiwindowwindow.o \
- winmultiwindowwm.o \
- winmultiwindowwndproc.o
-#endif
-
-#if BuildXWinMultiWindowExtWM
-OBJS_MULTIWINDOWEXTWM = \
- winwin32rootless.o \
- winwin32rootlesswindow.o \
- winwin32rootlesswndproc.o \
- winwindowswm.o
-#endif
-
-#if BuildXWinNativeGDI
-OBJS_NATIVEGDI = \
- winclip.o \
- winfillsp.o \
- winfont.o \
- wingc.o \
- wingetsp.o \
- winnativegdi.o \
- winpixmap.o \
- winpntwin.o \
- winpolyline.o \
- winpushpxl.o \
- winrop.o \
- winsetsp.o
-#endif
-
-#if BuildXWinPrimaryFB
-OBJS_PRIMARYFB = \
- winpfbdd.o
-#endif
-
-#if BuildRandR
-OBJS_RANDR = \
- winrandr.o
-#endif
-
-#if BuildXvExt
-OBJS_XV = \
- winvideo.o
-#endif
-
-OBJS = InitInput.o \
- InitOutput.o \
- stubs.o \
- winallpriv.o \
- winauth.o \
- winblock.o \
- wincmap.o \
- winconfig.o \
- wincreatewnd.o \
- wincursor.o \
- windialogs.o \
- winengine.o \
- winerror.o \
- winglobals.o \
- winkeybd.o \
- winkeyhook.o \
- winmisc.o \
- winmouse.o \
- winmsg.o \
- winmultiwindowclass.o \
- winmultiwindowicons.o \
- winprefs.o \
- winprefslex.o \
- winprefsyacc.o \
- winprocarg.o \
- winregistry.o \
- winscrinit.o \
- winshaddd.o \
- winshadddnl.o \
- winshadgdi.o \
- wintrayicon.o \
- winvalargs.o \
- winwakeup.o \
- winwindow.o \
- winwndproc.o \
- $(OBJS_CLIPBOARD) \
- $(OBJS_GLX_WINDOWS) \
- $(OBJS_MULTIWINDOW) \
- $(OBJS_MULTIWINDOWEXTWM) \
- $(OBJS_NATIVEGDI) \
- $(OBJS_PRIMARYFB) \
- $(OBJS_RANDR) \
- $(OBJS_XV)
-
-INCLUDES = -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \
- -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi \
- -I$(SERVERSRC)/miext/shadow \
- -I$(SERVERSRC)/miext/rootless \
- -I$(SERVERSRC)/miext/rootless/safeAlpha \
- -I$(SERVERSRC)/include -I$(SERVERSRC)/os \
- -I$(EXTINCSRC) -I$(XINCLUDESRC) \
- -I$(SERVERSRC)/render -I$(SERVERSRC)/randr \
- -I$(WINDOWSWMLIBSRC)
-
-#ifdef XVendorString
-VENDORSTRING = XVendorString
- VENDOR_STRING = -DVENDOR_STRING=\"$(VENDORSTRING)\"
-#endif
-
-#ifdef XVendorContact
-VENDORCONTACT = XVendorContact
- VENDOR_CONTACT = -DVENDOR_CONTACT=\"$(VENDORCONTACT)\"
-#endif
-
-#ifdef CygxVersionString
-CYGXVERSIONSTRING = CygxVersionString
- VERSION_STRING = -DVERSION_STRING=\"$(CYGXVERSIONSTRING)\"
-#endif
-
-VENDOR_DEFINES = $(VENDOR_STRING) $(VENDOR_CONTACT) $(VERSION_STRING)
-
-DEFINES = $(OS_DEFINES) $(SHMDEF) $(MMAPDEF) $(EXTRADEFINES) \
- -DPROJECTROOT="\"$(PROJECTROOT)\"" -DETCX11DIR="\"$(ETCX11DIR)\""
-
-LinkSourceFile(stubs.c,$(SERVERSRC)/Xi)
-SpecialCObjectRule(stubs,$(ICONFIGFILES),$(EXT_DEFINES))
-
-SpecialCObjectRule(winerror,$(ICONFIGFILES),$(DEFINES) $(VENDOR_DEFINES))
-SpecialCObjectRule(winprocarg,$(ICONFIGFILES),$(DEFINES) $(VENDOR_DEFINES))
-
-/* Build the Windows resource file (contains the program icon, etc.) */
-ResourceObjectRule(XWin,X.ico X-boxed.ico,$(RC_PROJECT_DEFINES))
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(XWin,$(OBJS))
-
-InstallManPage(XWin,$(MANDIR))
-InstallManPage(XWinrc,$(MANDIR))
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/hw/xwin/InitInput.c b/nx-X11/programs/Xserver/hw/xwin/InitInput.c
deleted file mode 100644
index 8b72416ab..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/InitInput.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/* $TOG: InitInput.c /main/12 1998/02/10 13:23:52 kaleb $ */
-/*
-
- Copyright 1993, 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.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xwin/InitInput.c,v 1.11 2002/07/05 09:19:25 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#ifdef XWIN_CLIPBOARD
-# include "../../Xext/xf86miscproc.h"
-#endif
-#include "dixstruct.h"
-
-
-/*
- * Local function prototypes
- */
-
-#ifdef XWIN_CLIPBOARD
-DISPATCH_PROC(winProcEstablishConnection);
-DISPATCH_PROC(winProcQueryTree);
-DISPATCH_PROC(winProcSetSelectionOwner);
-#endif
-
-
-/*
- * Local global declarations
- */
-
-CARD32 g_c32LastInputEventTime = 0;
-
-
-/*
- * References to external symbols
- */
-
-#ifdef HAS_DEVWINDOWS
-extern int g_fdMessageQueue;
-#endif
-extern Bool g_fXdmcpEnabled;
-#ifdef XWIN_CLIPBOARD
-extern winDispatchProcPtr winProcEstablishConnectionOrig;
-extern winDispatchProcPtr winProcQueryTreeOrig;
-#endif
-
-
-/* Called from dix/devices.c */
-/*
- * All of our keys generate up and down transition notifications,
- * so all of our keys can be used as modifiers.
- *
- * An example of a modifier is mapping the A key to the Control key.
- * A has to be a legal modifier. I think.
- */
-
-Bool
-LegalModifier (unsigned int uiKey, DevicePtr pDevice)
-{
- return TRUE;
-}
-
-
-/* Called from dix/dispatch.c */
-/*
- * Run through the Windows message queue(s) one more time.
- * Tell mi to dequeue the events that we have sent it.
- */
-void
-ProcessInputEvents (void)
-{
-#if 0
- ErrorF ("ProcessInputEvents\n");
-#endif
-
- mieqProcessInputEvents ();
- miPointerUpdate ();
-
-#if 0
- ErrorF ("ProcessInputEvents - returning\n");
-#endif
-}
-
-
-int
-TimeSinceLastInputEvent ()
-{
- if (g_c32LastInputEventTime == 0)
- g_c32LastInputEventTime = GetTickCount ();
- return GetTickCount () - g_c32LastInputEventTime;
-}
-
-
-/* See Porting Layer Definition - p. 17 */
-void
-InitInput (int argc, char *argv[])
-{
- DeviceIntPtr pMouse, pKeyboard;
-
-#if CYGDEBUG
- winDebug ("InitInput\n");
-#endif
-
-#ifdef XWIN_CLIPBOARD
- /*
- * Wrap some functions at every generation of the server.
- */
- if (InitialVector[2] != winProcEstablishConnection)
- {
- winProcEstablishConnectionOrig = InitialVector[2];
- InitialVector[2] = winProcEstablishConnection;
- }
- if (g_fXdmcpEnabled
- && ProcVector[X_QueryTree] != winProcQueryTree)
- {
- winProcQueryTreeOrig = ProcVector[X_QueryTree];
- ProcVector[X_QueryTree] = winProcQueryTree;
- }
-#endif
-
- pMouse = AddInputDevice (winMouseProc, TRUE);
- pKeyboard = AddInputDevice (winKeybdProc, TRUE);
-
- RegisterPointerDevice (pMouse);
- RegisterKeyboardDevice (pKeyboard);
-
- miRegisterPointerDevice (screenInfo.screens[0], pMouse);
- mieqInit ((DevicePtr)pKeyboard, (DevicePtr)pMouse);
-
- /* Initialize the mode key states */
- winInitializeModeKeyStates ();
-
-#ifdef HAS_DEVWINDOWS
- /* Only open the windows message queue device once */
- if (g_fdMessageQueue == WIN_FD_INVALID)
- {
- /* Open a file descriptor for the Windows message queue */
- g_fdMessageQueue = open (WIN_MSG_QUEUE_FNAME, O_RDONLY);
-
- if (g_fdMessageQueue == -1)
- {
- FatalError ("InitInput - Failed opening %s\n",
- WIN_MSG_QUEUE_FNAME);
- }
-
- /* Add the message queue as a device to wait for in WaitForSomething */
- AddEnabledDevice (g_fdMessageQueue);
- }
-#endif
-
-#if CYGDEBUG
- winDebug ("InitInput - returning\n");
-#endif
-}
-
-
-#ifdef XTESTEXT1
-void
-XTestGenerateEvent (int dev_type, int keycode, int keystate,
- int mousex, int mousey)
-{
- ErrorF ("XTestGenerateEvent\n");
-}
-
-
-void
-XTestGetPointerPos (short *fmousex, short *fmousey)
-{
- ErrorF ("XTestGetPointerPos\n");
-}
-
-
-void
-XTestJumpPointer (int jx, int jy, int dev_type)
-{
- ErrorF ("XTestJumpPointer\n");
-}
-#endif
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/InitOutput.c b/nx-X11/programs/Xserver/hw/xwin/InitOutput.c
deleted file mode 100644
index c5242cc6f..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/InitOutput.c
+++ /dev/null
@@ -1,1172 +0,0 @@
-/* $TOG: InitOutput.c /main/20 1998/02/10 13:23:56 kaleb $ */
-/*
-
-Copyright 1993, 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.
-
-*/
-/* $XFree86: xc/programs/Xserver/hw/xwin/InitOutput.c,v 1.34 2003/10/02 13:30:09 eich Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "winmsg.h"
-#include "winconfig.h"
-#include "winprefs.h"
-#ifdef XWIN_CLIPBOARD
-#include "X11/Xlocale.h"
-#endif
-#ifdef DPMSExtension
-#include "dpmsproc.h"
-#endif
-#ifdef __CYGWIN__
-#include <mntent.h>
-#endif
-#if defined(XKB) && defined(WIN32)
-#include <X11/extensions/XKBsrv.h>
-#endif
-#ifdef RELOCATE_PROJECTROOT
-#include <shlobj.h>
-typedef HRESULT (*SHGETFOLDERPATHPROC)(
- HWND hwndOwner,
- int nFolder,
- HANDLE hToken,
- DWORD dwFlags,
- LPTSTR pszPath
-);
-#endif
-
-
-/*
- * References to external symbols
- */
-
-extern int g_iNumScreens;
-extern winScreenInfo g_ScreenInfo[];
-extern int g_iLastScreen;
-extern char * g_pszCommandLine;
-extern Bool g_fSilentFatalError;
-
-extern char * g_pszLogFile;
-extern Bool g_fLogFileChanged;
-extern int g_iLogVerbose;
-Bool g_fLogInited;
-
-extern Bool g_fXdmcpEnabled;
-#ifdef HAS_DEVWINDOWS
-extern int g_fdMessageQueue;
-#endif
-extern const char * g_pszQueryHost;
-extern HINSTANCE g_hInstance;
-
-#ifdef XWIN_CLIPBOARD
-extern Bool g_fUnicodeClipboard;
-extern Bool g_fClipboardLaunched;
-extern Bool g_fClipboardStarted;
-extern pthread_t g_ptClipboardProc;
-extern HWND g_hwndClipboard;
-extern Bool g_fClipboard;
-#endif
-
-extern HMODULE g_hmodDirectDraw;
-extern FARPROC g_fpDirectDrawCreate;
-extern FARPROC g_fpDirectDrawCreateClipper;
-
-extern HMODULE g_hmodCommonControls;
-extern FARPROC g_fpTrackMouseEvent;
-extern Bool g_fNoHelpMessageBox;
-extern Bool g_fSilentDupError;
-
-
-/*
- * Function prototypes
- */
-
-#ifdef XWIN_CLIPBOARD
-static void
-winClipboardShutdown (void);
-#endif
-
-#if defined(DDXOSVERRORF)
-void
-OsVendorVErrorF (const char *pszFormat, va_list va_args);
-#endif
-
-void
-winInitializeDefaultScreens (void);
-
-static Bool
-winCheckDisplayNumber (void);
-
-void
-winLogCommandLine (int argc, char *argv[]);
-
-void
-winLogVersionInfo (void);
-
-Bool
-winValidateArgs (void);
-
-#ifdef RELOCATE_PROJECTROOT
-const char *
-winGetBaseDir(void);
-#endif
-
-/*
- * For the depth 24 pixmap we default to 32 bits per pixel, but
- * we change this pixmap format later if we detect that the display
- * is going to be running at 24 bits per pixel.
- *
- * FIXME: On second thought, don't DIBs only support 32 bits per pixel?
- * DIBs are the underlying bitmap used for DirectDraw surfaces, so it
- * seems that all pixmap formats with depth 24 would be 32 bits per pixel.
- * Confirm whether depth 24 DIBs can have 24 bits per pixel, then remove/keep
- * the bits per pixel adjustment and update this comment to reflect the
- * situation. Harold Hunt - 2002/07/02
- */
-
-static PixmapFormatRec g_PixmapFormats[] = {
- { 1, 1, BITMAP_SCANLINE_PAD },
- { 4, 8, BITMAP_SCANLINE_PAD },
- { 8, 8, BITMAP_SCANLINE_PAD },
- { 15, 16, BITMAP_SCANLINE_PAD },
- { 16, 16, BITMAP_SCANLINE_PAD },
- { 24, 32, BITMAP_SCANLINE_PAD },
-#ifdef RENDER
- { 32, 32, BITMAP_SCANLINE_PAD }
-#endif
-};
-
-const int NUMFORMATS = sizeof (g_PixmapFormats) / sizeof (g_PixmapFormats[0]);
-
-#ifdef XWIN_CLIPBOARD
-static void
-winClipboardShutdown (void)
-{
- /* Close down clipboard resources */
- if (g_fClipboard && g_fClipboardLaunched && g_fClipboardStarted)
- {
- /* Synchronously destroy the clipboard window */
- if (g_hwndClipboard != NULL)
- {
- SendMessage (g_hwndClipboard, WM_DESTROY, 0, 0);
- /* NOTE: g_hwndClipboard is set to NULL in winclipboardthread.c */
- }
- else
- return;
-
- /* Wait for the clipboard thread to exit */
- pthread_join (g_ptClipboardProc, NULL);
-
- g_fClipboardLaunched = FALSE;
- g_fClipboardStarted = FALSE;
-
- winDebug ("winClipboardShutdown - Clipboard thread has exited.\n");
- }
-}
-#endif
-
-
-#if defined(DDXBEFORERESET)
-/*
- * Called right before KillAllClients when the server is going to reset,
- * allows us to shutdown our seperate threads cleanly.
- */
-
-void
-ddxBeforeReset (void)
-{
- winDebug ("ddxBeforeReset - Hello\n");
-
-#ifdef XWIN_CLIPBOARD
- winClipboardShutdown ();
-#endif
-}
-#endif
-
-
-/* See Porting Layer Definition - p. 57 */
-void
-ddxGiveUp (void)
-{
- int i;
-
-#if CYGDEBUG
- winDebug ("ddxGiveUp\n");
-#endif
-
- /* Perform per-screen deinitialization */
- for (i = 0; i < g_iNumScreens; ++i)
- {
- /* Delete the tray icon */
- if (!g_ScreenInfo[i].fNoTrayIcon && g_ScreenInfo[i].pScreen)
- winDeleteNotifyIcon (winGetScreenPriv (g_ScreenInfo[i].pScreen));
- }
-
-#ifdef XWIN_MULTIWINDOW
- /* Notify the worker threads we're exiting */
- winDeinitMultiWindowWM ();
-#endif
-
-#ifdef HAS_DEVWINDOWS
- /* Close our handle to our message queue */
- if (g_fdMessageQueue != WIN_FD_INVALID)
- {
- /* Close /dev/windows */
- close (g_fdMessageQueue);
-
- /* Set the file handle to invalid */
- g_fdMessageQueue = WIN_FD_INVALID;
- }
-#endif
-
- if (!g_fLogInited) {
- LogInit (g_pszLogFile, NULL);
- g_fLogInited = TRUE;
- }
- LogClose ();
-
- /*
- * At this point we aren't creating any new screens, so
- * we are guaranteed to not need the DirectDraw functions.
- */
- if (g_hmodDirectDraw != NULL)
- {
- FreeLibrary (g_hmodDirectDraw);
- g_hmodDirectDraw = NULL;
- g_fpDirectDrawCreate = NULL;
- g_fpDirectDrawCreateClipper = NULL;
- }
-
- /* Unload our TrackMouseEvent funtion pointer */
- if (g_hmodCommonControls != NULL)
- {
- FreeLibrary (g_hmodCommonControls);
- g_hmodCommonControls = NULL;
- g_fpTrackMouseEvent = (FARPROC) (void (*)(void))NoopDDA;
- }
-
- /* Free concatenated command line */
- if (g_pszCommandLine)
- {
- free (g_pszCommandLine);
- g_pszCommandLine = NULL;
- }
-
- /* Remove our keyboard hook if it is installed */
- winRemoveKeyboardHookLL ();
-
- /* Tell Windows that we want to end the app */
- PostQuitMessage (0);
-}
-
-
-/* See Porting Layer Definition - p. 57 */
-void
-AbortDDX (void)
-{
-#if CYGDEBUG
- winDebug ("AbortDDX\n");
-#endif
- ddxGiveUp ();
-}
-
-#ifdef __CYGWIN__
-/* hasmntopt is currently not implemented for cygwin */
-static const char *winCheckMntOpt(const struct mntent *mnt, const char *opt)
-{
- const char *s;
- size_t len;
- if (mnt == NULL)
- return NULL;
- if (opt == NULL)
- return NULL;
- if (mnt->mnt_opts == NULL)
- return NULL;
-
- len = strlen(opt);
- s = strstr(mnt->mnt_opts, opt);
- if (s == NULL)
- return NULL;
- if ((s == mnt->mnt_opts || *(s-1) == ',') && (s[len] == 0 || s[len] == ','))
- return (char *)opt;
- return NULL;
-}
-
-static void
-winCheckMount(void)
-{
- FILE *mnt;
- struct mntent *ent;
-
- enum { none = 0, sys_root, user_root, sys_tmp, user_tmp }
- level = none, curlevel;
- BOOL binary = TRUE;
-
- mnt = setmntent("/etc/mtab", "r");
- if (mnt == NULL)
- {
- ErrorF("setmntent failed");
- return;
- }
-
- while ((ent = getmntent(mnt)) != NULL)
- {
- BOOL system = (strcmp(ent->mnt_type, "system") == 0);
- BOOL root = (strcmp(ent->mnt_dir, "/") == 0);
- BOOL tmp = (strcmp(ent->mnt_dir, "/tmp") == 0);
-
- if (system)
- {
- if (root)
- curlevel = sys_root;
- else if (tmp)
- curlevel = sys_tmp;
- else
- continue;
- }
- else
- {
- if (root)
- curlevel = user_root;
- else if (tmp)
- curlevel = user_tmp;
- else
- continue;
- }
-
- if (curlevel <= level)
- continue;
- level = curlevel;
-
- if (winCheckMntOpt(ent, "binmode") == NULL)
- binary = 0;
- else
- binary = 1;
- }
-
- if (endmntent(mnt) != 1)
- {
- ErrorF("endmntent failed");
- return;
- }
-
- if (!binary)
- winMsg(X_WARNING, "/tmp mounted int textmode\n");
-}
-#else
-static void
-winCheckMount(void)
-{
-}
-#endif
-
-#ifdef RELOCATE_PROJECTROOT
-const char *
-winGetBaseDir(void)
-{
- static BOOL inited = FALSE;
- static char buffer[MAX_PATH];
- if (!inited)
- {
- char *fendptr;
- HMODULE module = GetModuleHandle(NULL);
- DWORD size = GetModuleFileName(module, buffer, sizeof(buffer));
- if (sizeof(buffer) > 0)
- buffer[sizeof(buffer)-1] = 0;
-
- fendptr = buffer + size;
- while (fendptr > buffer)
- {
- if (*fendptr == '\\' || *fendptr == '/')
- {
- *fendptr = 0;
- break;
- }
- fendptr--;
- }
- inited = TRUE;
- }
- return buffer;
-}
-#endif
-
-static void
-winFixupPaths (void)
-{
- BOOL changed_fontpath = FALSE;
- MessageType font_from = X_DEFAULT;
-#ifdef RELOCATE_PROJECTROOT
- const char *basedir = winGetBaseDir();
- size_t basedirlen = strlen(basedir);
-#endif
-
-#ifdef READ_FONTDIRS
- {
- /* Open fontpath configuration file */
- FILE *fontdirs = fopen(ETCX11DIR "/font-dirs", "rt");
- if (fontdirs != NULL)
- {
- char buffer[256];
- int needs_sep = TRUE;
- int comment_block = FALSE;
-
- /* get defautl fontpath */
- char *fontpath = xstrdup(defaultFontPath);
- size_t size = strlen(fontpath);
-
- /* read all lines */
- while (!feof(fontdirs))
- {
- size_t blen;
- char *hashchar;
- char *str;
- int has_eol = FALSE;
-
- /* read one line */
- str = fgets(buffer, sizeof(buffer), fontdirs);
- if (str == NULL) /* stop on error or eof */
- break;
-
- if (strchr(str, '\n') != NULL)
- has_eol = TRUE;
-
- /* check if block is continued comment */
- if (comment_block)
- {
- /* ignore all input */
- *str = 0;
- blen = 0;
- if (has_eol) /* check if line ended in this block */
- comment_block = FALSE;
- }
- else
- {
- /* find comment character. ignore all trailing input */
- hashchar = strchr(str, '#');
- if (hashchar != NULL)
- {
- *hashchar = 0;
- if (!has_eol) /* mark next block as continued comment */
- comment_block = TRUE;
- }
- }
-
- /* strip whitespaces from beginning */
- while (*str == ' ' || *str == '\t')
- str++;
-
- /* get size, strip whitespaces from end */
- blen = strlen(str);
- while (blen > 0 && (str[blen-1] == ' ' ||
- str[blen-1] == '\t' || str[blen-1] == '\n'))
- {
- str[--blen] = 0;
- }
-
- /* still something left to add? */
- if (blen > 0)
- {
- size_t newsize = size + blen;
- /* reserve one character more for ',' */
- if (needs_sep)
- newsize++;
-
- /* allocate memory */
- if (fontpath == NULL)
- fontpath = malloc(newsize+1);
- else
- fontpath = realloc(fontpath, newsize+1);
-
- /* add separator */
- if (needs_sep)
- {
- fontpath[size] = ',';
- size++;
- needs_sep = FALSE;
- }
-
- /* mark next line as new entry */
- if (has_eol)
- needs_sep = TRUE;
-
- /* add block */
- strncpy(fontpath + size, str, blen);
- fontpath[newsize] = 0;
- size = newsize;
- }
- }
-
- /* cleanup */
- fclose(fontdirs);
- defaultFontPath = xstrdup(fontpath);
- free(fontpath);
- changed_fontpath = TRUE;
- font_from = X_CONFIG;
- }
- }
-#endif /* READ_FONTDIRS */
-#ifdef RELOCATE_PROJECTROOT
- {
- const char *libx11dir = PROJECTROOT "/lib/X11";
- size_t libx11dir_len = strlen(libx11dir);
- char *newfp = NULL;
- size_t newfp_len = 0;
- const char *endptr, *ptr, *oldptr = defaultFontPath;
-
- endptr = oldptr + strlen(oldptr);
- ptr = strchr(oldptr, ',');
- if (ptr == NULL)
- ptr = endptr;
- while (ptr != NULL)
- {
- size_t oldfp_len = (ptr - oldptr);
- size_t newsize = oldfp_len;
- char *newpath = malloc(newsize + 1);
- strncpy(newpath, oldptr, newsize);
- newpath[newsize] = 0;
-
-
- if (strncmp(libx11dir, newpath, libx11dir_len) == 0)
- {
- char *compose;
- newsize = newsize - libx11dir_len + basedirlen;
- compose = malloc(newsize + 1);
- strcpy(compose, basedir);
- strncat(compose, newpath + libx11dir_len, newsize - basedirlen);
- compose[newsize] = 0;
- free(newpath);
- newpath = compose;
- }
-
- oldfp_len = newfp_len;
- if (oldfp_len > 0)
- newfp_len ++; /* space for separator */
- newfp_len += newsize;
-
- if (newfp == NULL)
- newfp = malloc(newfp_len + 1);
- else
- newfp = realloc(newfp, newfp_len + 1);
-
- if (oldfp_len > 0)
- {
- strcpy(newfp + oldfp_len, ",");
- oldfp_len++;
- }
- strcpy(newfp + oldfp_len, newpath);
-
- free(newpath);
-
- if (*ptr == 0)
- {
- oldptr = ptr;
- ptr = NULL;
- } else
- {
- oldptr = ptr + 1;
- ptr = strchr(oldptr, ',');
- if (ptr == NULL)
- ptr = endptr;
- }
- }
-
- defaultFontPath = xstrdup(newfp);
- free(newfp);
- changed_fontpath = TRUE;
- }
-#endif /* RELOCATE_PROJECTROOT */
- if (changed_fontpath)
- winMsg (font_from, "FontPath set to \"%s\"\n", defaultFontPath);
-
-#ifdef RELOCATE_PROJECTROOT
- if (1) {
- const char *libx11dir = "/usr/X11R6/lib/X11";
- size_t libx11dir_len = strlen(libx11dir);
-
- if (strncmp(libx11dir, rgbPath, libx11dir_len) == 0)
- {
- size_t newsize = strlen(rgbPath) - libx11dir_len + basedirlen;
- char *compose = malloc(newsize + 1);
- strcpy(compose, basedir);
- strcat(compose, rgbPath + libx11dir_len);
- compose[newsize] = 0;
- rgbPath = xstrdup (compose);
- free (compose);
-
- winMsg (X_DEFAULT, "RgbPath set to \"%s\"\n", rgbPath);
- }
- }
-
- if (getenv("XKEYSYMDB") == NULL)
- {
- char buffer[MAX_PATH];
- snprintf(buffer, sizeof(buffer), "XKEYSYMDB=%s\\XKeysymDB",
- basedir);
- buffer[sizeof(buffer)-1] = 0;
- putenv(buffer);
- }
- if (getenv("XERRORDB") == NULL)
- {
- char buffer[MAX_PATH];
- snprintf(buffer, sizeof(buffer), "XERRORDB=%s\\XErrorDB",
- basedir);
- buffer[sizeof(buffer)-1] = 0;
- putenv(buffer);
- }
- if (getenv("XLOCALEDIR") == NULL)
- {
- char buffer[MAX_PATH];
- snprintf(buffer, sizeof(buffer), "XLOCALEDIR=%s\\locale",
- basedir);
- buffer[sizeof(buffer)-1] = 0;
- putenv(buffer);
- }
- if (getenv("HOME") == NULL)
- {
- HMODULE shfolder;
- SHGETFOLDERPATHPROC shgetfolderpath = NULL;
- char buffer[MAX_PATH + 5];
- strncpy(buffer, "HOME=", 5);
-
- /* Try to load SHGetFolderPath from shfolder.dll and shell32.dll */
-
- shfolder = LoadLibrary("shfolder.dll");
- /* fallback to shell32.dll */
- if (shfolder == NULL)
- shfolder = LoadLibrary("shell32.dll");
-
- /* resolve SHGetFolderPath */
- if (shfolder != NULL)
- shgetfolderpath = (SHGETFOLDERPATHPROC)GetProcAddress(shfolder, "SHGetFolderPathA");
-
- /* query appdata directory */
- if (shgetfolderpath &&
- shgetfolderpath(NULL, CSIDL_APPDATA|CSIDL_FLAG_CREATE, NULL, 0,
- buffer + 5) == 0)
- {
- putenv(buffer);
- } else
- {
- winMsg (X_ERROR, "Can not determine HOME directory\n");
- }
- if (shfolder != NULL)
- FreeLibrary(shfolder);
- }
- if (!g_fLogFileChanged) {
- static char buffer[MAX_PATH];
- DWORD size = GetTempPath(sizeof(buffer), buffer);
- if (size && size < sizeof(buffer))
- {
- snprintf(buffer + size, sizeof(buffer) - size,
- "XWin.%s.log", display);
- buffer[sizeof(buffer)-1] = 0;
- g_pszLogFile = buffer;
- winMsg (X_DEFAULT, "Logfile set to \"%s\"\n", g_pszLogFile);
- }
- }
-#ifdef XKB
- {
- static char xkbbasedir[MAX_PATH];
-
- snprintf(xkbbasedir, sizeof(xkbbasedir), "%s\\xkb", basedir);
- if (sizeof(xkbbasedir) > 0)
- xkbbasedir[sizeof(xkbbasedir)-1] = 0;
- XkbBaseDirectory = xkbbasedir;
- }
-#endif /* XKB */
-#endif /* RELOCATE_PROJECTROOT */
-}
-
-void
-OsVendorInit (void)
-{
- /* Re-initialize global variables on server reset */
- winInitializeGlobals ();
-
- LogInit (NULL, NULL);
- LogSetParameter (XLOG_VERBOSITY, g_iLogVerbose);
-
- winFixupPaths();
-
-#ifdef DDXOSVERRORF
- if (!OsVendorVErrorFProc)
- OsVendorVErrorFProc = OsVendorVErrorF;
-#endif
-
- if (!g_fLogInited) {
- /* keep this order. If LogInit fails it calls Abort which then calls
- * ddxGiveUp where LogInit is called again and creates an infinite
- * recursion. If we set g_fLogInited to TRUE before the init we
- * avoid the second call
- */
- g_fLogInited = TRUE;
- LogInit (g_pszLogFile, NULL);
- }
- LogSetParameter (XLOG_FLUSH, 1);
- LogSetParameter (XLOG_VERBOSITY, g_iLogVerbose);
- LogSetParameter (XLOG_FILE_VERBOSITY, 1);
-
- /* Log the version information */
- if (serverGeneration == 1)
- winLogVersionInfo ();
-
- winCheckMount();
-
- /* Add a default screen if no screens were specified */
- if (g_iNumScreens == 0)
- {
- winDebug ("OsVendorInit - Creating bogus screen 0\n");
-
- /*
- * We need to initialize default screens if no arguments
- * were processed. Otherwise, the default screens would
- * already have been initialized by ddxProcessArgument ().
- */
- winInitializeDefaultScreens ();
-
- /*
- * Add a screen 0 using the defaults set by
- * winInitializeDefaultScreens () and any additional parameters
- * processed by ddxProcessArgument ().
- */
- g_iNumScreens = 1;
- g_iLastScreen = 0;
-
- /* We have to flag this as an explicit screen, even though it isn't */
- g_ScreenInfo[0].fExplicitScreen = TRUE;
- }
-}
-
-
-static void
-winUseMsg (void)
-{
- ErrorF ("-depth bits_per_pixel\n"
- "\tSpecify an optional bitdepth to use in fullscreen mode\n"
- "\twith a DirectDraw engine.\n");
-
- ErrorF ("-emulate3buttons [timeout]\n"
- "\tEmulate 3 button mouse with an optional timeout in\n"
- "\tmilliseconds.\n");
-
- ErrorF ("-engine engine_type_id\n"
- "\tOverride the server's automatically selected engine type:\n"
- "\t\t1 - Shadow GDI\n"
- "\t\t2 - Shadow DirectDraw\n"
- "\t\t4 - Shadow DirectDraw4 Non-Locking\n"
-#ifdef XWIN_NATIVEGDI
- "\t\t16 - Native GDI - experimental\n"
-#endif
- );
-
- ErrorF ("-fullscreen\n"
- "\tRun the server in fullscreen mode.\n");
-
- ErrorF ("-refresh rate_in_Hz\n"
- "\tSpecify an optional refresh rate to use in fullscreen mode\n"
- "\twith a DirectDraw engine.\n");
-
- ErrorF ("-screen scr_num [width height [x y] | [[WxH[+X+Y]][@m]] ]\n"
- "\tEnable screen scr_num and optionally specify a width and\n"
- "\theight and initial position for that screen. Additionally\n"
- "\ta monitor number can be specified to start the server on,\n"
- "\tat which point, all coordinates become relative to that\n"
- "\tmonitor (Not for Windows NT4 and 95). Examples:\n"
- "\t -screen 0 800x600+100+100@2 ; 2nd monitor offset 100,100 size 800x600\n"
- "\t -screen 0 1024x768@3 ; 3rd monitor size 1024x768\n"
- "\t -screen 0 @1 ; on 1st monitor using its full resolution (the default)\n");
-
- ErrorF ("-lesspointer\n"
- "\tHide the windows mouse pointer when it is over an inactive\n"
- "\t" PROJECT_NAME " window. This prevents ghost cursors appearing where\n"
- "\tthe Windows cursor is drawn overtop of the X cursor\n");
-
- ErrorF ("-nodecoration\n"
- "\tDo not draw a window border, title bar, etc. Windowed\n"
- "\tmode only.\n");
-
-#ifdef XWIN_MULTIWINDOWEXTWM
- ErrorF ("-mwextwm\n"
- "\tRun the server in multi-window external window manager mode.\n");
-
- ErrorF ("-internalwm\n"
- "\tRun the internal window manager.\n");
-#endif
-
- ErrorF ("-rootless\n"
- "\tRun the server in rootless mode.\n");
-
-#ifdef XWIN_MULTIWINDOW
- ErrorF ("-multiwindow\n"
- "\tRun the server in multi-window mode.\n");
-#endif
-
- ErrorF ("-multiplemonitors\n"
- "\tEXPERIMENTAL: Use the entire virtual screen if multiple\n"
- "\tmonitors are present.\n");
-
-#ifdef XWIN_CLIPBOARD
- ErrorF ("-clipboard\n"
- "\tRun the clipboard integration module.\n"
- "\tDo not use at the same time as 'xwinclip'.\n");
-
- ErrorF ("-nounicodeclipboard\n"
- "\tDo not use Unicode clipboard even if NT-based platform.\n");
-#endif
-
- ErrorF ("-scrollbars\n"
- "\tIn windowed mode, allow screens bigger than the Windows desktop.\n"
- "\tMoreover, if the window has decorations, one can now resize\n"
- "\tit.\n");
-
- ErrorF ("-[no]trayicon\n"
- "\tDo not create a tray icon. Default is to create one\n"
- "\ticon per screen. You can globally disable tray icons with\n"
- "\t-notrayicon, then enable it for specific screens with\n"
- "\t-trayicon for those screens.\n");
-
- ErrorF ("-clipupdates num_boxes\n"
- "\tUse a clipping region to constrain shadow update blits to\n"
- "\tthe updated region when num_boxes, or more, are in the\n"
- "\tupdated region. Currently supported only by `-engine 1'.\n");
-
-#ifdef XWIN_EMULATEPSEUDO
- ErrorF ("-emulatepseudo\n"
- "\tCreate a depth 8 PseudoColor visual when running in\n"
- "\tdepths 15, 16, 24, or 32, collectively known as TrueColor\n"
- "\tdepths. The PseudoColor visual does not have correct colors,\n"
- "\tand it may crash, but it at least allows you to run your\n"
- "\tapplication in TrueColor modes.\n");
-#endif
-
- ErrorF ("-[no]unixkill\n"
- "\tCtrl+Alt+Backspace exits the X Server.\n");
-
- ErrorF ("-[no]winkill\n"
- "\tAlt+F4 exits the X Server.\n");
-
-#ifdef XWIN_XF86CONFIG
- ErrorF ("-config\n"
- "\tSpecify a configuration file.\n");
-
- ErrorF ("-keyboard\n"
- "\tSpecify a keyboard device from the configuration file.\n");
-#endif
-
-#ifdef XKB
- ErrorF ("-xkbrules XKBRules\n"
- "\tEquivalent to XKBRules in XF86Config files.\n");
-
- ErrorF ("-xkbmodel XKBModel\n"
- "\tEquivalent to XKBModel in XF86Config files.\n");
-
- ErrorF ("-xkblayout XKBLayout\n"
- "\tEquivalent to XKBLayout in XF86Config files.\n"
- "\tFor example: -xkblayout de\n");
-
- ErrorF ("-xkbvariant XKBVariant\n"
- "\tEquivalent to XKBVariant in XF86Config files.\n"
- "\tFor example: -xkbvariant nodeadkeys\n");
-
- ErrorF ("-xkboptions XKBOptions\n"
- "\tEquivalent to XKBOptions in XF86Config files.\n");
-#endif
-
- ErrorF ("-logfile filename\n"
- "\tWrite logmessages to <filename> instead of /tmp/Xwin.log.\n");
-
- ErrorF ("-logverbose verbosity\n"
- "\tSet the verbosity of logmessages. [NOTE: Only a few messages\n"
- "\trespect the settings yet]\n"
- "\t\t0 - only print fatal error.\n"
- "\t\t1 - print additional configuration information.\n"
- "\t\t2 - print additional runtime information [default].\n"
- "\t\t3 - print debugging and tracing information.\n");
-
- ErrorF ("-[no]keyhook\n"
- "\tGrab special windows key combinations like Alt-Tab or the Menu "
- "key.\n These keys are discarded by default.\n");
-
- ErrorF ("-swcursor\n"
- "\tDisable the usage of the windows cursor and use the X11 software "
- "cursor instead\n");
-}
-
-/* See Porting Layer Definition - p. 57 */
-void
-ddxUseMsg(void)
-{
- /* Set a flag so that FatalError won't give duplicate warning message */
- g_fSilentFatalError = TRUE;
-
- winUseMsg();
-
- /* Log file will not be opened for UseMsg unless we open it now */
- if (!g_fLogInited) {
- LogInit (g_pszLogFile, NULL);
- g_fLogInited = TRUE;
- }
- LogClose ();
-
- /* Notify user where UseMsg text can be found.*/
- if (!g_fNoHelpMessageBox)
- winMessageBoxF ("The " PROJECT_NAME " help text has been printed to "
- "/tmp/XWin.log.\n"
- "Please open /tmp/XWin.log to read the help text.\n",
- MB_ICONINFORMATION);
-}
-
-/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
-void ddxInitGlobals(void)
-{
-}
-
-#ifdef DDXTIME /* from ServerOSDefines */
-CARD32
-GetTimeInMillis (void)
-{
- return GetTickCount ();
-}
-#endif /* DDXTIME */
-
-
-/* See Porting Layer Definition - p. 20 */
-/*
- * Do any global initialization, then initialize each screen.
- *
- * NOTE: We use ddxProcessArgument, so we don't need to touch argc and argv
- */
-
-void
-InitOutput (ScreenInfo *screenInfo, int argc, char *argv[])
-{
- int i;
-
- /* Log the command line */
- winLogCommandLine (argc, argv);
-
-#if CYGDEBUG
- winDebug ("InitOutput\n");
-#endif
-
- /* Validate command-line arguments */
- if (serverGeneration == 1 && !winValidateArgs ())
- {
- FatalError ("InitOutput - Invalid command-line arguments found. "
- "Exiting.\n");
- }
-
- /* Check for duplicate invocation on same display number.*/
- if (serverGeneration == 1 && !winCheckDisplayNumber ())
- {
- if (g_fSilentDupError)
- g_fSilentFatalError = TRUE;
- FatalError ("InitOutput - Duplicate invocation on display "
- "number: %s. Exiting.\n", display);
- }
-
-#ifdef XWIN_XF86CONFIG
- /* Try to read the xorg.conf-style configuration file */
- if (!winReadConfigfile ())
- winErrorFVerb (1, "InitOutput - Error reading config file\n");
-#else
- winMsg(X_INFO, "XF86Config is not supported\n");
- winMsg(X_INFO, "See http://x.cygwin.com/docs/faq/cygwin-x-faq.html "
- "for more information\n");
- winConfigFiles ();
-#endif
-
- /* Load preferences from XWinrc file */
- LoadPreferences();
-
- /* Setup global screen info parameters */
- screenInfo->imageByteOrder = IMAGE_BYTE_ORDER;
- screenInfo->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
- screenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
- screenInfo->bitmapBitOrder = BITMAP_BIT_ORDER;
- screenInfo->numPixmapFormats = NUMFORMATS;
-
- /* Describe how we want common pixmap formats padded */
- for (i = 0; i < NUMFORMATS; i++)
- {
- screenInfo->formats[i] = g_PixmapFormats[i];
- }
-
- /* Load pointers to DirectDraw functions */
- winGetDDProcAddresses ();
-
- /* Detect supported engines */
- winDetectSupportedEngines ();
-
- /* Load common controls library */
- g_hmodCommonControls = LoadLibraryEx ("comctl32.dll", NULL, 0);
-
- /* Load TrackMouseEvent function pointer */
- g_fpTrackMouseEvent = GetProcAddress (g_hmodCommonControls,
- "_TrackMouseEvent");
- if (g_fpTrackMouseEvent == NULL)
- {
- winErrorFVerb (1, "InitOutput - Could not get pointer to function\n"
- "\t_TrackMouseEvent in comctl32.dll. Try installing\n"
- "\tInternet Explorer 3.0 or greater if you have not\n"
- "\talready.\n");
-
- /* Free the library since we won't need it */
- FreeLibrary (g_hmodCommonControls);
- g_hmodCommonControls = NULL;
-
- /* Set function pointer to point to no operation function */
- g_fpTrackMouseEvent = (FARPROC) (void (*)(void))NoopDDA;
- }
-
- /* Store the instance handle */
- g_hInstance = GetModuleHandle (NULL);
-
- /* Initialize each screen */
- for (i = 0; i < g_iNumScreens; ++i)
- {
- /* Initialize the screen */
- if (-1 == AddScreen (winScreenInit, argc, argv))
- {
- FatalError ("InitOutput - Couldn't add screen %d", i);
- }
- }
-
-#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
-
-#if defined(XCSECURITY)
- /* Generate a cookie used by internal clients for authorization */
- if (g_fXdmcpEnabled)
- winGenerateAuthorization ();
-#endif
-
- /* Perform some one time initialization */
- if (1 == serverGeneration)
- {
- /*
- * setlocale applies to all threads in the current process.
- * Apply locale specified in LANG environment variable.
- */
- setlocale (LC_ALL, "");
- }
-#endif
-
-#if CYGDEBUG || YES
- winDebug ("InitOutput - Returning.\n");
-#endif
-}
-
-
-/*
- * winCheckDisplayNumber - Check if another instance of Cygwin/X is
- * already running on the same display number. If no one exists,
- * make a mutex to prevent new instances from running on the same display.
- *
- * return FALSE if the display number is already used.
- */
-
-static Bool
-winCheckDisplayNumber ()
-{
- int nDisp;
- HANDLE mutex;
- char name[MAX_PATH];
- char * pszPrefix = '\0';
- OSVERSIONINFO osvi = {0};
-
- /* Check display range */
- nDisp = atoi (display);
- if (nDisp < 0 || nDisp > 65535)
- {
- ErrorF ("winCheckDisplayNumber - Bad display number: %d\n", nDisp);
- return FALSE;
- }
-
- /* Set first character of mutex name to null */
- name[0] = '\0';
-
- /* Get operating system version information */
- osvi.dwOSVersionInfoSize = sizeof (osvi);
- GetVersionEx (&osvi);
-
- /* Want a mutex shared among all terminals on NT > 4.0 */
- if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT
- && osvi.dwMajorVersion >= 5)
- {
- pszPrefix = "Global\\";
- }
-
- /* Setup Cygwin/X specific part of name */
- snprintf (name, sizeof(name), "%sCYGWINX_DISPLAY:%d", pszPrefix, nDisp);
-
- /* Windows automatically releases the mutex when this process exits */
- mutex = CreateMutex (NULL, FALSE, name);
- if (!mutex)
- {
- LPVOID lpMsgBuf;
-
- /* Display a fancy error message */
- FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError (),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &lpMsgBuf,
- 0, NULL);
- ErrorF ("winCheckDisplayNumber - CreateMutex failed: %s\n",
- (LPSTR)lpMsgBuf);
- LocalFree (lpMsgBuf);
-
- return FALSE;
- }
- if (GetLastError () == ERROR_ALREADY_EXISTS)
- {
- ErrorF ("winCheckDisplayNumber - "
- PROJECT_NAME " is already running on display %d\n",
- nDisp);
- return FALSE;
- }
-
- return TRUE;
-}
-
-#ifdef DPMSExtension
-Bool DPMSSupported(void)
-{
- return FALSE;
-}
-
-void DPMSSet(int level)
-{
- return;
-}
-
-int DPMSGet(int *plevel)
-{
- return 0;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/README b/nx-X11/programs/Xserver/hw/xwin/README
deleted file mode 100644
index 219fd1337..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/README
+++ /dev/null
@@ -1,141 +0,0 @@
-Cygwin/X Release Notes
-======================
-
-Release X11R6.7
-===============
-
-Cygwin/X has continued its rapid pace of development that it has sustained
-since Spring 2001 and this release shows it, we now have: a stable and fast
-multi-window mode, seamless clipboard integration, a configurable tray menu
-icon, popups on error messages pointing users to the log file and our mailing
-list, the beginnings of indirect 3D acceleration for OpenGL applications,
-improved non-US keyboard and clipboard support, and only a handful of bugs
-that continue to be reported.
-
-Between the XFree86 4.3.0 release and the X.Org X11R6.7 release the Cyg-
-win/XFree86 project broke away from The XFree86 Project, Inc. due to a lack
-of support from the XFree86 project. As such, the Cygwin/XFree86 project was
-renamed to the Cygwin/X project and the upstream source code tree that Cyg-
-win/X pulls from and pushes to is now the tree managed by the X.Org Founda-
-tion. The Cygwin/X project has seen a rush of development and interest in
-the project since the split; one metric showing this is that the number of
-CVS committers we have has gone from zero to six.
-
-The most outstanding features of this release are
-
- o Major multi-window mode improvements. (Takuma Murakami, Earle F.
- Philhower III)
-
- o Initial work of accelerated OpenGL using the windows OpenGL drivers.
- (Alexander Gottwald)
-
- o Massive rework of clipboard integration with windows. (Harold L Hunt II,
- Kensuke Matsuzaki)
-
- o Improved Japanese clipboard and keyboard support. (Kensuke Matsuzaki,
- Takuma Murakami, Alexander Gottwald)
-
- o Customizable tray menu icon allowing shortcuts to start programs,
- etc.(Earle F. Philhower III)
-
- o New icons. (Jehan Bing, Michael Bax, Benjamin Rienfenstahl)
-
- o Fix some multi-monitor problems.(Takuma Murakami)
-
- o Fix repeated key strokes. (Ivan Pascal)
-
- o Automatic keyboard layouts for the most frequently used keyboard lay-
- outs. (Alexander Gottwald)
-
- o Built in SHM support with detection of the SHM engine (cygserver).
- (Ralf Habacker, Harold L Hunt II)
-
- o Merged in work on the NativeGDI engine. (Alan Hourihane)
-
-OpenGL with Cygwin/X
-====================
-
-Cygwin/X has supported GLX only with software rendering provided by the Mesa
-library. Starting with X11R6.7 we add support for hardware accelerated OpenGL.
-
-This support is still under development and still has some bigger problems.
-To provide both versions (the stable software rendering and the new hardware
-accelerated) we ship to binaries. XWin.exe contains the software rendering
-and XWin_GL.exe uses the hardware acceleration provided by the windows drivers.
-
-The known problems with hardware accelerated OpenGL are:
-
- o Only multiwindow mode is useful. In the other modes the OpenGL output
- does not align with the X11 windows.
-
- o Using two programs which require different visuals will fail. For example
- glxgears and glxinfo will not work without restarting XWin_GL.exe.
-
- o OpenGL extensions and functions from OpenGL 1.2 and later should work
- but are not completely tested.
-
- o The standard Windows OpenGL driver will produce no output. Use the one
- from your video adapter vendor.
-
-If you notice problems with some programs please send a message with the
-logfile /tmp/XWin.log and a short error description to <cygwin-xfree@cygwin.com>
-
-The hardware accelerated OpenGL was tested using:
-
- o glxgears
- o glxinfo
- o blender
- o tuxkart
- o GLUT demos (some did fail)
- o tuxracer (currently not working)
-
-
-Release X11R6.8
-===============
-
-Having reached a quite mature state in release X11R6.7 the development
-has slowed down a little bit. Some of the former active developers have
-retired or cut their work for the Cygwin/X project due to conflicts with
-job, study and family.
-
-The X11R6.8 release now includes major improvements from the xserver project.
-This includes the XFixes, Damage, Composite and XEVIE extension which is a
-major step towards allowing Cygwin/X to have real transparency.
-
-But at the current state Composite is not working with Cygwin/X. Not all code
-in the Cygwin/X Server has been updated to support the Composite feature and
-using it will even crash the xserver. But as a second problem nearly all
-functions required for compositing are lacking acceleration in Cygwin/X so
-the feature would not be very useful if it would work. So it is disabled by
-default.
-
-OpenGL with Cygwin/X
-====================
-
-The OpenGL support has lost some of it's limitations from the last release
-and should be much more stable. But due to missing wide spread testing in
-the community it is still available in a separate program. XWin still uses
-the old software OpenGL which is known to be stable.
-
-The known problems with hardware accelerated OpenGL are:
-
- o Only multiwindow mode is useful. In the other modes the OpenGL output
- does not align with the X11 windows.
-
- o OpenGL extensions and functions from OpenGL 1.2 and later should work
- but are not completely tested.
-
- o The standard Windows OpenGL driver will produce no output. Use the one
- from your video adapter vendor.
-
-If you notice problems with some programs please send a message with the
-logfile /tmp/XWin.log and a short error description to <cygwin-xfree@cygwin.com>
-
-The hardware accelerated OpenGL was tested using:
-
- o glxgears
- o glxinfo
- o blender
- o tuxkart
- o GLUT demos (some did fail)
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/X-boxed.ico b/nx-X11/programs/Xserver/hw/xwin/X-boxed.ico
deleted file mode 100755
index 072704253..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/X-boxed.ico
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/xwin/X.ico b/nx-X11/programs/Xserver/hw/xwin/X.ico
deleted file mode 100644
index d47168fca..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/X.ico
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/xwin/XWin.man b/nx-X11/programs/Xserver/hw/xwin/XWin.man
deleted file mode 100644
index 4e70c19f5..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/XWin.man
+++ /dev/null
@@ -1,287 +0,0 @@
-.TH XWIN 1 __vendorversion__
-.SH NAME
-XWin \- X Server for the Cygwin environment on Microsoft Windows
-
-
-.SH SYNOPSIS
-.B XWin
-[ options ] ...
-
-
-.SH DESCRIPTION
-.I XWin is an X Server for the X Window System on the Cygwin environment
-running on Microsoft Windows.
-
-
-.SH MODES
-\fIXWin\fP can operate in five different and incompatible modes:
-.br
-* \fISingle Window\fP: This is the default option. The X server
-appears as a single Windows window and all X windows are contained
-within this window. This mode requires an external window manager.
-.br
-* \fINo Decoration\fP: This mode is like single window mode except
-that the X server window does not have a title bar or border, thus
-maximizing the amount of space available for X windows within the X
-server window. This mode requires an external window manager.
-.br
-* \fIFull Screen\fP: This mode is like single window mode except that
-the X server window takes the full screen, covering completely the
-Windows desktop. This mode requires an external window manager.
-.br
-* \fIRootless\fP: The X server works on a window covering the whole
-screen but the root window (traditionally covered with an X hatch
-pattern) is hidden from view. This mode requires an external window
-manager.
-.br
-* \fIMulti-Window\fP: In this mode \fIXWin\fP uses its own integrated
-window manager in order to handle the top-level X windows, in such a
-way that they appear as normal Windows windows.
-.PP
-NOTE: \fIMulti-Window\fP mode will crash if an external window manager
-such as \fItwm\fP or \fIfvwm\fP is launched since \fIMulti-Window\fP
-uses its own internal window manager; all other modes require an
-external window manager in order to move, resize, and perform other
-operations on the individual X windows.
-
-
-.SH LOG
-As it runs \fIXWin\fP writes messages indicating the most relevant events
-to the console
-from which it was called and to a log file that by default is located at
-\fI/tmp/XWin.log\fP. This file is mainly for debugging purposes.
-
-
-.SH PREFERENCES FILE
-On startup \fIXWin\fP looks for the file \fI$HOME/.XWinrc\fP or, if
-the previous file does not exist,
-\fI/usr/X11R6/lib/X11/system.XWinrc\fP. \fI.XWinrc\fP allows setting
-preferences for the following:
-.br
-1- To include items into the menu associated with the \fIXWin\fP icon
-which is in the \fIWindows\fP system tray. This functions in all
-modes that have a tray icon.
-.br
-2- To include items in the menu which is associated with the Windows
-window that \fIXWin -multiwindow\fP produces for each top-level X
-window. That can be done both for the generic case and for particular
-programs.
-.br
-3- To change the icon that is associated to the Windows window that
-\fIXWin -multiwindow\fP produces for each top-level X-window. Again,
-that can be done both for the generic case and for particular
-programs.
-.PP
-The format of the \fI.XWinrc\fP file is given in the man page XWinrc(5).
-
-
-.SH OPTIONS
-In addition to the normal server options described in the \fIXserver(1)\fP
-manual page, \fIXWin\fP accepts the following command line switches,
-\fIall\fP of which are optional:
-.TP 8
-.B \-clipboard
-Enables the integration
-between the Cygwin/X clipboard and Windows clipboard. Do not use in
-conjunction with the \fIxwinclip\fP program.
-.TP 8
-.B "\-clipupdates \fInum_boxes\fP"
-Specify an optional threshold, above which the boxes in a shadow
-update operation will be collected into a GDI clipping region. The
-clipping region is then used to do a single bit block transfer that is
-constrained to the updated area by the clipping region. There is some
-overhead involved in creating, installing, destroying, and removing
-the clipping region, thus there may not be much benefit for a small
-number of boxes (less than 10). It is even possible that this
-functionality does not provide a benefit at any number of boxes; we
-can only determine the usefulness of this feature through testing.
-This parameter works in conjunction with engines 1, 2, and 4 (Shadow
-GDI, Shadow DirectDraw, and Shadow DirectDraw Non-Locking,
-respectively).
-.TP 8
-.B "\-emulate3buttons \fItimeout\fP"
-Emulate a three button mouse; pressing both buttons within
-.I timeout
-milliseconds causes an emulated middle button press. The default
-.I timeout
-is 50 milliseconds. Note that most mice with scroll wheel have middle
-button functionality, usually you will need this option only if you have
-a two button mouse without scroll wheel.
-.TP 8
-.B \-emulatepseudo
-Create a depth 8 PseudoColor visual when running in depths 15, 16, 24,
-or 32, collectively known as TrueColor depths.
- At this date (April 2004) this option is not still operative.
-.TP 8
-.B "\-engine \fIengine_type_id\fP"
-This option, which is intended for Cygwin/X developers,
-overrides the server's automatically supported engine type. This
-parameter will be ignored if the specified engine type is not
-supported on the current system. The supported engine type ids are 1
-- Shadow GDI, 2 - Shadow DirectDraw, and 4 - Shadow DirectDraw4.
-Additionally, there is a barely functional experimental engine type id
-16 - Native GDI.
-.TP 8
-.B "\-fullscreen [-depth \fIdepth\fP] [-refresh \fIrate_in_Hz\fP]"
-Run the server in fullscreen mode, as opposed to the default windowed
-mode.
-.TP 8
-.B "\-depth \fIdepth\fP"
-Specify the color depth, in bits per pixel, to use when running in
-fullscreen with a DirectDraw engine. This parameter is ignored if
-\fB\-fullscreen\fP is not specified.
-.TP 8
-.B "\-refresh \fIrate_in_Hz\fP"
-Specify an optional refresh rate to use when running in
-fullscreen with a DirectDraw engine. This parameter is ignored if
-\fB\-fullscreen\fP is not specified.
-.TP 8
-.B \-help
-Write a help text to the console and to the log file.
-.TP 8
-.B \-ignoreinput
-Ignore keyboard and mouse input. This is usually only used for testing
-and debugging purposes.
-.TP 8
-.B \-[no]keyhook
-Enable [disable] a low-level keyboard hook for catching
-special key combinations like Alt+Tab and passing them to the X
-Server instead of letting \fIWindows\fP handle them.
-.TP 8
-.B \-lesspointer
-Hide the Windows mouse cursor when the mouse is over any Cygwin/X
-window (regardless of whether that window is active or inactive). This
-prevents the Windows mouse cursor from being placed overtop of the X
-cursor.
-.TP 8
-.B "\-logfile \fIFile_Name\fP"
-Change the log file from the default located at \fI/tmp/XWin.log\fP to
-the one indicated by \fIFile_Name\fP.
-.TP 8
-.B "\-logverbose \fIlevel\fP"
-Control the degree of verbosity of the log messages with the integer
-parameter \fIlevel\fP. For \fIlevel\fP=0 only fatal errors are
-reported, for \fIlevel\fP=1 (default) simple information about
-configuration is also given, for \fIlevel\fP=2 a detailed log
-information (including trace and debug output) is produced. Bigger
-values will yield a still more detailed debug output. At this date
-(April 2004) the option is still not fully operative; the default
-value is 2 and the output is insensitive to the level value.
-.TP 8
-.B \-multimonitors
-Create a root window that covers all monitors on a system with
-multiple monitors.
-.TP 8
-.B \-multiwindow
-Start the integrated \fIWindowsi\fP-based window manager, which launches each
-top-level X window in its own \fIWindows\fP window. Not to be used together
-with \fB\-rootless\fP nor \fB\-fullscreen\fP.
-.TP 8
-.B \-nodecoration
-Do not give the Cygwin/X window a Windows window border, title bar,
-etc. This parameter only applies to windowed mode screens, i.e., this
-parameter is ignored when the \fB\-fullscreen\fP parameter is specified.
-.TP 8
-.B \-nounicodeclipboard
-Do not use Unicode clipboard even if NT-based platform.
-.TP 8
-.B \-rootless
-Run the server in rootless mode. Not to be used with \fB\-multiwindow\fP
-nor with \fB\-fullscreen\fP.
-.TP 8
-.B "\-screen \fIscreen_number\fP \fIwidth\fP \fIheight\fP"
-This parameter may be used to specify the
-.I screen_number,
-.I height,
-and
-.I width
-of one or several Cygwin/X screens; each Cygwin/X screen will be
-opened in its own window. When using multiple screens, be sure not to
-duplicate any screen numbers.
-.I XWin
-default behavior is to create a single screen that is roughly
-the size of the current Windows display area.
-Screen specific parameters, such as \fB\-fullscreen\fP, can be applied as a
-default to all screens by placing those screen specific parameters
-before any \fB\-screen\fP parameter. Screen specific parameters placed after
-the first \fB\-screen\fP parameter will apply only to the immediately
-preceeding \fB\-screen\fP parameter.
-.TP 8
-.B \-scrollbars
-In windowed mode, allow screens bigger than the Windows desktop.
-Moreover, if the window has decorations, one can now resize it.
-.TP 8
-.B \-[no]trayicon
-Do not create a tray icon. Default is to create one
-icon per screen. You can globally disable tray icons with
-\fB\-notrayicon\fP, then enable it for specific screens with
-\fB\-trayicon\fP for those screens.
-.TP 8
-.B \-[no]unixkill
-Enable or disable the \fICtrl-Alt-Backspace\fP key combination as a
-signal to exit the X Server. The \fICtrl-Alt-Backspace\fP key combination
-is disabled by default.
-.TP 8
-.B \-[no]winkill
-Enable or disable the \fIAlt-F4\fP key combination as a signal to exit the
-X Server.
-The \fIAlt-F4\fP key combination is enabled by default.
-.TP 8
-.B \-swcursor
-Disable the usage of the windows cursor and use the X11 software cursor instead.
-.B \-silent-dup-error
-If another instance of XWin is found running, exit silently and don't display
-the error messge.
-.TP 8
-.B "\-xkblayout \fIlayout\fP"
-.TP 8
-.B "\-xkbmodel \fImodel\fP"
-.TP 8
-.B "\-xkboptions \fIoption\fP"
-.TP 8
-.B "\-xkbrules \fIrule\fP"
-.TP 8
-.B "\-xkbvariant \fIvariant\fp"
-These options implement the xkeyboard extension for loading
-a particular keyboard map as the X server starts. The behavior is similar
-to the \fIsetxkbmap\fP program. The layout data is located at
-\fI/usr/X11R6/lib/X11/xkb/\fP. Additional information is found in the
-README files therein and in the man page of \fIsetxkbmap\fP. For example
-in order to load a German layout for a pc105 keyboard one uses
-the options:
-.br
-.I " \-xkblayout de \-xkbmodel pc105"
-.PP
-Alternatively one may use the \fIsetxkbmap\fP program after XWin is
-running or even the \fIxmodmap\fP program for loading the old-style
-keyboard maps.
-
-
-.SH "SEE ALSO"
-X(__miscmansuffix__), Xserver(1), xdm(1), xinit(1), XWinrc(1), setxkbmap(1)
-
-
-.SH BUGS
-.I XWin
-and this man page still have many limitations. Some of the more obvious
-ones are:
-.br
-- The display mode can not be changed once the X server has started.
-.br
-- The XWin software is developing rapidly; it is therefore likely that
-this man page is not up to date. It is always prudent to
-look also at the output of \fIXWin -help\fP and to the Cygwin/X User Guide
-at /usr/share/doc/cygwin-x-doc-x.x.x/ug/cygwin-x-ug.xxx in order to
-check the options that are operative.
-
-
-.SH AUTHORS
-This list is by no means complete, but direct contributors to the
-Cygwin/X project include (in alphabetical order by last name): Stuart
-Adamson, Michael Bax, Jehan Bing, Lev Bishop, Dr. Peter Busch, Biju G
-C, Robert Collins, Nick Crabtree, Early Ehlinger, Christopher Faylor,
-John Fortin, Brian Genisio, Fabrizio Gennari, Alexander Gottwald, Ralf
-Habacker, Colin Harrison, Matthieu Herrb, Alan Hourihane, Pierre A
-Humblet, Harold L Hunt II, Dakshinamurthy Karra, Kensuke Matsuzaki,
-Takuma Murakami, Earle F. Philhower III, Benjamin Riefenstahl, Suhaib
-Siddiqi, Jack Tanner, and Nicholas Wourms.
diff --git a/nx-X11/programs/Xserver/hw/xwin/XWin.rc b/nx-X11/programs/Xserver/hw/xwin/XWin.rc
deleted file mode 100644
index 6ff23ca47..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/XWin.rc
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- *Copyright (C) 2002-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#include "windows.h"
-#include "winresource.h"
-
-/*
- * Dialogs
- */
-
-/* About */
-ABOUT_BOX DIALOG DISCARDABLE 32, 32, 240, 105
-STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_TABSTOP | DS_CENTERMOUSE
-CAPTION "About " PROJECT_NAME
-FONT 8, "MS Sans Serif"
-BEGIN
- CONTROL PROJECT_NAME " Website", ID_ABOUT_WEBSITE, "Button",
- BS_OWNERDRAW | WS_TABSTOP, 30, 45, 75, 15
- CONTROL "Change Log", ID_ABOUT_CHANGELOG, "Button",
- BS_OWNERDRAW | WS_TABSTOP, 135, 45, 75, 15
- CONTROL "User's Guide", ID_ABOUT_UG, "Button",
- BS_OWNERDRAW | WS_TABSTOP, 30, 65, 75, 15
- CONTROL "FAQ", ID_ABOUT_FAQ, "Button",
- BS_OWNERDRAW | WS_TABSTOP, 135, 65, 75, 15
-
- DEFPUSHBUTTON "Dismiss", IDOK, 95, 85, 50, 15
-
- CTEXT "Welcome to the preliminary About box for the " PROJECT_NAME " X Server. This dialog was created on 2004/03/25 and will eventually be filled with more useful information. For now, use the links below to learn more about the " PROJECT_NAME " project.", IDC_STATIC, 5, 5, 230, 35
-END
-
-
-/* Depth change */
-
-DEPTH_CHANGE_BOX DIALOG DISCARDABLE 32, 32, 180, 100
-STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | DS_CENTERMOUSE
-FONT 8, "MS Sans Serif"
-CAPTION PROJECT_NAME
-BEGIN
- DEFPUSHBUTTON "Dismiss", IDOK, 66, 80, 50, 14
- CTEXT PROJECT_NAME, IDC_STATIC, 40, 12, 100, 8
- CTEXT "Disruptive screen configuration change.", IDC_STATIC, 7, 40, 166, 8
- CTEXT "Restore previous resolution to use " PROJECT_NAME ".", IDC_STATIC, 7, 52, 166, 8
-END
-
-
-/* Exit */
-
-EXIT_DIALOG DIALOG DISCARDABLE 32, 32, 180, 78
-STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_TABSTOP | DS_CENTERMOUSE
-FONT 8, "MS Sans Serif"
-CAPTION PROJECT_NAME " - Exit?"
-BEGIN
- PUSHBUTTON "E&xit", IDOK, 55, 56, 30, 14
- DEFPUSHBUTTON "&Cancel", IDCANCEL, 95, 56, 30, 14
- CTEXT "Exiting will close all screens running on this display.", IDC_STATIC, 7, 12, 166, 8
- CTEXT "No information about connected clients available.", IDC_CLIENTS_CONNECTED, 7, 24, 166, 8
- CTEXT "Proceed with shutdown of this display/server?", IDC_STATIC, 7, 36, 166, 8
-END
-
-
-/*
- * Menus
- */
-
-IDM_TRAYICON_MENU MENU DISCARDABLE
-BEGIN
- POPUP "TRAYICON_MENU"
- BEGIN
- MENUITEM "&Hide Root Window", ID_APP_HIDE_ROOT
- MENUITEM "Show Cursor", ID_APP_SHOWCURSOR
- MENUITEM "&About...", ID_APP_ABOUT
- MENUITEM SEPARATOR
- MENUITEM "E&xit", ID_APP_EXIT
- END
-END
-
-
-/*
- * Icons
- */
-
-IDI_XWIN ICON DISCARDABLE "X.ico"
-IDI_XWIN_BOXED ICON DISCARDABLE "X-boxed.ico"
diff --git a/nx-X11/programs/Xserver/hw/xwin/XWinrc.man b/nx-X11/programs/Xserver/hw/xwin/XWinrc.man
deleted file mode 100755
index eba3fb603..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/XWinrc.man
+++ /dev/null
@@ -1,180 +0,0 @@
-.TH XWIN 5 __vendorversion__
-
-
-.SH NAME
-XWinrc\- XWin Server Resource Configuration File.
-
-
-.SH DESCRIPTION
-The X Server for the X Window System on the Cygwin/X environment
-running on Microsoft Windows, \fIXWin\fP can be optionally configured
-with the \fIXWinrc\fP file. A system-wide configuration file should
-be placed in \fI/usr/X11R6/lib/X11/system.XWinrc\fP, a per-user file
-should be put at \fI$HOME/.XWinrc\fP. The \fIsystem.XWinrc\fP file is
-read only if no \fI$HOME/.XWinrc\fP exist.
-.PP
-With the \fI.XWinrc\fP configuration file it is possible to do the
-following:
-.PP
-1- To include items into the menu associated with the \fIXWin\fP icon
-which is in the \fIWindows\fP system tray. This feature functions in
-all XWin modes that have such tray icon.
-.PP
-2- To include items into the menu which is associated with the
-\fIWindows\fP window that \fIXWin -multiwindow\fP produces for each
-top-level X-window. That can be done both for the generic case and
-for particular programs.
-.PP
-3- To change the icon that is associated to the \fIWindows\fP window
-that \fIXWin -multiwindow\fP produces for each top-level X-window.
-Again, that can be done both for the generic case and for particular
-programs. The new icons associated should be \fIWindows\fP format
-icons \fI.ico\fP.
-
-
-.SH FILE FORMAT
-.B Keywords
-are case insensitive, but in this document they will be written
-completely capitalized.
-.PP
-.B Comments
-are legal pretty much anywhere you can have an end-of-line; they
-begin with "#" or "//" and go to the end-of-line.
-.PP
-Quote marks in strings are optional unless the string has included spaces.
-.PP
-There are three kinds of instructions: miscellaneous, menu, and icon.
-
-
-.SH Miscellaneous instruction
-.TP 8
-.B DEBUG \fIString\fP
-The \fIString\fP is printed to the XWin.log file.
-
-.TP 8
-.B TRAYICON \fIicon-specifier\fB
-The \fBTRAYICON\fP keyword changes the icon \fIXWin\fP displays in the
-system tray area.
-
-.TP 8
-.B SILENTEXIT
-The \fBSILENTEXIT\fP keyword, which takes no parameters, disables the
-exit confirmation dialog.
-
-
-.SH Menu instructions
-.TP 8
-.B MENU \fIMenu_Name\fP {
-.br
-.B \fIMenu_Item_Line\fP
-.br
-.B \fIMenu_Item_Line\fP
-.br
-.B \fI...\fP
-.br
-.B }
-.br
-This instruction defines a menu and asigns a \fIMenu_Name\fP to it.
-\fIMenu_Item_Line\fP are lines of any of the following types:
-.TP 8
-.B \t SEPARATOR
-.TP 8
-.B \t \fIItem_Label\fP EXEC \fICommand\fP
-.TP 8
-.B \t \fIItem_Label\fP MENU \fIpreviously-defined-menu-name\fP
-.TP 8
-.B \t \fIItem_Label\fP ALWAYSONTOP
-.TP 8
-.B \t \fIItem_Label\fP RELOAD
-.br
-The \fIItem_Label\fP is the string that is written in the menu item.
-.br
-\fICommand\fP is a string with the command that will be executed by /bin/sh.
-Here paths should be \fICYGWIN\fP style (e.g. /usr/local/bin/myprogram).
-A string "%display%" appearing in the \fICommand\fP will be replaced
-with the proper display variable (i.e. 127.0.0.1:<display>.0).
-.br
-\fBALWAYSONTOP\fP sets the window to which the menu is associated to
-display above all others.
-.br
-\fBRELOAD\fP causes the XWinrc file to be reloaded and icons and menus
-regenerated.
-.TP 8
-.B ROOTMENU \fIpreviously-defined-menu-name\fP
-Includes the items in the indicated menu into the menu associated with
-\fIXWin\fP that appears in the system tray.
-.TP 8
-.B DEFAULTSYSMENU \fIpreviously-defined-menu-name\fP ATSTART|ATEND
-Includes the items in the indicated menu into the menu associated with
-generic top-level X-Windows in the \fIXWin\fP \fImultiwindow\fP mode. The
-keywords \fBATSTART\fP and \fBATEND\fP indicate if such items should be
-included at the start or at the end of the menu.
-.TP 8
-.B SYSMENU {
- \fIclass-or-name-of-window\fP \fIdefined-menu-name\fP \fBATSTART|ATEND\fP
-.br
- \fI...\fP
-.br
- \fB}\fP
-.br
-Associates a specific menu to a specific WM_CLASS or WM_NAME.
-
-
-.SH Icon Instructions
-When specifying an \fIicon-file\fP in the following commands several different formats are allowed:
-.br
-\fB"NAME.ICO"\fP\fI of an .ico format file\fP
-.br
-\t \t ("cygwin.ico", "apple.ico")
-.br
-\fB"NAME.DLL,nn"\fP\fI of a .DLL and icon index\fP
-.br
-\t \t ("c:\\windows\\system32\\shell32.dll,4" is the default folder icon)
-.br
-\fB",nn"\fP\fI index into XWin.EXE internal ICON resources\fP
-.br
-\t \t (",101" is the 1st icon inside \fIXWin.EXE\fP)
-.TP 8
-.B ICONDIRECTORY \fIWindows-path-to-icon-directory\fP
-Defines the default directory to search for \ficon-file\fP files.
-It should be a \fIWindows\fP style path (e.g. C:\\cygwin\\usr\\local\\icons).
-.TP 8
-.B DEFAULTICON \fIicon-file\fP
-Defines a replacement for the standard X icon for applications without
-specified icons.
-.TP 8
-.B ICONS {
-.br
- \fIclass-or-name-of-window\fP \fIicon-file\fP
-.br
- \fI...\fP
-.br
- \fB}\fP
-.br
-Defines icon replacements windows matching the specified window class or names.
-If multiple name or class matches occur for a window, only the first one
-will be used.
-
-
-.SH EXAMPLE
-.TP 8
-This example adds an Xterm menu item to the system tray icon
-\fBMENU systray {
-.br
-\t xterm EXEC "xterm -display %display% -sb -sl 999"
-.br
-\t SEPARATOR
-.br
-}
-.br
-ROOTMENU systray
-\fP
-
-
-.SH "SEE ALSO"
- XWin(1)
-
-
-.SH AUTHOR
-The XWinrc feature of XWin was written primarily by Earle F. Philhower
-III.
diff --git a/nx-X11/programs/Xserver/hw/xwin/_usr_X11R6_lib_X11_system.XWinrc b/nx-X11/programs/Xserver/hw/xwin/_usr_X11R6_lib_X11_system.XWinrc
deleted file mode 100644
index d9c2d4210..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/_usr_X11R6_lib_X11_system.XWinrc
+++ /dev/null
@@ -1,125 +0,0 @@
-# XWin Server Resource File - EXAMPLE
-# Earle F. Philhower, III
-
-# Place in ~/.XWinrc or in /usr/X11R6/lib/X11/system.XWinrc
-
-# Keywords are case insensitive, comments legal pretty much anywhere
-# you can have an end-of-line
-
-# Comments begin with "#" or "//" and go to the end-of-line
-
-# Paths to commands are **cygwin** based (i.e. /usr/local/bin/xcalc)
-
-# Paths to icons are **WINDOWS** based (i.e. c:\windows\icons)
-
-# Menus are defined as...
-# MENU <name> {
-# <Menu Text> EXEC <command>
-# ^^ This command will have any "%display%"
-# string replaced with the proper display
-# variable (i.e. 127.0.0.1:<display>.0)
-# or <Menu Text> MENU <name-of-some-prior-defined-menu>
-# or <Menu Text> ALWAYSONTOP
-# ^^ Sets the window to display above all others
-# or <Menu Text> RELOAD
-# ^^ Causes ~/.XWinrc or the system.XWinrc file
-# to be reloaded and icons and menus regenerated
-# or SEPARATOR
-# ...
-# }
-
-# Set the taskmar menu with
-# ROOTMENU <name-of-some-prior-defined-menu>
-
-# If you want a menu to be applied to all popup window's system menu
-# DEFAULTSYSMENU <name-of-some-prior-defined-menu> <atstart|atend>
-
-# To choose a specific menu for a specific WM_CLASS or WM_NAME use ...
-# SYSMENU {
-# <class-or-name-of-window> <name-of-prior-defined-menu> <atstart|atend>
-# ...
-# }
-
-# When specifying an ICONFILE in the following commands several different
-# formats are allowed:
-# 1. Name of a regular Windows .ico format file
-# (ex: "cygwin.ico", "apple.ico")
-# 2. Name and index into a Windows .DLL
-# (ex: "c:\windows\system32\shell32.dll,4" gives the default folder icon
-# "c:\windows\system32\shell32.dll,5" gives the floppy drive icon)
-# 3. Index into XWin.EXE internal ICON resource
-# (ex: ",101" is the 1st icon inside XWin.exe)
-
-# To define where ICO files live (** Windows path**)
-# ICONDIRECTORY <windows-path i.e. c:\cygwin\usr\icons>
-# NOTE: If you specify a fully qualified path to an ICON below
-# (i.e. "c:\xxx" or "d:\xxxx")
-# this ICONDIRECTORY will not be prepended
-
-# To change the taskbar icon use...
-# TRAYICON <name-of-windows-ico-file-in-icondirectory>
-
-# To define a replacement for the standard X icon for apps w/o specified icons
-# DEFAULTICON <name-of-windows-ico-file-in-icondirectory>
-
-# To define substitute icons on a per-window basis use...
-# ICONS {
-# <class-or-name-of-window> <icon-file-name.ico>
-# ...
-# }
-# In the case where multiple matches occur, the first listed in the ICONS
-# section will be chosen.
-
-# To disable exit confirmation dialog add the line containing SilentExit
-
-# DEBUG <string> prints out the string to the XWin.log file
-
-// Below are just some silly menus to demonstrate writing your
-// own configuration file.
-
-// Make some menus...
-menu apps {
- xterm exec "xterm"
- "Emacs" exec "emacs"
- notepad exec notepad
- xload exec "xload -display %display%" # Comment
-}
-
-menu root {
-// Comments fit here, too...
- "Reload .XWinrc" RELOAD
- "Applications" menu apps
- SEParATOR
-}
-
-menu aot {
- Separator
- "Always on Top" alwaysontop
-}
-
-menu xtermspecial {
- "Emacs" exec "emacs"
- "Always on Top" alwaysontop
- SepArAtor
-}
-
-RootMenu root
-
-DefaultSysMenu aot atend
-
-SysMenu {
- "xterm" xtermspecial atstart
-}
-
-# IconDirectory "c:\winnt\"
-
-# DefaultIcon "reinstall.ico"
-
-# Icons {
-# "xterm" "uninstall.ico"
-# }
-
-# SilentExit
-
-DEBUG "Done parsing the configuration file..."
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/ddraw.h b/nx-X11/programs/Xserver/hw/xwin/ddraw.h
deleted file mode 100644
index 6fbe88213..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/ddraw.h
+++ /dev/null
@@ -1,2108 +0,0 @@
-/* $Id: ddraw.h,v 1.5 2005/07/01 22:43:39 daniels Exp $ */
-
-#ifndef __XWIN_DDRAW_H
-#define __XWIN_DDRAW_H
-
-#include <winnt.h>
-#include <wingdi.h>
-#include <objbase.h>
-
-#if defined(NONAMELESSUNION) && !defined(DUMMYUNIONNAME1)
-#define DUMMYUNIONNAME1 u1
-#endif
-
-#define ICOM_CALL_( xfn, p, args) (p)->lpVtbl->xfn args
-
-# ifdef UNICODE
-# define WINELIB_NAME_AW(func) func##W
-# else
-# define WINELIB_NAME_AW(func) func##A
-# endif /* UNICODE */
-#define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type;
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* defined(__cplusplus) */
-
-#ifndef DIRECTDRAW_VERSION
-#define DIRECTDRAW_VERSION 0x0700
-#endif /* DIRECTDRAW_VERSION */
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_GUID( CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
-DEFINE_GUID( CLSID_DirectDraw7, 0x3C305196,0x50DB,0x11D3,0x9C,0xFE,0x00,0xC0,0x4F,0xD9,0x30,0xC5 );
-DEFINE_GUID( CLSID_DirectDrawClipper, 0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 );
-DEFINE_GUID( IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
-DEFINE_GUID( IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
-DEFINE_GUID( IID_IDirectDraw4, 0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
-DEFINE_GUID( IID_IDirectDraw7, 0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
-DEFINE_GUID( IID_IDirectDrawSurface, 0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
-DEFINE_GUID( IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 );
-DEFINE_GUID( IID_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB );
-DEFINE_GUID( IID_IDirectDrawSurface4, 0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B );
-DEFINE_GUID( IID_IDirectDrawSurface7, 0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
-DEFINE_GUID( IID_IDirectDrawPalette, 0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
-DEFINE_GUID( IID_IDirectDrawClipper, 0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
-DEFINE_GUID( IID_IDirectDrawColorControl,0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 );
-DEFINE_GUID( IID_IDirectDrawGammaControl,0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E );
-
-typedef struct IDirectDraw *LPDIRECTDRAW;
-typedef struct IDirectDraw2 *LPDIRECTDRAW2;
-typedef struct IDirectDraw4 *LPDIRECTDRAW4;
-typedef struct IDirectDraw7 *LPDIRECTDRAW7;
-typedef struct IDirectDrawClipper *LPDIRECTDRAWCLIPPER;
-typedef struct IDirectDrawPalette *LPDIRECTDRAWPALETTE;
-typedef struct IDirectDrawSurface *LPDIRECTDRAWSURFACE;
-typedef struct IDirectDrawSurface2 *LPDIRECTDRAWSURFACE2;
-typedef struct IDirectDrawSurface3 *LPDIRECTDRAWSURFACE3;
-typedef struct IDirectDrawSurface4 *LPDIRECTDRAWSURFACE4;
-typedef struct IDirectDrawSurface7 *LPDIRECTDRAWSURFACE7;
-typedef struct IDirectDrawColorControl *LPDIRECTDRAWCOLORCONTROL;
-typedef struct IDirectDrawGammaControl *LPDIRECTDRAWGAMMACONTROL;
-
-
-#define DDENUMRET_CANCEL 0
-#define DDENUMRET_OK 1
-
-#define DD_OK 0
-
-
-#define _FACDD 0x876
-#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
-
-#define DDERR_ALREADYINITIALIZED MAKE_DDHRESULT( 5 )
-#define DDERR_CANNOTATTACHSURFACE MAKE_DDHRESULT( 10 )
-#define DDERR_CANNOTDETACHSURFACE MAKE_DDHRESULT( 20 )
-#define DDERR_CURRENTLYNOTAVAIL MAKE_DDHRESULT( 40 )
-#define DDERR_EXCEPTION MAKE_DDHRESULT( 55 )
-#define DDERR_GENERIC E_FAIL
-#define DDERR_HEIGHTALIGN MAKE_DDHRESULT( 90 )
-#define DDERR_INCOMPATIBLEPRIMARY MAKE_DDHRESULT( 95 )
-#define DDERR_INVALIDCAPS MAKE_DDHRESULT( 100 )
-#define DDERR_INVALIDCLIPLIST MAKE_DDHRESULT( 110 )
-#define DDERR_INVALIDMODE MAKE_DDHRESULT( 120 )
-#define DDERR_INVALIDOBJECT MAKE_DDHRESULT( 130 )
-#define DDERR_INVALIDPARAMS E_INVALIDARG
-#define DDERR_INVALIDPIXELFORMAT MAKE_DDHRESULT( 145 )
-#define DDERR_INVALIDRECT MAKE_DDHRESULT( 150 )
-#define DDERR_LOCKEDSURFACES MAKE_DDHRESULT( 160 )
-#define DDERR_NO3D MAKE_DDHRESULT( 170 )
-#define DDERR_NOALPHAHW MAKE_DDHRESULT( 180 )
-#define DDERR_NOSTEREOHARDWARE MAKE_DDHRESULT( 181 )
-#define DDERR_NOSURFACELEFT MAKE_DDHRESULT( 182 )
-#define DDERR_NOCLIPLIST MAKE_DDHRESULT( 205 )
-#define DDERR_NOCOLORCONVHW MAKE_DDHRESULT( 210 )
-#define DDERR_NOCOOPERATIVELEVELSET MAKE_DDHRESULT( 212 )
-#define DDERR_NOCOLORKEY MAKE_DDHRESULT( 215 )
-#define DDERR_NOCOLORKEYHW MAKE_DDHRESULT( 220 )
-#define DDERR_NODIRECTDRAWSUPPORT MAKE_DDHRESULT( 222 )
-#define DDERR_NOEXCLUSIVEMODE MAKE_DDHRESULT( 225 )
-#define DDERR_NOFLIPHW MAKE_DDHRESULT( 230 )
-#define DDERR_NOGDI MAKE_DDHRESULT( 240 )
-#define DDERR_NOMIRRORHW MAKE_DDHRESULT( 250 )
-#define DDERR_NOTFOUND MAKE_DDHRESULT( 255 )
-#define DDERR_NOOVERLAYHW MAKE_DDHRESULT( 260 )
-#define DDERR_OVERLAPPINGRECTS MAKE_DDHRESULT( 270 )
-#define DDERR_NORASTEROPHW MAKE_DDHRESULT( 280 )
-#define DDERR_NOROTATIONHW MAKE_DDHRESULT( 290 )
-#define DDERR_NOSTRETCHHW MAKE_DDHRESULT( 310 )
-#define DDERR_NOT4BITCOLOR MAKE_DDHRESULT( 316 )
-#define DDERR_NOT4BITCOLORINDEX MAKE_DDHRESULT( 317 )
-#define DDERR_NOT8BITCOLOR MAKE_DDHRESULT( 320 )
-#define DDERR_NOTEXTUREHW MAKE_DDHRESULT( 330 )
-#define DDERR_NOVSYNCHW MAKE_DDHRESULT( 335 )
-#define DDERR_NOZBUFFERHW MAKE_DDHRESULT( 340 )
-#define DDERR_NOZOVERLAYHW MAKE_DDHRESULT( 350 )
-#define DDERR_OUTOFCAPS MAKE_DDHRESULT( 360 )
-#define DDERR_OUTOFMEMORY E_OUTOFMEMORY
-#define DDERR_OUTOFVIDEOMEMORY MAKE_DDHRESULT( 380 )
-#define DDERR_OVERLAYCANTCLIP MAKE_DDHRESULT( 382 )
-#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE MAKE_DDHRESULT( 384 )
-#define DDERR_PALETTEBUSY MAKE_DDHRESULT( 387 )
-#define DDERR_COLORKEYNOTSET MAKE_DDHRESULT( 400 )
-#define DDERR_SURFACEALREADYATTACHED MAKE_DDHRESULT( 410 )
-#define DDERR_SURFACEALREADYDEPENDENT MAKE_DDHRESULT( 420 )
-#define DDERR_SURFACEBUSY MAKE_DDHRESULT( 430 )
-#define DDERR_CANTLOCKSURFACE MAKE_DDHRESULT( 435 )
-#define DDERR_SURFACEISOBSCURED MAKE_DDHRESULT( 440 )
-#define DDERR_SURFACELOST MAKE_DDHRESULT( 450 )
-#define DDERR_SURFACENOTATTACHED MAKE_DDHRESULT( 460 )
-#define DDERR_TOOBIGHEIGHT MAKE_DDHRESULT( 470 )
-#define DDERR_TOOBIGSIZE MAKE_DDHRESULT( 480 )
-#define DDERR_TOOBIGWIDTH MAKE_DDHRESULT( 490 )
-#define DDERR_UNSUPPORTED E_NOTIMPL
-#define DDERR_UNSUPPORTEDFORMAT MAKE_DDHRESULT( 510 )
-#define DDERR_UNSUPPORTEDMASK MAKE_DDHRESULT( 520 )
-#define DDERR_INVALIDSTREAM MAKE_DDHRESULT( 521 )
-#define DDERR_VERTICALBLANKINPROGRESS MAKE_DDHRESULT( 537 )
-#define DDERR_WASSTILLDRAWING MAKE_DDHRESULT( 540 )
-#define DDERR_DDSCAPSCOMPLEXREQUIRED MAKE_DDHRESULT( 542 )
-#define DDERR_XALIGN MAKE_DDHRESULT( 560 )
-#define DDERR_INVALIDDIRECTDRAWGUID MAKE_DDHRESULT( 561 )
-#define DDERR_DIRECTDRAWALREADYCREATED MAKE_DDHRESULT( 562 )
-#define DDERR_NODIRECTDRAWHW MAKE_DDHRESULT( 563 )
-#define DDERR_PRIMARYSURFACEALREADYEXISTS MAKE_DDHRESULT( 564 )
-#define DDERR_NOEMULATION MAKE_DDHRESULT( 565 )
-#define DDERR_REGIONTOOSMALL MAKE_DDHRESULT( 566 )
-#define DDERR_CLIPPERISUSINGHWND MAKE_DDHRESULT( 567 )
-#define DDERR_NOCLIPPERATTACHED MAKE_DDHRESULT( 568 )
-#define DDERR_NOHWND MAKE_DDHRESULT( 569 )
-#define DDERR_HWNDSUBCLASSED MAKE_DDHRESULT( 570 )
-#define DDERR_HWNDALREADYSET MAKE_DDHRESULT( 571 )
-#define DDERR_NOPALETTEATTACHED MAKE_DDHRESULT( 572 )
-#define DDERR_NOPALETTEHW MAKE_DDHRESULT( 573 )
-#define DDERR_BLTFASTCANTCLIP MAKE_DDHRESULT( 574 )
-#define DDERR_NOBLTHW MAKE_DDHRESULT( 575 )
-#define DDERR_NODDROPSHW MAKE_DDHRESULT( 576 )
-#define DDERR_OVERLAYNOTVISIBLE MAKE_DDHRESULT( 577 )
-#define DDERR_NOOVERLAYDEST MAKE_DDHRESULT( 578 )
-#define DDERR_INVALIDPOSITION MAKE_DDHRESULT( 579 )
-#define DDERR_NOTAOVERLAYSURFACE MAKE_DDHRESULT( 580 )
-#define DDERR_EXCLUSIVEMODEALREADYSET MAKE_DDHRESULT( 581 )
-#define DDERR_NOTFLIPPABLE MAKE_DDHRESULT( 582 )
-#define DDERR_CANTDUPLICATE MAKE_DDHRESULT( 583 )
-#define DDERR_NOTLOCKED MAKE_DDHRESULT( 584 )
-#define DDERR_CANTCREATEDC MAKE_DDHRESULT( 585 )
-#define DDERR_NODC MAKE_DDHRESULT( 586 )
-#define DDERR_WRONGMODE MAKE_DDHRESULT( 587 )
-#define DDERR_IMPLICITLYCREATED MAKE_DDHRESULT( 588 )
-#define DDERR_NOTPALETTIZED MAKE_DDHRESULT( 589 )
-#define DDERR_UNSUPPORTEDMODE MAKE_DDHRESULT( 590 )
-#define DDERR_NOMIPMAPHW MAKE_DDHRESULT( 591 )
-#define DDERR_INVALIDSURFACETYPE MAKE_DDHRESULT( 592 )
-#define DDERR_NOOPTIMIZEHW MAKE_DDHRESULT( 600 )
-#define DDERR_NOTLOADED MAKE_DDHRESULT( 601 )
-#define DDERR_NOFOCUSWINDOW MAKE_DDHRESULT( 602 )
-#define DDERR_NOTONMIPMAPSUBLEVEL MAKE_DDHRESULT( 603 )
-#define DDERR_DCALREADYCREATED MAKE_DDHRESULT( 620 )
-#define DDERR_NONONLOCALVIDMEM MAKE_DDHRESULT( 630 )
-#define DDERR_CANTPAGELOCK MAKE_DDHRESULT( 640 )
-#define DDERR_CANTPAGEUNLOCK MAKE_DDHRESULT( 660 )
-#define DDERR_NOTPAGELOCKED MAKE_DDHRESULT( 680 )
-#define DDERR_MOREDATA MAKE_DDHRESULT( 690 )
-#define DDERR_EXPIRED MAKE_DDHRESULT( 691 )
-#define DDERR_TESTFINISHED MAKE_DDHRESULT( 692 )
-#define DDERR_NEWMODE MAKE_DDHRESULT( 693 )
-#define DDERR_D3DNOTINITIALIZED MAKE_DDHRESULT( 694 )
-#define DDERR_VIDEONOTACTIVE MAKE_DDHRESULT( 695 )
-#define DDERR_NOMONITORINFORMATION MAKE_DDHRESULT( 696 )
-#define DDERR_NODRIVERSUPPORT MAKE_DDHRESULT( 697 )
-#define DDERR_DEVICEDOESNTOWNSURFACE MAKE_DDHRESULT( 699 )
-#define DDERR_NOTINITIALIZED CO_E_NOTINITIALIZED
-
-/* dwFlags for Blt* */
-#define DDBLT_ALPHADEST 0x00000001
-#define DDBLT_ALPHADESTCONSTOVERRIDE 0x00000002
-#define DDBLT_ALPHADESTNEG 0x00000004
-#define DDBLT_ALPHADESTSURFACEOVERRIDE 0x00000008
-#define DDBLT_ALPHAEDGEBLEND 0x00000010
-#define DDBLT_ALPHASRC 0x00000020
-#define DDBLT_ALPHASRCCONSTOVERRIDE 0x00000040
-#define DDBLT_ALPHASRCNEG 0x00000080
-#define DDBLT_ALPHASRCSURFACEOVERRIDE 0x00000100
-#define DDBLT_ASYNC 0x00000200
-#define DDBLT_COLORFILL 0x00000400
-#define DDBLT_DDFX 0x00000800
-#define DDBLT_DDROPS 0x00001000
-#define DDBLT_KEYDEST 0x00002000
-#define DDBLT_KEYDESTOVERRIDE 0x00004000
-#define DDBLT_KEYSRC 0x00008000
-#define DDBLT_KEYSRCOVERRIDE 0x00010000
-#define DDBLT_ROP 0x00020000
-#define DDBLT_ROTATIONANGLE 0x00040000
-#define DDBLT_ZBUFFER 0x00080000
-#define DDBLT_ZBUFFERDESTCONSTOVERRIDE 0x00100000
-#define DDBLT_ZBUFFERDESTOVERRIDE 0x00200000
-#define DDBLT_ZBUFFERSRCCONSTOVERRIDE 0x00400000
-#define DDBLT_ZBUFFERSRCOVERRIDE 0x00800000
-#define DDBLT_WAIT 0x01000000
-#define DDBLT_DEPTHFILL 0x02000000
-#define DDBLT_DONOTWAIT 0x08000000
-
-/* dwTrans for BltFast */
-#define DDBLTFAST_NOCOLORKEY 0x00000000
-#define DDBLTFAST_SRCCOLORKEY 0x00000001
-#define DDBLTFAST_DESTCOLORKEY 0x00000002
-#define DDBLTFAST_WAIT 0x00000010
-#define DDBLTFAST_DONOTWAIT 0x00000020
-
-/* dwFlags for Flip */
-#define DDFLIP_WAIT 0x00000001
-#define DDFLIP_EVEN 0x00000002 /* only valid for overlay */
-#define DDFLIP_ODD 0x00000004 /* only valid for overlay */
-#define DDFLIP_NOVSYNC 0x00000008
-#define DDFLIP_STEREO 0x00000010
-#define DDFLIP_DONOTWAIT 0x00000020
-
-/* dwFlags for GetBltStatus */
-#define DDGBS_CANBLT 0x00000001
-#define DDGBS_ISBLTDONE 0x00000002
-
-/* dwFlags for IDirectDrawSurface7::GetFlipStatus */
-#define DDGFS_CANFLIP 1L
-#define DDGFS_ISFLIPDONE 2L
-
-/* dwFlags for IDirectDrawSurface7::SetPrivateData */
-#define DDSPD_IUNKNOWNPTR 1L
-#define DDSPD_VOLATILE 2L
-
-/* DDSCAPS.dwCaps */
-/* reserved1, was 3d capable */
-#define DDSCAPS_RESERVED1 0x00000001
-/* surface contains alpha information */
-#define DDSCAPS_ALPHA 0x00000002
-/* this surface is a backbuffer */
-#define DDSCAPS_BACKBUFFER 0x00000004
-/* complex surface structure */
-#define DDSCAPS_COMPLEX 0x00000008
-/* part of surface flipping structure */
-#define DDSCAPS_FLIP 0x00000010
-/* this surface is the frontbuffer surface */
-#define DDSCAPS_FRONTBUFFER 0x00000020
-/* this is a plain offscreen surface */
-#define DDSCAPS_OFFSCREENPLAIN 0x00000040
-/* overlay */
-#define DDSCAPS_OVERLAY 0x00000080
-/* palette objects can be created and attached to us */
-#define DDSCAPS_PALETTE 0x00000100
-/* primary surface (the one the user looks at currently)(right eye)*/
-#define DDSCAPS_PRIMARYSURFACE 0x00000200
-/* primary surface for left eye */
-#define DDSCAPS_PRIMARYSURFACELEFT 0x00000400
-/* surface exists in systemmemory */
-#define DDSCAPS_SYSTEMMEMORY 0x00000800
-/* surface can be used as a texture */
-#define DDSCAPS_TEXTURE 0x00001000
-/* surface may be destination for 3d rendering */
-#define DDSCAPS_3DDEVICE 0x00002000
-/* surface exists in videomemory */
-#define DDSCAPS_VIDEOMEMORY 0x00004000
-/* surface changes immediately visible */
-#define DDSCAPS_VISIBLE 0x00008000
-/* write only surface */
-#define DDSCAPS_WRITEONLY 0x00010000
-/* zbuffer surface */
-#define DDSCAPS_ZBUFFER 0x00020000
-/* has its own DC */
-#define DDSCAPS_OWNDC 0x00040000
-/* surface should be able to receive live video */
-#define DDSCAPS_LIVEVIDEO 0x00080000
-/* should be able to have a hw codec decompress stuff into it */
-#define DDSCAPS_HWCODEC 0x00100000
-/* mode X (320x200 or 320x240) surface */
-#define DDSCAPS_MODEX 0x00200000
-/* one mipmap surface (1 level) */
-#define DDSCAPS_MIPMAP 0x00400000
-#define DDSCAPS_RESERVED2 0x00800000
-/* memory allocation delayed until Load() */
-#define DDSCAPS_ALLOCONLOAD 0x04000000
-/* Indicates that the surface will receive data from a video port */
-#define DDSCAPS_VIDEOPORT 0x08000000
-/* surface is in local videomemory */
-#define DDSCAPS_LOCALVIDMEM 0x10000000
-/* surface is in nonlocal videomemory */
-#define DDSCAPS_NONLOCALVIDMEM 0x20000000
-/* surface is a standard VGA mode surface (NOT ModeX) */
-#define DDSCAPS_STANDARDVGAMODE 0x40000000
-/* optimized? surface */
-#define DDSCAPS_OPTIMIZED 0x80000000
-
-typedef struct _DDSCAPS {
- DWORD dwCaps; /* capabilities of surface wanted */
-} DDSCAPS,*LPDDSCAPS;
-
-/* DDSCAPS2.dwCaps2 */
-/* indicates the surface will receive data from a video port using
- deinterlacing hardware. */
-#define DDSCAPS2_HARDWAREDEINTERLACE 0x00000002
-/* indicates the surface will be locked very frequently. */
-#define DDSCAPS2_HINTDYNAMIC 0x00000004
-/* indicates surface can be re-ordered or retiled on load() */
-#define DDSCAPS2_HINTSTATIC 0x00000008
-/* indicates surface to be managed by directdraw/direct3D */
-#define DDSCAPS2_TEXTUREMANAGE 0x00000010
-/* reserved bits */
-#define DDSCAPS2_RESERVED1 0x00000020
-#define DDSCAPS2_RESERVED2 0x00000040
-/* indicates surface will never be locked again */
-#define DDSCAPS2_OPAQUE 0x00000080
-/* set at CreateSurface() time to indicate antialising will be used */
-#define DDSCAPS2_HINTANTIALIASING 0x00000100
-/* set at CreateSurface() time to indicate cubic environment map */
-#define DDSCAPS2_CUBEMAP 0x00000200
-/* face flags for cube maps */
-#define DDSCAPS2_CUBEMAP_POSITIVEX 0x00000400
-#define DDSCAPS2_CUBEMAP_NEGATIVEX 0x00000800
-#define DDSCAPS2_CUBEMAP_POSITIVEY 0x00001000
-#define DDSCAPS2_CUBEMAP_NEGATIVEY 0x00002000
-#define DDSCAPS2_CUBEMAP_POSITIVEZ 0x00004000
-#define DDSCAPS2_CUBEMAP_NEGATIVEZ 0x00008000
-/* specifies all faces of a cube for CreateSurface() */
-#define DDSCAPS2_CUBEMAP_ALLFACES ( DDSCAPS2_CUBEMAP_POSITIVEX |\
- DDSCAPS2_CUBEMAP_NEGATIVEX |\
- DDSCAPS2_CUBEMAP_POSITIVEY |\
- DDSCAPS2_CUBEMAP_NEGATIVEY |\
- DDSCAPS2_CUBEMAP_POSITIVEZ |\
- DDSCAPS2_CUBEMAP_NEGATIVEZ )
-/* set for mipmap sublevels on DirectX7 and later. ignored by CreateSurface() */
-#define DDSCAPS2_MIPMAPSUBLEVEL 0x00010000
-/* indicates texture surface to be managed by Direct3D *only* */
-#define DDSCAPS2_D3DTEXTUREMANAGE 0x00020000
-/* indicates managed surface that can safely be lost */
-#define DDSCAPS2_DONOTPERSIST 0x00040000
-/* indicates surface is part of a stereo flipping chain */
-#define DDSCAPS2_STEREOSURFACELEFT 0x00080000
-
-typedef struct _DDSCAPS2 {
- DWORD dwCaps; /* capabilities of surface wanted */
- DWORD dwCaps2; /* additional capabilities */
- DWORD dwCaps3; /* reserved capabilities */
- DWORD dwCaps4; /* more reserved capabilities */
-} DDSCAPS2,*LPDDSCAPS2;
-
-#define DD_ROP_SPACE (256/32) /* space required to store ROP array */
-
-typedef struct _DDCAPS_DX7 /* DirectX 7 version of caps struct */
-{
- DWORD dwSize; /* size of the DDDRIVERCAPS structure */
- DWORD dwCaps; /* driver specific capabilities */
- DWORD dwCaps2; /* more driver specific capabilites */
- DWORD dwCKeyCaps; /* color key capabilities of the surface */
- DWORD dwFXCaps; /* driver specific stretching and effects capabilites */
- DWORD dwFXAlphaCaps; /* alpha driver specific capabilities */
- DWORD dwPalCaps; /* palette capabilities */
- DWORD dwSVCaps; /* stereo vision capabilities */
- DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
- DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwAlphaBltSurfaceBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwAlphaOverlayConstBitDepths; /* DDBD_2,4,8 */
- DWORD dwAlphaOverlayPixelBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwZBufferBitDepths; /* DDBD_8,16,24,32 */
- DWORD dwVidMemTotal; /* total amount of video memory */
- DWORD dwVidMemFree; /* amount of free video memory */
- DWORD dwMaxVisibleOverlays; /* maximum number of visible overlays */
- DWORD dwCurrVisibleOverlays; /* current number of visible overlays */
- DWORD dwNumFourCCCodes; /* number of four cc codes */
- DWORD dwAlignBoundarySrc; /* source rectangle alignment */
- DWORD dwAlignSizeSrc; /* source rectangle byte size */
- DWORD dwAlignBoundaryDest; /* dest rectangle alignment */
- DWORD dwAlignSizeDest; /* dest rectangle byte size */
- DWORD dwAlignStrideAlign; /* stride alignment */
- DWORD dwRops[DD_ROP_SPACE]; /* ROPS supported */
- DDSCAPS ddsOldCaps; /* old DDSCAPS - superceded for DirectX6+ */
- DWORD dwMinOverlayStretch; /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMaxOverlayStretch; /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMinLiveVideoStretch; /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMaxLiveVideoStretch; /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMinHwCodecStretch; /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMaxHwCodecStretch; /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwReserved1;
- DWORD dwReserved2;
- DWORD dwReserved3;
- DWORD dwSVBCaps; /* driver specific capabilities for System->Vmem blts */
- DWORD dwSVBCKeyCaps; /* driver color key capabilities for System->Vmem blts */
- DWORD dwSVBFXCaps; /* driver FX capabilities for System->Vmem blts */
- DWORD dwSVBRops[DD_ROP_SPACE];/* ROPS supported for System->Vmem blts */
- DWORD dwVSBCaps; /* driver specific capabilities for Vmem->System blts */
- DWORD dwVSBCKeyCaps; /* driver color key capabilities for Vmem->System blts */
- DWORD dwVSBFXCaps; /* driver FX capabilities for Vmem->System blts */
- DWORD dwVSBRops[DD_ROP_SPACE];/* ROPS supported for Vmem->System blts */
- DWORD dwSSBCaps; /* driver specific capabilities for System->System blts */
- DWORD dwSSBCKeyCaps; /* driver color key capabilities for System->System blts */
- DWORD dwSSBFXCaps; /* driver FX capabilities for System->System blts */
- DWORD dwSSBRops[DD_ROP_SPACE];/* ROPS supported for System->System blts */
- DWORD dwMaxVideoPorts; /* maximum number of usable video ports */
- DWORD dwCurrVideoPorts; /* current number of video ports used */
- DWORD dwSVBCaps2; /* more driver specific capabilities for System->Vmem blts */
- DWORD dwNLVBCaps; /* driver specific capabilities for non-local->local vidmem blts */
- DWORD dwNLVBCaps2; /* more driver specific capabilities non-local->local vidmem blts */
- DWORD dwNLVBCKeyCaps; /* driver color key capabilities for non-local->local vidmem blts */
- DWORD dwNLVBFXCaps; /* driver FX capabilities for non-local->local blts */
- DWORD dwNLVBRops[DD_ROP_SPACE]; /* ROPS supported for non-local->local blts */
- DDSCAPS2 ddsCaps; /* surface capabilities */
-} DDCAPS_DX7,*LPDDCAPS_DX7;
-
-typedef struct _DDCAPS_DX6 /* DirectX 6 version of caps struct */
-{
- DWORD dwSize; /* size of the DDDRIVERCAPS structure */
- DWORD dwCaps; /* driver specific capabilities */
- DWORD dwCaps2; /* more driver specific capabilites */
- DWORD dwCKeyCaps; /* color key capabilities of the surface */
- DWORD dwFXCaps; /* driver specific stretching and effects capabilites */
- DWORD dwFXAlphaCaps; /* alpha driver specific capabilities */
- DWORD dwPalCaps; /* palette capabilities */
- DWORD dwSVCaps; /* stereo vision capabilities */
- DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
- DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwAlphaBltSurfaceBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwAlphaOverlayConstBitDepths; /* DDBD_2,4,8 */
- DWORD dwAlphaOverlayPixelBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwZBufferBitDepths; /* DDBD_8,16,24,32 */
- DWORD dwVidMemTotal; /* total amount of video memory */
- DWORD dwVidMemFree; /* amount of free video memory */
- DWORD dwMaxVisibleOverlays; /* maximum number of visible overlays */
- DWORD dwCurrVisibleOverlays; /* current number of visible overlays */
- DWORD dwNumFourCCCodes; /* number of four cc codes */
- DWORD dwAlignBoundarySrc; /* source rectangle alignment */
- DWORD dwAlignSizeSrc; /* source rectangle byte size */
- DWORD dwAlignBoundaryDest; /* dest rectangle alignment */
- DWORD dwAlignSizeDest; /* dest rectangle byte size */
- DWORD dwAlignStrideAlign; /* stride alignment */
- DWORD dwRops[DD_ROP_SPACE]; /* ROPS supported */
- DDSCAPS ddsOldCaps; /* old DDSCAPS - superceded for DirectX6+ */
- DWORD dwMinOverlayStretch; /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMaxOverlayStretch; /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMinLiveVideoStretch; /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMaxLiveVideoStretch; /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMinHwCodecStretch; /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMaxHwCodecStretch; /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwReserved1;
- DWORD dwReserved2;
- DWORD dwReserved3;
- DWORD dwSVBCaps; /* driver specific capabilities for System->Vmem blts */
- DWORD dwSVBCKeyCaps; /* driver color key capabilities for System->Vmem blts */
- DWORD dwSVBFXCaps; /* driver FX capabilities for System->Vmem blts */
- DWORD dwSVBRops[DD_ROP_SPACE];/* ROPS supported for System->Vmem blts */
- DWORD dwVSBCaps; /* driver specific capabilities for Vmem->System blts */
- DWORD dwVSBCKeyCaps; /* driver color key capabilities for Vmem->System blts */
- DWORD dwVSBFXCaps; /* driver FX capabilities for Vmem->System blts */
- DWORD dwVSBRops[DD_ROP_SPACE];/* ROPS supported for Vmem->System blts */
- DWORD dwSSBCaps; /* driver specific capabilities for System->System blts */
- DWORD dwSSBCKeyCaps; /* driver color key capabilities for System->System blts */
- DWORD dwSSBFXCaps; /* driver FX capabilities for System->System blts */
- DWORD dwSSBRops[DD_ROP_SPACE];/* ROPS supported for System->System blts */
- DWORD dwMaxVideoPorts; /* maximum number of usable video ports */
- DWORD dwCurrVideoPorts; /* current number of video ports used */
- DWORD dwSVBCaps2; /* more driver specific capabilities for System->Vmem blts */
- DWORD dwNLVBCaps; /* driver specific capabilities for non-local->local vidmem blts */
- DWORD dwNLVBCaps2; /* more driver specific capabilities non-local->local vidmem blts */
- DWORD dwNLVBCKeyCaps; /* driver color key capabilities for non-local->local vidmem blts */
- DWORD dwNLVBFXCaps; /* driver FX capabilities for non-local->local blts */
- DWORD dwNLVBRops[DD_ROP_SPACE]; /* ROPS supported for non-local->local blts */
- /* and one new member for DirectX 6 */
- DDSCAPS2 ddsCaps; /* surface capabilities */
-} DDCAPS_DX6,*LPDDCAPS_DX6;
-
-typedef struct _DDCAPS_DX5 /* DirectX5 version of caps struct */
-{
- DWORD dwSize; /* size of the DDDRIVERCAPS structure */
- DWORD dwCaps; /* driver specific capabilities */
- DWORD dwCaps2; /* more driver specific capabilites */
- DWORD dwCKeyCaps; /* color key capabilities of the surface */
- DWORD dwFXCaps; /* driver specific stretching and effects capabilites */
- DWORD dwFXAlphaCaps; /* alpha driver specific capabilities */
- DWORD dwPalCaps; /* palette capabilities */
- DWORD dwSVCaps; /* stereo vision capabilities */
- DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
- DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwAlphaBltSurfaceBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwAlphaOverlayConstBitDepths; /* DDBD_2,4,8 */
- DWORD dwAlphaOverlayPixelBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwZBufferBitDepths; /* DDBD_8,16,24,32 */
- DWORD dwVidMemTotal; /* total amount of video memory */
- DWORD dwVidMemFree; /* amount of free video memory */
- DWORD dwMaxVisibleOverlays; /* maximum number of visible overlays */
- DWORD dwCurrVisibleOverlays; /* current number of visible overlays */
- DWORD dwNumFourCCCodes; /* number of four cc codes */
- DWORD dwAlignBoundarySrc; /* source rectangle alignment */
- DWORD dwAlignSizeSrc; /* source rectangle byte size */
- DWORD dwAlignBoundaryDest; /* dest rectangle alignment */
- DWORD dwAlignSizeDest; /* dest rectangle byte size */
- DWORD dwAlignStrideAlign; /* stride alignment */
- DWORD dwRops[DD_ROP_SPACE]; /* ROPS supported */
- DDSCAPS ddsCaps; /* DDSCAPS structure has all the general capabilities */
- DWORD dwMinOverlayStretch; /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMaxOverlayStretch; /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMinLiveVideoStretch; /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMaxLiveVideoStretch; /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMinHwCodecStretch; /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMaxHwCodecStretch; /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwReserved1;
- DWORD dwReserved2;
- DWORD dwReserved3;
- DWORD dwSVBCaps; /* driver specific capabilities for System->Vmem blts */
- DWORD dwSVBCKeyCaps; /* driver color key capabilities for System->Vmem blts */
- DWORD dwSVBFXCaps; /* driver FX capabilities for System->Vmem blts */
- DWORD dwSVBRops[DD_ROP_SPACE];/* ROPS supported for System->Vmem blts */
- DWORD dwVSBCaps; /* driver specific capabilities for Vmem->System blts */
- DWORD dwVSBCKeyCaps; /* driver color key capabilities for Vmem->System blts */
- DWORD dwVSBFXCaps; /* driver FX capabilities for Vmem->System blts */
- DWORD dwVSBRops[DD_ROP_SPACE];/* ROPS supported for Vmem->System blts */
- DWORD dwSSBCaps; /* driver specific capabilities for System->System blts */
- DWORD dwSSBCKeyCaps; /* driver color key capabilities for System->System blts */
- DWORD dwSSBFXCaps; /* driver FX capabilities for System->System blts */
- DWORD dwSSBRops[DD_ROP_SPACE];/* ROPS supported for System->System blts */
- /* the following are the new DirectX 5 members */
- DWORD dwMaxVideoPorts; /* maximum number of usable video ports */
- DWORD dwCurrVideoPorts; /* current number of video ports used */
- DWORD dwSVBCaps2; /* more driver specific capabilities for System->Vmem blts */
- DWORD dwNLVBCaps; /* driver specific capabilities for non-local->local vidmem blts */
- DWORD dwNLVBCaps2; /* more driver specific capabilities non-local->local vidmem blts */
- DWORD dwNLVBCKeyCaps; /* driver color key capabilities for non-local->local vidmem blts */
- DWORD dwNLVBFXCaps; /* driver FX capabilities for non-local->local blts */
- DWORD dwNLVBRops[DD_ROP_SPACE]; /* ROPS supported for non-local->local blts */
-} DDCAPS_DX5,*LPDDCAPS_DX5;
-
-typedef struct _DDCAPS_DX3 /* DirectX3 version of caps struct */
-{
- DWORD dwSize; /* size of the DDDRIVERCAPS structure */
- DWORD dwCaps; /* driver specific capabilities */
- DWORD dwCaps2; /* more driver specific capabilites */
- DWORD dwCKeyCaps; /* color key capabilities of the surface */
- DWORD dwFXCaps; /* driver specific stretching and effects capabilites */
- DWORD dwFXAlphaCaps; /* alpha driver specific capabilities */
- DWORD dwPalCaps; /* palette capabilities */
- DWORD dwSVCaps; /* stereo vision capabilities */
- DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
- DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwAlphaBltSurfaceBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwAlphaOverlayConstBitDepths; /* DDBD_2,4,8 */
- DWORD dwAlphaOverlayPixelBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
- DWORD dwZBufferBitDepths; /* DDBD_8,16,24,32 */
- DWORD dwVidMemTotal; /* total amount of video memory */
- DWORD dwVidMemFree; /* amount of free video memory */
- DWORD dwMaxVisibleOverlays; /* maximum number of visible overlays */
- DWORD dwCurrVisibleOverlays; /* current number of visible overlays */
- DWORD dwNumFourCCCodes; /* number of four cc codes */
- DWORD dwAlignBoundarySrc; /* source rectangle alignment */
- DWORD dwAlignSizeSrc; /* source rectangle byte size */
- DWORD dwAlignBoundaryDest; /* dest rectangle alignment */
- DWORD dwAlignSizeDest; /* dest rectangle byte size */
- DWORD dwAlignStrideAlign; /* stride alignment */
- DWORD dwRops[DD_ROP_SPACE]; /* ROPS supported */
- DDSCAPS ddsCaps; /* DDSCAPS structure has all the general capabilities */
- DWORD dwMinOverlayStretch; /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMaxOverlayStretch; /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMinLiveVideoStretch; /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMaxLiveVideoStretch; /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMinHwCodecStretch; /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwMaxHwCodecStretch; /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
- DWORD dwReserved1;
- DWORD dwReserved2;
- DWORD dwReserved3;
- DWORD dwSVBCaps; /* driver specific capabilities for System->Vmem blts */
- DWORD dwSVBCKeyCaps; /* driver color key capabilities for System->Vmem blts */
- DWORD dwSVBFXCaps; /* driver FX capabilities for System->Vmem blts */
- DWORD dwSVBRops[DD_ROP_SPACE];/* ROPS supported for System->Vmem blts */
- DWORD dwVSBCaps; /* driver specific capabilities for Vmem->System blts */
- DWORD dwVSBCKeyCaps; /* driver color key capabilities for Vmem->System blts */
- DWORD dwVSBFXCaps; /* driver FX capabilities for Vmem->System blts */
- DWORD dwVSBRops[DD_ROP_SPACE];/* ROPS supported for Vmem->System blts */
- DWORD dwSSBCaps; /* driver specific capabilities for System->System blts */
- DWORD dwSSBCKeyCaps; /* driver color key capabilities for System->System blts */
- DWORD dwSSBFXCaps; /* driver FX capabilities for System->System blts */
- DWORD dwSSBRops[DD_ROP_SPACE];/* ROPS supported for System->System blts */
- DWORD dwReserved4;
- DWORD dwReserved5;
- DWORD dwReserved6;
-} DDCAPS_DX3,*LPDDCAPS_DX3;
-
-/* set caps struct according to DIRECTDRAW_VERSION */
-
-#if DIRECTDRAW_VERSION <= 0x300
-typedef DDCAPS_DX3 DDCAPS;
-#elif DIRECTDRAW_VERSION <= 0x500
-typedef DDCAPS_DX5 DDCAPS;
-#elif DIRECTDRAW_VERSION <= 0x600
-typedef DDCAPS_DX6 DDCAPS;
-#else
-typedef DDCAPS_DX7 DDCAPS;
-#endif
-
-typedef DDCAPS *LPDDCAPS;
-
-/* DDCAPS.dwCaps */
-#define DDCAPS_3D 0x00000001
-#define DDCAPS_ALIGNBOUNDARYDEST 0x00000002
-#define DDCAPS_ALIGNSIZEDEST 0x00000004
-#define DDCAPS_ALIGNBOUNDARYSRC 0x00000008
-#define DDCAPS_ALIGNSIZESRC 0x00000010
-#define DDCAPS_ALIGNSTRIDE 0x00000020
-#define DDCAPS_BLT 0x00000040
-#define DDCAPS_BLTQUEUE 0x00000080
-#define DDCAPS_BLTFOURCC 0x00000100
-#define DDCAPS_BLTSTRETCH 0x00000200
-#define DDCAPS_GDI 0x00000400
-#define DDCAPS_OVERLAY 0x00000800
-#define DDCAPS_OVERLAYCANTCLIP 0x00001000
-#define DDCAPS_OVERLAYFOURCC 0x00002000
-#define DDCAPS_OVERLAYSTRETCH 0x00004000
-#define DDCAPS_PALETTE 0x00008000
-#define DDCAPS_PALETTEVSYNC 0x00010000
-#define DDCAPS_READSCANLINE 0x00020000
-#define DDCAPS_STEREOVIEW 0x00040000
-#define DDCAPS_VBI 0x00080000
-#define DDCAPS_ZBLTS 0x00100000
-#define DDCAPS_ZOVERLAYS 0x00200000
-#define DDCAPS_COLORKEY 0x00400000
-#define DDCAPS_ALPHA 0x00800000
-#define DDCAPS_COLORKEYHWASSIST 0x01000000
-#define DDCAPS_NOHARDWARE 0x02000000
-#define DDCAPS_BLTCOLORFILL 0x04000000
-#define DDCAPS_BANKSWITCHED 0x08000000
-#define DDCAPS_BLTDEPTHFILL 0x10000000
-#define DDCAPS_CANCLIP 0x20000000
-#define DDCAPS_CANCLIPSTRETCHED 0x40000000
-#define DDCAPS_CANBLTSYSMEM 0x80000000
-
-/* DDCAPS.dwCaps2 */
-#define DDCAPS2_CERTIFIED 0x00000001
-#define DDCAPS2_NO2DDURING3DSCENE 0x00000002
-#define DDCAPS2_VIDEOPORT 0x00000004
-#define DDCAPS2_AUTOFLIPOVERLAY 0x00000008
-#define DDCAPS2_CANBOBINTERLEAVED 0x00000010
-#define DDCAPS2_CANBOBNONINTERLEAVED 0x00000020
-#define DDCAPS2_COLORCONTROLOVERLAY 0x00000040
-#define DDCAPS2_COLORCONTROLPRIMARY 0x00000080
-#define DDCAPS2_CANDROPZ16BIT 0x00000100
-#define DDCAPS2_NONLOCALVIDMEM 0x00000200
-#define DDCAPS2_NONLOCALVIDMEMCAPS 0x00000400
-#define DDCAPS2_NOPAGELOCKREQUIRED 0x00000800
-#define DDCAPS2_WIDESURFACES 0x00001000
-#define DDCAPS2_CANFLIPODDEVEN 0x00002000
-#define DDCAPS2_CANBOBHARDWARE 0x00004000
-#define DDCAPS2_COPYFOURCC 0x00008000
-#define DDCAPS2_PRIMARYGAMMA 0x00020000
-#define DDCAPS2_CANRENDERWINDOWED 0x00080000
-#define DDCAPS2_CANCALIBRATEGAMMA 0x00100000
-#define DDCAPS2_FLIPINTERVAL 0x00200000
-#define DDCAPS2_FLIPNOVSYNC 0x00400000
-#define DDCAPS2_CANMANAGETEXTURE 0x00800000
-#define DDCAPS2_TEXMANINNONLOCALVIDMEM 0x01000000
-#define DDCAPS2_STEREO 0x02000000
-#define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL 0x04000000
-
-
-/* Set/Get Colour Key Flags */
-#define DDCKEY_COLORSPACE 0x00000001 /* Struct is single colour space */
-#define DDCKEY_DESTBLT 0x00000002 /* To be used as dest for blt */
-#define DDCKEY_DESTOVERLAY 0x00000004 /* To be used as dest for CK overlays */
-#define DDCKEY_SRCBLT 0x00000008 /* To be used as src for blt */
-#define DDCKEY_SRCOVERLAY 0x00000010 /* To be used as src for CK overlays */
-
-typedef struct _DDCOLORKEY
-{
- DWORD dwColorSpaceLowValue;/* low boundary of color space that is to
- * be treated as Color Key, inclusive
- */
- DWORD dwColorSpaceHighValue;/* high boundary of color space that is
- * to be treated as Color Key, inclusive
- */
-} DDCOLORKEY,*LPDDCOLORKEY;
-
-/* ddCKEYCAPS bits */
-#define DDCKEYCAPS_DESTBLT 0x00000001
-#define DDCKEYCAPS_DESTBLTCLRSPACE 0x00000002
-#define DDCKEYCAPS_DESTBLTCLRSPACEYUV 0x00000004
-#define DDCKEYCAPS_DESTBLTYUV 0x00000008
-#define DDCKEYCAPS_DESTOVERLAY 0x00000010
-#define DDCKEYCAPS_DESTOVERLAYCLRSPACE 0x00000020
-#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV 0x00000040
-#define DDCKEYCAPS_DESTOVERLAYONEACTIVE 0x00000080
-#define DDCKEYCAPS_DESTOVERLAYYUV 0x00000100
-#define DDCKEYCAPS_SRCBLT 0x00000200
-#define DDCKEYCAPS_SRCBLTCLRSPACE 0x00000400
-#define DDCKEYCAPS_SRCBLTCLRSPACEYUV 0x00000800
-#define DDCKEYCAPS_SRCBLTYUV 0x00001000
-#define DDCKEYCAPS_SRCOVERLAY 0x00002000
-#define DDCKEYCAPS_SRCOVERLAYCLRSPACE 0x00004000
-#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV 0x00008000
-#define DDCKEYCAPS_SRCOVERLAYONEACTIVE 0x00010000
-#define DDCKEYCAPS_SRCOVERLAYYUV 0x00020000
-#define DDCKEYCAPS_NOCOSTOVERLAY 0x00040000
-
-typedef struct _DDPIXELFORMAT {
- DWORD dwSize; /* 0: size of structure */
- DWORD dwFlags; /* 4: pixel format flags */
- DWORD dwFourCC; /* 8: (FOURCC code) */
- union {
- DWORD dwRGBBitCount; /* C: how many bits per pixel */
- DWORD dwYUVBitCount; /* C: how many bits per pixel */
- DWORD dwZBufferBitDepth; /* C: how many bits for z buffers */
- DWORD dwAlphaBitDepth; /* C: how many bits for alpha channels*/
- DWORD dwLuminanceBitCount;
- DWORD dwBumpBitCount;
- } DUMMYUNIONNAME1;
- union {
- DWORD dwRBitMask; /* 10: mask for red bit*/
- DWORD dwYBitMask; /* 10: mask for Y bits*/
- DWORD dwStencilBitDepth;
- DWORD dwLuminanceBitMask;
- DWORD dwBumpDuBitMask;
- } DUMMYUNIONNAME2;
- union {
- DWORD dwGBitMask; /* 14: mask for green bits*/
- DWORD dwUBitMask; /* 14: mask for U bits*/
- DWORD dwZBitMask;
- DWORD dwBumpDvBitMask;
- } DUMMYUNIONNAME3;
- union {
- DWORD dwBBitMask; /* 18: mask for blue bits*/
- DWORD dwVBitMask; /* 18: mask for V bits*/
- DWORD dwStencilBitMask;
- DWORD dwBumpLuminanceBitMask;
- } DUMMYUNIONNAME4;
- union {
- DWORD dwRGBAlphaBitMask; /* 1C: mask for alpha channel */
- DWORD dwYUVAlphaBitMask; /* 1C: mask for alpha channel */
- DWORD dwLuminanceAlphaBitMask;
- DWORD dwRGBZBitMask; /* 1C: mask for Z channel */
- DWORD dwYUVZBitMask; /* 1C: mask for Z channel */
- } DUMMYUNIONNAME5;
- /* 20: next structure */
-} DDPIXELFORMAT,*LPDDPIXELFORMAT;
-
-/* DDCAPS.dwFXCaps */
-#define DDFXCAPS_BLTALPHA 0x00000001
-#define DDFXCAPS_OVERLAYALPHA 0x00000004
-#define DDFXCAPS_BLTARITHSTRETCHYN 0x00000010
-#define DDFXCAPS_BLTARITHSTRETCHY 0x00000020
-#define DDFXCAPS_BLTMIRRORLEFTRIGHT 0x00000040
-#define DDFXCAPS_BLTMIRRORUPDOWN 0x00000080
-#define DDFXCAPS_BLTROTATION 0x00000100
-#define DDFXCAPS_BLTROTATION90 0x00000200
-#define DDFXCAPS_BLTSHRINKX 0x00000400
-#define DDFXCAPS_BLTSHRINKXN 0x00000800
-#define DDFXCAPS_BLTSHRINKY 0x00001000
-#define DDFXCAPS_BLTSHRINKYN 0x00002000
-#define DDFXCAPS_BLTSTRETCHX 0x00004000
-#define DDFXCAPS_BLTSTRETCHXN 0x00008000
-#define DDFXCAPS_BLTSTRETCHY 0x00010000
-#define DDFXCAPS_BLTSTRETCHYN 0x00020000
-#define DDFXCAPS_OVERLAYARITHSTRETCHY 0x00040000
-#define DDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008
-#define DDFXCAPS_OVERLAYSHRINKX 0x00080000
-#define DDFXCAPS_OVERLAYSHRINKXN 0x00100000
-#define DDFXCAPS_OVERLAYSHRINKY 0x00200000
-#define DDFXCAPS_OVERLAYSHRINKYN 0x00400000
-#define DDFXCAPS_OVERLAYSTRETCHX 0x00800000
-#define DDFXCAPS_OVERLAYSTRETCHXN 0x01000000
-#define DDFXCAPS_OVERLAYSTRETCHY 0x02000000
-#define DDFXCAPS_OVERLAYSTRETCHYN 0x04000000
-#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000
-#define DDFXCAPS_OVERLAYMIRRORUPDOWN 0x10000000
-
-#define DDFXCAPS_OVERLAYFILTER DDFXCAPS_OVERLAYARITHSTRETCHY
-
-/* DDCAPS.dwFXAlphaCaps */
-#define DDFXALPHACAPS_BLTALPHAEDGEBLEND 0x00000001
-#define DDFXALPHACAPS_BLTALPHAPIXELS 0x00000002
-#define DDFXALPHACAPS_BLTALPHAPIXELSNEG 0x00000004
-#define DDFXALPHACAPS_BLTALPHASURFACES 0x00000008
-#define DDFXALPHACAPS_BLTALPHASURFACESNEG 0x00000010
-#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND 0x00000020
-#define DDFXALPHACAPS_OVERLAYALPHAPIXELS 0x00000040
-#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG 0x00000080
-#define DDFXALPHACAPS_OVERLAYALPHASURFACES 0x00000100
-#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG 0x00000200
-
-/* DDCAPS.dwPalCaps */
-#define DDPCAPS_4BIT 0x00000001
-#define DDPCAPS_8BITENTRIES 0x00000002
-#define DDPCAPS_8BIT 0x00000004
-#define DDPCAPS_INITIALIZE 0x00000008
-#define DDPCAPS_PRIMARYSURFACE 0x00000010
-#define DDPCAPS_PRIMARYSURFACELEFT 0x00000020
-#define DDPCAPS_ALLOW256 0x00000040
-#define DDPCAPS_VSYNC 0x00000080
-#define DDPCAPS_1BIT 0x00000100
-#define DDPCAPS_2BIT 0x00000200
-#define DDPCAPS_ALPHA 0x00000400
-
-/* DDCAPS.dwSVCaps */
-/* the first 4 of these are now obsolete */
-#if DIRECTDRAW_VERSION >= 0x700 /* FIXME: I'm not sure when this switch occured */
-#define DDSVCAPS_RESERVED1 0x00000001
-#define DDSVCAPS_RESERVED2 0x00000002
-#define DDSVCAPS_RESERVED3 0x00000004
-#define DDSVCAPS_RESERVED4 0x00000008
-#else
-#define DDSVCAPS_ENIGMA 0x00000001
-#define DDSVCAPS_FLICKER 0x00000002
-#define DDSVCAPS_REDBLUE 0x00000004
-#define DDSVCAPS_SPLIT 0x00000008
-#endif
-#define DDSVCAPS_STEREOSEQUENTIAL 0x00000010
-
-/* BitDepths */
-#define DDBD_1 0x00004000
-#define DDBD_2 0x00002000
-#define DDBD_4 0x00001000
-#define DDBD_8 0x00000800
-#define DDBD_16 0x00000400
-#define DDBD_24 0x00000200
-#define DDBD_32 0x00000100
-
-/* DDOVERLAYFX.dwDDFX */
-#define DDOVERFX_ARITHSTRETCHY 0x00000001
-#define DDOVERFX_MIRRORLEFTRIGHT 0x00000002
-#define DDOVERFX_MIRRORUPDOWN 0x00000004
-
-/* UpdateOverlay flags */
-#define DDOVER_ALPHADEST 0x00000001
-#define DDOVER_ALPHADESTCONSTOVERRIDE 0x00000002
-#define DDOVER_ALPHADESTNEG 0x00000004
-#define DDOVER_ALPHADESTSURFACEOVERRIDE 0x00000008
-#define DDOVER_ALPHAEDGEBLEND 0x00000010
-#define DDOVER_ALPHASRC 0x00000020
-#define DDOVER_ALPHASRCCONSTOVERRIDE 0x00000040
-#define DDOVER_ALPHASRCNEG 0x00000080
-#define DDOVER_ALPHASRCSURFACEOVERRIDE 0x00000100
-#define DDOVER_HIDE 0x00000200
-#define DDOVER_KEYDEST 0x00000400
-#define DDOVER_KEYDESTOVERRIDE 0x00000800
-#define DDOVER_KEYSRC 0x00001000
-#define DDOVER_KEYSRCOVERRIDE 0x00002000
-#define DDOVER_SHOW 0x00004000
-#define DDOVER_ADDDIRTYRECT 0x00008000
-#define DDOVER_REFRESHDIRTYRECTS 0x00010000
-#define DDOVER_REFRESHALL 0x00020000
-#define DDOVER_DDFX 0x00080000
-#define DDOVER_AUTOFLIP 0x00100000
-#define DDOVER_BOB 0x00200000
-#define DDOVER_OVERRIDEBOBWEAVE 0x00400000
-#define DDOVER_INTERLEAVED 0x00800000
-
-/* DDCOLORKEY.dwFlags */
-#define DDPF_ALPHAPIXELS 0x00000001
-#define DDPF_ALPHA 0x00000002
-#define DDPF_FOURCC 0x00000004
-#define DDPF_PALETTEINDEXED4 0x00000008
-#define DDPF_PALETTEINDEXEDTO8 0x00000010
-#define DDPF_PALETTEINDEXED8 0x00000020
-#define DDPF_RGB 0x00000040
-#define DDPF_COMPRESSED 0x00000080
-#define DDPF_RGBTOYUV 0x00000100
-#define DDPF_YUV 0x00000200
-#define DDPF_ZBUFFER 0x00000400
-#define DDPF_PALETTEINDEXED1 0x00000800
-#define DDPF_PALETTEINDEXED2 0x00001000
-#define DDPF_ZPIXELS 0x00002000
-#define DDPF_STENCILBUFFER 0x00004000
-#define DDPF_ALPHAPREMULT 0x00008000
-#define DDPF_LUMINANCE 0x00020000
-#define DDPF_BUMPLUMINANCE 0x00040000
-#define DDPF_BUMPDUDV 0x00080000
-
-/* SetCooperativeLevel dwFlags */
-#define DDSCL_FULLSCREEN 0x00000001
-#define DDSCL_ALLOWREBOOT 0x00000002
-#define DDSCL_NOWINDOWCHANGES 0x00000004
-#define DDSCL_NORMAL 0x00000008
-#define DDSCL_EXCLUSIVE 0x00000010
-#define DDSCL_ALLOWMODEX 0x00000040
-#define DDSCL_SETFOCUSWINDOW 0x00000080
-#define DDSCL_SETDEVICEWINDOW 0x00000100
-#define DDSCL_CREATEDEVICEWINDOW 0x00000200
-#define DDSCL_MULTITHREADED 0x00000400
-#define DDSCL_FPUSETUP 0x00000800
-#define DDSCL_FPUPRESERVE 0x00001000
-
-
-/* DDSURFACEDESC.dwFlags */
-#define DDSD_CAPS 0x00000001
-#define DDSD_HEIGHT 0x00000002
-#define DDSD_WIDTH 0x00000004
-#define DDSD_PITCH 0x00000008
-#define DDSD_BACKBUFFERCOUNT 0x00000020
-#define DDSD_ZBUFFERBITDEPTH 0x00000040
-#define DDSD_ALPHABITDEPTH 0x00000080
-#define DDSD_LPSURFACE 0x00000800
-#define DDSD_PIXELFORMAT 0x00001000
-#define DDSD_CKDESTOVERLAY 0x00002000
-#define DDSD_CKDESTBLT 0x00004000
-#define DDSD_CKSRCOVERLAY 0x00008000
-#define DDSD_CKSRCBLT 0x00010000
-#define DDSD_MIPMAPCOUNT 0x00020000
-#define DDSD_REFRESHRATE 0x00040000
-#define DDSD_LINEARSIZE 0x00080000
-#define DDSD_TEXTURESTAGE 0x00100000
-#define DDSD_FVF 0x00200000
-#define DDSD_SRCVBHANDLE 0x00400000
-#define DDSD_ALL 0x007ff9ee
-
-/* EnumSurfaces flags */
-#define DDENUMSURFACES_ALL 0x00000001
-#define DDENUMSURFACES_MATCH 0x00000002
-#define DDENUMSURFACES_NOMATCH 0x00000004
-#define DDENUMSURFACES_CANBECREATED 0x00000008
-#define DDENUMSURFACES_DOESEXIST 0x00000010
-
-/* SetDisplayMode flags */
-#define DDSDM_STANDARDVGAMODE 0x00000001
-
-/* EnumDisplayModes flags */
-#define DDEDM_REFRESHRATES 0x00000001
-#define DDEDM_STANDARDVGAMODES 0x00000002
-
-/* WaitForVerticalDisplay flags */
-
-#define DDWAITVB_BLOCKBEGIN 0x00000001
-#define DDWAITVB_BLOCKBEGINEVENT 0x00000002
-#define DDWAITVB_BLOCKEND 0x00000004
-
-typedef struct _DDSURFACEDESC
-{
- DWORD dwSize; /* 0: size of the DDSURFACEDESC structure*/
- DWORD dwFlags; /* 4: determines what fields are valid*/
- DWORD dwHeight; /* 8: height of surface to be created*/
- DWORD dwWidth; /* C: width of input surface*/
- union {
- LONG lPitch; /* 10: distance to start of next line (return value only)*/
- DWORD dwLinearSize;
- } DUMMYUNIONNAME1;
- DWORD dwBackBufferCount;/* 14: number of back buffers requested*/
- union {
- DWORD dwMipMapCount;/* 18:number of mip-map levels requested*/
- DWORD dwZBufferBitDepth;/*18: depth of Z buffer requested*/
- DWORD dwRefreshRate;/* 18:refresh rate (used when display mode is described)*/
- } DUMMYUNIONNAME2;
- DWORD dwAlphaBitDepth;/* 1C:depth of alpha buffer requested*/
- DWORD dwReserved; /* 20:reserved*/
- LPVOID lpSurface; /* 24:pointer to the associated surface memory*/
- DDCOLORKEY ddckCKDestOverlay;/* 28: CK for dest overlay use*/
- DDCOLORKEY ddckCKDestBlt; /* 30: CK for destination blt use*/
- DDCOLORKEY ddckCKSrcOverlay;/* 38: CK for source overlay use*/
- DDCOLORKEY ddckCKSrcBlt; /* 40: CK for source blt use*/
- DDPIXELFORMAT ddpfPixelFormat;/* 48: pixel format description of the surface*/
- DDSCAPS ddsCaps; /* 68: direct draw surface caps */
-} DDSURFACEDESC,*LPDDSURFACEDESC;
-
-typedef struct _DDSURFACEDESC2
-{
- DWORD dwSize; /* 0: size of the DDSURFACEDESC structure*/
- DWORD dwFlags; /* 4: determines what fields are valid*/
- DWORD dwHeight; /* 8: height of surface to be created*/
- DWORD dwWidth; /* C: width of input surface*/
- union {
- LONG lPitch; /*10: distance to start of next line (return value only)*/
- DWORD dwLinearSize; /*10: formless late-allocated optimized surface size */
- } DUMMYUNIONNAME1;
- DWORD dwBackBufferCount;/* 14: number of back buffers requested*/
- union {
- DWORD dwMipMapCount;/* 18:number of mip-map levels requested*/
- DWORD dwRefreshRate;/* 18:refresh rate (used when display mode is described)*/
- DWORD dwSrcVBHandle;/* 18:source used in VB::Optimize */
- } DUMMYUNIONNAME2;
- DWORD dwAlphaBitDepth;/* 1C:depth of alpha buffer requested*/
- DWORD dwReserved; /* 20:reserved*/
- LPVOID lpSurface; /* 24:pointer to the associated surface memory*/
- union {
- DDCOLORKEY ddckCKDestOverlay; /* 28: CK for dest overlay use*/
- DWORD dwEmptyFaceColor; /* 28: color for empty cubemap faces */
- } DUMMYUNIONNAME3;
- DDCOLORKEY ddckCKDestBlt; /* 30: CK for destination blt use*/
- DDCOLORKEY ddckCKSrcOverlay;/* 38: CK for source overlay use*/
- DDCOLORKEY ddckCKSrcBlt; /* 40: CK for source blt use*/
-
- union {
- DDPIXELFORMAT ddpfPixelFormat;/* 48: pixel format description of the surface*/
- DWORD dwFVF; /* 48: vertex format description of vertex buffers */
- } DUMMYUNIONNAME4;
- DDSCAPS2 ddsCaps; /* 68: DDraw surface caps */
- DWORD dwTextureStage; /* 78: stage in multitexture cascade */
-} DDSURFACEDESC2,*LPDDSURFACEDESC2;
-
-/* DDCOLORCONTROL.dwFlags */
-#define DDCOLOR_BRIGHTNESS 0x00000001
-#define DDCOLOR_CONTRAST 0x00000002
-#define DDCOLOR_HUE 0x00000004
-#define DDCOLOR_SATURATION 0x00000008
-#define DDCOLOR_SHARPNESS 0x00000010
-#define DDCOLOR_GAMMA 0x00000020
-#define DDCOLOR_COLORENABLE 0x00000040
-
-typedef struct {
- DWORD dwSize;
- DWORD dwFlags;
- LONG lBrightness;
- LONG lContrast;
- LONG lHue;
- LONG lSaturation;
- LONG lSharpness;
- LONG lGamma;
- LONG lColorEnable;
- DWORD dwReserved1;
-} DDCOLORCONTROL,*LPDDCOLORCONTROL;
-
-typedef struct {
- WORD red[256];
- WORD green[256];
- WORD blue[256];
-} DDGAMMARAMP,*LPDDGAMMARAMP;
-
-typedef BOOL CALLBACK (*LPDDENUMCALLBACKA)(GUID *, LPSTR, LPSTR, LPVOID);
-typedef BOOL CALLBACK (*LPDDENUMCALLBACKW)(GUID *, LPWSTR, LPWSTR, LPVOID);
-DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACK)
-
-typedef HRESULT CALLBACK (*LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
-typedef HRESULT CALLBACK (*LPDDENUMMODESCALLBACK2)(LPDDSURFACEDESC2, LPVOID);
-typedef HRESULT CALLBACK (*LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
-typedef HRESULT CALLBACK (*LPDDENUMSURFACESCALLBACK2)(LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID);
-typedef HRESULT CALLBACK (*LPDDENUMSURFACESCALLBACK7)(LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID);
-
-typedef BOOL CALLBACK (*LPDDENUMCALLBACKEXA)(GUID *, LPSTR, LPSTR, LPVOID, HMONITOR);
-typedef BOOL CALLBACK (*LPDDENUMCALLBACKEXW)(GUID *, LPWSTR, LPWSTR, LPVOID, HMONITOR);
-DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACKEX)
-
-HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
-HRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
-#define DirectDrawEnumerateEx WINELIB_NAME_AW(DirectDrawEnumerateEx)
-
-/* flags for DirectDrawEnumerateEx */
-#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001
-#define DDENUM_DETACHEDSECONDARYDEVICES 0x00000002
-#define DDENUM_NONDISPLAYDEVICES 0x00000004
-
-/* flags for DirectDrawCreate or IDirectDraw::Initialize */
-#define DDCREATE_HARDWAREONLY 1L
-#define DDCREATE_EMULATIONONLY 2L
-
-typedef struct _DDBLTFX
-{
- DWORD dwSize; /* size of structure */
- DWORD dwDDFX; /* FX operations */
- DWORD dwROP; /* Win32 raster operations */
- DWORD dwDDROP; /* Raster operations new for DirectDraw */
- DWORD dwRotationAngle; /* Rotation angle for blt */
- DWORD dwZBufferOpCode; /* ZBuffer compares */
- DWORD dwZBufferLow; /* Low limit of Z buffer */
- DWORD dwZBufferHigh; /* High limit of Z buffer */
- DWORD dwZBufferBaseDest; /* Destination base value */
- DWORD dwZDestConstBitDepth; /* Bit depth used to specify Z constant for destination */
- union
- {
- DWORD dwZDestConst; /* Constant to use as Z buffer for dest */
- LPDIRECTDRAWSURFACE lpDDSZBufferDest; /* Surface to use as Z buffer for dest */
- } DUMMYUNIONNAME1;
- DWORD dwZSrcConstBitDepth; /* Bit depth used to specify Z constant for source */
- union
- {
- DWORD dwZSrcConst; /* Constant to use as Z buffer for src */
- LPDIRECTDRAWSURFACE lpDDSZBufferSrc; /* Surface to use as Z buffer for src */
- } DUMMYUNIONNAME2;
- DWORD dwAlphaEdgeBlendBitDepth; /* Bit depth used to specify constant for alpha edge blend */
- DWORD dwAlphaEdgeBlend; /* Alpha for edge blending */
- DWORD dwReserved;
- DWORD dwAlphaDestConstBitDepth; /* Bit depth used to specify alpha constant for destination */
- union
- {
- DWORD dwAlphaDestConst; /* Constant to use as Alpha Channel */
- LPDIRECTDRAWSURFACE lpDDSAlphaDest; /* Surface to use as Alpha Channel */
- } DUMMYUNIONNAME3;
- DWORD dwAlphaSrcConstBitDepth; /* Bit depth used to specify alpha constant for source */
- union
- {
- DWORD dwAlphaSrcConst; /* Constant to use as Alpha Channel */
- LPDIRECTDRAWSURFACE lpDDSAlphaSrc; /* Surface to use as Alpha Channel */
- } DUMMYUNIONNAME4;
- union
- {
- DWORD dwFillColor; /* color in RGB or Palettized */
- DWORD dwFillDepth; /* depth value for z-buffer */
- DWORD dwFillPixel; /* pixel val for RGBA or RGBZ */
- LPDIRECTDRAWSURFACE lpDDSPattern; /* Surface to use as pattern */
- } DUMMYUNIONNAME5;
- DDCOLORKEY ddckDestColorkey; /* DestColorkey override */
- DDCOLORKEY ddckSrcColorkey; /* SrcColorkey override */
-} DDBLTFX,*LPDDBLTFX;
-
-/* dwDDFX */
-/* arithmetic stretching along y axis */
-#define DDBLTFX_ARITHSTRETCHY 0x00000001
-/* mirror on y axis */
-#define DDBLTFX_MIRRORLEFTRIGHT 0x00000002
-/* mirror on x axis */
-#define DDBLTFX_MIRRORUPDOWN 0x00000004
-/* do not tear */
-#define DDBLTFX_NOTEARING 0x00000008
-/* 180 degrees clockwise rotation */
-#define DDBLTFX_ROTATE180 0x00000010
-/* 270 degrees clockwise rotation */
-#define DDBLTFX_ROTATE270 0x00000020
-/* 90 degrees clockwise rotation */
-#define DDBLTFX_ROTATE90 0x00000040
-/* dwZBufferLow and dwZBufferHigh specify limits to the copied Z values */
-#define DDBLTFX_ZBUFFERRANGE 0x00000080
-/* add dwZBufferBaseDest to every source z value before compare */
-#define DDBLTFX_ZBUFFERBASEDEST 0x00000100
-
-typedef struct _DDOVERLAYFX
-{
- DWORD dwSize; /* size of structure */
- DWORD dwAlphaEdgeBlendBitDepth; /* Bit depth used to specify constant for alpha edge blend */
- DWORD dwAlphaEdgeBlend; /* Constant to use as alpha for edge blend */
- DWORD dwReserved;
- DWORD dwAlphaDestConstBitDepth; /* Bit depth used to specify alpha constant for destination */
- union
- {
- DWORD dwAlphaDestConst; /* Constant to use as alpha channel for dest */
- LPDIRECTDRAWSURFACE lpDDSAlphaDest; /* Surface to use as alpha channel for dest */
- } DUMMYUNIONNAME1;
- DWORD dwAlphaSrcConstBitDepth; /* Bit depth used to specify alpha constant for source */
- union
- {
- DWORD dwAlphaSrcConst; /* Constant to use as alpha channel for src */
- LPDIRECTDRAWSURFACE lpDDSAlphaSrc; /* Surface to use as alpha channel for src */
- } DUMMYUNIONNAME2;
- DDCOLORKEY dckDestColorkey; /* DestColorkey override */
- DDCOLORKEY dckSrcColorkey; /* DestColorkey override */
- DWORD dwDDFX; /* Overlay FX */
- DWORD dwFlags; /* flags */
-} DDOVERLAYFX,*LPDDOVERLAYFX;
-
-typedef struct _DDBLTBATCH
-{
- LPRECT lprDest;
- LPDIRECTDRAWSURFACE lpDDSSrc;
- LPRECT lprSrc;
- DWORD dwFlags;
- LPDDBLTFX lpDDBltFx;
-} DDBLTBATCH,*LPDDBLTBATCH;
-
-#define MAX_DDDEVICEID_STRING 512
-
-typedef struct tagDDDEVICEIDENTIFIER {
- char szDriver[MAX_DDDEVICEID_STRING];
- char szDescription[MAX_DDDEVICEID_STRING];
- LARGE_INTEGER liDriverVersion;
- DWORD dwVendorId;
- DWORD dwDeviceId;
- DWORD dwSubSysId;
- DWORD dwRevision;
- GUID guidDeviceIdentifier;
-} DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER;
-
-typedef struct tagDDDEVICEIDENTIFIER2 {
- char szDriver[MAX_DDDEVICEID_STRING]; /* user readable driver name */
- char szDescription[MAX_DDDEVICEID_STRING]; /* user readable description */
- LARGE_INTEGER liDriverVersion; /* driver version */
- DWORD dwVendorId; /* vendor ID, zero if unknown */
- DWORD dwDeviceId; /* chipset ID, zero if unknown */
- DWORD dwSubSysId; /* board ID, zero if unknown */
- DWORD dwRevision; /* chipset version, zero if unknown */
- GUID guidDeviceIdentifier; /* unique ID for this driver/chipset combination */
- DWORD dwWHQLLevel; /* Windows Hardware Quality Lab certification level */
-} DDDEVICEIDENTIFIER2, * LPDDDEVICEIDENTIFIER2;
-
-/*****************************************************************************
- * IDirectDrawPalette interface
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawPalette
-DECLARE_INTERFACE_(IDirectDrawPalette,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(GetCaps)(THIS_ LPDWORD lpdwCaps) PURE;
- STDMETHOD(GetEntries)(THIS_ DWORD dwFlags, DWORD dwBase, DWORD dwNumEntries, LPPALETTEENTRY lpEntries) PURE;
- STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, DWORD dwFlags, LPPALETTEENTRY lpDDColorTable) PURE;
- STDMETHOD(SetEntries)(THIS_ DWORD dwFlags, DWORD dwStartingEntry, DWORD dwCount, LPPALETTEENTRY lpEntries) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDrawPalette_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDrawPalette_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDrawPalette_Release(p) ICOM_CALL_(Release,p,(p))
- /*** IDirectDrawPalette methods ***/
-#define IDirectDrawPalette_GetCaps(p,a) ICOM_CALL_(GetCaps,p,(p,a))
-#define IDirectDrawPalette_GetEntries(p,a,b,c,d) ICOM_CALL_(GetEntries,p,(p,a,b,c,d))
-#define IDirectDrawPalette_Initialize(p,a,b,c) ICOM_CALL_(Initialize,p,(p,a,b,c))
-#define IDirectDrawPalette_SetEntries(p,a,b,c,d) ICOM_CALL_(SetEntries,p,(p,a,b,c,d))
-
-
-/*****************************************************************************
- * IDirectDrawClipper interface
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawClipper
-DECLARE_INTERFACE_(IDirectDrawClipper,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(GetClipList)(THIS_ LPRECT lpRect, LPRGNDATA lpClipList, LPDWORD lpdwSize) PURE;
- STDMETHOD(GetHWnd)(THIS_ HWND* lphWnd) PURE;
- STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, DWORD dwFlags) PURE;
- STDMETHOD(IsClipListChanged)(THIS_ BOOL* lpbChanged) PURE;
- STDMETHOD(SetClipList)(THIS_ LPRGNDATA lpClipList, DWORD dwFlags) PURE;
- STDMETHOD(SetHWnd)(THIS_ DWORD dwFlags, HWND hWnd) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDrawClipper_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDrawClipper_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDrawClipper_Release(p) ICOM_CALL_(Release,p,(p))
- /*** IDirectDrawClipper methods ***/
-#define IDirectDrawClipper_GetClipList(p,a,b,c) ICOM_CALL_(GetClipList,p,(p,a,b,c))
-#define IDirectDrawClipper_GetHWnd(p,a) ICOM_CALL_(GetHWnd,p,(p,a))
-#define IDirectDrawClipper_Initialize(p,a,b) ICOM_CALL_(Initialize,p,(p,a,b))
-#define IDirectDrawClipper_IsClipListChanged(p,a) ICOM_CALL_(IsClipListChanged,p,(p,a))
-#define IDirectDrawClipper_SetClipList(p,a,b) ICOM_CALL_(SetClipList,p,(p,a,b))
-#define IDirectDrawClipper_SetHWnd(p,a,b) ICOM_CALL_(SetHWnd,p,(p,a,b))
-
-
-/*****************************************************************************
- * IDirectDraw interface
- */
-#undef INTERFACE
-#define INTERFACE IDirectDraw
-DECLARE_INTERFACE_(IDirectDraw,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(Compact)(THIS) PURE;
- STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER* lplpDDClipper, IUnknown* pUnkOuter) PURE;
- STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE* lplpDDPalette, IUnknown* pUnkOuter) PURE;
- STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc, LPDIRECTDRAWSURFACE* lplpDDSurface, IUnknown* pUnkOuter) PURE;
- STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface, LPDIRECTDRAWSURFACE* lplpDupDDSurface) PURE;
- STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK lpEnumModesCallback) PURE;
- STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
- STDMETHOD(FlipToGDISurface)(THIS) PURE;
- STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
- STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
- STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
- STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE* lplpGDIDDSurface) PURE;
- STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
- STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
- STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL* lpbIsInVB) PURE;
- STDMETHOD(Initialize)(THIS_ GUID* lpGUID) PURE;
- STDMETHOD(RestoreDisplayMode)(THIS) PURE;
- STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
- STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD, DWORD) PURE;
- STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDraw_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDraw_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDraw_Release(p) ICOM_CALL_(Release,p,(p))
- /*** IDirectDraw methods ***/
-#define IDirectDraw_Compact(p) ICOM_CALL_(Compact,p,(p))
-#define IDirectDraw_CreateClipper(p,a,b,c) ICOM_CALL_(CreateClipper,p,(p,a,b,c))
-#define IDirectDraw_CreatePalette(p,a,b,c,d) ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
-#define IDirectDraw_CreateSurface(p,a,b,c) ICOM_CALL_(CreateSurface,p,(p,a,b,c))
-#define IDirectDraw_DuplicateSurface(p,a,b) ICOM_CALL_(DuplicateSurface,p,(p,a,b))
-#define IDirectDraw_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
-#define IDirectDraw_EnumSurfaces(p,a,b,c,d) ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
-#define IDirectDraw_FlipToGDISurface(p) ICOM_CALL_(FlipToGDISurface,p,(p))
-#define IDirectDraw_GetCaps(p,a,b) ICOM_CALL_(GetCaps,p,(p,a,b))
-#define IDirectDraw_GetDisplayMode(p,a) ICOM_CALL_(GetDisplayMode,p,(p,a))
-#define IDirectDraw_GetFourCCCodes(p,a,b) ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
-#define IDirectDraw_GetGDISurface(p,a) ICOM_CALL_(GetGDISurface,p,(p,a))
-#define IDirectDraw_GetMonitorFrequency(p,a) ICOM_CALL_(GetMonitorFrequency,p,(p,a))
-#define IDirectDraw_GetScanLine(p,a) ICOM_CALL_(GetScanLine,p,(p,a))
-#define IDirectDraw_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
-#define IDirectDraw_Initialize(p,a) ICOM_CALL_(Initialize,p,(p,a))
-#define IDirectDraw_RestoreDisplayMode(p) ICOM_CALL_(RestoreDisplayMode,p,(p))
-#define IDirectDraw_SetCooperativeLevel(p,a,b) ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
-#define IDirectDraw_SetDisplayMode(p,a,b,c) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c))
-#define IDirectDraw_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
-
-
-/* flags for Lock() */
-#define DDLOCK_SURFACEMEMORYPTR 0x00000000
-#define DDLOCK_WAIT 0x00000001
-#define DDLOCK_EVENT 0x00000002
-#define DDLOCK_READONLY 0x00000010
-#define DDLOCK_WRITEONLY 0x00000020
-#define DDLOCK_NOSYSLOCK 0x00000800
-
-
-/*****************************************************************************
- * IDirectDraw2 interface
- */
-/* Note: IDirectDraw2 cannot derive from IDirectDraw because the number of
- * arguments of SetDisplayMode has changed !
- */
-#undef INTERFACE
-#define INTERFACE IDirectDraw2
-DECLARE_INTERFACE_(IDirectDraw2,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(Compact)(THIS) PURE;
- STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER* lplpDDClipper, IUnknown* pUnkOuter) PURE;
- STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE* lplpDDPalette, IUnknown* pUnkOuter) PURE;
- STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc, LPDIRECTDRAWSURFACE2* lplpDDSurface, IUnknown* pUnkOuter) PURE;
- STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE2 lpDDSurface, LPDIRECTDRAWSURFACE2* lplpDupDDSurface) PURE;
- STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK lpEnumModesCallback) PURE;
- STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
- STDMETHOD(FlipToGDISurface)(THIS) PURE;
- STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
- STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
- STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
- STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE2* lplpGDIDDSurface) PURE;
- STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
- STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
- STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL* lpbIsInVB) PURE;
- STDMETHOD(Initialize)(THIS_ GUID* lpGUID) PURE;
- STDMETHOD(RestoreDisplayMode)(THIS) PURE;
- STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
- STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
- STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
-
- STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS lpDDCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDraw2_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDraw2_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDraw2_Release(p) ICOM_CALL_(Release,p,(p))
- /*** IDirectDraw methods ***/
-#define IDirectDraw2_Compact(p) ICOM_CALL_(Compact,p,(p))
-#define IDirectDraw2_CreateClipper(p,a,b,c) ICOM_CALL_(CreateClipper,p,(p,a,b,c))
-#define IDirectDraw2_CreatePalette(p,a,b,c,d) ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
-#define IDirectDraw2_CreateSurface(p,a,b,c) ICOM_CALL_(CreateSurface,p,(p,a,b,c))
-#define IDirectDraw2_DuplicateSurface(p,a,b) ICOM_CALL_(DuplicateSurface,p,(p,a,b))
-#define IDirectDraw2_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
-#define IDirectDraw2_EnumSurfaces(p,a,b,c,d) ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
-#define IDirectDraw2_FlipToGDISurface(p) ICOM_CALL_(FlipToGDISurface,p,(p))
-#define IDirectDraw2_GetCaps(p,a,b) ICOM_CALL_(GetCaps,p,(p,a,b))
-#define IDirectDraw2_GetDisplayMode(p,a) ICOM_CALL_(GetDisplayMode,p,(p,a))
-#define IDirectDraw2_GetFourCCCodes(p,a,b) ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
-#define IDirectDraw2_GetGDISurface(p,a) ICOM_CALL_(GetGDISurface,p,(p,a))
-#define IDirectDraw2_GetMonitorFrequency(p,a) ICOM_CALL_(GetMonitorFrequency,p,(p,a))
-#define IDirectDraw2_GetScanLine(p,a) ICOM_CALL_(GetScanLine,p,(p,a))
-#define IDirectDraw2_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
-#define IDirectDraw2_Initialize(p,a) ICOM_CALL_(Initialize,p,(p,a))
-#define IDirectDraw2_RestoreDisplayMode(p) ICOM_CALL_(RestoreDisplayMode,p,(p))
-#define IDirectDraw2_SetCooperativeLevel(p,a,b) ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
-#define IDirectDraw2_SetDisplayMode(p,a,b,c,d,e) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c,d,e))
-#define IDirectDraw2_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
-/*** IDirectDraw2 methods ***/
-#define IDirectDraw2_GetAvailableVidMem(p,a,b,c) ICOM_CALL_(GetAvailableVidMem,p,(p,a,b,c))
-
-
-/*****************************************************************************
- * IDirectDraw4 interface
- */
-#undef INTERFACE
-#define INTERFACE IDirectDraw4
-DECLARE_INTERFACE_(IDirectDraw4,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(Compact)(THIS) PURE;
- STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER* lplpDDClipper, IUnknown* pUnkOuter) PURE;
- STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE* lplpDDPalette, IUnknown* pUnkOuter) PURE;
- STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc, LPDIRECTDRAWSURFACE4* lplpDDSurface, IUnknown* pUnkOuter) PURE;
- STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE4 lpDDSurface, LPDIRECTDRAWSURFACE4* lplpDupDDSurface) PURE;
- STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK2 lpEnumModesCallback) PURE;
- STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK2 lpEnumSurfacesCallback) PURE;
- STDMETHOD(FlipToGDISurface)(THIS) PURE;
- STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
- STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
- STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
- STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE4* lplpGDIDDSurface) PURE;
- STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
- STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
- STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL* lpbIsInVB) PURE;
- STDMETHOD(Initialize)(THIS_ GUID* lpGUID) PURE;
- STDMETHOD(RestoreDisplayMode)(THIS) PURE;
- STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
- STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
- STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
-
- STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2 lpDDCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree) PURE;
-
- STDMETHOD(GetSurfaceFromDC)(THIS_ HDC , LPDIRECTDRAWSURFACE4* ) PURE;
- STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
- STDMETHOD(TestCooperativeLevel)(THIS) PURE;
- STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER , DWORD ) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDraw4_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDraw4_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDraw4_Release(p) ICOM_CALL_(Release,p,(p))
- /*** IDirectDraw methods ***/
-#define IDirectDraw4_Compact(p) ICOM_CALL_(Compact,p,(p))
-#define IDirectDraw4_CreateClipper(p,a,b,c) ICOM_CALL_(CreateClipper,p,(p,a,b,c))
-#define IDirectDraw4_CreatePalette(p,a,b,c,d) ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
-#define IDirectDraw4_CreateSurface(p,a,b,c) ICOM_CALL_(CreateSurface,p,(p,a,b,c))
-#define IDirectDraw4_DuplicateSurface(p,a,b) ICOM_CALL_(DuplicateSurface,p,(p,a,b))
-#define IDirectDraw4_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
-#define IDirectDraw4_EnumSurfaces(p,a,b,c,d) ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
-#define IDirectDraw4_FlipToGDISurface(p) ICOM_CALL_(FlipToGDISurface,p,(p))
-#define IDirectDraw4_GetCaps(p,a,b) ICOM_CALL_(GetCaps,p,(p,a,b))
-#define IDirectDraw4_GetDisplayMode(p,a) ICOM_CALL_(GetDisplayMode,p,(p,a))
-#define IDirectDraw4_GetFourCCCodes(p,a,b) ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
-#define IDirectDraw4_GetGDISurface(p,a) ICOM_CALL_(GetGDISurface,p,(p,a))
-#define IDirectDraw4_GetMonitorFrequency(p,a) ICOM_CALL_(GetMonitorFrequency,p,(p,a))
-#define IDirectDraw4_GetScanLine(p,a) ICOM_CALL_(GetScanLine,p,(p,a))
-#define IDirectDraw4_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
-#define IDirectDraw4_Initialize(p,a) ICOM_CALL_(Initialize,p,(p,a))
-#define IDirectDraw4_RestoreDisplayMode(p) ICOM_CALL_(RestoreDisplayMode,p,(p))
-#define IDirectDraw4_SetCooperativeLevel(p,a,b) ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
-#define IDirectDraw4_SetDisplayMode(p,a,b,c,d,e) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c,d,e))
-#define IDirectDraw4_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
-/*** IDirectDraw2 methods ***/
-#define IDirectDraw4_GetAvailableVidMem(p,a,b,c) ICOM_CALL_(GetAvailableVidMem,p,(p,a,b,c))
-/*** IDirectDraw4 methods ***/
-#define IDirectDraw4_GetSurfaceFromDC(p,a,b) ICOM_CALL_(GetSurfaceFromDC,p,(p,a,b))
-#define IDirectDraw4_RestoreAllSurfaces(pc) ICOM_CALL_(RestoreAllSurfaces,p,(p))
-#define IDirectDraw4_TestCooperativeLevel(p) ICOM_CALL_(TestCooperativeLevel,p,(p))
-#define IDirectDraw4_GetDeviceIdentifier(p,a,b) ICOM_CALL_(GetDeviceIdentifier,p,(p,a,b))
-
-
-/*****************************************************************************
- * IDirectDraw7 interface
- */
-/* Note: IDirectDraw7 cannot derive from IDirectDraw4; it is even documented
- * as not interchangeable with earlier DirectDraw interfaces.
- */
-#undef INTERFACE
-#define INTERFACE IDirectDraw7
-DECLARE_INTERFACE_(IDirectDraw7,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(Compact)(THIS) PURE;
- STDMETHOD(CreateClipper)(THIS_ DWORD dwFlags, LPDIRECTDRAWCLIPPER* lplpDDClipper, IUnknown* pUnkOuter) PURE;
- STDMETHOD(CreatePalette)(THIS_ DWORD dwFlags, LPPALETTEENTRY lpColorTable, LPDIRECTDRAWPALETTE* lplpDDPalette, IUnknown* pUnkOuter) PURE;
- STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc, LPDIRECTDRAWSURFACE7* lplpDDSurface, IUnknown* pUnkOuter) PURE;
- STDMETHOD(DuplicateSurface)(THIS_ LPDIRECTDRAWSURFACE7 lpDDSurface, LPDIRECTDRAWSURFACE7* lplpDupDDSurface) PURE;
- STDMETHOD(EnumDisplayModes)(THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK2 lpEnumModesCallback) PURE;
- STDMETHOD(EnumSurfaces)(THIS_ DWORD dwFlags, LPDDSURFACEDESC2 lpDDSD, LPVOID lpContext, LPDDENUMSURFACESCALLBACK7 lpEnumSurfacesCallback) PURE;
- STDMETHOD(FlipToGDISurface)(THIS) PURE;
- STDMETHOD(GetCaps)(THIS_ LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) PURE;
- STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
- STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
- STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE7* lplpGDIDDSurface) PURE;
- STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
- STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
- STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL* lpbIsInVB) PURE;
- STDMETHOD(Initialize)(THIS_ GUID* lpGUID) PURE;
- STDMETHOD(RestoreDisplayMode)(THIS) PURE;
- STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
- STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
- STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
-
- STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2 lpDDCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree) PURE;
-
- STDMETHOD(GetSurfaceFromDC)(THIS_ HDC , LPDIRECTDRAWSURFACE7* ) PURE;
- STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
- STDMETHOD(TestCooperativeLevel)(THIS) PURE;
- STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER2 , DWORD ) PURE;
-
- STDMETHOD(StartModeTest)(THIS_ LPSIZE , DWORD , DWORD ) PURE;
- STDMETHOD(EvaluateMode)(THIS_ DWORD , DWORD * ) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDraw7_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDraw7_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDraw7_Release(p) ICOM_CALL_(Release,p,(p))
- /*** IDirectDraw methods ***/
-#define IDirectDraw7_Compact(p) ICOM_CALL_(Compact,p,(p))
-#define IDirectDraw7_CreateClipper(p,a,b,c) ICOM_CALL_(CreateClipper,p,(p,a,b,c))
-#define IDirectDraw7_CreatePalette(p,a,b,c,d) ICOM_CALL_(CreatePalette,p,(p,a,b,c,d))
-#define IDirectDraw7_CreateSurface(p,a,b,c) ICOM_CALL_(CreateSurface,p,(p,a,b,c))
-#define IDirectDraw7_DuplicateSurface(p,a,b) ICOM_CALL_(DuplicateSurface,p,(p,a,b))
-#define IDirectDraw7_EnumDisplayModes(p,a,b,c,d) ICOM_CALL_(EnumDisplayModes,p,(p,a,b,c,d))
-#define IDirectDraw7_EnumSurfaces(p,a,b,c,d) ICOM_CALL_(EnumSurfaces,p,(p,a,b,c,d))
-#define IDirectDraw7_FlipToGDISurface(p) ICOM_CALL_(FlipToGDISurface,p,(p))
-#define IDirectDraw7_GetCaps(p,a,b) ICOM_CALL_(GetCaps,p,(p,a,b))
-#define IDirectDraw7_GetDisplayMode(p,a) ICOM_CALL_(GetDisplayMode,p,(p,a))
-#define IDirectDraw7_GetFourCCCodes(p,a,b) ICOM_CALL_(GetFourCCCodes,p,(p,a,b))
-#define IDirectDraw7_GetGDISurface(p,a) ICOM_CALL_(GetGDISurface,p,(p,a))
-#define IDirectDraw7_GetMonitorFrequency(p,a) ICOM_CALL_(GetMonitorFrequency,p,(p,a))
-#define IDirectDraw7_GetScanLine(p,a) ICOM_CALL_(GetScanLine,p,(p,a))
-#define IDirectDraw7_GetVerticalBlankStatus(p,a) ICOM_CALL_(GetVerticalBlankStatus,p,(p,a))
-#define IDirectDraw7_Initialize(p,a) ICOM_CALL_(Initialize,p,(p,a))
-#define IDirectDraw7_RestoreDisplayMode(p) ICOM_CALL_(RestoreDisplayMode,p,(p))
-#define IDirectDraw7_SetCooperativeLevel(p,a,b) ICOM_CALL_(SetCooperativeLevel,p,(p,a,b))
-#define IDirectDraw7_SetDisplayMode(p,a,b,c,d,e) ICOM_CALL_(SetDisplayMode,p,(p,a,b,c,d,e))
-#define IDirectDraw7_WaitForVerticalBlank(p,a,b) ICOM_CALL_(WaitForVerticalBlank,p,(p,a,b))
-/*** added in IDirectDraw2 ***/
-#define IDirectDraw7_GetAvailableVidMem(p,a,b,c) ICOM_CALL_(GetAvailableVidMem,p,(p,a,b,c))
-/*** added in IDirectDraw4 ***/
-#define IDirectDraw7_GetSurfaceFromDC(p,a,b) ICOM_CALL_(GetSurfaceFromDC,p,(p,a,b))
-#define IDirectDraw7_RestoreAllSurfaces(p) ICOM_CALL_(RestoreAllSurfaces,p,(p))
-#define IDirectDraw7_TestCooperativeLevel(p) ICOM_CALL_(TestCooperativeLevel,p,(p))
-#define IDirectDraw7_GetDeviceIdentifier(p,a,b) ICOM_CALL_(GetDeviceIdentifier,p,(p,a,b))
-/*** added in IDirectDraw 7 ***/
-#define IDirectDraw7_StartModeTest(p,a,b,c) ICOM_CALL_(StartModeTest,p,(p,a,b,c))
-#define IDirectDraw7_EvaluateMode(p,a,b) ICOM_CALL_(EvaluateMode,p,(p,a,b))
-
-
-/*****************************************************************************
- * IDirectDrawSurface interface
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface
-DECLARE_INTERFACE_(IDirectDrawSurface,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDSAttachedSurface) PURE;
- STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
- STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
- STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
- STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
- STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE lpDDSAttachedSurface) PURE;
- STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
- STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpfnCallback) PURE;
- STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
- STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS lpDDSCaps, LPDIRECTDRAWSURFACE* lplpDDAttachedSurface) PURE;
- STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(GetCaps)(THIS_ LPDDSCAPS lpDDSCaps) PURE;
- STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER* lplpDDClipper) PURE;
- STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
- STDMETHOD(GetDC)(THIS_ HDC* lphDC) PURE;
- STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
- STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE* lplpDDPalette) PURE;
- STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
- STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
- STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
- STDMETHOD(IsLost)(THIS) PURE;
- STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
- STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
- STDMETHOD(Restore)(THIS) PURE;
- STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
- STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
- STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
- STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
- STDMETHOD(Unlock)(THIS_ LPVOID lpSurfaceData) PURE;
- STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
- STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE lpDDSReference) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDrawSurface_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDrawSurface_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDrawSurface_Release(p) ICOM_CALL_(Release,p,(p))
- /*** IDirectDrawSurface methods ***/
-#define IDirectDrawSurface_AddAttachedSurface(p,a) ICOM_CALL_(AddAttachedSurface,p,(p,a))
-#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
-#define IDirectDrawSurface_Blt(p,a,b,c,d,e) ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface_BltBatch(p,a,b,c) ICOM_CALL_(BltBatch,p,(p,a,b,c))
-#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
-#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
-#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
-#define IDirectDrawSurface_Flip(p,a,b) ICOM_CALL_(Flip,p,(p,a,b))
-#define IDirectDrawSurface_GetAttachedSurface(p,a,b) ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
-#define IDirectDrawSurface_GetBltStatus(p,a) ICOM_CALL_(GetBltStatus,p,(p,a))
-#define IDirectDrawSurface_GetCaps(p,a) ICOM_CALL_(GetCaps,p,(p,a))
-#define IDirectDrawSurface_GetClipper(p,a) ICOM_CALL_(GetClipper,p,(p,a))
-#define IDirectDrawSurface_GetColorKey(p,a,b) ICOM_CALL_(GetColorKey,p,(p,a,b))
-#define IDirectDrawSurface_GetDC(p,a) ICOM_CALL_(GetDC,p,(p,a))
-#define IDirectDrawSurface_GetFlipStatus(p,a) ICOM_CALL_(GetFlipStatus,p,(p,a))
-#define IDirectDrawSurface_GetOverlayPosition(p,a,b) ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
-#define IDirectDrawSurface_GetPalette(p,a) ICOM_CALL_(GetPalette,p,(p,a))
-#define IDirectDrawSurface_GetPixelFormat(p,a) ICOM_CALL_(GetPixelFormat,p,(p,a))
-#define IDirectDrawSurface_GetSurfaceDesc(p,a) ICOM_CALL_(GetSurfaceDesc,p,(p,a))
-#define IDirectDrawSurface_Initialize(p,a,b) ICOM_CALL_(Initialize,p,(p,a,b))
-#define IDirectDrawSurface_IsLost(p) ICOM_CALL_(IsLost,p,(p))
-#define IDirectDrawSurface_Lock(p,a,b,c,d) ICOM_CALL_(Lock,p,(p,a,b,c,d))
-#define IDirectDrawSurface_ReleaseDC(p,a) ICOM_CALL_(ReleaseDC,p,(p,a))
-#define IDirectDrawSurface_Restore(p) ICOM_CALL_(Restore,p,(p))
-#define IDirectDrawSurface_SetClipper(p,a) ICOM_CALL_(SetClipper,p,(p,a))
-#define IDirectDrawSurface_SetColorKey(p,a,b) ICOM_CALL_(SetColorKey,p,(p,a,b))
-#define IDirectDrawSurface_SetOverlayPosition(p,a,b) ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
-#define IDirectDrawSurface_SetPalette(p,a) ICOM_CALL_(SetPalette,p,(p,a))
-#define IDirectDrawSurface_Unlock(p,a) ICOM_CALL_(Unlock,p,(p,a))
-#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
-#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
-
-
-/*****************************************************************************
- * IDirectDrawSurface2 interface
- */
-/* Cannot inherit from IDirectDrawSurface because the LPDIRECTDRAWSURFACE parameters
- * have been converted to LPDIRECTDRAWSURFACE2.
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface2
-DECLARE_INTERFACE_(IDirectDrawSurface2,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2 lpDDSAttachedSurface) PURE;
- STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
- STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE2 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
- STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
- STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE2 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
- STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE2 lpDDSAttachedSurface) PURE;
- STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
- STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpfnCallback) PURE;
- STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2 lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
- STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS lpDDSCaps, LPDIRECTDRAWSURFACE2* lplpDDAttachedSurface) PURE;
- STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(GetCaps)(THIS_ LPDDSCAPS lpDDSCaps) PURE;
- STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER* lplpDDClipper) PURE;
- STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
- STDMETHOD(GetDC)(THIS_ HDC* lphDC) PURE;
- STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
- STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE* lplpDDPalette) PURE;
- STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
- STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
- STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
- STDMETHOD(IsLost)(THIS) PURE;
- STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
- STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
- STDMETHOD(Restore)(THIS) PURE;
- STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
- STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
- STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
- STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
- STDMETHOD(Unlock)(THIS_ LPVOID lpSurfaceData) PURE;
- STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE2 lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
- STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE2 lpDDSReference) PURE;
- /* added in v2 */
- STDMETHOD(GetDDInterface)(THIS_ LPVOID* lplpDD) PURE;
- STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDrawSurface2_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDrawSurface2_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDrawSurface2_Release(p) ICOM_CALL_(Release,p,(p))
-/*** IDirectDrawSurface methods (almost) ***/
-#define IDirectDrawSurface2_AddAttachedSurface(p,a) ICOM_CALL_(AddAttachedSurface,p,(p,a))
-#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
-#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface2_BltBatch(p,a,b,c) ICOM_CALL_(BltBatch,p,(p,a,b,c))
-#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
-#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
-#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
-#define IDirectDrawSurface2_Flip(p,a,b) ICOM_CALL_(Flip,p,(p,a,b))
-#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
-#define IDirectDrawSurface2_GetBltStatus(p,a) ICOM_CALL_(GetBltStatus,p,(p,a))
-#define IDirectDrawSurface2_GetCaps(p,a) ICOM_CALL_(GetCaps,p,(p,a))
-#define IDirectDrawSurface2_GetClipper(p,a) ICOM_CALL_(GetClipper,p,(p,a))
-#define IDirectDrawSurface2_GetColorKey(p,a,b) ICOM_CALL_(GetColorKey,p,(p,a,b))
-#define IDirectDrawSurface2_GetDC(p,a) ICOM_CALL_(GetDC,p,(p,a))
-#define IDirectDrawSurface2_GetFlipStatus(p,a) ICOM_CALL_(GetFlipStatus,p,(p,a))
-#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
-#define IDirectDrawSurface2_GetPalette(p,a) ICOM_CALL_(GetPalette,p,(p,a))
-#define IDirectDrawSurface2_GetPixelFormat(p,a) ICOM_CALL_(GetPixelFormat,p,(p,a))
-#define IDirectDrawSurface2_GetSurfaceDesc(p,a) ICOM_CALL_(GetSurfaceDesc,p,(p,a))
-#define IDirectDrawSurface2_Initialize(p,a,b) ICOM_CALL_(Initialize,p,(p,a,b))
-#define IDirectDrawSurface2_IsLost(p) ICOM_CALL_(IsLost,p,(p))
-#define IDirectDrawSurface2_Lock(p,a,b,c,d) ICOM_CALL_(Lock,p,(p,a,b,c,d))
-#define IDirectDrawSurface2_ReleaseDC(p,a) ICOM_CALL_(ReleaseDC,p,(p,a))
-#define IDirectDrawSurface2_Restore(p) ICOM_CALL_(Restore,p,(p))
-#define IDirectDrawSurface2_SetClipper(p,a) ICOM_CALL_(SetClipper,p,(p,a))
-#define IDirectDrawSurface2_SetColorKey(p,a,b) ICOM_CALL_(SetColorKey,p,(p,a,b))
-#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
-#define IDirectDrawSurface2_SetPalette(p,a) ICOM_CALL_(SetPalette,p,(p,a))
-#define IDirectDrawSurface2_Unlock(p,a) ICOM_CALL_(Unlock,p,(p,a))
-#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
-#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
-/*** IDirectDrawSurface2 methods ***/
-#define IDirectDrawSurface2_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
-#define IDirectDrawSurface2_PageLock(p,a) ICOM_CALL_(PageLock,p,(p,a))
-#define IDirectDrawSurface2_PageUnlock(p,a) ICOM_CALL_(PageUnlock,p,(p,a))
-
-
-/*****************************************************************************
- * IDirectDrawSurface3 interface
- */
-/* Cannot inherit from IDirectDrawSurface2 because the LPDIRECTDRAWSURFACE2 parameters
- * have been converted to LPDIRECTDRAWSURFACE3.
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface3
-DECLARE_INTERFACE_(IDirectDrawSurface3,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3 lpDDSAttachedSurface) PURE;
- STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
- STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE3 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
- STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
- STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE3 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
- STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE3 lpDDSAttachedSurface) PURE;
- STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
- STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpfnCallback) PURE;
- STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3 lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
- STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS lpDDSCaps, LPDIRECTDRAWSURFACE3* lplpDDAttachedSurface) PURE;
- STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(GetCaps)(THIS_ LPDDSCAPS lpDDSCaps) PURE;
- STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER* lplpDDClipper) PURE;
- STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
- STDMETHOD(GetDC)(THIS_ HDC* lphDC) PURE;
- STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
- STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE* lplpDDPalette) PURE;
- STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
- STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
- STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
- STDMETHOD(IsLost)(THIS) PURE;
- STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
- STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
- STDMETHOD(Restore)(THIS) PURE;
- STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
- STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
- STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
- STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
- STDMETHOD(Unlock)(THIS_ LPVOID lpSurfaceData) PURE;
- STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE3 lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
- STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE3 lpDDSReference) PURE;
- /* added in v2 */
- STDMETHOD(GetDDInterface)(THIS_ LPVOID* lplpDD) PURE;
- STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
- /* added in v3 */
- STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSD, DWORD dwFlags) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDrawSurface3_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDrawSurface3_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDrawSurface3_Release(p) ICOM_CALL_(Release,p,(p))
-/*** IDirectDrawSurface methods (almost) ***/
-#define IDirectDrawSurface3_AddAttachedSurface(p,a) ICOM_CALL_(AddAttachedSurface,p,(p,a))
-#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
-#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface3_BltBatch(p,a,b,c) ICOM_CALL_(BltBatch,p,(p,a,b,c))
-#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
-#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
-#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
-#define IDirectDrawSurface3_Flip(p,a,b) ICOM_CALL_(Flip,p,(p,a,b))
-#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
-#define IDirectDrawSurface3_GetBltStatus(p,a) ICOM_CALL_(GetBltStatus,p,(p,a))
-#define IDirectDrawSurface3_GetCaps(p,a) ICOM_CALL_(GetCaps,p,(p,a))
-#define IDirectDrawSurface3_GetClipper(p,a) ICOM_CALL_(GetClipper,p,(p,a))
-#define IDirectDrawSurface3_GetColorKey(p,a,b) ICOM_CALL_(GetColorKey,p,(p,a,b))
-#define IDirectDrawSurface3_GetDC(p,a) ICOM_CALL_(GetDC,p,(p,a))
-#define IDirectDrawSurface3_GetFlipStatus(p,a) ICOM_CALL_(GetFlipStatus,p,(p,a))
-#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
-#define IDirectDrawSurface3_GetPalette(p,a) ICOM_CALL_(GetPalette,p,(p,a))
-#define IDirectDrawSurface3_GetPixelFormat(p,a) ICOM_CALL_(GetPixelFormat,p,(p,a))
-#define IDirectDrawSurface3_GetSurfaceDesc(p,a) ICOM_CALL_(GetSurfaceDesc,p,(p,a))
-#define IDirectDrawSurface3_Initialize(p,a,b) ICOM_CALL_(Initialize,p,(p,a,b))
-#define IDirectDrawSurface3_IsLost(p) ICOM_CALL_(IsLost,p,(p))
-#define IDirectDrawSurface3_Lock(p,a,b,c,d) ICOM_CALL_(Lock,p,(p,a,b,c,d))
-#define IDirectDrawSurface3_ReleaseDC(p,a) ICOM_CALL_(ReleaseDC,p,(p,a))
-#define IDirectDrawSurface3_Restore(p) ICOM_CALL_(Restore,p,(p))
-#define IDirectDrawSurface3_SetClipper(p,a) ICOM_CALL_(SetClipper,p,(p,a))
-#define IDirectDrawSurface3_SetColorKey(p,a,b) ICOM_CALL_(SetColorKey,p,(p,a,b))
-#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
-#define IDirectDrawSurface3_SetPalette(p,a) ICOM_CALL_(SetPalette,p,(p,a))
-#define IDirectDrawSurface3_Unlock(p,a) ICOM_CALL_(Unlock,p,(p,a))
-#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
-#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
-/*** IDirectDrawSurface2 methods ***/
-#define IDirectDrawSurface3_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
-#define IDirectDrawSurface3_PageLock(p,a) ICOM_CALL_(PageLock,p,(p,a))
-#define IDirectDrawSurface3_PageUnlock(p,a) ICOM_CALL_(PageUnlock,p,(p,a))
-/*** IDirectDrawSurface3 methods ***/
-#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) ICOM_CALL_(SetSurfaceDesc,p,(p,a,b))
-
-
-/*****************************************************************************
- * IDirectDrawSurface4 interface
- */
-/* Cannot inherit from IDirectDrawSurface2 because DDSCAPS changed to DDSCAPS2.
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface4
-DECLARE_INTERFACE_(IDirectDrawSurface4,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE4 lpDDSAttachedSurface) PURE;
- STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
- STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE4 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
- STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
- STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE4 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
- STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE4 lpDDSAttachedSurface) PURE;
- STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback) PURE;
- STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpfnCallback) PURE;
- STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE4 lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
- STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2 lpDDSCaps, LPDIRECTDRAWSURFACE4* lplpDDAttachedSurface) PURE;
- STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2 lpDDSCaps) PURE;
- STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER* lplpDDClipper) PURE;
- STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
- STDMETHOD(GetDC)(THIS_ HDC* lphDC) PURE;
- STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
- STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE* lplpDDPalette) PURE;
- STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
- STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
- STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC lpDDSurfaceDesc) PURE;
- STDMETHOD(IsLost)(THIS) PURE;
- STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
- STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
- STDMETHOD(Restore)(THIS) PURE;
- STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
- STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
- STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
- STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
- STDMETHOD(Unlock)(THIS_ LPRECT lpSurfaceData) PURE;
- STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE4 lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
- STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE4 lpDDSReference) PURE;
- /* added in v2 */
- STDMETHOD(GetDDInterface)(THIS_ LPVOID* lplpDD) PURE;
- STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
- /* added in v3 */
- STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC lpDDSD, DWORD dwFlags) PURE;
- /* added in v4 */
- STDMETHOD(SetPrivateData)(THIS_ REFGUID , LPVOID , DWORD , DWORD ) PURE;
- STDMETHOD(GetPrivateData)(THIS_ REFGUID , LPVOID , LPDWORD ) PURE;
- STDMETHOD(FreePrivateData)(THIS_ REFGUID ) PURE;
- STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD ) PURE;
- STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDrawSurface4_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDrawSurface4_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDrawSurface4_Release(p) ICOM_CALL_(Release,p,(p))
-/*** IDirectDrawSurface (almost) methods ***/
-#define IDirectDrawSurface4_AddAttachedSurface(p,a) ICOM_CALL_(AddAttachedSurface,p,(p,a))
-#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a) ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
-#define IDirectDrawSurface4_Blt(p,a,b,c,d,e) ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface4_BltBatch(p,a,b,c) ICOM_CALL_(BltBatch,p,(p,a,b,c))
-#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e) ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
-#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b) ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
-#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c) ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
-#define IDirectDrawSurface4_Flip(p,a,b) ICOM_CALL_(Flip,p,(p,a,b))
-#define IDirectDrawSurface4_GetAttachedSurface(p,a,b) ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
-#define IDirectDrawSurface4_GetBltStatus(p,a) ICOM_CALL_(GetBltStatus,p,(p,a))
-#define IDirectDrawSurface4_GetCaps(p,a) ICOM_CALL_(GetCaps,p,(p,a))
-#define IDirectDrawSurface4_GetClipper(p,a) ICOM_CALL_(GetClipper,p,(p,a))
-#define IDirectDrawSurface4_GetColorKey(p,a,b) ICOM_CALL_(GetColorKey,p,(p,a,b))
-#define IDirectDrawSurface4_GetDC(p,a) ICOM_CALL_(GetDC,p,(p,a))
-#define IDirectDrawSurface4_GetFlipStatus(p,a) ICOM_CALL_(GetFlipStatus,p,(p,a))
-#define IDirectDrawSurface4_GetOverlayPosition(p,a,b) ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
-#define IDirectDrawSurface4_GetPalette(p,a) ICOM_CALL_(GetPalette,p,(p,a))
-#define IDirectDrawSurface4_GetPixelFormat(p,a) ICOM_CALL_(GetPixelFormat,p,(p,a))
-#define IDirectDrawSurface4_GetSurfaceDesc(p,a) ICOM_CALL_(GetSurfaceDesc,p,(p,a))
-#define IDirectDrawSurface4_Initialize(p,a,b) ICOM_CALL_(Initialize,p,(p,a,b))
-#define IDirectDrawSurface4_IsLost(p) ICOM_CALL_(IsLost,p,(p))
-#define IDirectDrawSurface4_Lock(p,a,b,c,d) ICOM_CALL_(Lock,p,(p,a,b,c,d))
-#define IDirectDrawSurface4_ReleaseDC(p,a) ICOM_CALL_(ReleaseDC,p,(p,a))
-#define IDirectDrawSurface4_Restore(p) ICOM_CALL_(Restore,p,(p))
-#define IDirectDrawSurface4_SetClipper(p,a) ICOM_CALL_(SetClipper,p,(p,a))
-#define IDirectDrawSurface4_SetColorKey(p,a,b) ICOM_CALL_(SetColorKey,p,(p,a,b))
-#define IDirectDrawSurface4_SetOverlayPosition(p,a,b) ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
-#define IDirectDrawSurface4_SetPalette(p,a) ICOM_CALL_(SetPalette,p,(p,a))
-#define IDirectDrawSurface4_Unlock(p,a) ICOM_CALL_(Unlock,p,(p,a))
-#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e) ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a) ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
-#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b) ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
-/*** IDirectDrawSurface2 methods ***/
-#define IDirectDrawSurface4_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
-#define IDirectDrawSurface4_PageLock(p,a) ICOM_CALL_(PageLock,p,(p,a))
-#define IDirectDrawSurface4_PageUnlock(p,a) ICOM_CALL_(PageUnlock,p,(p,a))
-/*** IDirectDrawSurface3 methods ***/
-#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) ICOM_CALL_(SetSurfaceDesc,p,(p,a,b))
-/*** IDirectDrawSurface4 methods ***/
-#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) ICOM_CALL_(SetPrivateData,p,(p,a,b,c,d))
-#define IDirectDrawSurface4_GetPrivateData(p,a,b,c) ICOM_CALL_(GetPrivateData,p,(p,a,b,c))
-#define IDirectDrawSurface4_FreePrivateData(p,a) ICOM_CALL_(FreePrivateData,p,(p,a))
-#define IDirectDrawSurface4_GetUniquenessValue(p,a) ICOM_CALL_(GetUniquenessValue,p,(p,a))
-#define IDirectDrawSurface4_ChangeUniquenessValue(p) ICOM_CALL_(ChangeUniquenessValue,p,(p))
-
-
-/*****************************************************************************
- * IDirectDrawSurface7 interface
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface7
-DECLARE_INTERFACE_(IDirectDrawSurface7,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE7 lpDDSAttachedSurface) PURE;
- STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
- STDMETHOD(Blt)(THIS_ LPRECT lpDestRect, LPDIRECTDRAWSURFACE7 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) PURE;
- STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags) PURE;
- STDMETHOD(BltFast)(THIS_ DWORD dwX, DWORD dwY, LPDIRECTDRAWSURFACE7 lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) PURE;
- STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE7 lpDDSAttachedSurface) PURE;
- STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID lpContext, LPDDENUMSURFACESCALLBACK7 lpEnumSurfacesCallback) PURE;
- STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD dwFlags, LPVOID lpContext, LPDDENUMSURFACESCALLBACK7 lpfnCallback) PURE;
- STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE7 lpDDSurfaceTargetOverride, DWORD dwFlags) PURE;
- STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2 lpDDSCaps, LPDIRECTDRAWSURFACE7* lplpDDAttachedSurface) PURE;
- STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2 lpDDSCaps) PURE;
- STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER* lplpDDClipper) PURE;
- STDMETHOD(GetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
- STDMETHOD(GetDC)(THIS_ HDC* lphDC) PURE;
- STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
- STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE* lplpDDPalette) PURE;
- STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT lpDDPixelFormat) PURE;
- STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
- STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW lpDD, LPDDSURFACEDESC2 lpDDSurfaceDesc) PURE;
- STDMETHOD(IsLost)(THIS) PURE;
- STDMETHOD(Lock)(THIS_ LPRECT lpDestRect, LPDDSURFACEDESC2 lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) PURE;
- STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
- STDMETHOD(Restore)(THIS) PURE;
- STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper) PURE;
- STDMETHOD(SetColorKey)(THIS_ DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) PURE;
- STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
- STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE lpDDPalette) PURE;
- STDMETHOD(Unlock)(THIS_ LPRECT lpSurfaceData) PURE;
- STDMETHOD(UpdateOverlay)(THIS_ LPRECT lpSrcRect, LPDIRECTDRAWSURFACE7 lpDDDestSurface, LPRECT lpDestRect, DWORD dwFlags, LPDDOVERLAYFX lpDDOverlayFx) PURE;
- STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE7 lpDDSReference) PURE;
- /* added in v2 */
- STDMETHOD(GetDDInterface)(THIS_ LPVOID* lplpDD) PURE;
- STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
- STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
- /* added in v3 */
- STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2 lpDDSD, DWORD dwFlags) PURE;
- /* added in v4 */
- STDMETHOD(SetPrivateData)(THIS_ REFGUID , LPVOID , DWORD , DWORD ) PURE;
- STDMETHOD(GetPrivateData)(THIS_ REFGUID , LPVOID , LPDWORD ) PURE;
- STDMETHOD(FreePrivateData)(THIS_ REFGUID ) PURE;
- STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD ) PURE;
- STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
- /* added in v7 */
- STDMETHOD(SetPriority)(THIS_ DWORD prio) PURE;
- STDMETHOD(GetPriority)(THIS_ LPDWORD prio) PURE;
- STDMETHOD(SetLOD)(THIS_ DWORD lod) PURE;
- STDMETHOD(GetLOD)(THIS_ LPDWORD lod) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDrawSurface7_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDrawSurface7_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDrawSurface7_Release(p) ICOM_CALL_(Release,p,(p))
-/*** IDirectDrawSurface (almost) methods ***/
-#define IDirectDrawSurface7_AddAttachedSurface(p,a) ICOM_CALL_(AddAttachedSurface,p,(p,a))
-#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a) ICOM_CALL_(AddOverlayDirtyRect,p,(p,a))
-#define IDirectDrawSurface7_Blt(p,a,b,c,d,e) ICOM_CALL_(Blt,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface7_BltBatch(p,a,b,c) ICOM_CALL_(BltBatch,p,(p,a,b,c))
-#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e) ICOM_CALL_(BltFast,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) ICOM_CALL_(DeleteAttachedSurface,p,(p,a,b))
-#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b) ICOM_CALL_(EnumAttachedSurfaces,p,(p,a,b))
-#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c) ICOM_CALL_(EnumOverlayZOrders,p,(p,a,b,c))
-#define IDirectDrawSurface7_Flip(p,a,b) ICOM_CALL_(Flip,p,(p,a,b))
-#define IDirectDrawSurface7_GetAttachedSurface(p,a,b) ICOM_CALL_(GetAttachedSurface,p,(p,a,b))
-#define IDirectDrawSurface7_GetBltStatus(p,a) ICOM_CALL_(GetBltStatus,p,(p,a))
-#define IDirectDrawSurface7_GetCaps(p,a) ICOM_CALL_(GetCaps,p,(p,a))
-#define IDirectDrawSurface7_GetClipper(p,a) ICOM_CALL_(GetClipper,p,(p,a))
-#define IDirectDrawSurface7_GetColorKey(p,a,b) ICOM_CALL_(GetColorKey,p,(p,a,b))
-#define IDirectDrawSurface7_GetDC(p,a) ICOM_CALL_(GetDC,p,(p,a))
-#define IDirectDrawSurface7_GetFlipStatus(p,a) ICOM_CALL_(GetFlipStatus,p,(p,a))
-#define IDirectDrawSurface7_GetOverlayPosition(p,a,b) ICOM_CALL_(GetOverlayPosition,p,(p,a,b))
-#define IDirectDrawSurface7_GetPalette(p,a) ICOM_CALL_(GetPalette,p,(p,a))
-#define IDirectDrawSurface7_GetPixelFormat(p,a) ICOM_CALL_(GetPixelFormat,p,(p,a))
-#define IDirectDrawSurface7_GetSurfaceDesc(p,a) ICOM_CALL_(GetSurfaceDesc,p,(p,a))
-#define IDirectDrawSurface7_Initialize(p,a,b) ICOM_CALL_(Initialize,p,(p,a,b))
-#define IDirectDrawSurface7_IsLost(p) ICOM_CALL_(IsLost,p,(p))
-#define IDirectDrawSurface7_Lock(p,a,b,c,d) ICOM_CALL_(Lock,p,(p,a,b,c,d))
-#define IDirectDrawSurface7_ReleaseDC(p,a) ICOM_CALL_(ReleaseDC,p,(p,a))
-#define IDirectDrawSurface7_Restore(p) ICOM_CALL_(Restore,p,(p))
-#define IDirectDrawSurface7_SetClipper(p,a) ICOM_CALL_(SetClipper,p,(p,a))
-#define IDirectDrawSurface7_SetColorKey(p,a,b) ICOM_CALL_(SetColorKey,p,(p,a,b))
-#define IDirectDrawSurface7_SetOverlayPosition(p,a,b) ICOM_CALL_(SetOverlayPosition,p,(p,a,b))
-#define IDirectDrawSurface7_SetPalette(p,a) ICOM_CALL_(SetPalette,p,(p,a))
-#define IDirectDrawSurface7_Unlock(p,a) ICOM_CALL_(Unlock,p,(p,a))
-#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e) ICOM_CALL_(UpdateOverlay,p,(p,a,b,c,d,e))
-#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a) ICOM_CALL_(UpdateOverlayDisplay,p,(p,a))
-#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b) ICOM_CALL_(UpdateOverlayZOrder,p,(p,a,b))
-/*** IDirectDrawSurface2 methods ***/
-#define IDirectDrawSurface7_GetDDInterface(p,a) ICOM_CALL_(GetDDInterface,p,(p,a))
-#define IDirectDrawSurface7_PageLock(p,a) ICOM_CALL_(PageLock,p,(p,a))
-#define IDirectDrawSurface7_PageUnlock(p,a) ICOM_CALL_(PageUnlock,p,(p,a))
-/*** IDirectDrawSurface3 methods ***/
-#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) ICOM_CALL_(SetSurfaceDesc,p,(p,a,b))
-/*** IDirectDrawSurface4 methods ***/
-#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) ICOM_CALL_(SetPrivateData,p,(p,a,b,c,d))
-#define IDirectDrawSurface7_GetPrivateData(p,a,b,c) ICOM_CALL_(GetPrivateData,p,(p,a,b,c))
-#define IDirectDrawSurface7_FreePrivateData(p,a) ICOM_CALL_(FreePrivateData,p,(p,a))
-#define IDirectDrawSurface7_GetUniquenessValue(p,a) ICOM_CALL_(GetUniquenessValue,p,(p,a))
-#define IDirectDrawSurface7_ChangeUniquenessValue(p) ICOM_CALL_(ChangeUniquenessValue,p,(p))
-/*** IDirectDrawSurface7 methods ***/
-#define IDirectDrawSurface7_SetPriority(p,a) ICOM_CALL_(SetPriority,p,(p,a))
-#define IDirectDrawSurface7_GetPriority(p,a) ICOM_CALL_(GetPriority,p,(p,a))
-#define IDirectDrawSurface7_SetLOD(p,a) ICOM_CALL_(SetLOD,p,(p,a))
-#define IDirectDrawSurface7_GetLOD(p,a) ICOM_CALL_(GetLOD,p,(p,a))
-
-/*****************************************************************************
- * IDirectDrawColorControl interface
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawColorControl
-DECLARE_INTERFACE_(IDirectDrawColorControl,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL lpColorControl) PURE;
- STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL lpColorControl) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDrawColorControl_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDrawColorControl_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDrawColorControl_Release(p) ICOM_CALL_(Release,p,(p))
- /*** IDirectDrawColorControl methods ***/
-#define IDirectDrawColorControl_GetColorControls(p,a) ICOM_CALL_(GetColorControls,p,(p,a))
-#define IDirectDrawColorControl_SetColorControls(p,a) ICOM_CALL_(SetColorControls,p,(p,a))
-
-/*****************************************************************************
- * IDirectDrawGammaControl interface
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawGammaControl
-DECLARE_INTERFACE_(IDirectDrawGammaControl,IUnknown)
-{
- STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(GetGammaRamp)(THIS_ DWORD dwFlags, LPDDGAMMARAMP lpGammaRamp) PURE;
- STDMETHOD(SetGammaRamp)(THIS_ DWORD dwFlags, LPDDGAMMARAMP lpGammaRamp) PURE;
-};
-
- /*** IUnknown methods ***/
-#define IDirectDrawGammaControl_QueryInterface(p,a,b) ICOM_CALL_(QueryInterface,p,(p,a,b))
-#define IDirectDrawGammaControl_AddRef(p) ICOM_CALL_(AddRef,p,(p))
-#define IDirectDrawGammaControl_Release(p) ICOM_CALL_(Release,p,(p))
- /*** IDirectDrawGammaControl methods ***/
-#define IDirectDrawGammaControl_GetGammaRamp(p,a,b) ICOM_CALL_(GetGammaRamp,p,(p,a,b))
-#define IDirectDrawGammaControl_SetGammaRamp(p,a,b) ICOM_CALL_(SetGammaRamp,p,(p,a,b))
-
-
-HRESULT WINAPI DirectDrawCreate(LPGUID,LPDIRECTDRAW*,LPUNKNOWN);
-HRESULT WINAPI DirectDrawCreateEx(LPGUID,LPVOID*,REFIID,LPUNKNOWN);
-HRESULT WINAPI DirectDrawEnumerateA(LPDDENUMCALLBACKA,LPVOID);
-HRESULT WINAPI DirectDrawEnumerateW(LPDDENUMCALLBACKW,LPVOID);
-#define DirectDrawEnumerate WINELIB_NAME_AW(DirectDrawEnumerate)
-HRESULT WINAPI DirectDrawCreateClipper(DWORD,LPDIRECTDRAWCLIPPER*,LPUNKNOWN);
-
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-#endif /* __XWIN_DDRAW_H */
diff --git a/nx-X11/programs/Xserver/hw/xwin/win.h b/nx-X11/programs/Xserver/hw/xwin/win.h
deleted file mode 100644
index 9baee9b05..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/win.h
+++ /dev/null
@@ -1,1466 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Dakshinamurthy Karra
- * Suhaib M Siddiqi
- * Peter Busch
- * Harold L Hunt II
- * Kensuke Matsuzaki
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/win.h,v 1.37 2003/10/02 13:30:09 eich Exp $ */
-
-#ifndef _WIN_H_
-#define _WIN_H_
-
-#ifndef NO
-#define NO 0
-#endif
-#ifndef YES
-#define YES 1
-#endif
-
-/* Turn debug messages on or off */
-#ifndef CYGDEBUG
-#define CYGDEBUG NO
-#endif
-
-/* WM_XBUTTON Messages. They should go into w32api. */
-#ifndef WM_XBUTTONDOWN
-# define WM_XBUTTONDOWN 523
-#endif
-#ifndef WM_XBUTTONUP
-# define WM_XBUTTONUP 524
-#endif
-#ifndef WM_XBUTTONDBLCLK
-# define WM_XBUTTONDBLCLK 525
-#endif
-
-#define NEED_EVENTS
-
-#define WIN_DEFAULT_BPP 0
-#define WIN_DEFAULT_WHITEPIXEL 255
-#define WIN_DEFAULT_BLACKPIXEL 0
-#define WIN_DEFAULT_LINEBIAS 0
-#define WIN_DEFAULT_E3B_TIME 50 /* milliseconds */
-#define WIN_DEFAULT_DPI 75
-#define WIN_DEFAULT_REFRESH 0
-#define WIN_DEFAULT_WIN_KILL TRUE
-#define WIN_DEFAULT_UNIX_KILL FALSE
-#define WIN_DEFAULT_CLIP_UPDATES_NBOXES 0
-#ifdef XWIN_EMULATEPSEUDO
-#define WIN_DEFAULT_EMULATE_PSEUDO FALSE
-#endif
-#define WIN_DEFAULT_USER_GAVE_HEIGHT_AND_WIDTH FALSE
-
-#define WIN_DIB_MAXIMUM_SIZE 0x08000000 /* 16 MB on Windows 95, 98, Me */
-#define WIN_DIB_MAXIMUM_SIZE_MB (WIN_DIB_MAXIMUM_SIZE / 8 / 1024 / 1024)
-
-/*
- * Windows only supports 256 color palettes
- */
-#define WIN_NUM_PALETTE_ENTRIES 256
-
-/*
- * Number of times to call Restore in an attempt to restore the primary surface
- */
-#define WIN_REGAIN_SURFACE_RETRIES 1
-
-/*
- * Build a supported display depths mask by shifting one to the left
- * by the number of bits in the supported depth.
- */
-#define WIN_SUPPORTED_BPPS ( (1 << (32 - 1)) | (1 << (24 - 1)) \
- | (1 << (16 - 1)) | (1 << (15 - 1)) \
- | (1 << ( 8 - 1)))
-#define WIN_CHECK_DEPTH YES
-
-/*
- * Timer IDs for WM_TIMER
- */
-#define WIN_E3B_TIMER_ID 1
-#define WIN_POLLING_MOUSE_TIMER_ID 2
-
-
-#define WIN_E3B_OFF -1
-#define WIN_FD_INVALID -1
-
-#define WIN_SERVER_NONE 0x0L /* 0 */
-#define WIN_SERVER_SHADOW_GDI 0x1L /* 1 */
-#define WIN_SERVER_SHADOW_DD 0x2L /* 2 */
-#define WIN_SERVER_SHADOW_DDNL 0x4L /* 4 */
-#ifdef XWIN_PRIMARYFB
-#define WIN_SERVER_PRIMARY_DD 0x8L /* 8 */
-#endif
-#ifdef XWIN_NATIVEGDI
-# define WIN_SERVER_NATIVE_GDI 0x10L /* 16 */
-#endif
-
-#define AltMapIndex Mod1MapIndex
-#define NumLockMapIndex Mod2MapIndex
-#define AltLangMapIndex Mod3MapIndex
-#define KanaMapIndex Mod4MapIndex
-#define ScrollLockMapIndex Mod5MapIndex
-
-#define WIN_MOD_LALT 0x00000001
-#define WIN_MOD_RALT 0x00000002
-#define WIN_MOD_LCONTROL 0x00000004
-#define WIN_MOD_RCONTROL 0x00000008
-
-#define WIN_24BPP_MASK_RED 0x00FF0000
-#define WIN_24BPP_MASK_GREEN 0x0000FF00
-#define WIN_24BPP_MASK_BLUE 0x000000FF
-
-#define WIN_MAX_KEYS_PER_KEY 4
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <stdio.h>
-
-#include <errno.h>
-#if defined(XWIN_MULTIWINDOWEXTWM) || defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
-#define HANDLE void *
-#include <pthread.h>
-#undef HANDLE
-#endif
-
-#ifdef HAS_MMAP
-#include <sys/mman.h>
-#ifndef MAP_FILE
-#define MAP_FILE 0
-#endif /* MAP_FILE */
-#endif /* HAS_MMAP */
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include <X11/Xos.h>
-#include <X11/Xprotostr.h>
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "pixmap.h"
-#include "region.h"
-#include "gcstruct.h"
-#include "colormap.h"
-#include "colormapst.h"
-#include "miscstruct.h"
-#include "servermd.h"
-#include "windowstr.h"
-#include "mi.h"
-#include "micmap.h"
-#include "mifillarc.h"
-#include "mifpoly.h"
-#include "mibstore.h"
-#include "input.h"
-#include "mipointer.h"
-#include "X11/keysym.h"
-#include "mibstore.h"
-#include "micoord.h"
-#include "dix.h"
-#include "miline.h"
-#include "shadow.h"
-#include "fb.h"
-#include "rootless.h"
-
-#ifdef RENDER
-#include "mipict.h"
-#include "picturestr.h"
-#endif
-
-#ifdef RANDR
-#include "randrstr.h"
-#endif
-
-/*
- * Windows headers
- */
-#include "winms.h"
-#include "./winresource.h"
-
-
-/*
- * Define Windows constants
- */
-
-#define WM_TRAYICON (WM_USER + 1000)
-#define WM_INIT_SYS_MENU (WM_USER + 1001)
-#define WM_GIVEUP (WM_USER + 1002)
-
-
-/* Local includes */
-#include "winwindow.h"
-#include "winmsg.h"
-
-
-/*
- * Debugging macros
- */
-
-#if CYGDEBUG
-#define DEBUG_MSG(str,...) \
-if (fDebugProcMsg) \
-{ \
- char *pszTemp; \
- int iLength; \
- pszTemp = Xprintf (str, ##__VA_ARGS__); \
- MessageBox (NULL, pszTemp, szFunctionName, MB_OK); \
- xfree (pszTemp); \
-}
-#else
-#define DEBUG_MSG(str,...)
-#endif
-
-#if CYGDEBUG
-#define DEBUG_FN_NAME(str) PTSTR szFunctionName = str
-#else
-#define DEBUG_FN_NAME(str)
-#endif
-
-#if CYGDEBUG || YES
-#define DEBUGVARS BOOL fDebugProcMsg = FALSE
-#else
-#define DEBUGVARS
-#endif
-
-#if CYGDEBUG || YES
-#define DEBUGPROC_MSG fDebugProcMsg = TRUE
-#else
-#define DEBUGPROC_MSG
-#endif
-
-#define PROFILEPOINT(point,thresh)\
-{\
-static unsigned int PROFPT##point = 0;\
-if (++PROFPT##point % thresh == 0)\
-ErrorF (#point ": PROFILEPOINT hit %u times\n", PROFPT##point);\
-}
-
-
-/* We use xor this macro for detecting toggle key state changes */
-#define WIN_XOR(a,b) ((!(a) && (b)) || ((a) && !(b)))
-
-#define DEFINE_ATOM_HELPER(func,atom_name) \
-static Atom func (void) { \
- static int generation; \
- static Atom atom; \
- if (generation != serverGeneration) { \
- generation = serverGeneration; \
- atom = MakeAtom (atom_name, strlen (atom_name), TRUE); \
- } \
- return atom; \
-}
-
-/*
- * Typedefs for engine dependent function pointers
- */
-
-typedef Bool (*winAllocateFBProcPtr)(ScreenPtr);
-
-typedef void (*winShadowUpdateProcPtr)(ScreenPtr, shadowBufPtr);
-
-typedef Bool (*winCloseScreenProcPtr)(int, ScreenPtr);
-
-typedef Bool (*winInitVisualsProcPtr)(ScreenPtr);
-
-typedef Bool (*winAdjustVideoModeProcPtr)(ScreenPtr);
-
-typedef Bool (*winCreateBoundingWindowProcPtr)(ScreenPtr);
-
-typedef Bool (*winFinishScreenInitProcPtr)(int, ScreenPtr, int, char **);
-
-typedef Bool (*winBltExposedRegionsProcPtr)(ScreenPtr);
-
-typedef Bool (*winActivateAppProcPtr)(ScreenPtr);
-
-typedef Bool (*winRedrawScreenProcPtr)(ScreenPtr pScreen);
-
-typedef Bool (*winRealizeInstalledPaletteProcPtr)(ScreenPtr pScreen);
-
-typedef Bool (*winInstallColormapProcPtr)(ColormapPtr pColormap);
-
-typedef Bool (*winStoreColorsProcPtr)(ColormapPtr pmap,
- int ndef, xColorItem *pdefs);
-
-typedef Bool (*winCreateColormapProcPtr)(ColormapPtr pColormap);
-
-typedef Bool (*winDestroyColormapProcPtr)(ColormapPtr pColormap);
-
-typedef Bool (*winHotKeyAltTabProcPtr)(ScreenPtr);
-
-typedef Bool (*winCreatePrimarySurfaceProcPtr)(ScreenPtr);
-
-typedef Bool (*winReleasePrimarySurfaceProcPtr)(ScreenPtr);
-
-typedef Bool (*winFinishCreateWindowsWindowProcPtr)(WindowPtr pWin);
-
-
-/* Typedef for DIX wrapper functions */
-typedef int (*winDispatchProcPtr) (ClientPtr);
-
-
-/*
- * GC (graphics context) privates
- */
-
-typedef struct
-{
- HDC hdc;
- HDC hdcMem;
-} winPrivGCRec, *winPrivGCPtr;
-
-
-/*
- * Pixmap privates
- */
-
-typedef struct
-{
- HDC hdcSelected;
- HBITMAP hBitmap;
- BYTE *pbBits;
- DWORD dwScanlineBytes;
- BITMAPINFOHEADER *pbmih;
-} winPrivPixmapRec, *winPrivPixmapPtr;
-
-
-/*
- * Colormap privates
- */
-
-typedef struct
-{
- HPALETTE hPalette;
- LPDIRECTDRAWPALETTE lpDDPalette;
- RGBQUAD rgbColors[WIN_NUM_PALETTE_ENTRIES];
- PALETTEENTRY peColors[WIN_NUM_PALETTE_ENTRIES];
-} winPrivCmapRec, *winPrivCmapPtr;
-
-/*
- * Windows Cursor handling.
- */
-
-typedef struct {
- /* from GetSystemMetrics */
- int sm_cx;
- int sm_cy;
-
- BOOL visible;
- HCURSOR handle;
- QueryBestSizeProcPtr QueryBestSize;
- miPointerSpriteFuncPtr spriteFuncs;
-} winCursorRec;
-
-/*
- * Screen information structure that we need before privates are available
- * in the server startup sequence.
- */
-
-typedef struct
-{
- ScreenPtr pScreen;
-
- /* Did the user specify a height and width? */
- Bool fUserGaveHeightAndWidth;
-
- DWORD dwScreen;
- DWORD dwUserWidth;
- DWORD dwUserHeight;
- DWORD dwWidth;
- DWORD dwHeight;
- DWORD dwWidth_mm;
- DWORD dwHeight_mm;
- DWORD dwPaddedWidth;
-
- /* Did the user specify a screen position? */
- Bool fUserGavePosition;
- DWORD dwInitialX;
- DWORD dwInitialY;
-
- /*
- * dwStride is the number of whole pixels that occupy a scanline,
- * including those pixels that are not displayed. This is basically
- * a rounding up of the width.
- */
- DWORD dwStride;
-
- /* Offset of the screen in the window when using scrollbars */
- DWORD dwXOffset;
- DWORD dwYOffset;
-
- DWORD dwBPP;
- DWORD dwDepth;
- DWORD dwRefreshRate;
- char *pfb;
- DWORD dwEngine;
- DWORD dwEnginePreferred;
- DWORD dwClipUpdatesNBoxes;
-#ifdef XWIN_EMULATEPSEUDO
- Bool fEmulatePseudo;
-#endif
- Bool fFullScreen;
- Bool fDecoration;
-#ifdef XWIN_MULTIWINDOWEXTWM
- Bool fMWExtWM;
- Bool fInternalWM;
- Bool fAnotherWMRunning;
-#endif
- Bool fRootless;
-#ifdef XWIN_MULTIWINDOW
- Bool fMultiWindow;
-#endif
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- Bool fMultiMonitorOverride;
-#endif
- Bool fMultipleMonitors;
- Bool fLessPointer;
- Bool fScrollbars;
- Bool fNoTrayIcon;
- int iE3BTimeout;
- /* Windows (Alt+F4) and Unix (Ctrl+Alt+Backspace) Killkey */
- Bool fUseWinKillKey;
- Bool fUseUnixKillKey;
- Bool fIgnoreInput;
-
- /* Did the user explicitly set this screen? */
- Bool fExplicitScreen;
-} winScreenInfo, *winScreenInfoPtr;
-
-
-/*
- * Screen privates
- */
-
-typedef struct _winPrivScreenRec
-{
- winScreenInfoPtr pScreenInfo;
-
- Bool fEnabled;
- Bool fClosed;
- Bool fActive;
- Bool fBadDepth;
-
- int iDeltaZ;
-
- int iConnectedClients;
-
- CloseScreenProcPtr CloseScreen;
-
- DWORD dwRedMask;
- DWORD dwGreenMask;
- DWORD dwBlueMask;
- DWORD dwBitsPerRGB;
-
- DWORD dwModeKeyStates;
-
- /* Handle to icons that must be freed */
- HICON hiconNotifyIcon;
-
- /* Last width, height, and depth of the Windows display */
- DWORD dwLastWindowsWidth;
- DWORD dwLastWindowsHeight;
- DWORD dwLastWindowsBitsPixel;
-
- /* Palette management */
- ColormapPtr pcmapInstalled;
-
- /* Pointer to the root visual so we only have to look it up once */
- VisualPtr pRootVisual;
-
- /* 3 button emulation variables */
- int iE3BCachedPress;
- Bool fE3BFakeButton2Sent;
-
- /* Privates used by shadow fb GDI server */
- HBITMAP hbmpShadow;
- HDC hdcScreen;
- HDC hdcShadow;
- HWND hwndScreen;
-
- /* Privates used by shadow fb and primary fb DirectDraw servers */
- LPDIRECTDRAW pdd;
- LPDIRECTDRAWSURFACE2 pddsPrimary;
- LPDIRECTDRAW2 pdd2;
-
- /* Privates used by shadow fb DirectDraw server */
- LPDIRECTDRAWSURFACE2 pddsShadow;
- LPDDSURFACEDESC pddsdShadow;
-
- /* Privates used by primary fb DirectDraw server */
- LPDIRECTDRAWSURFACE2 pddsOffscreen;
- LPDDSURFACEDESC pddsdOffscreen;
- LPDDSURFACEDESC pddsdPrimary;
-
- /* Privates used by shadow fb DirectDraw Nonlocking server */
- LPDIRECTDRAW4 pdd4;
- LPDIRECTDRAWSURFACE4 pddsShadow4;
- LPDIRECTDRAWSURFACE4 pddsPrimary4;
- BOOL fRetryCreateSurface;
-
- /* Privates used by both shadow fb DirectDraw servers */
- LPDIRECTDRAWCLIPPER pddcPrimary;
-
-#ifdef XWIN_MULTIWINDOWEXTWM
- /* Privates used by multi-window external window manager */
- RootlessFrameID widTop;
- Bool fRestacking;
-#endif
-
-#ifdef XWIN_MULTIWINDOW
- /* Privates used by multi-window */
- pthread_t ptWMProc;
- pthread_t ptXMsgProc;
- void *pWMInfo;
-#endif
-
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- /* Privates used by both multi-window and rootless */
- Bool fRootWindowShown;
-#endif
-
-#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
- /* Privates used for any module running in a seperate thread */
- pthread_mutex_t pmServerStarted;
- Bool fServerStarted;
-#endif
-
- /* Engine specific functions */
- winAllocateFBProcPtr pwinAllocateFB;
- winShadowUpdateProcPtr pwinShadowUpdate;
- winCloseScreenProcPtr pwinCloseScreen;
- winInitVisualsProcPtr pwinInitVisuals;
- winAdjustVideoModeProcPtr pwinAdjustVideoMode;
- winCreateBoundingWindowProcPtr pwinCreateBoundingWindow;
- winFinishScreenInitProcPtr pwinFinishScreenInit;
- winBltExposedRegionsProcPtr pwinBltExposedRegions;
- winActivateAppProcPtr pwinActivateApp;
- winRedrawScreenProcPtr pwinRedrawScreen;
- winRealizeInstalledPaletteProcPtr pwinRealizeInstalledPalette;
- winInstallColormapProcPtr pwinInstallColormap;
- winStoreColorsProcPtr pwinStoreColors;
- winCreateColormapProcPtr pwinCreateColormap;
- winDestroyColormapProcPtr pwinDestroyColormap;
- winHotKeyAltTabProcPtr pwinHotKeyAltTab;
- winCreatePrimarySurfaceProcPtr pwinCreatePrimarySurface;
- winReleasePrimarySurfaceProcPtr pwinReleasePrimarySurface;
-
-#ifdef XWIN_MULTIWINDOW
- /* Window Procedures for MultiWindow mode */
- winFinishCreateWindowsWindowProcPtr pwinFinishCreateWindowsWindow;
-#endif
-
- /* Window Procedures for Rootless mode */
- CreateWindowProcPtr CreateWindow;
- DestroyWindowProcPtr DestroyWindow;
- PositionWindowProcPtr PositionWindow;
- ChangeWindowAttributesProcPtr ChangeWindowAttributes;
- RealizeWindowProcPtr RealizeWindow;
- UnrealizeWindowProcPtr UnrealizeWindow;
- ValidateTreeProcPtr ValidateTree;
- PostValidateTreeProcPtr PostValidateTree;
- WindowExposuresProcPtr WindowExposures;
- PaintWindowBackgroundProcPtr PaintWindowBackground;
- PaintWindowBorderProcPtr PaintWindowBorder;
- CopyWindowProcPtr CopyWindow;
- ClearToBackgroundProcPtr ClearToBackground;
- ClipNotifyProcPtr ClipNotify;
- RestackWindowProcPtr RestackWindow;
- ReparentWindowProcPtr ReparentWindow;
- ResizeWindowProcPtr ResizeWindow;
- MoveWindowProcPtr MoveWindow;
-#ifdef SHAPE
- SetShapeProcPtr SetShape;
-#endif
-
- winCursorRec cursor;
-} winPrivScreenRec;
-
-
-#ifdef XWIN_MULTIWINDOWEXTWM
-typedef struct {
- RootlessWindowPtr pFrame;
- HWND hWnd;
- int dwWidthBytes;
- BITMAPINFOHEADER *pbmihShadow;
- HBITMAP hbmpShadow;
- HDC hdcShadow;
- HDC hdcScreen;
- BOOL fResized;
- BOOL fRestackingNow;
- BOOL fClose;
- BOOL fMovingOrSizing;
- BOOL fDestroyed;//for debug
- char *pfb;
-} win32RootlessWindowRec, *win32RootlessWindowPtr;
-#endif
-
-
-typedef struct {
- pointer value;
- XID id;
-} WindowIDPairRec, *WindowIDPairPtr;
-
-
-/*
- * Extern declares for general global variables
- */
-
-extern winScreenInfo g_ScreenInfo[];
-extern miPointerScreenFuncRec g_winPointerCursorFuncs;
-extern DWORD g_dwEvents;
-#ifdef HAS_DEVWINDOWS
-extern int g_fdMessageQueue;
-#endif
-extern int g_iScreenPrivateIndex;
-extern int g_iCmapPrivateIndex;
-extern int g_iGCPrivateIndex;
-extern int g_iPixmapPrivateIndex;
-extern int g_iWindowPrivateIndex;
-extern unsigned long g_ulServerGeneration;
-extern CARD32 g_c32LastInputEventTime;
-extern DWORD g_dwEnginesSupported;
-extern HINSTANCE g_hInstance;
-extern int g_copyROP[];
-extern int g_patternROP[];
-extern const char * g_pszQueryHost;
-
-
-/*
- * Extern declares for dynamically loaded libraries and function pointers
- */
-
-extern HMODULE g_hmodDirectDraw;
-extern FARPROC g_fpDirectDrawCreate;
-extern FARPROC g_fpDirectDrawCreateClipper;
-
-extern HMODULE g_hmodCommonControls;
-extern FARPROC g_fpTrackMouseEvent;
-
-
-/*
- * Screen privates macros
- */
-
-#define winGetScreenPriv(pScreen) \
- ((winPrivScreenPtr) (pScreen)->devPrivates[g_iScreenPrivateIndex].ptr)
-
-#define winSetScreenPriv(pScreen,v) \
- ((pScreen)->devPrivates[g_iScreenPrivateIndex].ptr = (pointer) v)
-
-#define winScreenPriv(pScreen) \
- winPrivScreenPtr pScreenPriv = winGetScreenPriv(pScreen)
-
-
-/*
- * Colormap privates macros
- */
-
-#define winGetCmapPriv(pCmap) \
- ((winPrivCmapPtr) (pCmap)->devPrivates[g_iCmapPrivateIndex].ptr)
-
-#define winSetCmapPriv(pCmap,v) \
- ((pCmap)->devPrivates[g_iCmapPrivateIndex].ptr = (pointer) v)
-
-#define winCmapPriv(pCmap) \
- winPrivCmapPtr pCmapPriv = winGetCmapPriv(pCmap)
-
-
-/*
- * GC privates macros
- */
-
-#define winGetGCPriv(pGC) \
- ((winPrivGCPtr) (pGC)->devPrivates[g_iGCPrivateIndex].ptr)
-
-#define winSetGCPriv(pGC,v) \
- ((pGC)->devPrivates[g_iGCPrivateIndex].ptr = (pointer) v)
-
-#define winGCPriv(pGC) \
- winPrivGCPtr pGCPriv = winGetGCPriv(pGC)
-
-
-/*
- * Pixmap privates macros
- */
-
-#define winGetPixmapPriv(pPixmap) \
- ((winPrivPixmapPtr) (pPixmap)->devPrivates[g_iPixmapPrivateIndex].ptr)
-
-#define winSetPixmapPriv(pPixmap,v) \
- ((pPixmap)->devPrivates[g_iPixmapPrivateIndex].ptr = (pointer) v)
-
-#define winPixmapPriv(pPixmap) \
- winPrivPixmapPtr pPixmapPriv = winGetPixmapPriv(pPixmap)
-
-
-/*
- * Window privates macros
- */
-
-#define winGetWindowPriv(pWin) \
- ((winPrivWinPtr) (pWin)->devPrivates[g_iWindowPrivateIndex].ptr)
-
-#define winSetWindowPriv(pWin,v) \
- ((pWin)->devPrivates[g_iWindowPrivateIndex].ptr = (pointer) v)
-
-#define winWindowPriv(pWin) \
- winPrivWinPtr pWinPriv = winGetWindowPriv(pWin)
-
-/*
- * wrapper macros
- */
-#define _WIN_WRAP(priv, real, mem, func) {\
- priv->mem = real->mem; \
- real->mem = func; \
-}
-
-#define _WIN_UNWRAP(priv, real, mem) {\
- real->mem = priv->mem; \
-}
-
-#define WIN_WRAP(mem, func) _WIN_WRAP(pScreenPriv, pScreen, mem, func)
-
-#define WIN_UNWRAP(mem) _WIN_UNWRAP(pScreenPriv, pScreen, mem)
-
-/*
- * BEGIN DDX and DIX Function Prototypes
- */
-
-
-/*
- * winallpriv.c
- */
-
-Bool
-winAllocatePrivates (ScreenPtr pScreen);
-
-Bool
-winInitCmapPrivates (ColormapPtr pCmap, int index);
-
-Bool
-winAllocateCmapPrivates (ColormapPtr pCmap);
-
-
-/*
- * winauth.c
- */
-
-#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
-# if defined(XCSECURITY)
-Bool
-winGenerateAuthorization (void);
-# endif
-#endif
-
-
-/*
- * winblock.c
- */
-
-void
-winBlockHandler (int nScreen,
- pointer pBlockData,
- pointer pTimeout,
- pointer pReadMask);
-
-
-#ifdef XWIN_NATIVEGDI
-/*
- * winclip.c
- */
-
-RegionPtr
-winPixmapToRegionNativeGDI (PixmapPtr pPix);
-#endif
-
-
-#ifdef XWIN_CLIPBOARD
-/*
- * winclipboardinit.c
- */
-
-Bool
-winInitClipboard (void);
-
-void
-winFixClipboardChain (void);
-#endif
-
-
-/*
- * wincmap.c
- */
-
-void
-winSetColormapFunctions (ScreenPtr pScreen);
-
-Bool
-winCreateDefColormap (ScreenPtr pScreen);
-
-
-/*
- * wincreatewnd.c
- */
-
-Bool
-winCreateBoundingWindowFullScreen (ScreenPtr pScreen);
-
-Bool
-winCreateBoundingWindowWindowed (ScreenPtr pScreen);
-
-
-/*
- * windialogs.c
- */
-
-void
-winDisplayExitDialog (winPrivScreenPtr pScreenPriv);
-
-void
-winDisplayDepthChangeDialog (winPrivScreenPtr pScreenPriv);
-
-void
-winDisplayAboutDialog (winPrivScreenPtr pScreenPriv);
-
-
-/*
- * winengine.c
- */
-
-void
-winDetectSupportedEngines (void);
-
-Bool
-winSetEngine (ScreenPtr pScreen);
-
-Bool
-winGetDDProcAddresses (void);
-
-
-/*
- * winerror.c
- */
-
-#ifdef DDXOSVERRORF
-void
-OSVenderVErrorF (const char *pszFormat, va_list va_args);
-#endif
-
-void
-winMessageBoxF (const char *pszError, UINT uType, ...);
-
-
-#ifdef XWIN_NATIVEGDI
-/*
- * winfillsp.c
- */
-
-void
-winFillSpansNativeGDI (DrawablePtr pDrawable,
- GCPtr pGC,
- int nSpans,
- DDXPointPtr pPoints,
- int *pWidths,
- int fSorted);
-#endif
-
-
-#ifdef XWIN_NATIVEGDI
-/*
- * winfont.c
- */
-
-Bool
-winRealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont);
-
-Bool
-winUnrealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont);
-#endif
-
-
-#ifdef XWIN_NATIVEGDI
-/*
- * wingc.c
- */
-
-Bool
-winCreateGCNativeGDI (GCPtr pGC);
-#endif
-
-
-#ifdef XWIN_NATIVEGDI
-/*
- * wingetsp.c
- */
-
-void
-winGetSpansNativeGDI (DrawablePtr pDrawable,
- int wMax,
- DDXPointPtr pPoints,
- int *pWidths,
- int nSpans,
- char *pDst);
-#endif
-
-
-/*
- * winglobals.c
- */
-
-void
-winInitializeGlobals (void);
-
-
-/*
- * winkeybd.c
- */
-
-void
-winTranslateKey (WPARAM wParam, LPARAM lParam, int *piScanCode);
-
-int
-winKeybdProc (DeviceIntPtr pDeviceInt, int iState);
-
-void
-winInitializeModeKeyStates (void);
-
-void
-winRestoreModeKeyStates (void);
-
-Bool
-winIsFakeCtrl_L (UINT message, WPARAM wParam, LPARAM lParam);
-
-void
-winKeybdReleaseKeys (void);
-
-void
-winSendKeyEvent (DWORD dwKey, Bool fDown);
-
-
-/*
- * winkeyhook.c
- */
-
-Bool
-winInstallKeyboardHookLL (void);
-
-void
-winRemoveKeyboardHookLL (void);
-
-
-/*
- * winmisc.c
- */
-
-#ifdef XWIN_NATIVEGDI
-void
-winQueryBestSizeNativeGDI (int class, unsigned short *pWidth,
- unsigned short *pHeight, ScreenPtr pScreen);
-#endif
-
-CARD8
-winCountBits (DWORD dw);
-
-Bool
-winUpdateFBPointer (ScreenPtr pScreen, void *pbits);
-
-#ifdef XWIN_NATIVEGDI
-BOOL
-winPaintBackground (HWND hwnd, COLORREF colorref);
-#endif
-
-
-/*
- * winmouse.c
- */
-
-int
-winMouseProc (DeviceIntPtr pDeviceInt, int iState);
-
-int
-winMouseWheel (ScreenPtr pScreen, int iDeltaZ);
-
-void
-winMouseButtonsSendEvent (int iEventType, int iButton);
-
-int
-winMouseButtonsHandle (ScreenPtr pScreen,
- int iEventType, int iButton,
- WPARAM wParam);
-
-#ifdef XWIN_NATIVEGDI
-/*
- * winnativegdi.c
- */
-
-HBITMAP
-winCreateDIBNativeGDI (int iWidth, int iHeight, int iDepth,
- BYTE **ppbBits, BITMAPINFO **ppbmi);
-
-Bool
-winSetEngineFunctionsNativeGDI (ScreenPtr pScreen);
-#endif
-
-
-#ifdef XWIN_PRIMARYFB
-/*
- * winpfbddd.c
- */
-
-Bool
-winSetEngineFunctionsPrimaryDD (ScreenPtr pScreen);
-#endif
-
-
-#ifdef XWIN_NATIVEGDI
-/*
- * winpixmap.c
- */
-
-PixmapPtr
-winCreatePixmapNativeGDI (ScreenPtr pScreen, int width, int height, int depth);
-
-Bool
-winDestroyPixmapNativeGDI (PixmapPtr pPixmap);
-
-Bool
-winModifyPixmapHeaderNativeGDI (PixmapPtr pPixmap,
- int iWidth, int iHeight,
- int iDepth,
- int iBitsPerPixel,
- int devKind,
- pointer pPixData);
-#endif
-
-
-#ifdef XWIN_NATIVEGDI
-/*
- * winpntwin.c
- */
-
-void
-winPaintWindowNativeGDI (WindowPtr pWin, RegionPtr pRegion, int what);
-#endif
-
-
-#ifdef XWIN_NATIVEGDI
-/*
- * winpolyline.c
- */
-
-void
-winPolyLineNativeGDI (DrawablePtr pDrawable,
- GCPtr pGC,
- int mode,
- int npt,
- DDXPointPtr ppt);
-#endif
-
-
-#ifdef XWIN_NATIVEGDI
-/*
- * winpushpxl.c
- */
-
-void
-winPushPixels (GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDrawable,
- int dx, int dy, int xOrg, int yOrg);
-#endif
-
-
-/*
- * winscrinit.c
- */
-
-Bool
-winScreenInit (int index,
- ScreenPtr pScreen,
- int argc, char **argv);
-
-Bool
-winFinishScreenInitFB (int index,
- ScreenPtr pScreen,
- int argc, char **argv);
-
-#if defined(XWIN_NATIVEGDI)
-Bool
-winFinishScreenInitNativeGDI (int index,
- ScreenPtr pScreen,
- int argc, char **argv);
-#endif
-
-
-#ifdef XWIN_NATIVEGDI
-/*
- * winsetsp.c
- */
-
-void
-winSetSpansNativeGDI (DrawablePtr pDrawable,
- GCPtr pGC,
- char *pSrc,
- DDXPointPtr pPoints,
- int *pWidth,
- int nSpans,
- int fSorted);
-#endif
-
-
-/*
- * winshaddd.c
- */
-
-Bool
-winSetEngineFunctionsShadowDD (ScreenPtr pScreen);
-
-
-/*
- * winshadddnl.c
- */
-
-Bool
-winSetEngineFunctionsShadowDDNL (ScreenPtr pScreen);
-
-
-/*
- * winshadgdi.c
- */
-
-Bool
-winSetEngineFunctionsShadowGDI (ScreenPtr pScreen);
-
-
-/*
- * winwakeup.c
- */
-
-void
-winWakeupHandler (int nScreen,
- pointer pWakeupData,
- unsigned long ulResult,
- pointer pReadmask);
-
-
-/*
- * winwindow.c
- */
-
-#ifdef XWIN_NATIVEGDI
-Bool
-winCreateWindowNativeGDI (WindowPtr pWin);
-
-Bool
-winDestroyWindowNativeGDI (WindowPtr pWin);
-
-Bool
-winPositionWindowNativeGDI (WindowPtr pWin, int x, int y);
-
-void
-winCopyWindowNativeGDI (WindowPtr pWin,
- DDXPointRec ptOldOrg,
- RegionPtr prgnSrc);
-
-Bool
-winChangeWindowAttributesNativeGDI (WindowPtr pWin, unsigned long mask);
-
-Bool
-winUnmapWindowNativeGDI (WindowPtr pWindow);
-
-Bool
-winMapWindowNativeGDI (WindowPtr pWindow);
-#endif
-
-Bool
-winCreateWindowRootless (WindowPtr pWindow);
-
-Bool
-winDestroyWindowRootless (WindowPtr pWindow);
-
-Bool
-winPositionWindowRootless (WindowPtr pWindow, int x, int y);
-
-Bool
-winChangeWindowAttributesRootless (WindowPtr pWindow, unsigned long mask);
-
-Bool
-winUnmapWindowRootless (WindowPtr pWindow);
-
-Bool
-winMapWindowRootless (WindowPtr pWindow);
-
-#ifdef SHAPE
-void
-winSetShapeRootless (WindowPtr pWindow);
-#endif
-
-
-/*
- * winmultiwindowicons.c - Used by both multi-window and Win32Rootless
- */
-
-HICON
-winXIconToHICON (WindowPtr pWin, int iconSize);
-
-
-#ifdef XWIN_MULTIWINDOW
-/*
- * winmultiwindowshape.c
- */
-
-# ifdef SHAPE
-void
-winReshapeMultiWindow (WindowPtr pWin);
-
-void
-winSetShapeMultiWindow (WindowPtr pWindow);
-
-void
-winUpdateRgnMultiWindow (WindowPtr pWindow);
-# endif
-#endif
-
-
-#ifdef XWIN_MULTIWINDOW
-/*
- * winmultiwindowwindow.c
- */
-
-Bool
-winCreateWindowMultiWindow (WindowPtr pWindow);
-
-Bool
-winDestroyWindowMultiWindow (WindowPtr pWindow);
-
-Bool
-winPositionWindowMultiWindow (WindowPtr pWindow, int x, int y);
-
-Bool
-winChangeWindowAttributesMultiWindow (WindowPtr pWindow, unsigned long mask);
-
-Bool
-winUnmapWindowMultiWindow (WindowPtr pWindow);
-
-Bool
-winMapWindowMultiWindow (WindowPtr pWindow);
-
-void
-winReparentWindowMultiWindow (WindowPtr pWin, WindowPtr pPriorParent);
-
-void
-winRestackWindowMultiWindow (WindowPtr pWin, WindowPtr pOldNextSib);
-
-void
-winReorderWindowsMultiWindow (void);
-
-void
-winResizeWindowMultiWindow (WindowPtr pWin, int x, int y, unsigned int w,
- unsigned int h, WindowPtr pSib);
-void
-winMoveWindowMultiWindow (WindowPtr pWin, int x, int y,
- WindowPtr pSib, VTKind kind);
-
-void
-winCopyWindowMultiWindow (WindowPtr pWin, DDXPointRec oldpt,
- RegionPtr oldRegion);
-
-XID
-winGetWindowID (WindowPtr pWin);
-
-int
-winAdjustXWindow (WindowPtr pWin, HWND hwnd);
-#endif
-
-
-#ifdef XWIN_MULTIWINDOW
-/*
- * winmultiwindowwndproc.c
- */
-
-LRESULT CALLBACK
-winTopLevelWindowProc (HWND hwnd, UINT message,
- WPARAM wParam, LPARAM lParam);
-#endif
-
-
-/*
- * wintrayicon.c
- */
-
-void
-winInitNotifyIcon (winPrivScreenPtr pScreenPriv);
-
-void
-winDeleteNotifyIcon (winPrivScreenPtr pScreenPriv);
-
-LRESULT
-winHandleIconMessage (HWND hwnd, UINT message,
- WPARAM wParam, LPARAM lParam,
- winPrivScreenPtr pScreenPriv);
-
-
-/*
- * winwndproc.c
- */
-
-LRESULT CALLBACK
-winWindowProc (HWND hWnd, UINT message,
- WPARAM wParam, LPARAM lParam);
-
-
-#ifdef XWIN_MULTIWINDOWEXTWM
-/*
- * winwin32rootless.c
- */
-
-Bool
-winMWExtWMCreateFrame (RootlessWindowPtr pFrame, ScreenPtr pScreen,
- int newX, int newY, RegionPtr pShape);
-
-void
-winMWExtWMDestroyFrame (RootlessFrameID wid);
-
-void
-winMWExtWMMoveFrame (RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY);
-
-void
-winMWExtWMResizeFrame (RootlessFrameID wid, ScreenPtr pScreen,
- int newX, int newY, unsigned int newW, unsigned int newH,
- unsigned int gravity);
-
-void
-winMWExtWMRestackFrame (RootlessFrameID wid, RootlessFrameID nextWid);
-
-void
-winMWExtWMReshapeFrame (RootlessFrameID wid, RegionPtr pShape);
-
-void
-winMWExtWMUnmapFrame (RootlessFrameID wid);
-
-void
-winMWExtWMStartDrawing (RootlessFrameID wid, char **pixelData, int *bytesPerRow);
-
-void
-winMWExtWMStopDrawing (RootlessFrameID wid, Bool flush);
-
-void
-winMWExtWMUpdateRegion (RootlessFrameID wid, RegionPtr pDamage);
-
-void
-winMWExtWMDamageRects (RootlessFrameID wid, int count, const BoxRec *rects,
- int shift_x, int shift_y);
-
-void
-winMWExtWMRootlessSwitchWindow (RootlessWindowPtr pFrame, WindowPtr oldWin);
-
-void
-winMWExtWMCopyBytes (unsigned int width, unsigned int height,
- const void *src, unsigned int srcRowBytes,
- void *dst, unsigned int dstRowBytes);
-
-void
-winMWExtWMFillBytes (unsigned int width, unsigned int height, unsigned int value,
- void *dst, unsigned int dstRowBytes);
-
-int
-winMWExtWMCompositePixels (unsigned int width, unsigned int height, unsigned int function,
- void *src[2], unsigned int srcRowBytes[2],
- void *mask, unsigned int maskRowBytes,
- void *dst[2], unsigned int dstRowBytes[2]);
-
-void
-winMWExtWMCopyWindow (RootlessFrameID wid, int dstNrects, const BoxRec *dstRects,
- int dx, int dy);
-#endif
-
-
-#ifdef XWIN_MULTIWINDOWEXTWM
-/*
- * winwin32rootlesswindow.c
- */
-
-void
-winMWExtWMReorderWindows (ScreenPtr pScreen);
-
-void
-winMWExtWMMoveXWindow (WindowPtr pWin, int x, int y);
-
-void
-winMWExtWMResizeXWindow (WindowPtr pWin, int w, int h);
-
-void
-winMWExtWMMoveResizeXWindow (WindowPtr pWin, int x, int y, int w, int h);
-
-void
-winMWExtWMUpdateIcon (Window id);
-
-void
-winMWExtWMUpdateWindowDecoration (win32RootlessWindowPtr pRLWinPriv,
- winScreenInfoPtr pScreenInfo);
-
-wBOOL CALLBACK
-winMWExtWMDecorateWindow (HWND hwnd, LPARAM lParam);
-
-Bool
-winIsInternalWMRunning (winScreenInfoPtr pScreenInfo);
-
-void
-winMWExtWMRestackWindows (ScreenPtr pScreen);
-#endif
-
-
-#ifdef XWIN_MULTIWINDOWEXTWM
-/*
- * winwin32rootlesswndproc.c
- */
-
-LRESULT CALLBACK
-winMWExtWMWindowProc (HWND hwnd, UINT message,
- WPARAM wParam, LPARAM lParam);
-#endif
-
-
-/*
- * winwindowswm.c
- */
-
-void
-winWindowsWMSendEvent (int type, unsigned int mask, int which, int arg,
- Window window, int x, int y, int w, int h);
-
-void
-winWindowsWMExtensionInit (void);
-
-/*
- * wincursor.c
- */
-
-Bool
-winInitCursor (ScreenPtr pScreen);
-
-/*
- * END DDX and DIX Function Prototypes
- */
-
-#endif /* _WIN_H_ */
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/winallpriv.c b/nx-X11/programs/Xserver/hw/xwin/winallpriv.c
deleted file mode 100644
index 7b4814b9b..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winallpriv.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Keith Packard, MIT X Consortium
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winallpriv.c,v 1.11 2002/10/17 08:18:21 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/* See Porting Layer Definition - p. 58 */
-/*
- * Allocate indexes for the privates that we use.
- * Allocate memory directly for the screen privates.
- * Reserve space in GCs and Pixmaps for our privates.
- * Colormap privates are handled in winAllocateCmapPrivates ()
- */
-
-Bool
-winAllocatePrivates (ScreenPtr pScreen)
-{
- winPrivScreenPtr pScreenPriv;
-
-#if CYGDEBUG
- winDebug ("winAllocateScreenPrivates - g_ulServerGeneration: %d "
- "serverGeneration: %d\n",
- g_ulServerGeneration, serverGeneration);
-#endif
-
- /* We need a new slot for our privates if the screen gen has changed */
- if (g_ulServerGeneration != serverGeneration)
- {
- /* Get an index that we can store our privates at */
- g_iScreenPrivateIndex = AllocateScreenPrivateIndex ();
- g_iGCPrivateIndex = AllocateGCPrivateIndex ();
- g_iPixmapPrivateIndex = AllocatePixmapPrivateIndex ();
- g_iWindowPrivateIndex = AllocateWindowPrivateIndex ();
-
- g_ulServerGeneration = serverGeneration;
- }
-
- /* Allocate memory for the screen private structure */
- pScreenPriv = (winPrivScreenPtr) malloc (sizeof (winPrivScreenRec));
- if (!pScreenPriv)
- {
- ErrorF ("winAllocateScreenPrivates - malloc () failed\n");
- return FALSE;
- }
-
- /* Initialize the memory of the private structure */
- ZeroMemory (pScreenPriv, sizeof (winPrivScreenRec));
-
- /* Intialize private structure members */
- pScreenPriv->fActive = TRUE;
-
- /* Save the screen private pointer */
- winSetScreenPriv (pScreen, pScreenPriv);
-
- /* Reserve GC memory for our privates */
- if (!AllocateGCPrivate (pScreen, g_iGCPrivateIndex,
- sizeof (winPrivGCRec)))
- {
- ErrorF ("winAllocatePrivates - AllocateGCPrivate () failed\n");
- return FALSE;
- }
-
- /* Reserve Pixmap memory for our privates */
- if (!AllocatePixmapPrivate (pScreen, g_iPixmapPrivateIndex,
- sizeof (winPrivPixmapRec)))
- {
- ErrorF ("winAllocatePrivates - AllocatePixmapPrivates () failed\n");
- return FALSE;
- }
-
- /* Reserve Window memory for our privates */
- if (!AllocateWindowPrivate (pScreen, g_iWindowPrivateIndex,
- sizeof (winPrivWinRec)))
- {
- ErrorF ("winAllocatePrivates () - AllocateWindowPrivates () failed\n");
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/*
- * Colormap privates may be allocated after the default colormap has
- * already been created for some screens. This initialization procedure
- * is called for each default colormap that is found.
- */
-
-Bool
-winInitCmapPrivates (ColormapPtr pcmap, int index)
-{
-#if CYGDEBUG
- winDebug ("winInitCmapPrivates\n");
-#endif
-
- /*
- * I see no way that this function can do anything useful
- * with only a ColormapPtr. We don't have the index for
- * our dev privates yet, so we can't really initialize
- * anything. Perhaps I am misunderstanding the purpose
- * of this function.
- */
- /* That's definitely true.
- * I therefore changed the API and added the index as argument.
- */
- return TRUE;
-}
-
-
-/*
- * Allocate memory for our colormap privates
- */
-
-Bool
-winAllocateCmapPrivates (ColormapPtr pCmap)
-{
- winPrivCmapPtr pCmapPriv;
- static unsigned long s_ulPrivateGeneration = 0;
-
-#if CYGDEBUG
- winDebug ("winAllocateCmapPrivates\n");
-#endif
-
- /* Get a new privates index when the server generation changes */
- if (s_ulPrivateGeneration != serverGeneration)
- {
- /* Get an index that we can store our privates at */
- g_iCmapPrivateIndex = AllocateColormapPrivateIndex (winInitCmapPrivates);
-
- /* Save the new server generation */
- s_ulPrivateGeneration = serverGeneration;
- }
-
- /* Allocate memory for our private structure */
- pCmapPriv = (winPrivCmapPtr) malloc (sizeof (winPrivCmapRec));
- if (!pCmapPriv)
- {
- ErrorF ("winAllocateCmapPrivates - malloc () failed\n");
- return FALSE;
- }
-
- /* Initialize the memory of the private structure */
- ZeroMemory (pCmapPriv, sizeof (winPrivCmapRec));
-
- /* Save the cmap private pointer */
- winSetCmapPriv (pCmap, pCmapPriv);
-
-#if CYGDEBUG
- winDebug ("winAllocateCmapPrivates - Returning\n");
-#endif
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winauth.c b/nx-X11/programs/Xserver/hw/xwin/winauth.c
deleted file mode 100644
index 3d24ef426..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winauth.c
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#if defined(XCSECURITY)
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#include "win.h"
-
-/* Includes for authorization */
-#include "X11/Xauth.h"
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
-#include <X11/extensions/securstr.h>
-
-
-/*
- * Constants
- */
-
-#define AUTH_NAME "MIT-MAGIC-COOKIE-1"
-
-
-/*
- * Globals
- */
-
-XID g_authId = 0;
-unsigned int g_uiAuthDataLen = 0;
-char *g_pAuthData = NULL;
-
-
-/*
- * Generate authorization cookie for internal server clients
- */
-
-Bool
-winGenerateAuthorization ()
-{
- Bool fFreeAuth = FALSE;
- SecurityAuthorizationPtr pAuth = NULL;
-
- /* Call OS layer to generate authorization key */
- g_authId = GenerateAuthorization (strlen (AUTH_NAME),
- AUTH_NAME,
- 0,
- NULL,
- &g_uiAuthDataLen,
- &g_pAuthData);
- if ((XID) ~0L == g_authId)
- {
- ErrorF ("winGenerateAuthorization - GenerateAuthorization failed\n");
- goto auth_bailout;
- }
-#if 0
- else
- {
- ErrorF ("winGenerateAuthorization - GenerateAuthorization success!\n"
- "AuthDataLen: %d AuthData: %s\n",
- g_uiAuthDataLen, g_pAuthData);
- }
-#endif
-
- /* Allocate structure for additional auth information */
- pAuth = (SecurityAuthorizationPtr)
- xalloc (sizeof (SecurityAuthorizationRec));
- if (!(pAuth))
- {
- ErrorF ("winGenerateAuthorization - Failed allocating "
- "SecurityAuthorizationPtr.\n");
- goto auth_bailout;
- }
-
- /* Fill in the auth fields */
- pAuth->id = g_authId;
- pAuth->timeout = 0; /* live for x seconds after refcnt == 0 */
- pAuth->group = None;
- pAuth->trustLevel = XSecurityClientTrusted;
- pAuth->refcnt = 1; /* this auth must stick around */
- pAuth->secondsRemaining = 0;
- pAuth->timer = NULL;
- pAuth->eventClients = NULL;
-
- /* Add the authorization to the server's auth list */
- if (!AddResource (g_authId,
- SecurityAuthorizationResType,
- pAuth))
- {
- ErrorF ("winGenerateAuthorization - AddResource failed for auth.\n");
- fFreeAuth = TRUE;
- goto auth_bailout;
- }
-
- /* Don't free the auth data, since it is still used internally */
- pAuth = NULL;
-
- return TRUE;
-
- auth_bailout:
- if (fFreeAuth)
- xfree (pAuth);
-
- return FALSE;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winblock.c b/nx-X11/programs/Xserver/hw/xwin/winblock.c
deleted file mode 100644
index abea60e0f..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winblock.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "winmsg.h"
-
-
-/*
- * References to external symbols
- */
-
-extern HWND g_hDlgDepthChange;
-extern HWND g_hDlgExit;
-extern HWND g_hDlgAbout;
-
-
-/* See Porting Layer Definition - p. 6 */
-void
-winBlockHandler (int nScreen,
- pointer pBlockData,
- pointer pTimeout,
- pointer pReadMask)
-{
-#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
- winScreenPriv((ScreenPtr)pBlockData);
-#endif
- MSG msg;
-#ifndef HAS_DEVWINDOWS
- struct timeval **tvp = pTimeout;
- if (*tvp != NULL)
- {
- (*tvp)->tv_sec = 0;
- (*tvp)->tv_usec = 100;
- }
-#endif
-
-#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
- /* Signal threaded modules to begin */
- if (pScreenPriv != NULL && !pScreenPriv->fServerStarted)
- {
- int iReturn;
-
- winDebug ("winBlockHandler - Releasing pmServerStarted\n");
-
- /* Flag that modules are to be started */
- pScreenPriv->fServerStarted = TRUE;
-
- /* Unlock the mutex for threaded modules */
- iReturn = pthread_mutex_unlock (&pScreenPriv->pmServerStarted);
- if (iReturn != 0)
- {
- ErrorF ("winBlockHandler - pthread_mutex_unlock () failed: %d\n",
- iReturn);
- goto winBlockHandler_ProcessMessages;
- }
-
- winDebug ("winBlockHandler - pthread_mutex_unlock () returned\n");
- }
-
-winBlockHandler_ProcessMessages:
-#endif
-
- /* Process all messages on our queue */
- while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
- {
- if ((g_hDlgDepthChange == 0
- || !IsDialogMessage (g_hDlgDepthChange, &msg))
- && (g_hDlgExit == 0
- || !IsDialogMessage (g_hDlgExit, &msg))
- && (g_hDlgAbout == 0
- || !IsDialogMessage (g_hDlgAbout, &msg)))
- {
- DispatchMessage (&msg);
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winclip.c b/nx-X11/programs/Xserver/hw/xwin/winclip.c
deleted file mode 100644
index aab7d632d..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winclip.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-/* Look at mfb/mfbclip.c for sample implementation */
-RegionPtr
-winPixmapToRegionNativeGDI (PixmapPtr pPix)
-{
- ErrorF ("winPixmapToRegion()\n");
- return NULL;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winclipboard.h b/nx-X11/programs/Xserver/hw/xwin/winclipboard.h
deleted file mode 100644
index 445c01b27..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winclipboard.h
+++ /dev/null
@@ -1,164 +0,0 @@
-#ifndef _WINCLIPBOARD_H_
-#define _WINCLIPBOARD_H_
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-/* Standard library headers */
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#ifdef __CYGWIN__
-#include <sys/select.h>
-#else
-#include "Xwinsock.h"
-#define HAS_WINSOCK
-#endif
-#include <fcntl.h>
-#include <setjmp.h>
-#include <pthread.h>
-
-/* X headers */
-#include <X11/X.h>
-#include <X11/Xatom.h>
-/* NOTE: For some unknown reason, including Xproto.h solves
- * tons of problems with including windows.h. Unknowns reasons
- * are usually bad, so someone should investigate this.
- */
-#include <X11/Xproto.h>
-#include "X11/Xutil.h"
-#include "X11/Xlocale.h"
-
-/* Fixups to prevent collisions between Windows and X headers */
-#define ATOM DWORD
-
-#ifndef __CYGWIN__
-#define sleep(x) Sleep (1000 * (x))
-#endif
-
-/* Windows headers */
-#ifndef XFree86Server
-#define XFree86Server
-#endif
-#include <windows.h>
-#undef XFree86Server
-
-
-/* Clipboard module constants */
-#define WIN_CLIPBOARD_WINDOW_CLASS "xwinclip"
-#define WIN_CLIPBOARD_WINDOW_TITLE "xwinclip"
-#ifdef HAS_DEVWINDOWS
-# define WIN_MSG_QUEUE_FNAME "/dev/windows"
-#endif
-#define WIN_CONNECT_RETRIES 40
-#define WIN_CONNECT_DELAY 4
-#define WIN_JMP_OKAY 0
-#define WIN_JMP_ERROR_IO 2
-#define WIN_LOCAL_PROPERTY "CYGX_CUT_BUFFER"
-#define WIN_XEVENTS_SUCCESS 0
-#define WIN_XEVENTS_SHUTDOWN 1
-#define WIN_XEVENTS_CONVERT 2
-#define WIN_XEVENTS_NOTIFY 3
-
-#define WM_WM_REINIT (WM_USER + 1)
-
-/*
- * References to external symbols
- */
-
-extern char *display;
-extern void ErrorF (const char* /*f*/, ...);
-extern void winDebug (const char *format, ...);
-extern void winErrorFVerb (int verb, const char *format, ...);
-
-
-/*
- * winclipboardinit.c
- */
-
-Bool
-winInitClipboard (void);
-
-HWND
-winClipboardCreateMessagingWindow (void);
-
-
-/*
- * winclipboardtextconv.c
- */
-
-void
-winClipboardDOStoUNIX (char *pszData, int iLength);
-
-void
-winClipboardUNIXtoDOS (unsigned char **ppszData, int iLength);
-
-
-/*
- * winclipboardthread.c
- */
-
-void *
-winClipboardProc (void *);
-
-void
-winDeinitClipboard (void);
-
-
-/*
- * winclipboardunicode.c
- */
-
-Bool
-winClipboardDetectUnicodeSupport (void);
-
-
-/*
- * winclipboardwndproc.c
- */
-
-BOOL
-winClipboardFlushWindowsMessageQueue (HWND hwnd);
-
-LRESULT CALLBACK
-winClipboardWindowProc (HWND hwnd, UINT message,
- WPARAM wParam, LPARAM lParam);
-
-
-/*
- * winclipboardxevents.c
- */
-
-int
-winClipboardFlushXEvents (HWND hwnd,
- int iWindow,
- Display *pDisplay,
- Bool fUnicodeSupport);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winclipboardinit.c b/nx-X11/programs/Xserver/hw/xwin/winclipboardinit.c
deleted file mode 100644
index 6a0cbaf2c..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winclipboardinit.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "dixstruct.h"
-#include "winclipboard.h"
-
-
-/*
- * Local typedefs
- */
-
-typedef int (*winDispatchProcPtr) (ClientPtr);
-
-DISPATCH_PROC(winProcSetSelectionOwner);
-
-
-/*
- * References to external symbols
- */
-
-extern pthread_t g_ptClipboardProc;
-extern winDispatchProcPtr winProcSetSelectionOwnerOrig;
-extern Bool g_fClipboard;
-extern HWND g_hwndClipboard;
-
-
-/*
- * Intialize the Clipboard module
- */
-
-Bool
-winInitClipboard ()
-{
- ErrorF ("winInitClipboard ()\n");
-
- /* Wrap some internal server functions */
- if (ProcVector[X_SetSelectionOwner] != winProcSetSelectionOwner)
- {
- winProcSetSelectionOwnerOrig = ProcVector[X_SetSelectionOwner];
- ProcVector[X_SetSelectionOwner] = winProcSetSelectionOwner;
- }
-
- /* Spawn a thread for the Clipboard module */
- if (pthread_create (&g_ptClipboardProc,
- NULL,
- winClipboardProc,
- NULL))
- {
- /* Bail if thread creation failed */
- ErrorF ("winInitClipboard - pthread_create failed.\n");
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/*
- * Create the Windows window that we use to recieve Windows messages
- */
-
-HWND
-winClipboardCreateMessagingWindow ()
-{
- WNDCLASS wc;
- HWND hwnd;
-
- /* Setup our window class */
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = winClipboardWindowProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = GetModuleHandle (NULL);
- wc.hIcon = 0;
- wc.hCursor = 0;
- wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = WIN_CLIPBOARD_WINDOW_CLASS;
- RegisterClass (&wc);
-
- /* Create the window */
- hwnd = CreateWindowExA (0, /* Extended styles */
- WIN_CLIPBOARD_WINDOW_CLASS,/* Class name */
- WIN_CLIPBOARD_WINDOW_TITLE,/* Window name */
- WS_OVERLAPPED, /* Not visible anyway */
- CW_USEDEFAULT, /* Horizontal position */
- CW_USEDEFAULT, /* Vertical position */
- CW_USEDEFAULT, /* Right edge */
- CW_USEDEFAULT, /* Bottom edge */
- (HWND) NULL, /* No parent or owner window */
- (HMENU) NULL, /* No menu */
- GetModuleHandle (NULL),/* Instance handle */
- NULL); /* Creation data */
- assert (hwnd != NULL);
-
- /* I'm not sure, but we may need to call this to start message processing */
- ShowWindow (hwnd, SW_HIDE);
-
- /* Similarly, we may need a call to this even though we don't paint */
- UpdateWindow (hwnd);
-
- return hwnd;
-}
-
-void
-winFixClipboardChain (void)
-{
- if (g_fClipboard
- && g_hwndClipboard)
- {
- PostMessage (g_hwndClipboard, WM_WM_REINIT, 0, 0);
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winclipboardtextconv.c b/nx-X11/programs/Xserver/hw/xwin/winclipboardtextconv.c
deleted file mode 100644
index fd2e696c3..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winclipboardtextconv.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-void
-winClipboardDOStoUNIX (char *pszSrc, int iLength);
-void
-winClipboardUNIXtoDOS (unsigned char **ppszData, int iLength);
-
-/*
- * Convert \r\n to \n
- *
- * NOTE: This was heavily inspired by, Cygwin's
- * winsup/cygwin/fhandler.cc/fhandler_base::read ()
- */
-
-void
-winClipboardDOStoUNIX (char *pszSrc, int iLength)
-{
- char *pszDest = pszSrc;
- char *pszEnd = pszSrc + iLength;
-
- /* Loop until the last character */
- while (pszSrc < pszEnd)
- {
- /* Copy the current source character to current destination character */
- *pszDest = *pszSrc;
-
- /* Advance to the next source character */
- pszSrc++;
-
- /* Don't advance the destination character if we need to drop an \r */
- if (*pszDest != '\r' || *pszSrc != '\n')
- pszDest++;
- }
-
- /* Move the terminating null */
- *pszDest = '\0';
-}
-
-
-/*
- * Convert \n to \r\n
- */
-
-void
-winClipboardUNIXtoDOS (unsigned char **ppszData, int iLength)
-{
- int iNewlineCount = 0;
- unsigned char *pszSrc = *ppszData;
- unsigned char *pszEnd = pszSrc + iLength;
- unsigned char *pszDest = NULL, *pszDestBegin = NULL;
-
-#if 0
- ErrorF ("UNIXtoDOS () - Original data:\n%s\n", *ppszData);
-#endif
-
- /* Count \n characters without leading \r */
- while (pszSrc < pszEnd)
- {
- /* Skip ahead two character if found set of \r\n */
- if (*pszSrc == '\r' && pszSrc + 1 < pszEnd && *(pszSrc + 1) == '\n')
- {
- pszSrc += 2;
- continue;
- }
-
- /* Increment the count if found naked \n */
- if (*pszSrc == '\n')
- {
- iNewlineCount++;
- }
-
- pszSrc++;
- }
-
- /* Return if no naked \n's */
- if (iNewlineCount == 0)
- return;
-
- /* Allocate a new string */
- pszDestBegin = pszDest = malloc (iLength + iNewlineCount + 1);
-
- /* Set source pointer to beginning of data string */
- pszSrc = *ppszData;
-
- /* Loop through all characters in source string */
- while (pszSrc < pszEnd)
- {
- /* Copy line endings that are already valid */
- if (*pszSrc == '\r' && pszSrc + 1 < pszEnd && *(pszSrc + 1) == '\n')
- {
- *pszDest = *pszSrc;
- *(pszDest + 1) = *(pszSrc + 1);
- pszDest += 2;
- pszSrc += 2;
- continue;
- }
-
- /* Add \r to naked \n's */
- if (*pszSrc == '\n')
- {
- *pszDest = '\r';
- *(pszDest + 1) = *pszSrc;
- pszDest += 2;
- pszSrc += 1;
- continue;
- }
-
- /* Copy normal characters */
- *pszDest = *pszSrc;
- pszSrc++;
- pszDest++;
- }
-
- /* Put terminating null at end of new string */
- *pszDest = '\0';
-
- /* Swap string pointers */
- free (*ppszData);
- *ppszData = pszDestBegin;
-
-#if 0
- ErrorF ("UNIXtoDOS () - Final string:\n%s\n", pszDestBegin);
-#endif
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winclipboardthread.c b/nx-X11/programs/Xserver/hw/xwin/winclipboardthread.c
deleted file mode 100644
index 081abd5e7..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winclipboardthread.c
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include <sys/types.h>
-#include "winclipboard.h"
-#ifdef __CYGWIN__
-#include <errno.h>
-#endif
-#include "X11/Xauth.h"
-
-
-/*
- * Constants
- */
-
-#define AUTH_NAME "MIT-MAGIC-COOKIE-1"
-
-
-/*
- * References to external symbols
- */
-
-extern Bool g_fUnicodeClipboard;
-extern unsigned long serverGeneration;
-#if defined(XCSECURITY)
-extern unsigned int g_uiAuthDataLen;
-extern char *g_pAuthData;
-#endif
-extern Bool g_fClipboardStarted;
-extern HWND g_hwndClipboard;
-extern void *g_pClipboardDisplay;
-extern Window g_iClipboardWindow;
-
-
-/*
- * Global variables
- */
-
-static jmp_buf g_jmpEntry;
-Bool g_fUnicodeSupport = FALSE;
-Bool g_fUseUnicode = FALSE;
-
-
-/*
- * Local function prototypes
- */
-
-static int
-winClipboardErrorHandler (Display *pDisplay, XErrorEvent *pErr);
-
-static int
-winClipboardIOErrorHandler (Display *pDisplay);
-
-
-/*
- * Main thread function
- */
-
-void *
-winClipboardProc (void *pvNotUsed)
-{
- Atom atomClipboard, atomClipboardManager;
- int iReturn;
- HWND hwnd = NULL;
- int iConnectionNumber = 0;
-#ifdef HAS_DEVWINDOWS
- int fdMessageQueue = 0;
-#else
- struct timeval tvTimeout;
-#endif
- fd_set fdsRead;
- int iMaxDescriptor;
- Display *pDisplay = NULL;
- Window iWindow = None;
- int iRetries;
- Bool fUseUnicode;
- char szDisplay[512];
- int iSelectError;
-
- ErrorF ("winClipboardProc - Hello\n");
-
- /* Do we have Unicode support? */
- g_fUnicodeSupport = winClipboardDetectUnicodeSupport ();
-
- /* Do we use Unicode clipboard? */
- fUseUnicode = g_fUnicodeClipboard && g_fUnicodeSupport;
-
- /* Save the Unicode support flag in a global */
- g_fUseUnicode = fUseUnicode;
-
- /* Allow multiple threads to access Xlib */
- if (XInitThreads () == 0)
- {
- ErrorF ("winClipboardProc - XInitThreads failed.\n");
- pthread_exit (NULL);
- }
-
- /* See if X supports the current locale */
- if (XSupportsLocale () == False)
- {
- ErrorF ("winClipboardProc - Locale not supported by X. Exiting.\n");
- pthread_exit (NULL);
- }
-
- /* Set jump point for Error exits */
- iReturn = setjmp (g_jmpEntry);
-
- /* Check if we should continue operations */
- if (iReturn != WIN_JMP_ERROR_IO
- && iReturn != WIN_JMP_OKAY)
- {
- /* setjmp returned an unknown value, exit */
- ErrorF ("winClipboardProc - setjmp returned: %d exiting\n",
- iReturn);
- pthread_exit (NULL);
- }
- else if (iReturn == WIN_JMP_ERROR_IO)
- {
- /* TODO: Cleanup the Win32 window and free any allocated memory */
- ErrorF ("winClipboardProc - setjmp returned for IO Error Handler.\n");
- pthread_exit (NULL);
- }
-
-#if defined(XCSECURITY)
- /* Use our generated cookie for authentication */
- XSetAuthorization (AUTH_NAME,
- strlen (AUTH_NAME),
- g_pAuthData,
- g_uiAuthDataLen);
-#endif
-
- /* Set error handler */
- XSetErrorHandler (winClipboardErrorHandler);
- XSetIOErrorHandler (winClipboardIOErrorHandler);
-
- /* Initialize retry count */
- iRetries = 0;
-
- /* Setup the display connection string x */
- /*
- * NOTE: Always connect to screen 0 since we require that screen
- * numbers start at 0 and increase without gaps. We only need
- * to connect to one screen on the display to get events
- * for all screens on the display. That is why there is only
- * one clipboard client thread.
- */
- snprintf (szDisplay,
- 512,
- "127.0.0.1:%s.0",
- display);
-
- /* Print the display connection string */
- ErrorF ("winClipboardProc - DISPLAY=%s\n", szDisplay);
-
- /* Open the X display */
- do
- {
- pDisplay = XOpenDisplay (szDisplay);
- if (pDisplay == NULL)
- {
- ErrorF ("winClipboardProc - Could not open display, "
- "try: %d, sleeping: %d\n",
- iRetries + 1, WIN_CONNECT_DELAY);
- ++iRetries;
- sleep (WIN_CONNECT_DELAY);
- continue;
- }
- else
- break;
- }
- while (pDisplay == NULL && iRetries < WIN_CONNECT_RETRIES);
-
- /* Make sure that the display opened */
- if (pDisplay == NULL)
- {
- ErrorF ("winClipboardProc - Failed opening the display, giving up\n");
- pthread_exit (NULL);
- }
-
- /* Save the display in the screen privates */
- g_pClipboardDisplay = pDisplay;
-
- ErrorF ("winClipboardProc - XOpenDisplay () returned and "
- "successfully opened the display.\n");
-
- /* Get our connection number */
- iConnectionNumber = ConnectionNumber (pDisplay);
-
-#ifdef HAS_DEVWINDOWS
- /* Open a file descriptor for the windows message queue */
- fdMessageQueue = open (WIN_MSG_QUEUE_FNAME, O_RDONLY);
- if (fdMessageQueue == -1)
- {
- ErrorF ("winClipboardProc - Failed opening %s\n", WIN_MSG_QUEUE_FNAME);
- pthread_exit (NULL);
- }
-
- /* Find max of our file descriptors */
- iMaxDescriptor = max (fdMessageQueue, iConnectionNumber) + 1;
-#else
- iMaxDescriptor = iConnectionNumber + 1;
-#endif
-
- /* Select event types to watch */
- if (XSelectInput (pDisplay,
- DefaultRootWindow (pDisplay),
- SubstructureNotifyMask |
- StructureNotifyMask |
- PropertyChangeMask) == BadWindow)
- ErrorF ("winClipboardProc - XSelectInput generated BadWindow "
- "on RootWindow\n\n");
-
- /* Create atoms */
- atomClipboard = XInternAtom (pDisplay, "CLIPBOARD", False);
- atomClipboardManager = XInternAtom (pDisplay, "CLIPBOARD_MANAGER", False);
-
- /* Create a messaging window */
- iWindow = XCreateSimpleWindow (pDisplay,
- DefaultRootWindow (pDisplay),
- 1, 1,
- 500, 500,
- 0,
- BlackPixel (pDisplay, 0),
- BlackPixel (pDisplay, 0));
- if (iWindow == 0)
- {
- ErrorF ("winClipboardProc - Could not create an X window.\n");
- pthread_exit (NULL);
- }
-
- /* Save the window in the screen privates */
- g_iClipboardWindow = iWindow;
-
- /* Create Windows messaging window */
- hwnd = winClipboardCreateMessagingWindow ();
-
- /* Save copy of HWND in screen privates */
- g_hwndClipboard = hwnd;
-
- /* Assert ownership of selections if Win32 clipboard is owned */
- if (NULL != GetClipboardOwner ())
- {
- /* PRIMARY */
- iReturn = XSetSelectionOwner (pDisplay, XA_PRIMARY,
- iWindow, CurrentTime);
- if (iReturn == BadAtom || iReturn == BadWindow)
- {
- ErrorF ("winClipboardProc - Could not set PRIMARY owner\n");
- pthread_exit (NULL);
- }
-
- /* CLIPBOARD */
- iReturn = XSetSelectionOwner (pDisplay, atomClipboard,
- iWindow, CurrentTime);
- if (iReturn == BadAtom || iReturn == BadWindow)
- {
- ErrorF ("winClipboardProc - Could not set CLIPBOARD owner\n");
- pthread_exit (NULL);
- }
- }
-
- /* Pre-flush X events */
- /*
- * NOTE: Apparently you'll freeze if you don't do this,
- * because there may be events in local data structures
- * already.
- */
- winClipboardFlushXEvents (hwnd,
- iWindow,
- pDisplay,
- fUseUnicode);
-
- /* Pre-flush Windows messages */
- if (!winClipboardFlushWindowsMessageQueue (hwnd))
- return 0;
-
- /* Signal that the clipboard client has started */
- g_fClipboardStarted = TRUE;
-
- /* Loop for X events */
- while (1)
- {
- /* Setup the file descriptor set */
- /*
- * NOTE: You have to do this before every call to select
- * because select modifies the mask to indicate
- * which descriptors are ready.
- */
- FD_ZERO (&fdsRead);
- FD_SET (iConnectionNumber, &fdsRead);
-#ifdef HAS_DEVWINDOWS
- FD_SET (fdMessageQueue, &fdsRead);
-#else
- tvTimeout.tv_sec = 0;
- tvTimeout.tv_usec = 100;
-#endif
-
- /* Wait for a Windows event or an X event */
- iReturn = select (iMaxDescriptor, /* Highest fds number */
- &fdsRead, /* Read mask */
- NULL, /* No write mask */
- NULL, /* No exception mask */
-#ifdef HAS_DEVWINDOWS
- NULL /* No timeout */
-#else
- &tvTimeout /* Set timeout */
-#endif
- );
-
-#ifndef HAS_WINSOCK
- iSelectError = errno;
-#else
- iSelectError = WSAGetLastError();
-#endif
-
- if (iReturn < 0)
- {
-#ifndef HAS_WINSOCK
- if (iSelectError == EINTR)
-#else
- if (iSelectError == WSAEINTR)
-#endif
- continue;
-
- ErrorF ("winClipboardProc - Call to select () failed: %d. "
- "Bailing.\n", iReturn);
- break;
- }
-
- /* Branch on which descriptor became active */
- if (FD_ISSET (iConnectionNumber, &fdsRead))
- {
- /* Process X events */
- /* Exit when we see that server is shutting down */
- iReturn = winClipboardFlushXEvents (hwnd,
- iWindow,
- pDisplay,
- fUseUnicode);
- if (WIN_XEVENTS_SHUTDOWN == iReturn)
- {
- ErrorF ("winClipboardProc - winClipboardFlushXEvents "
- "trapped shutdown event, exiting main loop.\n");
- break;
- }
- }
-
-#ifdef HAS_DEVWINDOWS
- /* Check for Windows event ready */
- if (FD_ISSET (fdMessageQueue, &fdsRead))
-#else
- if (1)
-#endif
- {
- /* Process Windows messages */
- if (!winClipboardFlushWindowsMessageQueue (hwnd))
- {
- ErrorF ("winClipboardProc - "
- "winClipboardFlushWindowsMessageQueue trapped "
- "WM_QUIT message, exiting main loop.\n");
- break;
- }
- }
- }
-
- /* Close our X window */
- if (pDisplay && iWindow)
- {
- iReturn = XDestroyWindow (pDisplay, iWindow);
- if (iReturn == BadWindow)
- ErrorF ("winClipboardProc - XDestroyWindow returned BadWindow.\n");
- else
- ErrorF ("winClipboardProc - XDestroyWindow succeeded.\n");
- }
-
-
-#ifdef HAS_DEVWINDOWS
- /* Close our Win32 message handle */
- if (fdMessageQueue)
- close (fdMessageQueue);
-#endif
-
-#if 0
- /*
- * FIXME: XCloseDisplay hangs if we call it, as of 2004/03/26. The
- * XSync and XSelectInput calls did not help.
- */
-
- /* Discard any remaining events */
- XSync (pDisplay, TRUE);
-
- /* Select event types to watch */
- XSelectInput (pDisplay,
- DefaultRootWindow (pDisplay),
- None);
-
- /* Close our X display */
- if (pDisplay)
- {
- XCloseDisplay (pDisplay);
- }
-#endif
-
- g_iClipboardWindow = None;
- g_pClipboardDisplay = NULL;
- g_hwndClipboard = NULL;
-
- return NULL;
-}
-
-
-/*
- * winClipboardErrorHandler - Our application specific error handler
- */
-
-static int
-winClipboardErrorHandler (Display *pDisplay, XErrorEvent *pErr)
-{
- char pszErrorMsg[100];
-
- XGetErrorText (pDisplay,
- pErr->error_code,
- pszErrorMsg,
- sizeof (pszErrorMsg));
- ErrorF ("winClipboardErrorHandler - ERROR: \n\t%s\n"
- "\tSerial: %d, Request Code: %d, Minor Code: %d\n",
- pszErrorMsg,
- pErr->serial,
- pErr->request_code,
- pErr->minor_code);
- return 0;
-}
-
-
-/*
- * winClipboardIOErrorHandler - Our application specific IO error handler
- */
-
-static int
-winClipboardIOErrorHandler (Display *pDisplay)
-{
- ErrorF ("\nwinClipboardIOErrorHandler!\n\n");
-
- /* Restart at the main entry point */
- longjmp (g_jmpEntry, WIN_JMP_ERROR_IO);
-
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winclipboardunicode.c b/nx-X11/programs/Xserver/hw/xwin/winclipboardunicode.c
deleted file mode 100644
index ba86915a4..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winclipboardunicode.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "winclipboard.h"
-
-
-/*
- * Determine whether we suport Unicode or not.
- * NOTE: Currently, just check if we are on an NT-based platform or not.
- */
-
-Bool
-winClipboardDetectUnicodeSupport (void)
-{
- Bool fReturn = FALSE;
- OSVERSIONINFO osvi = {0};
-
- /* Get operating system version information */
- osvi.dwOSVersionInfoSize = sizeof (osvi);
- GetVersionEx (&osvi);
-
- /* Branch on platform ID */
- switch (osvi.dwPlatformId)
- {
- case VER_PLATFORM_WIN32_NT:
- /* Unicode supported on NT only */
- ErrorF ("DetectUnicodeSupport - Windows NT/2000/XP\n");
- fReturn = TRUE;
- break;
-
- case VER_PLATFORM_WIN32_WINDOWS:
- /* Unicode is not supported on non-NT */
- ErrorF ("DetectUnicodeSupport - Windows 95/98/Me\n");
- fReturn = FALSE;
- break;
- }
-
- return fReturn;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winclipboardwndproc.c b/nx-X11/programs/Xserver/hw/xwin/winclipboardwndproc.c
deleted file mode 100644
index a006b46d3..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winclipboardwndproc.c
+++ /dev/null
@@ -1,585 +0,0 @@
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include <sys/types.h>
-#include <sys/time.h>
-#include "winclipboard.h"
-
-
-/*
- * Constants
- */
-
-#define WIN_CLIPBOARD_PROP "cyg_clipboard_prop"
-#define WIN_POLL_TIMEOUT 1
-
-
-/*
- * References to external symbols
- */
-
-extern Bool g_fUseUnicode;
-extern Bool g_fUnicodeSupport;
-extern void *g_pClipboardDisplay;
-extern Window g_iClipboardWindow;
-extern Atom g_atomLastOwnedSelection;
-
-
-/*
- * Local function prototypes
- */
-
-static Bool
-winProcessXEventsTimeout (HWND hwnd, int iWindow, Display *pDisplay,
- Bool fUseUnicode, int iTimeoutSec);
-
-
-/*
- * Process X events up to specified timeout
- */
-
-static int
-winProcessXEventsTimeout (HWND hwnd, int iWindow, Display *pDisplay,
- Bool fUseUnicode, int iTimeoutSec)
-{
- int iConnNumber;
- struct timeval tv;
- int iReturn;
- DWORD dwStopTime = (GetTickCount () / 1000) + iTimeoutSec;
-
- /* We need to ensure that all pending events are processed */
- XSync (pDisplay, FALSE);
-
- /* Get our connection number */
- iConnNumber = ConnectionNumber (pDisplay);
-
- /* Loop for X events */
- while (1)
- {
- fd_set fdsRead;
-
- /* Setup the file descriptor set */
- FD_ZERO (&fdsRead);
- FD_SET (iConnNumber, &fdsRead);
-
- /* Adjust timeout */
- tv.tv_sec = dwStopTime - (GetTickCount () / 1000);
- tv.tv_usec = 0;
-
- /* Break out if no time left */
- if (tv.tv_sec < 0)
- return WIN_XEVENTS_SUCCESS;
-
- /* Wait for a Windows event or an X event */
- iReturn = select (iConnNumber + 1,/* Highest fds number */
- &fdsRead, /* Read mask */
- NULL, /* No write mask */
- NULL, /* No exception mask */
- &tv); /* No timeout */
- if (iReturn <= 0)
- {
- ErrorF ("winProcessXEventsTimeout - Call to select () failed: %d. "
- "Bailing.\n", iReturn);
- break;
- }
-
- /* Branch on which descriptor became active */
- if (FD_ISSET (iConnNumber, &fdsRead))
- {
- /* Process X events */
- /* Exit when we see that server is shutting down */
- iReturn = winClipboardFlushXEvents (hwnd,
- iWindow,
- pDisplay,
- fUseUnicode);
- if (WIN_XEVENTS_NOTIFY == iReturn
- || WIN_XEVENTS_CONVERT == iReturn)
- {
- /* Bail out if convert or notify processed */
- return iReturn;
- }
- }
- }
-
- return WIN_XEVENTS_SUCCESS;
-}
-
-
-/*
- * Process a given Windows message
- */
-
-LRESULT CALLBACK
-winClipboardWindowProc (HWND hwnd, UINT message,
- WPARAM wParam, LPARAM lParam)
-{
- static HWND s_hwndNextViewer;
- static Bool s_fCBCInitialized;
-
- /* Branch on message type */
- switch (message)
- {
- case WM_DESTROY:
- {
- winDebug ("winClipboardWindowProc - WM_DESTROY\n");
-
- /* Remove ourselves from the clipboard chain */
- ChangeClipboardChain (hwnd, s_hwndNextViewer);
-
- s_hwndNextViewer = NULL;
-
- PostQuitMessage (0);
- }
- return 0;
-
-
- case WM_CREATE:
- {
- winDebug ("winClipboardWindowProc - WM_CREATE\n");
-
- /* Add ourselves to the clipboard viewer chain */
- s_hwndNextViewer = SetClipboardViewer (hwnd);
- if (s_hwndNextViewer == hwnd)
- {
- s_hwndNextViewer = NULL;
- winErrorFVerb (1, "winClipboardWindowProc - WM_CREATE: "
- "attempted to set next window to ourselves.");
- }
- }
- return 0;
-
-
- case WM_CHANGECBCHAIN:
- {
- static Bool s_fProcessingChangeCBChain = FALSE;
- winDebug ("winClipboardWindowProc - WM_CHANGECBCHAIN: wParam(%x) "
- "lParam(%x) s_hwndNextViewer(%x)\n",
- wParam, lParam, s_hwndNextViewer);
-
-
- /*
- * We've occasionally seen a loop in the clipboard chain. Break
- * it on the first hint of recursion.
- */
- if (! s_fProcessingChangeCBChain)
- {
- s_fProcessingChangeCBChain = TRUE;
- }
- else
- {
- winErrorFVerb (1, "winClipboardWindowProc - WM_CHANGECBCHAIN - "
- "Nested calls detected. Bailing.\n");
- winDebug ("winClipboardWindowProc - WM_CHANGECBCHAIN: Exit\n");
- return 0;
- }
-
- if ((HWND) wParam == s_hwndNextViewer)
- {
- s_hwndNextViewer = (HWND) lParam;
- if (s_hwndNextViewer == hwnd)
- {
- s_hwndNextViewer = NULL;
- winErrorFVerb (1, "winClipboardWindowProc - WM_CHANGECBCHAIN: "
- "attempted to set next window to ourselves.");
- }
- }
- else if (s_hwndNextViewer)
- SendMessage (s_hwndNextViewer, message,
- wParam, lParam);
-
- s_fProcessingChangeCBChain = FALSE;
- }
- winDebug ("winClipboardWindowProc - WM_CHANGECBCHAIN: Exit\n");
- return 0;
-
- case WM_WM_REINIT:
- {
- /* Ensure that we're in the clipboard chain. Some apps,
- * WinXP's remote desktop for one, don't play nice with the
- * chain. This message is called whenever we receive a
- * WM_ACTIVATEAPP message to ensure that we continue to
- * receive clipboard messages.
- *
- * It might be possible to detect if we're still in the chain
- * by calling SendMessage (GetClipboardViewer(),
- * WM_DRAWCLIPBOARD, 0, 0); and then seeing if we get the
- * WM_DRAWCLIPBOARD message. That, however, might be more
- * expensive than just putting ourselves back into the chain.
- */
-
- winDebug ("winClipboardWindowProc - WM_WM_REINIT: Enter\n");
- if (hwnd != GetClipboardViewer ())
- {
- winDebug (" WM_WM_REINIT: Replacing us(%x) with %x at head "
- "of chain\n", hwnd, s_hwndNextViewer);
- s_fCBCInitialized = FALSE;
- ChangeClipboardChain (hwnd, s_hwndNextViewer);
- s_hwndNextViewer = NULL;
- s_fCBCInitialized = FALSE;
- winDebug (" WM_WM_REINIT: Putting us back at head of chain.\n");
- s_hwndNextViewer = SetClipboardViewer (hwnd);
- if (s_hwndNextViewer == hwnd)
- {
- s_hwndNextViewer = NULL;
- winErrorFVerb (1, "winClipboardWindowProc - WM_WM_REINIT: "
- "attempted to set next window to ourselves.\n");
- }
- }
- else
- {
- winDebug (" WM_WM_REINIT: already at head of viewer chain.\n");
- }
- }
- winDebug ("winClipboardWindowProc - WM_WM_REINIT: Exit\n");
- return 0;
-
-
- case WM_DRAWCLIPBOARD:
- {
- static Bool s_fProcessingDrawClipboard = FALSE;
- Display *pDisplay = g_pClipboardDisplay;
- Window iWindow = g_iClipboardWindow;
- int iReturn;
-
- winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD: Enter\n");
-
- /*
- * We've occasionally seen a loop in the clipboard chain. Break
- * it on the first hint of recursion.
- */
- if (! s_fProcessingDrawClipboard)
- {
- s_fProcessingDrawClipboard = TRUE;
- }
- else
- {
- winErrorFVerb (1, "winClipboardWindowProc - WM_DRAWCLIPBOARD - "
- "Nested calls detected. Bailing.\n");
- winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD: Exit\n");
- return 0;
- }
-
- /* Pass the message on the next window in the clipboard viewer chain */
- if (s_hwndNextViewer)
- SendMessage (s_hwndNextViewer, message, 0, 0);
-
- /* Bail on first message */
- if (!s_fCBCInitialized)
- {
- s_fCBCInitialized = TRUE;
- s_fProcessingDrawClipboard = FALSE;
- winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD: Exit\n");
- return 0;
- }
-
- /*
- * NOTE: We cannot bail out when NULL == GetClipboardOwner ()
- * because some applications deal with the clipboard in a manner
- * that causes the clipboard owner to be NULL when they are in
- * fact taking ownership. One example of this is the Win32
- * native compile of emacs.
- */
-
- /* Bail when we still own the clipboard */
- if (hwnd == GetClipboardOwner ())
- {
-
- winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD - "
- "We own the clipboard, returning.\n");
- winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD: Exit\n");
- s_fProcessingDrawClipboard = FALSE;
- return 0;
- }
-
- /*
- * Do not take ownership of the X11 selections when something
- * other than CF_TEXT or CF_UNICODETEXT has been copied
- * into the Win32 clipboard.
- */
- if (!IsClipboardFormatAvailable (CF_TEXT)
- && !IsClipboardFormatAvailable (CF_UNICODETEXT))
- {
-
- winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD - "
- "Clipboard does not contain CF_TEXT nor "
- "CF_UNICODETEXT.\n");
-
- /*
- * We need to make sure that the X Server has processed
- * previous XSetSelectionOwner messages.
- */
- XSync (pDisplay, FALSE);
-
- winDebug("winClipboardWindowProc - XSync done.\n");
-
- /* Release PRIMARY selection if owned */
- iReturn = XGetSelectionOwner (pDisplay, XA_PRIMARY);
- if (iReturn == g_iClipboardWindow)
- {
- winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD - "
- "PRIMARY selection is owned by us.\n");
- XSetSelectionOwner (pDisplay,
- XA_PRIMARY,
- None,
- CurrentTime);
- }
- else if (BadWindow == iReturn || BadAtom == iReturn)
- winErrorFVerb (1, "winClipboardWindowProc - WM_DRAWCLIPBOARD - "
- "XGetSelection failed for PRIMARY: %d\n", iReturn);
-
- /* Release CLIPBOARD selection if owned */
- iReturn = XGetSelectionOwner (pDisplay,
- XInternAtom (pDisplay,
- "CLIPBOARD",
- False));
- if (iReturn == g_iClipboardWindow)
- {
- winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD - "
- "CLIPBOARD selection is owned by us.\n");
- XSetSelectionOwner (pDisplay,
- XInternAtom (pDisplay,
- "CLIPBOARD",
- False),
- None,
- CurrentTime);
- }
- else if (BadWindow == iReturn || BadAtom == iReturn)
- winErrorFVerb (1, "winClipboardWindowProc - WM_DRAWCLIPBOARD - "
- "XGetSelection failed for CLIPBOARD: %d\n", iReturn);
-
- winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD: Exit\n");
- s_fProcessingDrawClipboard = FALSE;
- return 0;
- }
-
- /* Reassert ownership of PRIMARY */
- iReturn = XSetSelectionOwner (pDisplay,
- XA_PRIMARY,
- iWindow,
- CurrentTime);
- if (iReturn == BadAtom || iReturn == BadWindow)
- {
- winErrorFVerb (1, "winClipboardWindowProc - WM_DRAWCLIPBOARD - "
- "Could not reassert ownership of PRIMARY\n");
- }
- else
- {
- winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD - "
- "Reasserted ownership of PRIMARY\n");
- }
-
- /* Reassert ownership of the CLIPBOARD */
- iReturn = XSetSelectionOwner (pDisplay,
- XInternAtom (pDisplay,
- "CLIPBOARD",
- False),
- iWindow,
- CurrentTime);
- if (iReturn == BadAtom || iReturn == BadWindow)
- {
- winErrorFVerb (1, "winClipboardWindowProc - WM_DRAWCLIPBOARD - "
- "Could not reassert ownership of CLIPBOARD\n");
- }
- else
- {
- winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD - "
- "Reasserted ownership of CLIPBOARD\n");
- }
-
- /* Flush the pending SetSelectionOwner event now */
- XFlush (pDisplay);
-
- s_fProcessingDrawClipboard = FALSE;
- }
- winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD: Exit\n");
- return 0;
-
-
- case WM_DESTROYCLIPBOARD:
- /*
- * NOTE: Intentionally do nothing.
- * Changes in the Win32 clipboard are handled by WM_DRAWCLIPBOARD
- * above. We only process this message to conform to the specs
- * for delayed clipboard rendering in Win32. You might think
- * that we need to release ownership of the X11 selections, but
- * we do not, because a WM_DRAWCLIPBOARD message will closely
- * follow this message and reassert ownership of the X11
- * selections, handling the issue for us.
- */
- return 0;
-
-
- case WM_RENDERFORMAT:
- case WM_RENDERALLFORMATS:
- {
- int iReturn;
- Display *pDisplay = g_pClipboardDisplay;
- Window iWindow = g_iClipboardWindow;
- Bool fConvertToUnicode;
-
- winDebug ("winClipboardWindowProc - WM_RENDER*FORMAT - Hello.\n");
-
- /* Flag whether to convert to Unicode or not */
- if (message == WM_RENDERALLFORMATS)
- fConvertToUnicode = FALSE;
- else
- fConvertToUnicode = g_fUnicodeSupport && (CF_UNICODETEXT == wParam);
-
- /* Request the selection contents */
- iReturn = XConvertSelection (pDisplay,
- g_atomLastOwnedSelection,
- XInternAtom (pDisplay,
- "COMPOUND_TEXT", False),
- XInternAtom (pDisplay,
- "CYGX_CUT_BUFFER", False),
- iWindow,
- CurrentTime);
- if (iReturn == BadAtom || iReturn == BadWindow)
- {
- winErrorFVerb (1, "winClipboardWindowProc - WM_RENDER*FORMAT - "
- "XConvertSelection () failed\n");
- break;
- }
-
- /* Special handling for WM_RENDERALLFORMATS */
- if (message == WM_RENDERALLFORMATS)
- {
- /* We must open and empty the clipboard */
-
- /* Close clipboard if we have it open already */
- if (GetOpenClipboardWindow () == hwnd)
- {
- CloseClipboard ();
- }
-
- if (!OpenClipboard (hwnd))
- {
- winErrorFVerb (1, "winClipboardWindowProc - WM_RENDER*FORMATS - "
- "OpenClipboard () failed: %08x\n",
- GetLastError ());
- break;
- }
-
- if (!EmptyClipboard ())
- {
- winErrorFVerb (1, "winClipboardWindowProc - WM_RENDER*FORMATS - "
- "EmptyClipboard () failed: %08x\n",
- GetLastError ());
- break;
- }
- }
-
- /* Process the SelectionNotify event */
- iReturn = winProcessXEventsTimeout (hwnd,
- iWindow,
- pDisplay,
- fConvertToUnicode,
- WIN_POLL_TIMEOUT);
- if (WIN_XEVENTS_CONVERT == iReturn)
- {
- /*
- * The selection was offered for conversion first, so we have
- * to process a second SelectionNotify event to get the actual
- * data in the selection.
- */
- iReturn = winProcessXEventsTimeout (hwnd,
- iWindow,
- pDisplay,
- fConvertToUnicode,
- WIN_POLL_TIMEOUT);
- }
-
- /*
- * The last of the up-to two calls to winProcessXEventsTimeout
- * from above had better have seen a notify event, or else we
- * are dealing with a buggy or old X11 app. In these cases we
- * have to paste some fake data to the Win32 clipboard to
- * satisfy the requirement that we write something to it.
- */
- if (WIN_XEVENTS_NOTIFY != iReturn)
- {
- /* Paste no data, to satisfy required call to SetClipboardData */
- if (g_fUnicodeSupport)
- SetClipboardData (CF_UNICODETEXT, NULL);
- SetClipboardData (CF_TEXT, NULL);
- }
-
- /* Special handling for WM_RENDERALLFORMATS */
- if (message == WM_RENDERALLFORMATS)
- {
- /* We must close the clipboard */
-
- if (!CloseClipboard ())
- {
- winErrorFVerb (1, "winClipboardWindowProc - WM_RENDERALLFORMATS - "
- "CloseClipboard () failed: %08x\n",
- GetLastError ());
- break;
- }
- }
-
- winDebug ("winClipboardWindowProc - WM_RENDER*FORMAT - Returning.\n");
- return 0;
- }
- }
-
- /* Let Windows perform default processing for unhandled messages */
- return DefWindowProc (hwnd, message, wParam, lParam);
-}
-
-
-/*
- * Process any pending Windows messages
- */
-
-BOOL
-winClipboardFlushWindowsMessageQueue (HWND hwnd)
-{
- MSG msg;
-
- /* Flush the messaging window queue */
- /* NOTE: Do not pass the hwnd of our messaging window to PeekMessage,
- * as this will filter out many non-window-specific messages that
- * are sent to our thread, such as WM_QUIT.
- */
- while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
- {
- /* Dispatch the message if not WM_QUIT */
- if (msg.message == WM_QUIT)
- return FALSE;
- else
- DispatchMessage (&msg);
- }
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winclipboardwrappers.c b/nx-X11/programs/Xserver/hw/xwin/winclipboardwrappers.c
deleted file mode 100755
index 8801f6c42..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winclipboardwrappers.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "dixstruct.h"
-#include <X11/Xatom.h>
-
-
-/*
- * Constants
- */
-
-#define CLIP_NUM_SELECTIONS 2
-#define CLIP_OWN_PRIMARY 0
-#define CLIP_OWN_CLIPBOARD 1
-
-
-/*
- * Local function prototypes
- */
-
-DISPATCH_PROC(winProcEstablishConnection);
-DISPATCH_PROC(winProcQueryTree);
-DISPATCH_PROC(winProcSetSelectionOwner);
-
-
-/*
- * References to external symbols
- */
-
-extern Bool g_fUnicodeSupport;
-extern int g_iNumScreens;
-extern unsigned int g_uiAuthDataLen;
-extern char *g_pAuthData;
-extern Bool g_fXdmcpEnabled;
-extern Bool g_fClipboardLaunched;
-extern Bool g_fClipboardStarted;
-extern Bool g_fClipboard;
-extern Window g_iClipboardWindow;
-extern Atom g_atomLastOwnedSelection;
-extern HWND g_hwndClipboard;
-
-extern winDispatchProcPtr winProcEstablishConnectionOrig;
-extern winDispatchProcPtr winProcQueryTreeOrig;
-extern winDispatchProcPtr winProcSetSelectionOwnerOrig;
-
-
-/*
- * Wrapper for internal QueryTree function.
- * Hides the clipboard client when it is the only client remaining.
- */
-
-int
-winProcQueryTree (ClientPtr client)
-{
- int iReturn;
-
- /*
- * This procedure is only used for initialization.
- * We can unwrap the original procedure at this point
- * so that this function is no longer called until the
- * server resets and the function is wrapped again.
- */
- ProcVector[X_QueryTree] = winProcQueryTreeOrig;
-
- /*
- * Call original function and bail if it fails.
- * NOTE: We must do this first, since we need XdmcpOpenDisplay
- * to be called before we initialize our clipboard client.
- */
- iReturn = (*winProcQueryTreeOrig) (client);
- if (iReturn != 0)
- {
- ErrorF ("winProcQueryTree - ProcQueryTree failed, bailing.\n");
- return iReturn;
- }
-
- /* Make errors more obvious */
- winProcQueryTreeOrig = NULL;
-
- /* Do nothing if clipboard is not enabled */
- if (!g_fClipboard)
- {
- ErrorF ("winProcQueryTree - Clipboard is not enabled, "
- "returning.\n");
- return iReturn;
- }
-
- /* If the clipboard client has already been started, abort */
- if (g_fClipboardLaunched)
- {
- ErrorF ("winProcQueryTree - Clipboard client already "
- "launched, returning.\n");
- return iReturn;
- }
-
- /* Startup the clipboard client if clipboard mode is being used */
- if (g_fXdmcpEnabled && g_fClipboard)
- {
- /*
- * NOTE: The clipboard client is started here for a reason:
- * 1) Assume you are using XDMCP (e.g. XWin -query %hostname%)
- * 2) If the clipboard client attaches during X Server startup,
- * then it becomes the "magic client" that causes the X Server
- * to reset if it exits.
- * 3) XDMCP calls KillAllClients when it starts up.
- * 4) The clipboard client is a client, so it is killed.
- * 5) The clipboard client is the "magic client", so the X Server
- * resets itself.
- * 6) This repeats ad infinitum.
- * 7) We avoid this by waiting until at least one client (could
- * be XDM, could be another client) connects, which makes it
- * almost certain that the clipboard client will not connect
- * until after XDM when using XDMCP.
- * 8) Unfortunately, there is another problem.
- * 9) XDM walks the list of windows with XQueryTree,
- * killing any client it finds with a window.
- * 10)Thus, when using XDMCP we wait until the first call
- * to ProcQueryTree before we startup the clipboard client.
- * This should prevent XDM from finding the clipboard client,
- * since it has not yet created a window.
- * 11)Startup when not using XDMCP is handled in
- * winProcEstablishConnection.
- */
-
- /* Create the clipboard client thread */
- if (!winInitClipboard ())
- {
- ErrorF ("winProcQueryTree - winClipboardInit "
- "failed.\n");
- return iReturn;
- }
-
- ErrorF ("winProcQueryTree - winInitClipboard returned.\n");
- }
-
- /* Flag that clipboard client has been launched */
- g_fClipboardLaunched = TRUE;
-
- return iReturn;
-}
-
-
-/*
- * Wrapper for internal EstablishConnection function.
- * Initializes internal clients that must not be started until
- * an external client has connected.
- */
-
-int
-winProcEstablishConnection (ClientPtr client)
-{
- int iReturn;
- static int s_iCallCount = 0;
- static unsigned long s_ulServerGeneration = 0;
-
- ErrorF ("winProcEstablishConnection - Hello\n");
-
- /* Do nothing if clipboard is not enabled */
- if (!g_fClipboard)
- {
- ErrorF ("winProcEstablishConnection - Clipboard is not enabled, "
- "returning.\n");
-
- /* Unwrap the original function, call it, and return */
- InitialVector[2] = winProcEstablishConnectionOrig;
- iReturn = (*winProcEstablishConnectionOrig) (client);
- winProcEstablishConnectionOrig = NULL;
- return iReturn;
- }
-
- /* Watch for server reset */
- if (s_ulServerGeneration != serverGeneration)
- {
- /* Save new generation number */
- s_ulServerGeneration = serverGeneration;
-
- /* Reset call count */
- s_iCallCount = 0;
- }
-
- /* Increment call count */
- ++s_iCallCount;
-
- /* Wait for second call when Xdmcp is enabled */
- if (g_fXdmcpEnabled
- && !g_fClipboardLaunched
- && s_iCallCount < 4)
- {
- ErrorF ("winProcEstablishConnection - Xdmcp enabled, waiting to "
- "start clipboard client until fourth call.\n");
- return (*winProcEstablishConnectionOrig) (client);
- }
-
- /*
- * This procedure is only used for initialization.
- * We can unwrap the original procedure at this point
- * so that this function is no longer called until the
- * server resets and the function is wrapped again.
- */
- InitialVector[2] = winProcEstablishConnectionOrig;
-
- /*
- * Call original function and bail if it fails.
- * NOTE: We must do this first, since we need XdmcpOpenDisplay
- * to be called before we initialize our clipboard client.
- */
- iReturn = (*winProcEstablishConnectionOrig) (client);
- if (iReturn != 0)
- {
- ErrorF ("winProcEstablishConnection - ProcEstablishConnection "
- "failed, bailing.\n");
- return iReturn;
- }
-
- /* Clear original function pointer */
- winProcEstablishConnectionOrig = NULL;
-
- /* If the clipboard client has already been started, abort */
- if (g_fClipboardLaunched)
- {
- ErrorF ("winProcEstablishConnection - Clipboard client already "
- "launched, returning.\n");
- return iReturn;
- }
-
- /* Startup the clipboard client if clipboard mode is being used */
- if (g_fClipboard)
- {
- /*
- * NOTE: The clipboard client is started here for a reason:
- * 1) Assume you are using XDMCP (e.g. XWin -query %hostname%)
- * 2) If the clipboard client attaches during X Server startup,
- * then it becomes the "magic client" that causes the X Server
- * to reset if it exits.
- * 3) XDMCP calls KillAllClients when it starts up.
- * 4) The clipboard client is a client, so it is killed.
- * 5) The clipboard client is the "magic client", so the X Server
- * resets itself.
- * 6) This repeats ad infinitum.
- * 7) We avoid this by waiting until at least one client (could
- * be XDM, could be another client) connects, which makes it
- * almost certain that the clipboard client will not connect
- * until after XDM when using XDMCP.
- * 8) Unfortunately, there is another problem.
- * 9) XDM walks the list of windows with XQueryTree,
- * killing any client it finds with a window.
- * 10)Thus, when using XDMCP we wait until the second call
- * to ProcEstablishCeonnection before we startup the clipboard
- * client. This should prevent XDM from finding the clipboard
- * client, since it has not yet created a window.
- */
-
- /* Create the clipboard client thread */
- if (!winInitClipboard ())
- {
- ErrorF ("winProcEstablishConnection - winClipboardInit "
- "failed.\n");
- return iReturn;
- }
-
- ErrorF ("winProcEstablishConnection - winInitClipboard returned.\n");
- }
-
- /* Flag that clipboard client has been launched */
- g_fClipboardLaunched = TRUE;
-
- return iReturn;
-}
-
-
-/*
- * Wrapper for internal SetSelectionOwner function.
- * Grabs ownership of Windows clipboard when X11 clipboard owner changes.
- */
-
-int
-winProcSetSelectionOwner (ClientPtr client)
-{
- int i;
- DrawablePtr pDrawable;
- WindowPtr pWindow = None;
- Bool fOwnedToNotOwned = FALSE;
- static Window s_iOwners[CLIP_NUM_SELECTIONS] = {None};
- static unsigned long s_ulServerGeneration = 0;
- REQUEST(xSetSelectionOwnerReq);
-
- REQUEST_SIZE_MATCH(xSetSelectionOwnerReq);
-
-#if 0
- ErrorF ("winProcSetSelectionOwner - Hello.\n");
-#endif
-
- /* Watch for server reset */
- if (s_ulServerGeneration != serverGeneration)
- {
- /* Save new generation number */
- s_ulServerGeneration = serverGeneration;
-
- /* Initialize static variables */
- for (i = 0; i < CLIP_NUM_SELECTIONS; ++i)
- s_iOwners[i] = None;
- }
-
- /* Abort if clipboard not completely initialized yet */
- if (!g_fClipboardStarted)
- {
- ErrorF ("winProcSetSelectionOwner - Clipboard not yet started, "
- "aborting.\n");
- goto winProcSetSelectionOwner_Done;
- }
-
- /* Grab window if we have one */
- if (None != stuff->window)
- {
- /* Grab the Window from the request */
- pWindow = (WindowPtr) SecurityLookupWindow (stuff->window, client,
- SecurityReadAccess);
- if (!pWindow)
- {
- ErrorF ("winProcSetSelectionOwner - Found BadWindow, aborting.\n");
- goto winProcSetSelectionOwner_Done;
- }
- }
-
- /* Now we either have a valid window or None */
-
- /* Save selection owners for monitored selections, ignore other selections */
- if (XA_PRIMARY == stuff->selection)
- {
- /* Look for owned -> not owned transition */
- if (None == stuff->window
- && None != s_iOwners[CLIP_OWN_PRIMARY])
- {
- fOwnedToNotOwned = TRUE;
-
-#if 0
- ErrorF ("winProcSetSelectionOwner - PRIMARY - Going from "
- "owned to not owned.\n");
-#endif
-
- /* Adjust last owned selection */
- if (None != s_iOwners[CLIP_OWN_CLIPBOARD])
- g_atomLastOwnedSelection = MakeAtom ("CLIPBOARD", 9, TRUE);
- else
- g_atomLastOwnedSelection = None;
- }
-
- /* Save new selection owner or None */
- s_iOwners[CLIP_OWN_PRIMARY] = stuff->window;
-
-#if 0
- ErrorF ("winProcSetSelectionOwner - PRIMARY - Now owned by: %d\n",
- stuff->window);
-#endif
- }
- else if (MakeAtom ("CLIPBOARD", 9, TRUE) == stuff->selection)
- {
- /* Look for owned -> not owned transition */
- if (None == stuff->window
- && None != s_iOwners[CLIP_OWN_CLIPBOARD])
- {
- fOwnedToNotOwned = TRUE;
-
-#if 0
- ErrorF ("winProcSetSelectionOwner - CLIPBOARD - Going from "
- "owned to not owned.\n");
-#endif
-
- /* Adjust last owned selection */
- if (None != s_iOwners[CLIP_OWN_PRIMARY])
- g_atomLastOwnedSelection = XA_PRIMARY;
- else
- g_atomLastOwnedSelection = None;
- }
-
- /* Save new selection owner or None */
- s_iOwners[CLIP_OWN_CLIPBOARD] = stuff->window;
-
-#if 0
- ErrorF ("winProcSetSelectionOwner - CLIPBOARD - Now owned by: %d\n",
- stuff->window);
-#endif
- }
- else
- goto winProcSetSelectionOwner_Done;
-
- /*
- * At this point, if one of the selections is still owned by the
- * clipboard manager then it should be marked as unowned since
- * we will be taking ownership of the Win32 clipboard.
- */
- if (g_iClipboardWindow == s_iOwners[CLIP_OWN_PRIMARY])
- s_iOwners[CLIP_OWN_PRIMARY] = None;
- if (g_iClipboardWindow == s_iOwners[CLIP_OWN_CLIPBOARD])
- s_iOwners[CLIP_OWN_CLIPBOARD] = None;
-
- /*
- * Handle case when selection is being disowned,
- * WM_DRAWCLIPBOARD did not do the disowning,
- * both monitored selections are no longer owned,
- * an owned to not owned transition was detected,
- * and we currently own the Win32 clipboard.
- */
- if (None == stuff->window
- && g_iClipboardWindow != client->lastDrawableID
- && (None == s_iOwners[CLIP_OWN_PRIMARY]
- || g_iClipboardWindow == s_iOwners[CLIP_OWN_PRIMARY])
- && (None == s_iOwners[CLIP_OWN_CLIPBOARD]
- || g_iClipboardWindow == s_iOwners[CLIP_OWN_CLIPBOARD])
- && fOwnedToNotOwned
- && g_hwndClipboard != NULL
- && g_hwndClipboard == GetClipboardOwner ())
- {
-#if 0
- ErrorF ("winProcSetSelectionOwner - We currently own the "
- "clipboard and neither the PRIMARY nor the CLIPBOARD "
- "selections are owned, releasing ownership of Win32 "
- "clipboard.\n");
-#endif
-
- /* Release ownership of the Windows clipboard */
- OpenClipboard (NULL);
- EmptyClipboard ();
- CloseClipboard ();
-
- /* Clear X selection ownership (might still be marked as us owning) */
- s_iOwners[CLIP_OWN_PRIMARY] = None;
- s_iOwners[CLIP_OWN_CLIPBOARD] = None;
-
- goto winProcSetSelectionOwner_Done;
- }
-
- /* Abort if no window at this point */
- if (None == stuff->window)
- {
-#if 0
- ErrorF ("winProcSetSelectionOwner - No window, returning.\n");
-#endif
- goto winProcSetSelectionOwner_Done;
- }
-
- /* Abort if invalid selection */
- if (!ValidAtom (stuff->selection))
- {
- ErrorF ("winProcSetSelectionOwner - Found BadAtom, aborting.\n");
- goto winProcSetSelectionOwner_Done;
- }
-
- /* Cast Window to Drawable */
- pDrawable = (DrawablePtr) pWindow;
-
- /* Abort if clipboard manager is owning the selection */
- if (pDrawable->id == g_iClipboardWindow)
- {
-#if 0
- ErrorF ("winProcSetSelectionOwner - We changed ownership, "
- "aborting.\n");
-#endif
- goto winProcSetSelectionOwner_Done;
- }
-
- /* Abort if root window is taking ownership */
- if (pDrawable->id == 0)
- {
- ErrorF ("winProcSetSelectionOwner - Root window taking ownership, "
- "aborting\n");
- goto winProcSetSelectionOwner_Done;
- }
-
- /* Close clipboard if we have it open already */
- if (GetOpenClipboardWindow () == g_hwndClipboard)
- {
- CloseClipboard ();
- }
-
- /* Access the Windows clipboard */
- if (!OpenClipboard (g_hwndClipboard))
- {
- ErrorF ("winProcSetSelectionOwner - OpenClipboard () failed: %08x\n",
- (int) GetLastError ());
- goto winProcSetSelectionOwner_Done;
- }
-
- /* Take ownership of the Windows clipboard */
- if (!EmptyClipboard ())
- {
- ErrorF ("winProcSetSelectionOwner - EmptyClipboard () failed: %08x\n",
- (int) GetLastError ());
- goto winProcSetSelectionOwner_Done;
- }
-
- /* Advertise Unicode if we support it */
- if (g_fUnicodeSupport)
- SetClipboardData (CF_UNICODETEXT, NULL);
-
- /* Always advertise regular text */
- SetClipboardData (CF_TEXT, NULL);
-
- /* Save handle to last owned selection */
- g_atomLastOwnedSelection = stuff->selection;
-
- /* Release the clipboard */
- if (!CloseClipboard ())
- {
- ErrorF ("winProcSetSelectionOwner - CloseClipboard () failed: "
- "%08x\n",
- (int) GetLastError ());
- goto winProcSetSelectionOwner_Done;
- }
-
- winProcSetSelectionOwner_Done:
- return (*winProcSetSelectionOwnerOrig) (client);
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winclipboardxevents.c b/nx-X11/programs/Xserver/hw/xwin/winclipboardxevents.c
deleted file mode 100644
index d4c617bec..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winclipboardxevents.c
+++ /dev/null
@@ -1,796 +0,0 @@
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "winclipboard.h"
-
-
-/*
- * References to external symbols
- */
-
-extern Bool g_fUnicodeSupport;
-
-
-/*
- * Process any pending X events
- */
-
-int
-winClipboardFlushXEvents (HWND hwnd,
- int iWindow,
- Display *pDisplay,
- Bool fUseUnicode)
-{
- Atom atomLocalProperty = XInternAtom (pDisplay,
- WIN_LOCAL_PROPERTY,
- False);
- Atom atomUTF8String = XInternAtom (pDisplay,
- "UTF8_STRING",
- False);
- Atom atomCompoundText = XInternAtom (pDisplay,
- "COMPOUND_TEXT",
- False);
- Atom atomTargets = XInternAtom (pDisplay,
- "TARGETS",
- False);
-
- /* Process all pending events */
- while (XPending (pDisplay))
- {
- XTextProperty xtpText = {0};
- XEvent event;
- XSelectionEvent eventSelection;
- unsigned long ulReturnBytesLeft;
- unsigned char *pszReturnData = NULL;
- char *pszGlobalData = NULL;
- int iReturn;
- HGLOBAL hGlobal = NULL;
- XICCEncodingStyle xiccesStyle;
- int iConvertDataLen = 0;
- char *pszConvertData = NULL;
- char *pszTextList[2] = {NULL};
- int iCount;
- char **ppszTextList = NULL;
- wchar_t *pwszUnicodeStr = NULL;
- int iUnicodeLen = 0;
- int iReturnDataLen = 0;
- int i;
- Bool fAbort = FALSE;
- Bool fCloseClipboard = FALSE;
- Bool fSetClipboardData = TRUE;
-
- /* Get the next event - will not block because one is ready */
- XNextEvent (pDisplay, &event);
-
- /* Branch on the event type */
- switch (event.type)
- {
- /*
- * SelectionRequest
- */
-
- case SelectionRequest:
-#if 0
- {
- char *pszAtomName = NULL;
-
- ErrorF ("SelectionRequest - target %d\n",
- event.xselectionrequest.target);
-
- pszAtomName = XGetAtomName (pDisplay,
- event.xselectionrequest.target);
- ErrorF ("SelectionRequest - Target atom name %s\n", pszAtomName);
- XFree (pszAtomName);
- pszAtomName = NULL;
- }
-#endif
-
- /* Abort if invalid target type */
- if (event.xselectionrequest.target != XA_STRING
- && event.xselectionrequest.target != atomUTF8String
- && event.xselectionrequest.target != atomCompoundText
- && event.xselectionrequest.target != atomTargets)
- {
- /* Abort */
- fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionRequest_Done;
- }
-
- /* Handle targets type of request */
- if (event.xselectionrequest.target == atomTargets)
- {
- Atom atomTargetArr[] = {atomTargets,
- atomCompoundText,
- atomUTF8String,
- XA_STRING};
-
- /* Try to change the property */
- iReturn = XChangeProperty (pDisplay,
- event.xselectionrequest.requestor,
- event.xselectionrequest.property,
- XA_ATOM,
- 32,
- PropModeReplace,
- (unsigned char *) atomTargetArr,
- (sizeof (atomTargetArr)
- / sizeof (atomTargetArr[0])));
- if (iReturn == BadAlloc
- || iReturn == BadAtom
- || iReturn == BadMatch
- || iReturn == BadValue
- || iReturn == BadWindow)
- {
- ErrorF ("winClipboardFlushXEvents - SelectionRequest - "
- "XChangeProperty failed: %d\n",
- iReturn);
- }
-
- /* Setup selection notify xevent */
- eventSelection.type = SelectionNotify;
- eventSelection.send_event = True;
- eventSelection.display = pDisplay;
- eventSelection.requestor = event.xselectionrequest.requestor;
- eventSelection.selection = event.xselectionrequest.selection;
- eventSelection.target = event.xselectionrequest.target;
- eventSelection.property = event.xselectionrequest.property;
- eventSelection.time = event.xselectionrequest.time;
-
- /*
- * Notify the requesting window that
- * the operation has completed
- */
- iReturn = XSendEvent (pDisplay,
- eventSelection.requestor,
- False,
- 0L,
- (XEvent *) &eventSelection);
- if (iReturn == BadValue || iReturn == BadWindow)
- {
- ErrorF ("winClipboardFlushXEvents - SelectionRequest - "
- "XSendEvent () failed\n");
- }
- break;
- }
-
- /* Check that clipboard format is available */
- if (fUseUnicode
- && !IsClipboardFormatAvailable (CF_UNICODETEXT))
- {
- ErrorF ("winClipboardFlushXEvents - CF_UNICODETEXT is not "
- "available from Win32 clipboard. Aborting.\n");
-
- /* Abort */
- fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionRequest_Done;
- }
- else if (!fUseUnicode
- && !IsClipboardFormatAvailable (CF_TEXT))
- {
- ErrorF ("winClipboardFlushXEvents - CF_TEXT is not "
- "available from Win32 clipboard. Aborting.\n");
-
- /* Abort */
- fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionRequest_Done;
- }
-
- /* Close clipboard if we have it open already */
- if (GetOpenClipboardWindow () == hwnd)
- {
- CloseClipboard ();
- }
-
- /* Access the clipboard */
- if (!OpenClipboard (hwnd))
- {
- ErrorF ("winClipboardFlushXEvents - SelectionRequest - "
- "OpenClipboard () failed: %08x\n",
- GetLastError ());
-
- /* Abort */
- fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionRequest_Done;
- }
-
- /* Indicate that clipboard was opened */
- fCloseClipboard = TRUE;
-
- /* Setup the string style */
- if (event.xselectionrequest.target == XA_STRING)
- xiccesStyle = XStringStyle;
-#ifdef X_HAVE_UTF8_STRING
- else if (event.xselectionrequest.target == atomUTF8String)
- xiccesStyle = XUTF8StringStyle;
-#endif
- else if (event.xselectionrequest.target == atomCompoundText)
- xiccesStyle = XCompoundTextStyle;
- else
- xiccesStyle = XStringStyle;
-
- /*
- * FIXME: Can't pass CF_UNICODETEXT on Windows 95/98/Me
- */
-
- /* Get a pointer to the clipboard text, in desired format */
- if (fUseUnicode)
- {
- /* Retrieve clipboard data */
- hGlobal = GetClipboardData (CF_UNICODETEXT);
- }
- else
- {
- /* Retrieve clipboard data */
- hGlobal = GetClipboardData (CF_TEXT);
- }
- if (!hGlobal)
- {
- ErrorF ("winClipboardFlushXEvents - SelectionRequest - "
- "GetClipboardData () failed: %08x\n",
- GetLastError ());
-
- /* Abort */
- fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionRequest_Done;
- }
- pszGlobalData = (char *) GlobalLock (hGlobal);
-
- /* Convert the Unicode string to UTF8 (MBCS) */
- if (fUseUnicode)
- {
- iConvertDataLen = WideCharToMultiByte (CP_UTF8,
- 0,
- (LPCWSTR)pszGlobalData,
- -1,
- NULL,
- 0,
- NULL,
- NULL);
- /* NOTE: iConvertDataLen includes space for null terminator */
- pszConvertData = (char *) malloc (iConvertDataLen);
- WideCharToMultiByte (CP_UTF8,
- 0,
- (LPCWSTR)pszGlobalData,
- -1,
- pszConvertData,
- iConvertDataLen,
- NULL,
- NULL);
- }
- else
- {
- pszConvertData = strdup (pszGlobalData);
- iConvertDataLen = strlen (pszConvertData) + 1;
- }
-
- /* Convert DOS string to UNIX string */
- winClipboardDOStoUNIX (pszConvertData, strlen (pszConvertData));
-
- /* Setup our text list */
- pszTextList[0] = pszConvertData;
- pszTextList[1] = NULL;
-
- /* Initialize the text property */
- xtpText.value = NULL;
-
- /* Create the text property from the text list */
- if (fUseUnicode)
- {
-#ifdef X_HAVE_UTF8_STRING
- iReturn = Xutf8TextListToTextProperty (pDisplay,
- pszTextList,
- 1,
- xiccesStyle,
- &xtpText);
-#endif
- }
- else
- {
- iReturn = XmbTextListToTextProperty (pDisplay,
- pszTextList,
- 1,
- xiccesStyle,
- &xtpText);
- }
- if (iReturn == XNoMemory || iReturn == XLocaleNotSupported)
- {
- ErrorF ("winClipboardFlushXEvents - SelectionRequest - "
- "X*TextListToTextProperty failed: %d\n",
- iReturn);
-
- /* Abort */
- fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionRequest_Done;
- }
-
- /* Free the converted string */
- free (pszConvertData);
- pszConvertData = NULL;
-
- /* Copy the clipboard text to the requesting window */
- iReturn = XChangeProperty (pDisplay,
- event.xselectionrequest.requestor,
- event.xselectionrequest.property,
- event.xselectionrequest.target,
- 8,
- PropModeReplace,
- xtpText.value,
- xtpText.nitems);
- if (iReturn == BadAlloc || iReturn == BadAtom
- || iReturn == BadMatch || iReturn == BadValue
- || iReturn == BadWindow)
- {
- ErrorF ("winClipboardFlushXEvents - SelectionRequest - "
- "XChangeProperty failed: %d\n",
- iReturn);
-
- /* Abort */
- fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionRequest_Done;
- }
-
- /* Release the clipboard data */
- GlobalUnlock (hGlobal);
- pszGlobalData = NULL;
-
- /* Clean up */
- XFree (xtpText.value);
- xtpText.value = NULL;
-
- /* Setup selection notify event */
- eventSelection.type = SelectionNotify;
- eventSelection.send_event = True;
- eventSelection.display = pDisplay;
- eventSelection.requestor = event.xselectionrequest.requestor;
- eventSelection.selection = event.xselectionrequest.selection;
- eventSelection.target = event.xselectionrequest.target;
- eventSelection.property = event.xselectionrequest.property;
- eventSelection.time = event.xselectionrequest.time;
-
- /* Notify the requesting window that the operation has completed */
- iReturn = XSendEvent (pDisplay,
- eventSelection.requestor,
- False,
- 0L,
- (XEvent *) &eventSelection);
- if (iReturn == BadValue || iReturn == BadWindow)
- {
- ErrorF ("winClipboardFlushXEvents - SelectionRequest - "
- "XSendEvent () failed\n");
-
- /* Abort */
- fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionRequest_Done;
- }
-
- winClipboardFlushXEvents_SelectionRequest_Done:
- /* Free allocated resources */
- if (xtpText.value)
- XFree (xtpText.value);
- if (pszConvertData)
- free (pszConvertData);
- if (hGlobal && pszGlobalData)
- GlobalUnlock (hGlobal);
-
- /*
- * Send a SelectionNotify event to the requesting
- * client when we abort.
- */
- if (fAbort)
- {
- /* Setup selection notify event */
- eventSelection.type = SelectionNotify;
- eventSelection.send_event = True;
- eventSelection.display = pDisplay;
- eventSelection.requestor = event.xselectionrequest.requestor;
- eventSelection.selection = event.xselectionrequest.selection;
- eventSelection.target = event.xselectionrequest.target;
- eventSelection.property = None;
- eventSelection.time = event.xselectionrequest.time;
-
- /* Notify the requesting window that the operation is complete */
- iReturn = XSendEvent (pDisplay,
- eventSelection.requestor,
- False,
- 0L,
- (XEvent *) &eventSelection);
- if (iReturn == BadValue || iReturn == BadWindow)
- {
- /*
- * Should not be a problem if XSendEvent fails because
- * the client may simply have exited.
- */
- ErrorF ("winClipboardFlushXEvents - SelectionRequest - "
- "XSendEvent () failed for abort event.\n");
- }
- }
-
- /* Close clipboard if it was opened */
- if (fCloseClipboard)
- CloseClipboard ();
- break;
-
-
- /*
- * SelectionNotify
- */
-
- case SelectionNotify:
-#if 0
- ErrorF ("winClipboardFlushXEvents - SelectionNotify\n");
- {
- char *pszAtomName;
-
- pszAtomName = XGetAtomName (pDisplay,
- event.xselection.selection);
-
- ErrorF ("winClipboardFlushXEvents - SelectionNotify - ATOM: %s\n",
- pszAtomName);
-
- XFree (pszAtomName);
- }
-#endif
-
-
- /*
- * Request conversion of UTF8 and CompoundText targets.
- */
- if (event.xselection.property == None)
- {
- if (event.xselection.target == XA_STRING)
- {
-#if 0
- ErrorF ("winClipboardFlushXEvents - SelectionNotify - "
- "XA_STRING\n");
-#endif
- return WIN_XEVENTS_CONVERT;
- }
- else if (event.xselection.target == atomUTF8String)
- {
-#if 0
- ErrorF ("winClipboardFlushXEvents - SelectionNotify - "
- "Requesting conversion of UTF8 target.\n");
-#endif
- iReturn = XConvertSelection (pDisplay,
- event.xselection.selection,
- XA_STRING,
- atomLocalProperty,
- iWindow,
- CurrentTime);
- if (iReturn != Success)
- {
- ErrorF ("winClipboardFlushXEvents - SelectionNotify - "
- "XConvertSelection () failed for UTF8String, "
- "aborting: %d\n",
- iReturn);
- break;
- }
-
- /* Process the ConvertSelection event */
- XFlush (pDisplay);
- return WIN_XEVENTS_CONVERT;
- }
-#ifdef X_HAVE_UTF8_STRING
- else if (event.xselection.target == atomCompoundText)
- {
-#if 0
- ErrorF ("winClipboardFlushXEvents - SelectionNotify - "
- "Requesting conversion of CompoundText target.\n");
-#endif
- iReturn = XConvertSelection (pDisplay,
- event.xselection.selection,
- atomUTF8String,
- atomLocalProperty,
- iWindow,
- CurrentTime);
- if (iReturn != Success)
- {
- ErrorF ("winClipboardFlushXEvents - SelectionNotify - "
- "XConvertSelection () failed for CompoundText, "
- "aborting: %d\n",
- iReturn);
- break;
- }
-
- /* Process the ConvertSelection event */
- XFlush (pDisplay);
- return WIN_XEVENTS_CONVERT;
- }
-#endif
- else
- {
- ErrorF ("winClipboardFlushXEvents - SelectionNotify - "
- "Unknown format. Cannot request conversion, "
- "aborting.\n");
- break;
- }
- }
-
- /* Retrieve the size of the stored data */
- iReturn = XGetWindowProperty (pDisplay,
- iWindow,
- atomLocalProperty,
- 0,
- 0, /* Don't get data, just size */
- False,
- AnyPropertyType,
- &xtpText.encoding,
- &xtpText.format,
- &xtpText.nitems,
- &ulReturnBytesLeft,
- &xtpText.value);
- if (iReturn != Success)
- {
- ErrorF ("winClipboardFlushXEvents - SelectionNotify - "
- "XGetWindowProperty () failed, aborting: %d\n",
- iReturn);
- break;
- }
-
-#if 0
- ErrorF ("SelectionNotify - returned data %d left %d\n",
- xtpText.nitems, ulReturnBytesLeft);
-#endif
-
- /* Request the selection data */
- iReturn = XGetWindowProperty (pDisplay,
- iWindow,
- atomLocalProperty,
- 0,
- ulReturnBytesLeft,
- False,
- AnyPropertyType,
- &xtpText.encoding,
- &xtpText.format,
- &xtpText.nitems,
- &ulReturnBytesLeft,
- &xtpText.value);
- if (iReturn != Success)
- {
- ErrorF ("winClipboardFlushXEvents - SelectionNotify - "
- "XGetWindowProperty () failed, aborting: %d\n",
- iReturn);
- break;
- }
-
-#if 0
- {
- char *pszAtomName = NULL;
-
- ErrorF ("SelectionNotify - returned data %d left %d\n",
- xtpText.nitems, ulReturnBytesLeft);
-
- pszAtomName = XGetAtomName(pDisplay, xtpText.encoding);
- ErrorF ("Notify atom name %s\n", pszAtomName);
- XFree (pszAtomName);
- pszAtomName = NULL;
- }
-#endif
-
- if (fUseUnicode)
- {
-#ifdef X_HAVE_UTF8_STRING
- /* Convert the text property to a text list */
- iReturn = Xutf8TextPropertyToTextList (pDisplay,
- &xtpText,
- &ppszTextList,
- &iCount);
-#endif
- }
- else
- {
- iReturn = XmbTextPropertyToTextList (pDisplay,
- &xtpText,
- &ppszTextList,
- &iCount);
- }
- if (iReturn == Success || iReturn > 0)
- {
- /* Conversion succeeded or some unconvertible characters */
- if (ppszTextList != NULL)
- {
- for (i = 0; i < iCount; i++)
- {
- iReturnDataLen += strlen(ppszTextList[i]);
- }
- pszReturnData = malloc (iReturnDataLen + 1);
- pszReturnData[0] = '\0';
- for (i = 0; i < iCount; i++)
- {
- strcat (pszReturnData, ppszTextList[i]);
- }
- }
- else
- {
- ErrorF ("winClipboardFlushXEvents - SelectionNotify - "
- "X*TextPropertyToTextList list_return is NULL.\n");
- pszReturnData = malloc (1);
- pszReturnData[0] = '\0';
- }
- }
- else
- {
- ErrorF ("winClipboardFlushXEvents - SelectionNotify - "
- "X*TextPropertyToTextList returned: ");
- switch (iReturn)
- {
- case XNoMemory:
- ErrorF ("XNoMemory\n");
- break;
- case XConverterNotFound:
- ErrorF ("XConverterNotFound\n");
- break;
- default:
- ErrorF ("%d", iReturn);
- break;
- }
- pszReturnData = malloc (1);
- pszReturnData[0] = '\0';
- }
-
- /* Free the data returned from XGetWindowProperty */
- if (ppszTextList)
- XFreeStringList (ppszTextList);
- ppszTextList = NULL;
- XFree (xtpText.value);
- xtpText.value = NULL;
-
- /* Convert the X clipboard string to DOS format */
- winClipboardUNIXtoDOS (&pszReturnData, strlen (pszReturnData));
-
- if (fUseUnicode)
- {
- /* Find out how much space needed to convert MBCS to Unicode */
- iUnicodeLen = MultiByteToWideChar (CP_UTF8,
- 0,
- pszReturnData,
- -1,
- NULL,
- 0);
-
- /* Allocate memory for the Unicode string */
- pwszUnicodeStr
- = (wchar_t*) malloc (sizeof (wchar_t) * (iUnicodeLen + 1));
- if (!pwszUnicodeStr)
- {
- ErrorF ("winClipboardFlushXEvents - SelectionNotify "
- "malloc failed for pwszUnicodeStr, aborting.\n");
-
- /* Abort */
- fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionNotify_Done;
- }
-
- /* Do the actual conversion */
- MultiByteToWideChar (CP_UTF8,
- 0,
- pszReturnData,
- -1,
- pwszUnicodeStr,
- iUnicodeLen);
-
- /* Allocate global memory for the X clipboard data */
- hGlobal = GlobalAlloc (GMEM_MOVEABLE,
- sizeof (wchar_t) * (iUnicodeLen + 1));
- }
- else
- {
- pszConvertData = strdup (pszReturnData);
- iConvertDataLen = strlen (pszConvertData) + 1;
-
- /* Allocate global memory for the X clipboard data */
- hGlobal = GlobalAlloc (GMEM_MOVEABLE, iConvertDataLen);
- }
-
- /* Check that global memory was allocated */
- if (!hGlobal)
- {
- ErrorF ("winClipboardFlushXEvents - SelectionNotify "
- "GlobalAlloc failed, aborting: %ld\n",
- GetLastError ());
-
- /* Abort */
- fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionNotify_Done;
- }
-
- /* Obtain a pointer to the global memory */
- pszGlobalData = GlobalLock (hGlobal);
- if (pszGlobalData == NULL)
- {
- ErrorF ("winClipboardFlushXEvents - Could not lock global "
- "memory for clipboard transfer\n");
-
- /* Abort */
- fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionNotify_Done;
- }
-
- /* Copy the returned string into the global memory */
- if (fUseUnicode)
- {
- memcpy (pszGlobalData,
- pwszUnicodeStr,
- sizeof (wchar_t) * (iUnicodeLen + 1));
- free (pwszUnicodeStr);
- pwszUnicodeStr = NULL;
- }
- else
- {
- strcpy (pszGlobalData, pszConvertData);
- free (pszConvertData);
- pszConvertData = NULL;
- }
-
- /* Release the pointer to the global memory */
- GlobalUnlock (hGlobal);
- pszGlobalData = NULL;
-
- /* Push the selection data to the Windows clipboard */
- if (fUseUnicode)
- SetClipboardData (CF_UNICODETEXT, hGlobal);
- else
- SetClipboardData (CF_TEXT, hGlobal);
-
- /* Flag that SetClipboardData has been called */
- fSetClipboardData = FALSE;
-
- /*
- * NOTE: Do not try to free pszGlobalData, it is owned by
- * Windows after the call to SetClipboardData ().
- */
-
- winClipboardFlushXEvents_SelectionNotify_Done:
- /* Free allocated resources */
- if (ppszTextList)
- XFreeStringList (ppszTextList);
- if (xtpText.value)
- XFree (xtpText.value);
- if (pszConvertData)
- free (pszConvertData);
- if (pwszUnicodeStr)
- free (pwszUnicodeStr);
- if (hGlobal && pszGlobalData)
- GlobalUnlock (hGlobal);
- if (fSetClipboardData && g_fUnicodeSupport)
- SetClipboardData (CF_UNICODETEXT, NULL);
- if (fSetClipboardData)
- SetClipboardData (CF_TEXT, NULL);
- return WIN_XEVENTS_NOTIFY;
-
- default:
- break;
- }
- }
-
- return WIN_XEVENTS_SUCCESS;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/wincmap.c b/nx-X11/programs/Xserver/hw/xwin/wincmap.c
deleted file mode 100644
index b3b99b1b5..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/wincmap.c
+++ /dev/null
@@ -1,675 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Dakshinamurthy Karra
- * Suhaib M Siddiqi
- * Peter Busch
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/wincmap.c,v 1.9 2002/07/05 09:19:26 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * Local prototypes
- */
-
-static int
-winListInstalledColormaps (ScreenPtr pScreen, Colormap *pmaps);
-
-static void
-winStoreColors (ColormapPtr pmap, int ndef, xColorItem *pdefs);
-
-static void
-winInstallColormap (ColormapPtr pmap);
-
-static void
-winUninstallColormap (ColormapPtr pmap);
-
-static void
-winResolveColor (unsigned short *pred,
- unsigned short *pgreen,
- unsigned short *pblue,
- VisualPtr pVisual);
-
-static Bool
-winCreateColormap (ColormapPtr pmap);
-
-static void
-winDestroyColormap (ColormapPtr pmap);
-
-static Bool
-winGetPaletteDIB (ScreenPtr pScreen, ColormapPtr pcmap);
-
-static Bool
-winGetPaletteDD (ScreenPtr pScreen, ColormapPtr pcmap);
-
-
-/*
- * Set screen functions for colormaps
- */
-
-void
-winSetColormapFunctions (ScreenPtr pScreen)
-{
- pScreen->CreateColormap = winCreateColormap;
- pScreen->DestroyColormap = winDestroyColormap;
- pScreen->InstallColormap = winInstallColormap;
- pScreen->UninstallColormap = winUninstallColormap;
- pScreen->ListInstalledColormaps = winListInstalledColormaps;
- pScreen->StoreColors = winStoreColors;
- pScreen->ResolveColor = winResolveColor;
-}
-
-
-/* See Porting Layer Definition - p. 30 */
-/*
- * Walk the list of installed colormaps, filling the pmaps list
- * with the resource ids of the installed maps, and return
- * a count of the total number of installed maps.
- */
-static int
-winListInstalledColormaps (ScreenPtr pScreen, Colormap *pmaps)
-{
- winScreenPriv(pScreen);
-
- /*
- * There will only be one installed colormap, so we only need
- * to return one id, and the count of installed maps will always
- * be one.
- */
- *pmaps = pScreenPriv->pcmapInstalled->mid;
- return 1;
-}
-
-
-/* See Porting Layer Definition - p. 30 */
-/* See Programming Windows - p. 663 */
-static void
-winInstallColormap (ColormapPtr pColormap)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- winScreenPriv(pScreen);
- ColormapPtr oldpmap = pScreenPriv->pcmapInstalled;
-
-#if CYGDEBUG
- winDebug ("winInstallColormap\n");
-#endif
-
- /* Did the colormap actually change? */
- if (pColormap != oldpmap)
- {
-#if CYGDEBUG
- winDebug ("winInstallColormap - Colormap has changed, attempt "
- "to install.\n");
-#endif
-
- /* Was there a previous colormap? */
- if (oldpmap != (ColormapPtr) None)
- {
- /* There was a previous colormap; tell clients it is gone */
- WalkTree (pColormap->pScreen, TellLostMap, (char *)&oldpmap->mid);
- }
-
- /* Install new colormap */
- pScreenPriv->pcmapInstalled = pColormap;
- WalkTree (pColormap->pScreen, TellGainedMap, (char *)&pColormap->mid);
-
- /* Call the engine specific colormap install procedure */
- if (!((*pScreenPriv->pwinInstallColormap) (pColormap)))
- {
- winErrorFVerb (2, "winInstallColormap - Screen specific colormap install "
- "procedure failed. Continuing, but colors may be "
- "messed up from now on.\n");
- }
- }
-
- /* Save a pointer to the newly installed colormap */
- pScreenPriv->pcmapInstalled = pColormap;
-}
-
-
-/* See Porting Layer Definition - p. 30 */
-static void
-winUninstallColormap (ColormapPtr pmap)
-{
- winScreenPriv(pmap->pScreen);
- ColormapPtr curpmap = pScreenPriv->pcmapInstalled;
-
-#if CYGDEBUG
- winDebug ("winUninstallColormap\n");
-#endif
-
- /* Is the colormap currently installed? */
- if (pmap != curpmap)
- {
- /* Colormap not installed, nothing to do */
- return;
- }
-
- /* Clear the installed colormap flag */
- pScreenPriv->pcmapInstalled = NULL;
-
- /*
- * NOTE: The default colormap does not get "uninstalled" before
- * it is destroyed.
- */
-
- /* Install the default cmap in place of the cmap to be uninstalled */
- if (pmap->mid != pmap->pScreen->defColormap)
- {
- curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap,
- RT_COLORMAP);
- (*pmap->pScreen->InstallColormap) (curpmap);
- }
-}
-
-
-/* See Porting Layer Definition - p. 30 */
-static void
-winStoreColors (ColormapPtr pmap,
- int ndef,
- xColorItem *pdefs)
-{
- ScreenPtr pScreen = pmap->pScreen;
- winScreenPriv(pScreen);
- winCmapPriv(pmap);
- int i;
- unsigned short nRed, nGreen, nBlue;
-
-#if CYGDEBUG
- if (ndef != 1)
- winDebug ("winStoreColors - ndef: %d\n",
- ndef);
-#endif
-
- /* Save the new colors in the colormap privates */
- for (i = 0; i < ndef; ++i)
- {
- /* Adjust the colors from the X color spec to the Windows color spec */
- nRed = pdefs[i].red >> 8;
- nGreen = pdefs[i].green >> 8;
- nBlue = pdefs[i].blue >> 8;
-
- /* Copy the colors to a palette entry table */
- pCmapPriv->peColors[pdefs[0].pixel + i].peRed = nRed;
- pCmapPriv->peColors[pdefs[0].pixel + i].peGreen = nGreen;
- pCmapPriv->peColors[pdefs[0].pixel + i].peBlue = nBlue;
-
- /* Copy the colors to a RGBQUAD table */
- pCmapPriv->rgbColors[pdefs[0].pixel + i].rgbRed = nRed;
- pCmapPriv->rgbColors[pdefs[0].pixel + i].rgbGreen = nGreen;
- pCmapPriv->rgbColors[pdefs[0].pixel + i].rgbBlue = nBlue;
-
-#if CYGDEBUG
- winDebug ("winStoreColors - nRed %d nGreen %d nBlue %d\n",
- nRed, nGreen, nBlue);
-#endif
- }
-
- /* Call the engine specific store colors procedure */
- if (!((pScreenPriv->pwinStoreColors) (pmap, ndef, pdefs)))
- {
- winErrorFVerb (2, "winStoreColors - Engine cpecific color storage procedure "
- "failed. Continuing, but colors may be messed up from now "
- "on.\n");
- }
-}
-
-
-/* See Porting Layer Definition - p. 30 */
-static void
-winResolveColor (unsigned short *pred,
- unsigned short *pgreen,
- unsigned short *pblue,
- VisualPtr pVisual)
-{
-#if CYGDEBUG
- winDebug ("winResolveColor ()\n");
-#endif
-
- miResolveColor (pred, pgreen, pblue, pVisual);
-}
-
-
-/* See Porting Layer Definition - p. 29 */
-static Bool
-winCreateColormap (ColormapPtr pmap)
-{
- winPrivCmapPtr pCmapPriv = NULL;
- ScreenPtr pScreen = pmap->pScreen;
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winDebug ("winCreateColormap\n");
-#endif
-
- /* Allocate colormap privates */
- if (!winAllocateCmapPrivates (pmap))
- {
- ErrorF ("winCreateColorma - Couldn't allocate cmap privates\n");
- return FALSE;
- }
-
- /* Get a pointer to the newly allocated privates */
- pCmapPriv = winGetCmapPriv (pmap);
-
- /*
- * FIXME: This is some evil hackery to help in handling some X clients
- * that expect the top pixel to be white. This "help" only lasts until
- * some client overwrites the top colormap entry.
- *
- * We don't want to actually allocate the top entry, as that causes
- * problems with X clients that need 7 planes (128 colors) in the default
- * colormap, such as Magic 7.1.
- */
- pCmapPriv->rgbColors[WIN_NUM_PALETTE_ENTRIES - 1].rgbRed = 255;
- pCmapPriv->rgbColors[WIN_NUM_PALETTE_ENTRIES - 1].rgbGreen = 255;
- pCmapPriv->rgbColors[WIN_NUM_PALETTE_ENTRIES - 1].rgbBlue = 255;
- pCmapPriv->peColors[WIN_NUM_PALETTE_ENTRIES - 1].peRed = 255;
- pCmapPriv->peColors[WIN_NUM_PALETTE_ENTRIES - 1].peGreen = 255;
- pCmapPriv->peColors[WIN_NUM_PALETTE_ENTRIES - 1].peBlue = 255;
-
- /* Call the engine specific colormap initialization procedure */
- if (!((*pScreenPriv->pwinCreateColormap) (pmap)))
- {
- ErrorF ("winCreateColormap - Engine specific colormap creation "
- "procedure failed. Aborting.\n");
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/* See Porting Layer Definition - p. 29, 30 */
-static void
-winDestroyColormap (ColormapPtr pColormap)
-{
- winScreenPriv(pColormap->pScreen);
- winCmapPriv(pColormap);
-
- /* Call the engine specific colormap destruction procedure */
- if (!((*pScreenPriv->pwinDestroyColormap) (pColormap)))
- {
- winErrorFVerb (2, "winDestroyColormap - Engine specific colormap destruction "
- "procedure failed. Continuing, but it is possible that memory "
- "was leaked, or that colors will be messed up from now on.\n");
- }
-
- /* Free the colormap privates */
- free (pCmapPriv);
- winSetCmapPriv (pColormap, NULL);
-
-#if CYGDEBUG
- winDebug ("winDestroyColormap - Returning\n");
-#endif
-}
-
-
-/*
- * Internal function to load the palette used by the Shadow DIB
- */
-
-static Bool
-winGetPaletteDIB (ScreenPtr pScreen, ColormapPtr pcmap)
-{
- winScreenPriv(pScreen);
- int i;
- Pixel pixel; /* Pixel == CARD32 */
- CARD16 nRed, nGreen, nBlue; /* CARD16 == unsigned short */
- UINT uiColorsRetrieved = 0;
- RGBQUAD rgbColors[WIN_NUM_PALETTE_ENTRIES];
-
- /* Get the color table for the screen */
- uiColorsRetrieved = GetDIBColorTable (pScreenPriv->hdcScreen,
- 0,
- WIN_NUM_PALETTE_ENTRIES,
- rgbColors);
- if (uiColorsRetrieved == 0)
- {
- ErrorF ("winGetPaletteDIB - Could not retrieve screen color table\n");
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winGetPaletteDIB - Retrieved %d colors from DIB\n",
- uiColorsRetrieved);
-#endif
-
- /* Set the DIB color table to the default screen palette */
- if (SetDIBColorTable (pScreenPriv->hdcShadow,
- 0,
- uiColorsRetrieved,
- rgbColors) == 0)
- {
- ErrorF ("winGetPaletteDIB - SetDIBColorTable () failed\n");
- return FALSE;
- }
-
- /* Alloc each color in the DIB color table */
- for (i = 0; i < uiColorsRetrieved; ++i)
- {
- pixel = i;
-
- /* Extract the color values for current palette entry */
- nRed = rgbColors[i].rgbRed << 8;
- nGreen = rgbColors[i].rgbGreen << 8;
- nBlue = rgbColors[i].rgbBlue << 8;
-
-#if CYGDEBUG
- winDebug ("winGetPaletteDIB - Allocating a color: %d; "
- "%d %d %d\n",
- pixel, nRed, nGreen, nBlue);
-#endif
-
- /* Allocate a entry in the X colormap */
- if (AllocColor (pcmap,
- &nRed,
- &nGreen,
- &nBlue,
- &pixel,
- 0) != Success)
- {
- ErrorF ("winGetPaletteDIB - AllocColor () failed, pixel %d\n",
- i);
- return FALSE;
- }
-
- if (i != pixel
- || nRed != rgbColors[i].rgbRed
- || nGreen != rgbColors[i].rgbGreen
- || nBlue != rgbColors[i].rgbBlue)
- {
- winDebug ("winGetPaletteDIB - Got: %d; "
- "%d %d %d\n",
- (int) pixel, nRed, nGreen, nBlue);
- }
-
- /* FIXME: Not sure that this bit is needed at all */
- pcmap->red[i].co.local.red = nRed;
- pcmap->red[i].co.local.green = nGreen;
- pcmap->red[i].co.local.blue = nBlue;
- }
-
- /* System is using a colormap */
- /* Set the black and white pixel indices */
- pScreen->whitePixel = uiColorsRetrieved - 1;
- pScreen->blackPixel = 0;
-
- return TRUE;
-}
-
-
-/*
- * Internal function to load the standard system palette being used by DD
- */
-
-static Bool
-winGetPaletteDD (ScreenPtr pScreen, ColormapPtr pcmap)
-{
- int i;
- Pixel pixel; /* Pixel == CARD32 */
- CARD16 nRed, nGreen, nBlue; /* CARD16 == unsigned short */
- UINT uiSystemPaletteEntries;
- LPPALETTEENTRY ppeColors = NULL;
- HDC hdc = NULL;
-
- /* Get a DC to obtain the default palette */
- hdc = GetDC (NULL);
- if (hdc == NULL)
- {
- ErrorF ("winGetPaletteDD - Couldn't get a DC\n");
- return FALSE;
- }
-
- /* Get the number of entries in the system palette */
- uiSystemPaletteEntries = GetSystemPaletteEntries (hdc,
- 0, 0, NULL);
- if (uiSystemPaletteEntries == 0)
- {
- ErrorF ("winGetPaletteDD - Unable to determine number of "
- "system palette entries\n");
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winGetPaletteDD - uiSystemPaletteEntries %d\n",
- uiSystemPaletteEntries);
-#endif
-
- /* Allocate palette entries structure */
- ppeColors = malloc (uiSystemPaletteEntries * sizeof (PALETTEENTRY));
- if (ppeColors == NULL)
- {
- ErrorF ("winGetPaletteDD - malloc () for colormap failed\n");
- return FALSE;
- }
-
- /* Get system palette entries */
- GetSystemPaletteEntries (hdc,
- 0, uiSystemPaletteEntries, ppeColors);
-
- /* Allocate an X colormap entry for every system palette entry */
- for (i = 0; i < uiSystemPaletteEntries; ++i)
- {
- pixel = i;
-
- /* Extract the color values for current palette entry */
- nRed = ppeColors[i].peRed << 8;
- nGreen = ppeColors[i].peGreen << 8;
- nBlue = ppeColors[i].peBlue << 8;
-#if CYGDEBUG
- winDebug ("winGetPaletteDD - Allocating a color: %d; "
- "%d %d %d\n",
- pixel, nRed, nGreen, nBlue);
-#endif
- if (AllocColor (pcmap,
- &nRed,
- &nGreen,
- &nBlue,
- &pixel,
- 0) != Success)
- {
- ErrorF ("winGetPaletteDD - AllocColor () failed, pixel %d\n",
- i);
- free (ppeColors);
- ppeColors = NULL;
- return FALSE;
- }
-
- pcmap->red[i].co.local.red = nRed;
- pcmap->red[i].co.local.green = nGreen;
- pcmap->red[i].co.local.blue = nBlue;
- }
-
- /* System is using a colormap */
- /* Set the black and white pixel indices */
- pScreen->whitePixel = uiSystemPaletteEntries - 1;
- pScreen->blackPixel = 0;
-
- /* Free colormap */
- if (ppeColors != NULL)
- {
- free (ppeColors);
- ppeColors = NULL;
- }
-
- /* Free the DC */
- if (hdc != NULL)
- {
- ReleaseDC (NULL, hdc);
- hdc = NULL;
- }
-
- return TRUE;
-}
-
-
-/*
- * Install the standard fb colormap, or the GDI colormap,
- * depending on the current screen depth.
- */
-
-Bool
-winCreateDefColormap (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- unsigned short zero = 0, ones = 0xFFFF;
- VisualPtr pVisual = pScreenPriv->pRootVisual;
- ColormapPtr pcmap = NULL;
- Pixel wp, bp;
-
-#if CYGDEBUG
- winDebug ("winCreateDefColormap\n");
-#endif
-
- /* Use standard fb colormaps for non palettized color modes */
- if (pScreenInfo->dwBPP > 8)
- {
- winDebug ("winCreateDefColormap - Deferring to " \
- "fbCreateDefColormap ()\n");
- return fbCreateDefColormap (pScreen);
- }
-
- /*
- * AllocAll for non-Dynamic visual classes,
- * AllocNone for Dynamic visual classes.
- */
-
- /*
- * Dynamic visual classes allow the colors of the color map
- * to be changed by clients.
- */
-
-#if CYGDEBUG
- winDebug ("winCreateDefColormap - defColormap: %d\n",
- pScreen->defColormap);
-#endif
-
- /* Allocate an X colormap, owned by client 0 */
- if (CreateColormap (pScreen->defColormap,
- pScreen,
- pVisual,
- &pcmap,
- (pVisual->class & DynamicClass) ? AllocNone : AllocAll,
- 0) != Success)
- {
- ErrorF ("winCreateDefColormap - CreateColormap failed\n");
- return FALSE;
- }
- if (pcmap == NULL)
- {
- ErrorF ("winCreateDefColormap - Colormap could not be created\n");
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winCreateDefColormap - Created a colormap\n");
-#endif
-
- /* Branch on the visual class */
- if (!(pVisual->class & DynamicClass))
- {
- /* Branch on engine type */
- if (pScreenInfo->dwEngine == WIN_SERVER_SHADOW_GDI)
- {
- /* Load the colors being used by the Shadow DIB */
- if (!winGetPaletteDIB (pScreen, pcmap))
- {
- ErrorF ("winCreateDefColormap - Couldn't get DIB colors\n");
- return FALSE;
- }
- }
- else
- {
- /* Load the colors from the default system palette */
- if (!winGetPaletteDD (pScreen, pcmap))
- {
- ErrorF ("winCreateDefColormap - Couldn't get colors "
- "for DD\n");
- return FALSE;
- }
- }
- }
- else
- {
- wp = pScreen->whitePixel;
- bp = pScreen->blackPixel;
-
- /* Allocate a black and white pixel */
- if ((AllocColor (pcmap, &ones, &ones, &ones, &wp, 0) !=
- Success)
- ||
- (AllocColor (pcmap, &zero, &zero, &zero, &bp, 0) !=
- Success))
- {
- ErrorF ("winCreateDefColormap - Couldn't allocate bp or wp\n");
- return FALSE;
- }
-
- pScreen->whitePixel = wp;
- pScreen->blackPixel = bp;
-
-#if 0
- /* Have to reserve first 10 and last ten pixels in DirectDraw windowed */
- if (pScreenInfo->dwEngine != WIN_SERVER_SHADOW_GDI)
- {
- int k;
- Pixel p;
-
- for (k = 1; k < 10; ++k)
- {
- p = k;
- if (AllocColor (pcmap, &ones, &ones, &ones, &p, 0) != Success)
- FatalError ("Foo!\n");
- }
-
- for (k = 245; k < 255; ++k)
- {
- p = k;
- if (AllocColor (pcmap, &zero, &zero, &zero, &p, 0) != Success)
- FatalError ("Baz!\n");
- }
- }
-#endif
- }
-
- /* Install the created colormap */
- (*pScreen->InstallColormap)(pcmap);
-
-#if CYGDEBUG
- winDebug ("winCreateDefColormap - Returning\n");
-#endif
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winconfig.c b/nx-X11/programs/Xserver/hw/xwin/winconfig.c
deleted file mode 100644
index 917ce08c0..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winconfig.c
+++ /dev/null
@@ -1,1185 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Alexander Gottwald
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winconfig.c,v 1.3 2003/10/02 13:30:10 eich Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "winconfig.h"
-#include "winmsg.h"
-#include "globals.h"
-
-#ifdef XKB
-#ifndef XKB_IN_SERVER
-#define XKB_IN_SERVER
-#endif
-#include <X11/extensions/XKBsrv.h>
-#endif
-
-#ifdef XWIN_XF86CONFIG
-#ifndef CONFIGPATH
-#define CONFIGPATH "%A," "%R," \
- "/etc/X11/%R," "%P/etc/X11/%R," \
- "%E," "%F," \
- "/etc/X11/%F," "%P/etc/X11/%F," \
- "%D/%X," \
- "/etc/X11/%X-%M," "/etc/X11/%X," "/etc/%X," \
- "%P/etc/X11/%X.%H," "%P/etc/X11/%X-%M," \
- "%P/etc/X11/%X," \
- "%P/lib/X11/%X.%H," "%P/lib/X11/%X-%M," \
- "%P/lib/X11/%X"
-#endif
-
-XF86ConfigPtr g_xf86configptr = NULL;
-#endif
-
-WinCmdlineRec g_cmdline = {
-#ifdef XWIN_XF86CONFIG
- NULL, /* configFile */
-#endif
- NULL, /* fontPath */
- NULL, /* rgbPath */
-#ifdef XWIN_XF86CONFIG
- NULL, /* keyboard */
-#endif
-#ifdef XKB
- FALSE, /* noXkbExtension */
- NULL, /* xkbMap */
- NULL, /* xkbRules */
- NULL, /* xkbModel */
- NULL, /* xkbLayout */
- NULL, /* xkbVariant */
- NULL, /* xkbOptions */
-#endif
- NULL, /* screenname */
- NULL, /* mousename */
- FALSE, /* emulate3Buttons */
- 0 /* emulate3Timeout */
-};
-
-winInfoRec g_winInfo = {
- { /* keyboard */
- 0, /* leds */
- 500, /* delay */
- 30 /* rate */
-#ifdef XKB
- }
- ,
- { /* xkb */
- FALSE, /* disable */
- NULL, /* rules */
- NULL, /* model */
- NULL, /* layout */
- NULL, /* variant */
- NULL, /* options */
- NULL, /* initialMap */
- NULL, /* keymap */
- NULL, /* types */
- NULL, /* compat */
- NULL, /* keycodes */
- NULL, /* symbols */
- NULL /* geometry */
-#endif
- }
- ,
- {
- FALSE,
- 50}
-};
-
-#define NULL_IF_EMPTY(x) (winNameCompare(x,"")?x:NULL)
-
-#ifdef XWIN_XF86CONFIG
-serverLayoutRec g_winConfigLayout;
-
-static Bool ParseOptionValue (int scrnIndex, pointer options,
- OptionInfoPtr p);
-static Bool configLayout (serverLayoutPtr, XF86ConfLayoutPtr, char *);
-static Bool configImpliedLayout (serverLayoutPtr, XF86ConfScreenPtr);
-static Bool GetBoolValue (OptionInfoPtr p, const char *s);
-
-
-Bool
-winReadConfigfile ()
-{
- Bool retval = TRUE;
- const char *filename;
- MessageType from = X_DEFAULT;
- char *xf86ConfigFile = NULL;
-
- if (g_cmdline.configFile)
- {
- from = X_CMDLINE;
- xf86ConfigFile = g_cmdline.configFile;
- }
-
- /* Parse config file into data structure */
-
- filename = xf86openConfigFile (CONFIGPATH, xf86ConfigFile, PROJECTROOT);
-
- /* Hack for backward compatibility */
- if (!filename && from == X_DEFAULT)
- filename = xf86openConfigFile (CONFIGPATH, "XF86Config", PROJECTROOT);
-
- if (filename)
- {
- winMsg (from, "Using config file: \"%s\"\n", filename);
- }
- else
- {
- winMsg (X_ERROR, "Unable to locate/open config file");
- if (xf86ConfigFile)
- ErrorF (": \"%s\"", xf86ConfigFile);
- ErrorF ("\n");
- return FALSE;
- }
- if ((g_xf86configptr = xf86readConfigFile ()) == NULL)
- {
- winMsg (X_ERROR, "Problem parsing the config file\n");
- return FALSE;
- }
- xf86closeConfigFile ();
-
- LogPrintMarkers();
-
- /* set options from data structure */
-
- if (g_xf86configptr->conf_layout_lst == NULL || g_cmdline.screenname != NULL)
- {
- if (g_cmdline.screenname == NULL)
- {
- winMsg (X_WARNING,
- "No Layout section. Using the first Screen section.\n");
- }
- if (!configImpliedLayout (&g_winConfigLayout,
- g_xf86configptr->conf_screen_lst))
- {
- winMsg (X_ERROR, "Unable to determine the screen layout\n");
- return FALSE;
- }
- }
- else
- {
- /* Check if layout is given in the config file */
- if (g_xf86configptr->conf_flags != NULL)
- {
- char *dfltlayout = NULL;
- pointer optlist = g_xf86configptr->conf_flags->flg_option_lst;
-
- if (optlist && winFindOption (optlist, "defaultserverlayout"))
- dfltlayout =
- winSetStrOption (optlist, "defaultserverlayout", NULL);
-
- if (!configLayout (&g_winConfigLayout,
- g_xf86configptr->conf_layout_lst,
- dfltlayout))
- {
- winMsg (X_ERROR, "Unable to determine the screen layout\n");
- return FALSE;
- }
- }
- else
- {
- if (!configLayout (&g_winConfigLayout,
- g_xf86configptr->conf_layout_lst,
- NULL))
- {
- winMsg (X_ERROR, "Unable to determine the screen layout\n");
- return FALSE;
- }
- }
- }
-
- /* setup special config files */
- winConfigFiles ();
- return retval;
-}
-#endif
-
-/* load layout definitions */
-#include "winlayouts.h"
-
-/* Set the keyboard configuration */
-Bool
-winConfigKeyboard (DeviceIntPtr pDevice)
-{
-#ifdef XKB
- char layoutName[KL_NAMELENGTH];
- static unsigned int layoutNum = 0;
- int keyboardType;
-#endif
-#ifdef XWIN_XF86CONFIG
- XF86ConfInputPtr kbd = NULL;
- XF86ConfInputPtr input_list = NULL;
- MessageType kbdfrom = X_CONFIG;
-#endif
- MessageType from = X_DEFAULT;
- char *s = NULL;
-
- /* Setup defaults */
-#ifdef XKB
- g_winInfo.xkb.disable = FALSE;
-# ifdef PC98 /* japanese */ /* not implemented */
- g_winInfo.xkb.rules = "xfree98";
- g_winInfo.xkb.model = "pc98";
- g_winInfo.xkb.layout = "nex/jp";
- g_winInfo.xkb.variant = NULL;
- g_winInfo.xkb.options = NULL;
-# else
- g_winInfo.xkb.rules = "xorg";
- g_winInfo.xkb.model = "pc101";
- g_winInfo.xkb.layout = "us";
- g_winInfo.xkb.variant = NULL;
- g_winInfo.xkb.options = NULL;
-# endif /* PC98 */
-
- /*
- * Query the windows autorepeat settings and change the xserver defaults.
- * If XKB is disabled then windows handles the autorepeat and the special
- * treatment is not needed
- */
- {
- int kbd_delay;
- DWORD kbd_speed;
- if (SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, &kbd_delay, 0) &&
- SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, &kbd_speed, 0))
- {
- switch (kbd_delay)
- {
- case 0: g_winInfo.keyboard.delay = 250; break;
- case 1: g_winInfo.keyboard.delay = 500; break;
- case 2: g_winInfo.keyboard.delay = 750; break;
- default:
- case 3: g_winInfo.keyboard.delay = 1000; break;
- }
- g_winInfo.keyboard.rate = (kbd_speed>0)?kbd_speed:1;
- winMsgVerb(X_PROBED, 1, "Setting autorepeat to delay=%d, rate=%d\n",
- g_winInfo.keyboard.delay, g_winInfo.keyboard.rate);
- }
- }
-
-
- keyboardType = GetKeyboardType (0);
- if (keyboardType > 0 && GetKeyboardLayoutName (layoutName))
- {
- WinKBLayoutPtr pLayout;
- Bool bfound = FALSE;
-
- if (! layoutNum)
- layoutNum = strtoul (layoutName, (char **)NULL, 16);
- if ((layoutNum & 0xffff) == 0x411) {
- /* The japanese layouts know a lot of different IMEs which all have
- different layout numbers set. Map them to a single entry.
- Same might apply for chinese, korean and other symbol languages
- too */
- layoutNum = (layoutNum & 0xffff);
- if (keyboardType == 7)
- {
- /* Japanese layouts have problems with key event messages
- such as the lack of WM_KEYUP for Caps Lock key.
- Loading US layout fixes this problem. */
- if (LoadKeyboardLayout("00000409", KLF_ACTIVATE) != NULL)
- winMsg (X_INFO, "Loading US keyboard layout.\n");
- else
- winMsg (X_ERROR, "LoadKeyboardLaout failed.\n");
- }
- }
- winMsg (X_PROBED, "winConfigKeyboard - Layout: \"%s\" (%08x) \n",
- layoutName, layoutNum);
-
- for (pLayout = winKBLayouts; pLayout->winlayout != -1; pLayout++)
- {
- if (pLayout->winlayout != layoutNum)
- continue;
- if (pLayout->winkbtype > 0 && pLayout->winkbtype != keyboardType)
- continue;
-
- bfound = TRUE;
- winMsg (X_PROBED,
- "Using preset keyboard for \"%s\" (%x), type \"%d\"\n",
- pLayout->layoutname, pLayout->winlayout, keyboardType);
-
- g_winInfo.xkb.model = pLayout->xkbmodel;
- g_winInfo.xkb.layout = pLayout->xkblayout;
- g_winInfo.xkb.variant = pLayout->xkbvariant;
- g_winInfo.xkb.options = pLayout->xkboptions;
- break;
- }
-
- if (!bfound)
- {
- HKEY regkey = NULL;
- const char regtempl[] =
- "SYSTEM\\CurrentControlSet\\Control\\Keyboard Layouts\\";
- char *regpath;
- char lname[256];
- DWORD namesize = sizeof(lname);
-
- regpath = malloc(sizeof(regtempl) + KL_NAMELENGTH + 1);
- strcpy(regpath, regtempl);
- strcat(regpath, layoutName);
-
- if (!RegOpenKey(HKEY_LOCAL_MACHINE, regpath, &regkey) &&
- !RegQueryValueEx(regkey, "Layout Text", 0, NULL, lname, &namesize))
- {
- winMsg (X_ERROR,
- "Keyboardlayout \"%s\" (%s) is unknown\n", lname, layoutName);
- }
-
- /* Close registry key */
- if (regkey)
- RegCloseKey (regkey);
- free(regpath);
- }
- }
-
- g_winInfo.xkb.initialMap = NULL;
- g_winInfo.xkb.keymap = NULL;
- g_winInfo.xkb.types = NULL;
- g_winInfo.xkb.compat = NULL;
- g_winInfo.xkb.keycodes = NULL;
- g_winInfo.xkb.symbols = NULL;
- g_winInfo.xkb.geometry = NULL;
-#endif /* XKB */
-
- /* parse the configuration */
-#ifdef XWIN_XF86CONFIG
- if (g_cmdline.keyboard)
- kbdfrom = X_CMDLINE;
-
- /*
- * Until the layout code is finished, I search for the keyboard
- * device and configure the server with it.
- */
-
- if (g_xf86configptr != NULL)
- input_list = g_xf86configptr->conf_input_lst;
-
- while (input_list != NULL)
- {
- if (winNameCompare (input_list->inp_driver, "keyboard") == 0)
- {
- /* Check if device name matches requested name */
- if (g_cmdline.keyboard && winNameCompare (input_list->inp_identifier,
- g_cmdline.keyboard))
- continue;
- kbd = input_list;
- }
- input_list = input_list->list.next;
- }
-
- if (kbd != NULL)
- {
-
- if (kbd->inp_identifier)
- winMsg (kbdfrom, "Using keyboard \"%s\" as primary keyboard\n",
- kbd->inp_identifier);
-
- if ((s = winSetStrOption(kbd->inp_option_lst, "AutoRepeat", NULL)))
- {
- if ((sscanf(s, "%ld %ld", &g_winInfo.keyboard.delay,
- &g_winInfo.keyboard.rate) != 2) ||
- (g_winInfo.keyboard.delay < 1) ||
- (g_winInfo.keyboard.rate == 0) ||
- (1000 / g_winInfo.keyboard.rate) < 1)
- {
- winErrorFVerb (2, "\"%s\" is not a valid AutoRepeat value", s);
- xfree(s);
- return FALSE;
- }
- xfree(s);
- winMsg (X_CONFIG, "AutoRepeat: %ld %ld\n",
- g_winInfo.keyboard.delay, g_winInfo.keyboard.rate);
- }
-#endif
-
-#ifdef XKB
- from = X_DEFAULT;
- if (g_cmdline.noXkbExtension)
- {
- from = X_CMDLINE;
- g_winInfo.xkb.disable = TRUE;
- }
-#ifdef XWIN_XF86CONFIG
- else if (kbd->inp_option_lst)
- {
- int b = winSetBoolOption (kbd->inp_option_lst, "XkbDisable", FALSE);
- if (b)
- {
- from = X_CONFIG;
- g_winInfo.xkb.disable = TRUE;
- }
- }
-#endif
- if (g_winInfo.xkb.disable)
- {
- winMsg (from, "XkbExtension disabled\n");
- }
- else
- {
- s = NULL;
- if (g_cmdline.xkbRules)
- {
- s = g_cmdline.xkbRules;
- from = X_CMDLINE;
- }
-#ifdef XWIN_XF86CONFIG
- else
- {
- s = winSetStrOption (kbd->inp_option_lst, "XkbRules", NULL);
- from = X_CONFIG;
- }
-#endif
- if (s)
- {
- g_winInfo.xkb.rules = NULL_IF_EMPTY (s);
- winMsg (from, "XKB: rules: \"%s\"\n", s);
- }
-
- s = NULL;
- if (g_cmdline.xkbModel)
- {
- s = g_cmdline.xkbModel;
- from = X_CMDLINE;
- }
-#ifdef XWIN_XF86CONFIG
- else
- {
- s = winSetStrOption (kbd->inp_option_lst, "XkbModel", NULL);
- from = X_CONFIG;
- }
-#endif
- if (s)
- {
- g_winInfo.xkb.model = NULL_IF_EMPTY (s);
- winMsg (from, "XKB: model: \"%s\"\n", s);
- }
-
- s = NULL;
- if (g_cmdline.xkbLayout)
- {
- s = g_cmdline.xkbLayout;
- from = X_CMDLINE;
- }
-#ifdef XWIN_XF86CONFIG
- else
- {
- s = winSetStrOption (kbd->inp_option_lst, "XkbLayout", NULL);
- from = X_CONFIG;
- }
-#endif
- if (s)
- {
- g_winInfo.xkb.layout = NULL_IF_EMPTY (s);
- winMsg (from, "XKB: layout: \"%s\"\n", s);
- }
-
- s = NULL;
- if (g_cmdline.xkbVariant)
- {
- s = g_cmdline.xkbVariant;
- from = X_CMDLINE;
- }
-#ifdef XWIN_XF86CONFIG
- else
- {
- s = winSetStrOption (kbd->inp_option_lst, "XkbVariant", NULL);
- from = X_CONFIG;
- }
-#endif
- if (s)
- {
- g_winInfo.xkb.variant = NULL_IF_EMPTY (s);
- winMsg (from, "XKB: variant: \"%s\"\n", s);
- }
-
- s = NULL;
- if (g_cmdline.xkbOptions)
- {
- s = g_cmdline.xkbOptions;
- from = X_CMDLINE;
- }
-#ifdef XWIN_XF86CONFIG
- else
- {
- s = winSetStrOption (kbd->inp_option_lst, "XkbOptions", NULL);
- from = X_CONFIG;
- }
-#endif
- if (s)
- {
- g_winInfo.xkb.options = NULL_IF_EMPTY (s);
- winMsg (from, "XKB: options: \"%s\"\n", s);
- }
-
-#ifdef XWIN_XF86CONFIG
- from = X_CMDLINE;
- if (!XkbInitialMap)
- {
- s =
- winSetStrOption (kbd->inp_option_lst, "XkbInitialMap", NULL);
- if (s)
- {
- XkbInitialMap = NULL_IF_EMPTY (s);
- from = X_CONFIG;
- }
- }
-
- if ((s = winSetStrOption (kbd->inp_option_lst, "XkbKeymap", NULL)))
- {
- g_winInfo.xkb.keymap = NULL_IF_EMPTY (s);
- winMsg (X_CONFIG, "XKB: keymap: \"%s\" "
- " (overrides other XKB settings)\n", s);
- }
-
- if ((s = winSetStrOption (kbd->inp_option_lst, "XkbCompat", NULL)))
- {
- g_winInfo.xkb.compat = NULL_IF_EMPTY (s);
- winMsg (X_CONFIG, "XKB: compat: \"%s\"\n", s);
- }
-
- if ((s = winSetStrOption (kbd->inp_option_lst, "XkbTypes", NULL)))
- {
- g_winInfo.xkb.types = NULL_IF_EMPTY (s);
- winMsg (X_CONFIG, "XKB: types: \"%s\"\n", s);
- }
-
- if ((s =
- winSetStrOption (kbd->inp_option_lst, "XkbKeycodes", NULL)))
- {
- g_winInfo.xkb.keycodes = NULL_IF_EMPTY (s);
- winMsg (X_CONFIG, "XKB: keycodes: \"%s\"\n", s);
- }
-
- if ((s =
- winSetStrOption (kbd->inp_option_lst, "XkbGeometry", NULL)))
- {
- g_winInfo.xkb.geometry = NULL_IF_EMPTY (s);
- winMsg (X_CONFIG, "XKB: geometry: \"%s\"\n", s);
- }
-
- if ((s = winSetStrOption (kbd->inp_option_lst, "XkbSymbols", NULL)))
- {
- g_winInfo.xkb.symbols = NULL_IF_EMPTY (s);
- winMsg (X_CONFIG, "XKB: symbols: \"%s\"\n", s);
- }
-#endif
-#endif
- }
-#ifdef XWIN_XF86CONFIG
- }
-#endif
-
- return TRUE;
-}
-
-
-#ifdef XWIN_XF86CONFIG
-Bool
-winConfigMouse (DeviceIntPtr pDevice)
-{
- MessageType mousefrom = X_CONFIG;
-
- XF86ConfInputPtr mouse = NULL;
- XF86ConfInputPtr input_list = NULL;
-
- if (g_cmdline.mouse)
- mousefrom = X_CMDLINE;
-
- if (g_xf86configptr != NULL)
- input_list = g_xf86configptr->conf_input_lst;
-
- while (input_list != NULL)
- {
- if (winNameCompare (input_list->inp_driver, "mouse") == 0)
- {
- /* Check if device name matches requested name */
- if (g_cmdline.mouse && winNameCompare (input_list->inp_identifier,
- g_cmdline.mouse))
- continue;
- mouse = input_list;
- }
- input_list = input_list->list.next;
- }
-
- if (mouse != NULL)
- {
- if (mouse->inp_identifier)
- winMsg (mousefrom, "Using pointer \"%s\" as primary pointer\n",
- mouse->inp_identifier);
-
- g_winInfo.pointer.emulate3Buttons =
- winSetBoolOption (mouse->inp_option_lst, "Emulate3Buttons", FALSE);
- if (g_cmdline.emulate3buttons)
- g_winInfo.pointer.emulate3Buttons = g_cmdline.emulate3buttons;
-
- g_winInfo.pointer.emulate3Timeout =
- winSetIntOption (mouse->inp_option_lst, "Emulate3Timeout", 50);
- if (g_cmdline.emulate3timeout)
- g_winInfo.pointer.emulate3Timeout = g_cmdline.emulate3timeout;
- }
- else
- {
- winMsg (X_ERROR, "No primary pointer configured\n");
- winMsg (X_DEFAULT, "Using compiletime defaults for pointer\n");
- }
-
- return TRUE;
-}
-
-
-Bool
-winConfigFiles ()
-{
- MessageType from;
- XF86ConfFilesPtr filesptr = NULL;
-
- /* set some shortcuts */
- if (g_xf86configptr != NULL)
- {
- filesptr = g_xf86configptr->conf_files;
- }
-
-
- /* Fontpath */
- from = X_DEFAULT;
-
- if (g_cmdline.fontPath)
- {
- from = X_CMDLINE;
- defaultFontPath = g_cmdline.fontPath;
- }
- else if (filesptr != NULL && filesptr->file_fontpath)
- {
- from = X_CONFIG;
- defaultFontPath = xstrdup (filesptr->file_fontpath);
- }
- winMsg (from, "FontPath set to \"%s\"\n", defaultFontPath);
-
- /* RGBPath */
- from = X_DEFAULT;
- if (g_cmdline.rgbPath)
- {
- from = X_CMDLINE;
- rgbPath = g_cmdline.rgbPath;
- }
- else if (filesptr != NULL && filesptr->file_rgbpath)
- {
- from = X_CONFIG;
- rgbPath = xstrdup (filesptr->file_rgbpath);
- }
- winMsg (from, "RgbPath set to \"%s\"\n", rgbPath);
-
- return TRUE;
-}
-#else
-Bool
-winConfigFiles ()
-{
- MessageType from;
-
- /* Fontpath */
- if (g_cmdline.fontPath)
- {
- defaultFontPath = g_cmdline.fontPath;
- winMsg (X_CMDLINE, "FontPath set to \"%s\"\n", defaultFontPath);
- }
-
- /* RGBPath */
- if (g_cmdline.rgbPath)
- {
- from = X_CMDLINE;
- rgbPath = g_cmdline.rgbPath;
- winMsg (X_CMDLINE, "RgbPath set to \"%s\"\n", rgbPath);
- }
-
- return TRUE;
-}
-#endif
-
-
-Bool
-winConfigOptions ()
-{
- return TRUE;
-}
-
-
-Bool
-winConfigScreens ()
-{
- return TRUE;
-}
-
-
-#ifdef XWIN_XF86CONFIG
-char *
-winSetStrOption (pointer optlist, const char *name, char *deflt)
-{
- OptionInfoRec o;
-
- o.name = name;
- o.type = OPTV_STRING;
- if (ParseOptionValue (-1, optlist, &o))
- deflt = o.value.str;
- if (deflt)
- return xstrdup (deflt);
- else
- return NULL;
-}
-
-
-int
-winSetBoolOption (pointer optlist, const char *name, int deflt)
-{
- OptionInfoRec o;
-
- o.name = name;
- o.type = OPTV_BOOLEAN;
- if (ParseOptionValue (-1, optlist, &o))
- deflt = o.value.bool;
- return deflt;
-}
-
-
-int
-winSetIntOption (pointer optlist, const char *name, int deflt)
-{
- OptionInfoRec o;
-
- o.name = name;
- o.type = OPTV_INTEGER;
- if (ParseOptionValue (-1, optlist, &o))
- deflt = o.value.num;
- return deflt;
-}
-
-
-double
-winSetRealOption (pointer optlist, const char *name, double deflt)
-{
- OptionInfoRec o;
-
- o.name = name;
- o.type = OPTV_REAL;
- if (ParseOptionValue (-1, optlist, &o))
- deflt = o.value.realnum;
- return deflt;
-}
-#endif
-
-
-/*
- * Compare two strings for equality. This is caseinsensitive and
- * The characters '_', ' ' (space) and '\t' (tab) are treated as
- * not existing.
- */
-
-int
-winNameCompare (const char *s1, const char *s2)
-{
- char c1, c2;
-
- if (!s1 || *s1 == 0)
- {
- if (!s2 || *s2 == 0)
- return 0;
- else
- return 1;
- }
-
- while (*s1 == '_' || *s1 == ' ' || *s1 == '\t')
- s1++;
- while (*s2 == '_' || *s2 == ' ' || *s2 == '\t')
- s2++;
-
- c1 = (isupper (*s1) ? tolower (*s1) : *s1);
- c2 = (isupper (*s2) ? tolower (*s2) : *s2);
-
- while (c1 == c2)
- {
- if (c1 == 0)
- return 0;
- s1++;
- s2++;
-
- while (*s1 == '_' || *s1 == ' ' || *s1 == '\t')
- s1++;
- while (*s2 == '_' || *s2 == ' ' || *s2 == '\t')
- s2++;
-
- c1 = (isupper (*s1) ? tolower (*s1) : *s1);
- c2 = (isupper (*s2) ? tolower (*s2) : *s2);
- }
- return (c1 - c2);
-}
-
-
-#ifdef XWIN_XF86CONFIG
-/*
- * Find the named option in the list.
- * @return the pointer to the option record, or NULL if not found.
- */
-
-XF86OptionPtr
-winFindOption (XF86OptionPtr list, const char *name)
-{
- while (list)
- {
- if (winNameCompare (list->opt_name, name) == 0)
- return list;
- list = list->list.next;
- }
- return NULL;
-}
-
-
-/*
- * Find the Value of an named option.
- * @return The option value or NULL if not found.
- */
-
-char *
-winFindOptionValue (XF86OptionPtr list, const char *name)
-{
- list = winFindOption (list, name);
- if (list)
- {
- if (list->opt_val)
- return (list->opt_val);
- else
- return "";
- }
- return (NULL);
-}
-
-
-/*
- * Parse the option.
- */
-
-static Bool
-ParseOptionValue (int scrnIndex, pointer options, OptionInfoPtr p)
-{
- char *s, *end;
-
- if ((s = winFindOptionValue (options, p->name)) != NULL)
- {
- switch (p->type)
- {
- case OPTV_INTEGER:
- if (*s == '\0')
- {
- winDrvMsg (scrnIndex, X_WARNING,
- "Option \"%s\" requires an integer value\n",
- p->name);
- p->found = FALSE;
- }
- else
- {
- p->value.num = strtoul (s, &end, 0);
- if (*end == '\0')
- {
- p->found = TRUE;
- }
- else
- {
- winDrvMsg (scrnIndex, X_WARNING,
- "Option \"%s\" requires an integer value\n",
- p->name);
- p->found = FALSE;
- }
- }
- break;
- case OPTV_STRING:
- if (*s == '\0')
- {
- winDrvMsg (scrnIndex, X_WARNING,
- "Option \"%s\" requires an string value\n", p->name);
- p->found = FALSE;
- }
- else
- {
- p->value.str = s;
- p->found = TRUE;
- }
- break;
- case OPTV_ANYSTR:
- p->value.str = s;
- p->found = TRUE;
- break;
- case OPTV_REAL:
- if (*s == '\0')
- {
- winDrvMsg (scrnIndex, X_WARNING,
- "Option \"%s\" requires a floating point value\n",
- p->name);
- p->found = FALSE;
- }
- else
- {
- p->value.realnum = strtod (s, &end);
- if (*end == '\0')
- {
- p->found = TRUE;
- }
- else
- {
- winDrvMsg (scrnIndex, X_WARNING,
- "Option \"%s\" requires a floating point value\n",
- p->name);
- p->found = FALSE;
- }
- }
- break;
- case OPTV_BOOLEAN:
- if (GetBoolValue (p, s))
- {
- p->found = TRUE;
- }
- else
- {
- winDrvMsg (scrnIndex, X_WARNING,
- "Option \"%s\" requires a boolean value\n", p->name);
- p->found = FALSE;
- }
- break;
- case OPTV_FREQ:
- if (*s == '\0')
- {
- winDrvMsg (scrnIndex, X_WARNING,
- "Option \"%s\" requires a frequency value\n",
- p->name);
- p->found = FALSE;
- }
- else
- {
- double freq = strtod (s, &end);
- int units = 0;
-
- if (end != s)
- {
- p->found = TRUE;
- if (!winNameCompare (end, "Hz"))
- units = 1;
- else if (!winNameCompare (end, "kHz") ||
- !winNameCompare (end, "k"))
- units = 1000;
- else if (!winNameCompare (end, "MHz") ||
- !winNameCompare (end, "M"))
- units = 1000000;
- else
- {
- winDrvMsg (scrnIndex, X_WARNING,
- "Option \"%s\" requires a frequency value\n",
- p->name);
- p->found = FALSE;
- }
- if (p->found)
- freq *= (double) units;
- }
- else
- {
- winDrvMsg (scrnIndex, X_WARNING,
- "Option \"%s\" requires a frequency value\n",
- p->name);
- p->found = FALSE;
- }
- if (p->found)
- {
- p->value.freq.freq = freq;
- p->value.freq.units = units;
- }
- }
- break;
- case OPTV_NONE:
- /* Should never get here */
- p->found = FALSE;
- break;
- }
- if (p->found)
- {
- winDrvMsgVerb (scrnIndex, X_CONFIG, 2, "Option \"%s\"", p->name);
- if (!(p->type == OPTV_BOOLEAN && *s == 0))
- {
- winErrorFVerb (2, " \"%s\"", s);
- }
- winErrorFVerb (2, "\n");
- }
- }
- else if (p->type == OPTV_BOOLEAN)
- {
- /* Look for matches with options with or without a "No" prefix. */
- char *n, *newn;
- OptionInfoRec opt;
-
- n = winNormalizeName (p->name);
- if (!n)
- {
- p->found = FALSE;
- return FALSE;
- }
- if (strncmp (n, "no", 2) == 0)
- {
- newn = n + 2;
- }
- else
- {
- free (n);
- n = malloc (strlen (p->name) + 2 + 1);
- if (!n)
- {
- p->found = FALSE;
- return FALSE;
- }
- strcpy (n, "No");
- strcat (n, p->name);
- newn = n;
- }
- if ((s = winFindOptionValue (options, newn)) != NULL)
- {
- if (GetBoolValue (&opt, s))
- {
- p->value.bool = !opt.value.bool;
- p->found = TRUE;
- }
- else
- {
- winDrvMsg (scrnIndex, X_WARNING,
- "Option \"%s\" requires a boolean value\n", newn);
- p->found = FALSE;
- }
- }
- else
- {
- p->found = FALSE;
- }
- if (p->found)
- {
- winDrvMsgVerb (scrnIndex, X_CONFIG, 2, "Option \"%s\"", newn);
- if (*s != 0)
- {
- winErrorFVerb (2, " \"%s\"", s);
- }
- winErrorFVerb (2, "\n");
- }
- free (n);
- }
- else
- {
- p->found = FALSE;
- }
- return p->found;
-}
-
-
-static Bool
-configLayout (serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout,
- char *default_layout)
-{
-#if 0
-#pragma warn UNIMPLEMENTED
-#endif
- return TRUE;
-}
-
-
-static Bool
-configImpliedLayout (serverLayoutPtr servlayoutp,
- XF86ConfScreenPtr conf_screen)
-{
-#if 0
-#pragma warn UNIMPLEMENTED
-#endif
- return TRUE;
-}
-
-
-static Bool
-GetBoolValue (OptionInfoPtr p, const char *s)
-{
- if (*s == 0)
- {
- p->value.bool = TRUE;
- }
- else
- {
- if (winNameCompare (s, "1") == 0)
- p->value.bool = TRUE;
- else if (winNameCompare (s, "on") == 0)
- p->value.bool = TRUE;
- else if (winNameCompare (s, "true") == 0)
- p->value.bool = TRUE;
- else if (winNameCompare (s, "yes") == 0)
- p->value.bool = TRUE;
- else if (winNameCompare (s, "0") == 0)
- p->value.bool = FALSE;
- else if (winNameCompare (s, "off") == 0)
- p->value.bool = FALSE;
- else if (winNameCompare (s, "false") == 0)
- p->value.bool = FALSE;
- else if (winNameCompare (s, "no") == 0)
- p->value.bool = FALSE;
- }
- return TRUE;
-}
-#endif
-
-
-char *
-winNormalizeName (const char *s)
-{
- char *ret, *q;
- const char *p;
-
- if (s == NULL)
- return NULL;
-
- ret = malloc (strlen (s) + 1);
- for (p = s, q = ret; *p != 0; p++)
- {
- switch (*p)
- {
- case '_':
- case ' ':
- case '\t':
- continue;
- default:
- if (isupper (*p))
- *q++ = tolower (*p);
- else
- *q++ = *p;
- }
- }
- *q = '\0';
- return ret;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/winconfig.h b/nx-X11/programs/Xserver/hw/xwin/winconfig.h
deleted file mode 100644
index 46990ba09..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winconfig.h
+++ /dev/null
@@ -1,345 +0,0 @@
-#ifndef __WIN_CONFIG_H__
-#define __WIN_CONFIG_H__
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Alexander Gottwald
- */
-/* $Id: winconfig.h,v 1.4 2005/07/01 22:43:40 daniels Exp $ */
-
-#include "win.h"
-#ifdef XWIN_XF86CONFIG
-#include "../xfree86/parser/xf86Parser.h"
-#endif
-
-
-/* These are taken from hw/xfree86/common/xf86str.h */
-
-typedef struct
-{
- CARD32 red, green, blue;
-}
-rgb;
-
-
-typedef struct
-{
- float red, green, blue;
-}
-Gamma;
-
-
-typedef struct
-{
- char *identifier;
- char *vendor;
- char *board;
- char *chipset;
- char *ramdac;
- char *driver;
- struct _confscreenrec *myScreenSection;
- Bool claimed;
- Bool active;
- Bool inUse;
- int videoRam;
- int textClockFreq;
- pointer options;
- int screen; /* For multi-CRTC cards */
-}
-GDevRec, *GDevPtr;
-
-
-typedef struct
-{
- char *identifier;
- char *driver;
- pointer commonOptions;
- pointer extraOptions;
-}
-IDevRec, *IDevPtr;
-
-
-typedef struct
-{
- int frameX0;
- int frameY0;
- int virtualX;
- int virtualY;
- int depth;
- int fbbpp;
- rgb weight;
- rgb blackColour;
- rgb whiteColour;
- int defaultVisual;
- char **modes;
- pointer options;
-}
-DispRec, *DispPtr;
-
-
-typedef struct _confxvportrec
-{
- char *identifier;
- pointer options;
-}
-confXvPortRec, *confXvPortPtr;
-
-
-typedef struct _confxvadaptrec
-{
- char *identifier;
- int numports;
- confXvPortPtr ports;
- pointer options;
-}
-confXvAdaptorRec, *confXvAdaptorPtr;
-
-
-typedef struct _confscreenrec
-{
- char *id;
- int screennum;
- int defaultdepth;
- int defaultbpp;
- int defaultfbbpp;
- GDevPtr device;
- int numdisplays;
- DispPtr displays;
- int numxvadaptors;
- confXvAdaptorPtr xvadaptors;
- pointer options;
-}
-confScreenRec, *confScreenPtr;
-
-
-typedef enum
-{
- PosObsolete = -1,
- PosAbsolute = 0,
- PosRightOf,
- PosLeftOf,
- PosAbove,
- PosBelow,
- PosRelative
-}
-PositionType;
-
-
-typedef struct _screenlayoutrec
-{
- confScreenPtr screen;
- char *topname;
- confScreenPtr top;
- char *bottomname;
- confScreenPtr bottom;
- char *leftname;
- confScreenPtr left;
- char *rightname;
- confScreenPtr right;
- PositionType where;
- int x;
- int y;
- char *refname;
- confScreenPtr refscreen;
-}
-screenLayoutRec, *screenLayoutPtr;
-
-
-typedef struct _serverlayoutrec
-{
- char *id;
- screenLayoutPtr screens;
- GDevPtr inactives;
- IDevPtr inputs;
- pointer options;
-}
-serverLayoutRec, *serverLayoutPtr;
-
-
-/*
- * winconfig.c
- */
-
-typedef struct
-{
- /* Files */
-#ifdef XWIN_XF86CONFIG
- char *configFile;
-#endif
- char *fontPath;
- char *rgbPath;
- /* input devices - keyboard */
-#ifdef XWIN_XF86CONFIG
- char *keyboard;
-#endif
-#ifdef XKB
- Bool noXkbExtension;
- char *xkbMap;
- char *xkbRules;
- char *xkbModel;
- char *xkbLayout;
- char *xkbVariant;
- char *xkbOptions;
-#endif
- /* layout */
- char *screenname;
- /* mouse settings */
- char *mouse;
- Bool emulate3buttons;
- long emulate3timeout;
-}
-WinCmdlineRec, *WinCmdlinePtr;
-
-
-extern WinCmdlineRec g_cmdline;
-#ifdef XWIN_XF86CONFIG
-extern XF86ConfigPtr g_xf86configptr;
-#endif
-extern serverLayoutRec g_winConfigLayout;
-
-
-/*
- * Function prototypes
- */
-
-Bool winReadConfigfile (void);
-Bool winConfigFiles (void);
-Bool winConfigOptions (void);
-Bool winConfigScreens (void);
-Bool winConfigKeyboard (DeviceIntPtr pDevice);
-Bool winConfigMouse (DeviceIntPtr pDevice);
-
-
-typedef struct
-{
- double freq;
- int units;
-}
-OptFrequency;
-
-
-typedef union
-{
- unsigned long num;
- char *str;
- double realnum;
- Bool bool;
- OptFrequency freq;
-}
-ValueUnion;
-
-
-typedef enum
-{
- OPTV_NONE = 0,
- OPTV_INTEGER,
- OPTV_STRING, /* a non-empty string */
- OPTV_ANYSTR, /* Any string, including an empty one */
- OPTV_REAL,
- OPTV_BOOLEAN,
- OPTV_FREQ
-}
-OptionValueType;
-
-
-typedef enum
-{
- OPTUNITS_HZ = 1,
- OPTUNITS_KHZ,
- OPTUNITS_MHZ
-}
-OptFreqUnits;
-
-
-typedef struct
-{
- int token;
- const char *name;
- OptionValueType type;
- ValueUnion value;
- Bool found;
-}
-OptionInfoRec, *OptionInfoPtr;
-
-
-/*
- * Function prototypes
- */
-
-char *winSetStrOption (pointer optlist, const char *name, char *deflt);
-int winSetBoolOption (pointer optlist, const char *name, int deflt);
-int winSetIntOption (pointer optlist, const char *name, int deflt);
-double winSetRealOption (pointer optlist, const char *name, double deflt);
-#ifdef XWIN_XF86CONFIG
-XF86OptionPtr winFindOption (XF86OptionPtr list, const char *name);
-char *winFindOptionValue (XF86OptionPtr list, const char *name);
-#endif
-int winNameCompare (const char *s1, const char *s2);
-char *winNormalizeName (const char *s);
-
-
-typedef struct
-{
- struct
- {
- long leds;
- long delay;
- long rate;
- }
- keyboard;
-#ifdef XKB
- struct
- {
- Bool disable;
- char *rules;
- char *model;
- char *layout;
- char *variant;
- char *options;
- char *initialMap;
- char *keymap;
- char *types;
- char *compat;
- char *keycodes;
- char *symbols;
- char *geometry;
- }
- xkb;
-#endif
- struct
- {
- Bool emulate3Buttons;
- long emulate3Timeout;
- }
- pointer;
-}
-winInfoRec, *winInfoPtr;
-
-
-extern winInfoRec g_winInfo;
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/wincreatewnd.c b/nx-X11/programs/Xserver/hw/xwin/wincreatewnd.c
deleted file mode 100644
index 7c93e4063..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/wincreatewnd.c
+++ /dev/null
@@ -1,642 +0,0 @@
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "shellapi.h"
-
-#ifndef ABS_AUTOHIDE
-#define ABS_AUTOHIDE 1
-#endif
-
-/*
- * Local function prototypes
- */
-
-static Bool
-winGetWorkArea (RECT *prcWorkArea, winScreenInfo *pScreenInfo);
-
-static Bool
-winAdjustForAutoHide (RECT *prcWorkArea);
-
-
-/*
- * Create a full screen window
- */
-
-Bool
-winCreateBoundingWindowFullScreen (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- int iWidth = pScreenInfo->dwWidth;
- int iHeight = pScreenInfo->dwHeight;
- HWND *phwnd = &pScreenPriv->hwndScreen;
- WNDCLASS wc;
- char szTitle[256];
-
-#if CYGDEBUG
- winDebug ("winCreateBoundingWindowFullScreen\n");
-#endif
-
- /* Setup our window class */
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = winWindowProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = g_hInstance;
- wc.hIcon = LoadIcon (g_hInstance, MAKEINTRESOURCE(IDI_XWIN));
- wc.hCursor = 0;
- wc.hbrBackground = 0;
- wc.lpszMenuName = NULL;
- wc.lpszClassName = WINDOW_CLASS;
- RegisterClass (&wc);
-
- /* Set display and screen-specific tooltip text */
- if (g_pszQueryHost != NULL)
- snprintf (szTitle,
- sizeof (szTitle),
- WINDOW_TITLE_XDMCP,
- g_pszQueryHost);
- else
- snprintf (szTitle,
- sizeof (szTitle),
- WINDOW_TITLE,
- display,
- (int) pScreenInfo->dwScreen);
-
- /* Create the window */
- *phwnd = CreateWindowExA (0, /* Extended styles */
- WINDOW_CLASS, /* Class name */
- szTitle, /* Window name */
- WS_POPUP,
- 0, /* Horizontal position */
- 0, /* Vertical position */
- iWidth, /* Right edge */
- iHeight, /* Bottom edge */
- (HWND) NULL, /* No parent or owner window */
- (HMENU) NULL, /* No menu */
- GetModuleHandle (NULL),/* Instance handle */
- pScreenPriv); /* ScreenPrivates */
-
- /* Branch on the server engine */
- switch (pScreenInfo->dwEngine)
- {
-#ifdef XWIN_NATIVEGDI
- case WIN_SERVER_SHADOW_GDI:
- /* Show the window */
- ShowWindow (*phwnd, SW_SHOWMAXIMIZED);
- break;
-#endif
-
- default:
- /* Hide the window */
- ShowWindow (*phwnd, SW_SHOWNORMAL);
- break;
- }
-
- /* Send first paint message */
- UpdateWindow (*phwnd);
-
- /* Attempt to bring our window to the top of the display */
- BringWindowToTop (*phwnd);
-
- return TRUE;
-}
-
-
-/*
- * Create our primary Windows display window
- */
-
-Bool
-winCreateBoundingWindowWindowed (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- int iWidth = pScreenInfo->dwUserWidth;
- int iHeight = pScreenInfo->dwUserHeight;
- int iPosX;
- int iPosY;
- HWND *phwnd = &pScreenPriv->hwndScreen;
- WNDCLASS wc;
- RECT rcClient, rcWorkArea;
- DWORD dwWindowStyle;
- BOOL fForceShowWindow = FALSE;
- char szTitle[256];
-
- winDebug ("winCreateBoundingWindowWindowed - User w: %d h: %d\n",
- (int) pScreenInfo->dwUserWidth, (int) pScreenInfo->dwUserHeight);
- winDebug ("winCreateBoundingWindowWindowed - Current w: %d h: %d\n",
- (int) pScreenInfo->dwWidth, (int) pScreenInfo->dwHeight);
-
- /* Set the common window style flags */
- dwWindowStyle = WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX;
-
- /* Decorated or undecorated window */
- if (pScreenInfo->fDecoration
-#ifdef XWIN_MULTIWINDOWEXTWM
- && !pScreenInfo->fMWExtWM
-#endif
- && !pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOW
- && !pScreenInfo->fMultiWindow
-#endif
- )
- {
- /* Try to handle startup via run.exe. run.exe instructs Windows to
- * hide all created windows. Detect this case and make sure the
- * window is shown nevertheless */
- STARTUPINFO startupInfo;
- GetStartupInfo(&startupInfo);
- if (startupInfo.dwFlags & STARTF_USESHOWWINDOW &&
- startupInfo.wShowWindow == SW_HIDE)
- {
- fForceShowWindow = TRUE;
- }
- dwWindowStyle |= WS_CAPTION;
- if (pScreenInfo->fScrollbars)
- dwWindowStyle |= WS_THICKFRAME | WS_MAXIMIZEBOX;
- }
- else
- dwWindowStyle |= WS_POPUP;
-
- /* Setup our window class */
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = winWindowProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = g_hInstance;
- wc.hIcon = LoadIcon (g_hInstance, MAKEINTRESOURCE(IDI_XWIN));
- wc.hCursor = 0;
- wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = WINDOW_CLASS;
- RegisterClass (&wc);
-
- /* Get size of work area */
- winGetWorkArea (&rcWorkArea, pScreenInfo);
-
- /* Adjust for auto-hide taskbars */
- winAdjustForAutoHide (&rcWorkArea);
-
- /* Did the user specify a position? */
- if (pScreenInfo->fUserGavePosition)
- {
- iPosX = pScreenInfo->dwInitialX;
- iPosY = pScreenInfo->dwInitialY;
- }
- else
- {
- iPosX = rcWorkArea.left;
- iPosY = rcWorkArea.top;
- }
-
- /* Did the user specify a height and width? */
- if (pScreenInfo->fUserGaveHeightAndWidth)
- {
- /* User gave a desired height and width, try to accomodate */
-#if CYGDEBUG
- winDebug ("winCreateBoundingWindowWindowed - User gave height "
- "and width\n");
-#endif
-
- /* Adjust the window width and height for borders and title bar */
- if (pScreenInfo->fDecoration
-#ifdef XWIN_MULTIWINDOWEXTWM
- && !pScreenInfo->fMWExtWM
-#endif
- && !pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOW
- && !pScreenInfo->fMultiWindow
-#endif
- )
- {
-#if CYGDEBUG
- winDebug ("winCreateBoundingWindowWindowed - Window has decoration\n");
-#endif
- /* Are we using scrollbars? */
- if (pScreenInfo->fScrollbars)
- {
-#if CYGDEBUG
- winDebug ("winCreateBoundingWindowWindowed - Window has "
- "scrollbars\n");
-#endif
-
- iWidth += 2 * GetSystemMetrics (SM_CXSIZEFRAME);
- iHeight += 2 * GetSystemMetrics (SM_CYSIZEFRAME)
- + GetSystemMetrics (SM_CYCAPTION);
- }
- else
- {
-#if CYGDEBUG
- winDebug ("winCreateBoundingWindowWindowed - Window does not have "
- "scrollbars\n");
-#endif
-
- iWidth += 2 * GetSystemMetrics (SM_CXFIXEDFRAME);
- iHeight += 2 * GetSystemMetrics (SM_CYFIXEDFRAME)
- + GetSystemMetrics (SM_CYCAPTION);
- }
- }
- }
- else
- {
- /* By default, we are creating a window that is as large as possible */
-#if CYGDEBUG
- winDebug ("winCreateBoundingWindowWindowed - User did not give "
- "height and width\n");
-#endif
- /* Defaults are wrong if we have multiple monitors */
- if (pScreenInfo->fMultipleMonitors)
- {
- iWidth = GetSystemMetrics (SM_CXVIRTUALSCREEN);
- iHeight = GetSystemMetrics (SM_CYVIRTUALSCREEN);
- }
- }
-
- /* Clean up the scrollbars flag, if necessary */
- if ((!pScreenInfo->fDecoration
-#ifdef XWIN_MULTIWINDOWEXTWM
- || pScreenInfo->fMWExtWM
-#endif
- || pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOW
- || pScreenInfo->fMultiWindow
-#endif
- )
- && pScreenInfo->fScrollbars)
- {
- /* We cannot have scrollbars if we do not have a window border */
- pScreenInfo->fScrollbars = FALSE;
- }
-
- if (TRUE
-#ifdef XWIN_MULTIWINDOWEXTWM
- && !pScreenInfo->fMWExtWM
-#endif
-#ifdef XWIN_MULTIWINDOW
- && !pScreenInfo->fMultiWindow
-#endif
- )
- {
- /* Trim window width to fit work area */
- if (iWidth > (rcWorkArea.right - rcWorkArea.left))
- iWidth = rcWorkArea.right - rcWorkArea.left;
-
- /* Trim window height to fit work area */
- if (iHeight >= (rcWorkArea.bottom - rcWorkArea.top))
- iHeight = rcWorkArea.bottom - rcWorkArea.top;
-
-#if CYGDEBUG
- winDebug ("winCreateBoundingWindowWindowed - Adjusted width: %d "\
- "height: %d\n",
- iWidth, iHeight);
-#endif
- }
-
- /* Set display and screen-specific tooltip text */
- if (g_pszQueryHost != NULL)
- snprintf (szTitle,
- sizeof (szTitle),
- WINDOW_TITLE_XDMCP,
- g_pszQueryHost);
- else
- snprintf (szTitle,
- sizeof (szTitle),
- WINDOW_TITLE,
- display,
- (int) pScreenInfo->dwScreen);
-
- /* Create the window */
- *phwnd = CreateWindowExA (0, /* Extended styles */
- WINDOW_CLASS, /* Class name */
- szTitle, /* Window name */
- dwWindowStyle,
- iPosX, /* Horizontal position */
- iPosY, /* Vertical position */
- iWidth, /* Right edge */
- iHeight, /* Bottom edge */
- (HWND) NULL, /* No parent or owner window */
- (HMENU) NULL, /* No menu */
- GetModuleHandle (NULL),/* Instance handle */
- pScreenPriv); /* ScreenPrivates */
- if (*phwnd == NULL)
- {
- ErrorF ("winCreateBoundingWindowWindowed - CreateWindowEx () failed\n");
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winCreateBoundingWindowWindowed - CreateWindowEx () returned\n");
-#endif
-
- if (fForceShowWindow)
- {
- ErrorF("winCreateBoundingWindowWindowed - Setting normal windowstyle\n");
- ShowWindow(*phwnd, SW_SHOW);
- }
-
- /* Get the client area coordinates */
- if (!GetClientRect (*phwnd, &rcClient))
- {
- ErrorF ("winCreateBoundingWindowWindowed - GetClientRect () "
- "failed\n");
- return FALSE;
- }
-
- winDebug ("winCreateBoundingWindowWindowed - WindowClient "
- "w %ld h %ld r %ld l %ld b %ld t %ld\n",
- rcClient.right - rcClient.left,
- rcClient.bottom - rcClient.top,
- rcClient.right, rcClient.left,
- rcClient.bottom, rcClient.top);
-
- /* We adjust the visual size if the user did not specify it */
- if (!(pScreenInfo->fScrollbars && pScreenInfo->fUserGaveHeightAndWidth))
- {
- /*
- * User did not give a height and width with scrollbars enabled,
- * so we will resize the underlying visual to be as large as
- * the initial view port (page size). This way scrollbars will
- * not appear until the user shrinks the window, if they ever do.
- *
- * NOTE: We have to store the viewport size here because
- * the user may have an autohide taskbar, which would
- * cause the viewport size to be one less in one dimension
- * than the viewport size that we calculated by subtracting
- * the size of the borders and caption.
- */
- pScreenInfo->dwWidth = rcClient.right - rcClient.left;
- pScreenInfo->dwHeight = rcClient.bottom - rcClient.top;
- }
-
-#if 0
- /*
- * NOTE: For the uninitiated, the page size is the number of pixels
- * that we can display in the x or y direction at a time and the
- * range is the total number of pixels in the x or y direction that we
- * have available to display. In other words, the page size is the
- * size of the window area minus the space the caption, borders, and
- * scrollbars (if any) occupy, and the range is the size of the
- * underlying X visual. Notice that, contrary to what some of the
- * MSDN Library arcticles lead you to believe, the windows
- * ``client area'' size does not include the scrollbars. In other words,
- * the whole client area size that is reported to you is drawable by
- * you; you do not have to subtract the size of the scrollbars from
- * the client area size, and if you did it would result in the size
- * of the scrollbars being double counted.
- */
-
- /* Setup scrollbar page and range, if scrollbars are enabled */
- if (pScreenInfo->fScrollbars)
- {
- SCROLLINFO si;
-
- /* Initialize the scrollbar info structure */
- si.cbSize = sizeof (si);
- si.fMask = SIF_RANGE | SIF_PAGE;
- si.nMin = 0;
-
- /* Setup the width range and page size */
- si.nMax = pScreenInfo->dwWidth - 1;
- si.nPage = rcClient.right - rcClient.left;
- winDebug ("winCreateBoundingWindowWindowed - HORZ nMax: %d nPage :%d\n",
- si.nMax, si.nPage);
- SetScrollInfo (*phwnd, SB_HORZ, &si, TRUE);
-
- /* Setup the height range and page size */
- si.nMax = pScreenInfo->dwHeight - 1;
- si.nPage = rcClient.bottom - rcClient.top;
- winDebug ("winCreateBoundingWindowWindowed - VERT nMax: %d nPage :%d\n",
- si.nMax, si.nPage);
- SetScrollInfo (*phwnd, SB_VERT, &si, TRUE);
- }
-#endif
-
- /* Show the window */
- if (FALSE
-#ifdef XWIN_MULTIWINDOWEXTWM
- || pScreenInfo->fMWExtWM
-#endif
-#ifdef XWIN_MULTIWINDOW
- || pScreenInfo->fMultiWindow
-#endif
- )
- {
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- pScreenPriv->fRootWindowShown = FALSE;
-#endif
- ShowWindow (*phwnd, SW_HIDE);
- }
- else
- ShowWindow (*phwnd, SW_SHOWNORMAL);
- if (!UpdateWindow (*phwnd))
- {
- ErrorF ("winCreateBoundingWindowWindowed - UpdateWindow () failed\n");
- return FALSE;
- }
-
- /* Attempt to bring our window to the top of the display */
- if (TRUE
-#ifdef XWIN_MULTIWINDOWEXTWM
- && !pScreenInfo->fMWExtWM
-#endif
- && !pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOW
- && !pScreenInfo->fMultiWindow
-#endif
- )
- {
- if (!BringWindowToTop (*phwnd))
- {
- ErrorF ("winCreateBoundingWindowWindowed - BringWindowToTop () "
- "failed\n");
- return FALSE;
- }
- }
-
-#ifdef XWIN_NATIVEGDI
- /* Paint window background blue */
- if (pScreenInfo->dwEngine == WIN_SERVER_NATIVE_GDI)
- winPaintBackground (*phwnd, RGB (0x00, 0x00, 0xFF));
-#endif
-
- winDebug ("winCreateBoundingWindowWindowed - Returning\n");
-
- return TRUE;
-}
-
-
-/*
- * Find the work area of all attached monitors
- */
-
-static Bool
-winGetWorkArea (RECT *prcWorkArea, winScreenInfo *pScreenInfo)
-{
- int iPrimaryWidth, iPrimaryHeight;
- int iWidth, iHeight;
- int iLeft, iTop;
- int iPrimaryNonWorkAreaWidth, iPrimaryNonWorkAreaHeight;
-
- /* SPI_GETWORKAREA only gets the work area of the primary screen. */
- SystemParametersInfo (SPI_GETWORKAREA, 0, prcWorkArea, 0);
-
- /* Bail out here if we aren't using multiple monitors */
- if (!pScreenInfo->fMultipleMonitors)
- return TRUE;
-
- winDebug ("winGetWorkArea - Original WorkArea: %d %d %d %d\n",
- (int) prcWorkArea->top, (int) prcWorkArea->left,
- (int) prcWorkArea->bottom, (int) prcWorkArea->right);
-
- /* Get size of full virtual screen */
- iWidth = GetSystemMetrics (SM_CXVIRTUALSCREEN);
- iHeight = GetSystemMetrics (SM_CYVIRTUALSCREEN);
-
- winDebug ("winGetWorkArea - Virtual screen is %d x %d\n", iWidth, iHeight);
-
- /* Get origin of full virtual screen */
- iLeft = GetSystemMetrics (SM_XVIRTUALSCREEN);
- iTop = GetSystemMetrics (SM_YVIRTUALSCREEN);
-
- winDebug ("winGetWorkArea - Virtual screen origin is %d, %d\n", iLeft, iTop);
-
- /* Get size of primary screen */
- iPrimaryWidth = GetSystemMetrics (SM_CXSCREEN);
- iPrimaryHeight = GetSystemMetrics (SM_CYSCREEN);
-
- winDebug ("winGetWorkArea - Primary screen is %d x %d\n",
- iPrimaryWidth, iPrimaryHeight);
-
- /* Work out how much of the primary screen we aren't using */
- iPrimaryNonWorkAreaWidth = iPrimaryWidth - (prcWorkArea->right -
- prcWorkArea->left);
- iPrimaryNonWorkAreaHeight = iPrimaryHeight - (prcWorkArea->bottom
- - prcWorkArea->top);
-
- /* Update the rectangle to include all monitors */
- if (iLeft < 0)
- {
- prcWorkArea->left = iLeft;
- }
- if (iTop < 0)
- {
- prcWorkArea->top = iTop;
- }
- prcWorkArea->right = prcWorkArea->left + iWidth -
- iPrimaryNonWorkAreaWidth;
- prcWorkArea->bottom = prcWorkArea->top + iHeight -
- iPrimaryNonWorkAreaHeight;
-
- winDebug ("winGetWorkArea - Adjusted WorkArea for multiple "
- "monitors: %d %d %d %d\n",
- (int) prcWorkArea->top, (int) prcWorkArea->left,
- (int) prcWorkArea->bottom, (int) prcWorkArea->right);
-
- return TRUE;
-}
-
-
-/*
- * Adjust the client area so that any auto-hide toolbars
- * will work correctly.
- */
-
-static Bool
-winAdjustForAutoHide (RECT *prcWorkArea)
-{
- APPBARDATA abd;
- HWND hwndAutoHide;
-
- winDebug ("winAdjustForAutoHide - Original WorkArea: %d %d %d %d\n",
- (int) prcWorkArea->top, (int) prcWorkArea->left,
- (int) prcWorkArea->bottom, (int) prcWorkArea->right);
-
- /* Find out if the Windows taskbar is set to auto-hide */
- ZeroMemory (&abd, sizeof (abd));
- abd.cbSize = sizeof (abd);
- if (SHAppBarMessage (ABM_GETSTATE, &abd) & ABS_AUTOHIDE)
- winDebug ("winAdjustForAutoHide - Taskbar is auto hide\n");
-
- /* Look for a TOP auto-hide taskbar */
- abd.uEdge = ABE_TOP;
- hwndAutoHide = (HWND) SHAppBarMessage (ABM_GETAUTOHIDEBAR, &abd);
- if (hwndAutoHide != NULL)
- {
- winDebug ("winAdjustForAutoHide - Found TOP auto-hide taskbar\n");
- prcWorkArea->top += 1;
- }
-
- /* Look for a LEFT auto-hide taskbar */
- abd.uEdge = ABE_LEFT;
- hwndAutoHide = (HWND) SHAppBarMessage (ABM_GETAUTOHIDEBAR, &abd);
- if (hwndAutoHide != NULL)
- {
- winDebug ("winAdjustForAutoHide - Found LEFT auto-hide taskbar\n");
- prcWorkArea->left += 1;
- }
-
- /* Look for a BOTTOM auto-hide taskbar */
- abd.uEdge = ABE_BOTTOM;
- hwndAutoHide = (HWND) SHAppBarMessage (ABM_GETAUTOHIDEBAR, &abd);
- if (hwndAutoHide != NULL)
- {
- winDebug ("winAdjustForAutoHide - Found BOTTOM auto-hide taskbar\n");
- prcWorkArea->bottom -= 1;
- }
-
- /* Look for a RIGHT auto-hide taskbar */
- abd.uEdge = ABE_RIGHT;
- hwndAutoHide = (HWND) SHAppBarMessage (ABM_GETAUTOHIDEBAR, &abd);
- if (hwndAutoHide != NULL)
- {
- winDebug ("winAdjustForAutoHide - Found RIGHT auto-hide taskbar\n");
- prcWorkArea->right -= 1;
- }
-
- winDebug ("winAdjustForAutoHide - Adjusted WorkArea: %d %d %d %d\n",
- (int) prcWorkArea->top, (int) prcWorkArea->left,
- (int) prcWorkArea->bottom, (int) prcWorkArea->right);
-
-#if 0
- /* Obtain the task bar window dimensions */
- abd.hWnd = hwndAutoHide;
- hwndAutoHide = (HWND) SHAppBarMessage (ABM_GETTASKBARPOS, &abd);
- winDebug ("hwndAutoHide %08x abd.hWnd %08x %d %d %d %d\n",
- hwndAutoHide, abd.hWnd,
- abd.rc.top, abd.rc.left, abd.rc.bottom, abd.rc.right);
-#endif
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/wincursor.c b/nx-X11/programs/Xserver/hw/xwin/wincursor.c
deleted file mode 100644
index 5a619922a..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/wincursor.c
+++ /dev/null
@@ -1,615 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Dakshinamurthy Karra
- * Suhaib M Siddiqi
- * Peter Busch
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/wincursor.c,v 1.5 2002/07/05 09:19:26 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "winmsg.h"
-#include <cursorstr.h>
-#include <mipointrst.h>
-#include <servermd.h>
-
-
-#ifndef MIN
-#define MIN(x,y) ((x)<(y)?(x):(y))
-#endif
-
-#define BYTE_COUNT(x) (((x) + 7) / 8)
-
-#define BRIGHTNESS(x) (x##Red * 0.299 + x##Green * 0.587 + x##Blue * 0.114)
-
-#if 0
-# define WIN_DEBUG_MSG winDebug
-#else
-# define WIN_DEBUG_MSG(...)
-#endif
-
-/*
- * Local function prototypes
- */
-
-static void
-winPointerWarpCursor (ScreenPtr pScreen, int x, int y);
-
-static Bool
-winCursorOffScreen (ScreenPtr *ppScreen, int *x, int *y);
-
-static void
-winCrossScreen (ScreenPtr pScreen, Bool fEntering);
-
-miPointerScreenFuncRec g_winPointerCursorFuncs =
-{
- winCursorOffScreen,
- winCrossScreen,
- winPointerWarpCursor
-};
-
-
-static void
-winPointerWarpCursor (ScreenPtr pScreen, int x, int y)
-{
- winScreenPriv(pScreen);
- RECT rcClient;
- static Bool s_fInitialWarp = TRUE;
-
- /* Discard first warp call */
- if (s_fInitialWarp)
- {
- /* First warp moves mouse to center of window, just ignore it */
-
- /* Don't ignore subsequent warps */
- s_fInitialWarp = FALSE;
-
- winErrorFVerb (2, "winPointerWarpCursor - Discarding first warp: %d %d\n",
- x, y);
-
- return;
- }
-
- /* Only update the Windows cursor position if we are active */
- if (pScreenPriv->hwndScreen == GetForegroundWindow ())
- {
- /* Get the client area coordinates */
- GetClientRect (pScreenPriv->hwndScreen, &rcClient);
-
- /* Translate the client area coords to screen coords */
- MapWindowPoints (pScreenPriv->hwndScreen,
- HWND_DESKTOP,
- (LPPOINT)&rcClient,
- 2);
-
- /*
- * Update the Windows cursor position so that we don't
- * immediately warp back to the current position.
- */
- SetCursorPos (rcClient.left + x, rcClient.top + y);
- }
-
- /* Call the mi warp procedure to do the actual warping in X. */
- miPointerWarpCursor (pScreen, x, y);
-}
-
-static Bool
-winCursorOffScreen (ScreenPtr *ppScreen, int *x, int *y)
-{
- return FALSE;
-}
-
-static void
-winCrossScreen (ScreenPtr pScreen, Bool fEntering)
-{
-}
-
-static unsigned char
-reverse(unsigned char c)
-{
- int i;
- unsigned char ret = 0;
- for (i = 0; i < 8; ++i)
- {
- ret |= ((c >> i)&1) << (7 - i);
- }
- return ret;
-}
-
-/*
- * Convert X cursor to Windows cursor
- * FIXME: Perhaps there are more smart code
- */
-static HCURSOR
-winLoadCursor (ScreenPtr pScreen, CursorPtr pCursor, int screen)
-{
- winScreenPriv(pScreen);
- HCURSOR hCursor = NULL;
- unsigned char *pAnd;
- unsigned char *pXor;
- int nCX, nCY;
- int nBytes;
- double dForeY, dBackY;
- BOOL fReverse;
- HBITMAP hAnd, hXor;
- ICONINFO ii;
- unsigned char *pCur;
- int x, y;
- unsigned char bit;
- HDC hDC;
- BITMAPV4HEADER bi;
- BITMAPINFO *pbmi;
- unsigned long *lpBits;
-
- WIN_DEBUG_MSG("winLoadCursor: Win32: %dx%d X11: %dx%d hotspot: %d,%d\n",
- pScreenPriv->cursor.sm_cx, pScreenPriv->cursor.sm_cy,
- pCursor->bits->width, pCursor->bits->height,
- pCursor->bits->xhot, pCursor->bits->yhot
- );
-
- /* We can use only White and Black, so calc brightness of color
- * Also check if the cursor is inverted */
- dForeY = BRIGHTNESS(pCursor->fore);
- dBackY = BRIGHTNESS(pCursor->back);
- fReverse = dForeY < dBackY;
-
- /* Check wether the X11 cursor is bigger than the win32 cursor */
- if (pScreenPriv->cursor.sm_cx < pCursor->bits->width ||
- pScreenPriv->cursor.sm_cy < pCursor->bits->height)
- {
- winErrorFVerb (2, "winLoadCursor - Windows requires %dx%d cursor\n"
- "\tbut X requires %dx%d\n",
- pScreenPriv->cursor.sm_cx, pScreenPriv->cursor.sm_cy,
- pCursor->bits->width, pCursor->bits->height);
- }
-
- /* Get the number of bytes required to store the whole cursor image
- * This is roughly (sm_cx * sm_cy) / 8
- * round up to 8 pixel boundary so we can convert whole bytes */
- nBytes = BYTE_COUNT(pScreenPriv->cursor.sm_cx) * pScreenPriv->cursor.sm_cy;
-
- /* Get the effective width and height */
- nCX = MIN(pScreenPriv->cursor.sm_cx, pCursor->bits->width);
- nCY = MIN(pScreenPriv->cursor.sm_cy, pCursor->bits->height);
-
- /* Allocate memory for the bitmaps */
- pAnd = malloc (nBytes);
- memset (pAnd, 0xFF, nBytes);
- pXor = malloc (nBytes);
- memset (pXor, 0x00, nBytes);
-
- /* Convert the X11 bitmap to a win32 bitmap
- * The first is for an empty mask */
- if (pCursor->bits->emptyMask)
- {
- int x, y, xmax = BYTE_COUNT(nCX);
- for (y = 0; y < nCY; ++y)
- for (x = 0; x < xmax; ++x)
- {
- int nWinPix = BYTE_COUNT(pScreenPriv->cursor.sm_cx) * y + x;
- int nXPix = BitmapBytePad(pCursor->bits->width) * y + x;
-
- pAnd[nWinPix] = 0;
- if (fReverse)
- pXor[nWinPix] = reverse (~pCursor->bits->source[nXPix]);
- else
- pXor[nWinPix] = reverse (pCursor->bits->source[nXPix]);
- }
- }
- else
- {
- int x, y, xmax = BYTE_COUNT(nCX);
- for (y = 0; y < nCY; ++y)
- for (x = 0; x < xmax; ++x)
- {
- int nWinPix = BYTE_COUNT(pScreenPriv->cursor.sm_cx) * y + x;
- int nXPix = BitmapBytePad(pCursor->bits->width) * y + x;
-
- unsigned char mask = pCursor->bits->mask[nXPix];
- pAnd[nWinPix] = reverse (~mask);
- if (fReverse)
- pXor[nWinPix] = reverse (~pCursor->bits->source[nXPix] & mask);
- else
- pXor[nWinPix] = reverse (pCursor->bits->source[nXPix] & mask);
- }
- }
-
- /* prepare the pointers */
- hCursor = NULL;
- lpBits = NULL;
-
- /* We have a truecolor alpha-blended cursor and can use it! */
- if (pCursor->bits->argb)
- {
- WIN_DEBUG_MSG("winLoadCursor: Trying truecolor alphablended cursor\n");
- memset (&bi, 0, sizeof (BITMAPV4HEADER));
- bi.bV4Size = sizeof(BITMAPV4HEADER);
- bi.bV4Width = pScreenPriv->cursor.sm_cx;
- bi.bV4Height = -(pScreenPriv->cursor.sm_cy); /* right-side up */
- bi.bV4Planes = 1;
- bi.bV4BitCount = 32;
- bi.bV4V4Compression = BI_BITFIELDS;
- bi.bV4RedMask = 0x00FF0000;
- bi.bV4GreenMask = 0x0000FF00;
- bi.bV4BlueMask = 0x000000FF;
- bi.bV4AlphaMask = 0xFF000000;
-
- lpBits = (unsigned long *) calloc (pScreenPriv->cursor.sm_cx*pScreenPriv->cursor.sm_cy,
- sizeof (unsigned long));
-
- if (lpBits)
- {
- for (y=0; y<nCY; y++)
- {
- unsigned long *src, *dst;
- src = &(pCursor->bits->argb[y * pCursor->bits->width]);
- dst = &(lpBits[y * pScreenPriv->cursor.sm_cx]);
- memcpy (dst, src, 4*nCX);
- }
- }
- } /* End if-truecolor-icon */
-
- if (!lpBits)
- {
- /* Bicolor, use a palettized DIB */
- WIN_DEBUG_MSG("winLoadCursor: Trying two color cursor\n");
- pbmi = (BITMAPINFO*)&bi;
- memset (pbmi, 0, sizeof (BITMAPINFOHEADER));
- pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- pbmi->bmiHeader.biWidth = pScreenPriv->cursor.sm_cx;
- pbmi->bmiHeader.biHeight = -abs(pScreenPriv->cursor.sm_cy); /* right-side up */
- pbmi->bmiHeader.biPlanes = 1;
- pbmi->bmiHeader.biBitCount = 8;
- pbmi->bmiHeader.biCompression = BI_RGB;
- pbmi->bmiHeader.biSizeImage = 0;
- pbmi->bmiHeader.biClrUsed = 3;
- pbmi->bmiHeader.biClrImportant = 3;
- pbmi->bmiColors[0].rgbRed = 0; /* Empty */
- pbmi->bmiColors[0].rgbGreen = 0;
- pbmi->bmiColors[0].rgbBlue = 0;
- pbmi->bmiColors[0].rgbReserved = 0;
- pbmi->bmiColors[1].rgbRed = pCursor->backRed>>8; /* Background */
- pbmi->bmiColors[1].rgbGreen = pCursor->backGreen>>8;
- pbmi->bmiColors[1].rgbBlue = pCursor->backBlue>>8;
- pbmi->bmiColors[1].rgbReserved = 0;
- pbmi->bmiColors[2].rgbRed = pCursor->foreRed>>8; /* Foreground */
- pbmi->bmiColors[2].rgbGreen = pCursor->foreGreen>>8;
- pbmi->bmiColors[2].rgbBlue = pCursor->foreBlue>>8;
- pbmi->bmiColors[2].rgbReserved = 0;
-
- lpBits = (unsigned long *) calloc (pScreenPriv->cursor.sm_cx*pScreenPriv->cursor.sm_cy,
- sizeof (char));
-
- pCur = (unsigned char *)lpBits;
- if (lpBits)
- {
- for (y=0; y<pScreenPriv->cursor.sm_cy; y++)
- {
- for (x=0; x<pScreenPriv->cursor.sm_cx; x++)
- {
- if (x>=nCX || y>=nCY) /* Outside of X11 icon bounds */
- (*pCur++) = 0;
- else /* Within X11 icon bounds */
- {
- int nWinPix = BYTE_COUNT(pScreenPriv->cursor.sm_cx) * y + (x/8);
-
- bit = pAnd[nWinPix];
- bit = bit & (1<<(7-(x&7)));
- if (!bit) /* Within the cursor mask? */
- {
- int nXPix = BitmapBytePad(pCursor->bits->width) * y + (x/8);
- bit = ~reverse(~pCursor->bits->source[nXPix] & pCursor->bits->mask[nXPix]);
- bit = bit & (1<<(7-(x&7)));
- if (bit) /* Draw foreground */
- (*pCur++) = 2;
- else /* Draw background */
- (*pCur++) = 1;
- }
- else /* Outside the cursor mask */
- (*pCur++) = 0;
- }
- } /* end for (x) */
- } /* end for (y) */
- } /* end if (lpbits) */
- }
-
- /* If one of the previous two methods gave us the bitmap we need, make a cursor */
- if (lpBits)
- {
- WIN_DEBUG_MSG("winLoadCursor: Creating bitmap cursor: hotspot %d,%d\n",
- pCursor->bits->xhot, pCursor->bits->yhot);
-
- hAnd = NULL;
- hXor = NULL;
-
- hAnd = CreateBitmap (pScreenPriv->cursor.sm_cx, pScreenPriv->cursor.sm_cy, 1, 1, pAnd);
-
- hDC = GetDC (NULL);
- if (hDC)
- {
- hXor = CreateCompatibleBitmap (hDC, pScreenPriv->cursor.sm_cx, pScreenPriv->cursor.sm_cy);
- SetDIBits (hDC, hXor, 0, pScreenPriv->cursor.sm_cy, lpBits, (BITMAPINFO*)&bi, DIB_RGB_COLORS);
- ReleaseDC (NULL, hDC);
- }
- free (lpBits);
-
-
- if (hAnd && hXor)
- {
- ii.fIcon = FALSE;
- ii.xHotspot = pCursor->bits->xhot;
- ii.yHotspot = pCursor->bits->yhot;
- ii.hbmMask = hAnd;
- ii.hbmColor = hXor;
- hCursor = (HCURSOR) CreateIconIndirect( &ii );
-
- if (hCursor == NULL)
- winW32Error(2, "winLoadCursor - CreateIconIndirect failed:");
- else
- {
- if (GetIconInfo(hCursor, &ii))
- {
- if (ii.fIcon)
- {
- WIN_DEBUG_MSG("winLoadCursor: CreateIconIndirect returned no cursor. Trying again.\n");
-
- DestroyCursor(hCursor);
-
- ii.fIcon = FALSE;
- ii.xHotspot = pCursor->bits->xhot;
- ii.yHotspot = pCursor->bits->yhot;
- hCursor = (HCURSOR) CreateIconIndirect( &ii );
-
- if (hCursor == NULL)
- winW32Error(2, "winLoadCursor - CreateIconIndirect failed:");
- }
- /* GetIconInfo creates new bitmaps. Destroy them again */
- if (ii.hbmMask)
- DeleteObject(ii.hbmMask);
- if (ii.hbmColor)
- DeleteObject(ii.hbmColor);
- }
- }
- }
-
- if (hAnd)
- DeleteObject (hAnd);
- if (hXor)
- DeleteObject (hXor);
- }
-
- if (!hCursor)
- {
- /* We couldn't make a color cursor for this screen, use
- black and white instead */
- hCursor = CreateCursor (g_hInstance,
- pCursor->bits->xhot, pCursor->bits->yhot,
- pScreenPriv->cursor.sm_cx, pScreenPriv->cursor.sm_cy,
- pAnd, pXor);
- if (hCursor == NULL)
- winW32Error(2, "winLoadCursor - CreateCursor failed:");
- }
- free (pAnd);
- free (pXor);
-
- return hCursor;
-}
-
-/*
-===========================================================================
-
- Pointer sprite functions
-
-===========================================================================
-*/
-
-/*
- * winRealizeCursor
- * Convert the X cursor representation to native format if possible.
- */
-static Bool
-winRealizeCursor (ScreenPtr pScreen, CursorPtr pCursor)
-{
- WIN_DEBUG_MSG("winRealizeCursor: cursor=%p\n", pCursor);
-
- if(pCursor == NULL || pCursor->bits == NULL)
- return FALSE;
-
- /* FIXME: cache ARGB8888 representation? */
-
- return TRUE;
-}
-
-
-/*
- * winUnrealizeCursor
- * Free the storage space associated with a realized cursor.
- */
-static Bool
-winUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
-{
- WIN_DEBUG_MSG("winUnrealizeCursor: cursor=%p\n", pCursor);
- return TRUE;
-}
-
-
-/*
- * winSetCursor
- * Set the cursor sprite and position.
- */
-static void
-winSetCursor (ScreenPtr pScreen, CursorPtr pCursor, int x, int y)
-{
- POINT ptCurPos, ptTemp;
- HWND hwnd;
- RECT rcClient;
- BOOL bInhibit;
- winScreenPriv(pScreen);
- WIN_DEBUG_MSG("winSetCursor: cursor=%p\n", pCursor);
-
- /* Inhibit changing the cursor if the mouse is not in a client area */
- bInhibit = FALSE;
- if (GetCursorPos (&ptCurPos))
- {
- hwnd = WindowFromPoint (ptCurPos);
- if (hwnd)
- {
- if (GetClientRect (hwnd, &rcClient))
- {
- ptTemp.x = rcClient.left;
- ptTemp.y = rcClient.top;
- if (ClientToScreen (hwnd, &ptTemp))
- {
- rcClient.left = ptTemp.x;
- rcClient.top = ptTemp.y;
- ptTemp.x = rcClient.right;
- ptTemp.y = rcClient.bottom;
- if (ClientToScreen (hwnd, &ptTemp))
- {
- rcClient.right = ptTemp.x;
- rcClient.bottom = ptTemp.y;
- if (!PtInRect (&rcClient, ptCurPos))
- bInhibit = TRUE;
- }
- }
- }
- }
- }
-
- if (pCursor == NULL)
- {
- if (pScreenPriv->cursor.visible)
- {
- if (!bInhibit)
- ShowCursor (FALSE);
- pScreenPriv->cursor.visible = FALSE;
- }
- }
- else
- {
- if (pScreenPriv->cursor.handle)
- {
- if (!bInhibit)
- SetCursor (NULL);
- DestroyCursor (pScreenPriv->cursor.handle);
- pScreenPriv->cursor.handle = NULL;
- }
- pScreenPriv->cursor.handle =
- winLoadCursor (pScreen, pCursor, pScreen->myNum);
- WIN_DEBUG_MSG("winSetCursor: handle=%p\n", pScreenPriv->cursor.handle);
-
- if (!bInhibit)
- SetCursor (pScreenPriv->cursor.handle);
-
- if (!pScreenPriv->cursor.visible)
- {
- if (!bInhibit)
- ShowCursor (TRUE);
- pScreenPriv->cursor.visible = TRUE;
- }
- }
-}
-
-
-/*
- * QuartzMoveCursor
- * Move the cursor. This is a noop for us.
- */
-static void
-winMoveCursor (ScreenPtr pScreen, int x, int y)
-{
-}
-
-
-static miPointerSpriteFuncRec winSpriteFuncsRec = {
- winRealizeCursor,
- winUnrealizeCursor,
- winSetCursor,
- winMoveCursor
-};
-
-
-/*
-===========================================================================
-
- Other screen functions
-
-===========================================================================
-*/
-
-/*
- * winCursorQueryBestSize
- * Handle queries for best cursor size
- */
-static void
-winCursorQueryBestSize (int class, unsigned short *width,
- unsigned short *height, ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
-
- if (class == CursorShape)
- {
- *width = pScreenPriv->cursor.sm_cx;
- *height = pScreenPriv->cursor.sm_cy;
- }
- else
- {
- if (pScreenPriv->cursor.QueryBestSize)
- (*pScreenPriv->cursor.QueryBestSize)(class, width, height, pScreen);
- }
-}
-
-/*
- * winInitCursor
- * Initialize cursor support
- */
-Bool
-winInitCursor (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- miPointerScreenPtr pPointPriv;
- /* override some screen procedures */
- pScreenPriv->cursor.QueryBestSize = pScreen->QueryBestSize;
- pScreen->QueryBestSize = winCursorQueryBestSize;
-
- pPointPriv = (miPointerScreenPtr) pScreen->devPrivates[miPointerScreenIndex].ptr;
-
- pScreenPriv->cursor.spriteFuncs = pPointPriv->spriteFuncs;
- pPointPriv->spriteFuncs = &winSpriteFuncsRec;
-
- pScreenPriv->cursor.handle = NULL;
- pScreenPriv->cursor.visible = FALSE;
-
- pScreenPriv->cursor.sm_cx = GetSystemMetrics (SM_CXCURSOR);
- pScreenPriv->cursor.sm_cy = GetSystemMetrics (SM_CYCURSOR);
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/windialogs.c b/nx-X11/programs/Xserver/hw/xwin/windialogs.c
deleted file mode 100755
index ab06b0d00..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/windialogs.c
+++ /dev/null
@@ -1,788 +0,0 @@
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- * Earle F. Philhower III
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#ifdef __CYGWIN__
-#include <sys/cygwin.h>
-#endif
-#include <shellapi.h>
-#include "winprefs.h"
-
-
-/*
- * References to external globals
- */
-
-extern Bool g_fCursor;
-extern HWND g_hDlgDepthChange;
-extern HWND g_hDlgExit;
-extern HWND g_hDlgAbout;
-extern WINPREFS pref;
-#ifdef XWIN_CLIPBOARD
-extern Bool g_fClipboardStarted;
-#endif
-extern Bool g_fSoftwareCursor;
-
-
-/*
- * Local function prototypes
- */
-
-static wBOOL CALLBACK
-winExitDlgProc (HWND hDialog, UINT message,
- WPARAM wParam, LPARAM lParam);
-
-static wBOOL CALLBACK
-winChangeDepthDlgProc (HWND hDialog, UINT message,
- WPARAM wParam, LPARAM lParam);
-
-static wBOOL CALLBACK
-winAboutDlgProc (HWND hDialog, UINT message,
- WPARAM wParam, LPARAM lParam);
-
-
-static void
-winDrawURLWindow (LPARAM lParam);
-
-static LRESULT CALLBACK
-winURLWndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
-
-static void
-winOverrideURLButton (HWND hdlg, int id);
-
-static void
-winUnoverrideURLButton (HWND hdlg, int id);
-
-
-/*
- * Owner-draw a button as a URL
- */
-
-static void
-winDrawURLWindow (LPARAM lParam)
-{
- DRAWITEMSTRUCT *draw;
- char str[256];
- RECT rect;
- HFONT font;
- COLORREF crText;
-
- draw = (DRAWITEMSTRUCT *) lParam;
- GetWindowText (draw->hwndItem, str, sizeof(str));
- str[255] = 0;
- GetClientRect (draw->hwndItem, &rect);
-
- /* Color the button depending upon its state */
- if (draw->itemState & ODS_SELECTED)
- crText = RGB(128+64,0,0);
- else if (draw->itemState & ODS_FOCUS)
- crText = RGB(0,128+64,0);
- else
- crText = RGB(0,0,128+64);
- SetTextColor (draw->hDC, crText);
-
- /* Create underlined font 14 high, standard dialog font */
- font = CreateFont (-14, 0, 0, 0, FW_NORMAL, FALSE, TRUE, FALSE,
- 0, 0, 0, 0, 0, "MS Sans Serif");
- if (!font)
- {
- ErrorF ("winDrawURLWindow: Unable to create URL font, bailing.\n");
- return;
- }
- /* Draw it */
- SetBkMode (draw->hDC, OPAQUE);
- SelectObject (draw->hDC, font);
- DrawText (draw->hDC, str, strlen (str),&rect,DT_CENTER | DT_VCENTER);
- /* Delete the created font, replace it with stock font */
- DeleteObject (SelectObject (draw->hDC, GetStockObject (ANSI_VAR_FONT)));
-}
-
-
-/*
- * WndProc for overridden buttons
- */
-
-static LRESULT CALLBACK
-winURLWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- WNDPROC origCB = NULL;
- HCURSOR cursor;
-
- /* If it's a SetCursor message, tell it to the hand */
- if (msg==WM_SETCURSOR) {
- cursor = LoadCursor (NULL, IDC_HAND);
- if (cursor)
- SetCursor (cursor);
- return TRUE;
- }
- origCB = (WNDPROC)GetWindowLong (hwnd, GWL_USERDATA);
- /* Otherwise fall through to original WndProc */
- if (origCB)
- return CallWindowProc (origCB, hwnd, msg, wParam, lParam);
- else
- return FALSE;
-}
-
-
-/*
- * Register and unregister the custom WndProc
- */
-
-static void
-winOverrideURLButton (HWND hwnd, int id)
-{
- WNDPROC origCB;
- origCB = (WNDPROC)SetWindowLong (GetDlgItem (hwnd, id),
- GWL_WNDPROC, (LONG)winURLWndProc);
- SetWindowLong (GetDlgItem (hwnd, id), GWL_USERDATA, (LONG)origCB);
-}
-
-static void
-winUnoverrideURLButton (HWND hwnd, int id)
-{
- WNDPROC origCB;
- origCB = (WNDPROC)SetWindowLong (GetDlgItem (hwnd, id),
- GWL_USERDATA, 0);
- if (origCB)
- SetWindowLong (GetDlgItem (hwnd, id), GWL_WNDPROC, (LONG)origCB);
-}
-
-
-/*
- * Center a dialog window in the desktop window
- */
-
-static void
-winCenterDialog (HWND hwndDlg)
-{
- HWND hwndDesk;
- RECT rc, rcDlg, rcDesk;
-
- hwndDesk = GetParent (hwndDlg);
- if (!hwndDesk || IsIconic (hwndDesk))
- hwndDesk = GetDesktopWindow ();
-
- GetWindowRect (hwndDesk, &rcDesk);
- GetWindowRect (hwndDlg, &rcDlg);
- CopyRect (&rc, &rcDesk);
-
- OffsetRect (&rcDlg, -rcDlg.left, -rcDlg.top);
- OffsetRect (&rc, -rc.left, -rc.top);
- OffsetRect (&rc, -rcDlg.right, -rcDlg.bottom);
-
- SetWindowPos (hwndDlg,
- HWND_TOP,
- rcDesk.left + (rc.right / 2),
- rcDesk.top + (rc.bottom / 2),
- 0, 0,
- SWP_NOSIZE | SWP_NOZORDER);
-}
-
-
-/*
- * Display the Exit dialog box
- */
-
-void
-winDisplayExitDialog (winPrivScreenPtr pScreenPriv)
-{
- int i;
- int liveClients = 0;
-
- /* Count up running clinets (clients[0] is serverClient) */
- for (i = 1; i < currentMaxClients; i++)
- if (clients[i] != NullClient)
- liveClients++;
-#if defined(XWIN_MULTIWINDOW)
- /* Count down server internal clients */
- if (pScreenPriv->pScreenInfo->fMultiWindow)
- liveClients -= 2; /* multiwindow window manager & XMsgProc */
-#endif
-#if defined(XWIN_CLIPBOARD)
- if (g_fClipboardStarted)
- liveClients--; /* clipboard manager */
-#endif
-
- /* A user reported that this sometimes drops below zero. just eye-candy. */
- if (liveClients < 0)
- liveClients = 0;
-
- /* Don't show the exit confirmation dialog if SilentExit is enabled */
- if (pref.fSilentExit && liveClients <= 0)
- {
- if (g_hDlgExit != NULL)
- {
- DestroyWindow (g_hDlgExit);
- g_hDlgExit = NULL;
- }
- PostMessage (pScreenPriv->hwndScreen, WM_GIVEUP, 0, 0);
- return;
- }
-
- pScreenPriv->iConnectedClients = liveClients;
-
- /* Check if dialog already exists */
- if (g_hDlgExit != NULL)
- {
- /* Dialog box already exists, display it */
- ShowWindow (g_hDlgExit, SW_SHOWDEFAULT);
-
- /* User has lost the dialog. Show them where it is. */
- SetForegroundWindow (g_hDlgExit);
-
- return;
- }
-
- /* Create dialog box */
- g_hDlgExit = CreateDialogParam (g_hInstance,
- "EXIT_DIALOG",
- pScreenPriv->hwndScreen,
- winExitDlgProc,
- (int) pScreenPriv);
-
- /* Drop minimize and maximize buttons */
- SetWindowLong (g_hDlgExit, GWL_STYLE,
- GetWindowLong (g_hDlgExit, GWL_STYLE)
- & ~(WS_MAXIMIZEBOX | WS_MINIMIZEBOX));
- SetWindowLong (g_hDlgExit, GWL_EXSTYLE,
- GetWindowLong (g_hDlgExit, GWL_EXSTYLE) & ~WS_EX_APPWINDOW );
- SetWindowPos (g_hDlgExit, HWND_TOPMOST, 0, 0, 0, 0,
- SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE);
-
- /* Show the dialog box */
- ShowWindow (g_hDlgExit, SW_SHOW);
-
- /* Needed to get keyboard controls (tab, arrows, enter, esc) to work */
- SetForegroundWindow (g_hDlgExit);
-
- /* Set focus to the Cancel button */
- PostMessage (g_hDlgExit, WM_NEXTDLGCTL,
- (int) GetDlgItem (g_hDlgExit, IDCANCEL), TRUE);
-}
-
-#define CONNECTED_CLIENTS_FORMAT "There are currently %d clients connected."
-
-
-/*
- * Exit dialog window procedure
- */
-
-static wBOOL CALLBACK
-winExitDlgProc (HWND hDialog, UINT message,
- WPARAM wParam, LPARAM lParam)
-{
- static winPrivScreenPtr s_pScreenPriv = NULL;
-
- /* Branch on message type */
- switch (message)
- {
- case WM_INITDIALOG:
- {
- char *pszConnectedClients;
-
- /* Store pointers to private structures for future use */
- s_pScreenPriv = (winPrivScreenPtr) lParam;
-
- winCenterDialog (hDialog);
-
- /* Set icon to standard app icon */
- PostMessage (hDialog,
- WM_SETICON,
- ICON_SMALL,
- (LPARAM) LoadIcon (g_hInstance,
- MAKEINTRESOURCE(IDI_XWIN)));
-
- /* Format the connected clients string */
- pszConnectedClients = Xprintf (CONNECTED_CLIENTS_FORMAT,
- s_pScreenPriv->iConnectedClients);
- if (!pszConnectedClients)
- return TRUE;
-
-
-
- /* Set the number of connected clients */
- SetWindowText (GetDlgItem (hDialog, IDC_CLIENTS_CONNECTED),
- pszConnectedClients);
- xfree (pszConnectedClients);
- }
- return TRUE;
-
- case WM_COMMAND:
- switch (LOWORD (wParam))
- {
- case IDOK:
- /* Send message to call the GiveUp function */
- PostMessage (s_pScreenPriv->hwndScreen, WM_GIVEUP, 0, 0);
- DestroyWindow (g_hDlgExit);
- g_hDlgExit = NULL;
-
- /* Fix to make sure keyboard focus isn't trapped */
- PostMessage (s_pScreenPriv->hwndScreen, WM_NULL, 0, 0);
- return TRUE;
-
- case IDCANCEL:
- DestroyWindow (g_hDlgExit);
- g_hDlgExit = NULL;
-
- /* Fix to make sure keyboard focus isn't trapped */
- PostMessage (s_pScreenPriv->hwndScreen, WM_NULL, 0, 0);
- return TRUE;
- }
- break;
-
- case WM_MOUSEMOVE:
- case WM_NCMOUSEMOVE:
- /* Show the cursor if it is hidden */
- if (g_fSoftwareCursor && !g_fCursor)
- {
- g_fCursor = TRUE;
- ShowCursor (TRUE);
- }
- return TRUE;
-
- case WM_CLOSE:
- DestroyWindow (g_hDlgExit);
- g_hDlgExit = NULL;
-
- /* Fix to make sure keyboard focus isn't trapped */
- PostMessage (s_pScreenPriv->hwndScreen, WM_NULL, 0, 0);
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-/*
- * Display the Depth Change dialog box
- */
-
-void
-winDisplayDepthChangeDialog (winPrivScreenPtr pScreenPriv)
-{
- /* Check if dialog already exists */
- if (g_hDlgDepthChange != NULL)
- {
- /* Dialog box already exists, display it */
- ShowWindow (g_hDlgDepthChange, SW_SHOWDEFAULT);
-
- /* User has lost the dialog. Show them where it is. */
- SetForegroundWindow (g_hDlgDepthChange);
-
- return;
- }
-
- /*
- * Display a notification to the user that the visual
- * will not be displayed until the Windows display depth
- * is restored to the original value.
- */
- g_hDlgDepthChange = CreateDialogParam (g_hInstance,
- "DEPTH_CHANGE_BOX",
- pScreenPriv->hwndScreen,
- winChangeDepthDlgProc,
- (int) pScreenPriv);
-
- /* Drop minimize and maximize buttons */
- SetWindowLong (g_hDlgDepthChange, GWL_STYLE,
- GetWindowLong (g_hDlgDepthChange, GWL_STYLE)
- & ~(WS_MAXIMIZEBOX | WS_MINIMIZEBOX));
- SetWindowLong (g_hDlgDepthChange, GWL_EXSTYLE,
- GetWindowLong (g_hDlgDepthChange, GWL_EXSTYLE)
- & ~WS_EX_APPWINDOW );
- SetWindowPos (g_hDlgDepthChange, 0, 0, 0, 0, 0,
- SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOZORDER | SWP_NOSIZE);
-
- /* Show the dialog box */
- ShowWindow (g_hDlgDepthChange, SW_SHOW);
-
- ErrorF ("winDisplayDepthChangeDialog - DialogBox returned: %d\n",
- (int) g_hDlgDepthChange);
- ErrorF ("winDisplayDepthChangeDialog - GetLastError: %d\n",
- (int) GetLastError ());
-
- /* Minimize the display window */
- ShowWindow (pScreenPriv->hwndScreen, SW_MINIMIZE);
-}
-
-
-/*
- * Process messages for the dialog that is displayed for
- * disruptive screen depth changes.
- */
-
-static wBOOL CALLBACK
-winChangeDepthDlgProc (HWND hwndDialog, UINT message,
- WPARAM wParam, LPARAM lParam)
-{
- static winPrivScreenPtr s_pScreenPriv = NULL;
- static winScreenInfo *s_pScreenInfo = NULL;
- static ScreenPtr s_pScreen = NULL;
-
-#if CYGDEBUG
- winDebug ("winChangeDepthDlgProc\n");
-#endif
-
- /* Branch on message type */
- switch (message)
- {
- case WM_INITDIALOG:
-#if CYGDEBUG
- winDebug ("winChangeDepthDlgProc - WM_INITDIALOG\n");
-#endif
-
- /* Store pointers to private structures for future use */
- s_pScreenPriv = (winPrivScreenPtr) lParam;
- s_pScreenInfo = s_pScreenPriv->pScreenInfo;
- s_pScreen = s_pScreenInfo->pScreen;
-
-#if CYGDEBUG
- winDebug ("winChangeDepthDlgProc - WM_INITDIALOG - s_pScreenPriv: %08x, "
- "s_pScreenInfo: %08x, s_pScreen: %08x\n",
- s_pScreenPriv, s_pScreenInfo, s_pScreen);
-#endif
-
-#if CYGDEBUG
- winDebug ("winChangeDepthDlgProc - WM_INITDIALOG - orig bpp: %d, "
- "last bpp: %d\n",
- s_pScreenInfo->dwBPP,
- s_pScreenPriv->dwLastWindowsBitsPixel);
-#endif
-
- winCenterDialog( hwndDialog );
-
- /* Set icon to standard app icon */
- PostMessage (hwndDialog,
- WM_SETICON,
- ICON_SMALL,
- (LPARAM) LoadIcon (g_hInstance, MAKEINTRESOURCE(IDI_XWIN)));
-
- return TRUE;
-
- case WM_DISPLAYCHANGE:
-#if CYGDEBUG
- winDebug ("winChangeDepthDlgProc - WM_DISPLAYCHANGE - orig bpp: %d, "
- "last bpp: %d, new bpp: %d\n",
- s_pScreenInfo->dwBPP,
- s_pScreenPriv->dwLastWindowsBitsPixel,
- wParam);
-#endif
-
- /* Dismiss the dialog if the display returns to the original depth */
- if (wParam == s_pScreenInfo->dwBPP)
- {
- ErrorF ("winChangeDelthDlgProc - wParam == s_pScreenInfo->dwBPP\n");
-
- /* Depth has been restored, dismiss dialog */
- DestroyWindow (g_hDlgDepthChange);
- g_hDlgDepthChange = NULL;
-
- /* Flag that we have a valid screen depth */
- s_pScreenPriv->fBadDepth = FALSE;
- }
- return TRUE;
-
- case WM_COMMAND:
- switch (LOWORD (wParam))
- {
- case IDOK:
- case IDCANCEL:
- ErrorF ("winChangeDepthDlgProc - WM_COMMAND - IDOK or IDCANCEL\n");
-
- /*
- * User dismissed the dialog, hide it until the
- * display mode is restored.
- */
- ShowWindow (g_hDlgDepthChange, SW_HIDE);
- return TRUE;
- }
- break;
-
- case WM_CLOSE:
- ErrorF ("winChangeDepthDlgProc - WM_CLOSE\n");
-
- DestroyWindow (g_hDlgAbout);
- g_hDlgAbout = NULL;
-
- /* Fix to make sure keyboard focus isn't trapped */
- PostMessage (s_pScreenPriv->hwndScreen, WM_NULL, 0, 0);
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-/*
- * Display the About dialog box
- */
-
-void
-winDisplayAboutDialog (winPrivScreenPtr pScreenPriv)
-{
- /* Check if dialog already exists */
- if (g_hDlgAbout != NULL)
- {
- /* Dialog box already exists, display it */
- ShowWindow (g_hDlgAbout, SW_SHOWDEFAULT);
-
- /* User has lost the dialog. Show them where it is. */
- SetForegroundWindow (g_hDlgAbout);
-
- return;
- }
-
- /*
- * Display the about box
- */
- g_hDlgAbout = CreateDialogParam (g_hInstance,
- "ABOUT_BOX",
- pScreenPriv->hwndScreen,
- winAboutDlgProc,
- (int) pScreenPriv);
-
- /* Drop minimize and maximize buttons */
- SetWindowLong (g_hDlgAbout, GWL_STYLE,
- GetWindowLong (g_hDlgAbout, GWL_STYLE)
- & ~(WS_MAXIMIZEBOX | WS_MINIMIZEBOX));
- SetWindowLong (g_hDlgAbout, GWL_EXSTYLE,
- GetWindowLong (g_hDlgAbout, GWL_EXSTYLE) & ~WS_EX_APPWINDOW);
- SetWindowPos (g_hDlgAbout, 0, 0, 0, 0, 0,
- SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE);
-
- /* Show the dialog box */
- ShowWindow (g_hDlgAbout, SW_SHOW);
-
- /* Needed to get keyboard controls (tab, arrows, enter, esc) to work */
- SetForegroundWindow (g_hDlgAbout);
-
- /* Set focus to the OK button */
- PostMessage (g_hDlgAbout, WM_NEXTDLGCTL,
- (int) GetDlgItem (g_hDlgAbout, IDOK), TRUE);
-}
-
-
-/*
- * Process messages for the about dialog.
- */
-
-static wBOOL CALLBACK
-winAboutDlgProc (HWND hwndDialog, UINT message,
- WPARAM wParam, LPARAM lParam)
-{
- static winPrivScreenPtr s_pScreenPriv = NULL;
- static winScreenInfo *s_pScreenInfo = NULL;
- static ScreenPtr s_pScreen = NULL;
-
-#if CYGDEBUG
- winDebug ("winAboutDlgProc\n");
-#endif
-
- /* Branch on message type */
- switch (message)
- {
- case WM_INITDIALOG:
-#if CYGDEBUG
- winDebug ("winAboutDlgProc - WM_INITDIALOG\n");
-#endif
-
- /* Store pointers to private structures for future use */
- s_pScreenPriv = (winPrivScreenPtr) lParam;
- s_pScreenInfo = s_pScreenPriv->pScreenInfo;
- s_pScreen = s_pScreenInfo->pScreen;
-
- winCenterDialog (hwndDialog);
-
- /* Set icon to standard app icon */
- PostMessage (hwndDialog,
- WM_SETICON,
- ICON_SMALL,
- (LPARAM) LoadIcon (g_hInstance, MAKEINTRESOURCE(IDI_XWIN)));
-
- /* Override the URL buttons */
- winOverrideURLButton (hwndDialog, ID_ABOUT_CHANGELOG);
- winOverrideURLButton (hwndDialog, ID_ABOUT_WEBSITE);
- winOverrideURLButton (hwndDialog, ID_ABOUT_UG);
- winOverrideURLButton (hwndDialog, ID_ABOUT_FAQ);
-
- return TRUE;
-
- case WM_DRAWITEM:
- /* Draw the URL buttons as needed */
- winDrawURLWindow (lParam);
- return TRUE;
-
- case WM_MOUSEMOVE:
- case WM_NCMOUSEMOVE:
- /* Show the cursor if it is hidden */
- if (g_fSoftwareCursor && !g_fCursor)
- {
- g_fCursor = TRUE;
- ShowCursor (TRUE);
- }
- return TRUE;
-
- case WM_COMMAND:
- switch (LOWORD (wParam))
- {
- case IDOK:
- case IDCANCEL:
- ErrorF ("winAboutDlgProc - WM_COMMAND - IDOK or IDCANCEL\n");
-
- DestroyWindow (g_hDlgAbout);
- g_hDlgAbout = NULL;
-
- /* Fix to make sure keyboard focus isn't trapped */
- PostMessage (s_pScreenPriv->hwndScreen, WM_NULL, 0, 0);
-
- /* Restore window procedures for URL buttons */
- winUnoverrideURLButton (hwndDialog, ID_ABOUT_CHANGELOG);
- winUnoverrideURLButton (hwndDialog, ID_ABOUT_WEBSITE);
- winUnoverrideURLButton (hwndDialog, ID_ABOUT_UG);
- winUnoverrideURLButton (hwndDialog, ID_ABOUT_FAQ);
-
- return TRUE;
-
- case ID_ABOUT_CHANGELOG:
- {
- int iReturn;
-#ifdef __CYGWIN__
- const char * pszCygPath = "/usr/X11R6/share/doc/"
- "xorg-x11-xwin/changelog.html";
- char pszWinPath[MAX_PATH + 1];
-
- /* Convert the POSIX path to a Win32 path */
- cygwin_conv_to_win32_path (pszCygPath, pszWinPath);
-#else
- const char * pszWinPath = "http://x.cygwin.com/"
- "devel/server/changelog.html";
-#endif
-
- iReturn = (int) ShellExecute (NULL,
- "open",
- pszWinPath,
- NULL,
- NULL,
- SW_MAXIMIZE);
- if (iReturn < 32)
- {
- ErrorF ("winAboutDlgProc - WM_COMMAND - ID_ABOUT_CHANGELOG - "
- "ShellExecute failed: %d\n",
- iReturn);
- }
- }
- return TRUE;
-
- case ID_ABOUT_WEBSITE:
- {
- const char * pszPath = "http://x.cygwin.com/";
- int iReturn;
-
- iReturn = (int) ShellExecute (NULL,
- "open",
- pszPath,
- NULL,
- NULL,
- SW_MAXIMIZE);
- if (iReturn < 32)
- {
- ErrorF ("winAboutDlgProc - WM_COMMAND - ID_ABOUT_WEBSITE - "
- "ShellExecute failed: %d\n",
- iReturn);
- }
- }
- return TRUE;
-
- case ID_ABOUT_UG:
- {
- const char * pszPath = "http://x.cygwin.com/docs/ug/";
- int iReturn;
-
- iReturn = (int) ShellExecute (NULL,
- "open",
- pszPath,
- NULL,
- NULL,
- SW_MAXIMIZE);
- if (iReturn < 32)
- {
- ErrorF ("winAboutDlgProc - WM_COMMAND - ID_ABOUT_UG - "
- "ShellExecute failed: %d\n",
- iReturn);
- }
- }
- return TRUE;
-
- case ID_ABOUT_FAQ:
- {
- const char * pszPath = "http://x.cygwin.com/docs/faq/";
- int iReturn;
-
- iReturn = (int) ShellExecute (NULL,
- "open",
- pszPath,
- NULL,
- NULL,
- SW_MAXIMIZE);
- if (iReturn < 32)
- {
- ErrorF ("winAboutDlgProc - WM_COMMAND - ID_ABOUT_FAQ - "
- "ShellExecute failed: %d\n",
- iReturn);
- }
- }
- return TRUE;
- }
- break;
-
- case WM_CLOSE:
- ErrorF ("winAboutDlgProc - WM_CLOSE\n");
-
- DestroyWindow (g_hDlgAbout);
- g_hDlgAbout = NULL;
-
- /* Fix to make sure keyboard focus isn't trapped */
- PostMessage (s_pScreenPriv->hwndScreen, WM_NULL, 0, 0);
-
- /* Restore window procedures for URL buttons */
- winUnoverrideURLButton (hwndDialog, ID_ABOUT_CHANGELOG);
- winUnoverrideURLButton (hwndDialog, ID_ABOUT_WEBSITE);
- winUnoverrideURLButton (hwndDialog, ID_ABOUT_UG);
- winUnoverrideURLButton (hwndDialog, ID_ABOUT_FAQ);
-
- return TRUE;
- }
-
- return FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winengine.c b/nx-X11/programs/Xserver/hw/xwin/winengine.c
deleted file mode 100644
index f0bc671e2..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winengine.c
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "winmsg.h"
-
-
-/*
- * External global variables
- */
-
-extern const GUID _IID_IDirectDraw4;
-
-
-/*
- * Detect engines supported by current Windows version
- * DirectDraw version and hardware
- */
-
-void
-winDetectSupportedEngines ()
-{
- OSVERSIONINFO osvi;
-
- /* Initialize the engine support flags */
- g_dwEnginesSupported = WIN_SERVER_SHADOW_GDI;
-
-#ifdef XWIN_NATIVEGDI
- g_dwEnginesSupported |= WIN_SERVER_NATIVE_GDI;
-#endif
-
- /* Get operating system version information */
- ZeroMemory (&osvi, sizeof (osvi));
- osvi.dwOSVersionInfoSize = sizeof (osvi);
- GetVersionEx (&osvi);
-
- /* Branch on platform ID */
- switch (osvi.dwPlatformId)
- {
- case VER_PLATFORM_WIN32_NT:
- /* Engine 4 is supported on NT only */
- winErrorFVerb (2, "winDetectSupportedEngines - Windows NT/2000/XP\n");
- break;
-
- case VER_PLATFORM_WIN32_WINDOWS:
- /* Engine 4 is supported on NT only */
- winErrorFVerb (2, "winDetectSupportedEngines - Windows 95/98/Me\n");
- break;
- }
-
- /* Do we have DirectDraw? */
- if (g_hmodDirectDraw != NULL)
- {
- LPDIRECTDRAW lpdd = NULL;
- LPDIRECTDRAW4 lpdd4 = NULL;
- HRESULT ddrval;
-
- /* Was the DirectDrawCreate function found? */
- if (g_fpDirectDrawCreate == NULL)
- {
- /* No DirectDraw support */
- return;
- }
-
- /* DirectDrawCreate exists, try to call it */
- /* Create a DirectDraw object, store the address at lpdd */
- ddrval = (*g_fpDirectDrawCreate) (NULL,
- (void**) &lpdd,
- NULL);
- if (FAILED (ddrval))
- {
- /* No DirectDraw support */
- winErrorFVerb (2, "winDetectSupportedEngines - DirectDraw not installed\n");
- return;
- }
- else
- {
- /* We have DirectDraw */
- winErrorFVerb (2, "winDetectSupportedEngines - DirectDraw installed\n");
- g_dwEnginesSupported |= WIN_SERVER_SHADOW_DD;
-
-#ifdef XWIN_PRIMARYFB
- /* Allow PrimaryDD engine if NT */
- if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT)
- {
- g_dwEnginesSupported |= WIN_SERVER_PRIMARY_DD;
- winErrorFVerb (2, "winDetectSupportedEngines - Allowing PrimaryDD\n");
- }
-#endif
- }
-
- /* Try to query for DirectDraw4 interface */
- ddrval = IDirectDraw_QueryInterface (lpdd,
- &IID_IDirectDraw4,
- (LPVOID*) &lpdd4);
- if (SUCCEEDED (ddrval))
- {
- /* We have DirectDraw4 */
- winErrorFVerb (2, "winDetectSupportedEngines - DirectDraw4 installed\n");
- g_dwEnginesSupported |= WIN_SERVER_SHADOW_DDNL;
- }
-
- /* Cleanup DirectDraw interfaces */
- if (lpdd4 != NULL)
- IDirectDraw_Release (lpdd4);
- if (lpdd != NULL)
- IDirectDraw_Release (lpdd);
- }
-
- winErrorFVerb (2, "winDetectSupportedEngines - Returning, supported engines %08x\n",
- (unsigned int) g_dwEnginesSupported);
-}
-
-
-/*
- * Set the engine type, depending on the engines
- * supported for this screen, and whether the user
- * suggested an engine type
- */
-
-Bool
-winSetEngine (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- HDC hdc;
- DWORD dwBPP;
-
- /* Get a DC */
- hdc = GetDC (NULL);
- if (hdc == NULL)
- {
- ErrorF ("winSetEngine - Couldn't get an HDC\n");
- return FALSE;
- }
-
- /*
- * pScreenInfo->dwBPP may be 0 to indicate that the current screen
- * depth is to be used. Thus, we must query for the current display
- * depth here.
- */
- dwBPP = GetDeviceCaps (hdc, BITSPIXEL);
-
- /* Release the DC */
- ReleaseDC (NULL, hdc);
- hdc = NULL;
-
- /* ShadowGDI is the only engine that supports windowed PseudoColor */
- if (dwBPP == 8 && !pScreenInfo->fFullScreen)
- {
- winErrorFVerb (2, "winSetEngine - Windowed && PseudoColor => ShadowGDI\n");
- pScreenInfo->dwEngine = WIN_SERVER_SHADOW_GDI;
-
- /* Set engine function pointers */
- winSetEngineFunctionsShadowGDI (pScreen);
- return TRUE;
- }
-
- /* ShadowGDI is the only engine that supports Multi Window Mode */
- if (
-#ifdef XWIN_MULTIWINDOWEXTWM
- pScreenInfo->fMWExtWM
-#else
- FALSE
-#endif
-#ifdef XWIN_MULTIWINDOW
- || pScreenInfo->fMultiWindow
-#else
- || FALSE
-#endif
- )
- {
- winErrorFVerb (2, "winSetEngine - Multi Window or Rootless => ShadowGDI\n");
- pScreenInfo->dwEngine = WIN_SERVER_SHADOW_GDI;
-
- /* Set engine function pointers */
- winSetEngineFunctionsShadowGDI (pScreen);
- return TRUE;
- }
-
- /* If the user's choice is supported, we'll use that */
- if (g_dwEnginesSupported & pScreenInfo->dwEnginePreferred)
- {
- winErrorFVerb (2, "winSetEngine - Using user's preference: %d\n",
- (int) pScreenInfo->dwEnginePreferred);
- pScreenInfo->dwEngine = pScreenInfo->dwEnginePreferred;
-
- /* Setup engine function pointers */
- switch (pScreenInfo->dwEngine)
- {
- case WIN_SERVER_SHADOW_GDI:
- winSetEngineFunctionsShadowGDI (pScreen);
- break;
- case WIN_SERVER_SHADOW_DD:
- winSetEngineFunctionsShadowDD (pScreen);
- break;
- case WIN_SERVER_SHADOW_DDNL:
- winSetEngineFunctionsShadowDDNL (pScreen);
- break;
-#ifdef XWIN_PRIMARYFB
- case WIN_SERVER_PRIMARY_DD:
- winSetEngineFunctionsPrimaryDD (pScreen);
- break;
-#endif
-#ifdef XWIN_NATIVEGDI
- case WIN_SERVER_NATIVE_GDI:
- winSetEngineFunctionsNativeGDI (pScreen);
- break;
-#endif
- default:
- FatalError ("winSetEngine - Invalid engine type\n");
- }
- return TRUE;
- }
-
- /* ShadowDDNL has good performance, so why not */
- if (g_dwEnginesSupported & WIN_SERVER_SHADOW_DDNL)
- {
- winErrorFVerb (2, "winSetEngine - Using Shadow DirectDraw NonLocking\n");
- pScreenInfo->dwEngine = WIN_SERVER_SHADOW_DDNL;
-
- /* Set engine function pointers */
- winSetEngineFunctionsShadowDDNL (pScreen);
- return TRUE;
- }
-
- /* ShadowDD is next in line */
- if (g_dwEnginesSupported & WIN_SERVER_SHADOW_DD)
- {
- winErrorFVerb (2, "winSetEngine - Using Shadow DirectDraw\n");
- pScreenInfo->dwEngine = WIN_SERVER_SHADOW_DD;
-
- /* Set engine function pointers */
- winSetEngineFunctionsShadowDD (pScreen);
- return TRUE;
- }
-
- /* ShadowGDI is next in line */
- if (g_dwEnginesSupported & WIN_SERVER_SHADOW_GDI)
- {
- winErrorFVerb (2, "winSetEngine - Using Shadow GDI DIB\n");
- pScreenInfo->dwEngine = WIN_SERVER_SHADOW_GDI;
-
- /* Set engine function pointers */
- winSetEngineFunctionsShadowGDI (pScreen);
- return TRUE;
- }
-
- return TRUE;
-}
-
-
-/*
- * Get procedure addresses for DirectDrawCreate and DirectDrawCreateClipper
- */
-
-Bool
-winGetDDProcAddresses ()
-{
- Bool fReturn = TRUE;
-
- /* Load the DirectDraw library */
- g_hmodDirectDraw = LoadLibraryEx ("ddraw.dll", NULL, 0);
- if (g_hmodDirectDraw == NULL)
- {
- ErrorF ("winGetDDProcAddresses - Could not load ddraw.dll\n");
- fReturn = TRUE;
- goto winGetDDProcAddresses_Exit;
- }
-
- /* Try to get the DirectDrawCreate address */
- g_fpDirectDrawCreate = GetProcAddress (g_hmodDirectDraw,
- "DirectDrawCreate");
- if (g_fpDirectDrawCreate == NULL)
- {
- ErrorF ("winGetDDProcAddresses - Could not get DirectDrawCreate "
- "address\n");
- fReturn = TRUE;
- goto winGetDDProcAddresses_Exit;
- }
-
- /* Try to get the DirectDrawCreateClipper address */
- g_fpDirectDrawCreateClipper = GetProcAddress (g_hmodDirectDraw,
- "DirectDrawCreateClipper");
- if (g_fpDirectDrawCreateClipper == NULL)
- {
- ErrorF ("winGetDDProcAddresses - Could not get "
- "DirectDrawCreateClipper address\n");
- fReturn = FALSE;
- goto winGetDDProcAddresses_Exit;
- }
-
- /*
- * Note: Do not unload ddraw.dll here. Do it in GiveUp
- */
-
- winGetDDProcAddresses_Exit:
- /* Unload the DirectDraw library if we failed to initialize */
- if (!fReturn && g_hmodDirectDraw != NULL)
- {
- FreeLibrary (g_hmodDirectDraw);
- g_hmodDirectDraw = NULL;
- }
-
- return fReturn;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winerror.c b/nx-X11/programs/Xserver/hw/xwin/winerror.c
deleted file mode 100644
index 7d292134f..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winerror.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#ifdef XVENDORNAME
-#define VENDOR_STRING XVENDORNAME
-#define VERSION_STRING XORG_RELEASE
-#define VENDOR_CONTACT BUILDERADDR
-#endif
-
-#include "win.h"
-
-/* References to external symbols */
-extern char * g_pszCommandLine;
-extern char * g_pszLogFile;
-extern Bool g_fSilentFatalError;
-
-
-#ifdef DDXOSVERRORF
-/* Prototype */
-void
-OsVendorVErrorF (const char *pszFormat, va_list va_args);
-
-void
-OsVendorVErrorF (const char *pszFormat, va_list va_args)
-{
-#if defined(XWIN_CLIPBOARD) || defined (XWIN_MULTIWINDOW)
- /* make sure the clipboard and multiwindow threads do not interfere the
- * main thread */
- static pthread_mutex_t s_pmPrinting = PTHREAD_MUTEX_INITIALIZER;
-
- /* Lock the printing mutex */
- pthread_mutex_lock (&s_pmPrinting);
-#endif
-
- /* Print the error message to a log file, could be stderr */
- LogVWrite (0, pszFormat, va_args);
-
-#if defined(XWIN_CLIPBOARD) || defined (XWIN_MULTIWINDOW)
- /* Unlock the printing mutex */
- pthread_mutex_unlock (&s_pmPrinting);
-#endif
-}
-#endif
-
-
-/*
- * os/util.c/FatalError () calls our vendor ErrorF, so the message
- * from a FatalError will be logged. Thus, the message for the
- * fatal error is not passed to this function.
- *
- * Attempt to do last-ditch, safe, important cleanup here.
- */
-#ifdef DDXOSFATALERROR
-void
-OsVendorFatalError (void)
-{
- /* Don't give duplicate warning if UseMsg was called */
- if (g_fSilentFatalError)
- return;
-
- winMessageBoxF (
- "A fatal error has occurred and " PROJECT_NAME " will now exit.\n" \
- "Please open %s for more information.\n",
- MB_ICONERROR, (g_pszLogFile?g_pszLogFile:"the logfile"));
-}
-#endif
-
-
-/*
- * winMessageBoxF - Print a formatted error message in a useful
- * message box.
- */
-
-void
-winMessageBoxF (const char *pszError, UINT uType, ...)
-{
- char * pszErrorF = NULL;
- char * pszMsgBox = NULL;
- va_list args;
-
- va_start(args, uType);
- pszErrorF = Xvprintf(pszError, args);
- va_end(args);
- if (!pszErrorF)
- goto winMessageBoxF_Cleanup;
-
-#define MESSAGEBOXF \
- "%s\n" \
- "Vendor: %s\n" \
- "Release: %s\n" \
- "Contact: %s\n" \
- "XWin was started with the following command-line:\n\n" \
- "%s\n"
-
- pszMsgBox = Xprintf (MESSAGEBOXF,
- pszErrorF, VENDOR_STRING, VERSION_STRING, VENDOR_CONTACT,
- g_pszCommandLine);
- if (!pszMsgBox)
- goto winMessageBoxF_Cleanup;
-
- /* Display the message box string */
- MessageBox (NULL,
- pszMsgBox,
- PROJECT_NAME,
- MB_OK | uType);
-
- winMessageBoxF_Cleanup:
- if (pszErrorF)
- xfree (pszErrorF);
- if (pszMsgBox)
- xfree (pszMsgBox);
-#undef MESSAGEBOXF
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winfillsp.c b/nx-X11/programs/Xserver/hw/xwin/winfillsp.c
deleted file mode 100644
index 43ccde67c..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winfillsp.c
+++ /dev/null
@@ -1,876 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Harold L Hunt II
- * Alan Hourihane <alanh@fairlite.demon.co.uk>
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winfillsp.c,v 1.9 2001/11/01 12:19:40 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * References to external symbols
- */
-
-extern int g_iPixmapPrivateIndex;
-extern int g_iGCPrivateIndex;
-extern int g_copyROP[];
-
-
-extern void ROP16(HDC hdc, int rop);
-
-#define TRANSLATE_COLOR(color) \
-{ \
- if (pDrawable->depth == 15) \
- color = ((color & 0x1F) << 19) | ((color & 0x03E0) << 6) | \
- ((color & 0xF800) >> 8); \
- else if (pDrawable->depth == 16) \
- color = ((color & 0x1F) << 19) | ((color & 0x07E0) << 5) | \
- ((color & 0xF800) >> 8); \
- else if (pDrawable->depth == 24 || pDrawable->depth == 32) \
- color = ((color & 0xFF) << 16) | (color & 0xFF00) | \
- ((color & 0xFF0000) >> 16); \
-}
-
-/* See Porting Layer Definition - p. 54 */
-void
-winFillSpansNativeGDI (DrawablePtr pDrawable,
- GCPtr pGC,
- int iSpans,
- DDXPointPtr pPoints,
- int *piWidths,
- int fSorted)
-{
- winGCPriv(pGC);
- HBITMAP hbmpOrig = NULL, hbmpOrigStipple = NULL;
- HBITMAP hPenOrig = NULL;
- HBITMAP hBitmap = NULL;
- PixmapPtr pPixmap = NULL;
- winPrivPixmapPtr pPixmapPriv = NULL;
- PixmapPtr pStipple = NULL;
- winPrivPixmapPtr pStipplePriv = NULL;
- PixmapPtr pTile = NULL;
- winPrivPixmapPtr pTilePriv = NULL;
- HDC hdcStipple = NULL, hdcTile = NULL;
- HPEN hPen = NULL;
- int iX;
- int fg, bg;
- RegionPtr pClip = pGC->pCompositeClip;
- BoxPtr pextent, pbox;
- int nbox;
- int extentX1, extentX2, extentY1, extentY2;
- int fullX1, fullX2, fullY1;
- HRGN hrgn = NULL, combined = NULL;
-
- nbox = REGION_NUM_RECTS (pClip);
- pbox = REGION_RECTS (pClip);
-
- if (!nbox) return;
-
- combined = CreateRectRgn (pbox->x1, pbox->y1, pbox->x2, pbox->y2);
- nbox--; pbox++;
-
- while (nbox--)
- {
- hrgn = CreateRectRgn (pbox->x1, pbox->y1, pbox->x2, pbox->y2);
- CombineRgn (combined, combined, hrgn, RGN_OR);
- DeleteObject (hrgn);
- hrgn = NULL;
- pbox++;
- }
-
- pextent = REGION_EXTENTS (pGC->pScreen, pClip);
- extentX1 = pextent->x1;
- extentY1 = pextent->y1;
- extentX2 = pextent->x2;
- extentY2 = pextent->y2;
-
- /* Branch on the type of drawable we have */
- switch (pDrawable->type)
- {
- case DRAWABLE_PIXMAP:
-
- SelectClipRgn (pGCPriv->hdcMem, combined);
- DeleteObject (combined);
- combined = NULL;
-
- /* Get a pixmap pointer from the drawable pointer, and fetch privates */
- pPixmap = (PixmapPtr) pDrawable;
- pPixmapPriv = winGetPixmapPriv (pPixmap);
-
- /* Select the drawable pixmap into memory hdc */
- hbmpOrig = SelectObject (pGCPriv->hdcMem, pPixmapPriv->hBitmap);
- if (hbmpOrig == NULL)
- FatalError ("winFillSpans - DRAWABLE_PIXMAP - "
- "SelectObject () failed on\n\tpPixmapPriv->hBitmap: "
- "%08x\n", (unsigned int) pPixmapPriv->hBitmap);
-
- /* Branch on the fill type */
- switch (pGC->fillStyle)
- {
- case FillSolid:
-
- ROP16 (pGCPriv->hdcMem, pGC->alu);
-
- if (pDrawable->depth == 1)
- {
- if (pGC->fgPixel == 0)
- hPenOrig = SelectObject (pGCPriv->hdcMem,
- GetStockObject (BLACK_PEN));
- else
- hPenOrig = SelectObject (pGCPriv->hdcMem,
- GetStockObject (WHITE_PEN));
- }
- else
- {
- fg = pGC->fgPixel;
- TRANSLATE_COLOR (fg);
- hPen = CreatePen (PS_SOLID, 0, fg);
- hPenOrig = SelectObject (pGCPriv->hdcMem, hPen);
- }
-
- while (iSpans--)
- {
- fullX1 = pPoints->x;
- fullY1 = pPoints->y;
- fullX2 = fullX1 + (int) *piWidths;
- pPoints++;
- piWidths++;
-
- if (fullY1 < extentY1 || extentY2 <= fullY1)
- continue;
-
- if (fullX1 < extentX1)
- fullX1 = extentX1;
- if (fullX2 > extentX2)
- fullX2 = extentX2;
-
- if (fullX1 >= fullX2)
- continue;
-
- MoveToEx (pGCPriv->hdcMem, fullX1, fullY1, NULL);
- LineTo (pGCPriv->hdcMem, fullX2, fullY1);
- }
-
- SetROP2 (pGCPriv->hdcMem, R2_COPYPEN);
-
- /* Give back the Pen */
- SelectObject (pGCPriv->hdcMem, hPenOrig);
-
- if (pDrawable->depth != 1)
- DeleteObject (hPen);
- break;
-
- case FillOpaqueStippled:
-
- pStipple = pGC->stipple;
- pStipplePriv = winGetPixmapPriv (pStipple);
-
- /* Create a device-dependent bitmap for the stipple */
- hBitmap = CreateDIBitmap (pGCPriv->hdcMem,
- (BITMAPINFOHEADER *)pStipplePriv->pbmih,
- CBM_INIT,
- pStipplePriv->pbBits,
- (BITMAPINFO *)pStipplePriv->pbmih,
- DIB_RGB_COLORS);
-
- /* Create a memory DC to hold the stipple */
- hdcStipple = CreateCompatibleDC (pGCPriv->hdcMem);
-
- /* Select the stipple bitmap into the stipple DC */
- hbmpOrigStipple = SelectObject (hdcStipple, hBitmap);
- if (hbmpOrigStipple == NULL)
- FatalError ("winFillSpans () - DRAWABLE_PIXMAP - FillStippled - "
- "SelectObject () failed on hbmpOrigStipple\n");
-
- /* Make a temporary copy of the foreground and background colors */
- bg = pGC->bgPixel;
- fg = pGC->fgPixel;
-
- /* Translate the depth-dependent colors to Win32 COLORREFs */
- TRANSLATE_COLOR (fg);
- TRANSLATE_COLOR (bg);
- SetTextColor (pGCPriv->hdcMem, fg);
- SetBkColor (pGCPriv->hdcMem, bg);
-
- while (iSpans--)
- {
- int width = pStipple->drawable.width;
- fullX1 = pPoints->x;
- fullY1 = pPoints->y;
- fullX2 = fullX1 + (int) *piWidths;
- pPoints++;
- piWidths++;
-
- if (fullY1 < extentY1 || extentY2 <= fullY1)
- continue;
-
- if (fullX1 < extentX1)
- fullX1 = extentX1;
- if (fullX2 > extentX2)
- fullX2 = extentX2;
-
- if (fullX1 >= fullX2)
- continue;
-
- for (iX = fullX1; iX < fullX2; iX += width)
- {
- int xoffset;
-
- if ((iX + pStipple->drawable.width) > fullX2)
- width = fullX2 - iX;
- else
- width = pStipple->drawable.width;
-
- if (iX == fullX1)
- xoffset = (fullX1 - (pDrawable->x + (pGC->patOrg.x % pStipple->drawable.width) - pStipple->drawable.width)) % pStipple->drawable.width;
- else
- xoffset = 0;
-
- if (xoffset + width > pStipple->drawable.width)
- width = pStipple->drawable.width - xoffset;
-
- BitBlt (pGCPriv->hdcMem,
- iX, fullY1,
- width, 1,
- hdcStipple,
- xoffset,
- (fullY1 - (pDrawable->y + (pGC->patOrg.y % pStipple->drawable.height) - pStipple->drawable.height)) % pStipple->drawable.height,
- g_copyROP[pGC->alu]);
- }
- }
-
- /* Clear the stipple HDC */
- SelectObject (hdcStipple, hbmpOrigStipple);
- DeleteDC (hdcStipple);
-
- /* Delete the device dependent stipple bitmap */
- DeleteObject (hBitmap);
-
- break;
- case FillStippled:
-
- pStipple = pGC->stipple;
- pStipplePriv = winGetPixmapPriv (pStipple);
-
- /* Create a device-dependent bitmap for the stipple */
- hBitmap = CreateDIBitmap (pGCPriv->hdcMem,
- (BITMAPINFOHEADER *)pStipplePriv->pbmih,
- CBM_INIT,
- pStipplePriv->pbBits,
- (BITMAPINFO *)pStipplePriv->pbmih,
- DIB_RGB_COLORS);
-
- /* Create a memory DC to hold the stipple */
- hdcStipple = CreateCompatibleDC (pGCPriv->hdcMem);
-
- /* Select the stipple bitmap into the stipple DC */
- hbmpOrigStipple = SelectObject (hdcStipple, hBitmap);
- if (hbmpOrigStipple == NULL)
- FatalError ("winFillSpans () - DRAWABLE_PIXMAP - FillStippled - "
- "SelectObject () failed on hbmpOrigStipple\n");
-
- /* Make a temporary copy of the foreground and background colors */
- bg = pGC->bgPixel;
- fg = pGC->fgPixel;
-
- /* Translate the depth-dependent colors to Win32 COLORREFs */
- TRANSLATE_COLOR (fg);
- TRANSLATE_COLOR (bg);
-
- /* this is fudgy, we should only invert on the last one
- * We need to get the black/white pixels right in the
- * colormap. But yeah ! it's working..
- */
- if (pGC->bgPixel != -1 && pGC->fgPixel != -1)
- {
- SetTextColor (pGCPriv->hdcMem, fg);
- SetBkColor (pGCPriv->hdcMem, bg);
- BitBlt (hdcStipple,
- 0, 0,
- pStipple->drawable.width, pStipple->drawable.height,
- hdcStipple,
- 0, 0,
- 0x330008);
- }
- else if (pGC->bgPixel == -1)
- {
- SetTextColor (pGCPriv->hdcMem, fg);
- SetBkMode (pGCPriv->hdcMem, TRANSPARENT);
- BitBlt (hdcStipple,
- 0, 0,
- pStipple->drawable.width, pStipple->drawable.height,
- hdcStipple,
- 0, 0,
- 0x330008);
- }
- else if (pGC->fgPixel == -1)
- {
- SetTextColor (pGCPriv->hdcMem, bg);
- SetBkMode (pGCPriv->hdcMem, TRANSPARENT);
-#if 0
- BitBlt (hdcStipple,
- 0, 0,
- pStipple->drawable.width, pStipple->drawable.height,
- hdcStipple,
- 0, 0,
- 0x330008);
-#endif
- }
-
- while (iSpans--)
- {
- int width = pStipple->drawable.width;
- fullX1 = pPoints->x;
- fullY1 = pPoints->y;
- fullX2 = fullX1 + (int) *piWidths;
- pPoints++;
- piWidths++;
-
- if (fullY1 < extentY1 || extentY2 <= fullY1)
- continue;
-
- if (fullX1 < extentX1)
- fullX1 = extentX1;
- if (fullX2 > extentX2)
- fullX2 = extentX2;
-
- if (fullX1 >= fullX2)
- continue;
-
- for (iX = fullX1; iX < fullX2; iX += width)
- {
- int xoffset;
-
- if ((iX + pStipple->drawable.width) > fullX2)
- width = fullX2 - iX;
- else
- width = pStipple->drawable.width;
-
- if (iX == fullX1)
- xoffset = (fullX1 - (pDrawable->x + (pGC->patOrg.x % pStipple->drawable.width) - pStipple->drawable.width)) % pStipple->drawable.width;
- else
- xoffset = 0;
-
- if (xoffset + width > pStipple->drawable.width)
- width = pStipple->drawable.width - xoffset;
-
- BitBlt (pGCPriv->hdcMem,
- iX, fullY1,
- width, 1,
- hdcStipple,
- xoffset,
- (fullY1 - (pDrawable->y + (pGC->patOrg.y % pStipple->drawable.height) - pStipple->drawable.height)) % pStipple->drawable.height,
- g_copyROP[pGC->alu]);
- }
- }
-
- /* Clear the stipple HDC */
- SelectObject (hdcStipple, hbmpOrigStipple);
- DeleteDC (hdcStipple);
-
- /* Delete the device dependent stipple bitmap */
- DeleteObject (hBitmap);
-
- /* Restore the background mode */
- SetBkMode (pGCPriv->hdcMem, OPAQUE);
- break;
-
- case FillTiled:
-
- /* Get a pixmap pointer from the tile pointer, and fetch privates */
- pTile = (PixmapPtr) pGC->tile.pixmap;
- pTilePriv = winGetPixmapPriv (pTile);
-
- /* Create a memory DC to hold the tile */
- hdcTile = CreateCompatibleDC (pGCPriv->hdcMem);
-
- /* Select the tile into a DC */
- hbmpOrig = SelectObject (hdcTile, pTilePriv->hBitmap);
- if (hbmpOrig == NULL)
- FatalError ("winFillSpans - DRAWABLE_PIXMAP - FillTiled - "
- "SelectObject () failed on pTilePriv->hBitmap\n");
-
- while (iSpans--)
- {
- int width = pTile->drawable.width;
- fullX1 = pPoints->x;
- fullY1 = pPoints->y;
- fullX2 = fullX1 + (int) *piWidths;
- pPoints++;
- piWidths++;
-
- if (fullY1 < extentY1 || extentY2 <= fullY1)
- continue;
-
- if (fullX1 < extentX1)
- fullX1 = extentX1;
- if (fullX2 > extentX2)
- fullX2 = extentX2;
-
- if (fullX1 >= fullX2)
- continue;
-
- for (iX = fullX1; iX < fullX2; iX += width)
- {
- int xoffset;
-
- if ((iX + pTile->drawable.width) > fullX2)
- width = fullX2 - iX;
- else
- width = pTile->drawable.width;
-
- if (iX == fullX1)
- xoffset = (fullX1 - (pDrawable->x + (pGC->patOrg.x % pTile->drawable.width) - pTile->drawable.width)) % pTile->drawable.width;
- else
- xoffset = 0;
-
- if (xoffset + width > pTile->drawable.width)
- width = pTile->drawable.width - xoffset;
-
- BitBlt (pGCPriv->hdcMem,
- iX, fullY1,
- width, 1,
- hdcTile,
- xoffset,
- (fullY1 - (pDrawable->y + (pGC->patOrg.y % pTile->drawable.height) - pTile->drawable.height)) % pTile->drawable.height,
- g_copyROP[pGC->alu]);
- }
- }
-
- /* Push the tile pixmap out of the memory HDC */
- SelectObject (hdcTile, hbmpOrig);
-
- /* Delete the tile */
- DeleteDC (hdcTile);
- break;
-
- default:
- ErrorF ("winFillSpans - DRAWABLE_PIXMAP - Unknown fillStyle\n");
- break;
- }
-
- /* Reset clip region */
- SelectClipRgn (pGCPriv->hdcMem, NULL);
-
- /* Push the drawable pixmap out of the GC HDC */
- SelectObject (pGCPriv->hdcMem, hbmpOrig);
- break;
-
- case DRAWABLE_WINDOW:
-
- SelectClipRgn (pGCPriv->hdc, combined);
- DeleteObject (combined);
- combined = NULL;
-
- /* Branch on fill style */
- switch (pGC->fillStyle)
- {
- case FillSolid:
-
- ROP16 (pGCPriv->hdc, pGC->alu);
-
- if (pDrawable->depth == 1)
- {
- if (pGC->fgPixel == 0)
- hPenOrig = SelectObject (pGCPriv->hdc,
- GetStockObject (BLACK_PEN));
- else
- hPenOrig = SelectObject (pGCPriv->hdc,
- GetStockObject (WHITE_PEN));
- }
- else
- {
- fg = pGC->fgPixel;
- TRANSLATE_COLOR (fg);
- hPen = CreatePen (PS_SOLID, 0, fg);
- hPenOrig = SelectObject (pGCPriv->hdc, hPen);
- }
-
- while (iSpans--)
- {
- fullX1 = pPoints->x;
- fullY1 = pPoints->y;
- fullX2 = fullX1 + (int) *piWidths;
- pPoints++;
- piWidths++;
-
- if (fullY1 < extentY1 || extentY2 <= fullY1)
- continue;
-
- if (fullX1 < extentX1)
- fullX1 = extentX1;
- if (fullX2 > extentX2)
- fullX2 = extentX2;
-
- if (fullX1 >= fullX2)
- continue;
-
- MoveToEx (pGCPriv->hdc, fullX1, fullY1, NULL);
- LineTo (pGCPriv->hdc, fullX2, fullY1);
- }
-
- SetROP2 (pGCPriv->hdc, R2_COPYPEN);
-
- /* Give back the Brush */
- SelectObject (pGCPriv->hdc, hPenOrig);
-
- if (pDrawable->depth != 1)
- DeleteObject (hPen);
- break;
-
- case FillOpaqueStippled:
-
- pStipple = pGC->stipple;
- pStipplePriv = winGetPixmapPriv (pStipple);
-
- /* Create a device-dependent bitmap for the stipple */
- hBitmap = CreateDIBitmap (pGCPriv->hdc,
- (BITMAPINFOHEADER *)pStipplePriv->pbmih,
- CBM_INIT,
- pStipplePriv->pbBits,
- (BITMAPINFO *)pStipplePriv->pbmih,
- DIB_RGB_COLORS);
-
- /* Create a memory DC to hold the stipple */
- hdcStipple = CreateCompatibleDC (pGCPriv->hdc);
-
- /* Select the stipple bitmap into the stipple DC */
- hbmpOrigStipple = SelectObject (hdcStipple, hBitmap);
- if (hbmpOrigStipple == NULL)
- FatalError ("winFillSpans () - DRAWABLE_PIXMAP - FillStippled - "
- "SelectObject () failed on hbmpOrigStipple\n");
-
- /* Make a temporary copy of the foreground and background colors */
- bg = pGC->bgPixel;
- fg = pGC->fgPixel;
-
- /* Translate the depth-dependent colors to Win32 COLORREFs */
- TRANSLATE_COLOR (fg);
- TRANSLATE_COLOR (bg);
- SetTextColor (pGCPriv->hdc, fg);
- SetBkColor (pGCPriv->hdc, bg);
-
- while (iSpans--)
- {
- int width = pStipple->drawable.width;
- fullX1 = pPoints->x;
- fullY1 = pPoints->y;
- fullX2 = fullX1 + (int) *piWidths;
- pPoints++;
- piWidths++;
-
- if (fullY1 < extentY1 || extentY2 <= fullY1)
- continue;
-
- if (fullX1 < extentX1)
- fullX1 = extentX1;
- if (fullX2 > extentX2)
- fullX2 = extentX2;
-
- if (fullX1 >= fullX2)
- continue;
-
- for (iX = fullX1; iX < fullX2; iX += width)
- {
- int xoffset;
-
- if ((iX + pStipple->drawable.width) > fullX2)
- width = fullX2 - iX;
- else
- width = pStipple->drawable.width;
-
- if (iX == fullX1)
- xoffset = (fullX1 - (pDrawable->x + (pGC->patOrg.x % pStipple->drawable.width) - pStipple->drawable.width)) % pStipple->drawable.width;
- else
- xoffset = 0;
-
- if (xoffset + width > pStipple->drawable.width)
- width = pStipple->drawable.width - xoffset;
-
- BitBlt (pGCPriv->hdc,
- iX, fullY1,
- width, 1,
- hdcStipple,
- xoffset,
- (fullY1 - (pDrawable->y + (pGC->patOrg.y % pStipple->drawable.height) - pStipple->drawable.height)) % pStipple->drawable.height,
- g_copyROP[pGC->alu]);
- }
- }
-
- /* Clear the stipple HDC */
- SelectObject (hdcStipple, hbmpOrigStipple);
- DeleteDC (hdcStipple);
-
- /* Delete the device dependent stipple bitmap */
- DeleteObject (hBitmap);
-
- break;
-
- case FillStippled:
- pStipple = pGC->stipple;
- pStipplePriv = winGetPixmapPriv (pStipple);
-
- /* Create a device-dependent bitmap for the stipple */
- hBitmap = CreateDIBitmap (pGCPriv->hdcMem,
- (BITMAPINFOHEADER *)pStipplePriv->pbmih,
- CBM_INIT,
- pStipplePriv->pbBits,
- (BITMAPINFO *)pStipplePriv->pbmih,
- DIB_RGB_COLORS);
-
- /* Create a memory DC to hold the stipple */
- hdcStipple = CreateCompatibleDC (pGCPriv->hdc);
-
- /* Select the stipple bitmap into the stipple DC */
- hbmpOrigStipple = SelectObject (hdcStipple, hBitmap);
- if (hbmpOrigStipple == NULL)
- FatalError ("winFillSpans () - DRAWABLE_PIXMAP - FillStippled - "
- "SelectObject () failed on hbmpOrigStipple\n");
-
- /* Make a temporary copy of the foreground and background colors */
- bg = pGC->bgPixel;
- fg = pGC->fgPixel;
-
- /* Translate the depth-dependent colors to Win32 COLORREFs */
- TRANSLATE_COLOR (fg);
- TRANSLATE_COLOR (bg);
-
- /* this is fudgy, we should only invert on the last one
- * We need to get the black/white pixels right in the
- * colormap. But yeah ! it's working..
- */
- if (pGC->bgPixel != -1 && pGC->fgPixel != -1)
- {
- SetTextColor (pGCPriv->hdc, fg);
- SetBkColor (pGCPriv->hdc, bg);
- BitBlt (hdcStipple,
- 0, 0,
- pStipple->drawable.width, pStipple->drawable.height,
- hdcStipple,
- 0,0,
- 0x330008);
- }
- else if (pGC->bgPixel == -1)
- {
- SetTextColor (pGCPriv->hdc, fg);
- SetBkMode (pGCPriv->hdc, TRANSPARENT);
- BitBlt (hdcStipple,
- 0, 0,
- pStipple->drawable.width, pStipple->drawable.height,
- hdcStipple,
- 0,0,
- 0x330008);
- }
- else if (pGC->fgPixel == -1)
- {
- SetTextColor (pGCPriv->hdc, bg);
- SetBkMode (pGCPriv->hdc, TRANSPARENT);
-#if 0
- BitBlt (hdcStipple,
- 0, 0,
- pStipple->drawable.width, pStipple->drawable.height,
- hdcStipple,
- 0, 0,
- 0x330008);
-#endif
- }
-
- while (iSpans--)
- {
- int width = pStipple->drawable.width;
- fullX1 = pPoints->x;
- fullY1 = pPoints->y;
- fullX2 = fullX1 + (int) *piWidths;
- pPoints++;
- piWidths++;
-
- if (fullY1 < extentY1 || extentY2 <= fullY1)
- continue;
-
- if (fullX1 < extentX1)
- fullX1 = extentX1;
- if (fullX2 > extentX2)
- fullX2 = extentX2;
-
- if (fullX1 >= fullX2)
- continue;
-
- for (iX = fullX1; iX < fullX2; iX += width)
- {
- int xoffset;
-
- if ((iX + pStipple->drawable.width) > fullX2)
- width = fullX2 - iX;
- else
- width = pStipple->drawable.width;
-
- if (iX == fullX1)
- xoffset = (fullX1 - (pDrawable->x + (pGC->patOrg.x % pStipple->drawable.width) - pStipple->drawable.width)) % pStipple->drawable.width;
- else
- xoffset = 0;
-
- if (xoffset + width > pStipple->drawable.width)
- width = pStipple->drawable.width - xoffset;
-
- BitBlt (pGCPriv->hdc,
- iX, fullY1,
- width, 1,
- hdcStipple,
- xoffset,
- (fullY1 - (pDrawable->y + (pGC->patOrg.y % pStipple->drawable.height) - pStipple->drawable.height)) % pStipple->drawable.height,
- g_copyROP[pGC->alu]);
- }
- }
-
- /* Clear the stipple HDC */
- SelectObject (hdcStipple, hbmpOrigStipple);
- DeleteDC (hdcStipple);
-
- /* Delete the device dependent stipple bitmap */
- DeleteObject (hBitmap);
-
- /* Restore the background mode */
- SetBkMode (pGCPriv->hdc, OPAQUE);
- break;
-
- case FillTiled:
-
- /* Get a pixmap pointer from the tile pointer, and fetch privates */
- pTile = (PixmapPtr) pGC->tile.pixmap;
- pTilePriv = winGetPixmapPriv (pTile);
-
- /* Select the tile into a DC */
- hbmpOrig = SelectObject (pGCPriv->hdcMem, pTilePriv->hBitmap);
- if (hbmpOrig == NULL)
- FatalError ("winFillSpans - DRAWABLE_WINDOW - FillTiled - "
- "SelectObject () failed on pTilePriv->hBitmap\n");
-
- while (iSpans--)
- {
- int width = pTile->drawable.width;
- fullX1 = pPoints->x;
- fullY1 = pPoints->y;
- fullX2 = fullX1 + (int) *piWidths;
- pPoints++;
- piWidths++;
-
- if (fullY1 < extentY1 || extentY2 <= fullY1)
- continue;
-
- if (fullX1 < extentX1)
- fullX1 = extentX1;
- if (fullX2 > extentX2)
- fullX2 = extentX2;
-
- if (fullX1 >= fullX2)
- continue;
-
- for (iX = fullX1; iX < fullX2; iX += width)
- {
- int xoffset;
-
- if ((iX + pTile->drawable.width) > fullX2)
- width = fullX2 - iX;
- else
- width = pTile->drawable.width;
-
- if (iX == fullX1)
- xoffset = (fullX1 - (pDrawable->x + (pGC->patOrg.x % pTile->drawable.width) - pTile->drawable.width)) % pTile->drawable.width;
- else
- xoffset = 0;
-
- if (xoffset + width > pTile->drawable.width)
- width = pTile->drawable.width - xoffset;
-
- BitBlt (pGCPriv->hdc,
- iX, fullY1,
- width, 1,
- pGCPriv->hdcMem,
- xoffset,
- (fullY1 - (pDrawable->y + (pGC->patOrg.y % pTile->drawable.height) - pTile->drawable.height)) % pTile->drawable.height,
- g_copyROP[pGC->alu]);
- }
- }
-
- /* Push the tile pixmap out of the memory HDC */
- SelectObject (pGCPriv->hdcMem, hbmpOrig);
- break;
-
- default:
- ErrorF ("winFillSpans - DRAWABLE_WINDOW - Unknown fillStyle\n");
- break;
- }
-
- /* Reset clip region */
- SelectClipRgn (pGCPriv->hdc, NULL);
- break;
-
- case UNDRAWABLE_WINDOW:
- /* UNDRAWABLE_WINDOW doesn't appear to get called when running xterm */
- switch (pGC->fillStyle)
- {
- case FillSolid:
- ErrorF ("winFillSpans - UNDRAWABLE_WINDOW - FillSolid - "
- "Unimplemented\n");
- break;
-
- case FillStippled:
- ErrorF ("winFillSpans - UNDRAWABLE_WINDOW - FillStippled - "
- "Unimplemented\n");
- break;
-
- case FillTiled:
- ErrorF ("winFillSpans - UNDRAWABLE_WINDOW - FillTiled - "
- "Unimplemented\n");
- break;
-
- case FillOpaqueStippled:
- ErrorF ("winFillSpans - UNDRAWABLE_WINDOW - OpaqueStippled - "
- "Unimplemented\n");
- break;
-
- default:
- ErrorF ("winFillSpans - UNDRAWABLE_WINDOW - Unknown fillStyle\n");
- break;
- }
- break;
-
- case DRAWABLE_BUFFER:
- /* DRAWABLE_BUFFER seems to be undocumented. */
- ErrorF ("winFillSpans - DRAWABLE_BUFFER - Unimplemented\n");
- break;
-
- default:
- ErrorF ("winFillSpans - Unknown drawable type\n");
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winfont.c b/nx-X11/programs/Xserver/hw/xwin/winfont.c
deleted file mode 100644
index af3e90da5..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winfont.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-#ifdef XWIN_NATIVEGDI
-/* See Porting Layer Definition - p. 32 */
-/* See mfb/mfbfont.c - mfbRealizeFont() - which is empty :) */
-Bool
-winRealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont)
-{
- BOOL fResult = TRUE;
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winRealizeFont (%p, %p)\n", pScreen, pFont);
-#endif
-
- WIN_UNWRAP(RealizeFont);
- if (pScreen->RealizeFont)
- fResult = (*pScreen->RealizeFont) (pScreen, pFont);
- WIN_WRAP(RealizeFont, winRealizeFontNativeGDI);
-
- return fResult;
-}
-
-/* See Porting Layer Definition - p. 32 */
-/* See mfb/mfbfont.c - mfbUnrealizeFont() - which is empty :) */
-Bool
-winUnrealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont)
-{
- BOOL fResult = TRUE;
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winUnrealizeFont (%p, %p)\n", pScreen, pFont);
-#endif
-
- WIN_UNWRAP(UnrealizeFont);
- if (pScreen->UnrealizeFont)
- fResult = (*pScreen->UnrealizeFont) (pScreen, pFont);
- WIN_WRAP(UnrealizeFont, winUnrealizeFontNativeGDI);
-
- return fResult;
-#if CYGDEBUG
- winDebug ("winUnrealizeFont()\n");
-#endif
- return TRUE;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/wingc.c b/nx-X11/programs/Xserver/hw/xwin/wingc.c
deleted file mode 100644
index 3f661d520..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/wingc.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-void
-winPushPixels (GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDrawable, int dx, int dy, int xOrg, int yOrg);
-
-
-/*
- * Local prototypes
- */
-
-#if 0
-static void
-winChangeGCNativeGDI (GCPtr pGC, unsigned long ulChanges);
-#endif
-
-static void
-winValidateGCNativeGDI (GCPtr pGC,
- unsigned long changes,
- DrawablePtr pDrawable);
-
-#if 0
-static void
-winCopyGCNativeGDI (GCPtr pGCsrc, unsigned long ulMask, GCPtr pGCdst);
-#endif
-
-static void
-winDestroyGCNativeGDI (GCPtr pGC);
-
-#if 0
-static void
-winChangeClipNativeGDI (GCPtr pGC, int nType, pointer pValue, int nRects);
-
-static void
-winDestroyClipNativeGDI (GCPtr pGC);
-
-static void
-winCopyClipNativeGDI (GCPtr pGCdst, GCPtr pGCsrc);
-#endif
-
-#if 0
-/* GC Handling Routines */
-const GCFuncs winGCFuncs = {
- winValidateGCNativeGDI,
- winChangeGCNativeGDI,
- winCopyGCNativeGDI,
- winDestroyGCNativeGDI,
- winChangeClipNativeGDI,
- winDestroyClipNativeGDI,
- winCopyClipNativeGDI,
-};
-#else
-const GCFuncs winGCFuncs = {
- winValidateGCNativeGDI,
- miChangeGC,
- miCopyGC,
- winDestroyGCNativeGDI,
- miChangeClip,
- miDestroyClip,
- miCopyClip,
-};
-#endif
-
-/* Drawing Primitives */
-const GCOps winGCOps = {
- winFillSpansNativeGDI,
- winSetSpansNativeGDI,
- miPutImage,
- miCopyArea,
- miCopyPlane,
- miPolyPoint,
- winPolyLineNativeGDI,
- miPolySegment,
- miPolyRectangle,
- miPolyArc,
- miFillPolygon,
- miPolyFillRect,
- miPolyFillArc,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
-#if 0
- winImageGlyphBltNativeGDI,
- winPolyGlyphBltNativeGDI,
-#else
- miImageGlyphBlt,
- miPolyGlyphBlt,
-#endif
- winPushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-
-/* See Porting Layer Definition - p. 45 */
-/* See mfb/mfbgc.c - mfbCreateGC() */
-/* See Strategies for Porting - pp. 15, 16 */
-Bool
-winCreateGCNativeGDI (GCPtr pGC)
-{
- winPrivGCPtr pGCPriv = NULL;
- winPrivScreenPtr pScreenPriv = NULL;
-
-#if 0
- ErrorF ("winCreateGCNativeGDI - depth: %d\n",
- pGC->depth);
-#endif
-
- pGC->clientClip = NULL;
- pGC->clientClipType = CT_NONE;
- pGC->freeCompClip = FALSE;
- pGC->pCompositeClip = 0;
-
- pGC->ops = (GCOps *) &winGCOps;
- pGC->funcs = (GCFuncs *) &winGCFuncs;
-
- /* We want all coordinates passed to spans functions to be screen relative */
- pGC->miTranslate = TRUE;
-
- /* Allocate privates for this GC */
- pGCPriv = winGetGCPriv (pGC);
- if (pGCPriv == NULL)
- {
- ErrorF ("winCreateGCNativeGDI () - Privates pointer was NULL\n");
- return FALSE;
- }
-
- /* Create a new screen DC for the display window */
- pScreenPriv = winGetScreenPriv (pGC->pScreen);
- pGCPriv->hdc = GetDC (pScreenPriv->hwndScreen);
-
- /* Allocate a memory DC for the GC */
- pGCPriv->hdcMem = CreateCompatibleDC (pGCPriv->hdc);
-
- return TRUE;
-}
-
-
-#if 0
-/* See Porting Layer Definition - p. 45 */
-static void
-winChangeGCNativeGDI (GCPtr pGC, unsigned long ulChanges)
-{
-#if 0
- ErrorF ("winChangeGCNativeGDI () - Doing nothing\n");
-#endif
-}
-#endif
-
-
-static void
-winValidateGCNativeGDI (GCPtr pGC,
- unsigned long ulChanges,
- DrawablePtr pDrawable)
-{
- if ((ulChanges & (GCClipXOrigin | GCClipYOrigin | GCClipMask | GCSubwindowMode))
- || (pDrawable->serialNumber != (pGC->serialNumber & DRAWABLE_SERIAL_BITS)))
- {
- miComputeCompositeClip (pGC, pDrawable);
- }
-}
-
-
-#if 0
-/* See Porting Layer Definition - p. 46 */
-static void
-winCopyGCNativeGDI (GCPtr pGCsrc, unsigned long ulMask, GCPtr pGCdst)
-{
-
-}
-#endif
-
-
-/* See Porting Layer Definition - p. 46 */
-static void
-winDestroyGCNativeGDI (GCPtr pGC)
-{
- winGCPriv(pGC);
- winScreenPriv(pGC->pScreen);
-
- if (pGC->freeCompClip)
- REGION_DESTROY (pGC->pScreen, pGC->pCompositeClip);
-
- /* Free the memory DC */
- if (pGCPriv->hdcMem != NULL)
- {
- DeleteDC (pGCPriv->hdcMem);
- pGCPriv->hdcMem = NULL;
- }
-
- /* Release the screen DC for the display window */
- if (pGCPriv->hdc != NULL)
- {
- ReleaseDC (pScreenPriv->hwndScreen, pGCPriv->hdc);
- pGCPriv->hdc = NULL;
- }
-
- /* Invalidate the GC privates pointer */
- winSetGCPriv (pGC, NULL);
-}
-
-#if 0
-/* See Porting Layer Definition - p. 46 */
-static void
-winChangeClipNativeGDI (GCPtr pGC, int nType, pointer pValue, int nRects)
-{
-
-}
-
-
-/* See Porting Layer Definition - p. 47 */
-static void
-winDestroyClipNativeGDI (GCPtr pGC)
-{
-
-}
-
-
-/* See Porting Layer Definition - p. 47 */
-static void
-winCopyClipNativeGDI (GCPtr pGCdst, GCPtr pGCsrc)
-{
-
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/wingetsp.c b/nx-X11/programs/Xserver/hw/xwin/wingetsp.c
deleted file mode 100644
index ec9d51a17..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/wingetsp.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Harold L Hunt II
- * Alan Hourihane <alanh@fairlite.demon.co.uk>
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/wingetsp.c,v 1.7 2001/11/01 12:19:40 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-/* See Porting Layer Definition - p. 55 */
-void
-winGetSpansNativeGDI (DrawablePtr pDrawable,
- int nMax,
- DDXPointPtr pPoints,
- int *piWidths,
- int iSpans,
- char *pDsts)
-{
- PixmapPtr pPixmap = NULL;
- winPrivPixmapPtr pPixmapPriv = NULL;
- int iSpan;
- DDXPointPtr pPoint = NULL;
- int *piWidth = NULL;
- char *pDst = pDsts;
- HBITMAP hbmpWindow, hbmpOrig, hbmpOrig1;
- BYTE *pbWindow = NULL;
- HDC hdcMem, hdcMem1;
- ScreenPtr pScreen = pDrawable->pScreen;
- winScreenPriv(pScreen);
-
- /* Branch on the drawable type */
- switch (pDrawable->type)
- {
- case DRAWABLE_PIXMAP:
-#if 0
- ErrorF ("winGetSpans - DRAWABLE_PIXMAP %08x\n",
- pDrawable);
-#endif
-
- pPixmap = (PixmapPtr) pDrawable;
- pPixmapPriv = winGetPixmapPriv (pPixmap);
-
- /* Open a memory HDC */
- hdcMem1 = CreateCompatibleDC (NULL);
- hdcMem = CreateCompatibleDC (NULL);
-
- /* Select the drawable pixmap into a DC */
- hbmpOrig1 = SelectObject (hdcMem1, pPixmapPriv->hBitmap);
-
- if (hbmpOrig1 == NULL)
- FatalError ("winGetSpans - DRAWABLE_PIXMAP - SelectObject () "
- "failed on pPixmapPriv->hBitmap\n");
-
- /* Loop through spans */
- for (iSpan = 0; iSpan < iSpans; ++iSpan)
- {
- pPoint = pPoints + iSpan;
- piWidth = piWidths + iSpan;
-
- hbmpWindow = winCreateDIBNativeGDI (*piWidth, 1,
- pDrawable->depth,
- &pbWindow,
- NULL);
-
- hbmpOrig = SelectObject (hdcMem, hbmpWindow);
-
- /* Transfer the window bits to the window bitmap */
- BitBlt (hdcMem,
- 0, 0,
- *piWidth, 1,
- hdcMem1,
- pPoint->x, pPoint->y,
- SRCCOPY);
-
- memcpy (pDst,
- (char*) pbWindow,
- PixmapBytePad (*piWidth, pDrawable->depth));
-
- /* Pop the window bitmap out of the HDC and delete the bitmap */
- SelectObject (hdcMem, hbmpOrig);
- DeleteObject (hbmpWindow);
-
-#if 0
- ErrorF ("(%dx%dx%d) (%d,%d) w: %d\n",
- pDrawable->width, pDrawable->height, pDrawable->depth,
- pPoint->x, pPoint->y, *piWidth);
-#endif
-
- /* Calculate offset of next bit destination */
- pDst += PixmapBytePad (*piWidth, pDrawable->depth);
- }
-
- /* Pop the pixmap's bitmap out of the HDC */
- SelectObject (hdcMem1, hbmpOrig1);
-
- /* Delete the HDCs */
- DeleteDC (hdcMem1);
- DeleteDC (hdcMem);
- break;
-
- case DRAWABLE_WINDOW:
-#if 0
- ErrorF ("winGetSpans - DRAWABLE_WINDOW\n");
-#endif
-
- /* Open a memory HDC */
- hdcMem = CreateCompatibleDC (NULL);
-
- /* Loop through spans */
- for (iSpan = 0; iSpan < iSpans; ++iSpan)
- {
- pPoint = pPoints + iSpan;
- piWidth = piWidths + iSpan;
-
- hbmpWindow = winCreateDIBNativeGDI (*piWidth, 1,
- pDrawable->depth,
- &pbWindow,
- NULL);
-
- hbmpOrig = SelectObject (hdcMem, hbmpWindow);
-
- /* Transfer the window bits to the window bitmap */
- BitBlt (hdcMem,
- 0, 0,
- *piWidth, 1,
- pScreenPriv->hdcScreen,
- pPoint->x, pPoint->y,
- SRCCOPY);
-
- memcpy (pDst,
- (char*) pbWindow,
- PixmapBytePad (*piWidth, pDrawable->depth));
-
- /* Pop the window bitmap out of the HDC */
- SelectObject (hdcMem, hbmpOrig);
-
- DeleteObject (hbmpWindow);
-
-#if 0
- ErrorF ("(%dx%dx%d) (%d,%d) w: %d\n",
- pDrawable->width, pDrawable->height, pDrawable->depth,
- pPoint->x, pPoint->y, *piWidth);
-#endif
-
- /* Calculate offset of next bit destination */
- pDst += PixmapBytePad (*piWidth, pDrawable->depth);
- }
-
- /* Delete the window bitmap */
- DeleteDC (hdcMem);
- break;
-
- case UNDRAWABLE_WINDOW:
- FatalError ("winGetSpans - UNDRAWABLE_WINDOW\n");
- break;
-
- case DRAWABLE_BUFFER:
- FatalError ("winGetSpans - DRAWABLE_BUFFER\n");
- break;
-
- default:
- FatalError ("winGetSpans - Unknown drawable type\n");
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winglobals.c b/nx-X11/programs/Xserver/hw/xwin/winglobals.c
deleted file mode 100644
index af8190d3f..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winglobals.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * General global variables
- */
-
-int g_iNumScreens = 0;
-winScreenInfo g_ScreenInfo[MAXSCREENS];
-int g_iLastScreen = -1;
-#ifdef HAS_DEVWINDOWS
-int g_fdMessageQueue = WIN_FD_INVALID;
-#endif
-int g_iScreenPrivateIndex = -1;
-int g_iCmapPrivateIndex = -1;
-int g_iGCPrivateIndex = -1;
-int g_iPixmapPrivateIndex = -1;
-int g_iWindowPrivateIndex = -1;
-unsigned long g_ulServerGeneration = 0;
-Bool g_fInitializedDefaultScreens = FALSE;
-DWORD g_dwEnginesSupported = 0;
-HINSTANCE g_hInstance = 0;
-HWND g_hDlgDepthChange = NULL;
-HWND g_hDlgExit = NULL;
-HWND g_hDlgAbout = NULL;
-const char * g_pszQueryHost = NULL;
-Bool g_fXdmcpEnabled = FALSE;
-HICON g_hIconX = NULL;
-HICON g_hSmallIconX = NULL;
-#ifndef RELOCATE_PROJECTROOT
-char * g_pszLogFile = "/tmp/XWin.log";
-#else
-char * g_pszLogFile = "XWin.log";
-Bool g_fLogFileChanged = FALSE;
-#endif
-int g_iLogVerbose = 2;
-Bool g_fLogInited = FALSE;
-char * g_pszCommandLine = NULL;
-Bool g_fSilentFatalError = FALSE;
-DWORD g_dwCurrentThreadID = 0;
-Bool g_fKeyboardHookLL = FALSE;
-HHOOK g_hhookKeyboardLL = NULL;
-HWND g_hwndKeyboardFocus = NULL;
-Bool g_fNoHelpMessageBox = FALSE;
-Bool g_fSoftwareCursor = FALSE;
-Bool g_fSilentDupError = FALSE;
-
-
-/*
- * Global variables for dynamically loaded libraries and
- * their function pointers
- */
-
-HMODULE g_hmodDirectDraw = NULL;
-FARPROC g_fpDirectDrawCreate = NULL;
-FARPROC g_fpDirectDrawCreateClipper = NULL;
-
-HMODULE g_hmodCommonControls = NULL;
-FARPROC g_fpTrackMouseEvent = (FARPROC) (void (*)(void))NoopDDA;
-
-
-#ifdef XWIN_CLIPBOARD
-/*
- * Wrapped DIX functions
- */
-winDispatchProcPtr winProcEstablishConnectionOrig = NULL;
-winDispatchProcPtr winProcQueryTreeOrig = NULL;
-winDispatchProcPtr winProcSetSelectionOwnerOrig = NULL;
-
-
-/*
- * Clipboard variables
- */
-
-Bool g_fUnicodeClipboard = TRUE;
-Bool g_fClipboard = FALSE;
-Bool g_fClipboardLaunched = FALSE;
-Bool g_fClipboardStarted = FALSE;
-pthread_t g_ptClipboardProc;
-HWND g_hwndClipboard = NULL;
-void *g_pClipboardDisplay = NULL;
-Window g_iClipboardWindow = None;
-Atom g_atomLastOwnedSelection = None;
-#endif
-
-
-/*
- * Re-initialize global variables that are invalidated
- * by a server reset.
- */
-
-void
-winInitializeGlobals (void)
-{
- g_dwCurrentThreadID = GetCurrentThreadId ();
- g_hwndKeyboardFocus = NULL;
-#ifdef XWIN_CLIPBOARD
- g_fClipboardLaunched = FALSE;
- g_fClipboardStarted = FALSE;
- g_iClipboardWindow = None;
- g_pClipboardDisplay = NULL;
- g_atomLastOwnedSelection = None;
- g_hwndClipboard = NULL;
-#endif
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winkeybd.c b/nx-X11/programs/Xserver/hw/xwin/winkeybd.c
deleted file mode 100644
index 3756a4432..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winkeybd.c
+++ /dev/null
@@ -1,650 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Dakshinamurthy Karra
- * Suhaib M Siddiqi
- * Peter Busch
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winkeybd.c,v 1.12 2002/10/17 08:18:22 alanh Exp $ */
-
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "winkeybd.h"
-#include "winconfig.h"
-#include "winmsg.h"
-
-#ifdef XKB
-#ifndef XKB_IN_SERVER
-#define XKB_IN_SERVER
-#endif
-#include <X11/extensions/XKBsrv.h>
-#endif
-
-static Bool g_winKeyState[NUM_KEYCODES];
-
-/* Stored to get internal mode key states. Must be read-only. */
-static unsigned short const *g_winInternalModeKeyStatesPtr = NULL;
-
-
-/*
- * Local prototypes
- */
-
-static void
-winGetKeyMappings (KeySymsPtr pKeySyms, CARD8 *pModMap);
-
-static void
-winKeybdBell (int iPercent, DeviceIntPtr pDeviceInt,
- pointer pCtrl, int iClass);
-
-static void
-winKeybdCtrl (DeviceIntPtr pDevice, KeybdCtrl *pCtrl);
-
-
-/*
- * Translate a Windows WM_[SYS]KEY(UP/DOWN) message
- * into an ASCII scan code.
- *
- * We do this ourselves, rather than letting Windows handle it,
- * because Windows tends to munge the handling of special keys,
- * like AltGr on European keyboards.
- */
-
-void
-winTranslateKey (WPARAM wParam, LPARAM lParam, int *piScanCode)
-{
- int iKeyFixup = g_iKeyMap[wParam * WIN_KEYMAP_COLS + 1];
- int iKeyFixupEx = g_iKeyMap[wParam * WIN_KEYMAP_COLS + 2];
- int iParamScanCode = LOBYTE (HIWORD (lParam));
-
- /* Branch on special extended, special non-extended, or normal key */
- if ((HIWORD (lParam) & KF_EXTENDED) && iKeyFixupEx)
- *piScanCode = iKeyFixupEx;
- else if (iKeyFixup)
- *piScanCode = iKeyFixup;
- else if (wParam == 0 && iParamScanCode == 0x70)
- *piScanCode = KEY_HKTG;
- else
- switch (iParamScanCode)
- {
- case 0x70:
- *piScanCode = KEY_HKTG;
- break;
- case 0x73:
- *piScanCode = KEY_BSlash2;
- break;
- default:
- *piScanCode = iParamScanCode;
- break;
- }
-}
-
-
-/*
- * We call this function from winKeybdProc when we are
- * initializing the keyboard.
- */
-
-static void
-winGetKeyMappings (KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
- int i;
- KeySym *pMap = map;
- KeySym *pKeySym;
-
- /*
- * Initialize all key states to up... which may not be true
- * but it is close enough.
- */
- ZeroMemory (g_winKeyState, sizeof (g_winKeyState[0]) * NUM_KEYCODES);
-
- /* MAP_LENGTH is defined in Xserver/include/input.h to be 256 */
- for (i = 0; i < MAP_LENGTH; i++)
- pModMap[i] = NoSymbol; /* make sure it is restored */
-
- /* Loop through all valid entries in the key symbol table */
- for (pKeySym = pMap, i = MIN_KEYCODE;
- i < (MIN_KEYCODE + NUM_KEYCODES);
- i++, pKeySym += GLYPHS_PER_KEY)
- {
- switch (*pKeySym)
- {
- case XK_Shift_L:
- case XK_Shift_R:
- pModMap[i] = ShiftMask;
- break;
-
- case XK_Control_L:
- case XK_Control_R:
- pModMap[i] = ControlMask;
- break;
-
- case XK_Caps_Lock:
- pModMap[i] = LockMask;
- break;
-
- case XK_Alt_L:
- case XK_Alt_R:
- pModMap[i] = AltMask;
- break;
-
- case XK_Num_Lock:
- pModMap[i] = NumLockMask;
- break;
-
- case XK_Scroll_Lock:
- pModMap[i] = ScrollLockMask;
- break;
-
-#if 0
- case XK_Super_L:
- case XK_Super_R:
- pModMap[i] = Mod4Mask;
- break;
-#else
- /* Hirigana/Katakana toggle */
- case XK_Kana_Lock:
- case XK_Kana_Shift:
- pModMap[i] = KanaMask;
- break;
-#endif
-
- /* alternate toggle for multinational support */
- case XK_Mode_switch:
- pModMap[i] = AltLangMask;
- break;
- }
- }
-
- pKeySyms->map = (KeySym *) pMap;
- pKeySyms->mapWidth = GLYPHS_PER_KEY;
- pKeySyms->minKeyCode = MIN_KEYCODE;
- pKeySyms->maxKeyCode = MAX_KEYCODE;
-}
-
-
-/* Ring the keyboard bell (system speaker on PCs) */
-static void
-winKeybdBell (int iPercent, DeviceIntPtr pDeviceInt,
- pointer pCtrl, int iClass)
-{
- /*
- * We can't use Beep () here because it uses the PC speaker
- * on NT/2000. MessageBeep (MB_OK) will play the default system
- * sound on systems with a sound card or it will beep the PC speaker
- * on systems that do not have a sound card.
- */
- MessageBeep (MB_OK);
-}
-
-
-/* Change some keyboard configuration parameters */
-static void
-winKeybdCtrl (DeviceIntPtr pDevice, KeybdCtrl *pCtrl)
-{
- g_winInternalModeKeyStatesPtr = &(pDevice->key->state);
-}
-
-
-/*
- * See Porting Layer Definition - p. 18
- * winKeybdProc is known as a DeviceProc.
- */
-
-int
-winKeybdProc (DeviceIntPtr pDeviceInt, int iState)
-{
- KeySymsRec keySyms;
- CARD8 modMap[MAP_LENGTH];
- DevicePtr pDevice = (DevicePtr) pDeviceInt;
-#ifdef XKB
- XkbComponentNamesRec names;
- XkbSrvInfoPtr xkbi;
- XkbControlsPtr ctrl;
-#endif
-
- switch (iState)
- {
- case DEVICE_INIT:
- winConfigKeyboard (pDeviceInt);
-
- winGetKeyMappings (&keySyms, modMap);
-
-#ifdef XKB
- /* FIXME: Maybe we should use winGetKbdLeds () here? */
- defaultKeyboardControl.leds = g_winInfo.keyboard.leds;
-#else
- defaultKeyboardControl.leds = g_winInfo.keyboard.leds;
-#endif
-
-#ifdef XKB
- if (g_winInfo.xkb.disable)
- {
-#endif
- InitKeyboardDeviceStruct (pDevice,
- &keySyms,
- modMap,
- winKeybdBell,
- winKeybdCtrl);
-#ifdef XKB
- }
- else
- {
-
- if (XkbInitialMap)
- {
- names.keymap = XkbInitialMap;
- names.keycodes = NULL;
- names.types = NULL;
- names.compat = NULL;
- names.symbols = NULL;
- names.geometry = NULL;
- }
- else
- {
- names.keymap = g_winInfo.xkb.keymap;
- names.keycodes = g_winInfo.xkb.keycodes;
- names.types = g_winInfo.xkb.types;
- names.compat = g_winInfo.xkb.compat;
- names.symbols = g_winInfo.xkb.symbols;
- names.geometry = g_winInfo.xkb.geometry;
- }
-
- winErrorFVerb(2, "Rules = \"%s\" Model = \"%s\" Layout = \"%s\""
- " Variant = \"%s\" Options = \"%s\"\n",
- g_winInfo.xkb.rules, g_winInfo.xkb.model,
- g_winInfo.xkb.layout, g_winInfo.xkb.variant,
- g_winInfo.xkb.options);
-
- XkbSetRulesDflts (g_winInfo.xkb.rules, g_winInfo.xkb.model,
- g_winInfo.xkb.layout, g_winInfo.xkb.variant,
- g_winInfo.xkb.options);
- XkbInitKeyboardDeviceStruct (pDeviceInt, &names, &keySyms,
- modMap, winKeybdBell, winKeybdCtrl);
- }
-#endif
-
-#ifdef XKB
- if (!g_winInfo.xkb.disable)
- {
- xkbi = pDeviceInt->key->xkbInfo;
- if (xkbi != NULL)
- {
- ctrl = xkbi->desc->ctrls;
- ctrl->repeat_delay = g_winInfo.keyboard.delay;
- ctrl->repeat_interval = 1000/g_winInfo.keyboard.rate;
- }
- else
- {
- winErrorFVerb (1, "winKeybdProc - Error initializing keyboard AutoRepeat (No XKB)\n");
- }
- }
-#endif
-
- g_winInternalModeKeyStatesPtr = &(pDeviceInt->key->state);
- break;
-
- case DEVICE_ON:
- pDevice->on = TRUE;
- g_winInternalModeKeyStatesPtr = &(pDeviceInt->key->state);
- break;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- pDevice->on = FALSE;
- g_winInternalModeKeyStatesPtr = NULL;
- break;
- }
-
- return Success;
-}
-
-
-/*
- * Detect current mode key states upon server startup.
- *
- * Simulate a press and release of any key that is currently
- * toggled.
- */
-
-void
-winInitializeModeKeyStates (void)
-{
- /* Restore NumLock */
- if (GetKeyState (VK_NUMLOCK) & 0x0001)
- {
- winSendKeyEvent (KEY_NumLock, TRUE);
- winSendKeyEvent (KEY_NumLock, FALSE);
- }
-
- /* Restore CapsLock */
- if (GetKeyState (VK_CAPITAL) & 0x0001)
- {
- winSendKeyEvent (KEY_CapsLock, TRUE);
- winSendKeyEvent (KEY_CapsLock, FALSE);
- }
-
- /* Restore ScrollLock */
- if (GetKeyState (VK_SCROLL) & 0x0001)
- {
- winSendKeyEvent (KEY_ScrollLock, TRUE);
- winSendKeyEvent (KEY_ScrollLock, FALSE);
- }
-
- /* Restore KanaLock */
- if (GetKeyState (VK_KANA) & 0x0001)
- {
- winSendKeyEvent (KEY_HKTG, TRUE);
- winSendKeyEvent (KEY_HKTG, FALSE);
- }
-}
-
-
-/*
- * Upon regaining the keyboard focus we must
- * resynchronize our internal mode key states
- * with the actual state of the keys.
- */
-
-void
-winRestoreModeKeyStates ()
-{
- DWORD dwKeyState;
- BOOL processEvents = TRUE;
- unsigned short internalKeyStates;
-
- /* X server is being initialized */
- if (!g_winInternalModeKeyStatesPtr)
- return;
-
- /* Only process events if the rootwindow is mapped. The keyboard events
- * will cause segfaults otherwise */
- if (WindowTable && WindowTable[0] && WindowTable[0]->mapped == FALSE)
- processEvents = FALSE;
-
- /* Force to process all pending events in the mi event queue */
- if (processEvents)
- mieqProcessInputEvents ();
-
- /* Read the mode key states of our X server */
- internalKeyStates = *g_winInternalModeKeyStatesPtr;
-
- /*
- * NOTE: The C XOR operator, ^, will not work here because it is
- * a bitwise operator, not a logical operator. C does not
- * have a logical XOR operator, so we use a macro instead.
- */
-
- /* Has the key state changed? */
- dwKeyState = GetKeyState (VK_NUMLOCK) & 0x0001;
- if (WIN_XOR (internalKeyStates & NumLockMask, dwKeyState))
- {
- winSendKeyEvent (KEY_NumLock, TRUE);
- winSendKeyEvent (KEY_NumLock, FALSE);
- }
-
- /* Has the key state changed? */
- dwKeyState = GetKeyState (VK_CAPITAL) & 0x0001;
- if (WIN_XOR (internalKeyStates & LockMask, dwKeyState))
- {
- winSendKeyEvent (KEY_CapsLock, TRUE);
- winSendKeyEvent (KEY_CapsLock, FALSE);
- }
-
- /* Has the key state changed? */
- dwKeyState = GetKeyState (VK_SCROLL) & 0x0001;
- if (WIN_XOR (internalKeyStates & ScrollLockMask, dwKeyState))
- {
- winSendKeyEvent (KEY_ScrollLock, TRUE);
- winSendKeyEvent (KEY_ScrollLock, FALSE);
- }
-
- /* Has the key state changed? */
- dwKeyState = GetKeyState (VK_KANA) & 0x0001;
- if (WIN_XOR (internalKeyStates & KanaMask, dwKeyState))
- {
- winSendKeyEvent (KEY_HKTG, TRUE);
- winSendKeyEvent (KEY_HKTG, FALSE);
- }
-}
-
-
-/*
- * Look for the lovely fake Control_L press/release generated by Windows
- * when AltGr is pressed/released on a non-U.S. keyboard.
- */
-
-Bool
-winIsFakeCtrl_L (UINT message, WPARAM wParam, LPARAM lParam)
-{
- MSG msgNext;
- LONG lTime;
- Bool fReturn;
-
- /*
- * Fake Ctrl_L presses will be followed by an Alt_R keypress
- * with the same timestamp as the Ctrl_L press.
- */
- if ((message == WM_KEYDOWN || message == WM_SYSKEYDOWN)
- && wParam == VK_CONTROL
- && (HIWORD (lParam) & KF_EXTENDED) == 0)
- {
- /* Got a Ctrl_L press */
-
- /* Get time of current message */
- lTime = GetMessageTime ();
-
- /* Look for fake Ctrl_L preceeding an Alt_R press. */
- fReturn = PeekMessage (&msgNext, NULL,
- WM_KEYDOWN, WM_SYSKEYDOWN,
- PM_NOREMOVE);
-
- /*
- * Try again if the first call fails.
- * NOTE: This usually happens when TweakUI is enabled.
- */
- if (!fReturn)
- {
- /* Voodoo to make sure that the Alt_R message has posted */
- Sleep (0);
-
- /* Look for fake Ctrl_L preceeding an Alt_R press. */
- fReturn = PeekMessage (&msgNext, NULL,
- WM_KEYDOWN, WM_SYSKEYDOWN,
- PM_NOREMOVE);
- }
- if (msgNext.message != WM_KEYDOWN && msgNext.message != WM_SYSKEYDOWN)
- fReturn = 0;
-
- /* Is next press an Alt_R with the same timestamp? */
- if (fReturn && msgNext.wParam == VK_MENU
- && msgNext.time == lTime
- && (HIWORD (msgNext.lParam) & KF_EXTENDED))
- {
- /*
- * Next key press is Alt_R with same timestamp as current
- * Ctrl_L message. Therefore, this Ctrl_L press is a fake
- * event, so discard it.
- */
- return TRUE;
- }
- }
-
- /*
- * Fake Ctrl_L releases will be followed by an Alt_R release
- * with the same timestamp as the Ctrl_L release.
- */
- if ((message == WM_KEYUP || message == WM_SYSKEYUP)
- && wParam == VK_CONTROL
- && (HIWORD (lParam) & KF_EXTENDED) == 0)
- {
- /* Got a Ctrl_L release */
-
- /* Get time of current message */
- lTime = GetMessageTime ();
-
- /* Look for fake Ctrl_L release preceeding an Alt_R release. */
- fReturn = PeekMessage (&msgNext, NULL,
- WM_KEYUP, WM_SYSKEYUP,
- PM_NOREMOVE);
-
- /*
- * Try again if the first call fails.
- * NOTE: This usually happens when TweakUI is enabled.
- */
- if (!fReturn)
- {
- /* Voodoo to make sure that the Alt_R message has posted */
- Sleep (0);
-
- /* Look for fake Ctrl_L release preceeding an Alt_R release. */
- fReturn = PeekMessage (&msgNext, NULL,
- WM_KEYUP, WM_SYSKEYUP,
- PM_NOREMOVE);
- }
-
- if (msgNext.message != WM_KEYUP && msgNext.message != WM_SYSKEYUP)
- fReturn = 0;
-
- /* Is next press an Alt_R with the same timestamp? */
- if (fReturn
- && (msgNext.message == WM_KEYUP
- || msgNext.message == WM_SYSKEYUP)
- && msgNext.wParam == VK_MENU
- && msgNext.time == lTime
- && (HIWORD (msgNext.lParam) & KF_EXTENDED))
- {
- /*
- * Next key release is Alt_R with same timestamp as current
- * Ctrl_L message. Therefore, this Ctrl_L release is a fake
- * event, so discard it.
- */
- return TRUE;
- }
- }
-
- /* Not a fake control left press/release */
- return FALSE;
-}
-
-
-/*
- * Lift any modifier keys that are pressed
- */
-
-void
-winKeybdReleaseKeys ()
-{
- int i;
-
-#ifdef HAS_DEVWINDOWS
- /* Verify that the mi input system has been initialized */
- if (g_fdMessageQueue == WIN_FD_INVALID)
- return;
-#endif
-
- /* Loop through all keys */
- for (i = 0; i < NUM_KEYCODES; ++i)
- {
- /* Pop key if pressed */
- if (g_winKeyState[i])
- winSendKeyEvent (i, FALSE);
-
- /* Reset pressed flag for keys */
- g_winKeyState[i] = FALSE;
- }
-}
-
-
-/*
- * Take a raw X key code and send an up or down event for it.
- *
- * Thanks to VNC for inspiration, though it is a simple function.
- */
-
-void
-winSendKeyEvent (DWORD dwKey, Bool fDown)
-{
- xEvent xCurrentEvent;
-
- /*
- * When alt-tabing between screens we can get phantom key up messages
- * Here we only pass them through it we think we should!
- */
- if (g_winKeyState[dwKey] == FALSE && fDown == FALSE) return;
-
- /* Update the keyState map */
- g_winKeyState[dwKey] = fDown;
-
- ZeroMemory (&xCurrentEvent, sizeof (xCurrentEvent));
-
- xCurrentEvent.u.u.type = fDown ? KeyPress : KeyRelease;
- xCurrentEvent.u.keyButtonPointer.time =
- g_c32LastInputEventTime = GetTickCount ();
- xCurrentEvent.u.u.detail = dwKey + MIN_KEYCODE;
- mieqEnqueue (&xCurrentEvent);
-}
-
-BOOL winCheckKeyPressed(WPARAM wParam, LPARAM lParam)
-{
- switch (wParam)
- {
- case VK_CONTROL:
- if ((lParam & 0x1ff0000) == 0x11d0000 && g_winKeyState[KEY_RCtrl])
- return TRUE;
- if ((lParam & 0x1ff0000) == 0x01d0000 && g_winKeyState[KEY_LCtrl])
- return TRUE;
- break;
- case VK_SHIFT:
- if ((lParam & 0x1ff0000) == 0x0360000 && g_winKeyState[KEY_ShiftR])
- return TRUE;
- if ((lParam & 0x1ff0000) == 0x02a0000 && g_winKeyState[KEY_ShiftL])
- return TRUE;
- break;
- default:
- return TRUE;
- }
- return FALSE;
-}
-
-/* Only on shift release message is sent even if both are pressed.
- * Fix this here
- */
-void winFixShiftKeys (int iScanCode)
-{
- if (GetKeyState (VK_SHIFT) & 0x8000)
- return;
-
- if (iScanCode == KEY_ShiftL && g_winKeyState[KEY_ShiftR])
- winSendKeyEvent (KEY_ShiftR, FALSE);
- if (iScanCode == KEY_ShiftR && g_winKeyState[KEY_ShiftL])
- winSendKeyEvent (KEY_ShiftL, FALSE);
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winkeybd.h b/nx-X11/programs/Xserver/hw/xwin/winkeybd.h
deleted file mode 100644
index f42e09fd7..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winkeybd.h
+++ /dev/null
@@ -1,310 +0,0 @@
-#if !defined(WINKEYBD_H)
-#define WINKEYBD_H
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winkeybd.h,v 1.1 2001/09/26 13:00:34 alanh Exp $ */
-
-/*
- * We need symbols for the scan codes of keys.
- */
-#include "winkeynames.h"
-
-
-/*
- * Include the standard ASCII keymap.
- *
- * This header declares a static KeySym array called 'map'.
- */
-#include "winkeymap.h"
-
-#define WIN_KEYMAP_COLS 3
-
-const int
-g_iKeyMap [] = {
- /* count Windows VK, ASCII, ASCII when extended VK */
- /* 0 */ 0, 0, 0,
- /* 1 */ 0, 0, 0,
- /* 2 */ 0, 0, 0,
- /* 3 */ VK_CANCEL, 0, KEY_Break,
- /* 4 */ 0, 0, 0,
- /* 5 */ 0, 0, 0,
- /* 6 */ 0, 0, 0,
- /* 7 */ 0, 0, 0,
- /* 8 */ 0, 0, 0,
- /* 9 */ 0, 0, 0,
- /* 10 */ 0, 0, 0,
- /* 11 */ 0, 0, 0,
- /* 12 */ 0, 0, 0,
- /* 13 */ VK_RETURN, 0, KEY_KP_Enter,
- /* 14 */ 0, 0, 0,
- /* 15 */ 0, 0, 0,
- /* 16 */ VK_SHIFT, 0, 0,
- /* 17 */ VK_CONTROL, 0, KEY_RCtrl,
- /* 18 */ VK_MENU, 0, KEY_AltLang,
- /* 19 */ VK_PAUSE, KEY_Pause, 0,
- /* 20 */ 0, 0, 0,
- /* 21 */ 0, 0, 0,
- /* 22 */ 0, 0, 0,
- /* 23 */ 0, 0, 0,
- /* 24 */ 0, 0, 0,
- /* 25 */ 0, 0, 0,
- /* 26 */ 0, 0, 0,
- /* 27 */ 0, 0, 0,
- /* 28 */ 0, 0, 0,
- /* 29 */ 0, 0, 0,
- /* 30 */ 0, 0, 0,
- /* 31 */ 0, 0, 0,
- /* 32 */ 0, 0, 0,
- /* 33 */ VK_PRIOR, 0, KEY_PgUp,
- /* 34 */ VK_NEXT, 0, KEY_PgDown,
- /* 35 */ VK_END, 0, KEY_End,
- /* 36 */ VK_HOME, 0, KEY_Home,
- /* 37 */ VK_LEFT, 0, KEY_Left,
- /* 38 */ VK_UP, 0, KEY_Up,
- /* 39 */ VK_RIGHT, 0, KEY_Right,
- /* 40 */ VK_DOWN, 0, KEY_Down,
- /* 41 */ 0, 0, 0,
- /* 42 */ 0, 0, 0,
- /* 43 */ 0, 0, 0,
- /* 44 */ VK_SNAPSHOT, 0, KEY_Print,
- /* 45 */ VK_INSERT, 0, KEY_Insert,
- /* 46 */ VK_DELETE, 0, KEY_Delete,
- /* 47 */ 0, 0, 0,
- /* 48 */ 0, 0, 0,
- /* 49 */ 0, 0, 0,
- /* 50 */ 0, 0, 0,
- /* 51 */ 0, 0, 0,
- /* 52 */ 0, 0, 0,
- /* 53 */ 0, 0, 0,
- /* 54 */ 0, 0, 0,
- /* 55 */ 0, 0, 0,
- /* 56 */ 0, 0, 0,
- /* 57 */ 0, 0, 0,
- /* 58 */ 0, 0, 0,
- /* 59 */ 0, 0, 0,
- /* 60 */ 0, 0, 0,
- /* 61 */ 0, 0, 0,
- /* 62 */ 0, 0, 0,
- /* 63 */ 0, 0, 0,
- /* 64 */ 0, 0, 0,
- /* 65 */ 0, 0, 0,
- /* 66 */ 0, 0, 0,
- /* 67 */ 0, 0, 0,
- /* 68 */ 0, 0, 0,
- /* 69 */ 0, 0, 0,
- /* 70 */ 0, 0, 0,
- /* 71 */ 0, 0, 0,
- /* 72 */ 0, 0, 0,
- /* 73 */ 0, 0, 0,
- /* 74 */ 0, 0, 0,
- /* 75 */ 0, 0, 0,
- /* 76 */ 0, 0, 0,
- /* 77 */ 0, 0, 0,
- /* 78 */ 0, 0, 0,
- /* 79 */ 0, 0, 0,
- /* 80 */ 0, 0, 0,
- /* 81 */ 0, 0, 0,
- /* 82 */ 0, 0, 0,
- /* 83 */ 0, 0, 0,
- /* 84 */ 0, 0, 0,
- /* 85 */ 0, 0, 0,
- /* 86 */ 0, 0, 0,
- /* 87 */ 0, 0, 0,
- /* 88 */ 0, 0, 0,
- /* 89 */ 0, 0, 0,
- /* 90 */ 0, 0, 0,
- /* 91 */ VK_LWIN, KEY_LMeta, 0,
- /* 92 */ VK_RWIN, KEY_RMeta, 0,
- /* 93 */ VK_APPS, KEY_Menu, 0,
- /* 94 */ 0, 0, 0,
- /* 95 */ 0, 0, 0,
- /* 96 */ 0, 0, 0,
- /* 97 */ 0, 0, 0,
- /* 98 */ 0, 0, 0,
- /* 99 */ 0, 0, 0,
- /* 100 */ 0, 0, 0,
- /* 101 */ 0, 0, 0,
- /* 102 */ 0, 0, 0,
- /* 103 */ 0, 0, 0,
- /* 104 */ 0, 0, 0,
- /* 105 */ 0, 0, 0,
- /* 106 */ 0, 0, 0,
- /* 107 */ 0, 0, 0,
- /* 108 */ 0, 0, 0,
- /* 109 */ 0, 0, 0,
- /* 110 */ 0, 0, 0,
- /* 111 */ VK_DIVIDE, 0, KEY_KP_Divide,
- /* 112 */ 0, 0, 0,
- /* 113 */ 0, 0, 0,
- /* 114 */ 0, 0, 0,
- /* 115 */ 0, 0, 0,
- /* 116 */ 0, 0, 0,
- /* 117 */ 0, 0, 0,
- /* 118 */ 0, 0, 0,
- /* 119 */ 0, 0, 0,
- /* 120 */ 0, 0, 0,
- /* 121 */ 0, 0, 0,
- /* 122 */ 0, 0, 0,
- /* 123 */ 0, 0, 0,
- /* 124 */ 0, 0, 0,
- /* 125 */ 0, 0, 0,
- /* 126 */ 0, 0, 0,
- /* 127 */ 0, 0, 0,
- /* 128 */ 0, 0, 0,
- /* 129 */ 0, 0, 0,
- /* 130 */ 0, 0, 0,
- /* 131 */ 0, 0, 0,
- /* 132 */ 0, 0, 0,
- /* 133 */ 0, 0, 0,
- /* 134 */ 0, 0, 0,
- /* 135 */ 0, 0, 0,
- /* 136 */ 0, 0, 0,
- /* 137 */ 0, 0, 0,
- /* 138 */ 0, 0, 0,
- /* 139 */ 0, 0, 0,
- /* 140 */ 0, 0, 0,
- /* 141 */ 0, 0, 0,
- /* 142 */ 0, 0, 0,
- /* 143 */ 0, 0, 0,
- /* 144 */ 0, 0, 0,
- /* 145 */ 0, 0, 0,
- /* 146 */ 0, 0, 0,
- /* 147 */ 0, 0, 0,
- /* 148 */ 0, 0, 0,
- /* 149 */ 0, 0, 0,
- /* 150 */ 0, 0, 0,
- /* 151 */ 0, 0, 0,
- /* 152 */ 0, 0, 0,
- /* 153 */ 0, 0, 0,
- /* 154 */ 0, 0, 0,
- /* 155 */ 0, 0, 0,
- /* 156 */ 0, 0, 0,
- /* 157 */ 0, 0, 0,
- /* 158 */ 0, 0, 0,
- /* 159 */ 0, 0, 0,
- /* 160 */ 0, 0, 0,
- /* 161 */ 0, 0, 0,
- /* 162 */ 0, 0, 0,
- /* 163 */ 0, 0, 0,
- /* 164 */ 0, 0, 0,
- /* 165 */ 0, 0, 0,
- /* 166 */ 0, 0, 0,
- /* 167 */ 0, 0, 0,
- /* 168 */ 0, 0, 0,
- /* 169 */ 0, 0, 0,
- /* 170 */ 0, 0, 0,
- /* 171 */ 0, 0, 0,
- /* 172 */ 0, 0, 0,
- /* 173 */ 0, 0, 0,
- /* 174 */ 0, 0, 0,
- /* 175 */ 0, 0, 0,
- /* 176 */ 0, 0, 0,
- /* 177 */ 0, 0, 0,
- /* 178 */ 0, 0, 0,
- /* 179 */ 0, 0, 0,
- /* 180 */ 0, 0, 0,
- /* 181 */ 0, 0, 0,
- /* 182 */ 0, 0, 0,
- /* 183 */ 0, 0, 0,
- /* 184 */ 0, 0, 0,
- /* 185 */ 0, 0, 0,
- /* 186 */ 0, 0, 0,
- /* 187 */ 0, 0, 0,
- /* 188 */ 0, 0, 0,
- /* 189 */ 0, 0, 0,
- /* 190 */ 0, 0, 0,
- /* 191 */ 0, 0, 0,
- /* 192 */ 0, 0, 0,
- /* 193 */ 0, 0, 0,
- /* 194 */ 0, 0, 0,
- /* 195 */ 0, 0, 0,
- /* 196 */ 0, 0, 0,
- /* 197 */ 0, 0, 0,
- /* 198 */ 0, 0, 0,
- /* 199 */ 0, 0, 0,
- /* 200 */ 0, 0, 0,
- /* 201 */ 0, 0, 0,
- /* 202 */ 0, 0, 0,
- /* 203 */ 0, 0, 0,
- /* 204 */ 0, 0, 0,
- /* 205 */ 0, 0, 0,
- /* 206 */ 0, 0, 0,
- /* 207 */ 0, 0, 0,
- /* 208 */ 0, 0, 0,
- /* 209 */ 0, 0, 0,
- /* 210 */ 0, 0, 0,
- /* 211 */ 0, 0, 0,
- /* 212 */ 0, 0, 0,
- /* 213 */ 0, 0, 0,
- /* 214 */ 0, 0, 0,
- /* 215 */ 0, 0, 0,
- /* 216 */ 0, 0, 0,
- /* 217 */ 0, 0, 0,
- /* 218 */ 0, 0, 0,
- /* 219 */ 0, 0, 0,
- /* 220 */ 0, 0, 0,
- /* 221 */ 0, 0, 0,
- /* 222 */ 0, 0, 0,
- /* 223 */ 0, 0, 0,
- /* 224 */ 0, 0, 0,
- /* 225 */ 0, 0, 0,
- /* 226 */ 0, 0, 0,
- /* 227 */ 0, 0, 0,
- /* 228 */ 0, 0, 0,
- /* 229 */ 0, 0, 0,
- /* 230 */ 0, 0, 0,
- /* 231 */ 0, 0, 0,
- /* 232 */ 0, 0, 0,
- /* 233 */ 0, 0, 0,
- /* 234 */ 0, 0, 0,
- /* 235 */ 0, 0, 0,
- /* 236 */ 0, 0, 0,
- /* 237 */ 0, 0, 0,
- /* 238 */ 0, 0, 0,
- /* 239 */ 0, 0, 0,
- /* 240 */ 0, 0, 0,
- /* 241 */ 0, 0, 0,
- /* 242 */ 0, 0, 0,
- /* 243 */ 0, 0, 0,
- /* 244 */ 0, 0, 0,
- /* 245 */ 0, 0, 0,
- /* 246 */ 0, 0, 0,
- /* 247 */ 0, 0, 0,
- /* 248 */ 0, 0, 0,
- /* 249 */ 0, 0, 0,
- /* 250 */ 0, 0, 0,
- /* 251 */ 0, 0, 0,
- /* 252 */ 0, 0, 0,
- /* 253 */ 0, 0, 0,
- /* 254 */ 0, 0, 0,
- /* 255 */ 0, 0, 0
-};
-
-#endif /* WINKEYBD_H */
diff --git a/nx-X11/programs/Xserver/hw/xwin/winkeyhook.c b/nx-X11/programs/Xserver/hw/xwin/winkeyhook.c
deleted file mode 100755
index 53d91e6ee..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winkeyhook.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- *Copyright (C) 2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * References to external symbols
- */
-
-extern HHOOK g_hhookKeyboardLL;
-extern DWORD g_dwCurrentThreadID;
-extern HWND g_hwndKeyboardFocus;
-
-
-/*
- * Function prototypes
- */
-
-static LRESULT CALLBACK
-winKeyboardMessageHookLL (int iCode, WPARAM wParam, LPARAM lParam);
-
-
-#ifndef LLKHF_EXTENDED
-# define LLKHF_EXTENDED 0x00000001
-#endif
-#ifndef LLKHF_UP
-# define LLKHF_UP 0x00000080
-#endif
-
-
-/*
- * KeyboardMessageHook
- */
-
-static LRESULT CALLBACK
-winKeyboardMessageHookLL (int iCode, WPARAM wParam, LPARAM lParam)
-{
- BOOL fPassKeystroke = FALSE;
- BOOL fPassAltTab = TRUE;
- PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;
- HWND hwnd = GetActiveWindow();
-#ifdef XWIN_MULTIWINDOW
- WindowPtr pWin = NULL;
- winPrivWinPtr pWinPriv = NULL;
- winPrivScreenPtr pScreenPriv = NULL;
- winScreenInfo *pScreenInfo = NULL;
-
- /* Check if the Windows window property for our X window pointer is valid */
- if ((pWin = GetProp (hwnd, WIN_WINDOW_PROP)) != NULL)
- {
- /* Get a pointer to our window privates */
- pWinPriv = winGetWindowPriv(pWin);
-
- /* Get pointers to our screen privates and screen info */
- pScreenPriv = pWinPriv->pScreenPriv;
- pScreenInfo = pScreenPriv->pScreenInfo;
-
- if (pScreenInfo->fMultiWindow)
- fPassAltTab = FALSE;
- }
-#endif
-
- /* Pass keystrokes on to our main message loop */
- if (iCode == HC_ACTION)
- {
-#if 0
- ErrorF ("vkCode: %08x\tscanCode: %08x\n", p->vkCode, p->scanCode);
-#endif
-
- switch (wParam)
- {
- case WM_KEYDOWN: case WM_SYSKEYDOWN:
- case WM_KEYUP: case WM_SYSKEYUP:
- fPassKeystroke =
- (fPassAltTab &&
- (p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0))
- || (p->vkCode == VK_LWIN) || (p->vkCode == VK_RWIN)
- ;
- break;
- }
- }
-
- /*
- * Pass message on to our main message loop.
- * We process this immediately with SendMessage so that the keystroke
- * appears in, hopefully, the correct order.
- */
- if (fPassKeystroke)
- {
- LPARAM lParamKey = 0x0;
-
- /* Construct the lParam from KBDLLHOOKSTRUCT */
- lParamKey = lParamKey | (0x0000FFFF & 0x00000001); /* Repeat count */
- lParamKey = lParamKey | (0x00FF0000 & (p->scanCode << 16));
- lParamKey = lParamKey
- | (0x01000000 & ((p->flags & LLKHF_EXTENDED) << 23));
- lParamKey = lParamKey
- | (0x20000000
- & ((p->flags & LLKHF_ALTDOWN) << 24));
- lParamKey = lParamKey | (0x80000000 & ((p->flags & LLKHF_UP) << 24));
-
- /* Send message to our main window that has the keyboard focus */
- PostMessage (hwnd,
- (UINT) wParam,
- (WPARAM) p->vkCode,
- lParamKey);
-
- return 1;
- }
-
- /* Call next hook */
- return CallNextHookEx (NULL, iCode, wParam, lParam);
-}
-
-
-/*
- * Attempt to install the keyboard hook, return FALSE if it was not installed
- */
-
-Bool
-winInstallKeyboardHookLL ()
-{
- OSVERSIONINFO osvi = {0};
-
- /* Get operating system version information */
- osvi.dwOSVersionInfoSize = sizeof (osvi);
- GetVersionEx (&osvi);
-
- /* Branch on platform ID */
- switch (osvi.dwPlatformId)
- {
- case VER_PLATFORM_WIN32_NT:
- /* Low-level is supported on NT 4.0 SP3+ only */
- /* TODO: Return FALSE on NT 4.0 with no SP, SP1, or SP2 */
- break;
-
- case VER_PLATFORM_WIN32_WINDOWS:
- /* Low-level hook is not supported on non-NT */
- return FALSE;
- }
-
- /* Install the hook only once */
- if (!g_hhookKeyboardLL)
- g_hhookKeyboardLL = SetWindowsHookEx (WH_KEYBOARD_LL,
- winKeyboardMessageHookLL,
- g_hInstance,
- 0);
-
- return TRUE;
-}
-
-
-/*
- * Remove the keyboard hook if it is installed
- */
-
-void
-winRemoveKeyboardHookLL ()
-{
- if (g_hhookKeyboardLL)
- UnhookWindowsHookEx (g_hhookKeyboardLL);
- g_hhookKeyboardLL = NULL;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winkeymap.h b/nx-X11/programs/Xserver/hw/xwin/winkeymap.h
deleted file mode 100755
index 31e6cf21b..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winkeymap.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Keymap.h,v 3.19 2002/05/31 18:45:58 dawes Exp $ */
-/*
- *
- * For Scancodes see notes in winkeynames.h !!!!
- *
- */
-/* $XConsortium: xf86Keymap.h /main/14 1996/02/21 17:38:47 kaleb $ */
-
-static KeySym map[NUM_KEYCODES * GLYPHS_PER_KEY] = {
- /* 0x00 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x01 */ XK_Escape, NoSymbol, NoSymbol, NoSymbol,
- /* 0x02 */ XK_1, XK_exclam, NoSymbol, NoSymbol,
- /* 0x03 */ XK_2, XK_at, NoSymbol, NoSymbol,
- /* 0x04 */ XK_3, XK_numbersign, NoSymbol, NoSymbol,
- /* 0x05 */ XK_4, XK_dollar, NoSymbol, NoSymbol,
- /* 0x06 */ XK_5, XK_percent, NoSymbol, NoSymbol,
- /* 0x07 */ XK_6, XK_asciicircum, NoSymbol, NoSymbol,
- /* 0x08 */ XK_7, XK_ampersand, NoSymbol, NoSymbol,
- /* 0x09 */ XK_8, XK_asterisk, NoSymbol, NoSymbol,
- /* 0x0a */ XK_9, XK_parenleft, NoSymbol, NoSymbol,
- /* 0x0b */ XK_0, XK_parenright, NoSymbol, NoSymbol,
- /* 0x0c */ XK_minus, XK_underscore, NoSymbol, NoSymbol,
- /* 0x0d */ XK_equal, XK_plus, NoSymbol, NoSymbol,
- /* 0x0e */ XK_BackSpace, NoSymbol, NoSymbol, NoSymbol,
- /* 0x0f */ XK_Tab, XK_ISO_Left_Tab,NoSymbol, NoSymbol,
- /* 0x10 */ XK_Q, NoSymbol, NoSymbol, NoSymbol,
- /* 0x11 */ XK_W, NoSymbol, NoSymbol, NoSymbol,
- /* 0x12 */ XK_E, NoSymbol, NoSymbol, NoSymbol,
- /* 0x13 */ XK_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x14 */ XK_T, NoSymbol, NoSymbol, NoSymbol,
- /* 0x15 */ XK_Y, NoSymbol, NoSymbol, NoSymbol,
- /* 0x16 */ XK_U, NoSymbol, NoSymbol, NoSymbol,
- /* 0x17 */ XK_I, NoSymbol, NoSymbol, NoSymbol,
- /* 0x18 */ XK_O, NoSymbol, NoSymbol, NoSymbol,
- /* 0x19 */ XK_P, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1a */ XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol,
- /* 0x1b */ XK_bracketright,XK_braceright, NoSymbol, NoSymbol,
- /* 0x1c */ XK_Return, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1d */ XK_Control_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1e */ XK_A, NoSymbol, NoSymbol, NoSymbol,
- /* 0x1f */ XK_S, NoSymbol, NoSymbol, NoSymbol,
- /* 0x20 */ XK_D, NoSymbol, NoSymbol, NoSymbol,
- /* 0x21 */ XK_F, NoSymbol, NoSymbol, NoSymbol,
- /* 0x22 */ XK_G, NoSymbol, NoSymbol, NoSymbol,
- /* 0x23 */ XK_H, NoSymbol, NoSymbol, NoSymbol,
- /* 0x24 */ XK_J, NoSymbol, NoSymbol, NoSymbol,
- /* 0x25 */ XK_K, NoSymbol, NoSymbol, NoSymbol,
- /* 0x26 */ XK_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x27 */ XK_semicolon, XK_colon, NoSymbol, NoSymbol,
- /* 0x28 */ XK_quoteright, XK_quotedbl, NoSymbol, NoSymbol,
- /* 0x29 */ XK_quoteleft, XK_asciitilde, NoSymbol, NoSymbol,
- /* 0x2a */ XK_Shift_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2b */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
- /* 0x2c */ XK_Z, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2d */ XK_X, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2e */ XK_C, NoSymbol, NoSymbol, NoSymbol,
- /* 0x2f */ XK_V, NoSymbol, NoSymbol, NoSymbol,
- /* 0x30 */ XK_B, NoSymbol, NoSymbol, NoSymbol,
- /* 0x31 */ XK_N, NoSymbol, NoSymbol, NoSymbol,
- /* 0x32 */ XK_M, NoSymbol, NoSymbol, NoSymbol,
- /* 0x33 */ XK_comma, XK_less, NoSymbol, NoSymbol,
- /* 0x34 */ XK_period, XK_greater, NoSymbol, NoSymbol,
- /* 0x35 */ XK_slash, XK_question, NoSymbol, NoSymbol,
- /* 0x36 */ XK_Shift_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x37 */ XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol,
- /* 0x38 */ XK_Alt_L, XK_Meta_L, NoSymbol, NoSymbol,
- /* 0x39 */ XK_space, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3a */ XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3b */ XK_F1, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3c */ XK_F2, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3d */ XK_F3, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3e */ XK_F4, NoSymbol, NoSymbol, NoSymbol,
- /* 0x3f */ XK_F5, NoSymbol, NoSymbol, NoSymbol,
- /* 0x40 */ XK_F6, NoSymbol, NoSymbol, NoSymbol,
- /* 0x41 */ XK_F7, NoSymbol, NoSymbol, NoSymbol,
- /* 0x42 */ XK_F8, NoSymbol, NoSymbol, NoSymbol,
- /* 0x43 */ XK_F9, NoSymbol, NoSymbol, NoSymbol,
- /* 0x44 */ XK_F10, NoSymbol, NoSymbol, NoSymbol,
- /* 0x45 */ XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x46 */ XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol,
- /* 0x47 */ XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol,
- /* 0x48 */ XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol,
- /* 0x49 */ XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol,
- /* 0x4a */ XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4b */ XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol,
- /* 0x4c */ XK_KP_Begin, XK_KP_5, NoSymbol, NoSymbol,
- /* 0x4d */ XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol,
- /* 0x4e */ XK_KP_Add, NoSymbol, NoSymbol, NoSymbol,
- /* 0x4f */ XK_KP_End, XK_KP_1, NoSymbol, NoSymbol,
- /* 0x50 */ XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol,
- /* 0x51 */ XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol,
- /* 0x52 */ XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol,
- /* 0x53 */ XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol,
- /* 0x54 */ XK_Sys_Req, NoSymbol, NoSymbol, NoSymbol,
- /* 0x55 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x56 */ XK_less, XK_greater, NoSymbol, NoSymbol,
- /* 0x57 */ XK_F11, NoSymbol, NoSymbol, NoSymbol,
- /* 0x58 */ XK_F12, NoSymbol, NoSymbol, NoSymbol,
- /* 0x59 */ XK_Home, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5a */ XK_Up, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5b */ XK_Prior, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5c */ XK_Left, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5d */ XK_Begin, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5e */ XK_Right, NoSymbol, NoSymbol, NoSymbol,
- /* 0x5f */ XK_End, NoSymbol, NoSymbol, NoSymbol,
- /* 0x60 */ XK_Down, NoSymbol, NoSymbol, NoSymbol,
- /* 0x61 */ XK_Next, NoSymbol, NoSymbol, NoSymbol,
- /* 0x62 */ XK_Insert, NoSymbol, NoSymbol, NoSymbol,
- /* 0x63 */ XK_Delete, NoSymbol, NoSymbol, NoSymbol,
- /* 0x64 */ XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol,
- /* 0x65 */ XK_Control_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x66 */ XK_Pause, NoSymbol, NoSymbol, NoSymbol,
- /* 0x67 */ XK_Print, NoSymbol, NoSymbol, NoSymbol,
- /* 0x68 */ XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol,
- /* 0x69 */ XK_Alt_R, XK_Meta_R, NoSymbol, NoSymbol,
- /* 0x6a */ XK_Break, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6b */ XK_Meta_L, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6c */ XK_Meta_R, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6d */ XK_Menu, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6e */ XK_F13, NoSymbol, NoSymbol, NoSymbol,
- /* 0x6f */ XK_F14, NoSymbol, NoSymbol, NoSymbol,
- /* 0x70 */ XK_F15, NoSymbol, NoSymbol, NoSymbol,
- /* 0x71 */ XK_F16, NoSymbol, NoSymbol, NoSymbol,
- /* 0x72 */ XK_F17, NoSymbol, NoSymbol, NoSymbol,
- /* 0x73 */ XK_backslash, XK_underscore, NoSymbol, NoSymbol,
- /* 0x74 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x75 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x76 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x77 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x78 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x79 */ XK_Henkan, XK_Mode_switch, NoSymbol, NoSymbol,
- /* 0x7a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7b */ XK_Muhenkan, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7c */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7d */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
- /* 0x7e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
- /* 0x7f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
-};
diff --git a/nx-X11/programs/Xserver/hw/xwin/winkeynames.h b/nx-X11/programs/Xserver/hw/xwin/winkeynames.h
deleted file mode 100755
index f3af1907e..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winkeynames.h
+++ /dev/null
@@ -1,204 +0,0 @@
-#ifndef _WINKEYNAMES_H
-#define _WINKEYNAMES_H
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/atKeynames.h,v 3.18 2001/09/29 20:40:30 herrb Exp $ */
-/*
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- *
- * 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, and that the name of Thomas Roell not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Roell makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XConsortium: atKeynames.h /main/11 1996/03/09 11:17:41 kaleb $ */
-
-#define XK_TECHNICAL
-#define XK_KATAKANA
-#include <X11/keysym.h>
-
-#define GLYPHS_PER_KEY 4
-#define NUM_KEYCODES 248
-#define MIN_KEYCODE 8
-#define MAX_KEYCODE (NUM_KEYCODES + MIN_KEYCODE - 1)
-
-#define AltMask Mod1Mask
-#define NumLockMask Mod2Mask
-#define AltLangMask Mod3Mask
-#define KanaMask Mod4Mask
-#define ScrollLockMask Mod5Mask
-
-#define KeyPressed(k) (keyc->down[k >> 3] & (1 << (k & 7)))
-#define ModifierDown(k) ((keyc->state & (k)) == (k))
-
-/*
- * NOTE: The AT/MF keyboards can generate (via the 8042) two (MF: three)
- * sets of scancodes. Set3 can only be generated by a MF keyboard.
- * Set2 sends a makecode for keypress, and the same code prefixed by a
- * F0 for keyrelease. This is a little bit ugly to handle. Thus we use
- * here for X386 the PC/XT compatible Set1. This set uses 8bit scancodes.
- * Bit 7 ist set if the key is released. The code E0 switches to a
- * different meaning to add the new MF cursorkeys, while not breaking old
- * applications. E1 is another special prefix. Since I assume that there
- * will be further versions of PC/XT scancode compatible keyboards, we
- * may be in trouble one day.
- *
- * IDEA: 1) Use Set2 on AT84 keyboards and translate it to MF Set3.
- * 2) Use the keyboards native set and translate it to common keysyms.
- */
-
-/*
- * definition of the AT84/MF101/MF102 Keyboard:
- * ============================================================
- * Defined Key Cap Glyphs Pressed value
- * Key Name Main Also (hex) (dec)
- * ---------------- ---------- ------- ------ ------
- */
-
-#define KEY_Escape /* Escape 0x01 */ 1
-#define KEY_1 /* 1 ! 0x02 */ 2
-#define KEY_2 /* 2 @ 0x03 */ 3
-#define KEY_3 /* 3 # 0x04 */ 4
-#define KEY_4 /* 4 $ 0x05 */ 5
-#define KEY_5 /* 5 % 0x06 */ 6
-#define KEY_6 /* 6 ^ 0x07 */ 7
-#define KEY_7 /* 7 & 0x08 */ 8
-#define KEY_8 /* 8 * 0x09 */ 9
-#define KEY_9 /* 9 ( 0x0a */ 10
-#define KEY_0 /* 0 ) 0x0b */ 11
-#define KEY_Minus /* - (Minus) _ (Under) 0x0c */ 12
-#define KEY_Equal /* = (Equal) + 0x0d */ 13
-#define KEY_BackSpace /* Back Space 0x0e */ 14
-#define KEY_Tab /* Tab 0x0f */ 15
-#define KEY_Q /* Q 0x10 */ 16
-#define KEY_W /* W 0x11 */ 17
-#define KEY_E /* E 0x12 */ 18
-#define KEY_R /* R 0x13 */ 19
-#define KEY_T /* T 0x14 */ 20
-#define KEY_Y /* Y 0x15 */ 21
-#define KEY_U /* U 0x16 */ 22
-#define KEY_I /* I 0x17 */ 23
-#define KEY_O /* O 0x18 */ 24
-#define KEY_P /* P 0x19 */ 25
-#define KEY_LBrace /* [ { 0x1a */ 26
-#define KEY_RBrace /* ] } 0x1b */ 27
-#define KEY_Enter /* Enter 0x1c */ 28
-#define KEY_LCtrl /* Ctrl(left) 0x1d */ 29
-#define KEY_A /* A 0x1e */ 30
-#define KEY_S /* S 0x1f */ 31
-#define KEY_D /* D 0x20 */ 32
-#define KEY_F /* F 0x21 */ 33
-#define KEY_G /* G 0x22 */ 34
-#define KEY_H /* H 0x23 */ 35
-#define KEY_J /* J 0x24 */ 36
-#define KEY_K /* K 0x25 */ 37
-#define KEY_L /* L 0x26 */ 38
-#define KEY_SemiColon /* ;(SemiColon) :(Colon) 0x27 */ 39
-#define KEY_Quote /* ' (Apostr) " (Quote) 0x28 */ 40
-#define KEY_Tilde /* ` (Accent) ~ (Tilde) 0x29 */ 41
-#define KEY_ShiftL /* Shift(left) 0x2a */ 42
-#define KEY_BSlash /* \(BckSlash) |(VertBar)0x2b */ 43
-#define KEY_Z /* Z 0x2c */ 44
-#define KEY_X /* X 0x2d */ 45
-#define KEY_C /* C 0x2e */ 46
-#define KEY_V /* V 0x2f */ 47
-#define KEY_B /* B 0x30 */ 48
-#define KEY_N /* N 0x31 */ 49
-#define KEY_M /* M 0x32 */ 50
-#define KEY_Comma /* , (Comma) < (Less) 0x33 */ 51
-#define KEY_Period /* . (Period) >(Greater)0x34 */ 52
-#define KEY_Slash /* / (Slash) ? 0x35 */ 53
-#define KEY_ShiftR /* Shift(right) 0x36 */ 54
-#define KEY_KP_Multiply /* * 0x37 */ 55
-#define KEY_Alt /* Alt(left) 0x38 */ 56
-#define KEY_Space /* (SpaceBar) 0x39 */ 57
-#define KEY_CapsLock /* CapsLock 0x3a */ 58
-#define KEY_F1 /* F1 0x3b */ 59
-#define KEY_F2 /* F2 0x3c */ 60
-#define KEY_F3 /* F3 0x3d */ 61
-#define KEY_F4 /* F4 0x3e */ 62
-#define KEY_F5 /* F5 0x3f */ 63
-#define KEY_F6 /* F6 0x40 */ 64
-#define KEY_F7 /* F7 0x41 */ 65
-#define KEY_F8 /* F8 0x42 */ 66
-#define KEY_F9 /* F9 0x43 */ 67
-#define KEY_F10 /* F10 0x44 */ 68
-#define KEY_NumLock /* NumLock 0x45 */ 69
-#define KEY_ScrollLock /* ScrollLock 0x46 */ 70
-#define KEY_KP_7 /* 7 Home 0x47 */ 71
-#define KEY_KP_8 /* 8 Up 0x48 */ 72
-#define KEY_KP_9 /* 9 PgUp 0x49 */ 73
-#define KEY_KP_Minus /* - (Minus) 0x4a */ 74
-#define KEY_KP_4 /* 4 Left 0x4b */ 75
-#define KEY_KP_5 /* 5 0x4c */ 76
-#define KEY_KP_6 /* 6 Right 0x4d */ 77
-#define KEY_KP_Plus /* + (Plus) 0x4e */ 78
-#define KEY_KP_1 /* 1 End 0x4f */ 79
-#define KEY_KP_2 /* 2 Down 0x50 */ 80
-#define KEY_KP_3 /* 3 PgDown 0x51 */ 81
-#define KEY_KP_0 /* 0 Insert 0x52 */ 82
-#define KEY_KP_Decimal /* . (Decimal) Delete 0x53 */ 83
-#define KEY_SysReqest /* SysReqest 0x54 */ 84
- /* NOTUSED 0x55 */
-#define KEY_Less /* < (Less) >(Greater) 0x56 */ 86
-#define KEY_F11 /* F11 0x57 */ 87
-#define KEY_F12 /* F12 0x58 */ 88
-
-#define KEY_Prefix0 /* special 0x60 */ 96
-#define KEY_Prefix1 /* specail 0x61 */ 97
-
-/*
- * The 'scancodes' below are generated by the server, because the MF101/102
- * keyboard sends them as sequence of other scancodes
- */
-#define KEY_Home /* Home 0x59 */ 89
-#define KEY_Up /* Up 0x5a */ 90
-#define KEY_PgUp /* PgUp 0x5b */ 91
-#define KEY_Left /* Left 0x5c */ 92
-#define KEY_Begin /* Begin 0x5d */ 93
-#define KEY_Right /* Right 0x5e */ 94
-#define KEY_End /* End 0x5f */ 95
-#define KEY_Down /* Down 0x60 */ 96
-#define KEY_PgDown /* PgDown 0x61 */ 97
-#define KEY_Insert /* Insert 0x62 */ 98
-#define KEY_Delete /* Delete 0x63 */ 99
-#define KEY_KP_Enter /* Enter 0x64 */ 100
-#define KEY_RCtrl /* Ctrl(right) 0x65 */ 101
-#define KEY_Pause /* Pause 0x66 */ 102
-#define KEY_Print /* Print 0x67 */ 103
-#define KEY_KP_Divide /* Divide 0x68 */ 104
-#define KEY_AltLang /* AtlLang(right) 0x69 */ 105
-#define KEY_Break /* Break 0x6a */ 106
-#define KEY_LMeta /* Left Meta 0x6b */ 107
-#define KEY_RMeta /* Right Meta 0x6c */ 108
-#define KEY_Menu /* Menu 0x6d */ 109
-#define KEY_F13 /* F13 0x6e */ 110
-#define KEY_F14 /* F14 0x6f */ 111
-#define KEY_F15 /* F15 0x70 */ 112
-#define KEY_F16 /* F16 0x71 */ 113
-#define KEY_F17 /* F17 0x72 */ 114
-#define KEY_KP_DEC /* KP_DEC 0x73 */ 115
-#define KEY_KP_Equal /* Equal (Keypad) 0x76 */ 118
-#define KEY_XFER /* Kanji Transfer 0x79 */ 121
-#define KEY_NFER /* No Kanji Transfer 0x7b */ 123
-#define KEY_Yen /* Yen 0x7d */ 125
-#define KEY_HKTG /* Hirugana/Katakana tog 0xc8 */ 200
-#define KEY_BSlash2 /* \ _ 0xcb */ 203
-
-/* These are for "notused" and "unknown" entries in translation maps. */
-#define KEY_NOTUSED 0
-#define KEY_UNKNOWN 255
-
-#endif /* _WINKEYNAMES_H */
diff --git a/nx-X11/programs/Xserver/hw/xwin/winlayouts.h b/nx-X11/programs/Xserver/hw/xwin/winlayouts.h
deleted file mode 100644
index cc0752430..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winlayouts.h
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* Definitions for various keyboard layouts from windows and their
- * XKB settings.
- */
-
-typedef struct
-{
- unsigned int winlayout;
- int winkbtype;
- char *xkbmodel;
- char *xkblayout;
- char *xkbvariant;
- char *xkboptions;
- char *layoutname;
-} WinKBLayoutRec, *WinKBLayoutPtr;
-
-WinKBLayoutRec winKBLayouts[] =
-{
- { 0x405, -1, "pc105", "cz", NULL, NULL, "Czech"},
- {0x10405, -1, "pc105", "cz_qwerty", NULL, NULL, "Czech (QWERTY)"},
- { 0x406, -1, "pc105", "dk", NULL, NULL, "Danish"},
- { 0x407, -1, "pc105", "de", NULL, NULL, "German (Germany)"},
- {0x10407, -1, "pc105", "de", NULL, NULL, "German (Germany, IBM)"},
- { 0x807, -1, "pc105", "de_CH", NULL, NULL, "German (Switzerland)"},
- { 0x409, -1, "pc105", "us", NULL, NULL, "English (USA)"},
- {0x10409, -1, "pc105", "dvorak", NULL, NULL, "English (USA, Dvorak)"},
- {0x20409, -1, "pc105", "us_intl", NULL, NULL, "English (USA, International)"},
- { 0x809, -1, "pc105", "gb", NULL, NULL, "English (United Kingdom)"},
- { 0x1809, -1, "pc105", "ie", NULL, NULL, "Irish"},
- { 0x40a, -1, "pc105", "es", NULL, NULL, "Spanish (Spain, Traditional Sort)"},
- { 0x40b, -1, "pc105", "fi", NULL, NULL, "Finnish"},
- { 0x40c, -1, "pc105", "fr", NULL, NULL, "French (Standard)"},
- { 0x80c, -1, "pc105", "be", NULL, NULL, "French (Belgian)"},
- { 0xc0c, -1, "pc105", "ca_enhanced", NULL, NULL, "French (Canada)"},
- { 0x100c, -1, "pc105", "fr_CH", NULL, NULL, "French (Switzerland)"},
- { 0x40e, -1, "pc105", "hu", NULL, NULL, "Hungarian"},
- { 0x410, -1, "pc105", "it", NULL, NULL, "Italian"},
- { 0x411, 7, "jp106", "jp", NULL, NULL, "Japanese"},
- { 0x813, -1, "pc105", "be", NULL, NULL, "Dutch (Belgian)"},
- { 0x414, -1, "pc105", "no", NULL, NULL, "Norwegian"},
- { 0x416, -1, "pc105", "br", NULL, NULL, "Portuguese (Brazil, ABNT)"},
- {0x10416, -1, "abnt2", "br", NULL, NULL, "Portuguese (Brazil, ABNT2)"},
- { 0x816, -1, "pc105", "pt", NULL, NULL, "Portuguese (Portugal)"},
- { 0x41d, -1, "pc105", "se", NULL, NULL, "Swedish (Sweden)"},
- { -1, -1, NULL, NULL, NULL, NULL, NULL}
-};
-
-/* Listing of language codes from MSDN */
-/*
-Support ID XKB Language
-====================================================================
- ? 0x0000 Language Neutral
- ? 0x0400 Process or User Default Language
- ? 0x0800 System Default Language
- 0x0401 Arabic (Saudi Arabia)
- 0x0801 Arabic (Iraq)
- 0x0c01 Arabic (Egypt)
- 0x1001 Arabic (Libya)
- 0x1401 Arabic (Algeria)
- 0x1801 Arabic (Morocco)
- 0x1c01 Arabic (Tunisia)
- 0x2001 Arabic (Oman)
- 0x2401 Arabic (Yemen)
- 0x2801 Arabic (Syria)
- 0x2c01 Arabic (Jordan)
- 0x3001 Arabic (Lebanon)
- 0x3401 Arabic (Kuwait)
- 0x3801 Arabic (U.A.E.)
- 0x3c01 Arabic (Bahrain)
- 0x4001 Arabic (Qatar)
- Arabic (102) AZERTY
- 0x0402 Bulgarian
- 0x0403 Catalan
- 0x0404 Chinese (Taiwan)
- 0x0804 Chinese (PRC)
- 0x0c04 Chinese (Hong Kong SAR, PRC)
- 0x1004 Chinese (Singapore)
- 0x1404 Chinese (Macao SAR) (98/ME,2K/XP)
- X 0x0405 cz Czech
- X cz_qwerty Czech (QWERTY)
- Czech (Programmers)
- X 0x0406 dk Danish
- X 0x0407 de German (Standard)
- X 0x0807 de_CH German (Switzerland)
- 0x0c07 German (Austria)
- 0x1007 German (Luxembourg)
- 0x1407 German (Liechtenstein)
- 0x0408 Greek
- X 0x0409 us English (United States)
- X 0x0809 gb English (United Kingdom)
- 0x0c09 English (Australian)
- 0x1009 English (Canadian)
- 0x1409 English (New Zealand)
- X 0x1809 ie English (Ireland)
- 0x1c09 English (South Africa)
- 0x2009 English (Jamaica)
- 0x2409 English (Caribbean)
- 0x2809 English (Belize)
- 0x2c09 English (Trinidad)
- 0x3009 English (Zimbabwe) (98/ME,2K/XP)
- 0x3409 English (Philippines) (98/ME,2K/XP)
- X 0x040a es Spanish (Spain, Traditional Sort)
- 0x080a Spanish (Mexican)
- 0x0c0a Spanish (Spain, Modern Sort)
- 0x100a Spanish (Guatemala)
- 0x140a Spanish (Costa Rica)
- 0x180a Spanish (Panama)
- 0x1c0a Spanish (Dominican Republic)
- 0x200a Spanish (Venezuela)
- 0x240a Spanish (Colombia)
- 0x280a Spanish (Peru)
- 0x2c0a Spanish (Argentina)
- 0x300a Spanish (Ecuador)
- 0x340a Spanish (Chile)
- 0x380a Spanish (Uruguay)
- 0x3c0a Spanish (Paraguay)
- 0x400a Spanish (Bolivia)
- 0x440a Spanish (El Salvador)
- 0x480a Spanish (Honduras)
- 0x4c0a Spanish (Nicaragua)
- 0x500a Spanish (Puerto Rico)
- X 0x040b fi Finnish
- Finnish (with Sami)
- X 0x040c fr French (Standard)
- X 0x080c be French (Belgian)
- . 0x0c0c French (Canadian)
- French (Canadian, Legacy)
- Canadian (Multilingual)
- X 0x100c fr_CH French (Switzerland)
- 0x140c French (Luxembourg)
- 0x180c French (Monaco) (98/ME,2K/XP)
- 0x040d Hebrew
- X 0x040e hu Hungarian
- . 0x040f Icelandic
- X 0x0410 it Italian (Standard)
- 0x0810 Italian (Switzerland)
- X 0x0411 jp Japanese
- 0x0412 Korean
- 0x0812 Korean (Johab) (95,NT)
- . 0x0413 Dutch (Netherlands)
- X 0x0813 be Dutch (Belgium)
- X 0x0414 no Norwegian (Bokmal)
- 0x0814 Norwegian (Nynorsk)
- . 0x0415 Polish
- X 0x0416 br Portuguese (Brazil)
- X 0x0816 pt Portuguese (Portugal)
- . 0x0418 Romanian
- 0x0419 Russian
- . 0x041a Croatian
- . 0x081a Serbian (Latin)
- . 0x0c1a Serbian (Cyrillic)
- 0x101a Croatian (Bosnia and Herzegovina)
- 0x141a Bosnian (Bosnia and Herzegovina)
- 0x181a Serbian (Latin, Bosnia, and Herzegovina)
- 0x1c1a Serbian (Cyrillic, Bosnia, and Herzegovina)
- . 0x041b Slovak
- . 0x041c Albanian
- X 0x041d se Swedish
- 0x081d Swedish (Finland)
- 0x041e Thai
- 0x041f Turkish
- 0x0420 Urdu (Pakistan) (98/ME,2K/XP)
- 0x0820 Urdu (India)
- 0x0421 Indonesian
- 0x0422 Ukrainian
- 0x0423 Belarusian
- . 0x0424 Slovenian
- 0x0425 Estonian
- 0x0426 Latvian
- 0x0427 Lithuanian
- 0x0827 Lithuanian (Classic) (98)
- 0x0429 Farsi
- 0x042a Vietnamese (98/ME,NT,2K/XP)
- 0x042b Armenian. This is Unicode only. (2K/XP)
- Armenian Eastern
- Armenian Western
- 0x042c Azeri (Latin)
- 0x082c Azeri (Cyrillic)
- 0x042d Basque
- 0x042f Macedonian (FYROM)
- 0x0430 Sutu
- 0x0432 Setswana/Tswana (South Africa)
- 0x0434 isiXhosa/Xhosa (South Africa)
- 0x0435 isiZulu/Zulu (South Africa)
- 0x0436 Afrikaans
- 0x0437 Georgian. This is Unicode only. (2K/XP)
- . 0x0438 Faeroese
- 0x0439 Hindi. This is Unicode only. (2K/XP)
- 0x043a Maltese (Malta)
- 0x043b Sami, Northern (Norway)
- 0x083b Sami, Northern (Sweden)
- 0x0c3b Sami, Northern (Finland)
- 0x103b Sami, Lule (Norway)
- 0x143b Sami, Lule (Sweden)
- 0x183b Sami, Southern (Norway)
- 0x1c3b Sami, Southern (Sweden)
- 0x203b Sami, Skolt (Finland)
- 0x243b Sami, Inari (Finland)
- 0x043e Malay (Malaysian)
- 0x083e Malay (Brunei Darussalam)
- 0x0440 Kyrgyz. (XP)
- 0x0441 Swahili (Kenya)
- 0x0443 Uzbek (Latin)
- 0x0843 Uzbek (Cyrillic)
- 0x0444 Tatar (Tatarstan)
- 0x0445 Bengali (India)
- Bengali (Inscript)
- 0x0446 Punjabi. This is Unicode only. (XP)
- 0x0447 Gujarati. This is Unicode only. (XP)
- 0x0449 Tamil. This is Unicode only. (2K/XP)
- 0x044a Telugu. This is Unicode only. (XP)
- 0x044b Kannada. This is Unicode only. (XP)
- 0x044c Malayalam (India)
- 0x044e Marathi. This is Unicode only. (2K/XP)
- 0x044f Sanskrit. This is Unicode only. (2K/XP)
- 0x0450 Mongolian (XP)
- 0x0452 Welsh (United Kingdom)
- 0x0455 Burmese
- 0x0456 Galician (XP)
- 0x0457 Konkani. This is Unicode only. (2K/XP)
- 0x045a Syriac. This is Unicode only. (XP)
- 0x0465 Divehi. This is Unicode only. (XP)
- Divehi (Phonetic)
- Divehi (Typewriter)
- 0x046b Quechua (Bolivia)
- 0x086b Quechua (Ecuador)
- 0x0c6b Quechua (Peru)
- 0x046c Sesotho sa Leboa/Northern Sotho (South Africa)
- 0x007f LOCALE_INVARIANT. See MAKELCID.
- 0x0481 Maori (New Zealand)
-*/
-
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/winmessages.h b/nx-X11/programs/Xserver/hw/xwin/winmessages.h
deleted file mode 100755
index ae50dc474..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winmessages.h
+++ /dev/null
@@ -1,1030 +0,0 @@
-#ifndef __WINMESSAGES_H__
-#define __WINMESSAGES_H__
-static const unsigned MESSAGE_NAMES_LEN =1024;
-static const char *MESSAGE_NAMES[1024] = {
- "WM_NULL",
- "WM_CREATE",
- "WM_DESTROY",
- "WM_MOVE",
- "4",
- "WM_SIZE",
- "WM_ACTIVATE",
- "WM_SETFOCUS",
- "WM_KILLFOCUS",
- "9",
- "WM_ENABLE",
- "WM_SETREDRAW",
- "WM_SETTEXT",
- "WM_GETTEXT",
- "WM_GETTEXTLENGTH",
- "WM_PAINT",
- "WM_CLOSE",
- "WM_QUERYENDSESSION",
- "WM_QUIT",
- "WM_QUERYOPEN",
- "WM_ERASEBKGND",
- "WM_SYSCOLORCHANGE",
- "WM_ENDSESSION",
- "23",
- "WM_SHOWWINDOW",
- "25",
- "WM_WININICHANGE",
- "WM_DEVMODECHANGE",
- "WM_ACTIVATEAPP",
- "WM_FONTCHANGE",
- "WM_TIMECHANGE",
- "WM_CANCELMODE",
- NULL /* WM_SETCURSOR */,
- "WM_MOUSEACTIVATE",
- "WM_CHILDACTIVATE",
- "WM_QUEUESYNC",
- "WM_GETMINMAXINFO",
- "37",
- "WM_PAINTICON",
- "WM_ICONERASEBKGND",
- "WM_NEXTDLGCTL",
- "41",
- "WM_SPOOLERSTATUS",
- "WM_DRAWITEM",
- "WM_MEASUREITEM",
- "WM_DELETEITEM",
- "WM_VKEYTOITEM",
- "WM_CHARTOITEM",
- "WM_SETFONT",
- "WM_GETFONT",
- "WM_SETHOTKEY",
- "WM_GETHOTKEY",
- "52",
- "53",
- "54",
- "WM_QUERYDRAGICON",
- "56",
- "WM_COMPAREITEM",
- "58",
- "59",
- "60",
- "61",
- "62",
- "63",
- "64",
- "WM_COMPACTING",
- "66",
- "67",
- "WM_COMMNOTIFY",
- "69",
- "WM_WINDOWPOSCHANGING",
- "WM_WINDOWPOSCHANGED",
- "WM_POWER",
- "73",
- "WM_COPYDATA",
- "WM_CANCELJOURNAL",
- "76",
- "77",
- "WM_NOTIFY",
- "79",
- "WM_INPUTLANGCHANGEREQUEST",
- "WM_INPUTLANGCHANGE",
- "WM_TCARD",
- "WM_HELP",
- "WM_USERCHANGED",
- "WM_NOTIFYFORMAT",
- "86",
- "87",
- "88",
- "89",
- "90",
- "91",
- "92",
- "93",
- "94",
- "95",
- "96",
- "97",
- "98",
- "99",
- "100",
- "101",
- "102",
- "103",
- "104",
- "105",
- "106",
- "107",
- "108",
- "109",
- "110",
- "111",
- "112",
- "113",
- "114",
- "115",
- "116",
- "117",
- "118",
- "119",
- "120",
- "121",
- "122",
- "WM_CONTEXTMENU",
- "WM_STYLECHANGING",
- "WM_STYLECHANGED",
- "WM_DISPLAYCHANGE",
- "WM_GETICON",
- "WM_SETICON",
- "WM_NCCREATE",
- "WM_NCDESTROY",
- "WM_NCCALCSIZE",
- NULL /* WM_NCHITTEST */,
- "WM_NCPAINT",
- "WM_NCACTIVATE",
- "WM_GETDLGCODE",
- "WM_SYNCPAINT",
- "137",
- "138",
- "139",
- "140",
- "141",
- "142",
- "143",
- "144",
- "145",
- "146",
- "147",
- "148",
- "149",
- "150",
- "151",
- "152",
- "153",
- "154",
- "155",
- "156",
- "157",
- "158",
- "159",
- NULL /* WM_NCMOUSEMOVE */,
- "WM_NCLBUTTONDOWN",
- "WM_NCLBUTTONUP",
- "WM_NCLBUTTONDBLCLK",
- "WM_NCRBUTTONDOWN",
- "WM_NCRBUTTONUP",
- "WM_NCRBUTTONDBLCLK",
- "WM_NCMBUTTONDOWN",
- "WM_NCMBUTTONUP",
- "WM_NCMBUTTONDBLCLK",
- "170",
- "171",
- "172",
- "173",
- "174",
- "175",
- "176",
- "177",
- "178",
- "179",
- "180",
- "181",
- "182",
- "183",
- "184",
- "185",
- "186",
- "187",
- "188",
- "189",
- "190",
- "191",
- "192",
- "193",
- "194",
- "195",
- "196",
- "197",
- "198",
- "199",
- "200",
- "201",
- "202",
- "203",
- "204",
- "205",
- "206",
- "207",
- "208",
- "209",
- "210",
- "211",
- "212",
- "213",
- "214",
- "215",
- "216",
- "217",
- "218",
- "219",
- "220",
- "221",
- "222",
- "223",
- "224",
- "225",
- "226",
- "227",
- "228",
- "229",
- "230",
- "231",
- "232",
- "233",
- "234",
- "235",
- "236",
- "237",
- "238",
- "239",
- "240",
- "241",
- "242",
- "243",
- "244",
- "245",
- "246",
- "247",
- "248",
- "249",
- "250",
- "251",
- "252",
- "253",
- "254",
- "255",
- "WM_KEYDOWN",
- "WM_KEYUP",
- "WM_CHAR",
- "WM_DEADCHAR",
- "WM_SYSKEYDOWN",
- "WM_SYSKEYUP",
- "WM_SYSCHAR",
- "WM_SYSDEADCHAR",
- "WM_CONVERTREQUESTEX",
- "265",
- "266",
- "267",
- "268",
- "WM_IME_STARTCOMPOSITION",
- "WM_IME_ENDCOMPOSITION",
- "WM_IME_KEYLAST",
- "WM_INITDIALOG",
- "WM_COMMAND",
- "WM_SYSCOMMAND",
- NULL /* WM_TIMER */,
- "WM_HSCROLL",
- "WM_VSCROLL",
- "WM_INITMENU",
- "WM_INITMENUPOPUP",
- "280",
- "281",
- "282",
- "283",
- "284",
- "285",
- "286",
- "WM_MENUSELECT",
- "WM_MENUCHAR",
- "WM_ENTERIDLE",
- "290",
- "291",
- "292",
- "293",
- "294",
- "295",
- "296",
- "297",
- "298",
- "299",
- "300",
- "301",
- "302",
- "303",
- "304",
- "305",
- "WM_CTLCOLORMSGBOX",
- "WM_CTLCOLOREDIT",
- "WM_CTLCOLORLISTBOX",
- "WM_CTLCOLORBTN",
- "WM_CTLCOLORDLG",
- "WM_CTLCOLORSCROLLBAR",
- "WM_CTLCOLORSTATIC",
- "313",
- "314",
- "315",
- "316",
- "317",
- "318",
- "319",
- "320",
- "321",
- "322",
- "323",
- "324",
- "325",
- "326",
- "327",
- "328",
- "329",
- "330",
- "331",
- "332",
- "333",
- "334",
- "335",
- "336",
- "337",
- "338",
- "339",
- "340",
- "341",
- "342",
- "343",
- "344",
- "345",
- "346",
- "347",
- "348",
- "349",
- "350",
- "351",
- "352",
- "353",
- "354",
- "355",
- "356",
- "357",
- "358",
- "359",
- "360",
- "361",
- "362",
- "363",
- "364",
- "365",
- "366",
- "367",
- "368",
- "369",
- "370",
- "371",
- "372",
- "373",
- "374",
- "375",
- "376",
- "377",
- "378",
- "379",
- "380",
- "381",
- "382",
- "383",
- "384",
- "385",
- "386",
- "387",
- "388",
- "389",
- "390",
- "391",
- "392",
- "393",
- "394",
- "395",
- "396",
- "397",
- "398",
- "399",
- "400",
- "401",
- "402",
- "403",
- "404",
- "405",
- "406",
- "407",
- "408",
- "409",
- "410",
- "411",
- "412",
- "413",
- "414",
- "415",
- "416",
- "417",
- "418",
- "419",
- "420",
- "421",
- "422",
- "423",
- "424",
- "425",
- "426",
- "427",
- "428",
- "429",
- "430",
- "431",
- "432",
- "433",
- "434",
- "435",
- "436",
- "437",
- "438",
- "439",
- "440",
- "441",
- "442",
- "443",
- "444",
- "445",
- "446",
- "447",
- "448",
- "449",
- "450",
- "451",
- "452",
- "453",
- "454",
- "455",
- "456",
- "457",
- "458",
- "459",
- "460",
- "461",
- "462",
- "463",
- "464",
- "465",
- "466",
- "467",
- "468",
- "469",
- "470",
- "471",
- "472",
- "473",
- "474",
- "475",
- "476",
- "477",
- "478",
- "479",
- "480",
- "481",
- "482",
- "483",
- "484",
- "485",
- "486",
- "487",
- "488",
- "489",
- "490",
- "491",
- "492",
- "493",
- "494",
- "495",
- "496",
- "497",
- "498",
- "499",
- "500",
- "501",
- "502",
- "503",
- "504",
- "505",
- "506",
- "507",
- "508",
- "509",
- "510",
- "511",
- NULL /* WM_MOUSEMOVE */,
- "WM_LBUTTONDOWN",
- "WM_LBUTTONUP",
- "WM_LBUTTONDBLCLK",
- "WM_RBUTTONDOWN",
- "WM_RBUTTONUP",
- "WM_RBUTTONDBLCLK",
- "WM_MBUTTONDOWN",
- "WM_MBUTTONUP",
- "WM_MBUTTONDBLCLK",
- "WM_MOUSEWHEEL",
- "WM_XBUTTONDOWN",
- "WM_XBUTTONUP",
- "WM_XBUTTONDBLCLK",
- "526",
- "527",
- "WM_PARENTNOTIFY",
- "WM_ENTERMENULOOP",
- "WM_EXITMENULOOP",
- "WM_NEXTMENU",
- "WM_SIZING",
- "WM_CAPTURECHANGED",
- "WM_MOVING",
- "535",
- "WM_POWERBROADCAST",
- "WM_DEVICECHANGE",
- "538",
- "539",
- "540",
- "541",
- "542",
- "543",
- "WM_MDICREATE",
- "WM_MDIDESTROY",
- "WM_MDIACTIVATE",
- "WM_MDIRESTORE",
- "WM_MDINEXT",
- "WM_MDIMAXIMIZE",
- "WM_MDITILE",
- "WM_MDICASCADE",
- "WM_MDIICONARRANGE",
- "WM_MDIGETACTIVE",
- "554",
- "555",
- "556",
- "557",
- "558",
- "559",
- "WM_MDISETMENU",
- "WM_ENTERSIZEMOVE",
- "WM_EXITSIZEMOVE",
- "WM_DROPFILES",
- "WM_MDIREFRESHMENU",
- "565",
- "566",
- "567",
- "568",
- "569",
- "570",
- "571",
- "572",
- "573",
- "574",
- "575",
- "576",
- "577",
- "578",
- "579",
- "580",
- "581",
- "582",
- "583",
- "584",
- "585",
- "586",
- "587",
- "588",
- "589",
- "590",
- "591",
- "592",
- "593",
- "594",
- "595",
- "596",
- "597",
- "598",
- "599",
- "600",
- "601",
- "602",
- "603",
- "604",
- "605",
- "606",
- "607",
- "608",
- "609",
- "610",
- "611",
- "612",
- "613",
- "614",
- "615",
- "616",
- "617",
- "618",
- "619",
- "620",
- "621",
- "622",
- "623",
- "624",
- "625",
- "626",
- "627",
- "628",
- "629",
- "630",
- "631",
- "632",
- "633",
- "634",
- "635",
- "636",
- "637",
- "638",
- "639",
- "640",
- "WM_IME_SETCONTEXT",
- "WM_IME_NOTIFY",
- "WM_IME_CONTROL",
- "WM_IME_COMPOSITIONFULL",
- "WM_IME_SELECT",
- "WM_IME_CHAR",
- "647",
- "648",
- "649",
- "650",
- "651",
- "652",
- "653",
- "654",
- "655",
- "WM_IME_KEYDOWN",
- "WM_IME_KEYUP",
- "658",
- "659",
- "660",
- "661",
- "662",
- "663",
- "664",
- "665",
- "666",
- "667",
- "668",
- "669",
- "670",
- "671",
- "672",
- "WM_MOUSEHOVER",
- "674",
- "WM_MOUSELEAVE",
- "676",
- "677",
- "678",
- "679",
- "680",
- "681",
- "682",
- "683",
- "684",
- "685",
- "686",
- "687",
- "688",
- "689",
- "690",
- "691",
- "692",
- "693",
- "694",
- "695",
- "696",
- "697",
- "698",
- "699",
- "700",
- "701",
- "702",
- "703",
- "704",
- "705",
- "706",
- "707",
- "708",
- "709",
- "710",
- "711",
- "712",
- "713",
- "714",
- "715",
- "716",
- "717",
- "718",
- "719",
- "720",
- "721",
- "722",
- "723",
- "724",
- "725",
- "726",
- "727",
- "728",
- "729",
- "730",
- "731",
- "732",
- "733",
- "734",
- "735",
- "736",
- "737",
- "738",
- "739",
- "740",
- "741",
- "742",
- "743",
- "744",
- "745",
- "746",
- "747",
- "748",
- "749",
- "750",
- "751",
- "752",
- "753",
- "754",
- "755",
- "756",
- "757",
- "758",
- "759",
- "760",
- "761",
- "762",
- "763",
- "764",
- "765",
- "766",
- "767",
- "WM_CUT",
- "WM_COPY",
- "WM_PASTE",
- "WM_CLEAR",
- "WM_UNDO",
- "WM_RENDERFORMAT",
- "WM_RENDERALLFORMATS",
- "WM_DESTROYCLIPBOARD",
- "WM_DRAWCLIPBOARD",
- "WM_PAINTCLIPBOARD",
- "WM_VSCROLLCLIPBOARD",
- "WM_SIZECLIPBOARD",
- "WM_ASKCBFORMATNAME",
- "WM_CHANGECBCHAIN",
- "WM_HSCROLLCLIPBOARD",
- "WM_QUERYNEWPALETTE",
- "WM_PALETTEISCHANGING",
- "WM_PALETTECHANGED",
- "WM_HOTKEY",
- "787",
- "788",
- "789",
- "790",
- "WM_PRINT",
- "WM_PRINTCLIENT",
- "793",
- "794",
- "795",
- "796",
- "797",
- "798",
- "799",
- "800",
- "801",
- "802",
- "803",
- "804",
- "805",
- "806",
- "807",
- "808",
- "809",
- "810",
- "811",
- "812",
- "813",
- "814",
- "815",
- "816",
- "817",
- "818",
- "819",
- "820",
- "821",
- "822",
- "823",
- "824",
- "825",
- "826",
- "827",
- "828",
- "829",
- "830",
- "831",
- "832",
- "833",
- "834",
- "835",
- "836",
- "837",
- "838",
- "839",
- "840",
- "841",
- "842",
- "843",
- "844",
- "845",
- "846",
- "847",
- "848",
- "849",
- "850",
- "851",
- "852",
- "853",
- "854",
- "855",
- "856",
- "857",
- "858",
- "859",
- "860",
- "861",
- "862",
- "863",
- "864",
- "865",
- "866",
- "867",
- "868",
- "869",
- "870",
- "871",
- "872",
- "873",
- "874",
- "875",
- "876",
- "877",
- "878",
- "879",
- "880",
- "881",
- "882",
- "883",
- "884",
- "885",
- "886",
- "887",
- "888",
- "889",
- "890",
- "891",
- "892",
- "893",
- "894",
- "895",
- "896",
- "897",
- "898",
- "899",
- "900",
- "901",
- "902",
- "903",
- "904",
- "905",
- "906",
- "907",
- "908",
- "909",
- "910",
- "911",
- "912",
- "913",
- "914",
- "915",
- "916",
- "917",
- "918",
- "919",
- "920",
- "921",
- "922",
- "923",
- "924",
- "925",
- "926",
- "927",
- "928",
- "929",
- "930",
- "931",
- "932",
- "933",
- "934",
- "935",
- "936",
- "937",
- "938",
- "939",
- "940",
- "941",
- "942",
- "943",
- "944",
- "945",
- "946",
- "947",
- "948",
- "949",
- "950",
- "951",
- "952",
- "953",
- "954",
- "955",
- "956",
- "957",
- "958",
- "959",
- "960",
- "961",
- "962",
- "963",
- "964",
- "965",
- "966",
- "967",
- "968",
- "969",
- "970",
- "971",
- "972",
- "973",
- "974",
- "975",
- "976",
- "977",
- "978",
- "979",
- "980",
- "981",
- "982",
- "983",
- "984",
- "985",
- "986",
- "987",
- "988",
- "989",
- "990",
- "991",
- "992",
- "993",
- "994",
- "995",
- "996",
- "997",
- "998",
- "999",
- "1000",
- "1001",
- "1002",
- "1003",
- "1004",
- "1005",
- "1006",
- "1007",
- "1008",
- "1009",
- "1010",
- "1011",
- "1012",
- "1013",
- "1014",
- "1015",
- "1016",
- "1017",
- "1018",
- "1019",
- "1020",
- "1021",
- "1022",
- "1023"
-};
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winmisc.c b/nx-X11/programs/Xserver/hw/xwin/winmisc.c
deleted file mode 100644
index 8e6698118..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winmisc.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-#ifdef XWIN_NATIVEGDI
-/* See Porting Layer Definition - p. 33 */
-/*
- * Called by clients, returns the best size for a cursor, tile, or
- * stipple, specified by class (sometimes called kind)
- */
-
-void
-winQueryBestSizeNativeGDI (int class, unsigned short *pWidth,
- unsigned short *pHeight, ScreenPtr pScreen)
-{
- ErrorF ("winQueryBestSizeNativeGDI\n");
-}
-#endif
-
-
-/*
- * Count the number of one bits in a color mask.
- */
-
-CARD8
-winCountBits (DWORD dw)
-{
- DWORD dwBits = 0;
-
- while (dw)
- {
- dwBits += (dw & 1);
- dw >>= 1;
- }
-
- return dwBits;
-}
-
-
-/*
- * Modify the screen pixmap to point to the new framebuffer address
- */
-
-Bool
-winUpdateFBPointer (ScreenPtr pScreen, void *pbits)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- /* Location of shadow framebuffer has changed */
- pScreenInfo->pfb = pbits;
-
- /* Update the screen pixmap */
- if (!(*pScreen->ModifyPixmapHeader) (pScreen->devPrivate,
- pScreen->width,
- pScreen->height,
- pScreen->rootDepth,
- BitsPerPixel (pScreen->rootDepth),
- PixmapBytePad (pScreenInfo->dwStride,
- pScreenInfo->dwBPP),
- pScreenInfo->pfb))
- {
- FatalError ("winUpdateFramebufferPointer - Failed modifying "\
- "screen pixmap\n");
- }
-
- return TRUE;
-}
-
-
-#ifdef XWIN_NATIVEGDI
-/*
- * Paint the window background with the specified color
- */
-
-BOOL
-winPaintBackground (HWND hwnd, COLORREF colorref)
-{
- HDC hdc;
- HBRUSH hbrush;
- RECT rect;
-
- /* Create an hdc */
- hdc = GetDC (hwnd);
- if (hdc == NULL)
- {
- printf ("gdiWindowProc - GetDC failed\n");
- exit (1);
- }
-
- /* Create and select blue brush */
- hbrush = CreateSolidBrush (colorref);
- if (hbrush == NULL)
- {
- printf ("gdiWindowProc - CreateSolidBrush failed\n");
- exit (1);
- }
-
- /* Get window extents */
- if (GetClientRect (hwnd, &rect) == FALSE)
- {
- printf ("gdiWindowProc - GetClientRect failed\n");
- exit (1);
- }
-
- /* Fill window with blue brush */
- if (FillRect (hdc, &rect, hbrush) == 0)
- {
- printf ("gdiWindowProc - FillRect failed\n");
- exit (1);
- }
-
- /* Delete blue brush */
- DeleteObject (hbrush);
-
- /* Release the hdc */
- ReleaseDC (hwnd, hdc);
-
- return TRUE;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winmouse.c b/nx-X11/programs/Xserver/hw/xwin/winmouse.c
deleted file mode 100644
index 818652da6..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winmouse.c
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Dakshinamurthy Karra
- * Suhaib M Siddiqi
- * Peter Busch
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winmouse.c,v 1.3 2001/05/08 08:14:09 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-#if defined(XFree86Server) && defined(XINPUT)
-#include "inputstr.h"
-
-/* Peek the internal button mapping */
-static CARD8 const *g_winMouseButtonMap = NULL;
-#endif
-
-
-/*
- * Local prototypes
- */
-
-static void
-winMouseCtrl (DeviceIntPtr pDevice, PtrCtrl *pCtrl);
-
-
-static void
-winMouseCtrl (DeviceIntPtr pDevice, PtrCtrl *pCtrl)
-{
-}
-
-
-/*
- * See Porting Layer Definition - p. 18
- * This is known as a DeviceProc
- */
-
-int
-winMouseProc (DeviceIntPtr pDeviceInt, int iState)
-{
- int lngMouseButtons, i;
- int lngWheelEvents = 2;
- CARD8 *map;
- DevicePtr pDevice = (DevicePtr) pDeviceInt;
-
- switch (iState)
- {
- case DEVICE_INIT:
- /* Get number of mouse buttons */
- lngMouseButtons = GetSystemMetrics(SM_CMOUSEBUTTONS);
-
- /* Mapping of windows events to X events:
- * LEFT:1 MIDDLE:2 RIGHT:3
- * SCROLL_UP:4 SCROLL_DOWN:5
- * XBUTTON 1:6 XBUTTON 2:7 ...
- *
- * To map scroll wheel correctly we need at least the 3 normal buttons
- */
- if (lngMouseButtons < 3)
- lngMouseButtons = 3;
- winMsg(X_PROBED, "%d mouse buttons found\n", lngMouseButtons);
-
- /* allocate memory:
- * number of buttons + 2x mouse wheel event + 1 extra (offset for map)
- */
- map = malloc(sizeof(CARD8) * (lngMouseButtons + lngWheelEvents + 1));
-
- /* initalize button map */
- map[0] = 0;
- for (i=1; i <= lngMouseButtons + lngWheelEvents; i++)
- map[i] = i;
- InitPointerDeviceStruct (pDevice,
- map,
- lngMouseButtons + lngWheelEvents,
- miPointerGetMotionEvents,
- winMouseCtrl,
- miPointerGetMotionBufferSize ());
- free(map);
-
-#if defined(XFree86Server) && defined(XINPUT)
- g_winMouseButtonMap = pDeviceInt->button->map;
-#endif
- break;
-
- case DEVICE_ON:
- pDevice->on = TRUE;
- break;
-
- case DEVICE_CLOSE:
-#if defined(XFree86Server) && defined(XINPUT)
- g_winMouseButtonMap = NULL;
-#endif
- case DEVICE_OFF:
- pDevice->on = FALSE;
- break;
- }
- return Success;
-}
-
-
-/* Handle the mouse wheel */
-int
-winMouseWheel (ScreenPtr pScreen, int iDeltaZ)
-{
- winScreenPriv(pScreen);
- int button; /* Button4 or Button5 */
-
- /* Button4 = WheelUp */
- /* Button5 = WheelDown */
-
- /* Do we have any previous delta stored? */
- if ((pScreenPriv->iDeltaZ > 0
- && iDeltaZ > 0)
- || (pScreenPriv->iDeltaZ < 0
- && iDeltaZ < 0))
- {
- /* Previous delta and of same sign as current delta */
- iDeltaZ += pScreenPriv->iDeltaZ;
- pScreenPriv->iDeltaZ = 0;
- }
- else
- {
- /*
- * Previous delta of different sign, or zero.
- * We will set it to zero for either case,
- * as blindly setting takes just as much time
- * as checking, then setting if necessary :)
- */
- pScreenPriv->iDeltaZ = 0;
- }
-
- /*
- * Only process this message if the wheel has moved further than
- * WHEEL_DELTA
- */
- if (iDeltaZ >= WHEEL_DELTA || (-1 * iDeltaZ) >= WHEEL_DELTA)
- {
- pScreenPriv->iDeltaZ = 0;
-
- /* Figure out how many whole deltas of the wheel we have */
- iDeltaZ /= WHEEL_DELTA;
- }
- else
- {
- /*
- * Wheel has not moved past WHEEL_DELTA threshold;
- * we will store the wheel delta until the threshold
- * has been reached.
- */
- pScreenPriv->iDeltaZ = iDeltaZ;
- return 0;
- }
-
- /* Set the button to indicate up or down wheel delta */
- if (iDeltaZ > 0)
- {
- button = Button4;
- }
- else
- {
- button = Button5;
- }
-
- /*
- * Flip iDeltaZ to positive, if negative,
- * because always need to generate a *positive* number of
- * button clicks for the Z axis.
- */
- if (iDeltaZ < 0)
- {
- iDeltaZ *= -1;
- }
-
- /* Generate X input messages for each wheel delta we have seen */
- while (iDeltaZ--)
- {
- /* Push the wheel button */
- winMouseButtonsSendEvent (ButtonPress, button);
-
- /* Release the wheel button */
- winMouseButtonsSendEvent (ButtonRelease, button);
- }
-
- return 0;
-}
-
-
-/*
- * Enqueue a mouse button event
- */
-
-void
-winMouseButtonsSendEvent (int iEventType, int iButton)
-{
- xEvent xCurrentEvent;
-
- /* Load an xEvent and enqueue the event */
- xCurrentEvent.u.u.type = iEventType;
-#if defined(XFree86Server) && defined(XINPUT)
- if (g_winMouseButtonMap)
- xCurrentEvent.u.u.detail = g_winMouseButtonMap[iButton];
- else
-#endif
- xCurrentEvent.u.u.detail = iButton;
- xCurrentEvent.u.keyButtonPointer.time
- = g_c32LastInputEventTime = GetTickCount ();
- mieqEnqueue (&xCurrentEvent);
-}
-
-
-/*
- * Decide what to do with a Windows mouse message
- */
-
-int
-winMouseButtonsHandle (ScreenPtr pScreen,
- int iEventType, int iButton,
- WPARAM wParam)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- /* Send button events right away if emulate 3 buttons is off */
- if (pScreenInfo->iE3BTimeout == WIN_E3B_OFF)
- {
- /* Emulate 3 buttons is off, send the button event */
- winMouseButtonsSendEvent (iEventType, iButton);
- return 0;
- }
-
- /* Emulate 3 buttons is on, let the fun begin */
- if (iEventType == ButtonPress
- && pScreenPriv->iE3BCachedPress == 0
- && !pScreenPriv->fE3BFakeButton2Sent)
- {
- /*
- * Button was pressed, no press is cached,
- * and there is no fake button 2 release pending.
- */
-
- /* Store button press type */
- pScreenPriv->iE3BCachedPress = iButton;
-
- /*
- * Set a timer to send this button press if the other button
- * is not pressed within the timeout time.
- */
- SetTimer (pScreenPriv->hwndScreen,
- WIN_E3B_TIMER_ID,
- pScreenInfo->iE3BTimeout,
- NULL);
- }
- else if (iEventType == ButtonPress
- && pScreenPriv->iE3BCachedPress != 0
- && pScreenPriv->iE3BCachedPress != iButton
- && !pScreenPriv->fE3BFakeButton2Sent)
- {
- /*
- * Button press is cached, other button was pressed,
- * and there is no fake button 2 release pending.
- */
-
- /* Mouse button was cached and other button was pressed */
- KillTimer (pScreenPriv->hwndScreen, WIN_E3B_TIMER_ID);
- pScreenPriv->iE3BCachedPress = 0;
-
- /* Send fake middle button */
- winMouseButtonsSendEvent (ButtonPress, Button2);
-
- /* Indicate that a fake middle button event was sent */
- pScreenPriv->fE3BFakeButton2Sent = TRUE;
- }
- else if (iEventType == ButtonRelease
- && pScreenPriv->iE3BCachedPress == iButton)
- {
- /*
- * Cached button was released before timer ran out,
- * and before the other mouse button was pressed.
- */
- KillTimer (pScreenPriv->hwndScreen, WIN_E3B_TIMER_ID);
- pScreenPriv->iE3BCachedPress = 0;
-
- /* Send cached press, then send release */
- winMouseButtonsSendEvent (ButtonPress, iButton);
- winMouseButtonsSendEvent (ButtonRelease, iButton);
- }
- else if (iEventType == ButtonRelease
- && pScreenPriv->fE3BFakeButton2Sent
- && !(wParam & MK_LBUTTON)
- && !(wParam & MK_RBUTTON))
- {
- /*
- * Fake button 2 was sent and both mouse buttons have now been released
- */
- pScreenPriv->fE3BFakeButton2Sent = FALSE;
-
- /* Send middle mouse button release */
- winMouseButtonsSendEvent (ButtonRelease, Button2);
- }
- else if (iEventType == ButtonRelease
- && pScreenPriv->iE3BCachedPress == 0
- && !pScreenPriv->fE3BFakeButton2Sent)
- {
- /*
- * Button was release, no button is cached,
- * and there is no fake button 2 release is pending.
- */
- winMouseButtonsSendEvent (ButtonRelease, iButton);
- }
-
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winms.h b/nx-X11/programs/Xserver/hw/xwin/winms.h
deleted file mode 100644
index 1ad30dc0b..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winms.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef _WINMS_H_
-#define _WINMS_H_
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#define NONAMELESSUNION
-#define DIRECTDRAW_VERSION 0x0300
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-
-#include <X11/Xwindows.h>
-#include <windowsx.h>
-
-#include "ddraw.h"
-
-#undef CreateWindow
-
-#endif /* _WINMS_H_ */
diff --git a/nx-X11/programs/Xserver/hw/xwin/winmsg.c b/nx-X11/programs/Xserver/hw/xwin/winmsg.c
deleted file mode 100644
index 53974101e..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winmsg.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Alexander Gottwald
- */
-/* $XFree86$ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "winmsg.h"
-#if CYGDEBUG
-#include "winmessages.h"
-#endif
-#include <stdarg.h>
-
-void winVMsg (int, MessageType, int verb, const char *, va_list);
-
-void
-winVMsg (int scrnIndex, MessageType type, int verb, const char *format,
- va_list ap)
-{
- LogVMessageVerb(type, verb, format, ap);
-}
-
-
-void
-winDrvMsg (int scrnIndex, MessageType type, const char *format, ...)
-{
- va_list ap;
- va_start (ap, format);
- LogVMessageVerb(type, 0, format, ap);
- va_end (ap);
-}
-
-
-void
-winMsg (MessageType type, const char *format, ...)
-{
- va_list ap;
- va_start (ap, format);
- LogVMessageVerb(type, 1, format, ap);
- va_end (ap);
-}
-
-
-void
-winDrvMsgVerb (int scrnIndex, MessageType type, int verb, const char *format,
- ...)
-{
- va_list ap;
- va_start (ap, format);
- LogVMessageVerb(type, verb, format, ap);
- va_end (ap);
-}
-
-
-void
-winMsgVerb (MessageType type, int verb, const char *format, ...)
-{
- va_list ap;
- va_start (ap, format);
- LogVMessageVerb(type, verb, format, ap);
- va_end (ap);
-}
-
-
-void
-winErrorFVerb (int verb, const char *format, ...)
-{
- va_list ap;
- va_start (ap, format);
- LogVMessageVerb(X_NONE, verb, format, ap);
- va_end (ap);
-}
-
-void
-winDebug (const char *format, ...)
-{
- va_list ap;
- va_start (ap, format);
- LogVMessageVerb(X_NONE, 3, format, ap);
- va_end (ap);
-}
-
-void
-winTrace (const char *format, ...)
-{
- va_list ap;
- va_start (ap, format);
- LogVMessageVerb(X_NONE, 10, format, ap);
- va_end (ap);
-}
-
-void
-winW32Error(int verb, const char *msg)
-{
- winW32ErrorEx(verb, msg, GetLastError());
-}
-
-void
-winW32ErrorEx(int verb, const char *msg, DWORD errorcode)
-{
- LPVOID buffer;
- if (!FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- errorcode,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &buffer,
- 0,
- NULL ))
- {
- winErrorFVerb(verb, "Unknown error in FormatMessage!\n");
- }
- else
- {
- winErrorFVerb(verb, "%s %s", msg, (char *)buffer);
- LocalFree(buffer);
- }
-}
-
-#if CYGDEBUG
-void winDebugWin32Message(const char* function, HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- static int force = 0;
-
- if (message >= WM_USER)
- {
- if (force || getenv("WIN_DEBUG_MESSAGES") || getenv("WIN_DEBUG_WM_USER"))
- {
- winDebug("%s - Message WM_USER + %d\n", function, message - WM_USER);
- winDebug("\thwnd 0x%x wParam 0x%x lParam 0x%x\n", hwnd, wParam, lParam);
- }
- }
- else if (message < MESSAGE_NAMES_LEN && MESSAGE_NAMES[message])
- {
- const char *msgname = MESSAGE_NAMES[message];
- char buffer[64];
- snprintf(buffer, sizeof(buffer), "WIN_DEBUG_%s", msgname);
- buffer[63] = 0;
- if (force || getenv("WIN_DEBUG_MESSAGES") || getenv(buffer))
- {
- winDebug("%s - Message %s\n", function, MESSAGE_NAMES[message]);
- winDebug("\thwnd 0x%x wParam 0x%x lParam 0x%x\n", hwnd, wParam, lParam);
- }
- }
-}
-#else
-void winDebugWin32Message(const char* function, HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winmsg.h b/nx-X11/programs/Xserver/hw/xwin/winmsg.h
deleted file mode 100644
index 367086c78..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winmsg.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef __WIN_MSG_H__
-#define __WIN_MSG_H__
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Alexander Gottwald
- */
-/* $XFree86$ */
-
-
-/*
- * Function prototypes
- */
-
-void winDrvMsgVerb (int scrnIndex,
- MessageType type, int verb, const char *format, ...);
-void winDrvMsg (int scrnIndex, MessageType type, const char *format, ...);
-void winMsgVerb (MessageType type, int verb, const char *format, ...);
-void winMsg (MessageType type, const char *format, ...);
-void winDebug (const char *format, ...);
-void winTrace (const char *format, ...);
-
-void winErrorFVerb (int verb, const char *format, ...);
-void winW32Error(int verb, const char *message);
-void winW32ErrorEx(int verb, const char *message, DWORD errorcode);
-void winDebugWin32Message(const char* function, HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowclass.c b/nx-X11/programs/Xserver/hw/xwin/winmultiwindowclass.c
deleted file mode 100755
index d8909f0e5..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowclass.c
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Earle F. Philhower, III
- */
-/* $XFree86$ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include <X11/Xatom.h>
-#include "propertyst.h"
-#include "windowstr.h"
-#include "winmultiwindowclass.h"
-#include "win.h"
-
-/*
- * Local function
- */
-
-DEFINE_ATOM_HELPER(AtmWmWindowRole, "WM_WINDOW_ROLE")
-
-
-int
-winMultiWindowGetClassHint (WindowPtr pWin, char **res_name, char **res_class)
-{
- struct _Window *pwin;
- struct _Property *prop;
- int len_name, len_class;
-
- if (!pWin || !res_name || !res_class)
- {
- ErrorF ("winMultiWindowGetClassHint - pWin, res_name, or res_class was "
- "NULL\n");
- return 0;
- }
-
- pwin = (struct _Window*) pWin;
-
- if (pwin->optional)
- prop = (struct _Property *) pwin->optional->userProps;
- else
- prop = NULL;
-
- *res_name = *res_class = NULL;
-
- while (prop)
- {
- if (prop->propertyName == XA_WM_CLASS
- && prop->type == XA_STRING
- && prop->format == 8
- && prop->data)
- {
- len_name = strlen ((char *) prop->data);
-
- (*res_name) = malloc (len_name + 1);
-
- if (!*res_name)
- {
- ErrorF ("winMultiWindowGetClassHint - *res_name was NULL\n");
- return 0;
- }
-
- /* Add one to len_name to allow copying of trailing 0 */
- strncpy ((*res_name), prop->data, len_name + 1);
-
- if (len_name == prop->size)
- len_name--;
-
- len_class = strlen (((char *)prop->data) + 1 + len_name);
-
- (*res_class) = malloc (len_class + 1);
-
- if (!*res_class)
- {
- ErrorF ("winMultiWindowGetClassHint - *res_class was NULL\n");
-
- /* Free the previously allocated res_name */
- free (*res_name);
- return 0;
- }
-
- strcpy ((*res_class), ((char *)prop->data) + 1 + len_name);
-
- return 1;
- }
- else
- prop = prop->next;
- }
-
- return 0;
-}
-
-
-int
-winMultiWindowGetWMHints (WindowPtr pWin, WinXWMHints *hints)
-{
- struct _Window *pwin;
- struct _Property *prop;
-
- if (!pWin || !hints)
- {
- ErrorF ("winMultiWindowGetWMHints - pWin or hints was NULL\n");
- return 0;
- }
-
- pwin = (struct _Window*) pWin;
-
- if (pwin->optional)
- prop = (struct _Property *) pwin->optional->userProps;
- else
- prop = NULL;
-
- memset (hints, 0, sizeof (WinXWMHints));
-
- while (prop)
- {
- if (prop->propertyName == XA_WM_HINTS
- && prop->data)
- {
- memcpy (hints, prop->data, sizeof (WinXWMHints));
- return 1;
- }
- else
- prop = prop->next;
- }
-
- return 0;
-}
-
-
-int
-winMultiWindowGetWindowRole (WindowPtr pWin, char **res_role)
-{
- struct _Window *pwin;
- struct _Property *prop;
- int len_role;
-
- if (!pWin || !res_role)
- return 0;
-
- pwin = (struct _Window*) pWin;
-
- if (pwin->optional)
- prop = (struct _Property *) pwin->optional->userProps;
- else
- prop = NULL;
-
- *res_role = NULL;
- while (prop)
- {
- if (prop->propertyName == AtmWmWindowRole ()
- && prop->type == XA_STRING
- && prop->format == 8
- && prop->data)
- {
- len_role= prop->size;
-
- (*res_role) = malloc (len_role + 1);
-
- if (!*res_role)
- {
- ErrorF ("winMultiWindowGetWindowRole - *res_role was NULL\n");
- return 0;
- }
-
- strncpy ((*res_role), prop->data, len_role);
- (*res_role)[len_role] = 0;
-
- return 1;
- }
- else
- prop = prop->next;
- }
-
- return 0;
-}
-
-
-int
-winMultiWindowGetWMNormalHints (WindowPtr pWin, WinXSizeHints *hints)
-{
- struct _Window *pwin;
- struct _Property *prop;
-
- if (!pWin || !hints)
- {
- ErrorF ("winMultiWindowGetWMNormalHints - pWin or hints was NULL\n");
- return 0;
- }
-
- pwin = (struct _Window*) pWin;
-
- if (pwin->optional)
- prop = (struct _Property *) pwin->optional->userProps;
- else
- prop = NULL;
-
- memset (hints, 0, sizeof (WinXSizeHints));
-
- while (prop)
- {
- if (prop->propertyName == XA_WM_NORMAL_HINTS
- && prop->data)
- {
- memcpy (hints, prop->data, sizeof (WinXSizeHints));
- return 1;
- }
- else
- prop = prop->next;
- }
-
- return 0;
-}
-
-int
-winMultiWindowGetTransientFor (WindowPtr pWin, WindowPtr *ppDaddy)
-{
- struct _Window *pwin;
- struct _Property *prop;
-
- if (!pWin)
- {
- ErrorF ("winMultiWindowGetTransientFor - pWin was NULL\n");
- return 0;
- }
-
- pwin = (struct _Window*) pWin;
-
- if (pwin->optional)
- prop = (struct _Property *) pwin->optional->userProps;
- else
- prop = NULL;
-
- if (ppDaddy)
- *ppDaddy = NULL;
-
- while (prop)
- {
- if (prop->propertyName == XA_WM_TRANSIENT_FOR)
- {
- if (ppDaddy)
- memcpy (*ppDaddy, prop->data, sizeof (WindowPtr *));
- return 1;
- }
- else
- prop = prop->next;
- }
-
- return 0;
-}
-
-int
-winMultiWindowGetWMName (WindowPtr pWin, char **wmName)
-{
- struct _Window *pwin;
- struct _Property *prop;
- int len_name;
-
- if (!pWin || !wmName)
- {
- ErrorF ("winMultiWindowGetClassHint - pWin, res_name, or res_class was "
- "NULL\n");
- return 0;
- }
-
- pwin = (struct _Window*) pWin;
-
- if (pwin->optional)
- prop = (struct _Property *) pwin->optional->userProps;
- else
- prop = NULL;
-
- *wmName = NULL;
-
- while (prop)
- {
- if (prop->propertyName == XA_WM_NAME
- && prop->type == XA_STRING
- && prop->data)
- {
- len_name = prop->size;
-
- (*wmName) = malloc (len_name + 1);
-
- if (!*wmName)
- {
- ErrorF ("winMultiWindowGetWMName - *wmName was NULL\n");
- return 0;
- }
-
- strncpy ((*wmName), prop->data, len_name);
- (*wmName)[len_name] = 0;
-
- return 1;
- }
- else
- prop = prop->next;
- }
-
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowclass.h b/nx-X11/programs/Xserver/hw/xwin/winmultiwindowclass.h
deleted file mode 100755
index 0b430f2f8..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowclass.h
+++ /dev/null
@@ -1,116 +0,0 @@
-#if !defined(WINMULTIWINDOWCLASS_H)
-#define WINMULTIWINDOWCLASS_H
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Earle F. Philhower, III
- */
-/* $XFree86$ */
-
-
-/*
- * Structures
- */
-
-typedef struct {
- long flags; /* marks which fields in this structure are defined */
- Bool input; /* does this application rely on the window manager to
- get keyboard input? */
- int initial_state; /* see below */
- Pixmap icon_pixmap; /* pixmap to be used as icon */
- Window icon_window; /* window to be used as icon */
- int icon_x, icon_y; /* initial position of icon */
- Pixmap icon_mask; /* icon mask bitmap */
- XID window_group; /* id of related window group */
- /* this structure may be extended in the future */
-} WinXWMHints;
-
-
-/*
- * new version containing base_width, base_height, and win_gravity fields;
- * used with WM_NORMAL_HINTS.
- */
-typedef struct {
- long flags; /* marks which fields in this structure are defined */
- int x, y; /* obsolete for new window mgrs, but clients */
- int width, height; /* should set so old wm's don't mess up */
- int min_width, min_height;
- int max_width, max_height;
- int width_inc, height_inc;
- struct {
- int x; /* numerator */
- int y; /* denominator */
- } min_aspect, max_aspect;
- int base_width, base_height; /* added by ICCCM version 1 */
- int win_gravity; /* added by ICCCM version 1 */
-} WinXSizeHints;
-
-/*
- * The next block of definitions are for window manager properties that
- * clients and applications use for communication.
- */
-
-/* flags argument in size hints */
-#define USPosition (1L << 0) /* user specified x, y */
-#define USSize (1L << 1) /* user specified width, height */
-
-#define PPosition (1L << 2) /* program specified position */
-#define PSize (1L << 3) /* program specified size */
-#define PMinSize (1L << 4) /* program specified minimum size */
-#define PMaxSize (1L << 5) /* program specified maximum size */
-#define PResizeInc (1L << 6) /* program specified resize increments */
-#define PAspect (1L << 7) /* program specified min and max aspect ratios */
-#define PBaseSize (1L << 8) /* program specified base for incrementing */
-#define PWinGravity (1L << 9) /* program specified window gravity */
-
-/* obsolete */
-#define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect)
-
-
-/*
- * Function prototypes
- */
-
-int
-winMultiWindowGetWMHints (WindowPtr pWin, WinXWMHints *hints);
-
-int
-winMultiWindowGetClassHint (WindowPtr pWin, char **res_name, char **res_class);
-
-int
-winMultiWindowGetWindowRole (WindowPtr pWin, char **res_role);
-
-int
-winMultiWindowGetWMNormalHints (WindowPtr pWin, WinXSizeHints *hints);
-
-int
-winMultiWindowGetWMName (WindowPtr pWin, char **wmName);
-
-int
-winMultiWindowGetTransientFor (WindowPtr pWin, WindowPtr *ppDaddy);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowicons.c b/nx-X11/programs/Xserver/hw/xwin/winmultiwindowicons.c
deleted file mode 100755
index 2121e998f..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowicons.c
+++ /dev/null
@@ -1,478 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Earle F. Philhower, III
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winwindow.c,v 1.5 2002/11/07 10:31:32 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "dixevents.h"
-#include "winmultiwindowclass.h"
-#include "winprefs.h"
-
-
-/*
- * External global variables
- */
-
-extern HICON g_hIconX;
-extern HICON g_hSmallIconX;
-
-
-/*
- * Prototypes for local functions
- */
-
-static void
-winScaleXBitmapToWindows (int iconSize, int effBPP,
- PixmapPtr pixmap, unsigned char *image);
-
-
-/*
- * Scale an X icon bitmap into a Windoze icon bitmap
- */
-
-static void
-winScaleXBitmapToWindows (int iconSize,
- int effBPP,
- PixmapPtr pixmap,
- unsigned char *image)
-{
- int row, column, effXBPP, effXDepth;
- unsigned char *outPtr;
- unsigned char *iconData = 0;
- int stride, xStride;
- float factX, factY;
- int posX, posY;
- unsigned char *ptr;
- unsigned int zero;
- unsigned int color;
-
- effXBPP = BitsPerPixel(pixmap->drawable.depth);
- effXDepth = pixmap->drawable.depth;
-
- if (pixmap->drawable.bitsPerPixel == 15)
- effXBPP = 16;
-
- if (pixmap->drawable.depth == 15)
- effXDepth = 16;
-
- /* Need 32-bit aligned rows */
- stride = ((iconSize * effBPP + 31) & (~31)) / 8;
- xStride = PixmapBytePad (pixmap->drawable.width, pixmap->drawable.depth);
- if (stride == 0 || xStride == 0)
- {
- ErrorF ("winScaleXBitmapToWindows - stride or xStride is zero. "
- "Bailing.\n");
- return;
- }
-
- /* Allocate memory for icon data */
- iconData = malloc (xStride * pixmap->drawable.height);
- if (!iconData)
- {
- ErrorF ("winScaleXBitmapToWindows - malloc failed for iconData. "
- "Bailing.\n");
- return;
- }
-
- /* Get icon data */
- miGetImage ((DrawablePtr) &(pixmap->drawable), 0, 0,
- pixmap->drawable.width, pixmap->drawable.height,
- ZPixmap, 0xffffffff, iconData);
-
- /* Keep aspect ratio */
- factX = ((float)pixmap->drawable.width) / ((float)iconSize);
- factY = ((float)pixmap->drawable.height) / ((float)iconSize);
- if (factX > factY)
- factY = factX;
- else
- factX = factY;
-
- /* Out-of-bounds, fill icon with zero */
- zero = 0;
-
- for (row = 0; row < iconSize; row++)
- {
- outPtr = image + stride * row;
- for (column = 0; column < iconSize; column++)
- {
- posX = factX * column;
- posY = factY * row;
-
- ptr = iconData + posY*xStride;
- if (effXBPP == 1)
- {
- ptr += posX / 8;
-
- /* Out of X icon bounds, leave space blank */
- if (posX >= pixmap->drawable.width
- || posY >= pixmap->drawable.height)
- ptr = (unsigned char *) &zero;
-
- if ((*ptr) & (1 << (posX & 7)))
- switch (effBPP)
- {
- case 32:
- *(outPtr++) = 0;
- case 24:
- *(outPtr++) = 0;
- case 16:
- *(outPtr++) = 0;
- case 8:
- *(outPtr++) = 0;
- break;
- case 1:
- outPtr[column / 8] &= ~(1 << (7 - (column & 7)));
- break;
- }
- else
- switch (effBPP)
- {
- case 32:
- *(outPtr++) = 255;
- *(outPtr++) = 255;
- *(outPtr++) = 255;
- *(outPtr++) = 0;
- break;
- case 24:
- *(outPtr++) = 255;
- case 16:
- *(outPtr++) = 255;
- case 8:
- *(outPtr++) = 255;
- break;
- case 1:
- outPtr[column / 8] |= (1 << (7 - (column & 7)));
- break;
- }
- }
- else if (effXDepth == 24 || effXDepth == 32)
- {
- ptr += posX * (effXBPP / 8);
-
- /* Out of X icon bounds, leave space blank */
- if (posX >= pixmap->drawable.width
- || posY >= pixmap->drawable.height)
- ptr = (unsigned char *) &zero;
- color = (((*ptr) << 16)
- + ((*(ptr + 1)) << 8)
- + ((*(ptr + 2)) << 0));
- switch (effBPP)
- {
- case 32:
- *(outPtr++) = *(ptr++); // b
- *(outPtr++) = *(ptr++); // g
- *(outPtr++) = *(ptr++); // r
- *(outPtr++) = 0; // resvd
- break;
- case 24:
- *(outPtr++) = *(ptr++);
- *(outPtr++) = *(ptr++);
- *(outPtr++) = *(ptr++);
- break;
- case 16:
- color = ((((*ptr) >> 2) << 10)
- + (((*(ptr + 1)) >> 2) << 5)
- + (((*(ptr + 2)) >> 2)));
- *(outPtr++) = (color >> 8);
- *(outPtr++) = (color & 255);
- break;
- case 8:
- color = (((*ptr))) + (((*(ptr + 1)))) + (((*(ptr + 2))));
- color /= 3;
- *(outPtr++) = color;
- break;
- case 1:
- if (color)
- outPtr[column / 8] |= (1 << (7 - (column & 7)));
- else
- outPtr[column / 8] &= ~(1 << (7 - (column & 7)));
- }
- }
- else if (effXDepth == 16)
- {
- ptr += posX * (effXBPP / 8);
-
- /* Out of X icon bounds, leave space blank */
- if (posX >= pixmap->drawable.width
- || posY >= pixmap->drawable.height)
- ptr = (unsigned char *) &zero;
- color = ((*ptr) << 8) + (*(ptr + 1));
- switch (effBPP)
- {
- case 32:
- *(outPtr++) = (color & 31) << 2;
- *(outPtr++) = ((color >> 5) & 31) << 2;
- *(outPtr++) = ((color >> 10) & 31) << 2;
- *(outPtr++) = 0; // resvd
- break;
- case 24:
- *(outPtr++) = (color & 31) << 2;
- *(outPtr++) = ((color >> 5) & 31) << 2;
- *(outPtr++) = ((color >> 10) & 31) << 2;
- break;
- case 16:
- *(outPtr++) = *(ptr++);
- *(outPtr++) = *(ptr++);
- break;
- case 8:
- *(outPtr++) = (((color & 31)
- + ((color >> 5) & 31)
- + ((color >> 10) & 31)) / 3) << 2;
- break;
- case 1:
- if (color)
- outPtr[column / 8] |= (1 << (7 - (column & 7)));
- else
- outPtr[column / 8] &= ~(1 << (7 - (column & 7)));
- break;
- } /* end switch(effbpp) */
- } /* end if effxbpp==16) */
- } /* end for column */
- } /* end for row */
- free (iconData);
-}
-
-
-/*
- * Attempt to create a custom icon from the WM_HINTS bitmaps
- */
-
-HICON
-winXIconToHICON (WindowPtr pWin, int iconSize)
-{
- unsigned char *mask, *image, *imageMask;
- unsigned char *dst, *src;
- PixmapPtr iconPtr;
- PixmapPtr maskPtr;
- int planes, bpp, effBPP, stride, maskStride, i;
- HDC hDC;
- ICONINFO ii;
- WinXWMHints hints;
- HICON hIcon;
-
- winMultiWindowGetWMHints (pWin, &hints);
- if (!hints.icon_pixmap) return NULL;
-
- iconPtr = LookupIDByType (hints.icon_pixmap, RT_PIXMAP);
-
- if (!iconPtr) return NULL;
-
- hDC = GetDC (GetDesktopWindow ());
- planes = GetDeviceCaps (hDC, PLANES);
- bpp = GetDeviceCaps (hDC, BITSPIXEL);
- ReleaseDC (GetDesktopWindow (), hDC);
-
- /* 15 BPP is really 16BPP as far as we care */
- if (bpp == 15)
- effBPP = 16;
- else
- effBPP = bpp;
-
- /* Need 32-bit aligned rows */
- stride = ((iconSize * effBPP + 31) & (~31)) / 8;
-
- /* Mask is 1-bit deep */
- maskStride = ((iconSize * 1 + 31) & (~31)) / 8;
-
- image = (unsigned char * ) malloc (stride * iconSize);
- imageMask = (unsigned char *) malloc (stride * iconSize);
- mask = (unsigned char *) malloc (maskStride * iconSize);
-
- /* Default to a completely black mask */
- memset (mask, 0, maskStride * iconSize);
-
- winScaleXBitmapToWindows (iconSize, effBPP, iconPtr, image);
- maskPtr = LookupIDByType (hints.icon_mask, RT_PIXMAP);
-
- if (maskPtr)
- {
- winScaleXBitmapToWindows (iconSize, 1, maskPtr, mask);
-
- winScaleXBitmapToWindows (iconSize, effBPP, maskPtr, imageMask);
-
- /* Now we need to set all bits of the icon which are not masked */
- /* on to 0 because Color is really an XOR, not an OR function */
- dst = image;
- src = imageMask;
-
- for (i = 0; i < (stride * iconSize); i++)
- if ((*(src++)))
- *(dst++) = 0;
- else
- dst++;
- }
-
- ii.fIcon = TRUE;
- ii.xHotspot = 0; /* ignored */
- ii.yHotspot = 0; /* ignored */
-
- /* Create Win32 mask from pixmap shape */
- ii.hbmMask = CreateBitmap (iconSize, iconSize, planes, 1, mask);
-
- /* Create Win32 bitmap from pixmap */
- ii.hbmColor = CreateBitmap (iconSize, iconSize, planes, bpp, image);
-
- /* Merge Win32 mask and bitmap into icon */
- hIcon = CreateIconIndirect (&ii);
-
- /* Release Win32 mask and bitmap */
- DeleteObject (ii.hbmMask);
- DeleteObject (ii.hbmColor);
-
- /* Free X mask and bitmap */
- free (mask);
- free (image);
- free (imageMask);
-
- return hIcon;
-}
-
-
-
-/*
- * Change the Windows window icon
- */
-
-#ifdef XWIN_MULTIWINDOW
-void
-winUpdateIcon (Window id)
-{
- WindowPtr pWin;
- HICON hIcon, hiconOld;
-
- pWin = LookupIDByType (id, RT_WINDOW);
- hIcon = (HICON)winOverrideIcon ((unsigned long)pWin);
-
- if (!hIcon)
- hIcon = winXIconToHICON (pWin, GetSystemMetrics(SM_CXICON));
-
- if (hIcon)
- {
- winWindowPriv(pWin);
-
- if (pWinPriv->hWnd)
- {
- hiconOld = (HICON) SetClassLong (pWinPriv->hWnd,
- GCL_HICON,
- (int) hIcon);
-
- /* Delete the icon if its not the default */
- winDestroyIcon(hiconOld);
- }
- }
-
- hIcon = winXIconToHICON (pWin, GetSystemMetrics(SM_CXSMICON));
- if (hIcon)
- {
- winWindowPriv(pWin);
-
- if (pWinPriv->hWnd)
- {
- hiconOld = (HICON) SetClassLong (pWinPriv->hWnd,
- GCL_HICONSM,
- (int) hIcon);
- winDestroyIcon (hiconOld);
- }
- }
-}
-
-void winInitGlobalIcons (void)
-{
- int sm_cx = GetSystemMetrics(SM_CXICON);
- int sm_cxsm = GetSystemMetrics(SM_CXSMICON);
- /* Load default X icon in case it's not ready yet */
- if (!g_hIconX)
- {
- g_hIconX = (HICON)winOverrideDefaultIcon(sm_cx);
- g_hSmallIconX = (HICON)winOverrideDefaultIcon(sm_cxsm);
- }
-
- if (!g_hIconX)
- {
- g_hIconX = (HICON)LoadImage (g_hInstance,
- MAKEINTRESOURCE(IDI_XWIN),
- IMAGE_ICON,
- GetSystemMetrics(SM_CXICON),
- GetSystemMetrics(SM_CYICON),
- 0);
- g_hSmallIconX = (HICON)LoadImage (g_hInstance,
- MAKEINTRESOURCE(IDI_XWIN),
- IMAGE_ICON,
- GetSystemMetrics(SM_CXSMICON),
- GetSystemMetrics(SM_CYSMICON),
- LR_DEFAULTSIZE);
- }
-}
-
-void winSelectIcons(WindowPtr pWin, HICON *pIcon, HICON *pSmallIcon)
-{
- HICON hIcon, hSmallIcon;
-
- winInitGlobalIcons();
-
- /* Try and get the icon from WM_HINTS */
- hIcon = winXIconToHICON (pWin, GetSystemMetrics(SM_CXICON));
- hSmallIcon = winXIconToHICON (pWin, GetSystemMetrics(SM_CXSMICON));
-
- /* If we got the small, but not the large one swap them */
- if (!hIcon && hSmallIcon)
- {
- hIcon = hSmallIcon;
- hSmallIcon = NULL;
- }
-
- /* Use default X icon if no icon loaded from WM_HINTS */
- if (!hIcon) {
- hIcon = g_hIconX;
- hSmallIcon = g_hSmallIconX;
- }
-
- if (pIcon)
- *pIcon = hIcon;
- else
- winDestroyIcon(hIcon);
- if (pSmallIcon)
- *pSmallIcon = hSmallIcon;
- else
- winDestroyIcon(hSmallIcon);
-}
-
-void winDestroyIcon(HICON hIcon)
-{
- /* Delete the icon if its not the default */
- if (hIcon &&
- hIcon != g_hIconX &&
- hIcon != g_hSmallIconX &&
- !winIconIsOverride((unsigned long)hIcon))
- DestroyIcon (hIcon);
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowshape.c b/nx-X11/programs/Xserver/hw/xwin/winmultiwindowshape.c
deleted file mode 100755
index 0b9650e98..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowshape.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Kensuke Matsuzaki
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winmultiwindowshape.c,v 1.2 2003/11/10 18:22:44 tsi Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#ifdef SHAPE
-
-#include "win.h"
-
-
-/*
- * winSetShapeMultiWindow - See Porting Layer Definition - p. 42
- */
-
-void
-winSetShapeMultiWindow (WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winSetShapeMultiWindow - pWin: %08x\n", pWin);
-#endif
-
- WIN_UNWRAP(SetShape);
- (*pScreen->SetShape)(pWin);
- WIN_WRAP(SetShape, winSetShapeMultiWindow);
-
- /* Update the Windows window's shape */
- winReshapeMultiWindow (pWin);
- winUpdateRgnMultiWindow (pWin);
-
- return;
-}
-
-
-/*
- * winUpdateRgnMultiWindow - Local function to update a Windows window region
- */
-
-void
-winUpdateRgnMultiWindow (WindowPtr pWin)
-{
- SetWindowRgn (winGetWindowPriv(pWin)->hWnd,
- winGetWindowPriv(pWin)->hRgn, TRUE);
-}
-
-
-/*
- * winReshapeMultiWindow - Computes the composite clipping region for a window
- */
-
-void
-winReshapeMultiWindow (WindowPtr pWin)
-{
- int nRects;
- RegionRec rrNewShape;
- BoxPtr pShape, pRects, pEnd;
- HRGN hRgn, hRgnRect;
- winWindowPriv(pWin);
-
-#if CYGDEBUG
- winDebug ("winReshape ()\n");
-#endif
-
- /* Bail if the window is the root window */
- if (pWin->parent == NULL)
- return;
-
- /* Bail if the window is not top level */
- if (pWin->parent->parent != NULL)
- return;
-
- /* Bail if Windows window handle is invalid */
- if (pWinPriv->hWnd == NULL)
- return;
-
- /* Free any existing window region stored in the window privates */
- if (pWinPriv->hRgn != NULL)
- {
- DeleteObject (pWinPriv->hRgn);
- pWinPriv->hRgn = NULL;
- }
-
- /* Bail if the window has no bounding region defined */
- if (!wBoundingShape (pWin))
- return;
-
- REGION_NULL(pWin->drawable.pScreen, &rrNewShape);
- REGION_COPY(pWin->drawable.pScreen, &rrNewShape, wBoundingShape(pWin));
- REGION_TRANSLATE(pWin->drawable.pScreen,
- &rrNewShape,
- pWin->borderWidth,
- pWin->borderWidth);
-
- nRects = REGION_NUM_RECTS(&rrNewShape);
- pShape = REGION_RECTS(&rrNewShape);
-
- /* Don't do anything if there are no rectangles in the region */
- if (nRects > 0)
- {
- RECT rcClient;
- RECT rcWindow;
- int iOffsetX, iOffsetY;
-
- /* Get client rectangle */
- if (!GetClientRect (pWinPriv->hWnd, &rcClient))
- {
- ErrorF ("winReshape - GetClientRect failed, bailing: %d\n",
- (int) GetLastError ());
- return;
- }
-
- /* Translate client rectangle coords to screen coords */
- /* NOTE: Only transforms top and left members */
- ClientToScreen (pWinPriv->hWnd, (LPPOINT) &rcClient);
-
- /* Get window rectangle */
- if (!GetWindowRect (pWinPriv->hWnd, &rcWindow))
- {
- ErrorF ("winReshape - GetWindowRect failed, bailing: %d\n",
- (int) GetLastError ());
- return;
- }
-
- /* Calculate offset from window upper-left to client upper-left */
- iOffsetX = rcClient.left - rcWindow.left;
- iOffsetY = rcClient.top - rcWindow.top;
-
- /* Create initial Windows region for title bar */
- /* FIXME: Mean, nasty, ugly hack!!! */
- hRgn = CreateRectRgn (0, 0, rcWindow.right, iOffsetY);
- if (hRgn == NULL)
- {
- ErrorF ("winReshape - Initial CreateRectRgn (%d, %d, %d, %d) "
- "failed: %d\n",
- 0, 0, (int) rcWindow.right, iOffsetY, (int) GetLastError ());
- }
-
- /* Loop through all rectangles in the X region */
- for (pRects = pShape, pEnd = pShape + nRects; pRects < pEnd; pRects++)
- {
- /* Create a Windows region for the X rectangle */
- hRgnRect = CreateRectRgn (pRects->x1 + iOffsetX,
- pRects->y1 + iOffsetY,
- pRects->x2 + iOffsetX,
- pRects->y2 + iOffsetY);
- if (hRgnRect == NULL)
- {
- ErrorF ("winReshape - Loop CreateRectRgn (%d, %d, %d, %d) "
- "failed: %d\n"
- "\tx1: %d x2: %d xOff: %d y1: %d y2: %d yOff: %d\n",
- pRects->x1 + iOffsetX,
- pRects->y1 + iOffsetY,
- pRects->x2 + iOffsetX,
- pRects->y2 + iOffsetY,
- (int) GetLastError (),
- pRects->x1, pRects->x2, iOffsetX,
- pRects->y1, pRects->y2, iOffsetY);
- }
-
- /* Merge the Windows region with the accumulated region */
- if (CombineRgn (hRgn, hRgn, hRgnRect, RGN_OR) == ERROR)
- {
- ErrorF ("winReshape - CombineRgn () failed: %d\n",
- (int) GetLastError ());
- }
-
- /* Delete the temporary Windows region */
- DeleteObject (hRgnRect);
- }
-
- /* Save a handle to the composite region in the window privates */
- pWinPriv->hRgn = hRgn;
- }
-
- REGION_UNINIT(pWin->drawable.pScreen, &rrNewShape);
-
- return;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowwindow.c b/nx-X11/programs/Xserver/hw/xwin/winmultiwindowwindow.c
deleted file mode 100644
index f1ab55252..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowwindow.c
+++ /dev/null
@@ -1,1056 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Kensuke Matsuzaki
- * Earle F. Philhower, III
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winwindow.c,v 1.5 2002/11/07 10:31:32 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "dixevents.h"
-#include "winmultiwindowclass.h"
-#include "winprefs.h"
-
-/*
- * External global variables
- */
-
-extern HWND g_hDlgDepthChange;
-
-extern void winSelectIcons(WindowPtr pWin, HICON *pIcon, HICON *pSmallIcon);
-
-/*
- * Prototypes for local functions
- */
-
-void
-winCreateWindowsWindow (WindowPtr pWin);
-
-static void
-winDestroyWindowsWindow (WindowPtr pWin);
-
-static void
-winUpdateWindowsWindow (WindowPtr pWin);
-
-static void
-winFindWindow (pointer value, XID id, pointer cdata);
-
-/*
- * Constant defines
- */
-
-#define MOUSE_POLLING_INTERVAL 500
-
-
-/*
- * Macros
- */
-
-#define SubSend(pWin) \
- ((pWin->eventMask|wOtherEventMasks(pWin)) & SubstructureNotifyMask)
-
-#define StrSend(pWin) \
- ((pWin->eventMask|wOtherEventMasks(pWin)) & StructureNotifyMask)
-
-#define SubStrSend(pWin,pParent) (StrSend(pWin) || SubSend(pParent))
-
-
-/*
- * CreateWindow - See Porting Layer Definition - p. 37
- */
-
-Bool
-winCreateWindowMultiWindow (WindowPtr pWin)
-{
- Bool fResult = TRUE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGMULTIWINDOW_DEBUG
- winTrace ("winCreateWindowMultiWindow - pWin: %p\n", pWin);
-#endif
-
- WIN_UNWRAP(CreateWindow);
- fResult = (*pScreen->CreateWindow) (pWin);
- WIN_WRAP(CreateWindow, winCreateWindowMultiWindow);
-
- /* Initialize some privates values */
- pWinPriv->hRgn = NULL;
- pWinPriv->hWnd = NULL;
- pWinPriv->pScreenPriv = winGetScreenPriv(pWin->drawable.pScreen);
- pWinPriv->fXKilled = FALSE;
-
- return fResult;
-}
-
-
-/*
- * DestroyWindow - See Porting Layer Definition - p. 37
- */
-
-Bool
-winDestroyWindowMultiWindow (WindowPtr pWin)
-{
- Bool fResult = TRUE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winDestroyWindowMultiWindow - pWin: %p\n", pWin);
-#endif
-
- WIN_UNWRAP(DestroyWindow);
- fResult = (*pScreen->DestroyWindow)(pWin);
- WIN_WRAP(DestroyWindow, winDestroyWindowMultiWindow);
-
- /* Flag that the window has been destroyed */
- pWinPriv->fXKilled = TRUE;
-
- /* Kill the MS Windows window associated with this window */
- winDestroyWindowsWindow (pWin);
-
- return fResult;
-}
-
-
-/*
- * PositionWindow - See Porting Layer Definition - p. 37
- *
- * This function adjusts the position and size of Windows window
- * with respect to the underlying X window. This is the inverse
- * of winAdjustXWindow, which adjusts X window to Windows window.
- */
-
-Bool
-winPositionWindowMultiWindow (WindowPtr pWin, int x, int y)
-{
- Bool fResult = TRUE;
- int iX, iY, iWidth, iHeight;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
- HWND hWnd = pWinPriv->hWnd;
- RECT rcNew;
- RECT rcOld;
-#if CYGMULTIWINDOW_DEBUG
- RECT rcClient;
- RECT *lpRc;
-#endif
- DWORD dwExStyle;
- DWORD dwStyle;
-
-#if CYGMULTIWINDOW_DEBUG
- winTrace ("winPositionWindowMultiWindow - pWin: %p\n", pWin);
-#endif
-
- WIN_UNWRAP(PositionWindow);
- fResult = (*pScreen->PositionWindow)(pWin, x, y);
- WIN_WRAP(PositionWindow, winPositionWindowMultiWindow);
-
-#if CYGWINDOWING_DEBUG
- ErrorF ("winPositionWindowMultiWindow: (x, y) = (%d, %d)\n",
- x, y);
-#endif
-
- /* Bail out if the Windows window handle is bad */
- if (!hWnd)
- {
-#if CYGWINDOWING_DEBUG
- ErrorF ("\timmediately return since hWnd is NULL\n");
-#endif
- return fResult;
- }
-
- /* Get the Windows window style and extended style */
- dwExStyle = GetWindowLongPtr (hWnd, GWL_EXSTYLE);
- dwStyle = GetWindowLongPtr (hWnd, GWL_STYLE);
-
- /* Get the X and Y location of the X window */
- iX = pWin->drawable.x + GetSystemMetrics (SM_XVIRTUALSCREEN);
- iY = pWin->drawable.y + GetSystemMetrics (SM_YVIRTUALSCREEN);
-
- /* Get the height and width of the X window */
- iWidth = pWin->drawable.width;
- iHeight = pWin->drawable.height;
-
- /* Store the origin, height, and width in a rectangle structure */
- SetRect (&rcNew, iX, iY, iX + iWidth, iY + iHeight);
-
-#if CYGMULTIWINDOW_DEBUG
- lpRc = &rcNew;
- ErrorF ("winPositionWindowMultiWindow - (%d ms)drawable (%d, %d)-(%d, %d)\n",
- GetTickCount (), lpRc->left, lpRc->top, lpRc->right, lpRc->bottom);
-#endif
-
- /*
- * Calculate the required size of the Windows window rectangle,
- * given the size of the Windows window client area.
- */
- AdjustWindowRectEx (&rcNew, dwStyle, FALSE, dwExStyle);
-
- /* Get a rectangle describing the old Windows window */
- GetWindowRect (hWnd, &rcOld);
-
-#if CYGMULTIWINDOW_DEBUG
- /* Get a rectangle describing the Windows window client area */
- GetClientRect (hWnd, &rcClient);
-
- lpRc = &rcNew;
- ErrorF ("winPositionWindowMultiWindow - (%d ms)rcNew (%d, %d)-(%d, %d)\n",
- GetTickCount (), lpRc->left, lpRc->top, lpRc->right, lpRc->bottom);
-
- lpRc = &rcOld;
- ErrorF ("winPositionWindowMultiWindow - (%d ms)rcOld (%d, %d)-(%d, %d)\n",
- GetTickCount (), lpRc->left, lpRc->top, lpRc->right, lpRc->bottom);
-
- lpRc = &rcClient;
- ErrorF ("(%d ms)rcClient (%d, %d)-(%d, %d)\n",
- GetTickCount (), lpRc->left, lpRc->top, lpRc->right, lpRc->bottom);
-#endif
-
- /* Check if the old rectangle and new rectangle are the same */
- if (!EqualRect (&rcNew, &rcOld))
- {
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winPositionWindowMultiWindow - Need to move\n");
-#endif
-
-#if CYGWINDOWING_DEBUG
- ErrorF ("\tMoveWindow to (%ld, %ld) - %ldx%ld\n", rcNew.left, rcNew.top,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top);
-#endif
- /* Change the position and dimensions of the Windows window */
- MoveWindow (hWnd,
- rcNew.left, rcNew.top,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top,
- TRUE);
- }
- else
- {
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winPositionWindowMultiWindow - Not need to move\n");
-#endif
- }
-
- return fResult;
-}
-
-
-/*
- * ChangeWindowAttributes - See Porting Layer Definition - p. 37
- */
-
-Bool
-winChangeWindowAttributesMultiWindow (WindowPtr pWin, unsigned long mask)
-{
- Bool fResult = TRUE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winChangeWindowAttributesMultiWindow - pWin: %08x\n", pWin);
-#endif
-
- WIN_UNWRAP(ChangeWindowAttributes);
- fResult = (*pScreen->ChangeWindowAttributes)(pWin, mask);
- WIN_WRAP(ChangeWindowAttributes, winChangeWindowAttributesMultiWindow);
-
- /*
- * NOTE: We do not currently need to do anything here.
- */
-
- return fResult;
-}
-
-
-/*
- * UnmapWindow - See Porting Layer Definition - p. 37
- * Also referred to as UnrealizeWindow
- */
-
-Bool
-winUnmapWindowMultiWindow (WindowPtr pWin)
-{
- Bool fResult = TRUE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winUnmapWindowMultiWindow - pWin: %08x\n", pWin);
-#endif
-
- WIN_UNWRAP(UnrealizeWindow);
- fResult = (*pScreen->UnrealizeWindow)(pWin);
- WIN_WRAP(UnrealizeWindow, winUnmapWindowMultiWindow);
-
- /* Flag that the window has been killed */
- pWinPriv->fXKilled = TRUE;
-
- /* Destroy the Windows window associated with this X window */
- winDestroyWindowsWindow (pWin);
-
- return fResult;
-}
-
-
-/*
- * MapWindow - See Porting Layer Definition - p. 37
- * Also referred to as RealizeWindow
- */
-
-Bool
-winMapWindowMultiWindow (WindowPtr pWin)
-{
- Bool fResult = TRUE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winMapWindowMultiWindow - pWin: %08x\n", pWin);
-#endif
-
- WIN_UNWRAP(RealizeWindow);
- fResult = (*pScreen->RealizeWindow)(pWin);
- WIN_WRAP(RealizeWindow, winMapWindowMultiWindow);
-
- /* Flag that this window has not been destroyed */
- pWinPriv->fXKilled = FALSE;
-
- /* Refresh/redisplay the Windows window associated with this X window */
- winUpdateWindowsWindow (pWin);
-
-#ifdef SHAPE
- /* Update the Windows window's shape */
- winReshapeMultiWindow (pWin);
- winUpdateRgnMultiWindow (pWin);
-#endif
-
- return fResult;
-}
-
-
-/*
- * ReparentWindow - See Porting Layer Definition - p. 42
- */
-
-void
-winReparentWindowMultiWindow (WindowPtr pWin, WindowPtr pPriorParent)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winReparentMultiWindow - pWin: %08x\n", pWin);
-#endif
-
- WIN_UNWRAP(ReparentWindow);
- if (pScreen->ReparentWindow)
- (*pScreen->ReparentWindow)(pWin, pPriorParent);
- WIN_WRAP(ReparentWindow, winReparentWindowMultiWindow);
-
- /* Update the Windows window associated with this X window */
- winUpdateWindowsWindow (pWin);
-}
-
-
-/*
- * RestackWindow - Shuffle the z-order of a window
- */
-
-void
-winRestackWindowMultiWindow (WindowPtr pWin, WindowPtr pOldNextSib)
-{
- WindowPtr pPrevWin;
- UINT uFlags;
- HWND hInsertAfter;
- HWND hWnd = NULL;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGMULTIWINDOW_DEBUG || CYGWINDOWING_DEBUG
- winTrace ("winRestackMultiWindow - %08x\n", pWin);
-#endif
-
- WIN_UNWRAP(RestackWindow);
- if (pScreen->RestackWindow)
- (*pScreen->RestackWindow)(pWin, pOldNextSib);
- WIN_WRAP(RestackWindow, winRestackWindowMultiWindow);
-
-#if 1
- /*
- * Calling winReorderWindowsMultiWindow here means our window manager
- * (i.e. Windows Explorer) has initiative to determine Z order.
- */
- if (pWin->nextSib != pOldNextSib)
- winReorderWindowsMultiWindow ();
-#else
- /* Bail out if no window privates or window handle is invalid */
- if (!pWinPriv || !pWinPriv->hWnd)
- return;
-
- /* Get a pointer to our previous sibling window */
- pPrevWin = pWin->prevSib;
-
- /*
- * Look for a sibling window with
- * valid privates and window handle
- */
- while (pPrevWin
- && !winGetWindowPriv(pPrevWin)
- && !winGetWindowPriv(pPrevWin)->hWnd)
- pPrevWin = pPrevWin->prevSib;
-
- /* Check if we found a valid sibling */
- if (pPrevWin)
- {
- /* Valid sibling - get handle to insert window after */
- hInsertAfter = winGetWindowPriv(pPrevWin)->hWnd;
- uFlags = SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE;
-
- hWnd = GetNextWindow (pWinPriv->hWnd, GW_HWNDPREV);
-
- do
- {
- if (GetProp (hWnd, WIN_WINDOW_PROP))
- {
- if (hWnd == winGetWindowPriv(pPrevWin)->hWnd)
- {
- uFlags |= SWP_NOZORDER;
- }
- break;
- }
- hWnd = GetNextWindow (hWnd, GW_HWNDPREV);
- }
- while (hWnd);
- }
- else
- {
- /* No valid sibling - make this window the top window */
- hInsertAfter = HWND_TOP;
- uFlags = SWP_NOMOVE | SWP_NOSIZE;
- }
-
- /* Perform the restacking operation in Windows */
- SetWindowPos (pWinPriv->hWnd,
- hInsertAfter,
- 0, 0,
- 0, 0,
- uFlags);
-#endif
-}
-
-
-/*
- * winCreateWindowsWindow - Create a Windows window associated with an X window
- */
-
-void
-winCreateWindowsWindow (WindowPtr pWin)
-{
- int iX, iY;
- int iWidth;
- int iHeight;
- HWND hWnd;
- WNDCLASSEX wc;
- winWindowPriv(pWin);
- HICON hIcon;
- HICON hIconSmall;
-#define CLASS_NAME_LENGTH 512
- char pszClass[CLASS_NAME_LENGTH], pszWindowID[12];
- char *res_name, *res_class, *res_role;
- static int s_iWindowID = 0;
- winPrivScreenPtr pScreenPriv = pWinPriv->pScreenPriv;
- WinXSizeHints hints;
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winCreateWindowsWindow - pWin: %08x\n", pWin);
-#endif
-
- iX = pWin->drawable.x + GetSystemMetrics (SM_XVIRTUALSCREEN);
- iY = pWin->drawable.y + GetSystemMetrics (SM_YVIRTUALSCREEN);
-
- /* Default positions if none specified */
- if (!winMultiWindowGetWMNormalHints(pWin, &hints))
- hints.flags = 0;
- if ( !(hints.flags & (USPosition|PPosition)) &&
- !winMultiWindowGetTransientFor (pWin, NULL) &&
- !pWin->overrideRedirect )
- {
- iX = CW_USEDEFAULT;
- iY = CW_USEDEFAULT;
- }
-
- iWidth = pWin->drawable.width;
- iHeight = pWin->drawable.height;
-
- winSelectIcons(pWin, &hIcon, &hIconSmall);
-
- /* Set standard class name prefix so we can identify window easily */
- strncpy (pszClass, WINDOW_CLASS_X, sizeof(pszClass));
-
- if (winMultiWindowGetClassHint (pWin, &res_name, &res_class))
- {
- strncat (pszClass, "-", 1);
- strncat (pszClass, res_name, CLASS_NAME_LENGTH - strlen (pszClass));
- strncat (pszClass, "-", 1);
- strncat (pszClass, res_class, CLASS_NAME_LENGTH - strlen (pszClass));
-
- /* Check if a window class is provided by the WM_WINDOW_ROLE property,
- * if not use the WM_CLASS information.
- * For further information see:
- * http://tronche.com/gui/x/icccm/sec-5.html
- */
- if (winMultiWindowGetWindowRole (pWin, &res_role) )
- {
- strcat (pszClass, "-");
- strcat (pszClass, res_role);
- free (res_role);
- }
-
- free (res_name);
- free (res_class);
- }
-
- /* Add incrementing window ID to make unique class name */
- snprintf (pszWindowID, sizeof(pszWindowID), "-%x", s_iWindowID++);
- pszWindowID[sizeof(pszWindowID)-1] = 0;
- strcat (pszClass, pszWindowID);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winCreateWindowsWindow - Creating class: %s\n", pszClass);
-#endif
-
- /* Setup our window class */
- wc.cbSize = sizeof(wc);
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = winTopLevelWindowProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = g_hInstance;
- wc.hIcon = hIcon;
- wc.hIconSm = hIconSmall;
- wc.hCursor = 0;
- wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = pszClass;
- RegisterClassEx (&wc);
-
- /* Create the window */
- /* Make it OVERLAPPED in create call since WS_POPUP doesn't support */
- /* CW_USEDEFAULT, change back to popup after creation */
- hWnd = CreateWindowExA (WS_EX_TOOLWINDOW, /* Extended styles */
- pszClass, /* Class name */
- WINDOW_TITLE_X, /* Window name */
- WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
- iX, /* Horizontal position */
- iY, /* Vertical position */
- iWidth, /* Right edge */
- iHeight, /* Bottom edge */
- (HWND) NULL, /* No parent or owner window */
- (HMENU) NULL, /* No menu */
- GetModuleHandle (NULL), /* Instance handle */
- pWin); /* ScreenPrivates */
- if (hWnd == NULL)
- {
- ErrorF ("winCreateWindowsWindow - CreateWindowExA () failed: %d\n",
- (int) GetLastError ());
- }
-
- /* Change style back to popup, already placed... */
- SetWindowLong (hWnd, GWL_STYLE, WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
- SetWindowPos (hWnd, 0, 0, 0, 0, 0,
- SWP_FRAMECHANGED | SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
- /* Make sure it gets the proper system menu for a WS_POPUP, too */
- GetSystemMenu (hWnd, TRUE);
-
- pWinPriv->hWnd = hWnd;
-
- /* Cause any .XWinrc menus to be added in main WNDPROC */
- PostMessage (hWnd, WM_INIT_SYS_MENU, 0, 0);
-
- SetProp (pWinPriv->hWnd, WIN_WID_PROP, (HANDLE) winGetWindowID(pWin));
-
- /* Flag that this Windows window handles its own activation */
- SetProp (pWinPriv->hWnd, WIN_NEEDMANAGE_PROP, (HANDLE) 0);
-
- /* Call engine-specific create window procedure */
- (*pScreenPriv->pwinFinishCreateWindowsWindow) (pWin);
-}
-
-
-Bool winInDestroyWindowsWindow = FALSE;
-/*
- * winDestroyWindowsWindow - Destroy a Windows window associated
- * with an X window
- */
-static void
-winDestroyWindowsWindow (WindowPtr pWin)
-{
- MSG msg;
- winWindowPriv(pWin);
- HICON hiconClass;
- HICON hiconSmClass;
- HMODULE hInstance;
- int iReturn;
- char pszClass[512];
- BOOL oldstate = winInDestroyWindowsWindow;
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winDestroyWindowsWindow\n");
-#endif
-
- /* Bail out if the Windows window handle is invalid */
- if (pWinPriv->hWnd == NULL)
- return;
-
- winInDestroyWindowsWindow = TRUE;
-
- /* Store the info we need to destroy after this window is gone */
- hInstance = (HINSTANCE) GetClassLong (pWinPriv->hWnd, GCL_HMODULE);
- hiconClass = (HICON) GetClassLong (pWinPriv->hWnd, GCL_HICON);
- hiconSmClass = (HICON) GetClassLong (pWinPriv->hWnd, GCL_HICONSM);
- iReturn = GetClassName (pWinPriv->hWnd, pszClass, 512);
-
- SetProp (pWinPriv->hWnd, WIN_WINDOW_PROP, NULL);
- /* Destroy the Windows window */
- DestroyWindow (pWinPriv->hWnd);
-
- /* Null our handle to the Window so referencing it will cause an error */
- pWinPriv->hWnd = NULL;
-
- /* Process all messages on our queue */
- while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
- {
- if (g_hDlgDepthChange == 0 || !IsDialogMessage (g_hDlgDepthChange, &msg))
- {
- DispatchMessage (&msg);
- }
- }
-
- /* Only if we were able to get the name */
- if (iReturn)
- {
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winDestroyWindowsWindow - Unregistering %s: ", pszClass);
-#endif
- iReturn = UnregisterClass (pszClass, hInstance);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winDestroyWindowsWindow - %d Deleting Icon: ", iReturn);
-#endif
-
- winDestroyIcon(hiconClass);
- winDestroyIcon(hiconSmClass);
- }
-
- winInDestroyWindowsWindow = oldstate;
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("-winDestroyWindowsWindow\n");
-#endif
-}
-
-
-/*
- * winUpdateWindowsWindow - Redisplay/redraw a Windows window
- * associated with an X window
- */
-
-static void
-winUpdateWindowsWindow (WindowPtr pWin)
-{
- winWindowPriv(pWin);
- HWND hWnd = pWinPriv->hWnd;
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winUpdateWindowsWindow\n");
-#endif
-
- /* Check if the Windows window's parents have been destroyed */
- if (pWin->parent != NULL
- && pWin->parent->parent == NULL
- && pWin->mapped)
- {
- /* Create the Windows window if it has been destroyed */
- if (hWnd == NULL)
- {
- winCreateWindowsWindow (pWin);
- assert (pWinPriv->hWnd != NULL);
- }
-
- /* Display the window without activating it */
- ShowWindow (pWinPriv->hWnd, SW_SHOWNOACTIVATE);
-
- /* Send first paint message */
- UpdateWindow (pWinPriv->hWnd);
- }
- else if (hWnd != NULL)
- {
- /* Destroy the Windows window if its parents are destroyed */
- winDestroyWindowsWindow (pWin);
- assert (pWinPriv->hWnd == NULL);
- }
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("-winUpdateWindowsWindow\n");
-#endif
-}
-
-
-/*
- * winGetWindowID -
- */
-
-XID
-winGetWindowID (WindowPtr pWin)
-{
- WindowIDPairRec wi = {pWin, 0};
- ClientPtr c = wClient(pWin);
-
- /* */
- FindClientResourcesByType (c, RT_WINDOW, winFindWindow, &wi);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winGetWindowID - Window ID: %d\n", wi.id);
-#endif
-
- return wi.id;
-}
-
-
-/*
- * winFindWindow -
- */
-
-static void
-winFindWindow (pointer value, XID id, pointer cdata)
-{
- WindowIDPairPtr wi = (WindowIDPairPtr)cdata;
-
- if (value == wi->value)
- {
- wi->id = id;
- }
-}
-
-
-/*
- * winReorderWindowsMultiWindow -
- */
-
-void
-winReorderWindowsMultiWindow (void)
-{
- HWND hwnd = NULL;
- WindowPtr pWin = NULL;
- WindowPtr pWinSib = NULL;
- XID vlist[2];
- static Bool fRestacking = FALSE; /* Avoid recusive calls to this function */
- DWORD dwCurrentProcessID = GetCurrentProcessId ();
- DWORD dwWindowProcessID = 0;
-
-#if CYGMULTIWINDOW_DEBUG || CYGWINDOWING_DEBUG
- winTrace ("winReorderWindowsMultiWindow\n");
-#endif
-
- if (fRestacking)
- {
- /* It is a recusive call so immediately exit */
-#if CYGWINDOWING_DEBUG
- ErrorF ("winReorderWindowsMultiWindow - "
- "exit because fRestacking == TRUE\n");
-#endif
- return;
- }
- fRestacking = TRUE;
-
- /* Loop through top level Window windows, descending in Z order */
- for ( hwnd = GetTopWindow (NULL);
- hwnd;
- hwnd = GetNextWindow (hwnd, GW_HWNDNEXT) )
- {
- /* Don't take care of other Cygwin/X process's windows */
- GetWindowThreadProcessId (hwnd, &dwWindowProcessID);
-
- if ( GetProp (hwnd, WIN_WINDOW_PROP)
- && (dwWindowProcessID == dwCurrentProcessID)
- && !IsIconic (hwnd) ) /* ignore minimized windows */
- {
- pWinSib = pWin;
- pWin = GetProp (hwnd, WIN_WINDOW_PROP);
-
- if (!pWinSib)
- { /* 1st window - raise to the top */
- vlist[0] = Above;
-
- ConfigureWindow (pWin, CWStackMode, vlist, wClient(pWin));
- }
- else
- { /* 2nd or deeper windows - just below the previous one */
- vlist[0] = winGetWindowID (pWinSib);
- vlist[1] = Below;
-
- ConfigureWindow (pWin, CWSibling | CWStackMode,
- vlist, wClient(pWin));
- }
- }
- }
-
- fRestacking = FALSE;
-}
-
-
-/*
- * winMinimizeWindow - Minimize in response to WM_CHANGE_STATE
- */
-
-void
-winMinimizeWindow (Window id)
-{
- WindowPtr pWin;
- winPrivWinPtr pWinPriv;
-#ifdef XWIN_MULTIWINDOWEXTWM
- win32RootlessWindowPtr pRLWinPriv;
-#endif
- HWND hWnd;
- ScreenPtr pScreen = NULL;
- winPrivScreenPtr pScreenPriv = NULL;
- winScreenInfo *pScreenInfo = NULL;
-
-#if CYGWINDOWING_DEBUG
- ErrorF ("winMinimizeWindow\n");
-#endif
-
- pWin = LookupIDByType (id, RT_WINDOW);
- if (!pWin)
- {
- ErrorF("%s: NULL pWin. Leaving\n", __FUNCTION__);
- return;
- }
-
- pScreen = pWin->drawable.pScreen;
- if (pScreen) pScreenPriv = winGetScreenPriv(pScreen);
- if (pScreenPriv) pScreenInfo = pScreenPriv->pScreenInfo;
-
-#ifdef XWIN_MULTIWINDOWEXTWM
- if (pScreenPriv && pScreenInfo->fInternalWM)
- {
- pRLWinPriv = (win32RootlessWindowPtr) RootlessFrameForWindow (pWin, FALSE);
- hWnd = pRLWinPriv->hWnd;
- }
- else
-#else
- if (pScreenPriv)
-#endif
- {
- pWinPriv = winGetWindowPriv (pWin);
- hWnd = pWinPriv->hWnd;
- }
-
- ShowWindow (hWnd, SW_MINIMIZE);
-}
-
-
-/*
- * CopyWindow - See Porting Layer Definition - p. 39
- */
-void
-winCopyWindowMultiWindow (WindowPtr pWin, DDXPointRec oldpt,
- RegionPtr oldRegion)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGWINDOWING_DEBUG
- ErrorF ("CopyWindowMultiWindow\n");
-#endif
- WIN_UNWRAP(CopyWindow);
- (*pScreen->CopyWindow)(pWin, oldpt, oldRegion);
- WIN_WRAP(CopyWindow, winCopyWindowMultiWindow);
-}
-
-
-/*
- * MoveWindow - See Porting Layer Definition - p. 42
- */
-void
-winMoveWindowMultiWindow (WindowPtr pWin, int x, int y,
- WindowPtr pSib, VTKind kind)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGWINDOWING_DEBUG
- ErrorF ("MoveWindowMultiWindow to (%d, %d)\n", x, y);
-#endif
-
- WIN_UNWRAP(MoveWindow);
- (*pScreen->MoveWindow)(pWin, x, y, pSib, kind);
- WIN_WRAP(MoveWindow, winMoveWindowMultiWindow);
-}
-
-
-/*
- * ResizeWindow - See Porting Layer Definition - p. 42
- */
-void
-winResizeWindowMultiWindow (WindowPtr pWin, int x, int y, unsigned int w,
- unsigned int h, WindowPtr pSib)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGWINDOWING_DEBUG
- ErrorF ("ResizeWindowMultiWindow to (%d, %d) - %dx%d\n", x, y, w, h);
-#endif
- WIN_UNWRAP(ResizeWindow);
- (*pScreen->ResizeWindow)(pWin, x, y, w, h, pSib);
- WIN_WRAP(ResizeWindow, winResizeWindowMultiWindow);
-}
-
-
-/*
- * winAdjustXWindow
- *
- * Move and resize X window with respect to corresponding Windows window.
- * This is called from WM_MOVE/WM_SIZE handlers when the user performs
- * any windowing operation (move, resize, minimize, maximize, restore).
- *
- * The functionality is the inverse of winPositionWindowMultiWindow, which
- * adjusts Windows window with respect to X window.
- */
-int
-winAdjustXWindow (WindowPtr pWin, HWND hwnd)
-{
- RECT rcDraw; /* Rect made from pWin->drawable to be adjusted */
- RECT rcWin; /* The source: WindowRect from hwnd */
- DrawablePtr pDraw;
- XID vlist[4];
- LONG dX, dY, dW, dH, x, y;
- DWORD dwStyle, dwExStyle;
-
-#define WIDTH(rc) (rc.right - rc.left)
-#define HEIGHT(rc) (rc.bottom - rc.top)
-
-#if CYGWINDOWING_DEBUG
- ErrorF ("winAdjustXWindow\n");
-#endif
-
- if (IsIconic (hwnd))
- {
-#if CYGWINDOWING_DEBUG
- ErrorF ("\timmediately return because the window is iconized\n");
-#endif
- /*
- * If the Windows window is minimized, its WindowRect has
- * meaningless values so we don't adjust X window to it.
- * Instead we put the X window to the bottom in Z order to
- * be obscured by other windows.
- */
- vlist[0] = Below;
- return ConfigureWindow (pWin, CWStackMode, vlist, wClient(pWin));
- }
-
- pDraw = &pWin->drawable;
-
- /* Calculate the window rect from the drawable */
- x = pDraw->x + GetSystemMetrics (SM_XVIRTUALSCREEN);
- y = pDraw->y + GetSystemMetrics (SM_YVIRTUALSCREEN);
- SetRect (&rcDraw, x, y, x + pDraw->width, y + pDraw->height);
-#ifdef CYGMULTIWINDOW_DEBUG
- winDebug("\tDrawable extend {%d, %d, %d, %d}, {%d, %d}\n",
- rcDraw.left, rcDraw.top, rcDraw.right, rcDraw.bottom,
- rcDraw.right - rcDraw.left, rcDraw.bottom - rcDraw.top);
-#endif
- dwExStyle = GetWindowLongPtr (hwnd, GWL_EXSTYLE);
- dwStyle = GetWindowLongPtr (hwnd, GWL_STYLE);
-#ifdef CYGMULTIWINDOW_DEBUG
- winDebug("\tWindowStyle: %08x %08x\n", dwStyle, dwExStyle);
-#endif
- AdjustWindowRectEx (&rcDraw, dwStyle, FALSE, dwExStyle);
-
- /* The source of adjust */
- GetWindowRect (hwnd, &rcWin);
-#ifdef CYGMULTIWINDOW_DEBUG
- winDebug("\tWindow extend {%d, %d, %d, %d}, {%d, %d}\n",
- rcWin.left, rcWin.top, rcWin.right, rcWin.bottom,
- rcWin.right - rcWin.left, rcWin.bottom - rcWin.top);
- winDebug("\tDraw extend {%d, %d, %d, %d}, {%d, %d}\n",
- rcDraw.left, rcDraw.top, rcDraw.right, rcDraw.bottom,
- rcDraw.right - rcDraw.left, rcDraw.bottom - rcDraw.top);
-#endif
-
- if (EqualRect (&rcDraw, &rcWin)) {
- /* Bail if no adjust is needed */
-#if CYGWINDOWING_DEBUG
- ErrorF ("\treturn because already adjusted\n");
-#endif
- return 0;
- }
-
- /* Calculate delta values */
- dX = rcWin.left - rcDraw.left;
- dY = rcWin.top - rcDraw.top;
- dW = WIDTH(rcWin) - WIDTH(rcDraw);
- dH = HEIGHT(rcWin) - HEIGHT(rcDraw);
-
- /*
- * Adjust.
- * We may only need to move (vlist[0] and [1]), or only resize
- * ([2] and [3]) but currently we set all the parameters and leave
- * the decision to ConfigureWindow. The reason is code simplicity.
- */
- vlist[0] = pDraw->x + dX - wBorderWidth(pWin);
- vlist[1] = pDraw->y + dY - wBorderWidth(pWin);
- vlist[2] = pDraw->width + dW;
- vlist[3] = pDraw->height + dH;
-#if CYGWINDOWING_DEBUG
- ErrorF ("\tConfigureWindow to (%ld, %ld) - %ldx%ld\n", vlist[0], vlist[1],
- vlist[2], vlist[3]);
-#endif
- return ConfigureWindow (pWin, CWX | CWY | CWWidth | CWHeight,
- vlist, wClient(pWin));
-
-#undef WIDTH
-#undef HEIGHT
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowwm.c b/nx-X11/programs/Xserver/hw/xwin/winmultiwindowwm.c
deleted file mode 100644
index 03f179345..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowwm.c
+++ /dev/null
@@ -1,1444 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Kensuke Matsuzaki
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winwindow.c,v 1.5 2002/11/07 10:31:32 alanh Exp $ */
-
-/* X headers */
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#ifdef __CYGWIN__
-#include <sys/select.h>
-#endif
-#include <fcntl.h>
-#include <setjmp.h>
-#define HANDLE void *
-#include <pthread.h>
-#undef HANDLE
-#include <X11/X.h>
-#include <X11/Xatom.h>
-#include <X11/Xlib.h>
-#include <X11/Xlocale.h>
-#include <X11/Xproto.h>
-#include <X11/Xutil.h>
-#include <X11/cursorfont.h>
-
-/* Windows headers */
-#ifdef __CYGWIN__
-/* Fixups to prevent collisions between Windows and X headers */
-#define ATOM DWORD
-
-#include <windows.h>
-#else
-#include <Xwindows.h>
-#endif
-
-/* Local headers */
-#include "objbase.h"
-#include "ddraw.h"
-#include "winwindow.h"
-#ifdef XWIN_MULTIWINDOWEXTWM
-#include "windowswmstr.h"
-#endif
-
-extern void winDebug(const char *format, ...);
-
-#ifndef CYGDEBUG
-#define CYGDEBUG NO
-#endif
-
-/*
- * Constant defines
- */
-
-#define WIN_CONNECT_RETRIES 5
-#define WIN_CONNECT_DELAY 5
-#ifdef HAS_DEVWINDOWS
-# define WIN_MSG_QUEUE_FNAME "/dev/windows"
-#endif
-#define WIN_JMP_OKAY 0
-#define WIN_JMP_ERROR_IO 2
-
-
-/*
- * Local structures
- */
-
-typedef struct _WMMsgNodeRec {
- winWMMessageRec msg;
- struct _WMMsgNodeRec *pNext;
-} WMMsgNodeRec, *WMMsgNodePtr;
-
-typedef struct _WMMsgQueueRec {
- struct _WMMsgNodeRec *pHead;
- struct _WMMsgNodeRec *pTail;
- pthread_mutex_t pmMutex;
- pthread_cond_t pcNotEmpty;
- int nQueueSize;
-} WMMsgQueueRec, *WMMsgQueuePtr;
-
-typedef struct _WMInfo {
- Display *pDisplay;
- WMMsgQueueRec wmMsgQueue;
- Atom atmWmProtos;
- Atom atmWmDelete;
- Atom atmPrivMap;
- Bool fAllowOtherWM;
-} WMInfoRec, *WMInfoPtr;
-
-typedef struct _WMProcArgRec {
- DWORD dwScreen;
- WMInfoPtr pWMInfo;
- pthread_mutex_t *ppmServerStarted;
-} WMProcArgRec, *WMProcArgPtr;
-
-typedef struct _XMsgProcArgRec {
- Display *pDisplay;
- DWORD dwScreen;
- WMInfoPtr pWMInfo;
- pthread_mutex_t *ppmServerStarted;
- HWND hwndScreen;
-} XMsgProcArgRec, *XMsgProcArgPtr;
-
-
-/*
- * References to external symbols
- */
-
-extern char *display;
-extern void ErrorF (const char* /*f*/, ...);
-
-
-/*
- * Prototypes for local functions
- */
-
-static void
-PushMessage (WMMsgQueuePtr pQueue, WMMsgNodePtr pNode);
-
-static WMMsgNodePtr
-PopMessage (WMMsgQueuePtr pQueue, WMInfoPtr pWMInfo);
-
-static Bool
-InitQueue (WMMsgQueuePtr pQueue);
-
-static void
-GetWindowName (Display * pDpy, Window iWin, char **ppName);
-
-static int
-SendXMessage (Display *pDisplay, Window iWin, Atom atmType, long nData);
-
-static void
-UpdateName (WMInfoPtr pWMInfo, Window iWindow);
-
-static void*
-winMultiWindowWMProc (void* pArg);
-
-static int
-winMultiWindowWMErrorHandler (Display *pDisplay, XErrorEvent *pErr);
-
-static int
-winMultiWindowWMIOErrorHandler (Display *pDisplay);
-
-static void *
-winMultiWindowXMsgProc (void *pArg);
-
-static int
-winMultiWindowXMsgProcErrorHandler (Display *pDisplay, XErrorEvent *pErr);
-
-static int
-winMultiWindowXMsgProcIOErrorHandler (Display *pDisplay);
-
-static int
-winRedirectErrorHandler (Display *pDisplay, XErrorEvent *pErr);
-
-static void
-winInitMultiWindowWM (WMInfoPtr pWMInfo, WMProcArgPtr pProcArg);
-
-#if 0
-static void
-PreserveWin32Stack(WMInfoPtr pWMInfo, Window iWindow, UINT direction);
-#endif
-
-static Bool
-CheckAnotherWindowManager (Display *pDisplay, DWORD dwScreen);
-
-
-/*
- * Local globals
- */
-
-static jmp_buf g_jmpWMEntry;
-static jmp_buf g_jmpXMsgProcEntry;
-static Bool g_shutdown = FALSE;
-static Bool redirectError = FALSE;
-static Bool g_fAnotherWMRunnig = FALSE;
-
-/*
- * PushMessage - Push a message onto the queue
- */
-
-static void
-PushMessage (WMMsgQueuePtr pQueue, WMMsgNodePtr pNode)
-{
-
- /* Lock the queue mutex */
- pthread_mutex_lock (&pQueue->pmMutex);
-
- pNode->pNext = NULL;
-
- if (pQueue->pTail != NULL)
- {
- pQueue->pTail->pNext = pNode;
- }
- pQueue->pTail = pNode;
-
- if (pQueue->pHead == NULL)
- {
- pQueue->pHead = pNode;
- }
-
-
-#if 0
- switch (pNode->msg.msg)
- {
- case WM_WM_MOVE:
- ErrorF ("\tWM_WM_MOVE\n");
- break;
- case WM_WM_SIZE:
- ErrorF ("\tWM_WM_SIZE\n");
- break;
- case WM_WM_RAISE:
- ErrorF ("\tWM_WM_RAISE\n");
- break;
- case WM_WM_LOWER:
- ErrorF ("\tWM_WM_LOWER\n");
- break;
- case WM_WM_MAP:
- ErrorF ("\tWM_WM_MAP\n");
- break;
- case WM_WM_UNMAP:
- ErrorF ("\tWM_WM_UNMAP\n");
- break;
- case WM_WM_KILL:
- ErrorF ("\tWM_WM_KILL\n");
- break;
- case WM_WM_ACTIVATE:
- ErrorF ("\tWM_WM_ACTIVATE\n");
- break;
- default:
- ErrorF ("\tUnknown Message.\n");
- break;
- }
-#endif
-
- /* Increase the count of elements in the queue by one */
- ++(pQueue->nQueueSize);
-
- /* Release the queue mutex */
- pthread_mutex_unlock (&pQueue->pmMutex);
-
- /* Signal that the queue is not empty */
- pthread_cond_signal (&pQueue->pcNotEmpty);
-}
-
-
-#if CYGMULTIWINDOW_DEBUG
-/*
- * QueueSize - Return the size of the queue
- */
-
-static int
-QueueSize (WMMsgQueuePtr pQueue)
-{
- WMMsgNodePtr pNode;
- int nSize = 0;
-
- /* Loop through all elements in the queue */
- for (pNode = pQueue->pHead; pNode != NULL; pNode = pNode->pNext)
- ++nSize;
-
- return nSize;
-}
-#endif
-
-
-/*
- * PopMessage - Pop a message from the queue
- */
-
-static WMMsgNodePtr
-PopMessage (WMMsgQueuePtr pQueue, WMInfoPtr pWMInfo)
-{
- WMMsgNodePtr pNode;
-
- /* Lock the queue mutex */
- pthread_mutex_lock (&pQueue->pmMutex);
-
- /* Wait for --- */
- while (pQueue->pHead == NULL)
- {
- pthread_cond_wait (&pQueue->pcNotEmpty, &pQueue->pmMutex);
- }
-
- pNode = pQueue->pHead;
- if (pQueue->pHead != NULL)
- {
- pQueue->pHead = pQueue->pHead->pNext;
- }
-
- if (pQueue->pTail == pNode)
- {
- pQueue->pTail = NULL;
- }
-
- /* Drop the number of elements in the queue by one */
- --(pQueue->nQueueSize);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("Queue Size %d %d\n", pQueue->nQueueSize, QueueSize(pQueue));
-#endif
-
- /* Release the queue mutex */
- pthread_mutex_unlock (&pQueue->pmMutex);
-
- return pNode;
-}
-
-
-#if 0
-/*
- * HaveMessage -
- */
-
-static Bool
-HaveMessage (WMMsgQueuePtr pQueue, UINT msg, Window iWindow)
-{
- WMMsgNodePtr pNode;
-
- for (pNode = pQueue->pHead; pNode != NULL; pNode = pNode->pNext)
- {
- if (pNode->msg.msg==msg && pNode->msg.iWindow==iWindow)
- return True;
- }
-
- return False;
-}
-#endif
-
-
-/*
- * InitQueue - Initialize the Window Manager message queue
- */
-
-static
-Bool
-InitQueue (WMMsgQueuePtr pQueue)
-{
- /* Check if the pQueue pointer is NULL */
- if (pQueue == NULL)
- {
- ErrorF ("InitQueue - pQueue is NULL. Exiting.\n");
- return FALSE;
- }
-
- /* Set the head and tail to NULL */
- pQueue->pHead = NULL;
- pQueue->pTail = NULL;
-
- /* There are no elements initially */
- pQueue->nQueueSize = 0;
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("InitQueue - Queue Size %d %d\n", pQueue->nQueueSize,
- QueueSize(pQueue));
-#endif
-
- ErrorF ("InitQueue - Calling pthread_mutex_init\n");
-
- /* Create synchronization objects */
- pthread_mutex_init (&pQueue->pmMutex, NULL);
-
- ErrorF ("InitQueue - pthread_mutex_init returned\n");
- ErrorF ("InitQueue - Calling pthread_cond_init\n");
-
- pthread_cond_init (&pQueue->pcNotEmpty, NULL);
-
- ErrorF ("InitQueue - pthread_cond_init returned\n");
-
- return TRUE;
-}
-
-
-/*
- * GetWindowName - Retrieve the title of an X Window
- */
-
-static void
-GetWindowName (Display *pDisplay, Window iWin, char **ppName)
-{
- int nResult, nNum;
- char **ppList;
- XTextProperty xtpName;
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("GetWindowName\n");
-#endif
-
- /* Intialize ppName to NULL */
- *ppName = NULL;
-
- /* Try to get --- */
- nResult = XGetWMName (pDisplay, iWin, &xtpName);
- if (!nResult || !xtpName.value || !xtpName.nitems)
- {
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("GetWindowName - XGetWMName failed. No name.\n");
-#endif
- return;
- }
-
- /* */
- if (xtpName.encoding == XA_STRING)
- {
- /* */
- if (xtpName.value)
- {
- int size = xtpName.nitems * (xtpName.format >> 3);
- *ppName = malloc(size + 1);
- strncpy(*ppName, xtpName.value, size);
- (*ppName)[size] = 0;
- XFree (xtpName.value);
- }
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("GetWindowName - XA_STRING %s\n", *ppName);
-#endif
- }
- else
- {
- XmbTextPropertyToTextList (pDisplay, &xtpName, &ppList, &nNum);
-
- /* */
- if (nNum && ppList && *ppList)
- {
- *ppName = strdup (*ppList);
- XFreeStringList (ppList);
- }
- XFree (xtpName.value);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("GetWindowName - %s %s\n",
- XGetAtomName (pDisplay, xtpName.encoding), *ppName);
-#endif
- }
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("GetWindowName - Returning\n");
-#endif
-}
-
-
-/*
- * Send a message to the X server from the WM thread
- */
-
-static int
-SendXMessage (Display *pDisplay, Window iWin, Atom atmType, long nData)
-{
- XEvent e;
-
- /* Prepare the X event structure */
- e.type = ClientMessage;
- e.xclient.window = iWin;
- e.xclient.message_type = atmType;
- e.xclient.format = 32;
- e.xclient.data.l[0] = nData;
- e.xclient.data.l[1] = CurrentTime;
-
- /* Send the event to X */
- return XSendEvent (pDisplay, iWin, False, NoEventMask, &e);
-}
-
-
-/*
- * Updates the name of a HWND according to its X WM_NAME property
- */
-
-static void
-UpdateName (WMInfoPtr pWMInfo, Window iWindow)
-{
- char *pszName;
- Atom atmType;
- int fmtRet;
- unsigned long items, remain;
- HWND *retHwnd, hWnd;
- XWindowAttributes attr;
-
- hWnd = 0;
-
- /* See if we can get the cached HWND for this window... */
- if (XGetWindowProperty (pWMInfo->pDisplay,
- iWindow,
- pWMInfo->atmPrivMap,
- 0,
- 1,
- False,
- XA_INTEGER,//pWMInfo->atmPrivMap,
- &atmType,
- &fmtRet,
- &items,
- &remain,
- (unsigned char **) &retHwnd) == Success)
- {
- if (retHwnd)
- {
- hWnd = *retHwnd;
- XFree (retHwnd);
- }
- }
-
- /* Some sanity checks */
- if (!hWnd) return;
- if (!IsWindow (hWnd)) return;
-
- /* Set the Windows window name */
- GetWindowName (pWMInfo->pDisplay, iWindow, &pszName);
- if (pszName)
- {
- /* Get the window attributes */
- XGetWindowAttributes (pWMInfo->pDisplay,
- iWindow,
- &attr);
- if (!attr.override_redirect)
- {
- SetWindowText (hWnd, pszName);
- winUpdateIcon (iWindow);
- }
-
- free (pszName);
- }
-}
-
-
-#if 0
-/*
- * Fix up any differences between the X11 and Win32 window stacks
- * starting at the window passed in
- */
-static void
-PreserveWin32Stack(WMInfoPtr pWMInfo, Window iWindow, UINT direction)
-{
- Atom atmType;
- int fmtRet;
- unsigned long items, remain;
- HWND hWnd, *retHwnd;
- DWORD myWinProcID, winProcID;
- Window xWindow;
- WINDOWPLACEMENT wndPlace;
-
- hWnd = NULL;
- /* See if we can get the cached HWND for this window... */
- if (XGetWindowProperty (pWMInfo->pDisplay,
- iWindow,
- pWMInfo->atmPrivMap,
- 0,
- 1,
- False,
- XA_INTEGER,//pWMInfo->atmPrivMap,
- &atmType,
- &fmtRet,
- &items,
- &remain,
- (unsigned char **) &retHwnd) == Success)
- {
- if (retHwnd)
- {
- hWnd = *retHwnd;
- XFree (retHwnd);
- }
- }
-
- if (!hWnd) return;
-
- GetWindowThreadProcessId (hWnd, &myWinProcID);
- hWnd = GetNextWindow (hWnd, direction);
-
- while (hWnd) {
- GetWindowThreadProcessId (hWnd, &winProcID);
- if (winProcID == myWinProcID)
- {
- wndPlace.length = sizeof(WINDOWPLACEMENT);
- GetWindowPlacement (hWnd, &wndPlace);
- if ( !(wndPlace.showCmd==SW_HIDE ||
- wndPlace.showCmd==SW_MINIMIZE) )
- {
- xWindow = (Window)GetProp (hWnd, WIN_WID_PROP);
- if (xWindow)
- {
- if (direction==GW_HWNDPREV)
- XRaiseWindow (pWMInfo->pDisplay, xWindow);
- else
- XLowerWindow (pWMInfo->pDisplay, xWindow);
- }
- }
- }
- hWnd = GetNextWindow(hWnd, direction);
- }
-}
-#endif /* PreserveWin32Stack */
-
-
-/*
- * winMultiWindowWMProc
- */
-
-static void *
-winMultiWindowWMProc (void *pArg)
-{
- WMProcArgPtr pProcArg = (WMProcArgPtr)pArg;
- WMInfoPtr pWMInfo = pProcArg->pWMInfo;
-
- /* Initialize the Window Manager */
- winInitMultiWindowWM (pWMInfo, pProcArg);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winMultiWindowWMProc ()\n");
-#endif
-
- /* Loop until we explicity break out */
- for (;;)
- {
- WMMsgNodePtr pNode;
-
- if(g_fAnotherWMRunnig)/* Another Window manager exists. */
- {
- Sleep (1000);
- continue;
- }
-
- /* Pop a message off of our queue */
- pNode = PopMessage (&pWMInfo->wmMsgQueue, pWMInfo);
- if (pNode == NULL)
- {
- /* Bail if PopMessage returns without a message */
- /* NOTE: Remember that PopMessage is a blocking function. */
- ErrorF ("winMultiWindowWMProc - Queue is Empty? Exiting.\n");
- pthread_exit (NULL);
- }
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winMultiWindowWMProc - %d ms MSG: %d ID: %d\n",
- GetTickCount (), (int)pNode->msg.msg, (int)pNode->msg.dwID);
-#endif
-
- /* Branch on the message type */
- switch (pNode->msg.msg)
- {
-#if 0
- case WM_WM_MOVE:
- ErrorF ("\tWM_WM_MOVE\n");
- break;
-
- case WM_WM_SIZE:
- ErrorF ("\tWM_WM_SIZE\n");
- break;
-#endif
-
- case WM_WM_RAISE:
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("\tWM_WM_RAISE\n");
-#endif
- /* Raise the window */
- XRaiseWindow (pWMInfo->pDisplay, pNode->msg.iWindow);
-#if 0
- PreserveWin32Stack (pWMInfo, pNode->msg.iWindow, GW_HWNDPREV);
-#endif
- break;
-
- case WM_WM_LOWER:
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("\tWM_WM_LOWER\n");
-#endif
-
- /* Lower the window */
- XLowerWindow (pWMInfo->pDisplay, pNode->msg.iWindow);
- break;
-
- case WM_WM_MAP:
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("\tWM_WM_MAP\n");
-#endif
- /* Put a note as to the HWND associated with this Window */
- XChangeProperty (pWMInfo->pDisplay,
- pNode->msg.iWindow,
- pWMInfo->atmPrivMap,
- XA_INTEGER,//pWMInfo->atmPrivMap,
- 32,
- PropModeReplace,
- (unsigned char *) &(pNode->msg.hwndWindow),
- 1);
- UpdateName (pWMInfo, pNode->msg.iWindow);
- winUpdateIcon (pNode->msg.iWindow);
-#if 0
- /* Handles the case where there are AOT windows above it in W32 */
- PreserveWin32Stack (pWMInfo, pNode->msg.iWindow, GW_HWNDPREV);
-#endif
- break;
-
- case WM_WM_UNMAP:
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("\tWM_WM_UNMAP\n");
-#endif
-
- /* Unmap the window */
- XUnmapWindow (pWMInfo->pDisplay, pNode->msg.iWindow);
- break;
-
- case WM_WM_KILL:
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("\tWM_WM_KILL\n");
-#endif
- {
- int i, n, found = 0;
- Atom *protocols;
-
- /* --- */
- if (XGetWMProtocols (pWMInfo->pDisplay,
- pNode->msg.iWindow,
- &protocols,
- &n))
- {
- for (i = 0; i < n; ++i)
- if (protocols[i] == pWMInfo->atmWmDelete)
- ++found;
-
- XFree (protocols);
- }
-
- /* --- */
- if (found)
- SendXMessage (pWMInfo->pDisplay,
- pNode->msg.iWindow,
- pWMInfo->atmWmProtos,
- pWMInfo->atmWmDelete);
- else
- XKillClient (pWMInfo->pDisplay,
- pNode->msg.iWindow);
- }
- break;
-
- case WM_WM_ACTIVATE:
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("\tWM_WM_ACTIVATE\n");
-#endif
-
- /* Set the input focus */
- XSetInputFocus (pWMInfo->pDisplay,
- pNode->msg.iWindow,
- RevertToPointerRoot,
- CurrentTime);
- break;
-
- case WM_WM_NAME_EVENT:
- UpdateName (pWMInfo, pNode->msg.iWindow);
- break;
-
- case WM_WM_HINTS_EVENT:
- winUpdateIcon (pNode->msg.iWindow);
- break;
-
- case WM_WM_CHANGE_STATE:
- /* Minimize the window in Windows */
- winMinimizeWindow (pNode->msg.iWindow);
- break;
-
- default:
- ErrorF ("winMultiWindowWMProc - Unknown Message. Exiting.\n");
- pthread_exit (NULL);
- break;
- }
-
- /* Free the retrieved message */
- free (pNode);
-
- /* Flush any pending events on our display */
- XFlush (pWMInfo->pDisplay);
- }
-
- /* Free the condition variable */
- pthread_cond_destroy (&pWMInfo->wmMsgQueue.pcNotEmpty);
-
- /* Free the mutex variable */
- pthread_mutex_destroy (&pWMInfo->wmMsgQueue.pmMutex);
-
- /* Free the passed-in argument */
- free (pProcArg);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF("-winMultiWindowWMProc ()\n");
-#endif
-}
-
-
-/*
- * X message procedure
- */
-
-static void *
-winMultiWindowXMsgProc (void *pArg)
-{
- winWMMessageRec msg;
- XMsgProcArgPtr pProcArg = (XMsgProcArgPtr) pArg;
- char pszDisplay[512];
- int iRetries;
- XEvent event;
- Atom atmWmName;
- Atom atmWmHints;
- Atom atmWmChange;
- int iReturn;
- XIconSize *xis;
-
- ErrorF ("winMultiWindowXMsgProc - Hello\n");
-
- /* Check that argument pointer is not invalid */
- if (pProcArg == NULL)
- {
- ErrorF ("winMultiWindowXMsgProc - pProcArg is NULL. Exiting.\n");
- pthread_exit (NULL);
- }
-
- ErrorF ("winMultiWindowXMsgProc - Calling pthread_mutex_lock ()\n");
-
- /* Grab the server started mutex - pause until we get it */
- iReturn = pthread_mutex_lock (pProcArg->ppmServerStarted);
- if (iReturn != 0)
- {
- ErrorF ("winMultiWindowXMsgProc - pthread_mutex_lock () failed: %d. "
- "Exiting.\n",
- iReturn);
- pthread_exit (NULL);
- }
-
- ErrorF ("winMultiWindowXMsgProc - pthread_mutex_lock () returned.\n");
-
- /* Allow multiple threads to access Xlib */
- if (XInitThreads () == 0)
- {
- ErrorF ("winMultiWindowXMsgProc - XInitThreads () failed. Exiting.\n");
- pthread_exit (NULL);
- }
-
- /* See if X supports the current locale */
- if (XSupportsLocale () == False)
- {
- ErrorF ("winMultiWindowXMsgProc - Locale not supported by X. "
- "Exiting.\n");
- pthread_exit (NULL);
- }
-
- /* Release the server started mutex */
- pthread_mutex_unlock (pProcArg->ppmServerStarted);
-
- ErrorF ("winMultiWindowXMsgProc - pthread_mutex_unlock () returned.\n");
-
- /* Set jump point for IO Error exits */
- iReturn = setjmp (g_jmpXMsgProcEntry);
-
- /* Check if we should continue operations */
- if (iReturn != WIN_JMP_ERROR_IO
- && iReturn != WIN_JMP_OKAY)
- {
- /* setjmp returned an unknown value, exit */
- ErrorF ("winInitMultiWindowXMsgProc - setjmp returned: %d. Exiting.\n",
- iReturn);
- pthread_exit (NULL);
- }
- else if (iReturn == WIN_JMP_ERROR_IO)
- {
- ErrorF ("winInitMultiWindowXMsgProc - Caught IO Error. Exiting.\n");
- pthread_exit (NULL);
- }
-
- /* Install our error handler */
- XSetErrorHandler (winMultiWindowXMsgProcErrorHandler);
- XSetIOErrorHandler (winMultiWindowXMsgProcIOErrorHandler);
-
- /* Setup the display connection string x */
- snprintf (pszDisplay,
- 512, "127.0.0.1:%s.%d", display, (int)pProcArg->dwScreen);
-
- /* Print the display connection string */
- ErrorF ("winMultiWindowXMsgProc - DISPLAY=%s\n", pszDisplay);
-
- /* Initialize retry count */
- iRetries = 0;
-
- /* Open the X display */
- do
- {
- /* Try to open the display */
- pProcArg->pDisplay = XOpenDisplay (pszDisplay);
- if (pProcArg->pDisplay == NULL)
- {
- ErrorF ("winMultiWindowXMsgProc - Could not open display, try: %d, "
- "sleeping: %d\n\f",
- iRetries + 1, WIN_CONNECT_DELAY);
- ++iRetries;
- sleep (WIN_CONNECT_DELAY);
- continue;
- }
- else
- break;
- }
- while (pProcArg->pDisplay == NULL && iRetries < WIN_CONNECT_RETRIES);
-
- /* Make sure that the display opened */
- if (pProcArg->pDisplay == NULL)
- {
- ErrorF ("winMultiWindowXMsgProc - Failed opening the display. "
- "Exiting.\n");
- pthread_exit (NULL);
- }
-
- ErrorF ("winMultiWindowXMsgProc - XOpenDisplay () returned and "
- "successfully opened the display.\n");
-
- /* Check if another window manager is already running */
- if (pProcArg->pWMInfo->fAllowOtherWM)
- {
- g_fAnotherWMRunnig = CheckAnotherWindowManager (pProcArg->pDisplay, pProcArg->dwScreen);
- } else {
- redirectError = FALSE;
- XSetErrorHandler (winRedirectErrorHandler);
- XSelectInput(pProcArg->pDisplay,
- RootWindow (pProcArg->pDisplay, pProcArg->dwScreen),
- SubstructureNotifyMask | ButtonPressMask);
- XSync (pProcArg->pDisplay, 0);
- XSetErrorHandler (winMultiWindowXMsgProcErrorHandler);
- if (redirectError)
- {
- ErrorF ("winMultiWindowXMsgProc - "
- "another window manager is running. Exiting.\n");
- pthread_exit (NULL);
- }
- g_fAnotherWMRunnig = FALSE;
- }
-
- /* Set up the supported icon sizes */
- xis = XAllocIconSize ();
- if (xis)
- {
- xis->min_width = xis->min_height = 16;
- xis->max_width = xis->max_height = 48;
- xis->width_inc = xis->height_inc = 16;
- XSetIconSizes (pProcArg->pDisplay,
- RootWindow (pProcArg->pDisplay, pProcArg->dwScreen),
- xis,
- 1);
- XFree (xis);
- }
-
- atmWmName = XInternAtom (pProcArg->pDisplay,
- "WM_NAME",
- False);
- atmWmHints = XInternAtom (pProcArg->pDisplay,
- "WM_HINTS",
- False);
- atmWmChange = XInternAtom (pProcArg->pDisplay,
- "WM_CHANGE_STATE",
- False);
-
- /* Loop until we explicitly break out */
- while (1)
- {
- if (g_shutdown)
- break;
-
- if (pProcArg->pWMInfo->fAllowOtherWM && !XPending (pProcArg->pDisplay))
- {
- if (CheckAnotherWindowManager (pProcArg->pDisplay, pProcArg->dwScreen))
- {
- if (!g_fAnotherWMRunnig)
- {
- g_fAnotherWMRunnig = TRUE;
- SendMessage(*(HWND*)pProcArg->hwndScreen, WM_UNMANAGE, 0, 0);
- }
- }
- else
- {
- if (g_fAnotherWMRunnig)
- {
- g_fAnotherWMRunnig = FALSE;
- SendMessage(*(HWND*)pProcArg->hwndScreen, WM_MANAGE, 0, 0);
- }
- }
- Sleep (500);
- continue;
- }
-
- /* Fetch next event */
- XNextEvent (pProcArg->pDisplay, &event);
-
- /* Branch on event type */
- if (event.type == CreateNotify)
- {
- XWindowAttributes attr;
-
- XSelectInput (pProcArg->pDisplay,
- event.xcreatewindow.window,
- PropertyChangeMask);
-
- /* Get the window attributes */
- XGetWindowAttributes (pProcArg->pDisplay,
- event.xcreatewindow.window,
- &attr);
-
- if (!attr.override_redirect)
- XSetWindowBorderWidth(pProcArg->pDisplay,
- event.xcreatewindow.window,
- 0);
- }
- else if (event.type == PropertyNotify
- && event.xproperty.atom == atmWmName)
- {
- memset (&msg, 0, sizeof (msg));
-
- msg.msg = WM_WM_NAME_EVENT;
- msg.iWindow = event.xproperty.window;
-
- /* Other fields ignored */
- winSendMessageToWM (pProcArg->pWMInfo, &msg);
- }
- else if (event.type == PropertyNotify
- && event.xproperty.atom == atmWmHints)
- {
- memset (&msg, 0, sizeof (msg));
-
- msg.msg = WM_WM_HINTS_EVENT;
- msg.iWindow = event.xproperty.window;
-
- /* Other fields ignored */
- winSendMessageToWM (pProcArg->pWMInfo, &msg);
- }
- else if (event.type == ClientMessage
- && event.xclient.message_type == atmWmChange
- && event.xclient.data.l[0] == IconicState)
- {
- ErrorF ("winMultiWindowXMsgProc - WM_CHANGE_STATE - IconicState\n");
-
- memset (&msg, 0, sizeof (msg));
-
- msg.msg = WM_WM_CHANGE_STATE;
- msg.iWindow = event.xclient.window;
-
- winSendMessageToWM (pProcArg->pWMInfo, &msg);
- }
- }
-
- XCloseDisplay (pProcArg->pDisplay);
- pthread_exit (NULL);
-
-}
-
-
-/*
- * winInitWM - Entry point for the X server to spawn
- * the Window Manager thread. Called from
- * winscrinit.c/winFinishScreenInitFB ().
- */
-
-Bool
-winInitWM (void **ppWMInfo,
- pthread_t *ptWMProc,
- pthread_t *ptXMsgProc,
- pthread_mutex_t *ppmServerStarted,
- int dwScreen,
- HWND hwndScreen,
- BOOL allowOtherWM)
-{
- WMProcArgPtr pArg = (WMProcArgPtr) malloc (sizeof(WMProcArgRec));
- WMInfoPtr pWMInfo = (WMInfoPtr) malloc (sizeof(WMInfoRec));
- XMsgProcArgPtr pXMsgArg = (XMsgProcArgPtr) malloc (sizeof(XMsgProcArgRec));
-
- /* Bail if the input parameters are bad */
- if (pArg == NULL || pWMInfo == NULL)
- {
- ErrorF ("winInitWM - malloc failed.\n");
- return FALSE;
- }
-
- /* Zero the allocated memory */
- ZeroMemory (pArg, sizeof (WMProcArgRec));
- ZeroMemory (pWMInfo, sizeof (WMInfoRec));
- ZeroMemory (pXMsgArg, sizeof (XMsgProcArgRec));
-
- /* Set a return pointer to the Window Manager info structure */
- *ppWMInfo = pWMInfo;
- pWMInfo->fAllowOtherWM = allowOtherWM;
-
- /* Setup the argument structure for the thread function */
- pArg->dwScreen = dwScreen;
- pArg->pWMInfo = pWMInfo;
- pArg->ppmServerStarted = ppmServerStarted;
-
- /* Intialize the message queue */
- if (!InitQueue (&pWMInfo->wmMsgQueue))
- {
- ErrorF ("winInitWM - InitQueue () failed.\n");
- return FALSE;
- }
-
- /* Spawn a thread for the Window Manager */
- if (pthread_create (ptWMProc, NULL, winMultiWindowWMProc, pArg))
- {
- /* Bail if thread creation failed */
- ErrorF ("winInitWM - pthread_create failed for Window Manager.\n");
- return FALSE;
- }
-
- /* Spawn the XNextEvent thread, will send messages to WM */
- pXMsgArg->dwScreen = dwScreen;
- pXMsgArg->pWMInfo = pWMInfo;
- pXMsgArg->ppmServerStarted = ppmServerStarted;
- pXMsgArg->hwndScreen = hwndScreen;
- if (pthread_create (ptXMsgProc, NULL, winMultiWindowXMsgProc, pXMsgArg))
- {
- /* Bail if thread creation failed */
- ErrorF ("winInitWM - pthread_create failed on XMSG.\n");
- return FALSE;
- }
-
-#if CYGDEBUG || YES
- winDebug ("winInitWM - Returning.\n");
-#endif
-
- return TRUE;
-}
-
-
-/*
- * Window manager thread - setup
- */
-
-static void
-winInitMultiWindowWM (WMInfoPtr pWMInfo, WMProcArgPtr pProcArg)
-{
- int iRetries = 0;
- char pszDisplay[512];
- int iReturn;
-
- ErrorF ("winInitMultiWindowWM - Hello\n");
-
- /* Check that argument pointer is not invalid */
- if (pProcArg == NULL)
- {
- ErrorF ("winInitMultiWindowWM - pProcArg is NULL. Exiting.\n");
- pthread_exit (NULL);
- }
-
- ErrorF ("winInitMultiWindowWM - Calling pthread_mutex_lock ()\n");
-
- /* Grab our garbage mutex to satisfy pthread_cond_wait */
- iReturn = pthread_mutex_lock (pProcArg->ppmServerStarted);
- if (iReturn != 0)
- {
- ErrorF ("winInitMultiWindowWM - pthread_mutex_lock () failed: %d. "
- "Exiting.\n",
- iReturn);
- pthread_exit (NULL);
- }
-
- ErrorF ("winInitMultiWindowWM - pthread_mutex_lock () returned.\n");
-
- /* Allow multiple threads to access Xlib */
- if (XInitThreads () == 0)
- {
- ErrorF ("winInitMultiWindowWM - XInitThreads () failed. Exiting.\n");
- pthread_exit (NULL);
- }
-
- /* See if X supports the current locale */
- if (XSupportsLocale () == False)
- {
- ErrorF ("winInitMultiWindowWM - Locale not supported by X. Exiting.\n");
- pthread_exit (NULL);
- }
-
- /* Release the server started mutex */
- pthread_mutex_unlock (pProcArg->ppmServerStarted);
-
- ErrorF ("winInitMultiWindowWM - pthread_mutex_unlock () returned.\n");
-
- /* Set jump point for IO Error exits */
- iReturn = setjmp (g_jmpWMEntry);
-
- /* Check if we should continue operations */
- if (iReturn != WIN_JMP_ERROR_IO
- && iReturn != WIN_JMP_OKAY)
- {
- /* setjmp returned an unknown value, exit */
- ErrorF ("winInitMultiWindowWM - setjmp returned: %d. Exiting.\n",
- iReturn);
- pthread_exit (NULL);
- }
- else if (iReturn == WIN_JMP_ERROR_IO)
- {
- ErrorF ("winInitMultiWindowWM - Caught IO Error. Exiting.\n");
- pthread_exit (NULL);
- }
-
- /* Install our error handler */
- XSetErrorHandler (winMultiWindowWMErrorHandler);
- XSetIOErrorHandler (winMultiWindowWMIOErrorHandler);
-
- /* Setup the display connection string x */
- snprintf (pszDisplay,
- 512,
- "127.0.0.1:%s.%d",
- display,
- (int) pProcArg->dwScreen);
-
- /* Print the display connection string */
- ErrorF ("winInitMultiWindowWM - DISPLAY=%s\n", pszDisplay);
-
- /* Open the X display */
- do
- {
- /* Try to open the display */
- pWMInfo->pDisplay = XOpenDisplay (pszDisplay);
- if (pWMInfo->pDisplay == NULL)
- {
- ErrorF ("winInitMultiWindowWM - Could not open display, try: %d, "
- "sleeping: %d\n\f",
- iRetries + 1, WIN_CONNECT_DELAY);
- ++iRetries;
- sleep (WIN_CONNECT_DELAY);
- continue;
- }
- else
- break;
- }
- while (pWMInfo->pDisplay == NULL && iRetries < WIN_CONNECT_RETRIES);
-
- /* Make sure that the display opened */
- if (pWMInfo->pDisplay == NULL)
- {
- ErrorF ("winInitMultiWindowWM - Failed opening the display. "
- "Exiting.\n");
- pthread_exit (NULL);
- }
-
- ErrorF ("winInitMultiWindowWM - XOpenDisplay () returned and "
- "successfully opened the display.\n");
-
-
- /* Create some atoms */
- pWMInfo->atmWmProtos = XInternAtom (pWMInfo->pDisplay,
- "WM_PROTOCOLS",
- False);
- pWMInfo->atmWmDelete = XInternAtom (pWMInfo->pDisplay,
- "WM_DELETE_WINDOW",
- False);
-#ifdef XWIN_MULTIWINDOWEXTWM
- pWMInfo->atmPrivMap = XInternAtom (pWMInfo->pDisplay,
- WINDOWSWM_NATIVE_HWND,
- False);
-#endif
-
-
- if (1) {
- Cursor cursor = XCreateFontCursor (pWMInfo->pDisplay, XC_left_ptr);
- if (cursor)
- {
- XDefineCursor (pWMInfo->pDisplay, DefaultRootWindow(pWMInfo->pDisplay), cursor);
- XFreeCursor (pWMInfo->pDisplay, cursor);
- }
- }
-}
-
-
-/*
- * winSendMessageToWM - Send a message from the X thread to the WM thread
- */
-
-void
-winSendMessageToWM (void *pWMInfo, winWMMessagePtr pMsg)
-{
- WMMsgNodePtr pNode;
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winSendMessageToWM ()\n");
-#endif
-
- pNode = (WMMsgNodePtr)malloc(sizeof(WMMsgNodeRec));
- if (pNode != NULL)
- {
- memcpy (&pNode->msg, pMsg, sizeof(winWMMessageRec));
- PushMessage (&((WMInfoPtr)pWMInfo)->wmMsgQueue, pNode);
- }
-}
-
-
-/*
- * Window manager error handler
- */
-
-static int
-winMultiWindowWMErrorHandler (Display *pDisplay, XErrorEvent *pErr)
-{
- char pszErrorMsg[100];
-
- if (pErr->request_code == X_ChangeWindowAttributes
- && pErr->error_code == BadAccess)
- {
- ErrorF ("winMultiWindowWMErrorHandler - ChangeWindowAttributes "
- "BadAccess.\n");
- return 0;
- }
-
- XGetErrorText (pDisplay,
- pErr->error_code,
- pszErrorMsg,
- sizeof (pszErrorMsg));
- ErrorF ("winMultiWindowWMErrorHandler - ERROR: %s\n", pszErrorMsg);
-
- return 0;
-}
-
-
-/*
- * Window manager IO error handler
- */
-
-static int
-winMultiWindowWMIOErrorHandler (Display *pDisplay)
-{
- ErrorF ("\nwinMultiWindowWMIOErrorHandler!\n\n");
-
- if (g_shutdown)
- pthread_exit(NULL);
-
- /* Restart at the main entry point */
- longjmp (g_jmpWMEntry, WIN_JMP_ERROR_IO);
-
- return 0;
-}
-
-
-/*
- * X message procedure error handler
- */
-
-static int
-winMultiWindowXMsgProcErrorHandler (Display *pDisplay, XErrorEvent *pErr)
-{
- char pszErrorMsg[100];
-
- XGetErrorText (pDisplay,
- pErr->error_code,
- pszErrorMsg,
- sizeof (pszErrorMsg));
- ErrorF ("winMultiWindowXMsgProcErrorHandler - ERROR: %s\n", pszErrorMsg);
-
- return 0;
-}
-
-
-/*
- * X message procedure IO error handler
- */
-
-static int
-winMultiWindowXMsgProcIOErrorHandler (Display *pDisplay)
-{
- ErrorF ("\nwinMultiWindowXMsgProcIOErrorHandler!\n\n");
-
- /* Restart at the main entry point */
- longjmp (g_jmpXMsgProcEntry, WIN_JMP_ERROR_IO);
-
- return 0;
-}
-
-
-/*
- * Catch RedirectError to detect other window manager running
- */
-
-static int
-winRedirectErrorHandler (Display *pDisplay, XErrorEvent *pErr)
-{
- redirectError = TRUE;
- return 0;
-}
-
-
-/*
- * Check if another window manager is running
- */
-
-static Bool
-CheckAnotherWindowManager (Display *pDisplay, DWORD dwScreen)
-{
- redirectError = FALSE;
- XSetErrorHandler (winRedirectErrorHandler);
- XSelectInput(pDisplay, RootWindow (pDisplay, dwScreen),
- // SubstructureNotifyMask | ButtonPressMask
- ColormapChangeMask | EnterWindowMask | PropertyChangeMask |
- SubstructureRedirectMask | KeyPressMask |
- ButtonPressMask | ButtonReleaseMask);
- XSync (pDisplay, 0);
- XSetErrorHandler (winMultiWindowXMsgProcErrorHandler);
- XSelectInput(pDisplay, RootWindow (pDisplay, dwScreen),
- SubstructureNotifyMask);
- XSync (pDisplay, 0);
- if (redirectError)
- {
- //ErrorF ("CheckAnotherWindowManager() - another window manager is running. Exiting.\n");
- return TRUE;
- }
- else
- {
- return FALSE;
- }
-}
-
-/*
- * Notify the MWM thread we're exiting and not to reconnect
- */
-
-void
-winDeinitMultiWindowWM ()
-{
- ErrorF ("winDeinitMultiWindowWM - Noting shutdown in progress\n");
- g_shutdown = TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowwndproc.c b/nx-X11/programs/Xserver/hw/xwin/winmultiwindowwndproc.c
deleted file mode 100755
index 50397d8b0..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winmultiwindowwndproc.c
+++ /dev/null
@@ -1,1035 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Kensuke Matsuzaki
- * Earle F. Philhower, III
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winmultiwindowwndproc.c,v 1.2 2003/10/02 13:30:11 eich Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "dixevents.h"
-#include "winmultiwindowclass.h"
-#include "winprefs.h"
-#include "winmsg.h"
-
-/*
- * External global variables
- */
-
-extern Bool g_fCursor;
-extern Bool g_fKeyboardHookLL;
-extern Bool g_fSoftwareCursor;
-
-
-/*
- * Local globals
- */
-
-static UINT_PTR g_uipMousePollingTimerID = 0;
-
-
-/*
- * Constant defines
- */
-
-#define MOUSE_POLLING_INTERVAL 500
-#define WIN_MULTIWINDOW_SHAPE YES
-
-
-/*
- * ConstrainSize - Taken from TWM sources - Respects hints for sizing
- */
-#define makemult(a,b) ((b==1) ? (a) : (((int)((a)/(b))) * (b)) )
-static void
-ConstrainSize (WinXSizeHints hints, int *widthp, int *heightp)
-{
- int minWidth, minHeight, maxWidth, maxHeight, xinc, yinc, delta;
- int baseWidth, baseHeight;
- int dwidth = *widthp, dheight = *heightp;
-
- if (hints.flags & PMinSize)
- {
- minWidth = hints.min_width;
- minHeight = hints.min_height;
- }
- else if (hints.flags & PBaseSize)
- {
- minWidth = hints.base_width;
- minHeight = hints.base_height;
- }
- else
- minWidth = minHeight = 1;
-
- if (hints.flags & PBaseSize)
- {
- baseWidth = hints.base_width;
- baseHeight = hints.base_height;
- }
- else if (hints.flags & PMinSize)
- {
- baseWidth = hints.min_width;
- baseHeight = hints.min_height;
- }
- else
- baseWidth = baseHeight = 0;
-
- if (hints.flags & PMaxSize)
- {
- maxWidth = hints.max_width;
- maxHeight = hints.max_height;
- }
- else
- {
- maxWidth = MAXINT;
- maxHeight = MAXINT;
- }
-
- if (hints.flags & PResizeInc)
- {
- xinc = hints.width_inc;
- yinc = hints.height_inc;
- }
- else
- xinc = yinc = 1;
-
- /*
- * First, clamp to min and max values
- */
- if (dwidth < minWidth)
- dwidth = minWidth;
- if (dheight < minHeight)
- dheight = minHeight;
-
- if (dwidth > maxWidth)
- dwidth = maxWidth;
- if (dheight > maxHeight)
- dheight = maxHeight;
-
- /*
- * Second, fit to base + N * inc
- */
- dwidth = ((dwidth - baseWidth) / xinc * xinc) + baseWidth;
- dheight = ((dheight - baseHeight) / yinc * yinc) + baseHeight;
-
- /*
- * Third, adjust for aspect ratio
- */
-
- /*
- * The math looks like this:
- *
- * minAspectX dwidth maxAspectX
- * ---------- <= ------- <= ----------
- * minAspectY dheight maxAspectY
- *
- * If that is multiplied out, then the width and height are
- * invalid in the following situations:
- *
- * minAspectX * dheight > minAspectY * dwidth
- * maxAspectX * dheight < maxAspectY * dwidth
- *
- */
-
- if (hints.flags & PAspect)
- {
- if (hints.min_aspect.x * dheight > hints.min_aspect.y * dwidth)
- {
- delta = makemult(hints.min_aspect.x * dheight / hints.min_aspect.y - dwidth, xinc);
- if (dwidth + delta <= maxWidth)
- dwidth += delta;
- else
- {
- delta = makemult(dheight - dwidth*hints.min_aspect.y/hints.min_aspect.x, yinc);
- if (dheight - delta >= minHeight)
- dheight -= delta;
- }
- }
-
- if (hints.max_aspect.x * dheight < hints.max_aspect.y * dwidth)
- {
- delta = makemult(dwidth * hints.max_aspect.y / hints.max_aspect.x - dheight, yinc);
- if (dheight + delta <= maxHeight)
- dheight += delta;
- else
- {
- delta = makemult(dwidth - hints.max_aspect.x*dheight/hints.max_aspect.y, xinc);
- if (dwidth - delta >= minWidth)
- dwidth -= delta;
- }
- }
- }
-
- /* Return computed values */
- *widthp = dwidth;
- *heightp = dheight;
-}
-#undef makemult
-
-
-
-/*
- * ValidateSizing - Ensures size request respects hints
- */
-static int
-ValidateSizing (HWND hwnd, WindowPtr pWin,
- WPARAM wParam, LPARAM lParam)
-{
- WinXSizeHints sizeHints;
- RECT *rect;
- int iWidth, iHeight;
-
- /* Invalid input checking */
- if (pWin==NULL || lParam==0)
- return FALSE;
-
- /* No size hints, no checking */
- if (!winMultiWindowGetWMNormalHints (pWin, &sizeHints))
- return FALSE;
-
- /* Avoid divide-by-zero */
- if (sizeHints.flags & PResizeInc)
- {
- if (sizeHints.width_inc == 0) sizeHints.width_inc = 1;
- if (sizeHints.height_inc == 0) sizeHints.height_inc = 1;
- }
-
- rect = (RECT*)lParam;
-
- iWidth = rect->right - rect->left;
- iHeight = rect->bottom - rect->top;
-
- /* Now remove size of any borders */
- iWidth -= 2 * GetSystemMetrics(SM_CXSIZEFRAME);
- iHeight -= (GetSystemMetrics(SM_CYCAPTION)
- + 2 * GetSystemMetrics(SM_CYSIZEFRAME));
-
-
- /* Constrain the size to legal values */
- ConstrainSize (sizeHints, &iWidth, &iHeight);
-
- /* Add back the borders */
- iWidth += 2 * GetSystemMetrics(SM_CXSIZEFRAME);
- iHeight += (GetSystemMetrics(SM_CYCAPTION)
- + 2 * GetSystemMetrics(SM_CYSIZEFRAME));
-
- /* Adjust size according to where we're dragging from */
- switch(wParam) {
- case WMSZ_TOP:
- case WMSZ_TOPRIGHT:
- case WMSZ_BOTTOM:
- case WMSZ_BOTTOMRIGHT:
- case WMSZ_RIGHT:
- rect->right = rect->left + iWidth;
- break;
- default:
- rect->left = rect->right - iWidth;
- break;
- }
- switch(wParam) {
- case WMSZ_BOTTOM:
- case WMSZ_BOTTOMRIGHT:
- case WMSZ_BOTTOMLEFT:
- case WMSZ_RIGHT:
- case WMSZ_LEFT:
- rect->bottom = rect->top + iHeight;
- break;
- default:
- rect->top = rect->bottom - iHeight;
- break;
- }
- return TRUE;
-}
-
-extern Bool winInDestroyWindowsWindow;
-static Bool winInRaiseWindow = FALSE;
-static void winRaiseWindow(WindowPtr pWin)
-{
- if (!winInDestroyWindowsWindow && !winInRaiseWindow)
- {
- BOOL oldstate = winInRaiseWindow;
- winInRaiseWindow = TRUE;
- /* Call configure window directly to make sure it gets processed
- * in time
- */
- XID vlist[1] = { 0 };
- ConfigureWindow(pWin, CWStackMode, vlist, serverClient);
- winInRaiseWindow = oldstate;
- }
-}
-
-
-/*
- * winTopLevelWindowProc - Window procedure for all top-level Windows windows.
- */
-
-LRESULT CALLBACK
-winTopLevelWindowProc (HWND hwnd, UINT message,
- WPARAM wParam, LPARAM lParam)
-{
- POINT ptMouse;
- HDC hdcUpdate;
- PAINTSTRUCT ps;
- WindowPtr pWin = NULL;
- winPrivWinPtr pWinPriv = NULL;
- ScreenPtr s_pScreen = NULL;
- winPrivScreenPtr s_pScreenPriv = NULL;
- winScreenInfo *s_pScreenInfo = NULL;
- HWND hwndScreen = NULL;
- DrawablePtr pDraw = NULL;
- int iX, iY, iWidth, iHeight, iBorder;
- winWMMessageRec wmMsg;
- Bool fWMMsgInitialized = FALSE;
- static Bool s_fTracking = FALSE;
- Bool needRestack = FALSE;
- LRESULT ret;
-
-#if CYGDEBUG
- winDebugWin32Message("winTopLevelWindowProc", hwnd, message, wParam, lParam);
-#endif
-
- /* Check if the Windows window property for our X window pointer is valid */
- if ((pWin = GetProp (hwnd, WIN_WINDOW_PROP)) != NULL)
- {
- /* Our X window pointer is valid */
-
- /* Get pointers to the drawable and the screen */
- pDraw = &pWin->drawable;
- s_pScreen = pWin->drawable.pScreen;
-
- /* Get a pointer to our window privates */
- pWinPriv = winGetWindowPriv(pWin);
-
- /* Get pointers to our screen privates and screen info */
- s_pScreenPriv = pWinPriv->pScreenPriv;
- s_pScreenInfo = s_pScreenPriv->pScreenInfo;
-
- /* Get the handle for our screen-sized window */
- hwndScreen = s_pScreenPriv->hwndScreen;
-
- /* */
- wmMsg.msg = 0;
- wmMsg.hwndWindow = hwnd;
- wmMsg.iWindow = (Window)GetProp (hwnd, WIN_WID_PROP);
-
- wmMsg.iX = pDraw->x;
- wmMsg.iY = pDraw->y;
- wmMsg.iWidth = pDraw->width;
- wmMsg.iHeight = pDraw->height;
-
- fWMMsgInitialized = TRUE;
-
-#if 0
- /*
- * Print some debugging information
- */
-
- ErrorF ("hWnd %08X\n", hwnd);
- ErrorF ("pWin %08X\n", pWin);
- ErrorF ("pDraw %08X\n", pDraw);
- ErrorF ("\ttype %08X\n", pWin->drawable.type);
- ErrorF ("\tclass %08X\n", pWin->drawable.class);
- ErrorF ("\tdepth %08X\n", pWin->drawable.depth);
- ErrorF ("\tbitsPerPixel %08X\n", pWin->drawable.bitsPerPixel);
- ErrorF ("\tid %08X\n", pWin->drawable.id);
- ErrorF ("\tx %08X\n", pWin->drawable.x);
- ErrorF ("\ty %08X\n", pWin->drawable.y);
- ErrorF ("\twidth %08X\n", pWin->drawable.width);
- ErrorF ("\thenght %08X\n", pWin->drawable.height);
- ErrorF ("\tpScreen %08X\n", pWin->drawable.pScreen);
- ErrorF ("\tserialNumber %08X\n", pWin->drawable.serialNumber);
- ErrorF ("g_iWindowPrivateIndex %d\n", g_iWindowPrivateIndex);
- ErrorF ("pWinPriv %08X\n", pWinPriv);
- ErrorF ("s_pScreenPriv %08X\n", s_pScreenPriv);
- ErrorF ("s_pScreenInfo %08X\n", s_pScreenInfo);
- ErrorF ("hwndScreen %08X\n", hwndScreen);
-#endif
- }
-
- /* Branch on message type */
- switch (message)
- {
- case WM_CREATE:
-
- /* */
- SetProp (hwnd,
- WIN_WINDOW_PROP,
- (HANDLE)((LPCREATESTRUCT) lParam)->lpCreateParams);
-
- /* */
- SetProp (hwnd,
- WIN_WID_PROP,
- (HANDLE)winGetWindowID (((LPCREATESTRUCT) lParam)->lpCreateParams));
-
- /*
- * Make X windows' Z orders sync with Windows windows because
- * there can be AlwaysOnTop windows overlapped on the window
- * currently being created.
- */
- winReorderWindowsMultiWindow ();
- return 0;
-
- case WM_INIT_SYS_MENU:
- /*
- * Add whatever the setup file wants to for this window
- */
- SetupSysMenu ((unsigned long)hwnd);
- return 0;
-
- case WM_SYSCOMMAND:
- /*
- * Any window menu items go through here
- */
- if (HandleCustomWM_COMMAND ((unsigned long)hwnd, LOWORD(wParam)))
- {
- /* Don't pass customized menus to DefWindowProc */
- return 0;
- }
- if (wParam == SC_RESTORE || wParam == SC_MAXIMIZE)
- {
- WINDOWPLACEMENT wndpl;
- wndpl.length = sizeof(wndpl);
- if (GetWindowPlacement(hwnd, &wndpl) && wndpl.showCmd == SW_SHOWMINIMIZED)
- needRestack = TRUE;
- }
- break;
-
- case WM_INITMENU:
- /* Checks/Unchecks any menu items before they are displayed */
- HandleCustomWM_INITMENU ((unsigned long)hwnd, wParam);
- break;
-
- case WM_PAINT:
- /* Only paint if our window handle is valid */
- if (hwndScreen == NULL)
- break;
-
- /* BeginPaint gives us an hdc that clips to the invalidated region */
- hdcUpdate = BeginPaint (hwnd, &ps);
-
- /* Get the position and dimensions of the window */
- iBorder = wBorderWidth (pWin);
- iX = pWin->drawable.x;
- iY = pWin->drawable.y;
- iWidth = pWin->drawable.width;
- iHeight = pWin->drawable.height;
-
- /* Try to copy from the shadow buffer */
- if (!BitBlt (hdcUpdate,
- 0, 0,
- iWidth, iHeight,
- s_pScreenPriv->hdcShadow,
- iX, iY,
- SRCCOPY))
- {
- LPVOID lpMsgBuf;
-
- /* Display a fancy error message */
- FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError (),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &lpMsgBuf,
- 0, NULL);
-
- ErrorF ("winTopLevelWindowProc - BitBlt failed: %s\n",
- (LPSTR)lpMsgBuf);
- LocalFree (lpMsgBuf);
- }
-
- /* EndPaint frees the DC */
- EndPaint (hwndScreen, &ps);
- return 0;
-
- case WM_MOUSEMOVE:
- /* Unpack the client area mouse coordinates */
- ptMouse.x = GET_X_LPARAM(lParam);
- ptMouse.y = GET_Y_LPARAM(lParam);
-
- /* Translate the client area mouse coordinates to screen coordinates */
- ClientToScreen (hwnd, &ptMouse);
-
- /* Screen Coords from (-X, -Y) -> Root Window (0, 0) */
- ptMouse.x -= GetSystemMetrics (SM_XVIRTUALSCREEN);
- ptMouse.y -= GetSystemMetrics (SM_YVIRTUALSCREEN);
-
- /* We can't do anything without privates */
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
-
- /* Has the mouse pointer crossed screens? */
- if (s_pScreen != miPointerCurrentScreen ())
- miPointerSetNewScreen (s_pScreenInfo->dwScreen,
- ptMouse.x - s_pScreenInfo->dwXOffset,
- ptMouse.y - s_pScreenInfo->dwYOffset);
-
- /* Are we tracking yet? */
- if (!s_fTracking)
- {
- TRACKMOUSEEVENT tme;
-
- /* Setup data structure */
- ZeroMemory (&tme, sizeof (tme));
- tme.cbSize = sizeof (tme);
- tme.dwFlags = TME_LEAVE;
- tme.hwndTrack = hwnd;
-
- /* Call the tracking function */
- if (!(*g_fpTrackMouseEvent) (&tme))
- ErrorF ("winTopLevelWindowProc - _TrackMouseEvent failed\n");
-
- /* Flag that we are tracking now */
- s_fTracking = TRUE;
- }
-
- /* Hide or show the Windows mouse cursor */
- if (g_fSoftwareCursor && g_fCursor)
- {
- /* Hide Windows cursor */
- g_fCursor = FALSE;
- ShowCursor (FALSE);
- }
-
- /* Kill the timer used to poll mouse events */
- if (g_uipMousePollingTimerID != 0)
- {
- KillTimer (s_pScreenPriv->hwndScreen, WIN_POLLING_MOUSE_TIMER_ID);
- g_uipMousePollingTimerID = 0;
- }
-
- /* Deliver absolute cursor position to X Server */
- miPointerAbsoluteCursor (ptMouse.x - s_pScreenInfo->dwXOffset,
- ptMouse.y - s_pScreenInfo->dwYOffset,
- g_c32LastInputEventTime = GetTickCount ());
- return 0;
-
- case WM_NCMOUSEMOVE:
- /*
- * We break instead of returning 0 since we need to call
- * DefWindowProc to get the mouse cursor changes
- * and min/max/close button highlighting in Windows XP.
- * The Platform SDK says that you should return 0 if you
- * process this message, but it fails to mention that you
- * will give up any default functionality if you do return 0.
- */
-
- /* We can't do anything without privates */
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
-
- /* Non-client mouse movement, show Windows cursor */
- if (g_fSoftwareCursor && !g_fCursor)
- {
- g_fCursor = TRUE;
- ShowCursor (TRUE);
- }
-
- /*
- * Timer to poll mouse events. This is needed to make
- * programs like xeyes follow the mouse properly.
- */
- if (g_uipMousePollingTimerID == 0)
- g_uipMousePollingTimerID = SetTimer (s_pScreenPriv->hwndScreen,
- WIN_POLLING_MOUSE_TIMER_ID,
- MOUSE_POLLING_INTERVAL,
- NULL);
- break;
-
- case WM_MOUSELEAVE:
- /* Mouse has left our client area */
-
- /* Flag that we are no longer tracking */
- s_fTracking = FALSE;
-
- /* Show the mouse cursor, if necessary */
- if (g_fSoftwareCursor && !g_fCursor)
- {
- g_fCursor = TRUE;
- ShowCursor (TRUE);
- }
-
- /*
- * Timer to poll mouse events. This is needed to make
- * programs like xeyes follow the mouse properly.
- */
- if (g_uipMousePollingTimerID == 0)
- g_uipMousePollingTimerID = SetTimer (s_pScreenPriv->hwndScreen,
- WIN_POLLING_MOUSE_TIMER_ID,
- MOUSE_POLLING_INTERVAL,
- NULL);
- return 0;
-
- case WM_LBUTTONDBLCLK:
- case WM_LBUTTONDOWN:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- return winMouseButtonsHandle (s_pScreen, ButtonPress, Button1, wParam);
-
- case WM_LBUTTONUP:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- return winMouseButtonsHandle (s_pScreen, ButtonRelease, Button1, wParam);
-
- case WM_MBUTTONDBLCLK:
- case WM_MBUTTONDOWN:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- return winMouseButtonsHandle (s_pScreen, ButtonPress, Button2, wParam);
-
- case WM_MBUTTONUP:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- return winMouseButtonsHandle (s_pScreen, ButtonRelease, Button2, wParam);
-
- case WM_RBUTTONDBLCLK:
- case WM_RBUTTONDOWN:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- return winMouseButtonsHandle (s_pScreen, ButtonPress, Button3, wParam);
-
- case WM_RBUTTONUP:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- return winMouseButtonsHandle (s_pScreen, ButtonRelease, Button3, wParam);
-
- case WM_XBUTTONDBLCLK:
- case WM_XBUTTONDOWN:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- return winMouseButtonsHandle (s_pScreen, ButtonPress, HIWORD(wParam) + 5, wParam);
- case WM_XBUTTONUP:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- return winMouseButtonsHandle (s_pScreen, ButtonRelease, HIWORD(wParam) + 5, wParam);
-
- case WM_MOUSEWHEEL:
-
- /* Pass the message to the root window */
- SendMessage (hwndScreen, message, wParam, lParam);
- return 0;
-
- case WM_SETFOCUS:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
-
- winRestoreModeKeyStates ();
-
- /* Add the keyboard hook if possible */
- if (g_fKeyboardHookLL)
- g_fKeyboardHookLL = winInstallKeyboardHookLL ();
- return 0;
-
- case WM_KILLFOCUS:
- /* Pop any pressed keys since we are losing keyboard focus */
- winKeybdReleaseKeys ();
-
- /* Remove our keyboard hook if it is installed */
- winRemoveKeyboardHookLL ();
- return 0;
-
- case WM_SYSDEADCHAR:
- case WM_DEADCHAR:
- /*
- * NOTE: We do nothing with WM_*CHAR messages,
- * nor does the root window, so we can just toss these messages.
- */
- return 0;
-
- case WM_SYSKEYDOWN:
- case WM_KEYDOWN:
-
- /*
- * Don't pass Alt-F4 key combo to root window,
- * let Windows translate to WM_CLOSE and close this top-level window.
- *
- * NOTE: We purposely don't check the fUseWinKillKey setting because
- * it should only apply to the key handling for the root window,
- * not for top-level window-manager windows.
- *
- * ALSO NOTE: We do pass Ctrl-Alt-Backspace to the root window
- * because that is a key combo that no X app should be expecting to
- * receive, since it has historically been used to shutdown the X server.
- * Passing Ctrl-Alt-Backspace to the root window preserves that
- * behavior, assuming that -unixkill has been passed as a parameter.
- */
- if (wParam == VK_F4 && (GetKeyState (VK_MENU) & 0x8000))
- break;
-
-#if CYGWINDOWING_DEBUG
- if (wParam == VK_ESCAPE)
- {
- /* Place for debug: put any tests and dumps here */
- WINDOWPLACEMENT windPlace;
- RECT rc;
- LPRECT pRect;
-
- windPlace.length = sizeof (WINDOWPLACEMENT);
- GetWindowPlacement (hwnd, &windPlace);
- pRect = &windPlace.rcNormalPosition;
- ErrorF ("\nCYGWINDOWING Dump:\n"
- "\tdrawable: (%hd, %hd) - %hdx%hd\n", pDraw->x,
- pDraw->y, pDraw->width, pDraw->height);
- ErrorF ("\twindPlace: (%ld, %ld) - %ldx%ld\n", pRect->left,
- pRect->top, pRect->right - pRect->left,
- pRect->bottom - pRect->top);
- if (GetClientRect (hwnd, &rc))
- {
- pRect = &rc;
- ErrorF ("\tClientRect: (%ld, %ld) - %ldx%ld\n", pRect->left,
- pRect->top, pRect->right - pRect->left,
- pRect->bottom - pRect->top);
- }
- if (GetWindowRect (hwnd, &rc))
- {
- pRect = &rc;
- ErrorF ("\tWindowRect: (%ld, %ld) - %ldx%ld\n", pRect->left,
- pRect->top, pRect->right - pRect->left,
- pRect->bottom - pRect->top);
- }
- ErrorF ("\n");
- }
-#endif
-
- /* Pass the message to the root window */
- return winWindowProc(hwndScreen, message, wParam, lParam);
-
- case WM_SYSKEYUP:
- case WM_KEYUP:
-
-
- /* Pass the message to the root window */
- return winWindowProc(hwndScreen, message, wParam, lParam);
-
- case WM_HOTKEY:
-
- /* Pass the message to the root window */
- SendMessage (hwndScreen, message, wParam, lParam);
- return 0;
-
- case WM_ACTIVATE:
-
- /* Pass the message to the root window */
- SendMessage (hwndScreen, message, wParam, lParam);
-
- if (LOWORD(wParam) != WA_INACTIVE)
- {
- /* Raise the window to the top in Z order */
- /* ago: Activate does not mean putting it to front! */
- /*
- wmMsg.msg = WM_WM_RAISE;
- if (fWMMsgInitialized)
- winSendMessageToWM (s_pScreenPriv->pWMInfo, &wmMsg);
- */
-
- /* Tell our Window Manager thread to activate the window */
- wmMsg.msg = WM_WM_ACTIVATE;
- if (fWMMsgInitialized)
- if (!pWin || !pWin->overrideRedirect) /* for OOo menus */
- winSendMessageToWM (s_pScreenPriv->pWMInfo, &wmMsg);
- }
- return 0;
-
- case WM_ACTIVATEAPP:
- /*
- * This message is also sent to the root window
- * so we do nothing for individual multiwindow windows
- */
- break;
-
- case WM_CLOSE:
- /* Branch on if the window was killed in X already */
- if (pWinPriv->fXKilled)
- {
- /* Window was killed, go ahead and destroy the window */
- DestroyWindow (hwnd);
- }
- else
- {
- /* Tell our Window Manager thread to kill the window */
- wmMsg.msg = WM_WM_KILL;
- if (fWMMsgInitialized)
- winSendMessageToWM (s_pScreenPriv->pWMInfo, &wmMsg);
- }
- return 0;
-
- case WM_DESTROY:
-
- /* Branch on if the window was killed in X already */
- if (pWinPriv && !pWinPriv->fXKilled)
- {
- ErrorF ("winTopLevelWindowProc - WM_DESTROY - WM_WM_KILL\n");
-
- /* Tell our Window Manager thread to kill the window */
- wmMsg.msg = WM_WM_KILL;
- if (fWMMsgInitialized)
- winSendMessageToWM (s_pScreenPriv->pWMInfo, &wmMsg);
- }
-
- RemoveProp (hwnd, WIN_WINDOW_PROP);
- RemoveProp (hwnd, WIN_WID_PROP);
- RemoveProp (hwnd, WIN_NEEDMANAGE_PROP);
-
- break;
-
- case WM_MOVE:
- /* Adjust the X Window to the moved Windows window */
- winAdjustXWindow (pWin, hwnd);
- return 0;
-
- case WM_SHOWWINDOW:
- /* Bail out if the window is being hidden */
- if (!wParam)
- return 0;
-
- /* Tell X to map the window */
- MapWindow (pWin, wClient(pWin));
-
- /* */
- if (!pWin->overrideRedirect)
- {
- DWORD dwExStyle;
- DWORD dwStyle;
- RECT rcNew;
- int iDx, iDy;
-
- /* Flag that this window needs to be made active when clicked */
- SetProp (hwnd, WIN_NEEDMANAGE_PROP, (HANDLE) 1);
-
- /* Get the standard and extended window style information */
- dwExStyle = GetWindowLongPtr (hwnd, GWL_EXSTYLE);
- dwStyle = GetWindowLongPtr (hwnd, GWL_STYLE);
-
- /* */
- if (dwExStyle != WS_EX_APPWINDOW)
- {
- /* Setup a rectangle with the X window position and size */
- SetRect (&rcNew,
- pDraw->x,
- pDraw->y,
- pDraw->x + pDraw->width,
- pDraw->y + pDraw->height);
-
-#if 0
- ErrorF ("winTopLevelWindowProc - (%d, %d)-(%d, %d)\n",
- rcNew.left, rcNew.top,
- rcNew.right, rcNew.bottom);
-#endif
-
- /* */
- AdjustWindowRectEx (&rcNew,
- WS_POPUP | WS_SIZEBOX | WS_OVERLAPPEDWINDOW,
- FALSE,
- WS_EX_APPWINDOW);
-
- /* Calculate position deltas */
- iDx = pDraw->x - rcNew.left;
- iDy = pDraw->y - rcNew.top;
-
- /* Calculate new rectangle */
- rcNew.left += iDx;
- rcNew.right += iDx;
- rcNew.top += iDy;
- rcNew.bottom += iDy;
-
-#if 0
- ErrorF ("winTopLevelWindowProc - (%d, %d)-(%d, %d)\n",
- rcNew.left, rcNew.top,
- rcNew.right, rcNew.bottom);
-#endif
-
- /* Set the window extended style flags */
- SetWindowLongPtr (hwnd, GWL_EXSTYLE, WS_EX_APPWINDOW);
-
- /* Set the window standard style flags */
- SetWindowLongPtr (hwnd, GWL_STYLE,
- WS_POPUP | WS_SIZEBOX | WS_OVERLAPPEDWINDOW);
-
- /* Position the Windows window */
- SetWindowPos (hwnd, HWND_TOP,
- rcNew.left, rcNew.top,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top,
- SWP_NOMOVE | SWP_FRAMECHANGED
- | SWP_SHOWWINDOW | SWP_NOACTIVATE);
-
- /* Bring the Windows window to the foreground */
- SetForegroundWindow (hwnd);
- }
- }
- else /* It is an overridden window so make it top of Z stack */
- {
-#if CYGWINDOWING_DEBUG
- ErrorF ("overridden window is shown\n");
-#endif
- SetWindowPos (hwnd, HWND_TOPMOST, 0, 0, 0, 0,
- SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
- }
-
- /* Setup the Window Manager message */
- wmMsg.msg = WM_WM_MAP;
- wmMsg.iWidth = pDraw->width;
- wmMsg.iHeight = pDraw->height;
-
- /* Tell our Window Manager thread to map the window */
- if (fWMMsgInitialized)
- winSendMessageToWM (s_pScreenPriv->pWMInfo, &wmMsg);
-
- return 0;
-
- case WM_SIZING:
- /* Need to legalize the size according to WM_NORMAL_HINTS */
- /* for applications like xterm */
- return ValidateSizing (hwnd, pWin, wParam, lParam);
-
- case WM_WINDOWPOSCHANGED:
- {
- LPWINDOWPOS pWinPos = (LPWINDOWPOS) lParam;
-
- if (!(pWinPos->flags & SWP_NOZORDER))
- {
-#if CYGWINDOWING_DEBUG
- winDebug ("\twindow z order was changed\n");
-#endif
- if (pWinPos->hwndInsertAfter == HWND_TOP
- ||pWinPos->hwndInsertAfter == HWND_TOPMOST
- ||pWinPos->hwndInsertAfter == HWND_NOTOPMOST)
- {
-#if CYGWINDOWING_DEBUG
- winDebug ("\traise to top\n");
-#endif
- /* Raise the window to the top in Z order */
- winRaiseWindow(pWin);
- }
- else if (pWinPos->hwndInsertAfter == HWND_BOTTOM)
- {
- }
- else
- {
- /* Check if this window is top of X windows. */
- HWND hWndAbove = NULL;
- DWORD dwCurrentProcessID = GetCurrentProcessId ();
- DWORD dwWindowProcessID = 0;
-
- for (hWndAbove = pWinPos->hwndInsertAfter;
- hWndAbove != NULL;
- hWndAbove = GetNextWindow (hWndAbove, GW_HWNDPREV))
- {
- /* Ignore other XWin process's window */
- GetWindowThreadProcessId (hWndAbove, &dwWindowProcessID);
-
- if ((dwWindowProcessID == dwCurrentProcessID)
- && GetProp (hWndAbove, WIN_WINDOW_PROP)
- && !IsWindowVisible (hWndAbove)
- && !IsIconic (hWndAbove) ) /* ignore minimized windows */
- break;
- }
- /* If this is top of X windows in Windows stack,
- raise it in X stack. */
- if (hWndAbove == NULL)
- {
-#if CYGWINDOWING_DEBUG
- winDebug ("\traise to top\n");
-#endif
- winRaiseWindow(pWin);
- }
- }
- }
- }
- /*
- * Pass the message to DefWindowProc to let the function
- * break down WM_WINDOWPOSCHANGED to WM_MOVE and WM_SIZE.
- */
- break;
-
- case WM_SIZE:
- /* see dix/window.c */
-#if CYGWINDOWING_DEBUG
- {
- char buf[64];
- switch (wParam)
- {
- case SIZE_MINIMIZED:
- strcpy(buf, "SIZE_MINIMIZED");
- break;
- case SIZE_MAXIMIZED:
- strcpy(buf, "SIZE_MAXIMIZED");
- break;
- case SIZE_RESTORED:
- strcpy(buf, "SIZE_RESTORED");
- break;
- default:
- strcpy(buf, "UNKNOWN_FLAG");
- }
- ErrorF ("winTopLevelWindowProc - WM_SIZE to %dx%d (%s) - %d ms\n",
- (int)LOWORD(lParam), (int)HIWORD(lParam), buf,
- (int)(GetTickCount ()));
- }
-#endif
- /* Adjust the X Window to the moved Windows window */
- winAdjustXWindow (pWin, hwnd);
- return 0; /* end of WM_SIZE handler */
-
- case WM_MOUSEACTIVATE:
-
- /* Check if this window needs to be made active when clicked */
- if (!GetProp (pWinPriv->hWnd, WIN_NEEDMANAGE_PROP))
- {
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winTopLevelWindowProc - WM_MOUSEACTIVATE - "
- "MA_NOACTIVATE\n");
-#endif
-
- /* */
- return MA_NOACTIVATE;
- }
- break;
-
- case WM_SETCURSOR:
- if (LOWORD(lParam) == HTCLIENT)
- {
- if (!g_fSoftwareCursor) SetCursor (s_pScreenPriv->cursor.handle);
- return TRUE;
- }
- break;
-
- default:
- break;
- }
-
- ret = DefWindowProc (hwnd, message, wParam, lParam);
- /*
- * If the window was minized we get the stack change before the window is restored
- * and so it gets lost. Ensure there stacking order is correct.
- */
- if (needRestack)
- winReorderWindowsMultiWindow();
- return ret;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winnativegdi.c b/nx-X11/programs/Xserver/hw/xwin/winnativegdi.c
deleted file mode 100644
index c67f1c7e5..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winnativegdi.c
+++ /dev/null
@@ -1,547 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winnativegdi.c,v 1.14 2003/07/29 21:25:18 dawes Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * External symbols
- */
-
-extern HWND g_hDlgExit;
-
-
-/*
- * Local function prototypes
- */
-
-static Bool
-winAllocateFBNativeGDI (ScreenPtr pScreen);
-
-static void
-winShadowUpdateNativeGDI (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-static Bool
-winCloseScreenNativeGDI (int nIndex, ScreenPtr pScreen);
-
-static Bool
-winInitVisualsNativeGDI (ScreenPtr pScreen);
-
-static Bool
-winAdjustVideoModeNativeGDI (ScreenPtr pScreen);
-
-#if 0
-static Bool
-winBltExposedRegionsNativeGDI (ScreenPtr pScreen);
-#endif
-
-static Bool
-winActivateAppNativeGDI (ScreenPtr pScreen);
-
-static Bool
-winRedrawScreenNativeGDI (ScreenPtr pScreen);
-
-static Bool
-winRealizeInstalledPaletteNativeGDI (ScreenPtr pScreen);
-
-static Bool
-winInstallColormapNativeGDI (ColormapPtr pColormap);
-
-static Bool
-winStoreColorsNativeGDI (ColormapPtr pmap,
- int ndef,
- xColorItem *pdefs);
-
-static Bool
-winCreateColormapNativeGDI (ColormapPtr pColormap);
-
-static Bool
-winDestroyColormapNativeGDI (ColormapPtr pColormap);
-
-
-
-static Bool
-winAllocateFBNativeGDI (ScreenPtr pScreen)
-{
- FatalError ("winAllocateFBNativeGDI\n");
-
- return TRUE;
-}
-
-
-/*
- * We wrap whatever CloseScreen procedure was specified by fb;
- * a pointer to said procedure is stored in our privates.
- */
-
-static Bool
-winCloseScreenNativeGDI (int nIndex, ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- ErrorF ("winCloseScreenNativeGDI - Freeing screen resources\n");
-
- /* Flag that the screen is closed */
- pScreenPriv->fClosed = TRUE;
- pScreenPriv->fActive = FALSE;
-
- /*
- * NOTE: mi doesn't use a CloseScreen procedure, so we do not
- * need to call a wrapped procedure here.
- */
-
- /* Delete the window property */
- RemoveProp (pScreenPriv->hwndScreen, WIN_SCR_PROP);
-
- ErrorF ("winCloseScreenNativeGDI - Destroying window\n");
-
- /* Delete tray icon, if we have one */
- if (!pScreenInfo->fNoTrayIcon)
- winDeleteNotifyIcon (pScreenPriv);
-
- /* Free the exit confirmation dialog box, if it exists */
- if (g_hDlgExit != NULL)
- {
- DestroyWindow (g_hDlgExit);
- g_hDlgExit = NULL;
- }
-
- /* Kill our window */
- if (pScreenPriv->hwndScreen)
- {
- DestroyWindow (pScreenPriv->hwndScreen);
- pScreenPriv->hwndScreen = NULL;
- }
-
- /* Invalidate our screeninfo's pointer to the screen */
- pScreenInfo->pScreen = NULL;
-
- /* Free the screen privates for this screen */
- free (pScreenPriv);
-
- ErrorF ("winCloseScreenNativeGDI - Returning\n");
-
- return TRUE;
-}
-
-
-static void
-winShadowUpdateNativeGDI (ScreenPtr pScreen,
- shadowBufPtr pBuf)
-{
- FatalError ("winShadowUpdateNativeGDI\n");
- return;
-}
-
-
-static Bool
-winInitVisualsNativeGDI (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- /* Set the bitsPerRGB and bit masks */
- switch (pScreenInfo->dwDepth)
- {
- case 24:
- pScreenPriv->dwBitsPerRGB = 8;
- pScreenPriv->dwRedMask = 0x00FF0000;
- pScreenPriv->dwGreenMask = 0x0000FF00;
- pScreenPriv->dwBlueMask = 0x000000FF;
- break;
-
- case 16:
- pScreenPriv->dwBitsPerRGB = 6;
- pScreenPriv->dwRedMask = 0xF800;
- pScreenPriv->dwGreenMask = 0x07E0;
- pScreenPriv->dwBlueMask = 0x001F;
- break;
-
- case 15:
- pScreenPriv->dwBitsPerRGB = 5;
- pScreenPriv->dwRedMask = 0x7C00;
- pScreenPriv->dwGreenMask = 0x03E0;
- pScreenPriv->dwBlueMask = 0x001F;
- break;
-
- case 8:
- pScreenPriv->dwBitsPerRGB = 8;
- pScreenPriv->dwRedMask = 0;
- pScreenPriv->dwGreenMask = 0;
- pScreenPriv->dwBlueMask = 0;
- break;
-
- default:
- ErrorF ("winInitVisualsNativeGDI - Unknown screen depth\n");
- return FALSE;
- break;
- }
-
- /* Tell the user how many bits per RGB we are using */
- ErrorF ("winInitVisualsNativeGDI - Using dwBitsPerRGB: %d\n",
- (int) pScreenPriv->dwBitsPerRGB);
-
- /* Create a single visual according to the Windows screen depth */
- switch (pScreenInfo->dwDepth)
- {
- case 24:
- case 16:
- case 15:
- if (!miSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- TrueColorMask,
- pScreenPriv->dwBitsPerRGB,
- TrueColor,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisuals - miSetVisualTypesAndMasks failed\n");
- return FALSE;
- }
- break;
-
- case 8:
- ErrorF ("winInitVisuals - Calling miSetVisualTypesAndMasks\n");
- if (!miSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- StaticColorMask,
- pScreenPriv->dwBitsPerRGB,
- StaticColor,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisuals - miSetVisualTypesAndMasks failed\n");
- return FALSE;
- }
- break;
-
- default:
- ErrorF ("winInitVisualsNativeGDI - Unknown screen depth\n");
- return FALSE;
- }
-
-#if 1
- ErrorF ("winInitVisualsNativeGDI - Returning\n");
-#endif
-
- return TRUE;
-}
-
-
-/* Adjust the video mode */
-static Bool
-winAdjustVideoModeNativeGDI (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- HDC hdc = NULL;
- DWORD dwBPP;
-
- hdc = GetDC (NULL);
-
- /* We're in serious trouble if we can't get a DC */
- if (hdc == NULL)
- {
- ErrorF ("winAdjustVideoModeNativeGDI - GetDC () failed\n");
- return FALSE;
- }
-
- /* Query GDI for current display depth */
- dwBPP = GetDeviceCaps (hdc, BITSPIXEL);
- pScreenInfo->dwDepth = GetDeviceCaps (hdc, PLANES);
-
- switch (pScreenInfo->dwDepth) {
- case 24:
- case 16:
- case 15:
- case 8:
- break;
- default:
- if (dwBPP == 32)
- pScreenInfo->dwDepth = 24;
- else
- pScreenInfo->dwDepth = dwBPP;
- break;
- }
-
- /* GDI cannot change the screen depth */
- if (pScreenInfo->dwBPP == WIN_DEFAULT_BPP)
- {
- /* No -depth parameter passed, let the user know the depth being used */
- ErrorF ("winAdjustVideoModeNativeGDI - Using Windows display "
- "depth of %d bits per pixel, %d depth\n",
- (int) dwBPP, (int) pScreenInfo->dwDepth);
-
- /* Use GDI's depth */
- pScreenInfo->dwBPP = dwBPP;
- }
- else if (dwBPP != pScreenInfo->dwBPP)
- {
- /* Warn user if GDI depth is different than -depth parameter */
- ErrorF ("winAdjustVideoModeNativeGDI - Command line bpp: %d, "\
- "using bpp: %d\n",
- (int) pScreenInfo->dwBPP, (int) dwBPP);
-
- /* We'll use GDI's depth */
- pScreenInfo->dwBPP = dwBPP;
- }
-
- /* Release our DC */
- ReleaseDC (NULL, hdc);
-
- return TRUE;
-}
-
-
-static Bool
-winActivateAppNativeGDI (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- /*
- * Are we active?
- * Are we fullscreen?
- */
- if (pScreenPriv != NULL
- && pScreenPriv->fActive
- && pScreenInfo->fFullScreen)
- {
- /*
- * Activating, attempt to bring our window
- * to the top of the display
- */
- ShowWindow (pScreenPriv->hwndScreen, SW_RESTORE);
- }
-
- /*
- * Are we inactive?
- * Are we fullscreen?
- */
- if (pScreenPriv != NULL
- && !pScreenPriv->fActive
- && pScreenInfo->fFullScreen)
- {
- /*
- * Deactivating, stuff our window onto the
- * task bar.
- */
- ShowWindow (pScreenPriv->hwndScreen, SW_MINIMIZE);
- }
-
- return TRUE;
-}
-
-
-HBITMAP
-winCreateDIBNativeGDI (int iWidth, int iHeight, int iDepth,
- BYTE **ppbBits, BITMAPINFO **ppbmi)
-{
- BITMAPINFOHEADER *pbmih = NULL;
- HBITMAP hBitmap = NULL;
- BITMAPINFO *pbmi = NULL;
-
- /* Don't create an invalid bitmap */
- if (iWidth == 0
- || iHeight == 0
- || iDepth == 0)
- {
- ErrorF ("\nwinCreateDIBNativeGDI - Invalid specs w %d h %d d %d\n\n",
- iWidth, iHeight, iDepth);
- return NULL;
- }
-
- /* Allocate bitmap info header */
- pbmih = (BITMAPINFOHEADER*) malloc (sizeof (BITMAPINFOHEADER)
- + 256 * sizeof (RGBQUAD));
- if (pbmih == NULL)
- {
- ErrorF ("winCreateDIBNativeGDI - malloc () failed\n");
- return FALSE;
- }
- ZeroMemory (pbmih, sizeof(BITMAPINFOHEADER) + 256 * sizeof (RGBQUAD));
-
- /* Describe bitmap to be created */
- pbmih->biSize = sizeof (BITMAPINFOHEADER);
- pbmih->biWidth = iWidth;
- pbmih->biHeight = -iHeight;
- pbmih->biPlanes = 1;
- pbmih->biBitCount = iDepth;
- pbmih->biCompression = BI_RGB;
- pbmih->biSizeImage = 0;
- pbmih->biXPelsPerMeter = 0;
- pbmih->biYPelsPerMeter = 0;
- pbmih->biClrUsed = 0;
- pbmih->biClrImportant = 0;
-
- /* Setup color table for mono DIBs */
- if (iDepth == 1)
- {
- pbmi = (BITMAPINFO*) pbmih;
- pbmi->bmiColors[1].rgbBlue = 255;
- pbmi->bmiColors[1].rgbGreen = 255;
- pbmi->bmiColors[1].rgbRed = 255;
- }
-
- /* Create a DIB with a bit pointer */
- hBitmap = CreateDIBSection (NULL,
- (BITMAPINFO *) pbmih,
- DIB_RGB_COLORS,
- (void **) ppbBits,
- NULL,
- 0);
- if (hBitmap == NULL)
- {
- ErrorF ("winCreateDIBNativeGDI - CreateDIBSection () failed\n");
- return NULL;
- }
-
- /* Free the bitmap info header memory */
- if (ppbmi != NULL)
- {
- /* Store the address of the BMIH in the ppbmih parameter */
- *ppbmi = (BITMAPINFO *) pbmih;
- }
- else
- {
- free (pbmih);
- pbmih = NULL;
- }
-
- return hBitmap;
-}
-
-
-#if 0
-static Bool
-winBltExposedRegionsNativeGDI (ScreenPtr pScreen)
-{
-
- return TRUE;
-}
-#endif
-
-
-static Bool
-winRedrawScreenNativeGDI (ScreenPtr pScreen)
-{
- FatalError ("winRedrawScreenNativeGDI\n");
- return TRUE;
-}
-
-
-static Bool
-winRealizeInstalledPaletteNativeGDI (ScreenPtr pScreen)
-{
- FatalError ("winRealizeInstalledPaletteNativeGDI\n");
- return TRUE;
-}
-
-
-static Bool
-winInstallColormapNativeGDI (ColormapPtr pColormap)
-{
- FatalError ("winInstallColormapNativeGDI\n");
- return TRUE;
-}
-
-
-static Bool
-winStoreColorsNativeGDI (ColormapPtr pmap,
- int ndef,
- xColorItem *pdefs)
-{
- FatalError ("winStoreColorsNativeGDI\n");
- return TRUE;
-}
-
-
-static Bool
-winCreateColormapNativeGDI (ColormapPtr pColormap)
-{
- FatalError ("winCreateColormapNativeGDI\n");
- return TRUE;
-}
-
-
-static Bool
-winDestroyColormapNativeGDI (ColormapPtr pColormap)
-{
- FatalError ("winDestroyColormapNativeGDI\n");
- return TRUE;
-}
-
-
-/* Set engine specific funtions */
-Bool
-winSetEngineFunctionsNativeGDI (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- /* Set our pointers */
- pScreenPriv->pwinAllocateFB = winAllocateFBNativeGDI;
- pScreenPriv->pwinShadowUpdate = winShadowUpdateNativeGDI;
- pScreenPriv->pwinCloseScreen = winCloseScreenNativeGDI;
- pScreenPriv->pwinInitVisuals = winInitVisualsNativeGDI;
- pScreenPriv->pwinAdjustVideoMode = winAdjustVideoModeNativeGDI;
- if (pScreenInfo->fFullScreen)
- pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowFullScreen;
- else
- pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowWindowed;
- pScreenPriv->pwinFinishScreenInit = winFinishScreenInitNativeGDI;
- /*
- * WARNING: Do not set the BltExposedRegions procedure pointer to anything
- * other than NULL until a working painting procedure is in place.
- * Else, winWindowProc will get stuck in an infinite loop because
- * Windows expects the BeginPaint and EndPaint functions to be called
- * before a WM_PAINT message can be removed from the queue. We are
- * using NULL here as a signal for winWindowProc that it should
- * not signal that the WM_PAINT message has been processed.
- */
- pScreenPriv->pwinBltExposedRegions = NULL;
- pScreenPriv->pwinActivateApp = winActivateAppNativeGDI;
- pScreenPriv->pwinRedrawScreen = winRedrawScreenNativeGDI;
- pScreenPriv->pwinRealizeInstalledPalette =
- winRealizeInstalledPaletteNativeGDI;
- pScreenPriv->pwinInstallColormap = winInstallColormapNativeGDI;
- pScreenPriv->pwinStoreColors = winStoreColorsNativeGDI;
- pScreenPriv->pwinCreateColormap = winCreateColormapNativeGDI;
- pScreenPriv->pwinDestroyColormap = winDestroyColormapNativeGDI;
- pScreenPriv->pwinHotKeyAltTab = (winHotKeyAltTabProcPtr) (void (*)(void))NoopDDA;
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winpfbdd.c b/nx-X11/programs/Xserver/hw/xwin/winpfbdd.c
deleted file mode 100644
index d9d69039d..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winpfbdd.c
+++ /dev/null
@@ -1,685 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Dakshinamurthy Karra
- * Suhaib M Siddiqi
- * Peter Busch
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winpfbdd.c,v 1.17 2002/10/17 08:18:22 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * External symbols
- */
-
-extern const GUID _IID_IDirectDraw2;
-extern HWND g_hDlgExit;
-
-
-/*
- * Local function prototypes
- */
-
-static Bool
-winAllocateFBPrimaryDD (ScreenPtr pScreen);
-
-static Bool
-winCloseScreenPrimaryDD (int nIndex, ScreenPtr pScreen);
-
-static Bool
-winInitVisualsPrimaryDD (ScreenPtr pScreen);
-
-static Bool
-winAdjustVideoModePrimaryDD (ScreenPtr pScreen);
-
-static Bool
-winActivateAppPrimaryDD (ScreenPtr pScreen);
-
-static Bool
-winHotKeyAltTabPrimaryDD (ScreenPtr pScreen);
-
-
-/*
- * Create a DirectDraw primary surface
- */
-
-static Bool
-winAllocateFBPrimaryDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- HRESULT ddrval = DD_OK;
- DDSURFACEDESC ddsd;
- DDSURFACEDESC *pddsdPrimary = NULL;
- DDSURFACEDESC *pddsdOffscreen = NULL;
- RECT rcClient;
-
- ErrorF ("winAllocateFBPrimaryDD\n");
-
- /* Get client area location in screen coords */
- GetClientRect (pScreenPriv->hwndScreen, &rcClient);
- MapWindowPoints (pScreenPriv->hwndScreen,
- HWND_DESKTOP,
- (LPPOINT)&rcClient, 2);
-
- /* Create a DirectDraw object, store the address at lpdd */
- ddrval = (*g_fpDirectDrawCreate) (NULL, &pScreenPriv->pdd, NULL);
- if (ddrval != DD_OK)
- FatalError ("winAllocateFBPrimaryDD - Could not start DirectDraw\n");
-
- /* Get a DirectDraw2 interface pointer */
- ddrval = IDirectDraw_QueryInterface (pScreenPriv->pdd,
- &IID_IDirectDraw2,
- (LPVOID*) &pScreenPriv->pdd2);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDD - Failed DD2 query: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
-
- ErrorF ("winAllocateFBPrimaryDD - Created and initialized DD\n");
-
- /* Are we windowed or fullscreen? */
- if (pScreenInfo->fFullScreen)
- {
- /* Full screen mode */
- ddrval = IDirectDraw2_SetCooperativeLevel (pScreenPriv->pdd2,
- pScreenPriv->hwndScreen,
- DDSCL_FULLSCREEN
- | DDSCL_EXCLUSIVE);
- if (FAILED (ddrval))
- FatalError ("winAllocateFBPrimaryDD - Could not set "
- "cooperative level\n");
-
- /* Change the video mode to the mode requested */
- ddrval = IDirectDraw2_SetDisplayMode (pScreenPriv->pdd2,
- pScreenInfo->dwWidth,
- pScreenInfo->dwHeight,
- pScreenInfo->dwBPP,
- pScreenInfo->dwRefreshRate,
- 0);
- if (FAILED (ddrval))
- FatalError ("winAllocateFBPrimaryDD - Could not set "
- "full screen display mode\n");
- }
- else
- {
- /* Windowed mode */
- ddrval = IDirectDraw2_SetCooperativeLevel (pScreenPriv->pdd2,
- pScreenPriv->hwndScreen,
- DDSCL_NORMAL);
- if (FAILED (ddrval))
- FatalError ("winAllocateFBPrimaryDD - Could not set "
- "cooperative level\n");
- }
-
- /* Describe the primary surface */
- ZeroMemory (&ddsd, sizeof (ddsd));
- ddsd.dwSize = sizeof (ddsd);
- ddsd.dwFlags = DDSD_CAPS;
- ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
-
- /* Create the primary surface */
- ddrval = IDirectDraw2_CreateSurface (pScreenPriv->pdd2,
- &ddsd,
- &pScreenPriv->pddsPrimary,
- NULL);
- if (FAILED (ddrval))
- FatalError ("winAllocateFBPrimaryDD - Could not create primary "
- "surface %08x\n", (unsigned int) ddrval);
-
- ErrorF ("winAllocateFBPrimaryDD - Created primary\n");
-
- /* Allocate a DD surface description for our screen privates */
- pddsdPrimary = pScreenPriv->pddsdPrimary
- = malloc (sizeof (DDSURFACEDESC));
- if (pddsdPrimary == NULL)
- FatalError ("winAllocateFBPrimaryDD - Could not allocate surface "
- "description memory\n");
- ZeroMemory (pddsdPrimary, sizeof (*pddsdPrimary));
- pddsdPrimary->dwSize = sizeof (*pddsdPrimary);
-
- /* Describe the offscreen surface to be created */
- /*
- * NOTE: Do not use a DDSCAPS_VIDEOMEMORY surface,
- * as drawing, locking, and unlocking take forever
- * with video memory surfaces. In addition,
- * video memory is a somewhat scarce resource,
- * so you shouldn't be allocating video memory when
- * you have the option of using system memory instead.
- */
- ZeroMemory (&ddsd, sizeof (ddsd));
- ddsd.dwSize = sizeof (ddsd);
- ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
- ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
- ddsd.dwHeight = pScreenInfo->dwHeight;
- ddsd.dwWidth = pScreenInfo->dwWidth;
-
- /* Create the shadow surface */
- ddrval = IDirectDraw2_CreateSurface (pScreenPriv->pdd2,
- &ddsd,
- &pScreenPriv->pddsOffscreen,
- NULL);
- if (ddrval != DD_OK)
- FatalError ("winAllocateFBPrimaryDD - Could not create shadow "
- "surface\n");
-
- ErrorF ("winAllocateFBPrimaryDD - Created offscreen\n");
-
- /* Allocate a DD surface description for our screen privates */
- pddsdOffscreen = pScreenPriv->pddsdOffscreen
- = malloc (sizeof (DDSURFACEDESC));
- if (pddsdOffscreen == NULL)
- FatalError ("winAllocateFBPrimaryDD - Could not allocate surface "
- "description memory\n");
- ZeroMemory (pddsdOffscreen, sizeof (*pddsdOffscreen));
- pddsdOffscreen->dwSize = sizeof (*pddsdOffscreen);
-
- ErrorF ("winAllocateFBPrimaryDD - Locking primary\n");
-
- /* Lock the primary surface */
- ddrval = IDirectDrawSurface2_Lock (pScreenPriv->pddsPrimary,
- pScreenInfo->fFullScreen ? NULL:&rcClient,
- pddsdPrimary,
- DDLOCK_WAIT,
- NULL);
- if (ddrval != DD_OK || pddsdPrimary->lpSurface == NULL)
- FatalError ("winAllocateFBPrimaryDD - Could not lock "
- "primary surface\n");
-
- ErrorF ("winAllocateFBPrimaryDD - Locked primary\n");
-
- /* We don't know how to deal with anything other than RGB */
- if (!(pddsdPrimary->ddpfPixelFormat.dwFlags & DDPF_RGB))
- FatalError ("winAllocateFBPrimaryDD - Color format other than RGB\n");
-
- /* Grab the pitch from the surface desc */
- pScreenInfo->dwStride = (pddsdPrimary->u1.lPitch * 8)
- / pScreenInfo->dwBPP;
-
- /* Save the pointer to our surface memory */
- pScreenInfo->pfb = pddsdPrimary->lpSurface;
-
- /* Grab the color depth and masks from the surface description */
- pScreenPriv->dwRedMask = pddsdPrimary->ddpfPixelFormat.u2.dwRBitMask;
- pScreenPriv->dwGreenMask = pddsdPrimary->ddpfPixelFormat.u3.dwGBitMask;
- pScreenPriv->dwBlueMask = pddsdPrimary->ddpfPixelFormat.u4.dwBBitMask;
-
- ErrorF ("winAllocateFBPrimaryDD - Returning\n");
-
- return TRUE;
-}
-
-
-/*
- * Call the wrapped CloseScreen function.
- *
- * Free our resources and private structures.
- */
-
-static Bool
-winCloseScreenPrimaryDD (int nIndex, ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- Bool fReturn;
-
- ErrorF ("winCloseScreenPrimaryDD - Freeing screen resources\n");
-
- /* Flag that the screen is closed */
- pScreenPriv->fClosed = TRUE;
- pScreenPriv->fActive = FALSE;
-
- /* Call the wrapped CloseScreen procedure */
- WIN_UNWRAP(CloseScreen);
- fReturn = (*pScreen->CloseScreen) (nIndex, pScreen);
-
- /* Delete the window property */
- RemoveProp (pScreenPriv->hwndScreen, WIN_SCR_PROP);
-
- /* Free the offscreen surface, if there is one */
- if (pScreenPriv->pddsOffscreen)
- {
- IDirectDrawSurface2_Unlock (pScreenPriv->pddsOffscreen, NULL);
- IDirectDrawSurface2_Release (pScreenPriv->pddsOffscreen);
- pScreenPriv->pddsOffscreen = NULL;
- }
-
- /* Release the primary surface, if there is one */
- if (pScreenPriv->pddsPrimary)
- {
- IDirectDrawSurface2_Unlock (pScreenPriv->pddsPrimary, NULL);
- IDirectDrawSurface2_Release (pScreenPriv->pddsPrimary);
- pScreenPriv->pddsPrimary = NULL;
- }
-
- /* Free the DirectDraw object, if there is one */
- if (pScreenPriv->pdd)
- {
- IDirectDraw2_RestoreDisplayMode (pScreenPriv->pdd);
- IDirectDraw2_Release (pScreenPriv->pdd);
- pScreenPriv->pdd = NULL;
- }
-
- /* Delete tray icon, if we have one */
- if (!pScreenInfo->fNoTrayIcon)
- winDeleteNotifyIcon (pScreenPriv);
-
- /* Free the exit confirmation dialog box, if it exists */
- if (g_hDlgExit != NULL)
- {
- DestroyWindow (g_hDlgExit);
- g_hDlgExit = NULL;
- }
-
- /* Kill our window */
- if (pScreenPriv->hwndScreen)
- {
- DestroyWindow (pScreenPriv->hwndScreen);
- pScreenPriv->hwndScreen = NULL;
- }
-
- /* Kill our screeninfo's pointer to the screen */
- pScreenInfo->pScreen = NULL;
-
- /* Invalidate the ScreenInfo's fb pointer */
- pScreenInfo->pfb = NULL;
-
- /* Free the screen privates for this screen */
- free ((pointer) pScreenPriv);
-
- return fReturn;
-}
-
-
-/*
- * Tell mi what sort of visuals we need.
- *
- * Generally we only need one visual, as our screen can only
- * handle one format at a time, I believe. You may want
- * to verify that last sentence.
- */
-
-static Bool
-winInitVisualsPrimaryDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- DWORD dwRedBits, dwGreenBits, dwBlueBits;
-
- /* Count the number of ones in each color mask */
- dwRedBits = winCountBits (pScreenPriv->dwRedMask);
- dwGreenBits = winCountBits (pScreenPriv->dwGreenMask);
- dwBlueBits = winCountBits (pScreenPriv->dwBlueMask);
-
- /* Store the maximum number of ones in a color mask as the bitsPerRGB */
- if (dwRedBits > dwGreenBits && dwRedBits > dwBlueBits)
- pScreenPriv->dwBitsPerRGB = dwRedBits;
- else if (dwGreenBits > dwRedBits && dwGreenBits > dwBlueBits)
- pScreenPriv->dwBitsPerRGB = dwGreenBits;
- else
- pScreenPriv->dwBitsPerRGB = dwBlueBits;
-
- ErrorF ("winInitVisualsPrimaryDD - Masks: %08x %08x %08x bpRGB: %d\n",
- (unsigned int) pScreenPriv->dwRedMask,
- (unsigned int) pScreenPriv->dwGreenMask,
- (unsigned int) pScreenPriv->dwBlueMask,
- (int) pScreenPriv->dwBitsPerRGB);
-
- /* Create a single visual according to the Windows screen depth */
- switch (pScreenInfo->dwDepth)
- {
- case 24:
- case 16:
- case 15:
- if (!miSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- TrueColorMask,
- pScreenPriv->dwBitsPerRGB,
- TrueColor,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsPrimaryDD - "
- "miSetVisualTypesAndMasks failed\n");
- return FALSE;
- }
- break;
-
- case 8:
-#if CYGDEBUG
- winDebug ("winInitVisuals - Calling miSetVisualTypesAndMasks\n");
-#endif /* CYGDEBUG */
- if (!miSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- PseudoColorMask,
- pScreenPriv->dwBitsPerRGB,
- PseudoColor,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsPrimaryDD - "
- "miSetVisualTypesAndMasks failed\n");
- return FALSE;
- }
-#if CYGDEBUG
- winDebug ("winInitVisualsPrimaryDD - Returned from "
- "miSetVisualTypesAndMasks\n");
-#endif /* CYGDEBUG */
- break;
-
- default:
- ErrorF ("winInitVisualsPrimaryDD - Unknown screen depth\n");
- return FALSE;
- }
-
- ErrorF ("winInitVisualsPrimaryDD - Returning\n");
-
- return TRUE;
-}
-
-
-static Bool
-winAdjustVideoModePrimaryDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- HDC hdc = NULL;
- DWORD dwBPP;
-
- /* We're in serious trouble if we can't get a DC */
- hdc = GetDC (NULL);
- if (hdc == NULL)
- {
- ErrorF ("winAdjustVideoModePrimaryDD - GetDC failed\n");
- return FALSE;
- }
-
- /* Query GDI for current display depth */
- dwBPP = GetDeviceCaps (hdc, BITSPIXEL);
-
- /* DirectDraw can only change the depth in fullscreen mode */
- if (pScreenInfo->dwBPP == WIN_DEFAULT_BPP)
- {
- /* No -depth parameter passed, let the user know the depth being used */
- ErrorF ("winAdjustVideoModePrimaryDD - Using Windows display "
- "depth of %d bits per pixel\n", (int) dwBPP);
-
- /* Use GDI's depth */
- pScreenInfo->dwBPP = dwBPP;
- }
- else if (pScreenInfo->fFullScreen
- && pScreenInfo->dwBPP != dwBPP)
- {
- /* FullScreen, and GDI depth differs from -depth parameter */
- ErrorF ("winAdjustVideoModePrimaryDD - FullScreen, using command "
- "line depth: %d\n", (int) pScreenInfo->dwBPP);
- }
- else if (dwBPP != pScreenInfo->dwBPP)
- {
- /* Windowed, and GDI depth differs from -depth parameter */
- ErrorF ("winAdjustVideoModePrimaryDD - Windowed, command line "
- "depth: %d, using depth: %d\n",
- (int) pScreenInfo->dwBPP, (int) dwBPP);
-
- /* We'll use GDI's depth */
- pScreenInfo->dwBPP = dwBPP;
- }
-
- /* Release our DC */
- ReleaseDC (NULL, hdc);
-
- return TRUE;
-}
-
-
-/*
- * We need to blit our offscreen fb to
- * the screen when we are activated, and we need to point
- * the fb code back to the primary surface memory.
- */
-
-static Bool
-winActivateAppPrimaryDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- RECT rcSrc, rcClient;
- HRESULT ddrval = DD_OK;
-
- /* Check for errors */
- if (pScreenPriv == NULL
- || pScreenPriv->pddsPrimary == NULL
- || pScreenPriv->pddsOffscreen == NULL)
- return FALSE;
-
- /* Check for do-nothing */
- if (!pScreenPriv->fActive)
- return TRUE;
-
- /* We are activating */
- ddrval = IDirectDrawSurface2_IsLost (pScreenPriv->pddsOffscreen);
- if (ddrval == DD_OK)
- {
- IDirectDrawSurface2_Unlock (pScreenPriv->pddsOffscreen,
- NULL);
- /*
- * We don't check for an error from Unlock, because it
- * doesn't matter if the Unlock failed.
- */
- }
-
- /* Restore both surfaces, just cause I like it that way */
- IDirectDrawSurface2_Restore (pScreenPriv->pddsOffscreen);
- IDirectDrawSurface2_Restore (pScreenPriv->pddsPrimary);
-
- /* Get client area in screen coords */
- GetClientRect (pScreenPriv->hwndScreen, &rcClient);
- MapWindowPoints (pScreenPriv->hwndScreen,
- HWND_DESKTOP,
- (LPPOINT)&rcClient, 2);
-
- /* Setup a source rectangle */
- rcSrc.left = 0;
- rcSrc.top = 0;
- rcSrc.right = pScreenInfo->dwWidth;
- rcSrc.bottom = pScreenInfo->dwHeight;
-
- ddrval = IDirectDrawSurface2_Blt (pScreenPriv->pddsPrimary,
- &rcClient,
- pScreenPriv->pddsOffscreen,
- &rcSrc,
- DDBLT_WAIT,
- NULL);
- if (ddrval != DD_OK)
- FatalError ("winActivateAppPrimaryDD () - Failed blitting offscreen "
- "surface to primary surface %08x\n", (unsigned int) ddrval);
-
- /* Lock the primary surface */
- ddrval = IDirectDrawSurface2_Lock (pScreenPriv->pddsPrimary,
- &rcClient,
- pScreenPriv->pddsdPrimary,
- DDLOCK_WAIT,
- NULL);
- if (ddrval != DD_OK
- || pScreenPriv->pddsdPrimary->lpSurface == NULL)
- FatalError ("winActivateAppPrimaryDD () - Could not lock "
- "primary surface\n");
-
- /* Notify FB of the new memory pointer */
- winUpdateFBPointer (pScreen,
- pScreenPriv->pddsdPrimary->lpSurface);
-
- /*
- * Register the Alt-Tab combo as a hotkey so we can copy
- * the primary framebuffer before the display mode changes
- */
- RegisterHotKey (pScreenPriv->hwndScreen, 1, MOD_ALT, 9);
-
- return TRUE;
-}
-
-
-/*
- * Handle the Alt+Tab hotkey.
- *
- * We need to save the primary fb to an offscreen fb when
- * we get deactivated, and point the fb code at the offscreen
- * fb for the duration of the deactivation.
- */
-
-static Bool
-winHotKeyAltTabPrimaryDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- RECT rcClient, rcSrc;
- HRESULT ddrval = DD_OK;
-
- ErrorF ("\nwinHotKeyAltTabPrimaryDD\n\n");
-
- /* Alt+Tab was pressed, we will lose focus very soon */
- pScreenPriv->fActive = FALSE;
-
- /* Check for error conditions */
- if (pScreenPriv->pddsPrimary == NULL
- || pScreenPriv->pddsOffscreen == NULL)
- return FALSE;
-
- /* Get client area in screen coords */
- GetClientRect (pScreenPriv->hwndScreen, &rcClient);
- MapWindowPoints (pScreenPriv->hwndScreen,
- HWND_DESKTOP,
- (LPPOINT)&rcClient, 2);
-
- /* Did we loose the primary surface? */
- ddrval = IDirectDrawSurface2_IsLost (pScreenPriv->pddsPrimary);
- if (ddrval == DD_OK)
- {
- ddrval = IDirectDrawSurface2_Unlock (pScreenPriv->pddsPrimary,
- NULL);
- if (FAILED (ddrval))
- FatalError ("winHotKeyAltTabPrimaryDD - Failed unlocking primary "
- "surface\n");
- }
-
- /* Setup a source rectangle */
- rcSrc.left = 0;
- rcSrc.top = 0;
- rcSrc.right = pScreenInfo->dwWidth;
- rcSrc.bottom = pScreenInfo->dwHeight;
-
- /* Blit the primary surface to the offscreen surface */
- ddrval = IDirectDrawSurface2_Blt (pScreenPriv->pddsOffscreen,
- NULL, /* should be rcDest */
- pScreenPriv->pddsPrimary,
- NULL,
- DDBLT_WAIT,
- NULL);
- if (ddrval == DDERR_SURFACELOST)
- {
- IDirectDrawSurface2_Restore (pScreenPriv->pddsOffscreen);
- IDirectDrawSurface2_Restore (pScreenPriv->pddsPrimary);
-
- /* Blit the primary surface to the offscreen surface */
- ddrval = IDirectDrawSurface2_Blt (pScreenPriv->pddsOffscreen,
- NULL,
- pScreenPriv->pddsPrimary,
- NULL,
- DDBLT_WAIT,
- NULL);
- if (FAILED (ddrval))
- FatalError ("winHotKeyAltTabPrimaryDD - Failed blitting primary "
- "surface to offscreen surface: %08x\n",
- (unsigned int) ddrval);
- }
- else
- {
- FatalError ("winHotKeyAltTabPrimaryDD - Unknown error from "
- "Blt: %08dx\n", (unsigned int) ddrval);
- }
-
- /* Lock the offscreen surface */
- ddrval = IDirectDrawSurface2_Lock (pScreenPriv->pddsOffscreen,
- NULL,
- pScreenPriv->pddsdOffscreen,
- DDLOCK_WAIT,
- NULL);
- if (ddrval != DD_OK
- || pScreenPriv->pddsdPrimary->lpSurface == NULL)
- FatalError ("winHotKeyAltTabPrimaryDD - Could not lock "
- "offscreen surface\n");
-
- /* Notify FB of the new memory pointer */
- winUpdateFBPointer (pScreen,
- pScreenPriv->pddsdOffscreen->lpSurface);
-
- /* Unregister our hotkey */
- UnregisterHotKey (pScreenPriv->hwndScreen, 1);
-
- return TRUE;
-}
-
-
-/* Set engine specific functions */
-Bool
-winSetEngineFunctionsPrimaryDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- /* Set our pointers */
- pScreenPriv->pwinAllocateFB = winAllocateFBPrimaryDD;
- pScreenPriv->pwinShadowUpdate
- = (winShadowUpdateProcPtr) (void (*)(void))NoopDDA;
- pScreenPriv->pwinCloseScreen = winCloseScreenPrimaryDD;
- pScreenPriv->pwinInitVisuals = winInitVisualsPrimaryDD;
- pScreenPriv->pwinAdjustVideoMode = winAdjustVideoModePrimaryDD;
- if (pScreenInfo->fFullScreen)
- pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowFullScreen;
- else
- pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowWindowed;
- pScreenPriv->pwinFinishScreenInit = winFinishScreenInitFB;
- pScreenPriv->pwinBltExposedRegions
- = (winBltExposedRegionsProcPtr) (void (*)(void))NoopDDA;
- pScreenPriv->pwinActivateApp = winActivateAppPrimaryDD;
- pScreenPriv->pwinHotKeyAltTab = winHotKeyAltTabPrimaryDD;
-#ifdef XWIN_MULTIWINDOW
- pScreenPriv->pwinFinishCreateWindowsWindow =
- (winFinishCreateWindowsWindowProcPtr) (void (*)(void))NoopDDA;
-#endif
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winpixmap.c b/nx-X11/programs/Xserver/hw/xwin/winpixmap.c
deleted file mode 100644
index 2780a3921..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winpixmap.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: drewry, september 1986
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winpixmap.c,v 1.10 2002/10/17 08:18:24 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * References to external symbols
- */
-
-extern int g_iPixmapPrivateIndex;
-
-
-/*
- * Local prototypes
- */
-
-#if 0
-static void
-winXRotatePixmapNativeGDI (PixmapPtr pPix, int rw);
-
-static void
-winYRotatePixmapNativeGDI (PixmapPtr pPix, int rh);
-
-static void
-winCopyRotatePixmapNativeGDI (PixmapPtr psrcPix, PixmapPtr *ppdstPix,
- int xrot, int yrot);
-#endif
-
-
-/* See Porting Layer Definition - p. 34 */
-/* See mfb/mfbpixmap.c - mfbCreatePixmap() */
-PixmapPtr
-winCreatePixmapNativeGDI (ScreenPtr pScreen,
- int iWidth, int iHeight,
- int iDepth)
-{
- winPrivPixmapPtr pPixmapPriv = NULL;
- PixmapPtr pPixmap = NULL;
-
- /* Allocate pixmap memory */
- pPixmap = AllocatePixmap (pScreen, 0);
- if (!pPixmap)
- {
- ErrorF ("winCreatePixmapNativeGDI () - Couldn't allocate a pixmap\n");
- return NullPixmap;
- }
-
-#if CYGDEBUG
- winDebug ("winCreatePixmap () - w %d h %d d %d bw %d\n",
- iWidth, iHeight, iDepth,
- PixmapBytePad (iWidth, iDepth));
-#endif
-
- /* Setup pixmap values */
- pPixmap->drawable.type = DRAWABLE_PIXMAP;
- pPixmap->drawable.class = 0;
- pPixmap->drawable.pScreen = pScreen;
- pPixmap->drawable.depth = iDepth;
- pPixmap->drawable.bitsPerPixel = BitsPerPixel (iDepth);
- pPixmap->drawable.id = 0;
- pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- pPixmap->drawable.x = 0;
- pPixmap->drawable.y = 0;
- pPixmap->drawable.width = iWidth;
- pPixmap->drawable.height = iHeight;
- pPixmap->devKind = 0;
- pPixmap->refcnt = 1;
- pPixmap->devPrivate.ptr = NULL;
-
- /* Pixmap privates are allocated by AllocatePixmap */
- pPixmapPriv = winGetPixmapPriv (pPixmap);
-
- /* Initialize pixmap privates */
- pPixmapPriv->hBitmap = NULL;
- pPixmapPriv->hdcSelected = NULL;
- pPixmapPriv->pbBits = NULL;
- pPixmapPriv->dwScanlineBytes = PixmapBytePad (iWidth, iDepth);
-
- /* Check for zero width or height pixmaps */
- if (iWidth == 0 || iHeight == 0)
- {
- /* Don't allocate a real pixmap, just set fields and return */
- return pPixmap;
- }
-
- /* Create a DIB for the pixmap */
- pPixmapPriv->hBitmap = winCreateDIBNativeGDI (iWidth, iHeight, iDepth,
- &pPixmapPriv->pbBits,
- (BITMAPINFO **) &pPixmapPriv->pbmih);
-
-#if CYGDEBUG
- winDebug ("winCreatePixmap () - Created a pixmap %08x, %dx%dx%d, for " \
- "screen: %08x\n",
- pPixmapPriv->hBitmap, iWidth, iHeight, iDepth, pScreen);
-#endif
-
- return pPixmap;
-}
-
-
-/*
- * See Porting Layer Definition - p. 35
- *
- * See mfb/mfbpixmap.c - mfbDestroyPixmap()
- */
-
-Bool
-winDestroyPixmapNativeGDI (PixmapPtr pPixmap)
-{
- winPrivPixmapPtr pPixmapPriv = NULL;
-
-#if CYGDEBUG
- winDebug ("winDestroyPixmapNativeGDI ()\n");
-#endif
-
- /* Bail early if there is not a pixmap to destroy */
- if (pPixmap == NULL)
- {
- ErrorF ("winDestroyPixmapNativeGDI () - No pixmap to destroy\n");
- return TRUE;
- }
-
- /* Get a handle to the pixmap privates */
- pPixmapPriv = winGetPixmapPriv (pPixmap);
-
-#if CYGDEBUG
- winDebug ("winDestroyPixmapNativeGDI - pPixmapPriv->hBitmap: %08x\n",
- pPixmapPriv->hBitmap);
-#endif
-
- /* Decrement reference count, return if nonzero */
- --pPixmap->refcnt;
- if (pPixmap->refcnt != 0)
- return TRUE;
-
- /* Free GDI bitmap */
- if (pPixmapPriv->hBitmap) DeleteObject (pPixmapPriv->hBitmap);
-
- /* Free the bitmap info header memory */
- if (pPixmapPriv->pbmih != NULL)
- {
- free (pPixmapPriv->pbmih);
- pPixmapPriv->pbmih = NULL;
- }
-
- /* Free the pixmap memory */
- free (pPixmap);
- pPixmap = NULL;
-
- return TRUE;
-}
-
-
-/*
- * Not used yet
- */
-
-Bool
-winModifyPixmapHeaderNativeGDI (PixmapPtr pPixmap,
- int iWidth, int iHeight,
- int iDepth,
- int iBitsPerPixel,
- int devKind,
- pointer pPixData)
-{
- FatalError ("winModifyPixmapHeaderNativeGDI ()\n");
- return TRUE;
-}
-
-
-#if 0
-/*
- * Not used yet.
- * See cfb/cfbpixmap.c
- */
-
-static void
-winXRotatePixmapNativeGDI (PixmapPtr pPix, int rw)
-{
- ErrorF ("winXRotatePixmap()\n");
- /* fill in this function, look at CFB */
-}
-
-
-/*
- * Not used yet.
- * See cfb/cfbpixmap.c
- */
-static void
-winYRotatePixmapNativeGDI (PixmapPtr pPix, int rh)
-{
- ErrorF ("winYRotatePixmap()\n");
- /* fill in this function, look at CFB */
-}
-
-
-/*
- * Not used yet.
- * See cfb/cfbpixmap.c
- */
-
-static void
-winCopyRotatePixmapNativeGDI (PixmapPtr psrcPix, PixmapPtr *ppdstPix,
- int xrot, int yrot)
-{
- ErrorF ("winCopyRotatePixmap()\n");
- /* fill in this function, look at CFB */
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winpntwin.c b/nx-X11/programs/Xserver/hw/xwin/winpntwin.c
deleted file mode 100644
index caee712c9..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winpntwin.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-/* See Porting Layer Definition - p. 39
- * Sometimes implemented as two functions:
- * PaintWindowBackground (nKind = PW_BACKGROUND)
- * PaintWindowBorder (nKind = PW_BORDER)
- */
-void
-winPaintWindowNativeGDI (WindowPtr pWin,
- RegionPtr pRegion,
- int nKind)
-{
- ErrorF ("winPaintWindow()\n");
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winpolyline.c b/nx-X11/programs/Xserver/hw/xwin/winpolyline.c
deleted file mode 100644
index db9dd345b..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winpolyline.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-/* See Porting Layer Definition - p. 50 */
-void
-winPolyLineNativeGDI (DrawablePtr pDrawable,
- GCPtr pGC,
- int mode,
- int npt,
- DDXPointPtr ppt)
-{
- switch (pGC->lineStyle)
- {
- case LineSolid:
- if (pGC->lineWidth == 0)
- return miZeroLine (pDrawable, pGC, mode, npt, ppt);
- else
- miWideLine (pDrawable, pGC, mode, npt, ppt);
- break;
- case LineOnOffDash:
- case LineDoubleDash:
- miWideDash (pDrawable, pGC, mode, npt, ppt);
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winprefs.c b/nx-X11/programs/Xserver/hw/xwin/winprefs.c
deleted file mode 100644
index bbe04bd7b..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winprefs.c
+++ /dev/null
@@ -1,799 +0,0 @@
-/*
- * Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- * 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 XFree86 Project.
- *
- * Authors: Earle F. Philhower, III
- */
-/* $XFree86: $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef __CYGWIN__
-#include <sys/resource.h>
-#endif
-#include "win.h"
-
-#include <X11/Xwindows.h>
-#include <shellapi.h>
-
-#include "winprefs.h"
-#include "winmultiwindowclass.h"
-
-/* Where will the custom menu commands start counting from? */
-#define STARTMENUID WM_USER
-
-/* External global variables */
-#ifdef XWIN_MULTIWINDOW
-extern DWORD g_dwCurrentThreadID;
-#endif
-
-extern const char *winGetBaseDir(void);
-
-/* From winmultiwindowflex.l, the real parser */
-extern void parse_file (FILE *fp);
-
-/* From winprefyacc.y, the pref structure loaded by the parser */
-extern WINPREFS pref;
-
-/* The global X default icon */
-extern HICON g_hIconX;
-extern HICON g_hSmallIconX;
-
-/* Currently in use command ID, incremented each new menu item created */
-static int g_cmdid = STARTMENUID;
-
-
-/* Defined in DIX */
-extern char *display;
-
-/* Local function to handle comma-ified icon names */
-static HICON
-LoadImageComma (char *fname, int sx, int sy, int flags);
-
-
-/*
- * Creates or appends a menu from a MENUPARSED structure
- */
-static HMENU
-MakeMenu (char *name,
- HMENU editMenu,
- int editItem)
-{
- int i;
- int item;
- MENUPARSED *m;
- HMENU hmenu, hsub;
-
- for (i=0; i<pref.menuItems; i++)
- {
- if (!strcmp(name, pref.menu[i].menuName))
- break;
- }
-
- /* Didn't find a match, bummer */
- if (i==pref.menuItems)
- {
- ErrorF("MakeMenu: Can't find menu %s\n", name);
- return NULL;
- }
-
- m = &(pref.menu[i]);
-
- if (editMenu)
- {
- hmenu = editMenu;
- item = editItem;
- }
- else
- {
- hmenu = CreatePopupMenu();
- if (!hmenu)
- {
- ErrorF("MakeMenu: Unable to CreatePopupMenu() %s\n", name);
- return NULL;
- }
- item = 0;
- }
-
- /* Add the menu items */
- for (i=0; i<m->menuItems; i++)
- {
- /* Only assign IDs one time... */
- if ( m->menuItem[i].commandID == 0 )
- m->menuItem[i].commandID = g_cmdid++;
-
- switch (m->menuItem[i].cmd)
- {
- case CMD_EXEC:
- case CMD_ALWAYSONTOP:
- case CMD_RELOAD:
- InsertMenu (hmenu,
- item,
- MF_BYPOSITION|MF_ENABLED|MF_STRING,
- m->menuItem[i].commandID,
- m->menuItem[i].text);
- break;
-
- case CMD_SEPARATOR:
- InsertMenu (hmenu,
- item,
- MF_BYPOSITION|MF_SEPARATOR,
- 0,
- NULL);
- break;
-
- case CMD_MENU:
- /* Recursive! */
- hsub = MakeMenu (m->menuItem[i].param, 0, 0);
- if (hsub)
- InsertMenu (hmenu,
- item,
- MF_BYPOSITION|MF_POPUP|MF_ENABLED|MF_STRING,
- (UINT_PTR)hsub,
- m->menuItem[i].text);
- break;
- }
-
- /* If item==-1 (means to add at end of menu) don't increment) */
- if (item>=0)
- item++;
- }
-
- return hmenu;
-}
-
-
-#ifdef XWIN_MULTIWINDOW
-/*
- * Callback routine that is executed once per window class.
- * Removes or creates custom window settings depending on LPARAM
- */
-static wBOOL CALLBACK
-ReloadEnumWindowsProc (HWND hwnd, LPARAM lParam)
-{
- HICON hicon;
- Window wid;
-
- if (!hwnd) {
- ErrorF("ReloadEnumWindowsProc: hwnd==NULL!\n");
- return FALSE;
- }
-
- /* It's our baby, either clean or dirty it */
- if (lParam==FALSE)
- {
- hicon = (HICON)GetClassLong(hwnd, GCL_HICON);
-
- /* Unselect any icon in the class structure */
- SetClassLong (hwnd, GCL_HICON, (LONG)LoadIcon (NULL, IDI_APPLICATION));
-
- /* If it's generated on-the-fly, get rid of it, will regen */
- winDestroyIcon (hicon);
-
- hicon = (HICON)GetClassLong(hwnd, GCL_HICONSM);
-
- /* Unselect any icon in the class structure */
- SetClassLong (hwnd, GCL_HICONSM, 0);
-
- /* If it's generated on-the-fly, get rid of it, will regen */
- winDestroyIcon (hicon);
-
- /* Remove any menu additions, use bRevert flag */
- GetSystemMenu (hwnd, TRUE);
-
- /* This window is now clean of our taint */
- }
- else
- {
- /* Make the icon default, dynamic, or from xwinrc */
- SetClassLong (hwnd, GCL_HICON, (LONG)g_hIconX);
- SetClassLong (hwnd, GCL_HICONSM, (LONG)g_hSmallIconX);
- wid = (Window)GetProp (hwnd, WIN_WID_PROP);
- if (wid)
- winUpdateIcon (wid);
- /* Update the system menu for this window */
- SetupSysMenu ((unsigned long)hwnd);
-
- /* That was easy... */
- }
-
- return TRUE;
-}
-#endif
-
-
-/*
- * Removes any custom icons in classes, custom menus, etc.
- * Frees all members in pref structure.
- * Reloads the preferences file.
- * Set custom icons and menus again.
- */
-static void
-ReloadPrefs (void)
-{
- int i;
-
-#ifdef XWIN_MULTIWINDOW
- /* First, iterate over all windows replacing their icon with system */
- /* default one and deleting any custom system menus */
- EnumThreadWindows (g_dwCurrentThreadID, ReloadEnumWindowsProc, FALSE);
-#endif
-
- /* Now, free/clear all info from our prefs structure */
- for (i=0; i<pref.menuItems; i++)
- free (pref.menu[i].menuItem);
- free (pref.menu);
- pref.menu = NULL;
- pref.menuItems = 0;
-
- pref.rootMenuName[0] = 0;
-
- free (pref.sysMenu);
- pref.sysMenuItems = 0;
-
- pref.defaultSysMenuName[0] = 0;
- pref.defaultSysMenuPos = 0;
-
- pref.iconDirectory[0] = 0;
- pref.defaultIconName[0] = 0;
- pref.trayIconName[0] = 0;
-
- for (i=0; i<pref.iconItems; i++)
- if (pref.icon[i].hicon)
- DestroyIcon ((HICON)pref.icon[i].hicon);
- free (pref.icon);
- pref.icon = NULL;
- pref.iconItems = 0;
-
- /* Free global default X icon */
- if (g_hIconX)
- DestroyIcon (g_hIconX);
- if (g_hSmallIconX)
- DestroyIcon (g_hSmallIconX);
-
- /* Reset the custom command IDs */
- g_cmdid = STARTMENUID;
-
- /* Load the updated resource file */
- LoadPreferences();
-
- g_hIconX = NULL;
- g_hSmallIconX = NULL;
-
-#ifdef XWIN_MULTIWINDOW
- winInitGlobalIcons();
-#endif
-
-#ifdef XWIN_MULTIWINDOW
- /* Rebuild the icons and menus */
- EnumThreadWindows (g_dwCurrentThreadID, ReloadEnumWindowsProc, TRUE);
-#endif
-
- /* Whew, done */
-}
-
-/*
- * Check/uncheck the ALWAYSONTOP items in this menu
- */
-void
-HandleCustomWM_INITMENU(unsigned long hwndIn,
- unsigned long hmenuIn)
-{
- HWND hwnd;
- HMENU hmenu;
- DWORD dwExStyle;
- int i, j;
-
- hwnd = (HWND)hwndIn;
- hmenu = (HMENU)hmenuIn;
- if (!hwnd || !hmenu)
- return;
-
- if (GetWindowLong (hwnd, GWL_EXSTYLE) & WS_EX_TOPMOST)
- dwExStyle = MF_BYCOMMAND | MF_CHECKED;
- else
- dwExStyle = MF_BYCOMMAND | MF_UNCHECKED;
-
- for (i=0; i<pref.menuItems; i++)
- for (j=0; j<pref.menu[i].menuItems; j++)
- if (pref.menu[i].menuItem[j].cmd==CMD_ALWAYSONTOP)
- CheckMenuItem (hmenu, pref.menu[i].menuItem[j].commandID, dwExStyle );
-
-}
-
-/*
- * Searches for the custom WM_COMMAND command ID and performs action.
- * Return TRUE if command is proccessed, FALSE otherwise.
- */
-Bool
-HandleCustomWM_COMMAND (unsigned long hwndIn,
- int command)
-{
- HWND hwnd;
- int i, j;
- MENUPARSED *m;
- DWORD dwExStyle;
-
- hwnd = (HWND)hwndIn;
-
- if (!command)
- return FALSE;
-
- for (i=0; i<pref.menuItems; i++)
- {
- m = &(pref.menu[i]);
- for (j=0; j<m->menuItems; j++)
- {
- if (command==m->menuItem[j].commandID)
- {
- /* Match! */
- switch(m->menuItem[j].cmd)
- {
-#ifdef __CYGWIN__
- case CMD_EXEC:
- if (fork()==0)
- {
- struct rlimit rl;
- unsigned long i;
-
- /* Close any open descriptors except for STD* */
- getrlimit (RLIMIT_NOFILE, &rl);
- for (i = STDERR_FILENO+1; i < rl.rlim_cur; i++)
- close(i);
-
- /* Disassociate any TTYs */
- setsid();
-
- execl ("/bin/sh",
- "/bin/sh",
- "-c",
- m->menuItem[j].param,
- NULL);
- exit (0);
- }
- else
- return TRUE;
- break;
-#endif
- case CMD_ALWAYSONTOP:
- if (!hwnd)
- return FALSE;
-
- /* Get extended window style */
- dwExStyle = GetWindowLong (hwnd, GWL_EXSTYLE);
-
- /* Handle topmost windows */
- if (dwExStyle & WS_EX_TOPMOST)
- SetWindowPos (hwnd,
- HWND_NOTOPMOST,
- 0, 0,
- 0, 0,
- SWP_NOSIZE | SWP_NOMOVE);
- else
- SetWindowPos (hwnd,
- HWND_TOPMOST,
- 0, 0,
- 0, 0,
- SWP_NOSIZE | SWP_NOMOVE);
-#if XWIN_MULTIWINDOW
- /* Reflect the changed Z order */
- winReorderWindowsMultiWindow ();
-#endif
- return TRUE;
-
- case CMD_RELOAD:
- ReloadPrefs();
- return TRUE;
-
- default:
- return FALSE;
- }
- } /* match */
- } /* for j */
- } /* for i */
-
- return FALSE;
-}
-
-
-#ifdef XWIN_MULTIWINDOW
-/*
- * Add the default or a custom menu depending on the class match
- */
-void
-SetupSysMenu (unsigned long hwndIn)
-{
- HWND hwnd;
- HMENU sys;
- int i;
- WindowPtr pWin;
- char *res_name, *res_class;
-
- hwnd = (HWND)hwndIn;
- if (!hwnd)
- return;
-
- pWin = GetProp (hwnd, WIN_WINDOW_PROP);
-
- sys = GetSystemMenu (hwnd, FALSE);
- if (!sys)
- return;
-
- if (pWin)
- {
- /* First see if there's a class match... */
- if (winMultiWindowGetClassHint (pWin, &res_name, &res_class))
- {
- for (i=0; i<pref.sysMenuItems; i++)
- {
- if (!strcmp(pref.sysMenu[i].match, res_name) ||
- !strcmp(pref.sysMenu[i].match, res_class) )
- {
- free(res_name);
- free(res_class);
-
- MakeMenu (pref.sysMenu[i].menuName, sys,
- pref.sysMenu[i].menuPos==AT_START?0:-1);
- return;
- }
- }
-
- /* No match, just free alloc'd strings */
- free(res_name);
- free(res_class);
- } /* Found wm_class */
- } /* if pwin */
-
- /* Fallback to system default */
- if (pref.defaultSysMenuName[0])
- {
- if (pref.defaultSysMenuPos==AT_START)
- MakeMenu (pref.defaultSysMenuName, sys, 0);
- else
- MakeMenu (pref.defaultSysMenuName, sys, -1);
- }
-}
-#endif
-
-
-/*
- * Possibly add a menu to the toolbar icon
- */
-void
-SetupRootMenu (unsigned long hmenuRoot)
-{
- HMENU root;
-
- root = (HMENU)hmenuRoot;
- if (!root)
- return;
-
- if (pref.rootMenuName[0])
- {
- MakeMenu(pref.rootMenuName, root, 0);
- }
-}
-
-
-/*
- * Check for and return an overridden default ICON specified in the prefs
- */
-unsigned long
-winOverrideDefaultIcon(int size)
-{
- HICON hicon;
-
- if (pref.defaultIconName[0])
- {
- hicon = LoadImageComma (pref.defaultIconName, size, size, 0);
- if (hicon==NULL)
- ErrorF ("winOverrideDefaultIcon: LoadImageComma(%s) failed\n",
- pref.defaultIconName);
-
- return (unsigned long)hicon;
- }
-
- return 0;
-}
-
-
-/*
- * Return the HICON to use in the taskbar notification area
- */
-unsigned long
-winTaskbarIcon(void)
-{
- HICON hicon;
-
- hicon = 0;
- /* First try and load an overridden, if success then return it */
- if (pref.trayIconName[0])
- {
- hicon = LoadImageComma (pref.trayIconName,
- GetSystemMetrics (SM_CXSMICON),
- GetSystemMetrics (SM_CYSMICON),
- 0 );
- }
-
- /* Otherwise return the default */
- if (!hicon)
- hicon = (HICON) LoadImage (g_hInstance,
- MAKEINTRESOURCE(IDI_XWIN),
- IMAGE_ICON,
- GetSystemMetrics (SM_CXSMICON),
- GetSystemMetrics (SM_CYSMICON),
- 0);
-
- return (unsigned long)hicon;
-}
-
-
-/*
- * Parse a filename to extract an icon:
- * If fname is exactly ",nnn" then extract icon from our resource
- * else if it is "file,nnn" then extract icon nnn from that file
- * else try to load it as an .ico file and if that fails return NULL
- */
-static HICON
-LoadImageComma (char *fname, int sx, int sy, int flags)
-{
- HICON hicon;
- int index;
- char file[PATH_MAX+NAME_MAX+2];
-
- /* Some input error checking */
- if (!fname || !fname[0])
- return NULL;
-
- index = 0;
- hicon = NULL;
-
- if (fname[0]==',')
- {
- /* It's the XWIN.EXE resource they want */
- index = atoi (fname+1);
- hicon = LoadImage (g_hInstance,
- MAKEINTRESOURCE(index),
- IMAGE_ICON,
- sx,
- sy,
- flags);
- }
- else
- {
- file[0] = 0;
- /* Prepend path if not given a "X:\" filename */
- if ( !(fname[0] && fname[1]==':' && fname[2]=='\\') )
- {
- strcpy (file, pref.iconDirectory);
- if (pref.iconDirectory[0])
- if (fname[strlen(fname)-1]!='\\')
- strcat (file, "\\");
- }
- strcat (file, fname);
-
- if (strrchr (file, ','))
- {
- /* Specified as <fname>,<index> */
-
- *(strrchr (file, ',')) = 0; /* End string at comma */
- index = atoi (strrchr (fname, ',') + 1);
- hicon = ExtractIcon (g_hInstance, file, index);
- }
- else
- {
- /* Just an .ico file... */
-
- hicon = (HICON)LoadImage (NULL,
- file,
- IMAGE_ICON,
- sx,
- sy,
- LR_LOADFROMFILE|flags);
- }
- }
- return hicon;
-}
-
-/*
- * Check for a match of the window class to one specified in the
- * ICONS{} section in the prefs file, and load the icon from a file
- */
-unsigned long
-winOverrideIcon (unsigned long longWin)
-{
- WindowPtr pWin = (WindowPtr) longWin;
- char *res_name, *res_class;
- int i;
- HICON hicon;
- char *wmName;
-
- if (pWin==NULL)
- return 0;
-
- /* If we can't find the class, we can't override from default! */
- if (!winMultiWindowGetClassHint (pWin, &res_name, &res_class))
- return 0;
-
- winMultiWindowGetWMName (pWin, &wmName);
-
- for (i=0; i<pref.iconItems; i++) {
- if (!strcmp(pref.icon[i].match, res_name) ||
- !strcmp(pref.icon[i].match, res_class) ||
- (wmName && strstr(wmName, pref.icon[i].match)))
- {
- free (res_name);
- free (res_class);
- if (wmName)
- free (wmName);
-
- if (pref.icon[i].hicon)
- return pref.icon[i].hicon;
-
- hicon = LoadImageComma (pref.icon[i].iconFile, 0, 0, LR_DEFAULTSIZE);
- if (hicon==NULL)
- ErrorF ("winOverrideIcon: LoadImageComma(%s) failed\n",
- pref.icon[i].iconFile);
-
- pref.icon[i].hicon = (unsigned long)hicon;
- return (unsigned long)hicon;
- }
- }
-
- /* Didn't find the icon, fail gracefully */
- free (res_name);
- free (res_class);
- if (wmName)
- free (wmName);
-
- return 0;
-}
-
-
-/*
- * Should we free this icon or leave it in memory (is it part of our
- * ICONS{} overrides)?
- */
-int
-winIconIsOverride(unsigned hiconIn)
-{
- HICON hicon;
- int i;
-
- hicon = (HICON)hiconIn;
-
- if (!hicon)
- return 0;
-
- for (i=0; i<pref.iconItems; i++)
- if ((HICON)pref.icon[i].hicon == hicon)
- return 1;
-
- return 0;
-}
-
-
-
-/*
- * Try and open ~/.XWinrc and /usr/X11R6/lib/X11/system.XWinrc
- * Load it into prefs structure for use by other functions
- */
-void
-LoadPreferences ()
-{
- char *home;
- char fname[PATH_MAX+NAME_MAX+2];
- FILE *prefFile;
- char szDisplay[512];
- char *szEnvDisplay;
- int i, j;
- char param[PARAM_MAX+1];
- char *srcParam, *dstParam;
-
- /* First, clear all preference settings */
- memset (&pref, 0, sizeof(pref));
- prefFile = NULL;
-
- /* Now try and find a ~/.xwinrc file */
- home = getenv ("HOME");
- if (home)
- {
- strcpy (fname, home);
- if (fname[strlen(fname)-1]!='/')
- strcat (fname, "/");
- strcat (fname, ".XWinrc");
-
- prefFile = fopen (fname, "r");
- if (prefFile)
- ErrorF ("winPrefsLoadPreferences: %s\n", fname);
- }
-
- /* No home file found, check system default */
- if (!prefFile)
- {
- char buffer[MAX_PATH];
-#ifdef RELOCATE_PROJECTROOT
- snprintf(buffer, sizeof(buffer), "%s\\system.XWinrc", winGetBaseDir());
-#else
- strncpy(buffer, PROJECTROOT"/lib/X11/system.XWinrc", sizeof(buffer));
-#endif
- buffer[sizeof(buffer)-1] = 0;
- prefFile = fopen (buffer, "r");
- if (prefFile)
- ErrorF ("winPrefsLoadPreferences: %s\n", buffer);
- }
-
- /* If we could open it, then read the settings and close it */
- if (prefFile)
- {
- parse_file (prefFile);
- fclose (prefFile);
- }
-
- /* Setup a DISPLAY environment variable, need to allocate on heap */
- /* because putenv doesn't copy the argument... */
- snprintf (szDisplay, 512, "DISPLAY=127.0.0.1:%s.0", display);
- szEnvDisplay = (char *)(malloc (strlen(szDisplay)+1));
- if (szEnvDisplay)
- {
- strcpy (szEnvDisplay, szDisplay);
- putenv (szEnvDisplay);
- }
-
- /* Replace any "%display%" in menu commands with display string */
- snprintf (szDisplay, 512, "127.0.0.1:%s.0", display);
- for (i=0; i<pref.menuItems; i++)
- {
- for (j=0; j<pref.menu[i].menuItems; j++)
- {
- if (pref.menu[i].menuItem[j].cmd==CMD_EXEC)
- {
- srcParam = pref.menu[i].menuItem[j].param;
- dstParam = param;
- while (*srcParam) {
- if (!strncmp(srcParam, "%display%", 9))
- {
- memcpy (dstParam, szDisplay, strlen(szDisplay));
- dstParam += strlen(szDisplay);
- srcParam += 9;
- }
- else
- {
- *dstParam = *srcParam;
- dstParam++;
- srcParam++;
- }
- }
- *dstParam = 0;
- strcpy (pref.menu[i].menuItem[j].param, param);
- } /* cmd==cmd_exec */
- } /* for all menuitems */
- } /* for all menus */
-
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winprefs.h b/nx-X11/programs/Xserver/hw/xwin/winprefs.h
deleted file mode 100644
index 2e58e5e9d..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winprefs.h
+++ /dev/null
@@ -1,163 +0,0 @@
-#if !defined(WINPREFS_H)
-#define WINPREFS_H
-/*
- * Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- * 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 XFree86 Project.
- *
- * Authors: Earle F. Philhower, III
- */
-/* $XFree86: $ */
-
-/* Need Bool */
-#include <X11/Xdefs.h>
-/* Need TRUE */
-#include "misc.h"
-
-/* Need to know how long paths can be... */
-#include <limits.h>
-/* Xwindows redefines PATH_MAX to at least 1024 */
-#include <X11/Xwindows.h>
-
-#ifndef NAME_MAX
-#define NAME_MAX PATH_MAX
-#endif
-#define MENU_MAX 128 /* Maximum string length of a menu name or item */
-#define PARAM_MAX (4*PATH_MAX) /* Maximum length of a parameter to a MENU */
-
-
-/* Supported commands in a MENU {} statement */
-typedef enum MENUCOMMANDTYPE
-{
- CMD_EXEC, /* /bin/sh -c the parameter */
- CMD_MENU, /* Display a popup menu named param */
- CMD_SEPARATOR, /* Menu separator */
- CMD_ALWAYSONTOP, /* Toggle always-on-top mode */
- CMD_RELOAD /* Reparse the .XWINRC file */
-} MENUCOMMANDTYPE;
-
-/* Where to place a system menu */
-typedef enum MENUPOSITION
-{
- AT_START, /* Place menu at the top of the system menu */
- AT_END /* Put it at the bottom of the menu (default) */
-} MENUPOSITION;
-
-/* Menu item definitions */
-typedef struct MENUITEM
-{
- char text[MENU_MAX+1]; /* To be displayed in menu */
- MENUCOMMANDTYPE cmd; /* What should it do? */
- char param[PARAM_MAX+1]; /* Any parameters? */
- unsigned long commandID; /* Windows WM_COMMAND ID assigned at runtime */
-} MENUITEM;
-
-/* A completely read in menu... */
-typedef struct MENUPARSED
-{
- char menuName[MENU_MAX+1]; /* What's it called in the text? */
- MENUITEM *menuItem; /* Array of items */
- int menuItems; /* How big's the array? */
-} MENUPARSED;
-
-/* To map between a window and a system menu to add for it */
-typedef struct SYSMENUITEM
-{
- char match[MENU_MAX+1]; /* String to look for to apply this sysmenu */
- char menuName[MENU_MAX+1]; /* Which menu to show? Used to set *menu */
- MENUPOSITION menuPos; /* Where to place it (ignored in root) */
-} SYSMENUITEM;
-
-/* To redefine icons for certain window types */
-typedef struct ICONITEM
-{
- char match[MENU_MAX+1]; /* What string to search for? */
- char iconFile[PATH_MAX+NAME_MAX+2]; /* Icon location, WIN32 path */
- unsigned long hicon; /* LoadImage() result */
-} ICONITEM;
-
-typedef struct WINPREFS
-{
- /* Menu information */
- MENUPARSED *menu; /* Array of created menus */
- int menuItems; /* How big? */
-
- /* Taskbar menu settings */
- char rootMenuName[MENU_MAX+1]; /* Menu for taskbar icon */
-
- /* System menu addition menus */
- SYSMENUITEM *sysMenu;
- int sysMenuItems;
-
- /* Which menu to add to unmatched windows? */
- char defaultSysMenuName[MENU_MAX+1];
- MENUPOSITION defaultSysMenuPos; /* Where to place it */
-
- /* Icon information */
- char iconDirectory[PATH_MAX+1]; /* Where do the .icos lie? (Win32 path) */
- char defaultIconName[NAME_MAX+1]; /* Replacement for x.ico */
- char trayIconName[NAME_MAX+1]; /* Replacement for tray icon */
-
- ICONITEM *icon;
- int iconItems;
-
- /* Silent exit flag */
- Bool fSilentExit;
-
-} WINPREFS;
-
-
-
-
-/* Functions */
-void
-LoadPreferences(void);
-
-void
-SetupRootMenu (unsigned long hmenuRoot);
-
-void
-SetupSysMenu (unsigned long hwndIn);
-
-void
-HandleCustomWM_INITMENU(unsigned long hwndIn,
- unsigned long hmenuIn);
-
-Bool
-HandleCustomWM_COMMAND (unsigned long hwndIn,
- int command);
-
-int
-winIconIsOverride (unsigned hiconIn);
-
-unsigned long
-winOverrideIcon (unsigned long longpWin);
-
-unsigned long
-winTaskbarIcon(void);
-
-unsigned long
-winOverrideDefaultIcon(int size);
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winprefslex.l b/nx-X11/programs/Xserver/hw/xwin/winprefslex.l
deleted file mode 100644
index a4c1abc3d..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winprefslex.l
+++ /dev/null
@@ -1,116 +0,0 @@
-%{ # -*- C -*-
-/*
- * Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- * 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 XFree86 Project.
- *
- * Authors: Earle F. Philhower, III
- */
-/* $XFree86: $ */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "winprefsyacc.h"
-
-extern YYSTYPE yylval;
-extern char *yytext;
-extern int yyparse(void);
-
-extern void ErrorF (const char* /*f*/, ...);
-
-int yylineno;
-
-/* Copy the parsed string, must be free()d in yacc parser */
-static char *makestr(char *str)
-{
- char *ptr;
- ptr = (char*)malloc (strlen(str)+1);
- if (!ptr)
- {
- ErrorF ("winMultiWindowLex:makestr() out of memory\n");
- exit (-1);
- }
- strcpy(ptr, str);
- return ptr;
-}
-
-%}
-
-%option yylineno
-
-%%
-\#.*[\r\n] { /* comment */ return NEWLINE; }
-\/\/.*[\r\n] { /* comment */ return NEWLINE; }
-[\r\n] { return NEWLINE; }
-[ \t]+ { /* ignore whitespace */ }
-MENU { return MENU; }
-ICONDIRECTORY { return ICONDIRECTORY; }
-DEFAULTICON { return DEFAULTICON; }
-ICONS { return ICONS; }
-ROOTMENU { return ROOTMENU; }
-DEFAULTSYSMENU { return DEFAULTSYSMENU; }
-SYSMENU { return SYSMENU; }
-SEPARATOR { return SEPARATOR; }
-ATSTART { return ATSTART; }
-ATEND { return ATEND; }
-EXEC { return EXEC; }
-ALWAYSONTOP { return ALWAYSONTOP; }
-DEBUG { return DEBUG; }
-RELOAD { return RELOAD; }
-TRAYICON { return TRAYICON; }
-SILENTEXIT { return SILENTEXIT; }
-"{" { return LB; }
-"}" { return RB; }
-"\""[^\"\r\n]+"\"" { yylval.sVal = makestr(yytext+1); \
- yylval.sVal[strlen(yylval.sVal)-1] = 0; \
- return STRING; }
-[^ \t\r\n]+ { yylval.sVal = makestr(yytext); \
- return STRING; }
-%%
-
-/*
- * Run-of-the mill requirement for yacc
- */
-int
-yywrap ()
-{
- return 1;
-}
-
-/*
- * Run a file through the yacc parser
- */
-void
-parse_file (FILE *file)
-{
- if (!file)
- return;
-
- yylineno = 1;
- yyin = file;
- yyparse ();
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/winprefsyacc.y b/nx-X11/programs/Xserver/hw/xwin/winprefsyacc.y
deleted file mode 100644
index 2a54ff28f..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winprefsyacc.y
+++ /dev/null
@@ -1,353 +0,0 @@
-%{
-/*
- * Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- * 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 XFree86 Project.
- *
- * Authors: Earle F. Philhower, III
- */
-/* $XFree86: $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "winprefs.h"
-
-/* The following give better error messages in bison at the cost of a few KB */
-#define YYERROR_VERBOSE 1
-
-/* The global pref settings */
-WINPREFS pref;
-
-/* The working menu */
-static MENUPARSED menu;
-
-/* Functions for parsing the tokens into out structure */
-/* Defined at the end section of this file */
-
-static void SetIconDirectory (char *path);
-static void SetDefaultIcon (char *fname);
-static void SetRootMenu (char *menu);
-static void SetDefaultSysMenu (char *menu, int pos);
-static void SetTrayIcon (char *fname);
-
-static void OpenMenu(char *menuname);
-static void AddMenuLine(char *name, MENUCOMMANDTYPE cmd, char *param);
-static void CloseMenu(void);
-
-static void OpenIcons(void);
-static void AddIconLine(char *matchstr, char *iconfile);
-static void CloseIcons(void);
-
-static void OpenSysMenu(void);
-static void AddSysMenuLine(char *matchstr, char *menuname, int pos);
-static void CloseSysMenu(void);
-
-static int yyerror (char *s);
-
-extern void ErrorF (const char* /*f*/, ...);
-extern char *yytext;
-extern int yylex(void);
-
-%}
-
-%union {
- char *sVal;
- int iVal;
-}
-
-%token NEWLINE MENU LB RB ICONDIRECTORY DEFAULTICON ICONS DEFAULTSYSMENU
-%token SYSMENU ROOTMENU SEPARATOR ATSTART ATEND EXEC ALWAYSONTOP DEBUG
-%token RELOAD TRAYICON SILENTEXIT
-
-%token <sVal> STRING
-%type <iVal> atspot
-
-%%
-
-input: /* empty */
- | input line
- ;
-
-line: NEWLINE
- | command
- ;
-
-
-newline_or_nada:
- | NEWLINE newline_or_nada
- ;
-
-command: defaulticon
- | icondirectory
- | menu
- | icons
- | sysmenu
- | rootmenu
- | defaultsysmenu
- | debug
- | trayicon
- | silentexit
- ;
-
-trayicon: TRAYICON STRING NEWLINE { SetTrayIcon($2); free($2); }
- ;
-
-rootmenu: ROOTMENU STRING NEWLINE { SetRootMenu($2); free($2); }
- ;
-
-defaultsysmenu: DEFAULTSYSMENU STRING atspot NEWLINE { SetDefaultSysMenu($2, $3); free($2); }
- ;
-
-defaulticon: DEFAULTICON STRING NEWLINE { SetDefaultIcon($2); free($2); }
- ;
-
-icondirectory: ICONDIRECTORY STRING NEWLINE { SetIconDirectory($2); free($2); }
- ;
-
-menuline: SEPARATOR NEWLINE newline_or_nada { AddMenuLine("-", CMD_SEPARATOR, ""); }
- | STRING ALWAYSONTOP NEWLINE newline_or_nada { AddMenuLine($1, CMD_ALWAYSONTOP, ""); free($1); }
- | STRING EXEC STRING NEWLINE newline_or_nada { AddMenuLine($1, CMD_EXEC, $3); free($1); free($3); }
- | STRING MENU STRING NEWLINE newline_or_nada { AddMenuLine($1, CMD_MENU, $3); free($1); free($3); }
- | STRING RELOAD NEWLINE newline_or_nada { AddMenuLine($1, CMD_RELOAD, ""); free($1); }
- ;
-
-menulist: menuline
- | menuline menulist
- ;
-
-menu: MENU STRING LB { OpenMenu($2); free($2); } newline_or_nada menulist RB {CloseMenu();}
- ;
-
-iconline: STRING STRING NEWLINE newline_or_nada { AddIconLine($1, $2); free($1); free($2); }
- ;
-
-iconlist: iconline
- | iconline iconlist
- ;
-
-icons: ICONS LB {OpenIcons();} newline_or_nada iconlist RB {CloseIcons();}
- ;
-
-atspot: { $$=AT_END; }
- | ATSTART { $$=AT_START; }
- | ATEND { $$=AT_END; }
- ;
-
-sysmenuline: STRING STRING atspot NEWLINE newline_or_nada { AddSysMenuLine($1, $2, $3); free($1); free($2); }
- ;
-
-sysmenulist: sysmenuline
- | sysmenuline sysmenulist
- ;
-
-sysmenu: SYSMENU LB NEWLINE {OpenSysMenu();} newline_or_nada sysmenulist RB {CloseSysMenu();}
- ;
-
-silentexit: SILENTEXIT NEWLINE { pref.fSilentExit = TRUE; }
- ;
-
-debug: DEBUG STRING NEWLINE { ErrorF("LoadPreferences: %s\n", $2); free($2); }
- ;
-
-
-%%
-/*
- * Errors in parsing abort and print log messages
- */
-static int
-yyerror (char *s)
-{
- extern int yylineno; /* Handled by flex internally */
-
- ErrorF("LoadPreferences: %s line %d\n", s, yylineno);
- return 1;
-}
-
-/* Miscellaneous functions to store TOKENs into the structure */
-static void
-SetIconDirectory (char *path)
-{
- strncpy (pref.iconDirectory, path, PATH_MAX);
- pref.iconDirectory[PATH_MAX] = 0;
-}
-
-static void
-SetDefaultIcon (char *fname)
-{
- strncpy (pref.defaultIconName, fname, NAME_MAX);
- pref.defaultIconName[NAME_MAX] = 0;
-}
-
-static void
-SetTrayIcon (char *fname)
-{
- strncpy (pref.trayIconName, fname, NAME_MAX);
- pref.trayIconName[NAME_MAX] = 0;
-}
-
-static void
-SetRootMenu (char *menu)
-{
- strncpy (pref.rootMenuName, menu, MENU_MAX);
- pref.rootMenuName[MENU_MAX] = 0;
-}
-
-static void
-SetDefaultSysMenu (char *menu, int pos)
-{
- strncpy (pref.defaultSysMenuName, menu, MENU_MAX);
- pref.defaultSysMenuName[MENU_MAX] = 0;
- pref.defaultSysMenuPos = pos;
-}
-
-static void
-OpenMenu (char *menuname)
-{
- if (menu.menuItem) free(menu.menuItem);
- menu.menuItem = NULL;
- strncpy(menu.menuName, menuname, MENU_MAX);
- menu.menuName[MENU_MAX] = 0;
- menu.menuItems = 0;
-}
-
-static void
-AddMenuLine (char *text, MENUCOMMANDTYPE cmd, char *param)
-{
- if (menu.menuItem==NULL)
- menu.menuItem = (MENUITEM*)malloc(sizeof(MENUITEM));
- else
- menu.menuItem = (MENUITEM*)
- realloc(menu.menuItem, sizeof(MENUITEM)*(menu.menuItems+1));
-
- strncpy (menu.menuItem[menu.menuItems].text, text, MENU_MAX);
- menu.menuItem[menu.menuItems].text[MENU_MAX] = 0;
-
- menu.menuItem[menu.menuItems].cmd = cmd;
-
- strncpy(menu.menuItem[menu.menuItems].param, param, PARAM_MAX);
- menu.menuItem[menu.menuItems].param[PARAM_MAX] = 0;
-
- menu.menuItem[menu.menuItems].commandID = 0;
-
- menu.menuItems++;
-}
-
-static void
-CloseMenu (void)
-{
- if (menu.menuItem==NULL || menu.menuItems==0)
- {
- ErrorF("LoadPreferences: Empty menu detected\n");
- return;
- }
-
- if (pref.menuItems)
- pref.menu = (MENUPARSED*)
- realloc (pref.menu, (pref.menuItems+1)*sizeof(MENUPARSED));
- else
- pref.menu = (MENUPARSED*)malloc (sizeof(MENUPARSED));
-
- memcpy (pref.menu+pref.menuItems, &menu, sizeof(MENUPARSED));
- pref.menuItems++;
-
- memset (&menu, 0, sizeof(MENUPARSED));
-}
-
-static void
-OpenIcons (void)
-{
- if (pref.icon != NULL) {
- ErrorF("LoadPreferences: Redefining icon mappings\n");
- free(pref.icon);
- pref.icon = NULL;
- }
- pref.iconItems = 0;
-}
-
-static void
-AddIconLine (char *matchstr, char *iconfile)
-{
- if (pref.icon==NULL)
- pref.icon = (ICONITEM*)malloc(sizeof(ICONITEM));
- else
- pref.icon = (ICONITEM*)
- realloc(pref.icon, sizeof(ICONITEM)*(pref.iconItems+1));
-
- strncpy(pref.icon[pref.iconItems].match, matchstr, MENU_MAX);
- pref.icon[pref.iconItems].match[MENU_MAX] = 0;
-
- strncpy(pref.icon[pref.iconItems].iconFile, iconfile, PATH_MAX+NAME_MAX+1);
- pref.icon[pref.iconItems].iconFile[PATH_MAX+NAME_MAX+1] = 0;
-
- pref.icon[pref.iconItems].hicon = 0;
-
- pref.iconItems++;
-}
-
-static void
-CloseIcons (void)
-{
-}
-
-static void
-OpenSysMenu (void)
-{
- if (pref.sysMenu != NULL) {
- ErrorF("LoadPreferences: Redefining system menu\n");
- free(pref.sysMenu);
- pref.sysMenu = NULL;
- }
- pref.sysMenuItems = 0;
-}
-
-static void
-AddSysMenuLine (char *matchstr, char *menuname, int pos)
-{
- if (pref.sysMenu==NULL)
- pref.sysMenu = (SYSMENUITEM*)malloc(sizeof(SYSMENUITEM));
- else
- pref.sysMenu = (SYSMENUITEM*)
- realloc(pref.sysMenu, sizeof(SYSMENUITEM)*(pref.sysMenuItems+1));
-
- strncpy (pref.sysMenu[pref.sysMenuItems].match, matchstr, MENU_MAX);
- pref.sysMenu[pref.sysMenuItems].match[MENU_MAX] = 0;
-
- strncpy (pref.sysMenu[pref.sysMenuItems].menuName, menuname, MENU_MAX);
- pref.sysMenu[pref.sysMenuItems].menuName[MENU_MAX] = 0;
-
- pref.sysMenu[pref.sysMenuItems].menuPos = pos;
-
- pref.sysMenuItems++;
-}
-
-static void
-CloseSysMenu (void)
-{
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/winpriv.c b/nx-X11/programs/Xserver/hw/xwin/winpriv.c
deleted file mode 100644
index 29221cf2b..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winpriv.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Export window information for the Windows-OpenGL GLX implementation.
- *
- * Authors: Alexander Gottwald
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "winpriv.h"
-#include "winwindow.h"
-
-void
-winCreateWindowsWindow (WindowPtr pWin);
-/**
- * Return size and handles of a window.
- * If pWin is NULL, then the information for the root window is requested.
- */
-extern void winGetWindowInfo(WindowPtr pWin, winWindowInfoPtr pWinInfo)
-{
- /* Sanity check */
- if (pWinInfo == NULL)
- return;
-
- winDebug("%s:%d pWin=%p\n", __FUNCTION__, __LINE__, pWin);
-
- /* a real window was requested */
- if (pWin != NULL)
- {
- /* Initialize the size information */
- RECT rect = {
- pWin->drawable.x,
- pWin->drawable.y,
- pWin->drawable.x + pWin->drawable.width,
- pWin->drawable.y + pWin->drawable.height
- }, rect_extends;
- /* Get the window and screen privates */
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winPrivScreenPtr pWinScreen = winGetScreenPriv(pScreen);
- winScreenInfoPtr pScreenInfo = NULL;
-
- rect_extends = rect;
- OffsetRect(&rect_extends, -pWin->drawable.x, -pWin->drawable.y);
-
- if (pWinScreen == NULL)
- {
- ErrorF("winGetWindowInfo: screen has no privates\n");
- return;
- }
-
- pWinInfo->hwnd = pWinScreen->hwndScreen;
- pWinInfo->hrgn = NULL;
- pWinInfo->rect = rect;
-
-
- pScreenInfo = pWinScreen->pScreenInfo;
-#ifdef XWIN_MULTIWINDOW
- /* check for multiwindow mode */
- if (pScreenInfo->fMultiWindow)
- {
- winWindowPriv(pWin);
-
- if (pWinPriv == NULL)
- {
- ErrorF("winGetWindowInfo: window has no privates\n");
- return;
- }
-
- if (pWinPriv->hWnd == NULL)
- {
- winCreateWindowsWindow(pWin);
- }
- if (pWinPriv->hWnd != NULL) {
-
- /* copy size and window handle */
- pWinInfo->rect = rect_extends;
- pWinInfo->hwnd = pWinPriv->hWnd;
-
- /* Copy window region */
- if (pWinInfo->hrgn)
- DeleteObject(pWinInfo->hrgn);
- pWinInfo->hrgn = CreateRectRgn(0,0,0,0);
- CombineRgn(pWinInfo->hrgn, pWinPriv->hRgn, pWinPriv->hRgn,
- RGN_COPY);
- }
-
- return;
- }
-#endif
-#ifdef XWIN_MULTIWINDOWEXTWM
- /* check for multiwindow external wm mode */
- if (pScreenInfo->fMWExtWM)
- {
- win32RootlessWindowPtr pRLWinPriv
- = (win32RootlessWindowPtr) RootlessFrameForWindow (pWin, FALSE);
-
- if (pRLWinPriv == NULL) {
- ErrorF("winGetWindowInfo: window has no privates\n");
- return;
- }
-
- if (pRLWinPriv->hWnd != NULL)
- {
- /* copy size and window handle */
- pWinInfo->rect = rect_extends;
- pWinInfo->hwnd = pRLWinPriv->hWnd;
- }
- return;
- }
-#endif
- }
- else
- {
- RECT rect = {0, 0, 0, 0};
- ScreenPtr pScreen = g_ScreenInfo[0].pScreen;
- winPrivScreenPtr pWinScreen = winGetScreenPriv(pScreen);
-
- pWinInfo->hwnd = NULL;
- pWinInfo->hrgn = NULL;
- pWinInfo->rect = rect;
-
- if (pWinScreen == NULL)
- {
- ErrorF("winGetWindowInfo: screen has no privates\n");
- return;
- }
-
- ErrorF("winGetWindowInfo: returning root window\n");
-
- pWinInfo->hwnd = pWinScreen->hwndScreen;
- }
- return;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winpriv.h b/nx-X11/programs/Xserver/hw/xwin/winpriv.h
deleted file mode 100644
index d4505c83e..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winpriv.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Export window information for the Windows-OpenGL GLX implementation.
- *
- * Authors: Alexander Gottwald
- */
-#include <windows.h>
-
-typedef struct
-{
- HWND hwnd;
- HRGN hrgn;
- RECT rect;
-} winWindowInfoRec, *winWindowInfoPtr;
-
-extern void winGetWindowInfo(WindowPtr pWin, winWindowInfoPtr pWinInfo);
diff --git a/nx-X11/programs/Xserver/hw/xwin/winprocarg.c b/nx-X11/programs/Xserver/hw/xwin/winprocarg.c
deleted file mode 100755
index bd0b99977..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winprocarg.c
+++ /dev/null
@@ -1,1561 +0,0 @@
-/*
-
-Copyright 1993, 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.
-
-*/
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#ifdef XVENDORNAME
-#define VENDOR_STRING XVENDORNAME
-#define VERSION_STRING XORG_RELEASE
-#define VENDOR_CONTACT BUILDERADDR
-#endif
-#include "win.h"
-#include "winconfig.h"
-#include "winprefs.h"
-#include "winmsg.h"
-
-/*
- * References to external symbols
- */
-
-extern int g_iNumScreens;
-extern winScreenInfo g_ScreenInfo[];
-extern int g_iLastScreen;
-extern Bool g_fInitializedDefaultScreens;
-#ifdef XWIN_CLIPBOARD
-extern Bool g_fUnicodeClipboard;
-extern Bool g_fClipboard;
-#endif
-extern int g_iLogVerbose;
-extern char * g_pszLogFile;
-#ifdef RELOCATE_PROJECTROOT
-extern Bool g_fLogFileChanged;
-#endif
-extern Bool g_fXdmcpEnabled;
-extern char * g_pszCommandLine;
-extern Bool g_fKeyboardHookLL;
-extern Bool g_fNoHelpMessageBox;
-extern Bool g_fSoftwareCursor;
-extern Bool g_fSilentDupError;
-
-/* globals required by callback function for monitor information */
-struct GetMonitorInfoData {
- int requestedMonitor;
- int monitorNum;
- Bool bUserSpecifiedMonitor;
- Bool bMonitorSpecifiedExists;
- int monitorOffsetX;
- int monitorOffsetY;
- int monitorHeight;
- int monitorWidth;
-};
-
-typedef wBOOL (*ENUMDISPLAYMONITORSPROC)(HDC,LPCRECT,MONITORENUMPROC,LPARAM);
-ENUMDISPLAYMONITORSPROC _EnumDisplayMonitors;
-
-wBOOL CALLBACK getMonitorInfo(HMONITOR hMonitor, HDC hdc, LPRECT rect, LPARAM _data);
-
-static Bool QueryMonitor(int index, struct GetMonitorInfoData *data)
-{
- /* Load EnumDisplayMonitors from DLL */
- HMODULE user32;
- FARPROC func;
- user32 = LoadLibrary("user32.dll");
- if (user32 == NULL)
- {
- winW32Error(2, "Could not open user32.dll");
- return FALSE;
- }
- func = GetProcAddress(user32, "EnumDisplayMonitors");
- if (func == NULL)
- {
- winW32Error(2, "Could not resolve EnumDisplayMonitors: ");
- return FALSE;
- }
- _EnumDisplayMonitors = (ENUMDISPLAYMONITORSPROC)func;
-
- /* prepare data */
- if (data == NULL)
- return FALSE;
- memset(data, 0, sizeof(*data));
- data->requestedMonitor = index;
-
- /* query information */
- _EnumDisplayMonitors(NULL, NULL, getMonitorInfo, (LPARAM) data);
-
- /* cleanup */
- FreeLibrary(user32);
- return TRUE;
-}
-
-/*
- * Function prototypes
- */
-
-void
-winLogCommandLine (int argc, char *argv[]);
-
-void
-winLogVersionInfo (void);
-
-#ifdef DDXOSVERRORF
-void OsVendorVErrorF (const char *pszFormat, va_list va_args);
-#endif
-
-void
-winInitializeDefaultScreens (void);
-
-/*
- * Process arguments on the command line
- */
-
-void
-winInitializeDefaultScreens (void)
-{
- int i;
- DWORD dwWidth, dwHeight;
-
- /* Bail out early if default screens have already been initialized */
- if (g_fInitializedDefaultScreens)
- return;
-
- /* Zero the memory used for storing the screen info */
- ZeroMemory (g_ScreenInfo, MAXSCREENS * sizeof (winScreenInfo));
-
- /* Get default width and height */
- /*
- * NOTE: These defaults will cause the window to cover only
- * the primary monitor in the case that we have multiple monitors.
- */
- dwWidth = GetSystemMetrics (SM_CXSCREEN);
- dwHeight = GetSystemMetrics (SM_CYSCREEN);
-
- winErrorFVerb (2, "winInitializeDefaultScreens - w %d h %d\n",
- (int) dwWidth, (int) dwHeight);
-
- /* Set a default DPI, if no parameter was passed */
- if (monitorResolution == 0)
- monitorResolution = WIN_DEFAULT_DPI;
-
- for (i = 0; i < MAXSCREENS; ++i)
- {
- g_ScreenInfo[i].dwScreen = i;
- g_ScreenInfo[i].dwWidth = dwWidth;
- g_ScreenInfo[i].dwHeight = dwHeight;
- g_ScreenInfo[i].dwUserWidth = dwWidth;
- g_ScreenInfo[i].dwUserHeight = dwHeight;
- g_ScreenInfo[i].fUserGaveHeightAndWidth
- = WIN_DEFAULT_USER_GAVE_HEIGHT_AND_WIDTH;
- g_ScreenInfo[i].fUserGavePosition = FALSE;
- g_ScreenInfo[i].dwBPP = WIN_DEFAULT_BPP;
- g_ScreenInfo[i].dwClipUpdatesNBoxes = WIN_DEFAULT_CLIP_UPDATES_NBOXES;
-#ifdef XWIN_EMULATEPSEUDO
- g_ScreenInfo[i].fEmulatePseudo = WIN_DEFAULT_EMULATE_PSEUDO;
-#endif
- g_ScreenInfo[i].dwRefreshRate = WIN_DEFAULT_REFRESH;
- g_ScreenInfo[i].pfb = NULL;
- g_ScreenInfo[i].fFullScreen = FALSE;
- g_ScreenInfo[i].fDecoration = TRUE;
-#ifdef XWIN_MULTIWINDOWEXTWM
- g_ScreenInfo[i].fMWExtWM = FALSE;
- g_ScreenInfo[i].fInternalWM = FALSE;
-#endif
- g_ScreenInfo[i].fRootless = FALSE;
-#ifdef XWIN_MULTIWINDOW
- g_ScreenInfo[i].fMultiWindow = FALSE;
-#endif
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- g_ScreenInfo[i].fMultiMonitorOverride = FALSE;
-#endif
- g_ScreenInfo[i].fMultipleMonitors = FALSE;
- g_ScreenInfo[i].fLessPointer = FALSE;
- g_ScreenInfo[i].fScrollbars = FALSE;
- g_ScreenInfo[i].fNoTrayIcon = FALSE;
- g_ScreenInfo[i].iE3BTimeout = WIN_E3B_OFF;
- g_ScreenInfo[i].dwWidth_mm = (dwWidth / WIN_DEFAULT_DPI)
- * 25.4;
- g_ScreenInfo[i].dwHeight_mm = (dwHeight / WIN_DEFAULT_DPI)
- * 25.4;
- g_ScreenInfo[i].fUseWinKillKey = WIN_DEFAULT_WIN_KILL;
- g_ScreenInfo[i].fUseUnixKillKey = WIN_DEFAULT_UNIX_KILL;
- g_ScreenInfo[i].fIgnoreInput = FALSE;
- g_ScreenInfo[i].fExplicitScreen = FALSE;
- }
-
- /* Signal that the default screens have been initialized */
- g_fInitializedDefaultScreens = TRUE;
-
- winErrorFVerb (2, "winInitializeDefaultScreens - Returning\n");
-}
-
-/* See Porting Layer Definition - p. 57 */
-/*
- * INPUT
- * argv: pointer to an array of null-terminated strings, one for
- * each token in the X Server command line; the first token
- * is 'XWin.exe', or similar.
- * argc: a count of the number of tokens stored in argv.
- * i: a zero-based index into argv indicating the current token being
- * processed.
- *
- * OUTPUT
- * return: return the number of tokens processed correctly.
- *
- * NOTE
- * When looking for n tokens, check that i + n is less than argc. Or,
- * you may check if i is greater than or equal to argc, in which case
- * you should display the UseMsg () and return 0.
- */
-
-/* Check if enough arguments are given for the option */
-#define CHECK_ARGS(count) if (i + count >= argc) { UseMsg (); return 0; }
-
-/* Compare the current option with the string. */
-#define IS_OPTION(name) (strcmp (argv[i], name) == 0)
-
-int
-ddxProcessArgument (int argc, char *argv[], int i)
-{
- static Bool s_fBeenHere = FALSE;
-
- /* Initialize once */
- if (!s_fBeenHere)
- {
-#ifdef DDXOSVERRORF
- /*
- * This initialises our hook into VErrorF () for catching log messages
- * that are generated before OsInit () is called.
- */
- OsVendorVErrorFProc = OsVendorVErrorF;
-#endif
-
- s_fBeenHere = TRUE;
-
- /* Initialize only if option is not -help */
- if (!IS_OPTION("-help") && !IS_OPTION("-h") && !IS_OPTION("--help") &&
- !IS_OPTION("-version") && !IS_OPTION("--version"))
- {
-
- /* Log the version information */
- winLogVersionInfo ();
-
- /* Log the command line */
- winLogCommandLine (argc, argv);
-
- /*
- * Initialize default screen settings. We have to do this before
- * OsVendorInit () gets called, otherwise we will overwrite
- * settings changed by parameters such as -fullscreen, etc.
- */
- winErrorFVerb (2, "ddxProcessArgument - Initializing default "
- "screens\n");
- winInitializeDefaultScreens ();
- }
- }
-
-#if CYGDEBUG
- winDebug ("ddxProcessArgument - arg: %s\n", argv[i]);
-#endif
-
- /*
- * Look for the '-help' and similar options
- */
- if (IS_OPTION ("-help") || IS_OPTION("-h") || IS_OPTION("--help"))
- {
- /* Reset logfile. We don't need that helpmessage in the logfile */
- g_pszLogFile = NULL;
- g_fNoHelpMessageBox = TRUE;
- UseMsg();
- exit (0);
- return 1;
- }
-
- if (IS_OPTION ("-version") || IS_OPTION("--version"))
- {
- /* Reset logfile. We don't need that versioninfo in the logfile */
- g_pszLogFile = NULL;
- winLogVersionInfo ();
- exit (0);
- return 1;
- }
-
- /*
- * Look for the '-screen scr_num [width height]' argument
- */
- if (IS_OPTION ("-screen"))
- {
- int iArgsProcessed = 1;
- int nScreenNum;
- int iWidth, iHeight, iX, iY;
- int iMonitor;
-
-#if CYGDEBUG
- winDebug ("ddxProcessArgument - screen - argc: %d i: %d\n",
- argc, i);
-#endif
-
- /* Display the usage message if the argument is malformed */
- if (i + 1 >= argc)
- {
- return 0;
- }
-
- /* Grab screen number */
- nScreenNum = atoi (argv[i + 1]);
-
- /* Validate the specified screen number */
- if (nScreenNum < 0 || nScreenNum >= MAXSCREENS)
- {
- ErrorF ("ddxProcessArgument - screen - Invalid screen number %d\n",
- nScreenNum);
- UseMsg ();
- return 0;
- }
-
- /* look for @m where m is monitor number */
- if (i + 2 < argc
- && 1 == sscanf(argv[i + 2], "@%d", (int *) &iMonitor))
- {
- struct GetMonitorInfoData data;
- if (!QueryMonitor(iMonitor, &data))
- {
- ErrorF ("ddxProcessArgument - screen - "
- "Querying monitors is not supported on NT4 and Win95\n");
- } else if (data.bMonitorSpecifiedExists == TRUE)
- {
- winErrorFVerb(2, "ddxProcessArgument - screen - Found Valid ``@Monitor'' = %d arg\n", iMonitor);
- iArgsProcessed = 3;
- g_ScreenInfo[nScreenNum].fUserGaveHeightAndWidth = FALSE;
- g_ScreenInfo[nScreenNum].fUserGavePosition = TRUE;
- g_ScreenInfo[nScreenNum].dwWidth = data.monitorWidth;
- g_ScreenInfo[nScreenNum].dwHeight = data.monitorHeight;
- g_ScreenInfo[nScreenNum].dwUserWidth = data.monitorWidth;
- g_ScreenInfo[nScreenNum].dwUserHeight = data.monitorHeight;
- g_ScreenInfo[nScreenNum].dwInitialX = data.monitorOffsetX;
- g_ScreenInfo[nScreenNum].dwInitialY = data.monitorOffsetY;
- }
- else
- {
- /* monitor does not exist, error out */
- ErrorF ("ddxProcessArgument - screen - Invalid monitor number %d\n",
- iMonitor);
- UseMsg ();
- exit (0);
- return 0;
- }
- }
-
- /* Look for 'WxD' or 'W D' */
- else if (i + 2 < argc
- && 2 == sscanf (argv[i + 2], "%dx%d",
- (int *) &iWidth,
- (int *) &iHeight))
- {
- winErrorFVerb (2, "ddxProcessArgument - screen - Found ``WxD'' arg\n");
- iArgsProcessed = 3;
- g_ScreenInfo[nScreenNum].fUserGaveHeightAndWidth = TRUE;
- g_ScreenInfo[nScreenNum].dwWidth = iWidth;
- g_ScreenInfo[nScreenNum].dwHeight = iHeight;
- g_ScreenInfo[nScreenNum].dwUserWidth = iWidth;
- g_ScreenInfo[nScreenNum].dwUserHeight = iHeight;
- /* Look for WxD+X+Y */
- if (2 == sscanf (argv[i + 2], "%*dx%*d+%d+%d",
- (int *) &iX,
- (int *) &iY))
- {
- winErrorFVerb (2, "ddxProcessArgument - screen - Found ``X+Y'' arg\n");
- g_ScreenInfo[nScreenNum].fUserGavePosition = TRUE;
- g_ScreenInfo[nScreenNum].dwInitialX = iX;
- g_ScreenInfo[nScreenNum].dwInitialY = iY;
-
- /* look for WxD+X+Y@m where m is monitor number. take X,Y to be offsets from monitor's root position */
- if (1 == sscanf (argv[i + 2], "%*dx%*d+%*d+%*d@%d",
- (int *) &iMonitor))
- {
- struct GetMonitorInfoData data;
- if (!QueryMonitor(iMonitor, &data))
- {
- ErrorF ("ddxProcessArgument - screen - "
- "Querying monitors is not supported on NT4 and Win95\n");
- } else if (data.bMonitorSpecifiedExists == TRUE)
- {
- g_ScreenInfo[nScreenNum].dwInitialX += data.monitorOffsetX;
- g_ScreenInfo[nScreenNum].dwInitialY += data.monitorOffsetY;
- }
- else
- {
- /* monitor does not exist, error out */
- ErrorF ("ddxProcessArgument - screen - Invalid monitor number %d\n",
- iMonitor);
- UseMsg ();
- exit (0);
- return 0;
- }
-
- }
- }
-
- /* look for WxD@m where m is monitor number */
- else if (1 == sscanf(argv[i + 2], "%*dx%*d@%d",
- (int *) &iMonitor))
- {
- struct GetMonitorInfoData data;
- if (!QueryMonitor(iMonitor, &data))
- {
- ErrorF ("ddxProcessArgument - screen - "
- "Querying monitors is not supported on NT4 and Win95\n");
- } else if (data.bMonitorSpecifiedExists == TRUE)
- {
- winErrorFVerb (2, "ddxProcessArgument - screen - Found Valid ``@Monitor'' = %d arg\n", iMonitor);
- g_ScreenInfo[nScreenNum].fUserGavePosition = TRUE;
- g_ScreenInfo[nScreenNum].dwInitialX = data.monitorOffsetX;
- g_ScreenInfo[nScreenNum].dwInitialY = data.monitorOffsetY;
- }
- else
- {
- /* monitor does not exist, error out */
- ErrorF ("ddxProcessArgument - screen - Invalid monitor number %d\n",
- iMonitor);
- UseMsg ();
- exit (0);
- return 0;
- }
-
- }
- }
- else if (i + 3 < argc
- && 1 == sscanf (argv[i + 2], "%d",
- (int *) &iWidth)
- && 1 == sscanf (argv[i + 3], "%d",
- (int *) &iHeight))
- {
- winErrorFVerb (2, "ddxProcessArgument - screen - Found ``W D'' arg\n");
- iArgsProcessed = 4;
- g_ScreenInfo[nScreenNum].fUserGaveHeightAndWidth = TRUE;
- g_ScreenInfo[nScreenNum].dwWidth = iWidth;
- g_ScreenInfo[nScreenNum].dwHeight = iHeight;
- g_ScreenInfo[nScreenNum].dwUserWidth = iWidth;
- g_ScreenInfo[nScreenNum].dwUserHeight = iHeight;
- if (i + 5 < argc
- && 1 == sscanf (argv[i + 4], "%d",
- (int *) &iX)
- && 1 == sscanf (argv[i + 5], "%d",
- (int *) &iY))
- {
- winErrorFVerb (2, "ddxProcessArgument - screen - Found ``X Y'' arg\n");
- iArgsProcessed = 6;
- g_ScreenInfo[nScreenNum].fUserGavePosition = TRUE;
- g_ScreenInfo[nScreenNum].dwInitialX = iX;
- g_ScreenInfo[nScreenNum].dwInitialY = iY;
- }
- }
- else
- {
- winErrorFVerb (2, "ddxProcessArgument - screen - Did not find size arg. "
- "dwWidth: %d dwHeight: %d\n",
- (int) g_ScreenInfo[nScreenNum].dwWidth,
- (int) g_ScreenInfo[nScreenNum].dwHeight);
- iArgsProcessed = 2;
- g_ScreenInfo[nScreenNum].fUserGaveHeightAndWidth = FALSE;
- }
-
- /* Calculate the screen width and height in millimeters */
- if (g_ScreenInfo[nScreenNum].fUserGaveHeightAndWidth)
- {
- g_ScreenInfo[nScreenNum].dwWidth_mm
- = (g_ScreenInfo[nScreenNum].dwWidth
- / monitorResolution) * 25.4;
- g_ScreenInfo[nScreenNum].dwHeight_mm
- = (g_ScreenInfo[nScreenNum].dwHeight
- / monitorResolution) * 25.4;
- }
-
- /* Flag that this screen was explicity specified by the user */
- g_ScreenInfo[nScreenNum].fExplicitScreen = TRUE;
-
- /*
- * Keep track of the last screen number seen, as parameters seen
- * before a screen number apply to all screens, whereas parameters
- * seen after a screen number apply to that screen number only.
- */
- g_iLastScreen = nScreenNum;
-
- /* Keep a count of the number of screens */
- ++g_iNumScreens;
-
- return iArgsProcessed;
- }
-
- /*
- * Look for the '-engine n' argument
- */
- if (IS_OPTION ("-engine"))
- {
- DWORD dwEngine = 0;
- CARD8 c8OnBits = 0;
-
- /* Display the usage message if the argument is malformed */
- if (++i >= argc)
- {
- UseMsg ();
- return 0;
- }
-
- /* Grab the argument */
- dwEngine = atoi (argv[i]);
-
- /* Count the one bits in the engine argument */
- c8OnBits = winCountBits (dwEngine);
-
- /* Argument should only have a single bit on */
- if (c8OnBits != 1)
- {
- UseMsg ();
- return 0;
- }
-
- /* Is this parameter attached to a screen or global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].dwEnginePreferred = dwEngine;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].dwEnginePreferred = dwEngine;
- }
-
- /* Indicate that we have processed the argument */
- return 2;
- }
-
- /*
- * Look for the '-fullscreen' argument
- */
- if (IS_OPTION ("-fullscreen"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- if (!g_ScreenInfo[j].fMultiMonitorOverride)
- g_ScreenInfo[j].fMultipleMonitors = FALSE;
-#endif
- g_ScreenInfo[j].fFullScreen = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride)
- g_ScreenInfo[g_iLastScreen].fMultipleMonitors = FALSE;
-#endif
- g_ScreenInfo[g_iLastScreen].fFullScreen = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
- /*
- * Look for the '-lesspointer' argument
- */
- if (IS_OPTION ("-lesspointer"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].fLessPointer = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].fLessPointer = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
- /*
- * Look for the '-nodecoration' argument
- */
- if (IS_OPTION ("-nodecoration"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- if (!g_ScreenInfo[j].fMultiMonitorOverride)
- g_ScreenInfo[j].fMultipleMonitors = FALSE;
-#endif
- g_ScreenInfo[j].fDecoration = FALSE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride)
- g_ScreenInfo[g_iLastScreen].fMultipleMonitors = FALSE;
-#endif
- g_ScreenInfo[g_iLastScreen].fDecoration = FALSE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
-#ifdef XWIN_MULTIWINDOWEXTWM
- /*
- * Look for the '-mwextwm' argument
- */
- if (IS_OPTION ("-mwextwm"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- if (!g_ScreenInfo[j].fMultiMonitorOverride)
- g_ScreenInfo[j].fMultipleMonitors = TRUE;
- g_ScreenInfo[j].fMWExtWM = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride)
- g_ScreenInfo[g_iLastScreen].fMultipleMonitors = TRUE;
- g_ScreenInfo[g_iLastScreen].fMWExtWM = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
- /*
- * Look for the '-internalwm' argument
- */
- if (IS_OPTION ("-internalwm"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- if (!g_ScreenInfo[j].fMultiMonitorOverride)
- g_ScreenInfo[j].fMultipleMonitors = TRUE;
- g_ScreenInfo[j].fMWExtWM = TRUE;
- g_ScreenInfo[j].fInternalWM = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride)
- g_ScreenInfo[g_iLastScreen].fMultipleMonitors = TRUE;
- g_ScreenInfo[g_iLastScreen].fMWExtWM = TRUE;
- g_ScreenInfo[g_iLastScreen].fInternalWM = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-#endif
-
- /*
- * Look for the '-rootless' argument
- */
- if (IS_OPTION ("-rootless"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- if (!g_ScreenInfo[j].fMultiMonitorOverride)
- g_ScreenInfo[j].fMultipleMonitors = FALSE;
-#endif
- g_ScreenInfo[j].fRootless = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride)
- g_ScreenInfo[g_iLastScreen].fMultipleMonitors = FALSE;
-#endif
- g_ScreenInfo[g_iLastScreen].fRootless = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
-#ifdef XWIN_MULTIWINDOW
- /*
- * Look for the '-multiwindow' argument
- */
- if (IS_OPTION ("-multiwindow"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- if (!g_ScreenInfo[j].fMultiMonitorOverride)
- g_ScreenInfo[j].fMultipleMonitors = TRUE;
-#endif
- g_ScreenInfo[j].fMultiWindow = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride)
- g_ScreenInfo[g_iLastScreen].fMultipleMonitors = TRUE;
-#endif
- g_ScreenInfo[g_iLastScreen].fMultiWindow = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-#endif
-
- /*
- * Look for the '-multiplemonitors' argument
- */
- if (IS_OPTION ("-multiplemonitors")
- || IS_OPTION ("-multimonitors"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- g_ScreenInfo[j].fMultiMonitorOverride = TRUE;
-#endif
- g_ScreenInfo[j].fMultipleMonitors = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride = TRUE;
-#endif
- g_ScreenInfo[g_iLastScreen].fMultipleMonitors = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
- /*
- * Look for the '-nomultiplemonitors' argument
- */
- if (IS_OPTION ("-nomultiplemonitors")
- || IS_OPTION ("-nomultimonitors"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- g_ScreenInfo[j].fMultiMonitorOverride = TRUE;
-#endif
- g_ScreenInfo[j].fMultipleMonitors = FALSE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride = TRUE;
-#endif
- g_ScreenInfo[g_iLastScreen].fMultipleMonitors = FALSE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
-
- /*
- * Look for the '-scrollbars' argument
- */
- if (IS_OPTION ("-scrollbars"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].fScrollbars = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].fScrollbars = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
-
-#ifdef XWIN_CLIPBOARD
- /*
- * Look for the '-clipboard' argument
- */
- if (IS_OPTION ("-clipboard"))
- {
- g_fClipboard = TRUE;
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-#endif
-
-
- /*
- * Look for the '-ignoreinput' argument
- */
- if (IS_OPTION ("-ignoreinput"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].fIgnoreInput = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].fIgnoreInput = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
- /*
- * Look for the '-emulate3buttons' argument
- */
- if (IS_OPTION ("-emulate3buttons"))
- {
- int iArgsProcessed = 1;
- int iE3BTimeout = WIN_DEFAULT_E3B_TIME;
-
- /* Grab the optional timeout value */
- if (i + 1 < argc
- && 1 == sscanf (argv[i + 1], "%d",
- &iE3BTimeout))
- {
- /* Indicate that we have processed the next argument */
- iArgsProcessed++;
- }
- else
- {
- /*
- * sscanf () won't modify iE3BTimeout if it doesn't find
- * the specified format; however, I want to be explicit
- * about setting the default timeout in such cases to
- * prevent some programs (me) from getting confused.
- */
- iE3BTimeout = WIN_DEFAULT_E3B_TIME;
- }
-
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].iE3BTimeout = iE3BTimeout;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].iE3BTimeout = iE3BTimeout;
- }
-
- /* Indicate that we have processed this argument */
- return iArgsProcessed;
- }
-
- /*
- * Look for the '-depth n' argument
- */
- if (IS_OPTION ("-depth"))
- {
- DWORD dwBPP = 0;
-
- /* Display the usage message if the argument is malformed */
- if (++i >= argc)
- {
- UseMsg ();
- return 0;
- }
-
- /* Grab the argument */
- dwBPP = atoi (argv[i]);
-
- /* Is this parameter attached to a screen or global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].dwBPP = dwBPP;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].dwBPP = dwBPP;
- }
-
- /* Indicate that we have processed the argument */
- return 2;
- }
-
- /*
- * Look for the '-refresh n' argument
- */
- if (IS_OPTION ("-refresh"))
- {
- DWORD dwRefreshRate = 0;
-
- /* Display the usage message if the argument is malformed */
- if (++i >= argc)
- {
- UseMsg ();
- return 0;
- }
-
- /* Grab the argument */
- dwRefreshRate = atoi (argv[i]);
-
- /* Is this parameter attached to a screen or global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].dwRefreshRate = dwRefreshRate;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].dwRefreshRate = dwRefreshRate;
- }
-
- /* Indicate that we have processed the argument */
- return 2;
- }
-
- /*
- * Look for the '-clipupdates num_boxes' argument
- */
- if (IS_OPTION ("-clipupdates"))
- {
- DWORD dwNumBoxes = 0;
-
- /* Display the usage message if the argument is malformed */
- if (++i >= argc)
- {
- UseMsg ();
- return 0;
- }
-
- /* Grab the argument */
- dwNumBoxes = atoi (argv[i]);
-
- /* Is this parameter attached to a screen or global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].dwClipUpdatesNBoxes = dwNumBoxes;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].dwClipUpdatesNBoxes = dwNumBoxes;
- }
-
- /* Indicate that we have processed the argument */
- return 2;
- }
-
-#ifdef XWIN_EMULATEPSEUDO
- /*
- * Look for the '-emulatepseudo' argument
- */
- if (IS_OPTION ("-emulatepseudo"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].fEmulatePseudo = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].fEmulatePseudo = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-#endif
-
- /*
- * Look for the '-nowinkill' argument
- */
- if (IS_OPTION ("-nowinkill"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].fUseWinKillKey = FALSE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].fUseWinKillKey = FALSE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
- /*
- * Look for the '-winkill' argument
- */
- if (IS_OPTION ("-winkill"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].fUseWinKillKey = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].fUseWinKillKey = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
- /*
- * Look for the '-nounixkill' argument
- */
- if (IS_OPTION ("-nounixkill"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].fUseUnixKillKey = FALSE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].fUseUnixKillKey = FALSE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
- /*
- * Look for the '-unixkill' argument
- */
- if (IS_OPTION ("-unixkill"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].fUseUnixKillKey = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].fUseUnixKillKey = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
- /*
- * Look for the '-notrayicon' argument
- */
- if (IS_OPTION ("-notrayicon"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].fNoTrayIcon = TRUE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].fNoTrayIcon = TRUE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
- /*
- * Look for the '-trayicon' argument
- */
- if (IS_OPTION ("-trayicon"))
- {
- /* Is this parameter attached to a screen or is it global? */
- if (-1 == g_iLastScreen)
- {
- int j;
-
- /* Parameter is for all screens */
- for (j = 0; j < MAXSCREENS; j++)
- {
- g_ScreenInfo[j].fNoTrayIcon = FALSE;
- }
- }
- else
- {
- /* Parameter is for a single screen */
- g_ScreenInfo[g_iLastScreen].fNoTrayIcon = FALSE;
- }
-
- /* Indicate that we have processed this argument */
- return 1;
- }
-
- /*
- * Look for the '-fp' argument
- */
- if (IS_OPTION ("-fp"))
- {
- CHECK_ARGS (1);
- g_cmdline.fontPath = argv[++i];
- return 0; /* Let DIX parse this again */
- }
-
- /*
- * Look for the '-co' argument
- */
- if (IS_OPTION ("-co"))
- {
- CHECK_ARGS (1);
- g_cmdline.rgbPath = argv[++i];
- return 0; /* Let DIX parse this again */
- }
-
- /*
- * Look for the '-query' argument
- */
- if (IS_OPTION ("-query"))
- {
- CHECK_ARGS (1);
- g_fXdmcpEnabled = TRUE;
- g_pszQueryHost = argv[++i];
- return 0; /* Let DIX parse this again */
- }
-
- /*
- * Look for the '-indirect' or '-broadcast' arguments
- */
- if (IS_OPTION ("-indirect")
- || IS_OPTION ("-broadcast"))
- {
- g_fXdmcpEnabled = TRUE;
- return 0; /* Let DIX parse this again */
- }
-
- /*
- * Look for the '-config' argument
- */
- if (IS_OPTION ("-config")
- || IS_OPTION ("-xf86config"))
- {
- CHECK_ARGS (1);
-#ifdef XWIN_XF86CONFIG
- g_cmdline.configFile = argv[++i];
-#else
- winMessageBoxF ("The %s option is not supported in this "
- "release.\n"
- "Ignoring this option and continuing.\n",
- MB_ICONINFORMATION,
- argv[i]);
-#endif
- return 2;
- }
-
- /*
- * Look for the '-keyboard' argument
- */
- if (IS_OPTION ("-keyboard"))
- {
-#ifdef XWIN_XF86CONFIG
- CHECK_ARGS (1);
- g_cmdline.keyboard = argv[++i];
-#else
- winMessageBoxF ("The -keyboard option is not supported in this "
- "release.\n"
- "Ignoring this option and continuing.\n",
- MB_ICONINFORMATION);
-#endif
- return 2;
- }
-
- /*
- * Look for the '-logfile' argument
- */
- if (IS_OPTION ("-logfile"))
- {
- CHECK_ARGS (1);
- g_pszLogFile = argv[++i];
-#ifdef RELOCATE_PROJECTROOT
- g_fLogFileChanged = TRUE;
-#endif
- return 2;
- }
-
- /*
- * Look for the '-logverbose' argument
- */
- if (IS_OPTION ("-logverbose"))
- {
- CHECK_ARGS (1);
- g_iLogVerbose = atoi(argv[++i]);
- return 2;
- }
-
-#ifdef XWIN_CLIPBOARD
- /*
- * Look for the '-nounicodeclipboard' argument
- */
- if (IS_OPTION ("-nounicodeclipboard"))
- {
- g_fUnicodeClipboard = FALSE;
- /* Indicate that we have processed the argument */
- return 1;
- }
-#endif
-
-#ifdef XKB
- /*
- * Look for the '-kb' argument
- */
- if (IS_OPTION ("-kb"))
- {
- g_cmdline.noXkbExtension = TRUE;
- return 0; /* Let DIX parse this again */
- }
-
- if (IS_OPTION ("-xkbrules"))
- {
- CHECK_ARGS (1);
- g_cmdline.xkbRules = argv[++i];
- return 2;
- }
- if (IS_OPTION ("-xkbmodel"))
- {
- CHECK_ARGS (1);
- g_cmdline.xkbModel = argv[++i];
- return 2;
- }
- if (IS_OPTION ("-xkblayout"))
- {
- CHECK_ARGS (1);
- g_cmdline.xkbLayout = argv[++i];
- return 2;
- }
- if (IS_OPTION ("-xkbvariant"))
- {
- CHECK_ARGS (1);
- g_cmdline.xkbVariant = argv[++i];
- return 2;
- }
- if (IS_OPTION ("-xkboptions"))
- {
- CHECK_ARGS (1);
- g_cmdline.xkbOptions = argv[++i];
- return 2;
- }
-#endif
-
- if (IS_OPTION ("-keyhook"))
- {
- g_fKeyboardHookLL = TRUE;
- return 1;
- }
-
- if (IS_OPTION ("-nokeyhook"))
- {
- g_fKeyboardHookLL = FALSE;
- return 1;
- }
-
- if (IS_OPTION ("-swcursor"))
- {
- g_fSoftwareCursor = TRUE;
- return 1;
- }
-
- if (IS_OPTION ("-silent-dup-error"))
- {
- g_fSilentDupError = TRUE;
- return 1;
- }
- return 0;
-}
-
-
-/*
- * winLogCommandLine - Write entire command line to the log file
- */
-
-void
-winLogCommandLine (int argc, char *argv[])
-{
- int i;
- int iSize = 0;
- int iCurrLen = 0;
-
-#define CHARS_PER_LINE 60
-
- /* Bail if command line has already been logged */
- if (g_pszCommandLine)
- return;
-
- /* Count how much memory is needed for concatenated command line */
- for (i = 0, iCurrLen = 0; i < argc; ++i)
- if (argv[i])
- {
- /* Add a character for lines that overflow */
- if ((strlen (argv[i]) < CHARS_PER_LINE
- && iCurrLen + strlen (argv[i]) > CHARS_PER_LINE)
- || strlen (argv[i]) > CHARS_PER_LINE)
- {
- iCurrLen = 0;
- ++iSize;
- }
-
- /* Add space for item and trailing space */
- iSize += strlen (argv[i]) + 1;
-
- /* Update current line length */
- iCurrLen += strlen (argv[i]);
- }
-
- /* Allocate memory for concatenated command line */
- g_pszCommandLine = malloc (iSize + 1);
- if (!g_pszCommandLine)
- FatalError ("winLogCommandLine - Could not allocate memory for "
- "command line string. Exiting.\n");
-
- /* Set first character to concatenated command line to null */
- g_pszCommandLine[0] = '\0';
-
- /* Loop through all args */
- for (i = 0, iCurrLen = 0; i < argc; ++i)
- {
- /* Add a character for lines that overflow */
- if ((strlen (argv[i]) < CHARS_PER_LINE
- && iCurrLen + strlen (argv[i]) > CHARS_PER_LINE)
- || strlen (argv[i]) > CHARS_PER_LINE)
- {
- iCurrLen = 0;
-
- /* Add line break if it fits */
- strncat (g_pszCommandLine, "\n", iSize - strlen (g_pszCommandLine));
- }
-
- strncat (g_pszCommandLine, argv[i], iSize - strlen (g_pszCommandLine));
- strncat (g_pszCommandLine, " ", iSize - strlen (g_pszCommandLine));
-
- /* Save new line length */
- iCurrLen += strlen (argv[i]);
- }
-
- ErrorF ("XWin was started with the following command line:\n\n"
- "%s\n\n", g_pszCommandLine);
-}
-
-
-/*
- * winLogVersionInfo - Log Cygwin/X version information
- */
-
-void
-winLogVersionInfo (void)
-{
- static Bool s_fBeenHere = FALSE;
-
- if (s_fBeenHere)
- return;
- s_fBeenHere = TRUE;
-
- ErrorF ("Welcome to the XWin X Server\n");
- ErrorF ("Vendor: %s\n", VENDOR_STRING);
- ErrorF ("Release: %s\n\n", VERSION_STRING);
- ErrorF ("Contact: %s\n\n", VENDOR_CONTACT);
-}
-
-/*
- * getMonitorInfo - callback function used to return information from the enumeration of monitors attached
- */
-
-wBOOL CALLBACK getMonitorInfo(HMONITOR hMonitor, HDC hdc, LPRECT rect, LPARAM _data)
-{
- struct GetMonitorInfoData* data = (struct GetMonitorInfoData*)_data;
- // only get data for monitor number specified in <data>
- data->monitorNum++;
- if (data->monitorNum == data->requestedMonitor)
- {
- data->bMonitorSpecifiedExists = TRUE;
- data->monitorOffsetX = rect->left;
- data->monitorOffsetY = rect->top;
- data->monitorHeight = rect->bottom - rect->top;
- data->monitorWidth = rect->right - rect->left;
- return FALSE;
- }
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winpushpxl.c b/nx-X11/programs/Xserver/hw/xwin/winpushpxl.c
deleted file mode 100644
index 594933986..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winpushpxl.c
+++ /dev/null
@@ -1,226 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mi/mipushpxl.c,v 3.11 2001/01/17 22:37:07 dawes Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include <X11/X.h>
-#include "gcstruct.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "miscstruct.h"
-#include "../mfb/maskbits.h"
-#include "mi.h"
-
-#define NPT 128
-
-/* winPushPixels -- squeegees the fill style of pGC through pBitMap
- * into pDrawable. pBitMap is a stencil (dx by dy of it is used, it may
- * be bigger) which is placed on the drawable at xOrg, yOrg. Where a 1 bit
- * is set in the bitmap, the fill style is put onto the drawable using
- * the GC's logical function. The drawable is not changed where the bitmap
- * has a zero bit or outside the area covered by the stencil.
-
-WARNING:
- this code works if the 1-bit deep pixmap format returned by GetSpans
-is the same as the format defined by the mfb code (i.e. 32-bit padding
-per scanline, scanline unit = 32 bits; later, this might mean
-bitsizeof(int) padding and sacnline unit == bitsizeof(int).)
-
- */
-
-/*
- * in order to have both (MSB_FIRST and LSB_FIRST) versions of this
- * in the server, we need to rename one of them
- */
-void
-winPushPixels (GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDrawable,
- int dx, int dy, int xOrg, int yOrg)
-{
- int h, dxDivPPW, ibEnd;
- MiBits *pwLineStart;
- register MiBits *pw, *pwEnd;
- register MiBits msk;
- register int ib, w;
- register int ipt; /* index into above arrays */
- Bool fInBox;
- DDXPointRec pt[NPT], ptThisLine;
- int width[NPT];
- PixelType startmask;
-
-
- startmask = (MiBits)(-1) ^
- LONG2CHARSDIFFORDER((MiBits)(-1) >> 1);
-
- pwLineStart = (MiBits *)xalloc(BitmapBytePad(dx));
- if (!pwLineStart)
- return;
- ipt = 0;
- dxDivPPW = dx/PPW;
-
- for(h = 0, ptThisLine.x = 0, ptThisLine.y = 0;
- h < dy;
- h++, ptThisLine.y++)
- {
-
- (*pBitMap->drawable.pScreen->GetSpans)((DrawablePtr)pBitMap, dx,
- &ptThisLine, &dx, 1, (char *)pwLineStart);
-
- pw = pwLineStart;
- /* Process all words which are fully in the pixmap */
-
- fInBox = FALSE;
- pwEnd = pwLineStart + dxDivPPW;
- while(pw < pwEnd)
- {
- w = *pw;
-#ifdef XFree86Server
- msk = startmask;
-#else
- msk = (MiBits)(-1) ^ SCRRIGHT((MiBits)(-1), 1);
-#endif
- for(ib = 0; ib < PPW; ib++)
- {
- if(w & msk)
- {
- if(!fInBox)
- {
- pt[ipt].x = ((pw - pwLineStart) << PWSH) + ib + xOrg;
- pt[ipt].y = h + yOrg;
- /* start new box */
- fInBox = TRUE;
- }
- }
- else
- {
- if(fInBox)
- {
- width[ipt] = ((pw - pwLineStart) << PWSH) +
- ib + xOrg - pt[ipt].x;
- if (++ipt >= NPT)
- {
- (*pGC->ops->FillSpans)(pDrawable, pGC,
- NPT, pt, width, TRUE);
- ipt = 0;
- }
- /* end box */
- fInBox = FALSE;
- }
- }
-#ifdef XFree86Server
- /* This is not quite right, but it'll do for now */
- msk = LONG2CHARSDIFFORDER(LONG2CHARSDIFFORDER(msk) >> 1);
-#else
- msk = SCRRIGHT(msk, 1);
-#endif
- }
- pw++;
- }
- ibEnd = dx & PIM;
- if(ibEnd)
- {
- /* Process final partial word on line */
- w = *pw;
-#ifdef XFree86Server
- msk = startmask;
-#else
- msk = (MiBits)(-1) ^ SCRRIGHT((MiBits)(-1), 1);
-#endif
- for(ib = 0; ib < ibEnd; ib++)
- {
- if(w & msk)
- {
- if(!fInBox)
- {
- /* start new box */
- pt[ipt].x = ((pw - pwLineStart) << PWSH) + ib + xOrg;
- pt[ipt].y = h + yOrg;
- fInBox = TRUE;
- }
- }
- else
- {
- if(fInBox)
- {
- /* end box */
- width[ipt] = ((pw - pwLineStart) << PWSH) +
- ib + xOrg - pt[ipt].x;
- if (++ipt >= NPT)
- {
- (*pGC->ops->FillSpans)(pDrawable,
- pGC, NPT, pt, width, TRUE);
- ipt = 0;
- }
- fInBox = FALSE;
- }
- }
-#ifdef XFree86Server
- /* This is not quite right, but it'll do for now */
- msk = LONG2CHARSDIFFORDER(LONG2CHARSDIFFORDER(msk) >> 1);
-#else
- msk = SCRRIGHT(msk, 1);
-#endif
- }
- }
- /* If scanline ended with last bit set, end the box */
- if(fInBox)
- {
- width[ipt] = dx + xOrg - pt[ipt].x;
- if (++ipt >= NPT)
- {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt, width, TRUE);
- ipt = 0;
- }
- }
- }
- xfree(pwLineStart);
- /* Flush any remaining spans */
- if (ipt)
- {
- (*pGC->ops->FillSpans)(pDrawable, pGC, ipt, pt, width, TRUE);
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winrandr.c b/nx-X11/programs/Xserver/hw/xwin/winrandr.c
deleted file mode 100755
index 7b5b1359c..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winrandr.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * Local prototypes
- */
-
-static Bool
-winRandRGetInfo (ScreenPtr pScreen, Rotation *pRotations);
-
-static Bool
-winRandRSetConfig (ScreenPtr pScreen,
- Rotation rotateKind,
- int rate,
- RRScreenSizePtr pSize);
-
-Bool
-winRandRInit (ScreenPtr pScreen);
-
-
-/*
- * Answer queries about the RandR features supported.
- */
-
-static Bool
-winRandRGetInfo (ScreenPtr pScreen, Rotation *pRotations)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- int n;
- Rotation rotateKind;
- RRScreenSizePtr pSize;
-
- winDebug ("winRandRGetInfo ()\n");
-
- /* Don't support rotations, yet */
- *pRotations = RR_Rotate_0;
-
- /* Bail if no depth has a visual associated with it */
- for (n = 0; n < pScreen->numDepths; n++)
- if (pScreen->allowedDepths[n].numVids)
- break;
- if (n == pScreen->numDepths)
- return FALSE;
-
- /* Only one allowed rotation for now */
- rotateKind = RR_Rotate_0;
-
- /*
- * Register supported sizes. This can be called many times, but
- * we only support one size for now.
- */
- pSize = RRRegisterSize (pScreen,
- pScreenInfo->dwWidth,
- pScreenInfo->dwHeight,
- pScreenInfo->dwWidth_mm,
- pScreenInfo->dwHeight_mm);
-
- /* Tell RandR what the current config is */
- RRSetCurrentConfig (pScreen,
- rotateKind,
- 0, /* refresh rate, not needed */
- pSize);
-
- return TRUE;
-}
-
-
-/*
- * Respond to resize/rotate request from either X Server or X client app
- */
-
-static Bool
-winRandRSetConfig (ScreenPtr pScreen,
- Rotation rotateKind,
- int rate,
- RRScreenSizePtr pSize)
-{
- winDebug ("winRandRSetConfig ()\n");
-
- return TRUE;
-}
-
-
-/*
- * Initialize the RandR layer.
- */
-
-Bool
-winRandRInit (ScreenPtr pScreen)
-{
- rrScrPrivPtr pRRScrPriv;
-
- winDebug ("winRandRInit ()\n");
-
- if (!RRScreenInit (pScreen))
- {
- ErrorF ("winRandRInit () - RRScreenInit () failed\n");
- return FALSE;
- }
-
- /* Set some RandR function pointers */
- pRRScrPriv = rrGetScrPriv (pScreen);
- pRRScrPriv->rrGetInfo = winRandRGetInfo;
- pRRScrPriv->rrSetConfig = winRandRSetConfig;
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winregistry.c b/nx-X11/programs/Xserver/hw/xwin/winregistry.c
deleted file mode 100644
index 3571b14d7..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winregistry.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *Copyright (C) 2002-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-/* Prototypes */
-DWORD
-winGetRegistryDWORD (HKEY hkey, char *pszRegistryKey);
-
-DWORD
-winGetRegistryDWORD (HKEY hkey, char *pszRegistryKey)
-{
- HKEY hkResult;
- DWORD dwDisposition;
-
- RegCreateKeyEx (hkey,
- pszRegistryKey,
- 0,
- '\0',
- REG_OPTION_NON_VOLATILE,
- KEY_READ,
- NULL,
- &hkResult,
- &dwDisposition);
-
- if (dwDisposition == REG_CREATED_NEW_KEY)
- {
- ErrorF ("winGetRegistryDWORD - Created new key: %s\n", pszRegistryKey);
- }
- else if (dwDisposition == REG_OPENED_EXISTING_KEY)
- {
- ErrorF ("winGetRegistryDWORD - Opened existing key: %s\n",
- pszRegistryKey);
- }
-
- /* Free the registry key handle */
- RegCloseKey (hkResult);
- hkResult = NULL;
-
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winresource.h b/nx-X11/programs/Xserver/hw/xwin/winresource.h
deleted file mode 100644
index c9b23ffc3..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winresource.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#if !defined(WINRESOURCE_H)
-#define WINRESOURCE_H
-/*
- *Copyright (C) 2002-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-
-/*
- * Local defines
- */
-
-#define IDC_STATIC -1
-#define IDI_XWIN 101
-#define IDI_XWIN_BOXED 102
-#define IDM_TRAYICON_MENU 103
-#define IDC_CLIENTS_CONNECTED 104
-
-
-#define ID_APP_EXIT 200
-#define ID_APP_HIDE_ROOT 201
-#define ID_APP_ALWAYS_ON_TOP 202
-#define ID_APP_ABOUT 203
-#define ID_APP_SHOWCURSOR 204
-
-#define ID_ABOUT_UG 300
-#define ID_ABOUT_FAQ 301
-#define ID_ABOUT_CHANGELOG 302
-#define ID_ABOUT_WEBSITE 303
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winrop.c b/nx-X11/programs/Xserver/hw/xwin/winrop.c
deleted file mode 100644
index 110292989..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winrop.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- *Copyright (C) 1994-2002 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Alan Hourihane <alanh@fairlite.demon.co.uk>
- */
-/* $XFree86$ */
-
-/*
- * Raster operations used by Windows translated to X's 16 rop codes...
- */
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-void
-ROP16 (HDC hdc, int rop);
-
-int g_copyROP[16] = { 0xFF0062, /* GXclear - 0 */
- 0x8800C6, /* GXand - S & D */
- 0x440328, /* GXandReverse - S & !D */
- 0xCC0020, /* GXcopy - S */
- 0x220326, /* GXandInverted - !S & D */
- 0xAA0029, /* GXnoop - D */
- 0x660046, /* GXxor - S ^ D */
- 0xEE0086, /* GXor - S | D */
- 0x1100A6, /* GXnor - !S & !D */
- 0x990126, /* GXequiv - !S ^ D */
- 0x550009, /* GXinvert - !D */
- 0xDD0228, /* GXorReverse - S | !D */
- 0x330008, /* GXcopyInverted - !S */
- 0xBB0226, /* GXorInverted - !S | D */
- 0x7700C6, /* GXnand - !S | !D */
- 0x000042 /* GXset - 1 */
-};
-
-int g_patternROP[16] = {0xFF0062, /* GXclear - 0 */
- 0xA000C9, /* GXand - P & D */
- 0xF50225, /* GXandReverse - P & !D */
- 0xF00021, /* GXcopy - P */
- 0x5F00E9, /* GXandInverted - !P & D */
- 0xAA0029, /* GXnoop - D */
- 0xA50065, /* GXxor - P ^ D */
- 0xA000C9, /* GXor - P | D */
- 0x5F00E9, /* GXnor - !P & !D */
- 0x5A0049, /* GXequiv - !P ^ D */
- 0x550009, /* GXinvert - !D */
- 0x500325, /* GXorReverse - P | !D */
- 0x0F0001, /* GXcopyInverted - !P */
- 0x0A0329, /* GXorInverted - !P | D */
- 0x0500A9, /* GXnand - !P | !D */
- 0x000042 /* GXset - 1 */
-};
-
-
-void
-ROP16 (HDC hdc, int rop)
-{
- switch (rop)
- {
- case GXclear:
- SetROP2 (hdc, R2_BLACK);
- break;
-
- case GXand:
- SetROP2 (hdc, R2_MASKPEN);
- break;
-
- case GXandReverse:
- SetROP2 (hdc, R2_MASKPENNOT);
- break;
-
- case GXcopy:
- SetROP2 (hdc, R2_COPYPEN);
- break;
-
- case GXnoop:
- SetROP2 (hdc, R2_NOP);
- break;
-
- case GXxor:
- SetROP2 (hdc, R2_XORPEN);
- break;
-
- case GXor:
- SetROP2 (hdc, R2_MERGEPEN);
- break;
-
- case GXnor:
- SetROP2 (hdc, R2_NOTMERGEPEN);
- break;
-
- case GXequiv:
- SetROP2 (hdc, R2_NOTXORPEN);
- break;
-
- case GXinvert:
- SetROP2 (hdc, R2_NOT);
- break;
-
- case GXorReverse:
- SetROP2 (hdc, R2_MERGEPENNOT);
- break;
-
- case GXcopyInverted:
- SetROP2 (hdc, R2_NOTCOPYPEN);
- break;
-
- case GXorInverted:
- SetROP2 (hdc, R2_MERGENOTPEN);
- break;
-
- case GXnand:
- SetROP2 (hdc, R2_NOTMASKPEN);
- break;
-
- case GXset:
- SetROP2 (hdc, R2_WHITE);
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winscrinit.c b/nx-X11/programs/Xserver/hw/xwin/winscrinit.c
deleted file mode 100644
index a18139c28..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winscrinit.c
+++ /dev/null
@@ -1,794 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Dakshinamurthy Karra
- * Suhaib M Siddiqi
- * Peter Busch
- * Harold L Hunt II
- * Kensuke Matsuzaki
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winscrinit.c,v 1.27 2003/07/29 21:25:18 dawes Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "winmsg.h"
-#include "safeAlpha.h"
-
-
-#ifdef XWIN_MULTIWINDOWEXTWM
-static RootlessFrameProcsRec
-winMWExtWMProcs = {
- winMWExtWMCreateFrame,
- winMWExtWMDestroyFrame,
-
- winMWExtWMMoveFrame,
- winMWExtWMResizeFrame,
- winMWExtWMRestackFrame,
- winMWExtWMReshapeFrame,
- winMWExtWMUnmapFrame,
-
- winMWExtWMStartDrawing,
- winMWExtWMStopDrawing,
- winMWExtWMUpdateRegion,
-#ifndef ROOTLESS_TRACK_DAMAGE
- winMWExtWMDamageRects,
-#endif
- winMWExtWMRootlessSwitchWindow,
- NULL,//winWMExtWMDoReorderWindow,
-
- NULL,//winMWExtWMCopyBytes,
- NULL,//winMWExtWMFillBytes,
- NULL,//winMWExtWMCompositePixels,
- winMWExtWMCopyWindow
-};
-#endif
-
-
-/*
- * References to external symbols
- */
-
-extern winScreenInfo g_ScreenInfo[];
-extern miPointerScreenFuncRec g_winPointerCursorFuncs;
-extern int g_iScreenPrivateIndex;
-extern Bool g_fSoftwareCursor;
-
-
-/*
- * Prototypes
- */
-
-Bool
-winRandRInit (ScreenPtr pScreen);
-
-
-/*
- * Local functions
- */
-
-static Bool
-winSaveScreen (ScreenPtr pScreen, int on);
-
-
-/*
- * Determine what type of screen we are initializing
- * and call the appropriate procedure to intiailize
- * that type of screen.
- */
-
-Bool
-winScreenInit (int index,
- ScreenPtr pScreen,
- int argc, char **argv)
-{
- winScreenInfoPtr pScreenInfo = &g_ScreenInfo[index];
- winPrivScreenPtr pScreenPriv;
- HDC hdc;
-
-#if CYGDEBUG || YES
- winDebug ("winScreenInit - dwWidth: %ld dwHeight: %ld\n",
- pScreenInfo->dwWidth, pScreenInfo->dwHeight);
-#endif
-
- /* Allocate privates for this screen */
- if (!winAllocatePrivates (pScreen))
- {
- ErrorF ("winScreenInit - Couldn't allocate screen privates\n");
- return FALSE;
- }
-
- /* Get a pointer to the privates structure that was allocated */
- pScreenPriv = winGetScreenPriv (pScreen);
-
- /* Save a pointer to this screen in the screen info structure */
- pScreenInfo->pScreen = pScreen;
-
- /* Save a pointer to the screen info in the screen privates structure */
- /* This allows us to get back to the screen info from a screen pointer */
- pScreenPriv->pScreenInfo = pScreenInfo;
-
- /*
- * Determine which engine to use.
- *
- * NOTE: This is done once per screen because each screen possibly has
- * a preferred engine specified on the command line.
- */
- if (!winSetEngine (pScreen))
- {
- ErrorF ("winScreenInit - winSetEngine () failed\n");
- return FALSE;
- }
-
- /* Adjust the video mode for our engine type */
- if (!(*pScreenPriv->pwinAdjustVideoMode) (pScreen))
- {
- ErrorF ("winScreenInit - winAdjustVideoMode () failed\n");
- return FALSE;
- }
-
- /* Check for supported display depth */
- if (!(WIN_SUPPORTED_BPPS & (1 << (pScreenInfo->dwBPP - 1))))
- {
- ErrorF ("winScreenInit - Unsupported display depth: %d\n" \
- "Change your Windows display depth to 15, 16, 24, or 32 bits "
- "per pixel.\n",
- (int) pScreenInfo->dwBPP);
- ErrorF ("winScreenInit - Supported depths: %08x\n",
- WIN_SUPPORTED_BPPS);
-#if WIN_CHECK_DEPTH
- return FALSE;
-#endif
- }
-
- /*
- * Check that all monitors have the same display depth if we are using
- * multiple monitors
- */
- if (pScreenInfo->fMultipleMonitors
- && !GetSystemMetrics (SM_SAMEDISPLAYFORMAT))
- {
- ErrorF ("winScreenInit - Monitors do not all have same pixel format / "
- "display depth.\n"
- "Using primary display only.\n");
- pScreenInfo->fMultipleMonitors = FALSE;
- }
-
- /* Create display window */
- if (!(*pScreenPriv->pwinCreateBoundingWindow) (pScreen))
- {
- ErrorF ("winScreenInit - pwinCreateBoundingWindow () "
- "failed\n");
- return FALSE;
- }
-
- /* Get a device context */
- hdc = GetDC (pScreenPriv->hwndScreen);
-
- /* Store the initial height, width, and depth of the display */
- /* Are we using multiple monitors? */
- if (pScreenInfo->fMultipleMonitors)
- {
- pScreenPriv->dwLastWindowsWidth = GetSystemMetrics (SM_CXVIRTUALSCREEN);
- pScreenPriv->dwLastWindowsHeight = GetSystemMetrics (SM_CYVIRTUALSCREEN);
-
- /*
- * In this case, some of the defaults set in
- * winInitializeDefaultScreens () are not correct ...
- */
- if (!pScreenInfo->fUserGaveHeightAndWidth)
- {
- pScreenInfo->dwWidth = GetSystemMetrics (SM_CXVIRTUALSCREEN);
- pScreenInfo->dwHeight = GetSystemMetrics (SM_CYVIRTUALSCREEN);
- pScreenInfo->dwWidth_mm = (pScreenInfo->dwWidth /
- WIN_DEFAULT_DPI) * 25.4;
- pScreenInfo->dwHeight_mm = (pScreenInfo->dwHeight /
- WIN_DEFAULT_DPI) * 25.4;
- }
- }
- else
- {
- pScreenPriv->dwLastWindowsWidth = GetSystemMetrics (SM_CXSCREEN);
- pScreenPriv->dwLastWindowsHeight = GetSystemMetrics (SM_CYSCREEN);
- }
-
- /* Save the original bits per pixel */
- pScreenPriv->dwLastWindowsBitsPixel = GetDeviceCaps (hdc, BITSPIXEL);
-
- /* Release the device context */
- ReleaseDC (pScreenPriv->hwndScreen, hdc);
-
- /* Clear the visuals list */
- miClearVisualTypes ();
-
- /* Set the padded screen width */
- pScreenInfo->dwPaddedWidth = PixmapBytePad (pScreenInfo->dwWidth,
- pScreenInfo->dwBPP);
-
- /* Call the engine dependent screen initialization procedure */
- if (!((*pScreenPriv->pwinFinishScreenInit) (index, pScreen, argc, argv)))
- {
- ErrorF ("winScreenInit - winFinishScreenInit () failed\n");
- return FALSE;
- }
-
- if (!g_fSoftwareCursor)
- winInitCursor(pScreen);
- else
- winErrorFVerb(2, "winScreenInit - Using software cursor\n");
-
-#if CYGDEBUG || YES
- winDebug ("winScreenInit - returning\n");
-#endif
-
- return TRUE;
-}
-
-
-/* See Porting Layer Definition - p. 20 */
-Bool
-winFinishScreenInitFB (int index,
- ScreenPtr pScreen,
- int argc, char **argv)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- VisualPtr pVisual = NULL;
- char *pbits = NULL;
-#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
- int iReturn;
-#endif
-
- /* Create framebuffer */
- if (!(*pScreenPriv->pwinAllocateFB) (pScreen))
- {
- ErrorF ("winFinishScreenInitFB - Could not allocate framebuffer\n");
- return FALSE;
- }
-
- /*
- * Grab the number of bits that are used to represent color in each pixel.
- */
- if (pScreenInfo->dwBPP == 8)
- pScreenInfo->dwDepth = 8;
- else
- pScreenInfo->dwDepth = winCountBits (pScreenPriv->dwRedMask)
- + winCountBits (pScreenPriv->dwGreenMask)
- + winCountBits (pScreenPriv->dwBlueMask);
-
- winErrorFVerb (2, "winFinishScreenInitFB - Masks: %08x %08x %08x\n",
- (unsigned int) pScreenPriv->dwRedMask,
- (unsigned int) pScreenPriv->dwGreenMask,
- (unsigned int) pScreenPriv->dwBlueMask);
-
- /* Init visuals */
- if (!(*pScreenPriv->pwinInitVisuals) (pScreen))
- {
- ErrorF ("winFinishScreenInitFB - winInitVisuals failed\n");
- return FALSE;
- }
-
- /* Setup a local variable to point to the framebuffer */
- pbits = pScreenInfo->pfb;
-
- /* Apparently we need this for the render extension */
- miSetPixmapDepths ();
-
- /* Start fb initialization */
- if (!fbSetupScreen (pScreen,
- pScreenInfo->pfb,
- pScreenInfo->dwWidth, pScreenInfo->dwHeight,
- monitorResolution, monitorResolution,
- pScreenInfo->dwStride,
- pScreenInfo->dwBPP))
- {
- ErrorF ("winFinishScreenInitFB - fbSetupScreen failed\n");
- return FALSE;
- }
-
- /* Override default colormap routines if visual class is dynamic */
- if (pScreenInfo->dwDepth == 8
- && (pScreenInfo->dwEngine == WIN_SERVER_SHADOW_GDI
- || (pScreenInfo->dwEngine == WIN_SERVER_SHADOW_DDNL
- && pScreenInfo->fFullScreen)
- || (pScreenInfo->dwEngine == WIN_SERVER_SHADOW_DD
- && pScreenInfo->fFullScreen)))
- {
- winSetColormapFunctions (pScreen);
-
- /*
- * NOTE: Setting whitePixel to 255 causes Magic 7.1 to allocate its
- * own colormap, as it cannot allocate 7 planes in the default
- * colormap. Setting whitePixel to 1 allows Magic to get 7
- * planes in the default colormap, so it doesn't create its
- * own colormap. This latter situation is highly desireable,
- * as it keeps the Magic window viewable when switching to
- * other X clients that use the default colormap.
- */
- pScreen->blackPixel = 0;
- pScreen->whitePixel = 1;
- }
-
- /* Place our save screen function */
- pScreen->SaveScreen = winSaveScreen;
-
- /* Backing store functions */
- /*
- * FIXME: Backing store support still doesn't seem to be working.
- */
- pScreen->BackingStoreFuncs.SaveAreas = fbSaveAreas;
- pScreen->BackingStoreFuncs.RestoreAreas = fbRestoreAreas;
-
- /* Finish fb initialization */
- if (!fbFinishScreenInit (pScreen,
- pScreenInfo->pfb,
- pScreenInfo->dwWidth, pScreenInfo->dwHeight,
- monitorResolution, monitorResolution,
- pScreenInfo->dwStride,
- pScreenInfo->dwBPP))
- {
- ErrorF ("winFinishScreenInitFB - fbFinishScreenInit failed\n");
- return FALSE;
- }
-
- /* Save a pointer to the root visual */
- for (pVisual = pScreen->visuals;
- pVisual->vid != pScreen->rootVisual;
- pVisual++);
- pScreenPriv->pRootVisual = pVisual;
-
- /*
- * Setup points to the block and wakeup handlers. Pass a pointer
- * to the current screen as pWakeupdata.
- */
- pScreen->BlockHandler = winBlockHandler;
- pScreen->WakeupHandler = winWakeupHandler;
- pScreen->blockData = pScreen;
- pScreen->wakeupData = pScreen;
-
-#ifdef XWIN_MULTIWINDOWEXTWM
- /*
- * Setup acceleration for multi-window external window manager mode.
- * To be compatible with the Damage extension, this must be done
- * before calling miDCInitialize, which calls DamageSetup.
- */
- if (pScreenInfo->fMWExtWM)
- {
- if (!RootlessAccelInit (pScreen))
- {
- ErrorF ("winFinishScreenInitFB - RootlessAccelInit () failed\n");
- return FALSE;
- }
- }
-#endif
-
-#ifdef RENDER
- /* Render extension initialization, calls miPictureInit */
- if (!fbPictureInit (pScreen, NULL, 0))
- {
- ErrorF ("winFinishScreenInitFB - fbPictureInit () failed\n");
- return FALSE;
- }
-#endif
-
-#ifdef RANDR
- /* Initialize resize and rotate support */
- if (!winRandRInit (pScreen))
- {
- ErrorF ("winFinishScreenInitFB - winRandRInit () failed\n");
- return FALSE;
- }
-#endif
-
- /*
- * Backing store support should reduce network traffic and increase
- * performance.
- */
- miInitializeBackingStore (pScreen);
-
- /* KDrive does miDCInitialize right after miInitializeBackingStore */
- /* Setup the cursor routines */
-#if CYGDEBUG
- winDebug ("winFinishScreenInitFB - Calling miDCInitialize ()\n");
-#endif
- miDCInitialize (pScreen, &g_winPointerCursorFuncs);
-
- /* KDrive does winCreateDefColormap right after miDCInitialize */
- /* Create a default colormap */
-#if CYGDEBUG
- winDebug ("winFinishScreenInitFB - Calling winCreateDefColormap ()\n");
-#endif
- if (!winCreateDefColormap (pScreen))
- {
- ErrorF ("winFinishScreenInitFB - Could not create colormap\n");
- return FALSE;
- }
-
- /* Initialize the shadow framebuffer layer */
- if ((pScreenInfo->dwEngine == WIN_SERVER_SHADOW_GDI
- || pScreenInfo->dwEngine == WIN_SERVER_SHADOW_DD
- || pScreenInfo->dwEngine == WIN_SERVER_SHADOW_DDNL)
-#ifdef XWIN_MULTIWINDOWEXTWM
- && !pScreenInfo->fMWExtWM
-#endif
- )
- {
-#if CYGDEBUG
- winDebug ("winFinishScreenInitFB - Calling shadowInit ()\n");
-#endif
- if (!shadowInit (pScreen,
- pScreenPriv->pwinShadowUpdate,
- NULL))
- {
- ErrorF ("winFinishScreenInitFB - shadowInit () failed\n");
- return FALSE;
- }
- }
-
-#ifdef XWIN_MULTIWINDOWEXTWM
- /* Handle multi-window external window manager mode */
- if (pScreenInfo->fMWExtWM)
- {
- winDebug ("winScreenInit - MultiWindowExtWM - Calling RootlessInit\n");
-
- RootlessInit(pScreen, &winMWExtWMProcs);
-
- winDebug ("winScreenInit - MultiWindowExtWM - RootlessInit returned\n");
-
- rootless_CopyBytes_threshold = 0;
- rootless_FillBytes_threshold = 0;
- rootless_CompositePixels_threshold = 0;
- /* FIXME: How many? Profiling needed? */
- rootless_CopyWindow_threshold = 1;
-
- winWindowsWMExtensionInit ();
- }
-#endif
-
- /* Handle rootless mode */
- if (pScreenInfo->fRootless)
- {
- /* Define the WRAP macro temporarily for local use */
-#define WRAP(a) \
- if (pScreen->a) { \
- pScreenPriv->a = pScreen->a; \
- } else { \
- ErrorF("null screen fn " #a "\n"); \
- pScreenPriv->a = NULL; \
- }
-
- /* Save a pointer to each lower-level window procedure */
- WRAP(CreateWindow);
- WRAP(DestroyWindow);
- WRAP(RealizeWindow);
- WRAP(UnrealizeWindow);
- WRAP(PositionWindow);
- WRAP(ChangeWindowAttributes);
-#ifdef SHAPE
- WRAP(SetShape);
-#endif
-
- /* Assign rootless window procedures to be top level procedures */
- pScreen->CreateWindow = winCreateWindowRootless;
- pScreen->DestroyWindow = winDestroyWindowRootless;
- pScreen->PositionWindow = winPositionWindowRootless;
- /*pScreen->ChangeWindowAttributes = winChangeWindowAttributesRootless;*/
- pScreen->RealizeWindow = winMapWindowRootless;
- pScreen->UnrealizeWindow = winUnmapWindowRootless;
-#ifdef SHAPE
- pScreen->SetShape = winSetShapeRootless;
-#endif
-
- /* Undefine the WRAP macro, as it is not needed elsewhere */
-#undef WRAP
- }
-
-
-#ifdef XWIN_MULTIWINDOW
- /* Handle multi window mode */
- else if (pScreenInfo->fMultiWindow)
- {
- /* Define the WRAP macro temporarily for local use */
-#define WRAP(a) \
- if (pScreen->a) { \
- pScreenPriv->a = pScreen->a; \
- } else { \
- ErrorF("null screen fn " #a "\n"); \
- pScreenPriv->a = NULL; \
- }
-
- /* Save a pointer to each lower-level window procedure */
- WRAP(CreateWindow);
- WRAP(DestroyWindow);
- WRAP(RealizeWindow);
- WRAP(UnrealizeWindow);
- WRAP(PositionWindow);
- WRAP(ChangeWindowAttributes);
- WRAP(ReparentWindow);
- WRAP(RestackWindow);
- WRAP(ResizeWindow);
- WRAP(MoveWindow);
- WRAP(CopyWindow);
-#ifdef SHAPE
- WRAP(SetShape);
-#endif
-
- /* Assign multi-window window procedures to be top level procedures */
- pScreen->CreateWindow = winCreateWindowMultiWindow;
- pScreen->DestroyWindow = winDestroyWindowMultiWindow;
- pScreen->PositionWindow = winPositionWindowMultiWindow;
- /*pScreen->ChangeWindowAttributes = winChangeWindowAttributesMultiWindow;*/
- pScreen->RealizeWindow = winMapWindowMultiWindow;
- pScreen->UnrealizeWindow = winUnmapWindowMultiWindow;
- pScreen->ReparentWindow = winReparentWindowMultiWindow;
- pScreen->RestackWindow = winRestackWindowMultiWindow;
- pScreen->ResizeWindow = winResizeWindowMultiWindow;
- pScreen->MoveWindow = winMoveWindowMultiWindow;
- pScreen->CopyWindow = winCopyWindowMultiWindow;
-#ifdef SHAPE
- pScreen->SetShape = winSetShapeMultiWindow;
-#endif
-
- /* Undefine the WRAP macro, as it is not needed elsewhere */
-#undef WRAP
- }
-#endif
-
- /* Wrap either fb's or shadow's CloseScreen with our CloseScreen */
- pScreenPriv->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = pScreenPriv->pwinCloseScreen;
-
-#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
- /* Create a mutex for modules in separate threads to wait for */
- iReturn = pthread_mutex_init (&pScreenPriv->pmServerStarted, NULL);
- if (iReturn != 0)
- {
- ErrorF ("winFinishScreenInitFB - pthread_mutex_init () failed: %d\n",
- iReturn);
- return FALSE;
- }
-
- /* Own the mutex for modules in separate threads */
- iReturn = pthread_mutex_lock (&pScreenPriv->pmServerStarted);
- if (iReturn != 0)
- {
- ErrorF ("winFinishScreenInitFB - pthread_mutex_lock () failed: %d\n",
- iReturn);
- return FALSE;
- }
-
- /* Set the ServerStarted flag to false */
- pScreenPriv->fServerStarted = FALSE;
-#endif
-
-#ifdef XWIN_MULTIWINDOWEXTWM
- pScreenPriv->fRestacking = FALSE;
-#endif
-
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
- if (FALSE
-#ifdef XWIN_MULTIWINDOW
- || pScreenInfo->fMultiWindow
-#endif
-#ifdef XWIN_MULTIWINDOWEXTWM
- || pScreenInfo->fInternalWM
-#endif
- )
- {
-#if CYGDEBUG || YES
- winDebug ("winFinishScreenInitFB - Calling winInitWM.\n");
-#endif
-
- /* Initialize multi window mode */
- if (!winInitWM (&pScreenPriv->pWMInfo,
- &pScreenPriv->ptWMProc,
- &pScreenPriv->ptXMsgProc,
- &pScreenPriv->pmServerStarted,
- pScreenInfo->dwScreen,
- (HWND)&pScreenPriv->hwndScreen,
-#ifdef XWIN_MULTIWINDOWEXTWM
- pScreenInfo->fInternalWM ||
-#endif
- FALSE))
- {
- ErrorF ("winFinishScreenInitFB - winInitWM () failed.\n");
- return FALSE;
- }
- }
-#endif
-
- /* Tell the server that we are enabled */
- pScreenPriv->fEnabled = TRUE;
-
- /* Tell the server that we have a valid depth */
- pScreenPriv->fBadDepth = FALSE;
-
-#if CYGDEBUG || YES
- winDebug ("winFinishScreenInitFB - returning\n");
-#endif
-
- return TRUE;
-}
-
-#ifdef XWIN_NATIVEGDI
-/* See Porting Layer Definition - p. 20 */
-
-Bool
-winFinishScreenInitNativeGDI (int index,
- ScreenPtr pScreen,
- int argc, char **argv)
-{
- winScreenPriv(pScreen);
- winScreenInfoPtr pScreenInfo = &g_ScreenInfo[index];
- VisualPtr pVisuals = NULL;
- DepthPtr pDepths = NULL;
- VisualID rootVisual = 0;
- int nVisuals = 0, nDepths = 0, nRootDepth = 0;
-
- /* Ignore user input (mouse, keyboard) */
- pScreenInfo->fIgnoreInput = FALSE;
-
- /* Get device contexts for the screen and shadow bitmap */
- pScreenPriv->hdcScreen = GetDC (pScreenPriv->hwndScreen);
- if (pScreenPriv->hdcScreen == NULL)
- FatalError ("winFinishScreenInitNativeGDI - Couldn't get a DC\n");
-
- /* Init visuals */
- if (!(*pScreenPriv->pwinInitVisuals) (pScreen))
- {
- ErrorF ("winFinishScreenInitNativeGDI - pwinInitVisuals failed\n");
- return FALSE;
- }
-
- /* Initialize the mi visuals */
- if (!miInitVisuals (&pVisuals, &pDepths, &nVisuals, &nDepths, &nRootDepth,
- &rootVisual,
- ((unsigned long)1 << (pScreenInfo->dwDepth - 1)), 8,
- TrueColor))
- {
- ErrorF ("winFinishScreenInitNativeGDI - miInitVisuals () failed\n");
- return FALSE;
- }
-
- /* Initialize the CloseScreen procedure pointer */
- pScreen->CloseScreen = NULL;
-
- /* Initialize the mi code */
- if (!miScreenInit (pScreen,
- NULL, /* No framebuffer */
- pScreenInfo->dwWidth, pScreenInfo->dwHeight,
- monitorResolution, monitorResolution,
- pScreenInfo->dwStride,
- nRootDepth, nDepths, pDepths, rootVisual,
- nVisuals, pVisuals))
- {
- ErrorF ("winFinishScreenInitNativeGDI - miScreenInit failed\n");
- return FALSE;
- }
-
- pScreen->defColormap = FakeClientID(0);
-
- /*
- * Register our block and wakeup handlers; these procedures
- * process messages in our Windows message queue; specifically,
- * they process mouse and keyboard input.
- */
- pScreen->BlockHandler = winBlockHandler;
- pScreen->WakeupHandler = winWakeupHandler;
- pScreen->blockData = pScreen;
- pScreen->wakeupData = pScreen;
-
- /* Place our save screen function */
- pScreen->SaveScreen = winSaveScreen;
-
- /* Pixmaps */
- pScreen->CreatePixmap = winCreatePixmapNativeGDI;
- pScreen->DestroyPixmap = winDestroyPixmapNativeGDI;
-
- /* Other Screen Routines */
- pScreen->QueryBestSize = winQueryBestSizeNativeGDI;
- pScreen->SaveScreen = winSaveScreen;
- pScreen->GetImage = miGetImage;
- pScreen->GetSpans = winGetSpansNativeGDI;
-
- /* Window Procedures */
- pScreen->CreateWindow = winCreateWindowNativeGDI;
- pScreen->DestroyWindow = winDestroyWindowNativeGDI;
- pScreen->PositionWindow = winPositionWindowNativeGDI;
- /*pScreen->ChangeWindowAttributes = winChangeWindowAttributesNativeGDI;*/
- pScreen->RealizeWindow = winMapWindowNativeGDI;
- pScreen->UnrealizeWindow = winUnmapWindowNativeGDI;
-
- /* Paint window */
- pScreen->PaintWindowBackground = miPaintWindow;
- pScreen->PaintWindowBorder = miPaintWindow;
- pScreen->CopyWindow = winCopyWindowNativeGDI;
-
- /* Fonts */
- pScreen->RealizeFont = winRealizeFontNativeGDI;
- pScreen->UnrealizeFont = winUnrealizeFontNativeGDI;
-
- /* GC */
- pScreen->CreateGC = winCreateGCNativeGDI;
-
- /* Colormap Routines */
- pScreen->CreateColormap = miInitializeColormap;
- pScreen->DestroyColormap = (DestroyColormapProcPtr) (void (*)(void)) NoopDDA;
- pScreen->InstallColormap = miInstallColormap;
- pScreen->UninstallColormap = miUninstallColormap;
- pScreen->ListInstalledColormaps = miListInstalledColormaps;
- pScreen->StoreColors = (StoreColorsProcPtr) (void (*)(void)) NoopDDA;
- pScreen->ResolveColor = miResolveColor;
-
- /* Bitmap */
- pScreen->BitmapToRegion = winPixmapToRegionNativeGDI;
-
- ErrorF ("winFinishScreenInitNativeGDI - calling miDCInitialize\n");
-
- /* Set the default white and black pixel positions */
- pScreen->whitePixel = pScreen->blackPixel = (Pixel) 0;
-
- /* Initialize the cursor */
- if (!miDCInitialize (pScreen, &g_winPointerCursorFuncs))
- {
- ErrorF ("winFinishScreenInitNativeGDI - miDCInitialize failed\n");
- return FALSE;
- }
-
- /* Create a default colormap */
- if (!miCreateDefColormap (pScreen))
- {
- ErrorF ("winFinishScreenInitNativeGDI - miCreateDefColormap () "
- "failed\n");
- return FALSE;
- }
-
- ErrorF ("winFinishScreenInitNativeGDI - miCreateDefColormap () "
- "returned\n");
-
- /* mi doesn't use a CloseScreen procedure, so no need to wrap */
- pScreen->CloseScreen = pScreenPriv->pwinCloseScreen;
-
- /* Tell the server that we are enabled */
- pScreenPriv->fEnabled = TRUE;
-
- ErrorF ("winFinishScreenInitNativeGDI - Successful addition of "
- "screen %08x\n",
- (unsigned int) pScreen);
-
- return TRUE;
-}
-#endif
-
-
-/* See Porting Layer Definition - p. 33 */
-static Bool
-winSaveScreen (ScreenPtr pScreen, int on)
-{
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winsetsp.c b/nx-X11/programs/Xserver/hw/xwin/winsetsp.c
deleted file mode 100644
index 65b90ea39..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winsetsp.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Harold L Hunt II
- * Alan Hourihane <alanh@fairlite.demon.co.uk>
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winsetsp.c,v 1.7 2001/11/01 12:19:42 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * References to external symbols
- */
-
-extern int g_iPixmapPrivateIndex;
-extern int g_iGCPrivateIndex;
-extern int g_copyROP[];
-
-
-/* See Porting Layer Definition - p. 55 */
-void
-winSetSpansNativeGDI (DrawablePtr pDrawable,
- GCPtr pGC,
- char *pSrcs,
- DDXPointPtr pPoints,
- int *piWidths,
- int iSpans,
- int fSorted)
-{
- winGCPriv(pGC);
- PixmapPtr pPixmap = NULL;
- winPrivPixmapPtr pPixmapPriv = NULL;
- HBITMAP hbmpOrig = NULL;
- BITMAPINFO bmi;
- HRGN hrgn = NULL, combined = NULL;
- int nbox;
- BoxPtr pbox;
-
- nbox = REGION_NUM_RECTS (pGC->pCompositeClip);
- pbox = REGION_RECTS (pGC->pCompositeClip);
-
- if (!nbox) return;
-
- combined = CreateRectRgn (pbox->x1, pbox->y1, pbox->x2, pbox->y2);
- nbox--; pbox++;
- while (nbox--)
- {
- hrgn = CreateRectRgn (pbox->x1, pbox->y1, pbox->x2, pbox->y2);
- CombineRgn (combined, combined, hrgn, RGN_OR);
- DeleteObject (hrgn);
- hrgn = NULL;
- pbox++;
- }
-
- /* Branch on the drawable type */
- switch (pDrawable->type)
- {
- case DRAWABLE_PIXMAP:
-
- SelectClipRgn (pGCPriv->hdcMem, combined);
- DeleteObject (combined);
- combined = NULL;
-
- pPixmap = (PixmapPtr) pDrawable;
- pPixmapPriv = winGetPixmapPriv (pPixmap);
-
- /* Select the drawable pixmap into a DC */
- hbmpOrig = SelectObject (pGCPriv->hdcMem, pPixmapPriv->hBitmap);
- if (hbmpOrig == NULL)
- FatalError ("winSetSpans - DRAWABLE_PIXMAP - SelectObject () "
- "failed on pPixmapPriv->hBitmap\n");
-
- while (iSpans--)
- {
- ZeroMemory (&bmi, sizeof (BITMAPINFO));
- bmi.bmiHeader.biSize = sizeof (BITMAPINFOHEADER);
- bmi.bmiHeader.biWidth = *piWidths;
- bmi.bmiHeader.biHeight = 1;
- bmi.bmiHeader.biPlanes = 1;
- bmi.bmiHeader.biBitCount = pDrawable->depth;
- bmi.bmiHeader.biCompression = BI_RGB;
-
- /* Setup color table for mono DIBs */
- if (pDrawable->depth == 1)
- {
- bmi.bmiColors[1].rgbBlue = 255;
- bmi.bmiColors[1].rgbGreen = 255;
- bmi.bmiColors[1].rgbRed = 255;
- }
-
- StretchDIBits (pGCPriv->hdcMem,
- pPoints->x, pPoints->y,
- *piWidths, 1,
- 0, 0,
- *piWidths, 1,
- pSrcs,
- (BITMAPINFO *) &bmi,
- DIB_RGB_COLORS,
- g_copyROP[pGC->alu]);
-
- pSrcs += PixmapBytePad (*piWidths, pDrawable->depth);
- pPoints++;
- piWidths++;
- }
-
- /* Reset the clip region */
- SelectClipRgn (pGCPriv->hdcMem, NULL);
-
- /* Push the drawable pixmap out of the GC HDC */
- SelectObject (pGCPriv->hdcMem, hbmpOrig);
- break;
-
- case DRAWABLE_WINDOW:
-
- SelectClipRgn (pGCPriv->hdc, combined);
- DeleteObject (combined);
- combined = NULL;
-
- while (iSpans--)
- {
- ZeroMemory (&bmi, sizeof (BITMAPINFO));
- bmi.bmiHeader.biSize = sizeof (BITMAPINFOHEADER);
- bmi.bmiHeader.biWidth = *piWidths;
- bmi.bmiHeader.biHeight = 1;
- bmi.bmiHeader.biPlanes = 1;
- bmi.bmiHeader.biBitCount = pDrawable->depth;
- bmi.bmiHeader.biCompression = BI_RGB;
-
- /* Setup color table for mono DIBs */
- if (pDrawable->depth == 1)
- {
- bmi.bmiColors[1].rgbBlue = 255;
- bmi.bmiColors[1].rgbGreen = 255;
- bmi.bmiColors[1].rgbRed = 255;
- }
-
- StretchDIBits (pGCPriv->hdc,
- pPoints->x, pPoints->y,
- *piWidths, 1,
- 0, 0,
- *piWidths, 1,
- pSrcs,
- (BITMAPINFO *) &bmi,
- DIB_RGB_COLORS,
- g_copyROP[pGC->alu]);
-
- pSrcs += PixmapBytePad (*piWidths, pDrawable->depth);
- pPoints++;
- piWidths++;
- }
-
- /* Reset the clip region */
- SelectClipRgn (pGCPriv->hdc, NULL);
- break;
-
- case UNDRAWABLE_WINDOW:
- FatalError ("\nwinSetSpansNativeGDI - UNDRAWABLE_WINDOW\n\n");
- break;
-
- case DRAWABLE_BUFFER:
- FatalError ("\nwinSetSpansNativeGDI - DRAWABLE_BUFFER\n\n");
- break;
-
- default:
- FatalError ("\nwinSetSpansNativeGDI - Unknown drawable type\n\n");
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winshaddd.c b/nx-X11/programs/Xserver/hw/xwin/winshaddd.c
deleted file mode 100644
index 607a0674a..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winshaddd.c
+++ /dev/null
@@ -1,1443 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Dakshinamurthy Karra
- * Suhaib M Siddiqi
- * Peter Busch
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winshaddd.c,v 1.22 2002/10/17 08:18:24 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * External symbols
- */
-
-extern HWND g_hDlgExit;
-
-
-/*
- * FIXME: Headers are broken, DEFINE_GUID doesn't work correctly,
- * so we have to redefine it here.
- */
-#ifdef DEFINE_GUID
-#undef DEFINE_GUID
-#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-#endif /* DEFINE_GUID */
-
-
-/*
- * FIXME: Headers are broken, IID_IDirectDraw4 has to be defined
- * here manually. Should be handled by ddraw.h
- */
-#ifndef IID_IDirectDraw2
-DEFINE_GUID( IID_IDirectDraw2,0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
-#endif /* IID_IDirectDraw2 */
-
-
-/*
- * Local prototypes
- */
-
-static Bool
-winAllocateFBShadowDD (ScreenPtr pScreen);
-
-static void
-winShadowUpdateDD (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-static Bool
-winCloseScreenShadowDD (int nIndex, ScreenPtr pScreen);
-
-static Bool
-winInitVisualsShadowDD (ScreenPtr pScreen);
-
-static Bool
-winAdjustVideoModeShadowDD (ScreenPtr pScreen);
-
-static Bool
-winBltExposedRegionsShadowDD (ScreenPtr pScreen);
-
-static Bool
-winActivateAppShadowDD (ScreenPtr pScreen);
-
-static Bool
-winRedrawScreenShadowDD (ScreenPtr pScreen);
-
-static Bool
-winRealizeInstalledPaletteShadowDD (ScreenPtr pScreen);
-
-static Bool
-winInstallColormapShadowDD (ColormapPtr pColormap);
-
-static Bool
-winStoreColorsShadowDD (ColormapPtr pmap,
- int ndef,
- xColorItem *pdefs);
-
-static Bool
-winCreateColormapShadowDD (ColormapPtr pColormap);
-
-static Bool
-winDestroyColormapShadowDD (ColormapPtr pColormap);
-
-static Bool
-winCreatePrimarySurfaceShadowDD (ScreenPtr pScreen);
-
-static Bool
-winReleasePrimarySurfaceShadowDD (ScreenPtr pScreen);
-
-
-/*
- * Create the primary surface and attach the clipper.
- * Used for both the initial surface creation and during
- * WM_DISPLAYCHANGE messages.
- */
-
-static Bool
-winCreatePrimarySurfaceShadowDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- HRESULT ddrval = DD_OK;
- DDSURFACEDESC ddsd;
-
- /* Describe the primary surface */
- ZeroMemory (&ddsd, sizeof (ddsd));
- ddsd.dwSize = sizeof (ddsd);
- ddsd.dwFlags = DDSD_CAPS;
- ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
-
- /* Create the primary surface */
- ddrval = IDirectDraw2_CreateSurface (pScreenPriv->pdd2,
- &ddsd,
- &pScreenPriv->pddsPrimary,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winCreatePrimarySurfaceShadowDD - Could not create primary "
- "surface: %08x\n", (unsigned int) ddrval);
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winCreatePrimarySurfaceShadowDD - Created primary surface\n");
-#endif
-
- /*
- * Attach a clipper to the primary surface that will clip our blits to our
- * display window.
- */
- ddrval = IDirectDrawSurface2_SetClipper (pScreenPriv->pddsPrimary,
- pScreenPriv->pddcPrimary);
- if (FAILED (ddrval))
- {
- ErrorF ("winCreatePrimarySurfaceShadowDD - Primary attach clipper "
- "failed: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winCreatePrimarySurfaceShadowDD - Attached clipper to "
- "primary surface\n");
-#endif
-
- /* Everything was correct */
- return TRUE;
-}
-
-
-/*
- * Detach the clipper and release the primary surface.
- * Called from WM_DISPLAYCHANGE.
- */
-
-static Bool
-winReleasePrimarySurfaceShadowDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
-
- ErrorF ("winReleasePrimarySurfaceShadowDD - Hello\n");
-
- /* Release the primary surface and clipper, if they exist */
- if (pScreenPriv->pddsPrimary)
- {
- /*
- * Detach the clipper from the primary surface.
- * NOTE: We do this explicity for clarity. The Clipper is not released.
- */
- IDirectDrawSurface2_SetClipper (pScreenPriv->pddsPrimary,
- NULL);
-
- ErrorF ("winReleasePrimarySurfaceShadowDD - Detached clipper\n");
-
- /* Release the primary surface */
- IDirectDrawSurface2_Release (pScreenPriv->pddsPrimary);
- pScreenPriv->pddsPrimary = NULL;
- }
-
- ErrorF ("winReleasePrimarySurfaceShadowDD - Released primary surface\n");
-
- return TRUE;
-}
-
-
-/*
- * Create a DirectDraw surface for the shadow framebuffer; also create
- * a primary surface object so we can blit to the display.
- *
- * Install a DirectDraw clipper on our primary surface object
- * that clips our blits to the unobscured client area of our display window.
- */
-
-static Bool
-winAllocateFBShadowDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- HRESULT ddrval = DD_OK;
- DDSURFACEDESC ddsd;
- DDSURFACEDESC *pddsdShadow = NULL;
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDD\n");
-#endif
-
- /* Create a clipper */
- ddrval = (*g_fpDirectDrawCreateClipper) (0,
- &pScreenPriv->pddcPrimary,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDD - Could not create clipper: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDD - Created a clipper\n");
-#endif
-
- /* Get a device context for the screen */
- pScreenPriv->hdcScreen = GetDC (pScreenPriv->hwndScreen);
-
- /* Attach the clipper to our display window */
- ddrval = IDirectDrawClipper_SetHWnd (pScreenPriv->pddcPrimary,
- 0,
- pScreenPriv->hwndScreen);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDD - Clipper not attached to "
- "window: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDD - Attached clipper to window\n");
-#endif
-
- /* Create a DirectDraw object, store the address at lpdd */
- ddrval = (*g_fpDirectDrawCreate) (NULL, &pScreenPriv->pdd, NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDD - Could not start DirectDraw: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDD () - Created and initialized DD\n");
-#endif
-
- /* Get a DirectDraw2 interface pointer */
- ddrval = IDirectDraw_QueryInterface (pScreenPriv->pdd,
- &IID_IDirectDraw2,
- (LPVOID*) &pScreenPriv->pdd2);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDD - Failed DD2 query: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
- /* Are we full screen? */
- if (pScreenInfo->fFullScreen)
- {
- DDSURFACEDESC ddsdCurrent;
- DWORD dwRefreshRateCurrent = 0;
- HDC hdc = NULL;
-
- /* Set the cooperative level to full screen */
- ddrval = IDirectDraw2_SetCooperativeLevel (pScreenPriv->pdd2,
- pScreenPriv->hwndScreen,
- DDSCL_EXCLUSIVE
- | DDSCL_FULLSCREEN);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDD - Could not set "
- "cooperative level: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
- /*
- * We only need to get the current refresh rate for comparison
- * if a refresh rate has been passed on the command line.
- */
- if (pScreenInfo->dwRefreshRate != 0)
- {
- ZeroMemory (&ddsdCurrent, sizeof (ddsdCurrent));
- ddsdCurrent.dwSize = sizeof (ddsdCurrent);
-
- /* Get information about current display settings */
- ddrval = IDirectDraw2_GetDisplayMode (pScreenPriv->pdd2,
- &ddsdCurrent);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDD - Could not get current "
- "refresh rate: %08x. Continuing.\n",
- (unsigned int) ddrval);
- dwRefreshRateCurrent = 0;
- }
- else
- {
- /* Grab the current refresh rate */
- dwRefreshRateCurrent = ddsdCurrent.u2.dwRefreshRate;
- }
- }
-
- /* Clean up the refresh rate */
- if (dwRefreshRateCurrent == pScreenInfo->dwRefreshRate)
- {
- /*
- * Refresh rate is non-specified or equal to current.
- */
- pScreenInfo->dwRefreshRate = 0;
- }
-
- /* Grab a device context for the screen */
- hdc = GetDC (NULL);
- if (hdc == NULL)
- {
- ErrorF ("winAllocateFBShadowDD - GetDC () failed\n");
- return FALSE;
- }
-
- /* Only change the video mode when different than current mode */
- if (!pScreenInfo->fMultipleMonitors
- && (pScreenInfo->dwWidth != GetSystemMetrics (SM_CXSCREEN)
- || pScreenInfo->dwHeight != GetSystemMetrics (SM_CYSCREEN)
- || pScreenInfo->dwBPP != GetDeviceCaps (hdc, BITSPIXEL)
- || pScreenInfo->dwRefreshRate != 0))
- {
- ErrorF ("winAllocateFBShadowDD - Changing video mode\n");
-
- /* Change the video mode to the mode requested */
- ddrval = IDirectDraw2_SetDisplayMode (pScreenPriv->pdd2,
- pScreenInfo->dwWidth,
- pScreenInfo->dwHeight,
- pScreenInfo->dwBPP,
- pScreenInfo->dwRefreshRate,
- 0);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDD - Could not set "\
- "full screen display mode: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
- }
- else
- {
- ErrorF ("winAllocateFBShadowDD - Not changing video mode\n");
- }
-
- /* Release our DC */
- ReleaseDC (NULL, hdc);
- hdc = NULL;
- }
- else
- {
- /* Set the cooperative level for windowed mode */
- ddrval = IDirectDraw2_SetCooperativeLevel (pScreenPriv->pdd2,
- pScreenPriv->hwndScreen,
- DDSCL_NORMAL);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDD - Could not set "\
- "cooperative level: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
- }
-
- /* Create the primary surface */
- if (!winCreatePrimarySurfaceShadowDD (pScreen))
- {
- ErrorF ("winAllocateFBShadowDD - winCreatePrimarySurfaceShadowDD "
- "failed\n");
- return FALSE;
- }
-
- /* Describe the shadow surface to be created */
- /* NOTE: Do not use a DDSCAPS_VIDEOMEMORY surface,
- * as drawing, locking, and unlocking take forever
- * with video memory surfaces. In addition,
- * video memory is a somewhat scarce resource,
- * so you shouldn't be allocating video memory when
- * you have the option of using system memory instead.
- */
- ZeroMemory (&ddsd, sizeof (ddsd));
- ddsd.dwSize = sizeof (ddsd);
- ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
- ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
- ddsd.dwHeight = pScreenInfo->dwHeight;
- ddsd.dwWidth = pScreenInfo->dwWidth;
-
- /* Create the shadow surface */
- ddrval = IDirectDraw2_CreateSurface (pScreenPriv->pdd2,
- &ddsd,
- &pScreenPriv->pddsShadow,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDD - Could not create shadow "\
- "surface: %08x\n", (unsigned int) ddrval);
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDD - Created shadow\n");
-#endif
-
- /* Allocate a DD surface description for our screen privates */
- pddsdShadow = pScreenPriv->pddsdShadow = malloc (sizeof (DDSURFACEDESC));
- if (pddsdShadow == NULL)
- {
- ErrorF ("winAllocateFBShadowDD - Could not allocate surface "\
- "description memory\n");
- return FALSE;
- }
- ZeroMemory (pddsdShadow, sizeof (*pddsdShadow));
- pddsdShadow->dwSize = sizeof (*pddsdShadow);
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDD - Locking shadow\n");
-#endif
-
- /* Lock the shadow surface */
- ddrval = IDirectDrawSurface2_Lock (pScreenPriv->pddsShadow,
- NULL,
- pddsdShadow,
- DDLOCK_WAIT,
- NULL);
- if (FAILED (ddrval) || pddsdShadow->lpSurface == NULL)
- {
- ErrorF ("winAllocateFBShadowDD - Could not lock shadow "\
- "surface: %08x\n", (unsigned int) ddrval);
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDD - Locked shadow\n");
-#endif
-
- /* We don't know how to deal with anything other than RGB */
- if (!(pddsdShadow->ddpfPixelFormat.dwFlags & DDPF_RGB))
- {
- ErrorF ("winAllocateFBShadowDD - Color format other than RGB\n");
- return FALSE;
- }
-
- /* Grab the pitch from the surface desc */
- pScreenInfo->dwStride = (pddsdShadow->u1.lPitch * 8)
- / pScreenInfo->dwBPP;
-
- /* Save the pointer to our surface memory */
- pScreenInfo->pfb = pddsdShadow->lpSurface;
-
- /* Grab the color depth and masks from the surface description */
- pScreenPriv->dwRedMask = pddsdShadow->ddpfPixelFormat.u2.dwRBitMask;
- pScreenPriv->dwGreenMask = pddsdShadow->ddpfPixelFormat.u3.dwGBitMask;
- pScreenPriv->dwBlueMask = pddsdShadow->ddpfPixelFormat.u4.dwBBitMask;
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDD - Returning\n");
-#endif
-
- return TRUE;
-}
-
-
-/*
- * Transfer the damaged regions of the shadow framebuffer to the display.
- */
-
-static void
-winShadowUpdateDD (ScreenPtr pScreen,
- shadowBufPtr pBuf)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- RegionPtr damage = &pBuf->damage;
- HRESULT ddrval = DD_OK;
- RECT rcDest, rcSrc;
- POINT ptOrigin;
- DWORD dwBox = REGION_NUM_RECTS (damage);
- BoxPtr pBox = REGION_RECTS (damage);
- HRGN hrgnTemp = NULL, hrgnCombined = NULL;
-
- /*
- * Return immediately if the app is not active
- * and we are fullscreen, or if we have a bad display depth
- */
- if ((!pScreenPriv->fActive && pScreenInfo->fFullScreen)
- || pScreenPriv->fBadDepth) return;
-
- /* Get the origin of the window in the screen coords */
- ptOrigin.x = pScreenInfo->dwXOffset;
- ptOrigin.y = pScreenInfo->dwYOffset;
- MapWindowPoints (pScreenPriv->hwndScreen,
- HWND_DESKTOP,
- (LPPOINT)&ptOrigin, 1);
-
- /* Unlock the shadow surface, so we can blit */
- ddrval = IDirectDrawSurface2_Unlock (pScreenPriv->pddsShadow, NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winShadowUpdateProcDD - Unlock failed\n");
- return;
- }
-
- /*
- * Handle small regions with multiple blits,
- * handle large regions by creating a clipping region and
- * doing a single blit constrained to that clipping region.
- */
- if (pScreenInfo->dwClipUpdatesNBoxes == 0
- || dwBox < pScreenInfo->dwClipUpdatesNBoxes)
- {
- /* Loop through all boxes in the damaged region */
- while (dwBox--)
- {
- /* Assign damage box to source rectangle */
- rcSrc.left = pBox->x1;
- rcSrc.top = pBox->y1;
- rcSrc.right = pBox->x2;
- rcSrc.bottom = pBox->y2;
-
- /* Calculate destination rectange */
- rcDest.left = ptOrigin.x + rcSrc.left;
- rcDest.top = ptOrigin.y + rcSrc.top;
- rcDest.right = ptOrigin.x + rcSrc.right;
- rcDest.bottom = ptOrigin.y + rcSrc.bottom;
-
- /* Blit the damaged areas */
- ddrval = IDirectDrawSurface2_Blt (pScreenPriv->pddsPrimary,
- &rcDest,
- pScreenPriv->pddsShadow,
- &rcSrc,
- DDBLT_WAIT,
- NULL);
-
- /* Get a pointer to the next box */
- ++pBox;
- }
- }
- else
- {
- BoxPtr pBoxExtents = REGION_EXTENTS (pScreen, damage);
-
- /* Compute a GDI region from the damaged region */
- hrgnCombined = CreateRectRgn (pBox->x1, pBox->y1, pBox->x2, pBox->y2);
- dwBox--;
- pBox++;
- while (dwBox--)
- {
- hrgnTemp = CreateRectRgn (pBox->x1, pBox->y1, pBox->x2, pBox->y2);
- CombineRgn (hrgnCombined, hrgnCombined, hrgnTemp, RGN_OR);
- DeleteObject (hrgnTemp);
- pBox++;
- }
-
- /* Install the GDI region as a clipping region */
- SelectClipRgn (pScreenPriv->hdcScreen, hrgnCombined);
- DeleteObject (hrgnCombined);
- hrgnCombined = NULL;
-
- /* Calculating a bounding box for the source is easy */
- rcSrc.left = pBoxExtents->x1;
- rcSrc.top = pBoxExtents->y1;
- rcSrc.right = pBoxExtents->x2;
- rcSrc.bottom = pBoxExtents->y2;
-
- /* Calculating a bounding box for the destination is trickier */
- rcDest.left = ptOrigin.x + rcSrc.left;
- rcDest.top = ptOrigin.y + rcSrc.top;
- rcDest.right = ptOrigin.x + rcSrc.right;
- rcDest.bottom = ptOrigin.y + rcSrc.bottom;
-
- /* Our Blt should be clipped to the invalidated region */
- ddrval = IDirectDrawSurface2_Blt (pScreenPriv->pddsPrimary,
- &rcDest,
- pScreenPriv->pddsShadow,
- &rcSrc,
- DDBLT_WAIT,
- NULL);
-
- /* Reset the clip region */
- SelectClipRgn (pScreenPriv->hdcScreen, NULL);
- }
-
- /* Relock the shadow surface */
- ddrval = IDirectDrawSurface2_Lock (pScreenPriv->pddsShadow,
- NULL,
- pScreenPriv->pddsdShadow,
- DDLOCK_WAIT,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winShadowUpdateProcDD - Lock failed\n");
- return;
- }
-
- /* Has our memory pointer changed? */
- if (pScreenInfo->pfb != pScreenPriv->pddsdShadow->lpSurface)
- {
- ErrorF ("winShadowUpdateProcDD - Memory location of the shadow "
- "surface has changed, trying to update the root window "
- "pixmap header to point to the new address. If you get "
- "this message and "PROJECT_NAME" freezes or crashes "
- "after this message then send a problem report and your "
- "/tmp/XWin.log file to cygwin-xfree@cygwin.com\n");
-
- /* Location of shadow framebuffer has changed */
- pScreenInfo->pfb = pScreenPriv->pddsdShadow->lpSurface;
-
- /* Update the screen pixmap */
- if (!(*pScreen->ModifyPixmapHeader)(pScreen->devPrivate,
- pScreen->width,
- pScreen->height,
- pScreen->rootDepth,
- BitsPerPixel (pScreen->rootDepth),
- PixmapBytePad (pScreenInfo->dwStride,
- pScreenInfo->dwBPP),
- pScreenInfo->pfb))
- {
- ErrorF ("winShadowUpdateProcDD - Bits changed, could not "
- "notify fb.\n");
- return;
- }
- }
-}
-
-
-/*
- * Call the wrapped CloseScreen function.
- *
- * Free our resources and private structures.
- */
-
-static Bool
-winCloseScreenShadowDD (int nIndex, ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- Bool fReturn;
-
-#if CYGDEBUG
- winDebug ("winCloseScreenShadowDD - Freeing screen resources\n");
-#endif
-
- /* Flag that the screen is closed */
- pScreenPriv->fClosed = TRUE;
- pScreenPriv->fActive = FALSE;
-
- /* Call the wrapped CloseScreen procedure */
- WIN_UNWRAP(CloseScreen);
- fReturn = (*pScreen->CloseScreen) (nIndex, pScreen);
-
- /* Free the screen DC */
- ReleaseDC (pScreenPriv->hwndScreen, pScreenPriv->hdcScreen);
-
- /* Delete the window property */
- RemoveProp (pScreenPriv->hwndScreen, WIN_SCR_PROP);
-
- /* Free the shadow surface, if there is one */
- if (pScreenPriv->pddsShadow)
- {
- IDirectDrawSurface2_Unlock (pScreenPriv->pddsShadow, NULL);
- IDirectDrawSurface2_Release (pScreenPriv->pddsShadow);
- pScreenPriv->pddsShadow = NULL;
- }
-
- /* Detach the clipper from the primary surface and release the clipper. */
- if (pScreenPriv->pddcPrimary)
- {
- /* Detach the clipper */
- IDirectDrawSurface2_SetClipper (pScreenPriv->pddsPrimary,
- NULL);
-
- /* Release the clipper object */
- IDirectDrawClipper_Release (pScreenPriv->pddcPrimary);
- pScreenPriv->pddcPrimary = NULL;
- }
-
- /* Release the primary surface, if there is one */
- if (pScreenPriv->pddsPrimary)
- {
- IDirectDrawSurface2_Release (pScreenPriv->pddsPrimary);
- pScreenPriv->pddsPrimary = NULL;
- }
-
- /* Free the DirectDraw2 object, if there is one */
- if (pScreenPriv->pdd2)
- {
- IDirectDraw2_RestoreDisplayMode (pScreenPriv->pdd2);
- IDirectDraw2_Release (pScreenPriv->pdd2);
- pScreenPriv->pdd2 = NULL;
- }
-
- /* Free the DirectDraw object, if there is one */
- if (pScreenPriv->pdd)
- {
- IDirectDraw_Release (pScreenPriv->pdd);
- pScreenPriv->pdd = NULL;
- }
-
- /* Delete tray icon, if we have one */
- if (!pScreenInfo->fNoTrayIcon)
- winDeleteNotifyIcon (pScreenPriv);
-
- /* Free the exit confirmation dialog box, if it exists */
- if (g_hDlgExit != NULL)
- {
- DestroyWindow (g_hDlgExit);
- g_hDlgExit = NULL;
- }
-
- /* Kill our window */
- if (pScreenPriv->hwndScreen)
- {
- DestroyWindow (pScreenPriv->hwndScreen);
- pScreenPriv->hwndScreen = NULL;
- }
-
-#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
- /* Destroy the thread startup mutex */
- pthread_mutex_destroy (&pScreenPriv->pmServerStarted);
-#endif
-
- /* Kill our screeninfo's pointer to the screen */
- pScreenInfo->pScreen = NULL;
-
- /* Invalidate the ScreenInfo's fb pointer */
- pScreenInfo->pfb = NULL;
-
- /* Free the screen privates for this screen */
- free ((pointer) pScreenPriv);
-
- return fReturn;
-}
-
-
-/*
- * Tell mi what sort of visuals we need.
- *
- * Generally we only need one visual, as our screen can only
- * handle one format at a time, I believe. You may want
- * to verify that last sentence.
- */
-
-static Bool
-winInitVisualsShadowDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- DWORD dwRedBits, dwGreenBits, dwBlueBits;
-
- /* Count the number of ones in each color mask */
- dwRedBits = winCountBits (pScreenPriv->dwRedMask);
- dwGreenBits = winCountBits (pScreenPriv->dwGreenMask);
- dwBlueBits = winCountBits (pScreenPriv->dwBlueMask);
-
- /* Store the maximum number of ones in a color mask as the bitsPerRGB */
- if (dwRedBits == 0 || dwGreenBits == 0 || dwBlueBits == 0)
- pScreenPriv->dwBitsPerRGB = 8;
- else if (dwRedBits > dwGreenBits && dwRedBits > dwBlueBits)
- pScreenPriv->dwBitsPerRGB = dwRedBits;
- else if (dwGreenBits > dwRedBits && dwGreenBits > dwBlueBits)
- pScreenPriv->dwBitsPerRGB = dwGreenBits;
- else
- pScreenPriv->dwBitsPerRGB = dwBlueBits;
-
- ErrorF ("winInitVisualsShadowDD - Masks %08x %08x %08x BPRGB %d d %d "
- "bpp %d\n",
- (unsigned int) pScreenPriv->dwRedMask,
- (unsigned int) pScreenPriv->dwGreenMask,
- (unsigned int) pScreenPriv->dwBlueMask,
- (int) pScreenPriv->dwBitsPerRGB,
- (int) pScreenInfo->dwDepth,
- (int) pScreenInfo->dwBPP);
-
- /* Create a single visual according to the Windows screen depth */
- switch (pScreenInfo->dwDepth)
- {
- case 24:
- case 16:
- case 15:
-#if defined(XFree86Server)
- /* Create the real visual */
- if (!miSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- TrueColorMask,
- pScreenPriv->dwBitsPerRGB,
- TrueColor,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsShadowDD - miSetVisualTypesAndMasks "
- "failed for TrueColor\n");
- return FALSE;
- }
-
-#ifdef XWIN_EMULATEPSEUDO
- if (!pScreenInfo->fEmulatePseudo)
- break;
-
- /* Setup a pseudocolor visual */
- if (!miSetVisualTypesAndMasks (8,
- PseudoColorMask,
- 8,
- -1,
- 0,
- 0,
- 0))
- {
- ErrorF ("winInitVisualsShadowDD - miSetVisualTypesAndMasks "
- "failed for PseudoColor\n");
- return FALSE;
- }
-#endif
-#else /* XFree86Server */
- /* Create the real visual */
- if (!fbSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- TrueColorMask,
- pScreenPriv->dwBitsPerRGB,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsShadowDD - fbSetVisualTypesAndMasks "
- "failed for TrueColor\n");
- return FALSE;
- }
-
-#ifdef XWIN_EMULATEPSEUDO
- if (!pScreenInfo->fEmulatePseudo)
- break;
-
- /* Setup a pseudocolor visual */
- if (!fbSetVisualTypesAndMasks (8,
- PseudoColorMask,
- 8,
- 0,
- 0,
- 0))
- {
- ErrorF ("winInitVisualsShadowDD - fbSetVisualTypesAndMasks "
- "failed for PseudoColor\n");
- return FALSE;
- }
-#endif
-#endif /* XFree86Server */
- break;
-
- case 8:
-#if defined(XFree86Server)
- if (!miSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- pScreenInfo->fFullScreen
- ? PseudoColorMask : StaticColorMask,
- pScreenPriv->dwBitsPerRGB,
- pScreenInfo->fFullScreen
- ? PseudoColor : StaticColor,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsShadowDD - miSetVisualTypesAndMasks "
- "failed\n");
- return FALSE;
- }
-#else /* XFree86Server */
- if (!fbSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- pScreenInfo->fFullScreen
- ? PseudoColorMask : StaticColorMask,
- pScreenPriv->dwBitsPerRGB,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsShadowDD - fbSetVisualTypesAndMasks "
- "failed\n");
- return FALSE;
- }
-#endif /* XFree86Server */
- break;
-
- default:
- ErrorF ("winInitVisualsShadowDD - Unknown screen depth\n");
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winInitVisualsShadowDD - Returning\n");
-#endif
-
- return TRUE;
-}
-
-
-/*
- * Adjust the user proposed video mode
- */
-
-static Bool
-winAdjustVideoModeShadowDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- HDC hdc = NULL;
- DWORD dwBPP;
-
- /* We're in serious trouble if we can't get a DC */
- hdc = GetDC (NULL);
- if (hdc == NULL)
- {
- ErrorF ("winAdjustVideoModeShadowDD - GetDC () failed\n");
- return FALSE;
- }
-
- /* Query GDI for current display depth */
- dwBPP = GetDeviceCaps (hdc, BITSPIXEL);
-
- /* DirectDraw can only change the depth in fullscreen mode */
- if (pScreenInfo->dwBPP == WIN_DEFAULT_BPP)
- {
- /* No -depth parameter passed, let the user know the depth being used */
- ErrorF ("winAdjustVideoModeShadowDD - Using Windows display "
- "depth of %d bits per pixel\n", (int) dwBPP);
-
- /* Use GDI's depth */
- pScreenInfo->dwBPP = dwBPP;
- }
- else if (pScreenInfo->fFullScreen
- && pScreenInfo->dwBPP != dwBPP)
- {
- /* FullScreen, and GDI depth differs from -depth parameter */
- ErrorF ("winAdjustVideoModeShadowDD - FullScreen, using command line "
- "bpp: %d\n", (int) pScreenInfo->dwBPP);
- }
- else if (dwBPP != pScreenInfo->dwBPP)
- {
- /* Windowed, and GDI depth differs from -depth parameter */
- ErrorF ("winAdjustVideoModeShadowDD - Windowed, command line bpp: "
- "%d, using bpp: %d\n", (int) pScreenInfo->dwBPP, (int) dwBPP);
-
- /* We'll use GDI's depth */
- pScreenInfo->dwBPP = dwBPP;
- }
-
- /* See if the shadow bitmap will be larger than the DIB size limit */
- if (pScreenInfo->dwWidth * pScreenInfo->dwHeight * pScreenInfo->dwBPP
- >= WIN_DIB_MAXIMUM_SIZE)
- {
- ErrorF ("winAdjustVideoModeShadowDD - Requested DirectDraw surface "
- "will be larger than %d MB. The surface may fail to be "
- "allocated on Windows 95, 98, or Me, due to a %d MB limit in "
- "DIB size. This limit does not apply to Windows NT/2000, and "
- "this message may be ignored on those platforms.\n",
- WIN_DIB_MAXIMUM_SIZE_MB, WIN_DIB_MAXIMUM_SIZE_MB);
- }
-
- /* Release our DC */
- ReleaseDC (NULL, hdc);
- return TRUE;
-}
-
-
-/*
- * Blt exposed regions to the screen
- */
-
-static Bool
-winBltExposedRegionsShadowDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- RECT rcSrc, rcDest;
- POINT ptOrigin;
- HDC hdcUpdate = NULL;
- PAINTSTRUCT ps;
- HRESULT ddrval = DD_OK;
- Bool fReturn = TRUE;
- Bool fLocked = TRUE;
- int i;
-
- /* BeginPaint gives us an hdc that clips to the invalidated region */
- hdcUpdate = BeginPaint (pScreenPriv->hwndScreen, &ps);
- if (hdcUpdate == NULL)
- {
- ErrorF ("winBltExposedRegionsShadowDD - BeginPaint () returned "
- "a NULL device context handle. Aborting blit attempt.\n");
- return FALSE;
- }
-
- /* Unlock the shadow surface, so we can blit */
- ddrval = IDirectDrawSurface2_Unlock (pScreenPriv->pddsShadow, NULL);
- if (FAILED (ddrval))
- {
- fReturn = FALSE;
- goto winBltExposedRegionsShadowDD_Exit;
- }
- else
- {
- /* Flag that we have unlocked the shadow surface */
- fLocked = FALSE;
- }
-
- /* Get the origin of the window in the screen coords */
- ptOrigin.x = pScreenInfo->dwXOffset;
- ptOrigin.y = pScreenInfo->dwYOffset;
-
- MapWindowPoints (pScreenPriv->hwndScreen,
- HWND_DESKTOP,
- (LPPOINT)&ptOrigin, 1);
- rcDest.left = ptOrigin.x;
- rcDest.right = ptOrigin.x + pScreenInfo->dwWidth;
- rcDest.top = ptOrigin.y;
- rcDest.bottom = ptOrigin.y + pScreenInfo->dwHeight;
-
- /* Source can be enter shadow surface, as Blt should clip */
- rcSrc.left = 0;
- rcSrc.top = 0;
- rcSrc.right = pScreenInfo->dwWidth;
- rcSrc.bottom = pScreenInfo->dwHeight;
-
- /* Try to regain the primary surface and blit again if we've lost it */
- for (i = 0; i <= WIN_REGAIN_SURFACE_RETRIES; ++i)
- {
- /* Our Blt should be clipped to the invalidated region */
- ddrval = IDirectDrawSurface2_Blt (pScreenPriv->pddsPrimary,
- &rcDest,
- pScreenPriv->pddsShadow,
- &rcSrc,
- DDBLT_WAIT,
- NULL);
- if (ddrval == DDERR_SURFACELOST)
- {
- /* Surface was lost */
- ErrorF ("winBltExposedRegionsShadowDD - IDirectDrawSurface2_Blt "
- "reported that the primary surface was lost, "
- "trying to restore, retry: %d\n", i + 1);
-
- /* Try to restore the surface, once */
- ddrval = IDirectDrawSurface2_Restore (pScreenPriv->pddsPrimary);
- ErrorF ("winBltExposedRegionsShadowDD - "
- "IDirectDrawSurface2_Restore returned: ");
- if (ddrval == DD_OK)
- ErrorF ("DD_OK\n");
- else if (ddrval == DDERR_WRONGMODE)
- ErrorF ("DDERR_WRONGMODE\n");
- else if (ddrval == DDERR_INCOMPATIBLEPRIMARY)
- ErrorF ("DDERR_INCOMPATIBLEPRIMARY\n");
- else if (ddrval == DDERR_UNSUPPORTED)
- ErrorF ("DDERR_UNSUPPORTED\n");
- else if (ddrval == DDERR_INVALIDPARAMS)
- ErrorF ("DDERR_INVALIDPARAMS\n");
- else if (ddrval == DDERR_INVALIDOBJECT)
- ErrorF ("DDERR_INVALIDOBJECT\n");
- else
- ErrorF ("unknown error: %08x\n", (unsigned int) ddrval);
-
- /* Loop around to try the blit one more time */
- continue;
- }
- else if (FAILED (ddrval))
- {
- fReturn = FALSE;
- ErrorF ("winBltExposedRegionsShadowDD - IDirectDrawSurface2_Blt "
- "failed, but surface not lost: %08x %d\n",
- (unsigned int) ddrval, (int) ddrval);
- goto winBltExposedRegionsShadowDD_Exit;
- }
- else
- {
- /* Success, stop looping */
- break;
- }
- }
-
- /* Relock the shadow surface */
- ddrval = IDirectDrawSurface2_Lock (pScreenPriv->pddsShadow,
- NULL,
- pScreenPriv->pddsdShadow,
- DDLOCK_WAIT,
- NULL);
- if (FAILED (ddrval))
- {
- fReturn = FALSE;
- ErrorF ("winBltExposedRegionsShadowDD - IDirectDrawSurface2_Lock "
- "failed\n");
- goto winBltExposedRegionsShadowDD_Exit;
- }
- else
- {
- /* Indicate that we have relocked the shadow surface */
- fLocked = TRUE;
- }
-
- /* Has our memory pointer changed? */
- if (pScreenInfo->pfb != pScreenPriv->pddsdShadow->lpSurface)
- winUpdateFBPointer (pScreen,
- pScreenPriv->pddsdShadow->lpSurface);
-
- winBltExposedRegionsShadowDD_Exit:
- /* EndPaint frees the DC */
- if (hdcUpdate != NULL)
- EndPaint (pScreenPriv->hwndScreen, &ps);
-
- /*
- * Relock the surface if it is not locked. We don't care if locking fails,
- * as it will cause the server to shutdown within a few more operations.
- */
- if (!fLocked)
- {
- IDirectDrawSurface2_Lock (pScreenPriv->pddsShadow,
- NULL,
- pScreenPriv->pddsdShadow,
- DDLOCK_WAIT,
- NULL);
-
- /* Has our memory pointer changed? */
- if (pScreenInfo->pfb != pScreenPriv->pddsdShadow->lpSurface)
- winUpdateFBPointer (pScreen,
- pScreenPriv->pddsdShadow->lpSurface);
-
- fLocked = TRUE;
- }
- return fReturn;
-}
-
-
-/*
- * Do any engine-specific appliation-activation processing
- */
-
-static Bool
-winActivateAppShadowDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
-
- /*
- * Do we have a surface?
- * Are we active?
- * Are we fullscreen?
- */
- if (pScreenPriv != NULL
- && pScreenPriv->pddsPrimary != NULL
- && pScreenPriv->fActive)
- {
- /* Primary surface was lost, restore it */
- IDirectDrawSurface2_Restore (pScreenPriv->pddsPrimary);
- }
-
- return TRUE;
-}
-
-
-/*
- * Reblit the shadow framebuffer to the screen.
- */
-
-static Bool
-winRedrawScreenShadowDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- HRESULT ddrval = DD_OK;
- RECT rcSrc, rcDest;
- POINT ptOrigin;
-
- /* Get the origin of the window in the screen coords */
- ptOrigin.x = pScreenInfo->dwXOffset;
- ptOrigin.y = pScreenInfo->dwYOffset;
- MapWindowPoints (pScreenPriv->hwndScreen,
- HWND_DESKTOP,
- (LPPOINT)&ptOrigin, 1);
- rcDest.left = ptOrigin.x;
- rcDest.right = ptOrigin.x + pScreenInfo->dwWidth;
- rcDest.top = ptOrigin.y;
- rcDest.bottom = ptOrigin.y + pScreenInfo->dwHeight;
-
- /* Source can be entire shadow surface, as Blt should clip for us */
- rcSrc.left = 0;
- rcSrc.top = 0;
- rcSrc.right = pScreenInfo->dwWidth;
- rcSrc.bottom = pScreenInfo->dwHeight;
-
- /* Redraw the whole window, to take account for the new colors */
- ddrval = IDirectDrawSurface2_Blt (pScreenPriv->pddsPrimary,
- &rcDest,
- pScreenPriv->pddsShadow,
- &rcSrc,
- DDBLT_WAIT,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winRedrawScreenShadowDD - IDirectDrawSurface_Blt () "
- "failed: %08x\n",
- (unsigned int) ddrval);
- }
-
- return TRUE;
-}
-
-
-/*
- * Realize the currently installed colormap
- */
-
-static Bool
-winRealizeInstalledPaletteShadowDD (ScreenPtr pScreen)
-{
- return TRUE;
-}
-
-
-/*
- * Install the specified colormap
- */
-
-static Bool
-winInstallColormapShadowDD (ColormapPtr pColormap)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- winScreenPriv(pScreen);
- winCmapPriv(pColormap);
- HRESULT ddrval = DD_OK;
-
- /* Install the DirectDraw palette on the primary surface */
- ddrval = IDirectDrawSurface2_SetPalette (pScreenPriv->pddsPrimary,
- pCmapPriv->lpDDPalette);
- if (FAILED (ddrval))
- {
- ErrorF ("winInstallColormapShadowDD - Failed installing the "
- "DirectDraw palette.\n");
- return FALSE;
- }
-
- /* Save a pointer to the newly installed colormap */
- pScreenPriv->pcmapInstalled = pColormap;
-
- return TRUE;
-}
-
-
-/*
- * Store the specified colors in the specified colormap
- */
-
-static Bool
-winStoreColorsShadowDD (ColormapPtr pColormap,
- int ndef,
- xColorItem *pdefs)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- winScreenPriv(pScreen);
- winCmapPriv(pColormap);
- ColormapPtr curpmap = pScreenPriv->pcmapInstalled;
- HRESULT ddrval = DD_OK;
-
- /* Put the X colormap entries into the Windows logical palette */
- ddrval = IDirectDrawPalette_SetEntries (pCmapPriv->lpDDPalette,
- 0,
- pdefs[0].pixel,
- ndef,
- pCmapPriv->peColors
- + pdefs[0].pixel);
- if (FAILED (ddrval))
- {
- ErrorF ("winStoreColorsShadowDD - SetEntries () failed\n");
- return FALSE;
- }
-
- /* Don't install the DirectDraw palette if the colormap is not installed */
- if (pColormap != curpmap)
- {
- return TRUE;
- }
-
- if (!winInstallColormapShadowDD (pColormap))
- {
- ErrorF ("winStoreColorsShadowDD - Failed installing colormap\n");
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/*
- * Colormap initialization procedure
- */
-
-static Bool
-winCreateColormapShadowDD (ColormapPtr pColormap)
-{
- HRESULT ddrval = DD_OK;
- ScreenPtr pScreen = pColormap->pScreen;
- winScreenPriv(pScreen);
- winCmapPriv(pColormap);
-
- /* Create a DirectDraw palette */
- ddrval = IDirectDraw2_CreatePalette (pScreenPriv->pdd,
- DDPCAPS_8BIT | DDPCAPS_ALLOW256,
- pCmapPriv->peColors,
- &pCmapPriv->lpDDPalette,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winCreateColormapShadowDD - CreatePalette failed\n");
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/*
- * Colormap destruction procedure
- */
-
-static Bool
-winDestroyColormapShadowDD (ColormapPtr pColormap)
-{
- winScreenPriv(pColormap->pScreen);
- winCmapPriv(pColormap);
- HRESULT ddrval = DD_OK;
-
- /*
- * Is colormap to be destroyed the default?
- *
- * Non-default colormaps should have had winUninstallColormap
- * called on them before we get here. The default colormap
- * will not have had winUninstallColormap called on it. Thus,
- * we need to handle the default colormap in a special way.
- */
- if (pColormap->flags & IsDefault)
- {
-#if CYGDEBUG
- winDebug ("winDestroyColormapShadowDD - Destroying default "
- "colormap\n");
-#endif
-
- /*
- * FIXME: Walk the list of all screens, popping the default
- * palette out of each screen device context.
- */
-
- /* Pop the palette out of the primary surface */
- ddrval = IDirectDrawSurface2_SetPalette (pScreenPriv->pddsPrimary,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winDestroyColormapShadowDD - Failed freeing the "
- "default colormap DirectDraw palette.\n");
- return FALSE;
- }
-
- /* Clear our private installed colormap pointer */
- pScreenPriv->pcmapInstalled = NULL;
- }
-
- /* Release the palette */
- IDirectDrawPalette_Release (pCmapPriv->lpDDPalette);
-
- /* Invalidate the colormap privates */
- pCmapPriv->lpDDPalette = NULL;
-
- return TRUE;
-}
-
-
-/*
- * Set engine specific functions
- */
-
-Bool
-winSetEngineFunctionsShadowDD (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- /* Set our pointers */
- pScreenPriv->pwinAllocateFB = winAllocateFBShadowDD;
- pScreenPriv->pwinShadowUpdate = winShadowUpdateDD;
- pScreenPriv->pwinCloseScreen = winCloseScreenShadowDD;
- pScreenPriv->pwinInitVisuals = winInitVisualsShadowDD;
- pScreenPriv->pwinAdjustVideoMode = winAdjustVideoModeShadowDD;
- if (pScreenInfo->fFullScreen)
- pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowFullScreen;
- else
- pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowWindowed;
- pScreenPriv->pwinFinishScreenInit = winFinishScreenInitFB;
- pScreenPriv->pwinBltExposedRegions = winBltExposedRegionsShadowDD;
- pScreenPriv->pwinActivateApp = winActivateAppShadowDD;
- pScreenPriv->pwinRedrawScreen = winRedrawScreenShadowDD;
- pScreenPriv->pwinRealizeInstalledPalette
- = winRealizeInstalledPaletteShadowDD;
- pScreenPriv->pwinInstallColormap = winInstallColormapShadowDD;
- pScreenPriv->pwinStoreColors = winStoreColorsShadowDD;
- pScreenPriv->pwinCreateColormap = winCreateColormapShadowDD;
- pScreenPriv->pwinDestroyColormap = winDestroyColormapShadowDD;
- pScreenPriv->pwinHotKeyAltTab = (winHotKeyAltTabProcPtr) (void (*)(void))NoopDDA;
- pScreenPriv->pwinCreatePrimarySurface = winCreatePrimarySurfaceShadowDD;
- pScreenPriv->pwinReleasePrimarySurface = winReleasePrimarySurfaceShadowDD;
-#ifdef XWIN_MULTIWINDOW
- pScreenPriv->pwinFinishCreateWindowsWindow =
- (winFinishCreateWindowsWindowProcPtr) (void (*)(void))NoopDDA;
-#endif
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winshadddnl.c b/nx-X11/programs/Xserver/hw/xwin/winshadddnl.c
deleted file mode 100644
index 960cd2d70..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winshadddnl.c
+++ /dev/null
@@ -1,1455 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Dakshinamurthy Karra
- * Suhaib M Siddiqi
- * Peter Busch
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winshadddnl.c,v 1.23 2002/10/17 08:18:25 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * External symbols
- */
-
-extern HWND g_hDlgExit;
-
-
-/*
- * FIXME: Headers are broken, DEFINE_GUID doesn't work correctly,
- * so we have to redefine it here.
- */
-#ifdef DEFINE_GUID
-#undef DEFINE_GUID
-#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-#endif /* DEFINE_GUID */
-
-/*
- * FIXME: Headers are broken, IID_IDirectDraw4 has to be defined
- * here manually. Should be handled by ddraw.h
- */
-#ifndef IID_IDirectDraw4
-DEFINE_GUID( IID_IDirectDraw4, 0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
-#endif /* IID_IDirectDraw4 */
-
-#define FAIL_MSG_MAX_BLT 10
-
-
-/*
- * Local prototypes
- */
-
-static Bool
-winAllocateFBShadowDDNL (ScreenPtr pScreen);
-
-static void
-winShadowUpdateDDNL (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-static Bool
-winCloseScreenShadowDDNL (int nIndex, ScreenPtr pScreen);
-
-static Bool
-winInitVisualsShadowDDNL (ScreenPtr pScreen);
-
-static Bool
-winAdjustVideoModeShadowDDNL (ScreenPtr pScreen);
-
-static Bool
-winBltExposedRegionsShadowDDNL (ScreenPtr pScreen);
-
-static Bool
-winActivateAppShadowDDNL (ScreenPtr pScreen);
-
-static Bool
-winRedrawScreenShadowDDNL (ScreenPtr pScreen);
-
-static Bool
-winRealizeInstalledPaletteShadowDDNL (ScreenPtr pScreen);
-
-static Bool
-winInstallColormapShadowDDNL (ColormapPtr pColormap);
-
-static Bool
-winStoreColorsShadowDDNL (ColormapPtr pmap,
- int ndef,
- xColorItem *pdefs);
-
-static Bool
-winCreateColormapShadowDDNL (ColormapPtr pColormap);
-
-static Bool
-winDestroyColormapShadowDDNL (ColormapPtr pColormap);
-
-static Bool
-winCreatePrimarySurfaceShadowDDNL (ScreenPtr pScreen);
-
-static Bool
-winReleasePrimarySurfaceShadowDDNL (ScreenPtr pScreen);
-
-
-/*
- * Create the primary surface and attach the clipper.
- * Used for both the initial surface creation and during
- * WM_DISPLAYCHANGE messages.
- */
-
-static Bool
-winCreatePrimarySurfaceShadowDDNL (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- HRESULT ddrval = DD_OK;
- DDSURFACEDESC2 ddsd;
-
- winDebug ("winCreatePrimarySurfaceShadowDDNL - Creating primary surface\n");
-
- /* Describe the primary surface */
- ZeroMemory (&ddsd, sizeof (ddsd));
- ddsd.dwSize = sizeof (ddsd);
- ddsd.dwFlags = DDSD_CAPS;
- ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
-
- /* Create the primary surface */
- ddrval = IDirectDraw4_CreateSurface (pScreenPriv->pdd4,
- &ddsd,
- &pScreenPriv->pddsPrimary4,
- NULL);
- pScreenPriv->fRetryCreateSurface = FALSE;
- if (FAILED (ddrval))
- {
- if (ddrval == DDERR_NOEXCLUSIVEMODE)
- {
- /* Recreating the surface failed. Mark screen to retry later */
- pScreenPriv->fRetryCreateSurface = TRUE;
- winDebug ("winCreatePrimarySurfaceShadowDDNL - Could not create "
- "primary surface: DDERR_NOEXCLUSIVEMODE\n");
- }
- else
- {
- ErrorF ("winCreatePrimarySurfaceShadowDDNL - Could not create "
- "primary surface: %08x\n", (unsigned int) ddrval);
- }
- return FALSE;
- }
-
-#if 1
- winDebug ("winCreatePrimarySurfaceShadowDDNL - Created primary surface\n");
-#endif
-
- /* Attach our clipper to our primary surface handle */
- ddrval = IDirectDrawSurface4_SetClipper (pScreenPriv->pddsPrimary4,
- pScreenPriv->pddcPrimary);
- if (FAILED (ddrval))
- {
- ErrorF ("winCreatePrimarySurfaceShadowDDNL - Primary attach clipper "
- "failed: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
-#if 1
- winDebug ("winCreatePrimarySurfaceShadowDDNL - Attached clipper to primary "
- "surface\n");
-#endif
-
- /* Everything was correct */
- return TRUE;
-}
-
-
-/*
- * Detach the clipper and release the primary surface.
- * Called from WM_DISPLAYCHANGE.
- */
-
-static Bool
-winReleasePrimarySurfaceShadowDDNL (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
-
- winDebug ("winReleasePrimarySurfaceShadowDDNL - Hello\n");
-
- /* Release the primary surface and clipper, if they exist */
- if (pScreenPriv->pddsPrimary4)
- {
- /*
- * Detach the clipper from the primary surface.
- * NOTE: We do this explicity for clarity. The Clipper is not released.
- */
- IDirectDrawSurface4_SetClipper (pScreenPriv->pddsPrimary4,
- NULL);
-
- winDebug ("winReleasePrimarySurfaceShadowDDNL - Detached clipper\n");
-
- /* Release the primary surface */
- IDirectDrawSurface4_Release (pScreenPriv->pddsPrimary4);
- pScreenPriv->pddsPrimary4 = NULL;
- }
-
- winDebug ("winReleasePrimarySurfaceShadowDDNL - Released primary surface\n");
-
- return TRUE;
-}
-
-
-/*
- * Create a DirectDraw surface for the shadow framebuffer; also create
- * a primary surface object so we can blit to the display.
- *
- * Install a DirectDraw clipper on our primary surface object
- * that clips our blits to the unobscured client area of our display window.
- */
-
-Bool
-winAllocateFBShadowDDNL (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- HRESULT ddrval = DD_OK;
- DDSURFACEDESC2 ddsdShadow;
- char *lpSurface = NULL;
- DDPIXELFORMAT ddpfPrimary;
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDDNL - w %d h %d d %d\n",
- pScreenInfo->dwWidth, pScreenInfo->dwHeight, pScreenInfo->dwDepth);
-#endif
-
- /* Allocate memory for our shadow surface */
- lpSurface = malloc (pScreenInfo->dwPaddedWidth * pScreenInfo->dwHeight);
- if (lpSurface == NULL)
- {
- ErrorF ("winAllocateFBShadowDDNL - Could not allocate bits\n");
- return FALSE;
- }
-
- /*
- * Initialize the framebuffer memory so we don't get a
- * strange display at startup
- */
- ZeroMemory (lpSurface, pScreenInfo->dwPaddedWidth * pScreenInfo->dwHeight);
-
- /* Create a clipper */
- ddrval = (*g_fpDirectDrawCreateClipper) (0,
- &pScreenPriv->pddcPrimary,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDDNL - Could not attach clipper: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDDNL - Created a clipper\n");
-#endif
-
- /* Get a device context for the screen */
- pScreenPriv->hdcScreen = GetDC (pScreenPriv->hwndScreen);
-
- /* Attach the clipper to our display window */
- ddrval = IDirectDrawClipper_SetHWnd (pScreenPriv->pddcPrimary,
- 0,
- pScreenPriv->hwndScreen);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDDNL - Clipper not attached "
- "to window: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDDNL - Attached clipper to window\n");
-#endif
-
- /* Create a DirectDraw object, store the address at lpdd */
- ddrval = (*g_fpDirectDrawCreate) (NULL,
- (LPDIRECTDRAW*) &pScreenPriv->pdd,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDDNL - Could not start "
- "DirectDraw: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDDNL - Created and initialized DD\n");
-#endif
-
- /* Get a DirectDraw4 interface pointer */
- ddrval = IDirectDraw_QueryInterface (pScreenPriv->pdd,
- &IID_IDirectDraw4,
- (LPVOID*) &pScreenPriv->pdd4);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDDNL - Failed DD4 query: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
- /* Are we full screen? */
- if (pScreenInfo->fFullScreen)
- {
- DDSURFACEDESC2 ddsdCurrent;
- DWORD dwRefreshRateCurrent = 0;
- HDC hdc = NULL;
-
- /* Set the cooperative level to full screen */
- ddrval = IDirectDraw4_SetCooperativeLevel (pScreenPriv->pdd4,
- pScreenPriv->hwndScreen,
- DDSCL_EXCLUSIVE
- | DDSCL_FULLSCREEN);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDDNL - Could not set "
- "cooperative level: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
- /*
- * We only need to get the current refresh rate for comparison
- * if a refresh rate has been passed on the command line.
- */
- if (pScreenInfo->dwRefreshRate != 0)
- {
- ZeroMemory (&ddsdCurrent, sizeof (ddsdCurrent));
- ddsdCurrent.dwSize = sizeof (ddsdCurrent);
-
- /* Get information about current display settings */
- ddrval = IDirectDraw4_GetDisplayMode (pScreenPriv->pdd4,
- &ddsdCurrent);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDDNL - Could not get current "
- "refresh rate: %08x. Continuing.\n",
- (unsigned int) ddrval);
- dwRefreshRateCurrent = 0;
- }
- else
- {
- /* Grab the current refresh rate */
- dwRefreshRateCurrent = ddsdCurrent.u2.dwRefreshRate;
- }
- }
-
- /* Clean up the refresh rate */
- if (dwRefreshRateCurrent == pScreenInfo->dwRefreshRate)
- {
- /*
- * Refresh rate is non-specified or equal to current.
- */
- pScreenInfo->dwRefreshRate = 0;
- }
-
- /* Grab a device context for the screen */
- hdc = GetDC (NULL);
- if (hdc == NULL)
- {
- ErrorF ("winAllocateFBShadowDDNL - GetDC () failed\n");
- return FALSE;
- }
-
- /* Only change the video mode when different than current mode */
- if (!pScreenInfo->fMultipleMonitors
- && (pScreenInfo->dwWidth != GetSystemMetrics (SM_CXSCREEN)
- || pScreenInfo->dwHeight != GetSystemMetrics (SM_CYSCREEN)
- || pScreenInfo->dwBPP != GetDeviceCaps (hdc, BITSPIXEL)
- || pScreenInfo->dwRefreshRate != 0))
- {
- winDebug ("winAllocateFBShadowDDNL - Changing video mode\n");
-
- /* Change the video mode to the mode requested */
- ddrval = IDirectDraw4_SetDisplayMode (pScreenPriv->pdd4,
- pScreenInfo->dwWidth,
- pScreenInfo->dwHeight,
- pScreenInfo->dwBPP,
- pScreenInfo->dwRefreshRate,
- 0);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDDNL - Could not set "
- "full screen display mode: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
- }
- else
- {
- winDebug ("winAllocateFBShadowDDNL - Not changing video mode\n");
- }
-
- /* Release our DC */
- ReleaseDC (NULL, hdc);
- hdc = NULL;
- }
- else
- {
- /* Set the cooperative level for windowed mode */
- ddrval = IDirectDraw4_SetCooperativeLevel (pScreenPriv->pdd4,
- pScreenPriv->hwndScreen,
- DDSCL_NORMAL);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDDNL - Could not set "
- "cooperative level: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
- }
-
- /* Create the primary surface */
- if (!winCreatePrimarySurfaceShadowDDNL (pScreen))
- {
- ErrorF ("winAllocateFBShadowDDNL - winCreatePrimarySurfaceShadowDDNL "
- "failed\n");
- return FALSE;
- }
-
- /* Get primary surface's pixel format */
- ZeroMemory (&ddpfPrimary, sizeof (ddpfPrimary));
- ddpfPrimary.dwSize = sizeof (ddpfPrimary);
- ddrval = IDirectDrawSurface4_GetPixelFormat (pScreenPriv->pddsPrimary4,
- &ddpfPrimary);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDDNL - Could not get primary "
- "pixformat: %08x\n",
- (unsigned int) ddrval);
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDDNL - Primary masks: %08x %08x %08x "
- "dwRGBBitCount: %d\n",
- ddpfPrimary.u2.dwRBitMask,
- ddpfPrimary.u3.dwGBitMask,
- ddpfPrimary.u4.dwBBitMask,
- ddpfPrimary.u1.dwRGBBitCount);
-#endif
-
- /* Describe the shadow surface to be created */
- /*
- * NOTE: Do not use a DDSCAPS_VIDEOMEMORY surface,
- * as drawing, locking, and unlocking take forever
- * with video memory surfaces. In addition,
- * video memory is a somewhat scarce resource,
- * so you shouldn't be allocating video memory when
- * you have the option of using system memory instead.
- */
- ZeroMemory (&ddsdShadow, sizeof (ddsdShadow));
- ddsdShadow.dwSize = sizeof (ddsdShadow);
- ddsdShadow.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH
- | DDSD_LPSURFACE | DDSD_PITCH | DDSD_PIXELFORMAT;
- ddsdShadow.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
- ddsdShadow.dwHeight = pScreenInfo->dwHeight;
- ddsdShadow.dwWidth = pScreenInfo->dwWidth;
- ddsdShadow.u1.lPitch = pScreenInfo->dwPaddedWidth;
- ddsdShadow.lpSurface = lpSurface;
- ddsdShadow.u4.ddpfPixelFormat = ddpfPrimary;
-
- winDebug ("winAllocateFBShadowDDNL - lPitch: %d\n",
- (int) pScreenInfo->dwPaddedWidth);
-
- /* Create the shadow surface */
- ddrval = IDirectDraw4_CreateSurface (pScreenPriv->pdd4,
- &ddsdShadow,
- &pScreenPriv->pddsShadow4,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winAllocateFBShadowDDNL - Could not create shadow "
- "surface: %08x\n", (unsigned int) ddrval);
- return FALSE;
- }
-
-#if CYGDEBUG || YES
- winDebug ("winAllocateFBShadowDDNL - Created shadow pitch: %d\n",
- (int) ddsdShadow.u1.lPitch);
-#endif
-
- /* Grab the pitch from the surface desc */
- pScreenInfo->dwStride = (ddsdShadow.u1.lPitch * 8)
- / pScreenInfo->dwBPP;
-
-#if CYGDEBUG || YES
- winDebug ("winAllocateFBShadowDDNL - Created shadow stride: %d\n",
- (int) pScreenInfo->dwStride);
-#endif
-
- /* Save the pointer to our surface memory */
- pScreenInfo->pfb = lpSurface;
-
- /* Grab the masks from the surface description */
- pScreenPriv->dwRedMask = ddsdShadow.u4.ddpfPixelFormat.u2.dwRBitMask;
- pScreenPriv->dwGreenMask = ddsdShadow.u4.ddpfPixelFormat.u3.dwGBitMask;
- pScreenPriv->dwBlueMask = ddsdShadow.u4.ddpfPixelFormat.u4.dwBBitMask;
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowDDNL - Returning\n");
-#endif
-
- return TRUE;
-}
-
-
-#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
-/*
- * Create a DirectDraw surface for the new multi-window window
- */
-
-static
-Bool
-winFinishCreateWindowsWindowDDNL (WindowPtr pWin)
-{
- winWindowPriv(pWin);
- winPrivScreenPtr pScreenPriv = pWinPriv->pScreenPriv;
- HRESULT ddrval = DD_OK;
- DDSURFACEDESC2 ddsd;
- int iWidth, iHeight;
- int iX, iY;
-
- winDebug ("\nwinFinishCreateWindowsWindowDDNL!\n\n");
-
- iX = pWin->drawable.x + GetSystemMetrics (SM_XVIRTUALSCREEN);
- iY = pWin->drawable.y + GetSystemMetrics (SM_YVIRTUALSCREEN);
-
- iWidth = pWin->drawable.width;
- iHeight = pWin->drawable.height;
-
- /* Describe the primary surface */
- ZeroMemory (&ddsd, sizeof (ddsd));
- ddsd.dwSize = sizeof (ddsd);
- ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
- ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
- ddsd.dwHeight = iHeight;
- ddsd.dwWidth = iWidth;
-
- /* Create the primary surface */
- ddrval = IDirectDraw4_CreateSurface (pScreenPriv->pdd4,
- &ddsd,
- &pWinPriv->pddsPrimary4,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winFinishCreateWindowsWindowDDNL - Could not create primary "
- "surface: %08x\n",
- (unsigned int)ddrval);
- return FALSE;
- }
- return TRUE;
-}
-#endif
-
-
-/*
- * Transfer the damaged regions of the shadow framebuffer to the display.
- */
-
-static void
-winShadowUpdateDDNL (ScreenPtr pScreen,
- shadowBufPtr pBuf)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- RegionPtr damage = &pBuf->damage;
- HRESULT ddrval = DD_OK;
- RECT rcDest, rcSrc;
- POINT ptOrigin;
- DWORD dwBox = REGION_NUM_RECTS (damage);
- BoxPtr pBox = REGION_RECTS (damage);
- HRGN hrgnTemp = NULL, hrgnCombined = NULL;
-
- /*
- * Return immediately if the app is not active
- * and we are fullscreen, or if we have a bad display depth
- */
- if ((!pScreenPriv->fActive && pScreenInfo->fFullScreen)
- || pScreenPriv->fBadDepth) return;
-
- /* Get the origin of the window in the screen coords */
- ptOrigin.x = pScreenInfo->dwXOffset;
- ptOrigin.y = pScreenInfo->dwYOffset;
- MapWindowPoints (pScreenPriv->hwndScreen,
- HWND_DESKTOP,
- (LPPOINT)&ptOrigin, 1);
-
- /*
- * Handle small regions with multiple blits,
- * handle large regions by creating a clipping region and
- * doing a single blit constrained to that clipping region.
- */
- if (pScreenInfo->dwClipUpdatesNBoxes == 0
- || dwBox < pScreenInfo->dwClipUpdatesNBoxes)
- {
- /* Loop through all boxes in the damaged region */
- while (dwBox--)
- {
- /* Assign damage box to source rectangle */
- rcSrc.left = pBox->x1;
- rcSrc.top = pBox->y1;
- rcSrc.right = pBox->x2;
- rcSrc.bottom = pBox->y2;
-
- /* Calculate destination rectangle */
- rcDest.left = ptOrigin.x + rcSrc.left;
- rcDest.top = ptOrigin.y + rcSrc.top;
- rcDest.right = ptOrigin.x + rcSrc.right;
- rcDest.bottom = ptOrigin.y + rcSrc.bottom;
-
- /* Blit the damaged areas */
- ddrval = IDirectDrawSurface4_Blt (pScreenPriv->pddsPrimary4,
- &rcDest,
- pScreenPriv->pddsShadow4,
- &rcSrc,
- DDBLT_WAIT,
- NULL);
- if (FAILED (ddrval))
- {
- static int s_iFailCount = 0;
-
- if (s_iFailCount < FAIL_MSG_MAX_BLT)
- {
- ErrorF ("winShadowUpdateDDNL - IDirectDrawSurface4_Blt () "
- "failed: %08x\n",
- (unsigned int) ddrval);
-
- ++s_iFailCount;
-
- if (s_iFailCount == FAIL_MSG_MAX_BLT)
- {
- ErrorF ("winShadowUpdateDDNL - IDirectDrawSurface4_Blt "
- "failure message maximum (%d) reached. No "
- "more failure messages will be printed.\n",
- FAIL_MSG_MAX_BLT);
- }
- }
- }
-
- /* Get a pointer to the next box */
- ++pBox;
- }
- }
- else
- {
- BoxPtr pBoxExtents = REGION_EXTENTS (pScreen, damage);
-
- /* Compute a GDI region from the damaged region */
- hrgnCombined = CreateRectRgn (pBox->x1, pBox->y1, pBox->x2, pBox->y2);
- dwBox--;
- pBox++;
- while (dwBox--)
- {
- hrgnTemp = CreateRectRgn (pBox->x1, pBox->y1, pBox->x2, pBox->y2);
- CombineRgn (hrgnCombined, hrgnCombined, hrgnTemp, RGN_OR);
- DeleteObject (hrgnTemp);
- pBox++;
- }
-
- /* Install the GDI region as a clipping region */
- SelectClipRgn (pScreenPriv->hdcScreen, hrgnCombined);
- DeleteObject (hrgnCombined);
- hrgnCombined = NULL;
-
-#if CYGDEBUG
- winDebug ("winShadowUpdateDDNL - be x1 %d y1 %d x2 %d y2 %d\n",
- pBoxExtents->x1, pBoxExtents->y1,
- pBoxExtents->x2, pBoxExtents->y2);
-#endif
-
- /* Calculating a bounding box for the source is easy */
- rcSrc.left = pBoxExtents->x1;
- rcSrc.top = pBoxExtents->y1;
- rcSrc.right = pBoxExtents->x2;
- rcSrc.bottom = pBoxExtents->y2;
-
- /* Calculating a bounding box for the destination is trickier */
- rcDest.left = ptOrigin.x + rcSrc.left;
- rcDest.top = ptOrigin.y + rcSrc.top;
- rcDest.right = ptOrigin.x + rcSrc.right;
- rcDest.bottom = ptOrigin.y + rcSrc.bottom;
-
- /* Our Blt should be clipped to the invalidated region */
- ddrval = IDirectDrawSurface4_Blt (pScreenPriv->pddsPrimary4,
- &rcDest,
- pScreenPriv->pddsShadow4,
- &rcSrc,
- DDBLT_WAIT,
- NULL);
-
- /* Reset the clip region */
- SelectClipRgn (pScreenPriv->hdcScreen, NULL);
- }
-}
-
-
-/*
- * Call the wrapped CloseScreen function.
- *
- * Free our resources and private structures.
- */
-
-static Bool
-winCloseScreenShadowDDNL (int nIndex, ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- Bool fReturn;
-
-#if CYGDEBUG
- winDebug ("winCloseScreenShadowDDNL - Freeing screen resources\n");
-#endif
-
- /* Flag that the screen is closed */
- pScreenPriv->fClosed = TRUE;
- pScreenPriv->fActive = FALSE;
-
- /* Call the wrapped CloseScreen procedure */
- WIN_UNWRAP(CloseScreen);
- fReturn = (*pScreen->CloseScreen) (nIndex, pScreen);
-
- /* Free the screen DC */
- ReleaseDC (pScreenPriv->hwndScreen, pScreenPriv->hdcScreen);
-
- /* Delete the window property */
- RemoveProp (pScreenPriv->hwndScreen, WIN_SCR_PROP);
-
- /* Free the shadow surface, if there is one */
- if (pScreenPriv->pddsShadow4)
- {
- IDirectDrawSurface4_Release (pScreenPriv->pddsShadow4);
- free (pScreenInfo->pfb);
- pScreenInfo->pfb = NULL;
- pScreenPriv->pddsShadow4 = NULL;
- }
-
- /* Detach the clipper from the primary surface and release the clipper. */
- if (pScreenPriv->pddcPrimary)
- {
- /* Detach the clipper */
- IDirectDrawSurface4_SetClipper (pScreenPriv->pddsPrimary4,
- NULL);
-
- /* Release the clipper object */
- IDirectDrawClipper_Release (pScreenPriv->pddcPrimary);
- pScreenPriv->pddcPrimary = NULL;
- }
-
- /* Release the primary surface, if there is one */
- if (pScreenPriv->pddsPrimary4)
- {
- IDirectDrawSurface4_Release (pScreenPriv->pddsPrimary4);
- pScreenPriv->pddsPrimary4 = NULL;
- }
-
- /* Free the DirectDraw4 object, if there is one */
- if (pScreenPriv->pdd4)
- {
- IDirectDraw4_RestoreDisplayMode (pScreenPriv->pdd4);
- IDirectDraw4_Release (pScreenPriv->pdd4);
- pScreenPriv->pdd4 = NULL;
- }
-
- /* Free the DirectDraw object, if there is one */
- if (pScreenPriv->pdd)
- {
- IDirectDraw_Release (pScreenPriv->pdd);
- pScreenPriv->pdd = NULL;
- }
-
- /* Delete tray icon, if we have one */
- if (!pScreenInfo->fNoTrayIcon)
- winDeleteNotifyIcon (pScreenPriv);
-
- /* Free the exit confirmation dialog box, if it exists */
- if (g_hDlgExit != NULL)
- {
- DestroyWindow (g_hDlgExit);
- g_hDlgExit = NULL;
- }
-
- /* Kill our window */
- if (pScreenPriv->hwndScreen)
- {
- DestroyWindow (pScreenPriv->hwndScreen);
- pScreenPriv->hwndScreen = NULL;
- }
-
-#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
- /* Destroy the thread startup mutex */
- pthread_mutex_destroy (&pScreenPriv->pmServerStarted);
-#endif
-
- /* Kill our screeninfo's pointer to the screen */
- pScreenInfo->pScreen = NULL;
-
- /* Invalidate the ScreenInfo's fb pointer */
- pScreenInfo->pfb = NULL;
-
- /* Free the screen privates for this screen */
- free ((pointer) pScreenPriv);
-
- return fReturn;
-}
-
-
-/*
- * Tell mi what sort of visuals we need.
- *
- * Generally we only need one visual, as our screen can only
- * handle one format at a time, I believe. You may want
- * to verify that last sentence.
- */
-
-static Bool
-winInitVisualsShadowDDNL (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- DWORD dwRedBits, dwGreenBits, dwBlueBits;
-
- /* Count the number of ones in each color mask */
- dwRedBits = winCountBits (pScreenPriv->dwRedMask);
- dwGreenBits = winCountBits (pScreenPriv->dwGreenMask);
- dwBlueBits = winCountBits (pScreenPriv->dwBlueMask);
-
- /* Store the maximum number of ones in a color mask as the bitsPerRGB */
- if (dwRedBits == 0 || dwGreenBits == 0 || dwBlueBits == 0)
- pScreenPriv->dwBitsPerRGB = 8;
- else if (dwRedBits > dwGreenBits && dwRedBits > dwBlueBits)
- pScreenPriv->dwBitsPerRGB = dwRedBits;
- else if (dwGreenBits > dwRedBits && dwGreenBits > dwBlueBits)
- pScreenPriv->dwBitsPerRGB = dwGreenBits;
- else
- pScreenPriv->dwBitsPerRGB = dwBlueBits;
-
- winDebug ("winInitVisualsShadowDDNL - Masks %08x %08x %08x BPRGB %d d %d "
- "bpp %d\n",
- (unsigned int) pScreenPriv->dwRedMask,
- (unsigned int) pScreenPriv->dwGreenMask,
- (unsigned int) pScreenPriv->dwBlueMask,
- (int) pScreenPriv->dwBitsPerRGB,
- (int) pScreenInfo->dwDepth,
- (int) pScreenInfo->dwBPP);
-
- /* Create a single visual according to the Windows screen depth */
- switch (pScreenInfo->dwDepth)
- {
- case 24:
- case 16:
- case 15:
-#if defined(XFree86Server)
- /* Setup the real visual */
- if (!miSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- TrueColorMask,
- pScreenPriv->dwBitsPerRGB,
- -1,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsShadowDDNL - miSetVisualTypesAndMasks "
- "failed for TrueColor\n");
- return FALSE;
- }
-
-#ifdef XWIN_EMULATEPSEUDO
- if (!pScreenInfo->fEmulatePseudo)
- break;
-
- /* Setup a pseudocolor visual */
- if (!miSetVisualTypesAndMasks (8,
- PseudoColorMask,
- 8,
- -1,
- 0,
- 0,
- 0))
- {
- ErrorF ("winInitVisualsShadowDDNL - miSetVisualTypesAndMasks "
- "failed for PseudoColor\n");
- return FALSE;
- }
-#endif
-#else /* XFree86Server */
- /* Setup the real visual */
- if (!fbSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- TrueColorMask,
- pScreenPriv->dwBitsPerRGB,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsShadowDDNL - fbSetVisualTypesAndMasks "
- "failed for TrueColor\n");
- return FALSE;
- }
-
-#ifdef XWIN_EMULATEPSEUDO
- if (!pScreenInfo->fEmulatePseudo)
- break;
-
- /* Setup a pseudocolor visual */
- if (!fbSetVisualTypesAndMasks (8,
- PseudoColorMask,
- 8,
- 0,
- 0,
- 0))
- {
- ErrorF ("winInitVisualsShadowDDNL - fbSetVisualTypesAndMasks "
- "failed for PseudoColor\n");
- return FALSE;
- }
-#endif
-#endif /* XFree86Server */
- break;
-
- case 8:
-#if defined(XFree86Server)
- if (!miSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- pScreenInfo->fFullScreen
- ? PseudoColorMask : StaticColorMask,
- pScreenPriv->dwBitsPerRGB,
- pScreenInfo->fFullScreen
- ? PseudoColor : StaticColor,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsShadowDDNL - miSetVisualTypesAndMasks "
- "failed\n");
- return FALSE;
- }
-#else /* XFree86Server */
- if (!fbSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- pScreenInfo->fFullScreen
- ? PseudoColorMask : StaticColorMask,
- pScreenPriv->dwBitsPerRGB,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsShadowDDNL - fbSetVisualTypesAndMasks "
- "failed\n");
- return FALSE;
- }
-#endif /* XFree86Server */
- break;
-
- default:
- ErrorF ("winInitVisualsShadowDDNL - Unknown screen depth\n");
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winInitVisualsShadowDDNL - Returning\n");
-#endif
-
- return TRUE;
-}
-
-
-/*
- * Adjust the user proposed video mode
- */
-
-static Bool
-winAdjustVideoModeShadowDDNL (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- HDC hdc = NULL;
- DWORD dwBPP;
-
- /* We're in serious trouble if we can't get a DC */
- hdc = GetDC (NULL);
- if (hdc == NULL)
- {
- ErrorF ("winAdjustVideoModeShadowDDNL - GetDC () failed\n");
- return FALSE;
- }
-
- /* Query GDI for current display depth */
- dwBPP = GetDeviceCaps (hdc, BITSPIXEL);
-
- /* DirectDraw can only change the depth in fullscreen mode */
- if (pScreenInfo->dwBPP == WIN_DEFAULT_BPP)
- {
- /* No -depth parameter passed, let the user know the depth being used */
- winErrorFVerb (2, "winAdjustVideoModeShadowDDNL - Using Windows display "
- "depth of %d bits per pixel\n", (int) dwBPP);
-
- /* Use GDI's depth */
- pScreenInfo->dwBPP = dwBPP;
- }
- else if (pScreenInfo->fFullScreen
- && pScreenInfo->dwBPP != dwBPP)
- {
- /* FullScreen, and GDI depth differs from -depth parameter */
- winErrorFVerb (2, "winAdjustVideoModeShadowDDNL - FullScreen, using command "
- "line bpp: %d\n", (int) pScreenInfo->dwBPP);
- }
- else if (dwBPP != pScreenInfo->dwBPP)
- {
- /* Windowed, and GDI depth differs from -depth parameter */
- winErrorFVerb (2, "winAdjustVideoModeShadowDDNL - Windowed, command line "
- "bpp: %d, using bpp: %d\n",
- (int) pScreenInfo->dwBPP, (int) dwBPP);
-
- /* We'll use GDI's depth */
- pScreenInfo->dwBPP = dwBPP;
- }
-
- /* See if the shadow bitmap will be larger than the DIB size limit */
- if (pScreenInfo->dwWidth * pScreenInfo->dwHeight * pScreenInfo->dwBPP
- >= WIN_DIB_MAXIMUM_SIZE)
- {
- winErrorFVerb (1, "winAdjustVideoModeShadowDDNL - Requested DirectDraw surface "
- "will be larger than %d MB. The surface may fail to be "
- "allocated on Windows 95, 98, or Me, due to a %d MB limit in "
- "DIB size. This limit does not apply to Windows NT/2000, and "
- "this message may be ignored on those platforms.\n",
- WIN_DIB_MAXIMUM_SIZE_MB, WIN_DIB_MAXIMUM_SIZE_MB);
- }
-
- /* Release our DC */
- ReleaseDC (NULL, hdc);
-
- return TRUE;
-}
-
-
-/*
- * Blt exposed regions to the screen
- */
-
-static Bool
-winBltExposedRegionsShadowDDNL (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- RECT rcSrc, rcDest;
- POINT ptOrigin;
- HDC hdcUpdate;
- PAINTSTRUCT ps;
- HRESULT ddrval = DD_OK;
- Bool fReturn = TRUE;
- int i;
-
- /* Quite common case. The primary surface was lost (maybe because of depth
- * change). Try to create a new primary surface. Bail out if this fails */
- if (pScreenPriv->pddsPrimary4 == NULL && pScreenPriv->fRetryCreateSurface &&
- !winCreatePrimarySurfaceShadowDDNL(pScreen))
- {
- Sleep(100);
- return FALSE;
- }
- if (pScreenPriv->pddsPrimary4 == NULL)
- return FALSE;
-
- /* BeginPaint gives us an hdc that clips to the invalidated region */
- hdcUpdate = BeginPaint (pScreenPriv->hwndScreen, &ps);
- if (hdcUpdate == NULL)
- {
- fReturn = FALSE;
- ErrorF ("winBltExposedRegionsShadowDDNL - BeginPaint () returned "
- "a NULL device context handle. Aborting blit attempt.\n");
- goto winBltExposedRegionsShadowDDNL_Exit;
- }
-
- /* Get the origin of the window in the screen coords */
- ptOrigin.x = pScreenInfo->dwXOffset;
- ptOrigin.y = pScreenInfo->dwYOffset;
-
- MapWindowPoints (pScreenPriv->hwndScreen,
- HWND_DESKTOP,
- (LPPOINT)&ptOrigin, 1);
- rcDest.left = ptOrigin.x;
- rcDest.right = ptOrigin.x + pScreenInfo->dwWidth;
- rcDest.top = ptOrigin.y;
- rcDest.bottom = ptOrigin.y + pScreenInfo->dwHeight;
-
- /* Source can be entire shadow surface, as Blt should clip for us */
- rcSrc.left = 0;
- rcSrc.top = 0;
- rcSrc.right = pScreenInfo->dwWidth;
- rcSrc.bottom = pScreenInfo->dwHeight;
-
- /* Try to regain the primary surface and blit again if we've lost it */
- for (i = 0; i <= WIN_REGAIN_SURFACE_RETRIES; ++i)
- {
- /* Our Blt should be clipped to the invalidated region */
- ddrval = IDirectDrawSurface4_Blt (pScreenPriv->pddsPrimary4,
- &rcDest,
- pScreenPriv->pddsShadow4,
- &rcSrc,
- DDBLT_WAIT,
- NULL);
- if (ddrval == DDERR_SURFACELOST)
- {
- /* Surface was lost */
- winErrorFVerb (1, "winBltExposedRegionsShadowDDNL - "
- "IDirectDrawSurface4_Blt reported that the primary "
- "surface was lost, trying to restore, retry: %d\n", i + 1);
-
- /* Try to restore the surface, once */
-
- ddrval = IDirectDrawSurface4_Restore (pScreenPriv->pddsPrimary4);
- winDebug ("winBltExposedRegionsShadowDDNL - "
- "IDirectDrawSurface4_Restore returned: ");
- if (ddrval == DD_OK)
- winDebug ("DD_OK\n");
- else if (ddrval == DDERR_WRONGMODE)
- winDebug ("DDERR_WRONGMODE\n");
- else if (ddrval == DDERR_INCOMPATIBLEPRIMARY)
- winDebug ("DDERR_INCOMPATIBLEPRIMARY\n");
- else if (ddrval == DDERR_UNSUPPORTED)
- winDebug ("DDERR_UNSUPPORTED\n");
- else if (ddrval == DDERR_INVALIDPARAMS)
- winDebug ("DDERR_INVALIDPARAMS\n");
- else if (ddrval == DDERR_INVALIDOBJECT)
- winDebug ("DDERR_INVALIDOBJECT\n");
- else
- winDebug ("unknown error: %08x\n", (unsigned int) ddrval);
-
- /* Loop around to try the blit one more time */
- continue;
- }
- else if (FAILED (ddrval))
- {
- fReturn = FALSE;
- winErrorFVerb (1, "winBltExposedRegionsShadowDDNL - "
- "IDirectDrawSurface4_Blt failed, but surface not "
- "lost: %08x %d\n",
- (unsigned int) ddrval, (int) ddrval);
- goto winBltExposedRegionsShadowDDNL_Exit;
- }
- else
- {
- /* Success, stop looping */
- break;
- }
- }
-
- winBltExposedRegionsShadowDDNL_Exit:
- /* EndPaint frees the DC */
- if (hdcUpdate != NULL)
- EndPaint (pScreenPriv->hwndScreen, &ps);
- return fReturn;
-}
-
-
-/*
- * Do any engine-specific application-activation processing
- */
-
-static Bool
-winActivateAppShadowDDNL (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
-
- /*
- * Do we have a surface?
- * Are we active?
- * Are we full screen?
- */
- if (pScreenPriv != NULL
- && pScreenPriv->pddsPrimary4 != NULL
- && pScreenPriv->fActive)
- {
- /* Primary surface was lost, restore it */
- IDirectDrawSurface4_Restore (pScreenPriv->pddsPrimary4);
- }
-
- return TRUE;
-}
-
-
-/*
- * Reblit the shadow framebuffer to the screen.
- */
-
-static Bool
-winRedrawScreenShadowDDNL (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- HRESULT ddrval = DD_OK;
- RECT rcSrc, rcDest;
- POINT ptOrigin;
-
- /* Get the origin of the window in the screen coords */
- ptOrigin.x = pScreenInfo->dwXOffset;
- ptOrigin.y = pScreenInfo->dwYOffset;
- MapWindowPoints (pScreenPriv->hwndScreen,
- HWND_DESKTOP,
- (LPPOINT)&ptOrigin, 1);
- rcDest.left = ptOrigin.x;
- rcDest.right = ptOrigin.x + pScreenInfo->dwWidth;
- rcDest.top = ptOrigin.y;
- rcDest.bottom = ptOrigin.y + pScreenInfo->dwHeight;
-
- /* Source can be entire shadow surface, as Blt should clip for us */
- rcSrc.left = 0;
- rcSrc.top = 0;
- rcSrc.right = pScreenInfo->dwWidth;
- rcSrc.bottom = pScreenInfo->dwHeight;
-
- /* Redraw the whole window, to take account for the new colors */
- ddrval = IDirectDrawSurface4_Blt (pScreenPriv->pddsPrimary4,
- &rcDest,
- pScreenPriv->pddsShadow4,
- &rcSrc,
- DDBLT_WAIT,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winRedrawScreenShadowDDNL - IDirectDrawSurface4_Blt () "
- "failed: %08x\n",
- (unsigned int) ddrval);
- }
-
- return TRUE;
-}
-
-
-/*
- * Realize the currently installed colormap
- */
-
-static Bool
-winRealizeInstalledPaletteShadowDDNL (ScreenPtr pScreen)
-{
- return TRUE;
-}
-
-
-/*
- * Install the specified colormap
- */
-
-static Bool
-winInstallColormapShadowDDNL (ColormapPtr pColormap)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- winScreenPriv(pScreen);
- winCmapPriv(pColormap);
- HRESULT ddrval = DD_OK;
-
- /* Install the DirectDraw palette on the primary surface */
- ddrval = IDirectDrawSurface4_SetPalette (pScreenPriv->pddsPrimary4,
- pCmapPriv->lpDDPalette);
- if (FAILED (ddrval))
- {
- ErrorF ("winInstallColormapShadowDDNL - Failed installing the "
- "DirectDraw palette.\n");
- return FALSE;
- }
-
- /* Save a pointer to the newly installed colormap */
- pScreenPriv->pcmapInstalled = pColormap;
-
- return TRUE;
-}
-
-
-/*
- * Store the specified colors in the specified colormap
- */
-
-static Bool
-winStoreColorsShadowDDNL (ColormapPtr pColormap,
- int ndef,
- xColorItem *pdefs)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- winScreenPriv(pScreen);
- winCmapPriv(pColormap);
- ColormapPtr curpmap = pScreenPriv->pcmapInstalled;
- HRESULT ddrval = DD_OK;
-
- /* Put the X colormap entries into the Windows logical palette */
- ddrval = IDirectDrawPalette_SetEntries (pCmapPriv->lpDDPalette,
- 0,
- pdefs[0].pixel,
- ndef,
- pCmapPriv->peColors
- + pdefs[0].pixel);
- if (FAILED (ddrval))
- {
- ErrorF ("winStoreColorsShadowDDNL - SetEntries () failed: %08x\n", ddrval);
- return FALSE;
- }
-
- /* Don't install the DirectDraw palette if the colormap is not installed */
- if (pColormap != curpmap)
- {
- return TRUE;
- }
-
- if (!winInstallColormapShadowDDNL (pColormap))
- {
- ErrorF ("winStoreColorsShadowDDNL - Failed installing colormap\n");
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/*
- * Colormap initialization procedure
- */
-
-static Bool
-winCreateColormapShadowDDNL (ColormapPtr pColormap)
-{
- HRESULT ddrval = DD_OK;
- ScreenPtr pScreen = pColormap->pScreen;
- winScreenPriv(pScreen);
- winCmapPriv(pColormap);
-
- /* Create a DirectDraw palette */
- ddrval = IDirectDraw4_CreatePalette (pScreenPriv->pdd4,
- DDPCAPS_8BIT | DDPCAPS_ALLOW256,
- pCmapPriv->peColors,
- &pCmapPriv->lpDDPalette,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winCreateColormapShadowDDNL - CreatePalette failed\n");
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/*
- * Colormap destruction procedure
- */
-
-static Bool
-winDestroyColormapShadowDDNL (ColormapPtr pColormap)
-{
- winScreenPriv(pColormap->pScreen);
- winCmapPriv(pColormap);
- HRESULT ddrval = DD_OK;
-
- /*
- * Is colormap to be destroyed the default?
- *
- * Non-default colormaps should have had winUninstallColormap
- * called on them before we get here. The default colormap
- * will not have had winUninstallColormap called on it. Thus,
- * we need to handle the default colormap in a special way.
- */
- if (pColormap->flags & IsDefault)
- {
-#if CYGDEBUG
- winDebug ("winDestroyColormapShadowDDNL - Destroying default colormap\n");
-#endif
-
- /*
- * FIXME: Walk the list of all screens, popping the default
- * palette out of each screen device context.
- */
-
- /* Pop the palette out of the primary surface */
- ddrval = IDirectDrawSurface4_SetPalette (pScreenPriv->pddsPrimary4,
- NULL);
- if (FAILED (ddrval))
- {
- ErrorF ("winDestroyColormapShadowDDNL - Failed freeing the "
- "default colormap DirectDraw palette.\n");
- return FALSE;
- }
-
- /* Clear our private installed colormap pointer */
- pScreenPriv->pcmapInstalled = NULL;
- }
-
- /* Release the palette */
- IDirectDrawPalette_Release (pCmapPriv->lpDDPalette);
-
- /* Invalidate the colormap privates */
- pCmapPriv->lpDDPalette = NULL;
-
- return TRUE;
-}
-
-
-/*
- * Set pointers to our engine specific functions
- */
-
-Bool
-winSetEngineFunctionsShadowDDNL (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- /* Set our pointers */
- pScreenPriv->pwinAllocateFB = winAllocateFBShadowDDNL;
- pScreenPriv->pwinShadowUpdate = winShadowUpdateDDNL;
- pScreenPriv->pwinCloseScreen = winCloseScreenShadowDDNL;
- pScreenPriv->pwinInitVisuals = winInitVisualsShadowDDNL;
- pScreenPriv->pwinAdjustVideoMode = winAdjustVideoModeShadowDDNL;
- if (pScreenInfo->fFullScreen)
- pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowFullScreen;
- else
- pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowWindowed;
- pScreenPriv->pwinFinishScreenInit = winFinishScreenInitFB;
- pScreenPriv->pwinBltExposedRegions = winBltExposedRegionsShadowDDNL;
- pScreenPriv->pwinActivateApp = winActivateAppShadowDDNL;
- pScreenPriv->pwinRedrawScreen = winRedrawScreenShadowDDNL;
- pScreenPriv->pwinRealizeInstalledPalette
- = winRealizeInstalledPaletteShadowDDNL;
- pScreenPriv->pwinInstallColormap = winInstallColormapShadowDDNL;
- pScreenPriv->pwinStoreColors = winStoreColorsShadowDDNL;
- pScreenPriv->pwinCreateColormap = winCreateColormapShadowDDNL;
- pScreenPriv->pwinDestroyColormap = winDestroyColormapShadowDDNL;
- pScreenPriv->pwinHotKeyAltTab = (winHotKeyAltTabProcPtr) (void (*)(void))NoopDDA;
- pScreenPriv->pwinCreatePrimarySurface = winCreatePrimarySurfaceShadowDDNL;
- pScreenPriv->pwinReleasePrimarySurface = winReleasePrimarySurfaceShadowDDNL;
-#ifdef XWIN_MULTIWINDOW
- pScreenPriv->pwinFinishCreateWindowsWindow
- = winFinishCreateWindowsWindowDDNL;
-#endif
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winshadgdi.c b/nx-X11/programs/Xserver/hw/xwin/winshadgdi.c
deleted file mode 100644
index ba9819298..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winshadgdi.c
+++ /dev/null
@@ -1,1323 +0,0 @@
-/*
- *Copyright (C) 2001-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * External symbols
- */
-
-#ifdef XWIN_MULTIWINDOW
-extern DWORD g_dwCurrentThreadID;
-#endif
-extern HWND g_hDlgExit;
-
-
-/*
- * Local function prototypes
- */
-
-#ifdef XWIN_MULTIWINDOW
-static wBOOL CALLBACK
-winRedrawAllProcShadowGDI (HWND hwnd, LPARAM lParam);
-
-static wBOOL CALLBACK
-winRedrawDamagedWindowShadowGDI (HWND hwnd, LPARAM lParam);
-#endif
-
-static Bool
-winAllocateFBShadowGDI (ScreenPtr pScreen);
-
-static void
-winShadowUpdateGDI (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-static Bool
-winCloseScreenShadowGDI (int nIndex, ScreenPtr pScreen);
-
-static Bool
-winInitVisualsShadowGDI (ScreenPtr pScreen);
-
-static Bool
-winAdjustVideoModeShadowGDI (ScreenPtr pScreen);
-
-static Bool
-winBltExposedRegionsShadowGDI (ScreenPtr pScreen);
-
-static Bool
-winActivateAppShadowGDI (ScreenPtr pScreen);
-
-static Bool
-winRedrawScreenShadowGDI (ScreenPtr pScreen);
-
-static Bool
-winRealizeInstalledPaletteShadowGDI (ScreenPtr pScreen);
-
-static Bool
-winInstallColormapShadowGDI (ColormapPtr pColormap);
-
-static Bool
-winStoreColorsShadowGDI (ColormapPtr pmap,
- int ndef,
- xColorItem *pdefs);
-
-static Bool
-winCreateColormapShadowGDI (ColormapPtr pColormap);
-
-static Bool
-winDestroyColormapShadowGDI (ColormapPtr pColormap);
-
-
-/*
- * Internal function to get the DIB format that is compatible with the screen
- */
-
-static
-Bool
-winQueryScreenDIBFormat (ScreenPtr pScreen, BITMAPINFOHEADER *pbmih)
-{
- winScreenPriv(pScreen);
- HBITMAP hbmp;
-#if CYGDEBUG
- LPDWORD pdw = NULL;
-#endif
-
- /* Create a memory bitmap compatible with the screen */
- hbmp = CreateCompatibleBitmap (pScreenPriv->hdcScreen, 1, 1);
- if (hbmp == NULL)
- {
- ErrorF ("winQueryScreenDIBFormat - CreateCompatibleBitmap failed\n");
- return FALSE;
- }
-
- /* Initialize our bitmap info header */
- ZeroMemory (pbmih, sizeof (BITMAPINFOHEADER) + 256 * sizeof (RGBQUAD));
- pbmih->biSize = sizeof (BITMAPINFOHEADER);
-
- /* Get the biBitCount */
- if (!GetDIBits (pScreenPriv->hdcScreen,
- hbmp,
- 0, 1,
- NULL,
- (BITMAPINFO*) pbmih,
- DIB_RGB_COLORS))
- {
- ErrorF ("winQueryScreenDIBFormat - First call to GetDIBits failed\n");
- DeleteObject (hbmp);
- return FALSE;
- }
-
-#if CYGDEBUG
- /* Get a pointer to bitfields */
- pdw = (DWORD*) ((CARD8*)pbmih + sizeof (BITMAPINFOHEADER));
-
- winDebug ("winQueryScreenDIBFormat - First call masks: %08x %08x %08x\n",
- pdw[0], pdw[1], pdw[2]);
-#endif
-
- /* Get optimal color table, or the optimal bitfields */
- if (!GetDIBits (pScreenPriv->hdcScreen,
- hbmp,
- 0, 1,
- NULL,
- (BITMAPINFO*)pbmih,
- DIB_RGB_COLORS))
- {
- ErrorF ("winQueryScreenDIBFormat - Second call to GetDIBits "
- "failed\n");
- DeleteObject (hbmp);
- return FALSE;
- }
-
- /* Free memory */
- DeleteObject (hbmp);
-
- return TRUE;
-}
-
-
-/*
- * Internal function to determine the GDI bits per rgb and bit masks
- */
-
-static
-Bool
-winQueryRGBBitsAndMasks (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- BITMAPINFOHEADER *pbmih = NULL;
- Bool fReturn = TRUE;
- LPDWORD pdw = NULL;
- DWORD dwRedBits, dwGreenBits, dwBlueBits;
-
- /* Color masks for 8 bpp are standardized */
- if (GetDeviceCaps (pScreenPriv->hdcScreen, RASTERCAPS) & RC_PALETTE)
- {
- /*
- * RGB BPP for 8 bit palletes is always 8
- * and the color masks are always 0.
- */
- pScreenPriv->dwBitsPerRGB = 8;
- pScreenPriv->dwRedMask = 0x0L;
- pScreenPriv->dwGreenMask = 0x0L;
- pScreenPriv->dwBlueMask = 0x0L;
- return TRUE;
- }
-
- /* Color masks for 24 bpp are standardized */
- if (GetDeviceCaps (pScreenPriv->hdcScreen, PLANES)
- * GetDeviceCaps (pScreenPriv->hdcScreen, BITSPIXEL) == 24)
- {
- ErrorF ("winQueryRGBBitsAndMasks - GetDeviceCaps (BITSPIXEL) "
- "returned 24 for the screen. Using default 24bpp masks.\n");
-
- /* 8 bits per primary color */
- pScreenPriv->dwBitsPerRGB = 8;
-
- /* Set screen privates masks */
- pScreenPriv->dwRedMask = WIN_24BPP_MASK_RED;
- pScreenPriv->dwGreenMask = WIN_24BPP_MASK_GREEN;
- pScreenPriv->dwBlueMask = WIN_24BPP_MASK_BLUE;
-
- return TRUE;
- }
-
- /* Allocate a bitmap header and color table */
- pbmih = (BITMAPINFOHEADER*) malloc (sizeof (BITMAPINFOHEADER)
- + 256 * sizeof (RGBQUAD));
- if (pbmih == NULL)
- {
- ErrorF ("winQueryRGBBitsAndMasks - malloc failed\n");
- return FALSE;
- }
-
- /* Get screen description */
- if (winQueryScreenDIBFormat (pScreen, pbmih))
- {
- /* Get a pointer to bitfields */
- pdw = (DWORD*) ((CARD8*)pbmih + sizeof (BITMAPINFOHEADER));
-
-#if CYGDEBUG
- winDebug ("%s - Masks: %08x %08x %08x\n", __FUNCTION__,
- pdw[0], pdw[1], pdw[2]);
- winDebug ("%s - Bitmap: %dx%d %d bpp %d planes\n", __FUNCTION__,
- pbmih->biWidth, pbmih->biHeight, pbmih->biBitCount, pbmih->biPlanes);
- winDebug ("%s - Compression: %d %s\n", __FUNCTION__,
- pbmih->biCompression,
- (pbmih->biCompression == BI_RGB?"(BI_RGB)":
- (pbmih->biCompression == BI_RLE8?"(BI_RLE8)":
- (pbmih->biCompression == BI_RLE4?"(BI_RLE4)":
- (pbmih->biCompression == BI_BITFIELDS?"(BI_BITFIELDS)":""
- )))));
-#endif
-
- /* Handle BI_RGB case, which is returned by Wine */
- if (pbmih->biCompression == BI_RGB)
- {
- dwRedBits = 5;
- dwGreenBits = 5;
- dwBlueBits = 5;
-
- pScreenPriv->dwBitsPerRGB = 5;
-
- /* Set screen privates masks */
- pScreenPriv->dwRedMask = 0x7c00;
- pScreenPriv->dwGreenMask = 0x03e0;
- pScreenPriv->dwBlueMask = 0x001f;
- }
- else
- {
- /* Count the number of bits in each mask */
- dwRedBits = winCountBits (pdw[0]);
- dwGreenBits = winCountBits (pdw[1]);
- dwBlueBits = winCountBits (pdw[2]);
-
- /* Find maximum bits per red, green, blue */
- if (dwRedBits > dwGreenBits && dwRedBits > dwBlueBits)
- pScreenPriv->dwBitsPerRGB = dwRedBits;
- else if (dwGreenBits > dwRedBits && dwGreenBits > dwBlueBits)
- pScreenPriv->dwBitsPerRGB = dwGreenBits;
- else
- pScreenPriv->dwBitsPerRGB = dwBlueBits;
-
- /* Set screen privates masks */
- pScreenPriv->dwRedMask = pdw[0];
- pScreenPriv->dwGreenMask = pdw[1];
- pScreenPriv->dwBlueMask = pdw[2];
- }
- }
- else
- {
- ErrorF ("winQueryRGBBitsAndMasks - winQueryScreenDIBFormat failed\n");
- free (pbmih);
- fReturn = FALSE;
- }
-
- /* Free memory */
- free (pbmih);
-
- return fReturn;
-}
-
-
-#ifdef XWIN_MULTIWINDOW
-/*
- * Redraw all ---?
- */
-
-static wBOOL CALLBACK
-winRedrawAllProcShadowGDI (HWND hwnd, LPARAM lParam)
-{
- if (hwnd == (HWND)lParam)
- return TRUE;
- InvalidateRect (hwnd, NULL, FALSE);
- UpdateWindow (hwnd);
- return TRUE;
-}
-
-static wBOOL CALLBACK
-winRedrawDamagedWindowShadowGDI (HWND hwnd, LPARAM lParam)
-{
- BoxPtr pDamage = (BoxPtr)lParam;
- RECT rcClient, rcDamage, rcRedraw;
- POINT topLeft, bottomRight;
-
- if (IsIconic (hwnd))
- return TRUE; /* Don't care minimized windows */
-
- /* Convert the damaged area from Screen coords to Client coords */
- topLeft.x = pDamage->x1; topLeft.y = pDamage->y1;
- bottomRight.x = pDamage->x2; bottomRight.y = pDamage->y2;
- topLeft.x += GetSystemMetrics (SM_XVIRTUALSCREEN);
- bottomRight.x += GetSystemMetrics (SM_XVIRTUALSCREEN);
- topLeft.y += GetSystemMetrics (SM_YVIRTUALSCREEN);
- bottomRight.y += GetSystemMetrics (SM_YVIRTUALSCREEN);
- ScreenToClient (hwnd, &topLeft);
- ScreenToClient (hwnd, &bottomRight);
- SetRect (&rcDamage, topLeft.x, topLeft.y, bottomRight.x, bottomRight.y);
-
- GetClientRect (hwnd, &rcClient);
-
- if (IntersectRect (&rcRedraw, &rcClient, &rcDamage))
- {
- InvalidateRect (hwnd, &rcRedraw, FALSE);
- UpdateWindow (hwnd);
- }
- return TRUE;
-}
-#endif
-
-
-/*
- * Allocate a DIB for the shadow framebuffer GDI server
- */
-
-static Bool
-winAllocateFBShadowGDI (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- BITMAPINFOHEADER *pbmih = NULL;
- DIBSECTION dibsection;
- Bool fReturn = TRUE;
-
- /* Get device contexts for the screen and shadow bitmap */
- pScreenPriv->hdcScreen = GetDC (pScreenPriv->hwndScreen);
- pScreenPriv->hdcShadow = CreateCompatibleDC (pScreenPriv->hdcScreen);
-
- /* Allocate bitmap info header */
- pbmih = (BITMAPINFOHEADER*) malloc (sizeof (BITMAPINFOHEADER)
- + 256 * sizeof (RGBQUAD));
- if (pbmih == NULL)
- {
- ErrorF ("winAllocateFBShadowGDI - malloc () failed\n");
- return FALSE;
- }
-
- /* Query the screen format */
- fReturn = winQueryScreenDIBFormat (pScreen, pbmih);
-
- /* Describe shadow bitmap to be created */
- pbmih->biWidth = pScreenInfo->dwWidth;
- pbmih->biHeight = -pScreenInfo->dwHeight;
-
- ErrorF ("winAllocateFBShadowGDI - Creating DIB with width: %d height: %d "
- "depth: %d\n",
- (int) pbmih->biWidth, (int) -pbmih->biHeight, pbmih->biBitCount);
-
- /* Create a DI shadow bitmap with a bit pointer */
- pScreenPriv->hbmpShadow = CreateDIBSection (pScreenPriv->hdcScreen,
- (BITMAPINFO *) pbmih,
- DIB_RGB_COLORS,
- (VOID**) &pScreenInfo->pfb,
- NULL,
- 0);
- if (pScreenPriv->hbmpShadow == NULL || pScreenInfo->pfb == NULL)
- {
- winW32Error (2, "winAllocateFBShadowGDI - CreateDIBSection failed:");
- return FALSE;
- }
- else
- {
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowGDI - Shadow buffer allocated\n");
-#endif
- }
-
- /* Get information about the bitmap that was allocated */
- GetObject (pScreenPriv->hbmpShadow,
- sizeof (dibsection),
- &dibsection);
-
-#if CYGDEBUG || YES
- /* Print information about bitmap allocated */
- winDebug ("winAllocateFBShadowGDI - Dibsection width: %d height: %d "
- "depth: %d size image: %d\n",
- (int) dibsection.dsBmih.biWidth, (int) dibsection.dsBmih.biHeight,
- dibsection.dsBmih.biBitCount,
- (int) dibsection.dsBmih.biSizeImage);
-#endif
-
- /* Select the shadow bitmap into the shadow DC */
- SelectObject (pScreenPriv->hdcShadow,
- pScreenPriv->hbmpShadow);
-
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowGDI - Attempting a shadow blit\n");
-#endif
-
- /* Do a test blit from the shadow to the screen, I think */
- fReturn = BitBlt (pScreenPriv->hdcScreen,
- 0, 0,
- pScreenInfo->dwWidth, pScreenInfo->dwHeight,
- pScreenPriv->hdcShadow,
- 0, 0,
- SRCCOPY);
- if (fReturn)
- {
-#if CYGDEBUG
- winDebug ("winAllocateFBShadowGDI - Shadow blit success\n");
-#endif
- }
- else
- {
- winW32Error (2, "winAllocateFBShadowGDI - Shadow blit failure\n");
-#if 0
- return FALSE;
-#else
- /* ago: ignore this error. The blit fails with wine, but does not
- * cause any problems later. */
-
- fReturn = TRUE;
-#endif
- }
-
- /* Look for height weirdness */
- if (dibsection.dsBmih.biHeight < 0)
- {
- dibsection.dsBmih.biHeight = -dibsection.dsBmih.biHeight;
- }
-
- /* Set screeninfo stride */
- pScreenInfo->dwStride = ((dibsection.dsBmih.biSizeImage
- / dibsection.dsBmih.biHeight)
- * 8) / pScreenInfo->dwBPP;
-
-#if CYGDEBUG || YES
- winDebug ("winAllocateFBShadowGDI - Created shadow stride: %d\n",
- (int) pScreenInfo->dwStride);
-#endif
-
- /* See if the shadow bitmap will be larger than the DIB size limit */
- if (pScreenInfo->dwWidth * pScreenInfo->dwHeight * pScreenInfo->dwBPP
- >= WIN_DIB_MAXIMUM_SIZE)
- {
- ErrorF ("winAllocateFBShadowGDI - Requested DIB (bitmap) "
- "will be larger than %d MB. The surface may fail to be "
- "allocated on Windows 95, 98, or Me, due to a %d MB limit in "
- "DIB size. This limit does not apply to Windows NT/2000, and "
- "this message may be ignored on those platforms.\n",
- WIN_DIB_MAXIMUM_SIZE_MB, WIN_DIB_MAXIMUM_SIZE_MB);
- }
-
- /* Determine our color masks */
- if (!winQueryRGBBitsAndMasks (pScreen))
- {
- ErrorF ("winAllocateFBShadowGDI - winQueryRGBBitsAndMasks failed\n");
- return FALSE;
- }
-
-#ifdef XWIN_MULTIWINDOW
- /* Redraw all windows */
- if (pScreenInfo->fMultiWindow)
- EnumThreadWindows (g_dwCurrentThreadID, winRedrawAllProcShadowGDI, 0);
-#endif
-
- return fReturn;
-}
-
-
-/*
- * Blit the damaged regions of the shadow fb to the screen
- */
-
-static void
-winShadowUpdateGDI (ScreenPtr pScreen,
- shadowBufPtr pBuf)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- RegionPtr damage = &pBuf->damage;
- DWORD dwBox = REGION_NUM_RECTS (damage);
- BoxPtr pBox = REGION_RECTS (damage);
- int x, y, w, h;
- HRGN hrgnTemp = NULL, hrgnCombined = NULL;
-#ifdef XWIN_UPDATESTATS
- static DWORD s_dwNonUnitRegions = 0;
- static DWORD s_dwTotalUpdates = 0;
- static DWORD s_dwTotalBoxes = 0;
-#endif
- BoxPtr pBoxExtents = REGION_EXTENTS (pScreen, damage);
-
- /*
- * Return immediately if the app is not active
- * and we are fullscreen, or if we have a bad display depth
- */
- if ((!pScreenPriv->fActive && pScreenInfo->fFullScreen)
- || pScreenPriv->fBadDepth) return;
-
-#ifdef XWIN_UPDATESTATS
- ++s_dwTotalUpdates;
- s_dwTotalBoxes += dwBox;
-
- if (dwBox != 1)
- {
- ++s_dwNonUnitRegions;
- ErrorF ("winShadowUpdatGDI - dwBox: %d\n", dwBox);
- }
-
- if ((s_dwTotalUpdates % 100) == 0)
- ErrorF ("winShadowUpdateGDI - %d%% non-unity regions, avg boxes: %d "
- "nu: %d tu: %d\n",
- (s_dwNonUnitRegions * 100) / s_dwTotalUpdates,
- s_dwTotalBoxes / s_dwTotalUpdates,
- s_dwNonUnitRegions, s_dwTotalUpdates);
-#endif /* XWIN_UPDATESTATS */
-
- /*
- * Handle small regions with multiple blits,
- * handle large regions by creating a clipping region and
- * doing a single blit constrained to that clipping region.
- */
- if (pScreenInfo->dwClipUpdatesNBoxes == 0
- || dwBox < pScreenInfo->dwClipUpdatesNBoxes)
- {
- /* Loop through all boxes in the damaged region */
- while (dwBox--)
- {
- /*
- * Calculate x offset, y offset, width, and height for
- * current damage box
- */
- x = pBox->x1;
- y = pBox->y1;
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
-
- BitBlt (pScreenPriv->hdcScreen,
- x, y,
- w, h,
- pScreenPriv->hdcShadow,
- x, y,
- SRCCOPY);
-
- /* Get a pointer to the next box */
- ++pBox;
- }
- }
- else
- {
- /* Compute a GDI region from the damaged region */
- hrgnCombined = CreateRectRgn (pBox->x1, pBox->y1, pBox->x2, pBox->y2);
- dwBox--;
- pBox++;
- while (dwBox--)
- {
- hrgnTemp = CreateRectRgn (pBox->x1, pBox->y1, pBox->x2, pBox->y2);
- CombineRgn (hrgnCombined, hrgnCombined, hrgnTemp, RGN_OR);
- DeleteObject (hrgnTemp);
- pBox++;
- }
-
- /* Install the GDI region as a clipping region */
- SelectClipRgn (pScreenPriv->hdcScreen, hrgnCombined);
- DeleteObject (hrgnCombined);
- hrgnCombined = NULL;
-
- /*
- * Blit the shadow buffer to the screen,
- * constrained to the clipping region.
- */
- BitBlt (pScreenPriv->hdcScreen,
- pBoxExtents->x1, pBoxExtents->y1,
- pBoxExtents->x2 - pBoxExtents->x1,
- pBoxExtents->y2 - pBoxExtents->y1,
- pScreenPriv->hdcShadow,
- pBoxExtents->x1, pBoxExtents->y1,
- SRCCOPY);
-
- /* Reset the clip region */
- SelectClipRgn (pScreenPriv->hdcScreen, NULL);
- }
-
-#ifdef XWIN_MULTIWINDOW
- /* Redraw all multiwindow windows */
- if (pScreenInfo->fMultiWindow)
- EnumThreadWindows (g_dwCurrentThreadID,
- winRedrawDamagedWindowShadowGDI,
- (LPARAM)pBoxExtents);
-#endif
-}
-
-
-/* See Porting Layer Definition - p. 33 */
-/*
- * We wrap whatever CloseScreen procedure was specified by fb;
- * a pointer to said procedure is stored in our privates.
- */
-
-static Bool
-winCloseScreenShadowGDI (int nIndex, ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- Bool fReturn;
-
-#if CYGDEBUG
- winDebug ("winCloseScreenShadowGDI - Freeing screen resources\n");
-#endif
-
- /* Flag that the screen is closed */
- pScreenPriv->fClosed = TRUE;
- pScreenPriv->fActive = FALSE;
-
- /* Call the wrapped CloseScreen procedure */
- WIN_UNWRAP(CloseScreen);
- fReturn = (*pScreen->CloseScreen) (nIndex, pScreen);
-
- /* Delete the window property */
- RemoveProp (pScreenPriv->hwndScreen, WIN_SCR_PROP);
-
- /* Free the shadow DC; which allows the bitmap to be freed */
- DeleteDC (pScreenPriv->hdcShadow);
-
- /* Free the shadow bitmap */
- DeleteObject (pScreenPriv->hbmpShadow);
-
- /* Free the screen DC */
- ReleaseDC (pScreenPriv->hwndScreen, pScreenPriv->hdcScreen);
-
- /* Delete tray icon, if we have one */
- if (!pScreenInfo->fNoTrayIcon)
- winDeleteNotifyIcon (pScreenPriv);
-
- /* Free the exit confirmation dialog box, if it exists */
- if (g_hDlgExit != NULL)
- {
- DestroyWindow (g_hDlgExit);
- g_hDlgExit = NULL;
- }
-
- /* Kill our window */
- if (pScreenPriv->hwndScreen)
- {
- DestroyWindow (pScreenPriv->hwndScreen);
- pScreenPriv->hwndScreen = NULL;
- }
-
-#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
- /* Destroy the thread startup mutex */
- pthread_mutex_destroy (&pScreenPriv->pmServerStarted);
-#endif
-
- /* Invalidate our screeninfo's pointer to the screen */
- pScreenInfo->pScreen = NULL;
-
- /* Invalidate the ScreenInfo's fb pointer */
- pScreenInfo->pfb = NULL;
-
- /* Free the screen privates for this screen */
- free ((pointer) pScreenPriv);
-
- return fReturn;
-}
-
-
-/*
- * Tell mi what sort of visuals we need.
- *
- * Generally we only need one visual, as our screen can only
- * handle one format at a time, I believe. You may want
- * to verify that last sentence.
- */
-
-static Bool
-winInitVisualsShadowGDI (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- /* Display debugging information */
- ErrorF ("winInitVisualsShadowGDI - Masks %08x %08x %08x BPRGB %d d %d "
- "bpp %d\n",
- (unsigned int) pScreenPriv->dwRedMask,
- (unsigned int) pScreenPriv->dwGreenMask,
- (unsigned int) pScreenPriv->dwBlueMask,
- (int) pScreenPriv->dwBitsPerRGB,
- (int) pScreenInfo->dwDepth,
- (int) pScreenInfo->dwBPP);
-
- /* Create a single visual according to the Windows screen depth */
- switch (pScreenInfo->dwDepth)
- {
- case 24:
- case 16:
- case 15:
-#if defined(XFree86Server)
- /* Setup the real visual */
- if (!miSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- TrueColorMask,
- pScreenPriv->dwBitsPerRGB,
- -1,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsShadowGDI - miSetVisualTypesAndMasks "
- "failed\n");
- return FALSE;
- }
-
-#ifdef XWIN_EMULATEPSEUDO
- if (!pScreenInfo->fEmulatePseudo)
- break;
-
- /* Setup a pseudocolor visual */
- if (!miSetVisualTypesAndMasks (8,
- PseudoColorMask,
- 8,
- -1,
- 0,
- 0,
- 0))
- {
- ErrorF ("winInitVisualsShadowGDI - miSetVisualTypesAndMasks "
- "failed for PseudoColor\n");
- return FALSE;
- }
-#endif
-#else /* XFree86Server */
- /* Setup the real visual */
- if (!fbSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- TrueColorMask,
- pScreenPriv->dwBitsPerRGB,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsShadowGDI - fbSetVisualTypesAndMasks "
- "failed for TrueColor\n");
- return FALSE;
- }
-
-#ifdef XWIN_EMULATEPSEUDO
- if (!pScreenInfo->fEmulatePseudo)
- break;
-
- /* Setup a pseudocolor visual */
- if (!fbSetVisualTypesAndMasks (8,
- PseudoColorMask,
- 8,
- 0,
- 0,
- 0))
- {
- ErrorF ("winInitVisualsShadowGDI - fbSetVisualTypesAndMasks "
- "failed for PseudoColor\n");
- return FALSE;
- }
-#endif
-#endif /* XFree86Server */
- break;
-
- case 8:
-#if defined(XFree86Server)
- if (!miSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- PseudoColorMask,
- pScreenPriv->dwBitsPerRGB,
- PseudoColor,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsShadowGDI - miSetVisualTypesAndMasks "
- "failed\n");
- return FALSE;
- }
-#else /* XFree86Server */
- if (!fbSetVisualTypesAndMasks (pScreenInfo->dwDepth,
- PseudoColorMask,
- pScreenPriv->dwBitsPerRGB,
- pScreenPriv->dwRedMask,
- pScreenPriv->dwGreenMask,
- pScreenPriv->dwBlueMask))
- {
- ErrorF ("winInitVisualsShadowGDI - fbSetVisualTypesAndMasks "
- "failed\n");
- return FALSE;
- }
-#endif
- break;
-
- default:
- ErrorF ("winInitVisualsShadowGDI - Unknown screen depth\n");
- return FALSE;
- }
-
-#if CYGDEBUG
- winDebug ("winInitVisualsShadowGDI - Returning\n");
-#endif
-
- return TRUE;
-}
-
-
-/*
- * Adjust the proposed video mode
- */
-
-static Bool
-winAdjustVideoModeShadowGDI (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- HDC hdc;
- DWORD dwBPP;
-
- hdc = GetDC (NULL);
-
- /* We're in serious trouble if we can't get a DC */
- if (hdc == NULL)
- {
- ErrorF ("winAdjustVideoModeShadowGDI - GetDC () failed\n");
- return FALSE;
- }
-
- /* Query GDI for current display depth */
- dwBPP = GetDeviceCaps (hdc, BITSPIXEL);
-
- /* GDI cannot change the screen depth */
- if (pScreenInfo->dwBPP == WIN_DEFAULT_BPP)
- {
- /* No -depth parameter passed, let the user know the depth being used */
- ErrorF ("winAdjustVideoModeShadowGDI - Using Windows display "
- "depth of %d bits per pixel\n", (int) dwBPP);
-
- /* Use GDI's depth */
- pScreenInfo->dwBPP = dwBPP;
- }
- else if (dwBPP != pScreenInfo->dwBPP)
- {
- /* Warn user if GDI depth is different than -depth parameter */
- ErrorF ("winAdjustVideoModeShadowGDI - Command line bpp: %d, "\
- "using bpp: %d\n", (int) pScreenInfo->dwBPP, (int) dwBPP);
-
- /* We'll use GDI's depth */
- pScreenInfo->dwBPP = dwBPP;
- }
-
- /* Release our DC */
- ReleaseDC (NULL, hdc);
- hdc = NULL;
-
- return TRUE;
-}
-
-
-/*
- * Blt exposed regions to the screen
- */
-
-static Bool
-winBltExposedRegionsShadowGDI (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- winPrivCmapPtr pCmapPriv = NULL;
- HDC hdcUpdate;
- PAINTSTRUCT ps;
-
- /* BeginPaint gives us an hdc that clips to the invalidated region */
- hdcUpdate = BeginPaint (pScreenPriv->hwndScreen, &ps);
-
- /* Realize the palette, if we have one */
- if (pScreenPriv->pcmapInstalled != NULL)
- {
- pCmapPriv = winGetCmapPriv (pScreenPriv->pcmapInstalled);
-
- SelectPalette (hdcUpdate, pCmapPriv->hPalette, FALSE);
- RealizePalette (hdcUpdate);
- }
-
- /* Our BitBlt will be clipped to the invalidated region */
- BitBlt (hdcUpdate,
- 0, 0,
- pScreenInfo->dwWidth, pScreenInfo->dwHeight,
- pScreenPriv->hdcShadow,
- 0, 0,
- SRCCOPY);
-
- /* EndPaint frees the DC */
- EndPaint (pScreenPriv->hwndScreen, &ps);
-
-#ifdef XWIN_MULTIWINDOW
- /* Redraw all windows */
- if (pScreenInfo->fMultiWindow)
- EnumThreadWindows(g_dwCurrentThreadID, winRedrawAllProcShadowGDI,
- (LPARAM)pScreenPriv->hwndScreen);
-#endif
-
- return TRUE;
-}
-
-
-/*
- * Do any engine-specific appliation-activation processing
- */
-
-static Bool
-winActivateAppShadowGDI (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- /*
- * 2004/04/12 - Harold - We perform the restoring or minimizing
- * manually for ShadowGDI in fullscreen modes so that this engine
- * will perform just like ShadowDD and ShadowDDNL in fullscreen mode;
- * if we do not do this then our fullscreen window will appear in the
- * z-order when it is deactivated and it can be uncovered by resizing
- * or minimizing another window that is on top of it, which is not how
- * the DirectDraw engines work. Therefore we keep this code here to
- * make sure that all engines work the same in fullscreen mode.
- */
-
- /*
- * Are we active?
- * Are we fullscreen?
- */
- if (pScreenPriv->fActive
- && pScreenInfo->fFullScreen)
- {
- /*
- * Activating, attempt to bring our window
- * to the top of the display
- */
- ShowWindow (pScreenPriv->hwndScreen, SW_RESTORE);
- }
- else if (!pScreenPriv->fActive
- && pScreenInfo->fFullScreen)
- {
- /*
- * Deactivating, stuff our window onto the
- * task bar.
- */
- ShowWindow (pScreenPriv->hwndScreen, SW_MINIMIZE);
- }
-
- return TRUE;
-}
-
-
-/*
- * Reblit the shadow framebuffer to the screen.
- */
-
-static Bool
-winRedrawScreenShadowGDI (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- /* Redraw the whole window, to take account for the new colors */
- BitBlt (pScreenPriv->hdcScreen,
- 0, 0,
- pScreenInfo->dwWidth, pScreenInfo->dwHeight,
- pScreenPriv->hdcShadow,
- 0, 0,
- SRCCOPY);
-
-#ifdef XWIN_MULTIWINDOW
- /* Redraw all windows */
- if (pScreenInfo->fMultiWindow)
- EnumThreadWindows(g_dwCurrentThreadID, winRedrawAllProcShadowGDI, 0);
-#endif
-
- return TRUE;
-}
-
-
-
-/*
- * Realize the currently installed colormap
- */
-
-static Bool
-winRealizeInstalledPaletteShadowGDI (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winPrivCmapPtr pCmapPriv = NULL;
-
-#if CYGDEBUG
- winDebug ("winRealizeInstalledPaletteShadowGDI\n");
-#endif
-
- /* Don't do anything if there is not a colormap */
- if (pScreenPriv->pcmapInstalled == NULL)
- {
-#if CYGDEBUG
- winDebug ("winRealizeInstalledPaletteShadowGDI - No colormap "
- "installed\n");
-#endif
- return TRUE;
- }
-
- pCmapPriv = winGetCmapPriv (pScreenPriv->pcmapInstalled);
-
- /* Realize our palette for the screen */
- if (RealizePalette (pScreenPriv->hdcScreen) == GDI_ERROR)
- {
- ErrorF ("winRealizeInstalledPaletteShadowGDI - RealizePalette () "
- "failed\n");
- return FALSE;
- }
-
- /* Set the DIB color table */
- if (SetDIBColorTable (pScreenPriv->hdcShadow,
- 0,
- WIN_NUM_PALETTE_ENTRIES,
- pCmapPriv->rgbColors) == 0)
- {
- ErrorF ("winRealizeInstalledPaletteShadowGDI - SetDIBColorTable () "
- "failed\n");
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/*
- * Install the specified colormap
- */
-
-static Bool
-winInstallColormapShadowGDI (ColormapPtr pColormap)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- winCmapPriv(pColormap);
-
- /*
- * Tell Windows to install the new colormap
- */
- if (SelectPalette (pScreenPriv->hdcScreen,
- pCmapPriv->hPalette,
- FALSE) == NULL)
- {
- ErrorF ("winInstallColormapShadowGDI - SelectPalette () failed\n");
- return FALSE;
- }
-
- /* Realize the palette */
- if (GDI_ERROR == RealizePalette (pScreenPriv->hdcScreen))
- {
- ErrorF ("winInstallColormapShadowGDI - RealizePalette () failed\n");
- return FALSE;
- }
-
- /* Set the DIB color table */
- if (SetDIBColorTable (pScreenPriv->hdcShadow,
- 0,
- WIN_NUM_PALETTE_ENTRIES,
- pCmapPriv->rgbColors) == 0)
- {
- ErrorF ("winInstallColormapShadowGDI - SetDIBColorTable () failed\n");
- return FALSE;
- }
-
- /* Redraw the whole window, to take account for the new colors */
- BitBlt (pScreenPriv->hdcScreen,
- 0, 0,
- pScreenInfo->dwWidth, pScreenInfo->dwHeight,
- pScreenPriv->hdcShadow,
- 0, 0,
- SRCCOPY);
-
- /* Save a pointer to the newly installed colormap */
- pScreenPriv->pcmapInstalled = pColormap;
-
-#ifdef XWIN_MULTIWINDOW
- /* Redraw all windows */
- if (pScreenInfo->fMultiWindow)
- EnumThreadWindows (g_dwCurrentThreadID, winRedrawAllProcShadowGDI, 0);
-#endif
-
- return TRUE;
-}
-
-
-/*
- * Store the specified colors in the specified colormap
- */
-
-static Bool
-winStoreColorsShadowGDI (ColormapPtr pColormap,
- int ndef,
- xColorItem *pdefs)
-{
- ScreenPtr pScreen = pColormap->pScreen;
- winScreenPriv(pScreen);
- winCmapPriv(pColormap);
- ColormapPtr curpmap = pScreenPriv->pcmapInstalled;
-
- /* Put the X colormap entries into the Windows logical palette */
- if (SetPaletteEntries (pCmapPriv->hPalette,
- pdefs[0].pixel,
- ndef,
- pCmapPriv->peColors + pdefs[0].pixel) == 0)
- {
- ErrorF ("winStoreColorsShadowGDI - SetPaletteEntries () failed\n");
- return FALSE;
- }
-
- /* Don't install the Windows palette if the colormap is not installed */
- if (pColormap != curpmap)
- {
- return TRUE;
- }
-
- /* Try to install the newly modified colormap */
- if (!winInstallColormapShadowGDI (pColormap))
- {
- ErrorF ("winInstallColormapShadowGDI - winInstallColormapShadowGDI "
- "failed\n");
- return FALSE;
- }
-
-#if 0
- /* Tell Windows that the palette has changed */
- RealizePalette (pScreenPriv->hdcScreen);
-
- /* Set the DIB color table */
- if (SetDIBColorTable (pScreenPriv->hdcShadow,
- pdefs[0].pixel,
- ndef,
- pCmapPriv->rgbColors + pdefs[0].pixel) == 0)
- {
- ErrorF ("winInstallColormapShadowGDI - SetDIBColorTable () failed\n");
- return FALSE;
- }
-
- /* Save a pointer to the newly installed colormap */
- pScreenPriv->pcmapInstalled = pColormap;
-#endif
-
- return TRUE;
-}
-
-
-/*
- * Colormap initialization procedure
- */
-
-static Bool
-winCreateColormapShadowGDI (ColormapPtr pColormap)
-{
- LPLOGPALETTE lpPaletteNew = NULL;
- DWORD dwEntriesMax;
- VisualPtr pVisual;
- HPALETTE hpalNew = NULL;
- winCmapPriv(pColormap);
-
- /* Get a pointer to the visual that the colormap belongs to */
- pVisual = pColormap->pVisual;
-
- /* Get the maximum number of palette entries for this visual */
- dwEntriesMax = pVisual->ColormapEntries;
-
- /* Allocate a Windows logical color palette with max entries */
- lpPaletteNew = malloc (sizeof (LOGPALETTE)
- + (dwEntriesMax - 1) * sizeof (PALETTEENTRY));
- if (lpPaletteNew == NULL)
- {
- ErrorF ("winCreateColormapShadowGDI - Couldn't allocate palette "
- "with %d entries\n",
- (int) dwEntriesMax);
- return FALSE;
- }
-
- /* Zero out the colormap */
- ZeroMemory (lpPaletteNew, sizeof (LOGPALETTE)
- + (dwEntriesMax - 1) * sizeof (PALETTEENTRY));
-
- /* Set the logical palette structure */
- lpPaletteNew->palVersion = 0x0300;
- lpPaletteNew->palNumEntries = dwEntriesMax;
-
- /* Tell Windows to create the palette */
- hpalNew = CreatePalette (lpPaletteNew);
- if (hpalNew == NULL)
- {
- ErrorF ("winCreateColormapShadowGDI - CreatePalette () failed\n");
- free (lpPaletteNew);
- return FALSE;
- }
-
- /* Save the Windows logical palette handle in the X colormaps' privates */
- pCmapPriv->hPalette = hpalNew;
-
- /* Free the palette initialization memory */
- free (lpPaletteNew);
-
- return TRUE;
-}
-
-
-/*
- * Colormap destruction procedure
- */
-
-static Bool
-winDestroyColormapShadowGDI (ColormapPtr pColormap)
-{
- winScreenPriv(pColormap->pScreen);
- winCmapPriv(pColormap);
-
- /*
- * Is colormap to be destroyed the default?
- *
- * Non-default colormaps should have had winUninstallColormap
- * called on them before we get here. The default colormap
- * will not have had winUninstallColormap called on it. Thus,
- * we need to handle the default colormap in a special way.
- */
- if (pColormap->flags & IsDefault)
- {
-#if CYGDEBUG
- winDebug ("winDestroyColormapShadowGDI - Destroying default "
- "colormap\n");
-#endif
-
- /*
- * FIXME: Walk the list of all screens, popping the default
- * palette out of each screen device context.
- */
-
- /* Pop the palette out of the device context */
- SelectPalette (pScreenPriv->hdcScreen,
- GetStockObject (DEFAULT_PALETTE),
- FALSE);
-
- /* Clear our private installed colormap pointer */
- pScreenPriv->pcmapInstalled = NULL;
- }
-
- /* Try to delete the logical palette */
- if (DeleteObject (pCmapPriv->hPalette) == 0)
- {
- ErrorF ("winDestroyColormap - DeleteObject () failed\n");
- return FALSE;
- }
-
- /* Invalidate the colormap privates */
- pCmapPriv->hPalette = NULL;
-
- return TRUE;
-}
-
-
-/*
- * Set engine specific funtions
- */
-
-Bool
-winSetEngineFunctionsShadowGDI (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- /* Set our pointers */
- pScreenPriv->pwinAllocateFB = winAllocateFBShadowGDI;
- pScreenPriv->pwinShadowUpdate = winShadowUpdateGDI;
- pScreenPriv->pwinCloseScreen = winCloseScreenShadowGDI;
- pScreenPriv->pwinInitVisuals = winInitVisualsShadowGDI;
- pScreenPriv->pwinAdjustVideoMode = winAdjustVideoModeShadowGDI;
- if (pScreenInfo->fFullScreen)
- pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowFullScreen;
- else
- pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowWindowed;
- pScreenPriv->pwinFinishScreenInit = winFinishScreenInitFB;
- pScreenPriv->pwinBltExposedRegions = winBltExposedRegionsShadowGDI;
- pScreenPriv->pwinActivateApp = winActivateAppShadowGDI;
- pScreenPriv->pwinRedrawScreen = winRedrawScreenShadowGDI;
- pScreenPriv->pwinRealizeInstalledPalette =
- winRealizeInstalledPaletteShadowGDI;
- pScreenPriv->pwinInstallColormap = winInstallColormapShadowGDI;
- pScreenPriv->pwinStoreColors = winStoreColorsShadowGDI;
- pScreenPriv->pwinCreateColormap = winCreateColormapShadowGDI;
- pScreenPriv->pwinDestroyColormap = winDestroyColormapShadowGDI;
- pScreenPriv->pwinHotKeyAltTab = (winHotKeyAltTabProcPtr) (void (*)(void))NoopDDA;
- pScreenPriv->pwinCreatePrimarySurface
- = (winCreatePrimarySurfaceProcPtr) (void (*)(void))NoopDDA;
- pScreenPriv->pwinReleasePrimarySurface
- = (winReleasePrimarySurfaceProcPtr) (void (*)(void))NoopDDA;
-#ifdef XWIN_MULTIWINDOW
- pScreenPriv->pwinFinishCreateWindowsWindow =
- (winFinishCreateWindowsWindowProcPtr) (void (*)(void))NoopDDA;
-#endif
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/wintrayicon.c b/nx-X11/programs/Xserver/hw/xwin/wintrayicon.c
deleted file mode 100755
index bf7305c9c..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/wintrayicon.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Early Ehlinger
- * Harold L Hunt II
- */
-/* $XFree86: $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include <shellapi.h>
-#include "winprefs.h"
-
-/*
- * Initialize the tray icon
- */
-
-void
-winInitNotifyIcon (winPrivScreenPtr pScreenPriv)
-{
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- NOTIFYICONDATA nid = {0};
-
- nid.cbSize = sizeof (NOTIFYICONDATA);
- nid.hWnd = pScreenPriv->hwndScreen;
- nid.uID = pScreenInfo->dwScreen;
- nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
- nid.uCallbackMessage = WM_TRAYICON;
- nid.hIcon = (HICON)winTaskbarIcon ();
-
- /* Save handle to the icon so it can be freed later */
- pScreenPriv->hiconNotifyIcon = nid.hIcon;
-
- /* Set display and screen-specific tooltip text */
- snprintf (nid.szTip,
- sizeof (nid.szTip),
- PROJECT_NAME " Server - %s:%d",
- display,
- (int) pScreenInfo->dwScreen);
-
- /* Add the tray icon */
- if (!Shell_NotifyIcon (NIM_ADD, &nid))
- ErrorF ("winInitNotifyIcon - Shell_NotifyIcon Failed\n");
-}
-
-
-/*
- * Delete the tray icon
- */
-
-void
-winDeleteNotifyIcon (winPrivScreenPtr pScreenPriv)
-{
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- NOTIFYICONDATA nid = {0};
-
-#if 0
- ErrorF ("winDeleteNotifyIcon\n");
-#endif
-
- nid.cbSize = sizeof (NOTIFYICONDATA);
- nid.hWnd = pScreenPriv->hwndScreen;
- nid.uID = pScreenInfo->dwScreen;
-
- /* Delete the tray icon */
- if (!Shell_NotifyIcon (NIM_DELETE, &nid))
- {
- ErrorF ("winDeleteNotifyIcon - Shell_NotifyIcon failed\n");
- return;
- }
-
- /* Free the icon that was loaded */
- if (pScreenPriv->hiconNotifyIcon != NULL
- && DestroyIcon (pScreenPriv->hiconNotifyIcon) == 0)
- {
- ErrorF ("winDeleteNotifyIcon - DestroyIcon failed\n");
- }
- pScreenPriv->hiconNotifyIcon = NULL;
-}
-
-
-/*
- * Process messages intended for the tray icon
- */
-
-LRESULT
-winHandleIconMessage (HWND hwnd, UINT message,
- WPARAM wParam, LPARAM lParam,
- winPrivScreenPtr pScreenPriv)
-{
-#if defined(XWIN_MULTIWINDOWEXTWM) || defined(XWIN_MULTIWINDOW)
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-#endif
-
- switch (lParam)
- {
- case WM_LBUTTONUP:
- /* Restack and bring all windows to top */
- SetForegroundWindow (hwnd);
-
-#ifdef XWIN_MULTIWINDOWEXTWM
- if (pScreenInfo->fMWExtWM)
- winMWExtWMRestackWindows (pScreenInfo->pScreen);
-#endif
- break;
-
- case WM_LBUTTONDBLCLK:
- /* Display Exit dialog box */
- winDisplayExitDialog (pScreenPriv);
- break;
-
- case WM_RBUTTONUP:
- {
- POINT ptCursor;
- HMENU hmenuPopup;
- HMENU hmenuTray;
-
- /* Get cursor position */
- GetCursorPos (&ptCursor);
-
- /* Load tray icon menu resource */
- hmenuPopup = LoadMenu (g_hInstance,
- MAKEINTRESOURCE(IDM_TRAYICON_MENU));
- if (!hmenuPopup)
- ErrorF ("winHandleIconMessage - LoadMenu failed\n");
-
- /* Get actual tray icon menu */
- hmenuTray = GetSubMenu (hmenuPopup, 0);
-
-#ifdef XWIN_MULTIWINDOW
- /* Check for MultiWindow mode */
- if (pScreenInfo->fMultiWindow)
- {
- MENUITEMINFO mii = {0};
-
- /* Root is shown, remove the check box */
-
- /* Setup menu item info structure */
- mii.cbSize = sizeof (MENUITEMINFO);
- mii.fMask = MIIM_STATE;
- mii.fState = MFS_CHECKED;
-
- /* Unheck box if root is shown */
- if (pScreenPriv->fRootWindowShown)
- mii.fState = MFS_UNCHECKED;
-
- /* Set menu state */
- SetMenuItemInfo (hmenuTray, ID_APP_HIDE_ROOT, FALSE, &mii);
- }
- else
-#endif
- {
- /* Remove Hide Root Window button */
- RemoveMenu (hmenuTray,
- ID_APP_HIDE_ROOT,
- MF_BYCOMMAND);
- }
-
- SetupRootMenu ((unsigned long)hmenuTray);
-
- /*
- * NOTE: This three-step procedure is required for
- * proper popup menu operation. Without the
- * call to SetForegroundWindow the
- * popup menu will often not disappear when you click
- * outside of it. Without the PostMessage the second
- * time you display the popup menu it might immediately
- * disappear.
- */
- SetForegroundWindow (hwnd);
- TrackPopupMenuEx (hmenuTray,
- TPM_LEFTALIGN | TPM_BOTTOMALIGN | TPM_RIGHTBUTTON,
- ptCursor.x, ptCursor.y,
- hwnd,
- NULL);
- PostMessage (hwnd, WM_NULL, 0, 0);
-
- /* Free menu */
- DestroyMenu (hmenuPopup);
- }
- break;
- }
-
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winvalargs.c b/nx-X11/programs/Xserver/hw/xwin/winvalargs.c
deleted file mode 100755
index 038e097a5..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winvalargs.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "winmsg.h"
-
-
-/*
- * References to external symbols
- */
-
-extern int g_iNumScreens;
-extern winScreenInfo g_ScreenInfo[];
-extern Bool g_fXdmcpEnabled;
-
-
-/*
- * Prototypes
- */
-
-Bool
-winValidateArgs (void);
-
-
-/*
- * winValidateArgs - Look for invalid argument combinations
- */
-
-Bool
-winValidateArgs (void)
-{
- int i;
- int iMaxConsecutiveScreen = 0;
- BOOL fHasNormalScreen0 = FALSE;
-
- /*
- * Check for a malformed set of -screen parameters.
- * Examples of malformed parameters:
- * XWin -screen 1
- * XWin -screen 0 -screen 2
- * XWin -screen 1 -screen 2
- */
- for (i = 0; i < MAXSCREENS; i++)
- {
- if (g_ScreenInfo[i].fExplicitScreen)
- iMaxConsecutiveScreen = i + 1;
- }
- winErrorFVerb (2, "winValidateArgs - g_iNumScreens: %d "
- "iMaxConsecutiveScreen: %d\n",
- g_iNumScreens, iMaxConsecutiveScreen);
- if (g_iNumScreens < iMaxConsecutiveScreen)
- {
- ErrorF ("winValidateArgs - Malformed set of screen parameter(s). "
- "Screens must be specified consecutively starting with "
- "screen 0. That is, you cannot have only a screen 1, nor "
- "could you have screen 0 and screen 2. You instead must "
- "have screen 0, or screen 0 and screen 1, respectively. Of "
- "you can specify as many screens as you want from 0 up to "
- "%d.\n", MAXSCREENS - 1);
- return FALSE;
- }
-
- /* Loop through all screens */
- for (i = 0; i < g_iNumScreens; ++i)
- {
- /*
- * Check for any combination of
- * -multiwindow, -mwextwm, and -rootless.
- */
- {
- int iCount = 0;
-
- /* Count conflicting options */
-#ifdef XWIN_MULTIWINDOW
- if (g_ScreenInfo[i].fMultiWindow)
- ++iCount;
-#endif
-#ifdef XWIN_MULTIWINDOWEXTWM
- if (g_ScreenInfo[i].fMWExtWM)
- ++iCount;
-#endif
- if (g_ScreenInfo[i].fRootless)
- ++iCount;
-
- /* Check if the first screen is without rootless and multiwindow */
- if (iCount == 0 && i == 0)
- fHasNormalScreen0 = TRUE;
-
- /* Fail if two or more conflicting options */
- if (iCount > 1)
- {
- ErrorF ("winValidateArgs - Only one of -multiwindow, -mwextwm, "
- "and -rootless can be specific at a time.\n");
- return FALSE;
- }
- }
-
- /* Check for -multiwindow or -mwextwm and Xdmcp */
- /* allow xdmcp if screen 0 is normal. */
- if (g_fXdmcpEnabled && !fHasNormalScreen0
- && (FALSE
-#ifdef XWIN_MULTIWINDOW
- || g_ScreenInfo[i].fMultiWindow
-#endif
-#ifdef XWIN_MULTIWINDOWEXTWM
- || g_ScreenInfo[i].fMWExtWM
-#endif
- )
- )
- {
- ErrorF ("winValidateArgs - Xdmcp (-query, -broadcast, or -indirect) "
- "is invalid with -multiwindow or -mwextwm.\n");
- return FALSE;
- }
-
- /* Check for -multiwindow, -mwextwm, or -rootless and fullscreen */
- if (g_ScreenInfo[i].fFullScreen
- && (FALSE
-#ifdef XWIN_MULTIWINDOW
- || g_ScreenInfo[i].fMultiWindow
-#endif
-#ifdef XWIN_MULTIWINDOWEXTWM
- || g_ScreenInfo[i].fMWExtWM
-#endif
- || g_ScreenInfo[i].fRootless)
- )
- {
- ErrorF ("winValidateArgs - -fullscreen is invalid with "
- "-multiwindow, -mwextwm, or -rootless.\n");
- return FALSE;
- }
-
- /* Check for !fullscreen and any fullscreen-only parameters */
- if (!g_ScreenInfo[i].fFullScreen
- && (g_ScreenInfo[i].dwRefreshRate != WIN_DEFAULT_BPP
- || g_ScreenInfo[i].dwBPP != WIN_DEFAULT_REFRESH))
- {
- ErrorF ("winValidateArgs - -refresh and -depth are only valid "
- "with -fullscreen.\n");
- return FALSE;
- }
-
- /* Check for fullscreen and any non-fullscreen parameters */
- if (g_ScreenInfo[i].fFullScreen
- && (g_ScreenInfo[i].fScrollbars
- || !g_ScreenInfo[i].fDecoration
- || g_ScreenInfo[i].fLessPointer))
- {
- ErrorF ("winValidateArgs - -fullscreen is invalid with "
- "-scrollbars, -nodecoration, or -lesspointer.\n");
- return FALSE;
- }
- }
-
- winDebug ("winValidateArgs - Returning.\n");
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winvideo.c b/nx-X11/programs/Xserver/hw/xwin/winvideo.c
deleted file mode 100755
index 529ca76d3..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winvideo.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- *Copyright (C) 2003-2004 Harold L Hunt II 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 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 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 HAROLD L HUNT II 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 Harold L Hunt II
- *shall not be used in advertising or otherwise to promote the sale, use
- *or other dealings in this Software without prior written authorization
- *from Harold L Hunt II.
- *
- * Authors: Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include <X11/extensions/Xv.h>
-#include <X11/extensions/Xvproto.h>
-
-void
-winInitVideo (ScreenPtr pScreen);
-
-/*
- * winInitVideo - Initialize support for the X Video (Xv) Extension.
- */
-
-void
-winInitVideo (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
-
- if (pScreenInfo->dwBPP > 8)
- {
-
- }
-
-
-}
-
-
-
-
-
-
-
-#if 0
-#include "../xfree86/common/xf86.h"
-#include "../Xext/xvdix.h"
-#include "../xfree86/common/xf86xv.h"
-#include <X11/extensions/Xv.h>
-#endif
-
-#include "win.h"
-
-
-
-#if 0
-/* client libraries expect an encoding */
-static XF86VideoEncodingRec DummyEncoding[1] =
-{
- {
- 0,
- "XV_IMAGE",
- IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT,
- {1, 1}
- }
-};
-
-#define NUM_FORMATS 3
-
-static XF86VideoFormatRec Formats[NUM_FORMATS] =
-{
- {15, TrueColor}, {16, TrueColor}, {24, TrueColor}
-};
-
-#define NUM_ATTRIBUTES 3
-
-static XF86AttributeRec Attributes[NUM_ATTRIBUTES] =
-{
- {XvSettable | XvGettable, 0, (1 << 24) - 1, "XV_COLORKEY"},
- {XvSettable | XvGettable, -128, 127, "XV_BRIGHTNESS"},
- {XvSettable | XvGettable, 0, 255, "XV_CONTRAST"}
-};
-
-#define NUM_IMAGES 4
-
-static XF86ImageRec Images[NUM_IMAGES] =
-{
- XVIMAGE_YUY2,
- XVIMAGE_YV12,
- XVIMAGE_I420,
- XVIMAGE_UYVY
-};
-
-
-
-/*
- * winInitVideo - Initialize support for the X Video (Xv) Extension.
- */
-
-void
-winInitVideo (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
- XF86VideoAdaptorPtr newAdaptor = NULL;
-
- if (pScreenInfo->dwBPP > 8)
- {
- newAdaptor = I810SetupImageVideo (pScreen);
- I810InitOffscreenImages (pScreen);
- }
-
- xf86XVScreenInit (pScreen, adaptors, 1);
-}
-
-
-static XF86VideoAdaptorPtr
-winSetupImageVideo (ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
-#if 0
- I810Ptr pI810 = I810PTR(pScrn);
-#endif
- XF86VideoAdaptorPtr adapt;
-
- if (!(adapt = xcalloc (1, sizeof(XF86VideoAdaptorRec))))
- return NULL;
-
- adapt->type = XvWindowMask | XvInputMask | XvImageMask;
- adapt->flags = VIDEO_OVERLAID_IMAGES | VIDEO_CLIP_TO_VIEWPORT;
- adapt->name = PROJECT_NAME " Video Overlay";
- adapt->nEncodings = 1;
- adapt->pEncodings = DummyEncoding;
- adapt->nFormats = NUM_FORMATS;
- adapt->pFormats = Formats;
- adapt->nPorts = 1;
- adapt->pPortPrivates = NULL;
-
- adapt->pPortPrivates[0].ptr = NULL;
- adapt->pAttributes = Attributes;
- adapt->nImages = NUM_IMAGES;
- adapt->nAttributes = NUM_ATTRIBUTES;
- adapt->pImages = Images;
- adapt->PutVideo = NULL;
- adapt->PutStill = NULL;
- adapt->GetVideo = NULL;
- adapt->GetStill = NULL;
-#if 0
- adapt->StopVideo = I810StopVideo;
- adapt->SetPortAttribute = I810SetPortAttribute;
- adapt->GetPortAttribute = I810GetPortAttribute;
- adapt->QueryBestSize = I810QueryBestSize;
- adapt->PutImage = I810PutImage;
- adapt->QueryImageAttributes = I810QueryImageAttributes;
-#endif
-
-#if 0
- pPriv->colorKey = pI810->colorKey & ((1 << pScrn->depth) - 1);
-#endif
- pPriv->videoStatus = 0;
- pPriv->brightness = 0;
- pPriv->contrast = 64;
- pPriv->linear = NULL;
- pPriv->currentBuf = 0;
-
-#if 0
- /* gotta uninit this someplace */
- REGION_NULL(pScreen, &pPriv->clip);
-#endif
-
-#if 0
- pI810->adaptor = adapt;
-
- pI810->BlockHandler = pScreen->BlockHandler;
- pScreen->BlockHandler = I810BlockHandler;
-#endif
-
-#if 0
- xvBrightness = MAKE_ATOM("XV_BRIGHTNESS");
- xvContrast = MAKE_ATOM("XV_CONTRAST");
- xvColorKey = MAKE_ATOM("XV_COLORKEY");
-#endif
-
-#if 0
- I810ResetVideo(pScrn);
-#endif
-
- return adapt;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winwakeup.c b/nx-X11/programs/Xserver/hw/xwin/winwakeup.c
deleted file mode 100644
index c0200ab53..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winwakeup.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Dakshinamurthy Karra
- * Suhaib M Siddiqi
- * Peter Busch
- * Harold L Hunt II
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winwakeup.c,v 1.6 2002/10/17 08:18:25 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * References to external symbols
- */
-
-extern HWND g_hDlgDepthChange;
-extern HWND g_hDlgExit;
-extern HWND g_hDlgAbout;
-
-
-/* See Porting Layer Definition - p. 7 */
-void
-winWakeupHandler (int nScreen,
- pointer pWakeupData,
- unsigned long ulResult,
- pointer pReadmask)
-{
- MSG msg;
-
- /* Process all messages on our queue */
- while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
- {
- if ((g_hDlgDepthChange == 0
- || !IsDialogMessage (g_hDlgDepthChange, &msg))
- && (g_hDlgExit == 0
- || !IsDialogMessage (g_hDlgExit, &msg))
- && (g_hDlgAbout == 0
- || !IsDialogMessage (g_hDlgAbout, &msg)))
- {
- DispatchMessage (&msg);
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winwin32rootless.c b/nx-X11/programs/Xserver/hw/xwin/winwin32rootless.c
deleted file mode 100755
index 832e36d44..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winwin32rootless.c
+++ /dev/null
@@ -1,1092 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Kensuke Matsuzaki
- * Earle F. Philhower, III
- * Harold L Hunt II
- */
-/*
- * Look at hw/darwin/quartz/xpr/xprFrame.c and hw/darwin/quartz/cr/crFrame.c
- */
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include <winuser.h>
-#define _WINDOWSWM_SERVER_
-#include "windowswmstr.h"
-#include "dixevents.h"
-#include "winmultiwindowclass.h"
-#include "winprefs.h"
-#include <X11/Xatom.h>
-
-
-/*
- * Constant defines
- */
-
-#define MOUSE_POLLING_INTERVAL 500
-
-#define ULW_COLORKEY 0x00000001
-#define ULW_ALPHA 0x00000002
-#define ULW_OPAQUE 0x00000004
-#define AC_SRC_ALPHA 0x01
-
-/*
- * Local function
- */
-
-DEFINE_ATOM_HELPER(AtmWindowsWmNativeHwnd, WINDOWSWM_NATIVE_HWND)
-static void
-winMWExtWMSetNativeProperty (RootlessWindowPtr pFrame);
-
-/*
- * Global variables
- */
-
-Bool g_fNoConfigureWindow = FALSE;
-
-
-extern void winSelectIcons(WindowPtr pWin, HICON *pIcon, HICON *pSmallIcon);
-
-/*
- * Internal function to get the DIB format that is compatible with the screen
- * Fixme: Share code with winshadgdi.c
- */
-
-static
-Bool
-winMWExtWMQueryDIBFormat (win32RootlessWindowPtr pRLWinPriv, BITMAPINFOHEADER *pbmih)
-{
- HBITMAP hbmp;
-#if CYGMULTIWINDOW_DEBUG
- LPDWORD pdw = NULL;
-#endif
-
- /* Create a memory bitmap compatible with the screen */
- hbmp = CreateCompatibleBitmap (pRLWinPriv->hdcScreen, 1, 1);
- if (hbmp == NULL)
- {
- ErrorF ("winMWExtWMQueryDIBFormat - CreateCompatibleBitmap failed\n");
- return FALSE;
- }
-
- /* Initialize our bitmap info header */
- ZeroMemory (pbmih, sizeof (BITMAPINFOHEADER) + 256 * sizeof (RGBQUAD));
- pbmih->biSize = sizeof (BITMAPINFOHEADER);
-
- /* Get the biBitCount */
- if (!GetDIBits (pRLWinPriv->hdcScreen,
- hbmp,
- 0, 1,
- NULL,
- (BITMAPINFO*) pbmih,
- DIB_RGB_COLORS))
- {
- ErrorF ("winMWExtWMQueryDIBFormat - First call to GetDIBits failed\n");
- DeleteObject (hbmp);
- return FALSE;
- }
-
-#if CYGMULTIWINDOW_DEBUG
- /* Get a pointer to bitfields */
- pdw = (DWORD*) ((CARD8*)pbmih + sizeof (BITMAPINFOHEADER));
-
- winDebug ("winMWExtWMQueryDIBFormat - First call masks: %08x %08x %08x\n",
- (unsigned int)pdw[0], (unsigned int)pdw[1], (unsigned int)pdw[2]);
-#endif
-
- /* Get optimal color table, or the optimal bitfields */
- if (!GetDIBits (pRLWinPriv->hdcScreen,
- hbmp,
- 0, 1,
- NULL,
- (BITMAPINFO*)pbmih,
- DIB_RGB_COLORS))
- {
- ErrorF ("winMWExtWMQueryDIBFormat - Second call to GetDIBits "
- "failed\n");
- DeleteObject (hbmp);
- return FALSE;
- }
-
- /* Free memory */
- DeleteObject (hbmp);
-
- return TRUE;
-}
-
-static HRGN
-winMWExtWMCreateRgnFromRegion (RegionPtr pShape)
-{
- int nRects;
- BoxPtr pRects, pEnd;
- HRGN hRgn, hRgnRect;
-
- if (pShape == NULL) return NULL;
-
- nRects = REGION_NUM_RECTS(pShape);
- pRects = REGION_RECTS(pShape);
-
- hRgn = CreateRectRgn (0, 0, 0, 0);
- if (hRgn == NULL)
- {
- ErrorF ("winReshape - Initial CreateRectRgn (%d, %d, %d, %d) "
- "failed: %d\n",
- 0, 0, 0, 0, (int) GetLastError ());
- }
-
- /* Loop through all rectangles in the X region */
- for (pEnd = pRects + nRects; pRects < pEnd; pRects++)
- {
- /* Create a Windows region for the X rectangle */
- hRgnRect = CreateRectRgn (pRects->x1,
- pRects->y1,
- pRects->x2,
- pRects->y2);
- if (hRgnRect == NULL)
- {
- ErrorF ("winReshape - Loop CreateRectRgn (%d, %d, %d, %d) "
- "failed: %d\n",
- pRects->x1,
- pRects->y1,
- pRects->x2,
- pRects->y2,
- (int) GetLastError ());
- }
-
- /* Merge the Windows region with the accumulated region */
- if (CombineRgn (hRgn, hRgn, hRgnRect, RGN_OR) == ERROR)
- {
- ErrorF ("winReshape - CombineRgn () failed: %d\n",
- (int) GetLastError ());
- }
-
- /* Delete the temporary Windows region */
- DeleteObject (hRgnRect);
- }
-
- return hRgn;
-}
-
-static void
-InitWin32RootlessEngine (win32RootlessWindowPtr pRLWinPriv)
-{
- pRLWinPriv->hdcScreen = GetDC (pRLWinPriv->hWnd);
- pRLWinPriv->hdcShadow = CreateCompatibleDC (pRLWinPriv->hdcScreen);
- pRLWinPriv->hbmpShadow = NULL;
-
- /* Allocate bitmap info header */
- pRLWinPriv->pbmihShadow = (BITMAPINFOHEADER*) malloc (sizeof (BITMAPINFOHEADER)
- + 256 * sizeof (RGBQUAD));
- if (pRLWinPriv->pbmihShadow == NULL)
- {
- ErrorF ("InitWin32RootlessEngine - malloc () failed\n");
- return;
- }
-
- /* Query the screen format */
- winMWExtWMQueryDIBFormat (pRLWinPriv,
- pRLWinPriv->pbmihShadow);
-}
-
-Bool
-winMWExtWMCreateFrame (RootlessWindowPtr pFrame, ScreenPtr pScreen,
- int newX, int newY, RegionPtr pShape)
-{
-#define CLASS_NAME_LENGTH 512
- Bool fResult = TRUE;
- win32RootlessWindowPtr pRLWinPriv;
- WNDCLASSEX wc;
- char pszClass[CLASS_NAME_LENGTH], pszWindowID[12];
- HICON hIcon;
- HICON hIconSmall;
- char *res_name, *res_class, *res_role;
- static int s_iWindowID = 0;
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMCreateFrame %d %d - %d %d\n",
- newX, newY, pFrame->width, pFrame->height);
-#endif
-
- pRLWinPriv = (win32RootlessWindowPtr) malloc (sizeof (win32RootlessWindowRec));
- pRLWinPriv->pFrame = pFrame;
- pRLWinPriv->pfb = NULL;
- pRLWinPriv->hbmpShadow = NULL;
- pRLWinPriv->hdcShadow = NULL;
- pRLWinPriv->hdcScreen = NULL;
- pRLWinPriv->pbmihShadow = NULL;
- pRLWinPriv->fResized = TRUE;
- pRLWinPriv->fClose = FALSE;
- pRLWinPriv->fRestackingNow = FALSE;
- pRLWinPriv->fDestroyed = FALSE;
- pRLWinPriv->fMovingOrSizing = FALSE;
-
- // Store the implementation private frame ID
- pFrame->wid = (RootlessFrameID) pRLWinPriv;
-
- winSelectIcons(pFrame->win, &hIcon, &hIconSmall);
-
- /* Set standard class name prefix so we can identify window easily */
- strncpy (pszClass, WINDOW_CLASS_X, sizeof(pszClass));
-
- if (winMultiWindowGetClassHint (pFrame->win, &res_name, &res_class))
- {
- strncat (pszClass, "-", 1);
- strncat (pszClass, res_name, CLASS_NAME_LENGTH - strlen (pszClass));
- strncat (pszClass, "-", 1);
- strncat (pszClass, res_class, CLASS_NAME_LENGTH - strlen (pszClass));
-
- /* Check if a window class is provided by the WM_WINDOW_ROLE property,
- * if not use the WM_CLASS information.
- * For further information see:
- * http://tronche.com/gui/x/icccm/sec-5.html
- */
- if (winMultiWindowGetWindowRole (pFrame->win, &res_role) )
- {
- strcat (pszClass, "-");
- strcat (pszClass, res_role);
- free (res_role);
- }
-
- free (res_name);
- free (res_class);
- }
-
- /* Add incrementing window ID to make unique class name */
- snprintf (pszWindowID, sizeof(pszWindowID), "-%x", s_iWindowID++);
- pszWindowID[sizeof(pszWindowID)-1] = 0;
- strcat (pszClass, pszWindowID);
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winCreateWindowsWindow - Creating class: %s\n", pszClass);
-#endif
-
- /* Setup our window class */
- wc.cbSize = sizeof(wc);
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = winMWExtWMWindowProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = g_hInstance;
- wc.hIcon = hIcon;
- wc.hIconSm = hIconSmall;
- wc.hCursor = 0;
- wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = pszClass;
- RegisterClassEx (&wc);
-
- /* Create the window */
- g_fNoConfigureWindow = TRUE;
- pRLWinPriv->hWnd = CreateWindowExA (WS_EX_TOOLWINDOW, /* Extended styles */
- pszClass, /* Class name */
- WINDOW_TITLE_X, /* Window name */
- WS_POPUP | WS_CLIPCHILDREN,
- newX, /* Horizontal position */
- newY, /* Vertical position */
- pFrame->width, /* Right edge */
- pFrame->height, /* Bottom edge */
- (HWND) NULL, /* No parent or owner window */
- (HMENU) NULL, /* No menu */
- GetModuleHandle (NULL), /* Instance handle */
- pRLWinPriv); /* ScreenPrivates */
- if (pRLWinPriv->hWnd == NULL)
- {
- ErrorF ("winMWExtWMCreateFrame - CreateWindowExA () failed: %d\n",
- (int) GetLastError ());
- fResult = FALSE;
- }
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMCreateFrame - ShowWindow\n");
-#endif
-
- //ShowWindow (pRLWinPriv->hWnd, SW_SHOWNOACTIVATE);
- g_fNoConfigureWindow = FALSE;
-
- if (pShape != NULL)
- {
- winMWExtWMReshapeFrame (pFrame->wid, pShape);
- }
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMCreateFrame - (%08x) %08x\n",
- (int) pFrame->wid, (int) pRLWinPriv->hWnd);
-#if 0
- {
- WindowPtr pWin2 = NULL;
- win32RootlessWindowPtr pRLWinPriv2 = NULL;
-
- /* Check if the Windows window property for our X window pointer is valid */
- if ((pWin2 = (WindowPtr)GetProp (pRLWinPriv->hWnd, WIN_WINDOW_PROP)) != NULL)
- {
- pRLWinPriv2 = (win32RootlessWindowPtr) RootlessFrameForWindow (pWin2, FALSE);
- }
- winDebug ("winMWExtWMCreateFrame2 (%08x) %08x\n",
- pRLWinPriv2, pRLWinPriv2->hWnd);
- if (pRLWinPriv != pRLWinPriv2 || pRLWinPriv->hWnd != pRLWinPriv2->hWnd)
- {
- winDebug ("Error param missmatch\n");
- }
- }
-#endif
-#endif
-
- winMWExtWMSetNativeProperty (pFrame);
-
- return fResult;
-}
-
-void
-winMWExtWMDestroyFrame (RootlessFrameID wid)
-{
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid;
- HICON hiconClass;
- HICON hiconSmClass;
- HMODULE hInstance;
- int iReturn;
- char pszClass[CLASS_NAME_LENGTH];
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMDestroyFrame (%08x) %08x\n",
- (int) pRLWinPriv, (int) pRLWinPriv->hWnd);
-#if 0
- {
- WindowPtr pWin2 = NULL;
- win32RootlessWindowPtr pRLWinPriv2 = NULL;
-
- /* Check if the Windows window property for our X window pointer is valid */
- if ((pWin2 = (WindowPtr)GetProp (pRLWinPriv->hWnd, WIN_WINDOW_PROP)) != NULL)
- {
- pRLWinPriv2 = (win32RootlessWindowPtr) RootlessFrameForWindow (pWin2, FALSE);
- }
- winDebug ("winMWExtWMDestroyFrame2 (%08x) %08x\n",
- pRLWinPriv2, pRLWinPriv2->hWnd);
- if (pRLWinPriv != pRLWinPriv2 || pRLWinPriv->hWnd != pRLWinPriv2->hWnd)
- {
- winDebug ("Error param missmatch\n");
- *(int*)0 = 1;//raise exseption
- }
- }
-#endif
-#endif
-
- /* Store the info we need to destroy after this window is gone */
- hInstance = (HINSTANCE) GetClassLong (pRLWinPriv->hWnd, GCL_HMODULE);
- hiconClass = (HICON) GetClassLong (pRLWinPriv->hWnd, GCL_HICON);
- hiconSmClass = (HICON) GetClassLong (pRLWinPriv->hWnd, GCL_HICONSM);
- iReturn = GetClassName (pRLWinPriv->hWnd, pszClass, CLASS_NAME_LENGTH);
-
- pRLWinPriv->fClose = TRUE;
- pRLWinPriv->fDestroyed = TRUE;
-
- /* Destroy the Windows window */
- DestroyWindow (pRLWinPriv->hWnd);
-
- /* Only if we were able to get the name */
- if (iReturn)
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMDestroyFrame - Unregistering %s: ", pszClass);
-#endif
- iReturn = UnregisterClass (pszClass, hInstance);
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMDestroyFramew - %d Deleting Icon: ", iReturn);
-#endif
-
- winDestroyIcon(hiconClass);
- winDestroyIcon(hiconSmClass);
- }
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMDestroyFrame - done\n");
-#endif
-}
-
-void
-winMWExtWMMoveFrame (RootlessFrameID wid, ScreenPtr pScreen, int iNewX, int iNewY)
-{
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid;
- RECT rcNew;
- DWORD dwExStyle;
- DWORD dwStyle;
- int iX, iY, iWidth, iHeight;
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMMoveFrame (%08x) (%d %d)\n", (int) pRLWinPriv, iNewX, iNewY);
-#endif
-
- /* Get the Windows window style and extended style */
- dwExStyle = GetWindowLongPtr (pRLWinPriv->hWnd, GWL_EXSTYLE);
- dwStyle = GetWindowLongPtr (pRLWinPriv->hWnd, GWL_STYLE);
-
- /* Get the X and Y location of the X window */
- iX = iNewX + GetSystemMetrics (SM_XVIRTUALSCREEN);
- iY = iNewY + GetSystemMetrics (SM_YVIRTUALSCREEN);
-
- /* Get the height and width of the X window */
- iWidth = pRLWinPriv->pFrame->width;
- iHeight = pRLWinPriv->pFrame->height;
-
- /* Store the origin, height, and width in a rectangle structure */
- SetRect (&rcNew, iX, iY, iX + iWidth, iY + iHeight);
-
-#ifdef CYGMULTIWINDOW_DEBUG
- winDebug("\tWindow {%d, %d, %d, %d}, {%d, %d}\n",
- rcNew.left, rcNew.top, rcNew.right, rcNew.bottom,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top);
-#endif
- /*
- * Calculate the required size of the Windows window rectangle,
- * given the size of the Windows window client area.
- */
- AdjustWindowRectEx (&rcNew, dwStyle, FALSE, dwExStyle);
-
-#ifdef CYGMULTIWINDOW_DEBUG
- winDebug("\tAdjusted {%d, %d, %d, %d}, {%d, %d}\n",
- rcNew.left, rcNew.top, rcNew.right, rcNew.bottom,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top);
-#endif
- g_fNoConfigureWindow = TRUE;
- SetWindowPos (pRLWinPriv->hWnd, NULL, rcNew.left, rcNew.top, 0, 0,
- SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER);
- g_fNoConfigureWindow = FALSE;
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMMoveFrame (%08x) done\n", (int) pRLWinPriv);
-#endif
-}
-
-void
-winMWExtWMResizeFrame (RootlessFrameID wid, ScreenPtr pScreen,
- int iNewX, int iNewY,
- unsigned int uiNewWidth, unsigned int uiNewHeight,
- unsigned int uiGravity)
-{
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid;
- RECT rcNew;
- RECT rcOld;
- DWORD dwExStyle;
- DWORD dwStyle;
- int iX, iY;
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMResizeFrame (%08x) (%d %d)-(%d %d)\n",
- (int) pRLWinPriv, iNewX, iNewY, uiNewWidth, uiNewHeight);
-#endif
-
- pRLWinPriv->fResized = TRUE;
-
- /* Get the Windows window style and extended style */
- dwExStyle = GetWindowLongPtr (pRLWinPriv->hWnd, GWL_EXSTYLE);
- dwStyle = GetWindowLongPtr (pRLWinPriv->hWnd, GWL_STYLE);
-
- /* Get the X and Y location of the X window */
- iX = iNewX + GetSystemMetrics (SM_XVIRTUALSCREEN);
- iY = iNewY + GetSystemMetrics (SM_YVIRTUALSCREEN);
-
- /* Store the origin, height, and width in a rectangle structure */
- SetRect (&rcNew, iX, iY, iX + uiNewWidth, iY + uiNewHeight);
-
- /*
- * Calculate the required size of the Windows window rectangle,
- * given the size of the Windows window client area.
- */
- AdjustWindowRectEx (&rcNew, dwStyle, FALSE, dwExStyle);
-
- /* Get a rectangle describing the old Windows window */
- GetWindowRect (pRLWinPriv->hWnd, &rcOld);
-
- /* Check if the old rectangle and new rectangle are the same */
- if (!EqualRect (&rcNew, &rcOld))
- {
-
- g_fNoConfigureWindow = TRUE;
- MoveWindow (pRLWinPriv->hWnd,
- rcNew.left, rcNew.top,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top,
- TRUE);
- g_fNoConfigureWindow = FALSE;
- }
-}
-
-void
-winMWExtWMRestackFrame (RootlessFrameID wid, RootlessFrameID nextWid)
-{
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid;
- win32RootlessWindowPtr pRLNextWinPriv = (win32RootlessWindowPtr) nextWid;
- winScreenPriv(pRLWinPriv->pFrame->win->drawable.pScreen);
- winScreenInfo *pScreenInfo = NULL;
- DWORD dwCurrentProcessID = GetCurrentProcessId ();
- DWORD dwWindowProcessID = 0;
- HWND hWnd;
- Bool fFirst = TRUE;
- Bool fNeedRestack = TRUE;
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMRestackFrame (%08x)\n", (int) pRLWinPriv);
-#endif
-
- if (pScreenPriv->fRestacking) return;
-
- if (pScreenPriv) pScreenInfo = pScreenPriv->pScreenInfo;
-
- pRLWinPriv->fRestackingNow = TRUE;
-
- /* Show window */
- if(!IsWindowVisible (pRLWinPriv->hWnd))
- ShowWindow (pRLWinPriv->hWnd, SW_SHOWNOACTIVATE);
-
- if (pRLNextWinPriv == NULL)
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("Win %08x is top\n", pRLWinPriv);
-#endif
- pScreenPriv->widTop = wid;
- SetWindowPos (pRLWinPriv->hWnd, HWND_TOP,
- 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
- }
- else if (winIsInternalWMRunning(pScreenInfo))
- {
- /* using mulwinidow wm */
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("Win %08x is not top\n", pRLWinPriv);
-#endif
- for (hWnd = GetNextWindow (pRLWinPriv->hWnd, GW_HWNDPREV);
- fNeedRestack && hWnd != NULL;
- hWnd = GetNextWindow (hWnd, GW_HWNDPREV))
- {
- GetWindowThreadProcessId (hWnd, &dwWindowProcessID);
-
- if ((dwWindowProcessID == dwCurrentProcessID)
- && GetProp (hWnd, WIN_WINDOW_PROP))
- {
- if (hWnd == pRLNextWinPriv->hWnd)
- {
- /* Enable interleave X window and Windows window */
- if (!fFirst)
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("raise: Insert after Win %08x\n", pRLNextWinPriv);
-#endif
- SetWindowPos (pRLWinPriv->hWnd, pRLNextWinPriv->hWnd,
- 0, 0, 0, 0,
- SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
- }
- else
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("No change\n");
-#endif
- }
- fNeedRestack = FALSE;
- break;
- }
- if (fFirst) fFirst = FALSE;
- }
- }
-
- for (hWnd = GetNextWindow (pRLWinPriv->hWnd, GW_HWNDNEXT);
- fNeedRestack && hWnd != NULL;
- hWnd = GetNextWindow (hWnd, GW_HWNDNEXT))
- {
- GetWindowThreadProcessId (hWnd, &dwWindowProcessID);
-
- if ((dwWindowProcessID == dwCurrentProcessID)
- && GetProp (hWnd, WIN_WINDOW_PROP))
- {
- if (hWnd == pRLNextWinPriv->hWnd)
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("lower: Insert after Win %08x\n", pRLNextWinPriv);
-#endif
- SetWindowPos (pRLWinPriv->hWnd, pRLNextWinPriv->hWnd,
- 0, 0, 0, 0,
- SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
- fNeedRestack = FALSE;
- break;
- }
- }
- }
- }
- else
- {
- /* using general wm like twm, wmaker etc.
- Interleave X window and Windows window will cause problem. */
- SetWindowPos (pRLWinPriv->hWnd, pRLNextWinPriv->hWnd,
- 0, 0, 0, 0,
- SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
-#if 0
-#endif
- }
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMRestackFrame - done (%08x)\n", (int) pRLWinPriv);
-#endif
-
- pRLWinPriv->fRestackingNow = FALSE;
-}
-
-void
-winMWExtWMReshapeFrame (RootlessFrameID wid, RegionPtr pShape)
-{
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid;
- HRGN hRgn, hRgnWindow, hRgnClient;
- RECT rcWindow, rcClient;
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMReshapeFrame (%08x)\n", (int) pRLWinPriv);
-#endif
-
- hRgn = winMWExtWMCreateRgnFromRegion (pShape);
-
- /* Create region for non-client area */
- GetWindowRect (pRLWinPriv->hWnd, &rcWindow);
- GetClientRect (pRLWinPriv->hWnd, &rcClient);
- MapWindowPoints (pRLWinPriv->hWnd, HWND_DESKTOP, (LPPOINT)&rcClient, 2);
- OffsetRgn (hRgn, rcClient.left - rcWindow.left, rcClient.top - rcWindow.top);
- OffsetRect (&rcClient, -rcWindow.left, -rcWindow.top);
- OffsetRect (&rcWindow, -rcWindow.left, -rcWindow.top);
- hRgnWindow = CreateRectRgnIndirect (&rcWindow);
- hRgnClient = CreateRectRgnIndirect (&rcClient);
- CombineRgn (hRgnWindow, hRgnWindow, hRgnClient, RGN_DIFF);
- CombineRgn (hRgn, hRgnWindow, hRgn, RGN_OR);
-
-
- SetWindowRgn (pRLWinPriv->hWnd, hRgn, TRUE);
-
- DeleteObject (hRgnWindow);
- DeleteObject (hRgnClient);
-}
-
-void
-winMWExtWMUnmapFrame (RootlessFrameID wid)
-{
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid;
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMUnmapFrame (%08x)\n", (int) pRLWinPriv);
-#endif
-
- g_fNoConfigureWindow = TRUE;
- //ShowWindow (pRLWinPriv->hWnd, SW_MINIMIZE);
- ShowWindow (pRLWinPriv->hWnd, SW_HIDE);
- g_fNoConfigureWindow = FALSE;
-}
-
-/*
- * Fixme: Code sharing with winshadgdi.c and other engine support
- */
-void
-winMWExtWMStartDrawing (RootlessFrameID wid, char **pixelData, int *bytesPerRow)
-{
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid;
- winPrivScreenPtr pScreenPriv = NULL;
- winScreenInfo *pScreenInfo = NULL;
- ScreenPtr pScreen = NULL;
- DIBSECTION dibsection;
- Bool fReturn = TRUE;
- HDC hdcNew;
- HBITMAP hbmpNew;
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMStartDrawing (%08x) %08x\n", (int) pRLWinPriv, pRLWinPriv->fDestroyed);
-#endif
-
- if (!pRLWinPriv->fDestroyed)
- {
- pScreen = pRLWinPriv->pFrame->win->drawable.pScreen;
- if (pScreen) pScreenPriv = winGetScreenPriv(pScreen);
- if (pScreenPriv) pScreenInfo = pScreenPriv->pScreenInfo;
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\tpScreenPriv %08X\n", (int) pScreenPriv);
- winDebug ("\tpScreenInfo %08X\n", (int) pScreenInfo);
- winDebug ("\t(%d, %d)\n", (int)pRLWinPriv->pFrame->width,
- (int) pRLWinPriv->pFrame->height);
-#endif
- if (pRLWinPriv->hdcScreen == NULL)
- {
- InitWin32RootlessEngine (pRLWinPriv);
- }
-
- if (pRLWinPriv->fResized)
- {
- /* width * bpp must be multiple of 4 to match 32bit alignment */
- int stridesize;
- int misalignment;
-
- pRLWinPriv->pbmihShadow->biWidth = pRLWinPriv->pFrame->width;
- pRLWinPriv->pbmihShadow->biHeight = -pRLWinPriv->pFrame->height;
-
- stridesize = pRLWinPriv->pFrame->width * (pScreenInfo->dwBPP >> 3);
- misalignment = stridesize & 3;
- if (misalignment != 0)
- {
- stridesize += 4 - misalignment;
- pRLWinPriv->pbmihShadow->biWidth = stridesize / (pScreenInfo->dwBPP >> 3);
- winDebug("\tresizing to %d (was %d)\n",
- pRLWinPriv->pbmihShadow->biWidth, pRLWinPriv->pFrame->width);
- }
-
- hdcNew = CreateCompatibleDC (pRLWinPriv->hdcScreen);
- /* Create a DI shadow bitmap with a bit pointer */
- hbmpNew = CreateDIBSection (pRLWinPriv->hdcScreen,
- (BITMAPINFO *) pRLWinPriv->pbmihShadow,
- DIB_RGB_COLORS,
- (VOID**) &pRLWinPriv->pfb,
- NULL,
- 0);
- if (hbmpNew == NULL || pRLWinPriv->pfb == NULL)
- {
- ErrorF ("winMWExtWMStartDrawing - CreateDIBSection failed\n");
- //return FALSE;
- }
- else
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMStartDrawing - Shadow buffer allocated\n");
-#endif
- }
-
- /* Get information about the bitmap that was allocated */
- GetObject (hbmpNew, sizeof (dibsection), &dibsection);
-
-#if CYGMULTIWINDOW_DEBUG
- /* Print information about bitmap allocated */
- winDebug ("winMWExtWMStartDrawing - Dibsection width: %d height: %d "
- "depth: %d size image: %d\n",
- (unsigned int)dibsection.dsBmih.biWidth,
- (unsigned int)dibsection.dsBmih.biHeight,
- (unsigned int)dibsection.dsBmih.biBitCount,
- (unsigned int)dibsection.dsBmih.biSizeImage);
-#endif
-
- /* Select the shadow bitmap into the shadow DC */
- SelectObject (hdcNew, hbmpNew);
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMStartDrawing - Attempting a shadow blit\n");
-#endif
-
- /* Blit from the old shadow to the new shadow */
- fReturn = BitBlt (hdcNew,
- 0, 0,
- pRLWinPriv->pFrame->width, pRLWinPriv->pFrame->height,
- pRLWinPriv->hdcShadow,
- 0, 0,
- SRCCOPY);
- if (fReturn)
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMStartDrawing - Shadow blit success\n");
-#endif
- }
- else
- {
- ErrorF ("winMWExtWMStartDrawing - Shadow blit failure\n");
- }
-
- /* Look for height weirdness */
- if (dibsection.dsBmih.biHeight < 0)
- {
- /* FIXME: Figure out why biHeight is sometimes negative */
- ErrorF ("winMWExtWMStartDrawing - WEIRDNESS - "
- "biHeight still negative: %d\n",
- (int) dibsection.dsBmih.biHeight);
- ErrorF ("winMWExtWMStartDrawing - WEIRDNESS - "
- "Flipping biHeight sign\n");
- dibsection.dsBmih.biHeight = -dibsection.dsBmih.biHeight;
- }
-
- pRLWinPriv->dwWidthBytes = dibsection.dsBm.bmWidthBytes;
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMStartDrawing - bytesPerRow: %d\n",
- (unsigned int)dibsection.dsBm.bmWidthBytes);
-#endif
-
- /* Free the old shadow bitmap */
- DeleteObject (pRLWinPriv->hdcShadow);
- DeleteObject (pRLWinPriv->hbmpShadow);
-
- pRLWinPriv->hdcShadow = hdcNew;
- pRLWinPriv->hbmpShadow = hbmpNew;
-
- pRLWinPriv->fResized = FALSE;
-#if CYGMULTIWINDOW_DEBUG && FALSE
- winDebug ("winMWExtWMStartDrawing - 0x%08x %d\n",
- (unsigned int)pRLWinPriv->pfb,
- (unsigned int)dibsection.dsBm.bmWidthBytes);
-#endif
- }
- }
- else
- {
- ErrorF ("winMWExtWMStartDrawing - Already window was destroyed \n");
- }
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMStartDrawing - done (0x%08x) 0x%08x %d\n",
- (int) pRLWinPriv,
- (unsigned int)pRLWinPriv->pfb, (unsigned int)pRLWinPriv->dwWidthBytes);
-#endif
- *pixelData = pRLWinPriv->pfb;
- *bytesPerRow = pRLWinPriv->dwWidthBytes;
-}
-
-void
-winMWExtWMStopDrawing (RootlessFrameID wid, Bool fFlush)
-{
-#if 0
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid;
- BLENDFUNCTION bfBlend;
- SIZE szWin;
- POINT ptSrc;
-#if CYGMULTIWINDOW_DEBUG || TRUE
- winDebug ("winMWExtWMStopDrawing (%08x)\n", pRLWinPriv);
-#endif
- szWin.cx = pRLWinPriv->dwWidth;
- szWin.cy = pRLWinPriv->dwHeight;
- ptSrc.x = 0;
- ptSrc.y = 0;
- bfBlend.BlendOp = AC_SRC_OVER;
- bfBlend.BlendFlags = 0;
- bfBlend.SourceConstantAlpha = 255;
- bfBlend.AlphaFormat = AC_SRC_ALPHA;
-
- if (!UpdateLayeredWindow (pRLWinPriv->hWnd,
- NULL, NULL, &szWin,
- pRLWinPriv->hdcShadow, &ptSrc,
- 0, &bfBlend, ULW_ALPHA))
- {
- ErrorF ("winMWExtWMStopDrawing - UpdateLayeredWindow failed\n");
- }
-#endif
-}
-
-void
-winMWExtWMUpdateRegion (RootlessFrameID wid, RegionPtr pDamage)
-{
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid;
-#if 0
- BLENDFUNCTION bfBlend;
- SIZE szWin;
- POINT ptSrc;
-#endif
-#if CYGMULTIWINDOW_DEBUG && 0
- winDebug ("winMWExtWMUpdateRegion (%08x)\n", pRLWinPriv);
-#endif
-#if 0
- szWin.cx = pRLWinPriv->dwWidth;
- szWin.cy = pRLWinPriv->dwHeight;
- ptSrc.x = 0;
- ptSrc.y = 0;
- bfBlend.BlendOp = AC_SRC_OVER;
- bfBlend.BlendFlags = 0;
- bfBlend.SourceConstantAlpha = 255;
- bfBlend.AlphaFormat = AC_SRC_ALPHA;
-
- if (!UpdateLayeredWindow (pRLWinPriv->hWnd,
- NULL, NULL, &szWin,
- pRLWinPriv->hdcShadow, &ptSrc,
- 0, &bfBlend, ULW_ALPHA))
- {
- LPVOID lpMsgBuf;
-
- /* Display a fancy error message */
- FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError (),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &lpMsgBuf,
- 0, NULL);
-
- ErrorF ("winMWExtWMUpdateRegion - UpdateLayeredWindow failed: %s\n",
- (LPSTR)lpMsgBuf);
- LocalFree (lpMsgBuf);
- }
-#endif
- if (!g_fNoConfigureWindow) UpdateWindow (pRLWinPriv->hWnd);
-}
-
-void
-winMWExtWMDamageRects (RootlessFrameID wid, int nCount, const BoxRec *pRects,
- int shift_x, int shift_y)
-{
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid;
- const BoxRec *pEnd;
-#if CYGMULTIWINDOW_DEBUG && 0
- winDebug ("winMWExtWMDamageRects (%08x, %d, %08x, %d, %d)\n",
- pRLWinPriv, nCount, pRects, shift_x, shift_y);
-#endif
-
- for (pEnd = pRects + nCount; pRects < pEnd; pRects++) {
- RECT rcDmg;
- rcDmg.left = pRects->x1 + shift_x;
- rcDmg.top = pRects->y1 + shift_y;
- rcDmg.right = pRects->x2 + shift_x;
- rcDmg.bottom = pRects->y2 + shift_y;
-
- InvalidateRect (pRLWinPriv->hWnd, &rcDmg, FALSE);
- }
-}
-
-void
-winMWExtWMRootlessSwitchWindow (RootlessWindowPtr pFrame, WindowPtr oldWin)
-{
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) pFrame->wid;
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMRootlessSwitchWindow (%08x) %08x\n",
- (int) pRLWinPriv, (int) pRLWinPriv->hWnd);
-#endif
- pRLWinPriv->pFrame = pFrame;
- pRLWinPriv->fResized = TRUE;
-
- /* Set the window extended style flags */
- SetWindowLongPtr (pRLWinPriv->hWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
-
- /* Set the window standard style flags */
- SetWindowLongPtr (pRLWinPriv->hWnd, GWL_STYLE,
- WS_POPUP | WS_CLIPCHILDREN);
-
- DeleteProperty (oldWin, AtmWindowsWmNativeHwnd ());
- winMWExtWMSetNativeProperty (pFrame);
-#if CYGMULTIWINDOW_DEBUG
-#if 0
- {
- WindowPtr pWin2 = NULL;
- win32RootlessWindowPtr pRLWinPriv2 = NULL;
-
- /* Check if the Windows window property for our X window pointer is valid */
- if ((pWin2 = (WindowPtr)GetProp (pRLWinPriv->hWnd, WIN_WINDOW_PROP)) != NULL)
- {
- pRLWinPriv2 = (win32RootlessWindowPtr) RootlessFrameForWindow (pWin2, FALSE);
- }
- winDebug ("winMWExtWMSwitchFrame2 (%08x) %08x\n",
- pRLWinPriv2, pRLWinPriv2->hWnd);
- if (pRLWinPriv != pRLWinPriv2 || pRLWinPriv->hWnd != pRLWinPriv2->hWnd)
- {
- winDebug ("Error param missmatch\n");
- }
- }
-#endif
-#endif
-}
-
-void
-winMWExtWMCopyBytes (unsigned int width, unsigned int height,
- const void *src, unsigned int srcRowBytes,
- void *dst, unsigned int dstRowBytes)
-{
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMCopyBytes - Not implemented\n");
-#endif
-}
-
-void
-winMWExtWMFillBytes (unsigned int width, unsigned int height, unsigned int value,
- void *dst, unsigned int dstRowBytes)
-{
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMFillBytes - Not implemented\n");
-#endif
-}
-
-int
-winMWExtWMCompositePixels (unsigned int width, unsigned int height, unsigned int function,
- void *src[2], unsigned int srcRowBytes[2],
- void *mask, unsigned int maskRowBytes,
- void *dst[2], unsigned int dstRowBytes[2])
-{
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMCompositePixels - Not implemented\n");
-#endif
- return 0;
-}
-
-
-void
-winMWExtWMCopyWindow (RootlessFrameID wid, int nDstRects, const BoxRec *pDstRects,
- int nDx, int nDy)
-{
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid;
- const BoxRec *pEnd;
- RECT rcDmg;
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMCopyWindow (%08x, %d, %08x, %d, %d)\n",
- (int) pRLWinPriv, nDstRects, (int) pDstRects, nDx, nDy);
-#endif
-
- for (pEnd = pDstRects + nDstRects; pDstRects < pEnd; pDstRects++)
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("BitBlt (%d, %d, %d, %d) (%d, %d)\n",
- pDstRects->x1, pDstRects->y1,
- pDstRects->x2 - pDstRects->x1,
- pDstRects->y2 - pDstRects->y1,
- pDstRects->x1 + nDx,
- pDstRects->y1 + nDy);
-#endif
-
- if (!BitBlt (pRLWinPriv->hdcShadow,
- pDstRects->x1, pDstRects->y1,
- pDstRects->x2 - pDstRects->x1,
- pDstRects->y2 - pDstRects->y1,
- pRLWinPriv->hdcShadow,
- pDstRects->x1 + nDx, pDstRects->y1 + nDy,
- SRCCOPY))
- {
- ErrorF ("winMWExtWMCopyWindow - BitBlt failed.\n");
- }
-
- rcDmg.left = pDstRects->x1;
- rcDmg.top = pDstRects->y1;
- rcDmg.right = pDstRects->x2;
- rcDmg.bottom = pDstRects->y2;
-
- InvalidateRect (pRLWinPriv->hWnd, &rcDmg, FALSE);
- }
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMCopyWindow - done\n");
-#endif
-}
-
-
-/*
- * winMWExtWMSetNativeProperty
- */
-
-static void
-winMWExtWMSetNativeProperty (RootlessWindowPtr pFrame)
-{
- win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) pFrame->wid;
- long lData;
-
- /* FIXME: move this to WindowsWM extension */
-
- lData = (long) pRLWinPriv->hWnd;
- ChangeWindowProperty (pFrame->win, AtmWindowsWmNativeHwnd (),
- XA_INTEGER, 32, PropModeReplace, 1, &lData, TRUE);
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winwin32rootlesswindow.c b/nx-X11/programs/Xserver/hw/xwin/winwin32rootlesswindow.c
deleted file mode 100755
index 693d5cd09..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winwin32rootlesswindow.c
+++ /dev/null
@@ -1,476 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Kensuke Matsuzaki
- * Earle F. Philhower, III
- * Harold L Hunt II
- */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include "winprefs.h"
-
-#if 0
-/*
- * winMWExtWMReorderWindows
- */
-
-void
-winMWExtWMReorderWindows (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- HWND hwnd = NULL;
- win32RootlessWindowPtr pRLWin = NULL;
- win32RootlessWindowPtr pRLWinSib = NULL;
- DWORD dwCurrentProcessID = GetCurrentProcessId ();
- DWORD dwWindowProcessID = 0;
- XID vlist[2];
-
-#if CYGMULTIWINDOW_DEBUG && FALSE
- winDebug ("winMWExtWMReorderWindows\n");
-#endif
-
- pScreenPriv->fRestacking = TRUE;
-
- if (pScreenPriv->fWindowOrderChanged)
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMReorderWindows - Need to restack\n");
-#endif
- hwnd = GetTopWindow (NULL);
-
- while (hwnd)
- {
- GetWindowThreadProcessId (hwnd, &dwWindowProcessID);
-
- if ((dwWindowProcessID == dwCurrentProcessID)
- && GetProp (hwnd, WIN_WINDOW_PROP))
- {
- pRLWinSib = pRLWin;
- pRLWin = (win32RootlessWindowPtr)GetProp (hwnd, WIN_WINDOW_PROP);
-
- if (pRLWinSib)
- {
- vlist[0] = pRLWinSib->pFrame->win->drawable.id;
- vlist[1] = Below;
-
- ConfigureWindow (pRLWin->pFrame->win, CWSibling | CWStackMode,
- vlist, wClient(pRLWin->pFrame->win));
- }
- else
- {
- /* 1st window - raise to the top */
- vlist[0] = Above;
-
- ConfigureWindow (pRLWin->pFrame->win, CWStackMode,
- vlist, wClient(pRLWin->pFrame->win));
- }
- }
- hwnd = GetNextWindow (hwnd, GW_HWNDNEXT);
- }
- }
-
- pScreenPriv->fRestacking = FALSE;
- pScreenPriv->fWindowOrderChanged = FALSE;
-}
-#endif
-
-
-/*
- * winMWExtWMMoveXWindow
- */
-
-void
-winMWExtWMMoveXWindow (WindowPtr pWin, int x, int y)
-{
- CARD32 *vlist = malloc(sizeof(CARD32)*2);
-
- vlist[0] = x;
- vlist[1] = y;
- ConfigureWindow (pWin, CWX | CWY, vlist, wClient(pWin));
- free(vlist);
-}
-
-
-/*
- * winMWExtWMResizeXWindow
- */
-
-void
-winMWExtWMResizeXWindow (WindowPtr pWin, int w, int h)
-{
- CARD32 *vlist = malloc(sizeof(CARD32)*2);
-
- vlist[0] = w;
- vlist[1] = h;
- ConfigureWindow (pWin, CWWidth | CWHeight, vlist, wClient(pWin));
- free(vlist);
-}
-
-
-/*
- * winMWExtWMMoveResizeXWindow
- */
-
-void
-winMWExtWMMoveResizeXWindow (WindowPtr pWin, int x, int y, int w, int h)
-{
- CARD32 *vlist = malloc(sizeof(long)*4);
-
- vlist[0] = x;
- vlist[1] = y;
- vlist[2] = w;
- vlist[3] = h;
-
- ConfigureWindow (pWin, CWX | CWY | CWWidth | CWHeight, vlist, wClient(pWin));
- free(vlist);
-}
-
-
-/*
- * winMWExtWMUpdateIcon
- * Change the Windows window icon
- */
-
-void
-winMWExtWMUpdateIcon (Window id)
-{
- WindowPtr pWin;
- HICON hIcon, hiconOld;
-
- pWin = LookupIDByType (id, RT_WINDOW);
- hIcon = (HICON)winOverrideIcon ((unsigned long)pWin);
-
- if (!hIcon)
- hIcon = winXIconToHICON (pWin, GetSystemMetrics(SM_CXICON));
-
- if (hIcon)
- {
- win32RootlessWindowPtr pRLWinPriv
- = (win32RootlessWindowPtr) RootlessFrameForWindow (pWin, FALSE);
-
- if (pRLWinPriv->hWnd)
- {
- hiconOld = (HICON) SetClassLong (pRLWinPriv->hWnd,
- GCL_HICON,
- (int) hIcon);
-
- winDestroyIcon(hiconOld);
- }
- }
-}
-
-
-/*
- * winMWExtWMDecorateWindow - Update window style. Called by EnumWindows.
- */
-
-wBOOL CALLBACK
-winMWExtWMDecorateWindow (HWND hwnd, LPARAM lParam)
-{
- win32RootlessWindowPtr pRLWinPriv = NULL;
- ScreenPtr pScreen = NULL;
- winPrivScreenPtr pScreenPriv = NULL;
- winScreenInfo *pScreenInfo = NULL;
-
- /* Check if the Windows window property for our X window pointer is valid */
- if ((pRLWinPriv = (win32RootlessWindowPtr)GetProp (hwnd, WIN_WINDOW_PROP)) != NULL)
- {
- pScreen = pRLWinPriv->pFrame->win->drawable.pScreen;
- if (pScreen) pScreenPriv = winGetScreenPriv(pScreen);
- if (pScreenPriv) pScreenInfo = pScreenPriv->pScreenInfo;
- if (pRLWinPriv && pScreenInfo) winMWExtWMUpdateWindowDecoration (pRLWinPriv, pScreenInfo);
- }
- return TRUE;
-}
-
-
-/*
- * winMWExtWMUpdateWindowDecoration - Update window style.
- */
-
-void
-winMWExtWMUpdateWindowDecoration (win32RootlessWindowPtr pRLWinPriv,
- winScreenInfoPtr pScreenInfo)
-{
- Bool fDecorate = FALSE;
- DWORD dwExStyle = 0;
- DWORD dwStyle = 0;
- WINDOWPLACEMENT wndPlace;
- UINT showCmd = 0;
-
- wndPlace.length = sizeof (WINDOWPLACEMENT);
-
- /* Get current window placement */
- GetWindowPlacement (pRLWinPriv->hWnd, &wndPlace);
-
- if (winIsInternalWMRunning(pScreenInfo))
- {
- if (!pRLWinPriv->pFrame->win->overrideRedirect)
- fDecorate = TRUE;
- }
-#if 0
- if (wndPlace.showCmd == SW_HIDE)
- return;//showCmd = SWP_HIDEWINDOW;
- else
- showCmd = SWP_SHOWWINDOW;
-#else
- if (wndPlace.showCmd == SW_HIDE)
- return;
-
- if (IsWindowVisible (pRLWinPriv->hWnd))
- showCmd = SWP_SHOWWINDOW;
-#endif
-
- showCmd |= SWP_NOMOVE | SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOZORDER;
-
- winDebug ("winMWExtWMUpdateWindowDecoration %08x %s\n",
- (int)pRLWinPriv, fDecorate?"Decorate":"Bare");
-
- /* Get the standard and extended window style information */
- dwExStyle = GetWindowLongPtr (pRLWinPriv->hWnd, GWL_EXSTYLE);
- dwStyle = GetWindowLongPtr (pRLWinPriv->hWnd, GWL_STYLE);
-
- if (fDecorate)
- {
- RECT rcNew;
- int iDx, iDy;
- winWMMessageRec wmMsg;
- winScreenPriv(pScreenInfo->pScreen);
-
- /* */
- if (!(dwExStyle & WS_EX_APPWINDOW))
- {
- winDebug ("\tBare=>Decorate\n");
- /* Setup a rectangle with the X window position and size */
- SetRect (&rcNew,
- pRLWinPriv->pFrame->x,
- pRLWinPriv->pFrame->y,
- pRLWinPriv->pFrame->x + pRLWinPriv->pFrame->width,
- pRLWinPriv->pFrame->y + pRLWinPriv->pFrame->height);
-
-#ifdef CYGMULTIWINDOW_DEBUG
- winDebug("\tWindow extend {%d, %d, %d, %d}, {%d, %d}\n",
- rcNew.left, rcNew.top, rcNew.right, rcNew.bottom,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top);
-#endif
- /* */
- AdjustWindowRectEx (&rcNew,
- WS_POPUP | WS_SIZEBOX | WS_OVERLAPPEDWINDOW,
- FALSE,
- WS_EX_APPWINDOW);
-
-#ifdef CYGMULTIWINDOW_DEBUG
- winDebug("\tAdjusted {%d, %d, %d, %d}, {%d, %d}\n",
- rcNew.left, rcNew.top, rcNew.right, rcNew.bottom,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top);
-#endif
- /* Calculate position deltas */
- iDx = pRLWinPriv->pFrame->x - rcNew.left;
- iDy = pRLWinPriv->pFrame->y - rcNew.top;
-
- /* Calculate new rectangle */
- rcNew.left += iDx;
- rcNew.right += iDx;
- rcNew.top += iDy;
- rcNew.bottom += iDy;
-
- /* Set the window extended style flags */
- SetWindowLongPtr (pRLWinPriv->hWnd, GWL_EXSTYLE, WS_EX_APPWINDOW);
-
- /* Set the window standard style flags */
- SetWindowLongPtr (pRLWinPriv->hWnd, GWL_STYLE,
- WS_POPUP | WS_SIZEBOX | WS_OVERLAPPEDWINDOW);
-
-#ifdef CYGMULTIWINDOW_DEBUG
- winDebug("\tWindowStyle: %08x %08x\n",
- WS_POPUP | WS_SIZEBOX | WS_OVERLAPPEDWINDOW,
- WS_EX_APPWINDOW);
-#endif
- /* Position the Windows window */
-#ifdef CYGMULTIWINDOW_DEBUG
- winDebug("\tMoved {%d, %d, %d, %d}, {%d, %d}\n",
- rcNew.left, rcNew.top, rcNew.right, rcNew.bottom,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top);
-#endif
- SetWindowPos (pRLWinPriv->hWnd, NULL,
- rcNew.left, rcNew.top,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top,
- showCmd);
-
-
- wmMsg.hwndWindow = pRLWinPriv->hWnd;
- wmMsg.iWindow = (Window)pRLWinPriv->pFrame->win->drawable.id;
- wmMsg.msg = WM_WM_NAME_EVENT;
- winSendMessageToWM (pScreenPriv->pWMInfo, &wmMsg);
-
- winMWExtWMReshapeFrame ((RootlessFrameID)pRLWinPriv ,
- wBoundingShape(pRLWinPriv->pFrame->win));
- }
- }
- else
- {
- RECT rcNew;
-
- /* */
- if (dwExStyle & WS_EX_APPWINDOW)
- {
- winDebug ("\tDecorate=>Bare\n");
- /* Setup a rectangle with the X window position and size */
- SetRect (&rcNew,
- pRLWinPriv->pFrame->x,
- pRLWinPriv->pFrame->y,
- pRLWinPriv->pFrame->x + pRLWinPriv->pFrame->width,
- pRLWinPriv->pFrame->y + pRLWinPriv->pFrame->height);
-#if 0
- /* */
- AdjustWindowRectEx (&rcNew,
- WS_POPUP | WS_CLIPCHILDREN,
- FALSE,
- WS_EX_TOOLWINDOW);
-
- /* Calculate position deltas */
- iDx = pRLWinPriv->pFrame->x - rcNew.left;
- iDy = pRLWinPriv->pFrame->y - rcNew.top;
-
- /* Calculate new rectangle */
- rcNew.left += iDx;
- rcNew.right += iDx;
- rcNew.top += iDy;
- rcNew.bottom += iDy;
-#endif
-
- /* Hide window temporary to remove from taskbar. */
- ShowWindow( pRLWinPriv->hWnd, SW_HIDE );
-
- /* Set the window extended style flags */
- SetWindowLongPtr (pRLWinPriv->hWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
-
- /* Set the window standard style flags */
- SetWindowLongPtr (pRLWinPriv->hWnd, GWL_STYLE,
- WS_POPUP | WS_CLIPCHILDREN);
-
- /* Position the Windows window */
- SetWindowPos (pRLWinPriv->hWnd, NULL,
- rcNew.left, rcNew.top,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top,
- showCmd);
-
- winMWExtWMReshapeFrame ((RootlessFrameID)pRLWinPriv ,
- wBoundingShape(pRLWinPriv->pFrame->win));
- }
- }
-}
-
-
-/*
- * winIsInternalWMRunning (winScreenInfoPtr pScreenInfo)
- */
-Bool
-winIsInternalWMRunning (winScreenInfoPtr pScreenInfo)
-{
- return pScreenInfo->fInternalWM && !pScreenInfo->fAnotherWMRunning;
-}
-
-
-/*
- * winMWExtWMRestackWindows
- */
-
-void
-winMWExtWMRestackWindows (ScreenPtr pScreen)
-{
- winScreenPriv(pScreen);
- WindowPtr pRoot = WindowTable[pScreen->myNum];
- WindowPtr pWin = NULL;
- WindowPtr pWinPrev = NULL;
- win32RootlessWindowPtr pRLWin = NULL;
- win32RootlessWindowPtr pRLWinPrev = NULL;
- int nWindow = 0;
- HDWP hWinPosInfo = NULL;
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMRestackWindows\n");
-#endif
-
- pScreenPriv->fRestacking = TRUE;
-
- if (pRoot != NULL)
- {
- for (pWin = pRoot->firstChild; pWin; pWin = pWin->nextSib)
- nWindow ++;
-
- hWinPosInfo = BeginDeferWindowPos(nWindow);
-
- for (pWin = pRoot->firstChild; pWin; pWin = pWin->nextSib)
- {
- if (pWin->realized)
- {
- UINT uFlags;
-
- pRLWin = (win32RootlessWindowPtr) RootlessFrameForWindow (pWin, FALSE);
- if (pRLWin == NULL) continue;
-
- if (pWinPrev)
- pRLWinPrev = (win32RootlessWindowPtr) RootlessFrameForWindow (pWinPrev, FALSE);
-
- uFlags = SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW;
- if (pRLWinPrev != NULL) uFlags |= SWP_NOACTIVATE;
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMRestackWindows - DeferWindowPos (%08x, %08x)\n",
- pRLWin->hWnd,
- pRLWinPrev ? pRLWinPrev->hWnd : HWND_TOP);
-#endif
- hWinPosInfo = DeferWindowPos (hWinPosInfo, pRLWin->hWnd,
- pRLWinPrev ? pRLWinPrev->hWnd : HWND_TOP,
- 0, 0, 0, 0,
- uFlags);
- if (hWinPosInfo == NULL)
- {
- ErrorF ("winMWExtWMRestackWindows - DeferWindowPos () failed: %d\n",
- (int) GetLastError ());
- return;
- }
- pWinPrev = pWin;
- }
- }
- if (!EndDeferWindowPos (hWinPosInfo))
- {
- ErrorF ("winMWExtWMRestackWindows - EndDeferWindowPos () failed: %d\n",
- (int) GetLastError ());
- return;
- }
- }
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMRestackWindows - done\n");
-#endif
- pScreenPriv->fRestacking = FALSE;
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winwin32rootlesswndproc.c b/nx-X11/programs/Xserver/hw/xwin/winwin32rootlesswndproc.c
deleted file mode 100755
index ffa84938f..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winwin32rootlesswndproc.c
+++ /dev/null
@@ -1,1324 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Kensuke Matsuzaki
- * Earle F. Philhower, III
- * Harold L Hunt II
- */
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include <winuser.h>
-#define _WINDOWSWM_SERVER_
-#include "windowswmstr.h"
-#include "dixevents.h"
-#include "propertyst.h"
-#include <X11/Xatom.h>
-#include "winmultiwindowclass.h"
-#include "winmsg.h"
-
-
-/*
- * Constant defines
- */
-
-#define MOUSE_POLLING_INTERVAL 500
-#define MOUSE_ACTIVATE_DEFAULT TRUE
-#define RAISE_ON_CLICK_DEFAULT FALSE
-
-
-/*
- * Global variables
- */
-
-extern Bool g_fNoConfigureWindow;
-extern Bool g_fSoftwareCursor;
-
-
-/*
- * Local globals
- */
-
-static UINT_PTR g_uipMousePollingTimerID = 0;
-
-
-/*
- * Local function
- */
-
-DEFINE_ATOM_HELPER(AtmWindowsWmRaiseOnClick, WINDOWSWM_RAISE_ON_CLICK)
-DEFINE_ATOM_HELPER(AtmWindowsWMMouseActivate, WINDOWSWM_MOUSE_ACTIVATE)
-/* DEFINE_ATOM_HELPER(AtmWindowsWMClientWindow, WINDOWSWM_CLIENT_WINDOW) */
-
-/*
- * ConstrainSize - Taken from TWM sources - Respects hints for sizing
- */
-#define makemult(a,b) ((b==1) ? (a) : (((int)((a)/(b))) * (b)) )
-static void
-ConstrainSize (WinXSizeHints hints, int *widthp, int *heightp)
-{
- int minWidth, minHeight, maxWidth, maxHeight, xinc, yinc, delta;
- int baseWidth, baseHeight;
- int dwidth = *widthp, dheight = *heightp;
-
- if (hints.flags & PMinSize)
- {
- minWidth = hints.min_width;
- minHeight = hints.min_height;
- }
- else if (hints.flags & PBaseSize)
- {
- minWidth = hints.base_width;
- minHeight = hints.base_height;
- }
- else
- minWidth = minHeight = 1;
-
- if (hints.flags & PBaseSize)
- {
- baseWidth = hints.base_width;
- baseHeight = hints.base_height;
- }
- else if (hints.flags & PMinSize)
- {
- baseWidth = hints.min_width;
- baseHeight = hints.min_height;
- }
- else
- baseWidth = baseHeight = 0;
-
- if (hints.flags & PMaxSize)
- {
- maxWidth = hints.max_width;
- maxHeight = hints.max_height;
- }
- else
- {
- maxWidth = MAXINT;
- maxHeight = MAXINT;
- }
-
- if (hints.flags & PResizeInc)
- {
- xinc = hints.width_inc;
- yinc = hints.height_inc;
- }
- else
- xinc = yinc = 1;
-
- /*
- * First, clamp to min and max values
- */
- if (dwidth < minWidth)
- dwidth = minWidth;
- if (dheight < minHeight)
- dheight = minHeight;
-
- if (dwidth > maxWidth)
- dwidth = maxWidth;
- if (dheight > maxHeight)
- dheight = maxHeight;
-
- /*
- * Second, fit to base + N * inc
- */
- dwidth = ((dwidth - baseWidth) / xinc * xinc) + baseWidth;
- dheight = ((dheight - baseHeight) / yinc * yinc) + baseHeight;
-
- /*
- * Third, adjust for aspect ratio
- */
-
- /*
- * The math looks like this:
- *
- * minAspectX dwidth maxAspectX
- * ---------- <= ------- <= ----------
- * minAspectY dheight maxAspectY
- *
- * If that is multiplied out, then the width and height are
- * invalid in the following situations:
- *
- * minAspectX * dheight > minAspectY * dwidth
- * maxAspectX * dheight < maxAspectY * dwidth
- *
- */
-
- if (hints.flags & PAspect)
- {
- if (hints.min_aspect.x * dheight > hints.min_aspect.y * dwidth)
- {
- delta = makemult(hints.min_aspect.x * dheight / hints.min_aspect.y - dwidth, xinc);
- if (dwidth + delta <= maxWidth)
- dwidth += delta;
- else
- {
- delta = makemult(dheight - dwidth*hints.min_aspect.y/hints.min_aspect.x, yinc);
- if (dheight - delta >= minHeight)
- dheight -= delta;
- }
- }
-
- if (hints.max_aspect.x * dheight < hints.max_aspect.y * dwidth)
- {
- delta = makemult(dwidth * hints.max_aspect.y / hints.max_aspect.x - dheight, yinc);
- if (dheight + delta <= maxHeight)
- dheight += delta;
- else
- {
- delta = makemult(dwidth - hints.max_aspect.x*dheight/hints.max_aspect.y, xinc);
- if (dwidth - delta >= minWidth)
- dwidth -= delta;
- }
- }
- }
-
- /* Return computed values */
- *widthp = dwidth;
- *heightp = dheight;
-}
-#undef makemult
-
-
-
-/*
- * ValidateSizing - Ensures size request respects hints
- */
-static int
-ValidateSizing (HWND hwnd, WindowPtr pWin,
- WPARAM wParam, LPARAM lParam)
-{
- WinXSizeHints sizeHints;
- RECT *rect;
- int iWidth, iHeight, iTopBorder;
- POINT pt;
-
- /* Invalid input checking */
- if (pWin==NULL || lParam==0)
- {
- ErrorF ("Invalid input checking\n");
- return FALSE;
- }
-
- /* No size hints, no checking */
- if (!winMultiWindowGetWMNormalHints (pWin, &sizeHints))
- {
- ErrorF ("No size hints, no checking\n");
- return FALSE;
- }
-
- /* Avoid divide-by-zero */
- if (sizeHints.flags & PResizeInc)
- {
- if (sizeHints.width_inc == 0) sizeHints.width_inc = 1;
- if (sizeHints.height_inc == 0) sizeHints.height_inc = 1;
- }
-
- rect = (RECT*)lParam;
-
- iWidth = rect->right - rect->left;
- iHeight = rect->bottom - rect->top;
-
- /* Get title bar height, there must be an easier way?! */
- pt.x = pt.y = 0;
- ClientToScreen(hwnd, &pt);
- iTopBorder = pt.y - rect->top;
-
- /* Now remove size of any borders */
- iWidth -= 2 * GetSystemMetrics(SM_CXSIZEFRAME);
- iHeight -= GetSystemMetrics(SM_CYSIZEFRAME) + iTopBorder;
-
- /* Constrain the size to legal values */
- ConstrainSize (sizeHints, &iWidth, &iHeight);
-
- /* Add back the borders */
- iWidth += 2 * GetSystemMetrics(SM_CXSIZEFRAME);
- iHeight += GetSystemMetrics(SM_CYSIZEFRAME) + iTopBorder;
-
- /* Adjust size according to where we're dragging from */
- switch(wParam) {
- case WMSZ_TOP:
- case WMSZ_TOPRIGHT:
- case WMSZ_BOTTOM:
- case WMSZ_BOTTOMRIGHT:
- case WMSZ_RIGHT:
- rect->right = rect->left + iWidth;
- break;
- default:
- rect->left = rect->right - iWidth;
- break;
- }
- switch(wParam) {
- case WMSZ_BOTTOM:
- case WMSZ_BOTTOMRIGHT:
- case WMSZ_BOTTOMLEFT:
- case WMSZ_RIGHT:
- case WMSZ_LEFT:
- rect->bottom = rect->top + iHeight;
- break;
- default:
- rect->top = rect->bottom - iHeight;
- break;
- }
- return TRUE;
-}
-
-
-/*
- * IsRaiseOnClick
- */
-
-static Bool
-IsRaiseOnClick (WindowPtr pWin)
-{
-
- struct _Window *pwin;
- struct _Property *prop;
- WindowPtr pRoot = GetCurrentRootWindow ();
-
- if (!pWin)
- {
- ErrorF ("IsRaiseOnClick - no prop use default value:%d\n",
- RAISE_ON_CLICK_DEFAULT);
- return RAISE_ON_CLICK_DEFAULT;
- }
-
- pwin = (struct _Window*) pWin;
-
- if (pwin->optional)
- prop = (struct _Property *) pwin->optional->userProps;
- else
- prop = NULL;
-
- while (prop)
- {
- if (prop->propertyName == AtmWindowsWmRaiseOnClick ()
- && prop->type == XA_INTEGER
- && prop->format == 32)
- {
- return *(int*)prop->data;
- }
- else
- prop = prop->next;
- }
-
- if (pWin != pRoot)
- {
- return IsRaiseOnClick (pRoot);
- }
- else
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("IsRaiseOnClick - no prop use default value:%d\n",
- RAISE_ON_CLICK_DEFAULT);
-#endif
- return RAISE_ON_CLICK_DEFAULT;
- }
-}
-
-
-/*
- * IsMouseActive
- */
-
-static Bool
-IsMouseActive (WindowPtr pWin)
-{
-
- struct _Window *pwin;
- struct _Property *prop;
- WindowPtr pRoot = GetCurrentRootWindow ();
-
- if (!pWin)
- {
- ErrorF ("IsMouseActive - pWin was NULL use default value:%d\n",
- MOUSE_ACTIVATE_DEFAULT);
- return MOUSE_ACTIVATE_DEFAULT;
- }
-
- pwin = (struct _Window*) pWin;
-
- if (pwin->optional)
- prop = (struct _Property *) pwin->optional->userProps;
- else
- prop = NULL;
-
- while (prop)
- {
- if (prop->propertyName == AtmWindowsWMMouseActivate ()
- && prop->type == XA_INTEGER
- && prop->format == 32)
- {
- return *(int*)prop->data;
- }
- else
- prop = prop->next;
- }
-
- if (pWin != pRoot)
- {
- return IsMouseActive (pRoot);
- }
- else
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("IsMouseActive - no prop use default value:%d\n",
- MOUSE_ACTIVATE_DEFAULT);
-#endif
- return MOUSE_ACTIVATE_DEFAULT;
- }
-}
-
-
-/*
- * winMWExtWMWindowProc - Window procedure
- */
-
-LRESULT CALLBACK
-winMWExtWMWindowProc (HWND hwnd, UINT message,
- WPARAM wParam, LPARAM lParam)
-{
- WindowPtr pWin = NULL;
- win32RootlessWindowPtr pRLWinPriv = NULL;
- ScreenPtr pScreen = NULL;
- winPrivScreenPtr pScreenPriv = NULL;
- winScreenInfo *pScreenInfo = NULL;
- HWND hwndScreen = NULL;
- POINT ptMouse;
- static Bool s_fTracking = FALSE;
- HDC hdcUpdate;
- PAINTSTRUCT ps;
- LPWINDOWPOS pWinPos = NULL;
- RECT rcClient;
- winWMMessageRec wmMsg;
- Bool fWMMsgInitialized = FALSE;
-
- /* Check if the Windows window property for our X window pointer is valid */
- if ((pRLWinPriv = (win32RootlessWindowPtr)GetProp (hwnd, WIN_WINDOW_PROP)) != NULL)
- {
- pWin = pRLWinPriv->pFrame->win;
- pScreen = pWin->drawable.pScreen;
- if (pScreen) pScreenPriv = winGetScreenPriv(pScreen);
- if (pScreenPriv) pScreenInfo = pScreenPriv->pScreenInfo;
- if (pScreenPriv) hwndScreen = pScreenPriv->hwndScreen;
-
- wmMsg.msg = 0;
- wmMsg.hwndWindow = hwnd;
- wmMsg.iWindow = (Window)pWin->drawable.id;
-
- wmMsg.iX = pRLWinPriv->pFrame->x;
- wmMsg.iY = pRLWinPriv->pFrame->y;
- wmMsg.iWidth = pRLWinPriv->pFrame->width;
- wmMsg.iHeight = pRLWinPriv->pFrame->height;
-
- fWMMsgInitialized = TRUE;
-#if CYGDEBUG
- winDebugWin32Message("winMWExtWMWindowProc", hwnd, message, wParam, lParam);
-
- winDebug ("\thWnd %08X\n", hwnd);
- winDebug ("\tpScreenPriv %08X\n", pScreenPriv);
- winDebug ("\tpScreenInfo %08X\n", pScreenInfo);
- winDebug ("\thwndScreen %08X\n", hwndScreen);
- winDebug ("winMWExtWMWindowProc (%08x) %08x %08x %08x\n",
- pRLWinPriv, message, wParam, lParam);
-#endif
- }
- /* Branch on message type */
- switch (message)
- {
- case WM_CREATE:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_CREATE\n");
-#endif
- /* */
- SetProp (hwnd,
- WIN_WINDOW_PROP,
- (HANDLE)((LPCREATESTRUCT) lParam)->lpCreateParams);
- return 0;
-
- case WM_CLOSE:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_CLOSE %d\n", pRLWinPriv->fClose);
-#endif
- /* Tell window-manager to close window */
- if (pRLWinPriv->fClose)
- {
- DestroyWindow (hwnd);
- }
- else
- {
- if (winIsInternalWMRunning(pScreenInfo))
- {
- /* Tell our Window Manager thread to kill the window */
- wmMsg.msg = WM_WM_KILL;
- if (fWMMsgInitialized)
- winSendMessageToWM (pScreenPriv->pWMInfo, &wmMsg);
- }
- winWindowsWMSendEvent(WindowsWMControllerNotify,
- WindowsWMControllerNotifyMask,
- 1,
- WindowsWMCloseWindow,
- pWin->drawable.id,
- 0, 0, 0, 0);
- }
- return 0;
-
- case WM_DESTROY:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_DESTROY\n");
-#endif
- /* Free the shaodw DC; which allows the bitmap to be freed */
- DeleteDC (pRLWinPriv->hdcShadow);
- pRLWinPriv->hdcShadow = NULL;
-
- /* Free the shadow bitmap */
- DeleteObject (pRLWinPriv->hbmpShadow);
- pRLWinPriv->hbmpShadow = NULL;
-
- /* Free the screen DC */
- ReleaseDC (pRLWinPriv->hWnd, pRLWinPriv->hdcScreen);
- pRLWinPriv->hdcScreen = NULL;
-
- /* Free shadow buffer info header */
- free (pRLWinPriv->pbmihShadow);
- pRLWinPriv->pbmihShadow = NULL;
-
- pRLWinPriv->fResized = FALSE;
- pRLWinPriv->pfb = NULL;
- free (pRLWinPriv);
- RemoveProp (hwnd, WIN_WINDOW_PROP);
- break;
-
- case WM_MOUSEMOVE:
-#if CYGMULTIWINDOW_DEBUG && 0
- winDebug ("winMWExtWMWindowProc - WM_MOUSEMOVE\n");
-#endif
- /* Unpack the client area mouse coordinates */
- ptMouse.x = GET_X_LPARAM(lParam);
- ptMouse.y = GET_Y_LPARAM(lParam);
-
- /* Translate the client area mouse coordinates to screen coordinates */
- ClientToScreen (hwnd, &ptMouse);
-
- /* Screen Coords from (-X, -Y) -> Root Window (0, 0) */
- ptMouse.x -= GetSystemMetrics (SM_XVIRTUALSCREEN);
- ptMouse.y -= GetSystemMetrics (SM_YVIRTUALSCREEN);
-
- /* We can't do anything without privates */
- if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput)
- break;
-
- /* Has the mouse pointer crossed screens? */
- if (pScreen != miPointerCurrentScreen ())
- miPointerSetNewScreen (pScreenInfo->dwScreen,
- ptMouse.x - pScreenInfo->dwXOffset,
- ptMouse.y - pScreenInfo->dwYOffset);
-
- /* Are we tracking yet? */
- if (!s_fTracking)
- {
- TRACKMOUSEEVENT tme;
-
- /* Setup data structure */
- ZeroMemory (&tme, sizeof (tme));
- tme.cbSize = sizeof (tme);
- tme.dwFlags = TME_LEAVE;
- tme.hwndTrack = hwnd;
-
- /* Call the tracking function */
- if (!(*g_fpTrackMouseEvent) (&tme))
- ErrorF ("winMWExtWMWindowProc - _TrackMouseEvent failed\n");
-
- /* Flag that we are tracking now */
- s_fTracking = TRUE;
- }
-
- /* Kill the timer used to poll mouse events */
- if (g_uipMousePollingTimerID != 0)
- {
- KillTimer (pScreenPriv->hwndScreen, WIN_POLLING_MOUSE_TIMER_ID);
- g_uipMousePollingTimerID = 0;
- }
-
- /* Deliver absolute cursor position to X Server */
- miPointerAbsoluteCursor (ptMouse.x - pScreenInfo->dwXOffset,
- ptMouse.y - pScreenInfo->dwYOffset,
- g_c32LastInputEventTime = GetTickCount ());
- return 0;
-
- case WM_NCMOUSEMOVE:
-#if CYGMULTIWINDOW_DEBUG && 0
- winDebug ("winMWExtWMWindowProc - WM_NCMOUSEMOVE\n");
-#endif
- /*
- * We break instead of returning 0 since we need to call
- * DefWindowProc to get the mouse cursor changes
- * and min/max/close button highlighting in Windows XP.
- * The Platform SDK says that you should return 0 if you
- * process this message, but it fails to mention that you
- * will give up any default functionality if you do return 0.
- */
-
- /* We can't do anything without privates */
- if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput)
- break;
-
- /*
- * Timer to poll mouse events. This is needed to make
- * programs like xeyes follow the mouse properly.
- */
- if (g_uipMousePollingTimerID == 0)
- g_uipMousePollingTimerID = SetTimer (pScreenPriv->hwndScreen,
- WIN_POLLING_MOUSE_TIMER_ID,
- MOUSE_POLLING_INTERVAL,
- NULL);
- break;
-
- case WM_MOUSELEAVE:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_MOUSELEAVE\n");
-#endif
- /* Mouse has left our client area */
-
- /* Flag that we are no longer tracking */
- s_fTracking = FALSE;
-
- /*
- * Timer to poll mouse events. This is needed to make
- * programs like xeyes follow the mouse properly.
- */
- if (g_uipMousePollingTimerID == 0)
- g_uipMousePollingTimerID = SetTimer (pScreenPriv->hwndScreen,
- WIN_POLLING_MOUSE_TIMER_ID,
- MOUSE_POLLING_INTERVAL,
- NULL);
- return 0;
-
- case WM_LBUTTONDBLCLK:
- case WM_LBUTTONDOWN:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_LBUTTONDBLCLK\n");
-#endif
- if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput)
- break;
- SetCapture (hwnd);
- return winMouseButtonsHandle (pScreen, ButtonPress, Button1, wParam);
-
- case WM_LBUTTONUP:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_LBUTTONUP\n");
-#endif
- if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput)
- break;
- ReleaseCapture ();
- return winMouseButtonsHandle (pScreen, ButtonRelease, Button1, wParam);
-
- case WM_MBUTTONDBLCLK:
- case WM_MBUTTONDOWN:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_MBUTTONDBLCLK\n");
-#endif
- if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput)
- break;
- SetCapture (hwnd);
- return winMouseButtonsHandle (pScreen, ButtonPress, Button2, wParam);
-
- case WM_MBUTTONUP:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_MBUTTONUP\n");
-#endif
- if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput)
- break;
- ReleaseCapture ();
- return winMouseButtonsHandle (pScreen, ButtonRelease, Button2, wParam);
-
- case WM_RBUTTONDBLCLK:
- case WM_RBUTTONDOWN:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_RBUTTONDBLCLK\n");
-#endif
- if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput)
- break;
- SetCapture (hwnd);
- return winMouseButtonsHandle (pScreen, ButtonPress, Button3, wParam);
-
- case WM_RBUTTONUP:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_RBUTTONUP\n");
-#endif
- if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput)
- break;
- ReleaseCapture ();
- return winMouseButtonsHandle (pScreen, ButtonRelease, Button3, wParam);
-
- case WM_XBUTTONDBLCLK:
- case WM_XBUTTONDOWN:
- if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput)
- break;
- SetCapture (hwnd);
- return winMouseButtonsHandle (pScreen, ButtonPress, HIWORD(wParam) + 5, wParam);
- case WM_XBUTTONUP:
- if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput)
- break;
- ReleaseCapture ();
- return winMouseButtonsHandle (pScreen, ButtonRelease, HIWORD(wParam) + 5, wParam);
-
- case WM_MOUSEWHEEL:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_MOUSEWHEEL\n");
-#endif
-
- /* Pass the message to the root window */
- SendMessage (hwndScreen, message, wParam, lParam);
- return 0;
-
- case WM_MOUSEACTIVATE:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_MOUSEACTIVATE\n");
-#endif
-#if 1
- /* Check if this window needs to be made active when clicked */
- if (winIsInternalWMRunning(pScreenInfo) && pWin->overrideRedirect)
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_MOUSEACTIVATE - "
- "MA_NOACTIVATE\n");
-#endif
-
- /* */
- return MA_NOACTIVATE;
- }
-#endif
- if (!winIsInternalWMRunning(pScreenInfo) && !IsMouseActive (pWin))
- return MA_NOACTIVATE;
-
- break;
-
- case WM_KILLFOCUS:
- /* Pop any pressed keys since we are losing keyboard focus */
- winKeybdReleaseKeys ();
- return 0;
-
- case WM_SYSDEADCHAR:
- case WM_DEADCHAR:
- /*
- * NOTE: We do nothing with WM_*CHAR messages,
- * nor does the root window, so we can just toss these messages.
- */
- return 0;
-
- case WM_SYSKEYDOWN:
- case WM_KEYDOWN:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_*KEYDOWN\n");
-#endif
-
- /*
- * Don't pass Alt-F4 key combo to root window,
- * let Windows translate to WM_CLOSE and close this top-level window.
- *
- * NOTE: We purposely don't check the fUseWinKillKey setting because
- * it should only apply to the key handling for the root window,
- * not for top-level window-manager windows.
- *
- * ALSO NOTE: We do pass Ctrl-Alt-Backspace to the root window
- * because that is a key combo that no X app should be expecting to
- * receive, since it has historically been used to shutdown the X server.
- * Passing Ctrl-Alt-Backspace to the root window preserves that
- * behavior, assuming that -unixkill has been passed as a parameter.
- */
- if (wParam == VK_F4 && (GetKeyState (VK_MENU) & 0x8000))
- break;
-
- /* Pass the message to the root window */
- SendMessage (hwndScreen, message, wParam, lParam);
- return 0;
-
- case WM_SYSKEYUP:
- case WM_KEYUP:
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_*KEYUP\n");
-#endif
-
- /* Pass the message to the root window */
- SendMessage (hwndScreen, message, wParam, lParam);
- return 0;
-
- case WM_HOTKEY:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_HOTKEY\n");
-#endif
-
- /* Pass the message to the root window */
- SendMessage (hwndScreen, message, wParam, lParam);
- return 0;
-
- case WM_PAINT:
-
- /* BeginPaint gives us an hdc that clips to the invalidated region */
- hdcUpdate = BeginPaint (hwnd, &ps);
-
- /* Try to copy from the shadow buffer */
- if (!BitBlt (hdcUpdate,
- ps.rcPaint.left, ps.rcPaint.top,
- ps.rcPaint.right - ps.rcPaint.left,
- ps.rcPaint.bottom - ps.rcPaint.top,
- pRLWinPriv->hdcShadow,
- ps.rcPaint.left, ps.rcPaint.top,
- SRCCOPY))
- {
- LPVOID lpMsgBuf;
-
- /* Display a fancy error message */
- FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError (),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &lpMsgBuf,
- 0, NULL);
-
- ErrorF ("winMWExtWMWindowProc - BitBlt failed: %s\n",
- (LPSTR)lpMsgBuf);
- LocalFree (lpMsgBuf);
- }
-
- /* EndPaint frees the DC */
- EndPaint (hwnd, &ps);
- break;
-
- case WM_ACTIVATE:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_ACTIVATE\n");
-#endif
- if (LOWORD(wParam) != WA_INACTIVE)
- {
- if (winIsInternalWMRunning(pScreenInfo))
- {
-#if 0
- /* Raise the window to the top in Z order */
- wmMsg.msg = WM_WM_RAISE;
- if (fWMMsgInitialized)
- winSendMessageToWM (pScreenPriv->pWMInfo, &wmMsg);
-#endif
- /* Tell our Window Manager thread to activate the window */
- wmMsg.msg = WM_WM_ACTIVATE;
- if (fWMMsgInitialized)
- if (!pWin || !pWin->overrideRedirect) /* for OOo menus */
- winSendMessageToWM (pScreenPriv->pWMInfo, &wmMsg);
- }
- winWindowsWMSendEvent(WindowsWMControllerNotify,
- WindowsWMControllerNotifyMask,
- 1,
- WindowsWMActivateWindow,
- pWin->drawable.id,
- 0, 0,
- 0, 0);
- }
- return 0;
-
-#if 1
- case WM_WINDOWPOSCHANGING:
- pWinPos = (LPWINDOWPOS)lParam;
- if (!(pWinPos->flags & SWP_NOZORDER))
- {
- if (pRLWinPriv->fRestackingNow || pScreenPriv->fRestacking)
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("Win %08x is now restacking.\n", (unsigned int)pRLWinPriv);
-#endif
- break;
- }
-
- if (winIsInternalWMRunning(pScreenInfo) || IsRaiseOnClick (pWin))
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("Win %08x has WINDOWSWM_RAISE_ON_CLICK.\n", (unsigned int)pRLWinPriv);
-#endif
- break;
- }
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("Win %08x forbid to change z order (%08x).\n",
- (unsigned int)pRLWinPriv, (unsigned int)pWinPos->hwndInsertAfter);
-#endif
- pWinPos->flags |= SWP_NOZORDER;
- }
- break;
-#endif
-
- case WM_MOVE:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_MOVE - %d ms\n",
- (unsigned int)GetTickCount ());
-#endif
- if (g_fNoConfigureWindow) break;
-#if 0
- /* Bail if Windows window is not actually moving */
- if (pRLWinPriv->dwX == (short) LOWORD(lParam)
- && pRLWinPriv->dwY == (short) HIWORD(lParam))
- break;
-
- /* Also bail if we're maximizing, we'll do the whole thing in WM_SIZE */
- {
- WINDOWPLACEMENT windPlace;
- windPlace.length = sizeof (WINDOWPLACEMENT);
-
- /* Get current window placement */
- GetWindowPlacement (hwnd, &windPlace);
-
- /* Bail if maximizing */
- if (windPlace.showCmd == SW_MAXIMIZE
- || windPlace.showCmd == SW_SHOWMAXIMIZED)
- break;
- }
-#endif
-
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\t(%d, %d)\n", (short) LOWORD(lParam), (short) HIWORD(lParam));
-#endif
- if (!pRLWinPriv->fMovingOrSizing)
- {
- if (winIsInternalWMRunning(pScreenInfo))
- winAdjustXWindow (pWin, hwnd);
-
- winMWExtWMMoveXWindow (pWin,
- (LOWORD(lParam) - wBorderWidth (pWin)
- - GetSystemMetrics (SM_XVIRTUALSCREEN)),
- (HIWORD(lParam) - wBorderWidth (pWin)
- - GetSystemMetrics (SM_YVIRTUALSCREEN)));
- }
- return 0;
-
- case WM_SHOWWINDOW:
-#if CYGMULTIWINDOW_DEBUG || TRUE
- winDebug ("winMWExtWMWindowProc - WM_SHOWWINDOW - %d ms\n",
- (unsigned int)GetTickCount ());
-#endif
- /* Bail out if the window is being hidden */
- if (!wParam)
- return 0;
-
- if (!pScreenInfo->fInternalWM)//XXXX
- return 0;
-
- winMWExtWMUpdateWindowDecoration (pRLWinPriv, pScreenInfo);
-
- if (winIsInternalWMRunning(pScreenInfo))
- {
-#if CYGMULTIWINDOW_DEBUG || TRUE
- winDebug ("\tMapWindow\n");
-#endif
- /* Tell X to map the window */
- MapWindow (pWin, wClient(pWin));
-
- if (!pRLWinPriv->pFrame->win->overrideRedirect)
- /* Bring the Windows window to the foreground */
- SetForegroundWindow (hwnd);
-
- /* Setup the Window Manager message */
- wmMsg.msg = WM_WM_MAP;
- wmMsg.iWidth = pRLWinPriv->pFrame->width;
- wmMsg.iHeight = pRLWinPriv->pFrame->height;
-
- /* Tell our Window Manager thread to map the window */
- if (fWMMsgInitialized)
- winSendMessageToWM (pScreenPriv->pWMInfo, &wmMsg);
- }
- break;
-
- case WM_SIZING:
- /* Need to legalize the size according to WM_NORMAL_HINTS */
- /* for applications like xterm */
- return ValidateSizing (hwnd, pWin, wParam, lParam);
-
- case WM_WINDOWPOSCHANGED:
- {
- pWinPos = (LPWINDOWPOS) lParam;
-#if CYGMULTIWINDOW_DEBUG
- winDebug("winMWExtWMWindowProc - WM_WINDOWPOSCHANGED\n");
- winDebug("\tflags: %s%s%s%s%s%s%s%s%s%s%s%s\n",
- (pWinPos->flags & SWP_DRAWFRAME)?"SWP_DRAWFRAME ":"",
- (pWinPos->flags & SWP_FRAMECHANGED)?"SWP_FRAMECHANGED ":"",
- (pWinPos->flags & SWP_HIDEWINDOW)?"SWP_HIDEWINDOW ":"",
- (pWinPos->flags & SWP_NOACTIVATE)?"SWP_NOACTIVATE ":"",
- (pWinPos->flags & SWP_NOCOPYBITS)?"SWP_NOCOPYBITS ":"",
- (pWinPos->flags & SWP_NOMOVE)?"SWP_NOMOVE ":"",
- (pWinPos->flags & SWP_NOOWNERZORDER)?"SWP_NOOWNERZORDER ":"",
- (pWinPos->flags & SWP_NOSIZE)?"SWP_NOSIZE ":"",
- (pWinPos->flags & SWP_NOREDRAW)?"SWP_NOREDRAW ":"",
- (pWinPos->flags & SWP_NOSENDCHANGING)?"SWP_NOSENDCHANGING ":"",
- (pWinPos->flags & SWP_NOZORDER)?"SWP_NOZORDER ":"",
- (pWinPos->flags & SWP_SHOWWINDOW)?"SWP_SHOWWINDOW ":"");
- winDebug("\tno_configure: %s\n", (g_fNoConfigureWindow?"Yes":"No"));
- winDebug("\textend: (%d, %d, %d, %d)\n",
- pWinPos->x, pWinPos->y, pWinPos->cx, pWinPos->cy);
-
-#endif
- if (pWinPos->flags & SWP_HIDEWINDOW) break;
-
- /* Reorder if window z order was changed */
- if ((pScreenPriv != NULL)
- && !(pWinPos->flags & SWP_NOZORDER)
- && !(pWinPos->flags & SWP_SHOWWINDOW)
- && winIsInternalWMRunning(pScreenInfo))
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\twindow z order was changed\n");
-#endif
- if (pWinPos->hwndInsertAfter == HWND_TOP
- ||pWinPos->hwndInsertAfter == HWND_TOPMOST
- ||pWinPos->hwndInsertAfter == HWND_NOTOPMOST)
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\traise to top\n");
-#endif
- /* Raise the window to the top in Z order */
- wmMsg.msg = WM_WM_RAISE;
- if (fWMMsgInitialized)
- winSendMessageToWM (pScreenPriv->pWMInfo, &wmMsg);
- }
-#if 1
- else if (pWinPos->hwndInsertAfter == HWND_BOTTOM)
- {
- }
- else
- {
- /* Check if this window is top of X windows. */
- HWND hWndAbove = NULL;
- DWORD dwCurrentProcessID = GetCurrentProcessId ();
- DWORD dwWindowProcessID = 0;
-
- for (hWndAbove = pWinPos->hwndInsertAfter;
- hWndAbove != NULL;
- hWndAbove = GetNextWindow (hWndAbove, GW_HWNDPREV))
- {
- /* Ignore other XWin process's window */
- GetWindowThreadProcessId (hWndAbove, &dwWindowProcessID);
-
- if ((dwWindowProcessID == dwCurrentProcessID)
- && GetProp (hWndAbove, WIN_WINDOW_PROP)
- && !IsWindowVisible (hWndAbove)
- && !IsIconic (hWndAbove) ) /* ignore minimized windows */
- break;
- }
- /* If this is top of X windows in Windows stack,
- raise it in X stack. */
- if (hWndAbove == NULL)
- {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\traise to top\n");
-#endif
- /* Raise the window to the top in Z order */
- wmMsg.msg = WM_WM_RAISE;
- if (fWMMsgInitialized)
- winSendMessageToWM (pScreenPriv->pWMInfo, &wmMsg);
- }
- }
-#endif
- }
-
- if (!(pWinPos->flags & SWP_NOSIZE)) {
- if (IsIconic(hwnd)){
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\tIconic -> MINIMIZED\n");
-#endif
- if (winIsInternalWMRunning(pScreenInfo))
- {
- /* Raise the window to the top in Z order */
- wmMsg.msg = WM_WM_LOWER;
- if (fWMMsgInitialized)
- winSendMessageToWM (pScreenPriv->pWMInfo, &wmMsg);
- }
- winWindowsWMSendEvent(WindowsWMControllerNotify,
- WindowsWMControllerNotifyMask,
- 1,
- WindowsWMMinimizeWindow,
- pWin->drawable.id,
- 0, 0, 0, 0);
- } else if (IsZoomed(hwnd)){
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\tZoomed -> MAXIMIZED\n");
-#endif
- winWindowsWMSendEvent(WindowsWMControllerNotify,
- WindowsWMControllerNotifyMask,
- 1,
- WindowsWMMaximizeWindow,
- pWin->drawable.id,
- 0, 0, 0, 0);
- } else {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\tnone -> RESTORED\n");
-#endif
- winWindowsWMSendEvent(WindowsWMControllerNotify,
- WindowsWMControllerNotifyMask,
- 1,
- WindowsWMRestoreWindow,
- pWin->drawable.id,
- 0, 0, 0, 0);
- }
- }
- if (!g_fNoConfigureWindow ) {
-
- if (!pRLWinPriv->fMovingOrSizing
- /*&& (pWinPos->flags & SWP_SHOWWINDOW)*/) {
- GetClientRect (hwnd, &rcClient);
- MapWindowPoints (hwnd, HWND_DESKTOP, (LPPOINT)&rcClient, 2);
-
- if (!(pWinPos->flags & SWP_NOMOVE)
- &&!(pWinPos->flags & SWP_NOSIZE)) {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\tmove & resize\n");
-#endif
- if (winIsInternalWMRunning(pScreenInfo))
- winAdjustXWindow (pWin, hwnd);
-
- winMWExtWMMoveResizeXWindow (pWin,
- rcClient.left - wBorderWidth (pWin)
- - GetSystemMetrics (SM_XVIRTUALSCREEN),
- rcClient.top - wBorderWidth (pWin)
- - GetSystemMetrics (SM_YVIRTUALSCREEN),
- rcClient.right - rcClient.left
- - wBorderWidth (pWin)*2,
- rcClient.bottom - rcClient.top
- - wBorderWidth (pWin)*2);
- } else if (!(pWinPos->flags & SWP_NOMOVE)) {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\tmove\n");
-#endif
- if (winIsInternalWMRunning(pScreenInfo))
- winAdjustXWindow (pWin, hwnd);
-
- winMWExtWMMoveResizeXWindow (pWin,
- rcClient.left - wBorderWidth (pWin)
- - GetSystemMetrics (SM_XVIRTUALSCREEN),
- rcClient.top - wBorderWidth (pWin)
- - GetSystemMetrics (SM_YVIRTUALSCREEN),
- rcClient.right - rcClient.left
- - wBorderWidth (pWin)*2,
- rcClient.bottom - rcClient.top
- - wBorderWidth (pWin)*2);
- } else if (!(pWinPos->flags & SWP_NOMOVE)) {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\tmove\n");
-#endif
- if (winIsInternalWMRunning(pScreenInfo))
- winAdjustXWindow (pWin, hwnd);
-
- winMWExtWMMoveXWindow (pWin,
- rcClient.left - wBorderWidth (pWin)
- - GetSystemMetrics (SM_XVIRTUALSCREEN),
- rcClient.top - wBorderWidth (pWin)
- - GetSystemMetrics (SM_YVIRTUALSCREEN));
- } else if (!(pWinPos->flags & SWP_NOSIZE)) {
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\tresize\n");
-#endif
- if (winIsInternalWMRunning(pScreenInfo))
- winAdjustXWindow (pWin, hwnd);
-
- winMWExtWMResizeXWindow (pWin,
- rcClient.right - rcClient.left
- - wBorderWidth (pWin)*2,
- rcClient.bottom - rcClient.top
- - wBorderWidth (pWin)*2);
- }
- }
- }
- }
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_WINDOWPOSCHANGED - done.\n");
-#endif
- return 0;
-
- case WM_SIZE:
- /* see dix/window.c */
- /* FIXME: Maximize/Restore? */
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_SIZE - %d ms\n",
- (unsigned int)GetTickCount ());
-#endif
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\t(%d, %d) %d\n", (short) LOWORD(lParam), (short) HIWORD(lParam), g_fNoConfigureWindow);
-#endif
- if (g_fNoConfigureWindow) break;
-
- /* Branch on type of resizing occurring */
- switch (wParam)
- {
- case SIZE_MINIMIZED:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\tSIZE_MINIMIZED\n");
-#endif
- if (winIsInternalWMRunning(pScreenInfo))
- {
- /* Raise the window to the top in Z order */
- wmMsg.msg = WM_WM_LOWER;
- if (fWMMsgInitialized)
- winSendMessageToWM (pScreenPriv->pWMInfo, &wmMsg);
- }
- winWindowsWMSendEvent(WindowsWMControllerNotify,
- WindowsWMControllerNotifyMask,
- 1,
- WindowsWMMinimizeWindow,
- pWin->drawable.id,
- 0, 0,
- LOWORD(lParam), HIWORD(lParam));
- break;
-
- case SIZE_RESTORED:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\tSIZE_RESTORED\n");
-#endif
- winWindowsWMSendEvent(WindowsWMControllerNotify,
- WindowsWMControllerNotifyMask,
- 1,
- WindowsWMRestoreWindow,
- pWin->drawable.id,
- 0, 0,
- LOWORD(lParam), HIWORD(lParam));
- break;
-
- case SIZE_MAXIMIZED:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("\tSIZE_MAXIMIZED\n");
-#endif
- winWindowsWMSendEvent(WindowsWMControllerNotify,
- WindowsWMControllerNotifyMask,
- 1,
- WindowsWMMaximizeWindow,
- pWin->drawable.id,
- 0, 0,
- LOWORD(lParam), HIWORD(lParam));
- break;
- }
-
- /* Perform the resize and notify the X client */
- if (!pRLWinPriv->fMovingOrSizing)
- {
- if (winIsInternalWMRunning(pScreenInfo))
- winAdjustXWindow (pWin, hwnd);
-
- winMWExtWMResizeXWindow (pWin,
- (short) LOWORD(lParam)
- - wBorderWidth (pWin)*2,
- (short) HIWORD(lParam)
- - wBorderWidth (pWin)*2);
- }
- break;
-
- case WM_ACTIVATEAPP:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_ACTIVATEAPP - %d ms\n",
- (unsigned int)GetTickCount ());
-#endif
- if (wParam)
- {
- if (winIsInternalWMRunning(pScreenInfo))
- {
- }
- else
- {
- }
- winWindowsWMSendEvent(WindowsWMActivationNotify,
- WindowsWMActivationNotifyMask,
- 1,
- WindowsWMIsActive,
- pWin->drawable.id,
- 0, 0,
- 0, 0);
- }
- else
- {
- winWindowsWMSendEvent(WindowsWMActivationNotify,
- WindowsWMActivationNotifyMask,
- 1,
- WindowsWMIsInactive,
- pWin->drawable.id,
- 0, 0,
- 0, 0);
- }
- break;
-
- case WM_SETCURSOR:
- if (LOWORD(lParam) == HTCLIENT)
- {
- if (!g_fSoftwareCursor) SetCursor (pScreenPriv->cursor.handle);
- return TRUE;
- }
- break;
-
- case WM_ENTERSIZEMOVE:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_ENTERSIZEMOVE - %d ms\n",
- (unsigned int)GetTickCount ());
-#endif
- pRLWinPriv->fMovingOrSizing = TRUE;
- break;
-
- case WM_EXITSIZEMOVE:
-#if CYGMULTIWINDOW_DEBUG
- winDebug ("winMWExtWMWindowProc - WM_EXITSIZEMOVE - %d ms\n",
- (unsigned int)GetTickCount ());
-#endif
- pRLWinPriv->fMovingOrSizing = FALSE;
-
- GetClientRect (hwnd, &rcClient);
-
- MapWindowPoints (hwnd, HWND_DESKTOP, (LPPOINT)&rcClient, 2);
-
- if (winIsInternalWMRunning(pScreenInfo))
- winAdjustXWindow (pWin, hwnd);
-
- winMWExtWMMoveResizeXWindow (pWin,
- rcClient.left - wBorderWidth (pWin)
- - GetSystemMetrics (SM_XVIRTUALSCREEN),
- rcClient.top - wBorderWidth (pWin)
- - GetSystemMetrics (SM_YVIRTUALSCREEN),
- rcClient.right - rcClient.left
- - wBorderWidth (pWin)*2,
- rcClient.bottom - rcClient.top
- - wBorderWidth (pWin)*2);
- break;
-
- case WM_MANAGE:
- ErrorF ("winMWExtWMWindowProc - WM_MANAGE\n");
- break;
-
- case WM_UNMANAGE:
- ErrorF ("winMWExtWMWindowProc - WM_UNMANAGE\n");
- break;
-
- default:
- break;
- }
-
- return DefWindowProc (hwnd, message, wParam, lParam);
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winwindow.c b/nx-X11/programs/Xserver/hw/xwin/winwindow.c
deleted file mode 100644
index be160196a..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winwindow.c
+++ /dev/null
@@ -1,650 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Harold L Hunt II
- * Kensuke Matsuzaki
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winwindow.c,v 1.9 2003/11/10 18:22:44 tsi Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-
-/*
- * Prototypes for local functions
- */
-
-static int
-winAddRgn (WindowPtr pWindow, pointer data);
-
-static
-void
-winUpdateRgnRootless (WindowPtr pWindow);
-
-#ifdef SHAPE
-static
-void
-winReshapeRootless (WindowPtr pWin);
-#endif
-
-
-#ifdef XWIN_NATIVEGDI
-/* See Porting Layer Definition - p. 37 */
-/* See mfb/mfbwindow.c - mfbCreateWindow() */
-
-Bool
-winCreateWindowNativeGDI (WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winCreateWindowNativeGDI (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(CreateWindow);
- fResult = (*pScreen->CreateWindow) (pWin);
- WIN_WRAP(CreateWindow, winCreateWindowNativeGDI);
-
- return fResult;
-}
-
-
-/* See Porting Layer Definition - p. 37 */
-/* See mfb/mfbwindow.c - mfbDestroyWindow() */
-
-Bool
-winDestroyWindowNativeGDI (WindowPtr pWin)
-{
- Bool fResult = TRUE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winDestroyWindowNativeGDI (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(DestroyWindow);
- fResult = (*pScreen->DestroyWindow)(pWin);
- WIN_WRAP(DestroyWindow, winDestroyWindowNativeGDI);
-
- return fResult;
-}
-
-
-/* See Porting Layer Definition - p. 37 */
-/* See mfb/mfbwindow.c - mfbPositionWindow() */
-
-Bool
-winPositionWindowNativeGDI (WindowPtr pWin, int x, int y)
-{
- Bool fResult = TRUE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winPositionWindowNativeGDI (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(PositionWindow);
- fResult = (*pScreen->PositionWindow)(pWin, x, y);
- WIN_WRAP(PositionWindow, winPositionWindowNativeGDI);
-
- return fResult;
-}
-
-
-/* See Porting Layer Definition - p. 39 */
-/* See mfb/mfbwindow.c - mfbCopyWindow() */
-
-void
-winCopyWindowNativeGDI (WindowPtr pWin,
- DDXPointRec ptOldOrg,
- RegionPtr prgnSrc)
-{
- DDXPointPtr pptSrc;
- DDXPointPtr ppt;
- RegionPtr prgnDst;
- BoxPtr pBox;
- int dx, dy;
- int i, nbox;
- WindowPtr pwinRoot;
- BoxPtr pBoxDst;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winScreenPriv(pScreen);
-
-#if 0
- ErrorF ("winCopyWindow\n");
-#endif
-
- /* Get a pointer to the root window */
- pwinRoot = WindowTable[pWin->drawable.pScreen->myNum];
-
- /* Create a region for the destination */
- prgnDst = REGION_CREATE(pWin->drawable.pScreen, NULL, 1);
-
- /* Calculate the shift from the source to the destination */
- dx = ptOldOrg.x - pWin->drawable.x;
- dy = ptOldOrg.y - pWin->drawable.y;
-
- /* Translate the region from the destination to the source? */
- REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, -dx, -dy);
- REGION_INTERSECT(pWin->drawable.pScreen, prgnDst, &pWin->borderClip,
- prgnSrc);
-
- /* Get a pointer to the first box in the region to be copied */
- pBox = REGION_RECTS(prgnDst);
-
- /* Get the number of boxes in the region */
- nbox = REGION_NUM_RECTS(prgnDst);
-
- /* Allocate source points for each box */
- if(!(pptSrc = (DDXPointPtr )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec))))
- return;
-
- /* Set an iterator pointer */
- ppt = pptSrc;
-
- /* Calculate the source point of each box? */
- for (i = nbox; --i >= 0; ppt++, pBox++)
- {
- ppt->x = pBox->x1 + dx;
- ppt->y = pBox->y1 + dy;
- }
-
- /* Setup loop pointers again */
- pBoxDst = REGION_RECTS(prgnDst);
- ppt = pptSrc;
-
-#if 0
- ErrorF ("winCopyWindow - x1\tx2\ty1\ty2\tx\ty\n");
-#endif
-
- /* BitBlt each source to the destination point */
- for (i = nbox; --i >= 0; pBoxDst++, ppt++)
- {
-#if 0
- ErrorF ("winCopyWindow - %d\t%d\t%d\t%d\t%d\t%d\n",
- pBoxDst->x1, pBoxDst->x2, pBoxDst->y1, pBoxDst->y2,
- ppt->x, ppt->y);
-#endif
-
- BitBlt (pScreenPriv->hdcScreen,
- pBoxDst->x1, pBoxDst->y1,
- pBoxDst->x2 - pBoxDst->x1, pBoxDst->y2 - pBoxDst->y1,
- pScreenPriv->hdcScreen,
- ppt->x, ppt->y,
- SRCCOPY);
- }
-
- /* Cleanup the regions, etc. */
- DEALLOCATE_LOCAL(pptSrc);
- REGION_DESTROY(pWin->drawable.pScreen, prgnDst);
-}
-
-
-/* See Porting Layer Definition - p. 37 */
-/* See mfb/mfbwindow.c - mfbChangeWindowAttributes() */
-
-Bool
-winChangeWindowAttributesNativeGDI (WindowPtr pWin, unsigned long mask)
-{
- Bool fResult = TRUE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winChangeWindowAttributesNativeGDI (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(ChangeWindowAttributes);
- fResult = (*pScreen->ChangeWindowAttributes)(pWin, mask);
- WIN_WRAP(ChangeWindowAttributes, winChangeWindowAttributesNativeGDI);
-
- /*
- * NOTE: We do not currently need to do anything here.
- */
-
- return fResult;
-}
-
-
-/* See Porting Layer Definition - p. 37
- * Also referred to as UnrealizeWindow
- */
-
-Bool
-winUnmapWindowNativeGDI (WindowPtr pWin)
-{
- Bool fResult = TRUE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winUnmapWindowNativeGDI (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(UnrealizeWindow);
- fResult = (*pScreen->UnrealizeWindow)(pWin);
- WIN_WRAP(UnrealizeWindow, winUnmapWindowNativeGDI);
-
- return fResult;
-}
-
-
-/* See Porting Layer Definition - p. 37
- * Also referred to as RealizeWindow
- */
-
-Bool
-winMapWindowNativeGDI (WindowPtr pWin)
-{
- Bool fResult = TRUE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winMapWindowNativeGDI (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(RealizeWindow);
- fResult = (*pScreen->RealizeWindow)(pWin);
- WIN_WRAP(RealizeWindow, winMapWindowMultiWindow);
-
- return fResult;
-
-}
-#endif
-
-
-/* See Porting Layer Definition - p. 37 */
-/* See mfb/mfbwindow.c - mfbCreateWindow() */
-
-Bool
-winCreateWindowRootless (WindowPtr pWin)
-{
- Bool fResult = FALSE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winCreateWindowRootless (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(CreateWindow);
- fResult = (*pScreen->CreateWindow) (pWin);
- WIN_WRAP(CreateWindow, winCreateWindowRootless);
-
- pWinPriv->hRgn = NULL;
-
- return fResult;
-}
-
-
-/* See Porting Layer Definition - p. 37 */
-/* See mfb/mfbwindow.c - mfbDestroyWindow() */
-
-Bool
-winDestroyWindowRootless (WindowPtr pWin)
-{
- Bool fResult = FALSE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winDestroyWindowRootless (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(DestroyWindow);
- fResult = (*pScreen->DestroyWindow)(pWin);
- WIN_WRAP(DestroyWindow, winDestroyWindowRootless);
-
- if (pWinPriv->hRgn != NULL)
- {
- DeleteObject(pWinPriv->hRgn);
- pWinPriv->hRgn = NULL;
- }
-
- winUpdateRgnRootless (pWin);
-
- return fResult;
-}
-
-
-/* See Porting Layer Definition - p. 37 */
-/* See mfb/mfbwindow.c - mfbPositionWindow() */
-
-Bool
-winPositionWindowRootless (WindowPtr pWin, int x, int y)
-{
- Bool fResult = FALSE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-
-#if CYGDEBUG
- winTrace ("winPositionWindowRootless (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(PositionWindow);
- fResult = (*pScreen->PositionWindow)(pWin, x, y);
- WIN_WRAP(PositionWindow, winPositionWindowRootless);
-
- winUpdateRgnRootless (pWin);
-
- return fResult;
-}
-
-
-/* See Porting Layer Definition - p. 37 */
-/* See mfb/mfbwindow.c - mfbChangeWindowAttributes() */
-
-Bool
-winChangeWindowAttributesRootless (WindowPtr pWin, unsigned long mask)
-{
- Bool fResult = FALSE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winChangeWindowAttributesRootless (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(ChangeWindowAttributes);
- fResult = (*pScreen->ChangeWindowAttributes)(pWin, mask);
- WIN_WRAP(ChangeWindowAttributes, winChangeWindowAttributesRootless);
-
- winUpdateRgnRootless (pWin);
-
- return fResult;
-}
-
-
-/* See Porting Layer Definition - p. 37
- * Also referred to as UnrealizeWindow
- */
-
-Bool
-winUnmapWindowRootless (WindowPtr pWin)
-{
- Bool fResult = FALSE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winUnmapWindowRootless (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(UnrealizeWindow);
- fResult = (*pScreen->UnrealizeWindow)(pWin);
- WIN_WRAP(UnrealizeWindow, winUnmapWindowRootless);
-
- if (pWinPriv->hRgn != NULL)
- {
- DeleteObject(pWinPriv->hRgn);
- pWinPriv->hRgn = NULL;
- }
-
- winUpdateRgnRootless (pWin);
-
- return fResult;
-}
-
-
-/* See Porting Layer Definition - p. 37
- * Also referred to as RealizeWindow
- */
-
-Bool
-winMapWindowRootless (WindowPtr pWin)
-{
- Bool fResult = FALSE;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winMapWindowRootless (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(RealizeWindow);
- fResult = (*pScreen->RealizeWindow)(pWin);
- WIN_WRAP(RealizeWindow, winMapWindowRootless);
-
-#ifdef SHAPE
- winReshapeRootless (pWin);
-#endif
-
- winUpdateRgnRootless (pWin);
-
- return fResult;
-}
-
-
-#ifdef SHAPE
-void
-winSetShapeRootless (WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- winWindowPriv(pWin);
- winScreenPriv(pScreen);
-
-#if CYGDEBUG
- winTrace ("winSetShapeRootless (%p)\n", pWin);
-#endif
-
- WIN_UNWRAP(SetShape);
- (*pScreen->SetShape)(pWin);
- WIN_WRAP(SetShape, winSetShapeRootless);
-
- winReshapeRootless (pWin);
- winUpdateRgnRootless (pWin);
-
- return;
-}
-#endif
-
-
-/*
- * Local function for adding a region to the Windows window region
- */
-
-static
-int
-winAddRgn (WindowPtr pWin, pointer data)
-{
- int iX, iY, iWidth, iHeight, iBorder;
- HRGN hRgn = *(HRGN*)data;
- HRGN hRgnWin;
- winWindowPriv(pWin);
-
- /* If pWin is not Root */
- if (pWin->parent != NULL)
- {
-#if CYGDEBUG
- winDebug ("winAddRgn ()\n");
-#endif
- if (pWin->mapped)
- {
- iBorder = wBorderWidth (pWin);
-
- iX = pWin->drawable.x - iBorder;
- iY = pWin->drawable.y - iBorder;
-
- iWidth = pWin->drawable.width + iBorder * 2;
- iHeight = pWin->drawable.height + iBorder * 2;
-
- hRgnWin = CreateRectRgn (0, 0, iWidth, iHeight);
-
- if (hRgnWin == NULL)
- {
- ErrorF ("winAddRgn - CreateRectRgn () failed\n");
- ErrorF (" Rect %d %d %d %d\n",
- iX, iY, iX + iWidth, iY + iHeight);
- }
-
- if (pWinPriv->hRgn)
- {
- if (CombineRgn (hRgnWin, hRgnWin, pWinPriv->hRgn, RGN_AND)
- == ERROR)
- {
- ErrorF ("winAddRgn - CombineRgn () failed\n");
- }
- }
-
- OffsetRgn (hRgnWin, iX, iY);
-
- if (CombineRgn (hRgn, hRgn, hRgnWin, RGN_OR) == ERROR)
- {
- ErrorF ("winAddRgn - CombineRgn () failed\n");
- }
-
- DeleteObject (hRgnWin);
- }
- return WT_DONTWALKCHILDREN;
- }
- else
- {
- return WT_WALKCHILDREN;
- }
-}
-
-
-/*
- * Local function to update the Windows window's region
- */
-
-static
-void
-winUpdateRgnRootless (WindowPtr pWin)
-{
- HRGN hRgn = CreateRectRgn (0, 0, 0, 0);
-
- if (hRgn != NULL)
- {
- WalkTree (pWin->drawable.pScreen, winAddRgn, &hRgn);
- SetWindowRgn (winGetScreenPriv(pWin->drawable.pScreen)->hwndScreen,
- hRgn, TRUE);
- }
- else
- {
- ErrorF ("winUpdateRgnRootless - CreateRectRgn failed.\n");
- }
-}
-
-
-#ifdef SHAPE
-static
-void
-winReshapeRootless (WindowPtr pWin)
-{
- int nRects;
- /* ScreenPtr pScreen = pWin->drawable.pScreen;*/
- RegionRec rrNewShape;
- BoxPtr pShape, pRects, pEnd;
- HRGN hRgn, hRgnRect;
- winWindowPriv(pWin);
-
-#if CYGDEBUG
- winDebug ("winReshapeRootless ()\n");
-#endif
-
- /* Bail if the window is the root window */
- if (pWin->parent == NULL)
- return;
-
- /* Bail if the window is not top level */
- if (pWin->parent->parent != NULL)
- return;
-
- /* Free any existing window region stored in the window privates */
- if (pWinPriv->hRgn != NULL)
- {
- DeleteObject (pWinPriv->hRgn);
- pWinPriv->hRgn = NULL;
- }
-
- /* Bail if the window has no bounding region defined */
- if (!wBoundingShape (pWin))
- return;
-
- REGION_NULL(pScreen, &rrNewShape);
- REGION_COPY(pScreen, &rrNewShape, wBoundingShape(pWin));
- REGION_TRANSLATE(pScreen, &rrNewShape, pWin->borderWidth,
- pWin->borderWidth);
-
- nRects = REGION_NUM_RECTS(&rrNewShape);
- pShape = REGION_RECTS(&rrNewShape);
-
- if (nRects > 0)
- {
- /* Create initial empty Windows region */
- hRgn = CreateRectRgn (0, 0, 0, 0);
-
- /* Loop through all rectangles in the X region */
- for (pRects = pShape, pEnd = pShape + nRects; pRects < pEnd; pRects++)
- {
- /* Create a Windows region for the X rectangle */
- hRgnRect = CreateRectRgn (pRects->x1, pRects->y1,
- pRects->x2, pRects->y2);
- if (hRgnRect == NULL)
- {
- ErrorF("winReshapeRootless - CreateRectRgn() failed\n");
- }
-
- /* Merge the Windows region with the accumulated region */
- if (CombineRgn (hRgn, hRgn, hRgnRect, RGN_OR) == ERROR)
- {
- ErrorF("winReshapeRootless - CombineRgn() failed\n");
- }
-
- /* Delete the temporary Windows region */
- DeleteObject (hRgnRect);
- }
-
- /* Save a handle to the composite region in the window privates */
- pWinPriv->hRgn = hRgn;
- }
-
- REGION_UNINIT(pScreen, &rrNewShape);
-
- return;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winwindow.h b/nx-X11/programs/Xserver/hw/xwin/winwindow.h
deleted file mode 100644
index d0499bcbb..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winwindow.h
+++ /dev/null
@@ -1,151 +0,0 @@
-#if !defined(_WINWINDOW_H_)
-#define _WINWINDOW_H_
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Kensuke Matsuzaki
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winwindow.h,v 1.3 2003/10/02 13:30:11 eich Exp $ */
-
-#ifndef NO
-#define NO 0
-#endif
-#ifndef YES
-#define YES 1
-#endif
-
-/* Constant strings */
-#ifndef PROJECT_NAME
-# define PROJECT_NAME "Cygwin/X"
-#endif
-#define WINDOW_CLASS "cygwin/x"
-#define WINDOW_TITLE PROJECT_NAME " - %s:%d"
-#define WINDOW_TITLE_XDMCP PROJECT_NAME " - %s"
-#define WIN_SCR_PROP "cyg_screen_prop rl"
-#define WINDOW_CLASS_X "cygwin/x X rl"
-#define WINDOW_TITLE_X PROJECT_NAME " X"
-#define WIN_WINDOW_PROP "cyg_window_prop_rl"
-#ifdef HAS_DEVWINDOWS
-# define WIN_MSG_QUEUE_FNAME "/dev/windows"
-#endif
-#define WIN_WID_PROP "cyg_wid_prop_rl"
-#define WIN_NEEDMANAGE_PROP "cyg_override_redirect_prop_rl"
-#ifndef CYGMULTIWINDOW_DEBUG
-#define CYGMULTIWINDOW_DEBUG NO
-#endif
-#ifndef CYGWINDOWING_DEBUG
-#define CYGWINDOWING_DEBUG NO
-#endif
-
-typedef struct _winPrivScreenRec *winPrivScreenPtr;
-
-
-/*
- * Window privates
- */
-
-typedef struct
-{
- DWORD dwDummy;
- HRGN hRgn;
- HWND hWnd;
- winPrivScreenPtr pScreenPriv;
- Bool fXKilled;
-
- /* Privates used by primary fb DirectDraw server */
- LPDDSURFACEDESC pddsdPrimary;
-
- /* Privates used by shadow fb DirectDraw Nonlocking server */
- LPDIRECTDRAWSURFACE4 pddsPrimary4;
-
- /* Privates used by both shadow fb DirectDraw servers */
- LPDIRECTDRAWCLIPPER pddcPrimary;
-} winPrivWinRec, *winPrivWinPtr;
-
-#ifdef XWIN_MULTIWINDOW
-typedef struct _winWMMessageRec{
- DWORD dwID;
- DWORD msg;
- int iWindow;
- HWND hwndWindow;
- int iX, iY;
- int iWidth, iHeight;
-} winWMMessageRec, *winWMMessagePtr;
-
-
-/*
- * winmultiwindowwm.c
- */
-
-#define WM_WM_MOVE (WM_USER + 1)
-#define WM_WM_SIZE (WM_USER + 2)
-#define WM_WM_RAISE (WM_USER + 3)
-#define WM_WM_LOWER (WM_USER + 4)
-#define WM_WM_MAP (WM_USER + 5)
-#define WM_WM_UNMAP (WM_USER + 6)
-#define WM_WM_KILL (WM_USER + 7)
-#define WM_WM_ACTIVATE (WM_USER + 8)
-#define WM_WM_NAME_EVENT (WM_USER + 9)
-#define WM_WM_HINTS_EVENT (WM_USER + 10)
-#define WM_WM_CHANGE_STATE (WM_USER + 11)
-#define WM_MANAGE (WM_USER + 100)
-#define WM_UNMANAGE (WM_USER + 102)
-
-void
-winSendMessageToWM (void *pWMInfo, winWMMessagePtr msg);
-
-Bool
-winInitWM (void **ppWMInfo,
- pthread_t *ptWMProc,
- pthread_t *ptXMsgProc,
- pthread_mutex_t *ppmServerStarted,
- int dwScreen,
- HWND hwndScreen,
- BOOL allowOtherWM);
-
-void
-winDeinitMultiWindowWM (void);
-
-void
-winMinimizeWindow (Window id);
-
-
-/*
- * winmultiwindowicons.c
- */
-
-void
-winUpdateIcon (Window id);
-
-void
-winInitGlobalIcons (void);
-
-void
-winDestroyIcon(HICON hIcon);
-
-#endif /* XWIN_MULTIWINDOW */
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/winwindowswm.c b/nx-X11/programs/Xserver/hw/xwin/winwindowswm.c
deleted file mode 100755
index 81a161041..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winwindowswm.c
+++ /dev/null
@@ -1,666 +0,0 @@
-/* WindowsWM extension is based on AppleWM extension */
-/**************************************************************************
-
-Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved.
-Copyright (c) 2003 Torrey T. Lyons. 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 the rights to use, copy, modify, merge, publish,
-distribute, sub license, 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 PRECISION INSIGHT AND/OR ITS 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.
-
-**************************************************************************/
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include "misc.h"
-#include "dixstruct.h"
-#include "extnsionst.h"
-#include "colormapst.h"
-#include "cursorstr.h"
-#include "scrnintstr.h"
-#include "servermd.h"
-#include "swaprep.h"
-#define _WINDOWSWM_SERVER_
-#include "windowswmstr.h"
-
-static int WMErrorBase;
-
-static DISPATCH_PROC(ProcWindowsWMDispatch);
-static DISPATCH_PROC(SProcWindowsWMDispatch);
-
-static void WindowsWMResetProc(ExtensionEntry* extEntry);
-
-static unsigned char WMReqCode = 0;
-static int WMEventBase = 0;
-
-static RESTYPE ClientType, EventType; /* resource types for event masks */
-static XID eventResource;
-
-/* Currently selected events */
-static unsigned int eventMask = 0;
-
-static int WMFreeClient (pointer data, XID id);
-static int WMFreeEvents (pointer data, XID id);
-static void SNotifyEvent(xWindowsWMNotifyEvent *from, xWindowsWMNotifyEvent *to);
-
-typedef struct _WMEvent *WMEventPtr;
-typedef struct _WMEvent {
- WMEventPtr next;
- ClientPtr client;
- XID clientResource;
- unsigned int mask;
-} WMEventRec;
-
-static inline BoxRec
-make_box (int x, int y, int w, int h)
-{
- BoxRec r;
- r.x1 = x;
- r.y1 = y;
- r.x2 = x + w;
- r.y2 = y + h;
- return r;
-}
-
-void
-winWindowsWMExtensionInit ()
-{
- ExtensionEntry* extEntry;
-
- ClientType = CreateNewResourceType(WMFreeClient);
- EventType = CreateNewResourceType(WMFreeEvents);
- eventResource = FakeClientID(0);
-
- if (ClientType && EventType &&
- (extEntry = AddExtension(WINDOWSWMNAME,
- WindowsWMNumberEvents,
- WindowsWMNumberErrors,
- ProcWindowsWMDispatch,
- SProcWindowsWMDispatch,
- WindowsWMResetProc,
- StandardMinorOpcode)))
- {
- WMReqCode = (unsigned char)extEntry->base;
- WMErrorBase = extEntry->errorBase;
- WMEventBase = extEntry->eventBase;
- EventSwapVector[WMEventBase] = (EventSwapPtr) SNotifyEvent;
- }
-}
-
-/*ARGSUSED*/
-static void
-WindowsWMResetProc (ExtensionEntry* extEntry)
-{
-}
-
-static int
-ProcWindowsWMQueryVersion(register ClientPtr client)
-{
- xWindowsWMQueryVersionReply rep;
- register int n;
-
- REQUEST_SIZE_MATCH(xWindowsWMQueryVersionReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.majorVersion = WINDOWS_WM_MAJOR_VERSION;
- rep.minorVersion = WINDOWS_WM_MINOR_VERSION;
- rep.patchVersion = WINDOWS_WM_PATCH_VERSION;
- if (client->swapped)
- {
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, n);
- }
- WriteToClient(client, sizeof(xWindowsWMQueryVersionReply), (char *)&rep);
- return (client->noClientException);
-}
-
-
-/* events */
-
-static inline void
-updateEventMask (WMEventPtr *pHead)
-{
- WMEventPtr pCur;
-
- eventMask = 0;
- for (pCur = *pHead; pCur != NULL; pCur = pCur->next)
- eventMask |= pCur->mask;
-}
-
-/*ARGSUSED*/
-static int
-WMFreeClient (pointer data, XID id)
-{
- WMEventPtr pEvent;
- WMEventPtr *pHead, pCur, pPrev;
-
- pEvent = (WMEventPtr) data;
- pHead = (WMEventPtr *) LookupIDByType(eventResource, EventType);
- if (pHead)
- {
- pPrev = 0;
- for (pCur = *pHead; pCur && pCur != pEvent; pCur=pCur->next)
- pPrev = pCur;
- if (pCur)
- {
- if (pPrev)
- pPrev->next = pEvent->next;
- else
- *pHead = pEvent->next;
- }
- updateEventMask (pHead);
- }
- xfree ((pointer) pEvent);
- return 1;
-}
-
-/*ARGSUSED*/
-static int
-WMFreeEvents (pointer data, XID id)
-{
- WMEventPtr *pHead, pCur, pNext;
-
- pHead = (WMEventPtr *) data;
- for (pCur = *pHead; pCur; pCur = pNext)
- {
- pNext = pCur->next;
- FreeResource (pCur->clientResource, ClientType);
- xfree ((pointer) pCur);
- }
- xfree ((pointer) pHead);
- eventMask = 0;
- return 1;
-}
-
-static int
-ProcWindowsWMSelectInput (register ClientPtr client)
-{
- REQUEST(xWindowsWMSelectInputReq);
- WMEventPtr pEvent, pNewEvent, *pHead;
- XID clientResource;
-
- REQUEST_SIZE_MATCH (xWindowsWMSelectInputReq);
- pHead = (WMEventPtr *)SecurityLookupIDByType(client, eventResource,
- EventType, SecurityWriteAccess);
- if (stuff->mask != 0)
- {
- if (pHead)
- {
- /* check for existing entry. */
- for (pEvent = *pHead; pEvent; pEvent = pEvent->next)
- {
- if (pEvent->client == client)
- {
- pEvent->mask = stuff->mask;
- updateEventMask (pHead);
- return Success;
- }
- }
- }
-
- /* build the entry */
- pNewEvent = (WMEventPtr) xalloc (sizeof (WMEventRec));
- if (!pNewEvent)
- return BadAlloc;
- pNewEvent->next = 0;
- pNewEvent->client = client;
- pNewEvent->mask = stuff->mask;
- /*
- * add a resource that will be deleted when
- * the client goes away
- */
- clientResource = FakeClientID (client->index);
- pNewEvent->clientResource = clientResource;
- if (!AddResource (clientResource, ClientType, (pointer)pNewEvent))
- return BadAlloc;
- /*
- * create a resource to contain a pointer to the list
- * of clients selecting input. This must be indirect as
- * the list may be arbitrarily rearranged which cannot be
- * done through the resource database.
- */
- if (!pHead)
- {
- pHead = (WMEventPtr *) xalloc (sizeof (WMEventPtr));
- if (!pHead ||
- !AddResource (eventResource, EventType, (pointer)pHead))
- {
- FreeResource (clientResource, RT_NONE);
- return BadAlloc;
- }
- *pHead = 0;
- }
- pNewEvent->next = *pHead;
- *pHead = pNewEvent;
- updateEventMask (pHead);
- }
- else if (stuff->mask == 0)
- {
- /* delete the interest */
- if (pHead)
- {
- pNewEvent = 0;
- for (pEvent = *pHead; pEvent; pEvent = pEvent->next)
- {
- if (pEvent->client == client)
- break;
- pNewEvent = pEvent;
- }
- if (pEvent)
- {
- FreeResource (pEvent->clientResource, ClientType);
- if (pNewEvent)
- pNewEvent->next = pEvent->next;
- else
- *pHead = pEvent->next;
- xfree (pEvent);
- updateEventMask (pHead);
- }
- }
- }
- else
- {
- client->errorValue = stuff->mask;
- return BadValue;
- }
- return Success;
-}
-
-/*
- * deliver the event
- */
-
-void
-winWindowsWMSendEvent (int type, unsigned int mask, int which, int arg,
- Window window, int x, int y, int w, int h)
-{
- WMEventPtr *pHead, pEvent;
- ClientPtr client;
- xWindowsWMNotifyEvent se;
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winWindowsWMSendEvent %d %d %d %d, %d %d - %d %d\n",
- type, mask, which, arg, x, y, w, h);
-#endif
- pHead = (WMEventPtr *) LookupIDByType(eventResource, EventType);
- if (!pHead)
- return;
- for (pEvent = *pHead; pEvent; pEvent = pEvent->next)
- {
- client = pEvent->client;
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winWindowsWMSendEvent - x%08x\n", (int) client);
-#endif
- if ((pEvent->mask & mask) == 0
- || client == serverClient || client->clientGone)
- {
- continue;
- }
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winWindowsWMSendEvent - send\n");
-#endif
- se.type = type + WMEventBase;
- se.kind = which;
- se.window = window;
- se.arg = arg;
- se.x = x;
- se.y = y;
- se.w = w;
- se.h = h;
- se.sequenceNumber = client->sequence;
- se.time = currentTime.milliseconds;
- WriteEventsToClient (client, 1, (xEvent *) &se);
- }
-}
-
-/* Safe to call from any thread. */
-unsigned int
-WindowsWMSelectedEvents (void)
-{
- return eventMask;
-}
-
-
-/* general utility functions */
-
-static int
-ProcWindowsWMDisableUpdate (register ClientPtr client)
-{
- REQUEST_SIZE_MATCH(xWindowsWMDisableUpdateReq);
-
- //winDisableUpdate();
-
- return (client->noClientException);
-}
-
-static int
-ProcWindowsWMReenableUpdate (register ClientPtr client)
-{
- REQUEST_SIZE_MATCH(xWindowsWMReenableUpdateReq);
-
- //winEnableUpdate();
-
- return (client->noClientException);
-}
-
-
-/* window functions */
-
-static int
-ProcWindowsWMSetFrontProcess (register ClientPtr client)
-{
- REQUEST_SIZE_MATCH(xWindowsWMSetFrontProcessReq);
-
- //QuartzMessageMainThread(kWindowsSetFrontProcess, NULL, 0);
-
- return (client->noClientException);
-}
-
-
-/* frame functions */
-
-static int
-ProcWindowsWMFrameGetRect (register ClientPtr client)
-{
- xWindowsWMFrameGetRectReply rep;
- BoxRec ir;
- RECT rcNew;
- REQUEST(xWindowsWMFrameGetRectReq);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("ProcWindowsWMFrameGetRect %d %d\n",
- (sizeof(xWindowsWMFrameGetRectReq) >> 2), (int) client->req_len);
-#endif
-
- REQUEST_SIZE_MATCH(xWindowsWMFrameGetRectReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- ir = make_box (stuff->ix, stuff->iy, stuff->iw, stuff->ih);
-
- if (stuff->frame_rect != 0)
- {
- ErrorF ("ProcWindowsWMFrameGetRect - stuff->frame_rect != 0\n");
- return BadValue;
- }
-
- /* Store the origin, height, and width in a rectangle structure */
- SetRect (&rcNew, stuff->ix, stuff->iy,
- stuff->ix + stuff->iw, stuff->iy + stuff->ih);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("ProcWindowsWMFrameGetRect - %d %d %d %d\n",
- stuff->ix, stuff->iy, stuff->ix + stuff->iw, stuff->iy + stuff->ih);
-#endif
-
- /*
- * Calculate the required size of the Windows window rectangle,
- * given the size of the Windows window client area.
- */
- AdjustWindowRectEx (&rcNew, stuff->frame_style, FALSE, stuff->frame_style_ex);
- rep.x = rcNew.left;
- rep.y = rcNew.top;
- rep.w = rcNew.right - rcNew.left;
- rep.h = rcNew.bottom - rcNew.top;
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("ProcWindowsWMFrameGetRect - %d %d %d %d\n",
- rep.x, rep.y, rep.w, rep.h);
-#endif
-
- WriteToClient(client, sizeof(xWindowsWMFrameGetRectReply), (char *)&rep);
- return (client->noClientException);
-}
-
-
-static int
-ProcWindowsWMFrameDraw (register ClientPtr client)
-{
- REQUEST(xWindowsWMFrameDrawReq);
- WindowPtr pWin;
- win32RootlessWindowPtr pRLWinPriv;
- RECT rcNew;
- int nCmdShow;
- RegionRec newShape;
- ScreenPtr pScreen;
-
- REQUEST_SIZE_MATCH (xWindowsWMFrameDrawReq);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("ProcWindowsWMFrameDraw\n");
-#endif
- if (!(pWin = SecurityLookupWindow((Drawable)stuff->window,
- client, SecurityReadAccess)))
- {
- return BadValue;
- }
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("ProcWindowsWMFrameDraw - Window found\n");
-#endif
-
- pRLWinPriv = (win32RootlessWindowPtr) RootlessFrameForWindow (pWin, TRUE);
- if (pRLWinPriv == 0) return BadWindow;
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("ProcWindowsWMFrameDraw - HWND 0x%08x 0x%08x 0x%08x\n",
- (int) pRLWinPriv->hWnd, (int) stuff->frame_style,
- (int) stuff->frame_style_ex);
- ErrorF ("ProcWindowsWMFrameDraw - %d %d %d %d\n",
- stuff->ix, stuff->iy, stuff->iw, stuff->ih);
-#endif
-
- /* Store the origin, height, and width in a rectangle structure */
- SetRect (&rcNew, stuff->ix, stuff->iy,
- stuff->ix + stuff->iw, stuff->iy + stuff->ih);
-
- /*
- * Calculate the required size of the Windows window rectangle,
- * given the size of the Windows window client area.
- */
- AdjustWindowRectEx (&rcNew, stuff->frame_style, FALSE, stuff->frame_style_ex);
-
- /* Set the window extended style flags */
- if (!SetWindowLongPtr (pRLWinPriv->hWnd, GWL_EXSTYLE, stuff->frame_style_ex))
- {
- return BadValue;
- }
-
- /* Set the window standard style flags */
- if (!SetWindowLongPtr (pRLWinPriv->hWnd, GWL_STYLE, stuff->frame_style))
- {
- return BadValue;
- }
-
- /* Flush the window style */
- if (!SetWindowPos (pRLWinPriv->hWnd, NULL,
- rcNew.left, rcNew.top,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top,
- SWP_NOZORDER | SWP_FRAMECHANGED | SWP_NOACTIVATE))
- {
- return BadValue;
- }
- if (!IsWindowVisible(pRLWinPriv->hWnd))
- nCmdShow = SW_HIDE;
- else
- nCmdShow = SW_SHOWNA;
-
- ShowWindow (pRLWinPriv->hWnd, nCmdShow);
-
- winMWExtWMUpdateIcon (pWin->drawable.id);
-
- if (wBoundingShape(pWin) != NULL)
- {
- pScreen = pWin->drawable.pScreen;
- /* wBoundingShape is relative to *inner* origin of window.
- Translate by borderWidth to get the outside-relative position. */
-
- REGION_NULL(pScreen, &newShape);
- REGION_COPY(pScreen, &newShape, wBoundingShape(pWin));
- REGION_TRANSLATE(pScreen, &newShape, pWin->borderWidth, pWin->borderWidth);
- winMWExtWMReshapeFrame (pRLWinPriv, &newShape);
- REGION_UNINIT(pScreen, &newShape);
- }
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("ProcWindowsWMFrameDraw - done\n");
-#endif
-
- return (client->noClientException);
-}
-
-static int
-ProcWindowsWMFrameSetTitle(
- register ClientPtr client
- )
-{
- unsigned int title_length, title_max;
- unsigned char *title_bytes;
- REQUEST(xWindowsWMFrameSetTitleReq);
- WindowPtr pWin;
- win32RootlessWindowPtr pRLWinPriv;
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("ProcWindowsWMFrameSetTitle\n");
-#endif
-
- REQUEST_AT_LEAST_SIZE(xWindowsWMFrameSetTitleReq);
-
- if (!(pWin = SecurityLookupWindow((Drawable)stuff->window,
- client, SecurityReadAccess)))
- {
- return BadValue;
- }
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("ProcWindowsWMFrameSetTitle - Window found\n");
-#endif
-
- title_length = stuff->title_length;
- title_max = (stuff->length << 2) - sizeof(xWindowsWMFrameSetTitleReq);
-
- if (title_max < title_length)
- return BadValue;
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("ProcWindowsWMFrameSetTitle - length is valid\n");
-#endif
-
- title_bytes = malloc (title_length+1);
- strncpy (title_bytes, (unsigned char *) &stuff[1], title_length);
- title_bytes[title_length] = '\0';
-
- pRLWinPriv = (win32RootlessWindowPtr) RootlessFrameForWindow (pWin, FALSE);
-
- if (pRLWinPriv == 0)
- {
- free (title_bytes);
- return BadWindow;
- }
-
- /* Flush the window style */
- SetWindowText (pRLWinPriv->hWnd, title_bytes);
-
- free (title_bytes);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("ProcWindowsWMFrameSetTitle - done\n");
-#endif
-
- return (client->noClientException);
-}
-
-
-/* dispatch */
-
-static int
-ProcWindowsWMDispatch (register ClientPtr client)
-{
- REQUEST(xReq);
-
- switch (stuff->data)
- {
- case X_WindowsWMQueryVersion:
- return ProcWindowsWMQueryVersion(client);
- }
-
- if (!LocalClient(client))
- return WMErrorBase + WindowsWMClientNotLocal;
-
- switch (stuff->data)
- {
- case X_WindowsWMSelectInput:
- return ProcWindowsWMSelectInput(client);
- case X_WindowsWMDisableUpdate:
- return ProcWindowsWMDisableUpdate(client);
- case X_WindowsWMReenableUpdate:
- return ProcWindowsWMReenableUpdate(client);
- case X_WindowsWMSetFrontProcess:
- return ProcWindowsWMSetFrontProcess(client);
- case X_WindowsWMFrameGetRect:
- return ProcWindowsWMFrameGetRect(client);
- case X_WindowsWMFrameDraw:
- return ProcWindowsWMFrameDraw(client);
- case X_WindowsWMFrameSetTitle:
- return ProcWindowsWMFrameSetTitle(client);
- default:
- return BadRequest;
- }
-}
-
-static void
-SNotifyEvent (xWindowsWMNotifyEvent *from, xWindowsWMNotifyEvent *to)
-{
- to->type = from->type;
- to->kind = from->kind;
- cpswaps (from->sequenceNumber, to->sequenceNumber);
- cpswapl (from->window, to->window);
- cpswapl (from->time, to->time);
- cpswapl (from->arg, to->arg);
-}
-
-static int
-SProcWindowsWMQueryVersion (register ClientPtr client)
-{
- register int n;
- REQUEST(xWindowsWMQueryVersionReq);
- swaps(&stuff->length, n);
- return ProcWindowsWMQueryVersion(client);
-}
-
-static int
-SProcWindowsWMDispatch (register ClientPtr client)
-{
- REQUEST(xReq);
-
- /* It is bound to be non-local when there is byte swapping */
- if (!LocalClient(client))
- return WMErrorBase + WindowsWMClientNotLocal;
-
- /* only local clients are allowed WM access */
- switch (stuff->data)
- {
- case X_WindowsWMQueryVersion:
- return SProcWindowsWMQueryVersion(client);
- default:
- return BadRequest;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/winwndproc.c b/nx-X11/programs/Xserver/hw/xwin/winwndproc.c
deleted file mode 100644
index 0864fc638..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/winwndproc.c
+++ /dev/null
@@ -1,1273 +0,0 @@
-/*
- *Copyright (C) 1994-2000 The XFree86 Project, Inc. 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 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 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 XFREE86 PROJECT 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 XFree86 Project
- *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 XFree86 Project.
- *
- * Authors: Dakshinamurthy Karra
- * Suhaib M Siddiqi
- * Peter Busch
- * Harold L Hunt II
- * MATSUZAKI Kensuke
- */
-/* $XFree86: xc/programs/Xserver/hw/xwin/winwndproc.c,v 1.23 2002/10/17 08:18:25 alanh Exp $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include "win.h"
-#include <commctrl.h>
-#include "winprefs.h"
-#include "winconfig.h"
-#include "winmsg.h"
-
-#ifdef XKB
-extern BOOL winCheckKeyPressed(WPARAM wParam, LPARAM lParam);
-#endif
-extern void winFixShiftKeys (int iScanCode);
-
-
-/*
- * Global variables
- */
-
-Bool g_fCursor = TRUE;
-
-
-/*
- * References to external symbols
- */
-
-extern Bool g_fClipboard;
-extern HWND g_hDlgDepthChange;
-extern Bool g_fKeyboardHookLL;
-extern HWND g_hwndKeyboardFocus;
-extern Bool g_fSoftwareCursor;
-extern DWORD g_dwCurrentThreadID;
-
-
-/*
- * Called by winWakeupHandler
- * Processes current Windows message
- */
-
-LRESULT CALLBACK
-winWindowProc (HWND hwnd, UINT message,
- WPARAM wParam, LPARAM lParam)
-{
- static winPrivScreenPtr s_pScreenPriv = NULL;
- static winScreenInfo *s_pScreenInfo = NULL;
- static ScreenPtr s_pScreen = NULL;
- static HWND s_hwndLastPrivates = NULL;
- static HINSTANCE s_hInstance;
- static Bool s_fTracking = FALSE;
- static unsigned long s_ulServerGeneration = 0;
- static UINT s_uTaskbarRestart = 0;
- int iScanCode;
- int i;
-
-#if CYGDEBUG
- winDebugWin32Message("winWindowProc", hwnd, message, wParam, lParam);
-#endif
-
- /* Watch for server regeneration */
- if (g_ulServerGeneration != s_ulServerGeneration)
- {
- /* Store new server generation */
- s_ulServerGeneration = g_ulServerGeneration;
- }
-
- /* Only retrieve new privates pointers if window handle is null or changed */
- if ((s_pScreenPriv == NULL || hwnd != s_hwndLastPrivates)
- && (s_pScreenPriv = GetProp (hwnd, WIN_SCR_PROP)) != NULL)
- {
-#if CYGDEBUG
- winDebug ("winWindowProc - Setting privates handle\n");
-#endif
- s_pScreenInfo = s_pScreenPriv->pScreenInfo;
- s_pScreen = s_pScreenInfo->pScreen;
- s_hwndLastPrivates = hwnd;
- }
- else if (s_pScreenPriv == NULL)
- {
- /* For safety, handle case that should never happen */
- s_pScreenInfo = NULL;
- s_pScreen = NULL;
- s_hwndLastPrivates = NULL;
- }
-
- /* Branch on message type */
- switch (message)
- {
- case WM_TRAYICON:
- return winHandleIconMessage (hwnd, message, wParam, lParam,
- s_pScreenPriv);
-
- case WM_CREATE:
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_CREATE\n");
-#endif
-
- /*
- * Add a property to our display window that references
- * this screens' privates.
- *
- * This allows the window procedure to refer to the
- * appropriate window DC and shadow DC for the window that
- * it is processing. We use this to repaint exposed
- * areas of our display window.
- */
- s_pScreenPriv = ((LPCREATESTRUCT) lParam)->lpCreateParams;
- s_hInstance = ((LPCREATESTRUCT) lParam)->hInstance;
- s_pScreenInfo = s_pScreenPriv->pScreenInfo;
- s_pScreen = s_pScreenInfo->pScreen;
- s_hwndLastPrivates = hwnd;
- s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));
- SetProp (hwnd, WIN_SCR_PROP, s_pScreenPriv);
-
- /* Setup tray icon */
- if (!s_pScreenInfo->fNoTrayIcon)
- {
- /*
- * NOTE: The WM_CREATE message is processed before CreateWindowEx
- * returns, so s_pScreenPriv->hwndScreen is invalid at this point.
- * We go ahead and copy our hwnd parameter over top of the screen
- * privates hwndScreen so that we have a valid value for
- * that member. Otherwise, the tray icon will disappear
- * the first time you move the mouse over top of it.
- */
-
- s_pScreenPriv->hwndScreen = hwnd;
-
- winInitNotifyIcon (s_pScreenPriv);
- }
- return 0;
-
- case WM_DISPLAYCHANGE:
- /* We cannot handle a display mode change during initialization */
- if (s_pScreenInfo == NULL)
- FatalError ("winWindowProc - WM_DISPLAYCHANGE - The display "
- "mode changed while we were intializing. This is "
- "very bad and unexpected. Exiting.\n");
-
- /*
- * We do not care about display changes with
- * fullscreen DirectDraw engines, because those engines set
- * their own mode when they become active.
- */
- if (s_pScreenInfo->fFullScreen
- && (s_pScreenInfo->dwEngine == WIN_SERVER_SHADOW_DD
- || s_pScreenInfo->dwEngine == WIN_SERVER_SHADOW_DDNL
-#ifdef XWIN_PRIMARYFB
- || s_pScreenInfo->dwEngine == WIN_SERVER_PRIMARY_DD
-#endif
- ))
- {
- /*
- * Store the new display dimensions and depth.
- * We do this here for future compatibility in case we
- * ever allow switching from fullscreen to windowed mode.
- */
- s_pScreenPriv->dwLastWindowsWidth = GetSystemMetrics (SM_CXSCREEN);
- s_pScreenPriv->dwLastWindowsHeight = GetSystemMetrics (SM_CYSCREEN);
- s_pScreenPriv->dwLastWindowsBitsPixel
- = GetDeviceCaps (s_pScreenPriv->hdcScreen, BITSPIXEL);
- break;
- }
-
- ErrorF ("winWindowProc - WM_DISPLAYCHANGE - orig bpp: %d, last bpp: %d, "
- "new bpp: %d\n",
- (int) s_pScreenInfo->dwBPP,
- (int) s_pScreenPriv->dwLastWindowsBitsPixel,
- wParam);
-
- ErrorF ("winWindowProc - WM_DISPLAYCHANGE - new width: %d "
- "new height: %d\n",
- LOWORD (lParam), HIWORD (lParam));
-
- /*
- * TrueColor --> TrueColor depth changes are disruptive for:
- * Windowed:
- * Shadow DirectDraw
- * Shadow DirectDraw Non-Locking
- * Primary DirectDraw
- *
- * TrueColor --> TrueColor depth changes are non-optimal for:
- * Windowed:
- * Shadow GDI
- *
- * FullScreen:
- * Shadow GDI
- *
- * TrueColor --> PseudoColor or vice versa are disruptive for:
- * Windowed:
- * Shadow DirectDraw
- * Shadow DirectDraw Non-Locking
- * Primary DirectDraw
- * Shadow GDI
- */
-
- /*
- * Check for a disruptive change in depth.
- * We can only display a message for a disruptive depth change,
- * we cannot do anything to correct the situation.
- */
- if ((s_pScreenInfo->dwBPP != wParam)
- && (s_pScreenInfo->dwEngine == WIN_SERVER_SHADOW_DD
- || s_pScreenInfo->dwEngine == WIN_SERVER_SHADOW_DDNL
-#ifdef XWIN_PRIMARYFB
- || s_pScreenInfo->dwEngine == WIN_SERVER_PRIMARY_DD
-#endif
- ))
- {
- /* Cannot display the visual until the depth is restored */
- ErrorF ("winWindowProc - Disruptive change in depth\n");
-
- /* Display Exit dialog */
- winDisplayDepthChangeDialog (s_pScreenPriv);
-
- /* Flag that we have an invalid screen depth */
- s_pScreenPriv->fBadDepth = TRUE;
-
- /* Minimize the display window */
- ShowWindow (hwnd, SW_MINIMIZE);
- }
- else
- {
- /* Flag that we have a valid screen depth */
- s_pScreenPriv->fBadDepth = FALSE;
- }
-
- /*
- * Check for a change in display dimensions.
- * We can simply recreate the same-sized primary surface when
- * the display dimensions change.
- */
- if (s_pScreenPriv->dwLastWindowsWidth != LOWORD (lParam)
- || s_pScreenPriv->dwLastWindowsHeight != HIWORD (lParam))
- {
- /*
- * NOTE: The non-DirectDraw engines set the ReleasePrimarySurface
- * and CreatePrimarySurface function pointers to point
- * to the no operation function, NoopDDA. This allows us
- * to blindly call these functions, even if they are not
- * relevant to the current engine (e.g., Shadow GDI).
- */
-
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_DISPLAYCHANGE - Dimensions changed\n");
-#endif
-
- /* Release the old primary surface */
- (*s_pScreenPriv->pwinReleasePrimarySurface) (s_pScreen);
-
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_DISPLAYCHANGE - Released "
- "primary surface\n");
-#endif
-
- /* Create the new primary surface */
- (*s_pScreenPriv->pwinCreatePrimarySurface) (s_pScreen);
-
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_DISPLAYCHANGE - Recreated "
- "primary surface\n");
-#endif
-
-#if 0
- /* Multi-Window mode uses RandR for resizes */
- if (s_pScreenInfo->fMultiWindow)
- {
- RRSetScreenConfig ();
- }
-#endif
- }
- else
- {
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_DISPLAYCHANGE - Dimensions did not "
- "change\n");
-#endif
- }
-
- /* Store the new display dimensions and depth */
- if (s_pScreenInfo->fMultipleMonitors)
- {
- s_pScreenPriv->dwLastWindowsWidth
- = GetSystemMetrics (SM_CXVIRTUALSCREEN);
- s_pScreenPriv->dwLastWindowsHeight
- = GetSystemMetrics (SM_CYVIRTUALSCREEN);
- }
- else
- {
- s_pScreenPriv->dwLastWindowsWidth
- = GetSystemMetrics (SM_CXSCREEN);
- s_pScreenPriv->dwLastWindowsHeight
- = GetSystemMetrics (SM_CYSCREEN);
- }
- s_pScreenPriv->dwLastWindowsBitsPixel
- = GetDeviceCaps (s_pScreenPriv->hdcScreen, BITSPIXEL);
- break;
-
- case WM_SIZE:
- {
- SCROLLINFO si;
- RECT rcWindow;
- int iWidth, iHeight;
-
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_SIZE\n");
-#endif
-
- /* Break if we do not use scrollbars */
- if (!s_pScreenInfo->fScrollbars
- || !s_pScreenInfo->fDecoration
-#ifdef XWIN_MULTIWINDOWEXTWM
- || s_pScreenInfo->fMWExtWM
-#endif
- || s_pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOW
- || s_pScreenInfo->fMultiWindow
-#endif
- || s_pScreenInfo->fFullScreen)
- break;
-
- /* No need to resize if we get minimized */
- if (wParam == SIZE_MINIMIZED)
- return 0;
-
- /*
- * Get the size of the whole window, including client area,
- * scrollbars, and non-client area decorations (caption, borders).
- * We do this because we need to check if the client area
- * without scrollbars is large enough to display the whole visual.
- * The new client area size passed by lParam already subtracts
- * the size of the scrollbars if they are currently displayed.
- * So checking is LOWORD(lParam) == visual_width and
- * HIWORD(lParam) == visual_height will never tell us to hide
- * the scrollbars because the client area would always be too small.
- * GetClientRect returns the same sizes given by lParam, so we
- * cannot use GetClientRect either.
- */
- GetWindowRect (hwnd, &rcWindow);
- iWidth = rcWindow.right - rcWindow.left;
- iHeight = rcWindow.bottom - rcWindow.top;
-
- ErrorF ("winWindowProc - WM_SIZE - window w: %d h: %d, "
- "new client area w: %d h: %d\n",
- iWidth, iHeight, LOWORD (lParam), HIWORD (lParam));
-
- /* Subtract the frame size from the window size. */
- iWidth -= 2 * GetSystemMetrics (SM_CXSIZEFRAME);
- iHeight -= (2 * GetSystemMetrics (SM_CYSIZEFRAME)
- + GetSystemMetrics (SM_CYCAPTION));
-
- /*
- * Update scrollbar page sizes.
- * NOTE: If page size == range, then the scrollbar is
- * automatically hidden.
- */
-
- /* Is the naked client area large enough to show the whole visual? */
- if (iWidth < s_pScreenInfo->dwWidth
- || iHeight < s_pScreenInfo->dwHeight)
- {
- /* Client area too small to display visual, use scrollbars */
- iWidth -= GetSystemMetrics (SM_CXVSCROLL);
- iHeight -= GetSystemMetrics (SM_CYHSCROLL);
- }
-
- /* Set the horizontal scrollbar page size */
- si.cbSize = sizeof (si);
- si.fMask = SIF_PAGE | SIF_RANGE;
- si.nMin = 0;
- si.nMax = s_pScreenInfo->dwWidth - 1;
- si.nPage = iWidth;
- SetScrollInfo (hwnd, SB_HORZ, &si, TRUE);
-
- /* Set the vertical scrollbar page size */
- si.cbSize = sizeof (si);
- si.fMask = SIF_PAGE | SIF_RANGE;
- si.nMin = 0;
- si.nMax = s_pScreenInfo->dwHeight - 1;
- si.nPage = iHeight;
- SetScrollInfo (hwnd, SB_VERT, &si, TRUE);
-
- /*
- * NOTE: Scrollbars may have moved if they were at the
- * far right/bottom, so we query their current position.
- */
-
- /* Get the horizontal scrollbar position and set the offset */
- si.cbSize = sizeof (si);
- si.fMask = SIF_POS;
- GetScrollInfo (hwnd, SB_HORZ, &si);
- s_pScreenInfo->dwXOffset = -si.nPos;
-
- /* Get the vertical scrollbar position and set the offset */
- si.cbSize = sizeof (si);
- si.fMask = SIF_POS;
- GetScrollInfo (hwnd, SB_VERT, &si);
- s_pScreenInfo->dwYOffset = -si.nPos;
- }
- return 0;
-
- case WM_VSCROLL:
- {
- SCROLLINFO si;
- int iVertPos;
-
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_VSCROLL\n");
-#endif
-
- /* Get vertical scroll bar info */
- si.cbSize = sizeof (si);
- si.fMask = SIF_ALL;
- GetScrollInfo (hwnd, SB_VERT, &si);
-
- /* Save the vertical position for comparison later */
- iVertPos = si.nPos;
-
- /*
- * Don't forget:
- * moving the scrollbar to the DOWN, scroll the content UP
- */
- switch (LOWORD(wParam))
- {
- case SB_TOP:
- si.nPos = si.nMin;
- break;
-
- case SB_BOTTOM:
- si.nPos = si.nMax - si.nPage + 1;
- break;
-
- case SB_LINEUP:
- si.nPos -= 1;
- break;
-
- case SB_LINEDOWN:
- si.nPos += 1;
- break;
-
- case SB_PAGEUP:
- si.nPos -= si.nPage;
- break;
-
- case SB_PAGEDOWN:
- si.nPos += si.nPage;
- break;
-
- case SB_THUMBTRACK:
- si.nPos = si.nTrackPos;
- break;
-
- default:
- break;
- }
-
- /*
- * We retrieve the position after setting it,
- * because Windows may adjust it.
- */
- si.fMask = SIF_POS;
- SetScrollInfo (hwnd, SB_VERT, &si, TRUE);
- GetScrollInfo (hwnd, SB_VERT, &si);
-
- /* Scroll the window if the position has changed */
- if (si.nPos != iVertPos)
- {
- /* Save the new offset for bit block transfers, etc. */
- s_pScreenInfo->dwYOffset = -si.nPos;
-
- /* Change displayed region in the window */
- ScrollWindowEx (hwnd,
- 0,
- iVertPos - si.nPos,
- NULL,
- NULL,
- NULL,
- NULL,
- SW_INVALIDATE);
-
- /* Redraw the window contents */
- UpdateWindow (hwnd);
- }
- }
- return 0;
-
- case WM_HSCROLL:
- {
- SCROLLINFO si;
- int iHorzPos;
-
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_HSCROLL\n");
-#endif
-
- /* Get horizontal scroll bar info */
- si.cbSize = sizeof (si);
- si.fMask = SIF_ALL;
- GetScrollInfo (hwnd, SB_HORZ, &si);
-
- /* Save the horizontal position for comparison later */
- iHorzPos = si.nPos;
-
- /*
- * Don't forget:
- * moving the scrollbar to the RIGHT, scroll the content LEFT
- */
- switch (LOWORD(wParam))
- {
- case SB_LEFT:
- si.nPos = si.nMin;
- break;
-
- case SB_RIGHT:
- si.nPos = si.nMax - si.nPage + 1;
- break;
-
- case SB_LINELEFT:
- si.nPos -= 1;
- break;
-
- case SB_LINERIGHT:
- si.nPos += 1;
- break;
-
- case SB_PAGELEFT:
- si.nPos -= si.nPage;
- break;
-
- case SB_PAGERIGHT:
- si.nPos += si.nPage;
- break;
-
- case SB_THUMBTRACK:
- si.nPos = si.nTrackPos;
- break;
-
- default:
- break;
- }
-
- /*
- * We retrieve the position after setting it,
- * because Windows may adjust it.
- */
- si.fMask = SIF_POS;
- SetScrollInfo (hwnd, SB_HORZ, &si, TRUE);
- GetScrollInfo (hwnd, SB_HORZ, &si);
-
- /* Scroll the window if the position has changed */
- if (si.nPos != iHorzPos)
- {
- /* Save the new offset for bit block transfers, etc. */
- s_pScreenInfo->dwXOffset = -si.nPos;
-
- /* Change displayed region in the window */
- ScrollWindowEx (hwnd,
- iHorzPos - si.nPos,
- 0,
- NULL,
- NULL,
- NULL,
- NULL,
- SW_INVALIDATE);
-
- /* Redraw the window contents */
- UpdateWindow (hwnd);
- }
- }
- return 0;
-
- case WM_GETMINMAXINFO:
- {
- MINMAXINFO *pMinMaxInfo = (MINMAXINFO *) lParam;
- int iCaptionHeight;
- int iBorderHeight, iBorderWidth;
-
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_GETMINMAXINFO - pScreenInfo: %08x\n",
- s_pScreenInfo);
-#endif
-
- /* Can't do anything without screen info */
- if (s_pScreenInfo == NULL
- || !s_pScreenInfo->fScrollbars
- || s_pScreenInfo->fFullScreen
- || !s_pScreenInfo->fDecoration
-#ifdef XWIN_MULTIWINDOWEXTWM
- || s_pScreenInfo->fMWExtWM
-#endif
- || s_pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOW
- || s_pScreenInfo->fMultiWindow
-#endif
- )
- break;
-
- /*
- * Here we can override the maximum tracking size, which
- * is the largest size that can be assigned to our window
- * via the sizing border.
- */
-
- /*
- * FIXME: Do we only need to do this once, since our visual size
- * does not change? Does Windows store this value statically
- * once we have set it once?
- */
-
- /* Get the border and caption sizes */
- iCaptionHeight = GetSystemMetrics (SM_CYCAPTION);
- iBorderWidth = 2 * GetSystemMetrics (SM_CXSIZEFRAME);
- iBorderHeight = 2 * GetSystemMetrics (SM_CYSIZEFRAME);
-
- /* Allow the full visual to be displayed */
- pMinMaxInfo->ptMaxTrackSize.x
- = s_pScreenInfo->dwWidth + iBorderWidth;
- pMinMaxInfo->ptMaxTrackSize.y
- = s_pScreenInfo->dwHeight + iBorderHeight + iCaptionHeight;
- }
- return 0;
-
- case WM_ERASEBKGND:
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_ERASEBKGND\n");
-#endif
- /*
- * Pretend that we did erase the background but we don't care,
- * the application uses the full window estate. This avoids some
- * flickering when resizing.
- */
- return TRUE;
-
- case WM_PAINT:
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_PAINT\n");
-#endif
- /* Only paint if we have privates and the server is enabled */
- if (s_pScreenPriv == NULL
- || !s_pScreenPriv->fEnabled
- || (s_pScreenInfo->fFullScreen && !s_pScreenPriv->fActive)
- || s_pScreenPriv->fBadDepth)
- {
- /* We don't want to paint */
- break;
- }
-
- /* Break out here if we don't have a valid paint routine */
- if (s_pScreenPriv->pwinBltExposedRegions == NULL)
- break;
-
- /* Call the engine dependent repainter */
- (*s_pScreenPriv->pwinBltExposedRegions) (s_pScreen);
- return 0;
-
- case WM_PALETTECHANGED:
- {
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_PALETTECHANGED\n");
-#endif
- /*
- * Don't process if we don't have privates or a colormap,
- * or if we have an invalid depth.
- */
- if (s_pScreenPriv == NULL
- || s_pScreenPriv->pcmapInstalled == NULL
- || s_pScreenPriv->fBadDepth)
- break;
-
- /* Return if we caused the palette to change */
- if ((HWND) wParam == hwnd)
- {
- /* Redraw the screen */
- (*s_pScreenPriv->pwinRedrawScreen) (s_pScreen);
- return 0;
- }
-
- /* Reinstall the windows palette */
- (*s_pScreenPriv->pwinRealizeInstalledPalette) (s_pScreen);
-
- /* Redraw the screen */
- (*s_pScreenPriv->pwinRedrawScreen) (s_pScreen);
- return 0;
- }
-
- case WM_MOUSEMOVE:
- /* We can't do anything without privates */
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
-
- /* Has the mouse pointer crossed screens? */
- if (s_pScreen != miPointerCurrentScreen ())
- miPointerSetNewScreen (s_pScreenInfo->dwScreen,
- GET_X_LPARAM(lParam)-s_pScreenInfo->dwXOffset,
- GET_Y_LPARAM(lParam)-s_pScreenInfo->dwYOffset);
-
- /* Are we tracking yet? */
- if (!s_fTracking)
- {
- TRACKMOUSEEVENT tme;
-
- /* Setup data structure */
- ZeroMemory (&tme, sizeof (tme));
- tme.cbSize = sizeof (tme);
- tme.dwFlags = TME_LEAVE;
- tme.hwndTrack = hwnd;
-
- /* Call the tracking function */
- if (!(*g_fpTrackMouseEvent) (&tme))
- ErrorF ("winWindowProc - _TrackMouseEvent failed\n");
-
- /* Flag that we are tracking now */
- s_fTracking = TRUE;
- }
-
- /* Hide or show the Windows mouse cursor */
- if (g_fSoftwareCursor && g_fCursor && (s_pScreenPriv->fActive || s_pScreenInfo->fLessPointer))
- {
- /* Hide Windows cursor */
- g_fCursor = FALSE;
- ShowCursor (FALSE);
- }
- else if (g_fSoftwareCursor && !g_fCursor && !s_pScreenPriv->fActive
- && !s_pScreenInfo->fLessPointer)
- {
- /* Show Windows cursor */
- g_fCursor = TRUE;
- ShowCursor (TRUE);
- }
-
- /* Deliver absolute cursor position to X Server */
- miPointerAbsoluteCursor (GET_X_LPARAM(lParam)-s_pScreenInfo->dwXOffset,
- GET_Y_LPARAM(lParam)-s_pScreenInfo->dwYOffset,
- g_c32LastInputEventTime = GetTickCount ());
- return 0;
-
- case WM_NCMOUSEMOVE:
- /*
- * We break instead of returning 0 since we need to call
- * DefWindowProc to get the mouse cursor changes
- * and min/max/close button highlighting in Windows XP.
- * The Platform SDK says that you should return 0 if you
- * process this message, but it fails to mention that you
- * will give up any default functionality if you do return 0.
- */
-
- /* We can't do anything without privates */
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
-
- /* Non-client mouse movement, show Windows cursor */
- if (g_fSoftwareCursor && !g_fCursor)
- {
- g_fCursor = TRUE;
- ShowCursor (TRUE);
- }
- break;
-
- case WM_MOUSELEAVE:
- /* Mouse has left our client area */
-
- /* Flag that we are no longer tracking */
- s_fTracking = FALSE;
-
- /* Show the mouse cursor, if necessary */
- if (g_fSoftwareCursor && !g_fCursor)
- {
- g_fCursor = TRUE;
- ShowCursor (TRUE);
- }
- return 0;
-
- case WM_LBUTTONDBLCLK:
- case WM_LBUTTONDOWN:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- if (s_pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOWEXTWM
- || s_pScreenInfo->fMWExtWM
-#endif
- )
- SetCapture (hwnd);
- return winMouseButtonsHandle (s_pScreen, ButtonPress, Button1, wParam);
-
- case WM_LBUTTONUP:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- if (s_pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOWEXTWM
- || s_pScreenInfo->fMWExtWM
-#endif
- )
- ReleaseCapture ();
- return winMouseButtonsHandle (s_pScreen, ButtonRelease, Button1, wParam);
-
- case WM_MBUTTONDBLCLK:
- case WM_MBUTTONDOWN:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- if (s_pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOWEXTWM
- || s_pScreenInfo->fMWExtWM
-#endif
- )
- SetCapture (hwnd);
- return winMouseButtonsHandle (s_pScreen, ButtonPress, Button2, wParam);
-
- case WM_MBUTTONUP:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- if (s_pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOWEXTWM
- || s_pScreenInfo->fMWExtWM
-#endif
- )
- ReleaseCapture ();
- return winMouseButtonsHandle (s_pScreen, ButtonRelease, Button2, wParam);
-
- case WM_RBUTTONDBLCLK:
- case WM_RBUTTONDOWN:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- if (s_pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOWEXTWM
- || s_pScreenInfo->fMWExtWM
-#endif
- )
- SetCapture (hwnd);
- return winMouseButtonsHandle (s_pScreen, ButtonPress, Button3, wParam);
-
- case WM_RBUTTONUP:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- if (s_pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOWEXTWM
- || s_pScreenInfo->fMWExtWM
-#endif
- )
- ReleaseCapture ();
- return winMouseButtonsHandle (s_pScreen, ButtonRelease, Button3, wParam);
-
- case WM_XBUTTONDBLCLK:
- case WM_XBUTTONDOWN:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- if (s_pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOWEXTWM
- || s_pScreenInfo->fMWExtWM
-#endif
- )
- SetCapture (hwnd);
- return winMouseButtonsHandle (s_pScreen, ButtonPress, HIWORD(wParam) + 5, wParam);
- case WM_XBUTTONUP:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
- if (s_pScreenInfo->fRootless
-#ifdef XWIN_MULTIWINDOWEXTWM
- || s_pScreenInfo->fMWExtWM
-#endif
- )
- ReleaseCapture ();
- return winMouseButtonsHandle (s_pScreen, ButtonRelease, HIWORD(wParam) + 5, wParam);
-
- case WM_TIMER:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
-
- /* Branch on the timer id */
- switch (wParam)
- {
- case WIN_E3B_TIMER_ID:
- /* Send delayed button press */
- winMouseButtonsSendEvent (ButtonPress,
- s_pScreenPriv->iE3BCachedPress);
-
- /* Kill this timer */
- KillTimer (s_pScreenPriv->hwndScreen, WIN_E3B_TIMER_ID);
-
- /* Clear screen privates flags */
- s_pScreenPriv->iE3BCachedPress = 0;
- break;
-
- case WIN_POLLING_MOUSE_TIMER_ID:
- {
- POINT point;
-
- /* Get the current position of the mouse cursor */
- GetCursorPos (&point);
-
- /* Map from screen (-X, -Y) to root (0, 0) */
- point.x -= GetSystemMetrics (SM_XVIRTUALSCREEN);
- point.y -= GetSystemMetrics (SM_YVIRTUALSCREEN);
-
- /* Deliver absolute cursor position to X Server */
- miPointerAbsoluteCursor (point.x, point.y,
- g_c32LastInputEventTime = GetTickCount());
- }
- }
- return 0;
-
- case WM_CTLCOLORSCROLLBAR:
- FatalError ("winWindowProc - WM_CTLCOLORSCROLLBAR - We are not "
- "supposed to get this message. Exiting.\n");
- return 0;
-
- case WM_MOUSEWHEEL:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_MOUSEWHEEL\n");
-#endif
- winMouseWheel (s_pScreen, GET_WHEEL_DELTA_WPARAM(wParam));
- break;
-
- case WM_SETFOCUS:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
-
- /* Save handle of our main window that last received focus */
- g_hwndKeyboardFocus = hwnd;
-
- /* Restore the state of all mode keys */
- winRestoreModeKeyStates ();
-
- /* Add the keyboard hook if possible */
- if (g_fKeyboardHookLL)
- g_fKeyboardHookLL = winInstallKeyboardHookLL ();
- return 0;
-
- case WM_KILLFOCUS:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
-
- /* Clear handle of our main window that last received focus */
- g_hwndKeyboardFocus = NULL;
-
- /* Release any pressed keys */
- winKeybdReleaseKeys ();
-
- /* Remove our keyboard hook if it is installed */
- winRemoveKeyboardHookLL ();
- return 0;
-
- case WM_SYSKEYDOWN:
- case WM_KEYDOWN:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
-
- /*
- * FIXME: Catching Alt-F4 like this is really terrible. This should
- * be generalized to handle other Windows keyboard signals. Actually,
- * the list keys to catch and the actions to perform when caught should
- * be configurable; that way user's can customize the keys that they
- * need to have passed through to their window manager or apps, or they
- * can remap certain actions to new key codes that do not conflict
- * with the X apps that they are using. Yeah, that'll take awhile.
- */
- if ((s_pScreenInfo->fUseWinKillKey && wParam == VK_F4
- && (GetKeyState (VK_MENU) & 0x8000))
- || (s_pScreenInfo->fUseUnixKillKey && wParam == VK_BACK
- && (GetKeyState (VK_MENU) & 0x8000)
- && (GetKeyState (VK_CONTROL) & 0x8000)))
- {
- /*
- * Better leave this message here, just in case some unsuspecting
- * user enters Alt + F4 and is surprised when the application
- * quits.
- */
- ErrorF ("winWindowProc - WM_*KEYDOWN - Closekey hit, quitting\n");
-
- /* Display Exit dialog */
- winDisplayExitDialog (s_pScreenPriv);
- return 0;
- }
-
- /*
- * Don't do anything for the Windows keys, as focus will soon
- * be returned to Windows. We may be able to trap the Windows keys,
- * but we should determine if that is desirable before doing so.
- */
- if ((wParam == VK_LWIN || wParam == VK_RWIN) && !g_fKeyboardHookLL)
- break;
-
-#ifdef XKB
- /*
- * Discard presses generated from Windows auto-repeat
- * ago: Only discard them if XKB is not disabled
- */
- if (!g_winInfo.xkb.disable && (lParam & (1<<30)))
- {
- switch (wParam)
- {
- /* ago: Pressing LControl while RControl is pressed is
- * Indicated as repeat. Fix this!
- */
- case VK_CONTROL:
- case VK_SHIFT:
- if (winCheckKeyPressed(wParam, lParam))
- return 0;
- break;
- default:
- return 0;
- }
- }
-#endif
-
- /* Discard fake Ctrl_L presses that precede AltGR on non-US keyboards */
- if (winIsFakeCtrl_L (message, wParam, lParam))
- return 0;
-
- /* Translate Windows key code to X scan code */
- winTranslateKey (wParam, lParam, &iScanCode);
-
- /* Ignore repeats for CapsLock */
- if (wParam == VK_CAPITAL)
- lParam = 1;
-
- /* Send the key event(s) */
- for (i = 0; i < LOWORD(lParam); ++i)
- winSendKeyEvent (iScanCode, TRUE);
- return 0;
-
- case WM_SYSKEYUP:
- case WM_KEYUP:
- if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
- break;
-
- /*
- * Don't do anything for the Windows keys, as focus will soon
- * be returned to Windows. We may be able to trap the Windows keys,
- * but we should determine if that is desirable before doing so.
- */
- if ((wParam == VK_LWIN || wParam == VK_RWIN) && !g_fKeyboardHookLL)
- break;
-
- /* Ignore the fake Ctrl_L that follows an AltGr release */
- if (winIsFakeCtrl_L (message, wParam, lParam))
- return 0;
-
- /* Enqueue a keyup event */
- winTranslateKey (wParam, lParam, &iScanCode);
- winSendKeyEvent (iScanCode, FALSE);
-
- /* Release all pressed shift keys */
- if (wParam == VK_SHIFT)
- winFixShiftKeys (iScanCode);
- return 0;
-
- case WM_HOTKEY:
- if (s_pScreenPriv == NULL)
- break;
-
- /* Call the engine-specific hot key handler */
- (*s_pScreenPriv->pwinHotKeyAltTab) (s_pScreen);
- return 0;
-
- case WM_ACTIVATE:
- if (s_pScreenPriv == NULL
- || s_pScreenInfo->fIgnoreInput)
- break;
-
- /* TODO: Override display of window when we have a bad depth */
- if (LOWORD(wParam) != WA_INACTIVE && s_pScreenPriv->fBadDepth)
- {
- ErrorF ("winWindowProc - WM_ACTIVATE - Bad depth, trying "
- "to override window activation\n");
-
- /* Minimize the window */
- ShowWindow (hwnd, SW_MINIMIZE);
-
- /* Display dialog box */
- if (g_hDlgDepthChange != NULL)
- {
- /* Make the existing dialog box active */
- SetActiveWindow (g_hDlgDepthChange);
- }
- else
- {
- /* TODO: Recreate the dialog box and bring to the top */
- ShowWindow (g_hDlgDepthChange, SW_SHOWDEFAULT);
- }
-
- /* Don't do any other processing of this message */
- return 0;
- }
-
-#if CYGDEBUG
- winDebug ("winWindowProc - WM_ACTIVATE\n");
-#endif
-
- /*
- * Focus is being changed to another window.
- * The other window may or may not belong to
- * our process.
- */
-
- /* Clear any lingering wheel delta */
- s_pScreenPriv->iDeltaZ = 0;
-
- /* Reshow the Windows mouse cursor if we are being deactivated */
- if (g_fSoftwareCursor && LOWORD(wParam) == WA_INACTIVE
- && !g_fCursor)
- {
- /* Show Windows cursor */
- g_fCursor = TRUE;
- ShowCursor (TRUE);
- }
- return 0;
-
- case WM_ACTIVATEAPP:
- if (s_pScreenPriv == NULL
- || s_pScreenInfo->fIgnoreInput)
- break;
-
-#if CYGDEBUG || TRUE
- winDebug ("winWindowProc - WM_ACTIVATEAPP\n");
-#endif
-
- /* Activate or deactivate */
- s_pScreenPriv->fActive = wParam;
-
- /* Reshow the Windows mouse cursor if we are being deactivated */
- if (g_fSoftwareCursor && !s_pScreenPriv->fActive
- && !g_fCursor)
- {
- /* Show Windows cursor */
- g_fCursor = TRUE;
- ShowCursor (TRUE);
- }
-
-#ifdef XWIN_CLIPBOARD
- /* Make sure the clipboard chain is ok. */
- winFixClipboardChain ();
-#endif
-
- /* Call engine specific screen activation/deactivation function */
- (*s_pScreenPriv->pwinActivateApp) (s_pScreen);
-
-#ifdef XWIN_MULTIWINDOWEXTWM
- if (s_pScreenPriv->fActive)
- {
- /* Restack all window unless using built-in wm. */
- if (s_pScreenInfo->fInternalWM && s_pScreenInfo->fAnotherWMRunning)
- winMWExtWMRestackWindows (s_pScreen);
- }
-#endif
-
- return 0;
-
- case WM_COMMAND:
- switch (LOWORD (wParam))
- {
- case ID_APP_EXIT:
- /* Display Exit dialog */
- winDisplayExitDialog (s_pScreenPriv);
- return 0;
- case ID_APP_SHOWCURSOR:
- winDebug("ShowCursor: %d\n", ShowCursor(TRUE));
- return 0;
-
-#ifdef XWIN_MULTIWINDOW
- case ID_APP_HIDE_ROOT:
- if (s_pScreenPriv->fRootWindowShown)
- ShowWindow (s_pScreenPriv->hwndScreen, SW_HIDE);
- else
- ShowWindow (s_pScreenPriv->hwndScreen, SW_SHOW);
- s_pScreenPriv->fRootWindowShown = !s_pScreenPriv->fRootWindowShown;
- return 0;
-#endif
-
- case ID_APP_ABOUT:
- /* Display the About box */
- winDisplayAboutDialog (s_pScreenPriv);
- return 0;
-
- default:
- /* It's probably one of the custom menus... */
- if (HandleCustomWM_COMMAND (0, LOWORD (wParam)))
- return 0;
- }
- break;
-
- case WM_ENDSESSION:
- case WM_GIVEUP:
- /* Tell X that we are giving up */
-#ifdef XWIN_MULTIWINDOW
- if (s_pScreenInfo->fMultiWindow)
- winDeinitMultiWindowWM ();
-#endif
- GiveUp (0);
- return 0;
-
- case WM_CLOSE:
- /* Display Exit dialog */
- winDisplayExitDialog (s_pScreenPriv);
- return 0;
-
- case WM_SETCURSOR:
- if (LOWORD(lParam) == HTCLIENT)
- {
- if (!g_fSoftwareCursor) SetCursor (s_pScreenPriv->cursor.handle);
- return TRUE;
- }
- break;
-
-#ifdef XWIN_MULTIWINDOWEXTWM
- case WM_MANAGE:
- ErrorF ("winWindowProc - WM_MANAGE\n");
- s_pScreenInfo->fAnotherWMRunning = FALSE;
-
- if (s_pScreenInfo->fInternalWM)
- {
- EnumThreadWindows (g_dwCurrentThreadID, winMWExtWMDecorateWindow, 0);
- //RootlessRepositionWindows (s_pScreen);
- }
- break;
-
- case WM_UNMANAGE:
- ErrorF ("winWindowProc - WM_UNMANAGE\n");
- s_pScreenInfo->fAnotherWMRunning = TRUE;
-
- if (s_pScreenInfo->fInternalWM)
- {
- EnumThreadWindows (g_dwCurrentThreadID, winMWExtWMDecorateWindow, 0);
- winMWExtWMRestackWindows (s_pScreen);
- }
- break;
-#endif
-
- default:
- if(message == s_uTaskbarRestart)
- {
- winInitNotifyIcon (s_pScreenPriv);
- }
- break;
- }
-
- return DefWindowProc (hwnd, message, wParam, lParam);
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/COPYING b/nx-X11/programs/Xserver/hw/xwin/xlaunch/COPYING
deleted file mode 100755
index c7fa84400..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/COPYING
+++ /dev/null
@@ -1,25 +0,0 @@
-
- Copyright (c) 2005 Alexander Gottwald
-
- 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
- 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- holders shall not be used in advertising or otherwise to promote the sale,
- use or other dealings in this Software without prior written authorization.
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/config.cc b/nx-X11/programs/Xserver/hw/xwin/xlaunch/config.cc
deleted file mode 100644
index b6bf65ae3..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/config.cc
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-#include "config.h"
-#include "window/util.h"
-#include <msxml2.h>
-#include <stdexcept>
-
-const CLSID CLSID_DOMDocument40 = {0x88d969c0,0xf192,0x11d4,0xa6,0x5f,0x00,0x40,0x96,0x32,0x51,0xe5};
-const CLSID CLSID_DOMDocument30 = {0xf5078f32,0xc551,0x11d3,0x89,0xb9,0x00,0x00,0xf8,0x1f,0xe2,0x21};
-const IID IID_IXMLDOMDocument2 = {0x2933BF95,0x7B36,0x11d2,0xB2,0x0E,0x00,0xC0,0x4F,0x98,0x3E,0x60};
-
-#define HRCALL(x, msg) if (FAILED(x)) { throw std::runtime_error("OLE Error:" msg " failed"); };
-
-char *wcconvert(const wchar_t *wstr)
-{
- int chars = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);
- if (chars == 0)
- throw win32_error("WideCharToMultiByte");
- char *mbstr = new char[chars];
- chars = WideCharToMultiByte(CP_ACP, 0, wstr, -1, mbstr, chars, NULL, NULL);
- if (chars == 0)
- throw win32_error("WideCharToMultiByte");
- return mbstr;
-}
-
-wchar_t *mbconvert(const char *mbstr)
-{
- int chars = MultiByteToWideChar(CP_ACP, 0, mbstr, -1, NULL, 0);
- if (chars == 0)
- throw win32_error("MultiByteToWideChar");
- wchar_t *wstr = new wchar_t[chars];
- chars = MultiByteToWideChar(CP_ACP, 0, mbstr, -1, wstr, chars);
- if (chars == 0)
- throw win32_error("MultiByteToWideChar");
- return wstr;
-}
-
-VARIANT VariantString(const char *filename)
-{
-
- wchar_t *str = mbconvert(filename);
-
- VARIANT var;
- VariantInit(&var);
- V_BSTR(&var) = SysAllocString(str);
- V_VT(&var) = VT_BSTR;
-
- delete [] str;
- return var;
-}
-
-VARIANT VariantString(const wchar_t *str)
-{
- VARIANT var;
- VariantInit(&var);
- V_BSTR(&var) = SysAllocString(str);
- V_VT(&var) = VT_BSTR;
- return var;
-}
-
-IXMLDOMDocument2 *CreateDocument()
-{
- IXMLDOMDocument2 *doc = NULL;
-
- CoInitialize(NULL);
-
- HRCALL(CoCreateInstance(CLSID_DOMDocument40, NULL, CLSCTX_INPROC_SERVER,
- IID_IXMLDOMDocument2, (void**)&doc), "CoCreateInstance");
-
- try {
- HRCALL(doc->put_async(VARIANT_FALSE), "put_async");
- HRCALL(doc->put_validateOnParse(VARIANT_FALSE), "put_validateOnParse");
- HRCALL(doc->put_resolveExternals(VARIANT_FALSE), "put_resolveExternals");
-
- IXMLDOMProcessingInstruction *pi = NULL;
- IXMLDOMElement *root = NULL;
- BSTR xml = SysAllocString(L"xml");
- BSTR ver = SysAllocString(L"version='1.0'");
- HRCALL(doc->createProcessingInstruction(xml,ver, &pi),
- "createProcessingInstruction");
- HRCALL(doc->appendChild(pi, NULL),
- "appendChild");
- pi->Release();
- SysFreeString(xml);
- SysFreeString(ver);
-
- BSTR elemname = SysAllocString(L"XLaunch");
- HRCALL(doc->createElement(elemname, &root), "createElement");
- HRCALL(doc->appendChild(root, NULL), "appendChild");
- SysFreeString(elemname);
- } catch (...)
- {
- doc->Release();
- throw;
- }
- return doc;
-}
-
-void setAttribute(IXMLDOMElement *elem, const wchar_t *name, const wchar_t *value)
-{
- BSTR str = SysAllocString(name);
- VARIANT var = VariantString(value);
- HRCALL(elem->setAttribute(str, var), "setAttribute");
- VariantClear(&var);
- SysFreeString(str);
-}
-
-void setAttribute(IXMLDOMElement *elem, const wchar_t *name, const char *value)
-{
- wchar_t *wstr = mbconvert(value);
- setAttribute(elem, name, wstr);
- delete [] wstr;
- return;
-}
-
-void CConfig::Save(const char *filename)
-{
- IXMLDOMDocument2 *doc = CreateDocument();
- IXMLDOMElement *root = NULL;
-
- HRCALL(doc->get_documentElement(&root), "get_documentElement");
-
- switch (window)
- {
- case MultiWindow:
- setAttribute(root, L"WindowMode", L"MultiWindow");
- break;
- case Fullscreen:
- setAttribute(root, L"WindowMode", L"Fullscreen");
- break;
- default:
- case Windowed:
- setAttribute(root, L"WindowMode", L"Windowed");
- break;
- case Nodecoration:
- setAttribute(root, L"WindowMode", L"Nodecoration");
- break;
- }
- switch (client)
- {
- default:
- case NoClient:
- setAttribute(root, L"ClientMode", L"NoClient");
- break;
- case StartProgram:
- setAttribute(root, L"ClientMode", L"StartProgram");
- break;
- case XDMCP:
- setAttribute(root, L"ClientMode", L"XDMCP");
- break;
- }
- setAttribute(root, L"LocalClient", local?L"True":L"False");
- setAttribute(root, L"Display", display.c_str());
- setAttribute(root, L"Program", program.c_str());
- setAttribute(root, L"RemoteProtocol", protocol.c_str());
- setAttribute(root, L"RemoteHost", host.c_str());
- setAttribute(root, L"RemoteUser", user.c_str());
- setAttribute(root, L"XDMCPHost", xdmcp_host.c_str());
- setAttribute(root, L"XDMCPBroadcast", broadcast?L"True":L"False");
- setAttribute(root, L"XDMCPIndirect", indirect?L"True":L"False");
- setAttribute(root, L"Clipboard", clipboard?L"True":L"False");
- setAttribute(root, L"ExtraParams", extra_params.c_str());
-
- VARIANT var = VariantString(filename);
- HRCALL(doc->save(var), "save");
- VariantClear(&var);
-
-
- root->Release();
- doc->Release();
-}
-
-BOOL getAttribute(IXMLDOMElement *elem, const wchar_t *name, std::string &ret)
-{
- VARIANT var;
- HRCALL(elem->getAttribute((OLECHAR*)name, &var), "getAttribute");
- if (V_VT(&var) != VT_NULL && V_VT(&var) == VT_BSTR)
- {
- char *str = wcconvert(V_BSTR(&var));
- ret = str;
- delete [] str;
- return true;
- }
- return false;
-}
-
-BOOL getAttributeBool(IXMLDOMElement *elem, const wchar_t *name, bool &ret)
-{
- std::string str;
- if (getAttribute(elem, name, str))
- {
- if (str == "True")
- ret = true;
- else
- ret = false;
- return true;
- }
- return false;
-}
-
-
-void CConfig::Load(const char *filename)
-{
- IXMLDOMDocument2 *doc = CreateDocument();
- IXMLDOMElement *root = NULL;
-
- VARIANT var = VariantString(filename);
- VARIANT_BOOL status;
- HRCALL(doc->load(var, &status), "load");
- VariantClear(&var);
-
- if (status == VARIANT_FALSE)
- {
- doc->Release();
- return;
- }
-
- HRCALL(doc->get_documentElement(&root), "get_documentElement");
-
- std::string windowMode;
- std::string clientMode;
-
- if (getAttribute(root, L"WindowMode", windowMode))
- {
- if (windowMode == "MultiWindow")
- window = MultiWindow;
- else if (windowMode == "Fullscreen")
- window = Fullscreen;
- else if (windowMode == "Windowed")
- window = Windowed;
- else if (windowMode == "Nodecoration")
- window = Nodecoration;
- }
- if (getAttribute(root, L"ClientMode", clientMode))
- {
- if (clientMode == "NoClient")
- client = NoClient;
- else if (clientMode == "StartProgram")
- client = StartProgram;
- else if (clientMode == "XDMCP")
- client = XDMCP;
- }
-
- getAttributeBool(root, L"LocalClient", local);
- getAttribute(root, L"Display", display);
- getAttribute(root, L"Program", program);
- getAttribute(root, L"RemoteProtocol", protocol);
- getAttribute(root, L"RemoteHost", host);
- getAttribute(root, L"RemoteUser", user);
- getAttribute(root, L"XDMCPHost", xdmcp_host);
- getAttributeBool(root, L"XDMCPBroadcast", broadcast);
- getAttributeBool(root, L"XDMCPIndirect", indirect);
- getAttributeBool(root, L"Clipboard", clipboard);
- getAttribute(root, L"ExtraParams", extra_params);
-
-
- doc->Release();
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/config.h b/nx-X11/programs/Xserver/hw/xwin/xlaunch/config.h
deleted file mode 100644
index f0aed3cf1..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/config.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-#ifndef __CONFIG_H__
-#define __CONFIG_H__
-
-#include <string>
-struct CConfig
-{
- enum {MultiWindow, Fullscreen, Windowed, Nodecoration} window;
- enum {NoClient, StartProgram, XDMCP} client;
- bool local;
- std::string display;
- std::string protocol;
- std::string program;
- std::string host;
- std::string user;
- bool broadcast;
- bool indirect;
- std::string xdmcp_host;
- bool clipboard;
- std::string extra_params;
-#ifdef _DEBUG
- CConfig() : window(MultiWindow), client(StartProgram), local(false), display("1"),
- protocol("Putty"), program("xterm"), host("lupus"), user("ago"),
- broadcast(false), indirect(false), xdmcp_host("lupus"),
- clipboard(true), extra_params() {};
-#else
- CConfig() : window(MultiWindow), client(StartProgram), local(false), display("0"),
- protocol("Putty"), program("xterm"), host(""), user(""),
- broadcast(true), indirect(false), xdmcp_host(""),
- clipboard(true), extra_params() {};
-#endif
- void Load(const char* filename);
- void Save(const char* filename);
-};
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/main.cc b/nx-X11/programs/Xserver/hw/xwin/xlaunch/main.cc
deleted file mode 100755
index 2247d3aaf..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/main.cc
+++ /dev/null
@@ -1,700 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-#include "window/util.h"
-#include "window/wizard.h"
-#include "resources/resources.h"
-#include "config.h"
-#include <prsht.h>
-#include <commctrl.h>
-
-#include <stdexcept>
-
-#include <X11/Xlib.h>
-
-/// @brief Send WM_ENDSESSION to all program windows.
-/// This will shutdown the started xserver
-BOOL CALLBACK KillWindowsProc(HWND hwnd, LPARAM lParam)
-{
- SendMessage(hwnd, WM_ENDSESSION, 0, 0);
- return TRUE;
-}
-
-/// @brief Actual wizard implementation.
-/// This is based on generic CWizard but handles the special dialogs
-class CMyWizard : public CWizard
-{
- public:
- private:
- CConfig config; /// Storage for config options.
- public:
- /// @brief Constructor.
- /// Set wizard pages.
- CMyWizard() : CWizard()
- {
- AddPage(IDD_DISPLAY, IDS_DISPLAY_TITLE, IDS_DISPLAY_SUBTITLE);
- AddPage(IDD_CLIENTS, IDS_CLIENTS_TITLE, IDS_CLIENTS_SUBTITLE);
- AddPage(IDD_PROGRAM, IDS_PROGRAM_TITLE, IDS_PROGRAM_SUBTITLE);
- AddPage(IDD_XDMCP, IDS_XDMCP_TITLE, IDS_XDMCP_SUBTITLE);
- //AddPage(IDD_FONTPATH, IDS_FONTPATH_TITLE, IDS_FONTPATH_SUBTITLE);
- AddPage(IDD_CLIPBOARD, IDS_CLIPBOARD_TITLE, IDS_CLIPBOARD_SUBTITLE);
- AddPage(IDD_FINISH, IDS_FINISH_TITLE, IDS_FINISH_SUBTITLE);
- }
-
- virtual void LoadConfig(const char *filename)
- {
- try {
- config.Load(filename);
- } catch (std::runtime_error &e)
- {
- printf("Fehler: %s\n", e.what());
- }
- }
-
- /// @brief Handle the PSN_WIZNEXT message.
- /// @param hwndDlg Handle to active page dialog.
- /// @param index Index of current page.
- /// @return TRUE if the message was handled. FALSE otherwise.
- virtual BOOL WizardNext(HWND hwndDlg, unsigned index)
- {
-#ifdef _DEBUG
- printf("%s %d\n", __FUNCTION__, index);
-#endif
- switch (PageID(index))
- {
- case IDD_DISPLAY:
- // Check for select window mode
- if (IsDlgButtonChecked(hwndDlg, IDC_MULTIWINDOW))
- config.window = CConfig::MultiWindow;
- else if (IsDlgButtonChecked(hwndDlg, IDC_FULLSCREEN))
- config.window = CConfig::Fullscreen;
- else if (IsDlgButtonChecked(hwndDlg, IDC_WINDOWED))
- config.window = CConfig::Windowed;
- else if (IsDlgButtonChecked(hwndDlg, IDC_NODECORATION))
- config.window = CConfig::Nodecoration;
- else
- {
- SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
- return TRUE;
- }
- // Get selected display number
- {
- char buffer[512];
- GetDlgItemText(hwndDlg, IDC_DISPLAY, buffer, 512);
- buffer[511] = 0;
- config.display = buffer;
- }
- // Check for valid input
- if (config.display.empty())
- SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
- else
- SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIENTS);
- return TRUE;
- case IDD_CLIENTS:
- // Check for select client startup method
- if (IsDlgButtonChecked(hwndDlg, IDC_CLIENT))
- {
- config.client = CConfig::StartProgram;
- SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_PROGRAM);
- } else if (IsDlgButtonChecked(hwndDlg, IDC_XDMCP))
- {
- config.client = CConfig::XDMCP;
- SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_XDMCP);
- } else if (IsDlgButtonChecked(hwndDlg, IDC_CLIENT_NONE))
- {
- config.client = CConfig::NoClient;
- SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIPBOARD);
- } else
- SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
- return TRUE;
- case IDD_PROGRAM:
- // Check wether local or remote client should be started
- if (IsDlgButtonChecked(hwndDlg, IDC_CLIENT_LOCAL))
- config.local = true;
- else if (IsDlgButtonChecked(hwndDlg, IDC_CLIENT_REMOTE))
- config.local = false;
- else
- {
- SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
- return TRUE;
- }
- // Read program, user and host name
- {
- char buffer[512];
- GetDlgItemText(hwndDlg, IDC_CLIENT_USER, buffer, 512);
- buffer[511] = 0;
- config.user = buffer;
- GetDlgItemText(hwndDlg, IDC_CLIENT_HOST, buffer, 512);
- buffer[511] = 0;
- config.host = buffer;
- GetDlgItemText(hwndDlg, IDC_CLIENT_PROGRAM, buffer, 512);
- buffer[511] = 0;
- config.program = buffer;
- }
- // Check for valid input
- if (!config.local && (config.host.empty() || config.program.empty()))
- SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
- else
- SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIPBOARD);
- return TRUE;
- case IDD_XDMCP:
- // Check for broadcast
- if (IsDlgButtonChecked(hwndDlg, IDC_XDMCP_BROADCAST))
- config.broadcast = true;
- else if (IsDlgButtonChecked(hwndDlg, IDC_XDMCP_QUERY))
- config.broadcast = false;
- else
- {
- SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
- return TRUE;
- }
- // Check for indirect mode
- if (IsDlgButtonChecked(hwndDlg, IDC_XDMCP_INDIRECT))
- config.indirect = true;
- else
- config.indirect = false;
- // Read hostname
- {
- char buffer[512];
- GetDlgItemText(hwndDlg, IDC_XDMCP_HOST, buffer, 512);
- buffer[511] = 0;
- config.xdmcp_host = buffer;
- }
- // Check for valid input
- if (!config.broadcast && config.xdmcp_host.empty())
- SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
- else
- SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIPBOARD);
- return TRUE;
- case IDD_CLIPBOARD:
- // check for clipboard
- if (IsDlgButtonChecked(hwndDlg, IDC_CLIPBOARD))
- config.clipboard = true;
- else
- config.clipboard = false;
- // read parameters
- {
- char buffer[512];
- GetDlgItemText(hwndDlg, IDC_EXTRA_PARAMS, buffer, 512);
- buffer[511] = 0;
- config.extra_params = buffer;
- }
- SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_FINISH);
- return TRUE;
- default:
- break;
- }
- return FALSE;
- }
- /// @brief Handle PSN_WIZFINISH message.
- /// @param hwndDlg Handle to active page dialog.
- /// @param index Index of current page.
- /// @return TRUE if the message was handled. FALSE otherwise.
- virtual BOOL WizardFinish(HWND hwndDlg, unsigned index)
- {
-#ifdef _DEBUG
- printf("finish %d\n", index);
-#endif
- return FALSE;
- }
- /// @brief Handle PSN_WIZBACK message.
- /// Basicly handles switching to proper page (skipping XDMCP or program page
- /// if required).
- /// @param hwndDlg Handle to active page dialog.
- /// @param index Index of current page.
- /// @return TRUE if the message was handled. FALSE otherwise.
- virtual BOOL WizardBack(HWND hwndDlg, unsigned index)
- {
- switch (PageID(index))
- {
- case IDD_PROGRAM:
- case IDD_XDMCP:
- SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIENTS);
- return TRUE;
- case IDD_FONTPATH:
- case IDD_CLIPBOARD: // temporary. fontpath is disabled
- switch (config.client)
- {
- case CConfig::NoClient:
- SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIENTS);
- return TRUE;
- case CConfig::StartProgram:
- SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_PROGRAM);
- return TRUE;
- case CConfig::XDMCP:
- SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_XDMCP);
- return TRUE;
- }
- break;
- }
- return FALSE;
- }
- /// @brief Handle PSN_SETACTIVE message.
- /// @param hwndDlg Handle to active page dialog.
- /// @param index Index of current page.
- /// @return TRUE if the message was handled. FALSE otherwise.
- virtual BOOL WizardActivate(HWND hwndDlg, unsigned index)
- {
-#ifdef _DEBUG
- printf("%s %d\n", __FUNCTION__, index);
-#endif
- switch (PageID(index))
- {
- case IDD_CLIENTS:
- // Enable or disable XDMCP radiobutton and text
- EnableWindow(GetDlgItem(hwndDlg, IDC_XDMCP), config.window != CConfig::MultiWindow);
- EnableWindow(GetDlgItem(hwndDlg, IDC_XDMCP_DESC), config.window != CConfig::MultiWindow);
- break;
- }
- return FALSE;
- }
- protected:
- /// @brief Enable or disable the control for remote clients.
- /// @param hwndDlg Handle to active page dialog.
- /// @param state State of control group.
- void EnableRemoteProgramGroup(HWND hwndDlg, BOOL state)
- {
- EnableWindow(GetDlgItem(hwndDlg, IDC_CLIENT_PROTOCOL), state);
- EnableWindow(GetDlgItem(hwndDlg, IDC_CLIENT_HOST), state);
- EnableWindow(GetDlgItem(hwndDlg, IDC_CLIENT_USER), state);
- EnableWindow(GetDlgItem(hwndDlg, IDC_CLIENT_PROTOCOL_DESC), state);
- EnableWindow(GetDlgItem(hwndDlg, IDC_CLIENT_HOST_DESC), state);
- EnableWindow(GetDlgItem(hwndDlg, IDC_CLIENT_USER_DESC), state);
- }
- /// @brief Enable or disable the control for XDMCP connection.
- /// @param hwndDlg Handle to active page dialog.
- /// @param state State of control group.
- void EnableXDMCPQueryGroup(HWND hwndDlg, BOOL state)
- {
- EnableWindow(GetDlgItem(hwndDlg, IDC_XDMCP_HOST), state);
- EnableWindow(GetDlgItem(hwndDlg, IDC_XDMCP_INDIRECT), state);
- }
- /// @brief Fill program box with default values.
- /// @param hwndDlg Handle to active page dialog.
- void FillProgramBox(HWND hwndDlg)
- {
- HWND cbwnd = GetDlgItem(hwndDlg, IDC_CLIENT_PROGRAM);
- if (cbwnd == NULL)
- return;
- SendMessage(cbwnd, CB_RESETCONTENT, 0, 0);
- SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) "xterm");
- SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) "startkde");
- SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) "gnome-session");
- SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) ".xinitrc");
- SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) "wmaker");
- SendMessage(cbwnd, CB_SETCURSEL, 0, 0);
- }
- /// @brief Fill protocol box with default values.
- /// @param hwndDlg Handle to active page dialog.
- void FillProtocolBox(HWND hwndDlg)
- {
- HWND cbwnd = GetDlgItem(hwndDlg, IDC_CLIENT_PROTOCOL);
- if (cbwnd == NULL)
- return;
- SendMessage(cbwnd, CB_RESETCONTENT, 0, 0);
- SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) "Putty");
- //SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) "OpenSSH");
- SendMessage(cbwnd, CB_SETCURSEL, 0, 0);
- }
- void ShowSaveDialog(HWND parent)
- {
- char szTitle[512];
- char szFilter[512];
- char szFileTitle[512];
- char szFile[MAX_PATH];
- HINSTANCE hInst = GetModuleHandle(NULL);
-
- LoadString(hInst, IDS_SAVE_TITLE, szTitle, sizeof(szTitle));
- LoadString(hInst, IDS_SAVE_FILETITLE, szFileTitle, sizeof(szFileTitle));
- LoadString(hInst, IDS_SAVE_FILTER, szFilter, sizeof(szFilter));
- for (unsigned i=0; szFilter[i]; i++)
- if (szFilter[i] == '%')
- szFilter[i] = '\0';
-
- strcpy(szFile, "config.xlaunch");
-
- OPENFILENAME ofn;
- memset(&ofn, 0, sizeof(OPENFILENAME));
- ofn.lStructSize = sizeof(OPENFILENAME);
- ofn.hwndOwner = parent;
- ofn.lpstrFilter = szFilter;
- ofn.lpstrFile= szFile;
- ofn.nMaxFile = sizeof(szFile)/ sizeof(*szFile);
- ofn.lpstrFileTitle = szFileTitle;
- ofn.nMaxFileTitle = sizeof(szFileTitle);
- ofn.lpstrInitialDir = (LPSTR)NULL;
- ofn.Flags = OFN_SHOWHELP | OFN_OVERWRITEPROMPT;
- ofn.lpstrTitle = szTitle;
-
- if (GetSaveFileName(&ofn))
- {
- try {
- config.Save(ofn.lpstrFile);
- } catch (std::runtime_error &e)
- {
- printf("Fehler: %s\n", e.what());
- }
- }
- }
- public:
-
- /// @brief Handle messages fo the dialog pages.
- /// @param hwndDlg Handle of active dialog.
- /// @param uMsg Message code.
- /// @param wParam Message parameter.
- /// @param lParam Message parameter.
- /// @param psp Handle to sheet paramters.
- virtual INT_PTR PageDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam, PROPSHEETPAGE *psp)
- {
- HWND hwnd;
- switch (uMsg)
- {
- case WM_INITDIALOG:
- switch (PageID(PageIndex(psp)))
- {
- case IDD_DISPLAY:
- // Init display dialog. Enable correct check buttons
- switch (config.window)
- {
- default:
- case CConfig::MultiWindow:
- CheckRadioButton(hwndDlg, IDC_MULTIWINDOW, IDC_NODECORATION, IDC_MULTIWINDOW);
- break;
- case CConfig::Fullscreen:
- CheckRadioButton(hwndDlg, IDC_MULTIWINDOW, IDC_NODECORATION, IDC_FULLSCREEN);
- break;
- case CConfig::Windowed:
- CheckRadioButton(hwndDlg, IDC_MULTIWINDOW, IDC_NODECORATION, IDC_WINDOWED);
- break;
- case CConfig::Nodecoration:
- CheckRadioButton(hwndDlg, IDC_MULTIWINDOW, IDC_NODECORATION, IDC_NODECORATION);
- break;
- }
- // Set display number
- SetDlgItemText(hwndDlg, IDC_DISPLAY, config.display.c_str());
- break;
- case IDD_CLIENTS:
- // Init client dialog. Enable correct check buttons
- switch (config.client)
- {
- default:
- case CConfig::NoClient:
- CheckRadioButton(hwndDlg, IDC_CLIENT_NONE, IDC_CLIENT, IDC_CLIENT_NONE);
- break;
- case CConfig::StartProgram:
- CheckRadioButton(hwndDlg, IDC_CLIENT_NONE, IDC_CLIENT, IDC_CLIENT);
- break;
- case CConfig::XDMCP:
- CheckRadioButton(hwndDlg, IDC_CLIENT_NONE, IDC_CLIENT, IDC_XDMCP);
- break;
- }
- break;
- case IDD_PROGRAM:
- // Init program dialog. Check local and remote buttons
- CheckRadioButton(hwndDlg, IDC_CLIENT_LOCAL, IDC_CLIENT_REMOTE, config.local?IDC_CLIENT_LOCAL:IDC_CLIENT_REMOTE);
- EnableRemoteProgramGroup(hwndDlg, config.local?FALSE:TRUE);
- // Fill combo boxes
- FillProgramBox(hwndDlg);
- FillProtocolBox(hwndDlg);
- // Set edit fields
- if (!config.program.empty())
- SetDlgItemText(hwndDlg, IDC_CLIENT_PROGRAM, config.program.c_str());
- SetDlgItemText(hwndDlg, IDC_CLIENT_USER, config.user.c_str());
- SetDlgItemText(hwndDlg, IDC_CLIENT_HOST, config.host.c_str());
- break;
- case IDD_XDMCP:
- // Init XDMCP dialog. Check broadcast and indirect button
- CheckRadioButton(hwndDlg, IDC_XDMCP_QUERY, IDC_XDMCP_BROADCAST, config.broadcast?IDC_XDMCP_BROADCAST:IDC_XDMCP_QUERY);
- CheckDlgButton(hwndDlg, IDC_XDMCP_INDIRECT, config.indirect?BST_CHECKED:BST_UNCHECKED);
- EnableXDMCPQueryGroup(hwndDlg, config.broadcast?FALSE:TRUE);
- // Set hostname
- SetDlgItemText(hwndDlg, IDC_XDMCP_HOST, config.xdmcp_host.c_str());
- break;
- case IDD_CLIPBOARD:
- CheckDlgButton(hwndDlg, IDC_CLIPBOARD, config.clipboard?BST_CHECKED:BST_UNCHECKED);
- SetDlgItemText(hwndDlg, IDC_EXTRA_PARAMS, config.extra_params.c_str());
- break;
-
- }
- case WM_COMMAND:
- // Handle control messages
- switch (LOWORD(wParam))
- {
- // Handle clicks on images. Check proper radiobutton
- case IDC_MULTIWINDOW_IMG:
- case IDC_FULLSCREEN_IMG:
- case IDC_WINDOWED_IMG:
- case IDC_NODECORATION_IMG:
- CheckRadioButton(hwndDlg, IDC_MULTIWINDOW, IDC_NODECORATION, LOWORD(wParam)-4);
- SetFocus(GetDlgItem(hwndDlg, LOWORD(wParam)-4));
- break;
- // Disable unavailable controls
- case IDC_CLIENT_REMOTE:
- case IDC_CLIENT_LOCAL:
- EnableRemoteProgramGroup(hwndDlg, LOWORD(wParam) == IDC_CLIENT_REMOTE);
- break;
- case IDC_XDMCP_QUERY:
- case IDC_XDMCP_BROADCAST:
- EnableXDMCPQueryGroup(hwndDlg, LOWORD(wParam) == IDC_XDMCP_QUERY);
- break;
- case IDC_FINISH_SAVE:
- ShowSaveDialog(hwndDlg);
- break;
- }
- }
- // pass messages to parent
- return CWizard::PageDispatch(hwndDlg, uMsg, wParam, lParam, psp);
- }
-
- /// @brief Try to connect to server.
- /// Repeat until successful, server died or maximum number of retries
- /// reached.
- Display *WaitForServer(HANDLE serverProcess)
- {
- int ncycles = 120; /* # of cycles to wait */
- int cycles; /* Wait cycle count */
- Display *xd;
-
- for (cycles = 0; cycles < ncycles; cycles++) {
- if ((xd = XOpenDisplay(NULL))) {
- return xd;
- }
- else {
- if (WaitForSingleObject(serverProcess, 1000) == WAIT_TIMEOUT)
- continue;
- }
- }
- return NULL;
- }
-
- /// @brief Do the actual start of Xming and clients
- void StartUp()
- {
- std::string buffer;
- std::string client;
-
- // Construct display strings
- std::string display_id = ":" + config.display;
- std::string display = "localhost" + display_id + ":0";
-
-#ifdef _DEBUG
- // Debug only: Switch to Xming installation directory
- SetCurrentDirectory("C:\\Programme\\Xming");
-#endif
-
- // Build Xming commandline
- buffer = "Xming " + display_id + " ";
- switch (config.window)
- {
- case CConfig::MultiWindow:
- buffer += "-multiwindow ";
- break;
- case CConfig::Fullscreen:
- buffer += "-fullscreen ";
- break;
- case CConfig::Nodecoration:
- buffer += "-nodecoration ";
- break;
- default:
- break;
- }
- // Add XDMCP parameter
- if (config.client == CConfig::XDMCP)
- {
- if (config.broadcast)
- buffer += "-broadcast ";
- else
- {
- if (config.indirect)
- buffer += "-indirect ";
- else
- buffer += "-query ";
- buffer += config.xdmcp_host;
- buffer += " ";
- }
- }
- if (config.clipboard)
- buffer += "-clipboard ";
- if (!config.extra_params.empty())
- {
- buffer += config.extra_params;
- buffer += " ";
- }
-
- // Construct client commandline
- if (config.client == CConfig::StartProgram)
- {
- if (!config.local)
- {
- char cmdline[512];
- std::string host = config.host;
- if (!config.user.empty())
- host = config.user + "@" + config.host;
- if (config.protocol == "Putty")
- snprintf(cmdline,512,"plink -X %s %s",
- host.c_str(),config.program.c_str());
- else
- snprintf(cmdline,512,"ssh -Y %s %s",
- host.c_str(),config.program.c_str());
- client += cmdline;
- } else
- client += config.program.c_str();
- }
-
- // Prepare program startup
- STARTUPINFO si, sic;
- PROCESS_INFORMATION pi, pic;
- HANDLE handles[2];
- DWORD hcount = 0;
- Display *dpy = NULL;
-
- ZeroMemory( &si, sizeof(si) );
- si.cb = sizeof(si);
- ZeroMemory( &pi, sizeof(pi) );
- ZeroMemory( &sic, sizeof(sic) );
- sic.cb = sizeof(sic);
- ZeroMemory( &pic, sizeof(pic) );
-
- // Start Xming process.
-#ifdef _DEBUG
- printf("%s\n", buffer.c_str());
-#endif
- if( !CreateProcess( NULL, (CHAR*)buffer.c_str(), NULL, NULL,
- FALSE, 0, NULL, NULL, &si, &pi ))
- throw win32_error("CreateProcess failed");
- handles[hcount++] = pi.hProcess;
-
- if (!client.empty())
- {
- // Set DISPLAY variable
- SetEnvironmentVariable("DISPLAY",display.c_str());
-
- // Wait for server to startup
- dpy = WaitForServer(pi.hProcess);
- if (dpy == NULL)
- {
- while (hcount--)
- TerminateProcess(handles[hcount], (DWORD)-1);
- throw std::runtime_error("Connection to server failed");
- }
-
-#ifdef _DEBUG
- printf("%s\n", client.c_str());
-#endif
-
- // Hide a console window
- // FIXME: This may make it impossible to enter the password
- sic.dwFlags = STARTF_USESHOWWINDOW;
- sic.wShowWindow = SW_HIDE;
-
- // Start the child process.
- if( !CreateProcess( NULL, (CHAR*)client.c_str(), NULL, NULL,
- FALSE, 0, NULL, NULL, &sic, &pic ))
- {
- DWORD err = GetLastError();
- while (hcount--)
- TerminateProcess(handles[hcount], (DWORD)-1);
- throw win32_error("CreateProcess failed", err);
- }
- handles[hcount++] = pic.hProcess;
- }
-
- // Wait until any child process exits.
- DWORD ret = WaitForMultipleObjects(hcount, handles, FALSE, INFINITE );
-
-#ifdef _DEBUG
- printf("killing process!\n");
-#endif
- // Check if Xming is still running
- DWORD exitcode;
- GetExitCodeProcess(pi.hProcess, &exitcode);
- unsigned counter = 0;
- while (exitcode == STILL_ACTIVE)
- {
- if (++counter > 10)
- TerminateProcess(pi.hProcess, (DWORD)-1);
- else
- // Shutdown Xming (the soft way!)
- EnumThreadWindows(pi.dwThreadId, KillWindowsProc, 0);
- Sleep(500);
- GetExitCodeProcess(pi.hProcess, &exitcode);
- }
- // Kill the client
- TerminateProcess(pic.hProcess, (DWORD)-1);
-
- // Close process and thread handles.
- CloseHandle( pi.hProcess );
- CloseHandle( pi.hThread );
- CloseHandle( pic.hProcess );
- CloseHandle( pic.hThread );
- }
-};
-
-int main(int argc, char **argv)
-{
- try {
- InitCommonControls();
- CMyWizard dialog;
-
- bool skip_wizard = false;
-
- for (int i = 1; i < argc; i++)
- {
- if (argv[i] == NULL)
- continue;
-
- std::string arg(argv[i]);
- if (arg == "-load" && i + 1 < argc)
- {
- i++;
- dialog.LoadConfig(argv[i]);
- continue;
- }
- if (arg == "-run" && i + 1 < argc)
- {
- i++;
- dialog.LoadConfig(argv[i]);
- skip_wizard = true;
- continue;
- }
- }
-
- int ret = 0;
- if (skip_wizard || (ret =dialog.ShowModal()) != 0)
- dialog.StartUp();
-#ifdef _DEBUG
- printf("return %d\n", ret);
-#endif
- return 0;
- } catch (std::runtime_error &e)
- {
- printf("Fehler: %s\n", e.what());
- return -1;
- }
-}
-
-
-
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/dialog.rc b/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/dialog.rc
deleted file mode 100755
index 8b00df4ef..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/dialog.rc
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-#include <windows.h>
-#include "resources.h"
-
-#ifndef STR_CAPTION_DISPLAY
-#include "strings.rc"
-#endif
-
-IDD_DISPLAY DIALOGEX 0, 0, 317, 143
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTERMOUSE
-CAPTION STR_CAPTION_DISPLAY
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- AUTORADIOBUTTON STR_MULTIWINDOW,IDC_MULTIWINDOW,7,25,70,24,BS_MULTILINE|BS_TOP
- AUTORADIOBUTTON STR_FULLSCREEN,IDC_FULLSCREEN,157,25,70,24,BS_MULTILINE|BS_TOP
- AUTORADIOBUTTON STR_WINDOWED,IDC_WINDOWED,7,75,70,24,BS_MULTILINE|BS_TOP
- AUTORADIOBUTTON STR_NODECORATION,IDC_NODECORATION,157,75,70,24,BS_MULTILINE|BS_TOP
-
- CONTROL "IMG_MULTIWINDOW",IDC_MULTIWINDOW_IMG,"Static",SS_BITMAP | SS_NOTIFY,80,10,0,0
- CONTROL "IMG_FULLSCREEN",IDC_FULLSCREEN_IMG,"Static",SS_BITMAP | SS_NOTIFY,230,10,0,0
- CONTROL "IMG_WINDOWED",IDC_WINDOWED_IMG,"Static",SS_BITMAP | SS_NOTIFY,80,60,0,0
- CONTROL "IMG_NODECORATION",IDC_NODECORATION_IMG,"Static",SS_BITMAP | SS_NOTIFY,230,60,0,0
-
- LTEXT STR_DISPLAY_DESC,IDC_DISPLAY_DESC,7,120,64,12
- EDITTEXT IDC_DISPLAY,80,118,67,12,ES_NUMBER
-END
-
-IDD_CLIENTS DIALOGEX 0, 0, 317, 143
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTERMOUSE
-CAPTION STR_CAPTION_CLIENTS
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- AUTORADIOBUTTON STR_CLIENT_NONE,IDC_CLIENT_NONE,7,14,300,10
- AUTORADIOBUTTON STR_CLIENT,IDC_CLIENT,7,56,300,10
- AUTORADIOBUTTON STR_XDMCP,IDC_XDMCP,7,98,300,10
-
- LTEXT STR_CLIENT_NONE_DESC,IDC_CLIENT_NONE_DESC,19,28,280,27
- LTEXT STR_CLIENT_DESC,IDC_CLIENT_DESC,19,70,280,27
- LTEXT STR_XDMCP_DESC,IDC_XDMCP_DESC,19,112,280,27
-END
-
-IDD_PROGRAM DIALOGEX 0, 0, 317, 143
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTERMOUSE
-CAPTION STR_CAPTION_PROGRAM
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- LTEXT STR_CLIENT_PROGRAM_DESC,IDC_CLIENT_PROGRAM_DESC,7,14,64,10
- COMBOBOX IDC_CLIENT_PROGRAM,70,12,64,54,CBS_DROPDOWN | WS_VSCROLL
-
- AUTORADIOBUTTON STR_CLIENT_LOCAL,IDC_CLIENT_LOCAL,7,28,300,10
- AUTORADIOBUTTON STR_CLIENT_REMOTE,IDC_CLIENT_REMOTE,7,42,300,10
-
- LTEXT STR_CLIENT_PROTOCOL_DESC,IDC_CLIENT_PROTOCOL_DESC,19,56,70,10
- COMBOBOX IDC_CLIENT_PROTOCOL,100,54,64,54,CBS_DROPDOWNLIST | WS_VSCROLL
-
- LTEXT STR_CLIENT_HOST_DESC,IDC_CLIENT_HOST_DESC,19,70,70,10
- LTEXT STR_CLIENT_USER_DESC,IDC_CLIENT_USER_DESC,19,84,70,10
- EDITTEXT IDC_CLIENT_HOST,100,68,64,12
- EDITTEXT IDC_CLIENT_USER,100,82,64,12
-END
-
-IDD_XDMCP DIALOGEX 0, 0, 317, 143
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTERMOUSE
-CAPTION STR_CAPTION_XDMCP
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- AUTORADIOBUTTON STR_XDMCP_QUERY, IDC_XDMCP_QUERY,7,14,64,10
- EDITTEXT IDC_XDMCP_HOST,78,12,64,12
- AUTOCHECKBOX STR_XDMCP_INDIRECT,IDC_XDMCP_INDIRECT,19,28,280,10
- AUTORADIOBUTTON STR_XDMCP_BROADCAST, IDC_XDMCP_BROADCAST,7,42,300,10
- LTEXT STR_XDMCP_QUERY_DESC,IDC_XDMCP_QUERY_DESC,7,56,300,42
-END
-
-IDD_CLIPBOARD DIALOGEX 0, 0, 317, 143
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTERMOUSE
-CAPTION STR_CAPTION_CLIPBOARD
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- AUTOCHECKBOX STR_CLIPBOARD,IDC_CLIPBOARD,7,14,300,10
- LTEXT STR_CLIPBOARD_DESC,IDC_CLIPBOARD_DESC,19,28,280,27
-
- LTEXT STR_EXTRA_PARAMS_DESC,IDC_EXTRA_PARAMS_DESC,7,56,280,10
- EDITTEXT IDC_EXTRA_PARAMS,7,70,128,12
-END
-
-IDD_FINISH DIALOGEX 0, 0, 317, 143
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTERMOUSE
-CAPTION STR_CAPTION_FINISH
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- LTEXT STR_FINISH_DESC,IDC_FINISH_DESC,7,14,300,28
- LTEXT STR_FINISH_SAVE_DESC,IDC_FINISH_SAVE_DESC,7,56,300,12
- PUSHBUTTON STR_FINISH_SAVE,IDC_FINISH_SAVE,7,68,75,14
-END
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/fullscreen.bmp b/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/fullscreen.bmp
deleted file mode 100755
index 0d051f0b4..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/fullscreen.bmp
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/images.rc b/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/images.rc
deleted file mode 100755
index 2eac53c93..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/images.rc
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-IMG_MULTIWINDOW BITMAP "resources\\multiwindow.bmp"
-IMG_WINDOWED BITMAP "resources\\windowed.bmp"
-IMG_FULLSCREEN BITMAP "resources\\fullscreen.bmp"
-IMG_NODECORATION BITMAP "resources\\nodecoration.bmp"
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/multiwindow.bmp b/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/multiwindow.bmp
deleted file mode 100755
index 0755c87b4..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/multiwindow.bmp
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/nodecoration.bmp b/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/nodecoration.bmp
deleted file mode 100755
index e9e1ce690..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/nodecoration.bmp
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/resources.h b/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/resources.h
deleted file mode 100755
index 470005192..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/resources.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-
-#define IDC_STATIC -1
-
-#define IDD_WELCOME 100
-#define IDD_FINISH 101
-#define IDD_DISPLAY 102
-#define IDD_CLIENTS 103
-#define IDD_PROGRAM 104
-#define IDD_XDMCP 105
-#define IDD_FONTPATH 106
-#define IDD_CLIPBOARD 107
-
-#define IDS_DISPLAY_TITLE 300
-#define IDS_DISPLAY_SUBTITLE 301
-#define IDS_CLIENTS_TITLE 302
-#define IDS_CLIENTS_SUBTITLE 303
-#define IDS_PROGRAM_TITLE 304
-#define IDS_PROGRAM_SUBTITLE 305
-#define IDS_XDMCP_TITLE 306
-#define IDS_XDMCP_SUBTITLE 307
-#define IDS_FONTPATH_TITLE 308
-#define IDS_FONTPATH_SUBTITLE 309
-#define IDS_FINISH_TITLE 310
-#define IDS_FINISH_SUBTITLE 311
-#define IDS_CLIPBOARD_TITLE 312
-#define IDS_CLIPBOARD_SUBTITLE 313
-#define IDS_SAVE_TITLE 320
-#define IDS_SAVE_FILETITLE 321
-#define IDS_SAVE_FILTER 322
-
-#define IDC_MULTIWINDOW 200
-#define IDC_WINDOWED 201
-#define IDC_FULLSCREEN 202
-#define IDC_NODECORATION 203
-#define IDC_MULTIWINDOW_IMG 204
-#define IDC_WINDOWED_IMG 205
-#define IDC_FULLSCREEN_IMG 206
-#define IDC_NODECORATION_IMG 207
-#define IDC_DISPLAY 208
-#define IDC_DISPLAY_DESC 209
-
-#define IDC_CLIENT_NONE 210
-#define IDC_XDMCP 211
-#define IDC_CLIENT 212
-#define IDC_CLIENT_LOCAL 213
-#define IDC_CLIENT_REMOTE 214
-#define IDC_CLIENT_HOST 215
-#define IDC_CLIENT_USER 216
-#define IDC_CLIENT_PROTOCOL 217
-#define IDC_CLIENT_CONFIGURE 218
-#define IDC_CLIENT_PROGRAM 219
-#define IDC_XDMCP_QUERY 220
-#define IDC_XDMCP_BROADCAST 221
-#define IDC_XDMCP_INDIRECT 222
-#define IDC_XDMCP_HOST 223
-#define IDC_CLIENT_NONE_DESC 224
-#define IDC_XDMCP_DESC 225
-#define IDC_CLIENT_DESC 226
-#define IDC_XDMCP_QUERY_DESC 227
-#define IDC_CLIENT_PROGRAM_DESC 228
-#define IDC_CLIENT_HOST_DESC 229
-#define IDC_CLIENT_USER_DESC 230
-#define IDC_CLIENT_PROTOCOL_DESC 231
-
-#define IDC_FONTPATH_DESC 240
-
-#define IDC_FINISH_DESC 250
-#define IDC_FINISH_SAVE 251
-#define IDC_FINISH_SAVE_DESC 252
-
-#define IDC_CLIPBOARD 260
-#define IDC_CLIPBOARD_DESC 261
-#define IDC_EXTRA_PARAMS 262
-#define IDC_EXTRA_PARAMS_DESC 263
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/resources.rc b/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/resources.rc
deleted file mode 100755
index 07fd52f32..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/resources.rc
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-#include <windows.h>
-
-#include "resources.h"
-#include "images.rc"
-#include "dialog.rc"
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/strings.rc b/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/strings.rc
deleted file mode 100644
index 5a9cd281b..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/strings.rc
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-
-#define STR_CAPTION_DISPLAY "Display settings"
-#define STR_MULTIWINDOW "Multiple windows"
-#define STR_FULLSCREEN "Fullscreen"
-#define STR_WINDOWED "One large window"
-#define STR_NODECORATION "One window without titlebar"
-#define STR_DISPLAY_DESC "Display number"
-
-#define STR_CAPTION_CLIENTS "Client startup"
-#define STR_CLIENT_NONE "Start no client"
-#define STR_CLIENT_NONE_DESC "This will just start the xserver. You will be able to start local clients later."
-#define STR_CLIENT "Start a program"
-#define STR_CLIENT_DESC "This will start a local or remote program which will connect to the xserver. You will be able to start local clients later too. Remote programs are started using SSH."
-#define STR_XDMCP "Open session via XDMCP"
-#define STR_XDMCP_DESC "This will start a remote XDMCP session. Starting local clients later is limited. This option is not available with the ""Multiple windows"" mode."
-
-#define STR_CAPTION_PROGRAM "Start program"
-#define STR_CLIENT_PROGRAM_DESC "Start program"
-#define STR_CLIENT_LOCAL "Start program on this computer"
-#define STR_CLIENT_REMOTE "Start program on remote computer"
-#define STR_CLIENT_PROTOCOL_DESC "Connect using"
-#define STR_CLIENT_HOST_DESC "Connect to computer"
-#define STR_CLIENT_USER_DESC "Login as user"
-
-
-#define STR_CAPTION_XDMCP "XDMCP settings"
-#define STR_XDMCP_QUERY "Connect to host"
-#define STR_XDMCP_INDIRECT "Use indirect connect"
-#define STR_XDMCP_BROADCAST "Search for hosts (broadcast)"
-#define STR_XDMCP_QUERY_DESC "Some XDMCP servers must be configured to allow remote connections. Please check the documentation about configuring XDMCP servers."
-
-
-#define STR_CAPTION_FONTPATH "Fontpath settings"
-
-#define STR_CAPTION_CLIPBOARD "Clipboard settings"
-#define STR_CLIPBOARD "Clipboard"
-#define STR_CLIPBOARD_DESC "Start the integrated clipboard manager"
-#define STR_EXTRA_PARAMS_DESC "Additional parameters for Xming"
-
-#define STR_CAPTION_FINISH "Finish configuration"
-#define STR_FINISH_DESC "Configuration is complete. Clish Finish to start Xming."
-#define STR_FINISH_SAVE_DESC "You may also save the configuration for later use."
-#define STR_FINISH_SAVE "Save configuration"
-
-#define STR_DISPLAY_TITLE "Select display settings"
-#define STR_DISPLAY_SUBTITLE "Choose how Xming display programs"
-#define STR_CLIENTS_TITLE "Select how to start clients"
-#define STR_CLIENTS_SUBTITLE ""
-#define STR_PROGRAM_TITLE "Specify the program to start"
-#define STR_PROGRAM_SUBTITLE ""
-#define STR_XDMCP_TITLE "Configure a remote XDMCP connection"
-#define STR_XDMCP_SUBTITLE ""
-#define STR_FONTPATH_TITLE "Define font locations"
-#define STR_FONTPATH_SUBTITLE ""
-#define STR_FINISH_TITLE "Configuration complete"
-#define STR_FINISH_SUBTITLE ""
-#define STR_CLIPBOARD_TITLE "Clipboard settings"
-#define STR_CLIPBOARD_SUBTITLE ""
-
-#define STR_SAVE_TITLE "Save configuration"
-#define STR_SAVE_FILETITLE "Filename"
-#define STR_SAVE_FILTER "Xlaunch Files (*.xlaunch)%*.xlaunch%%"
-
-STRINGTABLE
-BEGIN
- IDS_DISPLAY_TITLE STR_DISPLAY_TITLE
- IDS_DISPLAY_SUBTITLE STR_DISPLAY_SUBTITLE
- IDS_CLIENTS_TITLE STR_CLIENTS_TITLE
- IDS_CLIENTS_SUBTITLE STR_CLIENTS_SUBTITLE
- IDS_PROGRAM_TITLE STR_PROGRAM_TITLE
- IDS_PROGRAM_SUBTITLE STR_PROGRAM_SUBTITLE
- IDS_XDMCP_TITLE STR_XDMCP_TITLE
- IDS_XDMCP_SUBTITLE STR_XDMCP_SUBTITLE
- IDS_FONTPATH_TITLE STR_FONTPATH_TITLE
- IDS_FONTPATH_SUBTITLE STR_FONTPATH_SUBTITLE
- IDS_FINISH_TITLE STR_FINISH_TITLE
- IDS_FINISH_SUBTITLE STR_FINISH_SUBTITLE
- IDS_CLIPBOARD_TITLE STR_CLIPBOARD_TITLE
- IDS_CLIPBOARD_SUBTITLE STR_CLIPBOARD_SUBTITLE
- IDS_SAVE_TITLE STR_SAVE_TITLE
- IDS_SAVE_FILETITLE STR_SAVE_FILETITLE
- IDS_SAVE_FILTER STR_SAVE_FILTER
-END
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/windowed.bmp b/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/windowed.bmp
deleted file mode 100755
index 9eff2bff9..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/resources/windowed.bmp
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/dialog.cc b/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/dialog.cc
deleted file mode 100755
index 76e5c35ac..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/dialog.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-#include <stdio.h>
-#include "dialog.h"
-#include "util.h"
-
-CBaseDialog::CBaseDialog() : CWindow(""), result(0)
-{
-}
-
-CDialog::CDialog(const char *res) : CBaseDialog(), resourcename(res)
-{
-}
-
-HWND CDialog::CreateWindowHandle()
-{
- HWND ret = CreateDialog(
- GetModuleHandle(NULL),
- resourcename.c_str(),
- NULL,
- DialogProc);
- if (ret == NULL)
- throw win32_error("CreateDialog failed");
- return ret;
-}
-
-INT_PTR CALLBACK CBaseDialog::DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
- MessageDebug::debug(hwndDlg, uMsg, wParam, lParam, __FUNCTION__);
- CBaseDialog* dialog = (CDialog*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
- if (dialog != NULL)
- return dialog->DlgDispatch(hwndDlg, uMsg, wParam, lParam);
- return FALSE;
-}
-
-INT_PTR CBaseDialog::DlgDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
- switch (uMsg)
- {
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDOK:
- case IDCANCEL:
- result = wParam;
- EndDialog(hwndDlg, wParam);
- DestroyWindow(hwndDlg);
- return TRUE;
- }
- break;
- }
- return FALSE;
-}
-
-INT_PTR CDialog::DlgDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
- return CBaseDialog::DlgDispatch(hwndDlg, uMsg, wParam, lParam);
-}
-
-int CBaseDialog::Execute()
-{
- return CWindow::ShowModal();
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/dialog.h b/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/dialog.h
deleted file mode 100755
index 073394bb2..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/dialog.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-#ifndef __DIALOG_H__
-#define __DIALOG_H__
-
-#include "window.h"
-class CBaseDialog : public CWindow
-{
- private:
- int result;
- protected:
- static INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
- virtual INT_PTR DlgDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
- public:
- CBaseDialog();
- int Execute();
-};
-
-class CDialog : public CBaseDialog
-{
- private:
- std::string resourcename;
- protected:
- virtual INT_PTR DlgDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
- virtual HWND CreateWindowHandle();
- public:
- CDialog(const char *res);
-};
-
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/util.cc b/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/util.cc
deleted file mode 100644
index fb7e87297..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/util.cc
+++ /dev/null
@@ -1,1112 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-#include "util.h"
-
-std::string win32_error::message(DWORD errorcode)
-{
- LPVOID lpMsgBuf;
- if (!FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- errorcode,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (LPTSTR) &lpMsgBuf,
- 0,
- NULL ))
- {
- return "Unknown error in FormatMessage";
- }
-
- std::string ret((LPCTSTR)lpMsgBuf);
- LocalFree( lpMsgBuf );
- return ret;
-}
-
-void MessageDebug::debug(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, const char *prefix)
-{
-#ifdef _DEBUG
- static const char *psn_notify[] = {
- "PSN_SETACTIVE",
- "PSN_KILLACTIVE",
- "PSN_APPLY",
- "PSN_RESET",
- NULL,
- "PSN_HELP",
- "PSN_WIZBACK",
- "PSN_WIZNEXT",
- "PSN_WIZFINISH",
- "PSN_QUERYCANCEL" };
- if (uMsg == WM_NOTIFY)
- {
- LPNMHDR pnmh = (LPNMHDR)lParam;
- int psn_index = -(int)pnmh->code - 200;
- if (psn_index >= 0 && psn_index < 10 && psn_notify[psn_index])
- printf("%s: %08x %04x WM_NOTIFY (%s)\n", prefix, hwnd, wParam, psn_notify[psn_index]);
- else if (pnmh->code < NOTIFY_NAMES_LEN && notify_names[pnmh->code])
- printf("%s: %08x %04x WM_NOTIFY (%s)\n", prefix, hwnd, wParam, notify_names[pnmh->code]);
- else
- printf("%s: %08x %04x WM_NOTIFY (%u)\n", prefix, hwnd, wParam, pnmh->code);
- }
- else if (uMsg >= MESSAGE_NAMES_LEN)
- if (uMsg >= WM_USER)
- printf("%s: %08x %04x %08x WM_USER + %d\n", prefix, hwnd, wParam, lParam, uMsg - WM_USER);
- else
- printf("%s: %08x %04x %08x %d\n", prefix, hwnd, wParam, lParam, uMsg);
- else if (uMsg >= 0 && uMsg < MESSAGE_NAMES_LEN && message_names[uMsg])
- printf("%s: %08x %04x %08x %s\n", prefix, hwnd, wParam, lParam, message_names[uMsg]);
-#endif
-}
-
-
-const char * MessageDebug::message_names[MESSAGE_NAMES_LEN] = {
- "WM_NULL",
- "WM_CREATE",
- "WM_DESTROY",
- "WM_MOVE",
- "4",
- "WM_SIZE",
- "WM_ACTIVATE",
- "WM_SETFOCUS",
- "WM_KILLFOCUS",
- "9",
- "WM_ENABLE",
- "WM_SETREDRAW",
- "WM_SETTEXT",
- "WM_GETTEXT",
- "WM_GETTEXTLENGTH",
- "WM_PAINT",
- "WM_CLOSE",
- "WM_QUERYENDSESSION",
- "WM_QUIT",
- "WM_QUERYOPEN",
- "WM_ERASEBKGND",
- "WM_SYSCOLORCHANGE",
- "WM_ENDSESSION",
- "23",
- "WM_SHOWWINDOW",
- "25",
- "WM_WININICHANGE",
- "WM_DEVMODECHANGE",
- "WM_ACTIVATEAPP",
- "WM_FONTCHANGE",
- "WM_TIMECHANGE",
- "WM_CANCELMODE",
- NULL /* WM_SETCURSOR */,
- "WM_MOUSEACTIVATE",
- "WM_CHILDACTIVATE",
- "WM_QUEUESYNC",
- "WM_GETMINMAXINFO",
- "37",
- "WM_PAINTICON",
- "WM_ICONERASEBKGND",
- "WM_NEXTDLGCTL",
- "41",
- "WM_SPOOLERSTATUS",
- "WM_DRAWITEM",
- "WM_MEASUREITEM",
- "WM_DELETEITEM",
- "WM_VKEYTOITEM",
- "WM_CHARTOITEM",
- "WM_SETFONT",
- "WM_GETFONT",
- "WM_SETHOTKEY",
- "WM_GETHOTKEY",
- "52",
- "53",
- "54",
- "WM_QUERYDRAGICON",
- "56",
- "WM_COMPAREITEM",
- "58",
- "59",
- "60",
- "61",
- "62",
- "63",
- "64",
- "WM_COMPACTING",
- "66",
- "67",
- "WM_COMMNOTIFY",
- "69",
- "WM_WINDOWPOSCHANGING",
- "WM_WINDOWPOSCHANGED",
- "WM_POWER",
- "73",
- "WM_COPYDATA",
- "WM_CANCELJOURNAL",
- "76",
- "77",
- "WM_NOTIFY",
- "79",
- "WM_INPUTLANGCHANGEREQUEST",
- "WM_INPUTLANGCHANGE",
- "WM_TCARD",
- "WM_HELP",
- "WM_USERCHANGED",
- "WM_NOTIFYFORMAT",
- "86",
- "87",
- "88",
- "89",
- "90",
- "91",
- "92",
- "93",
- "94",
- "95",
- "96",
- "97",
- "98",
- "99",
- "100",
- "101",
- "102",
- "103",
- "104",
- "105",
- "106",
- "107",
- "108",
- "109",
- "110",
- "111",
- "112",
- "113",
- "114",
- "115",
- "116",
- "117",
- "118",
- "119",
- "120",
- "121",
- "122",
- "WM_CONTEXTMENU",
- "WM_STYLECHANGING",
- "WM_STYLECHANGED",
- "WM_DISPLAYCHANGE",
- "WM_GETICON",
- "WM_SETICON",
- "WM_NCCREATE",
- "WM_NCDESTROY",
- "WM_NCCALCSIZE",
- NULL /* WM_NCHITTEST */,
- "WM_NCPAINT",
- "WM_NCACTIVATE",
- "WM_GETDLGCODE",
- "WM_SYNCPAINT",
- "137",
- "138",
- "139",
- "140",
- "141",
- "142",
- "143",
- "144",
- "145",
- "146",
- "147",
- "148",
- "149",
- "150",
- "151",
- "152",
- "153",
- "154",
- "155",
- "156",
- "157",
- "158",
- "159",
- NULL /* WM_NCMOUSEMOVE */,
- "WM_NCLBUTTONDOWN",
- "WM_NCLBUTTONUP",
- "WM_NCLBUTTONDBLCLK",
- "WM_NCRBUTTONDOWN",
- "WM_NCRBUTTONUP",
- "WM_NCRBUTTONDBLCLK",
- "WM_NCMBUTTONDOWN",
- "WM_NCMBUTTONUP",
- "WM_NCMBUTTONDBLCLK",
- "170",
- "171",
- "172",
- "173",
- "174",
- "175",
- "176",
- "177",
- "178",
- "179",
- "180",
- "181",
- "182",
- "183",
- "184",
- "185",
- "186",
- "187",
- "188",
- "189",
- "190",
- "191",
- "192",
- "193",
- "194",
- "195",
- "196",
- "197",
- "198",
- "199",
- "200",
- "201",
- "202",
- "203",
- "204",
- "205",
- "206",
- "207",
- "208",
- "209",
- "210",
- "211",
- "212",
- "213",
- "214",
- "215",
- "216",
- "217",
- "218",
- "219",
- "220",
- "221",
- "222",
- "223",
- "224",
- "225",
- "226",
- "227",
- "228",
- "229",
- "230",
- "231",
- "232",
- "233",
- "234",
- "235",
- "236",
- "237",
- "238",
- "239",
- "240",
- "241",
- "242",
- "243",
- "244",
- "245",
- "246",
- "247",
- "248",
- "249",
- "250",
- "251",
- "252",
- "253",
- "254",
- "255",
- "WM_KEYDOWN",
- "WM_KEYUP",
- "WM_CHAR",
- "WM_DEADCHAR",
- "WM_SYSKEYDOWN",
- "WM_SYSKEYUP",
- "WM_SYSCHAR",
- "WM_SYSDEADCHAR",
- "WM_CONVERTREQUESTEX",
- "265",
- "266",
- "267",
- "268",
- "WM_IME_STARTCOMPOSITION",
- "WM_IME_ENDCOMPOSITION",
- "WM_IME_KEYLAST",
- "WM_INITDIALOG",
- "WM_COMMAND",
- "WM_SYSCOMMAND",
- NULL /* WM_TIMER */,
- "WM_HSCROLL",
- "WM_VSCROLL",
- "WM_INITMENU",
- "WM_INITMENUPOPUP",
- "280",
- "281",
- "282",
- "283",
- "284",
- "285",
- "286",
- "WM_MENUSELECT",
- "WM_MENUCHAR",
- "WM_ENTERIDLE",
- "290",
- "291",
- "292",
- "293",
- "294",
- "295",
- "296",
- "297",
- "298",
- "299",
- "300",
- "301",
- "302",
- "303",
- "304",
- "305",
- "WM_CTLCOLORMSGBOX",
- "WM_CTLCOLOREDIT",
- "WM_CTLCOLORLISTBOX",
- "WM_CTLCOLORBTN",
- "WM_CTLCOLORDLG",
- "WM_CTLCOLORSCROLLBAR",
- "WM_CTLCOLORSTATIC",
- "313",
- "314",
- "315",
- "316",
- "317",
- "318",
- "319",
- "320",
- "321",
- "322",
- "323",
- "324",
- "325",
- "326",
- "327",
- "328",
- "329",
- "330",
- "331",
- "332",
- "333",
- "334",
- "335",
- "336",
- "337",
- "338",
- "339",
- "340",
- "341",
- "342",
- "343",
- "344",
- "345",
- "346",
- "347",
- "348",
- "349",
- "350",
- "351",
- "352",
- "353",
- "354",
- "355",
- "356",
- "357",
- "358",
- "359",
- "360",
- "361",
- "362",
- "363",
- "364",
- "365",
- "366",
- "367",
- "368",
- "369",
- "370",
- "371",
- "372",
- "373",
- "374",
- "375",
- "376",
- "377",
- "378",
- "379",
- "380",
- "381",
- "382",
- "383",
- "384",
- "385",
- "386",
- "387",
- "388",
- "389",
- "390",
- "391",
- "392",
- "393",
- "394",
- "395",
- "396",
- "397",
- "398",
- "399",
- "400",
- "401",
- "402",
- "403",
- "404",
- "405",
- "406",
- "407",
- "408",
- "409",
- "410",
- "411",
- "412",
- "413",
- "414",
- "415",
- "416",
- "417",
- "418",
- "419",
- "420",
- "421",
- "422",
- "423",
- "424",
- "425",
- "426",
- "427",
- "428",
- "429",
- "430",
- "431",
- "432",
- "433",
- "434",
- "435",
- "436",
- "437",
- "438",
- "439",
- "440",
- "441",
- "442",
- "443",
- "444",
- "445",
- "446",
- "447",
- "448",
- "449",
- "450",
- "451",
- "452",
- "453",
- "454",
- "455",
- "456",
- "457",
- "458",
- "459",
- "460",
- "461",
- "462",
- "463",
- "464",
- "465",
- "466",
- "467",
- "468",
- "469",
- "470",
- "471",
- "472",
- "473",
- "474",
- "475",
- "476",
- "477",
- "478",
- "479",
- "480",
- "481",
- "482",
- "483",
- "484",
- "485",
- "486",
- "487",
- "488",
- "489",
- "490",
- "491",
- "492",
- "493",
- "494",
- "495",
- "496",
- "497",
- "498",
- "499",
- "500",
- "501",
- "502",
- "503",
- "504",
- "505",
- "506",
- "507",
- "508",
- "509",
- "510",
- "511",
- NULL /* WM_MOUSEMOVE */,
- "WM_LBUTTONDOWN",
- "WM_LBUTTONUP",
- "WM_LBUTTONDBLCLK",
- "WM_RBUTTONDOWN",
- "WM_RBUTTONUP",
- "WM_RBUTTONDBLCLK",
- "WM_MBUTTONDOWN",
- "WM_MBUTTONUP",
- "WM_MBUTTONDBLCLK",
- "WM_MOUSEWHEEL",
- "WM_XBUTTONDOWN",
- "WM_XBUTTONUP",
- "WM_XBUTTONDBLCLK",
- "526",
- "527",
- "WM_PARENTNOTIFY",
- "WM_ENTERMENULOOP",
- "WM_EXITMENULOOP",
- "WM_NEXTMENU",
- "WM_SIZING",
- "WM_CAPTURECHANGED",
- "WM_MOVING",
- "535",
- "WM_POWERBROADCAST",
- "WM_DEVICECHANGE",
- "538",
- "539",
- "540",
- "541",
- "542",
- "543",
- "WM_MDICREATE",
- "WM_MDIDESTROY",
- "WM_MDIACTIVATE",
- "WM_MDIRESTORE",
- "WM_MDINEXT",
- "WM_MDIMAXIMIZE",
- "WM_MDITILE",
- "WM_MDICASCADE",
- "WM_MDIICONARRANGE",
- "WM_MDIGETACTIVE",
- "554",
- "555",
- "556",
- "557",
- "558",
- "559",
- "WM_MDISETMENU",
- "WM_ENTERSIZEMOVE",
- "WM_EXITSIZEMOVE",
- "WM_DROPFILES",
- "WM_MDIREFRESHMENU",
- "565",
- "566",
- "567",
- "568",
- "569",
- "570",
- "571",
- "572",
- "573",
- "574",
- "575",
- "576",
- "577",
- "578",
- "579",
- "580",
- "581",
- "582",
- "583",
- "584",
- "585",
- "586",
- "587",
- "588",
- "589",
- "590",
- "591",
- "592",
- "593",
- "594",
- "595",
- "596",
- "597",
- "598",
- "599",
- "600",
- "601",
- "602",
- "603",
- "604",
- "605",
- "606",
- "607",
- "608",
- "609",
- "610",
- "611",
- "612",
- "613",
- "614",
- "615",
- "616",
- "617",
- "618",
- "619",
- "620",
- "621",
- "622",
- "623",
- "624",
- "625",
- "626",
- "627",
- "628",
- "629",
- "630",
- "631",
- "632",
- "633",
- "634",
- "635",
- "636",
- "637",
- "638",
- "639",
- "640",
- "WM_IME_SETCONTEXT",
- "WM_IME_NOTIFY",
- "WM_IME_CONTROL",
- "WM_IME_COMPOSITIONFULL",
- "WM_IME_SELECT",
- "WM_IME_CHAR",
- "647",
- "648",
- "649",
- "650",
- "651",
- "652",
- "653",
- "654",
- "655",
- "WM_IME_KEYDOWN",
- "WM_IME_KEYUP",
- "658",
- "659",
- "660",
- "661",
- "662",
- "663",
- "664",
- "665",
- "666",
- "667",
- "668",
- "669",
- "670",
- "671",
- "672",
- "WM_MOUSEHOVER",
- "674",
- "WM_MOUSELEAVE",
- "676",
- "677",
- "678",
- "679",
- "680",
- "681",
- "682",
- "683",
- "684",
- "685",
- "686",
- "687",
- "688",
- "689",
- "690",
- "691",
- "692",
- "693",
- "694",
- "695",
- "696",
- "697",
- "698",
- "699",
- "700",
- "701",
- "702",
- "703",
- "704",
- "705",
- "706",
- "707",
- "708",
- "709",
- "710",
- "711",
- "712",
- "713",
- "714",
- "715",
- "716",
- "717",
- "718",
- "719",
- "720",
- "721",
- "722",
- "723",
- "724",
- "725",
- "726",
- "727",
- "728",
- "729",
- "730",
- "731",
- "732",
- "733",
- "734",
- "735",
- "736",
- "737",
- "738",
- "739",
- "740",
- "741",
- "742",
- "743",
- "744",
- "745",
- "746",
- "747",
- "748",
- "749",
- "750",
- "751",
- "752",
- "753",
- "754",
- "755",
- "756",
- "757",
- "758",
- "759",
- "760",
- "761",
- "762",
- "763",
- "764",
- "765",
- "766",
- "767",
- "WM_CUT",
- "WM_COPY",
- "WM_PASTE",
- "WM_CLEAR",
- "WM_UNDO",
- "WM_RENDERFORMAT",
- "WM_RENDERALLFORMATS",
- "WM_DESTROYCLIPBOARD",
- "WM_DRAWCLIPBOARD",
- "WM_PAINTCLIPBOARD",
- "WM_VSCROLLCLIPBOARD",
- "WM_SIZECLIPBOARD",
- "WM_ASKCBFORMATNAME",
- "WM_CHANGECBCHAIN",
- "WM_HSCROLLCLIPBOARD",
- "WM_QUERYNEWPALETTE",
- "WM_PALETTEISCHANGING",
- "WM_PALETTECHANGED",
- "WM_HOTKEY",
- "787",
- "788",
- "789",
- "790",
- "WM_PRINT",
- "WM_PRINTCLIENT",
- "793",
- "794",
- "795",
- "796",
- "797",
- "798",
- "799",
- "800",
- "801",
- "802",
- "803",
- "804",
- "805",
- "806",
- "807",
- "808",
- "809",
- "810",
- "811",
- "812",
- "813",
- "814",
- "815",
- "816",
- "817",
- "818",
- "819",
- "820",
- "821",
- "822",
- "823",
- "824",
- "825",
- "826",
- "827",
- "828",
- "829",
- "830",
- "831",
- "832",
- "833",
- "834",
- "835",
- "836",
- "837",
- "838",
- "839",
- "840",
- "841",
- "842",
- "843",
- "844",
- "845",
- "846",
- "847",
- "848",
- "849",
- "850",
- "851",
- "852",
- "853",
- "854",
- "855",
- "856",
- "857",
- "858",
- "859",
- "860",
- "861",
- "862",
- "863",
- "864",
- "865",
- "866",
- "867",
- "868",
- "869",
- "870",
- "871",
- "872",
- "873",
- "874",
- "875",
- "876",
- "877",
- "878",
- "879",
- "880",
- "881",
- "882",
- "883",
- "884",
- "885",
- "886",
- "887",
- "888",
- "889",
- "890",
- "891",
- "892",
- "893",
- "894",
- "895",
- "896",
- "897",
- "898",
- "899",
- "900",
- "901",
- "902",
- "903",
- "904",
- "905",
- "906",
- "907",
- "908",
- "909",
- "910",
- "911",
- "912",
- "913",
- "914",
- "915",
- "916",
- "917",
- "918",
- "919",
- "920",
- "921",
- "922",
- "923",
- "924",
- "925",
- "926",
- "927",
- "928",
- "929",
- "930",
- "931",
- "932",
- "933",
- "934",
- "935",
- "936",
- "937",
- "938",
- "939",
- "940",
- "941",
- "942",
- "943",
- "944",
- "945",
- "946",
- "947",
- "948",
- "949",
- "950",
- "951",
- "952",
- "953",
- "954",
- "955",
- "956",
- "957",
- "958",
- "959",
- "960",
- "961",
- "962",
- "963",
- "964",
- "965",
- "966",
- "967",
- "968",
- "969",
- "970",
- "971",
- "972",
- "973",
- "974",
- "975",
- "976",
- "977",
- "978",
- "979",
- "980",
- "981",
- "982",
- "983",
- "984",
- "985",
- "986",
- "987",
- "988",
- "989",
- "990",
- "991",
- "992",
- "993",
- "994",
- "995",
- "996",
- "997",
- "998",
- "999",
- "1000",
- "1001",
- "1002",
- "1003",
- "1004",
- "1005",
- "1006",
- "1007",
- "1008",
- "1009",
- "1010",
- "1011",
- "1012",
- "1013",
- "1014",
- "1015",
- "1016",
- "1017",
- "1018",
- "1019",
- "1020",
- "1021",
- "1022",
- "1023"
-};
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/util.h b/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/util.h
deleted file mode 100644
index cd21da657..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/util.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-#ifndef __UTIL_H__
-#define __UTIL_H__
-
-#include <windows.h>
-#include <stdexcept>
-
-
-class win32_error : public std::runtime_error
-{
- public:
- static std::string message(DWORD code);
- DWORD errorcode;
- win32_error(const std::string &msg,DWORD code = GetLastError()) : std::runtime_error(msg + ":" + message(code)), errorcode(code) {};
-};
-
-#define MESSAGE_NAMES_LEN 1024
-#define NOTIFY_NAMES_LEN 0
-class MessageDebug
-{
- protected:
- static const char * message_names[MESSAGE_NAMES_LEN];
- static const char * notify_names[NOTIFY_NAMES_LEN];
- public:
- static void debug(HWND handle, UINT uMsg, WPARAM wParam, LPARAM lParam, const char *prefix);
-};
-
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/window.cc b/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/window.cc
deleted file mode 100755
index cca3a485a..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/window.cc
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-
-#include "window.h"
-#include "util.h"
-#include <stdio.h>
-#include <stdexcept>
-
-CWindow::CWindowClass CWindow::windowClass("CWINDOWCLASS", DefWindowProc);
-
-CWindow::CWindowClass::CWindowClass(const char *_name, WNDPROC _wndproc) :
- wndproc(_wndproc), atom(0), classname(_name)
-{
- Register();
-}
-
-CWindow::CWindowClass::~CWindowClass()
-{
- UnregisterClass(classname.c_str(), GetModuleHandle(NULL));
-}
-
-void CWindow::CWindowClass::Register()
-{
- WNDCLASSEX wndclass;
- memset(&wndclass, 0, sizeof(wndclass));
- wndclass.cbSize = sizeof(wndclass);
- wndclass.style = 0;
- wndclass.lpfnWndProc = wndproc;
- wndclass.cbClsExtra = 0;
- wndclass.cbWndExtra = 0;
- wndclass.hInstance = GetModuleHandle(NULL);
- wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
- wndclass.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
- wndclass.lpszMenuName = NULL;
- wndclass.lpszClassName = classname.c_str();
- wndclass.hIconSm = NULL;
- atom = RegisterClassEx(&wndclass);
- if (atom == 0)
- throw win32_error("RegisterClassEx failed");
-}
-
-CWindow::CWindow(const char *_title) : title(_title), hwnd(NULL), parent(NULL), bounds(), owndproc(NULL), showing(FALSE)
-{
- style = WS_CHILD;
- exstyle = 0;
-}
-
-HWND CWindow::CreateWindowHandle()
-{
- HWND ret = CreateWindowEx(
- exstyle,
- GetClassName(),
- title.c_str(),
- style,
- bounds.left,
- bounds.top,
- bounds.width,
- bounds.height,
- parent,
- NULL,
- GetModuleHandle(NULL),
- 0
- );
- if (ret == NULL)
- throw win32_error("CreateWindowEx failed");
- return ret;
-}
-
-void CWindow::Create()
-{
- if (hwnd != NULL)
- return;
- hwnd = CreateWindowHandle();
- if (hwnd == NULL)
- throw win32_error("Could not create window");
-
- // Reset the error code
- DWORD err = 0;
- SetLastError(err);
-
- // Attach the object reference to the window handle
- SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)this);
- err = GetLastError();
- if (err != 0)
- throw win32_error("SetWindowLongPtr failed",err);
-
- // Set the window proc
- owndproc = (WNDPROC)SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)WindowProc);
- err = GetLastError();
- if (err != 0)
- throw win32_error("SetWindowLongPtr failed",err);
-}
-
-const char *CWindow::GetClassName()
-{
- return windowClass.GetClassName();
-}
-
-LRESULT CALLBACK CWindow::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
- MessageDebug::debug(hwnd, uMsg, wParam, lParam, __FUNCTION__);
- CWindow* window = (CWindow*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
- if (window != NULL)
- return window->Dispatch(hwnd, uMsg, wParam, lParam);
- return DefWindowProc(hwnd, uMsg, wParam, lParam);
-}
-
-LRESULT CWindow::Dispatch(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
- switch (uMsg)
- {
- case WM_SIZE:
- bounds.width = LOWORD(lParam);
- bounds.height = LOWORD(lParam);
- break;
- case WM_MOVE:
- bounds.left = LOWORD(lParam);
- bounds.top = LOWORD(lParam);
- break;
- case WM_DESTROY:
- showing = FALSE;
- break;
- }
- if (owndproc)
- return CallWindowProc(owndproc, hwnd, uMsg, wParam, lParam);
- else
- return DefWindowProc(hwnd, uMsg, wParam, lParam);
-}
-
-void CWindow::Show()
-{
- if (hwnd == NULL)
- Create();
- ShowWindow(hwnd, SW_SHOWNORMAL);
-}
-
-int CWindow::ShowModal()
-{
- MSG msg;
- BOOL bRet;
- showing = TRUE;
- Show();
-
- while( showing && (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
- {
- if (bRet == -1)
- {
- // handle the error and possibly exit
- }
- else
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- return 0;
-}
-
-void CWindow::SetLeft(int left)
-{
- bounds.left = left;
- if (hwnd)
- if (!SetWindowPos(hwnd, NULL,
- bounds.left, bounds.top,
- 0, 0,
- SWP_NOZORDER | SWP_NOSIZE))
- throw win32_error("SetWindowPos failed");
-}
-
-void CWindow::SetTop(int top)
-{
- bounds.top = top;
- if (hwnd)
- if (!SetWindowPos(hwnd, NULL,
- bounds.left, bounds.top,
- 0, 0,
- SWP_NOZORDER | SWP_NOSIZE))
- throw win32_error("SetWindowPos failed");
-}
-
-void CWindow::SetWidth(int width)
-{
- bounds.width = width;
- if (hwnd)
- if (!SetWindowPos(hwnd, NULL,
- 0, 0,
- bounds.width, bounds.height,
- SWP_NOZORDER | SWP_NOMOVE))
- throw win32_error("SetWindowPos failed");
-}
-void CWindow::SetHeight(int height)
-{
- bounds.height = height;
- if (hwnd)
- if (!SetWindowPos(hwnd, NULL,
- 0, 0,
- bounds.width, bounds.height,
- SWP_NOZORDER | SWP_NOMOVE))
- throw win32_error("SetWindowPos failed");
-}
-
-void CWindow::SetBounds(int left, int top, int width, int height)
-{
- bounds = CBoundary(left, top, width, height);
- if (hwnd)
- if (!SetWindowPos(hwnd, NULL,
- bounds.left, bounds.top,
- bounds.width, bounds.height,
- SWP_NOZORDER))
- throw win32_error("SetWindowPos failed");
-}
-
-void CWindow::SetBounds(const RECT &rect)
-{
- bounds = rect;
- if (hwnd)
- if (!SetWindowPos(hwnd, NULL,
- bounds.left, bounds.top,
- bounds.width, bounds.height,
- SWP_NOZORDER))
- throw win32_error("SetWindowPos failed");
-}
-
-HWND CWindow::GetHandle()
-{
- if (hwnd == NULL)
- Create();
- return hwnd;
-}
-
-void CWindow::SetParent(CWindow *window)
-{
- parent = window->GetHandle();
- if (hwnd != NULL)
- if (::SetParent(hwnd, parent) == NULL)
- throw win32_error("SetParent failed");
-
-}
-
-void CWindow::SetStyle(DWORD style)
-{
- this->style = style;
- SetLastError(0);
- if (hwnd)
- SetWindowLong(hwnd, GWL_STYLE, style);
- int err = GetLastError();
- if (err != 0)
- throw win32_error("SetWindowLong failed", err);
-}
-
-void CWindow::SetExStyle(DWORD exstyle)
-{
- this->exstyle = exstyle;
- SetLastError(0);
- if (hwnd)
- SetWindowLong(hwnd, GWL_EXSTYLE, exstyle);
- int err = GetLastError();
- if (err != 0)
- throw win32_error("SetWindowWLong failed", err);
-}
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/window.h b/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/window.h
deleted file mode 100755
index baf401405..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/window.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-#ifndef __WINDOW_H__
-#define __WINDOW_H__
-
-#include <windows.h>
-#include <string>
-
-class CDialog;
-class CWindow
-{
- friend class CDialog;
- public:
- struct CBoundary
- {
- int left;
- int top;
- int width;
- int height;
- CBoundary() :
- left(0), top(0), width(0), height(0) {};
- CBoundary(int x, int y, int w, int h) :
- left(x), top(y), width(w), height(h) {};
- CBoundary(const RECT &r) :
- left(r.left), top(r.top), width(r.right-r.left), height(r.bottom-r.top) {};
- };
- class CWindowClass
- {
- private:
- WNDPROC wndproc;
- ATOM atom;
- std::string classname;
- protected:
- void Register();
- public:
- CWindowClass(const char *name, WNDPROC wndproc);
- ~CWindowClass();
- const char *GetClassName() { return classname.c_str(); };
- };
- private:
- static CWindowClass windowClass;
-
- std::string title;
- DWORD exstyle;
- DWORD style;
- CBoundary bounds;
- HWND hwnd;
- HWND parent;
- WNDPROC owndproc;
-
- BOOL showing;
-
- protected:
-
- virtual const char *GetClassName();
- virtual HWND CreateWindowHandle();
- static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
- public:
- CWindow(const char *title);
- virtual void Create();
-
- virtual int ShowModal();
-
- void Show();
- void Hide();
-
- void SetWidth(int width);
- void SetHeight(int height);
- void SetLeft(int left);
- void SetTop(int top);
- int GetWidth() { return bounds.width; };
- int GetHeight() { return bounds.height; };
- int GetLeft() { return bounds.left; };
- int GetTop() { return bounds.top; };
-
- void SetBounds(int left, int top, int width, int height);
- void SetBounds(const RECT &rect);
-
- void SetStyle(DWORD style);
- DWORD GetStyle() { return style; };
-
- void SetExStyle(DWORD exstyle);
- DWORD GetExStyle() { return exstyle; };
-
- HWND GetHandle();
- void SetParent(CWindow *window);
-
- virtual LRESULT Dispatch(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-};
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/wizard.cc b/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/wizard.cc
deleted file mode 100755
index 9d6c71193..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/wizard.cc
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-#include "wizard.h"
-#include "util.h"
-
-CWizard::CWizard() : pages()
-{
-};
-
-void CWizard::AddPage(const PROPSHEETPAGE &page)
-{
- pages.push_back(page);
-}
-
-void CWizard::AddPage(const char *page, HINSTANCE instance)
-{
- PROPSHEETPAGE psp;
- if (instance == NULL)
- instance = GetModuleHandle(NULL);
-
- memset(&psp, 0, sizeof(psp));
- psp.dwSize = sizeof(PROPSHEETPAGE);
- psp.dwFlags = PSP_DEFAULT;
- psp.hInstance = instance;
- psp.pszTemplate = page;
- psp.pfnDlgProc = WizardDialogProc;
- psp.lParam = (LPARAM)this;
-
- AddPage(psp);
-}
-
-void CWizard::AddPage(DWORD id, DWORD title, DWORD subtitle, HINSTANCE instance)
-{
- PROPSHEETPAGE psp;
- if (instance == NULL)
- instance = GetModuleHandle(NULL);
-
- memset(&psp, 0, sizeof(psp));
- psp.dwSize = sizeof(PROPSHEETPAGE);
- psp.dwFlags = PSP_DEFAULT;
-#if _WIN32_IE >= 0x0500
- if (title != 0)
- {
- psp.dwFlags |= PSP_USEHEADERTITLE;
- psp.pszHeaderTitle = MAKEINTRESOURCE(title);
- }
- if (subtitle != 0)
- {
- psp.dwFlags |= PSP_USEHEADERSUBTITLE;
- psp.pszHeaderSubTitle = MAKEINTRESOURCE(subtitle);
- }
-#endif
-
- psp.hInstance = instance;
- psp.pszTemplate = MAKEINTRESOURCE(id);
- psp.pfnDlgProc = WizardDialogProc;
- psp.lParam = (LPARAM)this;
-
- AddPage(psp);
-}
-
-HWND CWizard::CreateWindowHandle()
-{
- PROPSHEETHEADER psh;
- HWND ret;
-
- PrepareSheetHeader(psh, FALSE);
- ret = (HWND)PropertySheet(&psh);
- free(psh.phpage);
- if (ret == NULL)
- throw win32_error("PropertySheet failed");
- return ret;
-}
-
-int CWizard::ShowModal()
-{
- PROPSHEETHEADER psh;
- int ret;
-
- PrepareSheetHeader(psh, TRUE);
- ret = PropertySheet(&psh);
- free(psh.phpage);
- return ret;
-}
-
-void CWizard::PrepareSheetHeader(PROPSHEETHEADER &psh, BOOL modal)
-{
- HPROPSHEETPAGE *phpage = (HPROPSHEETPAGE*)malloc(pages.size() * sizeof(HPROPSHEETPAGE));
- DWORD modeflag;
-
- if (modal)
- modeflag = 0;
- else
- modeflag = PSH_MODELESS;
-
- for (unsigned i = 0; i < pages.size(); i++)
- {
- phpage[i] = CreatePropertySheetPage(&pages[i]);
- if (phpage[i] == NULL)
- {
- DWORD err = GetLastError();
- free(phpage);
- throw win32_error("CreatePropertySheetPage failed", err);
- }
- }
-
- memset(&psh, 0, sizeof(psh));
- psh.dwSize = sizeof(PROPSHEETHEADER);
-#if _WIN32_IE >= 0x0500
- psh.dwFlags = PSH_WIZARD97 | modeflag;
-#else
- psh.dwFlags = PSH_WIZARD | modeflag;
-#endif
- psh.hwndParent = NULL;
- psh.hInstance = GetModuleHandle(NULL);
- psh.pszIcon = NULL;
- psh.pszCaption = (LPSTR) "Cell Properties";
- psh.nPages = pages.size();
- psh.nStartPage = 0;
- psh.phpage = phpage;
- psh.pfnCallback = NULL;
-}
-
-DWORD CWizard::PageID(unsigned index)
-{
- if (index < pages.size() && IS_INTRESOURCE(pages[index].pszTemplate))
- return (DWORD)pages[index].pszTemplate;
- return (DWORD)-1;
-}
-
-unsigned CWizard::PageIndex(PROPSHEETPAGE *psp)
-{
- for (unsigned i = 0; i < pages.size(); i++)
- {
- if (IS_INTRESOURCE(psp->pszTemplate) || IS_INTRESOURCE(pages[i].pszTemplate ))
- {
- if (psp->pszTemplate == pages[i].pszTemplate)
- return i;
- }
- else if (psp->pszTemplate && pages[i].pszTemplate)
- {
- if (strcmp(psp->pszTemplate, pages[i].pszTemplate) == 0)
- return i;
- }
- }
- return (unsigned)-1;
-}
-
-INT_PTR CWizard::DlgDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
- return CBaseDialog::DlgDispatch(hwndDlg, uMsg, wParam, lParam);
-}
-
-INT_PTR CWizard::PageDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam, PROPSHEETPAGE *psp)
-{
- LPNMHDR pnmh = (LPNMHDR)lParam;
- DWORD flags;
- unsigned pageindex;
- switch (uMsg)
- {
- case WM_NOTIFY:
- switch (pnmh->code)
- {
- case PSN_SETACTIVE:
-#ifdef _DEBUG
- printf("PSN_SETACTIVE %d\n", PageIndex(psp));
-#endif
- pageindex = PageIndex(psp);
- if (pageindex != (unsigned)-1)
- {
- flags = 0;
- if (pageindex > 0)
- flags |= PSWIZB_BACK;
- if ((unsigned)pageindex + 1 == pages.size())
- flags |= PSWIZB_FINISH;
- if ((unsigned)pageindex + 1 < pages.size())
- flags |= PSWIZB_NEXT;
- PropSheet_SetWizButtons(GetParent(hwndDlg), flags);
- }
- WizardActivate(hwndDlg, pageindex);
- break;
- case PSN_WIZNEXT:
- if (WizardNext(hwndDlg, PageIndex(psp)))
- return TRUE;
- break;
- case PSN_WIZBACK:
- if (WizardBack(hwndDlg, PageIndex(psp)))
- return TRUE;
- break;
- case PSN_WIZFINISH:
- if (WizardFinish(hwndDlg, PageIndex(psp)))
- return TRUE;
- DestroyWindow(GetParent(hwndDlg));
- case PSN_RESET:
- if (WizardReset(hwndDlg, PageIndex(psp)))
- return TRUE;
- DestroyWindow(GetParent(hwndDlg));
- break;
- }
- }
- return DlgDispatch(hwndDlg, uMsg, wParam, lParam);
-}
-
-
-INT_PTR CALLBACK CWizard::WizardDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
- MessageDebug::debug(hwndDlg, uMsg, wParam, lParam, __FUNCTION__);
- PROPSHEETPAGE *psp = (PROPSHEETPAGE*)lParam;
- switch (uMsg)
- {
- case WM_INITDIALOG:
- SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)psp);
- break;
- }
- psp = (PROPSHEETPAGE*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
- CWizard* wizard = psp?(CWizard*)psp->lParam:NULL;
- if (wizard != NULL)
- return wizard->PageDispatch(hwndDlg, uMsg, wParam, lParam, psp);
- return FALSE;
-}
-
diff --git a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/wizard.h b/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/wizard.h
deleted file mode 100755
index a2361c51c..000000000
--- a/nx-X11/programs/Xserver/hw/xwin/xlaunch/window/wizard.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2005 Alexander Gottwald
- *
- * 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-#ifndef __WIZARD_H__
-#define __WIZARD_H__
-
-#include "dialog.h"
-#include <vector>
-
-#define _WIN32_IE 0x0500
-#include <prsht.h>
-
-class CWizard : public CBaseDialog
-{
- private:
- std::vector<PROPSHEETPAGE> pages;
- void PrepareSheetHeader(PROPSHEETHEADER &psh, BOOL modal);
- protected:
- virtual HWND CreateWindowHandle();
- static INT_PTR CALLBACK WizardDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
- virtual INT_PTR DlgDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
- virtual INT_PTR PageDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam, PROPSHEETPAGE *psp);
- virtual unsigned PageIndex(PROPSHEETPAGE *psp);
- virtual DWORD PageID(unsigned index);
- virtual BOOL WizardNext(HWND hwndDlg, unsigned index) { return FALSE; }
- virtual BOOL WizardBack(HWND hwndDlg, unsigned index) { return FALSE; }
- virtual BOOL WizardFinish(HWND hwndDlg, unsigned index) { return FALSE; }
- virtual BOOL WizardReset(HWND hwndDlg, unsigned index) { return FALSE; }
- virtual BOOL WizardActivate(HWND hwndDlg, unsigned index) { return FALSE; }
- public:
- CWizard();
- void AddPage(const PROPSHEETPAGE &page);
- void AddPage(const char *page, HINSTANCE instance = NULL);
- void AddPage(DWORD id, DWORD title, DWORD subtitle, HINSTANCE instance = NULL);
- virtual int ShowModal();
-};
-#endif
diff --git a/nx-X11/programs/Xserver/ilbm/Imakefile b/nx-X11/programs/Xserver/ilbm/Imakefile
deleted file mode 100644
index ed763788f..000000000
--- a/nx-X11/programs/Xserver/ilbm/Imakefile
+++ /dev/null
@@ -1,63 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/ilbm/Imakefile,v 3.6tsi Exp $
-XCOMM $XConsortium: Imakefile,v 1.38 94/03/11 18:47:47 dpw Exp $
-#define IHaveModules
-#include <Server.tmpl>
-
-SRCS1 = ilbmgc.c ilbmwindow.c ilbmfont.c ilbmfillrct.c ilbmpntwin.c \
- ilbmpixmap.c ilbmimage.c ilbmline.c ilbmbres.c ilbmhrzvert.c \
- ilbmbresd.c ilbmpushpxl.c ilbmzerarc.c ilbmfillarc.c ilbmfillsp.c \
- ilbmsetsp.c ilbmscrinit.c ilbmclip.c ilbmbitblt.c ilbmgetsp.c \
- ilbmpolypnt.c ilbmbltC.c ilbmbltX.c ilbmbltCI.c ilbmbltO.c \
- ilbmbltG.c ilbmcmap.c ilbmtileC.c ilbmtileG.c ilbmmisc.c ilbmbstore.c
-
-SRCS = $(SRCS1) ilbmseg.c ilbmbltC.c ilbmbltX.c ilbmbltCI.c ilbmbltO.c \
- ilbmbltG.c ilbmtileC.c ilbmtileG.c
-
-OBJS = ilbmgc.o ilbmwindow.o ilbmfont.o ilbmpixmap.o ilbmfillsp.o \
- ilbmsetsp.o ilbmscrinit.o ilbmclip.o ilbmbitblt.o ilbmgetsp.o \
- ilbmbltC.o ilbmbltX.o ilbmbltCI.o ilbmbltO.o ilbmbltG.o ilbmcmap.o \
- ilbmimage.o ilbmzerarc.o ilbmfillarc.o ilbmply1rct.o ilbmtileC.o \
- ilbmtileG.o ilbmfillrct.o ilbmpolypnt.o ilbmmisc.o ilbmbstore.o \
- ilbmbresd.o ilbmimggblt.o ilbmpushpxl.o ilbmplygblt.o ilbmtegblt.o \
- ilbmpntwin.o ilbmpntarea.o ilbmbres.o ilbmhrzvert.o ilbmline.o \
- ilbmseg.o
-
-INCLUDES = -I. -I../cfb -I../mfb -I../mi -I../include -I$(XINCLUDESRC) \
- -I$(FONTINCSRC) $(EXTRAINCLUDES)
-LINTDEFS = -DMFBPOLYGLYPHBLT=ilbmPolyGlyphBltWhite \
- -DMFBIMAGEGLYPHBLT=ilbmImageGlyphBltWhite \
- -DEQWHOLEWORD=MFB_EQWHOLEWORD_WHITE -DOPEQ=MFB_OPEQ_WHITE
-
-LINTLIBS = ../dix/llib-ldix.ln ../os/llib-los.ln \
- ../mfb/llib-lmfb.ln ../mi/llib-lmi.ln
-
-NormalLibraryObjectRule()
-LibraryModuleTarget(ilbm,$(OBJS))
-LintLibraryTarget(ilbm,$(SRCS1))
-NormalLintTarget($(LINTDEFS) $(SRCS1))
-
-ObjectFromSpecialSource(ilbmseg,ilbmline,-DPOLYSEGMENT)
-
-ObjectFromSpecialSource(ilbmbltC,ilbmblt,-DMROP=Mcopy)
-
-ObjectFromSpecialSource(ilbmbltX,ilbmblt,-DMROP=Mxor)
-
-ObjectFromSpecialSource(ilbmbltCI,ilbmblt,-DMROP=McopyInverted)
-
-ObjectFromSpecialSource(ilbmbltO,ilbmblt,-DMROP=Mor)
-
-ObjectFromSpecialSource(ilbmbltG,ilbmblt,-DMROP=0)
-
-ObjectFromSpecialSource(ilbmtileC,ilbmtile,-DMROP=Mcopy)
-
-ObjectFromSpecialSource(ilbmtileG,ilbmtile,-DMROP=0)
-
-#if DoLoadableServer
-InstallDynamicModule(LibraryTargetName(ilbm),$(MODULEDIR),.)
-#endif
-
-#ifndef OS2Architecture
-DependTarget()
-#endif
-
-InstallDriverSDKDynamicModule(LibraryTargetName(ilbm),$(DRIVERSDKMODULEDIR))
diff --git a/nx-X11/programs/Xserver/ilbm/README b/nx-X11/programs/Xserver/ilbm/README
deleted file mode 100644
index 5b43f670c..000000000
--- a/nx-X11/programs/Xserver/ilbm/README
+++ /dev/null
@@ -1,17 +0,0 @@
-
- ilbm -- Interleaved bitplanes for Amiga
- © Copyright 1995 by Geert Uytterhoeven and Others (read the sources)
-
-All stuff in this directory is based on Xdaniver, which is based on mfb (read
-../afb/Xdaniver.doc).
-
-I made changes to support the interleaved mode of the Linux/68k Amiga Color
-Frame Buffer Device, which uses interleaved bitplanes instead of normal
-bitplanes.
-
-Note: there are still some annoying bugs left in ilbmimage.
-
---
-Geert Uytterhoeven Geert.Uytterhoeven@cs.kuleuven.ac.be
-Wavelets, Linux/m68k on Amiga http://www.cs.kuleuven.ac.be/~geert/
-Department of Computer Science -- Katholieke Universiteit Leuven -- Belgium
diff --git a/nx-X11/programs/Xserver/ilbm/ilbm.h b/nx-X11/programs/Xserver/ilbm/ilbm.h
deleted file mode 100644
index eba35c200..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbm.h
+++ /dev/null
@@ -1,1051 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbm.h,v 3.2 1998/04/05 16:42:23 robin Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbm.h,v 5.31 94/04/17 20:28:15 dpw Exp $ */
-/* Monochrome Frame Buffer definitions
- written by drewry, september 1986
-*/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "pixmap.h"
-#include "region.h"
-#include "gc.h"
-#include "colormap.h"
-#include "miscstruct.h"
-#include "mibstore.h"
-
-extern int ilbmInverseAlu[];
-extern int ilbmScreenPrivateIndex;
-/* warning: PixelType definition duplicated in maskbits.h */
-#ifndef PixelType
-#define PixelType unsigned long
-#endif /* PixelType */
-
-#define AFB_MAX_DEPTH 8
-
-/* ilbmbitblt.c */
-
-extern void ilbmDoBitblt(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-
-extern RegionPtr ilbmBitBlt(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- GCPtr /*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- void (*doBitBlt)(),
- unsigned long /*planemask*/
-);
-
-extern RegionPtr ilbmCopyArea(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/
-);
-
-extern RegionPtr ilbmCopyPlane(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- unsigned long /*plane*/
-);
-
-extern void ilbmCopy1ToN(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* ilbmbltC.c */
-
-extern void ilbmDoBitbltCopy(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* ilbmbltCI.c */
-
-extern void ilbmDoBitbltCopyInverted(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* ilbmbltG.c */
-
-extern void ilbmDoBitbltGeneral(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* ilbmbltO.c */
-
-extern void ilbmDoBitbltOr(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* ilbmbltX.c */
-
-extern void ilbmDoBitbltXor(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* ilbmbres.c */
-
-extern void ilbmBresS(
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/,
- unsigned char * /*rrops*/
-);
-/* ilbmbresd.c */
-
-extern void ilbmBresD(
- int * /*pdashIndex*/,
- unsigned char * /*pDash*/,
- int /*numInDashList*/,
- int * /*pdashOffset*/,
- int /*isDoubleDash*/,
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/,
- unsigned char * /*rrops*/,
- unsigned char * /*bgrrops*/
-);
-/* ilbmbstore.c */
-
-extern void ilbmSaveAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnSave*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-
-extern void ilbmRestoreAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnRestore*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-/* ilbmclip.c */
-
-extern RegionPtr ilbmPixmapToRegion(
- PixmapPtr /*pPix*/
-);
-
-/* ilbmcmap.c */
-
-extern Bool ilbmInitializeColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void ilbmResolveColor(
- unsigned short * /*pred*/,
- unsigned short * /*pgreen*/,
- unsigned short * /*pblue*/,
- VisualPtr /*pVisual*/
-);
-
-extern Bool ilbmSetVisualTypes(
- int /*depth*/,
- int /*visuals*/,
- int /*bitsPerRGB*/
-);
-
-/* ilbmfillarc.c */
-
-extern void ilbmPolyFillArcSolid(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* ilbmfillrct.c */
-
-extern void ilbmPolyFillRect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nrectFill*/,
- xRectangle * /*prectInit*/
-);
-
-/* ilbmply1rct.c */
-extern void ilbmFillPolygonSolid(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*shape*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-
-/* ilbmfillsp.c */
-
-extern void ilbmSolidFS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ilbmStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ilbmTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ilbmUnnaturalTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ilbmUnnaturalStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ilbmOpaqueStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ilbmUnnaturalOpaqueStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-/* ilbmfont.c */
-
-extern Bool ilbmRealizeFont(
- ScreenPtr /*pscr*/,
- FontPtr /*pFont*/
-);
-
-extern Bool ilbmUnrealizeFont(
- ScreenPtr /*pscr*/,
- FontPtr /*pFont*/
-);
-/* ilbmgc.c */
-
-extern Bool ilbmCreateGC(
- GCPtr /*pGC*/
-);
-
-extern void ilbmValidateGC(
- GCPtr /*pGC*/,
- unsigned long /*changes*/,
- DrawablePtr /*pDrawable*/
-);
-
-extern void ilbmDestroyGC(
- GCPtr /*pGC*/
-);
-
-extern void ilbmReduceRop(
- int /*alu*/,
- Pixel /*src*/,
- unsigned long /*planemask*/,
- int /*depth*/,
- unsigned char * /*rrops*/
-);
-
-extern void ilbmReduceOpaqueStipple (
- Pixel /*fg*/,
- Pixel /*bg*/,
- unsigned long /*planemask*/,
- int /*depth*/,
- unsigned char * /*rrops*/
-);
-
-extern void ilbmComputeCompositeClip(
- GCPtr /*pGC*/,
- DrawablePtr /*pDrawable*/
-);
-
-/* ilbmgetsp.c */
-
-extern void ilbmGetSpans(
- DrawablePtr /*pDrawable*/,
- int /*wMax*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- char * /*pdstStart*/
-);
-/* ilbmhrzvert.c */
-
-extern int ilbmHorzS(
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/,
- unsigned char * /*rrops*/
-);
-
-extern int ilbmVertS(
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/,
- unsigned char * /*rrops*/
-);
-/* ilbmigbblak.c */
-
-extern void ilbmImageGlyphBlt (
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* ilbmigbwht.c */
-
-/* ilbmimage.c */
-
-extern void ilbmPutImage(
- DrawablePtr /*dst*/,
- GCPtr /*pGC*/,
- int /*depth*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- int /*leftPad*/,
- int /*format*/,
- char * /*pImage*/
-);
-
-extern void ilbmGetImage(
- DrawablePtr /*pDrawable*/,
- int /*sx*/,
- int /*sy*/,
- int /*w*/,
- int /*h*/,
- unsigned int /*format*/,
- unsigned long /*planeMask*/,
- char * /*pdstLine*/
-);
-/* ilbmline.c */
-
-extern void ilbmLineSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-extern void ilbmLineSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-/* ilbmmisc.c */
-
-extern void ilbmQueryBestSize(
- int /*class*/,
- unsigned short * /*pwidth*/,
- unsigned short * /*pheight*/,
- ScreenPtr /*pScreen*/
-);
-/* ilbmpntarea.c */
-
-extern void ilbmSolidFillArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- unsigned char * /*rrops*/
-);
-
-extern void ilbmStippleAreaPPW(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- PixmapPtr /*pstipple*/,
- unsigned char * /*rrops*/
-);
-extern void ilbmStippleArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- PixmapPtr /*pstipple*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned char * /*rrops*/
-);
-/* ilbmplygblt.c */
-
-extern void ilbmPolyGlyphBlt(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-
-/* ilbmpixmap.c */
-
-extern PixmapPtr ilbmCreatePixmap(
- ScreenPtr /*pScreen*/,
- int /*width*/,
- int /*height*/,
- int /*depth*/
-);
-
-extern Bool ilbmDestroyPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern PixmapPtr ilbmCopyPixmap(
- PixmapPtr /*pSrc*/
-);
-
-extern void ilbmPadPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern void ilbmXRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rw*/
-);
-
-extern void ilbmYRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rh*/
-);
-
-extern void ilbmCopyRotatePixmap(
- PixmapPtr /*psrcPix*/,
- PixmapPtr * /*ppdstPix*/,
- int /*xrot*/,
- int /*yrot*/
-);
-extern void ilbmPaintWindow(
- WindowPtr /*pWin*/,
- RegionPtr /*pRegion*/,
- int /*what*/
-);
-/* ilbmpolypnt.c */
-
-extern void ilbmPolyPoint(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- xPoint * /*pptInit*/
-);
-/* ilbmpushpxl.c */
-
-extern void ilbmPushPixels(
- GCPtr /*pGC*/,
- PixmapPtr /*pBitMap*/,
- DrawablePtr /*pDrawable*/,
- int /*dx*/,
- int /*dy*/,
- int /*xOrg*/,
- int /*yOrg*/
-);
-/* ilbmscrclse.c */
-
-extern Bool ilbmCloseScreen(
- int /*index*/,
- ScreenPtr /*pScreen*/
-);
-/* ilbmscrinit.c */
-
-extern Bool ilbmAllocatePrivates(
- ScreenPtr /*pScreen*/,
- int * /*pWinIndex*/,
- int * /*pGCIndex*/
-);
-
-extern Bool ilbmScreenInit(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern PixmapPtr ilbmGetWindowPixmap(
- WindowPtr /*pWin*/
-);
-
-extern void ilbmSetWindowPixmap(
- WindowPtr /*pWin*/,
- PixmapPtr /*pPix*/
-);
-
-/* ilbmseg.c */
-
-extern void ilbmSegmentSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-
-extern void ilbmSegmentSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-/* ilbmsetsp.c */
-
-extern int ilbmSetScanline(
- int /*y*/,
- int /*xOrigin*/,
- int /*xStart*/,
- int /*xEnd*/,
- PixelType * /*psrc*/,
- int /*alu*/,
- PixelType * /*pdstBase*/,
- int /*widthDst*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*sizeSrc*/
-);
-
-extern void ilbmSetSpans(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- char * /*psrc*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- int /*fSorted*/
-);
-/* ilbmtegblt.c */
-
-extern void ilbmTEGlyphBlt(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* ilbmtileC.c */
-
-extern void ilbmTileAreaPPWCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- unsigned long /*planemask*/
-);
-/* ilbmtileG.c */
-
-extern void ilbmTileAreaPPWGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- unsigned long /*planemask*/
-);
-
-extern void ilbmTileAreaCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned long /*planemask*/
-);
-/* ilbmtileG.c */
-
-extern void ilbmTileAreaGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned long /*planemask*/
-);
-
-extern void ilbmOpaqueStippleAreaPPWCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- unsigned char */*rropsOS*/,
- unsigned long /*planemask*/
-);
-/* ilbmtileG.c */
-
-extern void ilbmOpaqueStippleAreaPPWGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- unsigned char */*rropsOS*/,
- unsigned long /*planemask*/
-);
-
-extern void ilbmOpaqueStippleAreaCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned char */*rropsOS*/,
- unsigned long /*planemask*/
-);
-/* ilbmtileG.c */
-
-extern void ilbmOpaqueStippleAreaGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned char */*rropsOS*/,
- unsigned long /*planemask*/
-);
-
-/* ilbmwindow.c */
-
-extern Bool ilbmCreateWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool ilbmDestroyWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool ilbmMapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern Bool ilbmPositionWindow(
- WindowPtr /*pWin*/,
- int /*x*/,
- int /*y*/
-);
-
-extern Bool ilbmUnmapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern void ilbmCopyWindow(
- WindowPtr /*pWin*/,
- DDXPointRec /*ptOldOrg*/,
- RegionPtr /*prgnSrc*/
-);
-
-extern Bool ilbmChangeWindowAttributes(
- WindowPtr /*pWin*/,
- unsigned long /*mask*/
-);
-/* ilbmzerarc.c */
-
-extern void ilbmZeroPolyArcSS(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-
-/*
- private field of pixmap
- pixmap.devPrivate = (PixelType *)pointer_to_bits
- pixmap.devKind = width_of_pixmap_in_bytes
-
- private field of screen
- a pixmap, for which we allocate storage. devPrivate is a pointer to
-the bits in the hardware framebuffer. note that devKind can be poked to
-make the code work for framebuffers that are wider than their
-displayable screen (e.g. the early vsII, which displayed 960 pixels
-across, but was 1024 in the hardware.)
-
- private field of GC
-*/
-
-typedef struct {
- unsigned char rrops[AFB_MAX_DEPTH]; /* reduction of rasterop to 1 of 3 */
- unsigned char rropOS[AFB_MAX_DEPTH]; /* rop for opaque stipple */
-} ilbmPrivGC;
-typedef ilbmPrivGC *ilbmPrivGCPtr;
-
-extern int ilbmGCPrivateIndex; /* index into GC private array */
-extern int ilbmWindowPrivateIndex; /* index into Window private array */
-#ifdef PIXMAP_PER_WINDOW
-extern int frameWindowPrivateIndex; /* index into Window private array */
-#endif
-
-#define ilbmGetGCPrivate(pGC) \
- ((ilbmPrivGC *)((pGC)->devPrivates[ilbmGCPrivateIndex].ptr))
-
-/* private field of window */
-typedef struct {
- unsigned char fastBorder; /* non-zero if border tile is 32 bits wide */
- unsigned char fastBackground;
- unsigned short unused; /* pad for alignment with Sun compiler */
- DDXPointRec oldRotate;
- PixmapPtr pRotatedBackground;
- PixmapPtr pRotatedBorder;
-} ilbmPrivWin;
-
-/* Common macros for extracting drawing information */
-
-#define ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, width, aux, dep, pointer) {\
- PixmapPtr _pPix; \
- if ((pDrawable)->type == DRAWABLE_WINDOW) \
- _pPix = (PixmapPtr)(pDrawable)->pScreen->devPrivates[ilbmScreenPrivateIndex].ptr; \
- else \
- _pPix = (PixmapPtr)(pDrawable); \
- (pointer) = (PixelType *)_pPix->devPrivate.ptr; \
- (width) = ((int)_pPix->devKind)/sizeof(PixelType); \
- (dep) = _pPix->drawable.depth; \
- (aux) = (width)*(dep); \
-}
-
-/* ilbm uses the following macros to calculate addresses in drawables.
- * To support banked framebuffers, the macros come in four flavors.
- * All four collapse into the same definition on unbanked devices.
- *
- * ilbmScanlineFoo - calculate address and do bank switching
- * ilbmScanlineFooNoBankSwitch - calculate address, don't bank switch
- * ilbmScanlineFooSrc - calculate address, switch source bank
- * ilbmScanlineFooDst - calculate address, switch destination bank
- */
-
-/* The NoBankSwitch versions are the same for banked and unbanked cases */
-
-#define ilbmScanlineIncNoBankSwitch(_ptr, _off) _ptr += (_off)
-#define ilbmScanlineOffsetNoBankSwitch(_ptr, _off) ((_ptr)+(_off))
-#define ilbmScanlineDeltaNoBankSwitch(_ptr, _y, _w) \
- ilbmScanlineOffsetNoBankSwitch(_ptr, (_y)*(_w))
-#define ilbmScanlineNoBankSwitch(_ptr, _x, _y, _w) \
- ilbmScanlineOffsetNoBankSwitch(_ptr, (_y)*(_w)+((_x)>>MFB_PWSH))
-
-#ifdef MFB_LINE_BANK
-
-#include "ilbmlinebank.h" /* get macro definitions from this file */
-
-#else /* !MFB_LINE_BANK - unbanked case */
-
-#define ilbmScanlineInc(_ptr, _off) ilbmScanlineIncNoBankSwitch(_ptr, _off)
-#define ilbmScanlineIncSrc(_ptr, _off) ilbmScanlineInc(_ptr, _off)
-#define ilbmScanlineIncDst(_ptr, _off) ilbmScanlineInc(_ptr, _off)
-
-#define ilbmScanlineOffset(_ptr, _off) ilbmScanlineOffsetNoBankSwitch(_ptr, _off)
-#define ilbmScanlineOffsetSrc(_ptr, _off) ilbmScanlineOffset(_ptr, _off)
-#define ilbmScanlineOffsetDst(_ptr, _off) ilbmScanlineOffset(_ptr, _off)
-
-#define ilbmScanlineSrc(_ptr, _x, _y, _w) ilbmScanline(_ptr, _x, _y, _w)
-#define ilbmScanlineDst(_ptr, _x, _y, _w) ilbmScanline(_ptr, _x, _y, _w)
-
-#define ilbmScanlineDeltaSrc(_ptr, _y, _w) ilbmScanlineDelta(_ptr, _y, _w)
-#define ilbmScanlineDeltaDst(_ptr, _y, _w) ilbmScanlineDelta(_ptr, _y, _w)
-
-#endif /* MFB_LINE_BANK */
-
-#define ilbmScanlineDelta(_ptr, _y, _w) \
- ilbmScanlineOffset(_ptr, (_y)*(_w))
-
-#define ilbmScanline(_ptr, _x, _y, _w) \
- ilbmScanlineOffset(_ptr, (_y)*(_w)+((_x)>>MFB_PWSH))
-
-/* precomputed information about each glyph for GlyphBlt code.
- this saves recalculating the per glyph information for each box.
-*/
-
-typedef struct _ilbmpos{
- int xpos; /* xposition of glyph's origin */
- int xchar; /* x position mod 32 */
- int leftEdge;
- int rightEdge;
- int topEdge;
- int bottomEdge;
- PixelType *pdstBase; /* longword with character origin */
- int widthGlyph; /* width in bytes of this glyph */
-} ilbmTEXTPOS;
-
-/* reduced raster ops for ilbm */
-#define RROP_BLACK GXclear
-#define RROP_WHITE GXset
-#define RROP_NOP GXnoop
-#define RROP_INVERT GXinvert
-#define RROP_COPY GXcopy
-
-/* macros for ilbmbitblt.c, ilbmfillsp.c
- these let the code do one switch on the rop per call, rather
- than a switch on the rop per item (span or rectangle.)
-*/
-
-#define fnCLEAR(src, dst) (0)
-#define fnAND(src, dst) (src & dst)
-#define fnANDREVERSE(src, dst) (src & ~dst)
-#define fnCOPY(src, dst) (src)
-#define fnANDINVERTED(src, dst) (~src & dst)
-#define fnNOOP(src, dst) (dst)
-#define fnXOR(src, dst) (src ^ dst)
-#define fnOR(src, dst) (src | dst)
-#define fnNOR(src, dst) (~(src | dst))
-#define fnEQUIV(src, dst) (~src ^ dst)
-#define fnINVERT(src, dst) (~dst)
-#define fnORREVERSE(src, dst) (src | ~dst)
-#define fnCOPYINVERTED(src, dst) (~src)
-#define fnORINVERTED(src, dst) (~src | dst)
-#define fnNAND(src, dst) (~(src & dst))
-#define fnSET(src, dst) (~0)
-
-/* Using a "switch" statement is much faster in most cases
- * since the compiler can do a look-up table or multi-way branch
- * instruction, depending on the architecture. The result on
- * A Sun 3/50 is at least 2.5 times faster, assuming a uniform
- * distribution of RasterOp operation types.
- *
- * However, doing some profiling on a running system reveals
- * GXcopy is the operation over 99.5% of the time and
- * GXxor is the next most frequent (about .4%), so we make special
- * checks for those first.
- *
- * Note that this requires a change to the "calling sequence"
- * since we can't engineer a "switch" statement to have an lvalue.
- */
-#define DoRop(result, alu, src, dst) \
-{ \
- if (alu == GXcopy) \
- result = fnCOPY (src, dst); \
- else if (alu == GXxor) \
- result = fnXOR (src, dst); \
- else \
- switch (alu) { \
- case GXclear: \
- result = fnCLEAR (src, dst); \
- break; \
- case GXand: \
- result = fnAND (src, dst); \
- break; \
- case GXandReverse: \
- result = fnANDREVERSE (src, dst); \
- break; \
- case GXandInverted: \
- result = fnANDINVERTED (src, dst); \
- break; \
- case GXnoop: \
- result = fnNOOP (src, dst); \
- break; \
- case GXor: \
- result = fnOR (src, dst); \
- break; \
- case GXnor: \
- result = fnNOR (src, dst); \
- break; \
- case GXequiv: \
- result = fnEQUIV (src, dst); \
- break; \
- case GXinvert: \
- result = fnINVERT (src, dst); \
- break; \
- case GXorReverse: \
- result = fnORREVERSE (src, dst); \
- break; \
- case GXcopyInverted: \
- result = fnCOPYINVERTED (src, dst); \
- break; \
- case GXorInverted: \
- result = fnORINVERTED (src, dst); \
- break; \
- case GXnand: \
- result = fnNAND (src, dst); \
- break; \
- case GXset: \
- result = fnSET (src, dst); \
- break; \
- } \
-}
-
-
-/* C expression fragments for various operations. These get passed in
- * as -D's on the compile command line. See ilbm/Imakefile. This
- * fixes XBUG 6319.
- *
- * This seems like a good place to point out that ilbm's use of the
- * words black and white is an unfortunate misnomer. In ilbm code, black
- * means zero, and white means one.
- */
-#define MFB_OPEQ_WHITE |=
-#define MFB_OPEQ_BLACK &=~
-#define MFB_OPEQ_INVERT ^=
-#define MFB_EQWHOLEWORD_WHITE =~0
-#define MFB_EQWHOLEWORD_BLACK =0
-#define MFB_EQWHOLEWORD_INVERT ^=~0
-#define MFB_OP_WHITE /* nothing */
-#define MFB_OP_BLACK ~
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmbitblt.c b/nx-X11/programs/Xserver/ilbm/ilbmbitblt.c
deleted file mode 100644
index 11a0e07fb..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmbitblt.c
+++ /dev/null
@@ -1,483 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmbitblt.c,v 3.2tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmbitblt.c,v 5.25 94/04/17 20:28:16 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-
-#include "miscstruct.h"
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mi.h"
-
-#include "ilbm.h"
-#include "maskbits.h"
-
-
-static unsigned char ilbmRropsOS[AFB_MAX_DEPTH];
-
-/* CopyArea and CopyPlane for a monchrome frame buffer
-
-
- clip the source rectangle to the source's available bits. (this
-avoids copying unnecessary pieces that will just get exposed anyway.)
-this becomes the new shape of the destination.
- clip the destination region to the composite clip in the
-GC. this requires translating the destination region to (dstx, dsty).
- build a list of source points, one for each rectangle in the
-destination. this is a simple translation.
- go do the multiple rectangle copies
- do graphics exposures
-*/
-/** Optimized for drawing pixmaps into windows, especially when drawing into
- ** unobscured windows. Calls to the general-purpose region code were
- ** replaced with rectangle-to-rectangle clipping comparisions. This is
- ** possible, since the pixmap is a single rectangle. In an unobscured
- ** window, the destination clip is also a single rectangle, and region
- ** code can be avoided entirely. This is a big savings, since the region
- ** code uses XAlloc() and makes many function calls.
- **
- ** In addition, if source is a pixmap, there is no need to call the
- ** expensive miHandleExposures() routine. Instead, we simply return NULL.
- **
- ** Previously, drawing a pixmap into an unobscured window executed at least
- ** 8 XAlloc()'s, 30 function calls, and hundreds of lines of code.
- **
- ** Now, the same operation requires no XAlloc()'s, no region function calls,
- ** and much less overhead. Nice for drawing lots of small pixmaps.
- */
-
-void
-ilbmDoBitblt(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- switch (alu) {
- case GXcopy:
- ilbmDoBitbltCopy(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- case GXxor:
- ilbmDoBitbltXor(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- case GXcopyInverted:
- ilbmDoBitbltCopyInverted(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- case GXor:
- ilbmDoBitbltOr(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- default:
- ilbmDoBitbltGeneral(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- }
-}
-
-RegionPtr
-ilbmCopyArea(pSrcDrawable, pDstDrawable, pGC, srcx, srcy, width, height,
- dstx, dsty)
- DrawablePtr pSrcDrawable;
- DrawablePtr pDstDrawable;
- GC *pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
-{
- void (*doBitBlt)();
-
- switch (pGC->alu) {
- case GXcopy:
- doBitBlt = ilbmDoBitbltCopy;
- break;
- case GXxor:
- doBitBlt = ilbmDoBitbltXor;
- break;
- case GXcopyInverted:
- doBitBlt = ilbmDoBitbltCopyInverted;
- break;
- case GXor:
- doBitBlt = ilbmDoBitbltOr;
- break;
- default:
- doBitBlt = ilbmDoBitbltGeneral;
- break;
- }
-
- return(ilbmBitBlt(pSrcDrawable, pDstDrawable, pGC, srcx, srcy,
- width, height, dstx, dsty, doBitBlt, pGC->planemask));
-}
-
-RegionPtr
-ilbmBitBlt(pSrcDrawable, pDstDrawable, pGC, srcx, srcy, width, height,
- dstx, dsty, doBitBlt, planemask)
- register DrawablePtr pSrcDrawable;
- register DrawablePtr pDstDrawable;
- register GC *pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
- void (*doBitBlt)();
- unsigned long planemask;
-{
- RegionPtr prgnSrcClip; /* may be a new region, or just a copy */
- Bool freeSrcClip = FALSE;
-
- RegionPtr prgnExposed;
- RegionRec rgnDst;
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- register BoxPtr pbox;
- int i;
- register int dx;
- register int dy;
- xRectangle origSource;
- DDXPointRec origDest;
- int numRects;
- BoxRec fastBox;
- int fastClip = 0; /* for fast clipping with pixmap source */
- int fastExpose = 0; /* for fast exposures with pixmap source */
- void (*localDoBitBlt)();
-
- origSource.x = srcx;
- origSource.y = srcy;
- origSource.width = width;
- origSource.height = height;
- origDest.x = dstx;
- origDest.y = dsty;
-
- if ((pSrcDrawable != pDstDrawable) && pSrcDrawable->pScreen->SourceValidate)
- (*pSrcDrawable->pScreen->SourceValidate)(pSrcDrawable, srcx, srcy, width,
- height);
-
- srcx += pSrcDrawable->x;
- srcy += pSrcDrawable->y;
-
- /* clip the source */
-
- if (pSrcDrawable->type == DRAWABLE_PIXMAP)
- if ((pSrcDrawable == pDstDrawable) && (pGC->clientClipType == CT_NONE))
- prgnSrcClip = pGC->pCompositeClip;
- else
- fastClip = 1;
- else if (pGC->subWindowMode == IncludeInferiors)
- if (!((WindowPtr)pSrcDrawable)->parent)
- /*
- * special case bitblt from root window in
- * IncludeInferiors mode; just like from a pixmap
- */
- fastClip = 1;
- else if ((pSrcDrawable == pDstDrawable) &&
- (pGC->clientClipType == CT_NONE))
- prgnSrcClip = pGC->pCompositeClip;
- else {
- prgnSrcClip = NotClippedByChildren((WindowPtr)pSrcDrawable);
- freeSrcClip = TRUE;
- }
- else
- prgnSrcClip = &((WindowPtr)pSrcDrawable)->clipList;
-
- fastBox.x1 = srcx;
- fastBox.y1 = srcy;
- fastBox.x2 = srcx + width;
- fastBox.y2 = srcy + height;
-
- /* Don't create a source region if we are doing a fast clip */
- if (fastClip) {
- fastExpose = 1;
- /*
- * clip the source; if regions extend beyond the source size,
- * make sure exposure events get sent
- */
- if (fastBox.x1 < pSrcDrawable->x) {
- fastBox.x1 = pSrcDrawable->x;
- fastExpose = 0;
- }
- if (fastBox.y1 < pSrcDrawable->y) {
- fastBox.y1 = pSrcDrawable->y;
- fastExpose = 0;
- }
- if (fastBox.x2 > pSrcDrawable->x + (int)pSrcDrawable->width) {
- fastBox.x2 = pSrcDrawable->x + (int)pSrcDrawable->width;
- fastExpose = 0;
- }
- if (fastBox.y2 > pSrcDrawable->y + (int)pSrcDrawable->height) {
- fastBox.y2 = pSrcDrawable->y + (int)pSrcDrawable->height;
- fastExpose = 0;
- }
- } else {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, prgnSrcClip);
- }
-
- dstx += pDstDrawable->x;
- dsty += pDstDrawable->y;
-
- if (pDstDrawable->type == DRAWABLE_WINDOW)
- if (!((WindowPtr)pDstDrawable)->realized) {
- if (!fastClip)
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
-
- dx = srcx - dstx;
- dy = srcy - dsty;
-
- /* Translate and clip the dst to the destination composite clip */
- if (fastClip) {
- RegionPtr cclip;
-
- /* Translate the region directly */
- fastBox.x1 -= dx;
- fastBox.x2 -= dx;
- fastBox.y1 -= dy;
- fastBox.y2 -= dy;
-
- /* If the destination composite clip is one rectangle we can
- do the clip directly. Otherwise we have to create a full
- blown region and call intersect */
- cclip = pGC->pCompositeClip;
- if (REGION_NUM_RECTS(cclip) == 1) {
- BoxPtr pBox = REGION_RECTS(cclip);
-
- if (fastBox.x1 < pBox->x1)
- fastBox.x1 = pBox->x1;
- if (fastBox.x2 > pBox->x2)
- fastBox.x2 = pBox->x2;
- if (fastBox.y1 < pBox->y1)
- fastBox.y1 = pBox->y1;
- if (fastBox.y2 > pBox->y2)
- fastBox.y2 = pBox->y2;
-
- /* Check to see if the region is empty */
- if (fastBox.x1 >= fastBox.x2 || fastBox.y1 >= fastBox.y2) {
- REGION_NULL(pGC->pScreen, &rgnDst);
- } else {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- }
- } else {
- /* We must turn off fastClip now, since we must create
- a full blown region. It is intersected with the
- composite clip below. */
- fastClip = 0;
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- }
- } else
- REGION_TRANSLATE(pGC->pScreen, &rgnDst, -dx, -dy);
-
- if (!fastClip) {
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, pGC->pCompositeClip);
- }
-
- /* Do bit blitting */
- numRects = REGION_NUM_RECTS(&rgnDst);
- if (numRects && width && height) {
- if (!(pptSrc = (DDXPointPtr)ALLOCATE_LOCAL(numRects *
- sizeof(DDXPointRec)))) {
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
- pbox = REGION_RECTS(&rgnDst);
- ppt = pptSrc;
- for (i = numRects; --i >= 0; pbox++, ppt++) {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- (*doBitBlt)(pSrcDrawable, pDstDrawable, pGC->alu, &rgnDst, pptSrc,
- planemask);
-
- DEALLOCATE_LOCAL(pptSrc);
- }
-
- prgnExposed = NULL;
- if (pGC->fExpose) {
- /* Pixmap sources generate a NoExposed (we return NULL to do this) */
- if (!fastExpose)
- prgnExposed = miHandleExposures(pSrcDrawable, pDstDrawable, pGC,
- origSource.x, origSource.y,
- (int)origSource.width,
- (int)origSource.height, origDest.x,
- origDest.y, (unsigned long)0);
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return prgnExposed;
-}
-
-RegionPtr
-ilbmCopyPlane(pSrcDrawable, pDstDrawable, pGC, srcx, srcy, width, height,
- dstx, dsty, plane)
-DrawablePtr pSrcDrawable, pDstDrawable;
-register GC *pGC;
-int srcx, srcy;
-int width, height;
-int dstx, dsty;
-unsigned long plane;
-{
- int alu;
- RegionPtr prgnExposed = NULL;
- unsigned long old_planemask;
- PixmapPtr pPixmap = NULL;
-
- if (pDstDrawable->depth == 1) {
- old_planemask = pGC->planemask;
- pGC->planemask = plane;
- if ((pGC->fgPixel & 1) == 1 && (pGC->bgPixel & 1) == 0) {
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty);
- } else if ((pGC->fgPixel & 1) == (pGC->bgPixel & 1)) {
- unsigned char rop;
-
- ilbmReduceRop(pGC->alu, pGC->fgPixel, 1, 1, &rop);
- alu = pGC->alu;
- pGC->alu = rop;
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable, pGC,
- srcx, srcy, width, height, dstx,
- dsty);
- pGC->alu = alu;
- } else { /* need to invert the src */
- alu = pGC->alu;
- pGC->alu = ilbmInverseAlu[alu];
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable, pGC,
- srcx, srcy, width, height, dstx,
- dsty);
- pGC->alu = alu;
- }
- pGC->planemask = old_planemask;
- } else {
- int free_pixmap = FALSE;
- PixmapPtr pBitmap = (PixmapPtr)pSrcDrawable;
- ScreenPtr pScreen = pSrcDrawable->pScreen;
- GCPtr pGC1;
-
- if (pSrcDrawable == pDstDrawable ||
- pSrcDrawable->type == DRAWABLE_WINDOW || pSrcDrawable->depth != 1) {
- /* Copy a plane from source drawable to a tmp 1-bit deep pixmap */
- /* XXX: Range check width and height */
- pBitmap = (*pScreen->CreatePixmap)(pScreen, width, height, 1);
-
- if (!pBitmap)
- return(NULL);
- pGC1 = GetScratchGC(1, pScreen);
- if (!pGC1) {
- (*pScreen->DestroyPixmap)(pBitmap);
- return(NULL);
- }
- ValidateGC((DrawablePtr)pBitmap, pGC1);
- (void)ilbmBitBlt(pSrcDrawable, (DrawablePtr)pBitmap, pGC1, srcx, srcy,
- width, height, 0, 0, ilbmDoBitbltCopy, plane);
- free_pixmap = TRUE;
- }
-#if 0
- else {
- /* XXX: could cope with N-deep pixmap source case without using tmp
- * src bitmap by setting up a scratch pixmap header and fiddle
- * around with the pbits pointer.
- */
- }
-#endif
- ilbmReduceOpaqueStipple(pGC->fgPixel, pGC->bgPixel, pGC->planemask,
- pGC->depth, ilbmRropsOS);
- (void)ilbmBitBlt((DrawablePtr)pBitmap, pDstDrawable, pGC, 0, 0, width,
- height, dstx, dsty, ilbmCopy1ToN, pGC->planemask);
- if (free_pixmap) {
- (*pScreen->DestroyPixmap)(pBitmap);
- FreeScratchGC(pGC1);
- }
-
- if (pGC->fExpose)
- prgnExposed = miHandleExposures(pSrcDrawable, pDstDrawable, pGC, srcx,
- srcy, width, height, dstx, dsty,
- plane);
- }
- return prgnExposed;
-}
-
-void
-ilbmCopy1ToN(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- int numRects = REGION_NUM_RECTS(prgnDst);
- BoxPtr pbox = REGION_RECTS(prgnDst);
- int r;
-
- for (r = 0; r < numRects; r++, pbox++, pptSrc++) {
- int dx = pptSrc->x;
- int dy = pptSrc->y;
-
- if (alu == GXcopy)
- ilbmOpaqueStippleAreaCopy(pDst, 1, pbox, alu, (PixmapPtr)pSrc, dx, dy,
- ilbmRropsOS, planemask);
- else
- ilbmOpaqueStippleAreaGeneral(pDst, 1, pbox, alu, (PixmapPtr)pSrc, dx,
- dy, ilbmRropsOS, planemask);
- }
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmblt.c b/nx-X11/programs/Xserver/ilbm/ilbmblt.c
deleted file mode 100644
index 9b11567ca..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmblt.c
+++ /dev/null
@@ -1,573 +0,0 @@
-/* $XFree86$ */
-/*
- * ilbm copy area
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-Author: Keith Packard
-
-*/
-/* $XConsortium: ilbmblt.c,v 1.11 94/04/17 20:28:16 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ilbm.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-#include "fastblt.h"
-#include "mergerop.h"
-
-void
-MROP_NAME(ilbmDoBitblt)(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- PixelType *psrcBase, *pdstBase; /* start of src and dst bitmaps */
- int widthSrc, widthDst; /* add to get to same position in next line */
- int heightSrc, heightDst;
- int auxSrc, auxDst;
-
- BoxPtr pbox;
- int nbox;
-
- BoxPtr pboxTmp, pboxNext, pboxBase, pboxNew1, pboxNew2;
- /* temporaries for shuffling rectangles */
- DDXPointPtr pptTmp, pptNew1, pptNew2;
- /* shuffling boxes entails shuffling the
- source points too */
- int w, h;
- int xdir; /* 1 = left right, -1 = right left/ */
- int ydir; /* 1 = top down, -1 = bottom up */
-
- PixelType *psrcLine, *pdstLine;
- /* pointers to line with current src and dst */
- register PixelType *psrc; /* pointer to current src longword */
- register PixelType *pdst; /* pointer to current dst longword */
-
- MROP_DECLARE_REG()
-
- /* following used for looping through a line */
- PixelType startmask, endmask; /* masks for writing ends of dst */
- int nlMiddle; /* whole longwords in dst */
- int xoffSrc, xoffDst;
- register int leftShift, rightShift;
- register PixelType bits;
- register PixelType bits1;
- register int nl; /* temp copy of nlMiddle */
-
- /* place to store full source word */
- int nstart; /* number of ragged bits at start of dst */
- int nend; /* number of ragged bits at end of dst */
- int srcStartOver; /* pulling nstart bits from src
- overflows into the next word? */
- int careful;
- int tmpSrc;
- int depthSrc;
- int depthDst;
-
- MROP_INITIALIZE(alu,0);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pSrc, widthSrc, auxSrc, depthSrc,
- psrcBase);
- ilbmGetPixelWidthAuxDepthAndPointer(pDst, widthDst, auxDst, depthDst,
- pdstBase);
-
- /* Special case where depth of dest pixmap is 1 but source pixmap isn't
- * Used for GetImage to copy a plane from a source pixmap to a particular
- * dest pixmap plane.
- * Note: planemask should have only one bit set or several planes from
- * the source will be copied to the same dest plane.
- */
- if (depthDst == 1 && depthDst != depthSrc)
- widthDst = 0;
-
- /* XXX we have to err on the side of safety when both are windows,
- * because we don't know if IncludeInferiors is being used.
- */
- careful = ((pSrc == pDst) ||
- ((pSrc->type == DRAWABLE_WINDOW) &&
- (pDst->type == DRAWABLE_WINDOW)));
-
- pbox = REGION_RECTS(prgnDst);
- nbox = REGION_NUM_RECTS(prgnDst);
-
- pboxNew1 = NULL;
- pptNew1 = NULL;
- pboxNew2 = NULL;
- pptNew2 = NULL;
- if (careful && (pptSrc->y < pbox->y1)) {
- /* walk source botttom to top */
- ydir = -1;
- auxSrc = -auxSrc;
- auxDst = -auxDst;
-
- if (nbox > 1) {
- /* keep ordering in each band, reverse order of bands */
- pboxNew1 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec)*nbox);
- if (!pboxNew1)
- return;
- pptNew1 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec)*nbox);
- if (!pptNew1) {
- DEALLOCATE_LOCAL(pboxNew1);
- return;
- }
- pboxBase = pboxNext = pbox+nbox-1;
- while (pboxBase >= pbox) {
- while ((pboxNext >= pbox) &&
- (pboxBase->y1 == pboxNext->y1))
- pboxNext--;
- pboxTmp = pboxNext+1;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp <= pboxBase) {
- *pboxNew1++ = *pboxTmp++;
- *pptNew1++ = *pptTmp++;
- }
- pboxBase = pboxNext;
- }
- pboxNew1 -= nbox;
- pbox = pboxNew1;
- pptNew1 -= nbox;
- pptSrc = pptNew1;
- }
- } else {
- /* walk source top to bottom */
- ydir = 1;
- }
-
- if (careful && (pptSrc->x < pbox->x1)) {
- /* walk source right to left */
- xdir = -1;
-
- if (nbox > 1) {
- /* reverse order of rects in each band */
- pboxNew2 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox);
- pptNew2 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox);
- if (!pboxNew2 || !pptNew2) {
- if (pptNew2)
- DEALLOCATE_LOCAL(pptNew2);
- if (pboxNew2)
- DEALLOCATE_LOCAL(pboxNew2);
- if (pboxNew1) {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(pboxNew1);
- }
- return;
- }
- pboxBase = pboxNext = pbox;
- while (pboxBase < pbox+nbox) {
- while ((pboxNext < pbox+nbox) && (pboxNext->y1 == pboxBase->y1))
- pboxNext++;
- pboxTmp = pboxNext;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp != pboxBase) {
- *pboxNew2++ = *--pboxTmp;
- *pptNew2++ = *--pptTmp;
- }
- pboxBase = pboxNext;
- }
- pboxNew2 -= nbox;
- pbox = pboxNew2;
- pptNew2 -= nbox;
- pptSrc = pptNew2;
- }
- } else {
- /* walk source left to right */
- xdir = 1;
- }
-
- while (nbox--) {
- int d;
- for (d = 0; d < depthSrc; d++) {
- PixelType *psrcB;
- PixelType *pdstB;
-
- if (!(planemask & (1 << d)))
- continue;
-
- psrcB = psrcBase + widthSrc * d; /* @@@ NEXT PLANE @@@ */
- pdstB = pdstBase + widthDst * d; /* @@@ NEXT PLANE @@@ */
-
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
-
- if (ydir == -1) { /* start at last scanline of rectangle */
- psrcLine = ilbmScanlineDeltaSrc(psrcB, -(pptSrc->y+h-1), auxSrc);
- pdstLine = ilbmScanlineDeltaDst(pdstB, -(pbox->y2-1), auxDst);
- } else { /* start at first scanline */
- psrcLine = ilbmScanlineDeltaSrc(psrcB, pptSrc->y, auxSrc);
- pdstLine = ilbmScanlineDeltaDst(pdstB, pbox->y1, auxDst);
- }
- if ((pbox->x1 & PIM) + w <= PPW) {
- maskpartialbits (pbox->x1, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlMiddle);
- }
- if (xdir == 1) {
- xoffSrc = pptSrc->x & PIM;
- xoffDst = pbox->x1 & PIM;
- pdstLine += (pbox->x1 >> PWSH);
- psrcLine += (pptSrc->x >> PWSH);
-#ifdef DO_UNALIGNED_BITBLT
- nl = xoffSrc - xoffDst;
- psrcLine = (PixelType *)(((unsigned char *) psrcLine) + nl);
-#else
- if (xoffSrc == xoffDst)
-#endif
- {
- while (h--) {
- psrc = psrcLine;
- pdst = pdstLine;
- if (startmask) {
- *pdst = MROP_MASK(*psrc, *pdst, startmask);
- psrc++;
- pdst++;
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-#define BodyEven(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) *pdst = MROP_SOLID (*psrc, *pdst); pdst++; psrc++;
-#define BodyEven(n) BodyOdd(n)
-
-#define LoopReset ;
-
-#endif
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
-#ifdef NOTDEF
- /* you'd think this would be faster --
- * a single instruction instead of 6
- * but measurements show it to be ~15% slower
- */
- while ((nl -= 6) >= 0) {
- asm ("moveml %1+,#0x0c0f;moveml#0x0c0f,%0"
- : "=m" (*(char *)pdst)
- : "m" (*(char *)psrc)
- : "d0", "d1", "d2", "d3",
- "a2", "a3");
- pdst += 6;
- }
- nl += 6;
- while (nl--)
- *pdst++ = *psrc++;
-#endif
- DuffL(nl, label1,
- *pdst = MROP_SOLID (*psrc, *pdst);
- pdst++; psrc++;)
-#endif
-
- if (endmask)
- *pdst = MROP_MASK(*psrc, *pdst, endmask);
- ilbmScanlineIncDst(pdstLine, auxDst);
- ilbmScanlineIncSrc(psrcLine, auxSrc);
- }
- }
-#ifndef DO_UNALIGNED_BITBLT
- else {
- if (xoffSrc > xoffDst) {
- leftShift = (xoffSrc - xoffDst);
- rightShift = PPW - leftShift;
- } else {
- rightShift = (xoffDst - xoffSrc);
- leftShift = PPW - rightShift;
- }
- while (h--) {
- psrc = psrcLine;
- pdst = pdstLine;
- bits = 0;
- if (xoffSrc > xoffDst)
- bits = *psrc++;
- if (startmask) {
- bits1 = BitLeft(bits,leftShift);
- bits = *psrc++;
- bits1 |= BitRight(bits,rightShift);
- *pdst = MROP_MASK(bits1, *pdst, startmask);
- pdst++;
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
- bits1 = bits;
-
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) \
-bits = psrc[-n]; \
-pdst[-n] = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), pdst[-n]);
-
-#define BodyEven(n) \
-bits1 = psrc[-n]; \
-pdst[-n] = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), pdst[-n]);
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) \
-bits = *psrc++; \
-*pdst = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), *pdst); \
-pdst++;
-
-#define BodyEven(n) \
-bits1 = *psrc++; \
-*pdst = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), *pdst); \
-pdst++;
-
-#define LoopReset ;
-
-#endif /* !FAST_CONSTANT_OFFSET_MODE */
-
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL(nl,label2,
- bits1 = BitLeft(bits, leftShift);
- bits = *psrc++;
- *pdst = MROP_SOLID (bits1 | BitRight(bits, rightShift), *pdst);
- pdst++;
- )
-#endif
-
- if (endmask) {
- bits1 = BitLeft(bits, leftShift);
- if (BitLeft(endmask, rightShift)) {
- bits = *psrc;
- bits1 |= BitRight(bits, rightShift);
- }
- *pdst = MROP_MASK (bits1, *pdst, endmask);
- }
- ilbmScanlineIncDst(pdstLine, auxDst);
- ilbmScanlineIncSrc(psrcLine, auxSrc);
- }
- }
-#endif /* DO_UNALIGNED_BITBLT */
- } else { /* xdir == -1 */
- xoffSrc = (pptSrc->x + w - 1) & PIM;
- xoffDst = (pbox->x2 - 1) & PIM;
- pdstLine += ((pbox->x2-1) >> PWSH) + 1;
- psrcLine += ((pptSrc->x+w - 1) >> PWSH) + 1;
-#ifdef DO_UNALIGNED_BITBLT
- nl = xoffSrc - xoffDst;
- psrcLine = (PixelType *)
- (((unsigned char *) psrcLine) + nl);
-#else
- if (xoffSrc == xoffDst)
-#endif
- {
- while (h--) {
- psrc = psrcLine;
- pdst = pdstLine;
- if (endmask) {
- pdst--;
- psrc--;
- *pdst = MROP_MASK (*psrc, *pdst, endmask);
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
-#ifdef FAST_CONSTANT_OFFSET_MODE
- psrc -= nl & (UNROLL - 1);
- pdst -= nl & (UNROLL - 1);
-
-#define BodyOdd(n) pdst[n-1] = MROP_SOLID (psrc[n-1], pdst[n-1]);
-
-#define BodyEven(n) BodyOdd(n)
-
-#define LoopReset \
-pdst -= UNROLL;\
-psrc -= UNROLL;
-
-#else
-
-#define BodyOdd(n) --pdst; --psrc; *pdst = MROP_SOLID(*psrc, *pdst);
-#define BodyEven(n) BodyOdd(n)
-#define LoopReset ;
-
-#endif
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL(nl,label3,
- --pdst; --psrc; *pdst = MROP_SOLID (*psrc, *pdst);)
-#endif
-
- if (startmask) {
- --pdst;
- --psrc;
- *pdst = MROP_MASK(*psrc, *pdst, startmask);
- }
- ilbmScanlineIncDst(pdstLine, auxDst);
- ilbmScanlineIncSrc(psrcLine, auxSrc);
- }
- }
-#ifndef DO_UNALIGNED_BITBLT
- else {
- if (xoffDst > xoffSrc) {
- rightShift = (xoffDst - xoffSrc);
- leftShift = PPW - rightShift;
- } else {
- leftShift = (xoffSrc - xoffDst);
- rightShift = PPW - leftShift;
- }
- while (h--) {
- psrc = psrcLine;
- pdst = pdstLine;
- bits = 0;
- if (xoffDst > xoffSrc)
- bits = *--psrc;
- if (endmask) {
- bits1 = BitRight(bits, rightShift);
- bits = *--psrc;
- bits1 |= BitLeft(bits, leftShift);
- pdst--;
- *pdst = MROP_MASK(bits1, *pdst, endmask);
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
- bits1 = bits;
-#ifdef FAST_CONSTANT_OFFSET_MODE
- psrc -= nl & (UNROLL - 1);
- pdst -= nl & (UNROLL - 1);
-
-#define BodyOdd(n) \
-bits = psrc[n-1]; \
-pdst[n-1] = MROP_SOLID(BitRight(bits1, rightShift) | BitLeft(bits, leftShift),pdst[n-1]);
-
-#define BodyEven(n) \
-bits1 = psrc[n-1]; \
-pdst[n-1] = MROP_SOLID(BitRight(bits, rightShift) | BitLeft(bits1, leftShift),pdst[n-1]);
-
-#define LoopReset \
-pdst -= UNROLL; \
-psrc -= UNROLL;
-
-#else
-
-#define BodyOdd(n) \
-bits = *--psrc; --pdst; \
-*pdst = MROP_SOLID(BitRight(bits1, rightShift) | BitLeft(bits, leftShift),*pdst);
-
-#define BodyEven(n) \
-bits1 = *--psrc; --pdst; \
-*pdst = MROP_SOLID(BitRight(bits, rightShift) | BitLeft(bits1, leftShift),*pdst);
-
-#define LoopReset ;
-
-#endif
-
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL(nl, label4,
- bits1 = BitRight(bits, rightShift);
- bits = *--psrc;
- --pdst;
- *pdst = MROP_SOLID(bits1 | BitLeft(bits, leftShift),*pdst);
- )
-#endif
-
- if (startmask) {
- bits1 = BitRight(bits, rightShift);
- if (BitRight (startmask, leftShift)) {
- bits = *--psrc;
- bits1 |= BitLeft(bits, leftShift);
- }
- --pdst;
- *pdst = MROP_MASK(bits1, *pdst, startmask);
- }
- ilbmScanlineIncDst(pdstLine, auxDst);
- ilbmScanlineIncSrc(psrcLine, auxSrc);
- }
- }
-#endif
- }
- }
- pbox++;
- pptSrc++;
- }
- if (pboxNew2) {
- DEALLOCATE_LOCAL(pptNew2);
- DEALLOCATE_LOCAL(pboxNew2);
- }
- if (pboxNew1) {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(pboxNew1);
- }
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmbres.c b/nx-X11/programs/Xserver/ilbm/ilbmbres.c
deleted file mode 100644
index 49058d446..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmbres.c
+++ /dev/null
@@ -1,328 +0,0 @@
-/* $XFree86$ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmbres.c,v 1.22 94/04/17 20:28:17 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "ilbm.h"
-#include "maskbits.h"
-#include "miline.h"
-
-/* Solid bresenham line */
-/* NOTES
- e2 is used less often than e1, so it's not in a register
-*/
-
-void
-ilbmBresS(addrlbase, nlwidth, auxDst, depthDst, signdx, signdy, axis, x1, y1,
- e, e1, e2, len, rrops)
-PixelType *addrlbase; /* pointer to base of bitmap */
-int nlwidth; /* width in longwords of bitmap */
-int auxDst;
-int depthDst;
-int signdx, signdy; /* signs of directions */
-int axis; /* major axis (Y_AXIS or X_AXIS) */
-int x1, y1; /* initial point */
-register int e; /* error accumulator */
-register int e1; /* bresenham increments */
-int e2;
-int len; /* length of line */
-unsigned char *rrops;
-{
- register int yinc; /* increment to next scanline, in bytes */
- register PixelType *addrl; /* bitmask long pointer */
- register PixelType bit; /* current bit being set/cleared/etc. */
- PixelType leftbit = mask[0]; /* leftmost bit to process in new word */
- PixelType rightbit = mask[PPW-1]; /* rightmost bit to process in new word */
-
- register int e3 = e2-e1;
- PixelType tmp;
- int saveE;
- int saveLen;
- int d;
-
- /* point to longword containing first point */
- yinc = signdy * auxDst;
- e = e-e1; /* to make looping easier */
-
- if (!len)
- return;
-
- saveLen = len;
- saveE = e;
-
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(addrlbase, x1, y1, auxDst);
- addrlbase += nlwidth; /* @@@ NEXT PLANE @@@ */
- len = saveLen;
- e = saveE;
- bit = mask[x1 & PIM];
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if (axis == X_AXIS) {
- if (signdx > 0) {
- tmp = *addrl;
- for (;;) {
- tmp &= ~bit;
- if (!--len)
- break;
- bit = SCRRIGHT(bit,1);
- e += e1;
- if (e >= 0) {
- *addrl = tmp;
- ilbmScanlineInc(addrl, yinc);
- e += e3;
- if (!bit) {
- bit = leftbit;
- addrl ++;
- }
- tmp = *addrl;
- } else if (!bit) {
- *addrl = tmp;
- bit = leftbit;
- addrl ++;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- } else {
- tmp = *addrl;
- for (;;) {
- tmp &= ~bit;
- if (!--len)
- break;
- e += e1;
- bit = SCRLEFT(bit,1);
- if (e >= 0) {
- *addrl = tmp;
- ilbmScanlineInc(addrl, yinc);
- e += e3;
- if (!bit) {
- bit = rightbit;
- addrl --;
- }
- tmp = *addrl;
- } else if (!bit) {
- *addrl = tmp;
- bit = rightbit;
- addrl --;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- }
- } /* if X_AXIS */ else {
- if (signdx > 0) {
- while (len--) {
- *addrl &= ~bit;
- e += e1;
- if (e >= 0) {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- ilbmScanlineInc(addrl, yinc);
- }
- } else {
- while (len--) {
- *addrl &= ~bit;
- e += e1;
- if (e >= 0) {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- ilbmScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- break;
-
- case RROP_WHITE:
- if (axis == X_AXIS) {
- if (signdx > 0) {
- tmp = *addrl;
- for (;;) {
- tmp |= bit;
- if (!--len)
- break;
- e += e1;
- bit = SCRRIGHT(bit,1);
- if (e >= 0) {
- *addrl = tmp;
- ilbmScanlineInc(addrl, yinc);
- e += e3;
- if (!bit) {
- bit = leftbit;
- addrl ++;
- }
- tmp = *addrl;
- } else if (!bit) {
- *addrl = tmp;
- bit = leftbit;
- addrl ++;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- } else {
- tmp = *addrl;
- for (;;) {
- tmp |= bit;
- if (!--len)
- break;
- e += e1;
- bit = SCRLEFT(bit,1);
- if (e >= 0) {
- *addrl = tmp;
- ilbmScanlineInc(addrl, yinc);
- e += e3;
- if (!bit) {
- bit = rightbit;
- addrl --;
- }
- tmp = *addrl;
- } else if (!bit) {
- *addrl = tmp;
- bit = rightbit;
- addrl --;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- }
- } /* if X_AXIS */ else {
- if (signdx > 0) {
- while (len--) {
- *addrl |= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- ilbmScanlineInc(addrl, yinc);
- }
- } else {
- while (len--) {
- *addrl |= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- ilbmScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- break;
-
- case RROP_INVERT:
- if (axis == X_AXIS) {
- if (signdx > 0) {
- while (len--) {
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- ilbmScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- }
- } else {
- while (len--) {
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- ilbmScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- }
- }
- } /* if X_AXIS */ else {
- if (signdx > 0) {
- while (len--) {
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- ilbmScanlineInc(addrl, yinc);
- }
- } else {
- while (len--) {
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit; addrl --; }
- e += e3;
- }
- ilbmScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- } /* switch */
- } /* for (d = ... ) */
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmbresd.c b/nx-X11/programs/Xserver/ilbm/ilbmbresd.c
deleted file mode 100644
index 78eb392a6..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmbresd.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmbresd.c,v 1.10 94/04/17 20:28:18 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "ilbm.h"
-#include "maskbits.h"
-#include "miline.h"
-
-/* Dashed bresenham line */
-
-#define StepDash\
- if (!--dashRemaining) { \
- if (++ dashIndex == numInDashList) \
- dashIndex = 0; \
- dashRemaining = pDash[dashIndex]; \
- rop = fgrop; \
- if (dashIndex & 1) \
- rop = bgrop; \
- }
-
-void
-ilbmBresD(pdashIndex, pDash, numInDashList, pdashOffset, isDoubleDash,
- addrlbase, nlwidth, auxDst, depthDst,
- signdx, signdy, axis, x1, y1, e, e1, e2, len, rrops, bgrrops)
-int *pdashIndex; /* current dash */
-unsigned char *pDash; /* dash list */
-int numInDashList; /* total length of dash list */
-int *pdashOffset; /* offset into current dash */
-int isDoubleDash;
-PixelType *addrlbase; /* pointer to base of bitmap */
-int nlwidth; /* width in longwords of bitmap */
-int auxDst;
-int depthDst;
-int signdx, signdy; /* signs of directions */
-int axis; /* major axis (Y_AXIS or X_AXIS) */
-int x1, y1; /* initial point */
-register int e; /* error accumulator */
-register int e1; /* bresenham increments */
-int e2;
-int len; /* length of line */
-unsigned char *rrops;
-unsigned char *bgrrops;
-{
- register int yinc; /* increment to next scanline, in bytes */
- register PixelType *addrl;
- register int e3 = e2-e1;
- register unsigned long bit;
- PixelType leftbit = mask[0]; /* leftmost bit to process in new word */
- PixelType rightbit = mask[PPW-1]; /* rightmost bit to process in new word */
- int dashIndex;
- int dashOffset;
- int dashRemaining;
- int rop;
- int fgrop;
- int bgrop;
- int saveE;
- int saveLen;
- int d;
-
- dashOffset = *pdashOffset;
- dashIndex = *pdashIndex;
- dashRemaining = pDash[dashIndex] - dashOffset;
- /* point to longword containing first point */
-
- yinc = signdy * auxDst;
- e = e-e1; /* to make looping easier */
-
- saveE = e;
- saveLen = len;
-
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(addrlbase, x1, y1, auxDst);
- addrlbase += nlwidth; /* @@@ NEXT PLANE @@@ */
-
- fgrop = rrops[d];
- bgrop = bgrrops[d];
-
- e = saveE;
- len = saveLen;
- bit = mask[x1 & PIM];
-
- rop = fgrop;
- if (!isDoubleDash)
- bgrop = -1;
- if (dashIndex & 1)
- rop = bgrop;
-
- if (axis == X_AXIS) {
- if (signdx > 0) {
- while (len--) {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- ilbmScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- StepDash
- }
- } else {
- while (len--) {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- ilbmScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- StepDash
- }
- }
- } /* if X_AXIS */ else {
- if (signdx > 0) {
- while (len--) {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- ilbmScanlineInc(addrl, yinc);
- StepDash
- }
- } else {
- while (len--) {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- ilbmScanlineInc(addrl, yinc);
- StepDash
- }
- }
- } /* else Y_AXIS */
- } /* for (d = ...) */
- *pdashIndex = dashIndex;
- *pdashOffset = pDash[dashIndex] - dashRemaining;
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmbstore.c b/nx-X11/programs/Xserver/ilbm/ilbmbstore.c
deleted file mode 100644
index 56811792f..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmbstore.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: ilbmbstore.c,v 5.7 94/04/17 20:28:18 dpw Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/*
-
-Copyright (c) 1987 X Consortium
-
-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 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 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 X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-*/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "ilbm.h"
-#include <X11/X.h>
-#include "mibstore.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-
-/*-
- *-----------------------------------------------------------------------
- * ilbmSaveAreas --
- * Function called by miSaveAreas to actually fetch the areas to be
- * saved into the backing pixmap. This is very simple to do, since
- * ilbmDoBitblt is designed for this very thing. The region to save is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the screen
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the screen into the pixmap.
- *
- *-----------------------------------------------------------------------
- */
-void
-ilbmSaveAreas(pPixmap, prgnSave, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnSave; /* Region to save (pixmap-relative) */
- int xorg; /* X origin of region */
- int yorg; /* Y origin of region */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int numRects;
-
- numRects = REGION_NUM_RECTS(prgnSave);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(numRects * sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnSave);
- pPt = pPtsInit;
- while (numRects--) {
- pPt->x = pBox->x1 + xorg;
- pPt->y = pBox->y1 + yorg;
- pPt++;
- pBox++;
- }
-
- ilbmDoBitblt((DrawablePtr)pPixmap->drawable.pScreen->devPrivates[ilbmScreenPrivateIndex].ptr,
- (DrawablePtr)pPixmap,
- GXcopy,
- prgnSave,
- pPtsInit, wBackingBitPlanes (pWin));
-
- DEALLOCATE_LOCAL(pPtsInit);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * ilbmRestoreAreas --
- * Function called by miRestoreAreas to actually fetch the areas to be
- * restored from the backing pixmap. This is very simple to do, since
- * ilbmDoBitblt is designed for this very thing. The region to restore is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the pixmap
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the pixmap into the screen.
- *
- *-----------------------------------------------------------------------
- */
-void
-ilbmRestoreAreas(pPixmap, prgnRestore, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnRestore; /* Region to restore (screen-relative)*/
- int xorg; /* X origin of window */
- int yorg; /* Y origin of window */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int numRects;
-
- numRects = REGION_NUM_RECTS(prgnRestore);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(numRects*sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnRestore);
- pPt = pPtsInit;
- while (numRects--) {
- pPt->x = pBox->x1 - xorg;
- pPt->y = pBox->y1 - yorg;
- pPt++;
- pBox++;
- }
-
- ilbmDoBitblt((DrawablePtr)pPixmap,
- (DrawablePtr)pPixmap->drawable.pScreen->devPrivates[ilbmScreenPrivateIndex].ptr,
- GXcopy,
- prgnRestore,
- pPtsInit, wBackingBitPlanes (pWin));
-
- DEALLOCATE_LOCAL(pPtsInit);
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmclip.c b/nx-X11/programs/Xserver/ilbm/ilbmclip.c
deleted file mode 100644
index 704b5a9cd..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmclip.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmclip.c,v 5.6 94/04/17 20:28:19 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "miscstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "regionstr.h"
-#include "gc.h"
-#include "maskbits.h"
-#include "mi.h"
-
-#define ADDRECT(reg,r,fr,rx1,ry1,rx2,ry2) \
-if (((rx1) < (rx2)) && ((ry1) < (ry2)) && \
- (!((reg)->data->numRects && \
- ((r-1)->y1 == (ry1)) && \
- ((r-1)->y2 == (ry2)) && \
- ((r-1)->x1 <= (rx1)) && \
- ((r-1)->x2 >= (rx2))))) { \
- if ((reg)->data->numRects == (reg)->data->size) { \
- miRectAlloc(reg, 1); \
- fr = REGION_BOXPTR(reg); \
- r = fr + (reg)->data->numRects; \
- } \
- r->x1 = (rx1); \
- r->y1 = (ry1); \
- r->x2 = (rx2); \
- r->y2 = (ry2); \
- (reg)->data->numRects++; \
- if (r->x1 < (reg)->extents.x1) \
- (reg)->extents.x1 = r->x1; \
- if (r->x2 > (reg)->extents.x2) \
- (reg)->extents.x2 = r->x2; \
- r++; \
-}
-
-/* Convert bitmap clip mask into clipping region.
- * First, goes through each line and makes boxes by noting the transitions
- * from 0 to 1 and 1 to 0.
- * Then it coalesces the current line with the previous if they have boxes
- * at the same X coordinates.
- */
-RegionPtr
-ilbmPixmapToRegion(pPix)
- PixmapPtr pPix;
-{
- register RegionPtr pReg;
- register PixelType *pw, w;
- register int ib;
- int width, h, base, rx1, crects;
- PixelType *pwLineEnd;
- int irectPrevStart, irectLineStart;
- register BoxPtr prectO, prectN;
- BoxPtr FirstRect, rects, prectLineStart;
- Bool fInBox, fSame;
- register PixelType mask0 = mask[0];
- PixelType *pwLine;
- int nWidth;
-
- pReg = REGION_CREATE(pPix->drawable.pScreen, NULL, 1);
- if (!pReg)
- return(NullRegion);
- FirstRect = REGION_BOXPTR(pReg);
- rects = FirstRect;
-
- pwLine = (PixelType *)pPix->devPrivate.ptr;
- nWidth = pPix->devKind/PGSZB;
-
- width = pPix->drawable.width;
- pReg->extents.x1 = width - 1;
- pReg->extents.x2 = 0;
- irectPrevStart = -1;
- for (h = 0; h < pPix->drawable.height; h++) {
- pw = pwLine;
- pwLine += nWidth;
- irectLineStart = rects - FirstRect;
- /* If the Screen left most bit of the word is set, we're starting in
- * a box */
- if (*pw & mask0) {
- fInBox = TRUE;
- rx1 = 0;
- } else
- fInBox = FALSE;
- /* Process all words which are fully in the pixmap */
- pwLineEnd = pw + (width >> PWSH);
- for (base = 0; pw < pwLineEnd; base += PPW) {
- w = *pw++;
- if (fInBox) {
- if (!~w)
- continue;
- } else {
- if (!w)
- continue;
- }
- for (ib = 0; ib < PPW; ib++) {
- /* If the Screen left most bit of the word is set, we're
- * starting a box */
- if (w & mask0) {
- if (!fInBox) {
- rx1 = base + ib;
- /* start new box */
- fInBox = TRUE;
- }
- } else {
- if (fInBox) {
- /* end box */
- ADDRECT(pReg, rects, FirstRect, rx1, h, base + ib, h + 1);
- fInBox = FALSE;
- }
- }
- /* Shift the word VISUALLY left one. */
- w = SCRLEFT(w, 1);
- }
- }
- if (width & PIM) {
- /* Process final partial word on line */
- w = *pw++;
- for (ib = 0; ib < (width & PIM); ib++) {
- /* If the Screen left most bit of the word is set, we're
- * starting a box */
- if (w & mask0) {
- if (!fInBox) {
- rx1 = base + ib;
- /* start new box */
- fInBox = TRUE;
- }
- } else {
- if (fInBox) {
- /* end box */
- ADDRECT(pReg, rects, FirstRect,
- rx1, h, base + ib, h + 1);
- fInBox = FALSE;
- }
- }
- /* Shift the word VISUALLY left one. */
- w = SCRLEFT(w, 1);
- }
- }
- /* If scanline ended with last bit set, end the box */
- if (fInBox) {
- ADDRECT(pReg, rects, FirstRect,
- rx1, h, base + (width & PIM), h + 1);
- }
- /* if all rectangles on this line have the same x-coords as
- * those on the previous line, then add 1 to all the previous y2s and
- * throw away all the rectangles from this line
- */
- fSame = FALSE;
- if (irectPrevStart != -1) {
- crects = irectLineStart - irectPrevStart;
- if (crects == ((rects - FirstRect) - irectLineStart)) {
- prectO = FirstRect + irectPrevStart;
- prectN = prectLineStart = FirstRect + irectLineStart;
- fSame = TRUE;
- while (prectO < prectLineStart) {
- if ((prectO->x1 != prectN->x1) || (prectO->x2 != prectN->x2)) {
- fSame = FALSE;
- break;
- }
- prectO++;
- prectN++;
- }
- if (fSame) {
- prectO = FirstRect + irectPrevStart;
- while (prectO < prectLineStart) {
- prectO->y2 += 1;
- prectO++;
- }
- rects -= crects;
- pReg->data->numRects -= crects;
- }
- }
- }
- if (!fSame)
- irectPrevStart = irectLineStart;
- }
- if (!pReg->data->numRects)
- pReg->extents.x1 = pReg->extents.x2 = 0;
- else {
- pReg->extents.y1 = REGION_BOXPTR(pReg)->y1;
- pReg->extents.y2 = REGION_END(pReg)->y2;
- if (pReg->data->numRects == 1) {
- xfree(pReg->data);
- pReg->data = (RegDataPtr)NULL;
- }
- }
-#ifdef DEBUG
- if (!miValidRegion(pReg))
- FatalError("Assertion failed file %s, line %d: expr\n", __FILE__, __LINE__);
-#endif
- return(pReg);
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmcmap.c b/nx-X11/programs/Xserver/ilbm/ilbmcmap.c
deleted file mode 100644
index e485fb6fe..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmcmap.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmcmap.c,v 3.0 1996/08/18 01:53:46 dawes Exp $ */
-/* $XConsortium: ilbmcmap.c,v 4.19 94/04/17 20:28:46 dpw Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or X Consortium
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and X Consortium make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "scrnintstr.h"
-#include "colormapst.h"
-#include "resource.h"
-#include "micmap.h"
-
-int
-ilbmListInstalledColormaps(pScreen, pmaps)
- ScreenPtr pScreen;
- Colormap *pmaps;
-{
- return miListInstalledColormaps(pScreen, pmaps);
-}
-
-
-void
-ilbmInstallColormap(pmap)
- ColormapPtr pmap;
-{
- miInstallColormap(pmap);
-}
-
-void
-ilbmUninstallColormap(pmap)
- ColormapPtr pmap;
-{
- miUninstallColormap(pmap);
-}
-
-void
-ilbmResolveColor(pred, pgreen, pblue, pVisual)
- unsigned short *pred, *pgreen, *pblue;
- register VisualPtr pVisual;
-{
- miResolveColor(pred, pgreen, pblue, pVisual);
-}
-
-Bool
-ilbmInitializeColormap(pmap)
- register ColormapPtr pmap;
-{
- return miInitializeColormap(pmap);
-}
-
-int
-ilbmExpandDirectColors(pmap, ndef, indefs, outdefs)
- ColormapPtr pmap;
- int ndef;
- xColorItem *indefs, *outdefs;
-{
- return miExpandDirectColors(pmap, ndef, indefs, outdefs);
-}
-
-Bool
-ilbmCreateDefColormap(pScreen)
- ScreenPtr pScreen;
-{
- return miCreateDefColormap(pScreen);
-}
-
-Bool
-ilbmSetVisualTypes(depth, visuals, bitsPerRGB)
- int depth;
- int visuals;
- int bitsPerRGB;
-{
- return miSetVisualTypes(depth, visuals, bitsPerRGB, -1);
-}
-
-/*
- * Given a list of formats for a screen, create a list
- * of visuals and depths for the screen which correspond to
- * the set which can be used with this version of ilbm.
- */
-
-Bool
-ilbmInitVisuals(visualp, depthp, nvisualp, ndepthp, rootDepthp, defaultVisp,
- sizes, bitsPerRGB)
- VisualPtr *visualp;
- DepthPtr *depthp;
- int *nvisualp, *ndepthp;
- int *rootDepthp;
- VisualID *defaultVisp;
- unsigned long sizes;
- int bitsPerRGB;
-{
- return miInitVisuals(visualp, depthp, nvisualp, ndepthp, rootDepthp,
- defaultVisp, sizes, bitsPerRGB, -1);
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmfillarc.c b/nx-X11/programs/Xserver/ilbm/ilbmfillarc.c
deleted file mode 100644
index a5ab6c4a2..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmfillarc.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmfillarc.c,v 3.0 1996/08/18 01:53:48 dawes Exp $ */
-/************************************************************
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-********************************************************/
-
-/* $XConsortium: ilbmfillarc.c,v 5.14 94/04/17 20:28:20 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "miscstruct.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "ilbm.h"
-#include "maskbits.h"
-#include "mifillarc.h"
-#include "mi.h"
-
-static void
-ilbmFillEllipseSolid(pDraw, arc, rrops)
- DrawablePtr pDraw;
- xArc *arc;
- register unsigned char *rrops;
-{
- int x, y, e;
- int yk, xk, ym, xm, dx, dy, xorg, yorg;
- register int slw;
- miFillArcRec info;
- PixelType *addrlt, *addrlb;
- register PixelType *pdst;
- PixelType *addrl;
- register int n;
- register int d;
- int nlwidth;
- register int xpos;
- PixelType startmask, endmask;
- int nlmiddle;
- int depthDst;
- int auxDst;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- addrlt);
- miFillArcSetup(arc, &info);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrlb = addrlt;
- addrlt += auxDst * (yorg - y);
- addrlb += auxDst * (yorg + y + dy);
- while (y) {
- addrlt += auxDst;
- addrlb -= auxDst;
- MIFILLARCSTEP(slw);
- if (!slw)
- continue;
- xpos = xorg - x;
- pdst = addrl = ilbmScanlineOffset(addrlt, (xpos >> PWSH));
- if (((xpos & PIM) + slw) < PPW) {
- maskpartialbits(xpos, slw, startmask);
- for (d = 0; d < depthDst; d++, pdst += nlwidth) { /* @@@ NEXT PLANE @@@ */
- switch (rrops[d]) {
- case RROP_BLACK:
- *pdst &= ~startmask;
- break;
- case RROP_WHITE:
- *pdst |= startmask;
- break;
- case RROP_INVERT:
- *pdst ^= startmask;
- break;
- case RROP_NOP:
- break;
- }
- }
- if (miFillArcLower(slw)) {
- pdst = ilbmScanlineOffset(addrlb, (xpos >> PWSH));
-
- for (d = 0; d < depthDst; d++, pdst += nlwidth) { /* @@@ NEXT PLANE @@@ */
- switch (rrops[d]) {
- case RROP_BLACK:
- *pdst &= ~startmask;
- break;
- case RROP_WHITE:
- *pdst |= startmask;
- break;
- case RROP_INVERT:
- *pdst ^= startmask;
- break;
- case RROP_NOP:
- break;
- }
- }
- }
- continue;
- }
- maskbits(xpos, slw, startmask, endmask, nlmiddle);
- for (d = 0; d < depthDst; d++, addrl += nlwidth) { /* @@@ NEXT PLANE @@@ */
- n = nlmiddle;
- pdst = addrl;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if (startmask)
- *pdst++ &= ~startmask;
- while (n--)
- *pdst++ = 0;
- if (endmask)
- *pdst &= ~endmask;
- break;
-
- case RROP_WHITE:
- if (startmask)
- *pdst++ |= startmask;
- while (n--)
- *pdst++ = ~0;
- if (endmask)
- *pdst |= endmask;
- break;
-
- case RROP_INVERT:
- if (startmask)
- *pdst++ ^= startmask;
- while (n--)
- *pdst++ ^= ~0;
- if (endmask)
- *pdst ^= endmask;
- break;
-
- case RROP_NOP:
- break;
- }
- }
- if (!miFillArcLower(slw))
- continue;
- addrl = ilbmScanlineOffset(addrlb, (xpos >> PWSH));
- for (d = 0; d < depthDst; d++, addrl += nlwidth) { /* @@@ NEXT PLANE @@@ */
- n = nlmiddle;
- pdst = addrl;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if (startmask)
- *pdst++ &= ~startmask;
- while (n--)
- *pdst++ = 0;
- if (endmask)
- *pdst &= ~endmask;
- break;
-
- case RROP_WHITE:
- if (startmask)
- *pdst++ |= startmask;
- while (n--)
- *pdst++ = ~0;
- if (endmask)
- *pdst |= endmask;
- break;
-
- case RROP_INVERT:
- if (startmask)
- *pdst++ ^= startmask;
- while (n--)
- *pdst++ ^= ~0;
- if (endmask)
- *pdst ^= endmask;
- break;
-
- case RROP_NOP:
- break;
- }
- }
- }
-}
-
-#define FILLSPAN(xl,xr,addr) \
- if (xr >= xl) { \
- width = xr - xl + 1; \
- addrl = ilbmScanlineOffset(addr, (xl >> PWSH)); \
- if (((xl & PIM) + width) < PPW) { \
- maskpartialbits(xl, width, startmask); \
- for (pdst = addrl, d = 0; d < depthDst; d++, pdst += nlwidth) { /* @@@ NEXT PLANE @@@ */ \
- switch (rrops[d]) { \
- case RROP_BLACK: \
- *pdst &= ~startmask; \
- break; \
- case RROP_WHITE: \
- *pdst |= startmask; \
- break; \
- case RROP_INVERT: \
- *pdst ^= startmask; \
- break; \
- case RROP_NOP: \
- break; \
- } \
- } \
- } else { \
- maskbits(xl, width, startmask, endmask, nlmiddle); \
- for (d = 0; d < depthDst; d++, addrl += nlwidth) { /* @@@ NEXT PLANE @@@ */ \
- n = nlmiddle; \
- pdst = addrl; \
- switch (rrops[d]) { \
- case RROP_BLACK: \
- if (startmask) \
- *pdst++ &= ~startmask; \
- while (n--) \
- *pdst++ = 0; \
- if (endmask) \
- *pdst &= ~endmask; \
- break; \
- case RROP_WHITE: \
- if (startmask) \
- *pdst++ |= startmask; \
- while (n--) \
- *pdst++ = ~0; \
- if (endmask) \
- *pdst |= endmask; \
- break; \
- case RROP_INVERT: \
- if (startmask) \
- *pdst++ ^= startmask; \
- while (n--) \
- *pdst++ ^= ~0; \
- if (endmask) \
- *pdst ^= endmask; \
- break; \
- case RROP_NOP: \
- break; \
- } \
- } \
- } \
- }
-
-#define FILLSLICESPANS(flip,addr) \
- if (!flip) { \
- FILLSPAN(xl, xr, addr); \
- } else { \
- xc = xorg - x; \
- FILLSPAN(xc, xr, addr); \
- xc += slw - 1; \
- FILLSPAN(xl, xc, addr); \
- }
-
-static void
-ilbmFillArcSliceSolidCopy(pDraw, pGC, arc, rrops)
- DrawablePtr pDraw;
- GCPtr pGC;
- xArc *arc;
- register unsigned char *rrops;
-{
- PixelType *addrl;
- register PixelType *pdst;
- register int n;
- register int d;
- int yk, xk, ym, xm, dx, dy, xorg, yorg, slw;
- register int x, y, e;
- miFillArcRec info;
- miArcSliceRec slice;
- int xl, xr, xc;
- PixelType *addrlt, *addrlb;
- int nlwidth;
- int width;
- PixelType startmask, endmask;
- int nlmiddle;
- int auxDst;
- int depthDst;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- addrlt);
- miFillArcSetup(arc, &info);
- miFillArcSliceSetup(arc, &slice, pGC);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrlb = addrlt;
- addrlt = ilbmScanlineDeltaNoBankSwitch(addrlt, yorg - y, auxDst);
- addrlb = ilbmScanlineDeltaNoBankSwitch(addrlb, yorg + y + dy, auxDst);
- slice.edge1.x += pDraw->x;
- slice.edge2.x += pDraw->x;
- while (y > 0) {
- ilbmScanlineIncNoBankSwitch(addrlt, auxDst);
- ilbmScanlineIncNoBankSwitch(addrlb, -auxDst);
- MIFILLARCSTEP(slw);
- MIARCSLICESTEP(slice.edge1);
- MIARCSLICESTEP(slice.edge2);
- if (miFillSliceUpper(slice)) {
- MIARCSLICEUPPER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_top, addrlt);
- }
- if (miFillSliceLower(slice)) {
- MIARCSLICELOWER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_bot, addrlb);
- }
- }
-}
-
-void
-ilbmPolyFillArcSolid(pDraw, pGC, narcs, parcs)
- register DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- ilbmPrivGC *priv;
- register xArc *arc;
- register int i;
- int x2, y2;
- BoxRec box;
- RegionPtr cclip;
- unsigned char *rrops;
-
- priv = (ilbmPrivGC *) pGC->devPrivates[ilbmGCPrivateIndex].ptr;
- rrops = priv->rrops;
- cclip = pGC->pCompositeClip;
- for (arc = parcs, i = narcs; --i >= 0; arc++) {
- if (miFillArcEmpty(arc))
- continue;
- if (miCanFillArc(arc)) {
- box.x1 = arc->x + pDraw->x;
- box.y1 = arc->y + pDraw->y;
- /*
- * Because box.x2 and box.y2 get truncated to 16 bits, and the
- * RECT_IN_REGION test treats the resulting number as a signed
- * integer, the RECT_IN_REGION test alone can go the wrong way.
- * This can result in a server crash because the rendering
- * routines in this file deal directly with cpu addresses
- * of pixels to be stored, and do not clip or otherwise check
- * that all such addresses are within their respective pixmaps.
- * So we only allow the RECT_IN_REGION test to be used for
- * values that can be expressed correctly in a signed short.
- */
- x2 = box.x1 + (int)arc->width + 1;
- box.x2 = x2;
- y2 = box.y1 + (int)arc->height + 1;
- box.y2 = y2;
- if ( (x2 <= MAXSHORT) && (y2 <= MAXSHORT) &&
- (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) ) {
- if ((arc->angle2 >= FULLCIRCLE) ||
- (arc->angle2 <= -FULLCIRCLE))
- ilbmFillEllipseSolid(pDraw, arc, rrops);
- else
- ilbmFillArcSliceSolidCopy(pDraw, pGC, arc, rrops);
- continue;
- }
- }
- miPolyFillArc(pDraw, pGC, 1, arc);
- }
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmfillrct.c b/nx-X11/programs/Xserver/ilbm/ilbmfillrct.c
deleted file mode 100644
index 604046080..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmfillrct.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmfillrct.c,v 3.0 1996/08/18 01:53:49 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmfillrct.c,v 5.10 94/04/17 20:28:21 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "pixmapstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "miscstruct.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-
-#include "ilbm.h"
-#include "maskbits.h"
-
-#define MODEQ(a, b) ((a) %= (b))
-void ilbmPaintOddSize();
-
-/*
- filled rectangles.
- translate the rectangles, clip them, and call the
-helper function in the GC.
-*/
-
-#define NUM_STACK_RECTS 1024
-
-void
-ilbmPolyFillRect(pDrawable, pGC, nrectFill, prectInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nrectFill; /* number of rectangles to fill */
- xRectangle *prectInit; /* Pointer to first rectangle to fill */
-{
- xRectangle *prect;
- RegionPtr prgnClip;
- register BoxPtr pbox;
- register BoxPtr pboxClipped;
- BoxPtr pboxClippedBase;
- BoxPtr pextent;
- BoxRec stackRects[NUM_STACK_RECTS];
- int numRects;
- int n;
- int xorg, yorg;
- ilbmPrivGC *priv;
- PixmapPtr ppix;
- unsigned char *rrops;
- unsigned char *rropsOS;
-
- priv = (ilbmPrivGC *)pGC->devPrivates[ilbmGCPrivateIndex].ptr;
- ppix = pGC->pRotatedPixmap;
- prgnClip = pGC->pCompositeClip;
- rrops = priv->rrops;
- rropsOS = priv->rropOS;
-
- prect = prectInit;
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- if (xorg || yorg) {
- prect = prectInit;
- n = nrectFill;
- Duff(n, prect->x += xorg; prect->y += yorg; prect++);
- }
-
- prect = prectInit;
-
- numRects = REGION_NUM_RECTS(prgnClip) * nrectFill;
- if (numRects > NUM_STACK_RECTS) {
- pboxClippedBase = (BoxPtr)ALLOCATE_LOCAL(numRects * sizeof(BoxRec));
- if (!pboxClippedBase)
- return;
- }
- else
- pboxClippedBase = stackRects;
-
- pboxClipped = pboxClippedBase;
-
- if (REGION_NUM_RECTS(prgnClip) == 1) {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_RECTS(prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--) {
- if ((pboxClipped->x1 = prect->x) < x1)
- pboxClipped->x1 = x1;
-
- if ((pboxClipped->y1 = prect->y) < y1)
- pboxClipped->y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- pboxClipped->x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- pboxClipped->y2 = by2;
-
- prect++;
- if ((pboxClipped->x1 < pboxClipped->x2) &&
- (pboxClipped->y1 < pboxClipped->y2)) {
- pboxClipped++;
- }
- }
- } else {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_EXTENTS(pGC->pScreen, prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--) {
- BoxRec box;
-
- if ((box.x1 = prect->x) < x1)
- box.x1 = x1;
-
- if ((box.y1 = prect->y) < y1)
- box.y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- box.x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- box.y2 = by2;
-
- prect++;
-
- if ((box.x1 >= box.x2) || (box.y1 >= box.y2))
- continue;
-
- n = REGION_NUM_RECTS (prgnClip);
- pbox = REGION_RECTS(prgnClip);
-
- /* clip the rectangle to each box in the clip region
- this is logically equivalent to calling Intersect()
- */
- while (n--) {
- pboxClipped->x1 = max(box.x1, pbox->x1);
- pboxClipped->y1 = max(box.y1, pbox->y1);
- pboxClipped->x2 = min(box.x2, pbox->x2);
- pboxClipped->y2 = min(box.y2, pbox->y2);
- pbox++;
-
- /* see if clipping left anything */
- if (pboxClipped->x1 < pboxClipped->x2 &&
- pboxClipped->y1 < pboxClipped->y2)
- pboxClipped++;
- }
- }
- }
- if (pboxClipped != pboxClippedBase) {
- switch (pGC->fillStyle) {
- case FillSolid:
- ilbmSolidFillArea(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, rrops);
- break;
- case FillTiled:
- switch (pGC->alu) {
- case GXcopy:
- if (pGC->pRotatedPixmap)
- ilbmTileAreaPPWCopy(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, GXcopy,
- pGC->pRotatedPixmap, pGC->planemask);
- else
- ilbmTileAreaCopy(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, GXcopy, pGC->tile.pixmap,
- pGC->patOrg.x, pGC->patOrg.y,
- pGC->planemask);
- break;
-
- default:
- if (pGC->pRotatedPixmap)
- ilbmTileAreaPPWGeneral(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->alu,
- pGC->pRotatedPixmap,
- pGC->planemask);
- else
- ilbmTileAreaGeneral(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->alu,
- pGC->tile.pixmap, pGC->patOrg.x,
- pGC->patOrg.y, pGC->planemask);
- break;
- } /* switch (alu) */
- break;
-
- case FillStippled:
- if (pGC->pRotatedPixmap)
- ilbmStippleAreaPPW(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->pRotatedPixmap, rrops);
- else
- ilbmStippleArea(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->stipple, pGC->patOrg.x,
- pGC->patOrg.y, rrops);
- break;
-
- case FillOpaqueStippled:
- switch (pGC->alu) {
- case GXcopy:
- if (pGC->pRotatedPixmap)
- ilbmOpaqueStippleAreaPPWCopy(pDrawable,
- pboxClipped-pboxClippedBase,
- pboxClippedBase, GXcopy,
- pGC->pRotatedPixmap, rropsOS,
- pGC->planemask);
- else
- ilbmOpaqueStippleAreaCopy(pDrawable,
- pboxClipped-pboxClippedBase,
- pboxClippedBase, GXcopy,
- pGC->stipple, pGC->patOrg.x,
- pGC->patOrg.y, rropsOS,
- pGC->planemask);
- break;
-
- default:
- if (pGC->pRotatedPixmap)
- ilbmOpaqueStippleAreaPPWGeneral(pDrawable,
- pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->alu,
- pGC->pRotatedPixmap,
- rropsOS, pGC->planemask);
- else
- ilbmOpaqueStippleAreaGeneral(pDrawable,
- pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->alu,
- pGC->stipple, pGC->patOrg.x,
- pGC->patOrg.y, rropsOS,
- pGC->planemask);
- break;
- } /* switch (alu) */
- break;
- }
- }
- if (pboxClippedBase != stackRects)
- DEALLOCATE_LOCAL(pboxClippedBase);
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmfillsp.c b/nx-X11/programs/Xserver/ilbm/ilbmfillsp.c
deleted file mode 100644
index 321154330..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmfillsp.c
+++ /dev/null
@@ -1,1149 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmfillsp.c,v 3.0 1996/08/18 01:53:50 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmfillsp.c,v 5.13 94/04/17 20:28:21 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "ilbm.h"
-#include "maskbits.h"
-
-#include "mergerop.h"
-
-#include "servermd.h"
-#include "mi.h"
-#include "mispans.h"
-
-/* scanline filling for monochrome frame buffer
- written by drewry, oct 1986
-
- these routines all clip. they assume that anything that has called
-them has already translated the points (i.e. pGC->miTranslate is
-non-zero, which is howit gets set in ilbmCreateGC().)
-
- the number of new scnalines created by clipping ==
-MaxRectsPerBand * nSpans.
-
-*/
-
-
-void
-ilbmSolidFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl;/* pointer to current longword in bitmap */
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int depthDst;
- int auxDst;
- int d;
- unsigned char *rrops;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
- rrops = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rrops;
- while (n--) {
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
-
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (*pwidth) {
- addrl = addrlBase;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- /* all bits inside same longword */
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl &= ~startmask;
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ &= ~startmask;
- Duff (nlmiddle, *addrl++ = 0x0);
- if (endmask)
- *addrl &= ~endmask;
- }
- break;
-
- case RROP_WHITE:
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- /* all bits inside same longword */
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl |= startmask;
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ |= startmask;
- Duff (nlmiddle, *addrl++ = ~0);
- if (endmask)
- *addrl |= endmask;
- }
- break;
- case RROP_INVERT:
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- /* all bits inside same longword */
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl ^= startmask;
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ ^= startmask;
- Duff (nlmiddle, *addrl++ ^= ~0);
- if (endmask)
- *addrl ^= endmask;
- }
- break;
- case RROP_NOP:
- break;
- }
- }
- }
- pwidth++;
- ppt++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-void
-ilbmStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl;/* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pStipple;
- PixelType *psrc;
- int tileHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int d;
- int depthDst;
- int auxDst;
- unsigned char *rrops;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
-
- pStipple = pGC->pRotatedPixmap;
- tileHeight = pStipple->drawable.height;
- psrc = (PixelType *)(pStipple->devPrivate.ptr);
-
- rrops = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rrops;
-
- while (n--) {
- src = psrc[ppt->y % tileHeight];
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- addrl = addrlBase;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- /* all bits inside same longword */
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl &= ~(src & startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ &= ~(src & startmask);
- Duff (nlmiddle, *addrl++ &= ~src);
- if (endmask)
- *addrl &= ~(src & endmask);
- }
- break;
- case RROP_WHITE:
- /* all bits inside same longword */
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl |= (src & startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ |= (src & startmask);
- Duff (nlmiddle, *addrl++ |= src);
- if (endmask)
- *addrl |= (src & endmask);
- }
- break;
- case RROP_INVERT:
- /* all bits inside same longword */
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl ^= (src & startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ ^= (src & startmask);
- Duff (nlmiddle, *addrl++ ^= src);
- if (endmask)
- *addrl ^= (src & endmask);
- }
- break;
-
- case RROP_NOP:
- break;
- }
- }
- pwidth++;
- ppt++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-void
-ilbmTileFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl; /* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pTile;
- PixelType *psrc;
- int tileHeight;
- int rop;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int auxDst;
- int depthDst;
- int d;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
-
- pTile = pGC->pRotatedPixmap;
- tileHeight = pTile->drawable.height;
- psrc = (PixelType *)(pTile->devPrivate.ptr);
- rop = pGC->alu;
-
- switch (rop) {
- case GXcopy:
-#define DoMaskCopyRop(src,dst,mask) ((dst) & ~(mask) | (src) & (mask))
- while (n--) {
- if (*pwidth) {
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
-
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(pGC->planemask & (1 << d)))
- continue;
-
- addrl = addrlBase;
- src = psrc[ppt->y % tileHeight + tileHeight * d];
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl = DoMaskCopyRop (src, *addrl, startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask) {
- *addrl = DoMaskCopyRop (src, *addrl, startmask);
- addrl++;
- }
- while (nlmiddle--) {
- *addrl = src;
- addrl++;
- }
- if (endmask)
- *addrl = DoMaskCopyRop (src, *addrl, endmask);
- }
- }
- }
- pwidth++;
- ppt++;
- }
- break;
-
- default:
- {
- register DeclareMergeRop ();
-
- InitializeMergeRop(rop,~0);
- while (n--) {
- if (*pwidth) {
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(pGC->planemask & (1 << d)))
- continue;
-
- addrl = addrlBase;
-
- src = psrc[ppt->y % tileHeight + tileHeight * d];
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl = DoMaskMergeRop (src, *addrl, startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask) {
- *addrl = DoMaskMergeRop (src, *addrl, startmask);
- addrl++;
- }
- while (nlmiddle--) {
- *addrl = DoMergeRop (src, *addrl);
- addrl++;
- }
- if (endmask)
- *addrl = DoMaskMergeRop (src, *addrl, endmask);
- }
- }
- }
- pwidth++;
- ppt++;
- }
- break;
- }
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-void
-ilbmOpaqueStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl; /* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pTile;
- PixelType *psrc;
- int tileHeight;
- int rop;
- unsigned char *rropsOS;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int auxDst;
- int depthDst;
- int d;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
-
- pTile = pGC->pRotatedPixmap;
- tileHeight = pTile->drawable.height;
- psrc = (PixelType *)(pTile->devPrivate.ptr);
- rop = pGC->alu;
- rropsOS = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rropOS;
-
- switch (rop) {
- case GXcopy:
-#define DoMaskCopyRop(src,dst,mask) ((dst) & ~(mask) | (src) & (mask))
- while (n--) {
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
- if (*pwidth) {
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- switch (rropsOS[d]) {
- case RROP_BLACK:
- src = 0;
- break;
- case RROP_WHITE:
- src = ~0;
- break;
- case RROP_INVERT:
- src = ~psrc[ppt->y % tileHeight];
- break;
- case RROP_COPY:
- src = psrc[ppt->y % tileHeight];
- break;
- case RROP_NOP:
- continue;
- }
-
- addrl = addrlBase;
-
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl = DoMaskCopyRop (src, *addrl, startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask) {
- *addrl = DoMaskCopyRop (src, *addrl, startmask);
- addrl++;
- }
- while (nlmiddle--) {
- *addrl = src;
- addrl++;
- }
- if (endmask)
- *addrl = DoMaskCopyRop (src, *addrl, endmask);
- }
- } /* for (d = ...) */
- }
-
- pwidth++;
- ppt++;
- }
- break;
-
- default:
- {
- register DeclareMergeRop ();
-
- InitializeMergeRop(rop,~0);
- while (n--) {
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
- if (*pwidth) {
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- switch (rropsOS[d]) {
- case RROP_BLACK:
- src = 0;
- break;
- case RROP_WHITE:
- src = ~0;
- break;
- case RROP_INVERT:
- src = ~psrc[ppt->y % tileHeight];
- break;
- case RROP_COPY:
- src = psrc[ppt->y % tileHeight];
- break;
- case RROP_NOP:
- continue;
- }
-
- addrl = addrlBase;
-
- if ( ((ppt->x & PIM) + *pwidth) < PPW) {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl = DoMaskMergeRop (src, *addrl, startmask);
- } else {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask) {
- *addrl = DoMaskMergeRop (src, *addrl, startmask);
- addrl++;
- }
- while (nlmiddle--) {
- *addrl = DoMergeRop (src, *addrl);
- addrl++;
- }
- if (endmask)
- *addrl = DoMaskMergeRop (src, *addrl, endmask);
- }
- } /* for (d = ...) */
- }
- pwidth++;
- ppt++;
- } /* while (n) */
- break;
- }
- } /* switch (rop) */
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-/* Fill spans with tiles that aren't PPW bits wide */
-void
-ilbmUnnaturalTileFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- int iline; /* first line of tile to use */
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *pdst;/* pointer to current word in bitmap */
- register PixelType *psrc;/* pointer to current word in tile */
- register int nlMiddle;
- register int rop, nstart;
- PixelType startmask;
- PixmapPtr pTile; /* pointer to tile we want to fill with */
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- PixelType endmask, *psrcT;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int auxDst;
- int sizeTile;
- int depthDst;
- register int d;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- pTile = pGC->tile.pixmap;
- tlwidth = pTile->devKind/PGSZB;
- rop = pGC->alu;
-
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
- sizeTile = tlwidth * tileHeight;
-
- /* this replaces rotating the tile. Instead we just adjust the offset
- * at which we start grabbing bits from the tile.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and rem always stay within the tile bounds.
- */
- xSrc += (pGC->patOrg.x % tileWidth) - tileWidth;
- ySrc += (pGC->patOrg.y % tileHeight) - tileHeight;
-
- while (n--) {
- iline = (ppt->y - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
-
- for (d = 0; d < depthDst; d++, psrcT += sizeTile, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(pGC->planemask & (1 << d)))
- continue;
-
- if (*pwidth) {
- x = ppt->x;
- pdst = addrlBase;
- width = *pwidth;
- while (width > 0) {
- psrc = psrcT;
- w = min(tileWidth, width);
- if ((rem = (x - xSrc) % tileWidth) != 0) {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
- getandputrop((psrc+endinc), (rem&PIM), (x & PIM), w, pdst, rop);
- if ((x & PIM) + w >= PPW)
- pdst++;
- } else if (((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- putbitsrop(*psrc, x & PIM, w, pdst, rop);
- } else {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if (startmask) {
- putbitsrop(*psrc, (x & PIM), nstart, pdst, rop);
- pdst++;
- if (srcStartOver)
- psrc++;
- }
-
- while (nlMiddle--) {
- getandputrop0(psrc, nstart, PPW, pdst, rop);
- pdst++;
- psrc++;
- }
- if (endmask) {
- getandputrop0(psrc, nstart, nend, pdst, rop);
- }
- }
- x += w;
- width -= w;
- }
- }
- }
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-/* Fill spans with stipples that aren't PPW bits wide */
-void
-ilbmUnnaturalStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- int iline; /* first line of tile to use */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *pdst; /* pointer to current word in bitmap */
- register PixelType *psrc; /* pointer to current word in tile */
- register int nlMiddle;
- register int rop, nstart;
- PixelType startmask;
- PixmapPtr pTile; /* pointer to tile we want to fill with */
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- PixelType endmask, *psrcT;
- int tlwidth, rem, tileWidth, endinc;
- int tileHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- unsigned char *rrops;
- register int d;
- int auxDst;
- int depthDst;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- pTile = pGC->stipple;
- tlwidth = pTile->devKind/PGSZB;
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
- rrops = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rrops;
-
- /* this replaces rotating the stipple. Instead, we just adjust the offset
- * at which we start grabbing bits from the stipple.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and rem always stay within the tile bounds.
- */
- xSrc += (pGC->patOrg.x % tileWidth) - tileWidth;
- ySrc += (pGC->patOrg.y % tileHeight) - tileHeight;
- while (n--) {
- iline = (ppt->y - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
-
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- rop = rrops[d];
- if (rop == RROP_NOP)
- continue;
-
- pdst = addrlBase;
- x = ppt->x;
-
- if (*pwidth) {
- width = *pwidth;
- while (width > 0) {
- psrc = psrcT;
- w = min(tileWidth, width);
- if ((rem = (x - xSrc) % tileWidth) != 0) {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
- getandputrrop((psrc + endinc), (rem & PIM), (x & PIM),
- w, pdst, rop)
- if ((x & PIM) + w >= PPW)
- pdst++;
- } else if (((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- putbitsrrop(*psrc, x & PIM, w, pdst, rop);
- } else {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if (startmask) {
- putbitsrrop(*psrc, (x & PIM), nstart, pdst, rop);
- pdst++;
- if (srcStartOver)
- psrc++;
- }
-
- while (nlMiddle--) {
- getandputrrop0(psrc, nstart, PPW, pdst, rop);
- pdst++;
- psrc++;
- }
- if (endmask) {
- getandputrrop0(psrc, nstart, nend, pdst, rop);
- }
- }
- x += w;
- width -= w;
- }
- }
- }
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-/* Fill spans with OpaqueStipples that aren't PPW bits wide */
-void
-ilbmUnnaturalOpaqueStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- int iline; /* first line of tile to use */
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- PixelType *pBase;
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *pdst;/* pointer to current word in bitmap */
- register PixelType *psrc;/* pointer to current word in tile */
- register int nlMiddle;
- register int d;
- register PixelType tmpsrc;
- register PixelType tmpdst;
- register int alu, nstart;
- register unsigned char *rropsOS;
- PixelType startmask;
- PixmapPtr pTile; /* pointer to tile we want to fill with */
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- PixelType endmask, *psrcT;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int auxDst;
- int sizeTile;
- int depthDst;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- pTile = pGC->stipple;
- tlwidth = pTile->devKind/PGSZB;
- alu = pGC->alu;
-
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
- rropsOS = ilbmGetGCPrivate(pGC)->rropOS;
-
- /* this replaces rotating the tile. Instead we just adjust the offset
- * at which we start grabbing bits from the tile.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and rem always stay within the tile bounds.
- */
- xSrc += (pGC->patOrg.x % tileWidth) - tileWidth;
- ySrc += (pGC->patOrg.y % tileHeight) - tileHeight;
-
- while (n--) {
- iline = (ppt->y - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
-
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(pGC->planemask & (1 << d)))
- continue;
-
- if (*pwidth) {
- x = ppt->x;
- pdst = addrlBase;
- width = *pwidth;
- while (width > 0) {
- psrc = psrcT;
- w = min(tileWidth, width);
- if ((rem = (x - xSrc) % tileWidth) != 0) {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
-
- case RROP_COPY:
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
- break;
-
- case RROP_INVERT:
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
-
- if (alu != GXcopy) {
- getbits (pdst, (x & PIM), w, tmpdst);
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
-
- putbits (tmpsrc, (x & PIM), w, pdst);
- if ((x & PIM) + w >= PPW)
- pdst++;
- } else if (((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- tmpsrc = *psrc;
- break;
- case RROP_INVERT:
- tmpsrc = ~*psrc;
- break;
- }
- if (alu != GXcopy) {
- getbits (pdst, (x & PIM), w, tmpdst);
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
- putbits (tmpsrc, (x & PIM), w, pdst);
- } else {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if (startmask) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- tmpsrc = *psrc;
- break;
- case RROP_INVERT:
- tmpsrc = ~*psrc;
- break;
- }
- if (alu != GXcopy) {
- getbits (pdst, (x & PIM), nstart, tmpdst);
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
- putbits (tmpsrc, (x & PIM), nstart, pdst);
- pdst++;
- if (srcStartOver)
- psrc++;
- }
-
- while (nlMiddle--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- getbits (psrc, nstart, PPW, tmpsrc);
- break;
- case RROP_INVERT:
- getbits (psrc, nstart, PPW, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
- if (alu != GXcopy) {
- tmpdst = *pdst;
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
- *pdst++ = tmpsrc;
- /*putbits (tmpsrc, 0, PPW, pdst);
- pdst++;*/
- psrc++;
- }
- if (endmask) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
-
- case RROP_COPY:
- getbits (psrc, nstart, nend, tmpsrc);
- break;
-
- case RROP_INVERT:
- getbits (psrc, nstart, nend, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
- if (alu != GXcopy) {
- tmpdst = *pdst;
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
- putbits (tmpsrc, 0, nend, pdst);
- }
- }
- x += w;
- width -= w;
- }
- }
- }
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmfont.c b/nx-X11/programs/Xserver/ilbm/ilbmfont.c
deleted file mode 100644
index 84ef8e5d1..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmfont.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/* $XFree86$ */
-/*
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-*/
-/* $XConsortium: ilbmfont.c,v 1.18 94/04/17 20:28:22 keith Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ilbm.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "scrnintstr.h"
-
-/*ARGSUSED*/
-Bool
-ilbmRealizeFont( pscr, pFont)
- ScreenPtr pscr;
- FontPtr pFont;
-{
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-ilbmUnrealizeFont( pscr, pFont)
- ScreenPtr pscr;
- FontPtr pFont;
-{
- return (TRUE);
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmgc.c b/nx-X11/programs/Xserver/ilbm/ilbmgc.c
deleted file mode 100644
index f87f1fc9c..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmgc.c
+++ /dev/null
@@ -1,715 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmgc.c,v 3.0 1996/08/18 01:53:52 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmgc.c,v 5.35 94/04/17 20:28:23 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ilbm.h"
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "region.h"
-
-#include "mistruct.h"
-#include "migc.h"
-
-#include "maskbits.h"
-
-static GCFuncs ilbmFuncs = {
- ilbmValidateGC,
- miChangeGC,
- miCopyGC,
- ilbmDestroyGC,
- miChangeClip,
- miDestroyClip,
- miCopyClip
-};
-
-static GCOps ilbmGCOps = {
- ilbmSolidFS,
- ilbmSetSpans,
- ilbmPutImage,
- ilbmCopyArea,
- miCopyPlane,
- ilbmPolyPoint,
- ilbmLineSS,
- ilbmSegmentSS,
- miPolyRectangle,
- ilbmZeroPolyArcSS,
- ilbmFillPolygonSolid,
- ilbmPolyFillRect,
- ilbmPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- ilbmTEGlyphBlt,
- ilbmPolyGlyphBlt,
- ilbmPushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-
-Bool
-ilbmCreateGC(pGC)
- register GCPtr pGC;
-{
- ilbmPrivGC *pPriv;
-
- pGC->clientClip = NULL;
- pGC->clientClipType = CT_NONE;
-
- /* some of the output primitives aren't really necessary, since
- they will be filled in ValidateGC because of dix/CreateGC()
- setting all the change bits. Others are necessary because although
- they depend on being a monochrome frame buffer, they don't change
- */
-
- pGC->ops = &ilbmGCOps;
- pGC->funcs = &ilbmFuncs;
-
- /* ilbm wants to translate before scan convesion */
- pGC->miTranslate = 1;
-
- pPriv = (ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr);
- ilbmReduceRop(pGC->alu, pGC->fgPixel, pGC->planemask, pGC->depth,
- pPriv->rrops);
- ilbmReduceOpaqueStipple(pGC->fgPixel, pGC->bgPixel, pGC->planemask,
- pGC->depth, pPriv->rropOS);
-
- pGC->fExpose = TRUE;
- pGC->pRotatedPixmap = NullPixmap;
- pGC->freeCompClip = FALSE;
- return TRUE;
-}
-
-/* Clipping conventions
- if the drawable is a window
- CT_REGION ==> pCompositeClip really is the composite
- CT_other ==> pCompositeClip is the window clip region
- if the drawable is a pixmap
- CT_REGION ==> pCompositeClip is the translated client region
- clipped to the pixmap boundary
- CT_other ==> pCompositeClip is the pixmap bounding box
-*/
-
-/*ARGSUSED*/
-void
-ilbmValidateGC(pGC, changes, pDrawable)
- register GCPtr pGC;
- unsigned long changes;
- DrawablePtr pDrawable;
-{
- register ilbmPrivGCPtr devPriv;
- int mask; /* stateChanges */
- int index; /* used for stepping through bitfields */
- int xrot, yrot; /* rotations for tile and stipple pattern */
- int rrop; /* reduced rasterop */
- /* flags for changing the proc vector
- and updating things in devPriv
- */
- int new_rotate, new_rrop, new_line, new_text, new_fill;
- DDXPointRec oldOrg; /* origin of thing GC was last used with */
-
- oldOrg = pGC->lastWinOrg;
-
- pGC->lastWinOrg.x = pDrawable->x;
- pGC->lastWinOrg.y = pDrawable->y;
-
- /* we need to re-rotate the tile if the previous window/pixmap
- origin (oldOrg) differs from the new window/pixmap origin
- (pGC->lastWinOrg)
- */
- new_rotate = (oldOrg.x != pGC->lastWinOrg.x) ||
- (oldOrg.y != pGC->lastWinOrg.y);
-
-
- devPriv = ((ilbmPrivGCPtr)(pGC->devPrivates[ilbmGCPrivateIndex].ptr));
-
-
- /*
- if the client clip is different or moved OR
- the subwindowMode has changed OR
- the window's clip has changed since the last validation
- we need to recompute the composite clip
- */
- if ((changes & (GCClipXOrigin|GCClipYOrigin|GCClipMask|GCSubwindowMode)) ||
- (pDrawable->serialNumber != (pGC->serialNumber & DRAWABLE_SERIAL_BITS)))
- ilbmComputeCompositeClip(pGC, pDrawable);
-
- new_rrop = FALSE;
- new_line = FALSE;
- new_text = FALSE;
- new_fill = FALSE;
-
- mask = changes;
- while (mask) {
- index = lowbit(mask);
- mask &= ~index;
-
- /* this switch acculmulates a list of which procedures
- might have to change due to changes in the GC. in
- some cases (e.g. changing one 16 bit tile for another)
- we might not really need a change, but the code is
- being paranoid.
- this sort of batching wins if, for example, the alu
- and the font have been changed, or any other pair
- of items that both change the same thing.
- */
- switch (index) {
- case GCPlaneMask:
- case GCFunction:
- case GCForeground:
- new_rrop = TRUE;
- break;
- case GCBackground:
- new_rrop = TRUE; /* for opaque stipples */
- break;
- case GCLineStyle:
- case GCLineWidth:
- case GCJoinStyle:
- new_line = TRUE;
- break;
- case GCCapStyle:
- break;
- case GCFillStyle:
- new_fill = TRUE;
- break;
- case GCFillRule:
- break;
- case GCTile:
- if (pGC->tileIsPixel)
- break;
- new_rotate = TRUE;
- new_fill = TRUE;
- break;
-
- case GCStipple:
- if (pGC->stipple == (PixmapPtr)NULL)
- break;
- new_rotate = TRUE;
- new_fill = TRUE;
- break;
-
- case GCTileStipXOrigin:
- new_rotate = TRUE;
- break;
-
- case GCTileStipYOrigin:
- new_rotate = TRUE;
- break;
-
- case GCFont:
- new_text = TRUE;
- break;
- case GCSubwindowMode:
- break;
- case GCGraphicsExposures:
- break;
- case GCClipXOrigin:
- break;
- case GCClipYOrigin:
- break;
- case GCClipMask:
- break;
- case GCDashOffset:
- break;
- case GCDashList:
- break;
- case GCArcMode:
- break;
- default:
- break;
- }
- }
-
- /* deal with the changes we've collected .
- new_rrop must be done first because subsequent things
- depend on it.
- */
-
- if (new_rotate || new_fill) {
- Bool new_pix = FALSE;
-
- /* figure out how much to rotate */
- xrot = pGC->patOrg.x;
- yrot = pGC->patOrg.y;
- xrot += pDrawable->x;
- yrot += pDrawable->y;
-
- switch (pGC->fillStyle) {
- case FillTiled:
- /* copy current tile and stipple */
- if (!pGC->tileIsPixel &&
- (pGC->tile.pixmap->drawable.width <= PPW) &&
- !(pGC->tile.pixmap->drawable.width &
- (pGC->tile.pixmap->drawable.width - 1))) {
- ilbmCopyRotatePixmap(pGC->tile.pixmap, &pGC->pRotatedPixmap,
- xrot, yrot);
- new_pix = TRUE;
- }
- break;
- case FillStippled:
- case FillOpaqueStippled:
- if (pGC->stipple && (pGC->stipple->drawable.width <= PPW) &&
- !(pGC->stipple->drawable.width &
- (pGC->stipple->drawable.width - 1))) {
- ilbmCopyRotatePixmap(pGC->stipple, &pGC->pRotatedPixmap,
- xrot, yrot);
- new_pix = TRUE;
- }
- }
- /* destroy any previously rotated tile or stipple */
- if (!new_pix && pGC->pRotatedPixmap) {
- (*pDrawable->pScreen->DestroyPixmap)(pGC->pRotatedPixmap);
- pGC->pRotatedPixmap = (PixmapPtr)NULL;
- }
- }
-
- /*
- * duck out here when the GC is unchanged
- */
-
- if (!changes)
- return;
-
- if (new_rrop || new_fill) {
- ilbmReduceRop(pGC->alu, pGC->fgPixel, pGC->planemask, pDrawable->depth,
- devPriv->rrops);
- ilbmReduceOpaqueStipple(pGC->fgPixel, pGC->bgPixel, pGC->planemask,
- pGC->depth, devPriv->rropOS);
- new_fill = TRUE;
- }
-
- if (new_line || new_fill || new_text) {
- if (!pGC->ops->devPrivate.val) {
- pGC->ops = miCreateGCOps(pGC->ops);
- pGC->ops->devPrivate.val = 1;
- }
- }
-
- if (new_line || new_fill) {
- if (pGC->lineWidth == 0) {
- if (pGC->lineStyle == LineSolid && pGC->fillStyle == FillSolid)
- pGC->ops->PolyArc = ilbmZeroPolyArcSS;
- else
- pGC->ops->PolyArc = miZeroPolyArc;
- } else
- pGC->ops->PolyArc = miPolyArc;
- if (pGC->lineStyle == LineSolid) {
- if (pGC->lineWidth == 0) {
- if (pGC->fillStyle == FillSolid) {
- pGC->ops->PolySegment = ilbmSegmentSS;
- pGC->ops->Polylines = ilbmLineSS;
- } else {
- pGC->ops->PolySegment = miPolySegment;
- pGC->ops->Polylines = miZeroLine;
- }
- } else {
- pGC->ops->PolySegment = miPolySegment;
- pGC->ops->Polylines = miWideLine;
- }
- } else {
- if (pGC->lineWidth == 0 && pGC->fillStyle == FillSolid) {
- pGC->ops->PolySegment = ilbmSegmentSD;
- pGC->ops->Polylines = ilbmLineSD;
- } else {
- pGC->ops->PolySegment = miPolySegment;
- pGC->ops->Polylines = miWideDash;
- }
- }
- }
-
- if (new_text || new_fill) {
- if ((pGC->font) &&
- (FONTMAXBOUNDS(pGC->font,rightSideBearing) -
- FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 ||
- FONTMINBOUNDS(pGC->font,characterWidth) < 0)) {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- pGC->ops->ImageGlyphBlt = miImageGlyphBlt;
- } else {
- /* special case ImageGlyphBlt for terminal emulator fonts */
- if ((pGC->font) &&
- TERMINALFONT(pGC->font)) {
- pGC->ops->ImageGlyphBlt = ilbmTEGlyphBlt;
- } else {
- pGC->ops->ImageGlyphBlt = ilbmImageGlyphBlt;
- }
-
- /* now do PolyGlyphBlt */
- if (pGC->fillStyle == FillSolid) {
- pGC->ops->PolyGlyphBlt = ilbmPolyGlyphBlt;
- } else {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- }
- }
- }
-
- if (new_fill) {
- /* install a suitable fillspans and pushpixels */
- pGC->ops->PushPixels = ilbmPushPixels;
- pGC->ops->FillPolygon = miFillPolygon;
- pGC->ops->PolyFillArc = miPolyFillArc;
-
- switch (pGC->fillStyle) {
- case FillSolid:
- pGC->ops->FillSpans = ilbmSolidFS;
- pGC->ops->FillPolygon = ilbmFillPolygonSolid;
- pGC->ops->PolyFillArc = ilbmPolyFillArcSolid;
- break;
- case FillTiled:
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = ilbmTileFS;
- else
- pGC->ops->FillSpans = ilbmUnnaturalTileFS;
- break;
- case FillOpaqueStippled:
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = ilbmOpaqueStippleFS;
- else
- pGC->ops->FillSpans = ilbmUnnaturalOpaqueStippleFS;
- break;
-
- case FillStippled:
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = ilbmStippleFS;
- else
- pGC->ops->FillSpans = ilbmUnnaturalStippleFS;
- break;
- }
- } /* end of new_fill */
-}
-
-void
-ilbmDestroyGC(pGC)
- GCPtr pGC;
-{
- if (pGC->pRotatedPixmap)
- (*pGC->pScreen->DestroyPixmap)(pGC->pRotatedPixmap);
- if (pGC->freeCompClip)
- REGION_DESTROY(pGC->pScreen, pGC->pCompositeClip);
- miDestroyGCOps(pGC->ops);
-}
-
-/* table to map alu(src, dst) to alu(~src, dst) */
-int ilbmInverseAlu[16] = {
- GXclear,
- GXandInverted,
- GXnor,
- GXcopyInverted,
- GXand,
- GXnoop,
- GXequiv,
- GXorInverted,
- GXandReverse,
- GXxor,
- GXinvert,
- GXnand,
- GXcopy,
- GXor,
- GXorReverse,
- GXset
-};
-
-void
-ilbmReduceOpaqueStipple(fg, bg, planemask, depth, rop)
-register PixelType fg;
-register PixelType bg;
-register unsigned long planemask;
-int depth;
-register unsigned char *rop;
-{
- register int d;
- register Pixel mask = 1;
-
- bg ^= fg;
-
- for (d = 0; d < depth; d++, mask <<= 1) {
- if (!(planemask & mask))
- rop[d] = RROP_NOP;
- else if (!(bg & mask)) {
- /* Both fg and bg have a 0 or 1 in this plane */
- if (fg & mask)
- rop[d] = RROP_WHITE;
- else
- rop[d] = RROP_BLACK;
- } else {
- /* Both fg and bg have different bits on this plane */
- if (fg & mask)
- rop[d] = RROP_COPY;
- else
- rop[d] = RROP_INVERT;
- }
- }
-}
-
-void
-ilbmReduceRop(alu, src, planemask, depth, rop)
- register int alu;
- register Pixel src;
- register unsigned long planemask;
- int depth;
- register unsigned char *rop;
-{
- register int d;
- register Pixel mask = 1;
-
- for (d = 0; d < depth; d++, mask <<= 1) {
- if (!(planemask & mask))
- rop[d] = RROP_NOP;
- else if ((src & mask) == 0) /* src is black */
- switch (alu) {
- case GXclear:
- rop[d] = RROP_BLACK;
- break;
- case GXand:
- rop[d] = RROP_BLACK;
- break;
- case GXandReverse:
- rop[d] = RROP_BLACK;
- break;
- case GXcopy:
- rop[d] = RROP_BLACK;
- break;
- case GXandInverted:
- rop[d] = RROP_NOP;
- break;
- case GXnoop:
- rop[d] = RROP_NOP;
- break;
- case GXxor:
- rop[d] = RROP_NOP;
- break;
- case GXor:
- rop[d] = RROP_NOP;
- break;
- case GXnor:
- rop[d] = RROP_INVERT;
- break;
- case GXequiv:
- rop[d] = RROP_INVERT;
- break;
- case GXinvert:
- rop[d] = RROP_INVERT;
- break;
- case GXorReverse:
- rop[d] = RROP_INVERT;
- break;
- case GXcopyInverted:
- rop[d] = RROP_WHITE;
- break;
- case GXorInverted:
- rop[d] = RROP_WHITE;
- break;
- case GXnand:
- rop[d] = RROP_WHITE;
- break;
- case GXset:
- rop[d] = RROP_WHITE;
- break;
- }
- else /* src is white */
- switch (alu) {
- case GXclear:
- rop[d] = RROP_BLACK;
- break;
- case GXand:
- rop[d] = RROP_NOP;
- break;
- case GXandReverse:
- rop[d] = RROP_INVERT;
- break;
- case GXcopy:
- rop[d] = RROP_WHITE;
- break;
- case GXandInverted:
- rop[d] = RROP_BLACK;
- break;
- case GXnoop:
- rop[d] = RROP_NOP;
- break;
- case GXxor:
- rop[d] = RROP_INVERT;
- break;
- case GXor:
- rop[d] = RROP_WHITE;
- break;
- case GXnor:
- rop[d] = RROP_BLACK;
- break;
- case GXequiv:
- rop[d] = RROP_NOP;
- break;
- case GXinvert:
- rop[d] = RROP_INVERT;
- break;
- case GXorReverse:
- rop[d] = RROP_WHITE;
- break;
- case GXcopyInverted:
- rop[d] = RROP_BLACK;
- break;
- case GXorInverted:
- rop[d] = RROP_NOP;
- break;
- case GXnand:
- rop[d] = RROP_INVERT;
- break;
- case GXset:
- rop[d] = RROP_WHITE;
- break;
- }
- }
-}
-
-void
-ilbmComputeCompositeClip(pGC, pDrawable)
- GCPtr pGC;
- DrawablePtr pDrawable;
-{
- ScreenPtr pScreen = pGC->pScreen;
-
- if (pDrawable->type == DRAWABLE_WINDOW) {
- WindowPtr pWin = (WindowPtr) pDrawable;
- RegionPtr pregWin;
- Bool freeTmpClip, freeCompClip;
-
- if (pGC->subWindowMode == IncludeInferiors) {
- pregWin = NotClippedByChildren(pWin);
- freeTmpClip = TRUE;
- } else {
- pregWin = &pWin->clipList;
- freeTmpClip = FALSE;
- }
- freeCompClip = pGC->freeCompClip;
-
- /*
- * if there is no client clip, we can get by with just keeping the
- * pointer we got, and remembering whether or not should destroy (or
- * maybe re-use) it later. this way, we avoid unnecessary copying of
- * regions. (this wins especially if many clients clip by children
- * and have no client clip.)
- */
- if (pGC->clientClipType == CT_NONE) {
- if (freeCompClip)
- REGION_DESTROY(pScreen, pGC->pCompositeClip);
- pGC->pCompositeClip = pregWin;
- pGC->freeCompClip = freeTmpClip;
- } else {
- /*
- * we need one 'real' region to put into the composite clip. if
- * pregWin the current composite clip are real, we can get rid of
- * one. if pregWin is real and the current composite clip isn't,
- * use pregWin for the composite clip. if the current composite
- * clip is real and pregWin isn't, use the current composite
- * clip. if neither is real, create a new region.
- */
-
- REGION_TRANSLATE(pScreen, pGC->clientClip,
- pDrawable->x + pGC->clipOrg.x,
- pDrawable->y + pGC->clipOrg.y);
-
- if (freeCompClip) {
- REGION_INTERSECT(pGC->pScreen, pGC->pCompositeClip, pregWin,
- pGC->clientClip);
- if (freeTmpClip)
- REGION_DESTROY(pScreen, pregWin);
- } else if (freeTmpClip) {
- REGION_INTERSECT(pScreen, pregWin, pregWin, pGC->clientClip);
- pGC->pCompositeClip = pregWin;
- } else {
- pGC->pCompositeClip = REGION_CREATE(pScreen, NullBox, 0);
- REGION_INTERSECT(pScreen, pGC->pCompositeClip,
- pregWin, pGC->clientClip);
- }
- pGC->freeCompClip = TRUE;
- REGION_TRANSLATE(pScreen, pGC->clientClip,
- -(pDrawable->x + pGC->clipOrg.x),
- -(pDrawable->y + pGC->clipOrg.y));
- }
- } /* end of composite clip for a window */
- else {
- BoxRec pixbounds;
-
- /* XXX should we translate by drawable.x/y here ? */
- pixbounds.x1 = 0;
- pixbounds.y1 = 0;
- pixbounds.x2 = pDrawable->width;
- pixbounds.y2 = pDrawable->height;
-
- if (pGC->freeCompClip) {
- REGION_RESET(pScreen, pGC->pCompositeClip, &pixbounds);
- } else {
- pGC->freeCompClip = TRUE;
- pGC->pCompositeClip = REGION_CREATE(pScreen, &pixbounds, 1);
- }
-
- if (pGC->clientClipType == CT_REGION) {
- REGION_TRANSLATE(pScreen, pGC->pCompositeClip, -pGC->clipOrg.x,
- -pGC->clipOrg.y);
- REGION_INTERSECT(pScreen, pGC->pCompositeClip,
- pGC->pCompositeClip, pGC->clientClip);
- REGION_TRANSLATE(pScreen, pGC->pCompositeClip, pGC->clipOrg.x,
- pGC->clipOrg.y);
- }
- } /* end of composite clip for pixmap */
-} /* end ilbmComputeCompositeClip */
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmgetsp.c b/nx-X11/programs/Xserver/ilbm/ilbmgetsp.c
deleted file mode 100644
index 37b8d8537..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmgetsp.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/* $XFree86$ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmgetsp.c,v 5.10 94/04/17 20:28:24 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "misc.h"
-#include "region.h"
-#include "gc.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "ilbm.h"
-#include "maskbits.h"
-
-#include "servermd.h"
-
-/* GetSpans -- for each span, gets bits from drawable starting at ppt[i]
- * and continuing for pwidth[i] bits
- * Each scanline returned will be server scanline padded, i.e., it will come
- * out to an integral number of words.
- */
-/*ARGSUSED*/
-void
-ilbmGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pchardstStart)
- DrawablePtr pDrawable; /* drawable from which to get bits */
- int wMax; /* largest value of all *pwidths */
- register DDXPointPtr ppt; /* points to start copying from */
- int *pwidth; /* list of number of bits to copy */
- int nspans; /* number of scanlines to copy */
- char *pchardstStart; /* where to put the bits */
-{
- PixelType *pdstStart = (PixelType *)pchardstStart;
- register PixelType *pdst; /* where to put the bits */
- register PixelType *psrc; /* where to get the bits */
- register PixelType tmpSrc; /* scratch buffer for bits */
- PixelType *psrcBase; /* start of src bitmap */
- int widthSrc; /* width of pixmap in bytes */
- int auxSrc;
- int depthSrc;
- register DDXPointPtr pptLast; /* one past last point to get */
- int xEnd; /* last pixel to copy from */
- register int nstart;
- register int d;
- int nend;
- int srcStartOver;
- PixelType startmask, endmask;
- unsigned int srcBit;
- int nlMiddle, nl;
- int w;
-
- pptLast = ppt + nspans;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, widthSrc, auxSrc, depthSrc,
- psrcBase);
- pdst = pdstStart;
-
- while (ppt < pptLast) {
- /* XXX should this really be << PWSH, or * 8, or * PGSZB? */
- xEnd = min(ppt->x + *pwidth, widthSrc << PWSH);
- pwidth++;
- for (d = 0; d < depthSrc; d++) {
- psrc = ilbmScanline(psrcBase, ppt->x, ppt->y, auxSrc);
- psrcBase += widthSrc; /* @@@ NEXT PLANE @@@ */
- w = xEnd - ppt->x;
- srcBit = ppt->x & PIM;
-
- if (srcBit + w <= PPW)
- {
- getandputbits0(psrc, srcBit, w, pdst);
- pdst++;
- }
- else
- {
-
- maskbits(ppt->x, w, startmask, endmask, nlMiddle);
- if (startmask)
- nstart = PPW - srcBit;
- else
- nstart = 0;
- if (endmask)
- nend = xEnd & PIM;
- srcStartOver = srcBit + nstart > PLST;
- if (startmask)
- {
- getandputbits0(psrc, srcBit, nstart, pdst);
- if (srcStartOver)
- psrc++;
- }
- nl = nlMiddle;
-#ifdef FASTPUTBITS
- Duff(nl, putbits(*psrc, nstart, PPW, pdst); psrc++; pdst++;);
-#else
- while (nl--)
- {
- tmpSrc = *psrc;
- putbits(tmpSrc, nstart, PPW, pdst);
- psrc++;
- pdst++;
- }
-#endif
- if (endmask)
- {
- putbits(*psrc, nstart, nend, pdst);
- if (nstart + nend > PPW)
- pdst++;
- }
- if (startmask || endmask)
- pdst++;
- }
- }
- ppt++;
- }
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmhrzvert.c b/nx-X11/programs/Xserver/ilbm/ilbmhrzvert.c
deleted file mode 100644
index 9612749cf..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmhrzvert.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/* $XFree86$ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmhrzvert.c,v 1.15 94/04/17 20:28:24 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gc.h"
-#include "window.h"
-#include "pixmap.h"
-#include "region.h"
-
-#include "ilbm.h"
-#include "maskbits.h"
-
-/* horizontal solid line
- abs(len) > 1
-*/
-ilbmHorzS(pbase, nlwidth, auxDst, depthDst, x1, y1, len, rrops)
-PixelType *pbase; /* pointer to base of bitmap */
-register int nlwidth; /* width in longwords of bitmap */
-int auxDst;
-int depthDst;
-int x1; /* initial point */
-int y1;
-int len; /* length of line */
-register unsigned char *rrops;
-{
- register PixelType *addrl;
- register PixelType startmask;
- register PixelType endmask;
- register int nlmiddle;
- register int d;
- int saveNLmiddle;
-
- /* force the line to go left to right
- but don't draw the last point
- */
- if (len < 0) {
- x1 += len;
- x1 += 1;
- len = -len;
- }
-
- /* all bits inside same longword */
- if ( ((x1 & PIM) + len) < PPW) {
- maskpartialbits(x1, len, startmask);
-
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(pbase, x1, y1, auxDst);
- pbase += nlwidth; /* @@@ NEXT PLANE @@@ */
-
- switch (rrops[d]) {
- case RROP_BLACK:
- *addrl &= ~startmask;
- break;
- case RROP_WHITE:
- *addrl |= startmask;
- break;
- case RROP_INVERT:
- *addrl ^= startmask;
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
- } else {
- maskbits(x1, len, startmask, endmask, nlmiddle);
- saveNLmiddle = nlmiddle;
-
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(pbase, x1, y1, auxDst);
- pbase += nlwidth; /* @@@ NEXT PLANE @@@ */
- nlmiddle = saveNLmiddle;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if (startmask)
- *addrl++ &= ~startmask;
- Duff (nlmiddle, *addrl++ = 0x0);
- if (endmask)
- *addrl &= ~endmask;
- break;
-
- case RROP_WHITE:
- if (startmask)
- *addrl++ |= startmask;
- Duff (nlmiddle, *addrl++ = ~0);
- if (endmask)
- *addrl |= endmask;
- break;
-
- case RROP_INVERT:
- if (startmask)
- *addrl++ ^= startmask;
- Duff (nlmiddle, *addrl++ ^= ~0);
- if (endmask)
- *addrl ^= endmask;
- break;
-
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ... ) */
- }
-}
-
-/* vertical solid line
- this uses do loops because pcc (Ultrix 1.2, bsd 4.2) generates
- better code. sigh. we know that len will never be 0 or 1, so
- it's OK to use it.
-*/
-
-ilbmVertS(pbase, nlwidth, auxDst, depthDst, x1, y1, len, rrops)
-PixelType *pbase; /* pointer to base of bitmap */
-register int nlwidth; /* width in longwords of bitmap */
-int auxDst;
-int depthDst;
-int x1, y1; /* initial point */
-register int len; /* length of line */
-unsigned char *rrops;
-{
- register PixelType *addrl;
- register PixelType bitmask;
- int saveLen;
- int d;
-
- if (len < 0) {
- auxDst = -auxDst;
- len = -len;
- }
-
- saveLen = len;
-
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(pbase, x1, y1, auxDst);
- pbase += nlwidth; /* @@@ NEXT PLANE @@@ */
- len = saveLen;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- bitmask = rmask[x1 & PIM];
- Duff(len, *addrl &= bitmask; ilbmScanlineInc(addrl, auxDst) );
- break;
-
- case RROP_WHITE:
- bitmask = mask[x1 & PIM];
- Duff(len, *addrl |= bitmask; ilbmScanlineInc(addrl, auxDst) );
- break;
-
- case RROP_INVERT:
- bitmask = mask[x1 & PIM];
- Duff(len, *addrl ^= bitmask; ilbmScanlineInc(addrl, auxDst) );
- break;
-
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmimage.c b/nx-X11/programs/Xserver/ilbm/ilbmimage.c
deleted file mode 100644
index ddb19ac6a..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmimage.c
+++ /dev/null
@@ -1,441 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmimage.c,v 3.0 1996/08/18 01:53:56 dawes Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#include <X11/X.h>
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "gcstruct.h"
-#include "ilbm.h"
-#include "maskbits.h"
-#include "servermd.h"
-
-void
-ilbmPutImage(pDraw, pGC, depth, x, y, width, height, leftPad, format, pImage)
- DrawablePtr pDraw;
- GCPtr pGC;
- int depth, x, y, width, height;
- int leftPad;
- int format;
- char *pImage;
-{
- PixmapPtr pPixmap;
-
-#if 1
- fprintf(stderr, "ilbmPutImage()\n");
- fprintf(stderr, "\tdepth = %d, x = %d, y = %d, width = %d, height = %d, "
- "leftPad = %d\n", depth, x, y, width, height, leftPad);
- switch (format) {
- case XYBitmap:
- fprintf(stderr, "\tformat = XYBitmap\n");
- break;
- case XYPixmap:
- fprintf(stderr, "\tformat = XYPixmap\n");
- break;
- case ZPixmap:
- fprintf(stderr, "\tformat = ZPixmap\n");
- break;
- default:
- fprintf(stderr, "\tformat = %d\n");
- break;
- }
-#endif
-
- if ((width == 0) || (height == 0))
- return;
-
- if (format != ZPixmap || depth == 1 || pDraw->depth == 1) {
- if (format == XYBitmap) {
- char *ptmp;
- int realwidth;
- int size;
- int aux;
- int d, yy, xx;
- char *ss, *dd;
-
- realwidth = BitmapBytePad(width+leftPad);
- aux = depth*realwidth;
- size = height*aux;
-
-#if 1
- fprintf(stderr, "\trealwidth = %d, aux = %d, size = %d\n", realwidth,
- aux, size);
-#endif
-
- if (!(ptmp = (char *)ALLOCATE_LOCAL(size)))
- return;
-
- /*
- * Convert from bitplanes to interleaved bitplanes
- */
-
- ss = (char *)pImage;
- for (d = 0; d < depth; d++) {
- dd = ptmp+d*realwidth;
- for (yy = 0; yy < height; yy++) {
- for (xx = 0; xx < realwidth; xx++)
-#if 1
- {
- fprintf(stderr, "*(%d) = *(%d)\n", (&dd[xx])-ptmp,
- ss-(char *)pImage);
-#endif
- dd[xx] = *(ss++);
-#if 1
- }
-#endif
- dd += aux;
- }
- }
-
- pPixmap = GetScratchPixmapHeader(pDraw->pScreen, width+leftPad, height,
- depth, depth,
- BitmapBytePad(width+leftPad),
- (pointer)ptmp);
- if (!pPixmap) {
- DEALLOCATE_LOCAL(ptmp);
- return;
- }
- pGC->fExpose = FALSE;
- (void)(*pGC->ops->CopyPlane)((DrawablePtr)pPixmap, pDraw, pGC, leftPad,
- 0, width, height, x, y, 1);
- DEALLOCATE_LOCAL(ptmp);
- } else {
-#if 0
- /* XXX: bit plane order wronge ! */
- pPixmap->drawable.depth = 1;
- pPixmap->drawable.bitsPerPixel = 1;
-
- switch (pGC->alu) {
- case GXcopy:
- doBitBlt = ilbmDoBitbltCopy;
- break;
- case GXxor:
- doBitBlt = ilbmDoBitbltXor;
- break;
- case GXcopyInverted:
- doBitBlt = ilbmDoBitbltCopyInverted;
- break;
- case GXor:
- doBitBlt = ilbmDoBitbltOr;
- break;
- default:
- doBitBlt = ilbmDoBitbltGeneral;
- break;
- }
-
- for (plane = (1L << (pPixmap->drawable.depth - 1)); plane;
- plane >>= 1) {
- (void)ilbmBitBlt((DrawablePtr)pPixmap, pDraw, pGC, leftPad, 0,
- width, height, x, y, doBitBlt, plane);
- /* pDraw->devKind += sizeDst; */
- }
-#else
- char *ptmp;
- int realwidth;
- int size;
- int aux;
- int d, yy, xx;
- char *ss, *dd;
-
- realwidth = BitmapBytePad(width+leftPad);
- aux = depth*realwidth;
- size = height*aux;
-
-#if 1
- fprintf(stderr, "\trealwidth = %d, aux = %d, size = %d\n", realwidth,
- aux, size);
-#endif
-
- if (!(ptmp = (char *)ALLOCATE_LOCAL(size)))
- return;
-
- /*
- * Convert from bitplanes to interleaved bitplanes
- */
-
- ss = (char *)pImage;
- for (d = 0; d < depth; d++) {
- dd = ptmp+d*realwidth;
- for (yy = 0; yy < height; yy++) {
- for (xx = 0; xx < realwidth; xx++)
-#if 1
- {
- fprintf(stderr, "*(%d) = *(%d)\n", (&dd[xx])-ptmp,
- ss-(char *)pImage);
-#endif
- dd[xx] = *(ss++);
-#if 1
- }
-#endif
- dd += aux;
- }
- }
-
- pPixmap = GetScratchPixmapHeader(pDraw->pScreen, width+leftPad, height,
- depth, depth,
- BitmapBytePad(width+leftPad),
- (pointer)ptmp);
- if (!pPixmap) {
- DEALLOCATE_LOCAL(ptmp);
- return;
- }
-
- pGC->fExpose = FALSE;
- (void)(*pGC->ops->CopyArea)((DrawablePtr)pPixmap, pDraw, pGC, leftPad,
- 0, width, height, x, y);
- DEALLOCATE_LOCAL(ptmp);
-#endif
- }
-
- pGC->fExpose = TRUE;
- FreeScratchPixmapHeader(pPixmap);
- } else {
- /* Chunky to planar conversion required */
-
- PixmapPtr pPixmap;
- ScreenPtr pScreen = pDraw->pScreen;
- int widthSrc;
- int start_srcshift;
- register int b;
- register int dstshift;
- register int shift_step;
- register PixelType dst;
- register PixelType srcbits;
- register PixelType *pdst;
- register PixelType *psrc;
- int start_bit;
- register int nl;
- register int h;
- register int d;
- int auxDst;
- PixelType *pdstBase;
- int widthDst;
- int depthDst;
-
- /* Create a tmp pixmap */
- pPixmap = (pScreen->CreatePixmap)(pScreen, width, height, depth);
- if (!pPixmap)
- return;
-
- ilbmGetPixelWidthAuxDepthAndPointer((DrawablePtr)pPixmap, widthDst,
- auxDst, depthDst, pdstBase);
-
- widthSrc = PixmapWidthInPadUnits(width, depth);
- /* XXX: if depth == 8, use fast chunky to planar assembly function.*/
- if (depth > 4) {
- start_srcshift = 24;
- shift_step = 8;
- } else {
- start_srcshift = 28;
- shift_step = 4;
- }
-
- for (d = 0; d < depth; d++, pdstBase += widthDst) { /* @@@ NEXT PLANE @@@ */
- register PixelType *pdstLine = pdstBase;
- start_bit = start_srcshift + d;
- psrc = (PixelType *)pImage;
- h = height;
-
- while (h--) {
- pdst = pdstLine;
- pdstLine += auxDst;
- dstshift = PPW - 1;
- dst = 0;
- nl = widthSrc;
- while (nl--) {
- srcbits = *psrc++;
- for (b = start_bit; b >= 0; b -= shift_step) {
- dst |= ((srcbits >> b) & 1) << dstshift;
- if (--dstshift < 0) {
- dstshift = PPW - 1;
- *pdst++ = dst;
- dst = 0;
- }
- }
- }
- if (dstshift != PPW - 1)
- *pdst++ = dst;
- }
- } /* for (d = ...) */
-
- pGC->fExpose = FALSE;
- (void)(*pGC->ops->CopyArea)((DrawablePtr)pPixmap, pDraw, pGC, leftPad, 0,
- width, height, x, y);
- pGC->fExpose = TRUE;
- (*pScreen->DestroyPixmap)(pPixmap);
- }
-}
-
-void
-ilbmGetImage(pDrawable, sx, sy, width, height, format, planemask, pdstLine)
- DrawablePtr pDrawable;
- int sx, sy, width, height;
- unsigned int format;
- unsigned long planemask;
- char *pdstLine;
-{
- BoxRec box;
- DDXPointRec ptSrc;
- RegionRec rgnDst;
- ScreenPtr pScreen;
- PixmapPtr pPixmap;
-
-#if 1
- fprintf(stderr, "ilbmGetImage()\n");
- fprintf(stderr, "\tsx = %d, sy = %d, width = %d, height = %d, "
- "planemask = 0x%08x\n", sx, sy, width, height, planemask);
- switch (format) {
- case XYBitmap:
- fprintf(stderr, "\tformat = XYBitmap\n");
- break;
- case XYPixmap:
- fprintf(stderr, "\tformat = XYPixmap\n");
- break;
- case ZPixmap:
- fprintf(stderr, "\tformat = ZPixmap\n");
- break;
- default:
- fprintf(stderr, "\tformat = %d\n");
- break;
- }
-#endif
-
- if ((width == 0) || (height == 0))
- return;
-
- pScreen = pDrawable->pScreen;
- sx += pDrawable->x;
- sy += pDrawable->y;
-
- if (format == XYPixmap || pDrawable->depth == 1) {
- pPixmap = GetScratchPixmapHeader(pScreen, width, height, 1, 1,
- BitmapBytePad(width), (pointer)pdstLine);
- if (!pPixmap)
- return;
-
- ptSrc.x = sx;
- ptSrc.y = sy;
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = width;
- box.y2 = height;
- REGION_INIT(pScreen, &rgnDst, &box, 1);
-
- pPixmap->drawable.depth = 1;
- pPixmap->drawable.bitsPerPixel = 1;
- /* dix layer only ever calls GetImage with 1 bit set in planemask
- * when format is XYPixmap.
- */
- ilbmDoBitblt(pDrawable, (DrawablePtr)pPixmap, GXcopy, &rgnDst, &ptSrc,
- planemask);
-
- FreeScratchPixmapHeader(pPixmap);
- REGION_UNINIT(pScreen, &rgnDst);
- } else {
- /* Planar to chunky conversion required */
-
- PixelType *psrcBits;
- PixelType *psrcLine;
- PixelType startmask, endmask;
- int depthSrc;
- int widthSrc;
- int auxSrc;
- int sizeDst;
- int widthDst;
- register PixelType *psrc;
- register PixelType *pdst;
- register PixelType dst;
- register PixelType srcbits;
- register int d;
- register int b;
- register int dstshift;
- register int shift_step;
- register int start_endbit;
- int start_startbit;
- register int end_endbit;
- register int start_dstshift;
- register int nl;
- register int h;
- int nlmiddle;
-
- widthDst = PixmapWidthInPadUnits(width, pDrawable->depth);
- sizeDst = widthDst * height;
-
- /* Clear the dest image */
- bzero(pdstLine, sizeDst << 2);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, widthSrc, auxSrc,
- depthSrc, psrcBits);
-
- psrcBits = ilbmScanline(psrcBits, sx, sy, auxSrc);
-
- start_startbit = PPW - 1 - (sx & PIM);
- if ((sx & PIM) + width < PPW) {
- maskpartialbits(sx, width, startmask);
- nlmiddle = 0;
- endmask = 0;
- start_endbit = PPW - ((sx + width) & PIM);
- } else {
- maskbits(sx, width, startmask, endmask, nlmiddle);
- start_endbit = 0;
- end_endbit = PPW - ((sx + width) & PIM);
- }
- /* ZPixmap images have either 4 or 8 bits per pixel dependent on
- * depth.
- */
- if (depthSrc > 4) {
- start_dstshift = 24;
- shift_step = 8;
- } else {
- start_dstshift = 28;
- shift_step = 4;
- }
-#define SHIFT_BITS(start_bit,end_bit) \
-for (b = (start_bit); b >= (end_bit); b--) { \
- dst |= ((srcbits >> b) & 1) << dstshift; \
- if ((dstshift -= shift_step) < 0) { \
- dstshift = start_dstshift + d; \
- *pdst++ = dst; \
- dst = *pdst; \
- } \
-} \
-
- for (d = 0; d < depthSrc; d++, psrcBits += widthSrc) { /* @@@ NEXT PLANE @@@ */
- psrcLine = psrcBits;
- pdst = (PixelType *)pdstLine;
- h = height;
-
- while (h--) {
- psrc = psrcLine;
- psrcLine += auxSrc;
- dst = *pdst;
- dstshift = start_dstshift + d;
-
- if (startmask) {
- srcbits = *psrc++ & startmask;
- SHIFT_BITS(start_startbit, start_endbit);
- }
-
- nl = nlmiddle;
- while (nl--) {
- srcbits = *psrc++;
- SHIFT_BITS(PPW - 1, 0);
- }
- if (endmask) {
- srcbits = *psrc & endmask;
- SHIFT_BITS(PPW - 1, end_endbit);
- }
-
- if (dstshift != start_dstshift + d)
- *pdst++ = dst;
- } /* while (h--) */
- } /* for (d = ...) */
- }
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmimggblt.c b/nx-X11/programs/Xserver/ilbm/ilbmimggblt.c
deleted file mode 100644
index 7fc1f3144..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmimggblt.c
+++ /dev/null
@@ -1,474 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmimggblt.c,v 3.0 1996/08/18 01:53:57 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmimggblt.c,v 5.17 94/04/17 20:28:25 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ilbm.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-/*
- we should eventually special-case fixed-width fonts for ImageText.
-
- this works for fonts with glyphs <= 32 bits wide.
-
- the clipping calculations are done for worst-case fonts.
-we make no assumptions about the heights, widths, or bearings
-of the glyphs. if we knew that the glyphs are all the same height,
-we could clip the tops and bottoms per clipping box, rather
-than per character per clipping box. if we knew that the glyphs'
-left and right bearings were wlle-behaved, we could clip a single
-character at the start, output until the last unclipped
-character, and then clip the last one. this is all straightforward
-to determine based on max-bounds and min-bounds from the font.
- there is some inefficiency introduced in the per-character
-clipping to make what's going on clearer.
-
- (it is possible, for example, for a font to be defined in which the
-next-to-last character in a font would be clipped out, but the last
-one wouldn't. the code below deals with this.)
-
- Image text looks at the bits in the glyph and the fg and bg in the
-GC. it paints a rectangle, as defined in the protocol dcoument,
-and the paints the characters.
-
- the register allocations for startmask and endmask may not
-be the right thing. are there two other deserving candidates?
-xoff, pdst, pglyph, and tmpSrc seem like the right things, though.
-*/
-
-void
-ilbmImageGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- ExtentInfoRec info; /* used by QueryGlyphExtents() */
- BoxRec bbox; /* string's bounding box */
- xRectangle backrect;/* backing rectangle to paint.
- in the general case, NOT necessarily
- the same as the string's bounding box
- */
-
- CharInfoPtr pci;
- int xorg, yorg; /* origin of drawable in bitmap */
- int widthDst; /* width of dst in longwords */
-
- /* these keep track of the character origin */
- PixelType *pdstBase;
- /* points to longword with character origin */
- int xchar; /* xorigin of char (mod 32) */
-
- /* these are used for placing the glyph */
- register int xoff; /* x offset of left edge of glyph (mod 32) */
- register PixelType *pdst;
- /* pointer to current longword in dst */
-
- register int d;
- int depthDst;
- int auxDst;
- int hSave;
- int w; /* width of glyph in bits */
- int h; /* height of glyph */
- int widthGlyph; /* width of glyph, in bytes */
- unsigned char rrops[AFB_MAX_DEPTH];
- register unsigned char *pglyph;
- /* pointer to current row of glyph */
- unsigned char *pglyphSave;
-
- /* used for putting down glyph */
- register PixelType tmpSrc;
- /* for getting bits from glyph */
- register PixelType startmask;
- register PixelType endmask;
-
- register int nFirst;/* bits of glyph in current longword */
- PixelType *pdstSave;
- int oldFill;
- ilbmPrivGC *pPriv = (ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, widthDst, auxDst, depthDst,
- pdstBase);
-
- QueryGlyphExtents(pGC->font, ppci, (unsigned long)nglyph, &info);
-
- backrect.x = x;
- backrect.y = y - FONTASCENT(pGC->font);
- backrect.width = info.overallWidth;
- backrect.height = FONTASCENT(pGC->font) + FONTDESCENT(pGC->font);
-
- x += xorg;
- y += yorg;
-
- bbox.x1 = x + info.overallLeft;
- bbox.x2 = x + info.overallRight;
- bbox.y1 = y - info.overallAscent;
- bbox.y2 = y + info.overallDescent;
-
- oldFill = pGC->fillStyle;
- pGC->fillStyle = FillSolid;
- ilbmReduceRop (pGC->alu, pGC->bgPixel, pGC->planemask, pGC->depth,
- pPriv->rrops);
- ilbmPolyFillRect(pDrawable, pGC, 1, &backrect);
- pGC->fillStyle = oldFill;
- ilbmReduceRop (pGC->alu, pGC->fgPixel, pGC->planemask, pGC->depth,
- pPriv->rrops);
- ilbmReduceRop (GXcopy, pGC->fgPixel, pGC->planemask, pGC->depth, rrops);
-
- /* the faint-hearted can open their eyes now */
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox)) {
- case rgnOUT:
- break;
- case rgnIN:
- pdstBase = ilbmScanlineNoBankSwitch(pdstBase, x, y, auxDst);
- xchar = x & PIM;
-
- while (nglyph--) {
- pci = *ppci;
- pglyphSave = FONTGLYPHBITS(pglyphBase, pci);
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- hSave = pci->metrics.ascent + pci->metrics.descent;
- widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
- /* start at top scanline of glyph */
- pdstSave = ilbmScanlineDelta(pdstBase, -pci->metrics.ascent,
- auxDst);
-
- /* find correct word in scanline and x offset within it
- for left edge of glyph
- */
- xoff = xchar + pci->metrics.leftSideBearing;
- if (xoff > PLST) {
- pdstSave++;
- xoff &= PIM;
- } else if (xoff < 0) {
- xoff += PPW;
- pdstSave--;
- }
-
- for (d = 0; d < depthDst; d++) {
- h = hSave;
- pdst = pdstSave;
- pdstSave += widthDst; /* @@@ NEXT PLANE @@@ */
- pglyph = pglyphSave;
-
- if ((xoff + w) <= PPW) {
- /* glyph all in one longword */
- maskpartialbits(xoff, w, startmask);
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst |= SCRRIGHT(tmpSrc, xoff) & startmask;
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- }
- } else {
- /* glyph crosses longword boundary */
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) &= ~(SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst |= SCRRIGHT(tmpSrc, xoff) & startmask;
- *(pdst+1) |= SCRLEFT(tmpSrc, nFirst) & endmask;
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- }
- } /* glyph crosses longwords boundary */
- } /* depth loop */
- /* update character origin */
- x += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST) {
- xchar -= PPW;
- pdstBase++;
- } else if (xchar < 0) {
- xchar += PPW;
- pdstBase--;
- }
- ppci++;
- } /* while nglyph-- */
- break;
- case rgnPART:
- {
- ilbmTEXTPOS *ppos;
- int nbox;
- BoxPtr pbox;
- RegionPtr cclip;
- int xpos; /* x position of char origin */
- int i;
- BoxRec clip;
- int leftEdge, rightEdge;
- int topEdge, bottomEdge;
- int glyphRow; /* first row of glyph not wholly
- clipped out */
- int glyphCol; /* leftmost visible column of glyph */
- int getWidth; /* bits to get from glyph */
-
- if (!(ppos = (ilbmTEXTPOS *)ALLOCATE_LOCAL(nglyph *
- sizeof(ilbmTEXTPOS))))
- return;
-
- pdstBase = ilbmScanlineNoBankSwitch(pdstBase, x, y, auxDst);
- xpos = x;
- xchar = xpos & PIM;
-
- for (i = 0; i < nglyph; i++) {
- pci = ppci[i];
-
- ppos[i].xpos = xpos;
- ppos[i].xchar = xchar;
- ppos[i].leftEdge = xpos + pci->metrics.leftSideBearing;
- ppos[i].rightEdge = xpos + pci->metrics.rightSideBearing;
- ppos[i].topEdge = y - pci->metrics.ascent;
- ppos[i].bottomEdge = y + pci->metrics.descent;
- ppos[i].pdstBase = pdstBase;
- ppos[i].widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
-
- xpos += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST) {
- xchar &= PIM;
- pdstBase++;
- } else if (xchar < 0) {
- xchar += PPW;
- pdstBase--;
- }
- }
-
- cclip = pGC->pCompositeClip;
- pbox = REGION_RECTS(cclip);
- nbox = REGION_NUM_RECTS(cclip);
-
- /* HACK ALERT
- since we continue out of the loop below so often, it
- is easier to increment pbox at the top than at the end.
- don't try this at home.
- */
- pbox--;
- while (nbox--) {
- pbox++;
- clip.x1 = max(bbox.x1, pbox->x1);
- clip.y1 = max(bbox.y1, pbox->y1);
- clip.x2 = min(bbox.x2, pbox->x2);
- clip.y2 = min(bbox.y2, pbox->y2);
- if ((clip.x2<=clip.x1) || (clip.y2<=clip.y1))
- continue;
-
- for (i = 0; i < nglyph; i++) {
- pci = ppci[i];
- xchar = ppos[i].xchar;
-
- /* clip the left and right edges */
- if (ppos[i].leftEdge < clip.x1)
- leftEdge = clip.x1;
- else
- leftEdge = ppos[i].leftEdge;
-
- if (ppos[i].rightEdge > clip.x2)
- rightEdge = clip.x2;
- else
- rightEdge = ppos[i].rightEdge;
-
- w = rightEdge - leftEdge;
- if (w <= 0)
- continue;
-
- /* clip the top and bottom edges */
- if (ppos[i].topEdge < clip.y1)
- topEdge = clip.y1;
- else
- topEdge = ppos[i].topEdge;
-
- if (ppos[i].bottomEdge > clip.y2)
- bottomEdge = clip.y2;
- else
- bottomEdge = ppos[i].bottomEdge;
-
- hSave = bottomEdge - topEdge;
- if (hSave <= 0)
- continue;
-
- glyphRow = (topEdge - y) + pci->metrics.ascent;
- widthGlyph = ppos[i].widthGlyph;
- pglyphSave = FONTGLYPHBITS(pglyphBase, pci);
- pglyphSave += (glyphRow * widthGlyph);
-
- glyphCol = (leftEdge - ppos[i].xpos) -
- (pci->metrics.leftSideBearing);
- getWidth = w + glyphCol;
-
- pdstSave = ilbmScanlineDelta(ppos[i].pdstBase, -(y-topEdge),
- auxDst);
- xoff = xchar + (leftEdge - ppos[i].xpos);
- if (xoff > PLST) {
- xoff &= PIM;
- pdstSave++;
- } else if (xoff < 0) {
- xoff += PPW;
- pdstSave--;
- }
-
- for (d = 0; d < depthDst; d++) {
- h = hSave;
- pdst = pdstSave;
- pdstSave += widthDst; /* @@@ NEXT PLANE @@@ */
- pglyph = pglyphSave;
-
- if ((xoff + w) <= PPW) {
- maskpartialbits(xoff, w, startmask);
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst |= SCRRIGHT(tmpSrc, xoff) & startmask;
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- }
- } else {
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) &= ~(SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst |= SCRRIGHT(tmpSrc, xoff) & startmask;
- *(pdst+1) |= SCRLEFT(tmpSrc, nFirst) & endmask;
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- }
- }
- } /* depth */
- } /* for each glyph */
- } /* while nbox-- */
- DEALLOCATE_LOCAL(ppos);
- break;
- }
-
- default:
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmline.c b/nx-X11/programs/Xserver/ilbm/ilbmline.c
deleted file mode 100644
index aa13fc114..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmline.c
+++ /dev/null
@@ -1,705 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmline.c,v 3.0 1996/08/18 01:53:58 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmline.c,v 5.18 94/04/17 20:28:26 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "ilbm.h"
-#include "maskbits.h"
-#include "miline.h"
-
-/* single-pixel lines on a color frame buffer
-
- NON-SLOPED LINES
- horizontal lines are always drawn left to right; we have to
-move the endpoints right by one after they're swapped.
- horizontal lines will be confined to a single band of a
-region. the code finds that band (giving up if the lower
-bound of the band is above the line we're drawing); then it
-finds the first box in that band that contains part of the
-line. we clip the line to subsequent boxes in that band.
- vertical lines are always drawn top to bottom (y-increasing.)
-this requires adding one to the y-coordinate of each endpoint
-after swapping.
-
- SLOPED LINES
- when clipping a sloped line, we bring the second point inside
-the clipping box, rather than one beyond it, and then add 1 to
-the length of the line before drawing it. this lets us use
-the same box for finding the outcodes for both endpoints. since
-the equation for clipping the second endpoint to an edge gives us
-1 beyond the edge, we then have to move the point towards the
-first point by one step on the major axis.
- eventually, there will be a diagram here to explain what's going
-on. the method uses Cohen-Sutherland outcodes to determine
-outsideness, and a method similar to Pike's layers for doing the
-actual clipping.
-
-*/
-
-void
-#ifdef POLYSEGMENT
-ilbmSegmentSS(pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-ilbmLineSS(pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit;
-#endif
-{
- int nboxInit;
- register int nbox;
- BoxPtr pboxInit;
- register BoxPtr pbox;
-#ifndef POLYSEGMENT
- register DDXPointPtr ppt; /* pointer to list of translated points */
-#endif
-
- unsigned int oc1; /* outcode of point 1 */
- unsigned int oc2; /* outcode of point 2 */
-
- PixelType *addrlBase; /* pointer to start of drawable */
- PixelType *addrl; /* address of destination pixmap */
- int nlwidth; /* width in longwords of destination pixmap */
- int xorg, yorg; /* origin of window */
-
- int adx; /* abs values of dx and dy */
- int ady;
- int signdx; /* sign of dx and dy */
- int signdy;
- int e, e1, e2; /* bresenham error and increments */
- int len; /* length of segment */
- int axis; /* major axis */
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
- int depthDst;
- int d;
- int auxDst;
- unsigned char *rrops;
-
- /* a bunch of temporaries */
- register int y1, y2;
- register int x1, x2;
- RegionPtr cclip;
-
- cclip = pGC->pCompositeClip;
- rrops = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rrops;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- addrlBase);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-#ifdef POLYSEGMENT
- while (nseg--)
-#else
- ppt = pptInit;
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
- while (--npt)
-#endif
- {
- nbox = nboxInit;
- pbox = pboxInit;
-
-#ifdef POLYSEGMENT
- x1 = pSeg->x1 + xorg;
- y1 = pSeg->y1 + yorg;
- x2 = pSeg->x2 + xorg;
- y2 = pSeg->y2 + yorg;
- pSeg++;
-#else
- x1 = x2;
- y1 = y2;
- ++ppt;
- if (mode == CoordModePrevious) {
- xorg = x1;
- yorg = y1;
- }
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
-#endif
-
- if (x1 == x2) /* vertical line */
- {
- /* make the line go top to bottom of screen, keeping
- endpoint semantics
- */
- if (y1 > y2) {
- register int tmp;
-
- tmp = y2;
- y2 = y1 + 1;
- y1 = tmp + 1;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- y1--;
-#endif
- }
-#ifdef POLYSEGMENT
- else if (pGC->capStyle != CapNotLast)
- y2++;
-#endif
- /* get to first band that might contain part of line */
- while ((nbox) && (pbox->y2 <= y1)) {
- pbox++;
- nbox--;
- }
-
- if (nbox) {
- /* stop when lower edge of box is beyond end of line */
- while ((nbox) && (y2 >= pbox->y1)) {
- if ((x1 >= pbox->x1) && (x1 < pbox->x2)) {
- int y1t, y2t;
- /* this box has part of the line in it */
- y1t = max(y1, pbox->y1);
- y2t = min(y2, pbox->y2);
- if (y1t != y2t)
- ilbmVertS(addrlBase, nlwidth, auxDst, depthDst, x1, y1t,
- y2t-y1t, rrops); /* @@@ NEXT PLANE PASSED @@@ */
- }
- nbox--;
- pbox++;
- }
- }
-#ifndef POLYSEGMENT
- y2 = ppt->y + yorg;
-#endif
- } else if (y1 == y2) /* horizontal line */ {
- /* force line from left to right, keeping
- endpoint semantics
- */
- if (x1 > x2) {
- register int tmp;
-
- tmp = x2;
- x2 = x1 + 1;
- x1 = tmp + 1;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- x1--;
-#endif
- }
-#ifdef POLYSEGMENT
- else if (pGC->capStyle != CapNotLast)
- x2++;
-#endif
-
- /* find the correct band */
- while ((nbox) && (pbox->y2 <= y1)) {
- pbox++;
- nbox--;
- }
-
- /* try to draw the line, if we haven't gone beyond it */
- if ((nbox) && (pbox->y1 <= y1)) {
- int tmp;
-
- /* when we leave this band, we're done */
- tmp = pbox->y1;
- while ((nbox) && (pbox->y1 == tmp)) {
- int x1t, x2t;
-
- if (pbox->x2 <= x1) {
- /* skip boxes until one might contain start point */
- nbox--;
- pbox++;
- continue;
- }
-
- /* stop if left of box is beyond right of line */
- if (pbox->x1 >= x2) {
- nbox = 0;
- break;
- }
-
- x1t = max(x1, pbox->x1);
- x2t = min(x2, pbox->x2);
- if (x1t != x2t)
- ilbmHorzS(addrlBase, nlwidth, auxDst, depthDst, x1t, y1,
- x2t-x1t, rrops); /* @@@ NEXT PLANE PASSED @@@ */
- nbox--;
- pbox++;
- }
- }
-#ifndef POLYSEGMENT
- x2 = ppt->x + xorg;
-#endif
- }
- else /* sloped line */
- {
- CalcLineDeltas(x1, y1, x2, y2, adx, ady,
- signdx, signdy, 1, 1, octant);
-
- if (adx > ady) {
- axis = X_AXIS;
- e1 = ady << 1;
- e2 = e1 - (adx << 1);
- e = e1 - adx;
- } else {
- axis = Y_AXIS;
- e1 = adx << 1;
- e2 = e1 - (ady << 1);
- e = e1 - ady;
- SetYMajorOctant(octant);
- }
-
- FIXUP_ERROR(e, octant, bias);
-
- /* we have bresenham parameters and two points.
- all we have to do now is clip and draw.
- */
-
- while (nbox--) {
- oc1 = 0;
- oc2 = 0;
- OUTCODES(oc1, x1, y1, pbox);
- OUTCODES(oc2, x2, y2, pbox);
- if ((oc1 | oc2) == 0) {
- if (axis == X_AXIS)
- len = adx;
- else
- len = ady;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- len++;
-#endif
- ilbmBresS(addrlBase, nlwidth, auxDst, depthDst, signdx, signdy,
- axis, x1, y1, e, e1, e2, len, rrops); /* @@@ NEXT PLANE PASSED @@@ */
- break;
- } else if (oc1 & oc2) {
- pbox++;
- } else {
- int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2;
- int clip1 = 0, clip2 = 0;
- int clipdx, clipdy;
- int err;
-
- if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1,
- pbox->y2-1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady, &clip1, &clip2,
- octant, bias, oc1, oc2) == -1) {
- pbox++;
- continue;
- }
-
- if (axis == X_AXIS)
- len = abs(new_x2 - new_x1);
- else
- len = abs(new_y2 - new_y1);
-#ifdef POLYSEGMENT
- if (clip2 != 0 || pGC->capStyle != CapNotLast)
- len++;
-#else
- len += (clip2 != 0);
-#endif
- if (len) {
- /* unwind bresenham error term to first point */
- if (clip1) {
- clipdx = abs(new_x1 - x1);
- clipdy = abs(new_y1 - y1);
- if (axis == X_AXIS)
- err = e+((clipdy*e2) + ((clipdx-clipdy)*e1));
- else
- err = e+((clipdx*e2) + ((clipdy-clipdx)*e1));
- }
- else
- err = e;
- ilbmBresS(addrlBase, nlwidth, auxDst, depthDst, signdx,
- signdy, axis, new_x1, new_y1, err, e1, e2, len,
- rrops); /* @@@ NEXT PLANE PASSED @@@ */
- }
- pbox++;
- }
- } /* while (nbox--) */
- } /* sloped line */
- } /* while (nline--) */
-
-#ifndef POLYSEGMENT
-
- /* paint the last point if the end style isn't CapNotLast.
- (Assume that a projecting, butt, or round cap that is one
- pixel wide is the same as the single pixel of the endpoint.)
- */
-
- if ((pGC->capStyle != CapNotLast) &&
- ((ppt->x + xorg != pptInit->x + pDrawable->x) ||
- (ppt->y + yorg != pptInit->y + pDrawable->y) ||
- (ppt == pptInit + 1))) {
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--) {
- if ((x2 >= pbox->x1) && (y2 >= pbox->y1) && (x2 < pbox->x2) &&
- (y2 < pbox->y2)) {
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(addrlBase, x2, y2, auxDst);
- addrlBase += nlwidth; /* @@@ NEXT PLANE @@@ */
-
- switch (rrops[d]) {
- case RROP_BLACK:
- *addrl &= rmask[x2 & PIM];
- break;
- case RROP_WHITE:
- *addrl |= mask[x2 & PIM];
- break;
- case RROP_INVERT:
- *addrl ^= mask[x2 & PIM];
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
- break;
- } else
- pbox++;
- }
- }
-#endif
-}
-
-/*
- * Draw dashed 1-pixel lines.
- */
-
-void
-#ifdef POLYSEGMENT
-ilbmSegmentSD(pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-ilbmLineSD(pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit;
-#endif
-{
- int nboxInit;
- register int nbox;
- BoxPtr pboxInit;
- register BoxPtr pbox;
-#ifndef POLYSEGMENT
- register DDXPointPtr ppt; /* pointer to list of translated points */
-#endif
-
- register unsigned int oc1; /* outcode of point 1 */
- register unsigned int oc2; /* outcode of point 2 */
-
- PixelType *addrlBase; /* address of destination pixmap */
- PixelType *addrl;
- int nlwidth; /* width in longwords of destination pixmap */
- int auxDst;
- int depthDst;
- int xorg, yorg; /* origin of window */
-
- int adx; /* abs values of dx and dy */
- int ady;
- int signdx; /* sign of dx and dy */
- int signdy;
- int e, e1, e2; /* bresenham error and increments */
- int len; /* length of segment */
- int axis; /* major axis */
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
- int x1, x2, y1, y2;
- RegionPtr cclip;
- unsigned char *rrops;
- unsigned char bgrrops[AFB_MAX_DEPTH];
- unsigned char *pDash;
- int dashOffset;
- int numInDashList;
- int dashIndex;
- int isDoubleDash;
- int dashIndexTmp, dashOffsetTmp;
- int unclippedlen;
- int d;
-
- cclip = pGC->pCompositeClip;
- rrops = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rrops;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- addrlBase);
-
- /* compute initial dash values */
-
- pDash = (unsigned char *) pGC->dash;
- numInDashList = pGC->numInDashList;
- isDoubleDash = (pGC->lineStyle == LineDoubleDash);
- dashIndex = 0;
- dashOffset = 0;
- miStepDash ((int)pGC->dashOffset, &dashIndex, pDash,
- numInDashList, &dashOffset);
-
- if (isDoubleDash)
- ilbmReduceRop (pGC->alu, pGC->bgPixel, pGC->planemask, pGC->depth,
- bgrrops);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-#ifdef POLYSEGMENT
- while (nseg--)
-#else
- ppt = pptInit;
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
- while (--npt)
-#endif
- {
- nbox = nboxInit;
- pbox = pboxInit;
-
-#ifdef POLYSEGMENT
- x1 = pSeg->x1 + xorg;
- y1 = pSeg->y1 + yorg;
- x2 = pSeg->x2 + xorg;
- y2 = pSeg->y2 + yorg;
- pSeg++;
-#else
- x1 = x2;
- y1 = y2;
- ++ppt;
- if (mode == CoordModePrevious) {
- xorg = x1;
- yorg = y1;
- }
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
-#endif
-
- CalcLineDeltas(x1, y1, x2, y2, adx, ady, signdx, signdy,
- 1, 1, octant);
-
- if (adx > ady) {
- axis = X_AXIS;
- e1 = ady << 1;
- e2 = e1 - (adx << 1);
- e = e1 - adx;
- unclippedlen = adx;
- } else {
- axis = Y_AXIS;
- e1 = adx << 1;
- e2 = e1 - (ady << 1);
- e = e1 - ady;
- unclippedlen = ady;
- SetYMajorOctant(octant);
- }
-
- FIXUP_ERROR(e, octant, bias);
-
- /* we have bresenham parameters and two points.
- all we have to do now is clip and draw.
- */
-
- while (nbox--) {
- oc1 = 0;
- oc2 = 0;
- OUTCODES(oc1, x1, y1, pbox);
- OUTCODES(oc2, x2, y2, pbox);
- if ((oc1 | oc2) == 0) {
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- unclippedlen++;
- dashIndexTmp = dashIndex;
- dashOffsetTmp = dashOffset;
- ilbmBresD(&dashIndexTmp, pDash, numInDashList, &dashOffsetTmp,
- isDoubleDash, addrlBase, nlwidth, auxDst, depthDst,
- signdx, signdy, axis, x1, y1, e, e1, e2, unclippedlen,
- rrops, bgrrops); /* @@@ NEXT PLANE PASSED @@@ */
- break;
-#else
- ilbmBresD(&dashIndex, pDash, numInDashList, &dashOffset,
- isDoubleDash, addrlBase, nlwidth, auxDst, depthDst,
- signdx, signdy, axis, x1, y1, e, e1, e2, unclippedlen,
- rrops, bgrrops); /* @@@ NEXT PLANE PASSED @@@ */
- goto dontStep;
-#endif
- } else if (oc1 & oc2) {
- pbox++;
- } else /* have to clip */ {
- int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2;
- int clip1 = 0, clip2 = 0;
- int clipdx, clipdy;
- int err;
-
- if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1, pbox->y2-1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady, &clip1, &clip2,
- octant, bias, oc1, oc2) == -1) {
- pbox++;
- continue;
- }
- dashIndexTmp = dashIndex;
- dashOffsetTmp = dashOffset;
- if (clip1) {
- int dlen;
-
- if (axis == X_AXIS)
- dlen = abs(new_x1 - x1);
- else
- dlen = abs(new_y1 - y1);
- miStepDash (dlen, &dashIndexTmp, pDash,
- numInDashList, &dashOffsetTmp);
- }
- if (axis == X_AXIS)
- len = abs(new_x2 - new_x1);
- else
- len = abs(new_y2 - new_y1);
-#ifdef POLYSEGMENT
- if (clip2 != 0 || pGC->capStyle != CapNotLast)
- len++;
-#else
- len += (clip2 != 0);
-#endif
- if (len) {
- /* unwind bresenham error term to first point */
- if (clip1) {
- clipdx = abs(new_x1 - x1);
- clipdy = abs(new_y1 - y1);
- if (axis == X_AXIS)
- err = e+((clipdy*e2) + ((clipdx-clipdy)*e1));
- else
- err = e+((clipdx*e2) + ((clipdy-clipdx)*e1));
- }
- else
- err = e;
- ilbmBresD(&dashIndexTmp, pDash, numInDashList, &dashOffsetTmp,
- isDoubleDash, addrlBase, nlwidth, auxDst, depthDst,
- signdx, signdy, axis, new_x1, new_y1, err, e1, e2,
- len, rrops, bgrrops); /* @@@ NEXT PLANE PASSED @@@ */
- }
- pbox++;
- }
- } /* while (nbox--) */
-#ifndef POLYSEGMENT
- /*
- * walk the dash list around to the next line
- */
- miStepDash (unclippedlen, &dashIndex, pDash,
- numInDashList, &dashOffset);
-dontStep: ;
-#endif
- } /* while (nline--) */
-
-#ifndef POLYSEGMENT
- /* paint the last point if the end style isn't CapNotLast.
- (Assume that a projecting, butt, or round cap that is one
- pixel wide is the same as the single pixel of the endpoint.)
- */
-
- if ((pGC->capStyle != CapNotLast) &&
- ((dashIndex & 1) == 0 || isDoubleDash) &&
- ((ppt->x + xorg != pptInit->x + pDrawable->x) ||
- (ppt->y + yorg != pptInit->y + pDrawable->y) ||
- (ppt == pptInit + 1))) {
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--) {
- if ((x2 >= pbox->x1) && (y2 >= pbox->y1) && (x2 < pbox->x2) &&
- (y2 < pbox->y2)) {
- int rop;
-
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(addrlBase, x2, y2, auxDst);
- addrlBase += nlwidth; /* @@@ NEXT PLANE @@@ */
-
- rop = rrops[d];
- if (dashIndex & 1)
- rop = bgrrops[d];
-
- switch (rop) {
- case RROP_BLACK:
- *addrl &= rmask[x2 & PIM];
- break;
- case RROP_WHITE:
- *addrl |= mask[x2 & PIM];
- break;
-
- case RROP_INVERT:
- *addrl ^= mask[x2 & PIM];
- break;
-
- case RROP_NOP:
- break;
- }
- } /* for (d = ...) */
- break;
- } else
- pbox++;
- }
- }
-#endif
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmmisc.c b/nx-X11/programs/Xserver/ilbm/ilbmmisc.c
deleted file mode 100644
index 32b1a4b4c..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmmisc.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmmisc.c,v 5.4 94/04/17 20:28:27 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "cursor.h"
-#include "scrnintstr.h"
-
-#include "ilbm.h"
-
-/*ARGSUSED*/
-void
-ilbmQueryBestSize(class, pwidth, pheight, pScreen)
-int class;
-unsigned short *pwidth;
-unsigned short *pheight;
-ScreenPtr pScreen;
-{
- unsigned width, test;
-
- switch (class) {
- case CursorShape:
- if (*pwidth > pScreen->width)
- *pwidth = pScreen->width;
- if (*pheight > pScreen->height)
- *pheight = pScreen->height;
- break;
- case TileShape:
- case StippleShape:
- width = *pwidth;
- if (!width) break;
- /* Return the closes power of two not less than what they gave me */
- test = 0x80000000;
- /* Find the highest 1 bit in the width given */
- while (!(test & width))
- test >>= 1;
- /* If their number is greater than that, bump up to the next
- * power of two */
- if ((test - 1) & width)
- test <<= 1;
- *pwidth = test;
- /* We don't care what height they use */
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmpixmap.c b/nx-X11/programs/Xserver/ilbm/ilbmpixmap.c
deleted file mode 100644
index 33c317155..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmpixmap.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmpixmap.c,v 5.13 94/04/17 20:28:28 dpw Exp $ */
-
-/* pixmap management
- written by drewry, september 1986
-
- on a monchrome device, a pixmap is a bitmap.
-*/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/Xmd.h>
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "maskbits.h"
-
-#include "ilbm.h"
-#include "mi.h"
-
-#include "servermd.h"
-
-PixmapPtr
-ilbmCreatePixmap(pScreen, width, height, depth)
- ScreenPtr pScreen;
- int width;
- int height;
- int depth;
-{
- PixmapPtr pPixmap;
- size_t datasize;
- size_t paddedWidth;
-
- paddedWidth = BitmapBytePad(width);
- if (paddedWidth > 32767 || height > 32767 || depth > 4)
- return NullPixmap;
- datasize = height * paddedWidth * depth;
- pPixmap = AllocatePixmap(pScreen, datasize);
- if (!pPixmap)
- return(NullPixmap);
- pPixmap->drawable.type = DRAWABLE_PIXMAP;
- pPixmap->drawable.class = 0;
- pPixmap->drawable.pScreen = pScreen;
- pPixmap->drawable.depth = depth;
- pPixmap->drawable.bitsPerPixel = depth;
- pPixmap->drawable.id = 0;
- pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- pPixmap->drawable.x = 0;
- pPixmap->drawable.y = 0;
- pPixmap->drawable.width = width;
- pPixmap->drawable.height = height;
- pPixmap->devKind = paddedWidth;
- pPixmap->refcnt = 1;
-#ifdef PIXPRIV
- pPixmap->devPrivate.ptr = datasize ?
- (pointer)((char *)pPixmap + pScreen->totalPixmapSize) : NULL;
-#else
- pPixmap->devPrivate.ptr = (pointer)(pPixmap + 1);
-#endif
- return(pPixmap);
-}
-
-Bool
-ilbmDestroyPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- if (--pPixmap->refcnt)
- return(TRUE);
- xfree(pPixmap);
- return(TRUE);
-}
-
-
-PixmapPtr
-ilbmCopyPixmap(pSrc)
- register PixmapPtr pSrc;
-{
- register PixmapPtr pDst;
- int size;
- ScreenPtr pScreen;
-
- size = pSrc->drawable.height * pSrc->devKind * pSrc->drawable.depth;
- pScreen = pSrc->drawable.pScreen;
- pDst = (*pScreen->CreatePixmap)(pScreen, pSrc->drawable.width,
- pSrc->drawable.height, pSrc->drawable.depth);
- if (!pDst)
- return(NullPixmap);
- memmove((char *)pDst->devPrivate.ptr, (char *)pSrc->devPrivate.ptr, size);
- return(pDst);
-}
-
-
-/* replicates a pattern to be a full 32 bits wide.
- relies on the fact that each scnaline is longword padded.
- doesn't do anything if pixmap is not a factor of 32 wide.
- changes width field of pixmap if successful, so that the fast
- XRotatePixmap code gets used if we rotate the pixmap later.
-
- calculate number of times to repeat
- for each scanline of pattern
- zero out area to be filled with replicate
- left shift and or in original as many times as needed
-*/
-void
-ilbmPadPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- register int width = pPixmap->drawable.width;
- register int h;
- register PixelType mask;
- register PixelType *p;
- register PixelType bits; /* real pattern bits */
- register int i;
- int d;
- int rep; /* repeat count for pattern */
-
- if (width >= PPW)
- return;
-
- rep = PPW/width;
- if (rep*width != PPW)
- return;
-
- mask = endtab[width];
-
- p = (PixelType *)(pPixmap->devPrivate.ptr);
-
- for (d = 0; d < pPixmap->drawable.depth; d++) {
- for (h = 0; h < pPixmap->drawable.height; h++) {
- *p &= mask;
- bits = *p;
- for (i = 1; i < rep; i++) {
- bits = SCRRIGHT(bits, width);
- *p |= bits;
- }
- p++;
- }
- }
- pPixmap->drawable.width = PPW;
-}
-
-/* Rotates pixmap pPix by w pixels to the right on the screen. Assumes that
- * words are PPW bits wide, and that the least significant bit appears on the
- * left.
- */
-void
-ilbmXRotatePixmap(pPix, rw)
- PixmapPtr pPix;
- register int rw;
-{
- register PixelType *pw, *pwFinal;
- register PixelType t;
-
- if (pPix == NullPixmap)
- return;
-
- pw = (PixelType *)pPix->devPrivate.ptr;
- rw %= (int)pPix->drawable.width;
- if (rw < 0)
- rw += (int)pPix->drawable.width;
- if (pPix->drawable.width == PPW) {
- pwFinal = pw + pPix->drawable.height * pPix->drawable.depth;
- while (pw < pwFinal) {
- t = *pw;
- *pw++ = SCRRIGHT(t, rw) | (SCRLEFT(t, (PPW-rw)) & endtab[rw]);
- }
- } else {
- /* We no longer do this. Validate doesn't try to rotate odd-size
- * tiles or stipples. ilbmUnnatural<tile/stipple>FS works directly off
- * the unrotate tile/stipple in the GC
- */
- ErrorF("X internal error: trying to rotate odd-sized pixmap.\n");
- }
-
-}
-
-/* Rotates pixmap pPix by h lines. Assumes that h is always less than
- pPix->height
- works on any width.
- */
-void
-ilbmYRotatePixmap(pPix, rh)
- register PixmapPtr pPix;
- int rh;
-{
- int nbyDown; /* bytes to move down to row 0; also offset of
- row rh */
- int nbyUp; /* bytes to move up to line rh; also
- offset of first line moved down to 0 */
- char *pbase;
- char *ptmp;
- int height;
- int aux;
-
- if (pPix == NullPixmap)
- return;
- height = (int) pPix->drawable.height;
- rh %= height;
- if (rh < 0)
- rh += height;
-
- aux = pPix->devKind*pPix->drawable.depth;
- nbyDown = rh*aux;
- nbyUp = height*aux-nbyDown;
-
- if (!(ptmp = (char *)ALLOCATE_LOCAL(nbyUp)))
- return;
-
- pbase = (char *)pPix->devPrivate.ptr;
- memmove(ptmp, pbase, nbyUp); /* save the low rows */
- memmove(pbase, pbase+nbyUp, nbyDown); /* slide the top rows down */
- memmove(pbase+nbyDown, ptmp, nbyUp); /* move lower rows up to row rh */
- DEALLOCATE_LOCAL(ptmp);
-}
-
-void
-ilbmCopyRotatePixmap(psrcPix, ppdstPix, xrot, yrot)
- register PixmapPtr psrcPix, *ppdstPix;
- int xrot, yrot;
-{
- register PixmapPtr pdstPix;
-
- if ((pdstPix = *ppdstPix) && (pdstPix->devKind == psrcPix->devKind) &&
- (pdstPix->drawable.height == psrcPix->drawable.height) &&
- (pdstPix->drawable.depth == psrcPix->drawable.depth)) {
- memmove((char *)pdstPix->devPrivate.ptr, (char *)psrcPix->devPrivate.ptr,
- psrcPix->drawable.height * psrcPix->devKind *
- psrcPix->drawable.depth);
- pdstPix->drawable.width = psrcPix->drawable.width;
- pdstPix->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- } else {
- if (pdstPix)
- /* FIX XBUG 6168 */
- (*pdstPix->drawable.pScreen->DestroyPixmap)(pdstPix);
- *ppdstPix = pdstPix = ilbmCopyPixmap(psrcPix);
- if (!pdstPix)
- return;
- }
- ilbmPadPixmap(pdstPix);
- if (xrot)
- ilbmXRotatePixmap(pdstPix, xrot);
- if (yrot)
- ilbmYRotatePixmap(pdstPix, yrot);
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmply1rct.c b/nx-X11/programs/Xserver/ilbm/ilbmply1rct.c
deleted file mode 100644
index 490551db7..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmply1rct.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmply1rct.c,v 3.0 1996/08/18 01:54:02 dawes Exp $ */
-/*
- * $XConsortium: ilbmply1rct.c,v 1.9 94/04/17 20:28:28 dpw Exp $
- *
-Copyright (c) 1990 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "ilbm.h"
-#include "maskbits.h"
-
-#if defined(mips) || defined(sparc)
-#define GetHighWord(x) (((int)(x)) >> 16)
-#else
-#define GetHighWord(x) (((int)(x)) / 65536)
-#endif
-
-#if IMAGE_BYTE_ORDER == MSBFirst
-#define intToCoord(i,x,y) (((x) = GetHighWord(i)), ((y) = (int)((short) (i))))
-#define coordToInt(x,y) (((x) << 16) | (y))
-#define intToX(i) (GetHighWord(i))
-#define intToY(i) ((int)((short) i))
-#else
-#define intToCoord(i,x,y) (((x) = (int)((short) (i))), ((y) = GetHighWord(i)))
-#define coordToInt(x,y) (((y) << 16) | (x))
-#define intToX(i) ((int)((short) (i)))
-#define intToY(i) (GetHighWord(i))
-#endif
-
-void
-ilbmFillPolygonSolid (pDrawable, pGC, shape, mode, count, ptsIn)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int shape;
- int mode;
- int count;
- DDXPointPtr ptsIn;
-{
- ilbmPrivGCPtr devPriv;
- int nlwidth;
- PixelType *addrl, *addr;
- int maxy;
- int origin;
- register int vertex1, vertex2;
- int c;
- BoxPtr extents;
- int clip;
- int y;
- int *vertex1p, *vertex2p;
- int *endp;
- int x1, x2;
- int dx1, dx2;
- int dy1, dy2;
- int e1, e2;
- int step1, step2;
- int sign1, sign2;
- int h;
- int l, r;
- PixelType mask, bits = ~((PixelType)0);
- int nmiddle;
- register unsigned char *rrops;
- register int n;
- register int d;
- int auxDst;
- int depthDst;
- register PixelType *pdst;
-
- devPriv = (ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr);
-
- if (mode == CoordModePrevious || shape != Convex ||
- REGION_NUM_RECTS(pGC->pCompositeClip) != 1) {
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
- origin = *((int *) &pDrawable->x);
- origin -= (origin & 0x8000) << 1;
- extents = &pGC->pCompositeClip->extents;
- vertex1 = *((int *) &extents->x1) - origin;
- vertex2 = *((int *) &extents->x2) - origin - 0x00010001;
- clip = 0;
- y = 32767;
- maxy = 0;
- vertex2p = (int *) ptsIn;
- endp = vertex2p + count;
- while (count--) {
- c = *vertex2p;
- clip |= (c - vertex1) | (vertex2 - c);
- c = intToY(c);
- if (c < y) {
- y = c;
- vertex1p = vertex2p;
- }
- vertex2p++;
- if (c > maxy)
- maxy = c;
- }
- if (y == maxy)
- return;
-
- if (clip & 0x80008000) {
- miFillPolygon (pDrawable, pGC, shape, mode, vertex2p - (int *) ptsIn, ptsIn);
- return;
- }
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- addrl);
- rrops = devPriv->rrops;
- addrl = ilbmScanlineDelta(addrl, y + pDrawable->y, auxDst);
- origin = intToX(origin);
- vertex2p = vertex1p;
- vertex2 = vertex1 = *vertex2p++;
- if (vertex2p == endp)
- vertex2p = (int *) ptsIn;
-#define Setup(c,x,vertex,dx,dy,e,sign,step) {\
- x = intToX(vertex); \
- if (dy = intToY(c) - y) { \
- dx = intToX(c) - x; \
- step = 0; \
- if (dx >= 0) { \
- e = 0; \
- sign = 1; \
- if (dx >= dy) {\
- step = dx / dy; \
- dx = dx % dy; \
- } \
- } else { \
- e = 1 - dy; \
- sign = -1; \
- dx = -dx; \
- if (dx >= dy) { \
- step = - (dx / dy); \
- dx = dx % dy; \
- } \
- } \
- } \
- x += origin; \
- vertex = c; \
-}
-
-#define Step(x,dx,dy,e,sign,step) {\
- x += step; \
- if ((e += dx) > 0) { \
- x += sign; \
- e -= dy; \
- } \
-}
- for (;;) {
- if (y == intToY(vertex1)) {
- do {
- if (vertex1p == (int *) ptsIn)
- vertex1p = endp;
- c = *--vertex1p;
- Setup (c,x1,vertex1,dx1,dy1,e1,sign1,step1)
- } while (y >= intToY(vertex1));
- h = dy1;
- } else {
- Step(x1,dx1,dy1,e1,sign1,step1)
- h = intToY(vertex1) - y;
- }
- if (y == intToY(vertex2)) {
- do {
- c = *vertex2p++;
- if (vertex2p == endp)
- vertex2p = (int *) ptsIn;
- Setup (c,x2,vertex2,dx2,dy2,e2,sign2,step2)
- } while (y >= intToY(vertex2));
- if (dy2 < h)
- h = dy2;
- } else {
- Step(x2,dx2,dy2,e2,sign2,step2)
- if ((c = (intToY(vertex2) - y)) < h)
- h = c;
- }
- /* fill spans for this segment */
- y += h;
- for (;;) {
- l = x1;
- r = x2;
- nmiddle = x2 - x1;
- if (nmiddle < 0) {
- nmiddle = -nmiddle;
- l = x2;
- r = x1;
- }
- c = l & PIM;
- l -= c;
- l = l >> PWSH;
- addr = addrl + l;
- if (c + nmiddle < PPW) {
- mask = SCRRIGHT (bits,c) ^ SCRRIGHT (bits,c+nmiddle);
- for (pdst = addr, d = 0; d < depthDst; d++, pdst += nlwidth) { /* @@@ NEXT PLANE @@@ */
- switch (rrops[d]) {
- case RROP_BLACK:
- *pdst &= ~mask;
- break;
- case RROP_WHITE:
- *pdst |= mask;
- break;
- case RROP_INVERT:
- *pdst ^= mask;
- break;
- case RROP_NOP:
- break;
- }
- }
- } else {
- if (c) {
- mask = SCRRIGHT(bits, c);
- for (pdst = addr, d = 0; d < depthDst; d++, pdst += nlwidth) { /* @@@ NEXT PLANE @@@ */
- switch (rrops[d]) {
- case RROP_BLACK:
- *pdst &= ~mask;
- break;
- case RROP_WHITE:
- *pdst |= mask;
- break;
- case RROP_INVERT:
- *pdst ^= mask;
- break;
- case RROP_NOP:
- break;
- }
- }
- nmiddle += c - PPW;
- addr++;
- }
- nmiddle >>= PWSH;
- mask = ~SCRRIGHT(bits, r & PIM);
-
- for (d = 0; d < depthDst; d++, addr += nlwidth) { /* @@@ NEXT PLANE @@@ */
- n = nmiddle;
- pdst = addr;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- Duff (n, *pdst++ = 0;)
- if (mask)
- *pdst &= ~mask;
- break;
- case RROP_WHITE:
- Duff (n, *pdst++ = ~0;);
- if (mask)
- *pdst |= mask;
- break;
- case RROP_INVERT:
- Duff (n, *pdst++ ^= ~0;);
- if (mask)
- *pdst ^= mask;
- break;
- case RROP_NOP:
- break;
- }
- }
- }
- if (!--h)
- break;
- ilbmScanlineInc(addrl, auxDst);
- Step(x1,dx1,dy1,e1,sign1,step1)
- Step(x2,dx2,dy2,e2,sign2,step2)
- }
- if (y == maxy)
- break;
- ilbmScanlineInc(addrl, auxDst);
- }
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmplygblt.c b/nx-X11/programs/Xserver/ilbm/ilbmplygblt.c
deleted file mode 100644
index 9b60e1100..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmplygblt.c
+++ /dev/null
@@ -1,469 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmplygblt.c,v 3.0 1996/08/18 01:54:03 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmimggblt.c,v 5.17 94/04/17 20:28:25 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ilbm.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-/*
- this works for fonts with glyphs <= 32 bits wide.
-
- the clipping calculations are done for worst-case fonts.
-we make no assumptions about the heights, widths, or bearings
-of the glyphs. if we knew that the glyphs are all the same height,
-we could clip the tops and bottoms per clipping box, rather
-than per character per clipping box. if we knew that the glyphs'
-left and right bearings were wlle-behaved, we could clip a single
-character at the start, output until the last unclipped
-character, and then clip the last one. this is all straightforward
-to determine based on max-bounds and min-bounds from the font.
- there is some inefficiency introduced in the per-character
-clipping to make what's going on clearer.
-
- (it is possible, for example, for a font to be defined in which the
-next-to-last character in a font would be clipped out, but the last
-one wouldn't. the code below deals with this.)
-
-*/
-
-void
-ilbmPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- ExtentInfoRec info; /* used by QueryGlyphExtents() */
- BoxRec bbox; /* string's bounding box */
- xRectangle backrect; /* backing rectangle to paint.
- in the general case, NOT necessarily
- the same as the string's bounding box
- */
-
- CharInfoPtr pci;
- int xorg, yorg; /* origin of drawable in bitmap */
- int widthDst; /* width of dst in longwords */
-
- /* these keep track of the character origin */
- PixelType *pdstBase;
- /* points to longword with character origin */
- int xchar; /* xorigin of char (mod 32) */
-
- /* these are used for placing the glyph */
- register int xoff; /* x offset of left edge of glyph (mod 32) */
- register PixelType *pdst; /* pointer to current longword in dst */
-
- register int d;
- int depthDst;
- int auxDst;
- int hSave;
- int w; /* width of glyph in bits */
- int h; /* height of glyph */
- int widthGlyph; /* width of glyph, in bytes */
- unsigned char *rrops;
- register unsigned char *pglyph;
- /* pointer to current row of glyph */
- unsigned char *pglyphSave;
-
- /* used for putting down glyph */
- register PixelType tmpSrc;
- /* for getting bits from glyph */
- register PixelType startmask;
- register PixelType endmask;
-
- register int nFirst; /* bits of glyph in current longword */
- PixelType *pdstSave;
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, widthDst, auxDst, depthDst,
- pdstBase);
-
- QueryGlyphExtents(pGC->font, ppci, (unsigned long)nglyph, &info);
-
- x += xorg;
- y += yorg;
-
- bbox.x1 = x + info.overallLeft;
- bbox.x2 = x + info.overallRight;
- bbox.y1 = y - info.overallAscent;
- bbox.y2 = y + info.overallDescent;
-
- rrops = ((ilbmPrivGCPtr) pGC->devPrivates[ilbmGCPrivateIndex].ptr)->rrops;
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox)) {
- case rgnOUT:
- break;
- case rgnIN:
- pdstBase = ilbmScanlineNoBankSwitch(pdstBase, x, y, auxDst);
- xchar = x & PIM;
-
- while (nglyph--) {
- pci = *ppci;
- pglyphSave = FONTGLYPHBITS(pglyphBase, pci);
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- hSave = pci->metrics.ascent + pci->metrics.descent;
- widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
- /* start at top scanline of glyph */
- pdstSave = ilbmScanlineDelta(pdstBase, -pci->metrics.ascent,
- auxDst);
-
- /* find correct word in scanline and x offset within it
- for left edge of glyph
- */
- xoff = xchar + pci->metrics.leftSideBearing;
- if (xoff > PLST) {
- pdstSave++;
- xoff &= PIM;
- } else if (xoff < 0) {
- xoff += PPW;
- pdstSave--;
- }
-
- for (d = 0; d < depthDst; d++) {
- h = hSave;
- pdst = pdstSave;
- pdstSave += widthDst; /* @@@ NEXT PLANE @@@ */
- pglyph = pglyphSave;
-
- if ((xoff + w) <= PPW) {
- /* glyph all in one longword */
- maskpartialbits(xoff, w, startmask);
- switch (rrops[d]) {
- case RROP_WHITE:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst |= (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_BLACK:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst ^= (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- }
- } else {
- /* glyph crosses longword boundary */
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- switch (rrops[d]) {
- case RROP_WHITE:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst |= (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) |= (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_BLACK:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) &= ~(SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst ^= (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) ^= (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- }
- } /* glyph crosses longwords boundary */
- } /* depth loop */
- /* update character origin */
- x += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST) {
- xchar -= PPW;
- pdstBase++;
- } else if (xchar < 0) {
- xchar += PPW;
- pdstBase--;
- }
- ppci++;
- } /* while nglyph-- */
- break;
- case rgnPART:
- {
- ilbmTEXTPOS *ppos;
- int nbox;
- BoxPtr pbox;
- RegionPtr cclip;
- int xpos; /* x position of char origin */
- int i;
- BoxRec clip;
- int leftEdge, rightEdge;
- int topEdge, bottomEdge;
- int glyphRow; /* first row of glyph not wholly
- clipped out */
- int glyphCol; /* leftmost visible column of glyph */
- int getWidth; /* bits to get from glyph */
-
- if (!(ppos = (ilbmTEXTPOS *)ALLOCATE_LOCAL(nglyph *
- sizeof(ilbmTEXTPOS))))
- return;
-
- pdstBase = ilbmScanlineNoBankSwitch(pdstBase, x, y, auxDst);
- xpos = x;
- xchar = xpos & PIM;
-
- for (i = 0; i < nglyph; i++) {
- pci = ppci[i];
-
- ppos[i].xpos = xpos;
- ppos[i].xchar = xchar;
- ppos[i].leftEdge = xpos + pci->metrics.leftSideBearing;
- ppos[i].rightEdge = xpos + pci->metrics.rightSideBearing;
- ppos[i].topEdge = y - pci->metrics.ascent;
- ppos[i].bottomEdge = y + pci->metrics.descent;
- ppos[i].pdstBase = pdstBase;
- ppos[i].widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
-
- xpos += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST) {
- xchar &= PIM;
- pdstBase++;
- } else if (xchar < 0) {
- xchar += PPW;
- pdstBase--;
- }
- }
-
- cclip = pGC->pCompositeClip;
- pbox = REGION_RECTS(cclip);
- nbox = REGION_NUM_RECTS(cclip);
-
- /* HACK ALERT
- since we continue out of the loop below so often, it
- is easier to increment pbox at the top than at the end.
- don't try this at home.
- */
- pbox--;
- while (nbox--) {
- pbox++;
- clip.x1 = max(bbox.x1, pbox->x1);
- clip.y1 = max(bbox.y1, pbox->y1);
- clip.x2 = min(bbox.x2, pbox->x2);
- clip.y2 = min(bbox.y2, pbox->y2);
- if ((clip.x2<=clip.x1) || (clip.y2<=clip.y1))
- continue;
-
- for (i = 0; i<nglyph; i++) {
- pci = ppci[i];
- xchar = ppos[i].xchar;
-
- /* clip the left and right edges */
- if (ppos[i].leftEdge < clip.x1)
- leftEdge = clip.x1;
- else
- leftEdge = ppos[i].leftEdge;
-
- if (ppos[i].rightEdge > clip.x2)
- rightEdge = clip.x2;
- else
- rightEdge = ppos[i].rightEdge;
-
- w = rightEdge - leftEdge;
- if (w <= 0)
- continue;
-
- /* clip the top and bottom edges */
- if (ppos[i].topEdge < clip.y1)
- topEdge = clip.y1;
- else
- topEdge = ppos[i].topEdge;
-
- if (ppos[i].bottomEdge > clip.y2)
- bottomEdge = clip.y2;
- else
- bottomEdge = ppos[i].bottomEdge;
-
- hSave = bottomEdge - topEdge;
- if (hSave <= 0)
- continue;
-
- glyphRow = (topEdge - y) + pci->metrics.ascent;
- widthGlyph = ppos[i].widthGlyph;
- pglyphSave = FONTGLYPHBITS(pglyphBase, pci);
- pglyphSave += (glyphRow * widthGlyph);
-
- glyphCol = (leftEdge - ppos[i].xpos) -
- (pci->metrics.leftSideBearing);
- getWidth = w + glyphCol;
-
- pdstSave = ilbmScanlineDelta(ppos[i].pdstBase, -(y-topEdge),
- auxDst);
- xoff = xchar + (leftEdge - ppos[i].xpos);
- if (xoff > PLST) {
- xoff &= PIM;
- pdstSave++;
- } else if (xoff < 0) {
- xoff += PPW;
- pdstSave--;
- }
-
- for (d = 0; d < depthDst; d++) {
- h = hSave;
- pdst = pdstSave;
- pdstSave += widthDst; /* @@@ NEXT PLANE @@@ */
- pglyph = pglyphSave;
-
- if ((xoff + w) <= PPW) {
- maskpartialbits(xoff, w, startmask);
- switch (rrops[d]) {
- case RROP_WHITE:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst |= (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_BLACK:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst ^= (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- }
- } else {
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- switch (rrops[d]) {
- case RROP_WHITE:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst |= (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) |= (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_BLACK:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) &= ~(SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst ^= (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) ^= (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- }
- }
- } /* depth */
- } /* for each glyph */
- } /* while nbox-- */
- DEALLOCATE_LOCAL(ppos);
- break;
- }
-
- default:
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmpntarea.c b/nx-X11/programs/Xserver/ilbm/ilbmpntarea.c
deleted file mode 100644
index f61f7fcf9..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmpntarea.c
+++ /dev/null
@@ -1,656 +0,0 @@
-/* $XFree86$ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmpntarea.c,v 5.7 94/04/17 20:28:29 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "ilbm.h"
-#include "maskbits.h"
-
-/*
- the solid fillers are called for rectangles and window backgrounds.
- the boxes are already translated.
- maybe this should always take a pixmap instead of a drawable?
-
- NOTE:
- iy = ++iy < tileHeight ? iy : 0
-is equivalent to iy%= tileheight, and saves a division.
-*/
-
-/*ARGSUSED*/
-void
-ilbmSolidFillArea(pDraw, nbox, pbox, rrops)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- register unsigned char *rrops;
-{
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- register int h; /* height of current box */
- register PixelType *p; /* pointer to bits we're writing */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType startmask;
- register PixelType endmask;
- /* masks for reggedy bits at either end of line */
- register int nlwExtra; /* to get from right of box to left of next span */
- int nlwMiddle; /* number of longwords between sides of boxes */
- PixelType *pbits; /* pointer to start of drawable */
- PixelType *saveP;
- int saveH;
- int depthDst;
- int auxDst;
- register int d;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst, pbits);
-
- while (nbox--) {
- w = pbox->x2 - pbox->x1;
- saveH = pbox->y2 - pbox->y1;
-
- saveP = ilbmScanline(pbits, pbox->x1, pbox->y1, auxDst);
-
- if ( ((pbox->x1 & PIM) + w) < PPW) {
- for (d = 0; d < depthDst; d++) {
- h = saveH;
- p = saveP;
- saveP += nlwidth; /* @@@ NEXT PLANE @@@ */
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = auxDst;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- Duff(h, *p &= ~startmask; ilbmScanlineInc(p, nlwExtra));
- break;
- case RROP_WHITE:
- Duff(h, *p |= startmask; ilbmScanlineInc(p, nlwExtra));
- break;
- case RROP_INVERT:
- Duff(h, *p ^= startmask; ilbmScanlineInc(p, nlwExtra));
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ..) */
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
-
- for (d = 0; d < depthDst; d++) {
- h = saveH;
- p = saveP;
- saveP += nlwidth; /* @@@ NEXT PLANE @@@ */
- nlwExtra = auxDst - nlwMiddle;
-
- if (startmask && endmask) {
- nlwExtra -= 1;
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- nlw = nlwMiddle;
- *p &= ~startmask;
- p++;
- Duff(nlw, *p++ = 0);
- *p &= ~endmask;
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- nlw = nlwMiddle;
- *p |= startmask;
- p++;
- Duff(nlw, *p++ = ~0);
- *p |= endmask;
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- nlw = nlwMiddle;
- *p ^= startmask;
- p++;
- Duff(nlw, *p++ ^= ~0);
- *p ^= endmask;
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- }
- } else if (startmask && !endmask) {
- nlwExtra -= 1;
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- nlw = nlwMiddle;
- *p &= ~startmask;
- p++;
- Duff(nlw, *p++ = 0);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- nlw = nlwMiddle;
- *p |= startmask;
- p++;
- Duff(nlw, *p++ = ~0);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- nlw = nlwMiddle;
- *p ^= startmask;
- p++;
- Duff(nlw, *p++ ^= ~0);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- }
- } else if (!startmask && endmask) {
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ = 0);
- *p &= ~endmask;
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ = ~0);
- *p |= endmask;
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ ^= ~0);
- *p ^= endmask;
- ilbmScanlineInc(p, nlwExtra);
- }
- case RROP_NOP:
- break;
- }
- } else { /* no ragged bits at either end */
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ = 0);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ = ~0);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ ^= ~0);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- }
- } /* for (d = 0 ... ) */
- }
- pbox++;
- }
-}
-
-/* stipple a list of boxes -
-
-you can use the reduced rasterop for stipples. if rrop is
-black, AND the destination with (not stipple pattern). if rrop is
-white OR the destination with the stipple pattern. if rrop is invert,
-XOR the destination with the stipple pattern.
-*/
-
-/*ARGSUSED*/
-void
-ilbmStippleAreaPPW(pDraw, nbox, pbox, pstipple, rrops)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- PixmapPtr pstipple;
- unsigned char *rrops;
-{
- register PixelType *psrc; /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
- register PixelType srcpix;
-
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType *p; /* pointer to bits we're writing */
- register int h; /* height of current box */
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwExtra; /* to get from right of box to left of next span */
- int auxDst;
- int depthDst;
- int d;
- int saveIy;
- register int iy; /* index of current scanline in tile */
- PixelType *pbits; /* pointer to start of drawable */
- PixelType *pBase;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst, pBase);
-
- tileHeight = pstipple->drawable.height;
- psrc = (PixelType *)(pstipple->devPrivate.ptr);
-
- while (nbox--) {
- w = pbox->x2 - pbox->x1;
- saveIy = pbox->y1 % tileHeight;
- pbits = pBase;
-
- if ( ((pbox->x1 & PIM) + w) < PPW) {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = auxDst;
- for (d = 0; d < depthDst; d++) {
- p = ilbmScanline(pbits, pbox->x1, pbox->y1, auxDst);
- pbits += nlwidth; /* @@@ NEXT PLANE @@@ */
- iy = saveIy;
- h = pbox->y2 - pbox->y1;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- *p &= ~(srcpix & startmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- *p |= (srcpix & startmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- *p ^= (srcpix & startmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
-
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
-
- for (d = 0; d < depthDst; d++) {
- nlwExtra = auxDst - nlwMiddle;
- p = ilbmScanline(pbits, pbox->x1, pbox->y1, auxDst);
- pbits += nlwidth; /* @@@ NEXT PLANE @@@ */
- iy = saveIy;
- h = pbox->y2 - pbox->y1;
-
- if (startmask && endmask) {
- nlwExtra -= 1;
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p &= ~(srcpix & startmask);
- p++;
- Duff (nlw, *p++ &= ~srcpix);
- *p &= ~(srcpix & endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p |= (srcpix & startmask);
- p++;
- Duff (nlw, *p++ |= srcpix);
- *p |= (srcpix & endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p ^= (srcpix & startmask);
- p++;
- Duff (nlw, *p++ ^= srcpix);
- *p ^= (srcpix & endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } else if (startmask && !endmask) {
- nlwExtra -= 1;
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p &= ~(srcpix & startmask);
- p++;
- Duff(nlw, *p++ &= ~srcpix);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p |= (srcpix & startmask);
- p++;
- Duff(nlw, *p++ |= srcpix);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p ^= (srcpix & startmask);
- p++;
- Duff(nlw, *p++ ^= srcpix);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } else if (!startmask && endmask) {
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ &= ~srcpix);
- *p &= ~(srcpix & endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ |= srcpix);
- *p |= (srcpix & endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ ^= srcpix);
- *p ^= (srcpix & endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } else { /* no ragged bits at either end */
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ &= ~srcpix);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ |= srcpix);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ ^= srcpix);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- } /* switch */
- }
- } /* for (d = ...) */
- }
- pbox++;
- }
-}
-
-void
-ilbmStippleArea(pDraw, nbox, pbox, pTile, xOff, yOff, rrops)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- PixmapPtr pTile;
- int xOff;
- int yOff;
- unsigned char *rrops;
-{
- register PixelType *psrc; /* pointer to bits in tile, if needed */
- int nlwidth; /* width in longwords of the drawable */
- register int h; /* height of current box */
- register PixelType *pdst; /* pointer to bits we're writing */
- int auxDst;
- int depthDst;
- int sizeTile;
- int tileLine;
- int iline;
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- int saveW;
- register int rop;
- PixelType *psrcT;
- int d;
- int nstart;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
- int iy;
- PixelType *pBase; /* pointer to start of drawable */
- PixelType *saveP;
- PixelType *pStartDst;
- PixelType *pStartTile;
- int saveH;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst, pBase);
-
- tileHeight = pTile->drawable.height;
- tileWidth = pTile->drawable.width;
- tlwidth = pTile->devKind/sizeof(PixelType);
-
- xSrc = pDraw->x + ((xOff % tileWidth) - tileWidth);
- ySrc = pDraw->y + ((yOff % tileHeight) - tileHeight);
-
- while (nbox--) {
- saveW = pbox->x2 - pbox->x1;
- iline = (pbox->y1 - ySrc) % tileHeight;
- psrcT = (PixelType *)pTile->devPrivate.ptr;
- tileLine = iline * tlwidth;
- saveH = pbox->y2 - pbox->y1;
- saveP = ilbmScanline(pBase, pbox->x1, pbox->y1, auxDst);
-
- for (d = 0; d < depthDst; d++, saveP += nlwidth) { /* @@@ NEXT PLANE @@@ */
- h = saveH;
- pStartDst = saveP;
- pStartTile = psrcT + tileLine;
- iy = iline;
-
- while (h--) {
- x = pbox->x1;
- width = saveW;
- pdst = pStartDst;
- rop = rrops[d];
-
- while (width > 0) {
- psrc = pStartTile;
- w = min(tileWidth, width);
- if ((rem = (x - xSrc) % tileWidth) != 0) {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
- getandputrrop((psrc + endinc), (rem & PIM), (x & PIM), w,
- pdst, rop)
- if ((x & PIM) + w >= PPW)
- pdst++;
- } else if (((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- putbitsrrop(*psrc, x & PIM, w, pdst, rop);
- } else {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if (startmask) {
- putbitsrrop(*psrc, (x & PIM), nstart, pdst, rop);
- pdst++;
- if (srcStartOver)
- psrc++;
- }
-
- while (nlMiddle--) {
- getandputrrop0(psrc, nstart, PPW, pdst, rop);
- pdst++;
- psrc++;
- }
-
- if (endmask) {
- getandputrrop0(psrc, nstart, nend, pdst, rop);
- }
- }
- x += w;
- width -= w;
- } /* while (width > 0) */
-
- pStartDst += auxDst;
- if (++iy >= tileHeight) {
- iy = 0;
- pStartTile = psrcT;
- } else
- pStartTile += tlwidth;
-
- } /* while (h) */
- } /* for (d = ... ) */
- pbox++;
- } /* for each box */
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmpntwin.c b/nx-X11/programs/Xserver/ilbm/ilbmpntwin.c
deleted file mode 100644
index b12a121c8..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmpntwin.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: ilbmpntwin.c,v 5.12 94/04/17 20:28:30 dpw Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "ilbm.h"
-#include "maskbits.h"
-#include "mi.h"
-
-void
-ilbmPaintWindow(pWin, pRegion, what)
- WindowPtr pWin;
- RegionPtr pRegion;
- int what;
-{
- register ilbmPrivWin *pPrivWin;
- unsigned char rrops[AFB_MAX_DEPTH];
-
- pPrivWin = (ilbmPrivWin *)(pWin->devPrivates[ilbmWindowPrivateIndex].ptr);
-
- switch (what) {
- case PW_BACKGROUND:
- switch (pWin->backgroundState) {
- case None:
- return;
- case ParentRelative:
- do {
- pWin = pWin->parent;
- } while (pWin->backgroundState == ParentRelative);
- (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion,
- what);
- return;
- case BackgroundPixmap:
- if (pPrivWin->fastBackground) {
- ilbmTileAreaPPWCopy((DrawablePtr)pWin,
- REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXcopy,
- pPrivWin->pRotatedBackground, ~0);
- return;
- } else {
- ilbmTileAreaCopy((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXcopy,
- pWin->background.pixmap, 0, 0, ~0);
- return;
- }
- break;
- case BackgroundPixel:
- ilbmReduceRop(GXcopy, pWin->background.pixel, ~0,
- pWin->drawable.depth, rrops);
- ilbmSolidFillArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), rrops);
- return;
- }
- break;
- case PW_BORDER:
- if (pWin->borderIsPixel) {
- ilbmReduceRop(GXcopy, pWin->border.pixel, ~0, pWin->drawable.depth,
- rrops);
- ilbmSolidFillArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), rrops);
- return;
- } else if (pPrivWin->fastBorder) {
- ilbmTileAreaPPWCopy((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXcopy,
- pPrivWin->pRotatedBorder, ~0);
- return;
- }
- break;
- }
- miPaintWindow(pWin, pRegion, what);
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmpolypnt.c b/nx-X11/programs/Xserver/ilbm/ilbmpolypnt.c
deleted file mode 100644
index 87666d7b6..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmpolypnt.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmpolypnt.c,v 3.0 1996/08/18 01:54:07 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmpolypnt.c,v 5.6 94/04/17 20:28:30 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "pixmapstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "miscstruct.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-
-#include "ilbm.h"
-#include "maskbits.h"
-
-void
-ilbmPolyPoint(pDrawable, pGC, mode, npt, pptInit)
- register DrawablePtr pDrawable;
- GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt;
- xPoint *pptInit;
-{
-
- register BoxPtr pbox;
- register int nbox;
- register int d;
-
- register PixelType *addrl;
- PixelType *pBase;
- PixelType *pBaseSave;
- int nlwidth;
- int auxDst;
- int depthDst;
-
- int nptTmp;
- register xPoint *ppt;
-
- register int x;
- register int y;
- register unsigned char *rrops;
- ilbmPrivGC *pGCPriv;
-
- pGCPriv = (ilbmPrivGC *) pGC->devPrivates[ilbmGCPrivateIndex].ptr;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBaseSave);
-
- rrops = pGCPriv->rrops;
- if ((mode == CoordModePrevious) && (npt > 1))
- for (ppt = pptInit + 1, nptTmp = npt - 1; --nptTmp >= 0; ppt++) {
- ppt->x += (ppt-1)->x;
- ppt->y += (ppt-1)->y;
- }
-
- nbox = REGION_NUM_RECTS(pGC->pCompositeClip);
- pbox = REGION_RECTS(pGC->pCompositeClip);
- for (; --nbox >= 0; pbox++)
- for (d = 0, pBase = pBaseSave; d < depthDst; d++, pBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- addrl = pBase;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++) {
- x = ppt->x + pDrawable->x;
- y = ppt->y + pDrawable->y;
- if ((x >= pbox->x1) && (x < pbox->x2) &&
- (y >= pbox->y1) && (y < pbox->y2))
- *ilbmScanline(addrl, x, y, auxDst) &= rmask[x & PIM];
- }
- break;
-
- case RROP_WHITE:
- for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++) {
- x = ppt->x + pDrawable->x;
- y = ppt->y + pDrawable->y;
- if ((x >= pbox->x1) && (x < pbox->x2) &&
- (y >= pbox->y1) && (y < pbox->y2))
- *ilbmScanline(addrl, x, y, auxDst) |= mask[x & PIM];
- }
- break;
-
- case RROP_INVERT:
- for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++) {
- x = ppt->x + pDrawable->x;
- y = ppt->y + pDrawable->y;
- if ((x >= pbox->x1) && (x < pbox->x2) &&
- (y >= pbox->y1) && (y < pbox->y2))
- *ilbmScanline(addrl, x, y, auxDst) ^= mask[x & PIM];
- }
- break;
-
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmpushpxl.c b/nx-X11/programs/Xserver/ilbm/ilbmpushpxl.c
deleted file mode 100644
index 337172703..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmpushpxl.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmpushpxl.c,v 3.0 1996/08/18 01:54:08 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmpushpxl.c,v 5.6 94/04/17 20:28:31 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "gcstruct.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "miscstruct.h"
-#include "maskbits.h"
-#include "regionstr.h"
-#include "ilbm.h"
-
-/* ilbmSolidPP is courtesy of xhacks@csri.toronto.edu
-
- For fillStyle==FillSolid, a monochrome PushPixels can be reduced to
- a ROP in the following way: (Note that the ROP is the same as the
- result of ROP(src=0x3,dst=0x5))
-
- src=0011 0000 0011
- dst=0101 0101 0101
- rop fg=0 fg=1
- GXclear 0x0 0000 0100 0100 0
- GXand 0x1 0001 0100 0101 s&d
- GXandReverse 0x2 0010 0100 0110 s&~d
- GXcopy 0x3 0011 0100 0111 s
- GXandInverted 0x4 0100 0101 0100 ~s&d
- GXnoop 0x5 0101 0101 0101 d
- GXxor 0x6 0110 0101 0110 s^d
- GXor 0x7 0111 0101 0111 s|d
- GXnor 0x8 1000 0110 0100 ~s&~d
- GXequiv 0x9 1001 0110 0101 ~s^d
- GXinvert 0xa 1010 0110 0110 ~d
- GXorReverse 0xb 1011 0110 0111 s|~d
- GXcopyInverted 0xc 1100 0111 0100 ~s
- GXorInverted 0xd 1101 0111 0101 ~s|d
- GXnand 0xe 1110 0111 0110 ~s|~d
- GXset 0xf 1111 0111 0111 1
-
-For src=0: newRop = 0x4|(rop>>2)
-For src=1: newRop = 0x4|(rop&3)
-*/
-
-/* ilbmSolidPP -- squeegees the forground color of pGC through pBitMap
- * into pDrawable. pBitMap is a stencil (dx by dy of it is used, it may
- * be bigger) which is placed on the drawable at xOrg, yOrg. Where a 1 bit
- * is set in the bitmap, the fill style is put onto the drawable using
- * the GC's logical function. The drawable is not changed where the bitmap
- * has a zero bit or outside the area covered by the stencil.
- */
-void
-ilbmSolidPP(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
- GCPtr pGC;
- PixmapPtr pBitMap;
- DrawablePtr pDrawable;
- int dx, dy, xOrg, yOrg;
-{
- unsigned char alu;
- RegionRec rgnDst;
- DDXPointPtr pptSrc;
- BoxRec srcBox;
- register DDXPointPtr ppt;
- register BoxPtr pbox;
- int i;
-
- if (!pGC->planemask & 1) return;
-
- /* compute the reduced rop function */
- alu = pGC->alu;
- if (!(pGC->fgPixel&1)) alu >>= 2;
- alu = (alu & 0x3) | 0x4;
- if (alu == GXnoop) return;
-
- srcBox.x1 = xOrg;
- srcBox.y1 = yOrg;
- srcBox.x2 = xOrg + dx;
- srcBox.y2 = yOrg + dy;
- REGION_INIT(pGC->pScreen, &rgnDst, &srcBox, 1);
-
- /* clip the shape of the dst to the destination composite clip */
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, pGC->pCompositeClip);
-
- if (!REGION_NIL(&rgnDst)) {
- i = REGION_NUM_RECTS(&rgnDst);
- pptSrc = (DDXPointPtr)ALLOCATE_LOCAL(i * sizeof(DDXPointRec));
- if (pptSrc) {
- for (pbox = REGION_RECTS(&rgnDst), ppt = pptSrc; --i >= 0;
- pbox++, ppt++) {
- ppt->x = pbox->x1 - xOrg;
- ppt->y = pbox->y1 - yOrg;
- }
- ilbmDoBitblt((DrawablePtr)pBitMap, pDrawable, alu, &rgnDst, pptSrc,
- pGC->planemask);
- DEALLOCATE_LOCAL(pptSrc);
- }
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
-}
-
-#define NPT 128
-
-/* ilbmPushPixels -- squeegees the forground color of pGC through pBitMap
- * into pDrawable. pBitMap is a stencil (dx by dy of it is used, it may
- * be bigger) which is placed on the drawable at xOrg, yOrg. Where a 1 bit
- * is set in the bitmap, the fill style is put onto the drawable using
- * the GC's logical function. The drawable is not changed where the bitmap
- * has a zero bit or outside the area covered by the stencil.
- */
-void
-ilbmPushPixels(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
- GCPtr pGC;
- PixmapPtr pBitMap;
- DrawablePtr pDrawable;
- int dx, dy, xOrg, yOrg;
-{
- int h, dxDivPPW, ibEnd;
- PixelType *pwLineStart;
- register PixelType *pw, *pwEnd;
- register PixelType mask;
- register int ib;
- register PixelType w;
- register int ipt; /* index into above arrays */
- Bool fInBox;
- DDXPointRec pt[NPT];
- int width[NPT];
-
- /* Now scan convert the pixmap and use the result to call fillspans in
- * in the drawable with the original GC */
- ipt = 0;
- dxDivPPW = dx/PPW;
- for (h = 0; h < dy; h++) {
-
- pw = (PixelType *)
- (((char *)(pBitMap->devPrivate.ptr))+(h * pBitMap->devKind));
- pwLineStart = pw;
- /* Process all words which are fully in the pixmap */
-
- fInBox = FALSE;
- pwEnd = pwLineStart + dxDivPPW;
- while (pw < pwEnd) {
- w = *pw;
- mask = endtab[1];
- for (ib = 0; ib < PPW; ib++) {
- if (w & mask) {
- if (!fInBox) {
- pt[ipt].x = ((pw - pwLineStart) << PWSH) + ib + xOrg;
- pt[ipt].y = h + yOrg;
- /* start new box */
- fInBox = TRUE;
- }
- } else {
- if (fInBox) {
- width[ipt] = ((pw - pwLineStart) << PWSH) +
- ib + xOrg - pt[ipt].x;
- if (++ipt >= NPT) {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt,
- width, TRUE);
- ipt = 0;
- }
- /* end box */
- fInBox = FALSE;
- }
- }
- mask = SCRRIGHT(mask, 1);
- }
- pw++;
- }
- ibEnd = dx & PIM;
- if (ibEnd) {
- /* Process final partial word on line */
- w = *pw;
- mask = endtab[1];
- for (ib = 0; ib < ibEnd; ib++) {
- if (w & mask) {
- if (!fInBox) {
- /* start new box */
- pt[ipt].x = ((pw - pwLineStart) << PWSH) + ib + xOrg;
- pt[ipt].y = h + yOrg;
- fInBox = TRUE;
- }
- } else {
- if (fInBox) {
- /* end box */
- width[ipt] = ((pw - pwLineStart) << PWSH) +
- ib + xOrg - pt[ipt].x;
- if (++ipt >= NPT) {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt,
- width, TRUE);
- ipt = 0;
- }
- fInBox = FALSE;
- }
- }
- mask = SCRRIGHT(mask, 1);
- }
- }
- /* If scanline ended with last bit set, end the box */
- if (fInBox) {
- width[ipt] = dx + xOrg - pt[ipt].x;
- if (++ipt >= NPT) {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt, width, TRUE);
- ipt = 0;
- }
- }
- }
- /* Flush any remaining spans */
- if (ipt) {
- (*pGC->ops->FillSpans)(pDrawable, pGC, ipt, pt, width, TRUE);
- }
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmscrinit.c b/nx-X11/programs/Xserver/ilbm/ilbmscrinit.c
deleted file mode 100644
index 37425d0d6..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmscrinit.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmscrinit.c,v 3.4 1998/07/26 01:53:45 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmscrinit.c,v 5.17 94/04/17 20:28:34 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h> /* for xColorItem */
-#include <X11/Xmd.h>
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-#include "resource.h"
-#include "colormap.h"
-#include "ilbm.h"
-#include "mistruct.h"
-#include "dix.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "migc.h"
-#include "servermd.h"
-
-#ifdef PIXMAP_PER_WINDOW
-int frameWindowPrivateIndex;
-#endif
-int ilbmWindowPrivateIndex;
-int ilbmGCPrivateIndex;
-int ilbmScreenPrivateIndex;
-
-static unsigned long ilbmGeneration = 0;
-
-BSFuncRec ilbmBSFuncRec = {
- ilbmSaveAreas,
- ilbmRestoreAreas,
- (BackingStoreSetClipmaskRgnProcPtr) 0,
- (BackingStoreGetImagePixmapProcPtr) 0,
- (BackingStoreGetSpansPixmapProcPtr) 0,
-};
-
-Bool
-ilbmCloseScreen(index, pScreen)
- int index;
- ScreenPtr pScreen;
-{
- int d;
- DepthPtr depths = pScreen->allowedDepths;
-
- for (d = 0; d < pScreen->numDepths; d++)
- xfree(depths[d].vids);
- xfree(depths);
- xfree(pScreen->visuals);
- xfree(pScreen->devPrivates[ilbmScreenPrivateIndex].ptr);
- return(TRUE);
-}
-
-Bool
-ilbmCreateScreenResources(pScreen)
- ScreenPtr pScreen;
-{
- Bool retval;
-
- pointer oldDevPrivate = pScreen->devPrivate;
-
- pScreen->devPrivate = pScreen->devPrivates[ilbmScreenPrivateIndex].ptr;
- retval = miCreateScreenResources(pScreen);
-
- /* Modify screen's pixmap devKind value stored off devPrivate to
- * be the width of a single plane in longs rather than the width
- * of a chunky screen in longs as incorrectly setup by the mi routine.
- */
- ((PixmapPtr)pScreen->devPrivate)->devKind = BitmapBytePad(pScreen->width);
- pScreen->devPrivates[ilbmScreenPrivateIndex].ptr = pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
- return(retval);
-}
-
-Bool
-ilbmAllocatePrivates(pScreen, pWinIndex, pGCIndex)
- ScreenPtr pScreen;
- int *pWinIndex, *pGCIndex;
-{
- if (ilbmGeneration != serverGeneration) {
-#ifdef PIXMAP_PER_WINDOW
- frameWindowPrivateIndex = AllocateWindowPrivateIndex();
-#endif
- ilbmWindowPrivateIndex = AllocateWindowPrivateIndex();
- ilbmGCPrivateIndex = AllocateGCPrivateIndex();
- ilbmGeneration = serverGeneration;
- }
- if (pWinIndex)
- *pWinIndex = ilbmWindowPrivateIndex;
- if (pGCIndex)
- *pGCIndex = ilbmGCPrivateIndex;
-
- ilbmScreenPrivateIndex = AllocateScreenPrivateIndex();
- pScreen->GetWindowPixmap = ilbmGetWindowPixmap;
- pScreen->SetWindowPixmap = ilbmSetWindowPixmap;
- return(AllocateWindowPrivate(pScreen, ilbmWindowPrivateIndex, sizeof(ilbmPrivWin)) &&
- AllocateGCPrivate(pScreen, ilbmGCPrivateIndex, sizeof(ilbmPrivGC)));
-}
-
-/* dts * (inch/dot) * (25.4 mm / inch) = mm */
-Bool
-ilbmScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
-{
- VisualPtr visuals;
- DepthPtr depths;
- int nvisuals;
- int ndepths;
- int rootdepth;
- VisualID defaultVisual;
- pointer oldDevPrivate;
-
- rootdepth = 0;
- if (!ilbmInitVisuals(&visuals, &depths, &nvisuals, &ndepths, &rootdepth,
- &defaultVisual, 256, 8)) {
- ErrorF("ilbmInitVisuals: FALSE\n");
- return FALSE;
- }
- if (!ilbmAllocatePrivates(pScreen,(int *)NULL, (int *)NULL)) {
- ErrorF("ilbmAllocatePrivates: FALSE\n");
- return FALSE;
- }
-
- pScreen->defColormap = (Colormap)FakeClientID(0);
- /* whitePixel, blackPixel */
- pScreen->blackPixel = 0;
- pScreen->whitePixel = 0;
- pScreen->QueryBestSize = ilbmQueryBestSize;
- /* SaveScreen */
- pScreen->GetImage = ilbmGetImage;
- pScreen->GetSpans = ilbmGetSpans;
- pScreen->CreateWindow = ilbmCreateWindow;
- pScreen->DestroyWindow = ilbmDestroyWindow;
- pScreen->PositionWindow = ilbmPositionWindow;
- pScreen->ChangeWindowAttributes = ilbmChangeWindowAttributes;
- pScreen->RealizeWindow = ilbmMapWindow;
- pScreen->UnrealizeWindow = ilbmUnmapWindow;
- pScreen->PaintWindowBackground = ilbmPaintWindow;
- pScreen->PaintWindowBorder = ilbmPaintWindow;
- pScreen->CopyWindow = ilbmCopyWindow;
- pScreen->CreatePixmap = ilbmCreatePixmap;
- pScreen->DestroyPixmap = ilbmDestroyPixmap;
- pScreen->RealizeFont = ilbmRealizeFont;
- pScreen->UnrealizeFont = ilbmUnrealizeFont;
- pScreen->CreateGC = ilbmCreateGC;
- pScreen->CreateColormap = ilbmInitializeColormap;
- pScreen->DestroyColormap = (void (*)())NoopDDA;
- pScreen->InstallColormap = ilbmInstallColormap;
- pScreen->UninstallColormap = ilbmUninstallColormap;
- pScreen->ListInstalledColormaps = ilbmListInstalledColormaps;
- pScreen->StoreColors = (void (*)())NoopDDA;
- pScreen->ResolveColor = ilbmResolveColor;
- pScreen->BitmapToRegion = ilbmPixmapToRegion;
- oldDevPrivate = pScreen->devPrivate;
- if (!miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, rootdepth,
- ndepths, depths, defaultVisual, nvisuals, visuals)) {
- ErrorF("miScreenInit: FALSE\n");
- return FALSE;
- }
-
- pScreen->CloseScreen = ilbmCloseScreen;
- pScreen->CreateScreenResources = ilbmCreateScreenResources;
- pScreen->BackingStoreFuncs = ilbmBSFuncRec;
-
- pScreen->devPrivates[ilbmScreenPrivateIndex].ptr = pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
-
- return TRUE;
-}
-
-PixmapPtr
-ilbmGetWindowPixmap(pWin)
- WindowPtr pWin;
-{
-#ifdef PIXMAP_PER_WINDOW
- return (PixmapPtr)(pWin->devPrivates[frameWindowPrivateIndex].ptr);
-#else
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- return (* pScreen->GetScreenPixmap)(pScreen);
-#endif
-}
-
-void
-ilbmSetWindowPixmap(pWin, pPix)
- WindowPtr pWin;
- PixmapPtr pPix;
-{
-#ifdef PIXMAP_PER_WINDOW
- pWin->devPrivates[frameWindowPrivateIndex].ptr = (pointer)pPix;
-#else
- (* pWin->drawable.pScreen->SetScreenPixmap)(pPix);
-#endif
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmsetsp.c b/nx-X11/programs/Xserver/ilbm/ilbmsetsp.c
deleted file mode 100644
index 0e2df7028..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmsetsp.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmsetsp.c,v 3.0 1996/08/18 01:54:10 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmsetsp.c,v 5.8 94/04/17 20:28:34 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "misc.h"
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "ilbm.h"
-#include "maskbits.h"
-
-#include "servermd.h"
-
-
-/* ilbmSetScanline -- copies the bits from psrc to the drawable starting at
- * (xStart, y) and continuing to (xEnd, y). xOrigin tells us where psrc
- * starts on the scanline. (I.e., if this scanline passes through multiple
- * boxes, we may not want to start grabbing bits at psrc but at some offset
- * further on.)
- */
-ilbmSetScanline(y, xOrigin, xStart, xEnd, psrc, alu, pdstBase, widthDst, auxDst,
- depthDst, widthSrc)
- int y;
- int xOrigin; /* where this scanline starts */
- int xStart; /* first bit to use from scanline */
- int xEnd; /* last bit to use from scanline + 1 */
- register PixelType *psrc;
- register int alu; /* raster op */
- PixelType *pdstBase; /* start of the drawable */
- int widthDst; /* width of drawable in words */
- int auxDst;
- int depthDst;
- int widthSrc; /* width of drawable in words */
-{
- int w; /* width of scanline in bits */
- register PixelType *pdst; /* where to put the bits */
- register PixelType tmpSrc; /* scratch buffer to collect bits in */
- int dstBit; /* offset in bits from beginning of
- * word */
- register int nstart; /* number of bits from first partial */
- register int nend; /* " " last partial word */
- int offSrc;
- PixelType startmask, endmask;
- PixelType *savePsrc = psrc + ((xStart - xOrigin) >> PWSH);
- int nlMiddle, nl;
- int d;
-
- for (d = 0; d < depthDst; d++) {
- pdst = ilbmScanline(pdstBase, xStart, y, auxDst) + widthDst * d; /* @@@ NEXT PLANE @@@ */
- psrc = savePsrc + widthSrc * d; /* @@@ NEXT PLANE @@@ */
- offSrc = (xStart - xOrigin) & PIM;
- w = xEnd - xStart;
- dstBit = xStart & PIM;
-
- if (dstBit + w <= PPW) {
- getandputrop(psrc, offSrc, dstBit, w, pdst, alu)
- } else {
- maskbits(xStart, w, startmask, endmask, nlMiddle);
- if (startmask)
- nstart = PPW - dstBit;
- else
- nstart = 0;
- if (endmask)
- nend = xEnd & PIM;
- else
- nend = 0;
- if (startmask) {
- getandputrop(psrc, offSrc, dstBit, nstart, pdst, alu)
- pdst++;
- offSrc += nstart;
- if (offSrc > PLST) {
- psrc++;
- offSrc -= PPW;
- }
- }
- nl = nlMiddle;
- while (nl--) {
- getbits(psrc, offSrc, PPW, tmpSrc);
- DoRop(*pdst, alu, tmpSrc, *pdst);
- pdst++;
- psrc++;
- }
- if (endmask) {
- getandputrop0(psrc, offSrc, nend, pdst, alu);
- }
- }
- }
-}
-
-/* SetSpans -- for each span copy pwidth[i] bits from psrc to pDrawable at
- * ppt[i] using the raster op from the GC. If fSorted is TRUE, the scanlines
- * are in increasing Y order.
- * Source bit lines are server scanline padded so that they always begin
- * on a word boundary.
- */
-void
-ilbmSetSpans(pDrawable, pGC, pcharsrc, ppt, pwidth, nspans, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- char *pcharsrc;
- register DDXPointPtr ppt;
- int *pwidth;
- int nspans;
- int fSorted;
-{
- PixelType *psrc = (PixelType *)pcharsrc;
- PixelType *pdstBase; /* start of dst bitmap */
- int widthDst; /* width of bitmap in words */
- int auxDst;
- int depthDst;
- int widthSrc;
- register BoxPtr pbox, pboxLast, pboxTest;
- register DDXPointPtr pptLast;
- int alu;
- RegionPtr prgnDst;
- int xStart, xEnd;
- int yMax;
-
- alu = pGC->alu;
- prgnDst = pGC->pCompositeClip;
-
- pptLast = ppt + nspans;
-
- yMax = pDrawable->y + (int) pDrawable->height;
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, widthDst, auxDst, depthDst,
- pdstBase);
-
- pbox = REGION_RECTS(prgnDst);
- pboxLast = pbox + REGION_NUM_RECTS(prgnDst);
-
- if (fSorted) {
- /* scan lines sorted in ascending order. Because they are sorted, we
- * don't have to check each scanline against each clip box. We can be
- * sure that this scanline only has to be clipped to boxes at or after the
- * beginning of this y-band
- */
- pboxTest = pbox;
- while (ppt < pptLast) {
- pbox = pboxTest;
- if (ppt->y >= yMax)
- break;
- while (pbox < pboxLast) {
- if (pbox->y1 > ppt->y) {
- /* scanline is before clip box */
- break;
- } else if (pbox->y2 <= ppt->y) {
- /* clip box is before scanline */
- pboxTest = ++pbox;
- continue;
- } else if (pbox->x1 > ppt->x + *pwidth) {
- /* clip box is to right of scanline */
- break;
- } else if (pbox->x2 <= ppt->x) {
- /* scanline is to right of clip box */
- pbox++;
- continue;
- }
-
- /* at least some of the scanline is in the current clip box */
- xStart = max(pbox->x1, ppt->x);
- xEnd = min(ppt->x + *pwidth, pbox->x2);
- widthSrc = PixmapWidthInPadUnits(*pwidth, 1);
- ilbmSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu, pdstBase,
- widthDst, auxDst, depthDst, widthSrc);
- if (ppt->x + *pwidth <= pbox->x2) {
- /* End of the line, as it were */
- break;
- } else
- pbox++;
- }
- /* We've tried this line against every box; it must be outside them
- * all. move on to the next point */
- ppt++;
- psrc += widthSrc * depthDst;
- pwidth++;
- }
- } else {
- /* scan lines not sorted. We must clip each line against all the boxes */
- while (ppt < pptLast) {
- if (ppt->y >= 0 && ppt->y < yMax) {
- for (pbox = REGION_RECTS(prgnDst); pbox< pboxLast; pbox++) {
- if (pbox->y1 > ppt->y) {
- /* rest of clip region is above this scanline,
- * skip it */
- break;
- }
- if (pbox->y2 <= ppt->y) {
- /* clip box is below scanline */
- pbox++;
- break;
- }
- if (pbox->x1 <= ppt->x + *pwidth &&
- pbox->x2 > ppt->x) {
- xStart = max(pbox->x1, ppt->x);
- xEnd = min(pbox->x2, ppt->x + *pwidth);
- widthSrc = PixmapWidthInPadUnits(*pwidth, 1);
- ilbmSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu,
- pdstBase, widthDst, auxDst, depthDst,
- widthSrc);
- }
-
- }
- }
- psrc += widthSrc * depthDst;
- ppt++;
- pwidth++;
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmtegblt.c b/nx-X11/programs/Xserver/ilbm/ilbmtegblt.c
deleted file mode 100644
index c1c1eac49..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmtegblt.c
+++ /dev/null
@@ -1,599 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmtegblt.c,v 3.0 1996/08/18 01:54:11 dawes Exp $ */
-/* $XConsortium: ilbmtegblt.c,v 5.14 94/04/17 20:28:35 dpw Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ilbm.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-/*
- this works for fonts with glyphs <= PPW bits wide.
-
- This should be called only with a terminal-emulator font;
-this means that the FIXED_METRICS flag is set, and that
-glyphbounds == charbounds.
-
- in theory, this goes faster; even if it doesn't, it reduces the
-flicker caused by writing a string over itself with image text (since
-the background gets repainted per character instead of per string.)
-this seems to be important for some converted X10 applications.
-
- Image text looks at the bits in the glyph and the fg and bg in the
-GC. it paints a rectangle, as defined in the protocol dcoument,
-and the paints the characters.
-
-*/
-
-#if defined(NO_3_60_CG4) && defined(FASTPUTBITS) && defined(FASTGETBITS)
-#define FASTCHARS
-#endif
-
-/*
- * this macro "knows" that only characters <= 8 bits wide will
- * fit this case (which is why it is independent of GLYPHPADBYTES)
- */
-
-#if (BITMAP_BIT_ORDER == MSBFirst) && (GLYPHPADBYTES != 4)
-#if GLYPHPADBYTES == 1
-#define ShiftAmnt 24
-#else
-#define ShiftAmnt 16
-#endif
-
-/*
- * Note: for BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER, SCRRIGHT() evaluates its
- * first argument more than once. Thus the imbedded char++ have to be moved.
- * (DHD)
- */
-#if BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER
-#if PPW == 32
-#define GetBits4 c = (*char1++ << ShiftAmnt) | \
- SCRRIGHT (*char2++ << ShiftAmnt, xoff2) | \
- SCRRIGHT (*char3++ << ShiftAmnt, xoff3) | \
- SCRRIGHT (*char4++ << ShiftAmnt, xoff4);
-#else /* PPW */
-#define GetBits4 c = ((unsigned long)(*char1++ << ShiftAmnt) << 32 ) | \
- (SCRRIGHT (*char2++ << ShiftAmnt, xoff2) << 32 ) | \
- (SCRRIGHT (*char3++ << ShiftAmnt, xoff3) << 32 ) | \
- (SCRRIGHT (*char4++ << ShiftAmnt, xoff4) << 32 ) | \
- (*char5++ << ShiftAmnt) | \
- SCRRIGHT (*char6++ << ShiftAmnt, xoff6) | \
- SCRRIGHT (*char7++ << ShiftAmnt, xoff7) | \
- SCRRIGHT (*char8++ << ShiftAmnt, xoff8);
-#endif /* PPW */
-#else /* BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER */
-#if PPW == 32
-#define GetBits4 c = (*char1++ << ShiftAmnt) | \
- SCRRIGHT (*char2 << ShiftAmnt, xoff2) | \
- SCRRIGHT (*char3 << ShiftAmnt, xoff3) | \
- SCRRIGHT (*char4 << ShiftAmnt, xoff4); \
- char2++; char3++; char4++;
-#else /* PPW == 64 */
-#define GetBits4 c = ((unsigned long)(*char1++ << ShiftAmnt) << 32 ) | \
- (SCRRIGHT (*char2 << ShiftAmnt, xoff2) << 32 ) | \
- (SCRRIGHT (*char3 << ShiftAmnt, xoff3) << 32 ) | \
- (SCRRIGHT (*char4 << ShiftAmnt, xoff4) << 32 ) | \
- (*char5++ << ShiftAmnt) | \
- SCRRIGHT (*char6 << ShiftAmnt, xoff6) | \
- SCRRIGHT (*char7 << ShiftAmnt, xoff7) | \
- SCRRIGHT (*char8 << ShiftAmnt, xoff8); \
- char2++; char3++; char4++; char6++; char7++; char8++;
-#endif /* PPW */
-#endif /* BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER */
-
-#else /* (BITMAP_BIT_ORDER != MSBFirst) || (GLYPHPADBYTES == 4) */
-
-#if BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER
-#if PPW == 32
-#define GetBits4 c = *char1++ | \
- SCRRIGHT (*char2++, xoff2) | \
- SCRRIGHT (*char3++, xoff3) | \
- SCRRIGHT (*char4++, xoff4);
-#else /* PPW == 64 */
-#define GetBits4 c = (unsigned long)(((*char1++) << 64 ) | \
- (SCRRIGHT (*char2++, xoff2) << 64 ) | \
- (SCRRIGHT (*char3++, xoff3) << 64 ) | \
- (SCRRIGHT (*char4++, xoff4) << 64 ) | \
- SCRRIGHT (*char5++, xoff5) | \
- SCRRIGHT (*char6++, xoff6) | \
- SCRRIGHT (*char7++, xoff7) | \
- SCRRIGHT (*char8++, xoff8));
-#endif /* PPW */
-#else /* BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER */
-#if PPW == 32
-#define GetBits4 c = *char1++ | \
- SCRRIGHT (*char2, xoff2) | \
- SCRRIGHT (*char3, xoff3) | \
- SCRRIGHT (*char4, xoff4); \
- char2++; char3++; char4++;
-#else /* PPW == 64 */
-#define GetBits4 c = (unsigned long)(((*char1++) << 64 ) | \
- (SCRRIGHT (*char2, xoff2) << 64 ) | \
- (SCRRIGHT (*char3, xoff3) << 64 ) | \
- (SCRRIGHT (*char4, xoff4) << 64 ) | \
- SCRRIGHT (*char5, xoff5) | \
- SCRRIGHT (*char6, xoff6) | \
- SCRRIGHT (*char7, xoff7) | \
- SCRRIGHT (*char8, xoff8)); \
- char2++; char3++; char4++; \
- char5++; char6++; char7++; char8++;
-#endif /* PPW */
-#endif /* BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER */
-
-#endif /* BITMAP_BIT_ORDER && GLYPHPADBYTES */
-
-
-#if GLYPHPADBYTES == 1
-typedef unsigned char *glyphPointer;
-#define USE_LEFTBITS
-#endif
-
-#if GLYPHPADBYTES == 2
-typedef unsigned short *glyphPointer;
-#define USE_LEFTBITS
-#endif
-
-#if GLYPHPADBYTES == 4
-typedef unsigned int *glyphPointer;
-#endif
-
-#ifdef USE_LEFTBITS
-#define GetBits1 getleftbits (char1, widthGlyph, c); \
- c &= glyphMask; \
- char1 = (glyphPointer) (((char *) char1) + glyphBytes);
-#else
-#define GetBits1 c = *char1++;
-#endif
-
-void
-ilbmTEGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- FontPtr pfont = pGC->font;
- int widthDst;
- PixelType *pdstBase; /* pointer to longword with top row
- of current glyph */
-
- int h; /* height of glyph and char */
- register int xpos; /* current x */
- int ypos; /* current y */
- int widthGlyph;
-
- int hTmp; /* counter for height */
- register PixelType startmask, endmask;
- int nfirst; /* used if glyphs spans a longword boundary */
- BoxRec bbox; /* for clipping */
- int widthGlyphs;
- int auxDst;
- int depthDst;
- PixelType *saveDst;
- register PixelType *dst;
- register PixelType c;
- register int d;
- register int xoff1, xoff2, xoff3, xoff4;
- register glyphPointer char1, char2, char3, char4;
- glyphPointer schar1, schar2, schar3, schar4;
-#if PPW == 64
- register int xoff5, xoff6, xoff7, xoff8;
- register glyphPointer char5, char6, char7, char8;
- glyphPointer schar5, schar6, schar7, schar8;
-#endif /* PPW */
-
- unsigned char *rrops;
-#ifdef USE_LEFTBITS
- register PixelType glyphMask;
- register PixelType tmpSrc;
- register int glyphBytes;
-#endif
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, widthDst, auxDst, depthDst,
- pdstBase);
-
- xpos = x + pDrawable->x;
- ypos = y + pDrawable->y;
-
- widthGlyph = FONTMAXBOUNDS(pfont,characterWidth);
- h = FONTASCENT(pfont) + FONTDESCENT(pfont);
-
- xpos += FONTMAXBOUNDS(pfont,leftSideBearing);
- ypos -= FONTASCENT(pfont);
-
- rrops = ((ilbmPrivGCPtr) pGC->devPrivates[ilbmGCPrivateIndex].ptr)->rropOS;
-
- bbox.x1 = xpos;
- bbox.x2 = xpos + (widthGlyph * nglyph);
- bbox.y1 = ypos;
- bbox.y2 = ypos + h;
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox)) {
- case rgnPART:
- /* this is the WRONG thing to do, but it works.
- calling the non-terminal text is easy, but slow, given
- what we know about the font.
-
- the right thing to do is something like:
- for each clip rectangle
- compute at which row the glyph starts to be in it,
- and at which row the glyph ceases to be in it
- compute which is the first glyph inside the left
- edge, and the last one inside the right edge
- draw a fractional first glyph, using only
- the rows we know are in
- draw all the whole glyphs, using the appropriate rows
- draw any pieces of the last glyph, using the right rows
-
- this way, the code would take advantage of knowing that
- all glyphs are the same height and don't overlap.
-
- one day...
- */
- ilbmImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
- case rgnOUT:
- return;
- }
- pdstBase = ilbmScanlineDeltaNoBankSwitch(pdstBase, ypos, auxDst);
- widthGlyphs = widthGlyph * PGSZB;
-
-#ifdef USE_LEFTBITS
- glyphMask = endtab[widthGlyph];
- glyphBytes = GLYPHWIDTHBYTESPADDED(*ppci);
-#endif
-
- if (nglyph >= PGSZB && widthGlyphs <= PPW) {
- while (nglyph >= PGSZB) {
- nglyph -= PGSZB;
- xoff1 = xpos & PIM;
- xoff2 = widthGlyph;
- xoff3 = xoff2 + widthGlyph;
- xoff4 = xoff3 + widthGlyph;
-#if PPW == 64
- xoff5 = xoff4 + widthGlyph;
- xoff6 = xoff5 + widthGlyph;
- xoff7 = xoff6 + widthGlyph;
- xoff8 = xoff7 + widthGlyph;
-#endif /* PPW */
- schar1 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar2 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar3 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar4 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
-#if PPW == 64
- schar5 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar6 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar7 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar8 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
-#endif /* PPW */
-
- hTmp = h;
- saveDst = ilbmScanlineOffset(pdstBase, (xpos >> PWSH)); /* switch now */
-
-#ifndef FASTCHARS
- if (xoff1 + widthGlyphs <= PPW) {
- maskpartialbits (xoff1, widthGlyphs, startmask);
-#endif
- for (d = 0; d < depthDst; d++) {
- hTmp = h;
- dst = saveDst;
- saveDst += widthDst; /* @@@ NEXT PLANE @@@ */
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (hTmp--) {
-#ifdef FASTCHARS
- FASTPUTBITS(0, xoff1, widthGlyphs, dst);
-#else
- *(dst) &= ~startmask;
-#endif
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (hTmp--) {
-#ifdef FASTCHARS
- FASTPUTBITS(~0, xoff1, widthGlyphs, dst);
-#else
- *(dst) |= startmask;
-#endif
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_INVERT:
- char1 = schar1;
- char2 = schar2;
- char3 = schar3;
- char4 = schar4;
- /* XXX */
- while (hTmp--) {
- GetBits4
-#ifdef FASTCHARS
-# if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyphs;
-# endif
- FASTPUTBITS(~c, xoff1, widthGlyphs, dst);
-#else
- *(dst) = (*dst) & ~startmask | ~SCRRIGHT(c, xoff1) & startmask;
-#endif
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_COPY:
- char1 = schar1;
- char2 = schar2;
- char3 = schar3;
- char4 = schar4;
-
- while (hTmp--) {
- GetBits4
-#ifdef FASTCHARS
-# if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyphs;
-#endif
- FASTPUTBITS(c, xoff1, widthGlyphs, dst);
-#else
- *(dst) = (*dst) & ~startmask | SCRRIGHT(c, xoff1) & startmask;
-#endif
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch (rrops[d]) */
- } /* for (d = ... ) */
-#ifndef FASTCHARS
- } else {
- maskPPWbits (xoff1, widthGlyphs, startmask, endmask);
- nfirst = PPW - xoff1;
- for (d = 0; d < depthDst; d++) {
- hTmp = h;
- dst = saveDst;
- saveDst += widthDst; /* @@@ NEXT PLANE @@@ */
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (hTmp--) {
- dst[0] &= ~startmask;
- dst[1] &= ~endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (hTmp--) {
- dst[0] |= startmask;
- dst[1] |= endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_INVERT:
- char1 = schar1;
- char2 = schar2;
- char3 = schar3;
- char4 = schar4;
-
- while (hTmp--) {
- GetBits4
- dst[0] = dst[0] & ~startmask |
- ~SCRRIGHT(c,xoff1) & startmask;
- dst[1] = dst[1] & ~endmask |
- ~SCRLEFT(c,nfirst) & endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_COPY:
- char1 = schar1;
- char2 = schar2;
- char3 = schar3;
- char4 = schar4;
-
- while (hTmp--) {
- GetBits4
- dst[0] = dst[0] & ~startmask |
- SCRRIGHT(c,xoff1) & startmask;
- dst[1] = dst[1] & ~endmask |
- SCRLEFT(c,nfirst) & endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
-
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ... ) */
- }
-#endif
- xpos += widthGlyphs;
- }
- }
-
- while (nglyph--) {
- xoff1 = xpos & PIM;
- schar1 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
- hTmp = h;
- saveDst = ilbmScanlineOffset(pdstBase, (xpos >> PWSH));
-
- if (xoff1 + widthGlyph <= PPW) {
- maskpartialbits (xoff1, widthGlyph, startmask);
-
- for (d = 0; d < depthDst; d++) {
- hTmp = h;
- dst = saveDst;
- saveDst += widthDst; /* @@@ NEXT PLANE @@@ */
- char1 = schar1;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (hTmp--) {
- (*dst) &= ~startmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (hTmp--) {
- (*dst) |= startmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_INVERT:
- while (hTmp--) {
-#ifdef FASTCHARS
-#ifdef USE_LEFTBITS
- FASTGETBITS (char1,0,widthGlyph,c);
- char1 = (glyphPointer) (((char *) char1) + glyphBytes);
-#else
- c = *char1++;
-#if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyph;
-#endif
-#endif
- FASTPUTBITS (~c,xoff1,widthGlyph,dst);
-#else
- GetBits1
- (*dst) = (*dst) & ~startmask | ~SCRRIGHT(c, xoff1) & startmask;
-#endif
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_COPY:
- while (hTmp--) {
-#ifdef FASTCHARS
-#ifdef USE_LEFTBITS
- FASTGETBITS (char1,0,widthGlyph,c);
- char1 = (glyphPointer) (((char *) char1) + glyphBytes);
-#else
- c = *char1++;
-#if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyph;
-#endif
-#endif
- FASTPUTBITS (c,xoff1,widthGlyph,dst);
-#else
- GetBits1
- (*dst) = (*dst) & ~startmask | SCRRIGHT(c, xoff1) & startmask;
-#endif
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
- } else {
- maskPPWbits (xoff1, widthGlyph, startmask, endmask);
- nfirst = PPW - xoff1;
-
- for (d = 0; d < depthDst; d++) {
- hTmp = h;
- dst = saveDst;
- saveDst += widthDst; /* @@@ NEXT PLANE @@@ */
- char1 = schar1;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (hTmp--) {
- dst[0] &= ~startmask;
- dst[1] &= ~endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (hTmp--) {
- dst[0] |= startmask;
- dst[1] |= endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_INVERT:
- while (hTmp--) {
- GetBits1
- dst[0] = dst[0] & ~startmask |
- ~SCRRIGHT(c,xoff1) & startmask;
- dst[1] = dst[1] & ~endmask |
- ~SCRLEFT(c,nfirst) & endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_COPY:
- while (hTmp--) {
- GetBits1
- dst[0] = dst[0] & ~startmask |
- SCRRIGHT(c,xoff1) & startmask;
- dst[1] = dst[1] & ~endmask |
- SCRLEFT(c,nfirst) & endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
- }
-
- xpos += widthGlyph;
- }
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmtile.c b/nx-X11/programs/Xserver/ilbm/ilbmtile.c
deleted file mode 100644
index b35d00028..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmtile.c
+++ /dev/null
@@ -1,857 +0,0 @@
-/* $XFree86$ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: ilbmtile.c,v 5.8 94/04/17 20:28:36 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "ilbm.h"
-#include "maskbits.h"
-
-#include "mergerop.h"
-/*
-
- the boxes are already translated.
-
- NOTE:
- iy = ++iy < tileHeight ? iy : 0
-is equivalent to iy%= tileheight, and saves a division.
-*/
-
-/*
- tile area with a PPW bit wide pixmap
-*/
-void
-MROP_NAME(ilbmTileAreaPPW)(pDraw, nbox, pbox, alu, ptile, planemask)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr ptile;
- unsigned long planemask;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
- register PixelType srcpix;
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- MROP_DECLARE_REG ()
- register int h; /* height of current box */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType *p; /* pointer to bits we're writing */
- int auxDst;
- int depthDst;
- int tlwidth;
- register int d;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwExtra; /* to get from right of box to left of next span */
- register int iy; /* index of current scanline in tile */
- PixelType *pbits; /* pointer to start of drawable */
- PixelType *saveP;
- PixelType *pSaveSrc;
- int saveH;
- int saveIY;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- pbits);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = ptile->drawable.height;
- tlwidth = ptile->devKind/sizeof(PixelType);
- pSaveSrc = (PixelType *)(ptile->devPrivate.ptr);
-
- while (nbox--) {
- w = pbox->x2 - pbox->x1;
- saveH = pbox->y2 - pbox->y1;
- saveIY = pbox->y1 % tileHeight;
- saveP = ilbmScanline(pbits, pbox->x1, pbox->y1, auxDst);
- psrc = pSaveSrc;
-
- if (((pbox->x1 & PIM) + w) < PPW) {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = auxDst;
- for (d = 0; d < depthDst; d++, saveP += nlwidth, psrc += tileHeight) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- p = saveP;
- h = saveH;
- iy = saveIY;
-
- while (h--) {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- *p = MROP_MASK(srcpix,*p,startmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- }
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
-
- for (d = 0; d < depthDst; d++, saveP += nlwidth, psrc += tileHeight) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- p = saveP;
- h = saveH;
- iy = saveIY;
- nlwExtra = auxDst - nlwMiddle;
-
- if (startmask && endmask) {
- nlwExtra -= 1;
- while (h--) {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK (srcpix,*p,startmask);
- p++;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- } else if (startmask && !endmask) {
- nlwExtra -= 1;
- while (h--) {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK(srcpix,*p,startmask);
- p++;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
- ilbmScanlineInc(p, nlwExtra);
- }
- } else if (!startmask && endmask) {
- while (h--) {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- } else { /* no ragged bits at either end */
- while (h--) {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--) {
- *p = MROP_SOLID (srcpix,*p);
- p++;
- }
- ilbmScanlineInc(p, nlwExtra);
- }
- }
- } /* for (d = ...) */
- }
- pbox++;
- }
-}
-
-void
-MROP_NAME(ilbmTileArea)(pDraw, nbox, pbox, alu, pTile, xOff, yOff, planemask)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr pTile;
- int xOff;
- int yOff;
- unsigned long planemask;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int nlwidth; /* width in longwords of the drawable */
- MROP_DECLARE_REG ()
- register int h; /* height of current box */
- register PixelType *pdst; /* pointer to bits we're writing */
- register PixelType tmpsrc, tmpdst;
- int auxDst;
- int depthDst;
- int sizeTile;
- int tileLine;
- int iline;
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- int saveW;
- PixelType *psrcT;
- int d;
- int nstart;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
- int iy;
- PixelType *pBase; /* pointer to start of drawable */
- PixelType *saveP;
- PixelType *pStartDst;
- PixelType *pStartTile;
- int saveH;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- pBase);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = pTile->drawable.height;
- tileWidth = pTile->drawable.width;
- tlwidth = pTile->devKind/sizeof(PixelType);
- sizeTile = tlwidth * tileHeight;
-
- xSrc = pDraw->x + ((xOff % tileWidth) - tileWidth);
- ySrc = pDraw->y + ((yOff % tileHeight) - tileHeight);
-
- while (nbox--) {
- saveW = pbox->x2 - pbox->x1;
- iline = (pbox->y1 - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr;
- tileLine = iline * tlwidth;
- saveH = pbox->y2 - pbox->y1;
- saveP = ilbmScanline(pBase, pbox->x1, pbox->y1, auxDst);
-
- for (d = 0; d < depthDst; d++, psrcT += sizeTile, saveP += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- h = saveH;
- pStartDst = saveP;
- pStartTile = psrcT + tileLine;
- iy = iline;
-
- while (h--) {
- x = pbox->x1;
- width = saveW;
- pdst = pStartDst;
- while (width > 0) {
- psrc = pStartTile;
- w = min(tileWidth, width);
- if ((rem = (x - xSrc) % tileWidth) != 0) {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
-
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), w, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), w, pdst);
-
- if ((x & PIM) + w >= PPW)
- pdst++;
- } else if (((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- tmpsrc = *psrc;
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), w, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), w, pdst);
- } else {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if (startmask) {
- tmpsrc = *psrc;
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), nstart, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), nstart, pdst);
- pdst++;
- if (srcStartOver)
- psrc++;
- }
-
- while (nlMiddle--) {
- getbits (psrc, nstart, PPW, tmpsrc);
-#if (MROP) != Mcopy
- tmpdst = *pdst;
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- *pdst++ = tmpsrc;
- /*putbits (tmpsrc, 0, PPW, pdst);
- pdst++;*/
- psrc++;
- }
-
- if (endmask) {
- getbits (psrc, nstart, nend, tmpsrc);
-#if (MROP) != Mcopy
- tmpdst = *pdst;
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, 0, nend, pdst);
- }
- }
- x += w;
- width -= w;
- } /* while (width > 0) */
-
- pStartDst += auxDst;
- if (++iy >= tileHeight) {
- iy = 0;
- pStartTile = psrcT;
- } else
- pStartTile += tlwidth;
-
- } /* while (h) */
- } /* for (d = ... ) */
- pbox++;
- } /* for each box */
-}
-
-void
-MROP_NAME(ilbmOpaqueStippleAreaPPW)(pDraw, nbox, pbox, alu, ptile,
- rropsOS, planemask)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr ptile;
- register unsigned char *rropsOS;
- unsigned long planemask;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
- register PixelType srcpix;
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- MROP_DECLARE_REG ()
- register int h; /* height of current box */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType *p; /* pointer to bits we're writing */
- int auxDst;
- int depthDst;
- register int d;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwExtra; /* to get from right of box to left of next span */
- register int iy; /* index of current scanline in tile */
- PixelType *pbits; /* pointer to start of drawable */
- PixelType *saveP;
- int saveH;
- int saveIY;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- pbits);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = ptile->drawable.height;
- psrc = (PixelType *)(ptile->devPrivate.ptr);
-
- while (nbox--) {
- w = pbox->x2 - pbox->x1;
- saveH = pbox->y2 - pbox->y1;
- saveIY = pbox->y1 % tileHeight;
- saveP = ilbmScanline(pbits, pbox->x1, pbox->y1, auxDst);
-
- if ( ((pbox->x1 & PIM) + w) < PPW) {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = auxDst;
- for (d = 0; d < depthDst; d++, saveP += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- p = saveP;
- h = saveH;
- iy = saveIY;
-
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- *p = MROP_MASK(srcpix,*p,startmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- }
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
-
- for (d = 0; d < depthDst; d++, saveP += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- p = saveP;
- h = saveH;
- iy = saveIY;
- nlwExtra = auxDst - nlwMiddle;
-
- if (startmask && endmask) {
- nlwExtra -= 1;
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK (srcpix,*p,startmask);
- p++;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- } else if (startmask && !endmask) {
- nlwExtra -= 1;
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK(srcpix,*p,startmask);
- p++;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
- ilbmScanlineInc(p, nlwExtra);
- }
- } else if (!startmask && endmask) {
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- } else { /* no ragged bits at either end */
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--) {
- *p = MROP_SOLID (srcpix,*p);
- p++;
- }
- ilbmScanlineInc(p, nlwExtra);
- }
- }
- } /* for (d = ...) */
- }
- pbox++;
- }
-}
-
-void
-MROP_NAME(ilbmOpaqueStippleArea)(pDraw, nbox, pbox, alu, pTile, xOff, yOff,
- rropsOS, planemask)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr pTile;
- int xOff;
- int yOff;
- register unsigned char *rropsOS;
- unsigned long planemask;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int nlwidth; /* width in longwords of the drawable */
- MROP_DECLARE_REG ()
- register int h; /* height of current box */
- register PixelType *pdst; /* pointer to bits we're writing */
- register PixelType tmpsrc, tmpdst;
- int auxDst;
- int depthDst;
- int tileLine;
- int iline;
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- int saveW;
- PixelType *psrcT;
- int d;
- int nstart;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
- int iy;
- PixelType *pBase; /* pointer to start of drawable */
- PixelType *saveP;
- PixelType *pStartDst;
- PixelType *pStartTile;
- int saveH;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- pBase);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = pTile->drawable.height;
- tileWidth = pTile->drawable.width;
- tlwidth = pTile->devKind/sizeof(PixelType);
-
- xSrc = pDraw->x + ((xOff % tileWidth) - tileWidth);
- ySrc = pDraw->y + ((yOff % tileHeight) - tileHeight);
-
- while (nbox--) {
- saveW = pbox->x2 - pbox->x1;
- iline = (pbox->y1 - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr;
- tileLine = iline * tlwidth;
- saveH = pbox->y2 - pbox->y1;
- saveP = ilbmScanline(pBase, pbox->x1, pbox->y1, auxDst);
-
- for (d = 0; d < depthDst; d++, saveP += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- h = saveH;
- pStartDst = saveP;
- pStartTile = psrcT + tileLine;
- iy = iline;
-
- while (h--) {
- x = pbox->x1;
- width = saveW;
- pdst = pStartDst;
- while (width > 0) {
- psrc = pStartTile;
- w = min(tileWidth, width);
- if ((rem = (x - xSrc) % tileWidth) != 0) {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
-
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
-
- case RROP_COPY:
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
- break;
-
- case RROP_INVERT:
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), w, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), w, pdst);
-
- if ((x & PIM) + w >= PPW)
- pdst++;
- } else if (((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- tmpsrc = *psrc;
- break;
- case RROP_INVERT:
- tmpsrc = ~*psrc;
- break;
- }
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), w, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), w, pdst);
- } else {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if (startmask) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- tmpsrc = *psrc;
- break;
- case RROP_INVERT:
- tmpsrc = ~*psrc;
- break;
- }
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), nstart, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), nstart, pdst);
- pdst++;
- if (srcStartOver)
- psrc++;
- }
-
- while (nlMiddle--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- getbits (psrc, nstart, PPW, tmpsrc);
- break;
- case RROP_INVERT:
- getbits (psrc, nstart, PPW, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
-#if (MROP) != Mcopy
- tmpdst = *pdst;
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- *pdst++ = tmpsrc;
- /*putbits (tmpsrc, 0, PPW, pdst);
- pdst++; */
- psrc++;
- }
-
- if (endmask) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
-
- case RROP_COPY:
- getbits (psrc, nstart, nend, tmpsrc);
- break;
-
- case RROP_INVERT:
- getbits (psrc, nstart, nend, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
-#if (MROP) != Mcopy
- tmpdst = *pdst;
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, 0, nend, pdst);
- }
- }
- x += w;
- width -= w;
- } /* while (width > 0) */
-
- pStartDst += auxDst;
- if (++iy >= tileHeight) {
- iy = 0;
- pStartTile = psrcT;
- } else
- pStartTile += tlwidth;
-
- } /* while (h) */
- } /* for (d = ... ) */
- pbox++;
- } /* for each box */
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmwindow.c b/nx-X11/programs/Xserver/ilbm/ilbmwindow.c
deleted file mode 100644
index be84fcefb..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmwindow.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: ilbmwindow.c,v 5.14 94/04/17 20:28:36 dpw Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "ilbm.h"
-#include "mistruct.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-extern WindowPtr *WindowTable;
-
-Bool
-ilbmCreateWindow(pWin)
- register WindowPtr pWin;
-{
- register ilbmPrivWin *pPrivWin;
-
- pPrivWin = (ilbmPrivWin *)(pWin->devPrivates[ilbmWindowPrivateIndex].ptr);
- pPrivWin->pRotatedBorder = NullPixmap;
- pPrivWin->pRotatedBackground = NullPixmap;
- pPrivWin->fastBackground = FALSE;
- pPrivWin->fastBorder = FALSE;
-#ifdef PIXMAP_PER_WINDOW
- pWin->devPrivates[frameWindowPrivateIndex].ptr =
- pWin->pDrawable.pScreen->devPrivates[ilbmScreenPrivateIndex].ptr;
-#endif
-
- return (TRUE);
-}
-
-/* This always returns true, because Xfree can't fail. It might be possible
- * on some devices for Destroy to fail */
-Bool
-ilbmDestroyWindow(pWin)
- WindowPtr pWin;
-{
- register ilbmPrivWin *pPrivWin;
-
- pPrivWin = (ilbmPrivWin *)(pWin->devPrivates[ilbmWindowPrivateIndex].ptr);
-
- if (pPrivWin->pRotatedBorder)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBorder);
- if (pPrivWin->pRotatedBackground)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBackground);
-
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-ilbmMapWindow(pWindow)
- WindowPtr pWindow;
-{
- return (TRUE);
-}
-
-/* (x, y) is the upper left corner of the window on the screen
- do we really need to pass this? (is it a;ready in pWin->absCorner?)
- we only do the rotation for pixmaps that are 32 bits wide (padded
-or otherwise.)
- ilbmChangeWindowAttributes() has already put a copy of the pixmap
-in pPrivWin->pRotated*
-*/
-
-/*ARGSUSED*/
-Bool
-ilbmPositionWindow(pWin, x, y)
- WindowPtr pWin;
- int x, y;
-{
- register ilbmPrivWin *pPrivWin;
- int reset = 0;
-
- pPrivWin = (ilbmPrivWin *)(pWin->devPrivates[ilbmWindowPrivateIndex].ptr);
- if (pWin->backgroundState == BackgroundPixmap && pPrivWin->fastBackground) {
- ilbmXRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- ilbmYRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- reset = 1;
- }
-
- if (!pWin->borderIsPixel && pPrivWin->fastBorder) {
- while (pWin->backgroundState == ParentRelative)
- pWin = pWin->parent;
- ilbmXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- ilbmYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- reset = 1;
- }
- if (reset) {
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
-
- /* This is the "wrong" fix to the right problem, but it doesn't really
- * cost very much. When the window is moved, we need to invalidate any
- * RotatedPixmap that exists in any GC currently validated against this
- * window.
- */
- pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER;
-
- /* Again, we have no failure modes indicated by any of the routines
- * we've called, so we have to assume it worked */
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-ilbmUnmapWindow(pWindow)
- WindowPtr pWindow;
-{
- return (TRUE);
-}
-
-/* UNCLEAN!
- this code calls the bitblt helper code directly.
-
- ilbmCopyWindow copies only the parts of the destination that are
-visible in the source.
-*/
-
-
-void
-ilbmCopyWindow(pWin, ptOldOrg, prgnSrc)
- WindowPtr pWin;
- DDXPointRec ptOldOrg;
- RegionPtr prgnSrc;
-{
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- RegionPtr prgnDst;
- register BoxPtr pbox;
- register int dx, dy;
- register int i, nbox;
- WindowPtr pwinRoot;
-
- pwinRoot = WindowTable[pWin->drawable.pScreen->myNum];
-
- prgnDst = REGION_CREATE(pWin->drawable.pScreen, NULL, 1);
-
- dx = ptOldOrg.x - pWin->drawable.x;
- dy = ptOldOrg.y - pWin->drawable.y;
- REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, -dx, -dy);
- REGION_INTERSECT(pWin->drawable.pScreen, prgnDst, &pWin->borderClip,
- prgnSrc);
-
- pbox = REGION_RECTS(prgnDst);
- nbox = REGION_NUM_RECTS(prgnDst);
- if (!(pptSrc = (DDXPointPtr )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec))))
- return;
- ppt = pptSrc;
-
- for (i=nbox; --i >= 0; ppt++, pbox++) {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- ilbmDoBitblt((DrawablePtr)pwinRoot, (DrawablePtr)pwinRoot, GXcopy, prgnDst,
- pptSrc, ~0);
- DEALLOCATE_LOCAL(pptSrc);
- REGION_DESTROY(pWin->drawable.pScreen, prgnDst);
-}
-
-
-
-/* swap in correct PaintWindow* routine. If we can use a fast output
-routine (i.e. the pixmap is paddable to 32 bits), also pre-rotate a copy
-of it in devPrivate.
-*/
-Bool
-ilbmChangeWindowAttributes(pWin, mask)
- register WindowPtr pWin;
- register unsigned long mask;
-{
- register unsigned long index;
- register ilbmPrivWin *pPrivWin;
- WindowPtr pBgWin;
-
- pPrivWin = (ilbmPrivWin *)(pWin->devPrivates[ilbmWindowPrivateIndex].ptr);
- /*
- * When background state changes from ParentRelative and
- * we had previously rotated the fast border pixmap to match
- * the parent relative origin, rerotate to match window
- */
- if (mask & (CWBackPixmap | CWBackPixel) &&
- pWin->backgroundState != ParentRelative && pPrivWin->fastBorder &&
- (pPrivWin->oldRotate.x != pWin->drawable.x ||
- pPrivWin->oldRotate.y != pWin->drawable.y)) {
- ilbmXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- ilbmYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- while (mask) {
- index = lowbit (mask);
- mask &= ~index;
- switch (index) {
- case CWBackPixmap:
- if (pWin->backgroundState == None)
- pPrivWin->fastBackground = FALSE;
- else if (pWin->backgroundState == ParentRelative) {
- pPrivWin->fastBackground = FALSE;
- /* Rotate border to match parent origin */
- if (pPrivWin->pRotatedBorder) {
- for (pBgWin = pWin->parent;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- ilbmXRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.x - pPrivWin->oldRotate.x);
- ilbmYRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- }
- } else if ((pWin->background.pixmap->drawable.width <= PPW) &&
- !(pWin->background.pixmap->drawable.width &
- (pWin->background.pixmap->drawable.width - 1))) {
- ilbmCopyRotatePixmap(pWin->background.pixmap,
- &pPrivWin->pRotatedBackground,
- pWin->drawable.x, pWin->drawable.y);
- if (pPrivWin->pRotatedBackground) {
- pPrivWin->fastBackground = TRUE;
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- } else
- pPrivWin->fastBackground = FALSE;
- } else
- pPrivWin->fastBackground = FALSE;
- break;
-
- case CWBackPixel:
- pPrivWin->fastBackground = FALSE;
- break;
-
- case CWBorderPixmap:
- if ((pWin->border.pixmap->drawable.width <= PPW) &&
- !(pWin->border.pixmap->drawable.width &
- (pWin->border.pixmap->drawable.width - 1))) {
- for (pBgWin = pWin;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- ilbmCopyRotatePixmap(pWin->border.pixmap,
- &pPrivWin->pRotatedBorder,
- pBgWin->drawable.x, pBgWin->drawable.y);
- if (pPrivWin->pRotatedBorder) {
- pPrivWin->fastBorder = TRUE;
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- } else
- pPrivWin->fastBorder = FALSE;
- } else
- pPrivWin->fastBorder = FALSE;
- break;
- case CWBorderPixel:
- pPrivWin->fastBorder = FALSE;
- break;
- }
- }
- /* Again, we have no failure modes indicated by any of the routines
- * we've called, so we have to assume it worked */
- return (TRUE);
-}
diff --git a/nx-X11/programs/Xserver/ilbm/ilbmzerarc.c b/nx-X11/programs/Xserver/ilbm/ilbmzerarc.c
deleted file mode 100644
index ad20d614b..000000000
--- a/nx-X11/programs/Xserver/ilbm/ilbmzerarc.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmzerarc.c,v 3.0 1996/08/18 01:54:15 dawes Exp $ */
-/************************************************************
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-********************************************************/
-
-/* $XConsortium: ilbmzerarc.c,v 5.19 94/04/17 20:28:37 dpw Exp $ */
-
-/* Derived from:
- * "Algorithm for drawing ellipses or hyperbolae with a digital plotter"
- * by M. L. V. Pitteway
- * The Computer Journal, November 1967, Volume 10, Number 3, pp. 282-289
- */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "miscstruct.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "ilbm.h"
-#include "maskbits.h"
-#include "mizerarc.h"
-#include "mi.h"
-
-/*
- * Note: LEFTMOST must be the bit leftmost in the actual screen
- * representation. This depends also on the IMAGE_BYTE_ORDER.
- * LONG2CHARS() takes care of the re-ordering as required. (DHD)
- */
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define LEFTMOST ((PixelType) LONG2CHARS((1 << PLST)))
-#else
-#define LEFTMOST ((PixelType) LONG2CHARS(1))
-#endif
-
-#define Pixelate(base,yoff,xoff) \
-{ \
- paddr = ilbmScanlineOffset(base, (yoff) + ((xoff)>>PWSH)); \
- pmask = SCRRIGHT(LEFTMOST, (xoff) & PIM); \
- for (de = 0; de < depthDst; de++, paddr += nlwidth) /* @@@ NEXT PLANE @@@ */ \
- switch (rrops[de]) { \
- case RROP_BLACK: \
- *paddr &= ~pmask; \
- break; \
- case RROP_WHITE: \
- *paddr |= pmask; \
- break; \
- case RROP_INVERT: \
- *paddr ^= pmask; \
- break; \
- case RROP_NOP: \
- break; \
- } \
-}
-
-#define DoPix(bit,base,yoff,xoff) if (mask & bit) Pixelate(base,yoff,xoff);
-
-static void
-ilbmZeroArcSS(pDraw, pGC, arc)
- DrawablePtr pDraw;
- GCPtr pGC;
- xArc *arc;
-{
- miZeroArcRec info;
- Bool do360;
- register int de;
- register int x, y, a, b, d, mask;
- register int k1, k3, dx, dy;
- PixelType *addrl;
- PixelType *yorgl, *yorgol;
- PixelType pixel;
- int nlwidth, yoffset, dyoffset;
- int auxDst, depthDst;
- PixelType pmask;
- register PixelType *paddr;
- register unsigned char *rrops;
-
- rrops = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rrops;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- addrl);
- do360 = miZeroArcSetup(arc, &info, TRUE);
- yorgl = addrl + ((info.yorg + pDraw->y) * auxDst);
- yorgol = addrl + ((info.yorgo + pDraw->y) * auxDst);
- info.xorg += pDraw->x;
- info.xorgo += pDraw->x;
- MIARCSETUP();
- yoffset = y ? auxDst : 0;
- dyoffset = 0;
- mask = info.initialMask;
- if (!(arc->width & 1)) {
- DoPix(2, yorgl, 0, info.xorgo);
- DoPix(8, yorgol, 0, info.xorgo);
- }
- if (!info.end.x || !info.end.y) {
- mask = info.end.mask;
- info.end = info.altend;
- }
- if (do360 && (arc->width == arc->height) && !(arc->width & 1)) {
- int xoffset = auxDst;
- PixelType *yorghl = ilbmScanlineDeltaNoBankSwitch(yorgl, info.h, auxDst);
- int xorghp = info.xorg + info.h;
- int xorghn = info.xorg - info.h;
-
- while (1) {
- Pixelate(yorgl, yoffset, info.xorg + x);
- Pixelate(yorgl, yoffset, info.xorg - x);
- Pixelate(yorgol, -yoffset, info.xorg - x);
- Pixelate(yorgol, -yoffset, info.xorg + x);
- if (a < 0)
- break;
- Pixelate(yorghl, -xoffset, xorghp - y);
- Pixelate(yorghl, -xoffset, xorghn + y);
- Pixelate(yorghl, xoffset, xorghn + y);
- Pixelate(yorghl, xoffset, xorghp - y);
- xoffset += auxDst;
- MIARCCIRCLESTEP(yoffset += auxDst;);
- }
- x = info.w;
- yoffset = info.h * auxDst;
- } else if (do360) {
- while (y < info.h || x < info.w) {
- MIARCOCTANTSHIFT(dyoffset = auxDst;);
- Pixelate(yorgl, yoffset, info.xorg + x);
- Pixelate(yorgl, yoffset, info.xorgo - x);
- Pixelate(yorgol, -yoffset, info.xorgo - x);
- Pixelate(yorgol, -yoffset, info.xorg + x);
- MIARCSTEP(yoffset += dyoffset;, yoffset += auxDst;);
- }
- } else {
- while (y < info.h || x < info.w) {
- MIARCOCTANTSHIFT(dyoffset = auxDst;);
- if ((x == info.start.x) || (y == info.start.y)) {
- mask = info.start.mask;
- info.start = info.altstart;
- }
- DoPix(1, yorgl, yoffset, info.xorg + x);
- DoPix(2, yorgl, yoffset, info.xorgo - x);
- DoPix(4, yorgol, -yoffset, info.xorgo - x);
- DoPix(8, yorgol, -yoffset, info.xorg + x);
- if ((x == info.end.x) || (y == info.end.y)) {
- mask = info.end.mask;
- info.end = info.altend;
- }
- MIARCSTEP(yoffset += dyoffset;, yoffset += auxDst;);
- }
- }
- if ((x == info.start.x) || (y == info.start.y))
- mask = info.start.mask;
- DoPix(1, yorgl, yoffset, info.xorg + x);
- DoPix(4, yorgol, -yoffset, info.xorgo - x);
- if (arc->height & 1) {
- DoPix(2, yorgl, yoffset, info.xorgo - x);
- DoPix(8, yorgol, -yoffset, info.xorg + x);
- }
-}
-
-void
-ilbmZeroPolyArcSS(pDraw, pGC, narcs, parcs)
- DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- register xArc *arc;
- register int i;
- BoxRec box;
- RegionPtr cclip;
-
- cclip = pGC->pCompositeClip;
- for (arc = parcs, i = narcs; --i >= 0; arc++) {
- if (miCanZeroArc(arc)) {
- box.x1 = arc->x + pDraw->x;
- box.y1 = arc->y + pDraw->y;
- box.x2 = box.x1 + (int)arc->width + 1;
- box.y2 = box.y1 + (int)arc->height + 1;
- if (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN)
- ilbmZeroArcSS(pDraw, pGC, arc);
- else
- miZeroPolyArc(pDraw, pGC, 1, arc);
- } else
- miPolyArc(pDraw, pGC, 1, arc);
- }
-}
diff --git a/nx-X11/programs/Xserver/iplan2p2/Imakefile b/nx-X11/programs/Xserver/iplan2p2/Imakefile
deleted file mode 100644
index 503bccaca..000000000
--- a/nx-X11/programs/Xserver/iplan2p2/Imakefile
+++ /dev/null
@@ -1,6 +0,0 @@
-XCOMM $XFree86$
-XCOMM $XConsortium: Imakefile,v 1.1 91/12/28 13:32:27 rws Exp $
-#define IPlanes 2
-#define LinkDirectory ../iplan2p4
-
-#include "../iplan2p4/Imakefile"
diff --git a/nx-X11/programs/Xserver/iplan2p4/Imakefile b/nx-X11/programs/Xserver/iplan2p4/Imakefile
deleted file mode 100644
index 3a3526156..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/Imakefile
+++ /dev/null
@@ -1,119 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/iplan2p4/Imakefile,v 3.4 1999/04/17 09:08:48 dawes Exp $
-XCOMM $XConsortium: Imakefile,v 5.41 93/09/06 18:37:23 rws Exp $
-#include <Server.tmpl>
-
-#ifndef IPlanes
-#define IPlanes 4
-#endif
-
-SRCS = iplgc.c iplrrop.c iplwindow.c \
- iplpntwin.c iplmskbits.c iplpixmap.c iplbitblt.c \
- iplfillsp.c iplsetsp.c iplscrinit.c iplallpriv.c \
- iplgetsp.c iplfillrct.c \
- iplsolidC.c iplsolidX.c iplsolidG.c \
- ipltileoddC.c ipltileoddG.c ipltile32C.c ipltile32G.c \
- iplcmap.c \
- iplfillarcC.c iplfillarcG.c \
- ipltegblt.c iplbstore.c \
- iplpolypnt.c \
- iplbres.c iplline.c iplhrzvert.c iplbresd.c iplimage.c iplseg.c \
- iplbitblt.c iplbltC.c iplbltX.c iplbltO.c iplbltG.c \
- iplply1rctC.c iplply1rctG.c iplpack.c
-
-OBJS = iplgc.o iplrrop.o iplwindow.o \
- iplgetsp.o iplfillrct.o \
- iplsolidC.o iplsolidX.o iplsolidG.o \
- ipltileoddC.o ipltileoddG.o ipltile32C.o ipltile32G.o \
- iplfillsp.o iplsetsp.o iplscrinit.o iplallpriv.o \
- iplpntwin.o iplmskbits.o iplpixmap.o \
- iplcmap.o \
- iplfillarcC.o iplfillarcG.o \
- ipltegblt.o iplbstore.o \
- iplpolypnt.o \
- iplbres.o iplline.o iplhrzvert.o iplbresd.o iplimage.o iplseg.o \
- iplbitblt.o iplbltC.o iplbltX.o iplbltO.o iplbltG.o \
- iplply1rctC.o iplply1rctG.o iplpack.o
-
- INCLUDES = -I. -I../cfb -I../mfb -I../mi -I../include -I$(XINCLUDESRC) \
- -I$(FONTINCSRC) $(EXTRAINCLUDES)
- LINTLIBS = ../dix/llib-ldix.ln ../os/llib-los.ln \
- ../mfb/llib-lmfb.ln ../mi/llib-lmi.ln
- DEFINES = -DINTER_PLANES=IPlanes
-
-NormalLibraryObjectRule()
-#if IPlanes == 2
-NormalLibraryTarget(ipl2p2,$(OBJS))
-LintLibraryTarget(ipl2p2,$(SRCS))
-#elif IPlanes == 4
-NormalLibraryTarget(ipl2p4,$(OBJS))
-LintLibraryTarget(ipl2p4,$(SRCS))
-#elif IPlanes == 8
-NormalLibraryTarget(ipl2p8,$(OBJS))
-LintLibraryTarget(ipl2p8,$(SRCS))
-#endif
-
-NormalLintTarget($(SRCS))
-
-#ifdef LinkDirectory
-
-LinkSourceFile(ipl.h,LinkDirectory)
-LinkSourceFile(iplallpriv.c,LinkDirectory)
-LinkSourceFile(iplbitblt.c,LinkDirectory)
-LinkSourceFile(iplblt.c,LinkDirectory)
-LinkSourceFile(iplbres.c,LinkDirectory)
-LinkSourceFile(iplbresd.c,LinkDirectory)
-LinkSourceFile(iplbstore.c,LinkDirectory)
-LinkSourceFile(iplcmap.c,LinkDirectory)
-LinkSourceFile(iplfillarc.c,LinkDirectory)
-LinkSourceFile(iplfillrct.c,LinkDirectory)
-LinkSourceFile(iplfillsp.c,LinkDirectory)
-LinkSourceFile(iplgc.c,LinkDirectory)
-LinkSourceFile(iplgetsp.c,LinkDirectory)
-LinkSourceFile(iplhrzvert.c,LinkDirectory)
-LinkSourceFile(iplimage.c,LinkDirectory)
-LinkSourceFile(iplline.c,LinkDirectory)
-LinkSourceFile(iplmap.h,LinkDirectory)
-LinkSourceFile(iplmergerop.h,LinkDirectory)
-LinkSourceFile(iplmskbits.c,LinkDirectory)
-LinkSourceFile(iplmskbits.h,LinkDirectory)
-LinkSourceFile(iplpack.c,LinkDirectory)
-LinkSourceFile(iplpack.h,LinkDirectory)
-LinkSourceFile(iplpixmap.c,LinkDirectory)
-LinkSourceFile(iplply1rct.c,LinkDirectory)
-LinkSourceFile(iplpntwin.c,LinkDirectory)
-LinkSourceFile(iplpolypnt.c,LinkDirectory)
-LinkSourceFile(iplrrop.c,LinkDirectory)
-LinkSourceFile(iplrrop.h,LinkDirectory)
-LinkSourceFile(iplscrinit.c,LinkDirectory)
-LinkSourceFile(iplsetsp.c,LinkDirectory)
-LinkSourceFile(iplsolid.c,LinkDirectory)
-LinkSourceFile(ipltegblt.c,LinkDirectory)
-LinkSourceFile(ipltile32.c,LinkDirectory)
-LinkSourceFile(ipltileodd.c,LinkDirectory)
-LinkSourceFile(iplwindow.c,LinkDirectory)
-#endif
-
-ObjectFromSpecialSource(iplseg,iplline,-DPOLYSEGMENT)
-
-ObjectFromSpecialSource(iplfillarcC,iplfillarc,-DRROP=GXcopy)
-ObjectFromSpecialSource(iplfillarcG,iplfillarc,-DRROP=GXset)
-
-ObjectFromSpecialSource(iplbltC,iplblt,-DMROP=Mcopy)
-ObjectFromSpecialSource(iplbltX,iplblt,-DMROP=Mxor)
-ObjectFromSpecialSource(iplbltO,iplblt,-DMROP=Mor)
-ObjectFromSpecialSource(iplbltG,iplblt,-DMROP=0)
-
-ObjectFromSpecialSource(iplsolidC,iplsolid,-DRROP=GXcopy)
-ObjectFromSpecialSource(iplsolidX,iplsolid,-DRROP=GXxor)
-ObjectFromSpecialSource(iplsolidG,iplsolid,-DRROP=GXset)
-
-ObjectFromSpecialSource(ipltileoddC,ipltileodd,-DMROP=Mcopy)
-ObjectFromSpecialSource(ipltileoddG,ipltileodd,-DMROP=0)
-
-ObjectFromSpecialSource(ipltile32C,ipltile32,-DMROP=Mcopy)
-ObjectFromSpecialSource(ipltile32G,ipltile32,-DMROP=0)
-
-ObjectFromSpecialSource(iplply1rctC,iplply1rct,-DRROP=GXcopy)
-ObjectFromSpecialSource(iplply1rctG,iplply1rct,-DRROP=GXset)
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/iplan2p4/ipl.h b/nx-X11/programs/Xserver/iplan2p4/ipl.h
deleted file mode 100644
index 356e43367..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/ipl.h
+++ /dev/null
@@ -1,1254 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/ipl.h,v 3.5 2001/01/30 22:06:21 tsi Exp $ */
-/* $XConsortium: ipl.h,v 5.37 94/04/17 20:28:38 dpw Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or X Consortium
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and X Consortium make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "pixmap.h"
-#include "region.h"
-#include "gc.h"
-#include "colormap.h"
-#include "miscstruct.h"
-#include "servermd.h"
-#include "windowstr.h"
-#include "mfb.h"
-#undef PixelType
-
-#include "iplmap.h"
-
-/*
- private filed of pixmap
- pixmap.devPrivate = (unsigned int *)pointer_to_bits
- pixmap.devKind = width_of_pixmap_in_bytes
-*/
-
-extern int iplGCPrivateIndex;
-extern int iplWindowPrivateIndex;
-
-/* private field of GC */
-typedef struct {
- unsigned char rop; /* special case rop values */
- /* next two values unused in ipl, included for compatibility with mfb */
- unsigned char ropOpStip; /* rop for opaque stipple */
- /* this value is ropFillArea in mfb, usurped for ipl */
- unsigned char oneRect; /* drawable has one clip rect */
- unsigned long xor, and; /* reduced rop values */
- unsigned short xorg[INTER_PLANES],andg[INTER_PLANES];
- } iplPrivGC;
-
-typedef iplPrivGC *iplPrivGCPtr;
-
-#define iplGetGCPrivate(pGC) ((iplPrivGCPtr)\
- (pGC)->devPrivates[iplGCPrivateIndex].ptr)
-
-#define iplGetCompositeClip(pGC) ((pGC)->pCompositeClip)
-
-/* way to carry RROP info around */
-typedef struct {
- unsigned char rop;
- unsigned long xor, and;
- unsigned short xorg[INTER_PLANES],andg[INTER_PLANES];
-} iplRRopRec, *iplRRopPtr;
-
-/* private field of window */
-typedef struct {
- unsigned char fastBorder; /* non-zero if border is 32 bits wide */
- unsigned char fastBackground;
- unsigned short unused; /* pad for alignment with Sun compiler */
- DDXPointRec oldRotate;
- PixmapPtr pRotatedBackground;
- PixmapPtr pRotatedBorder;
- } iplPrivWin;
-
-#define iplGetWindowPrivate(_pWin) ((iplPrivWin *)\
- (_pWin)->devPrivates[iplWindowPrivateIndex].ptr)
-
-
-/* ipl8bit.c */
-
-extern int iplSetStipple(
- int /*alu*/,
- unsigned long /*fg*/,
- unsigned long /*planemask*/
-);
-
-extern int iplSetOpaqueStipple(
- int /*alu*/,
- unsigned long /*fg*/,
- unsigned long /*bg*/,
- unsigned long /*planemask*/
-);
-
-extern int iplComputeClipMasks32(
- BoxPtr /*pBox*/,
- int /*numRects*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- CARD32 * /*clips*/
-);
-/* ipl8cppl.c */
-
-extern void iplCopyImagePlane(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- int /*rop*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-
-extern void iplCopyPlane8to1(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- int /*rop*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/,
- unsigned long /*bitPlane*/
-);
-/* ipl8lineCO.c */
-
-extern int ipl8LineSS1RectCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/,
- DDXPointPtr /*pptInitOrig*/,
- int * /*x1p*/,
- int * /*y1p*/,
- int * /*x2p*/,
- int * /*y2p*/
-);
-
-extern void ipl8LineSS1Rect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-extern void ipl8ClippedLineCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x1*/,
- int /*y1*/,
- int /*x2*/,
- int /*y2*/,
- BoxPtr /*boxp*/,
- Bool /*shorten*/
-);
-/* ipl8lineCP.c */
-
-extern int ipl8LineSS1RectPreviousCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/,
- DDXPointPtr /*pptInitOrig*/,
- int * /*x1p*/,
- int * /*y1p*/,
- int * /*x2p*/,
- int * /*y2p*/
-);
-/* ipl8lineG.c */
-
-extern int ipl8LineSS1RectGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/,
- DDXPointPtr /*pptInitOrig*/,
- int * /*x1p*/,
- int * /*y1p*/,
- int * /*x2p*/,
- int * /*y2p*/
-);
-
-extern void ipl8ClippedLineGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x1*/,
- int /*y1*/,
- int /*x2*/,
- int /*y2*/,
- BoxPtr /*boxp*/,
- Bool /*shorten*/
-);
-/* ipl8lineX.c */
-
-extern int ipl8LineSS1RectXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/,
- DDXPointPtr /*pptInitOrig*/,
- int * /*x1p*/,
- int * /*y1p*/,
- int * /*x2p*/,
- int * /*y2p*/
-);
-
-extern void ipl8ClippedLineXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x1*/,
- int /*y1*/,
- int /*x2*/,
- int /*y2*/,
- BoxPtr /*boxp*/,
- Bool /*shorten*/
-);
-/* ipl8segC.c */
-
-extern int ipl8SegmentSS1RectCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-/* ipl8segCS.c */
-
-extern int ipl8SegmentSS1RectShiftCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-
-extern void ipl8SegmentSS1Rect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-/* ipl8segG.c */
-
-extern int ipl8SegmentSS1RectGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-/* iplsegX.c */
-
-extern int ipl8SegmentSS1RectXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-/* iplallpriv.c */
-
-extern Bool iplAllocatePrivates(
- ScreenPtr /*pScreen*/,
- int * /*window_index*/,
- int * /*gc_index*/
-);
-/* iplbitblt.c */
-
-extern RegionPtr iplBitBlt(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- void (* /*doBitBlt*/)(),
- unsigned long /*bitPlane*/
-);
-
-extern void iplDoBitblt(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-
-extern RegionPtr iplCopyArea(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/
-);
-
-extern void iplCopyPlane1to8(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- int /*rop*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/,
- unsigned long /*bitPlane*/
-);
-
-extern RegionPtr iplCopyPlane(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr /*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- unsigned long /*bitPlane*/
-);
-/* iplbltC.c */
-
-extern void iplDoBitbltCopy(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* iplbltG.c */
-
-extern void iplDoBitbltGeneral(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* iplbltO.c */
-
-extern void iplDoBitbltOr(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* iplbltX.c */
-
-extern void iplDoBitbltXor(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* iplbres.c */
-
-extern void iplBresS(
- int /*rop*/,
- unsigned short * /*and*/,
- unsigned short * /*xor*/,
- unsigned short * /*addrl*/,
- int /*nlwidth*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/
-);
-/* iplbresd.c */
-
-extern void iplBresD(
- iplRRopPtr /*rrops*/,
- int * /*pdashIndex*/,
- unsigned char * /*pDash*/,
- int /*numInDashList*/,
- int * /*pdashOffset*/,
- int /*isDoubleDash*/,
- unsigned short * /*addrl*/,
- int /*nlwidth*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/
-);
-/* iplbstore.c */
-
-extern void iplSaveAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnSave*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-
-extern void iplRestoreAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnRestore*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-/* iplcmap.c */
-
-extern int iplListInstalledColormaps(
- ScreenPtr /*pScreen*/,
- Colormap * /*pmaps*/
-);
-
-extern void iplInstallColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void iplUninstallColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void iplResolveColor(
- unsigned short * /*pred*/,
- unsigned short * /*pgreen*/,
- unsigned short * /*pblue*/,
- VisualPtr /*pVisual*/
-);
-
-extern Bool iplInitializeColormap(
- ColormapPtr /*pmap*/
-);
-
-extern int iplExpandDirectColors(
- ColormapPtr /*pmap*/,
- int /*ndef*/,
- xColorItem * /*indefs*/,
- xColorItem * /*outdefs*/
-);
-
-extern Bool iplCreateDefColormap(
- ScreenPtr /*pScreen*/
-);
-
-extern Bool iplSetVisualTypes(
- int /*depth*/,
- int /*visuals*/,
- int /*bitsPerRGB*/
-);
-
-extern Bool iplInitVisuals(
- VisualPtr * /*visualp*/,
- DepthPtr * /*depthp*/,
- int * /*nvisualp*/,
- int * /*ndepthp*/,
- int * /*rootDepthp*/,
- VisualID * /*defaultVisp*/,
- unsigned long /*sizes*/,
- int /*bitsPerRGB*/
-);
-/* iplfillarcC.c */
-
-extern void iplPolyFillArcSolidCopy(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* iplfillarcG.c */
-
-extern void iplPolyFillArcSolidGeneral(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* iplfillrct.c */
-
-extern void iplFillBoxTileOdd(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- BoxPtr /*rects*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/
-);
-
-extern void iplFillRectTileOdd(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void iplPolyFillRect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nrectFill*/,
- xRectangle * /*prectInit*/
-);
-/* iplfillsp.c */
-
-extern void iplUnnaturalTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void iplUnnaturalStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ipl8Stipple32FS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ipl8OpaqueStipple32FS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* iplgc.c */
-
-extern GCOpsPtr iplMatchCommon(
- GCPtr /*pGC*/,
- iplPrivGCPtr /*devPriv*/
-);
-
-extern Bool iplCreateGC(
- GCPtr /*pGC*/
-);
-
-extern void iplValidateGC(
- GCPtr /*pGC*/,
- unsigned long /*changes*/,
- DrawablePtr /*pDrawable*/
-);
-
-/* iplgetsp.c */
-
-extern void iplGetSpans(
- DrawablePtr /*pDrawable*/,
- int /*wMax*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- char * /*pdstStart*/
-);
-/* iplglblt8.c */
-
-extern void iplPolyGlyphBlt8(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* iplglrop8.c */
-
-extern void iplPolyGlyphRop8(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* iplhrzvert.c */
-
-extern int iplHorzS(
- int /*rop*/,
- unsigned short * /*and*/,
- unsigned short * /*xor*/,
- unsigned short * /*addrg*/,
- int /*nlwidth*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/
-);
-
-extern int iplVertS(
- int /*rop*/,
- unsigned short * /*and*/,
- unsigned short * /*xor*/,
- unsigned short * /*addrg*/,
- int /*nlwidth*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/
-);
-/* ipligblt8.c */
-
-extern void iplImageGlyphBlt8(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* iplimage.c */
-
-extern void iplPutImage(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*depth*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- int /*leftPad*/,
- int /*format*/,
- char * /*pImage*/
-);
-
-extern void iplGetImage(
- DrawablePtr /*pDrawable*/,
- int /*sx*/,
- int /*sy*/,
- int /*w*/,
- int /*h*/,
- unsigned int /*format*/,
- unsigned long /*planeMask*/,
- char * /*pdstLine*/
-);
-/* iplline.c */
-
-extern void iplLineSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-extern void iplLineSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-/* iplmskbits.c */
-/* iplpixmap.c */
-
-extern PixmapPtr iplCreatePixmap(
- ScreenPtr /*pScreen*/,
- int /*width*/,
- int /*height*/,
- int /*depth*/
-);
-
-extern Bool iplDestroyPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern PixmapPtr iplCopyPixmap(
- PixmapPtr /*pSrc*/
-);
-
-extern void iplPadPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern void iplXRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rw*/
-);
-
-extern void iplYRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rh*/
-);
-
-extern void iplCopyRotatePixmap(
- PixmapPtr /*psrcPix*/,
- PixmapPtr * /*ppdstPix*/,
- int /*xrot*/,
- int /*yrot*/
-);
-/* iplply1rctC.c */
-
-extern void iplFillPoly1RectCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*shape*/,
- int /*mode*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-/* iplply1rctG.c */
-
-extern void iplFillPoly1RectGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*shape*/,
- int /*mode*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-/* iplpntwin.c */
-
-extern void iplPaintWindow(
- WindowPtr /*pWin*/,
- RegionPtr /*pRegion*/,
- int /*what*/
-);
-
-extern void iplFillBoxSolid(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- unsigned long /*pixel*/
-);
-
-extern void iplFillBoxTile32(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/
-);
-/* iplpolypnt.c */
-
-extern void iplPolyPoint(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- xPoint * /*pptInit*/
-);
-/* iplpush8.c */
-
-extern void iplPushPixels8(
- GCPtr /*pGC*/,
- PixmapPtr /*pBitmap*/,
- DrawablePtr /*pDrawable*/,
- int /*dx*/,
- int /*dy*/,
- int /*xOrg*/,
- int /*yOrg*/
-);
-/* iplrctstp8.c */
-
-extern void ipl8FillRectOpaqueStippled32(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void ipl8FillRectTransparentStippled32(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void ipl8FillRectStippledUnnatural(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-/* iplrrop.c */
-
-extern int iplReduceRasterOp(
- int /*rop*/,
- unsigned long /*fg*/,
- unsigned long /*pm*/,
- unsigned short * /*andp*/,
- unsigned short * /*xorp*/
-);
-/* iplscrinit.c */
-
-extern Bool iplCloseScreen(
- int /*index*/,
- ScreenPtr /*pScreen*/
-);
-
-extern Bool iplSetupScreen(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern int iplFinishScreenInit(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern Bool iplScreenInit(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern PixmapPtr iplGetScreenPixmap(
- ScreenPtr /*pScreen*/
-);
-
-extern void iplSetScreenPixmap(
- PixmapPtr /*pPix*/
-);
-
-/* iplseg.c */
-
-extern void iplSegmentSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-
-extern void iplSegmentSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-/* iplsetsp.c */
-
-extern int iplSetScanline(
- int /*y*/,
- int /*xOrigin*/,
- int /*xStart*/,
- int /*xEnd*/,
- unsigned int * /*psrc*/,
- int /*alu*/,
- unsigned short * /*pdstBase*/,
- int /*widthDst*/,
- unsigned long /*planemask*/
-);
-
-extern void iplSetSpans(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- char * /*psrc*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- int /*fSorted*/
-);
-/* iplsolidC.c */
-
-extern void iplFillRectSolidCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void iplSolidSpansCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* iplsolidG.c */
-
-extern void iplFillRectSolidGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void iplSolidSpansGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* iplsolidX.c */
-
-extern void iplFillRectSolidXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void iplSolidSpansXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* iplteblt8.c */
-
-extern void iplTEGlyphBlt8(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*xInit*/,
- int /*yInit*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* ipltegblt.c */
-
-extern void iplTEGlyphBlt(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* ipltile32C.c */
-
-extern void iplFillRectTile32Copy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void iplTile32FSCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* ipltile32G.c */
-
-extern void iplFillRectTile32General(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void iplTile32FSGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* ipltileoddC.c */
-
-extern void iplFillBoxTileOddCopy(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void iplFillSpanTileOddCopy(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void iplFillBoxTile32sCopy(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void iplFillSpanTile32sCopy(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-/* ipltileoddG.c */
-
-extern void iplFillBoxTileOddGeneral(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void iplFillSpanTileOddGeneral(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void iplFillBoxTile32sGeneral(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void iplFillSpanTile32sGeneral(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-/* iplwindow.c */
-
-extern Bool iplCreateWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool iplDestroyWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool iplMapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern Bool iplPositionWindow(
- WindowPtr /*pWin*/,
- int /*x*/,
- int /*y*/
-);
-
-extern Bool iplUnmapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern void iplCopyWindow(
- WindowPtr /*pWin*/,
- DDXPointRec /*ptOldOrg*/,
- RegionPtr /*prgnSrc*/
-);
-
-extern Bool iplChangeWindowAttributes(
- WindowPtr /*pWin*/,
- unsigned long /*mask*/
-);
-/* iplzerarcC.c */
-
-extern void iplZeroPolyArcSS8Copy(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* iplzerarcG.c */
-
-extern void iplZeroPolyArcSS8General(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* iplzerarcX.c */
-
-extern void iplZeroPolyArcSS8Xor(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-
-/* Common macros for extracting drawing information */
-
-#if (!defined(SINGLEDEPTH) && PSZ != 8) || defined(FORCE_SEPARATE_PRIVATE)
-
-#define CFB_NEED_SCREEN_PRIVATE
-
-extern int iplScreenPrivateIndex;
-#endif
-
-#define iplGetWindowPixmap(d) \
- ((* ((DrawablePtr)(d))->pScreen->GetWindowPixmap)((WindowPtr)(d)))
-
-#define iplGetTypedWidth(pDrawable,wtype) (\
- (((pDrawable)->type != DRAWABLE_PIXMAP) ? \
- (int) (iplGetWindowPixmap(pDrawable)->devKind) : \
- (int)(((PixmapPtr)pDrawable)->devKind)) / sizeof (wtype))
-
-#define iplGetByteWidth(pDrawable) iplGetTypedWidth(pDrawable, unsigned char)
-
-#define iplGetPixelWidth(pDrawable) iplGetTypedWidth(pDrawable, PixelType)
-
-#define iplGetLongWidth(pDrawable) iplGetTypedWidth(pDrawable, unsigned long)
-
-#define iplGetTypedWidthAndPointer(pDrawable, width, pointer, wtype, ptype) {\
- PixmapPtr _pPix; \
- if ((pDrawable)->type != DRAWABLE_PIXMAP) \
- _pPix = iplGetWindowPixmap(pDrawable); \
- else \
- _pPix = (PixmapPtr) (pDrawable); \
- (pointer) = (ptype *) _pPix->devPrivate.ptr; \
- (width) = ((int) _pPix->devKind) / sizeof (wtype); \
-}
-
-#define iplGetByteWidthAndPointer(pDrawable, width, pointer) \
- iplGetTypedWidthAndPointer(pDrawable, width, pointer, unsigned char, unsigned char)
-
-#define iplGetLongWidthAndPointer(pDrawable, width, pointer) \
- iplGetTypedWidthAndPointer(pDrawable, width, pointer, unsigned long, unsigned long)
-
-#define iplGetPixelWidthAndPointer(pDrawable, width, pointer) \
- iplGetTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
-
-#define iplGetWindowTypedWidthAndPointer(pWin, width, pointer, wtype, ptype) {\
- PixmapPtr _pPix = iplGetWindowPixmap((DrawablePtr) (pWin)); \
- (pointer) = (ptype *) _pPix->devPrivate.ptr; \
- (width) = ((int) _pPix->devKind) / sizeof (wtype); \
-}
-
-#define iplGetWindowLongWidthAndPointer(pWin, width, pointer) \
- iplGetWindowTypedWidthAndPointer(pWin, width, pointer, unsigned long, unsigned long)
-
-#define iplGetWindowByteWidthAndPointer(pWin, width, pointer) \
- iplGetWindowTypedWidthAndPointer(pWin, width, pointer, unsigned char, unsigned char)
-
-#define iplGetWindowPixelWidthAndPointer(pDrawable, width, pointer) \
- iplGetWindowTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
-
-/* Macros which handle a coordinate in a single register */
-
-/* Most compilers will convert divide by 65536 into a shift, if signed
- * shifts exist. If your machine does arithmetic shifts and your compiler
- * can't get it right, add to this line.
- */
-
-/* mips compiler - what a joke - it CSEs the 65536 constant into a reg
- * forcing as to use div instead of shift. Let's be explicit.
- */
-
-#if defined(mips) || defined(sparc) || defined(__alpha) || defined(__alpha__)
-#define GetHighWord(x) (((int) (x)) >> 16)
-#else
-#define GetHighWord(x) (((int) (x)) / 65536)
-#endif
-
-#if IMAGE_BYTE_ORDER == MSBFirst
-#define intToCoord(i,x,y) (((x) = GetHighWord(i)), ((y) = (int) ((short) (i))))
-#define coordToInt(x,y) (((x) << 16) | (y))
-#define intToX(i) (GetHighWord(i))
-#define intToY(i) ((int) ((short) i))
-#else
-#define intToCoord(i,x,y) (((x) = (int) ((short) (i))), ((y) = GetHighWord(i)))
-#define coordToInt(x,y) (((y) << 16) | (x))
-#define intToX(i) ((int) ((short) (i)))
-#define intToY(i) (GetHighWord(i))
-#endif
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplallpriv.c b/nx-X11/programs/Xserver/iplan2p4/iplallpriv.c
deleted file mode 100644
index 23a13dbd1..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplallpriv.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* $XFree86$ */
-/*
- * $XConsortium: iplallpriv.c,v 1.5 94/04/17 20:28:42 dpw Exp $
- *
-Copyright (c) 1991 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "resource.h"
-#include "colormap.h"
-#include "colormapst.h"
-#include "ipl.h"
-#include "mi.h"
-#include "mistruct.h"
-#include "dix.h"
-#include "mibstore.h"
-
-int iplWindowPrivateIndex;
-int iplGCPrivateIndex;
-#ifdef CFB_NEED_SCREEN_PRIVATE
-int iplScreenPrivateIndex;
-#endif
-
-extern RegionPtr (*iplPuntCopyPlane)();
-
-Bool
-iplAllocatePrivates(pScreen, window_index, gc_index)
- ScreenPtr pScreen;
- int *window_index, *gc_index;
-{
- if (!window_index || !gc_index ||
- *window_index == -1 && *gc_index == -1)
- {
- if (!mfbAllocatePrivates(pScreen,
- &iplWindowPrivateIndex, &iplGCPrivateIndex))
- return FALSE;
- if (window_index)
- *window_index = iplWindowPrivateIndex;
- if (gc_index)
- *gc_index = iplGCPrivateIndex;
- }
- else
- {
- iplWindowPrivateIndex = *window_index;
- iplGCPrivateIndex = *gc_index;
- }
- if (!AllocateWindowPrivate(pScreen, iplWindowPrivateIndex,
- sizeof(iplPrivWin)) ||
- !AllocateGCPrivate(pScreen, iplGCPrivateIndex, sizeof(iplPrivGC)))
- return FALSE;
-
- iplPuntCopyPlane = miCopyPlane;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- iplScreenPrivateIndex = AllocateScreenPrivateIndex ();
- if (iplScreenPrivateIndex == -1)
- return FALSE;
-#endif
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplbitblt.c b/nx-X11/programs/Xserver/iplan2p4/iplbitblt.c
deleted file mode 100644
index 4bf64437e..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplbitblt.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplbitblt.c,v 3.1tsi Exp $ */
-/*
- * ipl copy area
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-Author: Keith Packard
-
-*/
-/* $XConsortium: iplbitblt.c,v 5.51 94/05/27 11:00:56 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "ipl.h"
-#include "fastblt.h"
-#define MFB_CONSTS_ONLY
-#include "maskbits.h"
-
-#include "iplmskbits.h"
-
-RegionPtr
-iplBitBlt (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, doBitBlt, bitPlane)
- register DrawablePtr pSrcDrawable;
- register DrawablePtr pDstDrawable;
- GC *pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
- void (*doBitBlt)();
- unsigned long bitPlane;
-{
- RegionPtr prgnSrcClip; /* may be a new region, or just a copy */
- Bool freeSrcClip = FALSE;
-
- RegionPtr prgnExposed;
- RegionRec rgnDst;
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- register BoxPtr pbox;
- int i;
- register int dx;
- register int dy;
- xRectangle origSource;
- DDXPointRec origDest;
- int numRects;
- BoxRec fastBox;
- int fastClip = 0; /* for fast clipping with pixmap source */
- int fastExpose = 0; /* for fast exposures with pixmap source */
-
- origSource.x = srcx;
- origSource.y = srcy;
- origSource.width = width;
- origSource.height = height;
- origDest.x = dstx;
- origDest.y = dsty;
-
- if ((pSrcDrawable != pDstDrawable) &&
- pSrcDrawable->pScreen->SourceValidate)
- {
- (*pSrcDrawable->pScreen->SourceValidate) (pSrcDrawable, srcx, srcy, width, height);
- }
-
- srcx += pSrcDrawable->x;
- srcy += pSrcDrawable->y;
-
- /* clip the source */
-
- if (pSrcDrawable->type == DRAWABLE_PIXMAP)
- {
- if ((pSrcDrawable == pDstDrawable) &&
- (pGC->clientClipType == CT_NONE))
- {
- prgnSrcClip = iplGetCompositeClip(pGC);
- }
- else
- {
- fastClip = 1;
- }
- }
- else
- {
- if (pGC->subWindowMode == IncludeInferiors)
- {
- if (!((WindowPtr) pSrcDrawable)->parent)
- {
- /*
- * special case bitblt from root window in
- * IncludeInferiors mode; just like from a pixmap
- */
- fastClip = 1;
- }
- else if ((pSrcDrawable == pDstDrawable) &&
- (pGC->clientClipType == CT_NONE))
- {
- prgnSrcClip = iplGetCompositeClip(pGC);
- }
- else
- {
- prgnSrcClip = NotClippedByChildren((WindowPtr)pSrcDrawable);
- freeSrcClip = TRUE;
- }
- }
- else
- {
- prgnSrcClip = &((WindowPtr)pSrcDrawable)->clipList;
- }
- }
-
- fastBox.x1 = srcx;
- fastBox.y1 = srcy;
- fastBox.x2 = srcx + width;
- fastBox.y2 = srcy + height;
-
- /* Don't create a source region if we are doing a fast clip */
- if (fastClip)
- {
- fastExpose = 1;
- /*
- * clip the source; if regions extend beyond the source size,
- * make sure exposure events get sent
- */
- if (fastBox.x1 < pSrcDrawable->x)
- {
- fastBox.x1 = pSrcDrawable->x;
- fastExpose = 0;
- }
- if (fastBox.y1 < pSrcDrawable->y)
- {
- fastBox.y1 = pSrcDrawable->y;
- fastExpose = 0;
- }
- if (fastBox.x2 > pSrcDrawable->x + (int) pSrcDrawable->width)
- {
- fastBox.x2 = pSrcDrawable->x + (int) pSrcDrawable->width;
- fastExpose = 0;
- }
- if (fastBox.y2 > pSrcDrawable->y + (int) pSrcDrawable->height)
- {
- fastBox.y2 = pSrcDrawable->y + (int) pSrcDrawable->height;
- fastExpose = 0;
- }
- }
- else
- {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, prgnSrcClip);
- }
-
- dstx += pDstDrawable->x;
- dsty += pDstDrawable->y;
-
- if (pDstDrawable->type == DRAWABLE_WINDOW)
- {
- if (!((WindowPtr)pDstDrawable)->realized)
- {
- if (!fastClip)
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
- }
-
- dx = srcx - dstx;
- dy = srcy - dsty;
-
- /* Translate and clip the dst to the destination composite clip */
- if (fastClip)
- {
- RegionPtr cclip;
-
- /* Translate the region directly */
- fastBox.x1 -= dx;
- fastBox.x2 -= dx;
- fastBox.y1 -= dy;
- fastBox.y2 -= dy;
-
- /* If the destination composite clip is one rectangle we can
- do the clip directly. Otherwise we have to create a full
- blown region and call intersect */
-
- /* XXX because CopyPlane uses this routine for 8-to-1 bit
- * copies, this next line *must* also correctly fetch the
- * composite clip from an mfb gc
- */
-
- cclip = iplGetCompositeClip(pGC);
- if (REGION_NUM_RECTS(cclip) == 1)
- {
- BoxPtr pBox = REGION_RECTS(cclip);
-
- if (fastBox.x1 < pBox->x1) fastBox.x1 = pBox->x1;
- if (fastBox.x2 > pBox->x2) fastBox.x2 = pBox->x2;
- if (fastBox.y1 < pBox->y1) fastBox.y1 = pBox->y1;
- if (fastBox.y2 > pBox->y2) fastBox.y2 = pBox->y2;
-
- /* Check to see if the region is empty */
- if (fastBox.x1 >= fastBox.x2 || fastBox.y1 >= fastBox.y2)
- {
- REGION_NULL(pGC->pScreen, &rgnDst);
- }
- else
- {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- }
- }
- else
- {
- /* We must turn off fastClip now, since we must create
- a full blown region. It is intersected with the
- composite clip below. */
- fastClip = 0;
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- }
- }
- else
- {
- REGION_TRANSLATE(pGC->pScreen, &rgnDst, -dx, -dy);
- }
-
- if (!fastClip)
- {
- REGION_INTERSECT(pGC->pScreen, &rgnDst,
- &rgnDst,
- iplGetCompositeClip(pGC));
- }
-
- /* Do bit blitting */
- numRects = REGION_NUM_RECTS(&rgnDst);
- if (numRects && width && height)
- {
- if(!(pptSrc = (DDXPointPtr)ALLOCATE_LOCAL(numRects *
- sizeof(DDXPointRec))))
- {
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
- pbox = REGION_RECTS(&rgnDst);
- ppt = pptSrc;
- for (i = numRects; --i >= 0; pbox++, ppt++)
- {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- (*doBitBlt) (pSrcDrawable, pDstDrawable, pGC->alu, &rgnDst, pptSrc, pGC->planemask, bitPlane);
- DEALLOCATE_LOCAL(pptSrc);
- }
-
- prgnExposed = NULL;
- if (pGC->fExpose)
- {
- extern RegionPtr miHandleExposures();
-
- /* Pixmap sources generate a NoExposed (we return NULL to do this) */
- if (!fastExpose)
- prgnExposed =
- miHandleExposures(pSrcDrawable, pDstDrawable, pGC,
- origSource.x, origSource.y,
- (int)origSource.width,
- (int)origSource.height,
- origDest.x, origDest.y, bitPlane);
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return prgnExposed;
-}
-
-
-void
-iplDoBitblt (pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- void (*blt)() = iplDoBitbltGeneral;
- if ((planemask & INTER_PMSK) == INTER_PMSK) {
- switch (alu) {
- case GXcopy:
- blt = iplDoBitbltCopy;
- break;
- case GXxor:
- blt = iplDoBitbltXor;
- break;
- case GXor:
- blt = iplDoBitbltOr;
- break;
- }
- }
- (*blt) (pSrc, pDst, alu, prgnDst, pptSrc, planemask);
-}
-
-RegionPtr
-iplCopyArea(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty)
- register DrawablePtr pSrcDrawable;
- register DrawablePtr pDstDrawable;
- GC *pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
-{
- void (*doBitBlt) ();
-
- doBitBlt = iplDoBitbltCopy;
- if (pGC->alu != GXcopy || (pGC->planemask & INTER_PMSK) != INTER_PMSK)
- {
- doBitBlt = iplDoBitbltGeneral;
- if ((pGC->planemask & INTER_PMSK) == INTER_PMSK)
- {
- switch (pGC->alu) {
- case GXxor:
- doBitBlt = iplDoBitbltXor;
- break;
- case GXor:
- doBitBlt = iplDoBitbltOr;
- break;
- }
- }
- }
- return iplBitBlt (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, doBitBlt, 0L);
-}
-
-/* shared among all different ipl depths through linker magic */
-RegionPtr (*iplPuntCopyPlane)();
-
-RegionPtr iplCopyPlane(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, bitPlane)
- DrawablePtr pSrcDrawable;
- DrawablePtr pDstDrawable;
- GCPtr pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
- unsigned long bitPlane;
-{
- RegionPtr ret;
- extern RegionPtr miHandleExposures();
- void (*doBitBlt)();
-
- ret = (*iplPuntCopyPlane) (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, bitPlane);
- return ret;
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplblt.c b/nx-X11/programs/Xserver/iplan2p4/iplblt.c
deleted file mode 100644
index 85bcece13..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplblt.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/* $XFree86$ */
-/*
- * ipl copy area
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-Author: Keith Packard
-
-*/
-/* $XConsortium: iplblt.c,v 1.13 94/04/17 20:28:44 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "ipl.h"
-#include "fastblt.h"
-#include "iplmergerop.h"
-#include "iplmskbits.h"
-
-void
-INTER_MROP_NAME(iplDoBitblt)(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- INTER_DECLAREG(*psrcBase);
- INTER_DECLAREG(*pdstBase); /* start of src and dst bitmaps */
- int widthSrc, widthDst; /* add to get to same position in next line */
-
- BoxPtr pbox;
- int nbox;
-
- BoxPtr pboxTmp, pboxNext, pboxBase, pboxNew1, pboxNew2;
- /* temporaries for shuffling rectangles */
- DDXPointPtr pptTmp, pptNew1, pptNew2;
- /* shuffling boxes entails shuffling the
- source points too */
- int w, h;
- int xdir; /* 1 = left right, -1 = right left/ */
- int ydir; /* 1 = top down, -1 = bottom up */
-
- INTER_DECLAREG(*psrcLine);
- INTER_DECLAREG(*pdstLine); /* pointers to line with current src and dst */
- INTER_DECLAREG(*psrc); /* pointer to current src group */
- INTER_DECLAREG(*pdst); /* pointer to current dst group */
-
- INTER_MROP_DECLARE_REG()
-
- /* following used for looping through a line */
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask); /* masks for writing ends of dst */
- int ngMiddle; /* whole groups in dst */
- int xoffSrc, xoffDst;
- register int leftShift, rightShift;
- INTER_DECLAREGP(bits);
- INTER_DECLAREGP(bits1);
- INTER_DECLAREGP(bits2);
- register int ng; /* temp copy of ngMiddle */
-
- /* place to store full source word */
- int nstart; /* number of ragged bits at start of dst */
- int nend; /* number of ragged bits at end of dst */
- int srcStartOver; /* pulling nstart bits from src
- overflows into the next word? */
- int careful;
- int tmpSrc;
-
- INTER_MROP_INITIALIZE(alu,planemask);
-
- iplGetGroupWidthAndPointer (pSrc, widthSrc, psrcBase)
-
- iplGetGroupWidthAndPointer (pDst, widthDst, pdstBase)
-
- /* XXX we have to err on the side of safety when both are windows,
- * because we don't know if IncludeInferiors is being used.
- */
- careful = ((pSrc == pDst) ||
- ((pSrc->type == DRAWABLE_WINDOW) &&
- (pDst->type == DRAWABLE_WINDOW)));
-
- pbox = REGION_RECTS(prgnDst);
- nbox = REGION_NUM_RECTS(prgnDst);
-
- pboxNew1 = NULL;
- pptNew1 = NULL;
- pboxNew2 = NULL;
- pptNew2 = NULL;
- if (careful && (pptSrc->y < pbox->y1))
- {
- /* walk source botttom to top */
- ydir = -1;
- widthSrc = -widthSrc;
- widthDst = -widthDst;
-
- if (nbox > 1)
- {
- /* keep ordering in each band, reverse order of bands */
- pboxNew1 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox);
- if(!pboxNew1)
- return;
- pptNew1 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox);
- if(!pptNew1)
- {
- DEALLOCATE_LOCAL(pboxNew1);
- return;
- }
- pboxBase = pboxNext = pbox+nbox-1;
- while (pboxBase >= pbox)
- {
- while ((pboxNext >= pbox) &&
- (pboxBase->y1 == pboxNext->y1))
- pboxNext--;
- pboxTmp = pboxNext+1;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp <= pboxBase)
- {
- *pboxNew1++ = *pboxTmp++;
- *pptNew1++ = *pptTmp++;
- }
- pboxBase = pboxNext;
- }
- pboxNew1 -= nbox;
- pbox = pboxNew1;
- pptNew1 -= nbox;
- pptSrc = pptNew1;
- }
- }
- else
- {
- /* walk source top to bottom */
- ydir = 1;
- }
-
- if (careful && (pptSrc->x < pbox->x1))
- {
- /* walk source right to left */
- xdir = -1;
-
- if (nbox > 1)
- {
- /* reverse order of rects in each band */
- pboxNew2 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox);
- pptNew2 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox);
- if(!pboxNew2 || !pptNew2)
- {
- if (pptNew2) DEALLOCATE_LOCAL(pptNew2);
- if (pboxNew2) DEALLOCATE_LOCAL(pboxNew2);
- if (pboxNew1)
- {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(pboxNew1);
- }
- return;
- }
- pboxBase = pboxNext = pbox;
- while (pboxBase < pbox+nbox)
- {
- while ((pboxNext < pbox+nbox) &&
- (pboxNext->y1 == pboxBase->y1))
- pboxNext++;
- pboxTmp = pboxNext;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp != pboxBase)
- {
- *pboxNew2++ = *--pboxTmp;
- *pptNew2++ = *--pptTmp;
- }
- pboxBase = pboxNext;
- }
- pboxNew2 -= nbox;
- pbox = pboxNew2;
- pptNew2 -= nbox;
- pptSrc = pptNew2;
- }
- }
- else
- {
- /* walk source left to right */
- xdir = 1;
- }
-
- while(nbox--)
- {
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
-
- if (ydir == -1) /* start at last scanline of rectangle */
- {
- psrcLine = psrcBase + ((pptSrc->y+h-1) * -widthSrc);
- pdstLine = pdstBase + ((pbox->y2-1) * -widthDst);
- }
- else /* start at first scanline */
- {
- psrcLine = psrcBase + (pptSrc->y * widthSrc);
- pdstLine = pdstBase + (pbox->y1 * widthDst);
- }
- if ((pbox->x1 & INTER_PIM) + w <= INTER_PPG)
- {
- INTER_maskpartialbits (pbox->x1, w, endmask);
- startmask = 0;
- ngMiddle = 0;
- }
- else
- {
- INTER_maskbits(pbox->x1, w, startmask, endmask, ngMiddle);
- }
-
- if (xdir == 1)
- {
- xoffSrc = pptSrc->x & INTER_PIM;
- xoffDst = pbox->x1 & INTER_PIM;
- pdstLine += (pbox->x1 >> INTER_PGSH) * INTER_PLANES;
- psrcLine += (pptSrc->x >> INTER_PGSH) * INTER_PLANES;
- ng = xoffSrc - xoffDst;
- if (xoffSrc == xoffDst)
- {
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- pdstLine += widthDst;
- psrcLine += widthSrc;
- if (startmask)
- {
- INTER_MROP_MASK(psrc, pdst, startmask, pdst);
- INTER_NEXT_GROUP(psrc);
- INTER_NEXT_GROUP(pdst);
- }
- ng = ngMiddle;
-
- DuffL(ng, label1,
- INTER_MROP_SOLID(psrc, pdst, pdst);
- INTER_NEXT_GROUP(psrc);
- INTER_NEXT_GROUP(pdst);
- )
- if (endmask)
- INTER_MROP_MASK(psrc, pdst, endmask, pdst);
- }
- }
- else
- {
- if (xoffSrc > xoffDst)
- {
- leftShift = xoffSrc - xoffDst;
- rightShift = (INTER_PIM+1) - leftShift;
- }
- else
- {
- rightShift = xoffDst - xoffSrc;
- leftShift = (INTER_PIM+1) - rightShift;
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- pdstLine += widthDst;
- psrcLine += widthSrc;
- INTER_CLR(bits);
- if (xoffSrc > xoffDst) {
- INTER_COPY(psrc, bits);
- INTER_NEXT_GROUP(psrc);
- }
- if (startmask)
- {
- INTER_GETLRC(leftShift, rightShift, psrc, bits, bits1);
- INTER_MROP_MASK(bits1, pdst, startmask, pdst);
- INTER_NEXT_GROUP(psrc);
- INTER_NEXT_GROUP(pdst);
- }
- ng = ngMiddle;
- DuffL (ng,label2,
- INTER_GETLRC(leftShift, rightShift, psrc, bits, bits1);
- INTER_MROP_SOLID(bits1, pdst, pdst);
- INTER_NEXT_GROUP(psrc);
- INTER_NEXT_GROUP(pdst);
- )
- if (endmask)
- {
- if ((endmask << rightShift) & 0xffff) {
- INTER_GETLRC(leftShift, rightShift, psrc, bits,
- bits1);
- }
- else {
- INTER_SCRLEFT(leftShift, bits, bits1);
- }
- INTER_MROP_MASK(bits1, pdst, endmask, pdst);
- }
- }
- }
- }
- else /* xdir == -1 */
- {
- xoffSrc = (pptSrc->x + w - 1) & INTER_PIM;
- xoffDst = (pbox->x2 - 1) & INTER_PIM;
- pdstLine += (((pbox->x2-1) >> INTER_PGSH) + 1) * INTER_PLANES;
- psrcLine += (((pptSrc->x+w - 1) >> INTER_PGSH) + 1) * INTER_PLANES;
- if (xoffSrc == xoffDst)
- {
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- pdstLine += widthDst;
- psrcLine += widthSrc;
- if (endmask)
- {
- INTER_PREV_GROUP(psrc);
- INTER_PREV_GROUP(pdst);
- INTER_MROP_MASK(psrc, pdst, endmask, pdst);
- }
- ng = ngMiddle;
-
- DuffL(ng,label3,
- INTER_PREV_GROUP(psrc);
- INTER_PREV_GROUP(pdst);
- INTER_MROP_SOLID(psrc, pdst, pdst);
- )
-
- if (startmask)
- {
- INTER_PREV_GROUP(psrc);
- INTER_PREV_GROUP(pdst);
- INTER_MROP_MASK(psrc, pdst, startmask, pdst);
- }
- }
- }
- else
- {
- if (xoffDst > xoffSrc)
- {
- rightShift = xoffDst - xoffSrc;
- leftShift = (INTER_PIM + 1) - rightShift;
- }
- else
- {
- leftShift = xoffSrc - xoffDst;
- rightShift = (INTER_PIM + 1) - leftShift;
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- pdstLine += widthDst;
- psrcLine += widthSrc;
- INTER_CLR(bits);
- if (xoffDst > xoffSrc) {
- INTER_PREV_GROUP(psrc);
- INTER_COPY(psrc, bits);
- }
- if (endmask)
- {
- INTER_PREV_GROUP(psrc);
- INTER_PREV_GROUP(pdst);
- INTER_GETRLC(rightShift, leftShift, psrc, bits, bits1);
- INTER_MROP_MASK(bits1, pdst, endmask, pdst);
- }
- ng = ngMiddle;
- DuffL (ng, label4,
- INTER_PREV_GROUP(psrc);
- INTER_PREV_GROUP(pdst);
- INTER_GETRLC(rightShift, leftShift, psrc, bits, bits1);
- INTER_MROP_SOLID(bits1, pdst, pdst);
- )
- if (startmask)
- {
- INTER_PREV_GROUP(psrc);
- INTER_PREV_GROUP(pdst);
- if ((startmask >> leftShift) & 0xffff) {
- INTER_GETRLC(rightShift, leftShift, psrc, bits,
- bits1);
- }
- else {
- INTER_SCRRIGHT(rightShift, bits, bits1);
- }
- INTER_MROP_MASK(bits1, pdst, startmask, pdst);
- }
- }
- }
- }
- pbox++;
- pptSrc++;
- }
- if (pboxNew2)
- {
- DEALLOCATE_LOCAL(pptNew2);
- DEALLOCATE_LOCAL(pboxNew2);
- }
- if (pboxNew1)
- {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(pboxNew1);
- }
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplbres.c b/nx-X11/programs/Xserver/iplan2p4/iplbres.c
deleted file mode 100644
index 4fa9a3256..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplbres.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: iplbres.c,v 1.15 94/04/17 20:28:45 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "ipl.h"
-#include "servermd.h"
-#include "miline.h"
-
-#include "iplmskbits.h"
-
-/* Solid bresenham line */
-/* NOTES
- e2 is used less often than e1, so it's not in a register
-*/
-
-void
-iplBresS(rop, andp, xorp, addrg, ngwidth, signdx, signdy, axis, x1, y1, e, e1,
- e2, len)
- int rop;
- INTER_DECLARERRAX(andp);
- INTER_DECLARERRAX(xorp);
- INTER_DECLAREG(*addrg); /* pointer to base of bitmap */
- int ngwidth; /* width in longwords of bitmap */
- register int signdx;
- int signdy; /* signs of directions */
- int axis; /* major axis (Y_AXIS or X_AXIS) */
- int x1, y1; /* initial point */
- register int e; /* error accumulator */
- register int e1; /* bresenham increments */
- int e2;
- int len; /* length of line */
-{
- register int e3 = e2-e1;
- INTER_DECLAREG(bit);
- INTER_DECLAREG(leftbit);
- INTER_DECLAREG(rightbit);
-
- /* point to longword containing first point */
- addrg = addrg + y1 * ngwidth + (x1 >> INTER_PGSH) * INTER_PLANES;
-
- if (signdy < 0)
- ngwidth = -ngwidth;
- e = e-e1; /* to make looping easier */
-
- leftbit = iplmask[0];
- rightbit = iplmask[INTER_PPG-1];
- bit = iplmask[x1 & INTER_PIM];
-
- if (axis == X_AXIS)
- {
- if (signdx > 0)
- {
- while (len--)
- {
- INTER_DoMaskRRop(addrg, andp, xorp, bit, addrg);
- bit = bit >> 1;
- e += e1;
- if (e >= 0)
- {
- addrg += ngwidth;
- e += e3;
- }
- if (!bit)
- {
- bit = leftbit;
- addrg += INTER_PLANES;
- }
- }
- }
- else
- {
- while (len--)
- {
- INTER_DoMaskRRop(addrg, andp, xorp, bit, addrg);
- e += e1;
- bit = bit << 1;
- if (e >= 0)
- {
- addrg += ngwidth;
- e += e3;
- }
- if (!bit)
- {
- bit = rightbit;
- addrg -= INTER_PLANES;
- }
- }
- }
- } /* if X_AXIS */
- else
- {
- if (signdx > 0)
- {
- while(len--)
- {
- INTER_DoMaskRRop(addrg, andp, xorp, bit, addrg);
- e += e1;
- if (e >= 0)
- {
- bit = bit >> 1;
- if (!bit)
- {
- bit = leftbit;
- addrg += INTER_PLANES;
- }
- e += e3;
- }
- addrg += ngwidth;
- }
- }
- else
- {
- while(len--)
- {
- INTER_DoMaskRRop(addrg, andp, xorp, bit, addrg);
- e += e1;
- if (e >= 0)
- {
- bit = bit << 1;
- if (!bit)
- {
- bit = rightbit;
- addrg -= INTER_PLANES;
- }
- e += e3;
- }
- addrg += ngwidth;
- }
- }
- } /* else Y_AXIS */
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplbresd.c b/nx-X11/programs/Xserver/iplan2p4/iplbresd.c
deleted file mode 100644
index 61b154135..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplbresd.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: iplbresd.c,v 1.16 94/04/17 20:28:45 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "ipl.h"
-#include "miline.h"
-#include "iplmskbits.h"
-
-/* Dashed bresenham line */
-
-void
-iplBresD(rrops,
- pdashIndex, pDash, numInDashList, pdashOffset, isDoubleDash,
- addrg, ngwidth,
- signdx, signdy, axis, x1, y1, e, e1, e2, len)
- iplRRopPtr rrops;
- int *pdashIndex; /* current dash */
- unsigned char *pDash; /* dash list */
- int numInDashList; /* total length of dash list */
- int *pdashOffset; /* offset into current dash */
- int isDoubleDash;
- INTER_DECLAREG(*addrg); /* pointer to base of bitmap */
- int ngwidth; /* width in groups of bitmap */
- int signdx, signdy; /* signs of directions */
- int axis; /* major axis (Y_AXIS or X_AXIS) */
- int x1, y1; /* initial point */
- register int e; /* error accumulator */
- register int e1; /* bresenham increments */
- int e2;
- int len; /* length of line */
-{
- register int e3 = e2-e1;
- int dashIndex;
- int dashOffset;
- int dashRemaining;
- INTER_DECLARERRAX(xorFg);
- INTER_DECLARERRAX(andFg);
- INTER_DECLARERRAX(xorBg);
- INTER_DECLARERRAX(andBg);
- int thisDash;
-
- dashOffset = *pdashOffset;
- dashIndex = *pdashIndex;
- xorFg = rrops[0].xorg;
- andFg = rrops[0].andg;
- xorBg = rrops[1].xorg;
- andBg = rrops[1].andg;
- dashRemaining = pDash[dashIndex] - dashOffset;
- if ((thisDash = dashRemaining) >= len)
- {
- thisDash = len;
- dashRemaining -= len;
- }
- e = e-e1; /* to make looping easier */
-
-#define BresStep(minor,major) {if ((e += e1) >= 0) { e += e3; minor; } major;}
-
-#define NextDash {\
- dashIndex++; \
- if (dashIndex == numInDashList) \
- dashIndex = 0; \
- dashRemaining = pDash[dashIndex]; \
- if ((thisDash = dashRemaining) >= len) \
- { \
- dashRemaining -= len; \
- thisDash = len; \
- } \
-}
-
- {
- INTER_DECLAREG(startbit);
- INTER_DECLAREG(bit);
-
- /* point to longword containing first point */
- addrg = addrg + (y1 * ngwidth) + (x1 >> INTER_PGSH) * INTER_PLANES;
- signdy = signdy * ngwidth;
- signdx = signdx * INTER_PLANES;
-
- if (signdx > 0)
- startbit = iplmask[0];
- else
- startbit = iplmask[INTER_PPG-1];
- bit = iplmask[x1 & INTER_PIM];
-
-#define X_Loop(store) while(thisDash--) {\
- store; \
- BresStep(addrg += signdy, \
- if (signdx > 0) \
- bit >>= 1; \
- else \
- bit <<= 1; \
- if (!bit) \
- { \
- bit = startbit; \
- addrg += signdx; \
- }) \
- }
-#define Y_Loop(store) while(thisDash--) {\
- store; \
- BresStep(if (signdx > 0) \
- bit >>= 1; \
- else \
- bit <<= 1; \
- if (!bit) \
- { \
- bit = startbit; \
- addrg += signdx; \
- }, \
- addrg += signdy) \
- }
-
- if (axis == X_AXIS)
- {
- for (;;)
- {
- len -= thisDash;
- if (dashIndex & 1) {
- if (isDoubleDash) {
- X_Loop(
- INTER_DoMaskRRop(addrg, andBg, xorBg, bit, addrg);
- )
- } else {
- X_Loop(;)
- }
- } else {
- X_Loop(INTER_DoMaskRRop(addrg, andFg, xorFg, bit, addrg));
- }
- if (!len)
- break;
- NextDash
- }
- } /* if X_AXIS */
- else
- {
- for (;;)
- {
- len -= thisDash;
- if (dashIndex & 1) {
- if (isDoubleDash) {
- Y_Loop(
- INTER_DoMaskRRop(addrg, andBg, xorBg, bit, addrg);
- )
- } else {
- Y_Loop(;)
- }
- } else {
- Y_Loop(INTER_DoMaskRRop(addrg, andFg, xorFg, bit, addrg));
- }
- if (!len)
- break;
- NextDash
- }
- } /* else Y_AXIS */
- }
- *pdashIndex = dashIndex;
- *pdashOffset = pDash[dashIndex] - dashRemaining;
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplbstore.c b/nx-X11/programs/Xserver/iplan2p4/iplbstore.c
deleted file mode 100644
index d2fc23513..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplbstore.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* $XFree86$ */
-
-/*-
- * iplbstore.c --
- * Functions required by the backing-store implementation in MI.
- *
- * Copyright (c) 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- *
- */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef lint
-static char rcsid[] =
-"$XConsortium: iplbstore.c,v 5.8 93/12/13 17:21:51 dpw Exp $ SPRITE (Berkeley)";
-#endif
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#include "ipl.h"
-#include <X11/X.h>
-#include "mibstore.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-
-/*-
- *-----------------------------------------------------------------------
- * iplSaveAreas --
- * Function called by miSaveAreas to actually fetch the areas to be
- * saved into the backing pixmap. This is very simple to do, since
- * iplDoBitblt is designed for this very thing. The region to save is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the screen
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the screen into the pixmap.
- *
- *-----------------------------------------------------------------------
- */
-void
-iplSaveAreas(pPixmap, prgnSave, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnSave; /* Region to save (pixmap-relative) */
- int xorg; /* X origin of region */
- int yorg; /* Y origin of region */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int i;
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- PixmapPtr pScrPix;
-
- i = REGION_NUM_RECTS(prgnSave);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(i * sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnSave);
- pPt = pPtsInit;
- while (--i >= 0) {
- pPt->x = pBox->x1 + xorg;
- pPt->y = pBox->y1 + yorg;
- pPt++;
- pBox++;
- }
-
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pScrPix = (PixmapPtr) pScreen->devPrivates[iplScreenPrivateIndex].ptr;
-#else
- pScrPix = (PixmapPtr) pScreen->devPrivate;
-#endif
-
- iplDoBitbltCopy((DrawablePtr) pScrPix, (DrawablePtr)pPixmap,
- GXcopy, prgnSave, pPtsInit, ~0L);
-
- DEALLOCATE_LOCAL (pPtsInit);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * iplRestoreAreas --
- * Function called by miRestoreAreas to actually fetch the areas to be
- * restored from the backing pixmap. This is very simple to do, since
- * iplDoBitblt is designed for this very thing. The region to restore is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the pixmap
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the pixmap into the screen.
- *
- *-----------------------------------------------------------------------
- */
-void
-iplRestoreAreas(pPixmap, prgnRestore, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnRestore; /* Region to restore (screen-relative)*/
- int xorg; /* X origin of window */
- int yorg; /* Y origin of window */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int i;
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- PixmapPtr pScrPix;
-
- i = REGION_NUM_RECTS(prgnRestore);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(i*sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnRestore);
- pPt = pPtsInit;
- while (--i >= 0) {
- pPt->x = pBox->x1 - xorg;
- pPt->y = pBox->y1 - yorg;
- pPt++;
- pBox++;
- }
-
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pScrPix = (PixmapPtr) pScreen->devPrivates[iplScreenPrivateIndex].ptr;
-#else
- pScrPix = (PixmapPtr) pScreen->devPrivate;
-#endif
-
- iplDoBitbltCopy((DrawablePtr)pPixmap, (DrawablePtr) pScrPix,
- GXcopy, prgnRestore, pPtsInit, ~0L);
-
- DEALLOCATE_LOCAL (pPtsInit);
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplcmap.c b/nx-X11/programs/Xserver/iplan2p4/iplcmap.c
deleted file mode 100644
index 0f3cdca14..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplcmap.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplcmap.c,v 3.0 1996/08/18 01:54:40 dawes Exp $ */
-/* $XConsortium: iplcmap.c,v 4.19 94/04/17 20:28:46 dpw Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or X Consortium
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and X Consortium make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "scrnintstr.h"
-#include "colormapst.h"
-#include "resource.h"
-#include "micmap.h"
-
-int
-iplListInstalledColormaps(pScreen, pmaps)
- ScreenPtr pScreen;
- Colormap *pmaps;
-{
- return miListInstalledColormaps(pScreen, pmaps);
-}
-
-
-void
-iplInstallColormap(pmap)
- ColormapPtr pmap;
-{
- miInstallColormap(pmap);
-}
-
-void
-iplUninstallColormap(pmap)
- ColormapPtr pmap;
-{
- miUninstallColormap(pmap);
-}
-
-void
-iplResolveColor(pred, pgreen, pblue, pVisual)
- unsigned short *pred, *pgreen, *pblue;
- register VisualPtr pVisual;
-{
- miResolveColor(pred, pgreen, pblue, pVisual);
-}
-
-Bool
-iplInitializeColormap(pmap)
- register ColormapPtr pmap;
-{
- return miInitializeColormap(pmap);
-}
-
-int
-iplExpandDirectColors (pmap, ndef, indefs, outdefs)
- ColormapPtr pmap;
- int ndef;
- xColorItem *indefs, *outdefs;
-{
- return miExpandDirectColors(pmap, ndef, indefs, outdefs);
-}
-
-Bool
-iplCreateDefColormap(pScreen)
- ScreenPtr pScreen;
-{
- return miCreateDefColormap(pScreen);
-}
-
-Bool
-iplSetVisualTypes (depth, visuals, bitsPerRGB)
- int depth;
- int visuals;
-{
- return miSetVisualTypes(depth, visuals, bitsPerRGB, -1);
-}
-
-/*
- * Given a list of formats for a screen, create a list
- * of visuals and depths for the screen which coorespond to
- * the set which can be used with this version of ipl.
- */
-
-Bool
-iplInitVisuals (visualp, depthp, nvisualp, ndepthp, rootDepthp, defaultVisp, sizes, bitsPerRGB)
- VisualPtr *visualp;
- DepthPtr *depthp;
- int *nvisualp, *ndepthp;
- int *rootDepthp;
- VisualID *defaultVisp;
- unsigned long sizes;
- int bitsPerRGB;
-{
- return miInitVisuals(visualp, depthp, nvisualp, ndepthp, rootDepthp,
- defaultVisp, sizes, bitsPerRGB, -1);
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplfillarc.c b/nx-X11/programs/Xserver/iplan2p4/iplfillarc.c
deleted file mode 100644
index f62ff9f9e..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplfillarc.c
+++ /dev/null
@@ -1,271 +0,0 @@
-/* $XFree86$ */
-/************************************************************
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-********************************************************/
-
-/* $XConsortium: iplfillarc.c,v 5.15 94/04/17 20:28:47 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "miscstruct.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "ipl.h"
-#include "mifillarc.h"
-#include "iplrrop.h"
-#include "mi.h"
-#include "iplmskbits.h"
-
-static void
-INTER_RROP_NAME(iplFillEllipseSolid) (pDraw, pGC, arc)
- DrawablePtr pDraw;
- GCPtr pGC;
- xArc *arc;
-{
- int x, y, e;
- int yk, xk, ym, xm, dx, dy, xorg, yorg;
- miFillArcRec info;
- INTER_DECLAREG(*addrgt);
- INTER_DECLAREG(*addrgb);
- INTER_DECLAREG(*addrg);
- register int n;
- int ngwidth;
- INTER_RROP_DECLARE
- register int xpos;
- register int slw;
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
- int nlmiddle;
-
- iplGetGroupWidthAndPointer (pDraw, ngwidth, addrgt);
-
- INTER_RROP_FETCH_GC(pGC);
- miFillArcSetup(arc, &info);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrgb = addrgt;
- addrgt += ngwidth * (yorg - y);
- addrgb += ngwidth * (yorg + y + dy);
- while (y)
- {
- addrgt += ngwidth;
- addrgb -= ngwidth;
- MIFILLARCSTEP(slw);
- if (!slw)
- continue;
- xpos = xorg - x;
- addrg = addrgt + (xpos >> INTER_PGSH) * INTER_PLANES;
- if (((xpos & INTER_PIM) + slw) <= INTER_PPG)
- {
- INTER_maskpartialbits(xpos, slw, startmask);
- INTER_RROP_SOLID_MASK(addrg,startmask);
- if (miFillArcLower(slw))
- {
- addrg = addrgb + (xpos >> INTER_PGSH) * INTER_PLANES;
- INTER_RROP_SOLID_MASK(addrg, startmask);
- }
- continue;
- }
- INTER_maskbits(xpos, slw, startmask, endmask, nlmiddle);
- if (startmask)
- {
- INTER_RROP_SOLID_MASK(addrg, startmask);
- INTER_NEXT_GROUP(addrg);
- }
- n = nlmiddle;
- INTER_RROP_SPAN(addrg,n)
-
- if (endmask)
- INTER_RROP_SOLID_MASK(addrg, endmask);
- if (!miFillArcLower(slw))
- continue;
- addrg = addrgb + (xpos >> INTER_PGSH) * INTER_PLANES;
- if (startmask)
- {
- INTER_RROP_SOLID_MASK(addrg, startmask);
- INTER_NEXT_GROUP(addrg);
- }
- n = nlmiddle;
- INTER_RROP_SPAN(addrg, n);
- if (endmask)
- INTER_RROP_SOLID_MASK(addrg, endmask);
- }
-}
-
-#define FILLSPAN(xl,xr,addr) \
- if (xr >= xl) \
- { \
- n = xr - xl + 1; \
- addrg = addr + (xl >> INTER_PGSH) * INTER_PLANES; \
- if (((xl & INTER_PIM) + n) <= INTER_PPG) \
- { \
- INTER_maskpartialbits(xl, n, startmask); \
- INTER_RROP_SOLID_MASK(addrg, startmask); \
- } \
- else \
- { \
- INTER_maskbits(xl, n, startmask, endmask, n); \
- if (startmask) \
- { \
- INTER_RROP_SOLID_MASK(addrg, startmask); \
- INTER_NEXT_GROUP(addrg); \
- } \
- while (n--) \
- { \
- INTER_RROP_SOLID(addrg); \
- INTER_NEXT_GROUP(addrg); \
- } \
- if (endmask) \
- INTER_RROP_SOLID_MASK(addrg, endmask); \
- } \
- }
-
-#define FILLSLICESPANS(flip,addr) \
- if (!flip) \
- { \
- FILLSPAN(xl, xr, addr); \
- } \
- else \
- { \
- xc = xorg - x; \
- FILLSPAN(xc, xr, addr); \
- xc += slw - 1; \
- FILLSPAN(xl, xc, addr); \
- }
-
-static void
-INTER_RROP_NAME(iplFillArcSliceSolid)(pDraw, pGC, arc)
- DrawablePtr pDraw;
- GCPtr pGC;
- xArc *arc;
-{
- int yk, xk, ym, xm, dx, dy, xorg, yorg, slw;
- register int x, y, e;
- miFillArcRec info;
- miArcSliceRec slice;
- int xl, xr, xc;
- INTER_DECLAREG(*addrgt);
- INTER_DECLAREG(*addrgb);
- INTER_DECLAREG(*addrg);
- register int n;
- int ngwidth;
- INTER_RROP_DECLARE
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
-
- iplGetGroupWidthAndPointer (pDraw, ngwidth, addrgt);
-
- INTER_RROP_FETCH_GC(pGC);
- miFillArcSetup(arc, &info);
- miFillArcSliceSetup(arc, &slice, pGC);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrgb = addrgt;
- addrgt += ngwidth * (yorg - y);
- addrgb += ngwidth * (yorg + y + dy);
- slice.edge1.x += pDraw->x;
- slice.edge2.x += pDraw->x;
- while (y > 0)
- {
- addrgt += ngwidth;
- addrgb -= ngwidth;
- MIFILLARCSTEP(slw);
- MIARCSLICESTEP(slice.edge1);
- MIARCSLICESTEP(slice.edge2);
- if (miFillSliceUpper(slice))
- {
- MIARCSLICEUPPER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_top, addrgt);
- }
- if (miFillSliceLower(slice))
- {
- MIARCSLICELOWER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_bot, addrgb);
- }
- }
-}
-
-void
-INTER_RROP_NAME(iplPolyFillArcSolid) (pDraw, pGC, narcs, parcs)
- DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- register xArc *arc;
- register int i;
- int x2, y2;
- BoxRec box;
- RegionPtr cclip;
-
- cclip = iplGetCompositeClip(pGC);
- for (arc = parcs, i = narcs; --i >= 0; arc++)
- {
- if (miFillArcEmpty(arc))
- continue;
- if (miCanFillArc(arc))
- {
- box.x1 = arc->x + pDraw->x;
- box.y1 = arc->y + pDraw->y;
- /*
- * Because box.x2 and box.y2 get truncated to 16 bits, and the
- * RECT_IN_REGION test treats the resulting number as a signed
- * integer, the RECT_IN_REGION test alone can go the wrong way.
- * This can result in a server crash because the rendering
- * routines in this file deal directly with cpu addresses
- * of pixels to be stored, and do not clip or otherwise check
- * that all such addresses are within their respective pixmaps.
- * So we only allow the RECT_IN_REGION test to be used for
- * values that can be expressed correctly in a signed short.
- */
- x2 = box.x1 + (int)arc->width + 1;
- box.x2 = x2;
- y2 = box.y1 + (int)arc->height + 1;
- box.y2 = y2;
- if ( (x2 <= MAXSHORT) && (y2 <= MAXSHORT) &&
- (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) )
- {
- if ((arc->angle2 >= FULLCIRCLE) ||
- (arc->angle2 <= -FULLCIRCLE))
- INTER_RROP_NAME(iplFillEllipseSolid)(pDraw, pGC, arc);
- else
- INTER_RROP_NAME(iplFillArcSliceSolid)(pDraw, pGC, arc);
- continue;
- }
- }
- miPolyFillArc(pDraw, pGC, 1, arc);
- }
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplfillrct.c b/nx-X11/programs/Xserver/iplan2p4/iplfillrct.c
deleted file mode 100644
index a3301457b..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplfillrct.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplfillrct.c,v 3.0 1996/08/18 01:54:42 dawes Exp $ */
-/*
- * Fill rectangles.
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-*/
-
-/* $XConsortium: iplfillrct.c,v 5.18 94/04/17 20:28:47 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "ipl.h"
-#include "iplmskbits.h"
-#include "mergerop.h"
-
-
-void
-iplFillBoxTileOdd (pDrawable, n, rects, tile, xrot, yrot)
- DrawablePtr pDrawable;
- int n;
- BoxPtr rects;
- PixmapPtr tile;
- int xrot, yrot;
-{
- if (tile->drawable.width & INTER_PIM)
- iplFillBoxTileOddCopy (pDrawable, n, rects, tile, xrot, yrot, GXcopy, ~0L);
- else
- iplFillBoxTile32sCopy (pDrawable, n, rects, tile, xrot, yrot, GXcopy, ~0L);
-}
-
-void
-iplFillRectTileOdd (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox;
- BoxPtr pBox;
-{
- int xrot, yrot;
- void (*fill)();
-
- xrot = pDrawable->x + pGC->patOrg.x;
- yrot = pDrawable->y + pGC->patOrg.y;
- if (pGC->tile.pixmap->drawable.width & INTER_PIM)
- {
- fill = iplFillBoxTileOddGeneral;
- if ((pGC->planemask & INTER_PMSK) == INTER_PMSK)
- {
- if (pGC->alu == GXcopy)
- fill = iplFillBoxTileOddCopy;
- }
- }
- else
- {
- fill = iplFillBoxTile32sGeneral;
- if ((pGC->planemask & INTER_PMSK) == INTER_PMSK)
- {
- if (pGC->alu == GXcopy)
- fill = iplFillBoxTile32sCopy;
- }
- }
- (*fill) (pDrawable, nBox, pBox, pGC->tile.pixmap, xrot, yrot, pGC->alu, pGC->planemask);
-}
-
-#define NUM_STACK_RECTS 1024
-
-void
-iplPolyFillRect(pDrawable, pGC, nrectFill, prectInit)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int nrectFill; /* number of rectangles to fill */
- xRectangle *prectInit; /* Pointer to first rectangle to fill */
-{
- xRectangle *prect;
- RegionPtr prgnClip;
- register BoxPtr pbox;
- register BoxPtr pboxClipped;
- BoxPtr pboxClippedBase;
- BoxPtr pextent;
- BoxRec stackRects[NUM_STACK_RECTS];
- iplPrivGC *priv;
- int numRects;
- void (*BoxFill)();
- int n;
- int xorg, yorg;
-
- priv = iplGetGCPrivate(pGC);
- prgnClip = pGC->pCompositeClip;
-
- BoxFill = 0;
- switch (pGC->fillStyle)
- {
- case FillSolid:
- switch (priv->rop) {
- case GXcopy:
- BoxFill = iplFillRectSolidCopy;
- break;
- case GXxor:
- BoxFill = iplFillRectSolidXor;
- break;
- default:
- BoxFill = iplFillRectSolidGeneral;
- break;
- }
- break;
- case FillTiled:
- if (!pGC->pRotatedPixmap)
- BoxFill = iplFillRectTileOdd;
- else
- {
- if (pGC->alu == GXcopy && (pGC->planemask & INTER_PMSK) == INTER_PMSK)
- BoxFill = iplFillRectTile32Copy;
- else
- BoxFill = iplFillRectTile32General;
- }
- break;
- }
- prect = prectInit;
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- if (xorg || yorg)
- {
- prect = prectInit;
- n = nrectFill;
- while(n--)
- {
- prect->x += xorg;
- prect->y += yorg;
- prect++;
- }
- }
-
- prect = prectInit;
-
- numRects = REGION_NUM_RECTS(prgnClip) * nrectFill;
- if (numRects > NUM_STACK_RECTS)
- {
- pboxClippedBase = (BoxPtr)ALLOCATE_LOCAL(numRects * sizeof(BoxRec));
- if (!pboxClippedBase)
- return;
- }
- else
- pboxClippedBase = stackRects;
-
- pboxClipped = pboxClippedBase;
-
- if (REGION_NUM_RECTS(prgnClip) == 1)
- {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_RECTS(prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--)
- {
- if ((pboxClipped->x1 = prect->x) < x1)
- pboxClipped->x1 = x1;
-
- if ((pboxClipped->y1 = prect->y) < y1)
- pboxClipped->y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- pboxClipped->x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- pboxClipped->y2 = by2;
-
- prect++;
- if ((pboxClipped->x1 < pboxClipped->x2) &&
- (pboxClipped->y1 < pboxClipped->y2))
- {
- pboxClipped++;
- }
- }
- }
- else
- {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_EXTENTS(pGC->pScreen, prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--)
- {
- BoxRec box;
-
- if ((box.x1 = prect->x) < x1)
- box.x1 = x1;
-
- if ((box.y1 = prect->y) < y1)
- box.y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- box.x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- box.y2 = by2;
-
- prect++;
-
- if ((box.x1 >= box.x2) || (box.y1 >= box.y2))
- continue;
-
- n = REGION_NUM_RECTS (prgnClip);
- pbox = REGION_RECTS(prgnClip);
-
- /* clip the rectangle to each box in the clip region
- this is logically equivalent to calling Intersect()
- */
- while(n--)
- {
- pboxClipped->x1 = max(box.x1, pbox->x1);
- pboxClipped->y1 = max(box.y1, pbox->y1);
- pboxClipped->x2 = min(box.x2, pbox->x2);
- pboxClipped->y2 = min(box.y2, pbox->y2);
- pbox++;
-
- /* see if clipping left anything */
- if(pboxClipped->x1 < pboxClipped->x2 &&
- pboxClipped->y1 < pboxClipped->y2)
- {
- pboxClipped++;
- }
- }
- }
- }
- if (pboxClipped != pboxClippedBase)
- (*BoxFill) (pDrawable, pGC,
- pboxClipped-pboxClippedBase, pboxClippedBase);
- if (pboxClippedBase != stackRects)
- DEALLOCATE_LOCAL(pboxClippedBase);
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplfillsp.c b/nx-X11/programs/Xserver/iplan2p4/iplfillsp.c
deleted file mode 100644
index 863d369af..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplfillsp.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/* $XFree86$ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or X Consortium
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and X Consortium make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* $XConsortium: iplfillsp.c,v 5.24 94/04/17 20:28:48 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "ipl.h"
-
-#include "mergerop.h"
-
-#define MFB_CONSTS_ONLY
-#include "maskbits.h"
-
-#include "mi.h"
-#include "mispans.h"
-
-#include "iplmskbits.h"
-
-/* scanline filling for color frame buffer
- written by drewry, oct 1986 modified by smarks
- changes for compatibility with Little-endian systems Jul 1987; MIT:yba.
-
- these routines all clip. they assume that anything that has called
-them has already translated the points (i.e. pGC->miTranslate is
-non-zero, which is howit gets set in iplCreateGC().)
-
- the number of new scnalines created by clipping ==
-MaxRectsPerBand * nSpans.
-
- FillSolid is overloaded to be used for OpaqueStipple as well,
-if fgPixel == bgPixel.
-Note that for solids, PrivGC.rop == PrivGC.ropOpStip
-
-
- FillTiled is overloaded to be used for OpaqueStipple, if
-fgPixel != bgPixel. based on the fill style, it uses
-{RotatedTile, gc.alu} or {RotatedStipple, PrivGC.ropOpStip}
-*/
-
-#ifdef notdef
-#include <stdio.h>
-static
-dumpspans(n, ppt, pwidth)
- int n;
- DDXPointPtr ppt;
- int *pwidth;
-{
- fprintf(stderr,"%d spans\n", n);
- while (n--) {
- fprintf(stderr, "[%d,%d] %d\n", ppt->x, ppt->y, *pwidth);
- ppt++;
- pwidth++;
- }
- fprintf(stderr, "\n");
-}
-#endif
-
-/* Fill spans with tiles that aren't 32 bits wide */
-void
-iplUnnaturalTileFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
-DrawablePtr pDrawable;
-GC *pGC;
-int nInit; /* number of spans to fill */
-DDXPointPtr pptInit; /* pointer to list of start points */
-int *pwidthInit; /* pointer to list of n widths */
-int fSorted;
-{
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- void (*fill)();
- int xrot, yrot;
-
- if (!(pGC->planemask))
- return;
-
- if (pGC->tile.pixmap->drawable.width & INTER_PIM)
- {
- fill = iplFillSpanTileOddGeneral;
- if ((pGC->planemask & INTER_PMSK) == INTER_PMSK)
- {
- if (pGC->alu == GXcopy)
- fill = iplFillSpanTileOddCopy;
- }
- }
- else
- {
- fill = iplFillSpanTile32sGeneral;
- if ((pGC->planemask & INTER_PMSK) == INTER_PMSK)
- {
- if (pGC->alu == GXcopy)
- fill = iplFillSpanTile32sCopy;
- }
- }
- n = nInit * miFindMaxBand( iplGetCompositeClip(pGC) );
- if ( n == 0 )
- return;
- pwidth = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- ppt = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!ppt || !pwidth)
- {
- if (ppt) DEALLOCATE_LOCAL(ppt);
- if (pwidth) DEALLOCATE_LOCAL(pwidth);
- return;
- }
- n = miClipSpans( iplGetCompositeClip(pGC),
- pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- xrot = pDrawable->x + pGC->patOrg.x;
- yrot = pDrawable->y + pGC->patOrg.y;
-
- (*fill) (pDrawable, n, ppt, pwidth, pGC->tile.pixmap, xrot, yrot, pGC->alu, pGC->planemask);
-
- DEALLOCATE_LOCAL(ppt);
- DEALLOCATE_LOCAL(pwidth);
-}
-
-/* Fill spans with stipples that aren't 32 bits wide */
-void
-iplUnnaturalStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
-DrawablePtr pDrawable;
-GC *pGC;
-int nInit; /* number of spans to fill */
-DDXPointPtr pptInit; /* pointer to list of start points */
-int *pwidthInit; /* pointer to list of n widths */
-int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- int iline; /* first line of tile to use */
- INTER_DECLAREG(*addrgBase); /* pointer to start of bitmap */
- int ngwidth; /* width in groups of bitmap */
- INTER_DECLAREG(*pdst); /* pointer to current group in bitmap */
- PixmapPtr pStipple; /* pointer to stipple we want to fill with */
- register int w;
- int width, x, xrem, xSrc, ySrc;
- INTER_DECLAREGP(tmpSrc);
- INTER_DECLAREGP(tmpDst1);
- INTER_DECLAREGP(tmpDst2);
- int stwidth, stippleWidth;
- unsigned long *psrcS;
- int rop, stiprop;
- int stippleHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- INTER_DECLARERRAXP(bgfill);
- INTER_DECLARERRAXP(fgfill);
-
- if (!(pGC->planemask))
- return;
-
- n = nInit * miFindMaxBand( iplGetCompositeClip(pGC) );
- if ( n == 0 )
- return;
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans( iplGetCompositeClip(pGC),
- pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
- rop = pGC->alu;
- if (pGC->fillStyle == FillStippled) {
- switch (rop) {
- case GXand:
- case GXcopy:
- case GXnoop:
- case GXor:
- stiprop = rop;
- break;
- default:
- stiprop = rop;
- rop = GXcopy;
- }
- }
- INTER_PFILL(pGC->fgPixel, fgfill);
- INTER_PFILL(pGC->bgPixel, bgfill);
-
- /*
- * OK, so what's going on here? We have two Drawables:
- *
- * The Stipple:
- * Depth = 1
- * Width = stippleWidth
- * Words per scanline = stwidth
- * Pointer to pixels = pStipple->devPrivate.ptr
- */
- pStipple = pGC->stipple;
-
- stwidth = pStipple->devKind / MFB_PGSZB;
- stippleWidth = pStipple->drawable.width;
- stippleHeight = pStipple->drawable.height;
-
- /*
- * The Target:
- * Depth = INTER_PLANES
- * Width = determined from *pwidth
- * Groups per scanline = ngwidth
- * Pointer to pixels = addrgBase
- */
-
- iplGetGroupWidthAndPointer (pDrawable, ngwidth, addrgBase)
-
- /* this replaces rotating the stipple. Instead we just adjust the offset
- * at which we start grabbing bits from the stipple.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and xrem always stay within the stipple bounds.
- */
- modulus (pGC->patOrg.x, stippleWidth, xSrc);
- xSrc += pDrawable->x - stippleWidth;
- modulus (pGC->patOrg.y, stippleHeight, ySrc);
- ySrc += pDrawable->y - stippleHeight;
-
- while (n--)
- {
- iline = (ppt->y - ySrc) % stippleHeight;
- x = ppt->x;
- pdst = addrgBase + (ppt->y * ngwidth);
- psrcS = (unsigned long *) pStipple->devPrivate.ptr + (iline * stwidth);
-
- if (*pwidth)
- {
- width = *pwidth;
- while(width > 0)
- {
- int xtemp, tmpx;
- register unsigned long *ptemp;
- INTER_DECLAREG(*pdsttmp);
- /*
- * Do a stripe through the stipple & destination w pixels
- * wide. w is not more than:
- * - the width of the destination
- * - the width of the stipple
- * - the distance between x and the next word
- * boundary in the destination
- * - the distance between x and the next word
- * boundary in the stipple
- */
-
- /* width of dest/stipple */
- xrem = (x - xSrc) % stippleWidth;
- w = min((stippleWidth - xrem), width);
- /* dist to word bound in dest */
- w = min(w, INTER_PPG - (x & INTER_PIM));
- /* dist to word bound in stip */
- w = min(w, MFB_PPW - (x & MFB_PIM));
-
- xtemp = (xrem & MFB_PIM);
- ptemp = (unsigned long *)(psrcS + (xrem >> MFB_PWSH));
- tmpx = x & INTER_PIM;
- pdsttmp = pdst + (x >> INTER_PGSH) * INTER_PLANES;
- switch ( pGC->fillStyle ) {
- case FillOpaqueStippled:
- INTER_getstipplepixelsb(ptemp,xtemp,w,bgfill,fgfill,
- tmpDst1);
- INTER_putbitsrop(tmpDst1, tmpx, w, pdsttmp,
- pGC->planemask, rop);
- break;
- case FillStippled:
- /* Fill tmpSrc with the source pixels */
- INTER_getbits(pdsttmp, tmpx, w, tmpSrc);
- INTER_getstipplepixels(ptemp, xtemp, w, 0, tmpSrc,
- tmpDst1);
- if (rop != stiprop) {
- INTER_putbitsrop(fgfill, 0, w, tmpSrc, pGC->planemask, stiprop);
- } else {
- INTER_COPY(fgfill, tmpSrc);
- }
- INTER_getstipplepixels(ptemp, xtemp, w, 1, tmpSrc, tmpDst2);
- INTER_OR(tmpDst1,tmpDst2,tmpDst2);
- INTER_putbitsrop(tmpDst2, tmpx, w, pdsttmp,
- pGC->planemask, rop);
- }
- x += w;
- width -= w;
- }
- }
- ppt++;
- pwidth++;
- }
-
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplgc.c b/nx-X11/programs/Xserver/iplan2p4/iplgc.c
deleted file mode 100644
index 1cbcb7522..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplgc.c
+++ /dev/null
@@ -1,786 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplgc.c,v 3.0 1996/08/18 01:54:45 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* $XConsortium: iplgc.c,v 5.62 94/04/17 20:28:49 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ipl.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "region.h"
-
-#include "mistruct.h"
-#include "mibstore.h"
-#include "migc.h"
-
-#include "iplmskbits.h"
-
-# ifdef WriteBitGroup
-# define useTEGlyphBlt iplImageGlyphBlt8
-# else
-# define useTEGlyphBlt iplTEGlyphBlt
-# endif
-
-#ifdef WriteBitGroup
-# define useImageGlyphBlt iplImageGlyphBlt8
-# define usePolyGlyphBlt iplPolyGlyphBlt8
-#else
-# define useImageGlyphBlt miImageGlyphBlt
-# define usePolyGlyphBlt miPolyGlyphBlt
-#endif
-
-#ifdef FOUR_BIT_CODE
-# define usePushPixels iplPushPixels8
-#else
-# define usePushPixels mfbPushPixels
-#endif
-
-#ifdef PIXEL_ADDR
-# define ZeroPolyArc iplZeroPolyArcSS8Copy
-#else
-# define ZeroPolyArc miZeroPolyArc
-#endif
-
-GCFuncs iplGCFuncs = {
- iplValidateGC,
- miChangeGC,
- miCopyGC,
- miDestroyGC,
- miChangeClip,
- miDestroyClip,
- miCopyClip,
-};
-
-GCOps iplTEOps1Rect = {
- iplSolidSpansCopy,
- iplSetSpans,
- iplPutImage,
- iplCopyArea,
- iplCopyPlane,
- iplPolyPoint,
-#ifdef PIXEL_ADDR
- ipl8LineSS1Rect,
- ipl8SegmentSS1Rect,
-#else
- iplLineSS,
- iplSegmentSS,
-#endif
- miPolyRectangle,
- ZeroPolyArc,
- iplFillPoly1RectCopy,
- iplPolyFillRect,
- iplPolyFillArcSolidCopy,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- useTEGlyphBlt,
- usePolyGlyphBlt,
- usePushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps iplNonTEOps1Rect = {
- iplSolidSpansCopy,
- iplSetSpans,
- iplPutImage,
- iplCopyArea,
- iplCopyPlane,
- iplPolyPoint,
-#ifdef PIXEL_ADDR
- ipl8LineSS1Rect,
- ipl8SegmentSS1Rect,
-#else
- iplLineSS,
- iplSegmentSS,
-#endif
- miPolyRectangle,
- ZeroPolyArc,
- iplFillPoly1RectCopy,
- iplPolyFillRect,
- iplPolyFillArcSolidCopy,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- useImageGlyphBlt,
- usePolyGlyphBlt,
- usePushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps iplTEOps = {
- iplSolidSpansCopy,
- iplSetSpans,
- iplPutImage,
- iplCopyArea,
- iplCopyPlane,
- iplPolyPoint,
- iplLineSS,
- iplSegmentSS,
- miPolyRectangle,
- ZeroPolyArc,
- miFillPolygon,
- iplPolyFillRect,
- iplPolyFillArcSolidCopy,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- useTEGlyphBlt,
- usePolyGlyphBlt,
- usePushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps iplNonTEOps = {
- iplSolidSpansCopy,
- iplSetSpans,
- iplPutImage,
- iplCopyArea,
- iplCopyPlane,
- iplPolyPoint,
- iplLineSS,
- iplSegmentSS,
- miPolyRectangle,
-#ifdef PIXEL_ADDR
- iplZeroPolyArcSS8Copy,
-#else
- miZeroPolyArc,
-#endif
- miFillPolygon,
- iplPolyFillRect,
- iplPolyFillArcSolidCopy,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- useImageGlyphBlt,
- usePolyGlyphBlt,
- usePushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps *
-iplMatchCommon (pGC, devPriv)
- GCPtr pGC;
- iplPrivGCPtr devPriv;
-{
- if (pGC->lineWidth != 0)
- return 0;
- if (pGC->lineStyle != LineSolid)
- return 0;
- if (pGC->fillStyle != FillSolid)
- return 0;
- if (devPriv->rop != GXcopy)
- return 0;
- if (pGC->font &&
- FONTMAXBOUNDS(pGC->font,rightSideBearing) -
- FONTMINBOUNDS(pGC->font,leftSideBearing) <= 32 &&
- FONTMINBOUNDS(pGC->font,characterWidth) >= 0)
- {
- if (TERMINALFONT(pGC->font)
-#ifdef FOUR_BIT_CODE
- && FONTMAXBOUNDS(pGC->font,characterWidth) >= PGSZB
-#endif
- )
-#ifdef NO_ONE_RECT
- return &iplTEOps1Rect;
-#else
- if (devPriv->oneRect)
- return &iplTEOps1Rect;
- else
- return &iplTEOps;
-#endif
- else
-#ifdef NO_ONE_RECT
- return &iplNonTEOps1Rect;
-#else
- if (devPriv->oneRect)
- return &iplNonTEOps1Rect;
- else
- return &iplNonTEOps;
-#endif
- }
- return 0;
-}
-
-Bool
-iplCreateGC(pGC)
- register GCPtr pGC;
-{
- iplPrivGC *pPriv;
-
- if (PixmapWidthPaddingInfo[pGC->depth].padPixelsLog2 == LOG2_BITMAP_PAD)
- return (mfbCreateGC(pGC));
- pGC->clientClip = NULL;
- pGC->clientClipType = CT_NONE;
-
- /*
- * some of the output primitives aren't really necessary, since they
- * will be filled in ValidateGC because of dix/CreateGC() setting all
- * the change bits. Others are necessary because although they depend
- * on being a color frame buffer, they don't change
- */
-
- pGC->ops = &iplNonTEOps;
- pGC->funcs = &iplGCFuncs;
-
- /* ipl wants to translate before scan conversion */
- pGC->miTranslate = 1;
-
- pPriv = iplGetGCPrivate(pGC);
- pPriv->rop = pGC->alu;
- pPriv->oneRect = FALSE;
- pGC->fExpose = TRUE;
- pGC->freeCompClip = FALSE;
- pGC->pRotatedPixmap = (PixmapPtr) NULL;
- return TRUE;
-}
-
-/* Clipping conventions
- if the drawable is a window
- CT_REGION ==> pCompositeClip really is the composite
- CT_other ==> pCompositeClip is the window clip region
- if the drawable is a pixmap
- CT_REGION ==> pCompositeClip is the translated client region
- clipped to the pixmap boundary
- CT_other ==> pCompositeClip is the pixmap bounding box
-*/
-
-void
-iplValidateGC(pGC, changes, pDrawable)
- register GCPtr pGC;
- unsigned long changes;
- DrawablePtr pDrawable;
-{
- int mask; /* stateChanges */
- int index; /* used for stepping through bitfields */
- int new_rrop;
- int new_line, new_text, new_fillspans, new_fillarea;
- int new_rotate;
- int xrot, yrot;
- /* flags for changing the proc vector */
- iplPrivGCPtr devPriv;
- int oneRect;
-
- new_rotate = pGC->lastWinOrg.x != pDrawable->x ||
- pGC->lastWinOrg.y != pDrawable->y;
-
- pGC->lastWinOrg.x = pDrawable->x;
- pGC->lastWinOrg.y = pDrawable->y;
- devPriv = iplGetGCPrivate(pGC);
-
- new_rrop = FALSE;
- new_line = FALSE;
- new_text = FALSE;
- new_fillspans = FALSE;
- new_fillarea = FALSE;
-
- /*
- * if the client clip is different or moved OR the subwindowMode has
- * changed OR the window's clip has changed since the last validation
- * we need to recompute the composite clip
- */
-
- if ((changes & (GCClipXOrigin|GCClipYOrigin|GCClipMask|GCSubwindowMode)) ||
- (pDrawable->serialNumber != (pGC->serialNumber & DRAWABLE_SERIAL_BITS))
- )
- {
- miComputeCompositeClip (pGC, pDrawable);
-#ifdef NO_ONE_RECT
- devPriv->oneRect = FALSE;
-#else
- oneRect = REGION_NUM_RECTS(pGC->pCompositeClip) == 1;
- if (oneRect != devPriv->oneRect)
- new_line = TRUE;
- devPriv->oneRect = oneRect;
-#endif
- }
-
- mask = changes;
- while (mask) {
- index = lowbit (mask);
- mask &= ~index;
-
- /*
- * this switch acculmulates a list of which procedures might have
- * to change due to changes in the GC. in some cases (e.g.
- * changing one 16 bit tile for another) we might not really need
- * a change, but the code is being paranoid. this sort of batching
- * wins if, for example, the alu and the font have been changed,
- * or any other pair of items that both change the same thing.
- */
- switch (index) {
- case GCFunction:
- case GCForeground:
- new_rrop = TRUE;
- break;
- case GCPlaneMask:
- new_rrop = TRUE;
- new_text = TRUE;
- break;
- case GCBackground:
- break;
- case GCLineStyle:
- case GCLineWidth:
- new_line = TRUE;
- break;
- case GCJoinStyle:
- case GCCapStyle:
- break;
- case GCFillStyle:
- new_text = TRUE;
- new_fillspans = TRUE;
- new_line = TRUE;
- new_fillarea = TRUE;
- break;
- case GCFillRule:
- break;
- case GCTile:
- new_fillspans = TRUE;
- new_fillarea = TRUE;
- break;
-
- case GCStipple:
- if (pGC->stipple)
- {
- int width = pGC->stipple->drawable.width;
- PixmapPtr nstipple;
-
- if ((width <= INTER_PGSZ) && !(width & (width - 1)) &&
- (nstipple = iplCopyPixmap(pGC->stipple)))
- {
- iplPadPixmap(nstipple);
- (*pGC->pScreen->DestroyPixmap)(pGC->stipple);
- pGC->stipple = nstipple;
- }
- }
- new_fillspans = TRUE;
- new_fillarea = TRUE;
- break;
-
- case GCTileStipXOrigin:
- new_rotate = TRUE;
- break;
-
- case GCTileStipYOrigin:
- new_rotate = TRUE;
- break;
-
- case GCFont:
- new_text = TRUE;
- break;
- case GCSubwindowMode:
- break;
- case GCGraphicsExposures:
- break;
- case GCClipXOrigin:
- break;
- case GCClipYOrigin:
- break;
- case GCClipMask:
- break;
- case GCDashOffset:
- break;
- case GCDashList:
- break;
- case GCArcMode:
- break;
- default:
- break;
- }
- }
-
- /*
- * If the drawable has changed, ensure suitable
- * entries are in the proc vector.
- */
- if (pDrawable->serialNumber != (pGC->serialNumber & (DRAWABLE_SERIAL_BITS))) {
- new_fillspans = TRUE; /* deal with FillSpans later */
- }
-
- if (new_rotate || new_fillspans)
- {
- Bool new_pix = FALSE;
-
- xrot = pGC->patOrg.x + pDrawable->x;
- yrot = pGC->patOrg.y + pDrawable->y;
-
- switch (pGC->fillStyle)
- {
- case FillTiled:
- if (!pGC->tileIsPixel)
- {
- int width = pGC->tile.pixmap->drawable.width;
-
- if ((width <= INTER_PGSZ) && !(width & (width - 1)))
- {
- iplCopyRotatePixmap(pGC->tile.pixmap,
- &pGC->pRotatedPixmap,
- xrot, yrot);
- new_pix = TRUE;
- }
- }
- break;
-#ifdef FOUR_BIT_CODE
- case FillStippled:
- case FillOpaqueStippled:
- {
- int width = pGC->stipple->drawable.width;
-
- if ((width <= INTER_PGSZ) && !(width & (width - 1)))
- {
- mfbCopyRotatePixmap(pGC->stipple,
- &pGC->pRotatedPixmap, xrot, yrot);
- new_pix = TRUE;
- }
- }
- break;
-#endif
- }
- if (!new_pix && pGC->pRotatedPixmap)
- {
- (*pGC->pScreen->DestroyPixmap)(pGC->pRotatedPixmap);
- pGC->pRotatedPixmap = (PixmapPtr) NULL;
- }
- }
-
- if (new_rrop)
- {
- int old_rrop;
-
- old_rrop = devPriv->rop;
- devPriv->rop = iplReduceRasterOp(pGC->alu, pGC->fgPixel,
- pGC->planemask, devPriv->andg, devPriv->xorg);
- if (old_rrop == devPriv->rop)
- new_rrop = FALSE;
- else
- {
-#ifdef PIXEL_ADDR
- new_line = TRUE;
-#endif
-#ifdef WriteBitGroup
- new_text = TRUE;
-#endif
- new_fillspans = TRUE;
- new_fillarea = TRUE;
- }
- }
-
- if (new_rrop || new_fillspans || new_text || new_fillarea || new_line)
- {
- GCOps *newops;
-
- if (newops = iplMatchCommon (pGC, devPriv))
- {
- if (pGC->ops->devPrivate.val)
- miDestroyGCOps (pGC->ops);
- pGC->ops = newops;
- new_rrop = new_line = new_fillspans = new_text = new_fillarea = 0;
- }
- else
- {
- if (!pGC->ops->devPrivate.val)
- {
- pGC->ops = miCreateGCOps (pGC->ops);
- pGC->ops->devPrivate.val = 1;
- }
- }
- }
-
- /* deal with the changes we've collected */
- if (new_line)
- {
- pGC->ops->FillPolygon = miFillPolygon;
-#ifdef NO_ONE_RECT
- if (pGC->fillStyle == FillSolid)
- {
- switch (devPriv->rop) {
- case GXcopy:
- pGC->ops->FillPolygon = iplFillPoly1RectCopy;
- break;
- default:
- pGC->ops->FillPolygon = iplFillPoly1RectGeneral;
- break;
- }
- }
-#else
- if (devPriv->oneRect && pGC->fillStyle == FillSolid)
- {
- switch (devPriv->rop) {
- case GXcopy:
- pGC->ops->FillPolygon = iplFillPoly1RectCopy;
- break;
- default:
- pGC->ops->FillPolygon = iplFillPoly1RectGeneral;
- break;
- }
- }
-#endif
- if (pGC->lineWidth == 0)
- {
-#ifdef PIXEL_ADDR
- if ((pGC->lineStyle == LineSolid) && (pGC->fillStyle == FillSolid))
- {
- switch (devPriv->rop)
- {
- case GXxor:
- pGC->ops->PolyArc = iplZeroPolyArcSS8Xor;
- break;
- case GXcopy:
- pGC->ops->PolyArc = iplZeroPolyArcSS8Copy;
- break;
- default:
- pGC->ops->PolyArc = iplZeroPolyArcSS8General;
- break;
- }
- }
- else
-#endif
- pGC->ops->PolyArc = miZeroPolyArc;
- }
- else
- pGC->ops->PolyArc = miPolyArc;
- pGC->ops->PolySegment = miPolySegment;
- switch (pGC->lineStyle)
- {
- case LineSolid:
- if(pGC->lineWidth == 0)
- {
- if (pGC->fillStyle == FillSolid)
- {
-#if defined(PIXEL_ADDR) && !defined(NO_ONE_RECT)
- if (devPriv->oneRect &&
- ((pDrawable->x >= pGC->pScreen->width - 32768) &&
- (pDrawable->y >= pGC->pScreen->height - 32768)))
- {
- pGC->ops->Polylines = ipl8LineSS1Rect;
- pGC->ops->PolySegment = ipl8SegmentSS1Rect;
- } else
-#endif
-#ifdef NO_ONE_RECT
- {
- pGC->ops->Polylines = ipl8LineSS1Rect;
- pGC->ops->PolySegment = ipl8SegmentSS1Rect;
- }
-#else
- {
- pGC->ops->Polylines = iplLineSS;
- pGC->ops->PolySegment = iplSegmentSS;
- }
-#endif
- }
- else
- pGC->ops->Polylines = miZeroLine;
- }
- else
- pGC->ops->Polylines = miWideLine;
- break;
- case LineOnOffDash:
- case LineDoubleDash:
- if (pGC->lineWidth == 0 && pGC->fillStyle == FillSolid)
- {
- pGC->ops->Polylines = iplLineSD;
- pGC->ops->PolySegment = iplSegmentSD;
- } else
- pGC->ops->Polylines = miWideDash;
- break;
- }
- }
-
- if (new_text && (pGC->font))
- {
- if (FONTMAXBOUNDS(pGC->font,rightSideBearing) -
- FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 ||
- FONTMINBOUNDS(pGC->font,characterWidth) < 0)
- {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- pGC->ops->ImageGlyphBlt = miImageGlyphBlt;
- }
- else
- {
-#ifdef WriteBitGroup
- if (pGC->fillStyle == FillSolid)
- {
- if (devPriv->rop == GXcopy)
- pGC->ops->PolyGlyphBlt = iplPolyGlyphBlt8;
- else
-#ifdef FOUR_BIT_CODE
- pGC->ops->PolyGlyphBlt = iplPolyGlyphRop8;
-#else
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
-#endif
- }
- else
-#endif
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- /* special case ImageGlyphBlt for terminal emulator fonts */
-#if !defined(WriteBitGroup)
- if (TERMINALFONT(pGC->font) &&
- (pGC->planemask & INTER_PMSK) == INTER_PMSK
-#ifdef FOUR_BIT_CODE
- && FONTMAXBOUNDS(pGC->font,characterWidth) >= PGSZB
-#endif
- )
- {
- pGC->ops->ImageGlyphBlt = useTEGlyphBlt;
- }
- else
-#endif
- {
-#ifdef WriteBitGroup
- if (devPriv->rop == GXcopy &&
- pGC->fillStyle == FillSolid &&
- (pGC->planemask & INTER_PMSK) == INTER_PMSK)
- pGC->ops->ImageGlyphBlt = iplImageGlyphBlt8;
- else
-#endif
- pGC->ops->ImageGlyphBlt = miImageGlyphBlt;
- }
- }
- }
-
-
- if (new_fillspans) {
- switch (pGC->fillStyle) {
- case FillSolid:
- switch (devPriv->rop) {
- case GXcopy:
- pGC->ops->FillSpans = iplSolidSpansCopy;
- break;
- case GXxor:
- pGC->ops->FillSpans = iplSolidSpansXor;
- break;
- default:
- pGC->ops->FillSpans = iplSolidSpansGeneral;
- break;
- }
- break;
- case FillTiled:
- if (pGC->pRotatedPixmap)
- {
- if (pGC->alu == GXcopy && (pGC->planemask & INTER_PMSK) == INTER_PMSK)
- pGC->ops->FillSpans = iplTile32FSCopy;
- else
- pGC->ops->FillSpans = iplTile32FSGeneral;
- }
- else
- pGC->ops->FillSpans = iplUnnaturalTileFS;
- break;
- case FillStippled:
-#ifdef FOUR_BIT_CODE
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = ipl8Stipple32FS;
- else
-#endif
- pGC->ops->FillSpans = iplUnnaturalStippleFS;
- break;
- case FillOpaqueStippled:
-#ifdef FOUR_BIT_CODE
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = ipl8OpaqueStipple32FS;
- else
-#endif
- pGC->ops->FillSpans = iplUnnaturalStippleFS;
- break;
- default:
- FatalError("iplValidateGC: illegal fillStyle\n");
- }
- } /* end of new_fillspans */
-
- if (new_fillarea) {
-#ifndef FOUR_BIT_CODE
- pGC->ops->PolyFillRect = miPolyFillRect;
- if (pGC->fillStyle == FillSolid || pGC->fillStyle == FillTiled)
- {
- pGC->ops->PolyFillRect = iplPolyFillRect;
- }
-#endif
-#ifdef FOUR_BIT_CODE
- pGC->ops->PushPixels = mfbPushPixels;
- if (pGC->fillStyle == FillSolid && devPriv->rop == GXcopy)
- pGC->ops->PushPixels = iplPushPixels8;
-#endif
- pGC->ops->PolyFillArc = miPolyFillArc;
- if (pGC->fillStyle == FillSolid)
- {
- switch (devPriv->rop)
- {
- case GXcopy:
- pGC->ops->PolyFillArc = iplPolyFillArcSolidCopy;
- break;
- default:
- pGC->ops->PolyFillArc = iplPolyFillArcSolidGeneral;
- break;
- }
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplgetsp.c b/nx-X11/programs/Xserver/iplan2p4/iplgetsp.c
deleted file mode 100644
index c325ad1fe..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplgetsp.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: iplgetsp.c,v 5.14 94/04/17 20:28:50 dpw Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-
-#include "misc.h"
-#include "region.h"
-#include "gc.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "ipl.h"
-#include "iplmskbits.h"
-#include "iplpack.h"
-
-/* GetSpans -- for each span, gets bits from drawable starting at ppt[i]
- * and continuing for pwidth[i] bits
- * Each scanline returned will be server scanline padded, i.e., it will come
- * out to an integral number of words.
- */
-void
-iplGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pchardstStart)
- DrawablePtr pDrawable; /* drawable from which to get bits */
- int wMax; /* largest value of all *pwidths */
- register DDXPointPtr ppt; /* points to start copying from */
- int *pwidth; /* list of number of bits to copy */
- int nspans; /* number of scanlines to copy */
- char *pchardstStart; /* where to put the bits */
-{
- unsigned long *pdst = (unsigned long *)pchardstStart;
- INTER_DECLAREG(*psrc); /* where to get the bits */
- INTER_DECLAREGP(tmpSrc); /* scratch buffer for bits */
- INTER_DECLAREG(*psrcBase); /* start of src bitmap */
- int widthSrc; /* width of pixmap in bytes */
- register DDXPointPtr pptLast; /* one past last point to get */
- int xEnd; /* last pixel to copy from */
- register int nstart;
- int nend;
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
- int nlMiddle, nl, srcBit;
- int w,longs;
- INTER_DECLAREG(*tmppdst);
- INTER_DECLAREG(*ipdst);
-
- switch (pDrawable->bitsPerPixel) {
- case 1:
- mfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pchardstStart);
- return;
- case INTER_PLANES:
- break;
- default:
- FatalError("iplGetSpans: invalid depth\n");
- }
-
- longs = NUM_LONGS(INTER_PLANES, 0, wMax);
- tmppdst = (unsigned short *)
- ALLOCATE_LOCAL(NUM_TEMP_BYTES(INTER_PLANES, longs));
- iplGetGroupWidthAndPointer (pDrawable, widthSrc, psrcBase)
-
- pptLast = ppt + nspans;
- while(ppt < pptLast)
- {
- xEnd = min(ppt->x + *pwidth, (widthSrc / INTER_PLANES) << INTER_PGSH);
- psrc = psrcBase + ppt->y * widthSrc +
- (ppt->x >> INTER_PGSH) * INTER_PLANES;
- w = xEnd - ppt->x;
- srcBit = ppt->x & INTER_PIM;
- ipdst = tmppdst;
-
- if (srcBit + w <= INTER_PPG)
- {
- INTER_getbits(psrc, srcBit, w, tmpSrc);
- INTER_putbits(tmpSrc, 0, w, ipdst, ~((unsigned long)0));
- }
- else
- {
- INTER_maskbits(ppt->x, w, startmask, endmask, nlMiddle);
- nstart = 0;
- if (startmask)
- {
- nstart = INTER_PPG - srcBit;
- INTER_getbits(psrc, srcBit, nstart, tmpSrc);
- INTER_putbits(tmpSrc, 0, nstart, ipdst, ~((unsigned long)0));
- if(srcBit + nstart >= INTER_PPG)
- INTER_NEXT_GROUP(psrc);
- }
- nl = nlMiddle;
- while (nl--)
- {
- INTER_putbits(psrc, nstart, INTER_PPG, ipdst, ~((unsigned long)0));
- INTER_NEXT_GROUP(psrc);
- INTER_NEXT_GROUP(ipdst);
- }
- if (endmask)
- {
- nend = xEnd & INTER_PIM;
- INTER_getbits(psrc, 0, nend, tmpSrc);
- INTER_putbits(tmpSrc, nstart, nend, ipdst, ~((unsigned long)0));
- }
- }
- longs=(w * INTER_PLANES + 31)/32;
- iplPackLine(INTER_PLANES, longs, tmppdst, pdst);
- pdst+=longs;
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(tmppdst);
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplhrzvert.c b/nx-X11/programs/Xserver/iplan2p4/iplhrzvert.c
deleted file mode 100644
index 45faaa1cb..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplhrzvert.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: iplhrzvert.c,v 1.8 94/04/17 20:28:51 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gc.h"
-#include "window.h"
-#include "pixmap.h"
-#include "region.h"
-
-#include "ipl.h"
-
-#include "iplmskbits.h"
-
-/* horizontal solid line
- abs(len) > 1
-*/
-iplHorzS(rop, andp, xorp, addrg, ngwidth, x1, y1, len)
-register int rop;
-INTER_DECLARERRAX(andp);
-INTER_DECLARERRAX(xorp);
-INTER_DECLAREG(*addrg); /* pointer to base of bitmap */
-int ngwidth; /* width in groups of bitmap */
-int x1; /* initial point */
-int y1;
-int len; /* length of line */
-{
- register int ngmiddle;
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
-
- addrg = addrg + y1 * ngwidth + (x1 >> INTER_PGSH) * INTER_PLANES;
- /* all bits inside same group */
- if ( ((x1 & INTER_PIM) + len) < INTER_PPG)
- {
- INTER_maskpartialbits(x1, len, startmask);
- INTER_DoMaskRRop(addrg, andp, xorp, startmask, addrg);
- }
- else
- {
- INTER_maskbits(x1, len, startmask, endmask, ngmiddle);
- if (startmask)
- {
- INTER_DoMaskRRop(addrg, andp, xorp, startmask, addrg);
- addrg += INTER_PLANES;
- }
- while (ngmiddle--)
- {
- INTER_DoRRop(addrg, andp, xorp, addrg);
- addrg += INTER_PLANES;
- }
- if (endmask)
- INTER_DoMaskRRop(addrg, andp, xorp, endmask, addrg);
- }
-}
-
-/* vertical solid line */
-
-iplVertS(rop, andp, xorp, addrg, ngwidth, x1, y1, len)
-int rop;
-INTER_DECLARERRAX(andp);
-INTER_DECLARERRAX(xorp);
-INTER_DECLAREG(*addrg); /* pointer to base of bitmap */
-register int ngwidth; /* width in groups of bitmap */
-int x1, y1; /* initial point */
-register int len; /* length of line */
-{
- addrg = addrg + (y1 * ngwidth) + (x1 >> INTER_PGSH) * INTER_PLANES;
- while (len--)
- {
- INTER_DoMaskRRop(addrg, andp, xorp, iplmask[x1 & INTER_PIM], addrg);
- addrg += ngwidth;
- }
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplimage.c b/nx-X11/programs/Xserver/iplan2p4/iplimage.c
deleted file mode 100644
index 5b72b885f..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplimage.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: iplimage.c,v 1.18 94/04/17 20:28:52 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "gcstruct.h"
-#include "ipl.h"
-#include "servermd.h"
-
-void
-iplPutImage(pDraw, pGC, depth, x, y, w, h, leftPad, format, pImage)
- DrawablePtr pDraw;
- GCPtr pGC;
- int depth, x, y, w, h;
- int leftPad;
- int format;
- char *pImage;
-{
- miPutImage(pDraw, pGC, depth, x, y, w, h, leftPad, format, pImage);
-}
-
-void
-iplGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine)
- DrawablePtr pDrawable;
- int sx, sy, w, h;
- unsigned int format;
- unsigned long planeMask;
- char *pdstLine;
-{
- miGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplline.c b/nx-X11/programs/Xserver/iplan2p4/iplline.c
deleted file mode 100644
index 19d078cb2..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplline.c
+++ /dev/null
@@ -1,758 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplline.c,v 3.0 1996/08/18 01:54:50 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XConsortium: iplline.c,v 1.23 94/04/17 20:28:53 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "ipl.h"
-#include "miline.h"
-
-#include "iplmskbits.h"
-
-/* single-pixel lines on a color frame buffer
-
- NON-SLOPED LINES
- horizontal lines are always drawn left to right; we have to
-move the endpoints right by one after they're swapped.
- horizontal lines will be confined to a single band of a
-region. the code finds that band (giving up if the lower
-bound of the band is above the line we're drawing); then it
-finds the first box in that band that contains part of the
-line. we clip the line to subsequent boxes in that band.
- vertical lines are always drawn top to bottom (y-increasing.)
-this requires adding one to the y-coordinate of each endpoint
-after swapping.
-
- SLOPED LINES
- when clipping a sloped line, we bring the second point inside
-the clipping box, rather than one beyond it, and then add 1 to
-the length of the line before drawing it. this lets us use
-the same box for finding the outcodes for both endpoints. since
-the equation for clipping the second endpoint to an edge gives us
-1 beyond the edge, we then have to move the point towards the
-first point by one step on the major axis.
- eventually, there will be a diagram here to explain what's going
-on. the method uses Cohen-Sutherland outcodes to determine
-outsideness, and a method similar to Pike's layers for doing the
-actual clipping.
-
-*/
-
-void
-#ifdef POLYSEGMENT
-iplSegmentSS (pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-iplLineSS (pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit;
-#endif
-{
- int nboxInit;
- register int nbox;
- BoxPtr pboxInit;
- register BoxPtr pbox;
-#ifndef POLYSEGMENT
- register DDXPointPtr ppt; /* pointer to list of translated points */
-#endif
-
- unsigned int oc1; /* outcode of point 1 */
- unsigned int oc2; /* outcode of point 2 */
-
- INTER_DECLAREG(*addrg); /* address of destination pixmap */
- int ngwidth; /* width in groups of destination pixmap */
- int xorg, yorg; /* origin of window */
-
- int adx; /* abs values of dx and dy */
- int ady;
- int signdx; /* sign of dx and dy */
- int signdy;
- int e, e1, e2; /* bresenham error and increments */
- int len; /* length of segment */
- int axis; /* major axis */
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
-
- /* a bunch of temporaries */
- int tmp;
- register int y1, y2;
- register int x1, x2;
- RegionPtr cclip;
- iplPrivGCPtr devPriv;
- INTER_DECLARERRAX(xor);
- INTER_DECLARERRAX(and);
- int alu;
-
- devPriv = iplGetGCPrivate(pGC);
- cclip = pGC->pCompositeClip;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- iplGetGroupWidthAndPointer (pDrawable, ngwidth, addrg)
-
- alu = devPriv->rop;
- xor = devPriv->xorg;
- and = devPriv->andg;
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-#ifdef POLYSEGMENT
- while (nseg--)
-#else
- ppt = pptInit;
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
- while(--npt)
-#endif
- {
- nbox = nboxInit;
- pbox = pboxInit;
-
-#ifdef POLYSEGMENT
- x1 = pSeg->x1 + xorg;
- y1 = pSeg->y1 + yorg;
- x2 = pSeg->x2 + xorg;
- y2 = pSeg->y2 + yorg;
- pSeg++;
-#else
- x1 = x2;
- y1 = y2;
- ++ppt;
- if (mode == CoordModePrevious)
- {
- xorg = x1;
- yorg = y1;
- }
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
-#endif
-
- if (x1 == x2) /* vertical line */
- {
- /* make the line go top to bottom of screen, keeping
- endpoint semantics
- */
- if (y1 > y2)
- {
- register int tmp;
-
- tmp = y2;
- y2 = y1 + 1;
- y1 = tmp + 1;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- y1--;
-#endif
- }
-#ifdef POLYSEGMENT
- else if (pGC->capStyle != CapNotLast)
- y2++;
-#endif
- /* get to first band that might contain part of line */
- while ((nbox) && (pbox->y2 <= y1))
- {
- pbox++;
- nbox--;
- }
-
- if (nbox)
- {
- /* stop when lower edge of box is beyond end of line */
- while((nbox) && (y2 >= pbox->y1))
- {
- if ((x1 >= pbox->x1) && (x1 < pbox->x2))
- {
- int y1t, y2t;
- /* this box has part of the line in it */
- y1t = max(y1, pbox->y1);
- y2t = min(y2, pbox->y2);
- if (y1t != y2t)
- {
- iplVertS (alu, and, xor,
- addrg, ngwidth,
- x1, y1t, y2t-y1t);
- }
- }
- nbox--;
- pbox++;
- }
- }
-#ifndef POLYSEGMENT
- y2 = ppt->y + yorg;
-#endif
- }
- else if (y1 == y2) /* horizontal line */
- {
- /* force line from left to right, keeping
- endpoint semantics
- */
- if (x1 > x2)
- {
- register int tmp;
-
- tmp = x2;
- x2 = x1 + 1;
- x1 = tmp + 1;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- x1--;
-#endif
- }
-#ifdef POLYSEGMENT
- else if (pGC->capStyle != CapNotLast)
- x2++;
-#endif
-
- /* find the correct band */
- while( (nbox) && (pbox->y2 <= y1))
- {
- pbox++;
- nbox--;
- }
-
- /* try to draw the line, if we haven't gone beyond it */
- if ((nbox) && (pbox->y1 <= y1))
- {
- /* when we leave this band, we're done */
- tmp = pbox->y1;
- while((nbox) && (pbox->y1 == tmp))
- {
- int x1t, x2t;
-
- if (pbox->x2 <= x1)
- {
- /* skip boxes until one might contain start point */
- nbox--;
- pbox++;
- continue;
- }
-
- /* stop if left of box is beyond right of line */
- if (pbox->x1 >= x2)
- {
- nbox = 0;
- break;
- }
-
- x1t = max(x1, pbox->x1);
- x2t = min(x2, pbox->x2);
- if (x1t != x2t)
- {
- iplHorzS (alu, and, xor,
- addrg, ngwidth,
- x1t, y1, x2t-x1t);
- }
- nbox--;
- pbox++;
- }
- }
-#ifndef POLYSEGMENT
- x2 = ppt->x + xorg;
-#endif
- }
- else /* sloped line */
- {
- CalcLineDeltas(x1, y1, x2, y2, adx, ady, signdx, signdy,
- 1, 1, octant);
-
- if (adx > ady)
- {
- axis = X_AXIS;
- e1 = ady << 1;
- e2 = e1 - (adx << 1);
- e = e1 - adx;
- }
- else
- {
- axis = Y_AXIS;
- e1 = adx << 1;
- e2 = e1 - (ady << 1);
- e = e1 - ady;
- SetYMajorOctant(octant);
- }
-
- FIXUP_ERROR(e, octant, bias);
-
- /* we have bresenham parameters and two points.
- all we have to do now is clip and draw.
- */
-
- while(nbox--)
- {
- oc1 = 0;
- oc2 = 0;
- OUTCODES(oc1, x1, y1, pbox);
- OUTCODES(oc2, x2, y2, pbox);
- if ((oc1 | oc2) == 0)
- {
- if (axis == X_AXIS)
- len = adx;
- else
- len = ady;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- len++;
-#endif
- iplBresS (alu, and, xor,
- addrg, ngwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, len);
- break;
- }
- else if (oc1 & oc2)
- {
- pbox++;
- }
- else
- {
- int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2;
- int clip1 = 0, clip2 = 0;
- int clipdx, clipdy;
- int err;
-
- if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1,
- pbox->y2-1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady, &clip1, &clip2,
- octant, bias, oc1, oc2) == -1)
- {
- pbox++;
- continue;
- }
-
- if (axis == X_AXIS)
- len = abs(new_x2 - new_x1);
- else
- len = abs(new_y2 - new_y1);
-#ifdef POLYSEGMENT
- if (clip2 != 0 || pGC->capStyle != CapNotLast)
- len++;
-#else
- len += (clip2 != 0);
-#endif
- if (len)
- {
- /* unwind bresenham error term to first point */
- if (clip1)
- {
- clipdx = abs(new_x1 - x1);
- clipdy = abs(new_y1 - y1);
- if (axis == X_AXIS)
- err = e+((clipdy*e2) + ((clipdx-clipdy)*e1));
- else
- err = e+((clipdx*e2) + ((clipdy-clipdx)*e1));
- }
- else
- err = e;
- iplBresS(alu, and, xor,
- addrg, ngwidth,
- signdx, signdy, axis, new_x1, new_y1,
- err, e1, e2, len);
- }
- pbox++;
- }
- } /* while (nbox--) */
- } /* sloped line */
- } /* while (nline--) */
-
-#ifndef POLYSEGMENT
- /* paint the last point if the end style isn't CapNotLast.
- (Assume that a projecting, butt, or round cap that is one
- pixel wide is the same as the single pixel of the endpoint.)
- */
-
- if ((pGC->capStyle != CapNotLast) &&
- ((ppt->x + xorg != pptInit->x + pDrawable->x) ||
- (ppt->y + yorg != pptInit->y + pDrawable->y) ||
- (ppt == pptInit + 1)))
- {
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--)
- {
- if ((x2 >= pbox->x1) &&
- (y2 >= pbox->y1) &&
- (x2 < pbox->x2) &&
- (y2 < pbox->y2))
- {
- INTER_DECLAREG(mask);
- INTER_DECLAREGP(temp);
-
- mask = iplmask[x2 & INTER_PIM];
- addrg += (y2 * ngwidth) + (x2 >> INTER_PGSH) * INTER_PLANES;
-
- INTER_DoRRop(addrg, and, xor, temp);
- INTER_COPYM(temp, addrg, mask, addrg);
- break;
- }
- else
- pbox++;
- }
- }
-#endif
-}
-
-/*
- * Draw dashed 1-pixel lines.
- */
-
-void
-#ifdef POLYSEGMENT
-iplSegmentSD (pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-iplLineSD( pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit;
-#endif
-{
- int nboxInit;
- register int nbox;
- BoxPtr pboxInit;
- register BoxPtr pbox;
-#ifndef POLYSEGMENT
- register DDXPointPtr ppt; /* pointer to list of translated points */
-#endif
-
- register unsigned int oc1; /* outcode of point 1 */
- register unsigned int oc2; /* outcode of point 2 */
-
- INTER_DECLAREG(*addrg); /* address of destination pixmap */
- int ngwidth; /* width in groups of destination pixmap */
- int xorg, yorg; /* origin of window */
-
- int adx; /* abs values of dx and dy */
- int ady;
- int signdx; /* sign of dx and dy */
- int signdy;
- int e, e1, e2; /* bresenham error and increments */
- int len; /* length of segment */
- int axis; /* major axis */
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
- int x1, x2, y1, y2;
- RegionPtr cclip;
- iplRRopRec rrops[2];
- unsigned char *pDash;
- int dashOffset;
- int numInDashList;
- int dashIndex;
- int isDoubleDash;
- int dashIndexTmp, dashOffsetTmp;
- int unclippedlen;
- iplPrivGCPtr devPriv;
-
- devPriv = iplGetGCPrivate(pGC);
- cclip = pGC->pCompositeClip;
- rrops[0].rop = devPriv->rop;
- INTER_COPY(devPriv->andg, rrops[0].andg)
- INTER_COPY(devPriv->xorg, rrops[0].xorg)
-#if 0
- if (pGC->alu == GXcopy)
- {
- rrops[1].rop = GXcopy;
- rrops[1].and = 0;
- rrops[1].xor = PFILL (pGC->bgPixel);
- }
- else
-#endif
- {
- rrops[1].rop = iplReduceRasterOp (pGC->alu,
- pGC->bgPixel, pGC->planemask,
- rrops[1].andg, rrops[1].xorg);
- }
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- iplGetGroupWidthAndPointer (pDrawable, ngwidth, addrg)
-
- /* compute initial dash values */
-
- pDash = (unsigned char *) pGC->dash;
- numInDashList = pGC->numInDashList;
- isDoubleDash = (pGC->lineStyle == LineDoubleDash);
- dashIndex = 0;
- dashOffset = 0;
- miStepDash ((int)pGC->dashOffset, &dashIndex, pDash,
- numInDashList, &dashOffset);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-#ifdef POLYSEGMENT
- while (nseg--)
-#else
- ppt = pptInit;
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
- while(--npt)
-#endif
- {
- nbox = nboxInit;
- pbox = pboxInit;
-
-#ifdef POLYSEGMENT
- x1 = pSeg->x1 + xorg;
- y1 = pSeg->y1 + yorg;
- x2 = pSeg->x2 + xorg;
- y2 = pSeg->y2 + yorg;
- pSeg++;
-#else
- x1 = x2;
- y1 = y2;
- ++ppt;
- if (mode == CoordModePrevious)
- {
- xorg = x1;
- yorg = y1;
- }
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
-#endif
-
- CalcLineDeltas(x1, y1, x2, y2, adx, ady, signdx, signdy, 1, 1, octant);
-
- if (adx > ady)
- {
- axis = X_AXIS;
- e1 = ady << 1;
- e2 = e1 - (adx << 1);
- e = e1 - adx;
- unclippedlen = adx;
- }
- else
- {
- axis = Y_AXIS;
- e1 = adx << 1;
- e2 = e1 - (ady << 1);
- e = e1 - ady;
- unclippedlen = ady;
- SetYMajorOctant(octant);
- }
-
- FIXUP_ERROR(e, octant, bias);
-
- /* we have bresenham parameters and two points.
- all we have to do now is clip and draw.
- */
-
- while(nbox--)
- {
- oc1 = 0;
- oc2 = 0;
- OUTCODES(oc1, x1, y1, pbox);
- OUTCODES(oc2, x2, y2, pbox);
- if ((oc1 | oc2) == 0)
- {
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- unclippedlen++;
- dashIndexTmp = dashIndex;
- dashOffsetTmp = dashOffset;
- iplBresD (rrops,
- &dashIndexTmp, pDash, numInDashList,
- &dashOffsetTmp, isDoubleDash,
- addrg, ngwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, unclippedlen);
- break;
-#else
- iplBresD (rrops,
- &dashIndex, pDash, numInDashList,
- &dashOffset, isDoubleDash,
- addrg, ngwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, unclippedlen);
- goto dontStep;
-#endif
- }
- else if (oc1 & oc2)
- {
- pbox++;
- }
- else /* have to clip */
- {
- int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2;
- int clip1 = 0, clip2 = 0;
- int clipdx, clipdy;
- int err;
- int dashIndexTmp, dashOffsetTmp;
-
- if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1,
- pbox->y2-1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady, &clip1, &clip2,
- octant, bias, oc1, oc2) == -1)
- {
- pbox++;
- continue;
- }
-
- dashIndexTmp = dashIndex;
- dashOffsetTmp = dashOffset;
-
- if (clip1)
- {
- int dlen;
-
- if (axis == X_AXIS)
- dlen = abs(new_x1 - x1);
- else
- dlen = abs(new_y1 - y1);
- miStepDash (dlen, &dashIndexTmp, pDash,
- numInDashList, &dashOffsetTmp);
- }
-
- if (axis == X_AXIS)
- len = abs(new_x2 - new_x1);
- else
- len = abs(new_y2 - new_y1);
-#ifdef POLYSEGMENT
- if (clip2 != 0 || pGC->capStyle != CapNotLast)
- len++;
-#else
- len += (clip2 != 0);
-#endif
- if (len)
- {
- /* unwind bresenham error term to first point */
- if (clip1)
- {
- clipdx = abs(new_x1 - x1);
- clipdy = abs(new_y1 - y1);
- if (axis == X_AXIS)
- err = e+((clipdy*e2) + ((clipdx-clipdy)*e1));
- else
- err = e+((clipdx*e2) + ((clipdy-clipdx)*e1));
- }
- else
- err = e;
- iplBresD (rrops,
- &dashIndexTmp, pDash, numInDashList,
- &dashOffsetTmp, isDoubleDash,
- addrg, ngwidth,
- signdx, signdy, axis, new_x1, new_y1,
- err, e1, e2, len);
- }
- pbox++;
- }
- } /* while (nbox--) */
-#ifndef POLYSEGMENT
- /*
- * walk the dash list around to the next line
- */
- miStepDash (unclippedlen, &dashIndex, pDash,
- numInDashList, &dashOffset);
-dontStep: ;
-#endif
- } /* while (nline--) */
-
-#ifndef POLYSEGMENT
- /* paint the last point if the end style isn't CapNotLast.
- (Assume that a projecting, butt, or round cap that is one
- pixel wide is the same as the single pixel of the endpoint.)
- */
-
- if ((pGC->capStyle != CapNotLast) &&
- ((dashIndex & 1) == 0 || isDoubleDash) &&
- ((ppt->x + xorg != pptInit->x + pDrawable->x) ||
- (ppt->y + yorg != pptInit->y + pDrawable->y) ||
- (ppt == pptInit + 1)))
- {
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--)
- {
- if ((x2 >= pbox->x1) &&
- (y2 >= pbox->y1) &&
- (x2 < pbox->x2) &&
- (y2 < pbox->y2))
- {
- INTER_DECLAREG(mask);
- int pix;
-
- pix = 0;
- if (dashIndex & 1)
- pix = 1;
- mask = iplmask[x2 & INTER_PIM];
- addrg += (y2 * ngwidth) + (x2 >> INTER_PGSH) * INTER_PLANES;
- INTER_DoMaskRRop(addrg, rrops[pix].andg, rrops[pix].xorg,
- mask, addrg);
- break;
- }
- else
- pbox++;
- }
- }
-#endif
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplmap.h b/nx-X11/programs/Xserver/iplan2p4/iplmap.h
deleted file mode 100644
index cc065aa82..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplmap.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplmap.h,v 3.1 1998/04/05 16:42:26 robin Exp $ */
-/*
- * $XConsortium: iplmap.h,v 1.9 94/04/17 20:28:54 dpw Exp $
- *
-Copyright (c) 1991 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-/*
- * Map names around so that multiple depths can be supported simultaneously
- */
-
-/* a losing vendor cpp dumps core if we define NAME in terms of CATNAME */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if INTER_PLANES == 2
-#define NAME(subname) ipl2p2##subname
-#elif INTER_PLANES == 4
-#define NAME(subname) ipl2p4##subname
-#elif INTER_PLANES == 8
-#define NAME(subname) ipl2p8##subname
-#endif
-
-
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define CATNAME(prefix,subname) prefix##subname
-#else
-#define CATNAME(prefix,subname) prefix/**/subname
-#endif
-
-#define iplScreenPrivateIndex NAME(ScreenPrivateIndex)
-#define QuartetBitsTable NAME(QuartetBitsTable)
-#define QuartetPixelMaskTable NAME(QuartetPixelMaskTable)
-#define iplAllocatePrivates NAME(AllocatePrivates)
-#define iplBSFuncRec NAME(BSFuncRec)
-#define iplBitBlt NAME(BitBlt)
-#define iplBresD NAME(BresD)
-#define iplBresS NAME(BresS)
-#define iplChangeWindowAttributes NAME(ChangeWindowAttributes)
-#define iplCloseScreen NAME(CloseScreen)
-#define iplCopyArea NAME(CopyArea)
-#define iplCopyImagePlane NAME(CopyImagePlane)
-#define iplCopyPixmap NAME(CopyPixmap)
-#define iplCopyPlane NAME(CopyPlane)
-#define iplCopyRotatePixmap NAME(CopyRotatePixmap)
-#define iplCopyWindow NAME(CopyWindow)
-#define iplCreateGC NAME(CreateGC)
-#define iplCreatePixmap NAME(CreatePixmap)
-#define iplCreateWindow NAME(CreateWindow)
-#define iplCreateScreenResources NAME(CreateScreenResoures)
-#define iplDestroyPixmap NAME(DestroyPixmap)
-#define iplDestroyWindow NAME(DestroyWindow)
-#define iplDoBitblt NAME(DoBitblt)
-#define iplDoBitbltCopy NAME(DoBitbltCopy)
-#define iplDoBitbltGeneral NAME(DoBitbltGeneral)
-#define iplDoBitbltOr NAME(DoBitbltOr)
-#define iplDoBitbltXor NAME(DoBitbltXor)
-#define iplFillBoxSolid NAME(FillBoxSolid)
-#define iplFillBoxTile32 NAME(FillBoxTile32)
-#define iplFillBoxTile32sCopy NAME(FillBoxTile32sCopy)
-#define iplFillBoxTile32sGeneral NAME(FillBoxTile32sGeneral)
-#define iplFillBoxTileOdd NAME(FillBoxTileOdd)
-#define iplFillBoxTileOddCopy NAME(FillBoxTileOddCopy)
-#define iplFillBoxTileOddGeneral NAME(FillBoxTileOddGeneral)
-#define iplFillPoly1RectCopy NAME(FillPoly1RectCopy)
-#define iplFillPoly1RectGeneral NAME(FillPoly1RectGeneral)
-#define iplFillRectSolidCopy NAME(FillRectSolidCopy)
-#define iplFillRectSolidGeneral NAME(FillRectSolidGeneral)
-#define iplFillRectSolidXor NAME(FillRectSolidXor)
-#define iplFillRectTile32Copy NAME(FillRectTile32Copy)
-#define iplFillRectTile32General NAME(FillRectTile32General)
-#define iplFillRectTileOdd NAME(FillRectTileOdd)
-#define iplFillSpanTile32sCopy NAME(FillSpanTile32sCopy)
-#define iplFillSpanTile32sGeneral NAME(FillSpanTile32sGeneral)
-#define iplFillSpanTileOddCopy NAME(FillSpanTileOddCopy)
-#define iplFillSpanTileOddGeneral NAME(FillSpanTileOddGeneral)
-#define iplFinishScreenInit NAME(FinishScreenInit)
-#define iplGCFuncs NAME(GCFuncs)
-#define iplGetImage NAME(GetImage)
-#define iplGetScreenPixmap NAME(GetScreenPixmap)
-#define iplGetSpans NAME(GetSpans)
-#define iplHorzS NAME(HorzS)
-#define iplImageGlyphBlt8 NAME(ImageGlyphBlt8)
-#define iplLineSD NAME(LineSD)
-#define iplLineSS NAME(LineSS)
-#define iplMapWindow NAME(MapWindow)
-#define iplMatchCommon NAME(MatchCommon)
-#define iplNonTEOps NAME(NonTEOps)
-#define iplNonTEOps1Rect NAME(NonTEOps1Rect)
-#define iplPadPixmap NAME(PadPixmap)
-#define iplPaintWindow NAME(PaintWindow)
-#define iplPolyGlyphBlt8 NAME(PolyGlyphBlt8)
-#define iplPolyGlyphRop8 NAME(PolyGlyphRop8)
-#define iplPolyFillArcSolidCopy NAME(PolyFillArcSolidCopy)
-#define iplPolyFillArcSolidGeneral NAME(PolyFillArcSolidGeneral)
-#define iplPolyFillRect NAME(PolyFillRect)
-#define iplPolyPoint NAME(PolyPoint)
-#define iplPositionWindow NAME(PositionWindow)
-#define iplPutImage NAME(PutImage)
-#define iplReduceRasterOp NAME(ReduceRasterOp)
-#define iplRestoreAreas NAME(RestoreAreas)
-#define iplSaveAreas NAME(SaveAreas)
-#define iplScreenInit NAME(ScreenInit)
-#define iplSegmentSD NAME(SegmentSD)
-#define iplSegmentSS NAME(SegmentSS)
-#define iplSetScanline NAME(SetScanline)
-#define iplSetScreenPixmap NAME(SetScreenPixmap)
-#define iplSetSpans NAME(SetSpans)
-#define iplSetupScreen NAME(SetupScreen)
-#define iplSolidSpansCopy NAME(SolidSpansCopy)
-#define iplSolidSpansGeneral NAME(SolidSpansGeneral)
-#define iplSolidSpansXor NAME(SolidSpansXor)
-#define iplStippleStack NAME(StippleStack)
-#define iplStippleStackTE NAME(StippleStackTE)
-#define iplTEGlyphBlt NAME(TEGlyphBlt)
-#define iplTEOps NAME(TEOps)
-#define iplTEOps1Rect NAME(TEOps1Rect)
-#define iplTile32FSCopy NAME(Tile32FSCopy)
-#define iplTile32FSGeneral NAME(Tile32FSGeneral)
-#define iplUnmapWindow NAME(UnmapWindow)
-#define iplUnnaturalStippleFS NAME(UnnaturalStippleFS)
-#define iplUnnaturalTileFS NAME(UnnaturalTileFS)
-#define iplValidateGC NAME(ValidateGC)
-#define iplVertS NAME(VertS)
-#define iplXRotatePixmap NAME(XRotatePixmap)
-#define iplYRotatePixmap NAME(YRotatePixmap)
-#define iplendpartial NAME(endpartial)
-#define iplendtab NAME(endtab)
-#define iplmask NAME(mask)
-#define iplrmask NAME(rmask)
-#define iplstartpartial NAME(startpartial)
-#define iplstarttab NAME(starttab)
-#define ipl8LineSS1Rect NAME(LineSS1Rect)
-#define ipl8SegmentSS1Rect NAME(SegmentSS1Rect)
-#define ipl8ClippedLineCopy NAME(ClippedLineCopy)
-#define ipl8ClippedLineXor NAME(ClippedLineXor)
-#define ipl8ClippedLineGeneral NAME(ClippedLineGeneral )
-#define ipl8SegmentSS1RectCopy NAME(SegmentSS1RectCopy)
-#define ipl8SegmentSS1RectXor NAME(SegmentSS1RectXor)
-#define ipl8SegmentSS1RectGeneral NAME(SegmentSS1RectGeneral )
-#define ipl8SegmentSS1RectShiftCopy NAME(SegmentSS1RectShiftCopy)
-#define ipl8LineSS1RectCopy NAME(LineSS1RectCopy)
-#define ipl8LineSS1RectXor NAME(LineSS1RectXor)
-#define ipl8LineSS1RectGeneral NAME(LineSS1RectGeneral )
-#define ipl8LineSS1RectPreviousCopy NAME(LineSS1RectPreviousCopy)
-#define iplZeroPolyArcSS8Copy NAME(ZeroPolyArcSSCopy)
-#define iplZeroPolyArcSS8Xor NAME(ZeroPolyArcSSXor)
-#define iplZeroPolyArcSS8General NAME(ZeroPolyArcSSGeneral)
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplmergerop.h b/nx-X11/programs/Xserver/iplan2p4/iplmergerop.h
deleted file mode 100644
index 09141c983..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplmergerop.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplmergerop.h,v 3.0 1996/08/18 01:54:53 dawes Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _IPLANMERGEROP_H_
-#define _IPLANMERGEROP_H_
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-/* defines:
- INTER_MROP_NAME
- INTER_MROP_DECLARE_REG()
- INTER_MROP_INITIALIZE(alu, pm)
- INTER_MROP_SOLID(src1, src2, dst)
- INTER_MROP_MASK(src1, src2, mask, dst)
- INTER_MROP_PREBUILD(src)
- INTER_MROP_PREBUILT_DECLARE()
- INTER_MROP_PREBUILT_SOLID(src,dst)
- INTER_MROP_PREBUILT_MASK(src,dst,mask)
-*/
-
-#ifndef GXcopy
-#include <X11/X.h>
-#endif
-
-typedef struct _mergeRopBits {
- unsigned long ca1, cx1, ca2, cx2;
-} mergeRopRec, *mergeRopPtr;
-
-extern mergeRopRec mergeRopBits[16];
-
-#define INTER_DeclareMergeRop() \
- INTER_DECLAREGP(_ca1); \
- INTER_DECLAREGP(_cx1); \
- INTER_DECLAREGP(_ca2); \
- INTER_DECLAREGP(_cx2);
-
-#define INTER_DeclarePrebuiltMergeRop() \
- INTER_DECLAREGP(_cca); \
- INTER_DECLAREGP(_ccx);
-
-#define INTER_InitializeMergeRop(alu,pm) { \
- INTER_DECLAREGP(_pm); \
- mergeRopPtr _bits; \
- INTER_PFILL(pm, _pm); \
- _bits = &mergeRopBits[alu]; \
- INTER_ANDMSK(_pm, _bits->ca1, _ca1); \
- INTER_ANDMSK(_pm, _bits->ca2, _ca2); \
- INTER_ANDMSK(_pm, _bits->cx2, _cx2); \
- INTER_NOT(_pm, _pm); \
- INTER_ORMSK(_pm, _bits->cx1, _cx1); \
-}
-
-#define INTER_DoMergeRop(src1, src2, dst) \
- INTER_CPLX(src1, src2, _ca1, _cx1, _ca2, _cx2, dst)
-
-#define INTER_DoMaskMergeRop(src1, src2, mask, dst) \
- INTER_CPLXM(src1, src2, _ca1, _cx1, _ca2, _cx2, mask, dst)
-
-#define INTER_DoPrebuiltMergeRop(src, dst) \
- INTER_DoRRop(src, _cca, _ccx, dst)
-
-#define INTER_DoMaskPrebuiltMergeRop(src, mask, dst) \
- INTER_DoMaskRRop(src, _cca, _ccx, mask, dst)
-
-#define INTER_PrebuildMergeRop(src) \
- INTER_DoRRop(src, _ca1, _cx1, _cca); \
- INTER_DoRRop(src, _ca2, _cx2, _ccx);
-
-#ifndef MROP
-#define MROP 0
-#endif
-
-#define Mclear (1<<GXclear)
-#define Mand (1<<GXand)
-#define MandReverse (1<<GXandReverse)
-#define Mcopy (1<<GXcopy)
-#define MandInverted (1<<GXandInverted)
-#define Mnoop (1<<GXnoop)
-#define Mxor (1<<GXxor)
-#define Mor (1<<GXor)
-#define Mnor (1<<GXnor)
-#define Mequiv (1<<GXequiv)
-#define Minvert (1<<GXinvert)
-#define MorReverse (1<<GXorReverse)
-#define McopyInverted (1<<GXcopyInverted)
-#define MorInverted (1<<GXorInverted)
-#define Mnand (1<<GXnand)
-#define Mset (1<<GXset)
-
-#if (MROP) == Mcopy
-#define INTER_MROP_NAME(prefix) INTER_MROP_NAME_CAT(prefix,Copy)
-#define INTER_MROP_DECLARE_REG()
-#define INTER_MROP_INITIALIZE(alu,pm)
-#define INTER_MROP_SOLID(src,dst,dst2) INTER_COPY(src, dst2)
-#define INTER_MROP_MASK(src,dst,mask, dst2) INTER_COPYM(src,dst,mask,dst2)
-#endif
-
-#if (MROP) == Mxor
-#define INTER_MROP_NAME(prefix) INTER_MROP_NAME_CAT(prefix,Xor)
-#define INTER_MROP_DECLARE_REG()
-#define INTER_MROP_INITIALIZE(alu,pm)
-#define INTER_MROP_SOLID(src,dst,dst2) INTER_XOR(src,dst,dst2)
-#define INTER_MROP_MASK(src,dst,mask,dst2) INTER_XORM(src,dst,mask,dst2)
-#endif
-
-#if (MROP) == Mor
-#define INTER_MROP_NAME(prefix) INTER_MROP_NAME_CAT(prefix,Or)
-#define INTER_MROP_DECLARE_REG()
-#define INTER_MROP_INITIALIZE(alu,pm)
-#define INTER_MROP_SOLID(src,dst,dst2) INTER_OR(src,dst,dst2)
-#define INTER_MROP_MASK(src,dst,mask,dst2) INTER_ORM(src,dst,mask,dst2)
-#endif
-
-#if (MROP) == 0
-#define INTER_MROP_NAME(prefix) INTER_MROP_NAME_CAT(prefix,General)
-#define INTER_MROP_DECLARE_REG() INTER_DeclareMergeRop()
-#define INTER_MROP_INITIALIZE(alu,pm) INTER_InitializeMergeRop(alu,pm)
-#define INTER_MROP_SOLID(src,dst,dst2) INTER_DoMergeRop(src, dst, dst2)
-#define INTER_MROP_MASK(src,dst,mask,dst2) \
- INTER_DoMaskMergeRop(src, dst, mask, dst2)
-#define INTER_MROP_PREBUILD(src) INTER_PrebuildMergeRop(src)
-#define INTER_MROP_PREBUILT_DECLARE() INTER_DeclarePrebuiltMergeRop()
-#define INTER_MROP_PREBUILT_SOLID(src,dst, dst2) \
- INTER_DoPrebuiltMergeRop(dst,dst2)
-#define INTER_MROP_PREBUILT_MASK(src,dst,mask,dst2) \
- INTER_DoMaskPrebuiltMergeRop(dst,mask, dst2)
-#endif
-
-#ifndef INTER_MROP_PREBUILD
-#define INTER_MROP_PREBUILD(src)
-#define INTER_MROP_PREBUILT_DECLARE()
-#define INTER_MROP_PREBUILT_SOLID(src,dst,dst2) INTER_MROP_SOLID(src,dst,dst2)
-#define INTER_MROP_PREBUILT_MASK(src,dst,mask,dst2) \
- INTER_MROP_MASK(src,dst,mask,dst2)
-#endif
-
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define INTER_MROP_NAME_CAT(prefix,suffix) prefix##suffix
-#else
-#define INTER_MROP_NAME_CAT(prefix,suffix) prefix/**/suffix
-#endif
-
-#endif /* _IPLANMERGEROP_H_ */
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplmskbits.c b/nx-X11/programs/Xserver/iplan2p4/iplmskbits.c
deleted file mode 100644
index e611bd293..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplmskbits.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* $XFree86$ */
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "iplmap.h"
-
-unsigned short iplmask[] =
- { 0x8000,
- 0x4000,
- 0x2000,
- 0x1000,
- 0x0800,
- 0x0400,
- 0x0200,
- 0x0100,
- 0x0080,
- 0x0040,
- 0x0020,
- 0x0010,
- 0x0008,
- 0x0004,
- 0x0002,
- 0x0001
- };
-
-unsigned short iplstarttab[] =
- {
- 0x0000,
- 0x7fff,
- 0x3fff,
- 0x1fff,
- 0x0fff,
- 0x07ff,
- 0x03ff,
- 0x01ff,
- 0x00ff,
- 0x007f,
- 0x003f,
- 0x001f,
- 0x000f,
- 0x0007,
- 0x0003,
- 0x0001
- };
-
-unsigned short iplendtab[] =
- {
- 0x0000,
- 0x8000,
- 0xc000,
- 0xe000,
- 0xf000,
- 0xf800,
- 0xfc00,
- 0xfe00,
- 0xff00,
- 0xff80,
- 0xffc0,
- 0xffe0,
- 0xfff0,
- 0xfff8,
- 0xfffc,
- 0xfffe
- };
-
-unsigned short iplstartpartial[] =
- {
- 0xffff,
- 0x7fff,
- 0x3fff,
- 0x1fff,
- 0x0fff,
- 0x07ff,
- 0x03ff,
- 0x01ff,
- 0x00ff,
- 0x007f,
- 0x003f,
- 0x001f,
- 0x000f,
- 0x0007,
- 0x0003,
- 0x0001
- };
-
-unsigned short iplendpartial[] =
- {
- 0xffff,
- 0x8000,
- 0xc000,
- 0xe000,
- 0xf000,
- 0xf800,
- 0xfc00,
- 0xfe00,
- 0xff00,
- 0xff80,
- 0xffc0,
- 0xffe0,
- 0xfff0,
- 0xfff8,
- 0xfffc,
- 0xfffe
- };
-
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplmskbits.h b/nx-X11/programs/Xserver/iplan2p4/iplmskbits.h
deleted file mode 100644
index 1efc47d44..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplmskbits.h
+++ /dev/null
@@ -1,500 +0,0 @@
-/* $XFree86$ */
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#define INTER_PIXGRP unsigned short
-
-#define INTER_PGSZ 16
-#define INTER_PGSZB 2
-#define INTER_PPG 16
-#define INTER_PPGMSK 0xffff
-#define INTER_PLST 15
-#define INTER_PIM 15
-#define INTER_PGSH 4
-#define INTER_PMSK ((1 << (INTER_PLANES)) - 1)
-
-extern INTER_PIXGRP iplmask[];
-extern INTER_PIXGRP iplstarttab[];
-extern INTER_PIXGRP iplendtab[];
-extern INTER_PIXGRP iplstartpartial[];
-extern INTER_PIXGRP iplendpartial[];
-
-#define MFB_PSZ 1
-
-#define INTER_NEXT(x) ((x) + INTER_PLANES)
-#define INTER_NEXT_GROUP(x) (x) += INTER_PLANES
-#define INTER_PREV_GROUP(x) (x) -= INTER_PLANES
-
-#define _I(x) (((unsigned long *) (x))[_INDEX])
-#define _IG(x) ((x)[_INDEX])
-
-#define INTER_DECLAREG(x) INTER_PIXGRP x
-#define INTER_DECLAREGP(x) INTER_PIXGRP x[INTER_PLANES]
-
-#define INTER_DECLARERRAX(x) INTER_PIXGRP *(x)
-#define INTER_DECLARERRAXP(x) INTER_PIXGRP x[INTER_PLANES]
-
-/* and |= PLANE_FILL(~fg), or &= PLANE_FILL(fg) */
-#define INTER_ANDXOR_PM(pm, and, xor) \
- PLANE_TIMESG( \
- if (!(pm & INTER_PLANE(_INDEX))) { \
- _IG(and) = INTER_PPGMSK; \
- _IG(xor) = 0; \
- })
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if INTER_PLANES == 2
-
-#define PLANE_TIMESCONDG(x) \
- ({ int _INDEX; \
- int _ret; \
- _ret=(_INDEX=0, (x)) && \
- (_INDEX=1, (x)) && \
- _ret; \
- })
-
-#define PLANE_TIMESCOND(x) \
- ({ int _INDEX; \
- (_INDEX=0, x) \
- })
-
-#define PLANE_TIMESG(x) \
- { int _INDEX; \
- _INDEX=0; x; \
- _INDEX=1; x; \
- }
-
-#define PLANE_TIMES(x) \
- { int _INDEX; \
- _INDEX=0; x; \
- }
-
-#elif INTER_PLANES == 4
-
-#define PLANE_TIMESCONDG(x) \
- ({ int _INDEX; \
- int _ret; \
- _ret=(_INDEX=0, (x)) && \
- (_INDEX=1, (x)) && \
- (_INDEX=2, (x)) && \
- (_INDEX=3, (x)); \
- _ret; \
- })
-
-#define PLANE_TIMESCOND(x) \
- ({ int _INDEX; \
- ((_INDEX=0, x) && \
- (_INDEX=1, x)) \
- })
-
-#define PLANE_TIMESG(x) \
- { int _INDEX; \
- _INDEX=0; x; \
- _INDEX=1; x; \
- _INDEX=2; x; \
- _INDEX=3; x; \
- }
-
-#define PLANE_TIMES(x) \
- { int _INDEX; \
- _INDEX=0; x; \
- _INDEX=1; x; \
- }
-
-#elif INTER_PLANES == 8
-
-#define PLANE_TIMESCONDG(x) \
- ({ int _INDEX; \
- int _ret; \
- _ret=((_INDEX=0, (x)) && \
- (_INDEX=1, (x)) && \
- (_INDEX=2, (x)) && \
- (_INDEX=3, (x)) && \
- (_INDEX=4, (x)) && \
- (_INDEX=5, (x)) && \
- (_INDEX=6, (x)) && \
- (_INDEX=7, (x))); \
- _ret; \
- })
-
-#define PLANE_TIMESCOND(x) \
- ({ int _INDEX; \
- ((_INDEX=0, x) && \
- (_INDEX=1, x) && \
- (_INDEX=2, x) && \
- (_INDEX=3, x)) \
- })
-
-#define PLANE_TIMESG(x) \
- { int _INDEX; \
- _INDEX=0; x; \
- _INDEX=1; x; \
- _INDEX=2; x; \
- _INDEX=3; x; \
- _INDEX=4; x; \
- _INDEX=5; x; \
- _INDEX=6; x; \
- _INDEX=7; x; \
- }
-
-#define PLANE_TIMES(x) \
- { int _INDEX; \
- _INDEX=0; x; \
- _INDEX=1; x; \
- _INDEX=2; x; \
- _INDEX=3; x; \
- }
-
-#endif
-
-/* src = 0 */
-#define INTER_IS_CLR(src) \
- PLANE_TIMESCONDG(_IG(src) == 0)
-
-/* src = PPGMSK ? */
-#define INTER_IS_SET(src) \
- PLANE_TIMESCONDG(_IG(src) == INTER_PPGMSK)
-
-/* (src1 ^ scr2) = PPGMSK ? */
-#define INTER_IS_XOR_SET(src1, src2) \
- PLANE_TIMESCONDG((_IG(src1) ^ _IG(src2)) == INTER_PPGMSK)
-
-/* dst = ~src */
-#define INTER_NOT(src, dst) \
- PLANE_TIMES(_I(dst) = ~_I(src))
-
-/* dst = 0 */
-#define INTER_CLR(dst) \
- PLANE_TIMES(_I(dst) = 0)
-
-/* dst = PPGMSK */
-#define INTER_SET(dst) \
- PLANE_TIMESG(_IG(dst) = INTER_PPGMSK)
-
-/* dst = src */
-#define INTER_COPY(src,dst) \
- PLANE_TIMES(_I(dst) = _I(src))
-
-/* dst2 = (dst & ~mask) | (src & mask) */
-#define INTER_COPYM(src,dst,mask,dst2) \
- PLANE_TIMESG( \
- _IG(dst2) = (_IG(dst) & ~mask) | (_IG(src) & mask) \
- )
-
-/* dst2 = dst ^ src */
-#define INTER_XOR(src,dst,dst2) \
- PLANE_TIMES(_I(dst2) = _I(dst) ^ _I(src))
-
-/* dst2 = dst ^ (src & mask) */
-#define INTER_XORM(src,dst,mask,dst2) \
- PLANE_TIMESG(_IG(dst2) = _IG(dst) ^ (_IG(src) & (mask)))
-
-/* dst2 = dst & src */
-#define INTER_AND(src,dst,dst2) \
- PLANE_TIMES(_I(dst2) = _I(dst) & _I(src))
-
-/* dst2 = dst & (src | ~mask) */
-#define INTER_ANDM(mask,src,dst,dst2) \
- PLANE_TIMESG(_IG(dst2) = _IG(dst) & (_IG(src) | ~(mask)))
-
-/* dst2 = dst | src */
-#define INTER_OR(src,dst,dst2) \
- PLANE_TIMES(_I(dst2) = _I(dst) | _I(src))
-
-/* dst2 = dst | (src & mask) */
-#define INTER_ORM(src,dst,mask,dst2) \
- PLANE_TIMESG(_IG(dst2) = _IG(dst) | (_IG(src) & (mask)))
-
-/* dst = src | msk */
-#define INTER_ORMSK(src,msk,dst) \
- PLANE_TIMESG(_IG(dst) = _IG(src) | (msk))
-
-/* dst = src & msk */
-#define INTER_ANDMSK(src,msk,dst) \
- PLANE_TIMESG(_IG(dst) = _IG(src) & (msk))
-
-/* dst = (src1 & msk1) | (src2 & msk2) */
-#define INTER_ANDMSK2(src1,msk1,src2,msk2,dst) \
- PLANE_TIMESG(_IG(dst) = (_IG(src1) & (msk1)) | (_IG(src2) & (msk2)))
-
-#define INTER_PLANE(x) (1<<(x))
-
-#define INTER_PFILL(col, fill) \
- PLANE_TIMESG(_IG(fill) = \
- ((col) & INTER_PLANE(_INDEX)) ? INTER_PPGMSK : 0)
-
-/* dst = src >> cnt */
-#define INTER_SCRRIGHT(cnt, src, dst) \
- PLANE_TIMESG(_IG(dst) = _IG(src) >> (cnt))
-
-/* dst = src << cnt */
-#define INTER_SCRLEFT(cnt, src, dst) \
- PLANE_TIMESG(_IG(dst) = _IG(src) << (cnt))
-
-/* bits1=(bits >> right) | (bits=psrc) << left) */
-#define INTER_GETRLC(right, left, psrc, bits, bits1) \
- PLANE_TIMESG( _IG(bits1)=(_IG(bits) >> (right)) | \
- ((_IG(bits) = _IG(psrc)) << (left)))
-
-/* bits1=(bits << left) | (bits=psrc) >> right) */
-#define INTER_GETLRC(left, right, psrc, bits, bits1) \
- PLANE_TIMESG( _IG(bits1)=(_IG(bits) << (left)) | \
- ((_IG(bits) = _IG(psrc)) >> (right)))
-
-/* dst=src2 & (src1 & a1 ^ x1) ^ (src1 & a2 ^ x2) */
-#define INTER_CPLX(src1, src2, a1, x1, a2, x2, dst) \
- PLANE_TIMES( _I(dst) = (_I(src2) \
- & (_I(src1) & _I(a1) ^ _I(x1)) \
- ^ (_I(src1) & _I(a2) ^ _I(x2)))) \
-
-/* dst=src2 & ((src1 & a1 ^ x1) | ~mask) ^ ((src1 & a2 ^ x2) & mask) */
-#define INTER_CPLXM(src1, src2, a1, x1, a2, x2, mask, dst) \
- PLANE_TIMESG( _IG(dst) = (_IG(src2) \
- & ((_IG(src1) & _IG(a1) ^ _IG(x1)) | ~mask) \
- ^ ((_IG(src1) & _IG(a2) ^ _IG(x2)) & mask)))
-
-/* dst = (src & ~(bitmask | planemask)) | (insert | (bitmask | planemask)) */
-#define INTER_PMSKINS(bitmask, planemask, insert, src, dst) \
- PLANE_TIMESG( \
- if (planemask & INTER_PLANE(_INDEX)) \
- _IG(dst) = (_IG(src) & ~bitmask) | (_IG(insert) & bitmask) \
- )
-
-/* dst = (src & ~bitmask) | ((insert >> shift) & bitmask) */
-#define INTER_SCRRMSKINS(bitmask, planemask, insert, shift, src, dst) \
- PLANE_TIMESG( \
- if (planemask & INTER_PLANE(_INDEX)) \
- _IG(dst) = (_IG(src) & ~(bitmask)) | \
- ((_IG(insert) >> shift) & (bitmask)) \
- )
-
-/* dst = (src & ~bitmask) | ((insert << shift) & bitmask) */
-#define INTER_SCRLMSKINS(bitmask, planemask, insert, shift, src, dst) \
- PLANE_TIMESG( \
- if (planemask & INTER_PLANE(_INDEX)) \
- _IG(dst) = (_IG(src) & ~bitmask) | \
- ((_IG(insert) << shift) & bitmask) \
- )
-
-/* dst = ((src1 << sl1) & bitmask1) | ((src2 >> sr2) & bitmask2) */
-#define INTER_MSKINSM(bitmask1, sl1, src1, bitmask2, sr2, src2, dst) \
- PLANE_TIMESG( \
- _IG(dst) = ((_IG(src1) << sl1) & (bitmask1)) | \
- ((_IG(src2) >> sr2) & (bitmask2)) \
- )
-
-/* dst = src & and ^ xor */
-#define INTER_DoRRop(src, and, xor, dst) \
- PLANE_TIMES(_I(dst) = (_I(src) & _I(and) ^ _I(xor))) \
-
-#define INTER_DoMaskRRop(src, and, xor, mask, dst) \
- PLANE_TIMESG( \
- _IG(dst) = (_IG(src) & ((_IG(and) | ~(mask))) \
- ^ (_IG(xor) & mask)))
-
-#define INTER_DoRop(result, alu, src, dst) \
-{ \
- if (alu == GXcopy) { \
- PLANE_TIMES( \
- _I(result) = fnCOPY (_I(src), _I(dst))); \
- } else if (alu == GXxor) { \
- PLANE_TIMES( \
- _I(result) = fnXOR (_I(src), _I(dst))); \
- } \
- else { \
- switch (alu) \
- { \
- case GXclear: \
- PLANE_TIMES( \
- _I(result) = fnCLEAR (_I(src), _I(dst))); \
- break; \
- case GXand: \
- PLANE_TIMES( \
- _I(result) = fnAND (_I(src), _I(dst))); \
- break; \
- case GXandReverse: \
- PLANE_TIMES( \
- _I(result) = fnANDREVERSE (_I(src), _I(dst))); \
- break; \
- case GXandInverted: \
- PLANE_TIMES( \
- _I(result) = fnANDINVERTED (_I(src), _I(dst))); \
- break; \
- case GXnoop: \
- PLANE_TIMES( \
- _I(result) = fnNOOP (_I(src), _I(dst))); \
- break; \
- case GXor: \
- PLANE_TIMES( \
- _I(result) = fnOR (_I(src), _I(dst))); \
- break; \
- case GXnor: \
- PLANE_TIMES( \
- _I(result) = fnNOR (_I(src), _I(dst))); \
- break; \
- case GXequiv: \
- PLANE_TIMES( \
- _I(result) = fnEQUIV (_I(src), _I(dst))); \
- break; \
- case GXinvert: \
- PLANE_TIMES( \
- _I(result) = fnINVERT (_I(src), _I(dst))); \
- break; \
- case GXorReverse: \
- PLANE_TIMES( \
- _I(result) = fnORREVERSE (_I(src), _I(dst))); \
- break; \
- case GXcopyInverted: \
- PLANE_TIMES( \
- _I(result) = fnCOPYINVERTED (_I(src), _I(dst))); \
- break; \
- case GXorInverted: \
- PLANE_TIMES( \
- _I(result) = fnORINVERTED (_I(src), _I(dst))); \
- break; \
- case GXnand: \
- PLANE_TIMES( \
- _I(result) = fnNAND (_I(src), _I(dst))); \
- break; \
- case GXset: \
- PLANE_TIMES( \
- _I(result) = fnSET (_I(src), _I(dst))); \
- break; \
- } \
- } \
-}
-
-#define iplGetGroupWidthAndPointer(pDrawable, width, pointer) \
- iplGetTypedWidthAndPointer(pDrawable, width, pointer, INTER_PIXGRP, INTER_PIXGRP)
-
-#define INTER_getstipplepixels(psrcstip, x, w, ones, psrcpix, pdstpix) \
-{ \
- unsigned long q; \
- int m; \
- if (ones) { \
- if ((m = ((x) - ((MFB_PPW*MFB_PSZ)-MFB_PPW))) > 0) { \
- q = (*(psrcstip)) << m; \
- if ( (x)+(w) > (MFB_PPW*MFB_PSZ) ) \
- q |= *((psrcstip)+1) >> ((MFB_PPW*MFB_PSZ)-m); \
- } \
- else \
- q = (*(psrcstip)) >> -m; \
- } \
- else { \
- if ((m = ((x) - ((MFB_PPW*MFB_PSZ)-MFB_PPW))) > 0) { \
- q = (~ *(psrcstip)) << m; \
- if ( (x)+(w) > (MFB_PPW*MFB_PSZ) ) \
- q |= (~*((psrcstip)+1)) >> ((MFB_PPW*MFB_PSZ)-m); \
- } \
- else \
- q = (~ *(psrcstip)) >> -m; \
- } \
- q >>=16; \
- INTER_ANDMSK(psrcpix,q,pdstpix); \
-}
-
-#define INTER_getstipplepixelsb(psrcstip, x, w, psrcpix0, psrcpix1, pdstpix) \
-{ \
- unsigned long q,qn; \
- int m; \
- if ((m = ((x) - ((MFB_PPW*MFB_PSZ)-MFB_PPW))) > 0) { \
- q = (*(psrcstip)) << m; \
- qn = (~ *(psrcstip)) << m; \
- if ( (x)+(w) > (MFB_PPW*MFB_PSZ) ) { \
- q |= *((psrcstip)+1) >> ((MFB_PPW*MFB_PSZ)-m); \
- qn |= (~ *((psrcstip)+1)) >> ((MFB_PPW*MFB_PSZ)-m); \
- } \
- } \
- else { \
- q = (*(psrcstip)) >> -m; \
- qn = (~ *(psrcstip)) >> -m; \
- } \
- q >>=16; \
- qn >>=16; \
- INTER_ANDMSK2(psrcpix0,qn,psrcpix1,q,pdstpix); \
-}
-
-#define INTER_maskbits(x, w, startmask, endmask, nlg) \
- startmask = iplstarttab[(x) & INTER_PIM]; \
- endmask = iplendtab[((x)+(w)) & INTER_PIM]; \
- if (startmask) \
- nlg = (((w) - (INTER_PPG - ((x) & INTER_PIM))) >> INTER_PGSH); \
- else \
- nlg = (w) >> INTER_PGSH;
-
-#define INTER_maskpartialbits(x, w, mask) \
- mask = iplstartpartial[(x) & INTER_PIM] & \
- iplendpartial[((x) + (w)) & INTER_PIM];
-
-#define INTER_mask32bits(x, w, startmask, endmask, nlw) \
- startmask = iplstarttab[(x) & INTER_PIM]; \
- endmask = iplendtab[((x)+(w)) & INTER_PIM];
-
-#define INTER_getbits(psrc, x, w, pdst) \
- if ( ((x) + (w)) <= INTER_PPG) \
- { \
- INTER_SCRLEFT((x), psrc, pdst); \
- } \
- else \
- { \
- int m; \
- m = INTER_PPG-(x); \
- INTER_MSKINSM(iplendtab[m], x, psrc, \
- iplstarttab[m], m, INTER_NEXT(psrc), pdst); \
- }
-
-#define INTER_putbits(psrc, x, w, pdst, planemask) \
- if ( ((x)+(w)) <= INTER_PPG) \
- { \
- INTER_DECLAREG(tmpmask); \
- INTER_maskpartialbits((x), (w), tmpmask); \
- INTER_SCRRMSKINS(tmpmask, planemask, psrc, x, pdst, pdst); \
- } \
- else \
- { \
- unsigned long m; \
- unsigned long n; \
- m = INTER_PPG-(x); \
- n = (w) - m; \
- INTER_SCRRMSKINS(iplstarttab[x], planemask, psrc, x, \
- pdst, pdst); \
- INTER_SCRLMSKINS(iplendtab[n], planemask, psrc, m, \
- INTER_NEXT(pdst), INTER_NEXT(pdst)); \
- }
-
-#define INTER_putbitsrop(psrc, x, w, pdst, planemask, rop) \
-if ( ((x)+(w)) <= INTER_PPG) \
-{ \
- INTER_DECLAREG(tmpmask); \
- INTER_DECLAREGP(t1); INTER_DECLAREGP(t2); \
- INTER_maskpartialbits((x), (w), tmpmask); \
- INTER_SCRRIGHT((x), (psrc), (t1)); \
- INTER_DoRop(t2, rop, t1, pdst); \
- INTER_PMSKINS(tmpmask, planemask, t2, pdst, pdst); \
-} \
-else \
-{ \
- unsigned long m; \
- unsigned long n; \
- INTER_DECLAREGP(t1); INTER_DECLAREGP(t2); \
- m = INTER_PPG-(x); \
- n = (w) - m; \
- INTER_SCRRIGHT((x), (psrc), (t1)); \
- INTER_DoRop(t2, rop, t1, pdst); \
- INTER_PMSKINS(iplstarttab[x], planemask, t2, pdst, pdst); \
- INTER_SCRLEFT(m, (psrc), (t1)); \
- INTER_DoRop(t2, rop, t1, pdst+1); \
- INTER_PMSKINS(iplendtab[n], planemask, t2, pdst, pdst); \
-}
-
-#define INTER_putbitsmropshort(src, x, w, pdst) { \
- INTER_DECLAREG(_tmpmask); \
- INTER_DECLAREGP(_t1); \
- INTER_maskpartialbits((x), (w), _tmpmask); \
- INTER_SCRRIGHT((x), (src), _t1); \
- INTER_DoMaskMergeRop(_t1, pdst, _tmpmask, pdst); \
-}
-
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplpack.c b/nx-X11/programs/Xserver/iplan2p4/iplpack.c
deleted file mode 100644
index a6ca6f12b..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplpack.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/* $XFree86$ */
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-/* abcd abcd abcd abcd abcd abcd abcd abcd */
-/* aaaa aaaa bbbb bbbb cccc cccc dddd dddd */
-
-unsigned long tabi[256] = {
- 0x00000000,0x00001000,0x10000000,0x10001000,
- 0x00002000,0x00003000,0x10002000,0x10003000,
- 0x20000000,0x20001000,0x30000000,0x30001000,
- 0x20002000,0x20003000,0x30002000,0x30003000,
- 0x00004000,0x00005000,0x10004000,0x10005000,
- 0x00006000,0x00007000,0x10006000,0x10007000,
- 0x20004000,0x20005000,0x30004000,0x30005000,
- 0x20006000,0x20007000,0x30006000,0x30007000,
- 0x40000000,0x40001000,0x50000000,0x50001000,
- 0x40002000,0x40003000,0x50002000,0x50003000,
- 0x60000000,0x60001000,0x70000000,0x70001000,
- 0x60002000,0x60003000,0x70002000,0x70003000,
- 0x40004000,0x40005000,0x50004000,0x50005000,
- 0x40006000,0x40007000,0x50006000,0x50007000,
- 0x60004000,0x60005000,0x70004000,0x70005000,
- 0x60006000,0x60007000,0x70006000,0x70007000,
- 0x00008000,0x00009000,0x10008000,0x10009000,
- 0x0000a000,0x0000b000,0x1000a000,0x1000b000,
- 0x20008000,0x20009000,0x30008000,0x30009000,
- 0x2000a000,0x2000b000,0x3000a000,0x3000b000,
- 0x0000c000,0x0000d000,0x1000c000,0x1000d000,
- 0x0000e000,0x0000f000,0x1000e000,0x1000f000,
- 0x2000c000,0x2000d000,0x3000c000,0x3000d000,
- 0x2000e000,0x2000f000,0x3000e000,0x3000f000,
- 0x40008000,0x40009000,0x50008000,0x50009000,
- 0x4000a000,0x4000b000,0x5000a000,0x5000b000,
- 0x60008000,0x60009000,0x70008000,0x70009000,
- 0x6000a000,0x6000b000,0x7000a000,0x7000b000,
- 0x4000c000,0x4000d000,0x5000c000,0x5000d000,
- 0x4000e000,0x4000f000,0x5000e000,0x5000f000,
- 0x6000c000,0x6000d000,0x7000c000,0x7000d000,
- 0x6000e000,0x6000f000,0x7000e000,0x7000f000,
- 0x80000000,0x80001000,0x90000000,0x90001000,
- 0x80002000,0x80003000,0x90002000,0x90003000,
- 0xa0000000,0xa0001000,0xb0000000,0xb0001000,
- 0xa0002000,0xa0003000,0xb0002000,0xb0003000,
- 0x80004000,0x80005000,0x90004000,0x90005000,
- 0x80006000,0x80007000,0x90006000,0x90007000,
- 0xa0004000,0xa0005000,0xb0004000,0xb0005000,
- 0xa0006000,0xa0007000,0xb0006000,0xb0007000,
- 0xc0000000,0xc0001000,0xd0000000,0xd0001000,
- 0xc0002000,0xc0003000,0xd0002000,0xd0003000,
- 0xe0000000,0xe0001000,0xf0000000,0xf0001000,
- 0xe0002000,0xe0003000,0xf0002000,0xf0003000,
- 0xc0004000,0xc0005000,0xd0004000,0xd0005000,
- 0xc0006000,0xc0007000,0xd0006000,0xd0007000,
- 0xe0004000,0xe0005000,0xf0004000,0xf0005000,
- 0xe0006000,0xe0007000,0xf0006000,0xf0007000,
- 0x80008000,0x80009000,0x90008000,0x90009000,
- 0x8000a000,0x8000b000,0x9000a000,0x9000b000,
- 0xa0008000,0xa0009000,0xb0008000,0xb0009000,
- 0xa000a000,0xa000b000,0xb000a000,0xb000b000,
- 0x8000c000,0x8000d000,0x9000c000,0x9000d000,
- 0x8000e000,0x8000f000,0x9000e000,0x9000f000,
- 0xa000c000,0xa000d000,0xb000c000,0xb000d000,
- 0xa000e000,0xa000f000,0xb000e000,0xb000f000,
- 0xc0008000,0xc0009000,0xd0008000,0xd0009000,
- 0xc000a000,0xc000b000,0xd000a000,0xd000b000,
- 0xe0008000,0xe0009000,0xf0008000,0xf0009000,
- 0xe000a000,0xe000b000,0xf000a000,0xf000b000,
- 0xc000c000,0xc000d000,0xd000c000,0xd000d000,
- 0xc000e000,0xc000f000,0xd000e000,0xd000f000,
- 0xe000c000,0xe000d000,0xf000c000,0xf000d000,
- 0xe000e000,0xe000f000,0xf000e000,0xf000f000,
- };
-static unsigned long tabp[256] = {
- 0x00000000,0x00020000,0x00080000,0x000a0000,
- 0x00200000,0x00220000,0x00280000,0x002a0000,
- 0x00800000,0x00820000,0x00880000,0x008a0000,
- 0x00a00000,0x00a20000,0x00a80000,0x00aa0000,
- 0x02000000,0x02020000,0x02080000,0x020a0000,
- 0x02200000,0x02220000,0x02280000,0x022a0000,
- 0x02800000,0x02820000,0x02880000,0x028a0000,
- 0x02a00000,0x02a20000,0x02a80000,0x02aa0000,
- 0x08000000,0x08020000,0x08080000,0x080a0000,
- 0x08200000,0x08220000,0x08280000,0x082a0000,
- 0x08800000,0x08820000,0x08880000,0x088a0000,
- 0x08a00000,0x08a20000,0x08a80000,0x08aa0000,
- 0x0a000000,0x0a020000,0x0a080000,0x0a0a0000,
- 0x0a200000,0x0a220000,0x0a280000,0x0a2a0000,
- 0x0a800000,0x0a820000,0x0a880000,0x0a8a0000,
- 0x0aa00000,0x0aa20000,0x0aa80000,0x0aaa0000,
- 0x20000000,0x20020000,0x20080000,0x200a0000,
- 0x20200000,0x20220000,0x20280000,0x202a0000,
- 0x20800000,0x20820000,0x20880000,0x208a0000,
- 0x20a00000,0x20a20000,0x20a80000,0x20aa0000,
- 0x22000000,0x22020000,0x22080000,0x220a0000,
- 0x22200000,0x22220000,0x22280000,0x222a0000,
- 0x22800000,0x22820000,0x22880000,0x228a0000,
- 0x22a00000,0x22a20000,0x22a80000,0x22aa0000,
- 0x28000000,0x28020000,0x28080000,0x280a0000,
- 0x28200000,0x28220000,0x28280000,0x282a0000,
- 0x28800000,0x28820000,0x28880000,0x288a0000,
- 0x28a00000,0x28a20000,0x28a80000,0x28aa0000,
- 0x2a000000,0x2a020000,0x2a080000,0x2a0a0000,
- 0x2a200000,0x2a220000,0x2a280000,0x2a2a0000,
- 0x2a800000,0x2a820000,0x2a880000,0x2a8a0000,
- 0x2aa00000,0x2aa20000,0x2aa80000,0x2aaa0000,
- 0x80000000,0x80020000,0x80080000,0x800a0000,
- 0x80200000,0x80220000,0x80280000,0x802a0000,
- 0x80800000,0x80820000,0x80880000,0x808a0000,
- 0x80a00000,0x80a20000,0x80a80000,0x80aa0000,
- 0x82000000,0x82020000,0x82080000,0x820a0000,
- 0x82200000,0x82220000,0x82280000,0x822a0000,
- 0x82800000,0x82820000,0x82880000,0x828a0000,
- 0x82a00000,0x82a20000,0x82a80000,0x82aa0000,
- 0x88000000,0x88020000,0x88080000,0x880a0000,
- 0x88200000,0x88220000,0x88280000,0x882a0000,
- 0x88800000,0x88820000,0x88880000,0x888a0000,
- 0x88a00000,0x88a20000,0x88a80000,0x88aa0000,
- 0x8a000000,0x8a020000,0x8a080000,0x8a0a0000,
- 0x8a200000,0x8a220000,0x8a280000,0x8a2a0000,
- 0x8a800000,0x8a820000,0x8a880000,0x8a8a0000,
- 0x8aa00000,0x8aa20000,0x8aa80000,0x8aaa0000,
- 0xa0000000,0xa0020000,0xa0080000,0xa00a0000,
- 0xa0200000,0xa0220000,0xa0280000,0xa02a0000,
- 0xa0800000,0xa0820000,0xa0880000,0xa08a0000,
- 0xa0a00000,0xa0a20000,0xa0a80000,0xa0aa0000,
- 0xa2000000,0xa2020000,0xa2080000,0xa20a0000,
- 0xa2200000,0xa2220000,0xa2280000,0xa22a0000,
- 0xa2800000,0xa2820000,0xa2880000,0xa28a0000,
- 0xa2a00000,0xa2a20000,0xa2a80000,0xa2aa0000,
- 0xa8000000,0xa8020000,0xa8080000,0xa80a0000,
- 0xa8200000,0xa8220000,0xa8280000,0xa82a0000,
- 0xa8800000,0xa8820000,0xa8880000,0xa88a0000,
- 0xa8a00000,0xa8a20000,0xa8a80000,0xa8aa0000,
- 0xaa000000,0xaa020000,0xaa080000,0xaa0a0000,
- 0xaa200000,0xaa220000,0xaa280000,0xaa2a0000,
- 0xaa800000,0xaa820000,0xaa880000,0xaa8a0000,
- 0xaaa00000,0xaaa20000,0xaaa80000,0xaaaa0000,
- };
-
-void
-iplUnpackLine(int planes, int longs, unsigned int *psrc, unsigned short *ipsrc)
-{
- unsigned long temp,m;
- unsigned char *t=(unsigned char *) &temp;
- unsigned char *i=(unsigned char *) ipsrc;
- unsigned char *s=(unsigned char *) psrc;
- int j,off;
- switch (planes) {
- case 2:
- for (j = 0 ; j < longs ; j++)
- {
- *((long *) ipsrc)++=(tabi[s[0]] >> 0) |
- (tabi[s[1]] >> 4) |
- (tabi[s[2]] >> 8) |
- (tabi[s[3]] >> 12);
- s+=4;
- }
- break;
- case 4:
- for (j = 0 ; j < longs ; j++)
- {
- temp= (tabi[s[0]] >> 0) |
- (tabi[s[1]] >> 4) |
- (tabi[s[2]] >> 8) |
- (tabi[s[3]] >> 12);
- temp= (tabi[t[0]] >> 0) |
- (tabi[t[1]] >> 4) |
- (tabi[t[2]] >> 8) |
- (tabi[t[3]] >> 12);
- s+=4;
- if (j & 1) {
- i[7]=t[0];
- i[5]=t[1];
- i[3]=t[2];
- i[1]=t[3];
- i += 8;
- }
- else {
- i[6]=t[0];
- i[4]=t[1];
- i[2]=t[2];
- i[0]=t[3];
- }
- }
- break;
- case 8:
- for (j = 0 ; j < longs ; j++)
- {
- temp= (tabi[s[0]] >> 0) |
- (tabi[s[1]] >> 4) |
- (tabi[s[2]] >> 8) |
- (tabi[s[3]] >> 12);
-
- temp= (tabi[t[0]] >> 0) |
- (tabi[t[1]] >> 4) |
- (tabi[t[2]] >> 8) |
- (tabi[t[3]] >> 12);
-
- temp= (tabi[t[0]] >> 0) |
- (tabi[t[1]] >> 4) |
- (tabi[t[2]] >> 8) |
- (tabi[t[3]] >> 12);
-
- off=12-(j & 3)*4;
- m=0xf << off;
- ipsrc[7]=(ipsrc[7] & ~m) | (((temp >> 28) << off) & m);
- ipsrc[6]=(ipsrc[6] & ~m) | (((temp >> 24) << off) & m);
- ipsrc[5]=(ipsrc[5] & ~m) | (((temp >> 20) << off) & m);
- ipsrc[4]=(ipsrc[4] & ~m) | (((temp >> 16) << off) & m);
- ipsrc[3]=(ipsrc[3] & ~m) | (((temp >> 12) << off) & m);
- ipsrc[2]=(ipsrc[2] & ~m) | (((temp >> 8) << off) & m);
- ipsrc[1]=(ipsrc[1] & ~m) | (((temp >> 4) << off) & m);
- ipsrc[0]=(ipsrc[0] & ~m) | (((temp >> 0) << off) & m);
- if (! off)
- ipsrc +=8;
- s+=4;
- }
- }
-}
-
-void
-iplPackLine(int planes, int longs, unsigned short *ipdst, unsigned int *pdst)
-{
- unsigned long temp,m;
- unsigned char *t=(unsigned char *) &temp;
- unsigned char *i=(unsigned char *) ipdst;
- int j,off;
- switch (planes) {
- case 2:
- for (j = 0 ; j < longs ; j++)
- {
- *pdst++=(tabp[i[2]] >> 0) |
- (tabp[i[0]] >> 1) |
- (tabp[i[3]] >> 16) |
- (tabp[i[1]] >> 17);
- i+=4;
- }
- break;
- case 4:
- for (j = 0 ; j < longs ; j++)
- {
- if (j & 1) {
- temp= (tabp[i[7]] >> 0) |
- (tabp[i[3]] >> 1) |
- (tabp[i[5]] >> 16) |
- (tabp[i[1]] >> 17);
- i += 8;
- }
- else {
- temp= (tabp[i[6]] >> 0) |
- (tabp[i[2]] >> 1) |
- (tabp[i[4]] >> 16) |
- (tabp[i[0]] >> 17);
- }
- *pdst++=(tabp[t[0]] >> 0) |
- (tabp[t[2]] >> 1) |
- (tabp[t[1]] >> 16) |
- (tabp[t[3]] >> 17);
- }
- break;
- case 8:
- for (j = 0 ; j < longs ; j++)
- {
- off=12-(j & 3)*4;
- m=0xf;
- temp=(((ipdst[7] >> off) & m) << 28) |
- (((ipdst[6] >> off) & m) << 24) |
- (((ipdst[5] >> off) & m) << 20) |
- (((ipdst[4] >> off) & m) << 16) |
- (((ipdst[3] >> off) & m) << 12) |
- (((ipdst[2] >> off) & m) << 8) |
- (((ipdst[1] >> off) & m) << 4) |
- (((ipdst[0] >> off) & m) << 0);
-
- if (! off)
- ipdst +=8;
-
- temp= (tabp[t[0]] >> 0) |
- (tabp[t[2]] >> 1) |
- (tabp[t[1]] >> 16) |
- (tabp[t[3]] >> 17);
-
- temp= (tabp[t[0]] >> 0) |
- (tabp[t[2]] >> 1) |
- (tabp[t[1]] >> 16) |
- (tabp[t[3]] >> 17);
-
- *pdst++=(tabp[t[0]] >> 0) |
- (tabp[t[2]] >> 1) |
- (tabp[t[1]] >> 16) |
- (tabp[t[3]] >> 17);
- }
- }
-}
-
-unsigned long
-iplpack(unsigned long ipl)
-{
- unsigned char *ic=(unsigned char *) &ipl;
- return (tabp[ic[0]]) | /* a0a0a0a0a0a0a0a00000000000000000 */
- (tabp[ic[2]] >> 1) | /* abababababababab0000000000000000 */
- (tabp[ic[1]] >> 16) | /* ababababababababa0a0a0a0a0a0a0a0 */
- (tabp[ic[3]] >> 17); /* abababababababababababababababab */
-}
-
-unsigned long
-iplunpack(unsigned long pack)
-{
- unsigned char *ip=(unsigned char *) &pack;
- return (tabi[ip[0]]) | /* aaaa000000000000bbbb000000000000 */
- (tabi[ip[1]] >> 4) | /* aaaaaaaa00000000bbbbbbbb00000000 */
- (tabi[ip[2]] >> 8) | /* aaaaaaaaaaaa0000bbbbbbbbbbbb0000 */
- (tabi[ip[3]] >> 12); /* aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbb */
-}
-
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplpack.h b/nx-X11/programs/Xserver/iplan2p4/iplpack.h
deleted file mode 100644
index 53c2c988f..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplpack.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/* $XFree86$ */
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#define NUM_LONGS(planes, xs, xe) \
- (((((xe) * (planes) + 31) & ~31) - \
- (((xs) * (planes)) & ~31))/32)
-
-#define NUM_TEMP_BYTES(planes, longs) \
- (((2 * (longs) + (planes) - 1) / planes + 1) * planes * 2)
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplpixmap.c b/nx-X11/programs/Xserver/iplan2p4/iplpixmap.c
deleted file mode 100644
index 7bfb49551..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplpixmap.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplpixmap.c,v 3.0 1996/08/18 01:54:59 dawes Exp $ */
-/* $XConsortium: iplpixmap.c,v 5.14 94/04/17 20:28:56 dpw Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* pixmap management
- written by drewry, september 1986
-
- on a monchrome device, a pixmap is a bitmap.
-*/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "mi.h"
-#include "ipl.h"
-#include "iplmskbits.h"
-
-extern unsigned long endtab[];
-
-PixmapPtr
-iplCreatePixmap (pScreen, width, height, depth)
- ScreenPtr pScreen;
- int width;
- int height;
- int depth;
-{
- PixmapPtr pPixmap;
- size_t datasize;
- size_t paddedWidth;
- int ipad=INTER_PLANES*2 - 1;
-
- paddedWidth = PixmapBytePad(width, depth);
- paddedWidth = (paddedWidth + ipad) & ~ipad;
- if (paddedWidth / 4 > 32767 || height > 32767)
- return NullPixmap;
- datasize = height * paddedWidth;
- pPixmap = AllocatePixmap(pScreen, datasize);
- if (!pPixmap)
- return NullPixmap;
- pPixmap->drawable.type = DRAWABLE_PIXMAP;
- pPixmap->drawable.class = 0;
- pPixmap->drawable.pScreen = pScreen;
- pPixmap->drawable.depth = depth;
- pPixmap->drawable.bitsPerPixel = BitsPerPixel(depth);
- pPixmap->drawable.id = 0;
- pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- pPixmap->drawable.x = 0;
- pPixmap->drawable.y = 0;
- pPixmap->drawable.width = width;
- pPixmap->drawable.height = height;
- pPixmap->devKind = paddedWidth;
- pPixmap->refcnt = 1;
-#ifdef PIXPRIV
- pPixmap->devPrivate.ptr = datasize ?
- (pointer)((char *)pPixmap + pScreen->totalPixmapSize) : NULL;
-#else
- pPixmap->devPrivate.ptr = (pointer)((long)(pPixmap + 1));
-#endif
- return pPixmap;
-}
-
-Bool
-iplDestroyPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- if(--pPixmap->refcnt)
- return TRUE;
- xfree(pPixmap);
- return TRUE;
-}
-
-PixmapPtr
-iplCopyPixmap(pSrc)
- register PixmapPtr pSrc;
-{
- register PixmapPtr pDst;
- int size;
- ScreenPtr pScreen;
-
- size = pSrc->drawable.height * pSrc->devKind;
- pScreen = pSrc->drawable.pScreen;
- pDst = (*pScreen->CreatePixmap) (pScreen, pSrc->drawable.width,
- pSrc->drawable.height, pSrc->drawable.depth);
- if (!pDst)
- return NullPixmap;
- memmove((char *)pDst->devPrivate.ptr, (char *)pSrc->devPrivate.ptr, size);
- return pDst;
-}
-
-
-/* replicates a pattern to be a full 32 bits wide.
- relies on the fact that each scnaline is longword padded.
- doesn't do anything if pixmap is not a factor of 32 wide.
- changes width field of pixmap if successful, so that the fast
- iplXRotatePixmap code gets used if we rotate the pixmap later.
- iplYRotatePixmap code gets used if we rotate the pixmap later.
-
- calculate number of times to repeat
- for each scanline of pattern
- zero out area to be filled with replicate
- left shift and or in original as many times as needed
-*/
-
-void
-iplPadPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- register int width = pPixmap->drawable.width;
- register int h;
- register unsigned short mask;
- register unsigned short *p;
- register unsigned short bits; /* real pattern bits */
- register int i;
- int rep; /* repeat count for pattern */
-
- if (width >= INTER_PGSZ)
- return;
-
- rep = INTER_PGSZ/width;
-/* if (rep*width != INTER_PGSZ)
- return; */
-
- mask = iplendtab[width];
-
- p = (unsigned short *)(pPixmap->devPrivate.ptr);
- for (h=0; h < pPixmap->drawable.height * INTER_PLANES; h++)
- {
- *p &= mask;
- bits = *p ;
- for(i=1; i<rep; i++)
- {
-#if (BITMAP_BIT_ORDER == MSBFirst)
- bits >>= width;
-#else
- bits <<= width;
-#endif
- *p |= bits;
- }
- p++;
- }
- pPixmap->drawable.width = rep*width; /* PGSZ/(pPixmap->drawable.bitsPerPixel); */
-}
-
-
-#ifdef notdef
-/*
- * ipl debugging routine -- assumes pixmap is 1 byte deep
- */
-static ipldumppixmap(pPix)
- PixmapPtr pPix;
-{
- unsigned int *pw;
- char *psrc, *pdst;
- int i, j;
- char line[66];
-
- ErrorF( "pPixmap: 0x%x\n", pPix);
- ErrorF( "%d wide %d high\n", pPix->drawable.width, pPix->drawable.height);
- if (pPix->drawable.width > 64)
- {
- ErrorF( "too wide to see\n");
- return;
- }
-
- pw = (unsigned int *) pPix->devPrivate.ptr;
- psrc = (char *) pw;
-
-/*
- for ( i=0; i<pPix->drawable.height; ++i )
- ErrorF( "0x%x\n", pw[i] );
-*/
-
- for ( i = 0; i < pPix->drawable.height; ++i ) {
- pdst = line;
- for(j = 0; j < pPix->drawable.width; j++) {
- *pdst++ = *psrc++ ? 'X' : ' ' ;
- }
- *pdst++ = '\n';
- *pdst++ = '\0';
- ErrorF( "%s", line);
- }
-}
-#endif /* notdef */
-
-/* Rotates pixmap pPix by w pixels to the right on the screen. Assumes that
- * words are PGSZ bits wide, and that the least significant bit appears on the
- * left.
- */
-void
-iplXRotatePixmap(pPix, rw)
- PixmapPtr pPix;
- register int rw;
-{
- INTER_DECLAREG(*pw);
- INTER_DECLAREG(*pwFinal);
- INTER_DECLAREGP(t);
- int rot;
-
- if (pPix == NullPixmap)
- return;
-
- switch (((DrawablePtr) pPix)->bitsPerPixel) {
- case INTER_PLANES:
- break;
- case 1:
- mfbXRotatePixmap(pPix, rw);
- return;
- default:
- ErrorF("iplXRotatePixmap: unsupported bitsPerPixel %d\n", ((DrawablePtr) pPix)->bitsPerPixel);
- return;
- }
- pw = (unsigned short *)pPix->devPrivate.ptr;
- modulus (rw, (int) pPix->drawable.width, rot);
- if(pPix->drawable.width == 16)
- {
- pwFinal = pw + pPix->drawable.height * INTER_PLANES;
- while(pw < pwFinal)
- {
- INTER_COPY(pw, t);
- INTER_MSKINSM(iplendtab[rot], INTER_PPG-rot, t,
- ~0, rot, t, pw)
- INTER_NEXT_GROUP(pw);
- }
- }
- else
- {
- ErrorF("ipl internal error: trying to rotate odd-sized pixmap.\n");
-#ifdef notdef
- register unsigned long *pwTmp;
- int size, tsize;
-
- tsize = PixmapBytePad(pPix->drawable.width - rot, pPix->drawable.depth);
- pwTmp = (unsigned long *) ALLOCATE_LOCAL(pPix->drawable.height * tsize);
- if (!pwTmp)
- return;
- /* divide pw (the pixmap) in two vertically at (w - rot) and swap */
- tsize >>= 2;
- size = pPix->devKind >> SIZE0F(PixelGroup);
- iplQuickBlt((long *)pw, (long *)pwTmp,
- 0, 0, 0, 0,
- (int)pPix->drawable.width - rot, (int)pPix->drawable.height,
- size, tsize);
- iplQuickBlt((long *)pw, (long *)pw,
- (int)pPix->drawable.width - rot, 0, 0, 0,
- rot, (int)pPix->drawable.height,
- size, size);
- iplQuickBlt((long *)pwTmp, (long *)pw,
- 0, 0, rot, 0,
- (int)pPix->drawable.width - rot, (int)pPix->drawable.height,
- tsize, size);
- DEALLOCATE_LOCAL(pwTmp);
-#endif
- }
-}
-
-/* Rotates pixmap pPix by h lines. Assumes that h is always less than
- pPix->drawable.height
- works on any width.
- */
-void
-iplYRotatePixmap(pPix, rh)
- register PixmapPtr pPix;
- int rh;
-{
- int nbyDown; /* bytes to move down to row 0; also offset of
- row rh */
- int nbyUp; /* bytes to move up to line rh; also
- offset of first line moved down to 0 */
- char *pbase;
- char *ptmp;
- int rot;
-
- if (pPix == NullPixmap)
- return;
- switch (((DrawablePtr) pPix)->bitsPerPixel) {
- case INTER_PLANES:
- break;
- case 1:
- mfbYRotatePixmap(pPix, rh);
- return;
- default:
- ErrorF("iplYRotatePixmap: unsupported bitsPerPixel %d\n", ((DrawablePtr) pPix)->bitsPerPixel);
- return;
- }
-
- modulus (rh, (int) pPix->drawable.height, rot);
- pbase = (char *)pPix->devPrivate.ptr;
-
- nbyDown = rot * pPix->devKind;
- nbyUp = (pPix->devKind * pPix->drawable.height) - nbyDown;
- if(!(ptmp = (char *)ALLOCATE_LOCAL(nbyUp)))
- return;
-
- memmove(ptmp, pbase, nbyUp); /* save the low rows */
- memmove(pbase, pbase+nbyUp, nbyDown); /* slide the top rows down */
- memmove(pbase+nbyDown, ptmp, nbyUp); /* move lower rows up to row rot */
- DEALLOCATE_LOCAL(ptmp);
-}
-
-void
-iplCopyRotatePixmap(psrcPix, ppdstPix, xrot, yrot)
- register PixmapPtr psrcPix, *ppdstPix;
- int xrot, yrot;
-{
- register PixmapPtr pdstPix;
-
- if ((pdstPix = *ppdstPix) &&
- (pdstPix->devKind == psrcPix->devKind) &&
- (pdstPix->drawable.height == psrcPix->drawable.height))
- {
- memmove((char *)pdstPix->devPrivate.ptr,
- (char *)psrcPix->devPrivate.ptr,
- psrcPix->drawable.height * psrcPix->devKind);
- pdstPix->drawable.width = psrcPix->drawable.width;
- pdstPix->drawable.depth = psrcPix->drawable.depth;
- pdstPix->drawable.bitsPerPixel = psrcPix->drawable.bitsPerPixel;
- pdstPix->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- }
- else
- {
- if (pdstPix)
- /* FIX XBUG 6168 */
- (*pdstPix->drawable.pScreen->DestroyPixmap)(pdstPix);
- *ppdstPix = pdstPix = iplCopyPixmap(psrcPix);
- if (!pdstPix)
- return;
- }
- iplPadPixmap(pdstPix);
- if (xrot)
- iplXRotatePixmap(pdstPix, xrot);
- if (yrot)
- iplYRotatePixmap(pdstPix, yrot);
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplply1rct.c b/nx-X11/programs/Xserver/iplan2p4/iplply1rct.c
deleted file mode 100644
index bac2be4ed..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplply1rct.c
+++ /dev/null
@@ -1,310 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplply1rct.c,v 3.0 1996/08/18 01:55:00 dawes Exp $ */
-/*
- * $XConsortium: iplply1rct.c,v 1.14 94/04/17 20:28:56 dpw Exp $
- *
-Copyright (c) 1990 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "ipl.h"
-#include "iplrrop.h"
-
-#include "iplmskbits.h"
-
-void
-INTER_RROP_NAME(iplFillPoly1Rect) (pDrawable, pGC, shape, mode, count, ptsIn)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int count;
- DDXPointPtr ptsIn;
-{
- iplPrivGCPtr devPriv;
- int ngwidth;
- unsigned short *addrl, *addr;
- int maxy;
- int origin;
- register int vertex1, vertex2;
- int c;
- BoxPtr extents;
- int clip;
- int y;
- int *vertex1p, *vertex2p;
- int *endp;
- int x1, x2;
- int dx1, dx2;
- int dy1, dy2;
- int e1, e2;
- int step1, step2;
- int sign1, sign2;
- int h;
- int l, r;
- INTER_DECLAREG(mask);
- INTER_DECLAREG(bits);
- int nmiddle;
- INTER_RROP_DECLARE
- bits=~0;
-
- if (mode == CoordModePrevious)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
-
- devPriv = iplGetGCPrivate(pGC);
-#ifdef NO_ONE_RECT
- if (REGION_NUM_RECTS(pGC->pCompositeClip) != 1)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
-#endif
- origin = *((int *) &pDrawable->x);
- origin -= (origin & 0x8000) << 1;
- extents = &pGC->pCompositeClip->extents;
- INTER_RROP_FETCH_GCPRIV(devPriv);
- vertex1 = *((int *) &extents->x1) - origin;
- vertex2 = *((int *) &extents->x2) - origin - 0x00010001;
- clip = 0;
- y = 32767;
- maxy = 0;
- vertex2p = (int *) ptsIn;
- endp = vertex2p + count;
- if (shape == Convex)
- {
- while (count--)
- {
- c = *vertex2p;
- clip |= (c - vertex1) | (vertex2 - c);
- c = intToY(c);
- if (c < y)
- {
- y = c;
- vertex1p = vertex2p;
- }
- vertex2p++;
- if (c > maxy)
- maxy = c;
- }
- }
- else
- {
- int yFlip = 0;
- dx1 = 1;
- x2 = -1;
- x1 = -1;
- while (count--)
- {
- c = *vertex2p;
- clip |= (c - vertex1) | (vertex2 - c);
- c = intToY(c);
- if (c < y)
- {
- y = c;
- vertex1p = vertex2p;
- }
- vertex2p++;
- if (c > maxy)
- maxy = c;
- if (c == x1)
- continue;
- if (dx1 > 0)
- {
- if (x2 < 0)
- x2 = c;
- else
- dx2 = dx1 = (c - x1) >> 31;
- }
- else
- if ((c - x1) >> 31 != dx1)
- {
- dx1 = ~dx1;
- yFlip++;
- }
- x1 = c;
- }
- x1 = (x2 - c) >> 31;
- if (x1 != dx1)
- yFlip++;
- if (x1 != dx2)
- yFlip++;
- if (yFlip != 2)
- clip = 0x8000;
- }
- if (y == maxy)
- return;
-
- if (clip & 0x80008000)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, vertex2p - (int *) ptsIn, ptsIn);
- return;
- }
-
-#define AddrYPlus(a,y) ((a) + (y) * ngwidth)
-
- iplGetGroupWidthAndPointer(pDrawable, ngwidth, addrl);
- addrl = AddrYPlus(addrl,y + pDrawable->y);
- origin = intToX(origin);
- vertex2p = vertex1p;
- vertex2 = vertex1 = *vertex2p++;
- if (vertex2p == endp)
- vertex2p = (int *) ptsIn;
-#define Setup(c,x,vertex,dx,dy,e,sign,step) {\
- x = intToX(vertex); \
- if (dy = intToY(c) - y) { \
- dx = intToX(c) - x; \
- step = 0; \
- if (dx >= 0) \
- { \
- e = 0; \
- sign = 1; \
- if (dx >= dy) {\
- step = dx / dy; \
- dx = dx % dy; \
- } \
- } \
- else \
- { \
- e = 1 - dy; \
- sign = -1; \
- dx = -dx; \
- if (dx >= dy) { \
- step = - (dx / dy); \
- dx = dx % dy; \
- } \
- } \
- } \
- x += origin; \
- vertex = c; \
-}
-
-#define Step(x,dx,dy,e,sign,step) {\
- x += step; \
- if ((e += dx) > 0) \
- { \
- x += sign; \
- e -= dy; \
- } \
-}
- for (;;)
- {
- if (y == intToY(vertex1))
- {
- do
- {
- if (vertex1p == (int *) ptsIn)
- vertex1p = endp;
- c = *--vertex1p;
- Setup (c,x1,vertex1,dx1,dy1,e1,sign1,step1)
- } while (y >= intToY(vertex1));
- h = dy1;
- }
- else
- {
- Step(x1,dx1,dy1,e1,sign1,step1)
- h = intToY(vertex1) - y;
- }
- if (y == intToY(vertex2))
- {
- do
- {
- c = *vertex2p++;
- if (vertex2p == endp)
- vertex2p = (int *) ptsIn;
- Setup (c,x2,vertex2,dx2,dy2,e2,sign2,step2)
- } while (y >= intToY(vertex2));
- if (dy2 < h)
- h = dy2;
- }
- else
- {
- Step(x2,dx2,dy2,e2,sign2,step2)
- if ((c = (intToY(vertex2) - y)) < h)
- h = c;
- }
- /* fill spans for this segment */
- y += h;
- for (;;)
- {
- l = x1;
- r = x2;
- nmiddle = x2 - x1;
- if (nmiddle < 0)
- {
- nmiddle = -nmiddle;
- l = x2;
- r = x1;
- }
- c = l & INTER_PIM;
- l -= c;
-
- addr = addrl + (l >> INTER_PGSH) * INTER_PLANES;
- if (c + nmiddle < INTER_PPG)
- {
- mask = (bits >> c) ^ (bits >> (c+nmiddle));
- INTER_RROP_SOLID_MASK(addr,mask);
- }
- else
- {
- if (c)
- {
- mask = bits >> c;
- INTER_RROP_SOLID_MASK(addr,mask);
- nmiddle += c - INTER_PPG;
- INTER_NEXT_GROUP(addr);
- }
- nmiddle >>= INTER_PGSH;
- while (--nmiddle >= 0) {
- INTER_RROP_SOLID(addr); INTER_NEXT_GROUP(addr);
- }
- if (mask = ~(bits >> (r & INTER_PIM)))
- INTER_RROP_SOLID_MASK(addr,mask);
- }
- if (!--h)
- break;
- addrl = AddrYPlus (addrl, 1);
- Step(x1,dx1,dy1,e1,sign1,step1)
- Step(x2,dx2,dy2,e2,sign2,step2)
- }
- if (y == maxy)
- break;
- addrl = AddrYPlus (addrl, 1);
- }
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplpntwin.c b/nx-X11/programs/Xserver/iplan2p4/iplpntwin.c
deleted file mode 100644
index 8421ba377..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplpntwin.c
+++ /dev/null
@@ -1,341 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: iplpntwin.c,v 5.18 94/04/17 20:28:57 dpw Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "ipl.h"
-#include "mi.h"
-
-void
-iplPaintWindow(pWin, pRegion, what)
- WindowPtr pWin;
- RegionPtr pRegion;
- int what;
-{
- register iplPrivWin *pPrivWin;
- WindowPtr pBgWin;
-
- pPrivWin = iplGetWindowPrivate(pWin);
-
- switch (what) {
- case PW_BACKGROUND:
- switch (pWin->backgroundState) {
- case None:
- break;
- case ParentRelative:
- do {
- pWin = pWin->parent;
- } while (pWin->backgroundState == ParentRelative);
- (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion,
- what);
- break;
- case BackgroundPixmap:
- if (pPrivWin->fastBackground)
- {
- iplFillBoxTile32 ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pPrivWin->pRotatedBackground);
- }
- else
- {
- iplFillBoxTileOdd ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->background.pixmap,
- (int) pWin->drawable.x, (int) pWin->drawable.y);
- }
- break;
- case BackgroundPixel:
- iplFillBoxSolid ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->background.pixel);
- break;
- }
- break;
- case PW_BORDER:
- if (pWin->borderIsPixel)
- {
- iplFillBoxSolid ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->border.pixel);
- }
- else if (pPrivWin->fastBorder)
- {
- iplFillBoxTile32 ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pPrivWin->pRotatedBorder);
- }
- else
- {
- for (pBgWin = pWin;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
-
- iplFillBoxTileOdd ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->border.pixmap,
- (int) pBgWin->drawable.x,
- (int) pBgWin->drawable.y);
- }
- break;
- }
-}
-
-/*
- * Use the RROP macros in copy mode
- */
-
-#define RROP GXcopy
-#include "iplrrop.h"
-#include "iplmskbits.h"
-
-
-# define Expand(left, right, leftAdjust) { \
- int widthStep; \
- widthStep = widthDst - (nmiddle + leftAdjust) * INTER_PLANES; \
- while (h--) { \
- left \
- m = nmiddle; \
- INTER_RROP_SPAN(pdst, m); \
- right \
- pdst += widthStep; \
- } \
-}
-
-void
-iplFillBoxSolid (pDrawable, nBox, pBox, pixel)
- DrawablePtr pDrawable;
- int nBox;
- BoxPtr pBox;
- unsigned long pixel;
-{
- INTER_DECLAREG(*pdstBase);
- int widthDst;
- register int h;
- INTER_DECLAREGP(rrop_xor);
- INTER_DECLAREG(*pdst);
- INTER_DECLAREG(leftMask);
- INTER_DECLAREG(rightMask);
- int nmiddle;
- register int m;
- int w;
-
- iplGetGroupWidthAndPointer(pDrawable, widthDst, pdstBase);
-
- INTER_PFILL(pixel, rrop_xor);
- for (; nBox; nBox--, pBox++)
- {
- pdst = pdstBase + pBox->y1 * widthDst;
- h = pBox->y2 - pBox->y1;
- w = pBox->x2 - pBox->x1;
- pdst += (pBox->x1 >> INTER_PGSH) * INTER_PLANES;
- if ((pBox->x1 & INTER_PIM) + w <= INTER_PPG)
- {
- INTER_maskpartialbits(pBox->x1, w, leftMask);
- while (h--) {
- INTER_COPYM(rrop_xor, pdst, leftMask, pdst);
- pdst += widthDst;
- }
- }
- else
- {
- INTER_maskbits (pBox->x1, w, leftMask, rightMask, nmiddle);
- if (leftMask)
- {
- if (rightMask)
- {
- Expand (INTER_RROP_SOLID_MASK (pdst, leftMask);
- INTER_NEXT_GROUP(pdst);,
- INTER_RROP_SOLID_MASK (pdst, rightMask); ,
- 1)
- }
- else
- {
- Expand (INTER_RROP_SOLID_MASK (pdst, leftMask);
- INTER_NEXT_GROUP(pdst);,
- ;,
- 1)
- }
- }
- else
- {
- if (rightMask)
- {
- Expand (;,
- INTER_RROP_SOLID_MASK (pdst, rightMask);,
- 0)
- }
- else
- {
- Expand (;,
- ;,
- 0)
- }
- }
- }
- }
-}
-
-void
-iplFillBoxTile32 (pDrawable, nBox, pBox, tile)
- DrawablePtr pDrawable;
- int nBox; /* number of boxes to fill */
- BoxPtr pBox; /* pointer to list of boxes to fill */
- PixmapPtr tile; /* rotated, expanded tile */
-{
- INTER_DECLAREGP(rrop_xor);
- INTER_DECLAREG(*pdst);
- register int m;
- INTER_DECLAREG(*psrc);
- int tileHeight;
-
- int widthDst;
- int w;
- int h;
- INTER_DECLAREG(leftMask);
- INTER_DECLAREG(rightMask);
- int nmiddle;
- int y;
- int srcy;
-
- INTER_DECLAREG(*pdstBase);
-
- tileHeight = tile->drawable.height;
- psrc = (unsigned short *)tile->devPrivate.ptr;
-
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase);
-
- while (nBox--)
- {
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
- y = pBox->y1;
- pdst = pdstBase + (pBox->y1 * widthDst) +
- (pBox->x1 >> INTER_PGSH) * INTER_PLANES;
- srcy = y % tileHeight;
-
-#define StepTile INTER_COPY(psrc + srcy * INTER_PLANES, rrop_xor); \
- ++srcy; \
- if (srcy == tileHeight) \
- srcy = 0;
-
- if ( ((pBox->x1 & INTER_PIM) + w) < INTER_PPG)
- {
- INTER_maskpartialbits(pBox->x1, w, leftMask);
- rightMask = ~leftMask;
- while (h--)
- {
- StepTile
- INTER_MSKINSM(rightMask, 0, pdst, leftMask, 0, rrop_xor, pdst);
- pdst += widthDst;
- }
- }
- else
- {
- INTER_maskbits(pBox->x1, w, leftMask, rightMask, nmiddle);
-
- if (leftMask)
- {
- if (rightMask)
- {
- Expand (StepTile
- INTER_RROP_SOLID_MASK(pdst, leftMask);
- INTER_NEXT_GROUP(pdst);,
- INTER_RROP_SOLID_MASK(pdst, rightMask);,
- 1)
- }
- else
- {
- Expand (StepTile
- INTER_RROP_SOLID_MASK(pdst, leftMask);
- INTER_NEXT_GROUP(pdst);,
- ;,
- 1)
- }
- }
- else
- {
- if (rightMask)
- {
- Expand (StepTile
- ,
- INTER_RROP_SOLID_MASK(pdst, rightMask);,
- 0)
- }
- else
- {
- Expand (StepTile
- ,
- ;,
- 0)
- }
- }
- }
- pBox++;
- }
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplpolypnt.c b/nx-X11/programs/Xserver/iplan2p4/iplpolypnt.c
deleted file mode 100644
index 61aea7ffd..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplpolypnt.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplpolypnt.c,v 3.0 1996/08/18 01:55:02 dawes Exp $ */
-/************************************************************
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-********************************************************/
-
-/* $XConsortium: iplpolypnt.c,v 5.17 94/04/17 20:28:57 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "ipl.h"
-#include "iplmskbits.h"
-
-#define isClipped(c,ul,lr) ((((c) - (ul)) | ((lr) - (c))) & ClipMask)
-
-/* WARNING: pbox contains two shorts. This code assumes they are packed
- * and can be referenced together as an INT32.
- */
-
-#define PointLoop(fill) { \
- for (nbox = REGION_NUM_RECTS(cclip), pbox = REGION_RECTS(cclip); \
- --nbox >= 0; \
- pbox++) \
- { \
- c1 = *((INT32 *) &pbox->x1) - off; \
- c2 = *((INT32 *) &pbox->x2) - off - 0x00010001; \
- for (ppt = (INT32 *) pptInit, i = npt; --i >= 0;) \
- { \
- pt = *ppt++; \
- if (!isClipped(pt,c1,c2)) { \
- fill \
- } \
- } \
- } \
-}
-
-void
-iplPolyPoint(pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode;
- int npt;
- xPoint *pptInit;
-{
- register INT32 pt;
- register INT32 c1, c2;
- register unsigned long ClipMask = 0x80008000;
- INTER_DECLAREG(*addrg);
- register int ngwidth;
- register int xoffset;
- INTER_DECLAREG(*addrgt);
- register INT32 *ppt;
- RegionPtr cclip;
- int nbox;
- register int i;
- register BoxPtr pbox;
- INTER_DECLARERRAX(and);
- INTER_DECLARERRAX(xor);
- int rop = pGC->alu;
- int off;
- iplPrivGCPtr devPriv;
- xPoint *pptPrev;
-
- devPriv =iplGetGCPrivate(pGC);
- rop = devPriv->rop;
- if (rop == GXnoop)
- return;
- cclip = pGC->pCompositeClip;
- xor = devPriv->xorg;
- and = devPriv->andg;
- if ((mode == CoordModePrevious) && (npt > 1))
- {
- for (pptPrev = pptInit + 1, i = npt - 1; --i >= 0; pptPrev++)
- {
- pptPrev->x += (pptPrev-1)->x;
- pptPrev->y += (pptPrev-1)->y;
- }
- }
- off = *((int *) &pDrawable->x);
- off -= (off & 0x8000) << 1;
- iplGetGroupWidthAndPointer(pDrawable, ngwidth, addrg);
- addrg = addrg + pDrawable->y * ngwidth +
- (pDrawable->x >> INTER_PGSH) * INTER_PLANES;
- xoffset = pDrawable->x & INTER_PIM;
- PointLoop( addrgt = addrg + intToY(pt) * ngwidth
- + ((intToX(pt) + xoffset) >> INTER_PGSH) * INTER_PLANES;
- INTER_DoMaskRRop(addrgt, and, xor,
- iplmask[(intToX(pt) + xoffset) & INTER_PIM], addrgt);
- )
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplrrop.c b/nx-X11/programs/Xserver/iplan2p4/iplrrop.c
deleted file mode 100644
index 1b65fa9dc..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplrrop.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* $XFree86$ */
-/*
- * $XConsortium: iplrrop.c,v 1.8 94/04/17 20:28:59 dpw Exp $
- *
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-/* ipl reduced rasterop computations */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ipl.h"
-
-#include "iplmskbits.h"
-
-/* A description:
- *
- * There are four possible operations on each bit in the destination word,
- *
- * 1 2 3 4
- *
- * 0 0 0 1 1
- * 1 0 1 0 1
- *
- * On examination of the reduced rop equation (dst = (dst & and) ^ xor),
- * these four fall to reduced rops as follows:
- *
- * and 0 1 1 0
- * xor 0 0 1 1
- *
- * or, (if 'and' is expensive) (dst = (dst | or) ^ xor)
- *
- * or 1 0 0 1
- * xor 1 0 1 0
- *
- * The trouble with using this later equation is that trivial
- * rasterop reduction is more difficult; some common rasterops
- * use complicated expressions of xor/and instead of the simple
- * ones while other common rasterops are not made any simpler:
- *
- * GXcopy: *dst = ~xor instead of *dst = xor
- * GXand: *dst = *dst & ~or instead of *dst = *dst & and
- * GXor: *dst = *dst | or instead of *dst = *dst | xor
- * GXxor: *dst = *dst ^ xor instead of *dst = *dst ^ xor
- *
- * If you're really set on using this second mechanism, the changes
- * are pretty simple.
- *
- * All that remains is to provide a mechanism for computing and/xor values
- * based on the raster op and foreground value.
- *
- * The 16 rops fall as follows, with the associated reduced
- * rop and/xor and or/xor values. The values in parenthesis following the
- * reduced values gives an equation using the source value for
- * the reduced value, and is one of {0, src, ~src, 1} as appropriate.
- *
- * clear and andReverse copy
- * src 0 1 0 1 0 1 0 1
- * dst 0 0 0 0 0 0 0 0 1 0 0 1
- * 1 0 0 1 0 1 1 0 0 1 0 1
- *
- * and 0 0 (0) 0 1 (src) 0 1 (src) 0 0 (0)
- * xor 0 0 (0) 0 0 (0) 0 1 (src) 0 1 (src)
- *
- * or 1 1 (1) 1 0 (~src) 1 0 (~src) 1 1 (1)
- * xor 1 1 (1) 1 0 (~src) 1 1 (1) 1 0 (~src)
- *
- * andInverted noop xor or
- * src 0 1 0 1 0 1 0 1
- * dst 0 0 0 0 0 0 0 0 1 0 0 1
- * 1 1 0 1 1 1 1 1 0 1 1 1
- *
- * and 1 0 (~src) 1 1 (1) 1 1 (1) 1 0 (~src)
- * xor 0 0 (0) 0 0 (0) 0 1 (src) 0 1 (src)
- *
- * or 0 1 (src) 0 0 (0) 0 0 (0) 0 1 (src)
- * xor 0 1 (src) 0 0 (0) 0 1 (src) 0 0 (0)
- *
- * nor equiv invert orReverse
- * src 0 1 0 1 0 1 0 1
- * dst 0 1 0 0 1 0 0 1 1 0 1 1
- * 1 0 0 1 0 1 1 0 0 1 0 1
- *
- * and 1 0 (~src) 1 1 (1) 1 1 (1) 1 0 (~src)
- * xor 1 0 (~src) 1 0 (~src) 1 1 (1) 1 1 (1)
- *
- * or 0 1 (src) 0 0 (0) 0 0 (0) 0 1 (src)
- * xor 1 1 (1) 1 0 (~src) 1 1 (1) 1 0 (~src)
- *
- * copyInverted orInverted nand set
- * src 0 1 0 1 0 1 0 1
- * dst 0 1 0 0 1 0 0 1 1 0 1 1
- * 1 1 0 1 1 1 1 1 0 1 1 1
- *
- * and 0 0 (0) 0 1 (src) 0 1 (src) 0 0 (0)
- * xor 1 0 (~src) 1 0 (~src) 1 1 (1) 1 1 (1)
- *
- * or 1 1 (1) 1 0 (~src) 1 0 (~src) 1 1 (1)
- * xor 0 1 (src) 0 0 (0) 0 1 (src) 0 0 (0)
- */
-
-iplReduceRasterOp (rop, fg, pm, and, xor)
- int rop;
- unsigned long fg, pm;
- unsigned short *and;
- unsigned short *xor;
-{
- int rrop;
- switch (rop)
- {
- case GXclear:
- INTER_CLR(and);
- INTER_CLR(xor);
- break;
- case GXand:
- INTER_PFILL(fg, and);
- INTER_CLR(xor);
- break;
- case GXandReverse:
- INTER_PFILL(fg, and);
- INTER_PFILL(fg, xor);
- break;
- case GXcopy:
- INTER_CLR(and);
- INTER_PFILL(fg, xor);
- break;
- case GXandInverted:
- INTER_PFILL(~fg, xor);
- INTER_CLR(xor);
- break;
- case GXnoop:
- INTER_SET(and);
- INTER_CLR(xor);
- break;
- case GXxor:
- INTER_SET(and);
- INTER_PFILL(fg, xor);
- break;
- case GXor:
- INTER_PFILL(~fg, and);
- INTER_PFILL(fg, xor);
- break;
- case GXnor:
- INTER_PFILL(~fg, and);
- INTER_PFILL(~fg, xor);
- break;
- case GXequiv:
- INTER_SET(and);
- INTER_PFILL(~fg, xor);
- case GXinvert:
- INTER_SET(and);
- INTER_SET(xor);
- break;
- case GXorReverse:
- INTER_PFILL(~fg, and);
- INTER_SET(xor);
- break;
- case GXcopyInverted:
- INTER_CLR(and);
- INTER_PFILL(~fg, xor);
- break;
- case GXorInverted:
- INTER_PFILL(fg, and);
- INTER_PFILL(~fg, xor);
- break;
- case GXnand:
- INTER_PFILL(fg, and);
- INTER_SET(xor);
- break;
- case GXset:
- INTER_CLR(and);
- INTER_SET(xor);
- break;
- }
- INTER_ANDXOR_PM(pm, and, xor);
- if (INTER_IS_CLR(and))
- rrop = GXcopy;
- else if (INTER_IS_SET(and))
- rrop = GXxor;
- else if (INTER_IS_CLR(xor))
- rrop = GXand;
- else if (INTER_IS_XOR_SET(and, xor))
- rrop = GXor;
- else
- rrop = GXset;
- return rrop;
-}
-
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplrrop.h b/nx-X11/programs/Xserver/iplan2p4/iplrrop.h
deleted file mode 100644
index 05a88fea4..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplrrop.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplrrop.h,v 3.0 1996/08/18 01:55:04 dawes Exp $ */
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-/* reduced raster ops */
-/* INTER_RROP_DECLARE INTER_RROP_FETCH_GC,
- INTER_RROP_SOLID_MASK, INTER_RROP_SPAN INTER_RROP_NAME */
-
-#define INTER_RROP_FETCH_GC(gc) \
-INTER_RROP_FETCH_GCPRIV(((iplPrivGCPtr)(gc)->devPrivates[iplGCPrivateIndex].ptr))
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if RROP == GXcopy
-#define INTER_RROP_DECLARE register unsigned short *rrop_xor;
-#define INTER_RROP_FETCH_GCPRIV(devPriv) rrop_xor = (devPriv)->xorg;
-#define INTER_RROP_SOLID(dst) INTER_COPY(rrop_xor, dst)
-#define INTER_RROP_SOLID_MASK(dst,mask) INTER_COPYM(rrop_xor, dst, mask, dst)
-#define INTER_RROP_NAME(prefix) INTER_RROP_NAME_CAT(prefix,Copy)
-#endif /* GXcopy */
-
-#if RROP == GXxor
-#define INTER_RROP_DECLARE register unsigned short *rrop_xor;
-#define INTER_RROP_FETCH_GCPRIV(devPriv) rrop_xor = (devPriv)->xorg;
-#define INTER_RROP_SOLID(dst) INTER_XOR(rrop_xor, dst, dst)
-#define INTER_RROP_SOLID_MASK(dst,mask) INTER_XORM(rrop_xor, dst, mask, dst)
-#define INTER_RROP_NAME(prefix) INTER_RROP_NAME_CAT(prefix,Xor)
-#endif /* GXxor */
-
-#if RROP == GXand
-#define INTER_RROP_DECLARE register unsigned short *rrop_and;
-#define INTER_RROP_FETCH_GCPRIV(devPriv) rrop_and = (devPriv)->andg;
-#define INTER_RROP_SOLID(dst) INTER_AND(rrop_and, dst, dst)
-#define INTER_RROP_SOLID_MASK(dst,mask) INTER_ANDM(rrop_and, dst, mask, dst)
-#define INTER_RROP_NAME(prefix) INTER_RROP_NAME_CAT(prefix,And)
-#endif /* GXand */
-
-#if RROP == GXor
-#define INTER_RROP_DECLARE register unsigned short *rrop_or;
-#define INTER_RROP_FETCH_GCPRIV(devPriv) rrop_or = (devPriv)->xorg;
-#define INTER_RROP_SOLID(dst) INTER_OR(rrop_or, dst, dst)
-#define INTER_RROP_SOLID_MASK(dst,mask) INTER_ORM(mask, rrop_or, dst, dst)
-#define INTER_RROP_NAME(prefix) INTER_RROP_NAME_CAT(prefix,Or)
-#endif /* GXor */
-
-#if RROP == GXnoop
-#define INTER_RROP_DECLARE
-#define INTER_RROP_FETCH_GCPRIV(devPriv)
-#define INTER_RROP_SOLID(dst)
-#define INTER_RROP_SOLID_MASK(dst,mask)
-#define INTER_RROP_NAME(prefix) INTER_RROP_NAME_CAT(prefix,Noop)
-#endif /* GXnoop */
-
-#if RROP == GXset
-#define INTER_RROP_DECLARE register unsigned short *rrop_and, *rrop_xor;
-#define INTER_RROP_FETCH_GCPRIV(devPriv) rrop_and = (devPriv)->andg; \
- rrop_xor = (devPriv)->xorg;
-#define INTER_RROP_SOLID(dst) INTER_DoRRop(dst, rrop_and, rrop_xor, dst)
-#define INTER_RROP_SOLID_MASK(dst,mask) \
- INTER_DoMaskRRop(dst, rrop_and, rrop_xor, mask, dst)
-#define INTER_RROP_NAME(prefix) INTER_RROP_NAME_CAT(prefix,General)
-#endif /* GXset */
-
-#ifndef INTER_RROP_SPAN
-#define INTER_RROP_SPAN(pdst,nmiddle) \
- while (--(nmiddle) >= 0) { \
- INTER_RROP_SOLID(pdst); \
- (pdst) = INTER_NEXT(pdst); \
- }
-
-#endif
-
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define INTER_RROP_NAME_CAT(prefix,suffix) prefix##suffix
-#else
-#define INTER_RROP_NAME_CAT(prefix,suffix) prefix/**/suffix
-#endif
-
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplscrinit.c b/nx-X11/programs/Xserver/iplan2p4/iplscrinit.c
deleted file mode 100644
index 073e7b9a4..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplscrinit.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplscrinit.c,v 3.2 1998/06/27 12:55:03 hohndel Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or X Consortium
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and X Consortium make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-/* $XConsortium: iplscrinit.c,v 5.32 94/04/17 20:29:00 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "resource.h"
-#include "colormap.h"
-#include "colormapst.h"
-#include "ipl.h"
-#include "mi.h"
-#include "mistruct.h"
-#include "dix.h"
-#include "mibstore.h"
-
-
-BSFuncRec iplBSFuncRec = {
- iplSaveAreas,
- iplRestoreAreas,
- (BackingStoreSetClipmaskRgnProcPtr) 0,
- (BackingStoreGetImagePixmapProcPtr) 0,
- (BackingStoreGetSpansPixmapProcPtr) 0,
-};
-
-Bool
-iplCloseScreen (index, pScreen)
- int index;
- ScreenPtr pScreen;
-{
- int d;
- DepthPtr depths = pScreen->allowedDepths;
-
- for (d = 0; d < pScreen->numDepths; d++)
- xfree (depths[d].vids);
- xfree (depths);
- xfree (pScreen->visuals);
-#ifdef CFB_NEED_SCREEN_PRIVATE
- xfree (pScreen->devPrivates[iplScreenPrivateIndex].ptr);
-#else
- xfree (pScreen->devPrivate);
-#endif
- return TRUE;
-}
-
-Bool
-iplSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
-{
- int i;
- extern RegionPtr (*iplPuntCopyPlane)();
-
- if (!iplAllocatePrivates(pScreen, (int *) 0, (int *) 0))
- return FALSE;
- pScreen->defColormap = FakeClientID(0);
- /* let CreateDefColormap do whatever it wants for pixels */
- pScreen->blackPixel = pScreen->whitePixel = (Pixel) 0;
- pScreen->QueryBestSize = mfbQueryBestSize;
- /* SaveScreen */
- pScreen->GetImage = iplGetImage;
- pScreen->GetSpans = iplGetSpans;
- pScreen->CreateWindow = iplCreateWindow;
- pScreen->DestroyWindow = iplDestroyWindow;
- pScreen->PositionWindow = iplPositionWindow;
- pScreen->ChangeWindowAttributes = iplChangeWindowAttributes;
- pScreen->RealizeWindow = iplMapWindow;
- pScreen->UnrealizeWindow = iplUnmapWindow;
- pScreen->PaintWindowBackground = iplPaintWindow;
- pScreen->PaintWindowBorder = iplPaintWindow;
- pScreen->CopyWindow = iplCopyWindow;
- pScreen->CreatePixmap = iplCreatePixmap;
- pScreen->DestroyPixmap = iplDestroyPixmap;
- pScreen->RealizeFont = mfbRealizeFont;
- pScreen->UnrealizeFont = mfbUnrealizeFont;
- pScreen->CreateGC = iplCreateGC;
- pScreen->CreateColormap = iplInitializeColormap;
- pScreen->DestroyColormap = (void (*)())NoopDDA;
- pScreen->InstallColormap = iplInstallColormap;
- pScreen->UninstallColormap = iplUninstallColormap;
- pScreen->ListInstalledColormaps = iplListInstalledColormaps;
- pScreen->StoreColors = (void (*)())NoopDDA;
- pScreen->ResolveColor = iplResolveColor;
- pScreen->BitmapToRegion = mfbPixmapToRegion;
-
- mfbRegisterCopyPlaneProc (pScreen, iplCopyPlane);
- return TRUE;
-}
-
-#ifdef CFB_NEED_SCREEN_PRIVATE
-Bool
-iplCreateScreenResources(pScreen)
- ScreenPtr pScreen;
-{
- Bool retval;
-
- pointer oldDevPrivate = pScreen->devPrivate;
- pScreen->devPrivate = pScreen->devPrivates[iplScreenPrivateIndex].ptr;
- retval = miCreateScreenResources(pScreen);
- pScreen->devPrivates[iplScreenPrivateIndex].ptr = pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
- return retval;
-}
-#endif
-
-Bool
-iplFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
-{
- int i, j;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pointer oldDevPrivate;
-#endif
- VisualPtr visuals;
- DepthPtr depths;
- int nvisuals;
- int ndepths;
- int rootdepth;
- VisualID defaultVisual;
-
- rootdepth = 0;
- if (!iplInitVisuals (&visuals, &depths, &nvisuals, &ndepths, &rootdepth,
- &defaultVisual,((unsigned long)1<<(INTER_PLANES-1)), 8))
- return FALSE;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- oldDevPrivate = pScreen->devPrivate;
-#endif
- if (! miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width,
- rootdepth, ndepths, depths,
- defaultVisual, nvisuals, visuals))
- return FALSE;
- /* overwrite miCloseScreen with our own */
- pScreen->CloseScreen = iplCloseScreen;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pScreen->CreateScreenResources = iplCreateScreenResources;
- pScreen->devPrivates[iplScreenPrivateIndex].ptr = pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
-#endif
- pScreen->BackingStoreFuncs = iplBSFuncRec;
- pScreen->GetScreenPixmap = iplGetScreenPixmap;
- pScreen->SetScreenPixmap = iplSetScreenPixmap;
- return TRUE;
-}
-
-/* dts * (inch/dot) * (25.4 mm / inch) = mm */
-Bool
-iplScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
-{
- if (!iplSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width))
- return FALSE;
- if (!iplFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width))
- return FALSE;
-#if INTER_PLANES == 2
-/* This shouldn't be necessary */
- PixmapWidthPaddingInfo[2].padPixelsLog2 = 4;
- PixmapWidthPaddingInfo[2].padRoundUp = 15;
- PixmapWidthPaddingInfo[2].padBytesLog2 = 2;
-#endif
- return TRUE;
-}
-
-PixmapPtr
-iplGetScreenPixmap(pScreen)
- ScreenPtr pScreen;
-{
-#ifdef CFB_NEED_SCREEN_PRIVATE
- return (PixmapPtr)(pScreen->devPrivates[iplScreenPrivateIndex].ptr);
-#else
- return (PixmapPtr)(pScreen->devPrivate.ptr);
-#endif
-}
-
-void
-iplSetScreenPixmap(pPix)
- PixmapPtr pPix;
-{
-#ifdef CFB_NEED_SCREEN_PRIVATE
- if (pPix)
- pPix->drawable.pScreen->devPrivates[iplScreenPrivateIndex].ptr =
- (pointer)pPix;
-#else
- if (pPix)
- pPix->drawable.pScreen->devPrivate.ptr = (pointer)pPix;
-#endif
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplsetsp.c b/nx-X11/programs/Xserver/iplan2p4/iplsetsp.c
deleted file mode 100644
index 9a6c8128d..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplsetsp.c
+++ /dev/null
@@ -1,304 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: iplsetsp.c,v 5.10 94/04/17 20:29:01 dpw Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-
-#include "misc.h"
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "ipl.h"
-
-#include "iplmskbits.h"
-#include "iplmergerop.h"
-#include "iplpack.h"
-
-/* iplSetScanline -- copies the bits from psrc to the drawable starting at
- * (xStart, y) and continuing to (xEnd, y). xOrigin tells us where psrc
- * starts on the scanline. (I.e., if this scanline passes through multiple
- * boxes, we may not want to start grabbing bits at psrc but at some offset
- * further on.)
- */
-iplSetScanline(y, xOrigin, xStart, xEnd, psrc, alu, pdstBase, widthDst, planemask)
- int y;
- int xOrigin; /* where this scanline starts */
- int xStart; /* first bit to use from scanline */
- int xEnd; /* last bit to use from scanline + 1 */
- register unsigned int *psrc;
- register int alu; /* raster op */
- INTER_DECLAREG(*pdstBase); /* start of the drawable */
- int widthDst; /* width of drawable in groups */
- unsigned long planemask;
-{
- int w; /* width of scanline in bits */
- INTER_DECLAREG(*pdst); /* where to put the bits */
- INTER_DECLAREGP(tmpSrc); /* scratch buffer to collect bits in */
- int dstBit; /* offset in bits from beginning of
- * word */
- register int nstart; /* number of bits from first partial */
- register int nend; /* " " last partial word */
- int offSrc;
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
- int nlMiddle, nl, longs;
- INTER_DECLAREG(*ipsrc);
- INTER_DECLAREG(*tmppsrc);
- INTER_DeclareMergeRop()
-
- INTER_InitializeMergeRop(alu,planemask);
-
- longs=NUM_LONGS(INTER_PLANES, xOrigin, xEnd);
-
- tmppsrc = ipsrc = (unsigned short *)
- ALLOCATE_LOCAL(NUM_TEMP_BYTES(INTER_PLANES,longs));
-
- iplUnpackLine(INTER_PLANES, longs, psrc, ipsrc);
-
- pdst = pdstBase + (y * widthDst) + (xStart >> INTER_PGSH) * INTER_PLANES;
- offSrc = (xStart - xOrigin) & INTER_PIM;
- w = xEnd - xStart;
- dstBit = xStart & INTER_PIM;
-
- ipsrc += ((xStart - xOrigin) >> INTER_PGSH) * INTER_PLANES;
- if (dstBit + w <= INTER_PPG)
- {
- INTER_maskpartialbits(dstBit, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- }
- else
- {
- INTER_maskbits(xStart, w, startmask, endmask, nlMiddle);
- }
- if (startmask)
- nstart = INTER_PPG - dstBit;
- else
- nstart = 0;
- if (endmask)
- nend = xEnd & INTER_PIM;
- else
- nend = 0;
- if (startmask)
- {
- INTER_getbits(ipsrc, offSrc, nstart, tmpSrc);
- INTER_putbitsmropshort(tmpSrc, dstBit, nstart, pdst);
- INTER_NEXT_GROUP(pdst);
- offSrc += nstart;
- if (offSrc > INTER_PLST)
- {
- INTER_NEXT_GROUP(ipsrc);
- offSrc -= INTER_PPG;
- }
- }
- nl = nlMiddle;
- while (nl--)
- {
- INTER_getbits(ipsrc, offSrc, INTER_PPG, tmpSrc);
- INTER_DoMergeRop(tmpSrc, pdst, pdst);
- INTER_NEXT_GROUP(pdst);
- INTER_NEXT_GROUP(ipsrc);
- }
- if (endmask)
- {
- INTER_getbits(ipsrc, offSrc, nend, tmpSrc);
- INTER_putbitsmropshort(tmpSrc, 0, nend, pdst);
- }
- DEALLOCATE_LOCAL(tmppsrc);
-}
-
-
-
-/* SetSpans -- for each span copy pwidth[i] bits from psrc to pDrawable at
- * ppt[i] using the raster op from the GC. If fSorted is TRUE, the scanlines
- * are in increasing Y order.
- * Source bit lines are server scanline padded so that they always begin
- * on a word boundary.
- */
-void
-iplSetSpans(pDrawable, pGC, pcharsrc, ppt, pwidth, nspans, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- char *pcharsrc;
- register DDXPointPtr ppt;
- int *pwidth;
- int nspans;
- int fSorted;
-{
- unsigned int *psrc = (unsigned int *)pcharsrc;
- INTER_DECLAREG(*pdstBase); /* start of dst bitmap */
- int widthDst; /* width of bitmap in words */
- register BoxPtr pbox, pboxLast, pboxTest;
- register DDXPointPtr pptLast;
- int alu;
- RegionPtr prgnDst;
- int xStart, xEnd;
- int yMax;
-
- alu = pGC->alu;
- prgnDst = iplGetCompositeClip(pGC);
- pptLast = ppt + nspans;
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- yMax = (int) pDrawable->y + (int) pDrawable->height;
-
- pbox = REGION_RECTS(prgnDst);
- pboxLast = pbox + REGION_NUM_RECTS(prgnDst);
-
- if(fSorted)
- {
- /* scan lines sorted in ascending order. Because they are sorted, we
- * don't have to check each scanline against each clip box. We can be
- * sure that this scanline only has to be clipped to boxes at or after the
- * beginning of this y-band
- */
- pboxTest = pbox;
- while(ppt < pptLast)
- {
- pbox = pboxTest;
- if(ppt->y >= yMax)
- break;
- while(pbox < pboxLast)
- {
- if(pbox->y1 > ppt->y)
- {
- /* scanline is before clip box */
- break;
- }
- else if(pbox->y2 <= ppt->y)
- {
- /* clip box is before scanline */
- pboxTest = ++pbox;
- continue;
- }
- else if(pbox->x1 > ppt->x + *pwidth)
- {
- /* clip box is to right of scanline */
- break;
- }
- else if(pbox->x2 <= ppt->x)
- {
- /* scanline is to right of clip box */
- pbox++;
- continue;
- }
-
- /* at least some of the scanline is in the current clip box */
- xStart = max(pbox->x1, ppt->x);
- xEnd = min(ppt->x + *pwidth, pbox->x2);
- iplSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu,
- pdstBase, widthDst, pGC->planemask);
- if(ppt->x + *pwidth <= pbox->x2)
- {
- /* End of the line, as it were */
- break;
- }
- else
- pbox++;
- }
- /* We've tried this line against every box; it must be outside them
- * all. move on to the next point */
- ppt++;
- psrc += PixmapWidthInPadUnits(*pwidth, pDrawable->depth);
- pwidth++;
- }
- }
- else
- {
- /* scan lines not sorted. We must clip each line against all the boxes */
- while(ppt < pptLast)
- {
- if(ppt->y >= 0 && ppt->y < yMax)
- {
-
- for(pbox = REGION_RECTS(prgnDst); pbox< pboxLast; pbox++)
- {
- if(pbox->y1 > ppt->y)
- {
- /* rest of clip region is above this scanline,
- * skip it */
- break;
- }
- if(pbox->y2 <= ppt->y)
- {
- /* clip box is below scanline */
- pbox++;
- break;
- }
- if(pbox->x1 <= ppt->x + *pwidth &&
- pbox->x2 > ppt->x)
- {
- xStart = max(pbox->x1, ppt->x);
- xEnd = min(pbox->x2, ppt->x + *pwidth);
- iplSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu,
- pdstBase, widthDst, pGC->planemask);
- }
-
- }
- }
- psrc += PixmapWidthInPadUnits(*pwidth, pDrawable->depth);
- ppt++;
- pwidth++;
- }
- }
-}
-
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplsolid.c b/nx-X11/programs/Xserver/iplan2p4/iplsolid.c
deleted file mode 100644
index 768bf0ace..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplsolid.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplsolid.c,v 3.0 1996/08/18 01:55:08 dawes Exp $ */
-/*
- * $XConsortium: iplsolid.c,v 1.9 94/04/17 20:29:02 dpw Exp $
- *
-Copyright (c) 1990 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "ipl.h"
-#include "iplrrop.h"
-
-#include "mi.h"
-#include "mispans.h"
-
-#include "iplmskbits.h"
-
-# define Expand(left, right, leftAdjust) { \
- while (h--) { \
- pdst = pdstRect; \
- left \
- m = nmiddle; \
- INTER_RROP_SPAN(pdst, m); \
- right \
- pdstRect += widthDst; \
- } \
-}
-
-
-void
-INTER_RROP_NAME(iplFillRectSolid) (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox;
- BoxPtr pBox;
-{
- register int m;
- INTER_DECLAREG(*pdst);
- INTER_RROP_DECLARE
- INTER_DECLAREG(leftMask);
- INTER_DECLAREG(rightMask);
- INTER_DECLAREG(*pdstBase);
- INTER_DECLAREG(*pdstRect);
- int nmiddle;
- int h;
- int w;
- int widthDst;
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- INTER_RROP_FETCH_GC(pGC)
-
- for (; nBox; nBox--, pBox++)
- {
- pdstRect = pdstBase + pBox->y1 * widthDst;
- h = pBox->y2 - pBox->y1;
- w = pBox->x2 - pBox->x1;
- pdstRect += (pBox->x1 >> INTER_PGSH) * INTER_PLANES;
- if ((pBox->x1 & INTER_PIM) + w <= INTER_PPG)
- {
- INTER_maskpartialbits(pBox->x1, w, leftMask);
- pdst = pdstRect;
- while (h--) {
- INTER_RROP_SOLID_MASK (pdst, leftMask);
- pdst += widthDst;
- }
- }
- else
- {
- INTER_maskbits (pBox->x1, w, leftMask, rightMask, nmiddle);
- if (leftMask)
- {
- if (rightMask) /* left mask and right mask */
- {
- Expand(INTER_RROP_SOLID_MASK (pdst, leftMask);
- INTER_NEXT_GROUP(pdst);,
- INTER_RROP_SOLID_MASK (pdst, rightMask);, 1)
- }
- else /* left mask and no right mask */
- {
- Expand(INTER_RROP_SOLID_MASK (pdst, leftMask);
- INTER_NEXT_GROUP(pdst);,
- ;, 1)
- }
- }
- else
- {
- if (rightMask) /* no left mask and right mask */
- {
- Expand(;,
- INTER_RROP_SOLID_MASK (pdst, rightMask);, 0)
- }
- else /* no left mask and no right mask */
- {
- Expand(;,
- ;, 0)
- }
- }
- }
- }
-}
-
-void
-INTER_RROP_NAME(iplSolidSpans) (pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- INTER_DECLAREG(*pdstBase);
- int widthDst;
-
- INTER_RROP_DECLARE
-
- INTER_DECLAREG(*pdst);
- register int ngmiddle;
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
- register int w;
- int x;
-
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- DDXPointPtr ppt; /* pointer to list of start points */
- int *pwidthFree;/* copies of the pointers to free */
- DDXPointPtr pptFree;
- int *pwidth;
- iplPrivGCPtr devPriv;
-
- devPriv = iplGetGCPrivate(pGC);
- INTER_RROP_FETCH_GCPRIV(devPriv)
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- while (n--)
- {
- x = ppt->x;
- pdst = pdstBase + (ppt->y * widthDst);
- ++ppt;
- w = *pwidth++;
- if (!w)
- continue;
- if ((x & INTER_PIM) + w <= INTER_PPG)
- {
- pdst += (x >> INTER_PGSH) * INTER_PLANES;
- INTER_maskpartialbits (x, w, startmask);
- INTER_RROP_SOLID_MASK (pdst, startmask);
- }
- else
- {
- pdst += (x >> INTER_PGSH) * INTER_PLANES;
- INTER_maskbits (x, w, startmask, endmask, ngmiddle);
- if (startmask)
- {
- INTER_RROP_SOLID_MASK (pdst, startmask);
- INTER_NEXT_GROUP(pdst);
- }
-
- INTER_RROP_SPAN(pdst,ngmiddle);
-
- if (endmask)
- {
- INTER_RROP_SOLID_MASK (pdst, endmask);
- }
- }
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/ipltegblt.c b/nx-X11/programs/Xserver/iplan2p4/ipltegblt.c
deleted file mode 100644
index 9a46e31c6..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/ipltegblt.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: ipltegblt.c,v 5.9 94/04/17 20:29:03 dpw Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ipl.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "mi.h"
-#define MFB_CONSTS_ONLY
-#include "maskbits.h"
-
-#include "iplmskbits.h"
-
-/*
- this works for fonts with glyphs <= 32 bits wide, on an
- arbitrarily deep display. Use iplTEGlyphBlt8 for 8 bit displays.
-
- This should be called only with a terminal-emulator font;
-this means that the FIXED_METRICS flag is set, and that
-glyphbounds == charbounds.
-
- in theory, this goes faster; even if it doesn't, it reduces the
-flicker caused by writing a string over itself with image text (since
-the background gets repainted per character instead of per string.)
-this seems to be important for some converted X10 applications.
-
- Image text looks at the bits in the glyph and the fg and bg in the
-GC. it paints a rectangle, as defined in the protocol dcoument,
-and the paints the characters.
-
-*/
-
-void
-iplTEGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- FontPtr pfont = pGC->font;
- int widthDst;
- INTER_DECLAREG(*pdstBase); /* pointer to group with top row
- of current glyph */
-
- int w; /* width of glyph and char */
- int h; /* height of glyph and char */
- register int xpos=x; /* current x%32 */
- int ypos=y; /* current y%32 */
- register unsigned char *pglyph;
- int widthGlyph;
-
- INTER_DECLAREG(*pdst); /* pointer to current group in dst */
- int hTmp; /* counter for height */
- BoxRec bbox; /* for clipping */
-
- register int wtmp,xtemp,width;
- INTER_DECLAREGP(bgfill);
- INTER_DECLAREGP(fgfill);
- unsigned long *ptemp;
- INTER_DECLAREGP(tmpDst1);
- INTER_DECLAREGP(tmpDst2);
- INTER_DECLAREG(*pdtmp);
- int tmpx;
-
- xpos += pDrawable->x;
- ypos += pDrawable->y;
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- wtmp = FONTMAXBOUNDS(pfont,characterWidth);
- h = FONTASCENT(pfont) + FONTDESCENT(pfont);
- widthGlyph = GLYPHWIDTHBYTESPADDED(*ppci);
-
- xpos += FONTMAXBOUNDS(pfont,leftSideBearing);
- ypos -= FONTASCENT(pfont);
-
- bbox.x1 = xpos;
- bbox.x2 = xpos + (wtmp * nglyph);
- bbox.y1 = ypos;
- bbox.y2 = ypos + h;
-
- INTER_PFILL(pGC->fgPixel, fgfill);
- INTER_PFILL(pGC->bgPixel, bgfill);
-
- switch (RECT_IN_REGION(pGC->pScreen, iplGetCompositeClip(pGC), &bbox))
- {
- case rgnOUT:
- break;
- case rgnPART:
- /* this is the WRONG thing to do, but it works.
- calling the non-terminal text is easy, but slow, given
- what we know about the font.
-
- the right thing to do is something like:
- for each clip rectangle
- compute at which row the glyph starts to be in it,
- and at which row the glyph ceases to be in it
- compute which is the first glyph inside the left
- edge, and the last one inside the right edge
- draw a fractional first glyph, using only
- the rows we know are in
- draw all the whole glyphs, using the appropriate rows
- draw any pieces of the last glyph, using the right rows
-
- this way, the code would take advantage of knowing that
- all glyphs are the same height and don't overlap.
-
- one day...
- */
-#if 1
- miImageGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
-#endif
- break;
- case rgnIN:
-
- pdtmp = pdstBase + (widthDst * ypos);
- while(nglyph--)
- {
-
- pglyph = FONTGLYPHBITS(pglyphBase, *ppci++);
- pdst = pdtmp;
- hTmp = h;
-
- while (hTmp--)
- {
- x = xpos;
- width = wtmp;
- xtemp = 0;
-
- while (width > 0)
- {
- tmpx = x & INTER_PIM;
- w = min(width, INTER_PPG - tmpx);
- /* w = min(w, (PGSZ - xtemp)); */
-
- ptemp = (unsigned long *)(pglyph + (xtemp >> MFB_PWSH));
-#if 1
- INTER_getstipplepixelsb(ptemp,xtemp,w,bgfill,fgfill,tmpDst1);
-#endif
- {
- INTER_DECLAREG(*pdsttmp) =
- pdst + (x >> INTER_PGSH) * INTER_PLANES;
-#if 1
- INTER_putbits(tmpDst1,tmpx,w,pdsttmp,pGC->planemask);
-#endif
- }
- x += w;
- xtemp += w;
- width -= w;
- }
- pglyph += widthGlyph;
- pdst += widthDst;
- }
- xpos += wtmp;
- }
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/ipltile32.c b/nx-X11/programs/Xserver/iplan2p4/ipltile32.c
deleted file mode 100644
index 06be5a2e8..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/ipltile32.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/ipltile32.c,v 3.0 1996/08/18 01:55:10 dawes Exp $ */
-/*
- * Fill 32 bit tiled rectangles. Used by both PolyFillRect and PaintWindow.
- * no depth dependencies.
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-*/
-
-/* $XConsortium: ipltile32.c,v 1.8 94/04/17 20:29:05 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "ipl.h"
-
-#include "mi.h"
-#include "mispans.h"
-
-#include "iplmskbits.h"
-#include "iplmergerop.h"
-
-#define STORE(p) INTER_MROP_PREBUILT_SOLID(srcpix, p, p)
-
-#define Expand(left,right) {\
- while (h--) { \
- INTER_COPY(psrc+srcy*INTER_PLANES, srcpix); \
- INTER_MROP_PREBUILD(srcpix); \
- ++srcy; \
- if (srcy == tileHeight) \
- srcy = 0; \
- left \
- ngw = ngwMiddle; \
- while (ngw--) \
- { \
- STORE(p); \
- INTER_NEXT_GROUP(p); \
- } \
- right \
- p += ngwExtra; \
- } \
-}
-
-void
-INTER_MROP_NAME(iplFillRectTile32) (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox; /* number of boxes to fill */
- BoxPtr pBox; /* pointer to list of boxes to fill */
-{
- INTER_DECLAREGP(srcpix);
- INTER_DECLAREG(*psrc); /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
-
- int ngwDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- register int h; /* height of current box */
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask); /* masks for reggedy bits at either end of line */
- int ngwMiddle; /* number of longwords between sides of boxes */
- int ngwExtra; /* to get from right of box to left of next span */
- register int ngw; /* loop version of ngwMiddle */
- INTER_DECLAREG(*p); /* pointer to bits we're writing */
- int y; /* current scan line */
- int srcy; /* current tile position */
-
- INTER_DECLAREG(*pbits); /* pointer to start of pixmap */
- PixmapPtr tile; /* rotated, expanded tile */
- INTER_MROP_DECLARE_REG()
- INTER_MROP_PREBUILT_DECLARE()
-
- tile = pGC->pRotatedPixmap;
- tileHeight = tile->drawable.height;
- psrc = (unsigned short *)tile->devPrivate.ptr;
-
- INTER_MROP_INITIALIZE(pGC->alu, pGC->planemask);
-
- iplGetGroupWidthAndPointer (pDrawable, ngwDst, pbits)
-
- while (nBox--)
- {
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
- y = pBox->y1;
- p = pbits + (y * ngwDst) + (pBox->x1 >> INTER_PGSH) * INTER_PLANES;
- srcy = y % tileHeight;
-
- if ( ((pBox->x1 & INTER_PIM) + w) <= INTER_PPG)
- {
- INTER_maskpartialbits(pBox->x1, w, startmask);
- ngwExtra = ngwDst;
- while (h--)
- {
- INTER_COPY(psrc+srcy*INTER_PLANES, srcpix);
- INTER_MROP_PREBUILD(srcpix);
- ++srcy;
- if (srcy == tileHeight)
- srcy = 0;
- INTER_MROP_PREBUILT_MASK(srcpix, p, startmask, p);
- p += ngwExtra;
- }
- }
- else
- {
- INTER_maskbits(pBox->x1, w, startmask, endmask, ngwMiddle);
- ngwExtra = ngwDst - ngwMiddle * INTER_PLANES;
-
- if (startmask)
- {
- ngwExtra -= INTER_PLANES;
- if (endmask)
- {
- Expand(
- INTER_MROP_PREBUILT_MASK(srcpix, p, startmask, p);
- INTER_NEXT_GROUP(p);,
- INTER_MROP_PREBUILT_MASK(srcpix, p, endmask, p));
- }
- else
- {
- Expand(
- INTER_MROP_PREBUILT_MASK(srcpix, p, startmask, p);
- INTER_NEXT_GROUP(p);,
- ;)
- }
- }
- else
- {
- if (endmask)
- {
- Expand(;,
- INTER_MROP_PREBUILT_MASK(srcpix, p, endmask, p));
- }
- else
- {
- Expand(;,
- ;)
- }
- }
- }
- pBox++;
- }
-}
-
-void
-INTER_MROP_NAME(iplTile32FS)(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- DDXPointPtr ppt; /* pointer to list of start points */
- int *pwidth;/* pointer to list of n widths */
- INTER_DECLAREG(*pbits); /* pointer to start of bitmap */
- int ngwDst; /* width in longwords of bitmap */
- INTER_DECLAREG(*p); /* pointer to current longword in bitmap */
- register int w; /* current span width */
- register int ngw;
- register int x;
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
- INTER_DECLAREGP(srcpix);
- int y;
- int *pwidthFree;/* copies of the pointers to free */
- DDXPointPtr pptFree;
- PixmapPtr tile;
- INTER_DECLAREG(*psrc); /* pointer to bits in tile */
- int tileHeight;/* height of the tile */
- INTER_MROP_DECLARE_REG ()
- INTER_MROP_PREBUILT_DECLARE()
-
- n = nInit * miFindMaxBand( iplGetCompositeClip(pGC) );
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans( iplGetCompositeClip(pGC),
- pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- tile = pGC->pRotatedPixmap;
- tileHeight = tile->drawable.height;
- psrc = (unsigned short *)tile->devPrivate.ptr;
-
- INTER_MROP_INITIALIZE(pGC->alu, pGC->planemask);
-
- iplGetGroupWidthAndPointer (pDrawable, ngwDst, pbits)
-
- {
- while (n--)
- {
- x = ppt->x;
- y = ppt->y;
- ++ppt;
- w = *pwidth++;
- p = pbits + (y * ngwDst) + (x >> INTER_PGSH) * INTER_PLANES;
- INTER_COPY(psrc +(y % tileHeight)*INTER_PLANES,srcpix);
- INTER_MROP_PREBUILD(srcpix);
-
- if ((x & INTER_PIM) + w < INTER_PPG)
- {
- INTER_maskpartialbits(x, w, startmask);
- INTER_MROP_PREBUILT_MASK(srcpix, p, startmask, p);
- }
- else
- {
- INTER_maskbits(x, w, startmask, endmask, ngw);
- if (startmask)
- {
- INTER_MROP_PREBUILT_MASK(srcpix, p, startmask, p);
- INTER_NEXT_GROUP(p);
- }
- while (ngw--)
- {
- STORE(p);
- INTER_NEXT_GROUP(p);
- }
- if (endmask)
- {
- INTER_MROP_PREBUILT_MASK(srcpix, p, endmask, p);
- }
- }
- }
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/ipltileodd.c b/nx-X11/programs/Xserver/iplan2p4/ipltileodd.c
deleted file mode 100644
index 7230a5621..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/ipltileodd.c
+++ /dev/null
@@ -1,869 +0,0 @@
-/* $XFree86$ */
-/*
- * Fill odd tiled rectangles and spans.
- * no depth dependencies.
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-*/
-
-/* $XConsortium: ipltileodd.c,v 1.16 94/04/17 20:29:06 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "ipl.h"
-
-#include "iplmskbits.h"
-#include "iplmergerop.h"
-
-#define LEFTSHIFT_AMT 0
-
-#define LastTileBits {\
- INTER_COPY(bits, tmp); \
- if (tileEndPart) \
- INTER_MSKINSM(tileEndMask, 0, pSrc, \
- ~0, tileEndLeftShift, pSrcLine, bits) \
- else \
- INTER_COPY(pSrc, bits); \
-}
-
-#define ResetTileBits {\
- pSrc = pSrcLine; \
- nlwSrc = widthSrc;\
- if (tileEndPart) { \
- if (INTER_PPG - xoff + tileEndPart <= INTER_PPG) {\
- INTER_COPY(pSrc, bits); INTER_NEXT_GROUP(pSrc); \
- nlwSrc--; \
- } else \
- INTER_MSKINSM(~0, tileEndLeftShift, tmp, \
- ~0, tileEndRightShift, bits, bits); \
- xoff = (xoff + xoffStep) & INTER_PIM; \
- leftShift = xoff << LEFTSHIFT_AMT; \
- rightShift = INTER_PGSZ - leftShift; \
- }\
-}
-
-#define NextTileBits {\
- if (nlwSrc == 1) {\
- LastTileBits\
- } else { \
- if (nlwSrc == 0) {\
- ResetTileBits\
- } \
- if (nlwSrc == 1) {\
- LastTileBits\
- } else {\
- INTER_COPY(bits, tmp); \
- INTER_COPY(pSrc, bits); INTER_NEXT_GROUP(pSrc); \
- }\
- }\
- nlwSrc--; \
-}
-
-void
-INTER_MROP_NAME(iplFillBoxTileOdd) (pDrawable, nBox, pBox, tile, xrot, yrot, alu, planemask)
- DrawablePtr pDrawable;
- int nBox; /* number of boxes to fill */
- register BoxPtr pBox; /* pointer to list of boxes to fill */
- PixmapPtr tile; /* tile */
- int xrot, yrot;
- int alu;
- unsigned long planemask;
-{
- int tileWidth; /* width of tile in pixels */
- int tileHeight; /* height of the tile */
- int widthSrc;
-
- int widthDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- int h; /* height of current box */
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);/* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwSrc; /* number of whole longwords in source */
-
- register int nlw; /* loop version of nlwMiddle */
- int srcy; /* current tile y position */
- int srcx; /* current tile x position */
- int xoffDst, xoffSrc;
- int leftShift, rightShift;
-
- INTER_MROP_DECLARE_REG()
-
- INTER_DECLAREG(*pDstBase); /* pointer to start of dest */
- INTER_DECLAREG(*pDstLine); /* poitner to start of dest box */
- INTER_DECLAREG(*pSrcBase); /* pointer to start of source */
- INTER_DECLAREG(*pSrcLine); /* pointer to start of source line */
- INTER_DECLAREG(*pDst);
- INTER_DECLAREG(*pSrc);
- INTER_DECLAREGP(bits);
- INTER_DECLAREGP(tmp);
- INTER_DECLAREGP(tmp1);
- register int nlwPart;
- int xoffStart, xoff;
- int leftShiftStart, rightShiftStart, nlwSrcStart;
- INTER_DECLAREG(tileEndMask);
- int tileEndLeftShift, tileEndRightShift;
- int xoffStep;
- int tileEndPart;
- int needFirst;
- unsigned short narrow[2 * INTER_PLANES];
- INTER_DECLAREG(narrowMask);
- int narrowShift;
- Bool narrowTile;
- int narrowRep;
-
- INTER_MROP_INITIALIZE (alu, planemask)
-
- tileHeight = tile->drawable.height;
- tileWidth = tile->drawable.width;
- widthSrc = tile->devKind / (INTER_PGSZB * INTER_PLANES);
- narrowTile = FALSE;
-
- if (widthSrc == 1)
- {
- narrowRep = INTER_PPG / tileWidth;
- narrowMask = iplendpartial [tileWidth];
- tileWidth *= narrowRep;
- narrowShift = tileWidth;
- tileWidth *= 2;
- widthSrc = 2;
- narrowTile = TRUE;
- }
- pSrcBase = (unsigned short *)tile->devPrivate.ptr;
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pDstBase)
-
- tileEndPart = tileWidth & INTER_PIM;
- tileEndMask = iplendpartial[tileEndPart];
- tileEndLeftShift = (tileEndPart) << LEFTSHIFT_AMT;
- tileEndRightShift = INTER_PGSZ - tileEndLeftShift;
- xoffStep = INTER_PPG - tileEndPart;
- /*
- * current assumptions: tile > 32 bits wide.
- */
- while (nBox--)
- {
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
- modulus (pBox->x1 - xrot, tileWidth, srcx);
- modulus (pBox->y1 - yrot, tileHeight, srcy);
- xoffDst = pBox->x1 & INTER_PIM;
- if (xoffDst + w < INTER_PPG)
- {
- INTER_maskpartialbits(pBox->x1, w, startmask);
- endmask = 0;
- nlwMiddle = 0;
- }
- else
- {
- INTER_maskbits (pBox->x1, w, startmask, endmask, nlwMiddle)
- }
- pDstLine = pDstBase + (pBox->y1 * widthDst) +
- (pBox->x1 >> INTER_PGSH) * INTER_PLANES;
- pSrcLine = pSrcBase + (srcy * widthSrc) * INTER_PLANES;
- xoffSrc = srcx & INTER_PIM;
- if (xoffSrc >= xoffDst)
- {
- xoffStart = xoffSrc - xoffDst;
- needFirst = 1;
- }
- else
- {
- xoffStart = INTER_PPG - (xoffDst - xoffSrc);
- needFirst = 0;
- }
- leftShiftStart = (xoffStart) << LEFTSHIFT_AMT;
- rightShiftStart = INTER_PGSZ - leftShiftStart;
- nlwSrcStart = (widthSrc - (srcx >> INTER_PGSH));
- while (h--)
- {
- /* XXX only works when narrowShift >= INTER_PPG/2 */
- if (narrowTile)
- {
- int tmpnarrowRep;
- int shift=narrowShift/narrowRep;
- INTER_ANDMSK(pSrcBase + srcy * INTER_PLANES, narrowMask, tmp);
- tmpnarrowRep=narrowRep;
- /* copy tile until its nearly a whole group wide */
- while (--tmpnarrowRep)
- INTER_MSKINSM(~0,0,tmp,~0,shift,tmp,tmp);
- INTER_MSKINSM(~0, 0, tmp, ~0, narrowShift, tmp, narrow);
- INTER_MSKINSM(~0, INTER_PPG - narrowShift, tmp,
- ~0, 2 * narrowShift - INTER_PPG, tmp,
- narrow + INTER_PLANES);
- pSrcLine = narrow;
- }
- xoff = xoffStart;
- leftShift = leftShiftStart;
- rightShift = rightShiftStart;
- nlwSrc = nlwSrcStart;
- pSrc = pSrcLine + (srcx >> INTER_PGSH) * INTER_PLANES;
- pDst = pDstLine;
- INTER_CLR(bits);
- if (needFirst)
- {
- NextTileBits
- }
- if (startmask)
- {
- NextTileBits
- INTER_SCRLEFT(leftShift, tmp, tmp);
- if (rightShift != INTER_PGSZ)
- INTER_MSKINSM(~0, 0, tmp, ~0, rightShift, bits, tmp)
- INTER_MROP_MASK (tmp, pDst, startmask, pDst);
- INTER_NEXT_GROUP(pDst);
- }
- nlw = nlwMiddle;
- while (nlw)
- {
- {
- NextTileBits
- if (rightShift != INTER_PGSZ)
- {
- INTER_MSKINSM(~0, leftShift, tmp, ~0, rightShift, bits,
- tmp1);
- INTER_MROP_SOLID(tmp1, pDst, pDst);
- }
- else
- {
- INTER_MROP_SOLID (tmp, pDst, pDst);
- }
- INTER_NEXT_GROUP(pDst);
- nlw--;
- }
- }
- if (endmask)
- {
- NextTileBits
- if (rightShift == INTER_PGSZ)
- INTER_CLR(bits);
- INTER_MSKINSM(~0, leftShift, tmp, ~0, rightShift, bits, tmp1);
- INTER_MROP_MASK(tmp1, pDst, endmask, pDst);
- }
- pDstLine += widthDst;
- pSrcLine += widthSrc * INTER_PLANES;
- if (++srcy == tileHeight)
- {
- srcy = 0;
- pSrcLine = pSrcBase;
- }
- }
- pBox++;
- }
-}
-
-void
-INTER_MROP_NAME(iplFillSpanTileOdd) (pDrawable, n, ppt, pwidth, tile, xrot, yrot, alu, planemask)
- DrawablePtr pDrawable;
- int n;
- DDXPointPtr ppt;
- int *pwidth;
- PixmapPtr tile;
- int xrot, yrot;
- int alu;
- unsigned long planemask;
-{
- int tileWidth; /* width of tile in pixels */
- int tileHeight; /* height of the tile */
- int widthSrc;
-
- int widthDst; /* width in longwords of the dest pixmap */
- int w; /* width of current span */
- INTER_DECLAREG(startmask);
- INTER_DECLAREG (endmask); /* masks for reggedy bits at either end of line */
- int nlwSrc; /* number of whole longwords in source */
-
- register int nlw; /* loop version of nlwMiddle */
- int srcy; /* current tile y position */
- int srcx; /* current tile x position */
- int xoffDst, xoffSrc;
- int leftShift, rightShift;
-
- INTER_MROP_DECLARE_REG()
-
- INTER_DECLAREG(*pDstBase); /* pointer to start of dest */
- INTER_DECLAREG(*pDstLine); /* poitner to start of dest box */
- INTER_DECLAREG(*pSrcBase); /* pointer to start of source */
- INTER_DECLAREG(*pSrcLine); /* pointer to start of source line */
- INTER_DECLAREG(*pDst);
- INTER_DECLAREG(*pSrc);
- INTER_DECLAREGP(bits);
- INTER_DECLAREGP(tmp);
- INTER_DECLAREGP(tmp1);
- register int nlwPart;
- int xoffStart, xoff;
- int leftShiftStart, rightShiftStart, nlwSrcStart;
- INTER_DECLAREG(tileEndMask);
- int tileEndLeftShift, tileEndRightShift;
- int xoffStep;
- int tileEndPart;
- int needFirst;
- unsigned short narrow[2 * INTER_PLANES];
- INTER_DECLAREG(narrowMask);
- int narrowShift;
- Bool narrowTile;
- int narrowRep;
-
- INTER_MROP_INITIALIZE (alu, planemask)
-
- tileHeight = tile->drawable.height;
- tileWidth = tile->drawable.width;
- widthSrc = tile->devKind / (INTER_PGSZB * INTER_PLANES);
- narrowTile = FALSE;
- if (widthSrc == 1)
- {
- narrowRep = INTER_PPG / tileWidth;
- narrowMask = iplendpartial [tileWidth];
- tileWidth *= narrowRep;
- narrowShift = tileWidth;
- tileWidth *= 2;
- widthSrc = 2;
- narrowTile = TRUE;
- }
- pSrcBase = (unsigned short *)tile->devPrivate.ptr;
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pDstBase)
-
- tileEndPart = tileWidth & INTER_PIM;
- tileEndMask = iplendpartial[tileEndPart];
- tileEndLeftShift = (tileEndPart) << LEFTSHIFT_AMT;
- tileEndRightShift = INTER_PGSZ - tileEndLeftShift;
- xoffStep = INTER_PPG - tileEndPart;
- while (n--)
- {
- w = *pwidth++;
- modulus (ppt->x - xrot, tileWidth, srcx);
- modulus (ppt->y - yrot, tileHeight, srcy);
- xoffDst = ppt->x & INTER_PIM;
- if (xoffDst + w < INTER_PPG)
- {
- INTER_maskpartialbits(ppt->x, w, startmask);
- endmask = 0;
- nlw = 0;
- }
- else
- {
- INTER_maskbits (ppt->x, w, startmask, endmask, nlw)
- }
- pDstLine = pDstBase + (ppt->y * widthDst) +
- (ppt->x >> INTER_PGSH) * INTER_PLANES;
- pSrcLine = pSrcBase + (srcy * widthSrc) * INTER_PLANES;
- xoffSrc = srcx & INTER_PIM;
- if (xoffSrc >= xoffDst)
- {
- xoffStart = xoffSrc - xoffDst;
- needFirst = 1;
- }
- else
- {
- xoffStart = INTER_PPG - (xoffDst - xoffSrc);
- needFirst = 0;
- }
- leftShiftStart = (xoffStart) << LEFTSHIFT_AMT;
- rightShiftStart = INTER_PGSZ - leftShiftStart;
- nlwSrcStart = widthSrc - (srcx >> INTER_PGSH);
- /* XXX only works when narrowShift >= INTER_PPG/2 */
- if (narrowTile)
- {
- int tmpnarrowRep;
- int shift=narrowShift/narrowRep;
- INTER_ANDMSK(pSrcBase + srcy * INTER_PLANES, narrowMask, tmp);
- tmpnarrowRep=narrowRep;
- /* copy tile until its nearly a whole group wide */
- while (--tmpnarrowRep)
- INTER_MSKINSM(~0,0,tmp,~0,shift,tmp,tmp);
- INTER_MSKINSM(~0, 0, tmp, ~0, narrowShift, tmp, narrow);
- INTER_MSKINSM(~0, INTER_PPG - narrowShift, tmp,
- ~0, 2 * narrowShift - INTER_PPG, tmp,
- narrow + INTER_PLANES);
- pSrcLine = narrow;
- }
- xoff = xoffStart;
- leftShift = leftShiftStart;
- rightShift = rightShiftStart;
- nlwSrc = nlwSrcStart;
- pSrc = pSrcLine + (srcx >> INTER_PGSH) * INTER_PLANES;
- pDst = pDstLine;
- INTER_CLR(bits);
- if (needFirst)
- {
- NextTileBits
- }
- if (startmask)
- {
- NextTileBits
- INTER_SCRLEFT(leftShift, tmp, tmp);
- if (rightShift != INTER_PGSZ)
- INTER_MSKINSM(~0, 0, tmp, ~0, rightShift, bits, tmp);
- INTER_MROP_MASK (tmp, pDst, startmask, pDst);
- INTER_NEXT_GROUP(pDst);
- }
- while (nlw)
- {
- {
- NextTileBits
- if (rightShift != INTER_PGSZ)
- {
- INTER_MSKINSM(~0, leftShift, tmp, ~0, rightShift, bits,
- tmp1);
- INTER_MROP_SOLID(tmp1, pDst, pDst);
- INTER_NEXT_GROUP(pDst);
- }
- else
- {
- INTER_MROP_SOLID (tmp, pDst, pDst);
- INTER_NEXT_GROUP(pDst);
- }
- nlw--;
- }
- }
- if (endmask)
- {
- NextTileBits
- if (rightShift == INTER_PGSZ)
- INTER_CLR(bits);
-
- INTER_MSKINSM(~0, leftShift, tmp, ~0, rightShift, bits, tmp1);
- INTER_MROP_MASK(tmp1, pDst, endmask, pDst);
- }
- ppt++;
- }
-}
-
-# include "fastblt.h"
-
-#define IncSrcPtr INTER_NEXT_GROUP(psrc); if (!--srcRemaining) { srcRemaining = widthSrc; psrc = psrcStart; }
-
-void
-INTER_MROP_NAME(iplFillBoxTile32s) (pDrawable, nBox, pBox, tile, xrot, yrot, alu, planemask)
- DrawablePtr pDrawable;
- int nBox; /* number of boxes to fill */
- register BoxPtr pBox; /* pointer to list of boxes to fill */
- PixmapPtr tile; /* tile */
- int xrot, yrot;
- int alu;
- unsigned long planemask;
-{
- int tileWidth; /* width of tile */
- int tileHeight; /* height of the tile */
- int widthSrc; /* width in longwords of the source tile */
-
- int widthDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- int h; /* height of current box */
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask); /* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
-
- register int nl; /* loop version of nlMiddle */
- int srcy; /* current tile y position */
- int srcx; /* current tile x position */
- int srcRemaining; /* number of longwords remaining in source */
- int xoffDst, xoffSrc;
- int srcStart; /* number of longwords source offset at left of box */
- int leftShift, rightShift;
-
- INTER_MROP_DECLARE_REG()
-
- INTER_DECLAREG(*pdstBase); /* pointer to start of dest */
- INTER_DECLAREG(*pdstLine); /* poitner to start of dest box */
- INTER_DECLAREG(*psrcBase); /* pointer to start of source */
- INTER_DECLAREG(*psrcLine); /* pointer to fetch point of source */
- INTER_DECLAREG(*psrcStart); /* pointer to start of source line */
- INTER_DECLAREG(*pdst);
- INTER_DECLAREG(*psrc);
- INTER_DECLAREGP(bits);
- INTER_DECLAREGP(bits1);
- register int nlTemp;
-
- INTER_MROP_INITIALIZE (alu, planemask)
-
- psrcBase = (unsigned short *)tile->devPrivate.ptr;
- tileHeight = tile->drawable.height;
- tileWidth = tile->drawable.width;
- widthSrc = tile->devKind / (INTER_PGSZB * INTER_PLANES);
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- while (nBox--)
- {
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
-
- /* set up source */
- modulus (pBox->x1 - xrot, tileWidth, srcx);
- modulus (pBox->y1 - yrot, tileHeight, srcy);
- xoffSrc = srcx & INTER_PIM;
- srcStart = srcx >> INTER_PGSH;
- psrcStart = psrcBase + (srcy * widthSrc) * INTER_PLANES;
- psrcLine = psrcStart + srcStart * INTER_PLANES;
-
- /* set up dest */
- xoffDst = pBox->x1 & INTER_PIM;
- pdstLine = pdstBase + (pBox->y1 * widthDst) +
- (pBox->x1 >> INTER_PGSH) * INTER_PLANES;
- /* set up masks */
- if (xoffDst + w < INTER_PPG)
- {
- INTER_maskpartialbits(pBox->x1, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- }
- else
- {
- INTER_maskbits (pBox->x1, w, startmask, endmask, nlMiddle)
- }
- if (xoffSrc == xoffDst)
- {
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- srcRemaining = widthSrc - srcStart;
- if (startmask)
- {
- INTER_MROP_MASK (psrc, pdst, startmask, pdst);
- INTER_NEXT_GROUP(pdst);
- IncSrcPtr
- }
- nlTemp = nlMiddle;
- while (nlTemp)
- {
- nl = nlTemp;
- if (nl > srcRemaining)
- nl = srcRemaining;
-
- nlTemp -= nl;
- srcRemaining -= nl;
-
- while (nl--) {
- INTER_MROP_SOLID (psrc, pdst, pdst);
- INTER_NEXT_GROUP(pdst); INTER_NEXT_GROUP(psrc);
- }
-
- if (!srcRemaining)
- {
- srcRemaining = widthSrc;
- psrc = psrcStart;
- }
- }
- if (endmask)
- {
- INTER_MROP_MASK (psrc, pdst, endmask, pdst);
- }
- pdstLine += widthDst;
- psrcLine += widthSrc * INTER_PLANES;
- psrcStart += widthSrc * INTER_PLANES;
- if (++srcy == tileHeight)
- {
- psrcStart = psrcBase;
- psrcLine = psrcStart + srcStart * INTER_PLANES;
- srcy = 0;
- }
- }
- }
- else
- {
- if (xoffSrc > xoffDst)
- {
- leftShift = (xoffSrc - xoffDst) << LEFTSHIFT_AMT;
- rightShift = INTER_PGSZ - leftShift;
- }
- else
- {
- rightShift = (xoffDst - xoffSrc) << LEFTSHIFT_AMT;
- leftShift = INTER_PGSZ - rightShift;
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- INTER_CLR(bits);
- srcRemaining = widthSrc - srcStart;
- if (xoffSrc > xoffDst)
- {
- INTER_COPY(psrc, bits);
- IncSrcPtr
- }
- if (startmask)
- {
- INTER_SCRLEFT(leftShift, bits, bits1);
- INTER_COPY(psrc, bits);
- IncSrcPtr
- INTER_MSKINSM(~0, 0, bits1, ~0, rightShift, bits, bits1);
- INTER_MROP_MASK(bits1, pdst, startmask, pdst);
- INTER_NEXT_GROUP(pdst);
- }
- nlTemp = nlMiddle;
- while (nlTemp)
- {
- nl = nlTemp;
- if (nl > srcRemaining)
- nl = srcRemaining;
-
- nlTemp -= nl;
- srcRemaining -= nl;
-
- while (nl--) {
- INTER_SCRLEFT(leftShift, bits, bits1);
- INTER_COPY(psrc, bits); INTER_NEXT_GROUP(psrc);
- INTER_MSKINSM(~0, 0, bits1, ~0, rightShift, bits, bits1);
- INTER_MROP_SOLID (bits1, pdst, pdst);
- INTER_NEXT_GROUP(pdst);
- }
-
- if (!srcRemaining)
- {
- srcRemaining = widthSrc;
- psrc = psrcStart;
- }
- }
-
- if (endmask)
- {
- INTER_SCRLEFT(leftShift, bits, bits1);
- if (endmask << rightShift)
- {
- INTER_COPY(psrc, bits);
- INTER_MSKINSM(~0, 0, bits1, ~0, rightShift, bits, bits1);
- }
- INTER_MROP_MASK (bits1, pdst, endmask, pdst);
- }
- pdstLine += widthDst;
- psrcLine += widthSrc * INTER_PLANES;
- psrcStart += widthSrc * INTER_PLANES;
- if (++srcy == tileHeight)
- {
- psrcStart = psrcBase;
- psrcLine = psrcStart + srcStart * INTER_PLANES;
- srcy = 0;
- }
- }
- }
- pBox++;
- }
-}
-
-void
-INTER_MROP_NAME(iplFillSpanTile32s) (pDrawable, n, ppt, pwidth, tile, xrot, yrot, alu, planemask)
- DrawablePtr pDrawable;
- int n;
- DDXPointPtr ppt;
- int *pwidth;
- PixmapPtr tile;
- int xrot, yrot;
- int alu;
- unsigned long planemask;
-{
- int tileWidth; /* width of tile */
- int tileHeight; /* height of the tile */
- int widthSrc; /* width in longwords of the source tile */
-
- int widthDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);/* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
-
- register int nl; /* loop version of nlMiddle */
- int srcy; /* current tile y position */
- int srcx; /* current tile x position */
- int srcRemaining; /* number of longwords remaining in source */
- int xoffDst, xoffSrc;
- int srcStart; /* number of longwords source offset at left of box */
- int leftShift, rightShift;
-
- INTER_MROP_DECLARE_REG()
-
- INTER_DECLAREG(*pdstBase); /* pointer to start of dest */
- INTER_DECLAREG(*pdstLine); /* poitner to start of dest box */
- INTER_DECLAREG(*psrcBase); /* pointer to start of source */
- INTER_DECLAREG(*psrcLine); /* pointer to fetch point of source */
- INTER_DECLAREG(*psrcStart); /* pointer to start of source line */
- INTER_DECLAREG(*pdst);
- INTER_DECLAREG(*psrc);
- INTER_DECLAREGP(bits);
- INTER_DECLAREGP(bits1);
- register int nlTemp;
-
- INTER_MROP_INITIALIZE (alu, planemask)
-
- psrcBase = (unsigned short *)tile->devPrivate.ptr;
- tileHeight = tile->drawable.height;
- tileWidth = tile->drawable.width;
- widthSrc = tile->devKind / (INTER_PGSZB * INTER_PLANES);
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- while (n--)
- {
- w = *pwidth++;
-
- /* set up source */
- modulus (ppt->x - xrot, tileWidth, srcx);
- modulus (ppt->y - yrot, tileHeight, srcy);
- xoffSrc = srcx & INTER_PIM;
- srcStart = srcx >> INTER_PGSH;
- psrcStart = psrcBase + (srcy * widthSrc) * INTER_PLANES;
- psrcLine = psrcStart + srcStart * INTER_PLANES;
-
- /* set up dest */
- xoffDst = ppt->x & INTER_PIM;
- pdstLine = pdstBase + (ppt->y * widthDst) +
- (ppt->x >> INTER_PGSH) * INTER_PLANES;
- /* set up masks */
- if (xoffDst + w < INTER_PPG)
- {
- INTER_maskpartialbits(ppt->x, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- }
- else
- {
- INTER_maskbits (ppt->x, w, startmask, endmask, nlMiddle)
- }
-
- if (xoffSrc == xoffDst)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- srcRemaining = widthSrc - srcStart;
- if (startmask)
- {
- INTER_MROP_MASK (psrc, pdst, startmask, pdst);
- INTER_NEXT_GROUP(pdst);
- IncSrcPtr
- }
- nlTemp = nlMiddle;
- while (nlTemp)
- {
- nl = nlTemp;
- if (nl > srcRemaining)
- nl = srcRemaining;
-
- nlTemp -= nl;
- srcRemaining -= nl;
-
- while (nl--) {
- INTER_MROP_SOLID (psrc, pdst, pdst);
- INTER_NEXT_GROUP(pdst); INTER_NEXT_GROUP(psrc);
- }
-
- if (!srcRemaining)
- {
- srcRemaining = widthSrc;
- psrc = psrcStart;
- }
- }
- if (endmask)
- {
- INTER_MROP_MASK (psrc, pdst, endmask, pdst);
- }
- }
- else
- {
- if (xoffSrc > xoffDst)
- {
- leftShift = (xoffSrc - xoffDst) << LEFTSHIFT_AMT;
- rightShift = INTER_PGSZ - leftShift;
- }
- else
- {
- rightShift = (xoffDst - xoffSrc) << LEFTSHIFT_AMT;
- leftShift = INTER_PGSZ - rightShift;
- }
- psrc = psrcLine;
- pdst = pdstLine;
- INTER_CLR(bits);
- srcRemaining = widthSrc - srcStart;
- if (xoffSrc > xoffDst)
- {
- INTER_COPY(psrc, bits);
- IncSrcPtr
- }
- if (startmask)
- {
- INTER_SCRLEFT(leftShift, bits, bits1);
- INTER_COPY(psrc, bits);
- IncSrcPtr
- INTER_MSKINSM(~0, 0, bits1, ~0, rightShift, bits, bits1);
- INTER_MROP_MASK(bits1, pdst, startmask, pdst);
- INTER_NEXT_GROUP(pdst);
- }
- nlTemp = nlMiddle;
- while (nlTemp)
- {
- nl = nlTemp;
- if (nl > srcRemaining)
- nl = srcRemaining;
-
- nlTemp -= nl;
- srcRemaining -= nl;
-
- while (nl--) {
- INTER_SCRLEFT(leftShift, bits, bits1);
- INTER_COPY(psrc, bits); INTER_NEXT_GROUP(psrc);
- INTER_MSKINSM(~0, 0, bits1, ~0, rightShift, bits, bits1);
- INTER_MROP_SOLID(bits1, pdst, pdst);
- INTER_NEXT_GROUP(pdst);
- }
-
- if (!srcRemaining)
- {
- srcRemaining = widthSrc;
- psrc = psrcStart;
- }
- }
-
- if (endmask)
- {
- INTER_SCRLEFT(leftShift, bits, bits1);
- if (endmask << rightShift)
- {
- INTER_COPY(psrc, bits);
- INTER_MSKINSM(~0, 0, bits1, ~0, rightShift, bits, bits1);
- }
- INTER_MROP_MASK (bits1, pdst, endmask, pdst);
- }
- }
- ppt++;
- }
-}
diff --git a/nx-X11/programs/Xserver/iplan2p4/iplwindow.c b/nx-X11/programs/Xserver/iplan2p4/iplwindow.c
deleted file mode 100644
index 511e753b3..000000000
--- a/nx-X11/programs/Xserver/iplan2p4/iplwindow.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplwindow.c,v 3.0tsi Exp $ */
-/* $XConsortium: iplwindow.c,v 5.22 94/04/17 20:29:07 dpw Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "ipl.h"
-#include "mistruct.h"
-#include "regionstr.h"
-#include "iplmskbits.h"
-
-extern WindowPtr *WindowTable;
-
-Bool
-iplCreateWindow(pWin)
- WindowPtr pWin;
-{
- iplPrivWin *pPrivWin;
-
- pPrivWin = iplGetWindowPrivate(pWin);
- pPrivWin->pRotatedBorder = NullPixmap;
- pPrivWin->pRotatedBackground = NullPixmap;
- pPrivWin->fastBackground = FALSE;
- pPrivWin->fastBorder = FALSE;
- pPrivWin->oldRotate.x = 0;
- pPrivWin->oldRotate.y = 0;
-
-#ifdef PIXMAP_PER_WINDOW
- /* Setup pointer to Screen pixmap */
- pWin->devPrivates[frameWindowPrivateIndex].ptr =
- (pointer) iplGetScreenPixmap(pWin->drawable.pScreen);
-#endif
-
- return TRUE;
-}
-
-Bool
-iplDestroyWindow(pWin)
- WindowPtr pWin;
-{
- iplPrivWin *pPrivWin;
-
- pPrivWin = iplGetWindowPrivate(pWin);
-
- if (pPrivWin->pRotatedBorder)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBorder);
- if (pPrivWin->pRotatedBackground)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBackground);
- return(TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-iplMapWindow(pWindow)
- WindowPtr pWindow;
-{
- return(TRUE);
-}
-
-/* (x, y) is the upper left corner of the window on the screen
- do we really need to pass this? (is it a;ready in pWin->absCorner?)
- we only do the rotation for pixmaps that are 32 bits wide (padded
-or otherwise.)
- iplChangeWindowAttributes() has already put a copy of the pixmap
-in pPrivWin->pRotated*
-*/
-/*ARGSUSED*/
-Bool
-iplPositionWindow(pWin, x, y)
- WindowPtr pWin;
- int x, y;
-{
- iplPrivWin *pPrivWin;
- int setxy = 0;
-
- pPrivWin = iplGetWindowPrivate(pWin);
- if (pWin->backgroundState == BackgroundPixmap && pPrivWin->fastBackground)
- {
- iplXRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- iplYRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- setxy = 1;
- }
-
- if (!pWin->borderIsPixel && pPrivWin->fastBorder)
- {
- while (pWin->backgroundState == ParentRelative)
- pWin = pWin->parent;
- iplXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- iplYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- setxy = 1;
- }
- if (setxy)
- {
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-iplUnmapWindow(pWindow)
- WindowPtr pWindow;
-{
- return (TRUE);
-}
-
-/* UNCLEAN!
- this code calls the bitblt helper code directly.
-
- iplCopyWindow copies only the parts of the destination that are
-visible in the source.
-*/
-
-
-void
-iplCopyWindow(pWin, ptOldOrg, prgnSrc)
- WindowPtr pWin;
- DDXPointRec ptOldOrg;
- RegionPtr prgnSrc;
-{
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- RegionRec rgnDst;
- register BoxPtr pbox;
- register int dx, dy;
- register int i, nbox;
- WindowPtr pwinRoot;
-
- pwinRoot = WindowTable[pWin->drawable.pScreen->myNum];
-
- REGION_NULL(pWin->drawable.pScreen, &rgnDst);
-
- dx = ptOldOrg.x - pWin->drawable.x;
- dy = ptOldOrg.y - pWin->drawable.y;
- REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, -dx, -dy);
- REGION_INTERSECT(pWin->drawable.pScreen, &rgnDst, &pWin->borderClip, prgnSrc);
-
- pbox = REGION_RECTS(&rgnDst);
- nbox = REGION_NUM_RECTS(&rgnDst);
- if(!nbox || !(pptSrc = (DDXPointPtr )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec))))
- {
- REGION_UNINIT(pWin->drawable.pScreen, &rgnDst);
- return;
- }
- ppt = pptSrc;
-
- for (i = nbox; --i >= 0; ppt++, pbox++)
- {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- iplDoBitbltCopy((DrawablePtr)pwinRoot, (DrawablePtr)pwinRoot,
- GXcopy, &rgnDst, pptSrc, ~0L);
- DEALLOCATE_LOCAL(pptSrc);
- REGION_UNINIT(pWin->drawable.pScreen, &rgnDst);
-}
-
-
-
-/* swap in correct PaintWindow* routine. If we can use a fast output
-routine (i.e. the pixmap is paddable to 32 bits), also pre-rotate a copy
-of it in devPrivates[iplWindowPrivateIndex].ptr.
-*/
-Bool
-iplChangeWindowAttributes(pWin, mask)
- WindowPtr pWin;
- unsigned long mask;
-{
- register unsigned long index;
- register iplPrivWin *pPrivWin;
- int width;
- WindowPtr pBgWin;
-
- pPrivWin = iplGetWindowPrivate(pWin);
-
- /*
- * When background state changes from ParentRelative and
- * we had previously rotated the fast border pixmap to match
- * the parent relative origin, rerotate to match window
- */
- if (mask & (CWBackPixmap | CWBackPixel) &&
- pWin->backgroundState != ParentRelative &&
- pPrivWin->fastBorder &&
- (pPrivWin->oldRotate.x != pWin->drawable.x ||
- pPrivWin->oldRotate.y != pWin->drawable.y))
- {
- iplXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- iplYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- while(mask)
- {
- index = lowbit (mask);
- mask &= ~index;
- switch(index)
- {
- case CWBackPixmap:
- if (pWin->backgroundState == None)
- {
- pPrivWin->fastBackground = FALSE;
- }
- else if (pWin->backgroundState == ParentRelative)
- {
- pPrivWin->fastBackground = FALSE;
- /* Rotate border to match parent origin */
- if (pPrivWin->pRotatedBorder) {
- for (pBgWin = pWin->parent;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- iplXRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.x - pPrivWin->oldRotate.x);
- iplYRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- }
- }
- else if (((width = (pWin->background.pixmap->drawable.width))
- <= INTER_PGSZ) && !(width & (width - 1)))
- {
- iplCopyRotatePixmap(pWin->background.pixmap,
- &pPrivWin->pRotatedBackground,
- pWin->drawable.x,
- pWin->drawable.y);
- if (pPrivWin->pRotatedBackground)
- {
- pPrivWin->fastBackground = TRUE;
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- else
- {
- pPrivWin->fastBackground = FALSE;
- }
- }
- else
- {
- pPrivWin->fastBackground = FALSE;
- }
- break;
-
- case CWBackPixel:
- pPrivWin->fastBackground = FALSE;
- break;
-
- case CWBorderPixmap:
- if (((width = (pWin->border.pixmap->drawable.width)) <= INTER_PGSZ) &&
- !(width & (width - 1)))
- {
- for (pBgWin = pWin;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- iplCopyRotatePixmap(pWin->border.pixmap,
- &pPrivWin->pRotatedBorder,
- pBgWin->drawable.x,
- pBgWin->drawable.y);
- if (pPrivWin->pRotatedBorder)
- {
- pPrivWin->fastBorder = TRUE;
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- }
- else
- {
- pPrivWin->fastBorder = FALSE;
- }
- }
- else
- {
- pPrivWin->fastBorder = FALSE;
- }
- break;
- case CWBorderPixel:
- pPrivWin->fastBorder = FALSE;
- break;
- }
- }
- return (TRUE);
-}
-
diff --git a/nx-X11/programs/Xserver/iplan2p8/Imakefile b/nx-X11/programs/Xserver/iplan2p8/Imakefile
deleted file mode 100644
index d7b3bdf54..000000000
--- a/nx-X11/programs/Xserver/iplan2p8/Imakefile
+++ /dev/null
@@ -1,6 +0,0 @@
-XCOMM $XFree86$
-XCOMM $XConsortium: Imakefile,v 1.1 91/12/28 13:32:27 rws Exp $
-#define IPlanes 8
-#define LinkDirectory ../iplan2p4
-
-#include "../iplan2p4/Imakefile"
diff --git a/nx-X11/programs/Xserver/lbx/Imakefile b/nx-X11/programs/Xserver/lbx/Imakefile
deleted file mode 100644
index 22749d72e..000000000
--- a/nx-X11/programs/Xserver/lbx/Imakefile
+++ /dev/null
@@ -1,56 +0,0 @@
-/* $Xorg: Imakefile,v 1.3 2000/08/17 19:53:31 cpqbld Exp $
- *
- * $NCDXorg: @(#)Imakefile,v 1.16 1994/11/18 20:32:34 lemke Exp $
- *
- * Copyright 1992 Network Computing Devices
- *
- * 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, and that the name of NCD. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. NCD. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Keith Packard, Network Computing Devices
- */
-/* $XFree86: xc/programs/Xserver/lbx/Imakefile,v 1.4 2001/01/17 22:36:59 dawes Exp $ */
-
-#include <Server.tmpl>
-
-#ifdef NCD
-INCLUDES = \
- -I$(EXTENSIONSRC)/include/lbx \
- -I$(EXTENSIONSRC)/include \
- -I$(EXTENSIONSRC)/lbxcommon/delta \
- -I$(XINCLUDESRC) \
- -I$(FONTSRC)/include \
- -I$(SERVERSRC)/include
-#else
-INCLUDES = -I$(TOP)/include -I$(TOP)/include/fonts -I$(SERVERSRC)/include -I$(EXTINCSRC) -I../../../include/extensions
-#endif
-
-SRCS = \
- lbxmain.c lbxdix.c lbxtags.c lbxprop.c lbxgfx.c lbxtables.c \
- lbxswap.c lbxsquish.c lbxexts.c lbxopts.c lbxzerorep.c lbxcmap.c
-
-
-OBJS = \
- lbxmain.o lbxdix.o lbxtags.o lbxprop.o lbxgfx.o lbxtables.o \
- lbxswap.o lbxsquish.o lbxexts.o lbxopts.o lbxzerorep.o lbxcmap.o
-
-NormalLibraryObjectRule()
-NormalLibraryTarget(lbx,$(OBJS))
-LintLibraryTarget(lbx,$(SRCS))
-NormalLintTarget($(SRCS))
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/lbx/lbxcmap.c b/nx-X11/programs/Xserver/lbx/lbxcmap.c
deleted file mode 100644
index 3ae598bc6..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxcmap.c
+++ /dev/null
@@ -1,1156 +0,0 @@
-/* $Xorg: lbxcmap.c,v 1.4 2001/02/09 02:05:16 xorgcvs Exp $ */
-
-/*
-Copyright 1996, 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.
-*/
-/* $XFree86: xc/programs/Xserver/lbx/lbxcmap.c,v 1.9 2001/08/23 14:46:57 alanh Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <sys/types.h>
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include <X11/Xos.h>
-#include "misc.h"
-#include "os.h"
-#include "dixstruct.h"
-#include "resource.h"
-#include "scrnintstr.h"
-#include "colormapst.h"
-#include "propertyst.h"
-#define _XLBX_SERVER_
-#include <X11/extensions/lbxstr.h>
-#include "lbxserve.h"
-#include <X11/Xfuncproto.h>
-#include <stdio.h>
-
-static int lbxScreenPrivIndex; /* lbx screen private index */
-static int lbxColormapPrivIndex; /* lbx colormap private index */
-
-typedef struct { /* lbx screen private */
- CreateColormapProcPtr CreateColormap;
- DestroyColormapProcPtr DestroyColormap;
- CloseScreenProcPtr CloseScreen;
-} LbxScreenPriv;
-
-typedef struct _LbxStalled {
- XID id;
- struct _LbxStalled *next;
-} LbxStalled;
-
-typedef struct _LbxColormapPriv { /* lbx colormap private */
- char grab_status;
- char smart_grab;
- LbxProxyPtr grabber;
- int last_grabber; /* uid, not pid */
- LbxStalled *stalled_clients;
- ColormapPtr next; /* proxy chain */
-} LbxColormapPriv;
-
-#define CMAP_NOT_GRABBED 0
-#define CMAP_GRABBED 1
-#define CMAP_WAITING_FOR_UNGRAB 2
-
-static int LbxUnstallClient(pointer data, XID id);
-
-static RESTYPE StalledResType;
-
-/*
- * Initialize the fields in the colormap private allocated for LBX.
- */
-
-static LbxColormapPriv *
-LbxColormapPrivInit (ColormapPtr pmap)
-{
- LbxColormapPriv *cmapPriv;
-
- cmapPriv = (LbxColormapPriv *) xalloc (sizeof (LbxColormapPriv));
- if (!cmapPriv)
- return cmapPriv;
-
- pmap->devPrivates[lbxColormapPrivIndex].ptr = (pointer) cmapPriv;
-
- cmapPriv->grab_status = CMAP_NOT_GRABBED;
- cmapPriv->grabber = NULL;
- cmapPriv->last_grabber = 0;
- cmapPriv->smart_grab = FALSE;
- cmapPriv->stalled_clients = NULL;
- cmapPriv->next = NULL;
-
- return cmapPriv;
-}
-
-
-static int
-LbxDefCmapPrivInit (ColormapPtr pmap, int index)
-{
-#if 0
- /* BUG: You can't do that. lbxColormapPrivIndex hasn't
- been initialized yet. */
- pmap->devPrivates[lbxColormapPrivIndex].ptr = NULL;
-#endif
- return 1;
-}
-
-static Bool
-LbxCreateColormap (ColormapPtr pmap)
-{
- ScreenPtr pScreen = pmap->pScreen;
- Bool ret;
-
- pScreen->CreateColormap = ((LbxScreenPriv *) (pScreen->devPrivates[
- lbxScreenPrivIndex].ptr))->CreateColormap;
-
- pmap->devPrivates[lbxColormapPrivIndex].ptr = NULL;
- ret = (*pScreen->CreateColormap) (pmap);
-
- pScreen->CreateColormap = LbxCreateColormap;
-
- return ret;
-}
-
-static void
-LbxDestroyColormap (ColormapPtr pmap)
-{
- ScreenPtr pScreen = pmap->pScreen;
-
- LbxReleaseCmap(pmap, FALSE);
- pScreen->DestroyColormap = ((LbxScreenPriv *) (pScreen->devPrivates[
- lbxScreenPrivIndex].ptr))->DestroyColormap;
- (*pScreen->DestroyColormap) (pmap);
- if (pmap->devPrivates && pmap->devPrivates[lbxColormapPrivIndex].ptr)
- xfree(pmap->devPrivates[lbxColormapPrivIndex].ptr);
- pScreen->DestroyColormap = LbxDestroyColormap;
-}
-
-static Bool
-LbxCloseScreen(int i, ScreenPtr pScreen)
-{
- LbxScreenPriv* pLbxScrPriv = ((LbxScreenPriv *)
- (pScreen->devPrivates[lbxScreenPrivIndex].ptr));
-
- pScreen->CloseScreen = pLbxScrPriv->CloseScreen;
-
- xfree(pScreen->devPrivates[lbxScreenPrivIndex].ptr);
- pScreen->devPrivates[lbxScreenPrivIndex].ptr = NULL;
-
- return pScreen->CloseScreen(i, pScreen);
-}
-
-/*
- * Initialize LBX colormap private.
- */
-
-int
-LbxCmapInit (void)
-
-{
- LbxScreenPriv *pScreenPriv;
- ColormapPtr defMap;
- ScreenPtr pScreen;
- int i;
-
- StalledResType = CreateNewResourceType(LbxUnstallClient);
-
- lbxScreenPrivIndex = AllocateScreenPrivateIndex ();
- if (lbxScreenPrivIndex < 0)
- return 0;
-
- lbxColormapPrivIndex = AllocateColormapPrivateIndex (LbxDefCmapPrivInit);
- if (lbxColormapPrivIndex < 0)
- return 0;
-
- for (i = 0; i < screenInfo.numScreens; i++)
- {
- pScreen = screenInfo.screens[i];
-
- defMap = (ColormapPtr) LookupIDByType(
- pScreen->defColormap, RT_COLORMAP);
-
- /* now lbxColormapPrivIndex exists */
- defMap->devPrivates[lbxColormapPrivIndex].ptr = NULL;
-
- pScreenPriv = (LbxScreenPriv *) xalloc (sizeof (LbxScreenPriv));
- if (!pScreenPriv)
- return 0;
-
- pScreenPriv->CreateColormap = pScreen->CreateColormap;
- pScreen->CreateColormap = LbxCreateColormap;
- pScreenPriv->DestroyColormap = pScreen->DestroyColormap;
- pScreen->DestroyColormap = LbxDestroyColormap;
- pScreenPriv->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = LbxCloseScreen;
- pScreen->devPrivates[lbxScreenPrivIndex].ptr = (pointer) pScreenPriv;
- }
-
- return 1;
-}
-
-/*
- * Return the number of allocated cells in the PSEUDO colormap.
- */
-
-static int
-NumAllocatedCells (EntryPtr pent,
- int size)
-{
- Pixel pixel;
- int count = 0;
-
- for (pixel = 0; pixel < size; pixel++)
- {
- if (pent[pixel].refcnt != 0 && pent[pixel].refcnt != AllocTemporary)
- count++;
- }
-
- return count;
-}
-
-#define NUMRED(vis) ((vis->redMask >> vis->offsetRed) + 1)
-#define NUMGREEN(vis) ((vis->greenMask >> vis->offsetGreen) + 1)
-#define NUMBLUE(vis) ((vis->blueMask >> vis->offsetBlue) + 1)
-
-#define PIX_OUT(ptr,is2,val) \
- if (is2) *ptr++ = (val) >> 8; \
- *ptr++ = (val)
-#define RGB_OUT(ptr,is2,shift,val) \
- *ptr++ = (val) >> shift; \
- if (is2) *ptr++ = (val)
-
-/*
- * Return the list of allocated cells in the channel in
- * the format required by LbxGrabCmapReply.
- */
-
-static CARD8 *
-OutputChannel(ColormapPtr pmap,
- EntryPtr chan,
- int size,
- CARD8 *ptr,
- CARD8 flags,
- CARD8 channels)
-{
- Bool px2;
- Bool rgb2;
- int shift;
- int rgb_sz;
- Pixel pixel;
- EntryPtr pent;
- CARD8 *pixel_private_range_ptr = NULL;
- CARD8 *pixel_shared_range_ptr = NULL;
- int allocpriv;
-
- px2 = (flags & LBX_2BYTE_PIXELS) != 0;
- rgb2 = (flags & LBX_RGB_BITS_MASK) > 7;
- if (rgb2)
- shift = 8;
- else
- shift = 15 - (flags & LBX_RGB_BITS_MASK);
- rgb_sz = rgb2 + 1;
- if (channels == (DoRed|DoGreen|DoBlue))
- rgb_sz *= 3;
- /* kinda gross, but ddxen use AllocAll on static maps */
- allocpriv = (pmap->pVisual->class & DynamicClass) ? AllocPrivate : 0;
- for (pixel = 0; pixel < size; pixel++)
- {
- pent = (EntryPtr) &chan[pixel];
-
- if (pent->refcnt == 0 || pent->refcnt == AllocTemporary)
- {
- /*
- * A free pixel. This disrupts all ranges.
- */
-
- pixel_private_range_ptr = pixel_shared_range_ptr = NULL;
-
- continue;
- }
- else if (pent->refcnt == allocpriv)
- {
- /*
- * A private pixel. This disrupts any PIXEL_SHARED_RANGE.
- */
-
- pixel_shared_range_ptr = NULL;
-
- if (!pixel_private_range_ptr)
- {
- pixel_private_range_ptr = ptr;
-
- *ptr++ = LBX_PIXEL_PRIVATE;
- PIX_OUT(ptr, px2, pixel);
- }
- else
- {
- CARD8 *pos = pixel_private_range_ptr + 2 + px2;
- if (*pixel_private_range_ptr == LBX_PIXEL_PRIVATE) {
- *pixel_private_range_ptr = LBX_PIXEL_RANGE_PRIVATE;
- ptr += 1 + px2;
- }
- PIX_OUT(pos, px2, pixel);
- }
- }
- else
- {
- /*
- * A shared pixel. This disrupts any PIXEL_PRIVATE_RANGE.
- */
-
- pixel_private_range_ptr = NULL;
-
- if (!pixel_shared_range_ptr)
- {
- pixel_shared_range_ptr = ptr;
-
- *ptr++ = LBX_PIXEL_SHARED;
- PIX_OUT(ptr, px2, pixel);
- }
- else
- {
- CARD8 *pos = pixel_shared_range_ptr + 2 + px2;
- if (*pixel_shared_range_ptr == LBX_PIXEL_SHARED)
- {
- *pixel_shared_range_ptr = LBX_PIXEL_RANGE_SHARED;
- memmove (pos + 1 + px2, pos, rgb_sz);
- ptr += 1 + px2;
- }
- PIX_OUT(pos, px2, pixel);
- }
-
- if (channels & DoRed) {
- RGB_OUT(ptr, rgb2, shift, pent->co.local.red);
- }
- if (channels & DoGreen) {
- RGB_OUT(ptr, rgb2, shift, pent->co.local.green);
- }
- if (channels & DoBlue) {
- RGB_OUT(ptr, rgb2, shift, pent->co.local.blue);
- }
- }
- }
- return ptr;
-}
-
-static void
-GetAllocatedCells (ColormapPtr pmap,
- CARD8 *flags,
- CARD8 *buf,
- int *bytes)
-{
- CARD8 *ptr;
-
- *flags = pmap->pVisual->bitsPerRGBValue - 1;
- if (pmap->pVisual->ColormapEntries > 256)
- *flags |= LBX_2BYTE_PIXELS;
- if (!(pmap->pVisual->class & DynamicClass))
- *flags |= LBX_AUTO_RELEASE;
- if ((pmap->pVisual->class | DynamicClass) == DirectColor) {
- *flags |= LBX_3CHANNELS;
- ptr = OutputChannel(pmap, pmap->red, NUMRED(pmap->pVisual),
- buf, *flags, DoRed);
- *ptr++ = LBX_NEXT_CHANNEL;
- ptr = OutputChannel(pmap, pmap->green, NUMGREEN(pmap->pVisual),
- ptr, *flags, DoGreen);
- *ptr++ = LBX_NEXT_CHANNEL;
- ptr = OutputChannel(pmap, pmap->blue, NUMBLUE(pmap->pVisual),
- ptr, *flags, DoBlue);
- } else
- ptr = OutputChannel(pmap, pmap->red, pmap->pVisual->ColormapEntries,
- buf, *flags, DoRed|DoGreen|DoBlue);
- *ptr++ = LBX_LIST_END;
- *bytes = ptr - buf;
-}
-
-
-/*
- * Send an LbxReleaseCmapEvent to a proxy.
- */
-
-static void
-SendReleaseCmapEvent (LbxProxyPtr proxy,
- Colormap cmap)
-{
- xLbxReleaseCmapEvent ev;
- ClientPtr client;
- LbxClientPtr lbxcp;
- int n;
-
- lbxcp = proxy->lbxClients[0];
-
- if (lbxcp && (client = lbxcp->client))
- {
- ev.type = LbxEventCode;
- ev.lbxType = LbxReleaseCmapEvent;
- ev.sequenceNumber = client->sequence;
- ev.colormap = cmap;
- ev.pad1 = ev.pad2 = ev.pad3 = ev.pad4 = ev.pad5 = ev.pad6 = 0;
-
- if (client->swapped)
- {
- swaps(&ev.sequenceNumber, n);
- swapl(&ev.colormap, n);
- }
-
- WriteToClient(client, sz_xLbxReleaseCmapEvent, (char *) &ev);
- LbxForceOutput(proxy);
-
-#ifdef COLOR_DEBUG
- fprintf (stderr,
- "Sent LbxReleaseCmapEvent to proxy %d, seq = 0x%x, cmap = 0x%x\n",
- proxy->pid, client->sequence, cmap);
-#endif
- }
-}
-
-
-/*
- * WaitForServerCmapControl checks if the colormap is grabbed by a proxy,
- * and if so, sends an LbxReleaseCmapEvent to the proxy. It then suspends
- * the current request until the server gets the ReleaseCmap message from
- * the proxy.
- */
-
-static Bool
-WaitForServerCmapControl (ClientPtr client,
- ColormapPtr pmap)
-{
- LbxColormapPriv *cmapPriv = (LbxColormapPriv *)
- (pmap->devPrivates[lbxColormapPrivIndex].ptr);
- LbxStalled *stalled;
-
- if (cmapPriv->grab_status == CMAP_GRABBED)
- {
- /*
- * Send an LbxReleaseCmapEvent to the proxy that has the grab.
- */
-
- SendReleaseCmapEvent (cmapPriv->grabber, pmap->mid);
- cmapPriv->grab_status = CMAP_WAITING_FOR_UNGRAB;
- }
-
- stalled = (LbxStalled *)xalloc(sizeof(LbxStalled));
- if (!stalled)
- return FALSE;
- stalled->id = FakeClientID(client->index);
- stalled->next = cmapPriv->stalled_clients;
- cmapPriv->stalled_clients = stalled;
- return AddResource(stalled->id, StalledResType, (pointer)cmapPriv);
-}
-
-
-/*
- * When the X server gets any of the requests that allocate color cells,
- * it calls LbxCheckColorRequest on the request. This function will check
- * if the colormap is grabbed by a proxy, and if so, will suspend the
- * current request and wait for the proxy to release the colormap.
- */
-
-Bool
-LbxCheckColorRequest (ClientPtr client,
- ColormapPtr pmap,
- xReq *req)
-{
- LbxColormapPriv *cmapPriv = (LbxColormapPriv *)
- (pmap->devPrivates[lbxColormapPrivIndex].ptr);
-
- if (!cmapPriv)
- return FALSE;
-
- if (cmapPriv->grab_status != CMAP_NOT_GRABBED)
- {
- /*
- * The colormap is grabbed by a proxy. Reset this request, and
- * process it after the server gets back control of the colormap.
- * Before we reset the request, we must put it back in the
- * client's byte order.
- */
-
- if (!WaitForServerCmapControl (client, pmap))
- return FALSE;
-
- if (client->swapped)
- {
- register int n;
-
- switch (req->reqType)
- {
- case X_AllocColor:
- {
- xAllocColorReq *stuff = (xAllocColorReq *) req;
- swaps(&stuff->length, n);
- swapl(&stuff->cmap, n);
- swaps(&stuff->red, n);
- swaps(&stuff->green, n);
- swaps(&stuff->blue, n);
- break;
- }
- case X_AllocNamedColor:
- {
- xAllocNamedColorReq *stuff = (xAllocNamedColorReq *) req;
- swaps(&stuff->length, n);
- swapl(&stuff->cmap, n);
- swaps(&stuff->nbytes, n);
- break;
- }
- case X_AllocColorCells:
- {
- xAllocColorCellsReq *stuff = (xAllocColorCellsReq *) req;
- swaps(&stuff->length, n);
- swapl(&stuff->cmap, n);
- swaps(&stuff->colors, n);
- swaps(&stuff->planes, n);
- break;
- }
- case X_AllocColorPlanes:
- {
- xAllocColorPlanesReq *stuff = (xAllocColorPlanesReq *) req;
- swaps(&stuff->length, n);
- swapl(&stuff->cmap, n);
- swaps(&stuff->colors, n);
- swaps(&stuff->red, n);
- swaps(&stuff->green, n);
- swaps(&stuff->blue, n);
- break;
- }
- default:
- break;
- }
- }
-
- ResetCurrentRequest(client);
- client->sequence--;
- IgnoreClient(client);
-
- return TRUE;
- }
-
- if (!LbxClient(client) ||
- LbxProxy(client)->uid != cmapPriv->last_grabber)
- {
- /*
- * Next time the proxy for this client does a colormap grab, it
- * will have to get the colormap state (a non-smart grab).
- */
-
- cmapPriv->smart_grab = FALSE;
- }
-
- return FALSE;
-}
-
-static Bool
-LbxGrabbedByClient (ClientPtr client,
- ColormapPtr pmap)
-{
- LbxColormapPriv *cmapPriv = (LbxColormapPriv *)
- (pmap->devPrivates[lbxColormapPrivIndex].ptr);
- return (cmapPriv &&
- (cmapPriv->grab_status != CMAP_NOT_GRABBED) &&
- (cmapPriv->grabber == LbxProxy(client)));
-}
-
-/*
- * Check if a colormap is grabbed by a proxy.
- */
-
-int
-LbxCheckCmapGrabbed (ColormapPtr pmap)
-{
- LbxColormapPriv *cmapPriv = (LbxColormapPriv *)
- (pmap->devPrivates[lbxColormapPrivIndex].ptr);
-
- return (cmapPriv && (cmapPriv->grab_status == CMAP_GRABBED));
-}
-
-
-/*
- * Disable a smart grab on the specified colormap.
- */
-
-void
-LbxDisableSmartGrab (ColormapPtr pmap)
-{
- LbxColormapPriv *cmapPriv = (LbxColormapPriv *)
- (pmap->devPrivates[lbxColormapPrivIndex].ptr);
-
- if (cmapPriv)
- cmapPriv->smart_grab = FALSE;
-}
-
-
-/*
- * Send an LbxFreeCellsEvent to the specified proxy.
- */
-
-static void
-SendFreeCellsEvent (LbxProxyPtr proxy,
- Colormap cmap,
- Pixel pixel_start,
- Pixel pixel_end)
-{
- xLbxFreeCellsEvent ev;
- ClientPtr client;
- LbxClientPtr lbxcp;
- int n;
-
- lbxcp = proxy->lbxClients[0];
-
- if (lbxcp && (client = lbxcp->client))
- {
- ev.type = LbxEventCode;
- ev.lbxType = LbxFreeCellsEvent;
- ev.sequenceNumber = client->sequence;
- ev.colormap = cmap;
- ev.pixelStart = pixel_start;
- ev.pixelEnd = pixel_end;
- ev.pad1 = ev.pad2 = ev.pad3 = ev.pad4 = 0;
-
- if (client->swapped)
- {
- swaps(&ev.sequenceNumber, n);
- swapl(&ev.colormap, n);
- swapl(&ev.pixelStart, n);
- swapl(&ev.pixelEnd, n);
- }
-
- WriteToClient(client, sz_xLbxFreeCellsEvent, (char *) &ev);
- LbxForceOutput(proxy);
-#ifdef COLOR_DEBUG
- fprintf (stderr, "Sent LbxFreeCellsEvent to proxy %d, seq = 0x%x\n",
- proxy->pid, client->sequence);
- fprintf (stderr, " cmap = 0x%x, pixelStart = %d, pixelEnd = %d\n",
- cmap, pixel_start, pixel_end);
-#endif
- }
-}
-
-/* XXX use of globals like this is gross */
-static long pixel_start;
-static long pixel_end;
-
-
-/*
- * LbxFreeCellsEvent generation functions.
- */
-
-/*ARGSUSED*/
-void
-LbxBeginFreeCellsEvent (ColormapPtr pmap)
-{
- pixel_start = -1;
- pixel_end = -1;
-}
-
-
-void
-LbxAddFreeCellToEvent (ColormapPtr pmap,
- Pixel pixel)
-{
- /*
- * We must notify the proxy that has this colormap
- * grabbed which cells are being freed (their refcount
- * has reached zero).
- */
-
- if (pixel_start == -1)
- pixel_start = pixel;
- else
- {
- if (pixel_end == -1)
- pixel_end = pixel;
- else
- {
- if (pixel_end + 1 == pixel)
- pixel_end = pixel;
- else if (pixel > pixel_end + 1)
- {
- LbxColormapPriv *cmapPriv = (LbxColormapPriv *)
- (pmap->devPrivates[lbxColormapPrivIndex].ptr);
-
- SendFreeCellsEvent (cmapPriv->grabber,
- pmap->mid, pixel_start, pixel_end);
-
- pixel_start = pixel;
- pixel_end = -1;
- }
- }
- }
-}
-
-void
-LbxEndFreeCellsEvent (ColormapPtr pmap)
-{
- /*
- * Check if there is an LbxFreeCellEvent we need to write.
- */
-
- if (pixel_start != -1)
- {
- LbxColormapPriv *cmapPriv = (LbxColormapPriv *)
- (pmap->devPrivates[lbxColormapPrivIndex].ptr);
-
- SendFreeCellsEvent (cmapPriv->grabber,
- pmap->mid, pixel_start,
- pixel_end == -1 ? pixel_start : pixel_end);
- }
-}
-
-
-/*
- * Sort the specified pixel list. This optimizes generation
- * of LbxFreeCellsEvent.
- */
-
-void
-LbxSortPixelList (Pixel *pixels,
- int count)
-{
- int i, j;
-
- for (i = 0; i <= count - 2; i++)
- for (j = count - 1; j > i; j--)
- if (pixels[j - 1] > pixels[j])
- {
- Pixel temp = pixels[j - 1];
- pixels[j - 1] = pixels[j];
- pixels[j] = temp;
- }
-}
-
-
-/*
- * Handle a colormap grab request from a proxy.
- */
-
-int
-ProcLbxGrabCmap(ClientPtr client)
-{
- REQUEST(xLbxGrabCmapReq);
- xLbxGrabCmapReply *reply;
- Bool smartGrab;
- LbxColormapPriv *cmapPriv;
- ColormapPtr pmap;
- int bytes, n;
- LbxProxyPtr proxy = LbxProxy(client);
-
- client->sequence--; /* not a counted request */
-
- pmap = (ColormapPtr) SecurityLookupIDByType (client, stuff->cmap,
- RT_COLORMAP,
- SecurityWriteAccess);
-
- if (!pmap)
- {
- client->errorValue = stuff->cmap;
- return BadColor;
- }
-
- cmapPriv = (LbxColormapPriv *)
- (pmap->devPrivates[lbxColormapPrivIndex].ptr);
- if (!cmapPriv)
- {
- cmapPriv = LbxColormapPrivInit (pmap);
- if (!cmapPriv)
- return BadAlloc;
- }
-
-
- /*
- * We have a SMART GRAB if since this proxy last ungrabbed the
- * colormap, no color cell was alloc'd by an entity other than
- * this proxy (this includes other proxies as well as clients
- * directly connected to the X server without a proxy).
- *
- * We want to optimize this special case because a proxy may give
- * up a grab because it got a request that it could not handle
- * (e.g. AllocNamedColor or LookupColor). When it asks back for
- * the grab, there is no need for the server to send the colormap
- * state, because the proxy is already up to date on the state of
- * the colormap.
- *
- * In order for this to work, the following assumptions are made
- * about the proxy:
- *
- * - the proxy is kept up to date on all cell allocations made on its
- * behalf resulting from the following requests: AllocNamedColor,
- * AllocColorCells, AllocColorPlanes
- * - the proxy is kept up to date on all cells freed by any client
- * via the LbxFreeCell event.
- */
-
- /* if proxy is this confused, give it full info */
- if (cmapPriv->grab_status == CMAP_GRABBED && cmapPriv->grabber == proxy)
- LbxReleaseCmap(pmap, FALSE);
-
- if (proxy->uid != cmapPriv->last_grabber)
- cmapPriv->smart_grab = FALSE;
- smartGrab = cmapPriv->smart_grab;
-
-#ifdef COLOR_DEBUG
- fprintf (stderr, "\nGot colormap grab request, ");
- fprintf (stderr, "seq = 0x%x, proxy = %d, client = %d, cmap = 0x%x\n",
- client->sequence, proxy->pid, client->index, stuff->cmap);
-
- if (cmapPriv->grab_status == CMAP_NOT_GRABBED)
- {
- fprintf (stderr, "cmap 0x%x is not grabbed by any proxy\n",
- stuff->cmap);
- if (smartGrab)
- fprintf (stderr, "This is a smart grab\n");
- }
- else if (cmapPriv->grab_status == CMAP_GRABBED)
- {
- if (cmapPriv->grabber == proxy)
- {
- fprintf (stderr, "cmap 0x%x is already grabbed by proxy %d\n",
- stuff->cmap, proxy->pid);
- }
- else
- {
- fprintf (stderr, "cmap 0x%x is currently grabbed by proxy %d\n",
- stuff->cmap, cmapPriv->grabber->pid);
- }
- }
- else if (cmapPriv->grab_status == CMAP_WAITING_FOR_UNGRAB)
- {
- fprintf (stderr,
- "Already waiting for cmap 0x%x to be ungrabbed by proxy %d\n",
- stuff->cmap, cmapPriv->grabber->pid);
- }
-#endif
-
- if (cmapPriv->grab_status != CMAP_NOT_GRABBED &&
- cmapPriv->grabber != proxy)
- {
- /*
- * The colormap is grabbed by a proxy other than the one that
- * is requesting this grab. Reset this grab request, and process
- * it after the server gets back control of the colormap. Before
- * we reset the request, we must put it back in the client's byte
- * order.
- */
-
- if (!WaitForServerCmapControl (client, pmap))
- return BadAlloc;
-
- if (client->swapped)
- {
- swaps(&stuff->length, n);
- swapl(&stuff->cmap, n);
- }
-
- ResetCurrentRequest(client);
- IgnoreClient(client);
-
- return Success;
- }
-
- if (pmap->pVisual->class & DynamicClass) {
- cmapPriv->grabber = proxy;
- cmapPriv->grab_status = CMAP_GRABBED;
- cmapPriv->next = proxy->grabbedCmaps;
- proxy->grabbedCmaps = pmap;
- } else
- smartGrab = FALSE;
-
- /*
- * For an smart grab (see comments above), there is no information
- * sent about the colormap cells because the proxy is all up to date.
- * Otherwise, the server sends the proxy the state of all allocated
- * cells in the colormap. All cells not specified are assumed free.
- */
-
- bytes = 0;
- if (!smartGrab) {
- if ((pmap->pVisual->class | DynamicClass) == DirectColor) {
- bytes = NumAllocatedCells(pmap->red,
- NUMRED(pmap->pVisual)) * 9;
- bytes += NumAllocatedCells(pmap->green,
- NUMGREEN(pmap->pVisual)) * 9;
- bytes += NumAllocatedCells(pmap->blue,
- NUMBLUE(pmap->pVisual)) * 9;
- bytes += 2;
- } else
- bytes = NumAllocatedCells(pmap->red,
- pmap->pVisual->ColormapEntries) * 9;
- }
- bytes += sz_xLbxGrabCmapReply + 1;
- reply = (xLbxGrabCmapReply *) xalloc (bytes);
- bzero (reply, sz_xLbxGrabCmapReply);
-
- if (smartGrab)
- {
- reply->flags = LBX_SMART_GRAB;
- reply->length = 0;
- }
- else
- {
- GetAllocatedCells (pmap, &reply->flags,
- (CARD8 *) reply + sz_xLbxGrabCmapReplyHdr, &bytes);
- if (bytes <= (sz_xLbxGrabCmapReply - sz_xLbxGrabCmapReplyHdr))
- reply->length = 0;
- else
- reply->length = (sz_xLbxGrabCmapReplyHdr +
- bytes - sz_xLbxGrabCmapReply + 3) >> 2;
- }
-
- reply->type = X_Reply;
- reply->sequenceNumber = client->sequence;
-
- bytes = sz_xLbxGrabCmapReply + (reply->length << 2);
-
- if (client->swapped)
- {
- register char n;
-
- swaps (&reply->sequenceNumber, n);
- swapl (&reply->length, n);
- }
-
- WriteToClient (client, bytes, (char *)reply);
-
- xfree (reply);
-
- return (client->noClientException);
-}
-
-static int
-LbxUnstallClient(pointer data,
- XID id)
-{
- LbxColormapPriv *cmapPriv = (LbxColormapPriv *)data;
- LbxStalled **prev;
- ClientPtr client;
-
- for (prev = &cmapPriv->stalled_clients; *prev && (*prev)->id != id; )
- prev = &(*prev)->next;
- *prev = (*prev)->next;
- client = clients[CLIENT_ID(id)];
- if (!client->clientGone)
- AttendClient(client);
- return 0;
-}
-
-void
-LbxReleaseCmap(ColormapPtr pmap,
- Bool smart)
-{
- LbxColormapPriv *cmapPriv;
- ColormapPtr *prev;
-
- if (!pmap->devPrivates)
- return;
- cmapPriv = (LbxColormapPriv *)
- (pmap->devPrivates[lbxColormapPrivIndex].ptr);
- if (!cmapPriv || (cmapPriv->grab_status == CMAP_NOT_GRABBED))
- return;
-
- for (prev = &cmapPriv->grabber->grabbedCmaps; *prev && *prev != pmap; )
- prev = &((LbxColormapPriv *)
- (*prev)->devPrivates[lbxColormapPrivIndex].ptr)->next;
- if (*prev == pmap)
- *prev = cmapPriv->next;
-
- while (cmapPriv->stalled_clients)
- FreeResource(cmapPriv->stalled_clients->id, 0);
-
- cmapPriv->grab_status = CMAP_NOT_GRABBED;
- cmapPriv->last_grabber = smart ? cmapPriv->grabber->uid : 0;
- cmapPriv->grabber = NULL;
- cmapPriv->smart_grab = smart;
-}
-
-/*
- * Handle a colormap release request from a proxy.
- */
-
-int
-ProcLbxReleaseCmap(ClientPtr client)
-{
- REQUEST(xLbxReleaseCmapReq);
- ColormapPtr pmap;
-
-#ifdef COLOR_DEBUG
- fprintf (stderr, "Got colormap release request, ");
- fprintf (stderr, "seq = 0x%x, proxy = %d, client = %d, cmap = 0x%x\n",
- client->sequence, LbxProxyID(client), client->index, stuff->cmap);
-#endif
-
- pmap = (ColormapPtr) SecurityLookupIDByType (client, stuff->cmap,
- RT_COLORMAP,
- SecurityWriteAccess);
-
- if (!pmap)
- {
- client->errorValue = stuff->cmap;
- return BadColor;
- }
-
- if (LbxGrabbedByClient(client, pmap))
- LbxReleaseCmap(pmap, TRUE);
- return Success;
-}
-
-
-/*
- * Handle an LbxAllocColor request. The proxy did the alloc and
- * is telling the server what rgb and pixel value to use.
- */
-
-int
-ProcLbxAllocColor(ClientPtr client)
-{
- REQUEST(xLbxAllocColorReq);
- ColormapPtr pmap;
- CARD32 pixel = stuff->pixel;
-
- REQUEST_SIZE_MATCH (xLbxAllocColorReq);
- pmap = (ColormapPtr) SecurityLookupIDByType (client, stuff->cmap,
- RT_COLORMAP,
- SecurityWriteAccess);
-
-#ifdef COLOR_DEBUG
- fprintf (stderr,
- "Got LBX alloc color: seq = 0x%x, proxy = %d, client = %d\n",
- client->sequence, LbxProxyID(client), client->index);
- fprintf (stderr, " cmap = 0x%x, pixel = %d, rgb = (%d,%d,%d)\n",
- stuff->cmap, stuff->pixel, stuff->red, stuff->green, stuff->blue);
-#endif
-
- if (pmap)
- {
- int status;
- if (!LbxGrabbedByClient(client, pmap))
- return BadAccess;
-
- status = AllocColor (pmap,
- &stuff->red, &stuff->green, &stuff->blue,
- &pixel, client->index);
-
- if (status == Success && pixel != stuff->pixel)
- {
- /*
- * Internal error - Proxy allocated different pixel from server
- */
-#ifdef COLOR_DEBUG
- fprintf(stderr, "got pixel %d (%d, %d, %d), expected %d\n",
- pixel, stuff->red, stuff->green, stuff->blue, stuff->pixel);
-#endif
- FreeColors (pmap, client->index, 1, &pixel, 0L);
- return BadAlloc;
- }
-
- return status;
- }
- else
- {
- client->errorValue = stuff->cmap;
- return (BadColor);
- }
-}
-
-
-/*
- * The proxy sends an LbxIncrementPixel request when it short circuits
- * an AllocColor. The server must bump up the reference count the
- * specified amount.
- */
-
-int
-ProcLbxIncrementPixel(ClientPtr client)
-{
- REQUEST(xLbxIncrementPixelReq);
- ColormapPtr pmap;
- EntryPtr pent;
- Pixel pixel;
- unsigned short red, green, blue;
- VisualPtr pVisual;
- int status;
-
-#ifdef COLOR_DEBUG
- fprintf (stderr,
- "Got LBX increment pixel: seq = 0x%x, proxy = %d, client = %d\n",
- client->sequence, LbxProxyID(client), client->index);
- fprintf (stderr, " cmap = 0x%x, pixel = %d\n",
- stuff->cmap, stuff->pixel);
-#endif
-
- /*
- * Looks up the color associated with the pixel, and then call
- * AllocColor() - a bit round-about, but it should work.
- */
-
- pmap = (ColormapPtr) SecurityLookupIDByType(client, stuff->cmap,
- RT_COLORMAP,
- SecurityWriteAccess);
- if (!pmap) {
- client->errorValue = stuff->cmap;
- return BadColor;
- }
-
- pixel = stuff->pixel;
-
- switch (pmap->class) {
- case StaticColor:
- case StaticGray:
- red = pmap->red[pixel].co.local.red;
- green = pmap->red[pixel].co.local.green;
- blue = pmap->red[pixel].co.local.blue;
- break;
- case GrayScale:
- case PseudoColor:
- pent = pmap->red + pixel;
- red = pent->co.local.red;
- green = pent->co.local.green;
- blue = pent->co.local.blue;
- break;
- default:
- pVisual = pmap->pVisual;
- red = pmap->red[(pixel & pVisual->redMask) >> pVisual->offsetRed].co.local.red;
- green = pmap->green[(pixel & pVisual->greenMask) >> pVisual->offsetGreen].co.local.green;
- blue = pmap->blue[(pixel & pVisual->blueMask) >> pVisual->offsetBlue].co.local.blue;
- break;
- }
-
- status = AllocColor(pmap, &red, &green, &blue, &pixel, client->index);
-
- if (status == Success && pixel != stuff->pixel)
- {
- /*
- * Internal error - Proxy allocated different pixel from server
- */
-#ifdef COLOR_DEBUG
- fprintf(stderr, "got pixel %d, expected %d\n", pixel, stuff->pixel);
-#endif
- FreeColors (pmap, client->index, 1, &pixel, 0L);
- return BadAlloc;
- }
-
- return status;
-}
diff --git a/nx-X11/programs/Xserver/lbx/lbxdata.h b/nx-X11/programs/Xserver/lbx/lbxdata.h
deleted file mode 100644
index b577f6e50..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxdata.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* $Xorg: lbxdata.h,v 1.3 2000/08/17 19:53:31 cpqbld Exp $ */
-/*
- * Copyright 1994 Network Computing Devices, Inc.
- *
- * 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, and that the name Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE, DATA,
- * OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF
- * WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _LBXDATA_H_
-#define _LBXDATA_H_
-#define NEED_REPLIES
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#define _XLBX_SERVER_
-#include <X11/extensions/lbxstr.h>
-#include "dixfontstr.h"
-
-extern int lbx_font_private;
-
-typedef struct _fonttaginfo {
- XID tid;
- FontPtr pfont;
- unsigned long size;
- int compression;
- xLbxFontInfo *fontinfo;
-} FontTagInfoRec, *FontTagInfoPtr;
-
-#endif /* _LBXDATA_H_ */
diff --git a/nx-X11/programs/Xserver/lbx/lbxdix.c b/nx-X11/programs/Xserver/lbx/lbxdix.c
deleted file mode 100644
index e2a1a7adc..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxdix.c
+++ /dev/null
@@ -1,869 +0,0 @@
-/* $Xorg: lbxdix.c,v 1.4 2001/02/09 02:05:16 xorgcvs Exp $ */
-/*
-
-Copyright 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 1993 Network Computing Devices, Inc.
- *
- * 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, and that the name Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE, DATA,
- * OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF
- * WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxdix.c,v 1.7 2001/08/23 14:46:57 alanh Exp $ */
-
-/* various bits of DIX-level mangling */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <sys/types.h>
-#include <stdio.h>
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "os.h"
-#include "dixstruct.h"
-#include "resource.h"
-#include "inputstr.h"
-#include "servermd.h"
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "propertyst.h"
-#define _XLBX_SERVER_
-#include <X11/extensions/lbxstr.h>
-#include "lbxserve.h"
-#include "lbxtags.h"
-#include "lbxdata.h"
-#include <X11/Xfuncproto.h>
-#ifdef XAPPGROUP
-#include <X11/extensions/Xagsrv.h>
-#endif
-#include "swaprep.h"
-
-int lbx_font_private = -1;
-
-void
-LbxDixInit(void)
-{
- TagInit();
- lbx_font_private = AllocateFontPrivateIndex();
-}
-
-/* ARGSUSED */
-void
-LbxAllowMotion(ClientPtr client,
- int num)
-{
- LbxProxyPtr proxy = LbxProxy(client);
- proxy->motion_allowed_events += num;
-}
-
-extern xConnSetupPrefix connSetupPrefix;
-extern char *ConnectionInfo;
-extern int connBlockScreenStart;
-
-int
-LbxSendConnSetup(ClientPtr client,
- char *reason)
-{
- int dlength;
- int i, ndex, lim, wndex;
- CARD32 dataBuf[16];
- xLbxConnSetupPrefix csp;
- NewClientInfoRec nci;
- LbxProxyPtr proxy = LbxProxy(client);
-
- if (reason) {
- SendConnSetup(client, reason);
- LbxForceOutput(proxy); /* expedient to avoid another state variable */
- return (client->noClientException);
- }
-
- IncrementClientCount();
-
- client->requestVector = client->swapped ? SwappedProcVector : ProcVector;
- client->sequence = 0;
- dataBuf[0] = client->clientAsMask;
-
- csp.success = TRUE;
- csp.majorVersion = connSetupPrefix.majorVersion;
- csp.minorVersion = connSetupPrefix.minorVersion;
- csp.tag = 0;
-#ifdef XAPPGROUP
- if (!client->appgroup) {
-#endif
- csp.changeType = 1; /* LbxNormalDeltas */
- csp.length = 2 + /* tag + resource-id-base */
- screenInfo.numScreens; /* input-mask per screen */
- wndex = 0; ndex = 1; lim = screenInfo.numScreens;
-#ifdef XAPPGROUP
- } else {
- csp.changeType = 2; /* LbxAppGroupDeltas */
- csp.length = 7 + /* tag, res-id-base, root, visual, colormap, b&w-pix */
- 1 + screenInfo.numScreens - screenInfo.numVideoScreens;
- XagGetDeltaInfo (client, &dataBuf[1]);
- for (i = 0; i < MAXSCREENS; i++) {
- if ((CARD32) WindowTable[i]->drawable.id == dataBuf[1]) {
- dataBuf[6] = WindowTable[i]->eventMask | wOtherEventMasks(WindowTable[i]);
- break;
- }
- }
- wndex = screenInfo.numVideoScreens;
- ndex = 7;
- lim = screenInfo.numScreens - screenInfo.numVideoScreens;
- }
-#endif
- for (i = 0; i < lim; i++, ndex++, wndex++) {
- dataBuf[ndex] =
- WindowTable[wndex]->eventMask | wOtherEventMasks(WindowTable[wndex]);
- }
- dlength = (csp.length - 1) << 2;
-
- if (LbxProxyClient(proxy)->swapped) {
- swaps(&csp.length, i);
- }
-
- if (client->swapped) {
- LbxWriteSConnSetupPrefix(client, &csp);
- SwapLongs(dataBuf, (1 + screenInfo.numScreens));
- WriteToClient(client, dlength, (pointer) dataBuf);
- } else {
- WriteToClient(client, sizeof(xLbxConnSetupPrefix), (char *) &csp);
- WriteToClient(client, dlength, (pointer) dataBuf);
- }
-
- LbxForceOutput(proxy); /* expedient to avoid another state variable */
- client->clientState = ClientStateRunning;
- if (ClientStateCallback) {
- if (LbxProxyClient(proxy)->swapped != client->swapped) {
- swaps(&csp.length, i);
- }
- nci.client = client;
- nci.prefix = (xConnSetupPrefix*) &csp;
- nci.setup = (xConnSetup *) ConnectionInfo;
- CallCallbacks(&ClientStateCallback, (pointer) &nci);
- }
-
- return client->noClientException;
-}
-
-static XID modifier_map_tag;
-
-int
-LbxGetModifierMapping(ClientPtr client)
-{
- TagData td;
- pointer tagdata;
- xLbxGetModifierMappingReply rep;
- register KeyClassPtr keyc = inputInfo.keyboard->key;
- int dlength = keyc->maxKeysPerModifier << 3;
- Bool tag_known = FALSE,
- send_data;
- int n;
-
- if (!modifier_map_tag) {
- tagdata = (pointer) keyc->modifierKeyMap;
- TagSaveTag(LbxTagTypeModmap, dlength, tagdata, &modifier_map_tag);
- } else {
- td = TagGetTag(modifier_map_tag);
- tagdata = td->tdata;
- tag_known = TagProxyMarked(modifier_map_tag, LbxProxyID(client));
- }
- if (modifier_map_tag)
- TagMarkProxy(modifier_map_tag, LbxProxyID(client));
-
- send_data = (!modifier_map_tag || !tag_known);
-
- rep.type = X_Reply;
- rep.keyspermod = keyc->maxKeysPerModifier;
- rep.sequenceNumber = client->sequence;
- rep.tag = modifier_map_tag;
- rep.pad0 = rep.pad1 = rep.pad2 = rep.pad3 = rep.pad4 = 0;
-
- if (send_data)
- rep.length = dlength >> 2;
- else
- rep.length = 0;
-
- if (client->swapped) {
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, n);
- swapl(&rep.tag, n);
- }
- WriteToClient(client, sizeof(xLbxGetModifierMappingReply), (char *)&rep);
-
- if (send_data)
- WriteToClient(client, dlength, (char *) tagdata);
-
- return client->noClientException;
-}
-
-void
-LbxFlushModifierMapTag(void)
-{
-
- if (modifier_map_tag)
- TagDeleteTag(modifier_map_tag);
-}
-
-static XID keyboard_map_tag;
-
-int
-LbxGetKeyboardMapping(ClientPtr client)
-{
- TagData td;
- pointer tagdata;
- xLbxGetKeyboardMappingReply rep;
-
- REQUEST(xLbxGetKeyboardMappingReq);
- KeySymsPtr curKeySyms = &inputInfo.keyboard->key->curKeySyms;
- int dlength;
- Bool tag_known = FALSE,
- send_data;
- int n;
-
- REQUEST_SIZE_MATCH(xLbxGetKeyboardMappingReq);
-
- if ((stuff->firstKeyCode < curKeySyms->minKeyCode) ||
- (stuff->firstKeyCode > curKeySyms->maxKeyCode)) {
- client->errorValue = stuff->firstKeyCode;
- return BadValue;
- }
- if (stuff->firstKeyCode + stuff->count > curKeySyms->maxKeyCode + 1) {
- client->errorValue = stuff->count;
- return BadValue;
- }
- rep.type = X_Reply;
- rep.sequenceNumber = client->sequence;
- rep.keysperkeycode = curKeySyms->mapWidth;
- /* length is a count of 4 byte quantities and KeySyms are 4 bytes */
-
- if (!keyboard_map_tag) {
- tagdata = (pointer) &curKeySyms->map[(stuff->firstKeyCode -
- curKeySyms->minKeyCode) * curKeySyms->mapWidth];
- dlength = (curKeySyms->mapWidth * stuff->count);
- TagSaveTag(LbxTagTypeKeymap, dlength, tagdata, &keyboard_map_tag);
- } else {
- td = TagGetTag(keyboard_map_tag);
- tagdata = td->tdata;
- tag_known = TagProxyMarked(keyboard_map_tag, LbxProxyID(client));
- }
- if (keyboard_map_tag)
- TagMarkProxy(keyboard_map_tag, LbxProxyID(client));
-
- send_data = (!keyboard_map_tag || !tag_known);
- rep.type = X_Reply;
- rep.keysperkeycode = curKeySyms->mapWidth;
- rep.sequenceNumber = client->sequence;
- rep.tag = keyboard_map_tag;
- rep.pad0 = rep.pad1 = rep.pad2 = rep.pad3 = rep.pad4 = 0;
-
- if (send_data)
- rep.length = (curKeySyms->mapWidth * stuff->count);
- else
- rep.length = 0;
-
- if (client->swapped) {
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, n);
- swapl(&rep.tag, n);
- }
- WriteToClient(client, sizeof(xLbxGetKeyboardMappingReply), (char *)&rep);
-
- if (send_data) {
- client->pSwapReplyFunc = (ReplySwapPtr)CopySwap32Write;
- WriteSwappedDataToClient(client,
- curKeySyms->mapWidth * stuff->count * sizeof(KeySym),
- &curKeySyms->map[(stuff->firstKeyCode - curKeySyms->minKeyCode) *
- curKeySyms->mapWidth]);
- }
- return client->noClientException;
-}
-
-void
-LbxFlushKeyboardMapTag(void)
-{
- if (keyboard_map_tag)
- TagDeleteTag(keyboard_map_tag);
-}
-
-/* counts number of bits needed to hold value */
-static int
-_bitsize(int val)
-{
- int bits = 1; /* always need one for sign bit */
-
- if (val == 0)
- return (bits);
-
- if (val < 0) {
- val = -val;
- }
- while (val) {
- bits++;
- val >>= 1;
- }
-
- return bits;
-
-}
-
-/*
- * squashes the font (if possible), returning the new length and
- * a pointer to the new data (which has been allocated). if it can't
- * squish, it just returns a 0 and the data is sent in raw form.
- */
-int _lbx_fi_junklen = sizeof(BYTE) * 2 + sizeof(CARD16) + sizeof(CARD32);
-
-static int
-squish_font_info(xQueryFontReply *qfr,
- int rlen,
- xLbxFontInfo **sqrep)
-{
- int len,
- hlen;
- xLbxFontInfo *new;
- xCharInfo *minb,
- *maxb,
- *ci,
- bbox;
- int i;
- char *t;
- xLbxCharInfo *chars;
- int num_chars;
-
- num_chars = qfr->nCharInfos;
-
- if (num_chars == 0)
- return 0;
-
- minb = &qfr->minBounds;
- maxb = &qfr->maxBounds;
- /*
- * first do the quick check -- if the attribute fields aren't all the
- * same, punt
- */
-
- if (minb->attributes != maxb->attributes)
- return 0;
-
-#define compute(field) \
- bbox.field = max(_bitsize(minb->field), _bitsize(maxb->field))
-
- compute(characterWidth);
- compute(leftSideBearing);
- compute(rightSideBearing);
- compute(ascent);
- compute(descent);
-
-#undef compute
-
- /* make sure it fits */
- if (!((bbox.characterWidth <= LBX_WIDTH_BITS) &&
- (bbox.leftSideBearing <= LBX_LEFT_BITS) &&
- (bbox.rightSideBearing <= LBX_RIGHT_BITS) &&
- (bbox.ascent <= LBX_ASCENT_BITS) &&
- (bbox.descent <= LBX_DESCENT_BITS))) {
- return 0;
- }
-
- hlen = sizeof(xLbxFontInfo) + qfr->nFontProps * sizeof(xFontProp);
-
- len = hlen + (num_chars * sizeof(xLbxCharInfo));
-
- new = (xLbxFontInfo *) xalloc(len);
- if (!new)
- return 0;
-
- /* gross hack to avoid copying all the fields */
- t = (char *) qfr;
- t += _lbx_fi_junklen;
-
- /* copy all but the char infos */
- memcpy((char *) new, (char *) t, hlen);
-
- t = (char *) new;
- t += hlen;
- chars = (xLbxCharInfo *) t;
-
- t = (char *) qfr;
- t += sizeof(xQueryFontReply) + qfr->nFontProps * sizeof(xFontProp);
- ci = (xCharInfo *) t;
-
- /* now copy & pack the charinfos */
- for (i = 0; i < num_chars; i++, chars++, ci++) {
- chars->metrics = 0;
- chars->metrics |= (LBX_MASK_BITS(ci->characterWidth, LBX_WIDTH_BITS)
- << LBX_WIDTH_SHIFT);
- chars->metrics |= (LBX_MASK_BITS(ci->leftSideBearing, LBX_LEFT_BITS)
- << LBX_LEFT_SHIFT);
- chars->metrics |= (LBX_MASK_BITS(ci->rightSideBearing, LBX_RIGHT_BITS)
- << LBX_RIGHT_SHIFT);
- chars->metrics |= (LBX_MASK_BITS(ci->ascent, LBX_ASCENT_BITS)
- << LBX_ASCENT_SHIFT);
- chars->metrics |= (LBX_MASK_BITS(ci->descent, LBX_DESCENT_BITS)
- << LBX_DESCENT_SHIFT);
- }
-
- *sqrep = new;
- return len;
-}
-
-int
-LbxQueryFont(ClientPtr client)
-{
- xQueryFontReply *reply;
- xLbxQueryFontReply lbxrep;
- FontPtr pFont;
- register GC *pGC;
- Bool send_data = FALSE;
- Bool free_data = FALSE;
- int rlength = 0;
- FontTagInfoPtr ftip;
- int sqlen = 0;
- xLbxFontInfo *sqrep,
- *sreply = NULL;
-
- REQUEST(xLbxQueryFontReq);
-
- REQUEST_SIZE_MATCH(xLbxQueryFontReq);
-
- client->errorValue = stuff->fid; /* EITHER font or gc */
- pFont = (FontPtr) SecurityLookupIDByType(client, stuff->fid, RT_FONT,
- SecurityReadAccess);
- if (!pFont) {
- /* can't use VERIFY_GC because it might return BadGC */
- pGC = (GC *) SecurityLookupIDByType(client, stuff->fid, RT_GC,
- SecurityReadAccess);
- if (!pGC || !pGC->font) { /* catch a non-existent builtin font */
- client->errorValue = stuff->fid;
- return (BadFont); /* procotol spec says only error is BadFont */
- }
- pFont = pGC->font;
- }
-
- /* get tag (if any) */
- ftip = (FontTagInfoPtr) FontGetPrivate(pFont, lbx_font_private);
-
- if (!ftip) {
- xCharInfo *pmax = FONTINKMAX(pFont);
- xCharInfo *pmin = FONTINKMIN(pFont);
- int nprotoxcistructs;
-
- nprotoxcistructs = (
- pmax->rightSideBearing == pmin->rightSideBearing &&
- pmax->leftSideBearing == pmin->leftSideBearing &&
- pmax->descent == pmin->descent &&
- pmax->ascent == pmin->ascent &&
- pmax->characterWidth == pmin->characterWidth) ?
- 0 : N2dChars(pFont);
-
- rlength = sizeof(xQueryFontReply) +
- FONTINFONPROPS(FONTCHARSET(pFont)) * sizeof(xFontProp) +
- nprotoxcistructs * sizeof(xCharInfo);
- reply = (xQueryFontReply *) xalloc(rlength);
- if (!reply) {
- return (BadAlloc);
- }
- free_data = TRUE;
- send_data = TRUE;
- QueryFont(pFont, reply, nprotoxcistructs);
-
- sqlen = squish_font_info(reply, rlength, &sqrep);
- if (!sqlen) { /* if it failed to squish, send it raw */
- char *t;
-
- lbxrep.compression = 0;
-
- sqlen = rlength - _lbx_fi_junklen;
- t = (char *) reply;
- sqrep = (xLbxFontInfo *) (t + _lbx_fi_junklen);
- } else {
- lbxrep.compression = 1;
- xfree(reply); /* no longer needed */
- }
- } else { /* just get data from tag */
- sqrep = ftip->fontinfo;
- sqlen = ftip->size;
- lbxrep.compression = ftip->compression;
- }
-
- if (!ftip) {
- /* data allocation is done when font is first queried */
- ftip = (FontTagInfoPtr) xalloc(sizeof(FontTagInfoRec));
- if (ftip &&
- TagSaveTag(LbxTagTypeFont, sqlen, (pointer) ftip, &ftip->tid)) {
- FontSetPrivate(pFont, lbx_font_private, (pointer) ftip);
- ftip->pfont = pFont;
- ftip->size = sqlen;
- ftip->fontinfo = sqrep;
- ftip->compression = lbxrep.compression;
- free_data = FALSE;
- } else {
- xfree(ftip);
- }
- }
- if (ftip) {
- if (!TagProxyMarked(ftip->tid, LbxProxyID(client)))
- send_data = TRUE;
- TagMarkProxy(ftip->tid, LbxProxyID(client));
- lbxrep.tag = ftip->tid;
- } else {
- lbxrep.tag = 0;
- send_data = TRUE;
- }
-
- lbxrep.type = X_Reply;
- lbxrep.sequenceNumber = client->sequence;
- lbxrep.pad0 = lbxrep.pad1 = lbxrep.pad2 = lbxrep.pad3 = lbxrep.pad4 = 0;
-
- if (send_data)
- lbxrep.length = sqlen >> 2;
- else
- lbxrep.length = 0;
-
- if (client->swapped) {
- int n;
-
- swaps(&lbxrep.sequenceNumber, n);
- swapl(&lbxrep.length, n);
- swapl(&lbxrep.tag, n);
- sreply = (xLbxFontInfo *) ALLOCATE_LOCAL(sqlen);
- if (!sreply)
- return BadAlloc;
- memcpy((char *) sreply, (char *) sqrep, sqlen);
- LbxSwapFontInfo(sreply, lbxrep.compression);
- sqrep = sreply;
- }
- WriteToClient(client, sizeof(xLbxQueryFontReply), (char *) &lbxrep);
- if (send_data)
- WriteToClient(client, sqlen, (char *)sqrep);
- if (free_data)
- xfree(sqrep);
- if (sreply)
- DEALLOCATE_LOCAL(sreply);
- return (client->noClientException);
-}
-
-void
-LbxFreeFontTag(FontPtr pfont)
-{
- FontTagInfoPtr ftip;
-
- ftip = (FontTagInfoPtr) FontGetPrivate(pfont, lbx_font_private);
- if (ftip)
- TagDeleteTag(ftip->tid);
-}
-
-int
-LbxInvalidateTag(ClientPtr client,
- XID tag)
-{
- TagClearProxy(tag, LbxProxyID(client));
- return client->noClientException;
-}
-
-void
-LbxSendInvalidateTag(ClientPtr client,
- XID tag,
- int tagtype)
-{
- xLbxInvalidateTagEvent ev;
- int n;
-
- ev.type = LbxEventCode;
- ev.lbxType = LbxInvalidateTagEvent;
- ev.sequenceNumber = client->sequence;
- ev.tag = tag;
- ev.tagType = tagtype;
- ev.pad1 = ev.pad2 = ev.pad3 = ev.pad4 = ev.pad5 = 0;
-
- if (client->swapped) {
- swaps(&ev.sequenceNumber, n);
- swapl(&ev.tag, n);
- swapl(&ev.tagType, n);
- }
- DBG(DBG_CLIENT, (stderr, "Invalidating tag %d\n", tag));
- WriteToClient(client, sizeof(xLbxInvalidateTagEvent), (char *) &ev);
- LbxForceOutput(LbxProxy(client));
-}
-
-static void
-LbxSendSendTagData(int pid,
- XID tag,
- int tagtype)
-{
- xLbxSendTagDataEvent ev;
- int n;
- LbxProxyPtr proxy;
- ClientPtr client;
- LbxClientPtr lbxcp;
-
- proxy = LbxPidToProxy(pid);
- lbxcp = (proxy != NULL) ? proxy->lbxClients[0] : NULL;
- if (lbxcp && (client = lbxcp->client)) {
- ev.type = LbxEventCode;
- ev.lbxType = LbxSendTagDataEvent;
- ev.sequenceNumber = client->sequence;
- ev.tag = tag;
- ev.tagType = tagtype;
- ev.pad1 = ev.pad2 = ev.pad3 = ev.pad4 = ev.pad5 = 0;
-
- if (client->swapped) {
- swaps(&ev.sequenceNumber, n);
- swapl(&ev.tag, n);
- swapl(&ev.tagType, n);
- }
- DBG(DBG_CLIENT, (stderr, "Requesting tag %d\n", tag));
- WriteToClient(client, sizeof(xLbxSendTagDataEvent), (char *) &ev);
- LbxForceOutput(proxy);
- }
-}
-
-/*
- * keep track of clients stalled waiting for tags to come back from
- * a proxy. since multiple clinets can be waiting for the same tag,
- * we have to keep a list of all of them.
- */
-
-typedef struct _sendtagq {
- XID tag;
- int num_stalled;
- ClientPtr *stalled_clients;
- struct _sendtagq *next;
-} SendTagQRec, *SendTagQPtr;
-
-static SendTagQPtr queried_tags = NULL;
-
-#define LbxSendTagFailed -1
-#define LbxSendTagSendIt 0
-#define LbxSendTagAlreadySent 1
-
-static Bool
-LbxQueueSendTag(ClientPtr client,
- XID tag)
-{
- SendTagQPtr stqp, *prev, new;
- ClientPtr *newlist;
-
-
- /* see if we're asking for one already in the pipeline */
- for (prev = &queried_tags; (stqp = *prev); prev = &stqp->next) {
- if (stqp->tag == tag) {
- /* add new client to list */
- newlist = (ClientPtr *) xrealloc(stqp->stalled_clients,
- (sizeof(ClientPtr) * (stqp->num_stalled + 1)));
- if (!newlist)
- return LbxSendTagFailed;
- newlist[stqp->num_stalled++] = client;
- stqp->stalled_clients = newlist;
- DBG(DBG_CLIENT, (stderr, "Additional client requesting tag %d\n", tag));
- return LbxSendTagAlreadySent;
- }
- }
-
- /* make new one */
- new = (SendTagQPtr) xalloc(sizeof(SendTagQRec));
- newlist = (ClientPtr *) xalloc(sizeof(ClientPtr));
- if (!new || !newlist) {
- xfree(new);
- xfree(newlist);
- return LbxSendTagFailed;
- }
- *newlist = client;
- new->stalled_clients = newlist;
- new->num_stalled = 1;
- new->tag = tag;
- new->next = NULL;
-
- /* stick on end of list */
- *prev = new;
- return LbxSendTagSendIt;
-}
-
-static SendTagQPtr
-LbxFindQTag(XID tag)
-{
- SendTagQPtr stqp;
-
- for (stqp = queried_tags; stqp; stqp = stqp->next) {
- if (stqp->tag == tag)
- return stqp;
- }
- return NULL;
-}
-
-static void
-LbxFreeQTag(SendTagQPtr stqp)
-{
- xfree(stqp->stalled_clients);
- xfree(stqp);
-}
-
-static void
-LbxRemoveQTag(XID tag)
-{
- SendTagQPtr stqp, *prev;
-
- for (prev = &queried_tags; (stqp = *prev); prev = &stqp->next) {
- if (stqp->tag == tag) {
- *prev = stqp->next;
- LbxFreeQTag(stqp);
- return;
- }
- }
-}
-
-Bool
-LbxFlushQTag(XID tag)
-{
- SendTagQPtr stqp;
- ClientPtr *cp;
-
- stqp = LbxFindQTag(tag);
- if (!stqp)
- return FALSE;
- for (cp = stqp->stalled_clients; --stqp->num_stalled >= 0; cp++)
- AttendClient(*cp);
- LbxRemoveQTag(tag);
- return TRUE;
-}
-
-void
-ProcessQTagZombies(void)
-{
- SendTagQPtr stqp;
- ClientPtr *out, *in;
- int i;
-
- for (stqp = queried_tags; stqp; stqp = stqp->next) {
- out = stqp->stalled_clients;
- for (in = out, i = stqp->num_stalled; --i >= 0; in++) {
- if ((*in)->clientGone)
- --stqp->num_stalled;
- else
- *out++ = *in;
- }
- }
-}
-
-/*
- * server sends this
- */
-
-void
-LbxQueryTagData(ClientPtr client,
- int owner_pid,
- XID tag,
- int tagtype)
-{
- /* save the info and the client being stalled */
- if (LbxQueueSendTag(client, tag) == LbxSendTagSendIt)
- LbxSendSendTagData(owner_pid, tag, tagtype);
-}
-
-/*
- * server recieves this
- */
-int
-LbxTagData(ClientPtr client,
- XID tag,
- unsigned long len,
- pointer data)
-{
- TagData td;
- PropertyPtr pProp;
-
- td = TagGetTag(tag);
- if (!td || td->data_type != LbxTagTypeProperty)
- return Success;
- if (!td->global) {
- /* somebody changed contents while we were querying */
- TagDeleteTag(tag);
- return Success;
- }
- LbxFlushQTag(tag);
- pProp = (PropertyPtr) td->tdata;
- if (pProp->tag_id != tag || pProp->owner_pid != LbxProxyID(client))
- return Success;
- pProp->owner_pid = 0;
- if (len != td->size)
- pProp->size = len / (pProp->format >> 3);
- pProp->data = xrealloc(pProp->data, len);
- if (!pProp->data) {
- pProp->size = 0;
- return Success;
- }
- if (client->swapped) {
- switch (pProp->format) {
- case 32:
- SwapLongs((CARD32 *) data, len >> 2);
- break;
- case 16:
- SwapShorts((short *) data, len >> 1);
- break;
- default:
- break;
- }
- }
- memmove((char *) pProp->data, (char *) data, len);
- return Success;
-}
-
-/* when server resets, need to reset global tags */
-void
-LbxResetTags(void)
-{
- SendTagQPtr stqp;
-
- modifier_map_tag = 0;
- keyboard_map_tag = 0;
-
- /* clean out any pending tag requests */
- while ((stqp = queried_tags)) {
- queried_tags = stqp->next;
- LbxFreeQTag(stqp);
- }
-}
diff --git a/nx-X11/programs/Xserver/lbx/lbxexts.c b/nx-X11/programs/Xserver/lbx/lbxexts.c
deleted file mode 100644
index 1086b4bc5..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxexts.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/* $Xorg: lbxexts.c,v 1.3 2000/08/17 19:53:31 cpqbld Exp $ */
-/*
- * Copyright 1994 Network Computing Devices, Inc.
- *
- * 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, and that the name Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE, DATA,
- * OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF
- * WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxexts.c,v 1.2 2000/05/18 23:46:24 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "dixstruct.h"
-#include "colormapst.h"
-#include "propertyst.h"
-#define _XLBX_SERVER_
-#include <X11/extensions/lbxstr.h>
-#include "lbxserve.h"
-#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
-#endif
-
-typedef struct _lbxext {
- char *name;
- char **aliases;
- int num_aliases;
- int idx;
- int opcode;
- int ev_base;
- int err_base;
- int num_reqs;
- CARD8 *rep_mask;
- CARD8 *ev_mask;
-#ifdef XCSECURITY
- Bool secure;
-#endif
-} LbxExtensionEntry;
-
-static LbxExtensionEntry **lbx_extensions = NULL;
-static int num_exts = 0;
-
-
-Bool
-LbxAddExtension(char *name,
- int opcode,
- int ev_base,
- int err_base)
-{
- int i;
- LbxExtensionEntry *ext,
- **newexts;
-
- ext = (LbxExtensionEntry *) xalloc(sizeof(LbxExtensionEntry));
- if (!ext)
- return FALSE;
- ext->name = (char *) xalloc(strlen(name) + 1);
- ext->num_aliases = 0;
- ext->aliases = (char **) NULL;
- if (!ext->name) {
- xfree(ext);
- return FALSE;
- }
- strcpy(ext->name, name);
- i = num_exts;
- newexts = (LbxExtensionEntry **) xrealloc(lbx_extensions,
- (i + 1) * sizeof(LbxExtensionEntry *));
- if (!newexts) {
- xfree(ext->name);
- xfree(ext);
- return FALSE;
- }
- num_exts++;
- lbx_extensions = newexts;
- lbx_extensions[i] = ext;
- ext->idx = i;
-
- ext->opcode = opcode;;
- ext->ev_base = ev_base;;
- ext->err_base = err_base;
- ext->ev_mask = NULL;
- ext->rep_mask = NULL;
- ext->num_reqs = 0;
-#ifdef XCSECURITY
- ext->secure = FALSE;
-#endif
-
- return TRUE;
-}
-
-Bool
-LbxAddExtensionAlias(int idx,
- char *alias)
-{
- char *name;
- char **aliases;
- LbxExtensionEntry *ext = lbx_extensions[idx];
-
- aliases = (char **) xrealloc(ext->aliases,
- (ext->num_aliases + 1) * sizeof(char *));
- if (!aliases)
- return FALSE;
- ext->aliases = aliases;
- name = (char *) xalloc(strlen(alias) + 1);
- if (!name)
- return FALSE;
- strcpy(name, alias);
- ext->aliases[ext->num_aliases] = name;
- ext->num_aliases++;
- return TRUE;
-}
-
-static int
-LbxFindExtension(char *extname,
- int len)
-{
- int i, j;
-
- for (i = 0; i < num_exts; i++) {
- if ((strlen(lbx_extensions[i]->name) == len) &&
- (strncmp(lbx_extensions[i]->name, extname, len) == 0))
- return i;
- for (j = lbx_extensions[i]->num_aliases; --j >= 0;) {
- if ((strlen(lbx_extensions[i]->aliases[j]) == len) &&
- (strncmp(lbx_extensions[i]->aliases[j], extname, len) == 0))
- return i;
- }
- }
- return -1;
-}
-
-void
-LbxDeclareExtensionSecurity(char *extname,
- Bool secure)
-{
-#ifdef XCSECURITY
- int i = LbxFindExtension(extname, strlen(extname));
- if (i >= 0)
- lbx_extensions[i]->secure = secure;
-#endif
-}
-
-Bool
-LbxRegisterExtensionGenerationMasks(int idx,
- int num_reqs,
- char *rep_mask,
- char *ev_mask)
-{
- LbxExtensionEntry *ext = lbx_extensions[idx];
- CARD8 *nrm,
- *nem;
- int mlen = mlen = num_reqs / (8 * sizeof(CARD8)) + 1;
-
- nrm = (CARD8 *) xalloc(sizeof(CARD8) * mlen);
- nem = (CARD8 *) xalloc(sizeof(CARD8) * mlen);
-
- if (!nrm || !nem) {
- xfree(nrm);
- xfree(nem);
- return FALSE;
- }
- memcpy((char *) nrm, (char *) rep_mask, mlen);
- memcpy((char *) nem, (char *) ev_mask, mlen);
- ext->rep_mask = nrm;
- ext->ev_mask = nem;
- ext->num_reqs = num_reqs;
-
- return TRUE;
-}
-
-int
-LbxQueryExtension(ClientPtr client,
- char *ename,
- int nlen)
-{
- xLbxQueryExtensionReply rep;
- int i;
- int mlen = 0;
-
- rep.type = X_Reply;
- rep.sequenceNumber = client->sequence;
- rep.major_opcode = 0;
- rep.present = FALSE;
- rep.length = 0;
- rep.pad0 = rep.pad1 = rep.pad2 = rep.pad3 = rep.pad4 = 0;
-
- i = LbxFindExtension(ename, nlen);
-
- if (i < 0
-#ifdef XCSECURITY
- /* don't show insecure extensions to untrusted clients */
- || (client->trustLevel == XSecurityClientUntrusted &&
- !lbx_extensions[i]->secure)
-#endif
- )
- rep.present = FALSE;
- else {
- rep.present = TRUE;
- rep.major_opcode = lbx_extensions[i]->opcode;
- rep.first_event = lbx_extensions[i]->ev_base;
- rep.first_error = lbx_extensions[i]->err_base;
- rep.numReqs = lbx_extensions[i]->num_reqs;
- if (lbx_extensions[i]->rep_mask) {
- mlen = (lbx_extensions[i]->num_reqs + 7) >> 3;
- rep.length = ((mlen + 3) >> 2) * 2;
- }
- }
- if (client->swapped) {
- char n;
-
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, n);
- }
- WriteToClient(client, sizeof(xLbxQueryExtensionReply), (char *)&rep);
- if (mlen) {
- WriteToClient(client, mlen, (char *)lbx_extensions[i]->rep_mask);
- WriteToClient(client, mlen, (char *)lbx_extensions[i]->ev_mask);
- }
- return Success;
-}
-
-void
-LbxCloseDownExtensions(void)
-{
- int i,j;
-
- for (i = 0; i < num_exts; i++) {
- xfree(lbx_extensions[i]->name);
- for (j = 0; j < lbx_extensions[i]->num_aliases; j++)
- xfree(lbx_extensions[i]->aliases[j]);
- xfree(lbx_extensions[i]->aliases);
- xfree(lbx_extensions[i]->rep_mask);
- xfree(lbx_extensions[i]->ev_mask);
- xfree(lbx_extensions[i]);
- }
- xfree(lbx_extensions);
- lbx_extensions = NULL;
- num_exts = 0;
-
-}
-
-void
-LbxSetReqMask(CARD8 *mask,
- int req,
- Bool on)
-{
- int mword = req / (8 * sizeof(CARD8));
-
- req = req % (8 * sizeof(CARD8));
- if (on) {
- mask[mword] |= (1 << req);
- } else {
- mask[mword] &= ~(1 << req);
- }
-}
diff --git a/nx-X11/programs/Xserver/lbx/lbxgfx.c b/nx-X11/programs/Xserver/lbx/lbxgfx.c
deleted file mode 100644
index 506859a20..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxgfx.c
+++ /dev/null
@@ -1,854 +0,0 @@
-/* $Xorg: lbxgfx.c,v 1.3 2000/08/17 19:53:31 cpqbld Exp $ */
-/*
- * Copyright 1993 Network Computing Devices, Inc.
- *
- * 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, and that the name Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE, DATA,
- * OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF
- * WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxgfx.c,v 1.3 2001/01/17 22:36:59 dawes Exp $ */
-
-/* various bits of DIX-level mangling */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <sys/types.h>
-#include <stdio.h>
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "os.h"
-#include "dixstruct.h"
-#include "resource.h"
-#include "servermd.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#define _XLBX_SERVER_
-#include <X11/extensions/lbxstr.h>
-#include "lbxserve.h"
-#include "lbxtags.h"
-#include <X11/Xfuncproto.h>
-#include <X11/extensions/lbximage.h>
-#include "lbxsrvopts.h"
-
-#define DrawableCache(client) (LbxClient(client)->drawableCache)
-#define GContextCache(client) (LbxClient(client)->gcontextCache)
-
-static void
-push (XID cache[GFX_CACHE_SIZE],
- XID xid)
-{
- memmove (cache+1, cache, (GFX_CACHE_SIZE - 1) * sizeof (cache[0]));
- cache[0] = xid;
-}
-
-static XID
-use (XID cache[GFX_CACHE_SIZE],
- int i)
-{
- XID tmp;
-
- tmp = cache[i];
- if (i != 0)
- {
- memmove (cache + 1, cache, i * sizeof (cache[0]));
- cache[0] = tmp;
- }
- return tmp;
-}
-
-extern char *ConnectionInfo;
-
-static int
-LbxDecodeGFXCache(ClientPtr client,
- CARD8 cacheEnts,
- char *after,
- Drawable *drawp,
- GContext *gcp)
-{
- int skip;
- int dcache, gcache;
-
- dcache = GFXdCacheEnt (cacheEnts);
- gcache = GFXgCacheEnt (cacheEnts);
- skip = 0;
- if (dcache == GFXCacheNone)
- {
- memcpy (drawp, after, sizeof (Drawable));
- push (DrawableCache(client), *drawp);
- after += sizeof (Drawable);
- skip += sizeof (Drawable);
- }
- else
- *drawp = use (DrawableCache(client), dcache);
- if (gcache == GFXCacheNone)
- {
- memcpy (gcp, after, sizeof (GContext));
- push (GContextCache(client), *gcp);
- skip += sizeof (GContext);
- }
- else
- *gcp = use (GContextCache(client), gcache);
- return skip;
-}
-
-static int
-LbxDecodeDrawableCache(ClientPtr client,
- CARD8 cacheEnts,
- char *after,
- Drawable *drawp)
-{
- int skip;
- int dcache;
-
- dcache = GFXdCacheEnt (cacheEnts);
- skip = 0;
- if (dcache == GFXCacheNone)
- {
- memcpy (drawp, after, sizeof (Drawable));
- push (DrawableCache(client), *drawp);
- after += sizeof (Drawable);
- skip += sizeof (Drawable);
- }
- else
- *drawp = use (DrawableCache(client), dcache);
- return skip;
-}
-
-#ifdef notyet
-static int
-LbxDecodeGCCache(ClientPtr client,
- CARD8 cacheEnts,
- char *after,
- GContext *gcp)
-{
- int skip;
- int gcache;
-
- gcache = GFXgCacheEnt (cacheEnts);
- skip = 0;
- if (gcache == GFXCacheNone)
- {
- memcpy (gcp, after, sizeof (GContext));
- push (GContextCache(client), *gcp);
- after += sizeof (GContext);
- skip += sizeof (GContext);
- }
- else
- *gcp = use (GContextCache(client), gcache);
- return skip;
-}
-#endif
-
-#define GFX_GET_DRAWABLE_AND_GC(type,in,len) {\
- int skip; \
- len = (client->req_len << 2) - SIZEOF(type); \
- in = ((char *) stuff) + SIZEOF(type);\
- skip = LbxDecodeGFXCache(client, stuff->cacheEnts, in, \
- &drawable, &gc); \
- in += skip; \
- len -= skip; \
-}
-
-#define GFX_GET_DST_DRAWABLE_AND_GC(type,in,len) {\
- int skip; \
- len = (client->req_len << 2) - SIZEOF(type); \
- in = ((char *) stuff) + SIZEOF(type);\
- skip = LbxDecodeGFXCache(client, stuff->cacheEnts, in, \
- &dstDrawable, &gc); \
- in += skip; \
- len -= skip; \
-}
-
-#define GFX_GET_SRC_DST_DRAWABLE_AND_GC(type, in, len) { \
- int skip; \
- len = (client->req_len << 2) - SIZEOF(type); \
- in = ((char *) stuff) + SIZEOF(type); \
- skip = LbxDecodeDrawableCache(client, stuff->srcCache, in, \
- &srcDrawable); \
- in += skip; \
- len -= skip; \
- skip = LbxDecodeGFXCache(client, stuff->cacheEnts, in, \
- &dstDrawable, &gc); \
- in += skip; \
- len -= skip; \
-}
-
-#define GFX_GET_GC(type, in, len) { \
- int skip; \
- len = (client->req_len << 2) - SIZEOF(type); \
- in = ((char *) stuff) + SIZEOF(type); \
- skip = LbxDecodeGCCache(client, stuff->gcCache, in, &gc); \
- in += skip; \
- len -= skip; \
-}
-
-int
-LbxDecodePoly(ClientPtr client,
- CARD8 xreqtype,
- int (*decode_rtn)(char *, char *, short *))
-{
- REQUEST(xLbxPolyPointReq);
- char *in;
- xPolyPointReq *xreq;
- int len;
- int retval;
- Drawable drawable;
- GContext gc;
-
- GFX_GET_DRAWABLE_AND_GC(xLbxPolyPointReq, in, len);
- if ((xreq = (xPolyPointReq *)
- xalloc(sizeof(xPolyPointReq) + (len << 1))) == NULL)
- return BadAlloc;
- len = (*decode_rtn)(in, in + len - stuff->padBytes, (short *)(&xreq[1]));
- xreq->reqType = xreqtype;
- xreq->coordMode = 1;
- xreq->drawable = drawable;
- xreq->gc = gc;
- xreq->length = client->req_len = (sizeof(xPolyPointReq) + len) >> 2;
- client->requestBuffer = (pointer)xreq;
-
- retval = (*ProcVector[xreqtype])(client);
- xfree(xreq);
- return retval;
-}
-
-int
-LbxDecodeFillPoly(ClientPtr client)
-{
- REQUEST(xLbxFillPolyReq);
- char *in;
- xFillPolyReq *xreq;
- int len;
- int retval;
- Drawable drawable;
- GContext gc;
-
- GFX_GET_DRAWABLE_AND_GC(xLbxFillPolyReq, in, len);
- if ((xreq = (xFillPolyReq *)
- xalloc(sizeof(xFillPolyReq) + (len << 1))) == NULL)
- return BadAlloc;
- len = LbxDecodePoints(in, in + len - stuff->padBytes, (short *) &xreq[1]);
- xreq->reqType = X_FillPoly;
- xreq->drawable = drawable;
- xreq->gc = gc;
- xreq->shape = stuff->shape;
- xreq->coordMode = 1;
- xreq->length = client->req_len = (sizeof(xFillPolyReq) + len) >> 2;
- client->requestBuffer = (pointer)xreq;
-
- retval = (*ProcVector[X_FillPoly])(client);
- xfree(xreq);
- return retval;
-}
-
-/*
- * Routines for decoding line drawing requests
- */
-
-#define DECODE_PSHORT(in, val) \
- if ((*(in) & 0xf0) != 0xf0) \
- (val) = *(CARD8 *)(in)++; \
- else { \
- (val) = ((*(CARD8 *)(in) & 0x0f) << 8) | *(CARD8 *)((in) + 1); \
- if ((val) >= 0xe00) \
- (val) -= 0x1000; \
- else \
- (val) += 0xf0; \
- (in) += 2; \
- }
-
-#define DECODE_SHORT(in, val) \
- if ((*(in) & 0xf0) != 0x80) \
- (val) = *(INT8 *)(in)++; \
- else { \
- (val) = ((*(CARD8 *)(in) & 0x0f) << 8) | *(CARD8 *)((in) + 1); \
- if ((val) & 0x0800) \
- (val) = ((val) | 0xf000) - 0x70; \
- else \
- (val) += 0x80; \
- (in) += 2; \
- }
-
-#define DECODE_USHORT(in, val) \
- if ((*(in) & 0xf0) != 0xf0) \
- (val) = *(CARD8 *)(in)++; \
- else { \
- (val) = (((*(CARD8 *)(in) & 0x0f) << 8) | *(CARD8 *)((in) + 1)) + 0xf0; \
- (in) += 2; \
- }
-
-#define DECODE_ANGLE(in, val) \
- if (*(INT8 *)(in) >= 0x6e) \
- (val) = (*(INT8 *)(in)++ - 0x67) * (15 << 6); \
- else if (*(INT8 *)(in) >= 0x5a) \
- (val) = (*(INT8 *)(in)++ - 0x5a) * (5 << 6); \
- else if (*(INT8 *)(in) <= (INT8)0x91) \
- (val) = (*(INT8 *)(in)++ - (INT8)0x98) * (15 << 6); \
- else if (*(INT8 *)(in) <= (INT8)0xa5) \
- (val) = (*(INT8 *)(in)++ - (INT8)0xa6) * (5 << 6); \
- else { \
- (val) = (*(CARD8 *)(in) << 8) | *(CARD8 *)((in) + 1); \
- (in) += 2; \
- }
-
-int
-LbxDecodePoints(char *in,
- char *inend,
- short *out)
-{
- char *start_out = (char *)out;
-
- while (in < inend) {
- DECODE_SHORT(in, *out);
- out++;
- DECODE_SHORT(in, *out);
- out++;
- }
- return ((char *)out - start_out);
-}
-
-int
-LbxDecodeSegment(char *in,
- char *inend,
- short *out)
-{
- short diff;
- short last_x = 0;
- short last_y = 0;
- char *start_out = (char *)out;
-
- while (in < inend) {
- DECODE_SHORT(in, diff);
- *out = last_x + diff;
- last_x += diff;
- out++;
- DECODE_SHORT(in, diff);
- *out = last_y + diff;
- last_y += diff;
- out++;
-
- DECODE_SHORT(in, diff);
- *out = last_x + diff;
- out++;
- DECODE_SHORT(in, diff);
- *out = last_y + diff;
- out++;
- }
- return ((char *)out - start_out);
-}
-
-int
-LbxDecodeRectangle(char *in,
- char *inend,
- short *out)
-{
- short diff;
- short last_x = 0;
- short last_y = 0;
- char *start_out = (char *)out;
-
- while (in < inend) {
- DECODE_SHORT(in, diff);
- *out = last_x + diff;
- last_x += diff;
- out++;
- DECODE_SHORT(in, diff);
- *out = last_y + diff;
- last_y += diff;
- out++;
-
- DECODE_USHORT(in, *(unsigned short *)out);
- out++;
- DECODE_USHORT(in, *(unsigned short *)out);
- out++;
- }
- return ((char *)out - start_out);
-}
-
-int
-LbxDecodeArc(char *in,
- char *inend,
- short *out)
-{
- short diff;
- short last_x = 0;
- short last_y = 0;
- char *start_out = (char *)out;
-
- while (in < inend) {
- DECODE_SHORT(in, diff);
- *out = last_x + diff;
- last_x += diff;
- out++;
- DECODE_SHORT(in, diff);
- *out = last_y + diff;
- last_y += diff;
- out++;
-
- DECODE_USHORT(in, *(unsigned short *)out);
- out++;
- DECODE_USHORT(in, *(unsigned short *)out);
- out++;
-
- DECODE_ANGLE(in, *out);
- out++;
- DECODE_ANGLE(in, *out);
- out++;
- }
- return ((char *)out - start_out);
-}
-
-int
-LbxDecodeCopyArea (ClientPtr client)
-{
- REQUEST(xLbxCopyAreaReq);
- char *in;
- xCopyAreaReq req;
- int len;
- Drawable srcDrawable, dstDrawable;
- GContext gc;
-
- GFX_GET_SRC_DST_DRAWABLE_AND_GC(xLbxCopyAreaReq, in, len);
- req.reqType = X_CopyArea;
- req.length = client->req_len = SIZEOF(xCopyAreaReq) >> 2;
- req.srcDrawable = srcDrawable;
- req.dstDrawable = dstDrawable;
- req.gc = gc;
- DECODE_PSHORT (in, req.srcX);
- DECODE_PSHORT (in, req.srcY);
- DECODE_PSHORT (in, req.dstX);
- DECODE_PSHORT (in, req.dstY);
- DECODE_USHORT (in, req.width);
- DECODE_USHORT (in, req.height);
- client->requestBuffer = (pointer) &req;
- return (*ProcVector[X_CopyArea])(client);
-}
-
-int
-LbxDecodeCopyPlane (ClientPtr client)
-{
- REQUEST(xLbxCopyPlaneReq);
- char *in;
- xCopyPlaneReq req;
- int len;
- Drawable srcDrawable, dstDrawable;
- GContext gc;
-
- GFX_GET_SRC_DST_DRAWABLE_AND_GC(xLbxCopyPlaneReq, in, len);
- req.reqType = X_CopyPlane;
- req.length = client->req_len = SIZEOF(xCopyPlaneReq) >> 2;
- req.srcDrawable = srcDrawable;
- req.dstDrawable = dstDrawable;
- req.gc = gc;
- DECODE_PSHORT (in, req.srcX);
- DECODE_PSHORT (in, req.srcY);
- DECODE_PSHORT (in, req.dstX);
- DECODE_PSHORT (in, req.dstY);
- DECODE_USHORT (in, req.width);
- DECODE_USHORT (in, req.height);
- req.bitPlane = stuff->bitPlane;
- client->requestBuffer = (pointer) &req;
- return (*ProcVector[X_CopyPlane])(client);
-}
-
-static pointer
-get_gfx_buffer(ClientPtr client,
- int len)
-{
- LbxClientPtr lbxClient = LbxClient(client);
- pointer tmp;
-
- /* XXX should probably shrink this sucker too */
- if (len > lbxClient->gb_size) {
- tmp = (pointer) xrealloc(lbxClient->gfx_buffer, len);
- if (!tmp)
- return (pointer) NULL;
- lbxClient->gfx_buffer = tmp;
- lbxClient->gb_size = len;
- }
- return lbxClient->gfx_buffer;
-}
-
-int
-LbxDecodePolyText (ClientPtr client)
-{
- REQUEST(xLbxPolyTextReq);
- char *in, *pos;
- xPolyTextReq *xreq;
- int len;
- Drawable drawable;
- GContext gc;
-
- GFX_GET_DRAWABLE_AND_GC(xLbxPolyTextReq, in, len);
- xreq = (xPolyTextReq *) get_gfx_buffer(client, sizeof (xPolyTextReq) + len);
- if (!xreq)
- return BadAlloc;
- xreq->reqType = stuff->lbxReqType == X_LbxPolyText8? X_PolyText8 : X_PolyText16;
- xreq->drawable = drawable;
- xreq->gc = gc;
- pos = in;
- DECODE_PSHORT(in, xreq->x);
- DECODE_PSHORT(in, xreq->y);
- len -= (in - pos);
- memmove ((char *) (xreq + 1), in, len);
- xreq->length = client->req_len = (sizeof (xPolyTextReq) + len) >> 2;
- client->requestBuffer = (pointer) xreq;
- return (*ProcVector[xreq->reqType])(client);
-}
-
-int
-LbxDecodeImageText (ClientPtr client)
-{
- REQUEST(xLbxImageTextReq);
- char *in, *pos;
- xImageTextReq *xreq;
- int len;
- Drawable drawable;
- GContext gc;
-
- GFX_GET_DRAWABLE_AND_GC(xLbxImageTextReq, in, len);
- xreq = (xImageTextReq *) get_gfx_buffer(client, sizeof (xImageTextReq) + len);
- if (!xreq)
- return BadAlloc;
- xreq->reqType = stuff->lbxReqType == X_LbxImageText8? X_ImageText8 : X_ImageText16;
- xreq->drawable = drawable;
- xreq->gc = gc;
- xreq->nChars = stuff->nChars;
- pos = in;
- DECODE_PSHORT(in, xreq->x);
- DECODE_PSHORT(in, xreq->y);
- len -= (in - pos);
- memmove ((char *) (xreq + 1), in, len);
- xreq->length = client->req_len = (sizeof (xImageTextReq) + len) >> 2;
- client->requestBuffer = (pointer) xreq;
- return (*ProcVector[xreq->reqType])(client);
-}
-
-int
-LbxDecodePutImage (ClientPtr client)
-{
- REQUEST (xLbxPutImageReq);
- char *in, *data;
- xPutImageReq xreq;
- int ppl, bpl, nbytes;
- int retval;
- int n;
-
- xreq.reqType = X_PutImage;
-
- in = (char *) stuff + sz_xLbxPutImageReq;
-
- if (stuff->bitPacked & 0x80) {
- xreq.format = (stuff->bitPacked >> 5) & 0x3;
- xreq.depth = ((stuff->bitPacked >> 2) & 0x7) + 1;
- xreq.leftPad = 0;
- } else {
- xreq.depth = (stuff->bitPacked >> 2) + 1;
- xreq.format = (*in >> 5) & 0x3;
- xreq.leftPad = *in++ & 0x1f;
- }
- DECODE_USHORT(in, xreq.width);
- DECODE_USHORT(in, xreq.height);
- DECODE_PSHORT(in, xreq.dstX);
- DECODE_PSHORT(in, xreq.dstY);
- if (client->swapped) {
- if (GFXdCacheEnt (stuff->cacheEnts) == GFXCacheNone ||
- GFXgCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- {
- swapl (in, n);
- if (GFXdCacheEnt (stuff->cacheEnts) == GFXCacheNone &&
- GFXgCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- swapl (in + 4, n);
- }
- }
- in += LbxDecodeGFXCache(client, stuff->cacheEnts, in,
- &xreq.drawable, &xreq.gc);
-
- ppl = xreq.width + xreq.leftPad;
- if (xreq.format != ZPixmap ||
- (xreq.depth == 1 && screenInfo.formats->bitsPerPixel == 1)) {
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
- bpl = BitmapBytePadProto(ppl);
-#else
- bpl = BitmapBytePad(ppl);
-#endif
- nbytes = bpl;
- if (xreq.format == XYPixmap)
- nbytes *= xreq.depth;
- } else {
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
- bpl = PixmapBytePadProto(ppl, xreq.depth);
-#else
- bpl = PixmapBytePad(ppl, xreq.depth);
-#endif
- nbytes = bpl;
- }
- nbytes *= xreq.height;
- xreq.length = ((nbytes + 3) >> 2) + (sz_xPutImageReq >> 2);
- /* +1 is because fillspan in DecodeFaxG42D seems to go 1 byte too far,
- * and I don't want to mess with that code */
- if ((data = (char *) xalloc ((xreq.length << 2) + 1)) == NULL)
- return BadAlloc;
-
- *((xPutImageReq *)data) = xreq;
-
- if (!stuff->compressionMethod)
- {
- memcpy(data + sz_xPutImageReq, in, nbytes);
- }
- else if (xreq.format != ZPixmap ||
- (xreq.depth == 1 && screenInfo.formats->bitsPerPixel == 1))
- {
- LbxBitmapCompMethod *compMethod;
-
- compMethod = LbxSrvrLookupBitmapCompMethod (LbxProxy(client),
- stuff->compressionMethod);
-
- if (!compMethod)
- {
- xfree (data);
- return (BadValue);
- }
- else
- {
- if (!compMethod->inited)
- {
- if (compMethod->compInit)
- (*compMethod->compInit)();
- compMethod->inited = 1;
- }
-
- (*compMethod->decompFunc) (
- (unsigned char *) in, (unsigned char *) data + sz_xPutImageReq,
- nbytes,
-#if BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER
- (ppl + BITMAP_SCANLINE_UNIT - 1) & ~BITMAP_SCANLINE_UNIT,
-#else
- ppl,
-#endif
- bpl,
- ((xConnSetup *) ConnectionInfo)->bitmapBitOrder == LSBFirst);
- }
- }
- else
- {
- LbxPixmapCompMethod *compMethod;
-
- compMethod = LbxSrvrLookupPixmapCompMethod (LbxProxy(client),
- stuff->compressionMethod);
-
- if (!compMethod)
- {
- xfree (data);
- return (BadValue);
- }
- else
- {
- if (!compMethod->inited)
- {
- if (compMethod->compInit)
- (*compMethod->compInit)();
- compMethod->inited = 1;
- }
-
- (*compMethod->decompFunc) (
- in, (char *) data + sz_xPutImageReq,
- (int) xreq.height, bpl);
- }
- }
-
- client->req_len = xreq.length;
- client->requestBuffer = (pointer) data;
-
- retval = (*ProcVector[X_PutImage])(client);
- xfree(data);
- return retval;
-}
-
-int
-LbxDecodeGetImage (ClientPtr client)
-{
- REQUEST (xLbxGetImageReq);
- xLbxGetImageReply *reply = NULL;
- int lbxLen, xLen, n;
- int method = 0, bytes, status;
- xGetImageReply *theImage;
-
- REQUEST_SIZE_MATCH(xLbxGetImageReq);
-
- status = DoGetImage(client, stuff->format, stuff->drawable,
- stuff->x, stuff->y,
- (int)stuff->width, (int)stuff->height,
- stuff->planeMask, &theImage);
-
- if (status != Success)
- return (status);
-
- if ((reply = (xLbxGetImageReply *) xalloc (
- sz_xLbxGetImageReply + theImage->length)) == NULL)
- {
- xfree(theImage);
- return (BadAlloc);
- }
-
- if (stuff->format != ZPixmap ||
- (theImage->depth == 1 && screenInfo.formats->bitsPerPixel == 1))
- {
- LbxBitmapCompMethod *compMethod;
-
- compMethod = LbxSrvrFindPreferredBitmapCompMethod (LbxProxy(client));
-
- if (!compMethod)
- status = LBX_IMAGE_COMPRESS_NO_SUPPORT;
- else
- {
- if (!compMethod->inited)
- {
- if (compMethod->compInit)
- (*compMethod->compInit)();
- compMethod->inited = 1;
- }
-
- status = (*compMethod->compFunc) (
- (unsigned char *) &theImage[1],
- (unsigned char *) &reply[1],
- theImage->length,
- theImage->length,
-#if BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER
- (int) (stuff->width + BITMAP_SCANLINE_UNIT - 1) &
- ~BITMAP_SCANLINE_UNIT,
-#else
- (int) stuff->width,
-#endif
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
- BitmapBytePadProto(stuff->width),
-#else
- BitmapBytePad(stuff->width),
-#endif
- ((xConnSetup *) ConnectionInfo)->bitmapBitOrder == LSBFirst,
- &bytes);
-
- method = compMethod->methodOpCode;
- }
- }
- else
- {
- LbxPixmapCompMethod *compMethod;
-
- compMethod = LbxSrvrFindPreferredPixmapCompMethod (
- LbxProxy(client), (int) stuff->format, theImage->depth);
-
- if (!compMethod)
- status = LBX_IMAGE_COMPRESS_NO_SUPPORT;
- else
- {
- if (!compMethod->inited)
- {
- if (compMethod->compInit)
- (*compMethod->compInit)();
- compMethod->inited = 1;
- }
-
- status = (*compMethod->compFunc) (
- (char *) &theImage[1],
- (char *) &reply[1],
- theImage->length,
- (int) stuff->format,
- theImage->depth,
- (int) stuff->height,
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
- PixmapBytePadProto(stuff->width, theImage->depth),
-#else
- PixmapBytePad(stuff->width, theImage->depth),
-#endif
- &bytes);
-
- method = compMethod->methodOpCode;
- }
- }
-
- reply->type = X_Reply;
- reply->depth = theImage->depth;
- reply->sequenceNumber = client->sequence;
- reply->visual = theImage->visual;
- reply->pad1 = reply->pad2 = reply->pad3 = reply->pad4 = reply->pad5 = 0;
-
- if (status != LBX_IMAGE_COMPRESS_SUCCESS)
- {
- reply->compressionMethod = LbxImageCompressNone;
- reply->lbxLength = reply->xLength = (theImage->length + 3) >> 2;
- }
- else
- {
- reply->compressionMethod = method;
- reply->lbxLength = (bytes + 3) >> 2;
- reply->xLength = (theImage->length + 3) >> 2;
- }
-
- lbxLen = reply->lbxLength;
- xLen = reply->xLength;
-
- if (client->swapped)
- {
- swaps (&reply->sequenceNumber, n);
- swapl (&reply->lbxLength, n);
- swapl (&reply->xLength, n);
- swapl (&reply->visual, n);
- }
-
- if (reply->compressionMethod != LbxImageCompressNone)
- {
- /*
- * If the compressed image is greater that 25% of the original
- * image, run the GetImage reply through the regular stream
- * compressor. Otherwise, just write the compressed image.
- */
-
- if (lbxLen > (xLen / 4))
- {
- WriteToClient (client,
- sz_xLbxGetImageReply + (lbxLen << 2), (char *)reply);
- }
- else
- {
- UncompressedWriteToClient (client,
- sz_xLbxGetImageReply + (lbxLen << 2), (char *)reply);
- }
- }
- else
- {
- /*
- * Write back the original uncompressed image.
- */
-
- WriteToClient (client, sz_xLbxGetImageReply, (char *)reply);
- WriteToClient (client, lbxLen << 2, (char *)&theImage[1]);
- }
-
- xfree (theImage);
-
- if (reply)
- xfree ((char *) reply);
-
- return (Success);
-}
diff --git a/nx-X11/programs/Xserver/lbx/lbxmain.c b/nx-X11/programs/Xserver/lbx/lbxmain.c
deleted file mode 100644
index 9139dfbed..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxmain.c
+++ /dev/null
@@ -1,1760 +0,0 @@
-/* $Xorg: lbxmain.c,v 1.4 2001/02/09 02:05:16 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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 1992 Network Computing Devices
- *
- * 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, and that the name of NCD. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. NCD. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxmain.c,v 1.12 2001/10/28 03:34:12 tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <sys/types.h>
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include <X11/Xos.h>
-#include "misc.h"
-#include "os.h"
-#include "dixstruct.h"
-#include "resource.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "gcstruct.h"
-#include "extnsionst.h"
-#include "servermd.h"
-#define _XLBX_SERVER_
-#include <X11/extensions/lbxstr.h>
-#include <X11/extensions/lbxdeltastr.h>
-#include "lbxserve.h"
-#include <X11/extensions/lbximage.h>
-#include "lbxsrvopts.h"
-#include "lbxtags.h"
-#include <X11/Xfuncproto.h>
-#include <errno.h>
-#ifndef Lynx
-#include <sys/uio.h>
-#else
-#include <uio.h>
-#endif
-#include <stdio.h>
-
-#ifndef X_NOT_POSIX
-#include <unistd.h>
-#endif
-
-#define CloseLbxClient 0xff
-
-#define MAXBYTESDIFF 8
-
-int LbxWhoAmI = 1; /*
- * for lbx zlib library to know who we are
- * server = 1
- * proxy = 0
- */
-
-
-static void LbxResetProc ( ExtensionEntry *extEntry );
-static void LbxFreeClient ( ClientPtr client );
-static void LbxShutdownProxy ( LbxProxyPtr proxy );
-static int DecodeLbxDelta ( ClientPtr client );
-
-static LbxProxyPtr proxyList;
-unsigned char LbxReqCode;
-int LbxEventCode;
-static int BadLbxClientCode;
-static int uid_seed;
-
-static int lbxCompressWorkProcCount;
-
-LbxClientPtr lbxClients[MAXCLIENTS];
-
-extern xConnSetupPrefix connSetupPrefix;
-extern char *ConnectionInfo;
-extern int (*LbxInitialVector[3])(ClientPtr);
-
-#ifdef DEBUG
-int lbxDebug = 0;
-#endif
-
-
-void
-LbxExtensionInit(void)
-{
- ExtensionEntry *extEntry;
-
- lbxCompressWorkProcCount = 0;
- proxyList = NULL;
- uid_seed = 0;
- if ((extEntry = AddExtension(LBXNAME, LbxNumberEvents, LbxNumberErrors,
- ProcLbxDispatch, SProcLbxDispatch,
- LbxResetProc, StandardMinorOpcode)))
- {
- LbxReqCode = (unsigned char)extEntry->base;
- LbxEventCode = extEntry->eventBase;
- BadLbxClientCode = extEntry->errorBase + BadLbxClient;
- LbxDixInit();
-
- LbxCmapInit ();
- DeclareExtensionSecurity(LBXNAME, TRUE);
- }
-}
-
-/*ARGSUSED*/
-static void
-LbxResetProc (ExtensionEntry *extEntry)
-{
- LbxResetTags();
- uid_seed = 0;
-}
-
-void
-LbxCloseClient (ClientPtr client)
-{
- xLbxCloseEvent closeEvent;
- ClientPtr master;
- LbxProxyPtr proxy;
- LbxClientPtr lbxClient = LbxClient(client);
- CARD32 id;
-
- if (!lbxClient)
- return;
- id = lbxClient->id;
- proxy = lbxClient->proxy;
-
- DBG (DBG_CLIENT, (stderr, "Close client %d\n", client->index));
- LbxFreeClient (client);
- if (!id)
- {
- isItTimeToYield = TRUE;
- CloseDownFileDescriptor (client);
- LbxShutdownProxy (proxy);
- }
- else
- {
- master = NULL;
- if (proxy->lbxClients[0])
- master = LbxProxyClient(proxy);
- if (master && !master->clientGone)
- {
- closeEvent.type = LbxEventCode;
- closeEvent.lbxType = LbxCloseEvent;
- closeEvent.client = id;
- closeEvent.sequenceNumber = master->sequence;
- closeEvent.pad1 = closeEvent.pad2 = closeEvent.pad3 =
- closeEvent.pad4 = closeEvent.pad5 = closeEvent.pad6 = 0;
- if (master->swapped) {
- int n;
-
- swaps(&closeEvent.sequenceNumber, n);
- swapl(&closeEvent.client, n);
- }
- WriteToClient(master, sizeof (closeEvent), (char *)&closeEvent);
- LbxForceOutput(proxy);
- }
- }
-}
-
-static int
-LbxReencodeEvent(ClientPtr client,
- LbxProxyPtr proxy,
- char *buf)
-{
- xEvent *ev = (xEvent *)buf;
- int n;
- lbxMotionCache *motionCache = &proxy->motionCache;
- int motionDelta = 0;
- Bool swapCache;
- xEvent tev, *sev;
-
- if (ev->u.u.type != MotionNotify) {
- if (proxy->dosquishing)
- return LbxSquishEvent(buf);
- return 0;
- }
-
- /*
- * Check if we can generate a motion delta event.
- *
- * The motion cache contains the last motion event the server sent.
- *
- * The following are always stored in the cache in the server's
- * byte order:
- * sequenceNumber, time, rootX, rootY, eventX, eventY
- * This is because when determining if we can do a delta, all
- * arithmetic must be done using the server's byte order.
- *
- * The following are stored in the byte order of the latest client
- * receiving a motion event (indicated by motionCache->swapped):
- * root, event, child, state
- * These fields do not need to be stored in the server's byte order
- * because we only use the '==' operator on them.
- */
-
- if (!proxy->motion_allowed_events) {
- DBG(DBG_CLIENT, (stderr, "throttling motion event for client %d\n", client->index));
- return sz_xEvent;
- }
- proxy->motion_allowed_events--;
-
- motionCache = &proxy->motionCache;
-
- if (!client->swapped)
- {
- swapCache = motionCache->swapped;
- sev = ev;
- }
- else
- {
- swapCache = !motionCache->swapped;
- sev = &tev;
- cpswaps (ev->u.keyButtonPointer.rootX,
- sev->u.keyButtonPointer.rootX);
- cpswaps (ev->u.keyButtonPointer.rootY,
- sev->u.keyButtonPointer.rootY);
- cpswaps (ev->u.keyButtonPointer.eventX,
- sev->u.keyButtonPointer.eventX);
- cpswaps (ev->u.keyButtonPointer.eventY,
- sev->u.keyButtonPointer.eventY);
- cpswaps (ev->u.u.sequenceNumber,
- sev->u.u.sequenceNumber);
- cpswapl (ev->u.keyButtonPointer.time,
- sev->u.keyButtonPointer.time);
- }
-
- if (swapCache)
- {
- swapl (&motionCache->root, n);
- swapl (&motionCache->event, n);
- swapl (&motionCache->child, n);
- swaps (&motionCache->state, n);
-
- motionCache->swapped = !motionCache->swapped;
- }
-
- motionDelta = 0;
-
- if (ev->u.u.detail == motionCache->detail &&
- ev->u.keyButtonPointer.root == motionCache->root &&
- ev->u.keyButtonPointer.event == motionCache->event &&
- ev->u.keyButtonPointer.child == motionCache->child &&
- ev->u.keyButtonPointer.state == motionCache->state &&
- ev->u.keyButtonPointer.sameScreen == motionCache->sameScreen) {
-
- int root_delta_x =
- sev->u.keyButtonPointer.rootX - motionCache->rootX;
- int root_delta_y =
- sev->u.keyButtonPointer.rootY - motionCache->rootY;
- int event_delta_x =
- sev->u.keyButtonPointer.eventX - motionCache->eventX;
- int event_delta_y =
- sev->u.keyButtonPointer.eventY - motionCache->eventY;
- unsigned long sequence_delta =
- sev->u.u.sequenceNumber - motionCache->sequenceNumber;
- unsigned long time_delta =
- sev->u.keyButtonPointer.time - motionCache->time;
-
- if (root_delta_x == event_delta_x &&
- event_delta_x >= -128 && event_delta_x < 128 &&
- root_delta_y == event_delta_y &&
- event_delta_y >= -128 && event_delta_y < 128) {
-
- if (sequence_delta == 0 && time_delta < 256) {
-
- lbxQuickMotionDeltaEvent *mev =
- (lbxQuickMotionDeltaEvent *)(buf + sz_xEvent -
- sz_lbxQuickMotionDeltaEvent);
-
- mev->type = LbxEventCode + LbxQuickMotionDeltaEvent;
- mev->deltaTime = time_delta;
- mev->deltaX = event_delta_x;
- mev->deltaY = event_delta_y;
-
- motionDelta = sz_xEvent - sz_lbxQuickMotionDeltaEvent;
-
- } else if (sequence_delta < 65536 && time_delta < 65536) {
-
- lbxMotionDeltaEvent *mev =
- (lbxMotionDeltaEvent *)(buf + sz_xEvent -
- sz_lbxMotionDeltaEvent);
-
- mev->type = LbxEventCode;
- mev->lbxType = LbxMotionDeltaEvent;
- mev->deltaTime = time_delta;
- mev->deltaSequence = sequence_delta;
- mev->deltaX = event_delta_x;
- mev->deltaY = event_delta_y;
-
- if (LbxProxyClient(proxy)->swapped)
- {
- swaps (&mev->deltaTime, n);
- swaps (&mev->deltaSequence, n);
- }
-
- motionDelta = sz_xEvent - sz_lbxMotionDeltaEvent;
- }
- }
- }
-
- motionCache->sequenceNumber = sev->u.u.sequenceNumber;
- motionCache->time = sev->u.keyButtonPointer.time;
- motionCache->rootX = sev->u.keyButtonPointer.rootX;
- motionCache->rootY = sev->u.keyButtonPointer.rootY;
- motionCache->eventX = sev->u.keyButtonPointer.eventX;
- motionCache->eventY = sev->u.keyButtonPointer.eventY;
-
- if (motionDelta)
- return motionDelta;
-
- ev->u.keyButtonPointer.pad1 = 0;
- motionCache->detail = ev->u.u.detail;
- motionCache->root = ev->u.keyButtonPointer.root;
- motionCache->event = ev->u.keyButtonPointer.event;
- motionCache->child = ev->u.keyButtonPointer.child;
- motionCache->state = ev->u.keyButtonPointer.state;
- motionCache->sameScreen = ev->u.keyButtonPointer.sameScreen;
- return 0;
-}
-
-static int
-LbxComposeDelta(LbxProxyPtr proxy,
- char *reply,
- int len,
- char *buf)
-{
- int diffs;
- int cindex;
- int n;
- xLbxDeltaReq *p = (xLbxDeltaReq *)buf;
-
- diffs = LBXDeltaMinDiffs(&proxy->outdeltas, (unsigned char *)reply, len,
- min(MAXBYTESDIFF, (len - sz_xLbxDeltaReq) >> 1),
- &cindex);
- if (diffs < 0) {
- LBXAddDeltaOut(&proxy->outdeltas, (unsigned char *)reply, len);
- return 0;
- }
- LBXEncodeDelta(&proxy->outdeltas, (unsigned char *)reply, diffs, cindex,
- (unsigned char *)(&buf[sz_xLbxDeltaReq]));
- LBXAddDeltaOut(&proxy->outdeltas, (unsigned char *)reply, len);
- p->reqType = LbxEventCode;
- p->lbxReqType = LbxDeltaEvent;
- p->diffs = diffs;
- p->cindex = cindex;
- len = (sz_xLbxDeltaReq + sz_xLbxDiffItem * diffs + 3) & ~3;
- p->length = len >> 2;
- if (LbxProxyClient(proxy)->swapped) {
- swaps(&p->length, n);
- }
- return len;
-}
-
-void
-LbxReencodeOutput(ClientPtr client,
- char *pbuf,
- int *pcount,
- char *cbuf,
- int *ccount)
-{
- LbxClientPtr lbxClient = LbxClient(client);
- LbxProxyPtr proxy = lbxClient->proxy;
- CARD32 len;
- int n;
- int count = *ccount;
- char *obuf = cbuf;
-
- if (client->clientState != ClientStateRunning) {
- if (DELTA_CACHEABLE(&proxy->outdeltas, count) &&
- (n = LbxComposeDelta(proxy, cbuf, count, proxy->oDeltaBuf))) {
- memcpy(obuf, proxy->oDeltaBuf, n);
- *ccount -= (count - n);
- }
- return;
- }
- if (lbxClient->bytes_remaining) {
- if (count < lbxClient->bytes_remaining) {
- lbxClient->bytes_remaining -= count;
- return;
- }
- if (DELTA_CACHEABLE(&proxy->outdeltas, lbxClient->bytes_in_reply)) {
- len = lbxClient->bytes_in_reply - lbxClient->bytes_remaining;
- pbuf += (*pcount - len);
- memcpy(proxy->replyBuf, pbuf, len);
- memcpy(proxy->replyBuf + len, cbuf, lbxClient->bytes_remaining);
- n = LbxComposeDelta(proxy, proxy->replyBuf,
- lbxClient->bytes_in_reply, proxy->oDeltaBuf);
- if (!n)
- obuf += lbxClient->bytes_remaining;
- else if (n <= len) {
- memcpy(pbuf, proxy->oDeltaBuf, n);
- *pcount -= (len - n);
- *ccount -= lbxClient->bytes_remaining;
- } else {
- memcpy(pbuf, proxy->oDeltaBuf, len);
- memcpy(obuf, proxy->oDeltaBuf + len, n - len);
- *ccount -= lbxClient->bytes_remaining - (n - len);
- obuf += n - len;
- }
- } else
- obuf += lbxClient->bytes_remaining;
- cbuf += lbxClient->bytes_remaining;
- count -= lbxClient->bytes_remaining;
- lbxClient->bytes_remaining = 0;
- }
- while (count) {
- lbxClient->bytes_in_reply = sz_xEvent;
- if (((xGenericReply *)cbuf)->type == X_Reply) {
- len = ((xGenericReply *)cbuf)->length;
- if (client->swapped) {
- swapl(&len, n);
- }
- lbxClient->bytes_in_reply += (len << 2);
- if (LbxProxyClient(proxy)->swapped != client->swapped) {
- swapl(&((xGenericReply *)cbuf)->length, n);
- }
- if (count < lbxClient->bytes_in_reply) {
- lbxClient->bytes_remaining = lbxClient->bytes_in_reply - count;
- if (obuf != cbuf)
- memmove(obuf, cbuf, count);
- return;
- }
- } else if (((xGenericReply *)cbuf)->type > X_Reply &&
- ((xGenericReply *)cbuf)->type < LASTEvent &&
- (n = LbxReencodeEvent(client, proxy, cbuf))) {
- cbuf += n;
- *ccount -= n;
- count -= n;
- if (n == sz_xEvent)
- continue;
- lbxClient->bytes_in_reply -= n;
- }
- if (DELTA_CACHEABLE(&proxy->outdeltas, lbxClient->bytes_in_reply) &&
- (n = LbxComposeDelta(proxy, cbuf, lbxClient->bytes_in_reply,
- proxy->oDeltaBuf))) {
- memcpy(obuf, proxy->oDeltaBuf, n);
- obuf += n;
- *ccount -= (lbxClient->bytes_in_reply - n);
- } else {
- if (obuf != cbuf)
- memmove(obuf, cbuf, lbxClient->bytes_in_reply);
- obuf += lbxClient->bytes_in_reply;
- }
- cbuf += lbxClient->bytes_in_reply;
- count -= lbxClient->bytes_in_reply;
- }
-}
-
-/*ARGSUSED*/
-static void
-LbxReplyCallback(CallbackListPtr *pcbl,
- pointer nulldata,
- pointer calldata)
-{
- ReplyInfoRec *pri = (ReplyInfoRec *)calldata;
- ClientPtr client = pri->client;
- LbxClientPtr lbxClient;
- REQUEST(xReq);
-
- if (!pri->startOfReply || stuff->reqType > 127)
- return;
- lbxClient = LbxClient(client);
- if (lbxClient)
- ZeroReplyPadBytes(pri->replyData, stuff->reqType);
-}
-
-/*
- * XXX If you think this is moronic, you're in good company,
- * but things definitely hang if we don't have this.
- */
-/* ARGSUSED */
-static Bool
-LbxCheckCompressInput (ClientPtr dummy1,
- pointer dummy2)
-{
- LbxProxyPtr proxy;
-
- if (!lbxCompressWorkProcCount)
- return TRUE;
-
- for (proxy = proxyList; proxy; proxy = proxy->next) {
- if (proxy->compHandle &&
- proxy->streamOpts.streamCompInputAvail(proxy->fd))
- AvailableClientInput (LbxProxyClient(proxy));
- }
- return FALSE;
-}
-
-static Bool
-LbxIsClientBlocked (LbxClientPtr lbxClient)
-{
- LbxProxyPtr proxy = lbxClient->proxy;
-
- return (lbxClient->ignored ||
- (GrabInProgress && lbxClient->client->index != GrabInProgress &&
- lbxClient != proxy->lbxClients[0]));
-}
-
-static void
-LbxSwitchRecv (LbxProxyPtr proxy,
- LbxClientPtr lbxClient)
-{
- ClientPtr client;
-
- proxy->curRecv = lbxClient;
- if (!lbxClient || lbxClient->client->clientGone)
- {
- DBG(DBG_CLIENT, (stderr, "switching to dispose input\n"));
- lbxClient = proxy->lbxClients[0];
- if (!lbxClient)
- return;
- }
- client = lbxClient->client;
- DBG (DBG_SWITCH, (stderr, "switching input to client %d\n", client->index));
-
- SwitchClientInput (client, FALSE);
- proxy->curDix = lbxClient;
-}
-
-/* ARGSUSED */
-static Bool
-LbxWaitForUnblocked (ClientPtr client,
- pointer closure)
-{
- LbxClientPtr lbxClient;
- LbxProxyPtr proxy;
-
- if (client->clientGone)
- return TRUE;
- lbxClient = LbxClient(client);
- if (!lbxClient)
- return TRUE;
- proxy = lbxClient->proxy;
- if (LbxIsClientBlocked (lbxClient) ||
- ((lbxClient != proxy->curDix) && proxy->curDix->reqs_pending &&
- !LbxIsClientBlocked(proxy->curDix)))
- return FALSE;
- lbxClient->input_blocked = FALSE;
- DBG (DBG_BLOCK, (stderr, "client %d no longer blocked, switching\n",
- client->index));
- SwitchClientInput (client, TRUE);
- proxy->curDix = lbxClient;
- return TRUE;
-}
-
-void
-LbxSetForBlock(LbxClientPtr lbxClient)
-{
- lbxClient->reqs_pending++;
- if (!lbxClient->input_blocked)
- {
- lbxClient->input_blocked = TRUE;
- QueueWorkProc(LbxWaitForUnblocked, lbxClient->client, NULL);
- }
-}
-
-/* ARGSUSED */
-static int
-LbxWaitForUngrab (ClientPtr client,
- pointer closure)
-{
- LbxClientPtr lbxClient = LbxClient(client);
- LbxProxyPtr proxy;
- xLbxListenToAllEvent ungrabEvent;
-
- if (client->clientGone || !lbxClient)
- return TRUE;
- if (GrabInProgress)
- return FALSE;
- proxy = lbxClient->proxy;
- proxy->grabClient = 0;
- ungrabEvent.type = LbxEventCode;
- ungrabEvent.lbxType = LbxListenToAll;
- ungrabEvent.pad1 = ungrabEvent.pad2 = ungrabEvent.pad3 =
- ungrabEvent.pad4 = ungrabEvent.pad5 = ungrabEvent.pad6 =
- ungrabEvent.pad7 = 0;
- WriteToClient (client,
- sizeof(xLbxListenToAllEvent), (char *)&ungrabEvent);
- LbxForceOutput(proxy);
- return TRUE;
-}
-
-static void
-LbxServerGrab(LbxProxyPtr proxy)
-{
- LbxClientPtr grabbingLbxClient;
- xLbxListenToOneEvent grabEvent;
-
- /*
- * If the current grabbing client has changed, then we need
- * to send a message to update the proxy.
- */
-
- grabEvent.type = LbxEventCode;
- grabEvent.lbxType = LbxListenToOne;
- if (!(grabbingLbxClient = lbxClients[GrabInProgress]) ||
- grabbingLbxClient->proxy != proxy)
- grabEvent.client = 0xffffffff; /* client other than a proxy client */
- else
- grabEvent.client = grabbingLbxClient->id;
- grabEvent.pad1 = grabEvent.pad2 = grabEvent.pad3 =
- grabEvent.pad4 = grabEvent.pad5 = grabEvent.pad6 = 0;
- if (LbxProxyClient(proxy)->swapped) {
- int n;
- swapl(&grabEvent.client, n);
- }
- WriteToClient(LbxProxyClient(proxy),
- sizeof(xLbxListenToOneEvent), (char *)&grabEvent);
- LbxForceOutput(proxy);
- if (!proxy->grabClient)
- QueueWorkProc(LbxWaitForUngrab, LbxProxyClient(proxy), NULL);
- proxy->grabClient = GrabInProgress;
-}
-
-#define MAJOROP(client) ((xReq *)client->requestBuffer)->reqType
-#define MINOROP(client) ((xReq *)client->requestBuffer)->data
-
-static Bool lbxCacheable[] = {
- FALSE, /* LbxQueryVersion 0 */
- FALSE, /* LbxStartProxy 1 */
- TRUE, /* LbxStopProxy 2 */
- FALSE, /* LbxSwitch 3 */
- FALSE, /* LbxNewClient 4 */
- TRUE, /* LbxCloseClient 5 */
- TRUE, /* LbxModifySequence 6 */
- FALSE, /* LbxAllowMotion 7 */
- TRUE, /* LbxIncrementPixel 8 */
- FALSE, /* LbxDelta 9 */
- TRUE, /* LbxGetModifierMapping 10 */
- FALSE, /* nothing 11 */
- TRUE, /* LbxInvalidateTag 12 */
- TRUE, /* LbxPolyPoint 13 */
- TRUE, /* LbxPolyLine 14 */
- TRUE, /* LbxPolySegment 15 */
- TRUE, /* LbxPolyRectangle 16 */
- TRUE, /* LbxPolyArc 17 */
- TRUE, /* LbxFillPoly 18 */
- TRUE, /* LbxPolyFillRectangle 19 */
- TRUE, /* LbxPolyFillArc 20 */
- TRUE, /* LbxGetKeyboardMapping 21 */
- TRUE, /* LbxQueryFont 22 */
- TRUE, /* LbxChangeProperty 23 */
- TRUE, /* LbxGetProperty 24 */
- TRUE, /* LbxTagData 25 */
- TRUE, /* LbxCopyArea 26 */
- TRUE, /* LbxCopyPlane 27 */
- TRUE, /* LbxPolyText8 28 */
- TRUE, /* LbxPolyText16 29 */
- TRUE, /* LbxImageText8 30 */
- TRUE, /* LbxImageText16 31 */
- FALSE, /* LbxQueryExtension 32 */
- TRUE, /* LbxPutImage 33 */
- TRUE, /* LbxGetImage 34 */
- FALSE, /* LbxBeginLargeRequest 35 */
- FALSE, /* LbxLargeRequestData 36 */
- FALSE, /* LbxEndLargeRequest 37 */
- FALSE, /* LbxInternAtoms 38 */
- TRUE, /* LbxGetWinAttrAndGeom 39 */
- TRUE, /* LbxGrabCmap 40 */
- TRUE, /* LbxReleaseCmap 41 */
- TRUE, /* LbxAllocColor 42 */
- TRUE, /* LbxSync 43 */
-};
-
-#define NUM(a) (sizeof (a) / sizeof (a[0]))
-
-static int
-LbxReadRequestFromClient (ClientPtr client)
-{
- int ret;
- LbxClientPtr lbxClient = LbxClient(client);
- LbxProxyPtr proxy = lbxClient->proxy;
- ClientPtr masterClient = LbxProxyClient(proxy);
- Bool isblocked;
- Bool cacheable;
-
- DBG (DBG_READ_REQ, (stderr, "Reading request from client %d\n", client->index));
-
- if (GrabInProgress && (proxy->grabClient != GrabInProgress))
- LbxServerGrab(proxy);
- isblocked = LbxIsClientBlocked(lbxClient);
-
- if (lbxClient->reqs_pending && !isblocked) {
- ret = StandardReadRequestFromClient(client);
- if (ret > 0 && (MAJOROP(client) == LbxReqCode) &&
- (MINOROP(client) == X_LbxEndLargeRequest))
- ret = PrepareLargeReqBuffer(client);
- if (!--lbxClient->reqs_pending && (lbxClient != proxy->curRecv))
- LbxSwitchRecv (proxy, proxy->curRecv);
- return ret;
- }
- while (1) {
- ret = StandardReadRequestFromClient(masterClient);
- if (ret <= 0)
- return ret;
- client->requestBuffer = masterClient->requestBuffer;
- client->req_len = masterClient->req_len;
- cacheable = client->clientState == ClientStateRunning;
- if (cacheable && (MAJOROP(client) == LbxReqCode)) {
- /* Check to see if this request is delta cached */
- if (MINOROP(client) < NUM(lbxCacheable))
- cacheable = lbxCacheable[MINOROP(client)];
- switch (MINOROP(client)) {
- case X_LbxSwitch:
- /* Switch is sent by proxy */
- if (masterClient->swapped)
- SProcLbxSwitch (client);
- else
- ProcLbxSwitch (client);
- return 0;
- case X_LbxDelta:
- ret = DecodeLbxDelta (client);
- DBG(DBG_DELTA,
- (stderr,"delta decompressed msg %d, len = %d\n",
- (unsigned)((unsigned char *)client->requestBuffer)[0],
- ret));
- break;
- case X_LbxEndLargeRequest:
- if (!isblocked)
- ret = PrepareLargeReqBuffer(client);
- break;
- }
- }
- if (cacheable && DELTA_CACHEABLE(&proxy->indeltas, ret)) {
- DBG(DBG_DELTA,
- (stderr, "caching msg %d, len = %d, index = %d\n",
- (unsigned)((unsigned char *)client->requestBuffer)[0],
- ret, proxy->indeltas.nextDelta));
- LBXAddDeltaIn(&proxy->indeltas, client->requestBuffer, ret);
- }
- if (client->swapped != masterClient->swapped) {
- char n;
- /* put length in client order */
- swaps(&((xReq *)client->requestBuffer)->length, n);
- }
- if (!isblocked)
- return ret;
- DBG (DBG_BLOCK, (stderr, "Stashing %d bytes for %d\n",
- ret, client->index));
- AppendFakeRequest (client, client->requestBuffer, ret);
- LbxSetForBlock(lbxClient);
- }
-}
-
-static LbxClientPtr
-LbxInitClient (LbxProxyPtr proxy,
- ClientPtr client,
- CARD32 id)
-{
- LbxClientPtr lbxClient;
- int i;
-
- lbxClient = (LbxClientPtr) xalloc (sizeof (LbxClientRec));
- if (!lbxClient)
- return NULL;
- lbxClient->id = id;
- lbxClient->client = client;
- lbxClient->proxy = proxy;
- lbxClient->ignored = FALSE;
- lbxClient->input_blocked = FALSE;
- lbxClient->reqs_pending = 0;
- lbxClient->bytes_in_reply = 0;
- lbxClient->bytes_remaining = 0;
- client->readRequest = LbxReadRequestFromClient;
- bzero (lbxClient->drawableCache, sizeof (lbxClient->drawableCache));
- bzero (lbxClient->gcontextCache, sizeof (lbxClient->gcontextCache));
- lbxClients[client->index] = lbxClient;
- for (i = 0; proxy->lbxClients[i]; i++)
- ;
- if (i > proxy->maxIndex)
- proxy->maxIndex = i;
- proxy->lbxClients[i] = lbxClient;
- proxy->numClients++;
- lbxClient->gfx_buffer = (pointer) NULL;
- lbxClient->gb_size = 0;
- return lbxClient;
-}
-
-static void
-LbxFreeClient (ClientPtr client)
-{
- LbxClientPtr lbxClient = LbxClient(client);
- LbxProxyPtr proxy = lbxClient->proxy;
- int i;
-
- if (lbxClient != proxy->lbxClients[0]) {
- if (lbxClient == proxy->curRecv)
- LbxSwitchRecv(proxy, NULL);
- else if (lbxClient == proxy->curDix)
- LbxSwitchRecv(proxy, proxy->curRecv);
- }
-
- --proxy->numClients;
- lbxClients[client->index] = NULL;
- for (i = 0; i <= proxy->maxIndex; i++) {
- if (proxy->lbxClients[i] == lbxClient) {
- proxy->lbxClients[i] = NULL;
- break;
- }
- }
- while (proxy->maxIndex >= 0 && !proxy->lbxClients[proxy->maxIndex])
- --proxy->maxIndex;
- xfree(lbxClient->gfx_buffer);
- client->readRequest = StandardReadRequestFromClient;
- xfree (lbxClient);
-}
-
-static void
-LbxFreeProxy (LbxProxyPtr proxy)
-{
- LbxProxyPtr *p;
-
- LBXFreeDeltaCache(&proxy->indeltas);
- LBXFreeDeltaCache(&proxy->outdeltas);
- LbxFreeOsBuffers(proxy);
- if (proxy->iDeltaBuf)
- xfree(proxy->iDeltaBuf);
- if (proxy->replyBuf)
- xfree(proxy->replyBuf);
- if (proxy->oDeltaBuf)
- xfree(proxy->oDeltaBuf);
- if (proxy->compHandle)
- proxy->streamOpts.streamCompFreeHandle(proxy->compHandle);
- if (proxy->bitmapCompMethods)
- xfree (proxy->bitmapCompMethods);
- if (proxy->pixmapCompMethods)
- xfree (proxy->pixmapCompMethods);
- if (proxy->pixmapCompDepths)
- {
- int i;
- for (i = 0; i < proxy->numPixmapCompMethods; i++)
- xfree (proxy->pixmapCompDepths[i]);
- xfree (proxy->pixmapCompDepths);
- }
-
- for (p = &proxyList; *p; p = &(*p)->next) {
- if (*p == proxy) {
- *p = proxy->next;
- break;
- }
- }
- if (!proxyList)
- DeleteCallback(&ReplyCallback, LbxReplyCallback, NULL);
-
- xfree (proxy);
-}
-
-LbxProxyPtr
-LbxPidToProxy(int pid)
-{
- LbxProxyPtr proxy;
-
- for (proxy = proxyList; proxy; proxy = proxy->next) {
- if (proxy->pid == pid)
- return proxy;
- }
- return NULL;
-}
-
-static void
-LbxShutdownProxy (LbxProxyPtr proxy)
-{
- int i;
- ClientPtr client;
-
- if (proxy->compHandle)
- --lbxCompressWorkProcCount;
- while (proxy->grabbedCmaps)
- LbxReleaseCmap(proxy->grabbedCmaps, FALSE);
- for (i = 0; i <= proxy->maxIndex; i++)
- {
- if (proxy->lbxClients[i])
- {
- client = proxy->lbxClients[i]->client;
- if (!client->clientGone)
- CloseDownClient (client);
- }
- }
- LbxFlushTags(proxy);
- LbxFreeProxy(proxy);
-}
-
-
-int
-ProcLbxQueryVersion (ClientPtr client)
-{
- /* REQUEST(xLbxQueryVersionReq); */
- xLbxQueryVersionReply rep;
- register int n;
-
- REQUEST_SIZE_MATCH(xLbxQueryVersionReq);
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.majorVersion = LBX_MAJOR_VERSION;
- rep.minorVersion = LBX_MINOR_VERSION;
- rep.pad0 = rep.pad1 = rep.pad2 = rep.pad3 = rep.pad4 = 0;
-
- if (client->swapped) {
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, n);
- swaps(&rep.majorVersion, n);
- swaps(&rep.minorVersion, n);
- }
- WriteToClient(client, sizeof(xLbxQueryVersionReply), (char *)&rep);
- return (client->noClientException);
-}
-
-static int
-NextProxyID (void)
-{
- LbxProxyPtr proxy;
- int id;
-
- for (id = 1; id < MAX_NUM_PROXIES; id++) {
- for (proxy = proxyList; proxy && proxy->pid != id; proxy = proxy->next)
- ;
- if (!proxy)
- return id;
- }
- return -1;
-}
-
-int
-ProcLbxStartProxy (ClientPtr client)
-{
- REQUEST(xLbxStartProxyReq);
- LbxProxyPtr proxy;
- LbxClientPtr lbxClient;
- int reqlen;
- int replylen;
- xLbxStartReply *replybuf;
- LbxNegOptsRec negopt;
- register int n;
- pointer compHandle = NULL;
-
- REQUEST_AT_LEAST_SIZE(xLbxStartProxyReq);
- if (lbxClients[client->index])
- return BadLbxClientCode;
- proxy = (LbxProxyPtr) xalloc (sizeof (LbxProxyRec));
- if (!proxy)
- return BadAlloc;
- bzero(proxy, sizeof (LbxProxyRec));
- proxy->pid = NextProxyID();
- if (proxy->pid < 0) { /* too many proxies */
- xfree(proxy);
- return BadAlloc;
- }
- proxy->uid = ++uid_seed;
- if (!proxyList)
- AddCallback(&ReplyCallback, LbxReplyCallback, NULL);
-
- if(!proxyList)
- proxyList = proxy;
- else{
- proxy->next = proxyList;
- proxyList = proxy;
- }
-
- /*
- * Don't know exactly how big the reply will be, but it won't be
- * bigger than the request
- */
- reqlen = client->req_len << 2;
- replybuf = (xLbxStartReply *) xalloc(max(reqlen, sz_xLbxStartReply));
- if (!replybuf) {
- LbxFreeProxy(proxy);
- return BadAlloc;
- }
-
- LbxOptionInit(&negopt);
-
- replylen = LbxOptionParse(&negopt,
- (unsigned char *)&stuff[1],
- reqlen - sz_xLbxStartProxyReq,
- (unsigned char *)&replybuf->optDataStart);
- if (replylen < 0) {
- /*
- * Didn't understand option format, so we'll just end up
- * using the defaults. Set nopts so that the proxy will
- * be informed that we rejected the options because of
- * decoding problems.
- */
- LbxOptionInit(&negopt);
- negopt.nopts = 0xff;
- replylen = 0;
- }
-
- if (LBXInitDeltaCache(&proxy->indeltas, negopt.proxyDeltaN,
- negopt.proxyDeltaMaxLen) < 0
- ||
- LBXInitDeltaCache(&proxy->outdeltas, negopt.serverDeltaN,
- negopt.serverDeltaMaxLen) < 0) {
- LbxFreeProxy(proxy);
- xfree(replybuf);
- return BadAlloc;
- }
-
- n = 0;
- if (negopt.proxyDeltaN)
- n = negopt.proxyDeltaMaxLen;
- if (negopt.serverDeltaN && negopt.serverDeltaMaxLen > n)
- n = negopt.serverDeltaMaxLen;
- if (n &&
- (!(proxy->iDeltaBuf = (char *)xalloc (n)) ||
- !(proxy->replyBuf = (char *)xalloc (n)) ||
- !(proxy->oDeltaBuf = (char *)xalloc (n)))) {
- LbxFreeProxy(proxy);
- xfree(replybuf);
- return BadAlloc;
- }
-
- MakeClientGrabImpervious(client); /* proxy needs to be grab-proof */
- proxy->fd = ClientConnectionNumber(client);
- if (negopt.streamOpts.streamCompInit) {
- compHandle =
- (*negopt.streamOpts.streamCompInit)(proxy->fd, negopt.streamOpts.streamCompArg);
- if (!compHandle) {
- LbxFreeProxy(proxy);
- xfree(replybuf);
- return BadAlloc;
- }
- }
- proxy->ofirst = NULL;
- proxy->olast = NULL;
- if (!LbxInitClient (proxy, client, 0))
- {
- LbxFreeProxy(proxy);
- xfree(replybuf);
- return BadAlloc;
- }
- proxy->dosquishing = negopt.squish;
- proxy->numBitmapCompMethods = negopt.numBitmapCompMethods;
- proxy->bitmapCompMethods = negopt.bitmapCompMethods;
- proxy->numPixmapCompMethods = negopt.numPixmapCompMethods;
- proxy->pixmapCompMethods = negopt.pixmapCompMethods;
- proxy->pixmapCompDepths = negopt.pixmapCompDepths;
-
- proxy->streamOpts = negopt.streamOpts;
- proxy->useTags = negopt.useTags;
-
- proxy->grabbedCmaps = NULL;
-
- /* send reply */
- replybuf->type = X_Reply;
- replybuf->nOpts = negopt.nopts;
- replybuf->sequenceNumber = client->sequence;
-
- replylen += sz_xLbxStartReplyHdr;
- if (replylen < sz_xLbxStartReply)
- replylen = sz_xLbxStartReply;
- replybuf->length = (replylen - sz_xLbxStartReply + 3) >> 2;
- if (client->swapped) {
- swaps(&replybuf->sequenceNumber, n);
- swapl(&replybuf->length, n);
- }
- lbxClient = LbxClient(client);
- WriteToClient(client, replylen, (char *)replybuf);
-
- LbxProxyConnection(client, proxy);
- lbxClient = proxy->lbxClients[0];
- proxy->curDix = lbxClient;
- proxy->curRecv = lbxClient;
- proxy->compHandle = compHandle;
-
- if (proxy->compHandle && !lbxCompressWorkProcCount++)
- QueueWorkProc(LbxCheckCompressInput, NULL, NULL);
-
- xfree(replybuf);
- return Success;
-}
-
-int
-ProcLbxStopProxy(ClientPtr client)
-{
- /* REQUEST(xLbxStopProxyReq); */
- LbxProxyPtr proxy;
- LbxClientPtr lbxClient = LbxClient(client);
-
- REQUEST_SIZE_MATCH(xLbxStopProxyReq);
-
- if (!lbxClient)
- return BadLbxClientCode;
- if (lbxClient->id)
- return BadLbxClientCode;
-
- proxy = lbxClient->proxy;
- LbxFreeClient (client);
- LbxShutdownProxy (proxy);
- return Success;
-}
-
-int
-ProcLbxSwitch(ClientPtr client)
-{
- REQUEST(xLbxSwitchReq);
- LbxProxyPtr proxy = LbxMaybeProxy(client);
- LbxClientPtr lbxClient;
- int i;
-
- REQUEST_SIZE_MATCH(xLbxSwitchReq);
- if (!proxy)
- return BadLbxClientCode;
- for (i = 0; i <= proxy->maxIndex; i++) {
- lbxClient = proxy->lbxClients[i];
- if (lbxClient && lbxClient->id == stuff->client) {
- LbxSwitchRecv (proxy, lbxClient);
- return Success;
- }
- }
- LbxSwitchRecv (proxy, NULL);
- return BadLbxClientCode;
-}
-
-int
-ProcLbxBeginLargeRequest(ClientPtr client)
-{
- REQUEST(xLbxBeginLargeRequestReq);
-
- client->sequence--;
- REQUEST_SIZE_MATCH(xLbxBeginLargeRequestReq);
- if (!AllocateLargeReqBuffer(client, stuff->largeReqLength << 2))
- return BadAlloc;
- return Success;
-}
-
-
-int
-ProcLbxLargeRequestData(ClientPtr client)
-{
- REQUEST(xLbxLargeRequestDataReq);
-
- client->sequence--;
- REQUEST_AT_LEAST_SIZE(xLbxLargeRequestDataReq);
- if (!AddToLargeReqBuffer(client, (char *) (stuff + 1),
- (client->req_len - 1) << 2))
- return BadAlloc;
- return Success;
-}
-
-
-int
-ProcLbxEndLargeRequest(ClientPtr client)
-{
- /* REQUEST(xReq); */
-
- client->sequence--;
- REQUEST_SIZE_MATCH(xReq);
- return BadAlloc;
-}
-
-
-int
-ProcLbxInternAtoms(ClientPtr client)
-{
- REQUEST(xLbxInternAtomsReq);
- LbxClientPtr lbxClient = LbxClient(client);
- xLbxInternAtomsReply *replyRet;
- char *ptr = (char *) stuff + sz_xLbxInternAtomsReq;
- Atom *atomsRet;
- int replyLen, i;
- char lenbuf[2];
- CARD16 len;
- char n;
-
- REQUEST_AT_LEAST_SIZE(xLbxInternAtomsReq);
-
- if (!lbxClient)
- return BadLbxClientCode;
- if (lbxClient->id)
- return BadLbxClientCode;
-
- replyLen = sz_xLbxInternAtomsReplyHdr + stuff->num * sizeof (Atom);
- if (replyLen < sz_xLbxInternAtomsReply)
- replyLen = sz_xLbxInternAtomsReply;
-
- if (!(replyRet = (xLbxInternAtomsReply *) xalloc (replyLen)))
- return BadAlloc;
-
- atomsRet = (Atom *) ((char *) replyRet + sz_xLbxInternAtomsReplyHdr);
-
- for (i = 0; i < stuff->num; i++)
- {
- lenbuf[0] = ptr[0];
- lenbuf[1] = ptr[1];
- len = *((CARD16 *) lenbuf);
- ptr += 2;
-
- if ((atomsRet[i] = MakeAtom (ptr, len, TRUE)) == BAD_RESOURCE)
- {
- xfree (replyRet);
- return BadAlloc;
- }
-
- ptr += len;
- }
-
- if (client->swapped)
- for (i = 0; i < stuff->num; i++)
- swapl (&atomsRet[i], n);
-
- replyRet->type = X_Reply;
- replyRet->sequenceNumber = client->sequence;
- replyRet->length = (replyLen - sz_xLbxInternAtomsReply + 3) >> 2;
-
- if (client->swapped) {
- swaps(&replyRet->sequenceNumber, n);
- swapl(&replyRet->length, n);
- }
-
- WriteToClient (client, replyLen, (char *) replyRet);
-
- xfree (replyRet);
-
- return Success;
-}
-
-
-int
-ProcLbxGetWinAttrAndGeom(ClientPtr client)
-{
- REQUEST(xLbxGetWinAttrAndGeomReq);
- xGetWindowAttributesReply wa;
- xGetGeometryReply wg;
- xLbxGetWinAttrAndGeomReply reply;
- WindowPtr pWin;
- int status;
-
- REQUEST_SIZE_MATCH(xLbxGetWinAttrAndGeomReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
- GetWindowAttributes(pWin, client, &wa);
-
- if ((status = GetGeometry(client, &wg)) != Success)
- return status;
-
- reply.type = X_Reply;
- reply.length = (sz_xLbxGetWinAttrAndGeomReply - 32) >> 2;
- reply.sequenceNumber = client->sequence;
-
- reply.backingStore = wa.backingStore;
- reply.visualID = wa.visualID;
-#if defined(__cplusplus) || defined(c_plusplus)
- reply.c_class = wa.c_class;
-#else
- reply.class = wa.class;
-#endif
- reply.bitGravity = wa.bitGravity;
- reply.winGravity = wa.winGravity;
- reply.backingBitPlanes = wa.backingBitPlanes;
- reply.backingPixel = wa.backingPixel;
- reply.saveUnder = wa.saveUnder;
- reply.mapInstalled = wa.mapInstalled;
- reply.mapState = wa.mapState;
- reply.override = wa.override;
- reply.colormap = wa.colormap;
- reply.allEventMasks = wa.allEventMasks;
- reply.yourEventMask = wa.yourEventMask;
- reply.doNotPropagateMask = wa.doNotPropagateMask;
- reply.pad1 = 0;
- reply.root = wg.root;
- reply.x = wg.x;
- reply.y = wg.y;
- reply.width = wg.width;
- reply.height = wg.height;
- reply.borderWidth = wg.borderWidth;
- reply.depth = wg.depth;
- reply.pad2 = 0;
-
- if (client->swapped)
- {
- register char n;
-
- swaps(&reply.sequenceNumber, n);
- swapl(&reply.length, n);
- swapl(&reply.visualID, n);
- swaps(&reply.class, n);
- swapl(&reply.backingBitPlanes, n);
- swapl(&reply.backingPixel, n);
- swapl(&reply.colormap, n);
- swapl(&reply.allEventMasks, n);
- swapl(&reply.yourEventMask, n);
- swaps(&reply.doNotPropagateMask, n);
- swapl(&reply.root, n);
- swaps(&reply.x, n);
- swaps(&reply.y, n);
- swaps(&reply.width, n);
- swaps(&reply.height, n);
- swaps(&reply.borderWidth, n);
- }
-
- WriteToClient(client, sizeof(xLbxGetWinAttrAndGeomReply), (char *)&reply);
- return(client->noClientException);
-}
-
-int
-ProcLbxNewClient(ClientPtr client)
-{
- REQUEST(xLbxNewClientReq);
- ClientPtr newClient;
- LbxProxyPtr proxy = LbxMaybeProxy(client);
- CARD32 id;
- int len, i;
- char *setupbuf;
- LbxClientPtr lbxClient;
-
- REQUEST_AT_LEAST_SIZE(xLbxNewClientReq);
-
- /* save info before our request disappears */
- id = stuff->client;
- if (!proxy || !id)
- return BadLbxClientCode;
- if (proxy->numClients == MAX_LBX_CLIENTS)
- return BadAlloc;
- for (i = 1; i <= proxy->maxIndex; i++) {
- if (proxy->lbxClients[i] && proxy->lbxClients[i]->id == id)
- return BadLbxClientCode;
- }
- len = (client->req_len << 2) - sizeof(xLbxNewClientReq);
- setupbuf = (char *)xalloc (len);
- if (!setupbuf)
- return BadAlloc;
- memcpy (setupbuf, (char *)&stuff[1], len);
-
- newClient = AllocLbxClientConnection (client, proxy);
- if (!newClient)
- return BadAlloc;
- newClient->requestVector = LbxInitialVector;
- lbxClient = LbxInitClient (proxy, newClient, id);
- if (!lbxClient)
- {
- CloseDownClient (newClient);
- return BadAlloc;
- }
-
- AppendFakeRequest (newClient, setupbuf, len);
- xfree (setupbuf);
- LbxSetForBlock(lbxClient);
-
- DBG (DBG_CLIENT, (stderr, "lbxNewClient X %d\n", newClient->index));
- return Success;
-}
-
-int
-ProcLbxEstablishConnection(ClientPtr client)
-{
- char *reason = NULL;
- char *auth_proto, *auth_string;
- register xConnClientPrefix *prefix;
- REQUEST(xReq);
-
- prefix = (xConnClientPrefix *)((char *)stuff + sz_xReq);
- auth_proto = (char *)prefix + sz_xConnClientPrefix;
- auth_string = auth_proto + ((prefix->nbytesAuthProto + 3) & ~3);
- if ((prefix->majorVersion != X_PROTOCOL) ||
- (prefix->minorVersion != X_PROTOCOL_REVISION))
- reason = "Protocol version mismatch";
- else
- reason = ClientAuthorized(client,
- prefix->nbytesAuthProto,
- auth_proto,
- prefix->nbytesAuthString,
- auth_string);
-
- if (client->clientState == ClientStateCheckingSecurity ||
- client->clientState == ClientStateAuthenticating)
- return (client->noClientException = -1); /* XXX some day */
- return(LbxSendConnSetup(client, reason));
-}
-
-int
-ProcLbxCloseClient (ClientPtr client)
-{
- REQUEST(xLbxCloseClientReq);
- LbxClientPtr lbxClient = LbxClient(client);
-
- REQUEST_SIZE_MATCH(xLbxCloseClientReq);
- if (!lbxClient || lbxClient->id != stuff->client)
- return BadLbxClientCode;
-
- /* this will cause the client to be closed down back in Dispatch() */
- return(client->noClientException = CloseLbxClient);
-}
-
-int
-ProcLbxModifySequence (ClientPtr client)
-{
- REQUEST(xLbxModifySequenceReq);
-
- REQUEST_SIZE_MATCH(xLbxModifySequenceReq);
- client->sequence += (stuff->adjust - 1); /* Dispatch() adds 1 */
- return Success;
-}
-
-int
-ProcLbxAllowMotion (ClientPtr client)
-{
- REQUEST(xLbxAllowMotionReq);
-
- client->sequence--;
- REQUEST_SIZE_MATCH(xLbxAllowMotionReq);
- LbxAllowMotion(client, stuff->num);
- return Success;
-}
-
-
-static int
-DecodeLbxDelta (ClientPtr client)
-{
- REQUEST(xLbxDeltaReq);
- LbxClientPtr lbxClient = LbxClient(client);
- LbxProxyPtr proxy = lbxClient->proxy;
- int len;
- unsigned char *buf;
-
- /* Note that LBXDecodeDelta decodes and adds current msg to the cache */
- len = LBXDecodeDelta(&proxy->indeltas,
- (xLbxDiffItem *)(((char *)stuff) + sz_xLbxDeltaReq),
- stuff->diffs, stuff->cindex, &buf);
- /*
- * Some requests, such as FillPoly, result in the protocol input
- * buffer being modified. So we need to copy the request
- * into a temporary buffer where a write would be harmless.
- * Maybe some day do this copying on a case by case basis,
- * since not all requests are guilty of this.
- */
- memcpy(proxy->iDeltaBuf, buf, len);
-
- client->requestBuffer = proxy->iDeltaBuf;
- client->req_len = len >> 2;
- return len;
-}
-
-int
-ProcLbxGetModifierMapping(ClientPtr client)
-{
- /* REQUEST(xLbxGetModifierMappingReq); */
-
- REQUEST_SIZE_MATCH(xLbxGetModifierMappingReq);
- return LbxGetModifierMapping(client);
-}
-
-int
-ProcLbxGetKeyboardMapping(ClientPtr client)
-{
- /* REQUEST(xLbxGetKeyboardMappingReq); */
-
- REQUEST_SIZE_MATCH(xLbxGetKeyboardMappingReq);
- return LbxGetKeyboardMapping(client);
-}
-
-int
-ProcLbxQueryFont(ClientPtr client)
-{
- /* REQUEST(xLbxQueryFontReq); */
-
- REQUEST_SIZE_MATCH(xLbxQueryFontReq);
- return LbxQueryFont(client);
-}
-
-int
-ProcLbxChangeProperty(ClientPtr client)
-{
- /* REQUEST(xLbxChangePropertyReq); */
-
- REQUEST_SIZE_MATCH(xLbxChangePropertyReq);
- return LbxChangeProperty(client);
-}
-
-int
-ProcLbxGetProperty(ClientPtr client)
-{
- /* REQUEST(xLbxGetPropertyReq); */
-
- REQUEST_SIZE_MATCH(xLbxGetPropertyReq);
- return LbxGetProperty(client);
-}
-
-int
-ProcLbxTagData(ClientPtr client)
-{
- REQUEST(xLbxTagDataReq);
-
- client->sequence--; /* not a counted request */
- REQUEST_AT_LEAST_SIZE(xLbxTagDataReq);
-
- return LbxTagData(client, stuff->tag, stuff->real_length,
- (pointer)&stuff[1]); /* better not give any errors */
-}
-
-int
-ProcLbxInvalidateTag(ClientPtr client)
-{
- REQUEST(xLbxInvalidateTagReq);
-
- client->sequence--;
- REQUEST_SIZE_MATCH(xLbxInvalidateTagReq);
- return LbxInvalidateTag(client, stuff->tag);
-}
-
-int
-ProcLbxPolyPoint(ClientPtr client)
-{
- return LbxDecodePoly(client, X_PolyPoint, LbxDecodePoints);
-}
-
-int
-ProcLbxPolyLine(ClientPtr client)
-{
- return LbxDecodePoly(client, X_PolyLine, LbxDecodePoints);
-}
-
-int
-ProcLbxPolySegment(ClientPtr client)
-{
- return LbxDecodePoly(client, X_PolySegment, LbxDecodeSegment);
-}
-
-int
-ProcLbxPolyRectangle(ClientPtr client)
-{
- return LbxDecodePoly(client, X_PolyRectangle, LbxDecodeRectangle);
-}
-
-int
-ProcLbxPolyArc(ClientPtr client)
-{
- return LbxDecodePoly(client, X_PolyArc, LbxDecodeArc);
-}
-
-int
-ProcLbxFillPoly(ClientPtr client)
-{
- return LbxDecodeFillPoly(client);
-}
-
-int
-ProcLbxPolyFillRectangle(ClientPtr client)
-{
- return LbxDecodePoly(client, X_PolyFillRectangle, LbxDecodeRectangle);
-}
-
-int
-ProcLbxPolyFillArc(ClientPtr client)
-{
- return LbxDecodePoly(client, X_PolyFillArc, LbxDecodeArc);
-}
-
-int
-ProcLbxCopyArea(ClientPtr client)
-{
- return LbxDecodeCopyArea(client);
-}
-
-int
-ProcLbxCopyPlane(ClientPtr client)
-{
- return LbxDecodeCopyPlane(client);
-}
-
-
-int
-ProcLbxPolyText(ClientPtr client)
-{
- return LbxDecodePolyText(client);
-}
-
-int
-ProcLbxImageText(ClientPtr client)
-{
- return LbxDecodeImageText(client);
-}
-
-int
-ProcLbxQueryExtension(ClientPtr client)
-{
- REQUEST(xLbxQueryExtensionReq);
- char *ename;
-
- REQUEST_AT_LEAST_SIZE(xLbxQueryExtensionReq);
- ename = (char *) &stuff[1];
- return LbxQueryExtension(client, ename, stuff->nbytes);
-}
-
-int
-ProcLbxPutImage(ClientPtr client)
-{
- return LbxDecodePutImage(client);
-}
-
-int
-ProcLbxGetImage(ClientPtr client)
-{
- return LbxDecodeGetImage(client);
-}
-
-
-int
-ProcLbxSync(ClientPtr client)
-{
- xLbxSyncReply reply;
-
- client->sequence--; /* not a counted request */
-
-#ifdef COLOR_DEBUG
- fprintf (stderr, "Got LBX sync, seq = 0x%x\n", client->sequence);
-#endif
-
- reply.type = X_Reply;
- reply.length = 0;
- reply.sequenceNumber = client->sequence;
- reply.pad0 = reply.pad1 = reply.pad2 = reply.pad3 = reply.pad4 =
- reply.pad5 = reply.pad6 = 0;
-
- if (client->swapped)
- {
- register char n;
- swaps (&reply.sequenceNumber, n);
- }
-
- WriteToClient (client, sz_xLbxSyncReply, (char *)&reply);
-
- return (client->noClientException);
-}
-
-
-int
-ProcLbxDispatch(ClientPtr client)
-{
- REQUEST(xReq);
- switch (stuff->data)
- {
- case X_LbxQueryVersion:
- return ProcLbxQueryVersion(client);
- case X_LbxStartProxy:
- return ProcLbxStartProxy(client);
- case X_LbxStopProxy:
- return ProcLbxStopProxy(client);
- case X_LbxNewClient:
- return ProcLbxNewClient(client);
- case X_LbxCloseClient:
- return ProcLbxCloseClient(client);
- case X_LbxModifySequence:
- return ProcLbxModifySequence(client);
- case X_LbxAllowMotion:
- return ProcLbxAllowMotion(client);
- case X_LbxIncrementPixel:
- return ProcLbxIncrementPixel(client);
- case X_LbxGrabCmap:
- return ProcLbxGrabCmap(client);
- case X_LbxReleaseCmap:
- return ProcLbxReleaseCmap(client);
- case X_LbxAllocColor:
- return ProcLbxAllocColor(client);
- case X_LbxGetModifierMapping:
- return ProcLbxGetModifierMapping(client);
- case X_LbxGetKeyboardMapping:
- return ProcLbxGetKeyboardMapping(client);
- case X_LbxInvalidateTag:
- return ProcLbxInvalidateTag(client);
- case X_LbxPolyPoint:
- return ProcLbxPolyPoint (client);
- case X_LbxPolyLine:
- return ProcLbxPolyLine (client);
- case X_LbxPolySegment:
- return ProcLbxPolySegment (client);
- case X_LbxPolyRectangle:
- return ProcLbxPolyRectangle (client);
- case X_LbxPolyArc:
- return ProcLbxPolyArc (client);
- case X_LbxFillPoly:
- return ProcLbxFillPoly (client);
- case X_LbxPolyFillRectangle:
- return ProcLbxPolyFillRectangle (client);
- case X_LbxPolyFillArc:
- return ProcLbxPolyFillArc (client);
- case X_LbxQueryFont:
- return ProcLbxQueryFont (client);
- case X_LbxChangeProperty:
- return ProcLbxChangeProperty (client);
- case X_LbxGetProperty:
- return ProcLbxGetProperty (client);
- case X_LbxTagData:
- return ProcLbxTagData (client);
- case X_LbxCopyArea:
- return ProcLbxCopyArea (client);
- case X_LbxCopyPlane:
- return ProcLbxCopyPlane (client);
- case X_LbxPolyText8:
- case X_LbxPolyText16:
- return ProcLbxPolyText (client);
- case X_LbxImageText8:
- case X_LbxImageText16:
- return ProcLbxImageText (client);
- case X_LbxQueryExtension:
- return ProcLbxQueryExtension (client);
- case X_LbxPutImage:
- return ProcLbxPutImage (client);
- case X_LbxGetImage:
- return ProcLbxGetImage (client);
- case X_LbxInternAtoms:
- return ProcLbxInternAtoms(client);
- case X_LbxGetWinAttrAndGeom:
- return ProcLbxGetWinAttrAndGeom(client);
- case X_LbxSync:
- return ProcLbxSync(client);
- case X_LbxBeginLargeRequest:
- return ProcLbxBeginLargeRequest(client);
- case X_LbxLargeRequestData:
- return ProcLbxLargeRequestData(client);
- case X_LbxEndLargeRequest:
- return ProcLbxLargeRequestData(client);
- default:
- return BadRequest;
- }
-}
diff --git a/nx-X11/programs/Xserver/lbx/lbxopts.c b/nx-X11/programs/Xserver/lbx/lbxopts.c
deleted file mode 100644
index eac51bcea..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxopts.c
+++ /dev/null
@@ -1,806 +0,0 @@
-/* $Xorg: lbxopts.c,v 1.3 2000/08/17 19:53:31 cpqbld Exp $ */
-/*
- * Copyright 1994 Network Computing Devices, Inc.
- *
- * 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, and that the name Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE, DATA,
- * OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF
- * WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxopts.c,v 1.5 2001/01/17 22:37:00 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifdef OPTDEBUG
-#include <stdio.h>
-#endif
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "colormapst.h"
-#include "propertyst.h"
-#include "lbxserve.h"
-#include <X11/extensions/lbxstr.h>
-#include <X11/extensions/lbximage.h>
-#include <X11/extensions/lbxopts.h>
-#include "lbxsrvopts.h"
-#ifndef NO_ZLIB
-#include <X11/extensions/lbxzlib.h>
-#endif /* NO_ZLIB */
-
-static int LbxProxyDeltaOpt ( LbxNegOptsPtr pno, unsigned char *popt,
- int optlen, unsigned char *preply );
-static int LbxServerDeltaOpt ( LbxNegOptsPtr pno, unsigned char *popt,
- int optlen, unsigned char *preply );
-static int LbxDeltaOpt ( unsigned char *popt, int optlen,
- unsigned char *preply, short *pn, short *pmaxlen );
-static int LbxStreamCompOpt ( LbxNegOptsPtr pno, unsigned char *popt,
- int optlen, unsigned char *preply );
-static int ZlibParse ( LbxNegOptsPtr pno, unsigned char *popt, int optlen,
- unsigned char *preply );
-static int LbxMessageCompOpt ( LbxNegOptsPtr pno, unsigned char *popt,
- int optlen, unsigned char *preply );
-static int LbxUseTagsOpt ( LbxNegOptsPtr pno, unsigned char *popt,
- int optlen, unsigned char *preply );
-static int LbxBitmapCompOpt ( LbxNegOptsPtr pno, unsigned char *popt,
- int optlen, unsigned char *preply );
-static int LbxPixmapCompOpt ( LbxNegOptsPtr pno, unsigned char *popt,
- int optlen, unsigned char *preply );
-static int MergeDepths ( int *depths, LbxPixmapCompMethod *method );
-static int LbxCmapAllOpt ( LbxNegOptsPtr pno, unsigned char *popt,
- int optlen, unsigned char *preply );
-
-/*
- * List of LBX options we recognize and are willing to negotiate
- */
-static struct _LbxOptionParser {
- CARD8 optcode;
- int (*parser)(LbxNegOptsPtr, unsigned char *,
- int, unsigned char *);
-} LbxOptions[] = {
- { LBX_OPT_DELTA_PROXY, LbxProxyDeltaOpt },
- { LBX_OPT_DELTA_SERVER, LbxServerDeltaOpt },
- { LBX_OPT_STREAM_COMP, LbxStreamCompOpt },
- { LBX_OPT_BITMAP_COMP, LbxBitmapCompOpt },
- { LBX_OPT_PIXMAP_COMP, LbxPixmapCompOpt },
- { LBX_OPT_MSG_COMP, LbxMessageCompOpt },
- { LBX_OPT_USE_TAGS, LbxUseTagsOpt },
- { LBX_OPT_CMAP_ALL, LbxCmapAllOpt }
-};
-
-#define LBX_N_OPTS (sizeof(LbxOptions) / sizeof(struct _LbxOptionParser))
-
-/*
- * Set option defaults
- */
-void
-LbxOptionInit(LbxNegOptsPtr pno)
-{
- bzero(pno, sizeof(LbxNegOptsRec));
- pno->proxyDeltaN = pno->serverDeltaN = LBX_OPT_DELTA_NCACHE_DFLT;
- pno->proxyDeltaMaxLen = pno->serverDeltaMaxLen = LBX_OPT_DELTA_MSGLEN_DFLT;
- pno->squish = TRUE;
- pno->numBitmapCompMethods = 0;
- pno->bitmapCompMethods = NULL;
- pno->numPixmapCompMethods = 0;
- pno->pixmapCompMethods = NULL;
- pno->pixmapCompDepths = NULL;
- pno->useTags = TRUE;
-}
-
-int
-LbxOptionParse(LbxNegOptsPtr pno,
- unsigned char *popt,
- int optlen,
- unsigned char *preply)
-{
- int i;
- int nopts = *popt++;
- unsigned char *pout = preply;
-
- for (i = 0; i < nopts; i++) {
- int j;
- int len;
- int hdrlen;
- int replylen;
-
- LBX_OPT_DECODE_LEN(popt + 1, len, hdrlen);
- if (len < ++hdrlen || len > optlen) {
-#ifdef OPTDEBUG
- fprintf(stderr, "bad option length, len = %d, hdrlen = %d, optlen = %d\n", len, hdrlen, optlen);
-#endif
- return -1;
- }
-
- for (j = 0; j < LBX_N_OPTS; j++) {
- if (popt[0] == LbxOptions[j].optcode) {
- replylen = (*LbxOptions[j].parser)(pno,
- popt + hdrlen,
- len - hdrlen,
- pout + LBX_OPT_SMALLHDR_LEN);
- if (replylen < 0)
- return -1;
- else if (replylen > 0) {
- /*
- * None of the current options require big headers,
- * so this works for now.
- */
- *pout++ = i;
- *pout++ = LBX_OPT_SMALLHDR_LEN + replylen;
- pout += replylen;
- pno->nopts++;
- }
- break;
- }
- }
-
- optlen -= len;
- popt += len;
- }
-
- return (pout - preply);
-}
-
-static int
-LbxProxyDeltaOpt(LbxNegOptsPtr pno,
- unsigned char *popt,
- int optlen,
- unsigned char *preply)
-{
- return LbxDeltaOpt(popt, optlen, preply,
- &pno->proxyDeltaN, &pno->proxyDeltaMaxLen);
-}
-
-static int
-LbxServerDeltaOpt(LbxNegOptsPtr pno,
- unsigned char *popt,
- int optlen,
- unsigned char *preply)
-{
- return LbxDeltaOpt(popt, optlen, preply,
- &pno->serverDeltaN, &pno->serverDeltaMaxLen);
-}
-
-static int
-LbxDeltaOpt(unsigned char *popt,
- int optlen,
- unsigned char *preply,
- short *pn,
- short *pmaxlen)
-{
- short n;
- short maxlen;
-
- /*
- * If there's more data than we expect, we just ignore it.
- */
- if (optlen < LBX_OPT_DELTA_REQLEN) {
-#ifdef OPTDEBUG
- fprintf(stderr, "bad delta option length = %d\n", optlen);
-#endif
- return -1;
- }
-
- /*
- * Accept whatever value the proxy prefers, so skip the
- * min/max offerings. Note that the max message len value is
- * encoded as the number of 4-byte values.
- */
- popt += 2;
- n = *popt++;
- popt += 2;
- maxlen = *popt++;
- if ((maxlen <<= 2) == 0)
- n = 0;
- else if (maxlen < 32) {
-#ifdef OPTDEBUG
- fprintf(stderr, "bad delta max msg length %d\n", maxlen);
-#endif
- return -1;
- }
-
- /*
- * Put the response in the reply buffer
- */
- *preply++ = n;
- *preply++ = maxlen >> 2;
-
- *pn = n;
- *pmaxlen = maxlen;
-
- return LBX_OPT_DELTA_REPLYLEN;
-}
-
-
-static struct _LbxStreamCompParser {
- int typelen;
- char *type;
- int (*parser)(LbxNegOptsPtr, unsigned char *,
- int, unsigned char *);
-} LbxStreamComp[] = {
-#ifndef NO_ZLIB
- { ZLIB_STRCOMP_OPT_LEN, ZLIB_STRCOMP_OPT, ZlibParse },
-#endif /* NO_ZLIB */
-};
-
-#define LBX_N_STRCOMP \
- (sizeof(LbxStreamComp) / sizeof(struct _LbxStreamCompParser))
-
-static int
-LbxStreamCompOpt(LbxNegOptsPtr pno,
- unsigned char *popt,
- int optlen,
- unsigned char *preply)
-{
- int i;
- int typelen;
- int nopts = *popt++;
-
- for (i = 0; i < nopts; i++) {
- int j;
- int len;
- int lensize;
- int replylen;
-
- typelen = popt[0];
- for (j = 0; j < LBX_N_STRCOMP; j++) {
- if (typelen == LbxStreamComp[j].typelen &&
- !strncmp((char *) popt + 1, LbxStreamComp[j].type, typelen))
- break;
- }
-
- popt += 1 + typelen;
- optlen -= 1 + typelen;
- LBX_OPT_DECODE_LEN(popt, len, lensize);
-
- if (j < LBX_N_STRCOMP) {
- if (len > optlen)
- return -1;
- replylen = (*LbxStreamComp[j].parser)(pno,
- popt + lensize,
- len - lensize,
- preply + 1);
- if (replylen == -1)
- return -1;
- else if (replylen >= 0) {
- *preply = i;
- return replylen + 1;
- }
- }
-
- optlen -= len;
- popt += len;
- }
-
- return 0;
-}
-
-
-static int
-ZlibParse(LbxNegOptsPtr pno,
- unsigned char *popt,
- int optlen,
- unsigned char *preply)
-{
- int level; /* compression level */
-
- if (*popt++ != 1) /* length should be 1 */
- return (-1);
-
- level = *popt;
- if (level < 1 || level > 9)
- return (-1);
-
- pno->streamOpts.streamCompInit =
- (LbxStreamCompHandle (*)(int, pointer))ZlibInit;
- pno->streamOpts.streamCompArg = (pointer)(long)level;
- pno->streamOpts.streamCompStuffInput = ZlibStuffInput;
- pno->streamOpts.streamCompInputAvail = ZlibInputAvail;
- pno->streamOpts.streamCompFlush = ZlibFlush;
- pno->streamOpts.streamCompRead = ZlibRead;
- pno->streamOpts.streamCompWriteV = ZlibWriteV;
- pno->streamOpts.streamCompOn = ZlibCompressOn;
- pno->streamOpts.streamCompOff = ZlibCompressOff;
- pno->streamOpts.streamCompFreeHandle =
- (void (*)(LbxStreamCompHandle))ZlibFree;
-
- return (0);
-}
-
-static int
-LbxMessageCompOpt(LbxNegOptsPtr pno,
- unsigned char *popt,
- int optlen,
- unsigned char *preply)
-{
-
- if (optlen == 0) {
-#ifdef OPTDEBUG
- fprintf(stderr, "bad message-comp option length specified %d\n", optlen);
-#endif
- return -1;
- }
-
- pno->squish = *preply = *popt;
- return 1;
-}
-
-
-static int
-LbxUseTagsOpt(LbxNegOptsPtr pno,
- unsigned char *popt,
- int optlen,
- unsigned char *preply)
-{
-
- if (optlen == 0) {
-#ifdef OPTDEBUG
- fprintf(stderr, "bad use-tags option length specified %d\n", optlen);
-#endif
- return -1;
- }
-
- pno->useTags = *preply = *popt;
- return 1;
-}
-
-
-/*
- * Option negotiation for image compression
- */
-
-LbxBitmapCompMethod
-LbxBitmapCompMethods [] = {
- {
- "XC-FaxG42D", /* compression method name */
- 0, /* inited */
- 2, /* method opcode */
- NULL, /* init function */
- LbxImageEncodeFaxG42D, /* encode function */
- LbxImageDecodeFaxG42D /* decode function */
- }
-};
-
-#define NUM_BITMAP_METHODS \
- (sizeof (LbxBitmapCompMethods) / sizeof (LbxBitmapCompMethod))
-
-
-#if 1
-/*
- * Currently, we don't support any pixmap compression algorithms
- * because regular stream compression does much better than PackBits.
- * If we want to plug in a better pixmap image compression algorithm,
- * it would go here.
- */
-
-#define NUM_PIXMAP_METHODS 0
-LbxPixmapCompMethod LbxPixmapCompMethods [1]; /* dummy */
-
-#else
-
-LbxPixmapCompMethod
-LbxPixmapCompMethods [] = {
- {
- "XC-PackBits", /* compression method name */
- 1 << ZPixmap, /* formats supported */
- 1, {8}, /* depths supported */
- 0, /* inited */
- 1, /* method opcode */
- NULL, /* init function */
- LbxImageEncodePackBits, /* encode function */
- LbxImageDecodePackBits /* decode function */
- }
-};
-
-#define NUM_PIXMAP_METHODS \
- (sizeof (LbxPixmapCompMethods) / sizeof (LbxPixmapCompMethod))
-#endif
-
-
-static int
-LbxImageCompOpt (Bool pixmap,
- LbxNegOptsPtr pno,
- unsigned char *popt,
- int optlen,
- unsigned char *preply)
-
-{
- unsigned char *preplyStart = preply;
- int numMethods = *popt++;
- unsigned char *myIndices, *hisIndices;
- unsigned int *retFormats = NULL;
- int **retDepths = NULL;
- int replyCount = 0;
- int status, i, j;
-
- if (numMethods == 0)
- {
- if (pixmap)
- pno->numPixmapCompMethods = 0;
- else
- pno->numBitmapCompMethods = 0;
-
- *preply++ = 0;
- return (1);
- }
-
- myIndices = (unsigned char *) xalloc (numMethods);
- hisIndices = (unsigned char *) xalloc (numMethods);
-
- if (!myIndices || !hisIndices)
- {
- if (myIndices)
- xfree (myIndices);
- if (hisIndices)
- xfree (hisIndices);
- return -1;
- }
-
- if (pixmap)
- {
- retFormats = (unsigned *) xalloc (numMethods);
- retDepths = (int **) xalloc (numMethods * sizeof (int *));
-
- if (!retFormats || !retDepths)
- {
- if (retFormats)
- xfree (retFormats);
- if (retDepths)
- xfree (retDepths);
- xfree (myIndices);
- xfree (hisIndices);
- return -1;
- }
- }
-
- /*
- * For each method in the list sent by the proxy, see if the server
- * supports this method. If YES, update the following lists:
- *
- * myIndices[] is a list of indices into the server's
- * LbxBit[Pix]mapCompMethods table.
- *
- * hisIndices[] is a list of indices into the list of
- * method names sent by the proxy.
- *
- * retFormats[] indicates for each pixmap compression method,
- * the pixmap formats supported.
- *
- * retDepths[] indicates for each pixmap compression method,
- * the pixmap depths supported.
- */
-
- for (i = 0; i < numMethods; i++)
- {
- unsigned int formatMask = 0, newFormatMask = 0;
- int depthCount, *depths = NULL, len;
- int freeDepths;
- char *methodName;
-
- freeDepths = 0;
- len = *popt++;
- methodName = (char *) popt;
- popt += len;
-
- if (pixmap)
- {
- formatMask = *popt++;
- depthCount = *popt++;
- depths = (int *) xalloc ((depthCount + 1) * sizeof (int));
- freeDepths = 1;
- depths[0] = depthCount;
- for (j = 1; j <= depthCount; j++)
- depths[j] = *popt++;
- }
-
- for (j = 0;
- j < (pixmap ? NUM_PIXMAP_METHODS : NUM_BITMAP_METHODS); j++)
- {
-
- status = strncmp (methodName,
- (pixmap ? LbxPixmapCompMethods[j].methodName :
- LbxBitmapCompMethods[j].methodName),
- len);
-
- if (status == 0 && pixmap)
- {
- newFormatMask =
- formatMask & LbxPixmapCompMethods[j].formatMask;
-
- depthCount = MergeDepths (depths, &LbxPixmapCompMethods[j]);
-
- if (newFormatMask == 0 || depthCount == 0)
- status = 1;
- }
-
- if (status == 0)
- {
- myIndices[replyCount] = j;
- hisIndices[replyCount] = i;
-
- if (pixmap)
- {
- retFormats[replyCount] = newFormatMask;
- retDepths[replyCount] = depths;
- freeDepths = 0;
- }
-
- replyCount++;
- break;
- }
- }
-
- if (freeDepths)
- xfree (depths);
- }
-
- *preply++ = replyCount;
-
- /*
- * Sort the lists by LBX server preference (increasing myIndices[] vals)
- */
-
- for (i = 0; i <= replyCount - 2; i++)
- for (j = replyCount - 1; j >= i; j--)
- if (myIndices[j - 1] > myIndices[j])
- {
- char temp1 = myIndices[j - 1];
- char temp2 = hisIndices[j - 1];
-
- myIndices[j - 1] = myIndices[j];
- myIndices[j] = temp1;
-
- hisIndices[j - 1] = hisIndices[j];
- hisIndices[j] = temp2;
-
- if (pixmap)
- {
- unsigned temp3 = retFormats[j - 1];
- int *temp4 = retDepths[j - 1];
-
- retFormats[j - 1] = retFormats[j];
- retFormats[j] = temp3;
-
- retDepths[j - 1] = retDepths[j];
- retDepths[j] = temp4;
- }
- }
-
- /*
- * For each method supported, return to the proxy an index into
- * the list sent by the proxy, the opcode to be used for the method,
- * the pixmap formats supported, and the list of depths supported.
- */
-
- for (i = 0; i < replyCount; i++)
- {
- *preply++ = hisIndices[i];
-
- if (pixmap)
- {
- int left;
- *preply++ = LbxPixmapCompMethods[myIndices[i]].methodOpCode;
- *preply++ = retFormats[i];
- *preply++ = left = retDepths[i][0];
- j = 1;
- while (left > 0)
- {
- *preply++ = retDepths[i][j];
- left--;
- }
- }
- else
- {
- *preply++ = LbxBitmapCompMethods[myIndices[i]].methodOpCode;
- }
- }
-
- if (pixmap)
- {
- pno->numPixmapCompMethods = replyCount;
- pno->pixmapCompMethods = myIndices;
- pno->pixmapCompDepths = retDepths;
- }
- else
- {
- pno->numBitmapCompMethods = replyCount;
- pno->bitmapCompMethods = myIndices;
- }
-
- if (hisIndices)
- xfree (hisIndices);
-
- if (pixmap)
- {
- if (retFormats)
- xfree (retFormats);
- }
-
- return (preply - preplyStart);
-}
-
-
-
-static int
-LbxBitmapCompOpt (LbxNegOptsPtr pno,
- unsigned char *popt,
- int optlen,
- unsigned char *preply)
-
-{
- return (LbxImageCompOpt (0 /* bitmap */, pno, popt, optlen, preply));
-}
-
-
-static int
-LbxPixmapCompOpt (LbxNegOptsPtr pno,
- unsigned char *popt,
- int optlen,
- unsigned char *preply)
-
-{
- return (LbxImageCompOpt (1 /* Pixmap */, pno, popt, optlen, preply));
-}
-
-
-LbxBitmapCompMethod *
-LbxSrvrLookupBitmapCompMethod (LbxProxyPtr proxy,
- int methodOpCode)
-
-{
- int i;
-
- for (i = 0; i < proxy->numBitmapCompMethods; i++)
- {
- LbxBitmapCompMethod *method;
-
- method = &LbxBitmapCompMethods[proxy->bitmapCompMethods[i]];
-
- if (method->methodOpCode == methodOpCode)
- return (method);
- }
-
- return (NULL);
-}
-
-
-LbxPixmapCompMethod *
-LbxSrvrLookupPixmapCompMethod (LbxProxyPtr proxy,
- int methodOpCode)
-
-{
- int i;
-
- for (i = 0; i < proxy->numPixmapCompMethods; i++)
- {
- LbxPixmapCompMethod *method;
-
- method = &LbxPixmapCompMethods[proxy->pixmapCompMethods[i]];
-
- if (method->methodOpCode == methodOpCode)
- return (method);
- }
-
- return (NULL);
-}
-
-
-LbxBitmapCompMethod *
-LbxSrvrFindPreferredBitmapCompMethod (LbxProxyPtr proxy)
-
-{
- if (proxy->numBitmapCompMethods == 0)
- return NULL;
- else
- return (&LbxBitmapCompMethods[proxy->bitmapCompMethods[0]]);
-}
-
-
-
-LbxPixmapCompMethod *
-LbxSrvrFindPreferredPixmapCompMethod (LbxProxyPtr proxy,
- int format,
- int depth)
-
-{
- if (proxy->numPixmapCompMethods == 0)
- return NULL;
- else
- {
- LbxPixmapCompMethod *method;
- int i, j;
-
- for (i = 0; i < proxy->numPixmapCompMethods; i++)
- {
- method = &LbxPixmapCompMethods[proxy->pixmapCompMethods[i]];
-
- if ((method->formatMask & (1 << format)))
- {
- int n = proxy->pixmapCompDepths[i][0];
- j = 1;
- while (n > 0)
- {
- if (depth == proxy->pixmapCompDepths[i][j])
- return method;
- else
- n--;
- }
- }
- }
-
- return NULL;
- }
-}
-
-
-static int
-MergeDepths (int *depths,
- LbxPixmapCompMethod *method)
-
-{
- int i, j, count;
- int temp[LBX_MAX_DEPTHS + 1];
-
- temp[0] = count = 0;
-
- for (i = 1; i <= depths[0]; i++)
- {
- for (j = 0; j < method->depthCount; j++)
- if (method->depths[j] == depths[i])
- {
- temp[0]++;
- temp[++count] = depths[i];
- break;
- }
- }
-
- memcpy (depths, temp, (count + 1) * sizeof (int));
-
- return (count);
-}
-
-
-#define LbxCmapAllMethod "XC-CMAP"
-
-static int
-LbxCmapAllOpt (LbxNegOptsPtr pno,
- unsigned char *popt,
- int optlen,
- unsigned char *preply)
-
-{
- int numMethods = *popt++;
- int i;
-
- for (i = 0; i < numMethods; i++)
- {
- int len;
- char *methodName;
-
- len = *popt++;
- methodName = (char *) popt;
- popt += len;
- if (!strncmp(methodName, LbxCmapAllMethod, len))
- break;
- }
- if (i >= numMethods)
- i = 0; /* assume first one is proxy's favorite */
- *preply = i;
- return 1;
-}
diff --git a/nx-X11/programs/Xserver/lbx/lbxprop.c b/nx-X11/programs/Xserver/lbx/lbxprop.c
deleted file mode 100644
index 53c4ef424..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxprop.c
+++ /dev/null
@@ -1,549 +0,0 @@
-/* $Xorg: lbxprop.c,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */
-/*
-
-Copyright 1986, 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 1993 Network Computing Devices, Inc.
- *
- * 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, and that the name Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE, DATA,
- * OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF
- * WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxprop.c,v 1.4 2001/05/15 10:19:43 eich Exp $ */
-
-/* various bits of DIX-level mangling */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <sys/types.h>
-#include <stdio.h>
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "os.h"
-#include "dixstruct.h"
-#include "resource.h"
-#include "servermd.h"
-#include "propertyst.h"
-#include "colormapst.h"
-#include "windowstr.h"
-#define _XLBX_SERVER_
-#include <X11/extensions/lbxstr.h>
-#include "lbxserve.h"
-#include "lbxtags.h"
-#include <X11/Xfuncproto.h>
-#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
-#endif
-#include "swaprep.h"
-
-void
-LbxStallPropRequest(ClientPtr client,
- PropertyPtr pProp)
-{
- xReq *req = (xReq *) client->requestBuffer;
- register char n;
-
- LbxQueryTagData(client, pProp->owner_pid,
- pProp->tag_id, LbxTagTypeProperty);
-
- /*
- * Before we reset the request, we must make sure
- * it is in the client's byte order.
- */
-
- if (client->swapped) {
- if (req->reqType == X_ChangeProperty) {
- xChangePropertyReq *stuff = (xChangePropertyReq *) req;
- swaps(&stuff->length, n);
- swapl(&stuff->window, n);
- swapl(&stuff->property, n);
- swapl(&stuff->type, n);
- swapl(&stuff->nUnits, n);
- switch ( stuff->format ) {
- case 16:
- SwapRestS(stuff);
- break;
- case 32:
- SwapRestL(stuff);
- break;
- }
- } else if (req->reqType == X_GetProperty) {
- xGetPropertyReq *stuff = (xGetPropertyReq *) req;
- swaps(&stuff->length, n);
- swapl(&stuff->window, n);
- swapl(&stuff->property, n);
- swapl(&stuff->type, n);
- swapl(&stuff->longOffset, n);
- swapl(&stuff->longLength, n);
- } else if (req->data == X_LbxChangeProperty) {
- xLbxChangePropertyReq *stuff = (xLbxChangePropertyReq *) req;
- swaps(&stuff->length, n);
- swapl(&stuff->window, n);
- swapl(&stuff->property, n);
- swapl(&stuff->type, n);
- swapl(&stuff->nUnits, n);
- } else if (req->data == X_LbxGetProperty) {
- xLbxGetPropertyReq *stuff = (xLbxGetPropertyReq *) req;
- swaps(&stuff->length, n);
- swapl(&stuff->window, n);
- swapl(&stuff->property, n);
- swapl(&stuff->type, n);
- swapl(&stuff->longOffset, n);
- swapl(&stuff->longLength, n);
- }
- }
- ResetCurrentRequest(client);
- client->sequence--;
- IgnoreClient(client);
-}
-
-int
-LbxChangeWindowProperty(ClientPtr client,
- WindowPtr pWin,
- Atom property,
- Atom type,
- int format,
- int mode,
- unsigned long len,
- Bool have_data,
- pointer value,
- Bool sendevent,
- XID *tag)
-{
- PropertyPtr pProp;
- xEvent event;
- int sizeInBytes;
- int totalSize;
- pointer data;
-
- sizeInBytes = format >> 3;
- totalSize = len * sizeInBytes;
-
- /* first see if property already exists */
-
- pProp = wUserProps(pWin);
- while (pProp) {
- if (pProp->propertyName == property)
- break;
- pProp = pProp->next;
- }
- if (!pProp) { /* just add to list */
- if (!pWin->optional && !MakeWindowOptional(pWin))
- return (BadAlloc);
- pProp = (PropertyPtr) xalloc(sizeof(PropertyRec));
- if (!pProp)
- return (BadAlloc);
- data = (pointer) xalloc(totalSize);
- if (!data && len) {
- xfree(pProp);
- return (BadAlloc);
- }
- pProp->propertyName = property;
- pProp->type = type;
- pProp->format = format;
- pProp->data = data;
- if (have_data) {
- if (len)
- memmove((char *) data, (char *) value, totalSize);
- pProp->tag_id = 0;
- pProp->owner_pid = 0;
- } else {
- if (!TagSaveTag(LbxTagTypeProperty, totalSize,
- (pointer)pProp, &pProp->tag_id)) {
- xfree(pProp);
- xfree(pProp->data);
- return BadAlloc;
- }
- pProp->owner_pid = LbxProxyID(client);
- TagMarkProxy(pProp->tag_id, pProp->owner_pid);
- }
- pProp->size = len;
- pProp->next = pWin->optional->userProps;
- pWin->optional->userProps = pProp;
- } else {
- /*
- * To append or prepend to a property the request format and type must
- * match those of the already defined property. The existing format
- * and type are irrelevant when using the mode "PropModeReplace" since
- * they will be written over.
- */
-
- if ((format != pProp->format) && (mode != PropModeReplace))
- return (BadMatch);
- if ((pProp->type != type) && (mode != PropModeReplace))
- return (BadMatch);
-
- /*
- * if its a modify instead of replace, make sure we have the current
- * value
- */
- if ((mode != PropModeReplace) && pProp->tag_id && pProp->owner_pid) {
- LbxStallPropRequest(client, pProp);
- return (client->noClientException);
- }
- /* make sure any old tag is flushed first */
- if (pProp->tag_id)
- TagDeleteTag(pProp->tag_id);
- if (mode == PropModeReplace) {
- if (totalSize != pProp->size * (pProp->format >> 3)) {
- data = (pointer) xrealloc(pProp->data, totalSize);
- if (!data && len)
- return (BadAlloc);
- pProp->data = data;
- }
- if (have_data) {
- if (len)
- memmove((char *) pProp->data, (char *) value, totalSize);
- } else {
- if (!TagSaveTag(LbxTagTypeProperty, totalSize,
- (pointer)pProp, &pProp->tag_id)) {
- xfree(pProp);
- xfree(pProp->data);
- return BadAlloc;
- }
- pProp->owner_pid = LbxProxyID(client);
- TagMarkProxy(pProp->tag_id, pProp->owner_pid);
- }
- pProp->size = len;
- pProp->type = type;
- pProp->format = format;
- } else if (len == 0) {
- /* do nothing */
- } else if (mode == PropModeAppend) {
- data = (pointer) xrealloc(pProp->data,
- sizeInBytes * (len + pProp->size));
- if (!data)
- return (BadAlloc);
- pProp->data = data;
- memmove(&((char *) data)[pProp->size * sizeInBytes],
- (char *) value,
- totalSize);
- pProp->size += len;
- } else if (mode == PropModePrepend) {
- data = (pointer) xalloc(sizeInBytes * (len + pProp->size));
- if (!data)
- return (BadAlloc);
- memmove(&((char *) data)[totalSize], (char *) pProp->data,
- (int) (pProp->size * sizeInBytes));
- memmove((char *) data, (char *) value, totalSize);
- xfree(pProp->data);
- pProp->data = data;
- pProp->size += len;
- }
- }
- if (sendevent) {
- event.u.u.type = PropertyNotify;
- event.u.property.window = pWin->drawable.id;
- event.u.property.state = PropertyNewValue;
- event.u.property.atom = pProp->propertyName;
- event.u.property.time = currentTime.milliseconds;
- DeliverEvents(pWin, &event, 1, (WindowPtr) NULL);
- }
- if (pProp->tag_id)
- *tag = pProp->tag_id;
- return (Success);
-}
-
-int
-LbxChangeProperty(ClientPtr client)
-{
- WindowPtr pWin;
- char format,
- mode;
- unsigned long len;
- int err;
- int n;
- XID newtag;
- xLbxChangePropertyReply rep;
- REQUEST(xLbxChangePropertyReq);
-
- REQUEST_SIZE_MATCH(xLbxChangePropertyReq);
- UpdateCurrentTime();
- format = stuff->format;
- mode = stuff->mode;
- if ((mode != PropModeReplace) && (mode != PropModeAppend) &&
- (mode != PropModePrepend)) {
- client->errorValue = mode;
- return BadValue;
- }
- if ((format != 8) && (format != 16) && (format != 32)) {
- client->errorValue = format;
- return BadValue;
- }
- len = stuff->nUnits;
- if (len > ((0xffffffff - sizeof(xChangePropertyReq)) >> 2))
- return BadLength;
-
- pWin = (WindowPtr) SecurityLookupWindow(stuff->window, client,
- SecurityWriteAccess);
- if (!pWin)
- return (BadWindow);
- if (!ValidAtom(stuff->property)) {
- client->errorValue = stuff->property;
- return (BadAtom);
- }
- if (!ValidAtom(stuff->type)) {
- client->errorValue = stuff->type;
- return (BadAtom);
- }
-
- rep.type = X_Reply;
- rep.sequenceNumber = client->sequence;
- rep.length = 0;
- rep.pad = rep.pad0 = rep.pad1 = rep.pad2 = rep.pad3 = rep.pad4 = 0;
- if (client->swapped) {
- swaps(&rep.sequenceNumber, n);
- }
-
-#ifdef XCSECURITY
- switch (SecurityCheckPropertyAccess(client, pWin, stuff->property,
- SecurityWriteAccess))
- {
- case SecurityErrorOperation:
- client->errorValue = stuff->property;
- return BadAtom;
- case SecurityIgnoreOperation:
- rep.tag = 0;
- WriteToClient(client, sizeof(xLbxChangePropertyReply), (char *)&rep);
- return client->noClientException;
- }
-#endif
-
- err = LbxChangeWindowProperty(client, pWin, stuff->property, stuff->type,
- (int) format, (int) mode, len, FALSE, (pointer) &stuff[1],
- TRUE, &newtag);
- if (err)
- return err;
-
- rep.tag = newtag;
-
- if (client->swapped) {
- swapl(&rep.tag, n);
- }
- WriteToClient(client, sizeof(xLbxChangePropertyReply), (char *)&rep);
-
- return client->noClientException;
-}
-
-static void
-LbxWriteGetpropReply(ClientPtr client,
- xLbxGetPropertyReply *rep)
-{
- int n;
-
- if (client->swapped) {
- swaps(&rep->sequenceNumber, n);
- swapl(&rep->length, n);
- swapl(&rep->propertyType, n);
- swapl(&rep->bytesAfter, n);
- swapl(&rep->nItems, n);
- swapl(&rep->tag, n);
- }
- WriteToClient(client, sizeof(xLbxGetPropertyReply), (char *)rep);
-}
-
-int
-LbxGetProperty(ClientPtr client)
-{
- PropertyPtr pProp,
- prevProp;
- unsigned long n,
- len,
- ind;
- WindowPtr pWin;
- xLbxGetPropertyReply reply;
- Bool send_data = FALSE;
-
- REQUEST(xLbxGetPropertyReq);
-
- REQUEST_SIZE_MATCH(xLbxGetPropertyReq);
-
- reply.pad1 = 0;
- reply.pad2 = 0;
-
- if (stuff->delete)
- UpdateCurrentTime();
- pWin = (WindowPtr) SecurityLookupWindow(stuff->window, client,
- SecurityReadAccess);
- if (!pWin)
- return (BadWindow);
-
- if (!ValidAtom(stuff->property)) {
- client->errorValue = stuff->property;
- return (BadAtom);
- }
- if ((stuff->delete != xTrue) && (stuff->delete != xFalse)) {
- client->errorValue = stuff->delete;
- return (BadValue);
- }
- if ((stuff->type != AnyPropertyType) && !ValidAtom(stuff->type))
- {
- client->errorValue = stuff->type;
- return(BadAtom);
- }
- pProp = wUserProps(pWin);
- prevProp = (PropertyPtr) NULL;
- while (pProp) {
- if (pProp->propertyName == stuff->property)
- break;
- prevProp = pProp;
- pProp = pProp->next;
- }
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- if (!pProp) {
- reply.nItems = 0;
- reply.length = 0;
- reply.bytesAfter = 0;
- reply.propertyType = None;
- reply.format = 0;
- reply.tag = 0;
- LbxWriteGetpropReply(client, &reply);
- return client->noClientException;
- }
- /*
- * If the request type and actual type don't match. Return the
- * property information, but not the data.
- */
- if ((stuff->type != pProp->type) &&
- (stuff->type != AnyPropertyType)) {
- reply.bytesAfter = pProp->size;
- reply.format = pProp->format;
- reply.length = 0;
- reply.nItems = 0;
- reply.propertyType = pProp->type;
- reply.tag = 0;
- LbxWriteGetpropReply(client, &reply);
- return client->noClientException;
- }
- /*
- * Return type, format, value to client
- */
- n = (pProp->format >> 3) * pProp->size; /* size (bytes) of prop */
- ind = stuff->longOffset << 2;
-
- /*
- * If longOffset is invalid such that it causes "len" to be
- * negative, it's a value error.
- */
-
- if (n < ind) {
- client->errorValue = stuff->longOffset;
- return BadValue;
- }
-
- /* make sure we have the current value */
- if (pProp->tag_id && pProp->owner_pid) {
- LbxStallPropRequest(client, pProp);
- return client->noClientException;
- }
-
- len = min(n - ind, stuff->longLength << 2);
-
- reply.bytesAfter = n - (ind + len);
- reply.format = pProp->format;
- reply.propertyType = pProp->type;
-
- if (!pProp->tag_id) {
- if (n && (!stuff->delete || reply.bytesAfter)) {
- TagSaveTag(LbxTagTypeProperty, n, (pointer)pProp, &pProp->tag_id);
- pProp->owner_pid = 0;
- }
- send_data = TRUE;
- } else
- send_data = !TagProxyMarked(pProp->tag_id, LbxProxyID(client));
- if (pProp->tag_id && send_data)
- TagMarkProxy(pProp->tag_id, LbxProxyID(client));
- reply.tag = pProp->tag_id;
-
- if (!send_data)
- len = 0;
- else if (reply.tag) {
- len = n;
- ind = 0;
- }
- reply.nItems = len / (pProp->format >> 3);
- reply.length = (len + 3) >> 2;
-
- if (stuff->delete && (reply.bytesAfter == 0)) {
- xEvent event;
-
- event.u.u.type = PropertyNotify;
- event.u.property.window = pWin->drawable.id;
- event.u.property.state = PropertyDelete;
- event.u.property.atom = pProp->propertyName;
- event.u.property.time = currentTime.milliseconds;
- DeliverEvents(pWin, &event, 1, (WindowPtr) NULL);
- }
- LbxWriteGetpropReply(client, &reply);
- if (len) {
- switch (reply.format) {
- case 32:
- client->pSwapReplyFunc = (ReplySwapPtr)CopySwap32Write;
- break;
- case 16:
- client->pSwapReplyFunc = (ReplySwapPtr)CopySwap16Write;
- break;
- default:
- client->pSwapReplyFunc = (ReplySwapPtr) WriteToClient;
- break;
- }
- WriteSwappedDataToClient(client, len,
- (char *) pProp->data + ind);
- }
- if (stuff->delete && (reply.bytesAfter == 0)) {
- if (pProp->tag_id)
- TagDeleteTag(pProp->tag_id);
- if (prevProp == (PropertyPtr) NULL) {
- if (!(pWin->optional->userProps = pProp->next))
- CheckWindowOptionalNeed(pWin);
- } else
- prevProp->next = pProp->next;
- xfree(pProp->data);
- xfree(pProp);
- }
- return client->noClientException;
-}
diff --git a/nx-X11/programs/Xserver/lbx/lbxserve.h b/nx-X11/programs/Xserver/lbx/lbxserve.h
deleted file mode 100644
index 195e985b3..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxserve.h
+++ /dev/null
@@ -1,289 +0,0 @@
-/* $Xorg: lbxserve.h,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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 1992 Network Computing Devices
- *
- * 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, and that the name of NCD. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. NCD. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxserve.h,v 1.4 2001/08/01 00:44:58 tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _LBXSERVE_H_
-
-#include "colormap.h"
-#include "property.h"
-
-#define _LBXSERVE_H_
-#define _XLBX_SERVER_
-#include <X11/extensions/lbxstr.h>
-#include <X11/extensions/lbxdeltastr.h>
-#include <X11/extensions/lbxopts.h>
-
-#define MAX_LBX_CLIENTS MAXCLIENTS
-#define MAX_NUM_PROXIES (MAXCLIENTS >> 1)
-
-typedef struct _LbxClient *LbxClientPtr;
-typedef struct _LbxProxy *LbxProxyPtr;
-
-typedef struct _LbxClient {
- CARD32 id;
- ClientPtr client;
- LbxProxyPtr proxy;
- Bool ignored;
- Bool input_blocked;
- int reqs_pending;
- long bytes_in_reply;
- long bytes_remaining;
- Drawable drawableCache[GFX_CACHE_SIZE];
- GContext gcontextCache[GFX_CACHE_SIZE];
- pointer gfx_buffer; /* tmp buffer for unpacking gfx requests */
- unsigned long gb_size;
-} LbxClientRec;
-
-typedef struct _connectionOutput *OSBufPtr;
-
-typedef struct _LbxProxy {
- LbxProxyPtr next;
- /* this array is indexed by lbx proxy index */
- LbxClientPtr lbxClients[MAX_LBX_CLIENTS];
- LbxClientPtr curRecv,
- curDix;
- int fd;
- int pid; /* proxy ID */
- int uid;
- int numClients;
- int maxIndex;
- Bool aborted;
- int grabClient;
- pointer compHandle;
- Bool dosquishing;
- Bool useTags;
- LBXDeltasRec indeltas;
- LBXDeltasRec outdeltas;
- char *iDeltaBuf;
- char *replyBuf;
- char *oDeltaBuf;
- OSBufPtr ofirst;
- OSBufPtr olast;
- CARD32 cur_send_id;
-
- LbxStreamOpts streamOpts;
-
- int numBitmapCompMethods;
- unsigned char *bitmapCompMethods; /* array of indices */
- int numPixmapCompMethods;
- unsigned char *pixmapCompMethods; /* array of indices */
- int **pixmapCompDepths; /* depths supported from each method */
-
- struct _ColormapRec *grabbedCmaps; /* chained via lbx private */
- int motion_allowed_events;
- lbxMotionCache motionCache;
-} LbxProxyRec;
-
-/* This array is indexed by server client index, not lbx proxy index */
-
-extern LbxClientPtr lbxClients[MAXCLIENTS];
-
-#define LbxClient(client) (lbxClients[(client)->index])
-#define LbxProxy(client) (LbxClient(client)->proxy)
-#define LbxMaybeProxy(client) (LbxClient(client) ? LbxProxy(client) : 0)
-#define LbxProxyID(client) (LbxProxy(client)->pid)
-#define LbxProxyClient(proxy) ((proxy)->lbxClients[0]->client)
-
-extern int LbxEventCode;
-
-
-/* os/connection.c */
-extern ClientPtr AllocLbxClientConnection ( ClientPtr client,
- LbxProxyPtr proxy );
-extern void LbxProxyConnection ( ClientPtr client, LbxProxyPtr proxy );
-
-/* os/libxio.c */
-extern int UncompressedWriteToClient ( ClientPtr who, int count, char *buf );
-extern void LbxForceOutput ( LbxProxyPtr proxy );
-extern void SwitchClientInput ( ClientPtr client, Bool pending );
-extern int PrepareLargeReqBuffer ( ClientPtr client );
-extern Bool AppendFakeRequest ( ClientPtr client, char *data, int count );
-extern void LbxFreeOsBuffers ( LbxProxyPtr proxy );
-extern Bool AllocateLargeReqBuffer ( ClientPtr client, int size );
-extern Bool AddToLargeReqBuffer ( ClientPtr client, char *data, int size );
-extern void LbxPrimeInput ( ClientPtr client, LbxProxyPtr proxy );
-
-/* lbxcmap.c */
-extern int LbxCmapInit ( void );
-extern Bool LbxCheckColorRequest ( ClientPtr client, ColormapPtr pmap,
- xReq *req );
-extern int LbxCheckCmapGrabbed ( ColormapPtr pmap );
-extern void LbxDisableSmartGrab ( ColormapPtr pmap );
-extern void LbxBeginFreeCellsEvent ( ColormapPtr pmap );
-extern void LbxAddFreeCellToEvent ( ColormapPtr pmap, Pixel pixel );
-extern void LbxEndFreeCellsEvent ( ColormapPtr pmap );
-extern void LbxSortPixelList ( Pixel *pixels, int count );
-extern int ProcLbxGrabCmap ( ClientPtr client );
-extern void LbxReleaseCmap ( ColormapPtr pmap, Bool smart );
-extern int ProcLbxReleaseCmap ( ClientPtr client );
-extern int ProcLbxAllocColor ( ClientPtr client );
-extern int ProcLbxIncrementPixel ( ClientPtr client );
-
-/* lbxdix.h */
-extern void LbxDixInit ( void );
-extern void LbxResetTags ( void );
-extern int LbxSendConnSetup ( ClientPtr client, char *reason );
-extern int LbxGetModifierMapping ( ClientPtr client );
-extern int LbxGetKeyboardMapping ( ClientPtr client );
-extern int LbxQueryFont ( ClientPtr client );
-extern int LbxTagData ( ClientPtr client, XID tag, unsigned long len,
- pointer data );
-extern int LbxInvalidateTag ( ClientPtr client, XID tag );
-extern void LbxAllowMotion ( ClientPtr client, int num );
-extern void LbxFlushModifierMapTag ( void );
-extern void LbxFlushKeyboardMapTag ( void );
-extern void LbxFreeFontTag ( FontPtr pfont );
-extern void LbxSendInvalidateTag ( ClientPtr client, XID tag, int tagtype );
-extern Bool LbxFlushQTag ( XID tag );
-extern void ProcessQTagZombies ( void );
-extern void LbxQueryTagData ( ClientPtr client, int owner_pid, XID tag,
- int tagtype );
-
-/* lbxexts.c */
-extern Bool LbxAddExtension ( char *name, int opcode, int ev_base,
- int err_base );
-extern Bool LbxAddExtensionAlias ( int idx, char *alias );
-extern void LbxDeclareExtensionSecurity ( char *extname, Bool secure );
-extern Bool LbxRegisterExtensionGenerationMasks ( int idx, int num_reqs,
- char *rep_mask,
- char *ev_mask );
-extern int LbxQueryExtension ( ClientPtr client, char *ename, int nlen );
-extern void LbxCloseDownExtensions ( void );
-extern void LbxSetReqMask ( CARD8 *mask, int req, Bool on );
-
-/* lbxgfx.c */
-extern int LbxDecodePoly( ClientPtr client, CARD8 xreqtype,
- int (*decode_rtn)(char *, char *, short *) );
-extern int LbxDecodeFillPoly ( ClientPtr client );
-extern int LbxDecodeCopyArea ( ClientPtr client );
-extern int LbxDecodeCopyPlane ( ClientPtr client );
-extern int LbxDecodePolyText ( ClientPtr client );
-extern int LbxDecodeImageText ( ClientPtr client );
-extern int LbxDecodePutImage ( ClientPtr client );
-extern int LbxDecodeGetImage ( ClientPtr client );
-extern int LbxDecodePoints ( char *in, char *inend, short *out );
-extern int LbxDecodeSegment ( char *in, char *inend, short *out );
-extern int LbxDecodeRectangle ( char *in, char *inend, short *out );
-extern int LbxDecodeArc ( char *in, char *inend, short *out );
-
-/* lbxmain.c */
-extern LbxProxyPtr LbxPidToProxy ( int pid );
-extern void LbxReencodeOutput ( ClientPtr client, char *pbuf, int *pcount,
- char *cbuf, int *ccount );
-extern void LbxExtensionInit ( void );
-extern void LbxCloseClient ( ClientPtr client );
-extern void LbxSetForBlock ( LbxClientPtr lbxClient );
-extern int ProcLbxDispatch ( ClientPtr client );
-extern int ProcLbxSwitch ( ClientPtr client );
-extern int ProcLbxQueryVersion ( ClientPtr client );
-extern int ProcLbxStartProxy ( ClientPtr client );
-extern int ProcLbxStopProxy ( ClientPtr client );
-extern int ProcLbxBeginLargeRequest ( ClientPtr client );
-extern int ProcLbxLargeRequestData ( ClientPtr client );
-extern int ProcLbxEndLargeRequest ( ClientPtr client );
-extern int ProcLbxInternAtoms ( ClientPtr client );
-extern int ProcLbxGetWinAttrAndGeom ( ClientPtr client );
-extern int ProcLbxNewClient ( ClientPtr client );
-extern int ProcLbxEstablishConnection ( ClientPtr client );
-extern int ProcLbxCloseClient ( ClientPtr client );
-extern int ProcLbxModifySequence ( ClientPtr client );
-extern int ProcLbxAllowMotion ( ClientPtr client );
-extern int ProcLbxGetModifierMapping ( ClientPtr client );
-extern int ProcLbxGetKeyboardMapping ( ClientPtr client );
-extern int ProcLbxQueryFont ( ClientPtr client );
-extern int ProcLbxChangeProperty ( ClientPtr client );
-extern int ProcLbxGetProperty ( ClientPtr client );
-extern int ProcLbxTagData ( ClientPtr client );
-extern int ProcLbxInvalidateTag ( ClientPtr client );
-extern int ProcLbxPolyPoint ( ClientPtr client );
-extern int ProcLbxPolyLine ( ClientPtr client );
-extern int ProcLbxPolySegment ( ClientPtr client );
-extern int ProcLbxPolyRectangle ( ClientPtr client );
-extern int ProcLbxPolyArc ( ClientPtr client );
-extern int ProcLbxFillPoly ( ClientPtr client );
-extern int ProcLbxPolyFillRectangle ( ClientPtr client );
-extern int ProcLbxPolyFillArc ( ClientPtr client );
-extern int ProcLbxCopyArea ( ClientPtr client );
-extern int ProcLbxCopyPlane ( ClientPtr client );
-extern int ProcLbxPolyText ( ClientPtr client );
-extern int ProcLbxImageText ( ClientPtr client );
-extern int ProcLbxQueryExtension ( ClientPtr client );
-extern int ProcLbxPutImage ( ClientPtr client );
-extern int ProcLbxGetImage ( ClientPtr client );
-extern int ProcLbxSync ( ClientPtr client );
-
-/* lbxprop.c */
-extern int LbxChangeProperty ( ClientPtr client );
-extern int LbxGetProperty ( ClientPtr client );
-extern void LbxStallPropRequest ( ClientPtr client, PropertyPtr pProp );
-extern int LbxChangeWindowProperty ( ClientPtr client, WindowPtr pWin,
- Atom property, Atom type, int format,
- int mode, unsigned long len,
- Bool have_data, pointer value,
- Bool sendevent, XID *tag );
-/* lbxsquish.c */
-extern int LbxSquishEvent ( char *buf );
-
-/* lbwswap.c */
-extern int SProcLbxDispatch( ClientPtr client );
-extern int SProcLbxSwitch ( ClientPtr client );
-extern int SProcLbxBeginLargeRequest ( ClientPtr client );
-extern int SProcLbxLargeRequestData ( ClientPtr client );
-extern int SProcLbxEndLargeRequest ( ClientPtr client );
-extern void LbxWriteSConnSetupPrefix ( ClientPtr pClient,
- xLbxConnSetupPrefix *pcsp );
-extern void LbxSwapFontInfo ( xLbxFontInfo *pr, Bool compressed );
-
-/* lbxzerorep.c */
-extern void ZeroReplyPadBytes ( char *buf, int reqType );
-
-#endif /* _LBXSERVE_H_ */
diff --git a/nx-X11/programs/Xserver/lbx/lbxsquish.c b/nx-X11/programs/Xserver/lbx/lbxsquish.c
deleted file mode 100644
index 8f1cad7c0..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxsquish.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/* $Xorg: lbxsquish.c,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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 1994 Network Computing Devices, Inc.
- *
- * 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, and that the name Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE, DATA,
- * OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF
- * WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxsquish.c,v 1.3 2001/01/17 22:37:00 dawes Exp $ */
-#define NEED_REPLIES
-#define NEED_EVENTS
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include <X11/Xos.h>
-#include "misc.h"
-#include "colormapst.h"
-#include "propertyst.h"
-#include "lbxserve.h"
-#define _XLBX_SERVER_
-#include <X11/extensions/lbxstr.h>
-
-/* handles server-side protocol squishing */
-
-static char lbxevdelta[] = {
- 0,
- 0,
- sz_xEvent - lbxsz_KeyButtonEvent,
- sz_xEvent - lbxsz_KeyButtonEvent,
- sz_xEvent - lbxsz_KeyButtonEvent,
- sz_xEvent - lbxsz_KeyButtonEvent,
- sz_xEvent - lbxsz_KeyButtonEvent,
- sz_xEvent - lbxsz_EnterLeaveEvent,
- sz_xEvent - lbxsz_EnterLeaveEvent,
- sz_xEvent - lbxsz_FocusEvent,
- sz_xEvent - lbxsz_FocusEvent,
- sz_xEvent - lbxsz_KeymapEvent,
- sz_xEvent - lbxsz_ExposeEvent,
- sz_xEvent - lbxsz_GfxExposeEvent,
- sz_xEvent - lbxsz_NoExposeEvent,
- sz_xEvent - lbxsz_VisibilityEvent,
- sz_xEvent - lbxsz_CreateNotifyEvent,
- sz_xEvent - lbxsz_DestroyNotifyEvent,
- sz_xEvent - lbxsz_UnmapNotifyEvent,
- sz_xEvent - lbxsz_MapNotifyEvent,
- sz_xEvent - lbxsz_MapRequestEvent,
- sz_xEvent - lbxsz_ReparentEvent,
- sz_xEvent - lbxsz_ConfigureNotifyEvent,
- sz_xEvent - lbxsz_ConfigureRequestEvent,
- sz_xEvent - lbxsz_GravityEvent,
- sz_xEvent - lbxsz_ResizeRequestEvent,
- sz_xEvent - lbxsz_CirculateEvent,
- sz_xEvent - lbxsz_CirculateEvent,
- sz_xEvent - lbxsz_PropertyEvent,
- sz_xEvent - lbxsz_SelectionClearEvent,
- sz_xEvent - lbxsz_SelectionRequestEvent,
- sz_xEvent - lbxsz_SelectionNotifyEvent,
- sz_xEvent - lbxsz_ColormapEvent,
- sz_xEvent - lbxsz_ClientMessageEvent,
- sz_xEvent - lbxsz_MappingNotifyEvent
-};
-
-static char lbxevpad[] = {
- 0,
- 0,
- lbxsz_KeyButtonEvent - lbxupsz_KeyButtonEvent,
- lbxsz_KeyButtonEvent - lbxupsz_KeyButtonEvent,
- lbxsz_KeyButtonEvent - lbxupsz_KeyButtonEvent,
- lbxsz_KeyButtonEvent - lbxupsz_KeyButtonEvent,
- lbxsz_KeyButtonEvent - lbxupsz_KeyButtonEvent,
- lbxsz_EnterLeaveEvent - lbxupsz_EnterLeaveEvent,
- lbxsz_EnterLeaveEvent - lbxupsz_EnterLeaveEvent,
- lbxsz_FocusEvent - lbxupsz_FocusEvent,
- lbxsz_FocusEvent - lbxupsz_FocusEvent,
- lbxsz_KeymapEvent - lbxupsz_KeymapEvent,
- lbxsz_ExposeEvent - lbxupsz_ExposeEvent,
- lbxsz_GfxExposeEvent - lbxupsz_GfxExposeEvent,
- lbxsz_NoExposeEvent - lbxupsz_NoExposeEvent,
- lbxsz_VisibilityEvent - lbxupsz_VisibilityEvent,
- lbxsz_CreateNotifyEvent - lbxupsz_CreateNotifyEvent,
- lbxsz_DestroyNotifyEvent - lbxupsz_DestroyNotifyEvent,
- lbxsz_UnmapNotifyEvent - lbxupsz_UnmapNotifyEvent,
- lbxsz_MapNotifyEvent - lbxupsz_MapNotifyEvent,
- lbxsz_MapRequestEvent - lbxupsz_MapRequestEvent,
- lbxsz_ReparentEvent - lbxupsz_ReparentEvent,
- lbxsz_ConfigureNotifyEvent - lbxupsz_ConfigureNotifyEvent,
- lbxsz_ConfigureRequestEvent - lbxupsz_ConfigureRequestEvent,
- lbxsz_GravityEvent - lbxupsz_GravityEvent,
- lbxsz_ResizeRequestEvent - lbxupsz_ResizeRequestEvent,
- lbxsz_CirculateEvent - lbxupsz_CirculateEvent,
- lbxsz_CirculateEvent - lbxupsz_CirculateEvent,
- lbxsz_PropertyEvent - lbxupsz_PropertyEvent,
- lbxsz_SelectionClearEvent - lbxupsz_SelectionClearEvent,
- lbxsz_SelectionRequestEvent - lbxupsz_SelectionRequestEvent,
- lbxsz_SelectionNotifyEvent - lbxupsz_SelectionNotifyEvent,
- lbxsz_ColormapEvent - lbxupsz_ColormapEvent,
- lbxsz_ClientMessageEvent - lbxupsz_ClientMessageEvent,
- lbxsz_MappingNotifyEvent - lbxupsz_MappingNotifyEvent
-};
-
-int
-LbxSquishEvent(char *buf)
-{
- int delta = lbxevdelta[((xEvent *)buf)->u.u.type];
- int pad = lbxevpad[((xEvent *)buf)->u.u.type];
-
- if (delta)
- memmove(buf + delta, buf, sz_xEvent - delta);
- if (pad) {
- buf += sz_xEvent;
- while (--pad >= 0)
- *--buf = 0;
- }
- return delta;
-}
diff --git a/nx-X11/programs/Xserver/lbx/lbxsrvopts.h b/nx-X11/programs/Xserver/lbx/lbxsrvopts.h
deleted file mode 100644
index 9cf3d7630..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxsrvopts.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* $Xorg: lbxsrvopts.h,v 1.3 2000/08/17 19:53:31 cpqbld Exp $ */
-/*
- * Copyright 1994 Network Computing Devices, Inc.
- *
- * 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, and that the name Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE, DATA,
- * OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF
- * WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxsrvopts.h,v 1.2 2000/05/18 23:46:24 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _LBX_SRVOPTS_H_
-#define _LBX_SRVOPTS_H_
-
-#include <X11/extensions/lbxopts.h>
-
-typedef struct _LbxNegOpts {
- int nopts;
- short proxyDeltaN;
- short proxyDeltaMaxLen;
- short serverDeltaN;
- short serverDeltaMaxLen;
- LbxStreamOpts streamOpts;
- int numBitmapCompMethods;
- unsigned char *bitmapCompMethods; /* array of indices */
- int numPixmapCompMethods;
- unsigned char *pixmapCompMethods; /* array of indices */
- int **pixmapCompDepths; /* depths supported from each method */
- Bool squish;
- Bool useTags;
-} LbxNegOptsRec;
-
-typedef LbxNegOptsRec *LbxNegOptsPtr;
-
-
-extern void LbxOptionInit ( LbxNegOptsPtr pno );
-extern int LbxOptionParse ( LbxNegOptsPtr pno, unsigned char *popt,
- int optlen, unsigned char *preply );
-extern LbxBitmapCompMethod *
-LbxSrvrLookupBitmapCompMethod ( LbxProxyPtr proxy, int methodOpCode );
-extern LbxPixmapCompMethod *
-LbxSrvrLookupPixmapCompMethod ( LbxProxyPtr proxy, int methodOpCode );
-extern LbxBitmapCompMethod *
-LbxSrvrFindPreferredBitmapCompMethod ( LbxProxyPtr proxy );
-extern LbxPixmapCompMethod *
-LbxSrvrFindPreferredPixmapCompMethod ( LbxProxyPtr proxy, int format, int depth );
-
-
-#endif /* _LBX_SRVOPTS_H_ */
diff --git a/nx-X11/programs/Xserver/lbx/lbxswap.c b/nx-X11/programs/Xserver/lbx/lbxswap.c
deleted file mode 100644
index 848be7f70..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxswap.c
+++ /dev/null
@@ -1,828 +0,0 @@
-/* $Xorg: lbxswap.c,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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 1992 Network Computing Devices
- *
- * 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, and that the name of NCD. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. NCD. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxswap.c,v 1.3 2001/01/17 22:37:00 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <sys/types.h>
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include <X11/Xos.h>
-#include "misc.h"
-#include "os.h"
-#include "dixstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "servermd.h"
-#include "swaprep.h"
-#include "propertyst.h"
-#define _XLBX_SERVER_
-#include <X11/extensions/lbxstr.h>
-#include "lbxserve.h"
-#include <X11/Xfuncproto.h>
-
-#include <stdio.h>
-
-static int
-SProcLbxQueryVersion(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxQueryVersionReq);
-
- swaps(&stuff->length, n);
- return ProcLbxQueryVersion(client);
-}
-
-static int
-SProcLbxStartProxy(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxStartProxyReq);
-
- swaps(&stuff->length, n);
- return ProcLbxStartProxy(client);
-}
-
-static int
-SProcLbxStopProxy(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxStopProxyReq);
-
- swaps(&stuff->length, n);
- return ProcLbxStopProxy(client);
-}
-
-int
-SProcLbxSwitch(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxSwitchReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->client, n);
- return ProcLbxSwitch(client);
-}
-
-int
-SProcLbxBeginLargeRequest (ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxBeginLargeRequestReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->largeReqLength, n);
- return ProcLbxBeginLargeRequest(client);
-}
-
-int
-SProcLbxLargeRequestData (ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxLargeRequestDataReq);
-
- swaps(&stuff->length, n);
- return ProcLbxLargeRequestData(client);
-}
-
-int
-SProcLbxEndLargeRequest (ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxEndLargeRequestReq);
-
- swaps(&stuff->length, n);
- return ProcLbxEndLargeRequest(client);
-}
-
-static int
-SProcLbxNewClient(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxNewClientReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->client, n);
- return ProcLbxNewClient(client);
-}
-
-static int
-SProcLbxCloseClient(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxCloseClientReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->client, n);
- return ProcLbxCloseClient(client);
-}
-
-static int
-SProcLbxModifySequence(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxModifySequenceReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->adjust, n);
- return ProcLbxModifySequence(client);
-}
-
-static int
-SProcLbxAllowMotion(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxAllowMotionReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->num, n);
- return ProcLbxAllowMotion(client);
-}
-
-static int
-SProcLbxIncrementPixel(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxIncrementPixelReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->cmap, n);
- swapl(&stuff->pixel, n);
- return ProcLbxIncrementPixel(client);
-}
-
-static int
-SProcLbxGrabCmap(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxGrabCmapReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->cmap, n);
-
- return ProcLbxGrabCmap(client);
-}
-
-static int
-SProcLbxReleaseCmap(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxReleaseCmapReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->cmap, n);
-
- return ProcLbxReleaseCmap(client);
-}
-
-static int
-SProcLbxAllocColor(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxAllocColorReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->cmap, n);
- swapl(&stuff->pixel, n);
- swaps(&stuff->red, n);
- swaps(&stuff->green, n);
- swaps(&stuff->blue, n);
-
- return ProcLbxAllocColor(client);
-}
-
-static int
-SProcLbxGetModifierMapping(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxGetModifierMappingReq);
-
- swaps(&stuff->length, n);
- return ProcLbxGetModifierMapping(client);
-}
-
-static int
-SProcLbxGetKeyboardMapping(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxGetKeyboardMappingReq);
-
- swaps(&stuff->length, n);
- return ProcLbxGetKeyboardMapping(client);
-}
-
-static int
-SProcLbxQueryFont(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxQueryFontReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->fid, n);
- return ProcLbxQueryFont(client);
-}
-
-static int
-SProcLbxChangeProperty(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxChangePropertyReq);
-
- swaps(&stuff->length, n);
- REQUEST_AT_LEAST_SIZE(xLbxChangePropertyReq);
- swapl(&stuff->window, n);
- swapl(&stuff->property, n);
- swapl(&stuff->type, n);
- swapl(&stuff->nUnits, n);
- switch (stuff->format) {
- case 8:
- break;
- case 16:
- SwapRestS(stuff);
- break;
- case 32:
- SwapRestL(stuff);
- break;
- }
- return ProcLbxChangeProperty(client);
-}
-
-static int
-SProcLbxGetProperty(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxGetPropertyReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->window, n);
- swapl(&stuff->property, n);
- swapl(&stuff->type, n);
- swapl(&stuff->longOffset, n);
- swapl(&stuff->longLength, n);
- return ProcLbxGetProperty(client);
-}
-
-static int
-SProcLbxTagData(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxTagDataReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->tag, n);
- swapl(&stuff->real_length, n);
- return ProcLbxTagData(client);
-}
-
-static int
-SProcLbxInvalidateTag(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxInvalidateTagReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->tag, n);
- return ProcLbxInvalidateTag(client);
-}
-
-static int
-SProcLbxPoly(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxPolyPointReq);
- char *after;
-
- swaps(&stuff->length, n);
- after = ((char *) stuff) + SIZEOF(xLbxPolyPointReq);
- if (GFXdCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- {
- swapl (((Drawable *) after), n);
- after += sizeof (Drawable);
- }
- if (GFXgCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- swapl (((GContext *) after), n);
- return ProcLbxDispatch(client);
-}
-
-static int
-SProcLbxFillPoly(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxFillPolyReq);
- char *after;
-
- swaps(&stuff->length, n);
- after = ((char *) stuff) + SIZEOF(xLbxFillPolyReq);
- if (GFXdCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- {
- swapl (((Drawable *) after), n);
- after += sizeof (Drawable);
- }
- if (GFXgCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- swapl (((GContext *) after), n);
- return ProcLbxFillPoly(client);
-}
-
-static int
-SProcLbxCopyArea(ClientPtr client)
-{
- int n;
-
- REQUEST(xLbxCopyAreaReq);
- char *after;
-
- swaps(&stuff->length, n);
- after = ((char *) stuff) + SIZEOF(xLbxCopyAreaReq);
- if (GFXdCacheEnt (stuff->srcCache) == GFXCacheNone)
- {
- swapl (((Drawable *) after), n);
- after += sizeof (Drawable);
- }
- if (GFXdCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- {
- swapl (((Drawable *) after), n);
- after += sizeof (Drawable);
- }
- if (GFXgCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- swapl (((GContext *) after), n);
- return ProcLbxCopyArea(client);
-}
-
-static int
-SProcLbxCopyPlane(ClientPtr client)
-{
- int n;
-
- REQUEST(xLbxCopyPlaneReq);
- char *after;
-
- swaps(&stuff->length, n);
- swapl(&stuff->bitPlane, n);
- after = ((char *) stuff) + SIZEOF(xLbxCopyPlaneReq);
- if (GFXdCacheEnt (stuff->srcCache) == GFXCacheNone)
- {
- swapl (((Drawable *) after), n);
- after += sizeof (Drawable);
- }
- if (GFXdCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- {
- swapl (((Drawable *) after), n);
- after += sizeof (Drawable);
- }
- if (GFXgCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- swapl (((GContext *) after), n);
- return ProcLbxCopyPlane(client);
-}
-
-static int
-SProcLbxPolyText(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxPolyTextReq);
- char *after;
-
- swaps(&stuff->length, n);
- after = ((char *) stuff) + SIZEOF(xLbxPolyTextReq);
- if (GFXdCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- {
- swapl (((Drawable *) after), n);
- after += sizeof (Drawable);
- }
- if (GFXgCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- swapl (((GContext *) after), n);
- return ProcLbxDispatch(client);
-}
-
-static int
-SProcLbxImageText(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxImageTextReq);
- char *after;
-
- swaps(&stuff->length, n);
- after = ((char *) stuff) + SIZEOF(xLbxImageTextReq);
- if (GFXdCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- {
- swapl (((Drawable *) after), n);
- after += sizeof (Drawable);
- }
- if (GFXgCacheEnt (stuff->cacheEnts) == GFXCacheNone)
- swapl (((GContext *) after), n);
- return ProcLbxDispatch(client);
-}
-
-
-static int
-SProcLbxPutImage(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxPutImageReq);
-
- swaps (&stuff->length, n);
- return ProcLbxPutImage(client);
-}
-
-static int
-SProcLbxGetImage(ClientPtr client)
-{
- register int n;
-
- REQUEST(xLbxGetImageReq);
-
- swaps (&stuff->length, n);
- swapl (&stuff->drawable, n);
- swaps (&stuff->x, n);
- swaps (&stuff->y, n);
- swaps (&stuff->width, n);
- swaps (&stuff->height, n);
- swapl (&stuff->planeMask, n);
- return ProcLbxGetImage(client);
-}
-
-static int
-SProcLbxInternAtoms(ClientPtr client)
-{
- register int n;
- char *ptr;
- char lenbuf[2];
- CARD16 len;
- int i;
-
- REQUEST(xLbxInternAtomsReq);
-
- swaps (&stuff->length, n);
- swaps (&stuff->num, n);
-
- ptr = (char *) stuff + sz_xLbxInternAtomsReq;
- for (i = 0; i < stuff->num; i++)
- {
- swaps (ptr, n);
- lenbuf[0] = ptr[0];
- lenbuf[1] = ptr[1];
- len = *((CARD16 *) lenbuf);
- ptr += (len + 2);
- }
-
- return ProcLbxInternAtoms(client);
-}
-
-
-static int
-SProcLbxGetWinAttrAndGeom(ClientPtr client)
-{
- int n;
-
- REQUEST(xLbxGetWinAttrAndGeomReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->id, n);
-
- return ProcLbxGetWinAttrAndGeom(client);
-}
-
-
-
-static int
-SProcLbxQueryExtension(ClientPtr client)
-{
- int n;
-
- REQUEST(xLbxQueryExtensionReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->nbytes, n);
- return ProcLbxQueryExtension(client);
-}
-
-int
-SProcLbxDispatch(ClientPtr client)
-{
- REQUEST(xReq);
- switch (stuff->data) {
- case X_LbxQueryVersion:
- return SProcLbxQueryVersion(client);
- case X_LbxStartProxy:
- return SProcLbxStartProxy(client);
- case X_LbxStopProxy:
- return SProcLbxStopProxy(client);
- case X_LbxNewClient:
- return SProcLbxNewClient(client);
- case X_LbxCloseClient:
- return SProcLbxCloseClient(client);
- case X_LbxModifySequence:
- return SProcLbxModifySequence(client);
- case X_LbxAllowMotion:
- return SProcLbxAllowMotion(client);
- case X_LbxIncrementPixel:
- return SProcLbxIncrementPixel(client);
- case X_LbxGrabCmap:
- return SProcLbxGrabCmap(client);
- case X_LbxReleaseCmap:
- return SProcLbxReleaseCmap(client);
- case X_LbxAllocColor:
- return SProcLbxAllocColor(client);
- case X_LbxGetModifierMapping:
- return SProcLbxGetModifierMapping(client);
- case X_LbxGetKeyboardMapping:
- return SProcLbxGetKeyboardMapping(client);
- case X_LbxInvalidateTag:
- return SProcLbxInvalidateTag(client);
- case X_LbxPolyPoint:
- case X_LbxPolyLine:
- case X_LbxPolySegment:
- case X_LbxPolyRectangle:
- case X_LbxPolyArc:
- case X_LbxPolyFillRectangle:
- case X_LbxPolyFillArc:
- return SProcLbxPoly(client);
- case X_LbxFillPoly:
- return SProcLbxFillPoly(client);
- case X_LbxQueryFont:
- return SProcLbxQueryFont(client);
- case X_LbxChangeProperty:
- return SProcLbxChangeProperty(client);
- case X_LbxGetProperty:
- return SProcLbxGetProperty(client);
- case X_LbxTagData:
- return SProcLbxTagData(client);
- case X_LbxCopyArea:
- return SProcLbxCopyArea(client);
- case X_LbxCopyPlane:
- return SProcLbxCopyPlane(client);
- case X_LbxPolyText8:
- case X_LbxPolyText16:
- return SProcLbxPolyText(client);
- case X_LbxImageText8:
- case X_LbxImageText16:
- return SProcLbxImageText (client);
- case X_LbxQueryExtension:
- return SProcLbxQueryExtension(client);
- case X_LbxPutImage:
- return SProcLbxPutImage(client);
- case X_LbxGetImage:
- return SProcLbxGetImage(client);
- case X_LbxInternAtoms:
- return SProcLbxInternAtoms(client);
- case X_LbxGetWinAttrAndGeom:
- return SProcLbxGetWinAttrAndGeom(client);
- case X_LbxSync:
- return ProcLbxSync(client); /* nothing to swap */
- case X_LbxBeginLargeRequest:
- return SProcLbxBeginLargeRequest(client);
- case X_LbxLargeRequestData:
- return SProcLbxLargeRequestData(client);
- default:
- return BadRequest;
- }
-}
-
-#ifdef notyet
-void
-LbxWriteSConnectionInfo(ClientPtr pClient,
- unsigned long size,
- char *pInfo)
-{
- int i, j, k;
- ScreenPtr pScreen;
- DepthPtr pDepth;
- char *pInfoT, *pInfoTBase;
- xConnSetup *pConnSetup = (xConnSetup *)pInfo;
-
- pInfoT = pInfoTBase = (char *) ALLOCATE_LOCAL(size);
- if (!pInfoTBase)
- {
- pClient->noClientException = -1;
- return;
- }
- SwapConnSetup(pConnSetup, (xConnSetup *)pInfoT);
- pInfo += sizeof(xConnSetup);
- pInfoT += sizeof(xConnSetup);
-
- /* Copy the vendor string */
- i = (pConnSetup->nbytesVendor + 3) & ~3;
- memmove(pInfoT, pInfo, i);
- pInfo += i;
- pInfoT += i;
-
- /* The Pixmap formats don't need to be swapped, just copied. */
- i = sizeof(xPixmapFormat) * screenInfo.numPixmapFormats;
- memmove(pInfoT, pInfo, i);
- pInfo += i;
- pInfoT += i;
-
- for(i = 0; i < screenInfo.numScreens; i++)
- {
- pScreen = screenInfo.screens[i];
- SwapWinRoot((xWindowRoot *)pInfo, (xWindowRoot *)pInfoT);
- pInfo += sizeof(xWindowRoot);
- pInfoT += sizeof(xWindowRoot);
- pDepth = pScreen->allowedDepths;
- for(j = 0; j < pScreen->numDepths; j++, pDepth++)
- {
- ((xDepth *)pInfoT)->depth = ((xDepth *)pInfo)->depth;
- cpswaps(((xDepth *)pInfo)->nVisuals, ((xDepth *)pInfoT)->nVisuals);
- pInfo += sizeof(xDepth);
- pInfoT += sizeof(xDepth);
- for(k = 0; k < pDepth->numVids; k++)
- {
- SwapVisual((xVisualType *)pInfo, (xVisualType *)pInfoT);
- pInfo += sizeof(xVisualType);
- pInfoT += sizeof(xVisualType);
- }
- }
- }
- (void)WriteToClient(pClient, (int)size, (char *) pInfoTBase);
- DEALLOCATE_LOCAL(pInfoTBase);
-}
-
-void
-SwapConnSetup(xConnSetup *pConnSetup,
- xConnSetup *pConnSetupT)
-{
- cpswapl(pConnSetup->release, pConnSetupT->release);
- cpswapl(pConnSetup->ridBase, pConnSetupT->ridBase);
- cpswapl(pConnSetup->ridMask, pConnSetupT->ridMask);
- cpswapl(pConnSetup->motionBufferSize, pConnSetupT->motionBufferSize);
- cpswaps(pConnSetup->nbytesVendor, pConnSetupT->nbytesVendor);
- cpswaps(pConnSetup->maxRequestSize, pConnSetupT->maxRequestSize);
- pConnSetupT->minKeyCode = pConnSetup->minKeyCode;
- pConnSetupT->maxKeyCode = pConnSetup->maxKeyCode;
- pConnSetupT->numRoots = pConnSetup->numRoots;
- pConnSetupT->numFormats = pConnSetup->numFormats;
- pConnSetupT->imageByteOrder = pConnSetup->imageByteOrder;
- pConnSetupT->bitmapBitOrder = pConnSetup->bitmapBitOrder;
- pConnSetupT->bitmapScanlineUnit = pConnSetup->bitmapScanlineUnit;
- pConnSetupT->bitmapScanlinePad = pConnSetup->bitmapScanlinePad;
-}
-
-void
-SwapWinRoot(xWindowRoot *pRoot,
- xWindowRoot *pRootT)
-{
- cpswapl(pRoot->windowId, pRootT->windowId);
- cpswapl(pRoot->defaultColormap, pRootT->defaultColormap);
- cpswapl(pRoot->whitePixel, pRootT->whitePixel);
- cpswapl(pRoot->blackPixel, pRootT->blackPixel);
- cpswapl(pRoot->currentInputMask, pRootT->currentInputMask);
- cpswaps(pRoot->pixWidth, pRootT->pixWidth);
- cpswaps(pRoot->pixHeight, pRootT->pixHeight);
- cpswaps(pRoot->mmWidth, pRootT->mmWidth);
- cpswaps(pRoot->mmHeight, pRootT->mmHeight);
- cpswaps(pRoot->minInstalledMaps, pRootT->minInstalledMaps);
- cpswaps(pRoot->maxInstalledMaps, pRootT->maxInstalledMaps);
- cpswapl(pRoot->rootVisualID, pRootT->rootVisualID);
- pRootT->backingStore = pRoot->backingStore;
- pRootT->saveUnders = pRoot->saveUnders;
- pRootT->rootDepth = pRoot->rootDepth;
- pRootT->nDepths = pRoot->nDepths;
-}
-
-void
-SwapVisual(xVisualType *pVis,
- xVisualType *pVisT;
-{
- cpswapl(pVis->visualID, pVisT->visualID);
- pVisT->class = pVis->class;
- pVisT->bitsPerRGB = pVis->bitsPerRGB;
- cpswaps(pVis->colormapEntries, pVisT->colormapEntries);
- cpswapl(pVis->redMask, pVisT->redMask);
- cpswapl(pVis->greenMask, pVisT->greenMask);
- cpswapl(pVis->blueMask, pVisT->blueMask);
-}
-#endif
-
-void
-LbxWriteSConnSetupPrefix(ClientPtr pClient,
- xLbxConnSetupPrefix *pcsp)
-{
- xLbxConnSetupPrefix cspT;
-
- cspT.success = pcsp->success;
- cspT.changeType = pcsp->changeType;
- cspT.length = pcsp->length;
- cpswaps(pcsp->majorVersion, cspT.majorVersion);
- cpswaps(pcsp->minorVersion, cspT.minorVersion);
- cpswapl(pcsp->tag, cspT.tag);
-
- (void)WriteToClient(pClient, sizeof(cspT), (char *) &cspT);
-}
-
-void
-LbxSwapFontInfo(xLbxFontInfo *pr,
- Bool compressed)
-{
- unsigned i;
- xCharInfo *pxci;
- unsigned nchars,
- nprops;
- char *pby;
- register char n;
-
- nchars = pr->nCharInfos;
- nprops = pr->nFontProps;
- swaps(&pr->minCharOrByte2, n);
- swaps(&pr->maxCharOrByte2, n);
- swaps(&pr->defaultChar, n);
- swaps(&pr->nFontProps, n);
- swaps(&pr->fontAscent, n);
- swaps(&pr->fontDescent, n);
- SwapCharInfo(&pr->minBounds);
- SwapCharInfo(&pr->maxBounds);
- swapl(&pr->nCharInfos, n);
-
- pby = (char *) &pr[1];
- /*
- * Font properties are an atom and either an int32 or a CARD32, so they
- * are always 2 4 byte values
- */
- for (i = 0; i < nprops; i++) {
- swapl(pby, n);
- pby += 4;
- swapl(pby, n);
- pby += 4;
- }
- if (!compressed) {
- pxci = (xCharInfo *) pby;
- for (i = 0; i < nchars; i++, pxci++)
- SwapCharInfo(pxci);
- } else {
- SwapLongs((CARD32 *) pby, nchars);
- }
-}
diff --git a/nx-X11/programs/Xserver/lbx/lbxtables.c b/nx-X11/programs/Xserver/lbx/lbxtables.c
deleted file mode 100644
index 5e8174eeb..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxtables.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* $Xorg: lbxtables.c,v 1.3 2000/08/17 19:53:32 cpqbld Exp $ */
-/*
- * Copyright 1993 Network Computing Devices, Inc.
- *
- * 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, and that the name Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE, DATA,
- * OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF
- * WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxtables.c,v 1.2 2000/05/18 23:46:24 dawes Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "dix.h"
-
-extern int ProcInitialConnection(ClientPtr client);
-extern int ProcLbxEstablishConnection(ClientPtr client);
-
-int (* LbxInitialVector[3]) (ClientPtr) =
-{
- 0,
- ProcInitialConnection,
- ProcLbxEstablishConnection
-};
diff --git a/nx-X11/programs/Xserver/lbx/lbxtags.c b/nx-X11/programs/Xserver/lbx/lbxtags.c
deleted file mode 100644
index 84365b253..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxtags.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/* $Xorg: lbxtags.c,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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 1993 Network Computing Devices, Inc.
- *
- * 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, and that the name Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE, DATA,
- * OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF
- * WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxtags.c,v 1.3 2001/01/17 22:37:00 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "lbxdata.h"
-#include "resource.h"
-#include "colormapst.h"
-#include "propertyst.h"
-#include "lbxtags.h"
-#define _XLBX_SERVER_
-#include <X11/extensions/lbxstr.h>
-#include "propertyst.h"
-
-static RESTYPE TagResType;
-
-extern int _lbx_fi_junklen;
-
-/* ARGSUSED */
-static int
-tag_free(pointer data,
- XID id)
-{
- TagData td = (TagData) data;
- FontTagInfoPtr ftip;
- char *t;
-
- if (td->global)
- *(td->global) = 0;
- /* some types need to be freed, others are shared */
- if (td->data_type == LbxTagTypeFont) {
- /* remove any back links */
- ftip = (FontTagInfoPtr) td->tdata;
- FontSetPrivate(ftip->pfont, lbx_font_private, NULL);
- t = (char *) ftip->fontinfo;
- if (!ftip->compression) /* points to xQueryFont, so back up to it */
- t -= _lbx_fi_junklen;
- xfree(t);
- xfree(ftip);
- }
- xfree(data);
- return 0;
-}
-
-void
-TagInit(void)
-{
- TagResType = CreateNewResourceType(tag_free);
-}
-
-XID
-TagNewTag(void)
-{
- return FakeClientID(0);
-}
-
-void
-TagClearProxy(XID tid,
- int pid)
-{
- TagData td;
-
- td = (TagData) LookupIDByType(tid, TagResType);
- if (td)
- td->sent_to_proxy[pid >> 3] &= ~(1 << (pid & 7));
-}
-
-void
-TagMarkProxy(XID tid,
- int pid)
-{
- TagData td;
-
- td = (TagData) LookupIDByType(tid, TagResType);
- td->sent_to_proxy[pid >> 3] |= 1 << (pid & 7);
-}
-
-Bool
-TagProxyMarked(XID tid,
- int pid)
-{
- TagData td;
-
- td = (TagData) LookupIDByType(tid, TagResType);
- return (td->sent_to_proxy[pid >> 3] & (1 << (pid & 7))) != 0;
-}
-
-XID
-TagSaveTag(int dtype,
- int size,
- pointer data,
- XID *global)
-{
- TagData td;
-
- td = (TagData) xalloc(sizeof(TagDataRec));
- if (!td) {
- if (global)
- *global = 0;
- return 0;
- }
- bzero((char *) td->sent_to_proxy, (MAX_NUM_PROXIES + 7) / 8);
- td->tid = TagNewTag();
- td->data_type = dtype;
- td->tdata = data;
- td->size = size;
- td->global = global;
- if (!AddResource(td->tid, TagResType, (pointer) td))
- return 0;
- if (global)
- *global = td->tid;
- return td->tid;
-}
-
-void
-TagDeleteTag(XID tid)
-{
- int pid;
- TagData td;
- LbxProxyPtr proxy;
- ClientPtr client;
- LbxClientPtr lbxcp;
-
- td = (TagData) LookupIDByType(tid, TagResType);
- if (!td) /* shouldn't happen, but play it safe */
- return;
- for (pid = 1; pid < MAX_NUM_PROXIES; pid++) {
- if (td->sent_to_proxy[pid >> 3] & (1 << (pid & 7))) {
- proxy = LbxPidToProxy(pid);
- lbxcp = (proxy != NULL) ? proxy->lbxClients[0] : NULL;
- if (lbxcp && (client = lbxcp->client))
- LbxSendInvalidateTag(client, tid, td->data_type);
- td->sent_to_proxy[pid >> 3] &= ~(1 << (pid & 7));
- }
- }
- if (td->data_type != LbxTagTypeProperty || !LbxFlushQTag(tid))
- FreeResource(tid, 0);
- else if (td->global) {
- *(td->global) = 0;
- td->global = NULL;
- }
-}
-
-TagData
-TagGetTag(XID tid)
-{
- TagData td;
-
- td = (TagData) LookupIDByType(tid, TagResType);
- return td;
-}
-
-static void
-LbxFlushTag(pointer value,
- XID tid,
- pointer cdata)
-{
- TagData td = (TagData)value;
- LbxProxyPtr proxy = (LbxProxyPtr)cdata;
- int i;
-
- if ((td->data_type == LbxTagTypeProperty) && td->global) {
- PropertyPtr pProp = (PropertyPtr)td->tdata;
- if ((pProp->tag_id == tid) && (pProp->owner_pid == proxy->pid)) {
- LbxFlushQTag(tid);
- pProp->size = 0;
- FreeResource(tid, 0);
- return;
- }
- }
- td->sent_to_proxy[proxy->pid >> 3] &= ~(1 << (proxy->pid & 7));
- for (i = 0; i < (MAX_NUM_PROXIES + 7) / 8; i++) {
- if (td->sent_to_proxy[i])
- return;
- }
- FreeResource(tid, 0);
-}
-
-/*
- * clear out markers for proxies
- */
-void
-LbxFlushTags(LbxProxyPtr proxy)
-{
- FindClientResourcesByType(NULL, TagResType, LbxFlushTag, (pointer)proxy);
-}
diff --git a/nx-X11/programs/Xserver/lbx/lbxtags.h b/nx-X11/programs/Xserver/lbx/lbxtags.h
deleted file mode 100644
index 8577bd93c..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxtags.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* $Xorg: lbxtags.h,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */
-/*
-
-Copyright 1996, 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 1993 Network Computing Devices, Inc.
- *
- * 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, and that the name Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE, DATA,
- * OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF
- * WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-/* $XFree86: xc/programs/Xserver/lbx/lbxtags.h,v 1.3 2001/01/17 22:37:00 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _LBXTAGS_H_
-#define _LBXTAGS_H_
-#include "lbxserve.h"
-
-#include "os.h"
-#include "opaque.h"
-#include "resource.h"
-#include <X11/X.h>
-#include <X11/Xproto.h>
-
-typedef struct _tagdata {
- XID tid;
- short data_type;
- unsigned char sent_to_proxy[(MAX_NUM_PROXIES + 7) / 8];
- int size;
- pointer tdata;
- XID *global;
-} TagDataRec;
-
-typedef struct _tagdata *TagData;
-
-extern void TagInit ( void );
-extern XID TagNewTag ( void );
-extern void TagClearProxy ( XID tid, int pid );
-extern void TagMarkProxy ( XID tid, int pid );
-extern Bool TagProxyMarked ( XID tid, int pid );
-extern XID TagSaveTag ( int dtype, int size, pointer data, XID *global );
-extern void TagDeleteTag ( XID tid );
-extern TagData TagGetTag ( XID tid );
-extern void LbxFlushTags ( LbxProxyPtr proxy );
-
-#endif /* _LBXTAGS_H_ */
diff --git a/nx-X11/programs/Xserver/lbx/lbxzerorep.c b/nx-X11/programs/Xserver/lbx/lbxzerorep.c
deleted file mode 100644
index e376908c0..000000000
--- a/nx-X11/programs/Xserver/lbx/lbxzerorep.c
+++ /dev/null
@@ -1,420 +0,0 @@
-/* $Xorg: lbxzerorep.c,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */
-
-/*
-
-Copyright 1996, 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.
-
-*/
-/* $XFree86: xc/programs/Xserver/lbx/lbxzerorep.c,v 1.3 2001/01/17 22:37:00 dawes Exp $ */
-
-/*
- * This module handles zeroing out unused pad bytes in core X replies.
- * This will hopefully improve both stream and delta compression,
- * since we are removing the random values in pad bytes.
- */
-
-#define NEED_REPLIES
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-
-void
-ZeroReplyPadBytes (char *buf,
- int reqType)
-{
- switch (reqType) {
- case X_GetWindowAttributes:
- {
- xGetWindowAttributesReply *reply = (xGetWindowAttributesReply *) buf;
- reply->pad = 0;
- break;
- }
- case X_GetGeometry:
- {
- xGetGeometryReply *reply = (xGetGeometryReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- break;
- }
- case X_QueryTree:
- {
- xQueryTreeReply *reply = (xQueryTreeReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- break;
- }
- case X_InternAtom:
- {
- xInternAtomReply *reply = (xInternAtomReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- break;
- }
- case X_GetAtomName:
- {
- xGetAtomNameReply *reply = (xGetAtomNameReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_GetProperty:
- {
- xGetPropertyReply *reply = (xGetPropertyReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- break;
- }
- case X_ListProperties:
- {
- xListPropertiesReply *reply = (xListPropertiesReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_GetSelectionOwner:
- {
- xGetSelectionOwnerReply *reply = (xGetSelectionOwnerReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- break;
- }
- case X_GrabKeyboard:
- case X_GrabPointer:
- {
- xGrabKeyboardReply *reply = (xGrabKeyboardReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- break;
- }
- case X_QueryPointer:
- {
- xQueryPointerReply *reply = (xQueryPointerReply *) buf;
- reply->pad1 = 0;
- reply->pad = 0;
- break;
- }
- case X_GetMotionEvents:
- {
- xGetMotionEventsReply *reply = (xGetMotionEventsReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- break;
- }
- case X_TranslateCoords:
- {
- xTranslateCoordsReply *reply = (xTranslateCoordsReply *) buf;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- break;
- }
- case X_GetInputFocus:
- {
- xGetInputFocusReply *reply = (xGetInputFocusReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- break;
- }
- case X_QueryKeymap:
- {
- xQueryKeymapReply *reply = (xQueryKeymapReply *) buf;
- reply->pad1 = 0;
- break;
- }
- case X_QueryFont:
- {
- xQueryFontReply *reply = (xQueryFontReply *) buf;
- reply->pad1 = 0;
- break;
- }
- case X_QueryTextExtents:
- {
- xQueryTextExtentsReply *reply = (xQueryTextExtentsReply *) buf;
- reply->pad = 0;
- break;
- }
- case X_ListFonts:
- {
- xListFontsReply *reply = (xListFontsReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_GetFontPath:
- {
- xGetFontPathReply *reply = (xGetFontPathReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_GetImage:
- {
- xGetImageReply *reply = (xGetImageReply *) buf;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_ListInstalledColormaps:
- {
- xListInstalledColormapsReply *reply =
- (xListInstalledColormapsReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_AllocColor:
- {
- xAllocColorReply *reply = (xAllocColorReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- break;
- }
- case X_AllocNamedColor:
- {
- xAllocNamedColorReply *reply = (xAllocNamedColorReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- break;
- }
- case X_AllocColorCells:
- {
- xAllocColorCellsReply *reply = (xAllocColorCellsReply *) buf;
- reply->pad1 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_AllocColorPlanes:
- {
- xAllocColorPlanesReply *reply = (xAllocColorPlanesReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- break;
- }
- case X_QueryColors:
- {
- xQueryColorsReply *reply = (xQueryColorsReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_LookupColor:
- {
- xLookupColorReply *reply = (xLookupColorReply *) buf;
- reply->pad1 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- break;
- }
- case X_QueryBestSize:
- {
- xQueryBestSizeReply *reply = (xQueryBestSizeReply *) buf;
- reply->pad1 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_QueryExtension:
- {
- xQueryExtensionReply *reply = (xQueryExtensionReply *) buf;
- reply->pad1 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_ListExtensions:
- {
- xListExtensionsReply *reply = (xListExtensionsReply *) buf;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_SetPointerMapping:
- case X_SetModifierMapping:
- {
- xSetMappingReply *reply = (xSetMappingReply *) buf;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_GetPointerMapping:
- {
- xGetPointerMappingReply *reply = (xGetPointerMappingReply *) buf;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_GetKeyboardMapping:
- {
- xGetKeyboardMappingReply *reply = (xGetKeyboardMappingReply *) buf;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- case X_GetModifierMapping:
- {
- xGetModifierMappingReply *reply = (xGetModifierMappingReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- break;
- }
- case X_GetKeyboardControl:
- {
- xGetKeyboardControlReply *reply = (xGetKeyboardControlReply *) buf;
- reply->pad = 0;
- break;
- }
- case X_GetPointerControl:
- {
- xGetPointerControlReply *reply = (xGetPointerControlReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- break;
- }
- case X_GetScreenSaver:
- {
- xGetScreenSaverReply *reply = (xGetScreenSaverReply *) buf;
- reply->pad1 = 0;
- reply->pad2 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- break;
- }
- case X_ListHosts:
- {
- xListHostsReply *reply = (xListHostsReply *) buf;
- reply->pad1 = 0;
- reply->pad3 = 0;
- reply->pad4 = 0;
- reply->pad5 = 0;
- reply->pad6 = 0;
- reply->pad7 = 0;
- break;
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/Imakefile b/nx-X11/programs/Xserver/mfb/Imakefile
deleted file mode 100644
index b0688ee51..000000000
--- a/nx-X11/programs/Xserver/mfb/Imakefile
+++ /dev/null
@@ -1,168 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:53:32 cpqbld Exp $
-
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/mfb/Imakefile,v 3.16 2002/05/31 16:12:18 dawes Exp $
-
-#if DoLoadableServer
-#if !BuildModuleInSubdir
-#define IHaveModules
-#elif !defined(IHaveModules)
-#define IHaveSubdirs
-SUBDIRS = module
-#endif
-#endif
-
-#include <Server.tmpl>
-
-#if defined(IHaveModules)
-XF86INCL = -I$(XF86COMSRC) -I$(XF86SRC)
-XFMODSRC = mfbmodule.c
-XFMODOBJ = mfbmodule.o
-#endif
-
-SRCS1 = mfbgc.c mfbwindow.c mfbfont.c \
- mfbfillrct.c mfbpntwin.c maskbits.c mfbpixmap.c \
- mfbimage.c mfbline.c mfbbres.c mfbhrzvert.c mfbbresd.c \
- mfbpushpxl.c mfbzerarc.c mfbfillarc.c \
- mfbfillsp.c mfbsetsp.c mfbscrinit.c mfbscrclse.c mfbclip.c \
- mfbbitblt.c mfbgetsp.c mfbpolypnt.c \
- mfbbltC.c mfbbltX.c mfbbltCI.c mfbbltO.c mfbbltG.c \
- mfbcmap.c mfbtileC.c mfbtileG.c mfbmisc.c mfbbstore.c $(XFMODSRC)
-
-SRCS = $(SRCS1) mfbseg.c mfbpgbwht.c mfbpgbblak.c mfbpgbinv.c mfbigbwht.c \
- mfbigbblak.c mfbpawhite.c mfbpablack.c mfbpainv.c mfbtewhite.c \
- mfbteblack.c mfbbltC.c mfbbltX.c mfbbltCI.c mfbbltO.c mfbbltG.c \
- mfbtileC.c mfbtileG.c mfbplywhite.c mfbplyblack.c mfbplyinv.c
-
-OBJS = mfbgc.o mfbwindow.o mfbfont.o \
- mfbfillrct.o mfbpntwin.o maskbits.o mfbpixmap.o \
- mfbimage.o mfbline.o mfbbres.o mfbhrzvert.o mfbbresd.o mfbseg.o \
- mfbpushpxl.o mfbzerarc.o mfbfillarc.o \
- mfbfillsp.o mfbsetsp.o mfbscrinit.o mfbscrclse.o mfbclip.o \
- mfbbitblt.o mfbgetsp.o mfbpolypnt.o \
- mfbbltC.o mfbbltX.o mfbbltCI.o mfbbltO.o mfbbltG.o \
- mfbpgbwht.o mfbpgbblak.o mfbpgbinv.o \
- mfbigbwht.o mfbigbblak.o mfbcmap.o \
- mfbpawhite.o mfbpablack.o mfbpainv.o mfbtileC.o mfbtileG.o \
- mfbtewhite.o mfbteblack.o mfbmisc.o mfbbstore.o \
- mfbplywhite.o mfbplyblack.o mfbplyinv.o $(XFMODOBJ)
-
-INCLUDES = -I$(SERVERSRC)/mfb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(FONTINCSRC) $(XF86INCL)
-LINTDEFS = -DMFBPOLYGLYPHBLT=mfbPolyGlyphBltWhite \
- -DMFBIMAGEGLYPHBLT=mfbImageGlyphBltWhite \
- -DEQWHOLEWORD=MFB_EQWHOLEWORD_WHITE -DOPEQ=MFB_OPEQ_WHITE
-
-LINTLIBS = $(SERVERSRC)/dix/llib-ldix.ln $(SERVERSRC)/os/llib-los.ln \
- $(SERVERSRC)/mi/llib-lmi.ln
-
-#ifdef IHaveModules
-ModuleObjectRule()
-LibraryModuleTarget(mfb,$(OBJS))
-#else
-NormalLibraryObjectRule()
-NormalLibraryTarget(mfb,$(OBJS))
-#endif
-
-LintLibraryTarget(mfb,$(SRCS1))
-NormalLintTarget($(LINTDEFS) $(SRCS1))
-
-ObjectFromSpecialSource(mfbseg,mfbline,-DPOLYSEGMENT)
-
-ObjectFromSpecialSource(mfbpgbwht,mfbplygblt,-DMFBPOLYGLYPHBLT=mfbPolyGlyphBltWhite -DOPEQ=MFB_OPEQ_WHITE)
-
-ObjectFromSpecialSource(mfbpgbblak,mfbplygblt,-DMFBPOLYGLYPHBLT=mfbPolyGlyphBltBlack -DOPEQ=MFB_OPEQ_BLACK)
-
-ObjectFromSpecialSource(mfbpgbinv,mfbplygblt,-DMFBPOLYGLYPHBLT=mfbPolyGlyphBltInvert -DOPEQ=MFB_OPEQ_INVERT)
-
-ObjectFromSpecialSource(mfbigbwht,mfbimggblt,-DMFBIMAGEGLYPHBLT=mfbImageGlyphBltWhite -DOPEQ=MFB_OPEQ_WHITE)
-
-ObjectFromSpecialSource(mfbigbblak,mfbimggblt,-DMFBIMAGEGLYPHBLT=mfbImageGlyphBltBlack -DOPEQ=MFB_OPEQ_BLACK)
-
-ObjectFromSpecialSource(mfbpawhite,mfbpntarea,-DMFBSOLIDFILLAREA=mfbSolidWhiteArea -DMFBSTIPPLEFILLAREA=mfbStippleWhiteArea -DOPEQ=MFB_OPEQ_WHITE -DEQWHOLEWORD=MFB_EQWHOLEWORD_WHITE)
-
-ObjectFromSpecialSource(mfbpablack,mfbpntarea,-DMFBSOLIDFILLAREA=mfbSolidBlackArea -DMFBSTIPPLEFILLAREA=mfbStippleBlackArea -DOPEQ=MFB_OPEQ_BLACK -DEQWHOLEWORD=MFB_EQWHOLEWORD_BLACK)
-
-ObjectFromSpecialSource(mfbpainv,mfbpntarea,-DMFBSOLIDFILLAREA=mfbSolidInvertArea -DMFBSTIPPLEFILLAREA=mfbStippleInvertArea -DOPEQ=MFB_OPEQ_INVERT -DEQWHOLEWORD=MFB_EQWHOLEWORD_INVERT)
-
-ObjectFromSpecialSource(mfbtewhite,mfbtegblt,-DMFBTEGLYPHBLT=mfbTEGlyphBltWhite -DOP=MFB_OP_WHITE -DCLIPTETEXT=mfbImageGlyphBltWhite)
-
-ObjectFromSpecialSource(mfbteblack,mfbtegblt,-DMFBTEGLYPHBLT=mfbTEGlyphBltBlack -DOP=MFB_OP_BLACK -DCLIPTETEXT=mfbImageGlyphBltBlack)
-
-ObjectFromSpecialSource(mfbplywhite,mfbply1rct,-DMFBFILLPOLY1RECT=mfbFillPolyWhite -DOPEQ=MFB_OPEQ_WHITE -DEQWHOLEWORD=MFB_EQWHOLEWORD_WHITE)
-
-ObjectFromSpecialSource(mfbplyblack,mfbply1rct,-DMFBFILLPOLY1RECT=mfbFillPolyBlack -DOPEQ=MFB_OPEQ_BLACK -DEQWHOLEWORD=MFB_EQWHOLEWORD_BLACK)
-
-ObjectFromSpecialSource(mfbplyinv,mfbply1rct,-DMFBFILLPOLY1RECT=mfbFillPolyInvert -DOPEQ=MFB_OPEQ_INVERT -DEQWHOLEWORD=MFB_EQWHOLEWORD_INVERT)
-
-ObjectFromSpecialSource(mfbbltC,mfbblt,-DMROP=Mcopy)
-
-ObjectFromSpecialSource(mfbbltX,mfbblt,-DMROP=Mxor)
-
-ObjectFromSpecialSource(mfbbltCI,mfbblt,-DMROP=McopyInverted)
-
-ObjectFromSpecialSource(mfbbltO,mfbblt,-DMROP=Mor)
-
-ObjectFromSpecialSource(mfbbltG,mfbblt,-DMROP=0)
-
-ObjectFromSpecialSource(mfbtileC,mfbtile,-DMROP=Mcopy)
-
-ObjectFromSpecialSource(mfbtileG,mfbtile,-DMROP=0)
-
-SpecialCObjectRule(mfbpixmap,$(ICONFIGFILES),$(_NOOP_))
-
-#ifdef IHaveModules
-InstallLibraryModule(mfb,$(MODULEDIR),.)
-#endif
-
-DependTarget()
-
-#ifdef IHaveSubdirs
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-#endif
-
-InstallDriverSDKLibraryModule(mfb,$(DRIVERSDKMODULEDIR),.)
-
-InstallDriverSDKNonExecFile(mfb.h,$(DRIVERSDKINCLUDEDIR))
-
-
-#ifdef LinkDirectory
-LinkSourceFile(maskbits.c,LinkDirectory)
-LinkSourceFile(mfbbitblt.c,LinkDirectory)
-LinkSourceFile(mfbblt.c,LinkDirectory)
-LinkSourceFile(mfbbres.c,LinkDirectory)
-LinkSourceFile(mfbbresd.c,LinkDirectory)
-LinkSourceFile(mfbbstore.c,LinkDirectory)
-LinkSourceFile(mfbclip.c,LinkDirectory)
-LinkSourceFile(mfbcmap.c,LinkDirectory)
-LinkSourceFile(mfbfillarc.c,LinkDirectory)
-LinkSourceFile(mfbfillrct.c,LinkDirectory)
-LinkSourceFile(mfbfillsp.c,LinkDirectory)
-LinkSourceFile(mfbfont.c,LinkDirectory)
-LinkSourceFile(mfbgc.c,LinkDirectory)
-LinkSourceFile(mfbgetsp.c,LinkDirectory)
-LinkSourceFile(mfbhrzvert.c,LinkDirectory)
-LinkSourceFile(mfbimage.c,LinkDirectory)
-LinkSourceFile(mfbimggblt.c,LinkDirectory)
-LinkSourceFile(mfbline.c,LinkDirectory)
-LinkSourceFile(mfbmisc.c,LinkDirectory)
-LinkSourceFile(mfbmodule.c,LinkDirectory)
-LinkSourceFile(mfbpixmap.c,LinkDirectory)
-LinkSourceFile(mfbply1rct.c,LinkDirectory)
-LinkSourceFile(mfbplygblt.c,LinkDirectory)
-LinkSourceFile(mfbpntarea.c,LinkDirectory)
-LinkSourceFile(mfbpntwin.c,LinkDirectory)
-LinkSourceFile(mfbpolypnt.c,LinkDirectory)
-LinkSourceFile(mfbpushpxl.c,LinkDirectory)
-LinkSourceFile(mfbscrclse.c,LinkDirectory)
-LinkSourceFile(mfbscrinit.c,LinkDirectory)
-LinkSourceFile(mfbsetsp.c,LinkDirectory)
-LinkSourceFile(mfbtegblt.c,LinkDirectory)
-LinkSourceFile(mfbtile.c,LinkDirectory)
-LinkSourceFile(mfbwindow.c,LinkDirectory)
-LinkSourceFile(mfbzerarc.c,LinkDirectory)
-#endif
-
diff --git a/nx-X11/programs/Xserver/mfb/fastblt.h b/nx-X11/programs/Xserver/mfb/fastblt.h
deleted file mode 100644
index 08846a41f..000000000
--- a/nx-X11/programs/Xserver/mfb/fastblt.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/* $Xorg: fastblt.h,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */
-/*
-
-Copyright 1989, 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.
-
-*/
-/* $XFree86: xc/programs/Xserver/mfb/fastblt.h,v 1.4 2001/01/17 22:37:01 dawes Exp $ */
-
-/*
- * Fast bitblt macros for certain hardware. If your machine has an addressing
- * mode of small constant + register, you'll probably want this magic specific
- * code. It's 25% faster for the R2000. I haven't studied the Sparc
- * instruction set, but I suspect it also has this addressing mode. Also,
- * unrolling the loop by 32 is possibly excessive for mfb. The number of times
- * the loop is actually looped through is pretty small.
- */
-
-/*
- * WARNING: These macros make *a lot* of assumptions about
- * the environment they are invoked in. Plenty of implicit
- * arguments, lots of side effects. Don't use them casually.
- */
-
-#define SwitchOdd(n) case n: BodyOdd(n)
-#define SwitchEven(n) case n: BodyEven(n)
-
-/* to allow mfb and cfb to share code... */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef BitRight
-#define BitRight(a,b) SCRRIGHT(a,b)
-#define BitLeft(a,b) SCRLEFT(a,b)
-#endif
-
-#ifdef LARGE_INSTRUCTION_CACHE
-#define UNROLL 8
-#define PackedLoop \
- switch (nl & (UNROLL-1)) { \
- SwitchOdd( 7) SwitchEven( 6) SwitchOdd( 5) SwitchEven( 4) \
- SwitchOdd( 3) SwitchEven( 2) SwitchOdd( 1) \
- } \
- while ((nl -= UNROLL) >= 0) { \
- LoopReset \
- BodyEven( 8) \
- BodyOdd( 7) BodyEven( 6) BodyOdd( 5) BodyEven( 4) \
- BodyOdd( 3) BodyEven( 2) BodyOdd( 1) \
- }
-#else
-#define UNROLL 4
-#define PackedLoop \
- switch (nl & (UNROLL-1)) { \
- SwitchOdd( 3) SwitchEven( 2) SwitchOdd( 1) \
- } \
- while ((nl -= UNROLL) >= 0) { \
- LoopReset \
- BodyEven( 4) \
- BodyOdd( 3) BodyEven( 2) BodyOdd( 1) \
- }
-#endif
-
-#define DuffL(counter,label,body) \
- switch (counter & 3) { \
- label: \
- body \
- case 3: \
- body \
- case 2: \
- body \
- case 1: \
- body \
- case 0: \
- if ((counter -= 4) >= 0) \
- goto label; \
- }
diff --git a/nx-X11/programs/Xserver/mfb/maskbits.c b/nx-X11/programs/Xserver/mfb/maskbits.c
deleted file mode 100644
index d2a90962d..000000000
--- a/nx-X11/programs/Xserver/mfb/maskbits.c
+++ /dev/null
@@ -1,1061 +0,0 @@
-/* $Xorg: maskbits.c,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/*
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-*/
-/* $XFree86: xc/programs/Xserver/mfb/maskbits.c,v 1.5 2001/01/17 22:37:01 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "maskbits.h"
-#include "servermd.h"
-
-/*
-these tables are used by several macros in the mfb code.
-
- the vax numbers everything left to right, so bit indices on the
-screen match bit indices in longwords. the pc-rt and Sun number
-bits on the screen the way they would be written on paper,
-(i.e. msb to the left), and so a bit index n on the screen is
-bit index PPW-n in a longword
-
- see also maskbits.h
-*/
-
-#if PPW != 32
- ERROR MFB must be compiled with PPW 32
-#endif
-
-#if (BITMAP_BIT_ORDER == MSBFirst)
-/* NOTE:
-the first element in starttab could be 0xffffffff. making it 0
-lets us deal with a full first word in the middle loop, rather
-than having to do the multiple reads and masks that we'd
-have to do if we thought it was partial.
-*/
-PixelType starttab[PPW+1] =
- {
- LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x7FFFFFFF ),
- LONG2CHARS( 0x3FFFFFFF ),
- LONG2CHARS( 0x1FFFFFFF ),
- LONG2CHARS( 0x0FFFFFFF ),
- LONG2CHARS( 0x07FFFFFF ),
- LONG2CHARS( 0x03FFFFFF ),
- LONG2CHARS( 0x01FFFFFF ),
- LONG2CHARS( 0x00FFFFFF ),
- LONG2CHARS( 0x007FFFFF ),
- LONG2CHARS( 0x003FFFFF ),
- LONG2CHARS( 0x001FFFFF ),
- LONG2CHARS( 0x000FFFFF ),
- LONG2CHARS( 0x0007FFFF ),
- LONG2CHARS( 0x0003FFFF ),
- LONG2CHARS( 0x0001FFFF ),
- LONG2CHARS( 0x0000FFFF ),
- LONG2CHARS( 0x00007FFF ),
- LONG2CHARS( 0x00003FFF ),
- LONG2CHARS( 0x00001FFF ),
- LONG2CHARS( 0x00000FFF ),
- LONG2CHARS( 0x000007FF ),
- LONG2CHARS( 0x000003FF ),
- LONG2CHARS( 0x000001FF ),
- LONG2CHARS( 0x000000FF ),
- LONG2CHARS( 0x0000007F ),
- LONG2CHARS( 0x0000003F ),
- LONG2CHARS( 0x0000001F ),
- LONG2CHARS( 0x0000000F ),
- LONG2CHARS( 0x00000007 ),
- LONG2CHARS( 0x00000003 ),
- LONG2CHARS( 0x00000001 ),
- LONG2CHARS( 0x00000000 )
- };
-
-PixelType endtab[PPW+1] =
- {
- LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x80000000 ),
- LONG2CHARS( 0xC0000000 ),
- LONG2CHARS( 0xE0000000 ),
- LONG2CHARS( 0xF0000000 ),
- LONG2CHARS( 0xF8000000 ),
- LONG2CHARS( 0xFC000000 ),
- LONG2CHARS( 0xFE000000 ),
- LONG2CHARS( 0xFF000000 ),
- LONG2CHARS( 0xFF800000 ),
- LONG2CHARS( 0xFFC00000 ),
- LONG2CHARS( 0xFFE00000 ),
- LONG2CHARS( 0xFFF00000 ),
- LONG2CHARS( 0xFFF80000 ),
- LONG2CHARS( 0xFFFC0000 ),
- LONG2CHARS( 0xFFFE0000 ),
- LONG2CHARS( 0xFFFF0000 ),
- LONG2CHARS( 0xFFFF8000 ),
- LONG2CHARS( 0xFFFFC000 ),
- LONG2CHARS( 0xFFFFE000 ),
- LONG2CHARS( 0xFFFFF000 ),
- LONG2CHARS( 0xFFFFF800 ),
- LONG2CHARS( 0xFFFFFC00 ),
- LONG2CHARS( 0xFFFFFE00 ),
- LONG2CHARS( 0xFFFFFF00 ),
- LONG2CHARS( 0xFFFFFF80 ),
- LONG2CHARS( 0xFFFFFFC0 ),
- LONG2CHARS( 0xFFFFFFE0 ),
- LONG2CHARS( 0xFFFFFFF0 ),
- LONG2CHARS( 0xFFFFFFF8 ),
- LONG2CHARS( 0xFFFFFFFC ),
- LONG2CHARS( 0xFFFFFFFE ),
- LONG2CHARS( 0xFFFFFFFF )
- };
-
-
-#ifdef NEED_OLD_MFB_MASKS
-/* a hack, for now, since the entries for 0 need to be all
- 1 bits, not all zeros.
- this means the code DOES NOT WORK for segments of length
- 0 (which is only a problem in the horizontal line code.)
-*/
-PixelType startpartial[33] =
- {
- LONG2CHARS( 0xFFFFFFFF ),
- LONG2CHARS( 0x7FFFFFFF ),
- LONG2CHARS( 0x3FFFFFFF ),
- LONG2CHARS( 0x1FFFFFFF ),
- LONG2CHARS( 0x0FFFFFFF ),
- LONG2CHARS( 0x07FFFFFF ),
- LONG2CHARS( 0x03FFFFFF ),
- LONG2CHARS( 0x01FFFFFF ),
- LONG2CHARS( 0x00FFFFFF ),
- LONG2CHARS( 0x007FFFFF ),
- LONG2CHARS( 0x003FFFFF ),
- LONG2CHARS( 0x001FFFFF ),
- LONG2CHARS( 0x000FFFFF ),
- LONG2CHARS( 0x0007FFFF ),
- LONG2CHARS( 0x0003FFFF ),
- LONG2CHARS( 0x0001FFFF ),
- LONG2CHARS( 0x0000FFFF ),
- LONG2CHARS( 0x00007FFF ),
- LONG2CHARS( 0x00003FFF ),
- LONG2CHARS( 0x00001FFF ),
- LONG2CHARS( 0x00000FFF ),
- LONG2CHARS( 0x000007FF ),
- LONG2CHARS( 0x000003FF ),
- LONG2CHARS( 0x000001FF ),
- LONG2CHARS( 0x000000FF ),
- LONG2CHARS( 0x0000007F ),
- LONG2CHARS( 0x0000003F ),
- LONG2CHARS( 0x0000001F ),
- LONG2CHARS( 0x0000000F ),
- LONG2CHARS( 0x00000007 ),
- LONG2CHARS( 0x00000003 ),
- LONG2CHARS( 0x00000001 ),
- LONG2CHARS( 0x00000000 )
- };
-
-PixelType endpartial[33] =
- {
- LONG2CHARS( 0xFFFFFFFF ),
- LONG2CHARS( 0x80000000 ),
- LONG2CHARS( 0xC0000000 ),
- LONG2CHARS( 0xE0000000 ),
- LONG2CHARS( 0xF0000000 ),
- LONG2CHARS( 0xF8000000 ),
- LONG2CHARS( 0xFC000000 ),
- LONG2CHARS( 0xFE000000 ),
- LONG2CHARS( 0xFF000000 ),
- LONG2CHARS( 0xFF800000 ),
- LONG2CHARS( 0xFFC00000 ),
- LONG2CHARS( 0xFFE00000 ),
- LONG2CHARS( 0xFFF00000 ),
- LONG2CHARS( 0xFFF80000 ),
- LONG2CHARS( 0xFFFC0000 ),
- LONG2CHARS( 0xFFFE0000 ),
- LONG2CHARS( 0xFFFF0000 ),
- LONG2CHARS( 0xFFFF8000 ),
- LONG2CHARS( 0xFFFFC000 ),
- LONG2CHARS( 0xFFFFE000 ),
- LONG2CHARS( 0xFFFFF000 ),
- LONG2CHARS( 0xFFFFF800 ),
- LONG2CHARS( 0xFFFFFC00 ),
- LONG2CHARS( 0xFFFFFE00 ),
- LONG2CHARS( 0xFFFFFF00 ),
- LONG2CHARS( 0xFFFFFF80 ),
- LONG2CHARS( 0xFFFFFFC0 ),
- LONG2CHARS( 0xFFFFFFE0 ),
- LONG2CHARS( 0xFFFFFFF0 ),
- LONG2CHARS( 0xFFFFFFF8 ),
- LONG2CHARS( 0xFFFFFFFC ),
- LONG2CHARS( 0xFFFFFFFE ),
- LONG2CHARS( 0xFFFFFFFF )
- };
-#endif /* NEED_OLD_MFB_MASKS */
-
-
-PixelType partmasks[PPW][PPW] = {
- {LONG2CHARS( 0xFFFFFFFF ), LONG2CHARS( 0x80000000 ), LONG2CHARS( 0xC0000000 ), LONG2CHARS( 0xE0000000 ),
- LONG2CHARS( 0xF0000000 ), LONG2CHARS( 0xF8000000 ), LONG2CHARS( 0xFC000000 ), LONG2CHARS( 0xFE000000 ),
- LONG2CHARS( 0xFF000000 ), LONG2CHARS( 0xFF800000 ), LONG2CHARS( 0xFFC00000 ), LONG2CHARS( 0xFFE00000 ),
- LONG2CHARS( 0xFFF00000 ), LONG2CHARS( 0xFFF80000 ), LONG2CHARS( 0xFFFC0000 ), LONG2CHARS( 0xFFFE0000 ),
- LONG2CHARS( 0xFFFF0000 ), LONG2CHARS( 0xFFFF8000 ), LONG2CHARS( 0xFFFFC000 ), LONG2CHARS( 0xFFFFE000 ),
- LONG2CHARS( 0xFFFFF000 ), LONG2CHARS( 0xFFFFF800 ), LONG2CHARS( 0xFFFFFC00 ), LONG2CHARS( 0xFFFFFE00 ),
- LONG2CHARS( 0xFFFFFF00 ), LONG2CHARS( 0xFFFFFF80 ), LONG2CHARS( 0xFFFFFFC0 ), LONG2CHARS( 0xFFFFFFE0 ),
- LONG2CHARS( 0xFFFFFFF0 ), LONG2CHARS( 0xFFFFFFF8 ), LONG2CHARS( 0xFFFFFFFC ), LONG2CHARS( 0xFFFFFFFE )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x40000000 ), LONG2CHARS( 0x60000000 ), LONG2CHARS( 0x70000000 ),
- LONG2CHARS( 0x78000000 ), LONG2CHARS( 0x7C000000 ), LONG2CHARS( 0x7E000000 ), LONG2CHARS( 0x7F000000 ),
- LONG2CHARS( 0x7F800000 ), LONG2CHARS( 0x7FC00000 ), LONG2CHARS( 0x7FE00000 ), LONG2CHARS( 0x7FF00000 ),
- LONG2CHARS( 0x7FF80000 ), LONG2CHARS( 0x7FFC0000 ), LONG2CHARS( 0x7FFE0000 ), LONG2CHARS( 0x7FFF0000 ),
- LONG2CHARS( 0x7FFF8000 ), LONG2CHARS( 0x7FFFC000 ), LONG2CHARS( 0x7FFFE000 ), LONG2CHARS( 0x7FFFF000 ),
- LONG2CHARS( 0x7FFFF800 ), LONG2CHARS( 0x7FFFFC00 ), LONG2CHARS( 0x7FFFFE00 ), LONG2CHARS( 0x7FFFFF00 ),
- LONG2CHARS( 0x7FFFFF80 ), LONG2CHARS( 0x7FFFFFC0 ), LONG2CHARS( 0x7FFFFFE0 ), LONG2CHARS( 0x7FFFFFF0 ),
- LONG2CHARS( 0x7FFFFFF8 ), LONG2CHARS( 0x7FFFFFFC ), LONG2CHARS( 0x7FFFFFFE ), LONG2CHARS( 0x7FFFFFFF )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x20000000 ), LONG2CHARS( 0x30000000 ), LONG2CHARS( 0x38000000 ),
- LONG2CHARS( 0x3C000000 ), LONG2CHARS( 0x3E000000 ), LONG2CHARS( 0x3F000000 ), LONG2CHARS( 0x3F800000 ),
- LONG2CHARS( 0x3FC00000 ), LONG2CHARS( 0x3FE00000 ), LONG2CHARS( 0x3FF00000 ), LONG2CHARS( 0x3FF80000 ),
- LONG2CHARS( 0x3FFC0000 ), LONG2CHARS( 0x3FFE0000 ), LONG2CHARS( 0x3FFF0000 ), LONG2CHARS( 0x3FFF8000 ),
- LONG2CHARS( 0x3FFFC000 ), LONG2CHARS( 0x3FFFE000 ), LONG2CHARS( 0x3FFFF000 ), LONG2CHARS( 0x3FFFF800 ),
- LONG2CHARS( 0x3FFFFC00 ), LONG2CHARS( 0x3FFFFE00 ), LONG2CHARS( 0x3FFFFF00 ), LONG2CHARS( 0x3FFFFF80 ),
- LONG2CHARS( 0x3FFFFFC0 ), LONG2CHARS( 0x3FFFFFE0 ), LONG2CHARS( 0x3FFFFFF0 ), LONG2CHARS( 0x3FFFFFF8 ),
- LONG2CHARS( 0x3FFFFFFC ), LONG2CHARS( 0x3FFFFFFE ), LONG2CHARS( 0x3FFFFFFF ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x10000000 ), LONG2CHARS( 0x18000000 ), LONG2CHARS( 0x1C000000 ),
- LONG2CHARS( 0x1E000000 ), LONG2CHARS( 0x1F000000 ), LONG2CHARS( 0x1F800000 ), LONG2CHARS( 0x1FC00000 ),
- LONG2CHARS( 0x1FE00000 ), LONG2CHARS( 0x1FF00000 ), LONG2CHARS( 0x1FF80000 ), LONG2CHARS( 0x1FFC0000 ),
- LONG2CHARS( 0x1FFE0000 ), LONG2CHARS( 0x1FFF0000 ), LONG2CHARS( 0x1FFF8000 ), LONG2CHARS( 0x1FFFC000 ),
- LONG2CHARS( 0x1FFFE000 ), LONG2CHARS( 0x1FFFF000 ), LONG2CHARS( 0x1FFFF800 ), LONG2CHARS( 0x1FFFFC00 ),
- LONG2CHARS( 0x1FFFFE00 ), LONG2CHARS( 0x1FFFFF00 ), LONG2CHARS( 0x1FFFFF80 ), LONG2CHARS( 0x1FFFFFC0 ),
- LONG2CHARS( 0x1FFFFFE0 ), LONG2CHARS( 0x1FFFFFF0 ), LONG2CHARS( 0x1FFFFFF8 ), LONG2CHARS( 0x1FFFFFFC ),
- LONG2CHARS( 0x1FFFFFFE ), LONG2CHARS( 0x1FFFFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x08000000 ), LONG2CHARS( 0x0C000000 ), LONG2CHARS( 0x0E000000 ),
- LONG2CHARS( 0x0F000000 ), LONG2CHARS( 0x0F800000 ), LONG2CHARS( 0x0FC00000 ), LONG2CHARS( 0x0FE00000 ),
- LONG2CHARS( 0x0FF00000 ), LONG2CHARS( 0x0FF80000 ), LONG2CHARS( 0x0FFC0000 ), LONG2CHARS( 0x0FFE0000 ),
- LONG2CHARS( 0x0FFF0000 ), LONG2CHARS( 0x0FFF8000 ), LONG2CHARS( 0x0FFFC000 ), LONG2CHARS( 0x0FFFE000 ),
- LONG2CHARS( 0x0FFFF000 ), LONG2CHARS( 0x0FFFF800 ), LONG2CHARS( 0x0FFFFC00 ), LONG2CHARS( 0x0FFFFE00 ),
- LONG2CHARS( 0x0FFFFF00 ), LONG2CHARS( 0x0FFFFF80 ), LONG2CHARS( 0x0FFFFFC0 ), LONG2CHARS( 0x0FFFFFE0 ),
- LONG2CHARS( 0x0FFFFFF0 ), LONG2CHARS( 0x0FFFFFF8 ), LONG2CHARS( 0x0FFFFFFC ), LONG2CHARS( 0x0FFFFFFE ),
- LONG2CHARS( 0x0FFFFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x04000000 ), LONG2CHARS( 0x06000000 ), LONG2CHARS( 0x07000000 ),
- LONG2CHARS( 0x07800000 ), LONG2CHARS( 0x07C00000 ), LONG2CHARS( 0x07E00000 ), LONG2CHARS( 0x07F00000 ),
- LONG2CHARS( 0x07F80000 ), LONG2CHARS( 0x07FC0000 ), LONG2CHARS( 0x07FE0000 ), LONG2CHARS( 0x07FF0000 ),
- LONG2CHARS( 0x07FF8000 ), LONG2CHARS( 0x07FFC000 ), LONG2CHARS( 0x07FFE000 ), LONG2CHARS( 0x07FFF000 ),
- LONG2CHARS( 0x07FFF800 ), LONG2CHARS( 0x07FFFC00 ), LONG2CHARS( 0x07FFFE00 ), LONG2CHARS( 0x07FFFF00 ),
- LONG2CHARS( 0x07FFFF80 ), LONG2CHARS( 0x07FFFFC0 ), LONG2CHARS( 0x07FFFFE0 ), LONG2CHARS( 0x07FFFFF0 ),
- LONG2CHARS( 0x07FFFFF8 ), LONG2CHARS( 0x07FFFFFC ), LONG2CHARS( 0x07FFFFFE ), LONG2CHARS( 0x07FFFFFF ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x02000000 ), LONG2CHARS( 0x03000000 ), LONG2CHARS( 0x03800000 ),
- LONG2CHARS( 0x03C00000 ), LONG2CHARS( 0x03E00000 ), LONG2CHARS( 0x03F00000 ), LONG2CHARS( 0x03F80000 ),
- LONG2CHARS( 0x03FC0000 ), LONG2CHARS( 0x03FE0000 ), LONG2CHARS( 0x03FF0000 ), LONG2CHARS( 0x03FF8000 ),
- LONG2CHARS( 0x03FFC000 ), LONG2CHARS( 0x03FFE000 ), LONG2CHARS( 0x03FFF000 ), LONG2CHARS( 0x03FFF800 ),
- LONG2CHARS( 0x03FFFC00 ), LONG2CHARS( 0x03FFFE00 ), LONG2CHARS( 0x03FFFF00 ), LONG2CHARS( 0x03FFFF80 ),
- LONG2CHARS( 0x03FFFFC0 ), LONG2CHARS( 0x03FFFFE0 ), LONG2CHARS( 0x03FFFFF0 ), LONG2CHARS( 0x03FFFFF8 ),
- LONG2CHARS( 0x03FFFFFC ), LONG2CHARS( 0x03FFFFFE ), LONG2CHARS( 0x03FFFFFF ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x01000000 ), LONG2CHARS( 0x01800000 ), LONG2CHARS( 0x01C00000 ),
- LONG2CHARS( 0x01E00000 ), LONG2CHARS( 0x01F00000 ), LONG2CHARS( 0x01F80000 ), LONG2CHARS( 0x01FC0000 ),
- LONG2CHARS( 0x01FE0000 ), LONG2CHARS( 0x01FF0000 ), LONG2CHARS( 0x01FF8000 ), LONG2CHARS( 0x01FFC000 ),
- LONG2CHARS( 0x01FFE000 ), LONG2CHARS( 0x01FFF000 ), LONG2CHARS( 0x01FFF800 ), LONG2CHARS( 0x01FFFC00 ),
- LONG2CHARS( 0x01FFFE00 ), LONG2CHARS( 0x01FFFF00 ), LONG2CHARS( 0x01FFFF80 ), LONG2CHARS( 0x01FFFFC0 ),
- LONG2CHARS( 0x01FFFFE0 ), LONG2CHARS( 0x01FFFFF0 ), LONG2CHARS( 0x01FFFFF8 ), LONG2CHARS( 0x01FFFFFC ),
- LONG2CHARS( 0x01FFFFFE ), LONG2CHARS( 0x01FFFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00800000 ), LONG2CHARS( 0x00C00000 ), LONG2CHARS( 0x00E00000 ),
- LONG2CHARS( 0x00F00000 ), LONG2CHARS( 0x00F80000 ), LONG2CHARS( 0x00FC0000 ), LONG2CHARS( 0x00FE0000 ),
- LONG2CHARS( 0x00FF0000 ), LONG2CHARS( 0x00FF8000 ), LONG2CHARS( 0x00FFC000 ), LONG2CHARS( 0x00FFE000 ),
- LONG2CHARS( 0x00FFF000 ), LONG2CHARS( 0x00FFF800 ), LONG2CHARS( 0x00FFFC00 ), LONG2CHARS( 0x00FFFE00 ),
- LONG2CHARS( 0x00FFFF00 ), LONG2CHARS( 0x00FFFF80 ), LONG2CHARS( 0x00FFFFC0 ), LONG2CHARS( 0x00FFFFE0 ),
- LONG2CHARS( 0x00FFFFF0 ), LONG2CHARS( 0x00FFFFF8 ), LONG2CHARS( 0x00FFFFFC ), LONG2CHARS( 0x00FFFFFE ),
- LONG2CHARS( 0x00FFFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00400000 ), LONG2CHARS( 0x00600000 ), LONG2CHARS( 0x00700000 ),
- LONG2CHARS( 0x00780000 ), LONG2CHARS( 0x007C0000 ), LONG2CHARS( 0x007E0000 ), LONG2CHARS( 0x007F0000 ),
- LONG2CHARS( 0x007F8000 ), LONG2CHARS( 0x007FC000 ), LONG2CHARS( 0x007FE000 ), LONG2CHARS( 0x007FF000 ),
- LONG2CHARS( 0x007FF800 ), LONG2CHARS( 0x007FFC00 ), LONG2CHARS( 0x007FFE00 ), LONG2CHARS( 0x007FFF00 ),
- LONG2CHARS( 0x007FFF80 ), LONG2CHARS( 0x007FFFC0 ), LONG2CHARS( 0x007FFFE0 ), LONG2CHARS( 0x007FFFF0 ),
- LONG2CHARS( 0x007FFFF8 ), LONG2CHARS( 0x007FFFFC ), LONG2CHARS( 0x007FFFFE ), LONG2CHARS( 0x007FFFFF ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00200000 ), LONG2CHARS( 0x00300000 ), LONG2CHARS( 0x00380000 ),
- LONG2CHARS( 0x003C0000 ), LONG2CHARS( 0x003E0000 ), LONG2CHARS( 0x003F0000 ), LONG2CHARS( 0x003F8000 ),
- LONG2CHARS( 0x003FC000 ), LONG2CHARS( 0x003FE000 ), LONG2CHARS( 0x003FF000 ), LONG2CHARS( 0x003FF800 ),
- LONG2CHARS( 0x003FFC00 ), LONG2CHARS( 0x003FFE00 ), LONG2CHARS( 0x003FFF00 ), LONG2CHARS( 0x003FFF80 ),
- LONG2CHARS( 0x003FFFC0 ), LONG2CHARS( 0x003FFFE0 ), LONG2CHARS( 0x003FFFF0 ), LONG2CHARS( 0x003FFFF8 ),
- LONG2CHARS( 0x003FFFFC ), LONG2CHARS( 0x003FFFFE ), LONG2CHARS( 0x003FFFFF ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00100000 ), LONG2CHARS( 0x00180000 ), LONG2CHARS( 0x001C0000 ),
- LONG2CHARS( 0x001E0000 ), LONG2CHARS( 0x001F0000 ), LONG2CHARS( 0x001F8000 ), LONG2CHARS( 0x001FC000 ),
- LONG2CHARS( 0x001FE000 ), LONG2CHARS( 0x001FF000 ), LONG2CHARS( 0x001FF800 ), LONG2CHARS( 0x001FFC00 ),
- LONG2CHARS( 0x001FFE00 ), LONG2CHARS( 0x001FFF00 ), LONG2CHARS( 0x001FFF80 ), LONG2CHARS( 0x001FFFC0 ),
- LONG2CHARS( 0x001FFFE0 ), LONG2CHARS( 0x001FFFF0 ), LONG2CHARS( 0x001FFFF8 ), LONG2CHARS( 0x001FFFFC ),
- LONG2CHARS( 0x001FFFFE ), LONG2CHARS( 0x001FFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00080000 ), LONG2CHARS( 0x000C0000 ), LONG2CHARS( 0x000E0000 ),
- LONG2CHARS( 0x000F0000 ), LONG2CHARS( 0x000F8000 ), LONG2CHARS( 0x000FC000 ), LONG2CHARS( 0x000FE000 ),
- LONG2CHARS( 0x000FF000 ), LONG2CHARS( 0x000FF800 ), LONG2CHARS( 0x000FFC00 ), LONG2CHARS( 0x000FFE00 ),
- LONG2CHARS( 0x000FFF00 ), LONG2CHARS( 0x000FFF80 ), LONG2CHARS( 0x000FFFC0 ), LONG2CHARS( 0x000FFFE0 ),
- LONG2CHARS( 0x000FFFF0 ), LONG2CHARS( 0x000FFFF8 ), LONG2CHARS( 0x000FFFFC ), LONG2CHARS( 0x000FFFFE ),
- LONG2CHARS( 0x000FFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00040000 ), LONG2CHARS( 0x00060000 ), LONG2CHARS( 0x00070000 ),
- LONG2CHARS( 0x00078000 ), LONG2CHARS( 0x0007C000 ), LONG2CHARS( 0x0007E000 ), LONG2CHARS( 0x0007F000 ),
- LONG2CHARS( 0x0007F800 ), LONG2CHARS( 0x0007FC00 ), LONG2CHARS( 0x0007FE00 ), LONG2CHARS( 0x0007FF00 ),
- LONG2CHARS( 0x0007FF80 ), LONG2CHARS( 0x0007FFC0 ), LONG2CHARS( 0x0007FFE0 ), LONG2CHARS( 0x0007FFF0 ),
- LONG2CHARS( 0x0007FFF8 ), LONG2CHARS( 0x0007FFFC ), LONG2CHARS( 0x0007FFFE ), LONG2CHARS( 0x0007FFFF ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00020000 ), LONG2CHARS( 0x00030000 ), LONG2CHARS( 0x00038000 ),
- LONG2CHARS( 0x0003C000 ), LONG2CHARS( 0x0003E000 ), LONG2CHARS( 0x0003F000 ), LONG2CHARS( 0x0003F800 ),
- LONG2CHARS( 0x0003FC00 ), LONG2CHARS( 0x0003FE00 ), LONG2CHARS( 0x0003FF00 ), LONG2CHARS( 0x0003FF80 ),
- LONG2CHARS( 0x0003FFC0 ), LONG2CHARS( 0x0003FFE0 ), LONG2CHARS( 0x0003FFF0 ), LONG2CHARS( 0x0003FFF8 ),
- LONG2CHARS( 0x0003FFFC ), LONG2CHARS( 0x0003FFFE ), LONG2CHARS( 0x0003FFFF ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00010000 ), LONG2CHARS( 0x00018000 ), LONG2CHARS( 0x0001C000 ),
- LONG2CHARS( 0x0001E000 ), LONG2CHARS( 0x0001F000 ), LONG2CHARS( 0x0001F800 ), LONG2CHARS( 0x0001FC00 ),
- LONG2CHARS( 0x0001FE00 ), LONG2CHARS( 0x0001FF00 ), LONG2CHARS( 0x0001FF80 ), LONG2CHARS( 0x0001FFC0 ),
- LONG2CHARS( 0x0001FFE0 ), LONG2CHARS( 0x0001FFF0 ), LONG2CHARS( 0x0001FFF8 ), LONG2CHARS( 0x0001FFFC ),
- LONG2CHARS( 0x0001FFFE ), LONG2CHARS( 0x0001FFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00008000 ), LONG2CHARS( 0x0000C000 ), LONG2CHARS( 0x0000E000 ),
- LONG2CHARS( 0x0000F000 ), LONG2CHARS( 0x0000F800 ), LONG2CHARS( 0x0000FC00 ), LONG2CHARS( 0x0000FE00 ),
- LONG2CHARS( 0x0000FF00 ), LONG2CHARS( 0x0000FF80 ), LONG2CHARS( 0x0000FFC0 ), LONG2CHARS( 0x0000FFE0 ),
- LONG2CHARS( 0x0000FFF0 ), LONG2CHARS( 0x0000FFF8 ), LONG2CHARS( 0x0000FFFC ), LONG2CHARS( 0x0000FFFE ),
- LONG2CHARS( 0x0000FFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00004000 ), LONG2CHARS( 0x00006000 ), LONG2CHARS( 0x00007000 ),
- LONG2CHARS( 0x00007800 ), LONG2CHARS( 0x00007C00 ), LONG2CHARS( 0x00007E00 ), LONG2CHARS( 0x00007F00 ),
- LONG2CHARS( 0x00007F80 ), LONG2CHARS( 0x00007FC0 ), LONG2CHARS( 0x00007FE0 ), LONG2CHARS( 0x00007FF0 ),
- LONG2CHARS( 0x00007FF8 ), LONG2CHARS( 0x00007FFC ), LONG2CHARS( 0x00007FFE ), LONG2CHARS( 0x00007FFF ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00002000 ), LONG2CHARS( 0x00003000 ), LONG2CHARS( 0x00003800 ),
- LONG2CHARS( 0x00003C00 ), LONG2CHARS( 0x00003E00 ), LONG2CHARS( 0x00003F00 ), LONG2CHARS( 0x00003F80 ),
- LONG2CHARS( 0x00003FC0 ), LONG2CHARS( 0x00003FE0 ), LONG2CHARS( 0x00003FF0 ), LONG2CHARS( 0x00003FF8 ),
- LONG2CHARS( 0x00003FFC ), LONG2CHARS( 0x00003FFE ), LONG2CHARS( 0x00003FFF ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00001000 ), LONG2CHARS( 0x00001800 ), LONG2CHARS( 0x00001C00 ),
- LONG2CHARS( 0x00001E00 ), LONG2CHARS( 0x00001F00 ), LONG2CHARS( 0x00001F80 ), LONG2CHARS( 0x00001FC0 ),
- LONG2CHARS( 0x00001FE0 ), LONG2CHARS( 0x00001FF0 ), LONG2CHARS( 0x00001FF8 ), LONG2CHARS( 0x00001FFC ),
- LONG2CHARS( 0x00001FFE ), LONG2CHARS( 0x00001FFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000800 ), LONG2CHARS( 0x00000C00 ), LONG2CHARS( 0x00000E00 ),
- LONG2CHARS( 0x00000F00 ), LONG2CHARS( 0x00000F80 ), LONG2CHARS( 0x00000FC0 ), LONG2CHARS( 0x00000FE0 ),
- LONG2CHARS( 0x00000FF0 ), LONG2CHARS( 0x00000FF8 ), LONG2CHARS( 0x00000FFC ), LONG2CHARS( 0x00000FFE ),
- LONG2CHARS( 0x00000FFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000400 ), LONG2CHARS( 0x00000600 ), LONG2CHARS( 0x00000700 ),
- LONG2CHARS( 0x00000780 ), LONG2CHARS( 0x000007C0 ), LONG2CHARS( 0x000007E0 ), LONG2CHARS( 0x000007F0 ),
- LONG2CHARS( 0x000007F8 ), LONG2CHARS( 0x000007FC ), LONG2CHARS( 0x000007FE ), LONG2CHARS( 0x000007FF ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000200 ), LONG2CHARS( 0x00000300 ), LONG2CHARS( 0x00000380 ),
- LONG2CHARS( 0x000003C0 ), LONG2CHARS( 0x000003E0 ), LONG2CHARS( 0x000003F0 ), LONG2CHARS( 0x000003F8 ),
- LONG2CHARS( 0x000003FC ), LONG2CHARS( 0x000003FE ), LONG2CHARS( 0x000003FF ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000100 ), LONG2CHARS( 0x00000180 ), LONG2CHARS( 0x000001C0 ),
- LONG2CHARS( 0x000001E0 ), LONG2CHARS( 0x000001F0 ), LONG2CHARS( 0x000001F8 ), LONG2CHARS( 0x000001FC ),
- LONG2CHARS( 0x000001FE ), LONG2CHARS( 0x000001FF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000080 ), LONG2CHARS( 0x000000C0 ), LONG2CHARS( 0x000000E0 ),
- LONG2CHARS( 0x000000F0 ), LONG2CHARS( 0x000000F8 ), LONG2CHARS( 0x000000FC ), LONG2CHARS( 0x000000FE ),
- LONG2CHARS( 0x000000FF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000040 ), LONG2CHARS( 0x00000060 ), LONG2CHARS( 0x00000070 ),
- LONG2CHARS( 0x00000078 ), LONG2CHARS( 0x0000007C ), LONG2CHARS( 0x0000007E ), LONG2CHARS( 0x0000007F ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000020 ), LONG2CHARS( 0x00000030 ), LONG2CHARS( 0x00000038 ),
- LONG2CHARS( 0x0000003C ), LONG2CHARS( 0x0000003E ), LONG2CHARS( 0x0000003F ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000010 ), LONG2CHARS( 0x00000018 ), LONG2CHARS( 0x0000001C ),
- LONG2CHARS( 0x0000001E ), LONG2CHARS( 0x0000001F ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000008 ), LONG2CHARS( 0x0000000C ), LONG2CHARS( 0x0000000E ),
- LONG2CHARS( 0x0000000F ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000004 ), LONG2CHARS( 0x00000006 ), LONG2CHARS( 0x00000007 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000002 ), LONG2CHARS( 0x00000003 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000001 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
-};
-
-#else /* LSBFirst */
-/* NOTE:
-the first element in starttab could be LONG2CHARS( 0xffffffff. making it 0
-lets us deal with a full first word in the middle loop ), rather
-than having to do the multiple reads and masks that we'd
-have to do if we thought it was partial.
-*/
-PixelType starttab[PPW+1] =
- {
- LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0xFFFFFFFE ),
- LONG2CHARS( 0xFFFFFFFC ),
- LONG2CHARS( 0xFFFFFFF8 ),
- LONG2CHARS( 0xFFFFFFF0 ),
- LONG2CHARS( 0xFFFFFFE0 ),
- LONG2CHARS( 0xFFFFFFC0 ),
- LONG2CHARS( 0xFFFFFF80 ),
- LONG2CHARS( 0xFFFFFF00 ),
- LONG2CHARS( 0xFFFFFE00 ),
- LONG2CHARS( 0xFFFFFC00 ),
- LONG2CHARS( 0xFFFFF800 ),
- LONG2CHARS( 0xFFFFF000 ),
- LONG2CHARS( 0xFFFFE000 ),
- LONG2CHARS( 0xFFFFC000 ),
- LONG2CHARS( 0xFFFF8000 ),
- LONG2CHARS( 0xFFFF0000 ),
- LONG2CHARS( 0xFFFE0000 ),
- LONG2CHARS( 0xFFFC0000 ),
- LONG2CHARS( 0xFFF80000 ),
- LONG2CHARS( 0xFFF00000 ),
- LONG2CHARS( 0xFFE00000 ),
- LONG2CHARS( 0xFFC00000 ),
- LONG2CHARS( 0xFF800000 ),
- LONG2CHARS( 0xFF000000 ),
- LONG2CHARS( 0xFE000000 ),
- LONG2CHARS( 0xFC000000 ),
- LONG2CHARS( 0xF8000000 ),
- LONG2CHARS( 0xF0000000 ),
- LONG2CHARS( 0xE0000000 ),
- LONG2CHARS( 0xC0000000 ),
- LONG2CHARS( 0x80000000 ),
- LONG2CHARS( 0x00000000 )
- };
-
-PixelType endtab[PPW+1] =
- {
- LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000001 ),
- LONG2CHARS( 0x00000003 ),
- LONG2CHARS( 0x00000007 ),
- LONG2CHARS( 0x0000000F ),
- LONG2CHARS( 0x0000001F ),
- LONG2CHARS( 0x0000003F ),
- LONG2CHARS( 0x0000007F ),
- LONG2CHARS( 0x000000FF ),
- LONG2CHARS( 0x000001FF ),
- LONG2CHARS( 0x000003FF ),
- LONG2CHARS( 0x000007FF ),
- LONG2CHARS( 0x00000FFF ),
- LONG2CHARS( 0x00001FFF ),
- LONG2CHARS( 0x00003FFF ),
- LONG2CHARS( 0x00007FFF ),
- LONG2CHARS( 0x0000FFFF ),
- LONG2CHARS( 0x0001FFFF ),
- LONG2CHARS( 0x0003FFFF ),
- LONG2CHARS( 0x0007FFFF ),
- LONG2CHARS( 0x000FFFFF ),
- LONG2CHARS( 0x001FFFFF ),
- LONG2CHARS( 0x003FFFFF ),
- LONG2CHARS( 0x007FFFFF ),
- LONG2CHARS( 0x00FFFFFF ),
- LONG2CHARS( 0x01FFFFFF ),
- LONG2CHARS( 0x03FFFFFF ),
- LONG2CHARS( 0x07FFFFFF ),
- LONG2CHARS( 0x0FFFFFFF ),
- LONG2CHARS( 0x1FFFFFFF ),
- LONG2CHARS( 0x3FFFFFFF ),
- LONG2CHARS( 0x7FFFFFFF ),
- LONG2CHARS( 0xFFFFFFFF )
- };
-
-
-#ifdef NEED_OLD_MFB_MASKS
-/* a hack ), for now, since the entries for 0 need to be all
- 1 bits ), not all zeros.
- this means the code DOES NOT WORK for segments of length
- 0 (which is only a problem in the horizontal line code.)
-*/
-PixelType startpartial[33] =
- {
- LONG2CHARS( 0xFFFFFFFF ),
- LONG2CHARS( 0xFFFFFFFE ),
- LONG2CHARS( 0xFFFFFFFC ),
- LONG2CHARS( 0xFFFFFFF8 ),
- LONG2CHARS( 0xFFFFFFF0 ),
- LONG2CHARS( 0xFFFFFFE0 ),
- LONG2CHARS( 0xFFFFFFC0 ),
- LONG2CHARS( 0xFFFFFF80 ),
- LONG2CHARS( 0xFFFFFF00 ),
- LONG2CHARS( 0xFFFFFE00 ),
- LONG2CHARS( 0xFFFFFC00 ),
- LONG2CHARS( 0xFFFFF800 ),
- LONG2CHARS( 0xFFFFF000 ),
- LONG2CHARS( 0xFFFFE000 ),
- LONG2CHARS( 0xFFFFC000 ),
- LONG2CHARS( 0xFFFF8000 ),
- LONG2CHARS( 0xFFFF0000 ),
- LONG2CHARS( 0xFFFE0000 ),
- LONG2CHARS( 0xFFFC0000 ),
- LONG2CHARS( 0xFFF80000 ),
- LONG2CHARS( 0xFFF00000 ),
- LONG2CHARS( 0xFFE00000 ),
- LONG2CHARS( 0xFFC00000 ),
- LONG2CHARS( 0xFF800000 ),
- LONG2CHARS( 0xFF000000 ),
- LONG2CHARS( 0xFE000000 ),
- LONG2CHARS( 0xFC000000 ),
- LONG2CHARS( 0xF8000000 ),
- LONG2CHARS( 0xF0000000 ),
- LONG2CHARS( 0xE0000000 ),
- LONG2CHARS( 0xC0000000 ),
- LONG2CHARS( 0x80000000 ),
- LONG2CHARS( 0x00000000 )
- };
-
-PixelType endpartial[33] =
- {
- LONG2CHARS( 0xFFFFFFFF ),
- LONG2CHARS( 0x00000001 ),
- LONG2CHARS( 0x00000003 ),
- LONG2CHARS( 0x00000007 ),
- LONG2CHARS( 0x0000000F ),
- LONG2CHARS( 0x0000001F ),
- LONG2CHARS( 0x0000003F ),
- LONG2CHARS( 0x0000007F ),
- LONG2CHARS( 0x000000FF ),
- LONG2CHARS( 0x000001FF ),
- LONG2CHARS( 0x000003FF ),
- LONG2CHARS( 0x000007FF ),
- LONG2CHARS( 0x00000FFF ),
- LONG2CHARS( 0x00001FFF ),
- LONG2CHARS( 0x00003FFF ),
- LONG2CHARS( 0x00007FFF ),
- LONG2CHARS( 0x0000FFFF ),
- LONG2CHARS( 0x0001FFFF ),
- LONG2CHARS( 0x0003FFFF ),
- LONG2CHARS( 0x0007FFFF ),
- LONG2CHARS( 0x000FFFFF ),
- LONG2CHARS( 0x001FFFFF ),
- LONG2CHARS( 0x003FFFFF ),
- LONG2CHARS( 0x007FFFFF ),
- LONG2CHARS( 0x00FFFFFF ),
- LONG2CHARS( 0x01FFFFFF ),
- LONG2CHARS( 0x03FFFFFF ),
- LONG2CHARS( 0x07FFFFFF ),
- LONG2CHARS( 0x0FFFFFFF ),
- LONG2CHARS( 0x1FFFFFFF ),
- LONG2CHARS( 0x3FFFFFFF ),
- LONG2CHARS( 0x7FFFFFFF ),
- LONG2CHARS( 0xFFFFFFFF )
- };
-#endif
-
-
-PixelType partmasks[PPW][PPW] = {
- {LONG2CHARS( 0xFFFFFFFF ), LONG2CHARS( 0x00000001 ), LONG2CHARS( 0x00000003 ), LONG2CHARS( 0x00000007 ),
- LONG2CHARS( 0x0000000F ), LONG2CHARS( 0x0000001F ), LONG2CHARS( 0x0000003F ), LONG2CHARS( 0x0000007F ),
- LONG2CHARS( 0x000000FF ), LONG2CHARS( 0x000001FF ), LONG2CHARS( 0x000003FF ), LONG2CHARS( 0x000007FF ),
- LONG2CHARS( 0x00000FFF ), LONG2CHARS( 0x00001FFF ), LONG2CHARS( 0x00003FFF ), LONG2CHARS( 0x00007FFF ),
- LONG2CHARS( 0x0000FFFF ), LONG2CHARS( 0x0001FFFF ), LONG2CHARS( 0x0003FFFF ), LONG2CHARS( 0x0007FFFF ),
- LONG2CHARS( 0x000FFFFF ), LONG2CHARS( 0x001FFFFF ), LONG2CHARS( 0x003FFFFF ), LONG2CHARS( 0x007FFFFF ),
- LONG2CHARS( 0x00FFFFFF ), LONG2CHARS( 0x01FFFFFF ), LONG2CHARS( 0x03FFFFFF ), LONG2CHARS( 0x07FFFFFF ),
- LONG2CHARS( 0x0FFFFFFF ), LONG2CHARS( 0x1FFFFFFF ), LONG2CHARS( 0x3FFFFFFF ), LONG2CHARS( 0x7FFFFFFF )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000002 ), LONG2CHARS( 0x00000006 ), LONG2CHARS( 0x0000000E ),
- LONG2CHARS( 0x0000001E ), LONG2CHARS( 0x0000003E ), LONG2CHARS( 0x0000007E ), LONG2CHARS( 0x000000FE ),
- LONG2CHARS( 0x000001FE ), LONG2CHARS( 0x000003FE ), LONG2CHARS( 0x000007FE ), LONG2CHARS( 0x00000FFE ),
- LONG2CHARS( 0x00001FFE ), LONG2CHARS( 0x00003FFE ), LONG2CHARS( 0x00007FFE ), LONG2CHARS( 0x0000FFFE ),
- LONG2CHARS( 0x0001FFFE ), LONG2CHARS( 0x0003FFFE ), LONG2CHARS( 0x0007FFFE ), LONG2CHARS( 0x000FFFFE ),
- LONG2CHARS( 0x001FFFFE ), LONG2CHARS( 0x003FFFFE ), LONG2CHARS( 0x007FFFFE ), LONG2CHARS( 0x00FFFFFE ),
- LONG2CHARS( 0x01FFFFFE ), LONG2CHARS( 0x03FFFFFE ), LONG2CHARS( 0x07FFFFFE ), LONG2CHARS( 0x0FFFFFFE ),
- LONG2CHARS( 0x1FFFFFFE ), LONG2CHARS( 0x3FFFFFFE ), LONG2CHARS( 0x7FFFFFFE ), LONG2CHARS( 0xFFFFFFFE )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000004 ), LONG2CHARS( 0x0000000C ), LONG2CHARS( 0x0000001C ),
- LONG2CHARS( 0x0000003C ), LONG2CHARS( 0x0000007C ), LONG2CHARS( 0x000000FC ), LONG2CHARS( 0x000001FC ),
- LONG2CHARS( 0x000003FC ), LONG2CHARS( 0x000007FC ), LONG2CHARS( 0x00000FFC ), LONG2CHARS( 0x00001FFC ),
- LONG2CHARS( 0x00003FFC ), LONG2CHARS( 0x00007FFC ), LONG2CHARS( 0x0000FFFC ), LONG2CHARS( 0x0001FFFC ),
- LONG2CHARS( 0x0003FFFC ), LONG2CHARS( 0x0007FFFC ), LONG2CHARS( 0x000FFFFC ), LONG2CHARS( 0x001FFFFC ),
- LONG2CHARS( 0x003FFFFC ), LONG2CHARS( 0x007FFFFC ), LONG2CHARS( 0x00FFFFFC ), LONG2CHARS( 0x01FFFFFC ),
- LONG2CHARS( 0x03FFFFFC ), LONG2CHARS( 0x07FFFFFC ), LONG2CHARS( 0x0FFFFFFC ), LONG2CHARS( 0x1FFFFFFC ),
- LONG2CHARS( 0x3FFFFFFC ), LONG2CHARS( 0x7FFFFFFC ), LONG2CHARS( 0xFFFFFFFC ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000008 ), LONG2CHARS( 0x00000018 ), LONG2CHARS( 0x00000038 ),
- LONG2CHARS( 0x00000078 ), LONG2CHARS( 0x000000F8 ), LONG2CHARS( 0x000001F8 ), LONG2CHARS( 0x000003F8 ),
- LONG2CHARS( 0x000007F8 ), LONG2CHARS( 0x00000FF8 ), LONG2CHARS( 0x00001FF8 ), LONG2CHARS( 0x00003FF8 ),
- LONG2CHARS( 0X00007FF8 ), LONG2CHARS( 0x0000FFF8 ), LONG2CHARS( 0x0001FFF8 ), LONG2CHARS( 0x0003FFF8 ),
- LONG2CHARS( 0X0007FFF8 ), LONG2CHARS( 0x000FFFF8 ), LONG2CHARS( 0x001FFFF8 ), LONG2CHARS( 0x003FFFF8 ),
- LONG2CHARS( 0X007FFFF8 ), LONG2CHARS( 0x00FFFFF8 ), LONG2CHARS( 0x01FFFFF8 ), LONG2CHARS( 0x03FFFFF8 ),
- LONG2CHARS( 0X07FFFFF8 ), LONG2CHARS( 0x0FFFFFF8 ), LONG2CHARS( 0x1FFFFFF8 ), LONG2CHARS( 0x3FFFFFF8 ),
- LONG2CHARS( 0X7FFFFFF8 ), LONG2CHARS( 0xFFFFFFF8 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000010 ), LONG2CHARS( 0x00000030 ), LONG2CHARS( 0x00000070 ),
- LONG2CHARS( 0X000000F0 ), LONG2CHARS( 0x000001F0 ), LONG2CHARS( 0x000003F0 ), LONG2CHARS( 0x000007F0 ),
- LONG2CHARS( 0X00000FF0 ), LONG2CHARS( 0x00001FF0 ), LONG2CHARS( 0x00003FF0 ), LONG2CHARS( 0x00007FF0 ),
- LONG2CHARS( 0X0000FFF0 ), LONG2CHARS( 0x0001FFF0 ), LONG2CHARS( 0x0003FFF0 ), LONG2CHARS( 0x0007FFF0 ),
- LONG2CHARS( 0X000FFFF0 ), LONG2CHARS( 0x001FFFF0 ), LONG2CHARS( 0x003FFFF0 ), LONG2CHARS( 0x007FFFF0 ),
- LONG2CHARS( 0X00FFFFF0 ), LONG2CHARS( 0x01FFFFF0 ), LONG2CHARS( 0x03FFFFF0 ), LONG2CHARS( 0x07FFFFF0 ),
- LONG2CHARS( 0X0FFFFFF0 ), LONG2CHARS( 0x1FFFFFF0 ), LONG2CHARS( 0x3FFFFFF0 ), LONG2CHARS( 0x7FFFFFF0 ),
- LONG2CHARS( 0XFFFFFFF0 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000020 ), LONG2CHARS( 0x00000060 ), LONG2CHARS( 0x000000E0 ),
- LONG2CHARS( 0X000001E0 ), LONG2CHARS( 0x000003E0 ), LONG2CHARS( 0x000007E0 ), LONG2CHARS( 0x00000FE0 ),
- LONG2CHARS( 0X00001FE0 ), LONG2CHARS( 0x00003FE0 ), LONG2CHARS( 0x00007FE0 ), LONG2CHARS( 0x0000FFE0 ),
- LONG2CHARS( 0X0001FFE0 ), LONG2CHARS( 0x0003FFE0 ), LONG2CHARS( 0x0007FFE0 ), LONG2CHARS( 0x000FFFE0 ),
- LONG2CHARS( 0X001FFFE0 ), LONG2CHARS( 0x003FFFE0 ), LONG2CHARS( 0x007FFFE0 ), LONG2CHARS( 0x00FFFFE0 ),
- LONG2CHARS( 0X01FFFFE0 ), LONG2CHARS( 0x03FFFFE0 ), LONG2CHARS( 0x07FFFFE0 ), LONG2CHARS( 0x0FFFFFE0 ),
- LONG2CHARS( 0X1FFFFFE0 ), LONG2CHARS( 0x3FFFFFE0 ), LONG2CHARS( 0x7FFFFFE0 ), LONG2CHARS( 0xFFFFFFE0 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000040 ), LONG2CHARS( 0x000000C0 ), LONG2CHARS( 0x000001C0 ),
- LONG2CHARS( 0X000003C0 ), LONG2CHARS( 0x000007C0 ), LONG2CHARS( 0x00000FC0 ), LONG2CHARS( 0x00001FC0 ),
- LONG2CHARS( 0X00003FC0 ), LONG2CHARS( 0x00007FC0 ), LONG2CHARS( 0x0000FFC0 ), LONG2CHARS( 0x0001FFC0 ),
- LONG2CHARS( 0X0003FFC0 ), LONG2CHARS( 0x0007FFC0 ), LONG2CHARS( 0x000FFFC0 ), LONG2CHARS( 0x001FFFC0 ),
- LONG2CHARS( 0X003FFFC0 ), LONG2CHARS( 0x007FFFC0 ), LONG2CHARS( 0x00FFFFC0 ), LONG2CHARS( 0x01FFFFC0 ),
- LONG2CHARS( 0X03FFFFC0 ), LONG2CHARS( 0x07FFFFC0 ), LONG2CHARS( 0x0FFFFFC0 ), LONG2CHARS( 0x1FFFFFC0 ),
- LONG2CHARS( 0X3FFFFFC0 ), LONG2CHARS( 0x7FFFFFC0 ), LONG2CHARS( 0xFFFFFFC0 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000080 ), LONG2CHARS( 0x00000180 ), LONG2CHARS( 0x00000380 ),
- LONG2CHARS( 0X00000780 ), LONG2CHARS( 0x00000F80 ), LONG2CHARS( 0x00001F80 ), LONG2CHARS( 0x00003F80 ),
- LONG2CHARS( 0X00007F80 ), LONG2CHARS( 0x0000FF80 ), LONG2CHARS( 0x0001FF80 ), LONG2CHARS( 0x0003FF80 ),
- LONG2CHARS( 0X0007FF80 ), LONG2CHARS( 0x000FFF80 ), LONG2CHARS( 0x001FFF80 ), LONG2CHARS( 0x003FFF80 ),
- LONG2CHARS( 0X007FFF80 ), LONG2CHARS( 0x00FFFF80 ), LONG2CHARS( 0x01FFFF80 ), LONG2CHARS( 0x03FFFF80 ),
- LONG2CHARS( 0X07FFFF80 ), LONG2CHARS( 0x0FFFFF80 ), LONG2CHARS( 0x1FFFFF80 ), LONG2CHARS( 0x3FFFFF80 ),
- LONG2CHARS( 0X7FFFFF80 ), LONG2CHARS( 0xFFFFFF80 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000100 ), LONG2CHARS( 0x00000300 ), LONG2CHARS( 0x00000700 ),
- LONG2CHARS( 0X00000F00 ), LONG2CHARS( 0x00001F00 ), LONG2CHARS( 0x00003F00 ), LONG2CHARS( 0x00007F00 ),
- LONG2CHARS( 0X0000FF00 ), LONG2CHARS( 0x0001FF00 ), LONG2CHARS( 0x0003FF00 ), LONG2CHARS( 0x0007FF00 ),
- LONG2CHARS( 0X000FFF00 ), LONG2CHARS( 0x001FFF00 ), LONG2CHARS( 0x003FFF00 ), LONG2CHARS( 0x007FFF00 ),
- LONG2CHARS( 0X00FFFF00 ), LONG2CHARS( 0x01FFFF00 ), LONG2CHARS( 0x03FFFF00 ), LONG2CHARS( 0x07FFFF00 ),
- LONG2CHARS( 0X0FFFFF00 ), LONG2CHARS( 0x1FFFFF00 ), LONG2CHARS( 0x3FFFFF00 ), LONG2CHARS( 0x7FFFFF00 ),
- LONG2CHARS( 0XFFFFFF00 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000200 ), LONG2CHARS( 0x00000600 ), LONG2CHARS( 0x00000E00 ),
- LONG2CHARS( 0X00001E00 ), LONG2CHARS( 0x00003E00 ), LONG2CHARS( 0x00007E00 ), LONG2CHARS( 0x0000FE00 ),
- LONG2CHARS( 0X0001FE00 ), LONG2CHARS( 0x0003FE00 ), LONG2CHARS( 0x0007FE00 ), LONG2CHARS( 0x000FFE00 ),
- LONG2CHARS( 0X001FFE00 ), LONG2CHARS( 0x003FFE00 ), LONG2CHARS( 0x007FFE00 ), LONG2CHARS( 0x00FFFE00 ),
- LONG2CHARS( 0X01FFFE00 ), LONG2CHARS( 0x03FFFE00 ), LONG2CHARS( 0x07FFFE00 ), LONG2CHARS( 0x0FFFFE00 ),
- LONG2CHARS( 0X1FFFFE00 ), LONG2CHARS( 0x3FFFFE00 ), LONG2CHARS( 0x7FFFFE00 ), LONG2CHARS( 0xFFFFFE00 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000400 ), LONG2CHARS( 0x00000C00 ), LONG2CHARS( 0x00001C00 ),
- LONG2CHARS( 0X00003C00 ), LONG2CHARS( 0x00007C00 ), LONG2CHARS( 0x0000FC00 ), LONG2CHARS( 0x0001FC00 ),
- LONG2CHARS( 0X0003FC00 ), LONG2CHARS( 0x0007FC00 ), LONG2CHARS( 0x000FFC00 ), LONG2CHARS( 0x001FFC00 ),
- LONG2CHARS( 0X003FFC00 ), LONG2CHARS( 0x007FFC00 ), LONG2CHARS( 0x00FFFC00 ), LONG2CHARS( 0x01FFFC00 ),
- LONG2CHARS( 0X03FFFC00 ), LONG2CHARS( 0x07FFFC00 ), LONG2CHARS( 0x0FFFFC00 ), LONG2CHARS( 0x1FFFFC00 ),
- LONG2CHARS( 0X3FFFFC00 ), LONG2CHARS( 0x7FFFFC00 ), LONG2CHARS( 0xFFFFFC00 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000800 ), LONG2CHARS( 0x00001800 ), LONG2CHARS( 0x00003800 ),
- LONG2CHARS( 0X00007800 ), LONG2CHARS( 0x0000F800 ), LONG2CHARS( 0x0001F800 ), LONG2CHARS( 0x0003F800 ),
- LONG2CHARS( 0X0007F800 ), LONG2CHARS( 0x000FF800 ), LONG2CHARS( 0x001FF800 ), LONG2CHARS( 0x003FF800 ),
- LONG2CHARS( 0X007FF800 ), LONG2CHARS( 0x00FFF800 ), LONG2CHARS( 0x01FFF800 ), LONG2CHARS( 0x03FFF800 ),
- LONG2CHARS( 0X07FFF800 ), LONG2CHARS( 0x0FFFF800 ), LONG2CHARS( 0x1FFFF800 ), LONG2CHARS( 0x3FFFF800 ),
- LONG2CHARS( 0X7FFFF800 ), LONG2CHARS( 0xFFFFF800 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00001000 ), LONG2CHARS( 0x00003000 ), LONG2CHARS( 0x00007000 ),
- LONG2CHARS( 0X0000F000 ), LONG2CHARS( 0x0001F000 ), LONG2CHARS( 0x0003F000 ), LONG2CHARS( 0x0007F000 ),
- LONG2CHARS( 0X000FF000 ), LONG2CHARS( 0x001FF000 ), LONG2CHARS( 0x003FF000 ), LONG2CHARS( 0x007FF000 ),
- LONG2CHARS( 0X00FFF000 ), LONG2CHARS( 0x01FFF000 ), LONG2CHARS( 0x03FFF000 ), LONG2CHARS( 0x07FFF000 ),
- LONG2CHARS( 0X0FFFF000 ), LONG2CHARS( 0x1FFFF000 ), LONG2CHARS( 0x3FFFF000 ), LONG2CHARS( 0x7FFFF000 ),
- LONG2CHARS( 0XFFFFF000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00002000 ), LONG2CHARS( 0x00006000 ), LONG2CHARS( 0x0000E000 ),
- LONG2CHARS( 0X0001E000 ), LONG2CHARS( 0x0003E000 ), LONG2CHARS( 0x0007E000 ), LONG2CHARS( 0x000FE000 ),
- LONG2CHARS( 0X001FE000 ), LONG2CHARS( 0x003FE000 ), LONG2CHARS( 0x007FE000 ), LONG2CHARS( 0x00FFE000 ),
- LONG2CHARS( 0X01FFE000 ), LONG2CHARS( 0x03FFE000 ), LONG2CHARS( 0x07FFE000 ), LONG2CHARS( 0x0FFFE000 ),
- LONG2CHARS( 0X1FFFE000 ), LONG2CHARS( 0x3FFFE000 ), LONG2CHARS( 0x7FFFE000 ), LONG2CHARS( 0xFFFFE000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00004000 ), LONG2CHARS( 0x0000C000 ), LONG2CHARS( 0x0001C000 ),
- LONG2CHARS( 0X0003C000 ), LONG2CHARS( 0x0007C000 ), LONG2CHARS( 0x000FC000 ), LONG2CHARS( 0x001FC000 ),
- LONG2CHARS( 0X003FC000 ), LONG2CHARS( 0x007FC000 ), LONG2CHARS( 0x00FFC000 ), LONG2CHARS( 0x01FFC000 ),
- LONG2CHARS( 0X03FFC000 ), LONG2CHARS( 0x07FFC000 ), LONG2CHARS( 0x0FFFC000 ), LONG2CHARS( 0x1FFFC000 ),
- LONG2CHARS( 0X3FFFC000 ), LONG2CHARS( 0x7FFFC000 ), LONG2CHARS( 0xFFFFC000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00008000 ), LONG2CHARS( 0x00018000 ), LONG2CHARS( 0x00038000 ),
- LONG2CHARS( 0X00078000 ), LONG2CHARS( 0x000F8000 ), LONG2CHARS( 0x001F8000 ), LONG2CHARS( 0x003F8000 ),
- LONG2CHARS( 0X007F8000 ), LONG2CHARS( 0x00FF8000 ), LONG2CHARS( 0x01FF8000 ), LONG2CHARS( 0x03FF8000 ),
- LONG2CHARS( 0X07FF8000 ), LONG2CHARS( 0x0FFF8000 ), LONG2CHARS( 0x1FFF8000 ), LONG2CHARS( 0x3FFF8000 ),
- LONG2CHARS( 0X7FFF8000 ), LONG2CHARS( 0xFFFF8000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00010000 ), LONG2CHARS( 0x00030000 ), LONG2CHARS( 0x00070000 ),
- LONG2CHARS( 0X000F0000 ), LONG2CHARS( 0x001F0000 ), LONG2CHARS( 0x003F0000 ), LONG2CHARS( 0x007F0000 ),
- LONG2CHARS( 0X00FF0000 ), LONG2CHARS( 0x01FF0000 ), LONG2CHARS( 0x03FF0000 ), LONG2CHARS( 0x07FF0000 ),
- LONG2CHARS( 0X0FFF0000 ), LONG2CHARS( 0x1FFF0000 ), LONG2CHARS( 0x3FFF0000 ), LONG2CHARS( 0x7FFF0000 ),
- LONG2CHARS( 0XFFFF0000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00020000 ), LONG2CHARS( 0x00060000 ), LONG2CHARS( 0x000E0000 ),
- LONG2CHARS( 0X001E0000 ), LONG2CHARS( 0x003E0000 ), LONG2CHARS( 0x007E0000 ), LONG2CHARS( 0x00FE0000 ),
- LONG2CHARS( 0X01FE0000 ), LONG2CHARS( 0x03FE0000 ), LONG2CHARS( 0x07FE0000 ), LONG2CHARS( 0x0FFE0000 ),
- LONG2CHARS( 0X1FFE0000 ), LONG2CHARS( 0x3FFE0000 ), LONG2CHARS( 0x7FFE0000 ), LONG2CHARS( 0xFFFE0000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00040000 ), LONG2CHARS( 0x000C0000 ), LONG2CHARS( 0x001C0000 ),
- LONG2CHARS( 0X003C0000 ), LONG2CHARS( 0x007C0000 ), LONG2CHARS( 0x00FC0000 ), LONG2CHARS( 0x01FC0000 ),
- LONG2CHARS( 0X03FC0000 ), LONG2CHARS( 0x07FC0000 ), LONG2CHARS( 0x0FFC0000 ), LONG2CHARS( 0x1FFC0000 ),
- LONG2CHARS( 0X3FFC0000 ), LONG2CHARS( 0x7FFC0000 ), LONG2CHARS( 0xFFFC0000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00080000 ), LONG2CHARS( 0x00180000 ), LONG2CHARS( 0x00380000 ),
- LONG2CHARS( 0X00780000 ), LONG2CHARS( 0x00F80000 ), LONG2CHARS( 0x01F80000 ), LONG2CHARS( 0x03F80000 ),
- LONG2CHARS( 0X07F80000 ), LONG2CHARS( 0x0FF80000 ), LONG2CHARS( 0x1FF80000 ), LONG2CHARS( 0x3FF80000 ),
- LONG2CHARS( 0X7FF80000 ), LONG2CHARS( 0xFFF80000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00100000 ), LONG2CHARS( 0x00300000 ), LONG2CHARS( 0x00700000 ),
- LONG2CHARS( 0X00F00000 ), LONG2CHARS( 0x01F00000 ), LONG2CHARS( 0x03F00000 ), LONG2CHARS( 0x07F00000 ),
- LONG2CHARS( 0X0FF00000 ), LONG2CHARS( 0x1FF00000 ), LONG2CHARS( 0x3FF00000 ), LONG2CHARS( 0x7FF00000 ),
- LONG2CHARS( 0XFFF00000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00200000 ), LONG2CHARS( 0x00600000 ), LONG2CHARS( 0x00E00000 ),
- LONG2CHARS( 0X01E00000 ), LONG2CHARS( 0x03E00000 ), LONG2CHARS( 0x07E00000 ), LONG2CHARS( 0x0FE00000 ),
- LONG2CHARS( 0X1FE00000 ), LONG2CHARS( 0x3FE00000 ), LONG2CHARS( 0x7FE00000 ), LONG2CHARS( 0xFFE00000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00400000 ), LONG2CHARS( 0x00C00000 ), LONG2CHARS( 0x01C00000 ),
- LONG2CHARS( 0X03C00000 ), LONG2CHARS( 0x07C00000 ), LONG2CHARS( 0x0FC00000 ), LONG2CHARS( 0x1FC00000 ),
- LONG2CHARS( 0X3FC00000 ), LONG2CHARS( 0x7FC00000 ), LONG2CHARS( 0xFFC00000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00800000 ), LONG2CHARS( 0x01800000 ), LONG2CHARS( 0x03800000 ),
- LONG2CHARS( 0X07800000 ), LONG2CHARS( 0x0F800000 ), LONG2CHARS( 0x1F800000 ), LONG2CHARS( 0x3F800000 ),
- LONG2CHARS( 0X7F800000 ), LONG2CHARS( 0xFF800000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x01000000 ), LONG2CHARS( 0x03000000 ), LONG2CHARS( 0x07000000 ),
- LONG2CHARS( 0X0F000000 ), LONG2CHARS( 0x1F000000 ), LONG2CHARS( 0x3F000000 ), LONG2CHARS( 0x7F000000 ),
- LONG2CHARS( 0XFF000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x02000000 ), LONG2CHARS( 0x06000000 ), LONG2CHARS( 0x0E000000 ),
- LONG2CHARS( 0X1E000000 ), LONG2CHARS( 0x3E000000 ), LONG2CHARS( 0x7E000000 ), LONG2CHARS( 0xFE000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x04000000 ), LONG2CHARS( 0x0C000000 ), LONG2CHARS( 0x1C000000 ),
- LONG2CHARS( 0X3C000000 ), LONG2CHARS( 0x7C000000 ), LONG2CHARS( 0xFC000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x08000000 ), LONG2CHARS( 0x18000000 ), LONG2CHARS( 0x38000000 ),
- LONG2CHARS( 0X78000000 ), LONG2CHARS( 0xF8000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x10000000 ), LONG2CHARS( 0x30000000 ), LONG2CHARS( 0x70000000 ),
- LONG2CHARS( 0XF0000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x20000000 ), LONG2CHARS( 0x60000000 ), LONG2CHARS( 0xE0000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x40000000 ), LONG2CHARS( 0xC0000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x80000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
-};
-
-#endif /* BITMAP_BIT_ORDER */
-
-/* used for masking bits in bresenham lines
- mask[n] is used to mask out all but bit n in a longword (n is a
-screen position).
- rmask[n] is used to mask out the single bit at position n (n
-is a screen posiotion.)
-*/
-
-#define _1_ ((PixelType)1)
-
-#if (BITMAP_BIT_ORDER == MSBFirst)
-PixelType mask[PPW] =
- {
- LONG2CHARS( _1_<<31 ), LONG2CHARS( 1<<30 ), LONG2CHARS( 1<<29 ),
- LONG2CHARS( 1<<28 ), LONG2CHARS( 1<<27 ), LONG2CHARS( 1<<26 ),
- LONG2CHARS( 1<<25 ), LONG2CHARS( 1<<24 ), LONG2CHARS( 1<<23 ),
- LONG2CHARS( 1<<22 ), LONG2CHARS( 1<<21 ), LONG2CHARS( 1<<20 ),
- LONG2CHARS( 1<<19 ), LONG2CHARS( 1<<18 ), LONG2CHARS( 1<<17 ),
- LONG2CHARS( 1<<16 ), LONG2CHARS( 1<<15 ), LONG2CHARS( 1<<14 ),
- LONG2CHARS( 1<<13 ), LONG2CHARS( 1<<12 ), LONG2CHARS( 1<<11 ),
- LONG2CHARS( 1<<10 ), LONG2CHARS( 1<<9 ), LONG2CHARS( 1<<8 ),
- LONG2CHARS( 1<<7 ), LONG2CHARS( 1<<6 ), LONG2CHARS( 1<<5 ),
- LONG2CHARS( 1<<4 ), LONG2CHARS( 1<<3 ), LONG2CHARS( 1<<2 ),
- LONG2CHARS( 1<<1 ), LONG2CHARS( 1<<0 )
- };
-
-PixelType rmask[] =
- {
- 0xffffffff ^ LONG2CHARS( _1_<<31 ), 0xffffffff ^ LONG2CHARS( 1<<30 ),
- 0xffffffff ^ LONG2CHARS( 1<<29 ), 0xffffffff ^ LONG2CHARS( 1<<28),
- 0xffffffff ^ LONG2CHARS( 1<<27 ), 0xffffffff ^ LONG2CHARS( 1<<26),
- 0xffffffff ^ LONG2CHARS( 1<<25 ), 0xffffffff ^ LONG2CHARS( 1<<24 ),
- 0xffffffff ^ LONG2CHARS( 1<<23 ), 0xffffffff ^ LONG2CHARS( 1<<22),
- 0xffffffff ^ LONG2CHARS( 1<<21 ), 0xffffffff ^ LONG2CHARS( 1<<20),
- 0xffffffff ^ LONG2CHARS( 1<<19 ), 0xffffffff ^ LONG2CHARS( 1<<18 ),
- 0xffffffff ^ LONG2CHARS( 1<<17 ), 0xffffffff ^ LONG2CHARS( 1<<16),
- 0xffffffff ^ LONG2CHARS( 1<<15 ), 0xffffffff ^ LONG2CHARS( 1<<14),
- 0xffffffff ^ LONG2CHARS( 1<<13 ), 0xffffffff ^ LONG2CHARS( 1<<12 ),
- 0xffffffff ^ LONG2CHARS( 1<<11 ), 0xffffffff ^ LONG2CHARS( 1<<10),
- 0xffffffff ^ LONG2CHARS( 1<<9 ), 0xffffffff ^ LONG2CHARS( 1<<8),
- 0xffffffff ^ LONG2CHARS( 1<<7 ), 0xffffffff ^ LONG2CHARS( 1<<6),
- 0xffffffff ^ LONG2CHARS( 1<<5 ), 0xffffffff ^ LONG2CHARS( 1<<4),
- 0xffffffff ^ LONG2CHARS( 1<<3 ), 0xffffffff ^ LONG2CHARS( 1<<2),
- 0xffffffff ^ LONG2CHARS( 1<<1 ), 0xffffffff ^ LONG2CHARS( 1<<0)
- };
-#else /* LSBFirst */
-PixelType mask[] =
- {
- LONG2CHARS( 1<<0 ), LONG2CHARS( 1<<1 ), LONG2CHARS( 1<<2),
- LONG2CHARS( 1<<3 ), LONG2CHARS( 1<<4 ), LONG2CHARS( 1<<5),
- LONG2CHARS( 1<<6 ), LONG2CHARS( 1<<7 ), LONG2CHARS( 1<<8),
- LONG2CHARS( 1<<9 ), LONG2CHARS( 1<<10 ), LONG2CHARS( 1<<11),
- LONG2CHARS( 1<<12 ), LONG2CHARS( 1<<13 ), LONG2CHARS( 1<<14),
- LONG2CHARS( 1<<15 ), LONG2CHARS( 1<<16 ), LONG2CHARS( 1<<17),
- LONG2CHARS( 1<<18 ), LONG2CHARS( 1<<19 ), LONG2CHARS( 1<<20),
- LONG2CHARS( 1<<21 ), LONG2CHARS( 1<<22 ), LONG2CHARS( 1<<23),
- LONG2CHARS( 1<<24 ), LONG2CHARS( 1<<25 ), LONG2CHARS( 1<<26),
- LONG2CHARS( 1<<27 ), LONG2CHARS( 1<<28 ), LONG2CHARS( 1<<29),
- LONG2CHARS( 1<<30 ), LONG2CHARS( _1_<<31 )
- };
-PixelType rmask[] =
- {
- 0xffffffff ^ LONG2CHARS( 1<<0), 0xffffffff ^ LONG2CHARS( 1<<1),
- 0xffffffff ^ LONG2CHARS( 1<<2), 0xffffffff ^ LONG2CHARS( 1<<3),
- 0xffffffff ^ LONG2CHARS( 1<<4), 0xffffffff ^ LONG2CHARS( 1<<5),
- 0xffffffff ^ LONG2CHARS( 1<<6), 0xffffffff ^ LONG2CHARS( 1<<7),
- 0xffffffff ^ LONG2CHARS( 1<<8), 0xffffffff ^ LONG2CHARS( 1<<9),
- 0xffffffff ^ LONG2CHARS( 1<<10), 0xffffffff ^ LONG2CHARS( 1<<11),
- 0xffffffff ^ LONG2CHARS( 1<<12), 0xffffffff ^ LONG2CHARS( 1<<13),
- 0xffffffff ^ LONG2CHARS( 1<<14), 0xffffffff ^ LONG2CHARS( 1<<15),
- 0xffffffff ^ LONG2CHARS( 1<<16), 0xffffffff ^ LONG2CHARS( 1<<17),
- 0xffffffff ^ LONG2CHARS( 1<<18), 0xffffffff ^ LONG2CHARS( 1<<19),
- 0xffffffff ^ LONG2CHARS( 1<<20), 0xffffffff ^ LONG2CHARS( 1<<21),
- 0xffffffff ^ LONG2CHARS( 1<<22), 0xffffffff ^ LONG2CHARS( 1<<23),
- 0xffffffff ^ LONG2CHARS( 1<<24), 0xffffffff ^ LONG2CHARS( 1<<25),
- 0xffffffff ^ LONG2CHARS( 1<<26), 0xffffffff ^ LONG2CHARS( 1<<27),
- 0xffffffff ^ LONG2CHARS( 1<<28), 0xffffffff ^ LONG2CHARS( 1<<29),
- 0xffffffff ^ LONG2CHARS( 1<<30), 0xffffffff ^ LONG2CHARS( _1_<<31)
- };
-#endif /* BITMAP_BIT_ORDER */
-
-#undef _1_
-
-PixelType mfbGetmask(int i) { return mask[i]; }
-PixelType mfbGetrmask(int i) { return rmask[i]; }
-PixelType mfbGetstarttab(int i) { return starttab[i]; }
-PixelType mfbGetendtab(int i) { return endtab[i]; }
-PixelType mfbGetpartmasks(int i, int j) { return partmasks[i][j]; }
-
-/*
- * Merge raster ops for full src + dest + plane mask
- *
- * More clever usage of boolean arithmetic to reduce the
- * cost of complex raster ops. This is for bitblt and
- * reduces all 16 raster ops + planemask to a single
- * expression:
- *
- * dst = dst & (src & ca1 ^ cx1) ^ (src & ca2 ^ cx2)
- *
- * The array below contains the values for c?? for each
- * raster op. Those values are further modified by
- * planemasks on multi-plane displays as follows:
- *
- * ca1 &= pm;
- * cx1 |= ~pm;
- * ca2 &= pm;
- * cx2 &= pm;
- */
-
-#include "mergerop.h"
-
-#define O 0
-#define I ~((MfbBits)0)
-
-mergeRopRec mergeRopBits[16] = {
-{ O,O,O,O, }, /* clear 0x0 0 */
-{ I,O,O,O, }, /* and 0x1 src AND dst */
-{ I,O,I,O, }, /* andReverse 0x2 src AND NOT dst */
-{ O,O,I,O, }, /* copy 0x3 src */
-{ I,I,O,O, }, /* andInverted 0x4 NOT src AND dst */
-{ O,I,O,O, }, /* noop 0x5 dst */
-{ O,I,I,O, }, /* xor 0x6 src XOR dst */
-{ I,I,I,O, }, /* or 0x7 src OR dst */
-{ I,I,I,I, }, /* nor 0x8 NOT src AND NOT dst */
-{ O,I,I,I, }, /* equiv 0x9 NOT src XOR dst */
-{ O,I,O,I, }, /* invert 0xa NOT dst */
-{ I,I,O,I, }, /* orReverse 0xb src OR NOT dst */
-{ O,O,I,I, }, /* copyInverted 0xc NOT src */
-{ I,O,I,I, }, /* orInverted 0xd NOT src OR dst */
-{ I,O,O,I, }, /* nand 0xe NOT src OR NOT dst */
-{ O,O,O,I, }, /* set 0xf 1 */
-};
-
-mergeRopPtr mergeGetRopBits(int i) {
- return &mergeRopBits[i];
-}
-
-#undef O
-#undef I
diff --git a/nx-X11/programs/Xserver/mfb/mergerop.h b/nx-X11/programs/Xserver/mfb/mergerop.h
deleted file mode 100644
index c8652eb81..000000000
--- a/nx-X11/programs/Xserver/mfb/mergerop.h
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * $Xorg: mergerop.h,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $
- *
-Copyright 1989, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-/* $XFree86: xc/programs/Xserver/mfb/mergerop.h,v 3.13 2001/10/28 03:34:13 tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _MERGEROP_H_
-#define _MERGEROP_H_
-
-#ifndef GXcopy
-#include <X11/X.h>
-#endif
-
-typedef struct _mergeRopBits {
- MfbBits ca1, cx1, ca2, cx2;
-} mergeRopRec, *mergeRopPtr;
-
-extern mergeRopRec mergeRopBits[16];
-extern mergeRopPtr mergeGetRopBits(int i);
-
-#if defined(PPW) && defined(PGSZ) && (PPW != PGSZ) /* cfb */
-#define DeclareMergeRop() MfbBits _ca1 = 0, _cx1 = 0, _ca2 = 0, _cx2 = 0;
-#define DeclarePrebuiltMergeRop() MfbBits _cca, _ccx;
-#if PSZ == 24 /* both for PGSZ == 32 and 64 */
-#define DeclareMergeRop24() \
- MfbBits _ca1u[4], _cx1u[4], _ca2u[4], _cx2u[4];
- /* int _unrollidx[3]={0,0,1,2};*/
-#define DeclarePrebuiltMergeRop24() MfbBits _ccau[4], _ccxu[4];
-#endif /* PSZ == 24 */
-#else /* mfb */
-#define DeclareMergeRop() MfbBits _ca1 = 0, _cx1 = 0, _ca2 = 0, _cx2 = 0;
-#define DeclarePrebuiltMergeRop() MfbBits _cca, _ccx;
-#endif
-
-#if defined(PPW) && defined(PGSZ) && (PPW != PGSZ) /* cfb */
-#define InitializeMergeRop(alu,pm) {\
- MfbBits _pm; \
- mergeRopPtr _bits; \
- _pm = PFILL(pm); \
- _bits = mergeGetRopBits(alu); \
- _ca1 = _bits->ca1 & _pm; \
- _cx1 = _bits->cx1 | ~_pm; \
- _ca2 = _bits->ca2 & _pm; \
- _cx2 = _bits->cx2 & _pm; \
-}
-#if PSZ == 24
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define InitializeMergeRop24(alu,pm) {\
- register int i; \
- register MfbBits _pm = (pm) & 0xFFFFFF; \
- mergeRopPtr _bits = mergeGetRopBits(alu); \
- MfbBits _bits_ca1 = _bits->ca1; \
- MfbBits _bits_cx1 = _bits->cx1; \
- MfbBits _bits_ca2 = _bits->ca2; \
- MfbBits _bits_cx2 = _bits->cx2; \
- _pm = (_pm << 8) | (_pm >> 16); \
- for(i = 0; i < 4; i++){ \
- _ca1u[i] = _bits_ca1 & _pm; \
- _cx1u[i] = _bits_cx1 | ~_pm; \
- _ca2u[i] = _bits_ca2 & _pm; \
- _cx2u[i] = _bits_cx2 & _pm; \
- _pm = (_pm << 16)|(_pm >> 8); \
- } \
-}
-#else /*(BITMAP_BIT_ORDER == LSBFirst)*/
-#define InitializeMergeRop24(alu,pm) {\
- register int i; \
- register MfbBits _pm = (pm) & cfbmask[0]; \
- mergeRopPtr _bits = mergeGetRopBits(alu); \
- MfbBits _bits_ca1 = _bits->ca1 & cfbmask[0]; \
- MfbBits _bits_cx1 = _bits->cx1 & cfbmask[0]; \
- MfbBits _bits_ca2 = _bits->ca2 & cfbmask[0]; \
- MfbBits _bits_cx2 = _bits->cx2 & cfbmask[0]; \
- _pm |= (_pm << 24); \
- _bits_ca1 |= (_bits->ca1 << 24); \
- _bits_cx1 |= (_bits->cx1 << 24); \
- _bits_ca2 |= (_bits->ca2 << 24); \
- _bits_cx2 |= (_bits->cx2 << 24); \
- for(i = 0; i < 4; i++){ \
- _ca1u[i] = _bits_ca1 & _pm; \
- _cx1u[i] = _bits_cx1 | ~_pm; \
- _ca2u[i] = _bits_ca2 & _pm; \
- _cx2u[i] = _bits_cx2 & _pm; \
- _pm = (_pm << 16)|(_pm >> 8); \
- } \
-}
-#endif /*(BITMAP_BIT_ORDER == MSBFirst)*/
-#endif /* PSZ == 24 */
-#else /* mfb */
-#define InitializeMergeRop(alu,pm) {\
- mergeRopPtr _bits; \
- _bits = mergeGetRopBits(alu); \
- _ca1 = _bits->ca1; \
- _cx1 = _bits->cx1; \
- _ca2 = _bits->ca2; \
- _cx2 = _bits->cx2; \
-}
-#endif
-
-/* AND has higher precedence than XOR */
-
-#define DoMergeRop(src, dst) \
- (((dst) & (((src) & _ca1) ^ _cx1)) ^ (((src) & _ca2) ^ _cx2))
-
-#define DoMergeRop24u(src, dst, i) \
-(((dst) & (((src) & _ca1u[i]) ^ _cx1u[i])) ^ (((src) & _ca2u[i]) ^ _cx2u[i]))
-
-#define DoMaskMergeRop24(src, dst, mask, index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src0 = (src);\
- MfbBits _src1 = (_src0 & _ca1) ^ _cx1; \
- MfbBits _src2 = (_src0 & _ca2) ^ _cx2; \
- *(dst) = (((*(dst)) & cfbrmask[idx]) | (((*(dst)) & cfbmask[idx]) & \
- (((( _src1 |(~mask))<<cfb24Shift[idx])&cfbmask[idx]) ^ \
- ((( _src2&(mask))<<cfb24Shift[idx])&cfbmask[idx])))); \
- idx++; \
- (dst)++; \
- *(dst) = (((*(dst)) & cfbrmask[idx]) | (((*(dst)) & cfbmask[idx]) & \
- ((((_src1 |(~mask))>>cfb24Shift[idx])&cfbmask[idx]) ^ \
- (((_src2 &(mask))>>cfb24Shift[idx])&cfbmask[idx])))); \
- (dst)--; \
- }
-
-#define DoMaskMergeRop(src, dst, mask) \
- (((dst) & ((((src) & _ca1) ^ _cx1) | ~(mask))) ^ ((((src) & _ca2) ^ _cx2) & (mask)))
-
-#define DoMaskMergeRop24u(src, dst, mask, i) \
-(((dst) & ((((src) & _ca1u[(i)]) ^ _cx1u[(i)]) | ~(mask))) ^ ((((src) & _ca2u[(i)]) ^ _cx2u[(i)]) & (mask)))
-
-#define DoMergeRop24(src,dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src0 = (src);\
- MfbBits _src1 = (_src0 & _ca1) ^ _cx1; \
- MfbBits _src2 = (_src0 & _ca2) ^ _cx2; \
- *(dst) = (((*(dst)) & cfbrmask[idx]) | ((((*(dst)) & cfbmask[idx]) & \
- ((_src1 << cfb24Shift[idx])&cfbmask[idx])) ^ \
- ((_src2 << cfb24Shift[idx])&cfbmask[idx]))); \
- idx++; \
- (dst)++; \
- *(dst) = (((*(dst)) & cfbrmask[idx]) | ((((*(dst)) & cfbmask[idx]) & \
- ((_src1 >> cfb24Shift[idx])&cfbmask[idx])) ^ \
- ((_src2 >> cfb24Shift[idx])&cfbmask[idx]))); \
- (dst)--; \
- }
-
-#define DoPrebuiltMergeRop(dst) (((dst) & _cca) ^ _ccx)
-
-#define DoPrebuiltMergeRop24(dst,index) { \
- register int idx = ((index) & 3)<< 1; \
- *(dst) = (((*(dst)) & cfbrmask[idx]) | ((((*(dst)) & cfbmask[idx]) &\
- (( _cca <<cfb24Shift[idx])&cfbmask[idx])) ^ \
- (( _ccx <<cfb24Shift[idx])&cfbmask[idx]))); \
- idx++; \
- (dst)++; \
- *(dst) = (((*(dst)) & cfbrmask[idx]) | ((((*(dst)) & cfbmask[idx]) &\
- (( _cca >>cfb24Shift[idx])&cfbmask[idx])) ^ \
- (( _ccx >>cfb24Shift[idx])&cfbmask[idx]))); \
- (dst)--; \
- }
-
-#define DoMaskPrebuiltMergeRop(dst,mask) \
- (((dst) & (_cca | ~(mask))) ^ (_ccx & (mask)))
-
-#define PrebuildMergeRop(src) ((_cca = ((src) & _ca1) ^ _cx1), \
- (_ccx = ((src) & _ca2) ^ _cx2))
-
-#ifndef MROP
-#define MROP 0
-#endif
-
-#define Mclear (1<<GXclear)
-#define Mand (1<<GXand)
-#define MandReverse (1<<GXandReverse)
-#define Mcopy (1<<GXcopy)
-#define MandInverted (1<<GXandInverted)
-#define Mnoop (1<<GXnoop)
-#define Mxor (1<<GXxor)
-#define Mor (1<<GXor)
-#define Mnor (1<<GXnor)
-#define Mequiv (1<<GXequiv)
-#define Minvert (1<<GXinvert)
-#define MorReverse (1<<GXorReverse)
-#define McopyInverted (1<<GXcopyInverted)
-#define MorInverted (1<<GXorInverted)
-#define Mnand (1<<GXnand)
-#define Mset (1<<GXset)
-
-#define MROP_PIXEL24(pix, idx) \
- (((*(pix) & cfbmask[(idx)<<1]) >> cfb24Shift[(idx)<<1])| \
- ((*((pix)+1) & cfbmask[((idx)<<1)+1]) << cfb24Shift[((idx)<<1)+1]))
-
-#define MROP_SOLID24P(src,dst,sindex, index) \
- MROP_SOLID24(MROP_PIXEL24(src,sindex),dst,index)
-
-#define MROP_MASK24P(src,dst,mask,sindex,index) \
- MROP_MASK24(MROP_PIXEL24(src,sindex),dst,mask,index)
-
-#if (MROP) == Mcopy
-#define MROP_DECLARE()
-#define MROP_DECLARE_REG()
-#define MROP_INITIALIZE(alu,pm)
-#define MROP_SOLID(src,dst) (src)
-#define MROP_SOLID24(src,dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src = (src); \
- *(dst) = (*(dst) & cfbrmask[idx])|((_src<<cfb24Shift[idx])&cfbmask[idx]); \
- idx++; \
- *((dst)+1) = (*((dst)+1) & cfbrmask[idx])|((_src>>cfb24Shift[idx])&cfbmask[idx]); \
- }
-#define MROP_MASK(src,dst,mask) (((dst) & ~(mask)) | ((src) & (mask)))
-#define MROP_MASK24(src,dst,mask,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src = (src); \
- *(dst) = (*(dst) & cfbrmask[idx] &(~(((mask)<< cfb24Shift[idx])&cfbmask[idx])) | \
- (((_src &(mask))<<cfb24Shift[idx])&cfbmask[idx])); \
- idx++; \
- *((dst)+1) = (*((dst)+1) & cfbrmask[idx] &(~(((mask)>>cfb24Shift[idx])&cfbmask[idx])) | \
- (((_src&(mask))>>cfb24Shift[idx])&cfbmask[idx])); \
- }
-#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,Copy)
-#endif
-
-#if (MROP) == McopyInverted
-#define MROP_DECLARE()
-#define MROP_DECLARE_REG()
-#define MROP_INITIALIZE(alu,pm)
-#define MROP_SOLID(src,dst) (~(src))
-#define MROP_SOLID24(src,dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src = ~(src); \
- *(dst) = (*(dst) & cfbrmask[idx])|((_src << cfb24Shift[idx])&cfbmask[idx]); \
- idx++; \
- (dst)++; \
- *(dst) = (*(dst) & cfbrmask[idx])|((_src >>cfb24Shift[idx])&cfbmask[idx]); \
- (dst)--; \
- }
-#define MROP_MASK(src,dst,mask) (((dst) & ~(mask)) | ((~(src)) & (mask)))
-#define MROP_MASK24(src,dst,mask,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src = ~(src); \
- *(dst) = (*(dst) & cfbrmask[idx] &(~(((mask)<< cfb24Shift[idx])&cfbmask[idx])) | \
- (((_src &(mask))<<cfb24Shift[idx])&cfbmask[idx])); \
- idx++; \
- (dst)++; \
- *(dst) = (*(dst) & cfbrmask[idx] &(~(((mask)>>cfb24Shift[idx])&cfbmask[idx])) | \
- ((((_src & (mask))>>cfb24Shift[idx])&cfbmask[idx])); \
- (dst)--; \
- }
-#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,CopyInverted)
-#endif
-
-#if (MROP) == Mxor
-#define MROP_DECLARE()
-#define MROP_DECLARE_REG()
-#define MROP_INITIALIZE(alu,pm)
-#define MROP_SOLID(src,dst) ((src) ^ (dst))
-#define MROP_SOLID24(src,dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src = (src); \
- *(dst) ^= ((_src << cfb24Shift[idx])&cfbmask[idx]); \
- idx++; \
- (dst)++; \
- *(dst) ^= ((_src >>cfb24Shift[idx])&cfbmask[idx]); \
- (dst)--; \
- }
-#define MROP_MASK(src,dst,mask) (((src) & (mask)) ^ (dst))
-#define MROP_MASK24(src,dst,mask,index) {\
- register int idx = ((index) & 3)<< 1; \
- *(dst) ^= ((((src)&(mask))<<cfb24Shift[idx])&cfbmask[idx]); \
- idx++; \
- (dst)++; \
- *(dst) ^= ((((src)&(mask))>>cfb24Shift[idx])&cfbmask[idx]); \
- (dst)--; \
- }
-#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,Xor)
-#endif
-
-#if (MROP) == Mor
-#define MROP_DECLARE()
-#define MROP_DECLARE_REG()
-#define MROP_INITIALIZE(alu,pm)
-#define MROP_SOLID(src,dst) ((src) | (dst))
-#define MROP_SOLID24(src,dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- *(dst) |= (((src)<<cfb24Shift[idx])&cfbmask[idx]); \
- idx++; \
- (dst)++; \
- *(dst) |= (((src)>>cfb24Shift[idx])&cfbmask[idx]); \
- (dst)--; \
- }
-#define MROP_MASK(src,dst,mask) (((src) & (mask)) | (dst))
-#define MROP_MASK24(src,dst,mask,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src = (src); \
- *(dst) |= (((_src &(mask))<<cfb24Shift[idx])&cfbmask[idx]); \
- idx++; \
- (dst)++; \
- *(dst) |= (((_src &(mask))>>cfb24Shift[idx])&cfbmask[idx]); \
- (dst)--; \
- }
-#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,Or)
-#endif
-
-#if (MROP) == (Mcopy|Mxor|MandReverse|Mor)
-#define MROP_DECLARE() MfbBits _ca1 = 0, _cx1 = 0;
-#define MROP_DECLARE_REG() register MROP_DECLARE()
-#define MROP_INITIALIZE(alu,pm) { \
- mergeRopPtr _bits; \
- _bits = mergeGetRopBits(alu); \
- _ca1 = _bits->ca1; \
- _cx1 = _bits->cx1; \
-}
-#define MROP_SOLID(src,dst) \
- (((dst) & (((src) & _ca1) ^ _cx1)) ^ (src))
-#define MROP_MASK(src,dst,mask) \
- (((dst) & ((((src) & _ca1) ^ _cx1)) | (~(mask)) ^ ((src) & (mask))))
-#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,CopyXorAndReverseOr)
-#define MROP_PREBUILD(src) PrebuildMergeRop(src)
-#define MROP_PREBUILT_DECLARE() DeclarePrebuiltMergeRop()
-#define MROP_PREBUILT_SOLID(src,dst) DoPrebuiltMergeRop(dst)
-#define MROP_PREBUILT_SOLID24(src,dst,index) DoPrebuiltMergeRop24(dst,index)
-#define MROP_PREBUILT_MASK(src,dst,mask) DoMaskPrebuiltMergeRop(dst,mask)
-#define MROP_PREBUILT_MASK24(src,dst,mask,index) DoMaskPrebuiltMergeRop24(dst,mask,index)
-#endif
-
-#if (MROP) == 0
-#if !defined(PSZ) || (PSZ != 24)
-#define MROP_DECLARE() DeclareMergeRop()
-#define MROP_DECLARE_REG() register DeclareMergeRop()
-#define MROP_INITIALIZE(alu,pm) InitializeMergeRop(alu,pm)
-#define MROP_SOLID(src,dst) DoMergeRop(src,dst)
-#define MROP_MASK(src,dst,mask) DoMaskMergeRop(src, dst, mask)
-#else
-#define MROP_DECLARE() \
- DeclareMergeRop() \
- DeclareMergeRop24()
-#define MROP_DECLARE_REG() \
- register DeclareMergeRop()\
- DeclareMergeRop24()
-#define MROP_INITIALIZE(alu,pm) \
- InitializeMergeRop(alu,pm)\
- InitializeMergeRop24(alu,pm)
-#define MROP_SOLID(src,dst) DoMergeRop24u(src,dst,((int)(&(dst)-pdstBase) % 3))
-#define MROP_MASK(src,dst,mask) DoMaskMergeRop24u(src, dst, mask,((int)(&(dst) - pdstBase)%3))
-#endif
-#define MROP_SOLID24(src,dst,index) DoMergeRop24(src,dst,index)
-#define MROP_MASK24(src,dst,mask,index) DoMaskMergeRop24(src, dst, mask,index)
-#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,General)
-#define MROP_PREBUILD(src) PrebuildMergeRop(src)
-#define MROP_PREBUILT_DECLARE() DeclarePrebuiltMergeRop()
-#define MROP_PREBUILT_SOLID(src,dst) DoPrebuiltMergeRop(dst)
-#define MROP_PREBUILT_SOLID24(src,dst,index) DoPrebuiltMergeRop24(dst,index)
-#define MROP_PREBUILT_MASK(src,dst,mask) DoMaskPrebuiltMergeRop(dst,mask)
-#define MROP_PREBUILT_MASK24(src,dst,mask,index) \
- DoMaskPrebuiltMergeRop24(dst,mask,index)
-#endif
-
-#ifndef MROP_PREBUILD
-#define MROP_PREBUILD(src)
-#define MROP_PREBUILT_DECLARE()
-#define MROP_PREBUILT_SOLID(src,dst) MROP_SOLID(src,dst)
-#define MROP_PREBUILT_SOLID24(src,dst,index) MROP_SOLID24(src,dst,index)
-#define MROP_PREBUILT_MASK(src,dst,mask) MROP_MASK(src,dst,mask)
-#define MROP_PREBUILT_MASK24(src,dst,mask,index) MROP_MASK24(src,dst,mask,index)
-#endif
-
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define MROP_NAME_CAT(prefix,suffix) prefix##suffix
-#else
-#define MROP_NAME_CAT(prefix,suffix) prefix/**/suffix
-#endif
-
-#endif
diff --git a/nx-X11/programs/Xserver/mfb/mfb.h b/nx-X11/programs/Xserver/mfb/mfb.h
deleted file mode 100644
index 6e7ae43b3..000000000
--- a/nx-X11/programs/Xserver/mfb/mfb.h
+++ /dev/null
@@ -1,1158 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfb.h,v 1.21 2003/07/16 03:35:16 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfb.h,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
-
-#if !defined(_MFB_H_) || defined(MFB_PROTOTYPES_ONLY)
-#ifndef MFB_PROTOTYPES_ONLY
-#define _MFB_H_
-#endif
-
-/* Monochrome Frame Buffer definitions
- written by drewry, september 1986
-*/
-#include "pixmap.h"
-#include "region.h"
-#include "gc.h"
-#include "colormap.h"
-#include "miscstruct.h"
-#include "mibstore.h"
-
-extern int InverseAlu[];
-extern int mfbGetInverseAlu(int i);
-
-/* warning: PixelType definition duplicated in maskbits.h */
-#ifndef PixelType
-#define PixelType CARD32
-#endif /* PixelType */
-#ifndef MfbBits
-#define MfbBits CARD32
-#endif
-
-/* mfbbitblt.c */
-
-extern void mfbDoBitblt(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/
-);
-
-extern RegionPtr mfbCopyArea(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/
-);
-
-extern Bool mfbRegisterCopyPlaneProc(
- ScreenPtr /*pScreen*/,
- RegionPtr (* /*proc*/)(
- DrawablePtr /* pSrcDrawable */,
- DrawablePtr /* pDstDrawable */,
- GCPtr /* pGC */,
- int /* srcx */,
- int /* srcy */,
- int /* width */,
- int /* height */,
- int /* dstx */,
- int /* dsty */,
- unsigned long /* bitPlane */
- )
-);
-
-extern RegionPtr mfbCopyPlane(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- unsigned long /*plane*/
-);
-/* mfbbltC.c */
-
-extern void mfbDoBitbltCopy(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/
-);
-/* mfbbltCI.c */
-
-extern void mfbDoBitbltCopyInverted(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/
-);
-/* mfbbltG.c */
-
-extern void mfbDoBitbltGeneral(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/
-);
-/* mfbbltO.c */
-
-extern void mfbDoBitbltOr(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/
-);
-/* mfbbltX.c */
-
-extern void mfbDoBitbltXor(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/
-);
-/* mfbbres.c */
-
-extern void mfbBresS(
- int /*rop*/,
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/
-);
-/* mfbbresd.c */
-
-extern void mfbBresD(
- int /*fgrop*/,
- int /*bgrop*/,
- int * /*pdashIndex*/,
- unsigned char * /*pDash*/,
- int /*numInDashList*/,
- int * /*pdashOffset*/,
- int /*isDoubleDash*/,
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/
-);
-/* mfbbstore.c */
-
-extern void mfbSaveAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnSave*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-
-extern void mfbRestoreAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnRestore*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-/* mfbclip.c */
-
-extern RegionPtr mfbPixmapToRegion(
- PixmapPtr /*pPix*/
-);
-
-#ifndef MFB_PROTOTYPES_ONLY
-typedef RegionPtr (*mfbPixmapToRegionProc)(PixmapPtr);
-
-extern mfbPixmapToRegionProc *mfbPixmapToRegionWeak(void);
-#endif
-
-/* mfbcmap.c */
-
-extern int mfbListInstalledColormaps(
- ScreenPtr /*pScreen*/,
- Colormap * /*pmaps*/
-);
-
-extern void mfbInstallColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void mfbUninstallColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void mfbResolveColor(
- unsigned short * /*pred*/,
- unsigned short * /*pgreen*/,
- unsigned short * /*pblue*/,
- VisualPtr /*pVisual*/
-);
-
-extern Bool mfbCreateColormap(
- ColormapPtr /*pMap*/
-);
-
-extern void mfbDestroyColormap(
- ColormapPtr /*pMap*/
-);
-
-extern Bool mfbCreateDefColormap(
- ScreenPtr /*pScreen*/
-);
-/* mfbfillarc.c */
-
-extern void mfbPolyFillArcSolid(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* mfbfillrct.c */
-
-extern void mfbPolyFillRect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nrectFill*/,
- xRectangle * /*prectInit*/
-);
-/* mfbfillsp.c */
-
-extern void mfbBlackSolidFS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbWhiteSolidFS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbInvertSolidFS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbWhiteStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbBlackStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbInvertStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbUnnaturalTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbUnnaturalStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* mfbfont.c */
-
-extern Bool mfbRealizeFont(
- ScreenPtr /*pscr*/,
- FontPtr /*pFont*/
-);
-
-extern Bool mfbUnrealizeFont(
- ScreenPtr /*pscr*/,
- FontPtr /*pFont*/
-);
-
-#ifndef MFB_PROTOTYPES_ONLY
-typedef void (*mfbRealizeFontProc)(ScreenPtr, FontPtr);
-typedef void (*mfbUnrealizeFontProc)(ScreenPtr, FontPtr);
-
-extern mfbRealizeFontProc *mfbRealizeFontWeak(void);
-extern mfbUnrealizeFontProc *mfbUnrealizeFontWeak(void);
-#endif
-
-/* mfbgc.c */
-
-extern Bool mfbCreateGC(
- GCPtr /*pGC*/
-);
-
-extern void mfbValidateGC(
- GCPtr /*pGC*/,
- unsigned long /*changes*/,
- DrawablePtr /*pDrawable*/
-);
-
-extern int mfbReduceRop(
- int /*alu*/,
- Pixel /*src*/
-);
-
-/* mfbgetsp.c */
-
-extern void mfbGetSpans(
- DrawablePtr /*pDrawable*/,
- int /*wMax*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- char * /*pdstStart*/
-);
-/* mfbhrzvert.c */
-
-extern void mfbHorzS(
- int /*rop*/,
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/
-);
-
-extern void mfbVertS(
- int /*rop*/,
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/
-);
-/* mfbigbblak.c */
-
-extern void mfbImageGlyphBltBlack(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbigbwht.c */
-
-extern void mfbImageGlyphBltWhite(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbimage.c */
-
-extern void mfbPutImage(
- DrawablePtr /*dst*/,
- GCPtr /*pGC*/,
- int /*depth*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- int /*leftPad*/,
- int /*format*/,
- char * /*pImage*/
-);
-
-extern void mfbGetImage(
- DrawablePtr /*pDrawable*/,
- int /*sx*/,
- int /*sy*/,
- int /*w*/,
- int /*h*/,
- unsigned int /*format*/,
- unsigned long /*planeMask*/,
- char * /*pdstLine*/
-);
-/* mfbline.c */
-
-extern void mfbLineSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-extern void mfbLineSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-/* mfbmisc.c */
-
-extern void mfbQueryBestSize(
- int /*class*/,
- unsigned short * /*pwidth*/,
- unsigned short * /*pheight*/,
- ScreenPtr /*pScreen*/
-);
-
-#ifndef MFB_PROTOTYPES_ONLY
-typedef void (*mfbQueryBestSizeProc)(int, unsigned short *, unsigned short *,
- ScreenPtr);
-
-extern mfbQueryBestSizeProc *mfbQueryBestSizeWeak(void);
-#endif
-
-/* mfbpablack.c */
-
-extern void mfbSolidBlackArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*nop*/
-);
-
-extern void mfbStippleBlackArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*pstipple*/
-);
-/* mfbpainv.c */
-
-extern void mfbSolidInvertArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*nop*/
-);
-
-extern void mfbStippleInvertArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*pstipple*/
-);
-/* mfbpawhite.c */
-
-extern void mfbSolidWhiteArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*nop*/
-);
-
-extern void mfbStippleWhiteArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*pstipple*/
-);
-
-/* mfbpgbinv.c */
-
-extern void mfbPolyGlyphBltBlack(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbpgbinv.c */
-
-extern void mfbPolyGlyphBltInvert(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbpgbwht.c */
-
-extern void mfbPolyGlyphBltWhite(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbpixmap.c */
-
-extern PixmapPtr mfbCreatePixmap(
- ScreenPtr /*pScreen*/,
- int /*width*/,
- int /*height*/,
- int /*depth*/
-);
-
-extern Bool mfbDestroyPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern PixmapPtr mfbCopyPixmap(
- PixmapPtr /*pSrc*/
-);
-
-extern void mfbPadPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern void mfbXRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rw*/
-);
-
-extern void mfbYRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rh*/
-);
-
-extern void mfbCopyRotatePixmap(
- PixmapPtr /*psrcPix*/,
- PixmapPtr * /*ppdstPix*/,
- int /*xrot*/,
- int /*yrot*/
-);
-/* mfbplyblack.c */
-
-extern void mfbFillPolyBlack(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*shape*/,
- int /*mode*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-/* mfbplyinv.c */
-
-extern void mfbFillPolyInvert(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*shape*/,
- int /*mode*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-
-/* mfbpntwin.c */
-
-extern void mfbFillPolyWhite(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*shape*/,
- int /*mode*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-/* mfbpntwin.c */
-
-extern void mfbPaintWindow(
- WindowPtr /*pWin*/,
- RegionPtr /*pRegion*/,
- int /*what*/
-);
-/* mfbpolypnt.c */
-
-extern void mfbPolyPoint(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- xPoint * /*pptInit*/
-);
-/* mfbpushpxl.c */
-
-extern void mfbSolidPP(
- GCPtr /*pGC*/,
- PixmapPtr /*pBitMap*/,
- DrawablePtr /*pDrawable*/,
- int /*dx*/,
- int /*dy*/,
- int /*xOrg*/,
- int /*yOrg*/
-);
-
-extern void mfbPushPixels(
- GCPtr /*pGC*/,
- PixmapPtr /*pBitMap*/,
- DrawablePtr /*pDrawable*/,
- int /*dx*/,
- int /*dy*/,
- int /*xOrg*/,
- int /*yOrg*/
-);
-
-#ifndef MFB_PROTOTYPES_ONLY
-typedef void (*mfbPushPixelsProc)(GCPtr, PixmapPtr, DrawablePtr, int, int,
- int, int);
-
-extern mfbPushPixelsProc *mfbPushPixelsWeak(void);
-#endif
-
-/* mfbscrclse.c */
-
-extern Bool mfbCloseScreen(
- int /*index*/,
- ScreenPtr /*pScreen*/
-);
-/* mfbscrinit.c */
-
-extern Bool mfbAllocatePrivates(
- ScreenPtr /*pScreen*/,
- int * /*pWinIndex*/,
- int * /*pGCIndex*/
-);
-
-extern Bool mfbScreenInit(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern PixmapPtr mfbGetWindowPixmap(
- WindowPtr /*pWin*/
-);
-
-extern void mfbSetWindowPixmap(
- WindowPtr /*pWin*/,
- PixmapPtr /*pPix*/
-);
-
-extern void mfbFillInScreen(ScreenPtr pScreen);
-
-/* mfbseg.c */
-
-extern void mfbSegmentSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-
-extern void mfbSegmentSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-/* mfbsetsp.c */
-
-extern void mfbSetScanline(
- int /*y*/,
- int /*xOrigin*/,
- int /*xStart*/,
- int /*xEnd*/,
- PixelType * /*psrc*/,
- int /*alu*/,
- PixelType * /*pdstBase*/,
- int /*widthDst*/
-);
-
-extern void mfbSetSpans(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- char * /*psrc*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- int /*fSorted*/
-);
-/* mfbteblack.c */
-
-extern void mfbTEGlyphBltBlack(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbtewhite.c */
-
-extern void mfbTEGlyphBltWhite(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbtileC.c */
-
-extern void mfbTileAreaPPWCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/
-);
-/* mfbtileG.c */
-
-extern void mfbTileAreaPPWGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/
-);
-
-extern void mfbTileAreaPPW(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/
-);
-/* mfbwindow.c */
-
-extern Bool mfbCreateWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool mfbDestroyWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool mfbMapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern Bool mfbPositionWindow(
- WindowPtr /*pWin*/,
- int /*x*/,
- int /*y*/
-);
-
-extern Bool mfbUnmapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern void mfbCopyWindow(
- WindowPtr /*pWin*/,
- DDXPointRec /*ptOldOrg*/,
- RegionPtr /*prgnSrc*/
-);
-
-extern Bool mfbChangeWindowAttributes(
- WindowPtr /*pWin*/,
- unsigned long /*mask*/
-);
-/* mfbzerarc.c */
-
-extern void mfbZeroPolyArcSS(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-
-#ifndef MFB_PROTOTYPES_ONLY
-/*
- private filed of pixmap
- pixmap.devPrivate = (PixelType *)pointer_to_bits
- pixmap.devKind = width_of_pixmap_in_bytes
-
- private field of screen
- a pixmap, for which we allocate storage. devPrivate is a pointer to
-the bits in the hardware framebuffer. note that devKind can be poked to
-make the code work for framebuffers that are wider than their
-displayable screen (e.g. the early vsII, which displayed 960 pixels
-across, but was 1024 in the hardware.)
-
- private field of GC
-*/
-typedef void (*mfbFillAreaProcPtr)(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*nop*/
- );
-
-typedef struct {
- unsigned char rop; /* reduction of rasterop to 1 of 3 */
- unsigned char ropOpStip; /* rop for opaque stipple */
- unsigned char ropFillArea; /* == alu, rop, or ropOpStip */
- unsigned char unused1[sizeof(long) - 3]; /* Alignment */
- mfbFillAreaProcPtr FillArea; /* fills regions; look at the code */
- } mfbPrivGC;
-typedef mfbPrivGC *mfbPrivGCPtr;
-#endif
-
-/* XXX these should be static, but it breaks the ABI */
-extern int mfbGCPrivateIndex; /* index into GC private array */
-extern int mfbGetGCPrivateIndex(void);
-extern int mfbWindowPrivateIndex; /* index into Window private array */
-extern int mfbGetWindowPrivateIndex(void);
-#ifdef PIXMAP_PER_WINDOW
-extern int frameWindowPrivateIndex; /* index into Window private array */
-extern int frameGetWindowPrivateIndex(void);
-#endif
-
-#ifndef MFB_PROTOTYPES_ONLY
-/* private field of window */
-typedef struct {
- unsigned char fastBorder; /* non-zero if border tile is 32 bits wide */
- unsigned char fastBackground;
- unsigned short unused; /* pad for alignment with Sun compiler */
- DDXPointRec oldRotate;
- PixmapPtr pRotatedBackground;
- PixmapPtr pRotatedBorder;
- } mfbPrivWin;
-
-/* Common macros for extracting drawing information */
-
-#define mfbGetTypedWidth(pDrawable,wtype) (\
- (((pDrawable)->type == DRAWABLE_WINDOW) ? \
- (int) (((PixmapPtr)((pDrawable)->pScreen->devPrivate))->devKind) : \
- (int)(((PixmapPtr)pDrawable)->devKind)) / sizeof (wtype))
-
-#define mfbGetByteWidth(pDrawable) mfbGetTypedWidth(pDrawable, unsigned char)
-
-#define mfbGetPixelWidth(pDrawable) mfbGetTypedWidth(pDrawable, PixelType)
-
-#define mfbGetTypedWidthAndPointer(pDrawable, width, pointer, wtype, ptype) {\
- PixmapPtr _pPix; \
- if ((pDrawable)->type == DRAWABLE_WINDOW) \
- _pPix = (PixmapPtr) (pDrawable)->pScreen->devPrivate; \
- else \
- _pPix = (PixmapPtr) (pDrawable); \
- (pointer) = (ptype *) _pPix->devPrivate.ptr; \
- (width) = ((int) _pPix->devKind) / sizeof (wtype); \
-}
-
-#define mfbGetByteWidthAndPointer(pDrawable, width, pointer) \
- mfbGetTypedWidthAndPointer(pDrawable, width, pointer, unsigned char, unsigned char)
-
-#define mfbGetPixelWidthAndPointer(pDrawable, width, pointer) \
- mfbGetTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
-
-#define mfbGetWindowTypedWidthAndPointer(pWin, width, pointer, wtype, ptype) {\
- PixmapPtr _pPix = (PixmapPtr) (pWin)->drawable.pScreen->devPrivate; \
- (pointer) = (ptype *) _pPix->devPrivate.ptr; \
- (width) = ((int) _pPix->devKind) / sizeof (wtype); \
-}
-
-#define mfbGetWindowPixelWidthAndPointer(pWin, width, pointer) \
- mfbGetWindowTypedWidthAndPointer(pWin, width, pointer, PixelType, PixelType)
-
-#define mfbGetWindowByteWidthAndPointer(pWin, width, pointer) \
- mfbGetWindowTypedWidthAndPointer(pWin, width, pointer, char, char)
-
-/* mfb uses the following macros to calculate addresses in drawables.
- * To support banked framebuffers, the macros come in four flavors.
- * All four collapse into the same definition on unbanked devices.
- *
- * mfbScanlineFoo - calculate address and do bank switching
- * mfbScanlineFooNoBankSwitch - calculate address, don't bank switch
- * mfbScanlineFooSrc - calculate address, switch source bank
- * mfbScanlineFooDst - calculate address, switch destination bank
- */
-
-/* The NoBankSwitch versions are the same for banked and unbanked cases */
-
-#define mfbScanlineIncNoBankSwitch(_ptr, _off) _ptr += (_off)
-#define mfbScanlineOffsetNoBankSwitch(_ptr, _off) ((_ptr) + (_off))
-#define mfbScanlineDeltaNoBankSwitch(_ptr, _y, _w) \
- mfbScanlineOffsetNoBankSwitch(_ptr, (_y) * (_w))
-#define mfbScanlineNoBankSwitch(_ptr, _x, _y, _w) \
- mfbScanlineOffsetNoBankSwitch(_ptr, (_y) * (_w) + ((_x) >> MFB_PWSH))
-
-#ifdef MFB_LINE_BANK
-
-#include "mfblinebank.h" /* get macro definitions from this file */
-
-#else /* !MFB_LINE_BANK - unbanked case */
-
-#define mfbScanlineInc(_ptr, _off) mfbScanlineIncNoBankSwitch(_ptr, _off)
-#define mfbScanlineIncSrc(_ptr, _off) mfbScanlineInc(_ptr, _off)
-#define mfbScanlineIncDst(_ptr, _off) mfbScanlineInc(_ptr, _off)
-
-#define mfbScanlineOffset(_ptr, _off) mfbScanlineOffsetNoBankSwitch(_ptr, _off)
-#define mfbScanlineOffsetSrc(_ptr, _off) mfbScanlineOffset(_ptr, _off)
-#define mfbScanlineOffsetDst(_ptr, _off) mfbScanlineOffset(_ptr, _off)
-
-#define mfbScanlineSrc(_ptr, _x, _y, _w) mfbScanline(_ptr, _x, _y, _w)
-#define mfbScanlineDst(_ptr, _x, _y, _w) mfbScanline(_ptr, _x, _y, _w)
-
-#define mfbScanlineDeltaSrc(_ptr, _y, _w) mfbScanlineDelta(_ptr, _y, _w)
-#define mfbScanlineDeltaDst(_ptr, _y, _w) mfbScanlineDelta(_ptr, _y, _w)
-
-#endif /* MFB_LINE_BANK */
-
-#define mfbScanlineDelta(_ptr, _y, _w) \
- mfbScanlineOffset(_ptr, (_y) * (_w))
-
-#define mfbScanline(_ptr, _x, _y, _w) \
- mfbScanlineOffset(_ptr, (_y) * (_w) + ((_x) >> MFB_PWSH))
-
-
-/* precomputed information about each glyph for GlyphBlt code.
- this saves recalculating the per glyph information for each box.
-*/
-typedef struct _pos{
- int xpos; /* xposition of glyph's origin */
- int xchar; /* x position mod 32 */
- int leftEdge;
- int rightEdge;
- int topEdge;
- int bottomEdge;
- PixelType *pdstBase; /* longword with character origin */
- int widthGlyph; /* width in bytes of this glyph */
-} TEXTPOS;
-
-/* reduced raster ops for mfb */
-#define RROP_BLACK GXclear
-#define RROP_WHITE GXset
-#define RROP_NOP GXnoop
-#define RROP_INVERT GXinvert
-
-/* macros for mfbbitblt.c, mfbfillsp.c
- these let the code do one switch on the rop per call, rather
-than a switch on the rop per item (span or rectangle.)
-*/
-
-#define fnCLEAR(src, dst) (0)
-#define fnAND(src, dst) (src & dst)
-#define fnANDREVERSE(src, dst) (src & ~dst)
-#define fnCOPY(src, dst) (src)
-#define fnANDINVERTED(src, dst) (~src & dst)
-#define fnNOOP(src, dst) (dst)
-#define fnXOR(src, dst) (src ^ dst)
-#define fnOR(src, dst) (src | dst)
-#define fnNOR(src, dst) (~(src | dst))
-#define fnEQUIV(src, dst) (~src ^ dst)
-#define fnINVERT(src, dst) (~dst)
-#define fnORREVERSE(src, dst) (src | ~dst)
-#define fnCOPYINVERTED(src, dst)(~src)
-#define fnORINVERTED(src, dst) (~src | dst)
-#define fnNAND(src, dst) (~(src & dst))
-#undef fnSET
-#define fnSET(src, dst) (MfbBits)(~0)
-
-/* Using a "switch" statement is much faster in most cases
- * since the compiler can do a look-up table or multi-way branch
- * instruction, depending on the architecture. The result on
- * A Sun 3/50 is at least 2.5 times faster, assuming a uniform
- * distribution of RasterOp operation types.
- *
- * However, doing some profiling on a running system reveals
- * GXcopy is the operation over 99.5% of the time and
- * GXxor is the next most frequent (about .4%), so we make special
- * checks for those first.
- *
- * Note that this requires a change to the "calling sequence"
- * since we can't engineer a "switch" statement to have an lvalue.
- */
-#undef DoRop
-#define DoRop(result, alu, src, dst) \
-{ \
- if (alu == GXcopy) \
- result = fnCOPY (src, dst); \
- else if (alu == GXxor) \
- result = fnXOR (src, dst); \
- else \
- switch (alu) \
- { \
- case GXclear: \
- result = fnCLEAR (src, dst); \
- break; \
- case GXand: \
- result = fnAND (src, dst); \
- break; \
- case GXandReverse: \
- result = fnANDREVERSE (src, dst); \
- break; \
- case GXandInverted: \
- result = fnANDINVERTED (src, dst); \
- break; \
- default: \
- case GXnoop: \
- result = fnNOOP (src, dst); \
- break; \
- case GXor: \
- result = fnOR (src, dst); \
- break; \
- case GXnor: \
- result = fnNOR (src, dst); \
- break; \
- case GXequiv: \
- result = fnEQUIV (src, dst); \
- break; \
- case GXinvert: \
- result = fnINVERT (src, dst); \
- break; \
- case GXorReverse: \
- result = fnORREVERSE (src, dst); \
- break; \
- case GXcopyInverted: \
- result = fnCOPYINVERTED (src, dst); \
- break; \
- case GXorInverted: \
- result = fnORINVERTED (src, dst); \
- break; \
- case GXnand: \
- result = fnNAND (src, dst); \
- break; \
- case GXset: \
- result = fnSET (src, dst); \
- break; \
- } \
-}
-
-
-/* C expression fragments for various operations. These get passed in
- * as -D's on the compile command line. See mfb/Imakefile. This
- * fixes XBUG 6319.
- *
- * This seems like a good place to point out that mfb's use of the
- * words black and white is an unfortunate misnomer. In mfb code, black
- * means zero, and white means one.
- */
-#define MFB_OPEQ_WHITE |=
-#define MFB_OPEQ_BLACK &=~
-#define MFB_OPEQ_INVERT ^=
-#define MFB_EQWHOLEWORD_WHITE =~0
-#define MFB_EQWHOLEWORD_BLACK =0
-#define MFB_EQWHOLEWORD_INVERT ^=~0
-#define MFB_OP_WHITE /* nothing */
-#define MFB_OP_BLACK ~
-
-/*
- * if MFB is built as a module, it shouldn't call libc functions.
- */
-#ifdef XFree86LOADER
-#include "xf86_ansic.h"
-#endif
-
-#endif /* MFB_PROTOTYPES_ONLY */
-#endif /* _MFB_H_ */
diff --git a/nx-X11/programs/Xserver/mfb/mfbbitblt.c b/nx-X11/programs/Xserver/mfb/mfbbitblt.c
deleted file mode 100644
index 70e2a9934..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbbitblt.c
+++ /dev/null
@@ -1,510 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbbitblt.c,v 1.7tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbbitblt.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mi.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-
-/* CopyArea and CopyPlane for a monchrome frame buffer
-
-
- clip the source rectangle to the source's available bits. (this
-avoids copying unnecessary pieces that will just get exposed anyway.)
-this becomes the new shape of the destination.
- clip the destination region to the composite clip in the
-GC. this requires translating the destination region to (dstx, dsty).
- build a list of source points, one for each rectangle in the
-destination. this is a simple translation.
- go do the multiple rectangle copies
- do graphics exposures
-*/
-/** Optimized for drawing pixmaps into windows, especially when drawing into
- ** unobscured windows. Calls to the general-purpose region code were
- ** replaced with rectangle-to-rectangle clipping comparisions. This is
- ** possible, since the pixmap is a single rectangle. In an unobscured
- ** window, the destination clip is also a single rectangle, and region
- ** code can be avoided entirely. This is a big savings, since the region
- ** code uses XAlloc() and makes many function calls.
- **
- ** In addition, if source is a pixmap, there is no need to call the
- ** expensive miHandleExposures() routine. Instead, we simply return NULL.
- **
- ** Previously, drawing a pixmap into an unobscured window executed at least
- ** 8 XAlloc()'s, 30 function calls, and hundreds of lines of code.
- **
- ** Now, the same operation requires no XAlloc()'s, no region function calls,
- ** and much less overhead. Nice for drawing lots of small pixmaps.
- */
-
-
-void
-mfbDoBitblt (pSrc, pDst, alu, prgnDst, pptSrc)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
-{
- switch (alu)
- {
- case GXcopy:
- mfbDoBitbltCopy (pSrc, pDst, alu, prgnDst, pptSrc);
- break;
- case GXxor:
- mfbDoBitbltXor (pSrc, pDst, alu, prgnDst, pptSrc);
- break;
- case GXcopyInverted:
- mfbDoBitbltCopyInverted (pSrc, pDst, alu, prgnDst, pptSrc);
- break;
- case GXor:
- mfbDoBitbltOr (pSrc, pDst, alu, prgnDst, pptSrc);
- break;
- default:
- mfbDoBitbltGeneral (pSrc, pDst, alu, prgnDst, pptSrc);
- break;
- }
-}
-
-RegionPtr
-mfbCopyArea(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty)
-register DrawablePtr pSrcDrawable;
-register DrawablePtr pDstDrawable;
-register GC *pGC;
-int srcx, srcy;
-int width, height;
-int dstx, dsty;
-{
- RegionPtr prgnSrcClip = NULL; /* may be a new region, or just a copy */
- Bool freeSrcClip = FALSE;
-
- RegionPtr prgnExposed;
- RegionRec rgnDst;
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- register BoxPtr pbox;
- int i;
- register int dx;
- register int dy;
- xRectangle origSource;
- DDXPointRec origDest;
- int numRects;
- BoxRec fastBox;
- int fastClip = 0; /* for fast clipping with pixmap source */
- int fastExpose = 0; /* for fast exposures with pixmap source */
- void (*localDoBitBlt)(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/);
-
- origSource.x = srcx;
- origSource.y = srcy;
- origSource.width = width;
- origSource.height = height;
- origDest.x = dstx;
- origDest.y = dsty;
-
- if ((pSrcDrawable != pDstDrawable) &&
- pSrcDrawable->pScreen->SourceValidate)
- {
- (*pSrcDrawable->pScreen->SourceValidate) (pSrcDrawable, srcx, srcy, width, height);
- }
-
- switch (pGC->alu) {
- case GXcopy:
- localDoBitBlt = mfbDoBitbltCopy;
- break;
- case GXcopyInverted:
- localDoBitBlt = mfbDoBitbltCopyInverted;
- break;
- case GXxor:
- localDoBitBlt = mfbDoBitbltXor;
- break;
- case GXor:
- localDoBitBlt = mfbDoBitbltOr;
- break;
- default:
- localDoBitBlt = mfbDoBitbltGeneral;
- break;
- }
-
- srcx += pSrcDrawable->x;
- srcy += pSrcDrawable->y;
-
- /* clip the source */
-
- if (pSrcDrawable->type == DRAWABLE_PIXMAP)
- {
- if ((pSrcDrawable == pDstDrawable) &&
- (pGC->clientClipType == CT_NONE))
- {
- prgnSrcClip = pGC->pCompositeClip;
- }
- else
- {
- fastClip = 1;
- }
- }
- else
- {
- if (pGC->subWindowMode == IncludeInferiors)
- {
- if (!((WindowPtr) pSrcDrawable)->parent)
- {
- /*
- * special case bitblt from root window in
- * IncludeInferiors mode; just like from a pixmap
- */
- fastClip = 1;
- }
- else if ((pSrcDrawable == pDstDrawable) &&
- (pGC->clientClipType == CT_NONE))
- {
- prgnSrcClip = pGC->pCompositeClip;
- }
- else
- {
- prgnSrcClip = NotClippedByChildren((WindowPtr)pSrcDrawable);
- freeSrcClip = TRUE;
- }
- }
- else
- {
- prgnSrcClip = &((WindowPtr)pSrcDrawable)->clipList;
- }
- }
-
- fastBox.x1 = srcx;
- fastBox.y1 = srcy;
- fastBox.x2 = srcx + width;
- fastBox.y2 = srcy + height;
-
- /* Don't create a source region if we are doing a fast clip */
- if (fastClip)
- {
- fastExpose = 1;
- /*
- * clip the source; if regions extend beyond the source size,
- * make sure exposure events get sent
- */
- if (fastBox.x1 < pSrcDrawable->x)
- {
- fastBox.x1 = pSrcDrawable->x;
- fastExpose = 0;
- }
- if (fastBox.y1 < pSrcDrawable->y)
- {
- fastBox.y1 = pSrcDrawable->y;
- fastExpose = 0;
- }
- if (fastBox.x2 > pSrcDrawable->x + (int) pSrcDrawable->width)
- {
- fastBox.x2 = pSrcDrawable->x + (int) pSrcDrawable->width;
- fastExpose = 0;
- }
- if (fastBox.y2 > pSrcDrawable->y + (int) pSrcDrawable->height)
- {
- fastBox.y2 = pSrcDrawable->y + (int) pSrcDrawable->height;
- fastExpose = 0;
- }
- }
- else
- {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, prgnSrcClip);
- }
-
- dstx += pDstDrawable->x;
- dsty += pDstDrawable->y;
-
- if (pDstDrawable->type == DRAWABLE_WINDOW)
- {
- if (!((WindowPtr)pDstDrawable)->realized)
- {
- if (!fastClip)
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
- }
-
- dx = srcx - dstx;
- dy = srcy - dsty;
-
- /* Translate and clip the dst to the destination composite clip */
- if (fastClip)
- {
- RegionPtr cclip;
-
- /* Translate the region directly */
- fastBox.x1 -= dx;
- fastBox.x2 -= dx;
- fastBox.y1 -= dy;
- fastBox.y2 -= dy;
-
- /* If the destination composite clip is one rectangle we can
- do the clip directly. Otherwise we have to create a full
- blown region and call intersect */
- cclip = pGC->pCompositeClip;
- if (REGION_NUM_RECTS(cclip) == 1)
- {
- BoxPtr pBox = REGION_RECTS(cclip);
-
- if (fastBox.x1 < pBox->x1) fastBox.x1 = pBox->x1;
- if (fastBox.x2 > pBox->x2) fastBox.x2 = pBox->x2;
- if (fastBox.y1 < pBox->y1) fastBox.y1 = pBox->y1;
- if (fastBox.y2 > pBox->y2) fastBox.y2 = pBox->y2;
-
- /* Check to see if the region is empty */
- if (fastBox.x1 >= fastBox.x2 || fastBox.y1 >= fastBox.y2)
- {
- REGION_NULL(pGC->pScreen, &rgnDst);
- }
- else
- {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- }
- }
- else
- {
- /* We must turn off fastClip now, since we must create
- a full blown region. It is intersected with the
- composite clip below. */
- fastClip = 0;
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- }
- }
- else
- {
- REGION_TRANSLATE(pGC->pScreen, &rgnDst, -dx, -dy);
- }
-
- if (!fastClip)
- {
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, pGC->pCompositeClip);
- }
-
- /* Do bit blitting */
- numRects = REGION_NUM_RECTS(&rgnDst);
- if (numRects && width && height)
- {
- if(!(pptSrc = (DDXPointPtr)ALLOCATE_LOCAL(numRects *
- sizeof(DDXPointRec))))
- {
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
- pbox = REGION_RECTS(&rgnDst);
- ppt = pptSrc;
- for (i = numRects; --i >= 0; pbox++, ppt++)
- {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- if (pGC->planemask & 1)
- (*localDoBitBlt) (pSrcDrawable, pDstDrawable, pGC->alu, &rgnDst, pptSrc);
-
- DEALLOCATE_LOCAL(pptSrc);
- }
-
- prgnExposed = NULL;
- if (pGC->fExpose)
- {
- /* Pixmap sources generate a NoExposed (we return NULL to do this) */
- if (!fastExpose)
- prgnExposed =
- miHandleExposures(pSrcDrawable, pDstDrawable, pGC,
- origSource.x, origSource.y,
- (int)origSource.width,
- (int)origSource.height,
- origDest.x, origDest.y, (unsigned long)0);
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return prgnExposed;
-}
-
-
-/*
- * Devices which use mfb for 1-bit pixmap support
- * must register a function for n-to-1 copy operations
- */
-
-static unsigned long copyPlaneGeneration;
-static int copyPlaneScreenIndex = -1;
-
-Bool
-mfbRegisterCopyPlaneProc (pScreen, proc)
- ScreenPtr pScreen;
- RegionPtr (*proc)(
- DrawablePtr /* pSrcDrawable */,
- DrawablePtr /* pDstDrawable */,
- GCPtr /* pGC */,
- int /* srcx */,
- int /* srcy */,
- int /* width */,
- int /* height */,
- int /* dstx */,
- int /* dsty */,
- unsigned long /* bitPlane */);
-{
- if (copyPlaneGeneration != serverGeneration)
- {
- copyPlaneScreenIndex = AllocateScreenPrivateIndex();
- if (copyPlaneScreenIndex < 0)
- return FALSE;
- copyPlaneGeneration = serverGeneration;
- }
- pScreen->devPrivates[copyPlaneScreenIndex].fptr = proc;
- return TRUE;
-}
-
-/*
- if fg == 1 and bg ==0, we can do an ordinary CopyArea.
- if fg == bg, we can do a CopyArea with alu = mfbReduceRop(alu, fg)
- if fg == 0 and bg == 1, we use the same rasterop, with
- source operand inverted.
-
- CopyArea deals with all of the graphics exposure events.
- This code depends on knowing that we can change the
-alu in the GC without having to call ValidateGC() before calling
-CopyArea().
-
-*/
-
-
-RegionPtr
-mfbCopyPlane(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, plane)
-DrawablePtr pSrcDrawable, pDstDrawable;
-register GC *pGC;
-int srcx, srcy;
-int width, height;
-int dstx, dsty;
-unsigned long plane;
-{
- int alu;
- RegionPtr prgnExposed;
- RegionPtr (*copyPlane)(
- DrawablePtr /* pSrcDrawable */,
- DrawablePtr /* pDstDrawable */,
- GCPtr /* pGC */,
- int /* srcx */,
- int /* srcy */,
- int /* width */,
- int /* height */,
- int /* dstx */,
- int /* dsty */,
- unsigned long /* bitPlane */);
-
-
- if (pSrcDrawable->depth != 1)
- {
- if (copyPlaneScreenIndex >= 0 &&
- (copyPlane =
- pSrcDrawable->pScreen->devPrivates[copyPlaneScreenIndex].fptr)
- )
- {
- return (*copyPlane) (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, plane);
- }
- else
- {
- FatalError ("No copyPlane proc registered for depth %d\n",
- pSrcDrawable->depth);
- }
- }
- if (plane != 1)
- return NULL;
-
- if ((pGC->fgPixel & 1) == 1 && (pGC->bgPixel & 1) == 0)
- {
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty);
- }
- else if ((pGC->fgPixel & 1) == (pGC->bgPixel & 1))
- {
- alu = pGC->alu;
- pGC->alu = mfbReduceRop(pGC->alu, pGC->fgPixel);
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty);
- pGC->alu = alu;
- }
- else /* need to invert the src */
- {
- alu = pGC->alu;
- pGC->alu = InverseAlu[alu];
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty);
- pGC->alu = alu;
- }
- return prgnExposed;
-}
-
diff --git a/nx-X11/programs/Xserver/mfb/mfbblt.c b/nx-X11/programs/Xserver/mfb/mfbblt.c
deleted file mode 100644
index ce77fe22c..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbblt.c
+++ /dev/null
@@ -1,589 +0,0 @@
-/*
- * mfb copy area
- */
-/* $XFree86: xc/programs/Xserver/mfb/mfbblt.c,v 3.3 2001/10/28 03:34:14 tsi Exp $ */
-
-/*
-
-Copyright 1989, 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.
-
-Author: Keith Packard
-
-*/
-/* $Xorg: mfbblt.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mfb.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-#include "fastblt.h"
-#include "mergerop.h"
-
-void
-MROP_NAME(mfbDoBitblt)(pSrc, pDst, alu, prgnDst, pptSrc)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
-{
- PixelType *psrcBase, *pdstBase;
- /* start of src and dst bitmaps */
- int widthSrc, widthDst; /* add to get to same position in next line */
-
- BoxPtr pbox;
- int nbox;
-
- BoxPtr pboxTmp, pboxNext, pboxBase, pboxNew1, pboxNew2;
- /* temporaries for shuffling rectangles */
- DDXPointPtr pptTmp, pptNew1, pptNew2;
- /* shuffling boxes entails shuffling the
- source points too */
- int w, h;
- int xdir; /* 1 = left right, -1 = right left/ */
- int ydir; /* 1 = top down, -1 = bottom up */
-
- PixelType *psrcLine, *pdstLine;
- /* pointers to line with current src and dst */
- register PixelType *psrc;/* pointer to current src longword */
- register PixelType *pdst;/* pointer to current dst longword */
-
- MROP_DECLARE_REG()
-
- /* following used for looping through a line */
- PixelType startmask, endmask; /* masks for writing ends of dst */
- int nlMiddle; /* whole longwords in dst */
- int xoffSrc, xoffDst;
- register int leftShift, rightShift;
- register PixelType bits;
- register PixelType bits1;
- register int nl; /* temp copy of nlMiddle */
- int careful;
-
- MROP_INITIALIZE(alu,0);
-
- mfbGetPixelWidthAndPointer(pSrc, widthSrc, psrcBase);
-
- mfbGetPixelWidthAndPointer(pDst, widthDst, pdstBase);
-
- /* XXX we have to err on the side of safety when both are windows,
- * because we don't know if IncludeInferiors is being used.
- */
- careful = ((pSrc == pDst) ||
- ((pSrc->type == DRAWABLE_WINDOW) &&
- (pDst->type == DRAWABLE_WINDOW)));
-
- pbox = REGION_RECTS(prgnDst);
- nbox = REGION_NUM_RECTS(prgnDst);
-
- pboxNew1 = NULL;
- pptNew1 = NULL;
- pboxNew2 = NULL;
- pptNew2 = NULL;
- if (careful && (pptSrc->y < pbox->y1))
- {
- /* walk source botttom to top */
- ydir = -1;
- widthSrc = -widthSrc;
- widthDst = -widthDst;
-
- if (nbox > 1)
- {
- /* keep ordering in each band, reverse order of bands */
- pboxNew1 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox);
- if(!pboxNew1)
- return;
- pptNew1 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox);
- if(!pptNew1)
- {
- DEALLOCATE_LOCAL(pboxNew1);
- return;
- }
- pboxBase = pboxNext = pbox+nbox-1;
- while (pboxBase >= pbox)
- {
- while ((pboxNext >= pbox) &&
- (pboxBase->y1 == pboxNext->y1))
- pboxNext--;
- pboxTmp = pboxNext+1;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp <= pboxBase)
- {
- *pboxNew1++ = *pboxTmp++;
- *pptNew1++ = *pptTmp++;
- }
- pboxBase = pboxNext;
- }
- pboxNew1 -= nbox;
- pbox = pboxNew1;
- pptNew1 -= nbox;
- pptSrc = pptNew1;
- }
- }
- else
- {
- /* walk source top to bottom */
- ydir = 1;
- }
-
- if (careful && (pptSrc->x < pbox->x1))
- {
- /* walk source right to left */
- xdir = -1;
-
- if (nbox > 1)
- {
- /* reverse order of rects in each band */
- pboxNew2 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox);
- pptNew2 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox);
- if(!pboxNew2 || !pptNew2)
- {
- if (pptNew2) DEALLOCATE_LOCAL(pptNew2);
- if (pboxNew2) DEALLOCATE_LOCAL(pboxNew2);
- if (pboxNew1)
- {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(pboxNew1);
- }
- return;
- }
- pboxBase = pboxNext = pbox;
- while (pboxBase < pbox+nbox)
- {
- while ((pboxNext < pbox+nbox) &&
- (pboxNext->y1 == pboxBase->y1))
- pboxNext++;
- pboxTmp = pboxNext;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp != pboxBase)
- {
- *pboxNew2++ = *--pboxTmp;
- *pptNew2++ = *--pptTmp;
- }
- pboxBase = pboxNext;
- }
- pboxNew2 -= nbox;
- pbox = pboxNew2;
- pptNew2 -= nbox;
- pptSrc = pptNew2;
- }
- }
- else
- {
- /* walk source left to right */
- xdir = 1;
- }
-
- while(nbox--)
- {
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
-
- if (ydir == -1) /* start at last scanline of rectangle */
- {
- psrcLine = mfbScanlineDeltaSrc(psrcBase, -(pptSrc->y+h-1), widthSrc);
- pdstLine = mfbScanlineDeltaDst(pdstBase, -(pbox->y2-1), widthDst);
- }
- else /* start at first scanline */
- {
- psrcLine = mfbScanlineDeltaSrc(psrcBase, pptSrc->y, widthSrc);
- pdstLine = mfbScanlineDeltaDst(pdstBase, pbox->y1, widthDst);
- }
- if ((pbox->x1 & PIM) + w <= PPW)
- {
- maskpartialbits (pbox->x1, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- }
- else
- {
- maskbits(pbox->x1, w, startmask, endmask, nlMiddle);
- }
- if (xdir == 1)
- {
- xoffSrc = pptSrc->x & PIM;
- xoffDst = pbox->x1 & PIM;
- pdstLine += (pbox->x1 >> PWSH);
- psrcLine += (pptSrc->x >> PWSH);
-#ifdef DO_UNALIGNED_BITBLT
- nl = xoffSrc - xoffDst;
- psrcLine = (PixelType *)
- (((unsigned char *) psrcLine) + nl);
-#else
- if (xoffSrc == xoffDst)
-#endif
- {
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- if (startmask)
- {
- *pdst = MROP_MASK(*psrc, *pdst, startmask);
- psrc++;
- pdst++;
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-#define BodyEven(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) *pdst = MROP_SOLID (*psrc, *pdst); pdst++; psrc++;
-#define BodyEven(n) BodyOdd(n)
-
-#define LoopReset ;
-
-#endif
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
-#ifdef NOTDEF
- /* you'd think this would be faster --
- * a single instruction instead of 6
- * but measurements show it to be ~15% slower
- */
- while ((nl -= 6) >= 0)
- {
- asm ("moveml %1+,#0x0c0f;moveml#0x0c0f,%0"
- : "=m" (*(char *)pdst)
- : "m" (*(char *)psrc)
- : "d0", "d1", "d2", "d3",
- "a2", "a3");
- pdst += 6;
- }
- nl += 6;
- while (nl--)
- *pdst++ = *psrc++;
-#endif
- DuffL(nl, label1,
- *pdst = MROP_SOLID (*psrc, *pdst);
- pdst++; psrc++;)
-#endif
-
- if (endmask)
- *pdst = MROP_MASK(*psrc, *pdst, endmask);
- mfbScanlineIncDst(pdstLine, widthDst);
- mfbScanlineIncSrc(psrcLine, widthSrc);
- }
- }
-#ifndef DO_UNALIGNED_BITBLT
- else
- {
- if (xoffSrc > xoffDst)
- {
- leftShift = (xoffSrc - xoffDst);
- rightShift = PPW - leftShift;
- }
- else
- {
- rightShift = (xoffDst - xoffSrc);
- leftShift = PPW - rightShift;
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- bits = 0;
- if (xoffSrc > xoffDst)
- bits = *psrc++;
- if (startmask)
- {
- bits1 = BitLeft(bits,leftShift);
- if (BitLeft(startmask, rightShift)) {
- bits = *psrc++;
- bits1 |= BitRight(bits,rightShift);
- }
- *pdst = MROP_MASK(bits1, *pdst, startmask);
- pdst++;
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
- bits1 = bits;
-
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) \
-bits = psrc[-n]; \
-pdst[-n] = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), pdst[-n]);
-
-#define BodyEven(n) \
-bits1 = psrc[-n]; \
-pdst[-n] = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), pdst[-n]);
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) \
-bits = *psrc++; \
-*pdst = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), *pdst); \
-pdst++;
-
-#define BodyEven(n) \
-bits1 = *psrc++; \
-*pdst = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), *pdst); \
-pdst++;
-
-#define LoopReset ;
-
-#endif /* !FAST_CONSTANT_OFFSET_MODE */
-
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL (nl,label2,
- bits1 = BitLeft(bits, leftShift);
- bits = *psrc++;
- *pdst = MROP_SOLID (bits1 | BitRight(bits, rightShift), *pdst);
- pdst++;
- )
-#endif
-
- if (endmask)
- {
- bits1 = BitLeft(bits, leftShift);
- if (BitLeft(endmask, rightShift))
- {
- bits = *psrc;
- bits1 |= BitRight(bits, rightShift);
- }
- *pdst = MROP_MASK (bits1, *pdst, endmask);
- }
- mfbScanlineIncDst(pdstLine, widthDst);
- mfbScanlineIncSrc(psrcLine, widthSrc);
- }
- }
-#endif /* DO_UNALIGNED_BITBLT */
- }
- else /* xdir == -1 */
- {
- xoffSrc = (pptSrc->x + w - 1) & PIM;
- xoffDst = (pbox->x2 - 1) & PIM;
- pdstLine += ((pbox->x2-1) >> PWSH) + 1;
- psrcLine += ((pptSrc->x+w - 1) >> PWSH) + 1;
-#ifdef DO_UNALIGNED_BITBLT
- nl = xoffSrc - xoffDst;
- psrcLine = (PixelType *)
- (((unsigned char *) psrcLine) + nl);
-#else
- if (xoffSrc == xoffDst)
-#endif
- {
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- if (endmask)
- {
- pdst--;
- psrc--;
- *pdst = MROP_MASK (*psrc, *pdst, endmask);
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
-#ifdef FAST_CONSTANT_OFFSET_MODE
- psrc -= nl & (UNROLL - 1);
- pdst -= nl & (UNROLL - 1);
-
-#define BodyOdd(n) pdst[n-1] = MROP_SOLID (psrc[n-1], pdst[n-1]);
-
-#define BodyEven(n) BodyOdd(n)
-
-#define LoopReset \
-pdst -= UNROLL;\
-psrc -= UNROLL;
-
-#else
-
-#define BodyOdd(n) --pdst; --psrc; *pdst = MROP_SOLID(*psrc, *pdst);
-#define BodyEven(n) BodyOdd(n)
-#define LoopReset ;
-
-#endif
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL(nl,label3,
- --pdst; --psrc; *pdst = MROP_SOLID (*psrc, *pdst);)
-#endif
-
- if (startmask)
- {
- --pdst;
- --psrc;
- *pdst = MROP_MASK(*psrc, *pdst, startmask);
- }
- mfbScanlineIncDst(pdstLine, widthDst);
- mfbScanlineIncSrc(psrcLine, widthSrc);
- }
- }
-#ifndef DO_UNALIGNED_BITBLT
- else
- {
- if (xoffDst > xoffSrc)
- {
- rightShift = (xoffDst - xoffSrc);
- leftShift = PPW - rightShift;
- }
- else
- {
- leftShift = (xoffSrc - xoffDst);
- rightShift = PPW - leftShift;
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- bits = 0;
- if (xoffDst > xoffSrc)
- bits = *--psrc;
- if (endmask)
- {
- bits1 = BitRight(bits, rightShift);
- if (BitRight(endmask, leftShift)) {
- bits = *--psrc;
- bits1 |= BitLeft(bits, leftShift);
- }
- pdst--;
- *pdst = MROP_MASK(bits1, *pdst, endmask);
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
- bits1 = bits;
-#ifdef FAST_CONSTANT_OFFSET_MODE
- psrc -= nl & (UNROLL - 1);
- pdst -= nl & (UNROLL - 1);
-
-#define BodyOdd(n) \
-bits = psrc[n-1]; \
-pdst[n-1] = MROP_SOLID(BitRight(bits1, rightShift) | BitLeft(bits, leftShift),pdst[n-1]);
-
-#define BodyEven(n) \
-bits1 = psrc[n-1]; \
-pdst[n-1] = MROP_SOLID(BitRight(bits, rightShift) | BitLeft(bits1, leftShift),pdst[n-1]);
-
-#define LoopReset \
-pdst -= UNROLL; \
-psrc -= UNROLL;
-
-#else
-
-#define BodyOdd(n) \
-bits = *--psrc; --pdst; \
-*pdst = MROP_SOLID(BitRight(bits1, rightShift) | BitLeft(bits, leftShift),*pdst);
-
-#define BodyEven(n) \
-bits1 = *--psrc; --pdst; \
-*pdst = MROP_SOLID(BitRight(bits, rightShift) | BitLeft(bits1, leftShift),*pdst);
-
-#define LoopReset ;
-
-#endif
-
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL (nl, label4,
- bits1 = BitRight(bits, rightShift);
- bits = *--psrc;
- --pdst;
- *pdst = MROP_SOLID(bits1 | BitLeft(bits, leftShift),*pdst);
- )
-#endif
-
- if (startmask)
- {
- bits1 = BitRight(bits, rightShift);
- if (BitRight (startmask, leftShift))
- {
- bits = *--psrc;
- bits1 |= BitLeft(bits, leftShift);
- }
- --pdst;
- *pdst = MROP_MASK(bits1, *pdst, startmask);
- }
- mfbScanlineIncDst(pdstLine, widthDst);
- mfbScanlineIncSrc(psrcLine, widthSrc);
- }
- }
-#endif
- }
- pbox++;
- pptSrc++;
- }
- if (pboxNew2)
- {
- DEALLOCATE_LOCAL(pptNew2);
- DEALLOCATE_LOCAL(pboxNew2);
- }
- if (pboxNew1)
- {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(pboxNew1);
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbbres.c b/nx-X11/programs/Xserver/mfb/mfbbres.c
deleted file mode 100644
index 07c59d184..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbbres.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/* $XFree86: xc/programs/Xserver/mfb/mfbbres.c,v 1.4 2001/01/17 22:37:02 dawes Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbbres.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "mfb.h"
-#include "maskbits.h"
-#include "miline.h"
-
-/* Solid bresenham line */
-/* NOTES
- e2 is used less often than e1, so it's not in a register
-*/
-
-void
-mfbBresS(rop, addrlbase, nlwidth, signdx, signdy, axis, x1, y1, e, e1, e2, len)
-int rop; /* a reduced rasterop */
-PixelType *addrlbase; /* pointer to base of bitmap */
-int nlwidth; /* width in longwords of bitmap */
-int signdx, signdy; /* signs of directions */
-int axis; /* major axis (Y_AXIS or X_AXIS) */
-int x1, y1; /* initial point */
-register int e; /* error accumulator */
-register int e1; /* bresenham increments */
-int e2;
-int len; /* length of line */
-{
- register int yinc; /* increment to next scanline, in bytes */
- register PixelType *addrl; /* bitmask 32-bit pointer */
- register PixelType bit; /* current bit being set/cleared/etc. */
- PixelType leftbit = mask[0]; /* leftmost bit to process in new word */
- PixelType rightbit = mask[PPW-1]; /* rightmost bit to process in new word */
-
- register int e3 = e2-e1;
- PixelType tmp;
-
- /* point to longword containing first point */
- addrl = mfbScanline(addrlbase, x1, y1, nlwidth);
- yinc = signdy * nlwidth;
- e = e-e1; /* to make looping easier */
- bit = mask[x1 & PIM];
-
- if (!len)
- return;
- if (rop == RROP_BLACK)
- {
- if (axis == X_AXIS)
- {
- if (signdx > 0)
- {
- tmp = *addrl;
- for (;;)
- {
- tmp &= ~bit;
- if (!--len)
- break;
- bit = SCRRIGHT(bit,1);
- e += e1;
- if (e >= 0)
- {
- *addrl = tmp;
- mfbScanlineInc(addrl, yinc);
- e += e3;
- if (!bit)
- {
- bit = leftbit;
- addrl ++;
- }
- tmp = *addrl;
- }
- else if (!bit)
- {
- *addrl = tmp;
- bit = leftbit;
- addrl ++;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- }
- else
- {
- tmp = *addrl;
- for (;;)
- {
- tmp &= ~bit;
- if (!--len)
- break;
- e += e1;
- bit = SCRLEFT(bit,1);
- if (e >= 0)
- {
- *addrl = tmp;
- mfbScanlineInc(addrl, yinc);
- e += e3;
- if (!bit)
- {
- bit = rightbit;
- addrl --;
- }
- tmp = *addrl;
- }
- else if (!bit)
- {
- *addrl = tmp;
- bit = rightbit;
- addrl --;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- }
- } /* if X_AXIS */
- else
- {
- if (signdx > 0)
- {
- while(len--)
- {
- *addrl &= ~bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- }
- }
- else
- {
- while(len--)
- {
- *addrl &= ~bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- }
- else if (rop == RROP_WHITE)
- {
- if (axis == X_AXIS)
- {
- if (signdx > 0)
- {
- tmp = *addrl;
- for (;;)
- {
- tmp |= bit;
- if (!--len)
- break;
- e += e1;
- bit = SCRRIGHT(bit,1);
- if (e >= 0)
- {
- *addrl = tmp;
- mfbScanlineInc(addrl, yinc);
- e += e3;
- if (!bit)
- {
- bit = leftbit;
- addrl ++;
- }
- tmp = *addrl;
- }
- else if (!bit)
- {
- *addrl = tmp;
- bit = leftbit;
- addrl ++;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- }
- else
- {
- tmp = *addrl;
- for (;;)
- {
- tmp |= bit;
- if (!--len)
- break;
- e += e1;
- bit = SCRLEFT(bit,1);
- if (e >= 0)
- {
- *addrl = tmp;
- mfbScanlineInc(addrl, yinc);
- e += e3;
- if (!bit)
- {
- bit = rightbit;
- addrl --;
- }
- tmp = *addrl;
- }
- else if (!bit)
- {
- *addrl = tmp;
- bit = rightbit;
- addrl --;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- }
- } /* if X_AXIS */
- else
- {
- if (signdx > 0)
- {
- while(len--)
- {
- *addrl |= bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- }
- }
- else
- {
- while(len--)
- {
- *addrl |= bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- }
- else if (rop == RROP_INVERT)
- {
- if (axis == X_AXIS)
- {
- if (signdx > 0)
- {
- while(len--)
- {
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- mfbScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- }
- }
- else
- {
- while(len--)
- {
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- mfbScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- }
- }
- } /* if X_AXIS */
- else
- {
- if (signdx > 0)
- {
- while(len--)
- {
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- }
- }
- else
- {
- while(len--)
- {
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit; addrl --; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbbresd.c b/nx-X11/programs/Xserver/mfb/mfbbresd.c
deleted file mode 100644
index 266111e65..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbbresd.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbbresd.c,v 1.4 2001/01/17 22:37:02 dawes Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbbresd.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "mfb.h"
-#include "maskbits.h"
-#include "miline.h"
-
-/* Dashed bresenham line */
-
-#define StepDash\
- if (!--dashRemaining) { \
- if (++ dashIndex == numInDashList) \
- dashIndex = 0; \
- dashRemaining = pDash[dashIndex]; \
- rop = fgrop; \
- if (dashIndex & 1) \
- rop = bgrop; \
- }
-
-void
-mfbBresD(fgrop, bgrop,
- pdashIndex, pDash, numInDashList, pdashOffset, isDoubleDash,
- addrlbase, nlwidth,
- signdx, signdy, axis, x1, y1, e, e1, e2, len)
-int fgrop, bgrop;
-int *pdashIndex; /* current dash */
-unsigned char *pDash; /* dash list */
-int numInDashList; /* total length of dash list */
-int *pdashOffset; /* offset into current dash */
-int isDoubleDash;
-PixelType *addrlbase; /* pointer to base of bitmap */
-int nlwidth; /* width in longwords of bitmap */
-int signdx, signdy; /* signs of directions */
-int axis; /* major axis (Y_AXIS or X_AXIS) */
-int x1, y1; /* initial point */
-register int e; /* error accumulator */
-register int e1; /* bresenham increments */
-int e2;
-int len; /* length of line */
-{
- register int yinc; /* increment to next scanline, in bytes */
- register PixelType *addrl;
- register int e3 = e2-e1;
- register MfbBits bit;
- PixelType leftbit = mask[0]; /* leftmost bit to process in new word */
- PixelType rightbit = mask[PPW-1]; /* rightmost bit to process in new word */
- int dashIndex;
- int dashOffset;
- int dashRemaining;
- int rop;
-
- dashOffset = *pdashOffset;
- dashIndex = *pdashIndex;
- dashRemaining = pDash[dashIndex] - dashOffset;
- rop = fgrop;
- if (!isDoubleDash)
- bgrop = -1;
- if (dashIndex & 1)
- rop = bgrop;
-
- /* point to longword containing first point */
- addrl = mfbScanline(addrlbase, x1, y1, nlwidth);
- yinc = signdy * nlwidth;
- e = e-e1; /* to make looping easier */
- bit = mask[x1 & PIM];
- if (axis == X_AXIS)
- {
- if (signdx > 0)
- {
- while(len--)
- {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- mfbScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- StepDash
- }
- }
- else
- {
- while(len--)
- {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- mfbScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- StepDash
- }
- }
- } /* if X_AXIS */
- else
- {
- if (signdx > 0)
- {
- while(len--)
- {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- StepDash
- }
- }
- else
- {
- while(len--)
- {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- StepDash
- }
- }
- } /* else Y_AXIS */
- *pdashIndex = dashIndex;
- *pdashOffset = pDash[dashIndex] - dashRemaining;
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbbstore.c b/nx-X11/programs/Xserver/mfb/mfbbstore.c
deleted file mode 100644
index 270aa78fd..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbbstore.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/* $Xorg: mfbbstore.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/*
-
-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.
-
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "mfb.h"
-#include <X11/X.h>
-#include "mibstore.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-
-/*-
- *-----------------------------------------------------------------------
- * mfbSaveAreas --
- * Function called by miSaveAreas to actually fetch the areas to be
- * saved into the backing pixmap. This is very simple to do, since
- * mfbDoBitblt is designed for this very thing. The region to save is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the screen
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the screen into the pixmap.
- *
- *-----------------------------------------------------------------------
- */
-void
-mfbSaveAreas(pPixmap, prgnSave, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnSave; /* Region to save (pixmap-relative) */
- int xorg; /* X origin of region */
- int yorg; /* Y origin of region */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int numRects;
-
- numRects = REGION_NUM_RECTS(prgnSave);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(numRects * sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnSave);
- pPt = pPtsInit;
- while (numRects--)
- {
- pPt->x = pBox->x1 + xorg;
- pPt->y = pBox->y1 + yorg;
- pPt++;
- pBox++;
- }
-
- mfbDoBitblt((DrawablePtr)pPixmap->drawable.pScreen->devPrivate,
- (DrawablePtr)pPixmap,
- GXcopy,
- prgnSave,
- pPtsInit);
-
- DEALLOCATE_LOCAL(pPtsInit);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * mfbRestoreAreas --
- * Function called by miRestoreAreas to actually fetch the areas to be
- * restored from the backing pixmap. This is very simple to do, since
- * mfbDoBitblt is designed for this very thing. The region to restore is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the pixmap
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the pixmap into the screen.
- *
- *-----------------------------------------------------------------------
- */
-void
-mfbRestoreAreas(pPixmap, prgnRestore, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnRestore; /* Region to restore (screen-relative)*/
- int xorg; /* X origin of window */
- int yorg; /* Y origin of window */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int numRects;
-
- numRects = REGION_NUM_RECTS(prgnRestore);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(numRects*sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnRestore);
- pPt = pPtsInit;
- while (numRects--)
- {
- pPt->x = pBox->x1 - xorg;
- pPt->y = pBox->y1 - yorg;
- pPt++;
- pBox++;
- }
-
- mfbDoBitblt((DrawablePtr)pPixmap,
- (DrawablePtr)pPixmap->drawable.pScreen->devPrivate,
- GXcopy,
- prgnRestore,
- pPtsInit);
-
- DEALLOCATE_LOCAL(pPtsInit);
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbclip.c b/nx-X11/programs/Xserver/mfb/mfbclip.c
deleted file mode 100644
index 5501f0d5c..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbclip.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbclip.c,v 1.5 2001/12/14 20:00:05 dawes Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbclip.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "regionstr.h"
-#include "gc.h"
-#include "maskbits.h"
-#include "mi.h"
-#include "mfb.h"
-
-#define ADDRECT(reg,r,fr,rx1,ry1,rx2,ry2) \
-if (((rx1) < (rx2)) && ((ry1) < (ry2)) && \
- (!((reg)->data->numRects && \
- ((r-1)->y1 == (ry1)) && \
- ((r-1)->y2 == (ry2)) && \
- ((r-1)->x1 <= (rx1)) && \
- ((r-1)->x2 >= (rx2))))) \
-{ \
- if ((reg)->data->numRects == (reg)->data->size) \
- { \
- miRectAlloc(reg, 1); \
- fr = REGION_BOXPTR(reg); \
- r = fr + (reg)->data->numRects; \
- } \
- r->x1 = (rx1); \
- r->y1 = (ry1); \
- r->x2 = (rx2); \
- r->y2 = (ry2); \
- (reg)->data->numRects++; \
- if(r->x1 < (reg)->extents.x1) \
- (reg)->extents.x1 = r->x1; \
- if(r->x2 > (reg)->extents.x2) \
- (reg)->extents.x2 = r->x2; \
- r++; \
-}
-
-/* Convert bitmap clip mask into clipping region.
- * First, goes through each line and makes boxes by noting the transitions
- * from 0 to 1 and 1 to 0.
- * Then it coalesces the current line with the previous if they have boxes
- * at the same X coordinates.
- */
-RegionPtr
-mfbPixmapToRegion(pPix)
- PixmapPtr pPix;
-{
- register RegionPtr pReg;
- register PixelType *pw, w;
- register int ib;
- int width, h, base, rx1 = 0, crects;
- PixelType *pwLineEnd;
- int irectPrevStart, irectLineStart;
- register BoxPtr prectO, prectN;
- BoxPtr FirstRect, rects, prectLineStart;
- Bool fInBox, fSame;
- register PixelType mask0 = mask[0];
- PixelType *pwLine;
- int nWidth;
-
- pReg = REGION_CREATE(pPix->drawable.pScreen, NULL, 1);
- if(!pReg)
- return NullRegion;
- FirstRect = REGION_BOXPTR(pReg);
- rects = FirstRect;
-
- pwLine = (PixelType *) pPix->devPrivate.ptr;
- nWidth = pPix->devKind / PGSZB;
-
- width = pPix->drawable.width;
- pReg->extents.x1 = width - 1;
- pReg->extents.x2 = 0;
- irectPrevStart = -1;
- for(h = 0; h < pPix->drawable.height; h++)
- {
- pw = pwLine;
- pwLine += nWidth;
- irectLineStart = rects - FirstRect;
- /* If the Screen left most bit of the word is set, we're starting in
- * a box */
- if(*pw & mask0)
- {
- fInBox = TRUE;
- rx1 = 0;
- }
- else
- fInBox = FALSE;
- /* Process all words which are fully in the pixmap */
- pwLineEnd = pw + (width >> PWSH);
- for (base = 0; pw < pwLineEnd; base += PPW)
- {
- w = *pw++;
- if (fInBox)
- {
- if (!~w)
- continue;
- }
- else
- {
- if (!w)
- continue;
- }
- for(ib = 0; ib < PPW; ib++)
- {
- /* If the Screen left most bit of the word is set, we're
- * starting a box */
- if(w & mask0)
- {
- if(!fInBox)
- {
- rx1 = base + ib;
- /* start new box */
- fInBox = TRUE;
- }
- }
- else
- {
- if(fInBox)
- {
- /* end box */
- ADDRECT(pReg, rects, FirstRect,
- rx1, h, base + ib, h + 1);
- fInBox = FALSE;
- }
- }
- /* Shift the word VISUALLY left one. */
- w = SCRLEFT(w, 1);
- }
- }
- if(width & PIM)
- {
- /* Process final partial word on line */
- w = *pw++;
- for(ib = 0; ib < (width & PIM); ib++)
- {
- /* If the Screen left most bit of the word is set, we're
- * starting a box */
- if(w & mask0)
- {
- if(!fInBox)
- {
- rx1 = base + ib;
- /* start new box */
- fInBox = TRUE;
- }
- }
- else
- {
- if(fInBox)
- {
- /* end box */
- ADDRECT(pReg, rects, FirstRect,
- rx1, h, base + ib, h + 1);
- fInBox = FALSE;
- }
- }
- /* Shift the word VISUALLY left one. */
- w = SCRLEFT(w, 1);
- }
- }
- /* If scanline ended with last bit set, end the box */
- if(fInBox)
- {
- ADDRECT(pReg, rects, FirstRect,
- rx1, h, base + (width & PIM), h + 1);
- }
- /* if all rectangles on this line have the same x-coords as
- * those on the previous line, then add 1 to all the previous y2s and
- * throw away all the rectangles from this line
- */
- fSame = FALSE;
- if(irectPrevStart != -1)
- {
- crects = irectLineStart - irectPrevStart;
- if(crects == ((rects - FirstRect) - irectLineStart))
- {
- prectO = FirstRect + irectPrevStart;
- prectN = prectLineStart = FirstRect + irectLineStart;
- fSame = TRUE;
- while(prectO < prectLineStart)
- {
- if((prectO->x1 != prectN->x1) || (prectO->x2 != prectN->x2))
- {
- fSame = FALSE;
- break;
- }
- prectO++;
- prectN++;
- }
- if (fSame)
- {
- prectO = FirstRect + irectPrevStart;
- while(prectO < prectLineStart)
- {
- prectO->y2 += 1;
- prectO++;
- }
- rects -= crects;
- pReg->data->numRects -= crects;
- }
- }
- }
- if(!fSame)
- irectPrevStart = irectLineStart;
- }
- if (!pReg->data->numRects)
- pReg->extents.x1 = pReg->extents.x2 = 0;
- else
- {
- pReg->extents.y1 = REGION_BOXPTR(pReg)->y1;
- pReg->extents.y2 = REGION_END(pReg)->y2;
- if (pReg->data->numRects == 1)
- {
- xfree(pReg->data);
- pReg->data = (RegDataPtr)NULL;
- }
- }
-#ifdef DEBUG
- if (!miValidRegion(pReg))
- FatalError("Assertion failed file %s, line %d: expr\n", __FILE__, __LINE__);
-#endif
- return(pReg);
-}
-
-mfbPixmapToRegionProc *
-mfbPixmapToRegionWeak(void)
-{
- return mfbPixmapToRegion;
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbcmap.c b/nx-X11/programs/Xserver/mfb/mfbcmap.c
deleted file mode 100644
index a16964e15..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbcmap.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbcmap.c,v 1.7tsi Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbcmap.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "colormapst.h"
-#include "resource.h"
-#include "micmap.h"
-#include "mfb.h"
-
-/* A monochrome frame buffer is a static gray colormap with two entries.
- * We have a "required list" of length 1. Because we can only support 1
- * colormap, we never have to change it, but we may have to change the
- * name we call it. If someone installs a new colormap, we know it must
- * look just like the old one (because we've checked in dispatch that it was
- * a valid colormap identifier, and all the colormap IDs for this device
- * look the same). Nevertheless, we still have to uninstall the old colormap
- * and install the new one. Similarly, if someone uninstalls a colormap,
- * we have to install the default map, even though we know those two looked
- * alike.
- * The required list concept is pretty much irrelevant when you can only
- * have one map installed at a time.
- */
-
-int
-mfbListInstalledColormaps(pScreen, pmaps)
- ScreenPtr pScreen;
- Colormap *pmaps;
-{
- return miListInstalledColormaps(pScreen, pmaps);
-}
-
-
-void
-mfbInstallColormap(pmap)
- ColormapPtr pmap;
-{
- miInstallColormap(pmap);
-}
-
-void
-mfbUninstallColormap(pmap)
- ColormapPtr pmap;
-{
- miUninstallColormap(pmap);
-}
-
-/*ARGSUSED*/
-void
-mfbResolveColor (pred, pgreen, pblue, pVisual)
- unsigned short *pred;
- unsigned short *pgreen;
- unsigned short *pblue;
- VisualPtr pVisual;
-{
- /*
- * Gets intensity from RGB. If intensity is >= half, pick white, else
- * pick black. This may well be more trouble than it's worth.
- */
- *pred = *pgreen = *pblue =
- (((30L * *pred +
- 59L * *pgreen +
- 11L * *pblue) >> 8) >= (((1<<8)-1)*50)) ? ~0 : 0;
-}
-
-Bool
-mfbCreateColormap(pMap)
- ColormapPtr pMap;
-{
- ScreenPtr pScreen;
- unsigned short red0, green0, blue0;
- unsigned short red1, green1, blue1;
- Pixel pix;
-
- pScreen = pMap->pScreen;
- if (pScreen->whitePixel == 0)
- {
- red0 = green0 = blue0 = ~0;
- red1 = green1 = blue1 = 0;
- }
- else
- {
- red0 = green0 = blue0 = 0;
- red1 = green1 = blue1 = ~0;
- }
-
- /* this is a monochrome colormap, it only has two entries, just fill
- * them in by hand. If it were a more complex static map, it would be
- * worth writing a for loop or three to initialize it */
-
- /* this will be pixel 0 */
- pix = 0;
- if (AllocColor(pMap, &red0, &green0, &blue0, &pix, 0) != Success)
- return FALSE;
-
- /* this will be pixel 1 */
- if (AllocColor(pMap, &red1, &green1, &blue1, &pix, 0) != Success)
- return FALSE;
- return TRUE;
-}
-
-/*ARGSUSED*/
-void
-mfbDestroyColormap (pMap)
- ColormapPtr pMap;
-{
- return;
-}
-
-Bool
-mfbCreateDefColormap (pScreen)
- ScreenPtr pScreen;
-{
- return miCreateDefColormap(pScreen);
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbfillarc.c b/nx-X11/programs/Xserver/mfb/mfbfillarc.c
deleted file mode 100644
index a5442896f..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbfillarc.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbfillarc.c,v 1.5 2001/12/14 20:00:06 dawes Exp $ */
-/************************************************************
-
-Copyright 1989, 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.
-
-********************************************************/
-
-/* $Xorg: mfbfillarc.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "mfb.h"
-#include "maskbits.h"
-#include "mifillarc.h"
-#include "mi.h"
-
-static void
-mfbFillEllipseSolid(
- DrawablePtr pDraw,
- xArc *arc,
- register int rop)
-{
- int x, y, e;
- int yk, xk, ym, xm, dx, dy, xorg, yorg;
- register int slw;
- miFillArcRec info;
- PixelType *addrlt, *addrlb;
- register PixelType *addrl;
- register int n;
- int nlwidth;
- register int xpos;
- PixelType startmask, endmask;
- int nlmiddle;
-
- mfbGetPixelWidthAndPointer(pDraw, nlwidth, addrlt);
- miFillArcSetup(arc, &info);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrlb = addrlt;
- addrlt += nlwidth * (yorg - y);
- addrlb += nlwidth * (yorg + y + dy);
- while (y)
- {
- addrlt += nlwidth;
- addrlb -= nlwidth;
- MIFILLARCSTEP(slw);
- if (!slw)
- continue;
- xpos = xorg - x;
- addrl = mfbScanlineOffset(addrlt, (xpos >> PWSH));
- if (((xpos & PIM) + slw) < PPW)
- {
- maskpartialbits(xpos, slw, startmask);
- if (rop == RROP_BLACK)
- *addrl &= ~startmask;
- else if (rop == RROP_WHITE)
- *addrl |= startmask;
- else
- *addrl ^= startmask;
- if (miFillArcLower(slw))
- {
- addrl = mfbScanlineOffset(addrlb, (xpos >> PWSH));
- if (rop == RROP_BLACK)
- *addrl &= ~startmask;
- else if (rop == RROP_WHITE)
- *addrl |= startmask;
- else
- *addrl ^= startmask;
- }
- continue;
- }
- maskbits(xpos, slw, startmask, endmask, nlmiddle);
- if (startmask)
- {
- if (rop == RROP_BLACK)
- *addrl++ &= ~startmask;
- else if (rop == RROP_WHITE)
- *addrl++ |= startmask;
- else
- *addrl++ ^= startmask;
- }
- n = nlmiddle;
- if (rop == RROP_BLACK)
- while (n--)
- *addrl++ = 0;
- else if (rop == RROP_WHITE)
- while (n--)
- *addrl++ = ~0;
- else
- while (n--)
- *addrl++ ^= ~0;
- if (endmask)
- {
- if (rop == RROP_BLACK)
- *addrl &= ~endmask;
- else if (rop == RROP_WHITE)
- *addrl |= endmask;
- else
- *addrl ^= endmask;
- }
- if (!miFillArcLower(slw))
- continue;
- addrl = mfbScanlineOffset(addrlb, (xpos >> PWSH));
- if (startmask)
- {
- if (rop == RROP_BLACK)
- *addrl++ &= ~startmask;
- else if (rop == RROP_WHITE)
- *addrl++ |= startmask;
- else
- *addrl++ ^= startmask;
- }
- n = nlmiddle;
- if (rop == RROP_BLACK)
- while (n--)
- *addrl++ = 0;
- else if (rop == RROP_WHITE)
- while (n--)
- *addrl++ = ~0;
- else
- while (n--)
- *addrl++ ^= ~0;
- if (endmask)
- {
- if (rop == RROP_BLACK)
- *addrl &= ~endmask;
- else if (rop == RROP_WHITE)
- *addrl |= endmask;
- else
- *addrl ^= endmask;
- }
- }
-}
-
-#define FILLSPAN(xl,xr,addr) \
- if (xr >= xl) \
- { \
- width = xr - xl + 1; \
- addrl = mfbScanlineOffset(addr, (xl >> PWSH)); \
- if (((xl & PIM) + width) < PPW) \
- { \
- maskpartialbits(xl, width, startmask); \
- if (rop == RROP_BLACK) \
- *addrl &= ~startmask; \
- else if (rop == RROP_WHITE) \
- *addrl |= startmask; \
- else \
- *addrl ^= startmask; \
- } \
- else \
- { \
- maskbits(xl, width, startmask, endmask, nlmiddle); \
- if (startmask) \
- { \
- if (rop == RROP_BLACK) \
- *addrl++ &= ~startmask; \
- else if (rop == RROP_WHITE) \
- *addrl++ |= startmask; \
- else \
- *addrl++ ^= startmask; \
- } \
- n = nlmiddle; \
- if (rop == RROP_BLACK) \
- while (n--) \
- *addrl++ = 0; \
- else if (rop == RROP_WHITE) \
- while (n--) \
- *addrl++ = ~0; \
- else \
- while (n--) \
- *addrl++ ^= ~0; \
- if (endmask) \
- { \
- if (rop == RROP_BLACK) \
- *addrl &= ~endmask; \
- else if (rop == RROP_WHITE) \
- *addrl |= endmask; \
- else \
- *addrl ^= endmask; \
- } \
- } \
- }
-
-#define FILLSLICESPANS(flip,addr) \
- if (!flip) \
- { \
- FILLSPAN(xl, xr, addr); \
- } \
- else \
- { \
- xc = xorg - x; \
- FILLSPAN(xc, xr, addr); \
- xc += slw - 1; \
- FILLSPAN(xl, xc, addr); \
- }
-
-static void
-mfbFillArcSliceSolidCopy(
- DrawablePtr pDraw,
- GCPtr pGC,
- xArc *arc,
- register int rop)
-{
- register PixelType *addrl;
- register int n;
- int yk, xk, ym, xm, dx, dy, xorg, yorg, slw;
- register int x, y, e;
- miFillArcRec info;
- miArcSliceRec slice;
- int xl, xr, xc;
- PixelType *addrlt, *addrlb;
- int nlwidth;
- int width;
- PixelType startmask, endmask;
- int nlmiddle;
-
- mfbGetPixelWidthAndPointer(pDraw, nlwidth, addrlt);
- miFillArcSetup(arc, &info);
- miFillArcSliceSetup(arc, &slice, pGC);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrlb = addrlt;
- addrlt = mfbScanlineDeltaNoBankSwitch(addrlt, yorg - y, nlwidth);
- addrlb = mfbScanlineDeltaNoBankSwitch(addrlb, yorg + y + dy, nlwidth);
- slice.edge1.x += pDraw->x;
- slice.edge2.x += pDraw->x;
- while (y > 0)
- {
- mfbScanlineIncNoBankSwitch(addrlt, nlwidth);
- mfbScanlineIncNoBankSwitch(addrlb, -nlwidth);
- MIFILLARCSTEP(slw);
- MIARCSLICESTEP(slice.edge1);
- MIARCSLICESTEP(slice.edge2);
- if (miFillSliceUpper(slice))
- {
- MIARCSLICEUPPER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_top, addrlt);
- }
- if (miFillSliceLower(slice))
- {
- MIARCSLICELOWER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_bot, addrlb);
- }
- }
-}
-
-void
-mfbPolyFillArcSolid(pDraw, pGC, narcs, parcs)
- register DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- mfbPrivGC *priv;
- register xArc *arc;
- register int i;
- BoxRec box;
- int x2, y2;
- RegionPtr cclip;
- int rop;
-
- priv = (mfbPrivGC *) pGC->devPrivates[mfbGCPrivateIndex].ptr;
- rop = priv->rop;
- if ((rop == RROP_NOP) || !(pGC->planemask & 1))
- return;
- cclip = pGC->pCompositeClip;
- for (arc = parcs, i = narcs; --i >= 0; arc++)
- {
- if (miFillArcEmpty(arc))
- continue;
- if (miCanFillArc(arc))
- {
- box.x1 = arc->x + pDraw->x;
- box.y1 = arc->y + pDraw->y;
- /*
- * Because box.x2 and box.y2 get truncated to 16 bits, and the
- * RECT_IN_REGION test treats the resulting number as a signed
- * integer, the RECT_IN_REGION test alone can go the wrong way.
- * This can result in a server crash because the rendering
- * routines in this file deal directly with cpu addresses
- * of pixels to be stored, and do not clip or otherwise check
- * that all such addresses are within their respective pixmaps.
- * So we only allow the RECT_IN_REGION test to be used for
- * values that can be expressed correctly in a signed short.
- */
- x2 = box.x1 + (int)arc->width + 1;
- box.x2 = x2;
- y2 = box.y1 + (int)arc->height + 1;
- box.y2 = y2;
- if ( (x2 <= MAXSHORT) && (y2 <= MAXSHORT) &&
- (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) )
- {
- if ((arc->angle2 >= FULLCIRCLE) ||
- (arc->angle2 <= -FULLCIRCLE))
- mfbFillEllipseSolid(pDraw, arc, rop);
- else
- mfbFillArcSliceSolidCopy(pDraw, pGC, arc, rop);
- continue;
- }
- }
- miPolyFillArc(pDraw, pGC, 1, arc);
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbfillrct.c b/nx-X11/programs/Xserver/mfb/mfbfillrct.c
deleted file mode 100644
index ba8a14283..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbfillrct.c
+++ /dev/null
@@ -1,228 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbfillrct.c,v 1.5tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbfillrct.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "pixmapstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "miscstruct.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-#define MODEQ(a, b) ((a) %= (b))
-
-/*
- filled rectangles.
- translate the rectangles, clip them, and call the
-helper function in the GC.
-*/
-
-#define NUM_STACK_RECTS 1024
-
-void
-mfbPolyFillRect(pDrawable, pGC, nrectFill, prectInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nrectFill; /* number of rectangles to fill */
- xRectangle *prectInit; /* Pointer to first rectangle to fill */
-{
- xRectangle *prect;
- RegionPtr prgnClip;
- register BoxPtr pbox;
- register BoxPtr pboxClipped;
- BoxPtr pboxClippedBase;
- BoxPtr pextent;
- BoxRec stackRects[NUM_STACK_RECTS];
- int numRects;
- int n;
- int xorg, yorg;
- mfbPrivGC *priv;
- int alu;
- mfbFillAreaProcPtr pfn;
- PixmapPtr ppix;
-
- if (!(pGC->planemask & 1))
- return;
-
- priv = (mfbPrivGC *) pGC->devPrivates[mfbGCPrivateIndex].ptr;
- alu = priv->ropFillArea;
- pfn = priv->FillArea;
- ppix = pGC->pRotatedPixmap;
- prgnClip = pGC->pCompositeClip;
-
- prect = prectInit;
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- if (xorg || yorg)
- {
- prect = prectInit;
- n = nrectFill;
- Duff (n, prect->x += xorg; prect->y += yorg; prect++);
- }
-
-
- prect = prectInit;
-
- numRects = REGION_NUM_RECTS(prgnClip) * nrectFill;
- if (numRects > NUM_STACK_RECTS)
- {
- pboxClippedBase = (BoxPtr)ALLOCATE_LOCAL(numRects * sizeof(BoxRec));
- if (!pboxClippedBase)
- return;
- }
- else
- pboxClippedBase = stackRects;
-
- pboxClipped = pboxClippedBase;
-
- if (REGION_NUM_RECTS(prgnClip) == 1)
- {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_RECTS(prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--)
- {
- if ((pboxClipped->x1 = prect->x) < x1)
- pboxClipped->x1 = x1;
-
- if ((pboxClipped->y1 = prect->y) < y1)
- pboxClipped->y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- pboxClipped->x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- pboxClipped->y2 = by2;
-
- prect++;
- if ((pboxClipped->x1 < pboxClipped->x2) &&
- (pboxClipped->y1 < pboxClipped->y2))
- {
- pboxClipped++;
- }
- }
- }
- else
- {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_EXTENTS(pGC->pScreen, prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--)
- {
- BoxRec box;
-
- if ((box.x1 = prect->x) < x1)
- box.x1 = x1;
-
- if ((box.y1 = prect->y) < y1)
- box.y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- box.x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- box.y2 = by2;
-
- prect++;
-
- if ((box.x1 >= box.x2) || (box.y1 >= box.y2))
- continue;
-
- n = REGION_NUM_RECTS (prgnClip);
- pbox = REGION_RECTS(prgnClip);
-
- /* clip the rectangle to each box in the clip region
- this is logically equivalent to calling Intersect()
- */
- while(n--)
- {
- pboxClipped->x1 = max(box.x1, pbox->x1);
- pboxClipped->y1 = max(box.y1, pbox->y1);
- pboxClipped->x2 = min(box.x2, pbox->x2);
- pboxClipped->y2 = min(box.y2, pbox->y2);
- pbox++;
-
- /* see if clipping left anything */
- if(pboxClipped->x1 < pboxClipped->x2 &&
- pboxClipped->y1 < pboxClipped->y2)
- {
- pboxClipped++;
- }
- }
- }
- }
- if (pboxClipped != pboxClippedBase)
- (*pfn) (pDrawable,pboxClipped-pboxClippedBase, pboxClippedBase, alu, ppix);
- if (pboxClippedBase != stackRects)
- DEALLOCATE_LOCAL(pboxClippedBase);
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbfillsp.c b/nx-X11/programs/Xserver/mfb/mfbfillsp.c
deleted file mode 100644
index f75ccb18d..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbfillsp.c
+++ /dev/null
@@ -1,1028 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbfillsp.c,v 1.8 2001/01/17 22:37:02 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbfillsp.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "mfb.h"
-#include "maskbits.h"
-
-#include "mergerop.h"
-
-#include "servermd.h"
-#include "mi.h"
-#include "mispans.h"
-
-/* scanline filling for monochrome frame buffer
- written by drewry, oct 1986
-
- these routines all clip. they assume that anything that has called
-them has already translated the points (i.e. pGC->miTranslate is
-non-zero, which is howit gets set in mfbCreateGC().)
-
- the number of new scnalines created by clipping ==
-MaxRectsPerBand * nSpans.
-
- FillSolid is overloaded to be used for OpaqueStipple as well,
-if fgPixel == bgPixel.
-
-
- FillTiled is overloaded to be used for OpaqueStipple, if
-fgPixel != bgPixel. based on the fill style, it uses
-{RotatedPixmap, gc.alu} or {RotatedPixmap, PrivGC.ropOpStip}
-*/
-
-
-void
-mfbBlackSolidFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl;/* pointer to current longword in bitmap */
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- while (n--)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
-
- if (*pwidth)
- {
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- /* all bits inside same longword */
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl &= ~startmask;
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ &= ~startmask;
- Duff (nlmiddle, *addrl++ = 0x0);
- if (endmask)
- *addrl &= ~endmask;
- }
- }
- pwidth++;
- ppt++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-
-
-void
-mfbWhiteSolidFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl;/* pointer to current longword in bitmap */
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- while (n--)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
-
- if (*pwidth)
- {
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- /* all bits inside same longword */
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl |= startmask;
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ |= startmask;
- Duff (nlmiddle, *addrl++ = ~0);
- if (endmask)
- *addrl |= endmask;
- }
- }
- pwidth++;
- ppt++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-
-
-void
-mfbInvertSolidFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl;/* pointer to current longword in bitmap */
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- while (n--)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
-
- if (*pwidth)
- {
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- /* all bits inside same longword */
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl ^= startmask;
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ ^= startmask;
- Duff (nlmiddle, *addrl++ ^= ~0);
- if (endmask)
- *addrl ^= endmask;
- }
- }
- pwidth++;
- ppt++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-
-void
-mfbWhiteStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl;/* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pStipple;
- PixelType *psrc;
- int tileHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- pStipple = pGC->pRotatedPixmap;
- tileHeight = pStipple->drawable.height;
- psrc = (PixelType *)(pStipple->devPrivate.ptr);
-
- while (n--)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- src = psrc[ppt->y % tileHeight];
-
- /* all bits inside same longword */
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl |= (src & startmask);
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ |= (src & startmask);
- Duff (nlmiddle, *addrl++ |= src);
- if (endmask)
- *addrl |= (src & endmask);
- }
- pwidth++;
- ppt++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-
-void
-mfbBlackStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl; /* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pStipple;
- PixelType *psrc;
- int tileHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- pStipple = pGC->pRotatedPixmap;
- tileHeight = pStipple->drawable.height;
- psrc = (PixelType *)(pStipple->devPrivate.ptr);
-
- while (n--)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- src = psrc[ppt->y % tileHeight];
-
- /* all bits inside same longword */
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl &= ~(src & startmask);
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ &= ~(src & startmask);
- Duff (nlmiddle, *addrl++ &= ~src);
- if (endmask)
- *addrl &= ~(src & endmask);
- }
- pwidth++;
- ppt++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-
-void
-mfbInvertStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl; /* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pStipple;
- PixelType *psrc;
- int tileHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- pStipple = pGC->pRotatedPixmap;
- tileHeight = pStipple->drawable.height;
- psrc = (PixelType *)(pStipple->devPrivate.ptr);
-
- while (n--)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- src = psrc[ppt->y % tileHeight];
-
- /* all bits inside same longword */
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl ^= (src & startmask);
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ ^= (src & startmask);
- Duff(nlmiddle, *addrl++ ^= src);
- if (endmask)
- *addrl ^= (src & endmask);
- }
- pwidth++;
- ppt++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-
-/* this works with tiles of width == PPW */
-#define FILLSPANPPW(ROP) \
- while (n--) \
- { \
- if (*pwidth) \
- { \
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); \
- src = psrc[ppt->y % tileHeight]; \
- if ( ((ppt->x & PIM) + *pwidth) < PPW) \
- { \
- maskpartialbits(ppt->x, *pwidth, startmask); \
- *addrl = (*addrl & ~startmask) | \
- (ROP(src, *addrl) & startmask); \
- } \
- else \
- { \
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle); \
- if (startmask) \
- { \
- *addrl = (*addrl & ~startmask) | \
- (ROP(src, *addrl) & startmask); \
- addrl++; \
- } \
- while (nlmiddle--) \
- { \
- *addrl = ROP(src, *addrl); \
- addrl++; \
- } \
- if (endmask) \
- *addrl = (*addrl & ~endmask) | \
- (ROP(src, *addrl) & endmask); \
- } \
- } \
- pwidth++; \
- ppt++; \
- }
-
-
-
-void
-mfbTileFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl; /* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pTile;
- PixelType *psrc;
- int tileHeight;
- int rop;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- MfbBits flip;
-
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- pTile = pGC->pRotatedPixmap;
- tileHeight = pTile->drawable.height;
- psrc = (PixelType *)(pTile->devPrivate.ptr);
- if (pGC->fillStyle == FillTiled)
- rop = pGC->alu;
- else
- rop = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->ropOpStip;
-
- flip = 0;
- switch(rop)
- {
- case GXcopyInverted: /* for opaque stipples */
- flip = ~0;
- case GXcopy:
- {
-
-#define DoMaskCopyRop(src,dst,mask) (((dst) & ~(mask)) | ((src) & (mask)))
-
- while (n--)
- {
- if (*pwidth)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- src = psrc[ppt->y % tileHeight] ^ flip;
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl = DoMaskCopyRop (src, *addrl, startmask);
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- {
- *addrl = DoMaskCopyRop (src, *addrl, startmask);
- addrl++;
- }
- while (nlmiddle--)
- {
- *addrl = src;
- addrl++;
- }
- if (endmask)
- *addrl = DoMaskCopyRop (src, *addrl, endmask);
- }
- }
- pwidth++;
- ppt++;
- }
- }
- break;
- default:
- {
- register DeclareMergeRop ();
-
- InitializeMergeRop(rop,~0);
- while (n--)
- {
- if (*pwidth)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- src = psrc[ppt->y % tileHeight];
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl = DoMaskMergeRop (src, *addrl, startmask);
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- {
- *addrl = DoMaskMergeRop (src, *addrl, startmask);
- addrl++;
- }
- while (nlmiddle--)
- {
- *addrl = DoMergeRop (src, *addrl);
- addrl++;
- }
- if (endmask)
- *addrl = DoMaskMergeRop (src, *addrl, endmask);
- }
- }
- pwidth++;
- ppt++;
- }
- }
- break;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-
-/* Fill spans with tiles that aren't PPW bits wide */
-void
-mfbUnnaturalTileFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- int iline; /* first line of tile to use */
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *pdst;/* pointer to current word in bitmap */
- register PixelType *psrc;/* pointer to current word in tile */
- register int nlMiddle;
- register int rop, nstart;
- PixelType startmask;
- PixmapPtr pTile; /* pointer to tile we want to fill with */
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- PixelType endmask, *psrcT;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- if (pGC->fillStyle == FillTiled)
- {
- pTile = pGC->tile.pixmap;
- tlwidth = pTile->devKind / PGSZB;
- rop = pGC->alu;
- }
- else
- {
- pTile = pGC->stipple;
- tlwidth = pTile->devKind / PGSZB;
- rop = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->ropOpStip;
- }
-
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
-
- /* this replaces rotating the tile. Instead we just adjust the offset
- * at which we start grabbing bits from the tile.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and rem always stay within the tile bounds.
- */
- xSrc += (pGC->patOrg.x % tileWidth) - tileWidth;
- ySrc += (pGC->patOrg.y % tileHeight) - tileHeight;
-
- while (n--)
- {
- iline = (ppt->y - ySrc) % tileHeight;
- pdst = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- x = ppt->x;
-
- if (*pwidth)
- {
- width = *pwidth;
- while(width > 0)
- {
- psrc = psrcT;
- w = min(tileWidth, width);
- if((rem = (x - xSrc) % tileWidth) != 0)
- {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
- getandputrop((psrc+endinc), (rem&PIM), (x & PIM), w, pdst, rop);
- if((x & PIM) + w >= PPW)
- pdst++;
- }
- else if(((x & PIM) + w) < PPW)
- {
- /* doing < PPW bits is easy, and worth special-casing */
- putbitsrop(*psrc, x & PIM, w, pdst, rop);
- }
- else
- {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if(startmask)
- {
- putbitsrop(*psrc, (x & PIM), nstart, pdst, rop);
- pdst++;
-#if defined(__alpha__) || defined(__alpha)
- /*
- * XXX workaround an egcs 1.1.2 code generation
- * bug. This version might actually be faster.
- */
- psrc += srcStartOver;
-#else
- if(srcStartOver)
- psrc++;
-#endif
- }
-
- while(nlMiddle--)
- {
- getandputrop0(psrc, nstart, PPW, pdst, rop);
- pdst++;
- psrc++;
- }
- if(endmask)
- {
- getandputrop0(psrc, nstart, nend, pdst, rop);
- }
- }
- x += w;
- width -= w;
- }
- }
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-
-/* Fill spans with stipples that aren't PPW bits wide */
-void
-mfbUnnaturalStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- int iline; /* first line of tile to use */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *pdst; /* pointer to current word in bitmap */
- register PixelType *psrc; /* pointer to current word in tile */
- register int nlMiddle;
- register int rop, nstart;
- PixelType startmask;
- PixmapPtr pTile; /* pointer to tile we want to fill with */
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- PixelType endmask, *psrcT;
- int tlwidth, rem, tileWidth, endinc;
- int tileHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- pTile = pGC->stipple;
- rop = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->rop;
- tlwidth = pTile->devKind / PGSZB;
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
-
- /* this replaces rotating the stipple. Instead, we just adjust the offset
- * at which we start grabbing bits from the stipple.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and rem always stay within the tile bounds.
- */
- xSrc += (pGC->patOrg.x % tileWidth) - tileWidth;
- ySrc += (pGC->patOrg.y % tileHeight) - tileHeight;
- while (n--)
- {
- iline = (ppt->y - ySrc) % tileHeight;
- pdst = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- x = ppt->x;
-
- if (*pwidth)
- {
- width = *pwidth;
- while(width > 0)
- {
- psrc = psrcT;
- w = min(tileWidth, width);
- if((rem = (x - xSrc) % tileWidth) != 0)
- {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
- getandputrrop((psrc + endinc), (rem & PIM), (x & PIM),
- w, pdst, rop)
- if((x & PIM) + w >= PPW)
- pdst++;
- }
-
- else if(((x & PIM) + w) < PPW)
- {
- /* doing < PPW bits is easy, and worth special-casing */
- putbitsrrop(*psrc, x & PIM, w, pdst, rop);
- }
- else
- {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if(startmask)
- {
- putbitsrrop(*psrc, (x & PIM), nstart, pdst, rop);
- pdst++;
- if(srcStartOver)
- psrc++;
- }
-
- while(nlMiddle--)
- {
- getandputrrop0(psrc, nstart, PPW, pdst, rop);
- pdst++;
- psrc++;
- }
- if(endmask)
- {
- getandputrrop0(psrc, nstart, nend, pdst, rop);
- }
- }
- x += w;
- width -= w;
- }
- }
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbfont.c b/nx-X11/programs/Xserver/mfb/mfbfont.c
deleted file mode 100644
index 3798cd22b..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbfont.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-*/
-/* $Xorg: mfbfont.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "scrnintstr.h"
-
-/*ARGSUSED*/
-Bool
-mfbRealizeFont( pscr, pFont)
- ScreenPtr pscr;
- FontPtr pFont;
-{
- return (TRUE);
-}
-
-mfbRealizeFontProc *
-mfbRealizeFontWeak(void)
-{
- return mfbRealizeFont;
-}
-
-/*ARGSUSED*/
-Bool
-mfbUnrealizeFont( pscr, pFont)
- ScreenPtr pscr;
- FontPtr pFont;
-{
- return (TRUE);
-}
-
-mfbUnrealizeFontProc *
-mfbUnrealizeFontWeak(void)
-{
- return mfbUnrealizeFont;
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbgc.c b/nx-X11/programs/Xserver/mfb/mfbgc.c
deleted file mode 100644
index c9ff20a45..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbgc.c
+++ /dev/null
@@ -1,1151 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbgc.c,v 1.9 2003/07/16 01:38:55 dawes Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbgc.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mfb.h"
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "region.h"
-
-#include "mistruct.h"
-#include "migc.h"
-
-#include "maskbits.h"
-
-static GCFuncs mfbFuncs = {
- mfbValidateGC,
- miChangeGC,
- miCopyGC,
- miDestroyGC,
- miChangeClip,
- miDestroyClip,
- miCopyClip
-};
-
-
-static GCOps whiteTECopyOps = {
- mfbWhiteSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- mfbZeroPolyArcSS,
- mfbFillPolyWhite,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbTEGlyphBltWhite,
- mfbPolyGlyphBltWhite,
- mfbSolidPP
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-static GCOps blackTECopyOps = {
- mfbBlackSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- mfbZeroPolyArcSS,
- mfbFillPolyBlack,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbTEGlyphBltBlack,
- mfbPolyGlyphBltBlack,
- mfbSolidPP
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-static GCOps whiteTEInvertOps = {
- mfbInvertSolidFS,
- mfbSetSpans,
- mfbPutImage,
- miCopyArea,
- miCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- miZeroPolyArc,
- mfbFillPolyInvert,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbTEGlyphBltWhite,
- mfbPolyGlyphBltInvert,
- mfbSolidPP
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-static GCOps blackTEInvertOps = {
- mfbInvertSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- miZeroPolyArc,
- mfbFillPolyInvert,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbTEGlyphBltBlack,
- mfbPolyGlyphBltInvert,
- mfbSolidPP
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-static GCOps whiteCopyOps = {
- mfbWhiteSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- mfbZeroPolyArcSS,
- mfbFillPolyWhite,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbImageGlyphBltWhite,
- mfbPolyGlyphBltWhite,
- mfbSolidPP
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-static GCOps blackCopyOps = {
- mfbBlackSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- mfbZeroPolyArcSS,
- mfbFillPolyBlack,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbImageGlyphBltBlack,
- mfbPolyGlyphBltBlack,
- mfbSolidPP
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-static GCOps whiteInvertOps = {
- mfbInvertSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- miZeroPolyArc,
- mfbFillPolyInvert,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbImageGlyphBltWhite,
- mfbPolyGlyphBltInvert,
- mfbSolidPP
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-static GCOps blackInvertOps = {
- mfbInvertSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- miZeroPolyArc,
- mfbFillPolyInvert,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbImageGlyphBltBlack,
- mfbPolyGlyphBltInvert,
- mfbSolidPP
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-static GCOps whiteWhiteCopyOps = {
- mfbWhiteSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- mfbZeroPolyArcSS,
- mfbFillPolyWhite,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- miImageGlyphBlt,
- mfbPolyGlyphBltWhite,
- mfbSolidPP
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-static GCOps blackBlackCopyOps = {
- mfbBlackSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- mfbZeroPolyArcSS,
- mfbFillPolyBlack,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- miImageGlyphBlt,
- mfbPolyGlyphBltBlack,
- mfbSolidPP
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-static GCOps fgEqBgInvertOps = {
- mfbInvertSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- miZeroPolyArc,
- mfbFillPolyInvert,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- miImageGlyphBlt,
- mfbPolyGlyphBltInvert,
- mfbSolidPP
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-
-struct commonOps {
- int fg, bg;
- int rrop;
- int terminalFont;
- GCOps *ops;
- void (*fillArea)(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*nop*/);
-};
-
-static struct commonOps mfbCommonOps[] = {
- { 1, 0, RROP_WHITE, 1, &whiteTECopyOps, mfbSolidWhiteArea },
- { 0, 1, RROP_BLACK, 1, &blackTECopyOps, mfbSolidBlackArea },
- { 1, 0, RROP_INVERT, 1, &whiteTEInvertOps, mfbSolidInvertArea },
- { 0, 1, RROP_INVERT, 1, &blackTEInvertOps, mfbSolidInvertArea },
- { 1, 0, RROP_WHITE, 0, &whiteCopyOps, mfbSolidWhiteArea },
- { 0, 1, RROP_BLACK, 0, &blackCopyOps, mfbSolidBlackArea },
- { 1, 0, RROP_INVERT, 0, &whiteInvertOps, mfbSolidInvertArea },
- { 0, 1, RROP_INVERT, 0, &blackInvertOps, mfbSolidInvertArea },
- { 1, 1, RROP_WHITE, 0, &whiteWhiteCopyOps, mfbSolidWhiteArea },
- { 0, 0, RROP_BLACK, 0, &blackBlackCopyOps, mfbSolidBlackArea },
- { 1, 1, RROP_INVERT, 0, &fgEqBgInvertOps, mfbSolidInvertArea },
- { 0, 0, RROP_INVERT, 0, &fgEqBgInvertOps, mfbSolidInvertArea },
-};
-
-#define numberCommonOps (sizeof (mfbCommonOps) / sizeof (mfbCommonOps[0]))
-
-static GCOps *
-matchCommon (
- GCPtr pGC)
-{
- int i;
- struct commonOps *cop;
- mfbPrivGC *priv;
-
- if (pGC->lineWidth != 0)
- return 0;
- if (pGC->lineStyle != LineSolid)
- return 0;
- if (pGC->fillStyle != FillSolid)
- return 0;
- if (!pGC->font ||
- FONTMAXBOUNDS(pGC->font,rightSideBearing) -
- FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 ||
- FONTMINBOUNDS(pGC->font,characterWidth) < 0)
- return 0;
- priv = (mfbPrivGC *) pGC->devPrivates[mfbGCPrivateIndex].ptr;
- for (i = 0; i < numberCommonOps; i++) {
- cop = &mfbCommonOps[i];
- if ((pGC->fgPixel & 1) != cop->fg)
- continue;
- if ((pGC->bgPixel & 1) != cop->bg)
- continue;
- if (priv->rop != cop->rrop)
- continue;
- if (cop->terminalFont && !TERMINALFONT(pGC->font))
- continue;
- priv->FillArea = cop->fillArea;
- return cop->ops;
- }
- return 0;
-}
-
-
-Bool
-mfbCreateGC(pGC)
- register GCPtr pGC;
-{
- mfbPrivGC *pPriv;
-
- pGC->clientClip = NULL;
- pGC->clientClipType = CT_NONE;
-
- /* some of the output primitives aren't really necessary, since
- they will be filled in ValidateGC because of dix/CreateGC()
- setting all the change bits. Others are necessary because although
- they depend on being a monochrome frame buffer, they don't change
- */
-
- pGC->ops = &whiteCopyOps;
- pGC->funcs = &mfbFuncs;
-
- /* mfb wants to translate before scan convesion */
- pGC->miTranslate = 1;
-
- pPriv = (mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr);
- pPriv->rop = mfbReduceRop(pGC->alu, pGC->fgPixel);
- pGC->fExpose = TRUE;
- pGC->pRotatedPixmap = NullPixmap;
- pGC->freeCompClip = FALSE;
- pPriv->FillArea = mfbSolidInvertArea;
- return TRUE;
-}
-
-/* some noop functions */
-static void
-mfbPolyGlyphBltNoop(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- unsigned int nglyph,
- CharInfoPtr * ppci,
- pointer pglyphBase)
-{
- /* this is a no-op function */
-}
-
-static void
-mfbNoopFS(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nInit,
- DDXPointPtr pptInit,
- int * pwidthInit,
- int fSorted)
-{
- /* this is a no-op function */
-}
-
-static void
-mfbFillPolyNoop(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int shape,
- int mode,
- int count,
- DDXPointPtr ptsIn)
-{
- /* this is a no-op function */
-}
-
-
-/* Clipping conventions
- if the drawable is a window
- CT_REGION ==> pCompositeClip really is the composite
- CT_other ==> pCompositeClip is the window clip region
- if the drawable is a pixmap
- CT_REGION ==> pCompositeClip is the translated client region
- clipped to the pixmap boundary
- CT_other ==> pCompositeClip is the pixmap bounding box
-*/
-
-/*ARGSUSED*/
-void
-mfbValidateGC(pGC, changes, pDrawable)
- register GCPtr pGC;
- unsigned long changes;
- DrawablePtr pDrawable;
-{
- register mfbPrivGCPtr devPriv;
- int mask; /* stateChanges */
- int index; /* used for stepping through bitfields */
- int xrot, yrot; /* rotations for tile and stipple pattern */
- int rrop; /* reduced rasterop */
- /* flags for changing the proc vector
- and updating things in devPriv
- */
- int new_rotate, new_rrop, new_line, new_text, new_fill;
- DDXPointRec oldOrg; /* origin of thing GC was last used with */
-
- oldOrg = pGC->lastWinOrg;
-
- pGC->lastWinOrg.x = pDrawable->x;
- pGC->lastWinOrg.y = pDrawable->y;
-
- /* we need to re-rotate the tile if the previous window/pixmap
- origin (oldOrg) differs from the new window/pixmap origin
- (pGC->lastWinOrg)
- */
- new_rotate = (oldOrg.x != pGC->lastWinOrg.x) ||
- (oldOrg.y != pGC->lastWinOrg.y);
-
- devPriv = ((mfbPrivGCPtr) (pGC->devPrivates[mfbGCPrivateIndex].ptr));
-
- /*
- if the client clip is different or moved OR
- the subwindowMode has changed OR
- the window's clip has changed since the last validation
- we need to recompute the composite clip
- */
- if ((changes & (GCClipXOrigin|GCClipYOrigin|GCClipMask|GCSubwindowMode)) ||
- (pDrawable->serialNumber != (pGC->serialNumber & DRAWABLE_SERIAL_BITS))
- )
- {
- miComputeCompositeClip(pGC, pDrawable);
- }
-
- new_rrop = FALSE;
- new_line = FALSE;
- new_text = FALSE;
- new_fill = FALSE;
-
- mask = changes;
- while (mask)
- {
- index = lowbit (mask);
- mask &= ~index;
-
- /* this switch acculmulates a list of which procedures
- might have to change due to changes in the GC. in
- some cases (e.g. changing one 16 bit tile for another)
- we might not really need a change, but the code is
- being paranoid.
- this sort of batching wins if, for example, the alu
- and the font have been changed, or any other pair
- of items that both change the same thing.
- */
- switch (index)
- {
- case GCFunction:
- case GCForeground:
- new_rrop = TRUE;
- break;
- case GCPlaneMask:
- break;
- case GCBackground:
- new_rrop = TRUE; /* for opaque stipples */
- break;
- case GCLineStyle:
- case GCLineWidth:
- case GCJoinStyle:
- new_line = TRUE;
- break;
- case GCCapStyle:
- break;
- case GCFillStyle:
- new_fill = TRUE;
- break;
- case GCFillRule:
- break;
- case GCTile:
- if(pGC->tileIsPixel)
- break;
- new_rotate = TRUE;
- new_fill = TRUE;
- break;
-
- case GCStipple:
- if(pGC->stipple == (PixmapPtr)NULL)
- break;
- new_rotate = TRUE;
- new_fill = TRUE;
- break;
-
- case GCTileStipXOrigin:
- new_rotate = TRUE;
- break;
-
- case GCTileStipYOrigin:
- new_rotate = TRUE;
- break;
-
- case GCFont:
- new_text = TRUE;
- break;
- case GCSubwindowMode:
- break;
- case GCGraphicsExposures:
- break;
- case GCClipXOrigin:
- break;
- case GCClipYOrigin:
- break;
- case GCClipMask:
- break;
- case GCDashOffset:
- break;
- case GCDashList:
- break;
- case GCArcMode:
- break;
- default:
- break;
- }
- }
-
- /* deal with the changes we've collected .
- new_rrop must be done first because subsequent things
- depend on it.
- */
-
- if(new_rotate || new_fill)
- {
- Bool new_pix = FALSE;
-
- /* figure out how much to rotate */
- xrot = pGC->patOrg.x;
- yrot = pGC->patOrg.y;
- xrot += pDrawable->x;
- yrot += pDrawable->y;
-
- switch (pGC->fillStyle)
- {
- case FillTiled:
- /* copy current tile and stipple */
- if (!pGC->tileIsPixel && (pGC->tile.pixmap->drawable.width <= PPW) &&
- !(pGC->tile.pixmap->drawable.width & (pGC->tile.pixmap->drawable.width - 1)))
- {
- mfbCopyRotatePixmap(pGC->tile.pixmap,
- &pGC->pRotatedPixmap, xrot, yrot);
- new_pix = TRUE;
- }
- break;
- case FillStippled:
- case FillOpaqueStippled:
- if (pGC->stipple && (pGC->stipple->drawable.width <= PPW) &&
- !(pGC->stipple->drawable.width & (pGC->stipple->drawable.width - 1)))
- {
- mfbCopyRotatePixmap(pGC->stipple,
- &pGC->pRotatedPixmap, xrot, yrot);
- new_pix = TRUE;
- }
- }
- /* destroy any previously rotated tile or stipple */
- if (!new_pix && pGC->pRotatedPixmap)
- {
- (*pDrawable->pScreen->DestroyPixmap)(pGC->pRotatedPixmap);
- pGC->pRotatedPixmap = (PixmapPtr)NULL;
- }
- }
-
- /*
- * duck out here when the GC is unchanged
- */
-
- if (!changes)
- return;
-
- if (new_rrop || new_fill)
- {
- rrop = mfbReduceRop(pGC->alu, pGC->fgPixel);
- devPriv->rop = rrop;
- new_fill = TRUE;
- /* FillArea raster op is GC's for tile filling,
- and the reduced rop for solid and stipple
- */
- if (pGC->fillStyle == FillTiled)
- devPriv->ropFillArea = pGC->alu;
- else
- devPriv->ropFillArea = rrop;
-
- /* opaque stipples:
- fg bg ropOpStip fill style
- 1 0 alu tile
- 0 1 inverseAlu tile
- 1 1 rrop(fg, alu) solid
- 0 0 rrop(fg, alu) solid
- Note that rrop(fg, alu) == mfbPrivGC.rop, so we don't really need to
- compute it.
- */
- if (pGC->fillStyle == FillOpaqueStippled)
- {
- if ((pGC->fgPixel & 1) != (pGC->bgPixel & 1))
- {
- if (pGC->fgPixel & 1)
- devPriv->ropOpStip = pGC->alu;
- else
- devPriv->ropOpStip = InverseAlu[pGC->alu];
- }
- else
- devPriv->ropOpStip = rrop;
- devPriv->ropFillArea = devPriv->ropOpStip;
- }
- }
- else
- rrop = devPriv->rop;
-
- if (new_line || new_fill || new_text)
- {
- GCOps *newops;
-
- if ((newops = matchCommon (pGC)))
- {
- if (pGC->ops->devPrivate.val)
- miDestroyGCOps (pGC->ops);
- pGC->ops = newops;
- new_line = new_fill = new_text = 0;
- }
- else
- {
- if (!pGC->ops->devPrivate.val)
- {
- pGC->ops = miCreateGCOps (pGC->ops);
- pGC->ops->devPrivate.val = 1;
- }
- }
- }
-
- if (new_line || new_fill)
- {
- if (pGC->lineWidth == 0)
- {
- if ((pGC->lineStyle == LineSolid) && (pGC->fillStyle == FillSolid)
- && ((rrop == RROP_WHITE) || (rrop == RROP_BLACK)))
- pGC->ops->PolyArc = mfbZeroPolyArcSS;
- else
- pGC->ops->PolyArc = miZeroPolyArc;
- }
- else
- pGC->ops->PolyArc = miPolyArc;
- if (pGC->lineStyle == LineSolid)
- {
- if(pGC->lineWidth == 0)
- {
- if (pGC->fillStyle == FillSolid)
- {
- pGC->ops->PolySegment = mfbSegmentSS;
- pGC->ops->Polylines = mfbLineSS;
- }
- else
- {
- pGC->ops->PolySegment = miPolySegment;
- pGC->ops->Polylines = miZeroLine;
- }
- }
- else
- {
- pGC->ops->PolySegment = miPolySegment;
- pGC->ops->Polylines = miWideLine;
- }
- }
- else
- {
- if(pGC->lineWidth == 0 && pGC->fillStyle == FillSolid)
- {
- pGC->ops->Polylines = mfbLineSD;
- pGC->ops->PolySegment = mfbSegmentSD;
- }
- else
- {
- pGC->ops->Polylines = miWideDash;
- pGC->ops->PolySegment = miPolySegment;
- }
- }
- }
-
- if (new_text || new_fill)
- {
- if ((pGC->font) &&
- (FONTMAXBOUNDS(pGC->font,rightSideBearing) -
- FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 ||
- FONTMINBOUNDS(pGC->font,characterWidth) < 0))
- {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- pGC->ops->ImageGlyphBlt = miImageGlyphBlt;
- }
- else
- {
- /* special case ImageGlyphBlt for terminal emulator fonts */
-
-
- if ((pGC->font) &&
- TERMINALFONT(pGC->font) &&
- ((pGC->fgPixel & 1) != (pGC->bgPixel & 1)))
- {
- /* pcc bug makes this not compile...
- pGC->ops->ImageGlyphBlt = (pGC->fgPixel & 1) ? mfbTEGlyphBltWhite :
- mfbTEGlyphBltBlack;
- */
- if (pGC->fgPixel & 1)
- pGC->ops->ImageGlyphBlt = mfbTEGlyphBltWhite;
- else
- pGC->ops->ImageGlyphBlt = mfbTEGlyphBltBlack;
- }
- else
-
-
- {
- if (pGC->fgPixel & 1)
- pGC->ops->ImageGlyphBlt = mfbImageGlyphBltWhite;
- else
- pGC->ops->ImageGlyphBlt = mfbImageGlyphBltBlack;
- }
-
- /* now do PolyGlyphBlt */
- if (pGC->fillStyle == FillSolid ||
- (pGC->fillStyle == FillOpaqueStippled &&
- (pGC->fgPixel & 1) == (pGC->bgPixel & 1)
- )
- )
- {
- if (rrop == RROP_WHITE)
- pGC->ops->PolyGlyphBlt = mfbPolyGlyphBltWhite;
- else if (rrop == RROP_BLACK)
- pGC->ops->PolyGlyphBlt = mfbPolyGlyphBltBlack;
- else if (rrop == RROP_INVERT)
- pGC->ops->PolyGlyphBlt = mfbPolyGlyphBltInvert;
- else
- pGC->ops->PolyGlyphBlt = mfbPolyGlyphBltNoop;
- }
- else
- {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- }
- }
- }
-
- if (new_fill)
-
-
- {
- /* install a suitable fillspans and pushpixels */
- pGC->ops->PushPixels = mfbPushPixels;
- pGC->ops->FillPolygon = miFillPolygon;
- if ((pGC->fillStyle == FillSolid) ||
- ((pGC->fillStyle == FillOpaqueStippled) &&
- ((pGC->fgPixel & 1) == (pGC->bgPixel & 1))))
- {
- pGC->ops->PushPixels = mfbSolidPP;
- switch(devPriv->rop)
- {
- case RROP_WHITE:
- pGC->ops->FillSpans = mfbWhiteSolidFS;
- pGC->ops->FillPolygon = mfbFillPolyWhite;
- break;
- case RROP_BLACK:
- pGC->ops->FillSpans = mfbBlackSolidFS;
- pGC->ops->FillPolygon = mfbFillPolyBlack;
- break;
- case RROP_INVERT:
- pGC->ops->FillSpans = mfbInvertSolidFS;
- pGC->ops->FillPolygon = mfbFillPolyInvert;
- break;
- case RROP_NOP:
- pGC->ops->FillSpans = mfbNoopFS;
- pGC->ops->FillPolygon = mfbFillPolyNoop;
- break;
- }
- }
- /* beyond this point, opaqueStippled ==> fg != bg */
- else if (((pGC->fillStyle == FillTiled) ||
- (pGC->fillStyle == FillOpaqueStippled)) &&
- !pGC->pRotatedPixmap)
- {
- pGC->ops->FillSpans = mfbUnnaturalTileFS;
- }
- else if ((pGC->fillStyle == FillStippled) && !pGC->pRotatedPixmap)
- {
- pGC->ops->FillSpans = mfbUnnaturalStippleFS;
- }
- else if (pGC->fillStyle == FillStippled)
- {
- switch(devPriv->rop)
- {
- case RROP_WHITE:
- pGC->ops->FillSpans = mfbWhiteStippleFS;
- break;
- case RROP_BLACK:
- pGC->ops->FillSpans = mfbBlackStippleFS;
- break;
- case RROP_INVERT:
- pGC->ops->FillSpans = mfbInvertStippleFS;
- break;
- case RROP_NOP:
- pGC->ops->FillSpans = mfbNoopFS;
- break;
- }
- }
- else /* overload tiles to do parti-colored opaque stipples */
- {
- pGC->ops->FillSpans = mfbTileFS;
- }
- if (pGC->fillStyle == FillSolid)
- pGC->ops->PolyFillArc = mfbPolyFillArcSolid;
- else
- pGC->ops->PolyFillArc = miPolyFillArc;
- /* the rectangle code doesn't deal with opaque stipples that
- are two colors -- we can fool it for fg==bg, though
- */
- if ((((pGC->fillStyle == FillTiled) ||
- (pGC->fillStyle == FillStippled)) &&
- !pGC->pRotatedPixmap) ||
- ((pGC->fillStyle == FillOpaqueStippled) &&
- ((pGC->fgPixel & 1) != (pGC->bgPixel & 1)))
- )
- {
- pGC->ops->PolyFillRect = miPolyFillRect;
- }
- else /* deal with solids and natural stipples and tiles */
- {
- pGC->ops->PolyFillRect = mfbPolyFillRect;
-
- if ((pGC->fillStyle == FillSolid) ||
- ((pGC->fillStyle == FillOpaqueStippled) &&
- ((pGC->fgPixel & 1) == (pGC->bgPixel & 1))))
- {
- switch(devPriv->rop)
- {
- case RROP_WHITE:
- devPriv->FillArea = mfbSolidWhiteArea;
- break;
- case RROP_BLACK:
- devPriv->FillArea = mfbSolidBlackArea;
- break;
- case RROP_INVERT:
- devPriv->FillArea = mfbSolidInvertArea;
- break;
- case RROP_NOP:
- devPriv->FillArea = (mfbFillAreaProcPtr)NoopDDA;
- break;
- }
- }
- else if (pGC->fillStyle == FillStippled)
- {
- switch(devPriv->rop)
- {
- case RROP_WHITE:
- devPriv->FillArea = mfbStippleWhiteArea;
- break;
- case RROP_BLACK:
- devPriv->FillArea = mfbStippleBlackArea;
- break;
- case RROP_INVERT:
- devPriv->FillArea = mfbStippleInvertArea;
- break;
- case RROP_NOP:
- devPriv->FillArea = (mfbFillAreaProcPtr)NoopDDA;
- break;
- }
- }
- else /* deal with tiles */
- {
- switch (pGC->alu)
- {
- case GXcopy:
- devPriv->FillArea = mfbTileAreaPPWCopy;
- break;
- default:
- devPriv->FillArea = mfbTileAreaPPWGeneral;
- break;
- }
- }
- } /* end of natural rectangles */
- } /* end of new_fill */
-
-
-}
-
-/* table to map alu(src, dst) to alu(~src, dst) */
-int InverseAlu[16] = {
- GXclear,
- GXandInverted,
- GXnor,
- GXcopyInverted,
- GXand,
- GXnoop,
- GXequiv,
- GXorInverted,
- GXandReverse,
- GXxor,
- GXinvert,
- GXnand,
- GXcopy,
- GXor,
- GXorReverse,
- GXset
-};
-
-int mfbGetInverseAlu(i)
- int i;
-{
- return InverseAlu[i];
-}
-
-int
-mfbReduceRop(alu, src)
- register int alu;
- register Pixel src;
-{
- int rop = 0;
- if ((src & 1) == 0) /* src is black */
- {
- switch(alu)
- {
- case GXclear:
- rop = RROP_BLACK;
- break;
- case GXand:
- rop = RROP_BLACK;
- break;
- case GXandReverse:
- rop = RROP_BLACK;
- break;
- case GXcopy:
- rop = RROP_BLACK;
- break;
- case GXandInverted:
- rop = RROP_NOP;
- break;
- case GXnoop:
- rop = RROP_NOP;
- break;
- case GXxor:
- rop = RROP_NOP;
- break;
- case GXor:
- rop = RROP_NOP;
- break;
- case GXnor:
- rop = RROP_INVERT;
- break;
- case GXequiv:
- rop = RROP_INVERT;
- break;
- case GXinvert:
- rop = RROP_INVERT;
- break;
- case GXorReverse:
- rop = RROP_INVERT;
- break;
- case GXcopyInverted:
- rop = RROP_WHITE;
- break;
- case GXorInverted:
- rop = RROP_WHITE;
- break;
- case GXnand:
- rop = RROP_WHITE;
- break;
- case GXset:
- rop = RROP_WHITE;
- break;
- }
- }
- else /* src is white */
- {
- switch(alu)
- {
- case GXclear:
- rop = RROP_BLACK;
- break;
- case GXand:
- rop = RROP_NOP;
- break;
- case GXandReverse:
- rop = RROP_INVERT;
- break;
- case GXcopy:
- rop = RROP_WHITE;
- break;
- case GXandInverted:
- rop = RROP_BLACK;
- break;
- case GXnoop:
- rop = RROP_NOP;
- break;
- case GXxor:
- rop = RROP_INVERT;
- break;
- case GXor:
- rop = RROP_WHITE;
- break;
- case GXnor:
- rop = RROP_BLACK;
- break;
- case GXequiv:
- rop = RROP_NOP;
- break;
- case GXinvert:
- rop = RROP_INVERT;
- break;
- case GXorReverse:
- rop = RROP_WHITE;
- break;
- case GXcopyInverted:
- rop = RROP_BLACK;
- break;
- case GXorInverted:
- rop = RROP_NOP;
- break;
- case GXnand:
- rop = RROP_INVERT;
- break;
- case GXset:
- rop = RROP_WHITE;
- break;
- }
- }
- return rop;
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbgetsp.c b/nx-X11/programs/Xserver/mfb/mfbgetsp.c
deleted file mode 100644
index c1017e177..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbgetsp.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbgetsp.c,v 1.3tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbgetsp.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "misc.h"
-#include "region.h"
-#include "gc.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-#include "servermd.h"
-
-/* GetSpans -- for each span, gets bits from drawable starting at ppt[i]
- * and continuing for pwidth[i] bits
- * Each scanline returned will be server scanline padded, i.e., it will come
- * out to an integral number of words.
- */
-/*ARGSUSED*/
-void
-mfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pchardstStart)
- DrawablePtr pDrawable; /* drawable from which to get bits */
- int wMax; /* largest value of all *pwidths */
- register DDXPointPtr ppt; /* points to start copying from */
- int *pwidth; /* list of number of bits to copy */
- int nspans; /* number of scanlines to copy */
- char *pchardstStart; /* where to put the bits */
-{
- PixelType *pdstStart = (PixelType *)(pointer)pchardstStart;
- register PixelType *pdst; /* where to put the bits */
- register PixelType *psrc; /* where to get the bits */
- register PixelType tmpSrc; /* scratch buffer for bits */
- PixelType *psrcBase; /* start of src bitmap */
- int widthSrc; /* width of pixmap in bytes */
- register DDXPointPtr pptLast; /* one past last point to get */
- int xEnd; /* last pixel to copy from */
- register int nstart;
- int nend = 0;
- int srcStartOver;
- PixelType startmask, endmask;
- unsigned int srcBit;
- int nlMiddle, nl;
- int w;
-
- pptLast = ppt + nspans;
-
- mfbGetPixelWidthAndPointer(pDrawable, widthSrc, psrcBase);
- pdst = pdstStart;
-
- while(ppt < pptLast)
- {
- /* XXX should this really be << PWSH, or * 8, or * PGSZB? */
- xEnd = min(ppt->x + *pwidth, widthSrc << PWSH);
- pwidth++;
- psrc = mfbScanline(psrcBase, ppt->x, ppt->y, widthSrc);
- w = xEnd - ppt->x;
- srcBit = ppt->x & PIM;
-
- if (srcBit + w <= PPW)
- {
- getandputbits0(psrc, srcBit, w, pdst);
- pdst++;
- }
- else
- {
-
- maskbits(ppt->x, w, startmask, endmask, nlMiddle);
- if (startmask)
- nstart = PPW - srcBit;
- else
- nstart = 0;
- if (endmask)
- nend = xEnd & PIM;
- srcStartOver = srcBit + nstart > PLST;
- if (startmask)
- {
- getandputbits0(psrc, srcBit, nstart, pdst);
- if(srcStartOver)
- psrc++;
- }
- nl = nlMiddle;
-#ifdef FASTPUTBITS
- Duff(nl, putbits(*psrc, nstart, PPW, pdst); psrc++; pdst++;);
-#else
- while (nl--)
- {
- tmpSrc = *psrc;
- putbits(tmpSrc, nstart, PPW, pdst);
- psrc++;
- pdst++;
- }
-#endif
- if (endmask)
- {
- putbits(*psrc, nstart, nend, pdst);
- if(nstart + nend > PPW)
- pdst++;
- }
- if (startmask || endmask)
- pdst++;
- }
- ppt++;
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbhrzvert.c b/nx-X11/programs/Xserver/mfb/mfbhrzvert.c
deleted file mode 100644
index 9a9d20dac..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbhrzvert.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbhrzvert.c,v 1.4 2001/01/17 22:37:03 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbhrzvert.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gc.h"
-#include "window.h"
-#include "pixmap.h"
-#include "region.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-/* horizontal solid line
- abs(len) > 1
-*/
-void
-mfbHorzS(rop, addrl, nlwidth, x1, y1, len)
-int rop; /* a reduced rasterop */
-register PixelType *addrl; /* pointer to base of bitmap */
-register int nlwidth; /* width in longwords of bitmap */
-int x1; /* initial point */
-int y1;
-int len; /* length of line */
-{
- register PixelType startmask;
- register PixelType endmask;
- register int nlmiddle;
-
-
- /* force the line to go left to right
- but don't draw the last point
- */
- if (len < 0)
- {
- x1 += len;
- x1 += 1;
- len = -len;
- }
-
- addrl = mfbScanline(addrl, x1, y1, nlwidth);
-
- /* all bits inside same longword */
- if ( ((x1 & PIM) + len) < PPW)
- {
- maskpartialbits(x1, len, startmask);
- if (rop == RROP_BLACK)
- {
- *addrl &= ~startmask;
- }
- else if (rop == RROP_WHITE)
- {
- *addrl |= startmask;
- }
- else if (rop == RROP_INVERT)
- {
- *addrl ^= startmask;
- }
- }
- else
- {
- maskbits(x1, len, startmask, endmask, nlmiddle);
- if (rop == RROP_BLACK)
- {
- if (startmask)
- *addrl++ &= ~startmask;
- Duff (nlmiddle, *addrl++ = 0x0);
- if (endmask)
- *addrl &= ~endmask;
- }
- else if (rop == RROP_WHITE)
- {
- if (startmask)
- *addrl++ |= startmask;
- Duff (nlmiddle, *addrl++ = ~0);
- if (endmask)
- *addrl |= endmask;
- }
- else if (rop == RROP_INVERT)
- {
- if (startmask)
- *addrl++ ^= startmask;
- Duff (nlmiddle, *addrl++ ^= ~0);
- if (endmask)
- *addrl ^= endmask;
- }
- }
-}
-
-/* vertical solid line
- this uses do loops because pcc (Ultrix 1.2, bsd 4.2) generates
- better code. sigh. we know that len will never be 0 or 1, so
- it's OK to use it.
-*/
-
-void
-mfbVertS(rop, addrl, nlwidth, x1, y1, len)
-int rop; /* a reduced rasterop */
-register PixelType *addrl; /* pointer to base of bitmap */
-register int nlwidth; /* width in longwords of bitmap */
-int x1, y1; /* initial point */
-register int len; /* length of line */
-{
- register PixelType bitmask;
-
- addrl = mfbScanline(addrl, x1, y1, nlwidth);
-
- if (len < 0)
- {
- nlwidth = -nlwidth;
- len = -len;
- }
-
- if (rop == RROP_BLACK)
- {
- bitmask = rmask[x1 & PIM];
- Duff(len, *addrl &= bitmask; mfbScanlineInc(addrl, nlwidth) );
- }
- else if (rop == RROP_WHITE)
- {
- bitmask = mask[x1 & PIM];
- Duff(len, *addrl |= bitmask; mfbScanlineInc(addrl, nlwidth) );
- }
- else if (rop == RROP_INVERT)
- {
- bitmask = mask[x1 & PIM];
- Duff(len, *addrl ^= bitmask; mfbScanlineInc(addrl, nlwidth) );
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbimage.c b/nx-X11/programs/Xserver/mfb/mfbimage.c
deleted file mode 100644
index 299905701..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbimage.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbimage.c,v 1.5 2001/01/17 22:37:03 dawes Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbimage.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "gcstruct.h"
-
-#include "mfb.h"
-#include "mi.h"
-#include <X11/Xmd.h>
-
-#include "maskbits.h"
-
-#include "servermd.h"
-
-/* Put and Get images on a monochrome frame buffer
- *
- * we do this by creating a temporary pixmap and making its
- * pointer to bits point to the buffer read in from the client.
- * this works because of the padding rules specified at startup
- *
- * Note that CopyArea must know how to copy a bitmap into the server-format
- * temporary pixmap.
- *
- * For speed, mfbPutImage should allocate the temporary pixmap on the stack.
- *
- * even though an XYBitmap and an XYPixmap have the same
- * format (for this device), PutImage has different semantics for the
- * two. XYPixmap just does the copy; XYBitmap takes gc.fgPixel for
- * a 1 bit, gc.bgPixel for a 0 bit, which we notice is exactly
- * like CopyPlane.
- *
- * written by drewry, september 1986
- */
-
-
-
-/*ARGSUSED*/
-void
-mfbPutImage(dst, pGC, depth, x, y, w, h, leftPad, format, pImage)
- DrawablePtr dst;
- GCPtr pGC;
- int depth, x, y, w, h;
- int leftPad;
- int format;
- char *pImage;
-{
- PixmapPtr pPixmap;
-
- if (!(pGC->planemask & 1))
- return;
-
- /* 0 may confuse CreatePixmap, and will sometimes be
- passed by the mi text code
- */
- if ((w == 0) || (h == 0))
- return;
-
- pPixmap = GetScratchPixmapHeader(dst->pScreen, w+leftPad, h, 1, 1,
- BitmapBytePad(w+leftPad), (pointer)pImage);
- if (!pPixmap)
- return;
-
- pGC->fExpose = FALSE;
- if (format != XYBitmap)
- (*pGC->ops->CopyArea)((DrawablePtr)pPixmap, dst, pGC, leftPad, 0,
- w, h, x, y);
- else
- (*pGC->ops->CopyPlane)((DrawablePtr)pPixmap, dst, pGC, leftPad, 0,
- w, h, x, y, 1);
- pGC->fExpose = TRUE;
- FreeScratchPixmapHeader(pPixmap);
-}
-
-
-/*
- * pdstLine points to space allocated by caller, which he can do since
- * he knows dimensions of the pixmap
- * we can call mfbDoBitblt because the dispatcher has promised not to send us
- * anything that would require going over the edge of the screen.
- *
- * XYPixmap and ZPixmap are the same for mfb.
- * For any planemask with bit 0 == 0, just fill the dst with 0.
- */
-/*ARGSUSED*/
-void
-mfbGetImage( pDrawable, sx, sy, w, h, format, planeMask, pdstLine)
- DrawablePtr pDrawable;
- int sx, sy, w, h;
- unsigned int format;
- unsigned long planeMask;
- char *pdstLine;
-{
- BoxRec box;
- DDXPointRec ptSrc;
- RegionRec rgnDst;
-
- if (planeMask & 0x1)
- {
- ScreenPtr pScreen = pDrawable->pScreen;
- PixmapPtr pPixmap;
-
- pPixmap = GetScratchPixmapHeader(pScreen, w, h, /*depth*/ 1, /*bpp*/ 1,
- BitmapBytePad(w), (pointer)pdstLine);
- if (!pPixmap)
- return;
-
- ptSrc.x = sx + pDrawable->x;
- ptSrc.y = sy + pDrawable->y;
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = w;
- box.y2 = h;
- REGION_INIT(pScreen, &rgnDst, &box, 1);
- mfbDoBitblt(pDrawable, (DrawablePtr)pPixmap,
- GXcopy, &rgnDst, &ptSrc);
- REGION_UNINIT(pScreen, &rgnDst);
- FreeScratchPixmapHeader(pPixmap);
- }
- else
- {
- bzero(pdstLine, BitmapBytePad(w) * h);
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbimggblt.c b/nx-X11/programs/Xserver/mfb/mfbimggblt.c
deleted file mode 100644
index 0c0d4140c..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbimggblt.c
+++ /dev/null
@@ -1,445 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbimggblt.c,v 3.5tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbimggblt.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-/*
- we should eventually special-case fixed-width fonts for ImageText.
-
- this works for fonts with glyphs <= 32 bits wide.
-
- the clipping calculations are done for worst-case fonts.
-we make no assumptions about the heights, widths, or bearings
-of the glyphs. if we knew that the glyphs are all the same height,
-we could clip the tops and bottoms per clipping box, rather
-than per character per clipping box. if we knew that the glyphs'
-left and right bearings were wlle-behaved, we could clip a single
-character at the start, output until the last unclipped
-character, and then clip the last one. this is all straightforward
-to determine based on max-bounds and min-bounds from the font.
- there is some inefficiency introduced in the per-character
-clipping to make what's going on clearer.
-
- (it is possible, for example, for a font to be defined in which the
-next-to-last character in a font would be clipped out, but the last
-one wouldn't. the code below deals with this.)
-
- Image text looks at the bits in the glyph and the fg and bg in the
-GC. it paints a rectangle, as defined in the protocol dcoument,
-and the paints the characters.
-
- to avoid source proliferation, this file is compiled
-three times:
- MFBIMAGEGLYPHBLT OPEQ
- mfbImageGlyphBltWhite |=
- mfbImageGlyphBltBlack &=~
-
- the register allocations for startmask and endmask may not
-be the right thing. are there two other deserving candidates?
-xoff, pdst, pglyph, and tmpSrc seem like the right things, though.
-*/
-
-void
-MFBIMAGEGLYPHBLT(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- ExtentInfoRec info; /* used by QueryGlyphExtents() */
- BoxRec bbox; /* string's bounding box */
- xRectangle backrect;/* backing rectangle to paint.
- in the general case, NOT necessarily
- the same as the string's bounding box
- */
-
- CharInfoPtr pci;
- int xorg, yorg; /* origin of drawable in bitmap */
- int widthDst; /* width of dst in longwords */
-
- /* these keep track of the character origin */
- PixelType *pdstBase;
- /* points to longword with character origin */
- int xchar; /* xorigin of char (mod 32) */
-
- /* these are used for placing the glyph */
- register int xoff; /* x offset of left edge of glyph (mod 32) */
- register PixelType *pdst;
- /* pointer to current longword in dst */
-
- int w; /* width of glyph in bits */
- int h; /* height of glyph */
- int widthGlyph; /* width of glyph, in bytes */
- register unsigned char *pglyph;
- /* pointer to current row of glyph */
-
- /* used for putting down glyph */
- register PixelType tmpSrc;
- /* for getting bits from glyph */
- register PixelType startmask;
- register PixelType endmask;
-
- register int nFirst;/* bits of glyph in current longword */
- mfbPrivGC *pPrivGC;
- mfbFillAreaProcPtr oldFillArea;
- /* we might temporarily usurp this
- field in devPriv */
-
- if (!(pGC->planemask & 1))
- return;
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- mfbGetPixelWidthAndPointer(pDrawable, widthDst, pdstBase);
-
- QueryGlyphExtents(pGC->font, ppci, (unsigned long)nglyph, &info);
-
- backrect.x = x;
- backrect.y = y - FONTASCENT(pGC->font);
- backrect.width = info.overallWidth;
- backrect.height = FONTASCENT(pGC->font) + FONTDESCENT(pGC->font);
-
- x += xorg;
- y += yorg;
-
- bbox.x1 = x + info.overallLeft;
- bbox.x2 = x + info.overallRight;
- bbox.y1 = y - info.overallAscent;
- bbox.y2 = y + info.overallDescent;
-
- /* UNCLEAN CODE
- we know the mfbPolyFillRect uses only two fields in
- devPrivate[mfbGCPrivateIndex].ptr, one of which (ropFillArea) is
- irrelevant for solid filling, so we just poke the FillArea
- field. the GC is now in an inconsistent state, but we'll fix
- it as soon as PolyFillRect returns. fortunately, the server
- is single threaded.
-
- NOTE:
- if you are not using the standard mfbFillRectangle code, you
- need to poke any fields in the GC the rectangle stuff need
- (probably alu, fgPixel, and fillStyle) and in devPrivate[mfbGCPrivateIndex].ptr
- (probably rop or ropFillArea.) You could just call ValidateGC,
- but that is usually not a cheap thing to do.
- */
-
- pPrivGC = pGC->devPrivates[mfbGCPrivateIndex].ptr;
- oldFillArea = pPrivGC->FillArea;
-
- if (pGC->bgPixel & 1)
- pPrivGC->FillArea = mfbSolidWhiteArea;
- else
- pPrivGC->FillArea = mfbSolidBlackArea;
-
- mfbPolyFillRect(pDrawable, pGC, 1, &backrect);
- pPrivGC->FillArea = oldFillArea;
-
- /* the faint-hearted can open their eyes now */
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox))
- {
- case rgnOUT:
- break;
- case rgnIN:
- pdstBase = mfbScanlineNoBankSwitch(pdstBase, x, y, widthDst);
- xchar = x & PIM;
-
- while(nglyph--)
- {
- pci = *ppci;
- pglyph = FONTGLYPHBITS(pglyphBase, pci);
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- h = pci->metrics.ascent + pci->metrics.descent;
- widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
-
- /* start at top scanline of glyph */
- pdst = pdstBase;
-
- /* find correct word in scanline and x offset within it
- for left edge of glyph
- */
- xoff = xchar + pci->metrics.leftSideBearing;
- if (xoff > PLST)
- {
- pdst++;
- xoff &= PIM;
- }
- else if (xoff < 0)
- {
- xoff += PPW;
- pdst--;
- }
-
- pdst = mfbScanlineDelta(pdst, -pci->metrics.ascent, widthDst);
-
- if ((xoff + w) <= PPW)
- {
- /* glyph all in one longword */
- maskpartialbits(xoff, w, startmask);
- while (h--)
- {
- getleftbits(pglyph, w, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- }
- else
- {
- /* glyph crosses longword boundary */
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- while (h--)
- {
- getleftbits(pglyph, w, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) OPEQ (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- } /* glyph crosses longwords boundary */
-
- /* update character origin */
- x += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST)
- {
- xchar -= PPW;
- pdstBase++;
- }
- else if (xchar < 0)
- {
- xchar += PPW;
- pdstBase--;
- }
- ppci++;
- } /* while nglyph-- */
- break;
- case rgnPART:
- {
- TEXTPOS *ppos;
- int nbox;
- BoxPtr pbox;
- RegionPtr cclip;
- int xpos; /* x position of char origin */
- int i;
- BoxRec clip;
- int leftEdge, rightEdge;
- int topEdge, bottomEdge;
- int glyphRow; /* first row of glyph not wholly
- clipped out */
- int glyphCol; /* leftmost visible column of glyph */
-#if GETLEFTBITS_ALIGNMENT > 1
- int getWidth; /* bits to get from glyph */
-#endif
-
- if(!(ppos = (TEXTPOS *)ALLOCATE_LOCAL(nglyph * sizeof(TEXTPOS))))
- return;
-
- pdstBase = mfbScanlineNoBankSwitch(pdstBase, x, y, widthDst);
- xpos = x;
- xchar = xpos & PIM;
-
- for (i=0; i<nglyph; i++)
- {
- pci = ppci[i];
-
- ppos[i].xpos = xpos;
- ppos[i].xchar = xchar;
- ppos[i].leftEdge = xpos + pci->metrics.leftSideBearing;
- ppos[i].rightEdge = xpos + pci->metrics.rightSideBearing;
- ppos[i].topEdge = y - pci->metrics.ascent;
- ppos[i].bottomEdge = y + pci->metrics.descent;
- ppos[i].pdstBase = pdstBase;
- ppos[i].widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
-
- xpos += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST)
- {
- xchar &= PIM;
- pdstBase++;
- }
- else if (xchar < 0)
- {
- xchar += PPW;
- pdstBase--;
- }
- }
-
- cclip = pGC->pCompositeClip;
- pbox = REGION_RECTS(cclip);
- nbox = REGION_NUM_RECTS(cclip);
-
- /* HACK ALERT
- since we continue out of the loop below so often, it
- is easier to increment pbox at the top than at the end.
- don't try this at home.
- */
- pbox--;
- while(nbox--)
- {
- pbox++;
- clip.x1 = max(bbox.x1, pbox->x1);
- clip.y1 = max(bbox.y1, pbox->y1);
- clip.x2 = min(bbox.x2, pbox->x2);
- clip.y2 = min(bbox.y2, pbox->y2);
- if ((clip.x2<=clip.x1) || (clip.y2<=clip.y1))
- continue;
-
- for(i=0; i<nglyph; i++)
- {
- pci = ppci[i];
- xchar = ppos[i].xchar;
-
- /* clip the left and right edges */
- if (ppos[i].leftEdge < clip.x1)
- leftEdge = clip.x1;
- else
- leftEdge = ppos[i].leftEdge;
-
- if (ppos[i].rightEdge > clip.x2)
- rightEdge = clip.x2;
- else
- rightEdge = ppos[i].rightEdge;
-
- w = rightEdge - leftEdge;
- if (w <= 0)
- continue;
-
- /* clip the top and bottom edges */
- if (ppos[i].topEdge < clip.y1)
- topEdge = clip.y1;
- else
- topEdge = ppos[i].topEdge;
-
- if (ppos[i].bottomEdge > clip.y2)
- bottomEdge = clip.y2;
- else
- bottomEdge = ppos[i].bottomEdge;
-
- h = bottomEdge - topEdge;
- if (h <= 0)
- continue;
-
- glyphRow = (topEdge - y) + pci->metrics.ascent;
- widthGlyph = ppos[i].widthGlyph;
- pglyph = FONTGLYPHBITS(pglyphBase, pci);
- pglyph += (glyphRow * widthGlyph);
-
- pdst = ppos[i].pdstBase;
-
- glyphCol = (leftEdge - ppos[i].xpos) -
- (pci->metrics.leftSideBearing);
-#if GETLEFTBITS_ALIGNMENT > 1
- getWidth = w + glyphCol;
-#endif
- xoff = xchar + (leftEdge - ppos[i].xpos);
- if (xoff > PLST)
- {
- xoff &= PIM;
- pdst++;
- }
- else if (xoff < 0)
- {
- xoff += PPW;
- pdst--;
- }
-
- pdst = mfbScanlineDelta(pdst, -(y-topEdge), widthDst);
-
- if ((xoff + w) <= PPW)
- {
- maskpartialbits(xoff, w, startmask);
- while (h--)
- {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- }
- else
- {
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- while (h--)
- {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) OPEQ (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- }
- } /* for each glyph */
- } /* while nbox-- */
- DEALLOCATE_LOCAL(ppos);
- break;
- }
- default:
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbline.c b/nx-X11/programs/Xserver/mfb/mfbline.c
deleted file mode 100644
index af7c27874..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbline.c
+++ /dev/null
@@ -1,757 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbline.c,v 1.6 2001/01/17 22:37:03 dawes Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbline.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-#include "miline.h"
-
-/* single-pixel lines on a color frame buffer
-
- NON-SLOPED LINES
- horizontal lines are always drawn left to right; we have to
-move the endpoints right by one after they're swapped.
- horizontal lines will be confined to a single band of a
-region. the code finds that band (giving up if the lower
-bound of the band is above the line we're drawing); then it
-finds the first box in that band that contains part of the
-line. we clip the line to subsequent boxes in that band.
- vertical lines are always drawn top to bottom (y-increasing.)
-this requires adding one to the y-coordinate of each endpoint
-after swapping.
-
- SLOPED LINES
- when clipping a sloped line, we bring the second point inside
-the clipping box, rather than one beyond it, and then add 1 to
-the length of the line before drawing it. this lets us use
-the same box for finding the outcodes for both endpoints. since
-the equation for clipping the second endpoint to an edge gives us
-1 beyond the edge, we then have to move the point towards the
-first point by one step on the major axis.
- eventually, there will be a diagram here to explain what's going
-on. the method uses Cohen-Sutherland outcodes to determine
-outsideness, and a method similar to Pike's layers for doing the
-actual clipping.
-
-*/
-
-void
-#ifdef POLYSEGMENT
-mfbSegmentSS (pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-mfbLineSS (pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit;
-#endif
-{
- int nboxInit;
- register int nbox;
- BoxPtr pboxInit;
- register BoxPtr pbox;
-#ifndef POLYSEGMENT
- register DDXPointPtr ppt; /* pointer to list of translated points */
-#endif
-
- unsigned int oc1; /* outcode of point 1 */
- unsigned int oc2; /* outcode of point 2 */
-
- PixelType *addrlBase; /* pointer to start of drawable */
-#ifndef POLYSEGMENT
- PixelType *addrl; /* address of destination pixmap */
-#endif
- int nlwidth; /* width in longwords of destination pixmap */
- int xorg, yorg; /* origin of window */
-
- int adx; /* abs values of dx and dy */
- int ady;
- int signdx; /* sign of dx and dy */
- int signdy;
- int e, e1, e2; /* bresenham error and increments */
- int len; /* length of segment */
- int axis; /* major axis */
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
-
- /* a bunch of temporaries */
- register int y1, y2;
- register int x1, x2;
- RegionPtr cclip;
- int alu;
-
- if (!(pGC->planemask & 1))
- return;
-
- cclip = pGC->pCompositeClip;
- alu = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->rop;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-#ifdef POLYSEGMENT
- while (nseg--)
-#else
- ppt = pptInit;
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
- while(--npt)
-#endif
- {
- nbox = nboxInit;
- pbox = pboxInit;
-
-#ifdef POLYSEGMENT
- x1 = pSeg->x1 + xorg;
- y1 = pSeg->y1 + yorg;
- x2 = pSeg->x2 + xorg;
- y2 = pSeg->y2 + yorg;
- pSeg++;
-#else
- x1 = x2;
- y1 = y2;
- ++ppt;
- if (mode == CoordModePrevious)
- {
- xorg = x1;
- yorg = y1;
- }
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
-#endif
-
- if (x1 == x2) /* vertical line */
- {
- /* make the line go top to bottom of screen, keeping
- endpoint semantics
- */
- if (y1 > y2)
- {
- register int tmp;
-
- tmp = y2;
- y2 = y1 + 1;
- y1 = tmp + 1;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- y1--;
-#endif
- }
-#ifdef POLYSEGMENT
- else if (pGC->capStyle != CapNotLast)
- y2++;
-#endif
- /* get to first band that might contain part of line */
- while ((nbox) && (pbox->y2 <= y1))
- {
- pbox++;
- nbox--;
- }
-
- if (nbox)
- {
- /* stop when lower edge of box is beyond end of line */
- while((nbox) && (y2 >= pbox->y1))
- {
- if ((x1 >= pbox->x1) && (x1 < pbox->x2))
- {
- int y1t, y2t;
- /* this box has part of the line in it */
- y1t = max(y1, pbox->y1);
- y2t = min(y2, pbox->y2);
- if (y1t != y2t)
- {
- mfbVertS (alu,
- addrlBase, nlwidth,
- x1, y1t, y2t-y1t);
- }
- }
- nbox--;
- pbox++;
- }
- }
-#ifndef POLYSEGMENT
- y2 = ppt->y + yorg;
-#endif
- }
- else if (y1 == y2) /* horizontal line */
- {
- /* force line from left to right, keeping
- endpoint semantics
- */
- if (x1 > x2)
- {
- register int tmp;
-
- tmp = x2;
- x2 = x1 + 1;
- x1 = tmp + 1;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- x1--;
-#endif
- }
-#ifdef POLYSEGMENT
- else if (pGC->capStyle != CapNotLast)
- x2++;
-#endif
-
- /* find the correct band */
- while( (nbox) && (pbox->y2 <= y1))
- {
- pbox++;
- nbox--;
- }
-
- /* try to draw the line, if we haven't gone beyond it */
- if ((nbox) && (pbox->y1 <= y1))
- {
- int tmp;
-
- /* when we leave this band, we're done */
- tmp = pbox->y1;
- while((nbox) && (pbox->y1 == tmp))
- {
- int x1t, x2t;
-
- if (pbox->x2 <= x1)
- {
- /* skip boxes until one might contain start point */
- nbox--;
- pbox++;
- continue;
- }
-
- /* stop if left of box is beyond right of line */
- if (pbox->x1 >= x2)
- {
- nbox = 0;
- break;
- }
-
- x1t = max(x1, pbox->x1);
- x2t = min(x2, pbox->x2);
- if (x1t != x2t)
- {
- mfbHorzS (alu,
- addrlBase, nlwidth,
- x1t, y1, x2t-x1t);
- }
- nbox--;
- pbox++;
- }
- }
-#ifndef POLYSEGMENT
- x2 = ppt->x + xorg;
-#endif
- }
- else /* sloped line */
- {
- CalcLineDeltas(x1, y1, x2, y2, adx, ady, signdx, signdy,
- 1, 1, octant);
-
- if (adx > ady)
- {
- axis = X_AXIS;
- e1 = ady << 1;
- e2 = e1 - (adx << 1);
- e = e1 - adx;
- }
- else
- {
- axis = Y_AXIS;
- e1 = adx << 1;
- e2 = e1 - (ady << 1);
- e = e1 - ady;
- SetYMajorOctant(octant);
- }
-
- FIXUP_ERROR(e, octant, bias);
-
- /* we have bresenham parameters and two points.
- all we have to do now is clip and draw.
- */
-
- while(nbox--)
- {
- oc1 = 0;
- oc2 = 0;
- OUTCODES(oc1, x1, y1, pbox);
- OUTCODES(oc2, x2, y2, pbox);
- if ((oc1 | oc2) == 0)
- {
- if (axis == X_AXIS)
- len = adx;
- else
- len = ady;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- len++;
-#endif
- mfbBresS (alu,
- addrlBase, nlwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, len);
- break;
- }
- else if (oc1 & oc2)
- {
- pbox++;
- }
- else
- {
- int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2;
- int clip1 = 0, clip2 = 0;
- int clipdx, clipdy;
- int err;
-
- if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1,
- pbox->y2-1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady, &clip1, &clip2,
- octant, bias, oc1, oc2) == -1)
- {
- pbox++;
- continue;
- }
-
- if (axis == X_AXIS)
- len = abs(new_x2 - new_x1);
- else
- len = abs(new_y2 - new_y1);
-#ifdef POLYSEGMENT
- if (clip2 != 0 || pGC->capStyle != CapNotLast)
- len++;
-#else
- len += (clip2 != 0);
-#endif
- if (len)
- {
- /* unwind bresenham error term to first point */
- if (clip1)
- {
- clipdx = abs(new_x1 - x1);
- clipdy = abs(new_y1 - y1);
- if (axis == X_AXIS)
- err = e+((clipdy*e2) + ((clipdx-clipdy)*e1));
- else
- err = e+((clipdx*e2) + ((clipdy-clipdx)*e1));
- }
- else
- err = e;
- mfbBresS
- (alu,
- addrlBase, nlwidth,
- signdx, signdy, axis, new_x1, new_y1,
- err, e1, e2, len);
- }
- pbox++;
- }
- } /* while (nbox--) */
- } /* sloped line */
- } /* while (nline--) */
-
-#ifndef POLYSEGMENT
-
- /* paint the last point if the end style isn't CapNotLast.
- (Assume that a projecting, butt, or round cap that is one
- pixel wide is the same as the single pixel of the endpoint.)
- */
-
- if ((pGC->capStyle != CapNotLast) &&
- ((ppt->x + xorg != pptInit->x + pDrawable->x) ||
- (ppt->y + yorg != pptInit->y + pDrawable->y) ||
- (ppt == pptInit + 1)))
- {
- PixelType _mask;
-
- if (alu == RROP_BLACK)
- _mask = rmask[x2 & PIM];
- else
- _mask = mask[x2 & PIM];
-
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--)
- {
- if ((x2 >= pbox->x1) &&
- (y2 >= pbox->y1) &&
- (x2 < pbox->x2) &&
- (y2 < pbox->y2))
- {
- addrl = mfbScanline(addrlBase, x2, y2, nlwidth);
- switch(alu)
- {
- case RROP_BLACK:
- *addrl &= _mask;
- break;
- case RROP_WHITE:
- *addrl |= _mask;
- break;
- case RROP_INVERT:
- *addrl ^= _mask;
- break;
- }
- break;
- }
- else
- pbox++;
- }
- }
-#endif
-}
-
-/*
- * Draw dashed 1-pixel lines.
- */
-
-void
-#ifdef POLYSEGMENT
-mfbSegmentSD (pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-mfbLineSD( pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit;
-#endif
-{
- int nboxInit;
- register int nbox;
- BoxPtr pboxInit;
- register BoxPtr pbox;
-#ifndef POLYSEGMENT
- register DDXPointPtr ppt; /* pointer to list of translated points */
-#endif
-
- register unsigned int oc1; /* outcode of point 1 */
- register unsigned int oc2; /* outcode of point 2 */
-
- PixelType *addrl; /* address of destination pixmap */
- int nlwidth; /* width in longwords of destination pixmap */
- int xorg, yorg; /* origin of window */
-
- int adx; /* abs values of dx and dy */
- int ady;
- int signdx; /* sign of dx and dy */
- int signdy;
- int e, e1, e2; /* bresenham error and increments */
- int len; /* length of segment */
- int axis; /* major axis */
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
- int x1, x2, y1, y2;
- RegionPtr cclip;
- int fgrop = 0, bgrop = 0;
- unsigned char *pDash;
- int dashOffset;
- int numInDashList;
- int dashIndex;
- int isDoubleDash;
- int dashIndexTmp, dashOffsetTmp;
- int unclippedlen;
-
- if (!(pGC->planemask & 1))
- return;
-
- cclip = pGC->pCompositeClip;
- fgrop = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->rop;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrl);
-
- /* compute initial dash values */
-
- pDash = (unsigned char *) pGC->dash;
- numInDashList = pGC->numInDashList;
- isDoubleDash = (pGC->lineStyle == LineDoubleDash);
- dashIndex = 0;
- dashOffset = 0;
- miStepDash ((int)pGC->dashOffset, &dashIndex, pDash,
- numInDashList, &dashOffset);
-
- if (isDoubleDash)
- bgrop = mfbReduceRop(pGC->alu, pGC->bgPixel);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-#ifdef POLYSEGMENT
- while (nseg--)
-#else
- ppt = pptInit;
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
- while(--npt)
-#endif
- {
- nbox = nboxInit;
- pbox = pboxInit;
-
-#ifdef POLYSEGMENT
- x1 = pSeg->x1 + xorg;
- y1 = pSeg->y1 + yorg;
- x2 = pSeg->x2 + xorg;
- y2 = pSeg->y2 + yorg;
- pSeg++;
-#else
- x1 = x2;
- y1 = y2;
- ++ppt;
- if (mode == CoordModePrevious)
- {
- xorg = x1;
- yorg = y1;
- }
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
-#endif
-
- CalcLineDeltas(x1, y1, x2, y2, adx, ady, signdx, signdy, 1, 1, octant);
-
- if (adx > ady)
- {
- axis = X_AXIS;
- e1 = ady << 1;
- e2 = e1 - (adx << 1);
- e = e1 - adx;
- unclippedlen = adx;
- }
- else
- {
- axis = Y_AXIS;
- e1 = adx << 1;
- e2 = e1 - (ady << 1);
- e = e1 - ady;
- unclippedlen = ady;
- SetYMajorOctant(octant);
- }
-
- FIXUP_ERROR(e, octant, bias);
-
- /* we have bresenham parameters and two points.
- all we have to do now is clip and draw.
- */
-
- while(nbox--)
- {
- oc1 = 0;
- oc2 = 0;
- OUTCODES(oc1, x1, y1, pbox);
- OUTCODES(oc2, x2, y2, pbox);
- if ((oc1 | oc2) == 0)
- {
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- unclippedlen++;
- dashIndexTmp = dashIndex;
- dashOffsetTmp = dashOffset;
- mfbBresD (fgrop, bgrop,
- &dashIndexTmp, pDash, numInDashList,
- &dashOffsetTmp, isDoubleDash,
- addrl, nlwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, unclippedlen);
- break;
-#else
- mfbBresD (fgrop, bgrop,
- &dashIndex, pDash, numInDashList,
- &dashOffset, isDoubleDash,
- addrl, nlwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, unclippedlen);
- goto dontStep;
-#endif
- }
- else if (oc1 & oc2)
- {
- pbox++;
- }
- else /* have to clip */
- {
- int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2;
- int clip1 = 0, clip2 = 0;
- int clipdx, clipdy;
- int err;
-
- if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1, pbox->y2-1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady, &clip1, &clip2,
- octant, bias, oc1, oc2) == -1)
- {
- pbox++;
- continue;
- }
- dashIndexTmp = dashIndex;
- dashOffsetTmp = dashOffset;
- if (clip1)
- {
- int dlen;
-
- if (axis == X_AXIS)
- dlen = abs(new_x1 - x1);
- else
- dlen = abs(new_y1 - y1);
- miStepDash (dlen, &dashIndexTmp, pDash,
- numInDashList, &dashOffsetTmp);
- }
- if (axis == X_AXIS)
- len = abs(new_x2 - new_x1);
- else
- len = abs(new_y2 - new_y1);
-#ifdef POLYSEGMENT
- if (clip2 != 0 || pGC->capStyle != CapNotLast)
- len++;
-#else
- len += (clip2 != 0);
-#endif
- if (len)
- {
- /* unwind bresenham error term to first point */
- if (clip1)
- {
- clipdx = abs(new_x1 - x1);
- clipdy = abs(new_y1 - y1);
- if (axis == X_AXIS)
- err = e+((clipdy*e2) + ((clipdx-clipdy)*e1));
- else
- err = e+((clipdx*e2) + ((clipdy-clipdx)*e1));
- }
- else
- err = e;
- mfbBresD (fgrop, bgrop,
- &dashIndexTmp, pDash, numInDashList,
- &dashOffsetTmp, isDoubleDash,
- addrl, nlwidth,
- signdx, signdy, axis, new_x1, new_y1,
- err, e1, e2, len);
- }
- pbox++;
- }
- } /* while (nbox--) */
-#ifndef POLYSEGMENT
- /*
- * walk the dash list around to the next line
- */
- miStepDash (unclippedlen, &dashIndex, pDash,
- numInDashList, &dashOffset);
-dontStep: ;
-#endif
- } /* while (nline--) */
-
-#ifndef POLYSEGMENT
- /* paint the last point if the end style isn't CapNotLast.
- (Assume that a projecting, butt, or round cap that is one
- pixel wide is the same as the single pixel of the endpoint.)
- */
-
- if ((pGC->capStyle != CapNotLast) &&
- ((dashIndex & 1) == 0 || isDoubleDash) &&
- ((ppt->x + xorg != pptInit->x + pDrawable->x) ||
- (ppt->y + yorg != pptInit->y + pDrawable->y) ||
- (ppt == pptInit + 1)))
- {
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--)
- {
- if ((x2 >= pbox->x1) &&
- (y2 >= pbox->y1) &&
- (x2 < pbox->x2) &&
- (y2 < pbox->y2))
- {
- MfbBits _mask;
- int rop;
-
- rop = fgrop;
- if (dashIndex & 1)
- rop = bgrop;
- if (rop == RROP_BLACK)
- _mask = rmask[x2 & PIM];
- else
- _mask = mask[x2 & PIM];
- addrl = mfbScanline(addrl, x2, y2, nlwidth);
- if (rop == RROP_BLACK)
- *addrl &= _mask;
- else if (rop == RROP_WHITE)
- *addrl |= _mask;
- else
- *addrl ^= _mask;
- break;
- }
- else
- pbox++;
- }
- }
-#endif
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbmisc.c b/nx-X11/programs/Xserver/mfb/mfbmisc.c
deleted file mode 100644
index 19ab3fa75..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbmisc.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbmisc.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "cursor.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-
-/*ARGSUSED*/
-void
-mfbQueryBestSize(class, pwidth, pheight, pScreen)
-int class;
-unsigned short *pwidth;
-unsigned short *pheight;
-ScreenPtr pScreen;
-{
- unsigned width, test;
-
- switch(class)
- {
- case CursorShape:
- if (*pwidth > pScreen->width)
- *pwidth = pScreen->width;
- if (*pheight > pScreen->height)
- *pheight = pScreen->height;
- break;
- case TileShape:
- case StippleShape:
- width = *pwidth;
- if (!width) break;
- /* Return the closes power of two not less than what they gave me */
- test = 0x80000000;
- /* Find the highest 1 bit in the width given */
- while(!(test & width))
- test >>= 1;
- /* If their number is greater than that, bump up to the next
- * power of two */
- if((test - 1) & width)
- test <<= 1;
- *pwidth = test;
- /* We don't care what height they use */
- break;
- }
-}
-
-mfbQueryBestSizeProc *
-mfbQueryBestSizeWeak(void)
-{
- return mfbQueryBestSize;
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbmodule.c b/nx-X11/programs/Xserver/mfb/mfbmodule.c
deleted file mode 100644
index be3b9eed0..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbmodule.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbmodule.c,v 1.7 1999/01/26 05:54:21 dawes Exp $ */
-/*
- * Copyright (C) 1998 The XFree86 Project, Inc. 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 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 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
- * XFREE86 PROJECT 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 XFree86 Project 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
- * XFree86 Project.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef XFree86LOADER
-#include "xf86Module.h"
-
-
-static XF86ModuleVersionInfo VersRec =
-{
- "mfb",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- 1, 0, 0,
- ABI_CLASS_ANSIC, /* Only need the ansic layer */
- ABI_ANSIC_VERSION,
- MOD_CLASS_NONE,
- {0,0,0,0} /* signature, to be patched into the file by a tool */
-};
-
-XF86ModuleData mfbModuleData = { &VersRec, NULL, NULL };
-
-#endif
diff --git a/nx-X11/programs/Xserver/mfb/mfbpixmap.c b/nx-X11/programs/Xserver/mfb/mfbpixmap.c
deleted file mode 100644
index ad0dfe79f..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbpixmap.c
+++ /dev/null
@@ -1,298 +0,0 @@
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbpixmap.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-
-/* pixmap management
- written by drewry, september 1986
-
- on a monchrome device, a pixmap is a bitmap.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/Xmd.h>
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "maskbits.h"
-
-#include "mfb.h"
-#include "mi.h"
-
-#include "servermd.h"
-
-
-PixmapPtr
-mfbCreatePixmap (pScreen, width, height, depth)
- ScreenPtr pScreen;
- int width;
- int height;
- int depth;
-{
- PixmapPtr pPixmap;
- size_t datasize;
- size_t paddedWidth;
-
- if (depth != 1)
- return NullPixmap;
- paddedWidth = BitmapBytePad(width);
- if (paddedWidth / 4 > 32767 || height > 32767)
- return NullPixmap;
- datasize = height * paddedWidth;
- pPixmap = AllocatePixmap(pScreen, datasize);
- if (!pPixmap)
- return NullPixmap;
- pPixmap->drawable.type = DRAWABLE_PIXMAP;
- pPixmap->drawable.class = 0;
- pPixmap->drawable.pScreen = pScreen;
- pPixmap->drawable.depth = depth;
- pPixmap->drawable.bitsPerPixel = depth;
- pPixmap->drawable.id = 0;
- pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- pPixmap->drawable.x = 0;
- pPixmap->drawable.y = 0;
- pPixmap->drawable.width = width;
- pPixmap->drawable.height = height;
- pPixmap->devKind = paddedWidth;
- pPixmap->refcnt = 1;
-#ifdef PIXPRIV
- pPixmap->devPrivate.ptr = datasize ?
- (pointer)((char *)pPixmap + pScreen->totalPixmapSize) : NULL;
-#else
- pPixmap->devPrivate.ptr = (pointer)(pPixmap + 1);
-#endif
- return pPixmap;
-}
-
-
-Bool
-mfbDestroyPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- if(--pPixmap->refcnt)
- return TRUE;
- xfree(pPixmap);
- return TRUE;
-}
-
-
-PixmapPtr
-mfbCopyPixmap(pSrc)
- register PixmapPtr pSrc;
-{
- register PixmapPtr pDst;
- int size;
- ScreenPtr pScreen;
-
- size = pSrc->drawable.height * pSrc->devKind;
- pScreen = pSrc->drawable.pScreen;
- pDst = (*pScreen->CreatePixmap) (pScreen, pSrc->drawable.width,
- pSrc->drawable.height, pSrc->drawable.depth);
- if (!pDst)
- return NullPixmap;
- memmove((char *)pDst->devPrivate.ptr, (char *)pSrc->devPrivate.ptr, size);
- return pDst;
-}
-
-
-/* replicates a pattern to be a full 32 bits wide.
- relies on the fact that each scnaline is longword padded.
- doesn't do anything if pixmap is not a factor of 32 wide.
- changes width field of pixmap if successful, so that the fast
- XRotatePixmap code gets used if we rotate the pixmap later.
-
- calculate number of times to repeat
- for each scanline of pattern
- zero out area to be filled with replicate
- left shift and or in original as many times as needed
-*/
-void
-mfbPadPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- register int width = pPixmap->drawable.width;
- register int h;
- register PixelType mask;
- register PixelType *p;
- register PixelType bits; /* real pattern bits */
- register int i;
- int rep; /* repeat count for pattern */
-
- if (width >= PPW)
- return;
-
- rep = PPW/width;
- if (rep*width != PPW)
- return;
-
- mask = endtab[width];
-
- p = (PixelType *)(pPixmap->devPrivate.ptr);
- for (h=0; h < pPixmap->drawable.height; h++)
- {
- *p &= mask;
- bits = *p;
- for(i=1; i<rep; i++)
- {
- bits = SCRRIGHT(bits, width);
- *p |= bits;
- }
- p++;
- }
- pPixmap->drawable.width = PPW;
-}
-
-/* Rotates pixmap pPix by w pixels to the right on the screen. Assumes that
- * words are PPW bits wide, and that the least significant bit appears on the
- * left.
- */
-void
-mfbXRotatePixmap(pPix, rw)
- PixmapPtr pPix;
- register int rw;
-{
- register PixelType *pw, *pwFinal;
- register PixelType t;
-
- if (pPix == NullPixmap)
- return;
-
- pw = (PixelType *)pPix->devPrivate.ptr;
- rw %= (int)pPix->drawable.width;
- if (rw < 0)
- rw += (int)pPix->drawable.width;
- if(pPix->drawable.width == PPW)
- {
- pwFinal = pw + pPix->drawable.height;
- while(pw < pwFinal)
- {
- t = *pw;
- *pw++ = SCRRIGHT(t, rw) |
- (SCRLEFT(t, (PPW-rw)) & endtab[rw]);
- }
- }
- else
- {
- /* We no longer do this. Validate doesn't try to rotate odd-size
- * tiles or stipples. mfbUnnatural<tile/stipple>FS works directly off
- * the unrotate tile/stipple in the GC
- */
- ErrorF("X internal error: trying to rotate odd-sized pixmap.\n");
- }
-
-}
-
-/* Rotates pixmap pPix by h lines. Assumes that h is always less than
- pPix->height
- works on any width.
- */
-void
-mfbYRotatePixmap(pPix, rh)
- register PixmapPtr pPix;
- int rh;
-{
- int nbyDown; /* bytes to move down to row 0; also offset of
- row rh */
- int nbyUp; /* bytes to move up to line rh; also
- offset of first line moved down to 0 */
- char *pbase;
- char *ptmp;
- int height;
-
- if (pPix == NullPixmap)
- return;
- height = (int) pPix->drawable.height;
- rh %= height;
- if (rh < 0)
- rh += height;
-
- pbase = (char *)pPix->devPrivate.ptr;
-
- nbyDown = rh * pPix->devKind;
- nbyUp = (pPix->devKind * height) - nbyDown;
- if(!(ptmp = (char *)ALLOCATE_LOCAL(nbyUp)))
- return;
-
- memmove(ptmp, pbase, nbyUp); /* save the low rows */
- memmove(pbase, pbase+nbyUp, nbyDown); /* slide the top rows down */
- memmove(pbase+nbyDown, ptmp, nbyUp); /* move lower rows up to row rh */
- DEALLOCATE_LOCAL(ptmp);
-}
-
-void
-mfbCopyRotatePixmap(psrcPix, ppdstPix, xrot, yrot)
- register PixmapPtr psrcPix, *ppdstPix;
- int xrot, yrot;
-{
- register PixmapPtr pdstPix;
-
- if ((pdstPix = *ppdstPix) &&
- (pdstPix->devKind == psrcPix->devKind) &&
- (pdstPix->drawable.height == psrcPix->drawable.height))
- {
- memmove((char *)pdstPix->devPrivate.ptr,
- (char *)psrcPix->devPrivate.ptr,
- psrcPix->drawable.height * psrcPix->devKind);
- pdstPix->drawable.width = psrcPix->drawable.width;
- pdstPix->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- }
- else
- {
- if (pdstPix)
- /* FIX XBUG 6168 */
- (*pdstPix->drawable.pScreen->DestroyPixmap)(pdstPix);
- *ppdstPix = pdstPix = mfbCopyPixmap(psrcPix);
- if (!pdstPix)
- return;
- }
- mfbPadPixmap(pdstPix);
- if (xrot)
- mfbXRotatePixmap(pdstPix, xrot);
- if (yrot)
- mfbYRotatePixmap(pdstPix, yrot);
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbply1rct.c b/nx-X11/programs/Xserver/mfb/mfbply1rct.c
deleted file mode 100644
index 9b783f609..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbply1rct.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * $Xorg: mfbply1rct.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $
- *
-Copyright 1990, 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.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* $XFree86: xc/programs/Xserver/mfb/mfbply1rct.c,v 1.7tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-#if defined(mips) || defined(sparc)
-#define GetHighWord(x) (((int) (x)) >> 16)
-#else
-#define GetHighWord(x) (((int) (x)) / 65536)
-#endif
-
-#if IMAGE_BYTE_ORDER == MSBFirst
-#define intToCoord(i,x,y) (((x) = GetHighWord(i)), ((y) = (int) ((short) (i))))
-#define coordToInt(x,y) (((x) << 16) | ((y) & 0xffff))
-#define intToX(i) (GetHighWord(i))
-#define intToY(i) ((int) ((short) i))
-#else
-#define intToCoord(i,x,y) (((x) = (int) ((short) (i))), ((y) = GetHighWord(i)))
-#define coordToInt(x,y) (((y) << 16) | ((x) & 0xffff))
-#define intToX(i) ((int) ((short) (i)))
-#define intToY(i) (GetHighWord(i))
-#endif
-
-void
-MFBFILLPOLY1RECT (pDrawable, pGC, shape, mode, count, ptsIn)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int shape;
- int mode;
- int count;
- DDXPointPtr ptsIn;
-{
- int nlwidth;
- PixelType *addrl, *addr;
- int maxy;
- int origin;
- register int vertex1, vertex2;
- int c;
- BoxPtr extents;
- int clip;
- int y;
- int *vertex1p = NULL, *vertex2p;
- int *endp;
- int x1 = 0, x2 = 0;
- int dx1 = 0, dx2 = 0;
- int dy1 = 0, dy2 = 0;
- int e1 = 0, e2 = 0;
- int step1 = 0, step2 = 0;
- int sign1 = 0, sign2 = 0;
- int h;
- int l, r;
- PixelType mask, bits = ~((PixelType)0);
- int nmiddle;
-
- if (mode == CoordModePrevious || shape != Convex ||
- REGION_NUM_RECTS(pGC->pCompositeClip) != 1)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
- origin = *((int *) &pDrawable->x);
- vertex2 = origin - ((origin & 0x8000) << 1);
- extents = &pGC->pCompositeClip->extents;
- vertex1 = *((int *) &extents->x1) - vertex2;
- vertex2 = *((int *) &extents->x2) - vertex2 - 0x00010001;
- clip = 0;
- y = 32767;
- maxy = 0;
- vertex2p = (int *) ptsIn;
- endp = vertex2p + count;
- while (count--)
- {
- c = *vertex2p;
- clip |= (c - vertex1) | (vertex2 - c);
- c = intToY(c);
- if (c < y)
- {
- y = c;
- vertex1p = vertex2p;
- }
- vertex2p++;
- if (c > maxy)
- maxy = c;
- }
- if (y == maxy)
- return;
-
- if (clip & 0x80008000)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, vertex2p - (int *) ptsIn, ptsIn);
- return;
- }
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrl);
- addrl = mfbScanlineDelta(addrl, y + pDrawable->y, nlwidth);
- origin = intToX(origin);
- vertex2p = vertex1p;
- vertex2 = vertex1 = *vertex2p++;
- if (vertex2p == endp)
- vertex2p = (int *) ptsIn;
-#define Setup(c,x,vertex,dx,dy,e,sign,step) {\
- x = intToX(vertex); \
- if ((dy = intToY(c) - y)) { \
- dx = intToX(c) - x; \
- step = 0; \
- if (dx >= 0) \
- { \
- e = 0; \
- sign = 1; \
- if (dx >= dy) {\
- step = dx / dy; \
- dx = dx % dy; \
- } \
- } \
- else \
- { \
- e = 1 - dy; \
- sign = -1; \
- dx = -dx; \
- if (dx >= dy) { \
- step = - (dx / dy); \
- dx = dx % dy; \
- } \
- } \
- } \
- x += origin; \
- vertex = c; \
-}
-
-#define Step(x,dx,dy,e,sign,step) {\
- x += step; \
- if ((e += dx) > 0) \
- { \
- x += sign; \
- e -= dy; \
- } \
-}
- for (;;)
- {
- if (y == intToY(vertex1))
- {
- do
- {
- if (vertex1p == (int *) ptsIn)
- vertex1p = endp;
- c = *--vertex1p;
- Setup (c,x1,vertex1,dx1,dy1,e1,sign1,step1)
- } while (y >= intToY(vertex1));
- h = dy1;
- }
- else
- {
- Step(x1,dx1,dy1,e1,sign1,step1)
- h = intToY(vertex1) - y;
- }
- if (y == intToY(vertex2))
- {
- do
- {
- c = *vertex2p++;
- if (vertex2p == endp)
- vertex2p = (int *) ptsIn;
- Setup (c,x2,vertex2,dx2,dy2,e2,sign2,step2)
- } while (y >= intToY(vertex2));
- if (dy2 < h)
- h = dy2;
- }
- else
- {
- Step(x2,dx2,dy2,e2,sign2,step2)
- if ((c = (intToY(vertex2) - y)) < h)
- h = c;
- }
- /* fill spans for this segment */
- y += h;
- for (;;)
- {
- l = x1;
- r = x2;
- nmiddle = x2 - x1;
- if (nmiddle < 0)
- {
- nmiddle = -nmiddle;
- l = x2;
- r = x1;
- }
- c = l & PIM;
- l -= c;
- l = l >> PWSH;
- addr = addrl + l;
- if (c + nmiddle < PPW)
- {
- mask = SCRRIGHT (bits,c) ^ SCRRIGHT (bits,c+nmiddle);
- *addr OPEQ mask;
- }
- else
- {
- if (c)
- {
- mask = SCRRIGHT(bits, c);
- *addr OPEQ mask;
- nmiddle += c - PPW;
- addr++;
- }
- nmiddle >>= PWSH;
- Duff (nmiddle, *addr++ EQWHOLEWORD)
- if ((mask = ~SCRRIGHT(bits, r & PIM)))
- *addr OPEQ mask;
- }
- if (!--h)
- break;
- mfbScanlineInc(addrl, nlwidth);
- Step(x1,dx1,dy1,e1,sign1,step1)
- Step(x2,dx2,dy2,e2,sign2,step2)
- }
- if (y == maxy)
- break;
- mfbScanlineInc(addrl, nlwidth);
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbplygblt.c b/nx-X11/programs/Xserver/mfb/mfbplygblt.c
deleted file mode 100644
index 275e8c646..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbplygblt.c
+++ /dev/null
@@ -1,399 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbplygblt.c,v 3.4tsi Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbplygblt.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-#include "miscstruct.h"
-
-/*
- we should eventually special-case fixed-width fonts, although
-its more important for ImageText, which is meant for terminal
-emulators.
-
- this works for fonts with glyphs <= 32 bits wide.
-
- the clipping calculations are done for worst-case fonts.
-we make no assumptions about the heights, widths, or bearings
-of the glyphs. if we knew that the glyphs are all the same height,
-we could clip the tops and bottoms per clipping box, rather
-than per character per clipping box. if we knew that the glyphs'
-left and right bearings were well-behaved, we could clip a single
-character at the start, output until the last unclipped
-character, and then clip the last one. this is all straightforward
-to determine based on max-bounds and min-bounds from the font.
- there is some inefficiency introduced in the per-character
-clipping to make what's going on clearer.
-
- (it is possible, for example, for a font to be defined in which the
-next-to-last character in a font would be clipped out, but the last
-one wouldn't. the code below deals with this.)
-
- PolyText looks at the fg color and the rasterop; mfbValidateGC
-swaps in the right routine after looking at the reduced ratserop
-in the private field of the GC.
-
- the register allocations are provisional; in particualr startmask and
-endmask might not be the right things. pglyph, xoff, pdst, and tmpSrc
-are fairly obvious, though.
-
- to avoid source proliferation, this file is compiled
-three times:
- MFBPOLYGLYPHBLT OPEQ
- mfbPolyGlyphBltWhite |=
- mfbPolyGlyphBltBlack &=~
- mfbPolyGlyphBltInvert ^=
-*/
-
-void
-MFBPOLYGLYPHBLT(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs (unused in R5) */
-{
- ExtentInfoRec info; /* used by QueryGlyphExtents() */
- BoxRec bbox; /* string's bounding box */
-
- CharInfoPtr pci;
- int xorg, yorg; /* origin of drawable in bitmap */
- int widthDst; /* width of dst in longwords */
-
- /* these keep track of the character origin */
- PixelType *pdstBase;
- /* points to longword with character origin */
- int xchar; /* xorigin of char (mod 32) */
-
- /* these are used for placing the glyph */
- register int xoff; /* x offset of left edge of glyph (mod 32) */
- register PixelType *pdst;
- /* pointer to current longword in dst */
-
- int w; /* width of glyph in bits */
- int h; /* height of glyph */
- int widthGlyph; /* width of glyph, in bytes */
- register unsigned char *pglyph;
- /* pointer to current row of glyph */
-
- /* used for putting down glyph */
- register PixelType tmpSrc;
- /* for getting bits from glyph */
- register PixelType startmask;
- register PixelType endmask;
- register int nFirst;/* bits of glyph in current longword */
-
- if (!(pGC->planemask & 1))
- return;
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- mfbGetPixelWidthAndPointer(pDrawable, widthDst, pdstBase);
-
- x += xorg;
- y += yorg;
-
- QueryGlyphExtents(pGC->font, ppci, (unsigned long)nglyph, &info);
- bbox.x1 = x + info.overallLeft;
- bbox.x2 = x + info.overallRight;
- bbox.y1 = y - info.overallAscent;
- bbox.y2 = y + info.overallDescent;
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox))
- {
- case rgnOUT:
- break;
- case rgnIN:
- pdstBase = mfbScanlineNoBankSwitch(pdstBase, x, y, widthDst);
- xchar = x & PIM;
-
- while(nglyph--)
- {
- pci = *ppci;
- pglyph = FONTGLYPHBITS(pglyphBase, pci);
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- h = pci->metrics.ascent + pci->metrics.descent;
- widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
-
- /* start at top scanline of glyph */
- pdst = pdstBase;
-
- /* find correct word in scanline and x offset within it
- for left edge of glyph
- */
- xoff = xchar + pci->metrics.leftSideBearing;
- if (xoff > PLST)
- {
- pdst++;
- xoff &= PIM;
- }
- else if (xoff < 0)
- {
- xoff += PPW;
- pdst--;
- }
-
- pdst = mfbScanlineDelta(pdst, -pci->metrics.ascent, widthDst);
-
- if ((xoff + w) <= PPW)
- {
- /* glyph all in one longword */
- maskpartialbits(xoff, w, startmask);
- while (h--)
- {
- getleftbits(pglyph, w, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- }
- else
- {
- /* glyph crosses longword boundary */
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- while (h--)
- {
- getleftbits(pglyph, w, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) OPEQ (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- } /* glyph crosses longwords boundary */
-
- /* update character origin */
- x += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST)
- {
- xchar -= PPW;
- pdstBase++;
- }
- else if (xchar < 0)
- {
- xchar += PPW;
- pdstBase--;
- }
- ppci++;
- } /* while nglyph-- */
- break;
- case rgnPART:
- {
- TEXTPOS *ppos;
- RegionPtr cclip;
- int nbox;
- BoxPtr pbox;
- int xpos; /* x position of char origin */
- int i;
- BoxRec clip;
- int leftEdge, rightEdge;
- int topEdge, bottomEdge;
- int glyphRow; /* first row of glyph not wholly
- clipped out */
- int glyphCol; /* leftmost visible column of glyph */
-#if GETLEFTBITS_ALIGNMENT > 1
- int getWidth; /* bits to get from glyph */
-#endif
-
- if(!(ppos = (TEXTPOS *)ALLOCATE_LOCAL(nglyph * sizeof(TEXTPOS))))
- return;
-
- pdstBase = mfbScanlineNoBankSwitch(pdstBase, x, y, widthDst);
- xpos = x;
- xchar = xpos & PIM;
-
- for (i=0; i<nglyph; i++)
- {
- pci = ppci[i];
-
- ppos[i].xpos = xpos;
- ppos[i].xchar = xchar;
- ppos[i].leftEdge = xpos + pci->metrics.leftSideBearing;
- ppos[i].rightEdge = xpos + pci->metrics.rightSideBearing;
- ppos[i].topEdge = y - pci->metrics.ascent;
- ppos[i].bottomEdge = y + pci->metrics.descent;
- ppos[i].pdstBase = pdstBase;
- ppos[i].widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
-
- xpos += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST)
- {
- xchar &= PIM;
- pdstBase++;
- }
- else if (xchar < 0)
- {
- xchar += PPW;
- pdstBase--;
- }
- }
-
- cclip = pGC->pCompositeClip;
- pbox = REGION_RECTS(cclip);
- nbox = REGION_NUM_RECTS(cclip);
-
- for (; --nbox >= 0; pbox++)
- {
- clip.x1 = max(bbox.x1, pbox->x1);
- clip.y1 = max(bbox.y1, pbox->y1);
- clip.x2 = min(bbox.x2, pbox->x2);
- clip.y2 = min(bbox.y2, pbox->y2);
- if ((clip.x2<=clip.x1) || (clip.y2<=clip.y1))
- continue;
-
- for(i=0; i<nglyph; i++)
- {
- pci = ppci[i];
- xchar = ppos[i].xchar;
-
- /* clip the left and right edges */
- if (ppos[i].leftEdge < clip.x1)
- leftEdge = clip.x1;
- else
- leftEdge = ppos[i].leftEdge;
-
- if (ppos[i].rightEdge > clip.x2)
- rightEdge = clip.x2;
- else
- rightEdge = ppos[i].rightEdge;
-
- w = rightEdge - leftEdge;
- if (w <= 0)
- continue;
-
- /* clip the top and bottom edges */
- if (ppos[i].topEdge < clip.y1)
- topEdge = clip.y1;
- else
- topEdge = ppos[i].topEdge;
-
- if (ppos[i].bottomEdge > clip.y2)
- bottomEdge = clip.y2;
- else
- bottomEdge = ppos[i].bottomEdge;
-
- h = bottomEdge - topEdge;
- if (h <= 0)
- continue;
-
- glyphRow = (topEdge - y) + pci->metrics.ascent;
- widthGlyph = ppos[i].widthGlyph;
- pglyph = FONTGLYPHBITS(pglyphBase, pci);
- pglyph += (glyphRow * widthGlyph);
-
- pdst = ppos[i].pdstBase;
-
- glyphCol = (leftEdge - ppos[i].xpos) -
- (pci->metrics.leftSideBearing);
-#if GETLEFTBITS_ALIGNMENT > 1
- getWidth = w + glyphCol;
-#endif
- xoff = xchar + (leftEdge - ppos[i].xpos);
- if (xoff > PLST)
- {
- xoff &= PIM;
- pdst++;
- }
- else if (xoff < 0)
- {
- xoff += PPW;
- pdst--;
- }
-
- pdst = mfbScanlineDelta(pdst, -(y-topEdge), widthDst);
-
- if ((xoff + w) <= PPW)
- {
- maskpartialbits(xoff, w, startmask);
- while (h--)
- {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- }
- else
- {
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- while (h--)
- {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) OPEQ (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- }
- } /* for each glyph */
- } /* while nbox-- */
- DEALLOCATE_LOCAL(ppos);
- break;
- }
- default:
- break;
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbpntarea.c b/nx-X11/programs/Xserver/mfb/mfbpntarea.c
deleted file mode 100644
index 0719e4ebd..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbpntarea.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbpntarea.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-/*
- the solid fillers are called for rectangles and window backgrounds.
- the boxes are already translated.
- maybe this should always take a pixmap instead of a drawable?
-
- NOTE:
- iy = ++iy < tileHeight ? iy : 0
-is equivalent to iy%= tileheight, and saves a division.
-*/
-
-/*
- MFBSOLIDFILLAREA OPEQ EQWHOLEOWRD
- mfbSolidWhiteArea |= = ~0
- mfbSolidBlackArea &=~ = 0
- mfbSolidInvertArea ^= ^= ~0
-
-EQWHOLEWORD is used to write whole longwords. it could use OPEQ,
-but *p++ |= ~0 on at least two compilers generates much
-worse code than *p++ = ~0. similarly for *p++ &= ~~0
-and *p++ = 0.
-
-*/
-
-/*ARGSUSED*/
-void
-MFBSOLIDFILLAREA(pDraw, nbox, pbox, alu, nop)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr nop;
-{
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- register int h; /* height of current box */
- register PixelType *p; /* pointer to bits we're writing */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType startmask;
- register PixelType endmask;/* masks for reggedy bits at either end of line */
- register int nlwExtra;
- /* to get from right of box to left of next span */
- int nlwMiddle; /* number of longwords between sides of boxes */
- PixelType *pbits; /* pointer to start of drawable */
-
- mfbGetPixelWidthAndPointer(pDraw, nlwidth, pbits);
-
- while (nbox--)
- {
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
- p = mfbScanline(pbits, pbox->x1, pbox->y1, nlwidth);
-
- if ( ((pbox->x1 & PIM) + w) < PPW)
- {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = nlwidth;
- Duff(h, *p OPEQ startmask; mfbScanlineInc(p, nlwExtra));
- }
- else
- {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
- nlwExtra = nlwidth - nlwMiddle;
-
- if (startmask && endmask)
- {
- nlwExtra -= 1;
- while (h--)
- {
- nlw = nlwMiddle;
- *p OPEQ startmask;
- p++;
- Duff(nlw, *p++ EQWHOLEWORD);
- *p OPEQ endmask;
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else if (startmask && !endmask)
- {
- nlwExtra -= 1;
- while (h--)
- {
- nlw = nlwMiddle;
- *p OPEQ startmask;
- p++;
- Duff(nlw, *p++ EQWHOLEWORD);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else if (!startmask && endmask)
- {
- while (h--)
- {
- nlw = nlwMiddle;
- Duff(nlw, *p++ EQWHOLEWORD);
- *p OPEQ endmask;
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else /* no ragged bits at either end */
- {
- while (h--)
- {
- nlw = nlwMiddle;
- Duff(nlw, *p++ EQWHOLEWORD);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- }
- pbox++;
- }
-}
-
-
-
-/* stipple a list of boxes
-
-you can use the reduced rasterop for stipples. if rrop is
-black, AND the destination with (not stipple pattern). if rrop is
-white OR the destination with the stipple pattern. if rrop is invert,
-XOR the destination with the stipple pattern.
-
- MFBSTIPPLEFILLAREA OPEQ
- mfbStippleWhiteArea |=
- mfbStippleBlackArea &=~
- mfbStippleInveryArea ^=
-*/
-
-/*ARGSUSED*/
-void
-MFBSTIPPLEFILLAREA(pDraw, nbox, pbox, alu, pstipple)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr pstipple;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
- register PixelType srcpix;
-
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType *p; /* pointer to bits we're writing */
- register int h; /* height of current box */
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwExtra; /* to get from right of box to left of next span */
- register int iy; /* index of current scanline in tile */
- PixelType *pbits; /* pointer to start of drawable */
-
- mfbGetPixelWidthAndPointer(pDraw, nlwidth, pbits);
-
- tileHeight = pstipple->drawable.height;
- psrc = (PixelType *)(pstipple->devPrivate.ptr);
-
- while (nbox--)
- {
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
- iy = pbox->y1 % tileHeight;
- p = mfbScanline(pbits, pbox->x1, pbox->y1, nlwidth);
-
- if ( ((pbox->x1 & PIM) + w) < PPW)
- {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = nlwidth;
- while (h--)
- {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- *p OPEQ (srcpix & startmask);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else
- {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
- nlwExtra = nlwidth - nlwMiddle;
-
- if (startmask && endmask)
- {
- nlwExtra -= 1;
- while (h--)
- {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p OPEQ (srcpix & startmask);
- p++;
- Duff (nlw, *p++ OPEQ srcpix);
- *p OPEQ (srcpix & endmask);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else if (startmask && !endmask)
- {
- nlwExtra -= 1;
- while (h--)
- {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p OPEQ (srcpix & startmask);
- p++;
- Duff(nlw, *p++ OPEQ srcpix);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else if (!startmask && endmask)
- {
- while (h--)
- {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ OPEQ srcpix);
- *p OPEQ (srcpix & endmask);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else /* no ragged bits at either end */
- {
- while (h--)
- {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ OPEQ srcpix);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- }
- pbox++;
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbpntwin.c b/nx-X11/programs/Xserver/mfb/mfbpntwin.c
deleted file mode 100644
index d1c19b691..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbpntwin.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* $Xorg: mfbpntwin.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-#include "mi.h"
-
-void
-mfbPaintWindow(pWin, pRegion, what)
- WindowPtr pWin;
- RegionPtr pRegion;
- int what;
-{
- register mfbPrivWin *pPrivWin;
-
- pPrivWin = (mfbPrivWin *)(pWin->devPrivates[mfbWindowPrivateIndex].ptr);
-
- switch (what) {
- case PW_BACKGROUND:
- switch (pWin->backgroundState) {
- case None:
- return;
- case ParentRelative:
- do {
- pWin = pWin->parent;
- } while (pWin->backgroundState == ParentRelative);
- (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion,
- what);
- return;
- case BackgroundPixmap:
- if (pPrivWin->fastBackground)
- {
- mfbTileAreaPPWCopy((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXcopy,
- pPrivWin->pRotatedBackground);
- return;
- }
- break;
- case BackgroundPixel:
- if (pWin->background.pixel & 1)
- mfbSolidWhiteArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXset, NullPixmap);
- else
- mfbSolidBlackArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXclear, NullPixmap);
- return;
- }
- break;
- case PW_BORDER:
- if (pWin->borderIsPixel)
- {
- if (pWin->border.pixel & 1)
- mfbSolidWhiteArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXset, NullPixmap);
- else
- mfbSolidBlackArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXclear, NullPixmap);
- return;
- }
- else if (pPrivWin->fastBorder)
- {
- mfbTileAreaPPWCopy((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXcopy,
- pPrivWin->pRotatedBorder);
- return;
- }
- break;
- }
- miPaintWindow(pWin, pRegion, what);
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbpolypnt.c b/nx-X11/programs/Xserver/mfb/mfbpolypnt.c
deleted file mode 100644
index e5ac4c874..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbpolypnt.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbpolypnt.c,v 1.4 2001/01/17 22:37:03 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbpolypnt.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "pixmapstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "miscstruct.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-void
-mfbPolyPoint(pDrawable, pGC, mode, npt, pptInit)
- register DrawablePtr pDrawable;
- GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt;
- xPoint *pptInit;
-{
-
- register BoxPtr pbox;
- register int nbox;
-
- register PixelType *addrl;
- int nlwidth;
-
- int nptTmp;
- register xPoint *ppt;
-
- register int x;
- register int y;
- register int rop;
- mfbPrivGC *pGCPriv;
-
- if (!(pGC->planemask & 1))
- return;
-
- pGCPriv = (mfbPrivGC *) pGC->devPrivates[mfbGCPrivateIndex].ptr;
- rop = pGCPriv->rop;
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrl);
-
- if ((mode == CoordModePrevious) && (npt > 1))
- {
- for (ppt = pptInit + 1, nptTmp = npt - 1; --nptTmp >= 0; ppt++)
- {
- ppt->x += (ppt-1)->x;
- ppt->y += (ppt-1)->y;
- }
- }
-
- nbox = REGION_NUM_RECTS(pGC->pCompositeClip);
- pbox = REGION_RECTS(pGC->pCompositeClip);
- for (; --nbox >= 0; pbox++)
- {
- if (rop == RROP_BLACK)
- {
- for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++)
- {
- x = ppt->x + pDrawable->x;
- y = ppt->y + pDrawable->y;
- if ((x >= pbox->x1) && (x < pbox->x2) &&
- (y >= pbox->y1) && (y < pbox->y2))
- *mfbScanline(addrl, x, y, nlwidth) &= rmask[x & PIM];
- }
- }
- else if (rop == RROP_WHITE)
- {
- for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++)
- {
- x = ppt->x + pDrawable->x;
- y = ppt->y + pDrawable->y;
- if ((x >= pbox->x1) && (x < pbox->x2) &&
- (y >= pbox->y1) && (y < pbox->y2))
- *mfbScanline(addrl, x, y, nlwidth) |= mask[x & PIM];
- }
- }
- else if (rop == RROP_INVERT)
- {
- for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++)
- {
- x = ppt->x + pDrawable->x;
- y = ppt->y + pDrawable->y;
- if ((x >= pbox->x1) && (x < pbox->x2) &&
- (y >= pbox->y1) && (y < pbox->y2))
- *mfbScanline(addrl, x, y, nlwidth) ^= mask[x & PIM];
- }
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbpushpxl.c b/nx-X11/programs/Xserver/mfb/mfbpushpxl.c
deleted file mode 100644
index 1cbdf9a5b..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbpushpxl.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbpushpxl.c,v 1.6tsi Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbpushpxl.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "gcstruct.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "miscstruct.h"
-#include "maskbits.h"
-#include "regionstr.h"
-#include "mfb.h"
-
-/* mfbSolidPP is courtesy of xhacks@csri.toronto.edu
-
- For fillStyle==FillSolid, a monochrome PushPixels can be reduced to
- a ROP in the following way: (Note that the ROP is the same as the
- result of ROP(src=0x3,dst=0x5))
-
- src=0011 0000 0011
- dst=0101 0101 0101
- rop fg=0 fg=1
- GXclear 0x0 0000 0100 0100 0
- GXand 0x1 0001 0100 0101 s&d
- GXandReverse 0x2 0010 0100 0110 s&~d
- GXcopy 0x3 0011 0100 0111 s
- GXandInverted 0x4 0100 0101 0100 ~s&d
- GXnoop 0x5 0101 0101 0101 d
- GXxor 0x6 0110 0101 0110 s^d
- GXor 0x7 0111 0101 0111 s|d
- GXnor 0x8 1000 0110 0100 ~s&~d
- GXequiv 0x9 1001 0110 0101 ~s^d
- GXinvert 0xa 1010 0110 0110 ~d
- GXorReverse 0xb 1011 0110 0111 s|~d
- GXcopyInverted 0xc 1100 0111 0100 ~s
- GXorInverted 0xd 1101 0111 0101 ~s|d
- GXnand 0xe 1110 0111 0110 ~s|~d
- GXset 0xf 1111 0111 0111 1
-
-For src=0: newRop = 0x4|(rop>>2)
-For src=1: newRop = 0x4|(rop&3)
-*/
-
-/* mfbSolidPP -- squeegees the forground color of pGC through pBitMap
- * into pDrawable. pBitMap is a stencil (dx by dy of it is used, it may
- * be bigger) which is placed on the drawable at xOrg, yOrg. Where a 1 bit
- * is set in the bitmap, the fill style is put onto the drawable using
- * the GC's logical function. The drawable is not changed where the bitmap
- * has a zero bit or outside the area covered by the stencil.
- */
-void
-mfbSolidPP(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
- GCPtr pGC;
- PixmapPtr pBitMap;
- DrawablePtr pDrawable;
- int dx, dy, xOrg, yOrg;
-{
- unsigned char alu;
- RegionRec rgnDst;
- DDXPointPtr pptSrc;
- BoxRec srcBox;
- register DDXPointPtr ppt;
- register BoxPtr pbox;
- int i;
-
- if (!(pGC->planemask & 1)) return;
-
- /* compute the reduced rop function */
- alu = pGC->alu;
- if (!(pGC->fgPixel&1)) alu >>= 2;
- alu = (alu & 0x3) | 0x4;
- if (alu == GXnoop) return;
-
- srcBox.x1 = xOrg;
- srcBox.y1 = yOrg;
- srcBox.x2 = xOrg + dx;
- srcBox.y2 = yOrg + dy;
- REGION_INIT(pGC->pScreen, &rgnDst, &srcBox, 1);
-
- /* clip the shape of the dst to the destination composite clip */
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, pGC->pCompositeClip);
-
- if (!REGION_NIL(&rgnDst))
- {
- i = REGION_NUM_RECTS(&rgnDst);
- pptSrc = (DDXPointPtr)ALLOCATE_LOCAL(i * sizeof(DDXPointRec));
- if(pptSrc)
- {
- for (pbox = REGION_RECTS(&rgnDst), ppt = pptSrc;
- --i >= 0;
- pbox++, ppt++)
- {
- ppt->x = pbox->x1 - xOrg;
- ppt->y = pbox->y1 - yOrg;
- }
- mfbDoBitblt((DrawablePtr)pBitMap, pDrawable, alu, &rgnDst, pptSrc);
- DEALLOCATE_LOCAL(pptSrc);
- }
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
-}
-
-#define NPT 128
-
-/* mfbPushPixels -- squeegees the forground color of pGC through pBitMap
- * into pDrawable. pBitMap is a stencil (dx by dy of it is used, it may
- * be bigger) which is placed on the drawable at xOrg, yOrg. Where a 1 bit
- * is set in the bitmap, the fill style is put onto the drawable using
- * the GC's logical function. The drawable is not changed where the bitmap
- * has a zero bit or outside the area covered by the stencil.
- */
-void
-mfbPushPixels(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
- GCPtr pGC;
- PixmapPtr pBitMap;
- DrawablePtr pDrawable;
- int dx, dy, xOrg, yOrg;
-{
- int h, dxDivPPW, ibEnd;
- PixelType *pwLineStart;
- register PixelType *pw, *pwEnd;
- register PixelType mask;
- register int ib;
- register PixelType w;
- register int ipt; /* index into above arrays */
- Bool fInBox;
- DDXPointRec pt[NPT];
- int width[NPT];
-
- /* Now scan convert the pixmap and use the result to call fillspans in
- * in the drawable with the original GC */
- ipt = 0;
- dxDivPPW = dx/PPW;
- for(h = 0; h < dy; h++)
- {
-
- pw = (PixelType *)(pointer)
- (((char *)(pBitMap->devPrivate.ptr))+(h * pBitMap->devKind));
- pwLineStart = pw;
- /* Process all words which are fully in the pixmap */
-
- fInBox = FALSE;
- pwEnd = pwLineStart + dxDivPPW;
- while(pw < pwEnd)
- {
- w = *pw;
- mask = endtab[1];
- for(ib = 0; ib < PPW; ib++)
- {
- if(w & mask)
- {
- if(!fInBox)
- {
- pt[ipt].x = ((pw - pwLineStart) << PWSH) + ib + xOrg;
- pt[ipt].y = h + yOrg;
- /* start new box */
- fInBox = TRUE;
- }
- }
- else
- {
- if(fInBox)
- {
- width[ipt] = ((pw - pwLineStart) << PWSH) +
- ib + xOrg - pt[ipt].x;
- if (++ipt >= NPT)
- {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt,
- width, TRUE);
- ipt = 0;
- }
- /* end box */
- fInBox = FALSE;
- }
- }
- mask = SCRRIGHT(mask, 1);
- }
- pw++;
- }
- ibEnd = dx & PIM;
- if(ibEnd)
- {
- /* Process final partial word on line */
- w = *pw;
- mask = endtab[1];
- for(ib = 0; ib < ibEnd; ib++)
- {
- if(w & mask)
- {
- if(!fInBox)
- {
- /* start new box */
- pt[ipt].x = ((pw - pwLineStart) << PWSH) + ib + xOrg;
- pt[ipt].y = h + yOrg;
- fInBox = TRUE;
- }
- }
- else
- {
- if(fInBox)
- {
- /* end box */
- width[ipt] = ((pw - pwLineStart) << PWSH) +
- ib + xOrg - pt[ipt].x;
- if (++ipt >= NPT)
- {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt,
- width, TRUE);
- ipt = 0;
- }
- fInBox = FALSE;
- }
- }
- mask = SCRRIGHT(mask, 1);
- }
- }
- /* If scanline ended with last bit set, end the box */
- if(fInBox)
- {
- width[ipt] = dx + xOrg - pt[ipt].x;
- if (++ipt >= NPT)
- {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt, width, TRUE);
- ipt = 0;
- }
- }
- }
- /* Flush any remaining spans */
- if (ipt)
- {
- (*pGC->ops->FillSpans)(pDrawable, pGC, ipt, pt, width, TRUE);
- }
-}
-
-mfbPushPixelsProc *mfbPushPixelsWeak(void)
-{
- return mfbPushPixels;
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbscrclse.c b/nx-X11/programs/Xserver/mfb/mfbscrclse.c
deleted file mode 100644
index 55445932c..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbscrclse.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* $Xorg: mfbscrclse.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XFree86: xc/programs/Xserver/mfb/mfbscrclse.c,v 1.3tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "mfb.h"
-#include "scrnintstr.h"
-
-/*ARGSUSED*/
-Bool
-mfbCloseScreen(index, pScreen)
- int index;
- register ScreenPtr pScreen;
-{
- xfree(pScreen->devPrivate);
- return TRUE;
-}
-
diff --git a/nx-X11/programs/Xserver/mfb/mfbscrinit.c b/nx-X11/programs/Xserver/mfb/mfbscrinit.c
deleted file mode 100644
index 9defac1df..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbscrinit.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbscrinit.c,v 3.8tsi Exp $ */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbscrinit.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h> /* for xColorItem */
-#include <X11/Xmd.h>
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-#include "resource.h"
-#include "colormap.h"
-#include "mfb.h"
-#include "mistruct.h"
-#include "dix.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "migc.h"
-#include "servermd.h"
-
-#ifdef PIXMAP_PER_WINDOW
-int frameWindowPrivateIndex;
-int frameGetWindowPrivateIndex(void) { return frameWindowPrivateIndex; }
-#endif
-int mfbWindowPrivateIndex;
-int mfbGetWindowPrivateIndex(void) { return mfbWindowPrivateIndex; }
-int mfbGCPrivateIndex;
-int mfbGetGCPrivateIndex(void) { return mfbGCPrivateIndex; }
-static unsigned long mfbGeneration = 0;
-
-static VisualRec visual = {
-/* vid class bpRGB cmpE nplan rMask gMask bMask oRed oGreen oBlue */
- 0, StaticGray, 1, 2, 1, 0, 0, 0, 0, 0, 0
-};
-
-static VisualID VID;
-
-static DepthRec depth = {
-/* depth numVid vids */
- 1, 1, &VID
-};
-
-
-BSFuncRec mfbBSFuncRec = {
- mfbSaveAreas,
- mfbRestoreAreas,
- (BackingStoreSetClipmaskRgnProcPtr) 0,
- (BackingStoreGetImagePixmapProcPtr) 0,
- (BackingStoreGetSpansPixmapProcPtr) 0,
-};
-
-
-Bool
-mfbAllocatePrivates(pScreen, pWinIndex, pGCIndex)
- ScreenPtr pScreen;
- int *pWinIndex, *pGCIndex;
-{
- if (mfbGeneration != serverGeneration)
- {
-#ifdef PIXMAP_PER_WINDOW
- frameWindowPrivateIndex = AllocateWindowPrivateIndex();
-#endif
- mfbWindowPrivateIndex = AllocateWindowPrivateIndex();
- mfbGCPrivateIndex = miAllocateGCPrivateIndex();
- visual.vid = FakeClientID(0);
- VID = visual.vid;
- mfbGeneration = serverGeneration;
- }
- if (pWinIndex)
- *pWinIndex = mfbWindowPrivateIndex;
- if (pGCIndex)
- *pGCIndex = mfbGCPrivateIndex;
- pScreen->GetWindowPixmap = mfbGetWindowPixmap;
- pScreen->SetWindowPixmap = mfbSetWindowPixmap;
- return (AllocateWindowPrivate(pScreen, mfbWindowPrivateIndex,
- sizeof(mfbPrivWin)) &&
- AllocateGCPrivate(pScreen, mfbGCPrivateIndex, sizeof(mfbPrivGC)));
-}
-
-
-/* dts * (inch/dot) * (25.4 mm / inch) = mm */
-Bool
-mfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
-{
- if (!mfbAllocatePrivates(pScreen, (int *)NULL, (int *)NULL))
- return FALSE;
- pScreen->defColormap = (Colormap) FakeClientID(0);
- /* whitePixel, blackPixel */
- pScreen->QueryBestSize = mfbQueryBestSize;
- /* SaveScreen */
- pScreen->GetImage = mfbGetImage;
- pScreen->GetSpans = mfbGetSpans;
- pScreen->CreateWindow = mfbCreateWindow;
- pScreen->DestroyWindow = mfbDestroyWindow;
- pScreen->PositionWindow = mfbPositionWindow;
- pScreen->ChangeWindowAttributes = mfbChangeWindowAttributes;
- pScreen->RealizeWindow = mfbMapWindow;
- pScreen->UnrealizeWindow = mfbUnmapWindow;
- pScreen->PaintWindowBackground = mfbPaintWindow;
- pScreen->PaintWindowBorder = mfbPaintWindow;
- pScreen->CopyWindow = mfbCopyWindow;
- pScreen->CreatePixmap = mfbCreatePixmap;
- pScreen->DestroyPixmap = mfbDestroyPixmap;
- pScreen->RealizeFont = mfbRealizeFont;
- pScreen->UnrealizeFont = mfbUnrealizeFont;
- pScreen->CreateGC = mfbCreateGC;
- pScreen->CreateColormap = mfbCreateColormap;
- pScreen->DestroyColormap = mfbDestroyColormap;
- pScreen->InstallColormap = mfbInstallColormap;
- pScreen->UninstallColormap = mfbUninstallColormap;
- pScreen->ListInstalledColormaps = mfbListInstalledColormaps;
- pScreen->StoreColors = (StoreColorsProcPtr)NoopDDA;
- pScreen->ResolveColor = mfbResolveColor;
- pScreen->BitmapToRegion = mfbPixmapToRegion;
- if (!miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width,
- 1, 1, &depth, VID, 1, &visual))
- return FALSE;
- pScreen->BackingStoreFuncs = mfbBSFuncRec;
- return TRUE;
-}
-
-PixmapPtr
-mfbGetWindowPixmap(pWin)
- WindowPtr pWin;
-{
-#ifdef PIXMAP_PER_WINDOW
- return (PixmapPtr)(pWin->devPrivates[frameWindowPrivateIndex].ptr);
-#else
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- return (* pScreen->GetScreenPixmap)(pScreen);
-#endif
-}
-
-void
-mfbSetWindowPixmap(pWin, pPix)
- WindowPtr pWin;
- PixmapPtr pPix;
-{
-#ifdef PIXMAP_PER_WINDOW
- pWin->devPrivates[frameWindowPrivateIndex].ptr = (pointer)pPix;
-#else
- (* pWin->drawable.pScreen->SetScreenPixmap)(pPix);
-#endif
-}
-
-void mfbFillInScreen(ScreenPtr pScreen)
-{
- pScreen->ChangeWindowAttributes = mfbChangeWindowAttributes;
- pScreen->RealizeWindow = mfbMapWindow;
- pScreen->UnrealizeWindow = mfbUnmapWindow;
- pScreen->DestroyPixmap = mfbDestroyPixmap;
- pScreen->RealizeFont = mfbRealizeFont;
- pScreen->UnrealizeFont = mfbUnrealizeFont;
- pScreen->BitmapToRegion = mfbPixmapToRegion;
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbsetsp.c b/nx-X11/programs/Xserver/mfb/mfbsetsp.c
deleted file mode 100644
index 485b4e265..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbsetsp.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbsetsp.c,v 1.6tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbsetsp.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "misc.h"
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-#include "servermd.h"
-
-
-/* mfbSetScanline -- copies the bits from psrc to the drawable starting at
- * (xStart, y) and continuing to (xEnd, y). xOrigin tells us where psrc
- * starts on the scanline. (I.e., if this scanline passes through multiple
- * boxes, we may not want to start grabbing bits at psrc but at some offset
- * further on.)
- */
-void
-mfbSetScanline(y, xOrigin, xStart, xEnd, psrc, alu, pdstBase, widthDst)
- int y;
- int xOrigin; /* where this scanline starts */
- int xStart; /* first bit to use from scanline */
- int xEnd; /* last bit to use from scanline + 1 */
- register PixelType *psrc;
- register int alu; /* raster op */
- PixelType *pdstBase; /* start of the drawable */
- int widthDst; /* width of drawable in words */
-{
- int w; /* width of scanline in bits */
- register PixelType *pdst; /* where to put the bits */
- register PixelType tmpSrc; /* scratch buffer to collect bits in */
- int dstBit; /* offset in bits from beginning of
- * word */
- register int nstart; /* number of bits from first partial */
- register int nend; /* " " last partial word */
- int offSrc;
- PixelType startmask, endmask;
- int nlMiddle, nl;
-
- pdst = mfbScanline(pdstBase, xStart, y, widthDst);
- psrc += (xStart - xOrigin) >> PWSH;
- offSrc = (xStart - xOrigin) & PIM;
- w = xEnd - xStart;
- dstBit = xStart & PIM;
-
- if (dstBit + w <= PPW)
- {
- getandputrop(psrc, offSrc, dstBit, w, pdst, alu)
- }
- else
- {
-
- maskbits(xStart, w, startmask, endmask, nlMiddle);
- if (startmask)
- nstart = PPW - dstBit;
- else
- nstart = 0;
- if (endmask)
- nend = xEnd & PIM;
- else
- nend = 0;
- if (startmask)
- {
- getandputrop(psrc, offSrc, dstBit, nstart, pdst, alu)
- pdst++;
- offSrc += nstart;
- if (offSrc > PLST)
- {
- psrc++;
- offSrc -= PPW;
- }
- }
- nl = nlMiddle;
- while (nl--)
- {
- getbits(psrc, offSrc, PPW, tmpSrc);
- DoRop(*pdst, alu, tmpSrc, *pdst);
- pdst++;
- psrc++;
- }
- if (endmask)
- {
- getandputrop0(psrc, offSrc, nend, pdst, alu);
- }
-
- }
-}
-
-
-
-/* SetSpans -- for each span copy pwidth[i] bits from psrc to pDrawable at
- * ppt[i] using the raster op from the GC. If fSorted is TRUE, the scanlines
- * are in increasing Y order.
- * Source bit lines are server scanline padded so that they always begin
- * on a word boundary.
- */
-void
-mfbSetSpans(pDrawable, pGC, pcharsrc, ppt, pwidth, nspans, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- char *pcharsrc;
- register DDXPointPtr ppt;
- int *pwidth;
- int nspans;
- int fSorted;
-{
- PixelType *psrc = (PixelType *)(pointer)pcharsrc;
- PixelType *pdstBase; /* start of dst bitmap */
- int widthDst; /* width of bitmap in words */
- register BoxPtr pbox, pboxLast, pboxTest;
- register DDXPointPtr pptLast;
- int alu;
- RegionPtr prgnDst;
- int xStart, xEnd;
- int yMax;
-
- alu = pGC->alu;
- prgnDst = pGC->pCompositeClip;
-
- pptLast = ppt + nspans;
-
- yMax = pDrawable->y + (int) pDrawable->height;
- mfbGetPixelWidthAndPointer(pDrawable, widthDst, pdstBase);
-
- pbox = REGION_RECTS(prgnDst);
- pboxLast = pbox + REGION_NUM_RECTS(prgnDst);
-
- if(fSorted)
- {
- /* scan lines sorted in ascending order. Because they are sorted, we
- * don't have to check each scanline against each clip box. We can be
- * sure that this scanline only has to be clipped to boxes at or after the
- * beginning of this y-band
- */
- pboxTest = pbox;
- while(ppt < pptLast)
- {
- pbox = pboxTest;
- if(ppt->y >= yMax)
- break;
- while(pbox < pboxLast)
- {
- if(pbox->y1 > ppt->y)
- {
- /* scanline is before clip box */
- break;
- }
- else if(pbox->y2 <= ppt->y)
- {
- /* clip box is before scanline */
- pboxTest = ++pbox;
- continue;
- }
- else if(pbox->x1 > ppt->x + *pwidth)
- {
- /* clip box is to right of scanline */
- break;
- }
- else if(pbox->x2 <= ppt->x)
- {
- /* scanline is to right of clip box */
- pbox++;
- continue;
- }
-
- /* at least some of the scanline is in the current clip box */
- xStart = max(pbox->x1, ppt->x);
- xEnd = min(ppt->x + *pwidth, pbox->x2);
- mfbSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu,
- pdstBase, widthDst);
- if(ppt->x + *pwidth <= pbox->x2)
- {
- /* End of the line, as it were */
- break;
- }
- else
- pbox++;
- }
- /* We've tried this line against every box; it must be outside them
- * all. move on to the next point */
- ppt++;
- psrc += PixmapWidthInPadUnits(*pwidth, 1);
- pwidth++;
- }
- }
- else
- {
- /* scan lines not sorted. We must clip each line against all the boxes */
- while(ppt < pptLast)
- {
- if(ppt->y >= 0 && ppt->y < yMax)
- {
-
- for(pbox = REGION_RECTS(prgnDst); pbox< pboxLast; pbox++)
- {
- if(pbox->y1 > ppt->y)
- {
- /* rest of clip region is above this scanline,
- * skip it */
- break;
- }
- if(pbox->y2 <= ppt->y)
- {
- /* clip box is below scanline */
- pbox++;
- break;
- }
- if(pbox->x1 <= ppt->x + *pwidth &&
- pbox->x2 > ppt->x)
- {
- xStart = max(pbox->x1, ppt->x);
- xEnd = min(pbox->x2, ppt->x + *pwidth);
- mfbSetScanline(ppt->y, ppt->x, xStart, xEnd,
- psrc, alu, pdstBase, widthDst);
- }
-
- }
- }
- psrc += PixmapWidthInPadUnits(*pwidth, 1);
- ppt++;
- pwidth++;
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbtegblt.c b/nx-X11/programs/Xserver/mfb/mfbtegblt.c
deleted file mode 100644
index ac22aee0c..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbtegblt.c
+++ /dev/null
@@ -1,368 +0,0 @@
-/* $Xorg: mfbtegblt.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* $XFree86: xc/programs/Xserver/mfb/mfbtegblt.c,v 1.7 2001/01/17 22:37:03 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-/*
- this works for fonts with glyphs <= PPW bits wide.
-
- This should be called only with a terminal-emulator font;
-this means that the FIXED_METRICS flag is set, and that
-glyphbounds == charbounds.
-
- in theory, this goes faster; even if it doesn't, it reduces the
-flicker caused by writing a string over itself with image text (since
-the background gets repainted per character instead of per string.)
-this seems to be important for some converted X10 applications.
-
- Image text looks at the bits in the glyph and the fg and bg in the
-GC. it paints a rectangle, as defined in the protocol dcoument,
-and the paints the characters.
-
- to avoid source proliferation, this file is compiled
-two times:
- MFBTEGLYPHBLT OP
- mfbTEGlyphBltWhite (white text, black bg )
- mfbTEGlyphBltBlack ~ (black text, white bg )
-
-*/
-
-#if defined(NO_3_60_CG4) && defined(FASTPUTBITS) && defined(FASTGETBITS)
-#define FASTCHARS
-#endif
-
-/*
- * this macro "knows" that only characters <= 8 bits wide will
- * fit this case (which is why it is independent of GLYPHPADBYTES)
- */
-
-#if (BITMAP_BIT_ORDER == MSBFirst) && (GLYPHPADBYTES != 4)
-#if GLYPHPADBYTES == 1
-#define ShiftAmnt 24
-#else
-#define ShiftAmnt 16
-#endif
-
-/*
- * XXX XXX XXX There is something horribly, massively wrong here. There are
- * hardcoded shifts by 64 below; these cannot work on any present-day
- * architecture.
- */
-
-/*
- * Note: for BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER, SCRRIGHT() evaluates its
- * first argument more than once. Thus the imbedded char++ have to be moved.
- * (DHD)
- */
-#if BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER
-#define GetBits4 c = (*char1++ << ShiftAmnt) | \
- SCRRIGHT (*char2++ << ShiftAmnt, xoff2) | \
- SCRRIGHT (*char3++ << ShiftAmnt, xoff3) | \
- SCRRIGHT (*char4++ << ShiftAmnt, xoff4);
-#else /* BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER */
-#define GetBits4 c = (*char1++ << ShiftAmnt) | \
- SCRRIGHT (*char2 << ShiftAmnt, xoff2) | \
- SCRRIGHT (*char3 << ShiftAmnt, xoff3) | \
- SCRRIGHT (*char4 << ShiftAmnt, xoff4); \
- char2++; char3++; char4++;
-#endif /* BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER */
-
-#else /* (BITMAP_BIT_ORDER != MSBFirst) || (GLYPHPADBYTES == 4) */
-
-#if BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER
-#define GetBits4 c = *char1++ | \
- SCRRIGHT (*char2++, xoff2) | \
- SCRRIGHT (*char3++, xoff3) | \
- SCRRIGHT (*char4++, xoff4);
-#else /* BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER */
-#define GetBits4 c = *char1++ | \
- SCRRIGHT (*char2, xoff2) | \
- SCRRIGHT (*char3, xoff3) | \
- SCRRIGHT (*char4, xoff4); \
- char2++; char3++; char4++;
-#endif /* BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER */
-
-#endif /* BITMAP_BIT_ORDER && GLYPHPADBYTES */
-
-
-#if GLYPHPADBYTES == 1
-typedef unsigned char *glyphPointer;
-#define USE_LEFTBITS
-#endif
-
-#if GLYPHPADBYTES == 2
-typedef unsigned short *glyphPointer;
-#define USE_LEFTBITS
-#endif
-
-#if GLYPHPADBYTES == 4
-typedef unsigned int *glyphPointer;
-#endif
-
-#ifdef USE_LEFTBITS
-#define GetBits1 getleftbits (char1, widthGlyph, c); \
- c &= glyphMask; \
- char1 = (glyphPointer) (((char *) char1) + glyphBytes);
-#else
-#define GetBits1 c = *char1++;
-#endif
-
-void
-MFBTEGLYPHBLT(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- FontPtr pfont = pGC->font;
- int widthDst;
- PixelType *pdstBase; /* pointer to longword with top row
- of current glyph */
-
- int h; /* height of glyph and char */
- register int xpos; /* current x */
- int ypos; /* current y */
- int widthGlyph;
-
- int hTmp; /* counter for height */
- register PixelType startmask, endmask;
- int nfirst; /* used if glyphs spans a longword boundary */
- BoxRec bbox; /* for clipping */
- int widthGlyphs;
- register PixelType *dst;
- register PixelType c;
- register int xoff1, xoff2, xoff3, xoff4;
- register glyphPointer char1, char2, char3, char4;
-
-#ifdef USE_LEFTBITS
- register PixelType glyphMask;
- register PixelType tmpSrc;
- register int glyphBytes;
-#endif
-
- if (!(pGC->planemask & 1))
- return;
-
- mfbGetPixelWidthAndPointer(pDrawable, widthDst, pdstBase);
-
- xpos = x + pDrawable->x;
- ypos = y + pDrawable->y;
-
- widthGlyph = FONTMAXBOUNDS(pfont,characterWidth);
- h = FONTASCENT(pfont) + FONTDESCENT(pfont);
-
- xpos += FONTMAXBOUNDS(pfont,leftSideBearing);
- ypos -= FONTASCENT(pfont);
-
- bbox.x1 = xpos;
- bbox.x2 = xpos + (widthGlyph * nglyph);
- bbox.y1 = ypos;
- bbox.y2 = ypos + h;
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox))
- {
- case rgnPART:
- /* this is the WRONG thing to do, but it works.
- calling the non-terminal text is easy, but slow, given
- what we know about the font.
-
- the right thing to do is something like:
- for each clip rectangle
- compute at which row the glyph starts to be in it,
- and at which row the glyph ceases to be in it
- compute which is the first glyph inside the left
- edge, and the last one inside the right edge
- draw a fractional first glyph, using only
- the rows we know are in
- draw all the whole glyphs, using the appropriate rows
- draw any pieces of the last glyph, using the right rows
-
- this way, the code would take advantage of knowing that
- all glyphs are the same height and don't overlap.
-
- one day...
- */
- CLIPTETEXT(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
- case rgnOUT:
- return;
- }
- pdstBase = mfbScanlineDeltaNoBankSwitch(pdstBase, ypos, widthDst);
- widthGlyphs = widthGlyph * PGSZB;
-
-#ifdef USE_LEFTBITS
- glyphMask = endtab[widthGlyph];
- glyphBytes = GLYPHWIDTHBYTESPADDED(*ppci);
-#endif
-
- if (nglyph >= PGSZB && widthGlyphs <= PPW)
- {
- while (nglyph >= PGSZB)
- {
- nglyph -= PGSZB;
- xoff1 = xpos & PIM;
- xoff2 = widthGlyph;
- xoff3 = xoff2 + widthGlyph;
- xoff4 = xoff3 + widthGlyph;
- char1 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
- char2 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
- char3 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
- char4 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
-
- hTmp = h;
- dst = mfbScanlineOffset(pdstBase, (xpos >> PWSH)); /* switch now */
-
-#ifndef FASTCHARS
- if (xoff1 + widthGlyphs <= PPW)
- {
- maskpartialbits (xoff1, widthGlyphs, startmask);
-#endif
- while (hTmp--)
- {
- GetBits4
-#ifdef FASTCHARS
-# if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyphs;
-# endif
- FASTPUTBITS(OP(c), xoff1, widthGlyphs, dst);
-#else
- *(dst) = ((*dst) & ~startmask) | (OP(SCRRIGHT(c, xoff1)) & startmask);
-#endif
- mfbScanlineInc(dst, widthDst);
- }
-#ifndef FASTCHARS
- }
- else
- {
- maskPPWbits (xoff1, widthGlyphs, startmask, endmask);
- nfirst = PPW - xoff1;
- while (hTmp--)
- {
- GetBits4
- dst[0] = (dst[0] & ~startmask) |
- (OP(SCRRIGHT(c,xoff1)) & startmask);
- dst[1] = (dst[1] & ~endmask) |
- (OP(SCRLEFT(c,nfirst)) & endmask);
- mfbScanlineInc(dst, widthDst);
- }
- }
-#endif
- xpos += widthGlyphs;
- }
- }
-
- while(nglyph--)
- {
- xoff1 = xpos & PIM;
- char1 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
- hTmp = h;
- dst = mfbScanlineOffset(pdstBase, (xpos >> PWSH));
-
-#ifndef FASTCHARS
- if (xoff1 + widthGlyph <= PPW)
- {
- maskpartialbits (xoff1, widthGlyph, startmask);
-#endif
- while (hTmp--)
- {
-#ifdef FASTCHARS
-#ifdef USE_LEFTBITS
- FASTGETBITS (char1,0,widthGlyph,c);
- char1 = (glyphPointer) (((char *) char1) + glyphBytes);
-#else
- c = *char1++;
-#if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyph;
-#endif
-#endif
- FASTPUTBITS (OP(c),xoff1,widthGlyph,dst);
-#else
- GetBits1
- (*dst) = ((*dst) & ~startmask) | (OP(SCRRIGHT(c, xoff1)) & startmask);
-#endif
- mfbScanlineInc(dst, widthDst);
- }
-#ifndef FASTCHARS
- }
- else
- {
- maskPPWbits (xoff1, widthGlyph, startmask, endmask);
- nfirst = PPW - xoff1;
- while (hTmp--)
- {
- GetBits1
- dst[0] = (dst[0] & ~startmask) |
- (OP(SCRRIGHT(c,xoff1)) & startmask);
- dst[1] = (dst[1] & ~endmask) |
- (OP(SCRLEFT(c,nfirst)) & endmask);
- mfbScanlineInc(dst, widthDst);
- }
- }
-#endif
- xpos += widthGlyph;
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbtile.c b/nx-X11/programs/Xserver/mfb/mfbtile.c
deleted file mode 100644
index ecfa06952..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbtile.c
+++ /dev/null
@@ -1,240 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbtile.c,v 1.3 2003/02/18 21:30:01 tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $Xorg: mfbtile.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-#include "mergerop.h"
-/*
-
- the boxes are already translated.
-
- NOTE:
- iy = ++iy < tileHeight ? iy : 0
-is equivalent to iy%= tileheight, and saves a division.
-*/
-
-/*
- tile area with a PPW bit wide pixmap
-*/
-void
-MROP_NAME(mfbTileAreaPPW)(pDraw, nbox, pbox, alu, ptile)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr ptile;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
- register PixelType srcpix;
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- MROP_DECLARE_REG ()
- register int h; /* height of current box */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType *p; /* pointer to bits we're writing */
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwExtra; /* to get from right of box to left of next span */
- register int iy; /* index of current scanline in tile */
- PixelType *pbits; /* pointer to start of drawable */
-
- mfbGetPixelWidthAndPointer(pDraw, nlwidth, pbits);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = ptile->drawable.height;
- psrc = (PixelType *)(ptile->devPrivate.ptr);
-
- while (nbox--)
- {
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
- iy = pbox->y1 % tileHeight;
- p = mfbScanline(pbits, pbox->x1, pbox->y1, nlwidth);
-
- if ( ((pbox->x1 & PIM) + w) < PPW)
- {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = nlwidth;
- while (h--)
- {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- *p = MROP_MASK(srcpix,*p,startmask);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else
- {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
- nlwExtra = nlwidth - nlwMiddle;
-
- if (startmask && endmask)
- {
- nlwExtra -= 1;
- while (h--)
- {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK (srcpix,*p,startmask);
- p++;
- while (nlw--)
- {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else if (startmask && !endmask)
- {
- nlwExtra -= 1;
- while (h--)
- {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK(srcpix,*p,startmask);
- p++;
- while (nlw--)
- {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else if (!startmask && endmask)
- {
- while (h--)
- {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--)
- {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else /* no ragged bits at either end */
- {
- while (h--)
- {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--)
- {
- *p = MROP_SOLID (srcpix,*p);
- p++;
- }
- mfbScanlineInc(p, nlwExtra);
- }
- }
- }
- pbox++;
- }
-}
-
-#if (MROP) == 0
-void
-mfbTileAreaPPW (pDraw, nbox, pbox, alu, ptile)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr ptile;
-{
- void (*f)(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/);
-
- if (alu == GXcopy)
- f = mfbTileAreaPPWCopy;
- else
- f = mfbTileAreaPPWGeneral;
- (*f) (pDraw, nbox, pbox, alu, ptile);
-}
-#endif
diff --git a/nx-X11/programs/Xserver/mfb/mfbwindow.c b/nx-X11/programs/Xserver/mfb/mfbwindow.c
deleted file mode 100644
index 56f3f468a..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbwindow.c
+++ /dev/null
@@ -1,341 +0,0 @@
-/* $Xorg: mfbwindow.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/* $XFree86$ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "mfb.h"
-#include "mistruct.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-Bool
-mfbCreateWindow(pWin)
- register WindowPtr pWin;
-{
- register mfbPrivWin *pPrivWin;
-
- pPrivWin = (mfbPrivWin *)(pWin->devPrivates[mfbWindowPrivateIndex].ptr);
- pPrivWin->pRotatedBorder = NullPixmap;
- pPrivWin->pRotatedBackground = NullPixmap;
- pPrivWin->fastBackground = FALSE;
- pPrivWin->fastBorder = FALSE;
-
- return (TRUE);
-}
-
-/* This always returns true, because Xfree can't fail. It might be possible
- * on some devices for Destroy to fail */
-Bool
-mfbDestroyWindow(pWin)
- WindowPtr pWin;
-{
- register mfbPrivWin *pPrivWin;
-
- pPrivWin = (mfbPrivWin *)(pWin->devPrivates[mfbWindowPrivateIndex].ptr);
-
- if (pPrivWin->pRotatedBorder)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBorder);
- if (pPrivWin->pRotatedBackground)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBackground);
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool mfbMapWindow(pWindow)
- WindowPtr pWindow;
-{
- return (TRUE);
-}
-
-/* (x, y) is the upper left corner of the window on the screen
- do we really need to pass this? (is it a;ready in pWin->absCorner?)
- we only do the rotation for pixmaps that are 32 bits wide (padded
-or otherwise.)
- mfbChangeWindowAttributes() has already put a copy of the pixmap
-in pPrivWin->pRotated*
-*/
-
-/*ARGSUSED*/
-Bool
-mfbPositionWindow(pWin, x, y)
- register WindowPtr pWin;
- int x, y;
-{
- register mfbPrivWin *pPrivWin;
- int reset = 0;
-
- pPrivWin = (mfbPrivWin *)(pWin->devPrivates[mfbWindowPrivateIndex].ptr);
- if (pWin->backgroundState == BackgroundPixmap && pPrivWin->fastBackground)
- {
- mfbXRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- mfbYRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- reset = 1;
- }
-
- if (!pWin->borderIsPixel && pPrivWin->fastBorder)
- {
- while (pWin->backgroundState == ParentRelative)
- pWin = pWin->parent;
- mfbXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- mfbYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- reset = 1;
- }
- if (reset)
- {
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
-
- /* This is the "wrong" fix to the right problem, but it doesn't really
- * cost very much. When the window is moved, we need to invalidate any
- * RotatedPixmap that exists in any GC currently validated against this
- * window.
- */
- pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER;
-
- /* Again, we have no failure modes indicated by any of the routines
- * we've called, so we have to assume it worked */
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-mfbUnmapWindow(pWindow)
- WindowPtr pWindow;
-{
- return (TRUE);
-}
-
-/* UNCLEAN!
- this code calls the bitblt helper code directly.
-
- mfbCopyWindow copies only the parts of the destination that are
-visible in the source.
-*/
-
-
-void
-mfbCopyWindow(pWin, ptOldOrg, prgnSrc)
- WindowPtr pWin;
- DDXPointRec ptOldOrg;
- RegionPtr prgnSrc;
-{
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- RegionPtr prgnDst;
- register BoxPtr pbox;
- register int dx, dy;
- register int i, nbox;
- WindowPtr pwinRoot;
-
- pwinRoot = WindowTable[pWin->drawable.pScreen->myNum];
-
- prgnDst = REGION_CREATE(pWin->drawable.pScreen, NULL, 1);
-
- dx = ptOldOrg.x - pWin->drawable.x;
- dy = ptOldOrg.y - pWin->drawable.y;
- REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, -dx, -dy);
- REGION_INTERSECT(pWin->drawable.pScreen, prgnDst, &pWin->borderClip,
- prgnSrc);
-
- pbox = REGION_RECTS(prgnDst);
- nbox = REGION_NUM_RECTS(prgnDst);
- if(!(pptSrc = (DDXPointPtr )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec))))
- return;
- ppt = pptSrc;
-
- for (i=nbox; --i >= 0; ppt++, pbox++)
- {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- mfbDoBitblt((DrawablePtr)pwinRoot, (DrawablePtr)pwinRoot,
- GXcopy, prgnDst, pptSrc);
- DEALLOCATE_LOCAL(pptSrc);
- REGION_DESTROY(pWin->drawable.pScreen, prgnDst);
-}
-
-
-
-/* swap in correct PaintWindow* routine. If we can use a fast output
-routine (i.e. the pixmap is paddable to 32 bits), also pre-rotate a copy
-of it in devPrivate.
-*/
-Bool
-mfbChangeWindowAttributes(pWin, mask)
- register WindowPtr pWin;
- register unsigned long mask;
-{
- register unsigned long index;
- register mfbPrivWin *pPrivWin;
- WindowPtr pBgWin;
-
- pPrivWin = (mfbPrivWin *)(pWin->devPrivates[mfbWindowPrivateIndex].ptr);
- /*
- * When background state changes from ParentRelative and
- * we had previously rotated the fast border pixmap to match
- * the parent relative origin, rerotate to match window
- */
- if (mask & (CWBackPixmap | CWBackPixel) &&
- pWin->backgroundState != ParentRelative &&
- pPrivWin->fastBorder &&
- (pPrivWin->oldRotate.x != pWin->drawable.x ||
- pPrivWin->oldRotate.y != pWin->drawable.y))
- {
- mfbXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- mfbYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- while(mask)
- {
- index = lowbit (mask);
- mask &= ~index;
- switch(index)
- {
- case CWBackPixmap:
- if (pWin->backgroundState == None)
- {
- pPrivWin->fastBackground = FALSE;
- }
- else if (pWin->backgroundState == ParentRelative)
- {
- pPrivWin->fastBackground = FALSE;
- /* Rotate border to match parent origin */
- if (pPrivWin->pRotatedBorder) {
- for (pBgWin = pWin->parent;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- mfbXRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.x - pPrivWin->oldRotate.x);
- mfbYRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- }
- }
- else if ((pWin->background.pixmap->drawable.width <= PPW) &&
- !(pWin->background.pixmap->drawable.width &
- (pWin->background.pixmap->drawable.width - 1)))
- {
- mfbCopyRotatePixmap(pWin->background.pixmap,
- &pPrivWin->pRotatedBackground,
- pWin->drawable.x,
- pWin->drawable.y);
- if (pPrivWin->pRotatedBackground)
- {
- pPrivWin->fastBackground = TRUE;
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- else
- {
- pPrivWin->fastBackground = FALSE;
- }
- }
- else
- {
- pPrivWin->fastBackground = FALSE;
- }
- break;
-
- case CWBackPixel:
- pPrivWin->fastBackground = FALSE;
- break;
-
- case CWBorderPixmap:
- if ((pWin->border.pixmap->drawable.width <= PPW) &&
- !(pWin->border.pixmap->drawable.width &
- (pWin->border.pixmap->drawable.width - 1)))
- {
- for (pBgWin = pWin;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- mfbCopyRotatePixmap(pWin->border.pixmap,
- &pPrivWin->pRotatedBorder,
- pBgWin->drawable.x,
- pBgWin->drawable.y);
- if (pPrivWin->pRotatedBorder)
- {
- pPrivWin->fastBorder = TRUE;
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- }
- else
- {
- pPrivWin->fastBorder = FALSE;
- }
- }
- else
- {
- pPrivWin->fastBorder = FALSE;
- }
- break;
- case CWBorderPixel:
- pPrivWin->fastBorder = FALSE;
- break;
- }
- }
- /* Again, we have no failure modes indicated by any of the routines
- * we've called, so we have to assume it worked */
- return (TRUE);
-}
diff --git a/nx-X11/programs/Xserver/mfb/mfbzerarc.c b/nx-X11/programs/Xserver/mfb/mfbzerarc.c
deleted file mode 100644
index 92fd81dfb..000000000
--- a/nx-X11/programs/Xserver/mfb/mfbzerarc.c
+++ /dev/null
@@ -1,258 +0,0 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbzerarc.c,v 3.7 2002/09/27 01:57:47 dawes Exp $ */
-/************************************************************
-
-Copyright 1989, 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.
-
-********************************************************/
-
-/* $Xorg: mfbzerarc.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
-
-/* Derived from:
- * "Algorithm for drawing ellipses or hyperbolae with a digital plotter"
- * by M. L. V. Pitteway
- * The Computer Journal, November 1967, Volume 10, Number 3, pp. 282-289
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "mfb.h"
-#include "maskbits.h"
-#include "mizerarc.h"
-#include "mi.h"
-
-/*
- * Note: LEFTMOST must be the bit leftmost in the actual screen
- * representation. This depends also on the IMAGE_BYTE_ORDER.
- * LONG2CHARS() takes care of the re-ordering as required. (DHD)
- */
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define LEFTMOST ((PixelType) LONG2CHARS(((MfbBits)1 << PLST)))
-#else
-#define LEFTMOST ((PixelType) LONG2CHARS(1))
-#endif
-
-#define PixelateWhite(addr,yoff,xoff) \
- *mfbScanlineOffset(addr, (yoff)+((xoff)>>PWSH)) |= \
- SCRRIGHT (LEFTMOST, ((xoff) & PIM))
-#define PixelateBlack(addr,yoff,xoff) \
- *mfbScanlineOffset(addr, (yoff)+((xoff)>>PWSH)) &= \
- ~(SCRRIGHT (LEFTMOST, ((xoff) & PIM)))
-
-#define Pixelate(base,yoff,xoff) \
-{ \
- paddr = mfbScanlineOffset(base, (yoff) + ((xoff)>>PWSH)); \
- pmask = SCRRIGHT(LEFTMOST, (xoff) & PIM); \
- *paddr = (*paddr & ~pmask) | (pixel & pmask); \
-}
-
-#define DoPix(bit,base,yoff,xoff) if (mask & bit) Pixelate(base,yoff,xoff);
-
-static void
-mfbZeroArcSS(
- DrawablePtr pDraw,
- GCPtr pGC,
- xArc *arc)
-{
- miZeroArcRec info;
- Bool do360;
- register int x, y, a, b, d, mask;
- register int k1, k3, dx, dy;
- PixelType *addrl;
- PixelType *yorgl, *yorgol;
- PixelType pixel;
- int nlwidth, yoffset, dyoffset;
- PixelType pmask;
- register PixelType *paddr;
-
- if (((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->rop ==
- RROP_BLACK)
- pixel = 0;
- else
- pixel = ~0;
-
- mfbGetPixelWidthAndPointer(pDraw, nlwidth, addrl);
- do360 = miZeroArcSetup(arc, &info, TRUE);
- yorgl = addrl + ((info.yorg + pDraw->y) * nlwidth);
- yorgol = addrl + ((info.yorgo + pDraw->y) * nlwidth);
- info.xorg += pDraw->x;
- info.xorgo += pDraw->x;
- MIARCSETUP();
- yoffset = y ? nlwidth : 0;
- dyoffset = 0;
- mask = info.initialMask;
- if (!(arc->width & 1))
- {
- DoPix(2, yorgl, 0, info.xorgo);
- DoPix(8, yorgol, 0, info.xorgo);
- }
- if (!info.end.x || !info.end.y)
- {
- mask = info.end.mask;
- info.end = info.altend;
- }
- if (do360 && (arc->width == arc->height) && !(arc->width & 1))
- {
- int xoffset = nlwidth;
- PixelType *yorghl = mfbScanlineDeltaNoBankSwitch(yorgl, info.h, nlwidth);
- int xorghp = info.xorg + info.h;
- int xorghn = info.xorg - info.h;
-
- if (pixel)
- {
- while (1)
- {
- PixelateWhite(yorgl, yoffset, info.xorg + x);
- PixelateWhite(yorgl, yoffset, info.xorg - x);
- PixelateWhite(yorgol, -yoffset, info.xorg - x);
- PixelateWhite(yorgol, -yoffset, info.xorg + x);
- if (a < 0)
- break;
- PixelateWhite(yorghl, -xoffset, xorghp - y);
- PixelateWhite(yorghl, -xoffset, xorghn + y);
- PixelateWhite(yorghl, xoffset, xorghn + y);
- PixelateWhite(yorghl, xoffset, xorghp - y);
- xoffset += nlwidth;
- MIARCCIRCLESTEP(yoffset += nlwidth;);
- }
- }
- else
- {
- while (1)
- {
- PixelateBlack(yorgl, yoffset, info.xorg + x);
- PixelateBlack(yorgl, yoffset, info.xorg - x);
- PixelateBlack(yorgol, -yoffset, info.xorg - x);
- PixelateBlack(yorgol, -yoffset, info.xorg + x);
- if (a < 0)
- break;
- PixelateBlack(yorghl, -xoffset, xorghp - y);
- PixelateBlack(yorghl, -xoffset, xorghn + y);
- PixelateBlack(yorghl, xoffset, xorghn + y);
- PixelateBlack(yorghl, xoffset, xorghp - y);
- xoffset += nlwidth;
- MIARCCIRCLESTEP(yoffset += nlwidth;);
- }
- }
- x = info.w;
- yoffset = info.h * nlwidth;
- }
- else if (do360)
- {
- while (y < info.h || x < info.w)
- {
- MIARCOCTANTSHIFT(dyoffset = nlwidth;);
- Pixelate(yorgl, yoffset, info.xorg + x);
- Pixelate(yorgl, yoffset, info.xorgo - x);
- Pixelate(yorgol, -yoffset, info.xorgo - x);
- Pixelate(yorgol, -yoffset, info.xorg + x);
- MIARCSTEP(yoffset += dyoffset;, yoffset += nlwidth;);
- }
- }
- else
- {
- while (y < info.h || x < info.w)
- {
- MIARCOCTANTSHIFT(dyoffset = nlwidth;);
- if ((x == info.start.x) || (y == info.start.y))
- {
- mask = info.start.mask;
- info.start = info.altstart;
- }
- DoPix(1, yorgl, yoffset, info.xorg + x);
- DoPix(2, yorgl, yoffset, info.xorgo - x);
- DoPix(4, yorgol, -yoffset, info.xorgo - x);
- DoPix(8, yorgol, -yoffset, info.xorg + x);
- if ((x == info.end.x) || (y == info.end.y))
- {
- mask = info.end.mask;
- info.end = info.altend;
- }
- MIARCSTEP(yoffset += dyoffset;, yoffset += nlwidth;);
- }
- }
- if ((x == info.start.x) || (y == info.start.y))
- mask = info.start.mask;
- DoPix(1, yorgl, yoffset, info.xorg + x);
- DoPix(4, yorgol, -yoffset, info.xorgo - x);
- if (arc->height & 1)
- {
- DoPix(2, yorgl, yoffset, info.xorgo - x);
- DoPix(8, yorgol, -yoffset, info.xorg + x);
- }
-}
-
-void
-mfbZeroPolyArcSS(pDraw, pGC, narcs, parcs)
- DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- register xArc *arc;
- register int i;
- BoxRec box;
- int x2, y2;
- RegionPtr cclip;
-
- if (!(pGC->planemask & 1))
- return;
- cclip = pGC->pCompositeClip;
- for (arc = parcs, i = narcs; --i >= 0; arc++)
- {
- if (miCanZeroArc(arc))
- {
- box.x1 = arc->x + pDraw->x;
- box.y1 = arc->y + pDraw->y;
- /*
- * Because box.x2 and box.y2 get truncated to 16 bits, and the
- * RECT_IN_REGION test treats the resulting number as a signed
- * integer, the RECT_IN_REGION test alone can go the wrong way.
- * This can result in a server crash because the rendering
- * routines in this file deal directly with cpu addresses
- * of pixels to be stored, and do not clip or otherwise check
- * that all such addresses are within their respective pixmaps.
- * So we only allow the RECT_IN_REGION test to be used for
- * values that can be expressed correctly in a signed short.
- */
- x2 = box.x1 + (int)arc->width + 1;
- box.x2 = x2;
- y2 = box.y1 + (int)arc->height + 1;
- box.y2 = y2;
- if ( (x2 <= MAXSHORT) && (y2 <= MAXSHORT) &&
- (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) )
- mfbZeroArcSS(pDraw, pGC, arc);
- else
- miZeroPolyArc(pDraw, pGC, 1, arc);
- }
- else
- miPolyArc(pDraw, pGC, 1, arc);
- }
-}
diff --git a/nx-X11/programs/Xserver/mfb/module/Imakefile b/nx-X11/programs/Xserver/mfb/module/Imakefile
deleted file mode 100644
index bea44f4e8..000000000
--- a/nx-X11/programs/Xserver/mfb/module/Imakefile
+++ /dev/null
@@ -1,6 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/cfb/module/Imakefile,v 1.1 2002/05/31 15:12:56 dawes Exp $
-
-#define IHaveModules
-#define LinkDirectory ..
-
-#include "../Imakefile"
diff --git a/nx-X11/programs/Xserver/miext/layer/Imakefile b/nx-X11/programs/Xserver/miext/layer/Imakefile
deleted file mode 100644
index 32507d20a..000000000
--- a/nx-X11/programs/Xserver/miext/layer/Imakefile
+++ /dev/null
@@ -1,49 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/miext/layer/Imakefile,v 1.1 2001/05/29 04:54:13 keithp Exp $
-XCOMM
-XCOMM
-
-#define IHaveModules
-#include <Server.tmpl>
-
-#if (defined(XFree86Version) || defined(XorgVersion))
-#if DoLoadableServer
-XFMODSRC = laymodule.c
-XFMODOBJ = laymodule.o
-#endif
-#endif
-
-#if BuildRender
-RENDERSRC = layerpict.c
-RENDEROBJ = layerpict.o
-#endif
-
-SRCS = layergc.c \
- layerinit.c \
- $(RENDERSRC) \
- layerwin.c \
- $(XFMODSRC)
-
-OBJS = layergc.o \
- layerinit.o \
- $(RENDEROBJ) \
- layerwin.o \
- $(XFMODOBJ)
-
- INCLUDES = -I. -I../shadow -I../../mi -I../../fb -I../../include -I$(XINCLUDESRC) \
- -I$(FONTINCSRC) -I$(XF86SRC)/common $(EXTRAINCLUDES) \
- -I../../render -I$(EXTINCSRC)
- LINTLIBS = ../../dix/llib-ldix.ln ../../os/llib-los.ln \
- ../../mi/llib-lmi.ln
-
-NormalLibraryObjectRule()
-LibraryModuleTarget(layer,$(OBJS))
-LintLibraryTarget(layer,$(SRCS))
-
-NormalLintTarget($(SRCS))
-
-InstallLibraryModule(layer,$(MODULEDIR),.)
-
-DependTarget()
-
-InstallDriverSDKLibraryModule(layer,$(DRIVERSDKMODULEDIR),.)
-InstallDriverSDKNonExecFile(layer.h,$(DRIVERSDKINCLUDEDIR))
diff --git a/nx-X11/programs/Xserver/miext/layer/layer.h b/nx-X11/programs/Xserver/miext/layer/layer.h
deleted file mode 100644
index e8f3a856e..000000000
--- a/nx-X11/programs/Xserver/miext/layer/layer.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * $XFree86: xc/programs/Xserver/miext/layer/layer.h,v 1.4 2001/08/01 00:44:58 tsi Exp $
- *
- * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _LAYER_H_
-#define _LAYER_H_
-
-#include <shadow.h>
-
-#define LAYER_FB 0
-#define LAYER_SHADOW 1
-
-typedef struct _LayerKind *LayerKindPtr;
-typedef struct _LayerWin *LayerWinPtr;
-typedef struct _LayerList *LayerListPtr;
-typedef struct _LayerGC *LayerGCPtr;
-typedef struct _Layer *LayerPtr;
-typedef struct _LayerScreen *LayerScreenPtr;
-
-/*
- * We'll try to work without a list of windows in each layer
- * for now, this will make computing bounding boxes for each
- * layer rather expensive, so that may need to change at some point.
- */
-
-#define LAYER_SCREEN_PIXMAP ((PixmapPtr) 1)
-
-typedef struct _Layer {
- LayerPtr pNext; /* a list of all layers for this screen */
- LayerKindPtr pKind; /* characteristics of this layer */
- int refcnt; /* reference count, layer is freed when zero */
- int windows; /* number of windows, free pixmap when zero */
- int depth; /* window depth in this layer */
- PixmapPtr pPixmap; /* pixmap for this layer (may be frame buffer) */
- Bool freePixmap; /* whether to free this pixmap when done */
- RegionRec region; /* valid set of pPixmap for drawing */
- ShadowUpdateProc update; /* for shadow layers, update/window/closure values */
- ShadowWindowProc window;
- int randr;
- void *closure;
-} LayerRec;
-
-/*
- * Call this before wrapping stuff for acceleration, it
- * gives layer pointers to the raw frame buffer functions
- */
-
-Bool
-LayerStartInit (ScreenPtr pScreen);
-
-/*
- * Initialize wrappers for each acceleration type and
- * call this function, it will move the needed functions
- * into a new LayerKind and replace them with the generic
- * functions.
- */
-
-int
-LayerNewKind (ScreenPtr pScreen);
-
-/*
- * Finally, call this function and layer
- * will wrap the screen functions and prepare for execution
- */
-
-Bool
-LayerFinishInit (ScreenPtr pScreen);
-
-/*
- * At any point after LayerStartInit, a new layer can be created.
- */
-LayerPtr
-LayerCreate (ScreenPtr pScreen,
- int kind,
- int depth,
- PixmapPtr pPixmap,
- ShadowUpdateProc update,
- ShadowWindowProc window,
- int randr,
- void *closure);
-
-/*
- * Create a layer pixmap
- */
-Bool
-LayerCreatePixmap (ScreenPtr pScreen, LayerPtr pLayer);
-
-/*
- * Change a layer pixmap
- */
-void
-LayerSetPixmap (ScreenPtr pScreen, LayerPtr pLayer, PixmapPtr pPixmap);
-
-/*
- * Destroy a layer pixmap
- */
-void
-LayerDestroyPixmap (ScreenPtr pScreen, LayerPtr pLayer);
-
-/*
- * Change a layer kind
- */
-void
-LayerSetKind (ScreenPtr pScreen, LayerPtr pLayer, int kind);
-
-/*
- * Destroy a layer. The layer must not contain any windows.
- */
-void
-LayerDestroy (ScreenPtr pScreen, LayerPtr layer);
-
-/*
- * Add a window to a layer
- */
-Bool
-LayerWindowAdd (ScreenPtr pScreen, LayerPtr pLayer, WindowPtr pWin);
-
-/*
- * Remove a window from a layer
- */
-
-void
-LayerWindowRemove (ScreenPtr pScreen, LayerPtr pLayer, WindowPtr pWin);
-
-#endif /* _LAYER_H_ */
diff --git a/nx-X11/programs/Xserver/miext/layer/layergc.c b/nx-X11/programs/Xserver/miext/layer/layergc.c
deleted file mode 100644
index 343edfcf5..000000000
--- a/nx-X11/programs/Xserver/miext/layer/layergc.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * $XFree86: xc/programs/Xserver/miext/layer/layergc.c,v 1.4 2001/08/27 03:55:46 keithp Exp $
- *
- * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "layerstr.h"
-
-GCFuncs layerGCFuncs = {
- layerValidateGC, layerChangeGC, layerCopyGC, layerDestroyGC,
- layerChangeClip, layerDestroyClip, layerCopyClip
-};
-
-#if 0
-/*
- * XXX dont need this until this supports
- * separate clipping and multiple layers
- */
-GCOps layerGCOps = {
- layerFillSpans, layerSetSpans,
- layerPutImage, layerCopyArea,
- layerCopyPlane, layerPolyPoint,
- layerPolylines, layerPolySegment,
- layerPolyRectangle, layerPolyArc,
- layerFillPolygon, layerPolyFillRect,
- layerPolyFillArc, layerPolyText8,
- layerPolyText16, layerImageText8,
- layerImageText16, layerImageGlyphBlt,
- layerPolyGlyphBlt, layerPushPixels,
-#ifdef NEED_LINEHELPER
- NULL,
-#endif
- {NULL} /* devPrivate */
-};
-#endif
-
-Bool
-layerCreateGC (GCPtr pGC)
-{
- Bool ret = TRUE;
- LayerKindPtr pLayKind;
- ScreenPtr pScreen = pGC->pScreen;
- layerScrPriv(pScreen);
- layerGCPriv(pGC);
-
- /*
- * XXX assume the first layer can handle all GCs
- */
- pLayKind = &pLayScr->kinds[0];
- if (pLayScr->pLayers)
- pLayKind = pLayScr->pLayers->pKind;
- pLayGC->pKind = pLayKind;
- LayerUnwrap (pScreen,pLayGC->pKind,CreateGC);
-
- if (!(*pScreen->CreateGC) (pGC))
- ret = FALSE;
- LayerWrap (pScreen,pLayKind,CreateGC,layerCreateGC);
-
- LayerWrap (pGC,pLayGC,funcs,&layerGCFuncs);
-
- return ret;
-}
-
-void
-layerValidateGC(GCPtr pGC,
- unsigned long changes,
- DrawablePtr pDraw)
-{
- layerGCPriv(pGC);
- LayerKindPtr pKind;
-
- if (pDraw->type == DRAWABLE_WINDOW)
- {
- layerWinPriv ((WindowPtr) pDraw);
- pKind = layerWinLayer (pLayWin)->pKind;
- }
- else
- {
- /* XXX assume the first layer can handle all pixmaps */
- layerScrPriv (pDraw->pScreen);
- pKind = &pLayScr->kinds[0];
- if (pLayScr->pLayers)
- pKind = pLayScr->pLayers->pKind;
- }
-
- LayerUnwrap (pGC,pLayGC,funcs);
- if (pKind != pLayGC->pKind)
- {
- /*
- * Clean up the previous user
- */
- CreateGCProcPtr CreateGC;
- (*pGC->funcs->DestroyGC) (pGC);
-
- pGC->serialNumber = GC_CHANGE_SERIAL_BIT;
-
- pLayGC->pKind = pKind;
-
- /*
- * Temporarily unwrap Create GC and let
- * the new code setup the GC
- */
- CreateGC = pGC->pScreen->CreateGC;
- LayerUnwrap (pGC->pScreen, pLayGC->pKind, CreateGC);
- (*pGC->pScreen->CreateGC) (pGC);
- LayerWrap (pGC->pScreen, pLayGC->pKind, CreateGC, CreateGC);
- }
-
- (*pGC->funcs->ValidateGC) (pGC, changes, pDraw);
- LayerWrap(pGC,pLayGC,funcs,&layerGCFuncs);
-}
-
-void
-layerDestroyGC(GCPtr pGC)
-{
- layerGCPriv(pGC);
- LayerUnwrap (pGC,pLayGC,funcs);
- (*pGC->funcs->DestroyGC)(pGC);
- LayerWrap(pGC,pLayGC,funcs,&layerGCFuncs);
-}
-
-void
-layerChangeGC (GCPtr pGC,
- unsigned long mask)
-{
- layerGCPriv(pGC);
- LayerUnwrap (pGC,pLayGC,funcs);
- (*pGC->funcs->ChangeGC) (pGC, mask);
- LayerWrap(pGC,pLayGC,funcs,&layerGCFuncs);
-}
-
-void
-layerCopyGC (GCPtr pGCSrc,
- unsigned long mask,
- GCPtr pGCDst)
-{
- layerGCPriv(pGCDst);
- LayerUnwrap (pGCDst,pLayGC,funcs);
- (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst);
- LayerWrap(pGCDst,pLayGC,funcs,&layerGCFuncs);
-}
-
-void
-layerChangeClip (GCPtr pGC,
- int type,
- pointer pvalue,
- int nrects)
-{
- layerGCPriv(pGC);
- LayerUnwrap (pGC,pLayGC,funcs);
- (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects);
- LayerWrap(pGC,pLayGC,funcs,&layerGCFuncs);
-}
-
-void
-layerCopyClip(GCPtr pGCDst, GCPtr pGCSrc)
-{
- layerGCPriv(pGCDst);
- LayerUnwrap (pGCDst,pLayGC,funcs);
- (*pGCDst->funcs->CopyClip) (pGCDst, pGCSrc);
- LayerWrap(pGCDst,pLayGC,funcs,&layerGCFuncs);
-}
-
-void
-layerDestroyClip(GCPtr pGC)
-{
- layerGCPriv(pGC);
- LayerUnwrap (pGC,pLayGC,funcs);
- (*pGC->funcs->DestroyClip) (pGC);
- LayerWrap(pGC,pLayGC,funcs,&layerGCFuncs);
-}
-
diff --git a/nx-X11/programs/Xserver/miext/layer/layerinit.c b/nx-X11/programs/Xserver/miext/layer/layerinit.c
deleted file mode 100644
index 994c6747c..000000000
--- a/nx-X11/programs/Xserver/miext/layer/layerinit.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * $XFree86: xc/programs/Xserver/miext/layer/layerinit.c,v 1.6tsi Exp $
- *
- * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "layerstr.h"
-
-int layerScrPrivateIndex;
-int layerGCPrivateIndex;
-int layerWinPrivateIndex;
-int layerGeneration;
-
-/*
- * Call this before wrapping stuff for acceleration, it
- * gives layer pointers to the raw frame buffer functions
- */
-
-extern const GCFuncs fbGCFuncs;
-extern GCFuncs shadowGCFuncs;
-
-Bool
-LayerStartInit (ScreenPtr pScreen)
-{
- LayerScreenPtr pScrPriv;
-
- if (layerGeneration != serverGeneration)
- {
- layerScrPrivateIndex = AllocateScreenPrivateIndex ();
- if (layerScrPrivateIndex == -1)
- return FALSE;
- layerGCPrivateIndex = AllocateGCPrivateIndex ();
- if (layerGCPrivateIndex == -1)
- return FALSE;
- layerWinPrivateIndex = AllocateWindowPrivateIndex ();
- if (layerWinPrivateIndex == -1)
- return FALSE;
- layerGeneration = serverGeneration;
- }
- if (!AllocateGCPrivate (pScreen, layerGCPrivateIndex, sizeof (LayerGCRec)))
- return FALSE;
- if (!AllocateWindowPrivate (pScreen, layerWinPrivateIndex, sizeof (LayerWinRec)))
- return FALSE;
- pScrPriv = (LayerScreenPtr) xalloc (sizeof (LayerScreenRec));
- if (!pScrPriv)
- return FALSE;
- pScrPriv->nkinds = 0;
- pScrPriv->kinds = 0;
- pScrPriv->pLayers = 0;
- pScreen->devPrivates[layerScrPrivateIndex].ptr = (pointer) pScrPriv;
- /*
- * Add fb kind -- always 0
- */
- if (LayerNewKind (pScreen) < 0)
- {
- pScreen->devPrivates[layerScrPrivateIndex].ptr = 0;
- xfree (pScrPriv);
- return FALSE;
- }
- /*
- * Add shadow kind -- always 1
- */
- if (!shadowSetup (pScreen))
- return FALSE;
- if (LayerNewKind (pScreen) < 0)
- {
- pScreen->devPrivates[layerScrPrivateIndex].ptr = 0;
- xfree (pScrPriv->kinds);
- xfree (pScrPriv);
- return FALSE;
- }
- return TRUE;
-}
-
-/*
- * Initialize wrappers for each acceleration type and
- * call this function, it will move the needed functions
- * into a new LayerKind and replace them with the generic
- * functions.
- */
-
-int
-LayerNewKind (ScreenPtr pScreen)
-{
- layerScrPriv(pScreen);
- LayerKindPtr pLayKind, pLayKinds;
-#ifdef RENDER
- PictureScreenPtr ps = GetPictureScreen (pScreen);
-#endif
- LayerPtr pLayer;
-
- /*
- * Allocate a new kind structure
- */
- if (pLayScr->kinds)
- pLayKinds = (LayerKindPtr) xrealloc ((pointer) pLayScr->kinds,
- (pLayScr->nkinds + 1) * sizeof (LayerKindRec));
- else
- pLayKinds = (LayerKindPtr) xalloc (sizeof (LayerKindRec));
- if (!pLayKinds)
- return -1;
-
- /*
- * Fix up existing layers to point at the new kind
- */
- for (pLayer = pLayScr->pLayers; pLayer; pLayer = pLayer->pNext)
- {
- int kind = pLayer->pKind - pLayScr->kinds;
-
- pLayer->pKind = &pLayKinds[kind];
- }
-
- pLayScr->kinds = pLayKinds;
- pLayKind = &pLayScr->kinds[pLayScr->nkinds];
- pLayKind->kind = pLayScr->nkinds;
-
- /*
- * Extract wrapped functions from screen and stick in kind
- */
- pLayKind->CloseScreen = pScreen->CloseScreen;
-
- pLayKind->CreateWindow = pScreen->CreateWindow;
- pLayKind->DestroyWindow = pScreen->DestroyWindow;
- pLayKind->ChangeWindowAttributes = pScreen->ChangeWindowAttributes;
- pLayKind->PaintWindowBackground = pScreen->PaintWindowBackground;
- pLayKind->PaintWindowBorder = pScreen->PaintWindowBorder;
- pLayKind->CopyWindow = pScreen->CopyWindow;
-
- pLayKind->CreatePixmap = pScreen->CreatePixmap;
- pLayKind->DestroyPixmap = pScreen->DestroyPixmap;
-
- pLayKind->CreateGC = pScreen->CreateGC;
-
-#ifdef RENDER
- if (ps)
- {
- pLayKind->Composite = ps->Composite;
- pLayKind->Glyphs = ps->Glyphs;
- pLayKind->CompositeRects = ps->CompositeRects;
- }
-#endif
- /*
- * If not underlying frame buffer kind,
- * replace screen functions with those
- */
- if (pLayKind->kind != 0)
- {
- pScreen->CloseScreen = pLayKinds->CloseScreen;
-
- pScreen->CreateWindow = pLayKinds->CreateWindow;
- pScreen->DestroyWindow = pLayKinds->DestroyWindow;
- pScreen->ChangeWindowAttributes = pLayKinds->ChangeWindowAttributes;
- pScreen->PaintWindowBackground = pLayKinds->PaintWindowBackground;
- pScreen->PaintWindowBorder = pLayKinds->PaintWindowBorder;
- pScreen->CopyWindow = pLayKinds->CopyWindow;
-
- pScreen->CreatePixmap = pLayKinds->CreatePixmap;
- pScreen->DestroyPixmap = pLayKinds->DestroyPixmap;
-
- pScreen->CreateGC = pLayKinds->CreateGC;
-
-#ifdef RENDER
- if (ps)
- {
- ps->Composite = pLayKinds->Composite;
- ps->Glyphs = pLayKinds->Glyphs;
- ps->CompositeRects = pLayKinds->CompositeRects;
- }
-#endif
- }
-
- pLayScr->nkinds++;
- return pLayKind->kind;
-}
-
-/*
- * Finally, call this function and layer
- * will wrap the screen functions and prepare for execution
- */
-
-Bool
-LayerFinishInit (ScreenPtr pScreen)
-{
-#ifdef RENDER
- PictureScreenPtr ps = GetPictureScreen (pScreen);
-#endif
-
- pScreen->CloseScreen = layerCloseScreen;
-
- pScreen->CreateWindow = layerCreateWindow;
- pScreen->DestroyWindow = layerDestroyWindow;
- pScreen->ChangeWindowAttributes = layerChangeWindowAttributes;
- pScreen->PaintWindowBackground = layerPaintWindowBackground;
- pScreen->PaintWindowBorder = layerPaintWindowBorder;
- pScreen->CopyWindow = layerCopyWindow;
-
- pScreen->CreatePixmap = layerCreatePixmap;
- pScreen->DestroyPixmap = layerDestroyPixmap;
-
- pScreen->CreateGC = layerCreateGC;
-
-#ifdef RENDER
- if (ps)
- {
- ps->Composite = layerComposite;
- ps->Glyphs = layerGlyphs;
- ps->CompositeRects = layerCompositeRects;
- }
-#endif
-
- return TRUE;
-}
-
-/*
- * At any point after LayerStartInit, a new layer can be created.
- */
-LayerPtr
-LayerCreate (ScreenPtr pScreen,
- int kind,
- int depth,
- PixmapPtr pPixmap,
- ShadowUpdateProc update,
- ShadowWindowProc window,
- int randr,
- void *closure)
-{
- layerScrPriv(pScreen);
- LayerPtr pLay, *pPrev;
- LayerKindPtr pLayKind;
-
- if (kind < 0 || pLayScr->nkinds <= kind)
- return 0;
- pLayKind = &pLayScr->kinds[kind];
- pLay = (LayerPtr) xalloc (sizeof (LayerRec));
- if (!pLay)
- return 0;
- /*
- * Initialize the layer
- */
- pLay->pNext = 0;
- pLay->pKind = pLayKind;
- pLay->refcnt = 1;
- pLay->windows = 0;
- pLay->depth = depth;
- pLay->pPixmap = pPixmap;
- pLay->update = update;
- pLay->window = window;
- pLay->randr = randr;
- pLay->closure = closure;
- if (pPixmap == LAYER_SCREEN_PIXMAP)
- pLay->freePixmap = FALSE;
- else
- {
- pLay->freePixmap = TRUE;
- if (pPixmap)
- pPixmap->refcnt++;
- }
- REGION_NULL(pScreen, &pLay->region);
- /*
- * Hook the layer at the end of the list
- */
- for (pPrev = &pLayScr->pLayers; *pPrev; pPrev = &(*pPrev)->pNext)
- ;
- *pPrev = pLay;
- return pLay;
-}
-
-/*
- * Change a layer pixmap
- */
-void
-LayerSetPixmap (ScreenPtr pScreen, LayerPtr pLayer, PixmapPtr pPixmap)
-{
- LayerDestroyPixmap (pScreen, pLayer);
- pLayer->pPixmap = pPixmap;
- if (pPixmap == LAYER_SCREEN_PIXMAP)
- pLayer->freePixmap = FALSE;
- else
- {
- if (pPixmap)
- pPixmap->refcnt++;
- pLayer->freePixmap = TRUE;
- }
-}
-
-/*
- * Destroy a layer. The layer must not contain any windows.
- */
-void
-LayerDestroy (ScreenPtr pScreen, LayerPtr pLay)
-{
- layerScrPriv(pScreen);
- LayerPtr *pPrev;
-
- --pLay->refcnt;
- if (pLay->refcnt > 0)
- return;
- /*
- * Unhook the layer from the list
- */
- for (pPrev = &pLayScr->pLayers; *pPrev; pPrev = &(*pPrev)->pNext)
- if (*pPrev == pLay)
- {
- *pPrev = pLay->pNext;
- break;
- }
- /*
- * Free associated storage
- */
- LayerDestroyPixmap (pScreen, pLay);
- REGION_UNINIT (pScreen, &pLay->region);
- xfree (pLay);
-}
-
-/*
- * CloseScreen wrapper
- */
-Bool
-layerCloseScreen (int index, ScreenPtr pScreen)
-{
- layerScrPriv(pScreen);
- int kind;
-
- /* XXX this is a mess -- fbCloseScreen can only be called once,
- * and yet the intervening layers need to be called as well.
- */
- kind = pLayScr->nkinds - 1;
- pScreen->CloseScreen = pLayScr->kinds[kind].CloseScreen;
- (*pScreen->CloseScreen) (index, pScreen);
-
- /*
- * make sure the shadow layer is cleaned up as well
- */
- if (kind != LAYER_SHADOW)
- xfree (shadowGetScrPriv (pScreen));
-
- xfree (pLayScr->kinds);
- xfree (pLayScr);
- pScreen->devPrivates[layerScrPrivateIndex].ptr = 0;
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/miext/layer/layerpict.c b/nx-X11/programs/Xserver/miext/layer/layerpict.c
deleted file mode 100644
index 16e46f0ab..000000000
--- a/nx-X11/programs/Xserver/miext/layer/layerpict.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "layerstr.h"
-
-void
-layerComposite (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pMask,
- PicturePtr pDst,
- INT16 xSrc,
- INT16 ySrc,
- INT16 xMask,
- INT16 yMask,
- INT16 xDst,
- INT16 yDst,
- CARD16 width,
- CARD16 height)
-{
- LayerPtr pLayer;
- LayerWinLoopRec loop;
- DrawablePtr pDstDrawable = pDst->pDrawable;
- ScreenPtr pScreen = pDstDrawable->pScreen;
- PictureScreenPtr ps = GetPictureScreen (pScreen);
-
- if (pDstDrawable->type == DRAWABLE_WINDOW)
- {
- WindowPtr pWin = (WindowPtr) pDstDrawable;
- for (pLayer = LayerWindowFirst (pWin, &loop);
- pLayer;
- pLayer = LayerWindowNext (pWin, &loop))
- {
- LayerUnwrap (ps, pLayer->pKind, Composite);
- (*ps->Composite) (op, pSrc, pMask, pDst, xSrc, ySrc,
- xMask, yMask, xDst, yDst, width, height);
- LayerWrap (ps, pLayer->pKind, Composite, layerComposite);
- }
- LayerWindowDone (pWin, &loop);
- }
- else
- {
- layerScrPriv (pScreen);
- LayerUnwrap (ps, &pLayScr->kinds[LAYER_FB], Composite);
- (*ps->Composite) (op, pSrc, pMask, pDst, xSrc, ySrc,
- xMask, yMask, xDst, yDst, width, height);
- LayerWrap (ps, &pLayScr->kinds[LAYER_FB], Composite, layerComposite);
- }
-}
-
-void
-layerGlyphs (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc,
- INT16 ySrc,
- int nlist,
- GlyphListPtr list,
- GlyphPtr *glyphs)
-{
- LayerPtr pLayer;
- LayerWinLoopRec loop;
- DrawablePtr pDstDrawable = pDst->pDrawable;
- ScreenPtr pScreen = pDstDrawable->pScreen;
- PictureScreenPtr ps = GetPictureScreen (pScreen);
-
- if (pDstDrawable->type == DRAWABLE_WINDOW)
- {
- WindowPtr pWin = (WindowPtr) pDstDrawable;
- for (pLayer = LayerWindowFirst (pWin, &loop);
- pLayer;
- pLayer = LayerWindowNext (pWin, &loop))
- {
- LayerUnwrap (ps, pLayer->pKind, Glyphs);
- (*ps->Glyphs) (op, pSrc, pDst, maskFormat, xSrc, ySrc,
- nlist, list, glyphs);
- LayerWrap (ps, pLayer->pKind, Glyphs, layerGlyphs);
- }
- LayerWindowDone (pWin, &loop);
- }
- else
- {
- layerScrPriv (pScreen);
- LayerUnwrap (ps, &pLayScr->kinds[LAYER_FB], Glyphs);
- (*ps->Glyphs) (op, pSrc, pDst, maskFormat, xSrc, ySrc,
- nlist, list, glyphs);
- LayerWrap (ps, &pLayScr->kinds[LAYER_FB], Glyphs, layerGlyphs);
- }
-}
-
-void
-layerCompositeRects (CARD8 op,
- PicturePtr pDst,
- xRenderColor *color,
- int nRect,
- xRectangle *rects)
-{
- LayerPtr pLayer;
- LayerWinLoopRec loop;
- DrawablePtr pDstDrawable = pDst->pDrawable;
- ScreenPtr pScreen = pDstDrawable->pScreen;
- PictureScreenPtr ps = GetPictureScreen (pScreen);
-
- if (pDstDrawable->type == DRAWABLE_WINDOW)
- {
- WindowPtr pWin = (WindowPtr) pDstDrawable;
- for (pLayer = LayerWindowFirst (pWin, &loop);
- pLayer;
- pLayer = LayerWindowNext (pWin, &loop))
- {
- LayerUnwrap (ps, pLayer->pKind, CompositeRects);
- (*ps->CompositeRects) (op, pDst, color, nRect, rects);
- LayerWrap (ps, pLayer->pKind, CompositeRects, layerCompositeRects);
- }
- LayerWindowDone (pWin, &loop);
- }
- else
- {
- layerScrPriv (pScreen);
- LayerUnwrap (ps, &pLayScr->kinds[LAYER_FB], CompositeRects);
- (*ps->CompositeRects) (op, pDst, color, nRect, rects);
- LayerWrap (ps, &pLayScr->kinds[LAYER_FB], CompositeRects, layerCompositeRects);
- }
-}
diff --git a/nx-X11/programs/Xserver/miext/layer/layerstr.h b/nx-X11/programs/Xserver/miext/layer/layerstr.h
deleted file mode 100644
index fb5a0d411..000000000
--- a/nx-X11/programs/Xserver/miext/layer/layerstr.h
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- * $XFree86: xc/programs/Xserver/miext/layer/layerstr.h,v 1.2 2001/06/04 09:45:41 keithp Exp $
- *
- * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _LAYERSTR_H_
-#define _LAYERSTR_H_
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include <X11/fonts/font.h>
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "mi.h"
-#include "regionstr.h"
-#include "globals.h"
-#include "gcstruct.h"
-#include "layer.h"
-#ifdef RENDER
-#include "picturestr.h"
-#endif
-
-extern int layerScrPrivateIndex;
-extern int layerGCPrivateIndex;
-extern int layerWinPrivateIndex;
-
-/*
- * One of these for each possible set of underlying
- * rendering code. The first kind always points at the
- * underlying frame buffer code and is created in LayerStartInit
- * so that LayerNewKind can unwrap the screen and prepare it
- * for another wrapping sequence.
- *
- * The set of functions wrapped here must be at least the union
- * of all functions wrapped by any rendering layer in use; they're
- * easy to add, so don't be shy
- */
-
-typedef struct _LayerKind {
- int kind; /* kind index */
-
- CloseScreenProcPtr CloseScreen;
-
- CreateWindowProcPtr CreateWindow;
- DestroyWindowProcPtr DestroyWindow;
- ChangeWindowAttributesProcPtr ChangeWindowAttributes;
- PaintWindowBackgroundProcPtr PaintWindowBackground;
- PaintWindowBorderProcPtr PaintWindowBorder;
- CopyWindowProcPtr CopyWindow;
-
- CreatePixmapProcPtr CreatePixmap;
- DestroyPixmapProcPtr DestroyPixmap;
-
- CreateGCProcPtr CreateGC;
-#ifdef RENDER
- CompositeProcPtr Composite;
- GlyphsProcPtr Glyphs;
- CompositeRectsProcPtr CompositeRects;
-#endif
-} LayerKindRec;
-
-#define LayerWrap(orig,lay,member,func) \
- (((lay)->member = (orig)->member),\
- ((orig)->member = (func)))
-#define LayerUnwrap(orig,lay,member) \
- ((orig)->member = (lay)->member)
-
-/*
- * This is the window private structure allocated for
- * all windows. There are two possible alternatives here,
- * either the window belongs to a single layer and uses its
- * internal clip/borderClip lists or the window belongs to one
- * or more layers and uses a separate clip/borderclip for each
- * layer. When this is integrated into the core window struct,
- * the LayerWinKind can become a single bit saving 8 bytes per
- * window.
- */
-
-typedef struct _LayerWin {
- Bool isList;
- union {
- LayerPtr pLayer;
- LayerListPtr pLayList;
- } u;
-} LayerWinRec;
-
-typedef struct _LayerList {
- LayerListPtr pNext; /* list of layers for this window */
- LayerPtr pLayer; /* the layer */
- Bool inheritClip; /* use the window clipList/borderClip */
- RegionRec clipList; /* per-layer clip/border clip lists */
- RegionRec borderClip;
-} LayerListRec;
-
-#define layerGetWinPriv(pWin) ((LayerWinPtr) (pWin)->devPrivates[layerWinPrivateIndex].ptr)
-#define layerWinPriv(pWin) LayerWinPtr pLayWin = layerGetWinPriv(pWin)
-
-#define layerWinLayer(pLayWin) ((pLayWin)->isList ? (pLayWin)->u.pLayList->pLayer : (pLayWin)->u.pLayer)
-
-typedef struct _LayerWinLoop {
- LayerWinPtr pLayWin;
- LayerListPtr pLayList;
- PixmapPtr pPixmap; /* original window pixmap */
- RegionRec clipList; /* saved original clipList contents */
- RegionRec borderClip; /* saved original borderClip contents */
-} LayerWinLoopRec, *LayerWinLoopPtr;
-
-#define layerWinFirstLayer(pLayWin,pLayList) ((pLayWin)->isList ? ((pLayList) = (pLayWin)->u.pLayList)->pLayer : pLayWin->u.pLayer)
-#define layerWinNextLayer(pLayWin,pLayList) ((pLayWin)->isList ? ((pLayList) = (pLayList)->pNext)->pLayer : 0)
-
-LayerPtr
-LayerWindowFirst (WindowPtr pWin, LayerWinLoopPtr pLoop);
-
-LayerPtr
-LayerWindowNext (WindowPtr pWin, LayerWinLoopPtr pLoop);
-
-void
-LayerWindowDone (WindowPtr pWin, LayerWinLoopPtr pLoop);
-
-
-/*
- * This is the GC private structure allocated for all GCs.
- * XXX this is really messed up; I'm not sure how to fix it yet
- */
-
-typedef struct _LayerGC {
- GCFuncs *funcs;
- LayerKindPtr pKind;
-} LayerGCRec;
-
-#define layerGetGCPriv(pGC) ((LayerGCPtr) (pGC)->devPrivates[layerGCPrivateIndex].ptr)
-#define layerGCPriv(pGC) LayerGCPtr pLayGC = layerGetGCPriv(pGC)
-
-/*
- * This is the screen private, it contains
- * the layer kinds and the layers themselves
- */
-typedef struct _LayerScreen {
- int nkinds; /* number of elements in kinds array */
- LayerKindPtr kinds; /* created kinds; reallocated when new ones added */
- LayerPtr pLayers; /* list of layers for this screen */
-} LayerScreenRec;
-
-#define layerGetScrPriv(pScreen) ((LayerScreenPtr) (pScreen)->devPrivates[layerScrPrivateIndex].ptr)
-#define layerScrPriv(pScreen) LayerScreenPtr pLayScr = layerGetScrPriv(pScreen)
-
-Bool
-layerCloseScreen (int index, ScreenPtr pScreen);
-
-Bool
-layerCreateWindow (WindowPtr pWin);
-
-Bool
-layerDestroyWindow (WindowPtr pWin);
-
-Bool
-layerChangeWindowAttributes (WindowPtr pWin, unsigned long mask);
-
-void
-layerPaintWindowBackground (WindowPtr pWin, RegionPtr pRegion, int what);
-
-void
-layerPaintWindowBorder (WindowPtr pWin, RegionPtr pRegion, int what);
-
-void
-layerCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
-
-PixmapPtr
-layerCreatePixmap (ScreenPtr pScreen, int width, int height, int depth);
-
-Bool
-layerDestroyPixmap (PixmapPtr pPixmap);
-
-Bool
-layerCreateGC (GCPtr pGC);
-
-#ifdef RENDER
-void
-layerComposite (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pMask,
- PicturePtr pDst,
- INT16 xSrc,
- INT16 ySrc,
- INT16 xMask,
- INT16 yMask,
- INT16 xDst,
- INT16 yDst,
- CARD16 width,
- CARD16 height);
-void
-layerGlyphs (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc,
- INT16 ySrc,
- int nlist,
- GlyphListPtr list,
- GlyphPtr *glyphs);
-
-void
-layerCompositeRects (CARD8 op,
- PicturePtr pDst,
- xRenderColor *color,
- int nRect,
- xRectangle *rects);
-#endif
-void layerValidateGC(GCPtr, unsigned long, DrawablePtr);
-void layerChangeGC(GCPtr, unsigned long);
-void layerCopyGC(GCPtr, unsigned long, GCPtr);
-void layerDestroyGC(GCPtr);
-void layerChangeClip(GCPtr, int, pointer, int);
-void layerDestroyClip(GCPtr);
-void layerCopyClip(GCPtr, GCPtr);
-
-void
-layerFillSpans(DrawablePtr pDraw,
- GC *pGC,
- int nInit,
- DDXPointPtr pptInit,
- int *pwidthInit,
- int fSorted);
-
-void
-layerSetSpans(DrawablePtr pDraw,
- GCPtr pGC,
- char *pcharsrc,
- DDXPointPtr pptInit,
- int *pwidthInit,
- int nspans,
- int fSorted);
-
-void
-layerPutImage(
- DrawablePtr pDraw,
- GCPtr pGC,
- int depth,
- int x, int y, int w, int h,
- int leftPad,
- int format,
- char *pImage
-);
-
-RegionPtr
-layerCopyArea(
- DrawablePtr pSrc,
- DrawablePtr pDst,
- GC *pGC,
- int srcx, int srcy,
- int width, int height,
- int dstx, int dsty
-);
-
-RegionPtr
-layerCopyPlane(
- DrawablePtr pSrc,
- DrawablePtr pDst,
- GCPtr pGC,
- int srcx, int srcy,
- int width, int height,
- int dstx, int dsty,
- unsigned long bitPlane
-);
-
-void
-layerPolyPoint(
- DrawablePtr pDraw,
- GCPtr pGC,
- int mode,
- int npt,
- xPoint *pptInit
-);
-void
-layerPolylines(
- DrawablePtr pDraw,
- GCPtr pGC,
- int mode,
- int npt,
- DDXPointPtr pptInit
-);
-
-void
-layerPolySegment(
- DrawablePtr pDraw,
- GCPtr pGC,
- int nseg,
- xSegment *pSeg
-);
-
-void
-layerPolyRectangle(
- DrawablePtr pDraw,
- GCPtr pGC,
- int nRects,
- xRectangle *pRects
-);
-
-void
-layerPolyArc(
- DrawablePtr pDraw,
- GCPtr pGC,
- int narcs,
- xArc *parcs
-);
-
-void
-layerFillPolygon(
- DrawablePtr pDraw,
- GCPtr pGC,
- int shape,
- int mode,
- int count,
- DDXPointPtr pptInit
-);
-
-void
-layerPolyFillRect(
- DrawablePtr pDraw,
- GCPtr pGC,
- int nRectsInit,
- xRectangle *pRectsInit
-);
-
-void
-layerPolyFillArc(
- DrawablePtr pDraw,
- GCPtr pGC,
- int narcs,
- xArc *parcs
-);
-
-int
-layerPolyText8(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x,
- int y,
- int count,
- char *chars
-);
-
-int
-layerPolyText16(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x,
- int y,
- int count,
- unsigned short *chars
-);
-
-void
-layerImageText8(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x,
- int y,
- int count,
- char *chars
-);
-
-void
-layerImageText16(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x,
- int y,
- int count,
- unsigned short *chars
-);
-
-void
-layerImageGlyphBlt(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x, int y,
- unsigned int nglyph,
- CharInfoPtr *ppci,
- pointer pglyphBase
-);
-
-void
-layerPolyGlyphBlt(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x, int y,
- unsigned int nglyph,
- CharInfoPtr *ppci,
- pointer pglyphBase
-);
-
-void
-layerPushPixels(
- GCPtr pGC,
- PixmapPtr pBitMap,
- DrawablePtr pDraw,
- int dx, int dy, int xOrg, int yOrg
-);
-
-#endif /* _LAYERSTR_H_ */
diff --git a/nx-X11/programs/Xserver/miext/layer/layerwin.c b/nx-X11/programs/Xserver/miext/layer/layerwin.c
deleted file mode 100644
index 7afe90ade..000000000
--- a/nx-X11/programs/Xserver/miext/layer/layerwin.c
+++ /dev/null
@@ -1,487 +0,0 @@
-/*
- * $XFree86: xc/programs/Xserver/miext/layer/layerwin.c,v 1.7tsi Exp $
- *
- * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "layerstr.h"
-
-static LayerListPtr
-NewLayerList (ScreenPtr pScreen, LayerPtr pLayer)
-{
- LayerListPtr pLayList;
-
- pLayList = (LayerListPtr) xalloc (sizeof (LayerListRec));
- if (!pLayList)
- return 0;
- pLayList->pNext = 0;
- pLayList->pLayer = pLayer;
- pLayList->inheritClip = TRUE;
- REGION_NULL (pScreen, &pLayList->clipList);
- REGION_NULL (pScreen, &pLayList->borderClip);
- return pLayList;
-}
-
-static void
-FreeLayerList (ScreenPtr pScreen, LayerListPtr pLayList)
-{
- REGION_UNINIT (pScreen, &pLayList->clipList);
- REGION_UNINIT (pScreen, &pLayList->borderClip);
- xfree (pLayList);
-}
-
-/*
- * Create pixmap for a layer
- */
-
-Bool
-LayerCreatePixmap (ScreenPtr pScreen, LayerPtr pLayer)
-{
- LayerKindPtr pKind = pLayer->pKind;
-
- LayerUnwrap (pScreen, pKind, CreatePixmap);
- /* XXX create full-screen sized layers all around */
- pLayer->pPixmap = (*pScreen->CreatePixmap) (pScreen, pScreen->width,
- pScreen->height, pLayer->depth);
- LayerWrap (pScreen, pKind, CreatePixmap, layerCreatePixmap);
- if (!pLayer->pPixmap)
- return FALSE;
- if (pLayer->pKind->kind == LAYER_SHADOW)
- {
- if (!shadowAdd (pScreen, pLayer->pPixmap, pLayer->update,
- pLayer->window, pLayer->randr,
- pLayer->closure))
- return FALSE;
- }
- return TRUE;
-}
-
-/*
- * Destroy pixmap for a layer
- */
-
-void
-LayerDestroyPixmap (ScreenPtr pScreen, LayerPtr pLayer)
-{
- if (pLayer->pPixmap)
- {
- if (pLayer->pKind->kind == LAYER_SHADOW)
- shadowRemove (pScreen, pLayer->pPixmap);
- if (pLayer->freePixmap)
- {
- LayerKindPtr pKind = pLayer->pKind;
-
- LayerUnwrap (pScreen, pKind, DestroyPixmap);
- (*pScreen->DestroyPixmap) (pLayer->pPixmap);
- LayerWrap (pScreen, pKind, DestroyPixmap, layerDestroyPixmap);
- }
- pLayer->pPixmap = 0;
- }
-}
-
-/*
- * Add a window to a layer
- */
-Bool
-LayerWindowAdd (ScreenPtr pScreen, LayerPtr pLayer, WindowPtr pWin)
-{
- layerWinPriv(pWin);
-
- if (pLayer->pPixmap == LAYER_SCREEN_PIXMAP)
- pLayer->pPixmap = (*pScreen->GetScreenPixmap) (pScreen);
- else if (!pLayer->pPixmap && !LayerCreatePixmap (pScreen, pLayer))
- return FALSE;
- /*
- * Add a new layer list if needed
- */
- if (pLayWin->isList || pLayWin->u.pLayer)
- {
- LayerListPtr pPrev;
- LayerListPtr pLayList;
-
- if (!pLayWin->isList)
- {
- pPrev = NewLayerList (pScreen, pLayWin->u.pLayer);
- if (!pPrev)
- return FALSE;
- }
- else
- {
- for (pPrev = pLayWin->u.pLayList; pPrev->pNext; pPrev = pPrev->pNext)
- ;
- }
- pLayList = NewLayerList (pScreen, pLayer);
- if (!pLayList)
- {
- if (!pLayWin->isList)
- FreeLayerList (pScreen, pPrev);
- return FALSE;
- }
- pPrev->pNext = pLayList;
- if (!pLayWin->isList)
- {
- pLayWin->isList = TRUE;
- pLayWin->u.pLayList = pPrev;
- }
- }
- else
- pLayWin->u.pLayer = pLayer;
- /*
- * XXX only one layer supported for drawing, last one wins
- */
- (*pScreen->SetWindowPixmap) (pWin, pLayer->pPixmap);
- pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- pLayer->refcnt++;
- pLayer->windows++;
- return TRUE;
-}
-
-/*
- * Remove a window from a layer
- */
-
-void
-LayerWindowRemove (ScreenPtr pScreen, LayerPtr pLayer, WindowPtr pWin)
-{
- layerWinPriv(pWin);
-
- if (pLayWin->isList)
- {
- LayerListPtr *pPrev;
- LayerListPtr pLayList;
-
- for (pPrev = &pLayWin->u.pLayList; (pLayList = *pPrev); pPrev = &pLayList->pNext)
- {
- if (pLayList->pLayer == pLayer)
- {
- *pPrev = pLayList->pNext;
- FreeLayerList (pScreen, pLayList);
- --pLayer->windows;
- if (pLayer->windows <= 0)
- LayerDestroyPixmap (pScreen, pLayer);
- LayerDestroy (pScreen, pLayer);
- break;
- }
- }
- pLayList = pLayWin->u.pLayList;
- if (!pLayList)
- {
- /*
- * List is empty, set isList back to false
- */
- pLayWin->isList = FALSE;
- pLayWin->u.pLayer = 0;
- }
- else if (!pLayList->pNext && pLayList->inheritClip)
- {
- /*
- * List contains a single element using the
- * window clip, free the list structure and
- * host the layer back to the window private
- */
- pLayer = pLayList->pLayer;
- FreeLayerList (pScreen, pLayList);
- pLayWin->isList = FALSE;
- pLayWin->u.pLayer = pLayer;
- }
- }
- else
- {
- if (pLayWin->u.pLayer == pLayer)
- {
- --pLayer->windows;
- if (pLayer->windows <= 0)
- LayerDestroyPixmap (pScreen, pLayer);
- LayerDestroy (pScreen, pLayer);
- pLayWin->u.pLayer = 0;
- }
- }
- pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER;
-}
-
-/*
- * Looping primitives for window layering. Usage:
- *
- * for (pLayer = LayerWindowFirst (pWin, &loop);
- * pLayer;
- * pLayer = LayerWindowNext (&loop))
- * {
- * ...
- * }
- * LayerWindowDone (pWin, &loop);
- */
-
-LayerPtr
-LayerWindowFirst (WindowPtr pWin, LayerWinLoopPtr pLoop)
-{
- layerWinPriv (pWin);
-
- pLoop->pLayWin = pLayWin;
- if (!pLayWin->isList)
- return pLayWin->u.pLayer;
-
- /*
- * Preserve original state
- */
- pLoop->clipList = pWin->clipList;
- pLoop->borderClip = pWin->borderClip;
- pLoop->pPixmap = (*pWin->drawable.pScreen->GetWindowPixmap) (pWin);
-
- /*
- * Set initial list element
- */
- pLoop->pLayList = pLayWin->u.pLayList;
-
- /*
- * Return first layer
- */
- return LayerWindowNext (pWin, pLoop);
-}
-
-LayerPtr
-LayerWindowNext (WindowPtr pWin, LayerWinLoopPtr pLoop)
-{
- LayerPtr pLayer;
- LayerWinPtr pLayWin = pLoop->pLayWin;
- LayerListPtr pLayList;
-
- if (!pLayWin->isList)
- return 0;
-
- pLayList = pLoop->pLayList;
- pLayer = pLayList->pLayer;
- /*
- * Configure window for this layer
- */
- (*pWin->drawable.pScreen->SetWindowPixmap) (pWin, pLayer->pPixmap);
- if (!pLayList->inheritClip)
- {
- pWin->clipList = pLayList->clipList;
- pWin->borderClip = pLayList->borderClip;
- }
- /*
- * Step to next layer list
- */
- pLoop->pLayList = pLayList->pNext;
- /*
- * Return layer
- */
- return pLayer;
-}
-
-void
-LayerWindowDone (WindowPtr pWin, LayerWinLoopPtr pLoop)
-{
- LayerWinPtr pLayWin = pLoop->pLayWin;
-
- if (!pLayWin->isList)
- return;
- /*
- * clean up after the loop
- */
- pWin->clipList = pLoop->clipList;
- pWin->borderClip = pLoop->clipList;
- (*pWin->drawable.pScreen->SetWindowPixmap) (pWin, pLoop->pPixmap);
-}
-
-Bool
-layerCreateWindow (WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- layerWinPriv(pWin);
- layerScrPriv(pScreen);
- LayerPtr pLayer;
- Bool ret;
-
- pLayWin->isList = FALSE;
- pLayWin->u.pLayer = 0;
-
- /*
- * input only windows don't live in any layer
- */
- if (pWin->drawable.type == UNDRAWABLE_WINDOW)
- return TRUE;
- /*
- * Use a reasonable default layer -- the first
- * layer matching the windows depth. Subsystems needing
- * alternative layering semantics can override this by
- * replacing this function. Perhaps a new screen function
- * could be used to select the correct initial window
- * layer instead.
- */
- for (pLayer = pLayScr->pLayers; pLayer; pLayer = pLayer->pNext)
- if (pLayer->depth == pWin->drawable.depth)
- break;
- ret = TRUE;
- if (pLayer)
- {
- pScreen->CreateWindow = pLayer->pKind->CreateWindow;
- ret = (*pScreen->CreateWindow) (pWin);
- pLayer->pKind->CreateWindow = pScreen->CreateWindow;
- pScreen->CreateWindow = layerCreateWindow;
- LayerWindowAdd (pScreen, pLayer, pWin);
- }
- return ret;
-}
-
-Bool
-layerDestroyWindow (WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- layerWinPriv(pWin);
- LayerPtr pLayer;
- Bool ret = TRUE;
-
- while ((pLayer = layerWinLayer (pLayWin)))
- {
- LayerUnwrap (pScreen, pLayer->pKind, DestroyWindow);
- ret = (*pScreen->DestroyWindow) (pWin);
- LayerWrap (pScreen, pLayer->pKind, DestroyWindow, layerDestroyWindow);
- LayerWindowRemove (pWin->drawable.pScreen, pLayer, pWin);
- }
- return ret;
-}
-
-Bool
-layerChangeWindowAttributes (WindowPtr pWin, unsigned long mask)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- LayerPtr pLay;
- LayerWinLoopRec loop;
- Bool ret = TRUE;
-
- for (pLay = LayerWindowFirst (pWin, &loop);
- pLay;
- pLay = LayerWindowNext (pWin, &loop))
- {
- LayerUnwrap(pScreen,pLay->pKind,ChangeWindowAttributes);
- if (!(*pScreen->ChangeWindowAttributes) (pWin, mask))
- ret = FALSE;
- LayerWrap(pScreen,pLay->pKind,ChangeWindowAttributes,layerChangeWindowAttributes);
- }
- LayerWindowDone (pWin, &loop);
- return ret;
-}
-
-void
-layerPaintWindowBackground (WindowPtr pWin, RegionPtr pRegion, int what)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- LayerPtr pLay;
- LayerWinLoopRec loop;
-
- for (pLay = LayerWindowFirst (pWin, &loop);
- pLay;
- pLay = LayerWindowNext (pWin, &loop))
- {
- LayerUnwrap(pScreen,pLay->pKind,PaintWindowBackground);
- (*pScreen->PaintWindowBackground) (pWin, pRegion, what);
- LayerWrap(pScreen,pLay->pKind,PaintWindowBackground,layerPaintWindowBackground);
- }
- LayerWindowDone (pWin, &loop);
-}
-
-void
-layerPaintWindowBorder (WindowPtr pWin, RegionPtr pRegion, int what)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- LayerPtr pLay;
- LayerWinLoopRec loop;
-
- for (pLay = LayerWindowFirst (pWin, &loop);
- pLay;
- pLay = LayerWindowNext (pWin, &loop))
- {
- LayerUnwrap(pScreen,pLay->pKind,PaintWindowBorder);
- (*pScreen->PaintWindowBorder) (pWin, pRegion, what);
- LayerWrap(pScreen,pLay->pKind,PaintWindowBorder,layerPaintWindowBorder);
- }
- LayerWindowDone (pWin, &loop);
-}
-
-void
-layerCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- LayerPtr pLay;
- LayerWinLoopRec loop;
- int dx = 0, dy = 0;
-
- for (pLay = LayerWindowFirst (pWin, &loop);
- pLay;
- pLay = LayerWindowNext (pWin, &loop))
- {
- LayerUnwrap(pScreen,pLay->pKind,CopyWindow);
- /*
- * Undo the translation done within the last CopyWindow proc (sigh)
- */
- if (dx || dy)
- REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, dx, dy);
- (*pScreen->CopyWindow) (pWin, ptOldOrg, prgnSrc);
- LayerWrap(pScreen,pLay->pKind,CopyWindow,layerCopyWindow);
- /*
- * Save offset to undo translation next time around
- */
- dx = ptOldOrg.x - pWin->drawable.x;
- dy = ptOldOrg.y - pWin->drawable.y;
- }
- LayerWindowDone (pWin, &loop);
-}
-
-PixmapPtr
-layerCreatePixmap (ScreenPtr pScreen, int width, int height, int depth)
-{
- /* XXX assume the first layer can handle all pixmaps */
- layerScrPriv (pScreen);
- LayerKindPtr pKind;
- PixmapPtr pPixmap;
-
- pKind = &pLayScr->kinds[0];
- if (pLayScr->pLayers)
- pKind = pLayScr->pLayers->pKind;
- LayerUnwrap (pScreen, pKind, CreatePixmap);
- pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height, depth);
- LayerWrap (pScreen,pKind,CreatePixmap,layerCreatePixmap);
- return pPixmap;
-}
-
-Bool
-layerDestroyPixmap (PixmapPtr pPixmap)
-{
- /* XXX assume the first layer can handle all pixmaps */
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- layerScrPriv (pScreen);
- LayerKindPtr pKind;
- Bool ret;
-
- pKind = &pLayScr->kinds[0];
- if (pLayScr->pLayers)
- pKind = pLayScr->pLayers->pKind;
- LayerUnwrap (pScreen, pKind, DestroyPixmap);
- ret = (*pScreen->DestroyPixmap) (pPixmap);
- LayerWrap (pScreen,pKind,DestroyPixmap,layerDestroyPixmap);
- return ret;
-}
-
diff --git a/nx-X11/programs/Xserver/miext/layer/laymodule.c b/nx-X11/programs/Xserver/miext/layer/laymodule.c
deleted file mode 100644
index 5af41617a..000000000
--- a/nx-X11/programs/Xserver/miext/layer/laymodule.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef XFree86LOADER
-
-#include "xf86Module.h"
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include <X11/fonts/font.h>
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "mi.h"
-#include "regionstr.h"
-#include "globals.h"
-#include "gcstruct.h"
-#include "layer.h"
-
-static XF86ModuleVersionInfo VersRec =
-{
- "layer",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- 1, 0, 0,
- ABI_CLASS_ANSIC, /* Only need the ansic layer */
- ABI_ANSIC_VERSION,
- MOD_CLASS_NONE,
- {0,0,0,0} /* signature, to be patched into the file by a tool */
-};
-
-XF86ModuleData layerModuleData = { &VersRec, NULL, NULL };
-
-#endif
diff --git a/nx-X11/programs/Xserver/miext/rootless/Imakefile b/nx-X11/programs/Xserver/miext/rootless/Imakefile
deleted file mode 100644
index 2a2bbb2c8..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/Imakefile
+++ /dev/null
@@ -1,54 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/miext/rootless/Imakefile,v 1.2 2003/09/16 00:36:20 torrey Exp $
-
-#include <Server.tmpl>
-
-#ifdef DarwinArchitecture
-#define RootlessSafeAlpha YES
-#define RootlessAcceleration YES
-#elif (defined(XWinServer) && XWinServer) || (defined(NXWinServer) && NXWinServer) || defined(Win32Architecture)
-#define RootlessSafeAlpha YES
-#define RootlessAcceleration YES
-#else
-#define RootlessSafeAlpha NO
-#define RootlessAcceleration NO
-#endif
-
-#if RootlessSafeAlpha || RootlessAcceleration
-#define IHaveSubdirs
-#endif
-
-#if RootlessSafeAlpha
-ALPHADIRS = safeAlpha
-#endif
-
-#if RootlessAcceleration
-ACCELDIRS = accel
-#endif
-
-SRCS = rootlessCommon.c \
- rootlessScreen.c \
- rootlessWindow.c \
- rootlessGC.c \
- rootlessValTree.c
-
-OBJS = rootlessCommon.o \
- rootlessScreen.o \
- rootlessWindow.o \
- rootlessGC.o \
- rootlessValTree.o
-
-INCLUDES = -I. -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(SERVERSRC)/render \
- -I$(EXTINCSRC) -I$(ACCELDIRS)
-
-NormalLibraryObjectRule()
-LibraryModuleTarget(rootless,$(OBJS))
-
-DependTarget()
-
-SUBDIRS = $(ALPHADIRS) $(ACCELDIRS)
-
-#if RootlessSafeAlpha || RootlessAcceleration
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-#endif
diff --git a/nx-X11/programs/Xserver/miext/rootless/Imakefile.NX.original b/nx-X11/programs/Xserver/miext/rootless/Imakefile.NX.original
deleted file mode 100644
index 2a2bbb2c8..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/Imakefile.NX.original
+++ /dev/null
@@ -1,54 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/miext/rootless/Imakefile,v 1.2 2003/09/16 00:36:20 torrey Exp $
-
-#include <Server.tmpl>
-
-#ifdef DarwinArchitecture
-#define RootlessSafeAlpha YES
-#define RootlessAcceleration YES
-#elif (defined(XWinServer) && XWinServer) || (defined(NXWinServer) && NXWinServer) || defined(Win32Architecture)
-#define RootlessSafeAlpha YES
-#define RootlessAcceleration YES
-#else
-#define RootlessSafeAlpha NO
-#define RootlessAcceleration NO
-#endif
-
-#if RootlessSafeAlpha || RootlessAcceleration
-#define IHaveSubdirs
-#endif
-
-#if RootlessSafeAlpha
-ALPHADIRS = safeAlpha
-#endif
-
-#if RootlessAcceleration
-ACCELDIRS = accel
-#endif
-
-SRCS = rootlessCommon.c \
- rootlessScreen.c \
- rootlessWindow.c \
- rootlessGC.c \
- rootlessValTree.c
-
-OBJS = rootlessCommon.o \
- rootlessScreen.o \
- rootlessWindow.o \
- rootlessGC.o \
- rootlessValTree.o
-
-INCLUDES = -I. -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(SERVERSRC)/render \
- -I$(EXTINCSRC) -I$(ACCELDIRS)
-
-NormalLibraryObjectRule()
-LibraryModuleTarget(rootless,$(OBJS))
-
-DependTarget()
-
-SUBDIRS = $(ALPHADIRS) $(ACCELDIRS)
-
-#if RootlessSafeAlpha || RootlessAcceleration
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-#endif
diff --git a/nx-X11/programs/Xserver/miext/rootless/Imakefile.X.original b/nx-X11/programs/Xserver/miext/rootless/Imakefile.X.original
deleted file mode 100644
index 2d6066f41..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/Imakefile.X.original
+++ /dev/null
@@ -1,54 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/miext/rootless/Imakefile,v 1.2 2003/09/16 00:36:20 torrey Exp $
-
-#include <Server.tmpl>
-
-#ifdef DarwinArchitecture
-#define RootlessSafeAlpha YES
-#define RootlessAcceleration YES
-#elif (defined(XWinServer) && XWinServer) || defined(Win32Architecture)
-#define RootlessSafeAlpha YES
-#define RootlessAcceleration YES
-#else
-#define RootlessSafeAlpha NO
-#define RootlessAcceleration NO
-#endif
-
-#if RootlessSafeAlpha || RootlessAcceleration
-#define IHaveSubdirs
-#endif
-
-#if RootlessSafeAlpha
-ALPHADIRS = safeAlpha
-#endif
-
-#if RootlessAcceleration
-ACCELDIRS = accel
-#endif
-
-SRCS = rootlessCommon.c \
- rootlessScreen.c \
- rootlessWindow.c \
- rootlessGC.c \
- rootlessValTree.c
-
-OBJS = rootlessCommon.o \
- rootlessScreen.o \
- rootlessWindow.o \
- rootlessGC.o \
- rootlessValTree.o
-
-INCLUDES = -I. -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(SERVERSRC)/render \
- -I$(EXTINCSRC) -I$(ACCELDIRS)
-
-NormalLibraryObjectRule()
-LibraryModuleTarget(rootless,$(OBJS))
-
-DependTarget()
-
-SUBDIRS = $(ALPHADIRS) $(ACCELDIRS)
-
-#if RootlessSafeAlpha || RootlessAcceleration
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-#endif
diff --git a/nx-X11/programs/Xserver/miext/rootless/README.txt b/nx-X11/programs/Xserver/miext/rootless/README.txt
deleted file mode 100644
index ffd17902f..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/README.txt
+++ /dev/null
@@ -1,403 +0,0 @@
- Generic Rootless Layer
- Version 1.0
- July 13, 2004
-
- Torrey T. Lyons
- torrey@xfree86.org
-
-
-Introduction
-
- The generic rootless layer allows an X server to be implemented
-on top of another window server in a cooperative manner. This allows the
-X11 windows and native windows of the underlying window server to
-coexist on the same screen. The layer is called "rootless" because the root
-window of the X server is generally not drawn. Instead, each top-level
-child of the root window is represented as a separate on-screen window by
-the underlying window server. The layer is referred to as "generic"
-because it abstracts away the details of the underlying window system and
-contains code that is useful for any rootless X server. The code for the
-generic rootless layer is located in xc/programs/Xserver/miext/rootless. To
-build a complete rootless X server requires a specific rootless
-implementation, which provides functions that allow the generic rootless
-layer to interact with the underlying window system.
-
-
-Concepts
-
- In the context of a rootless X server the term window is used to
-mean many fundamentally different things. For X11 a window is a DDX
-resource that describes a visible, or potentially visible, rectangle on the
-screen. A top-level window is a direct child of the root window. To avoid
-confusion, an on-screen native window of the underlying window system
-is referred to as a "frame". The generic rootless layer associates each
-mapped top-level X11 window with a frame. An X11 window may be said
-to be "framed" if it or its top-level parent is represented by a frame.
-
- The generic rootless layer models each frame as being backed at
-all times by a backing buffer, which is periodically flushed to the screen.
-If the underlying window system does not provide a backing buffer for
-frames, this must be done by the rootless implementation. The generic
-rootless layer model does not assume it always has access to the frames'
-backing buffers. Any drawing to the buffer will be proceeded by a call to
-the rootless implementation's StartDrawing() function and StopDrawing()
-will be called when the drawing is concluded. The address of the frame's
-backing buffer is returned by the StartDrawing() function and it can
-change between successive calls.
-
- Because each frame is assumed to have a backing buffer, the
-generic rootless layer will stop Expose events being generated when the
-regions of visibility of a frame change on screen. This is similar to backing
-store, but backing buffers are different in that they always store a copy of
-the entire window contents, not just the obscured portions. The price paid
-in increased memory consumption is made up by the greatly decreased
-complexity in not having to track and record regions as they are obscured.
-
-
-Rootless Implementation
-
- The specifics of the underlying window system are provided to the
-generic rootless layer through rootless implementation functions, compile-
-time options, and runtime parameters. The rootless implementation
-functions are a list of functions that allow the generic rootless layer to
-perform operations such as creating, destroying, moving, and resizing
-frames. Some of the implementation functions are optional. A detailed
-description of the rootless implementation functions is provided in
-Appendix A.
-
- By design, a rootless implementation should only have to include
-the rootless.h header file. The rootlessCommon.h file contains definitions
-internal to the generic rootless layer. (If you find you need to use
-rootlessCommon.h in your implementation, let the generic rootless layer
-maintainers know. This could be an area where the generic rootless layer
-should be generalized.) A rootless implementation should also modify
-rootlessConfig.h to specify compile time options for its platform.
-
- The following compile-time options are defined in
-rootlessConfig.h:
-
- o ROOTLESS_ACCEL: If true, use the optional rootless acceleration
- functions where possible to a accelerate X11 drawing primitives.
- If false, all drawing will be done with fb.
-
- o ROOTLESS_GLOBAL_COORDS: This option controls the way that frame
- coordinates are passed to the rootless implementation. If false,
- the coordinates are passed per screen relative to the origin of
- the screen the frame is currently on. Some implementations may
- prefer to work in a single global coordinate space that spans all
- screens. If this option is true, the coordinates are passed after
- adding the coordinates of the screen origin and an overall offset of
- (rootlessGlobalOffsetX, rootlessGlobalOffsetY).
-
- o ROOTLESS_PROTECT_ALPHA: By default for a color bit depth of 24 and
- 32 bits per pixel, fb will overwrite the "unused" 8 bits to optimize
- drawing speed. If this is true, the alpha channel of frames is
- protected and is not modified when drawing to them. The bits
- containing the alpha channel are defined by the macro
- RootlessAlphaMask(bpp), which should return a bit mask for
- various bits per pixel.
-
- o ROOTLESS_REDISPLAY_DELAY: Time in milliseconds between updates to
- the underlying window server. Most operations will be buffered until
- this time has expired.
-
- o ROOTLESS_RESIZE_GRAVITY: If the underlying window system supports it,
- some frame resizes can be optimized by relying on the frame contents
- maintaining a particular gravity during the resize. In this way less
- of the frame contents need to be preserved by the generic rootless
- layer. If true, the generic rootless layer will pass gravity hints
- during resizing and rely on the frame contents being preserved
- accordingly.
-
- o ROOTLESS_TRACK_DAMAGE: The generic rootless layer draws to the
- frames' backing buffers and periodically flushes the modified
- regions to the underlying window server. If this option is true,
- the generic rootless layer will track these damaged regions.
- Currently it uses the miRegion code and will not simplify damaged
- regions even when updating a bounding region would be more
- efficient. Some window systems provide a more efficient way to
- track damaged regions. If this option is false, the rootless
- implementation function DamageRects() is called whenever a
- backing buffer is modified and the rootless implementation is
- expected to track the damaged regions itself.
-
- The following runtime options are defined in rootless.h:
-
- o rootlessGlobalOffsetX, rootlessGlobalOffsetY: These are only
- used if ROOTLESS_GLOBAL_COORDS is true. They specify the global
- offset that is applied to all screens when converting from
- screen-local to global coordinates.
-
- o rootless_CopyBytes_threshold, rootless_FillBytes_threshold,
- rootless_CompositePixels_threshold, rootless_CopyWindow_threshold:
- The minimum number of bytes or pixels for which to use the rootless
- implementation's respective acceleration function. The rootless
- acceleration functions are all optional so these will only be used
- if the respective acceleration function pointer is not NULL.
-
-
-Accelerated Drawing
-
- The rootless implementation typically does not have direct access
-to the hardware. Its access to the graphics hardware is generally through
-the API of the underlying window system. This underlying API may not
-overlap well with the X11 drawing primitives. The generic rootless layer
-falls back to using fb for all its 2-D drawing. Providing optional rootless
-implementation acceleration functions can accelerate some graphics
-primitives and some window functions. Typically calling through to the
-underlying window systems API will not speed up these operations for
-small enough areas. The rootless_*_threshold runtime options allow the
-rootless implementation to provide hints for when the acceleration
-functions should be used instead of fb.
-
-
-Alpha Channel Protection
-
- If the bits per pixel is greater then the color bit depth, the contents
-of the extra bits are undefined by the X11 protocol. Some window systems
-will use these extra bits as an alpha channel. The generic rootless layer can
-be configured to protect these bits and make sure they are not modified by
-other parts of the X server. To protect the alpha channel
-ROOTLESS_PROTECT_ALPHA and RootlessAlphaMask(bpp) must be
-set appropriately as described under the compile time options. This
-ensures that the X11 graphics primitives do not overwrite the alpha
-channel in an attempt to optimize drawing. In addition, the window
-functions PaintWindow() and Composite() must be replaced by alpha
-channel safe variants. These are provided in rootless/safeAlpha.
-
-
-Credits
-
- The generic rootless layer was originally conceived and developed
-by Greg Parker as part of the XDarwin X server on Mac OS X. John
-Harper made later optimizations to this code but removed its generic
-independence of the underlying window system. Torrey T. Lyons
-reintroduced the generic abstractions and made the rootless code suitable
-for use by other X servers.
-
-
-Appendix A: Rootless Implementation Functions
-
- The rootless implementation functions are defined in rootless.h. It
-is intended that rootless.h contains the complete interface that is needed by
-rootless implementations. The definitions contained in rootlessCommon.h
-are intended for internal use by the generic rootless layer and are more
-likely to change.
-
- Most of these functions take a RootlessFrameID as a parameter.
-The RootlessFrameID is an opaque object that is returned by the
-implementation's CreateFrame() function. The generic rootless layer does
-not use this frame id other than to pass it back to the rootless
-implementation to indicate the frame to operate on.
-
-/*
- * Create a new frame.
- * The frame is created unmapped.
- *
- * pFrame RootlessWindowPtr for this frame should be completely
- * initialized before calling except for pFrame->wid, which
- * is set by this function.
- * pScreen Screen on which to place the new frame
- * newX, newY Position of the frame. These will be identical to pFrame-x,
- * pFrame->y unless ROOTLESS_GLOBAL_COORDS is set.
- * pNewShape Shape for the frame (in frame-local coordinates). NULL for
- * unshaped frames.
- */
-typedef Bool (*RootlessCreateFrameProc)
- (RootlessWindowPtr pFrame, ScreenPtr pScreen, int newX, int newY,
- RegionPtr pNewShape);
-
-/*
- * Destroy a frame.
- * Drawing is stopped and all updates are flushed before this is called.
- *
- * wid Frame id
- */
-typedef void (*RootlessDestroyFrameProc)
- (RootlessFrameID wid);
-
-/*
- * Move a frame on screen.
- * Drawing is stopped and all updates are flushed before this is called.
- *
- * wid Frame id
- * pScreen Screen to move the new frame to
- * newX, newY New position of the frame
- */
-typedef void (*RootlessMoveFrameProc)
- (RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY);
-
-/*
- * Resize and move a frame.
- * Drawing is stopped and all updates are flushed before this is called.
- *
- * wid Frame id
- * pScreen Screen to move the new frame to
- * newX, newY New position of the frame
- * newW, newH New size of the frame
- * gravity Gravity for window contents (rl_gravity_enum). This is always
- * RL_GRAVITY_NONE unless ROOTLESS_RESIZE_GRAVITY is set.
- */
-typedef void (*RootlessResizeFrameProc)
- (RootlessFrameID wid, ScreenPtr pScreen,
- int newX, int newY, unsigned int newW, unsigned int newH,
- unsigned int gravity);
-
-/*
- * Change frame ordering (AKA stacking, layering).
- * Drawing is stopped before this is called. Unmapped frames are mapped by
- * setting their ordering.
- *
- * wid Frame id
- * nextWid Frame id of frame that is now above this one or NULL if this
- * frame is at the top.
- */
-typedef void (*RootlessRestackFrameProc)
- (RootlessFrameID wid, RootlessFrameID nextWid);
-
-/*
- * Change frame's shape.
- * Drawing is stopped before this is called.
- *
- * wid Frame id
- * pNewShape New shape for the frame (in frame-local coordinates)
- * or NULL if now unshaped.
- */
-typedef void (*RootlessReshapeFrameProc)
- (RootlessFrameID wid, RegionPtr pNewShape);
-
-/*
- * Unmap a frame.
- *
- * wid Frame id
- */
-typedef void (*RootlessUnmapFrameProc)
- (RootlessFrameID wid);
-
-/*
- * Start drawing to a frame.
- * Prepare a frame for direct access to its backing buffer.
- *
- * wid Frame id
- * pixelData Address of the backing buffer (returned)
- * bytesPerRow Width in bytes of the backing buffer (returned)
- */
-typedef void (*RootlessStartDrawingProc)
- (RootlessFrameID wid, char **pixelData, int *bytesPerRow);
-
-/*
- * Stop drawing to a frame.
- * No drawing to the frame's backing buffer will occur until drawing
- * is started again.
- *
- * wid Frame id
- * flush Flush drawing updates for this frame to the screen. This
- * will always be FALSE if ROOTLESS_TRACK_DAMAGE is set.
- */
-typedef void (*RootlessStopDrawingProc)
- (RootlessFrameID wid, Bool flush);
-
-/*
- * Flush drawing updates to the screen.
- * Drawing is stopped before this is called.
- *
- * wid Frame id
- * pDamage Region containing all the changed pixels in frame-local
- * coordinates. This is clipped to the window's clip. This
- * will be NULL if ROOTLESS_TRACK_DAMAGE is not set.
- */
-typedef void (*RootlessUpdateRegionProc)
- (RootlessFrameID wid, RegionPtr pDamage);
-
-/*
- * Mark damaged rectangles as requiring redisplay to screen.
- * This will only be called if ROOTLESS_TRACK_DAMAGE is not set.
- *
- * wid Frame id
- * nrects Number of damaged rectangles
- * rects Array of damaged rectangles in frame-local coordinates
- * shift_x, Vector to shift rectangles by
- * shift_y
- */
-typedef void (*RootlessDamageRectsProc)
- (RootlessFrameID wid, int nrects, const BoxRec *rects,
- int shift_x, int shift_y);
-
-/*
- * Switch the window associated with a frame. (Optional)
- * When a framed window is reparented, the frame is resized and set to
- * use the new top-level parent. If defined this function will be called
- * afterwards for implementation specific bookkeeping.
- *
- * pFrame Frame whose window has switched
- * oldWin Previous window wrapped by this frame
- */
-typedef void (*RootlessSwitchWindowProc)
- (RootlessWindowPtr pFrame, WindowPtr oldWin);
-
-/*
- * Copy bytes. (Optional)
- * Source and destinate may overlap and the right thing should happen.
- *
- * width Bytes to copy per row
- * height Number of rows
- * src Source data
- * srcRowBytes Width of source in bytes
- * dst Destination data
- * dstRowBytes Width of destination in bytes
- */
-typedef void (*RootlessCopyBytesProc)
- (unsigned int width, unsigned int height,
- const void *src, unsigned int srcRowBytes,
- void *dst, unsigned int dstRowBytes);
-
-/*
- * Fill memory with 32-bit pattern. (Optional)
- *
- * width Bytes to fill per row
- * height Number of rows
- * value 32-bit pattern to fill with
- * dst Destination data
- * dstRowBytes Width of destination in bytes
- */
-typedef void (*RootlessFillBytesProc)
- (unsigned int width, unsigned int height, unsigned int value,
- void *dst, unsigned int dstRowBytes);
-
-/*
- * Composite pixels from source and mask to destination. (Optional)
- *
- * width, height Size of area to composite to in pizels
- * function Composite function built with RL_COMPOSITE_FUNCTION
- * src Source data
- * srcRowBytes Width of source in bytes (Passing NULL means source
- * is a single pixel.
- * mask Mask data
- * maskRowBytes Width of mask in bytes
- * dst Destination data
- * dstRowBytes Width of destination in bytes
- *
- * For src and dst, the first element of the array is the color data. If
- * the second element is non-null it implies there is alpha data (which
- * may be meshed or planar). Data without alpha is assumed to be opaque.
- *
- * An X11 error code is returned.
- */
-typedef int (*RootlessCompositePixelsProc)
- (unsigned int width, unsigned int height, unsigned int function,
- void *src[2], unsigned int srcRowBytes[2],
- void *mask, unsigned int maskRowBytes,
- void *dst[2], unsigned int dstRowBytes[2]);
-
-/*
- * Copy area in frame to another part of frame. (Optional)
- *
- * wid Frame id
- * dstNrects Number of rectangles to copy
- * dstRects Array of rectangles to copy
- * dx, dy Number of pixels away to copy area
- */
-typedef void (*RootlessCopyWindowProc)
- (RootlessFrameID wid, int dstNrects, const BoxRec *dstRects,
- int dx, int dy);
-
diff --git a/nx-X11/programs/Xserver/miext/rootless/accel/Imakefile b/nx-X11/programs/Xserver/miext/rootless/accel/Imakefile
deleted file mode 100644
index a3dabe64b..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/accel/Imakefile
+++ /dev/null
@@ -1,30 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/miext/rootless/safeAlpha/Imakefile,v 1.1 2003/09/16 00:36:20 torrey Exp $
-
-#include <Server.tmpl>
-
-SRCS = rlAccel.c \
- rlBlt.c \
- rlCopy.c \
- rlFill.c \
- rlFillRect.c \
- rlFillSpans.c \
- rlGlyph.c \
- rlSolid.c
-
-OBJS = rlAccel.o \
- rlBlt.o \
- rlCopy.o \
- rlFill.o \
- rlFillRect.o \
- rlFillSpans.o \
- rlGlyph.o \
- rlSolid.o
-
-INCLUDES = -I. -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(SERVERSRC)/render \
- -I$(EXTINCSRC) -I$(SERVERSRC)/Xext -I..
-
-NormalLibraryObjectRule()
-LibraryModuleTarget(rlAccel,$(OBJS))
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/miext/rootless/accel/rlAccel.c b/nx-X11/programs/Xserver/miext/rootless/accel/rlAccel.c
deleted file mode 100644
index 9977c9e4a..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/accel/rlAccel.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Support for accelerated rootless code
- */
-/*
- * Copyright (c) 2004 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XdotOrg: xc/programs/Xserver/miext/rootless/accel/rlAccel.c,v 1.5 2005/07/03 07:02:03 daniels Exp $ */
-
-/*
- * The accelerated rootless code replaces some GC operations from fb with
- * versions that call the rootless acceleration functions where appropriate.
- * To work properly, this must be wrapped directly on top of fb. Nothing
- * underneath this layer besides fb will get called.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "rootless.h"
-#include "rlAccel.h"
-
-typedef struct _rlAccelScreenRec {
- CreateGCProcPtr CreateGC;
- CloseScreenProcPtr CloseScreen;
-} rlAccelScreenRec, *rlAccelScreenPtr;
-
-static int rlAccelScreenPrivateIndex = -1;
-
-#define RLACCELREC(pScreen) \
- ((rlAccelScreenRec *)(pScreen)->devPrivates[rlAccelScreenPrivateIndex].ptr)
-
-/* This is mostly identical to fbGCOps. */
-static GCOps rlAccelOps = {
- rlFillSpans,
- fbSetSpans,
- fbPutImage,
- rlCopyArea,
- fbCopyPlane,
- fbPolyPoint,
- fbPolyLine,
- fbPolySegment,
- fbPolyRectangle,
- fbPolyArc,
- miFillPolygon,
- rlPolyFillRect,
- fbPolyFillArc,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- rlImageGlyphBlt,
- fbPolyGlyphBlt,
- fbPushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-
-/*
- * Screen function to create a graphics context
- */
-static Bool
-rlCreateGC(GCPtr pGC)
-{
- ScreenPtr pScreen = pGC->pScreen;
- rlAccelScreenRec *s = RLACCELREC(pScreen);
- Bool result;
-
- // Unwrap and call
- pScreen->CreateGC = s->CreateGC;
- result = s->CreateGC(pGC);
-
- // Accelerated GC ops replace some fb GC ops
- pGC->ops = &rlAccelOps;
-
- // Rewrap
- s->CreateGC = pScreen->CreateGC;
- pScreen->CreateGC = rlCreateGC;
-
- return result;
-}
-
-
-/*
- * Clean up when closing a screen on server reset
- */
-static Bool
-rlCloseScreen (int iScreen, ScreenPtr pScreen)
-{
- rlAccelScreenRec *s = RLACCELREC(pScreen);
- Bool result;
-
- // Unwrap
- pScreen->CloseScreen = s->CloseScreen;
- result = pScreen->CloseScreen(iScreen, pScreen);
-
- xfree(s);
-
- return result;
-}
-
-
-/*
- * RootlessAccelInit
- * Called by the rootless implementation to initialize accelerated
- * rootless drawing.
- */
-Bool
-RootlessAccelInit(ScreenPtr pScreen)
-{
- static unsigned long rlAccelGeneration = 0;
- rlAccelScreenRec *s;
-
- if (rlAccelGeneration != serverGeneration) {
- rlAccelScreenPrivateIndex = AllocateScreenPrivateIndex();
- if (rlAccelScreenPrivateIndex == -1) return FALSE;
- rlAccelGeneration = serverGeneration;
- }
-
- s = xalloc(sizeof(rlAccelScreenRec));
- if (!s) return FALSE;
- RLACCELREC(pScreen) = s;
-
- // Wrap the screen functions we need
- s->CreateGC = pScreen->CreateGC;
- pScreen->CreateGC = rlCreateGC;
- s->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = rlCloseScreen;
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/accel/rlAccel.h b/nx-X11/programs/Xserver/miext/rootless/accel/rlAccel.h
deleted file mode 100644
index a4402bdf2..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/accel/rlAccel.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Rootless Acceleration Code
- */
-/*
- * Copyright (c) 2003 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/miext/rootless/rootlessCommon.c,v 1.4 2003/10/18 00:00:34 torrey Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "fb.h"
-
-/*
- * rlBlt.c
- */
-void
-rlBlt (FbBits *srcLine,
- FbStride srcStride,
- int srcX,
-
- ScreenPtr pDstScreen,
- FbBits *dstLine,
- FbStride dstStride,
- int dstX,
-
- int width,
- int height,
-
- int alu,
- FbBits pm,
- int bpp,
-
- Bool reverse,
- Bool upsidedown);
-
-/*
- * rlCopy.c
- */
-RegionPtr
-rlCopyArea (DrawablePtr pSrcDrawable,
- DrawablePtr pDstDrawable,
- GCPtr pGC,
- int xIn,
- int yIn,
- int widthSrc,
- int heightSrc,
- int xOut,
- int yOut);
-
-/*
- * rlFill.c
- */
-void
-rlFill (DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int width,
- int height);
-
-void
-rlSolidBoxClipped (DrawablePtr pDrawable,
- RegionPtr pClip,
- int x1,
- int y1,
- int x2,
- int y2,
- FbBits and,
- FbBits xor);
-
-/*
- * rlFillRect.c
- */
-void
-rlPolyFillRect(DrawablePtr pDrawable,
- GCPtr pGC,
- int nrect,
- xRectangle *prect);
-
-/*
- * rlFillSpans.c
- */
-void
-rlFillSpans (DrawablePtr pDrawable,
- GCPtr pGC,
- int n,
- DDXPointPtr ppt,
- int *pwidth,
- int fSorted);
-
-/*
- * rlGlyph.c
- */
-void
-rlImageGlyphBlt (DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- unsigned int nglyph,
- CharInfoPtr *ppciInit,
- pointer pglyphBase);
-
-/*
- * rlSolid.c
- */
-void
-rlSolid (ScreenPtr pScreen,
- FbBits *dst,
- FbStride dstStride,
- int dstX,
- int bpp,
-
- int width,
- int height,
-
- FbBits and,
- FbBits xor);
diff --git a/nx-X11/programs/Xserver/miext/rootless/accel/rlBlt.c b/nx-X11/programs/Xserver/miext/rootless/accel/rlBlt.c
deleted file mode 100644
index e5fa5f7bd..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/accel/rlBlt.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * Accelerated rootless blit
- */
-/*
- * This code is largely copied from fbBlt.c.
- *
- * Copyright © 1998 Keith Packard
- * Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved.
- * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XFree86: xc/programs/Xserver/fb/fbblt.c,v 1.8 2000/09/28 00:47:22 keithp Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "fb.h"
-#include "rootlessCommon.h"
-#include "rlAccel.h"
-
-
-void
-rlBlt (FbBits *srcLine,
- FbStride srcStride,
- int srcX,
-
- ScreenPtr pDstScreen,
- FbBits *dstLine,
- FbStride dstStride,
- int dstX,
-
- int width,
- int height,
-
- int alu,
- FbBits pm,
- int bpp,
-
- Bool reverse,
- Bool upsidedown)
-{
- FbBits *src, *dst;
- int leftShift, rightShift;
- FbBits startmask, endmask;
- FbBits bits, bits1;
- int n, nmiddle;
- Bool destInvarient;
- int startbyte, endbyte;
- FbDeclareMergeRop ();
-
-#ifdef FB_24BIT
- if (bpp == 24 && !FbCheck24Pix (pm))
- {
- fbBlt24 (srcLine, srcStride, srcX, dstLine, dstStride, dstX,
- width, height, alu, pm, reverse, upsidedown);
- return;
- }
-#endif
- FbInitializeMergeRop(alu, pm);
- destInvarient = FbDestInvarientMergeRop();
- if (upsidedown)
- {
- srcLine += (height - 1) * (srcStride);
- dstLine += (height - 1) * (dstStride);
- srcStride = -srcStride;
- dstStride = -dstStride;
- }
- FbMaskBitsBytes (dstX, width, destInvarient, startmask, startbyte,
- nmiddle, endmask, endbyte);
-
- /*
- * Beginning of the rootless acceleration code
- */
- if (!startmask && !endmask && alu == GXcopy &&
- height * nmiddle * sizeof(*dst) > rootless_CopyBytes_threshold)
- {
- if (pm == FB_ALLONES && SCREENREC(pDstScreen)->imp->CopyBytes)
- {
- SCREENREC(pDstScreen)->imp->CopyBytes(
- nmiddle * sizeof(*dst), height,
- (char *) srcLine + (srcX >> 3),
- srcStride * sizeof (*src),
- (char *) dstLine + (dstX >> 3),
- dstStride * sizeof (*dst));
- return;
- }
-
- /* FIXME: the pm test here isn't super-wonderful - just because
- we don't care about the top eight bits doesn't necessarily
- mean we want them set to 255. But doing this does give a
- factor of two performance improvement when copying from a
- pixmap to a window, which is pretty common.. */
-
- else if (bpp == 32 && sizeof(FbBits) == 4 &&
- pm == 0x00FFFFFFUL && !reverse &&
- SCREENREC(pDstScreen)->imp->CompositePixels)
- {
- /* need to copy XRGB to ARGB. */
-
- void *src[2], *dest[2];
- unsigned int src_rowbytes[2], dest_rowbytes[2];
- unsigned int fn;
-
- src[0] = (char *) srcLine + (srcX >> 3);
- src[1] = NULL;
- src_rowbytes[0] = srcStride * sizeof(*src);
- src_rowbytes[1] = 0;
-
- dest[0] = (char *) dstLine + (dstX >> 3);
- dest[1] = dest[0];
- dest_rowbytes[0] = dstStride * sizeof(*dst);
- dest_rowbytes[1] = dest_rowbytes[0];
-
- fn = RL_COMPOSITE_FUNCTION(RL_COMPOSITE_SRC, RL_DEPTH_ARGB8888,
- RL_DEPTH_NIL, RL_DEPTH_ARGB8888);
-
- if (SCREENREC(pDstScreen)->imp->CompositePixels(
- nmiddle, height,
- fn, src, src_rowbytes,
- NULL, 0, dest, dest_rowbytes) == Success)
- {
- return;
- }
- }
- }
- /* End of the rootless acceleration code */
-
- if (reverse)
- {
- srcLine += ((srcX + width - 1) >> FB_SHIFT) + 1;
- dstLine += ((dstX + width - 1) >> FB_SHIFT) + 1;
- srcX = (srcX + width - 1) & FB_MASK;
- dstX = (dstX + width - 1) & FB_MASK;
- }
- else
- {
- srcLine += srcX >> FB_SHIFT;
- dstLine += dstX >> FB_SHIFT;
- srcX &= FB_MASK;
- dstX &= FB_MASK;
- }
- if (srcX == dstX)
- {
- while (height--)
- {
- src = srcLine;
- srcLine += srcStride;
- dst = dstLine;
- dstLine += dstStride;
- if (reverse)
- {
- if (endmask)
- {
- bits = *--src;
- --dst;
- FbDoRightMaskByteMergeRop(dst, bits, endbyte, endmask);
- }
- n = nmiddle;
- if (destInvarient)
- {
- while (n--)
- *--dst = FbDoDestInvarientMergeRop(*--src);
- }
- else
- {
- while (n--)
- {
- bits = *--src;
- --dst;
- *dst = FbDoMergeRop (bits, *dst);
- }
- }
- if (startmask)
- {
- bits = *--src;
- --dst;
- FbDoLeftMaskByteMergeRop(dst, bits, startbyte, startmask);
- }
- }
- else
- {
- if (startmask)
- {
- bits = *src++;
- FbDoLeftMaskByteMergeRop(dst, bits, startbyte, startmask);
- dst++;
- }
- n = nmiddle;
- if (destInvarient)
- {
-#if 0
- /*
- * This provides some speedup on screen->screen blts
- * over the PCI bus, usually about 10%. But fb
- * isn't usually used for this operation...
- */
- if (_ca2 + 1 == 0 && _cx2 == 0)
- {
- FbBits t1, t2, t3, t4;
- while (n >= 4)
- {
- t1 = *src++;
- t2 = *src++;
- t3 = *src++;
- t4 = *src++;
- *dst++ = t1;
- *dst++ = t2;
- *dst++ = t3;
- *dst++ = t4;
- n -= 4;
- }
- }
-#endif
- while (n--)
- *dst++ = FbDoDestInvarientMergeRop(*src++);
- }
- else
- {
- while (n--)
- {
- bits = *src++;
- *dst = FbDoMergeRop (bits, *dst);
- dst++;
- }
- }
- if (endmask)
- {
- bits = *src;
- FbDoRightMaskByteMergeRop(dst, bits, endbyte, endmask);
- }
- }
- }
- }
- else
- {
- if (srcX > dstX)
- {
- leftShift = srcX - dstX;
- rightShift = FB_UNIT - leftShift;
- }
- else
- {
- rightShift = dstX - srcX;
- leftShift = FB_UNIT - rightShift;
- }
- while (height--)
- {
- src = srcLine;
- srcLine += srcStride;
- dst = dstLine;
- dstLine += dstStride;
-
- bits1 = 0;
- if (reverse)
- {
- if (srcX < dstX)
- bits1 = *--src;
- if (endmask)
- {
- bits = FbScrRight(bits1, rightShift);
- if (FbScrRight(endmask, leftShift))
- {
- bits1 = *--src;
- bits |= FbScrLeft(bits1, leftShift);
- }
- --dst;
- FbDoRightMaskByteMergeRop(dst, bits, endbyte, endmask);
- }
- n = nmiddle;
- if (destInvarient)
- {
- while (n--)
- {
- bits = FbScrRight(bits1, rightShift);
- bits1 = *--src;
- bits |= FbScrLeft(bits1, leftShift);
- --dst;
- *dst = FbDoDestInvarientMergeRop(bits);
- }
- }
- else
- {
- while (n--)
- {
- bits = FbScrRight(bits1, rightShift);
- bits1 = *--src;
- bits |= FbScrLeft(bits1, leftShift);
- --dst;
- *dst = FbDoMergeRop(bits, *dst);
- }
- }
- if (startmask)
- {
- bits = FbScrRight(bits1, rightShift);
- if (FbScrRight(startmask, leftShift))
- {
- bits1 = *--src;
- bits |= FbScrLeft(bits1, leftShift);
- }
- --dst;
- FbDoLeftMaskByteMergeRop (dst, bits, startbyte, startmask);
- }
- }
- else
- {
- if (srcX > dstX)
- bits1 = *src++;
- if (startmask)
- {
- bits = FbScrLeft(bits1, leftShift);
- bits1 = *src++;
- bits |= FbScrRight(bits1, rightShift);
- FbDoLeftMaskByteMergeRop (dst, bits, startbyte, startmask);
- dst++;
- }
- n = nmiddle;
- if (destInvarient)
- {
- while (n--)
- {
- bits = FbScrLeft(bits1, leftShift);
- bits1 = *src++;
- bits |= FbScrRight(bits1, rightShift);
- *dst = FbDoDestInvarientMergeRop(bits);
- dst++;
- }
- }
- else
- {
- while (n--)
- {
- bits = FbScrLeft(bits1, leftShift);
- bits1 = *src++;
- bits |= FbScrRight(bits1, rightShift);
- *dst = FbDoMergeRop(bits, *dst);
- dst++;
- }
- }
- if (endmask)
- {
- bits = FbScrLeft(bits1, leftShift);
- if (FbScrLeft(endmask, rightShift))
- {
- bits1 = *src;
- bits |= FbScrRight(bits1, rightShift);
- }
- FbDoRightMaskByteMergeRop (dst, bits, endbyte, endmask);
- }
- }
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/accel/rlCopy.c b/nx-X11/programs/Xserver/miext/rootless/accel/rlCopy.c
deleted file mode 100644
index ccea7fbd3..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/accel/rlCopy.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * This code is largely copied from fbcopy.c.
- *
- * Copyright © 1998 Keith Packard
- * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XFree86: xc/programs/Xserver/fb/fbcopy.c,v 1.12 2001/07/16 05:04:05 keithp Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "fb.h"
-#include "rlAccel.h"
-
-
-void
-rlCopyNtoN (DrawablePtr pSrcDrawable,
- DrawablePtr pDstDrawable,
- GCPtr pGC,
- BoxPtr pbox,
- int nbox,
- int dx,
- int dy,
- Bool reverse,
- Bool upsidedown,
- Pixel bitplane,
- void *closure)
-{
- CARD8 alu = pGC ? pGC->alu : GXcopy;
- FbBits pm = pGC ? fbGetGCPrivate(pGC)->pm : FB_ALLONES;
- FbBits *src;
- FbStride srcStride;
- int srcBpp;
- int srcXoff, srcYoff;
- FbBits *dst;
- FbStride dstStride;
- int dstBpp;
- int dstXoff, dstYoff;
-
- fbGetDrawable (pSrcDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
- fbGetDrawable (pDstDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
-
- while (nbox--)
- {
- rlBlt (src + (pbox->y1 + dy + srcYoff) * srcStride,
- srcStride,
- (pbox->x1 + dx + srcXoff) * srcBpp,
-
- pDstDrawable->pScreen,
- dst + (pbox->y1 + dstYoff) * dstStride,
- dstStride,
- (pbox->x1 + dstXoff) * dstBpp,
-
- (pbox->x2 - pbox->x1) * dstBpp,
- (pbox->y2 - pbox->y1),
-
- alu,
- pm,
- dstBpp,
-
- reverse,
- upsidedown);
- pbox++;
- }
-}
-
-RegionPtr
-rlCopyArea (DrawablePtr pSrcDrawable,
- DrawablePtr pDstDrawable,
- GCPtr pGC,
- int xIn,
- int yIn,
- int widthSrc,
- int heightSrc,
- int xOut,
- int yOut)
-{
- fbCopyProc copy;
-
-#ifdef FB_24_32BIT
- if (pSrcDrawable->bitsPerPixel != pDstDrawable->bitsPerPixel)
- copy = fb24_32CopyMtoN;
- else
-#endif
- copy = rlCopyNtoN;
- return fbDoCopy (pSrcDrawable, pDstDrawable, pGC, xIn, yIn,
- widthSrc, heightSrc, xOut, yOut, copy, 0, 0);
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/accel/rlFill.c b/nx-X11/programs/Xserver/miext/rootless/accel/rlFill.c
deleted file mode 100644
index a6ed2fbbb..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/accel/rlFill.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * This code is largely copied from fbfill.c.
- *
- * Copyright © 1998 Keith Packard
- * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XFree86: xc/programs/Xserver/fb/fbfill.c,v 1.6 2003/01/31 00:01:45 torrey Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "fb.h"
-#include "rlAccel.h"
-
-
-void
-rlFill (DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- int width,
- int height)
-{
- FbBits *dst;
- FbStride dstStride;
- int dstBpp;
- int dstXoff, dstYoff;
- FbGCPrivPtr pPriv = fbGetGCPrivate(pGC);
-
- fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
-
- switch (pGC->fillStyle) {
- case FillSolid:
- rlSolid (pDrawable->pScreen,
- dst + (y + dstYoff) * dstStride,
- dstStride,
- (x + dstXoff) * dstBpp,
- dstBpp,
- width * dstBpp, height,
- pPriv->and, pPriv->xor);
- break;
- case FillStippled:
- case FillOpaqueStippled: {
- PixmapPtr pStip = pGC->stipple;
- int stipWidth = pStip->drawable.width;
- int stipHeight = pStip->drawable.height;
-
- if (dstBpp == 1)
- {
- int alu;
- FbBits *stip;
- FbStride stipStride;
- int stipBpp;
- int stipXoff, stipYoff; /* XXX assumed to be zero */
-
- if (pGC->fillStyle == FillStippled)
- alu = FbStipple1Rop(pGC->alu,pGC->fgPixel);
- else
- alu = FbOpaqueStipple1Rop(pGC->alu,pGC->fgPixel,pGC->bgPixel);
- fbGetDrawable (&pStip->drawable, stip, stipStride, stipBpp, stipXoff, stipYoff);
- fbTile (dst + (y + dstYoff) * dstStride,
- dstStride,
- x + dstXoff,
- width, height,
- stip,
- stipStride,
- stipWidth,
- stipHeight,
- alu,
- pPriv->pm,
- dstBpp,
-
- (pGC->patOrg.x + pDrawable->x + dstXoff),
- pGC->patOrg.y + pDrawable->y + dstYoff - y);
- }
- else
- {
- FbStip *stip;
- FbStride stipStride;
- int stipBpp;
- int stipXoff, stipYoff; /* XXX assumed to be zero */
- FbBits fgand, fgxor, bgand, bgxor;
-
- fgand = pPriv->and;
- fgxor = pPriv->xor;
- if (pGC->fillStyle == FillStippled)
- {
- bgand = fbAnd(GXnoop,(FbBits) 0,FB_ALLONES);
- bgxor = fbXor(GXnoop,(FbBits) 0,FB_ALLONES);
- }
- else
- {
- bgand = pPriv->bgand;
- bgxor = pPriv->bgxor;
- }
-
- fbGetStipDrawable (&pStip->drawable, stip, stipStride, stipBpp, stipXoff, stipYoff);
- fbStipple (dst + (y + dstYoff) * dstStride,
- dstStride,
- (x + dstXoff) * dstBpp,
- dstBpp,
- width * dstBpp, height,
- stip,
- stipStride,
- stipWidth,
- stipHeight,
- pPriv->evenStipple,
- fgand, fgxor,
- bgand, bgxor,
- pGC->patOrg.x + pDrawable->x + dstXoff,
- pGC->patOrg.y + pDrawable->y + dstYoff - y);
- }
- break;
- }
- case FillTiled: {
- PixmapPtr pTile = pGC->tile.pixmap;
- FbBits *tile;
- FbStride tileStride;
- int tileBpp;
- int tileWidth;
- int tileHeight;
- int tileXoff, tileYoff; /* XXX assumed to be zero */
-
- fbGetDrawable (&pTile->drawable, tile, tileStride, tileBpp, tileXoff, tileYoff);
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
- fbTile (dst + (y + dstYoff) * dstStride,
- dstStride,
- (x + dstXoff) * dstBpp,
- width * dstBpp, height,
- tile,
- tileStride,
- tileWidth * tileBpp,
- tileHeight,
- pGC->alu,
- pPriv->pm,
- dstBpp,
- (pGC->patOrg.x + pDrawable->x + dstXoff) * dstBpp,
- pGC->patOrg.y + pDrawable->y + dstYoff - y);
- break;
- }
- }
- fbValidateDrawable (pDrawable);
-}
-
-void
-rlSolidBoxClipped (DrawablePtr pDrawable,
- RegionPtr pClip,
- int x1,
- int y1,
- int x2,
- int y2,
- FbBits and,
- FbBits xor)
-{
- FbBits *dst;
- FbStride dstStride;
- int dstBpp;
- int dstXoff, dstYoff;
- BoxPtr pbox;
- int nbox;
- int partX1, partX2, partY1, partY2;
-
- fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
-
- for (nbox = REGION_NUM_RECTS(pClip), pbox = REGION_RECTS(pClip);
- nbox--;
- pbox++)
- {
- partX1 = pbox->x1;
- if (partX1 < x1)
- partX1 = x1;
-
- partX2 = pbox->x2;
- if (partX2 > x2)
- partX2 = x2;
-
- if (partX2 <= partX1)
- continue;
-
- partY1 = pbox->y1;
- if (partY1 < y1)
- partY1 = y1;
-
- partY2 = pbox->y2;
- if (partY2 > y2)
- partY2 = y2;
-
- if (partY2 <= partY1)
- continue;
-
- rlSolid (pDrawable->pScreen,
- dst + (partY1 + dstYoff) * dstStride,
- dstStride,
- (partX1 + dstXoff) * dstBpp,
- dstBpp,
-
- (partX2 - partX1) * dstBpp,
- (partY2 - partY1),
- and, xor);
- }
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/accel/rlFillRect.c b/nx-X11/programs/Xserver/miext/rootless/accel/rlFillRect.c
deleted file mode 100644
index e4bab4f53..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/accel/rlFillRect.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * This code is largely copied from fbfillrect.c.
- *
- * Copyright © 1998 Keith Packard
- * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XFree86: xc/programs/Xserver/fb/fbfillrect.c,v 1.2 2000/02/23 20:29:43 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "fb.h"
-#include "rlAccel.h"
-
-
-void
-rlPolyFillRect(DrawablePtr pDrawable,
- GCPtr pGC,
- int nrect,
- xRectangle *prect)
-{
- RegionPtr pClip = fbGetCompositeClip(pGC);
- register BoxPtr pbox;
- BoxPtr pextent;
- int extentX1, extentX2, extentY1, extentY2;
- int fullX1, fullX2, fullY1, fullY2;
- int partX1, partX2, partY1, partY2;
- int xorg, yorg;
- int n;
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-
- pextent = REGION_EXTENTS(pGC->pScreen, pClip);
- extentX1 = pextent->x1;
- extentY1 = pextent->y1;
- extentX2 = pextent->x2;
- extentY2 = pextent->y2;
- while (nrect--)
- {
- fullX1 = prect->x + xorg;
- fullY1 = prect->y + yorg;
- fullX2 = fullX1 + (int) prect->width;
- fullY2 = fullY1 + (int) prect->height;
- prect++;
-
- if (fullX1 < extentX1)
- fullX1 = extentX1;
-
- if (fullY1 < extentY1)
- fullY1 = extentY1;
-
- if (fullX2 > extentX2)
- fullX2 = extentX2;
-
- if (fullY2 > extentY2)
- fullY2 = extentY2;
-
- if ((fullX1 >= fullX2) || (fullY1 >= fullY2))
- continue;
- n = REGION_NUM_RECTS (pClip);
- if (n == 1)
- {
- rlFill (pDrawable,
- pGC,
- fullX1, fullY1, fullX2-fullX1, fullY2-fullY1);
- }
- else
- {
- pbox = REGION_RECTS(pClip);
- /*
- * clip the rectangle to each box in the clip region
- * this is logically equivalent to calling Intersect()
- */
- while(n--)
- {
- partX1 = pbox->x1;
- if (partX1 < fullX1)
- partX1 = fullX1;
- partY1 = pbox->y1;
- if (partY1 < fullY1)
- partY1 = fullY1;
- partX2 = pbox->x2;
- if (partX2 > fullX2)
- partX2 = fullX2;
- partY2 = pbox->y2;
- if (partY2 > fullY2)
- partY2 = fullY2;
-
- pbox++;
-
- if (partX1 < partX2 && partY1 < partY2)
- rlFill (pDrawable, pGC,
- partX1, partY1,
- partX2 - partX1, partY2 - partY1);
- }
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/accel/rlFillSpans.c b/nx-X11/programs/Xserver/miext/rootless/accel/rlFillSpans.c
deleted file mode 100644
index 9942d70e4..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/accel/rlFillSpans.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * This code is largely copied from fbfillsp.c.
- *
- * Copyright © 1998 Keith Packard
- * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XFree86: xc/programs/Xserver/fb/fbfillsp.c,v 1.2 2000/02/23 20:29:43 dawes Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "fb.h"
-#include "rlAccel.h"
-
-
-void
-rlFillSpans (DrawablePtr pDrawable,
- GCPtr pGC,
- int n,
- DDXPointPtr ppt,
- int *pwidth,
- int fSorted)
-{
- RegionPtr pClip = fbGetCompositeClip(pGC);
- BoxPtr pextent, pbox;
- int nbox;
- int extentX1, extentX2, extentY1, extentY2;
- int fullX1, fullX2, fullY1;
- int partX1, partX2;
-
- pextent = REGION_EXTENTS(pGC->pScreen, pClip);
- extentX1 = pextent->x1;
- extentY1 = pextent->y1;
- extentX2 = pextent->x2;
- extentY2 = pextent->y2;
- while (n--)
- {
- fullX1 = ppt->x;
- fullY1 = ppt->y;
- fullX2 = fullX1 + (int) *pwidth;
- ppt++;
- pwidth++;
-
- if (fullY1 < extentY1 || extentY2 <= fullY1)
- continue;
-
- if (fullX1 < extentX1)
- fullX1 = extentX1;
-
- if (fullX2 > extentX2)
- fullX2 = extentX2;
-
- if (fullX1 >= fullX2)
- continue;
-
- nbox = REGION_NUM_RECTS (pClip);
- if (nbox == 1)
- {
- rlFill (pDrawable,
- pGC,
- fullX1, fullY1, fullX2-fullX1, 1);
- }
- else
- {
- pbox = REGION_RECTS(pClip);
- while(nbox--)
- {
- if (pbox->y1 <= fullY1 && fullY1 < pbox->y2)
- {
- partX1 = pbox->x1;
- if (partX1 < fullX1)
- partX1 = fullX1;
- partX2 = pbox->x2;
- if (partX2 > fullX2)
- partX2 = fullX2;
- if (partX2 > partX1)
- {
- rlFill (pDrawable, pGC,
- partX1, fullY1,
- partX2 - partX1, 1);
- }
- }
- pbox++;
- }
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/accel/rlGlyph.c b/nx-X11/programs/Xserver/miext/rootless/accel/rlGlyph.c
deleted file mode 100644
index 3f1571963..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/accel/rlGlyph.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * This code is largely copied from fbglyph.c.
- *
- * Copyright © 1998 Keith Packard
- * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XFree86: xc/programs/Xserver/fb/fbglyph.c,v 1.12 2001/09/07 15:16:00 keithp Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "fb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "rlAccel.h"
-
-
-void
-rlImageGlyphBlt (DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- unsigned int nglyph,
- CharInfoPtr *ppciInit,
- pointer pglyphBase)
-{
- FbGCPrivPtr pPriv = fbGetGCPrivate(pGC);
- CharInfoPtr *ppci;
- CharInfoPtr pci;
- unsigned char *pglyph; /* pointer bits in glyph */
- int gWidth, gHeight; /* width and height of glyph */
- FbStride gStride; /* stride of glyph */
- Bool opaque;
- int n;
- int gx, gy;
-#ifndef FBNOPIXADDR
- void (*glyph) (FbBits *,
- FbStride,
- int,
- FbStip *,
- FbBits,
- int,
- int);
- FbBits *dst = 0;
- FbStride dstStride = 0;
- int dstBpp = 0;
- int dstXoff = 0, dstYoff = 0;
-
- glyph = 0;
- if (pPriv->and == 0)
- {
- fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
- switch (dstBpp) {
- case 8: glyph = fbGlyph8; break;
- case 16: glyph = fbGlyph16; break;
-#ifdef FB_24BIT
- case 24: glyph = fbGlyph24; break;
-#endif
- case 32: glyph = fbGlyph32; break;
- }
- }
-#endif
-
- x += pDrawable->x;
- y += pDrawable->y;
-
- if (TERMINALFONT (pGC->font)
-#ifndef FBNOPIXADDR
- && !glyph
-#endif
- )
- {
- opaque = TRUE;
- }
- else
- {
- int xBack, widthBack;
- int yBack, heightBack;
-
- ppci = ppciInit;
- n = nglyph;
- widthBack = 0;
- while (n--)
- widthBack += (*ppci++)->metrics.characterWidth;
-
- xBack = x;
- if (widthBack < 0)
- {
- xBack += widthBack;
- widthBack = -widthBack;
- }
- yBack = y - FONTASCENT(pGC->font);
- heightBack = FONTASCENT(pGC->font) + FONTDESCENT(pGC->font);
- rlSolidBoxClipped (pDrawable,
- fbGetCompositeClip(pGC),
- xBack,
- yBack,
- xBack + widthBack,
- yBack + heightBack,
- fbAnd(GXcopy,pPriv->bg,pPriv->pm),
- fbXor(GXcopy,pPriv->bg,pPriv->pm));
- opaque = FALSE;
- }
-
- ppci = ppciInit;
- while (nglyph--)
- {
- pci = *ppci++;
- pglyph = FONTGLYPHBITS(pglyphBase, pci);
- gWidth = GLYPHWIDTHPIXELS(pci);
- gHeight = GLYPHHEIGHTPIXELS(pci);
- if (gWidth && gHeight)
- {
- gx = x + pci->metrics.leftSideBearing;
- gy = y - pci->metrics.ascent;
-#ifndef FBNOPIXADDR
- if (glyph && gWidth <= sizeof (FbStip) * 8 &&
- fbGlyphIn (fbGetCompositeClip(pGC), gx, gy, gWidth, gHeight))
- {
- (*glyph) (dst + (gy + dstYoff) * dstStride,
- dstStride,
- dstBpp,
- (FbStip *) pglyph,
- pPriv->fg,
- gx + dstXoff,
- gHeight);
- }
- else
-#endif
- {
- gStride = GLYPHWIDTHBYTESPADDED(pci) / sizeof (FbStip);
- fbPutXYImage (pDrawable,
- fbGetCompositeClip(pGC),
- pPriv->fg,
- pPriv->bg,
- pPriv->pm,
- GXcopy,
- opaque,
-
- gx,
- gy,
- gWidth, gHeight,
-
- (FbStip *) pglyph,
- gStride,
- 0);
- }
- }
- x += pci->metrics.characterWidth;
- }
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/accel/rlSolid.c b/nx-X11/programs/Xserver/miext/rootless/accel/rlSolid.c
deleted file mode 100644
index edce3d2c4..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/accel/rlSolid.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Accelerated rootless fill
- */
-/*
- * This code is largely copied from fbsolid.c.
- *
- * Copyright © 1998 Keith Packard
- * Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved.
- * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-/* $XFree86: xc/programs/Xserver/fb/fbsolid.c,v 1.8 2001/10/28 03:33:08 tsi Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "fb.h"
-#include "rootlessCommon.h"
-
-
-void
-rlSolid (ScreenPtr pScreen,
- FbBits *dst,
- FbStride dstStride,
- int dstX,
- int bpp,
-
- int width,
- int height,
-
- FbBits and,
- FbBits xor)
-{
- FbBits startmask, endmask;
- int n, nmiddle;
- int startbyte, endbyte;
-
-#ifdef FB_24BIT
- if (bpp == 24 && (!FbCheck24Pix(and) || !FbCheck24Pix(xor)))
- {
- fbSolid24 (dst, dstStride, dstX, width, height, and, xor);
- return;
- }
-#endif
-
- dst += dstX >> FB_SHIFT;
- dstX &= FB_MASK;
- FbMaskBitsBytes(dstX, width, and == 0, startmask, startbyte,
- nmiddle, endmask, endbyte);
-
- /*
- * Beginning of the rootless acceleration code
- */
- if (!startmask && !endmask && !and &&
- height * nmiddle * sizeof (*dst) > rootless_FillBytes_threshold &&
- SCREENREC(pScreen)->imp->FillBytes)
- {
- if (bpp <= 8)
- xor |= xor << 8;
- if (bpp <= 16)
- xor |= xor << 16;
-
- SCREENREC(pScreen)->imp->FillBytes(nmiddle * sizeof (*dst), height,
- xor, (char *) dst + (dstX >> 3),
- dstStride * sizeof (*dst));
- return;
- }
- /* End of the rootless acceleration code */
-
- if (startmask)
- dstStride--;
- dstStride -= nmiddle;
- while (height--)
- {
- if (startmask)
- {
- FbDoLeftMaskByteRRop(dst,startbyte,startmask,and,xor);
- dst++;
- }
- n = nmiddle;
- if (!and)
- while (n--)
- *dst++ = xor;
- else
- while (n--)
- {
- *dst = FbDoRRop (*dst, and, xor);
- dst++;
- }
- if (endmask)
- FbDoRightMaskByteRRop(dst,endbyte,endmask,and,xor);
- dst += dstStride;
- }
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/rootless.h b/nx-X11/programs/Xserver/miext/rootless/rootless.h
deleted file mode 100644
index dec0e2c64..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/rootless.h
+++ /dev/null
@@ -1,436 +0,0 @@
-/*
- * External interface to generic rootless mode
- */
-/*
- * Copyright (c) 2001 Greg Parker. All Rights Reserved.
- * Copyright (c) 2002-2003 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/miext/rootless/rootless.h,v 1.7 2004/07/02 01:30:33 torrey Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _ROOTLESS_H
-#define _ROOTLESS_H
-
-#include "rootlessConfig.h"
-#include "mi.h"
-#include "gcstruct.h"
-
-/*
- Each top-level rootless window has a one-to-one correspondence to a physical
- on-screen window. The physical window is refered to as a "frame".
- */
-
-typedef void * RootlessFrameID;
-
-/*
- * RootlessWindowRec
- * This structure stores the per-frame data used by the rootless code.
- * Each top-level X window has one RootlessWindowRec associated with it.
- */
-typedef struct _RootlessWindowRec {
- // Position and size includes the window border
- // Position is in per-screen coordinates
- int x, y;
- unsigned int width, height;
- unsigned int borderWidth;
-
- RootlessFrameID wid; // implementation specific frame id
- WindowPtr win; // underlying X window
-
- // Valid only when drawing (ie. is_drawing is set)
- char *pixelData;
- int bytesPerRow;
-
- PixmapPtr pixmap;
- PixmapPtr oldPixmap;
-
-#ifdef ROOTLESS_TRACK_DAMAGE
- RegionRec damage;
-#endif
-
- unsigned int is_drawing :1; // Currently drawing?
- unsigned int is_reorder_pending :1;
-} RootlessWindowRec, *RootlessWindowPtr;
-
-
-/* Offset for screen-local to global coordinate transforms */
-#ifdef ROOTLESS_GLOBAL_COORDS
-extern int rootlessGlobalOffsetX;
-extern int rootlessGlobalOffsetY;
-#endif
-
-/* The minimum number of bytes or pixels for which to use the
- implementation's accelerated functions. */
-extern unsigned int rootless_CopyBytes_threshold;
-extern unsigned int rootless_FillBytes_threshold;
-extern unsigned int rootless_CompositePixels_threshold;
-extern unsigned int rootless_CopyWindow_threshold;
-
-/* Operations used by CompositePixels */
-enum rl_composite_op_enum {
- RL_COMPOSITE_SRC = 0,
- RL_COMPOSITE_OVER,
-};
-
-/* Data formats for depth field and composite functions */
-enum rl_depth_enum {
- RL_DEPTH_NIL = 0, /* null source when compositing */
- RL_DEPTH_ARGB8888,
- RL_DEPTH_RGB555,
- RL_DEPTH_A8, /* for masks when compositing */
- RL_DEPTH_INDEX8,
-};
-
-/* Macro to form the composite function for CompositePixels */
-#define RL_COMPOSITE_FUNCTION(op, src_depth, mask_depth, dest_depth) \
- (((op) << 24) | ((src_depth) << 16) \
- | ((mask_depth) << 8) | ((dest_depth) << 0))
-
-/* Gravity for window contents during resizing */
-enum rl_gravity_enum {
- RL_GRAVITY_NONE = 0, /* no gravity, fill everything */
- RL_GRAVITY_NORTH_WEST = 1, /* anchor to top-left corner */
- RL_GRAVITY_NORTH_EAST = 2, /* anchor to top-right corner */
- RL_GRAVITY_SOUTH_EAST = 3, /* anchor to bottom-right corner */
- RL_GRAVITY_SOUTH_WEST = 4, /* anchor to bottom-left corner */
-};
-
-
-/*------------------------------------------
- Rootless Implementation Functions
- ------------------------------------------*/
-
-/*
- * Create a new frame.
- * The frame is created unmapped.
- *
- * pFrame RootlessWindowPtr for this frame should be completely
- * initialized before calling except for pFrame->wid, which
- * is set by this function.
- * pScreen Screen on which to place the new frame
- * newX, newY Position of the frame. These will be identical to pFrame-x,
- * pFrame->y unless ROOTLESS_GLOBAL_COORDS is set.
- * pNewShape Shape for the frame (in frame-local coordinates). NULL for
- * unshaped frames.
- */
-typedef Bool (*RootlessCreateFrameProc)
- (RootlessWindowPtr pFrame, ScreenPtr pScreen, int newX, int newY,
- RegionPtr pNewShape);
-
-/*
- * Destroy a frame.
- * Drawing is stopped and all updates are flushed before this is called.
- *
- * wid Frame id
- */
-typedef void (*RootlessDestroyFrameProc)
- (RootlessFrameID wid);
-
-/*
- * Move a frame on screen.
- * Drawing is stopped and all updates are flushed before this is called.
- *
- * wid Frame id
- * pScreen Screen to move the new frame to
- * newX, newY New position of the frame
- */
-typedef void (*RootlessMoveFrameProc)
- (RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY);
-
-/*
- * Resize and move a frame.
- * Drawing is stopped and all updates are flushed before this is called.
- *
- * wid Frame id
- * pScreen Screen to move the new frame to
- * newX, newY New position of the frame
- * newW, newH New size of the frame
- * gravity Gravity for window contents (rl_gravity_enum). This is always
- * RL_GRAVITY_NONE unless ROOTLESS_RESIZE_GRAVITY is set.
- */
-typedef void (*RootlessResizeFrameProc)
- (RootlessFrameID wid, ScreenPtr pScreen,
- int newX, int newY, unsigned int newW, unsigned int newH,
- unsigned int gravity);
-
-/*
- * Change frame ordering (AKA stacking, layering).
- * Drawing is stopped before this is called. Unmapped frames are mapped by
- * setting their ordering.
- *
- * wid Frame id
- * nextWid Frame id of frame that is now above this one or NULL if this
- * frame is at the top.
- */
-typedef void (*RootlessRestackFrameProc)
- (RootlessFrameID wid, RootlessFrameID nextWid);
-
-/*
- * Change frame's shape.
- * Drawing is stopped before this is called.
- *
- * wid Frame id
- * pNewShape New shape for the frame (in frame-local coordinates)
- * or NULL if now unshaped.
- */
-typedef void (*RootlessReshapeFrameProc)
- (RootlessFrameID wid, RegionPtr pNewShape);
-
-/*
- * Unmap a frame.
- *
- * wid Frame id
- */
-typedef void (*RootlessUnmapFrameProc)
- (RootlessFrameID wid);
-
-/*
- * Start drawing to a frame.
- * Prepare a frame for direct access to its backing buffer.
- *
- * wid Frame id
- * pixelData Address of the backing buffer (returned)
- * bytesPerRow Width in bytes of the backing buffer (returned)
- */
-typedef void (*RootlessStartDrawingProc)
- (RootlessFrameID wid, char **pixelData, int *bytesPerRow);
-
-/*
- * Stop drawing to a frame.
- * No drawing to the frame's backing buffer will occur until drawing
- * is started again.
- *
- * wid Frame id
- * flush Flush drawing updates for this frame to the screen. This
- * will always be FALSE if ROOTLESS_TRACK_DAMAGE is set.
- */
-typedef void (*RootlessStopDrawingProc)
- (RootlessFrameID wid, Bool flush);
-
-/*
- * Flush drawing updates to the screen.
- * Drawing is stopped before this is called.
- *
- * wid Frame id
- * pDamage Region containing all the changed pixels in frame-lcoal
- * coordinates. This is clipped to the window's clip. This
- * will be NULL if ROOTLESS_TRACK_DAMAGE is not set.
- */
-typedef void (*RootlessUpdateRegionProc)
- (RootlessFrameID wid, RegionPtr pDamage);
-
-/*
- * Mark damaged rectangles as requiring redisplay to screen.
- * This will only be called if ROOTLESS_TRACK_DAMAGE is not set.
- *
- * wid Frame id
- * nrects Number of damaged rectangles
- * rects Array of damaged rectangles in frame-local coordinates
- * shift_x, Vector to shift rectangles by
- * shift_y
- */
-typedef void (*RootlessDamageRectsProc)
- (RootlessFrameID wid, int nrects, const BoxRec *rects,
- int shift_x, int shift_y);
-
-/*
- * Switch the window associated with a frame. (Optional)
- * When a framed window is reparented, the frame is resized and set to
- * use the new top-level parent. If defined this function will be called
- * afterwards for implementation specific bookkeeping.
- *
- * pFrame Frame whose window has switched
- * oldWin Previous window wrapped by this frame
- */
-typedef void (*RootlessSwitchWindowProc)
- (RootlessWindowPtr pFrame, WindowPtr oldWin);
-
-/*
- * Check if window should be reordered. (Optional)
- * The underlying window system may animate windows being ordered in.
- * We want them to be mapped but remain ordered out until the animation
- * completes. If defined this function will be called to check if a
- * framed window should be reordered now. If this function returns
- * FALSE, the window will still be mapped from the X11 perspective, but
- * the RestackFrame function will not be called for its frame.
- *
- * pFrame Frame to reorder
- */
-typedef Bool (*RootlessDoReorderWindowProc)
- (RootlessWindowPtr pFrame);
-
-/*
- * Copy bytes. (Optional)
- * Source and destinate may overlap and the right thing should happen.
- *
- * width Bytes to copy per row
- * height Number of rows
- * src Source data
- * srcRowBytes Width of source in bytes
- * dst Destination data
- * dstRowBytes Width of destination in bytes
- */
-typedef void (*RootlessCopyBytesProc)
- (unsigned int width, unsigned int height,
- const void *src, unsigned int srcRowBytes,
- void *dst, unsigned int dstRowBytes);
-
-/*
- * Fill memory with 32-bit pattern. (Optional)
- *
- * width Bytes to fill per row
- * height Number of rows
- * value 32-bit pattern to fill with
- * dst Destination data
- * dstRowBytes Width of destination in bytes
- */
-typedef void (*RootlessFillBytesProc)
- (unsigned int width, unsigned int height, unsigned int value,
- void *dst, unsigned int dstRowBytes);
-
-/*
- * Composite pixels from source and mask to destination. (Optional)
- *
- * width, height Size of area to composite to in pizels
- * function Composite function built with RL_COMPOSITE_FUNCTION
- * src Source data
- * srcRowBytes Width of source in bytes (Passing NULL means source
- * is a single pixel.
- * mask Mask data
- * maskRowBytes Width of mask in bytes
- * dst Destination data
- * dstRowBytes Width of destination in bytes
- *
- * For src and dst, the first element of the array is the color data. If
- * the second element is non-null it implies there is alpha data (which
- * may be meshed or planar). Data without alpha is assumed to be opaque.
- *
- * An X11 error code is returned.
- */
-typedef int (*RootlessCompositePixelsProc)
- (unsigned int width, unsigned int height, unsigned int function,
- void *src[2], unsigned int srcRowBytes[2],
- void *mask, unsigned int maskRowBytes,
- void *dst[2], unsigned int dstRowBytes[2]);
-
-/*
- * Copy area in frame to another part of frame. (Optional)
- *
- * wid Frame id
- * dstNrects Number of rectangles to copy
- * dstRects Array of rectangles to copy
- * dx, dy Number of pixels away to copy area
- */
-typedef void (*RootlessCopyWindowProc)
- (RootlessFrameID wid, int dstNrects, const BoxRec *dstRects,
- int dx, int dy);
-
-/*
- * Rootless implementation function list
- */
-typedef struct _RootlessFrameProcs {
- RootlessCreateFrameProc CreateFrame;
- RootlessDestroyFrameProc DestroyFrame;
-
- RootlessMoveFrameProc MoveFrame;
- RootlessResizeFrameProc ResizeFrame;
- RootlessRestackFrameProc RestackFrame;
- RootlessReshapeFrameProc ReshapeFrame;
- RootlessUnmapFrameProc UnmapFrame;
-
- RootlessStartDrawingProc StartDrawing;
- RootlessStopDrawingProc StopDrawing;
- RootlessUpdateRegionProc UpdateRegion;
-#ifndef ROOTLESS_TRACK_DAMAGE
- RootlessDamageRectsProc DamageRects;
-#endif
-
- /* Optional frame functions */
- RootlessSwitchWindowProc SwitchWindow;
- RootlessDoReorderWindowProc DoReorderWindow;
-
- /* Optional acceleration functions */
- RootlessCopyBytesProc CopyBytes;
- RootlessFillBytesProc FillBytes;
- RootlessCompositePixelsProc CompositePixels;
- RootlessCopyWindowProc CopyWindow;
-} RootlessFrameProcsRec, *RootlessFrameProcsPtr;
-
-
-/*
- * Initialize rootless mode on the given screen.
- */
-Bool RootlessInit(ScreenPtr pScreen, RootlessFrameProcsPtr procs);
-
-/*
- * Initialize acceleration for rootless mode on a given screen.
- * Note: RootlessAccelInit() must be called before DamageSetup()
- * and RootlessInit() must be called afterwards.
- */
-Bool RootlessAccelInit(ScreenPtr pScreen);
-
-/*
- * Return the frame ID for the physical window displaying the given window.
- *
- * create If true and the window has no frame, attempt to create one
- */
-RootlessFrameID RootlessFrameForWindow(WindowPtr pWin, Bool create);
-
-/*
- * Return the top-level parent of a window.
- * The root is the top-level parent of itself, even though the root is
- * not otherwise considered to be a top-level window.
- */
-WindowPtr TopLevelParent(WindowPtr pWindow);
-
-/*
- * Prepare a window for direct access to its backing buffer.
- */
-void RootlessStartDrawing(WindowPtr pWindow);
-
-/*
- * Finish drawing to a window's backing buffer.
- *
- * flush If true and ROOTLESS_TRACK_DAMAGE is set, damaged areas
- * are flushed to the screen.
- */
-void RootlessStopDrawing(WindowPtr pWindow, Bool flush);
-
-/*
- * Alocate a new screen pixmap.
- * miCreateScreenResources does not do this properly with a null
- * framebuffer pointer.
- */
-void RootlessUpdateScreenPixmap(ScreenPtr pScreen);
-
-/*
- * Reposition all windows on a screen to their correct positions.
- */
-void RootlessRepositionWindows(ScreenPtr pScreen);
-
-#endif /* _ROOTLESS_H */
diff --git a/nx-X11/programs/Xserver/miext/rootless/rootlessCommon.c b/nx-X11/programs/Xserver/miext/rootless/rootlessCommon.c
deleted file mode 100644
index 33321105e..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/rootlessCommon.c
+++ /dev/null
@@ -1,405 +0,0 @@
-/*
- * Common rootless definitions and code
- */
-/*
- * Copyright (c) 2001 Greg Parker. All Rights Reserved.
- * Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved.
- * Copyright (c) 2002 Apple Computer, Inc. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/miext/rootless/rootlessCommon.c,v 1.6 2004/07/02 01:30:33 torrey Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "rootlessCommon.h"
-
-unsigned int rootless_CopyBytes_threshold = 0;
-unsigned int rootless_FillBytes_threshold = 0;
-unsigned int rootless_CompositePixels_threshold = 0;
-unsigned int rootless_CopyWindow_threshold = 0;
-#ifdef ROOTLESS_GLOBAL_COORDS
-int rootlessGlobalOffsetX = 0;
-int rootlessGlobalOffsetY = 0;
-#endif
-
-RegionRec rootlessHugeRoot = {{-32767, -32767, 32767, 32767}, NULL};
-
-/* Following macro from miregion.c */
-
-/* true iff two Boxes overlap */
-#define EXTENTCHECK(r1,r2) \
- (!( ((r1)->x2 <= (r2)->x1) || \
- ((r1)->x1 >= (r2)->x2) || \
- ((r1)->y2 <= (r2)->y1) || \
- ((r1)->y1 >= (r2)->y2) ) )
-
-
-/*
- * TopLevelParent
- * Returns the top-level parent of pWindow.
- * The root is the top-level parent of itself, even though the root is
- * not otherwise considered to be a top-level window.
- */
-WindowPtr
-TopLevelParent(WindowPtr pWindow)
-{
- WindowPtr top;
-
- if (IsRoot(pWindow))
- return pWindow;
-
- top = pWindow;
- while (top && ! IsTopLevel(top))
- top = top->parent;
-
- return top;
-}
-
-
-/*
- * IsFramedWindow
- * Returns TRUE if this window is visible inside a frame
- * (e.g. it is visible and has a top-level or root parent)
- */
-Bool
-IsFramedWindow(WindowPtr pWin)
-{
- WindowPtr top;
-
- if (!pWin->realized)
- return FALSE;
- top = TopLevelParent(pWin);
-
- return (top && WINREC(top));
-}
-
-
-/*
- * RootlessStartDrawing
- * Prepare a window for direct access to its backing buffer.
- * Each top-level parent has a Pixmap representing its backing buffer,
- * which all of its children inherit.
- */
-void RootlessStartDrawing(WindowPtr pWindow)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- WindowPtr top = TopLevelParent(pWindow);
- RootlessWindowRec *winRec;
-
- if (top == NULL)
- return;
- winRec = WINREC(top);
- if (winRec == NULL)
- return;
-
- // Make sure the window's top-level parent is prepared for drawing.
- if (!winRec->is_drawing) {
- int bw = wBorderWidth(top);
-
- SCREENREC(pScreen)->imp->StartDrawing(winRec->wid, &winRec->pixelData,
- &winRec->bytesPerRow);
-
- winRec->pixmap =
- GetScratchPixmapHeader(pScreen, winRec->width, winRec->height,
- top->drawable.depth,
- top->drawable.bitsPerPixel,
- winRec->bytesPerRow,
- winRec->pixelData);
- SetPixmapBaseToScreen(winRec->pixmap,
- top->drawable.x - bw, top->drawable.y - bw);
-
- winRec->is_drawing = TRUE;
- }
-
- winRec->oldPixmap = pScreen->GetWindowPixmap(pWindow);
- pScreen->SetWindowPixmap(pWindow, winRec->pixmap);
-}
-
-
-/*
- * RootlessStopDrawing
- * Stop drawing to a window's backing buffer. If flush is true,
- * damaged regions are flushed to the screen.
- */
-void RootlessStopDrawing(WindowPtr pWindow, Bool flush)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- WindowPtr top = TopLevelParent(pWindow);
- RootlessWindowRec *winRec;
-
- if (top == NULL)
- return;
- winRec = WINREC(top);
- if (winRec == NULL)
- return;
-
- if (winRec->is_drawing) {
- SCREENREC(pScreen)->imp->StopDrawing(winRec->wid, flush);
-
- FreeScratchPixmapHeader(winRec->pixmap);
- pScreen->SetWindowPixmap(pWindow, winRec->oldPixmap);
- winRec->pixmap = NULL;
-
- winRec->is_drawing = FALSE;
- }
- else if (flush) {
- SCREENREC(pScreen)->imp->UpdateRegion(winRec->wid, NULL);
- }
-
- if (flush && winRec->is_reorder_pending) {
- winRec->is_reorder_pending = FALSE;
- RootlessReorderWindow(pWindow);
- }
-}
-
-
-/*
- * RootlessDamageRegion
- * Mark a damaged region as requiring redisplay to screen.
- * pRegion is in GLOBAL coordinates.
- */
-void
-RootlessDamageRegion(WindowPtr pWindow, RegionPtr pRegion)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- RootlessWindowRec *winRec;
- RegionRec clipped;
- WindowPtr pTop;
- BoxPtr b1, b2;
-
- RL_DEBUG_MSG("Damaged win 0x%x ", pWindow);
-
- pTop = TopLevelParent(pWindow);
- if (pTop == NULL)
- return;
-
- winRec = WINREC(pTop);
- if (winRec == NULL)
- return;
-
- /* We need to intersect the drawn region with the clip of the window
- to avoid marking places we didn't actually draw (which can cause
- problems when the window has an extra client-side backing store)
-
- But this is a costly operation and since we'll normally just be
- drawing inside the clip, go to some lengths to avoid the general
- case intersection. */
-
- b1 = REGION_EXTENTS(pScreen, &pWindow->borderClip);
- b2 = REGION_EXTENTS(pScreen, pRegion);
-
- if (EXTENTCHECK(b1, b2)) {
- /* Regions may overlap. */
-
- if (REGION_NUM_RECTS(pRegion) == 1) {
- int in;
-
- /* Damaged region only has a single rect, so we can
- just compare that against the region */
-
- in = RECT_IN_REGION(pScreen, &pWindow->borderClip,
- REGION_RECTS (pRegion));
- if (in == rgnIN) {
- /* clip totally contains pRegion */
-
-#ifdef ROOTLESS_TRACK_DAMAGE
- REGION_UNION(pScreen, &winRec->damage,
- &winRec->damage, (pRegion));
-#else
- SCREENREC(pScreen)->imp->DamageRects(winRec->wid,
- REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- -winRec->x, -winRec->y);
-#endif
-
- RootlessQueueRedisplay(pTop->drawable.pScreen);
- goto out;
- }
- else if (in == rgnOUT) {
- /* clip doesn't contain pRegion */
-
- goto out;
- }
- }
-
- /* clip overlaps pRegion, need to intersect */
-
- REGION_NULL(pScreen, &clipped);
- REGION_INTERSECT(pScreen, &clipped, &pWindow->borderClip, pRegion);
-
-#ifdef ROOTLESS_TRACK_DAMAGE
- REGION_UNION(pScreen, &winRec->damage,
- &winRec->damage, (pRegion));
-#else
- SCREENREC(pScreen)->imp->DamageRects(winRec->wid,
- REGION_NUM_RECTS(&clipped),
- REGION_RECTS(&clipped),
- -winRec->x, -winRec->y);
-#endif
-
- REGION_UNINIT(pScreen, &clipped);
-
- RootlessQueueRedisplay(pTop->drawable.pScreen);
- }
-
-out:
-#ifdef ROOTLESSDEBUG
- {
- BoxRec *box = REGION_RECTS(pRegion), *end;
- int numBox = REGION_NUM_RECTS(pRegion);
-
- for (end = box+numBox; box < end; box++) {
- RL_DEBUG_MSG("Damage rect: %i, %i, %i, %i\n",
- box->x1, box->x2, box->y1, box->y2);
- }
- }
-#endif
- return;
-}
-
-
-/*
- * RootlessDamageBox
- * Mark a damaged box as requiring redisplay to screen.
- * pRegion is in GLOBAL coordinates.
- */
-void
-RootlessDamageBox(WindowPtr pWindow, BoxPtr pBox)
-{
- RegionRec region;
-
- REGION_INIT(pWindow->drawable.pScreen, &region, pBox, 1);
-
- RootlessDamageRegion(pWindow, &region);
-
- REGION_UNINIT(pWindow->drawable.pScreen, &region); /* no-op */
-}
-
-
-/*
- * RootlessDamageRect
- * Mark a damaged rectangle as requiring redisplay to screen.
- * (x, y, w, h) is in window-local coordinates.
- */
-void
-RootlessDamageRect(WindowPtr pWindow, int x, int y, int w, int h)
-{
- BoxRec box;
- RegionRec region;
-
- x += pWindow->drawable.x;
- y += pWindow->drawable.y;
-
- box.x1 = x;
- box.x2 = x + w;
- box.y1 = y;
- box.y2 = y + h;
-
- REGION_INIT(pWindow->drawable.pScreen, &region, &box, 1);
-
- RootlessDamageRegion(pWindow, &region);
-
- REGION_UNINIT(pWindow->drawable.pScreen, &region); /* no-op */
-}
-
-
-/*
- * RootlessRedisplay
- * Stop drawing and redisplay the damaged region of a window.
- */
-void
-RootlessRedisplay(WindowPtr pWindow)
-{
-#ifdef ROOTLESS_TRACK_DAMAGE
-
- RootlessWindowRec *winRec = WINREC(pWindow);
- ScreenPtr pScreen = pWindow->drawable.pScreen;
-
- RootlessStopDrawing(pWindow, FALSE);
-
- if (REGION_NOTEMPTY(pScreen, &winRec->damage)) {
- RL_DEBUG_MSG("Redisplay Win 0x%x, %i x %i @ (%i, %i)\n",
- pWindow, winRec->width, winRec->height,
- winRec->x, winRec->y);
-
- // move region to window local coords
- REGION_TRANSLATE(pScreen, &winRec->damage,
- -winRec->x, -winRec->y);
-
- SCREENREC(pScreen)->imp->UpdateRegion(winRec->wid, &winRec->damage);
-
- REGION_EMPTY(pScreen, &winRec->damage);
- }
-
-#else /* !ROOTLESS_TRACK_DAMAGE */
-
- RootlessStopDrawing(pWindow, TRUE);
-
-#endif
-}
-
-
-/*
- * RootlessRepositionWindows
- * Reposition all windows on a screen to their correct positions.
- */
-void
-RootlessRepositionWindows(ScreenPtr pScreen)
-{
- WindowPtr root = WindowTable[pScreen->myNum];
- WindowPtr win;
-
- if (root != NULL) {
- RootlessRepositionWindow(root);
-
- for (win = root->firstChild; win; win = win->nextSib) {
- if (WINREC(win) != NULL)
- RootlessRepositionWindow(win);
- }
- }
-}
-
-
-/*
- * RootlessRedisplayScreen
- * Walk every window on a screen and redisplay the damaged regions.
- */
-void
-RootlessRedisplayScreen(ScreenPtr pScreen)
-{
- WindowPtr root = WindowTable[pScreen->myNum];
-
- if (root != NULL) {
- WindowPtr win;
-
- RootlessRedisplay(root);
- for (win = root->firstChild; win; win = win->nextSib) {
- if (WINREC(win) != NULL) {
- RootlessRedisplay(win);
- }
- }
- }
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/rootlessCommon.h b/nx-X11/programs/Xserver/miext/rootless/rootlessCommon.h
deleted file mode 100644
index beb1fd666..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/rootlessCommon.h
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Common internal rootless definitions and code
- */
-/*
- * Copyright (c) 2001 Greg Parker. All Rights Reserved.
- * Copyright (c) 2002-2004 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/miext/rootless/rootlessCommon.h,v 1.5 2004/07/02 01:30:33 torrey Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _ROOTLESSCOMMON_H
-#define _ROOTLESSCOMMON_H
-
-#include "rootless.h"
-#include "fb.h"
-
-#ifdef RENDER
-#include "picturestr.h"
-#endif
-
-
-// Debug output, or not.
-#ifdef ROOTLESSDEBUG
-#define RL_DEBUG_MSG ErrorF
-#else
-#define RL_DEBUG_MSG(a, ...)
-#endif
-
-
-// Global variables
-extern int rootlessGCPrivateIndex;
-extern int rootlessScreenPrivateIndex;
-extern int rootlessWindowPrivateIndex;
-
-
-// RootlessGCRec: private per-gc data
-typedef struct {
- GCFuncs *originalFuncs;
- GCOps *originalOps;
-} RootlessGCRec;
-
-
-// RootlessScreenRec: per-screen private data
-typedef struct _RootlessScreenRec {
- // Rootless implementation functions
- RootlessFrameProcsPtr imp;
-
- // Wrapped screen functions
- CreateScreenResourcesProcPtr CreateScreenResources;
- CloseScreenProcPtr CloseScreen;
-
- CreateWindowProcPtr CreateWindow;
- DestroyWindowProcPtr DestroyWindow;
- RealizeWindowProcPtr RealizeWindow;
- UnrealizeWindowProcPtr UnrealizeWindow;
- MoveWindowProcPtr MoveWindow;
- ResizeWindowProcPtr ResizeWindow;
- RestackWindowProcPtr RestackWindow;
- ReparentWindowProcPtr ReparentWindow;
- ChangeBorderWidthProcPtr ChangeBorderWidth;
- PositionWindowProcPtr PositionWindow;
- ChangeWindowAttributesProcPtr ChangeWindowAttributes;
-
- CreateGCProcPtr CreateGC;
- PaintWindowBackgroundProcPtr PaintWindowBackground;
- PaintWindowBorderProcPtr PaintWindowBorder;
- CopyWindowProcPtr CopyWindow;
- GetImageProcPtr GetImage;
- SourceValidateProcPtr SourceValidate;
-
- MarkOverlappedWindowsProcPtr MarkOverlappedWindows;
- ValidateTreeProcPtr ValidateTree;
-
-#ifdef SHAPE
- SetShapeProcPtr SetShape;
-#endif
-
-#ifdef RENDER
- CompositeProcPtr Composite;
- GlyphsProcPtr Glyphs;
-#endif
-
- void *pixmap_data;
- unsigned int pixmap_data_size;
-
- void *redisplay_timer;
- unsigned int redisplay_timer_set :1;
- unsigned int redisplay_queued :1;
- unsigned int redisplay_expired :1;
-} RootlessScreenRec, *RootlessScreenPtr;
-
-
-#undef MIN
-#define MIN(x,y) ((x) < (y) ? (x) : (y))
-#undef MAX
-#define MAX(x,y) ((x) > (y) ? (x) : (y))
-
-// "Definition of the Porting Layer for the X11 Sample Server" says
-// unwrap and rewrap of screen functions is unnecessary, but
-// screen->CreateGC changes after a call to cfbCreateGC.
-
-#define SCREEN_UNWRAP(screen, fn) \
- screen->fn = SCREENREC(screen)->fn;
-
-#define SCREEN_WRAP(screen, fn) \
- SCREENREC(screen)->fn = screen->fn; \
- screen->fn = Rootless##fn
-
-
-// Accessors for screen and window privates
-
-#define SCREENREC(pScreen) \
- ((RootlessScreenRec *)(pScreen)->devPrivates[rootlessScreenPrivateIndex].ptr)
-
-#define WINREC(pWin) \
- ((RootlessWindowRec *)(pWin)->devPrivates[rootlessWindowPrivateIndex].ptr)
-
-
-// Call a rootless implementation function.
-// Many rootless implementation functions are allowed to be NULL.
-#define CallFrameProc(pScreen, proc, params) \
- if (SCREENREC(pScreen)->frameProcs.proc) { \
- RL_DEBUG_MSG("calling frame proc " #proc " "); \
- SCREENREC(pScreen)->frameProcs.proc params; \
- }
-
-
-// BoxRec manipulators
-// Copied from shadowfb
-
-#define TRIM_BOX(box, pGC) { \
- BoxPtr extents = &pGC->pCompositeClip->extents;\
- if(box.x1 < extents->x1) box.x1 = extents->x1; \
- if(box.x2 > extents->x2) box.x2 = extents->x2; \
- if(box.y1 < extents->y1) box.y1 = extents->y1; \
- if(box.y2 > extents->y2) box.y2 = extents->y2; \
-}
-
-#define TRANSLATE_BOX(box, pDraw) { \
- box.x1 += pDraw->x; \
- box.x2 += pDraw->x; \
- box.y1 += pDraw->y; \
- box.y2 += pDraw->y; \
-}
-
-#define TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC) { \
- TRANSLATE_BOX(box, pDraw); \
- TRIM_BOX(box, pGC); \
-}
-
-#define BOX_NOT_EMPTY(box) \
- (((box.x2 - box.x1) > 0) && ((box.y2 - box.y1) > 0))
-
-
-// HUGE_ROOT and NORMAL_ROOT
-// We don't want to clip windows to the edge of the screen.
-// HUGE_ROOT temporarily makes the root window really big.
-// This is needed as a wrapper around any function that calls
-// SetWinSize or SetBorderSize which clip a window against its
-// parents, including the root.
-
-extern RegionRec rootlessHugeRoot;
-
-#define HUGE_ROOT(pWin) \
- do { \
- WindowPtr w = pWin; \
- while (w->parent) \
- w = w->parent; \
- saveRoot = w->winSize; \
- w->winSize = rootlessHugeRoot; \
- } while (0)
-
-#define NORMAL_ROOT(pWin) \
- do { \
- WindowPtr w = pWin; \
- while (w->parent) \
- w = w->parent; \
- w->winSize = saveRoot; \
- } while (0)
-
-
-// Returns TRUE if this window is a top-level window (i.e. child of the root)
-// The root is not a top-level window.
-#define IsTopLevel(pWin) \
- ((pWin) && (pWin)->parent && !(pWin)->parent->parent)
-
-// Returns TRUE if this window is a root window
-#define IsRoot(pWin) \
- ((pWin) == WindowTable[(pWin)->drawable.pScreen->myNum])
-
-
-/*
- * SetPixmapBaseToScreen
- * Move the given pixmap's base address to where pixel (0, 0)
- * would be if the pixmap's actual data started at (x, y).
- * Can't access the bits before the first word of the drawable's data in
- * rootless mode, so make sure our base address is always 32-bit aligned.
- */
-#define SetPixmapBaseToScreen(pix, _x, _y) { \
- PixmapPtr _pPix = (PixmapPtr) (pix); \
- _pPix->devPrivate.ptr = (char *) (_pPix->devPrivate.ptr) - \
- ((int)(_x) * _pPix->drawable.bitsPerPixel/8 + \
- (int)(_y) * _pPix->devKind); \
- if (_pPix->drawable.bitsPerPixel != FB_UNIT) { \
- unsigned _diff = ((unsigned) _pPix->devPrivate.ptr) & \
- (FB_UNIT / CHAR_BIT - 1); \
- _pPix->devPrivate.ptr = (char *) (_pPix->devPrivate.ptr) - \
- _diff; \
- _pPix->drawable.x = _diff / \
- (_pPix->drawable.bitsPerPixel / CHAR_BIT); \
- } \
-}
-
-
-// Returns TRUE if this window is visible inside a frame
-// (e.g. it is visible and has a top-level or root parent)
-Bool IsFramedWindow(WindowPtr pWin);
-
-// Routines that cause regions to get redrawn.
-// DamageRegion and DamageRect are in global coordinates.
-// DamageBox is in window-local coordinates.
-void RootlessDamageRegion(WindowPtr pWindow, RegionPtr pRegion);
-void RootlessDamageRect(WindowPtr pWindow, int x, int y, int w, int h);
-void RootlessDamageBox(WindowPtr pWindow, BoxPtr pBox);
-void RootlessRedisplay(WindowPtr pWindow);
-void RootlessRedisplayScreen(ScreenPtr pScreen);
-
-void RootlessQueueRedisplay(ScreenPtr pScreen);
-
-// Move a window to its proper location on the screen.
-void RootlessRepositionWindow(WindowPtr pWin);
-
-// Move the window to it's correct place in the physical stacking order.
-void RootlessReorderWindow(WindowPtr pWin);
-
-#endif /* _ROOTLESSCOMMON_H */
diff --git a/nx-X11/programs/Xserver/miext/rootless/rootlessConfig.h b/nx-X11/programs/Xserver/miext/rootless/rootlessConfig.h
deleted file mode 100644
index eabbaef43..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/rootlessConfig.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Platform specific rootless configuration
- */
-/*
- * Copyright (c) 2003 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/miext/rootless/rootlessConfig.h,v 1.1 2003/04/15 01:05:44 torrey Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _ROOTLESSCONFIG_H
-#define _ROOTLESSCONFIG_H
-
-#ifdef __DARWIN__
-
-# define ROOTLESS_ACCEL TRUE
-# define ROOTLESS_GLOBAL_COORDS TRUE
-# define ROOTLESS_PROTECT_ALPHA TRUE
-# define ROOTLESS_REDISPLAY_DELAY 10
-# define ROOTLESS_RESIZE_GRAVITY TRUE
-# undef ROOTLESS_TRACK_DAMAGE
-
-/* Bit mask for alpha channel with a particular number of bits per
- pixel. Note that we only care for 32bpp data. Mac OS X uses planar
- alpha for 16bpp. */
-# define RootlessAlphaMask(bpp) ((bpp) == 32 ? 0xFF000000 : 0)
-
-#endif /* __DARWIN__ */
-
-#if defined(__CYGWIN__) || defined(WIN32)
-
-# define ROOTLESS_ACCEL YES
-# define ROOTLESS_GLOBAL_COORDS TRUE
-# define ROOTLESS_PROTECT_ALPHA NO
-# define ROOTLESS_REDISPLAY_DELAY 10
-# undef ROOTLESS_RESIZE_GRAVITY
-# undef ROOTLESS_TRACK_DAMAGE
-/*# define ROOTLESSDEBUG*/
-
-# define RootlessAlphaMask(bpp) ((bpp) == 32 ? 0xFF000000 : 0)
-
-#endif /* __CYGWIN__ */
-
-#endif /* _ROOTLESSCONFIG_H */
diff --git a/nx-X11/programs/Xserver/miext/rootless/rootlessGC.c b/nx-X11/programs/Xserver/miext/rootless/rootlessGC.c
deleted file mode 100644
index 61987addb..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/rootlessGC.c
+++ /dev/null
@@ -1,1508 +0,0 @@
-/*
- * Graphics Context support for generic rootless X server
- */
-/*
- * Copyright (c) 2001 Greg Parker. All Rights Reserved.
- * Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved.
- * Copyright (c) 2002 Apple Computer, Inc. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/miext/rootless/rootlessGC.c,v 1.1 2003/04/15 01:05:44 torrey Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "mi.h"
-#include "scrnintstr.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-#include "dixfontstr.h"
-#include "mivalidate.h"
-#include "fb.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-#include "rootlessCommon.h"
-
-
-// GC functions
-static void RootlessValidateGC(GCPtr pGC, unsigned long changes,
- DrawablePtr pDrawable);
-static void RootlessChangeGC(GCPtr pGC, unsigned long mask);
-static void RootlessCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst);
-static void RootlessDestroyGC(GCPtr pGC);
-static void RootlessChangeClip(GCPtr pGC, int type, pointer pvalue,
- int nrects);
-static void RootlessDestroyClip(GCPtr pGC);
-static void RootlessCopyClip(GCPtr pgcDst, GCPtr pgcSrc);
-
-GCFuncs rootlessGCFuncs = {
- RootlessValidateGC,
- RootlessChangeGC,
- RootlessCopyGC,
- RootlessDestroyGC,
- RootlessChangeClip,
- RootlessDestroyClip,
- RootlessCopyClip,
-};
-
-// GC operations
-static void RootlessFillSpans();
-static void RootlessSetSpans();
-static void RootlessPutImage();
-static RegionPtr RootlessCopyArea();
-static RegionPtr RootlessCopyPlane();
-static void RootlessPolyPoint();
-static void RootlessPolylines();
-static void RootlessPolySegment();
-static void RootlessPolyRectangle();
-static void RootlessPolyArc();
-static void RootlessFillPolygon();
-static void RootlessPolyFillRect();
-static void RootlessPolyFillArc();
-static int RootlessPolyText8();
-static int RootlessPolyText16();
-static void RootlessImageText8();
-static void RootlessImageText16();
-static void RootlessImageGlyphBlt();
-static void RootlessPolyGlyphBlt();
-static void RootlessPushPixels();
-
-static GCOps rootlessGCOps = {
- RootlessFillSpans,
- RootlessSetSpans,
- RootlessPutImage,
- RootlessCopyArea,
- RootlessCopyPlane,
- RootlessPolyPoint,
- RootlessPolylines,
- RootlessPolySegment,
- RootlessPolyRectangle,
- RootlessPolyArc,
- RootlessFillPolygon,
- RootlessPolyFillRect,
- RootlessPolyFillArc,
- RootlessPolyText8,
- RootlessPolyText16,
- RootlessImageText8,
- RootlessImageText16,
- RootlessImageGlyphBlt,
- RootlessPolyGlyphBlt,
- RootlessPushPixels
-#ifdef NEED_LINEHELPER
- , NULL
-#endif
-};
-
-/*
- There are two issues we must contend with when drawing. These are
- controlled with ROOTLESS_PROTECT_ALPHA and ROOTLESS_ACCEL.
-
- If ROOTLESS_PROTECT_ALPHA is set, we have to make sure that the alpha
- channel of the on screen windows is always opaque. fb makes this harder
- than it would otherwise be by noticing that a planemask of 0x00ffffff
- includes all bits when depth==24, and so it "optimizes" the planemask to
- 0xffffffff. We work around this by temporarily setting depth=bpp while
- changing the GC.
-
- So the normal situation (in 32 bit mode) is that the planemask is
- 0x00ffffff and thus fb leaves the alpha channel alone. The rootless
- implementation is responsible for setting the alpha channel opaque
- initially.
-
- Unfortunately drawing with a planemask that doesn't have all bits set
- normally causes fb to fall off its fastest paths when blitting and
- filling. So we try to recognize when we can relax the planemask back to
- 0xffffffff, and do that for the duration of the drawing operation,
- setting the alpha channel in fg/bg pixels to opaque at the same time. We
- can do this when drawing op is GXcopy. We can also do this when copying
- from another window since its alpha channel must also be opaque.
-
- The other issue to consider is that the rootless implementation may
- provide accelerated drawing functions if ROOTLESS_ACCEL is set. For some
- drawing primitives we swap in rootless acceleration functions, which use
- the accelerated drawing functions where possible.
-
- Where both alpha protection and acceleration is used, it is even a bigger
- win to relax the planemask to all ones because most accelerated drawing
- functions can only be used in this case. However, even if we can't set
- the planemask to all ones, we can still use the accelerated
- CompositePixels function for GXcopy if it is a forward copy. This is
- mainly intended for copying from pixmaps to windows. The CompositePixels
- operation used sets alpha to 0xFF during the copy.
-
- The three macros below are used to implement this, potentially accelerated
- drawing ops look something like this:
-
- OP {
- GC_SAVE(gc);
- GCOP_UNWRAP(gc);
-
- ...
-
- if (canAccelxxx(..) && otherwise-suitable)
- GC_UNSET_PM(gc, dst);
-
- gc->funcs->OP(gc, ...);
-
- GC_RESTORE(gc, dst);
- GCOP_WRAP(gc);
- }
-
- */
-
-#define GC_SAVE(pGC) \
- unsigned long _save_fg = (pGC)->fgPixel; \
- unsigned long _save_bg = (pGC)->bgPixel; \
- unsigned long _save_pm = (pGC)->planemask; \
- Bool _changed = FALSE
-
-#define GC_RESTORE(pGC, pDraw) \
- do { \
- if (_changed) { \
- unsigned int depth = (pDraw)->depth; \
- (pGC)->fgPixel = _save_fg; \
- (pGC)->bgPixel = _save_bg; \
- (pGC)->planemask = _save_pm; \
- (pDraw)->depth = (pDraw)->bitsPerPixel; \
- VALIDATE_GC(pGC, GCForeground | GCBackground | \
- GCPlaneMask, pDraw); \
- (pDraw)->depth = depth; \
- } \
- } while (0)
-
-#define GC_UNSET_PM(pGC, pDraw) \
- do { \
- unsigned int mask = RootlessAlphaMask ((pDraw)->bitsPerPixel); \
- if (((pGC)->planemask & mask) != mask) { \
- unsigned int depth = (pDraw)->depth; \
- (pGC)->fgPixel |= mask; \
- (pGC)->bgPixel |= mask; \
- (pGC)->planemask |= mask; \
- (pDraw)->depth = (pDraw)->bitsPerPixel; \
- VALIDATE_GC(pGC, GCForeground | \
- GCBackground | GCPlaneMask, pDraw); \
- (pDraw)->depth = depth; \
- _changed = TRUE; \
- } \
- } while (0)
-
-#define VALIDATE_GC(pGC, changes, pDrawable) \
- do { \
- pGC->funcs->ValidateGC(pGC, changes, pDrawable); \
- if (((WindowPtr) pDrawable)->viewable) { \
- gcrec->originalOps = pGC->ops; \
- } \
- } while(0)
-
-static RootlessWindowRec *
-canAccelBlit (DrawablePtr pDraw, GCPtr pGC)
-{
- WindowPtr pTop;
- RootlessWindowRec *winRec;
- unsigned int pm;
-
- if (pGC->alu != GXcopy)
- return NULL;
-
- if (pDraw->type != DRAWABLE_WINDOW)
- return NULL;
-
- pm = ~RootlessAlphaMask(pDraw->bitsPerPixel);
- if ((pGC->planemask & pm) != pm)
- return NULL;
-
- pTop = TopLevelParent((WindowPtr) pDraw);
- if (pTop == NULL)
- return NULL;
-
- winRec = WINREC(pTop);
- if (winRec == NULL)
- return NULL;
-
- return winRec;
-}
-
-static inline RootlessWindowRec *
-canAccelFill(DrawablePtr pDraw, GCPtr pGC)
-{
- if (pGC->fillStyle != FillSolid)
- return NULL;
-
- return canAccelBlit(pDraw, pGC);
-}
-
-static unsigned int
-boxBytes(DrawablePtr pDraw, BoxRec *box)
-{
- unsigned int pixels;
-
- pixels = (box->x2 - box->x1) * (box->y2 - box->y1);
-
- return pixels * (pDraw->bitsPerPixel >> 3);
-}
-
-
-/*
- * Screen function to create a graphics context
- */
-Bool
-RootlessCreateGC(GCPtr pGC)
-{
- RootlessGCRec *gcrec;
- RootlessScreenRec *s;
- Bool result;
-
- SCREEN_UNWRAP(pGC->pScreen, CreateGC);
- s = (RootlessScreenRec *) pGC->pScreen->
- devPrivates[rootlessScreenPrivateIndex].ptr;
- result = s->CreateGC(pGC);
-
- gcrec = (RootlessGCRec *) pGC->devPrivates[rootlessGCPrivateIndex].ptr;
- gcrec->originalOps = NULL; // don't wrap ops yet
- gcrec->originalFuncs = pGC->funcs;
- pGC->funcs = &rootlessGCFuncs;
-
- SCREEN_WRAP(pGC->pScreen, CreateGC);
- return result;
-}
-
-
-/*
- * GC funcs
- *
- * These wrap lower level GC funcs.
- * ValidateGC wraps the GC ops iff dest is viewable.
- * All the others just unwrap and call.
- */
-
-// GCFUNC_UNRAP assumes funcs have been wrapped and
-// does not assume ops have been wrapped
-#define GCFUNC_UNWRAP(pGC) \
- RootlessGCRec *gcrec = (RootlessGCRec *) \
- (pGC)->devPrivates[rootlessGCPrivateIndex].ptr; \
- (pGC)->funcs = gcrec->originalFuncs; \
- if (gcrec->originalOps) { \
- (pGC)->ops = gcrec->originalOps; \
-}
-
-#define GCFUNC_WRAP(pGC) \
- gcrec->originalFuncs = (pGC)->funcs; \
- (pGC)->funcs = &rootlessGCFuncs; \
- if (gcrec->originalOps) { \
- gcrec->originalOps = (pGC)->ops; \
- (pGC)->ops = &rootlessGCOps; \
-}
-
-
-static void
-RootlessValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable)
-{
- GCFUNC_UNWRAP(pGC);
-
- gcrec->originalOps = NULL;
-
- if (pDrawable->type == DRAWABLE_WINDOW)
- {
-#ifdef ROOTLESS_PROTECT_ALPHA
- unsigned int depth = pDrawable->depth;
-
- // We force a planemask so fb doesn't overwrite the alpha channel.
- // Left to its own devices, fb will optimize away the planemask.
- pDrawable->depth = pDrawable->bitsPerPixel;
- pGC->planemask &= ~RootlessAlphaMask(pDrawable->bitsPerPixel);
- VALIDATE_GC(pGC, changes | GCPlaneMask, pDrawable);
- pDrawable->depth = depth;
-#else
- VALIDATE_GC(pGC, changes, pDrawable);
-#endif
- } else {
- pGC->funcs->ValidateGC(pGC, changes, pDrawable);
- }
-
- GCFUNC_WRAP(pGC);
-}
-
-static void RootlessChangeGC(GCPtr pGC, unsigned long mask)
-{
- GCFUNC_UNWRAP(pGC);
- pGC->funcs->ChangeGC(pGC, mask);
- GCFUNC_WRAP(pGC);
-}
-
-static void RootlessCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst)
-{
- GCFUNC_UNWRAP(pGCDst);
- pGCDst->funcs->CopyGC(pGCSrc, mask, pGCDst);
- GCFUNC_WRAP(pGCDst);
-}
-
-static void RootlessDestroyGC(GCPtr pGC)
-{
- GCFUNC_UNWRAP(pGC);
- pGC->funcs->DestroyGC(pGC);
- GCFUNC_WRAP(pGC);
-}
-
-static void RootlessChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects)
-{
- GCFUNC_UNWRAP(pGC);
- pGC->funcs->ChangeClip(pGC, type, pvalue, nrects);
- GCFUNC_WRAP(pGC);
-}
-
-static void RootlessDestroyClip(GCPtr pGC)
-{
- GCFUNC_UNWRAP(pGC);
- pGC->funcs->DestroyClip(pGC);
- GCFUNC_WRAP(pGC);
-}
-
-static void RootlessCopyClip(GCPtr pgcDst, GCPtr pgcSrc)
-{
- GCFUNC_UNWRAP(pgcDst);
- pgcDst->funcs->CopyClip(pgcDst, pgcSrc);
- GCFUNC_WRAP(pgcDst);
-}
-
-
-/*
- * GC ops
- *
- * We can't use shadowfb because shadowfb assumes one pixmap
- * and our root window is a special case.
- * However, much of this code is copied from shadowfb.
- */
-
-// assumes both funcs and ops are wrapped
-#define GCOP_UNWRAP(pGC) \
- RootlessGCRec *gcrec = (RootlessGCRec *) \
- (pGC)->devPrivates[rootlessGCPrivateIndex].ptr; \
- GCFuncs *saveFuncs = pGC->funcs; \
- (pGC)->funcs = gcrec->originalFuncs; \
- (pGC)->ops = gcrec->originalOps;
-
-#define GCOP_WRAP(pGC) \
- gcrec->originalOps = (pGC)->ops; \
- (pGC)->funcs = saveFuncs; \
- (pGC)->ops = &rootlessGCOps;
-
-/* Turn drawing on the root into a no-op */
-#define GC_IS_ROOT(pDst) ((pDst)->type == DRAWABLE_WINDOW \
- && IsRoot ((WindowPtr) (pDst)))
-
-#define GC_SKIP_ROOT(pDst) \
- do { \
- if (GC_IS_ROOT (pDst)) \
- return; \
- } while (0)
-
-
-static void
-RootlessFillSpans(DrawablePtr dst, GCPtr pGC, int nInit,
- DDXPointPtr pptInit, int *pwidthInit, int sorted)
-{
- GC_SAVE(pGC);
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("fill spans start ");
-
- if (nInit <= 0) {
- pGC->ops->FillSpans(dst, pGC, nInit, pptInit, pwidthInit, sorted);
- } else {
- DDXPointPtr ppt = pptInit;
- int *pwidth = pwidthInit;
- int i = nInit;
- BoxRec box;
-
- box.x1 = ppt->x;
- box.x2 = box.x1 + *pwidth;
- box.y2 = box.y1 = ppt->y;
-
- while (--i) {
- ppt++;
- pwidth++;
- if (box.x1 > ppt->x)
- box.x1 = ppt->x;
- if (box.x2 < (ppt->x + *pwidth))
- box.x2 = ppt->x + *pwidth;
- if (box.y1 > ppt->y)
- box.y1 = ppt->y;
- else if (box.y2 < ppt->y)
- box.y2 = ppt->y;
- }
-
- box.y2++;
-
- RootlessStartDrawing((WindowPtr) dst);
-
- if (canAccelFill(dst, pGC) &&
- boxBytes(dst, &box) >= rootless_FillBytes_threshold)
- {
- GC_UNSET_PM(pGC, dst);
- }
-
- pGC->ops->FillSpans(dst, pGC, nInit, pptInit, pwidthInit, sorted);
-
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- }
-
- GC_RESTORE(pGC, dst);
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("fill spans end\n");
-}
-
-static void
-RootlessSetSpans(DrawablePtr dst, GCPtr pGC, char *pSrc,
- DDXPointPtr pptInit, int *pwidthInit,
- int nspans, int sorted)
-{
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("set spans start ");
-
- if (nspans <= 0) {
- pGC->ops->SetSpans(dst, pGC, pSrc, pptInit, pwidthInit,
- nspans, sorted);
- } else {
- DDXPointPtr ppt = pptInit;
- int *pwidth = pwidthInit;
- int i = nspans;
- BoxRec box;
-
- box.x1 = ppt->x;
- box.x2 = box.x1 + *pwidth;
- box.y2 = box.y1 = ppt->y;
-
- while (--i) {
- ppt++;
- pwidth++;
- if (box.x1 > ppt->x)
- box.x1 = ppt->x;
- if (box.x2 < (ppt->x + *pwidth))
- box.x2 = ppt->x + *pwidth;
- if (box.y1 > ppt->y)
- box.y1 = ppt->y;
- else if (box.y2 < ppt->y)
- box.y2 = ppt->y;
- }
-
- box.y2++;
-
- RootlessStartDrawing((WindowPtr) dst);
- pGC->ops->SetSpans(dst, pGC, pSrc, pptInit, pwidthInit,
- nspans, sorted);
-
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- }
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("set spans end\n");
-}
-
-static void
-RootlessPutImage(DrawablePtr dst, GCPtr pGC,
- int depth, int x, int y, int w, int h,
- int leftPad, int format, char *pBits)
-{
- BoxRec box;
-
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("put image start ");
-
- RootlessStartDrawing((WindowPtr) dst);
- pGC->ops->PutImage(dst, pGC, depth, x,y,w,h, leftPad, format, pBits);
-
- box.x1 = x + dst->x;
- box.x2 = box.x1 + w;
- box.y1 = y + dst->y;
- box.y2 = box.y1 + h;
-
- TRIM_BOX(box, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
-
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("put image end\n");
-}
-
-/* changed area is *dest* rect */
-static RegionPtr
-RootlessCopyArea(DrawablePtr pSrc, DrawablePtr dst, GCPtr pGC,
- int srcx, int srcy, int w, int h,
- int dstx, int dsty)
-{
- RegionPtr result;
- BoxRec box;
-
- GC_SAVE(pGC);
- GCOP_UNWRAP(pGC);
-
- if (GC_IS_ROOT(dst) || GC_IS_ROOT(pSrc))
- return NULL; /* nothing exposed */
-
- RL_DEBUG_MSG("copy area start (src 0x%x, dst 0x%x)", pSrc, dst);
-
- if (pSrc->type == DRAWABLE_WINDOW && IsFramedWindow((WindowPtr)pSrc)) {
- unsigned int bytes;
-
- /* If both source and dest are windows, and we're doing
- a simple copy operation, we can remove the alpha-protecting
- planemask (since source has opaque alpha as well) */
-
- bytes = w * h * (pSrc->depth >> 3);
-
- if (bytes >= rootless_CopyBytes_threshold && canAccelBlit(pSrc, pGC))
- {
- GC_UNSET_PM(pGC, dst);
- }
-
- RootlessStartDrawing((WindowPtr) pSrc);
- }
- RootlessStartDrawing((WindowPtr) dst);
- result = pGC->ops->CopyArea(pSrc, dst, pGC, srcx, srcy, w, h, dstx, dsty);
-
- box.x1 = dstx + dst->x;
- box.x2 = box.x1 + w;
- box.y1 = dsty + dst->y;
- box.y2 = box.y1 + h;
-
- TRIM_BOX(box, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
-
- GC_RESTORE(pGC, dst);
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("copy area end\n");
- return result;
-}
-
-/* changed area is *dest* rect */
-static RegionPtr RootlessCopyPlane(DrawablePtr pSrc, DrawablePtr dst,
- GCPtr pGC, int srcx, int srcy,
- int w, int h, int dstx, int dsty,
- unsigned long plane)
-{
- RegionPtr result;
- BoxRec box;
-
- GCOP_UNWRAP(pGC);
-
- if (GC_IS_ROOT(dst) || GC_IS_ROOT(pSrc))
- return NULL; /* nothing exposed */
-
- RL_DEBUG_MSG("copy plane start ");
-
- if (pSrc->type == DRAWABLE_WINDOW && IsFramedWindow((WindowPtr)pSrc)) {
- RootlessStartDrawing((WindowPtr) pSrc);
- }
- RootlessStartDrawing((WindowPtr) dst);
- result = pGC->ops->CopyPlane(pSrc, dst, pGC, srcx, srcy, w, h,
- dstx, dsty, plane);
-
- box.x1 = dstx + dst->x;
- box.x2 = box.x1 + w;
- box.y1 = dsty + dst->y;
- box.y2 = box.y1 + h;
-
- TRIM_BOX(box, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
-
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("copy plane end\n");
- return result;
-}
-
-// Options for size of changed area:
-// 0 = box per point
-// 1 = big box around all points
-// 2 = accumulate point in 20 pixel radius
-#define ROOTLESS_CHANGED_AREA 1
-#define abs(a) ((a) > 0 ? (a) : -(a))
-
-/* changed area is box around all points */
-static void RootlessPolyPoint(DrawablePtr dst, GCPtr pGC,
- int mode, int npt, DDXPointPtr pptInit)
-{
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("polypoint start ");
-
- RootlessStartDrawing((WindowPtr) dst);
- pGC->ops->PolyPoint(dst, pGC, mode, npt, pptInit);
-
- if (npt > 0) {
-#if ROOTLESS_CHANGED_AREA==0
- // box per point
- BoxRec box;
-
- while (npt) {
- box.x1 = pptInit->x;
- box.y1 = pptInit->y;
- box.x2 = box.x1 + 1;
- box.y2 = box.y1 + 1;
-
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
-
- npt--;
- pptInit++;
- }
-
-#elif ROOTLESS_CHANGED_AREA==1
- // one big box
- BoxRec box;
-
- box.x2 = box.x1 = pptInit->x;
- box.y2 = box.y1 = pptInit->y;
- while (--npt) {
- pptInit++;
- if (box.x1 > pptInit->x)
- box.x1 = pptInit->x;
- else if (box.x2 < pptInit->x)
- box.x2 = pptInit->x;
- if (box.y1 > pptInit->y)
- box.y1 = pptInit->y;
- else if (box.y2 < pptInit->y)
- box.y2 = pptInit->y;
- }
-
- box.x2++;
- box.y2++;
-
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
-
-#elif ROOTLESS_CHANGED_AREA==2
- // clever(?) method: accumulate point in 20-pixel radius
- BoxRec box;
- int firstx, firsty;
-
- box.x2 = box.x1 = firstx = pptInit->x;
- box.y2 = box.y1 = firsty = pptInit->y;
- while (--npt) {
- pptInit++;
- if (abs(pptInit->x - firstx) > 20 ||
- abs(pptInit->y - firsty) > 20) {
- box.x2++;
- box.y2++;
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- box.x2 = box.x1 = firstx = pptInit->x;
- box.y2 = box.y1 = firsty = pptInit->y;
- } else {
- if (box.x1 > pptInit->x) box.x1 = pptInit->x;
- else if (box.x2 < pptInit->x) box.x2 = pptInit->x;
- if (box.y1 > pptInit->y) box.y1 = pptInit->y;
- else if (box.y2 < pptInit->y) box.y2 = pptInit->y;
- }
- }
- box.x2++;
- box.y2++;
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox((WindowPtr) dst, &box);
-#endif /* ROOTLESS_CHANGED_AREA */
- }
-
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("polypoint end\n");
-}
-
-#undef ROOTLESS_CHANGED_AREA
-
-/* changed area is box around each line */
-static void RootlessPolylines(DrawablePtr dst, GCPtr pGC,
- int mode, int npt, DDXPointPtr pptInit)
-{
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("poly lines start ");
-
- RootlessStartDrawing((WindowPtr) dst);
- pGC->ops->Polylines(dst, pGC, mode, npt, pptInit);
-
- if (npt > 0) {
- BoxRec box;
- int extra = pGC->lineWidth >> 1;
-
- box.x2 = box.x1 = pptInit->x;
- box.y2 = box.y1 = pptInit->y;
-
- if (npt > 1) {
- if (pGC->joinStyle == JoinMiter)
- extra = 6 * pGC->lineWidth;
- else if (pGC->capStyle == CapProjecting)
- extra = pGC->lineWidth;
- }
-
- if (mode == CoordModePrevious) {
- int x = box.x1;
- int y = box.y1;
-
- while (--npt) {
- pptInit++;
- x += pptInit->x;
- y += pptInit->y;
- if (box.x1 > x)
- box.x1 = x;
- else if (box.x2 < x)
- box.x2 = x;
- if (box.y1 > y)
- box.y1 = y;
- else if (box.y2 < y)
- box.y2 = y;
- }
- } else {
- while (--npt) {
- pptInit++;
- if (box.x1 > pptInit->x)
- box.x1 = pptInit->x;
- else if (box.x2 < pptInit->x)
- box.x2 = pptInit->x;
- if (box.y1 > pptInit->y)
- box.y1 = pptInit->y;
- else if (box.y2 < pptInit->y)
- box.y2 = pptInit->y;
- }
- }
-
- box.x2++;
- box.y2++;
-
- if (extra) {
- box.x1 -= extra;
- box.x2 += extra;
- box.y1 -= extra;
- box.y2 += extra;
- }
-
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- }
-
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("poly lines end\n");
-}
-
-/* changed area is box around each line segment */
-static void RootlessPolySegment(DrawablePtr dst, GCPtr pGC,
- int nseg, xSegment *pSeg)
-{
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("poly segment start (win 0x%x)", dst);
-
- RootlessStartDrawing((WindowPtr) dst);
- pGC->ops->PolySegment(dst, pGC, nseg, pSeg);
-
- if (nseg > 0) {
- BoxRec box;
- int extra = pGC->lineWidth;
-
- if (pGC->capStyle != CapProjecting)
- extra >>= 1;
-
- if (pSeg->x2 > pSeg->x1) {
- box.x1 = pSeg->x1;
- box.x2 = pSeg->x2;
- } else {
- box.x2 = pSeg->x1;
- box.x1 = pSeg->x2;
- }
-
- if (pSeg->y2 > pSeg->y1) {
- box.y1 = pSeg->y1;
- box.y2 = pSeg->y2;
- } else {
- box.y2 = pSeg->y1;
- box.y1 = pSeg->y2;
- }
-
- while (--nseg) {
- pSeg++;
- if (pSeg->x2 > pSeg->x1) {
- if (pSeg->x1 < box.x1) box.x1 = pSeg->x1;
- if (pSeg->x2 > box.x2) box.x2 = pSeg->x2;
- } else {
- if (pSeg->x2 < box.x1) box.x1 = pSeg->x2;
- if (pSeg->x1 > box.x2) box.x2 = pSeg->x1;
- }
- if (pSeg->y2 > pSeg->y1) {
- if (pSeg->y1 < box.y1) box.y1 = pSeg->y1;
- if (pSeg->y2 > box.y2) box.y2 = pSeg->y2;
- } else {
- if (pSeg->y2 < box.y1) box.y1 = pSeg->y2;
- if (pSeg->y1 > box.y2) box.y2 = pSeg->y1;
- }
- }
-
- box.x2++;
- box.y2++;
-
- if (extra) {
- box.x1 -= extra;
- box.x2 += extra;
- box.y1 -= extra;
- box.y2 += extra;
- }
-
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- }
-
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("poly segment end\n");
-}
-
-/* changed area is box around each line (not entire rects) */
-static void RootlessPolyRectangle(DrawablePtr dst, GCPtr pGC,
- int nRects, xRectangle *pRects)
-{
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("poly rectangle start ");
-
- RootlessStartDrawing((WindowPtr) dst);
- pGC->ops->PolyRectangle(dst, pGC, nRects, pRects);
-
- if (nRects > 0) {
- BoxRec box;
- int offset1, offset2, offset3;
-
- offset2 = pGC->lineWidth;
- if (!offset2) offset2 = 1;
- offset1 = offset2 >> 1;
- offset3 = offset2 - offset1;
-
- while (nRects--) {
- box.x1 = pRects->x - offset1;
- box.y1 = pRects->y - offset1;
- box.x2 = box.x1 + pRects->width + offset2;
- box.y2 = box.y1 + offset2;
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
-
- box.x1 = pRects->x - offset1;
- box.y1 = pRects->y + offset3;
- box.x2 = box.x1 + offset2;
- box.y2 = box.y1 + pRects->height - offset2;
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
-
- box.x1 = pRects->x + pRects->width - offset1;
- box.y1 = pRects->y + offset3;
- box.x2 = box.x1 + offset2;
- box.y2 = box.y1 + pRects->height - offset2;
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
-
- box.x1 = pRects->x - offset1;
- box.y1 = pRects->y + pRects->height - offset1;
- box.x2 = box.x1 + pRects->width + offset2;
- box.y2 = box.y1 + offset2;
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
-
- pRects++;
- }
- }
-
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("poly rectangle end\n");
-}
-
-
-/* changed area is box around each arc (assumes all arcs are 360 degrees) */
-static void RootlessPolyArc(DrawablePtr dst, GCPtr pGC, int narcs, xArc *parcs)
-{
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("poly arc start ");
-
- RootlessStartDrawing((WindowPtr) dst);
- pGC->ops->PolyArc(dst, pGC, narcs, parcs);
-
- if (narcs > 0) {
- int extra = pGC->lineWidth >> 1;
- BoxRec box;
-
- box.x1 = parcs->x;
- box.x2 = box.x1 + parcs->width;
- box.y1 = parcs->y;
- box.y2 = box.y1 + parcs->height;
-
- /* should I break these up instead ? */
-
- while (--narcs) {
- parcs++;
- if (box.x1 > parcs->x)
- box.x1 = parcs->x;
- if (box.x2 < (parcs->x + parcs->width))
- box.x2 = parcs->x + parcs->width;
- if (box.y1 > parcs->y)
- box.y1 = parcs->y;
- if (box.y2 < (parcs->y + parcs->height))
- box.y2 = parcs->y + parcs->height;
- }
-
- if (extra) {
- box.x1 -= extra;
- box.x2 += extra;
- box.y1 -= extra;
- box.y2 += extra;
- }
-
- box.x2++;
- box.y2++;
-
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- }
-
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("poly arc end\n");
-}
-
-
-/* changed area is box around each poly */
-static void RootlessFillPolygon(DrawablePtr dst, GCPtr pGC,
- int shape, int mode, int count,
- DDXPointPtr pptInit)
-{
- GC_SAVE(pGC);
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("fill poly start (win 0x%x, fillStyle 0x%x)", dst,
- pGC->fillStyle);
-
- if (count <= 2) {
- pGC->ops->FillPolygon(dst, pGC, shape, mode, count, pptInit);
- } else {
- DDXPointPtr ppt = pptInit;
- int i = count;
- BoxRec box;
-
- box.x2 = box.x1 = ppt->x;
- box.y2 = box.y1 = ppt->y;
-
- if (mode != CoordModeOrigin) {
- int x = box.x1;
- int y = box.y1;
-
- while (--i) {
- ppt++;
- x += ppt->x;
- y += ppt->y;
- if (box.x1 > x)
- box.x1 = x;
- else if (box.x2 < x)
- box.x2 = x;
- if (box.y1 > y)
- box.y1 = y;
- else if (box.y2 < y)
- box.y2 = y;
- }
- } else {
- while (--i) {
- ppt++;
- if (box.x1 > ppt->x)
- box.x1 = ppt->x;
- else if (box.x2 < ppt->x)
- box.x2 = ppt->x;
- if (box.y1 > ppt->y)
- box.y1 = ppt->y;
- else if (box.y2 < ppt->y)
- box.y2 = ppt->y;
- }
- }
-
- box.x2++;
- box.y2++;
-
- RootlessStartDrawing((WindowPtr) dst);
-
- if (canAccelFill(dst, pGC) &&
- boxBytes(dst, &box) >= rootless_FillBytes_threshold)
- {
- GC_UNSET_PM(pGC, dst);
- }
-
- pGC->ops->FillPolygon(dst, pGC, shape, mode, count, pptInit);
-
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- }
-
- GC_RESTORE(pGC, dst);
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("fill poly end\n");
-}
-
-/* changed area is the rects */
-static void RootlessPolyFillRect(DrawablePtr dst, GCPtr pGC,
- int nRectsInit, xRectangle *pRectsInit)
-{
- GC_SAVE(pGC);
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("fill rect start (win 0x%x, fillStyle 0x%x)", dst,
- pGC->fillStyle);
-
- if (nRectsInit <= 0) {
- pGC->ops->PolyFillRect(dst, pGC, nRectsInit, pRectsInit);
- } else {
- BoxRec box;
- xRectangle *pRects = pRectsInit;
- int nRects = nRectsInit;
-
- box.x1 = pRects->x;
- box.x2 = box.x1 + pRects->width;
- box.y1 = pRects->y;
- box.y2 = box.y1 + pRects->height;
-
- while (--nRects) {
- pRects++;
- if (box.x1 > pRects->x)
- box.x1 = pRects->x;
- if (box.x2 < (pRects->x + pRects->width))
- box.x2 = pRects->x + pRects->width;
- if (box.y1 > pRects->y)
- box.y1 = pRects->y;
- if (box.y2 < (pRects->y + pRects->height))
- box.y2 = pRects->y + pRects->height;
- }
-
- RootlessStartDrawing((WindowPtr) dst);
-
- if (canAccelFill(dst, pGC) &&
- boxBytes(dst, &box) >= rootless_FillBytes_threshold)
- {
- GC_UNSET_PM(pGC, dst);
- }
-
- pGC->ops->PolyFillRect(dst, pGC, nRectsInit, pRectsInit);
-
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- }
-
- GC_RESTORE(pGC, dst);
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("fill rect end\n");
-}
-
-
-/* changed area is box around each arc (assuming arcs are all 360 degrees) */
-static void RootlessPolyFillArc(DrawablePtr dst, GCPtr pGC,
- int narcsInit, xArc *parcsInit)
-{
- GC_SAVE(pGC);
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("fill arc start ");
-
- if (narcsInit > 0) {
- BoxRec box;
- int narcs = narcsInit;
- xArc *parcs = parcsInit;
-
- box.x1 = parcs->x;
- box.x2 = box.x1 + parcs->width;
- box.y1 = parcs->y;
- box.y2 = box.y1 + parcs->height;
-
- /* should I break these up instead ? */
-
- while (--narcs) {
- parcs++;
- if (box.x1 > parcs->x)
- box.x1 = parcs->x;
- if (box.x2 < (parcs->x + parcs->width))
- box.x2 = parcs->x + parcs->width;
- if (box.y1 > parcs->y)
- box.y1 = parcs->y;
- if (box.y2 < (parcs->y + parcs->height))
- box.y2 = parcs->y + parcs->height;
- }
-
- RootlessStartDrawing((WindowPtr) dst);
-
- if (canAccelFill(dst, pGC) &&
- boxBytes(dst, &box) >= rootless_FillBytes_threshold)
- {
- GC_UNSET_PM(pGC, dst);
- }
-
- pGC->ops->PolyFillArc(dst, pGC, narcsInit, parcsInit);
-
- TRIM_AND_TRANSLATE_BOX(box, dst, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- } else {
- pGC->ops->PolyFillArc(dst, pGC, narcsInit, parcsInit);
- }
-
- GC_RESTORE(pGC, dst);
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("fill arc end\n");
-}
-
-
-static void RootlessImageText8(DrawablePtr dst, GCPtr pGC,
- int x, int y, int count, char *chars)
-{
- GC_SAVE(pGC);
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("imagetext8 start ");
-
- if (count > 0) {
- int top, bot, Min, Max;
- BoxRec box;
-
- top = max(FONTMAXBOUNDS(pGC->font, ascent), FONTASCENT(pGC->font));
- bot = max(FONTMAXBOUNDS(pGC->font, descent), FONTDESCENT(pGC->font));
-
- Min = count * FONTMINBOUNDS(pGC->font, characterWidth);
- if (Min > 0) Min = 0;
- Max = count * FONTMAXBOUNDS(pGC->font, characterWidth);
- if (Max < 0) Max = 0;
-
- /* ugh */
- box.x1 = dst->x + x + Min +
- FONTMINBOUNDS(pGC->font, leftSideBearing);
- box.x2 = dst->x + x + Max +
- FONTMAXBOUNDS(pGC->font, rightSideBearing);
-
- box.y1 = dst->y + y - top;
- box.y2 = dst->y + y + bot;
-
- RootlessStartDrawing((WindowPtr) dst);
-
- if (canAccelFill(dst, pGC) &&
- boxBytes(dst, &box) >= rootless_FillBytes_threshold)
- {
- GC_UNSET_PM(pGC, dst);
- }
-
- pGC->ops->ImageText8(dst, pGC, x, y, count, chars);
-
- TRIM_BOX(box, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- } else {
- pGC->ops->ImageText8(dst, pGC, x, y, count, chars);
- }
-
- GC_RESTORE(pGC, dst);
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("imagetext8 end\n");
-}
-
-static int RootlessPolyText8(DrawablePtr dst, GCPtr pGC,
- int x, int y, int count, char *chars)
-{
- int width; // the result, sorta
-
- GCOP_UNWRAP(pGC);
-
- if (GC_IS_ROOT(dst))
- return 0;
-
- RL_DEBUG_MSG("polytext8 start ");
-
- RootlessStartDrawing((WindowPtr) dst);
- width = pGC->ops->PolyText8(dst, pGC, x, y, count, chars);
- width -= x;
-
- if (width > 0) {
- BoxRec box;
-
- /* ugh */
- box.x1 = dst->x + x + FONTMINBOUNDS(pGC->font, leftSideBearing);
- box.x2 = dst->x + x + FONTMAXBOUNDS(pGC->font, rightSideBearing);
-
- if (count > 1) {
- if (width > 0) box.x2 += width;
- else box.x1 += width;
- }
-
- box.y1 = dst->y + y - FONTMAXBOUNDS(pGC->font, ascent);
- box.y2 = dst->y + y + FONTMAXBOUNDS(pGC->font, descent);
-
- TRIM_BOX(box, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- }
-
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("polytext8 end\n");
- return (width + x);
-}
-
-static void RootlessImageText16(DrawablePtr dst, GCPtr pGC,
- int x, int y, int count, unsigned short *chars)
-{
- GC_SAVE(pGC);
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("imagetext16 start ");
-
- if (count > 0) {
- int top, bot, Min, Max;
- BoxRec box;
-
- top = max(FONTMAXBOUNDS(pGC->font, ascent), FONTASCENT(pGC->font));
- bot = max(FONTMAXBOUNDS(pGC->font, descent), FONTDESCENT(pGC->font));
-
- Min = count * FONTMINBOUNDS(pGC->font, characterWidth);
- if (Min > 0) Min = 0;
- Max = count * FONTMAXBOUNDS(pGC->font, characterWidth);
- if (Max < 0) Max = 0;
-
- /* ugh */
- box.x1 = dst->x + x + Min +
- FONTMINBOUNDS(pGC->font, leftSideBearing);
- box.x2 = dst->x + x + Max +
- FONTMAXBOUNDS(pGC->font, rightSideBearing);
-
- box.y1 = dst->y + y - top;
- box.y2 = dst->y + y + bot;
-
- RootlessStartDrawing((WindowPtr) dst);
-
- if (canAccelFill(dst, pGC) &&
- boxBytes(dst, &box) >= rootless_FillBytes_threshold)
- {
- GC_UNSET_PM(pGC, dst);
- }
-
- pGC->ops->ImageText16(dst, pGC, x, y, count, chars);
-
- TRIM_BOX(box, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- } else {
- pGC->ops->ImageText16(dst, pGC, x, y, count, chars);
- }
-
- GC_RESTORE(pGC, dst);
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("imagetext16 end\n");
-}
-
-static int RootlessPolyText16(DrawablePtr dst, GCPtr pGC,
- int x, int y, int count, unsigned short *chars)
-{
- int width; // the result, sorta
-
- GCOP_UNWRAP(pGC);
-
- if (GC_IS_ROOT(dst))
- return 0;
-
- RL_DEBUG_MSG("polytext16 start ");
-
- RootlessStartDrawing((WindowPtr) dst);
- width = pGC->ops->PolyText16(dst, pGC, x, y, count, chars);
- width -= x;
-
- if (width > 0) {
- BoxRec box;
-
- /* ugh */
- box.x1 = dst->x + x + FONTMINBOUNDS(pGC->font, leftSideBearing);
- box.x2 = dst->x + x + FONTMAXBOUNDS(pGC->font, rightSideBearing);
-
- if (count > 1) {
- if (width > 0) box.x2 += width;
- else box.x1 += width;
- }
-
- box.y1 = dst->y + y - FONTMAXBOUNDS(pGC->font, ascent);
- box.y2 = dst->y + y + FONTMAXBOUNDS(pGC->font, descent);
-
- TRIM_BOX(box, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- }
-
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("polytext16 end\n");
- return width + x;
-}
-
-static void RootlessImageGlyphBlt(DrawablePtr dst, GCPtr pGC,
- int x, int y, unsigned int nglyphInit,
- CharInfoPtr *ppciInit, pointer unused)
-{
- GC_SAVE(pGC);
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("imageglyph start ");
-
- if (nglyphInit > 0) {
- int top, bot, width = 0;
- BoxRec box;
- unsigned int nglyph = nglyphInit;
- CharInfoPtr *ppci = ppciInit;
-
- top = max(FONTMAXBOUNDS(pGC->font, ascent), FONTASCENT(pGC->font));
- bot = max(FONTMAXBOUNDS(pGC->font, descent), FONTDESCENT(pGC->font));
-
- box.x1 = ppci[0]->metrics.leftSideBearing;
- if (box.x1 > 0) box.x1 = 0;
- box.x2 = ppci[nglyph - 1]->metrics.rightSideBearing -
- ppci[nglyph - 1]->metrics.characterWidth;
- if (box.x2 < 0) box.x2 = 0;
-
- box.x2 += dst->x + x;
- box.x1 += dst->x + x;
-
- while (nglyph--) {
- width += (*ppci)->metrics.characterWidth;
- ppci++;
- }
-
- if (width > 0)
- box.x2 += width;
- else
- box.x1 += width;
-
- box.y1 = dst->y + y - top;
- box.y2 = dst->y + y + bot;
-
- RootlessStartDrawing((WindowPtr) dst);
-
- if (canAccelFill(dst, pGC) &&
- boxBytes(dst, &box) >= rootless_FillBytes_threshold)
- {
- GC_UNSET_PM(pGC, dst);
- }
-
- pGC->ops->ImageGlyphBlt(dst, pGC, x, y, nglyphInit, ppciInit, unused);
-
- TRIM_BOX(box, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- } else {
- pGC->ops->ImageGlyphBlt(dst, pGC, x, y, nglyphInit, ppciInit, unused);
- }
-
- GC_RESTORE(pGC, dst);
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("imageglyph end\n");
-}
-
-static void RootlessPolyGlyphBlt(DrawablePtr dst, GCPtr pGC,
- int x, int y, unsigned int nglyph,
- CharInfoPtr *ppci, pointer pglyphBase)
-{
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("polyglyph start ");
-
- RootlessStartDrawing((WindowPtr) dst);
- pGC->ops->PolyGlyphBlt(dst, pGC, x, y, nglyph, ppci, pglyphBase);
-
- if (nglyph > 0) {
- BoxRec box;
-
- /* ugh */
- box.x1 = dst->x + x + ppci[0]->metrics.leftSideBearing;
- box.x2 = dst->x + x + ppci[nglyph - 1]->metrics.rightSideBearing;
-
- if (nglyph > 1) {
- int width = 0;
-
- while (--nglyph) {
- width += (*ppci)->metrics.characterWidth;
- ppci++;
- }
-
- if (width > 0) box.x2 += width;
- else box.x1 += width;
- }
-
- box.y1 = dst->y + y - FONTMAXBOUNDS(pGC->font, ascent);
- box.y2 = dst->y + y + FONTMAXBOUNDS(pGC->font, descent);
-
- TRIM_BOX(box, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
- }
-
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("polyglyph end\n");
-}
-
-
-/* changed area is in dest */
-static void
-RootlessPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr dst,
- int dx, int dy, int xOrg, int yOrg)
-{
- BoxRec box;
-
- GCOP_UNWRAP(pGC);
- GC_SKIP_ROOT(dst);
- RL_DEBUG_MSG("push pixels start ");
-
- RootlessStartDrawing((WindowPtr) dst);
- pGC->ops->PushPixels(pGC, pBitMap, dst, dx, dy, xOrg, yOrg);
-
- box.x1 = xOrg + dst->x;
- box.x2 = box.x1 + dx;
- box.y1 = yOrg + dst->y;
- box.y2 = box.y1 + dy;
-
- TRIM_BOX(box, pGC);
- if (BOX_NOT_EMPTY(box))
- RootlessDamageBox ((WindowPtr) dst, &box);
-
- GCOP_WRAP(pGC);
- RL_DEBUG_MSG("push pixels end\n");
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/rootlessScreen.c b/nx-X11/programs/Xserver/miext/rootless/rootlessScreen.c
deleted file mode 100644
index 6b7697383..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/rootlessScreen.c
+++ /dev/null
@@ -1,670 +0,0 @@
-/*
- * Screen routines for generic rootless X server
- */
-/*
- * Copyright (c) 2001 Greg Parker. All Rights Reserved.
- * Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved.
- * Copyright (c) 2002 Apple Computer, Inc. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/miext/rootless/rootlessScreen.c,v 1.2 2003/04/30 23:15:35 torrey Exp $ */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "mi.h"
-#include "scrnintstr.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-#include "propertyst.h"
-#include "mivalidate.h"
-#include "picturestr.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <string.h>
-
-#include "rootlessCommon.h"
-#include "rootlessWindow.h"
-
-/* In milliseconds */
-#ifndef ROOTLESS_REDISPLAY_DELAY
-#define ROOTLESS_REDISPLAY_DELAY 10
-#endif
-
-extern int RootlessMiValidateTree(WindowPtr pRoot, WindowPtr pChild,
- VTKind kind);
-extern Bool RootlessCreateGC(GCPtr pGC);
-
-// Initialize globals
-int rootlessGCPrivateIndex = -1;
-int rootlessScreenPrivateIndex = -1;
-int rootlessWindowPrivateIndex = -1;
-
-
-/*
- * RootlessUpdateScreenPixmap
- * miCreateScreenResources does not like a null framebuffer pointer,
- * it leaves the screen pixmap with an uninitialized data pointer.
- * Thus, rootless implementations typically set the framebuffer width
- * to zero so that miCreateScreenResources does not allocate a screen
- * pixmap for us. We allocate our own screen pixmap here since we need
- * the screen pixmap to be valid (e.g. CopyArea from the root window).
- */
-void
-RootlessUpdateScreenPixmap(ScreenPtr pScreen)
-{
- RootlessScreenRec *s = SCREENREC(pScreen);
- PixmapPtr pPix;
- unsigned int rowbytes;
-
- pPix = (*pScreen->GetScreenPixmap)(pScreen);
- if (pPix == NULL) {
- pPix = (*pScreen->CreatePixmap)(pScreen, 0, 0, pScreen->rootDepth);
- (*pScreen->SetScreenPixmap)(pPix);
- }
-
- rowbytes = PixmapBytePad(pScreen->width, pScreen->rootDepth);
-
- if (s->pixmap_data_size < rowbytes) {
- if (s->pixmap_data != NULL)
- xfree(s->pixmap_data);
-
- s->pixmap_data_size = rowbytes;
- s->pixmap_data = xalloc(s->pixmap_data_size);
- if (s->pixmap_data == NULL)
- return;
-
- memset(s->pixmap_data, 0xFF, s->pixmap_data_size);
-
- pScreen->ModifyPixmapHeader(pPix, pScreen->width, pScreen->height,
- pScreen->rootDepth,
- BitsPerPixel(pScreen->rootDepth),
- 0, s->pixmap_data);
- /* ModifyPixmapHeader ignores zero arguments, so install rowbytes
- by hand. */
- pPix->devKind = 0;
- }
-}
-
-
-/*
- * RootlessCreateScreenResources
- * Rootless implementations typically set a null framebuffer pointer, which
- * causes problems with miCreateScreenResources. We fix things up here.
- */
-static Bool
-RootlessCreateScreenResources(ScreenPtr pScreen)
-{
- Bool ret = TRUE;
-
- SCREEN_UNWRAP(pScreen, CreateScreenResources);
-
- if (pScreen->CreateScreenResources != NULL)
- ret = (*pScreen->CreateScreenResources)(pScreen);
-
- SCREEN_WRAP(pScreen, CreateScreenResources);
-
- if (!ret)
- return ret;
-
- /* Make sure we have a valid screen pixmap. */
-
- RootlessUpdateScreenPixmap(pScreen);
-
- return ret;
-}
-
-
-static Bool
-RootlessCloseScreen(int i, ScreenPtr pScreen)
-{
- RootlessScreenRec *s;
-
- s = SCREENREC(pScreen);
-
- // fixme unwrap everything that was wrapped?
- pScreen->CloseScreen = s->CloseScreen;
-
- if (s->pixmap_data != NULL) {
- xfree (s->pixmap_data);
- s->pixmap_data = NULL;
- s->pixmap_data_size = 0;
- }
-
- xfree(s);
- return pScreen->CloseScreen(i, pScreen);
-}
-
-
-static void
-RootlessGetImage(DrawablePtr pDrawable, int sx, int sy, int w, int h,
- unsigned int format, unsigned long planeMask, char *pdstLine)
-{
- ScreenPtr pScreen = pDrawable->pScreen;
- SCREEN_UNWRAP(pScreen, GetImage);
-
- if (pDrawable->type == DRAWABLE_WINDOW) {
- int x0, y0, x1, y1;
- RootlessWindowRec *winRec;
-
- // Many apps use GetImage to sync with the visible frame buffer
- // FIXME: entire screen or just window or all screens?
- RootlessRedisplayScreen(pScreen);
-
- // RedisplayScreen stops drawing, so we need to start it again
- RootlessStartDrawing((WindowPtr)pDrawable);
-
- /* Check that we have some place to read from. */
- winRec = WINREC(TopLevelParent((WindowPtr) pDrawable));
- if (winRec == NULL)
- goto out;
-
- /* Clip to top-level window bounds. */
- /* FIXME: fbGetImage uses the width parameter to calculate the
- stride of the destination pixmap. If w is clipped, the data
- returned will be garbage, although we will not crash. */
-
- x0 = pDrawable->x + sx;
- y0 = pDrawable->y + sy;
- x1 = x0 + w;
- y1 = y0 + h;
-
- x0 = MAX (x0, winRec->x);
- y0 = MAX (y0, winRec->y);
- x1 = MIN (x1, winRec->x + winRec->width);
- y1 = MIN (y1, winRec->y + winRec->height);
-
- sx = x0 - pDrawable->x;
- sy = y0 - pDrawable->y;
- w = x1 - x0;
- h = y1 - y0;
-
- if (w <= 0 || h <= 0)
- goto out;
- }
-
- pScreen->GetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
-
-out:
- SCREEN_WRAP(pScreen, GetImage);
-}
-
-
-/*
- * RootlessSourceValidate
- * CopyArea and CopyPlane use a GC tied to the destination drawable.
- * StartDrawing/StopDrawing wrappers won't be called if source is
- * a visible window but the destination isn't. So, we call StartDrawing
- * here and leave StopDrawing for the block handler.
- */
-static void
-RootlessSourceValidate(DrawablePtr pDrawable, int x, int y, int w, int h)
-{
- SCREEN_UNWRAP(pDrawable->pScreen, SourceValidate);
- if (pDrawable->type == DRAWABLE_WINDOW) {
- WindowPtr pWin = (WindowPtr)pDrawable;
- RootlessStartDrawing(pWin);
- }
- if (pDrawable->pScreen->SourceValidate) {
- pDrawable->pScreen->SourceValidate(pDrawable, x, y, w, h);
- }
- SCREEN_WRAP(pDrawable->pScreen, SourceValidate);
-}
-
-#ifdef RENDER
-
-static void
-RootlessComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
- INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask,
- INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- WindowPtr srcWin, dstWin, maskWin = NULL;
-
- if (pMask) { // pMask can be NULL
- maskWin = (pMask->pDrawable->type == DRAWABLE_WINDOW) ?
- (WindowPtr)pMask->pDrawable : NULL;
- }
- srcWin = (pSrc->pDrawable->type == DRAWABLE_WINDOW) ?
- (WindowPtr)pSrc->pDrawable : NULL;
- dstWin = (pDst->pDrawable->type == DRAWABLE_WINDOW) ?
- (WindowPtr)pDst->pDrawable : NULL;
-
- // SCREEN_UNWRAP(ps, Composite);
- ps->Composite = SCREENREC(pScreen)->Composite;
-
- if (srcWin && IsFramedWindow(srcWin))
- RootlessStartDrawing(srcWin);
- if (maskWin && IsFramedWindow(maskWin))
- RootlessStartDrawing(maskWin);
- if (dstWin && IsFramedWindow(dstWin))
- RootlessStartDrawing(dstWin);
-
- ps->Composite(op, pSrc, pMask, pDst,
- xSrc, ySrc, xMask, yMask,
- xDst, yDst, width, height);
-
- if (dstWin && IsFramedWindow(dstWin)) {
- RootlessDamageRect(dstWin, xDst, yDst, width, height);
- }
-
- ps->Composite = RootlessComposite;
- // SCREEN_WRAP(ps, Composite);
-}
-
-
-static void
-RootlessGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc,
- int nlist, GlyphListPtr list, GlyphPtr *glyphs)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- int x, y;
- int n;
- GlyphPtr glyph;
- WindowPtr srcWin, dstWin;
-
- srcWin = (pSrc->pDrawable->type == DRAWABLE_WINDOW) ?
- (WindowPtr)pSrc->pDrawable : NULL;
- dstWin = (pDst->pDrawable->type == DRAWABLE_WINDOW) ?
- (WindowPtr)pDst->pDrawable : NULL;
-
- if (srcWin && IsFramedWindow(srcWin)) RootlessStartDrawing(srcWin);
- if (dstWin && IsFramedWindow(dstWin)) RootlessStartDrawing(dstWin);
-
- //SCREEN_UNWRAP(ps, Glyphs);
- ps->Glyphs = SCREENREC(pScreen)->Glyphs;
- ps->Glyphs(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
- ps->Glyphs = RootlessGlyphs;
- //SCREEN_WRAP(ps, Glyphs);
-
- if (dstWin && IsFramedWindow(dstWin)) {
- x = xSrc;
- y = ySrc;
-
- while (nlist--) {
- x += list->xOff;
- y += list->yOff;
- n = list->len;
-
- /* Calling DamageRect for the bounding box of each glyph is
- inefficient. So compute the union of all glyphs in a list
- and damage that. */
-
- if (n > 0) {
- BoxRec box;
-
- glyph = *glyphs++;
-
- box.x1 = x - glyph->info.x;
- box.y1 = y - glyph->info.y;
- box.x2 = box.x1 + glyph->info.width;
- box.y2 = box.y2 + glyph->info.height;
-
- x += glyph->info.xOff;
- y += glyph->info.yOff;
-
- while (--n > 0) {
- short x1, y1, x2, y2;
-
- glyph = *glyphs++;
-
- x1 = x - glyph->info.x;
- y1 = y - glyph->info.y;
- x2 = x1 + glyph->info.width;
- y2 = y1 + glyph->info.height;
-
- box.x1 = MAX (box.x1, x1);
- box.y1 = MAX (box.y1, y1);
- box.x2 = MAX (box.x2, x2);
- box.y2 = MAX (box.y2, y2);
-
- x += glyph->info.xOff;
- y += glyph->info.yOff;
- }
-
- RootlessDamageBox(dstWin, &box);
- }
- list++;
- }
- }
-}
-
-#endif // RENDER
-
-
-/*
- * RootlessValidateTree
- * ValidateTree is modified in two ways:
- * - top-level windows don't clip each other
- * - windows aren't clipped against root.
- * These only matter when validating from the root.
- */
-static int
-RootlessValidateTree(WindowPtr pParent, WindowPtr pChild, VTKind kind)
-{
- int result;
- RegionRec saveRoot;
- ScreenPtr pScreen = pParent->drawable.pScreen;
-
- SCREEN_UNWRAP(pScreen, ValidateTree);
- RL_DEBUG_MSG("VALIDATETREE start ");
-
- // Use our custom version to validate from root
- if (IsRoot(pParent)) {
- RL_DEBUG_MSG("custom ");
- result = RootlessMiValidateTree(pParent, pChild, kind);
- } else {
- HUGE_ROOT(pParent);
- result = pScreen->ValidateTree(pParent, pChild, kind);
- NORMAL_ROOT(pParent);
- }
-
- SCREEN_WRAP(pScreen, ValidateTree);
- RL_DEBUG_MSG("VALIDATETREE end\n");
-
- return result;
-}
-
-
-/*
- * RootlessMarkOverlappedWindows
- * MarkOverlappedWindows is modified to ignore overlapping
- * top-level windows.
- */
-static Bool
-RootlessMarkOverlappedWindows(WindowPtr pWin, WindowPtr pFirst,
- WindowPtr *ppLayerWin)
-{
- RegionRec saveRoot;
- Bool result;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- SCREEN_UNWRAP(pScreen, MarkOverlappedWindows);
- RL_DEBUG_MSG("MARKOVERLAPPEDWINDOWS start ");
-
- HUGE_ROOT(pWin);
- if (IsRoot(pWin)) {
- // root - mark nothing
- RL_DEBUG_MSG("is root not marking ");
- result = FALSE;
- }
- else if (! IsTopLevel(pWin)) {
- // not top-level window - mark normally
- result = pScreen->MarkOverlappedWindows(pWin, pFirst, ppLayerWin);
- }
- else {
- //top-level window - mark children ONLY - NO overlaps with sibs (?)
- // This code copied from miMarkOverlappedWindows()
-
- register WindowPtr pChild;
- Bool anyMarked = FALSE;
- void (* MarkWindow)() = pScreen->MarkWindow;
-
- RL_DEBUG_MSG("is top level! ");
- /* single layered systems are easy */
- if (ppLayerWin) *ppLayerWin = pWin;
-
- if (pWin == pFirst) {
- /* Blindly mark pWin and all of its inferiors. This is a slight
- * overkill if there are mapped windows that outside pWin's border,
- * but it's better than wasting time on RectIn checks.
- */
- pChild = pWin;
- while (1) {
- if (pChild->viewable) {
- if (REGION_BROKEN (pScreen, &pChild->winSize))
- SetWinSize (pChild);
- if (REGION_BROKEN (pScreen, &pChild->borderSize))
- SetBorderSize (pChild);
- (* MarkWindow)(pChild);
- if (pChild->firstChild) {
- pChild = pChild->firstChild;
- continue;
- }
- }
- while (!pChild->nextSib && (pChild != pWin))
- pChild = pChild->parent;
- if (pChild == pWin)
- break;
- pChild = pChild->nextSib;
- }
- anyMarked = TRUE;
- pFirst = pFirst->nextSib;
- }
- if (anyMarked)
- (* MarkWindow)(pWin->parent);
- result = anyMarked;
- }
- NORMAL_ROOT(pWin);
- SCREEN_WRAP(pScreen, MarkOverlappedWindows);
- RL_DEBUG_MSG("MARKOVERLAPPEDWINDOWS end\n");
-
- return result;
-}
-
-
-static CARD32
-RootlessRedisplayCallback(OsTimerPtr timer, CARD32 time, void *arg)
-{
- RootlessScreenRec *screenRec = arg;
-
- if (!screenRec->redisplay_queued) {
- /* No update needed. Stop the timer. */
-
- screenRec->redisplay_timer_set = FALSE;
- return 0;
- }
-
- screenRec->redisplay_queued = FALSE;
-
- /* Mark that we should redisplay before waiting for I/O next time */
- screenRec->redisplay_expired = TRUE;
-
- /* Reinstall the timer immediately, so we get as close to our
- redisplay interval as possible. */
-
- return ROOTLESS_REDISPLAY_DELAY;
-}
-
-
-/*
- * RootlessQueueRedisplay
- * Queue a redisplay after a timer delay to ensure we do not redisplay
- * too frequently.
- */
-void
-RootlessQueueRedisplay(ScreenPtr pScreen)
-{
- RootlessScreenRec *screenRec = SCREENREC(pScreen);
-
- screenRec->redisplay_queued = TRUE;
-
- if (screenRec->redisplay_timer_set)
- return;
-
- screenRec->redisplay_timer = TimerSet(screenRec->redisplay_timer,
- 0, ROOTLESS_REDISPLAY_DELAY,
- RootlessRedisplayCallback,
- screenRec);
- screenRec->redisplay_timer_set = TRUE;
-}
-
-
-/*
- * RootlessBlockHandler
- * If the redisplay timer has expired, flush drawing before blocking
- * on select().
- */
-static void
-RootlessBlockHandler(pointer pbdata, OSTimePtr pTimeout, pointer pReadmask)
-{
- ScreenPtr pScreen = pbdata;
- RootlessScreenRec *screenRec = SCREENREC(pScreen);
-
- if (screenRec->redisplay_expired) {
- screenRec->redisplay_expired = FALSE;
-
- RootlessRedisplayScreen(pScreen);
- }
-}
-
-
-static void
-RootlessWakeupHandler(pointer data, int i, pointer LastSelectMask)
-{
- // nothing here
-}
-
-
-static Bool
-RootlessAllocatePrivates(ScreenPtr pScreen)
-{
- RootlessScreenRec *s;
- static unsigned long rootlessGeneration = 0;
-
- if (rootlessGeneration != serverGeneration) {
- rootlessScreenPrivateIndex = AllocateScreenPrivateIndex();
- if (rootlessScreenPrivateIndex == -1) return FALSE;
- rootlessGCPrivateIndex = AllocateGCPrivateIndex();
- if (rootlessGCPrivateIndex == -1) return FALSE;
- rootlessWindowPrivateIndex = AllocateWindowPrivateIndex();
- if (rootlessWindowPrivateIndex == -1) return FALSE;
- rootlessGeneration = serverGeneration;
- }
-
- // no allocation needed for screen privates
- if (!AllocateGCPrivate(pScreen, rootlessGCPrivateIndex,
- sizeof(RootlessGCRec)))
- return FALSE;
- if (!AllocateWindowPrivate(pScreen, rootlessWindowPrivateIndex, 0))
- return FALSE;
-
- s = xalloc(sizeof(RootlessScreenRec));
- if (! s) return FALSE;
- SCREENREC(pScreen) = s;
-
- s->pixmap_data = NULL;
- s->pixmap_data_size = 0;
-
- s->redisplay_timer = NULL;
- s->redisplay_timer_set = FALSE;
-
- return TRUE;
-}
-
-
-static void
-RootlessWrap(ScreenPtr pScreen)
-{
- RootlessScreenRec *s = (RootlessScreenRec*)
- pScreen->devPrivates[rootlessScreenPrivateIndex].ptr;
-
-#define WRAP(a) \
- if (pScreen->a) { \
- s->a = pScreen->a; \
- } else { \
- RL_DEBUG_MSG("null screen fn " #a "\n"); \
- s->a = NULL; \
- } \
- pScreen->a = Rootless##a
-
- WRAP(CreateScreenResources);
- WRAP(CloseScreen);
- WRAP(CreateGC);
- WRAP(PaintWindowBackground);
- WRAP(PaintWindowBorder);
- WRAP(CopyWindow);
- WRAP(GetImage);
- WRAP(SourceValidate);
- WRAP(CreateWindow);
- WRAP(DestroyWindow);
- WRAP(RealizeWindow);
- WRAP(UnrealizeWindow);
- WRAP(MoveWindow);
- WRAP(PositionWindow);
- WRAP(ResizeWindow);
- WRAP(RestackWindow);
- WRAP(ReparentWindow);
- WRAP(ChangeBorderWidth);
- WRAP(MarkOverlappedWindows);
- WRAP(ValidateTree);
- WRAP(ChangeWindowAttributes);
-
-#ifdef SHAPE
- WRAP(SetShape);
-#endif
-
-#ifdef RENDER
- {
- // Composite and Glyphs don't use normal screen wrapping
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- s->Composite = ps->Composite;
- ps->Composite = RootlessComposite;
- s->Glyphs = ps->Glyphs;
- ps->Glyphs = RootlessGlyphs;
- }
-#endif
-
- // WRAP(ClearToBackground); fixme put this back? useful for shaped wins?
- // WRAP(RestoreAreas); fixme put this back?
-
-#undef WRAP
-}
-
-
-/*
- * RootlessInit
- * Called by the rootless implementation to initialize the rootless layer.
- * Rootless wraps lots of stuff and needs a bunch of devPrivates.
- */
-Bool RootlessInit(ScreenPtr pScreen, RootlessFrameProcsPtr procs)
-{
- RootlessScreenRec *s;
-
- if (!RootlessAllocatePrivates(pScreen))
- return FALSE;
-
- s = (RootlessScreenRec*)
- pScreen->devPrivates[rootlessScreenPrivateIndex].ptr;
-
- s->imp = procs;
-
- RootlessWrap(pScreen);
-
- if (!RegisterBlockAndWakeupHandlers(RootlessBlockHandler,
- RootlessWakeupHandler,
- (pointer) pScreen))
- {
- return FALSE;
- }
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/rootlessValTree.c b/nx-X11/programs/Xserver/miext/rootless/rootlessValTree.c
deleted file mode 100644
index 2717ddf6f..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/rootlessValTree.c
+++ /dev/null
@@ -1,648 +0,0 @@
-/*
- * Calculate window clip lists for rootless mode
- *
- * This file is very closely based on mivaltree.c.
- */
-/* $XFree86: xc/programs/Xserver/miext/rootless/rootlessValTree.c,v 1.1tsi Exp $ */
-
-/*
- * mivaltree.c --
- * Functions for recalculating window clip lists. Main function
- * is miValidateTree.
- *
-
-Copyright 1987, 1988, 1989, 1998 The Open Group
-
-All Rights Reserved.
-
-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 1987, 1988, 1989 by
- * Digital Equipment Corporation, Maynard, Massachusetts,
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- ******************************************************************/
-
-/* The panoramix components contained the following notice */
-/*****************************************************************
-
-Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
-
-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 the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software.
-
-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
-DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
-BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
-shall not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from Digital
-Equipment Corporation.
-
-******************************************************************/
- /*
- * Aug '86: Susan Angebranndt -- original code
- * July '87: Adam de Boor -- substantially modified and commented
- * Summer '89: Joel McCormack -- so fast you wouldn't believe it possible.
- * In particular, much improved code for window mapping and
- * circulating.
- * Bob Scheifler -- avoid miComputeClips for unmapped windows,
- * valdata changes
- */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "validate.h"
-#include "windowstr.h"
-#include "mi.h"
-#include "regionstr.h"
-#include "mivalidate.h"
-
-#include "globals.h"
-
-#ifdef SHAPE
-/*
- * Compute the visibility of a shaped window
- */
-int
-RootlessShapedWindowIn (pScreen, universe, bounding, rect, x, y)
- ScreenPtr pScreen;
- RegionPtr universe, bounding;
- BoxPtr rect;
- register int x, y;
-{
- BoxRec box;
- register BoxPtr boundBox;
- int nbox;
- Bool someIn, someOut;
- register int t, x1, y1, x2, y2;
-
- nbox = REGION_NUM_RECTS (bounding);
- boundBox = REGION_RECTS (bounding);
- someIn = someOut = FALSE;
- x1 = rect->x1;
- y1 = rect->y1;
- x2 = rect->x2;
- y2 = rect->y2;
- while (nbox--)
- {
- if ((t = boundBox->x1 + x) < x1)
- t = x1;
- box.x1 = t;
- if ((t = boundBox->y1 + y) < y1)
- t = y1;
- box.y1 = t;
- if ((t = boundBox->x2 + x) > x2)
- t = x2;
- box.x2 = t;
- if ((t = boundBox->y2 + y) > y2)
- t = y2;
- box.y2 = t;
- if (box.x1 > box.x2)
- box.x2 = box.x1;
- if (box.y1 > box.y2)
- box.y2 = box.y1;
- switch (RECT_IN_REGION(pScreen, universe, &box))
- {
- case rgnIN:
- if (someOut)
- return rgnPART;
- someIn = TRUE;
- break;
- case rgnOUT:
- if (someIn)
- return rgnPART;
- someOut = TRUE;
- break;
- default:
- return rgnPART;
- }
- boundBox++;
- }
- if (someIn)
- return rgnIN;
- return rgnOUT;
-}
-#endif
-
-#define HasParentRelativeBorder(w) (!(w)->borderIsPixel && \
- HasBorder(w) && \
- (w)->backgroundState == ParentRelative)
-
-
-/*
- *-----------------------------------------------------------------------
- * RootlessComputeClips --
- * Recompute the clipList, borderClip, exposed and borderExposed
- * regions for pParent and its children. Only viewable windows are
- * taken into account.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * clipList, borderClip, exposed and borderExposed are altered.
- * A VisibilityNotify event may be generated on the parent window.
- *
- *-----------------------------------------------------------------------
- */
-static void
-RootlessComputeClips (pParent, pScreen, universe, kind, exposed)
- register WindowPtr pParent;
- register ScreenPtr pScreen;
- register RegionPtr universe;
- VTKind kind;
- RegionPtr exposed; /* for intermediate calculations */
-{
- int dx,
- dy;
- RegionRec childUniverse;
- register WindowPtr pChild;
- int oldVis, newVis;
- BoxRec borderSize;
- RegionRec childUnion;
- Bool overlap;
- RegionPtr borderVisible;
- Bool resized;
- /*
- * Figure out the new visibility of this window.
- * The extent of the universe should be the same as the extent of
- * the borderSize region. If the window is unobscured, this rectangle
- * will be completely inside the universe (the universe will cover it
- * completely). If the window is completely obscured, none of the
- * universe will cover the rectangle.
- */
- borderSize.x1 = pParent->drawable.x - wBorderWidth(pParent);
- borderSize.y1 = pParent->drawable.y - wBorderWidth(pParent);
- dx = (int) pParent->drawable.x + (int) pParent->drawable.width + wBorderWidth(pParent);
- if (dx > 32767)
- dx = 32767;
- borderSize.x2 = dx;
- dy = (int) pParent->drawable.y + (int) pParent->drawable.height + wBorderWidth(pParent);
- if (dy > 32767)
- dy = 32767;
- borderSize.y2 = dy;
-
- oldVis = pParent->visibility;
- switch (RECT_IN_REGION( pScreen, universe, &borderSize))
- {
- case rgnIN:
- newVis = VisibilityUnobscured;
- break;
- case rgnPART:
- newVis = VisibilityPartiallyObscured;
-#ifdef SHAPE
- {
- RegionPtr pBounding;
-
- if ((pBounding = wBoundingShape (pParent)))
- {
- switch (RootlessShapedWindowIn (pScreen, universe,
- pBounding, &borderSize,
- pParent->drawable.x,
- pParent->drawable.y))
- {
- case rgnIN:
- newVis = VisibilityUnobscured;
- break;
- case rgnOUT:
- newVis = VisibilityFullyObscured;
- break;
- }
- }
- }
-#endif
- break;
- default:
- newVis = VisibilityFullyObscured;
- break;
- }
-
- pParent->visibility = newVis;
- if (oldVis != newVis &&
- ((pParent->eventMask | wOtherEventMasks(pParent)) & VisibilityChangeMask))
- SendVisibilityNotify(pParent);
-
- dx = pParent->drawable.x - pParent->valdata->before.oldAbsCorner.x;
- dy = pParent->drawable.y - pParent->valdata->before.oldAbsCorner.y;
-
- /*
- * avoid computations when dealing with simple operations
- */
-
- switch (kind) {
- case VTMap:
- case VTStack:
- case VTUnmap:
- break;
- case VTMove:
- if ((oldVis == newVis) &&
- ((oldVis == VisibilityFullyObscured) ||
- (oldVis == VisibilityUnobscured)))
- {
- pChild = pParent;
- while (1)
- {
- if (pChild->viewable)
- {
- if (pChild->visibility != VisibilityFullyObscured)
- {
- REGION_TRANSLATE( pScreen, &pChild->borderClip,
- dx, dy);
- REGION_TRANSLATE( pScreen, &pChild->clipList,
- dx, dy);
- pChild->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- if (pScreen->ClipNotify)
- (* pScreen->ClipNotify) (pChild, dx, dy);
-
- }
- if (pChild->valdata)
- {
- REGION_NULL(pScreen,
- &pChild->valdata->after.borderExposed);
- if (HasParentRelativeBorder(pChild))
- {
- REGION_SUBTRACT(pScreen,
- &pChild->valdata->after.borderExposed,
- &pChild->borderClip,
- &pChild->winSize);
- }
- REGION_NULL(pScreen, &pChild->valdata->after.exposed);
- }
- if (pChild->firstChild)
- {
- pChild = pChild->firstChild;
- continue;
- }
- }
- while (!pChild->nextSib && (pChild != pParent))
- pChild = pChild->parent;
- if (pChild == pParent)
- break;
- pChild = pChild->nextSib;
- }
- return;
- }
- /* fall through */
- default:
- /*
- * To calculate exposures correctly, we have to translate the old
- * borderClip and clipList regions to the window's new location so there
- * is a correspondence between pieces of the new and old clipping regions.
- */
- if (dx || dy)
- {
- /*
- * We translate the old clipList because that will be exposed or copied
- * if gravity is right.
- */
- REGION_TRANSLATE( pScreen, &pParent->borderClip, dx, dy);
- REGION_TRANSLATE( pScreen, &pParent->clipList, dx, dy);
- }
- break;
- case VTBroken:
- REGION_EMPTY (pScreen, &pParent->borderClip);
- REGION_EMPTY (pScreen, &pParent->clipList);
- break;
- }
-
- borderVisible = pParent->valdata->before.borderVisible;
- resized = pParent->valdata->before.resized;
- REGION_NULL(pScreen, &pParent->valdata->after.borderExposed);
- REGION_NULL(pScreen, &pParent->valdata->after.exposed);
-
- /*
- * Since the borderClip must not be clipped by the children, we do
- * the border exposure first...
- *
- * 'universe' is the window's borderClip. To figure the exposures, remove
- * the area that used to be exposed from the new.
- * This leaves a region of pieces that weren't exposed before.
- */
-
- if (HasBorder (pParent))
- {
- if (borderVisible)
- {
- /*
- * when the border changes shape, the old visible portions
- * of the border will be saved by DIX in borderVisible --
- * use that region and destroy it
- */
- REGION_SUBTRACT( pScreen, exposed, universe, borderVisible);
- REGION_DESTROY( pScreen, borderVisible);
- }
- else
- {
- REGION_SUBTRACT( pScreen, exposed, universe, &pParent->borderClip);
- }
- if (HasParentRelativeBorder(pParent) && (dx || dy)) {
- REGION_SUBTRACT( pScreen, &pParent->valdata->after.borderExposed,
- universe,
- &pParent->winSize);
- } else {
- REGION_SUBTRACT( pScreen, &pParent->valdata->after.borderExposed,
- exposed, &pParent->winSize);
- }
-
- REGION_COPY( pScreen, &pParent->borderClip, universe);
-
- /*
- * To get the right clipList for the parent, and to make doubly sure
- * that no child overlaps the parent's border, we remove the parent's
- * border from the universe before proceeding.
- */
-
- REGION_INTERSECT( pScreen, universe, universe, &pParent->winSize);
- }
- else
- REGION_COPY( pScreen, &pParent->borderClip, universe);
-
- if ((pChild = pParent->firstChild) && pParent->mapped)
- {
- REGION_NULL(pScreen, &childUniverse);
- REGION_NULL(pScreen, &childUnion);
- if ((pChild->drawable.y < pParent->lastChild->drawable.y) ||
- ((pChild->drawable.y == pParent->lastChild->drawable.y) &&
- (pChild->drawable.x < pParent->lastChild->drawable.x)))
- {
- for (; pChild; pChild = pChild->nextSib)
- {
- if (pChild->viewable)
- REGION_APPEND( pScreen, &childUnion, &pChild->borderSize);
- }
- }
- else
- {
- for (pChild = pParent->lastChild; pChild; pChild = pChild->prevSib)
- {
- if (pChild->viewable)
- REGION_APPEND( pScreen, &childUnion, &pChild->borderSize);
- }
- }
- REGION_VALIDATE( pScreen, &childUnion, &overlap);
-
- for (pChild = pParent->firstChild;
- pChild;
- pChild = pChild->nextSib)
- {
- if (pChild->viewable) {
- /*
- * If the child is viewable, we want to remove its extents
- * from the current universe, but we only re-clip it if
- * it's been marked.
- */
- if (pChild->valdata) {
- /*
- * Figure out the new universe from the child's
- * perspective and recurse.
- */
- REGION_INTERSECT( pScreen, &childUniverse,
- universe,
- &pChild->borderSize);
- RootlessComputeClips (pChild, pScreen, &childUniverse,
- kind, exposed);
- }
- /*
- * Once the child has been processed, we remove its extents
- * from the current universe, thus denying its space to any
- * other sibling.
- */
- if (overlap)
- REGION_SUBTRACT( pScreen, universe, universe,
- &pChild->borderSize);
- }
- }
- if (!overlap)
- REGION_SUBTRACT( pScreen, universe, universe, &childUnion);
- REGION_UNINIT( pScreen, &childUnion);
- REGION_UNINIT( pScreen, &childUniverse);
- } /* if any children */
-
- /*
- * 'universe' now contains the new clipList for the parent window.
- *
- * To figure the exposure of the window we subtract the old clip from the
- * new, just as for the border.
- */
-
- if (oldVis == VisibilityFullyObscured ||
- oldVis == VisibilityNotViewable)
- {
- REGION_COPY( pScreen, &pParent->valdata->after.exposed, universe);
- }
- else if (newVis != VisibilityFullyObscured &&
- newVis != VisibilityNotViewable)
- {
- REGION_SUBTRACT( pScreen, &pParent->valdata->after.exposed,
- universe, &pParent->clipList);
- }
-
- /*
- * One last thing: backing storage. We have to try to save what parts of
- * the window are about to be obscured. We can just subtract the universe
- * from the old clipList and get the areas that were in the old but aren't
- * in the new and, hence, are about to be obscured.
- */
- if (pParent->backStorage && !resized)
- {
- REGION_SUBTRACT( pScreen, exposed, &pParent->clipList, universe);
- (* pScreen->SaveDoomedAreas)(pParent, exposed, dx, dy);
- }
-
- /* HACK ALERT - copying contents of regions, instead of regions */
- {
- RegionRec tmp;
-
- tmp = pParent->clipList;
- pParent->clipList = *universe;
- *universe = tmp;
- }
-
-#ifdef NOTDEF
- REGION_COPY( pScreen, &pParent->clipList, universe);
-#endif
-
- pParent->drawable.serialNumber = NEXT_SERIAL_NUMBER;
-
- if (pScreen->ClipNotify)
- (* pScreen->ClipNotify) (pParent, dx, dy);
-}
-
-static void
-RootlessTreeObscured(pParent)
- register WindowPtr pParent;
-{
- register WindowPtr pChild;
- register int oldVis;
-
- pChild = pParent;
- while (1)
- {
- if (pChild->viewable)
- {
- oldVis = pChild->visibility;
- if (oldVis != (pChild->visibility = VisibilityFullyObscured) &&
- ((pChild->eventMask | wOtherEventMasks(pChild)) & VisibilityChangeMask))
- SendVisibilityNotify(pChild);
- if (pChild->firstChild)
- {
- pChild = pChild->firstChild;
- continue;
- }
- }
- while (!pChild->nextSib && (pChild != pParent))
- pChild = pChild->parent;
- if (pChild == pParent)
- break;
- pChild = pChild->nextSib;
- }
-}
-
-/*
- *-----------------------------------------------------------------------
- * RootlessMiValidateTree --
- * Recomputes the clip list for pParent and all its inferiors.
- *
- * Results:
- * Always returns 1.
- *
- * Side Effects:
- * The clipList, borderClip, exposed, and borderExposed regions for
- * each marked window are altered.
- *
- * Notes:
- * This routine assumes that all affected windows have been marked
- * (valdata created) and their winSize and borderSize regions
- * adjusted to correspond to their new positions. The borderClip and
- * clipList regions should not have been touched.
- *
- * The top-most level is treated differently from all lower levels
- * because pParent is unchanged. For the top level, we merge the
- * regions taken up by the marked children back into the clipList
- * for pParent, thus forming a region from which the marked children
- * can claim their areas. For lower levels, where the old clipList
- * and borderClip are invalid, we can't do this and have to do the
- * extra operations done in miComputeClips, but this is much faster
- * e.g. when only one child has moved...
- *
- *-----------------------------------------------------------------------
- */
-/*
- Quartz version: used for validate from root in rootless mode.
- We need to make sure top-level windows don't clip each other,
- and that top-level windows aren't clipped to the root window.
-*/
-/*ARGSUSED*/
-// fixme this is ugly
-// Xprint/ValTree.c doesn't work, but maybe that method can?
-int
-RootlessMiValidateTree (pRoot, pChild, kind)
- WindowPtr pRoot; /* Parent to validate */
- WindowPtr pChild; /* First child of pRoot that was
- * affected */
- VTKind kind; /* What kind of configuration caused call */
-{
- RegionRec childClip; /* The new borderClip for the current
- * child */
- RegionRec exposed; /* For intermediate calculations */
- register ScreenPtr pScreen;
- register WindowPtr pWin;
-
- pScreen = pRoot->drawable.pScreen;
- if (pChild == NullWindow)
- pChild = pRoot->firstChild;
-
- REGION_NULL(pScreen, &childClip);
- REGION_NULL(pScreen, &exposed);
-
- if (REGION_BROKEN (pScreen, &pRoot->clipList) &&
- !REGION_BROKEN (pScreen, &pRoot->borderClip))
- {
- // fixme this might not work, but hopefully doesn't happen anyway.
- kind = VTBroken;
- REGION_EMPTY (pScreen, &pRoot->clipList);
- ErrorF("ValidateTree: BUSTED!\n");
- }
-
- /*
- * Recursively compute the clips for all children of the root.
- * They don't clip against each other or the root itself, so
- * childClip is always reset to that child's size.
- */
-
- for (pWin = pChild;
- pWin != NullWindow;
- pWin = pWin->nextSib)
- {
- if (pWin->viewable) {
- if (pWin->valdata) {
- REGION_COPY( pScreen, &childClip, &pWin->borderSize);
- RootlessComputeClips (pWin, pScreen, &childClip, kind, &exposed);
- } else if (pWin->visibility == VisibilityNotViewable) {
- RootlessTreeObscured(pWin);
- }
- } else {
- if (pWin->valdata) {
- REGION_EMPTY( pScreen, &pWin->clipList);
- if (pScreen->ClipNotify)
- (* pScreen->ClipNotify) (pWin, 0, 0);
- REGION_EMPTY( pScreen, &pWin->borderClip);
- pWin->valdata = (ValidatePtr)NULL;
- }
- }
- }
-
- REGION_UNINIT(pScreen, &childClip);
-
- /* The root is never clipped by its children, so nothing on the root
- is ever exposed by moving or mapping its children. */
- REGION_NULL(pScreen, &pRoot->valdata->after.exposed);
- REGION_NULL(pScreen, &pRoot->valdata->after.borderExposed);
-
- return 1;
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/rootlessWindow.c b/nx-X11/programs/Xserver/miext/rootless/rootlessWindow.c
deleted file mode 100644
index 6eb66501d..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/rootlessWindow.c
+++ /dev/null
@@ -1,1468 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/miext/rootless/rootlessWindow.c,v 1.6 2005/07/03 07:02:02 daniels Exp $ */
-/*
- * Rootless window management
- */
-/*
- * Copyright (c) 2001 Greg Parker. All Rights Reserved.
- * Copyright (c) 2002-2004 Torrey T. Lyons. All Rights Reserved.
- * Copyright (c) 2002 Apple Computer, Inc. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/miext/rootless/rootlessWindow.c,v 1.12 2004/07/02 01:30:33 torrey Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "rootlessCommon.h"
-#include "rootlessWindow.h"
-
-#include "fb.h"
-
-
-#ifdef ROOTLESS_GLOBAL_COORDS
-#define SCREEN_TO_GLOBAL_X \
- (dixScreenOrigins[pScreen->myNum].x + rootlessGlobalOffsetX)
-#define SCREEN_TO_GLOBAL_Y \
- (dixScreenOrigins[pScreen->myNum].y + rootlessGlobalOffsetY)
-#else
-#define SCREEN_TO_GLOBAL_X 0
-#define SCREEN_TO_GLOBAL_Y 0
-#endif
-
-
-/*
- * RootlessCreateWindow
- * For now, don't create a physical window until either the window is
- * realized, or we really need it (e.g. to attach VRAM surfaces to).
- * Do reset the window size so it's not clipped by the root window.
- */
-Bool
-RootlessCreateWindow(WindowPtr pWin)
-{
- Bool result;
- RegionRec saveRoot;
-
- WINREC(pWin) = NULL;
-
- SCREEN_UNWRAP(pWin->drawable.pScreen, CreateWindow);
-
- if (!IsRoot(pWin)) {
- /* win/border size set by DIX, not by wrapped CreateWindow, so
- correct it here. Don't HUGE_ROOT when pWin is the root! */
-
- HUGE_ROOT(pWin);
- SetWinSize(pWin);
- SetBorderSize(pWin);
- }
-
- result = pWin->drawable.pScreen->CreateWindow(pWin);
-
- if (pWin->parent) {
- NORMAL_ROOT(pWin);
- }
-
- SCREEN_WRAP(pWin->drawable.pScreen, CreateWindow);
-
- return result;
-}
-
-
-/*
- * RootlessDestroyFrame
- * Destroy the physical window associated with the given window.
- */
-static void
-RootlessDestroyFrame(WindowPtr pWin, RootlessWindowPtr winRec)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- SCREENREC(pScreen)->imp->DestroyFrame(winRec->wid);
-
-#ifdef ROOTLESS_TRACK_DAMAGE
- REGION_UNINIT(pScreen, &winRec->damage);
-#endif
-
- xfree(winRec);
- WINREC(pWin) = NULL;
-}
-
-
-/*
- * RootlessDestroyWindow
- * Destroy the physical window associated with the given window.
- */
-Bool
-RootlessDestroyWindow(WindowPtr pWin)
-{
- RootlessWindowRec *winRec = WINREC(pWin);
- Bool result;
-
- if (winRec != NULL) {
- RootlessDestroyFrame(pWin, winRec);
- }
-
- SCREEN_UNWRAP(pWin->drawable.pScreen, DestroyWindow);
- result = pWin->drawable.pScreen->DestroyWindow(pWin);
- SCREEN_WRAP(pWin->drawable.pScreen, DestroyWindow);
-
- return result;
-}
-
-
-#ifdef SHAPE
-
-static Bool
-RootlessGetShape(WindowPtr pWin, RegionPtr pShape)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- if (wBoundingShape(pWin) == NULL)
- return FALSE;
-
- /* wBoundingShape is relative to *inner* origin of window.
- Translate by borderWidth to get the outside-relative position. */
-
- REGION_NULL(pScreen, pShape);
- REGION_COPY(pScreen, pShape, wBoundingShape(pWin));
- REGION_TRANSLATE(pScreen, pShape, pWin->borderWidth, pWin->borderWidth);
-
- return TRUE;
-}
-
-
-/*
- * RootlessReshapeFrame
- * Set the frame shape.
- */
-static void RootlessReshapeFrame(WindowPtr pWin)
-{
- RootlessWindowRec *winRec = WINREC(pWin);
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RegionRec newShape;
- RegionPtr pShape;
-
- // If the window is not yet framed, do nothing
- if (winRec == NULL)
- return;
-
- if (IsRoot(pWin))
- return;
-
- RootlessStopDrawing(pWin, FALSE);
-
- pShape = RootlessGetShape(pWin, &newShape) ? &newShape : NULL;
-
-#ifdef ROOTLESSDEBUG
- RL_DEBUG_MSG("reshaping...");
- if (pShape != NULL) {
- RL_DEBUG_MSG("numrects %d, extents %d %d %d %d ",
- REGION_NUM_RECTS(&newShape),
- newShape.extents.x1, newShape.extents.y1,
- newShape.extents.x2, newShape.extents.y2);
- } else {
- RL_DEBUG_MSG("no shape ");
- }
-#endif
-
- SCREENREC(pScreen)->imp->ReshapeFrame(winRec->wid, pShape);
-
- if (pShape != NULL)
- REGION_UNINIT(pScreen, &newShape);
-}
-
-
-/*
- * RootlessSetShape
- * Shape is usually set before a window is mapped and the window will
- * not have a frame associated with it. In this case, the frame will be
- * shaped when the window is framed.
- */
-void
-RootlessSetShape(WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- SCREEN_UNWRAP(pScreen, SetShape);
- pScreen->SetShape(pWin);
- SCREEN_WRAP(pScreen, SetShape);
-
- RootlessReshapeFrame(pWin);
-}
-
-#endif // SHAPE
-
-
-/* Disallow ParentRelative background on top-level windows
- because the root window doesn't really have the right background
- and fb will try to draw on the root instead of on the window.
- ParentRelative prevention is also in PaintWindowBackground/Border()
- so it is no longer really needed here. */
-Bool
-RootlessChangeWindowAttributes(WindowPtr pWin, unsigned long vmask)
-{
- Bool result;
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- RL_DEBUG_MSG("change window attributes start ");
-
- SCREEN_UNWRAP(pScreen, ChangeWindowAttributes);
- result = pScreen->ChangeWindowAttributes(pWin, vmask);
- SCREEN_WRAP(pScreen, ChangeWindowAttributes);
-
- if (WINREC(pWin)) {
- // disallow ParentRelative background state
- if (pWin->backgroundState == ParentRelative) {
- XID pixel = 0;
- ChangeWindowAttributes(pWin, CWBackPixel, &pixel, serverClient);
- }
- }
-
- RL_DEBUG_MSG("change window attributes end\n");
- return result;
-}
-
-
-/*
- * RootlessPositionWindow
- * This is a hook for when DIX moves or resizes a window.
- * Update the frame position now although the physical window is moved
- * in RootlessMoveWindow. (x, y) are *inside* position. After this,
- * mi and fb are expecting the pixmap to be at the new location.
- */
-Bool
-RootlessPositionWindow(WindowPtr pWin, int x, int y)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RootlessWindowRec *winRec = WINREC(pWin);
- Bool result;
-
- RL_DEBUG_MSG("positionwindow start (win 0x%x @ %i, %i)\n", pWin, x, y);
-
- if (winRec) {
- if (winRec->is_drawing) {
- // Reset frame's pixmap and move it to the new position.
- int bw = wBorderWidth(pWin);
-
- winRec->pixmap->devPrivate.ptr = winRec->pixelData;
- SetPixmapBaseToScreen(winRec->pixmap, x - bw, y - bw);
-
-#ifdef ROOTLESS_TRACK_DAMAGE
- // Move damaged region to correspond to new window position
- if (REGION_NOTEMPTY(pScreen, &winRec->damage)) {
- REGION_TRANSLATE(pScreen, &winRec->damage,
- x - bw - winRec->x,
- y - bw - winRec->y);
- }
-#endif
- }
- }
-
- SCREEN_UNWRAP(pScreen, PositionWindow);
- result = pScreen->PositionWindow(pWin, x, y);
- SCREEN_WRAP(pScreen, PositionWindow);
-
- RL_DEBUG_MSG("positionwindow end\n");
- return result;
-}
-
-
-/*
- * RootlessInitializeFrame
- * Initialize some basic attributes of the frame. Note that winRec
- * may already have valid data in it, so don't overwrite anything
- * valuable.
- */
-static void
-RootlessInitializeFrame(WindowPtr pWin, RootlessWindowRec *winRec)
-{
- DrawablePtr d = &pWin->drawable;
- int bw = wBorderWidth(pWin);
-
- winRec->win = pWin;
-
- winRec->x = d->x - bw;
- winRec->y = d->y - bw;
- winRec->width = d->width + 2*bw;
- winRec->height = d->height + 2*bw;
- winRec->borderWidth = bw;
-
-#ifdef ROOTLESS_TRACK_DAMAGE
- REGION_NULL(pScreen, &winRec->damage);
-#endif
-}
-
-
-/*
- * RootlessEnsureFrame
- * Make sure the given window is framed. If the window doesn't have a
- * physical window associated with it, attempt to create one. If that
- * is unsuccessful, return NULL.
- */
-static RootlessWindowRec *
-RootlessEnsureFrame(WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RootlessWindowRec *winRec;
-#ifdef SHAPE
- RegionRec shape;
- RegionPtr pShape = NULL;
-#endif
-
- if (WINREC(pWin) != NULL)
- return WINREC(pWin);
-
- if (!IsTopLevel(pWin))
- return NULL;
-
- if (pWin->drawable.class != InputOutput)
- return NULL;
-
- winRec = xalloc(sizeof(RootlessWindowRec));
-
- if (!winRec)
- return NULL;
-
- RootlessInitializeFrame(pWin, winRec);
-
- winRec->is_drawing = FALSE;
- winRec->is_reorder_pending = FALSE;
- winRec->pixmap = NULL;
- winRec->wid = NULL;
-
- WINREC(pWin) = winRec;
-
-#ifdef SHAPE
- // Set the frame's shape if the window is shaped
- if (RootlessGetShape(pWin, &shape))
- pShape = &shape;
-#endif
-
- RL_DEBUG_MSG("creating frame ");
-
- if (!SCREENREC(pScreen)->imp->CreateFrame(winRec, pScreen,
- winRec->x + SCREEN_TO_GLOBAL_X,
- winRec->y + SCREEN_TO_GLOBAL_Y,
- pShape))
- {
- RL_DEBUG_MSG("implementation failed to create frame!\n");
- xfree(winRec);
- WINREC(pWin) = NULL;
- return NULL;
- }
-
-#ifdef SHAPE
- if (pShape != NULL)
- REGION_UNINIT(pScreen, &shape);
-#endif
-
- return winRec;
-}
-
-
-/*
- * RootlessRealizeWindow
- * The frame is usually created here and not in CreateWindow so that
- * windows do not eat memory until they are realized.
- */
-Bool
-RootlessRealizeWindow(WindowPtr pWin)
-{
- Bool result;
- RegionRec saveRoot;
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- RL_DEBUG_MSG("realizewindow start (win 0x%x) ", pWin);
-
- if ((IsTopLevel(pWin) && pWin->drawable.class == InputOutput)) {
- RootlessWindowRec *winRec;
-
- winRec = RootlessEnsureFrame(pWin);
- if (winRec == NULL)
- return FALSE;
-
- winRec->is_reorder_pending = TRUE;
-
- RL_DEBUG_MSG("Top level window ");
-
- // Disallow ParentRelative background state on top-level windows.
- // This might have been set before the window was mapped.
- if (pWin->backgroundState == ParentRelative) {
- XID pixel = 0;
- ChangeWindowAttributes(pWin, CWBackPixel, &pixel, serverClient);
- }
- }
-
- if (!IsRoot(pWin)) HUGE_ROOT(pWin);
- SCREEN_UNWRAP(pScreen, RealizeWindow);
- result = pScreen->RealizeWindow(pWin);
- SCREEN_WRAP(pScreen, RealizeWindow);
- if (!IsRoot(pWin)) NORMAL_ROOT(pWin);
-
- RL_DEBUG_MSG("realizewindow end\n");
- return result;
-}
-
-
-/*
- * RootlessFrameForWindow
- * Returns the frame ID for the physical window displaying the given window.
- * If CREATE is true and the window has no frame, attempt to create one.
- */
-RootlessFrameID
-RootlessFrameForWindow(WindowPtr pWin, Bool create)
-{
- WindowPtr pTopWin;
- RootlessWindowRec *winRec;
-
- pTopWin = TopLevelParent(pWin);
- if (pTopWin == NULL)
- return NULL;
-
- winRec = WINREC(pTopWin);
-
- if (winRec == NULL && create && pWin->drawable.class == InputOutput) {
- winRec = RootlessEnsureFrame(pTopWin);
- }
-
- if (winRec == NULL)
- return NULL;
-
- return winRec->wid;
-}
-
-
-/*
- * RootlessUnrealizeWindow
- * Unmap the physical window.
- */
-Bool
-RootlessUnrealizeWindow(WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RootlessWindowRec *winRec = WINREC(pWin);
- Bool result;
-
- RL_DEBUG_MSG("unrealizewindow start ");
-
- if (winRec) {
- RootlessStopDrawing(pWin, FALSE);
-
- SCREENREC(pScreen)->imp->UnmapFrame(winRec->wid);
-
- winRec->is_reorder_pending = FALSE;
- }
-
- SCREEN_UNWRAP(pScreen, UnrealizeWindow);
- result = pScreen->UnrealizeWindow(pWin);
- SCREEN_WRAP(pScreen, UnrealizeWindow);
-
- RL_DEBUG_MSG("unrealizewindow end\n");
- return result;
-}
-
-
-/*
- * RootlessReorderWindow
- * Reorder the frame associated with the given window so that it's
- * physically above the window below it in the X stacking order.
- */
-void
-RootlessReorderWindow(WindowPtr pWin)
-{
- RootlessWindowRec *winRec = WINREC(pWin);
-
- if (winRec != NULL && !winRec->is_reorder_pending) {
- WindowPtr newPrevW;
- RootlessWindowRec *newPrev;
- RootlessFrameID newPrevID;
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- /* Check if the implementation wants the frame to not be reordered
- even though the X11 window is restacked. This can be useful if
- frames are ordered-in with animation so that the reordering is not
- done until the animation is complete. */
- if (SCREENREC(pScreen)->imp->DoReorderWindow) {
- if (!SCREENREC(pScreen)->imp->DoReorderWindow(winRec))
- return;
- }
-
- RootlessStopDrawing(pWin, FALSE);
-
- /* Find the next window above this one that has a mapped frame. */
-
- newPrevW = pWin->prevSib;
- while (newPrevW && (WINREC(newPrevW) == NULL || !newPrevW->realized))
- newPrevW = newPrevW->prevSib;
-
- newPrev = newPrevW != NULL ? WINREC(newPrevW) : NULL;
- newPrevID = newPrev != NULL ? newPrev->wid : 0;
-
- /* If it exists, reorder the frame above us first. */
-
- if (newPrev && newPrev->is_reorder_pending) {
- newPrev->is_reorder_pending = FALSE;
- RootlessReorderWindow(newPrevW);
- }
-
- SCREENREC(pScreen)->imp->RestackFrame(winRec->wid, newPrevID);
- }
-}
-
-
-/*
- * RootlessRestackWindow
- * This is a hook for when DIX changes the window stacking order.
- * The window has already been inserted into its new position in the
- * DIX window stack. We need to change the order of the physical
- * window to match.
- */
-void
-RootlessRestackWindow(WindowPtr pWin, WindowPtr pOldNextSib)
-{
- RegionRec saveRoot;
- RootlessWindowRec *winRec = WINREC(pWin);
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- RL_DEBUG_MSG("restackwindow start ");
- if (winRec)
- RL_DEBUG_MSG("restack top level \n");
-
- HUGE_ROOT(pWin);
- SCREEN_UNWRAP(pScreen, RestackWindow);
-
- if (pScreen->RestackWindow)
- pScreen->RestackWindow(pWin, pOldNextSib);
-
- SCREEN_WRAP(pScreen, RestackWindow);
- NORMAL_ROOT(pWin);
-
- if (winRec && pWin->viewable) {
- RootlessReorderWindow(pWin);
- }
-
- RL_DEBUG_MSG("restackwindow end\n");
-}
-
-
-/*
- * Specialized window copy procedures
- */
-
-// Globals needed during window resize and move.
-static pointer gResizeDeathBits = NULL;
-static int gResizeDeathCount = 0;
-static PixmapPtr gResizeDeathPix[2] = {NULL, NULL};
-static BoxRec gResizeDeathBounds[2];
-static CopyWindowProcPtr gResizeOldCopyWindowProc = NULL;
-
-/*
- * RootlessNoCopyWindow
- * CopyWindow() that doesn't do anything. For MoveWindow() of
- * top-level windows.
- */
-static void
-RootlessNoCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
- RegionPtr prgnSrc)
-{
- // some code expects the region to be translated
- int dx = ptOldOrg.x - pWin->drawable.x;
- int dy = ptOldOrg.y - pWin->drawable.y;
-
- RL_DEBUG_MSG("ROOTLESSNOCOPYWINDOW ");
-
- REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, -dx, -dy);
-}
-
-
-/*
- * RootlessResizeCopyWindow
- * CopyWindow used during ResizeWindow for gravity moves. Based on
- * fbCopyWindow. The original always draws on the root pixmap, which
- * we don't have. Instead, draw on the parent window's pixmap.
- * Resize version: the old location's pixels are in gResizeCopyWindowSource.
- */
-static void
-RootlessResizeCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
- RegionPtr prgnSrc)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RegionRec rgnDst;
- int dx, dy;
-
- RL_DEBUG_MSG("resizecopywindowFB start (win 0x%x) ", pWin);
-
- /* Don't unwrap pScreen->CopyWindow.
- The bogus rewrap with RootlessCopyWindow causes a crash if
- CopyWindow is called again during the same resize. */
-
- if (gResizeDeathCount == 0)
- return;
-
- RootlessStartDrawing(pWin);
-
- dx = ptOldOrg.x - pWin->drawable.x;
- dy = ptOldOrg.y - pWin->drawable.y;
- REGION_TRANSLATE(pScreen, prgnSrc, -dx, -dy);
- REGION_NULL(pScreen, &rgnDst);
- REGION_INTERSECT(pScreen, &rgnDst, &pWin->borderClip, prgnSrc);
-
- if (gResizeDeathCount == 1) {
- /* Simple case, we only have a single source pixmap. */
-
- fbCopyRegion(&gResizeDeathPix[0]->drawable,
- &pScreen->GetWindowPixmap(pWin)->drawable, 0,
- &rgnDst, dx, dy, fbCopyWindowProc, 0, 0);
- }
- else {
- int i;
- RegionRec clip, clipped;
-
- /* More complex case, N source pixmaps (usually two). So we
- intersect the destination with each source and copy those bits. */
-
- for (i = 0; i < gResizeDeathCount; i++) {
- REGION_INIT(pScreen, &clip, gResizeDeathBounds + 0, 1);
- REGION_NULL(pScreen, &clipped);
- REGION_INTERSECT(pScreen, &rgnDst, &clip, &clipped);
-
- fbCopyRegion(&gResizeDeathPix[i]->drawable,
- &pScreen->GetWindowPixmap(pWin)->drawable, 0,
- &clipped, dx, dy, fbCopyWindowProc, 0, 0);
-
- REGION_UNINIT(pScreen, &clipped);
- REGION_UNINIT(pScreen, &clip);
- }
- }
-
- /* Don't update - resize will update everything */
- REGION_UNINIT(pScreen, &rgnDst);
-
- fbValidateDrawable(&pWin->drawable);
-
- RL_DEBUG_MSG("resizecopywindowFB end\n");
-}
-
-
-/*
- * RootlessCopyWindow
- * Update *new* location of window. Old location is redrawn with
- * PaintWindowBackground/Border. Cloned from fbCopyWindow.
- * The original always draws on the root pixmap, which we don't have.
- * Instead, draw on the parent window's pixmap.
- */
-void
-RootlessCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RegionRec rgnDst;
- int dx, dy;
- BoxPtr extents;
- int area;
-
- RL_DEBUG_MSG("copywindowFB start (win 0x%x) ", pWin);
-
- SCREEN_UNWRAP(pScreen, CopyWindow);
-
- dx = ptOldOrg.x - pWin->drawable.x;
- dy = ptOldOrg.y - pWin->drawable.y;
- REGION_TRANSLATE(pScreen, prgnSrc, -dx, -dy);
-
- REGION_NULL(pScreen, &rgnDst);
- REGION_INTERSECT(pScreen, &rgnDst, &pWin->borderClip, prgnSrc);
-
- extents = REGION_EXTENTS(pScreen, &rgnDst);
- area = (extents->x2 - extents->x1) * (extents->y2 - extents->y1);
-
- /* If the area exceeds threshold, use the implementation's
- accelerated version. */
- if (area > rootless_CopyWindow_threshold &&
- SCREENREC(pScreen)->imp->CopyWindow)
- {
- RootlessWindowRec *winRec;
- WindowPtr top;
-
- top = TopLevelParent(pWin);
- if (top == NULL) {
- RL_DEBUG_MSG("no parent\n");
- return;
- }
-
- winRec = WINREC(top);
- if (winRec == NULL) {
- RL_DEBUG_MSG("not framed\n");
- return;
- }
-
- /* Move region to window local coords */
- REGION_TRANSLATE(pScreen, &rgnDst, -winRec->x, -winRec->y);
-
- RootlessStopDrawing(pWin, FALSE);
-
- SCREENREC(pScreen)->imp->CopyWindow(winRec->wid,
- REGION_NUM_RECTS(&rgnDst),
- REGION_RECTS(&rgnDst),
- dx, dy);
- }
- else {
- RootlessStartDrawing(pWin);
-
- fbCopyRegion((DrawablePtr) pWin, (DrawablePtr) pWin,
- 0, &rgnDst, dx, dy, fbCopyWindowProc, 0, 0);
-
- /* prgnSrc has been translated to dst position */
- RootlessDamageRegion(pWin, prgnSrc);
- }
-
- REGION_UNINIT(pScreen, &rgnDst);
- fbValidateDrawable(&pWin->drawable);
-
- SCREEN_WRAP(pScreen, CopyWindow);
-
- RL_DEBUG_MSG("copywindowFB end\n");
-}
-
-
-/*
- * Window resize procedures
- */
-
-enum {
- WIDTH_SMALLER = 1,
- HEIGHT_SMALLER = 2,
-};
-
-
-/*
- * ResizeWeighting
- * Choose gravity to avoid local copies. Do that by looking for
- * a corner that doesn't move _relative to the screen_.
- */
-static inline unsigned int
-ResizeWeighting(int oldX1, int oldY1, int oldX2, int oldY2, int oldBW,
- int newX1, int newY1, int newX2, int newY2, int newBW)
-{
-#ifdef ROOTLESS_RESIZE_GRAVITY
- if (newBW != oldBW)
- return RL_GRAVITY_NONE;
-
- if (newX1 == oldX1 && newY1 == oldY1)
- return RL_GRAVITY_NORTH_WEST;
- else if (newX1 == oldX1 && newY2 == oldY2)
- return RL_GRAVITY_SOUTH_WEST;
- else if (newX2 == oldX2 && newY2 == oldY2)
- return RL_GRAVITY_SOUTH_EAST;
- else if (newX2 == oldX2 && newY1 == oldY1)
- return RL_GRAVITY_NORTH_EAST;
- else
- return RL_GRAVITY_NONE;
-#else
- return RL_GRAVITY_NONE;
-#endif
-}
-
-
-/*
- * StartFrameResize
- * Prepare to resize a top-level window. The old window's pixels are
- * saved and the implementation is told to change the window size.
- * (x,y,w,h) is outer frame of window (outside border)
- */
-static Bool
-StartFrameResize(WindowPtr pWin, Bool gravity,
- int oldX, int oldY, int oldW, int oldH, int oldBW,
- int newX, int newY, int newW, int newH, int newBW)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RootlessWindowRec *winRec = WINREC(pWin);
- Bool need_window_source = FALSE, resize_after = FALSE;
-
- BoxRec rect;
- int oldX2, newX2;
- int oldY2, newY2;
- unsigned int weight;
-
- oldX2 = oldX + oldW, newX2 = newX + newW;
- oldY2 = oldY + oldH, newY2 = newY + newH;
-
- /* Decide which resize weighting to use */
- weight = ResizeWeighting(oldX, oldY, oldW, oldH, oldBW,
- newX, newY, newW, newH, newBW);
-
- /* Compute intersection between old and new rects */
- rect.x1 = max(oldX, newX);
- rect.y1 = max(oldY, newY);
- rect.x2 = min(oldX2, newX2);
- rect.y2 = min(oldY2, newY2);
-
- RL_DEBUG_MSG("RESIZE TOPLEVEL WINDOW with gravity %i ", gravity);
- RL_DEBUG_MSG("%d %d %d %d %d %d %d %d %d %d\n",
- oldX, oldY, oldW, oldH, oldBW,
- newX, newY, newW, newH, newBW);
-
- RootlessRedisplay(pWin);
-
- /* If gravity is true, then we need to have a way of recovering all
- the original bits in the window for when X rearranges the contents
- based on the various gravity settings. The obvious way is to just
- snapshot the entire backing store before resizing it, but that
- it slow on large windows.
-
- So the optimization here is to use the implementation's resize
- weighting options (if available) to allow us to reason about what
- is left in the backing store after the resize. We can then only
- copy what won't be there after the resize, and do a two-stage copy
- operation.
-
- Most of these optimizations are only applied when the top-left
- corner of the window is fixed, since that's the common case. They
- could probably be extended with some thought. */
-
- gResizeDeathCount = 0;
-
- if (gravity && weight == RL_GRAVITY_NORTH_WEST) {
- unsigned int code = 0;
-
- /* Top left corner is anchored. We never need to copy the
- entire window. */
-
- need_window_source = TRUE;
-
- /* These comparisons were chosen to avoid setting bits when the sizes
- are the same. (So the fastest case automatically gets taken when
- dimensions are unchanging.) */
-
- if (newW < oldW)
- code |= WIDTH_SMALLER;
- if (newH < oldH)
- code |= HEIGHT_SMALLER;
-
- if (((code ^ (code >> 1)) & 1) == 0) {
- /* Both dimensions are either getting larger, or both
- are getting smaller. No need to copy anything. */
-
- if (code == (WIDTH_SMALLER | HEIGHT_SMALLER)) {
- /* Since the window is getting smaller, we can do gravity
- repair on it with it's current size, then resize it
- afterwards. */
-
- resize_after = TRUE;
- }
-
- gResizeDeathCount = 1;
- }
- else {
- unsigned int copy_rowbytes, Bpp;
- unsigned int copy_rect_width, copy_rect_height;
- BoxRec copy_rect;
-
- /* We can get away with a partial copy. 'rect' is the
- intersection between old and new bounds, so copy
- everything to the right of or below the intersection. */
-
- RootlessStartDrawing(pWin);
-
- if (code == WIDTH_SMALLER) {
- copy_rect.x1 = rect.x2;
- copy_rect.y1 = rect.y1;
- copy_rect.x2 = oldX2;
- copy_rect.y2 = oldY2;
- }
- else if (code == HEIGHT_SMALLER) {
- copy_rect.x1 = rect.x1;
- copy_rect.y1 = rect.y2;
- copy_rect.x2 = oldX2;
- copy_rect.y2 = oldY2;
- }
- else
- abort();
-
- Bpp = winRec->win->drawable.bitsPerPixel / 8;
- copy_rect_width = copy_rect.x2 - copy_rect.x1;
- copy_rect_height = copy_rect.y2 - copy_rect.y1;
- copy_rowbytes = ((copy_rect_width * Bpp) + 31) & ~31;
- gResizeDeathBits = xalloc(copy_rowbytes
- * copy_rect_height);
-
- if (copy_rect_width * copy_rect_height >
- rootless_CopyBytes_threshold &&
- SCREENREC(pScreen)->imp->CopyBytes)
- {
- SCREENREC(pScreen)->imp->CopyBytes(
- copy_rect_width * Bpp, copy_rect_height,
- ((char *) winRec->pixelData)
- + ((copy_rect.y1 - oldY) * winRec->bytesPerRow)
- + (copy_rect.x1 - oldX) * Bpp, winRec->bytesPerRow,
- gResizeDeathBits, copy_rowbytes);
- } else {
- fbBlt((FbBits *) (winRec->pixelData
- + ((copy_rect.y1 - oldY) * winRec->bytesPerRow)
- + (copy_rect.x1 - oldX) * Bpp),
- winRec->bytesPerRow / sizeof(FbBits), 0,
- (FbBits *) gResizeDeathBits,
- copy_rowbytes / sizeof(FbBits), 0,
- copy_rect_width * Bpp, copy_rect_height,
- GXcopy, FB_ALLONES, Bpp, 0, 0);
- }
-
- gResizeDeathBounds[1] = copy_rect;
- gResizeDeathPix[1]
- = GetScratchPixmapHeader(pScreen, copy_rect_width,
- copy_rect_height,
- winRec->win->drawable.depth,
- winRec->win->drawable.bitsPerPixel,
- winRec->bytesPerRow,
- (void *) gResizeDeathBits);
-
- SetPixmapBaseToScreen(gResizeDeathPix[1],
- copy_rect.x1, copy_rect.y1);
-
- gResizeDeathCount = 2;
- }
- }
- else if (gravity) {
- /* The general case. Just copy everything. */
-
- RootlessStartDrawing(pWin);
-
- gResizeDeathBits = xalloc(winRec->bytesPerRow * winRec->height);
-
- memcpy(gResizeDeathBits, winRec->pixelData,
- winRec->bytesPerRow * winRec->height);
-
- gResizeDeathBounds[0] = (BoxRec) {oldX, oldY, oldX2, oldY2};
- gResizeDeathPix[0]
- = GetScratchPixmapHeader(pScreen, winRec->width,
- winRec->height,
- winRec->win->drawable.depth,
- winRec->win->drawable.bitsPerPixel,
- winRec->bytesPerRow,
- (void *) gResizeDeathBits);
-
- SetPixmapBaseToScreen(gResizeDeathPix[0], oldX, oldY);
- gResizeDeathCount = 1;
- }
-
- RootlessStopDrawing(pWin, FALSE);
-
- winRec->x = newX;
- winRec->y = newY;
- winRec->width = newW;
- winRec->height = newH;
- winRec->borderWidth = newBW;
-
- /* Unless both dimensions are getting smaller, Resize the frame
- before doing gravity repair */
-
- if (!resize_after) {
- SCREENREC(pScreen)->imp->ResizeFrame(winRec->wid, pScreen,
- newX + SCREEN_TO_GLOBAL_X,
- newY + SCREEN_TO_GLOBAL_Y,
- newW, newH, weight);
- }
-
- RootlessStartDrawing(pWin);
-
- /* If necessary, create a source pixmap pointing at the current
- window bits. */
-
- if (need_window_source) {
- gResizeDeathBounds[0] = (BoxRec) {oldX, oldY, oldX2, oldY2};
- gResizeDeathPix[0]
- = GetScratchPixmapHeader(pScreen, oldW, oldH,
- winRec->win->drawable.depth,
- winRec->win->drawable.bitsPerPixel,
- winRec->bytesPerRow, winRec->pixelData);
-
- SetPixmapBaseToScreen(gResizeDeathPix[0], oldX, oldY);
- }
-
- /* Use custom CopyWindow when moving gravity bits around
- ResizeWindow assumes the old window contents are in the same
- pixmap, but here they're in deathPix instead. */
-
- if (gravity) {
- gResizeOldCopyWindowProc = pScreen->CopyWindow;
- pScreen->CopyWindow = RootlessResizeCopyWindow;
- }
-
- /* If we can't rely on the window server preserving the bits we
- need in the position we need, copy the pixels in the
- intersection from src to dst. ResizeWindow assumes these pixels
- are already present when making gravity adjustments. pWin
- currently has new-sized pixmap but is in old position.
-
- FIXME: border width change! (?) */
-
- if (gravity && weight == RL_GRAVITY_NONE) {
- PixmapPtr src, dst;
-
- assert(gResizeDeathCount == 1);
-
- src = gResizeDeathPix[0];
- dst = pScreen->GetWindowPixmap(pWin);
-
- RL_DEBUG_MSG("Resize copy rect %d %d %d %d\n",
- rect.x1, rect.y1, rect.x2, rect.y2);
-
- /* rect is the intersection of the old location and new location */
- if (BOX_NOT_EMPTY(rect) && src != NULL && dst != NULL) {
- /* The window drawable still has the old frame position, which
- means that DST doesn't actually point at the origin of our
- physical backing store when adjusted by the drawable.x,y
- position. So sneakily adjust it temporarily while copying.. */
-
- ((PixmapPtr) dst)->devPrivate.ptr = winRec->pixelData;
- SetPixmapBaseToScreen(dst, newX, newY);
-
- fbCopyWindowProc(&src->drawable, &dst->drawable, NULL,
- &rect, 1, 0, 0, FALSE, FALSE, 0, 0);
-
- ((PixmapPtr) dst)->devPrivate.ptr = winRec->pixelData;
- SetPixmapBaseToScreen(dst, oldX, oldY);
- }
- }
-
- return resize_after;
-}
-
-
-static void
-FinishFrameResize(WindowPtr pWin, Bool gravity, int oldX, int oldY,
- unsigned int oldW, unsigned int oldH, unsigned int oldBW,
- int newX, int newY, unsigned int newW, unsigned int newH,
- unsigned int newBW, Bool resize_now)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RootlessWindowRec *winRec = WINREC(pWin);
- int i;
-
- RootlessStopDrawing(pWin, FALSE);
-
- if (resize_now) {
- unsigned int weight;
-
- /* We didn't resize anything earlier, so do it now, now that
- we've finished gravitating the bits. */
-
- weight = ResizeWeighting(oldX, oldY, oldW, oldH, oldBW,
- newX, newY, newW, newH, newBW);
-
- SCREENREC(pScreen)->imp->ResizeFrame(winRec->wid, pScreen,
- newX + SCREEN_TO_GLOBAL_X,
- newY + SCREEN_TO_GLOBAL_Y,
- newW, newH, weight);
- }
-
- /* Redraw everything. FIXME: there must be times when we don't need
- to do this. Perhaps when top-left weighting and no gravity? */
-
- RootlessDamageRect(pWin, -newBW, -newBW, newW, newH);
-
- for (i = 0; i < 2; i++) {
- if (gResizeDeathPix[i] != NULL) {
- FreeScratchPixmapHeader(gResizeDeathPix[i]);
- gResizeDeathPix[i] = NULL;
- }
- }
-
- if (gResizeDeathBits != NULL) {
- xfree(gResizeDeathBits);
- gResizeDeathBits = NULL;
- }
-
- if (gravity) {
- pScreen->CopyWindow = gResizeOldCopyWindowProc;
- }
-}
-
-
-/*
- * RootlessMoveWindow
- * If kind==VTOther, window border is resizing (and borderWidth is
- * already changed!!@#$) This case works like window resize, not move.
- */
-void
-RootlessMoveWindow(WindowPtr pWin, int x, int y, WindowPtr pSib, VTKind kind)
-{
- RootlessWindowRec *winRec = WINREC(pWin);
- ScreenPtr pScreen = pWin->drawable.pScreen;
- CopyWindowProcPtr oldCopyWindowProc = NULL;
- int oldX = 0, oldY = 0, newX = 0, newY = 0;
- unsigned int oldW = 0, oldH = 0, oldBW = 0;
- unsigned int newW = 0, newH = 0, newBW = 0;
- Bool resize_after = FALSE;
- RegionRec saveRoot;
-
- RL_DEBUG_MSG("movewindow start \n");
-
- if (winRec) {
- if (kind == VTMove) {
- oldX = winRec->x;
- oldY = winRec->y;
- RootlessRedisplay(pWin);
- RootlessStartDrawing(pWin);
- } else {
- RL_DEBUG_MSG("movewindow border resizing ");
-
- oldBW = winRec->borderWidth;
- oldX = winRec->x;
- oldY = winRec->y;
- oldW = winRec->width;
- oldH = winRec->height;
-
- newBW = wBorderWidth(pWin);
- newX = x;
- newY = y;
- newW = pWin->drawable.width + 2*newBW;
- newH = pWin->drawable.height + 2*newBW;
-
- resize_after = StartFrameResize(pWin, FALSE,
- oldX, oldY, oldW, oldH, oldBW,
- newX, newY, newW, newH, newBW);
- }
- }
-
- HUGE_ROOT(pWin);
- SCREEN_UNWRAP(pScreen, MoveWindow);
-
- if (winRec) {
- oldCopyWindowProc = pScreen->CopyWindow;
- pScreen->CopyWindow = RootlessNoCopyWindow;
- }
- pScreen->MoveWindow(pWin, x, y, pSib, kind);
- if (winRec) {
- pScreen->CopyWindow = oldCopyWindowProc;
- }
-
- NORMAL_ROOT(pWin);
- SCREEN_WRAP(pScreen, MoveWindow);
-
- if (winRec) {
- if (kind == VTMove) {
- winRec->x = x;
- winRec->y = y;
- RootlessStopDrawing(pWin, FALSE);
- SCREENREC(pScreen)->imp->MoveFrame(winRec->wid, pScreen,
- x + SCREEN_TO_GLOBAL_X,
- y + SCREEN_TO_GLOBAL_Y);
- } else {
- FinishFrameResize(pWin, FALSE, oldX, oldY, oldW, oldH, oldBW,
- newX, newY, newW, newH, newBW, resize_after);
- }
- }
-
- RL_DEBUG_MSG("movewindow end\n");
-}
-
-
-/*
- * RootlessResizeWindow
- * Note: (x, y, w, h) as passed to this procedure don't match the frame
- * definition. (x,y) is corner of very outer edge, *outside* border.
- * w,h is width and height *inside* border, *ignoring* border width.
- * The rect (x, y, w, h) doesn't mean anything. (x, y, w+2*bw, h+2*bw)
- * is total rect and (x+bw, y+bw, w, h) is inner rect.
- */
-void
-RootlessResizeWindow(WindowPtr pWin, int x, int y,
- unsigned int w, unsigned int h, WindowPtr pSib)
-{
- RootlessWindowRec *winRec = WINREC(pWin);
- ScreenPtr pScreen = pWin->drawable.pScreen;
- int oldX = 0, oldY = 0, newX = 0, newY = 0;
- unsigned int oldW = 0, oldH = 0, oldBW = 0, newW = 0, newH = 0, newBW = 0;
- Bool resize_after = FALSE;
- RegionRec saveRoot;
-
- RL_DEBUG_MSG("resizewindow start (win 0x%x) ", pWin);
-
- if (winRec) {
- oldBW = winRec->borderWidth;
- oldX = winRec->x;
- oldY = winRec->y;
- oldW = winRec->width;
- oldH = winRec->height;
-
- newBW = oldBW;
- newX = x;
- newY = y;
- newW = w + 2*newBW;
- newH = h + 2*newBW;
-
- resize_after = StartFrameResize(pWin, TRUE,
- oldX, oldY, oldW, oldH, oldBW,
- newX, newY, newW, newH, newBW);
- }
-
- HUGE_ROOT(pWin);
- SCREEN_UNWRAP(pScreen, ResizeWindow);
- pScreen->ResizeWindow(pWin, x, y, w, h, pSib);
- SCREEN_WRAP(pScreen, ResizeWindow);
- NORMAL_ROOT(pWin);
-
- if (winRec) {
- FinishFrameResize(pWin, TRUE, oldX, oldY, oldW, oldH, oldBW,
- newX, newY, newW, newH, newBW, resize_after);
- }
-
- RL_DEBUG_MSG("resizewindow end\n");
-}
-
-
-/*
- * RootlessRepositionWindow
- * Called by the implementation when a window needs to be repositioned to
- * its correct location on the screen. This routine is typically needed
- * due to changes in the underlying window system, such as a screen layout
- * change.
- */
-void
-RootlessRepositionWindow(WindowPtr pWin)
-{
- RootlessWindowRec *winRec = WINREC(pWin);
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- if (winRec == NULL)
- return;
-
- RootlessStopDrawing(pWin, FALSE);
- SCREENREC(pScreen)->imp->MoveFrame(winRec->wid, pScreen,
- winRec->x + SCREEN_TO_GLOBAL_X,
- winRec->y + SCREEN_TO_GLOBAL_Y);
-
- RootlessReorderWindow(pWin);
-}
-
-
-/*
- * RootlessReparentWindow
- * Called after a window has been reparented. Generally windows are not
- * framed until they are mapped. However, a window may be framed early by the
- * implementation calling RootlessFrameForWindow. (e.g. this could be needed
- * to attach a VRAM surface to it.) If the window is subsequently reparented
- * by the window manager before being mapped, we need to give the frame to
- * the new top-level window.
- */
-void
-RootlessReparentWindow(WindowPtr pWin, WindowPtr pPriorParent)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RootlessWindowRec *winRec = WINREC(pWin);
- WindowPtr pTopWin;
-
- /* Check that window is not top-level now, but used to be. */
- if (IsRoot(pWin) || IsRoot(pWin->parent)
- || IsTopLevel(pWin) || winRec == NULL)
- {
- goto out;
- }
-
- /* If the formerly top-level window has a frame, we want to give the
- frame to its new top-level parent. If we can't do that, we'll just
- have to jettison it... */
-
- pTopWin = TopLevelParent(pWin);
- assert(pTopWin != pWin);
-
- if (WINREC(pTopWin) != NULL) {
- /* We're screwed. */
- RootlessDestroyFrame(pWin, winRec);
- } else {
- if (!pTopWin->realized && pWin->realized) {
- SCREENREC(pScreen)->imp->UnmapFrame(winRec->wid);
- }
-
- /* Switch the frame record from one to the other. */
-
- WINREC(pWin) = NULL;
- WINREC(pTopWin) = winRec;
-
- RootlessInitializeFrame(pTopWin, winRec);
- RootlessReshapeFrame(pTopWin);
-
- SCREENREC(pScreen)->imp->ResizeFrame(winRec->wid, pScreen,
- winRec->x + SCREEN_TO_GLOBAL_X,
- winRec->y + SCREEN_TO_GLOBAL_Y,
- winRec->width, winRec->height,
- RL_GRAVITY_NONE);
-
- if (SCREENREC(pScreen)->imp->SwitchWindow) {
- SCREENREC(pScreen)->imp->SwitchWindow(winRec, pWin);
- }
-
- if (pTopWin->realized && !pWin->realized)
- winRec->is_reorder_pending = TRUE;
- }
-
-out:
- if (SCREENREC(pScreen)->ReparentWindow) {
- SCREEN_UNWRAP(pScreen, ReparentWindow);
- pScreen->ReparentWindow(pWin, pPriorParent);
- SCREEN_WRAP(pScreen, ReparentWindow);
- }
-}
-
-
-/*
- * SetPixmapOfAncestors
- * Set the Pixmaps on all ParentRelative windows up the ancestor chain.
- */
-static void
-SetPixmapOfAncestors(WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- WindowPtr topWin = TopLevelParent(pWin);
- RootlessWindowRec *topWinRec = WINREC(topWin);
-
- while (pWin->backgroundState == ParentRelative) {
- if (pWin == topWin) {
- // disallow ParentRelative background state on top level
- XID pixel = 0;
- ChangeWindowAttributes(pWin, CWBackPixel, &pixel, serverClient);
- RL_DEBUG_MSG("Cleared ParentRelative on 0x%x.\n", pWin);
- break;
- }
-
- pWin = pWin->parent;
- pScreen->SetWindowPixmap(pWin, topWinRec->pixmap);
- }
-}
-
-
-/*
- * RootlessPaintWindowBackground
- */
-void
-RootlessPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion, int what)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- if (IsRoot(pWin))
- return;
-
- RL_DEBUG_MSG("paintwindowbackground start (win 0x%x, framed %i) ",
- pWin, IsFramedWindow(pWin));
-
- if (IsFramedWindow(pWin)) {
- RootlessStartDrawing(pWin);
- RootlessDamageRegion(pWin, pRegion);
-
- // For ParentRelative windows, we have to make sure the window
- // pixmap is set correctly all the way up the ancestor chain.
- if (pWin->backgroundState == ParentRelative) {
- SetPixmapOfAncestors(pWin);
- }
- }
-
- SCREEN_UNWRAP(pScreen, PaintWindowBackground);
- pScreen->PaintWindowBackground(pWin, pRegion, what);
- SCREEN_WRAP(pScreen, PaintWindowBackground);
-
- RL_DEBUG_MSG("paintwindowbackground end\n");
-}
-
-
-/*
- * RootlessPaintWindowBorder
- */
-void
-RootlessPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion, int what)
-{
- RL_DEBUG_MSG("paintwindowborder start (win 0x%x) ", pWin);
-
- if (IsFramedWindow(pWin)) {
- RootlessStartDrawing(pWin);
- RootlessDamageRegion(pWin, pRegion);
-
- // For ParentRelative windows with tiled borders, we have to make
- // sure the window pixmap is set correctly all the way up the
- // ancestor chain.
- if (!pWin->borderIsPixel &&
- pWin->backgroundState == ParentRelative)
- {
- SetPixmapOfAncestors(pWin);
- }
- }
-
- SCREEN_UNWRAP(pWin->drawable.pScreen, PaintWindowBorder);
- pWin->drawable.pScreen->PaintWindowBorder(pWin, pRegion, what);
- SCREEN_WRAP(pWin->drawable.pScreen, PaintWindowBorder);
-
- RL_DEBUG_MSG("paintwindowborder end\n");
-}
-
-
-/*
- * RootlessChangeBorderWidth
- * FIXME: untested!
- * pWin inside corner stays the same; pWin->drawable.[xy] stays the same
- * Frame moves and resizes.
- */
-void
-RootlessChangeBorderWidth(WindowPtr pWin, unsigned int width)
-{
- RegionRec saveRoot;
- Bool resize_after = FALSE;
-
- RL_DEBUG_MSG("change border width ");
-
- if (width != wBorderWidth(pWin)) {
- RootlessWindowRec *winRec = WINREC(pWin);
- int oldX = 0, oldY = 0, newX = 0, newY = 0;
- unsigned int oldW = 0, oldH = 0, oldBW = 0;
- unsigned int newW = 0, newH = 0, newBW = 0;
-
- if (winRec) {
- oldBW = winRec->borderWidth;
- oldX = winRec->x;
- oldY = winRec->y;
- oldW = winRec->width;
- oldH = winRec->height;
-
- newBW = width;
- newX = pWin->drawable.x - newBW;
- newY = pWin->drawable.y - newBW;
- newW = pWin->drawable.width + 2*newBW;
- newH = pWin->drawable.height + 2*newBW;
-
- resize_after = StartFrameResize(pWin, FALSE,
- oldX, oldY, oldW, oldH, oldBW,
- newX, newY, newW, newH, newBW);
- }
-
- HUGE_ROOT(pWin);
- SCREEN_UNWRAP(pWin->drawable.pScreen, ChangeBorderWidth);
- pWin->drawable.pScreen->ChangeBorderWidth(pWin, width);
- SCREEN_WRAP(pWin->drawable.pScreen, ChangeBorderWidth);
- NORMAL_ROOT(pWin);
-
- if (winRec) {
- FinishFrameResize(pWin, FALSE, oldX, oldY, oldW, oldH, oldBW,
- newX, newY, newW, newH, newBW, resize_after);
- }
- }
-
- RL_DEBUG_MSG("change border width end\n");
-}
diff --git a/nx-X11/programs/Xserver/miext/rootless/rootlessWindow.h b/nx-X11/programs/Xserver/miext/rootless/rootlessWindow.h
deleted file mode 100644
index 9cceed347..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/rootlessWindow.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Rootless window management
- */
-/*
- * Copyright (c) 2001 Greg Parker. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/miext/rootless/rootlessWindow.h,v 1.1 2003/04/15 01:05:44 torrey Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _ROOTLESSWINDOW_H
-#define _ROOTLESSWINDOW_H
-
-#include "rootlessCommon.h"
-
-
-Bool RootlessCreateWindow(WindowPtr pWin);
-Bool RootlessDestroyWindow(WindowPtr pWin);
-
-#ifdef SHAPE
-void RootlessSetShape(WindowPtr pWin);
-#endif // SHAPE
-
-Bool RootlessChangeWindowAttributes(WindowPtr pWin, unsigned long vmask);
-Bool RootlessPositionWindow(WindowPtr pWin, int x, int y);
-Bool RootlessRealizeWindow(WindowPtr pWin);
-Bool RootlessUnrealizeWindow(WindowPtr pWin);
-void RootlessRestackWindow(WindowPtr pWin, WindowPtr pOldNextSib);
-void RootlessCopyWindow(WindowPtr pWin,DDXPointRec ptOldOrg,RegionPtr prgnSrc);
-void RootlessMoveWindow(WindowPtr pWin,int x,int y,WindowPtr pSib,VTKind kind);
-void RootlessResizeWindow(WindowPtr pWin, int x, int y,
- unsigned int w, unsigned int h, WindowPtr pSib);
-void RootlessReparentWindow(WindowPtr pWin, WindowPtr pPriorParent);
-void RootlessPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion,
- int what);
-void RootlessPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion,
- int what);
-void RootlessChangeBorderWidth(WindowPtr pWin, unsigned int width);
-
-#endif
diff --git a/nx-X11/programs/Xserver/miext/rootless/safeAlpha/Imakefile b/nx-X11/programs/Xserver/miext/rootless/safeAlpha/Imakefile
deleted file mode 100644
index bb14bb146..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/safeAlpha/Imakefile
+++ /dev/null
@@ -1,18 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/miext/rootless/Imakefile,v 1.1 2003/04/15 01:05:44 torrey Exp $
-
-#include <Server.tmpl>
-
-SRCS = safeAlphaPicture.c \
- safeAlphaWindow.c
-
-OBJS = safeAlphaPicture.o \
- safeAlphaWindow.o
-
- INCLUDES = -I. -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(SERVERSRC)/render \
- -I$(EXTINCSRC) -I$(SERVERSRC)/Xext -I..
-
-NormalLibraryObjectRule()
-LibraryModuleTarget(safeAlpha,$(OBJS))
-
-DependTarget()
diff --git a/nx-X11/programs/Xserver/miext/rootless/safeAlpha/safeAlpha.h b/nx-X11/programs/Xserver/miext/rootless/safeAlpha/safeAlpha.h
deleted file mode 100644
index 63922aeec..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/safeAlpha/safeAlpha.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Replacement functions to protect the alpha channel
- */
-/*
- * Copyright (c) 2002-2003 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* $XFree86: xc/programs/Xserver/miext/rootless/safeAlpha/safeAlpha.h,v 1.2 2003/10/18 00:00:34 torrey Exp $ */
-
-#ifndef _SAFEALPHA_H
-#define _SAFEALPHA_H
-
-#include "picturestr.h"
-
-void SafeAlphaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what);
-
-#ifdef RENDER
-void
-SafeAlphaComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
- INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask,
- INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
-#endif /* RENDER */
-
-#endif /* _SAFEALPHA_H */
diff --git a/nx-X11/programs/Xserver/miext/rootless/safeAlpha/safeAlphaPicture.c b/nx-X11/programs/Xserver/miext/rootless/safeAlpha/safeAlphaPicture.c
deleted file mode 100644
index f73a3b5c1..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/safeAlpha/safeAlphaPicture.c
+++ /dev/null
@@ -1,643 +0,0 @@
-/*
- * Support for RENDER extension while protecting the alpha channel
- */
-/*
- * Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved.
- * Copyright (c) 2002 Apple Computer, Inc. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* This file is largely based on fbcompose.c and fbpict.c, which contain
- * the following copyright:
- *
- * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
- */
- /* $XFree86: xc/programs/Xserver/miext/rootless/safeAlpha/safeAlphaPicture.c,v 1.3 2003/10/24 00:33:15 torrey Exp $ */
-
-#ifdef RENDER
-
-#include "fb.h"
-#include "picturestr.h"
-#include "mipict.h"
-#include "fbpict.h"
-#include "safeAlpha.h"
-#include "rootlessCommon.h"
-
-# define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b))
-
-
-typedef void (*CompositeFunc) (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pMask,
- PicturePtr pDst,
- INT16 xSrc,
- INT16 ySrc,
- INT16 xMask,
- INT16 yMask,
- INT16 xDst,
- INT16 yDst,
- CARD16 width,
- CARD16 height);
-
-
-/* Optimized version of fbCompositeSolidMask_nx8x8888 */
-void
-SafeAlphaCompositeSolidMask_nx8x8888(
- CARD8 op,
- PicturePtr pSrc,
- PicturePtr pMask,
- PicturePtr pDst,
- INT16 xSrc,
- INT16 ySrc,
- INT16 xMask,
- INT16 yMask,
- INT16 xDst,
- INT16 yDst,
- CARD16 width,
- CARD16 height)
-{
- CARD32 src, srca;
- CARD32 *dstLine, *dst, d, dstMask;
- CARD8 *maskLine, *mask, m;
- FbStride dstStride, maskStride;
- CARD16 w;
-
- fbComposeGetSolid(pSrc, src, pDst->format);
-
- dstMask = FbFullMask (pDst->pDrawable->depth);
- srca = src >> 24;
- if (src == 0)
- return;
-
- fbComposeGetStart (pDst, xDst, yDst, CARD32, dstStride, dstLine, 1);
- fbComposeGetStart (pMask, xMask, yMask, CARD8, maskStride, maskLine, 1);
-
- if (dstMask == FB_ALLONES && pDst->pDrawable->bitsPerPixel == 32 &&
- width * height > rootless_CompositePixels_threshold &&
- SCREENREC(pDst->pDrawable->pScreen)->imp->CompositePixels)
- {
- void *srcp[2], *destp[2];
- unsigned int dest_rowbytes[2];
- unsigned int fn;
-
- srcp[0] = &src; srcp[1] = &src;
- /* null rowbytes pointer means use first value as a constant */
- destp[0] = dstLine; destp[1] = dstLine;
- dest_rowbytes[0] = dstStride * 4; dest_rowbytes[1] = dest_rowbytes[0];
- fn = RL_COMPOSITE_FUNCTION(RL_COMPOSITE_OVER, RL_DEPTH_ARGB8888,
- RL_DEPTH_A8, RL_DEPTH_ARGB8888);
-
- if (SCREENREC(pDst->pDrawable->pScreen)->imp->CompositePixels(
- width, height, fn, srcp, NULL,
- maskLine, maskStride,
- destp, dest_rowbytes) == Success)
- {
- return;
- }
- }
-
- while (height--)
- {
- dst = dstLine;
- dstLine += dstStride;
- mask = maskLine;
- maskLine += maskStride;
- w = width;
-
- while (w--)
- {
- m = *mask++;
- if (m == 0xff)
- {
- if (srca == 0xff)
- *dst = src & dstMask;
- else
- *dst = fbOver (src, *dst) & dstMask;
- }
- else if (m)
- {
- d = fbIn (src, m);
- *dst = fbOver (d, *dst) & dstMask;
- }
- dst++;
- }
- }
-}
-
-void
-SafeAlphaComposite (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pMask,
- PicturePtr pDst,
- INT16 xSrc,
- INT16 ySrc,
- INT16 xMask,
- INT16 yMask,
- INT16 xDst,
- INT16 yDst,
- CARD16 width,
- CARD16 height)
-{
- RegionRec region;
- int n;
- BoxPtr pbox;
- CompositeFunc func = 0;
- Bool srcRepeat = pSrc->repeat;
- Bool maskRepeat = FALSE;
- Bool srcAlphaMap = pSrc->alphaMap != 0;
- Bool maskAlphaMap = FALSE;
- Bool dstAlphaMap = pDst->alphaMap != 0;
- int x_msk, y_msk, x_src, y_src, x_dst, y_dst;
- int w, h, w_this, h_this;
- int dstDepth = pDst->pDrawable->depth;
- int oldFormat = pDst->format;
-
- xDst += pDst->pDrawable->x;
- yDst += pDst->pDrawable->y;
- xSrc += pSrc->pDrawable->x;
- ySrc += pSrc->pDrawable->y;
- if (pMask)
- {
- xMask += pMask->pDrawable->x;
- yMask += pMask->pDrawable->y;
- maskRepeat = pMask->repeat;
- maskAlphaMap = pMask->alphaMap != 0;
- }
-
-
- /*
- * We can use the more optimized fbpict code, but it sets bits above
- * the depth to zero. Temporarily adjust destination depth if needed.
- */
- if (pDst->pDrawable->type == DRAWABLE_WINDOW
- && pDst->pDrawable->depth == 24
- && pDst->pDrawable->bitsPerPixel == 32)
- {
- pDst->pDrawable->depth = 32;
- }
- /* For rootless preserve the alpha in x8r8g8b8 which really is
- * a8r8g8b8
- */
- if (oldFormat == PICT_x8r8g8b8)
- {
- pDst->format = PICT_a8r8g8b8;
- }
-
-
-
- if (!pSrc->transform && !(pMask && pMask->transform))
- if (!maskAlphaMap && !srcAlphaMap && !dstAlphaMap)
- switch (op) {
- case PictOpSrc:
-#ifdef USE_MMX
- if (!pMask && pSrc->format == pDst->format &&
- pSrc->pDrawable != pDst->pDrawable)
- {
- func = fbCompositeCopyAreammx;
- }
-#endif
- break;
- case PictOpOver:
- if (pMask)
- {
- if (srcRepeat &&
- pSrc->pDrawable->width == 1 &&
- pSrc->pDrawable->height == 1)
- {
- srcRepeat = FALSE;
- if (PICT_FORMAT_COLOR(pSrc->format)) {
- switch (pMask->format) {
- case PICT_a8:
- switch (pDst->format) {
- case PICT_r5g6b5:
- case PICT_b5g6r5:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSolidMask_nx8x0565mmx;
- else
-#endif
- func = fbCompositeSolidMask_nx8x0565;
- break;
- case PICT_r8g8b8:
- case PICT_b8g8r8:
- func = fbCompositeSolidMask_nx8x0888;
- break;
- case PICT_a8r8g8b8:
- case PICT_x8r8g8b8:
- case PICT_a8b8g8r8:
- case PICT_x8b8g8r8:
- func = SafeAlphaCompositeSolidMask_nx8x8888;
- break;
- }
- break;
- case PICT_a8r8g8b8:
- if (pMask->componentAlpha) {
- switch (pDst->format) {
- case PICT_a8r8g8b8:
- case PICT_x8r8g8b8:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSolidMask_nx8888x8888Cmmx;
- else
-#endif
- func = fbCompositeSolidMask_nx8888x8888C;
- break;
- case PICT_r5g6b5:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSolidMask_nx8888x0565Cmmx;
- else
-#endif
- func = fbCompositeSolidMask_nx8888x0565C;
- break;
- }
- }
- break;
- case PICT_a8b8g8r8:
- if (pMask->componentAlpha) {
- switch (pDst->format) {
- case PICT_a8b8g8r8:
- case PICT_x8b8g8r8:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSolidMask_nx8888x8888Cmmx;
- else
-#endif
- func = fbCompositeSolidMask_nx8888x8888C;
- break;
- case PICT_b5g6r5:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSolidMask_nx8888x0565Cmmx;
- else
-#endif
- func = fbCompositeSolidMask_nx8888x0565C;
- break;
- }
- }
- break;
- case PICT_a1:
- switch (pDst->format) {
- case PICT_r5g6b5:
- case PICT_b5g6r5:
- case PICT_r8g8b8:
- case PICT_b8g8r8:
- case PICT_a8r8g8b8:
- case PICT_x8r8g8b8:
- case PICT_a8b8g8r8:
- case PICT_x8b8g8r8:
- func = fbCompositeSolidMask_nx1xn;
- break;
- }
- break;
- }
- }
- }
- else /* has mask and non-repeating source */
- {
- if (pSrc->pDrawable == pMask->pDrawable &&
- xSrc == xMask && ySrc == yMask &&
- !pMask->componentAlpha)
- {
- /* source == mask: non-premultiplied data */
- switch (pSrc->format) {
- case PICT_x8b8g8r8:
- switch (pMask->format) {
- case PICT_a8r8g8b8:
- case PICT_a8b8g8r8:
- switch (pDst->format) {
- case PICT_a8r8g8b8:
- case PICT_x8r8g8b8:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSrc_8888RevNPx8888mmx;
-#endif
- break;
- case PICT_r5g6b5:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSrc_8888RevNPx0565mmx;
-#endif
- break;
- }
- break;
- }
- break;
- case PICT_x8r8g8b8:
- switch (pMask->format) {
- case PICT_a8r8g8b8:
- case PICT_a8b8g8r8:
- switch (pDst->format) {
- case PICT_a8b8g8r8:
- case PICT_x8b8g8r8:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSrc_8888RevNPx8888mmx;
-#endif
- break;
- case PICT_r5g6b5:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSrc_8888RevNPx0565mmx;
-#endif
- break;
- }
- break;
- }
- break;
- }
- break;
- }
- else
- {
- /* non-repeating source, repeating mask => translucent window */
- if (maskRepeat &&
- pMask->pDrawable->width == 1 &&
- pMask->pDrawable->height == 1)
- {
- if (pSrc->format == PICT_x8r8g8b8 &&
- pDst->format == PICT_x8r8g8b8 &&
- pMask->format == PICT_a8)
- {
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSrc_8888x8x8888mmx;
-#endif
- }
- }
- }
- }
- }
- else /* no mask */
- {
- if (srcRepeat &&
- pSrc->pDrawable->width == 1 &&
- pSrc->pDrawable->height == 1)
- {
- /* no mask and repeating source */
- switch (pSrc->format) {
- case PICT_a8r8g8b8:
- switch (pDst->format) {
- case PICT_a8r8g8b8:
- case PICT_x8r8g8b8:
-#ifdef USE_MMX
- if (fbHaveMMX())
- {
- srcRepeat = FALSE;
- func = fbCompositeSolid_nx8888mmx;
- }
-#endif
- break;
- case PICT_r5g6b5:
-#ifdef USE_MMX
- if (fbHaveMMX())
- {
- srcRepeat = FALSE;
- func = fbCompositeSolid_nx0565mmx;
- }
-#endif
- break;
- }
- break;
- }
- }
- else
- {
- switch (pSrc->format) {
- case PICT_a8r8g8b8:
- switch (pDst->format) {
- case PICT_a8r8g8b8:
- case PICT_x8r8g8b8:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSrc_8888x8888mmx;
- else
-#endif
- func = fbCompositeSrc_8888x8888;
- break;
- case PICT_r8g8b8:
- func = fbCompositeSrc_8888x0888;
- break;
- case PICT_r5g6b5:
- func = fbCompositeSrc_8888x0565;
- break;
- }
- break;
- case PICT_x8r8g8b8:
- switch (pDst->format) {
- case PICT_a8r8g8b8:
- case PICT_x8r8g8b8:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeCopyAreammx;
-#endif
- break;
- }
- case PICT_x8b8g8r8:
- switch (pDst->format) {
- case PICT_a8b8g8r8:
- case PICT_x8b8g8r8:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeCopyAreammx;
-#endif
- break;
- }
- break;
- case PICT_a8b8g8r8:
- switch (pDst->format) {
- case PICT_a8b8g8r8:
- case PICT_x8b8g8r8:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSrc_8888x8888mmx;
- else
-#endif
- func = fbCompositeSrc_8888x8888;
- break;
- case PICT_b8g8r8:
- func = fbCompositeSrc_8888x0888;
- break;
- case PICT_b5g6r5:
- func = fbCompositeSrc_8888x0565;
- break;
- }
- break;
- case PICT_r5g6b5:
- switch (pDst->format) {
- case PICT_r5g6b5:
- func = fbCompositeSrc_0565x0565;
- break;
- }
- break;
- case PICT_b5g6r5:
- switch (pDst->format) {
- case PICT_b5g6r5:
- func = fbCompositeSrc_0565x0565;
- break;
- }
- break;
- }
- }
- }
- break;
- case PictOpAdd:
- if (pMask == 0)
- {
- switch (pSrc->format) {
- case PICT_a8r8g8b8:
- switch (pDst->format) {
- case PICT_a8r8g8b8:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSrcAdd_8888x8888mmx;
- else
-#endif
- func = fbCompositeSrcAdd_8888x8888;
- break;
- }
- break;
- case PICT_a8b8g8r8:
- switch (pDst->format) {
- case PICT_a8b8g8r8:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSrcAdd_8888x8888mmx;
- else
-#endif
- func = fbCompositeSrcAdd_8888x8888;
- break;
- }
- break;
- case PICT_a8:
- switch (pDst->format) {
- case PICT_a8:
-#ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSrcAdd_8000x8000mmx;
- else
-#endif
- func = fbCompositeSrcAdd_8000x8000;
- break;
- }
- break;
- case PICT_a1:
- switch (pDst->format) {
- case PICT_a1:
- func = fbCompositeSrcAdd_1000x1000;
- break;
- }
- break;
- }
- }
- break;
- }
-
- if (!func) {
- /* no fast path, use the general code */
- fbCompositeGeneral(op, pSrc, pMask, pDst, xSrc, ySrc, xMask, yMask, xDst, yDst, width, height);
- // Reset destination depth and format to their true value
- pDst->pDrawable->depth = dstDepth;
- pDst->format = oldFormat;
- return;
- }
-
- if (!miComputeCompositeRegion (&region,
- pSrc,
- pMask,
- pDst,
- xSrc,
- ySrc,
- xMask,
- yMask,
- xDst,
- yDst,
- width,
- height))
- return;
-
- n = REGION_NUM_RECTS (&region);
- pbox = REGION_RECTS (&region);
- while (n--)
- {
- h = pbox->y2 - pbox->y1;
- y_src = pbox->y1 - yDst + ySrc;
- y_msk = pbox->y1 - yDst + yMask;
- y_dst = pbox->y1;
- while (h)
- {
- h_this = h;
- w = pbox->x2 - pbox->x1;
- x_src = pbox->x1 - xDst + xSrc;
- x_msk = pbox->x1 - xDst + xMask;
- x_dst = pbox->x1;
- if (maskRepeat)
- {
- y_msk = mod (y_msk, pMask->pDrawable->height);
- if (h_this > pMask->pDrawable->height - y_msk)
- h_this = pMask->pDrawable->height - y_msk;
- }
- if (srcRepeat)
- {
- y_src = mod (y_src, pSrc->pDrawable->height);
- if (h_this > pSrc->pDrawable->height - y_src)
- h_this = pSrc->pDrawable->height - y_src;
- }
- while (w)
- {
- w_this = w;
- if (maskRepeat)
- {
- x_msk = mod (x_msk, pMask->pDrawable->width);
- if (w_this > pMask->pDrawable->width - x_msk)
- w_this = pMask->pDrawable->width - x_msk;
- }
- if (srcRepeat)
- {
- x_src = mod (x_src, pSrc->pDrawable->width);
- if (w_this > pSrc->pDrawable->width - x_src)
- w_this = pSrc->pDrawable->width - x_src;
- }
- (*func) (op, pSrc, pMask, pDst,
- x_src, y_src, x_msk, y_msk, x_dst, y_dst,
- w_this, h_this);
- w -= w_this;
- x_src += w_this;
- x_msk += w_this;
- x_dst += w_this;
- }
- h -= h_this;
- y_src += h_this;
- y_msk += h_this;
- y_dst += h_this;
- }
- pbox++;
- }
- REGION_UNINIT (pDst->pDrawable->pScreen, &region);
-
- // Reset destination depth/format to its true value
- pDst->pDrawable->depth = dstDepth;
- pDst->format = oldFormat;
-}
-
-#endif /* RENDER */
diff --git a/nx-X11/programs/Xserver/miext/rootless/safeAlpha/safeAlphaWindow.c b/nx-X11/programs/Xserver/miext/rootless/safeAlpha/safeAlphaWindow.c
deleted file mode 100644
index ff812385b..000000000
--- a/nx-X11/programs/Xserver/miext/rootless/safeAlpha/safeAlphaWindow.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/miext/rootless/safeAlpha/safeAlphaWindow.c,v 1.4 2005/07/01 22:43:42 daniels Exp $ */
-/*
- * Specialized window functions to protect the alpha channel
- */
-/*
- * Copyright (c) 2002-2003 Torrey T. Lyons. 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
- * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-/* Portions of this file are based on fbwindow.c, which contains the
- * following copyright:
- *
- * Copyright © 1998 Keith Packard
- */
-/* $XFree86: xc/programs/Xserver/miext/rootless/safeAlpha/safeAlphaWindow.c,v 1.1 2003/09/16 00:36:20 torrey Exp $ */
-
-#include "fb.h"
-#include "safeAlpha.h"
-#include "rootlessCommon.h"
-
-#ifdef PANORAMIX
-#include "panoramiX.h"
-#include "panoramiXsrv.h"
-#endif
-
-/*
- * SafeAlphaFillRegionTiled
- * Fill using a tile while leaving the alpha channel untouched.
- * Based on fbfillRegionTiled.
- */
-void
-SafeAlphaFillRegionTiled(
- DrawablePtr pDrawable,
- RegionPtr pRegion,
- PixmapPtr pTile)
-{
- FbBits *dst;
- FbStride dstStride;
- int dstBpp;
- int dstXoff, dstYoff;
- FbBits *tile;
- FbStride tileStride;
- int tileBpp;
- int tileXoff, tileYoff; /* XXX assumed to be zero */
- int tileWidth, tileHeight;
- int n = REGION_NUM_RECTS(pRegion);
- BoxPtr pbox = REGION_RECTS(pRegion);
- int xRot = pDrawable->x;
- int yRot = pDrawable->y;
- FbBits planeMask;
-
-#ifdef PANORAMIX
- if(!noPanoramiXExtension)
- {
- int index = pDrawable->pScreen->myNum;
- if(&WindowTable[index]->drawable == pDrawable)
- {
- xRot -= panoramiXdataPtr[index].x;
- yRot -= panoramiXdataPtr[index].y;
- }
- }
-#endif
- fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
- fbGetDrawable (&pTile->drawable, tile, tileStride, tileBpp,
- tileXoff, tileYoff);
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
- xRot += dstXoff;
- yRot += dstYoff;
- planeMask = FB_ALLONES & ~RootlessAlphaMask(dstBpp);
-
- while (n--)
- {
- fbTile (dst + (pbox->y1 + dstYoff) * dstStride,
- dstStride,
- (pbox->x1 + dstXoff) * dstBpp,
- (pbox->x2 - pbox->x1) * dstBpp,
- pbox->y2 - pbox->y1,
- tile,
- tileStride,
- tileWidth * dstBpp,
- tileHeight,
- GXcopy,
- planeMask,
- dstBpp,
- xRot * dstBpp,
- yRot - pbox->y1);
- pbox++;
- }
-}
-
-
-/*
- * SafeAlphaPaintWindow
- * Paint the window while filling in the alpha channel with all on.
- * We can't use fbPaintWindow because it zeros the alpha channel.
- */
-void
-SafeAlphaPaintWindow(
- WindowPtr pWin,
- RegionPtr pRegion,
- int what)
-{
- switch (what) {
- case PW_BACKGROUND:
-
- switch (pWin->backgroundState) {
- case None:
- break;
- case ParentRelative:
- do {
- pWin = pWin->parent;
- } while (pWin->backgroundState == ParentRelative);
- (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion,
- what);
- break;
- case BackgroundPixmap:
- SafeAlphaFillRegionTiled (&pWin->drawable,
- pRegion,
- pWin->background.pixmap);
- break;
- case BackgroundPixel:
- {
- Pixel pixel = pWin->background.pixel |
- RootlessAlphaMask(pWin->drawable.bitsPerPixel);
- fbFillRegionSolid (&pWin->drawable, pRegion, 0,
- fbReplicatePixel (pixel,
- pWin->drawable.bitsPerPixel));
- break;
- }
- }
- break;
- case PW_BORDER:
- if (pWin->borderIsPixel)
- {
- Pixel pixel = pWin->border.pixel |
- RootlessAlphaMask(pWin->drawable.bitsPerPixel);
- fbFillRegionSolid (&pWin->drawable, pRegion, 0,
- fbReplicatePixel (pixel,
- pWin->drawable.bitsPerPixel));
- }
- else
- {
- WindowPtr pBgWin;
- for (pBgWin = pWin; pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
-
- SafeAlphaFillRegionTiled (&pBgWin->drawable,
- pRegion,
- pWin->border.pixmap);
- }
- break;
- }
- fbValidateDrawable (&pWin->drawable);
-}
diff --git a/nx-X11/programs/Xserver/miext/shadow/Imakefile b/nx-X11/programs/Xserver/miext/shadow/Imakefile
deleted file mode 100644
index fd97ab1cc..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/Imakefile
+++ /dev/null
@@ -1,66 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/miext/shadow/Imakefile,v 1.6 2001/07/20 19:25:02 keithp Exp $
-XCOMM
-XCOMM
-
-#define IHaveModules
-#include <Server.tmpl>
-
-#if (defined (XFree86Version) || defined(XorgVersion))
-#if DoLoadableServer
-XFMODSRC = shmodule.c
-XFMODOBJ = shmodule.o
-#endif
-#endif
-
-SRCS = $(XFMODSRC) \
- shadow.c \
- shalloc.c \
- shplanar.c \
- shplanar8.c \
- shpacked.c \
- shrotate.c \
- shrot8pack_90.c \
- shrot8pack_180.c \
- shrot8pack_270.c \
- shrot16pack_90.c \
- shrot16pack_180.c \
- shrot16pack_270.c \
- shrot32pack_90.c \
- shrot32pack_180.c \
- shrot32pack_270.c
-
-OBJS = $(XFMODOBJ) \
- shadow.o \
- shalloc.o \
- shplanar.o \
- shplanar8.o \
- shpacked.o \
- shrotate.o \
- shrot8pack_90.o \
- shrot8pack_180.o \
- shrot8pack_270.o \
- shrot16pack_90.o \
- shrot16pack_180.o \
- shrot16pack_270.o \
- shrot32pack_90.o \
- shrot32pack_180.o \
- shrot32pack_270.o
-
- INCLUDES = -I. -I../../mi -I../../fb -I../../include -I$(XINCLUDESRC) \
- -I$(FONTINCSRC) -I$(XF86SRC)/common $(EXTRAINCLUDES) \
- -I../../render -I$(EXTINCSRC)
- LINTLIBS = ../../dix/llib-ldix.ln ../../os/llib-los.ln \
- ../../mi/llib-lmi.ln
-
-NormalLibraryObjectRule()
-LibraryModuleTarget(shadow,$(OBJS))
-LintLibraryTarget(shadow,$(SRCS))
-
-NormalLintTarget($(SRCS))
-
-InstallLibraryModule(shadow,$(MODULEDIR),.)
-
-DependTarget()
-
-InstallDriverSDKLibraryModule(shadow,$(DRIVERSDKMODULEDIR),.)
-InstallDriverSDKNonExecFile(shadow.h,$(DRIVERSDKINCLUDEDIR))
diff --git a/nx-X11/programs/Xserver/miext/shadow/shadow.c b/nx-X11/programs/Xserver/miext/shadow/shadow.c
deleted file mode 100644
index 92cb5e980..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shadow.c
+++ /dev/null
@@ -1,1544 +0,0 @@
-/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shadow.c,v 1.14tsi Exp $
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include <X11/fonts/font.h>
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "mi.h"
-#include "regionstr.h"
-#include "globals.h"
-#include "gcstruct.h"
-#include "shadow.h"
-
-typedef struct _shadowGCPriv {
- GCOps *ops;
- GCFuncs *funcs;
-} shadowGCPrivRec, *shadowGCPrivPtr;
-
-int shadowScrPrivateIndex;
-int shadowGCPrivateIndex;
-int shadowGeneration;
-
-#define shadowGetGCPriv(pGC) \
- ((shadowGCPrivPtr) (pGC)->devPrivates[shadowGCPrivateIndex].ptr)
-#define shadowGCPriv(pGC) \
- shadowGCPrivPtr pGCPriv = shadowGetGCPriv(pGC)
-
-#define wrap(priv, real, mem, func) {\
- priv->mem = real->mem; \
- real->mem = func; \
-}
-
-#define unwrap(priv, real, mem) {\
- real->mem = priv->mem; \
-}
-
-static void
-shadowRedisplay (ScreenPtr pScreen)
-{
- shadowScrPriv(pScreen);
- shadowBufPtr pBuf;
-
- for (pBuf = pScrPriv->pBuf; pBuf; pBuf = pBuf->pNext)
- {
- if (REGION_NOTEMPTY (pScreen, &pBuf->damage))
- {
- REGION_INTERSECT (pScreen, &pBuf->damage, &pBuf->damage,
- &WindowTable[pScreen->myNum]->borderClip);
- (*pBuf->update) (pScreen, pBuf);
- REGION_EMPTY (pScreen, &pBuf->damage);
- }
- }
-}
-
-static void
-shadowBlockHandler (pointer data,
- OSTimePtr pTimeout,
- pointer pRead)
-{
- ScreenPtr pScreen = (ScreenPtr) data;
-
- shadowRedisplay (pScreen);
-}
-
-static void
-shadowWakeupHandler (pointer data, int i, pointer LastSelectMask)
-{
-}
-
-static void
-shadowDamageRegion (WindowPtr pWindow, RegionPtr pRegion)
-{
- shadowBufPtr pBuf = shadowFindBuf (pWindow);
-
- if (!pBuf)
- abort ();
-
- REGION_INTERSECT(pWindow->drawable.pScreen, pRegion, pRegion,
- &pWindow->borderClip);
- REGION_UNION(pWindow->drawable.pScreen, &pBuf->damage, &pBuf->damage,
- pRegion);
-#ifdef ALWAYS_DISPLAY
- shadowRedisplay (pWindow->drawable.pScreen);
-#endif
-}
-
-static void
-shadowDamageBox (WindowPtr pWindow, BoxPtr pBox)
-{
- RegionRec region;
-
- REGION_INIT (pWindow->drawable.pScreen, &region, pBox, 1);
- shadowDamageRegion (pWindow, &region);
- REGION_UNINIT (pWindow->drawable.pScreen, &region);
-}
-
-static void
-shadowDamageRect (WindowPtr pWindow, int x, int y, int w, int h)
-{
- BoxRec box;
-
- x += pWindow->drawable.x;
- y += pWindow->drawable.y;
- box.x1 = x;
- box.x2 = x + w;
- box.y1 = y;
- box.y2 = y + h;
- shadowDamageBox (pWindow, &box);
-}
-
-static void shadowValidateGC(GCPtr, unsigned long, DrawablePtr);
-static void shadowChangeGC(GCPtr, unsigned long);
-static void shadowCopyGC(GCPtr, unsigned long, GCPtr);
-static void shadowDestroyGC(GCPtr);
-static void shadowChangeClip(GCPtr, int, pointer, int);
-static void shadowDestroyClip(GCPtr);
-static void shadowCopyClip(GCPtr, GCPtr);
-
-GCFuncs shadowGCFuncs = {
- shadowValidateGC, shadowChangeGC, shadowCopyGC, shadowDestroyGC,
- shadowChangeClip, shadowDestroyClip, shadowCopyClip
-};
-
-extern GCOps shadowGCOps;
-
-static Bool
-shadowCreateGC(GCPtr pGC)
-{
- ScreenPtr pScreen = pGC->pScreen;
- shadowScrPriv(pScreen);
- shadowGCPriv(pGC);
- Bool ret;
-
- unwrap (pScrPriv, pScreen, CreateGC);
- if((ret = (*pScreen->CreateGC) (pGC))) {
- pGCPriv->ops = NULL;
- pGCPriv->funcs = pGC->funcs;
- pGC->funcs = &shadowGCFuncs;
- }
- wrap (pScrPriv, pScreen, CreateGC, shadowCreateGC);
-
- return ret;
-}
-
-void
-shadowWrapGC (GCPtr pGC)
-{
- shadowGCPriv(pGC);
-
- pGCPriv->ops = NULL;
- pGCPriv->funcs = pGC->funcs;
- pGC->funcs = &shadowGCFuncs;
-}
-
-void
-shadowUnwrapGC (GCPtr pGC)
-{
- shadowGCPriv(pGC);
-
- pGC->funcs = pGCPriv->funcs;
- if (pGCPriv->ops)
- pGC->ops = pGCPriv->ops;
-}
-
-#define SHADOW_GC_OP_PROLOGUE(pGC, pDraw) \
- shadowGCPriv(pGC); \
- GCFuncs *oldFuncs = pGC->funcs; \
- unwrap(pGCPriv, pGC, funcs); \
- unwrap(pGCPriv, pGC, ops); \
-
-#define SHADOW_GC_OP_EPILOGUE(pGC, pDraw) \
- wrap(pGCPriv, pGC, funcs, oldFuncs); \
- wrap(pGCPriv, pGC, ops, &shadowGCOps)
-
-#define SHADOW_GC_FUNC_PROLOGUE(pGC) \
- shadowGCPriv(pGC); \
- unwrap(pGCPriv, pGC, funcs); \
- if (pGCPriv->ops) unwrap(pGCPriv, pGC, ops)
-
-#define SHADOW_GC_FUNC_EPILOGUE(pGC) \
- wrap(pGCPriv, pGC, funcs, &shadowGCFuncs); \
- if (pGCPriv->ops) wrap(pGCPriv, pGC, ops, &shadowGCOps)
-
-static void
-shadowValidateGC(
- GCPtr pGC,
- unsigned long changes,
- DrawablePtr pDraw
-){
- SHADOW_GC_FUNC_PROLOGUE (pGC);
- (*pGC->funcs->ValidateGC)(pGC, changes, pDraw);
- if(pDraw->type == DRAWABLE_WINDOW)
- pGCPriv->ops = pGC->ops; /* just so it's not NULL */
- else
- pGCPriv->ops = NULL;
- SHADOW_GC_FUNC_EPILOGUE (pGC);
-}
-
-static void
-shadowDestroyGC(GCPtr pGC)
-{
- SHADOW_GC_FUNC_PROLOGUE (pGC);
- (*pGC->funcs->DestroyGC)(pGC);
- SHADOW_GC_FUNC_EPILOGUE (pGC);
-}
-
-static void
-shadowChangeGC (
- GCPtr pGC,
- unsigned long mask
-){
- SHADOW_GC_FUNC_PROLOGUE (pGC);
- (*pGC->funcs->ChangeGC) (pGC, mask);
- SHADOW_GC_FUNC_EPILOGUE (pGC);
-}
-
-static void
-shadowCopyGC (
- GCPtr pGCSrc,
- unsigned long mask,
- GCPtr pGCDst
-){
- SHADOW_GC_FUNC_PROLOGUE (pGCDst);
- (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst);
- SHADOW_GC_FUNC_EPILOGUE (pGCDst);
-}
-
-static void
-shadowChangeClip (
- GCPtr pGC,
- int type,
- pointer pvalue,
- int nrects
-){
- SHADOW_GC_FUNC_PROLOGUE (pGC);
- (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects);
- SHADOW_GC_FUNC_EPILOGUE (pGC);
-}
-
-static void
-shadowCopyClip(GCPtr pgcDst, GCPtr pgcSrc)
-{
- SHADOW_GC_FUNC_PROLOGUE (pgcDst);
- (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc);
- SHADOW_GC_FUNC_EPILOGUE (pgcDst);
-}
-
-static void
-shadowDestroyClip(GCPtr pGC)
-{
- SHADOW_GC_FUNC_PROLOGUE (pGC);
- (* pGC->funcs->DestroyClip)(pGC);
- SHADOW_GC_FUNC_EPILOGUE (pGC);
-}
-
-#define IS_VISIBLE(pWin) 1
-
-
-#define TRIM_BOX(box, pGC) { \
- BoxPtr extents = &pGC->pCompositeClip->extents;\
- if(box.x1 < extents->x1) box.x1 = extents->x1; \
- if(box.x2 > extents->x2) box.x2 = extents->x2; \
- if(box.y1 < extents->y1) box.y1 = extents->y1; \
- if(box.y2 > extents->y2) box.y2 = extents->y2; \
- }
-
-#define TRANSLATE_BOX(box, pDraw) { \
- box.x1 += pDraw->x; \
- box.x2 += pDraw->x; \
- box.y1 += pDraw->y; \
- box.y2 += pDraw->y; \
- }
-
-#define TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC) { \
- TRANSLATE_BOX(box, pDraw); \
- TRIM_BOX(box, pGC); \
- }
-
-#define BOX_NOT_EMPTY(box) \
- (((box.x2 - box.x1) > 0) && ((box.y2 - box.y1) > 0))
-
-#ifdef RENDER
-static void
-shadowComposite (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pMask,
- PicturePtr pDst,
- INT16 xSrc,
- INT16 ySrc,
- INT16 xMask,
- INT16 yMask,
- INT16 xDst,
- INT16 yDst,
- CARD16 width,
- CARD16 height)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- shadowScrPriv(pScreen);
-
- unwrap (pScrPriv, ps, Composite);
- (*ps->Composite) (op,
- pSrc,
- pMask,
- pDst,
- xSrc,
- ySrc,
- xMask,
- yMask,
- xDst,
- yDst,
- width,
- height);
- wrap (pScrPriv, ps, Composite, shadowComposite);
- if (pDst->pDrawable->type == DRAWABLE_WINDOW)
- shadowDamageRect ((WindowPtr) pDst->pDrawable, xDst, yDst,
- width, height);
-}
-
-static void
-shadowGlyphs (CARD8 op,
- PicturePtr pSrc,
- PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc,
- INT16 ySrc,
- int nlist,
- GlyphListPtr list,
- GlyphPtr *glyphs)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- shadowScrPriv(pScreen);
- int x, y;
- int n;
- GlyphPtr glyph;
-
- unwrap (pScrPriv, ps, Glyphs);
- (*ps->Glyphs) (op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
- wrap (pScrPriv, ps, Glyphs, shadowGlyphs);
- if (pDst->pDrawable->type == DRAWABLE_WINDOW)
- {
- x = xSrc;
- y = ySrc;
- while (nlist--)
- {
- x += list->xOff;
- y += list->yOff;
- n = list->len;
- while (n--)
- {
- glyph = *glyphs++;
- shadowDamageRect ((WindowPtr) pDst->pDrawable,
- x - glyph->info.x,
- y - glyph->info.y,
- glyph->info.width,
- glyph->info.height);
- x += glyph->info.xOff;
- y += glyph->info.yOff;
- }
- list++;
- }
- }
-}
-#endif
-
-/**********************************************************/
-
-
-static void
-shadowFillSpans(
- DrawablePtr pDraw,
- GC *pGC,
- int nInit,
- DDXPointPtr pptInit,
- int *pwidthInit,
- int fSorted
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && nInit) {
- DDXPointPtr ppt = pptInit;
- int *pwidth = pwidthInit;
- int i = nInit;
- BoxRec box;
-
- box.x1 = ppt->x;
- box.x2 = box.x1 + *pwidth;
- box.y2 = box.y1 = ppt->y;
-
- while(--i) {
- ppt++;
- pwidth++;
- if(box.x1 > ppt->x) box.x1 = ppt->x;
- if(box.x2 < (ppt->x + *pwidth))
- box.x2 = ppt->x + *pwidth;
- if(box.y1 > ppt->y) box.y1 = ppt->y;
- else if(box.y2 < ppt->y) box.y2 = ppt->y;
- }
-
- box.y2++;
-
- (*pGC->ops->FillSpans)(pDraw, pGC, nInit, pptInit, pwidthInit, fSorted);
-
- if(!pGC->miTranslate) {
- TRANSLATE_BOX(box, pDraw);
- }
- TRIM_BOX(box, pGC);
-
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- } else
- (*pGC->ops->FillSpans)(pDraw, pGC, nInit, pptInit, pwidthInit, fSorted);
-
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-}
-
-static void
-shadowSetSpans(
- DrawablePtr pDraw,
- GCPtr pGC,
- char *pcharsrc,
- DDXPointPtr pptInit,
- int *pwidthInit,
- int nspans,
- int fSorted
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && nspans) {
- DDXPointPtr ppt = pptInit;
- int *pwidth = pwidthInit;
- int i = nspans;
- BoxRec box;
-
- box.x1 = ppt->x;
- box.x2 = box.x1 + *pwidth;
- box.y2 = box.y1 = ppt->y;
-
- while(--i) {
- ppt++;
- pwidth++;
- if(box.x1 > ppt->x) box.x1 = ppt->x;
- if(box.x2 < (ppt->x + *pwidth))
- box.x2 = ppt->x + *pwidth;
- if(box.y1 > ppt->y) box.y1 = ppt->y;
- else if(box.y2 < ppt->y) box.y2 = ppt->y;
- }
-
- box.y2++;
-
- (*pGC->ops->SetSpans)(pDraw, pGC, pcharsrc, pptInit,
- pwidthInit, nspans, fSorted);
-
- if(!pGC->miTranslate) {
- TRANSLATE_BOX(box, pDraw);
- }
- TRIM_BOX(box, pGC);
-
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- } else
- (*pGC->ops->SetSpans)(pDraw, pGC, pcharsrc, pptInit,
- pwidthInit, nspans, fSorted);
-
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-}
-
-static void
-shadowPutImage(
- DrawablePtr pDraw,
- GCPtr pGC,
- int depth,
- int x, int y, int w, int h,
- int leftPad,
- int format,
- char *pImage
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- (*pGC->ops->PutImage)(pDraw, pGC, depth, x, y, w, h,
- leftPad, format, pImage);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw)) {
- BoxRec box;
-
- box.x1 = x + pDraw->x;
- box.x2 = box.x1 + w;
- box.y1 = y + pDraw->y;
- box.y2 = box.y1 + h;
-
- TRIM_BOX(box, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-}
-
-static RegionPtr
-shadowCopyArea(
- DrawablePtr pSrc,
- DrawablePtr pDst,
- GC *pGC,
- int srcx, int srcy,
- int width, int height,
- int dstx, int dsty
-){
- RegionPtr ret;
- SHADOW_GC_OP_PROLOGUE(pGC, pDst);
- ret = (*pGC->ops->CopyArea)(pSrc, pDst,
- pGC, srcx, srcy, width, height, dstx, dsty);
- SHADOW_GC_OP_EPILOGUE(pGC, pDst);
-
- if(IS_VISIBLE(pDst)) {
- BoxRec box;
-
- box.x1 = dstx + pDst->x;
- box.x2 = box.x1 + width;
- box.y1 = dsty + pDst->y;
- box.y2 = box.y1 + height;
-
- TRIM_BOX(box, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDst, &box);
- }
-
- return ret;
-}
-
-static RegionPtr
-shadowCopyPlane(
- DrawablePtr pSrc,
- DrawablePtr pDst,
- GCPtr pGC,
- int srcx, int srcy,
- int width, int height,
- int dstx, int dsty,
- unsigned long bitPlane
-){
- RegionPtr ret;
- SHADOW_GC_OP_PROLOGUE(pGC, pDst);
- ret = (*pGC->ops->CopyPlane)(pSrc, pDst,
- pGC, srcx, srcy, width, height, dstx, dsty, bitPlane);
- SHADOW_GC_OP_EPILOGUE(pGC, pDst);
-
- if(IS_VISIBLE(pDst)) {
- BoxRec box;
-
- box.x1 = dstx + pDst->x;
- box.x2 = box.x1 + width;
- box.y1 = dsty + pDst->y;
- box.y2 = box.y1 + height;
-
- TRIM_BOX(box, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDst, &box);
- }
-
- return ret;
-}
-
-static void
-shadowPolyPoint(
- DrawablePtr pDraw,
- GCPtr pGC,
- int mode,
- int npt,
- xPoint *pptInit
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- (*pGC->ops->PolyPoint)(pDraw, pGC, mode, npt, pptInit);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && npt) {
- BoxRec box;
-
- box.x2 = box.x1 = pptInit->x;
- box.y2 = box.y1 = pptInit->y;
-
- /* this could be slow if the points were spread out */
-
- while(--npt) {
- pptInit++;
- if(box.x1 > pptInit->x) box.x1 = pptInit->x;
- else if(box.x2 < pptInit->x) box.x2 = pptInit->x;
- if(box.y1 > pptInit->y) box.y1 = pptInit->y;
- else if(box.y2 < pptInit->y) box.y2 = pptInit->y;
- }
-
- box.x2++;
- box.y2++;
-
- TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-}
-
-static void
-shadowPolylines(
- DrawablePtr pDraw,
- GCPtr pGC,
- int mode,
- int npt,
- DDXPointPtr pptInit
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- (*pGC->ops->Polylines)(pDraw, pGC, mode, npt, pptInit);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
-
- if(IS_VISIBLE(pDraw) && npt) {
- BoxRec box;
- int extra = pGC->lineWidth >> 1;
-
- box.x2 = box.x1 = pptInit->x;
- box.y2 = box.y1 = pptInit->y;
-
- if(npt > 1) {
- if(pGC->joinStyle == JoinMiter)
- extra = 6 * pGC->lineWidth;
- else if(pGC->capStyle == CapProjecting)
- extra = pGC->lineWidth;
- }
-
- if(mode == CoordModePrevious) {
- int x = box.x1;
- int y = box.y1;
- while(--npt) {
- pptInit++;
- x += pptInit->x;
- y += pptInit->y;
- if(box.x1 > x) box.x1 = x;
- else if(box.x2 < x) box.x2 = x;
- if(box.y1 > y) box.y1 = y;
- else if(box.y2 < y) box.y2 = y;
- }
- } else {
- while(--npt) {
- pptInit++;
- if(box.x1 > pptInit->x) box.x1 = pptInit->x;
- else if(box.x2 < pptInit->x) box.x2 = pptInit->x;
- if(box.y1 > pptInit->y) box.y1 = pptInit->y;
- else if(box.y2 < pptInit->y) box.y2 = pptInit->y;
- }
- }
-
- box.x2++;
- box.y2++;
-
- if(extra) {
- box.x1 -= extra;
- box.x2 += extra;
- box.y1 -= extra;
- box.y2 += extra;
- }
-
- TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-}
-
-static void
-shadowPolySegment(
- DrawablePtr pDraw,
- GCPtr pGC,
- int nseg,
- xSegment *pSeg
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- (*pGC->ops->PolySegment)(pDraw, pGC, nseg, pSeg);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && nseg) {
- BoxRec box;
- int extra = pGC->lineWidth;
-
- if(pGC->capStyle != CapProjecting)
- extra >>= 1;
-
- if(pSeg->x2 > pSeg->x1) {
- box.x1 = pSeg->x1;
- box.x2 = pSeg->x2;
- } else {
- box.x2 = pSeg->x1;
- box.x1 = pSeg->x2;
- }
-
- if(pSeg->y2 > pSeg->y1) {
- box.y1 = pSeg->y1;
- box.y2 = pSeg->y2;
- } else {
- box.y2 = pSeg->y1;
- box.y1 = pSeg->y2;
- }
-
- while(--nseg) {
- pSeg++;
- if(pSeg->x2 > pSeg->x1) {
- if(pSeg->x1 < box.x1) box.x1 = pSeg->x1;
- if(pSeg->x2 > box.x2) box.x2 = pSeg->x2;
- } else {
- if(pSeg->x2 < box.x1) box.x1 = pSeg->x2;
- if(pSeg->x1 > box.x2) box.x2 = pSeg->x1;
- }
- if(pSeg->y2 > pSeg->y1) {
- if(pSeg->y1 < box.y1) box.y1 = pSeg->y1;
- if(pSeg->y2 > box.y2) box.y2 = pSeg->y2;
- } else {
- if(pSeg->y2 < box.y1) box.y1 = pSeg->y2;
- if(pSeg->y1 > box.y2) box.y2 = pSeg->y1;
- }
- }
-
- box.x2++;
- box.y2++;
-
- if(extra) {
- box.x1 -= extra;
- box.x2 += extra;
- box.y1 -= extra;
- box.y2 += extra;
- }
-
- TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-}
-
-static void
-shadowPolyRectangle(
- DrawablePtr pDraw,
- GCPtr pGC,
- int nRects,
- xRectangle *pRects
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- (*pGC->ops->PolyRectangle)(pDraw, pGC, nRects, pRects);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && nRects)
- {
- BoxRec box;
- int offset1, offset2, offset3;
-
- offset2 = pGC->lineWidth;
- if(!offset2) offset2 = 1;
- offset1 = offset2 >> 1;
- offset3 = offset2 - offset1;
-
- while(nRects--)
- {
- box.x1 = pRects->x - offset1;
- box.y1 = pRects->y - offset1;
- box.x2 = box.x1 + pRects->width + offset2;
- box.y2 = box.y1 + offset2;
- TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
-
- box.x1 = pRects->x - offset1;
- box.y1 = pRects->y + offset3;
- box.x2 = box.x1 + offset2;
- box.y2 = box.y1 + pRects->height - offset2;
- TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
-
- box.x1 = pRects->x + pRects->width - offset1;
- box.y1 = pRects->y + offset3;
- box.x2 = box.x1 + offset2;
- box.y2 = box.y1 + pRects->height - offset2;
- TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
-
- box.x1 = pRects->x - offset1;
- box.y1 = pRects->y + pRects->height - offset1;
- box.x2 = box.x1 + pRects->width + offset2;
- box.y2 = box.y1 + offset2;
- TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
-
- pRects++;
- }
- }
- }
-
-static void
-shadowPolyArc(
- DrawablePtr pDraw,
- GCPtr pGC,
- int narcs,
- xArc *parcs
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- (*pGC->ops->PolyArc)(pDraw, pGC, narcs, parcs);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && narcs) {
- int extra = pGC->lineWidth >> 1;
- BoxRec box;
-
- box.x1 = parcs->x;
- box.x2 = box.x1 + parcs->width;
- box.y1 = parcs->y;
- box.y2 = box.y1 + parcs->height;
-
- /* should I break these up instead ? */
-
- while(--narcs) {
- parcs++;
- if(box.x1 > parcs->x) box.x1 = parcs->x;
- if(box.x2 < (parcs->x + parcs->width))
- box.x2 = parcs->x + parcs->width;
- if(box.y1 > parcs->y) box.y1 = parcs->y;
- if(box.y2 < (parcs->y + parcs->height))
- box.y2 = parcs->y + parcs->height;
- }
-
- if(extra) {
- box.x1 -= extra;
- box.x2 += extra;
- box.y1 -= extra;
- box.y2 += extra;
- }
-
- box.x2++;
- box.y2++;
-
- TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-}
-
-static void
-shadowFillPolygon(
- DrawablePtr pDraw,
- GCPtr pGC,
- int shape,
- int mode,
- int count,
- DDXPointPtr pptInit
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && (count > 2)) {
- DDXPointPtr ppt = pptInit;
- int i = count;
- BoxRec box;
-
- box.x2 = box.x1 = ppt->x;
- box.y2 = box.y1 = ppt->y;
-
- if(mode != CoordModeOrigin) {
- int x = box.x1;
- int y = box.y1;
- while(--i) {
- ppt++;
- x += ppt->x;
- y += ppt->y;
- if(box.x1 > x) box.x1 = x;
- else if(box.x2 < x) box.x2 = x;
- if(box.y1 > y) box.y1 = y;
- else if(box.y2 < y) box.y2 = y;
- }
- } else {
- while(--i) {
- ppt++;
- if(box.x1 > ppt->x) box.x1 = ppt->x;
- else if(box.x2 < ppt->x) box.x2 = ppt->x;
- if(box.y1 > ppt->y) box.y1 = ppt->y;
- else if(box.y2 < ppt->y) box.y2 = ppt->y;
- }
- }
-
- box.x2++;
- box.y2++;
-
- (*pGC->ops->FillPolygon)(pDraw, pGC, shape, mode, count, pptInit);
-
- TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- } else
- (*pGC->ops->FillPolygon)(pDraw, pGC, shape, mode, count, pptInit);
-
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-}
-
-
-static void
-shadowPolyFillRect(
- DrawablePtr pDraw,
- GCPtr pGC,
- int nRectsInit,
- xRectangle *pRectsInit
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && nRectsInit) {
- BoxRec box;
- xRectangle *pRects = pRectsInit;
- int nRects = nRectsInit;
-
- box.x1 = pRects->x;
- box.x2 = box.x1 + pRects->width;
- box.y1 = pRects->y;
- box.y2 = box.y1 + pRects->height;
-
- while(--nRects) {
- pRects++;
- if(box.x1 > pRects->x) box.x1 = pRects->x;
- if(box.x2 < (pRects->x + pRects->width))
- box.x2 = pRects->x + pRects->width;
- if(box.y1 > pRects->y) box.y1 = pRects->y;
- if(box.y2 < (pRects->y + pRects->height))
- box.y2 = pRects->y + pRects->height;
- }
-
- /* cfb messes with the pRectsInit so we have to do our
- calculations first */
-
- (*pGC->ops->PolyFillRect)(pDraw, pGC, nRectsInit, pRectsInit);
-
- TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- } else
- (*pGC->ops->PolyFillRect)(pDraw, pGC, nRectsInit, pRectsInit);
-
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-}
-
-
-static void
-shadowPolyFillArc(
- DrawablePtr pDraw,
- GCPtr pGC,
- int narcs,
- xArc *parcs
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- (*pGC->ops->PolyFillArc)(pDraw, pGC, narcs, parcs);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && narcs) {
- BoxRec box;
-
- box.x1 = parcs->x;
- box.x2 = box.x1 + parcs->width;
- box.y1 = parcs->y;
- box.y2 = box.y1 + parcs->height;
-
- /* should I break these up instead ? */
-
- while(--narcs) {
- parcs++;
- if(box.x1 > parcs->x) box.x1 = parcs->x;
- if(box.x2 < (parcs->x + parcs->width))
- box.x2 = parcs->x + parcs->width;
- if(box.y1 > parcs->y) box.y1 = parcs->y;
- if(box.y2 < (parcs->y + parcs->height))
- box.y2 = parcs->y + parcs->height;
- }
-
- TRIM_AND_TRANSLATE_BOX(box, pDraw, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-
-}
-
-static int
-shadowPolyText8(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x,
- int y,
- int count,
- char *chars
-){
- int width;
-
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- width = (*pGC->ops->PolyText8)(pDraw, pGC, x, y, count, chars);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- width -= x;
-
- if(IS_VISIBLE(pDraw) && (width > 0)) {
- BoxRec box;
-
- /* ugh */
- box.x1 = pDraw->x + x + FONTMINBOUNDS(pGC->font, leftSideBearing);
- box.x2 = pDraw->x + x + FONTMAXBOUNDS(pGC->font, rightSideBearing);
-
- if(count > 1) {
- if(width > 0) box.x2 += width;
- else box.x1 += width;
- }
-
- box.y1 = pDraw->y + y - FONTMAXBOUNDS(pGC->font, ascent);
- box.y2 = pDraw->y + y + FONTMAXBOUNDS(pGC->font, descent);
-
- TRIM_BOX(box, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-
- return (width + x);
-}
-
-static int
-shadowPolyText16(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x,
- int y,
- int count,
- unsigned short *chars
-){
- int width;
-
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- width = (*pGC->ops->PolyText16)(pDraw, pGC, x, y, count, chars);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- width -= x;
-
- if(IS_VISIBLE(pDraw) && (width > 0)) {
- BoxRec box;
-
- /* ugh */
- box.x1 = pDraw->x + x + FONTMINBOUNDS(pGC->font, leftSideBearing);
- box.x2 = pDraw->x + x + FONTMAXBOUNDS(pGC->font, rightSideBearing);
-
- if(count > 1) {
- if(width > 0) box.x2 += width;
- else box.x1 += width;
- }
-
- box.y1 = pDraw->y + y - FONTMAXBOUNDS(pGC->font, ascent);
- box.y2 = pDraw->y + y + FONTMAXBOUNDS(pGC->font, descent);
-
- TRIM_BOX(box, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-
- return (width + x);
-}
-
-static void
-shadowImageText8(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x,
- int y,
- int count,
- char *chars
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- (*pGC->ops->ImageText8)(pDraw, pGC, x, y, count, chars);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && count) {
- int top, bot, Min, Max;
- BoxRec box;
-
- top = max(FONTMAXBOUNDS(pGC->font, ascent), FONTASCENT(pGC->font));
- bot = max(FONTMAXBOUNDS(pGC->font, descent), FONTDESCENT(pGC->font));
-
- Min = count * FONTMINBOUNDS(pGC->font, characterWidth);
- if(Min > 0) Min = 0;
- Max = count * FONTMAXBOUNDS(pGC->font, characterWidth);
- if(Max < 0) Max = 0;
-
- /* ugh */
- box.x1 = pDraw->x + x + Min +
- FONTMINBOUNDS(pGC->font, leftSideBearing);
- box.x2 = pDraw->x + x + Max +
- FONTMAXBOUNDS(pGC->font, rightSideBearing);
-
- box.y1 = pDraw->y + y - top;
- box.y2 = pDraw->y + y + bot;
-
- TRIM_BOX(box, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-}
-static void
-shadowImageText16(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x,
- int y,
- int count,
- unsigned short *chars
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- (*pGC->ops->ImageText16)(pDraw, pGC, x, y, count, chars);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && count) {
- int top, bot, Min, Max;
- BoxRec box;
-
- top = max(FONTMAXBOUNDS(pGC->font, ascent), FONTASCENT(pGC->font));
- bot = max(FONTMAXBOUNDS(pGC->font, descent), FONTDESCENT(pGC->font));
-
- Min = count * FONTMINBOUNDS(pGC->font, characterWidth);
- if(Min > 0) Min = 0;
- Max = count * FONTMAXBOUNDS(pGC->font, characterWidth);
- if(Max < 0) Max = 0;
-
- /* ugh */
- box.x1 = pDraw->x + x + Min +
- FONTMINBOUNDS(pGC->font, leftSideBearing);
- box.x2 = pDraw->x + x + Max +
- FONTMAXBOUNDS(pGC->font, rightSideBearing);
-
- box.y1 = pDraw->y + y - top;
- box.y2 = pDraw->y + y + bot;
-
- TRIM_BOX(box, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-}
-
-
-static void
-shadowImageGlyphBlt(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x, int y,
- unsigned int nglyph,
- CharInfoPtr *ppci,
- pointer pglyphBase
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- (*pGC->ops->ImageGlyphBlt)(pDraw, pGC, x, y, nglyph,
- ppci, pglyphBase);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && nglyph) {
- int top, bot, width = 0;
- BoxRec box;
-
- top = max(FONTMAXBOUNDS(pGC->font, ascent), FONTASCENT(pGC->font));
- bot = max(FONTMAXBOUNDS(pGC->font, descent), FONTDESCENT(pGC->font));
-
- box.x1 = ppci[0]->metrics.leftSideBearing;
- if(box.x1 > 0) box.x1 = 0;
- box.x2 = ppci[nglyph - 1]->metrics.rightSideBearing -
- ppci[nglyph - 1]->metrics.characterWidth;
- if(box.x2 < 0) box.x2 = 0;
-
- box.x2 += pDraw->x + x;
- box.x1 += pDraw->x + x;
-
- while(nglyph--) {
- width += (*ppci)->metrics.characterWidth;
- ppci++;
- }
-
- if(width > 0)
- box.x2 += width;
- else
- box.x1 += width;
-
- box.y1 = pDraw->y + y - top;
- box.y2 = pDraw->y + y + bot;
-
- TRIM_BOX(box, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-}
-
-static void
-shadowPolyGlyphBlt(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x, int y,
- unsigned int nglyph,
- CharInfoPtr *ppci,
- pointer pglyphBase
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- (*pGC->ops->PolyGlyphBlt)(pDraw, pGC, x, y, nglyph,
- ppci, pglyphBase);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw) && nglyph) {
- BoxRec box;
-
- /* ugh */
- box.x1 = pDraw->x + x + ppci[0]->metrics.leftSideBearing;
- box.x2 = pDraw->x + x + ppci[nglyph - 1]->metrics.rightSideBearing;
-
- if(nglyph > 1) {
- int width = 0;
-
- while(--nglyph) {
- width += (*ppci)->metrics.characterWidth;
- ppci++;
- }
-
- if(width > 0) box.x2 += width;
- else box.x1 += width;
- }
-
- box.y1 = pDraw->y + y - FONTMAXBOUNDS(pGC->font, ascent);
- box.y2 = pDraw->y + y + FONTMAXBOUNDS(pGC->font, descent);
-
- TRIM_BOX(box, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-}
-
-static void
-shadowPushPixels(
- GCPtr pGC,
- PixmapPtr pBitMap,
- DrawablePtr pDraw,
- int dx, int dy, int xOrg, int yOrg
-){
- SHADOW_GC_OP_PROLOGUE(pGC, pDraw);
- (*pGC->ops->PushPixels)(pGC, pBitMap, pDraw, dx, dy, xOrg, yOrg);
- SHADOW_GC_OP_EPILOGUE(pGC, pDraw);
-
- if(IS_VISIBLE(pDraw)) {
- BoxRec box;
-
- box.x1 = xOrg;
- box.y1 = yOrg;
-
- if(!pGC->miTranslate) {
- box.x1 += pDraw->x;
- box.y1 += pDraw->y;
- }
-
- box.x2 = box.x1 + dx;
- box.y2 = box.y1 + dy;
-
- TRIM_BOX(box, pGC);
- if(BOX_NOT_EMPTY(box))
- shadowDamageBox ((WindowPtr) pDraw, &box);
- }
-}
-
-
-static void
-shadowPaintWindow(
- WindowPtr pWindow,
- RegionPtr prgn,
- int what
-){
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- shadowScrPriv(pScreen);
-
- if(what == PW_BACKGROUND) {
- unwrap (pScrPriv, pScreen, PaintWindowBackground);
- (*pScreen->PaintWindowBackground) (pWindow, prgn, what);
- wrap (pScrPriv, pScreen, PaintWindowBackground, shadowPaintWindow);
- } else {
- unwrap (pScrPriv, pScreen, PaintWindowBorder);
- (*pScreen->PaintWindowBorder) (pWindow, prgn, what);
- wrap (pScrPriv, pScreen, PaintWindowBorder, shadowPaintWindow);
- }
- shadowDamageRegion (pWindow, prgn);
-}
-
-
-static void
-shadowCopyWindow(
- WindowPtr pWindow,
- DDXPointRec ptOldOrg,
- RegionPtr prgn
-){
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- shadowScrPriv(pScreen);
-
- unwrap (pScrPriv, pScreen, CopyWindow);
- (*pScreen->CopyWindow) (pWindow, ptOldOrg, prgn);
- wrap (pScrPriv, pScreen, CopyWindow, shadowCopyWindow);
- shadowDamageRegion (pWindow, prgn);
-}
-
-GCOps shadowGCOps = {
- shadowFillSpans, shadowSetSpans,
- shadowPutImage, shadowCopyArea,
- shadowCopyPlane, shadowPolyPoint,
- shadowPolylines, shadowPolySegment,
- shadowPolyRectangle, shadowPolyArc,
- shadowFillPolygon, shadowPolyFillRect,
- shadowPolyFillArc, shadowPolyText8,
- shadowPolyText16, shadowImageText8,
- shadowImageText16, shadowImageGlyphBlt,
- shadowPolyGlyphBlt, shadowPushPixels,
-#ifdef NEED_LINEHELPER
- NULL,
-#endif
- {NULL} /* devPrivate */
-};
-
-static void
-shadowGetImage (DrawablePtr pDrawable,
- int sx,
- int sy,
- int w,
- int h,
- unsigned int format,
- unsigned long planeMask,
- char * pdstLine)
-{
- ScreenPtr pScreen = pDrawable->pScreen;
- shadowScrPriv(pScreen);
-
- /* Many apps use GetImage to sync with the visable frame buffer */
- if (pDrawable->type == DRAWABLE_WINDOW)
- shadowRedisplay (pScreen);
- unwrap (pScrPriv, pScreen, GetImage);
- (*pScreen->GetImage) (pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
- wrap (pScrPriv, pScreen, GetImage, shadowGetImage);
-}
-
-static void
-shadowRestoreAreas (PixmapPtr pPixmap,
- RegionPtr prgn,
- int xorg,
- int yorg,
- WindowPtr pWin)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- shadowScrPriv(pScreen);
-
- unwrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas);
- (*pScreen->BackingStoreFuncs.RestoreAreas) (pPixmap, prgn,
- xorg, yorg, pWin);
- wrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas,
- shadowRestoreAreas);
- shadowDamageRegion (pWin, prgn);
-}
-
-static Bool
-shadowCloseScreen (int i, ScreenPtr pScreen)
-{
- shadowScrPriv(pScreen);
-
- unwrap (pScrPriv, pScreen, CreateGC);
- unwrap (pScrPriv, pScreen, PaintWindowBackground);
- unwrap (pScrPriv, pScreen, PaintWindowBorder);
- unwrap (pScrPriv, pScreen, CopyWindow);
- unwrap (pScrPriv, pScreen, CloseScreen);
- unwrap (pScrPriv, pScreen, GetImage);
- unwrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas);
- xfree (pScrPriv);
- return (*pScreen->CloseScreen) (i, pScreen);
-}
-
-Bool
-shadowSetup (ScreenPtr pScreen)
-{
- shadowScrPrivPtr pScrPriv;
-#ifdef RENDER
- PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
-#endif
-
- if (shadowGeneration != serverGeneration)
- {
- shadowScrPrivateIndex = AllocateScreenPrivateIndex ();
- if (shadowScrPrivateIndex == -1)
- return FALSE;
- shadowGCPrivateIndex = AllocateGCPrivateIndex ();
- if (shadowGCPrivateIndex == -1)
- return FALSE;
- shadowGeneration = serverGeneration;
- }
- if (!AllocateGCPrivate (pScreen, shadowGCPrivateIndex, sizeof (shadowGCPrivRec)))
- return FALSE;
- pScrPriv = (shadowScrPrivPtr) xalloc (sizeof (shadowScrPrivRec));
- if (!pScrPriv)
- return FALSE;
-
- if (!RegisterBlockAndWakeupHandlers (shadowBlockHandler,
- shadowWakeupHandler,
- (pointer) pScreen))
- return FALSE;
-
- wrap (pScrPriv, pScreen, CreateGC, shadowCreateGC);
- wrap (pScrPriv, pScreen, PaintWindowBackground, shadowPaintWindow);
- wrap (pScrPriv, pScreen, PaintWindowBorder, shadowPaintWindow);
- wrap (pScrPriv, pScreen, CopyWindow, shadowCopyWindow);
- wrap (pScrPriv, pScreen, CloseScreen, shadowCloseScreen);
- wrap (pScrPriv, pScreen, GetImage, shadowGetImage);
- wrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas,
- shadowRestoreAreas);
-#ifdef RENDER
- if (ps) {
- wrap (pScrPriv, ps, Glyphs, shadowGlyphs);
- wrap (pScrPriv, ps, Composite, shadowComposite);
- }
-#endif
- pScrPriv->pBuf = 0;
-
- pScreen->devPrivates[shadowScrPrivateIndex].ptr = (pointer) pScrPriv;
- return TRUE;
-}
-
-Bool
-shadowAdd (ScreenPtr pScreen,
- PixmapPtr pPixmap,
- ShadowUpdateProc update,
- ShadowWindowProc window,
- int randr,
- void *closure)
-{
- shadowScrPriv(pScreen);
- shadowBufPtr pBuf;
-
- pBuf = (shadowBufPtr) xalloc (sizeof (shadowBufRec));
- if (!pBuf)
- return FALSE;
- /*
- * Map simple rotation values to bitmasks; fortunately,
- * these are all unique
- */
- switch (randr) {
- case 0:
- randr = SHADOW_ROTATE_0;
- break;
- case 90:
- randr = SHADOW_ROTATE_90;
- break;
- case 180:
- randr = SHADOW_ROTATE_180;
- break;
- case 270:
- randr = SHADOW_ROTATE_270;
- break;
- }
- pBuf->pPixmap = pPixmap;
- pBuf->update = update;
- pBuf->window = window;
- REGION_NULL(pScreen, &pBuf->damage);
- pBuf->pNext = pScrPriv->pBuf;
- pBuf->randr = randr;
- pBuf->closure = 0;
- pScrPriv->pBuf = pBuf;
- return TRUE;
-}
-
-void
-shadowRemove (ScreenPtr pScreen, PixmapPtr pPixmap)
-{
- shadowScrPriv(pScreen);
- shadowBufPtr pBuf, *pPrev;
-
- for (pPrev = &pScrPriv->pBuf; (pBuf = *pPrev); pPrev = &pBuf->pNext)
- if (pBuf->pPixmap == pPixmap)
- {
- REGION_UNINIT (pScreen, &pBuf->damage);
- *pPrev = pBuf->pNext;
- xfree (pBuf);
- break;
- }
-}
-
-shadowBufPtr
-shadowFindBuf (WindowPtr pWindow)
-{
- ScreenPtr pScreen = pWindow->drawable.pScreen;
- shadowScrPriv(pScreen);
- shadowBufPtr pBuf, *pPrev;
- PixmapPtr pPixmap = (*pScreen->GetWindowPixmap) (pWindow);
-
- for (pPrev = &pScrPriv->pBuf; (pBuf = *pPrev); pPrev = &pBuf->pNext)
- {
- if (!pBuf->pPixmap)
- pBuf->pPixmap = (*pScreen->GetScreenPixmap) (pScreen);
- if (pBuf->pPixmap == pPixmap)
- {
- /*
- * Reorder so this one is first next time
- */
- if (pPrev != &pScrPriv->pBuf)
- {
- *pPrev = pBuf->pNext;
- pBuf->pNext = pScrPriv->pBuf;
- pScrPriv->pBuf = pBuf;
- }
- return pBuf;
- }
- }
- return 0;
-}
-
-Bool
-shadowInit (ScreenPtr pScreen, ShadowUpdateProc update, ShadowWindowProc window)
-{
- if (!shadowSetup (pScreen))
- return FALSE;
-
- if (!shadowAdd (pScreen, 0, update, window, SHADOW_ROTATE_0, 0))
- return FALSE;
-
- return TRUE;
-}
diff --git a/nx-X11/programs/Xserver/miext/shadow/shadow.h b/nx-X11/programs/Xserver/miext/shadow/shadow.h
deleted file mode 100644
index 85b2604f5..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shadow.h
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shadow.h,v 1.6tsi Exp $
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifndef _SHADOW_H_
-#define _SHADOW_H_
-
-#include "scrnintstr.h"
-
-#ifdef RENDER
-#include "picturestr.h"
-#endif
-
-typedef struct _shadowBuf *shadowBufPtr;
-
-typedef void (*ShadowUpdateProc) (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-#define SHADOW_WINDOW_RELOCATE 1
-#define SHADOW_WINDOW_READ 2
-#define SHADOW_WINDOW_WRITE 4
-
-typedef void *(*ShadowWindowProc) (ScreenPtr pScreen,
- CARD32 row,
- CARD32 offset,
- int mode,
- CARD32 *size,
- void *closure);
-
-typedef struct _shadowBuf {
- shadowBufPtr pNext;
- ShadowUpdateProc update;
- ShadowWindowProc window;
- RegionRec damage;
- PixmapPtr pPixmap;
- void *closure;
- int randr;
-} shadowBufRec;
-
-/* Match defines from randr extension */
-#define SHADOW_ROTATE_0 1
-#define SHADOW_ROTATE_90 2
-#define SHADOW_ROTATE_180 4
-#define SHADOW_ROTATE_270 8
-#define SHADOW_ROTATE_ALL (SHADOW_ROTATE_0|SHADOW_ROTATE_90|\
- SHADOW_ROTATE_180|SHADOW_ROTATE_270)
-#define SHADOW_REFLECT_X 16
-#define SHADOW_REFLECT_Y 32
-#define SHADOW_REFLECT_ALL (SHADOW_REFLECT_X|SHADOW_REFLECT_Y)
-
-typedef struct _shadowScrPriv {
- PaintWindowBackgroundProcPtr PaintWindowBackground;
- PaintWindowBorderProcPtr PaintWindowBorder;
- CopyWindowProcPtr CopyWindow;
- CloseScreenProcPtr CloseScreen;
- CreateGCProcPtr CreateGC;
- GetImageProcPtr GetImage;
-#ifdef RENDER
- CompositeProcPtr Composite;
- GlyphsProcPtr Glyphs;
-#endif
- shadowBufPtr pBuf;
- BSFuncRec BackingStoreFuncs;
-} shadowScrPrivRec, *shadowScrPrivPtr;
-
-extern int shadowScrPrivateIndex;
-
-#define shadowGetScrPriv(pScr) ((shadowScrPrivPtr) (pScr)->devPrivates[shadowScrPrivateIndex].ptr)
-#define shadowScrPriv(pScr) shadowScrPrivPtr pScrPriv = shadowGetScrPriv(pScr)
-
-Bool
-shadowSetup (ScreenPtr pScreen);
-
-Bool
-shadowAdd (ScreenPtr pScreen,
- PixmapPtr pPixmap,
- ShadowUpdateProc update,
- ShadowWindowProc window,
- int randr,
- void *closure);
-
-void
-shadowRemove (ScreenPtr pScreen, PixmapPtr pPixmap);
-
-shadowBufPtr
-shadowFindBuf (WindowPtr pWindow);
-
-Bool
-shadowInit (ScreenPtr pScreen, ShadowUpdateProc update, ShadowWindowProc window);
-
-void *
-shadowAlloc (int width, int height, int bpp);
-
-void
-shadowUpdatePacked (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-void
-shadowUpdatePlanar4 (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-void
-shadowUpdatePlanar4x8 (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-void
-shadowUpdateRotatePacked (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-void
-shadowUpdateRotate8_90 (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-void
-shadowUpdateRotate16_90 (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-void
-shadowUpdateRotate32_90 (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-void
-shadowUpdateRotate8_180 (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-void
-shadowUpdateRotate16_180 (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-void
-shadowUpdateRotate32_180 (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-void
-shadowUpdateRotate8_270 (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-void
-shadowUpdateRotate16_270 (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-void
-shadowUpdateRotate32_270 (ScreenPtr pScreen,
- shadowBufPtr pBuf);
-
-typedef void (* shadowUpdateProc)(ScreenPtr, shadowBufPtr);
-
-shadowUpdateProc shadowUpdatePackedWeak(void);
-shadowUpdateProc shadowUpdatePlanar4Weak(void);
-shadowUpdateProc shadowUpdatePlanar4x8Weak(void);
-shadowUpdateProc shadowUpdateRotatePackedWeak(void);
-
-void
-shadowWrapGC (GCPtr pGC);
-
-void
-shadowUnwrapGC (GCPtr pGC);
-
-#endif /* _SHADOW_H_ */
diff --git a/nx-X11/programs/Xserver/miext/shadow/shalloc.c b/nx-X11/programs/Xserver/miext/shadow/shalloc.c
deleted file mode 100644
index 5c01f2aac..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shalloc.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include <X11/fonts/font.h>
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "mi.h"
-#include "regionstr.h"
-#include "globals.h"
-#include "gcstruct.h"
-#include "shadow.h"
-
-void *
-shadowAlloc (int width, int height, int bpp)
-{
- int stride;
- void *fb;
-
- /* Cant use PixmapBytePad -- the structure is probably not initialized yet */
- stride = BitmapBytePad (width * bpp);
- fb = xalloc (stride * height);
- return fb;
-}
diff --git a/nx-X11/programs/Xserver/miext/shadow/shmodule.c b/nx-X11/programs/Xserver/miext/shadow/shmodule.c
deleted file mode 100644
index 5f347a3b5..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shmodule.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef XFree86LOADER
-
-#include "xf86Module.h"
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include <X11/fonts/font.h>
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "mi.h"
-#include "regionstr.h"
-#include "globals.h"
-#include "gcstruct.h"
-#include "shadow.h"
-
-static XF86ModuleVersionInfo VersRec =
-{
- "shadow",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- 1, 0, 0,
- ABI_CLASS_ANSIC, /* Only need the ansic layer */
- ABI_ANSIC_VERSION,
- MOD_CLASS_NONE,
- {0,0,0,0} /* signature, to be patched into the file by a tool */
-};
-
-XF86ModuleData shadowModuleData = { &VersRec, NULL, NULL };
-
-#endif
diff --git a/nx-X11/programs/Xserver/miext/shadow/shpacked.c b/nx-X11/programs/Xserver/miext/shadow/shpacked.c
deleted file mode 100644
index 3fdee1473..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shpacked.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shpacked.c,v 1.4 2001/05/29 04:54:13 keithp Exp $
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include <X11/fonts/font.h>
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "mi.h"
-#include "regionstr.h"
-#include "globals.h"
-#include "gcstruct.h"
-#include "shadow.h"
-#include "fb.h"
-
-void
-shadowUpdatePacked (ScreenPtr pScreen,
- shadowBufPtr pBuf)
-{
- RegionPtr damage = &pBuf->damage;
- PixmapPtr pShadow = pBuf->pPixmap;
- int nbox = REGION_NUM_RECTS (damage);
- BoxPtr pbox = REGION_RECTS (damage);
- FbBits *shaBase, *shaLine, *sha;
- FbStride shaStride;
- int scrBase, scrLine, scr;
- int shaBpp;
- int shaXoff, shaYoff; /* XXX assumed to be zero */
- int x, y, w, h, width;
- int i;
- FbBits *winBase = NULL, *win;
- CARD32 winSize;
-
- fbGetDrawable (&pShadow->drawable, shaBase, shaStride, shaBpp, shaXoff, shaYoff);
- while (nbox--)
- {
- x = pbox->x1 * shaBpp;
- y = pbox->y1;
- w = (pbox->x2 - pbox->x1) * shaBpp;
- h = pbox->y2 - pbox->y1;
-
- scrLine = (x >> FB_SHIFT);
- shaLine = shaBase + y * shaStride + (x >> FB_SHIFT);
-
- x &= FB_MASK;
- w = (w + x + FB_MASK) >> FB_SHIFT;
-
- while (h--)
- {
- winSize = 0;
- scrBase = 0;
- width = w;
- scr = scrLine;
- sha = shaLine;
- while (width) {
- /* how much remains in this window */
- i = scrBase + winSize - scr;
- if (i <= 0 || scr < scrBase)
- {
- winBase = (FbBits *) (*pBuf->window) (pScreen,
- y,
- scr * sizeof (FbBits),
- SHADOW_WINDOW_WRITE,
- &winSize,
- pBuf->closure);
- if(!winBase)
- return;
- scrBase = scr;
- winSize /= sizeof (FbBits);
- i = winSize;
- }
- win = winBase + (scr - scrBase);
- if (i > width)
- i = width;
- width -= i;
- scr += i;
-#define PickBit(a,i) (((a) >> (i)) & 1)
- while (i--)
- *win++ = *sha++;
- }
- shaLine += shaStride;
- y++;
- }
- pbox++;
- }
-}
-
-shadowUpdateProc shadowUpdatePackedWeak(void) { return shadowUpdatePacked; }
diff --git a/nx-X11/programs/Xserver/miext/shadow/shplanar.c b/nx-X11/programs/Xserver/miext/shadow/shplanar.c
deleted file mode 100644
index 979905b86..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shplanar.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shplanar.c,v 1.3 2001/05/29 04:54:13 keithp Exp $
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include <X11/fonts/font.h>
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "mi.h"
-#include "regionstr.h"
-#include "globals.h"
-#include "gcstruct.h"
-#include "shadow.h"
-#include "fb.h"
-
-/*
- * 32 4-bit pixels per write
- */
-
-#define PL_SHIFT 7
-#define PL_UNIT (1 << PL_SHIFT)
-#define PL_MASK (PL_UNIT - 1)
-
-/*
- * 32->8 conversion:
- *
- * 7 6 5 4 3 2 1 0
- * A B C D E F G H
- *
- * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
- * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- * m . . . H . . . G . . . F . . . E . . . D . . . C . . . B . . . A
- * m1 G . . . F . . . E . . . D . . . C . . . B . . . A . . . . . . . m << (7 - (p))
- * m2 . H . . . G . . . F . . . E . . . D . . . C . . . B . . . A . . (m >> (p)) << 2
- * m3 G E C A m1 & 0x80808080
- * m4 H F D B m2 & 0x40404040
- * m5 G H E F C D A B m3 | m4
- * m6 G H E F C D G H A B E F m5 | (m5 >> 20)
- * m7 G H E F C D G H A B C D E F G H m6 | (m6 >> 10)
- */
-
-#if 0
-#define GetBits(p,o,d) {\
- m = sha[o]; \
- m1 = m << (7 - (p)); \
- m2 = (m >> (p)) << 2; \
- m3 = m1 & 0x80808080; \
- m4 = m2 & 0x40404040; \
- m5 = m3 | m4; \
- m6 = m5 | (m5 >> 20); \
- d = m6 | (m6 >> 10); \
-}
-#else
-#define GetBits(p,o,d) {\
- m = sha[o]; \
- m5 = ((m << (7 - (p))) & 0x80808080) | (((m >> (p)) << 2) & 0x40404040); \
- m6 = m5 | (m5 >> 20); \
- d = m6 | (m6 >> 10); \
-}
-#endif
-
-void
-shadowUpdatePlanar4 (ScreenPtr pScreen,
- shadowBufPtr pBuf)
-{
- RegionPtr damage = &pBuf->damage;
- PixmapPtr pShadow = pBuf->pPixmap;
- int nbox = REGION_NUM_RECTS (damage);
- BoxPtr pbox = REGION_RECTS (damage);
- CARD32 *shaBase, *shaLine, *sha;
- FbStride shaStride;
- int scrBase, scrLine, scr;
- int shaBpp;
- int shaXoff, shaYoff; /* XXX assumed to be zero */
- int x, y, w, h, width;
- int i;
- CARD32 *winBase = NULL, *win;
- CARD32 winSize;
- int plane;
- CARD32 m,m5,m6;
- CARD8 s1, s2, s3, s4;
-
- fbGetStipDrawable (&pShadow->drawable, shaBase, shaStride, shaBpp, shaXoff, shaYoff);
- while (nbox--)
- {
- x = (pbox->x1) * shaBpp;
- y = (pbox->y1);
- w = (pbox->x2 - pbox->x1) * shaBpp;
- h = pbox->y2 - pbox->y1;
-
- w = (w + (x & PL_MASK) + PL_MASK) >> PL_SHIFT;
- x &= ~PL_MASK;
-
- scrLine = (x >> PL_SHIFT);
- shaLine = shaBase + y * shaStride + (x >> FB_SHIFT);
-
- while (h--)
- {
- for (plane = 0; plane < 4; plane++)
- {
- width = w;
- scr = scrLine;
- sha = shaLine;
- winSize = 0;
- scrBase = 0;
- while (width) {
- /* how much remains in this window */
- i = scrBase + winSize - scr;
- if (i <= 0 || scr < scrBase)
- {
- winBase = (CARD32 *) (*pBuf->window) (pScreen,
- y,
- (scr << 4) | (plane),
- SHADOW_WINDOW_WRITE,
- &winSize,
- pBuf->closure);
- if(!winBase)
- return;
- winSize >>= 2;
- scrBase = scr;
- i = winSize;
- }
- win = winBase + (scr - scrBase);
- if (i > width)
- i = width;
- width -= i;
- scr += i;
-
- while (i--)
- {
- GetBits(plane,0,s1);
- GetBits(plane,1,s2);
- GetBits(plane,2,s3);
- GetBits(plane,3,s4);
- *win++ = s1 | (s2 << 8) | (s3 << 16) | (s4 << 24);
- sha += 4;
- }
- }
- }
- shaLine += shaStride;
- y++;
- }
- pbox++;
- }
-}
-
-shadowUpdateProc shadowUpdatePlanar4Weak(void) {
- return shadowUpdatePlanar4;
-}
-
-shadowUpdateProc shadowUpdatePlanar4x8Weak(void) {
- return shadowUpdatePlanar4x8;
-}
diff --git a/nx-X11/programs/Xserver/miext/shadow/shplanar8.c b/nx-X11/programs/Xserver/miext/shadow/shplanar8.c
deleted file mode 100644
index f1d87dc50..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shplanar8.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shplanar8.c,v 1.3 2001/05/29 04:54:13 keithp Exp $
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include <X11/fonts/font.h>
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "mi.h"
-#include "regionstr.h"
-#include "globals.h"
-#include "gcstruct.h"
-#include "shadow.h"
-#include "fb.h"
-
-/*
- * Expose 8bpp depth 4
- */
-
-/*
- * 32->8 conversion:
- *
- * 7 6 5 4 3 2 1 0
- * A B C D E F G H
- *
- * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
- * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- * m1 D x x x x x x x C x x x x x x x B x x x x x x x A x x x x x x x sha[0] << (7-(p))
- * m2 x x x x H x x x x x x x G x x x x x x x F x x x x x x x E x x x sha[1] << (3-(p))
- * m3 D C B A m1 & 0x80808080
- * m4 H G F E m2 & 0x08080808
- * m5 D H C G B F A E m3 | m4
- * m6 D H C G B F m5 >> 9
- * m7 D H C D G H B C F G A B E F m5 | m6
- * m8 D H C D G H m7 >> 18
- * m9 D H C D G H B C D F G H A B C D E F G H m7 | m8
- */
-
-#define PL_SHIFT 8
-#define PL_UNIT (1 << PL_SHIFT)
-#define PL_MASK (PL_UNIT - 1)
-
-#if 0
-#define GetBits(p,o,d) { \
- CARD32 m1,m2,m3,m4,m5,m6,m7,m8; \
- m1 = sha[o] << (7 - (p)); \
- m2 = sha[(o)+1] << (3 - (p)); \
- m3 = m1 & 0x80808080; \
- m4 = m2 & 0x08080808; \
- m5 = m3 | m4; \
- m6 = m5 >> 9; \
- m7 = m5 | m6; \
- m8 = m7 >> 18; \
- d = m7 | m8; \
-}
-#else
-#define GetBits(p,o,d) { \
- CARD32 m5,m7; \
- m5 = ((sha[o] << (7 - (p))) & 0x80808080) | ((sha[(o)+1] << (3 - (p))) & 0x08080808); \
- m7 = m5 | (m5 >> 9); \
- d = m7 | (m7 >> 18); \
-}
-#endif
-
-void
-shadowUpdatePlanar4x8 (ScreenPtr pScreen,
- shadowBufPtr pBuf)
-{
- RegionPtr damage = &pBuf->damage;
- PixmapPtr pShadow = pBuf->pPixmap;
- int nbox = REGION_NUM_RECTS (damage);
- BoxPtr pbox = REGION_RECTS (damage);
- CARD32 *shaBase, *shaLine, *sha;
- CARD8 s1, s2, s3, s4;
- FbStride shaStride;
- int scrBase, scrLine, scr;
- int shaBpp;
- int shaXoff, shaYoff; /* XXX assumed to be zero */
- int x, y, w, h, width;
- int i;
- CARD32 *winBase = NULL, *win;
- CARD32 winSize;
- int plane;
-
- fbGetStipDrawable (&pShadow->drawable, shaBase, shaStride, shaBpp, shaXoff, shaYoff);
- while (nbox--)
- {
- x = pbox->x1 * shaBpp;
- y = pbox->y1;
- w = (pbox->x2 - pbox->x1) * shaBpp;
- h = pbox->y2 - pbox->y1;
-
- w = (w + (x & PL_MASK) + PL_MASK) >> PL_SHIFT;
- x &= ~PL_MASK;
-
- scrLine = (x >> PL_SHIFT);
- shaLine = shaBase + y * shaStride + (x >> FB_SHIFT);
-
- while (h--)
- {
- for (plane = 0; plane < 4; plane++)
- {
- width = w;
- scr = scrLine;
- sha = shaLine;
- winSize = 0;
- scrBase = 0;
- while (width) {
- /* how much remains in this window */
- i = scrBase + winSize - scr;
- if (i <= 0 || scr < scrBase)
- {
- winBase = (CARD32 *) (*pBuf->window) (pScreen,
- y,
- (scr << 4) | (plane),
- SHADOW_WINDOW_WRITE,
- &winSize,
- pBuf->closure);
- if(!winBase)
- return;
- winSize >>= 2;
- scrBase = scr;
- i = winSize;
- }
- win = winBase + (scr - scrBase);
- if (i > width)
- i = width;
- width -= i;
- scr += i;
-
- while (i--)
- {
- GetBits(plane,0,s1);
- GetBits(plane,2,s2);
- GetBits(plane,4,s3);
- GetBits(plane,6,s4);
- *win++ = s1 | (s2 << 8) | (s3 << 16) | (s4 << 24);
- sha += 8;
- }
- }
- }
- shaLine += shaStride;
- y++;
- }
- pbox++;
- }
-}
-
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrot16pack.c b/nx-X11/programs/Xserver/miext/shadow/shrot16pack.c
deleted file mode 100644
index 2ec41bb07..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrot16pack.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate16
-#define Data CARD16
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrot16pack_180.c b/nx-X11/programs/Xserver/miext/shadow/shrot16pack_180.c
deleted file mode 100644
index 06b1603ba..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrot16pack_180.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate16_180
-#define Data CARD16
-#define ROTATE 180
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrot16pack_270.c b/nx-X11/programs/Xserver/miext/shadow/shrot16pack_270.c
deleted file mode 100644
index 1ad952ec6..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrot16pack_270.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate16_270
-#define Data CARD16
-#define ROTATE 270
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrot16pack_90.c b/nx-X11/programs/Xserver/miext/shadow/shrot16pack_90.c
deleted file mode 100644
index cfef7785c..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrot16pack_90.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate16_90
-#define Data CARD16
-#define ROTATE 90
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrot32pack.c b/nx-X11/programs/Xserver/miext/shadow/shrot32pack.c
deleted file mode 100644
index 95c7c292c..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrot32pack.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate32
-#define Data CARD32
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrot32pack_180.c b/nx-X11/programs/Xserver/miext/shadow/shrot32pack_180.c
deleted file mode 100644
index cbadba59d..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrot32pack_180.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate32_180
-#define Data CARD32
-#define ROTATE 180
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrot32pack_270.c b/nx-X11/programs/Xserver/miext/shadow/shrot32pack_270.c
deleted file mode 100644
index 8f434b08e..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrot32pack_270.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate32_270
-#define Data CARD32
-#define ROTATE 270
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrot32pack_90.c b/nx-X11/programs/Xserver/miext/shadow/shrot32pack_90.c
deleted file mode 100644
index 98c22c37d..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrot32pack_90.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate32_90
-#define Data CARD32
-#define ROTATE 90
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrot8pack.c b/nx-X11/programs/Xserver/miext/shadow/shrot8pack.c
deleted file mode 100644
index 9e77f43e8..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrot8pack.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate8
-#define Data CARD8
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrot8pack_180.c b/nx-X11/programs/Xserver/miext/shadow/shrot8pack_180.c
deleted file mode 100644
index 6f4eca93e..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrot8pack_180.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate8_180
-#define Data CARD8
-#define ROTATE 180
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrot8pack_270.c b/nx-X11/programs/Xserver/miext/shadow/shrot8pack_270.c
deleted file mode 100644
index d56a3366c..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrot8pack_270.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate8_270
-#define Data CARD8
-#define ROTATE 270
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrot8pack_90.c b/nx-X11/programs/Xserver/miext/shadow/shrot8pack_90.c
deleted file mode 100644
index 2fed8126d..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrot8pack_90.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * $XFree86$
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate8_90
-#define Data CARD8
-#define ROTATE 90
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrotate.c b/nx-X11/programs/Xserver/miext/shadow/shrotate.c
deleted file mode 100644
index 927bc61be..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrotate.c
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shrotate.c,v 1.4tsi Exp $
- *
- * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include <X11/fonts/font.h>
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "mi.h"
-#include "regionstr.h"
-#include "globals.h"
-#include "gcstruct.h"
-#include "shadow.h"
-#include "fb.h"
-
-/*
- * These indicate which way the source (shadow) is scanned when
- * walking the screen in a particular direction
- */
-
-#define LEFT_TO_RIGHT 1
-#define RIGHT_TO_LEFT -1
-#define TOP_TO_BOTTOM 2
-#define BOTTOM_TO_TOP -2
-
-void
-shadowUpdateRotatePacked (ScreenPtr pScreen,
- shadowBufPtr pBuf)
-{
- RegionPtr damage = &pBuf->damage;
- PixmapPtr pShadow = pBuf->pPixmap;
- int nbox = REGION_NUM_RECTS (damage);
- BoxPtr pbox = REGION_RECTS (damage);
- FbBits *shaBits;
- FbStride shaStride;
- int shaBpp;
- int shaXoff, shaYoff;
- int box_x1, box_x2, box_y1, box_y2;
- int sha_x1 = 0, sha_y1 = 0;
- int scr_x1 = 0, scr_x2 = 0, scr_y1 = 0, scr_y2 = 0, scr_w, scr_h;
- int scr_x, scr_y;
- int w;
- int pixelsPerBits;
- int pixelsMask;
- FbStride shaStepOverY = 0, shaStepDownY = 0;
- FbStride shaStepOverX = 0, shaStepDownX = 0;
- FbBits *shaLine, *sha;
- int shaHeight = pShadow->drawable.height;
- int shaWidth = pShadow->drawable.width;
- FbBits shaMask;
- int shaFirstShift, shaShift;
- int o_x_dir;
- int o_y_dir;
- int x_dir;
- int y_dir;
-
- fbGetDrawable (&pShadow->drawable, shaBits, shaStride, shaBpp, shaXoff, shaYoff);
- pixelsPerBits = (sizeof (FbBits) * 8) / shaBpp;
- pixelsMask = ~(pixelsPerBits - 1);
- shaMask = FbBitsMask (FB_UNIT-shaBpp, shaBpp);
- /*
- * Compute rotation related constants to walk the shadow
- */
- o_x_dir = LEFT_TO_RIGHT;
- o_y_dir = TOP_TO_BOTTOM;
- if (pBuf->randr & SHADOW_REFLECT_X)
- o_x_dir = -o_x_dir;
- if (pBuf->randr & SHADOW_REFLECT_Y)
- o_y_dir = -o_y_dir;
- switch (pBuf->randr & (SHADOW_ROTATE_ALL)) {
- case SHADOW_ROTATE_0: /* upper left shadow -> upper left screen */
- default:
- x_dir = o_x_dir;
- y_dir = o_y_dir;
- break;
- case SHADOW_ROTATE_90: /* upper right shadow -> upper left screen */
- x_dir = o_y_dir;
- y_dir = -o_x_dir;
- break;
- case SHADOW_ROTATE_180: /* lower right shadow -> upper left screen */
- x_dir = -o_x_dir;
- y_dir = -o_y_dir;
- break;
- case SHADOW_ROTATE_270: /* lower left shadow -> upper left screen */
- x_dir = -o_y_dir;
- y_dir = o_x_dir;
- break;
- }
- switch (x_dir) {
- case LEFT_TO_RIGHT:
- shaStepOverX = shaBpp;
- shaStepOverY = 0;
- break;
- case TOP_TO_BOTTOM:
- shaStepOverX = 0;
- shaStepOverY = shaStride;
- break;
- case RIGHT_TO_LEFT:
- shaStepOverX = -shaBpp;
- shaStepOverY = 0;
- break;
- case BOTTOM_TO_TOP:
- shaStepOverX = 0;
- shaStepOverY = -shaStride;
- break;
- }
- switch (y_dir) {
- case TOP_TO_BOTTOM:
- shaStepDownX = 0;
- shaStepDownY = shaStride;
- break;
- case RIGHT_TO_LEFT:
- shaStepDownX = -shaBpp;
- shaStepDownY = 0;
- break;
- case BOTTOM_TO_TOP:
- shaStepDownX = 0;
- shaStepDownY = -shaStride;
- break;
- case LEFT_TO_RIGHT:
- shaStepDownX = shaBpp;
- shaStepDownY = 0;
- break;
- }
-
- while (nbox--)
- {
- box_x1 = pbox->x1;
- box_y1 = pbox->y1;
- box_x2 = pbox->x2;
- box_y2 = pbox->y2;
- pbox++;
-
- /*
- * Compute screen and shadow locations for this box
- */
- switch (x_dir) {
- case LEFT_TO_RIGHT:
- scr_x1 = box_x1 & pixelsMask;
- scr_x2 = (box_x2 + pixelsPerBits - 1) & pixelsMask;
-
- sha_x1 = scr_x1;
- break;
- case TOP_TO_BOTTOM:
- scr_x1 = box_y1 & pixelsMask;
- scr_x2 = (box_y2 + pixelsPerBits - 1) & pixelsMask;
-
- sha_y1 = scr_x1;
- break;
- case RIGHT_TO_LEFT:
- scr_x1 = (shaWidth - box_x2) & pixelsMask;
- scr_x2 = (shaWidth - box_x1 + pixelsPerBits - 1) & pixelsMask;
-
- sha_x1 = (shaWidth - scr_x1 - 1);
- break;
- case BOTTOM_TO_TOP:
- scr_x1 = (shaHeight - box_y2) & pixelsMask;
- scr_x2 = (shaHeight - box_y1 + pixelsPerBits - 1) & pixelsMask;
-
- sha_y1 = (shaHeight - scr_x1 - 1);
- break;
- }
- switch (y_dir) {
- case TOP_TO_BOTTOM:
- scr_y1 = box_y1;
- scr_y2 = box_y2;
-
- sha_y1 = scr_y1;
- break;
- case RIGHT_TO_LEFT:
- scr_y1 = (shaWidth - box_x2);
- scr_y2 = (shaWidth - box_x1);
-
- sha_x1 = box_x2 - 1;
- break;
- case BOTTOM_TO_TOP:
- scr_y1 = shaHeight - box_y2;
- scr_y2 = shaHeight - box_y1;
-
- sha_y1 = box_y2 - 1;
- break;
- case LEFT_TO_RIGHT:
- scr_y1 = box_x1;
- scr_y2 = box_x2;
-
- sha_x1 = box_x1;
- break;
- }
- scr_w = ((scr_x2 - scr_x1) * shaBpp) >> FB_SHIFT;
- scr_h = scr_y2 - scr_y1;
- scr_y = scr_y1;
-
- /* shift amount for first pixel on screen */
- shaFirstShift = FB_UNIT - ((sha_x1 * shaBpp) & FB_MASK) - shaBpp;
-
- /* pointer to shadow data first placed on screen */
- shaLine = (shaBits +
- sha_y1 * shaStride +
- ((sha_x1 * shaBpp) >> FB_SHIFT));
-
- /*
- * Copy the bits, always write across the physical frame buffer
- * to take advantage of write combining.
- */
- while (scr_h--)
- {
- int p;
- FbBits bits;
- FbBits *win;
- int i;
- CARD32 winSize;
-
- sha = shaLine;
- shaShift = shaFirstShift;
- w = scr_w;
- scr_x = scr_x1 * shaBpp >> FB_SHIFT;
-
- while (w)
- {
- /*
- * Map some of this line
- */
- win = (FbBits *) (*pBuf->window) (pScreen,
- scr_y,
- scr_x << 2,
- SHADOW_WINDOW_WRITE,
- &winSize,
- pBuf->closure);
- i = (winSize >> 2);
- if (i > w)
- i = w;
- w -= i;
- scr_x += i;
- /*
- * Copy the portion of the line mapped
- */
- while (i--)
- {
- bits = 0;
- p = pixelsPerBits;
- /*
- * Build one word of output from multiple inputs
- *
- * Note that for 90/270 rotations, this will walk
- * down the shadow hitting each scanline once.
- * This is probably not very efficient.
- */
- while (p--)
- {
- bits = FbScrLeft(bits, shaBpp);
- bits |= FbScrRight (*sha, shaShift) & shaMask;
-
- shaShift -= shaStepOverX;
- if (shaShift >= FB_UNIT)
- {
- shaShift -= FB_UNIT;
- sha--;
- }
- else if (shaShift < 0)
- {
- shaShift += FB_UNIT;
- sha++;
- }
- sha += shaStepOverY;
- }
- *win++ = bits;
- }
- }
- scr_y++;
- shaFirstShift -= shaStepDownX;
- if (shaFirstShift >= FB_UNIT)
- {
- shaFirstShift -= FB_UNIT;
- shaLine--;
- }
- else if (shaFirstShift < 0)
- {
- shaFirstShift += FB_UNIT;
- shaLine++;
- }
- shaLine += shaStepDownY;
- }
- }
-}
-
-shadowUpdateProc shadowUpdateRotatePackedWeak(void) {
- return shadowUpdateRotatePacked;
-}
diff --git a/nx-X11/programs/Xserver/miext/shadow/shrotpack.h b/nx-X11/programs/Xserver/miext/shadow/shrotpack.h
deleted file mode 100644
index 062d8c394..000000000
--- a/nx-X11/programs/Xserver/miext/shadow/shrotpack.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shrotpack.h,v 1.3 2001/05/29 04:54:13 keithp Exp $
- *
- * Copyright © 2000 Keith Packard
- *
- * 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, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * Thanks to Daniel Chemko <dchemko@intrinsyc.com> for making the 90 and 180
- * orientations work.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include <X11/fonts/font.h>
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "mi.h"
-#include "regionstr.h"
-#include "globals.h"
-#include "gcstruct.h"
-#include "shadow.h"
-#include "fb.h"
-
-#define DANDEBUG 0
-
-#if ROTATE == 270
-
-#define SCRLEFT(x,y,w,h) (pScreen->height - ((y) + (h)))
-#define SCRY(x,y,w,h) (x)
-#define SCRWIDTH(x,y,w,h) (h)
-#define FIRSTSHA(x,y,w,h) (((y) + (h) - 1) * shaStride + (x))
-#define STEPDOWN(x,y,w,h) ((w)--)
-#define NEXTY(x,y,w,h) ((x)++)
-#define SHASTEPX(stride) -(stride)
-#define SHASTEPY(stride) (1)
-
-#elif ROTATE == 90
-
-#define SCRLEFT(x,y,w,h) (y)
-#define SCRY(x,y,w,h) (pScreen->width - ((x) + (w)) - 1)
-#define SCRWIDTH(x,y,w,h) (h)
-#define FIRSTSHA(x,y,w,h) ((y) * shaStride + (x + w - 1))
-#define STEPDOWN(x,y,w,h) ((w)--)
-#define NEXTY(x,y,w,h) ((void)(x))
-#define SHASTEPX(stride) (stride)
-#define SHASTEPY(stride) (-1)
-
-#elif ROTATE == 180
-
-#define SCRLEFT(x,y,w,h) (pScreen->width - ((x) + (w)))
-#define SCRY(x,y,w,h) (pScreen->height - ((y) + (h)) - 1)
-#define SCRWIDTH(x,y,w,h) (w)
-#define FIRSTSHA(x,y,w,h) ((y + h - 1) * shaStride + (x + w - 1))
-#define STEPDOWN(x,y,w,h) ((h)--)
-#define NEXTY(x,y,w,h) ((void)(y))
-#define SHASTEPX(stride) (-1)
-#define SHASTEPY(stride) -(stride)
-
-#else
-
-#define SCRLEFT(x,y,w,h) (x)
-#define SCRY(x,y,w,h) (y)
-#define SCRWIDTH(x,y,w,h) (w)
-#define FIRSTSHA(x,y,w,h) ((y) * shaStride + (x))
-#define STEPDOWN(x,y,w,h) ((h)--)
-#define NEXTY(x,y,w,h) ((y)++)
-#define SHASTEPX(stride) (1)
-#define SHASTEPY(stride) (stride)
-
-#endif
-
-void
-FUNC (ScreenPtr pScreen,
- shadowBufPtr pBuf)
-{
- RegionPtr damage = &pBuf->damage;
- PixmapPtr pShadow = pBuf->pPixmap;
- int nbox = REGION_NUM_RECTS (damage);
- BoxPtr pbox = REGION_RECTS (damage);
- FbBits *shaBits;
- Data *shaBase, *shaLine, *sha;
- FbStride shaStride;
- int scrBase, scrLine, scr;
- int shaBpp;
- int shaXoff, shaYoff; /* XXX assumed to be zero */
- int x, y, w, h, width;
- int i;
- Data *winBase = NULL, *win;
- CARD32 winSize;
-
- fbGetDrawable (&pShadow->drawable, shaBits, shaStride, shaBpp, shaXoff, shaYoff);
- shaBase = (Data *) shaBits;
- shaStride = shaStride * sizeof (FbBits) / sizeof (Data);
-#if (DANDEBUG > 1)
- ErrorF ("-> Entering Shadow Update:\r\n |- Origins: pShadow=%x, pScreen=%x, damage=%x\r\n |- Metrics: shaStride=%d, shaBase=%x, shaBpp=%d\r\n | \n", pShadow, pScreen, damage, shaStride, shaBase, shaBpp);
-#endif
- while (nbox--)
- {
- x = pbox->x1;
- y = pbox->y1;
- w = (pbox->x2 - pbox->x1);
- h = pbox->y2 - pbox->y1;
-
-#if (DANDEBUG > 2)
- ErrorF (" |-> Redrawing box - Metrics: X=%d, Y=%d, Width=%d, Height=%d\n", x, y, w, h);
-#endif
- scrLine = SCRLEFT(x,y,w,h);
- shaLine = shaBase + FIRSTSHA(x,y,w,h);
-
- while (STEPDOWN(x,y,w,h))
- {
- winSize = 0;
- scrBase = 0;
- width = SCRWIDTH(x,y,w,h);
- scr = scrLine;
- sha = shaLine;
-#if (DANDEBUG > 3)
- ErrorF (" | |-> StepDown - Metrics: width=%d, scr=%x, sha=%x\n", width, scr, sha);
-#endif
- while (width)
- {
- /* how much remains in this window */
- i = scrBase + winSize - scr;
- if (i <= 0 || scr < scrBase)
- {
- winBase = (Data *) (*pBuf->window) (pScreen,
- SCRY(x,y,w,h),
- scr * sizeof (Data),
- SHADOW_WINDOW_WRITE,
- &winSize,
- pBuf->closure);
- if(!winBase)
- return;
- scrBase = scr;
- winSize /= sizeof (Data);
- i = winSize;
-#if(DANDEBUG > 4)
- ErrorF (" | | |-> Starting New Line - Metrics: winBase=%x, scrBase=%x, winSize=%d\r\n | | | Xstride=%d, Ystride=%d, w=%d h=%d\n", winBase, scrBase, winSize, SHASTEPX(shaStride), SHASTEPY(shaStride), w, h);
-#endif
- }
- win = winBase + (scr - scrBase);
- if (i > width)
- i = width;
- width -= i;
- scr += i;
-#if(DANDEBUG > 5)
- ErrorF (" | | |-> Writing Line - Metrics: win=%x, sha=%x\n", win, sha);
-#endif
- while (i--)
- {
-#if(DANDEBUG > 6)
- ErrorF (" | | |-> Writing Pixel - Metrics: win=%x, sha=%d, remaining=%d\n", win, sha, i);
-#endif
- *win++ = *sha;
- sha += SHASTEPX(shaStride);
- } /* i */
- } /* width */
- shaLine += SHASTEPY(shaStride);
- NEXTY(x,y,w,h);
- } /* STEPDOWN */
- pbox++;
- } /* nbox */
-}
diff --git a/nx-X11/programs/xterm/256colres.h b/nx-X11/programs/xterm/256colres.h
deleted file mode 100644
index a84acd588..000000000
--- a/nx-X11/programs/xterm/256colres.h
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * This header file was generated by ./256colres.pl
- */
-/* $XFree86: xc/programs/xterm/256colres.h,v 1.5 2002/10/05 17:57:11 dickey Exp $ */
-
-#ifndef included_256colres_h
-#define included_256colres_h
-
-COLOR_RES("16", screen.Acolors[16], DFT_COLOR("rgb:00/00/00")),
-COLOR_RES("17", screen.Acolors[17], DFT_COLOR("rgb:00/00/5f")),
-COLOR_RES("18", screen.Acolors[18], DFT_COLOR("rgb:00/00/87")),
-COLOR_RES("19", screen.Acolors[19], DFT_COLOR("rgb:00/00/af")),
-COLOR_RES("20", screen.Acolors[20], DFT_COLOR("rgb:00/00/d7")),
-COLOR_RES("21", screen.Acolors[21], DFT_COLOR("rgb:00/00/ff")),
-COLOR_RES("22", screen.Acolors[22], DFT_COLOR("rgb:00/5f/00")),
-COLOR_RES("23", screen.Acolors[23], DFT_COLOR("rgb:00/5f/5f")),
-COLOR_RES("24", screen.Acolors[24], DFT_COLOR("rgb:00/5f/87")),
-COLOR_RES("25", screen.Acolors[25], DFT_COLOR("rgb:00/5f/af")),
-COLOR_RES("26", screen.Acolors[26], DFT_COLOR("rgb:00/5f/d7")),
-COLOR_RES("27", screen.Acolors[27], DFT_COLOR("rgb:00/5f/ff")),
-COLOR_RES("28", screen.Acolors[28], DFT_COLOR("rgb:00/87/00")),
-COLOR_RES("29", screen.Acolors[29], DFT_COLOR("rgb:00/87/5f")),
-COLOR_RES("30", screen.Acolors[30], DFT_COLOR("rgb:00/87/87")),
-COLOR_RES("31", screen.Acolors[31], DFT_COLOR("rgb:00/87/af")),
-COLOR_RES("32", screen.Acolors[32], DFT_COLOR("rgb:00/87/d7")),
-COLOR_RES("33", screen.Acolors[33], DFT_COLOR("rgb:00/87/ff")),
-COLOR_RES("34", screen.Acolors[34], DFT_COLOR("rgb:00/af/00")),
-COLOR_RES("35", screen.Acolors[35], DFT_COLOR("rgb:00/af/5f")),
-COLOR_RES("36", screen.Acolors[36], DFT_COLOR("rgb:00/af/87")),
-COLOR_RES("37", screen.Acolors[37], DFT_COLOR("rgb:00/af/af")),
-COLOR_RES("38", screen.Acolors[38], DFT_COLOR("rgb:00/af/d7")),
-COLOR_RES("39", screen.Acolors[39], DFT_COLOR("rgb:00/af/ff")),
-COLOR_RES("40", screen.Acolors[40], DFT_COLOR("rgb:00/d7/00")),
-COLOR_RES("41", screen.Acolors[41], DFT_COLOR("rgb:00/d7/5f")),
-COLOR_RES("42", screen.Acolors[42], DFT_COLOR("rgb:00/d7/87")),
-COLOR_RES("43", screen.Acolors[43], DFT_COLOR("rgb:00/d7/af")),
-COLOR_RES("44", screen.Acolors[44], DFT_COLOR("rgb:00/d7/d7")),
-COLOR_RES("45", screen.Acolors[45], DFT_COLOR("rgb:00/d7/ff")),
-COLOR_RES("46", screen.Acolors[46], DFT_COLOR("rgb:00/ff/00")),
-COLOR_RES("47", screen.Acolors[47], DFT_COLOR("rgb:00/ff/5f")),
-COLOR_RES("48", screen.Acolors[48], DFT_COLOR("rgb:00/ff/87")),
-COLOR_RES("49", screen.Acolors[49], DFT_COLOR("rgb:00/ff/af")),
-COLOR_RES("50", screen.Acolors[50], DFT_COLOR("rgb:00/ff/d7")),
-COLOR_RES("51", screen.Acolors[51], DFT_COLOR("rgb:00/ff/ff")),
-COLOR_RES("52", screen.Acolors[52], DFT_COLOR("rgb:5f/00/00")),
-COLOR_RES("53", screen.Acolors[53], DFT_COLOR("rgb:5f/00/5f")),
-COLOR_RES("54", screen.Acolors[54], DFT_COLOR("rgb:5f/00/87")),
-COLOR_RES("55", screen.Acolors[55], DFT_COLOR("rgb:5f/00/af")),
-COLOR_RES("56", screen.Acolors[56], DFT_COLOR("rgb:5f/00/d7")),
-COLOR_RES("57", screen.Acolors[57], DFT_COLOR("rgb:5f/00/ff")),
-COLOR_RES("58", screen.Acolors[58], DFT_COLOR("rgb:5f/5f/00")),
-COLOR_RES("59", screen.Acolors[59], DFT_COLOR("rgb:5f/5f/5f")),
-COLOR_RES("60", screen.Acolors[60], DFT_COLOR("rgb:5f/5f/87")),
-COLOR_RES("61", screen.Acolors[61], DFT_COLOR("rgb:5f/5f/af")),
-COLOR_RES("62", screen.Acolors[62], DFT_COLOR("rgb:5f/5f/d7")),
-COLOR_RES("63", screen.Acolors[63], DFT_COLOR("rgb:5f/5f/ff")),
-COLOR_RES("64", screen.Acolors[64], DFT_COLOR("rgb:5f/87/00")),
-COLOR_RES("65", screen.Acolors[65], DFT_COLOR("rgb:5f/87/5f")),
-COLOR_RES("66", screen.Acolors[66], DFT_COLOR("rgb:5f/87/87")),
-COLOR_RES("67", screen.Acolors[67], DFT_COLOR("rgb:5f/87/af")),
-COLOR_RES("68", screen.Acolors[68], DFT_COLOR("rgb:5f/87/d7")),
-COLOR_RES("69", screen.Acolors[69], DFT_COLOR("rgb:5f/87/ff")),
-COLOR_RES("70", screen.Acolors[70], DFT_COLOR("rgb:5f/af/00")),
-COLOR_RES("71", screen.Acolors[71], DFT_COLOR("rgb:5f/af/5f")),
-COLOR_RES("72", screen.Acolors[72], DFT_COLOR("rgb:5f/af/87")),
-COLOR_RES("73", screen.Acolors[73], DFT_COLOR("rgb:5f/af/af")),
-COLOR_RES("74", screen.Acolors[74], DFT_COLOR("rgb:5f/af/d7")),
-COLOR_RES("75", screen.Acolors[75], DFT_COLOR("rgb:5f/af/ff")),
-COLOR_RES("76", screen.Acolors[76], DFT_COLOR("rgb:5f/d7/00")),
-COLOR_RES("77", screen.Acolors[77], DFT_COLOR("rgb:5f/d7/5f")),
-COLOR_RES("78", screen.Acolors[78], DFT_COLOR("rgb:5f/d7/87")),
-COLOR_RES("79", screen.Acolors[79], DFT_COLOR("rgb:5f/d7/af")),
-COLOR_RES("80", screen.Acolors[80], DFT_COLOR("rgb:5f/d7/d7")),
-COLOR_RES("81", screen.Acolors[81], DFT_COLOR("rgb:5f/d7/ff")),
-COLOR_RES("82", screen.Acolors[82], DFT_COLOR("rgb:5f/ff/00")),
-COLOR_RES("83", screen.Acolors[83], DFT_COLOR("rgb:5f/ff/5f")),
-COLOR_RES("84", screen.Acolors[84], DFT_COLOR("rgb:5f/ff/87")),
-COLOR_RES("85", screen.Acolors[85], DFT_COLOR("rgb:5f/ff/af")),
-COLOR_RES("86", screen.Acolors[86], DFT_COLOR("rgb:5f/ff/d7")),
-COLOR_RES("87", screen.Acolors[87], DFT_COLOR("rgb:5f/ff/ff")),
-COLOR_RES("88", screen.Acolors[88], DFT_COLOR("rgb:87/00/00")),
-COLOR_RES("89", screen.Acolors[89], DFT_COLOR("rgb:87/00/5f")),
-COLOR_RES("90", screen.Acolors[90], DFT_COLOR("rgb:87/00/87")),
-COLOR_RES("91", screen.Acolors[91], DFT_COLOR("rgb:87/00/af")),
-COLOR_RES("92", screen.Acolors[92], DFT_COLOR("rgb:87/00/d7")),
-COLOR_RES("93", screen.Acolors[93], DFT_COLOR("rgb:87/00/ff")),
-COLOR_RES("94", screen.Acolors[94], DFT_COLOR("rgb:87/5f/00")),
-COLOR_RES("95", screen.Acolors[95], DFT_COLOR("rgb:87/5f/5f")),
-COLOR_RES("96", screen.Acolors[96], DFT_COLOR("rgb:87/5f/87")),
-COLOR_RES("97", screen.Acolors[97], DFT_COLOR("rgb:87/5f/af")),
-COLOR_RES("98", screen.Acolors[98], DFT_COLOR("rgb:87/5f/d7")),
-COLOR_RES("99", screen.Acolors[99], DFT_COLOR("rgb:87/5f/ff")),
-COLOR_RES("100", screen.Acolors[100], DFT_COLOR("rgb:87/87/00")),
-COLOR_RES("101", screen.Acolors[101], DFT_COLOR("rgb:87/87/5f")),
-COLOR_RES("102", screen.Acolors[102], DFT_COLOR("rgb:87/87/87")),
-COLOR_RES("103", screen.Acolors[103], DFT_COLOR("rgb:87/87/af")),
-COLOR_RES("104", screen.Acolors[104], DFT_COLOR("rgb:87/87/d7")),
-COLOR_RES("105", screen.Acolors[105], DFT_COLOR("rgb:87/87/ff")),
-COLOR_RES("106", screen.Acolors[106], DFT_COLOR("rgb:87/af/00")),
-COLOR_RES("107", screen.Acolors[107], DFT_COLOR("rgb:87/af/5f")),
-COLOR_RES("108", screen.Acolors[108], DFT_COLOR("rgb:87/af/87")),
-COLOR_RES("109", screen.Acolors[109], DFT_COLOR("rgb:87/af/af")),
-COLOR_RES("110", screen.Acolors[110], DFT_COLOR("rgb:87/af/d7")),
-COLOR_RES("111", screen.Acolors[111], DFT_COLOR("rgb:87/af/ff")),
-COLOR_RES("112", screen.Acolors[112], DFT_COLOR("rgb:87/d7/00")),
-COLOR_RES("113", screen.Acolors[113], DFT_COLOR("rgb:87/d7/5f")),
-COLOR_RES("114", screen.Acolors[114], DFT_COLOR("rgb:87/d7/87")),
-COLOR_RES("115", screen.Acolors[115], DFT_COLOR("rgb:87/d7/af")),
-COLOR_RES("116", screen.Acolors[116], DFT_COLOR("rgb:87/d7/d7")),
-COLOR_RES("117", screen.Acolors[117], DFT_COLOR("rgb:87/d7/ff")),
-COLOR_RES("118", screen.Acolors[118], DFT_COLOR("rgb:87/ff/00")),
-COLOR_RES("119", screen.Acolors[119], DFT_COLOR("rgb:87/ff/5f")),
-COLOR_RES("120", screen.Acolors[120], DFT_COLOR("rgb:87/ff/87")),
-COLOR_RES("121", screen.Acolors[121], DFT_COLOR("rgb:87/ff/af")),
-COLOR_RES("122", screen.Acolors[122], DFT_COLOR("rgb:87/ff/d7")),
-COLOR_RES("123", screen.Acolors[123], DFT_COLOR("rgb:87/ff/ff")),
-COLOR_RES("124", screen.Acolors[124], DFT_COLOR("rgb:af/00/00")),
-COLOR_RES("125", screen.Acolors[125], DFT_COLOR("rgb:af/00/5f")),
-COLOR_RES("126", screen.Acolors[126], DFT_COLOR("rgb:af/00/87")),
-COLOR_RES("127", screen.Acolors[127], DFT_COLOR("rgb:af/00/af")),
-COLOR_RES("128", screen.Acolors[128], DFT_COLOR("rgb:af/00/d7")),
-COLOR_RES("129", screen.Acolors[129], DFT_COLOR("rgb:af/00/ff")),
-COLOR_RES("130", screen.Acolors[130], DFT_COLOR("rgb:af/5f/00")),
-COLOR_RES("131", screen.Acolors[131], DFT_COLOR("rgb:af/5f/5f")),
-COLOR_RES("132", screen.Acolors[132], DFT_COLOR("rgb:af/5f/87")),
-COLOR_RES("133", screen.Acolors[133], DFT_COLOR("rgb:af/5f/af")),
-COLOR_RES("134", screen.Acolors[134], DFT_COLOR("rgb:af/5f/d7")),
-COLOR_RES("135", screen.Acolors[135], DFT_COLOR("rgb:af/5f/ff")),
-COLOR_RES("136", screen.Acolors[136], DFT_COLOR("rgb:af/87/00")),
-COLOR_RES("137", screen.Acolors[137], DFT_COLOR("rgb:af/87/5f")),
-COLOR_RES("138", screen.Acolors[138], DFT_COLOR("rgb:af/87/87")),
-COLOR_RES("139", screen.Acolors[139], DFT_COLOR("rgb:af/87/af")),
-COLOR_RES("140", screen.Acolors[140], DFT_COLOR("rgb:af/87/d7")),
-COLOR_RES("141", screen.Acolors[141], DFT_COLOR("rgb:af/87/ff")),
-COLOR_RES("142", screen.Acolors[142], DFT_COLOR("rgb:af/af/00")),
-COLOR_RES("143", screen.Acolors[143], DFT_COLOR("rgb:af/af/5f")),
-COLOR_RES("144", screen.Acolors[144], DFT_COLOR("rgb:af/af/87")),
-COLOR_RES("145", screen.Acolors[145], DFT_COLOR("rgb:af/af/af")),
-COLOR_RES("146", screen.Acolors[146], DFT_COLOR("rgb:af/af/d7")),
-COLOR_RES("147", screen.Acolors[147], DFT_COLOR("rgb:af/af/ff")),
-COLOR_RES("148", screen.Acolors[148], DFT_COLOR("rgb:af/d7/00")),
-COLOR_RES("149", screen.Acolors[149], DFT_COLOR("rgb:af/d7/5f")),
-COLOR_RES("150", screen.Acolors[150], DFT_COLOR("rgb:af/d7/87")),
-COLOR_RES("151", screen.Acolors[151], DFT_COLOR("rgb:af/d7/af")),
-COLOR_RES("152", screen.Acolors[152], DFT_COLOR("rgb:af/d7/d7")),
-COLOR_RES("153", screen.Acolors[153], DFT_COLOR("rgb:af/d7/ff")),
-COLOR_RES("154", screen.Acolors[154], DFT_COLOR("rgb:af/ff/00")),
-COLOR_RES("155", screen.Acolors[155], DFT_COLOR("rgb:af/ff/5f")),
-COLOR_RES("156", screen.Acolors[156], DFT_COLOR("rgb:af/ff/87")),
-COLOR_RES("157", screen.Acolors[157], DFT_COLOR("rgb:af/ff/af")),
-COLOR_RES("158", screen.Acolors[158], DFT_COLOR("rgb:af/ff/d7")),
-COLOR_RES("159", screen.Acolors[159], DFT_COLOR("rgb:af/ff/ff")),
-COLOR_RES("160", screen.Acolors[160], DFT_COLOR("rgb:d7/00/00")),
-COLOR_RES("161", screen.Acolors[161], DFT_COLOR("rgb:d7/00/5f")),
-COLOR_RES("162", screen.Acolors[162], DFT_COLOR("rgb:d7/00/87")),
-COLOR_RES("163", screen.Acolors[163], DFT_COLOR("rgb:d7/00/af")),
-COLOR_RES("164", screen.Acolors[164], DFT_COLOR("rgb:d7/00/d7")),
-COLOR_RES("165", screen.Acolors[165], DFT_COLOR("rgb:d7/00/ff")),
-COLOR_RES("166", screen.Acolors[166], DFT_COLOR("rgb:d7/5f/00")),
-COLOR_RES("167", screen.Acolors[167], DFT_COLOR("rgb:d7/5f/5f")),
-COLOR_RES("168", screen.Acolors[168], DFT_COLOR("rgb:d7/5f/87")),
-COLOR_RES("169", screen.Acolors[169], DFT_COLOR("rgb:d7/5f/af")),
-COLOR_RES("170", screen.Acolors[170], DFT_COLOR("rgb:d7/5f/d7")),
-COLOR_RES("171", screen.Acolors[171], DFT_COLOR("rgb:d7/5f/ff")),
-COLOR_RES("172", screen.Acolors[172], DFT_COLOR("rgb:d7/87/00")),
-COLOR_RES("173", screen.Acolors[173], DFT_COLOR("rgb:d7/87/5f")),
-COLOR_RES("174", screen.Acolors[174], DFT_COLOR("rgb:d7/87/87")),
-COLOR_RES("175", screen.Acolors[175], DFT_COLOR("rgb:d7/87/af")),
-COLOR_RES("176", screen.Acolors[176], DFT_COLOR("rgb:d7/87/d7")),
-COLOR_RES("177", screen.Acolors[177], DFT_COLOR("rgb:d7/87/ff")),
-COLOR_RES("178", screen.Acolors[178], DFT_COLOR("rgb:d7/af/00")),
-COLOR_RES("179", screen.Acolors[179], DFT_COLOR("rgb:d7/af/5f")),
-COLOR_RES("180", screen.Acolors[180], DFT_COLOR("rgb:d7/af/87")),
-COLOR_RES("181", screen.Acolors[181], DFT_COLOR("rgb:d7/af/af")),
-COLOR_RES("182", screen.Acolors[182], DFT_COLOR("rgb:d7/af/d7")),
-COLOR_RES("183", screen.Acolors[183], DFT_COLOR("rgb:d7/af/ff")),
-COLOR_RES("184", screen.Acolors[184], DFT_COLOR("rgb:d7/d7/00")),
-COLOR_RES("185", screen.Acolors[185], DFT_COLOR("rgb:d7/d7/5f")),
-COLOR_RES("186", screen.Acolors[186], DFT_COLOR("rgb:d7/d7/87")),
-COLOR_RES("187", screen.Acolors[187], DFT_COLOR("rgb:d7/d7/af")),
-COLOR_RES("188", screen.Acolors[188], DFT_COLOR("rgb:d7/d7/d7")),
-COLOR_RES("189", screen.Acolors[189], DFT_COLOR("rgb:d7/d7/ff")),
-COLOR_RES("190", screen.Acolors[190], DFT_COLOR("rgb:d7/ff/00")),
-COLOR_RES("191", screen.Acolors[191], DFT_COLOR("rgb:d7/ff/5f")),
-COLOR_RES("192", screen.Acolors[192], DFT_COLOR("rgb:d7/ff/87")),
-COLOR_RES("193", screen.Acolors[193], DFT_COLOR("rgb:d7/ff/af")),
-COLOR_RES("194", screen.Acolors[194], DFT_COLOR("rgb:d7/ff/d7")),
-COLOR_RES("195", screen.Acolors[195], DFT_COLOR("rgb:d7/ff/ff")),
-COLOR_RES("196", screen.Acolors[196], DFT_COLOR("rgb:ff/00/00")),
-COLOR_RES("197", screen.Acolors[197], DFT_COLOR("rgb:ff/00/5f")),
-COLOR_RES("198", screen.Acolors[198], DFT_COLOR("rgb:ff/00/87")),
-COLOR_RES("199", screen.Acolors[199], DFT_COLOR("rgb:ff/00/af")),
-COLOR_RES("200", screen.Acolors[200], DFT_COLOR("rgb:ff/00/d7")),
-COLOR_RES("201", screen.Acolors[201], DFT_COLOR("rgb:ff/00/ff")),
-COLOR_RES("202", screen.Acolors[202], DFT_COLOR("rgb:ff/5f/00")),
-COLOR_RES("203", screen.Acolors[203], DFT_COLOR("rgb:ff/5f/5f")),
-COLOR_RES("204", screen.Acolors[204], DFT_COLOR("rgb:ff/5f/87")),
-COLOR_RES("205", screen.Acolors[205], DFT_COLOR("rgb:ff/5f/af")),
-COLOR_RES("206", screen.Acolors[206], DFT_COLOR("rgb:ff/5f/d7")),
-COLOR_RES("207", screen.Acolors[207], DFT_COLOR("rgb:ff/5f/ff")),
-COLOR_RES("208", screen.Acolors[208], DFT_COLOR("rgb:ff/87/00")),
-COLOR_RES("209", screen.Acolors[209], DFT_COLOR("rgb:ff/87/5f")),
-COLOR_RES("210", screen.Acolors[210], DFT_COLOR("rgb:ff/87/87")),
-COLOR_RES("211", screen.Acolors[211], DFT_COLOR("rgb:ff/87/af")),
-COLOR_RES("212", screen.Acolors[212], DFT_COLOR("rgb:ff/87/d7")),
-COLOR_RES("213", screen.Acolors[213], DFT_COLOR("rgb:ff/87/ff")),
-COLOR_RES("214", screen.Acolors[214], DFT_COLOR("rgb:ff/af/00")),
-COLOR_RES("215", screen.Acolors[215], DFT_COLOR("rgb:ff/af/5f")),
-COLOR_RES("216", screen.Acolors[216], DFT_COLOR("rgb:ff/af/87")),
-COLOR_RES("217", screen.Acolors[217], DFT_COLOR("rgb:ff/af/af")),
-COLOR_RES("218", screen.Acolors[218], DFT_COLOR("rgb:ff/af/d7")),
-COLOR_RES("219", screen.Acolors[219], DFT_COLOR("rgb:ff/af/ff")),
-COLOR_RES("220", screen.Acolors[220], DFT_COLOR("rgb:ff/d7/00")),
-COLOR_RES("221", screen.Acolors[221], DFT_COLOR("rgb:ff/d7/5f")),
-COLOR_RES("222", screen.Acolors[222], DFT_COLOR("rgb:ff/d7/87")),
-COLOR_RES("223", screen.Acolors[223], DFT_COLOR("rgb:ff/d7/af")),
-COLOR_RES("224", screen.Acolors[224], DFT_COLOR("rgb:ff/d7/d7")),
-COLOR_RES("225", screen.Acolors[225], DFT_COLOR("rgb:ff/d7/ff")),
-COLOR_RES("226", screen.Acolors[226], DFT_COLOR("rgb:ff/ff/00")),
-COLOR_RES("227", screen.Acolors[227], DFT_COLOR("rgb:ff/ff/5f")),
-COLOR_RES("228", screen.Acolors[228], DFT_COLOR("rgb:ff/ff/87")),
-COLOR_RES("229", screen.Acolors[229], DFT_COLOR("rgb:ff/ff/af")),
-COLOR_RES("230", screen.Acolors[230], DFT_COLOR("rgb:ff/ff/d7")),
-COLOR_RES("231", screen.Acolors[231], DFT_COLOR("rgb:ff/ff/ff")),
-COLOR_RES("232", screen.Acolors[232], DFT_COLOR("rgb:08/08/08")),
-COLOR_RES("233", screen.Acolors[233], DFT_COLOR("rgb:12/12/12")),
-COLOR_RES("234", screen.Acolors[234], DFT_COLOR("rgb:1c/1c/1c")),
-COLOR_RES("235", screen.Acolors[235], DFT_COLOR("rgb:26/26/26")),
-COLOR_RES("236", screen.Acolors[236], DFT_COLOR("rgb:30/30/30")),
-COLOR_RES("237", screen.Acolors[237], DFT_COLOR("rgb:3a/3a/3a")),
-COLOR_RES("238", screen.Acolors[238], DFT_COLOR("rgb:44/44/44")),
-COLOR_RES("239", screen.Acolors[239], DFT_COLOR("rgb:4e/4e/4e")),
-COLOR_RES("240", screen.Acolors[240], DFT_COLOR("rgb:58/58/58")),
-COLOR_RES("241", screen.Acolors[241], DFT_COLOR("rgb:62/62/62")),
-COLOR_RES("242", screen.Acolors[242], DFT_COLOR("rgb:6c/6c/6c")),
-COLOR_RES("243", screen.Acolors[243], DFT_COLOR("rgb:76/76/76")),
-COLOR_RES("244", screen.Acolors[244], DFT_COLOR("rgb:80/80/80")),
-COLOR_RES("245", screen.Acolors[245], DFT_COLOR("rgb:8a/8a/8a")),
-COLOR_RES("246", screen.Acolors[246], DFT_COLOR("rgb:94/94/94")),
-COLOR_RES("247", screen.Acolors[247], DFT_COLOR("rgb:9e/9e/9e")),
-COLOR_RES("248", screen.Acolors[248], DFT_COLOR("rgb:a8/a8/a8")),
-COLOR_RES("249", screen.Acolors[249], DFT_COLOR("rgb:b2/b2/b2")),
-COLOR_RES("250", screen.Acolors[250], DFT_COLOR("rgb:bc/bc/bc")),
-COLOR_RES("251", screen.Acolors[251], DFT_COLOR("rgb:c6/c6/c6")),
-COLOR_RES("252", screen.Acolors[252], DFT_COLOR("rgb:d0/d0/d0")),
-COLOR_RES("253", screen.Acolors[253], DFT_COLOR("rgb:da/da/da")),
-COLOR_RES("254", screen.Acolors[254], DFT_COLOR("rgb:e4/e4/e4")),
-COLOR_RES("255", screen.Acolors[255], DFT_COLOR("rgb:ee/ee/ee")),
-
-#endif /* included_256colres_h */
diff --git a/nx-X11/programs/xterm/256colres.pl b/nx-X11/programs/xterm/256colres.pl
deleted file mode 100644
index a6b995e48..000000000
--- a/nx-X11/programs/xterm/256colres.pl
+++ /dev/null
@@ -1,57 +0,0 @@
-#! /usr/bin/perl
-# Author: Thomas E. Dickey
-# $XFree86: xc/programs/xterm/256colres.pl,v 1.8 2002/10/05 17:57:11 dickey Exp $
-
-# Construct a header file defining default resources for the 256-color model
-# of xterm. This is modeled after the 256colors2.pl script.
-
-# use the resources for colors 0-15 - usually more-or-less a
-# reproduction of the standard ANSI colors, but possibly more
-# pleasing shades
-
-print <<EOF;
-/*
- * This header file was generated by $0
- */
-/* \$XFree86\$ */
-
-#ifndef included_256colres_h
-#define included_256colres_h
-
-EOF
-
-$line1="COLOR_RES(\"%d\",";
-$line2="\tscreen.Acolors[%d],";
-$line3="\tDFT_COLOR(\"rgb:%2.2x/%2.2x/%2.2x\")),\n";
-
-# colors 16-231 are a 6x6x6 color cube
-for ($red = 0; $red < 6; $red++) {
- for ($green = 0; $green < 6; $green++) {
- for ($blue = 0; $blue < 6; $blue++) {
- $code = 16 + ($red * 36) + ($green * 6) + $blue;
- printf($line1, $code);
- printf($line2, $code);
- printf($line3,
- ($red ? ($red * 40 + 55) : 0),
- ($green ? ($green * 40 + 55) : 0),
- ($blue ? ($blue * 40 + 55) : 0));
- }
- }
-}
-
-# colors 232-255 are a grayscale ramp, intentionally leaving out
-# black and white
-$code=232;
-for ($gray = 0; $gray < 24; $gray++) {
- $level = ($gray * 10) + 8;
- $code = 232 + $gray;
- printf($line1, $code);
- printf($line2, $code);
- printf($line3,
- $level, $level, $level);
-}
-
-print <<EOF;
-
-#endif /* included_256colres_h */
-EOF
diff --git a/nx-X11/programs/xterm/88colres.h b/nx-X11/programs/xterm/88colres.h
deleted file mode 100644
index 94f428bdc..000000000
--- a/nx-X11/programs/xterm/88colres.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * This header file was generated by ./88colres.pl
- */
-/* $XFree86: xc/programs/xterm/88colres.h,v 1.4 2002/10/05 17:57:11 dickey Exp $ */
-
-#ifndef included_88colres_h
-#define included_88colres_h
-
-COLOR_RES("16", screen.Acolors[16], DFT_COLOR("rgb:00/00/00")),
-COLOR_RES("17", screen.Acolors[17], DFT_COLOR("rgb:00/00/8b")),
-COLOR_RES("18", screen.Acolors[18], DFT_COLOR("rgb:00/00/cd")),
-COLOR_RES("19", screen.Acolors[19], DFT_COLOR("rgb:00/00/ff")),
-COLOR_RES("20", screen.Acolors[20], DFT_COLOR("rgb:00/8b/00")),
-COLOR_RES("21", screen.Acolors[21], DFT_COLOR("rgb:00/8b/8b")),
-COLOR_RES("22", screen.Acolors[22], DFT_COLOR("rgb:00/8b/cd")),
-COLOR_RES("23", screen.Acolors[23], DFT_COLOR("rgb:00/8b/ff")),
-COLOR_RES("24", screen.Acolors[24], DFT_COLOR("rgb:00/cd/00")),
-COLOR_RES("25", screen.Acolors[25], DFT_COLOR("rgb:00/cd/8b")),
-COLOR_RES("26", screen.Acolors[26], DFT_COLOR("rgb:00/cd/cd")),
-COLOR_RES("27", screen.Acolors[27], DFT_COLOR("rgb:00/cd/ff")),
-COLOR_RES("28", screen.Acolors[28], DFT_COLOR("rgb:00/ff/00")),
-COLOR_RES("29", screen.Acolors[29], DFT_COLOR("rgb:00/ff/8b")),
-COLOR_RES("30", screen.Acolors[30], DFT_COLOR("rgb:00/ff/cd")),
-COLOR_RES("31", screen.Acolors[31], DFT_COLOR("rgb:00/ff/ff")),
-COLOR_RES("32", screen.Acolors[32], DFT_COLOR("rgb:8b/00/00")),
-COLOR_RES("33", screen.Acolors[33], DFT_COLOR("rgb:8b/00/8b")),
-COLOR_RES("34", screen.Acolors[34], DFT_COLOR("rgb:8b/00/cd")),
-COLOR_RES("35", screen.Acolors[35], DFT_COLOR("rgb:8b/00/ff")),
-COLOR_RES("36", screen.Acolors[36], DFT_COLOR("rgb:8b/8b/00")),
-COLOR_RES("37", screen.Acolors[37], DFT_COLOR("rgb:8b/8b/8b")),
-COLOR_RES("38", screen.Acolors[38], DFT_COLOR("rgb:8b/8b/cd")),
-COLOR_RES("39", screen.Acolors[39], DFT_COLOR("rgb:8b/8b/ff")),
-COLOR_RES("40", screen.Acolors[40], DFT_COLOR("rgb:8b/cd/00")),
-COLOR_RES("41", screen.Acolors[41], DFT_COLOR("rgb:8b/cd/8b")),
-COLOR_RES("42", screen.Acolors[42], DFT_COLOR("rgb:8b/cd/cd")),
-COLOR_RES("43", screen.Acolors[43], DFT_COLOR("rgb:8b/cd/ff")),
-COLOR_RES("44", screen.Acolors[44], DFT_COLOR("rgb:8b/ff/00")),
-COLOR_RES("45", screen.Acolors[45], DFT_COLOR("rgb:8b/ff/8b")),
-COLOR_RES("46", screen.Acolors[46], DFT_COLOR("rgb:8b/ff/cd")),
-COLOR_RES("47", screen.Acolors[47], DFT_COLOR("rgb:8b/ff/ff")),
-COLOR_RES("48", screen.Acolors[48], DFT_COLOR("rgb:cd/00/00")),
-COLOR_RES("49", screen.Acolors[49], DFT_COLOR("rgb:cd/00/8b")),
-COLOR_RES("50", screen.Acolors[50], DFT_COLOR("rgb:cd/00/cd")),
-COLOR_RES("51", screen.Acolors[51], DFT_COLOR("rgb:cd/00/ff")),
-COLOR_RES("52", screen.Acolors[52], DFT_COLOR("rgb:cd/8b/00")),
-COLOR_RES("53", screen.Acolors[53], DFT_COLOR("rgb:cd/8b/8b")),
-COLOR_RES("54", screen.Acolors[54], DFT_COLOR("rgb:cd/8b/cd")),
-COLOR_RES("55", screen.Acolors[55], DFT_COLOR("rgb:cd/8b/ff")),
-COLOR_RES("56", screen.Acolors[56], DFT_COLOR("rgb:cd/cd/00")),
-COLOR_RES("57", screen.Acolors[57], DFT_COLOR("rgb:cd/cd/8b")),
-COLOR_RES("58", screen.Acolors[58], DFT_COLOR("rgb:cd/cd/cd")),
-COLOR_RES("59", screen.Acolors[59], DFT_COLOR("rgb:cd/cd/ff")),
-COLOR_RES("60", screen.Acolors[60], DFT_COLOR("rgb:cd/ff/00")),
-COLOR_RES("61", screen.Acolors[61], DFT_COLOR("rgb:cd/ff/8b")),
-COLOR_RES("62", screen.Acolors[62], DFT_COLOR("rgb:cd/ff/cd")),
-COLOR_RES("63", screen.Acolors[63], DFT_COLOR("rgb:cd/ff/ff")),
-COLOR_RES("64", screen.Acolors[64], DFT_COLOR("rgb:ff/00/00")),
-COLOR_RES("65", screen.Acolors[65], DFT_COLOR("rgb:ff/00/8b")),
-COLOR_RES("66", screen.Acolors[66], DFT_COLOR("rgb:ff/00/cd")),
-COLOR_RES("67", screen.Acolors[67], DFT_COLOR("rgb:ff/00/ff")),
-COLOR_RES("68", screen.Acolors[68], DFT_COLOR("rgb:ff/8b/00")),
-COLOR_RES("69", screen.Acolors[69], DFT_COLOR("rgb:ff/8b/8b")),
-COLOR_RES("70", screen.Acolors[70], DFT_COLOR("rgb:ff/8b/cd")),
-COLOR_RES("71", screen.Acolors[71], DFT_COLOR("rgb:ff/8b/ff")),
-COLOR_RES("72", screen.Acolors[72], DFT_COLOR("rgb:ff/cd/00")),
-COLOR_RES("73", screen.Acolors[73], DFT_COLOR("rgb:ff/cd/8b")),
-COLOR_RES("74", screen.Acolors[74], DFT_COLOR("rgb:ff/cd/cd")),
-COLOR_RES("75", screen.Acolors[75], DFT_COLOR("rgb:ff/cd/ff")),
-COLOR_RES("76", screen.Acolors[76], DFT_COLOR("rgb:ff/ff/00")),
-COLOR_RES("77", screen.Acolors[77], DFT_COLOR("rgb:ff/ff/8b")),
-COLOR_RES("78", screen.Acolors[78], DFT_COLOR("rgb:ff/ff/cd")),
-COLOR_RES("79", screen.Acolors[79], DFT_COLOR("rgb:ff/ff/ff")),
-COLOR_RES("80", screen.Acolors[80], DFT_COLOR("rgb:2e/2e/2e")),
-COLOR_RES("81", screen.Acolors[81], DFT_COLOR("rgb:5c/5c/5c")),
-COLOR_RES("82", screen.Acolors[82], DFT_COLOR("rgb:73/73/73")),
-COLOR_RES("83", screen.Acolors[83], DFT_COLOR("rgb:8b/8b/8b")),
-COLOR_RES("84", screen.Acolors[84], DFT_COLOR("rgb:a2/a2/a2")),
-COLOR_RES("85", screen.Acolors[85], DFT_COLOR("rgb:b9/b9/b9")),
-COLOR_RES("86", screen.Acolors[86], DFT_COLOR("rgb:d0/d0/d0")),
-COLOR_RES("87", screen.Acolors[87], DFT_COLOR("rgb:e7/e7/e7")),
-
-#endif /* included_88colres_h */
diff --git a/nx-X11/programs/xterm/88colres.pl b/nx-X11/programs/xterm/88colres.pl
deleted file mode 100644
index 30a1a18fa..000000000
--- a/nx-X11/programs/xterm/88colres.pl
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/perl
-# Author: Steve Wall
-# $XTermId: 88colres.pl,v 1.15 2005/09/18 23:48:11 tom Exp $
-# $XFree86: xc/programs/xterm/88colres.pl,v 1.7 2005/09/18 23:48:11 dickey Exp $
-# Made from 256colres.pl
-
-# Construct a header file defining default resources for the
-# 88-color model of xterm.
-
-# use the resources for colors 0-15 - usually more-or-less a
-# reproduction of the standard ANSI colors, but possibly more
-# pleasing shades
-
-print <<EOF;
-/*
- * This header file was generated by $0
- */
-/* \$XFree86\$ */
-
-#ifndef included_88colres_h
-#define included_88colres_h
-
-EOF
-
-$line1="COLOR_RES(\"%d\",";
-$line2="\tscreen.Acolors[%d],";
-$line3="\tDFT_COLOR(\"rgb:%2.2x/%2.2x/%2.2x\")),\n";
-@steps=(0,139,205,255);
-
-# colors 16-79 are a 4x4x4 color cube
-for ($red = 0; $red < 4; $red++) {
- for ($green = 0; $green < 4; $green++) {
- for ($blue = 0; $blue < 4; $blue++) {
- $code = 16 + ($red * 16) + ($green * 4) + $blue;
- printf($line1, $code);
- printf($line2, $code);
- printf($line3,
- int (@steps[$red]),
- int (@steps[$green]),
- int (@steps[$blue]));
- }
- }
-}
-
-# colors 80-87 are a grayscale ramp, intentionally leaving out
-# black and white
-for ($gray = 0; $gray < 8; $gray++) {
- $level = ($gray * 23.18181818) + 46.36363636;
- if( $gray > 0 ) { $level += 23.18181818; }
- $code = 80 + $gray;
- printf($line1, $code);
- printf($line2, $code);
- printf($line3,
- int($level), int($level), int($level));
-}
-
-print <<EOF;
-
-#endif /* included_88colres_h */
-EOF
diff --git a/nx-X11/programs/xterm/AAA_README_VMS.txt b/nx-X11/programs/xterm/AAA_README_VMS.txt
deleted file mode 100644
index edf8ef198..000000000
--- a/nx-X11/programs/xterm/AAA_README_VMS.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-http://dickey.his.com/xterm/xterm.html
-
-Downloaded 1.22 variant (current Linux version) on 18-JAN-2000.
-
-Port stalled for a few days because OpenVMS X11 lacks XtGravity.
-
-X11KIT shared libraries almost work, but missing _XA_ symbols
-for some reason.
-
-Copied X11KIT [.xaw3d] and [.xmu] into [.lib], put together simplified
-build procedures. Made a few mods. Merged in some changes from
-Patrick Young. Now these build mostly ok except for tons of bcopy
-related warnings and problems with LAYOUT.C.
-
-Merged changes from Xterm021 into here.
-
-Made changes here and there to get it all to work.
-
-25-JAN-2000, more or less done. Logging doesn't work but PRINT
-does, as does regular VT emulation, TEK emulation, 80 and 132 wide
-modes. The resource file needs work. Cleaned up a really nasty problem
-with infinite loops on copy/paste in button.c (see tt_pasting).
-
-To build this, if you have DECC, DW 1.2-5 and VMS 7.2-1 (the latter
-probably doesn't matter) do:
-
-$ @make
-
-in the top directory. Expect a bunch of I and W warnings, but nothing
-worse. Then define a foreign symbol for xterm for the resulting .exe.
-
-26-JAN-2000. Enabled logging. When this is turned on from the menu
-it creates a new file SYS$SCRATCH:XTERM_LOG.TXT and writes everything that
-goes to the screen into it. This may slow down output a bit as each block
-of data read must be copied to disk. The log file has RMS format stream-lf
-and typically has a <CR> at the end of each line.
-
-27-JAN-2000. Discovered a bug when doing an X11 paste into an EDT session,
-had to add a tt_start_read() in button.c after the paste to reenable the
-read AST. Rearranged code in VMS.C to make the compiler happy and
-eliminate warnings.
-
-David Mathog
-mathog@seqaxp.bio.caltech.edu
-Manager, sequence analysis facility, biology division, Caltech
-
-
-$XFree86: xc/programs/xterm/AAA_README_VMS.txt,v 1.2 2000/06/13 02:28:37 dawes Exp $
diff --git a/nx-X11/programs/xterm/INSTALL b/nx-X11/programs/xterm/INSTALL
deleted file mode 100644
index 844ad8362..000000000
--- a/nx-X11/programs/xterm/INSTALL
+++ /dev/null
@@ -1,487 +0,0 @@
--- $XTermId: INSTALL,v 1.94 2005/11/03 13:17:26 tom Exp $
--- $XFree86: xc/programs/xterm/INSTALL,v 3.40 2005/11/03 13:17:26 dickey Exp $
--- Thomas E. Dickey
-
-Xterm is normally built as part of the X Window System source tree, using
-imake to generate a Makefile from Imakefile. You can also use the
-configure script to generate a Makefile from Makefile.in:
-
- + If you have imake (or xmkmf), then you can use those directly,
- or use the configure script, which normally uses those tools
- to obtain the special definitions needed to build xterm.
-
- Ultimately, imake will not be necessary, since it is possible
- to add configure tests that derive the information that imake
- would supply.
-
- + You need the Athena widgets (or a clone, such as Xaw3d or
- neXtaw), to provide the popup menus.
-
-Even if you have imake, the configure script is still convenient because
-it allows you to build different configurations more easily than with
-imake, simply by specifying options to the configure script.
-
-Options:
--------
-
-Autoconf configure scripts recognize two types of application-defined
-options, enable/disable and with/without. The latter, by convention, are
-used for denoting inclusion of external packages, while the former denote
-enabling/disabling of internal features. The configure --help option lists
-the available options. This script uses "enable" and "disable" to indicate
-the sense of the default behavior.
-
-The options (in alphabetic order):
-
- --disable-16-color disable 16-color support
-
- Do not compile-in code to recognize aixterm-style control sequences
- that support color values 8-15.
-
- Most color applications know only about 8 ANSI colors, but some
- (e.g., ones built with ncurses) do.
-
- --disable-active-icon disable X11R6.3 active-icon feature
-
- Do not compile-in code to support the active-icon feature. This is
- not configured on systems (e.g., X11R5) which lack the library
- support needed.
-
- Xterms with an active icon continue to respond to input and update
- their display when iconified. Not all window managers support
- active icons. Those that do include fvwm, olvwm and mwm.
-
- --disable-ansi-color disable ANSI color
-
- Do not compile-in code for ANSI colors.
-
- --disable-blink-cursor disable support for blinking cursor
-
- Do not compile-in code that implements a blinking cursor. The blinking
- cursor is enabled either by resource setting or by popup menu entry.
-
- --disable-bold-color disable PC-style mapping of bold colors
-
- Do not compile-in code that maps colors 8-15 to bold versions of
- colors 0-7.
-
- Some applications have hardcoded logic that assumes this. It does
- not interfere with the 16-color support.
-
- --disable-boxchars disable fallback-support for box chars
-
- Do not compile-in code to generate approximations for box/graphic
- characters.
-
- Most fonts do not contain the vt100-style graphic characters in
- positions 0-31. Many applications use the line-drawing characters,
- e.g., to make boxes. When xterm loads a font, it checks if those
- characters are present, and draws its own if they are missing.
-
- --disable-c1-print disallow -k8 option for printable 128-159],
-
- Use this option to suppress support for nonstandard use of codes
- 128-159, which normally are considered control characters. Some users
- have fonts which use those positions. The default value for the
- allowC1Printable resource is false, so this feature does not impact
- normal users.
-
- --disable-color-class disable color class resources
-
- Use this option to change most of the color resources to use Foreground
- as the color class. This is the older (before patch #157) behavior
- which has the drawback that setting the Foreground resource on most
- platforms prevents use of color since the class is evaluated before
- the instance.
-
- --disable-color-mode disable default colorMode resource
-
- Do not compile-in code that sets the default value of the colorMode
- resource to ``true''.
-
- --disable-doublechars disable support for double-size chars
-
- Do not compile-in code that supports font-manipulation needed to
- implement vt100-style double-sized characters.
-
- --disable-echo test: display "compiling" commands
-
- Modify the generated Makefile so that most compiler options are
- not shown. This makes it simpler to read a build log and see the
- actual warning messages.
-
- --disable-freetype disable freetype library-support
-
- Do not use freetype libraries if they are found. Normally they will
- be used automatically.
-
- --disable-full-tgetent disable check for termcap library
-
- Do not look for the tgetent() function specifically in the termcap
- library, accept the first library (from termlib, ncurses and curses)
- which contains this function rather than continuing to search for
- a termcap implementation rather than terminfo. The former would
- supply the complete $TERMCAP data needed for some legacy programs.
-
- --disable-highlighting disable support for color highlighting
-
- Do not compile-in code that allows the selected region to be a
- different color than the reverse of foreground/background colors.
-
- See the discussion of highlightColor in the manual.
-
- --disable-i18n disable internationalization
-
- Do not compile-in code to handle multi-byte characters. This is
- related to, but not identical with the input method logic.
-
- --disable-imake disable use of imake for definitions
-
- Do not attempt to use imake to determine compiler options.
-
- The main.c file has many ifdef's which rely on obscure combinations
- known only to imake. The configure script implements only a
- portion of the tests needed to supplant imake.
-
- --disable-initial-erase disable setup for stty erase
-
- Do not compile-in code which aligns the stty erase and the backarrow
- key. When compiled-in, xterm will optionally use the pty's sense
- of stty erase and apply that to the backarrow mode (sending 8 or 127),
- or go the other way, setting stty erase to match xterm's configuration.
-
- --disable-input-method disable input-method
-
- Do not compile-in code for "input method". This is an X11R6
- feature which deals with translation of composite characters.
-
- Some users report problems with their configuration, e.g., messages
- stating that there is no input method defined for the given preedit
- type. If you do not need input method (and are troubled by the
- warning messages), it is safe to disable this option.
-
- --disable-maximize disable actions for iconify/deiconify/maximize/restore
-
- Do not compile-in code that implements runtime 'actions' for
- iconifying, maximizing, etc.
-
- Most users will find that the window manager is more suitable for
- this sort of manipulation than putting the capabilities into xterm.
-
- --disable-num-lock disable NumLock keypad support
-
- Do not compile-in code that looks for the actual NumLock key to
- support vt100/vt220 keypad translation.
-
- This is used in xterm to simplify logic, and to workaround some
- quirks of the keyboard tables. Use the ``numLock'' resource to
- disable this feature if you must customize xterm in some other way.
-
- (The same ifdef controls the metaSendsEscape support).
-
- --disable-pty-handshake disable support for pty handshakes
-
- This feature is used to ensure that the child process's terminal modes
- match the parent's. In particular, it addresses a problem where the
- terminal size is not defined in the stty settings.
-
- --disable-rightbar disable right-scrollbar support
-
- Do not compile-in code that supports a scrollbar on the right.
-
- Left/right scrollbars are a matter of taste. Some older libraries
- (e.g., X11R5) do not perform the geometry computation correctly,
- leaving the right scrollbar incorrectly positioned after changing
- the font size.
-
- --disable-samename disable check for redundant name-change
-
- Do not compile-in code that suppresses redundant updates to the
- titlebar when the text has not changed.
-
- --disable-session-mgt enable support for session management
-
- Do not compile-in code which adds simple session management hooks which
- are used when closing an xterm. Normally the code is compiled-in,
- except for systems which do not support it.
-
- --disable-setuid disable setuid/setgid
-
- Do not install xterm using setuid or setgid permissions. Drop setuid
- and setgid permissions on startup. This is done if you have linked
- xterm with the utempter library, but may also be useful for systems
- where the pseudoterminal and utmp interfaces are wrapped so that xterm
- does not require these permissions.
-
- --disable-tek4014 disable tek4014 emulation
-
- Do not compile-in code to support Tektronix 4014 emulation.
-
- This reduces the executable size by 17% (checked 1999/3/13).
-
- Some people use the Tektronix emulation (which has been in xterm
- for many years) as an example of code bloat, though this is not an
- accurate impression.
-
- --disable-vt52 disable VT52 emulation
-
- Do not compile-in code to support vt52 emulation.
-
- A genuine vt100 emulates a vt52.
-
- --disable-ziconbeep disable -ziconbeep option
-
- Do not compile-in code that modifies the icon's title and sounds a
- beep when they receive output.
-
- --enable-256-color enable 256-color support
-
- Compile-in code that interprets SGR 38 and 48 for 256-colors.
-
- --enable-88-color enable 88-color support
-
- Compile-in code that interprets SGR 38 and 48 for 88-colors.
-
- --enable-broken-osc allow broken Linux OSC-strings],
-
- Compile-in code to accommodate scripts that write Linux's malformed
- palette control strings without checking. The result makes xterm
- appear to freeze. This workaround makes xterm ignore the strings,
- and is compiled-in by default for Linux.
-
- --enable-broken-st allow broken string-terminators],
-
- Compile-in code that works around a bug in some ISDN routers (and
- possibly other applications written by the same people): they send an
- unterminated control string in their banner text, making xterm freeze.
- The workaround tells xterm to stop processing the control string when
- it receives one of the whitespace control characters such as newline.
- That was the behavior before patch #171.
-
- --enable-dabbrev enable dynamic-abbreviation support
-
- Compile-in support for "dabbrev-expand()" action and related key
- translation.
-
- --enable-dec-locator enable DECterm Locator support
- Add support for DEC Locator control sequences for xterm:
-
- DECEFR - Enable Filter Rectangle
- DECELR - Enable Locator Reports
- DECSLE - Select Locator Events
- DECRQLP - Request Locator Position
-
- This allows the xterm mouse to be used with applications that use the
- DEC Locator sequences, such as VAX Tpu, or SMG$ based applications.
-
- --enable-hp-fkeys enable support for HP-style function keys
-
- Compile-in code to support HP-style function keys.
-
- --enable-load-vt-fonts enable load-vt-fonts() action
-
- Compile-in code that allows user to define load different VT-font
- definitions at runtime.
-
- --enable-logfile-exec enable exec'd logfile filter
-
- Compile-in code that allows logging piped via an external filter.
-
- --enable-logging enable logging
-
- Compile-in code that allows logging.
-
- Logging was disabled in X11R5 xterm because of security problems.
- They were addressed in X11R6, but the feature was not reinstated.
-
- --enable-luit enable support for luit filter (Unicode translation)
-
- Luit is a filter that can be run between an arbitrary application and a
- UTF-8 terminal emulator. It will convert application output from the
- locale's encoding into UTF-8, and convert terminal input from UTF-8
- into the locale's encoding.
-
- This sets "--enable-wide-chars" as a side-effect.
-
- --enable-mini-luit enable support for poor man's luit filter (Latin-9)
-
- Provide built-in support for Latin-9, relying on having specified
- Unicode (ISO10646) fonts and setting the locale resource to "checkfont".
-
- This sets "--enable-luit" as a side-effect.
-
- --enable-narrowproto enable narrow prototypes for X libraries
-
- Originally xterm was built using imake rather than a configure script.
- One feature of imake that is not possible to guess within the
- configure script is the wide-prototype compile-time definition
- NARROWPROTO. When this is not set properly, the Athena widget
- scrollbars do not work properly. xterm's configure script has a
- fallback case which allows disabling imake. However, this is moot
- with the Xorg "modular" build, whose compiler options are unrelated to
- imake or older versions of any libraries that it may distribute. In
- this case, the configure script needs some help. Use this option to
- enable or disable NARROW proto (and disable imake with the
- --disable-imake option) to match the whims of Xorg hackers.
-
- For instance
-
- configure --disable-imake --disable-narrowproto
-
- --enable-paste64 enable support for bracketed paste mode
-
- Compile-in code to support experimental bracketed paste mode, i.e.,
- provide functions for setting/getting the selection data.
-
- (see ctlseqs.ms description of OSC 52).
-
- --enable-readline-mouse enable support for mouse in readline applications
-
- Compile-in code to support experimental bracketed paste mode, i.e.,
- provide functions for setting/getting the selection data. Essentially
- this puts xterm into a mode that sends special function-key strings to
- bracket the data.
-
- (See --enable-paste64, which fits xterm's protocol better).
-
- --enable-sco-fkeys enable support for SCO-style function keys
-
- Compile-in code to support SCO-style function keys.
-
- --enable-tcap-query enable termcap query/report
-
- Compile-in code to support experimental DCS '+' control sequence, which
- allows an application to ask xterm what control sequences it would
- transmit for specified function keys, given the termcap or terminfo
- names.
-
- --enable-toolbar enable pulldown menus on toolbar
-
- Compile-in code that builds a toolbar with pulldown menus. The
- normal popup menus are still available.
-
- This is an experimental option. As of patch #206, it is known to
- work well with fvwm, but not as well with some other window managers,
- e.g., KDE's Kwin and IceWM.
-
- In addition to isolated layout problems, it is reported that some
- flavors of the Athena widget library perform badly with ISO-10646
- fonts. You can work around those by setting the menu fonts to
- an ISO-8859 variant in your X resources.
-
- --enable-trace test: set to enable debugging traces
-
- Compile-in code to trace xterm's internal states.
-
- This is a debugging feature. It causes xterm to produce two files
- (Trace-parent.out and Trace-child.out).
-
- --enable-warnings test: turn on GCC compiler warnings
-
- Modify the generate Makefile to turn on gcc compiler warnings.
-
- I use this option regularly, and correct all but a few (difficult)
- problems.
-
- --enable-wide-chars enable wide-character support
-
- Compile-in code that supports 16-bit characters. Includes support
- for UTF-8.
-
- --enable-xmc-glitch test: enable xmc magic-cookie emulation
-
- Compile-in code that simulates the terminfo "magic cookie" glitch.
-
- This is for testing ncurses.
-
- --with-Xaw3d link with Xaw 3d library
-
- Look for, compile and link with the Xaw 3d widget library.
-
- --with-XawPlus link with Athena-Plus library
-
- Look for, compile and link with the Xaw Plus widget library.
-
- --with-freetype-cflags -D/-I options for compiling with FreeType library
-
- Override options provided by xft-config or freetype-config.
-
- --with-freetype-libs -L/-l options for linking with FreeType library
-
- Override options provided by xft-config or freetype-config.
-
- --with-neXtaw link with neXT Athena library
-
- Look for, compile and link with the neXT Athena widget library.
-
- --with-own-terminfo=P set default $TERMINFO (default: from environment)
-
- Modify the generated Makefile to set the target for the 'install-ti'
- rule to point to the given directory.
-
- If you have the $TERMINFO variable defined in your environment, the
- configure script will use that value. If no option and no variable
- are are given, the configure script uses /usr/lib/terminfo, if it
- exists.
-
- You do not have to run "make install-ti", if there is already a
- workable terminfo description. Be advised, however, that the
- common variety of "xterm-color" is not suited for xterm, but is
- directed to other variations (such as nxterm) which do not
- support the back-color erase capability.
-
- --with-reference=XXX program to use as permissions-reference
-
- To install xterm with setuid permissions, the scripts usually compare
- it with a previous install. That works well for individual
- maintainers, but can be a problem for packagers who may be
- cross-compiling, etc. This option lets the package builder specify
- the file used for permissions reference.
-
- --with-setuid=XXX use the given setuid user
-
- Install xterm setuid'd to the given user. If no parameter value
- is given, assume it is root.
-
- See also --with-utmp-setgid and --with-utempter, which manipulate
- the setgid group.
-
- --with-terminal-id[=V] set default decTerminalID (default: vt100)
-
- Set the default emulation level.
-
- DEC terminals vt52/vt100/vt220/etc form a series where succeeding
- models emulate features of the older terminals. While most
- features of these terminals are recognized by xterm at all levels,
- a few behave differently according to the emulation level.
-
- You can always override this with the command-line option "-ti".
-
- --with-terminal-type=T set default $TERM (default: xterm)
-
- Set the default value for $TERM. Xterm supports legacy termcap
- applications by constructing a modified version of the $TERMCAP
- variable at initialization, which supplies the resulting screen
- size. It also sets $TERM, if not already set, for use by programs
- running within xterm.
-
- The default value "xterm", can be overridden to avoid conflict
- with older versions of xterm, e.g., those that do not implement
- vt220 emulation.
-
- You can always override this with the command-line option "-tn".
-
- --with-utempter use utempter library for access to utmp
-
- The utempter library is a set-uid wrapper for the utmp facility.
- On systems with Unix98 pty's, xterm can use this library when
- available so it need not be installed set-uid.
-
- --with-utmp-setgid use setgid for access to utmp
-
- The option value specifies a group to use when installing.
- xterm will be installed with setgid privilege to this group.
- At runtime, xterm will drop the setuid privilege immediately
- after opening the pseudo-terminal, and will have only the
- group privilege needed to access the utmp file. This relies
- on having POSIX setuid behavior.
diff --git a/nx-X11/programs/xterm/Imakefile b/nx-X11/programs/xterm/Imakefile
deleted file mode 100644
index 4620c2c8d..000000000
--- a/nx-X11/programs/xterm/Imakefile
+++ /dev/null
@@ -1,325 +0,0 @@
-/**************************************************************************/
-/* */
-/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */
-/* */
-/* NX-X11, NX protocol compression and NX extensions to this software */
-/* are copyright of NoMachine. Redistribution and use of the present */
-/* software is allowed according to terms specified in the file LICENSE */
-/* which comes in the source distribution. */
-/* */
-/* Check http://www.nomachine.com/licensing.html for applicability. */
-/* */
-/* NX and NoMachine are trademarks of Medialogic S.p.A. */
-/* */
-/* All rights reserved. */
-/* */
-/**************************************************************************/
-
-XCOMM $XTermId: Imakefile,v 1.87 2005/11/13 23:10:35 tom Exp $
-XCOMM
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:55:07 cpqbld Exp $
-XCOMM
-XCOMM Attention xterm porters
-XCOMM
-XCOMM
-XCOMM Xterm assumes that bcopy can handle overlapping arguments. If your
-XCOMM bcopy (or memcpy) cannot, write a routine called bcopy and link it in
-XCOMM or add -Dbcopy=mybcopy to the DEFINES list below.
-XCOMM
-XCOMM $XFree86: xc/programs/xterm/Imakefile,v 3.61 2005/11/13 23:10:35 dickey Exp $
-XCOMM
-
-#if NXLibraries
-
-/*
- * This will make applications that use the Xt
- * toolkit deal with the NX modified select().
- */
-
-NX_DEFINES = -DNX_TRANS_SOCKET \
- -DNX_TRANS_EXIT
-
-# -DNX_TRANS_TEST \
-# -DNX_TRANS_DEBUG
-
-#endif
-
-/* Uncomment SCROLLBAR_RIGHT if you want the scroll bar to be on the right */
-SCROLLBAR_RIGHT = -DSCROLLBAR_RIGHT
-
-/* Define UTF8support to compile-in support for UTF-8 */
-#define UTF8support
-
-#if defined(UseUtempter)
-#undef InstallXtermSetUID /* imake sets this */
-#define InstallXtermSetUID NO
-#define InstallXtermSetGID NO
- UTMPLIB = -lutempter
-#endif
-
-/*
- * setgid mode works for systems that do not require setuid to open pty.
- */
-#if defined(OpenBSDArchitecture) || \
- (defined(LinuxArchitecture) && \
- (LinuxCLibMajorVersion == 6)) || \
- defined(FreeBSDArchitecture)
-#undef InstallXtermSetGID
-#define InstallXtermSetGID YES
-#endif
-
-/*
- * Fixes to allow compile with X11R5
- */
-#ifndef XkbClientDefines
-#define XkbClientDefines /**/
-#endif
-
-#ifndef InstallXtermSetUID
-#define InstallXtermSetUID NO
-#endif
-
-#ifndef InstallXtermSetGID
-#define InstallXtermSetGID NO
-#endif
-
-#ifndef XkbClientDepLibs
-#define XkbClientDepLibs /**/
-#endif
-
-#ifndef XkbClientLibs
-#define XkbClientLibs /**/
-#endif
-
-/*
- * Compensate for broken imake configuration.
- */
-#ifdef LinuxGnuSourceDefines
-# ifdef UseInstalled
- IMAKEDEFINES = -D_GNU_SOURCE
-# endif
-#endif
-
-#ifndef SpecialCObjectRule
-#define SpecialCObjectRule(module,ignore,defines) \
-module.o: ; $(CC) -c defines $(CFLAGS) module.c
-#endif
-
-#ifndef ProgramTargetName
-#define ProgramTargetName(program) program
-#endif
-
-/*
- * add -DWTMP and -DLASTLOG if you want them; make sure that bcopy can
- * handle overlapping copies before using it.
- */
-#if SetTtyGroup /* turn on in config/machine.cf */
- TTYGROUPDEF = -DUSE_TTY_GROUP
-#endif
-#ifdef UsePUCCPtyd /* turn on in config/site.def */
- PUCCPTYDDEF = -DPUCC_PTYD /* does not need to be setuid */
- PTYLIB = -lpucc
-#endif
-
-#if defined(NetBSDArchitecture) || \
- defined(OpenBSDArchitecture) || \
- defined(FreeBSDArchitecture) || \
- (defined(LinuxArchitecture) && \
- (LinuxCLibMajorVersion == 6) && (LinuxCLibMinorVersion < 1))
- PTYLIB = -lutil
-#endif
-
-#ifdef DarwinArchitecture
-/* dyld can deadlock if a signal comes in when it is looking up a symbol */
- LOCAL_LDFLAGS = -Wl,-bind_at_load
-#endif
-
-#ifdef OS2Architecture
-/*
- * Only used in os2main.c, see ptyx.h for OPT_I18N_SUPPORT
- * <werner@suse.de>
- */
-#if XtermWithI18N
- I18NDEF = -DI18N
- FEATURE_DEFINES = -DDEBUG -DALLOWLOGGING $(I18NDEF)
-#else
- FEATURE_DEFINES = -DDEBUG -DALLOWLOGGING
-#endif
-#endif
-
- OSMAJORVERSION = OSMajorVersion
- OSMINORVERSION = OSMinorVersion
-
-#if !defined(OS2Architecture) && !defined(__GNU__)
-#if defined(UseUtempter)
- UTMPDEF = -DUSE_UTEMPTER
-#else
- UTMPDEF = -DUTMP
-#endif
-#endif
-
-#ifdef UTF8support
- UTF8_OPTION = -DOPT_WIDE_CHARS -DOPT_LUIT_PROG
- UTF8SRC = charclass.c precompose.c wcwidth.c xutf8.c
- UTF8OBJ = charclass.o precompose.o wcwidth.o xutf8.o
-#endif
-#if BuildXftLibrary
-#define XRenderSupport
-#endif
-#ifdef XRenderSupport
- XRFDEF = -DXRENDERFONT -DXFREE86_FT2
- XRFLIBS = XftClientLibs
- XRFDEPLIBS = XftClientDepLibs
- XRFINCLUDES = $(XFTINCLUDES)
-#endif
-#if !HasPutenv
- PUTENVDEF = -DNOPUTENV
-#endif
-#ifdef TraceXTerm
- TRACEDEF = -DOPT_TRACE=1
-#endif
- MAIN_DEFINES = $(UTMPDEF) $(TTYGROUPDEF) $(PUCCPTYDDEF) \
- -DOSMAJORVERSION=$(OSMAJORVERSION) \
- -DOSMINORVERSION=$(OSMINORVERSION)
- MISC_DEFINES = /* -DALLOWLOGGING -DALLOWLOGFILEEXEC */
- XKB_DEFINES = XkbClientDefines
- PATH_DEFINES = -DPROJECTROOT=$(PROJECTROOT)
-#if NXLibraries
- DEFINES = $(XKB_DEFINES) $(TERMCAPDEFINES) $(FEATURE_DEFINES) $(SCROLLBAR_RIGHT) $(UTF8_OPTION) $(XRFDEF) $(PATH_DEFINES) $(PUTENVDEF) $(IMAKEDEFINES) $(TRACEDEF) $(NX_DEFINES)
-#else
- DEFINES = $(XKB_DEFINES) $(TERMCAPDEFINES) $(FEATURE_DEFINES) $(SCROLLBAR_RIGHT) $(UTF8_OPTION) $(XRFDEF) $(PATH_DEFINES) $(PUTENVDEF) $(IMAKEDEFINES) $(TRACEDEF)
-#endif
- INCLUDES = -I. $(XRFINCLUDES)
-
-#ifdef OS2Architecture
- MAINSRC = os2main.c
- MAINOBJ = os2main.o
-#else
- MAINSRC = main.c
- MAINOBJ = main.o
-#endif
-#ifdef TraceXTerm
- TRACESRC = trace.c
- TRACEOBJ = trace.o
-#endif
- SRCS1 = button.c charproc.c charsets.c cursor.c \
- data.c doublechr.c fontutils.c input.c \
- menu.c misc.c print.c ptydata.c \
- screen.c scrollbar.c tabs.c util.c xstrings.c \
- TekPrsTbl.c Tekproc.c VTPrsTbl.c \
- $(MAINSRC) $(EXTRASRC) $(UTF8SRC) $(TRACESRC)
- OBJS1 = button.o charproc.o charsets.o cursor.o \
- data.o doublechr.o fontutils.o input.o \
- menu.o misc.o print.o ptydata.o \
- screen.o scrollbar.o tabs.o util.o xstrings.o \
- TekPrsTbl.o Tekproc.o VTPrsTbl.o \
- $(MAINOBJ) $(EXTRAOBJ) $(UTF8OBJ) $(TRACEOBJ)
- SRCS2 = resize.c xstrings.c
- OBJS2 = resize.o xstrings.o
- SRCS = $(SRCS1) $(SRCS2)
- OBJS = $(OBJS1) $(OBJS2)
- PROGRAMS = ProgramTargetName(resize) ProgramTargetName(xterm)
- DEPLIBS1 = XkbClientDepLibs XawClientDepLibs $(XRFDEPLIBS)
- DEPLIBS2 =
-
-#ifndef TermcapLibrary
-#if SystemV && !defined(MacIIArchitecture)
-#if defined(CrayArchitecture) || \
- (defined(HPArchitecture) && (OSMajorVersion < 10)) || \
- defined(RsArchitecture) || \
- defined(SCOArchitecture) || \
- defined(USLArchitecture)
-#define TermcapLibrary -lcurses /* special cases of System V */
-#else
-#define TermcapLibrary -ltermlib /* usually in here */
-#endif
-#else
-#define TermcapLibrary -ltermcap /* bsd puts it here */
-#endif
-#endif
-
- TERMCAPLIB = TermcapLibrary
-
-AllTarget($(PROGRAMS))
-
-SpecialCObjectRule(main,$(_NOOP_),$(MAIN_DEFINES))
-SpecialCObjectRule(menu,$(_NOOP_),$(MISC_DEFINES))
-SpecialCObjectRule(misc,$(_NOOP_),$(MISC_DEFINES))
-SpecialCObjectRule(charproc,$(_NOOP_),$(MISC_DEFINES))
-SpecialCObjectRule(data,$(_NOOP_),$(MISC_DEFINES))
-
-#if InstallXtermSetUID
-INSTUIDFLAGS = -m 4711
-SetUIDProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(PTYLIB))
-#else
-NormalProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(UTMPLIB) $(PTYLIB))
-#endif
-
-#if InstallXtermSetGID
-CSGIDFLAGS = -DUSE_UTMP_SETGID
-INSTUIDFLAGS = -m 2755 -g utmp
-#endif
-
-#if InstallXtermSetUID && defined(SunArchitecture) && HasSharedLibraries && (OSMajorVersion < 5)
-#if AlternateUsrLibDir
-#if ((OSMajorVersion == 4) && (OSMinorVersion >= 1))
-LDOVERRIDE = -L$(DESTDIR)$(USRLIBDIR)
-#else
-#if HasGcc
-LDOVERRIDE = -static -L$(DESTDIR)$(USRLIBDIR)
-#else
-LDOVERRIDE = -Bstatic -L$(DESTDIR)$(USRLIBDIR)
-LDRESUME = -Bdynamic
-#endif
-#endif
-#endif
-install::
- MakeDir($(DESTDIR)$(BINDIR))
- RemoveFile(ProgramTargetName(xterm.inst))
- LinkRule(ProgramTargetName(xterm.inst),$(CDEBUGFLAGS) $(CCOPTIONS)
- $(EXTRA_LDOPTIONS) $(LOCAL_LDFLAGS),$(OBJS1),$(LDOVERRIDE)
- $(XRFLIBS) XawClientLibs $(LDRESUME) $(LDLIBS) $(TERMCAPLIB)
- $(PTYLIB))
- $(INSTALL) -c $(INSTPGMFLAGS) $(INSTUIDFLAGS) ProgramTargetName(xterm.inst) $(DESTDIR)$(BINDIR)/ProgramTargetName(xterm)
- RemoveFile(ProgramTargetName(xterm.inst))
-#else
-#if InstallXtermSetUID
-InstallProgramWithFlags(xterm,$(BINDIR),$(INSTUIDFLAGS))
-#else
-InstallProgramWithFlags(xterm,$(BINDIR),NullParameter)
-#endif
-#endif
-
-InstallNamedProg(uxterm,uxterm,$(BINDIR))
-
-/*
- * Link with the termcap library if USE_TERMCAP is defined in resize.c
- */
-#if defined(NTOArchitecture) || \
- defined(LinuxArchitecture) || \
- defined(OpenBSDArchitecture) || \
- defined(SGIArchitecture) || \
- defined(SunArchitecture)
-NormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,NullParameter)
-#else
-NormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,$(TERMCAPLIB))
-#endif
-
-InstallProgramWithFlags(resize,$(BINDIR),NullParameter)
-
-/*
- * termcap is a special name that does not install correctly with
- * InstallNamedNonExec()
- */
-install::
- MakeDir($(DESTDIR)$(LIBDIR)/etc)
- $(INSTALL) $(INSTALLFLAGS) $(INSTDATFLAGS) termcap \
- $(DESTDIR)$(LIBDIR)/etc/xterm.termcap
-InstallNamedNonExec(terminfo,xterm.terminfo,$(LIBDIR)/etc)
-
-InstallAppDefaults(XTerm)
-InstallAppDefaults(UXTerm)
-InstallAppDefaultsLong(XTerm-col,XTerm-color)
-InstallManPage(xterm,$(MANDIR))
-InstallManPage(resize,$(MANDIR))
-DependTarget()
diff --git a/nx-X11/programs/xterm/Imakefile.NX.original b/nx-X11/programs/xterm/Imakefile.NX.original
deleted file mode 100644
index 4620c2c8d..000000000
--- a/nx-X11/programs/xterm/Imakefile.NX.original
+++ /dev/null
@@ -1,325 +0,0 @@
-/**************************************************************************/
-/* */
-/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */
-/* */
-/* NX-X11, NX protocol compression and NX extensions to this software */
-/* are copyright of NoMachine. Redistribution and use of the present */
-/* software is allowed according to terms specified in the file LICENSE */
-/* which comes in the source distribution. */
-/* */
-/* Check http://www.nomachine.com/licensing.html for applicability. */
-/* */
-/* NX and NoMachine are trademarks of Medialogic S.p.A. */
-/* */
-/* All rights reserved. */
-/* */
-/**************************************************************************/
-
-XCOMM $XTermId: Imakefile,v 1.87 2005/11/13 23:10:35 tom Exp $
-XCOMM
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:55:07 cpqbld Exp $
-XCOMM
-XCOMM Attention xterm porters
-XCOMM
-XCOMM
-XCOMM Xterm assumes that bcopy can handle overlapping arguments. If your
-XCOMM bcopy (or memcpy) cannot, write a routine called bcopy and link it in
-XCOMM or add -Dbcopy=mybcopy to the DEFINES list below.
-XCOMM
-XCOMM $XFree86: xc/programs/xterm/Imakefile,v 3.61 2005/11/13 23:10:35 dickey Exp $
-XCOMM
-
-#if NXLibraries
-
-/*
- * This will make applications that use the Xt
- * toolkit deal with the NX modified select().
- */
-
-NX_DEFINES = -DNX_TRANS_SOCKET \
- -DNX_TRANS_EXIT
-
-# -DNX_TRANS_TEST \
-# -DNX_TRANS_DEBUG
-
-#endif
-
-/* Uncomment SCROLLBAR_RIGHT if you want the scroll bar to be on the right */
-SCROLLBAR_RIGHT = -DSCROLLBAR_RIGHT
-
-/* Define UTF8support to compile-in support for UTF-8 */
-#define UTF8support
-
-#if defined(UseUtempter)
-#undef InstallXtermSetUID /* imake sets this */
-#define InstallXtermSetUID NO
-#define InstallXtermSetGID NO
- UTMPLIB = -lutempter
-#endif
-
-/*
- * setgid mode works for systems that do not require setuid to open pty.
- */
-#if defined(OpenBSDArchitecture) || \
- (defined(LinuxArchitecture) && \
- (LinuxCLibMajorVersion == 6)) || \
- defined(FreeBSDArchitecture)
-#undef InstallXtermSetGID
-#define InstallXtermSetGID YES
-#endif
-
-/*
- * Fixes to allow compile with X11R5
- */
-#ifndef XkbClientDefines
-#define XkbClientDefines /**/
-#endif
-
-#ifndef InstallXtermSetUID
-#define InstallXtermSetUID NO
-#endif
-
-#ifndef InstallXtermSetGID
-#define InstallXtermSetGID NO
-#endif
-
-#ifndef XkbClientDepLibs
-#define XkbClientDepLibs /**/
-#endif
-
-#ifndef XkbClientLibs
-#define XkbClientLibs /**/
-#endif
-
-/*
- * Compensate for broken imake configuration.
- */
-#ifdef LinuxGnuSourceDefines
-# ifdef UseInstalled
- IMAKEDEFINES = -D_GNU_SOURCE
-# endif
-#endif
-
-#ifndef SpecialCObjectRule
-#define SpecialCObjectRule(module,ignore,defines) \
-module.o: ; $(CC) -c defines $(CFLAGS) module.c
-#endif
-
-#ifndef ProgramTargetName
-#define ProgramTargetName(program) program
-#endif
-
-/*
- * add -DWTMP and -DLASTLOG if you want them; make sure that bcopy can
- * handle overlapping copies before using it.
- */
-#if SetTtyGroup /* turn on in config/machine.cf */
- TTYGROUPDEF = -DUSE_TTY_GROUP
-#endif
-#ifdef UsePUCCPtyd /* turn on in config/site.def */
- PUCCPTYDDEF = -DPUCC_PTYD /* does not need to be setuid */
- PTYLIB = -lpucc
-#endif
-
-#if defined(NetBSDArchitecture) || \
- defined(OpenBSDArchitecture) || \
- defined(FreeBSDArchitecture) || \
- (defined(LinuxArchitecture) && \
- (LinuxCLibMajorVersion == 6) && (LinuxCLibMinorVersion < 1))
- PTYLIB = -lutil
-#endif
-
-#ifdef DarwinArchitecture
-/* dyld can deadlock if a signal comes in when it is looking up a symbol */
- LOCAL_LDFLAGS = -Wl,-bind_at_load
-#endif
-
-#ifdef OS2Architecture
-/*
- * Only used in os2main.c, see ptyx.h for OPT_I18N_SUPPORT
- * <werner@suse.de>
- */
-#if XtermWithI18N
- I18NDEF = -DI18N
- FEATURE_DEFINES = -DDEBUG -DALLOWLOGGING $(I18NDEF)
-#else
- FEATURE_DEFINES = -DDEBUG -DALLOWLOGGING
-#endif
-#endif
-
- OSMAJORVERSION = OSMajorVersion
- OSMINORVERSION = OSMinorVersion
-
-#if !defined(OS2Architecture) && !defined(__GNU__)
-#if defined(UseUtempter)
- UTMPDEF = -DUSE_UTEMPTER
-#else
- UTMPDEF = -DUTMP
-#endif
-#endif
-
-#ifdef UTF8support
- UTF8_OPTION = -DOPT_WIDE_CHARS -DOPT_LUIT_PROG
- UTF8SRC = charclass.c precompose.c wcwidth.c xutf8.c
- UTF8OBJ = charclass.o precompose.o wcwidth.o xutf8.o
-#endif
-#if BuildXftLibrary
-#define XRenderSupport
-#endif
-#ifdef XRenderSupport
- XRFDEF = -DXRENDERFONT -DXFREE86_FT2
- XRFLIBS = XftClientLibs
- XRFDEPLIBS = XftClientDepLibs
- XRFINCLUDES = $(XFTINCLUDES)
-#endif
-#if !HasPutenv
- PUTENVDEF = -DNOPUTENV
-#endif
-#ifdef TraceXTerm
- TRACEDEF = -DOPT_TRACE=1
-#endif
- MAIN_DEFINES = $(UTMPDEF) $(TTYGROUPDEF) $(PUCCPTYDDEF) \
- -DOSMAJORVERSION=$(OSMAJORVERSION) \
- -DOSMINORVERSION=$(OSMINORVERSION)
- MISC_DEFINES = /* -DALLOWLOGGING -DALLOWLOGFILEEXEC */
- XKB_DEFINES = XkbClientDefines
- PATH_DEFINES = -DPROJECTROOT=$(PROJECTROOT)
-#if NXLibraries
- DEFINES = $(XKB_DEFINES) $(TERMCAPDEFINES) $(FEATURE_DEFINES) $(SCROLLBAR_RIGHT) $(UTF8_OPTION) $(XRFDEF) $(PATH_DEFINES) $(PUTENVDEF) $(IMAKEDEFINES) $(TRACEDEF) $(NX_DEFINES)
-#else
- DEFINES = $(XKB_DEFINES) $(TERMCAPDEFINES) $(FEATURE_DEFINES) $(SCROLLBAR_RIGHT) $(UTF8_OPTION) $(XRFDEF) $(PATH_DEFINES) $(PUTENVDEF) $(IMAKEDEFINES) $(TRACEDEF)
-#endif
- INCLUDES = -I. $(XRFINCLUDES)
-
-#ifdef OS2Architecture
- MAINSRC = os2main.c
- MAINOBJ = os2main.o
-#else
- MAINSRC = main.c
- MAINOBJ = main.o
-#endif
-#ifdef TraceXTerm
- TRACESRC = trace.c
- TRACEOBJ = trace.o
-#endif
- SRCS1 = button.c charproc.c charsets.c cursor.c \
- data.c doublechr.c fontutils.c input.c \
- menu.c misc.c print.c ptydata.c \
- screen.c scrollbar.c tabs.c util.c xstrings.c \
- TekPrsTbl.c Tekproc.c VTPrsTbl.c \
- $(MAINSRC) $(EXTRASRC) $(UTF8SRC) $(TRACESRC)
- OBJS1 = button.o charproc.o charsets.o cursor.o \
- data.o doublechr.o fontutils.o input.o \
- menu.o misc.o print.o ptydata.o \
- screen.o scrollbar.o tabs.o util.o xstrings.o \
- TekPrsTbl.o Tekproc.o VTPrsTbl.o \
- $(MAINOBJ) $(EXTRAOBJ) $(UTF8OBJ) $(TRACEOBJ)
- SRCS2 = resize.c xstrings.c
- OBJS2 = resize.o xstrings.o
- SRCS = $(SRCS1) $(SRCS2)
- OBJS = $(OBJS1) $(OBJS2)
- PROGRAMS = ProgramTargetName(resize) ProgramTargetName(xterm)
- DEPLIBS1 = XkbClientDepLibs XawClientDepLibs $(XRFDEPLIBS)
- DEPLIBS2 =
-
-#ifndef TermcapLibrary
-#if SystemV && !defined(MacIIArchitecture)
-#if defined(CrayArchitecture) || \
- (defined(HPArchitecture) && (OSMajorVersion < 10)) || \
- defined(RsArchitecture) || \
- defined(SCOArchitecture) || \
- defined(USLArchitecture)
-#define TermcapLibrary -lcurses /* special cases of System V */
-#else
-#define TermcapLibrary -ltermlib /* usually in here */
-#endif
-#else
-#define TermcapLibrary -ltermcap /* bsd puts it here */
-#endif
-#endif
-
- TERMCAPLIB = TermcapLibrary
-
-AllTarget($(PROGRAMS))
-
-SpecialCObjectRule(main,$(_NOOP_),$(MAIN_DEFINES))
-SpecialCObjectRule(menu,$(_NOOP_),$(MISC_DEFINES))
-SpecialCObjectRule(misc,$(_NOOP_),$(MISC_DEFINES))
-SpecialCObjectRule(charproc,$(_NOOP_),$(MISC_DEFINES))
-SpecialCObjectRule(data,$(_NOOP_),$(MISC_DEFINES))
-
-#if InstallXtermSetUID
-INSTUIDFLAGS = -m 4711
-SetUIDProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(PTYLIB))
-#else
-NormalProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(UTMPLIB) $(PTYLIB))
-#endif
-
-#if InstallXtermSetGID
-CSGIDFLAGS = -DUSE_UTMP_SETGID
-INSTUIDFLAGS = -m 2755 -g utmp
-#endif
-
-#if InstallXtermSetUID && defined(SunArchitecture) && HasSharedLibraries && (OSMajorVersion < 5)
-#if AlternateUsrLibDir
-#if ((OSMajorVersion == 4) && (OSMinorVersion >= 1))
-LDOVERRIDE = -L$(DESTDIR)$(USRLIBDIR)
-#else
-#if HasGcc
-LDOVERRIDE = -static -L$(DESTDIR)$(USRLIBDIR)
-#else
-LDOVERRIDE = -Bstatic -L$(DESTDIR)$(USRLIBDIR)
-LDRESUME = -Bdynamic
-#endif
-#endif
-#endif
-install::
- MakeDir($(DESTDIR)$(BINDIR))
- RemoveFile(ProgramTargetName(xterm.inst))
- LinkRule(ProgramTargetName(xterm.inst),$(CDEBUGFLAGS) $(CCOPTIONS)
- $(EXTRA_LDOPTIONS) $(LOCAL_LDFLAGS),$(OBJS1),$(LDOVERRIDE)
- $(XRFLIBS) XawClientLibs $(LDRESUME) $(LDLIBS) $(TERMCAPLIB)
- $(PTYLIB))
- $(INSTALL) -c $(INSTPGMFLAGS) $(INSTUIDFLAGS) ProgramTargetName(xterm.inst) $(DESTDIR)$(BINDIR)/ProgramTargetName(xterm)
- RemoveFile(ProgramTargetName(xterm.inst))
-#else
-#if InstallXtermSetUID
-InstallProgramWithFlags(xterm,$(BINDIR),$(INSTUIDFLAGS))
-#else
-InstallProgramWithFlags(xterm,$(BINDIR),NullParameter)
-#endif
-#endif
-
-InstallNamedProg(uxterm,uxterm,$(BINDIR))
-
-/*
- * Link with the termcap library if USE_TERMCAP is defined in resize.c
- */
-#if defined(NTOArchitecture) || \
- defined(LinuxArchitecture) || \
- defined(OpenBSDArchitecture) || \
- defined(SGIArchitecture) || \
- defined(SunArchitecture)
-NormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,NullParameter)
-#else
-NormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,$(TERMCAPLIB))
-#endif
-
-InstallProgramWithFlags(resize,$(BINDIR),NullParameter)
-
-/*
- * termcap is a special name that does not install correctly with
- * InstallNamedNonExec()
- */
-install::
- MakeDir($(DESTDIR)$(LIBDIR)/etc)
- $(INSTALL) $(INSTALLFLAGS) $(INSTDATFLAGS) termcap \
- $(DESTDIR)$(LIBDIR)/etc/xterm.termcap
-InstallNamedNonExec(terminfo,xterm.terminfo,$(LIBDIR)/etc)
-
-InstallAppDefaults(XTerm)
-InstallAppDefaults(UXTerm)
-InstallAppDefaultsLong(XTerm-col,XTerm-color)
-InstallManPage(xterm,$(MANDIR))
-InstallManPage(resize,$(MANDIR))
-DependTarget()
diff --git a/nx-X11/programs/xterm/Imakefile.X.original b/nx-X11/programs/xterm/Imakefile.X.original
deleted file mode 100644
index 50bbfee2d..000000000
--- a/nx-X11/programs/xterm/Imakefile.X.original
+++ /dev/null
@@ -1,289 +0,0 @@
-XCOMM $XTermId: Imakefile,v 1.87 2005/11/13 23:10:35 tom Exp $
-XCOMM
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:55:07 cpqbld Exp $
-XCOMM
-XCOMM Attention xterm porters
-XCOMM
-XCOMM
-XCOMM Xterm assumes that bcopy can handle overlapping arguments. If your
-XCOMM bcopy (or memcpy) cannot, write a routine called bcopy and link it in
-XCOMM or add -Dbcopy=mybcopy to the DEFINES list below.
-XCOMM
-XCOMM $XFree86: xc/programs/xterm/Imakefile,v 3.61 2005/11/13 23:10:35 dickey Exp $
-XCOMM
-
-/* Uncomment SCROLLBAR_RIGHT if you want the scroll bar to be on the right */
-SCROLLBAR_RIGHT = -DSCROLLBAR_RIGHT
-
-/* Define UTF8support to compile-in support for UTF-8 */
-#define UTF8support
-
-#if defined(UseUtempter)
-#undef InstallXtermSetUID /* imake sets this */
-#define InstallXtermSetUID NO
-#define InstallXtermSetGID NO
- UTMPLIB = -lutempter
-#endif
-
-/*
- * setgid mode works for systems that do not require setuid to open pty.
- */
-#if defined(OpenBSDArchitecture) || \
- (defined(LinuxArchitecture) && \
- (LinuxCLibMajorVersion == 6)) || \
- defined(FreeBSDArchitecture)
-#undef InstallXtermSetGID
-#define InstallXtermSetGID YES
-#endif
-
-/*
- * Fixes to allow compile with X11R5
- */
-#ifndef XkbClientDefines
-#define XkbClientDefines /**/
-#endif
-
-#ifndef InstallXtermSetUID
-#define InstallXtermSetUID NO
-#endif
-
-#ifndef InstallXtermSetGID
-#define InstallXtermSetGID NO
-#endif
-
-#ifndef XkbClientDepLibs
-#define XkbClientDepLibs /**/
-#endif
-
-#ifndef XkbClientLibs
-#define XkbClientLibs /**/
-#endif
-
-/*
- * Compensate for broken imake configuration.
- */
-#ifdef LinuxGnuSourceDefines
-# ifdef UseInstalled
- IMAKEDEFINES = -D_GNU_SOURCE
-# endif
-#endif
-
-#ifndef SpecialCObjectRule
-#define SpecialCObjectRule(module,ignore,defines) \
-module.o: ; $(CC) -c defines $(CFLAGS) module.c
-#endif
-
-#ifndef ProgramTargetName
-#define ProgramTargetName(program) program
-#endif
-
-/*
- * add -DWTMP and -DLASTLOG if you want them; make sure that bcopy can
- * handle overlapping copies before using it.
- */
-#if SetTtyGroup /* turn on in config/machine.cf */
- TTYGROUPDEF = -DUSE_TTY_GROUP
-#endif
-#ifdef UsePUCCPtyd /* turn on in config/site.def */
- PUCCPTYDDEF = -DPUCC_PTYD /* does not need to be setuid */
- PTYLIB = -lpucc
-#endif
-
-#if defined(NetBSDArchitecture) || \
- defined(OpenBSDArchitecture) || \
- defined(FreeBSDArchitecture) || \
- (defined(LinuxArchitecture) && \
- (LinuxCLibMajorVersion == 6) && (LinuxCLibMinorVersion < 1))
- PTYLIB = -lutil
-#endif
-
-#ifdef DarwinArchitecture
-/* dyld can deadlock if a signal comes in when it is looking up a symbol */
- LOCAL_LDFLAGS = -Wl,-bind_at_load
-#endif
-
-#ifdef OS2Architecture
-/*
- * Only used in os2main.c, see ptyx.h for OPT_I18N_SUPPORT
- * <werner@suse.de>
- */
-#if XtermWithI18N
- I18NDEF = -DI18N
- FEATURE_DEFINES = -DDEBUG -DALLOWLOGGING $(I18NDEF)
-#else
- FEATURE_DEFINES = -DDEBUG -DALLOWLOGGING
-#endif
-#endif
-
- OSMAJORVERSION = OSMajorVersion
- OSMINORVERSION = OSMinorVersion
-
-#if !defined(OS2Architecture) && !defined(__GNU__)
-#if defined(UseUtempter)
- UTMPDEF = -DUSE_UTEMPTER
-#else
- UTMPDEF = -DUTMP
-#endif
-#endif
-
-#ifdef UTF8support
- UTF8_OPTION = -DOPT_WIDE_CHARS -DOPT_LUIT_PROG
- UTF8SRC = charclass.c precompose.c wcwidth.c xutf8.c
- UTF8OBJ = charclass.o precompose.o wcwidth.o xutf8.o
-#endif
-#if BuildXftLibrary
-#define XRenderSupport
-#endif
-#ifdef XRenderSupport
- XRFDEF = -DXRENDERFONT -DXFREE86_FT2
- XRFLIBS = XftClientLibs
- XRFDEPLIBS = XftClientDepLibs
- XRFINCLUDES = $(XFTINCLUDES)
-#endif
-#if !HasPutenv
- PUTENVDEF = -DNOPUTENV
-#endif
-#ifdef TraceXTerm
- TRACEDEF = -DOPT_TRACE=1
-#endif
- MAIN_DEFINES = $(UTMPDEF) $(TTYGROUPDEF) $(PUCCPTYDDEF) \
- -DOSMAJORVERSION=$(OSMAJORVERSION) \
- -DOSMINORVERSION=$(OSMINORVERSION)
- MISC_DEFINES = /* -DALLOWLOGGING -DALLOWLOGFILEEXEC */
- XKB_DEFINES = XkbClientDefines
- PATH_DEFINES = -DPROJECTROOT=$(PROJECTROOT)
- DEFINES = $(XKB_DEFINES) $(TERMCAPDEFINES) $(FEATURE_DEFINES) $(SCROLLBAR_RIGHT) $(UTF8_OPTION) $(XRFDEF) $(PATH_DEFINES) $(PUTENVDEF) $(IMAKEDEFINES) $(TRACEDEF)
- INCLUDES = -I. $(XRFINCLUDES)
-
-#ifdef OS2Architecture
- MAINSRC = os2main.c
- MAINOBJ = os2main.o
-#else
- MAINSRC = main.c
- MAINOBJ = main.o
-#endif
-#ifdef TraceXTerm
- TRACESRC = trace.c
- TRACEOBJ = trace.o
-#endif
- SRCS1 = button.c charproc.c charsets.c cursor.c \
- data.c doublechr.c fontutils.c input.c \
- menu.c misc.c print.c ptydata.c \
- screen.c scrollbar.c tabs.c util.c xstrings.c \
- TekPrsTbl.c Tekproc.c VTPrsTbl.c \
- $(MAINSRC) $(EXTRASRC) $(UTF8SRC) $(TRACESRC)
- OBJS1 = button.o charproc.o charsets.o cursor.o \
- data.o doublechr.o fontutils.o input.o \
- menu.o misc.o print.o ptydata.o \
- screen.o scrollbar.o tabs.o util.o xstrings.o \
- TekPrsTbl.o Tekproc.o VTPrsTbl.o \
- $(MAINOBJ) $(EXTRAOBJ) $(UTF8OBJ) $(TRACEOBJ)
- SRCS2 = resize.c xstrings.c
- OBJS2 = resize.o xstrings.o
- SRCS = $(SRCS1) $(SRCS2)
- OBJS = $(OBJS1) $(OBJS2)
- PROGRAMS = ProgramTargetName(resize) ProgramTargetName(xterm)
- DEPLIBS1 = XkbClientDepLibs XawClientDepLibs $(XRFDEPLIBS)
- DEPLIBS2 =
-
-#ifndef TermcapLibrary
-#if SystemV && !defined(MacIIArchitecture)
-#if defined(CrayArchitecture) || \
- (defined(HPArchitecture) && (OSMajorVersion < 10)) || \
- defined(RsArchitecture) || \
- defined(SCOArchitecture) || \
- defined(USLArchitecture)
-#define TermcapLibrary -lcurses /* special cases of System V */
-#else
-#define TermcapLibrary -ltermlib /* usually in here */
-#endif
-#else
-#define TermcapLibrary -ltermcap /* bsd puts it here */
-#endif
-#endif
-
- TERMCAPLIB = TermcapLibrary
-
-AllTarget($(PROGRAMS))
-
-SpecialCObjectRule(main,$(_NOOP_),$(MAIN_DEFINES))
-SpecialCObjectRule(menu,$(_NOOP_),$(MISC_DEFINES))
-SpecialCObjectRule(misc,$(_NOOP_),$(MISC_DEFINES))
-SpecialCObjectRule(charproc,$(_NOOP_),$(MISC_DEFINES))
-SpecialCObjectRule(data,$(_NOOP_),$(MISC_DEFINES))
-
-#if InstallXtermSetUID
-INSTUIDFLAGS = -m 4711
-SetUIDProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(PTYLIB))
-#else
-NormalProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(UTMPLIB) $(PTYLIB))
-#endif
-
-#if InstallXtermSetGID
-CSGIDFLAGS = -DUSE_UTMP_SETGID
-INSTUIDFLAGS = -m 2755 -g utmp
-#endif
-
-#if InstallXtermSetUID && defined(SunArchitecture) && HasSharedLibraries && (OSMajorVersion < 5)
-#if AlternateUsrLibDir
-#if ((OSMajorVersion == 4) && (OSMinorVersion >= 1))
-LDOVERRIDE = -L$(DESTDIR)$(USRLIBDIR)
-#else
-#if HasGcc
-LDOVERRIDE = -static -L$(DESTDIR)$(USRLIBDIR)
-#else
-LDOVERRIDE = -Bstatic -L$(DESTDIR)$(USRLIBDIR)
-LDRESUME = -Bdynamic
-#endif
-#endif
-#endif
-install::
- MakeDir($(DESTDIR)$(BINDIR))
- RemoveFile(ProgramTargetName(xterm.inst))
- LinkRule(ProgramTargetName(xterm.inst),$(CDEBUGFLAGS) $(CCOPTIONS)
- $(EXTRA_LDOPTIONS) $(LOCAL_LDFLAGS),$(OBJS1),$(LDOVERRIDE)
- $(XRFLIBS) XawClientLibs $(LDRESUME) $(LDLIBS) $(TERMCAPLIB)
- $(PTYLIB))
- $(INSTALL) -c $(INSTPGMFLAGS) $(INSTUIDFLAGS) ProgramTargetName(xterm.inst) $(DESTDIR)$(BINDIR)/ProgramTargetName(xterm)
- RemoveFile(ProgramTargetName(xterm.inst))
-#else
-#if InstallXtermSetUID
-InstallProgramWithFlags(xterm,$(BINDIR),$(INSTUIDFLAGS))
-#else
-InstallProgramWithFlags(xterm,$(BINDIR),NullParameter)
-#endif
-#endif
-
-InstallNamedProg(uxterm,uxterm,$(BINDIR))
-
-/*
- * Link with the termcap library if USE_TERMCAP is defined in resize.c
- */
-#if defined(NTOArchitecture) || \
- defined(LinuxArchitecture) || \
- defined(OpenBSDArchitecture) || \
- defined(SGIArchitecture) || \
- defined(SunArchitecture)
-NormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,NullParameter)
-#else
-NormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,$(TERMCAPLIB))
-#endif
-
-InstallProgramWithFlags(resize,$(BINDIR),NullParameter)
-
-/*
- * termcap is a special name that does not install correctly with
- * InstallNamedNonExec()
- */
-install::
- MakeDir($(DESTDIR)$(LIBDIR)/etc)
- $(INSTALL) $(INSTALLFLAGS) $(INSTDATFLAGS) termcap \
- $(DESTDIR)$(LIBDIR)/etc/xterm.termcap
-InstallNamedNonExec(terminfo,xterm.terminfo,$(LIBDIR)/etc)
-
-InstallAppDefaults(XTerm)
-InstallAppDefaults(UXTerm)
-InstallAppDefaultsLong(XTerm-col,XTerm-color)
-InstallManPage(xterm,$(MANDIR))
-InstallManPage(resize,$(MANDIR))
-DependTarget()
diff --git a/nx-X11/programs/xterm/MANIFEST b/nx-X11/programs/xterm/MANIFEST
deleted file mode 100644
index a23a710be..000000000
--- a/nx-X11/programs/xterm/MANIFEST
+++ /dev/null
@@ -1,126 +0,0 @@
-MANIFEST for xterm, version xterm-207
---------------------------------------------------------------------------------
-MANIFEST this file
-256colres.h resource-definitions for 256-color mode
-256colres.pl script to generate 256colres.h
-88colres.h resource definitions for 88-color mode
-88colres.pl script to generate 88colres.h
-AAA_README_VMS.txt note for VMS port of 'xterm'
-INSTALL configure script: options and related install instructions
-Imakefile imake template for Makefile
-Makefile.in configure script template for Makefile
-README overview & caveats for 'xterm'
-README.i18n i18n readme:
-README.os390 overview for os390 (EBCDIC) port of 'xterm'
-TekPrsTbl.c Tek4014 parser state tables
-Tekparse.def template for generating Tekparse.h
-Tekparse.h Tek4014 parser-state definitions
-Tekproc.c Tek4014 parser-state functions
-Tests Useful tests for xterm-developers
-UXTerm.ad alternate resources for UTF-8
-VTPrsTbl.c VT100 parser state tables
-VTparse.def template for generating VTparse.h
-VTparse.h VT100 parser-state definitions
-XTerm-col.ad color resource definitions for XTerm class
-XTerm.ad resource definitions for XTerm class
-aclocal.m4 configure script: custom macros
-button.c mouse button and selection processing
-charclass.c compact character-class module
-charclass.h interface of charclass.c
-charproc.c VT100 parser functions
-charsets.c module to translate character-sets
-config.guess configure script: guess the system type
-config.sub configure script: validate system type
-configure generated
-configure.in template for generating configure script
-configure Configuration script for UNIX
-ctlseqs.ms documentation: Xterm Control Sequences
-cursor.c VT100 low-level cursor movement
-data.c global data declarations
-data.h global data external-definitions
-doublechr.c VT100 double-size character support
-error.h error-code definitions for 'xterm'
-fontutils.c xterm functions for (re)loading fonts
-fontutils.h interface of fontutils.c
-gen-pc-fkeys.pl script to generate extended function-key terminfo
-input.c VT100 key-symbol and function-key translation
-install.sh configure script: fallback install script
-keysym2ucs.c lookup-table for UTF-8 to keysyms
-keysym2ucs.h interface of keysym2ucs.c
-link_axp.com build-script for VMS port of xterm
-main.c main program of 'xterm'
-main.h default definitions for 'xterm'
-make.com build-script for VMS port of 'xterm'
-menu.c popup/pulldown menus for 'xterm'
-menu.h interface of menu.c
-minstall.sh script for installing manpages
-misc.c miscellaneous utility functions for 'xterm'
-mkdirs.sh configure script: make directories for install process
-os2main.c main program for OS/2 EMX port of 'xterm'
-plink.sh script to prune unneeded libraries from link
-precompose.c table of precompose sequences
-precompose.h interface of precompose.c
-print.c VT100+ print support functions
-proto.h macros to simplify function prototypes
-ptydata.c functions to manipulate data read from pty
-ptyx.h structure-definitions for 'xterm'
-resize.c program to compute/modify xterm's window size
-resize.man manual page for 'resize'
-screen.c VT100 screen update functions
-scrollbar.c VT100 scrollbar support functions
-sinstall.sh install setuid if existing program was
-tabs.c VT100 tabstop support-functions
-termcap termcap entries for 'xterm'
-terminfo terminfo entries for 'xterm'
-testxmc.c testing: xmc/magic-cookies
-trace.c debugging trace functions for 'xterm'
-trace.h interface of trace.c
-util.c miscellaneous utility functions for 'xterm'
-uxterm wrapper script to make unicode-xterm
-version.h version of xterm
-vms.c VMS version of xterm's spawn(), etc.
-vms.h system headers and definitions for vms.c
-wcwidth.c wide-character utility functions
-wcwidth.h interface of wcwidth.c
-xcharmouse.h Jason Bacon's mouse-defs, cleaned up a little
-xstrings.c a few common string functions
-xstrings.h interface of xstrings.c
-xterm.dat application defaults for VMS port of 'xterm'
-xterm.h common includes, definitions and prototypes for 'xterm'
-xterm.log.html changelog for xterm
-xterm.man manual page for 'xterm'
-xterm_axp.opt linker options file for VMS port of 'xterm'
-xterm_io.h split-out definitions of termio/termios/sgtty and winsize from main.c, os2main.c, screen.c and resize.c
-xtermcfg.hin configure script: template for xtermcfg.h
-xutf8.c JC's cleanup of UTF8
-xutf8.h JC's cleanup of UTF8
-tektests subdirectory
-tektests/aitest.tek tek4014 demo: draw a globe
-tektests/dmerc.tek tek4014 demo: draws a Mercator projection with orbit
-tektests/fotest.tek tek4014 demo: draw a scatterplot on log scale
-tektests/imtest.tek tek4014 demo: draw a test pattern
-tektests/imtesth.tek tek4014 demo: draw a test pattern
-tektests/ocpred.tek tek4014 demo: an occultation prediction
-tektests/usmap.tek tek4014 demo: a US map
-unicode subdirectory
-unicode/README description of files in ./unicode
-unicode/convmap.pl perl script for generating the lookup table for UTF-8 to keysym
-unicode/keysym.map keysym mapping from UTF-8
-unicode/make-precompose.sh make precompose.c
-unicode/precompose.c.head header of precompose.c
-unicode/precompose.c.tail tail of precompose.c
-vttests subdirectory
-vttests/16colors.sh test-script to show 16-colors
-vttests/256colors.pl script to illustrate 256-colors
-vttests/256colors2.pl fancy test-script for 256-colors
-vttests/88colors.pl sample script showing 88-colors
-vttests/88colors2.pl sample script showing 88-colors
-vttests/8colors.sh test-script to illustrate 8-colors
-vttests/acolors.sh demonstrate changing the ANSI colors
-vttests/doublechars.sh test script to demonstrate doublesize chars
-vttests/dynamic.sh script to illustrate the dynamic colors control sequence
-vttests/fonts.sh script to demonstrate font-switching sequences
-vttests/resize.pl translated resize.sh to perl since it is easy to test, and I needed
-vttests/resize.sh script to demonstrate resizing
-vttests/tcapquery.pl script to test tcap-query option
-vttests/title.sh test-script to show title of xterm in action
diff --git a/nx-X11/programs/xterm/Makefile.in b/nx-X11/programs/xterm/Makefile.in
deleted file mode 100644
index 99fffe1d9..000000000
--- a/nx-X11/programs/xterm/Makefile.in
+++ /dev/null
@@ -1,243 +0,0 @@
-## $XTermId: Makefile.in,v 1.118 2005/11/03 13:17:27 tom Exp $
-##
-## $XFree86: xc/programs/xterm/Makefile.in,v 3.51 2005/11/03 13:17:27 dickey Exp $ ##
-##
-## Copyright 2002-2003,2004 by Thomas E. Dickey
-##
-## All Rights Reserved
-##
-## Permission to use, copy, modify, and distribute this software and its
-## documentation for any purpose and without fee is hereby granted,
-## provided that the above copyright notice appear in all copies and that
-## both that copyright notice and this permission notice appear in
-## supporting documentation, and that the name of the above listed
-## copyright holder(s) not be used in advertising or publicity pertaining
-## to distribution of the software without specific, written prior
-## permission.
-##
-## THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
-## TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-## AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
-## LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-## WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-## ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-## OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-SHELL = /bin/sh
-
-#### Start of system configuration section. ####
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-x = @EXEEXT@
-o = .@OBJEXT@
-
-CC = @CC@
-CPP = @CPP@
-AWK = @AWK@
-LINK = $(CC) $(CFLAGS)
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_DATA = @INSTALL_DATA@
-transform = @program_transform_name@
-
-X_LIBS = @X_LIBS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-
-EXTRA_CFLAGS = @EXTRA_CFLAGS@
-EXTRA_CPPFLAGS = @EXTRA_CPPFLAGS@
-EXTRA_LOADFLAGS = @IMAKE_LOADFLAGS@
-
-CPPFLAGS = -I. -I$(srcdir) -DHAVE_CONFIG_H @CPPFLAGS@ $(EXTRA_CPPFLAGS)
-CFLAGS = @CFLAGS@ $(EXTRA_CFLAGS)
-LDFLAGS = @LDFLAGS@
-LIBS = @LIBS@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-manext = 1
-bindir = @bindir@
-libdir = @libdir@
-mandir = @mandir@/man$(manext)
-appsdir = @appsdir@
-
-#### End of system configuration section. ####
-
-RM = rm -f
-LINT = @LINT@
-
-DESTDIR =
-BINDIR = $(DESTDIR)$(bindir)
-LIBDIR = $(DESTDIR)$(libdir)
-MANDIR = $(DESTDIR)$(mandir)
-APPSDIR = $(DESTDIR)$(appsdir)
-
-INSTALL_DIRS = $(BINDIR) $(APPSDIR) $(MANDIR)
-
-CLASS = XTerm
-EXTRAHDR = @EXTRAHDRS@
-EXTRASRC = @EXTRASRCS@
-EXTRAOBJ = @EXTRAOBJS@
-
- SRCS1 = button.c charproc.c charsets.c cursor.c \
- data.c doublechr.c fontutils.c input.c \
- $(MAINSRC) menu.c misc.c print.c ptydata.c \
- screen.c scrollbar.c tabs.c util.c xstrings.c \
- VTPrsTbl.c $(EXTRASRC)
- OBJS1 = button$o charproc$o charsets$o cursor$o \
- data$o doublechr$o fontutils$o input$o \
- main$o menu$o misc$o print$o ptydata$o \
- screen$o scrollbar$o tabs$o util$o xstrings$o \
- VTPrsTbl$o $(EXTRAOBJ)
- SRCS2 = resize.c xstrings.c
- OBJS2 = resize$o xstrings$o
- SRCS = $(SRCS1) $(SRCS2)
- OBJS = $(OBJS1) $(OBJS2)
- HDRS = VTparse.h data.h error.h main.h menu.h proto.h \
- ptyx.h version.h xstrings.h xterm.h $(EXTRAHDR)
- PROGRAMS = xterm$x resize$x
-
-all : $(PROGRAMS)
-
-.SUFFIXES : .i .def .hin
-
-.c$o :
-@RULE_CC@
- @ECHO_CC@$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/$*.c
-
-.c.i :
-@RULE_CC@
- @ECHO_CC@$(CPP) -C $(CPPFLAGS) $*.c >$@
-
-.def.hin :
- grep '^CASE_' $< | $(AWK) '{printf "#define %s %d\n", $$1, n++}' >$@
-
-main$o : main.h
-misc$o : version.h
-
-$(OBJS1) : xterm.h ptyx.h xtermcfg.h
-main$o resize$o screen$o : xterm_io.h
-
-xterm$x : $(OBJS1)
- @ECHO_LD@$(LINK) $(LDFLAGS) -o $@ $(OBJS1) $(X_LIBS) $(X_EXTRA_LIBS) $(LIBS) $(EXTRA_LOADFLAGS)
-
-resize$x : $(OBJS2)
- @ECHO_LD@$(SHELL) $(srcdir)/plink.sh $(LINK) $(LDFLAGS) -o $@ $(OBJS2) $(X_LIBS) $(X_EXTRA_LIBS) $(LIBS)
-
-256colres.h :
- -rm -f $@
- perl $(srcdir)/256colres.pl > $@
-
-88colres.h :
- -rm -f $@
- perl $(srcdir)/88colres.pl > $@
-
-charproc$o : main.h @CHARPROC_DEPS@
-
-TRANSFORM = sed 's/$x$$//'|sed '$(transform)'|sed 's/$$/$x/'
-actual_xterm = `echo xterm| sed '$(transform)'`
-actual_resize = `echo resize| sed '$(transform)'`
-binary_xterm = `echo xterm$x| $(TRANSFORM)`
-binary_resize = `echo resize$x| $(TRANSFORM)`
-binary_uxterm = `echo uxterm| $(TRANSFORM)`
-
-install \
-install-bin \
-install-full :: xterm$x resize$x $(BINDIR)
-@MAY_SETUID@ $(SHELL) $(srcdir)/sinstall.sh @SINSTALL_OPTS@ "$(INSTALL_PROGRAM)" xterm$x @XTERM_PATH@ $(BINDIR)/$(binary_xterm)
-@NOT_SETUID@ $(INSTALL_PROGRAM) xterm$x $(BINDIR)/$(binary_xterm)
- $(INSTALL_PROGRAM) -m 755 resize$x $(BINDIR)/$(binary_resize)
- $(INSTALL_SCRIPT) -m 755 $(srcdir)/uxterm $(BINDIR)/$(binary_uxterm)
-
-install \
-install-man \
-install-full :: $(MANDIR)
- $(SHELL) $(srcdir)/minstall.sh "$(INSTALL_DATA)" $(srcdir)/xterm.man $(MANDIR)/$(actual_xterm).$(manext)
- $(SHELL) $(srcdir)/minstall.sh "$(INSTALL_DATA)" $(srcdir)/resize.man $(MANDIR)/$(actual_resize).$(manext)
-
-install \
-install-app \
-install-full :: $(APPSDIR)
- @echo installing $(APPSDIR)/$(CLASS)
- @sed -e s/XTerm/$(CLASS)/ $(srcdir)/XTerm.ad >XTerm.tmp
- @$(INSTALL_DATA) XTerm.tmp $(APPSDIR)/$(CLASS)
- @echo installing $(APPSDIR)/$(CLASS)-color
- @sed -e s/XTerm/$(CLASS)/ $(srcdir)/XTerm-col.ad >XTerm.tmp
- @$(INSTALL_DATA) XTerm.tmp $(APPSDIR)/$(CLASS)-color
- @echo installing $(APPSDIR)/UXTerm
- @sed -e s/XTerm/$(CLASS)/ $(srcdir)/UXTerm.ad >XTerm.tmp
- @$(INSTALL_DATA) XTerm.tmp $(APPSDIR)/UXTerm
- @rm -f XTerm.tmp
-
-install ::
- @echo 'Completed installation of executables and documentation.'
- @echo 'Use "make install-ti" to install terminfo description.'
-
-TERMINFO_DIR = @TERMINFO_DIR@
-SET_TERMINFO = @SET_TERMINFO@
-
-install-full \
-install-ti :: $(TERMINFO_DIR)
- $(SET_TERMINFO) tic $(srcdir)/terminfo
- @echo 'Completed installation of terminfo description.'
-
-install-full \
-install-tc ::
- @test -f /etc/termcap && echo 'You must install the termcap entry manually by editing /etc/termcap'
-
-installdirs : $(INSTALL_DIRS)
-
-uninstall :
- -$(RM) $(BINDIR)/$(binary_xterm)
- -$(RM) $(BINDIR)/$(binary_resize)
- -$(RM) $(BINDIR)/$(binary_uxterm)
- -$(RM) $(MANDIR)/$(actual_xterm).$(manext)
- -$(RM) $(MANDIR)/$(actual_resize).$(manext)
- -$(RM) $(APPSDIR)/$(CLASS)
- -$(RM) $(APPSDIR)/$(CLASS)-color
- -$(RM) $(APPSDIR)/UXTerm
-
-mostlyclean :
- -$(RM) *$o *.[is] XtermLog.* .pure core *~ *.bak *.BAK *.out *.tmp
-
-clean : mostlyclean
- -$(RM) $(PROGRAMS)
-
-distclean : clean
- -$(RM) Makefile config.status config.cache config.log xtermcfg.h
-
-realclean : distclean
- -$(RM) tags TAGS ctlseqs.ps ctlseqs.txt
-
-maintainer-clean : realclean
- -$(RM) 256colres.h 88colres.h
-
-ctlseqs.txt : ctlseqs.ms
- GROFF_NO_SGR=stupid $(SHELL) -c "tbl ctlseqs.ms | nroff -Tascii -ms" >$@
-
-ctlseqs.ps : ctlseqs.ms
- tbl ctlseqs.ms | groff -ms >$@
-
-lint :
- $(LINT) $(CPPFLAGS) $(SRCS1)
- $(LINT) $(CPPFLAGS) $(SRCS2)
-
-tags :
- ctags $(SRCS) $(HDRS)
-
-TAGS :
- etags $(SRCS) $(HDRS)
-
-$(TERMINFO_DIR) $(INSTALL_DIRS) :
- $(SHELL) ${srcdir}/mkdirs.sh $@
-
-ALWAYS :
-
-depend : $(TABLES)
- makedepend -- $(CPPFLAGS) -- $(SRCS)
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/nx-X11/programs/xterm/README b/nx-X11/programs/xterm/README
deleted file mode 100644
index f098b04b0..000000000
--- a/nx-X11/programs/xterm/README
+++ /dev/null
@@ -1,15 +0,0 @@
- Abandon All Hope, Ye Who Enter Here
-
-
-This is undoubtedly the most ugly program in the distribution. It was one of
-the first "serious" programs ported, and still has a lot of historical baggage.
-Ideally, there would be a general tty widget and then vt102 and tek4014
-subwidgets so that they could be used in other programs. We are trying to
-clean things up as we go, but there is still a lot of work to do.
-
-If you are porting this to a machine that has problems with overlapping
-bcopy's, watch out!
-
-There are two documents on xterm: the man page, xterm.man, which describes
-how to use it, and ctlseqs.ms, which describes the control sequences it
-understands.
diff --git a/nx-X11/programs/xterm/README.i18n b/nx-X11/programs/xterm/README.i18n
deleted file mode 100644
index 511ee60f6..000000000
--- a/nx-X11/programs/xterm/README.i18n
+++ /dev/null
@@ -1,199 +0,0 @@
--- $XFree86: xc/programs/xterm/README.i18n,v 1.1 2003/11/13 01:16:37 dickey Exp $
-
-Using xterm in your language
-============================
-
-Since XFree86 version 4.0, the internationalization (i18n) feature of
-xterm is gradually improved. Xterm is being improved even now. You
-need only set the standard locale environment variables such as
-LC_CTYPE, LC_ALL, LC_CTYPE, or LANG. Once the locale is set up you can
-use xterm in your favorite character encoding.
-
-This document explains how the i18n feature is realized and how to
-configure xterm for your character encoding.
-
-Refer to locale(7) for details of the locale mechanism.
-
-
-Basic i18n-related settings and resources
-=========================================
-
-These settings apply to XFree86 xterm patch #181, and the program luit
-which is distributed with XFree86 4.4
-
-1. Usage of "locale mode"
-
- On startup, xterm must be in "locale mode" to make it follow the
- current locale. You can invoke xterm in locale mode in these ways:
-
- a. Set "vt100.locale" resource "true". This resource was
- introduced since XFree86 4.3. The default value of the "locale"
- resource is "medium", which means xterm follows the locale only
- in Chinese, Japanese, Korean, or Thai locales. For example,
-
- XTerm*locale: true
-
- in your ~/.Xresources file.
-
- or
-
- b. Invoke xterm with the "-lc" option.
-
-2. Converter program "luit"
-
- The "luit" must be available in the standard XFree86 binary
- directory. It is usually available because it is part of the
- XFree86 distribution. The standard binary directory may differ from
- system to system. /usr/X11R6/bin/luit is an example.
-
- "luit" is used to convert between Unicode and the character encoding
- for your locale. When built for XFree86, xterm includes logic for
- invoking luit.
-
-3. Locale setting
-
- Finally, you will need to configure your locale. We expect that you
- have already configured your locale for other software. For example,
-
- LANG=de_DE@euro
- export LANG
-
- in your ~/.xsession file. There are many ways to configure locale.
- For example, your display manager may have a mechanism to invoke a
- window manager in your favorite locale, or you may have system-wide
- locale setting in /etc/environment. You may also have set the
- LC_ALL variable instead of the LANG variable.
-
-
-How to use xterm in different locale temporarily
-================================================
-
-You may sometimes need to invoke xterm in a different character encoding
-than your current locale. For example, use xterm to login remote systems
-in different locale.
-
-Do this by invoking xterm in the target locale. For example,
-
- $ LANG=ru_RU.KOI8-R xterm &
-
-Previously, font setting has been used in such cases.
-
- $ xterm -fn -misc-fixed-medium-r-normal--10-*-*-*-*-*-koi8-r &
-
-This does not work well in conjunction with the "locale" resource,
-because luit and xterm combined rely upon Unicode fonts.
-
-
-How to set fonts for UTF-8/locale modes
-=======================================
-
-Since xterm patch #181, xterm can automatically use Unicode fonts in
-UTF-8 mode and locale mode. Few of you will need to modify the default
-setting to display your language. In particular, Unicode fonts in
-combination with locale mode will satisfy the needs of not only
-ISO-8859-1 users but also East Asian and other non-ISO-8859-1 users.
-
-If you want to set your favorite Unicode font for UTF-8 and locale
-modes, you should add a line such as the following in your ~/.Xresources
-file:
-
- XTerm*VT100.utf8Fonts.font: \
- -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
-
-The leading "XTerm*" pattern is more specific than the system's
-app-defaults file, therefore it overrides the corresponding line
-beginning with
-
- *VT100.utf8Fonts.font:
-
-Here is an additional note. If you want to display East Asian
-doublewidth characters (CJK Ideogram, Hiragana, Katakana, Hangul,
-and so on), we recommend using
-
- -misc-fixed-medium-r-semicondensed--13-*-*-*-*-*-iso10646-1
-
-or
-
- -misc-fixed-medium-r-normal--18-*-*-*-*-*-iso10646-1
-
-because these two fonts have corresponding doublewidth fonts. These
-fonts are used as default font and default "Large" font, respectively.
-
-
-The internals of xterm i18n
-===========================
-
-You do not need to read this section if you only want to configure your
-xterm. Here we describe how xterm is implemented to support i18n.
-
-The original version of xterm does not support locale or character
-encoding. Its I/O stream is interpreted as a mere 8-bit index for a
-font.
-
-Beginning with XFree86 4.0, xterm supported UTF-8. It was implemented
-as a separate UTF-8 mode from the conventional 8-bit mode. Character
-encodings had no effect on the 8-bit mode. The UTF-8 mode has been
-extended to support doublewidth characters (for East Asian characters)
-and combining characters (such as accents for Latin alphabets and Thai
-vowels/tone marks).
-
-Doublewidth characters are characters that occupy two continuing
-columns on the terminal. Xterm uses separate fonts for normal
-(singlewidth) characters and doublewidth characters. Though xterm has
-configuration items for specifying doublewidth fonts, it will
-automatically search for a font with exactly twice as wide and the same
-name as the specified normal font.
-
-The default behavior of xterm was modified to use this UTF-8 mode in
-UTF-8 locales. A command line option of "-u8" and a resource of "utf8"
-were introduced to choose UTF-8 mode.
-
-"luit" was introduced to XFree86 at version 4.2. It converts between
-UTF-8 and other encodings. When luit is invoked in a UTF-8 terminal,
-the terminal acts as if it is really running in the other encoding.
-
-Since XFree86 version 4.3, xterm provides a new mode to invoke luit
-automatically to support various encodings. The mode where xterm
-invokes luit is called "locale mode". It is the third mode following
-conventional 8-bit mode and UTF-8 mode. In the locale mode, xterm is
-aware of the current locale and character encoding. Since locale mode
-uses luit, it is based on the UTF-8 mode. That is, xterm works in UTF-8
-mode and luit works as a converter between UTF-8 and the character
-encoding for your locale. This is why the locale mode always needs
-Unicode fonts. The default behavior of xterm is modified so that the
-"locale mode" will be adopted in Chinese (Big5 and GB2312), Japanese
-(EUC-JP), Korean (EUC-KR), and Thai (ISO-8859-11, as known as TIS-620)
-locales. Locale mode is chosen for these character encodings because
-these encodings are not supported by conventional 8-bit mode even by
-changing fonts (ISO-8859-11 needs combining characters and others need
-doublewidth characters).
-
-To control the locale mode, command line options of "-lc" and "-en" and
-a resource of "locale" were introduced. The command line option of
-"-u8" and a resource of "utf8" were made obsolete by them, though
-retained for compatibility.
-
-Since XFree86 version 4.4, xterm can have two sets of default fonts,
-one for conventional 8-bit mode and another for UTF-8 and locale modes,
-by introducing the "utf8Fonts" subresource.
-
-
-Future TODO Items
-=================
-
-We anticipate that xterm's locale mode will be used increasingly in the
-future. Since the UTF-8 and locale modes use more resources than
-conventional 8-bit mode (because it needs larger fonts and another
-process "luit"), faster hardware may be needed to gain complete
-acceptance by users. However, the locale mechanism allows users
-to manipulate data in a standard form. Its usefulness compensates
-in part for reduced performance.
-
-Xterm supports antialiased fonts ("-fa" and "-fs" command line options).
-Currently UTF-8 nor locale modes do not work with antialiased fonts.
-
-Xterm does not support bi-directional or RTL languages such as Hebrew
-and Arab. A simple standard how terminal should behave for these
-languages is needed.
-
-Xterm does not support Unicode characters above U+10000.
diff --git a/nx-X11/programs/xterm/README.os390 b/nx-X11/programs/xterm/README.os390
deleted file mode 100644
index 2fe50b604..000000000
--- a/nx-X11/programs/xterm/README.os390
+++ /dev/null
@@ -1,74 +0,0 @@
--- $XFree86: xc/programs/xterm/README.os390,v 1.3 2000/09/22 10:42:05 alanh Exp $
-
-Below are install instructions for os/390 2.5 & below and
-for os/390 2.6 & above. The basic reasons for exporting
-the LIBS and CFLAGS variables is to get the configure
-script to run properly under os/390. configure, when
-checking for X, attempts to compile a program something like
-
- int main() {
- XtMalloc()
- ; return 0; }
-
-using 'cc -o conftest conftest.c -lXt'. However this results
-in a number of linkedit messages such as:
-
- IEW2456E 9207 SYMBOL xcatd UNRESOLVED. MEMBER COULD NOT BE INCLUDED FROM THE
- DESIGNATED CALL LIBRARY. NAME SPACE = 3
- IEW2456E 9207 SYMBOL XrmQGetResource UNRESOLVED. MEMBER COULD NOT BE INCLUDED
- FROM THE DESIGNATED CALL LIBRARY.
- IEW2456E 9207 SYMBOL XrmGetDatabase UNRESOLVED. MEMBER COULD NOT BE INCLUDED
- FROM THE DESIGNATED CALL LIBRARY.
-
-The only way I can get this program to compile and link is to
-use 'cc -o conftest conftest.c -lXt -lX11 -lSM -lICE'.
-With os/390 2.6 and above, IBM has provided X functions in dlls;
-this is the reason for the separate install steps. In fact,
-trying to use the X archive files (eg -lX11) when linking xterm
-results in an abend0C1 in low storage when X tries to call the
-initialize function (at least on my system). This has something
-to do with the calling X routine thinking it has a function pointer
-descriptor (c++) when it actually has just a function pointer (c).
-Unfortunately, I have been unable to recreate the problem in a
-simple testcase, so I haven't reported it to IBM. Anyway, for os/390
-2.6 and above, configure will build a Makefile with the following line:
-
- LIBS = -lXaw -lXext -lXmu -lXt -lSM -lICE -lX11 /usr/lib/Xaw.x /usr/lib/SM.x /usr/lib/ICE.x /usr/lib/X11.x -lcurses
-
-The '-lXaw -lXext -lXmu -lXt -lSM -lICE -lX11' should be manually removed;
-this isn't strictly necessary, but will reduce the size of the executable
-by about 4M.
-
-The '-Wl,EDIT=NO' causes the Binder to produce a non-editable executable,
-dramatically reducing the size of the executable file.
-
-Good Luck!!
-Greg Smith
-rys@trex.rtpnc.epa.gov
-
-
-
-Install instructions for os/390 2.5 and *below*:
-------------------------------------------------
- gunzip xterm.tar.gz
- pax -o from=ISO8859-1,to=IBM-1047 -rf xterm.tar
- cd xterm
- export LIBS='-lXt -lX11 -lSM -lICE'
- export CFLAGS='-D_ALL_SOURCE -Wl,EDIT=NO'
- ./configure
- make
- export DISPLAY=my.xserver.name:0
- ./xterm
-
-
-Install instructions for os/390 2.6 and *above*:
-------------------------------------------------
- gunzip xterm.tar.gz
- pax -o from=ISO8859-1,to=IBM-1047 -rf xterm.tar
- cd xterm
- ./configure # LIBS, CFLAGS, and CC are defined by configure for os/390 2.6.
- [optional: edit the Makefile and remove '-lXaw -lXext -lXmu -lXt -lSM -lICE -lX11'
- from the LIBS assignment]
- make
- export DISPLAY=my.xserver.name:0
- ./xterm
diff --git a/nx-X11/programs/xterm/TekPrsTbl.c b/nx-X11/programs/xterm/TekPrsTbl.c
deleted file mode 100644
index 290a0a332..000000000
--- a/nx-X11/programs/xterm/TekPrsTbl.c
+++ /dev/null
@@ -1,2622 +0,0 @@
-/*
- * $Xorg: TekPrsTbl.c,v 1.3 2000/08/17 19:55:07 cpqbld Exp $
- */
-
-
-/*
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-/* $XFree86: xc/programs/xterm/TekPrsTbl.c,v 3.3 2001/01/17 23:46:33 dawes Exp $ */
-
-#include <Tekparse.h>
-
-Const int Talptable[] = /* US (^_) normal alpha mode */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_BEL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_LF,
-CASE_UP,
-/* NP CR SO SI */
-CASE_IGNORE,
-CASE_CR,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_ESC_STATE,
-/* FS GS RS US */
-CASE_PT_STATE,
-CASE_PLT_STATE,
-CASE_IPL_STATE,
-CASE_ALP_STATE,
-/* SP ! " # */
-CASE_SP,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* $ % & ' */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* ( ) * + */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* , - . / */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* 0 1 2 3 */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* 4 5 6 7 */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* 8 9 : ; */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* < = > ? */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* @ A B C */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* D E F G */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* H I J K */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* L M N O */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* P Q R S */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* T U V W */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* X Y Z [ */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* \ ] ^ _ */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* ` a b c */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* d e f g */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* h i j k */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* l m n o */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* p q r s */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* t u v w */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* x y z { */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* | } ~ DEL */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x90 0x91 0x92 0x93 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x99 0x99 0x9a 0x9b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* nobreakspace exclamdown cent sterling */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* currency yen brokenbar section */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* notsign hyphen registered macron */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* degree plusminus twosuperior threesuperior */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* acute mu paragraph periodcentered */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* cedilla onesuperior masculine guillemotright */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* onequarter onehalf threequarters questiondown */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Eth Ntilde Ograve Oacute */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* agrave aacute acircumflex atilde */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* adiaeresis aring ae ccedilla */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* igrave iacute icircumflex idiaeresis */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* eth ntilde ograve oacute */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* ocircumflex otilde odiaeresis division */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* oslash ugrave uacute ucircumflex */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-};
-
-Const int Tbestable[] = /* ESC while in bypass state */
-{
-/* NUL SOH STX ETX */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_VT_MODE,
-/* EOT ENQ ACK BEL */
-CASE_BYP_STATE,
-CASE_REPORT,
-CASE_BYP_STATE,
-CASE_BEL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_IGNORE,
-CASE_UP,
-/* NP CR SO SI */
-CASE_PAGE,
-CASE_IGNORE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* DLE DC1 DC2 DC3 */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* DC4 NAK SYN ETB */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_COPY,
-/* CAN EM SUB ESC */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_GIN,
-CASE_IGNORE,
-/* FS GS RS US */
-CASE_SPT_STATE,
-CASE_PLT_STATE,
-CASE_IPL_STATE,
-CASE_ALP_STATE,
-/* SP ! " # */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* $ % & ' */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* ( ) * + */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* , - . / */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* 0 1 2 3 */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* 4 5 6 7 */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* 8 9 : ; */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* < = > ? */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* @ A B C */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* D E F G */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* H I J K */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* L M N O */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* P Q R S */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* T U V W */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* X Y Z [ */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* \ ] ^ _ */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* ` a b c */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* d e f g */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* h i j k */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* l m n o */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* p q r s */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* t u v w */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* x y z { */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* | } ~ DEL */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_IGNORE,
-CASE_BYP_STATE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x90 0x91 0x92 0x93 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x99 0x99 0x9a 0x9b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* nobreakspace exclamdown cent sterling */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* currency yen brokenbar section */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* notsign hyphen registered macron */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* degree plusminus twosuperior threesuperior */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* acute mu paragraph periodcentered */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* onequarter onehalf threequarters questiondown */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* eth ntilde ograve oacute */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-CASE_BYP_STATE,
-};
-
-Const int Tbyptable[] = /* ESC CAN (^X) bypass state */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_BEL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_LF,
-CASE_UP,
-/* NP CR SO SI */
-CASE_IGNORE,
-CASE_CR,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_BES_STATE,
-/* FS GS RS US */
-CASE_PT_STATE,
-CASE_PLT_STATE,
-CASE_IPL_STATE,
-CASE_ALP_STATE,
-/* SP ! " # */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* $ % & ' */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ( ) * + */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* , - . / */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0 1 2 3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 4 5 6 7 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 8 9 : ; */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* < = > ? */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* @ A B C */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* D E F G */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* H I J K */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* L M N O */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* P Q R S */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* T U V W */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* X Y Z [ */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* \ ] ^ _ */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ` a b c */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* d e f g */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* h i j k */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* l m n o */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* p q r s */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* t u v w */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* x y z { */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* | } ~ DEL */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x90 0x91 0x92 0x93 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x99 0x99 0x9a 0x9b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* nobreakspace exclamdown cent sterling */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* currency yen brokenbar section */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* notsign hyphen registered macron */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Eth Ntilde Ograve Oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* agrave aacute acircumflex atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* adiaeresis aring ae ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* eth ntilde ograve oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ocircumflex otilde odiaeresis division */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* oslash ugrave uacute ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-};
-
-Const int Tesctable[] = /* ESC */
-{
-/* NUL SOH STX ETX */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_VT_MODE,
-/* EOT ENQ ACK BEL */
-CASE_CURSTATE,
-CASE_REPORT,
-CASE_CURSTATE,
-CASE_BEL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_IGNORE,
-CASE_UP,
-/* NP CR SO SI */
-CASE_PAGE,
-CASE_IGNORE,
-CASE_APL,
-CASE_ASCII,
-/* DLE DC1 DC2 DC3 */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* DC4 NAK SYN ETB */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_COPY,
-/* CAN EM SUB ESC */
-CASE_BYP_STATE,
-CASE_CURSTATE,
-CASE_GIN,
-CASE_IGNORE,
-/* FS GS RS US */
-CASE_SPT_STATE,
-CASE_PLT_STATE,
-CASE_IPL_STATE,
-CASE_ALP_STATE,
-/* SP ! " # */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* $ % & ' */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* ( ) * + */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* , - . / */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* 0 1 2 3 */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* 4 5 6 7 */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* 8 9 : ; */
-CASE_CHAR_SIZE,
-CASE_CHAR_SIZE,
-CASE_CHAR_SIZE,
-CASE_CHAR_SIZE,
-/* < = > ? */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* @ A B C */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* D E F G */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* H I J K */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* L M N O */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* P Q R S */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* T U V W */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* X Y Z [ */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* \ ] ^ _ */
-CASE_CURSTATE,
-CASE_OSC,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* ` a b c */
-CASE_BEAM_VEC,
-CASE_BEAM_VEC,
-CASE_BEAM_VEC,
-CASE_BEAM_VEC,
-/* d e f g */
-CASE_BEAM_VEC,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_BEAM_VEC,
-/* h i j k */
-CASE_BEAM_VEC,
-CASE_BEAM_VEC,
-CASE_BEAM_VEC,
-CASE_BEAM_VEC,
-/* l m n o */
-CASE_BEAM_VEC,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_BEAM_VEC,
-/* p q r s */
-CASE_BEAM_VEC,
-CASE_BEAM_VEC,
-CASE_BEAM_VEC,
-CASE_BEAM_VEC,
-/* t u v w */
-CASE_BEAM_VEC,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_BEAM_VEC,
-/* x y z { */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_CURSTATE,
-/* | } ~ DEL */
-CASE_CURSTATE,
-CASE_CURSTATE,
-CASE_IGNORE,
-CASE_CURSTATE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x90 0x91 0x92 0x93 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x99 0x99 0x9a 0x9b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* nobreakspace exclamdown cent sterling */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* currency yen brokenbar section */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* notsign hyphen registered macron */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Eth Ntilde Ograve Oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* agrave aacute acircumflex atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* adiaeresis aring ae ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* eth ntilde ograve oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ocircumflex otilde odiaeresis division */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* oslash ugrave uacute ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-};
-
-Const int Tipltable[] = /* RS (^^) incremental plot */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_BEL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_LF,
-CASE_UP,
-/* NP CR SO SI */
-CASE_IGNORE,
-CASE_CR,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_ESC_STATE,
-/* FS GS RS US */
-CASE_PT_STATE,
-CASE_PLT_STATE,
-CASE_IPL_STATE,
-CASE_ALP_STATE,
-/* SP ! " # */
-CASE_PENUP,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* $ % & ' */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ( ) * + */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* , - . / */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0 1 2 3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 4 5 6 7 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 8 9 : ; */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* < = > ? */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* @ A B C */
-CASE_IGNORE,
-CASE_IPL_POINT,
-CASE_IPL_POINT,
-CASE_IGNORE,
-/* D E F G */
-CASE_IPL_POINT,
-CASE_IPL_POINT,
-CASE_IPL_POINT,
-CASE_IGNORE,
-/* H I J K */
-CASE_IPL_POINT,
-CASE_IPL_POINT,
-CASE_IPL_POINT,
-CASE_IGNORE,
-/* L M N O */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* P Q R S */
-CASE_PENDOWN,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* T U V W */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* X Y Z [ */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* \ ] ^ _ */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ` a b c */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* d e f g */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* h i j k */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* l m n o */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* p q r s */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* t u v w */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* x y z { */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* | } ~ DEL */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x90 0x91 0x92 0x93 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x99 0x99 0x9a 0x9b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* nobreakspace exclamdown cent sterling */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* currency yen brokenbar section */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* notsign hyphen registered macron */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Eth Ntilde Ograve Oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* agrave aacute acircumflex atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* adiaeresis aring ae ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* eth ntilde ograve oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ocircumflex otilde odiaeresis division */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* oslash ugrave uacute ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-};
-
-Const int Tplttable[] = /* GS (^]) graph (plot) mode */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_BEL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_LF,
-CASE_UP,
-/* NP CR SO SI */
-CASE_IGNORE,
-CASE_CR,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_ESC_STATE,
-/* FS GS RS US */
-CASE_PT_STATE,
-CASE_PLT_STATE,
-CASE_IPL_STATE,
-CASE_ALP_STATE,
-/* SP ! " # */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* $ % & ' */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* ( ) * + */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* , - . / */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* 0 1 2 3 */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* 4 5 6 7 */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* 8 9 : ; */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* < = > ? */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* @ A B C */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* D E F G */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* H I J K */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* L M N O */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* P Q R S */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* T U V W */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* X Y Z [ */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* \ ] ^ _ */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* ` a b c */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* d e f g */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* h i j k */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* l m n o */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* p q r s */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* t u v w */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* x y z { */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* | } ~ DEL */
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-CASE_PLT_VEC,
-/* 0x80 0x81 0x82 0x83 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x90 0x91 0x92 0x93 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x99 0x99 0x9a 0x9b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* nobreakspace exclamdown cent sterling */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* currency yen brokenbar section */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* notsign hyphen registered macron */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Eth Ntilde Ograve Oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* agrave aacute acircumflex atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* adiaeresis aring ae ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* eth ntilde ograve oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ocircumflex otilde odiaeresis division */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* oslash ugrave uacute ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-};
-
-Const int Tpttable[] = /* FS (^\) point plot mode */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_BEL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_LF,
-CASE_UP,
-/* NP CR SO SI */
-CASE_IGNORE,
-CASE_CR,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_ESC_STATE,
-/* FS GS RS US */
-CASE_PT_STATE,
-CASE_PLT_STATE,
-CASE_IPL_STATE,
-CASE_ALP_STATE,
-/* SP ! " # */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* $ % & ' */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* ( ) * + */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* , - . / */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* 0 1 2 3 */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* 4 5 6 7 */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* 8 9 : ; */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* < = > ? */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* @ A B C */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* D E F G */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* H I J K */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* L M N O */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* P Q R S */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* T U V W */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* X Y Z [ */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* \ ] ^ _ */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* ` a b c */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* d e f g */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* h i j k */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* l m n o */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* p q r s */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* t u v w */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* x y z { */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* | } ~ DEL */
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-CASE_PT_POINT,
-/* 0x80 0x81 0x82 0x83 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x90 0x91 0x92 0x93 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x99 0x99 0x9a 0x9b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* nobreakspace exclamdown cent sterling */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* currency yen brokenbar section */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* notsign hyphen registered macron */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Eth Ntilde Ograve Oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* agrave aacute acircumflex atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* adiaeresis aring ae ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* eth ntilde ograve oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ocircumflex otilde odiaeresis division */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* oslash ugrave uacute ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-};
-
-Const int Tspttable[] = /* ESC FS (^\) special point plot */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_BEL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_LF,
-CASE_UP,
-/* NP CR SO SI */
-CASE_IGNORE,
-CASE_CR,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_ESC_STATE,
-/* FS GS RS US */
-CASE_PT_STATE,
-CASE_PLT_STATE,
-CASE_IPL_STATE,
-CASE_ALP_STATE,
-/* SP ! " # */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* $ % & ' */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* ( ) * + */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* , - . / */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* 0 1 2 3 */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* 4 5 6 7 */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* 8 9 : ; */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* < = > ? */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* @ A B C */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* D E F G */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* H I J K */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* L M N O */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* P Q R S */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* T U V W */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* X Y Z [ */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* \ ] ^ _ */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* ` a b c */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* d e f g */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* h i j k */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* l m n o */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* p q r s */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* t u v w */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* x y z { */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* | } ~ DEL */
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-CASE_SPT_POINT,
-/* 0x80 0x81 0x82 0x83 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x90 0x91 0x92 0x93 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x99 0x99 0x9a 0x9b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* nobreakspace exclamdown cent sterling */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* currency yen brokenbar section */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* notsign hyphen registered macron */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Eth Ntilde Ograve Oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* agrave aacute acircumflex atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* adiaeresis aring ae ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* eth ntilde ograve oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ocircumflex otilde odiaeresis division */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* oslash ugrave uacute ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-};
diff --git a/nx-X11/programs/xterm/Tekparse.def b/nx-X11/programs/xterm/Tekparse.def
deleted file mode 100644
index 50b1be183..000000000
--- a/nx-X11/programs/xterm/Tekparse.def
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# $Xorg: Tekparse.def,v 1.3 2000/08/17 19:55:07 cpqbld Exp $
-#
-# List of symbols that need to be defined for Tekparse.h. If you need to
-# change any of the CASE_ macros, make the change here and rerun the command
-# shown in Tekparse.h.
-#
-
-CASE_REPORT
-CASE_VT_MODE
-CASE_SPT_STATE
-CASE_GIN
-CASE_BEL
-CASE_BS
-CASE_PT_STATE
-CASE_PLT_STATE
-CASE_TAB
-CASE_IPL_STATE
-CASE_ALP_STATE
-CASE_UP
-CASE_COPY
-CASE_PAGE
-CASE_BES_STATE
-CASE_BYP_STATE
-CASE_IGNORE
-CASE_ASCII
-CASE_APL
-CASE_CHAR_SIZE
-CASE_BEAM_VEC
-CASE_CURSTATE
-CASE_PENUP
-CASE_PENDOWN
-CASE_IPL_POINT
-CASE_PLT_VEC
-CASE_PT_POINT
-CASE_SPT_POINT
-CASE_CR
-CASE_ESC_STATE
-CASE_LF
-CASE_SP
-CASE_PRINT
-CASE_OSC
diff --git a/nx-X11/programs/xterm/Tekparse.h b/nx-X11/programs/xterm/Tekparse.h
deleted file mode 100644
index c7c315ec7..000000000
--- a/nx-X11/programs/xterm/Tekparse.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * $Xorg: Tekparse.h,v 1.3 2000/08/17 19:55:07 cpqbld Exp $
- */
-
-/*
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-/* $XFree86: xc/programs/xterm/Tekparse.h,v 1.4 2001/01/17 23:46:34 dawes Exp $ */
-
-
-/* @(#)Tekparse.h X10/6.6 11/7/86 */
-
-#ifndef included_Tekparse_h
-#define included_Tekparse_h 1
-
-#ifndef Const
-# if defined(__STDC__) && !defined(__cplusplus)
-# define Const const
-# else
-# define Const /**/
-# endif
-#endif
-
-extern Const int Talptable[];
-extern Const int Tbestable[];
-extern Const int Tbyptable[];
-extern Const int Tesctable[];
-extern Const int Tipltable[];
-extern Const int Tplttable[];
-extern Const int Tpttable[];
-extern Const int Tspttable[];
-
-/*
- * The following list of definitions is generated from Tekparse.def using the
- * following command line:
- *
- * egrep -v '^CASE_' Tekparse.def | \
- * awk 'BEGIN {n = 0;} {printf "#define %s %d\n", $1, n; n++}'
- *
- * You you need to change something, change Tekparse.def and regenerate the
- * definitions. This would have been automatic, but since this doesn't change
- * very often, it isn't worth the makefile hassle.
- */
-
-#define CASE_REPORT 0
-#define CASE_VT_MODE 1
-#define CASE_SPT_STATE 2
-#define CASE_GIN 3
-#define CASE_BEL 4
-#define CASE_BS 5
-#define CASE_PT_STATE 6
-#define CASE_PLT_STATE 7
-#define CASE_TAB 8
-#define CASE_IPL_STATE 9
-#define CASE_ALP_STATE 10
-#define CASE_UP 11
-#define CASE_COPY 12
-#define CASE_PAGE 13
-#define CASE_BES_STATE 14
-#define CASE_BYP_STATE 15
-#define CASE_IGNORE 16
-#define CASE_ASCII 17
-#define CASE_APL 18
-#define CASE_CHAR_SIZE 19
-#define CASE_BEAM_VEC 20
-#define CASE_CURSTATE 21
-#define CASE_PENUP 22
-#define CASE_PENDOWN 23
-#define CASE_IPL_POINT 24
-#define CASE_PLT_VEC 25
-#define CASE_PT_POINT 26
-#define CASE_SPT_POINT 27
-#define CASE_CR 28
-#define CASE_ESC_STATE 29
-#define CASE_LF 30
-#define CASE_SP 31
-#define CASE_PRINT 32
-#define CASE_OSC 33
-
-#endif /* included_Tekparse_h */
diff --git a/nx-X11/programs/xterm/Tekproc.c b/nx-X11/programs/xterm/Tekproc.c
deleted file mode 100644
index 0a6b79bd1..000000000
--- a/nx-X11/programs/xterm/Tekproc.c
+++ /dev/null
@@ -1,1782 +0,0 @@
-/* $XTermId: Tekproc.c,v 1.131 2005/11/03 13:17:27 tom Exp $ */
-
-/*
- * $Xorg: Tekproc.c,v 1.5 2001/02/09 02:06:02 xorgcvs Exp $
- *
- * Warning, there be crufty dragons here.
- */
-/* $XFree86: xc/programs/xterm/Tekproc.c,v 3.55 2005/11/03 13:17:27 dickey Exp $ */
-
-/*
-
-Copyright 2001-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-Copyright 1988 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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/* Tekproc.c */
-
-#define RES_OFFSET(field) XtOffsetOf(TekWidgetRec, field)
-
-#include <xterm.h>
-
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/cursorfont.h>
-#include <X11/Xmu/CharSet.h>
-
-#if OPT_TOOLBAR
-
-#if defined(HAVE_LIB_XAW)
-#include <X11/Xaw/Form.h>
-#elif defined(HAVE_LIB_XAW3D)
-#include <X11/Xaw3d/Form.h>
-#elif defined(HAVE_LIB_NEXTAW)
-#include <X11/neXtaw/Form.h>
-#elif defined(HAVE_LIB_XAWPLUS)
-#include <X11/XawPlus/Form.h>
-#endif
-
-#endif /* OPT_TOOLBAR */
-
-#include <stdio.h>
-#include <ctype.h>
-#include <signal.h>
-
-#include <Tekparse.h>
-#include <data.h>
-#include <error.h>
-#include <menu.h>
-
-#define DefaultGCID XGContextFromGC(DefaultGC(screen->display, DefaultScreen(screen->display)))
-
-/* Tek defines */
-
-#define DOTDASHEDLINE 2
-#define DOTTEDLINE 1
-#define EAST 01
-#define LINEMASK 07
-#define LONGDASHEDLINE 4
-#define MARGIN1 0
-#define MARGIN2 1
-#define MAX_PTS 150
-#define MAX_VTX 300
-#define NORTH 04
-#define PENDOWN 1
-#define PENUP 0
-#define SHORTDASHEDLINE 3
-#define SOLIDLINE 0
-#define SOUTH 010
-#define TEKBOTTOMPAD 23
-#define TEKDEFHEIGHT 565
-#define TEKDEFWIDTH 750
-#define TEKHEIGHT 3072
-#define TEKHOME ((TekChar[screen->page.fontsize].nlines - 1)\
- * TekChar[screen->page.fontsize].vsize)
-#define TEKMINHEIGHT 452
-#define TEKMINWIDTH 600
-#define TEKTOPPAD 34
-#define TEKWIDTH 4096
-#define WEST 02
-
-#define TekMove(x,y) screen->cur_X = x; screen->cur_Y = y
-#define input() Tinput()
-#define unput(c) *Tpushback++ = c
-/* *INDENT-OFF* */
-static struct Tek_Char {
- int hsize; /* in Tek units */
- int vsize; /* in Tek units */
- int charsperline;
- int nlines;
-} TekChar[TEKNUMFONTS] = {
- {56, 88, 74, 35}, /* large */
- {51, 82, 81, 38}, /* #2 */
- {34, 53, 121, 58}, /* #3 */
- {31, 48, 133, 64}, /* small */
-};
-/* *INDENT-ON* */
-
-static Cursor GINcursor;
-static XSegment *line_pt;
-static int nplot;
-static TekLink Tek0;
-static jmp_buf Tekjump;
-static TekLink *TekRecord;
-static XSegment *Tline;
-
-static Const int *curstate = Talptable;
-static Const int *Tparsestate = Talptable;
-
-static char defaultTranslations[] = "\
- ~Meta<KeyPress>: insert-seven-bit() \n\
- Meta<KeyPress>: insert-eight-bit() \n\
- !Ctrl <Btn1Down>: popup-menu(mainMenu) \n\
- !Lock Ctrl <Btn1Down>: popup-menu(mainMenu) \n\
-!Lock Ctrl @Num_Lock <Btn1Down>: popup-menu(mainMenu) \n\
- !Ctrl @Num_Lock <Btn1Down>: popup-menu(mainMenu) \n\
- !Ctrl <Btn2Down>: popup-menu(tekMenu) \n\
- !Lock Ctrl <Btn2Down>: popup-menu(tekMenu) \n\
-!Lock Ctrl @Num_Lock <Btn2Down>: popup-menu(tekMenu) \n\
- !Ctrl @Num_Lock <Btn2Down>: popup-menu(tekMenu) \n\
- Shift ~Meta<Btn1Down>: gin-press(L) \n\
- ~Meta<Btn1Down>: gin-press(l) \n\
- Shift ~Meta<Btn2Down>: gin-press(M) \n\
- ~Meta<Btn2Down>: gin-press(m) \n\
- Shift ~Meta<Btn3Down>: gin-press(R) \n\
- ~Meta<Btn3Down>: gin-press(r)";
-/* *INDENT-OFF* */
-static XtActionsRec actionsList[] = {
- { "string", HandleStringEvent },
- { "insert", HandleKeyPressed }, /* alias for insert-seven-bit */
- { "insert-seven-bit", HandleKeyPressed },
- { "insert-eight-bit", HandleEightBitKeyPressed },
- { "gin-press", HandleGINInput },
- { "secure", HandleSecure },
- { "create-menu", HandleCreateMenu },
- { "popup-menu", HandlePopupMenu },
- /* menu actions */
- { "allow-send-events", HandleAllowSends },
- { "set-visual-bell", HandleSetVisualBell },
-#ifdef ALLOWLOGGING
- { "set-logging", HandleLogging },
-#endif
- { "redraw", HandleRedraw },
- { "send-signal", HandleSendSignal },
- { "quit", HandleQuit },
- { "set-scrollbar", HandleScrollbar },
- { "set-jumpscroll", HandleJumpscroll },
- { "set-reverse-video", HandleReverseVideo },
- { "set-autowrap", HandleAutoWrap },
- { "set-reversewrap", HandleReverseWrap },
- { "set-autolinefeed", HandleAutoLineFeed },
- { "set-appcursor", HandleAppCursor },
- { "set-appkeypad", HandleAppKeypad },
- { "set-scroll-on-key", HandleScrollKey },
- { "set-scroll-on-tty-output", HandleScrollTtyOutput },
- { "set-allow132", HandleAllow132 },
- { "set-cursesemul", HandleCursesEmul },
- { "set-marginbell", HandleMarginBell },
- { "set-altscreen", HandleAltScreen },
- { "soft-reset", HandleSoftReset },
- { "hard-reset", HandleHardReset },
- { "set-terminal-type", HandleSetTerminalType },
- { "set-visibility", HandleVisibility },
- { "set-tek-text", HandleSetTekText },
- { "tek-page", HandleTekPage },
- { "tek-reset", HandleTekReset },
- { "tek-copy", HandleTekCopy },
-#if OPT_TOOLBAR
- { "set-toolbar", HandleToolbar },
-#endif
-};
-/* *INDENT-ON* */
-
-static Dimension defOne = 1;
-
-#define GIN_TERM_NONE_STR "none"
-#define GIN_TERM_CR_STR "CRonly"
-#define GIN_TERM_EOT_STR "CR&EOT"
-
-#define GIN_TERM_NONE 0
-#define GIN_TERM_CR 1
-#define GIN_TERM_EOT 2
-
-#ifdef VMS
-#define DFT_FONT_SMALL "FIXED"
-#else
-#define DFT_FONT_SMALL "6x10"
-#endif
-
-static XtResource resources[] =
-{
- {XtNwidth, XtCWidth, XtRDimension, sizeof(Dimension),
- XtOffsetOf(CoreRec, core.width), XtRDimension, (caddr_t) & defOne},
- {XtNheight, XtCHeight, XtRDimension, sizeof(Dimension),
- XtOffsetOf(CoreRec, core.height), XtRDimension, (caddr_t) & defOne},
- Fres("fontLarge", XtCFont, tek.Tfont[TEK_FONT_LARGE], "9x15"),
- Fres("font2", XtCFont, tek.Tfont[TEK_FONT_2], "6x13"),
- Fres("font3", XtCFont, tek.Tfont[TEK_FONT_3], "8x13"),
- Fres("fontSmall", XtCFont, tek.Tfont[TEK_FONT_SMALL], DFT_FONT_SMALL),
- Sres("initialFont", "InitialFont", tek.initial_font, "large"),
- Sres("ginTerminator", "GinTerminator", tek.gin_terminator_str, GIN_TERM_NONE_STR),
-#if OPT_TOOLBAR
- Wres(XtNmenuBar, XtCMenuBar, tek.tb_info.menu_bar, 0),
- Ires(XtNmenuHeight, XtCMenuHeight, tek.tb_info.menu_height, 25),
-#endif
-};
-
-static IChar Tinput(void);
-static int getpoint(void);
-static void TCursorBack(void);
-static void TCursorDown(void);
-static void TCursorForward(void);
-static void TCursorUp(void);
-static void TekBackground(TScreen * screen);
-static void TekConfigure(Widget w);
-static void TekDraw(int x, int y);
-static void TekEnq(unsigned status, int x, int y);
-static void TekFlush(void);
-static void TekInitialize(Widget request,
- Widget wnew,
- ArgList args,
- Cardinal *num_args);
-static void TekPage(void);
-static void TekRealize(Widget gw,
- XtValueMask * valuemaskp,
- XSetWindowAttributes * values);
-
-static WidgetClassRec tekClassRec =
-{
- {
-/* core_class fields */
- (WidgetClass) & widgetClassRec, /* superclass */
- "Tek4014", /* class_name */
- sizeof(TekWidgetRec), /* widget_size */
- NULL, /* class_initialize */
- NULL, /* class_part_initialize */
- False, /* class_inited */
- TekInitialize, /* initialize */
- NULL, /* initialize_hook */
- TekRealize, /* realize */
- actionsList, /* actions */
- XtNumber(actionsList), /* 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 */
- TekConfigure, /* resize */
- TekExpose, /* expose */
- NULL, /* set_values */
- NULL, /* set_values_hook */
- XtInheritSetValuesAlmost, /* set_values_almost */
- NULL, /* get_values_hook */
- NULL, /* accept_focus */
- XtVersion, /* version */
- NULL, /* callback_offsets */
- defaultTranslations, /* tm_table */
- XtInheritQueryGeometry, /* query_geometry */
- XtInheritDisplayAccelerator, /* display_accelerator */
- NULL /* extension */
- }
-};
-#define tekWidgetClass ((WidgetClass)&tekClassRec)
-
-static Bool Tfailed = False;
-
-int
-TekInit(void)
-{
- Widget form_top, menu_top;
-
- if (!Tfailed
- && tekWidget == 0) {
-
- TRACE(("TekInit\n"));
- /* this causes the Initialize method to be called */
- tekshellwidget =
- XtCreatePopupShell("tektronix", topLevelShellWidgetClass,
- toplevel, ourTopLevelShellArgs,
- number_ourTopLevelShellArgs);
-
- SetupMenus(tekshellwidget, &form_top, &menu_top);
-
- /* this causes the Realize method to be called */
- tekWidget = (TekWidget)
- XtVaCreateManagedWidget("tek4014",
- tekWidgetClass, form_top,
-#if OPT_TOOLBAR
- XtNmenuBar, menu_top,
- XtNresizable, True,
- XtNfromVert, menu_top,
- XtNtop, XawChainTop,
- XtNleft, XawChainLeft,
- XtNright, XawChainRight,
- XtNbottom, XawChainBottom,
-#endif
- (XtPointer) 0);
-#if OPT_TOOLBAR
- ShowToolbar(resource.toolBar);
-#endif
- }
- return (!Tfailed);
-}
-
-/*
- * If we haven't allocated the PtyData struct, do so.
- */
-int
-TekPtyData(void)
-{
- if (Tpushb == 0) {
- if ((Tpushb = TypeMallocN(Char, 10)) == NULL
- || (Tline = TypeMallocN(XSegment, MAX_VTX)) == NULL) {
- fprintf(stderr, "%s: Not enough core for Tek mode\n", xterm_name);
- if (Tpushb)
- free(Tpushb);
- Tfailed = True;
- return 0;
- }
- }
- return 1;
-}
-
-static void
-Tekparse(void)
-{
- TScreen *screen = &term->screen;
- int x, y;
- IChar c = 0;
- IChar ch;
- int nextstate;
-
- for (;;) {
- c = input();
- /*
- * The parsing tables all have 256 entries. If we're supporting
- * wide characters, we handle them by treating them the same as
- * printing characters.
- */
-#if OPT_WIDE_CHARS
- if (c > 255) {
- nextstate = (Tparsestate == Talptable)
- ? CASE_PRINT
- : CASE_IGNORE;
- } else
-#endif
- nextstate = Tparsestate[c];
- TRACE(("Tekparse %04X -> %d\n", c, nextstate));
-
- switch (nextstate) {
- case CASE_REPORT:
- TRACE(("case: report address\n"));
- if (screen->TekGIN) {
- TekGINoff();
- TekEnqMouse(0);
- } else {
- c = 064; /* has hard copy unit */
- if (screen->margin == MARGIN2)
- c |= 02;
- TekEnq(c, screen->cur_X, screen->cur_Y);
- }
- TekRecord->ptr[-1] = NAK; /* remove from recording */
- Tparsestate = curstate;
- break;
-
- case CASE_VT_MODE:
- TRACE(("case: special return to vt102 mode\n"));
- Tparsestate = curstate;
- TekRecord->ptr[-1] = NAK; /* remove from recording */
- FlushLog(screen);
- return;
-
- case CASE_SPT_STATE:
- TRACE(("case: Enter Special Point Plot mode\n"));
- if (screen->TekGIN)
- TekGINoff();
- Tparsestate = curstate = Tspttable;
- break;
-
- case CASE_GIN:
- TRACE(("case: Do Tek GIN mode\n"));
- screen->TekGIN = &TekRecord->ptr[-1];
- /* Set cross-hair cursor raster array */
- if ((GINcursor =
- make_colored_cursor(XC_tcross,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG))) != 0) {
- XDefineCursor(screen->display, TWindow(screen),
- GINcursor);
- }
- Tparsestate = Tbyptable; /* Bypass mode */
- break;
-
- case CASE_BEL:
- TRACE(("case: BEL\n"));
- if (screen->TekGIN)
- TekGINoff();
- if (!TekRefresh)
- Bell(XkbBI_TerminalBell, 0);
- Tparsestate = curstate; /* clear bypass condition */
- break;
-
- case CASE_BS:
- TRACE(("case: BS\n"));
- if (screen->TekGIN)
- TekGINoff();
- Tparsestate = curstate; /* clear bypass condition */
- TCursorBack();
- break;
-
- case CASE_PT_STATE:
- TRACE(("case: Enter Tek Point Plot mode\n"));
- if (screen->TekGIN)
- TekGINoff();
- Tparsestate = curstate = Tpttable;
- break;
-
- case CASE_PLT_STATE:
- TRACE(("case: Enter Tek Plot mode\n"));
- if (screen->TekGIN)
- TekGINoff();
- Tparsestate = curstate = Tplttable;
- if ((c = input()) == BEL)
- screen->pen = PENDOWN;
- else {
- unput(c);
- screen->pen = PENUP;
- }
- break;
-
- case CASE_TAB:
- TRACE(("case: HT\n"));
- if (screen->TekGIN)
- TekGINoff();
- Tparsestate = curstate; /* clear bypass condition */
- TCursorForward();
- break;
-
- case CASE_IPL_STATE:
- TRACE(("case: Enter Tek Incremental Plot mode\n"));
- if (screen->TekGIN)
- TekGINoff();
- Tparsestate = curstate = Tipltable;
- break;
-
- case CASE_ALP_STATE:
- TRACE(("case: Enter Tek Alpha mode from any other mode\n"));
- if (screen->TekGIN)
- TekGINoff();
- /* if in one of graphics states, move alpha cursor */
- if (nplot > 0) /* flush line VTbuffer */
- TekFlush();
- Tparsestate = curstate = Talptable;
- break;
-
- case CASE_UP:
- TRACE(("case: cursor up\n"));
- if (screen->TekGIN)
- TekGINoff();
- Tparsestate = curstate; /* clear bypass condition */
- TCursorUp();
- break;
-
- case CASE_COPY:
- TRACE(("case: make copy\n"));
- if (screen->TekGIN)
- TekGINoff();
- TekCopy();
- TekRecord->ptr[-1] = NAK; /* remove from recording */
- Tparsestate = curstate; /* clear bypass condition */
- break;
-
- case CASE_PAGE:
- TRACE(("case: Page Function\n"));
- if (screen->TekGIN)
- TekGINoff();
- TekPage(); /* clear bypass condition */
- break;
-
- case CASE_BES_STATE:
- TRACE(("case: Byp: an escape char\n"));
- Tparsestate = Tbestable;
- break;
-
- case CASE_BYP_STATE:
- TRACE(("case: set bypass condition\n"));
- Tparsestate = Tbyptable;
- break;
-
- case CASE_IGNORE:
- TRACE(("case: Esc: totally ignore CR, ESC, LF, ~\n"));
- break;
-
- case CASE_ASCII:
- TRACE(("case: Select ASCII char set\n"));
- /* ignore for now */
- Tparsestate = curstate;
- break;
-
- case CASE_APL:
- TRACE(("case: Select APL char set\n"));
- /* ignore for now */
- Tparsestate = curstate;
- break;
-
- case CASE_CHAR_SIZE:
- TRACE(("case: character size selector\n"));
- TekSetFontSize((int) (c & 03));
- Tparsestate = curstate;
- break;
-
- case CASE_BEAM_VEC:
- TRACE(("case: beam and vector selector\n"));
- /* only line types */
- if ((c &= LINEMASK) != screen->cur.linetype) {
- if (nplot > 0)
- TekFlush();
- if (c <= TEKNUMLINES)
- screen->cur.linetype = c;
- }
- Tparsestate = curstate;
- break;
-
- case CASE_CURSTATE:
- Tparsestate = curstate;
- break;
-
- case CASE_PENUP:
- TRACE(("case: Ipl: penup\n"));
- screen->pen = PENUP;
- break;
-
- case CASE_PENDOWN:
- TRACE(("case: Ipl: pendown\n"));
- screen->pen = PENDOWN;
- break;
-
- case CASE_IPL_POINT:
- TRACE(("case: Ipl: point\n"));
- x = screen->cur_X;
- y = screen->cur_Y;
- if (c & NORTH)
- y++;
- else if (c & SOUTH)
- y--;
- if (c & EAST)
- x++;
- else if (c & WEST)
- x--;
- if (screen->pen == PENDOWN)
- TekDraw(x, y);
- else
- TekMove(x, y);
- break;
-
- case CASE_PLT_VEC:
- TRACE(("case: Plt: vector\n"));
- unput(c);
- if (getpoint()) {
- if (screen->pen == PENDOWN) {
- TekDraw(screen->cur.x, screen->cur.y);
- } else {
- TekMove(screen->cur.x, screen->cur.y);
- }
- screen->pen = PENDOWN;
- }
- break;
-
- case CASE_PT_POINT:
- TRACE(("case: Pt: point\n"));
- unput(c);
- if (getpoint()) {
- TekMove(screen->cur.x, screen->cur.y);
- TekDraw(screen->cur.x, screen->cur.y);
- }
- break;
-
- case CASE_SPT_POINT:
- TRACE(("case: Spt: point\n"));
- /* ignore intensity character in c */
- if (getpoint()) {
- TekMove(screen->cur.x, screen->cur.y);
- TekDraw(screen->cur.x, screen->cur.y);
- }
- break;
-
- case CASE_CR:
- TRACE(("case: CR\n"));
- if (screen->TekGIN)
- TekGINoff();
- if (nplot > 0) /* flush line VTbuffer */
- TekFlush();
- screen->cur_X = screen->margin == MARGIN1 ? 0 :
- TEKWIDTH / 2;
- Tparsestate = curstate = Talptable;
- break;
-
- case CASE_ESC_STATE:
- TRACE(("case: ESC\n"));
- Tparsestate = Tesctable;
- break;
-
- case CASE_LF:
- TRACE(("case: LF\n"));
- if (screen->TekGIN)
- TekGINoff();
- TCursorDown();
- if (!TekRefresh)
- do_xevents();
- break;
-
- case CASE_SP:
- TRACE(("case: SP\n"));
- TCursorForward();
- break;
-
- case CASE_PRINT:
- TRACE(("case: printable character\n"));
- ch = c;
- c = screen->cur.fontsize;
- x = (int) (screen->cur_X * TekScale(screen))
- + screen->border;
- y = (int) ((TEKHEIGHT + TEKTOPPAD - screen->cur_Y) * TekScale(screen))
- + screen->border;
-
-#if OPT_WIDE_CHARS
- if (screen->wide_chars
- && (ch > 255)) {
- XChar2b sbuf;
- sbuf.byte2 = CharOf(ch);
- sbuf.byte1 = CharOf(ch >> 8);
- XDrawImageString16(screen->display,
- TWindow(screen),
- screen->TnormalGC,
- x,
- y,
- &sbuf,
- 1);
- } else
-#endif
- XDrawString(screen->display,
- TWindow(screen),
- screen->TnormalGC,
- x,
- y,
- (char *) &ch,
- 1);
- TCursorForward();
- break;
- case CASE_OSC:
- /* FIXME: someone should disentangle the input queues
- * of this code so that it can be state-driven.
- */
- TRACE(("case: do osc escape\n"));
- {
- Char buf2[512];
- IChar c2;
- unsigned len = 0;
- while ((c2 = input()) != BEL) {
- if (!isprint(c2 & 0x7f)
- || len + 2 >= (int) sizeof(buf2))
- break;
- buf2[len++] = c2;
- }
- buf2[len] = 0;
- if (c2 == BEL)
- do_osc(buf2, len, BEL);
- }
- Tparsestate = curstate;
- break;
- }
- }
-}
-
-static int rcnt;
-static char *rptr;
-static PtySelect Tselect_mask;
-
-static IChar
-Tinput(void)
-{
- TScreen *screen = &term->screen;
- TekLink *tek;
-
- if (Tpushback > Tpushb)
- return (*--Tpushback);
- if (TekRefresh) {
- if (rcnt-- > 0)
- return (*rptr++);
- if ((tek = TekRefresh->next) != 0) {
- TekRefresh = tek;
- rptr = tek->data;
- rcnt = tek->count - 1;
- TekSetFontSize(tek->fontsize);
- return (*rptr++);
- }
- TekRefresh = (TekLink *) 0;
- longjmp(Tekjump, 1);
- }
- again:
- if (VTbuffer->next >= VTbuffer->last) {
- int update = VTbuffer->update;
-
- if (nplot > 0) /* flush line */
- TekFlush();
-#ifdef VMS
- Tselect_mask = pty_mask; /* force a read */
-#else /* VMS */
- XFD_COPYSET(&pty_mask, &Tselect_mask);
-#endif /* VMS */
- for (;;) {
-#ifdef CRAY
- struct timeval crocktimeout;
- crocktimeout.tv_sec = 0;
- crocktimeout.tv_usec = 0;
- (void) Select(max_plus1,
- &Tselect_mask, NULL, NULL,
- &crocktimeout);
-#endif
- if (readPtyData(screen, &Tselect_mask, VTbuffer)) {
- break;
- }
- if (Ttoggled && curstate == Talptable) {
- TCursorToggle(TOGGLE);
- Ttoggled = False;
- }
- if (XtAppPending(app_con) & XtIMXEvent) {
-#ifdef VMS
- Tselect_mask = X_mask;
-#else /* VMS */
- XFD_COPYSET(&X_mask, &Tselect_mask);
-#endif /* VMS */
- } else {
- XFlush(screen->display);
-#ifdef VMS
- Tselect_mask = Select_mask;
-
-#else /* VMS */
- XFD_COPYSET(&Select_mask, &Tselect_mask);
- if (Select(max_plus1, &Tselect_mask, NULL, NULL, NULL) < 0) {
- if (errno != EINTR)
- SysError(ERROR_TSELECT);
- continue;
- }
-#endif /* VMS */
- }
-#ifdef VMS
- if (Tselect_mask & X_mask) {
- xevents();
- if (VTbuffer->update != update)
- goto again;
- }
-#else /* VMS */
- if (FD_ISSET(ConnectionNumber(screen->display), &Tselect_mask)) {
- xevents();
- if (VTbuffer->update != update)
- goto again;
- }
-#endif /* VMS */
- }
- if (!Ttoggled && curstate == Talptable) {
- TCursorToggle(TOGGLE);
- Ttoggled = True;
- }
- }
- tek = TekRecord;
- if (tek->count >= TEK_LINK_BLOCK_SIZE
- || tek->fontsize != screen->cur.fontsize) {
- if ((TekRecord = tek->next = CastMalloc(TekLink)) == 0)
- Panic("Tinput: malloc error (%d)\n", errno);
- tek = tek->next;
- tek->next = (TekLink *) 0;
- tek->fontsize = screen->cur.fontsize;
- tek->count = 0;
- tek->ptr = tek->data;
- }
- tek->count++;
-
- (void) morePtyData(screen, VTbuffer);
- return (*tek->ptr++ = nextPtyData(screen, VTbuffer));
-}
-
-/* this should become the Tek Widget's Resize proc */
-static void
-TekConfigure(Widget w)
-{
- TScreen *screen = &term->screen;
- int border = 2 * screen->border;
- double d;
-
- if (TWindow(screen))
- XClearWindow(screen->display, TWindow(screen));
- TWidth(screen) = w->core.width - border;
- THeight(screen) = w->core.height - border;
- TekScale(screen) = (double) TWidth(screen) / TEKWIDTH;
- if ((d = (double) THeight(screen) / (TEKHEIGHT + TEKTOPPAD + TEKBOTTOMPAD))
- < TekScale(screen))
- TekScale(screen) = d;
- TFullWidth(screen) = w->core.width;
- TFullHeight(screen) = w->core.height;
-}
-
-/*ARGSUSED*/
-void
-TekExpose(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- Region region GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("TekExpose\n"));
-
-#ifdef lint
- region = region;
-#endif
- if (!Ttoggled)
- TCursorToggle(CLEAR);
- Ttoggled = True;
- Tpushback = Tpushb;
- screen->cur_X = 0;
- screen->cur_Y = TEKHOME;
- TekSetFontSize(screen->page.fontsize);
- screen->cur = screen->page;
- screen->margin = MARGIN1;
- if (screen->TekGIN) {
- screen->TekGIN = NULL;
- TekGINoff();
- }
- TekRefresh = &Tek0;
- rptr = TekRefresh->data;
- rcnt = TekRefresh->count;
- Tparsestate = curstate = Talptable;
- TRACE(("TekExpose resets data to replay %d bytes\n", rcnt));
- if (waiting_for_initial_map)
- first_map_occurred();
- if (!screen->waitrefresh)
- dorefresh();
-}
-
-void
-dorefresh(void)
-{
- TScreen *screen = &term->screen;
- static Cursor wait_cursor = None;
-
- if (wait_cursor == None)
- wait_cursor = make_colored_cursor(XC_watch,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
- XDefineCursor(screen->display, TWindow(screen), wait_cursor);
- XFlush(screen->display);
- if (!setjmp(Tekjump))
- Tekparse();
- XDefineCursor(screen->display, TWindow(screen),
- (screen->TekGIN && GINcursor) ? GINcursor : screen->arrow);
-}
-
-static void
-TekPage(void)
-{
- TScreen *screen = &term->screen;
- TekLink *tek;
-
- XClearWindow(screen->display, TWindow(screen));
- screen->cur_X = 0;
- screen->cur_Y = TEKHOME;
- screen->margin = MARGIN1;
- screen->page = screen->cur;
- if (screen->TekGIN)
- TekGINoff();
- tek = TekRecord = &Tek0;
- tek->fontsize = screen->cur.fontsize;
- tek->count = 0;
- tek->ptr = tek->data;
- tek = tek->next;
- if (tek)
- do {
- TekLink *tek2 = tek->next;
-
- free(tek);
- tek = tek2;
- } while (tek);
- TekRecord->next = (TekLink *) 0;
- TekRefresh = (TekLink *) 0;
- Ttoggled = True;
- Tparsestate = curstate = Talptable; /* Tek Alpha mode */
-}
-
-#define EXTRABITS 017
-#define FIVEBITS 037
-#define HIBITS (FIVEBITS << SHIFTHI)
-#define LOBITS (FIVEBITS << SHIFTLO)
-#define SHIFTHI 7
-#define SHIFTLO 2
-#define TWOBITS 03
-
-static int
-getpoint(void)
-{
- int c, x, y, e, lo_y = 0;
- TScreen *screen = &term->screen;
-
- x = screen->cur.x;
- y = screen->cur.y;
- for (;;) {
- if ((c = input()) < ' ') { /* control character */
- unput(c);
- return (0);
- }
- if (c < '@') { /* Hi X or Hi Y */
- if (lo_y) { /* seen a Lo Y, so this must be Hi X */
- x &= ~HIBITS;
- x |= (c & FIVEBITS) << SHIFTHI;
- continue;
- }
- /* else Hi Y */
- y &= ~HIBITS;
- y |= (c & FIVEBITS) << SHIFTHI;
- continue;
- }
- if (c < '`') { /* Lo X */
- x &= ~LOBITS;
- x |= (c & FIVEBITS) << SHIFTLO;
- screen->cur.x = x;
- screen->cur.y = y;
- return (1); /* OK */
- }
- /* else Lo Y */
- if (lo_y) { /* seen a Lo Y, so other must be extra bits */
- e = (y >> SHIFTLO) & EXTRABITS;
- x &= ~TWOBITS;
- x |= e & TWOBITS;
- y &= ~TWOBITS;
- y |= (e >> SHIFTLO) & TWOBITS;
- }
- y &= ~LOBITS;
- y |= (c & FIVEBITS) << SHIFTLO;
- lo_y++;
- }
-}
-
-static void
-TCursorBack(void)
-{
- TScreen *screen = &term->screen;
- struct Tek_Char *t;
- int x, l;
-
- x = (screen->cur_X -=
- (t = &TekChar[screen->cur.fontsize])->hsize
- );
-
- if (((screen->margin == MARGIN1) && (x < 0))
- || ((screen->margin == MARGIN2) && (x < TEKWIDTH / 2))) {
- if ((l = (screen->cur_Y + (t->vsize - 1)) / t->vsize + 1) >=
- t->nlines) {
- screen->margin = !screen->margin;
- l = 0;
- }
- screen->cur_Y = l * t->vsize;
- screen->cur_X = (t->charsperline - 1) * t->hsize;
- }
-}
-
-static void
-TCursorForward(void)
-{
- TScreen *screen = &term->screen;
- struct Tek_Char *t;
- int l;
-
- if ((screen->cur_X +=
- (t = &TekChar[screen->cur.fontsize])->hsize
- ) > TEKWIDTH
- ) {
- if ((l = screen->cur_Y / t->vsize - 1) < 0) {
- screen->margin = !screen->margin;
- l = t->nlines - 1;
- }
- screen->cur_Y = l * t->vsize;
- screen->cur_X = screen->margin == MARGIN1 ? 0 : TEKWIDTH / 2;
- }
-}
-
-static void
-TCursorUp(void)
-{
- TScreen *screen = &term->screen;
- struct Tek_Char *t;
- int l;
-
- t = &TekChar[screen->cur.fontsize];
-
- if ((l = (screen->cur_Y + (t->vsize - 1)) / t->vsize + 1) >= t->nlines) {
- l = 0;
- if ((screen->margin = !screen->margin) != MARGIN1) {
- if (screen->cur_X < TEKWIDTH / 2)
- screen->cur_X += TEKWIDTH / 2;
- } else if (screen->cur_X >= TEKWIDTH / 2)
- screen->cur_X -= TEKWIDTH / 2;
- }
- screen->cur_Y = l * t->vsize;
-}
-
-static void
-TCursorDown(void)
-{
- TScreen *screen = &term->screen;
- struct Tek_Char *t;
- int l;
-
- t = &TekChar[screen->cur.fontsize];
-
- if ((l = screen->cur_Y / t->vsize - 1) < 0) {
- l = t->nlines - 1;
- if ((screen->margin = !screen->margin) != MARGIN1) {
- if (screen->cur_X < TEKWIDTH / 2)
- screen->cur_X += TEKWIDTH / 2;
- } else if (screen->cur_X >= TEKWIDTH / 2)
- screen->cur_X -= TEKWIDTH / 2;
- }
- screen->cur_Y = l * t->vsize;
-}
-
-static void
-AddToDraw(int x1, int y1, int x2, int y2)
-{
- TScreen *screen = &term->screen;
- XSegment *lp;
-
- TRACE(("AddToDraw (%d,%d) (%d,%d)\n", x1, y1, x2, y2));
- if (nplot >= MAX_PTS) {
- TekFlush();
- }
- lp = line_pt++;
- lp->x1 = x1 = (int) (x1 * TekScale(screen) + screen->border);
- lp->y1 = y1 = (int) ((TEKHEIGHT + TEKTOPPAD - y1) * TekScale(screen) +
- screen->border);
- lp->x2 = x2 = (int) (x2 * TekScale(screen) + screen->border);
- lp->y2 = y2 = (int) ((TEKHEIGHT + TEKTOPPAD - y2) * TekScale(screen) +
- screen->border);
- nplot++;
- TRACE(("...AddToDraw %d points\n", nplot));
-}
-
-static void
-TekDraw(int x, int y)
-{
- TScreen *screen = &term->screen;
-
- if (nplot == 0 || T_lastx != screen->cur_X || T_lasty != screen->cur_Y) {
- /*
- * We flush on each unconnected line segment if the line
- * type is not solid. This solves a bug in X when drawing
- * points while the line type is not solid.
- */
- if (nplot > 0 && screen->cur.linetype != SOLIDLINE)
- TekFlush();
- }
- AddToDraw(screen->cur_X, screen->cur_Y, x, y);
- T_lastx = screen->cur_X = x;
- T_lasty = screen->cur_Y = y;
-}
-
-static void
-TekFlush(void)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("TekFlush\n"));
- XDrawSegments(screen->display, TWindow(screen),
- ((screen->cur.linetype == SOLIDLINE) ? screen->TnormalGC :
- screen->linepat[screen->cur.linetype - 1]),
- Tline, nplot);
- nplot = 0;
- line_pt = Tline;
-}
-
-void
-TekGINoff(void)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("TekGINoff\n"));
- XDefineCursor(screen->display, TWindow(screen), screen->arrow);
- if (GINcursor)
- XFreeCursor(screen->display, GINcursor);
- if (screen->TekGIN) {
- *screen->TekGIN = CAN; /* modify recording */
- screen->TekGIN = NULL;
- }
-}
-
-void
-TekEnqMouse(int c) /* character pressed */
-{
- TScreen *screen = &term->screen;
- int mousex, mousey, rootx, rooty;
- unsigned int mask; /* XQueryPointer */
- Window root, subw;
-
- TRACE(("TekEnqMouse\n"));
- XQueryPointer(
- screen->display, TWindow(screen),
- &root, &subw,
- &rootx, &rooty,
- &mousex, &mousey,
- &mask);
- if ((mousex = (int) ((mousex - screen->border) / TekScale(screen))) < 0)
- mousex = 0;
- else if (mousex >= TEKWIDTH)
- mousex = TEKWIDTH - 1;
- if ((mousey = (int) (TEKHEIGHT + TEKTOPPAD - (mousey - screen->border) /
- TekScale(screen))) < 0)
- mousey = 0;
- else if (mousey >= TEKHEIGHT)
- mousey = TEKHEIGHT - 1;
- TekEnq((unsigned) c, mousex, mousey);
-}
-
-static void
-TekEnq(unsigned status,
- int x,
- int y)
-{
- TScreen *screen = &term->screen;
- Char cplot[7];
- int len = 5;
- int adj = (status != 0) ? 0 : 1;
-
- TRACE(("TekEnq\n"));
- cplot[0] = status;
- /* Translate x and y to Tektronix code */
- cplot[1] = 040 | ((x >> SHIFTHI) & FIVEBITS);
- cplot[2] = 040 | ((x >> SHIFTLO) & FIVEBITS);
- cplot[3] = 040 | ((y >> SHIFTHI) & FIVEBITS);
- cplot[4] = 040 | ((y >> SHIFTLO) & FIVEBITS);
-
- if (screen->gin_terminator != GIN_TERM_NONE)
- cplot[len++] = '\r';
- if (screen->gin_terminator == GIN_TERM_EOT)
- cplot[len++] = '\004';
-#ifdef VMS
- tt_write(cplot + adj, len - adj);
-#else /* VMS */
- v_write(screen->respond, cplot + adj, (unsigned) (len - adj));
-#endif /* VMS */
-}
-
-void
-TekRun(void)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("TekRun ...\n"));
-
- if (!TWindow(screen) && !TekInit()) {
- if (VWindow(screen)) {
- screen->TekEmu = False;
- return;
- }
- Exit(ERROR_TINIT);
- }
- if (!screen->Tshow) {
- set_tek_visibility(True);
- }
- update_vttekmode();
- update_vtshow();
- update_tekshow();
- set_tekhide_sensitivity();
-
- Tpushback = Tpushb;
- Ttoggled = True;
- if (!setjmp(Tekend))
- Tekparse();
- if (!Ttoggled) {
- TCursorToggle(TOGGLE);
- Ttoggled = True;
- }
- screen->TekEmu = False;
-}
-
-#define DOTTED_LENGTH 2
-#define DOT_DASHED_LENGTH 4
-#define SHORT_DASHED_LENGTH 2
-#define LONG_DASHED_LENGTH 2
-
-static int dash_length[TEKNUMLINES] =
-{
- DOTTED_LENGTH,
- DOT_DASHED_LENGTH,
- SHORT_DASHED_LENGTH,
- LONG_DASHED_LENGTH,
-};
-
-static unsigned char dotted[DOTTED_LENGTH] =
-{3, 1};
-static unsigned char dot_dashed[DOT_DASHED_LENGTH] =
-{3, 4, 3, 1};
-static unsigned char short_dashed[SHORT_DASHED_LENGTH] =
-{4, 4};
-static unsigned char long_dashed[LONG_DASHED_LENGTH] =
-{4, 7};
-
-static unsigned char *dashes[TEKNUMLINES] =
-{
- dotted,
- dot_dashed,
- short_dashed,
- long_dashed,
-};
-
-/*
- * The following is called to create the tekWidget
- */
-
-static void
-TekInitialize(Widget request GCC_UNUSED,
- Widget wnew GCC_UNUSED,
- ArgList args GCC_UNUSED,
- Cardinal *num_args GCC_UNUSED)
-{
- Widget tekparent = SHELL_OF(wnew);
-
- TRACE(("TekInitialize\n"));
-
- /* look for focus related events on the shell, because we need
- * to care about the shell's border being part of our focus.
- */
- XtAddEventHandler(tekparent, EnterWindowMask, False,
- HandleEnterWindow, (Opaque) 0);
- XtAddEventHandler(tekparent, LeaveWindowMask, False,
- HandleLeaveWindow, (Opaque) 0);
- XtAddEventHandler(tekparent, FocusChangeMask, False,
- HandleFocusChange, (Opaque) 0);
- XtAddEventHandler((Widget) wnew, PropertyChangeMask, False,
- HandleBellPropertyChange, (Opaque) 0);
-}
-
-static void
-TekRealize(Widget gw GCC_UNUSED, /* same as tekWidget */
- XtValueMask * valuemaskp,
- XSetWindowAttributes * values)
-{
- TScreen *screen = &term->screen;
- int i;
- TekLink *tek;
- double d;
- int border = 2 * screen->border;
- int pr;
- XGCValues gcv;
- int winX, winY, width, height;
- XSizeHints sizehints;
- char Tdefault[32];
- unsigned TEKgcFontMask;
-
- TRACE(("TekRealize\n"));
-
-#ifndef NO_ACTIVE_ICON
- term->screen.whichTwin = &term->screen.fullTwin;
-#endif /* NO_ACTIVE_ICON */
-
- BorderPixel(tekWidget) = BorderPixel(term);
-
- for (i = 0; i < TEKNUMFONTS; i++) {
- if (!tekWidget->tek.Tfont[i]) {
- tekWidget->tek.Tfont[i] = XQueryFont(screen->display, DefaultGCID);
- }
- TRACE(("Tfont[%d] %dx%d\n",
- i,
- tekWidget->tek.Tfont[i]->ascent +
- tekWidget->tek.Tfont[i]->descent,
- tekWidget->tek.Tfont[i]->max_bounds.width));
- tekWidget->tek.tobaseline[i] = tekWidget->tek.Tfont[i]->ascent;
- }
-
- if (!TekPtyData())
- return;
-
- if (term->misc.T_geometry == NULL) {
- int defwidth, defheight;
-
- if (term->misc.tekSmall) {
- defwidth = TEKMINWIDTH;
- defheight = TEKMINHEIGHT;
- } else {
- defwidth = TEKDEFWIDTH;
- defheight = TEKDEFHEIGHT;
- }
- sprintf(Tdefault, "=%dx%d", defwidth + border, defheight + border);
- term->misc.T_geometry = Tdefault;
- }
-
- winX = 1;
- winY = 1;
- width = TEKDEFWIDTH + border;
- height = TEKDEFHEIGHT + border;
-
- TRACE(("parsing T_geometry %s\n", NonNull(term->misc.T_geometry)));
- pr = XParseGeometry(term->misc.T_geometry,
- &winX,
- &winY,
- (unsigned int *) &width,
- (unsigned int *) &height);
- TRACE(("... position %d,%d size %dx%d\n", winY, winX, height, width));
- if ((pr & XValue) && (pr & XNegative))
- winX += DisplayWidth(screen->display, DefaultScreen(screen->display))
- - width - (BorderWidth(SHELL_OF(term)) * 2);
- if ((pr & YValue) && (pr & YNegative))
- winY += DisplayHeight(screen->display, DefaultScreen(screen->display))
- - height - (BorderWidth(SHELL_OF(term)) * 2);
-
- /* set up size hints */
- sizehints.min_width = TEKMINWIDTH + border;
- sizehints.min_height = TEKMINHEIGHT + border;
- sizehints.width_inc = 1;
- sizehints.height_inc = 1;
- sizehints.flags = PMinSize | PResizeInc;
- sizehints.x = winX;
- sizehints.y = winY;
- if ((XValue & pr) || (YValue & pr)) {
- sizehints.flags |= USSize | USPosition;
- sizehints.flags |= PWinGravity;
- switch (pr & (XNegative | YNegative)) {
- case 0:
- sizehints.win_gravity = NorthWestGravity;
- break;
- case XNegative:
- sizehints.win_gravity = NorthEastGravity;
- break;
- case YNegative:
- sizehints.win_gravity = SouthWestGravity;
- break;
- default:
- sizehints.win_gravity = SouthEastGravity;
- break;
- }
- } else {
- /* set a default size, but do *not* set position */
- sizehints.flags |= PSize;
- }
- sizehints.width = width;
- sizehints.height = height;
- if ((WidthValue & pr) || (HeightValue & pr))
- sizehints.flags |= USSize;
- else
- sizehints.flags |= PSize;
-
- TRACE(("make resize request %dx%d\n", height, width));
- (void) XtMakeResizeRequest((Widget) tekWidget,
- width, height,
- &tekWidget->core.width, &tekWidget->core.height);
- TRACE(("...made resize request %dx%d\n", tekWidget->core.height, tekWidget->core.width));
-
- /* XXX This is bogus. We are parsing geometries too late. This
- * is information that the shell widget ought to have before we get
- * realized, so that it can do the right thing.
- */
- if (sizehints.flags & USPosition)
- XMoveWindow(XtDisplay(tekWidget), TShellWindow, sizehints.x, sizehints.y);
-
- XSetWMNormalHints(XtDisplay(tekWidget), TShellWindow, &sizehints);
- XFlush(XtDisplay(tekWidget)); /* get it out to window manager */
-
- values->win_gravity = NorthWestGravity;
- values->background_pixel = T_COLOR(screen, TEK_BG);
-
- XtWindow(tekWidget) = TWindow(screen) =
- XCreateWindow(screen->display,
- XtWindow(SHELL_OF(tekWidget)),
- tekWidget->core.x, tekWidget->core.y,
- tekWidget->core.width, tekWidget->core.height, BorderWidth(tekWidget),
- (int) tekWidget->core.depth,
- InputOutput, CopyFromParent,
- ((*valuemaskp) | CWBackPixel | CWWinGravity),
- values);
-
- TFullWidth(screen) = width;
- TFullHeight(screen) = height;
- TWidth(screen) = width - border;
- THeight(screen) = height - border;
- TekScale(screen) = (double) TWidth(screen) / TEKWIDTH;
- if ((d = (double) THeight(screen) / (TEKHEIGHT + TEKTOPPAD +
- TEKBOTTOMPAD)) < TekScale(screen))
- TekScale(screen) = d;
-
- screen->cur.fontsize = TEK_FONT_LARGE;
- if (tekWidget->tek.initial_font) {
- char *s = tekWidget->tek.initial_font;
-
- if (XmuCompareISOLatin1(s, "large") == 0)
- screen->cur.fontsize = TEK_FONT_LARGE;
- else if (XmuCompareISOLatin1(s, "2") == 0 ||
- XmuCompareISOLatin1(s, "two") == 0)
- screen->cur.fontsize = TEK_FONT_2;
- else if (XmuCompareISOLatin1(s, "3") == 0 ||
- XmuCompareISOLatin1(s, "three") == 0)
- screen->cur.fontsize = TEK_FONT_3;
- else if (XmuCompareISOLatin1(s, "small") == 0)
- screen->cur.fontsize = TEK_FONT_SMALL;
- }
-#define TestGIN(s) XmuCompareISOLatin1(tekWidget->tek.gin_terminator_str, s)
-
- if (TestGIN(GIN_TERM_NONE_STR) == 0)
- screen->gin_terminator = GIN_TERM_NONE;
- else if (TestGIN(GIN_TERM_CR_STR) == 0)
- screen->gin_terminator = GIN_TERM_CR;
- else if (TestGIN(GIN_TERM_EOT_STR) == 0)
- screen->gin_terminator = GIN_TERM_EOT;
- else
- fprintf(stderr, "%s: illegal GIN terminator setting \"%s\"\n",
- xterm_name, tekWidget->tek.gin_terminator_str);
-
- gcv.graphics_exposures = True; /* default */
- gcv.font = tekWidget->tek.Tfont[screen->cur.fontsize]->fid;
- gcv.foreground = T_COLOR(screen, TEK_FG);
- gcv.background = T_COLOR(screen, TEK_BG);
-
- /* if font wasn't successfully opened, then gcv.font will contain
- the Default GC's ID, meaning that we must use the server default font.
- */
- TEKgcFontMask = (gcv.font == DefaultGCID) ? 0 : GCFont;
- screen->TnormalGC = XCreateGC(screen->display, TWindow(screen),
- (TEKgcFontMask | GCGraphicsExposures |
- GCForeground | GCBackground),
- &gcv);
-
- gcv.function = GXinvert;
- gcv.plane_mask = (T_COLOR(screen, TEK_BG) ^
- T_COLOR(screen, TEK_CURSOR));
- gcv.join_style = JoinMiter; /* default */
- gcv.line_width = 1;
- screen->TcursorGC = XCreateGC(screen->display, TWindow(screen),
- (GCFunction | GCPlaneMask), &gcv);
-
- gcv.foreground = T_COLOR(screen, TEK_FG);
- gcv.line_style = LineOnOffDash;
- gcv.line_width = 0;
- for (i = 0; i < TEKNUMLINES; i++) {
- screen->linepat[i] = XCreateGC(screen->display, TWindow(screen),
- (GCForeground | GCLineStyle), &gcv);
- XSetDashes(screen->display, screen->linepat[i], 0,
- (char *) dashes[i], dash_length[i]);
- }
-
- TekBackground(screen);
-
- screen->margin = MARGIN1; /* Margin 1 */
- screen->TekGIN = False; /* GIN off */
-
- XDefineCursor(screen->display, TWindow(screen), screen->pointer_cursor);
-
- { /* there's gotta be a better way... */
- static Arg args[] =
- {
- {XtNtitle, (XtArgVal) NULL},
- {XtNiconName, (XtArgVal) NULL},
- };
- char *icon_name, *title, *tek_icon_name, *tek_title;
-
- args[0].value = (XtArgVal) & icon_name;
- args[1].value = (XtArgVal) & title;
- XtGetValues(SHELL_OF(tekWidget), args, 2);
- tek_icon_name = XtMalloc(strlen(icon_name) + 7);
- strcpy(tek_icon_name, icon_name);
- strcat(tek_icon_name, "(Tek)");
- tek_title = XtMalloc(strlen(title) + 7);
- strcpy(tek_title, title);
- strcat(tek_title, "(Tek)");
- args[0].value = (XtArgVal) tek_icon_name;
- args[1].value = (XtArgVal) tek_title;
- XtSetValues(SHELL_OF(tekWidget), args, 2);
- XtFree(tek_icon_name);
- XtFree(tek_title);
- }
-
- tek = TekRecord = &Tek0;
- tek->next = (TekLink *) 0;
- tek->fontsize = screen->cur.fontsize;
- tek->count = 0;
- tek->ptr = tek->data;
- Tpushback = Tpushb;
- screen->cur_X = 0;
- screen->cur_Y = TEKHOME;
- line_pt = Tline;
- Ttoggled = True;
- screen->page = screen->cur;
- return;
-}
-
-void
-TekSetFontSize(int newitem)
-{
- TScreen *screen = &term->screen;
- int oldsize = screen->cur.fontsize;
- int newsize = MI2FS(newitem);
- Font fid;
-
- TRACE(("TekSetFontSize(%d)\n", newitem));
-
- if (!tekWidget || oldsize == newsize)
- return;
- if (!Ttoggled)
- TCursorToggle(TOGGLE);
- set_tekfont_menu_item(oldsize, False);
-
- fid = tekWidget->tek.Tfont[newsize]->fid;
- if (fid == DefaultGCID)
- /* we didn't succeed in opening a real font
- for this size. Instead, use server default. */
- XCopyGC(screen->display,
- DefaultGC(screen->display, DefaultScreen(screen->display)),
- GCFont, screen->TnormalGC);
- else
- XSetFont(screen->display, screen->TnormalGC, fid);
-
- screen->cur.fontsize = newsize;
- set_tekfont_menu_item(newsize, True);
- if (!Ttoggled)
- TCursorToggle(TOGGLE);
-}
-
-void
-ChangeTekColors(TScreen * screen, ScrnColors * pNew)
-{
- int i;
- XGCValues gcv;
-
- if (COLOR_DEFINED(pNew, TEK_FG)) {
- T_COLOR(screen, TEK_FG) = COLOR_VALUE(pNew, TEK_FG);
- TRACE(("... TEK_FG: %#lx\n", T_COLOR(screen, TEK_FG)));
- }
- if (COLOR_DEFINED(pNew, TEK_BG)) {
- T_COLOR(screen, TEK_BG) = COLOR_VALUE(pNew, TEK_BG);
- TRACE(("... TEK_BG: %#lx\n", T_COLOR(screen, TEK_BG)));
- }
- if (COLOR_DEFINED(pNew, TEK_CURSOR)) {
- T_COLOR(screen, TEK_CURSOR) = COLOR_VALUE(pNew, TEK_CURSOR);
- TRACE(("... TEK_CURSOR: %#lx\n", T_COLOR(screen, TEK_CURSOR)));
- } else {
- T_COLOR(screen, TEK_CURSOR) = T_COLOR(screen, TEK_FG);
- TRACE(("... TEK_CURSOR: %#lx\n", T_COLOR(screen, TEK_CURSOR)));
- }
-
- if (tekWidget) {
- XSetForeground(screen->display, screen->TnormalGC,
- T_COLOR(screen, TEK_FG));
- XSetBackground(screen->display, screen->TnormalGC,
- T_COLOR(screen, TEK_BG));
- if (BorderPixel(tekWidget) == T_COLOR(screen, TEK_BG)) {
- BorderPixel(tekWidget) = T_COLOR(screen, TEK_FG);
- BorderPixel(XtParent(tekWidget)) = T_COLOR(screen, TEK_FG);
- if (XtWindow(XtParent(tekWidget)))
- XSetWindowBorder(screen->display,
- XtWindow(XtParent(tekWidget)),
- BorderPixel(tekWidget));
- }
-
- for (i = 0; i < TEKNUMLINES; i++) {
- XSetForeground(screen->display, screen->linepat[i],
- T_COLOR(screen, TEK_FG));
- }
-
- gcv.plane_mask = (T_COLOR(screen, TEK_BG) ^
- T_COLOR(screen, TEK_CURSOR));
- XChangeGC(screen->display, screen->TcursorGC, GCPlaneMask, &gcv);
- TekBackground(screen);
- }
- return;
-}
-
-void
-TekReverseVideo(TScreen * screen)
-{
- int i;
- XGCValues gcv;
-
- EXCHANGE(T_COLOR(screen, TEK_FG), T_COLOR(screen, TEK_BG), i);
-
- T_COLOR(screen, TEK_CURSOR) = T_COLOR(screen, TEK_FG);
-
- if (tekWidget) {
- XSetForeground(screen->display, screen->TnormalGC, T_COLOR(screen, TEK_FG));
- XSetBackground(screen->display, screen->TnormalGC, T_COLOR(screen, TEK_BG));
-
- if (BorderPixel(tekWidget) == T_COLOR(screen, TEK_BG)) {
- BorderPixel(tekWidget) = T_COLOR(screen, TEK_FG);
- BorderPixel(XtParent(tekWidget)) = T_COLOR(screen, TEK_FG);
- if (XtWindow(XtParent(tekWidget)))
- XSetWindowBorder(screen->display,
- XtWindow(XtParent(tekWidget)),
- BorderPixel(tekWidget));
- }
-
- for (i = 0; i < TEKNUMLINES; i++) {
- XSetForeground(screen->display, screen->linepat[i],
- T_COLOR(screen, TEK_FG));
- }
-
- gcv.plane_mask = (T_COLOR(screen, TEK_BG) ^
- T_COLOR(screen, TEK_CURSOR));
- XChangeGC(screen->display, screen->TcursorGC, GCPlaneMask, &gcv);
- TekBackground(screen);
- }
-}
-
-static void
-TekBackground(TScreen * screen)
-{
- if (TWindow(screen))
- XSetWindowBackground(screen->display, TWindow(screen),
- T_COLOR(screen, TEK_BG));
-}
-
-/*
- * Toggles cursor on or off at cursor position in screen.
- */
-void
-TCursorToggle(int toggle) /* TOGGLE or CLEAR */
-{
- TScreen *screen = &term->screen;
- int c, x, y;
- unsigned int cellwidth, cellheight;
-
- if (!screen->Tshow)
- return;
-
- c = screen->cur.fontsize;
- cellwidth = (unsigned) tekWidget->tek.Tfont[c]->max_bounds.width;
- cellheight = (unsigned) (tekWidget->tek.Tfont[c]->ascent +
- tekWidget->tek.Tfont[c]->descent);
-
- x = (int) ((screen->cur_X * TekScale(screen)) + screen->border);
- y = (int) (((TEKHEIGHT + TEKTOPPAD - screen->cur_Y) * TekScale(screen))
- + screen->border - tekWidget->tek.tobaseline[c]);
-
- if (toggle == TOGGLE) {
- if (screen->select || screen->always_highlight)
- XFillRectangle(screen->display, TWindow(screen),
- screen->TcursorGC, x, y,
- cellwidth, cellheight);
- else { /* fix to use different GC! */
- XDrawRectangle(screen->display, TWindow(screen),
- screen->TcursorGC, x, y,
- cellwidth - 1, cellheight - 1);
- }
- } else {
- /* Clear the entire rectangle, even though we may only
- * have drawn an outline. This fits with our refresh
- * scheme of redrawing the entire window on any expose
- * event and is easier than trying to figure out exactly
- * which part of the cursor needs to be erased.
- */
- XClearArea(screen->display, TWindow(screen), x, y,
- cellwidth, cellheight, False);
- }
-}
-
-void
-TekSimulatePageButton(Bool reset)
-{
- TScreen *screen = &term->screen;
-
- if (!tekWidget)
- return;
- if (reset) {
- bzero((char *) &screen->cur, sizeof screen->cur);
- }
- TekRefresh = (TekLink *) 0;
- TekPage();
- screen->cur_X = 0;
- screen->cur_Y = TEKHOME;
-}
-
-/* write copy of screen to a file */
-
-void
-TekCopy(void)
-{
- TScreen *screen = &term->screen;
-
- TekLink *Tp;
- char buf[32];
- char initbuf[5];
- int tekcopyfd;
-
- timestamp_filename(buf, "COPY");
- if (access(buf, F_OK) >= 0
- && access(buf, W_OK) < 0) {
- Bell(XkbBI_MinorError, 0);
- return;
- }
-#ifndef VMS
- if (access(".", W_OK) < 0) { /* can't write in directory */
- Bell(XkbBI_MinorError, 0);
- return;
- }
-#endif
-
- if ((tekcopyfd = open_userfile(screen->uid, screen->gid, buf, False)) >= 0) {
- sprintf(initbuf, "%c%c%c%c",
- ESC, (char) (screen->page.fontsize + '8'),
- ESC, (char) (screen->page.linetype + '`'));
- write(tekcopyfd, initbuf, 4);
- Tp = &Tek0;
- do {
- write(tekcopyfd, Tp->data, Tp->count);
- Tp = Tp->next;
- } while (Tp);
- close(tekcopyfd);
- }
-}
diff --git a/nx-X11/programs/xterm/Tests b/nx-X11/programs/xterm/Tests
deleted file mode 100644
index 0c6c88925..000000000
--- a/nx-X11/programs/xterm/Tests
+++ /dev/null
@@ -1,42 +0,0 @@
-Tests for xterm:
-
-If system supports window size (i.e., some combination of SIGWINCH,
-TIOCSSIZE, TIOCSWINSZ), start a full-screen program (e.g., Emacs,
-Jove, vi) and resize the xterm window. The program must immediately
-update its screen image for the new size.
-
-If compiled with -DUTMP, starting a new xterm should create a new utmp
-entry. ("who" will show this info.) Exiting xterm should remove the
-entry. Killing the xterm window (or other unnatural exit) should also
-remove the entry. When should entries be made in the wtmp file?
-
-Process group stuff should be correct.
-
-Should work without access to /dev/tty, say started from an xdm
-started from a boot-time script.
-
-If "xterm -help" offers the -C option, it should work.
-
-echo "test" > /dev/tty
-
-vi with lines that wrap.
-
-Exec'ing things other than shells.
-
-Another thing that has caused problems in the past is process groups,
-especially w.r.t. signal propagation to the child.
-
-Popup menu signals: running only a shell, click on "Send INT Signal."
-Do you get a new prompt from the shell? (Same as typing ^C at it.)
-
-Should scroll *fast* with jumpScroll enabled.
-
-While a mouse button is down tracing out a selection, output to the
-screen should be suspended.
-
-Selections more than one screen long.
-
-start xterm running only Tek widget: "xterm -t"
-
-
-Please add to this list if you find xterm failing in some way.
diff --git a/nx-X11/programs/xterm/UXTerm.ad b/nx-X11/programs/xterm/UXTerm.ad
deleted file mode 100644
index b2180bfc5..000000000
--- a/nx-X11/programs/xterm/UXTerm.ad
+++ /dev/null
@@ -1,38 +0,0 @@
-! $XFree86: xc/programs/xterm/UXTerm.ad,v 1.4 2005/11/03 13:17:27 dickey Exp $
-
-! Use
-! xterm -class UXTerm
-! to set resources for UTF-8 mode with corresponding fonts.
-! See the uxterm script for an example.
-
-#include "XTerm-color"
-
-*fontMenu.Label: Unicode Fonts
-*VT100.utf8: 1
-
-! This includes "XTerm-color" which includes "XTerm", which defines fonts.
-! Why set them here?
-!
-! Here is a simple description. A technically precise one would be very long.
-! When xterm starts up, it uses the
-!
-! *VT100.font
-!
-! resource, and if it is told to switch to wide-character (UTF-8) mode, it
-! checks if the given font is "wide", and if not looks for the
-!
-! *VT100.utf8Fonts.font
-!
-! to obtain a wide font. A "wide" font has more than 256 glyphs. Typical
-! wide fonts have 10,000 glyphs. If the original "*VT100.font" is not wide,
-! and xterm can load the *VT100.utf8Fonts.font, it will use that.
-!
-! Making the wide fonts associated with *VT100.font in this file allows uxterm
-! to skip that step. It will use the fonts that the XTerm file gives for the
-! *VT100.uft8Fonts.font pattern.
-*VT100.font2: -misc-fixed-medium-r-normal--8-80-75-75-c-50-iso10646-1
-*VT100.font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
-*VT100.font3: -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1
-*VT100.font4: -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso10646-1
-*VT100.font5: -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
-*VT100.font6: -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1
diff --git a/nx-X11/programs/xterm/VTPrsTbl.c b/nx-X11/programs/xterm/VTPrsTbl.c
deleted file mode 100644
index 043190e95..000000000
--- a/nx-X11/programs/xterm/VTPrsTbl.c
+++ /dev/null
@@ -1,7216 +0,0 @@
-/* $XTermId: VTPrsTbl.c,v 1.44 2005/11/13 23:10:35 tom Exp $ */
-
-/*
- * $Xorg: VTPrsTbl.c,v 1.3 2000/08/17 19:55:07 cpqbld Exp $
- */
-
-/* $XFree86: xc/programs/xterm/VTPrsTbl.c,v 3.29 2005/11/13 23:10:35 dickey Exp $ */
-/*
- *
- * Copyright 1999-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#include <VTparse.h>
-
-#if !OPT_DEC_LOCATOR
-#undef CASE_CSI_TICK_STATE
-#define CASE_CSI_TICK_STATE CASE_CSI_IGNORE
-#endif
-
-#if !OPT_WIDE_CHARS
-#undef CASE_ESC_PERCENT
-#define CASE_ESC_PERCENT CASE_ESC_IGNORE
-#endif
-
-/*
- * Stupid Apollo C preprocessor can't handle long lines. So... To keep
- * it happy, we put each onto a separate line.... Sigh...
- */
-
-Const PARSE_T ansi_table[] =
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* $ % & ' */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* ( ) * + */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* , - . / */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* 0 1 2 3 */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* 4 5 6 7 */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* 8 9 : ; */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* < = > ? */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* @ A B C */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* D E F G */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* H I J K */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* L M N O */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* P Q R S */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* T U V W */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* X Y Z [ */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* \ ] ^ _ */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* ` a b c */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* d e f g */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* h i j k */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* l m n o */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* p q r s */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* t u v w */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* x y z { */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* | } ~ DEL */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* currency yen brokenbar section */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* notsign hyphen registered macron */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* degree plusminus twosuperior threesuperior */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* acute mu paragraph periodcentered */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* cedilla onesuperior masculine guillemotright */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* onequarter onehalf threequarters questiondown */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Eth Ntilde Ograve Oacute */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* agrave aacute acircumflex atilde */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* adiaeresis aring ae ccedilla */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* igrave iacute icircumflex idiaeresis */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* eth ntilde ograve oacute */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* ocircumflex otilde odiaeresis division */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* oslash ugrave uacute ucircumflex */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-};
-
-Const PARSE_T csi_table[] = /* CSI */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_CSI_IGNORE,
-CASE_CSI_EX_STATE,
-CASE_CSI_QUOTE_STATE,
-CASE_CSI_IGNORE,
-/* $ % & ' */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_TICK_STATE,
-/* ( ) * + */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* , - . / */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 0 1 2 3 */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* 4 5 6 7 */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* 8 9 : ; */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_CSI_IGNORE,
-CASE_ESC_SEMI,
-/* < = > ? */
-CASE_CSI_IGNORE,
-CASE_DEC3_STATE,
-CASE_DEC2_STATE,
-CASE_DEC_STATE,
-/* @ A B C */
-CASE_ICH,
-CASE_CUU,
-CASE_CUD,
-CASE_CUF,
-/* D E F G */
-CASE_CUB,
-CASE_CNL,
-CASE_CPL,
-CASE_HPA,
-/* H I J K */
-CASE_CUP,
-CASE_CHT,
-CASE_ED,
-CASE_EL,
-/* L M N O */
-CASE_IL,
-CASE_DL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_DCH,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SU,
-/* T U V W */
-CASE_TRACK_MOUSE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_ECH,
-CASE_GROUND_STATE,
-CASE_CBT,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_HPA,
-CASE_GROUND_STATE,
-CASE_REP,
-CASE_DA1,
-/* d e f g */
-CASE_VPA,
-CASE_GROUND_STATE,
-CASE_CUP,
-CASE_TBC,
-/* h i j k */
-CASE_SET,
-CASE_MC,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_RST,
-CASE_SGR,
-CASE_CPR,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECSTBM,
-CASE_DECSC,
-/* t u v w */
-CASE_XTERM_WINOPS,
-CASE_DECRC,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_DECREQTPARM,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_CSI_IGNORE,
-CASE_CSI_EX_STATE,
-CASE_CSI_QUOTE_STATE,
-CASE_CSI_IGNORE,
-/* currency yen brokenbar section */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_TICK_STATE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* notsign hyphen registered macron */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* acute mu paragraph periodcentered */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* cedilla onesuperior masculine guillemotright */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_CSI_IGNORE,
-CASE_ESC_SEMI,
-/* onequarter onehalf threequarters questiondown */
-CASE_CSI_IGNORE,
-CASE_DEC3_STATE,
-CASE_DEC2_STATE,
-CASE_DEC_STATE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_ICH,
-CASE_CUU,
-CASE_CUD,
-CASE_CUF,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_CUB,
-CASE_CNL,
-CASE_CPL,
-CASE_HPA,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_CUP,
-CASE_CHT,
-CASE_ED,
-CASE_EL,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_IL,
-CASE_DL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_DCH,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SU,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_TRACK_MOUSE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_ECH,
-CASE_GROUND_STATE,
-CASE_CBT,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_HPA,
-CASE_GROUND_STATE,
-CASE_REP,
-CASE_DA1,
-/* adiaeresis aring ae ccedilla */
-CASE_VPA,
-CASE_GROUND_STATE,
-CASE_CUP,
-CASE_TBC,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_SET,
-CASE_MC,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_RST,
-CASE_SGR,
-CASE_CPR,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECSTBM,
-CASE_DECSC,
-/* ocircumflex otilde odiaeresis division */
-CASE_XTERM_WINOPS,
-CASE_DECRC,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_DECREQTPARM,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-
-Const PARSE_T csi2_table[] = /* CSI */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_CSI_IGNORE,
-CASE_CSI_EX_STATE,
-CASE_CSI_QUOTE_STATE,
-CASE_CSI_IGNORE,
-/* $ % & ' */
-CASE_CSI_DOLLAR_STATE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_TICK_STATE,
-/* ( ) * + */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_STAR_STATE,
-CASE_CSI_IGNORE,
-/* , - . / */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 0 1 2 3 */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* 4 5 6 7 */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* 8 9 : ; */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_CSI_IGNORE,
-CASE_ESC_SEMI,
-/* < = > ? */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* @ A B C */
-CASE_ICH,
-CASE_CUU,
-CASE_CUD,
-CASE_CUF,
-/* D E F G */
-CASE_CUB,
-CASE_CNL,
-CASE_CPL,
-CASE_HPA,
-/* H I J K */
-CASE_CUP,
-CASE_CHT,
-CASE_ED,
-CASE_EL,
-/* L M N O */
-CASE_IL,
-CASE_DL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_DCH,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SU,
-/* T U V W */
-CASE_TRACK_MOUSE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_ECH,
-CASE_GROUND_STATE,
-CASE_CBT,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_HPA,
-CASE_GROUND_STATE,
-CASE_REP,
-CASE_DA1,
-/* d e f g */
-CASE_VPA,
-CASE_GROUND_STATE,
-CASE_CUP,
-CASE_TBC,
-/* h i j k */
-CASE_SET,
-CASE_MC,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_RST,
-CASE_SGR,
-CASE_CPR,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECSTBM,
-CASE_DECSC,
-/* t u v w */
-CASE_XTERM_WINOPS,
-CASE_DECRC,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_DECREQTPARM,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_CSI_IGNORE,
-CASE_CSI_EX_STATE,
-CASE_CSI_QUOTE_STATE,
-CASE_CSI_IGNORE,
-/* currency yen brokenbar section */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_TICK_STATE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* notsign hyphen registered macron */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* acute mu paragraph periodcentered */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* cedilla onesuperior masculine guillemotright */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_CSI_IGNORE,
-CASE_ESC_SEMI,
-/* onequarter onehalf threequarters questiondown */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_ICH,
-CASE_CUU,
-CASE_CUD,
-CASE_CUF,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_CUB,
-CASE_CNL,
-CASE_CPL,
-CASE_HPA,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_CUP,
-CASE_CHT,
-CASE_ED,
-CASE_EL,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_IL,
-CASE_DL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_DCH,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SU,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_TRACK_MOUSE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_ECH,
-CASE_GROUND_STATE,
-CASE_CBT,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_HPA,
-CASE_GROUND_STATE,
-CASE_REP,
-CASE_DA1,
-/* adiaeresis aring ae ccedilla */
-CASE_VPA,
-CASE_GROUND_STATE,
-CASE_CUP,
-CASE_TBC,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_SET,
-CASE_MC,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_RST,
-CASE_SGR,
-CASE_CPR,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECSTBM,
-CASE_DECSC,
-/* ocircumflex otilde odiaeresis division */
-CASE_XTERM_WINOPS,
-CASE_DECRC,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_DECREQTPARM,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-
-Const PARSE_T csi_ex_table[] = /* CSI ! */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* $ % & ' */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* ( ) * + */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* , - . / */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 0 1 2 3 */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 4 5 6 7 */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 8 9 : ; */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* < = > ? */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_DECSTR,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* currency yen brokenbar section */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* notsign hyphen registered macron */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_DECSTR,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-
-Const PARSE_T csi_quo_table[] = /* CSI ... " */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* $ % & ' */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* ( ) * + */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* , - . / */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 0 1 2 3 */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 4 5 6 7 */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 8 9 : ; */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* < = > ? */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_DECSCL,
-CASE_DECSCA,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* currency yen brokenbar section */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* notsign hyphen registered macron */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_DECSCL,
-CASE_DECSCA,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-
-#if OPT_DEC_LOCATOR
-Const PARSE_T csi_tick_table[] = /* CSI ... ' */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* $ % & ' */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* ( ) * + */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* , - . / */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 0 1 2 3 */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 4 5 6 7 */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 8 9 : ; */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* < = > ? */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECEFR,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECELR,
-CASE_DECSLE,
-/* | } ~ DEL */
-CASE_DECRQLP,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* currency yen brokenbar section */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* notsign hyphen registered macron */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECEFR,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECELR,
-CASE_DECSLE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_DECRQLP,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-#endif /* OPT_DEC_LOCATOR */
-
-#if OPT_DEC_RECTOPS
-Const PARSE_T csi_dollar_table[] = /* CSI ... $ */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* $ % & ' */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* ( ) * + */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* , - . / */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 0 1 2 3 */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 4 5 6 7 */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 8 9 : ; */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* < = > ? */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECCARA,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_DECRARA,
-CASE_GROUND_STATE,
-CASE_DECCRA,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_DECFRA,
-CASE_GROUND_STATE,
-CASE_DECERA,
-CASE_DECSERA,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* currency yen brokenbar section */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* notsign hyphen registered macron */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECCARA,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_DECRARA,
-CASE_GROUND_STATE,
-CASE_DECCRA,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_DECFRA,
-CASE_GROUND_STATE,
-CASE_DECERA,
-CASE_DECSERA,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-};
-
-Const PARSE_T csi_star_table[] = /* CSI ... * */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* $ % & ' */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* ( ) * + */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* , - . / */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 0 1 2 3 */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 4 5 6 7 */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 8 9 : ; */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* < = > ? */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_DECSACE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* currency yen brokenbar section */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* notsign hyphen registered macron */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_DECSACE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-};
-#endif /* OPT_DEC_RECTOPS */
-
-Const PARSE_T dec_table[] = /* CSI ? */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* $ % & ' */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* ( ) * + */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* , - . / */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 0 1 2 3 */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* 4 5 6 7 */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* 8 9 : ; */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_CSI_IGNORE,
-CASE_ESC_SEMI,
-/* < = > ? */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECSED,
-CASE_DECSEL,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_DECSET,
-CASE_DEC_MC,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_DECRST,
-CASE_GROUND_STATE,
-CASE_DSR,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_XTERM_RESTORE,
-CASE_XTERM_SAVE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* currency yen brokenbar section */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* notsign hyphen registered macron */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* acute mu paragraph periodcentered */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* cedilla onesuperior masculine guillemotright */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_CSI_IGNORE,
-CASE_ESC_SEMI,
-/* onequarter onehalf threequarters questiondown */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECSED,
-CASE_DECSEL,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_DECSET,
-CASE_DEC_MC,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_DECRST,
-CASE_GROUND_STATE,
-CASE_DSR,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_XTERM_RESTORE,
-CASE_XTERM_SAVE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-
-Const PARSE_T dec2_table[] = /* CSI > */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* $ % & ' */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* ( ) * + */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* , - . / */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 0 1 2 3 */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* 4 5 6 7 */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* 8 9 : ; */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_CSI_IGNORE,
-CASE_ESC_SEMI,
-/* < = > ? */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DA2,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* currency yen brokenbar section */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* notsign hyphen registered macron */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* acute mu paragraph periodcentered */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* cedilla onesuperior masculine guillemotright */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_CSI_IGNORE,
-CASE_ESC_SEMI,
-/* onequarter onehalf threequarters questiondown */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DA2,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-
-Const PARSE_T dec3_table[] = /* CSI = */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* $ % & ' */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* ( ) * + */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* , - . / */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* 0 1 2 3 */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* 4 5 6 7 */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* 8 9 : ; */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_CSI_IGNORE,
-CASE_ESC_SEMI,
-/* < = > ? */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECRPTUI,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* currency yen brokenbar section */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* notsign hyphen registered macron */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* acute mu paragraph periodcentered */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-/* cedilla onesuperior masculine guillemotright */
-CASE_ESC_DIGIT,
-CASE_ESC_DIGIT,
-CASE_CSI_IGNORE,
-CASE_ESC_SEMI,
-/* onequarter onehalf threequarters questiondown */
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-CASE_CSI_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECRPTUI,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-
-Const PARSE_T cigtable[] = /* CASE_CSI_IGNORE */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* $ % & ' */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ( ) * + */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* , - . / */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0 1 2 3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 4 5 6 7 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 8 9 : ; */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* < = > ? */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* currency yen brokenbar section */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* notsign hyphen registered macron */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-
-Const PARSE_T eigtable[] = /* CASE_ESC_IGNORE */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* $ % & ' */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ( ) * + */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* , - . / */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0 1 2 3 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 4 5 6 7 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 8 9 : ; */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* < = > ? */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* currency yen brokenbar section */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* notsign hyphen registered macron */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* acute mu paragraph periodcentered */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* onequarter onehalf threequarters questiondown */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-
-Const PARSE_T esc_table[] = /* ESC */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_ESC_SP_STATE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_SCR_STATE,
-/* $ % & ' */
-CASE_ESC_IGNORE,
-CASE_ESC_PERCENT,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* ( ) * + */
-CASE_SCS0_STATE,
-CASE_SCS1_STATE,
-CASE_SCS2_STATE,
-CASE_SCS3_STATE,
-/* , - . / */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* 0 1 2 3 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 4 5 6 7 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECSC,
-/* 8 9 : ; */
-CASE_DECRC,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* < = > ? */
-CASE_GROUND_STATE,
-CASE_DECKPAM,
-CASE_DECKPNM,
-CASE_GROUND_STATE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_IND,
-CASE_NEL,
-CASE_HP_BUGGY_LL,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* P Q R S */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_XTERM_TITLE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* X Y Z [ */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* \ ] ^ _ */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_RIS,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_HP_MEM_LOCK,
-CASE_HP_MEM_UNLOCK,
-CASE_LS2,
-CASE_LS3,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_LS3R,
-CASE_LS2R,
-CASE_LS1R,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_ESC_SP_STATE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_SCR_STATE,
-/* currency yen brokenbar section */
-CASE_ESC_IGNORE,
-CASE_ESC_PERCENT,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_SCS0_STATE,
-CASE_SCS1_STATE,
-CASE_SCS2_STATE,
-CASE_SCS3_STATE,
-/* notsign hyphen registered macron */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* acute mu paragraph periodcentered */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECSC,
-/* cedilla onesuperior masculine guillemotright */
-CASE_DECRC,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* onequarter onehalf threequarters questiondown */
-CASE_GROUND_STATE,
-CASE_DECKPAM,
-CASE_DECKPNM,
-CASE_GROUND_STATE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_IND,
-CASE_NEL,
-CASE_HP_BUGGY_LL,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* Eth Ntilde Ograve Oacute */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_XTERM_TITLE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_RIS,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_HP_MEM_LOCK,
-CASE_HP_MEM_UNLOCK,
-CASE_LS2,
-CASE_LS3,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_LS3R,
-CASE_LS2R,
-CASE_LS1R,
-CASE_IGNORE,
-};
-
-Const PARSE_T esc_sp_table[] = /* ESC SP */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* $ % & ' */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* ( ) * + */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* , - . / */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* 0 1 2 3 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 4 5 6 7 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 8 9 : ; */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* < = > ? */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_S7C1T,
-CASE_S8C1T,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_ANSI_LEVEL_1,
-CASE_ANSI_LEVEL_2,
-CASE_ANSI_LEVEL_3,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* currency yen brokenbar section */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* notsign hyphen registered macron */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* acute mu paragraph periodcentered */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* onequarter onehalf threequarters questiondown */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_S7C1T,
-CASE_S8C1T,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_ANSI_LEVEL_1,
-CASE_ANSI_LEVEL_2,
-CASE_ANSI_LEVEL_3,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-
-Const PARSE_T scrtable[] = /* ESC # */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* $ % & ' */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* ( ) * + */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* , - . / */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* 0 1 2 3 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECDHL,
-/* 4 5 6 7 */
-CASE_DECDHL,
-CASE_DECSWL,
-CASE_DECDWL,
-CASE_GROUND_STATE,
-/* 8 9 : ; */
-CASE_DECALN,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* < = > ? */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* currency yen brokenbar section */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* notsign hyphen registered macron */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_DECDHL,
-/* acute mu paragraph periodcentered */
-CASE_DECDHL,
-CASE_DECSWL,
-CASE_DECDWL,
-CASE_GROUND_STATE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_DECALN,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* onequarter onehalf threequarters questiondown */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-
-Const PARSE_T scstable[] = /* ESC ( etc. */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* $ % & ' */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* ( ) * + */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* , - . / */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* 0 1 2 3 */
-CASE_GSETS,
-CASE_GSETS,
-CASE_GSETS,
-CASE_GROUND_STATE,
-/* 4 5 6 7 */
-CASE_GSETS,
-CASE_GSETS,
-CASE_GSETS,
-CASE_GSETS,
-/* 8 9 : ; */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* < = > ? */
-CASE_GROUND_STATE,
-CASE_GSETS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GSETS,
-CASE_GSETS,
-CASE_GSETS,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GSETS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GSETS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GSETS,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GSETS,
-CASE_GSETS,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GSETS,
-CASE_GSETS,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* currency yen brokenbar section */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* notsign hyphen registered macron */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_GSETS,
-CASE_GSETS,
-CASE_GSETS,
-CASE_GROUND_STATE,
-/* acute mu paragraph periodcentered */
-CASE_GSETS,
-CASE_GSETS,
-CASE_GSETS,
-CASE_GSETS,
-/* cedilla onesuperior masculine guillemotright */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* onequarter onehalf threequarters questiondown */
-CASE_GROUND_STATE,
-CASE_GSETS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_GROUND_STATE,
-CASE_GSETS,
-CASE_GSETS,
-CASE_GSETS,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GSETS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GSETS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GSETS,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GSETS,
-CASE_GSETS,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GSETS,
-CASE_GSETS,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-
-/*
- * This table is treated specially. The CASE_IGNORE entries correspond to the
- * characters that can be accumulated for the string function (e.g., OSC).
- */
-Const PARSE_T sos_table[] = /* OSC, DCS, etc. */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* NP CR SO SI */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* $ % & ' */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ( ) * + */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* , - . / */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0 1 2 3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 4 5 6 7 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 8 9 : ; */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* < = > ? */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* @ A B C */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* D E F G */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* H I J K */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* L M N O */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* P Q R S */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* T U V W */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* X Y Z [ */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* \ ] ^ _ */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ` a b c */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* d e f g */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* h i j k */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* l m n o */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* p q r s */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* t u v w */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* x y z { */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* | } ~ DEL */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* currency yen brokenbar section */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* notsign hyphen registered macron */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Eth Ntilde Ograve Oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* agrave aacute acircumflex atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* adiaeresis aring ae ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* eth ntilde ograve oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ocircumflex otilde odiaeresis division */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* oslash ugrave uacute ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-};
-
-#if OPT_WIDE_CHARS
-Const PARSE_T esc_pct_table[] = /* ESC % */
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_SO,
-CASE_SI,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* $ % & ' */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* ( ) * + */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* , - . / */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* 0 1 2 3 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 4 5 6 7 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 8 9 : ; */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* < = > ? */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* @ A B C */
-CASE_UTF8,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_UTF8,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IND,
-CASE_NEL,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_HTS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_GROUND_STATE,
-CASE_RI,
-CASE_SS2,
-CASE_SS3,
-/* 0x90 0x91 0x92 0x93 */
-CASE_DCS,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_SPA,
-CASE_EPA,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_SOS,
-CASE_GROUND_STATE,
-CASE_DECID,
-CASE_CSI_STATE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_ST,
-CASE_OSC,
-CASE_PM,
-CASE_APC,
-/* nobreakspace exclamdown cent sterling */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* currency yen brokenbar section */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* notsign hyphen registered macron */
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* acute mu paragraph periodcentered */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* onequarter onehalf threequarters questiondown */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_UTF8,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_UTF8,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Eth Ntilde Ograve Oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* agrave aacute acircumflex atilde */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* adiaeresis aring ae ccedilla */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* eth ntilde ograve oacute */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ocircumflex otilde odiaeresis division */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* oslash ugrave uacute ucircumflex */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-};
-#endif /* OPT_WIDE_CHARS */
-
-#if OPT_VT52_MODE
-Const PARSE_T vt52_table[] =
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* $ % & ' */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* ( ) * + */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* , - . / */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* 0 1 2 3 */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* 4 5 6 7 */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* 8 9 : ; */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* < = > ? */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* @ A B C */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* D E F G */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* H I J K */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* L M N O */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* P Q R S */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* T U V W */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* X Y Z [ */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* \ ] ^ _ */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* ` a b c */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* d e f g */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* h i j k */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* l m n o */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* p q r s */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* t u v w */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* x y z { */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-/* | } ~ DEL */
-CASE_PRINT,
-CASE_PRINT,
-CASE_PRINT,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x90 0x91 0x92 0x93 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* nobreakspace exclamdown cent sterling */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* currency yen brokenbar section */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* notsign hyphen registered macron */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Eth Ntilde Ograve Oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* agrave aacute acircumflex atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* adiaeresis aring ae ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* eth ntilde ograve oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ocircumflex otilde odiaeresis division */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* oslash ugrave uacute ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-};
-
-Const PARSE_T vt52_esc_table[] =
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_VT52_IGNORE,
-CASE_VT52_IGNORE,
-CASE_VT52_IGNORE,
-CASE_VT52_IGNORE,
-/* $ % & ' */
-CASE_VT52_IGNORE,
-CASE_VT52_IGNORE,
-CASE_VT52_IGNORE,
-CASE_VT52_IGNORE,
-/* ( ) * + */
-CASE_VT52_IGNORE,
-CASE_VT52_IGNORE,
-CASE_VT52_IGNORE,
-CASE_VT52_IGNORE,
-/* , - . / */
-CASE_VT52_IGNORE,
-CASE_VT52_IGNORE,
-CASE_VT52_IGNORE,
-CASE_VT52_IGNORE,
-/* 0 1 2 3 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 4 5 6 7 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 8 9 : ; */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* < = > ? */
-CASE_VT52_FINISH,
-CASE_DECKPAM,
-CASE_DECKPNM,
-CASE_GROUND_STATE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_CUU,
-CASE_CUD,
-CASE_CUF,
-/* D E F G */
-CASE_CUB,
-CASE_GROUND_STATE,
-CASE_SO,
-CASE_SI,
-/* H I J K */
-CASE_CUP,
-CASE_RI,
-CASE_ED,
-CASE_EL,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_VT52_CUP,
-CASE_DECID,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x90 0x91 0x92 0x93 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* nobreakspace exclamdown cent sterling */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* currency yen brokenbar section */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* notsign hyphen registered macron */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Eth Ntilde Ograve Oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* agrave aacute acircumflex atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* adiaeresis aring ae ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* eth ntilde ograve oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ocircumflex otilde odiaeresis division */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* oslash ugrave uacute ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-};
-
-Const PARSE_T vt52_ignore_table[] =
-{
-/* NUL SOH STX ETX */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* EOT ENQ ACK BEL */
-CASE_IGNORE,
-CASE_ENQ,
-CASE_IGNORE,
-CASE_BELL,
-/* BS HT NL VT */
-CASE_BS,
-CASE_TAB,
-CASE_VMOT,
-CASE_VMOT,
-/* NP CR SO SI */
-CASE_VMOT,
-CASE_CR,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DLE DC1 DC2 DC3 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* DC4 NAK SYN ETB */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* CAN EM SUB ESC */
-CASE_GROUND_STATE,
-CASE_IGNORE,
-CASE_GROUND_STATE,
-CASE_ESC,
-/* FS GS RS US */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* SP ! " # */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* $ % & ' */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ( ) * + */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* , - . / */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0 1 2 3 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 4 5 6 7 */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* 8 9 : ; */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* < = > ? */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* @ A B C */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* D E F G */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* H I J K */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* L M N O */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* P Q R S */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* T U V W */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* X Y Z [ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* \ ] ^ _ */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* ` a b c */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* d e f g */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* h i j k */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* l m n o */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* p q r s */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* t u v w */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* x y z { */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-/* | } ~ DEL */
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_GROUND_STATE,
-CASE_IGNORE,
-/* 0x80 0x81 0x82 0x83 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x84 0x85 0x86 0x87 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x88 0x89 0x8a 0x8b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x8c 0x8d 0x8e 0x8f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x90 0x91 0x92 0x93 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x94 0x95 0x96 0x97 */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x98 0x99 0x9a 0x9b */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* 0x9c 0x9d 0x9e 0x9f */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* nobreakspace exclamdown cent sterling */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* currency yen brokenbar section */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* diaeresis copyright ordfeminine guillemotleft */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* notsign hyphen registered macron */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* degree plusminus twosuperior threesuperior */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* acute mu paragraph periodcentered */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* cedilla onesuperior masculine guillemotright */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* onequarter onehalf threequarters questiondown */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Agrave Aacute Acircumflex Atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Adiaeresis Aring AE Ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Egrave Eacute Ecircumflex Ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Igrave Iacute Icircumflex Idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Eth Ntilde Ograve Oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ocircumflex Otilde Odiaeresis multiply */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Ooblique Ugrave Uacute Ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* Udiaeresis Yacute Thorn ssharp */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* agrave aacute acircumflex atilde */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* adiaeresis aring ae ccedilla */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* egrave eacute ecircumflex ediaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* igrave iacute icircumflex idiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* eth ntilde ograve oacute */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* ocircumflex otilde odiaeresis division */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* oslash ugrave uacute ucircumflex */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-/* udiaeresis yacute thorn ydiaeresis */
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-CASE_IGNORE,
-};
-#endif /* OPT_VT52_MODE */
diff --git a/nx-X11/programs/xterm/VTparse.def b/nx-X11/programs/xterm/VTparse.def
deleted file mode 100644
index 56c65ee4a..000000000
--- a/nx-X11/programs/xterm/VTparse.def
+++ /dev/null
@@ -1,142 +0,0 @@
-# $XTermId: VTparse.def,v 1.25 2005/07/07 00:46:13 tom Exp $
-#
-# $Xorg: VTparse.def,v 1.3 2000/08/17 19:55:08 cpqbld Exp $
-#
-# List of symbols that need to be defined for VTparse.h. If you need to
-# change any of the CASE_ macros, make the change here and rerun the command
-# shown in VTparse.h.
-#
-# $XFree86: xc/programs/xterm/VTparse.def,v 3.16 2005/07/07 00:46:13 dickey Exp $
-#
-
-CASE_GROUND_STATE
-CASE_IGNORE
-CASE_BELL
-CASE_BS
-CASE_CR
-CASE_ESC
-CASE_VMOT
-CASE_TAB
-CASE_SI
-CASE_SO
-CASE_SCR_STATE
-CASE_SCS0_STATE
-CASE_SCS1_STATE
-CASE_SCS2_STATE
-CASE_SCS3_STATE
-CASE_ESC_IGNORE
-CASE_ESC_DIGIT
-CASE_ESC_SEMI
-CASE_DEC_STATE
-CASE_ICH
-CASE_CUU
-CASE_CUD
-CASE_CUF
-CASE_CUB
-CASE_CUP
-CASE_ED
-CASE_EL
-CASE_IL
-CASE_DL
-CASE_DCH
-CASE_DA1
-CASE_TRACK_MOUSE
-CASE_TBC
-CASE_SET
-CASE_RST
-CASE_SGR
-CASE_CPR
-CASE_DECSTBM
-CASE_DECREQTPARM
-CASE_DECSET
-CASE_DECRST
-CASE_DECALN
-CASE_GSETS
-CASE_DECSC
-CASE_DECRC
-CASE_DECKPAM
-CASE_DECKPNM
-CASE_IND
-CASE_NEL
-CASE_HTS
-CASE_RI
-CASE_SS2
-CASE_SS3
-CASE_CSI_STATE
-CASE_OSC
-CASE_RIS
-CASE_LS2
-CASE_LS3
-CASE_LS3R
-CASE_LS2R
-CASE_LS1R
-CASE_PRINT
-CASE_XTERM_SAVE
-CASE_XTERM_RESTORE
-CASE_XTERM_TITLE
-CASE_DECID
-CASE_HP_MEM_LOCK
-CASE_HP_MEM_UNLOCK
-CASE_HP_BUGGY_LL
-CASE_HPA
-CASE_VPA
-CASE_XTERM_WINOPS
-CASE_ECH
-CASE_CHT
-CASE_CPL
-CASE_CNL
-CASE_CBT
-CASE_SU
-CASE_SD
-CASE_S7C1T
-CASE_S8C1T
-CASE_ESC_SP_STATE
-CASE_ENQ
-CASE_DECSCL
-CASE_DECSCA
-CASE_DECSED
-CASE_DECSEL
-CASE_DCS
-CASE_PM
-CASE_SOS
-CASE_ST
-CASE_APC
-CASE_EPA
-CASE_SPA
-CASE_CSI_QUOTE_STATE
-CASE_DSR
-CASE_ANSI_LEVEL_1
-CASE_ANSI_LEVEL_2
-CASE_ANSI_LEVEL_3
-CASE_MC
-CASE_DEC2_STATE
-CASE_DA2
-CASE_DEC3_STATE
-CASE_DECRPTUI
-CASE_VT52_CUP
-CASE_REP
-CASE_CSI_EX_STATE
-CASE_DECSTR
-CASE_DECDHL
-CASE_DECSWL
-CASE_DECDWL
-CASE_DEC_MC
-CASE_ESC_PERCENT
-CASE_UTF8
-CASE_CSI_TICK_STATE
-CASE_DECELR
-CASE_DECRQLP
-CASE_DECEFR
-CASE_DECSLE
-CASE_CSI_IGNORE
-CASE_VT52_IGNORE
-CASE_VT52_FINISH
-CASE_CSI_DOLLAR_STATE
-CASE_DECCRA
-CASE_DECERA
-CASE_DECFRA
-CASE_DECSERA
-CASE_DECSACE
-CASE_DECCARA
-CASE_DECRARA
-CASE_CSI_STAR_STATE
diff --git a/nx-X11/programs/xterm/VTparse.h b/nx-X11/programs/xterm/VTparse.h
deleted file mode 100644
index 8143e2a44..000000000
--- a/nx-X11/programs/xterm/VTparse.h
+++ /dev/null
@@ -1,248 +0,0 @@
-/* $XTermId: VTparse.h,v 1.38 2005/11/13 23:10:35 tom Exp $ */
-
-/*
- * $Xorg: VTparse.h,v 1.3 2000/08/17 19:55:08 cpqbld Exp $
- */
-
-/* $XFree86: xc/programs/xterm/VTparse.h,v 3.22 2005/11/13 23:10:35 dickey Exp $ */
-/*
- * Copyright 2002-2004,2005 by Thomas E. Dickey
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of the above listed
- * copyright holder(s) not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.
- *
- * THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#ifndef included_VTparse_h
-#define included_VTparse_h 1
-
-#include <xterm.h>
-
-#ifndef Const
-# if defined(__STDC__) && !defined(__cplusplus)
-# define Const const
-# else
-# define Const /**/
-# endif
-#endif
-
-/*
- * PARSE_T has to be large enough to handle the number of cases enumerated here.
- */
-typedef unsigned char PARSE_T;
-
-extern Const PARSE_T ansi_table[];
-extern Const PARSE_T cigtable[];
-extern Const PARSE_T csi2_table[];
-extern Const PARSE_T csi_ex_table[];
-extern Const PARSE_T csi_quo_table[];
-extern Const PARSE_T csi_table[];
-extern Const PARSE_T dec2_table[];
-extern Const PARSE_T dec3_table[];
-extern Const PARSE_T dec_table[];
-extern Const PARSE_T eigtable[];
-extern Const PARSE_T esc_sp_table[];
-extern Const PARSE_T esc_table[];
-extern Const PARSE_T scrtable[];
-extern Const PARSE_T scstable[];
-extern Const PARSE_T sos_table[];
-
-#if OPT_DEC_LOCATOR
-extern Const PARSE_T csi_tick_table[];
-#endif /* OPT_DEC_LOCATOR */
-
-#if OPT_DEC_RECTOPS
-extern Const PARSE_T csi_dollar_table[];
-extern Const PARSE_T csi_star_table[];
-#endif /* OPT_DEC_LOCATOR */
-
-#if OPT_VT52_MODE
-extern Const PARSE_T vt52_table[];
-extern Const PARSE_T vt52_esc_table[];
-extern Const PARSE_T vt52_ignore_table[];
-#endif
-
-#if OPT_WIDE_CHARS
-extern Const PARSE_T esc_pct_table[];
-#endif
-
-/*
- * The following list of definitions is generated from VTparse.def using the
- * following command line:
- *
- * grep '^CASE_' VTparse.def | awk '{printf "#define %s %d\n", $1, n++}'
- *
- * If you need to change something, change VTparse.def and regenerate the
- * definitions. This would have been automatic, but since this doesn't change
- * very often, it isn't worth the makefile hassle.
- */
-
-#define CASE_GROUND_STATE 0
-#define CASE_IGNORE 1
-#define CASE_BELL 2
-#define CASE_BS 3
-#define CASE_CR 4
-#define CASE_ESC 5
-#define CASE_VMOT 6
-#define CASE_TAB 7
-#define CASE_SI 8
-#define CASE_SO 9
-#define CASE_SCR_STATE 10
-#define CASE_SCS0_STATE 11
-#define CASE_SCS1_STATE 12
-#define CASE_SCS2_STATE 13
-#define CASE_SCS3_STATE 14
-#define CASE_ESC_IGNORE 15
-#define CASE_ESC_DIGIT 16
-#define CASE_ESC_SEMI 17
-#define CASE_DEC_STATE 18
-#define CASE_ICH 19
-#define CASE_CUU 20
-#define CASE_CUD 21
-#define CASE_CUF 22
-#define CASE_CUB 23
-#define CASE_CUP 24
-#define CASE_ED 25
-#define CASE_EL 26
-#define CASE_IL 27
-#define CASE_DL 28
-#define CASE_DCH 29
-#define CASE_DA1 30
-#define CASE_TRACK_MOUSE 31
-#define CASE_TBC 32
-#define CASE_SET 33
-#define CASE_RST 34
-#define CASE_SGR 35
-#define CASE_CPR 36
-#define CASE_DECSTBM 37
-#define CASE_DECREQTPARM 38
-#define CASE_DECSET 39
-#define CASE_DECRST 40
-#define CASE_DECALN 41
-#define CASE_GSETS 42
-#define CASE_DECSC 43
-#define CASE_DECRC 44
-#define CASE_DECKPAM 45
-#define CASE_DECKPNM 46
-#define CASE_IND 47
-#define CASE_NEL 48
-#define CASE_HTS 49
-#define CASE_RI 50
-#define CASE_SS2 51
-#define CASE_SS3 52
-#define CASE_CSI_STATE 53
-#define CASE_OSC 54
-#define CASE_RIS 55
-#define CASE_LS2 56
-#define CASE_LS3 57
-#define CASE_LS3R 58
-#define CASE_LS2R 59
-#define CASE_LS1R 60
-#define CASE_PRINT 61
-#define CASE_XTERM_SAVE 62
-#define CASE_XTERM_RESTORE 63
-#define CASE_XTERM_TITLE 64
-#define CASE_DECID 65
-#define CASE_HP_MEM_LOCK 66
-#define CASE_HP_MEM_UNLOCK 67
-#define CASE_HP_BUGGY_LL 68
-#define CASE_HPA 69
-#define CASE_VPA 70
-#define CASE_XTERM_WINOPS 71
-#define CASE_ECH 72
-#define CASE_CHT 73
-#define CASE_CPL 74
-#define CASE_CNL 75
-#define CASE_CBT 76
-#define CASE_SU 77
-#define CASE_SD 78
-#define CASE_S7C1T 79
-#define CASE_S8C1T 80
-#define CASE_ESC_SP_STATE 81
-#define CASE_ENQ 82
-#define CASE_DECSCL 83
-#define CASE_DECSCA 84
-#define CASE_DECSED 85
-#define CASE_DECSEL 86
-#define CASE_DCS 87
-#define CASE_PM 88
-#define CASE_SOS 89
-#define CASE_ST 90
-#define CASE_APC 91
-#define CASE_EPA 92
-#define CASE_SPA 93
-#define CASE_CSI_QUOTE_STATE 94
-#define CASE_DSR 95
-#define CASE_ANSI_LEVEL_1 96
-#define CASE_ANSI_LEVEL_2 97
-#define CASE_ANSI_LEVEL_3 98
-#define CASE_MC 99
-#define CASE_DEC2_STATE 100
-#define CASE_DA2 101
-#define CASE_DEC3_STATE 102
-#define CASE_DECRPTUI 103
-#define CASE_VT52_CUP 104
-#define CASE_REP 105
-#define CASE_CSI_EX_STATE 106
-#define CASE_DECSTR 107
-#define CASE_DECDHL 108
-#define CASE_DECSWL 109
-#define CASE_DECDWL 110
-#define CASE_DEC_MC 111
-#define CASE_ESC_PERCENT 112
-#define CASE_UTF8 113
-#define CASE_CSI_TICK_STATE 114
-#define CASE_DECELR 115
-#define CASE_DECRQLP 116
-#define CASE_DECEFR 117
-#define CASE_DECSLE 118
-#define CASE_CSI_IGNORE 119
-#define CASE_VT52_IGNORE 120
-#define CASE_VT52_FINISH 121
-#define CASE_CSI_DOLLAR_STATE 122
-#define CASE_DECCRA 123
-#define CASE_DECERA 124
-#define CASE_DECFRA 125
-#define CASE_DECSERA 126
-#define CASE_DECSACE 127
-#define CASE_DECCARA 128
-#define CASE_DECRARA 129
-#define CASE_CSI_STAR_STATE 130
-
-#endif /* included_VTparse_h */
diff --git a/nx-X11/programs/xterm/XTerm-col.ad b/nx-X11/programs/xterm/XTerm-col.ad
deleted file mode 100644
index d8148ca82..000000000
--- a/nx-X11/programs/xterm/XTerm-col.ad
+++ /dev/null
@@ -1,130 +0,0 @@
-! $XTermId: XTerm-col.ad,v 1.19 2005/09/18 23:48:12 tom Exp $
-! $XFree86: xc/programs/xterm/XTerm-col.ad,v 3.7 2005/09/18 23:48:12 dickey Exp $
-
-#include "XTerm"
-
-*VT100*colorMode: on
-*VT100*boldColors: on
-*VT100*dynamicColors: on
-
-! Uncomment this for "white" text on a dark background.
-!*VT100*foreground: gray90
-!*VT100*background: black
-
-! - OR -
-! Uncomment this for black text on a "white" background.
-!*VT100*foreground: black
-!*VT100*background: gray90
-
-! - OR -
-! leave the foreground/background colors alone (at the mercy of your desktop
-! designer).
-
-! Color the popup/pulldown menu border to match the text widget's foreground.
-!*SimpleMenu*borderColor: gray15
-
-! Uncomment this to use color for underline attribute
-!*VT100*colorULMode: on
-*VT100*colorUL: yellow
-
-!*VT100*italicULMode: on
-
-! Uncomment this to disable underlining, e.g., if colorULMode is set.
-!*VT100*underLine: off
-
-! Uncomment this to use color for the bold attribute
-!*VT100*colorBDMode: on
-*VT100*colorBD: white
-
-! Uncomment this to use the bold/underline colors in preference to other colors
-!*VT100*colorAttrMode: on
-
-! These are the 8 ANSI colors and their bright equivalents. Depending on
-! other resource settings, xterm may use the bright colors when displaying
-! bold text (see the boldColors resource).
-*VT100*color0: black
-*VT100*color1: red3
-*VT100*color2: green3
-*VT100*color3: yellow3
-*VT100*color4: blue2
-*VT100*color5: magenta3
-*VT100*color6: cyan3
-*VT100*color7: gray90
-*VT100*color8: gray50
-*VT100*color9: red
-*VT100*color10: green
-*VT100*color11: yellow
-*VT100*color12: rgb:5c/5c/ff
-*VT100*color13: magenta
-*VT100*color14: cyan
-*VT100*color15: white
-
-! Disclaimer: there are no standard colors used in terminal emulation.
-!
-! The choice for color4 and color12 is a tradeoff between contrast, depending
-! on whether they are used for text or backgrounds. Note that either color4 or
-! color12 would be used for text, while only color4 would be used for a
-! background. These are treated specially, since the luminosity of blue is
-! only about half that of red/green, and is typically not accounted for in the
-! RGB scheme.
-!
-! Blue text on a black background should be readable.
-! Blue backgrounds should not be "too" bright.
-!
-! Originally color4/color12 were set to the names blue3/blue
-!*VT100*color4: blue3
-!*VT100*color12: blue
-!
-! They are from rgb.txt respectively:
-! 0 0 205 blue3
-! 0 0 255 blue
-! However, blue3 is not readable on a black background.
-!
-! Another choice was from the Debian settings:
-!*VT100*color4: DodgerBlue1
-!*VT100*color12: SteelBlue1
-!
-! From rgb.txt:
-! 30 144 255 DodgerBlue1
-! 99 184 255 SteelBlue1
-!
-! Some users object to this choice because the background (color4) is brighter
-! than they are accustomed. Others point out that the different weights for
-! the red/green components make it appear to be not really blue. Finally, it
-! provides poor contrast against color13 and color14.
-!
-! The current choice uses equal weights for red/green (effectively adding a
-! gray to the result). It is brighter than the original choice, and provides
-! more contrast between color12 and color13, color14 than SteelBlue1 did.
-! Contrast of color4 against black is slightly improved over the original.
-!
-! Some refinement is certainly possible (you are welcome to try) -TD
-
-
-#if PLANES > 8
-! Color the popup menus and the menubar to match:
-*SimpleMenu.*.background: AntiqueWhite
-*SimpleMenu.*.foreground: gray15
-
-! Color the menubar to match:
-*.Form.menubar.*.background: AntiqueWhite
-*.Form.menubar.*.foreground: gray15
-*.Form.background: AntiqueWhite
-
-! The following two sections take advantage of new features in version 7
-! of the Athena widget library. Comment them out if you have a shallow
-! color depth.
-!*SimpleMenu*backgroundPixmap: gradient:vertical?dimension=350&start=gray90&end=gray60
-!*SimpleMenu*foreground: gray15
-
-!*VT100.scrollbar.thumb: vlines2
-!*VT100.scrollbar.width: 14
-!*VT100.scrollbar.background: gray60
-!*VT100.scrollbar.foreground: rgb:a/5/5
-!*VT100.scrollbar.borderWidth: 0
-!*VT100.scrollbar.displayList:\
-!foreground gray90;\
-!lines 1,-1,-1,-1,-1,1;\
-!foreground gray60;\
-!lines -1,0,0,0,0,-1
-#endif
diff --git a/nx-X11/programs/xterm/XTerm.ad b/nx-X11/programs/xterm/XTerm.ad
deleted file mode 100644
index bb492fc9a..000000000
--- a/nx-X11/programs/xterm/XTerm.ad
+++ /dev/null
@@ -1,185 +0,0 @@
-! $Xorg: XTerm.ad,v 1.3 2000/08/17 19:55:08 cpqbld Exp $
-!
-!
-!
-!
-! $XTermId: XTerm.ad,v 1.69 2005/11/03 13:17:27 tom Exp $
-! $XFree86: xc/programs/xterm/XTerm.ad,v 3.32 2005/11/03 13:17:27 dickey Exp $
-
-*saveLines: 1024
-
-*SimpleMenu*BackingStore: NotUseful
-*SimpleMenu*menuLabel.font: -adobe-helvetica-bold-r-normal--*-120-*-*-*-*-iso8859-*
-*SimpleMenu*menuLabel.vertSpace: 100
-*SimpleMenu*HorizontalMargins: 16
-*SimpleMenu*Sme.height: 16
-
-*SimpleMenu*Cursor: left_ptr
-
-*mainMenu.Label: Main Options
-*mainMenu*toolbar*Label: Toolbar
-*mainMenu*securekbd*Label: Secure Keyboard
-*mainMenu*allowsends*Label: Allow SendEvents
-*mainMenu*redraw*Label: Redraw Window
-*mainMenu*logging*Label: Log to File
-*mainMenu*print*Label: Print Window
-*mainMenu*print-redir*Label: Redirect to Printer
-*mainMenu*8-bit control*Label: 8-Bit Controls
-*mainMenu*backarrow key*Label: Backarrow Key (BS/DEL)
-*mainMenu*num-lock*Label: Alt/NumLock Modifiers
-*mainMenu*alt-esc*Label: Alt Sends Escape
-*mainMenu*meta-esc*Label: Meta Sends Escape
-*mainMenu*delete-is-del*Label: Delete is DEL
-*mainMenu*oldFunctionKeys*Label: Old Function-Keys
-*mainMenu*sunFunctionKeys*Label: Sun Function-Keys
-*mainMenu*sunKeyboard*Label: VT220 Keyboard
-*mainMenu*hpFunctionKeys*Label: HP Function-Keys
-*mainMenu*scoFunctionKeys*Label: SCO Function-Keys
-*mainMenu*suspend*Label: Send STOP Signal
-*mainMenu*continue*Label: Send CONT Signal
-*mainMenu*interrupt*Label: Send INT Signal
-*mainMenu*hangup*Label: Send HUP Signal
-*mainMenu*terminate*Label: Send TERM Signal
-*mainMenu*kill*Label: Send KILL Signal
-*mainMenu*quit*Label: Quit
-
-*vtMenu.Label: VT Options
-*vtMenu*scrollbar*Label: Enable Scrollbar
-*vtMenu*jumpscroll*Label: Enable Jump Scroll
-*vtMenu*reversevideo*Label: Enable Reverse Video
-*vtMenu*autowrap*Label: Enable Auto Wraparound
-*vtMenu*reversewrap*Label: Enable Reverse Wraparound
-*vtMenu*autolinefeed*Label: Enable Auto Linefeed
-*vtMenu*appcursor*Label: Enable Application Cursor Keys
-*vtMenu*appkeypad*Label: Enable Application Keypad
-*vtMenu*scrollkey*Label: Scroll to Bottom on Key Press
-*vtMenu*scrollttyoutput*Label: Scroll to Bottom on Tty Output
-*vtMenu*allow132*Label: Allow 80/132 Column Switching
-*vtMenu*cursesemul*Label: Enable Curses Emulation
-*vtMenu*visualbell*Label: Enable Visual Bell
-*vtMenu*poponbell*Label: Enable Pop on Bell
-*vtMenu*marginbell*Label: Enable Margin Bell
-*vtMenu*cursorblink*Label: Enable Blinking Cursor
-*vtMenu*titeInhibit*Label: Enable Alternate Screen Switching
-*vtMenu*activeicon*Label: Enable Active Icon
-*vtMenu*softreset*Label: Do Soft Reset
-*vtMenu*hardreset*Label: Do Full Reset
-*vtMenu*clearsavedlines*Label: Reset and Clear Saved Lines
-*vtMenu*tekshow*Label: Show Tek Window
-*vtMenu*tekmode*Label: Switch to Tek Mode
-*vtMenu*vthide*Label: Hide VT Window
-*vtMenu*altscreen*Label: Show Alternate Screen
-
-*fontMenu.Label: VT Fonts
-*fontMenu*fontdefault*Label: Default
-*fontMenu*font1*Label: Unreadable
-*VT100.font1: nil2
-*IconFont: nil2
-*fontMenu*font2*Label: Tiny
-*VT100.font2: 5x7
-*fontMenu*font3*Label: Small
-*VT100.font3: 6x10
-*fontMenu*font4*Label: Medium
-*VT100.font4: 7x13
-*fontMenu*font5*Label: Large
-*VT100.font5: 9x15
-*fontMenu*font6*Label: Huge
-*VT100.font6: 10x20
-*fontMenu*fontescape*Label: Escape Sequence
-*fontMenu*fontsel*Label: Selection
-!fontescape and fontsel overridden by application
-*fontMenu*font-linedrawing*Label: Line-Drawing Characters
-*fontMenu*font-doublesize*Label: Doublesized Characters
-*fontMenu*font-loadable*Label: VT220 Soft Fonts
-*fontMenu*render-font*Label: TrueType Fonts
-*fontMenu*utf8-mode*Label: UTF-8
-
-*VT100.utf8Fonts.font2: -misc-fixed-medium-r-normal--8-80-75-75-c-50-iso10646-1
-*VT100.utf8Fonts.font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
-*VT100.utf8Fonts.font3: -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1
-*VT100.utf8Fonts.font4: -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso10646-1
-*VT100.utf8Fonts.font5: -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
-*VT100.utf8Fonts.font6: -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1
-
-*tekMenu.Label: Tek Options
-*tekMenu*tektextlarge*Label: Large Characters
-*tekMenu*tektext2*Label: #2 Size Characters
-*tekMenu*tektext3*Label: #3 Size Characters
-*tekMenu*tektextsmall*Label: Small Characters
-*tekMenu*tekpage*Label: PAGE
-*tekMenu*tekreset*Label: RESET
-*tekMenu*tekcopy*Label: COPY
-*tekMenu*vtshow*Label: Show VT Window
-*tekMenu*vtmode*Label: Switch to VT Mode
-*tekMenu*tekhide*Label: Hide Tek Window
-
-*tek4014*fontLarge: 9x15
-*tek4014*font2: 8x13
-*tek4014*font3: 6x13
-*tek4014*fontSmall: 6x10
-
-! If xterm is built with a toolbar, the widget hierarchy looks like this,
-! showing widget name / class names. The complete menu hierarchy is built
-! at startup because it is needed to make the layout work for the menubar:
-!
-! xterm/XTerm
-! form/Form
-! menubar/Box
-! mainMenuButton/MenuButton
-! mainMenu/SimpleMenu
-! menuLabel/SmeBSB
-! toolbar/SmeBSB
-! ...
-! vtMenu/SimpleMenu
-! menuLabel/SmeBSB
-! scrollbar/SmeBSB
-! ...
-! fontMenu/SimpleMenu
-! menuLabel/SmeBSB
-! fontdefault/SmeBSB
-! ...
-! tekMenu/SimpleMenu
-! menuLabel/SmeBSB
-! fontdefault/SmeBSB
-! ...
-! vt100/VT100
-! tektronix/TopLevelShell
-! shellext/VendorShellExt
-! tek4014/Tek4014
-!
-! If built without a toolbar, the widget hierarchy is simpler, because there
-! is no form, and the popup menu widgets are created only when they are first
-! used.
-!
-! xterm/XTerm
-! shellext/VendorShellExt
-! mainMenu/SimpleMenu
-! menuLabel/SmeBSB
-! ...
-! ...
-! vt100/VT100
-! tektronix/TopLevelShell
-! shellext/VendorShellExt
-! tek4014/Tek4014
-!
-! A more complete list of the widget/class names can be obtained using editres
-! to dump a file. Some widget names are not available until the corresponding
-! menu has been created.
-
-! These resources reduce space around the menubar, by eliminating padding in
-! the enclosing form (Thickness) and the border of the Box which represents
-! the menubar widget.
-*form.Thickness: 0
-*menubar.borderWidth: 0
-
-! If we wanted to eliminate the border of the popup menus, we could do this
-! instead, since they are children of the menubar:
-!*menubar.*.borderWidth: 0
-
-! Eliminate the border of the buttons in the menubar, so the only line around
-! the text is for the highlighted button:
-*MenuButton*borderWidth: 0
-
-! Set a border for the menus to make them simpler to distinguish against the
-! vt100 widget:
-*SimpleMenu*borderWidth: 2
diff --git a/nx-X11/programs/xterm/aclocal.m4 b/nx-X11/programs/xterm/aclocal.m4
deleted file mode 100644
index b5fb07053..000000000
--- a/nx-X11/programs/xterm/aclocal.m4
+++ /dev/null
@@ -1,2359 +0,0 @@
-dnl $XTermId: aclocal.m4,v 1.206 2005/11/03 13:17:27 tom Exp $
-dnl
-dnl $XFree86: xc/programs/xterm/aclocal.m4,v 3.60 2005/11/03 13:17:27 dickey Exp $
-dnl
-dnl ---------------------------------------------------------------------------
-dnl
-dnl Copyright 1997-2004,2005 by Thomas E. Dickey
-dnl
-dnl All Rights Reserved
-dnl
-dnl Permission to use, copy, modify, and distribute this software and its
-dnl documentation for any purpose and without fee is hereby granted,
-dnl provided that the above copyright notice appear in all copies and that
-dnl both that copyright notice and this permission notice appear in
-dnl supporting documentation, and that the name of the above listed
-dnl copyright holder(s) not be used in advertising or publicity pertaining
-dnl to distribution of the software without specific, written prior
-dnl permission.
-dnl
-dnl THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
-dnl TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-dnl AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
-dnl LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-dnl WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-dnl ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-dnl OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-dnl
-dnl ---------------------------------------------------------------------------
-dnl ---------------------------------------------------------------------------
-dnl AM_LANGINFO_CODESET version: 3 updated: 2002/10/27 23:21:42
-dnl -------------------
-dnl Inserted as requested by gettext 0.10.40
-dnl File from /usr/share/aclocal
-dnl codeset.m4
-dnl ====================
-dnl serial AM1
-dnl
-dnl From Bruno Haible.
-AC_DEFUN([AM_LANGINFO_CODESET],
-[
- AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
- [AC_TRY_LINK([#include <langinfo.h>],
- [char* cs = nl_langinfo(CODESET);],
- am_cv_langinfo_codeset=yes,
- am_cv_langinfo_codeset=no)
- ])
- if test $am_cv_langinfo_codeset = yes; then
- AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
- [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
- fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_ADD_CFLAGS version: 7 updated: 2004/04/25 17:48:30
-dnl -------------
-dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
-dnl The second parameter if given makes this macro verbose.
-dnl
-dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
-dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
-dnl confused by the quotes (which require backslashes to keep them usable).
-AC_DEFUN([CF_ADD_CFLAGS],
-[
-cf_fix_cppflags=no
-cf_new_cflags=
-cf_new_cppflags=
-cf_new_extra_cppflags=
-
-for cf_add_cflags in $1
-do
-case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
- case $cf_add_cflags in
- -D*)
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=yes
-
- if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- fi
- ;;
- esac
- case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
- ;;
- *) #(vi
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
- ;;
- esac
- ;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
- ;;
- esac
- ;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
-
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=no
- ;;
-esac
-done
-
-if test -n "$cf_new_cflags" ; then
- ifelse($2,,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
- CFLAGS="$CFLAGS $cf_new_cflags"
-fi
-
-if test -n "$cf_new_cppflags" ; then
- ifelse($2,,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
- CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
-fi
-
-if test -n "$cf_new_extra_cppflags" ; then
- ifelse($2,,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
-fi
-
-AC_SUBST(EXTRA_CPPFLAGS)
-
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_ANSI_CC_CHECK version: 9 updated: 2001/12/30 17:53:34
-dnl ----------------
-dnl This is adapted from the macros 'fp_PROG_CC_STDC' and 'fp_C_PROTOTYPES'
-dnl in the sharutils 4.2 distribution.
-AC_DEFUN([CF_ANSI_CC_CHECK],
-[
-AC_CACHE_CHECK(for ${CC-cc} option to accept ANSI C, cf_cv_ansi_cc,[
-cf_cv_ansi_cc=no
-cf_save_CFLAGS="$CFLAGS"
-cf_save_CPPFLAGS="$CPPFLAGS"
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX -qlanglvl=ansi
-# Ultrix and OSF/1 -std1
-# HP-UX -Aa -D_HPUX_SOURCE
-# SVR4 -Xc
-# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes)
-for cf_arg in "-DCC_HAS_PROTOS" \
- "" \
- -qlanglvl=ansi \
- -std1 \
- -Ae \
- "-Aa -D_HPUX_SOURCE" \
- -Xc
-do
- CF_ADD_CFLAGS($cf_arg)
- AC_TRY_COMPILE(
-[
-#ifndef CC_HAS_PROTOS
-#if !defined(__STDC__) || (__STDC__ != 1)
-choke me
-#endif
-#endif
-],[
- int test (int i, double x);
- struct s1 {int (*f) (int a);};
- struct s2 {int (*f) (double a);};],
- [cf_cv_ansi_cc="$cf_arg"; break])
-done
-CFLAGS="$cf_save_CFLAGS"
-CPPFLAGS="$cf_save_CPPFLAGS"
-])
-
-if test "$cf_cv_ansi_cc" != "no"; then
-if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then
- CF_ADD_CFLAGS($cf_cv_ansi_cc)
-else
- AC_DEFINE(CC_HAS_PROTOS)
-fi
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
-dnl --------------
-dnl Allow user to disable a normally-on option.
-AC_DEFUN([CF_ARG_DISABLE],
-[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31
-dnl -------------
-dnl Allow user to enable a normally-off option.
-AC_DEFUN([CF_ARG_ENABLE],
-[CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_ARG_OPTION version: 3 updated: 1997/10/18 14:42:41
-dnl -------------
-dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
-dnl values.
-dnl
-dnl Parameters:
-dnl $1 = option name
-dnl $2 = help-string
-dnl $3 = action to perform if option is not default
-dnl $4 = action if perform if option is default
-dnl $5 = default option value (either 'yes' or 'no')
-AC_DEFUN([CF_ARG_OPTION],
-[AC_ARG_ENABLE($1,[$2],[test "$enableval" != ifelse($5,no,yes,no) && enableval=ifelse($5,no,no,yes)
- if test "$enableval" != "$5" ; then
-ifelse($3,,[ :]dnl
-,[ $3]) ifelse($4,,,[
- else
- $4])
- fi],[enableval=$5 ifelse($4,,,[
- $4
-])dnl
- ])])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_CACHE version: 10 updated: 2004/05/23 13:03:31
-dnl --------------
-dnl Check if we're accidentally using a cache from a different machine.
-dnl Derive the system name, as a check for reusing the autoconf cache.
-dnl
-dnl If we've packaged config.guess and config.sub, run that (since it does a
-dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow
-dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
-dnl which is useful in cross-compiles.
-dnl
-dnl Note: we would use $ac_config_sub, but that is one of the places where
-dnl autoconf 2.5x broke compatibility with autoconf 2.13
-AC_DEFUN([CF_CHECK_CACHE],
-[
-if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
- ifelse([$1],,[AC_CANONICAL_HOST],[$1])
- system_name="$host_os"
-else
- system_name="`(uname -s -r) 2>/dev/null`"
- if test -z "$system_name" ; then
- system_name="`(hostname) 2>/dev/null`"
- fi
-fi
-test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name")
-AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
-
-test -z "$system_name" && system_name="$cf_cv_system_name"
-test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
-
-if test ".$system_name" != ".$cf_cv_system_name" ; then
- AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
- AC_ERROR("Please remove config.cache and try again.")
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_CFLAGS version: 2 updated: 2001/12/30 19:09:58
-dnl ---------------
-dnl Conditionally add to $CFLAGS and $CPPFLAGS values which are derived from
-dnl a build-configuration such as imake. These have the pitfall that they
-dnl often contain compiler-specific options which we cannot use, mixed with
-dnl preprocessor options that we usually can.
-AC_DEFUN([CF_CHECK_CFLAGS],
-[
-CF_VERBOSE(checking additions to CFLAGS)
-cf_check_cflags="$CFLAGS"
-cf_check_cppflags="$CPPFLAGS"
-CF_ADD_CFLAGS($1,yes)
-if test "$cf_check_cflags" != "$CFLAGS" ; then
-AC_TRY_LINK([#include <stdio.h>],[printf("Hello world");],,
- [CF_VERBOSE(test-compile failed. Undoing change to \$CFLAGS)
- if test "$cf_check_cppflags" != "$CPPFLAGS" ; then
- CF_VERBOSE(but keeping change to \$CPPFLAGS)
- fi
- CFLAGS="$cf_check_flags"])
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_ERRNO version: 9 updated: 2001/12/30 18:03:23
-dnl --------------
-dnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g.,
-dnl the 'errno' variable. Define a DECL_xxx symbol if we must declare it
-dnl ourselves.
-dnl
-dnl $1 = the name to check
-AC_DEFUN([CF_CHECK_ERRNO],
-[
-AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
- AC_TRY_COMPILE([
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#include <errno.h> ],
- [long x = (long) $1],
- [cf_cv_dcl_$1=yes],
- [cf_cv_dcl_$1=no])
-])
-
-if test "$cf_cv_dcl_$1" = no ; then
- CF_UPPER(cf_result,decl_$1)
- AC_DEFINE_UNQUOTED($cf_result)
-fi
-
-# It's possible (for near-UNIX clones) that the data doesn't exist
-CF_CHECK_EXTERN_DATA($1,int)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_EXTERN_DATA version: 3 updated: 2001/12/30 18:03:23
-dnl --------------------
-dnl Check for existence of external data in the current set of libraries. If
-dnl we can modify it, it's real enough.
-dnl $1 = the name to check
-dnl $2 = its type
-AC_DEFUN([CF_CHECK_EXTERN_DATA],
-[
-AC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[
- AC_TRY_LINK([
-#undef $1
-extern $2 $1;
-],
- [$1 = 2],
- [cf_cv_have_$1=yes],
- [cf_cv_have_$1=no])
-])
-
-if test "$cf_cv_have_$1" = yes ; then
- CF_UPPER(cf_result,have_$1)
- AC_DEFINE_UNQUOTED($cf_result)
-fi
-
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_DISABLE_ECHO version: 10 updated: 2003/04/17 22:27:11
-dnl ---------------
-dnl You can always use "make -n" to see the actual options, but it's hard to
-dnl pick out/analyze warning messages when the compile-line is long.
-dnl
-dnl Sets:
-dnl ECHO_LT - symbol to control if libtool is verbose
-dnl ECHO_LD - symbol to prefix "cc -o" lines
-dnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
-dnl SHOW_CC - symbol to put before explicit "cc -c" lines
-dnl ECHO_CC - symbol to put before any "cc" line
-dnl
-AC_DEFUN([CF_DISABLE_ECHO],[
-AC_MSG_CHECKING(if you want to see long compiling messages)
-CF_ARG_DISABLE(echo,
- [ --disable-echo display "compiling" commands],
- [
- ECHO_LT='--silent'
- ECHO_LD='@echo linking [$]@;'
- RULE_CC=' @echo compiling [$]<'
- SHOW_CC=' @echo compiling [$]@'
- ECHO_CC='@'
-],[
- ECHO_LT=''
- ECHO_LD=''
- RULE_CC='# compiling'
- SHOW_CC='# compiling'
- ECHO_CC=''
-])
-AC_MSG_RESULT($enableval)
-AC_SUBST(ECHO_LT)
-AC_SUBST(ECHO_LD)
-AC_SUBST(RULE_CC)
-AC_SUBST(SHOW_CC)
-AC_SUBST(ECHO_CC)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_ENABLE_NARROWPROTO version: 1 updated: 2005/11/02 15:04:41
-dnl ---------------------
-dnl If this is not set properly, Xaw's scrollbars will not work.
-dnl The so-called "modular" configuration for Xorg omits most of the
-dnl configure checks that would be needed to provide compatibility with
-dnl older X builds. This one breaks things noticeably.
-AC_DEFUN([CF_ENABLE_NARROWPROTO],
-[
-AC_MSG_CHECKING(if you want narrow prototypes for X libraries)
-
-case `$ac_config_guess` in #(vi
-*cygwin*|*freebsd*|*gnu*|*irix5*|*irix6*|*linux-gnu*|*netbsd*|*openbsd*|*qnx*|*sco*|*sgi*) #(vi
- cf_default_narrowproto=yes
- ;;
-*)
- cf_default_narrowproto=no
- ;;
-esac
-
-CF_ARG_OPTION(narrowproto,
- [ --enable-narrowproto enable narrow prototypes for X libraries],
- [enable_narrowproto=$enableval],
- [enable_narrowproto=$default_narrowproto],
- [$cf_default_narrowproto])
-AC_MSG_RESULT($enable_narrowproto)
-])
-dnl ---------------------------------------------------------------------------
-dnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39
-dnl --------
-dnl Check if 'errno' is declared in <errno.h>
-AC_DEFUN([CF_ERRNO],
-[
-CF_CHECK_ERRNO(errno)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_MEMMOVE version: 5 updated: 2000/08/12 23:18:52
-dnl ---------------
-dnl Check for memmove, or a bcopy that can handle overlapping copy. If neither
-dnl is found, add our own version of memmove to the list of objects.
-AC_DEFUN([CF_FUNC_MEMMOVE],
-[
-AC_CHECK_FUNC(memmove,,[
-AC_CHECK_FUNC(bcopy,[
- AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[
- AC_TRY_RUN([
-int main() {
- static char data[] = "abcdefghijklmnopqrstuwwxyz";
- char temp[40];
- bcopy(data, temp, sizeof(data));
- bcopy(temp+10, temp, 15);
- bcopy(temp+5, temp+15, 10);
- exit (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
-}
- ],
- [cf_cv_good_bcopy=yes],
- [cf_cv_good_bcopy=no],
- [cf_cv_good_bcopy=unknown])
- ])
- ],[cf_cv_good_bcopy=no])
- if test "$cf_cv_good_bcopy" = yes ; then
- AC_DEFINE(USE_OK_BCOPY)
- else
- AC_DEFINE(USE_MY_MEMMOVE)
- fi
-])])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_TGETENT version: 10 updated: 2005/09/18 15:26:47
-dnl ---------------
-dnl Check for tgetent function in termcap library. If we cannot find this,
-dnl we'll use the $LINES and $COLUMNS environment variables to pass screen
-dnl size information to subprocesses. (We cannot use terminfo's compatibility
-dnl function, since it cannot provide the termcap-format data).
-dnl
-dnl If the --disable-full-tgetent option is given, we'll settle for the first
-dnl tgetent function we find. Since the search list in that case does not
-dnl include the termcap library, that allows us to default to terminfo.
-AC_DEFUN([CF_FUNC_TGETENT],
-[
-# compute a reasonable value for $TERM to give tgetent(), since we may be
-# running in 'screen', which sets $TERMCAP to a specific entry that is not
-# necessarily in /etc/termcap - unsetenv is not portable, so we cannot simply
-# discard $TERMCAP.
-cf_TERMVAR=vt100
-test -n "$TERMCAP" && cf_TERMVAR="$TERM"
-test -z "$cf_TERMVAR" && cf_TERMVAR=vt100
-
-AC_MSG_CHECKING(if we want full tgetent function)
-CF_ARG_DISABLE(full-tgetent,
- [ --disable-full-tgetent disable check for full tgetent function],
- cf_full_tgetent=no,
- cf_full_tgetent=yes,yes)
-AC_MSG_RESULT($cf_full_tgetent)
-
-if test "$cf_full_tgetent" = yes ; then
- cf_test_message="full tgetent"
-else
- cf_test_message="tgetent"
-fi
-
-AC_CACHE_CHECK(for $cf_test_message function,cf_cv_lib_tgetent,[
-cf_save_LIBS="$LIBS"
-cf_cv_lib_tgetent=no
-if test "$cf_full_tgetent" = yes ; then
- cf_TERMLIB="termcap termlib ncurses curses"
- cf_TERMTST="buffer[[0]] == 0"
-else
- cf_TERMLIB="termlib ncurses curses"
- cf_TERMTST="0"
-fi
-for cf_termlib in '' $cf_TERMLIB ; do
- LIBS="$cf_save_LIBS"
- test -n "$cf_termlib" && LIBS="$LIBS -l$cf_termlib"
- AC_TRY_RUN([
-/* terminfo implementations ignore the buffer argument, making it useless for
- * the xterm application, which uses this information to make a new TERMCAP
- * environment variable.
- */
-int main()
-{
- char buffer[1024];
- buffer[0] = 0;
- tgetent(buffer, "$cf_TERMVAR");
- exit($cf_TERMTST); }],
- [echo "yes, there is a termcap/tgetent in $cf_termlib" 1>&AC_FD_CC
- if test -n "$cf_termlib" ; then
- cf_cv_lib_tgetent="-l$cf_termlib"
- else
- cf_cv_lib_tgetent=yes
- fi
- break],
- [echo "no, there is no termcap/tgetent in $cf_termlib" 1>&AC_FD_CC],
- [echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&AC_FD_CC])
-done
-LIBS="$cf_save_LIBS"
-])
-
-# If we found a working tgetent(), set LIBS and check for termcap.h.
-# (LIBS cannot be set inside AC_CACHE_CHECK; the commands there should
-# not have side effects other than setting the cache variable, because
-# they are not executed when a cached value exists.)
-if test "$cf_cv_lib_tgetent" != no ; then
- test "$cf_cv_lib_tgetent" != yes && LIBS="$LIBS $cf_cv_lib_tgetent"
- AC_DEFINE(USE_TERMCAP)
- AC_TRY_COMPILE([
-#include <termcap.h>],[
-#ifdef NCURSES_VERSION
-make an error
-#endif],[AC_DEFINE(HAVE_TERMCAP_H)])
-else
- # If we didn't find a tgetent() that supports the buffer
- # argument, look again to see whether we can find even
- # a crippled one. A crippled tgetent() is still useful to
- # validate values for the TERM environment variable given to
- # child processes.
- AC_CACHE_CHECK(for partial tgetent function,cf_cv_lib_part_tgetent,[
- cf_cv_lib_part_tgetent=no
- for cf_termlib in $cf_TERMLIB ; do
- LIBS="$cf_save_LIBS -l$cf_termlib"
- AC_TRY_LINK([],[tgetent(0, "$cf_TERMVAR")],
- [echo "there is a terminfo/tgetent in $cf_termlib" 1>&AC_FD_CC
- cf_cv_lib_part_tgetent="-l$cf_termlib"
- break])
- done
- LIBS="$cf_save_LIBS"
- ])
-
- if test "$cf_cv_lib_part_tgetent" != no ; then
- LIBS="$LIBS $cf_cv_lib_part_tgetent"
- AC_CHECK_HEADERS(termcap.h)
-
- # If this is linking against ncurses, we'll trigger the
- # ifdef in resize.c that turns the termcap stuff back off.
- AC_DEFINE(USE_TERMINFO)
- fi
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_GCC_ATTRIBUTES version: 10 updated: 2005/05/28 13:16:28
-dnl -----------------
-dnl Test for availability of useful gcc __attribute__ directives to quiet
-dnl compiler warnings. Though useful, not all are supported -- and contrary
-dnl to documentation, unrecognized directives cause older compilers to barf.
-AC_DEFUN([CF_GCC_ATTRIBUTES],
-[
-if test "$GCC" = yes
-then
-cat > conftest.i <<EOF
-#ifndef GCC_PRINTF
-#define GCC_PRINTF 0
-#endif
-#ifndef GCC_SCANF
-#define GCC_SCANF 0
-#endif
-#ifndef GCC_NORETURN
-#define GCC_NORETURN /* nothing */
-#endif
-#ifndef GCC_UNUSED
-#define GCC_UNUSED /* nothing */
-#endif
-EOF
-if test "$GCC" = yes
-then
- AC_CHECKING([for $CC __attribute__ directives])
-cat > conftest.$ac_ext <<EOF
-#line __oline__ "configure"
-#include "confdefs.h"
-#include "conftest.h"
-#include "conftest.i"
-#if GCC_PRINTF
-#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
-#else
-#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
-#endif
-#if GCC_SCANF
-#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
-#else
-#define GCC_SCANFLIKE(fmt,var) /*nothing*/
-#endif
-extern void wow(char *,...) GCC_SCANFLIKE(1,2);
-extern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
-extern void foo(void) GCC_NORETURN;
-int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { return 0; }
-EOF
- for cf_attribute in scanf printf unused noreturn
- do
- CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
- cf_directive="__attribute__(($cf_attribute))"
- echo "checking for $CC $cf_directive" 1>&AC_FD_CC
- case $cf_attribute in
- scanf|printf)
- cat >conftest.h <<EOF
-#define GCC_$cf_ATTRIBUTE 1
-EOF
- ;;
- *)
- cat >conftest.h <<EOF
-#define GCC_$cf_ATTRIBUTE $cf_directive
-EOF
- ;;
- esac
- if AC_TRY_EVAL(ac_compile); then
- test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
- cat conftest.h >>confdefs.h
- fi
- done
-else
- fgrep define conftest.i >>confdefs.h
-fi
-rm -rf conftest*
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_GCC_VERSION version: 4 updated: 2005/08/27 09:53:42
-dnl --------------
-dnl Find version of gcc
-AC_DEFUN([CF_GCC_VERSION],[
-AC_REQUIRE([AC_PROG_CC])
-GCC_VERSION=none
-if test "$GCC" = yes ; then
- AC_MSG_CHECKING(version of $CC)
- GCC_VERSION="`${CC} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
- test -z "$GCC_VERSION" && GCC_VERSION=unknown
- AC_MSG_RESULT($GCC_VERSION)
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_GCC_WARNINGS version: 20 updated: 2005/08/06 18:37:29
-dnl ---------------
-dnl Check if the compiler supports useful warning options. There's a few that
-dnl we don't use, simply because they're too noisy:
-dnl
-dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
-dnl -Wredundant-decls (system headers make this too noisy)
-dnl -Wtraditional (combines too many unrelated messages, only a few useful)
-dnl -Wwrite-strings (too noisy, but should review occasionally). This
-dnl is enabled for ncurses using "--enable-const".
-dnl -pedantic
-dnl
-dnl Parameter:
-dnl $1 is an optional list of gcc warning flags that a particular
-dnl application might want to use, e.g., "no-unused" for
-dnl -Wno-unused
-dnl Special:
-dnl If $with_ext_const is "yes", add a check for -Wwrite-strings
-dnl
-AC_DEFUN([CF_GCC_WARNINGS],
-[
-AC_REQUIRE([CF_GCC_VERSION])
-CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
-
-cat > conftest.$ac_ext <<EOF
-#line __oline__ "configure"
-int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
-EOF
-
-if test "$INTEL_COMPILER" = yes
-then
-# The "-wdXXX" options suppress warnings:
-# remark #1419: external declaration in primary source file
-# remark #1682: implicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
-# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
-# remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
-# remark #193: zero used for undefined preprocessing identifier
-# remark #593: variable "curs_sb_left_arrow" was set but never used
-# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
-# remark #869: parameter "tw" was never referenced
-# remark #981: operands are evaluated in unspecified order
-# warning #269: invalid format string conversion
-
- AC_CHECKING([for $CC warning options])
- cf_save_CFLAGS="$CFLAGS"
- EXTRA_CFLAGS="-Wall"
- for cf_opt in $1 \
- wd1419 \
- wd1682 \
- wd1683 \
- wd1684 \
- wd193 \
- wd279 \
- wd593 \
- wd810 \
- wd869 \
- wd981
- do
- CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if AC_TRY_EVAL(ac_compile); then
- test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
- EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
- fi
- done
- CFLAGS="$cf_save_CFLAGS"
-
-elif test "$GCC" = yes
-then
- AC_CHECKING([for $CC warning options])
- cf_save_CFLAGS="$CFLAGS"
- EXTRA_CFLAGS="-W -Wall"
- cf_warn_CONST=""
- test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
- for cf_opt in \
- Wbad-function-cast \
- Wcast-align \
- Wcast-qual \
- Winline \
- Wmissing-declarations \
- Wmissing-prototypes \
- Wnested-externs \
- Wpointer-arith \
- Wshadow \
- Wstrict-prototypes \
- Wundef $cf_warn_CONST $1
- do
- CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if AC_TRY_EVAL(ac_compile); then
- test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
- case $cf_opt in #(vi
- Wcast-qual) #(vi
- CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
- ;;
- Winline) #(vi
- case $GCC_VERSION in
- 3.3*)
- CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
- continue;;
- esac
- ;;
- esac
- EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
- fi
- done
- CFLAGS="$cf_save_CFLAGS"
-fi
-rm -f conftest*
-
-AC_SUBST(EXTRA_CFLAGS)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_GNU_SOURCE version: 6 updated: 2005/07/09 13:23:07
-dnl -------------
-dnl Check if we must define _GNU_SOURCE to get a reasonable value for
-dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect
-dnl (or misfeature) of glibc2, which breaks portability of many applications,
-dnl since it is interwoven with GNU extensions.
-dnl
-dnl Well, yes we could work around it...
-AC_DEFUN([CF_GNU_SOURCE],
-[
-AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
-AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifndef _XOPEN_SOURCE
-make an error
-#endif],
- [cf_cv_gnu_source=no],
- [cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
- AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifdef _XOPEN_SOURCE
-make an error
-#endif],
- [cf_cv_gnu_source=no],
- [cf_cv_gnu_source=yes])
- CPPFLAGS="$cf_save"
- ])
-])
-test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_HELP_MESSAGE version: 3 updated: 1998/01/14 10:56:23
-dnl ---------------
-dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
-AC_DEFUN([CF_HELP_MESSAGE],
-[AC_DIVERT_HELP([$1])dnl
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_IMAKE_CFLAGS version: 27 updated: 2005/04/05 18:26:15
-dnl ---------------
-dnl Use imake to obtain compiler flags. We could, in principle, write tests to
-dnl get these, but if imake is properly configured there is no point in doing
-dnl this.
-dnl
-dnl Parameters (used in constructing a sample Imakefile):
-dnl $1 = optional value to append to $IMAKE_CFLAGS
-dnl $2 = optional value to append to $IMAKE_LOADFLAGS
-AC_DEFUN([CF_IMAKE_CFLAGS],
-[
-AC_PATH_PROGS(IMAKE,xmkmf imake)
-
-if test -n "$IMAKE" ; then
-
-case $IMAKE in # (vi
-*/imake)
- cf_imake_opts="-DUseInstalled=YES" # (vi
- ;;
-*/util/xmkmf)
- # A single parameter tells xmkmf where the config-files are:
- cf_imake_opts="`echo $IMAKE|sed -e s,/config/util/xmkmf,,`" # (vi
- ;;
-*)
- cf_imake_opts=
- ;;
-esac
-
-# If it's installed properly, imake (or its wrapper, xmkmf) will point to the
-# config directory.
-if mkdir conftestdir; then
- CDPATH=; export CDPATH
- cf_makefile=`cd $srcdir;pwd`/Imakefile
- cd conftestdir
-
- cat >fix_cflags.sed <<'CF_EOF'
-s/\\//g
-s/"//g
-s/\(-D[[a-zA-Z0-9_]][[a-zA-Z0-9_]]*\)=\([[^\\'"0-9 ]][[^ ]]*\([[ ]][[ ]]*[[^- ]][[^ ]]*\)*\)/\1='\\"\2\\"'/g
-s/\(-D[[a-zA-Z0-9_]][[a-zA-Z0-9_]]*\)=\([[^\\'"0-9 ]][[^ ]]*\)[[ ]]/\1='\\"\2\\"' /g
-s/\(-D[[a-zA-Z0-9_]][[a-zA-Z0-9_]]*\)=\([[^\\'"0-9 ]][[^ ]]*\)$/\1='\\"\2\\"'/g
-s/^IMAKE[[ ]]*/IMAKE_CFLAGS="/
-s/$/"/
-CF_EOF
-
- cat >fix_lflags.sed <<'CF_EOF'
-s/^IMAKE[[ ]]*/IMAKE_LOADFLAGS="/
-s/$/"/
-CF_EOF
-
- echo >./Imakefile
- test -f $cf_makefile && cat $cf_makefile >>./Imakefile
-
- cat >> ./Imakefile <<'CF_EOF'
-findstddefs:
- @echo IMAKE $(ALLDEFINES)ifelse($1,,,[ $1]) | sed -f fix_cflags.sed
- @echo IMAKE $(EXTRA_LOAD_FLAGS)ifelse($2,,,[ $2]) | sed -f fix_lflags.sed
-CF_EOF
-
- if ( $IMAKE $cf_imake_opts 1>/dev/null 2>&AC_FD_CC && test -f Makefile)
- then
- CF_VERBOSE(Using $IMAKE $cf_imake_opts)
- else
- # sometimes imake doesn't have the config path compiled in. Find it.
- cf_config=
- for cf_libpath in $X_LIBS $LIBS ; do
- case $cf_libpath in # (vi
- -L*)
- cf_libpath=`echo .$cf_libpath | sed -e 's/^...//'`
- cf_libpath=$cf_libpath/X11/config
- if test -d $cf_libpath ; then
- cf_config=$cf_libpath
- break
- fi
- ;;
- esac
- done
- if test -z "$cf_config" ; then
- AC_WARN(Could not find imake config-directory)
- else
- cf_imake_opts="$cf_imake_opts -I$cf_config"
- if ( $IMAKE -v $cf_imake_opts 2>&AC_FD_CC)
- then
- CF_VERBOSE(Using $IMAKE $cf_config)
- else
- AC_WARN(Cannot run $IMAKE)
- fi
- fi
- fi
-
- # GNU make sometimes prints "make[1]: Entering...", which
- # would confuse us.
- eval `make findstddefs 2>/dev/null | grep -v make`
-
- cd ..
- rm -rf conftestdir
-
- # We use $(ALLDEFINES) rather than $(STD_DEFINES) because the former
- # declares XTFUNCPROTO there. However, some vendors (e.g., SGI) have
- # modified it to support site.cf, adding a kludge for the /usr/include
- # directory. Try to filter that out, otherwise gcc won't find its
- # headers.
- if test -n "$GCC" ; then
- if test -n "$IMAKE_CFLAGS" ; then
- cf_nostdinc=""
- cf_std_incl=""
- cf_cpp_opts=""
- for cf_opt in $IMAKE_CFLAGS
- do
- case "$cf_opt" in
- -nostdinc) #(vi
- cf_nostdinc="$cf_opt"
- ;;
- -I/usr/include) #(vi
- cf_std_incl="$cf_opt"
- ;;
- *) #(vi
- cf_cpp_opts="$cf_cpp_opts $cf_opt"
- ;;
- esac
- done
- if test -z "$cf_nostdinc" ; then
- IMAKE_CFLAGS="$cf_cpp_opts $cf_std_incl"
- elif test -z "$cf_std_incl" ; then
- IMAKE_CFLAGS="$cf_cpp_opts $cf_nostdinc"
- else
- CF_VERBOSE(suppressed \"$cf_nostdinc\" and \"$cf_std_incl\")
- IMAKE_CFLAGS="$cf_cpp_opts"
- fi
- fi
- fi
-fi
-
-# Some imake configurations define PROJECTROOT with an empty value. Remove
-# the empty definition.
-case $IMAKE_CFLAGS in
-*-DPROJECTROOT=/*)
- ;;
-*)
- IMAKE_CFLAGS=`echo "$IMAKE_CFLAGS" |sed -e "s,-DPROJECTROOT=[[ ]], ,"`
- ;;
-esac
-
-fi
-
-CF_VERBOSE(IMAKE_CFLAGS $IMAKE_CFLAGS)
-CF_VERBOSE(IMAKE_LOADFLAGS $IMAKE_LOADFLAGS)
-
-AC_SUBST(IMAKE_CFLAGS)
-AC_SUBST(IMAKE_LOADFLAGS)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_INPUT_METHOD version: 3 updated: 2000/04/11 23:46:57
-dnl ---------------
-dnl Check if the X libraries support input-method
-AC_DEFUN([CF_INPUT_METHOD],
-[
-AC_CACHE_CHECK([if X libraries support input-method],cf_cv_input_method,[
-AC_TRY_LINK([
-#include <X11/IntrinsicP.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/Xmu/Atoms.h>
-#include <X11/Xmu/Converters.h>
-#include <X11/Xaw/XawImP.h>
-],[
-{
- XIM xim;
- XIMStyles *xim_styles = 0;
- XIMStyle input_style;
- Widget w = 0;
-
- XSetLocaleModifiers("@im=none");
- xim = XOpenIM(XtDisplay(w), NULL, NULL, NULL);
- XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL);
- XCloseIM(xim);
- input_style = (XIMPreeditNothing | XIMStatusNothing);
-}
-],
-[cf_cv_input_method=yes],
-[cf_cv_input_method=no])])
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_INTEL_COMPILER version: 3 updated: 2005/08/06 18:37:29
-dnl -----------------
-dnl Check if the given compiler is really the Intel compiler for Linux. It
-dnl tries to imitate gcc, but does not return an error when it finds a mismatch
-dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
-dnl
-dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
-dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from
-dnl the wrappers for gcc and g++ warnings.
-dnl
-dnl $1 = GCC (default) or GXX
-dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
-dnl $3 = CFLAGS (default) or CXXFLAGS
-AC_DEFUN([CF_INTEL_COMPILER],[
-ifelse($2,,INTEL_COMPILER,[$2])=no
-
-if test "$ifelse($1,,[$1],GCC)" = yes ; then
- case $host_os in
- linux*|gnu*)
- AC_MSG_CHECKING(if this is really Intel ifelse($1,GXX,C++,C) compiler)
- cf_save_CFLAGS="$ifelse($3,,CFLAGS,[$3])"
- ifelse($3,,CFLAGS,[$3])="$ifelse($3,,CFLAGS,[$3]) -no-gcc"
- AC_TRY_COMPILE([],[
-#ifdef __INTEL_COMPILER
-#else
-make an error
-#endif
-],[ifelse($2,,INTEL_COMPILER,[$2])=yes
-cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
-],[])
- ifelse($3,,CFLAGS,[$3])="$cf_save_CFLAGS"
- AC_MSG_RESULT($ifelse($2,,INTEL_COMPILER,[$2]))
- ;;
- esac
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_LASTLOG version: 4 updated: 2002/10/27 23:21:42
-dnl ----------
-dnl Check for header defining _PATH_LASTLOG, or failing that, see if the lastlog
-dnl file exists.
-AC_DEFUN([CF_LASTLOG],
-[
-AC_CHECK_HEADERS(lastlog.h paths.h)
-AC_CACHE_CHECK(for lastlog path,cf_cv_path_lastlog,[
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#ifdef HAVE_LASTLOG_H
-#include <lastlog.h>
-#else
-#ifdef HAVE_PATHS_H
-#include <paths.h>
-#endif
-#endif],[char *path = _PATH_LASTLOG],
- [cf_cv_path_lastlog="_PATH_LASTLOG"],
- [if test -f /usr/adm/lastlog ; then
- cf_cv_path_lastlog=/usr/adm/lastlog
- else
- cf_cv_path_lastlog=no
- fi])
-])
-test $cf_cv_path_lastlog != no && AC_DEFINE(USE_LASTLOG)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_MSG_LOG version: 3 updated: 1997/09/07 14:05:52
-dnl ----------
-dnl Write a debug message to config.log, along with the line number in the
-dnl configure script.
-AC_DEFUN([CF_MSG_LOG],[
-echo "(line __oline__) testing $* ..." 1>&AC_FD_CC
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_PATH_PROG version: 6 updated: 2004/01/26 20:58:41
-dnl ------------
-dnl Check for a given program, defining corresponding symbol.
-dnl $1 = environment variable, which is suffixed by "_PATH" in the #define.
-dnl $2 = program name to find.
-dnl $3 = optional list of additional program names to test.
-dnl
-dnl If there is more than one token in the result, #define the remaining tokens
-dnl to $1_ARGS. We need this for 'install' in particular.
-dnl
-dnl FIXME: we should allow this to be overridden by environment variables
-dnl
-AC_DEFUN([CF_PATH_PROG],[
-test -z "[$]$1" && $1=$2
-AC_PATH_PROGS($1,[$]$1 $2 $3,[$]$1)
-
-cf_path_prog=""
-cf_path_args=""
-IFS="${IFS= }"; cf_save_ifs="$IFS"
-case $host_os in #(vi
-os2*) #(vi
- IFS="${IFS};"
- ;;
-*)
- IFS="${IFS}:"
- ;;
-esac
-
-for cf_temp in $ac_cv_path_$1
-do
- if test -z "$cf_path_prog" ; then
- if test "$with_full_paths" = yes ; then
- CF_PATH_SYNTAX(cf_temp,break)
- cf_path_prog="$cf_temp"
- else
- cf_path_prog="`basename $cf_temp`"
- fi
- elif test -z "$cf_path_args" ; then
- cf_path_args="$cf_temp"
- else
- cf_path_args="$cf_path_args $cf_temp"
- fi
-done
-IFS="$cf_save_ifs"
-
-if test -n "$cf_path_prog" ; then
- CF_MSG_LOG(defining path for ${cf_path_prog})
- AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog")
- test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args")
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_PATH_SYNTAX version: 9 updated: 2002/09/17 23:03:38
-dnl --------------
-dnl Check the argument to see that it looks like a pathname. Rewrite it if it
-dnl begins with one of the prefix/exec_prefix variables, and then again if the
-dnl result begins with 'NONE'. This is necessary to work around autoconf's
-dnl delayed evaluation of those symbols.
-AC_DEFUN([CF_PATH_SYNTAX],[
-case ".[$]$1" in #(vi
-.\[$]\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[[a-zA-Z]]:[[\\/]]*) #(vi OS/2 EMX
- ;;
-.\[$]{*prefix}*) #(vi
- eval $1="[$]$1"
- case ".[$]$1" in #(vi
- .NONE/*)
- $1=`echo [$]$1 | sed -e s%NONE%$ac_default_prefix%`
- ;;
- esac
- ;; #(vi
-.NONE/*)
- $1=`echo [$]$1 | sed -e s%NONE%$ac_default_prefix%`
- ;;
-*)
- ifelse($2,,[AC_ERROR([expected a pathname, not \"[$]$1\"])],$2)
- ;;
-esac
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_POSIX_C_SOURCE version: 6 updated: 2005/07/14 20:25:10
-dnl -----------------
-dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
-dnl
-dnl POSIX.1-1990 _POSIX_SOURCE
-dnl POSIX.1-1990 and _POSIX_SOURCE and
-dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2
-dnl Bindings Option
-dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L
-dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L
-dnl X/Open 2000 _POSIX_C_SOURCE=200112L
-dnl
-dnl Parameters:
-dnl $1 is the nominal value for _POSIX_C_SOURCE
-AC_DEFUN([CF_POSIX_C_SOURCE],
-[
-cf_POSIX_C_SOURCE=ifelse($1,,199506L,$1)
-
-cf_save_CFLAGS="$CFLAGS"
-cf_save_CPPFLAGS="$CPPFLAGS"
-
-CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
-CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
-
-AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
- CF_MSG_LOG(if the symbol is already defined go no further)
- AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifndef _POSIX_C_SOURCE
-make an error
-#endif],
- [cf_cv_posix_c_source=no],
- [cf_want_posix_source=no
- case .$cf_POSIX_C_SOURCE in #(vi
- .[[12]]??*) #(vi
- cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
- ;;
- .2) #(vi
- cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
- cf_want_posix_source=yes
- ;;
- .*)
- cf_want_posix_source=yes
- ;;
- esac
- if test "$cf_want_posix_source" = yes ; then
- AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifdef _POSIX_SOURCE
-make an error
-#endif],[],
- cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
- fi
- CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
- CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
- CF_MSG_LOG(if the second compile does not leave our definition intact error)
- AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifndef _POSIX_C_SOURCE
-make an error
-#endif],,
- [cf_cv_posix_c_source=no])
- CFLAGS="$cf_save_CFLAGS"
- CPPFLAGS="$cf_save_CPPFLAGS"
- ])
-])
-
-if test "$cf_cv_posix_c_source" != no ; then
- CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS"
- if test "$cf_cv_cc_u_d_options" = yes ; then
- cf_temp_posix_c_source=`echo "$cf_cv_posix_c_source" | \
- sed -e 's/-D/-U/g' -e 's/=[[^ ]]*//g'`
- CPPFLAGS="$CPPFLAGS $cf_temp_posix_c_source"
- fi
- CPPFLAGS="$CPPFLAGS $cf_cv_posix_c_source"
-fi
-
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_POSIX_WAIT version: 2 updated: 2000/05/29 16:16:04
-dnl -------------
-dnl Check for POSIX wait support
-AC_DEFUN([CF_POSIX_WAIT],
-[
-AC_REQUIRE([AC_HEADER_SYS_WAIT])
-AC_CACHE_CHECK(for POSIX wait functions,cf_cv_posix_wait,[
-AC_TRY_LINK([
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-],[
- int stat_loc;
- pid_t pid = waitpid(-1, &stat_loc, WNOHANG|WUNTRACED);
- pid_t pid2 = wait(&stat_loc);
-],
-[cf_cv_posix_wait=yes],
-[cf_cv_posix_wait=no])
-])
-test "$cf_cv_posix_wait" = yes && AC_DEFINE(USE_POSIX_WAIT)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_PROG_CC_U_D version: 1 updated: 2005/07/14 16:59:30
-dnl --------------
-dnl Check if C (preprocessor) -U and -D options are processed in the order
-dnl given rather than by type of option. Some compilers insist on apply all
-dnl of the -U options after all of the -D options. Others allow mixing them,
-dnl and may predefine symbols that conflict with those we define.
-AC_DEFUN([CF_PROG_CC_U_D],
-[
-AC_CACHE_CHECK(if $CC -U and -D options work together,cf_cv_cc_u_d_options,[
- cf_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-UU_D_OPTIONS -DU_D_OPTIONS -DD_U_OPTIONS -UD_U_OPTIONS"
- AC_TRY_COMPILE([],[
-#ifndef U_D_OPTIONS
-make an undefined-error
-#endif
-#ifdef D_U_OPTIONS
-make a defined-error
-#endif
- ],[
- cf_cv_cc_u_d_options=yes],[
- cf_cv_cc_u_d_options=no])
- CPPFLAGS="$cf_save_CPPFLAGS"
-])
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_PROG_EXT version: 10 updated: 2004/01/03 19:28:18
-dnl -----------
-dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX.
-AC_DEFUN([CF_PROG_EXT],
-[
-AC_REQUIRE([CF_CHECK_CACHE])
-case $cf_cv_system_name in
-os2*)
- CFLAGS="$CFLAGS -Zmt"
- CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__"
- CXXFLAGS="$CXXFLAGS -Zmt"
- # autoconf's macro sets -Zexe and suffix both, which conflict:w
- LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
- ac_cv_exeext=.exe
- ;;
-esac
-
-AC_EXEEXT
-AC_OBJEXT
-
-PROG_EXT="$EXEEXT"
-AC_SUBST(PROG_EXT)
-test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT")
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_REMOVE_DEFINE version: 2 updated: 2005/07/09 16:12:18
-dnl ----------------
-dnl Remove all -U and -D options that refer to the given symbol from a list
-dnl of C compiler options. This works around the problem that not all
-dnl compilers process -U and -D options from left-to-right, so a -U option
-dnl cannot be used to cancel the effect of a preceding -D option.
-dnl
-dnl $1 = target (which could be the same as the source variable)
-dnl $2 = source (including '$')
-dnl $3 = symbol to remove
-define([CF_REMOVE_DEFINE],
-[
-# remove $3 symbol from $2
-$1=`echo "$2" | \
- sed -e 's/-[[UD]]$3\(=[[^ ]]*\)\?[[ ]]/ /g' \
- -e 's/-[[UD]]$3\(=[[^ ]]*\)\?[$]//g'`
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_SIG_ATOMIC_T version: 2 updated: 2005/09/18 17:27:12
-dnl ---------------
-dnl signal handler, but there are some gcc depedencies in that recommendation.
-dnl Try anyway.
-AC_DEFUN([CF_SIG_ATOMIC_T],
-[
-AC_MSG_CHECKING(for signal global datatype)
-AC_CACHE_VAL(cf_cv_sig_atomic_t,[
- for cf_type in \
- "volatile sig_atomic_t" \
- "sig_atomic_t" \
- "int"
- do
- AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <signal.h>
-#include <stdio.h>
-
-extern $cf_type x;
-$cf_type x;
-static void handler(int sig)
-{
- x = 5;
-}],
- [signal(SIGINT, handler);
- x = 1],
- [cf_cv_sig_atomic_t=$cf_type],
- [cf_cv_sig_atomic_t=no])
- test "$cf_cv_sig_atomic_t" != no && break
- done
- ])
-AC_MSG_RESULT($cf_cv_sig_atomic_t)
-test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_SIZE_T version: 4 updated: 2000/01/22 00:19:54
-dnl ---------
-dnl On both Ultrix and CLIX, I find size_t defined in <stdio.h>
-AC_DEFUN([CF_SIZE_T],
-[
-AC_MSG_CHECKING(for size_t in <sys/types.h> or <stdio.h>)
-AC_CACHE_VAL(cf_cv_type_size_t,[
- AC_TRY_COMPILE([
-#include <sys/types.h>
-#ifdef STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#include <stdio.h>],
- [size_t x],
- [cf_cv_type_size_t=yes],
- [cf_cv_type_size_t=no])
- ])
-AC_MSG_RESULT($cf_cv_type_size_t)
-test $cf_cv_type_size_t = no && AC_DEFINE(size_t, unsigned)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_SVR4 version: 3 updated: 2000/05/31 10:16:52
-dnl -------
-dnl Check if this is an SVR4 system. We need the definition for xterm
-AC_DEFUN([CF_SVR4],
-[
-AC_CHECK_LIB(elf, elf_begin,[
-AC_CACHE_CHECK(if this is an SVR4 system, cf_cv_svr4,[
-AC_TRY_COMPILE([
-#include <elf.h>
-#include <sys/termio.h>
-],[
-static struct termio d_tio;
- d_tio.c_cc[VINTR] = 0;
- d_tio.c_cc[VQUIT] = 0;
- d_tio.c_cc[VERASE] = 0;
- d_tio.c_cc[VKILL] = 0;
- d_tio.c_cc[VEOF] = 0;
- d_tio.c_cc[VEOL] = 0;
- d_tio.c_cc[VMIN] = 0;
- d_tio.c_cc[VTIME] = 0;
- d_tio.c_cc[VLNEXT] = 0;
-],
-[cf_cv_svr4=yes],
-[cf_cv_svr4=no])
-])
-])
-test "$cf_cv_svr4" = yes && AC_DEFINE(SVR4)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_SYSV version: 10 updated: 2005/09/18 15:42:35
-dnl -------
-dnl Check if this is a SYSV platform, e.g., as used in <X11/Xos.h>, and whether
-dnl defining it will be helpful. The following features are used to check:
-dnl
-dnl a) bona-fide SVSY doesn't use const for sys_errlist[]. Since this is a
-dnl legacy (pre-ANSI) feature, const should not apply. Modern systems only
-dnl declare strerror(). Xos.h declares the legacy form of str_errlist[], and
-dnl a compile-time error will result from trying to assign to a const array.
-dnl
-dnl b) compile with headers that exist on SYSV hosts.
-dnl
-dnl c) compile with type definitions that differ on SYSV hosts from standard C.
-AC_DEFUN([CF_SYSV],
-[
-AC_CHECK_HEADERS( \
-stdlib.h \
-X11/Intrinsic.h \
-)
-
-AC_REQUIRE([CF_SYS_ERRLIST])
-
-AC_CACHE_CHECK(if we should define SYSV,cf_cv_sysv,[
-AC_TRY_COMPILE([
-#undef SYSV
-#define SYSV 1 /* get Xos.h to declare sys_errlist[] */
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h> /* look for wchar_t */
-#endif
-#ifdef HAVE_X11_INTRINSIC_H
-#include <X11/Intrinsic.h> /* Intrinsic.h has other traps... */
-#endif
-#include <curses.h>
-#include <term.h> /* eliminate most BSD hacks */
-#include <errno.h> /* declare sys_errlist on older systems */
-#include <sys/termio.h> /* eliminate most of the remaining ones */
-],[
-static struct termio d_tio;
- d_tio.c_cc[VINTR] = 0;
- d_tio.c_cc[VQUIT] = 0;
- d_tio.c_cc[VERASE] = 0;
- d_tio.c_cc[VKILL] = 0;
- d_tio.c_cc[VEOF] = 0;
- d_tio.c_cc[VEOL] = 0;
- d_tio.c_cc[VMIN] = 0;
- d_tio.c_cc[VTIME] = 0;
-#if defined(HAVE_SYS_ERRLIST) && !defined(DECL_SYS_ERRLIST)
-sys_errlist[0] = ""; /* Cygwin mis-declares this */
-#endif
-],
-[cf_cv_sysv=yes],
-[cf_cv_sysv=no])
-])
-test "$cf_cv_sysv" = yes && AC_DEFINE(SYSV)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_SYSV_UTMP version: 5 updated: 2001/12/27 12:55:07
-dnl ------------
-dnl Check if this is a SYSV flavor of UTMP
-AC_DEFUN([CF_SYSV_UTMP],
-[
-AC_CACHE_CHECK(if $cf_cv_have_utmp is SYSV flavor,cf_cv_sysv_utmp,[
-test "$cf_cv_have_utmp" = "utmp" && cf_prefix="ut" || cf_prefix="utx"
-AC_TRY_LINK([
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>],[
-struct $cf_cv_have_utmp x;
- set${cf_prefix}ent ();
- get${cf_prefix}id(&x);
- put${cf_prefix}line(&x);
- end${cf_prefix}ent();],
- [cf_cv_sysv_utmp=yes],
- [cf_cv_sysv_utmp=no])
-])
-test $cf_cv_sysv_utmp = yes && AC_DEFINE(USE_SYSV_UTMP)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_SYS_ERRLIST version: 6 updated: 2001/12/30 13:03:23
-dnl --------------
-dnl Check for declaration of sys_nerr and sys_errlist in one of stdio.h and
-dnl errno.h. Declaration of sys_errlist on BSD4.4 interferes with our
-dnl declaration. Reported by Keith Bostic.
-AC_DEFUN([CF_SYS_ERRLIST],
-[
- CF_CHECK_ERRNO(sys_nerr)
- CF_CHECK_ERRNO(sys_errlist)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_TERMIO_C_ISPEED version: 2 updated: 2000/05/29 16:16:04
-dnl ------------------
-dnl Check for SGI's broken redefinition of baud rates introduced in IRIX 6.5
-dnl (there doesn't appear to be a useful predefined symbol).
-AC_DEFUN([CF_TERMIO_C_ISPEED],
-[
-AC_CACHE_CHECK(for IRIX 6.5 baud-rate redefinitions,cf_cv_termio_c_ispeed,[
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/termio.h>],[
-struct termio foo;
-foo.c_ispeed = B38400;
-foo.c_ospeed = B9600;
-],[cf_cv_termio_c_ispeed=yes
-],[cf_cv_termio_c_ispeed=no])
-])
-test "$cf_cv_termio_c_ispeed" = yes && AC_DEFINE(HAVE_TERMIO_C_ISPEED)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_TTY_GROUP version: 5 updated: 2003/03/19 23:52:35
-dnl ------------
-dnl Check if the system has a tty-group defined. This is used in xterm when
-dnl setting pty ownership.
-AC_DEFUN([CF_TTY_GROUP],
-[
-AC_CACHE_CHECK(for tty group name,cf_cv_tty_group_name,[
-
-# If we are configuring as root, it is hard to get a clue about the tty group.
-# But we'll guess based on how our connection is set up - assuming it is done
-# properly.
-
-cf_uid=`id | sed -e 's/^[^=]*=//' -e 's/(.*$//'`
-if test "$cf_uid" != 0 ; then
-cf_cv_tty_group_name=
-cf_tty_name=`tty`
-test "$cf_tty_name" = "not a tty" && cf_tty_name=/dev/tty
-test -z "$cf_tty_name" && cf_tty_name=/dev/tty
-if test -c "$cf_tty_name"
-then
- cf_option="-l -L"
-
- # Expect listing to have fields like this:
- #-rwxrwxrwx 1 user group 34293 Jul 18 16:29 pathname
- ls $cf_option $cf_tty_name >conftest.out
- read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out
- if test -z "$cf_rest" ; then
- cf_option="$cf_option -g"
- ls $cf_option $cf_tty_name >conftest.out
- read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out
- fi
- rm -f conftest.out
- cf_cv_tty_group_name=$cf_grp
-fi
-fi
-
-# If we cannot deduce the tty group, fall back on hardcoded cases
-
-if test -z "$cf_cv_tty_group_name"
-then
-case $host_os in #(vi
-osf*) #(vi
- cf_cv_tty_group_name="terminal"
- ;;
-*)
- cf_cv_tty_group_name="unknown"
- if ( egrep '^tty:' /etc/group 2>/dev/null 1>/dev/null ) then
- cf_cv_tty_group_name="tty"
- fi
- ;;
-esac
-fi
-])
-
-AC_DEFINE_UNQUOTED(TTY_GROUP_NAME,"$cf_cv_tty_group_name")
-
-# This is only a double-check that the group-name we obtained above really
-# does apply to the device. We cannot perform this test if we are in batch
-# mode, or if we are cross-compiling.
-
-AC_CACHE_CHECK(if we may use $cf_cv_tty_group_name group,cf_cv_tty_group,[
-cf_tty_name=`tty`
-if test "$cf_tty_name" != "not a tty"
-then
-AC_TRY_RUN([
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <grp.h>
-int main()
-{
- struct stat sb;
- struct group *ttygrp = getgrnam(TTY_GROUP_NAME);
- char *name = ttyname(0);
-
- endgrent();
- if (ttygrp != 0
- && name != 0
- && stat(name, &sb) == 0
- && sb.st_gid != getgid()
- && sb.st_gid == ttygrp->gr_gid) {
- exit(0);
- }
- exit(1);
-}
- ],
- [cf_cv_tty_group=yes],
- [cf_cv_tty_group=no],
- [cf_cv_tty_group=unknown])
-elif test "$cross_compiling" = yes; then
- cf_cv_tty_group=unknown
-else
- cf_cv_tty_group=yes
-fi
-])
-test $cf_cv_tty_group = yes && AC_DEFINE(USE_TTY_GROUP)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_TYPE_FD_SET version: 3 updated: 1999/10/16 13:49:00
-dnl --------------
-dnl Check for the declaration of fd_set. Some platforms declare it in
-dnl <sys/types.h>, and some in <sys/select.h>, which requires <sys/types.h>.
-dnl Finally, if we are using this for an X application, Xpoll.h may include
-dnl <sys/select.h>, so we don't want to do it twice.
-AC_DEFUN([CF_TYPE_FD_SET],
-[
-AC_CACHE_CHECK(for declaration of fd_set,cf_cv_type_fd_set,
- [echo "trying sys/types alone" 1>&AC_FD_CC
-AC_TRY_COMPILE([
-#include <sys/types.h>],
- [fd_set x],
- [cf_cv_type_fd_set=sys/types.h],
- [echo "trying X11/Xpoll.h" 1>&AC_FD_CC
-AC_TRY_COMPILE([
-#ifdef HAVE_X11_XPOLL_H
-#include <X11/Xpoll.h>
-#endif],
- [fd_set x],
- [cf_cv_type_fd_set=X11/Xpoll.h],
- [echo "trying sys/select.h" 1>&AC_FD_CC
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/select.h>],
- [fd_set x],
- [cf_cv_type_fd_set=sys/select.h],
- [cf_cv_type_fd_set=unknown])])])])
-if test $cf_cv_type_fd_set = sys/select.h ; then
- AC_DEFINE(USE_SYS_SELECT_H)
-fi
-])
-dnl ---------------------------------------------------------------------------
-dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
-dnl --------
-dnl Make an uppercase version of a variable
-dnl $1=uppercase($2)
-AC_DEFUN([CF_UPPER],
-[
-$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_UTEMPTER version: 2 updated: 2000/01/22 22:50:59
-dnl -----------
-dnl Try to link with utempter library
-AC_DEFUN([CF_UTEMPTER],
-[
-AC_CACHE_CHECK(if we can link with utempter library,cf_cv_have_utempter,[
-cf_save_LIBS="$LIBS"
-LIBS="-lutempter $LIBS"
-AC_TRY_LINK([
-#include <utempter.h>
-],[
- addToUtmp("/dev/tty", 0, 1);
- removeFromUtmp();
-],[
- cf_cv_have_utempter=yes],[
- cf_cv_have_utempter=no])
-LIBS="$cf_save_LIBS"
-])
-if test "$cf_cv_have_utempter" = yes ; then
- AC_DEFINE(USE_UTEMPTER)
- LIBS="-lutempter $LIBS"
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_UTMP version: 8 updated: 2002/10/27 23:21:42
-dnl -------
-dnl Check for UTMP/UTMPX headers
-AC_DEFUN([CF_UTMP],
-[
-AC_REQUIRE([CF_LASTLOG])
-
-AC_CACHE_CHECK(for utmp implementation,cf_cv_have_utmp,[
- cf_cv_have_utmp=no
-for cf_header in utmpx utmp ; do
-cf_utmp_includes="
-#include <sys/types.h>
-#include <${cf_header}.h>
-#define getutent getutxent
-#ifdef USE_LASTLOG
-#include <lastlog.h> /* may conflict with utmpx.h on Linux */
-#endif
-"
- AC_TRY_COMPILE([$cf_utmp_includes],
- [struct $cf_header x;
- char *name = x.ut_name; /* utmp.h and compatible definitions */
- ],
- [cf_cv_have_utmp=$cf_header
- break],
- [
- AC_TRY_COMPILE([$cf_utmp_includes],
- [struct $cf_header x;
- char *name = x.ut_user; /* utmpx.h must declare this */
- ],
- [cf_cv_have_utmp=$cf_header
- break
- ])])
-done
-])
-
-if test $cf_cv_have_utmp != no ; then
- AC_DEFINE(HAVE_UTMP)
- test $cf_cv_have_utmp = utmpx && AC_DEFINE(UTMPX_FOR_UTMP)
- CF_UTMP_UT_HOST
- CF_UTMP_UT_NAME
- CF_UTMP_UT_XSTATUS
- CF_UTMP_UT_XTIME
- CF_UTMP_UT_SESSION
- CF_SYSV_UTMP
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_UTMP_GROUP version: 1 updated: 2005/10/06 20:29:29
-dnl -------------
-dnl Find the utmp/utmpx file and determine its group to allow setgid programs
-dnl to manipulate it, e.g., when there is no intermediary.
-AC_DEFUN([CF_UTMP_GROUP],[
-AC_REQUIRE([CF_UTMP])
-if test $cf_cv_have_utmp != no ; then
-AC_CACHE_CHECK(for utmp/utmpx group,cf_cv_utmp_group,[
-for cf_utmp_path in /var/adm /var/run
-do
- for cf_utmp_file in utmpx utmp
- do
- if test -f $cf_utmp_path/$cf_utmp_file
- then
- cf_cv_utmp_group=root
-
- cf_option="-l -L"
-
- # Expect listing to have fields like this:
- #-r--r--r-- 1 user group 34293 Jul 18 16:29 pathname
- ls $cf_option $cf_utmp_path/$cf_utmp_file >conftest
- read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest
- if test -z "$cf_rest" ; then
- cf_option="$cf_option -g"
- ls $cf_option $cf_utmp_path/$cf_utmp_file >conftest
- read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest
- fi
- rm -f conftest
-
- # If we have a pathname, and the date fields look right, assume we've
- # captured the group as well.
- if test -n "$cf_rest" ; then
- cf_test=`echo "${cf_date2}${cf_date3}" | sed -e 's/[[0-9:]]//g'`
- if test -z "$cf_test" ; then
- cf_cv_utmp_group=$cf_grp;
- fi
- fi
- break
- fi
- done
- test -n "$cf_cv_utmp_group" && break
-done
-])
-else
- AC_MSG_ERROR(cannot find utmp group)
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_UTMP_UT_HOST version: 6 updated: 2002/10/27 23:21:42
-dnl ---------------
-dnl Check if UTMP/UTMPX struct defines ut_host member
-AC_DEFUN([CF_UTMP_UT_HOST],
-[
-if test $cf_cv_have_utmp != no ; then
-AC_MSG_CHECKING(if utmp.ut_host is declared)
-AC_CACHE_VAL(cf_cv_have_utmp_ut_host,[
- AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>],
- [struct $cf_cv_have_utmp x; char *y = &x.ut_host[0]],
- [cf_cv_have_utmp_ut_host=yes],
- [cf_cv_have_utmp_ut_host=no])
- ])
-AC_MSG_RESULT($cf_cv_have_utmp_ut_host)
-test $cf_cv_have_utmp_ut_host != no && AC_DEFINE(HAVE_UTMP_UT_HOST)
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_UTMP_UT_NAME version: 3 updated: 2002/10/27 23:21:42
-dnl ---------------
-dnl Check if UTMP/UTMPX struct defines ut_name member
-AC_DEFUN([CF_UTMP_UT_NAME],
-[
-if test $cf_cv_have_utmp != no ; then
-AC_CACHE_CHECK(if utmp.ut_name is declared,cf_cv_have_utmp_ut_name,[
- cf_cv_have_utmp_ut_name=no
-cf_utmp_includes="
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>
-#define getutent getutxent
-#ifdef USE_LASTLOG
-#include <lastlog.h> /* may conflict with utmpx.h on Linux */
-#endif
-"
-for cf_header in ut_name ut_user ; do
- AC_TRY_COMPILE([$cf_utmp_includes],
- [struct $cf_cv_have_utmp x;
- char *name = x.$cf_header;
- ],
- [cf_cv_have_utmp_ut_name=$cf_header
- break])
-done
-])
-
-case $cf_cv_have_utmp_ut_name in #(vi
-no) #(vi
- AC_MSG_ERROR(Cannot find declaration for ut.ut_name)
- ;;
-ut_user)
- AC_DEFINE(ut_name,ut_user)
- ;;
-esac
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_UTMP_UT_SESSION version: 4 updated: 2002/10/27 23:21:42
-dnl ------------------
-dnl Check if UTMP/UTMPX struct defines ut_session member
-AC_DEFUN([CF_UTMP_UT_SESSION],
-[
-if test $cf_cv_have_utmp != no ; then
-AC_CACHE_CHECK(if utmp.ut_session is declared, cf_cv_have_utmp_ut_session,[
- AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>],
- [struct $cf_cv_have_utmp x; long y = x.ut_session],
- [cf_cv_have_utmp_ut_session=yes],
- [cf_cv_have_utmp_ut_session=no])
-])
-if test $cf_cv_have_utmp_ut_session != no ; then
- AC_DEFINE(HAVE_UTMP_UT_SESSION)
-fi
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_UTMP_UT_XSTATUS version: 3 updated: 2001/12/27 12:55:07
-dnl ------------------
-dnl Check for known variants on the UTMP/UTMPX struct's exit-status as reported
-dnl by various people:
-dnl
-dnl ut_exit.__e_exit (HPUX 11 - David Ellement, also in glibc2)
-dnl ut_exit.e_exit (SVR4)
-dnl ut_exit.ut_e_exit (os390 - Greg Smith)
-dnl ut_exit.ut_exit (Tru64 4.0f - Jeremie Petit, 4.0e - Tomas Vanhala)
-dnl
-dnl Note: utmp_xstatus is not a conventional compatibility definition in the
-dnl system header files.
-AC_DEFUN([CF_UTMP_UT_XSTATUS],
-[
-if test $cf_cv_have_utmp != no ; then
-AC_CACHE_CHECK(for exit-status in $cf_cv_have_utmp,cf_cv_have_utmp_ut_xstatus,[
-for cf_result in \
- ut_exit.__e_exit \
- ut_exit.e_exit \
- ut_exit.ut_e_exit \
- ut_exit.ut_exit
-do
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>],
- [struct $cf_cv_have_utmp x; long y = x.$cf_result = 0],
- [cf_cv_have_utmp_ut_xstatus=$cf_result
- break],
- [cf_cv_have_utmp_ut_xstatus=no])
-done
-])
-if test $cf_cv_have_utmp_ut_xstatus != no ; then
- AC_DEFINE(HAVE_UTMP_UT_XSTATUS)
- AC_DEFINE_UNQUOTED(ut_xstatus,$cf_cv_have_utmp_ut_xstatus)
-fi
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_UTMP_UT_XTIME version: 6 updated: 2002/10/27 23:21:42
-dnl ----------------
-dnl Check if UTMP/UTMPX struct defines ut_xtime member
-AC_DEFUN([CF_UTMP_UT_XTIME],
-[
-if test $cf_cv_have_utmp != no ; then
-AC_CACHE_CHECK(if utmp.ut_xtime is declared, cf_cv_have_utmp_ut_xtime,[
- AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>],
- [struct $cf_cv_have_utmp x; long y = x.ut_xtime = 0],
- [cf_cv_have_utmp_ut_xtime=yes],
- [AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>],
- [struct $cf_cv_have_utmp x; long y = x.ut_tv.tv_sec],
- [cf_cv_have_utmp_ut_xtime=define],
- [cf_cv_have_utmp_ut_xtime=no])
- ])
-])
-if test $cf_cv_have_utmp_ut_xtime != no ; then
- AC_DEFINE(HAVE_UTMP_UT_XTIME)
- if test $cf_cv_have_utmp_ut_xtime = define ; then
- AC_DEFINE(ut_xtime,ut_tv.tv_sec)
- fi
-fi
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_VERBOSE version: 2 updated: 1997/09/05 10:45:14
-dnl ----------
-dnl Use AC_VERBOSE w/o the warnings
-AC_DEFUN([CF_VERBOSE],
-[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_WITH_IMAKE_CFLAGS version: 8 updated: 2005/11/02 15:04:41
-dnl --------------------
-dnl xterm and similar programs build more readily when propped up with imake's
-dnl hand-tuned definitions. If we do not use imake, provide fallbacks for the
-dnl most common definitions that we're not likely to do by autoconf tests.
-AC_DEFUN([CF_WITH_IMAKE_CFLAGS],[
-AC_REQUIRE([CF_ENABLE_NARROWPROTO])
-
-AC_MSG_CHECKING(if we should use imake to help)
-CF_ARG_DISABLE(imake,
- [ --disable-imake disable use of imake for definitions],
- [enable_imake=no],
- [enable_imake=yes])
-AC_MSG_RESULT($enable_imake)
-
-if test "$enable_imake" = yes ; then
- CF_IMAKE_CFLAGS(ifelse($1,,,$1))
-fi
-
-if test -n "$IMAKE" && test -n "$IMAKE_CFLAGS" ; then
- CF_ADD_CFLAGS($IMAKE_CFLAGS)
-else
- IMAKE_CFLAGS=
- IMAKE_LOADFLAGS=
- CF_VERBOSE(make fallback definitions)
-
- # We prefer config.guess' values when we can get them, to avoid
- # inconsistent results with uname (AIX for instance). However,
- # config.guess is not always consistent either.
- case $host_os in
- *[[0-9]].[[0-9]]*)
- UNAME_RELEASE="$host_os"
- ;;
- *)
- UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
- ;;
- esac
-
- case .$UNAME_RELEASE in
- *[[0-9]].[[0-9]]*)
- OSMAJORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[[^0-9]]*//' -e 's/\..*//'`
- OSMINORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[[^0-9]]*//' -e 's/^[[^.]]*\.//' -e 's/\..*//' -e 's/[[^0-9]].*//' `
- test -z "$OSMAJORVERSION" && OSMAJORVERSION=1
- test -z "$OSMINORVERSION" && OSMINORVERSION=0
- IMAKE_CFLAGS="-DOSMAJORVERSION=$OSMAJORVERSION -DOSMINORVERSION=$OSMINORVERSION $IMAKE_CFLAGS"
- ;;
- esac
-
- # FUNCPROTO is standard with X11R6, but XFree86 drops it, leaving some
- # fallback/fragments for NeedPrototypes, etc.
- IMAKE_CFLAGS="-DFUNCPROTO=15 $IMAKE_CFLAGS"
-
- # If this is not set properly, Xaw's scrollbars will not work
- if test "$enable_narrowproto" = yes ; then
- IMAKE_CFLAGS="-DNARROWPROTO=1 $IMAKE_CFLAGS"
- fi
-
- # Other special definitions:
- case $host_os in
- aix*)
- # imake on AIX 5.1 defines AIXV3. really.
- IMAKE_CFLAGS="-DAIXV3 -DAIXV4 $IMAKE_CFLAGS"
- ;;
- irix[[56]].*) #(vi
- # these are needed to make SIGWINCH work in xterm
- IMAKE_CFLAGS="-DSYSV -DSVR4 $IMAKE_CFLAGS"
- ;;
- esac
-
- CF_ADD_CFLAGS($IMAKE_CFLAGS)
-
- AC_SUBST(IMAKE_CFLAGS)
- AC_SUBST(IMAKE_LOADFLAGS)
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PATH version: 6 updated: 1998/10/11 00:40:17
-dnl ------------
-dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just
-dnl defaulting to yes/no.
-dnl
-dnl $1 = option name
-dnl $2 = help-text
-dnl $3 = environment variable to set
-dnl $4 = default value, shown in the help-message, must be a constant
-dnl $5 = default value, if it's an expression & cannot be in the help-message
-dnl
-AC_DEFUN([CF_WITH_PATH],
-[AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),,
-ifelse($4,,[withval="${$3}"],[withval="${$3-ifelse($5,,$4,$5)}"]))dnl
-CF_PATH_SYNTAX(withval)
-eval $3="$withval"
-AC_SUBST($3)dnl
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_XKB_BELL_EXT version: 2 updated: 2003/05/18 17:28:57
-dnl ---------------
-dnl Check for XKB bell extension
-AC_DEFUN([CF_XKB_BELL_EXT],[
-AC_CACHE_CHECK(for XKB Bell extension, cf_cv_xkb_bell_ext,[
-AC_TRY_LINK([
-#include <X11/XKBlib.h> /* has the prototype */
-#include <X11/extensions/XKBbells.h> /* has the XkbBI_xxx definitions */
-],[
-int x = XkbBI_Info
- |XkbBI_MinorError
- |XkbBI_MajorError
- |XkbBI_TerminalBell
- |XkbBI_MarginBell;
-],[cf_cv_xkb_bell_ext=yes],[cf_cv_xkb_bell_ext=no])
-])
-
-test "$cf_cv_xkb_bell_ext" = yes && AC_DEFINE(HAVE_XKB_BELL_EXT)
-])
-dnl ---------------------------------------------------------------------------
-dnl CF_XOPEN_SOURCE version: 23 updated: 2005/10/15 16:39:05
-dnl ---------------
-dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
-dnl or adapt to the vendor's definitions to get equivalent functionality.
-dnl
-dnl Parameters:
-dnl $1 is the nominal value for _XOPEN_SOURCE
-dnl $2 is the nominal value for _POSIX_C_SOURCE
-AC_DEFUN([CF_XOPEN_SOURCE],[
-
-AC_REQUIRE([CF_PROG_CC_U_D])
-
-cf_XOPEN_SOURCE=ifelse($1,,500,$1)
-cf_POSIX_C_SOURCE=ifelse($2,,199506L,$2)
-
-case $host_os in #(vi
-aix[[45]]*) #(vi
- CPPFLAGS="$CPPFLAGS -D_ALL_SOURCE"
- ;;
-freebsd*) #(vi
- # 5.x headers associate
- # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
- # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
- cf_POSIX_C_SOURCE=200112L
- cf_XOPEN_SOURCE=600
- CPPFLAGS="$CPPFLAGS -D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
- ;;
-hpux*) #(vi
- CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE"
- ;;
-irix[[56]].*) #(vi
- CPPFLAGS="$CPPFLAGS -D_SGI_SOURCE"
- ;;
-linux*|gnu*) #(vi
- CF_GNU_SOURCE
- ;;
-mirbsd*) #(vi
- # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <arpa/inet.h>
- ;;
-netbsd*) #(vi
- # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
- ;;
-openbsd*) #(vi
- # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
- ;;
-osf[[45]]*) #(vi
- CPPFLAGS="$CPPFLAGS -D_OSF_SOURCE"
- ;;
-nto-qnx*) #(vi
- CPPFLAGS="$CPPFLAGS -D_QNX_SOURCE"
- ;;
-sco*) #(vi
- # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
- ;;
-solaris*) #(vi
- CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
- ;;
-*)
- AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
- AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifndef _XOPEN_SOURCE
-make an error
-#endif],
- [cf_cv_xopen_source=no],
- [cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
- AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifdef _XOPEN_SOURCE
-make an error
-#endif],
- [cf_cv_xopen_source=no],
- [cf_cv_xopen_source=$cf_XOPEN_SOURCE])
- CPPFLAGS="$cf_save"
- ])
-])
- if test "$cf_cv_xopen_source" != no ; then
- CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
- CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
- test "$cf_cv_cc_u_d_options" = yes && \
- CPPFLAGS="$CPPFLAGS -U_XOPEN_SOURCE"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_cv_xopen_source"
- fi
- CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
- ;;
-esac
-])
-dnl ---------------------------------------------------------------------------
-dnl CF_X_ATHENA version: 12 updated: 2004/06/15 21:14:41
-dnl -----------
-dnl Check for Xaw (Athena) libraries
-dnl
-dnl Sets $cf_x_athena according to the flavor of Xaw which is used.
-AC_DEFUN([CF_X_ATHENA],
-[AC_REQUIRE([CF_X_TOOLKIT])
-cf_x_athena=${cf_x_athena-Xaw}
-
-AC_MSG_CHECKING(if you want to link with Xaw 3d library)
-withval=
-AC_ARG_WITH(Xaw3d,
- [ --with-Xaw3d link with Xaw 3d library])
-if test "$withval" = yes ; then
- cf_x_athena=Xaw3d
- AC_MSG_RESULT(yes)
-else
- AC_MSG_RESULT(no)
-fi
-
-AC_MSG_CHECKING(if you want to link with neXT Athena library)
-withval=
-AC_ARG_WITH(neXtaw,
- [ --with-neXtaw link with neXT Athena library])
-if test "$withval" = yes ; then
- cf_x_athena=neXtaw
- AC_MSG_RESULT(yes)
-else
- AC_MSG_RESULT(no)
-fi
-
-AC_MSG_CHECKING(if you want to link with Athena-Plus library)
-withval=
-AC_ARG_WITH(XawPlus,
- [ --with-XawPlus link with Athena-Plus library])
-if test "$withval" = yes ; then
- cf_x_athena=XawPlus
- AC_MSG_RESULT(yes)
-else
- AC_MSG_RESULT(no)
-fi
-
-AC_CHECK_LIB(Xext,XextCreateExtension,
- [LIBS="-lXext $LIBS"])
-
-cf_x_athena_lib=""
-
-CF_X_ATHENA_CPPFLAGS($cf_x_athena)
-CF_X_ATHENA_LIBS($cf_x_athena)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_X_ATHENA_CPPFLAGS version: 2 updated: 2002/10/09 20:00:37
-dnl --------------------
-dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
-dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
-AC_DEFUN([CF_X_ATHENA_CPPFLAGS],
-[
-cf_x_athena_root=ifelse($1,,Xaw,$1)
-cf_x_athena_include=""
-
-for cf_path in default \
- /usr/contrib/X11R6 \
- /usr/contrib/X11R5 \
- /usr/lib/X11R5 \
- /usr/local
-do
- if test -z "$cf_x_athena_include" ; then
- cf_save="$CPPFLAGS"
- cf_test=X11/$cf_x_athena_root/SimpleMenu.h
- if test $cf_path != default ; then
- CPPFLAGS="-I$cf_path/include $cf_save"
- AC_MSG_CHECKING(for $cf_test in $cf_path)
- else
- AC_MSG_CHECKING(for $cf_test)
- fi
- AC_TRY_COMPILE([
-#include <X11/Intrinsic.h>
-#include <$cf_test>],[],
- [cf_result=yes],
- [cf_result=no])
- AC_MSG_RESULT($cf_result)
- if test "$cf_result" = yes ; then
- cf_x_athena_include=$cf_path
- break
- else
- CPPFLAGS="$cf_save"
- fi
- fi
-done
-
-if test -z "$cf_x_athena_include" ; then
- AC_MSG_WARN(
-[Unable to successfully find Athena header files with test program])
-elif test "$cf_x_athena_include" != default ; then
- CPPFLAGS="$CPPFLAGS -I$cf_x_athena_include"
-fi
-])
-dnl ---------------------------------------------------------------------------
-dnl CF_X_ATHENA_LIBS version: 3 updated: 2003/02/16 15:24:54
-dnl ----------------
-dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
-dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
-AC_DEFUN([CF_X_ATHENA_LIBS],
-[AC_REQUIRE([CF_X_TOOLKIT])
-cf_x_athena_root=ifelse($1,,Xaw,$1)
-cf_x_athena_lib=""
-
-for cf_path in default \
- /usr/contrib/X11R6 \
- /usr/contrib/X11R5 \
- /usr/lib/X11R5 \
- /usr/local
-do
- for cf_lib in \
- "-l$cf_x_athena_root -lXmu" \
- "-l$cf_x_athena_root -lXpm -lXmu" \
- "-l${cf_x_athena_root}_s -lXmu_s"
- do
- if test -z "$cf_x_athena_lib" ; then
- cf_save="$LIBS"
- cf_test=XawSimpleMenuAddGlobalActions
- if test $cf_path != default ; then
- LIBS="-L$cf_path/lib $cf_lib $LIBS"
- AC_MSG_CHECKING(for $cf_lib in $cf_path)
- else
- LIBS="$cf_lib $LIBS"
- AC_MSG_CHECKING(for $cf_test in $cf_lib)
- fi
- cf_SAVE="$LIBS"
- LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS"
- AC_TRY_LINK([],[$cf_test()],
- [cf_result=yes],
- [cf_result=no])
- AC_MSG_RESULT($cf_result)
- if test "$cf_result" = yes ; then
- cf_x_athena_lib="$cf_lib"
- LIBS="$cf_SAVE"
- break
- else
- LIBS="$cf_save"
- fi
- fi
- done
-done
-
-if test -z "$cf_x_athena_lib" ; then
- AC_ERROR(
-[Unable to successfully link Athena library (-l$cf_x_athena_root) with test program])
-fi
-
-CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
-AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
-])
-dnl ---------------------------------------------------------------------------
-dnl CF_X_FREETYPE version: 11 updated: 2004/04/25 16:43:59
-dnl -------------
-dnl Check for X FreeType headers and libraries (XFree86 4.x).
-dnl
-dnl If either or both of these configure-script options are not given, rely on
-dnl the output of xft-config or the older freetype-config to provide the
-dnl cflags/libs options.
-dnl --with-freetype-cflags
-dnl --with-freetype-libs
-AC_DEFUN([CF_X_FREETYPE],
-[
-cf_extra_freetype_libs=
-AC_PATH_PROG(FREETYPE_CONFIG, xft-config, none)
-if test "$FREETYPE_CONFIG" = none; then
- cf_extra_freetype_libs="-lXft"
- AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, none)
-fi
-
-if test "$FREETYPE_CONFIG" != none ; then
-
-AC_ARG_WITH(freetype-cflags,
- [ --with-freetype-cflags -D/-I options for compiling with FreeType],
-[cf_cv_x_freetype_incs="$withval"
- CF_VERBOSE(freetype-cflags $cf_cv_x_freetype_incs)
-],[
-AC_CACHE_CHECK(for X FreeType headers,cf_cv_x_freetype_incs,[
- cf_cv_x_freetype_incs="`$FREETYPE_CONFIG --cflags 2>/dev/null`"
-])])
-
-AC_ARG_WITH(freetype-libs,
- [ --with-freetype-libs -L/-l options to link FreeType],
-[cf_cv_x_freetype_libs="$withval"
- CF_VERBOSE(freetype-libs $cf_cv_x_freetype_libs)
-],[
-AC_CACHE_CHECK(for X FreeType libraries,cf_cv_x_freetype_libs,[
-
-cf_save_LIBS="$LIBS"
-cf_save_INCS="$CPPFLAGS"
-
-cf_cv_x_freetype_libs="$cf_extra_freetype_libs `$FREETYPE_CONFIG --libs 2>/dev/null`"
-
-LIBS="$cf_cv_x_freetype_libs $LIBS"
-CPPFLAGS="$cf_cv_x_freetype_incs $CPPFLAGS"
-
-AC_TRY_LINK([
-#include <X11/Xlib.h>
-#include <X11/extensions/Xrender.h>
-#include <X11/Xft/Xft.h>],[
- XftPattern *pat = XftNameParse ("name");
- ],[],[cf_cv_x_freetype_libs=])
- LIBS="$cf_save_LIBS"
- CPPFLAGS="$cf_save_INCS"
-])])
-
-if test -n "$cf_cv_x_freetype_libs" ; then
- LIBS="$cf_cv_x_freetype_libs $LIBS"
- CF_ADD_CFLAGS($cf_cv_x_freetype_incs)
- AC_DEFINE(XRENDERFONT)
-else
- CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-DXRENDERFONT//`
-fi
-else
- CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-DXRENDERFONT//`
-fi
-
-# FIXME: revisit this if needed
-AC_SUBST(XRENDERFONT)
-AC_SUBST(HAVE_TYPE_FCCHAR32)
-AC_SUBST(HAVE_TYPE_XFTCHARSPEC)
-])
-dnl ---------------------------------------------------------------------------
-dnl CF_X_TOOLKIT version: 10 updated: 2004/04/25 15:37:17
-dnl ------------
-dnl Check for X Toolkit libraries
-dnl
-AC_DEFUN([CF_X_TOOLKIT],
-[
-AC_REQUIRE([AC_PATH_XTRA])
-AC_REQUIRE([CF_CHECK_CACHE])
-
-# SYSTEM_NAME=`echo "$cf_cv_system_name"|tr ' ' -`
-
-cf_have_X_LIBS=no
-
-LDFLAGS="$X_LIBS $LDFLAGS"
-CF_CHECK_CFLAGS($X_CFLAGS)
-
-AC_CHECK_FUNC(XOpenDisplay,,[
-AC_CHECK_LIB(X11,XOpenDisplay,
- [LIBS="-lX11 $LIBS"],,
- [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])])
-
-AC_CHECK_FUNC(XtAppInitialize,,[
-AC_CHECK_LIB(Xt, XtAppInitialize,
- [AC_DEFINE(HAVE_LIBXT)
- cf_have_X_LIBS=Xt
- LIBS="-lXt $X_PRE_LIBS $LIBS"],,
- [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])])
-
-if test $cf_have_X_LIBS = no ; then
- AC_WARN(
-[Unable to successfully link X Toolkit library (-lXt) with
-test program. You will have to check and add the proper libraries by hand
-to makefile.])
-fi
-])dnl
diff --git a/nx-X11/programs/xterm/button.c b/nx-X11/programs/xterm/button.c
deleted file mode 100644
index d8d0b32b3..000000000
--- a/nx-X11/programs/xterm/button.c
+++ /dev/null
@@ -1,3284 +0,0 @@
-/* $XTermId: button.c,v 1.197 2005/11/03 13:17:27 tom Exp $ */
-
-/* $Xorg: button.c,v 1.3 2000/08/17 19:55:08 cpqbld Exp $ */
-/*
- * Copyright 1999-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-/* $XFree86: xc/programs/xterm/button.c,v 3.82 2005/11/03 13:17:27 dickey Exp $ */
-
-/*
-button.c Handles button events in the terminal emulator.
- does cut/paste operations, change modes via menu,
- passes button events through to some applications.
- J. Gettys.
-*/
-
-#include <xterm.h>
-
-#include <stdio.h>
-
-#include <X11/Xatom.h>
-#include <X11/Xmu/Atoms.h>
-#include <X11/Xmu/StdSel.h>
-
-#include <xutf8.h>
-
-#include <data.h>
-#include <error.h>
-#include <menu.h>
-#include <xcharmouse.h>
-#include <charclass.h>
-
-#if OPT_WIDE_CHARS
-#include <wcwidth.h>
-#else
-#define CharacterClass(value) \
- charClass[value & ((sizeof(charClass)/sizeof(charClass[0]))-1)]
-#endif
-
-#define XTERM_CELL(row,col) getXtermCell(screen, row + screen->topline, col)
-#define XTERM_CELL_C1(row,col) getXtermCellComb1(screen, row + screen->topline, col)
-#define XTERM_CELL_C2(row,col) getXtermCellComb2(screen, row + screen->topline, col)
-
- /*
- * We reserve shift modifier for cut/paste operations. In principle we
- * can pass through control and meta modifiers, but in practice, the
- * popup menu uses control, and the window manager is likely to use meta,
- * so those events are not delivered to SendMousePosition.
- */
-#define OurModifiers (ShiftMask | ControlMask | Mod1Mask)
-#define AllModifiers (ShiftMask | LockMask | ControlMask | Mod1Mask | \
- Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask)
-
-#define KeyModifiers (event->xbutton.state & OurModifiers)
-
-#define KeyState(x) (((x) & (ShiftMask|ControlMask)) + (((x) & Mod1Mask) ? 2 : 0))
- /* adds together the bits:
- shift key -> 1
- meta key -> 2
- control key -> 4 */
-
-#define Coordinate(r,c) ((r) * MaxCols(&(term->screen)) + (c))
-
-#if OPT_DEC_LOCATOR
-static ANSI reply;
-#endif
-
-/* Selection/extension variables */
-
-/* Raw char position where the selection started */
-static int rawRow, rawCol;
-
-/* Selected area before CHAR, WORD, LINE selectUnit processing */
-static int startRRow, startRCol, endRRow, endRCol = 0;
-
-/* Selected area after CHAR, WORD, LINE selectUnit processing */
-static int startSRow, startSCol, endSRow, endSCol = 0;
-
-/* Valid rows for selection clipping */
-static int firstValidRow, lastValidRow;
-
-/* Start, end of extension */
-static int startERow, startECol, endERow, endECol;
-
-/* Saved values of raw selection for extend to restore to */
-static int saveStartRRow, saveStartRCol, saveEndRRow, saveEndRCol;
-
-/* Saved value of WORD selection for LINE processing to restore to */
-static int saveStartWRow, saveStartWCol;
-
-/* Multi-click handling */
-static int numberOfClicks = 0;
-static Time lastButtonUpTime = 0;
-
-#if OPT_READLINE
-static Time lastButtonDownTime = 0;
-static int ExtendingSelection = 0;
-static Time lastButton3UpTime = 0;
-static Time lastButton3DoubleDownTime = 0;
-static int lastButton3row, lastButton3col; /* At the release time */
-#endif /* OPT_READLINE */
-
-typedef int SelectUnit;
-
-#define SELECTCHAR 0
-#define SELECTWORD 1
-#define SELECTLINE 2
-#define NSELECTUNITS 3
-static SelectUnit selectUnit;
-
-/* Send emacs escape code when done selecting or extending? */
-static int replyToEmacs;
-
-static Char *SaveText(TScreen * screen, int row, int scol, int ecol, Char *
- lp, int *eol);
-static int Length(TScreen * screen, int row, int scol, int ecol);
-static void ComputeSelect(int startRow, int startCol, int endRow, int
- endCol, Bool extend);
-static void EditorButton(XButtonEvent * event);
-static void EndExtend(Widget w, XEvent * event, String * params, Cardinal
- num_params, Bool use_cursor_loc);
-static void ExtendExtend(int row, int col);
-static void PointToRowCol(int y, int x, int *r, int *c);
-static void ReHiliteText(int frow, int fcol, int trow, int tcol);
-static void SaltTextAway(int crow, int ccol, int row, int col, String *
- params, Cardinal num_params);
-static void SelectSet(Widget w, XEvent * event, String * params, Cardinal num_params);
-static void SelectionReceived PROTO_XT_SEL_CB_ARGS;
-static void StartSelect(int startrow, int startcol);
-static void TrackDown(XButtonEvent * event);
-static void _OwnSelection(XtermWidget termw, String * selections, Cardinal count);
-static void do_select_end(Widget w, XEvent * event, String * params,
- Cardinal *num_params, Bool use_cursor_loc);
-
-Bool
-SendMousePosition(Widget w, XEvent * event)
-{
- TScreen *screen;
-
- if (!IsXtermWidget(w))
- return False;
-
- screen = &((XtermWidget) w)->screen;
-
- /* If send_mouse_pos mode isn't on, we shouldn't be here */
- if (screen->send_mouse_pos == MOUSE_OFF)
- return False;
-
-#if OPT_DEC_LOCATOR
- if (screen->send_mouse_pos == DEC_LOCATOR) {
- return (SendLocatorPosition(w, event));
- }
-#endif /* OPT_DEC_LOCATOR */
-
- /* Make sure the event is an appropriate type */
- if ((screen->send_mouse_pos != BTN_EVENT_MOUSE)
- && (screen->send_mouse_pos != ANY_EVENT_MOUSE)
- && event->type != ButtonPress
- && event->type != ButtonRelease)
- return False;
-
- switch (screen->send_mouse_pos) {
- case X10_MOUSE: /* X10 compatibility sequences */
-
- if (KeyModifiers == 0) {
- if (event->type == ButtonPress)
- EditorButton((XButtonEvent *) event);
- return True;
- }
- return False;
-
- case VT200_HIGHLIGHT_MOUSE: /* DEC vt200 hilite tracking */
- if (event->type == ButtonPress &&
- KeyModifiers == 0 &&
- event->xbutton.button == Button1) {
- TrackDown((XButtonEvent *) event);
- return True;
- }
- if (KeyModifiers == 0 || KeyModifiers == ControlMask) {
- EditorButton((XButtonEvent *) event);
- return True;
- }
- return False;
-
- case VT200_MOUSE: /* DEC vt200 compatible */
-
- /* xterm extension for motion reporting. June 1998 */
- /* EditorButton() will distinguish between the modes */
- case BTN_EVENT_MOUSE:
- case ANY_EVENT_MOUSE:
- if (KeyModifiers == 0 || KeyModifiers == ControlMask) {
- EditorButton((XButtonEvent *) event);
- return True;
- }
- return False;
-
- default:
- return False;
- }
-}
-
-#if OPT_DEC_LOCATOR
-
-#define LocatorCoords( row, col, x, y, oor ) \
- if( screen->locator_pixels ) { \
- (oor)=False; (row) = (y)+1; (col) = (x)+1; \
- /* Limit to screen dimensions */ \
- if ((row) < 1) (row) = 1,(oor)=True; \
- else if ((row) > screen->border*2+Height(screen)) \
- (row) = screen->border*2+Height(screen),(oor)=True; \
- if ((col) < 1) (col) = 1,(oor)=True; \
- else if ((col) > OriginX(screen)*2+Width(screen)) \
- (col) = OriginX(screen)*2+Width(screen),(oor)=True; \
- } else { \
- (oor)=False; \
- /* Compute character position of mouse pointer */ \
- (row) = ((y) - screen->border) / FontHeight(screen); \
- (col) = ((x) - OriginX(screen)) / FontWidth(screen); \
- /* Limit to screen dimensions */ \
- if ((row) < 0) (row) = 0,(oor)=True; \
- else if ((row) > screen->max_row) \
- (row) = screen->max_row,(oor)=True; \
- if ((col) < 0) (col) = 0,(oor)=True; \
- else if ((col) > screen->max_col) \
- (col) = screen->max_col,(oor)=True; \
- (row)++; (col)++; \
- }
-
-Bool
-SendLocatorPosition(Widget w, XEvent * event)
-{
- TScreen *screen = &((XtermWidget) w)->screen;
- int row, col;
- Bool oor;
- int button;
- int state;
-
- /* Make sure the event is an appropriate type */
- if ((event->type != ButtonPress &&
- event->type != ButtonRelease &&
- !screen->loc_filter) ||
- (KeyModifiers != 0 && KeyModifiers != ControlMask))
- return (False);
-
- if ((event->type == ButtonPress &&
- !(screen->locator_events & LOC_BTNS_DN)) ||
- (event->type == ButtonRelease &&
- !(screen->locator_events & LOC_BTNS_UP)))
- return (True);
-
- if (event->type == MotionNotify) {
- CheckLocatorPosition(w, event);
- return (True);
- }
-
- /* get button # */
- button = event->xbutton.button - 1;
-
- LocatorCoords(row, col, event->xbutton.x, event->xbutton.y, oor);
-
- /*
- * DECterm mouse:
- *
- * ESCAPE '[' event ; mask ; row ; column '&' 'w'
- */
- reply.a_type = CSI;
-
- if (oor) {
- reply.a_nparam = 1;
- reply.a_param[0] = 0; /* Event - 0 = locator unavailable */
- reply.a_inters = '&';
- reply.a_final = 'w';
- unparseseq(&reply, screen->respond);
-
- if (screen->locator_reset) {
- MotionOff(screen, term);
- screen->send_mouse_pos = MOUSE_OFF;
- }
- return (True);
- }
-
- /*
- * event:
- * 1 no buttons
- * 2 left button down
- * 3 left button up
- * 4 middle button down
- * 5 middle button up
- * 6 right button down
- * 7 right button up
- * 8 M4 down
- * 9 M4 up
- */
- reply.a_nparam = 4;
- switch (event->type) {
- case ButtonPress:
- reply.a_param[0] = 2 + (button << 1);
- break;
- case ButtonRelease:
- reply.a_param[0] = 3 + (button << 1);
- break;
- default:
- return (True);
- }
- /*
- * mask:
- * bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
- * M4 down left down middle down right down
- *
- * Notice that Button1 (left) and Button3 (right) are swapped in the mask.
- * Also, mask should be the state after the button press/release,
- * X provides the state not including the button press/release.
- */
- state = (event->xbutton.state
- & (Button1Mask | Button2Mask | Button3Mask | Button4Mask)) >> 8;
- state ^= 1 << button; /* update mask to "after" state */
- state = (state & ~(4 | 1)) | ((state & 1) ? 4 : 0) | ((state & 4) ? 1 : 0); /* swap Button1 & Button3 */
-
- reply.a_param[1] = state;
- reply.a_param[2] = row;
- reply.a_param[3] = col;
- reply.a_inters = '&';
- reply.a_final = 'w';
-
- unparseseq(&reply, screen->respond);
-
- if (screen->locator_reset) {
- MotionOff(screen, term);
- screen->send_mouse_pos = MOUSE_OFF;
- }
-
- /*
- * DECterm turns the Locator off if a button is pressed while a filter rectangle
- * is active. This might be a bug, but I don't know, so I'll emulate it anyways.
- */
- if (screen->loc_filter) {
- screen->send_mouse_pos = MOUSE_OFF;
- screen->loc_filter = False;
- screen->locator_events = 0;
- MotionOff(screen, term);
- }
-
- return (True);
-}
-
-/*
- * mask:
- * bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
- * M4 down left down middle down right down
- *
- * Button1 (left) and Button3 (right) are swapped in the mask relative to X.
- */
-#define ButtonState(state, mask) \
-{ (state) = ((mask) & (Button1Mask | Button2Mask | Button3Mask | Button4Mask)) >> 8; \
- /* swap Button1 & Button3 */ \
- (state) = ((state) & ~(4|1)) | (((state)&1)?4:0) | (((state)&4)?1:0); \
-}
-
-void
-GetLocatorPosition(XtermWidget w)
-{
- TScreen *screen = &w->screen;
- Window root, child;
- int rx, ry, x, y;
- unsigned int mask;
- int row = 0, col = 0;
- Bool oor = False;
- Bool ret = False;
- int state;
-
- /*
- * DECterm turns the Locator off if the position is requested while a filter rectangle
- * is active. This might be a bug, but I don't know, so I'll emulate it anyways.
- */
- if (screen->loc_filter) {
- screen->send_mouse_pos = MOUSE_OFF;
- screen->loc_filter = False;
- screen->locator_events = 0;
- MotionOff(screen, term);
- }
-
- reply.a_type = CSI;
-
- if (screen->send_mouse_pos == DEC_LOCATOR) {
- ret = XQueryPointer(screen->display, VWindow(screen), &root,
- &child, &rx, &ry, &x, &y, &mask);
- if (ret) {
- LocatorCoords(row, col, x, y, oor);
- }
- }
- if (ret == False || oor) {
- reply.a_nparam = 1;
- reply.a_param[0] = 0; /* Event - 0 = locator unavailable */
- reply.a_inters = '&';
- reply.a_final = 'w';
- unparseseq(&reply, screen->respond);
-
- if (screen->locator_reset) {
- MotionOff(screen, term);
- screen->send_mouse_pos = MOUSE_OFF;
- }
- return;
- }
-
- ButtonState(state, mask);
-
- reply.a_nparam = 4;
- reply.a_param[0] = 1; /* Event - 1 = response to locator request */
- reply.a_param[1] = state;
- reply.a_param[2] = row;
- reply.a_param[3] = col;
- reply.a_inters = '&';
- reply.a_final = 'w';
- unparseseq(&reply, screen->respond);
-
- if (screen->locator_reset) {
- MotionOff(screen, term);
- screen->send_mouse_pos = MOUSE_OFF;
- }
-}
-
-void
-InitLocatorFilter(XtermWidget w)
-{
- TScreen *screen = &w->screen;
- Window root, child;
- int rx, ry, x, y;
- unsigned int mask;
- int row = 0, col = 0;
- Bool oor = 0;
- Bool ret;
- int state;
-
- ret = XQueryPointer(screen->display, VWindow(screen),
- &root, &child, &rx, &ry, &x, &y, &mask);
- if (ret) {
- LocatorCoords(row, col, x, y, oor);
- }
- if (ret == False || oor) {
- /* Locator is unavailable */
-
- if (screen->loc_filter_top != LOC_FILTER_POS ||
- screen->loc_filter_left != LOC_FILTER_POS ||
- screen->loc_filter_bottom != LOC_FILTER_POS ||
- screen->loc_filter_right != LOC_FILTER_POS) {
- /*
- * If any explicit coordinates were received,
- * report immediately with no coordinates.
- */
- reply.a_type = CSI;
- reply.a_nparam = 1;
- reply.a_param[0] = 0; /* Event - 0 = locator unavailable */
- reply.a_inters = '&';
- reply.a_final = 'w';
- unparseseq(&reply, screen->respond);
-
- if (screen->locator_reset) {
- MotionOff(screen, term);
- screen->send_mouse_pos = MOUSE_OFF;
- }
- } else {
- /*
- * No explicit coordinates were received, and the pointer is
- * unavailable. Report when the pointer re-enters the window.
- */
- screen->loc_filter = True;
- MotionOn(screen, term);
- }
- return;
- }
-
- /*
- * Adjust rectangle coordinates:
- * 1. Replace "LOC_FILTER_POS" with current coordinates
- * 2. Limit coordinates to screen size
- * 3. make sure top and left are less than bottom and right, resp.
- */
- if (screen->locator_pixels) {
- rx = OriginX(screen) * 2 + Width(screen);
- ry = screen->border * 2 + Height(screen);
- } else {
- rx = screen->max_col;
- ry = screen->max_row;
- }
-
-#define Adjust( coord, def, max ) \
- if( (coord) == LOC_FILTER_POS ) (coord) = (def); \
- else if ((coord) < 1) (coord) = 1; \
- else if ((coord) > (max)) (coord) = (max)
-
- Adjust(screen->loc_filter_top, row, ry);
- Adjust(screen->loc_filter_left, col, rx);
- Adjust(screen->loc_filter_bottom, row, ry);
- Adjust(screen->loc_filter_right, col, rx);
-
- if (screen->loc_filter_top > screen->loc_filter_bottom) {
- ry = screen->loc_filter_top;
- screen->loc_filter_top = screen->loc_filter_bottom;
- screen->loc_filter_bottom = ry;
- }
-
- if (screen->loc_filter_left > screen->loc_filter_right) {
- rx = screen->loc_filter_left;
- screen->loc_filter_left = screen->loc_filter_right;
- screen->loc_filter_right = rx;
- }
-
- if ((col < screen->loc_filter_left) ||
- (col > screen->loc_filter_right) ||
- (row < screen->loc_filter_top) ||
- (row > screen->loc_filter_bottom)) {
- /* Pointer is already outside the rectangle - report immediately */
- ButtonState(state, mask);
-
- reply.a_type = CSI;
- reply.a_nparam = 4;
- reply.a_param[0] = 10; /* Event - 10 = locator outside filter */
- reply.a_param[1] = state;
- reply.a_param[2] = row;
- reply.a_param[3] = col;
- reply.a_inters = '&';
- reply.a_final = 'w';
- unparseseq(&reply, screen->respond);
-
- if (screen->locator_reset) {
- MotionOff(screen, term);
- screen->send_mouse_pos = MOUSE_OFF;
- }
- return;
- }
-
- /*
- * Rectangle is set up. Allow pointer tracking
- * to detect if the mouse leaves the rectangle.
- */
- screen->loc_filter = True;
- MotionOn(screen, term);
-}
-
-void
-CheckLocatorPosition(Widget w, XEvent * event)
-{
- TScreen *screen = &((XtermWidget) w)->screen;
- int row, col;
- Bool oor;
- int state;
-
- LocatorCoords(row, col, event->xbutton.x, event->xbutton.y, oor);
-
- /*
- * Send report if the pointer left the filter rectangle, if
- * the pointer left the window, or if the filter rectangle
- * had no coordinates and the pointer re-entered the window.
- */
- if (oor || (screen->loc_filter_top == LOC_FILTER_POS) ||
- (col < screen->loc_filter_left) ||
- (col > screen->loc_filter_right) ||
- (row < screen->loc_filter_top) ||
- (row > screen->loc_filter_bottom)) {
- /* Filter triggered - disable it */
- screen->loc_filter = False;
- MotionOff(screen, term);
-
- reply.a_type = CSI;
- if (oor) {
- reply.a_nparam = 1;
- reply.a_param[0] = 0; /* Event - 0 = locator unavailable */
- } else {
- ButtonState(state, event->xbutton.state);
-
- reply.a_nparam = 4;
- reply.a_param[0] = 10; /* Event - 10 = locator outside filter */
- reply.a_param[1] = state;
- reply.a_param[2] = row;
- reply.a_param[3] = col;
- }
-
- reply.a_inters = '&';
- reply.a_final = 'w';
- unparseseq(&reply, screen->respond);
-
- if (screen->locator_reset) {
- MotionOff(screen, term);
- screen->send_mouse_pos = MOUSE_OFF;
- }
- }
-}
-#endif /* OPT_DEC_LOCATOR */
-
-#if OPT_READLINE
-static int
-isClick1_clean(XEvent * event)
-{
- TScreen *screen = &term->screen;
- int delta;
-
- if (!(event->type == ButtonPress || event->type == ButtonRelease)
- /* Disable on Shift-Click-1, including the application-mouse modes */
- || (KeyModifiers & ShiftMask)
- || (screen->send_mouse_pos != MOUSE_OFF) /* Kinda duplicate... */
- ||ExtendingSelection) /* Was moved */
- return 0;
- if (event->type != ButtonRelease)
- return 0;
- if (lastButtonDownTime == (Time) 0) /* first time or once in a blue moon */
- delta = term->screen.multiClickTime + 1;
- else if (event->xbutton.time > lastButtonDownTime) /* most of the time */
- delta = event->xbutton.time - lastButtonDownTime;
- else /* time has rolled over since lastButtonUpTime */
- delta = (((Time) ~ 0) - lastButtonDownTime) + event->xbutton.time;
- return delta <= term->screen.multiClickTime;
-}
-
-static int
-isDoubleClick3(XEvent * event)
-{
- int delta;
-
- if (event->type != ButtonRelease
- || (KeyModifiers & ShiftMask)
- || event->xbutton.button != Button3) {
- lastButton3UpTime = 0; /* Disable the cached info */
- return 0;
- }
- /* Process Btn3Release. */
- if (lastButton3DoubleDownTime == (Time) 0) /* No previous click
- or once in a blue moon */
- delta = term->screen.multiClickTime + 1;
- else if (event->xbutton.time > lastButton3DoubleDownTime) /* most of the time */
- delta = event->xbutton.time - lastButton3DoubleDownTime;
- else /* time has rolled over since lastButton3DoubleDownTime */
- delta = (((Time) ~ 0) - lastButton3DoubleDownTime) + event->xbutton.time;
- if (delta <= term->screen.multiClickTime) {
- /* Double click */
- int row, col;
-
- /* Cannot check ExtendingSelection, since mouse-3 always sets it */
- PointToRowCol(event->xbutton.y, event->xbutton.x, &row, &col);
- if (row == lastButton3row && col == lastButton3col) {
- lastButton3DoubleDownTime = 0; /* Disable the third click */
- return 1;
- }
- }
- /* Not a double click, memorize for future check. */
- lastButton3UpTime = event->xbutton.time;
- PointToRowCol(event->xbutton.y, event->xbutton.x,
- &lastButton3row, &lastButton3col);
- return 0;
-}
-
-static int
-CheckSecondPress3(XEvent * event)
-{
- int delta, row, col;
-
- if (event->type != ButtonPress
- || (KeyModifiers & ShiftMask)
- || event->xbutton.button != Button3) {
- lastButton3DoubleDownTime = 0; /* Disable the cached info */
- return 0;
- }
- /* Process Btn3Press. */
- if (lastButton3UpTime == (Time) 0) /* No previous click
- or once in a blue moon */
- delta = term->screen.multiClickTime + 1;
- else if (event->xbutton.time > lastButton3UpTime) /* most of the time */
- delta = event->xbutton.time - lastButton3UpTime;
- else /* time has rolled over since lastButton3UpTime */
- delta = (((Time) ~ 0) - lastButton3UpTime) + event->xbutton.time;
- if (delta <= term->screen.multiClickTime) {
- PointToRowCol(event->xbutton.y, event->xbutton.x, &row, &col);
- if (row == lastButton3row && col == lastButton3col) {
- /* A candidate for a double-click */
- lastButton3DoubleDownTime = event->xbutton.time;
- PointToRowCol(event->xbutton.y, event->xbutton.x,
- &lastButton3row, &lastButton3col);
- return 1;
- }
- lastButton3UpTime = 0; /* Disable the info about the previous click */
- }
- /* Either too long, or moved, disable. */
- lastButton3DoubleDownTime = 0;
- return 0;
-}
-
-static int
-rowOnCurrentLine(int line, int *deltap) /* must be XButtonEvent */
-{
- TScreen *screen = &term->screen;
- int l1, l2;
-
- *deltap = 0;
- if (line == screen->cur_row)
- return 1;
-
- if (line < screen->cur_row)
- l1 = line, l2 = screen->cur_row;
- else
- l2 = line, l1 = screen->cur_row;
- l1--;
- while (++l1 < l2)
- if (!ScrnTstWrapped(screen, l1))
- return 0;
- /* Everything is on one "wrapped line" now */
- *deltap = line - screen->cur_row;
- return 1;
-}
-
-static int
-eventRow(XEvent * event) /* must be XButtonEvent */
-{
- TScreen *screen = &term->screen;
-
- return (event->xbutton.y - screen->border) / FontHeight(screen);
-}
-
-static int
-eventColBetween(XEvent * event) /* must be XButtonEvent */
-{
- TScreen *screen = &term->screen;
-
- /* Correct by half a width - we are acting on a boundary, not on a cell. */
- return ((event->xbutton.x - OriginX(screen) + (FontWidth(screen) - 1) / 2)
- / FontWidth(screen));
-}
-
-static int
-ReadLineMovePoint(int col, int ldelta)
-{
- TScreen *screen = &term->screen;
- Char line[6];
- unsigned count = 0;
-
- col += ldelta * MaxCols(screen) - screen->cur_col;
- if (col == 0)
- return 0;
- if (screen->control_eight_bits) {
- line[count++] = CSI;
- } else {
- line[count++] = ESC;
- line[count++] = '['; /* XXX maybe sometimes O is better? */
- }
- line[count++] = (col > 0 ? 'C' : 'D');
- if (col < 0)
- col = -col;
- while (col--)
- v_write(screen->respond, line, 3);
- return 1;
-}
-
-static int
-ReadLineDelete(int r1, int c1, int r2, int c2)
-{
- TScreen *screen = &term->screen;
- int del;
-
- del = c2 - c1 + (r2 - r1) * MaxCols(screen);
- if (del <= 0) /* Just in case... */
- return 0;
- while (del--)
- v_write(screen->respond, (Char *) "\177", 1);
- return 1;
-}
-#endif /* OPT_READLINE */
-
-/* ^XM-G<line+' '><col+' '> */
-void
-DiredButton(Widget w GCC_UNUSED,
- XEvent * event, /* must be XButtonEvent */
- String * params GCC_UNUSED, /* selections */
- Cardinal *num_params GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
- Char Line[6];
- unsigned line, col;
-
- if (event->type == ButtonPress || event->type == ButtonRelease) {
- line = (event->xbutton.y - screen->border) / FontHeight(screen);
- col = (event->xbutton.x - OriginX(screen)) / FontWidth(screen);
- Line[0] = CONTROL('X');
- Line[1] = ESC;
- Line[2] = 'G';
- Line[3] = ' ' + col;
- Line[4] = ' ' + line;
- v_write(screen->respond, Line, 5);
- }
-}
-
-#if OPT_READLINE
-void
-ReadLineButton(Widget w GCC_UNUSED,
- XEvent * event, /* must be XButtonEvent */
- String * params GCC_UNUSED, /* selections */
- Cardinal *num_params GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
- Char Line[6];
- int line, col, ldelta = 0;
-
- if (!(event->type == ButtonPress || event->type == ButtonRelease)
- || (screen->send_mouse_pos != MOUSE_OFF) || ExtendingSelection)
- goto finish;
- if (event->type == ButtonRelease) {
- int delta;
-
- if (lastButtonDownTime == (Time) 0) /* first time and once in a blue moon */
- delta = screen->multiClickTime + 1;
- else if (event->xbutton.time > lastButtonDownTime) /* most of the time */
- delta = event->xbutton.time - lastButtonDownTime;
- else /* time has rolled over since lastButtonUpTime */
- delta = (((Time) ~ 0) - lastButtonDownTime) + event->xbutton.time;
- if (delta > screen->multiClickTime)
- goto finish; /* All this work for this... */
- }
- line = (event->xbutton.y - screen->border) / FontHeight(screen);
- if (line != screen->cur_row) {
- int l1, l2;
-
- if (line < screen->cur_row)
- l1 = line, l2 = screen->cur_row;
- else
- l2 = line, l1 = screen->cur_row;
- l1--;
- while (++l1 < l2)
- if (!ScrnTstWrapped(screen, l1))
- goto finish;
- /* Everything is on one "wrapped line" now */
- ldelta = line - screen->cur_row;
- }
- /* Correct by half a width - we are acting on a boundary, not on a cell. */
- col = (event->xbutton.x - OriginX(screen) + (FontWidth(screen) - 1) / 2)
- / FontWidth(screen) - screen->cur_col + ldelta * MaxCols(screen);
- if (col == 0)
- goto finish;
- Line[0] = ESC;
- /* XXX: sometimes it is better to send '['? */
- Line[1] = 'O';
- Line[2] = (col > 0 ? 'C' : 'D');
- if (col < 0)
- col = -col;
- while (col--)
- v_write(screen->respond, Line, 3);
- finish:
- if (event->type == ButtonRelease)
- do_select_end(w, event, params, num_params, False);
-}
-#endif /* OPT_READLINE */
-
-/* repeats <ESC>n or <ESC>p */
-void
-ViButton(Widget w GCC_UNUSED,
- XEvent * event, /* must be XButtonEvent */
- String * params GCC_UNUSED, /* selections */
- Cardinal *num_params GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
- int pty = screen->respond;
- Char Line[6];
- int line;
-
- if (event->type == ButtonPress || event->type == ButtonRelease) {
-
- line = screen->cur_row -
- ((event->xbutton.y - screen->border) / FontHeight(screen));
- if (line != 0) {
- Line[0] = ESC; /* force an exit from insert-mode */
- v_write(pty, Line, 1);
-
- if (line < 0) {
- line = -line;
- Line[0] = CONTROL('n');
- } else {
- Line[0] = CONTROL('p');
- }
- while (--line >= 0)
- v_write(pty, Line, 1);
- }
- }
-}
-
-/*
- * This function handles button-motion events
- */
-/*ARGSUSED*/
-void
-HandleSelectExtend(Widget w,
- XEvent * event, /* must be XMotionEvent */
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED)
-{
- TScreen *screen;
- int row, col;
-
- if (!IsXtermWidget(w))
- return;
-
- screen = &((XtermWidget) w)->screen;
- screen->selection_time = event->xmotion.time;
- switch (eventMode) {
- /* If not in one of the DEC mouse-reporting modes */
- case LEFTEXTENSION:
- case RIGHTEXTENSION:
- PointToRowCol(event->xmotion.y, event->xmotion.x,
- &row, &col);
- ExtendExtend(row, col);
- break;
-
- /* If in motion reporting mode, send mouse position to
- character process as a key sequence \E[M... */
- case NORMAL:
- /* will get here if send_mouse_pos != MOUSE_OFF */
- if (screen->send_mouse_pos == BTN_EVENT_MOUSE
- || screen->send_mouse_pos == ANY_EVENT_MOUSE) {
- (void) SendMousePosition(w, event);
- }
- break;
- }
-}
-
-void
-HandleKeyboardSelectExtend(Widget w,
- XEvent * event GCC_UNUSED, /* must be XButtonEvent */
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED)
-{
- TScreen *screen;
-
- if (!IsXtermWidget(w))
- return;
-
- screen = &((XtermWidget) w)->screen;
- ExtendExtend(screen->cursor_row, screen->cursor_col);
-}
-
-static void
-do_select_end(Widget w,
- XEvent * event, /* must be XButtonEvent */
- String * params, /* selections */
- Cardinal *num_params,
- Bool use_cursor_loc)
-{
-#if OPT_READLINE
- int ldelta1, ldelta2;
- TScreen *screen = &term->screen;
-#endif
-
- if (!IsXtermWidget(w)) {
- return;
- }
-
- ((XtermWidget) w)->screen.selection_time = event->xbutton.time;
- switch (eventMode) {
- case NORMAL:
- (void) SendMousePosition(w, event);
- break;
- case LEFTEXTENSION:
- case RIGHTEXTENSION:
- EndExtend(w, event, params, *num_params, use_cursor_loc);
-#if OPT_READLINE
- if (isClick1_clean(event)
- && SCREEN_FLAG(screen, click1_moves)
- && rowOnCurrentLine(eventRow(event), &ldelta1)) {
- ReadLineMovePoint(eventColBetween(event), ldelta1);
- }
- if (isDoubleClick3(event)
- && SCREEN_FLAG(screen, dclick3_deletes)
- && rowOnCurrentLine(startSRow, &ldelta1)
- && rowOnCurrentLine(endSRow, &ldelta2)) {
- ReadLineMovePoint(endSCol, ldelta2);
- ReadLineDelete(startSRow, startSCol, endSRow, endSCol);
- }
-#endif /* OPT_READLINE */
- break;
- }
-}
-
-void
-HandleSelectEnd(Widget w,
- XEvent * event, /* must be XButtonEvent */
- String * params, /* selections */
- Cardinal *num_params)
-{
- do_select_end(w, event, params, num_params, False);
-}
-
-void
-HandleKeyboardSelectEnd(Widget w,
- XEvent * event, /* must be XButtonEvent */
- String * params, /* selections */
- Cardinal *num_params)
-{
- do_select_end(w, event, params, num_params, True);
-}
-
-struct _SelectionList {
- String *params;
- Cardinal count;
- Atom *targets;
- Time time;
-};
-
-/* convert a UTF-8 string to Latin-1, replacing non Latin-1 characters
- * by `#'. */
-
-#if OPT_WIDE_CHARS
-static Char *
-UTF8toLatin1(Char * s, unsigned len, unsigned long *result)
-{
- static Char *buffer;
- static size_t used;
-
- Char *p = s;
- Char *q;
-
- if (used == 0) {
- buffer = (Char *) XtMalloc(used = len);
- } else if (len > used) {
- buffer = (Char *) XtRealloc((char *) buffer, used = len);
- }
- q = buffer;
-
- /* We're assuming that the xterm widget never contains Unicode
- control characters. */
-
- while (p < s + len) {
- if ((*p & 0x80) == 0) {
- *q++ = *p++;
- } else if ((*p & 0x7C) == 0x40 && p < s + len - 1) {
- *q++ = ((*p & 0x03) << 6) | (p[1] & 0x3F);
- p += 2;
- } else if ((*p & 0x60) == 0x40) {
- *q++ = '#';
- p += 2;
- } else if ((*p & 0x50) == 0x40) {
- *q++ = '#';
- p += 3;
- } else { /* this cannot happen */
- *q++ = '#';
- p++;
- }
- }
- *result = q - buffer;
- return buffer;
-}
-#endif /* OPT_WIDE_CHARS */
-
-static Atom *
-_SelectionTargets(Widget w)
-{
- static Atom *eightBitSelectionTargets = NULL;
- TScreen *screen;
- int n;
-
- if (!IsXtermWidget(w))
- return NULL;
-
- screen = &((XtermWidget) w)->screen;
-
-#if OPT_WIDE_CHARS
- if (screen->wide_chars) {
- static Atom *utf8SelectionTargets = NULL;
-
- if (utf8SelectionTargets == NULL) {
- utf8SelectionTargets = (Atom *) XtMalloc(5 * sizeof(Atom));
- if (utf8SelectionTargets == NULL) {
- TRACE(("Couldn't allocate utf8SelectionTargets\n"));
- return NULL;
- }
- n = 0;
- utf8SelectionTargets[n++] = XA_UTF8_STRING(XtDisplay(w));
-#ifdef X_HAVE_UTF8_STRING
- if (screen->i18nSelections) {
- utf8SelectionTargets[n++] = XA_TEXT(XtDisplay(w));
- utf8SelectionTargets[n++] = XA_COMPOUND_TEXT(XtDisplay(w));
- }
-#endif
- utf8SelectionTargets[n++] = XA_STRING;
- utf8SelectionTargets[n] = None;
- }
- return utf8SelectionTargets;
- }
-#endif
-
- /* not screen->wide_chars */
- if (eightBitSelectionTargets == NULL) {
- eightBitSelectionTargets = (Atom *) XtMalloc(5 * sizeof(Atom));
- if (eightBitSelectionTargets == NULL) {
- TRACE(("Couldn't allocate eightBitSelectionTargets\n"));
- return NULL;
- }
- n = 0;
-#ifdef X_HAVE_UTF8_STRING
- eightBitSelectionTargets[n++] = XA_UTF8_STRING(XtDisplay(w));
-#endif
- if (screen->i18nSelections) {
- eightBitSelectionTargets[n++] = XA_TEXT(XtDisplay(w));
- eightBitSelectionTargets[n++] = XA_COMPOUND_TEXT(XtDisplay(w));
- }
- eightBitSelectionTargets[n++] = XA_STRING;
- eightBitSelectionTargets[n] = None;
- }
- return eightBitSelectionTargets;
-}
-
-/*
- * Lookup the cut-buffer number, which will be in the range 0-7.
- * If it is not a cut-buffer, it is the primary selection (-1).
- */
-static int
-CutBuffer(unsigned code)
-{
- int cutbuffer;
- switch (code) {
- case XA_CUT_BUFFER0:
- cutbuffer = 0;
- break;
- case XA_CUT_BUFFER1:
- cutbuffer = 1;
- break;
- case XA_CUT_BUFFER2:
- cutbuffer = 2;
- break;
- case XA_CUT_BUFFER3:
- cutbuffer = 3;
- break;
- case XA_CUT_BUFFER4:
- cutbuffer = 4;
- break;
- case XA_CUT_BUFFER5:
- cutbuffer = 5;
- break;
- case XA_CUT_BUFFER6:
- cutbuffer = 6;
- break;
- case XA_CUT_BUFFER7:
- cutbuffer = 7;
- break;
- default:
- cutbuffer = -1;
- break;
- }
- return cutbuffer;
-}
-
-#define ResetPaste64() term->screen.base64_paste = 0
-
-#if !OPT_PASTE64
-static
-#endif
-void
-xtermGetSelection(Widget w,
- Time ev_time,
- String * params, /* selections in precedence order */
- Cardinal num_params,
- Atom * targets)
-{
- Atom selection;
- int cutbuffer;
- Atom target;
-
- if (!IsXtermWidget(w))
- return;
-
-#if OPT_TRACE
- TRACE(("xtermGetSelection\n"));
- if (num_params > 0) {
- Cardinal n;
- for (n = 0; n < num_params; ++n) {
- TRACE(("param[%d]:%s\n", n, params[n]));
- }
- }
-#endif
-
- XmuInternStrings(XtDisplay(w), params, (Cardinal) 1, &selection);
- cutbuffer = CutBuffer(selection);
- TRACE(("Cutbuffer: %d, target: %lu\n", cutbuffer,
- targets ? (unsigned long) targets[0] : 0));
- if (cutbuffer >= 0) {
- int inbytes;
- unsigned long nbytes;
- int fmt8 = 8;
- Atom type = XA_STRING;
- char *line;
-
- /* 'line' is freed in SelectionReceived */
- line = XFetchBuffer(XtDisplay(w), &inbytes, cutbuffer);
- nbytes = (unsigned long) inbytes;
-
- if (nbytes > 0)
- SelectionReceived(w, NULL, &selection, &type, (XtPointer) line,
- &nbytes, &fmt8);
- else if (num_params > 1)
- xtermGetSelection(w, ev_time, params + 1, num_params - 1, NULL);
-#if OPT_PASTE64
- else
- ResetPaste64();
-#endif
- return;
- } else {
- struct _SelectionList *list;
-
- if (targets == NULL || targets[0] == None) {
- targets = _SelectionTargets(w);
- }
-
- if (targets != 0) {
- target = targets[0];
-
- if (targets[1] == None) { /* last target in list */
- params++;
- num_params--;
- targets = _SelectionTargets(w);
- } else {
- targets = &(targets[1]);
- }
-
- if (num_params) {
- /* 'list' is freed in SelectionReceived */
- list = XtNew(struct _SelectionList);
- if (list != 0) {
- list->params = params;
- list->count = num_params;
- list->targets = targets;
- list->time = ev_time;
- }
- } else {
- list = NULL;
- }
-
- XtGetSelectionValue(w, selection,
- target,
- SelectionReceived,
- (XtPointer) list, ev_time);
- }
- }
-}
-
-#if OPT_TRACE && OPT_WIDE_CHARS
-static void
-GettingSelection(Display * dpy, Atom type, Char * line, unsigned long len)
-{
- Char *cp;
- char *name;
-
- name = XGetAtomName(dpy, type);
-
- TRACE(("Getting %s (%ld)\n", name, (long int) type));
- for (cp = line; cp < line + len; cp++) {
- TRACE(("[%d:%lu]", cp + 1 - line, len));
- if (isprint(*cp)) {
- TRACE(("%c\n", *cp));
- } else {
- TRACE(("\\x%02x\n", *cp));
- }
- }
-}
-#else
-#define GettingSelection(dpy,type,line,len) /* nothing */
-#endif
-
-#ifdef VMS
-# define tty_vwrite(pty,lag,l) tt_write(lag,l)
-#else /* !( VMS ) */
-# define tty_vwrite(pty,lag,l) v_write(pty,lag,l)
-#endif /* defined VMS */
-
-#if OPT_PASTE64
-/* Return base64 code character given 6-bit number */
-static const char base64_code[] = "\
-ABCDEFGHIJKLMNOPQRSTUVWXYZ\
-abcdefghijklmnopqrstuvwxyz\
-0123456789+/";
-static void
-base64_flush(TScreen * screen)
-{
- Char x;
- switch (screen->base64_count) {
- case 0:
- break;
- case 2:
- x = base64_code[screen->base64_accu << 4];
- tty_vwrite(screen->respond, &x, 1);
- break;
- case 4:
- x = base64_code[screen->base64_accu << 2];
- tty_vwrite(screen->respond, &x, 1);
- break;
- }
- if (screen->base64_pad & 3)
- tty_vwrite(screen->respond,
- (Char *) "===",
- 4 - (screen->base64_pad & 3));
- screen->base64_count = 0;
- screen->base64_accu = 0;
- screen->base64_pad = 0;
-}
-#endif /* OPT_PASTE64 */
-
-static void
-_qWriteSelectionData(TScreen * screen, Char * lag, unsigned length)
-{
-#if OPT_PASTE64
- if (screen->base64_paste) {
- /* Send data as base64 */
- Char *p = lag;
- Char buf[64];
- unsigned x = 0;
- while (length--) {
- switch (screen->base64_count) {
- case 0:
- buf[x++] = base64_code[*p >> 2];
- screen->base64_accu = (*p & 0x3);
- screen->base64_count = 2;
- ++p;
- break;
- case 2:
- buf[x++] = base64_code[(screen->base64_accu << 4) + (*p >> 4)];
- screen->base64_accu = (*p & 0xF);
- screen->base64_count = 4;
- ++p;
- break;
- case 4:
- buf[x++] = base64_code[(screen->base64_accu << 2) + (*p >> 6)];
- buf[x++] = base64_code[*p & 0x3F];
- screen->base64_accu = 0;
- screen->base64_count = 0;
- ++p;
- break;
- }
- if (x >= 63) {
- /* Write 63 or 64 characters */
- screen->base64_pad += x;
- tty_vwrite(screen->respond, buf, x);
- x = 0;
- }
- }
- if (x != 0) {
- screen->base64_pad += x;
- tty_vwrite(screen->respond, buf, x);
- }
- } else
-#endif /* OPT_PASTE64 */
-#if OPT_READLINE
- if (SCREEN_FLAG(screen, paste_quotes)) {
- while (length--) {
- tty_vwrite(screen->respond, (Char *) "\026", 1); /* Control-V */
- tty_vwrite(screen->respond, lag++, 1);
- }
- } else
-#endif
- tty_vwrite(screen->respond, lag, length);
-}
-
-static void
-_WriteSelectionData(TScreen * screen, Char * line, int length)
-{
- /* Write data to pty a line at a time. */
- /* Doing this one line at a time may no longer be necessary
- because v_write has been re-written. */
-
- Char *lag, *end;
-
- /* in the VMS version, if tt_pasting isn't set to True then qio
- reads aren't blocked and an infinite loop is entered, where the
- pasted text shows up as new input, goes in again, shows up
- again, ad nauseum. */
-#ifdef VMS
- tt_pasting = True;
-#endif
-
- end = &line[length];
- lag = line;
-
-#if OPT_PASTE64
- if (screen->base64_paste) {
- _qWriteSelectionData(screen, lag, (unsigned) (end - lag));
- base64_flush(screen);
- } else
-#endif
- {
- if (!SCREEN_FLAG(screen, paste_literal_nl)) {
- Char *cp;
- for (cp = line; cp != end; cp++) {
- if (*cp == '\n') {
- *cp = '\r';
- _qWriteSelectionData(screen, lag, (unsigned) (cp - lag + 1));
- lag = cp + 1;
- }
- }
- }
-
- if (lag != end) {
- _qWriteSelectionData(screen, lag, (unsigned) (end - lag));
- }
- }
-#ifdef VMS
- tt_pasting = False;
- tt_start_read(); /* reenable reads or a character may be lost */
-#endif
-}
-
-#if OPT_READLINE
-static void
-_WriteKey(TScreen * screen, Char * in)
-{
- Char line[16];
- unsigned count = 0;
- unsigned length = strlen((char *) in);
-
- if (screen->control_eight_bits) {
- line[count++] = CSI;
- } else {
- line[count++] = ESC;
- line[count++] = '[';
- }
- while (length--)
- line[count++] = *in++;
- line[count++] = '~';
- tty_vwrite(screen->respond, line, count);
-}
-#endif /* OPT_READLINE */
-
-/* SelectionReceived: stuff received selection text into pty */
-
-/* ARGSUSED */
-static void
-SelectionReceived(Widget w,
- XtPointer client_data,
- Atom * selection GCC_UNUSED,
- Atom * type,
- XtPointer value,
- unsigned long *length,
- int *format GCC_UNUSED)
-{
- char **text_list = NULL;
- int text_list_count;
- XTextProperty text_prop;
- TScreen *screen;
- Display *dpy;
-#if OPT_TRACE && OPT_WIDE_CHARS
- Char *line = (Char *) value;
-#endif
-
- if (!IsXtermWidget(w))
- return;
- screen = &((XtermWidget) w)->screen;
- dpy = XtDisplay(w);
-
- if (*type == 0 /*XT_CONVERT_FAIL */
- || *length == 0
- || value == NULL)
- goto fail;
-
- text_prop.value = (unsigned char *) value;
- text_prop.encoding = *type;
- text_prop.format = *format;
- text_prop.nitems = *length;
-
-#if OPT_WIDE_CHARS
- if (screen->wide_chars) {
- if (*type == XA_UTF8_STRING(XtDisplay(w)) ||
- *type == XA_STRING ||
- *type == XA_COMPOUND_TEXT(XtDisplay(w))) {
- GettingSelection(dpy, *type, line, *length);
- if (Xutf8TextPropertyToTextList(dpy, &text_prop,
- &text_list,
- &text_list_count) < 0) {
- TRACE(("Conversion failed\n"));
- text_list = NULL;
- }
- }
- } else
-#endif /* OPT_WIDE_CHARS */
- {
- /* Convert the selection to locale's multibyte encoding. */
-
- /* There's no need to special-case UTF8_STRING. If Xlib
- doesn't know about it, we didn't request it. If a broken
- selection holder sends it anyhow, the conversion function
- will fail. */
-
- if (*type == XA_UTF8_STRING(XtDisplay(w)) ||
- *type == XA_STRING ||
- *type == XA_COMPOUND_TEXT(XtDisplay(w))) {
- Status rc;
- GettingSelection(dpy, *type, line, *length);
- if (*type == XA_STRING && screen->brokenSelections) {
- rc = XTextPropertyToStringList(&text_prop,
- &text_list, &text_list_count);
- } else {
- rc = XmbTextPropertyToTextList(dpy, &text_prop,
- &text_list,
- &text_list_count);
- }
- if (rc < 0) {
- TRACE(("Conversion failed\n"));
- text_list = NULL;
- }
- }
- }
-
- if (text_list != NULL && text_list_count != 0) {
- int i;
-
-#if OPT_PASTE64
- if (screen->base64_paste) {
- ;
- } else
-#endif
-#if OPT_READLINE
- if (SCREEN_FLAG(screen, paste_brackets)) {
- _WriteKey(screen, (Char *) "200");
- }
-#endif
- for (i = 0; i < text_list_count; i++) {
- int len = strlen(text_list[i]);
- _WriteSelectionData(screen, (Char *) text_list[i], len);
- }
-#if OPT_PASTE64
- if (screen->base64_paste) {
- ResetPaste64();
- } else
-#endif
-#if OPT_READLINE
- if (SCREEN_FLAG(screen, paste_brackets)) {
- _WriteKey(screen, (Char *) "201");
- }
-#endif
- XFreeStringList(text_list);
- } else
- goto fail;
-
- XtFree((char *) client_data);
- XtFree((char *) value);
-
- return;
-
- fail:
- if (client_data != 0) {
- struct _SelectionList *list = (struct _SelectionList *) client_data;
- xtermGetSelection(w, list->time,
- list->params, list->count, list->targets);
- XtFree((char *) client_data);
-#if OPT_PASTE64
- } else {
- ResetPaste64();
-#endif
- }
- return;
-}
-
-void
-HandleInsertSelection(Widget w,
- XEvent * event, /* assumed to be XButtonEvent* */
- String * params, /* selections in precedence order */
- Cardinal *num_params)
-{
-#if OPT_READLINE
- int ldelta;
- TScreen *screen = &((XtermWidget) w)->screen;
-#endif
-
- if (SendMousePosition(w, event))
- return;
-
-#if OPT_READLINE
- if ((event->type == ButtonPress || event->type == ButtonRelease)
- /* Disable on Shift-mouse, including the application-mouse modes */
- && !(KeyModifiers & ShiftMask)
- && (screen->send_mouse_pos == MOUSE_OFF)
- && SCREEN_FLAG(screen, paste_moves)
- && rowOnCurrentLine(eventRow(event), &ldelta))
- ReadLineMovePoint(eventColBetween(event), ldelta);
-#endif /* OPT_READLINE */
-
- xtermGetSelection(w, event->xbutton.time, params, *num_params, NULL);
-}
-
-static SelectUnit
-EvalSelectUnit(Time buttonDownTime, SelectUnit defaultUnit)
-{
- int delta;
-
- if (lastButtonUpTime == (Time) 0) /* first time and once in a blue moon */
- delta = term->screen.multiClickTime + 1;
- else if (buttonDownTime > lastButtonUpTime) /* most of the time */
- delta = buttonDownTime - lastButtonUpTime;
- else /* time has rolled over since lastButtonUpTime */
- delta = (((Time) ~ 0) - lastButtonUpTime) + buttonDownTime;
-
- if (delta > term->screen.multiClickTime) {
- numberOfClicks = 1;
- return defaultUnit;
- } else {
- ++numberOfClicks;
- return ((selectUnit + 1) % NSELECTUNITS);
- }
-}
-
-static void
-do_select_start(Widget w,
- XEvent * event, /* must be XButtonEvent* */
- int startrow,
- int startcol)
-{
- if (SendMousePosition(w, event))
- return;
- selectUnit = EvalSelectUnit(event->xbutton.time, SELECTCHAR);
- replyToEmacs = False;
-
-#if OPT_READLINE
- lastButtonDownTime = event->xbutton.time;
-#endif
-
- StartSelect(startrow, startcol);
-}
-
-/* ARGSUSED */
-void
-HandleSelectStart(Widget w,
- XEvent * event, /* must be XButtonEvent* */
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED)
-{
- TScreen *screen;
- int startrow, startcol;
-
- if (!IsXtermWidget(w))
- return;
-
- screen = &((XtermWidget) w)->screen;
- firstValidRow = 0;
- lastValidRow = screen->max_row;
- PointToRowCol(event->xbutton.y, event->xbutton.x, &startrow, &startcol);
-
-#if OPT_READLINE
- ExtendingSelection = 0;
-#endif
-
- do_select_start(w, event, startrow, startcol);
-}
-
-/* ARGSUSED */
-void
-HandleKeyboardSelectStart(Widget w,
- XEvent * event, /* must be XButtonEvent* */
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED)
-{
- TScreen *screen;
-
- if (!IsXtermWidget(w))
- return;
-
- screen = &((XtermWidget) w)->screen;
- do_select_start(w, event, screen->cursor_row, screen->cursor_col);
-}
-
-static void
-TrackDown(XButtonEvent * event)
-{
- int startrow, startcol;
-
- selectUnit = EvalSelectUnit(event->time, SELECTCHAR);
- if (numberOfClicks > 1) {
- PointToRowCol(event->y, event->x, &startrow, &startcol);
- replyToEmacs = True;
- StartSelect(startrow, startcol);
- } else {
- waitingForTrackInfo = True;
- EditorButton((XButtonEvent *) event);
- }
-}
-
-#define boundsCheck(x) if (x < 0) \
- x = 0; \
- else if (x >= screen->max_row) \
- x = screen->max_row
-
-void
-TrackMouse(int func, int startrow, int startcol, int firstrow, int lastrow)
-{
- TScreen *screen = &term->screen;
-
- if (!waitingForTrackInfo) { /* Timed out, so ignore */
- return;
- }
- waitingForTrackInfo = False;
- if (func == 0)
- return;
- boundsCheck(startrow);
- boundsCheck(firstrow);
- boundsCheck(lastrow);
- firstValidRow = firstrow;
- lastValidRow = lastrow;
- replyToEmacs = True;
- StartSelect(startrow, startcol);
-}
-
-static void
-StartSelect(int startrow, int startcol)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("StartSelect row=%d, col=%d\n", startrow, startcol));
- if (screen->cursor_state)
- HideCursor();
- if (numberOfClicks == 1) {
- /* set start of selection */
- rawRow = startrow;
- rawCol = startcol;
-
- }
- /* else use old values in rawRow, Col */
- saveStartRRow = startERow = rawRow;
- saveStartRCol = startECol = rawCol;
- saveEndRRow = endERow = rawRow;
- saveEndRCol = endECol = rawCol;
- if (Coordinate(startrow, startcol) < Coordinate(rawRow, rawCol)) {
- eventMode = LEFTEXTENSION;
- startERow = startrow;
- startECol = startcol;
- } else {
- eventMode = RIGHTEXTENSION;
- endERow = startrow;
- endECol = startcol;
- }
- ComputeSelect(startERow, startECol, endERow, endECol, False);
-}
-
-static void
-EndExtend(Widget w,
- XEvent * event, /* must be XButtonEvent */
- String * params, /* selections */
- Cardinal num_params,
- Bool use_cursor_loc)
-{
- int row, col;
- unsigned count;
- TScreen *screen = &term->screen;
- Char line[9];
-
- if (use_cursor_loc) {
- row = screen->cursor_row;
- col = screen->cursor_col;
- } else {
- PointToRowCol(event->xbutton.y, event->xbutton.x, &row, &col);
- }
- ExtendExtend(row, col);
- lastButtonUpTime = event->xbutton.time;
- if (startSRow != endSRow || startSCol != endSCol) {
- if (replyToEmacs) {
- count = 0;
- if (screen->control_eight_bits) {
- line[count++] = CSI;
- } else {
- line[count++] = ESC;
- line[count++] = '[';
- }
- if (rawRow == startSRow && rawCol == startSCol
- && row == endSRow && col == endSCol) {
- /* Use short-form emacs select */
- line[count++] = 't';
- line[count++] = ' ' + endSCol + 1;
- line[count++] = ' ' + endSRow + 1;
- } else {
- /* long-form, specify everything */
- line[count++] = 'T';
- line[count++] = ' ' + startSCol + 1;
- line[count++] = ' ' + startSRow + 1;
- line[count++] = ' ' + endSCol + 1;
- line[count++] = ' ' + endSRow + 1;
- line[count++] = ' ' + col + 1;
- line[count++] = ' ' + row + 1;
- }
- v_write(screen->respond, line, count);
- TrackText(0, 0, 0, 0);
- }
- }
- SelectSet(w, event, params, num_params);
- eventMode = NORMAL;
-}
-
-void
-HandleSelectSet(Widget w,
- XEvent * event,
- String * params,
- Cardinal *num_params)
-{
- SelectSet(w, event, params, *num_params);
-}
-
-/* ARGSUSED */
-static void
-SelectSet(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal num_params)
-{
- TRACE(("SelectSet\n"));
- /* Only do select stuff if non-null select */
- if (startSRow != endSRow || startSCol != endSCol) {
- SaltTextAway(startSRow, startSCol, endSRow, endSCol,
- params, num_params);
- } else {
- DisownSelection(term);
- }
-}
-
-#define Abs(x) ((x) < 0 ? -(x) : (x))
-
-/* ARGSUSED */
-static void
-do_start_extend(Widget w,
- XEvent * event, /* must be XButtonEvent* */
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED,
- Bool use_cursor_loc)
-{
- TScreen *screen;
- int row, col, coord;
-
- if (!IsXtermWidget(w))
- return;
-
- screen = &((XtermWidget) w)->screen;
- if (SendMousePosition(w, event))
- return;
- firstValidRow = 0;
- lastValidRow = screen->max_row;
-#if OPT_READLINE
- if ((KeyModifiers & ShiftMask)
- || event->xbutton.button != Button3
- || !(SCREEN_FLAG(screen, dclick3_deletes)))
-#endif
- selectUnit = EvalSelectUnit(event->xbutton.time, selectUnit);
- replyToEmacs = False;
-
-#if OPT_READLINE
- CheckSecondPress3(event);
-#endif
-
- if (numberOfClicks == 1
- || (SCREEN_FLAG(screen, dclick3_deletes) /* Dclick special */
- &&!(KeyModifiers & ShiftMask))) {
- /* Save existing selection so we can reestablish it if the guy
- extends past the other end of the selection */
- saveStartRRow = startERow = startRRow;
- saveStartRCol = startECol = startRCol;
- saveEndRRow = endERow = endRRow;
- saveEndRCol = endECol = endRCol;
- } else {
- /* He just needed the selection mode changed, use old values. */
- startERow = startRRow = saveStartRRow;
- startECol = startRCol = saveStartRCol;
- endERow = endRRow = saveEndRRow;
- endECol = endRCol = saveEndRCol;
-
- }
- if (use_cursor_loc) {
- row = screen->cursor_row;
- col = screen->cursor_col;
- } else {
- PointToRowCol(event->xbutton.y, event->xbutton.x, &row, &col);
- }
- coord = Coordinate(row, col);
-
- if (Abs(coord - Coordinate(startSRow, startSCol))
- < Abs(coord - Coordinate(endSRow, endSCol))
- || coord < Coordinate(startSRow, startSCol)) {
- /* point is close to left side of selection */
- eventMode = LEFTEXTENSION;
- startERow = row;
- startECol = col;
- } else {
- /* point is close to left side of selection */
- eventMode = RIGHTEXTENSION;
- endERow = row;
- endECol = col;
- }
- ComputeSelect(startERow, startECol, endERow, endECol, True);
-
-#if OPT_READLINE
- if (startSRow != endSRow || startSCol != endSCol)
- ExtendingSelection = 1;
-#endif
-}
-
-static void
-ExtendExtend(int row, int col)
-{
- int coord = Coordinate(row, col);
-
- TRACE(("ExtendExtend row=%d, col=%d\n", row, col));
- if (eventMode == LEFTEXTENSION
- && (coord + (selectUnit != SELECTCHAR)) > Coordinate(endSRow, endSCol)) {
- /* Whoops, he's changed his mind. Do RIGHTEXTENSION */
- eventMode = RIGHTEXTENSION;
- startERow = saveStartRRow;
- startECol = saveStartRCol;
- } else if (eventMode == RIGHTEXTENSION
- && coord < Coordinate(startSRow, startSCol)) {
- /* Whoops, he's changed his mind. Do LEFTEXTENSION */
- eventMode = LEFTEXTENSION;
- endERow = saveEndRRow;
- endECol = saveEndRCol;
- }
- if (eventMode == LEFTEXTENSION) {
- startERow = row;
- startECol = col;
- } else {
- endERow = row;
- endECol = col;
- }
- ComputeSelect(startERow, startECol, endERow, endECol, False);
-
-#if OPT_READLINE
- if (startSRow != endSRow || startSCol != endSCol)
- ExtendingSelection = 1;
-#endif
-}
-
-void
-HandleStartExtend(Widget w,
- XEvent * event, /* must be XButtonEvent* */
- String * params, /* unused */
- Cardinal *num_params) /* unused */
-{
- do_start_extend(w, event, params, num_params, False);
-}
-
-void
-HandleKeyboardStartExtend(Widget w,
- XEvent * event, /* must be XButtonEvent* */
- String * params, /* unused */
- Cardinal *num_params) /* unused */
-{
- do_start_extend(w, event, params, num_params, True);
-}
-
-void
-ScrollSelection(TScreen * screen, int amount, Bool always)
-{
- int minrow = -screen->savedlines - screen->topline;
- int maxrow = screen->max_row - screen->topline;
- int maxcol = screen->max_col;
-
-#define scroll_update_one(row, col) \
- row += amount; \
- if (row < minrow) { \
- row = minrow; \
- col = 0; \
- } \
- if (row > maxrow) { \
- row = maxrow; \
- col = maxcol; \
- }
-
- scroll_update_one(startRRow, startRCol);
- scroll_update_one(endRRow, endRCol);
- scroll_update_one(startSRow, startSCol);
- scroll_update_one(endSRow, endSCol);
-
- scroll_update_one(rawRow, rawCol);
-
- /*
- * If we are told to scroll the selection but it lies outside the scrolling
- * margins, then that could cause the selection to move (bad). It is not
- * simple to fix, because this function is called both for the scrollbar
- * actions as well as application scrolling. The 'always' flag is set in
- * the former case. The rest of the logic handles the latter.
- */
- if (ScrnHaveSelection(screen)) {
- int adjust;
-
- adjust = screen->startHRow + screen->topline;
- if (always
- || !ScrnHaveLineMargins(screen)
- || ScrnIsLineInMargins(screen, adjust)) {
- scroll_update_one(screen->startHRow, screen->startHCol);
- }
- adjust = screen->endHRow + screen->topline;
- if (always
- || !ScrnHaveLineMargins(screen)
- || ScrnIsLineInMargins(screen, adjust)) {
- scroll_update_one(screen->endHRow, screen->endHCol);
- }
- }
-
- screen->startHCoord = Coordinate(screen->startHRow, screen->startHCol);
- screen->endHCoord = Coordinate(screen->endHRow, screen->endHCol);
-}
-
-/*ARGSUSED*/
-void
-ResizeSelection(TScreen * screen GCC_UNUSED, int rows, int cols)
-{
- rows--; /* decr to get 0-max */
- cols--;
-
- if (startRRow > rows)
- startRRow = rows;
- if (startSRow > rows)
- startSRow = rows;
- if (endRRow > rows)
- endRRow = rows;
- if (endSRow > rows)
- endSRow = rows;
- if (rawRow > rows)
- rawRow = rows;
-
- if (startRCol > cols)
- startRCol = cols;
- if (startSCol > cols)
- startSCol = cols;
- if (endRCol > cols)
- endRCol = cols;
- if (endSCol > cols)
- endSCol = cols;
- if (rawCol > cols)
- rawCol = cols;
-}
-
-#if OPT_WIDE_CHARS
-Bool
-iswide(int i)
-{
- return (i == HIDDEN_CHAR) || (my_wcwidth(i) == 2);
-}
-
-#define isWideCell(row, col) iswide((int)XTERM_CELL(row, col))
-#endif
-
-static void
-PointToRowCol(int y,
- int x,
- int *r,
- int *c)
-/* Convert pixel coordinates to character coordinates.
- Rows are clipped between firstValidRow and lastValidRow.
- Columns are clipped between to be 0 or greater, but are not clipped to some
- maximum value. */
-{
- TScreen *screen = &term->screen;
- int row, col;
-
- row = (y - screen->border) / FontHeight(screen);
- if (row < firstValidRow)
- row = firstValidRow;
- else if (row > lastValidRow)
- row = lastValidRow;
- col = (x - OriginX(screen)) / FontWidth(screen);
- if (col < 0)
- col = 0;
- else if (col > MaxCols(screen)) {
- col = MaxCols(screen);
- }
-#if OPT_WIDE_CHARS
- /*
- * If we got a click on the right half of a doublewidth character,
- * pretend it happened on the left half.
- */
- if (col > 0
- && isWideCell(row, col - 1)
- && (XTERM_CELL(row, col) == HIDDEN_CHAR)) {
- col -= 1;
- }
-#endif
- *r = row;
- *c = col;
-}
-
-static int
-LastTextCol(int row)
-{
- TScreen *screen = &term->screen;
- int i;
- Char *ch;
-
- if ((row += screen->topline) + screen->savedlines >= 0) {
- for (i = screen->max_col,
- ch = SCRN_BUF_ATTRS(screen, row) + i;
- i >= 0 && !(*ch & CHARDRAWN);
- ch--, i--) ;
-#if OPT_DEC_CHRSET
- if (CSET_DOUBLE(SCRN_BUF_CSETS(screen, row)[0])) {
- i *= 2;
- }
-#endif
- } else {
- i = -1;
- }
- return (i);
-}
-
-#if !OPT_WIDE_CHARS
-/*
-** double click table for cut and paste in 8 bits
-**
-** This table is divided in four parts :
-**
-** - control characters [0,0x1f] U [0x80,0x9f]
-** - separators [0x20,0x3f] U [0xa0,0xb9]
-** - binding characters [0x40,0x7f] U [0xc0,0xff]
-** - exceptions
-*/
-/* *INDENT-OFF* */
-static int charClass[256] =
-{
-/* NUL SOH STX ETX EOT ENQ ACK BEL */
- 32, 1, 1, 1, 1, 1, 1, 1,
-/* BS HT NL VT NP CR SO SI */
- 1, 32, 1, 1, 1, 1, 1, 1,
-/* DLE DC1 DC2 DC3 DC4 NAK SYN ETB */
- 1, 1, 1, 1, 1, 1, 1, 1,
-/* CAN EM SUB ESC FS GS RS US */
- 1, 1, 1, 1, 1, 1, 1, 1,
-/* SP ! " # $ % & ' */
- 32, 33, 34, 35, 36, 37, 38, 39,
-/* ( ) * + , - . / */
- 40, 41, 42, 43, 44, 45, 46, 47,
-/* 0 1 2 3 4 5 6 7 */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/* 8 9 : ; < = > ? */
- 48, 48, 58, 59, 60, 61, 62, 63,
-/* @ A B C D E F G */
- 64, 48, 48, 48, 48, 48, 48, 48,
-/* H I J K L M N O */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/* P Q R S T U V W */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/* X Y Z [ \ ] ^ _ */
- 48, 48, 48, 91, 92, 93, 94, 48,
-/* ` a b c d e f g */
- 96, 48, 48, 48, 48, 48, 48, 48,
-/* h i j k l m n o */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/* p q r s t u v w */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/* x y z { | } ~ DEL */
- 48, 48, 48, 123, 124, 125, 126, 1,
-/* x80 x81 x82 x83 IND NEL SSA ESA */
- 1, 1, 1, 1, 1, 1, 1, 1,
-/* HTS HTJ VTS PLD PLU RI SS2 SS3 */
- 1, 1, 1, 1, 1, 1, 1, 1,
-/* DCS PU1 PU2 STS CCH MW SPA EPA */
- 1, 1, 1, 1, 1, 1, 1, 1,
-/* x98 x99 x9A CSI ST OSC PM APC */
- 1, 1, 1, 1, 1, 1, 1, 1,
-/* - i c/ L ox Y- | So */
- 160, 161, 162, 163, 164, 165, 166, 167,
-/* .. c0 ip << _ R0 - */
- 168, 169, 170, 171, 172, 173, 174, 175,
-/* o +- 2 3 ' u q| . */
- 176, 177, 178, 179, 180, 181, 182, 183,
-/* , 1 2 >> 1/4 1/2 3/4 ? */
- 184, 185, 186, 187, 188, 189, 190, 191,
-/* A` A' A^ A~ A: Ao AE C, */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/* E` E' E^ E: I` I' I^ I: */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/* D- N~ O` O' O^ O~ O: X */
- 48, 48, 48, 48, 48, 48, 48, 215,
-/* O/ U` U' U^ U: Y' P B */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/* a` a' a^ a~ a: ao ae c, */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/* e` e' e^ e: i` i' i^ i: */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/* d n~ o` o' o^ o~ o: -: */
- 48, 48, 48, 48, 48, 48, 48, 247,
-/* o/ u` u' u^ u: y' P y: */
- 48, 48, 48, 48, 48, 48, 48, 48};
-/* *INDENT-ON* */
-
-int
-SetCharacterClassRange(int low, /* in range of [0..255] */
- int high,
- int value) /* arbitrary */
-{
-
- if (low < 0 || high > 255 || high < low)
- return (-1);
-
- for (; low <= high; low++)
- charClass[low] = value;
-
- return (0);
-}
-#endif
-
-#if OPT_WIDE_CHARS
-static int
-class_of(TScreen * screen, int row, int col)
-{
- int value;
-#if OPT_DEC_CHRSET
- if (CSET_DOUBLE(SCRN_BUF_CSETS(screen, row + screen->topline)[0])) {
- col /= 2;
- }
-#endif
- value = XTERM_CELL(row, col);
- if_OPT_WIDE_CHARS(screen, {
- return CharacterClass(value);
- });
- return CharacterClass(value);
-}
-#define ClassSelects(screen, row, col, cclass) \
- (class_of(screen, row, col) == cclass \
- || XTERM_CELL(row, col) == HIDDEN_CHAR)
-#else
-#define class_of(screen,row,col) charClass[XTERM_CELL(row, col)]
-#define ClassSelects(screen, row, col, cclass) \
- (class_of(screen,row, col) == cclass)
-#endif
-
-/*
- * sets startSRow startSCol endSRow endSCol
- * ensuring that they have legal values
- */
-static void
-ComputeSelect(int startRow,
- int startCol,
- int endRow,
- int endCol,
- Bool extend)
-{
- TScreen *screen = &term->screen;
- int length;
- int cclass;
-
- TRACE(("ComputeSelect(startRow=%d, startCol=%d, endRow=%d, endCol=%d, %sextend)\n",
- startRow, startCol, endRow, endCol, extend ? "" : "no"));
-
-#if OPT_WIDE_CHARS
- if (startCol > 1
- && isWideCell(startRow, startCol - 1)
- && XTERM_CELL(startRow, startCol - 0) == HIDDEN_CHAR) {
- fprintf(stderr, "Adjusting start. Changing downwards from %i.\n", startCol);
- startCol -= 1;
- if (endCol == (startCol + 1))
- endCol--;
- }
-
- if (endCol > 1
- && isWideCell(endRow, endCol - 1)
- && XTERM_CELL(endRow, endCol) == HIDDEN_CHAR) {
- endCol += 1;
- }
-#endif
-
- if (Coordinate(startRow, startCol) <= Coordinate(endRow, endCol)) {
- startSRow = startRRow = startRow;
- startSCol = startRCol = startCol;
- endSRow = endRRow = endRow;
- endSCol = endRCol = endCol;
- } else { /* Swap them */
- startSRow = startRRow = endRow;
- startSCol = startRCol = endCol;
- endSRow = endRRow = startRow;
- endSCol = endRCol = startCol;
- }
-
- switch (selectUnit) {
- case SELECTCHAR:
- if (startSCol > (LastTextCol(startSRow) + 1)) {
- startSCol = 0;
- startSRow++;
- }
- if (endSCol > (LastTextCol(endSRow) + 1)) {
- endSCol = 0;
- endSRow++;
- }
- break;
- case SELECTWORD:
- if (startSCol > (LastTextCol(startSRow) + 1)) {
- startSCol = 0;
- startSRow++;
- } else {
- cclass = class_of(screen, startSRow, startSCol);
- do {
- --startSCol;
- if (startSCol < 0
- && ScrnTstWrapped(screen, startSRow - 1)) {
- --startSRow;
- startSCol = LastTextCol(startSRow);
- }
- } while (startSCol >= 0
- && ClassSelects(screen, startSRow, startSCol, cclass));
- ++startSCol;
- }
-
-#if OPT_WIDE_CHARS
- if (startSCol && XTERM_CELL(startSRow, startSCol) == HIDDEN_CHAR)
- startSCol++;
-#endif
-
- if (endSCol > (LastTextCol(endSRow) + 1)) {
- endSCol = 0;
- endSRow++;
- } else {
- length = LastTextCol(endSRow);
- cclass = class_of(screen, endSRow, endSCol);
- do {
- ++endSCol;
- if (endSCol > length
- && ScrnTstWrapped(screen, endSRow)) {
- endSCol = 0;
- ++endSRow;
- length = LastTextCol(endSRow);
- }
- } while (endSCol <= length
- && ClassSelects(screen, endSRow, endSCol, cclass));
- /* Word select selects if pointing to any char
- in "word", especially in that it includes
- the last character in a word. So no --endSCol
- and do special eol handling */
- if (endSCol > length + 1) {
- endSCol = 0;
- ++endSRow;
- }
- }
-
-#if OPT_WIDE_CHARS
- if (endSCol && XTERM_CELL(endSRow, endSCol) == HIDDEN_CHAR)
- endSCol++;
-#endif
-
- saveStartWRow = startSRow;
- saveStartWCol = startSCol;
- break;
- case SELECTLINE:
- while (ScrnTstWrapped(screen, endSRow)) {
- ++endSRow;
- }
- if (term->screen.cutToBeginningOfLine
- || startSRow < saveStartWRow) {
- startSCol = 0;
- while (ScrnTstWrapped(screen, startSRow - 1)) {
- --startSRow;
- }
- } else if (!extend) {
- if ((startRow < saveStartWRow)
- || (startRow == saveStartWRow
- && startCol < saveStartWCol)) {
- startSCol = 0;
- while (ScrnTstWrapped(screen, startSRow - 1)) {
- --startSRow;
- }
- } else {
- startSRow = saveStartWRow;
- startSCol = saveStartWCol;
- }
- }
- if (term->screen.cutNewline) {
- endSCol = 0;
- ++endSRow;
- } else {
- endSCol = LastTextCol(endSRow) + 1;
- }
- break;
- }
-
- /* check boundaries */
- ScrollSelection(screen, 0, False);
-
- TrackText(startSRow, startSCol, endSRow, endSCol);
- return;
-}
-
-void
-TrackText(int frow,
- int fcol,
- int trow,
- int tcol)
- /* Guaranteed (frow, fcol) <= (trow, tcol) */
-{
- int from, to;
- TScreen *screen = &term->screen;
- int old_startrow, old_startcol, old_endrow, old_endcol;
-
- TRACE(("TrackText(frow=%d, fcol=%d, trow=%d, tcol=%d)\n",
- frow, fcol, trow, tcol));
-
- old_startrow = screen->startHRow;
- old_startcol = screen->startHCol;
- old_endrow = screen->endHRow;
- old_endcol = screen->endHCol;
- if (frow == old_startrow && fcol == old_startcol &&
- trow == old_endrow && tcol == old_endcol)
- return;
- screen->startHRow = frow;
- screen->startHCol = fcol;
- screen->endHRow = trow;
- screen->endHCol = tcol;
- from = Coordinate(frow, fcol);
- to = Coordinate(trow, tcol);
- if (to <= screen->startHCoord || from > screen->endHCoord) {
- /* No overlap whatsoever between old and new hilite */
- ReHiliteText(old_startrow, old_startcol, old_endrow, old_endcol);
- ReHiliteText(frow, fcol, trow, tcol);
- } else {
- if (from < screen->startHCoord) {
- /* Extend left end */
- ReHiliteText(frow, fcol, old_startrow, old_startcol);
- } else if (from > screen->startHCoord) {
- /* Shorten left end */
- ReHiliteText(old_startrow, old_startcol, frow, fcol);
- }
- if (to > screen->endHCoord) {
- /* Extend right end */
- ReHiliteText(old_endrow, old_endcol, trow, tcol);
- } else if (to < screen->endHCoord) {
- /* Shorten right end */
- ReHiliteText(trow, tcol, old_endrow, old_endcol);
- }
- }
- screen->startHCoord = from;
- screen->endHCoord = to;
-}
-
-static void
-ReHiliteText(int frow,
- int fcol,
- int trow,
- int tcol)
- /* Guaranteed that (frow, fcol) <= (trow, tcol) */
-{
- TScreen *screen = &term->screen;
- int i;
-
- TRACE(("ReHiliteText from %d.%d to %d.%d\n", frow, fcol, trow, tcol));
-
- if (frow < 0)
- frow = fcol = 0;
- else if (frow > screen->max_row)
- return; /* nothing to do, since trow >= frow */
-
- if (trow < 0)
- return; /* nothing to do, since frow <= trow */
- else if (trow > screen->max_row) {
- trow = screen->max_row;
- tcol = MaxCols(screen);
- }
- if (frow == trow && fcol == tcol)
- return;
-
- if (frow != trow) { /* do multiple rows */
- if ((i = screen->max_col - fcol + 1) > 0) { /* first row */
- ScrnRefresh(screen, frow, fcol, 1, i, True);
- }
- if ((i = trow - frow - 1) > 0) { /* middle rows */
- ScrnRefresh(screen, frow + 1, 0, i, MaxCols(screen), True);
- }
- if (tcol > 0 && trow <= screen->max_row) { /* last row */
- ScrnRefresh(screen, trow, 0, 1, tcol, True);
- }
- } else { /* do single row */
- ScrnRefresh(screen, frow, fcol, 1, tcol - fcol, True);
- }
-}
-
-static void
-SaltTextAway(int crow, int ccol, int row, int col,
- String * params, /* selections */
- Cardinal num_params)
- /* Guaranteed that (crow, ccol) <= (row, col), and that both points are valid
- (may have row = screen->max_row+1, col = 0) */
-{
- TScreen *screen = &term->screen;
- int i, j = 0;
- int eol;
- Char *line;
- Char *lp;
-
- if (crow == row && ccol > col) {
- int tmp = ccol;
- ccol = col;
- col = tmp;
- }
-
- --col;
- /* first we need to know how long the string is before we can save it */
-
- if (row == crow) {
- j = Length(screen, crow, ccol, col);
- } else { /* two cases, cut is on same line, cut spans multiple lines */
- j += Length(screen, crow, ccol, screen->max_col) + 1;
- for (i = crow + 1; i < row; i++)
- j += Length(screen, i, 0, screen->max_col) + 1;
- if (col >= 0)
- j += Length(screen, row, 0, col);
- }
-
- /* UTF-8 may require more space */
- if_OPT_WIDE_CHARS(screen, {
- j *= 4;
- });
-
- /* now get some memory to save it in */
-
- if (screen->selection_size <= j) {
- if ((line = (Char *) malloc((unsigned) j + 1)) == 0)
- SysError(ERROR_BMALLOC2);
- XtFree((char *) screen->selection_data);
- screen->selection_data = line;
- screen->selection_size = j + 1;
- } else {
- line = screen->selection_data;
- }
-
- if ((line == 0)
- || (j < 0))
- return;
-
- line[j] = '\0'; /* make sure it is null terminated */
- lp = line; /* lp points to where to save the text */
- if (row == crow) {
- lp = SaveText(screen, row, ccol, col, lp, &eol);
- } else {
- lp = SaveText(screen, crow, ccol, screen->max_col, lp, &eol);
- if (eol)
- *lp++ = '\n'; /* put in newline at end of line */
- for (i = crow + 1; i < row; i++) {
- lp = SaveText(screen, i, 0, screen->max_col, lp, &eol);
- if (eol)
- *lp++ = '\n';
- }
- if (col >= 0)
- lp = SaveText(screen, row, 0, col, lp, &eol);
- }
- *lp = '\0'; /* make sure we have end marked */
-
- TRACE(("Salted TEXT:%d:%.*s\n", lp - line, lp - line, line));
- screen->selection_length = (lp - line);
- _OwnSelection(term, params, num_params);
-}
-
-#if OPT_PASTE64
-void
-ClearSelectionBuffer()
-{
- TScreen *screen = &term->screen;
- screen->selection_length = 0;
- screen->base64_count = 0;
-}
-
-static void
-AppendStrToSelectionBuffer(Char * text, int len)
-{
- TScreen *screen = &term->screen;
- if (len != 0) {
- int j = screen->selection_length + len; /* New length */
- int k = j + (j >> 2) + 80; /* New size if we grow buffer: grow by ~50% */
- if (j + 1 >= screen->selection_size) {
- if (!screen->selection_length) {
- /* New buffer */
- Char *line;
- if ((line = (Char *) malloc((unsigned) k)) == 0)
- SysError(ERROR_BMALLOC2);
- XtFree((char *) screen->selection_data);
- screen->selection_data = line;
- } else {
- /* Realloc buffer */
- screen->selection_data = (Char *)
- realloc(screen->selection_data,
- (unsigned) k);
- if (screen->selection_data == 0)
- SysError(ERROR_BMALLOC2);
- }
- screen->selection_size = k;
- }
- memcpy(screen->selection_data + screen->selection_length, text, len);
- screen->selection_length += len;
- screen->selection_data[screen->selection_length] = 0;
- }
-}
-
-void
-AppendToSelectionBuffer(TScreen * screen, unsigned c)
-{
- int six;
- Char ch;
-
- /* Decode base64 character */
- if (c >= 'A' && c <= 'Z')
- six = c - 'A';
- else if (c >= 'a' && c <= 'z')
- six = c - 'a' + 26;
- else if (c >= '0' && c <= '9')
- six = c - '0' + 52;
- else if (c == '+')
- six = 62;
- else if (c == '/')
- six = 63;
- else
- return;
-
- /* Accumulate bytes */
- switch (screen->base64_count) {
- case 0:
- screen->base64_accu = six;
- screen->base64_count = 6;
- break;
-
- case 2:
- ch = (screen->base64_accu << 6) + six;
- screen->base64_count = 0;
- AppendStrToSelectionBuffer(&ch, 1);
- break;
-
- case 4:
- ch = (screen->base64_accu << 4) + (six >> 2);
- screen->base64_accu = (six & 0x3);
- screen->base64_count = 2;
- AppendStrToSelectionBuffer(&ch, 1);
- break;
-
- case 6:
- ch = (screen->base64_accu << 2) + (six >> 4);
- screen->base64_accu = (six & 0xF);
- screen->base64_count = 4;
- AppendStrToSelectionBuffer(&ch, 1);
- break;
- }
-}
-
-void
-CompleteSelection(char **args, Cardinal len)
-{
- term->screen.base64_count = 0;
- term->screen.base64_accu = 0;
- _OwnSelection(term, args, len);
-}
-#endif /* OPT_PASTE64 */
-
-static Bool
-_ConvertSelectionHelper(Widget w,
- Atom * type, XtPointer *value,
- unsigned long *length, int *format,
- int (*conversion_function) (Display *,
- char **, int,
- XICCEncodingStyle,
- XTextProperty *),
- XICCEncodingStyle conversion_style)
-{
- Display *d = XtDisplay(w);
- TScreen *screen;
- XTextProperty textprop;
-
- if (!IsXtermWidget(w))
- return False;
-
- screen = &((XtermWidget) w)->screen;
-
- if (conversion_function(d, (char **) &screen->selection_data, 1,
- conversion_style,
- &textprop) < Success)
- return False;
- *value = (XtPointer) textprop.value;
- *length = textprop.nitems;
- *type = textprop.encoding;
- *format = textprop.format;
- return True;
-}
-
-static Boolean
-ConvertSelection(Widget w,
- Atom * selection,
- Atom * target,
- Atom * type,
- XtPointer *value,
- unsigned long *length,
- int *format)
-{
- Display *d = XtDisplay(w);
- TScreen *screen;
- Bool result = False;
-
- if (!IsXtermWidget(w))
- return False;
-
- screen = &((XtermWidget) w)->screen;
-
- if (screen->selection_data == NULL)
- return False; /* can this happen? */
-
- if (*target == XA_TARGETS(d)) {
- Atom *targetP;
- Atom *std_targets;
- XPointer std_return = 0;
- unsigned long std_length;
- if (XmuConvertStandardSelection(w, screen->selection_time, selection,
- target, type, &std_return,
- &std_length, format)) {
- std_targets = (Atom *) (std_return);
- *length = std_length + 6;
- targetP = (Atom *) XtMalloc(sizeof(Atom) * (*length));
- *value = (XtPointer) targetP;
- *targetP++ = XA_STRING;
- *targetP++ = XA_TEXT(d);
-#ifdef X_HAVE_UTF8_STRING
- *targetP++ = XA_COMPOUND_TEXT(d);
- *targetP++ = XA_UTF8_STRING(d);
-#else
- *targetP = XA_COMPOUND_TEXT(d);
- if_OPT_WIDE_CHARS(screen, {
- *targetP = XA_UTF8_STRING(d);
- });
- targetP++;
-#endif
- *targetP++ = XA_LENGTH(d);
- *targetP++ = XA_LIST_LENGTH(d);
- memcpy(targetP, std_targets, sizeof(Atom) * std_length);
- XtFree((char *) std_targets);
- *type = XA_ATOM;
- *format = 32;
- result = True;
- }
- }
-#if OPT_WIDE_CHARS
- else if (screen->wide_chars && *target == XA_STRING) {
- result =
- _ConvertSelectionHelper(w,
- type, value, length, format,
- Xutf8TextListToTextProperty,
- XStringStyle);
- } else if (screen->wide_chars && *target == XA_UTF8_STRING(d)) {
- result =
- _ConvertSelectionHelper(w,
- type, value, length, format,
- Xutf8TextListToTextProperty,
- XUTF8StringStyle);
- } else if (screen->wide_chars && *target == XA_TEXT(d)) {
- result =
- _ConvertSelectionHelper(w,
- type, value, length, format,
- Xutf8TextListToTextProperty,
- XStdICCTextStyle);
- } else if (screen->wide_chars && *target == XA_COMPOUND_TEXT(d)) {
- result =
- _ConvertSelectionHelper(w,
- type, value, length, format,
- Xutf8TextListToTextProperty,
- XCompoundTextStyle);
- }
-#endif
-
- else if (*target == XA_STRING) { /* not wide_chars */
- /* We can only reach this point if the selection requestor
- requested STRING before any of TEXT, COMPOUND_TEXT or
- UTF8_STRING. We therefore assume that the requestor is not
- properly internationalised, and dump raw eight-bit data
- with no conversion into the selection. Yes, this breaks
- the ICCCM in non-Latin-1 locales. */
- *type = XA_STRING;
- *value = (XtPointer) screen->selection_data;
- *length = screen->selection_length;
- *format = 8;
- result = True;
- } else if (*target == XA_TEXT(d)) { /* not wide_chars */
- result =
- _ConvertSelectionHelper(w,
- type, value, length, format,
- XmbTextListToTextProperty,
- XStdICCTextStyle);
- } else if (*target == XA_COMPOUND_TEXT(d)) { /* not wide_chars */
- result =
- _ConvertSelectionHelper(w,
- type, value, length, format,
- XmbTextListToTextProperty,
- XCompoundTextStyle);
- }
-#ifdef X_HAVE_UTF8_STRING
- else if (*target == XA_UTF8_STRING(d)) { /* not wide_chars */
- result =
- _ConvertSelectionHelper(w,
- type, value, length, format,
- XmbTextListToTextProperty,
- XUTF8StringStyle);
- }
-#endif
- else if (*target == XA_LIST_LENGTH(d)) {
- *value = XtMalloc(4);
- if (sizeof(long) == 4)
- *(long *) *value = 1;
- else {
- long temp = 1;
- memcpy((char *) *value, ((char *) &temp) + sizeof(long) - 4, 4);
- }
- *type = XA_INTEGER;
- *length = 1;
- *format = 32;
- result = True;
- } else if (*target == XA_LENGTH(d)) {
- /* This value is wrong if we have UTF-8 text */
- *value = XtMalloc(4);
- if (sizeof(long) == 4) {
- *(long *) *value = screen->selection_length;
- } else {
- long temp = screen->selection_length;
- memcpy((char *) *value, ((char *) &temp) + sizeof(long) - 4, 4);
- }
- *type = XA_INTEGER;
- *length = 1;
- *format = 32;
- result = True;
- } else if (XmuConvertStandardSelection(w,
- screen->selection_time, selection,
- target, type, (XPointer *) value,
- length, format)) {
- result = True;
- }
-
- /* else */
- return result;
-}
-
-static void
-LoseSelection(Widget w, Atom * selection)
-{
- TScreen *screen;
- Atom *atomP;
- Cardinal i;
-
- if (!IsXtermWidget(w))
- return;
-
- screen = &((XtermWidget) w)->screen;
- for (i = 0, atomP = screen->selection_atoms;
- i < screen->selection_count; i++, atomP++) {
- if (*selection == *atomP)
- *atomP = (Atom) 0;
- if (CutBuffer(*atomP) >= 0) {
- *atomP = (Atom) 0;
- }
- }
-
- for (i = screen->selection_count; i; i--) {
- if (screen->selection_atoms[i - 1] != 0)
- break;
- }
- screen->selection_count = i;
-
- for (i = 0, atomP = screen->selection_atoms;
- i < screen->selection_count; i++, atomP++) {
- if (*atomP == (Atom) 0) {
- *atomP = screen->selection_atoms[--screen->selection_count];
- }
- }
-
- if (screen->selection_count == 0)
- TrackText(0, 0, 0, 0);
-}
-
-/* ARGSUSED */
-static void
-SelectionDone(Widget w GCC_UNUSED,
- Atom * selection GCC_UNUSED,
- Atom * target GCC_UNUSED)
-{
- /* empty proc so Intrinsics know we want to keep storage */
-}
-
-static void
-_OwnSelection(XtermWidget termw,
- String * selections,
- Cardinal count)
-{
- Atom *atoms = termw->screen.selection_atoms;
- Cardinal i;
- Bool have_selection = False;
-
- if (termw->screen.selection_length < 0)
- return;
-
- if (count > termw->screen.sel_atoms_size) {
- XtFree((char *) atoms);
- atoms = (Atom *) XtMalloc(count * sizeof(Atom));
- termw->screen.selection_atoms = atoms;
- termw->screen.sel_atoms_size = count;
- }
- XmuInternStrings(XtDisplay((Widget) termw), selections, count, atoms);
- for (i = 0; i < count; i++) {
- int cutbuffer = CutBuffer(atoms[i]);
- if (cutbuffer >= 0) {
- if (termw->screen.selection_length >
- 4 * XMaxRequestSize(XtDisplay((Widget) termw)) - 32) {
- fprintf(stderr,
- "%s: selection too big (%d bytes), not storing in CUT_BUFFER%d\n",
- xterm_name, termw->screen.selection_length, cutbuffer);
- } else {
- /* This used to just use the UTF-8 data, which was totally
- * broken as not even the corresponding paste code in Xterm
- * understood this! So now it converts to Latin1 first.
- * Robert Brady, 2000-09-05
- */
- unsigned long length = termw->screen.selection_length;
- Char *data = termw->screen.selection_data;
- if_OPT_WIDE_CHARS((&(termw->screen)), {
- data = UTF8toLatin1(data, length, &length);
- });
- TRACE(("XStoreBuffer(%d)\n", cutbuffer));
- XStoreBuffer(XtDisplay((Widget) termw),
- (char *) data,
- (int) length,
- cutbuffer);
- }
- } else if (!replyToEmacs) {
- have_selection |=
- XtOwnSelection((Widget) termw, atoms[i],
- termw->screen.selection_time,
- ConvertSelection, LoseSelection, SelectionDone);
- }
- }
- if (!replyToEmacs)
- termw->screen.selection_count = count;
- if (!have_selection)
- TrackText(0, 0, 0, 0);
-}
-
-static void
-ResetSelectionState(TScreen * screen)
-{
- screen->selection_count = 0;
- screen->startHRow = screen->startHCol = 0;
- screen->endHRow = screen->endHCol = 0;
-}
-
-void
-DisownSelection(XtermWidget termw)
-{
- TScreen *screen = &(termw->screen);
- Atom *atoms = screen->selection_atoms;
- Cardinal count = screen->selection_count;
- Cardinal i;
-
- TRACE(("DisownSelection count %d, start %d.%d, end %d.%d\n",
- count,
- screen->startHRow,
- screen->startHCol,
- screen->endHRow,
- screen->endHCol));
-
- for (i = 0; i < count; i++) {
- int cutbuffer = CutBuffer(atoms[i]);
- if (cutbuffer < 0) {
- XtDisownSelection((Widget) termw, atoms[i],
- screen->selection_time);
- }
- }
- /*
- * If none of the callbacks via XtDisownSelection() reset highlighting
- * do it now.
- */
- if (ScrnHaveSelection(screen)) {
- /* save data which will be reset */
- int start_row = screen->startHRow;
- int start_col = screen->startHCol;
- int end_row = screen->endHRow;
- int end_col = screen->endHCol;
-
- ResetSelectionState(screen);
- ReHiliteText(start_row, start_col, end_row, end_col);
- } else {
- ResetSelectionState(screen);
- }
-}
-
-/* returns number of chars in line from scol to ecol out */
-/* ARGSUSED */
-static int
-Length(TScreen * screen GCC_UNUSED,
- int row,
- int scol,
- int ecol)
-{
- int lastcol = LastTextCol(row);
-
- if (ecol > lastcol)
- ecol = lastcol;
- return (ecol - scol + 1);
-}
-
-/* copies text into line, preallocated */
-static Char *
-SaveText(TScreen * screen,
- int row,
- int scol,
- int ecol,
- Char * lp, /* pointer to where to put the text */
- int *eol)
-{
- int i = 0;
- unsigned c;
- Char *result = lp;
-#if OPT_WIDE_CHARS
- int previous = 0;
- unsigned c_1 = 0, c_2 = 0;
-#endif
-
- i = Length(screen, row, scol, ecol);
- ecol = scol + i;
-#if OPT_DEC_CHRSET
- if (CSET_DOUBLE(SCRN_BUF_CSETS(screen, row + screen->topline)[0])) {
- scol = (scol + 0) / 2;
- ecol = (ecol + 1) / 2;
- }
-#endif
- *eol = !ScrnTstWrapped(screen, row);
- for (i = scol; i < ecol; i++) {
- c = E2A(XTERM_CELL(row, i));
-#if OPT_WIDE_CHARS
- if (screen->utf8_mode != uFalse) {
- c_1 = E2A(XTERM_CELL_C1(row, i));
- c_2 = E2A(XTERM_CELL_C2(row, i));
- }
-
- /* We want to strip out every occurrence of HIDDEN_CHAR AFTER a
- * wide character.
- */
- if (c == HIDDEN_CHAR && iswide(previous)) {
- previous = c;
- /* Combining characters attached to double-width characters
- are in memory attached to the HIDDEN_CHAR */
- if (c_1) {
- lp = convertToUTF8(lp, c_1);
- if (c_2)
- lp = convertToUTF8(lp, c_2);
- }
- continue;
- }
- previous = c;
- if (screen->utf8_mode != uFalse) {
- lp = convertToUTF8(lp, (c != 0) ? c : ' ');
- if (c_1) {
- lp = convertToUTF8(lp, c_1);
- if (c_2)
- lp = convertToUTF8(lp, c_2);
- }
- } else
-#endif
- {
- if (c == 0) {
- c = E2A(' ');
- } else if (c < E2A(' ')) {
- if (c == XPOUND)
- c = 0x23; /* char on screen is pound sterling */
- else
- c += 0x5f; /* char is from DEC drawing set */
- } else if (c == 0x7f) {
- c = 0x5f;
- }
- *lp++ = A2E(c);
- }
- if (c != E2A(' '))
- result = lp;
- }
-
- /*
- * If requested, trim trailing blanks from selected lines. Do not do this
- * if the line is wrapped.
- */
- if (!*eol || !screen->trim_selection)
- result = lp;
-
- return (result);
-}
-
-/* 32 + following 7-bit word:
-
- 1:0 Button no: 0, 1, 2. 3=release.
- 2 shift
- 3 meta
- 4 ctrl
- 5 set for motion notify
- 6 set for wheel
-*/
-
-/* Position: 32 - 255. */
-
-static int
-BtnCode(XButtonEvent * event, int button)
-{
- int result = 32 + (KeyState(event->state) << 2);
-
- if (button < 0 || button > 5) {
- result += 3;
- } else {
- if (button > 3)
- result += (64 - 4);
- if (event->type == MotionNotify)
- result += 32;
- result += button;
- }
- return result;
-}
-
-#define MOUSE_LIMIT (255 - 32)
-
-static void
-EditorButton(XButtonEvent * event)
-{
- TScreen *screen = &term->screen;
- int pty = screen->respond;
- Char line[6];
- int row, col;
- int button;
- unsigned count = 0;
-
- /* If button event, get button # adjusted for DEC compatibility */
- button = event->button - 1;
- if (button >= 3)
- button++;
-
- /* Compute character position of mouse pointer */
- row = (event->y - screen->border) / FontHeight(screen);
- col = (event->x - OriginX(screen)) / FontWidth(screen);
-
- /* Limit to screen dimensions */
- if (row < 0)
- row = 0;
- else if (row > screen->max_row)
- row = screen->max_row;
- else if (row > MOUSE_LIMIT)
- row = MOUSE_LIMIT;
-
- if (col < 0)
- col = 0;
- else if (col > screen->max_col)
- col = screen->max_col;
- else if (col > MOUSE_LIMIT)
- col = MOUSE_LIMIT;
-
- /* Build key sequence starting with \E[M */
- if (screen->control_eight_bits) {
- line[count++] = CSI;
- } else {
- line[count++] = ESC;
- line[count++] = '[';
- }
- line[count++] = 'M';
-
- /* Add event code to key sequence */
- if (screen->send_mouse_pos == X10_MOUSE) {
- line[count++] = ' ' + button;
- } else {
- /* Button-Motion events */
- switch (event->type) {
- case ButtonPress:
- line[count++] = BtnCode(event, screen->mouse_button = button);
- break;
- case ButtonRelease:
- /*
- * Wheel mouse interface generates release-events for buttons
- * 4 and 5, coded here as 3 and 4 respectively. We change the
- * release for buttons 1..3 to a -1.
- */
- if (button < 3)
- button = -1;
- line[count++] = BtnCode(event, screen->mouse_button = button);
- break;
- case MotionNotify:
- /* BTN_EVENT_MOUSE and ANY_EVENT_MOUSE modes send motion
- * events only if character cell has changed.
- */
- if ((row == screen->mouse_row)
- && (col == screen->mouse_col))
- return;
- line[count++] = BtnCode(event, screen->mouse_button);
- break;
- default:
- return;
- }
- }
-
- screen->mouse_row = row;
- screen->mouse_col = col;
-
- /* Add pointer position to key sequence */
- line[count++] = ' ' + col + 1;
- line[count++] = ' ' + row + 1;
-
- TRACE(("mouse at %d,%d button+mask = %#x\n", row, col,
- (screen->control_eight_bits) ? line[2] : line[3]));
-
- /* Transmit key sequence to process running under xterm */
- v_write(pty, line, count);
-}
-
-/*ARGSUSED*/
-#if OPT_TEK4014
-void
-HandleGINInput(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * param_list,
- Cardinal *nparamsp)
-{
- if (term->screen.TekGIN && *nparamsp == 1) {
- int c = param_list[0][0];
- switch (c) {
- case 'l':
- case 'm':
- case 'r':
- case 'L':
- case 'M':
- case 'R':
- break;
- default:
- Bell(XkbBI_MinorError, 0); /* let them know they goofed */
- c = 'l'; /* provide a default */
- }
- TekEnqMouse(c | 0x80);
- TekGINoff();
- } else {
- Bell(XkbBI_MinorError, 0);
- }
-}
-#endif /* OPT_TEK4014 */
-
-/* ARGSUSED */
-void
-HandleSecure(Widget w GCC_UNUSED,
- XEvent * event, /* unused */
- String * params GCC_UNUSED, /* [0] = volume */
- Cardinal *param_count GCC_UNUSED) /* 0 or 1 */
-{
- Time ev_time = CurrentTime;
-
- if ((event->xany.type == KeyPress) ||
- (event->xany.type == KeyRelease))
- ev_time = event->xkey.time;
- else if ((event->xany.type == ButtonPress) ||
- (event->xany.type == ButtonRelease))
- ev_time = event->xbutton.time;
- DoSecureKeyboard(ev_time);
-}
diff --git a/nx-X11/programs/xterm/charclass.c b/nx-X11/programs/xterm/charclass.c
deleted file mode 100644
index 96220607c..000000000
--- a/nx-X11/programs/xterm/charclass.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* $XTermId: charclass.c,v 1.10 2005/01/14 01:50:02 tom Exp $ */
-
-/*
- * Compact and efficient reimplementation of the
- * xterm character class mechanism for large character sets
- *
- * Markus Kuhn -- mkuhn@acm.org -- 2000-07-03
- *
- * Xterm allows users to select entire words with a double-click on
- * the left mouse button. Opinions might differ on what type of
- * characters are part of separate words, therefore xterm allows users
- * to configure a class code for each 8-bit character. Words are
- * maximum length sequences of neighboring characters with identical
- * class code. Extending this mechanism to Unicode naively would
- * create an at least 2^16 entries (128 kB) long class code table.
- * Instead, we transform the character class table into a list
- * of intervals, that will be accessed via a linear search.
- * Changes made to the table by the user will be appended. A special
- * class code -1 (default) marks characters who have their code number
- * as the class code. We could alternatively use a sorted table of
- * non-overlapping intervals that can be accessed via binary search,
- * but merging in new intervals is significantly more hassle and
- * not worth the effort here.
- */
-/* $XFree86: xc/programs/xterm/charclass.c,v 1.5 2005/01/14 01:50:02 dickey Exp $ */
-
-#include <xterm.h>
-#include <charclass.h>
-
-#if OPT_WIDE_CHARS
-
-static struct classentry {
- int cclass;
- int first;
- int last;
-} *classtab;
-
-/*
- * Special convention for classtab[0]:
- * - classtab[0].cclass is the allocated number of entries in classtab
- * - classtab[0].first = 1 (first used entry in classtab)
- * - classtab[0].last is the last used entry in classtab
- */
-
-int
-SetCharacterClassRange(int low, int high, int value)
-{
- if (high < low)
- return -1; /* nothing to do */
-
- /* make sure we have at least one free entry left at table end */
- if (classtab[0].last > classtab[0].cclass - 2) {
- classtab[0].cclass += 5 + classtab[0].cclass / 4;
- classtab = TypeRealloc(struct classentry, classtab[0].cclass, classtab);
- if (!classtab)
- abort();
- }
-
- /* simply append new interval to end of interval array */
- classtab[0].last++;
- classtab[classtab[0].last].first = low;
- classtab[classtab[0].last].last = high;
- classtab[classtab[0].last].cclass = value;
-
- return 0;
-}
-
-void
-init_classtab(void)
-{
- const int size = 50;
-
- classtab = TypeMallocN(struct classentry, size);
- if (!classtab)
- abort();
- classtab[0].cclass = size;
- classtab[0].first = 1;
- classtab[0].last = 0;
-
- /* old xterm default classes */
- SetCharacterClassRange(0, 0, 32);
- SetCharacterClassRange(1, 31, 1);
- SetCharacterClassRange('\t', '\t', 32);
- SetCharacterClassRange('0', '9', 48);
- SetCharacterClassRange('A', 'Z', 48);
- SetCharacterClassRange('_', '_', 48);
- SetCharacterClassRange('a', 'z', 48);
- SetCharacterClassRange(127, 159, 1);
- SetCharacterClassRange(160, 191, -1);
- SetCharacterClassRange(192, 255, 48);
- SetCharacterClassRange(215, 215, 216);
- SetCharacterClassRange(247, 247, 248);
-
- /* added Unicode classes */
- SetCharacterClassRange(0x0100, 0xffdf, 48); /* mostly characters */
- SetCharacterClassRange(0x037e, 0x037e, -1); /* Greek question mark */
- SetCharacterClassRange(0x0387, 0x0387, -1); /* Greek ano teleia */
- SetCharacterClassRange(0x055a, 0x055f, -1); /* Armenian punctuation */
- SetCharacterClassRange(0x0589, 0x0589, -1); /* Armenian full stop */
- SetCharacterClassRange(0x0700, 0x070d, -1); /* Syriac punctuation */
- SetCharacterClassRange(0x104a, 0x104f, -1); /* Myanmar punctuation */
- SetCharacterClassRange(0x10fb, 0x10fb, -1); /* Georgian punctuation */
- SetCharacterClassRange(0x1361, 0x1368, -1); /* Ethiopic punctuation */
- SetCharacterClassRange(0x166d, 0x166e, -1); /* Canadian Syl. punctuation */
- SetCharacterClassRange(0x17d4, 0x17dc, -1); /* Khmer punctuation */
- SetCharacterClassRange(0x1800, 0x180a, -1); /* Mongolian punctuation */
- SetCharacterClassRange(0x2000, 0x200a, 32); /* spaces */
- SetCharacterClassRange(0x200b, 0x27ff, -1); /* punctuation and symbols */
- SetCharacterClassRange(0x2070, 0x207f, 0x2070); /* superscript */
- SetCharacterClassRange(0x2080, 0x208f, 0x2080); /* subscript */
- SetCharacterClassRange(0x3000, 0x3000, 32); /* ideographic space */
- SetCharacterClassRange(0x3001, 0x3020, -1); /* ideographic punctuation */
- SetCharacterClassRange(0x3040, 0x309f, 0x3040); /* Hiragana */
- SetCharacterClassRange(0x30a0, 0x30ff, 0x30a0); /* Katakana */
- SetCharacterClassRange(0x3300, 0x9fff, 0x4e00); /* CJK Ideographs */
- SetCharacterClassRange(0xac00, 0xd7a3, 0xac00); /* Hangul Syllables */
- SetCharacterClassRange(0xf900, 0xfaff, 0x4e00); /* CJK Ideographs */
- SetCharacterClassRange(0xfe30, 0xfe6b, -1); /* punctuation forms */
- SetCharacterClassRange(0xff00, 0xff0f, -1); /* half/fullwidth ASCII */
- SetCharacterClassRange(0xff1a, 0xff20, -1); /* half/fullwidth ASCII */
- SetCharacterClassRange(0xff3b, 0xff40, -1); /* half/fullwidth ASCII */
- SetCharacterClassRange(0xff5b, 0xff64, -1); /* half/fullwidth ASCII */
-
- return;
-}
-
-int
-CharacterClass(int c)
-{
- int i, cclass = -1;
-
- for (i = classtab[0].first; i <= classtab[0].last; i++)
- if (classtab[i].first <= c && classtab[i].last >= c)
- cclass = classtab[i].cclass;
-
- if (cclass < 0)
- cclass = c;
-
- return cclass;
-}
-
-#endif /* OPT_WIDE_CHARS */
diff --git a/nx-X11/programs/xterm/charclass.h b/nx-X11/programs/xterm/charclass.h
deleted file mode 100644
index c93f8ff47..000000000
--- a/nx-X11/programs/xterm/charclass.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/* $XFree86: xc/programs/xterm/charclass.h,v 1.1 2000/08/26 04:33:53 dawes Exp $ */
-
-#ifndef CHARCLASS_H
-#define CHARCLASS_H
-
-extern void init_classtab(void);
-/* intialise the table. needs calling before either of the
- others. */
-
-extern int SetCharacterClassRange(int low, int high, int value);
-extern int CharacterClass(int c);
-
-#endif
diff --git a/nx-X11/programs/xterm/charproc.c b/nx-X11/programs/xterm/charproc.c
deleted file mode 100644
index 78bb9a17d..000000000
--- a/nx-X11/programs/xterm/charproc.c
+++ /dev/null
@@ -1,7300 +0,0 @@
-/* $XTermId: charproc.c,v 1.627 2005/11/13 23:10:35 tom Exp $ */
-
-/*
- * $Xorg: charproc.c,v 1.6 2001/02/09 02:06:02 xorgcvs Exp $
- */
-
-/* $XFree86: xc/programs/xterm/charproc.c,v 3.177 2005/11/13 23:10:35 dickey Exp $ */
-
-/*
-
-Copyright 1999-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-Copyright 1988 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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/**************************************************************************/
-/* */
-/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */
-/* */
-/* NX-X11, NX protocol compression and NX extensions to this software */
-/* are copyright of NoMachine. Redistribution and use of the present */
-/* software is allowed according to terms specified in the file LICENSE */
-/* which comes in the source distribution. */
-/* */
-/* Check http://www.nomachine.com/licensing.html for applicability. */
-/* */
-/* NX and NoMachine are trademarks of Medialogic S.p.A. */
-/* */
-/* All rights reserved. */
-/* */
-/**************************************************************************/
-
-/* charproc.c */
-
-#include <version.h>
-#include <xterm.h>
-
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/cursorfont.h>
-#include <X11/Xmu/Atoms.h>
-#include <X11/Xmu/CharSet.h>
-#include <X11/Xmu/Converters.h>
-
-#if OPT_INPUT_METHOD
-
-#if defined(HAVE_LIB_XAW)
-#include <X11/Xaw/XawImP.h>
-#elif defined(HAVE_LIB_XAW3D)
-#include <X11/Xaw3d/XawImP.h>
-#elif defined(HAVE_LIB_NEXTAW)
-#include <X11/neXtaw/XawImP.h>
-#elif defined(HAVE_LIB_XAWPLUS)
-#include <X11/XawPlus/XawImP.h>
-#endif
-
-#endif
-
-#if OPT_WIDE_CHARS
-#include <wcwidth.h>
-#include <precompose.h>
-#ifdef HAVE_LANGINFO_CODESET
-#include <langinfo.h>
-#endif
-#endif
-
-#if OPT_INPUT_METHOD
-#include <X11/Xlocale.h>
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-
-#if defined(HAVE_SCHED_YIELD)
-#include <sched.h>
-#endif
-
-#include <VTparse.h>
-#include <data.h>
-#include <error.h>
-#include <menu.h>
-#include <main.h>
-#include <fontutils.h>
-#include <xcharmouse.h>
-#include <charclass.h>
-#include <xstrings.h>
-
-#if OPT_ZICONBEEP || OPT_TOOLBAR
-#define HANDLE_STRUCT_NOTIFY 1
-#else
-#define HANDLE_STRUCT_NOTIFY 0
-#endif
-
-static IChar doinput(void);
-static int set_character_class(char *s);
-static void FromAlternate(TScreen * screen);
-static void RequestResize(XtermWidget termw, int rows, int cols, int text);
-static void SwitchBufs(TScreen * screen);
-static void ToAlternate(TScreen * screen);
-static void VTallocbuf(void);
-static void WriteText(TScreen * screen,
- PAIRED_CHARS(Char * str, Char * str2),
- Cardinal len);
-static void ansi_modes(XtermWidget termw,
- void (*func) (unsigned *p, unsigned mask));
-static void bitclr(unsigned *p, unsigned mask);
-static void bitcpy(unsigned *p, unsigned q, unsigned mask);
-static void bitset(unsigned *p, unsigned mask);
-static void dpmodes(XtermWidget termw, void (*func) (unsigned *p, unsigned mask));
-static void restoremodes(XtermWidget termw);
-static void savemodes(XtermWidget termw);
-static void unparseputn(unsigned int n, int fd);
-static void window_ops(XtermWidget termw);
-
-#define DoStartBlinking(s) ((s)->cursor_blink ^ (s)->cursor_blink_esc)
-
-#if OPT_BLINK_CURS || OPT_BLINK_TEXT
-static void HandleBlinking(XtPointer closure, XtIntervalId * id);
-static void StartBlinking(TScreen * screen);
-static void StopBlinking(TScreen * screen);
-#else
-#define StartBlinking(screen) /* nothing */
-#define StopBlinking(screen) /* nothing */
-#endif
-
-#if OPT_INPUT_METHOD
-static void PreeditPosition(TScreen * screen);
-#endif
-
-#define DEFAULT -1
-#define BELLSUPPRESSMSEC 200
-
-static int nparam;
-static ANSI reply;
-static int param[NPARAM];
-
-static jmp_buf vtjmpbuf;
-
-/* event handlers */
-static void HandleBell PROTO_XT_ACTIONS_ARGS;
-static void HandleIgnore PROTO_XT_ACTIONS_ARGS;
-static void HandleKeymapChange PROTO_XT_ACTIONS_ARGS;
-static void HandleVisualBell PROTO_XT_ACTIONS_ARGS;
-#if HANDLE_STRUCT_NOTIFY
-static void HandleStructNotify PROTO_XT_EV_HANDLER_ARGS;
-#endif
-
-/*
- * NOTE: VTInitialize zeros out the entire ".screen" component of the
- * XtermWidget, so make sure to add an assignment statement in VTInitialize()
- * for each new ".screen" field added to this resource list.
- */
-
-/* Defaults */
-#if OPT_ISO_COLORS
-
-/*
- * If we default to colorMode enabled, compile-in defaults for the ANSI colors.
- */
-#if DFT_COLORMODE
-#define DFT_COLOR(name) name
-#else
-#define DFT_COLOR(name) XtDefaultForeground
-#endif
-#endif
-
-static char *_Font_Selected_ = "yes"; /* string is arbitrary */
-
-static char defaultTranslations[] =
-"\
- Shift <KeyPress> Prior:scroll-back(1,halfpage) \n\
- Shift <KeyPress> Next:scroll-forw(1,halfpage) \n\
- Shift <KeyPress> Select:select-cursor-start() select-cursor-end(PRIMARY, CUT_BUFFER0) \n\
- Shift <KeyPress> Insert:insert-selection(PRIMARY, CUT_BUFFER0) \n\
-"
-#if OPT_SHIFT_FONTS
-"\
- Shift~Ctrl <KeyPress> KP_Add:larger-vt-font() \n\
- Shift Ctrl <KeyPress> KP_Add:smaller-vt-font() \n\
- Shift <KeyPress> KP_Subtract:smaller-vt-font() \n\
-"
-#endif
-"\
- ~Meta <KeyPress>:insert-seven-bit() \n\
- Meta <KeyPress>:insert-eight-bit() \n\
- !Ctrl <Btn1Down>:popup-menu(mainMenu) \n\
- !Lock Ctrl <Btn1Down>:popup-menu(mainMenu) \n\
- !Lock Ctrl @Num_Lock <Btn1Down>:popup-menu(mainMenu) \n\
- ! @Num_Lock Ctrl <Btn1Down>:popup-menu(mainMenu) \n\
- ~Meta <Btn1Down>:select-start() \n\
- ~Meta <Btn1Motion>:select-extend() \n\
- !Ctrl <Btn2Down>:popup-menu(vtMenu) \n\
- !Lock Ctrl <Btn2Down>:popup-menu(vtMenu) \n\
- !Lock Ctrl @Num_Lock <Btn2Down>:popup-menu(vtMenu) \n\
- ! @Num_Lock Ctrl <Btn2Down>:popup-menu(vtMenu) \n\
- ~Ctrl ~Meta <Btn2Down>:ignore() \n\
- Meta <Btn2Down>:clear-saved-lines() \n\
- ~Ctrl ~Meta <Btn2Up>:insert-selection(PRIMARY, CUT_BUFFER0) \n\
- !Ctrl <Btn3Down>:popup-menu(fontMenu) \n\
- !Lock Ctrl <Btn3Down>:popup-menu(fontMenu) \n\
- !Lock Ctrl @Num_Lock <Btn3Down>:popup-menu(fontMenu) \n\
- ! @Num_Lock Ctrl <Btn3Down>:popup-menu(fontMenu) \n\
- ~Ctrl ~Meta <Btn3Down>:start-extend() \n\
- ~Meta <Btn3Motion>:select-extend() \n\
- Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \n\
- Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \n\
- Lock @Num_Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \n\
- @Num_Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \n\
- <Btn4Down>:scroll-back(5,line,m) \n\
- Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \n\
- Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \n\
- Lock @Num_Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \n\
- @Num_Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \n\
- <Btn5Down>:scroll-forw(5,line,m) \n\
- <BtnUp>:select-end(PRIMARY, CUT_BUFFER0) \n\
- <BtnDown>:ignore() \
-"; /* PROCURA added "Meta <Btn2Down>:clear-saved-lines()" */
-/* *INDENT-OFF* */
-static XtActionsRec actionsList[] = {
- { "allow-send-events", HandleAllowSends },
- { "bell", HandleBell },
- { "clear-saved-lines", HandleClearSavedLines },
- { "create-menu", HandleCreateMenu },
- { "dired-button", DiredButton },
- { "hard-reset", HandleHardReset },
- { "ignore", HandleIgnore },
- { "insert", HandleKeyPressed }, /* alias for insert-seven-bit */
- { "insert-eight-bit", HandleEightBitKeyPressed },
- { "insert-selection", HandleInsertSelection },
- { "insert-seven-bit", HandleKeyPressed },
- { "interpret", HandleInterpret },
- { "keymap", HandleKeymapChange },
- { "popup-menu", HandlePopupMenu },
- { "print", HandlePrintScreen },
- { "print-redir", HandlePrintControlMode },
- { "quit", HandleQuit },
- { "redraw", HandleRedraw },
- { "delete-is-del", HandleDeleteIsDEL },
- { "scroll-back", HandleScrollBack },
- { "scroll-forw", HandleScrollForward },
- { "secure", HandleSecure },
- { "select-cursor-end", HandleKeyboardSelectEnd },
- { "select-cursor-extend", HandleKeyboardSelectExtend },
- { "select-cursor-start", HandleKeyboardSelectStart },
- { "select-end", HandleSelectEnd },
- { "select-extend", HandleSelectExtend },
- { "select-set", HandleSelectSet },
- { "select-start", HandleSelectStart },
- { "send-signal", HandleSendSignal },
- { "set-8-bit-control", Handle8BitControl },
- { "set-allow132", HandleAllow132 },
- { "set-altscreen", HandleAltScreen },
- { "set-appcursor", HandleAppCursor },
- { "set-appkeypad", HandleAppKeypad },
- { "set-autolinefeed", HandleAutoLineFeed },
- { "set-autowrap", HandleAutoWrap },
- { "set-backarrow", HandleBackarrow },
- { "set-cursesemul", HandleCursesEmul },
- { "set-jumpscroll", HandleJumpscroll },
- { "set-old-function-keys", HandleOldFunctionKeys },
- { "set-marginbell", HandleMarginBell },
- { "set-reverse-video", HandleReverseVideo },
- { "set-reversewrap", HandleReverseWrap },
- { "set-scroll-on-key", HandleScrollKey },
- { "set-scroll-on-tty-output", HandleScrollTtyOutput },
- { "set-scrollbar", HandleScrollbar },
- { "set-sun-function-keys", HandleSunFunctionKeys },
- { "set-sun-keyboard", HandleSunKeyboard },
- { "set-titeInhibit", HandleTiteInhibit },
- { "set-visual-bell", HandleSetVisualBell },
- { "set-pop-on-bell", HandleSetPopOnBell },
- { "set-vt-font", HandleSetFont },
- { "soft-reset", HandleSoftReset },
- { "start-cursor-extend", HandleKeyboardStartExtend },
- { "start-extend", HandleStartExtend },
- { "string", HandleStringEvent },
- { "vi-button", ViButton },
- { "visual-bell", HandleVisualBell },
-#ifdef ALLOWLOGGING
- { "set-logging", HandleLogging },
-#endif
-#if OPT_BLINK_CURS
- { "set-cursorblink", HandleCursorBlink },
-#endif
-#if OPT_BOX_CHARS
- { "set-font-linedrawing", HandleFontBoxChars },
-#endif
-#if OPT_DABBREV
- { "dabbrev-expand", HandleDabbrevExpand },
-#endif
-#if OPT_DEC_CHRSET
- { "set-font-doublesize", HandleFontDoublesize },
-#endif
-#if OPT_DEC_SOFTFONT
- { "set-font-loading", HandleFontLoading },
-#endif
-#if OPT_HP_FUNC_KEYS
- { "set-hp-function-keys", HandleHpFunctionKeys },
-#endif
-#if OPT_LOAD_VTFONTS
- { "load-vt-fonts", HandleLoadVTFonts },
-#endif
-#if OPT_MAXIMIZE
- { "deiconify", HandleDeIconify },
- { "iconify", HandleIconify },
- { "maximize", HandleMaximize },
- { "restore", HandleRestoreSize },
-#endif
-#if OPT_NUM_LOCK
- { "alt-sends-escape", HandleAltEsc },
- { "meta-sends-escape", HandleMetaEsc },
- { "set-num-lock", HandleNumLock },
-#endif
-#if OPT_READLINE
- { "readline-button", ReadLineButton },
-#endif
-#if OPT_RENDERFONT
- { "set-render-font", HandleRenderFont },
-#endif
-#if OPT_SCO_FUNC_KEYS
- { "set-sco-function-keys", HandleScoFunctionKeys },
-#endif
-#if OPT_SHIFT_FONTS
- { "larger-vt-font", HandleLargerFont },
- { "smaller-vt-font", HandleSmallerFont },
-#endif
-#if OPT_TEK4014
- { "set-terminal-type", HandleSetTerminalType },
- { "set-visibility", HandleVisibility },
- { "set-tek-text", HandleSetTekText },
- { "tek-page", HandleTekPage },
- { "tek-reset", HandleTekReset },
- { "tek-copy", HandleTekCopy },
-#endif
-#if OPT_TOOLBAR
- { "set-toolbar", HandleToolbar },
-#endif
-#if OPT_WIDE_CHARS
- { "set-utf8-mode", HandleUTF8Mode },
-#endif
-};
-/* *INDENT-ON* */
-
-static XtResource resources[] =
-{
- Bres(XtNallowSendEvents, XtCAllowSendEvents, screen.allowSendEvent0, False),
- Bres(XtNallowWindowOps, XtCAllowWindowOps, screen.allowWindowOp0, True),
- Bres(XtNalwaysHighlight, XtCAlwaysHighlight, screen.always_highlight, False),
- Bres(XtNappcursorDefault, XtCAppcursorDefault, misc.appcursorDefault, False),
- Bres(XtNappkeypadDefault, XtCAppkeypadDefault, misc.appkeypadDefault, False),
- Bres(XtNautoWrap, XtCAutoWrap, misc.autoWrap, True),
- Bres(XtNawaitInput, XtCAwaitInput, screen.awaitInput, False),
- Bres(XtNfreeBoldBox, XtCFreeBoldBox, screen.free_bold_box, False),
- Bres(XtNbackarrowKey, XtCBackarrowKey, screen.backarrow_key, True),
- Bres(XtNbellOnReset, XtCBellOnReset, screen.bellOnReset, True),
- Bres(XtNboldMode, XtCBoldMode, screen.bold_mode, True),
- Bres(XtNbrokenSelections, XtCBrokenSelections, screen.brokenSelections, False),
- Bres(XtNc132, XtCC132, screen.c132, False),
- Bres(XtNcurses, XtCCurses, screen.curses, False),
- Bres(XtNcutNewline, XtCCutNewline, screen.cutNewline, True),
- Bres(XtNcutToBeginningOfLine, XtCCutToBeginningOfLine,
- screen.cutToBeginningOfLine, True),
- Bres(XtNdeleteIsDEL, XtCDeleteIsDEL, screen.delete_is_del, DEFDELETE_DEL),
- Bres(XtNdynamicColors, XtCDynamicColors, misc.dynamicColors, True),
- Bres(XtNeightBitControl, XtCEightBitControl, screen.control_eight_bits, False),
- Bres(XtNeightBitInput, XtCEightBitInput, screen.input_eight_bits, True),
- Bres(XtNeightBitOutput, XtCEightBitOutput, screen.output_eight_bits, True),
- Bres(XtNhighlightSelection, XtCHighlightSelection,
- screen.highlight_selection, False),
- Bres(XtNhpLowerleftBugCompat, XtCHpLowerleftBugCompat, screen.hp_ll_bc, False),
- Bres(XtNi18nSelections, XtCI18nSelections, screen.i18nSelections, True),
- Bres(XtNjumpScroll, XtCJumpScroll, screen.jumpscroll, True),
- Bres(XtNloginShell, XtCLoginShell, misc.login_shell, False),
- Bres(XtNmarginBell, XtCMarginBell, screen.marginbell, False),
- Bres(XtNmetaSendsEscape, XtCMetaSendsEscape, screen.meta_sends_esc, False),
- Bres(XtNmultiScroll, XtCMultiScroll, screen.multiscroll, False),
- Bres(XtNoldXtermFKeys, XtCOldXtermFKeys, screen.old_fkeys, False),
- Bres(XtNpopOnBell, XtCPopOnBell, screen.poponbell, False),
- Bres(XtNprinterAutoClose, XtCPrinterAutoClose, screen.printer_autoclose, False),
- Bres(XtNprinterExtent, XtCPrinterExtent, screen.printer_extent, False),
- Bres(XtNprinterFormFeed, XtCPrinterFormFeed, screen.printer_formfeed, False),
- Bres(XtNreverseVideo, XtCReverseVideo, misc.re_verse, False),
- Bres(XtNreverseWrap, XtCReverseWrap, misc.reverseWrap, False),
- Bres(XtNscrollBar, XtCScrollBar, misc.scrollbar, False),
- Bres(XtNscrollKey, XtCScrollCond, screen.scrollkey, False),
- Bres(XtNscrollTtyOutput, XtCScrollCond, screen.scrollttyoutput, True),
- Bres(XtNsignalInhibit, XtCSignalInhibit, misc.signalInhibit, False),
- Bres(XtNtiteInhibit, XtCTiteInhibit, misc.titeInhibit, False),
- Bres(XtNtiXtraScroll, XtCTiXtraScroll, misc.tiXtraScroll, False),
- Bres(XtNtrimSelection, XtCTrimSelection, screen.trim_selection, False),
- Bres(XtNunderLine, XtCUnderLine, screen.underline, True),
- Bres(XtNvisualBell, XtCVisualBell, screen.visualbell, False),
-
- Ires(XtNbellSuppressTime, XtCBellSuppressTime, screen.bellSuppressTime, BELLSUPPRESSMSEC),
- Ires(XtNinternalBorder, XtCBorderWidth, screen.border, DEFBORDER),
- Ires(XtNlimitResize, XtCLimitResize, misc.limit_resize, 1),
- Ires(XtNmultiClickTime, XtCMultiClickTime, screen.multiClickTime, MULTICLICKTIME),
- Ires(XtNnMarginBell, XtCColumn, screen.nmarginbell, N_MARGINBELL),
- Ires(XtNprinterControlMode, XtCPrinterControlMode,
- screen.printer_controlmode, 0),
- Ires(XtNvisualBellDelay, XtCVisualBellDelay, screen.visualBellDelay, 100),
- Ires(XtNsaveLines, XtCSaveLines, screen.savelines, SAVELINES),
- Ires(XtNscrollBarBorder, XtCScrollBarBorder, screen.scrollBarBorder, 1),
- Ires(XtNscrollLines, XtCScrollLines, screen.scrolllines, SCROLLLINES),
-
- Sres(XtNfont1, XtCFont1, screen.MenuFontName(fontMenu_font1), NULL),
- Sres(XtNfont2, XtCFont2, screen.MenuFontName(fontMenu_font2), NULL),
- Sres(XtNfont3, XtCFont3, screen.MenuFontName(fontMenu_font3), NULL),
- Sres(XtNfont4, XtCFont4, screen.MenuFontName(fontMenu_font4), NULL),
- Sres(XtNfont5, XtCFont5, screen.MenuFontName(fontMenu_font5), NULL),
- Sres(XtNfont6, XtCFont6, screen.MenuFontName(fontMenu_font6), NULL),
- Sres(XtNanswerbackString, XtCAnswerbackString, screen.answer_back, ""),
- Sres(XtNboldFont, XtCBoldFont, misc.default_font.f_b, DEFBOLDFONT),
- Sres(XtNcharClass, XtCCharClass, screen.charClass, NULL),
- Sres(XtNdecTerminalID, XtCDecTerminalID, screen.term_id, DFT_DECID),
- Sres(XtNfont, XtCFont, misc.default_font.f_n, DEFFONT),
- Sres(XtNgeometry, XtCGeometry, misc.geo_metry, NULL),
- Sres(XtNkeyboardDialect, XtCKeyboardDialect, screen.keyboard_dialect, DFT_KBD_DIALECT),
- Sres(XtNprinterCommand, XtCPrinterCommand, screen.printer_command, ""),
- Sres(XtNtekGeometry, XtCGeometry, misc.T_geometry, NULL),
-
- Tres(XtNcursorColor, XtCCursorColor, TEXT_CURSOR, XtDefaultForeground),
- Tres(XtNforeground, XtCForeground, TEXT_FG, XtDefaultForeground),
- Tres(XtNpointerColor, XtCPointerColor, MOUSE_FG, XtDefaultForeground),
- Tres(XtNbackground, XtCBackground, TEXT_BG, XtDefaultBackground),
- Tres(XtNpointerColorBackground, XtCBackground, MOUSE_BG, XtDefaultBackground),
-
- {XtNresizeGravity, XtCResizeGravity, XtRGravity, sizeof(XtGravity),
- XtOffsetOf(XtermWidgetRec, misc.resizeGravity),
- XtRImmediate, (XtPointer) SouthWestGravity},
-
- {XtNpointerShape, XtCCursor, XtRCursor, sizeof(Cursor),
- XtOffsetOf(XtermWidgetRec, screen.pointer_cursor),
- XtRString, (XtPointer) "xterm"},
-
-#ifdef ALLOWLOGGING
- Bres(XtNlogInhibit, XtCLogInhibit, misc.logInhibit, False),
- Bres(XtNlogging, XtCLogging, misc.log_on, False),
- Sres(XtNlogFile, XtCLogfile, screen.logfile, NULL),
-#endif
-
-#ifndef NO_ACTIVE_ICON
- Bres("activeIcon", "ActiveIcon", misc.active_icon, False),
- Ires("iconBorderWidth", XtCBorderWidth, misc.icon_border_width, 2),
- Fres("iconFont", "IconFont", screen.fnt_icon, XtDefaultFont),
- Cres("iconBorderColor", XtCBorderColor, misc.icon_border_pixel, XtDefaultBackground),
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_BLINK_CURS
- Bres(XtNcursorBlink, XtCCursorBlink, screen.cursor_blink, False),
-#endif
-
-#if OPT_BLINK_TEXT
- Bres(XtNshowBlinkAsBold, XtCCursorBlink, screen.blink_as_bold, DEFBLINKASBOLD),
-#endif
-
-#if OPT_BLINK_CURS || OPT_BLINK_TEXT
- Ires(XtNcursorOnTime, XtCCursorOnTime, screen.blink_on, 600),
- Ires(XtNcursorOffTime, XtCCursorOffTime, screen.blink_off, 300),
-#endif
-
-#if OPT_BOX_CHARS
- Bres(XtNforceBoxChars, XtCForceBoxChars, screen.force_box_chars, False),
- Bres(XtNshowMissingGlyphs, XtCShowMissingGlyphs, screen.force_all_chars, False),
-#endif
-
-#if OPT_BROKEN_OSC
- Bres(XtNbrokenLinuxOSC, XtCBrokenLinuxOSC, screen.brokenLinuxOSC, True),
-#endif
-
-#if OPT_BROKEN_ST
- Bres(XtNbrokenStringTerm, XtCBrokenStringTerm, screen.brokenStringTerm, True),
-#endif
-
-#if OPT_C1_PRINT
- Bres(XtNallowC1Printable, XtCAllowC1Printable, screen.c1_printable, False),
-#endif
-
-#if OPT_DEC_CHRSET
- Bres(XtNfontDoublesize, XtCFontDoublesize, screen.font_doublesize, True),
- Ires(XtNcacheDoublesize, XtCCacheDoublesize, screen.cache_doublesize, NUM_CHRSET),
-#endif
-
-#if OPT_HIGHLIGHT_COLOR
- Tres(XtNhighlightColor, XtCHighlightColor, HIGHLIGHT_BG, XtDefaultForeground),
-#endif /* OPT_HIGHLIGHT_COLOR */
-
-#if OPT_INPUT_METHOD
- Bres(XtNopenIm, XtCOpenIm, misc.open_im, True),
- Sres(XtNinputMethod, XtCInputMethod, misc.input_method, NULL),
- Sres(XtNpreeditType, XtCPreeditType, misc.preedit_type,
- "OverTheSpot,Root"),
-#endif
-
-#if OPT_ISO_COLORS
- Bres(XtNboldColors, XtCColorMode, screen.boldColors, True),
- Ires(XtNveryBoldColors, XtCVeryBoldColors, screen.veryBoldColors, 0),
- Bres(XtNcolorMode, XtCColorMode, screen.colorMode, DFT_COLORMODE),
-
- Bres(XtNcolorAttrMode, XtCColorAttrMode, screen.colorAttrMode, False),
- Bres(XtNcolorBDMode, XtCColorAttrMode, screen.colorBDMode, False),
- Bres(XtNcolorBLMode, XtCColorAttrMode, screen.colorBLMode, False),
- Bres(XtNcolorRVMode, XtCColorAttrMode, screen.colorRVMode, False),
- Bres(XtNcolorULMode, XtCColorAttrMode, screen.colorULMode, False),
- Bres(XtNitalicULMode, XtCColorAttrMode, screen.italicULMode, False),
-
- COLOR_RES("0", screen.Acolors[COLOR_0], DFT_COLOR("black")),
- COLOR_RES("1", screen.Acolors[COLOR_1], DFT_COLOR("red3")),
- COLOR_RES("2", screen.Acolors[COLOR_2], DFT_COLOR("green3")),
- COLOR_RES("3", screen.Acolors[COLOR_3], DFT_COLOR("yellow3")),
- COLOR_RES("4", screen.Acolors[COLOR_4], DFT_COLOR(DEF_COLOR4)),
- COLOR_RES("5", screen.Acolors[COLOR_5], DFT_COLOR("magenta3")),
- COLOR_RES("6", screen.Acolors[COLOR_6], DFT_COLOR("cyan3")),
- COLOR_RES("7", screen.Acolors[COLOR_7], DFT_COLOR("gray90")),
- COLOR_RES("8", screen.Acolors[COLOR_8], DFT_COLOR("gray50")),
- COLOR_RES("9", screen.Acolors[COLOR_9], DFT_COLOR("red")),
- COLOR_RES("10", screen.Acolors[COLOR_10], DFT_COLOR("green")),
- COLOR_RES("11", screen.Acolors[COLOR_11], DFT_COLOR("yellow")),
- COLOR_RES("12", screen.Acolors[COLOR_12], DFT_COLOR(DEF_COLOR12)),
- COLOR_RES("13", screen.Acolors[COLOR_13], DFT_COLOR("magenta")),
- COLOR_RES("14", screen.Acolors[COLOR_14], DFT_COLOR("cyan")),
- COLOR_RES("15", screen.Acolors[COLOR_15], DFT_COLOR("white")),
- COLOR_RES("BD", screen.Acolors[COLOR_BD], DFT_COLOR(XtDefaultForeground)),
- COLOR_RES("BL", screen.Acolors[COLOR_BL], DFT_COLOR(XtDefaultForeground)),
- COLOR_RES("UL", screen.Acolors[COLOR_UL], DFT_COLOR(XtDefaultForeground)),
- COLOR_RES("RV", screen.Acolors[COLOR_RV], DFT_COLOR(XtDefaultForeground)),
-
-#if !OPT_COLOR_RES2
-#if OPT_256_COLORS
-# include <256colres.h>
-#elif OPT_88_COLORS
-# include <88colres.h>
-#endif
-#endif /* !OPT_COLOR_RES2 */
-
-#endif /* OPT_ISO_COLORS */
-
-#if OPT_MOD_FKEYS
- Ires(XtNmodifyCursorKeys, XtCModifyCursorKeys,
- keyboard.modify_cursor_keys, 2),
-#endif
-
-#if OPT_NUM_LOCK
- Bres(XtNalwaysUseMods, XtCAlwaysUseMods, misc.alwaysUseMods, False),
- Bres(XtNnumLock, XtCNumLock, misc.real_NumLock, True),
-#endif
-
-#if OPT_PRINT_COLORS
- Ires(XtNprintAttributes, XtCPrintAttributes, screen.print_attributes, 1),
-#endif
-
-#if OPT_SHIFT_FONTS
- Bres(XtNshiftFonts, XtCShiftFonts, misc.shift_fonts, True),
-#endif
-
-#if OPT_SUNPC_KBD
- Ires(XtNctrlFKeys, XtCCtrlFKeys, misc.ctrl_fkeys, 10),
-#endif
-
-#if OPT_TEK4014
- Bres(XtNtekInhibit, XtCTekInhibit, misc.tekInhibit, False),
- Bres(XtNtekSmall, XtCTekSmall, misc.tekSmall, False),
- Bres(XtNtekStartup, XtCTekStartup, screen.TekEmu, False),
-#endif
-
-#if OPT_TOOLBAR
- Wres(XtNmenuBar, XtCMenuBar, VT100_TB_INFO(menu_bar), 0),
- Ires(XtNmenuHeight, XtCMenuHeight, VT100_TB_INFO(menu_height), 25),
-#endif
-
-#if OPT_WIDE_CHARS
- Ires(XtNutf8, XtCUtf8, screen.utf8_mode, uDefault),
- Bres(XtNwideChars, XtCWideChars, screen.wide_chars, False),
- Bres(XtNmkWidth, XtCMkWidth, misc.mk_width, False),
- Bres(XtNcjkWidth, XtCCjkWidth, misc.cjk_width, False),
- Bres(XtNvt100Graphics, XtCVT100Graphics, screen.vt100_graphics, True),
- Sres(XtNwideBoldFont, XtCWideBoldFont, misc.default_font.f_wb, DEFWIDEBOLDFONT),
- Sres(XtNwideFont, XtCWideFont, misc.default_font.f_w, DEFWIDEFONT),
-#endif
-
-#if OPT_LUIT_PROG
- Sres(XtNlocale, XtCLocale, misc.locale_str, "medium"),
- Sres(XtNlocaleFilter, XtCLocaleFilter, misc.localefilter, DEFLOCALEFILTER),
-#endif
-
-#if OPT_INPUT_METHOD
- Sres(XtNximFont, XtCXimFont, misc.f_x, DEFXIMFONT),
-#endif
-
-#if OPT_XMC_GLITCH
- Bres(XtNxmcInline, XtCXmcInline, screen.xmc_inline, False),
- Bres(XtNxmcMoveSGR, XtCXmcMoveSGR, screen.move_sgr_ok, True),
- Ires(XtNxmcAttributes, XtCXmcAttributes, screen.xmc_attributes, 1),
- Ires(XtNxmcGlitch, XtCXmcGlitch, screen.xmc_glitch, 0),
-#endif
-
-#ifdef SCROLLBAR_RIGHT
- Bres(XtNrightScrollBar, XtCRightScrollBar, misc.useRight, False),
-#endif
-
-#if OPT_RENDERFONT
- Dres(XtNfaceSize, XtCFaceSize, misc.face_size, DEFFACESIZE),
- Sres(XtNfaceName, XtCFaceName, misc.face_name, DEFFACENAME),
- Sres(XtNfaceNameDoublesize, XtCFaceNameDoublesize, misc.face_wide_name, DEFFACENAME),
- Bres(XtNrenderFont, XtCRenderFont, misc.render_font, True),
-#endif
-};
-
-static Boolean VTSetValues(Widget cur, Widget request, Widget new_arg,
- ArgList args, Cardinal *num_args);
-static void VTClassInit(void);
-static void VTDestroy(Widget w);
-static void VTExpose(Widget w, XEvent * event, Region region);
-static void VTInitialize(Widget wrequest, Widget new_arg, ArgList args,
- Cardinal *num_args);
-static void VTRealize(Widget w, XtValueMask * valuemask,
- XSetWindowAttributes * values);
-static void VTResize(Widget w);
-
-#if OPT_I18N_SUPPORT && OPT_INPUT_METHOD
-static void VTInitI18N(void);
-#endif
-
-#ifdef VMS
-globaldef {
- "xtermclassrec"
-} noshare
-
-#else
-static
-#endif /* VMS */
-WidgetClassRec xtermClassRec =
-{
- {
-/* core_class fields */
- (WidgetClass) & widgetClassRec, /* superclass */
- "VT100", /* class_name */
- sizeof(XtermWidgetRec), /* widget_size */
- VTClassInit, /* class_initialize */
- NULL, /* class_part_initialize */
- False, /* class_inited */
- VTInitialize, /* initialize */
- NULL, /* initialize_hook */
- VTRealize, /* realize */
- actionsList, /* actions */
- XtNumber(actionsList), /* num_actions */
- resources, /* resources */
- XtNumber(resources), /* num_resources */
- NULLQUARK, /* xrm_class */
- True, /* compress_motion */
- False, /* compress_exposure */
- True, /* compress_enterleave */
- False, /* visible_interest */
- VTDestroy, /* destroy */
- VTResize, /* resize */
- VTExpose, /* expose */
- VTSetValues, /* set_values */
- NULL, /* set_values_hook */
- XtInheritSetValuesAlmost, /* set_values_almost */
- NULL, /* get_values_hook */
- NULL, /* accept_focus */
- XtVersion, /* version */
- NULL, /* callback_offsets */
- defaultTranslations, /* tm_table */
- XtInheritQueryGeometry, /* query_geometry */
- XtInheritDisplayAccelerator, /* display_accelerator */
- NULL /* extension */
- }
-};
-
-#ifdef VMS
-globaldef {
- "xtermwidgetclass"
-}
-noshare
-#endif /* VMS */
-WidgetClass xtermWidgetClass = (WidgetClass) & xtermClassRec;
-
-/*
- * Add input-actions for widgets that are overlooked (scrollbar and toolbar):
- *
- * a) Sometimes the scrollbar passes through translations, sometimes it
- * doesn't. We add the KeyPress translations here, just to be sure.
- * b) In the normal (non-toolbar) configuration, the xterm widget covers
- * almost all of the window. With a toolbar, there's a relatively
- * large area that the user would expect to enter keystrokes since the
- * program can get the focus.
- */
-void
-xtermAddInput(Widget w)
-{
-#if OPT_TOOLBAR
- /* *INDENT-OFF* */
- XtActionsRec input_actions[] = {
- { "insert", HandleKeyPressed }, /* alias */
- { "insert-eight-bit", HandleEightBitKeyPressed },
- { "insert-seven-bit", HandleKeyPressed },
- { "secure", HandleSecure },
- { "string", HandleStringEvent },
- { "scroll-back", HandleScrollBack },
- { "scroll-forw", HandleScrollForward },
- { "select-cursor-end", HandleKeyboardSelectEnd },
- { "select-cursor-extend", HandleKeyboardSelectExtend },
- { "select-cursor-start", HandleKeyboardSelectStart },
- { "insert-selection", HandleInsertSelection },
- { "select-start", HandleSelectStart },
- { "select-extend", HandleSelectExtend },
- { "start-extend", HandleStartExtend },
- { "select-end", HandleSelectEnd },
- { "clear-saved-lines", HandleClearSavedLines },
- { "popup-menu", HandlePopupMenu },
- { "bell", HandleBell },
- { "ignore", HandleIgnore },
-#if OPT_DABBREV
- { "dabbrev-expand", HandleDabbrevExpand },
-#endif
-#if OPT_SHIFT_FONTS
- { "larger-vt-font", HandleLargerFont },
- { "smaller-vt-font", HandleSmallerFont },
-#endif
- };
- /* *INDENT-ON* */
-
- XtAppAddActions(app_con, input_actions, XtNumber(input_actions));
-#endif
- XtAugmentTranslations(w, XtParseTranslationTable(defaultTranslations));
-}
-
-#if OPT_ISO_COLORS
-/*
- * The terminal's foreground and background colors are set via two mechanisms:
- * text (cur_foreground, cur_background values that are passed down to
- * XDrawImageString and XDrawString)
- * area (X11 graphics context used in XClearArea and XFillRectangle)
- */
-void
-SGR_Foreground(int color)
-{
- TScreen *screen = &term->screen;
- Pixel fg;
-
- if (color >= 0) {
- term->flags |= FG_COLOR;
- } else {
- term->flags &= ~FG_COLOR;
- }
- fg = getXtermForeground(term->flags, color);
- term->cur_foreground = color;
-
- XSetForeground(screen->display, NormalGC(screen), fg);
- XSetBackground(screen->display, ReverseGC(screen), fg);
-
- if (NormalGC(screen) != NormalBoldGC(screen)) {
- XSetForeground(screen->display, NormalBoldGC(screen), fg);
- XSetBackground(screen->display, ReverseBoldGC(screen), fg);
- }
-}
-
-void
-SGR_Background(int color)
-{
- TScreen *screen = &term->screen;
- Pixel bg;
-
- /*
- * An indexing operation may have set screen->scroll_amt, which would
- * normally result in calling FlushScroll() in WriteText(). However,
- * if we're changing the background color now, then the new value
- * should not apply to the pending blank lines.
- */
- if (screen->scroll_amt && (color != term->cur_background))
- FlushScroll(screen);
-
- if (color >= 0) {
- term->flags |= BG_COLOR;
- } else {
- term->flags &= ~BG_COLOR;
- }
- bg = getXtermBackground(term->flags, color);
- term->cur_background = color;
-
- XSetBackground(screen->display, NormalGC(screen), bg);
- XSetForeground(screen->display, ReverseGC(screen), bg);
-
- if (NormalGC(screen) != NormalBoldGC(screen)) {
- XSetBackground(screen->display, NormalBoldGC(screen), bg);
- XSetForeground(screen->display, ReverseBoldGC(screen), bg);
- }
-}
-
-/* Invoked after updating bold/underline flags, computes the extended color
- * index to use for foreground. (See also 'extract_fg()').
- */
-static void
-setExtendedFG(void)
-{
- int fg = term->sgr_foreground;
-
- if (term->screen.colorAttrMode
- || (fg < 0)) {
- if (term->screen.colorULMode && (term->flags & UNDERLINE))
- fg = COLOR_UL;
- if (term->screen.colorBDMode && (term->flags & BOLD))
- fg = COLOR_BD;
- if (term->screen.colorBLMode && (term->flags & BLINK))
- fg = COLOR_BL;
- }
-
- /* This implements the IBM PC-style convention of 8-colors, with one
- * bit for bold, thus mapping the 0-7 codes to 8-15. It won't make
- * much sense for 16-color applications, but we keep it to retain
- * compatiblity with ANSI-color applications.
- */
-#if OPT_PC_COLORS /* XXXJTL should be settable at runtime (resource or OSC?) */
- if (term->screen.boldColors
- && (!term->sgr_extended)
- && (fg >= 0)
- && (fg < 8)
- && (term->flags & BOLD))
- fg |= 8;
-#endif
-
- SGR_Foreground(fg);
-}
-
-/* Invoked after updating inverse flag, computes the extended color
- * index to use for background. (See also 'extract_bg()').
- */
-static void
-setExtendedBG(void)
-{
- int bg = term->sgr_background;
-
- if (term->screen.colorAttrMode
- || (bg < 0)) {
- if (term->screen.colorRVMode && (term->flags & INVERSE))
- bg = COLOR_RV;
- }
-
- SGR_Background(bg);
-}
-
-static void
-reset_SGR_Foreground(void)
-{
- term->sgr_foreground = -1;
- term->sgr_extended = 0;
- setExtendedFG();
-}
-
-static void
-reset_SGR_Background(void)
-{
- term->sgr_background = -1;
- setExtendedBG();
-}
-
-static void
-reset_SGR_Colors(void)
-{
- reset_SGR_Foreground();
- reset_SGR_Background();
-}
-#endif /* OPT_ISO_COLORS */
-
-void
-resetCharsets(TScreen * screen)
-{
- TRACE(("resetCharsets\n"));
-
- screen->gsets[0] = 'B'; /* ASCII_G */
- screen->gsets[1] = 'B'; /* ASCII_G */
- screen->gsets[2] = 'B'; /* ASCII_G */
- screen->gsets[3] = 'B'; /* ASCII_G */
-
- screen->curgl = 0; /* G0 => GL. */
- screen->curgr = 2; /* G2 => GR. */
- screen->curss = 0; /* No single shift. */
-
-#if OPT_VT52_MODE
- if (screen->vtXX_level == 0)
- screen->gsets[1] = '0'; /* Graphics */
-#endif
-}
-
-/*
- * VT300 and up support three ANSI conformance levels, defined according to
- * the dpANSI X3.134.1 standard. DEC's manuals equate levels 1 and 2, and
- * are unclear. This code is written based on the manuals.
- */
-static void
-set_ansi_conformance(TScreen * screen, int level)
-{
- TRACE(("set_ansi_conformance(%d) terminal_id %d, ansi_level %d\n",
- level,
- screen->terminal_id,
- screen->ansi_level));
- if (screen->vtXX_level >= 3) {
- switch (screen->ansi_level = level) {
- case 1:
- /* FALLTHRU */
- case 2:
- screen->gsets[0] = 'B'; /* G0 is ASCII */
- screen->gsets[1] = 'B'; /* G1 is ISO Latin-1 (FIXME) */
- screen->curgl = 0;
- screen->curgr = 1;
- break;
- case 3:
- screen->gsets[0] = 'B'; /* G0 is ASCII */
- screen->curgl = 0;
- break;
- }
- }
-}
-
-/*
- * Set scrolling margins. VTxxx terminals require that the top/bottom are
- * different, so we have at least two lines in the scrolling region.
- */
-void
-set_tb_margins(TScreen * screen, int top, int bottom)
-{
- TRACE(("set_tb_margins %d..%d, prior %d..%d\n",
- top, bottom,
- screen->top_marg,
- screen->bot_marg));
- if (bottom > top) {
- screen->top_marg = top;
- screen->bot_marg = bottom;
- }
- if (screen->top_marg > screen->max_row)
- screen->top_marg = screen->max_row;
- if (screen->bot_marg > screen->max_row)
- screen->bot_marg = screen->max_row;
-}
-
-void
-set_max_col(TScreen * screen, int cols)
-{
- TRACE(("set_max_col %d, prior %d\n", cols, screen->max_col));
- if (cols < 0)
- cols = 0;
- screen->max_col = cols;
-}
-
-void
-set_max_row(TScreen * screen, int rows)
-{
- TRACE(("set_max_row %d, prior %d\n", rows, screen->max_row));
- if (rows < 0)
- rows = 0;
- screen->max_row = rows;
-}
-
-#if OPT_TRACE
-#define WHICH_TABLE(name) if (table == name) result = #name
-static char *
-which_table(Const PARSE_T * table)
-{
- char *result = "?";
- /* *INDENT-OFF* */
- WHICH_TABLE (ansi_table);
- else WHICH_TABLE (csi_table);
- else WHICH_TABLE (csi2_table);
- else WHICH_TABLE (csi_ex_table);
- else WHICH_TABLE (csi_quo_table);
-#if OPT_DEC_LOCATOR
- else WHICH_TABLE (csi_tick_table);
-#endif
-#if OPT_DEC_RECTOPS
- else WHICH_TABLE (csi_dollar_table);
- else WHICH_TABLE (csi_star_table);
-#endif
- else WHICH_TABLE (dec_table);
- else WHICH_TABLE (dec2_table);
- else WHICH_TABLE (dec3_table);
- else WHICH_TABLE (cigtable);
- else WHICH_TABLE (eigtable);
- else WHICH_TABLE (esc_table);
- else WHICH_TABLE (esc_sp_table);
- else WHICH_TABLE (scrtable);
- else WHICH_TABLE (scstable);
- else WHICH_TABLE (sos_table);
-#if OPT_WIDE_CHARS
- else WHICH_TABLE (esc_pct_table);
-#endif
-#if OPT_VT52_MODE
- else WHICH_TABLE (vt52_table);
- else WHICH_TABLE (vt52_esc_table);
- else WHICH_TABLE (vt52_ignore_table);
-#endif
- /* *INDENT-ON* */
-
- return result;
-}
-#endif
-
- /* allocate larger buffer if needed/possible */
-#define SafeAlloc(type, area, used, size) \
- type *new_string = area; \
- unsigned new_length = size; \
- if (new_length == 0) { \
- new_length = 256; \
- new_string = TypeMallocN(type, new_length); \
- } else if (used+1 >= new_length) { \
- new_length = size * 2; \
- new_string = TypeMallocN(type, new_length); \
- if (new_string != 0 \
- && area != 0 \
- && used != 0) \
- memcpy(new_string, area, used * sizeof(type)); \
- }
-
-#define WriteNow() { \
- unsigned single = 0; \
- \
- if (screen->curss) { \
- dotext(screen, \
- screen->gsets[(int) (screen->curss)], \
- print_area, 1); \
- screen->curss = 0; \
- single++; \
- } \
- if (print_used > single) { \
- dotext(screen, \
- screen->gsets[(int) (screen->curgl)], \
- print_area + single, \
- print_used - single); \
- } \
- print_used = 0; \
- } \
-
-struct ParseState {
-#if OPT_VT52_MODE
- Bool vt52_cup;
-#endif
- Const PARSE_T *groundtable;
- Const PARSE_T *parsestate;
- int scstype;
- Bool private_function; /* distinguish private-mode from standard */
- int string_mode; /* nonzero iff we're processing a string */
- int lastchar; /* positive iff we had a graphic character */
- int nextstate;
-#if OPT_WIDE_CHARS
- int last_was_wide;
-#endif
-};
-
-static struct ParseState myState;
-
-static Boolean
-doparsing(unsigned c, struct ParseState *sp)
-{
- /* Buffer for processing printable text */
- static IChar *print_area;
- static size_t print_size, print_used;
-
- /* Buffer for processing strings (e.g., OSC ... ST) */
- static Char *string_area;
- static size_t string_size, string_used;
-
- TScreen *screen = &term->screen;
- int row;
- int col;
- int top;
- int bot;
- int count;
- int laststate;
- int thischar = -1;
- XTermRect myRect;
-
- do {
-#if OPT_WIDE_CHARS
-
- /*
- * Handle zero-width combining characters. Make it faster by noting
- * that according to the Unicode charts, the majority of Western
- * character sets do not use this feature. There are some unassigned
- * codes at 0x242, but no zero-width characters until past 0x300.
- */
- if (c >= 0x300 && screen->wide_chars
- && my_wcwidth((int) c) == 0) {
- int prev, precomposed;
-
- WriteNow();
-
- prev = getXtermCell(screen,
- screen->last_written_row,
- screen->last_written_col);
- precomposed = do_precomposition(prev, (int) c);
-
- if (precomposed != -1) {
- putXtermCell(screen,
- screen->last_written_row,
- screen->last_written_col, precomposed);
- } else {
- addXtermCombining(screen,
- screen->last_written_row,
- screen->last_written_col, c);
- }
- if (!screen->scroll_amt)
- ScrnUpdate(screen,
- screen->last_written_row,
- screen->last_written_col, 1, 1, 1);
- continue;
- }
-#endif
-
- /* Intercept characters for printer controller mode */
- if (screen->printer_controlmode == 2) {
- if ((c = xtermPrinterControl((int) c)) == 0)
- continue;
- }
-
- /*
- * VT52 is a little ugly in the one place it has a parameterized
- * control sequence, since the parameter falls after the character
- * that denotes the type of sequence.
- */
-#if OPT_VT52_MODE
- if (sp->vt52_cup) {
- if (nparam < NPARAM)
- param[nparam++] = (c & 0x7f) - 32;
- if (nparam < 2)
- continue;
- sp->vt52_cup = False;
- if ((row = param[0]) < 0)
- row = 0;
- if ((col = param[1]) < 0)
- col = 0;
- CursorSet(screen, row, col, term->flags);
- sp->parsestate = vt52_table;
- param[0] = 0;
- param[1] = 0;
- continue;
- }
-#endif
-
- /*
- * The parsing tables all have 256 entries. If we're supporting
- * wide characters, we handle them by treating them the same as
- * printing characters.
- */
- laststate = sp->nextstate;
-#if OPT_WIDE_CHARS
- if (c > 255) {
- if (sp->parsestate == sp->groundtable) {
- sp->nextstate = CASE_PRINT;
- } else if (sp->parsestate == sos_table) {
- c &= 0xffff;
- if (c > 255) {
- TRACE(("Found code > 255 while in SOS state: %04X\n", c));
- c = '?';
- }
- } else {
- sp->nextstate = CASE_GROUND_STATE;
- }
- } else
-#endif
- sp->nextstate = sp->parsestate[E2A(c)];
-
-#if OPT_BROKEN_OSC
- /*
- * Linux console palette escape sequences start with an OSC, but do
- * not terminate correctly. Some scripts do not check before writing
- * them, making xterm appear to hang (it's awaiting a valid string
- * terminator). Just ignore these if we see them - there's no point
- * in emulating bad code.
- */
- if (screen->brokenLinuxOSC
- && sp->parsestate == sos_table) {
- if (string_used) {
- switch (string_area[0]) {
- case 'P':
- if (string_used <= 7)
- break;
- /* FALLTHRU */
- case 'R':
- sp->parsestate = sp->groundtable;
- sp->nextstate = sp->parsestate[E2A(c)];
- TRACE(("Reset to ground state (brokenLinuxOSC)\n"));
- break;
- }
- }
- }
-#endif
-
-#if OPT_BROKEN_ST
- /*
- * Before patch #171, carriage control embedded within an OSC string
- * would terminate it. Some (buggy, of course) applications rely on
- * this behavior. Accommodate them by allowing one to compile xterm
- * and emulate the old behavior.
- */
- if (screen->brokenStringTerm
- && sp->parsestate == sos_table
- && c < 32) {
- switch (c) {
- case 5: /* FALLTHRU */
- case 8: /* FALLTHRU */
- case 9: /* FALLTHRU */
- case 10: /* FALLTHRU */
- case 11: /* FALLTHRU */
- case 12: /* FALLTHRU */
- case 13: /* FALLTHRU */
- case 14: /* FALLTHRU */
- case 15: /* FALLTHRU */
- case 24:
- sp->parsestate = sp->groundtable;
- sp->nextstate = sp->parsestate[E2A(c)];
- TRACE(("Reset to ground state (brokenStringTerm)\n"));
- break;
- }
- }
-#endif
-
-#if OPT_C1_PRINT
- /*
- * This is not completely foolproof, but will allow an application
- * with values in the C1 range to use them as printable characters,
- * provided that they are not intermixed with an escape sequence.
- */
- if (screen->c1_printable
- && (c >= 128 && c < 160)) {
- sp->nextstate = (sp->parsestate == esc_table
- ? CASE_ESC_IGNORE
- : sp->parsestate[E2A(160)]);
- }
-#endif
-
-#if OPT_WIDE_CHARS
- /*
- * If we have a C1 code and the c1_printable flag is not set, simply
- * ignore it when it was translated from UTF-8. That is because the
- * value could not have been present as-is in the UTF-8.
- *
- * To see that CASE_IGNORE is a consistent value, note that it is
- * always used for NUL and other uninteresting C0 controls.
- */
-#if OPT_C1_PRINT
- if (!screen->c1_printable)
-#endif
- if (screen->wide_chars
- && (c >= 128 && c < 160)) {
- sp->nextstate = CASE_IGNORE;
- }
-
- /*
- * If this character is a different width than the last one, put the
- * previous text into the buffer and draw it now.
- */
- if (iswide((int) c) != sp->last_was_wide) {
- WriteNow();
- }
-#endif
-
- /*
- * Accumulate string for printable text. This may be 8/16-bit
- * characters.
- */
- if (sp->nextstate == CASE_PRINT) {
- SafeAlloc(IChar, print_area, print_used, print_size);
- if (new_string == 0) {
- fprintf(stderr,
- "Cannot allocate %u bytes for printable text\n",
- new_length);
- continue;
- }
-#if OPT_VT52_MODE
- /*
- * Strip output text to 7-bits for VT52. We should do this for
- * VT100 also (which is a 7-bit device), but xterm has been
- * doing this for so long we shouldn't change this behavior.
- */
- if (screen->vtXX_level < 1)
- c &= 0x7f;
-#endif
- print_area = new_string;
- print_size = new_length;
- print_area[print_used++] = sp->lastchar = thischar = c;
-#if OPT_WIDE_CHARS
- sp->last_was_wide = iswide((int) c);
-#endif
- if (morePtyData(screen, VTbuffer)) {
- continue;
- }
- }
-
- if (sp->nextstate == CASE_PRINT
- || (laststate == CASE_PRINT && print_used)) {
- WriteNow();
- }
-
- /*
- * Accumulate string for APC, DCS, PM, OSC, SOS controls
- * This should always be 8-bit characters.
- */
- if (sp->parsestate == sos_table) {
- SafeAlloc(Char, string_area, string_used, string_size);
- if (new_string == 0) {
- fprintf(stderr,
- "Cannot allocate %u bytes for string mode %d\n",
- new_length, sp->string_mode);
- continue;
- }
-#if OPT_WIDE_CHARS
- /*
- * We cannot display codes above 255, but let's try to
- * accommodate the application a little by not aborting the
- * string.
- */
- if ((c & 0xffff) > 255) {
- sp->nextstate = CASE_PRINT;
- c = '?';
- }
-#endif
- string_area = new_string;
- string_size = new_length;
- string_area[string_used++] = c;
- } else if (sp->parsestate != esc_table) {
- /* if we were accumulating, we're not any more */
- sp->string_mode = 0;
- string_used = 0;
- }
-
- TRACE(("parse %04X -> %d %s\n", c, sp->nextstate, which_table(sp->parsestate)));
-
- switch (sp->nextstate) {
- case CASE_PRINT:
- TRACE(("CASE_PRINT - printable characters\n"));
- break;
-
- case CASE_GROUND_STATE:
- TRACE(("CASE_GROUND_STATE - exit ignore mode\n"));
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_IGNORE:
- TRACE(("CASE_IGNORE - Ignore character %02X\n", c));
- break;
-
- case CASE_ENQ:
- TRACE(("CASE_ENQ - answerback\n"));
- for (count = 0; screen->answer_back[count] != 0; count++)
- unparseputc(screen->answer_back[count], screen->respond);
- break;
-
- case CASE_BELL:
- TRACE(("CASE_BELL - bell\n"));
- if (sp->string_mode == OSC) {
- if (string_used)
- string_area[--string_used] = '\0';
- do_osc(string_area, string_used, (int) c);
- sp->parsestate = sp->groundtable;
- } else {
- /* bell */
- Bell(XkbBI_TerminalBell, 0);
- }
- break;
-
- case CASE_BS:
- TRACE(("CASE_BS - backspace\n"));
- CursorBack(screen, 1);
- break;
-
- case CASE_CR:
- /* CR */
- CarriageReturn(screen);
- break;
-
- case CASE_ESC:
- if_OPT_VT52_MODE(screen, {
- sp->parsestate = vt52_esc_table;
- break;
- });
- sp->parsestate = esc_table;
- break;
-
-#if OPT_VT52_MODE
- case CASE_VT52_CUP:
- TRACE(("CASE_VT52_CUP - VT52 cursor addressing\n"));
- sp->vt52_cup = True;
- nparam = 0;
- break;
-
- case CASE_VT52_IGNORE:
- TRACE(("CASE_VT52_IGNORE - VT52 ignore-character\n"));
- sp->parsestate = vt52_ignore_table;
- break;
-#endif
-
- case CASE_VMOT:
- /*
- * form feed, line feed, vertical tab
- */
- xtermAutoPrint((int) c);
- xtermIndex(screen, 1);
- if (term->flags & LINEFEED)
- CarriageReturn(screen);
- do_xevents();
- break;
-
- case CASE_CBT:
- /* cursor backward tabulation */
- if ((count = param[0]) == DEFAULT)
- count = 1;
- while ((count-- > 0)
- && (TabToPrevStop(screen))) ;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CHT:
- /* cursor forward tabulation */
- if ((count = param[0]) == DEFAULT)
- count = 1;
- while ((count-- > 0)
- && (TabToNextStop(screen))) ;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_TAB:
- /* tab */
- TabToNextStop(screen);
- break;
-
- case CASE_SI:
- screen->curgl = 0;
- if_OPT_VT52_MODE(screen, {
- sp->parsestate = sp->groundtable;
- });
- break;
-
- case CASE_SO:
- screen->curgl = 1;
- if_OPT_VT52_MODE(screen, {
- sp->parsestate = sp->groundtable;
- });
- break;
-
- case CASE_DECDHL:
- xterm_DECDHL(c == '3');
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSWL:
- xterm_DECSWL();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECDWL:
- xterm_DECDWL();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SCR_STATE:
- /* enter scr state */
- sp->parsestate = scrtable;
- break;
-
- case CASE_SCS0_STATE:
- /* enter scs state 0 */
- sp->scstype = 0;
- sp->parsestate = scstable;
- break;
-
- case CASE_SCS1_STATE:
- /* enter scs state 1 */
- sp->scstype = 1;
- sp->parsestate = scstable;
- break;
-
- case CASE_SCS2_STATE:
- /* enter scs state 2 */
- sp->scstype = 2;
- sp->parsestate = scstable;
- break;
-
- case CASE_SCS3_STATE:
- /* enter scs state 3 */
- sp->scstype = 3;
- sp->parsestate = scstable;
- break;
-
- case CASE_ESC_IGNORE:
- /* unknown escape sequence */
- sp->parsestate = eigtable;
- break;
-
- case CASE_ESC_DIGIT:
- /* digit in csi or dec mode */
- if ((row = param[nparam - 1]) == DEFAULT)
- row = 0;
- param[nparam - 1] = 10 * row + (c - '0');
- if (param[nparam - 1] > 65535)
- param[nparam - 1] = 65535;
- if (sp->parsestate == csi_table)
- sp->parsestate = csi2_table;
- break;
-
- case CASE_ESC_SEMI:
- /* semicolon in csi or dec mode */
- if (nparam < NPARAM)
- param[nparam++] = DEFAULT;
- if (sp->parsestate == csi_table)
- sp->parsestate = csi2_table;
- break;
-
- case CASE_DEC_STATE:
- /* enter dec mode */
- sp->parsestate = dec_table;
- break;
-
- case CASE_DEC2_STATE:
- /* enter dec2 mode */
- sp->parsestate = dec2_table;
- break;
-
- case CASE_DEC3_STATE:
- /* enter dec3 mode */
- sp->parsestate = dec3_table;
- break;
-
- case CASE_ICH:
- TRACE(("CASE_ICH - insert char\n"));
- if ((row = param[0]) < 1)
- row = 1;
- InsertChar(screen, (unsigned) row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUU:
- TRACE(("CASE_CUU - cursor up\n"));
- if ((row = param[0]) < 1)
- row = 1;
- CursorUp(screen, row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUD:
- TRACE(("CASE_CUD - cursor down\n"));
- if ((row = param[0]) < 1)
- row = 1;
- CursorDown(screen, row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUF:
- TRACE(("CASE_CUF - cursor forward\n"));
- if ((col = param[0]) < 1)
- col = 1;
- CursorForward(screen, col);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUB:
- TRACE(("CASE_CUB - cursor backward\n"));
- if ((col = param[0]) < 1)
- col = 1;
- CursorBack(screen, col);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUP:
- TRACE(("CASE_CUP - cursor position\n"));
- if_OPT_XMC_GLITCH(screen, {
- Jump_XMC(screen);
- });
- if ((row = param[0]) < 1)
- row = 1;
- if (nparam < 2 || (col = param[1]) < 1)
- col = 1;
- CursorSet(screen, row - 1, col - 1, term->flags);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_VPA:
- TRACE(("CASE_VPA - vertical position\n"));
- if ((row = param[0]) < 1)
- row = 1;
- CursorSet(screen, row - 1, screen->cur_col, term->flags);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_HPA:
- TRACE(("CASE_HPA - horizontal position\n"));
- if ((col = param[0]) < 1)
- col = 1;
- CursorSet(screen, screen->cur_row, col - 1, term->flags);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_HP_BUGGY_LL:
- TRACE(("CASE_HP_BUGGY_LL\n"));
- /* Some HP-UX applications have the bug that they
- assume ESC F goes to the lower left corner of
- the screen, regardless of what terminfo says. */
- if (screen->hp_ll_bc)
- CursorSet(screen, screen->max_row, 0, term->flags);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ED:
- TRACE(("CASE_ED - erase display\n"));
- do_erase_display(screen, param[0], OFF_PROTECT);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_EL:
- TRACE(("CASE_EL - erase line\n"));
- do_erase_line(screen, param[0], OFF_PROTECT);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ECH:
- TRACE(("CASE_ECH - erase char\n"));
- /* ECH */
- ClearRight(screen, param[0] < 1 ? 1 : param[0]);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_IL:
- TRACE(("CASE_IL - insert line\n"));
- if ((row = param[0]) < 1)
- row = 1;
- InsertLine(screen, row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DL:
- TRACE(("CASE_DL - delete line\n"));
- if ((row = param[0]) < 1)
- row = 1;
- DeleteLine(screen, row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DCH:
- TRACE(("CASE_DCH - delete char\n"));
- if ((row = param[0]) < 1)
- row = 1;
- DeleteChar(screen, (unsigned) row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_TRACK_MOUSE:
- /*
- * A single parameter other than zero is always scroll-down.
- * A zero-parameter is used to reset the mouse mode, and is
- * not useful for scrolling anyway.
- */
- if (nparam > 1 || param[0] == 0) {
- TRACE(("CASE_TRACK_MOUSE\n"));
- /* Track mouse as long as in window and between
- * specified rows
- */
- TrackMouse(param[0],
- param[2] - 1, param[1] - 1,
- param[3] - 1, param[4] - 2);
- } else {
- TRACE(("CASE_SD - scroll down\n"));
- /* SD */
- if ((count = param[0]) < 1)
- count = 1;
- RevScroll(screen, count);
- do_xevents();
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECID:
- TRACE(("CASE_DECID\n"));
- if_OPT_VT52_MODE(screen, {
- unparseputc(ESC, screen->respond);
- unparseputc('/', screen->respond);
- unparseputc('Z', screen->respond);
- sp->parsestate = sp->groundtable;
- break;
- });
- param[0] = DEFAULT; /* Default ID parameter */
- /* FALLTHRU */
- case CASE_DA1:
- TRACE(("CASE_DA1\n"));
- if (param[0] <= 0) { /* less than means DEFAULT */
- count = 0;
- reply.a_type = CSI;
- reply.a_pintro = '?';
-
- /* The first param corresponds to the highest
- * operating level (i.e., service level) of the
- * emulation. A DEC terminal can be setup to
- * respond with a different DA response, but
- * there's no control sequence that modifies this.
- * We set it via a resource.
- */
- if (screen->terminal_id < 200) {
- switch (screen->terminal_id) {
- case 102:
- reply.a_param[count++] = 6; /* VT102 */
- break;
- case 101:
- reply.a_param[count++] = 1; /* VT101 */
- reply.a_param[count++] = 0; /* no options */
- break;
- default: /* VT100 */
- reply.a_param[count++] = 1; /* VT100 */
- reply.a_param[count++] = 2; /* AVO */
- break;
- }
- } else {
- reply.a_param[count++] = 60 + screen->terminal_id / 100;
- reply.a_param[count++] = 1; /* 132-columns */
- reply.a_param[count++] = 2; /* printer */
- reply.a_param[count++] = 6; /* selective-erase */
-#if OPT_SUNPC_KBD
- if (term->keyboard.type == keyboardIsVT220)
-#endif
- reply.a_param[count++] = 8; /* user-defined-keys */
- reply.a_param[count++] = 9; /* national replacement charsets */
- reply.a_param[count++] = 15; /* technical characters */
- if_OPT_ISO_COLORS(screen, {
- reply.a_param[count++] = 22; /* ANSI color, VT525 */
- });
-#if OPT_DEC_LOCATOR
- reply.a_param[count++] = 29; /* ANSI text locator */
-#endif
- }
- reply.a_nparam = count;
- reply.a_inters = 0;
- reply.a_final = 'c';
- unparseseq(&reply, screen->respond);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DA2:
- TRACE(("CASE_DA2\n"));
- if (param[0] <= 0) { /* less than means DEFAULT */
- count = 0;
- reply.a_type = CSI;
- reply.a_pintro = '>';
-
- if (screen->terminal_id >= 200)
- reply.a_param[count++] = 1; /* VT220 */
- else
- reply.a_param[count++] = 0; /* VT100 (nonstandard) */
- reply.a_param[count++] = XTERM_PATCH; /* Version */
- reply.a_param[count++] = 0; /* options (none) */
- reply.a_nparam = count;
- reply.a_inters = 0;
- reply.a_final = 'c';
- unparseseq(&reply, screen->respond);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECRPTUI:
- TRACE(("CASE_DECRPTUI\n"));
- if ((screen->terminal_id >= 400)
- && (param[0] <= 0)) { /* less than means DEFAULT */
- unparseputc1(DCS, screen->respond);
- unparseputc('!', screen->respond);
- unparseputc('|', screen->respond);
- unparseputc('0', screen->respond);
- unparseputc1(ST, screen->respond);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_TBC:
- TRACE(("CASE_TBC - tab clear\n"));
- if ((row = param[0]) <= 0) /* less than means default */
- TabClear(term->tabs, screen->cur_col);
- else if (row == 3)
- TabZonk(term->tabs);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SET:
- TRACE(("CASE_SET - set mode\n"));
- ansi_modes(term, bitset);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_RST:
- TRACE(("CASE_RST - reset mode\n"));
- ansi_modes(term, bitclr);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SGR:
- for (row = 0; row < nparam; ++row) {
- if_OPT_XMC_GLITCH(screen, {
- Mark_XMC(screen, param[row]);
- });
- TRACE(("CASE_SGR %d\n", param[row]));
- switch (param[row]) {
- case DEFAULT:
- case 0:
- term->flags &=
- ~(INVERSE | BOLD | BLINK | UNDERLINE | INVISIBLE);
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Colors();
- });
- break;
- case 1: /* Bold */
- term->flags |= BOLD;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 5: /* Blink */
- term->flags |= BLINK;
- StartBlinking(screen);
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 4: /* Underscore */
- term->flags |= UNDERLINE;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 7:
- term->flags |= INVERSE;
- if_OPT_ISO_COLORS(screen, {
- setExtendedBG();
- });
- break;
- case 8:
- term->flags |= INVISIBLE;
- break;
- case 22: /* reset 'bold' */
- term->flags &= ~BOLD;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 24:
- term->flags &= ~UNDERLINE;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 25: /* reset 'blink' */
- term->flags &= ~BLINK;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 27:
- term->flags &= ~INVERSE;
- if_OPT_ISO_COLORS(screen, {
- setExtendedBG();
- });
- break;
- case 28:
- term->flags &= ~INVISIBLE;
- break;
- case 30:
- case 31:
- case 32:
- case 33:
- case 34:
- case 35:
- case 36:
- case 37:
- if_OPT_ISO_COLORS(screen, {
- term->sgr_foreground = (param[row] - 30);
- term->sgr_extended = 0;
- setExtendedFG();
- });
- break;
- case 38:
- /* This is more complicated than I'd
- like, but it should properly eat all
- the parameters for unsupported modes
- */
- if_OPT_ISO_COLORS(screen, {
- row++;
- if (row < nparam) {
- switch (param[row]) {
- case 5:
- row++;
- if (row < nparam &&
- param[row] < NUM_ANSI_COLORS) {
- term->sgr_foreground = param[row];
- term->sgr_extended = 1;
- setExtendedFG();
- }
- break;
- default:
- row += 7;
- break;
- }
- }
- });
- break;
- case 39:
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Foreground();
- });
- break;
- case 40:
- case 41:
- case 42:
- case 43:
- case 44:
- case 45:
- case 46:
- case 47:
- if_OPT_ISO_COLORS(screen, {
- term->sgr_background = (param[row] - 40);
- setExtendedBG();
- });
- break;
- case 48:
- if_OPT_ISO_COLORS(screen, {
- row++;
- if (row < nparam) {
- switch (param[row]) {
- case 5:
- row++;
- if (row < nparam &&
- param[row] < NUM_ANSI_COLORS) {
- term->sgr_background = param[row];
- setExtendedBG();
- }
- break;
- default:
- row += 7;
- break;
- }
- }
- });
- break;
- case 49:
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Background();
- });
- break;
- case 90:
- case 91:
- case 92:
- case 93:
- case 94:
- case 95:
- case 96:
- case 97:
- if_OPT_AIX_COLORS(screen, {
- term->sgr_foreground = (param[row] - 90 + 8);
- term->sgr_extended = 0;
- setExtendedFG();
- });
- break;
- case 100:
-#if !OPT_AIX_COLORS
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Foreground();
- reset_SGR_Background();
- });
- break;
-#endif
- case 101:
- case 102:
- case 103:
- case 104:
- case 105:
- case 106:
- case 107:
- if_OPT_AIX_COLORS(screen, {
- term->sgr_background = (param[row] - 100 + 8);
- setExtendedBG();
- });
- break;
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- /* DSR (except for the '?') is a superset of CPR */
- case CASE_DSR:
- sp->private_function = True;
-
- /* FALLTHRU */
- case CASE_CPR:
- TRACE(("CASE_CPR - cursor position\n"));
- count = 0;
- reply.a_type = CSI;
- reply.a_pintro = sp->private_function ? '?' : 0;
- reply.a_inters = 0;
- reply.a_final = 'n';
-
- switch (param[0]) {
- case 5:
- /* operating status */
- reply.a_param[count++] = 0; /* (no malfunction ;-) */
- break;
- case 6:
- /* CPR */
- /* DECXCPR (with page=0) */
- reply.a_param[count++] = screen->cur_row + 1;
- reply.a_param[count++] = screen->cur_col + 1;
- reply.a_final = 'R';
- break;
- case 15:
- /* printer status */
- reply.a_param[count++] = 13; /* implement printer */
- break;
- case 25:
- /* UDK status */
- reply.a_param[count++] = 20; /* UDK always unlocked */
- break;
- case 26:
- /* keyboard status */
- reply.a_param[count++] = 27;
- reply.a_param[count++] = 1; /* North American */
- if (screen->terminal_id >= 400) {
- reply.a_param[count++] = 0; /* ready */
- reply.a_param[count++] = 0; /* LK201 */
- }
- break;
- case 53:
- /* Locator status */
-#if OPT_DEC_LOCATOR
- reply.a_param[count++] = 50; /* locator ready */
-#else
- reply.a_param[count++] = 53; /* no locator */
-#endif
- break;
- }
-
- if ((reply.a_nparam = count) != 0)
- unparseseq(&reply, screen->respond);
-
- sp->parsestate = sp->groundtable;
- sp->private_function = False;
- break;
-
- case CASE_MC:
- TRACE(("CASE_MC - media control\n"));
- xtermMediaControl(param[0], False);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DEC_MC:
- TRACE(("CASE_DEC_MC - DEC media control\n"));
- xtermMediaControl(param[0], True);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_HP_MEM_LOCK:
- case CASE_HP_MEM_UNLOCK:
- TRACE(("%s\n", ((sp->parsestate[c] == CASE_HP_MEM_LOCK)
- ? "CASE_HP_MEM_LOCK"
- : "CASE_HP_MEM_UNLOCK")));
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (sp->parsestate[c] == CASE_HP_MEM_LOCK)
- set_tb_margins(screen, screen->cur_row, screen->bot_marg);
- else
- set_tb_margins(screen, 0, screen->bot_marg);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSTBM:
- TRACE(("CASE_DECSTBM - set scrolling region\n"));
- if ((top = param[0]) < 1)
- top = 1;
- if (nparam < 2 || (bot = param[1]) == DEFAULT
- || bot > MaxRows(screen)
- || bot == 0)
- bot = MaxRows(screen);
- if (bot > top) {
- if (screen->scroll_amt)
- FlushScroll(screen);
- set_tb_margins(screen, top - 1, bot - 1);
- CursorSet(screen, 0, 0, term->flags);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECREQTPARM:
- TRACE(("CASE_DECREQTPARM\n"));
- if (screen->terminal_id < 200) { /* VT102 */
- if ((row = param[0]) == DEFAULT)
- row = 0;
- if (row == 0 || row == 1) {
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 7;
- reply.a_param[0] = row + 2;
- reply.a_param[1] = 1; /* no parity */
- reply.a_param[2] = 1; /* eight bits */
- reply.a_param[3] = 128; /* transmit 38.4k baud */
- reply.a_param[4] = 128; /* receive 38.4k baud */
- reply.a_param[5] = 1; /* clock multiplier ? */
- reply.a_param[6] = 0; /* STP flags ? */
- reply.a_inters = 0;
- reply.a_final = 'x';
- unparseseq(&reply, screen->respond);
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSET:
- /* DECSET */
-#if OPT_VT52_MODE
- if (screen->vtXX_level != 0)
-#endif
- dpmodes(term, bitset);
- sp->parsestate = sp->groundtable;
-#if OPT_TEK4014
- if (screen->TekEmu)
- return False;
-#endif
- break;
-
- case CASE_DECRST:
- /* DECRST */
- dpmodes(term, bitclr);
-#if OPT_VT52_MODE
- if (screen->vtXX_level == 0)
- sp->groundtable = vt52_table;
- else if (screen->terminal_id >= 100)
- sp->groundtable = ansi_table;
-#endif
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECALN:
- TRACE(("CASE_DECALN - alignment test\n"));
- if (screen->cursor_state)
- HideCursor();
- set_tb_margins(screen, 0, screen->max_row);
- CursorSet(screen, 0, 0, term->flags);
- xtermParseRect(screen, 0, 0, &myRect);
- ScrnFillRectangle(screen, &myRect, 'E', 0);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_GSETS:
- TRACE(("CASE_GSETS(%d) = '%c'\n", sp->scstype, c));
- if (screen->vtXX_level != 0)
- screen->gsets[sp->scstype] = c;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSC:
- TRACE(("CASE_DECSC - save cursor\n"));
- CursorSave(term);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECRC:
- TRACE(("CASE_DECRC - restore cursor\n"));
- CursorRestore(term);
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECKPAM:
- TRACE(("CASE_DECKPAM\n"));
- term->keyboard.flags |= MODE_DECKPAM;
- update_appkeypad();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECKPNM:
- TRACE(("CASE_DECKPNM\n"));
- term->keyboard.flags &= ~MODE_DECKPAM;
- update_appkeypad();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CSI_QUOTE_STATE:
- sp->parsestate = csi_quo_table;
- break;
-
-#if OPT_VT52_MODE
- case CASE_VT52_FINISH:
- TRACE(("CASE_VT52_FINISH terminal_id %d, vtXX_level %d\n",
- screen->terminal_id,
- screen->vtXX_level));
- if (screen->terminal_id >= 100
- && screen->vtXX_level == 0) {
- sp->groundtable =
- sp->parsestate = ansi_table;
- screen->vtXX_level = screen->vt52_save_level;
- screen->curgl = screen->vt52_save_curgl;
- screen->curgr = screen->vt52_save_curgr;
- screen->curss = screen->vt52_save_curss;
- memmove(screen->gsets, screen->vt52_save_gsets, sizeof(screen->gsets));
- }
- break;
-#endif
-
- case CASE_ANSI_LEVEL_1:
- TRACE(("CASE_ANSI_LEVEL_1\n"));
- set_ansi_conformance(screen, 1);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ANSI_LEVEL_2:
- TRACE(("CASE_ANSI_LEVEL_2\n"));
- set_ansi_conformance(screen, 2);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ANSI_LEVEL_3:
- TRACE(("CASE_ANSI_LEVEL_3\n"));
- set_ansi_conformance(screen, 3);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSCL:
- TRACE(("CASE_DECSCL(%d,%d)\n", param[0], param[1]));
- if (param[0] >= 61 && param[0] <= 65) {
- /*
- * VT300, VT420, VT520 manuals claim that DECSCL does a hard
- * reset (RIS). VT220 manual states that it is a soft reset.
- * Perhaps both are right (unlikely). Kermit says it's soft.
- */
- VTReset(False, False);
- screen->vtXX_level = param[0] - 60;
- if (param[0] > 61) {
- if (param[1] == 1)
- show_8bit_control(False);
- else if (param[1] == 0 || param[1] == 2)
- show_8bit_control(True);
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSCA:
- TRACE(("CASE_DECSCA\n"));
- screen->protected_mode = DEC_PROTECT;
- if (param[0] <= 0 || param[0] == 2)
- term->flags &= ~PROTECTED;
- else if (param[0] == 1)
- term->flags |= PROTECTED;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSED:
- TRACE(("CASE_DECSED\n"));
- do_erase_display(screen, param[0], DEC_PROTECT);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSEL:
- TRACE(("CASE_DECSEL\n"));
- do_erase_line(screen, param[0], DEC_PROTECT);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ST:
- TRACE(("CASE_ST: End of String (%d bytes)\n", string_used));
- sp->parsestate = sp->groundtable;
- if (!string_used)
- break;
- string_area[--string_used] = '\0';
- switch (sp->string_mode) {
- case APC:
- /* ignored */
- break;
- case DCS:
- do_dcs(string_area, string_used);
- break;
- case OSC:
- do_osc(string_area, string_used, ST);
- break;
- case PM:
- /* ignored */
- break;
- case SOS:
- /* ignored */
- break;
- }
- break;
-
- case CASE_SOS:
- TRACE(("CASE_SOS: Start of String\n"));
- sp->string_mode = SOS;
- sp->parsestate = sos_table;
- break;
-
- case CASE_PM:
- TRACE(("CASE_PM: Privacy Message\n"));
- sp->string_mode = PM;
- sp->parsestate = sos_table;
- break;
-
- case CASE_DCS:
- TRACE(("CASE_DCS: Device Control String\n"));
- sp->string_mode = DCS;
- sp->parsestate = sos_table;
- break;
-
- case CASE_APC:
- TRACE(("CASE_APC: Application Program Command\n"));
- sp->string_mode = APC;
- sp->parsestate = sos_table;
- break;
-
- case CASE_SPA:
- TRACE(("CASE_SPA - start protected area\n"));
- screen->protected_mode = ISO_PROTECT;
- term->flags |= PROTECTED;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_EPA:
- TRACE(("CASE_EPA - end protected area\n"));
- term->flags &= ~PROTECTED;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SU:
- TRACE(("CASE_SU - scroll up\n"));
- if ((count = param[0]) < 1)
- count = 1;
- xtermScroll(screen, count);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_IND:
- TRACE(("CASE_IND - index\n"));
- xtermIndex(screen, 1);
- do_xevents();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CPL:
- TRACE(("CASE_CPL - cursor prev line\n"));
- CursorPrevLine(screen, param[0]);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CNL:
- TRACE(("CASE_NPL - cursor next line\n"));
- CursorNextLine(screen, param[0]);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_NEL:
- TRACE(("CASE_NEL\n"));
- xtermIndex(screen, 1);
- CarriageReturn(screen);
- do_xevents();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_HTS:
- TRACE(("CASE_HTS - horizontal tab set\n"));
- TabSet(term->tabs, screen->cur_col);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_RI:
- TRACE(("CASE_RI - reverse index\n"));
- RevIndex(screen, 1);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SS2:
- TRACE(("CASE_SS2\n"));
- screen->curss = 2;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SS3:
- TRACE(("CASE_SS3\n"));
- screen->curss = 3;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CSI_STATE:
- /* enter csi state */
- nparam = 1;
- param[0] = DEFAULT;
- sp->parsestate = csi_table;
- break;
-
- case CASE_ESC_SP_STATE:
- /* esc space */
- sp->parsestate = esc_sp_table;
- break;
-
- case CASE_CSI_EX_STATE:
- /* csi exclamation */
- sp->parsestate = csi_ex_table;
- break;
-
-#if OPT_DEC_LOCATOR
- case CASE_CSI_TICK_STATE:
- /* csi tick (') */
- sp->parsestate = csi_tick_table;
- break;
-
- case CASE_DECEFR:
- TRACE(("CASE_DECEFR - Enable Filter Rectangle\n"));
- if (screen->send_mouse_pos == DEC_LOCATOR) {
- MotionOff(screen, term);
- if ((screen->loc_filter_top = param[0]) < 1)
- screen->loc_filter_top = LOC_FILTER_POS;
- if (nparam < 2 || (screen->loc_filter_left = param[1]) < 1)
- screen->loc_filter_left = LOC_FILTER_POS;
- if (nparam < 3 || (screen->loc_filter_bottom = param[2]) < 1)
- screen->loc_filter_bottom = LOC_FILTER_POS;
- if (nparam < 4 || (screen->loc_filter_right = param[3]) < 1)
- screen->loc_filter_right = LOC_FILTER_POS;
- InitLocatorFilter(term);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECELR:
- MotionOff(screen, term);
- if (param[0] <= 0 || param[0] > 2) {
- screen->send_mouse_pos = MOUSE_OFF;
- TRACE(("DECELR - Disable Locator Reports\n"));
- } else {
- TRACE(("DECELR - Enable Locator Reports\n"));
- screen->send_mouse_pos = DEC_LOCATOR;
- if (param[0] == 2) {
- screen->locator_reset = True;
- } else {
- screen->locator_reset = False;
- }
- if (nparam < 2 || param[1] != 1) {
- screen->locator_pixels = False;
- } else {
- screen->locator_pixels = True;
- }
- screen->loc_filter = False;
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSLE:
- TRACE(("DECSLE - Select Locator Events\n"));
- for (count = 0; count < nparam; ++count) {
- switch (param[count]) {
- case DEFAULT:
- case 0:
- MotionOff(screen, term);
- screen->loc_filter = False;
- screen->locator_events = 0;
- break;
- case 1:
- screen->locator_events |= LOC_BTNS_DN;
- break;
- case 2:
- screen->locator_events &= ~LOC_BTNS_DN;
- break;
- case 3:
- screen->locator_events |= LOC_BTNS_UP;
- break;
- case 4:
- screen->locator_events &= ~LOC_BTNS_UP;
- break;
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECRQLP:
- TRACE(("DECRQLP - Request Locator Position\n"));
- if (param[0] < 2) {
- /* Issue DECLRP Locator Position Report */
- GetLocatorPosition(term);
- }
- sp->parsestate = sp->groundtable;
- break;
-#endif /* OPT_DEC_LOCATOR */
-
-#if OPT_DEC_RECTOPS
- case CASE_CSI_DOLLAR_STATE:
- /* csi dollar ($) */
- if (screen->vtXX_level >= 4)
- sp->parsestate = csi_dollar_table;
- else
- sp->parsestate = eigtable;
- break;
-
- case CASE_CSI_STAR_STATE:
- /* csi dollar (*) */
- if (screen->vtXX_level >= 4)
- sp->parsestate = csi_star_table;
- else
- sp->parsestate = eigtable;
- break;
-
- case CASE_DECCRA:
- TRACE(("CASE_DECCRA - Copy rectangular area\n"));
- xtermParseRect(screen, nparam, param, &myRect);
- ScrnCopyRectangle(screen, &myRect, nparam - 5, param + 5);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECERA:
- TRACE(("CASE_DECERA - Erase rectangular area\n"));
- xtermParseRect(screen, nparam, param, &myRect);
- ScrnFillRectangle(screen, &myRect, ' ', 0);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECFRA:
- TRACE(("CASE_DECFRA - Fill rectangular area\n"));
- if (nparam > 0
- && ((param[0] >= 32 && param[0] <= 126)
- || (param[0] >= 160 && param[0] <= 255))) {
- xtermParseRect(screen, nparam - 1, param + 1, &myRect);
- ScrnFillRectangle(screen, &myRect, param[0], term->flags);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSERA:
- TRACE(("CASE_DECSERA - Selective erase rectangular area\n"));
- xtermParseRect(screen, nparam > 4 ? 4 : nparam, param, &myRect);
- ScrnWipeRectangle(screen, &myRect);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSACE:
- TRACE(("CASE_DECSACE - Select attribute change extent\n"));
- screen->cur_decsace = param[0];
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECCARA:
- TRACE(("CASE_DECCARA - Change attributes in rectangular area\n"));
- xtermParseRect(screen, nparam > 4 ? 4 : nparam, param, &myRect);
- ScrnMarkRectangle(screen, &myRect, False, nparam - 4, param + 4);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECRARA:
- TRACE(("CASE_DECRARA - Reverse attributes in rectangular area\n"));
- xtermParseRect(screen, nparam > 4 ? 4 : nparam, param, &myRect);
- ScrnMarkRectangle(screen, &myRect, True, nparam - 4, param + 4);
- sp->parsestate = sp->groundtable;
- break;
-#else
- case CASE_CSI_DOLLAR_STATE:
- /* csi dollar ($) */
- sp->parsestate = eigtable;
- break;
-
- case CASE_CSI_STAR_STATE:
- /* csi dollar (*) */
- sp->parsestate = eigtable;
- break;
-#endif /* OPT_DEC_RECTOPS */
-
- case CASE_S7C1T:
- TRACE(("CASE_S7C1T\n"));
- show_8bit_control(False);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_S8C1T:
- TRACE(("CASE_S8C1T\n"));
-#if OPT_VT52_MODE
- if (screen->vtXX_level <= 1)
- break;
-#endif
- show_8bit_control(True);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_OSC:
- TRACE(("CASE_OSC: Operating System Command\n"));
- sp->parsestate = sos_table;
- sp->string_mode = OSC;
- break;
-
- case CASE_RIS:
- TRACE(("CASE_RIS\n"));
- VTReset(True, True);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSTR:
- TRACE(("CASE_DECSTR\n"));
- VTReset(False, False);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_REP:
- TRACE(("CASE_REP\n"));
- if (sp->lastchar >= 0 &&
- sp->groundtable[E2A(sp->lastchar)] == CASE_PRINT) {
- IChar repeated[2];
- count = (param[0] < 1) ? 1 : param[0];
- repeated[0] = sp->lastchar;
- while (count-- > 0) {
- dotext(screen,
- screen->gsets[(int) (screen->curgl)],
- repeated, 1);
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS2:
- TRACE(("CASE_LS2\n"));
- screen->curgl = 2;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS3:
- TRACE(("CASE_LS3\n"));
- screen->curgl = 3;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS3R:
- TRACE(("CASE_LS3R\n"));
- screen->curgr = 3;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS2R:
- TRACE(("CASE_LS2R\n"));
- screen->curgr = 2;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS1R:
- TRACE(("CASE_LS1R\n"));
- screen->curgr = 1;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_XTERM_SAVE:
- savemodes(term);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_XTERM_RESTORE:
- restoremodes(term);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_XTERM_WINOPS:
- TRACE(("CASE_XTERM_WINOPS\n"));
- if (screen->allowWindowOps)
- window_ops(term);
- sp->parsestate = sp->groundtable;
- break;
-#if OPT_WIDE_CHARS
- case CASE_ESC_PERCENT:
- sp->parsestate = esc_pct_table;
- break;
-
- case CASE_UTF8:
- /* If we did not set UTF-8 mode from resource or the
- * command-line, allow it to be enabled/disabled by
- * control sequence.
- */
- if (!screen->wide_chars) {
- WriteNow();
- ChangeToWide(screen);
- }
- if (screen->wide_chars
- && screen->utf8_mode != uAlways) {
- switchPtyData(screen, c == 'G');
- TRACE(("UTF8 mode %s\n",
- BtoS(screen->utf8_mode)));
- } else {
- TRACE(("UTF8 mode NOT turned %s (%s)\n",
- BtoS(c == 'G'),
- (screen->utf8_mode == uAlways)
- ? "UTF-8 mode set from command-line"
- : "wideChars resource was not set"));
- }
- sp->parsestate = sp->groundtable;
- break;
-#endif
-
- case CASE_CSI_IGNORE:
- sp->parsestate = cigtable;
- break;
- }
- if (sp->parsestate == sp->groundtable)
- sp->lastchar = thischar;
- } while (0);
-
-#if OPT_WIDE_CHARS
- screen->utf8_inparse = (screen->utf8_mode != uFalse
- && sp->parsestate != sos_table);
-#endif
-
- return True;
-}
-
-static void
-VTparse(void)
-{
- TScreen *screen;
-
- /* We longjmp back to this point in VTReset() */
- (void) setjmp(vtjmpbuf);
- screen = &term->screen;
- memset(&myState, 0, sizeof(myState));
-#if OPT_VT52_MODE
- myState.groundtable = screen->vtXX_level ? ansi_table : vt52_table;
-#else
- myState.groundtable = ansi_table;
-#endif
- myState.parsestate = myState.groundtable;
- myState.lastchar = -1; /* not a legal IChar */
- myState.nextstate = -1; /* not a legal state */
-
- for (;;) {
- if (!doparsing(doinput(), &myState))
- return;
- }
-}
-
-static Char *v_buffer; /* pointer to physical buffer */
-static Char *v_bufstr = NULL; /* beginning of area to write */
-static Char *v_bufptr; /* end of area to write */
-static Char *v_bufend; /* end of physical buffer */
-
-/* Write data to the pty as typed by the user, pasted with the mouse,
- or generated by us in response to a query ESC sequence. */
-
-int
-v_write(int f, Char * data, unsigned len)
-{
- int riten;
- unsigned c = len;
-
- if (v_bufstr == NULL && len > 0) {
- v_buffer = (Char *) XtMalloc(len);
- v_bufstr = v_buffer;
- v_bufptr = v_buffer;
- v_bufend = v_buffer + len;
- }
-#ifdef DEBUG
- if (debug) {
- fprintf(stderr, "v_write called with %d bytes (%d left over)",
- len, v_bufptr - v_bufstr);
- if (len > 1 && len < 10)
- fprintf(stderr, " \"%.*s\"", len, (char *) data);
- fprintf(stderr, "\n");
- }
-#endif
-
-#ifdef VMS
- if ((1 << f) != pty_mask)
- return (tt_write((char *) data, len));
-#else /* VMS */
- if (!FD_ISSET(f, &pty_mask))
- return (write(f, (char *) data, len));
-#endif /* VMS */
-
- /*
- * Append to the block we already have.
- * Always doing this simplifies the code, and
- * isn't too bad, either. If this is a short
- * block, it isn't too expensive, and if this is
- * a long block, we won't be able to write it all
- * anyway.
- */
-
- if (len > 0) {
-#if OPT_DABBREV
- term->screen.dabbrev_working = 0; /* break dabbrev sequence */
-#endif
- if (v_bufend < v_bufptr + len) { /* we've run out of room */
- if (v_bufstr != v_buffer) {
- /* there is unused space, move everything down */
- /* possibly overlapping memmove here */
-#ifdef DEBUG
- if (debug)
- fprintf(stderr, "moving data down %d\n",
- v_bufstr - v_buffer);
-#endif
- memmove(v_buffer, v_bufstr, (unsigned) (v_bufptr - v_bufstr));
- v_bufptr -= v_bufstr - v_buffer;
- v_bufstr = v_buffer;
- }
- if (v_bufend < v_bufptr + len) {
- /* still won't fit: get more space */
- /* Don't use XtRealloc because an error is not fatal. */
- int size = v_bufptr - v_buffer; /* save across realloc */
- v_buffer = TypeRealloc(Char, size + len, v_buffer);
- if (v_buffer) {
-#ifdef DEBUG
- if (debug)
- fprintf(stderr, "expanded buffer to %d\n",
- size + len);
-#endif
- v_bufstr = v_buffer;
- v_bufptr = v_buffer + size;
- v_bufend = v_bufptr + len;
- } else {
- /* no memory: ignore entire write request */
- fprintf(stderr, "%s: cannot allocate buffer space\n",
- xterm_name);
- v_buffer = v_bufstr; /* restore clobbered pointer */
- c = 0;
- }
- }
- }
- if (v_bufend >= v_bufptr + len) {
- /* new stuff will fit */
- memmove(v_bufptr, data, len);
- v_bufptr += len;
- }
- }
-
- /*
- * Write out as much of the buffer as we can.
- * Be careful not to overflow the pty's input silo.
- * We are conservative here and only write
- * a small amount at a time.
- *
- * If we can't push all the data into the pty yet, we expect write
- * to return a non-negative number less than the length requested
- * (if some data written) or -1 and set errno to EAGAIN,
- * EWOULDBLOCK, or EINTR (if no data written).
- *
- * (Not all systems do this, sigh, so the code is actually
- * a little more forgiving.)
- */
-
-#define MAX_PTY_WRITE 128 /* 1/2 POSIX minimum MAX_INPUT */
-
- if (v_bufptr > v_bufstr) {
-#ifdef VMS
- riten = tt_write(v_bufstr,
- ((v_bufptr - v_bufstr <= VMS_TERM_BUFFER_SIZE)
- ? v_bufptr - v_bufstr
- : VMS_TERM_BUFFER_SIZE));
- if (riten == 0)
- return (riten);
-#else /* VMS */
- riten = write(f, v_bufstr,
- (size_t) ((v_bufptr - v_bufstr <= MAX_PTY_WRITE)
- ? v_bufptr - v_bufstr
- : MAX_PTY_WRITE));
- if (riten < 0)
-#endif /* VMS */
- {
-#ifdef DEBUG
- if (debug)
- perror("write");
-#endif
- riten = 0;
- }
-#ifdef DEBUG
- if (debug)
- fprintf(stderr, "write called with %d, wrote %d\n",
- v_bufptr - v_bufstr <= MAX_PTY_WRITE ?
- v_bufptr - v_bufstr : MAX_PTY_WRITE,
- riten);
-#endif
- v_bufstr += riten;
- if (v_bufstr >= v_bufptr) /* we wrote it all */
- v_bufstr = v_bufptr = v_buffer;
- }
-
- /*
- * If we have lots of unused memory allocated, return it
- */
- if (v_bufend - v_bufptr > 1024) { /* arbitrary hysteresis */
- /* save pointers across realloc */
- int start = v_bufstr - v_buffer;
- int size = v_bufptr - v_buffer;
- unsigned allocsize = (unsigned) (size ? size : 1);
-
- v_buffer = TypeRealloc(Char, allocsize, v_buffer);
- if (v_buffer) {
- v_bufstr = v_buffer + start;
- v_bufptr = v_buffer + size;
- v_bufend = v_buffer + allocsize;
-#ifdef DEBUG
- if (debug)
- fprintf(stderr, "shrunk buffer to %d\n", allocsize);
-#endif
- } else {
- /* should we print a warning if couldn't return memory? */
- v_buffer = v_bufstr - start; /* restore clobbered pointer */
- }
- }
- return (c);
-}
-
-#ifdef VMS
-#define ptymask() (v_bufptr > v_bufstr ? pty_mask : 0)
-
-static void
-in_put(void)
-{
- static PtySelect select_mask;
- static PtySelect write_mask;
- int update = VTbuffer->update;
- int size;
-
- int status;
- Dimension replyWidth, replyHeight;
- XtGeometryResult stat;
-
- TScreen *screen = &term->screen;
- char *cp;
- int i;
-
- select_mask = pty_mask; /* force initial read */
- for (;;) {
-
- /* if the terminal changed size, resize the widget */
- if (tt_changed) {
- tt_changed = False;
-
- stat = XtMakeResizeRequest((Widget) term,
- ((Dimension) FontWidth(screen)
- * (tt_width)
- + 2 * screen->border
- + screen->fullVwin.sb_info.width),
- ((Dimension) FontHeight(screen)
- * (tt_length)
- + 2 * screen->border),
- &replyWidth, &replyHeight);
-
- if (stat == XtGeometryYes || stat == XtGeometryDone) {
- term->core.width = replyWidth;
- term->core.height = replyHeight;
-
- ScreenResize(&term->screen, replyWidth, replyHeight,
- &term->flags);
- }
- repairSizeHints();
- }
-
- if (eventMode == NORMAL
- && readPtyData(screen, &select_mask, VTbuffer)) {
- if (screen->scrollWidget
- && screen->scrollttyoutput
- && screen->topline < 0)
- /* Scroll to bottom */
- WindowScroll(screen, 0);
- break;
- }
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (screen->cursor_set && CursorMoved(screen)) {
- if (screen->cursor_state)
- HideCursor();
- ShowCursor();
-#if OPT_INPUT_METHOD
- PreeditPosition(screen);
-#endif
- } else if (screen->cursor_set != screen->cursor_state) {
- if (screen->cursor_set)
- ShowCursor();
- else
- HideCursor();
- }
-
- if (QLength(screen->display)) {
- select_mask = X_mask;
- } else {
- write_mask = ptymask();
- XFlush(screen->display);
- select_mask = Select_mask;
- if (eventMode != NORMAL)
- select_mask = X_mask;
- }
- if (write_mask & ptymask()) {
- v_write(screen->respond, 0, 0); /* flush buffer */
- }
-
- if (select_mask & X_mask) {
- xevents();
- if (VTbuffer->update != update)
- break;
- }
- }
-}
-#else /* VMS */
-
-static void
-in_put(void)
-{
- static PtySelect select_mask;
- static PtySelect write_mask;
-
- TScreen *screen = &term->screen;
- int i, time_select;
- int size;
- int update = VTbuffer->update;
-
- static struct timeval select_timeout;
-
-#if OPT_BLINK_CURS
- /*
- * Compute the timeout for the blinking cursor to be much smaller than
- * the "on" or "off" interval.
- */
- int tick = ((screen->blink_on < screen->blink_off)
- ? screen->blink_on
- : screen->blink_off);
- tick *= (1000 / 8); /* 1000 for msec/usec, 8 for "much" smaller */
- if (tick < 1)
- tick = 1;
-#endif
-
- for (;;) {
- if (eventMode == NORMAL
- && (size = readPtyData(screen, &select_mask, VTbuffer)) != 0) {
- if (screen->scrollWidget
- && screen->scrollttyoutput
- && screen->topline < 0)
- WindowScroll(screen, 0); /* Scroll to bottom */
- /* stop speed reading at some point to look for X stuff */
- TRACE(("VTbuffer uses %d/%d\n",
- VTbuffer->last - VTbuffer->buffer,
- BUF_SIZE));
- if ((VTbuffer->last - VTbuffer->buffer) > BUF_SIZE) {
- FD_CLR(screen->respond, &select_mask);
- break;
- }
-#if defined(HAVE_SCHED_YIELD)
- /*
- * If we've read a full (small/fragment) buffer, let the operating
- * system have a turn, and we'll resume reading until we've either
- * read only a fragment of the buffer, or we've filled the large
- * buffer (see above). Doing this helps keep up with large bursts
- * of output.
- */
- if (size == FRG_SIZE) {
- select_timeout.tv_sec = 0;
- i = Select(max_plus1, &select_mask, &write_mask, 0,
- &select_timeout);
- if (i > 0) {
- sched_yield();
- } else
- break;
- } else {
- break;
- }
-#else
- (void) size; /* unused in this branch */
- break;
-#endif
- }
- /* update the screen */
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (screen->cursor_set && CursorMoved(screen)) {
- if (screen->cursor_state)
- HideCursor();
- ShowCursor();
-#if OPT_INPUT_METHOD
- PreeditPosition(screen);
-#endif
- } else if (screen->cursor_set != screen->cursor_state) {
- if (screen->cursor_set)
- ShowCursor();
- else
- HideCursor();
- }
-
- XFlush(screen->display); /* always flush writes before waiting */
-
- /* Update the masks and, unless X events are already in the queue,
- wait for I/O to be possible. */
- XFD_COPYSET(&Select_mask, &select_mask);
- /* in selection mode xterm does not read pty */
- if (eventMode != NORMAL)
- FD_CLR(screen->respond, &select_mask);
-
- if (v_bufptr > v_bufstr) {
- XFD_COPYSET(&pty_mask, &write_mask);
- } else
- FD_ZERO(&write_mask);
- select_timeout.tv_sec = 0;
- time_select = 0;
-
- /*
- * if there's either an XEvent or an XtTimeout pending, just take
- * a quick peek, i.e. timeout from the select() immediately. If
- * there's nothing pending, let select() block a little while, but
- * for a shorter interval than the arrow-style scrollbar timeout.
- * The blocking is optional, because it tends to increase the load
- * on the host.
- */
- if (XtAppPending(app_con)) {
- select_timeout.tv_usec = 0;
- time_select = 1;
- } else if (screen->awaitInput) {
- select_timeout.tv_usec = 50000;
- time_select = 1;
-#if OPT_BLINK_CURS
- } else if ((screen->blink_timer != 0 &&
- ((screen->select & FOCUS) || screen->always_highlight)) ||
- (screen->cursor_state == BLINKED_OFF)) {
- select_timeout.tv_usec = tick;
- while (select_timeout.tv_usec > 1000000) {
- select_timeout.tv_usec -= 1000000;
- select_timeout.tv_sec++;
- }
- time_select = 1;
-#endif
-#if OPT_SESSION_MGT
- } else if (resource.sessionMgt) {
- /*
- * When session management is enabled, we should not block since
- * session related events can arrive any time.
- */
- select_timeout.tv_sec = 1;
- select_timeout.tv_usec = 0;
- time_select = 1;
-#endif
- }
- if (need_cleanup)
- Cleanup(0);
-
-#if defined(NX_TRANS_SOCKET) && defined(NX_TRANS_TEST)
- fprintf(stderr, "xterm::in_put: Select called with [%d][%p][%p][%p][%p].\n",
- max_plus1, (void *) &select_mask, (void *) &write_mask, (void *) 0,
- (void *) (time_select ? &select_timeout : 0));
-#endif
-
- i = Select(max_plus1, &select_mask, &write_mask, 0,
- (time_select ? &select_timeout : 0));
- if (i < 0) {
- if (errno != EINTR)
- SysError(ERROR_SELECT);
- continue;
- }
-
- /* if there is room to write more data to the pty, go write more */
- if (FD_ISSET(screen->respond, &write_mask)) {
- v_write(screen->respond, (Char *) 0, 0); /* flush buffer */
- }
-
- /* if there are X events already in our queue, it
- counts as being readable */
- if (XtAppPending(app_con) ||
- FD_ISSET(ConnectionNumber(screen->display), &select_mask)) {
- xevents();
- if (VTbuffer->update != update) /* HandleInterpret */
- break;
- }
-
- }
-}
-#endif /* VMS */
-
-static IChar
-doinput(void)
-{
- TScreen *screen = &term->screen;
-
- while (!morePtyData(screen, VTbuffer))
- in_put();
- return nextPtyData(screen, VTbuffer);
-}
-
-#if OPT_INPUT_METHOD
-/*
- * For OverTheSpot, client has to inform the position for XIM preedit.
- */
-static void
-PreeditPosition(TScreen * screen)
-{
- XPoint spot;
- XVaNestedList list;
-
- if (!screen->xic)
- return;
- spot.x = CurCursorX(screen, screen->cur_row, screen->cur_col);
- spot.y = CursorY(screen, screen->cur_row) + screen->fs_ascent;
- list = XVaCreateNestedList(0,
- XNSpotLocation, &spot,
- XNForeground, T_COLOR(screen, TEXT_FG),
- XNBackground, T_COLOR(screen, TEXT_BG),
- NULL);
- XSetICValues(screen->xic, XNPreeditAttributes, list, NULL);
- XFree(list);
-}
-#endif
-
-/*
- * process a string of characters according to the character set indicated
- * by charset. worry about end of line conditions (wraparound if selected).
- */
-void
-dotext(TScreen * screen,
- int charset,
- IChar * buf, /* start of characters to process */
- Cardinal len) /* end */
-{
-#if OPT_WIDE_CHARS
- Cardinal chars_chomped = 1;
-#else
- int next_col, last_col, this_col; /* must be signed */
-#endif
- Cardinal offset;
-
-#if OPT_WIDE_CHARS
- /* don't translate if we use UTF-8, and are not handling legacy support
- * for line-drawing characters.
- */
- if ((screen->utf8_mode == uFalse)
- || (screen->vt100_graphics && charset == '0'))
-#endif
-
- if (!xtermCharSetOut(buf, buf + len, charset))
- return;
-
- if_OPT_XMC_GLITCH(screen, {
- Cardinal n;
- if (charset != '?') {
- for (n = 0; n < len; n++) {
- if (buf[n] == XMC_GLITCH)
- buf[n] = XMC_GLITCH + 1;
- }
- }
- });
-
-#if OPT_WIDE_CHARS
- for (offset = 0;
- offset < len && (chars_chomped > 0 || screen->do_wrap);
- offset += chars_chomped) {
- int width_available = MaxCols(screen) - screen->cur_col;
- int width_here = 0;
- int need_wrap = 0;
- chars_chomped = 0;
-
- if (screen->do_wrap && (term->flags & WRAPAROUND)) {
- /* mark that we had to wrap this line */
- ScrnSetWrapped(screen, screen->cur_row);
- xtermAutoPrint('\n');
- xtermIndex(screen, 1);
- set_cur_col(screen, 0);
- screen->do_wrap = 0;
- width_available = MaxCols(screen) - screen->cur_col;
- }
-
- while (width_here <= width_available && chars_chomped < (len - offset)) {
- if (!screen->utf8_mode
- || (screen->vt100_graphics && charset == '0'))
- width_here++;
- else
- width_here += my_wcwidth((int) buf[chars_chomped + offset]);
- chars_chomped++;
- }
-
- if (width_here > width_available) {
- chars_chomped--;
- if (!screen->utf8_mode
- || (screen->vt100_graphics && charset == '0'))
- width_here--;
- else
- width_here -= my_wcwidth((int) buf[chars_chomped + offset]);
- need_wrap = 1;
- } else if (width_here == width_available) {
- need_wrap = 1;
- } else if (chars_chomped != (len - offset)) {
- need_wrap = 1;
- }
-
- /*
- * Split the wide characters back into separate arrays of 8-bit
- * characters so we can use the existing interface.
- *
- * FIXME: If we rewrote this interface, it would involve
- * rewriting all of the memory-management for the screen
- * buffers (perhaps this is simpler).
- */
- if (chars_chomped != 0) {
- static unsigned limit;
- static Char *hibyte, *lobyte;
- Bool both = False;
- unsigned j, k;
-
- if (chars_chomped >= limit) {
- limit = (chars_chomped + 1) * 2;
- lobyte = (Char *) XtRealloc((char *) lobyte, limit);
- hibyte = (Char *) XtRealloc((char *) hibyte, limit);
- }
- for (j = offset; j < offset + chars_chomped; j++) {
- k = j - offset;
- lobyte[k] = buf[j];
- if (buf[j] > 255) {
- hibyte[k] = (buf[j] >> 8);
- both = True;
- } else {
- hibyte[k] = 0;
- }
- }
-
- WriteText(screen, PAIRED_CHARS(lobyte,
- (both ? hibyte : 0)),
- chars_chomped);
- }
- screen->do_wrap = need_wrap;
- }
-#else
-
- for (offset = 0; offset < len; offset += this_col) {
- last_col = CurMaxCol(screen, screen->cur_row);
- this_col = last_col - screen->cur_col + 1;
- if (this_col <= 1) {
- if (screen->do_wrap && (term->flags & WRAPAROUND)) {
- /* mark that we had to wrap this line */
- ScrnSetWrapped(screen, screen->cur_row);
- xtermAutoPrint('\n');
- xtermIndex(screen, 1);
- set_cur_col(screen, 0);
- screen->do_wrap = 0;
- this_col = last_col + 1;
- } else
- this_col = 1;
- }
- if (offset + this_col > len) {
- this_col = len - offset;
- }
- next_col = screen->cur_col + this_col;
-
- WriteText(screen, PAIRED_CHARS(buf + offset,
- buf2 ? buf2 + offset : 0),
- this_col);
-
- /*
- * the call to WriteText updates screen->cur_col.
- * If screen->cur_col != next_col, we must have
- * hit the right margin, so set the do_wrap flag.
- */
- screen->do_wrap = (screen->cur_col < (int) next_col);
- }
-
-#endif
-}
-
-#if HANDLE_STRUCT_NOTIFY
-/* Flag icon name with "*** " on window output when iconified.
- * I'd like to do something like reverse video, but I don't
- * know how to tell this to window managers in general.
- *
- * mapstate can be IsUnmapped, !IsUnmapped, or -1;
- * -1 means no change; the other two are set by event handlers
- * and indicate a new mapstate. !IsMapped is done in the handler.
- * we worry about IsUnmapped when output occurs. -IAN!
- */
-static int mapstate = -1;
-#endif /* HANDLE_STRUCT_NOTIFY */
-
-#if OPT_WIDE_CHARS
-unsigned
-visual_width(PAIRED_CHARS(Char * str, Char * str2), Cardinal len)
-{
- /* returns the visual width of a string (doublewide characters count
- as 2, normalwide characters count as 1) */
- int my_len = 0;
- while (len) {
- int ch = *str;
- if (str2)
- ch |= *str2 << 8;
- if (str)
- str++;
- if (str2)
- str2++;
- if (iswide(ch))
- my_len += 2;
- else
- my_len++;
- len--;
- }
- return my_len;
-}
-#endif
-
-/*
- * write a string str of length len onto the screen at
- * the current cursor position. update cursor position.
- */
-static void
-WriteText(TScreen * screen, PAIRED_CHARS(Char * str, Char * str2), Cardinal len)
-{
- ScrnPtr PAIRED_CHARS(temp_str = 0, temp_str2 = 0);
- unsigned test;
- unsigned flags = term->flags;
- unsigned fg_bg = makeColorPair(term->cur_foreground, term->cur_background);
- unsigned cells = visual_width(PAIRED_CHARS(str, str2), len);
- GC currentGC;
-
- TRACE(("WriteText (%2d,%2d) (%d) %3d:%s\n",
- screen->cur_row,
- screen->cur_col,
- curXtermChrSet(screen->cur_row),
- len, visibleChars(PAIRED_CHARS(str, str2), len)));
-
- if (ScrnHaveSelection(screen)
- && ScrnIsLineInSelection(screen, screen->cur_row - screen->topline)) {
- ScrnDisownSelection(screen);
- }
-
- if (screen->cur_row - screen->topline <= screen->max_row) {
- if (screen->cursor_state)
- HideCursor();
-
- if (flags & INSERT) {
- InsertChar(screen, cells);
- }
- if (!AddToRefresh(screen)) {
-
- if (screen->scroll_amt)
- FlushScroll(screen);
-
- if (flags & INVISIBLE) {
- if (cells > len) {
- str = temp_str = TypeMallocN(Char, cells);
- if (str == 0)
- return;
- }
- if_OPT_WIDE_CHARS(screen, {
- if (cells > len) {
- str2 = temp_str2 = TypeMallocN(Char, cells);
- }
- });
- len = cells;
-
- memset(str, ' ', len);
- if_OPT_WIDE_CHARS(screen, {
- if (str2 != 0)
- memset(str2, 0, len);
- });
- }
-
- TRACE(("WriteText calling drawXtermText (%d,%d)\n",
- screen->cur_col,
- screen->cur_row));
-
- test = flags;
- checkVeryBoldColors(test, term->cur_foreground);
-
- /* make sure that the correct GC is current */
- currentGC = updatedXtermGC(screen, flags, fg_bg, False);
-
- drawXtermText(screen, test & DRAWX_MASK, currentGC,
- CurCursorX(screen, screen->cur_row, screen->cur_col),
- CursorY(screen, screen->cur_row),
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(str, str2), len, 0);
-
- resetXtermGC(screen, flags, False);
- }
- }
-
- ScreenWrite(screen, PAIRED_CHARS(str, str2), flags, fg_bg, len);
- CursorForward(screen, (int) cells);
-#if OPT_ZICONBEEP
- /* Flag icon name with "***" on window output when iconified.
- */
- if (zIconBeep && mapstate == IsUnmapped && !zIconBeep_flagged) {
- static char *icon_name;
- static Arg args[] =
- {
- {XtNiconName, (XtArgVal) & icon_name}
- };
-
- icon_name = NULL;
- XtGetValues(toplevel, args, XtNumber(args));
-
- if (icon_name != NULL) {
- zIconBeep_flagged = True;
- Changename(icon_name);
- }
- if (zIconBeep > 0) {
-#if defined(HAVE_XKBBELL)
- XkbBell(XtDisplay(toplevel), VShellWindow, zIconBeep, XkbBI_Info);
-#else
- XBell(XtDisplay(toplevel), zIconBeep);
-#endif
- }
- }
- mapstate = -1;
-#endif /* OPT_ZICONBEEP */
- if (temp_str != 0)
- free(temp_str);
- if_OPT_WIDE_CHARS(screen, {
- if (temp_str2 != 0)
- free(temp_str2);
- });
- return;
-}
-
-#if HANDLE_STRUCT_NOTIFY
-/* Flag icon name with "***" on window output when iconified.
- */
-static void
-HandleStructNotify(Widget w GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XEvent * event,
- Boolean * cont GCC_UNUSED)
-{
- static char *icon_name;
- static Arg args[] =
- {
- {XtNiconName, (XtArgVal) & icon_name}
- };
-
- switch (event->type) {
- case MapNotify:
- TRACE(("HandleStructNotify(MapNotify)\n"));
-#if OPT_ZICONBEEP
- if (zIconBeep_flagged) {
- zIconBeep_flagged = False;
- icon_name = NULL;
- XtGetValues(toplevel, args, XtNumber(args));
- if (icon_name != NULL) {
- char *buf = CastMallocN(char, strlen(icon_name));
- if (buf == NULL) {
- zIconBeep_flagged = True;
- return;
- }
- strcpy(buf, icon_name + 4);
- Changename(buf);
- free(buf);
- }
- }
-#endif /* OPT_ZICONBEEP */
- mapstate = !IsUnmapped;
- break;
- case UnmapNotify:
- TRACE(("HandleStructNotify(UnmapNotify)\n"));
- mapstate = IsUnmapped;
- break;
- case ConfigureNotify:
- TRACE(("HandleStructNotify(ConfigureNotify)\n"));
-#if OPT_TOOLBAR
- /* the notify is for the top-level widget, but we care about vt100 */
- if (term->screen.Vshow) {
- TScreen *screen = &term->screen;
- struct _vtwin *Vwin = WhichVWin(&(term->screen));
- TbInfo *info = &(Vwin->tb_info);
- TbInfo save = *info;
-
- if (info->menu_bar) {
- XtVaGetValues(info->menu_bar,
- XtNheight, &info->menu_height,
- XtNborderWidth, &info->menu_border,
- (XtPointer) 0);
-
- if (save.menu_height != info->menu_height
- || save.menu_border != info->menu_border) {
-
- TRACE(("...menu_height %d\n", info->menu_height));
- TRACE(("...menu_border %d\n", info->menu_border));
- TRACE(("...had height %d, border %d\n",
- save.menu_height,
- save.menu_border));
-
- /*
- * FIXME: Window manager still may be using the old values.
- * Try to fool it.
- */
- XtMakeResizeRequest((Widget) term,
- screen->fullVwin.fullwidth,
- info->menu_height
- - save.menu_height
- + screen->fullVwin.fullheight,
- NULL, NULL);
- repairSizeHints();
- }
- }
- }
-#endif /* OPT_TOOLBAR */
- break;
- default:
- TRACE(("HandleStructNotify(event %d)\n", event->type));
- break;
- }
-}
-#endif /* HANDLE_STRUCT_NOTIFY */
-
-#if OPT_BLINK_CURS
-static void
-SetCursorBlink(TScreen * screen, int enable)
-{
- screen->cursor_blink = enable;
- if (DoStartBlinking(screen)) {
- StartBlinking(screen);
- } else {
-#if !OPT_BLINK_TEXT
- StopBlinking(screen);
-#endif
- }
- update_cursorblink();
-}
-
-void
-ToggleCursorBlink(TScreen * screen)
-{
- SetCursorBlink(screen, !(screen->cursor_blink));
-}
-#endif
-
-/*
- * process ANSI modes set, reset
- */
-static void
-ansi_modes(XtermWidget termw,
- void (*func) (unsigned *p, unsigned mask))
-{
- int i;
-
- for (i = 0; i < nparam; ++i) {
- switch (param[i]) {
- case 2: /* KAM (if set, keyboard locked */
- (*func) (&termw->keyboard.flags, MODE_KAM);
- break;
-
- case 4: /* IRM */
- (*func) (&termw->flags, INSERT);
- break;
-
- case 12: /* SRM (if set, local echo */
- (*func) (&termw->keyboard.flags, MODE_SRM);
- break;
-
- case 20: /* LNM */
- (*func) (&termw->flags, LINEFEED);
- update_autolinefeed();
- break;
- }
- }
-}
-
-#define set_mousemode(mode) \
- screen->send_mouse_pos = (func == bitset) ? mode : MOUSE_OFF
-#define set_mouseflag(f) \
- ((func == bitset) \
- ? SCREEN_FLAG_set(screen, f) \
- : SCREEN_FLAG_unset(screen, f))
-
-/*
- * process DEC private modes set, reset
- */
-static void
-dpmodes(XtermWidget termw,
- void (*func) (unsigned *p, unsigned mask))
-{
- TScreen *screen = &termw->screen;
- int i, j;
-
- for (i = 0; i < nparam; ++i) {
- TRACE(("%s %d\n", (func == bitset) ? "DECSET" : "DECRST", param[i]));
- switch (param[i]) {
- case 1: /* DECCKM */
- (*func) (&termw->keyboard.flags, MODE_DECCKM);
- update_appcursor();
- break;
- case 2: /* DECANM - ANSI/VT52 mode */
- if (func == bitset) { /* ANSI (VT100) */
- /*
- * Setting DECANM should have no effect, since this function
- * cannot be reached from vt52 mode.
- */
- ;
- }
-#if OPT_VT52_MODE
- else if (screen->terminal_id >= 100) { /* VT52 */
- TRACE(("DECANM terminal_id %d, vtXX_level %d\n",
- screen->terminal_id,
- screen->vtXX_level));
- screen->vt52_save_level = screen->vtXX_level;
- screen->vtXX_level = 0;
- screen->vt52_save_curgl = screen->curgl;
- screen->vt52_save_curgr = screen->curgr;
- screen->vt52_save_curss = screen->curss;
- memmove(screen->vt52_save_gsets, screen->gsets, sizeof(screen->gsets));
- resetCharsets(screen);
- nparam = 0; /* ignore the remaining params, if any */
- }
-#endif
- break;
- case 3: /* DECCOLM */
- if (screen->c132) {
- ClearScreen(screen);
- CursorSet(screen, 0, 0, termw->flags);
- if ((j = func == bitset ? 132 : 80) !=
- ((termw->flags & IN132COLUMNS) ? 132 : 80) ||
- j != MaxCols(screen))
- RequestResize(termw, -1, j, True);
- (*func) (&termw->flags, IN132COLUMNS);
- }
- break;
- case 4: /* DECSCLM (slow scroll) */
- if (func == bitset) {
- screen->jumpscroll = 0;
- if (screen->scroll_amt)
- FlushScroll(screen);
- } else
- screen->jumpscroll = 1;
- (*func) (&termw->flags, SMOOTHSCROLL);
- update_jumpscroll();
- break;
- case 5: /* DECSCNM */
- j = termw->flags;
- (*func) (&termw->flags, REVERSE_VIDEO);
- if ((termw->flags ^ j) & REVERSE_VIDEO)
- ReverseVideo(termw);
- /* update_reversevideo done in RevVid */
- break;
-
- case 6: /* DECOM */
- (*func) (&termw->flags, ORIGIN);
- CursorSet(screen, 0, 0, termw->flags);
- break;
-
- case 7: /* DECAWM */
- (*func) (&termw->flags, WRAPAROUND);
- update_autowrap();
- break;
- case 8: /* DECARM */
- /* ignore autorepeat
- * XAutoRepeatOn() and XAutoRepeatOff() can do this, but only
- * for the whole display - not limited to a given window.
- */
- break;
- case SET_X10_MOUSE: /* MIT bogus sequence */
- MotionOff(screen, termw);
- set_mousemode(X10_MOUSE);
- break;
-#if OPT_TOOLBAR
- case 10: /* rxvt */
- ShowToolbar(func == bitset);
- break;
-#endif
-#if OPT_BLINK_CURS
- case 12: /* att610: Start/stop blinking cursor */
- if (screen->cursor_blink_res) {
- screen->cursor_blink_esc = (func == bitset) ? ON : OFF;
- SetCursorBlink(screen, screen->cursor_blink);
- }
- break;
-#endif
- case 18: /* DECPFF: print form feed */
- screen->printer_formfeed = (func == bitset) ? ON : OFF;
- break;
- case 19: /* DECPEX: print extent */
- screen->printer_extent = (func == bitset) ? ON : OFF;
- break;
- case 25: /* DECTCEM: Show/hide cursor (VT200) */
- screen->cursor_set = (func == bitset) ? ON : OFF;
- break;
- case 30: /* rxvt */
- if (screen->fullVwin.sb_info.width != ((func == bitset) ? ON : OFF))
- ToggleScrollBar(termw);
- break;
-#if OPT_SHIFT_FONTS
- case 35: /* rxvt */
- term->misc.shift_fonts = (func == bitset) ? ON : OFF;
- break;
-#endif
- case 38: /* DECTEK */
-#if OPT_TEK4014
- if (func == bitset && !(screen->inhibit & I_TEK)) {
- FlushLog(screen);
- screen->TekEmu = True;
- }
-#endif
- break;
- case 40: /* 132 column mode */
- screen->c132 = (func == bitset);
- update_allow132();
- break;
- case 41: /* curses hack */
- screen->curses = (func == bitset);
- update_cursesemul();
- break;
- case 42: /* DECNRCM national charset (VT220) */
- (*func) (&termw->flags, NATIONAL);
- break;
- case 44: /* margin bell */
- screen->marginbell = (func == bitset);
- if (!screen->marginbell)
- screen->bellarmed = -1;
- update_marginbell();
- break;
- case 45: /* reverse wraparound */
- (*func) (&termw->flags, REVERSEWRAP);
- update_reversewrap();
- break;
-#ifdef ALLOWLOGGING
- case 46: /* logging */
-#ifdef ALLOWLOGFILEONOFF
- /*
- * if this feature is enabled, logging may be
- * enabled and disabled via escape sequences.
- */
- if (func == bitset)
- StartLog(screen);
- else
- CloseLog(screen);
-#else
- Bell(XkbBI_Info, 0);
- Bell(XkbBI_Info, 0);
-#endif /* ALLOWLOGFILEONOFF */
- break;
-#endif
- case 1049: /* alternate buffer & cursor */
- if (!termw->misc.titeInhibit) {
- if (func == bitset) {
- CursorSave(termw);
- ToAlternate(screen);
- ClearScreen(screen);
- } else {
- FromAlternate(screen);
- CursorRestore(termw);
- }
- } else if (termw->misc.tiXtraScroll) {
- if (func == bitset) {
- xtermScroll(screen, screen->max_row);
- }
- }
- break;
- case 1047:
- case 47: /* alternate buffer */
- if (!termw->misc.titeInhibit) {
- if (func == bitset) {
- ToAlternate(screen);
- } else {
- if (screen->alternate
- && (param[i] == 1047))
- ClearScreen(screen);
- FromAlternate(screen);
- }
- } else if (termw->misc.tiXtraScroll) {
- if (func == bitset) {
- xtermScroll(screen, screen->max_row);
- }
- }
- break;
- case 66: /* DECNKM */
- (*func) (&termw->keyboard.flags, MODE_DECKPAM);
- update_appkeypad();
- break;
- case 67: /* DECBKM */
- /* back-arrow mapped to backspace or delete(D) */
- (*func) (&termw->keyboard.flags, MODE_DECBKM);
- TRACE(("DECSET DECBKM %s\n",
- BtoS(termw->keyboard.flags & MODE_DECBKM)));
- update_decbkm();
- break;
- case SET_VT200_MOUSE: /* xterm bogus sequence */
- MotionOff(screen, termw);
- set_mousemode(VT200_MOUSE);
- break;
- case SET_VT200_HIGHLIGHT_MOUSE: /* xterm sequence w/hilite tracking */
- MotionOff(screen, termw);
- set_mousemode(VT200_HIGHLIGHT_MOUSE);
- break;
- case SET_BTN_EVENT_MOUSE:
- MotionOff(screen, termw);
- set_mousemode(BTN_EVENT_MOUSE);
- break;
- case SET_ANY_EVENT_MOUSE:
- set_mousemode(ANY_EVENT_MOUSE);
- if (screen->send_mouse_pos == MOUSE_OFF) {
- MotionOff(screen, term);
- } else {
- MotionOn(screen, term);
- }
- break;
- case 1010: /* rxvt */
- screen->scrollttyoutput = (func == bitset) ? ON : OFF;
- update_scrollttyoutput();
- break;
- case 1011: /* rxvt */
- screen->scrollkey = (func == bitset) ? ON : OFF;
- update_scrollkey();
- break;
-#if OPT_NUM_LOCK
- case 1035:
- term->misc.real_NumLock = (func == bitset) ? ON : OFF;
- update_num_lock();
- break;
- case 1036:
- screen->meta_sends_esc = (func == bitset) ? ON : OFF;
- update_meta_esc();
- break;
-#endif
- case 1037:
- screen->delete_is_del = (func == bitset) ? ON : OFF;
- update_delete_del();
- break;
- case 1048:
- if (!termw->misc.titeInhibit) {
- if (func == bitset)
- CursorSave(termw);
- else
- CursorRestore(termw);
- }
- break;
- case 1051:
- set_keyboard_type(keyboardIsSun, func == bitset);
- break;
-#if OPT_HP_FUNC_KEYS
- case 1052:
- set_keyboard_type(keyboardIsHP, func == bitset);
- break;
-#endif
-#if OPT_SCO_FUNC_KEYS
- case 1053:
- set_keyboard_type(keyboardIsSCO, func == bitset);
- break;
-#endif
- case 1060:
- set_keyboard_type(keyboardIsLegacy, func == bitset);
- break;
-#if OPT_SUNPC_KBD
- case 1061:
- set_keyboard_type(keyboardIsVT220, func == bitset);
- break;
-#endif
-#if OPT_READLINE
- case SET_BUTTON1_MOVE_POINT:
- set_mouseflag(click1_moves);
- break;
- case SET_BUTTON2_MOVE_POINT:
- set_mouseflag(paste_moves);
- break;
- case SET_DBUTTON3_DELETE:
- set_mouseflag(dclick3_deletes);
- break;
- case SET_PASTE_IN_BRACKET:
- set_mouseflag(paste_brackets);
- break;
- case SET_PASTE_QUOTE:
- set_mouseflag(paste_quotes);
- break;
- case SET_PASTE_LITERAL_NL:
- set_mouseflag(paste_literal_nl);
- break;
-#endif /* OPT_READLINE */
- }
- }
-}
-
-/*
- * process xterm private modes save
- */
-static void
-savemodes(XtermWidget termw)
-{
- TScreen *screen = &termw->screen;
- int i;
-
- for (i = 0; i < nparam; i++) {
- TRACE(("savemodes %d\n", param[i]));
- switch (param[i]) {
- case 1: /* DECCKM */
- DoSM(DP_DECCKM, termw->keyboard.flags & MODE_DECCKM);
- break;
- case 3: /* DECCOLM */
- if (screen->c132)
- DoSM(DP_DECCOLM, termw->flags & IN132COLUMNS);
- break;
- case 4: /* DECSCLM (slow scroll) */
- DoSM(DP_DECSCLM, termw->flags & SMOOTHSCROLL);
- break;
- case 5: /* DECSCNM */
- DoSM(DP_DECSCNM, termw->flags & REVERSE_VIDEO);
- break;
- case 6: /* DECOM */
- DoSM(DP_DECOM, termw->flags & ORIGIN);
- break;
-
- case 7: /* DECAWM */
- DoSM(DP_DECAWM, termw->flags & WRAPAROUND);
- break;
- case 8: /* DECARM */
- /* ignore autorepeat */
- break;
- case SET_X10_MOUSE: /* mouse bogus sequence */
- DoSM(DP_X_X10MSE, screen->send_mouse_pos);
- break;
-#if OPT_TOOLBAR
- case 10: /* rxvt */
- DoSM(DP_TOOLBAR, resource.toolBar);
- break;
-#endif
-#if OPT_BLINK_CURS
- case 12: /* att610: Start/stop blinking cursor */
- if (screen->cursor_blink_res) {
- DoSM(DP_CRS_BLINK, screen->cursor_blink_esc);
- }
- break;
-#endif
- case 18: /* DECPFF: print form feed */
- DoSM(DP_PRN_FORMFEED, screen->printer_formfeed);
- break;
- case 19: /* DECPEX: print extent */
- DoSM(DP_PRN_EXTENT, screen->printer_extent);
- break;
- case 25: /* DECTCEM: Show/hide cursor (VT200) */
- DoSM(DP_CRS_VISIBLE, screen->cursor_set);
- break;
- case 40: /* 132 column mode */
- DoSM(DP_X_DECCOLM, screen->c132);
- break;
- case 41: /* curses hack */
- DoSM(DP_X_MORE, screen->curses);
- break;
- case 44: /* margin bell */
- DoSM(DP_X_MARGIN, screen->marginbell);
- break;
- case 45: /* reverse wraparound */
- DoSM(DP_X_REVWRAP, termw->flags & REVERSEWRAP);
- break;
-#ifdef ALLOWLOGGING
- case 46: /* logging */
- DoSM(DP_X_LOGGING, screen->logging);
- break;
-#endif
- case 1047: /* alternate buffer */
- /* FALLTHRU */
- case 47: /* alternate buffer */
- DoSM(DP_X_ALTSCRN, screen->alternate);
- break;
- case SET_VT200_MOUSE: /* mouse bogus sequence */
- case SET_VT200_HIGHLIGHT_MOUSE:
- case SET_BTN_EVENT_MOUSE:
- case SET_ANY_EVENT_MOUSE:
- DoSM(DP_X_MOUSE, screen->send_mouse_pos);
- break;
- case 1048:
- if (!termw->misc.titeInhibit) {
- CursorSave(termw);
- }
- break;
-#if OPT_READLINE
- case SET_BUTTON1_MOVE_POINT:
- SCREEN_FLAG_save(screen, click1_moves);
- break;
- case SET_BUTTON2_MOVE_POINT:
- SCREEN_FLAG_save(screen, paste_moves);
- break;
- case SET_DBUTTON3_DELETE:
- SCREEN_FLAG_save(screen, dclick3_deletes);
- break;
- case SET_PASTE_IN_BRACKET:
- SCREEN_FLAG_save(screen, paste_brackets);
- break;
- case SET_PASTE_QUOTE:
- SCREEN_FLAG_save(screen, paste_quotes);
- break;
- case SET_PASTE_LITERAL_NL:
- SCREEN_FLAG_save(screen, paste_literal_nl);
- break;
-#endif /* OPT_READLINE */
- }
- }
-}
-
-/*
- * process xterm private modes restore
- */
-static void
-restoremodes(XtermWidget termw)
-{
- TScreen *screen = &termw->screen;
- int i, j;
-
- for (i = 0; i < nparam; i++) {
- TRACE(("restoremodes %d\n", param[i]));
- switch (param[i]) {
- case 1: /* DECCKM */
- bitcpy(&termw->keyboard.flags,
- screen->save_modes[DP_DECCKM], MODE_DECCKM);
- update_appcursor();
- break;
- case 3: /* DECCOLM */
- if (screen->c132) {
- ClearScreen(screen);
- CursorSet(screen, 0, 0, termw->flags);
- if ((j = (screen->save_modes[DP_DECCOLM] & IN132COLUMNS)
- ? 132 : 80) != ((termw->flags & IN132COLUMNS)
- ? 132 : 80) || j != MaxCols(screen))
- RequestResize(termw, -1, j, True);
- bitcpy(&termw->flags,
- screen->save_modes[DP_DECCOLM],
- IN132COLUMNS);
- }
- break;
- case 4: /* DECSCLM (slow scroll) */
- if (screen->save_modes[DP_DECSCLM] & SMOOTHSCROLL) {
- screen->jumpscroll = 0;
- if (screen->scroll_amt)
- FlushScroll(screen);
- } else
- screen->jumpscroll = 1;
- bitcpy(&termw->flags, screen->save_modes[DP_DECSCLM], SMOOTHSCROLL);
- update_jumpscroll();
- break;
- case 5: /* DECSCNM */
- if ((screen->save_modes[DP_DECSCNM] ^ termw->flags) & REVERSE_VIDEO) {
- bitcpy(&termw->flags, screen->save_modes[DP_DECSCNM], REVERSE_VIDEO);
- ReverseVideo(termw);
- /* update_reversevideo done in RevVid */
- }
- break;
- case 6: /* DECOM */
- bitcpy(&termw->flags, screen->save_modes[DP_DECOM], ORIGIN);
- CursorSet(screen, 0, 0, termw->flags);
- break;
-
- case 7: /* DECAWM */
- bitcpy(&termw->flags, screen->save_modes[DP_DECAWM], WRAPAROUND);
- update_autowrap();
- break;
- case 8: /* DECARM */
- /* ignore autorepeat */
- break;
- case SET_X10_MOUSE: /* MIT bogus sequence */
- DoRM(DP_X_X10MSE, screen->send_mouse_pos);
- break;
-#if OPT_TOOLBAR
- case 10: /* rxvt */
- DoRM(DP_TOOLBAR, resource.toolBar);
- ShowToolbar(resource.toolBar);
- break;
-#endif
-#if OPT_BLINK_CURS
- case 12: /* att610: Start/stop blinking cursor */
- if (screen->cursor_blink_res) {
- DoRM(DP_CRS_BLINK, screen->cursor_blink_esc);
- SetCursorBlink(screen, screen->cursor_blink);
- }
- break;
-#endif
- case 18: /* DECPFF: print form feed */
- DoRM(DP_PRN_FORMFEED, screen->printer_formfeed);
- break;
- case 19: /* DECPEX: print extent */
- DoRM(DP_PRN_EXTENT, screen->printer_extent);
- break;
- case 25: /* DECTCEM: Show/hide cursor (VT200) */
- DoRM(DP_CRS_VISIBLE, screen->cursor_set);
- break;
- case 40: /* 132 column mode */
- DoRM(DP_X_DECCOLM, screen->c132);
- update_allow132();
- break;
- case 41: /* curses hack */
- DoRM(DP_X_MORE, screen->curses);
- update_cursesemul();
- break;
- case 44: /* margin bell */
- if ((DoRM(DP_X_MARGIN, screen->marginbell)) == 0)
- screen->bellarmed = -1;
- update_marginbell();
- break;
- case 45: /* reverse wraparound */
- bitcpy(&termw->flags, screen->save_modes[DP_X_REVWRAP], REVERSEWRAP);
- update_reversewrap();
- break;
-#ifdef ALLOWLOGGING
- case 46: /* logging */
-#ifdef ALLOWLOGFILEONOFF
- if (screen->save_modes[DP_X_LOGGING])
- StartLog(screen);
- else
- CloseLog(screen);
-#endif /* ALLOWLOGFILEONOFF */
- /* update_logging done by StartLog and CloseLog */
- break;
-#endif
- case 1047: /* alternate buffer */
- /* FALLTHRU */
- case 47: /* alternate buffer */
- if (!termw->misc.titeInhibit) {
- if (screen->save_modes[DP_X_ALTSCRN])
- ToAlternate(screen);
- else
- FromAlternate(screen);
- /* update_altscreen done by ToAlt and FromAlt */
- } else if (termw->misc.tiXtraScroll) {
- if (screen->save_modes[DP_X_ALTSCRN]) {
- xtermScroll(screen, screen->max_row);
- }
- }
- break;
- case SET_VT200_MOUSE: /* mouse bogus sequence */
- case SET_VT200_HIGHLIGHT_MOUSE:
- case SET_BTN_EVENT_MOUSE:
- case SET_ANY_EVENT_MOUSE:
- DoRM(DP_X_MOUSE, screen->send_mouse_pos);
- break;
- case 1048:
- if (!termw->misc.titeInhibit) {
- CursorRestore(termw);
- }
- break;
-#if OPT_READLINE
- case SET_BUTTON1_MOVE_POINT:
- SCREEN_FLAG_restore(screen, click1_moves);
- break;
- case SET_BUTTON2_MOVE_POINT:
- SCREEN_FLAG_restore(screen, paste_moves);
- break;
- case SET_DBUTTON3_DELETE:
- SCREEN_FLAG_restore(screen, dclick3_deletes);
- break;
- case SET_PASTE_IN_BRACKET:
- SCREEN_FLAG_restore(screen, paste_brackets);
- break;
- case SET_PASTE_QUOTE:
- SCREEN_FLAG_restore(screen, paste_quotes);
- break;
- case SET_PASTE_LITERAL_NL:
- SCREEN_FLAG_restore(screen, paste_literal_nl);
- break;
-#endif /* OPT_READLINE */
- }
- }
-}
-
-/*
- * Report window label (icon or title) in dtterm protocol
- * ESC ] code label ESC backslash
- */
-static void
-report_win_label(TScreen * screen,
- int code,
- XTextProperty * text,
- Status ok)
-{
- char **list;
- int length = 0;
-
- reply.a_type = ESC;
- unparseputc(ESC, screen->respond);
- unparseputc(']', screen->respond);
- unparseputc(code, screen->respond);
-
- if (ok) {
- if (XTextPropertyToStringList(text, &list, &length)) {
- int n, c;
- for (n = 0; n < length; n++) {
- char *s = list[n];
- while ((c = *s++) != '\0')
- unparseputc(c, screen->respond);
- }
- XFreeStringList(list);
- }
- if (text->value != 0)
- XFree(text->value);
- }
-
- unparseputc(ESC, screen->respond);
- unparseputc('\\', screen->respond);
-}
-
-/*
- * Window operations (from CDE dtterm description, as well as extensions).
- * See also "allowWindowOps" resource.
- */
-static void
-window_ops(XtermWidget termw)
-{
- TScreen *screen = &termw->screen;
- XWindowChanges values;
- XWindowAttributes win_attrs;
- XTextProperty text;
- unsigned value_mask;
- unsigned root_width;
- unsigned root_height;
-
- TRACE(("window_ops %d\n", param[0]));
- switch (param[0]) {
- case 1: /* Restore (de-iconify) window */
- XMapWindow(screen->display,
- VShellWindow);
- break;
-
- case 2: /* Minimize (iconify) window */
- XIconifyWindow(screen->display,
- VShellWindow,
- DefaultScreen(screen->display));
- break;
-
- case 3: /* Move the window to the given position */
- values.x = param[1];
- values.y = param[2];
- value_mask = (CWX | CWY);
- XReconfigureWMWindow(screen->display,
- VShellWindow,
- DefaultScreen(screen->display),
- value_mask,
- &values);
- break;
-
- case 4: /* Resize the window to given size in pixels */
- RequestResize(termw, param[1], param[2], False);
- break;
-
- case 5: /* Raise the window to the front of the stack */
- XRaiseWindow(screen->display, VShellWindow);
- break;
-
- case 6: /* Lower the window to the bottom of the stack */
- XLowerWindow(screen->display, VShellWindow);
- break;
-
- case 7: /* Refresh the window */
- Redraw();
- break;
-
- case 8: /* Resize the text-area, in characters */
- RequestResize(termw, param[1], param[2], True);
- break;
-
-#if OPT_MAXIMIZE
- case 9: /* Maximize or restore */
- RequestMaximize(termw, param[1]);
- break;
-#endif
-
- case 11: /* Report the window's state */
- XGetWindowAttributes(screen->display,
- VWindow(screen),
- &win_attrs);
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 1;
- reply.a_param[0] = (win_attrs.map_state == IsViewable) ? 1 : 2;
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-
- case 13: /* Report the window's position */
- XGetWindowAttributes(screen->display,
- WMFrameWindow(termw),
- &win_attrs);
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 3;
- reply.a_param[0] = 3;
- reply.a_param[1] = win_attrs.x;
- reply.a_param[2] = win_attrs.y;
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-
- case 14: /* Report the window's size in pixels */
- XGetWindowAttributes(screen->display,
- VWindow(screen),
- &win_attrs);
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 3;
- reply.a_param[0] = 4;
- /*FIXME: find if dtterm uses
- * win_attrs.height or Height
- * win_attrs.width or Width
- */
- reply.a_param[1] = Height(screen);
- reply.a_param[2] = Width(screen);
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-
- case 18: /* Report the text's size in characters */
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 3;
- reply.a_param[0] = 8;
- reply.a_param[1] = MaxRows(screen);
- reply.a_param[2] = MaxCols(screen);
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-
-#if OPT_MAXIMIZE
- case 19: /* Report the screen's size, in characters */
- if (!QueryMaximize(term, &root_height, &root_width)) {
- root_height = 0;
- root_width = 0;
- }
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 3;
- reply.a_param[0] = 9;
- reply.a_param[1] = root_height / FontHeight(screen);
- reply.a_param[2] = root_width / FontWidth(screen);
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-#endif
-
- case 20: /* Report the icon's label */
- report_win_label(screen, 'L', &text,
- XGetWMIconName(screen->display, VShellWindow, &text));
- break;
-
- case 21: /* Report the window's title */
- report_win_label(screen, 'l', &text,
- XGetWMName(screen->display, VShellWindow, &text));
- break;
-
- default: /* DECSLPP (24, 25, 36, 48, 72, 144) */
- if (param[0] >= 24)
- RequestResize(termw, param[0], -1, True);
- break;
- }
-}
-
-/*
- * set a bit in a word given a pointer to the word and a mask.
- */
-static void
-bitset(unsigned *p, unsigned mask)
-{
- *p |= mask;
-}
-
-/*
- * clear a bit in a word given a pointer to the word and a mask.
- */
-static void
-bitclr(unsigned *p, unsigned mask)
-{
- *p &= ~mask;
-}
-
-/*
- * Copy bits from one word to another, given a mask
- */
-static void
-bitcpy(unsigned *p, unsigned q, unsigned mask)
-{
- bitclr(p, mask);
- bitset(p, q & mask);
-}
-
-void
-unparseputc1(int c, int fd)
-{
- if (c >= 0x80 && c <= 0x9F) {
- if (!term->screen.control_eight_bits) {
- unparseputc(A2E(ESC), fd);
- c = A2E(c - 0x40);
- }
- }
- unparseputc(c, fd);
-}
-
-void
-unparseseq(ANSI * ap, int fd)
-{
- int c;
- int i;
- int inters;
-
- unparseputc1(c = ap->a_type, fd);
- if (c == ESC
- || c == DCS
- || c == CSI
- || c == OSC
- || c == PM
- || c == APC
- || c == SS3) {
- if (ap->a_pintro != 0)
- unparseputc(ap->a_pintro, fd);
- for (i = 0; i < ap->a_nparam; ++i) {
- if (i != 0)
- unparseputc(';', fd);
- unparseputn((unsigned int) ap->a_param[i], fd);
- }
- if ((inters = ap->a_inters) != 0) {
- for (i = 3; i >= 0; --i) {
- c = CharOf(inters >> (8 * i));
- if (c != 0)
- unparseputc(c, fd);
- }
- }
- unparseputc((char) ap->a_final, fd);
- }
-}
-
-static void
-unparseputn(unsigned int n, int fd)
-{
- unsigned int q;
-
- q = n / 10;
- if (q != 0)
- unparseputn(q, fd);
- unparseputc((char) ('0' + (n % 10)), fd);
-}
-
-void
-unparseputc(int c, int fd)
-{
- IChar buf[2];
- unsigned i = 1;
-
-#if OPT_TCAP_QUERY
- /*
- * If we're returning a termcap string, it has to be translated since
- * a DCS must not contain any characters except for the normal 7-bit
- * printable ASCII (counting tab, carriage return, etc). For now,
- * just use hexadecimal for the whole thing.
- */
- if (term->screen.tc_query >= 0) {
- char tmp[3];
- sprintf(tmp, "%02X", c & 0xFF);
- buf[0] = tmp[0];
- buf[1] = tmp[1];
- i = 2;
- } else
-#endif
- if ((buf[0] = c) == '\r' && (term->flags & LINEFEED)) {
- buf[1] = '\n';
- i++;
- }
-#ifdef VMS
- tt_write(&buf, i);
-#else /* VMS */
- writePtyData(fd, buf, i);
-#endif /* VMS */
-
- /* If send/receive mode is reset, we echo characters locally */
- if ((term->keyboard.flags & MODE_SRM) == 0) {
- (void) doparsing((unsigned) c, &myState);
- }
-}
-
-void
-unparseputs(char *s, int fd)
-{
- while (*s)
- unparseputc(*s++, fd);
-}
-
-void
-ToggleAlternate(TScreen * screen)
-{
- if (screen->alternate)
- FromAlternate(screen);
- else
- ToAlternate(screen);
-}
-
-static void
-ToAlternate(TScreen * screen)
-{
- if (screen->alternate)
- return;
- TRACE(("ToAlternate\n"));
- if (!screen->altbuf)
- screen->altbuf = Allocate(MaxRows(screen), MaxCols(screen),
- &screen->abuf_address);
- SwitchBufs(screen);
- screen->alternate = True;
- update_altscreen();
-}
-
-static void
-FromAlternate(TScreen * screen)
-{
- if (!screen->alternate)
- return;
- TRACE(("FromAlternate\n"));
- if (screen->scroll_amt)
- FlushScroll(screen);
- screen->alternate = False;
- SwitchBufs(screen);
- update_altscreen();
-}
-
-static void
-SwitchBufs(TScreen * screen)
-{
- int rows, top;
-
- if (screen->cursor_state)
- HideCursor();
-
- rows = MaxRows(screen);
- SwitchBufPtrs(screen);
-
- if ((top = -screen->topline) < rows) {
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (top == 0)
- XClearWindow(screen->display, VWindow(screen));
- else
- XClearArea(screen->display,
- VWindow(screen),
- (int) OriginX(screen),
- (int) top * FontHeight(screen) + screen->border,
- (unsigned) Width(screen),
- (unsigned) (rows - top) * FontHeight(screen),
- False);
- }
- ScrnUpdate(screen, 0, 0, rows, MaxCols(screen), False);
-}
-
-/* swap buffer line pointers between alt and regular screens */
-void
-SwitchBufPtrs(TScreen * screen)
-{
- size_t len = ScrnPointers(screen, (unsigned) MaxRows(screen));
-
- memcpy((char *) screen->save_ptr, (char *) screen->visbuf, len);
- memcpy((char *) screen->visbuf, (char *) screen->altbuf, len);
- memcpy((char *) screen->altbuf, (char *) screen->save_ptr, len);
-}
-
-void
-VTRun(void)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("VTRun ...\n"));
-
- if (!screen->Vshow) {
- set_vt_visibility(True);
- }
- update_vttekmode();
- update_vtshow();
- update_tekshow();
- set_vthide_sensitivity();
-
- if (screen->allbuf == NULL)
- VTallocbuf();
-
- screen->cursor_state = OFF;
- screen->cursor_set = ON;
-#if OPT_BLINK_CURS
- if (DoStartBlinking(screen))
- StartBlinking(screen);
-#endif
-
-#if OPT_TEK4014
- if (Tpushb > Tpushback) {
- fillPtyData(screen, VTbuffer, (char *) Tpushback, Tpushb - Tpushback);
- Tpushb = Tpushback;
- }
-#endif
- if (!setjmp(VTend))
- VTparse();
- StopBlinking(screen);
- HideCursor();
- screen->cursor_set = OFF;
-}
-
-/*ARGSUSED*/
-static void
-VTExpose(Widget w GCC_UNUSED,
- XEvent * event,
- Region region GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
-#ifdef DEBUG
- if (debug)
- fputs("Expose\n", stderr);
-#endif /* DEBUG */
- if (event->type == Expose)
- HandleExposure(screen, event);
-}
-
-static void
-VTGraphicsOrNoExpose(XEvent * event)
-{
- TScreen *screen = &term->screen;
- if (screen->incopy <= 0) {
- screen->incopy = 1;
- if (screen->scrolls > 0)
- screen->scrolls--;
- }
- if (event->type == GraphicsExpose)
- if (HandleExposure(screen, event))
- screen->cursor_state = OFF;
- if ((event->type == NoExpose)
- || ((XGraphicsExposeEvent *) event)->count == 0) {
- if (screen->incopy <= 0 && screen->scrolls > 0)
- screen->scrolls--;
- if (screen->scrolls)
- screen->incopy = -1;
- else
- screen->incopy = 0;
- }
-}
-
-/*ARGSUSED*/
-static void
-VTNonMaskableEvent(Widget w GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XEvent * event,
- Boolean * cont GCC_UNUSED)
-{
- switch (event->type) {
- case GraphicsExpose:
- case NoExpose:
- VTGraphicsOrNoExpose(event);
- break;
- }
-}
-
-static void
-VTResize(Widget w)
-{
- if (XtIsRealized(w)) {
- ScreenResize(&term->screen, term->core.width, term->core.height, &term->flags);
- }
-}
-
-#define okDimension(src,dst) ((src <= 32767) && ((dst = src) == src))
-
-static void
-RequestResize(XtermWidget termw, int rows, int cols, int text)
-{
-#ifndef nothack
- XSizeHints sizehints;
- long supp;
-#endif
- TScreen *screen = &termw->screen;
- unsigned long value;
- Dimension replyWidth, replyHeight;
- Dimension askedWidth, askedHeight;
- XtGeometryResult status;
- XWindowAttributes attrs;
-
- TRACE(("RequestResize(rows=%d, cols=%d, text=%d)\n", rows, cols, text));
-
- if ((askedWidth = cols) < cols
- || (askedHeight = rows) < rows)
- return;
-
- if (askedHeight == 0
- || askedWidth == 0
- || term->misc.limit_resize > 0) {
- XGetWindowAttributes(XtDisplay(termw),
- RootWindowOfScreen(XtScreen(termw)), &attrs);
- }
-
- if (text) {
- if ((value = rows) != 0) {
- if (rows < 0)
- value = MaxRows(screen);
- value *= FontHeight(screen);
- value += (2 * screen->border);
- if (!okDimension(value, askedHeight))
- return;
- }
-
- if ((value = cols) != 0) {
- if (cols < 0)
- value = MaxCols(screen);
- value *= FontWidth(screen);
- value += (2 * screen->border) + ScrollbarWidth(screen);
- if (!okDimension(value, askedWidth))
- return;
- }
-
- } else {
- if (rows < 0)
- askedHeight = FullHeight(screen);
- if (cols < 0)
- askedWidth = FullWidth(screen);
- }
-
- if (rows == 0)
- askedHeight = attrs.height;
- if (cols == 0)
- askedWidth = attrs.width;
-
- if (term->misc.limit_resize > 0) {
- Dimension high = term->misc.limit_resize * attrs.height;
- Dimension wide = term->misc.limit_resize * attrs.width;
- if (high < attrs.height)
- high = attrs.height;
- if (askedHeight > high)
- askedHeight = high;
- if (wide < attrs.width)
- wide = attrs.width;
- if (askedWidth > wide)
- askedWidth = wide;
- }
-#ifndef nothack
- if (!XGetWMNormalHints(screen->display, VShellWindow,
- &sizehints, &supp))
- bzero(&sizehints, sizeof(sizehints));
-#endif
-
- status = XtMakeResizeRequest((Widget) termw,
- askedWidth, askedHeight,
- &replyWidth, &replyHeight);
- TRACE(("charproc.c XtMakeResizeRequest %dx%d -> %dx%d (status %d)\n",
- askedHeight, askedWidth,
- replyHeight, replyWidth,
- status));
-
- if (status == XtGeometryYes ||
- status == XtGeometryDone) {
- ScreenResize(&termw->screen,
- replyWidth,
- replyHeight,
- &termw->flags);
- }
-#ifndef nothack
- /*
- * XtMakeResizeRequest() has the undesirable side-effect of clearing
- * the window manager's hints, even on a failed request. This would
- * presumably be fixed if the shell did its own work.
- */
- if (sizehints.flags
- && replyHeight
- && replyWidth) {
- sizehints.height = replyHeight;
- sizehints.width = replyWidth;
-
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_HINTS(&sizehints);
- XSetWMNormalHints(screen->display, VShellWindow, &sizehints);
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_WM_HINTS(termw);
- }
-#endif
-
- XSync(screen->display, False); /* synchronize */
- if (XtAppPending(app_con))
- xevents();
-}
-
-static String xterm_trans =
-"<ClientMessage>WM_PROTOCOLS: DeleteWindow()\n\
- <MappingNotify>: KeyboardMapping()\n";
-
-int
-VTInit(void)
-{
- TScreen *screen = &term->screen;
- Widget vtparent = SHELL_OF(term);
-
- XtRealizeWidget(vtparent);
- XtOverrideTranslations(vtparent, XtParseTranslationTable(xterm_trans));
- (void) XSetWMProtocols(XtDisplay(vtparent), XtWindow(vtparent),
- &wm_delete_window, 1);
- TRACE_TRANS("shell", vtparent);
- TRACE_TRANS("vt100", (Widget) (term));
-
- if (screen->allbuf == NULL)
- VTallocbuf();
- return (1);
-}
-
-static void
-VTallocbuf(void)
-{
- TScreen *screen = &term->screen;
- int nrows = MaxRows(screen);
-
- /* allocate screen buffer now, if necessary. */
- if (screen->scrollWidget)
- nrows += screen->savelines;
- screen->allbuf = Allocate(nrows, MaxCols(screen),
- &screen->sbuf_address);
- if (screen->scrollWidget)
- screen->visbuf = &screen->allbuf[MAX_PTRS * screen->savelines];
- else
- screen->visbuf = screen->allbuf;
- return;
-}
-
-static void
-VTClassInit(void)
-{
- XtAddConverter(XtRString, XtRGravity, XmuCvtStringToGravity,
- (XtConvertArgList) NULL, (Cardinal) 0);
-}
-
-/*
- * The whole wnew->screen struct is zeroed in VTInitialize. Use these macros
- * where applicable for copying the pieces from the request widget into the
- * new widget. We do not have to use them for wnew->misc, but the associated
- * traces are very useful for debugging.
- */
-#if OPT_TRACE
-#define init_Bres(name) \
- TRACE(("init " #name " = %s\n", \
- BtoS(wnew->name = request->name)))
-#define init_Dres(name) \
- TRACE(("init " #name " = %f\n", \
- wnew->name = request->name))
-#define init_Ires(name) \
- TRACE(("init " #name " = %d\n", \
- wnew->name = request->name))
-#define init_Sres(name) \
- TRACE(("init " #name " = \"%s\"\n", \
- (wnew->name = x_strtrim(request->name)) != NULL \
- ? wnew->name : "<null>"))
-#define init_Tres(offset) \
- TRACE(("init screen.Tcolors[" #offset "] = %#lx\n", \
- fill_Tres(wnew, request, offset)))
-#else
-#define init_Bres(name) wnew->name = request->name
-#define init_Dres(name) wnew->name = request->name
-#define init_Ires(name) wnew->name = request->name
-#define init_Sres(name) wnew->name = x_strtrim(request->name)
-#define init_Tres(offset) fill_Tres(wnew, request, offset)
-#endif
-
-#if OPT_COLOR_RES
-/*
- * Override the use of XtDefaultForeground/XtDefaultBackground to make some
- * colors, such as cursor color, use the actual foreground/background value
- * if there is no explicit resource value used.
- */
-static Pixel
-fill_Tres(XtermWidget target, XtermWidget source, int offset)
-{
- char *name;
- ScrnColors temp;
-
- target->screen.Tcolors[offset] = source->screen.Tcolors[offset];
- target->screen.Tcolors[offset].mode = False;
-
- if ((name = x_strtrim(target->screen.Tcolors[offset].resource)) != 0)
- target->screen.Tcolors[offset].resource = name;
-
- if (name == 0) {
- target->screen.Tcolors[offset].value = target->dft_foreground;
- } else if (!x_strcasecmp(name, XtDefaultForeground)) {
- target->screen.Tcolors[offset].value =
- ((offset == TEXT_FG || offset == TEXT_BG)
- ? target->dft_foreground
- : target->screen.Tcolors[TEXT_FG].value);
- } else if (!x_strcasecmp(name, XtDefaultBackground)) {
- target->screen.Tcolors[offset].value =
- ((offset == TEXT_FG || offset == TEXT_BG)
- ? target->dft_background
- : target->screen.Tcolors[TEXT_BG].value);
- } else {
- if (AllocateTermColor(target, &temp, offset, name)) {
- target->screen.Tcolors[offset].value = temp.colors[offset];
- }
- }
- return target->screen.Tcolors[offset].value;
-}
-#else
-#define fill_Tres(target, source, offset) \
- target->screen.Tcolors[offset] = source->screen.Tcolors[offset]
-#endif
-
-#if OPT_WIDE_CHARS
-static void
-VTInitialize_locale(XtermWidget request)
-{
- Bool is_utf8 = xtermEnvUTF8();
-
- TRACE(("VTInitialize_locale\n"));
- TRACE(("... request screen.utf8_mode = %d\n", request->screen.utf8_mode));
-
- if (request->screen.utf8_mode < 0)
- request->screen.utf8_mode = uFalse;
-
- if (request->screen.utf8_mode > 3)
- request->screen.utf8_mode = uDefault;
-
- request->screen.latin9_mode = 0;
- request->screen.unicode_font = 0;
-#if OPT_LUIT_PROG
- request->misc.callfilter = 0;
- request->misc.use_encoding = 0;
-
- TRACE(("... setup for luit:\n"));
- TRACE(("... request misc.locale_str = \"%s\"\n", request->misc.locale_str));
-
- if (request->screen.utf8_mode == uFalse) {
- TRACE(("... command-line +u8 overrides\n"));
- } else
-#if OPT_MINI_LUIT
- if (x_strcasecmp(request->misc.locale_str, "CHECKFONT") == 0) {
- int fl = (request->misc.default_font.f_n
- ? strlen(request->misc.default_font.f_n)
- : 0);
- if (fl > 11
- && x_strcasecmp(request->misc.default_font.f_n + fl - 11,
- "-ISO10646-1") == 0) {
- request->screen.unicode_font = 1;
- /* unicode font, use True */
-#ifdef HAVE_LANGINFO_CODESET
- if (!strcmp(xtermEnvEncoding(), "ANSI_X3.4-1968")
- || !strcmp(xtermEnvEncoding(), "ISO-8859-1")) {
- if (request->screen.utf8_mode == uDefault)
- request->screen.utf8_mode = uFalse;
- } else if (!strcmp(xtermEnvEncoding(), "ISO-8859-15")) {
- if (request->screen.utf8_mode == uDefault)
- request->screen.utf8_mode = uFalse;
- request->screen.latin9_mode = 1;
- } else {
- request->misc.callfilter = is_utf8 ? 0 : 1;
- request->screen.utf8_mode = uAlways;
- }
-#else
- request->misc.callfilter = is_utf8 ? 0 : 1;
- request->screen.utf8_mode = uAlways;
-#endif
- } else {
- /* other encoding, use False */
- if (request->screen.utf8_mode == uDefault) {
- request->screen.utf8_mode = is_utf8 ? uAlways : uFalse;
- }
- }
- } else
-#endif /* OPT_MINI_LUIT */
- if (x_strcasecmp(request->misc.locale_str, "TRUE") == 0 ||
- x_strcasecmp(request->misc.locale_str, "ON") == 0 ||
- x_strcasecmp(request->misc.locale_str, "YES") == 0 ||
- x_strcasecmp(request->misc.locale_str, "AUTO") == 0 ||
- strcmp(request->misc.locale_str, "1") == 0) {
- /* when true ... fully obeying LC_CTYPE locale */
- request->misc.callfilter = is_utf8 ? 0 : 1;
- request->screen.utf8_mode = uAlways;
- } else if (x_strcasecmp(request->misc.locale_str, "FALSE") == 0 ||
- x_strcasecmp(request->misc.locale_str, "OFF") == 0 ||
- x_strcasecmp(request->misc.locale_str, "NO") == 0 ||
- strcmp(request->misc.locale_str, "0") == 0) {
- /* when false ... original value of utf8_mode is effective */
- if (request->screen.utf8_mode == uDefault) {
- request->screen.utf8_mode = is_utf8 ? uAlways : uFalse;
- }
- } else if (x_strcasecmp(request->misc.locale_str, "MEDIUM") == 0 ||
- x_strcasecmp(request->misc.locale_str, "SEMIAUTO") == 0) {
- /* when medium ... obeying locale only for UTF-8 and Asian */
- if (is_utf8) {
- request->screen.utf8_mode = uAlways;
- } else if (
-#ifdef MB_CUR_MAX
- MB_CUR_MAX > 1 ||
-#else
- !strncmp(xtermEnvLocale(), "ja", 2) ||
- !strncmp(xtermEnvLocale(), "ko", 2) ||
- !strncmp(xtermEnvLocale(), "zh", 2) ||
-#endif
- !strncmp(xtermEnvLocale(), "th", 2) ||
- !strncmp(xtermEnvLocale(), "vi", 2)) {
- request->misc.callfilter = 1;
- request->screen.utf8_mode = uAlways;
- } else {
- request->screen.utf8_mode = uFalse;
- }
- } else if (x_strcasecmp(request->misc.locale_str, "UTF-8") == 0 ||
- x_strcasecmp(request->misc.locale_str, "UTF8") == 0) {
- /* when UTF-8 ... UTF-8 mode */
- request->screen.utf8_mode = uAlways;
- } else {
- /* other words are regarded as encoding name passed to luit */
- request->misc.callfilter = 1;
- request->screen.utf8_mode = uAlways;
- request->misc.use_encoding = 1;
- }
- TRACE(("... updated misc.callfilter = %s\n", BtoS(request->misc.callfilter)));
- TRACE(("... updated misc.use_encoding = %s\n", BtoS(request->misc.use_encoding)));
-#else
- if (request->screen.utf8_mode == uDefault) {
- request->screen.utf8_mode = is_utf8 ? uAlways : uFalse;
- }
-#endif /* OPT_LUIT_PROG */
-
- request->screen.utf8_inparse = (request->screen.utf8_mode != uFalse);
-
- TRACE(("... updated screen.utf8_mode = %d\n", request->screen.utf8_mode));
- TRACE(("...VTInitialize_locale done\n"));
-}
-#endif
-
-/* ARGSUSED */
-static void
-VTInitialize(Widget wrequest,
- Widget new_arg,
- ArgList args GCC_UNUSED,
- Cardinal *num_args GCC_UNUSED)
-{
- XtermWidget request = (XtermWidget) wrequest;
- XtermWidget wnew = (XtermWidget) new_arg;
- Widget my_parent = SHELL_OF(wnew);
- int i;
- char *s;
-
-#if OPT_ISO_COLORS
- Bool color_ok;
-#endif
-
-#if OPT_COLOR_RES2 && (MAXCOLORS > MIN_ANSI_COLORS)
- static XtResource fake_resources[] =
- {
-#if OPT_256_COLORS
-# include <256colres.h>
-#elif OPT_88_COLORS
-# include <88colres.h>
-#endif
- };
-#endif /* OPT_COLOR_RES2 */
-
- TRACE(("VTInitialize\n"));
-
- /* Zero out the entire "screen" component of "wnew" widget, then do
- * field-by-field assignment of "screen" fields that are named in the
- * resource list.
- */
- bzero((char *) &wnew->screen, sizeof(wnew->screen));
-
- /* dummy values so that we don't try to Realize the parent shell with height
- * or width of 0, which is illegal in X. The real size is computed in the
- * xtermWidget's Realize proc, but the shell's Realize proc is called first,
- * and must see a valid size.
- */
- wnew->core.height = wnew->core.width = 1;
-
- /*
- * The definition of -rv now is that it changes the definition of
- * XtDefaultForeground and XtDefaultBackground. So, we no longer
- * need to do anything special.
- */
- wnew->screen.display = wnew->core.screen->display;
-
- /*
- * We use the default foreground/background colors to compare/check if a
- * color-resource has been set.
- */
-#define MyBlackPixel(dpy) BlackPixel(dpy,DefaultScreen(dpy))
-#define MyWhitePixel(dpy) WhitePixel(dpy,DefaultScreen(dpy))
-
- if (request->misc.re_verse) {
- wnew->dft_foreground = MyWhitePixel(wnew->screen.display);
- wnew->dft_background = MyBlackPixel(wnew->screen.display);
- } else {
- wnew->dft_foreground = MyBlackPixel(wnew->screen.display);
- wnew->dft_background = MyWhitePixel(wnew->screen.display);
- }
- init_Tres(TEXT_FG);
- init_Tres(TEXT_BG);
-
- TRACE(("Color resource initialization:\n"));
- TRACE((" Default foreground %#lx\n", wnew->dft_foreground));
- TRACE((" Default background %#lx\n", wnew->dft_background));
- TRACE((" Screen foreground %#lx\n", T_COLOR(&(wnew->screen), TEXT_FG)));
- TRACE((" Screen background %#lx\n", T_COLOR(&(wnew->screen), TEXT_BG)));
-
- wnew->screen.mouse_button = -1;
- wnew->screen.mouse_row = -1;
- wnew->screen.mouse_col = -1;
-
-#if OPT_BOX_CHARS
- init_Bres(screen.force_box_chars);
- init_Bres(screen.force_all_chars);
-#endif
- init_Bres(screen.free_bold_box);
-
- init_Bres(screen.c132);
- init_Bres(screen.curses);
- init_Bres(screen.hp_ll_bc);
-#if OPT_XMC_GLITCH
- init_Ires(screen.xmc_glitch);
- init_Ires(screen.xmc_attributes);
- init_Bres(screen.xmc_inline);
- init_Bres(screen.move_sgr_ok);
-#endif
-#if OPT_BLINK_CURS
- init_Bres(screen.cursor_blink);
- init_Ires(screen.blink_on);
- init_Ires(screen.blink_off);
- wnew->screen.cursor_blink_res = wnew->screen.cursor_blink;
-#endif
-#if OPT_BLINK_TEXT
- init_Ires(screen.blink_as_bold);
-#endif
- init_Ires(screen.border);
- init_Bres(screen.jumpscroll);
- init_Bres(screen.old_fkeys);
- init_Bres(screen.delete_is_del);
- wnew->keyboard.type = wnew->screen.old_fkeys
- ? keyboardIsLegacy
- : keyboardIsDefault;
-#ifdef ALLOWLOGGING
- init_Sres(screen.logfile);
-#endif
- init_Bres(screen.bellOnReset);
- init_Bres(screen.marginbell);
- init_Bres(screen.multiscroll);
- init_Ires(screen.nmarginbell);
- init_Ires(screen.savelines);
- init_Ires(screen.scrollBarBorder);
- init_Ires(screen.scrolllines);
- init_Bres(screen.scrollttyoutput);
- init_Bres(screen.scrollkey);
-
- init_Sres(screen.term_id);
- for (s = request->screen.term_id; *s; s++) {
- if (!isalpha(CharOf(*s)))
- break;
- }
- wnew->screen.terminal_id = atoi(s);
- if (wnew->screen.terminal_id < MIN_DECID)
- wnew->screen.terminal_id = MIN_DECID;
- if (wnew->screen.terminal_id > MAX_DECID)
- wnew->screen.terminal_id = MAX_DECID;
- TRACE(("term_id '%s' -> terminal_id %d\n",
- wnew->screen.term_id,
- wnew->screen.terminal_id));
-
- wnew->screen.vtXX_level = (wnew->screen.terminal_id / 100);
- init_Bres(screen.visualbell);
- init_Ires(screen.visualBellDelay);
- init_Bres(screen.poponbell);
- init_Ires(misc.limit_resize);
-#if OPT_NUM_LOCK
- init_Bres(misc.real_NumLock);
- init_Bres(misc.alwaysUseMods);
- wnew->misc.num_lock = 0;
- wnew->misc.alt_left = 0;
- wnew->misc.alt_right = 0;
- wnew->misc.meta_trans = False;
- wnew->misc.meta_left = 0;
- wnew->misc.meta_right = 0;
-#endif
-#if OPT_SHIFT_FONTS
- init_Bres(misc.shift_fonts);
-#endif
-#if OPT_SUNPC_KBD
- init_Ires(misc.ctrl_fkeys);
-#endif
-#if OPT_TEK4014
- init_Bres(misc.tekInhibit);
- init_Bres(misc.tekSmall);
- init_Bres(screen.TekEmu);
-#endif
-#if OPT_TCAP_QUERY
- wnew->screen.tc_query = -1;
-#endif
- wnew->misc.re_verse0 = request->misc.re_verse;
- init_Bres(misc.re_verse);
- init_Ires(screen.multiClickTime);
- init_Ires(screen.bellSuppressTime);
- init_Sres(screen.charClass);
- init_Bres(screen.cutNewline);
- init_Bres(screen.cutToBeginningOfLine);
- init_Bres(screen.highlight_selection);
- init_Bres(screen.trim_selection);
- init_Bres(screen.i18nSelections);
- init_Bres(screen.brokenSelections);
- init_Bres(screen.always_highlight);
- wnew->screen.pointer_cursor = request->screen.pointer_cursor;
-
- init_Sres(screen.answer_back);
-
- init_Sres(screen.printer_command);
- init_Bres(screen.printer_autoclose);
- init_Bres(screen.printer_extent);
- init_Bres(screen.printer_formfeed);
- init_Ires(screen.printer_controlmode);
-#if OPT_PRINT_COLORS
- init_Ires(screen.print_attributes);
-#endif
-
- init_Sres(screen.keyboard_dialect);
-
- init_Bres(screen.input_eight_bits);
- init_Bres(screen.output_eight_bits);
- init_Bres(screen.control_eight_bits);
- init_Bres(screen.backarrow_key);
- init_Bres(screen.meta_sends_esc);
-
- init_Bres(screen.allowSendEvent0);
- init_Bres(screen.allowWindowOp0);
-
- /* make a copy so that editres cannot change the resource after startup */
- wnew->screen.allowSendEvents = wnew->screen.allowSendEvent0;
- wnew->screen.allowWindowOps = wnew->screen.allowWindowOp0;
-
-#ifndef NO_ACTIVE_ICON
- wnew->screen.fnt_icon = request->screen.fnt_icon;
- init_Bres(misc.active_icon);
- init_Ires(misc.icon_border_width);
- wnew->misc.icon_border_pixel = request->misc.icon_border_pixel;
-#endif /* NO_ACTIVE_ICON */
- init_Bres(misc.titeInhibit);
- init_Bres(misc.tiXtraScroll);
- init_Bres(misc.dynamicColors);
- for (i = fontMenu_font1; i <= fontMenu_lastBuiltin; i++) {
- init_Sres(screen.MenuFontName(i));
- }
- /* set default in realize proc */
- wnew->screen.MenuFontName(fontMenu_fontdefault) = NULL;
- wnew->screen.MenuFontName(fontMenu_fontescape) = NULL;
- wnew->screen.MenuFontName(fontMenu_fontsel) = NULL;
- wnew->screen.menu_font_number = fontMenu_fontdefault;
-
-#if OPT_BROKEN_OSC
- init_Bres(screen.brokenLinuxOSC);
-#endif
-
-#if OPT_BROKEN_ST
- init_Bres(screen.brokenStringTerm);
-#endif
-
-#if OPT_C1_PRINT
- init_Bres(screen.c1_printable);
-#endif
-
-#if OPT_DEC_CHRSET
- init_Bres(screen.font_doublesize);
- init_Ires(screen.cache_doublesize);
- if (wnew->screen.cache_doublesize > NUM_CHRSET)
- wnew->screen.cache_doublesize = NUM_CHRSET;
- if (wnew->screen.cache_doublesize == 0)
- wnew->screen.font_doublesize = False;
- TRACE(("Doublesize%s enabled, up to %d fonts\n",
- wnew->screen.font_doublesize ? "" : " not",
- wnew->screen.cache_doublesize));
-#endif
-
-#if OPT_ISO_COLORS || OPT_DEC_CHRSET || OPT_WIDE_CHARS
- wnew->num_ptrs = (OFF_ATTRS + 1); /* OFF_FLAGS, OFF_CHARS, OFF_ATTRS */
-#endif
-#if OPT_ISO_COLORS
- init_Ires(screen.veryBoldColors);
- init_Bres(screen.boldColors);
- init_Bres(screen.colorAttrMode);
- init_Bres(screen.colorBDMode);
- init_Bres(screen.colorBLMode);
- init_Bres(screen.colorMode);
- init_Bres(screen.colorULMode);
- init_Bres(screen.italicULMode);
- init_Bres(screen.colorRVMode);
-
- for (i = 0, color_ok = False; i < MAXCOLORS; i++) {
-
-#if OPT_COLOR_RES2 && (MAXCOLORS > MIN_ANSI_COLORS)
- /*
- * Xt has a hardcoded limit on the maximum number of resources that can
- * be used in a widget. If we configure both luit (which implies
- * wide-characters) and 256-colors, it goes over that limit. Most
- * people would not need a resource-file with 256-colors; the default
- * values in our table are sufficient. In that case, fake the resource
- * setting by copying the default value from the table. The #define's
- * can be overridden to make these true resources.
- */
- if (i >= MIN_ANSI_COLORS && i < NUM_ANSI_COLORS) {
- wnew->screen.Acolors[i].resource
- = ((char *) fake_resources[i - MIN_ANSI_COLORS].default_addr);
- if (wnew->screen.Acolors[i].resource == 0)
- wnew->screen.Acolors[i].resource = XtDefaultForeground;
- } else
-#endif /* OPT_COLOR_RES2 */
- wnew->screen.Acolors[i] = request->screen.Acolors[i];
-
-#if OPT_COLOR_RES
- TRACE(("Acolors[%d] = %s\n", i, wnew->screen.Acolors[i].resource));
- wnew->screen.Acolors[i].mode = False;
- if (!x_strcasecmp(wnew->screen.Acolors[i].resource, XtDefaultForeground)) {
- wnew->screen.Acolors[i].value = T_COLOR(&(wnew->screen), TEXT_FG);
- wnew->screen.Acolors[i].mode = True;
- } else if (!x_strcasecmp(wnew->screen.Acolors[i].resource, XtDefaultBackground)) {
- wnew->screen.Acolors[i].value = T_COLOR(&(wnew->screen), TEXT_BG);
- wnew->screen.Acolors[i].mode = True;
- } else {
- color_ok = True;
- }
-#else
- TRACE(("Acolors[%d] = %#lx\n", i, request->screen.Acolors[i]));
- if (wnew->screen.Acolors[i] != wnew->dft_foreground &&
- wnew->screen.Acolors[i] != T_COLOR(&(wnew->screen), TEXT_FG) &&
- wnew->screen.Acolors[i] != T_COLOR(&(wnew->screen), TEXT_BG))
- color_ok = True;
-#endif
- }
-
- /*
- * Check if we're trying to use color in a monochrome screen. Disable
- * color in that case, since that would make ANSI colors unusable. A 4-bit
- * or 8-bit display is usable, so we do not have to check for anything more
- * specific.
- */
- if (color_ok) {
- Display *display = wnew->screen.display;
- XVisualInfo myTemplate, *visInfoPtr;
- int numFound;
-
- myTemplate.visualid = XVisualIDFromVisual(DefaultVisual(display,
- XDefaultScreen(display)));
- visInfoPtr = XGetVisualInfo(display, (long) VisualIDMask,
- &myTemplate, &numFound);
- if (visInfoPtr == 0
- || numFound == 0
- || visInfoPtr->depth <= 1) {
- TRACE(("disabling color since screen is monochrome\n"));
- color_ok = False;
- } else {
- XFree(visInfoPtr);
- }
- }
-
- /* If none of the colors are anything other than the foreground or
- * background, we'll assume this isn't color, no matter what the colorMode
- * resource says. (There doesn't seem to be any good way to determine if
- * the resource lookup failed versus the user having misconfigured this).
- */
- if (!color_ok) {
- wnew->screen.colorMode = False;
- TRACE(("All colors are foreground or background: disable colorMode\n"));
- }
-#if OPT_EXT_COLORS
- wnew->num_ptrs = (OFF_BGRND + 1);
-#else
- wnew->num_ptrs = (OFF_COLOR + 1);
-#endif
- wnew->sgr_foreground = -1;
- wnew->sgr_background = -1;
- wnew->sgr_extended = 0;
-#endif /* OPT_ISO_COLORS */
-
- init_Tres(MOUSE_FG);
- init_Tres(MOUSE_BG);
- init_Tres(TEXT_CURSOR);
-#if OPT_HIGHLIGHT_COLOR
- init_Tres(HIGHLIGHT_BG);
-#endif
-
-#if OPT_TEK4014
- /*
- * The Tek4014 window has no separate resources for foreground, background
- * and cursor color. Since xterm always creates the vt100 widget first, we
- * can set the Tektronix colors here. That lets us use escape sequences to
- * set its dynamic colors and get consistent behavior whether or not the
- * window is displayed.
- */
- T_COLOR(&(wnew->screen), TEK_BG) = T_COLOR(&(wnew->screen), TEXT_BG);
- T_COLOR(&(wnew->screen), TEK_FG) = T_COLOR(&(wnew->screen), TEXT_FG);
- T_COLOR(&(wnew->screen), TEK_CURSOR) = T_COLOR(&(wnew->screen), TEXT_CURSOR);
-#endif
-
-#if OPT_DEC_CHRSET
- wnew->num_ptrs = (OFF_CSETS + 1);
-#endif
-
-#if OPT_WIDE_CHARS
- VTInitialize_locale(request);
-
-#if OPT_LUIT_PROG
- init_Bres(misc.callfilter);
- init_Bres(misc.use_encoding);
- init_Sres(misc.locale_str);
- init_Sres(misc.localefilter);
-#endif
-
-#if OPT_RENDERFONT
- init_Dres(misc.face_size);
- init_Sres(misc.face_name);
- init_Sres(misc.face_wide_name);
- init_Bres(misc.render_font);
- /* minor tweak to make debug traces consistent: */
- if (wnew->misc.render_font) {
- if (wnew->misc.face_name == 0) {
- wnew->misc.render_font = False;
- TRACE(("reset render_font since there is no face_name\n"));
- }
- }
-#endif
-
- init_Bres(screen.vt100_graphics);
- init_Ires(screen.utf8_mode);
- init_Bres(screen.wide_chars);
- init_Bres(misc.mk_width);
- init_Bres(misc.cjk_width);
- if (request->screen.utf8_mode) {
- TRACE(("setting wide_chars on\n"));
- wnew->screen.wide_chars = True;
- } else {
- TRACE(("setting utf8_mode to 0\n"));
- wnew->screen.utf8_mode = uFalse;
- }
- TRACE(("initialized UTF-8 mode to %d\n", wnew->screen.utf8_mode));
-
-#if OPT_MINI_LUIT
- if (request->screen.latin9_mode) {
- wnew->screen.latin9_mode = True;
- }
- if (request->screen.unicode_font) {
- wnew->screen.unicode_font = True;
- }
- TRACE(("initialized Latin9 mode to %d\n", wnew->screen.latin9_mode));
- TRACE(("initialized unicode_font to %d\n", wnew->screen.unicode_font));
-#endif
-
- if (wnew->screen.wide_chars != False)
- wnew->num_ptrs = (OFF_COM2H + 1);
-
- decode_wcwidth((wnew->misc.cjk_width ? 2 : 0)
- + (wnew->misc.mk_width ? 1 : 0)
- + 1);
-#endif /* OPT_WIDE_CHARS */
-
- init_Bres(screen.bold_mode);
- init_Bres(screen.underline);
-
- wnew->cur_foreground = 0;
- wnew->cur_background = 0;
-
- wnew->keyboard.flags = MODE_SRM;
- if (wnew->screen.backarrow_key)
- wnew->keyboard.flags |= MODE_DECBKM;
- TRACE(("initialized DECBKM %s\n",
- BtoS(wnew->keyboard.flags & MODE_DECBKM)));
-
- /* look for focus related events on the shell, because we need
- * to care about the shell's border being part of our focus.
- */
- XtAddEventHandler(my_parent, EnterWindowMask, False,
- HandleEnterWindow, (Opaque) NULL);
- XtAddEventHandler(my_parent, LeaveWindowMask, False,
- HandleLeaveWindow, (Opaque) NULL);
- XtAddEventHandler(my_parent, FocusChangeMask, False,
- HandleFocusChange, (Opaque) NULL);
- XtAddEventHandler((Widget) wnew, 0L, True,
- VTNonMaskableEvent, (Opaque) NULL);
- XtAddEventHandler((Widget) wnew, PropertyChangeMask, False,
- HandleBellPropertyChange, (Opaque) NULL);
-
-#if HANDLE_STRUCT_NOTIFY
-#if OPT_TOOLBAR
- wnew->VT100_TB_INFO(menu_bar) = request->VT100_TB_INFO(menu_bar);
- init_Ires(VT100_TB_INFO(menu_height));
-#else
- /* Flag icon name with "***" on window output when iconified.
- * Put in a handler that will tell us when we get Map/Unmap events.
- */
- if (zIconBeep)
-#endif
- XtAddEventHandler(my_parent, StructureNotifyMask, False,
- HandleStructNotify, (Opaque) 0);
-#endif /* HANDLE_STRUCT_NOTIFY */
-
- wnew->screen.bellInProgress = False;
-
- set_character_class(wnew->screen.charClass);
-
- /* create it, but don't realize it */
- ScrollBarOn(wnew, True, False);
-
- /* make sure that the resize gravity acceptable */
- if (wnew->misc.resizeGravity != NorthWestGravity &&
- wnew->misc.resizeGravity != SouthWestGravity) {
- Cardinal nparams = 1;
-
- XtAppWarningMsg(app_con, "rangeError", "resizeGravity", "XTermError",
- "unsupported resizeGravity resource value (%d)",
- (String *) & (wnew->misc.resizeGravity), &nparams);
- wnew->misc.resizeGravity = SouthWestGravity;
- }
-#ifndef NO_ACTIVE_ICON
- wnew->screen.whichVwin = &wnew->screen.fullVwin;
-#if OPT_TEK4014
- wnew->screen.whichTwin = &wnew->screen.fullTwin;
-#endif
-#endif /* NO_ACTIVE_ICON */
-
- if (wnew->screen.savelines < 0)
- wnew->screen.savelines = 0;
-
- init_Bres(screen.awaitInput);
-
- wnew->flags = 0;
- if (!wnew->screen.jumpscroll)
- wnew->flags |= SMOOTHSCROLL;
- if (wnew->misc.reverseWrap)
- wnew->flags |= REVERSEWRAP;
- if (wnew->misc.autoWrap)
- wnew->flags |= WRAPAROUND;
- if (wnew->misc.re_verse != wnew->misc.re_verse0)
- wnew->flags |= REVERSE_VIDEO;
- if (wnew->screen.c132)
- wnew->flags |= IN132COLUMNS;
-
- wnew->initflags = wnew->flags;
-
- init_Ires(keyboard.modify_cursor_keys);
-
- init_Ires(misc.appcursorDefault);
- if (wnew->misc.appcursorDefault)
- wnew->keyboard.flags |= MODE_DECCKM;
-
- init_Ires(misc.appkeypadDefault);
- if (wnew->misc.appkeypadDefault)
- wnew->keyboard.flags |= MODE_DECKPAM;
-
- return;
-}
-
-static void
-VTDestroy(Widget w)
-{
- XtFree((char *) (((XtermWidget) w)->screen.selection_data));
-}
-
-/*ARGSUSED*/
-static void
-VTRealize(Widget w,
- XtValueMask * valuemask,
- XSetWindowAttributes * values)
-{
- XtermWidget xw = (XtermWidget) w;
- TScreen *screen = &xw->screen;
-
- unsigned width, height;
- int xpos, ypos, pr;
- XSizeHints sizehints;
- Atom pid_atom;
-
- TRACE(("VTRealize\n"));
-
- TabReset(xw->tabs);
-
- screen->MenuFontName(fontMenu_fontdefault) = xw->misc.default_font.f_n;
- screen->fnt_norm = NULL;
- screen->fnt_bold = NULL;
-#if OPT_WIDE_CHARS
- screen->fnt_dwd = NULL;
- screen->fnt_dwdb = NULL;
-#endif
- if (!xtermLoadFont(xw,
- &(xw->misc.default_font),
- False, 0)) {
- if (XmuCompareISOLatin1(xw->misc.default_font.f_n, "fixed") != 0) {
- fprintf(stderr,
- "%s: unable to open font \"%s\", trying \"fixed\"....\n",
- xterm_name, xw->misc.default_font.f_n);
- (void) xtermLoadFont(xw,
- xtermFontName("fixed"),
- False, 0);
- screen->MenuFontName(fontMenu_fontdefault) = "fixed";
- }
- }
-
- /* really screwed if we couldn't open default font */
- if (!screen->fnt_norm) {
- fprintf(stderr, "%s: unable to locate a suitable font\n",
- xterm_name);
- Exit(1);
- }
-#if OPT_WIDE_CHARS
- if (xw->screen.utf8_mode) {
- TRACE(("check if this is a wide font, if not try again\n"));
- if (xtermLoadWideFonts(xw, False))
- SetVTFont(xw, screen->menu_font_number, TRUE, NULL);
- }
-#endif
-
- /* making cursor */
- if (!screen->pointer_cursor) {
- screen->pointer_cursor =
- make_colored_cursor(XC_xterm,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
- } else {
- recolor_cursor(screen->pointer_cursor,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
- }
-
- /* set defaults */
- xpos = 1;
- ypos = 1;
- width = 80;
- height = 24;
-
- TRACE(("parsing geo_metry %s\n", NonNull(xw->misc.geo_metry)));
- pr = XParseGeometry(xw->misc.geo_metry, &xpos, &ypos,
- &width, &height);
- TRACE(("... position %d,%d size %dx%d\n", ypos, xpos, height, width));
-
- set_max_col(screen, (int) (width - 1)); /* units in character cells */
- set_max_row(screen, (int) (height - 1)); /* units in character cells */
- xtermUpdateFontInfo(xw, False);
-
- width = screen->fullVwin.fullwidth;
- height = screen->fullVwin.fullheight;
-
- TRACE(("... border widget %d parent %d shell %d\n",
- BorderWidth(xw),
- BorderWidth(XtParent(xw)),
- BorderWidth(SHELL_OF(xw))));
-
- if ((pr & XValue) && (XNegative & pr)) {
- xpos += DisplayWidth(screen->display, DefaultScreen(screen->display))
- - width - (BorderWidth(XtParent(xw)) * 2);
- }
- if ((pr & YValue) && (YNegative & pr)) {
- ypos += DisplayHeight(screen->display, DefaultScreen(screen->display))
- - height - (BorderWidth(XtParent(xw)) * 2);
- }
-
- /* set up size hints for window manager; min 1 char by 1 char */
- bzero(&sizehints, sizeof(sizehints));
- xtermSizeHints(xw, &sizehints, (xw->misc.scrollbar
- ? (screen->scrollWidget->core.width
- + BorderWidth(screen->scrollWidget))
- : 0));
-
- sizehints.x = xpos;
- sizehints.y = ypos;
- if ((XValue & pr) || (YValue & pr)) {
- sizehints.flags |= USSize | USPosition;
- sizehints.flags |= PWinGravity;
- switch (pr & (XNegative | YNegative)) {
- case 0:
- sizehints.win_gravity = NorthWestGravity;
- break;
- case XNegative:
- sizehints.win_gravity = NorthEastGravity;
- break;
- case YNegative:
- sizehints.win_gravity = SouthWestGravity;
- break;
- default:
- sizehints.win_gravity = SouthEastGravity;
- break;
- }
- } else {
- /* set a default size, but do *not* set position */
- sizehints.flags |= PSize;
- }
- sizehints.height = sizehints.base_height
- + sizehints.height_inc * MaxRows(screen);
- sizehints.width = sizehints.base_width
- + sizehints.width_inc * MaxCols(screen);
-
- if ((WidthValue & pr) || (HeightValue & pr))
- sizehints.flags |= USSize;
- else
- sizehints.flags |= PSize;
-
- /*
- * Note that the size-hints are for the shell, while the resize-request
- * is for the vt100 widget. They are not the same size.
- */
- TRACE(("make resize request %dx%d\n", height, width));
- (void) XtMakeResizeRequest((Widget) xw,
- (Dimension) width, (Dimension) height,
- &xw->core.width, &xw->core.height);
- TRACE(("...made resize request %dx%d\n", xw->core.height, xw->core.width));
-
- /* XXX This is bogus. We are parsing geometries too late. This
- * is information that the shell widget ought to have before we get
- * realized, so that it can do the right thing.
- */
- if (sizehints.flags & USPosition)
- XMoveWindow(XtDisplay(xw), XtWindow(SHELL_OF(xw)),
- sizehints.x, sizehints.y);
-
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_HINTS(&sizehints);
- XSetWMNormalHints(XtDisplay(xw), XtWindow(SHELL_OF(xw)), &sizehints);
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_WM_HINTS(xw);
-
- if ((pid_atom = XInternAtom(XtDisplay(xw), "_NET_WM_PID", False)) != None) {
- /* XChangeProperty format 32 really is "long" */
- unsigned long pid_l = (unsigned long) getpid();
- TRACE(("Setting _NET_WM_PID property to %lu\n", pid_l));
- XChangeProperty(XtDisplay(xw), VShellWindow,
- pid_atom, XA_CARDINAL, 32, PropModeReplace,
- (unsigned char *) &pid_l, 1);
- }
-
- XFlush(XtDisplay(xw)); /* get it out to window manager */
-
- /* use ForgetGravity instead of SouthWestGravity because translating
- the Expose events for ConfigureNotifys is too hard */
- values->bit_gravity = ((xw->misc.resizeGravity == NorthWestGravity)
- ? NorthWestGravity
- : ForgetGravity);
- xw->screen.fullVwin.window = XtWindow(xw) =
- XCreateWindow(XtDisplay(xw), XtWindow(XtParent(xw)),
- xw->core.x, xw->core.y,
- xw->core.width, xw->core.height, BorderWidth(xw),
- (int) xw->core.depth,
- InputOutput, CopyFromParent,
- *valuemask | CWBitGravity, values);
- screen->event_mask = values->event_mask;
-
-#ifndef NO_ACTIVE_ICON
- if (xw->misc.active_icon && screen->fnt_icon) {
- int iconX = 0, iconY = 0;
- Widget shell = SHELL_OF(xw);
- unsigned long mask;
- XGCValues xgcv;
-
- TRACE(("Initializing active-icon\n"));
- XtVaGetValues(shell, XtNiconX, &iconX, XtNiconY, &iconY, (XtPointer) 0);
- xtermComputeFontInfo(xw, &(screen->iconVwin), screen->fnt_icon, 0);
-
- /* since only one client is permitted to select for Button
- * events, we have to let the window manager get 'em...
- */
- values->event_mask &= ~(ButtonPressMask | ButtonReleaseMask);
- values->border_pixel = xw->misc.icon_border_pixel;
-
- screen->iconVwin.window =
- XCreateWindow(XtDisplay(xw),
- RootWindowOfScreen(XtScreen(shell)),
- iconX, iconY,
- screen->iconVwin.fullwidth,
- screen->iconVwin.fullheight,
- xw->misc.icon_border_width,
- (int) xw->core.depth,
- InputOutput, CopyFromParent,
- *valuemask | CWBitGravity | CWBorderPixel,
- values);
- XtVaSetValues(shell,
- XtNiconWindow, screen->iconVwin.window,
- (XtPointer) 0);
- XtRegisterDrawable(XtDisplay(xw), screen->iconVwin.window, w);
-
- mask = (GCFont | GCForeground | GCBackground |
- GCGraphicsExposures | GCFunction);
-
- xgcv.font = screen->fnt_icon->fid;
- xgcv.foreground = T_COLOR(screen, TEXT_FG);
- xgcv.background = T_COLOR(screen, TEXT_BG);
- xgcv.graphics_exposures = True; /* default */
- xgcv.function = GXcopy;
-
- screen->iconVwin.normalGC =
- screen->iconVwin.normalboldGC =
- XtGetGC(shell, mask, &xgcv);
-
- xgcv.foreground = T_COLOR(screen, TEXT_BG);
- xgcv.background = T_COLOR(screen, TEXT_FG);
-
- screen->iconVwin.reverseGC =
- screen->iconVwin.reverseboldGC =
- XtGetGC(shell, mask, &xgcv);
-#if OPT_TOOLBAR
- /*
- * Toolbar is initialized before we get here. Enable the menu item
- * and set it properly.
- */
- set_sensitivity(mw,
- vtMenuEntries[vtMenu_activeicon].widget,
- True);
- update_activeicon();
-#endif
- } else {
- TRACE(("Disabled active-icon\n"));
- xw->misc.active_icon = False;
- }
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_I18N_SUPPORT && OPT_INPUT_METHOD
- VTInitI18N();
-#else
- xw->screen.xic = NULL;
-#endif
-#if OPT_NUM_LOCK
- VTInitModifiers();
-#endif
-
- set_cursor_gcs(screen);
-
- /* Reset variables used by ANSI emulation. */
-
- resetCharsets(screen);
-
- XDefineCursor(screen->display, VShellWindow, screen->pointer_cursor);
-
- set_cur_col(screen, 0);
- set_cur_row(screen, 0);
- set_max_col(screen, Width(screen) / screen->fullVwin.f_width - 1);
- set_max_row(screen, Height(screen) / screen->fullVwin.f_height - 1);
- set_tb_margins(screen, 0, screen->max_row);
-
- memset(screen->sc, 0, sizeof(screen->sc));
-
- /* Mark screen buffer as unallocated. We wait until the run loop so
- that the child process does not fork and exec with all the dynamic
- memory it will never use. If we were to do it here, the
- swap space for new process would be huge for huge savelines. */
-#if OPT_TEK4014
- if (!tekWidget) /* if not called after fork */
-#endif
- screen->visbuf = screen->allbuf = NULL;
-
- screen->do_wrap = 0;
- screen->scrolls = screen->incopy = 0;
- xtermSetCursorBox(screen);
-
- screen->savedlines = 0;
-
- if (xw->misc.scrollbar) {
- screen->fullVwin.sb_info.width = 0;
- ScrollBarOn(xw, False, True);
- }
- CursorSave(xw);
- return;
-}
-
-#if OPT_I18N_SUPPORT && OPT_INPUT_METHOD
-
-/* limit this feature to recent XFree86 since X11R6.x core dumps */
-#if defined(XtSpecificationRelease) && XtSpecificationRelease >= 6 && defined(X_HAVE_UTF8_STRING)
-#define USE_XIM_INSTANTIATE_CB
-
-static void
-xim_instantiate_cb(Display * display,
- XPointer client_data GCC_UNUSED,
- XPointer call_data GCC_UNUSED)
-{
- if (display != XtDisplay(term))
- return;
-
- VTInitI18N();
-}
-
-static void
-xim_destroy_cb(XIM im GCC_UNUSED,
- XPointer client_data GCC_UNUSED,
- XPointer call_data GCC_UNUSED)
-{
- term->screen.xic = NULL;
-
- XRegisterIMInstantiateCallback(XtDisplay(term), NULL, NULL, NULL,
- xim_instantiate_cb, NULL);
-}
-#endif /* X11R6+ */
-
-static void
-xim_real_init(void)
-{
- unsigned i, j;
- char *p, *s, *t, *ns, *end, buf[32];
- XIMStyles *xim_styles;
- XIMStyle input_style = 0;
- Bool found;
- static struct {
- char *name;
- unsigned long code;
- } known_style[] = {
- {
- "OverTheSpot", (XIMPreeditPosition | XIMStatusNothing)
- },
- {
- "OffTheSpot", (XIMPreeditArea | XIMStatusArea)
- },
- {
- "Root", (XIMPreeditNothing | XIMStatusNothing)
- },
- };
-
- term->screen.xic = NULL;
-
- if (term->misc.cannot_im) {
- return;
- }
-
- if (!term->misc.input_method || !*term->misc.input_method) {
- if ((p = XSetLocaleModifiers("")) != NULL && *p)
- term->screen.xim = XOpenIM(XtDisplay(term), NULL, NULL, NULL);
- } else {
- s = term->misc.input_method;
- i = 5 + strlen(s);
- t = (char *) MyStackAlloc(i, buf);
- if (t == NULL)
- SysError(ERROR_VINIT);
-
- for (ns = s; ns && *s;) {
- while (*s && isspace(CharOf(*s)))
- s++;
- if (!*s)
- break;
- if ((ns = end = strchr(s, ',')) == 0)
- end = s + strlen(s);
- while ((end != s) && isspace(CharOf(end[-1])))
- end--;
-
- if (end != s) {
- strcpy(t, "@im=");
- strncat(t, s, (unsigned) (end - s));
-
- if ((p = XSetLocaleModifiers(t)) != 0 && *p
- && (term->screen.xim = XOpenIM(XtDisplay(term),
- NULL,
- NULL,
- NULL)) != 0)
- break;
-
- }
- s = ns + 1;
- }
- MyStackFree(t, buf);
- }
-
- if (term->screen.xim == NULL
- && (p = XSetLocaleModifiers("@im=none")) != NULL
- && *p) {
- term->screen.xim = XOpenIM(XtDisplay(term), NULL, NULL, NULL);
- }
-
- if (!term->screen.xim) {
- fprintf(stderr, "Failed to open input method\n");
- return;
- }
- TRACE(("VTInitI18N opened input method\n"));
-
- if (XGetIMValues(term->screen.xim, XNQueryInputStyle, &xim_styles, NULL)
- || !xim_styles
- || !xim_styles->count_styles) {
- fprintf(stderr, "input method doesn't support any style\n");
- XCloseIM(term->screen.xim);
- term->misc.cannot_im = True;
- return;
- }
-
- found = False;
- for (s = term->misc.preedit_type; s && !found;) {
- while (*s && isspace(CharOf(*s)))
- s++;
- if (!*s)
- break;
- if ((ns = end = strchr(s, ',')) != 0)
- ns++;
- else
- end = s + strlen(s);
- while ((end != s) && isspace(CharOf(end[-1])))
- end--;
-
- if (end != s) { /* just in case we have a spurious comma */
- TRACE(("looking for style '%.*s'\n", end - s, s));
- for (i = 0; i < XtNumber(known_style); i++) {
- if ((int) strlen(known_style[i].name) == (end - s)
- && !strncmp(s, known_style[i].name, (unsigned) (end - s))) {
- input_style = known_style[i].code;
- for (j = 0; j < xim_styles->count_styles; j++) {
- if (input_style == xim_styles->supported_styles[j]) {
- found = True;
- break;
- }
- }
- if (found)
- break;
- }
- }
- }
-
- s = ns;
- }
- XFree(xim_styles);
-
- if (!found) {
- fprintf(stderr,
- "input method doesn't support my preedit type (%s)\n",
- term->misc.preedit_type);
- XCloseIM(term->screen.xim);
- term->misc.cannot_im = True;
- return;
- }
-
- /*
- * Check for styles we do not yet support.
- */
- TRACE(("input_style %#lx\n", input_style));
- if (input_style == (XIMPreeditArea | XIMStatusArea)) {
- fprintf(stderr,
- "This program doesn't support the 'OffTheSpot' preedit type\n");
- XCloseIM(term->screen.xim);
- term->misc.cannot_im = True;
- return;
- }
-
- /*
- * For XIMPreeditPosition (or OverTheSpot), XIM client has to
- * prepare a font.
- * The font has to be locale-dependent XFontSet, whereas
- * XTerm use Unicode font. This leads a problem that the
- * same font cannot be used for XIM preedit.
- */
- if (input_style != (XIMPreeditNothing | XIMStatusNothing)) {
- char **missing_charset_list;
- int missing_charset_count;
- char *def_string;
- XVaNestedList p_list;
- XPoint spot =
- {0, 0};
- XFontStruct **fonts;
- char **font_name_list;
-
- term->screen.fs = XCreateFontSet(XtDisplay(term),
- term->misc.f_x,
- &missing_charset_list,
- &missing_charset_count,
- &def_string);
- if (term->screen.fs == NULL) {
- fprintf(stderr, "Preparation of font set "
- "\"%s\" for XIM failed.\n", term->misc.f_x);
- term->screen.fs = XCreateFontSet(XtDisplay(term),
- DEFXIMFONT,
- &missing_charset_list,
- &missing_charset_count,
- &def_string);
- }
- if (term->screen.fs == NULL) {
- fprintf(stderr, "Preparation of default font set "
- "\"%s\" for XIM failed.\n", DEFXIMFONT);
- XCloseIM(term->screen.xim);
- term->misc.cannot_im = True;
- return;
- }
- (void) XExtentsOfFontSet(term->screen.fs);
- j = XFontsOfFontSet(term->screen.fs, &fonts, &font_name_list);
- for (i = 0, term->screen.fs_ascent = 0; i < j; i++) {
- if (term->screen.fs_ascent < (*fonts)->ascent)
- term->screen.fs_ascent = (*fonts)->ascent;
- }
- p_list = XVaCreateNestedList(0,
- XNSpotLocation, &spot,
- XNFontSet, term->screen.fs,
- NULL);
- term->screen.xic = XCreateIC(term->screen.xim,
- XNInputStyle, input_style,
- XNClientWindow, XtWindow(term),
- XNFocusWindow, XtWindow(term),
- XNPreeditAttributes, p_list,
- NULL);
- } else {
- term->screen.xic = XCreateIC(term->screen.xim, XNInputStyle, input_style,
- XNClientWindow, XtWindow(term),
- XNFocusWindow, XtWindow(term),
- NULL);
- }
-
- if (!term->screen.xic) {
- fprintf(stderr, "Failed to create input context\n");
- XCloseIM(term->screen.xim);
- }
-#if defined(USE_XIM_INSTANTIATE_CB)
- else {
- XIMCallback destroy_cb;
-
- destroy_cb.callback = xim_destroy_cb;
- destroy_cb.client_data = NULL;
- if (XSetIMValues(term->screen.xim, XNDestroyCallback, &destroy_cb, NULL))
- fprintf(stderr, "Could not set destroy callback to IM\n");
- }
-#endif
-
- return;
-}
-
-static void
-VTInitI18N(void)
-{
- if (term->misc.open_im) {
- xim_real_init();
-
-#if defined(USE_XIM_INSTANTIATE_CB)
- if (term->screen.xic == NULL && !term->misc.cannot_im) {
- sleep(3);
- XRegisterIMInstantiateCallback(XtDisplay(term), NULL, NULL, NULL,
- xim_instantiate_cb, NULL);
- }
-#endif
- }
-}
-#endif /* OPT_I18N_SUPPORT && OPT_INPUT_METHOD */
-
-static Boolean
-VTSetValues(Widget cur,
- Widget request GCC_UNUSED,
- Widget wnew,
- ArgList args GCC_UNUSED,
- Cardinal *num_args GCC_UNUSED)
-{
- XtermWidget curvt = (XtermWidget) cur;
- XtermWidget newvt = (XtermWidget) wnew;
- Bool refresh_needed = False;
- Bool fonts_redone = False;
-
- if ((T_COLOR(&(curvt->screen), TEXT_BG) !=
- T_COLOR(&(newvt->screen), TEXT_BG)) ||
- (T_COLOR(&(curvt->screen), TEXT_FG) !=
- T_COLOR(&(newvt->screen), TEXT_FG)) ||
- (curvt->screen.MenuFontName(curvt->screen.menu_font_number) !=
- newvt->screen.MenuFontName(newvt->screen.menu_font_number)) ||
- (curvt->misc.default_font.f_n != newvt->misc.default_font.f_n)) {
- if (curvt->misc.default_font.f_n != newvt->misc.default_font.f_n)
- newvt->screen.MenuFontName(fontMenu_fontdefault) = newvt->misc.default_font.f_n;
- if (xtermLoadFont(newvt,
- xtermFontName(newvt->screen.MenuFontName(curvt->screen.menu_font_number)),
- True, newvt->screen.menu_font_number)) {
- /* resizing does the redisplay, so don't ask for it here */
- refresh_needed = True;
- fonts_redone = True;
- } else if (curvt->misc.default_font.f_n != newvt->misc.default_font.f_n)
- newvt->screen.MenuFontName(fontMenu_fontdefault) = curvt->misc.default_font.f_n;
- }
- if (!fonts_redone
- && (T_COLOR(&(curvt->screen), TEXT_CURSOR) !=
- T_COLOR(&(newvt->screen), TEXT_CURSOR))) {
- set_cursor_gcs(&newvt->screen);
- refresh_needed = True;
- }
- if (curvt->misc.re_verse != newvt->misc.re_verse) {
- newvt->flags ^= REVERSE_VIDEO;
- ReverseVideo(newvt);
- newvt->misc.re_verse = !newvt->misc.re_verse; /* ReverseVideo toggles */
- refresh_needed = True;
- }
- if ((T_COLOR(&(curvt->screen), MOUSE_FG) !=
- T_COLOR(&(newvt->screen), MOUSE_FG)) ||
- (T_COLOR(&(curvt->screen), MOUSE_BG) !=
- T_COLOR(&(newvt->screen), MOUSE_BG))) {
- recolor_cursor(newvt->screen.pointer_cursor,
- T_COLOR(&(newvt->screen), MOUSE_FG),
- T_COLOR(&(newvt->screen), MOUSE_BG));
- refresh_needed = True;
- }
- if (curvt->misc.scrollbar != newvt->misc.scrollbar) {
- ToggleScrollBar(newvt);
- }
-
- return refresh_needed;
-}
-
-#define setGC(value) set_at = __LINE__, currentGC = value
-
-#define OutsideSelection(screen,row,col) \
- ((row) > (screen)->endHRow || \
- ((row) == (screen)->endHRow && \
- (col) >= (screen)->endHCol) || \
- (row) < (screen)->startHRow || \
- ((row) == (screen)->startHRow && \
- (col) < (screen)->startHCol))
-
-/*
- * Shows cursor at new cursor position in screen.
- */
-void
-ShowCursor(void)
-{
- TScreen *screen = &term->screen;
- int x, y;
- Char clo;
- unsigned flags;
- unsigned fg_bg = 0;
- GC currentGC;
- int set_at;
- Bool in_selection;
- Bool reversed;
- Pixel fg_pix;
- Pixel bg_pix;
- Pixel tmp;
-#if OPT_HIGHLIGHT_COLOR
- Pixel hi_pix = T_COLOR(screen, HIGHLIGHT_BG);
-#endif
-#if OPT_WIDE_CHARS
- Char chi = 0;
- Char c1h = 0;
- Char c1l = 0;
- Char c2h = 0;
- Char c2l = 0;
- int base;
-#endif
- int cursor_col;
-
- if (screen->cursor_state == BLINKED_OFF)
- return;
-
- if (eventMode != NORMAL)
- return;
-
- if (screen->cur_row - screen->topline > screen->max_row)
- return;
-
- screen->cursor_row = screen->cur_row;
- cursor_col = screen->cursor_col = screen->cur_col;
- screen->cursor_moved = False;
-
-#ifndef NO_ACTIVE_ICON
- if (IsIcon(screen)) {
- screen->cursor_state = ON;
- return;
- }
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_WIDE_CHARS
- base =
-#endif
- clo = SCRN_BUF_CHARS(screen, screen->cursor_row)[cursor_col];
-
- if_OPT_WIDE_CHARS(screen, {
- int my_col;
- chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[cursor_col];
- if (clo == HIDDEN_LO && chi == HIDDEN_HI && cursor_col > 0) {
- /* if cursor points to non-initial part of wide character,
- * back it up
- */
- --cursor_col;
- clo = SCRN_BUF_CHARS(screen, screen->cursor_row)[cursor_col];
- chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[cursor_col];
- }
- my_col = cursor_col;
- base = (chi << 8) | clo;
- if (iswide(base))
- my_col += 1;
- c1l = SCRN_BUF_COM1L(screen, screen->cursor_row)[my_col];
- c1h = SCRN_BUF_COM1H(screen, screen->cursor_row)[my_col];
- c2l = SCRN_BUF_COM2L(screen, screen->cursor_row)[my_col];
- c2h = SCRN_BUF_COM2H(screen, screen->cursor_row)[my_col];
- });
-
- flags = SCRN_BUF_ATTRS(screen, screen->cursor_row)[cursor_col];
-
- if (clo == 0
-#if OPT_WIDE_CHARS
- && chi == 0
-#endif
- ) {
- clo = ' ';
- }
-
- /*
- * If the cursor happens to be on blanks, and the foreground color is set
- * but not the background, do not treat it as a colored cell.
- */
-#if OPT_ISO_COLORS
- if ((flags & TERM_COLOR_FLAGS(term)) == BG_COLOR
-#if OPT_WIDE_CHARS
- && chi == 0
-#endif
- && clo == ' ') {
- flags &= ~TERM_COLOR_FLAGS(term);
- }
-#endif
-
- /*
- * Compare the current cell to the last set of colors used for the
- * cursor and update the GC's if needed.
- */
- if_OPT_EXT_COLORS(screen, {
- fg_bg = (SCRN_BUF_FGRND(screen, screen->cursor_row)[cursor_col] << 8)
- | (SCRN_BUF_BGRND(screen, screen->cursor_row)[cursor_col]);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- fg_bg = SCRN_BUF_COLOR(screen, screen->cursor_row)[cursor_col];
- });
- fg_pix = getXtermForeground(flags, extract_fg(fg_bg, flags));
- bg_pix = getXtermBackground(flags, extract_bg(fg_bg, flags));
-
- if (OutsideSelection(screen, screen->cur_row, screen->cur_col))
- in_selection = False;
- else
- in_selection = True;
-
- reversed = ReverseOrHilite(screen, flags, in_selection);
-
- /* This is like updatedXtermGC(), except that we have to worry about
- * whether the window has focus, since in that case we want just an
- * outline for the cursor.
- */
- if (screen->select || screen->always_highlight) {
- if (reversed) { /* text is reverse video */
- if (screen->cursorGC) {
- setGC(screen->cursorGC);
- } else {
- if (flags & BOLDATTR(screen)) {
- setGC(NormalBoldGC(screen));
- } else {
- setGC(NormalGC(screen));
- }
- }
-#if OPT_HIGHLIGHT_COLOR
- if (hi_pix != T_COLOR(screen, TEXT_FG)
- && hi_pix != fg_pix
- && hi_pix != bg_pix
- && hi_pix != term->dft_foreground) {
- bg_pix = fg_pix;
- fg_pix = hi_pix;
- }
-#endif
- EXCHANGE(fg_pix, bg_pix, tmp);
- } else { /* normal video */
- if (screen->reversecursorGC) {
- setGC(screen->reversecursorGC);
- } else {
- if (flags & BOLDATTR(screen)) {
- setGC(ReverseBoldGC(screen));
- } else {
- setGC(ReverseGC(screen));
- }
- }
- }
- if (T_COLOR(screen, TEXT_CURSOR) == term->dft_foreground) {
- XSetBackground(screen->display, currentGC, fg_pix);
- }
- XSetForeground(screen->display, currentGC, bg_pix);
- } else { /* not selected */
- if (reversed) { /* text is reverse video */
-#if OPT_HIGHLIGHT_COLOR
- if (hi_pix != T_COLOR(screen, TEXT_FG)
- && hi_pix != fg_pix
- && hi_pix != bg_pix
- && hi_pix != term->dft_foreground) {
- bg_pix = fg_pix;
- fg_pix = hi_pix;
- }
-#endif
- setGC(ReverseGC(screen));
- XSetForeground(screen->display, currentGC, bg_pix);
- XSetBackground(screen->display, currentGC, fg_pix);
- } else { /* normal video */
- setGC(NormalGC(screen));
- XSetForeground(screen->display, currentGC, fg_pix);
- XSetBackground(screen->display, currentGC, bg_pix);
- }
- }
-
- if (screen->cursor_busy == 0
- && (screen->cursor_state != ON || screen->cursor_GC != set_at)) {
-
- screen->cursor_GC = set_at;
- TRACE(("ShowCursor calling drawXtermText cur(%d,%d)\n",
- screen->cur_row, screen->cur_col));
-
- drawXtermText(screen, flags & DRAWX_MASK, currentGC,
- x = CurCursorX(screen, screen->cur_row, cursor_col),
- y = CursorY(screen, screen->cur_row),
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&clo, &chi), 1, 0);
-
-#if OPT_WIDE_CHARS
- if (c1l || c1h) {
- drawXtermText(screen, (flags & DRAWX_MASK) | NOBACKGROUND,
- currentGC, x, y,
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&c1l, &c1h), 1, iswide(base));
-
- if (c2l || c2h)
- drawXtermText(screen, (flags & DRAWX_MASK) | NOBACKGROUND,
- currentGC, x, y,
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&c2l, &c2h), 1, iswide(base));
- }
-#endif
-
- if (!screen->select && !screen->always_highlight) {
- screen->box->x = x;
- screen->box->y = y;
- XDrawLines(screen->display, VWindow(screen),
- screen->cursoroutlineGC ? screen->cursoroutlineGC
- : currentGC,
- screen->box, NBOX, CoordModePrevious);
- }
- }
- screen->cursor_state = ON;
-}
-
-/*
- * hide cursor at previous cursor position in screen.
- */
-void
-HideCursor(void)
-{
- TScreen *screen = &term->screen;
- GC currentGC;
- unsigned flags;
- unsigned fg_bg = 0;
- int x, y;
- Char clo;
- Bool in_selection;
-#if OPT_WIDE_CHARS
- Char chi = 0;
- Char c1h = 0;
- Char c1l = 0;
- Char c2h = 0;
- Char c2l = 0;
- int base;
-#endif
- int cursor_col;
-
- if (screen->cursor_state == OFF) /* FIXME */
- return;
- if (screen->cursor_row - screen->topline > screen->max_row)
- return;
-
- cursor_col = screen->cursor_col;
-
-#ifndef NO_ACTIVE_ICON
- if (IsIcon(screen)) {
- screen->cursor_state = OFF;
- return;
- }
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_WIDE_CHARS
- base =
-#endif
- clo = SCRN_BUF_CHARS(screen, screen->cursor_row)[cursor_col];
- flags = SCRN_BUF_ATTRS(screen, screen->cursor_row)[cursor_col];
-
- if_OPT_WIDE_CHARS(screen, {
- int my_col;
- chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[cursor_col];
- if (clo == HIDDEN_LO && chi == HIDDEN_HI) {
- /* if cursor points to non-initial part of wide character,
- * back it up
- */
- --cursor_col;
- clo = SCRN_BUF_CHARS(screen, screen->cursor_row)[cursor_col];
- chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[cursor_col];
- }
- my_col = cursor_col;
- base = (chi << 8) | clo;
- if (iswide(base))
- my_col += 1;
- c1l = SCRN_BUF_COM1L(screen, screen->cursor_row)[my_col];
- c1h = SCRN_BUF_COM1H(screen, screen->cursor_row)[my_col];
- c2l = SCRN_BUF_COM2L(screen, screen->cursor_row)[my_col];
- c2h = SCRN_BUF_COM2H(screen, screen->cursor_row)[my_col];
- });
-
- if_OPT_EXT_COLORS(screen, {
- fg_bg = (SCRN_BUF_FGRND(screen, screen->cursor_row)[cursor_col] << 8)
- | (SCRN_BUF_BGRND(screen, screen->cursor_row)[cursor_col]);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- fg_bg = SCRN_BUF_COLOR(screen, screen->cursor_row)[cursor_col];
- });
-
- if (OutsideSelection(screen, screen->cursor_row, screen->cursor_col))
- in_selection = False;
- else
- in_selection = True;
-
- currentGC = updatedXtermGC(screen, flags, fg_bg, in_selection);
-
- if (clo == 0
-#if OPT_WIDE_CHARS
- && chi == 0
-#endif
- ) {
- clo = ' ';
- }
-
- TRACE(("HideCursor calling drawXtermText cur(%d,%d)\n",
- screen->cursor_row, screen->cursor_col));
- drawXtermText(screen, flags & DRAWX_MASK, currentGC,
- x = CurCursorX(screen, screen->cursor_row, cursor_col),
- y = CursorY(screen, screen->cursor_row),
- curXtermChrSet(screen->cursor_row),
- PAIRED_CHARS(&clo, &chi), 1, 0);
-
-#if OPT_WIDE_CHARS
- if (c1l || c1h) {
- drawXtermText(screen, (flags & DRAWX_MASK) | NOBACKGROUND,
- currentGC, x, y,
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&c1l, &c1h), 1, iswide(base));
-
- if (c2l || c2h)
- drawXtermText(screen, (flags & DRAWX_MASK) | NOBACKGROUND,
- currentGC, x, y,
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&c2l, &c2h), 1, iswide(base));
- }
-#endif
- screen->cursor_state = OFF;
- resetXtermGC(screen, flags, in_selection);
-}
-
-#if OPT_BLINK_CURS || OPT_BLINK_TEXT
-static void
-StartBlinking(TScreen * screen)
-{
- if (screen->blink_timer == 0) {
- unsigned long interval = (screen->cursor_state == ON ?
- screen->blink_on : screen->blink_off);
- if (interval == 0) /* wow! */
- interval = 1; /* let's humor him anyway */
- screen->blink_timer = XtAppAddTimeOut(app_con,
- interval,
- HandleBlinking,
- screen);
- }
-}
-
-static void
-StopBlinking(TScreen * screen)
-{
- if (screen->blink_timer)
- XtRemoveTimeOut(screen->blink_timer);
- screen->blink_timer = 0;
-}
-
-#if OPT_BLINK_TEXT
-static Bool
-ScrnHasBlinking(TScreen * screen, int row)
-{
- Char *attrs = SCRN_BUF_ATTRS(screen, row);
- int col;
- Bool result = False;
-
- for (col = 0; col < MaxCols(screen); ++col) {
- if (attrs[col] & BLINK) {
- result = True;
- break;
- }
- }
- return result;
-}
-#endif
-
-/*
- * Blink the cursor by alternately showing/hiding cursor. We leave the timer
- * running all the time (even though that's a little inefficient) to make the
- * logic simple.
- */
-static void
-HandleBlinking(XtPointer closure, XtIntervalId * id GCC_UNUSED)
-{
- TScreen *screen = (TScreen *) closure;
- Bool resume = False;
-
- screen->blink_timer = 0;
- screen->blink_state = !screen->blink_state;
-
-#if OPT_BLINK_CURS
- if (DoStartBlinking(screen)) {
- if (screen->cursor_state == ON) {
- if (screen->select || screen->always_highlight) {
- HideCursor();
- if (screen->cursor_state == OFF)
- screen->cursor_state = BLINKED_OFF;
- }
- } else if (screen->cursor_state == BLINKED_OFF) {
- screen->cursor_state = OFF;
- ShowCursor();
- if (screen->cursor_state == OFF)
- screen->cursor_state = BLINKED_OFF;
- }
- resume = True;
- }
-#endif
-
-#if OPT_BLINK_TEXT
- /*
- * Inspect the line on the current screen to see if any have the BLINK flag
- * associated with them. Prune off any that have had the corresponding
- * cells reset. If any are left, repaint those lines with ScrnRefresh().
- */
- if (!(screen->blink_as_bold)) {
- int row;
- int first_row = screen->max_row;
- int last_row = -1;
-
- for (row = screen->max_row; row >= 0; row--) {
- if (ScrnTstBlinked(screen, row)) {
- if (ScrnHasBlinking(screen, row)) {
- resume = True;
- if (row > last_row)
- last_row = row;
- if (row < first_row)
- first_row = row;
- } else {
- ScrnClrBlinked(screen, row);
- }
- }
- }
- /*
- * FIXME: this could be a little more efficient, e.g,. by limiting the
- * columns which are updated.
- */
- if (first_row <= last_row) {
- ScrnRefresh(screen,
- first_row,
- 0,
- last_row + 1 - first_row,
- MaxCols(screen),
- True);
- }
- }
-#endif
-
- /*
- * If either the cursor or text is blinking, restart the timer.
- */
- if (resume)
- StartBlinking(screen);
-}
-#endif /* OPT_BLINK_CURS || OPT_BLINK_TEXT */
-
-/*
- * Implement soft or hard (full) reset of the VTxxx emulation. There are a
- * couple of differences from real DEC VTxxx terminals (to avoid breaking
- * applications which have come to rely on xterm doing this):
- *
- * + autowrap mode should be reset (instead it's reset to the resource
- * default).
- * + the popup menu offers a choice of resetting the savedLines, or not.
- * (but the control sequence does this anyway).
- */
-void
-VTReset(Bool full, Bool saved)
-{
- TScreen *screen = &term->screen;
-
- if (!XtIsRealized((Widget) term)) {
- Bell(XkbBI_MinorError, 0);
- return;
- }
-
- if (saved) {
- screen->savedlines = 0;
- ScrollBarDrawThumb(screen->scrollWidget);
- }
-
- /* make cursor visible */
- screen->cursor_set = ON;
-
- /* reset scrolling region */
- set_tb_margins(screen, 0, screen->max_row);
-
- bitclr(&term->flags, ORIGIN);
-
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Colors();
- });
-
- /* Reset character-sets to initial state */
- resetCharsets(screen);
-
- /* Reset DECSCA */
- bitclr(&term->flags, PROTECTED);
- screen->protected_mode = OFF_PROTECT;
-
- if (full) { /* RIS */
- if (screen->bellOnReset)
- Bell(XkbBI_TerminalBell, 0);
-
- /* reset the mouse mode */
- screen->send_mouse_pos = MOUSE_OFF;
- waitingForTrackInfo = False;
- eventMode = NORMAL;
-
- TabReset(term->tabs);
- term->keyboard.flags = MODE_SRM;
-#if OPT_INITIAL_ERASE
- if (term->keyboard.reset_DECBKM == 1)
- term->keyboard.flags |= MODE_DECBKM;
- else if (term->keyboard.reset_DECBKM == 2)
-#endif
- if (term->screen.backarrow_key)
- term->keyboard.flags |= MODE_DECBKM;
- TRACE(("full reset DECBKM %s\n",
- BtoS(term->keyboard.flags & MODE_DECBKM)));
- update_appcursor();
- update_appkeypad();
- update_decbkm();
- show_8bit_control(False);
- reset_decudk();
-
- FromAlternate(screen);
- ClearScreen(screen);
- screen->cursor_state = OFF;
- if (term->flags & REVERSE_VIDEO)
- ReverseVideo(term);
-
- term->flags = term->initflags;
- update_reversevideo();
- update_autowrap();
- update_reversewrap();
- update_autolinefeed();
-
- screen->jumpscroll = !(term->flags & SMOOTHSCROLL);
- update_jumpscroll();
-
- if (screen->c132 && (term->flags & IN132COLUMNS)) {
- Dimension reqWidth = (80 * FontWidth(screen)
- + 2 * screen->border + ScrollbarWidth(screen));
- Dimension reqHeight = (FontHeight(screen)
- * MaxRows(screen) + 2 * screen->border);
- Dimension replyWidth;
- Dimension replyHeight;
-
- TRACE(("Making resize-request to restore 80-columns %dx%d\n",
- reqHeight, reqWidth));
- XtMakeResizeRequest((Widget) term,
- reqWidth,
- reqHeight,
- &replyWidth, &replyHeight);
- TRACE(("...result %dx%d\n", replyHeight, replyWidth));
- repairSizeHints();
- XSync(screen->display, False); /* synchronize */
- if (XtAppPending(app_con))
- xevents();
- }
-
- CursorSet(screen, 0, 0, term->flags);
- CursorSave(term);
- } else { /* DECSTR */
- /*
- * There's a tiny difference, to accommodate usage of xterm.
- * We reset autowrap to the resource values rather than turning
- * it off.
- */
- term->keyboard.flags &= ~(MODE_DECCKM | MODE_KAM | MODE_DECKPAM);
- bitcpy(&term->flags, term->initflags, WRAPAROUND | REVERSEWRAP);
- bitclr(&term->flags, INSERT | INVERSE | BOLD | BLINK | UNDERLINE | INVISIBLE);
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Colors();
- });
- update_appcursor();
- update_autowrap();
- update_reversewrap();
-
- CursorSave(term);
- screen->sc[screen->alternate != False].row =
- screen->sc[screen->alternate != False].col = 0;
- }
- longjmp(vtjmpbuf, 1); /* force ground state in parser */
-}
-
-/*
- * set_character_class - takes a string of the form
- *
- * low[-high]:val[,low[-high]:val[...]]
- *
- * and sets the indicated ranges to the indicated values.
- */
-static int
-set_character_class(char *s)
-{
- int i; /* iterator, index into s */
- int len; /* length of s */
- int acc; /* accumulator */
- int low, high; /* bounds of range [0..127] */
- int base; /* 8, 10, 16 (octal, decimal, hex) */
- int numbers; /* count of numbers per range */
- int digits; /* count of digits in a number */
- static char *errfmt = "%s: %s in range string \"%s\" (position %d)\n";
-
- if (!s || !s[0])
- return -1;
-
- base = 10; /* in case we ever add octal, hex */
- low = high = -1; /* out of range */
-
- for (i = 0, len = strlen(s), acc = 0, numbers = digits = 0;
- i < len; i++) {
- Char c = s[i];
-
- if (isspace(c)) {
- continue;
- } else if (isdigit(c)) {
- acc = acc * base + (c - '0');
- digits++;
- continue;
- } else if (c == '-') {
- low = acc;
- acc = 0;
- if (digits == 0) {
- fprintf(stderr, errfmt, ProgramName, "missing number", s, i);
- return (-1);
- }
- digits = 0;
- numbers++;
- continue;
- } else if (c == ':') {
- if (numbers == 0)
- low = acc;
- else if (numbers == 1)
- high = acc;
- else {
- fprintf(stderr, errfmt, ProgramName, "too many numbers",
- s, i);
- return (-1);
- }
- digits = 0;
- numbers++;
- acc = 0;
- continue;
- } else if (c == ',') {
- /*
- * now, process it
- */
-
- if (high < 0) {
- high = low;
- numbers++;
- }
- if (numbers != 2) {
- fprintf(stderr, errfmt, ProgramName, "bad value number",
- s, i);
- } else if (SetCharacterClassRange(low, high, acc) != 0) {
- fprintf(stderr, errfmt, ProgramName, "bad range", s, i);
- }
-
- low = high = -1;
- acc = 0;
- digits = 0;
- numbers = 0;
- continue;
- } else {
- fprintf(stderr, errfmt, ProgramName, "bad character", s, i);
- return (-1);
- } /* end if else if ... else */
-
- }
-
- if (low < 0 && high < 0)
- return (0);
-
- /*
- * now, process it
- */
-
- if (high < 0)
- high = low;
- if (numbers < 1 || numbers > 2) {
- fprintf(stderr, errfmt, ProgramName, "bad value number", s, i);
- } else if (SetCharacterClassRange(low, high, acc) != 0) {
- fprintf(stderr, errfmt, ProgramName, "bad range", s, i);
- }
-
- return (0);
-}
-
-/* ARGSUSED */
-static void
-HandleKeymapChange(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- static XtTranslations keymap, original;
- static XtResource key_resources[] =
- {
- {XtNtranslations, XtCTranslations, XtRTranslationTable,
- sizeof(XtTranslations), 0, XtRTranslationTable, (XtPointer) NULL}
- };
- char mapName[1000];
- char mapClass[1000];
- char *pmapName;
- char *pmapClass;
- size_t len;
-
- if (*param_count != 1)
- return;
-
- if (original == NULL)
- original = w->core.tm.translations;
-
- if (strcmp(params[0], "None") == 0) {
- XtOverrideTranslations(w, original);
- return;
- }
-
- len = strlen(params[0]) + 7;
-
- pmapName = (char *) MyStackAlloc(len, mapName);
- pmapClass = (char *) MyStackAlloc(len, mapClass);
- if (pmapName == NULL
- || pmapClass == NULL)
- SysError(ERROR_KMMALLOC1);
-
- (void) sprintf(pmapName, "%sKeymap", params[0]);
- (void) strcpy(pmapClass, pmapName);
- if (islower(CharOf(pmapClass[0])))
- pmapClass[0] = toupper(CharOf(pmapClass[0]));
- XtGetSubresources(w, (XtPointer) &keymap, pmapName, pmapClass,
- key_resources, (Cardinal) 1, NULL, (Cardinal) 0);
- if (keymap != NULL)
- XtOverrideTranslations(w, keymap);
-
- MyStackFree(pmapName, mapName);
- MyStackFree(pmapClass, mapClass);
-}
-
-/* ARGSUSED */
-static void
-HandleBell(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params, /* [0] = volume */
- Cardinal *param_count) /* 0 or 1 */
-{
- int percent = (*param_count) ? atoi(params[0]) : 0;
-
- Bell(XkbBI_TerminalBell, percent);
-}
-
-/* ARGSUSED */
-static void
-HandleVisualBell(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- VisualBell();
-}
-
-/* ARGSUSED */
-static void
-HandleIgnore(Widget w,
- XEvent * event,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- /* do nothing, but check for funny escape sequences */
- (void) SendMousePosition(w, event);
-}
-
-/* ARGSUSED */
-static void
-DoSetSelectedFont(Widget w GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- Atom * selection GCC_UNUSED,
- Atom * type,
- XtPointer value,
- unsigned long *length GCC_UNUSED,
- int *format)
-{
- char *val = (char *) value;
- int len;
- if (*type != XA_STRING || *format != 8) {
- Bell(XkbBI_MinorError, 0);
- return;
- }
- len = strlen(val);
- if (len > 0) {
- if (val[len - 1] == '\n')
- val[len - 1] = '\0';
- /* Do some sanity checking to avoid sending a long selection
- back to the server in an OpenFont that is unlikely to succeed.
- XLFD allows up to 255 characters and no control characters;
- we are a little more liberal here. */
- if (len > 1000 || strchr(val, '\n'))
- return;
- if (!xtermLoadFont(term,
- xtermFontName(val),
- True,
- fontMenu_fontsel))
- Bell(XkbBI_MinorError, 0);
- }
-}
-
-void
-FindFontSelection(char *atom_name, Bool justprobe)
-{
- static AtomPtr *atoms;
- static int atomCount = 0;
- AtomPtr *pAtom;
- int a;
- Atom target;
-
- if (!atom_name)
- atom_name = "PRIMARY";
-
- for (pAtom = atoms, a = atomCount; a; a--, pAtom++) {
- if (strcmp(atom_name, XmuNameOfAtom(*pAtom)) == 0)
- break;
- }
- if (!a) {
- atoms = (AtomPtr *) XtRealloc((char *) atoms,
- sizeof(AtomPtr) * (atomCount + 1));
- *(pAtom = &atoms[atomCount++]) = XmuMakeAtom(atom_name);
- }
-
- target = XmuInternAtom(XtDisplay(term), *pAtom);
- if (justprobe) {
- term->screen.MenuFontName(fontMenu_fontsel) =
- XGetSelectionOwner(XtDisplay(term), target) ? _Font_Selected_ : 0;
- } else {
- XtGetSelectionValue((Widget) term, target, XA_STRING,
- DoSetSelectedFont, NULL,
- XtLastTimestampProcessed(XtDisplay(term)));
- }
- return;
-}
-
-void
-set_cursor_gcs(TScreen * screen)
-{
- XGCValues xgcv;
- XtGCMask mask;
- Pixel cc = T_COLOR(screen, TEXT_CURSOR);
- Pixel fg = T_COLOR(screen, TEXT_FG);
- Pixel bg = T_COLOR(screen, TEXT_BG);
- GC new_cursorGC = NULL;
- GC new_cursorFillGC = NULL;
- GC new_reversecursorGC = NULL;
- GC new_cursoroutlineGC = NULL;
-
- /*
- * Let's see, there are three things that have "color":
- *
- * background
- * text
- * cursorblock
- *
- * And, there are four situation when drawing a cursor, if we decide
- * that we like have a solid block of cursor color with the letter
- * that it is highlighting shown in the background color to make it
- * stand out:
- *
- * selected window, normal video - background on cursor
- * selected window, reverse video - foreground on cursor
- * unselected window, normal video - foreground on background
- * unselected window, reverse video - background on foreground
- *
- * Since the last two are really just normalGC and reverseGC, we only
- * need two new GC's. Under monochrome, we get the same effect as
- * above by setting cursor color to foreground.
- */
-
-#if OPT_ISO_COLORS
- /*
- * If we're using ANSI colors, the functions manipulating the SGR code will
- * use the same GC's. To avoid having the cursor change color, we use the
- * Xlib calls rather than the Xt calls.
- *
- * Use the colorMode value to determine which we'll do (the VWindow may
- * not be set before the widget's realized, so it's tested separately).
- */
- if (screen->colorMode) {
- if (VWindow(screen) != 0 && (cc != bg) && (cc != fg)) {
- /* we might have a colored foreground/background later */
- xgcv.font = screen->fnt_norm->fid;
- mask = (GCForeground | GCBackground | GCFont);
- xgcv.foreground = fg;
- xgcv.background = cc;
- new_cursorGC = XCreateGC(screen->display, VWindow(screen), mask, &xgcv);
-
- xgcv.foreground = cc;
- xgcv.background = fg;
- new_cursorFillGC =
- XCreateGC(screen->display, VWindow(screen), mask, &xgcv);
-
- if (screen->always_highlight) {
- new_reversecursorGC = (GC) 0;
- new_cursoroutlineGC = (GC) 0;
- } else {
- xgcv.foreground = bg;
- xgcv.background = cc;
- new_reversecursorGC =
- XCreateGC(screen->display, VWindow(screen), mask, &xgcv);
- xgcv.foreground = cc;
- xgcv.background = bg;
- new_cursoroutlineGC =
- XCreateGC(screen->display, VWindow(screen), mask, &xgcv);
- }
- }
- } else
-#endif
- if (cc != fg && cc != bg) {
- /* we have a colored cursor */
- xgcv.font = screen->fnt_norm->fid;
- mask = (GCForeground | GCBackground | GCFont);
-
- xgcv.foreground = fg;
- xgcv.background = cc;
- new_cursorGC = XtGetGC((Widget) term, mask, &xgcv);
-
- xgcv.foreground = cc;
- xgcv.background = fg;
- new_cursorFillGC = XtGetGC((Widget) term, mask, &xgcv);
-
- if (screen->always_highlight) {
- new_reversecursorGC = (GC) 0;
- new_cursoroutlineGC = (GC) 0;
- } else {
- xgcv.foreground = bg;
- xgcv.background = cc;
- new_reversecursorGC = XtGetGC((Widget) term, mask, &xgcv);
- xgcv.foreground = cc;
- xgcv.background = bg;
- new_cursoroutlineGC = XtGetGC((Widget) term, mask, &xgcv);
- }
- }
-#if OPT_ISO_COLORS
- if (screen->colorMode) {
- if (screen->cursorGC)
- XFreeGC(screen->display, screen->cursorGC);
- if (screen->fillCursorGC)
- XFreeGC(screen->display, screen->fillCursorGC);
- if (screen->reversecursorGC)
- XFreeGC(screen->display, screen->reversecursorGC);
- if (screen->cursoroutlineGC)
- XFreeGC(screen->display, screen->cursoroutlineGC);
- } else
-#endif
- {
- if (screen->cursorGC)
- XtReleaseGC((Widget) term, screen->cursorGC);
- if (screen->fillCursorGC)
- XtReleaseGC((Widget) term, screen->fillCursorGC);
- if (screen->reversecursorGC)
- XtReleaseGC((Widget) term, screen->reversecursorGC);
- if (screen->cursoroutlineGC)
- XtReleaseGC((Widget) term, screen->cursoroutlineGC);
- }
-
- screen->cursorGC = new_cursorGC;
- screen->fillCursorGC = new_cursorFillGC;
- screen->reversecursorGC = new_reversecursorGC;
- screen->cursoroutlineGC = new_cursoroutlineGC;
-}
diff --git a/nx-X11/programs/xterm/charproc.c.NX.original b/nx-X11/programs/xterm/charproc.c.NX.original
deleted file mode 100644
index 78bb9a17d..000000000
--- a/nx-X11/programs/xterm/charproc.c.NX.original
+++ /dev/null
@@ -1,7300 +0,0 @@
-/* $XTermId: charproc.c,v 1.627 2005/11/13 23:10:35 tom Exp $ */
-
-/*
- * $Xorg: charproc.c,v 1.6 2001/02/09 02:06:02 xorgcvs Exp $
- */
-
-/* $XFree86: xc/programs/xterm/charproc.c,v 3.177 2005/11/13 23:10:35 dickey Exp $ */
-
-/*
-
-Copyright 1999-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-Copyright 1988 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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/**************************************************************************/
-/* */
-/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */
-/* */
-/* NX-X11, NX protocol compression and NX extensions to this software */
-/* are copyright of NoMachine. Redistribution and use of the present */
-/* software is allowed according to terms specified in the file LICENSE */
-/* which comes in the source distribution. */
-/* */
-/* Check http://www.nomachine.com/licensing.html for applicability. */
-/* */
-/* NX and NoMachine are trademarks of Medialogic S.p.A. */
-/* */
-/* All rights reserved. */
-/* */
-/**************************************************************************/
-
-/* charproc.c */
-
-#include <version.h>
-#include <xterm.h>
-
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/cursorfont.h>
-#include <X11/Xmu/Atoms.h>
-#include <X11/Xmu/CharSet.h>
-#include <X11/Xmu/Converters.h>
-
-#if OPT_INPUT_METHOD
-
-#if defined(HAVE_LIB_XAW)
-#include <X11/Xaw/XawImP.h>
-#elif defined(HAVE_LIB_XAW3D)
-#include <X11/Xaw3d/XawImP.h>
-#elif defined(HAVE_LIB_NEXTAW)
-#include <X11/neXtaw/XawImP.h>
-#elif defined(HAVE_LIB_XAWPLUS)
-#include <X11/XawPlus/XawImP.h>
-#endif
-
-#endif
-
-#if OPT_WIDE_CHARS
-#include <wcwidth.h>
-#include <precompose.h>
-#ifdef HAVE_LANGINFO_CODESET
-#include <langinfo.h>
-#endif
-#endif
-
-#if OPT_INPUT_METHOD
-#include <X11/Xlocale.h>
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-
-#if defined(HAVE_SCHED_YIELD)
-#include <sched.h>
-#endif
-
-#include <VTparse.h>
-#include <data.h>
-#include <error.h>
-#include <menu.h>
-#include <main.h>
-#include <fontutils.h>
-#include <xcharmouse.h>
-#include <charclass.h>
-#include <xstrings.h>
-
-#if OPT_ZICONBEEP || OPT_TOOLBAR
-#define HANDLE_STRUCT_NOTIFY 1
-#else
-#define HANDLE_STRUCT_NOTIFY 0
-#endif
-
-static IChar doinput(void);
-static int set_character_class(char *s);
-static void FromAlternate(TScreen * screen);
-static void RequestResize(XtermWidget termw, int rows, int cols, int text);
-static void SwitchBufs(TScreen * screen);
-static void ToAlternate(TScreen * screen);
-static void VTallocbuf(void);
-static void WriteText(TScreen * screen,
- PAIRED_CHARS(Char * str, Char * str2),
- Cardinal len);
-static void ansi_modes(XtermWidget termw,
- void (*func) (unsigned *p, unsigned mask));
-static void bitclr(unsigned *p, unsigned mask);
-static void bitcpy(unsigned *p, unsigned q, unsigned mask);
-static void bitset(unsigned *p, unsigned mask);
-static void dpmodes(XtermWidget termw, void (*func) (unsigned *p, unsigned mask));
-static void restoremodes(XtermWidget termw);
-static void savemodes(XtermWidget termw);
-static void unparseputn(unsigned int n, int fd);
-static void window_ops(XtermWidget termw);
-
-#define DoStartBlinking(s) ((s)->cursor_blink ^ (s)->cursor_blink_esc)
-
-#if OPT_BLINK_CURS || OPT_BLINK_TEXT
-static void HandleBlinking(XtPointer closure, XtIntervalId * id);
-static void StartBlinking(TScreen * screen);
-static void StopBlinking(TScreen * screen);
-#else
-#define StartBlinking(screen) /* nothing */
-#define StopBlinking(screen) /* nothing */
-#endif
-
-#if OPT_INPUT_METHOD
-static void PreeditPosition(TScreen * screen);
-#endif
-
-#define DEFAULT -1
-#define BELLSUPPRESSMSEC 200
-
-static int nparam;
-static ANSI reply;
-static int param[NPARAM];
-
-static jmp_buf vtjmpbuf;
-
-/* event handlers */
-static void HandleBell PROTO_XT_ACTIONS_ARGS;
-static void HandleIgnore PROTO_XT_ACTIONS_ARGS;
-static void HandleKeymapChange PROTO_XT_ACTIONS_ARGS;
-static void HandleVisualBell PROTO_XT_ACTIONS_ARGS;
-#if HANDLE_STRUCT_NOTIFY
-static void HandleStructNotify PROTO_XT_EV_HANDLER_ARGS;
-#endif
-
-/*
- * NOTE: VTInitialize zeros out the entire ".screen" component of the
- * XtermWidget, so make sure to add an assignment statement in VTInitialize()
- * for each new ".screen" field added to this resource list.
- */
-
-/* Defaults */
-#if OPT_ISO_COLORS
-
-/*
- * If we default to colorMode enabled, compile-in defaults for the ANSI colors.
- */
-#if DFT_COLORMODE
-#define DFT_COLOR(name) name
-#else
-#define DFT_COLOR(name) XtDefaultForeground
-#endif
-#endif
-
-static char *_Font_Selected_ = "yes"; /* string is arbitrary */
-
-static char defaultTranslations[] =
-"\
- Shift <KeyPress> Prior:scroll-back(1,halfpage) \n\
- Shift <KeyPress> Next:scroll-forw(1,halfpage) \n\
- Shift <KeyPress> Select:select-cursor-start() select-cursor-end(PRIMARY, CUT_BUFFER0) \n\
- Shift <KeyPress> Insert:insert-selection(PRIMARY, CUT_BUFFER0) \n\
-"
-#if OPT_SHIFT_FONTS
-"\
- Shift~Ctrl <KeyPress> KP_Add:larger-vt-font() \n\
- Shift Ctrl <KeyPress> KP_Add:smaller-vt-font() \n\
- Shift <KeyPress> KP_Subtract:smaller-vt-font() \n\
-"
-#endif
-"\
- ~Meta <KeyPress>:insert-seven-bit() \n\
- Meta <KeyPress>:insert-eight-bit() \n\
- !Ctrl <Btn1Down>:popup-menu(mainMenu) \n\
- !Lock Ctrl <Btn1Down>:popup-menu(mainMenu) \n\
- !Lock Ctrl @Num_Lock <Btn1Down>:popup-menu(mainMenu) \n\
- ! @Num_Lock Ctrl <Btn1Down>:popup-menu(mainMenu) \n\
- ~Meta <Btn1Down>:select-start() \n\
- ~Meta <Btn1Motion>:select-extend() \n\
- !Ctrl <Btn2Down>:popup-menu(vtMenu) \n\
- !Lock Ctrl <Btn2Down>:popup-menu(vtMenu) \n\
- !Lock Ctrl @Num_Lock <Btn2Down>:popup-menu(vtMenu) \n\
- ! @Num_Lock Ctrl <Btn2Down>:popup-menu(vtMenu) \n\
- ~Ctrl ~Meta <Btn2Down>:ignore() \n\
- Meta <Btn2Down>:clear-saved-lines() \n\
- ~Ctrl ~Meta <Btn2Up>:insert-selection(PRIMARY, CUT_BUFFER0) \n\
- !Ctrl <Btn3Down>:popup-menu(fontMenu) \n\
- !Lock Ctrl <Btn3Down>:popup-menu(fontMenu) \n\
- !Lock Ctrl @Num_Lock <Btn3Down>:popup-menu(fontMenu) \n\
- ! @Num_Lock Ctrl <Btn3Down>:popup-menu(fontMenu) \n\
- ~Ctrl ~Meta <Btn3Down>:start-extend() \n\
- ~Meta <Btn3Motion>:select-extend() \n\
- Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \n\
- Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \n\
- Lock @Num_Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \n\
- @Num_Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \n\
- <Btn4Down>:scroll-back(5,line,m) \n\
- Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \n\
- Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \n\
- Lock @Num_Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \n\
- @Num_Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \n\
- <Btn5Down>:scroll-forw(5,line,m) \n\
- <BtnUp>:select-end(PRIMARY, CUT_BUFFER0) \n\
- <BtnDown>:ignore() \
-"; /* PROCURA added "Meta <Btn2Down>:clear-saved-lines()" */
-/* *INDENT-OFF* */
-static XtActionsRec actionsList[] = {
- { "allow-send-events", HandleAllowSends },
- { "bell", HandleBell },
- { "clear-saved-lines", HandleClearSavedLines },
- { "create-menu", HandleCreateMenu },
- { "dired-button", DiredButton },
- { "hard-reset", HandleHardReset },
- { "ignore", HandleIgnore },
- { "insert", HandleKeyPressed }, /* alias for insert-seven-bit */
- { "insert-eight-bit", HandleEightBitKeyPressed },
- { "insert-selection", HandleInsertSelection },
- { "insert-seven-bit", HandleKeyPressed },
- { "interpret", HandleInterpret },
- { "keymap", HandleKeymapChange },
- { "popup-menu", HandlePopupMenu },
- { "print", HandlePrintScreen },
- { "print-redir", HandlePrintControlMode },
- { "quit", HandleQuit },
- { "redraw", HandleRedraw },
- { "delete-is-del", HandleDeleteIsDEL },
- { "scroll-back", HandleScrollBack },
- { "scroll-forw", HandleScrollForward },
- { "secure", HandleSecure },
- { "select-cursor-end", HandleKeyboardSelectEnd },
- { "select-cursor-extend", HandleKeyboardSelectExtend },
- { "select-cursor-start", HandleKeyboardSelectStart },
- { "select-end", HandleSelectEnd },
- { "select-extend", HandleSelectExtend },
- { "select-set", HandleSelectSet },
- { "select-start", HandleSelectStart },
- { "send-signal", HandleSendSignal },
- { "set-8-bit-control", Handle8BitControl },
- { "set-allow132", HandleAllow132 },
- { "set-altscreen", HandleAltScreen },
- { "set-appcursor", HandleAppCursor },
- { "set-appkeypad", HandleAppKeypad },
- { "set-autolinefeed", HandleAutoLineFeed },
- { "set-autowrap", HandleAutoWrap },
- { "set-backarrow", HandleBackarrow },
- { "set-cursesemul", HandleCursesEmul },
- { "set-jumpscroll", HandleJumpscroll },
- { "set-old-function-keys", HandleOldFunctionKeys },
- { "set-marginbell", HandleMarginBell },
- { "set-reverse-video", HandleReverseVideo },
- { "set-reversewrap", HandleReverseWrap },
- { "set-scroll-on-key", HandleScrollKey },
- { "set-scroll-on-tty-output", HandleScrollTtyOutput },
- { "set-scrollbar", HandleScrollbar },
- { "set-sun-function-keys", HandleSunFunctionKeys },
- { "set-sun-keyboard", HandleSunKeyboard },
- { "set-titeInhibit", HandleTiteInhibit },
- { "set-visual-bell", HandleSetVisualBell },
- { "set-pop-on-bell", HandleSetPopOnBell },
- { "set-vt-font", HandleSetFont },
- { "soft-reset", HandleSoftReset },
- { "start-cursor-extend", HandleKeyboardStartExtend },
- { "start-extend", HandleStartExtend },
- { "string", HandleStringEvent },
- { "vi-button", ViButton },
- { "visual-bell", HandleVisualBell },
-#ifdef ALLOWLOGGING
- { "set-logging", HandleLogging },
-#endif
-#if OPT_BLINK_CURS
- { "set-cursorblink", HandleCursorBlink },
-#endif
-#if OPT_BOX_CHARS
- { "set-font-linedrawing", HandleFontBoxChars },
-#endif
-#if OPT_DABBREV
- { "dabbrev-expand", HandleDabbrevExpand },
-#endif
-#if OPT_DEC_CHRSET
- { "set-font-doublesize", HandleFontDoublesize },
-#endif
-#if OPT_DEC_SOFTFONT
- { "set-font-loading", HandleFontLoading },
-#endif
-#if OPT_HP_FUNC_KEYS
- { "set-hp-function-keys", HandleHpFunctionKeys },
-#endif
-#if OPT_LOAD_VTFONTS
- { "load-vt-fonts", HandleLoadVTFonts },
-#endif
-#if OPT_MAXIMIZE
- { "deiconify", HandleDeIconify },
- { "iconify", HandleIconify },
- { "maximize", HandleMaximize },
- { "restore", HandleRestoreSize },
-#endif
-#if OPT_NUM_LOCK
- { "alt-sends-escape", HandleAltEsc },
- { "meta-sends-escape", HandleMetaEsc },
- { "set-num-lock", HandleNumLock },
-#endif
-#if OPT_READLINE
- { "readline-button", ReadLineButton },
-#endif
-#if OPT_RENDERFONT
- { "set-render-font", HandleRenderFont },
-#endif
-#if OPT_SCO_FUNC_KEYS
- { "set-sco-function-keys", HandleScoFunctionKeys },
-#endif
-#if OPT_SHIFT_FONTS
- { "larger-vt-font", HandleLargerFont },
- { "smaller-vt-font", HandleSmallerFont },
-#endif
-#if OPT_TEK4014
- { "set-terminal-type", HandleSetTerminalType },
- { "set-visibility", HandleVisibility },
- { "set-tek-text", HandleSetTekText },
- { "tek-page", HandleTekPage },
- { "tek-reset", HandleTekReset },
- { "tek-copy", HandleTekCopy },
-#endif
-#if OPT_TOOLBAR
- { "set-toolbar", HandleToolbar },
-#endif
-#if OPT_WIDE_CHARS
- { "set-utf8-mode", HandleUTF8Mode },
-#endif
-};
-/* *INDENT-ON* */
-
-static XtResource resources[] =
-{
- Bres(XtNallowSendEvents, XtCAllowSendEvents, screen.allowSendEvent0, False),
- Bres(XtNallowWindowOps, XtCAllowWindowOps, screen.allowWindowOp0, True),
- Bres(XtNalwaysHighlight, XtCAlwaysHighlight, screen.always_highlight, False),
- Bres(XtNappcursorDefault, XtCAppcursorDefault, misc.appcursorDefault, False),
- Bres(XtNappkeypadDefault, XtCAppkeypadDefault, misc.appkeypadDefault, False),
- Bres(XtNautoWrap, XtCAutoWrap, misc.autoWrap, True),
- Bres(XtNawaitInput, XtCAwaitInput, screen.awaitInput, False),
- Bres(XtNfreeBoldBox, XtCFreeBoldBox, screen.free_bold_box, False),
- Bres(XtNbackarrowKey, XtCBackarrowKey, screen.backarrow_key, True),
- Bres(XtNbellOnReset, XtCBellOnReset, screen.bellOnReset, True),
- Bres(XtNboldMode, XtCBoldMode, screen.bold_mode, True),
- Bres(XtNbrokenSelections, XtCBrokenSelections, screen.brokenSelections, False),
- Bres(XtNc132, XtCC132, screen.c132, False),
- Bres(XtNcurses, XtCCurses, screen.curses, False),
- Bres(XtNcutNewline, XtCCutNewline, screen.cutNewline, True),
- Bres(XtNcutToBeginningOfLine, XtCCutToBeginningOfLine,
- screen.cutToBeginningOfLine, True),
- Bres(XtNdeleteIsDEL, XtCDeleteIsDEL, screen.delete_is_del, DEFDELETE_DEL),
- Bres(XtNdynamicColors, XtCDynamicColors, misc.dynamicColors, True),
- Bres(XtNeightBitControl, XtCEightBitControl, screen.control_eight_bits, False),
- Bres(XtNeightBitInput, XtCEightBitInput, screen.input_eight_bits, True),
- Bres(XtNeightBitOutput, XtCEightBitOutput, screen.output_eight_bits, True),
- Bres(XtNhighlightSelection, XtCHighlightSelection,
- screen.highlight_selection, False),
- Bres(XtNhpLowerleftBugCompat, XtCHpLowerleftBugCompat, screen.hp_ll_bc, False),
- Bres(XtNi18nSelections, XtCI18nSelections, screen.i18nSelections, True),
- Bres(XtNjumpScroll, XtCJumpScroll, screen.jumpscroll, True),
- Bres(XtNloginShell, XtCLoginShell, misc.login_shell, False),
- Bres(XtNmarginBell, XtCMarginBell, screen.marginbell, False),
- Bres(XtNmetaSendsEscape, XtCMetaSendsEscape, screen.meta_sends_esc, False),
- Bres(XtNmultiScroll, XtCMultiScroll, screen.multiscroll, False),
- Bres(XtNoldXtermFKeys, XtCOldXtermFKeys, screen.old_fkeys, False),
- Bres(XtNpopOnBell, XtCPopOnBell, screen.poponbell, False),
- Bres(XtNprinterAutoClose, XtCPrinterAutoClose, screen.printer_autoclose, False),
- Bres(XtNprinterExtent, XtCPrinterExtent, screen.printer_extent, False),
- Bres(XtNprinterFormFeed, XtCPrinterFormFeed, screen.printer_formfeed, False),
- Bres(XtNreverseVideo, XtCReverseVideo, misc.re_verse, False),
- Bres(XtNreverseWrap, XtCReverseWrap, misc.reverseWrap, False),
- Bres(XtNscrollBar, XtCScrollBar, misc.scrollbar, False),
- Bres(XtNscrollKey, XtCScrollCond, screen.scrollkey, False),
- Bres(XtNscrollTtyOutput, XtCScrollCond, screen.scrollttyoutput, True),
- Bres(XtNsignalInhibit, XtCSignalInhibit, misc.signalInhibit, False),
- Bres(XtNtiteInhibit, XtCTiteInhibit, misc.titeInhibit, False),
- Bres(XtNtiXtraScroll, XtCTiXtraScroll, misc.tiXtraScroll, False),
- Bres(XtNtrimSelection, XtCTrimSelection, screen.trim_selection, False),
- Bres(XtNunderLine, XtCUnderLine, screen.underline, True),
- Bres(XtNvisualBell, XtCVisualBell, screen.visualbell, False),
-
- Ires(XtNbellSuppressTime, XtCBellSuppressTime, screen.bellSuppressTime, BELLSUPPRESSMSEC),
- Ires(XtNinternalBorder, XtCBorderWidth, screen.border, DEFBORDER),
- Ires(XtNlimitResize, XtCLimitResize, misc.limit_resize, 1),
- Ires(XtNmultiClickTime, XtCMultiClickTime, screen.multiClickTime, MULTICLICKTIME),
- Ires(XtNnMarginBell, XtCColumn, screen.nmarginbell, N_MARGINBELL),
- Ires(XtNprinterControlMode, XtCPrinterControlMode,
- screen.printer_controlmode, 0),
- Ires(XtNvisualBellDelay, XtCVisualBellDelay, screen.visualBellDelay, 100),
- Ires(XtNsaveLines, XtCSaveLines, screen.savelines, SAVELINES),
- Ires(XtNscrollBarBorder, XtCScrollBarBorder, screen.scrollBarBorder, 1),
- Ires(XtNscrollLines, XtCScrollLines, screen.scrolllines, SCROLLLINES),
-
- Sres(XtNfont1, XtCFont1, screen.MenuFontName(fontMenu_font1), NULL),
- Sres(XtNfont2, XtCFont2, screen.MenuFontName(fontMenu_font2), NULL),
- Sres(XtNfont3, XtCFont3, screen.MenuFontName(fontMenu_font3), NULL),
- Sres(XtNfont4, XtCFont4, screen.MenuFontName(fontMenu_font4), NULL),
- Sres(XtNfont5, XtCFont5, screen.MenuFontName(fontMenu_font5), NULL),
- Sres(XtNfont6, XtCFont6, screen.MenuFontName(fontMenu_font6), NULL),
- Sres(XtNanswerbackString, XtCAnswerbackString, screen.answer_back, ""),
- Sres(XtNboldFont, XtCBoldFont, misc.default_font.f_b, DEFBOLDFONT),
- Sres(XtNcharClass, XtCCharClass, screen.charClass, NULL),
- Sres(XtNdecTerminalID, XtCDecTerminalID, screen.term_id, DFT_DECID),
- Sres(XtNfont, XtCFont, misc.default_font.f_n, DEFFONT),
- Sres(XtNgeometry, XtCGeometry, misc.geo_metry, NULL),
- Sres(XtNkeyboardDialect, XtCKeyboardDialect, screen.keyboard_dialect, DFT_KBD_DIALECT),
- Sres(XtNprinterCommand, XtCPrinterCommand, screen.printer_command, ""),
- Sres(XtNtekGeometry, XtCGeometry, misc.T_geometry, NULL),
-
- Tres(XtNcursorColor, XtCCursorColor, TEXT_CURSOR, XtDefaultForeground),
- Tres(XtNforeground, XtCForeground, TEXT_FG, XtDefaultForeground),
- Tres(XtNpointerColor, XtCPointerColor, MOUSE_FG, XtDefaultForeground),
- Tres(XtNbackground, XtCBackground, TEXT_BG, XtDefaultBackground),
- Tres(XtNpointerColorBackground, XtCBackground, MOUSE_BG, XtDefaultBackground),
-
- {XtNresizeGravity, XtCResizeGravity, XtRGravity, sizeof(XtGravity),
- XtOffsetOf(XtermWidgetRec, misc.resizeGravity),
- XtRImmediate, (XtPointer) SouthWestGravity},
-
- {XtNpointerShape, XtCCursor, XtRCursor, sizeof(Cursor),
- XtOffsetOf(XtermWidgetRec, screen.pointer_cursor),
- XtRString, (XtPointer) "xterm"},
-
-#ifdef ALLOWLOGGING
- Bres(XtNlogInhibit, XtCLogInhibit, misc.logInhibit, False),
- Bres(XtNlogging, XtCLogging, misc.log_on, False),
- Sres(XtNlogFile, XtCLogfile, screen.logfile, NULL),
-#endif
-
-#ifndef NO_ACTIVE_ICON
- Bres("activeIcon", "ActiveIcon", misc.active_icon, False),
- Ires("iconBorderWidth", XtCBorderWidth, misc.icon_border_width, 2),
- Fres("iconFont", "IconFont", screen.fnt_icon, XtDefaultFont),
- Cres("iconBorderColor", XtCBorderColor, misc.icon_border_pixel, XtDefaultBackground),
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_BLINK_CURS
- Bres(XtNcursorBlink, XtCCursorBlink, screen.cursor_blink, False),
-#endif
-
-#if OPT_BLINK_TEXT
- Bres(XtNshowBlinkAsBold, XtCCursorBlink, screen.blink_as_bold, DEFBLINKASBOLD),
-#endif
-
-#if OPT_BLINK_CURS || OPT_BLINK_TEXT
- Ires(XtNcursorOnTime, XtCCursorOnTime, screen.blink_on, 600),
- Ires(XtNcursorOffTime, XtCCursorOffTime, screen.blink_off, 300),
-#endif
-
-#if OPT_BOX_CHARS
- Bres(XtNforceBoxChars, XtCForceBoxChars, screen.force_box_chars, False),
- Bres(XtNshowMissingGlyphs, XtCShowMissingGlyphs, screen.force_all_chars, False),
-#endif
-
-#if OPT_BROKEN_OSC
- Bres(XtNbrokenLinuxOSC, XtCBrokenLinuxOSC, screen.brokenLinuxOSC, True),
-#endif
-
-#if OPT_BROKEN_ST
- Bres(XtNbrokenStringTerm, XtCBrokenStringTerm, screen.brokenStringTerm, True),
-#endif
-
-#if OPT_C1_PRINT
- Bres(XtNallowC1Printable, XtCAllowC1Printable, screen.c1_printable, False),
-#endif
-
-#if OPT_DEC_CHRSET
- Bres(XtNfontDoublesize, XtCFontDoublesize, screen.font_doublesize, True),
- Ires(XtNcacheDoublesize, XtCCacheDoublesize, screen.cache_doublesize, NUM_CHRSET),
-#endif
-
-#if OPT_HIGHLIGHT_COLOR
- Tres(XtNhighlightColor, XtCHighlightColor, HIGHLIGHT_BG, XtDefaultForeground),
-#endif /* OPT_HIGHLIGHT_COLOR */
-
-#if OPT_INPUT_METHOD
- Bres(XtNopenIm, XtCOpenIm, misc.open_im, True),
- Sres(XtNinputMethod, XtCInputMethod, misc.input_method, NULL),
- Sres(XtNpreeditType, XtCPreeditType, misc.preedit_type,
- "OverTheSpot,Root"),
-#endif
-
-#if OPT_ISO_COLORS
- Bres(XtNboldColors, XtCColorMode, screen.boldColors, True),
- Ires(XtNveryBoldColors, XtCVeryBoldColors, screen.veryBoldColors, 0),
- Bres(XtNcolorMode, XtCColorMode, screen.colorMode, DFT_COLORMODE),
-
- Bres(XtNcolorAttrMode, XtCColorAttrMode, screen.colorAttrMode, False),
- Bres(XtNcolorBDMode, XtCColorAttrMode, screen.colorBDMode, False),
- Bres(XtNcolorBLMode, XtCColorAttrMode, screen.colorBLMode, False),
- Bres(XtNcolorRVMode, XtCColorAttrMode, screen.colorRVMode, False),
- Bres(XtNcolorULMode, XtCColorAttrMode, screen.colorULMode, False),
- Bres(XtNitalicULMode, XtCColorAttrMode, screen.italicULMode, False),
-
- COLOR_RES("0", screen.Acolors[COLOR_0], DFT_COLOR("black")),
- COLOR_RES("1", screen.Acolors[COLOR_1], DFT_COLOR("red3")),
- COLOR_RES("2", screen.Acolors[COLOR_2], DFT_COLOR("green3")),
- COLOR_RES("3", screen.Acolors[COLOR_3], DFT_COLOR("yellow3")),
- COLOR_RES("4", screen.Acolors[COLOR_4], DFT_COLOR(DEF_COLOR4)),
- COLOR_RES("5", screen.Acolors[COLOR_5], DFT_COLOR("magenta3")),
- COLOR_RES("6", screen.Acolors[COLOR_6], DFT_COLOR("cyan3")),
- COLOR_RES("7", screen.Acolors[COLOR_7], DFT_COLOR("gray90")),
- COLOR_RES("8", screen.Acolors[COLOR_8], DFT_COLOR("gray50")),
- COLOR_RES("9", screen.Acolors[COLOR_9], DFT_COLOR("red")),
- COLOR_RES("10", screen.Acolors[COLOR_10], DFT_COLOR("green")),
- COLOR_RES("11", screen.Acolors[COLOR_11], DFT_COLOR("yellow")),
- COLOR_RES("12", screen.Acolors[COLOR_12], DFT_COLOR(DEF_COLOR12)),
- COLOR_RES("13", screen.Acolors[COLOR_13], DFT_COLOR("magenta")),
- COLOR_RES("14", screen.Acolors[COLOR_14], DFT_COLOR("cyan")),
- COLOR_RES("15", screen.Acolors[COLOR_15], DFT_COLOR("white")),
- COLOR_RES("BD", screen.Acolors[COLOR_BD], DFT_COLOR(XtDefaultForeground)),
- COLOR_RES("BL", screen.Acolors[COLOR_BL], DFT_COLOR(XtDefaultForeground)),
- COLOR_RES("UL", screen.Acolors[COLOR_UL], DFT_COLOR(XtDefaultForeground)),
- COLOR_RES("RV", screen.Acolors[COLOR_RV], DFT_COLOR(XtDefaultForeground)),
-
-#if !OPT_COLOR_RES2
-#if OPT_256_COLORS
-# include <256colres.h>
-#elif OPT_88_COLORS
-# include <88colres.h>
-#endif
-#endif /* !OPT_COLOR_RES2 */
-
-#endif /* OPT_ISO_COLORS */
-
-#if OPT_MOD_FKEYS
- Ires(XtNmodifyCursorKeys, XtCModifyCursorKeys,
- keyboard.modify_cursor_keys, 2),
-#endif
-
-#if OPT_NUM_LOCK
- Bres(XtNalwaysUseMods, XtCAlwaysUseMods, misc.alwaysUseMods, False),
- Bres(XtNnumLock, XtCNumLock, misc.real_NumLock, True),
-#endif
-
-#if OPT_PRINT_COLORS
- Ires(XtNprintAttributes, XtCPrintAttributes, screen.print_attributes, 1),
-#endif
-
-#if OPT_SHIFT_FONTS
- Bres(XtNshiftFonts, XtCShiftFonts, misc.shift_fonts, True),
-#endif
-
-#if OPT_SUNPC_KBD
- Ires(XtNctrlFKeys, XtCCtrlFKeys, misc.ctrl_fkeys, 10),
-#endif
-
-#if OPT_TEK4014
- Bres(XtNtekInhibit, XtCTekInhibit, misc.tekInhibit, False),
- Bres(XtNtekSmall, XtCTekSmall, misc.tekSmall, False),
- Bres(XtNtekStartup, XtCTekStartup, screen.TekEmu, False),
-#endif
-
-#if OPT_TOOLBAR
- Wres(XtNmenuBar, XtCMenuBar, VT100_TB_INFO(menu_bar), 0),
- Ires(XtNmenuHeight, XtCMenuHeight, VT100_TB_INFO(menu_height), 25),
-#endif
-
-#if OPT_WIDE_CHARS
- Ires(XtNutf8, XtCUtf8, screen.utf8_mode, uDefault),
- Bres(XtNwideChars, XtCWideChars, screen.wide_chars, False),
- Bres(XtNmkWidth, XtCMkWidth, misc.mk_width, False),
- Bres(XtNcjkWidth, XtCCjkWidth, misc.cjk_width, False),
- Bres(XtNvt100Graphics, XtCVT100Graphics, screen.vt100_graphics, True),
- Sres(XtNwideBoldFont, XtCWideBoldFont, misc.default_font.f_wb, DEFWIDEBOLDFONT),
- Sres(XtNwideFont, XtCWideFont, misc.default_font.f_w, DEFWIDEFONT),
-#endif
-
-#if OPT_LUIT_PROG
- Sres(XtNlocale, XtCLocale, misc.locale_str, "medium"),
- Sres(XtNlocaleFilter, XtCLocaleFilter, misc.localefilter, DEFLOCALEFILTER),
-#endif
-
-#if OPT_INPUT_METHOD
- Sres(XtNximFont, XtCXimFont, misc.f_x, DEFXIMFONT),
-#endif
-
-#if OPT_XMC_GLITCH
- Bres(XtNxmcInline, XtCXmcInline, screen.xmc_inline, False),
- Bres(XtNxmcMoveSGR, XtCXmcMoveSGR, screen.move_sgr_ok, True),
- Ires(XtNxmcAttributes, XtCXmcAttributes, screen.xmc_attributes, 1),
- Ires(XtNxmcGlitch, XtCXmcGlitch, screen.xmc_glitch, 0),
-#endif
-
-#ifdef SCROLLBAR_RIGHT
- Bres(XtNrightScrollBar, XtCRightScrollBar, misc.useRight, False),
-#endif
-
-#if OPT_RENDERFONT
- Dres(XtNfaceSize, XtCFaceSize, misc.face_size, DEFFACESIZE),
- Sres(XtNfaceName, XtCFaceName, misc.face_name, DEFFACENAME),
- Sres(XtNfaceNameDoublesize, XtCFaceNameDoublesize, misc.face_wide_name, DEFFACENAME),
- Bres(XtNrenderFont, XtCRenderFont, misc.render_font, True),
-#endif
-};
-
-static Boolean VTSetValues(Widget cur, Widget request, Widget new_arg,
- ArgList args, Cardinal *num_args);
-static void VTClassInit(void);
-static void VTDestroy(Widget w);
-static void VTExpose(Widget w, XEvent * event, Region region);
-static void VTInitialize(Widget wrequest, Widget new_arg, ArgList args,
- Cardinal *num_args);
-static void VTRealize(Widget w, XtValueMask * valuemask,
- XSetWindowAttributes * values);
-static void VTResize(Widget w);
-
-#if OPT_I18N_SUPPORT && OPT_INPUT_METHOD
-static void VTInitI18N(void);
-#endif
-
-#ifdef VMS
-globaldef {
- "xtermclassrec"
-} noshare
-
-#else
-static
-#endif /* VMS */
-WidgetClassRec xtermClassRec =
-{
- {
-/* core_class fields */
- (WidgetClass) & widgetClassRec, /* superclass */
- "VT100", /* class_name */
- sizeof(XtermWidgetRec), /* widget_size */
- VTClassInit, /* class_initialize */
- NULL, /* class_part_initialize */
- False, /* class_inited */
- VTInitialize, /* initialize */
- NULL, /* initialize_hook */
- VTRealize, /* realize */
- actionsList, /* actions */
- XtNumber(actionsList), /* num_actions */
- resources, /* resources */
- XtNumber(resources), /* num_resources */
- NULLQUARK, /* xrm_class */
- True, /* compress_motion */
- False, /* compress_exposure */
- True, /* compress_enterleave */
- False, /* visible_interest */
- VTDestroy, /* destroy */
- VTResize, /* resize */
- VTExpose, /* expose */
- VTSetValues, /* set_values */
- NULL, /* set_values_hook */
- XtInheritSetValuesAlmost, /* set_values_almost */
- NULL, /* get_values_hook */
- NULL, /* accept_focus */
- XtVersion, /* version */
- NULL, /* callback_offsets */
- defaultTranslations, /* tm_table */
- XtInheritQueryGeometry, /* query_geometry */
- XtInheritDisplayAccelerator, /* display_accelerator */
- NULL /* extension */
- }
-};
-
-#ifdef VMS
-globaldef {
- "xtermwidgetclass"
-}
-noshare
-#endif /* VMS */
-WidgetClass xtermWidgetClass = (WidgetClass) & xtermClassRec;
-
-/*
- * Add input-actions for widgets that are overlooked (scrollbar and toolbar):
- *
- * a) Sometimes the scrollbar passes through translations, sometimes it
- * doesn't. We add the KeyPress translations here, just to be sure.
- * b) In the normal (non-toolbar) configuration, the xterm widget covers
- * almost all of the window. With a toolbar, there's a relatively
- * large area that the user would expect to enter keystrokes since the
- * program can get the focus.
- */
-void
-xtermAddInput(Widget w)
-{
-#if OPT_TOOLBAR
- /* *INDENT-OFF* */
- XtActionsRec input_actions[] = {
- { "insert", HandleKeyPressed }, /* alias */
- { "insert-eight-bit", HandleEightBitKeyPressed },
- { "insert-seven-bit", HandleKeyPressed },
- { "secure", HandleSecure },
- { "string", HandleStringEvent },
- { "scroll-back", HandleScrollBack },
- { "scroll-forw", HandleScrollForward },
- { "select-cursor-end", HandleKeyboardSelectEnd },
- { "select-cursor-extend", HandleKeyboardSelectExtend },
- { "select-cursor-start", HandleKeyboardSelectStart },
- { "insert-selection", HandleInsertSelection },
- { "select-start", HandleSelectStart },
- { "select-extend", HandleSelectExtend },
- { "start-extend", HandleStartExtend },
- { "select-end", HandleSelectEnd },
- { "clear-saved-lines", HandleClearSavedLines },
- { "popup-menu", HandlePopupMenu },
- { "bell", HandleBell },
- { "ignore", HandleIgnore },
-#if OPT_DABBREV
- { "dabbrev-expand", HandleDabbrevExpand },
-#endif
-#if OPT_SHIFT_FONTS
- { "larger-vt-font", HandleLargerFont },
- { "smaller-vt-font", HandleSmallerFont },
-#endif
- };
- /* *INDENT-ON* */
-
- XtAppAddActions(app_con, input_actions, XtNumber(input_actions));
-#endif
- XtAugmentTranslations(w, XtParseTranslationTable(defaultTranslations));
-}
-
-#if OPT_ISO_COLORS
-/*
- * The terminal's foreground and background colors are set via two mechanisms:
- * text (cur_foreground, cur_background values that are passed down to
- * XDrawImageString and XDrawString)
- * area (X11 graphics context used in XClearArea and XFillRectangle)
- */
-void
-SGR_Foreground(int color)
-{
- TScreen *screen = &term->screen;
- Pixel fg;
-
- if (color >= 0) {
- term->flags |= FG_COLOR;
- } else {
- term->flags &= ~FG_COLOR;
- }
- fg = getXtermForeground(term->flags, color);
- term->cur_foreground = color;
-
- XSetForeground(screen->display, NormalGC(screen), fg);
- XSetBackground(screen->display, ReverseGC(screen), fg);
-
- if (NormalGC(screen) != NormalBoldGC(screen)) {
- XSetForeground(screen->display, NormalBoldGC(screen), fg);
- XSetBackground(screen->display, ReverseBoldGC(screen), fg);
- }
-}
-
-void
-SGR_Background(int color)
-{
- TScreen *screen = &term->screen;
- Pixel bg;
-
- /*
- * An indexing operation may have set screen->scroll_amt, which would
- * normally result in calling FlushScroll() in WriteText(). However,
- * if we're changing the background color now, then the new value
- * should not apply to the pending blank lines.
- */
- if (screen->scroll_amt && (color != term->cur_background))
- FlushScroll(screen);
-
- if (color >= 0) {
- term->flags |= BG_COLOR;
- } else {
- term->flags &= ~BG_COLOR;
- }
- bg = getXtermBackground(term->flags, color);
- term->cur_background = color;
-
- XSetBackground(screen->display, NormalGC(screen), bg);
- XSetForeground(screen->display, ReverseGC(screen), bg);
-
- if (NormalGC(screen) != NormalBoldGC(screen)) {
- XSetBackground(screen->display, NormalBoldGC(screen), bg);
- XSetForeground(screen->display, ReverseBoldGC(screen), bg);
- }
-}
-
-/* Invoked after updating bold/underline flags, computes the extended color
- * index to use for foreground. (See also 'extract_fg()').
- */
-static void
-setExtendedFG(void)
-{
- int fg = term->sgr_foreground;
-
- if (term->screen.colorAttrMode
- || (fg < 0)) {
- if (term->screen.colorULMode && (term->flags & UNDERLINE))
- fg = COLOR_UL;
- if (term->screen.colorBDMode && (term->flags & BOLD))
- fg = COLOR_BD;
- if (term->screen.colorBLMode && (term->flags & BLINK))
- fg = COLOR_BL;
- }
-
- /* This implements the IBM PC-style convention of 8-colors, with one
- * bit for bold, thus mapping the 0-7 codes to 8-15. It won't make
- * much sense for 16-color applications, but we keep it to retain
- * compatiblity with ANSI-color applications.
- */
-#if OPT_PC_COLORS /* XXXJTL should be settable at runtime (resource or OSC?) */
- if (term->screen.boldColors
- && (!term->sgr_extended)
- && (fg >= 0)
- && (fg < 8)
- && (term->flags & BOLD))
- fg |= 8;
-#endif
-
- SGR_Foreground(fg);
-}
-
-/* Invoked after updating inverse flag, computes the extended color
- * index to use for background. (See also 'extract_bg()').
- */
-static void
-setExtendedBG(void)
-{
- int bg = term->sgr_background;
-
- if (term->screen.colorAttrMode
- || (bg < 0)) {
- if (term->screen.colorRVMode && (term->flags & INVERSE))
- bg = COLOR_RV;
- }
-
- SGR_Background(bg);
-}
-
-static void
-reset_SGR_Foreground(void)
-{
- term->sgr_foreground = -1;
- term->sgr_extended = 0;
- setExtendedFG();
-}
-
-static void
-reset_SGR_Background(void)
-{
- term->sgr_background = -1;
- setExtendedBG();
-}
-
-static void
-reset_SGR_Colors(void)
-{
- reset_SGR_Foreground();
- reset_SGR_Background();
-}
-#endif /* OPT_ISO_COLORS */
-
-void
-resetCharsets(TScreen * screen)
-{
- TRACE(("resetCharsets\n"));
-
- screen->gsets[0] = 'B'; /* ASCII_G */
- screen->gsets[1] = 'B'; /* ASCII_G */
- screen->gsets[2] = 'B'; /* ASCII_G */
- screen->gsets[3] = 'B'; /* ASCII_G */
-
- screen->curgl = 0; /* G0 => GL. */
- screen->curgr = 2; /* G2 => GR. */
- screen->curss = 0; /* No single shift. */
-
-#if OPT_VT52_MODE
- if (screen->vtXX_level == 0)
- screen->gsets[1] = '0'; /* Graphics */
-#endif
-}
-
-/*
- * VT300 and up support three ANSI conformance levels, defined according to
- * the dpANSI X3.134.1 standard. DEC's manuals equate levels 1 and 2, and
- * are unclear. This code is written based on the manuals.
- */
-static void
-set_ansi_conformance(TScreen * screen, int level)
-{
- TRACE(("set_ansi_conformance(%d) terminal_id %d, ansi_level %d\n",
- level,
- screen->terminal_id,
- screen->ansi_level));
- if (screen->vtXX_level >= 3) {
- switch (screen->ansi_level = level) {
- case 1:
- /* FALLTHRU */
- case 2:
- screen->gsets[0] = 'B'; /* G0 is ASCII */
- screen->gsets[1] = 'B'; /* G1 is ISO Latin-1 (FIXME) */
- screen->curgl = 0;
- screen->curgr = 1;
- break;
- case 3:
- screen->gsets[0] = 'B'; /* G0 is ASCII */
- screen->curgl = 0;
- break;
- }
- }
-}
-
-/*
- * Set scrolling margins. VTxxx terminals require that the top/bottom are
- * different, so we have at least two lines in the scrolling region.
- */
-void
-set_tb_margins(TScreen * screen, int top, int bottom)
-{
- TRACE(("set_tb_margins %d..%d, prior %d..%d\n",
- top, bottom,
- screen->top_marg,
- screen->bot_marg));
- if (bottom > top) {
- screen->top_marg = top;
- screen->bot_marg = bottom;
- }
- if (screen->top_marg > screen->max_row)
- screen->top_marg = screen->max_row;
- if (screen->bot_marg > screen->max_row)
- screen->bot_marg = screen->max_row;
-}
-
-void
-set_max_col(TScreen * screen, int cols)
-{
- TRACE(("set_max_col %d, prior %d\n", cols, screen->max_col));
- if (cols < 0)
- cols = 0;
- screen->max_col = cols;
-}
-
-void
-set_max_row(TScreen * screen, int rows)
-{
- TRACE(("set_max_row %d, prior %d\n", rows, screen->max_row));
- if (rows < 0)
- rows = 0;
- screen->max_row = rows;
-}
-
-#if OPT_TRACE
-#define WHICH_TABLE(name) if (table == name) result = #name
-static char *
-which_table(Const PARSE_T * table)
-{
- char *result = "?";
- /* *INDENT-OFF* */
- WHICH_TABLE (ansi_table);
- else WHICH_TABLE (csi_table);
- else WHICH_TABLE (csi2_table);
- else WHICH_TABLE (csi_ex_table);
- else WHICH_TABLE (csi_quo_table);
-#if OPT_DEC_LOCATOR
- else WHICH_TABLE (csi_tick_table);
-#endif
-#if OPT_DEC_RECTOPS
- else WHICH_TABLE (csi_dollar_table);
- else WHICH_TABLE (csi_star_table);
-#endif
- else WHICH_TABLE (dec_table);
- else WHICH_TABLE (dec2_table);
- else WHICH_TABLE (dec3_table);
- else WHICH_TABLE (cigtable);
- else WHICH_TABLE (eigtable);
- else WHICH_TABLE (esc_table);
- else WHICH_TABLE (esc_sp_table);
- else WHICH_TABLE (scrtable);
- else WHICH_TABLE (scstable);
- else WHICH_TABLE (sos_table);
-#if OPT_WIDE_CHARS
- else WHICH_TABLE (esc_pct_table);
-#endif
-#if OPT_VT52_MODE
- else WHICH_TABLE (vt52_table);
- else WHICH_TABLE (vt52_esc_table);
- else WHICH_TABLE (vt52_ignore_table);
-#endif
- /* *INDENT-ON* */
-
- return result;
-}
-#endif
-
- /* allocate larger buffer if needed/possible */
-#define SafeAlloc(type, area, used, size) \
- type *new_string = area; \
- unsigned new_length = size; \
- if (new_length == 0) { \
- new_length = 256; \
- new_string = TypeMallocN(type, new_length); \
- } else if (used+1 >= new_length) { \
- new_length = size * 2; \
- new_string = TypeMallocN(type, new_length); \
- if (new_string != 0 \
- && area != 0 \
- && used != 0) \
- memcpy(new_string, area, used * sizeof(type)); \
- }
-
-#define WriteNow() { \
- unsigned single = 0; \
- \
- if (screen->curss) { \
- dotext(screen, \
- screen->gsets[(int) (screen->curss)], \
- print_area, 1); \
- screen->curss = 0; \
- single++; \
- } \
- if (print_used > single) { \
- dotext(screen, \
- screen->gsets[(int) (screen->curgl)], \
- print_area + single, \
- print_used - single); \
- } \
- print_used = 0; \
- } \
-
-struct ParseState {
-#if OPT_VT52_MODE
- Bool vt52_cup;
-#endif
- Const PARSE_T *groundtable;
- Const PARSE_T *parsestate;
- int scstype;
- Bool private_function; /* distinguish private-mode from standard */
- int string_mode; /* nonzero iff we're processing a string */
- int lastchar; /* positive iff we had a graphic character */
- int nextstate;
-#if OPT_WIDE_CHARS
- int last_was_wide;
-#endif
-};
-
-static struct ParseState myState;
-
-static Boolean
-doparsing(unsigned c, struct ParseState *sp)
-{
- /* Buffer for processing printable text */
- static IChar *print_area;
- static size_t print_size, print_used;
-
- /* Buffer for processing strings (e.g., OSC ... ST) */
- static Char *string_area;
- static size_t string_size, string_used;
-
- TScreen *screen = &term->screen;
- int row;
- int col;
- int top;
- int bot;
- int count;
- int laststate;
- int thischar = -1;
- XTermRect myRect;
-
- do {
-#if OPT_WIDE_CHARS
-
- /*
- * Handle zero-width combining characters. Make it faster by noting
- * that according to the Unicode charts, the majority of Western
- * character sets do not use this feature. There are some unassigned
- * codes at 0x242, but no zero-width characters until past 0x300.
- */
- if (c >= 0x300 && screen->wide_chars
- && my_wcwidth((int) c) == 0) {
- int prev, precomposed;
-
- WriteNow();
-
- prev = getXtermCell(screen,
- screen->last_written_row,
- screen->last_written_col);
- precomposed = do_precomposition(prev, (int) c);
-
- if (precomposed != -1) {
- putXtermCell(screen,
- screen->last_written_row,
- screen->last_written_col, precomposed);
- } else {
- addXtermCombining(screen,
- screen->last_written_row,
- screen->last_written_col, c);
- }
- if (!screen->scroll_amt)
- ScrnUpdate(screen,
- screen->last_written_row,
- screen->last_written_col, 1, 1, 1);
- continue;
- }
-#endif
-
- /* Intercept characters for printer controller mode */
- if (screen->printer_controlmode == 2) {
- if ((c = xtermPrinterControl((int) c)) == 0)
- continue;
- }
-
- /*
- * VT52 is a little ugly in the one place it has a parameterized
- * control sequence, since the parameter falls after the character
- * that denotes the type of sequence.
- */
-#if OPT_VT52_MODE
- if (sp->vt52_cup) {
- if (nparam < NPARAM)
- param[nparam++] = (c & 0x7f) - 32;
- if (nparam < 2)
- continue;
- sp->vt52_cup = False;
- if ((row = param[0]) < 0)
- row = 0;
- if ((col = param[1]) < 0)
- col = 0;
- CursorSet(screen, row, col, term->flags);
- sp->parsestate = vt52_table;
- param[0] = 0;
- param[1] = 0;
- continue;
- }
-#endif
-
- /*
- * The parsing tables all have 256 entries. If we're supporting
- * wide characters, we handle them by treating them the same as
- * printing characters.
- */
- laststate = sp->nextstate;
-#if OPT_WIDE_CHARS
- if (c > 255) {
- if (sp->parsestate == sp->groundtable) {
- sp->nextstate = CASE_PRINT;
- } else if (sp->parsestate == sos_table) {
- c &= 0xffff;
- if (c > 255) {
- TRACE(("Found code > 255 while in SOS state: %04X\n", c));
- c = '?';
- }
- } else {
- sp->nextstate = CASE_GROUND_STATE;
- }
- } else
-#endif
- sp->nextstate = sp->parsestate[E2A(c)];
-
-#if OPT_BROKEN_OSC
- /*
- * Linux console palette escape sequences start with an OSC, but do
- * not terminate correctly. Some scripts do not check before writing
- * them, making xterm appear to hang (it's awaiting a valid string
- * terminator). Just ignore these if we see them - there's no point
- * in emulating bad code.
- */
- if (screen->brokenLinuxOSC
- && sp->parsestate == sos_table) {
- if (string_used) {
- switch (string_area[0]) {
- case 'P':
- if (string_used <= 7)
- break;
- /* FALLTHRU */
- case 'R':
- sp->parsestate = sp->groundtable;
- sp->nextstate = sp->parsestate[E2A(c)];
- TRACE(("Reset to ground state (brokenLinuxOSC)\n"));
- break;
- }
- }
- }
-#endif
-
-#if OPT_BROKEN_ST
- /*
- * Before patch #171, carriage control embedded within an OSC string
- * would terminate it. Some (buggy, of course) applications rely on
- * this behavior. Accommodate them by allowing one to compile xterm
- * and emulate the old behavior.
- */
- if (screen->brokenStringTerm
- && sp->parsestate == sos_table
- && c < 32) {
- switch (c) {
- case 5: /* FALLTHRU */
- case 8: /* FALLTHRU */
- case 9: /* FALLTHRU */
- case 10: /* FALLTHRU */
- case 11: /* FALLTHRU */
- case 12: /* FALLTHRU */
- case 13: /* FALLTHRU */
- case 14: /* FALLTHRU */
- case 15: /* FALLTHRU */
- case 24:
- sp->parsestate = sp->groundtable;
- sp->nextstate = sp->parsestate[E2A(c)];
- TRACE(("Reset to ground state (brokenStringTerm)\n"));
- break;
- }
- }
-#endif
-
-#if OPT_C1_PRINT
- /*
- * This is not completely foolproof, but will allow an application
- * with values in the C1 range to use them as printable characters,
- * provided that they are not intermixed with an escape sequence.
- */
- if (screen->c1_printable
- && (c >= 128 && c < 160)) {
- sp->nextstate = (sp->parsestate == esc_table
- ? CASE_ESC_IGNORE
- : sp->parsestate[E2A(160)]);
- }
-#endif
-
-#if OPT_WIDE_CHARS
- /*
- * If we have a C1 code and the c1_printable flag is not set, simply
- * ignore it when it was translated from UTF-8. That is because the
- * value could not have been present as-is in the UTF-8.
- *
- * To see that CASE_IGNORE is a consistent value, note that it is
- * always used for NUL and other uninteresting C0 controls.
- */
-#if OPT_C1_PRINT
- if (!screen->c1_printable)
-#endif
- if (screen->wide_chars
- && (c >= 128 && c < 160)) {
- sp->nextstate = CASE_IGNORE;
- }
-
- /*
- * If this character is a different width than the last one, put the
- * previous text into the buffer and draw it now.
- */
- if (iswide((int) c) != sp->last_was_wide) {
- WriteNow();
- }
-#endif
-
- /*
- * Accumulate string for printable text. This may be 8/16-bit
- * characters.
- */
- if (sp->nextstate == CASE_PRINT) {
- SafeAlloc(IChar, print_area, print_used, print_size);
- if (new_string == 0) {
- fprintf(stderr,
- "Cannot allocate %u bytes for printable text\n",
- new_length);
- continue;
- }
-#if OPT_VT52_MODE
- /*
- * Strip output text to 7-bits for VT52. We should do this for
- * VT100 also (which is a 7-bit device), but xterm has been
- * doing this for so long we shouldn't change this behavior.
- */
- if (screen->vtXX_level < 1)
- c &= 0x7f;
-#endif
- print_area = new_string;
- print_size = new_length;
- print_area[print_used++] = sp->lastchar = thischar = c;
-#if OPT_WIDE_CHARS
- sp->last_was_wide = iswide((int) c);
-#endif
- if (morePtyData(screen, VTbuffer)) {
- continue;
- }
- }
-
- if (sp->nextstate == CASE_PRINT
- || (laststate == CASE_PRINT && print_used)) {
- WriteNow();
- }
-
- /*
- * Accumulate string for APC, DCS, PM, OSC, SOS controls
- * This should always be 8-bit characters.
- */
- if (sp->parsestate == sos_table) {
- SafeAlloc(Char, string_area, string_used, string_size);
- if (new_string == 0) {
- fprintf(stderr,
- "Cannot allocate %u bytes for string mode %d\n",
- new_length, sp->string_mode);
- continue;
- }
-#if OPT_WIDE_CHARS
- /*
- * We cannot display codes above 255, but let's try to
- * accommodate the application a little by not aborting the
- * string.
- */
- if ((c & 0xffff) > 255) {
- sp->nextstate = CASE_PRINT;
- c = '?';
- }
-#endif
- string_area = new_string;
- string_size = new_length;
- string_area[string_used++] = c;
- } else if (sp->parsestate != esc_table) {
- /* if we were accumulating, we're not any more */
- sp->string_mode = 0;
- string_used = 0;
- }
-
- TRACE(("parse %04X -> %d %s\n", c, sp->nextstate, which_table(sp->parsestate)));
-
- switch (sp->nextstate) {
- case CASE_PRINT:
- TRACE(("CASE_PRINT - printable characters\n"));
- break;
-
- case CASE_GROUND_STATE:
- TRACE(("CASE_GROUND_STATE - exit ignore mode\n"));
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_IGNORE:
- TRACE(("CASE_IGNORE - Ignore character %02X\n", c));
- break;
-
- case CASE_ENQ:
- TRACE(("CASE_ENQ - answerback\n"));
- for (count = 0; screen->answer_back[count] != 0; count++)
- unparseputc(screen->answer_back[count], screen->respond);
- break;
-
- case CASE_BELL:
- TRACE(("CASE_BELL - bell\n"));
- if (sp->string_mode == OSC) {
- if (string_used)
- string_area[--string_used] = '\0';
- do_osc(string_area, string_used, (int) c);
- sp->parsestate = sp->groundtable;
- } else {
- /* bell */
- Bell(XkbBI_TerminalBell, 0);
- }
- break;
-
- case CASE_BS:
- TRACE(("CASE_BS - backspace\n"));
- CursorBack(screen, 1);
- break;
-
- case CASE_CR:
- /* CR */
- CarriageReturn(screen);
- break;
-
- case CASE_ESC:
- if_OPT_VT52_MODE(screen, {
- sp->parsestate = vt52_esc_table;
- break;
- });
- sp->parsestate = esc_table;
- break;
-
-#if OPT_VT52_MODE
- case CASE_VT52_CUP:
- TRACE(("CASE_VT52_CUP - VT52 cursor addressing\n"));
- sp->vt52_cup = True;
- nparam = 0;
- break;
-
- case CASE_VT52_IGNORE:
- TRACE(("CASE_VT52_IGNORE - VT52 ignore-character\n"));
- sp->parsestate = vt52_ignore_table;
- break;
-#endif
-
- case CASE_VMOT:
- /*
- * form feed, line feed, vertical tab
- */
- xtermAutoPrint((int) c);
- xtermIndex(screen, 1);
- if (term->flags & LINEFEED)
- CarriageReturn(screen);
- do_xevents();
- break;
-
- case CASE_CBT:
- /* cursor backward tabulation */
- if ((count = param[0]) == DEFAULT)
- count = 1;
- while ((count-- > 0)
- && (TabToPrevStop(screen))) ;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CHT:
- /* cursor forward tabulation */
- if ((count = param[0]) == DEFAULT)
- count = 1;
- while ((count-- > 0)
- && (TabToNextStop(screen))) ;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_TAB:
- /* tab */
- TabToNextStop(screen);
- break;
-
- case CASE_SI:
- screen->curgl = 0;
- if_OPT_VT52_MODE(screen, {
- sp->parsestate = sp->groundtable;
- });
- break;
-
- case CASE_SO:
- screen->curgl = 1;
- if_OPT_VT52_MODE(screen, {
- sp->parsestate = sp->groundtable;
- });
- break;
-
- case CASE_DECDHL:
- xterm_DECDHL(c == '3');
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSWL:
- xterm_DECSWL();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECDWL:
- xterm_DECDWL();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SCR_STATE:
- /* enter scr state */
- sp->parsestate = scrtable;
- break;
-
- case CASE_SCS0_STATE:
- /* enter scs state 0 */
- sp->scstype = 0;
- sp->parsestate = scstable;
- break;
-
- case CASE_SCS1_STATE:
- /* enter scs state 1 */
- sp->scstype = 1;
- sp->parsestate = scstable;
- break;
-
- case CASE_SCS2_STATE:
- /* enter scs state 2 */
- sp->scstype = 2;
- sp->parsestate = scstable;
- break;
-
- case CASE_SCS3_STATE:
- /* enter scs state 3 */
- sp->scstype = 3;
- sp->parsestate = scstable;
- break;
-
- case CASE_ESC_IGNORE:
- /* unknown escape sequence */
- sp->parsestate = eigtable;
- break;
-
- case CASE_ESC_DIGIT:
- /* digit in csi or dec mode */
- if ((row = param[nparam - 1]) == DEFAULT)
- row = 0;
- param[nparam - 1] = 10 * row + (c - '0');
- if (param[nparam - 1] > 65535)
- param[nparam - 1] = 65535;
- if (sp->parsestate == csi_table)
- sp->parsestate = csi2_table;
- break;
-
- case CASE_ESC_SEMI:
- /* semicolon in csi or dec mode */
- if (nparam < NPARAM)
- param[nparam++] = DEFAULT;
- if (sp->parsestate == csi_table)
- sp->parsestate = csi2_table;
- break;
-
- case CASE_DEC_STATE:
- /* enter dec mode */
- sp->parsestate = dec_table;
- break;
-
- case CASE_DEC2_STATE:
- /* enter dec2 mode */
- sp->parsestate = dec2_table;
- break;
-
- case CASE_DEC3_STATE:
- /* enter dec3 mode */
- sp->parsestate = dec3_table;
- break;
-
- case CASE_ICH:
- TRACE(("CASE_ICH - insert char\n"));
- if ((row = param[0]) < 1)
- row = 1;
- InsertChar(screen, (unsigned) row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUU:
- TRACE(("CASE_CUU - cursor up\n"));
- if ((row = param[0]) < 1)
- row = 1;
- CursorUp(screen, row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUD:
- TRACE(("CASE_CUD - cursor down\n"));
- if ((row = param[0]) < 1)
- row = 1;
- CursorDown(screen, row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUF:
- TRACE(("CASE_CUF - cursor forward\n"));
- if ((col = param[0]) < 1)
- col = 1;
- CursorForward(screen, col);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUB:
- TRACE(("CASE_CUB - cursor backward\n"));
- if ((col = param[0]) < 1)
- col = 1;
- CursorBack(screen, col);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUP:
- TRACE(("CASE_CUP - cursor position\n"));
- if_OPT_XMC_GLITCH(screen, {
- Jump_XMC(screen);
- });
- if ((row = param[0]) < 1)
- row = 1;
- if (nparam < 2 || (col = param[1]) < 1)
- col = 1;
- CursorSet(screen, row - 1, col - 1, term->flags);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_VPA:
- TRACE(("CASE_VPA - vertical position\n"));
- if ((row = param[0]) < 1)
- row = 1;
- CursorSet(screen, row - 1, screen->cur_col, term->flags);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_HPA:
- TRACE(("CASE_HPA - horizontal position\n"));
- if ((col = param[0]) < 1)
- col = 1;
- CursorSet(screen, screen->cur_row, col - 1, term->flags);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_HP_BUGGY_LL:
- TRACE(("CASE_HP_BUGGY_LL\n"));
- /* Some HP-UX applications have the bug that they
- assume ESC F goes to the lower left corner of
- the screen, regardless of what terminfo says. */
- if (screen->hp_ll_bc)
- CursorSet(screen, screen->max_row, 0, term->flags);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ED:
- TRACE(("CASE_ED - erase display\n"));
- do_erase_display(screen, param[0], OFF_PROTECT);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_EL:
- TRACE(("CASE_EL - erase line\n"));
- do_erase_line(screen, param[0], OFF_PROTECT);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ECH:
- TRACE(("CASE_ECH - erase char\n"));
- /* ECH */
- ClearRight(screen, param[0] < 1 ? 1 : param[0]);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_IL:
- TRACE(("CASE_IL - insert line\n"));
- if ((row = param[0]) < 1)
- row = 1;
- InsertLine(screen, row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DL:
- TRACE(("CASE_DL - delete line\n"));
- if ((row = param[0]) < 1)
- row = 1;
- DeleteLine(screen, row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DCH:
- TRACE(("CASE_DCH - delete char\n"));
- if ((row = param[0]) < 1)
- row = 1;
- DeleteChar(screen, (unsigned) row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_TRACK_MOUSE:
- /*
- * A single parameter other than zero is always scroll-down.
- * A zero-parameter is used to reset the mouse mode, and is
- * not useful for scrolling anyway.
- */
- if (nparam > 1 || param[0] == 0) {
- TRACE(("CASE_TRACK_MOUSE\n"));
- /* Track mouse as long as in window and between
- * specified rows
- */
- TrackMouse(param[0],
- param[2] - 1, param[1] - 1,
- param[3] - 1, param[4] - 2);
- } else {
- TRACE(("CASE_SD - scroll down\n"));
- /* SD */
- if ((count = param[0]) < 1)
- count = 1;
- RevScroll(screen, count);
- do_xevents();
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECID:
- TRACE(("CASE_DECID\n"));
- if_OPT_VT52_MODE(screen, {
- unparseputc(ESC, screen->respond);
- unparseputc('/', screen->respond);
- unparseputc('Z', screen->respond);
- sp->parsestate = sp->groundtable;
- break;
- });
- param[0] = DEFAULT; /* Default ID parameter */
- /* FALLTHRU */
- case CASE_DA1:
- TRACE(("CASE_DA1\n"));
- if (param[0] <= 0) { /* less than means DEFAULT */
- count = 0;
- reply.a_type = CSI;
- reply.a_pintro = '?';
-
- /* The first param corresponds to the highest
- * operating level (i.e., service level) of the
- * emulation. A DEC terminal can be setup to
- * respond with a different DA response, but
- * there's no control sequence that modifies this.
- * We set it via a resource.
- */
- if (screen->terminal_id < 200) {
- switch (screen->terminal_id) {
- case 102:
- reply.a_param[count++] = 6; /* VT102 */
- break;
- case 101:
- reply.a_param[count++] = 1; /* VT101 */
- reply.a_param[count++] = 0; /* no options */
- break;
- default: /* VT100 */
- reply.a_param[count++] = 1; /* VT100 */
- reply.a_param[count++] = 2; /* AVO */
- break;
- }
- } else {
- reply.a_param[count++] = 60 + screen->terminal_id / 100;
- reply.a_param[count++] = 1; /* 132-columns */
- reply.a_param[count++] = 2; /* printer */
- reply.a_param[count++] = 6; /* selective-erase */
-#if OPT_SUNPC_KBD
- if (term->keyboard.type == keyboardIsVT220)
-#endif
- reply.a_param[count++] = 8; /* user-defined-keys */
- reply.a_param[count++] = 9; /* national replacement charsets */
- reply.a_param[count++] = 15; /* technical characters */
- if_OPT_ISO_COLORS(screen, {
- reply.a_param[count++] = 22; /* ANSI color, VT525 */
- });
-#if OPT_DEC_LOCATOR
- reply.a_param[count++] = 29; /* ANSI text locator */
-#endif
- }
- reply.a_nparam = count;
- reply.a_inters = 0;
- reply.a_final = 'c';
- unparseseq(&reply, screen->respond);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DA2:
- TRACE(("CASE_DA2\n"));
- if (param[0] <= 0) { /* less than means DEFAULT */
- count = 0;
- reply.a_type = CSI;
- reply.a_pintro = '>';
-
- if (screen->terminal_id >= 200)
- reply.a_param[count++] = 1; /* VT220 */
- else
- reply.a_param[count++] = 0; /* VT100 (nonstandard) */
- reply.a_param[count++] = XTERM_PATCH; /* Version */
- reply.a_param[count++] = 0; /* options (none) */
- reply.a_nparam = count;
- reply.a_inters = 0;
- reply.a_final = 'c';
- unparseseq(&reply, screen->respond);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECRPTUI:
- TRACE(("CASE_DECRPTUI\n"));
- if ((screen->terminal_id >= 400)
- && (param[0] <= 0)) { /* less than means DEFAULT */
- unparseputc1(DCS, screen->respond);
- unparseputc('!', screen->respond);
- unparseputc('|', screen->respond);
- unparseputc('0', screen->respond);
- unparseputc1(ST, screen->respond);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_TBC:
- TRACE(("CASE_TBC - tab clear\n"));
- if ((row = param[0]) <= 0) /* less than means default */
- TabClear(term->tabs, screen->cur_col);
- else if (row == 3)
- TabZonk(term->tabs);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SET:
- TRACE(("CASE_SET - set mode\n"));
- ansi_modes(term, bitset);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_RST:
- TRACE(("CASE_RST - reset mode\n"));
- ansi_modes(term, bitclr);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SGR:
- for (row = 0; row < nparam; ++row) {
- if_OPT_XMC_GLITCH(screen, {
- Mark_XMC(screen, param[row]);
- });
- TRACE(("CASE_SGR %d\n", param[row]));
- switch (param[row]) {
- case DEFAULT:
- case 0:
- term->flags &=
- ~(INVERSE | BOLD | BLINK | UNDERLINE | INVISIBLE);
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Colors();
- });
- break;
- case 1: /* Bold */
- term->flags |= BOLD;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 5: /* Blink */
- term->flags |= BLINK;
- StartBlinking(screen);
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 4: /* Underscore */
- term->flags |= UNDERLINE;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 7:
- term->flags |= INVERSE;
- if_OPT_ISO_COLORS(screen, {
- setExtendedBG();
- });
- break;
- case 8:
- term->flags |= INVISIBLE;
- break;
- case 22: /* reset 'bold' */
- term->flags &= ~BOLD;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 24:
- term->flags &= ~UNDERLINE;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 25: /* reset 'blink' */
- term->flags &= ~BLINK;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 27:
- term->flags &= ~INVERSE;
- if_OPT_ISO_COLORS(screen, {
- setExtendedBG();
- });
- break;
- case 28:
- term->flags &= ~INVISIBLE;
- break;
- case 30:
- case 31:
- case 32:
- case 33:
- case 34:
- case 35:
- case 36:
- case 37:
- if_OPT_ISO_COLORS(screen, {
- term->sgr_foreground = (param[row] - 30);
- term->sgr_extended = 0;
- setExtendedFG();
- });
- break;
- case 38:
- /* This is more complicated than I'd
- like, but it should properly eat all
- the parameters for unsupported modes
- */
- if_OPT_ISO_COLORS(screen, {
- row++;
- if (row < nparam) {
- switch (param[row]) {
- case 5:
- row++;
- if (row < nparam &&
- param[row] < NUM_ANSI_COLORS) {
- term->sgr_foreground = param[row];
- term->sgr_extended = 1;
- setExtendedFG();
- }
- break;
- default:
- row += 7;
- break;
- }
- }
- });
- break;
- case 39:
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Foreground();
- });
- break;
- case 40:
- case 41:
- case 42:
- case 43:
- case 44:
- case 45:
- case 46:
- case 47:
- if_OPT_ISO_COLORS(screen, {
- term->sgr_background = (param[row] - 40);
- setExtendedBG();
- });
- break;
- case 48:
- if_OPT_ISO_COLORS(screen, {
- row++;
- if (row < nparam) {
- switch (param[row]) {
- case 5:
- row++;
- if (row < nparam &&
- param[row] < NUM_ANSI_COLORS) {
- term->sgr_background = param[row];
- setExtendedBG();
- }
- break;
- default:
- row += 7;
- break;
- }
- }
- });
- break;
- case 49:
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Background();
- });
- break;
- case 90:
- case 91:
- case 92:
- case 93:
- case 94:
- case 95:
- case 96:
- case 97:
- if_OPT_AIX_COLORS(screen, {
- term->sgr_foreground = (param[row] - 90 + 8);
- term->sgr_extended = 0;
- setExtendedFG();
- });
- break;
- case 100:
-#if !OPT_AIX_COLORS
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Foreground();
- reset_SGR_Background();
- });
- break;
-#endif
- case 101:
- case 102:
- case 103:
- case 104:
- case 105:
- case 106:
- case 107:
- if_OPT_AIX_COLORS(screen, {
- term->sgr_background = (param[row] - 100 + 8);
- setExtendedBG();
- });
- break;
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- /* DSR (except for the '?') is a superset of CPR */
- case CASE_DSR:
- sp->private_function = True;
-
- /* FALLTHRU */
- case CASE_CPR:
- TRACE(("CASE_CPR - cursor position\n"));
- count = 0;
- reply.a_type = CSI;
- reply.a_pintro = sp->private_function ? '?' : 0;
- reply.a_inters = 0;
- reply.a_final = 'n';
-
- switch (param[0]) {
- case 5:
- /* operating status */
- reply.a_param[count++] = 0; /* (no malfunction ;-) */
- break;
- case 6:
- /* CPR */
- /* DECXCPR (with page=0) */
- reply.a_param[count++] = screen->cur_row + 1;
- reply.a_param[count++] = screen->cur_col + 1;
- reply.a_final = 'R';
- break;
- case 15:
- /* printer status */
- reply.a_param[count++] = 13; /* implement printer */
- break;
- case 25:
- /* UDK status */
- reply.a_param[count++] = 20; /* UDK always unlocked */
- break;
- case 26:
- /* keyboard status */
- reply.a_param[count++] = 27;
- reply.a_param[count++] = 1; /* North American */
- if (screen->terminal_id >= 400) {
- reply.a_param[count++] = 0; /* ready */
- reply.a_param[count++] = 0; /* LK201 */
- }
- break;
- case 53:
- /* Locator status */
-#if OPT_DEC_LOCATOR
- reply.a_param[count++] = 50; /* locator ready */
-#else
- reply.a_param[count++] = 53; /* no locator */
-#endif
- break;
- }
-
- if ((reply.a_nparam = count) != 0)
- unparseseq(&reply, screen->respond);
-
- sp->parsestate = sp->groundtable;
- sp->private_function = False;
- break;
-
- case CASE_MC:
- TRACE(("CASE_MC - media control\n"));
- xtermMediaControl(param[0], False);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DEC_MC:
- TRACE(("CASE_DEC_MC - DEC media control\n"));
- xtermMediaControl(param[0], True);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_HP_MEM_LOCK:
- case CASE_HP_MEM_UNLOCK:
- TRACE(("%s\n", ((sp->parsestate[c] == CASE_HP_MEM_LOCK)
- ? "CASE_HP_MEM_LOCK"
- : "CASE_HP_MEM_UNLOCK")));
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (sp->parsestate[c] == CASE_HP_MEM_LOCK)
- set_tb_margins(screen, screen->cur_row, screen->bot_marg);
- else
- set_tb_margins(screen, 0, screen->bot_marg);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSTBM:
- TRACE(("CASE_DECSTBM - set scrolling region\n"));
- if ((top = param[0]) < 1)
- top = 1;
- if (nparam < 2 || (bot = param[1]) == DEFAULT
- || bot > MaxRows(screen)
- || bot == 0)
- bot = MaxRows(screen);
- if (bot > top) {
- if (screen->scroll_amt)
- FlushScroll(screen);
- set_tb_margins(screen, top - 1, bot - 1);
- CursorSet(screen, 0, 0, term->flags);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECREQTPARM:
- TRACE(("CASE_DECREQTPARM\n"));
- if (screen->terminal_id < 200) { /* VT102 */
- if ((row = param[0]) == DEFAULT)
- row = 0;
- if (row == 0 || row == 1) {
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 7;
- reply.a_param[0] = row + 2;
- reply.a_param[1] = 1; /* no parity */
- reply.a_param[2] = 1; /* eight bits */
- reply.a_param[3] = 128; /* transmit 38.4k baud */
- reply.a_param[4] = 128; /* receive 38.4k baud */
- reply.a_param[5] = 1; /* clock multiplier ? */
- reply.a_param[6] = 0; /* STP flags ? */
- reply.a_inters = 0;
- reply.a_final = 'x';
- unparseseq(&reply, screen->respond);
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSET:
- /* DECSET */
-#if OPT_VT52_MODE
- if (screen->vtXX_level != 0)
-#endif
- dpmodes(term, bitset);
- sp->parsestate = sp->groundtable;
-#if OPT_TEK4014
- if (screen->TekEmu)
- return False;
-#endif
- break;
-
- case CASE_DECRST:
- /* DECRST */
- dpmodes(term, bitclr);
-#if OPT_VT52_MODE
- if (screen->vtXX_level == 0)
- sp->groundtable = vt52_table;
- else if (screen->terminal_id >= 100)
- sp->groundtable = ansi_table;
-#endif
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECALN:
- TRACE(("CASE_DECALN - alignment test\n"));
- if (screen->cursor_state)
- HideCursor();
- set_tb_margins(screen, 0, screen->max_row);
- CursorSet(screen, 0, 0, term->flags);
- xtermParseRect(screen, 0, 0, &myRect);
- ScrnFillRectangle(screen, &myRect, 'E', 0);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_GSETS:
- TRACE(("CASE_GSETS(%d) = '%c'\n", sp->scstype, c));
- if (screen->vtXX_level != 0)
- screen->gsets[sp->scstype] = c;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSC:
- TRACE(("CASE_DECSC - save cursor\n"));
- CursorSave(term);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECRC:
- TRACE(("CASE_DECRC - restore cursor\n"));
- CursorRestore(term);
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECKPAM:
- TRACE(("CASE_DECKPAM\n"));
- term->keyboard.flags |= MODE_DECKPAM;
- update_appkeypad();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECKPNM:
- TRACE(("CASE_DECKPNM\n"));
- term->keyboard.flags &= ~MODE_DECKPAM;
- update_appkeypad();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CSI_QUOTE_STATE:
- sp->parsestate = csi_quo_table;
- break;
-
-#if OPT_VT52_MODE
- case CASE_VT52_FINISH:
- TRACE(("CASE_VT52_FINISH terminal_id %d, vtXX_level %d\n",
- screen->terminal_id,
- screen->vtXX_level));
- if (screen->terminal_id >= 100
- && screen->vtXX_level == 0) {
- sp->groundtable =
- sp->parsestate = ansi_table;
- screen->vtXX_level = screen->vt52_save_level;
- screen->curgl = screen->vt52_save_curgl;
- screen->curgr = screen->vt52_save_curgr;
- screen->curss = screen->vt52_save_curss;
- memmove(screen->gsets, screen->vt52_save_gsets, sizeof(screen->gsets));
- }
- break;
-#endif
-
- case CASE_ANSI_LEVEL_1:
- TRACE(("CASE_ANSI_LEVEL_1\n"));
- set_ansi_conformance(screen, 1);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ANSI_LEVEL_2:
- TRACE(("CASE_ANSI_LEVEL_2\n"));
- set_ansi_conformance(screen, 2);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ANSI_LEVEL_3:
- TRACE(("CASE_ANSI_LEVEL_3\n"));
- set_ansi_conformance(screen, 3);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSCL:
- TRACE(("CASE_DECSCL(%d,%d)\n", param[0], param[1]));
- if (param[0] >= 61 && param[0] <= 65) {
- /*
- * VT300, VT420, VT520 manuals claim that DECSCL does a hard
- * reset (RIS). VT220 manual states that it is a soft reset.
- * Perhaps both are right (unlikely). Kermit says it's soft.
- */
- VTReset(False, False);
- screen->vtXX_level = param[0] - 60;
- if (param[0] > 61) {
- if (param[1] == 1)
- show_8bit_control(False);
- else if (param[1] == 0 || param[1] == 2)
- show_8bit_control(True);
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSCA:
- TRACE(("CASE_DECSCA\n"));
- screen->protected_mode = DEC_PROTECT;
- if (param[0] <= 0 || param[0] == 2)
- term->flags &= ~PROTECTED;
- else if (param[0] == 1)
- term->flags |= PROTECTED;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSED:
- TRACE(("CASE_DECSED\n"));
- do_erase_display(screen, param[0], DEC_PROTECT);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSEL:
- TRACE(("CASE_DECSEL\n"));
- do_erase_line(screen, param[0], DEC_PROTECT);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ST:
- TRACE(("CASE_ST: End of String (%d bytes)\n", string_used));
- sp->parsestate = sp->groundtable;
- if (!string_used)
- break;
- string_area[--string_used] = '\0';
- switch (sp->string_mode) {
- case APC:
- /* ignored */
- break;
- case DCS:
- do_dcs(string_area, string_used);
- break;
- case OSC:
- do_osc(string_area, string_used, ST);
- break;
- case PM:
- /* ignored */
- break;
- case SOS:
- /* ignored */
- break;
- }
- break;
-
- case CASE_SOS:
- TRACE(("CASE_SOS: Start of String\n"));
- sp->string_mode = SOS;
- sp->parsestate = sos_table;
- break;
-
- case CASE_PM:
- TRACE(("CASE_PM: Privacy Message\n"));
- sp->string_mode = PM;
- sp->parsestate = sos_table;
- break;
-
- case CASE_DCS:
- TRACE(("CASE_DCS: Device Control String\n"));
- sp->string_mode = DCS;
- sp->parsestate = sos_table;
- break;
-
- case CASE_APC:
- TRACE(("CASE_APC: Application Program Command\n"));
- sp->string_mode = APC;
- sp->parsestate = sos_table;
- break;
-
- case CASE_SPA:
- TRACE(("CASE_SPA - start protected area\n"));
- screen->protected_mode = ISO_PROTECT;
- term->flags |= PROTECTED;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_EPA:
- TRACE(("CASE_EPA - end protected area\n"));
- term->flags &= ~PROTECTED;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SU:
- TRACE(("CASE_SU - scroll up\n"));
- if ((count = param[0]) < 1)
- count = 1;
- xtermScroll(screen, count);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_IND:
- TRACE(("CASE_IND - index\n"));
- xtermIndex(screen, 1);
- do_xevents();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CPL:
- TRACE(("CASE_CPL - cursor prev line\n"));
- CursorPrevLine(screen, param[0]);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CNL:
- TRACE(("CASE_NPL - cursor next line\n"));
- CursorNextLine(screen, param[0]);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_NEL:
- TRACE(("CASE_NEL\n"));
- xtermIndex(screen, 1);
- CarriageReturn(screen);
- do_xevents();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_HTS:
- TRACE(("CASE_HTS - horizontal tab set\n"));
- TabSet(term->tabs, screen->cur_col);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_RI:
- TRACE(("CASE_RI - reverse index\n"));
- RevIndex(screen, 1);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SS2:
- TRACE(("CASE_SS2\n"));
- screen->curss = 2;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SS3:
- TRACE(("CASE_SS3\n"));
- screen->curss = 3;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CSI_STATE:
- /* enter csi state */
- nparam = 1;
- param[0] = DEFAULT;
- sp->parsestate = csi_table;
- break;
-
- case CASE_ESC_SP_STATE:
- /* esc space */
- sp->parsestate = esc_sp_table;
- break;
-
- case CASE_CSI_EX_STATE:
- /* csi exclamation */
- sp->parsestate = csi_ex_table;
- break;
-
-#if OPT_DEC_LOCATOR
- case CASE_CSI_TICK_STATE:
- /* csi tick (') */
- sp->parsestate = csi_tick_table;
- break;
-
- case CASE_DECEFR:
- TRACE(("CASE_DECEFR - Enable Filter Rectangle\n"));
- if (screen->send_mouse_pos == DEC_LOCATOR) {
- MotionOff(screen, term);
- if ((screen->loc_filter_top = param[0]) < 1)
- screen->loc_filter_top = LOC_FILTER_POS;
- if (nparam < 2 || (screen->loc_filter_left = param[1]) < 1)
- screen->loc_filter_left = LOC_FILTER_POS;
- if (nparam < 3 || (screen->loc_filter_bottom = param[2]) < 1)
- screen->loc_filter_bottom = LOC_FILTER_POS;
- if (nparam < 4 || (screen->loc_filter_right = param[3]) < 1)
- screen->loc_filter_right = LOC_FILTER_POS;
- InitLocatorFilter(term);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECELR:
- MotionOff(screen, term);
- if (param[0] <= 0 || param[0] > 2) {
- screen->send_mouse_pos = MOUSE_OFF;
- TRACE(("DECELR - Disable Locator Reports\n"));
- } else {
- TRACE(("DECELR - Enable Locator Reports\n"));
- screen->send_mouse_pos = DEC_LOCATOR;
- if (param[0] == 2) {
- screen->locator_reset = True;
- } else {
- screen->locator_reset = False;
- }
- if (nparam < 2 || param[1] != 1) {
- screen->locator_pixels = False;
- } else {
- screen->locator_pixels = True;
- }
- screen->loc_filter = False;
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSLE:
- TRACE(("DECSLE - Select Locator Events\n"));
- for (count = 0; count < nparam; ++count) {
- switch (param[count]) {
- case DEFAULT:
- case 0:
- MotionOff(screen, term);
- screen->loc_filter = False;
- screen->locator_events = 0;
- break;
- case 1:
- screen->locator_events |= LOC_BTNS_DN;
- break;
- case 2:
- screen->locator_events &= ~LOC_BTNS_DN;
- break;
- case 3:
- screen->locator_events |= LOC_BTNS_UP;
- break;
- case 4:
- screen->locator_events &= ~LOC_BTNS_UP;
- break;
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECRQLP:
- TRACE(("DECRQLP - Request Locator Position\n"));
- if (param[0] < 2) {
- /* Issue DECLRP Locator Position Report */
- GetLocatorPosition(term);
- }
- sp->parsestate = sp->groundtable;
- break;
-#endif /* OPT_DEC_LOCATOR */
-
-#if OPT_DEC_RECTOPS
- case CASE_CSI_DOLLAR_STATE:
- /* csi dollar ($) */
- if (screen->vtXX_level >= 4)
- sp->parsestate = csi_dollar_table;
- else
- sp->parsestate = eigtable;
- break;
-
- case CASE_CSI_STAR_STATE:
- /* csi dollar (*) */
- if (screen->vtXX_level >= 4)
- sp->parsestate = csi_star_table;
- else
- sp->parsestate = eigtable;
- break;
-
- case CASE_DECCRA:
- TRACE(("CASE_DECCRA - Copy rectangular area\n"));
- xtermParseRect(screen, nparam, param, &myRect);
- ScrnCopyRectangle(screen, &myRect, nparam - 5, param + 5);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECERA:
- TRACE(("CASE_DECERA - Erase rectangular area\n"));
- xtermParseRect(screen, nparam, param, &myRect);
- ScrnFillRectangle(screen, &myRect, ' ', 0);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECFRA:
- TRACE(("CASE_DECFRA - Fill rectangular area\n"));
- if (nparam > 0
- && ((param[0] >= 32 && param[0] <= 126)
- || (param[0] >= 160 && param[0] <= 255))) {
- xtermParseRect(screen, nparam - 1, param + 1, &myRect);
- ScrnFillRectangle(screen, &myRect, param[0], term->flags);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSERA:
- TRACE(("CASE_DECSERA - Selective erase rectangular area\n"));
- xtermParseRect(screen, nparam > 4 ? 4 : nparam, param, &myRect);
- ScrnWipeRectangle(screen, &myRect);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSACE:
- TRACE(("CASE_DECSACE - Select attribute change extent\n"));
- screen->cur_decsace = param[0];
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECCARA:
- TRACE(("CASE_DECCARA - Change attributes in rectangular area\n"));
- xtermParseRect(screen, nparam > 4 ? 4 : nparam, param, &myRect);
- ScrnMarkRectangle(screen, &myRect, False, nparam - 4, param + 4);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECRARA:
- TRACE(("CASE_DECRARA - Reverse attributes in rectangular area\n"));
- xtermParseRect(screen, nparam > 4 ? 4 : nparam, param, &myRect);
- ScrnMarkRectangle(screen, &myRect, True, nparam - 4, param + 4);
- sp->parsestate = sp->groundtable;
- break;
-#else
- case CASE_CSI_DOLLAR_STATE:
- /* csi dollar ($) */
- sp->parsestate = eigtable;
- break;
-
- case CASE_CSI_STAR_STATE:
- /* csi dollar (*) */
- sp->parsestate = eigtable;
- break;
-#endif /* OPT_DEC_RECTOPS */
-
- case CASE_S7C1T:
- TRACE(("CASE_S7C1T\n"));
- show_8bit_control(False);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_S8C1T:
- TRACE(("CASE_S8C1T\n"));
-#if OPT_VT52_MODE
- if (screen->vtXX_level <= 1)
- break;
-#endif
- show_8bit_control(True);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_OSC:
- TRACE(("CASE_OSC: Operating System Command\n"));
- sp->parsestate = sos_table;
- sp->string_mode = OSC;
- break;
-
- case CASE_RIS:
- TRACE(("CASE_RIS\n"));
- VTReset(True, True);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSTR:
- TRACE(("CASE_DECSTR\n"));
- VTReset(False, False);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_REP:
- TRACE(("CASE_REP\n"));
- if (sp->lastchar >= 0 &&
- sp->groundtable[E2A(sp->lastchar)] == CASE_PRINT) {
- IChar repeated[2];
- count = (param[0] < 1) ? 1 : param[0];
- repeated[0] = sp->lastchar;
- while (count-- > 0) {
- dotext(screen,
- screen->gsets[(int) (screen->curgl)],
- repeated, 1);
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS2:
- TRACE(("CASE_LS2\n"));
- screen->curgl = 2;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS3:
- TRACE(("CASE_LS3\n"));
- screen->curgl = 3;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS3R:
- TRACE(("CASE_LS3R\n"));
- screen->curgr = 3;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS2R:
- TRACE(("CASE_LS2R\n"));
- screen->curgr = 2;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS1R:
- TRACE(("CASE_LS1R\n"));
- screen->curgr = 1;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_XTERM_SAVE:
- savemodes(term);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_XTERM_RESTORE:
- restoremodes(term);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_XTERM_WINOPS:
- TRACE(("CASE_XTERM_WINOPS\n"));
- if (screen->allowWindowOps)
- window_ops(term);
- sp->parsestate = sp->groundtable;
- break;
-#if OPT_WIDE_CHARS
- case CASE_ESC_PERCENT:
- sp->parsestate = esc_pct_table;
- break;
-
- case CASE_UTF8:
- /* If we did not set UTF-8 mode from resource or the
- * command-line, allow it to be enabled/disabled by
- * control sequence.
- */
- if (!screen->wide_chars) {
- WriteNow();
- ChangeToWide(screen);
- }
- if (screen->wide_chars
- && screen->utf8_mode != uAlways) {
- switchPtyData(screen, c == 'G');
- TRACE(("UTF8 mode %s\n",
- BtoS(screen->utf8_mode)));
- } else {
- TRACE(("UTF8 mode NOT turned %s (%s)\n",
- BtoS(c == 'G'),
- (screen->utf8_mode == uAlways)
- ? "UTF-8 mode set from command-line"
- : "wideChars resource was not set"));
- }
- sp->parsestate = sp->groundtable;
- break;
-#endif
-
- case CASE_CSI_IGNORE:
- sp->parsestate = cigtable;
- break;
- }
- if (sp->parsestate == sp->groundtable)
- sp->lastchar = thischar;
- } while (0);
-
-#if OPT_WIDE_CHARS
- screen->utf8_inparse = (screen->utf8_mode != uFalse
- && sp->parsestate != sos_table);
-#endif
-
- return True;
-}
-
-static void
-VTparse(void)
-{
- TScreen *screen;
-
- /* We longjmp back to this point in VTReset() */
- (void) setjmp(vtjmpbuf);
- screen = &term->screen;
- memset(&myState, 0, sizeof(myState));
-#if OPT_VT52_MODE
- myState.groundtable = screen->vtXX_level ? ansi_table : vt52_table;
-#else
- myState.groundtable = ansi_table;
-#endif
- myState.parsestate = myState.groundtable;
- myState.lastchar = -1; /* not a legal IChar */
- myState.nextstate = -1; /* not a legal state */
-
- for (;;) {
- if (!doparsing(doinput(), &myState))
- return;
- }
-}
-
-static Char *v_buffer; /* pointer to physical buffer */
-static Char *v_bufstr = NULL; /* beginning of area to write */
-static Char *v_bufptr; /* end of area to write */
-static Char *v_bufend; /* end of physical buffer */
-
-/* Write data to the pty as typed by the user, pasted with the mouse,
- or generated by us in response to a query ESC sequence. */
-
-int
-v_write(int f, Char * data, unsigned len)
-{
- int riten;
- unsigned c = len;
-
- if (v_bufstr == NULL && len > 0) {
- v_buffer = (Char *) XtMalloc(len);
- v_bufstr = v_buffer;
- v_bufptr = v_buffer;
- v_bufend = v_buffer + len;
- }
-#ifdef DEBUG
- if (debug) {
- fprintf(stderr, "v_write called with %d bytes (%d left over)",
- len, v_bufptr - v_bufstr);
- if (len > 1 && len < 10)
- fprintf(stderr, " \"%.*s\"", len, (char *) data);
- fprintf(stderr, "\n");
- }
-#endif
-
-#ifdef VMS
- if ((1 << f) != pty_mask)
- return (tt_write((char *) data, len));
-#else /* VMS */
- if (!FD_ISSET(f, &pty_mask))
- return (write(f, (char *) data, len));
-#endif /* VMS */
-
- /*
- * Append to the block we already have.
- * Always doing this simplifies the code, and
- * isn't too bad, either. If this is a short
- * block, it isn't too expensive, and if this is
- * a long block, we won't be able to write it all
- * anyway.
- */
-
- if (len > 0) {
-#if OPT_DABBREV
- term->screen.dabbrev_working = 0; /* break dabbrev sequence */
-#endif
- if (v_bufend < v_bufptr + len) { /* we've run out of room */
- if (v_bufstr != v_buffer) {
- /* there is unused space, move everything down */
- /* possibly overlapping memmove here */
-#ifdef DEBUG
- if (debug)
- fprintf(stderr, "moving data down %d\n",
- v_bufstr - v_buffer);
-#endif
- memmove(v_buffer, v_bufstr, (unsigned) (v_bufptr - v_bufstr));
- v_bufptr -= v_bufstr - v_buffer;
- v_bufstr = v_buffer;
- }
- if (v_bufend < v_bufptr + len) {
- /* still won't fit: get more space */
- /* Don't use XtRealloc because an error is not fatal. */
- int size = v_bufptr - v_buffer; /* save across realloc */
- v_buffer = TypeRealloc(Char, size + len, v_buffer);
- if (v_buffer) {
-#ifdef DEBUG
- if (debug)
- fprintf(stderr, "expanded buffer to %d\n",
- size + len);
-#endif
- v_bufstr = v_buffer;
- v_bufptr = v_buffer + size;
- v_bufend = v_bufptr + len;
- } else {
- /* no memory: ignore entire write request */
- fprintf(stderr, "%s: cannot allocate buffer space\n",
- xterm_name);
- v_buffer = v_bufstr; /* restore clobbered pointer */
- c = 0;
- }
- }
- }
- if (v_bufend >= v_bufptr + len) {
- /* new stuff will fit */
- memmove(v_bufptr, data, len);
- v_bufptr += len;
- }
- }
-
- /*
- * Write out as much of the buffer as we can.
- * Be careful not to overflow the pty's input silo.
- * We are conservative here and only write
- * a small amount at a time.
- *
- * If we can't push all the data into the pty yet, we expect write
- * to return a non-negative number less than the length requested
- * (if some data written) or -1 and set errno to EAGAIN,
- * EWOULDBLOCK, or EINTR (if no data written).
- *
- * (Not all systems do this, sigh, so the code is actually
- * a little more forgiving.)
- */
-
-#define MAX_PTY_WRITE 128 /* 1/2 POSIX minimum MAX_INPUT */
-
- if (v_bufptr > v_bufstr) {
-#ifdef VMS
- riten = tt_write(v_bufstr,
- ((v_bufptr - v_bufstr <= VMS_TERM_BUFFER_SIZE)
- ? v_bufptr - v_bufstr
- : VMS_TERM_BUFFER_SIZE));
- if (riten == 0)
- return (riten);
-#else /* VMS */
- riten = write(f, v_bufstr,
- (size_t) ((v_bufptr - v_bufstr <= MAX_PTY_WRITE)
- ? v_bufptr - v_bufstr
- : MAX_PTY_WRITE));
- if (riten < 0)
-#endif /* VMS */
- {
-#ifdef DEBUG
- if (debug)
- perror("write");
-#endif
- riten = 0;
- }
-#ifdef DEBUG
- if (debug)
- fprintf(stderr, "write called with %d, wrote %d\n",
- v_bufptr - v_bufstr <= MAX_PTY_WRITE ?
- v_bufptr - v_bufstr : MAX_PTY_WRITE,
- riten);
-#endif
- v_bufstr += riten;
- if (v_bufstr >= v_bufptr) /* we wrote it all */
- v_bufstr = v_bufptr = v_buffer;
- }
-
- /*
- * If we have lots of unused memory allocated, return it
- */
- if (v_bufend - v_bufptr > 1024) { /* arbitrary hysteresis */
- /* save pointers across realloc */
- int start = v_bufstr - v_buffer;
- int size = v_bufptr - v_buffer;
- unsigned allocsize = (unsigned) (size ? size : 1);
-
- v_buffer = TypeRealloc(Char, allocsize, v_buffer);
- if (v_buffer) {
- v_bufstr = v_buffer + start;
- v_bufptr = v_buffer + size;
- v_bufend = v_buffer + allocsize;
-#ifdef DEBUG
- if (debug)
- fprintf(stderr, "shrunk buffer to %d\n", allocsize);
-#endif
- } else {
- /* should we print a warning if couldn't return memory? */
- v_buffer = v_bufstr - start; /* restore clobbered pointer */
- }
- }
- return (c);
-}
-
-#ifdef VMS
-#define ptymask() (v_bufptr > v_bufstr ? pty_mask : 0)
-
-static void
-in_put(void)
-{
- static PtySelect select_mask;
- static PtySelect write_mask;
- int update = VTbuffer->update;
- int size;
-
- int status;
- Dimension replyWidth, replyHeight;
- XtGeometryResult stat;
-
- TScreen *screen = &term->screen;
- char *cp;
- int i;
-
- select_mask = pty_mask; /* force initial read */
- for (;;) {
-
- /* if the terminal changed size, resize the widget */
- if (tt_changed) {
- tt_changed = False;
-
- stat = XtMakeResizeRequest((Widget) term,
- ((Dimension) FontWidth(screen)
- * (tt_width)
- + 2 * screen->border
- + screen->fullVwin.sb_info.width),
- ((Dimension) FontHeight(screen)
- * (tt_length)
- + 2 * screen->border),
- &replyWidth, &replyHeight);
-
- if (stat == XtGeometryYes || stat == XtGeometryDone) {
- term->core.width = replyWidth;
- term->core.height = replyHeight;
-
- ScreenResize(&term->screen, replyWidth, replyHeight,
- &term->flags);
- }
- repairSizeHints();
- }
-
- if (eventMode == NORMAL
- && readPtyData(screen, &select_mask, VTbuffer)) {
- if (screen->scrollWidget
- && screen->scrollttyoutput
- && screen->topline < 0)
- /* Scroll to bottom */
- WindowScroll(screen, 0);
- break;
- }
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (screen->cursor_set && CursorMoved(screen)) {
- if (screen->cursor_state)
- HideCursor();
- ShowCursor();
-#if OPT_INPUT_METHOD
- PreeditPosition(screen);
-#endif
- } else if (screen->cursor_set != screen->cursor_state) {
- if (screen->cursor_set)
- ShowCursor();
- else
- HideCursor();
- }
-
- if (QLength(screen->display)) {
- select_mask = X_mask;
- } else {
- write_mask = ptymask();
- XFlush(screen->display);
- select_mask = Select_mask;
- if (eventMode != NORMAL)
- select_mask = X_mask;
- }
- if (write_mask & ptymask()) {
- v_write(screen->respond, 0, 0); /* flush buffer */
- }
-
- if (select_mask & X_mask) {
- xevents();
- if (VTbuffer->update != update)
- break;
- }
- }
-}
-#else /* VMS */
-
-static void
-in_put(void)
-{
- static PtySelect select_mask;
- static PtySelect write_mask;
-
- TScreen *screen = &term->screen;
- int i, time_select;
- int size;
- int update = VTbuffer->update;
-
- static struct timeval select_timeout;
-
-#if OPT_BLINK_CURS
- /*
- * Compute the timeout for the blinking cursor to be much smaller than
- * the "on" or "off" interval.
- */
- int tick = ((screen->blink_on < screen->blink_off)
- ? screen->blink_on
- : screen->blink_off);
- tick *= (1000 / 8); /* 1000 for msec/usec, 8 for "much" smaller */
- if (tick < 1)
- tick = 1;
-#endif
-
- for (;;) {
- if (eventMode == NORMAL
- && (size = readPtyData(screen, &select_mask, VTbuffer)) != 0) {
- if (screen->scrollWidget
- && screen->scrollttyoutput
- && screen->topline < 0)
- WindowScroll(screen, 0); /* Scroll to bottom */
- /* stop speed reading at some point to look for X stuff */
- TRACE(("VTbuffer uses %d/%d\n",
- VTbuffer->last - VTbuffer->buffer,
- BUF_SIZE));
- if ((VTbuffer->last - VTbuffer->buffer) > BUF_SIZE) {
- FD_CLR(screen->respond, &select_mask);
- break;
- }
-#if defined(HAVE_SCHED_YIELD)
- /*
- * If we've read a full (small/fragment) buffer, let the operating
- * system have a turn, and we'll resume reading until we've either
- * read only a fragment of the buffer, or we've filled the large
- * buffer (see above). Doing this helps keep up with large bursts
- * of output.
- */
- if (size == FRG_SIZE) {
- select_timeout.tv_sec = 0;
- i = Select(max_plus1, &select_mask, &write_mask, 0,
- &select_timeout);
- if (i > 0) {
- sched_yield();
- } else
- break;
- } else {
- break;
- }
-#else
- (void) size; /* unused in this branch */
- break;
-#endif
- }
- /* update the screen */
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (screen->cursor_set && CursorMoved(screen)) {
- if (screen->cursor_state)
- HideCursor();
- ShowCursor();
-#if OPT_INPUT_METHOD
- PreeditPosition(screen);
-#endif
- } else if (screen->cursor_set != screen->cursor_state) {
- if (screen->cursor_set)
- ShowCursor();
- else
- HideCursor();
- }
-
- XFlush(screen->display); /* always flush writes before waiting */
-
- /* Update the masks and, unless X events are already in the queue,
- wait for I/O to be possible. */
- XFD_COPYSET(&Select_mask, &select_mask);
- /* in selection mode xterm does not read pty */
- if (eventMode != NORMAL)
- FD_CLR(screen->respond, &select_mask);
-
- if (v_bufptr > v_bufstr) {
- XFD_COPYSET(&pty_mask, &write_mask);
- } else
- FD_ZERO(&write_mask);
- select_timeout.tv_sec = 0;
- time_select = 0;
-
- /*
- * if there's either an XEvent or an XtTimeout pending, just take
- * a quick peek, i.e. timeout from the select() immediately. If
- * there's nothing pending, let select() block a little while, but
- * for a shorter interval than the arrow-style scrollbar timeout.
- * The blocking is optional, because it tends to increase the load
- * on the host.
- */
- if (XtAppPending(app_con)) {
- select_timeout.tv_usec = 0;
- time_select = 1;
- } else if (screen->awaitInput) {
- select_timeout.tv_usec = 50000;
- time_select = 1;
-#if OPT_BLINK_CURS
- } else if ((screen->blink_timer != 0 &&
- ((screen->select & FOCUS) || screen->always_highlight)) ||
- (screen->cursor_state == BLINKED_OFF)) {
- select_timeout.tv_usec = tick;
- while (select_timeout.tv_usec > 1000000) {
- select_timeout.tv_usec -= 1000000;
- select_timeout.tv_sec++;
- }
- time_select = 1;
-#endif
-#if OPT_SESSION_MGT
- } else if (resource.sessionMgt) {
- /*
- * When session management is enabled, we should not block since
- * session related events can arrive any time.
- */
- select_timeout.tv_sec = 1;
- select_timeout.tv_usec = 0;
- time_select = 1;
-#endif
- }
- if (need_cleanup)
- Cleanup(0);
-
-#if defined(NX_TRANS_SOCKET) && defined(NX_TRANS_TEST)
- fprintf(stderr, "xterm::in_put: Select called with [%d][%p][%p][%p][%p].\n",
- max_plus1, (void *) &select_mask, (void *) &write_mask, (void *) 0,
- (void *) (time_select ? &select_timeout : 0));
-#endif
-
- i = Select(max_plus1, &select_mask, &write_mask, 0,
- (time_select ? &select_timeout : 0));
- if (i < 0) {
- if (errno != EINTR)
- SysError(ERROR_SELECT);
- continue;
- }
-
- /* if there is room to write more data to the pty, go write more */
- if (FD_ISSET(screen->respond, &write_mask)) {
- v_write(screen->respond, (Char *) 0, 0); /* flush buffer */
- }
-
- /* if there are X events already in our queue, it
- counts as being readable */
- if (XtAppPending(app_con) ||
- FD_ISSET(ConnectionNumber(screen->display), &select_mask)) {
- xevents();
- if (VTbuffer->update != update) /* HandleInterpret */
- break;
- }
-
- }
-}
-#endif /* VMS */
-
-static IChar
-doinput(void)
-{
- TScreen *screen = &term->screen;
-
- while (!morePtyData(screen, VTbuffer))
- in_put();
- return nextPtyData(screen, VTbuffer);
-}
-
-#if OPT_INPUT_METHOD
-/*
- * For OverTheSpot, client has to inform the position for XIM preedit.
- */
-static void
-PreeditPosition(TScreen * screen)
-{
- XPoint spot;
- XVaNestedList list;
-
- if (!screen->xic)
- return;
- spot.x = CurCursorX(screen, screen->cur_row, screen->cur_col);
- spot.y = CursorY(screen, screen->cur_row) + screen->fs_ascent;
- list = XVaCreateNestedList(0,
- XNSpotLocation, &spot,
- XNForeground, T_COLOR(screen, TEXT_FG),
- XNBackground, T_COLOR(screen, TEXT_BG),
- NULL);
- XSetICValues(screen->xic, XNPreeditAttributes, list, NULL);
- XFree(list);
-}
-#endif
-
-/*
- * process a string of characters according to the character set indicated
- * by charset. worry about end of line conditions (wraparound if selected).
- */
-void
-dotext(TScreen * screen,
- int charset,
- IChar * buf, /* start of characters to process */
- Cardinal len) /* end */
-{
-#if OPT_WIDE_CHARS
- Cardinal chars_chomped = 1;
-#else
- int next_col, last_col, this_col; /* must be signed */
-#endif
- Cardinal offset;
-
-#if OPT_WIDE_CHARS
- /* don't translate if we use UTF-8, and are not handling legacy support
- * for line-drawing characters.
- */
- if ((screen->utf8_mode == uFalse)
- || (screen->vt100_graphics && charset == '0'))
-#endif
-
- if (!xtermCharSetOut(buf, buf + len, charset))
- return;
-
- if_OPT_XMC_GLITCH(screen, {
- Cardinal n;
- if (charset != '?') {
- for (n = 0; n < len; n++) {
- if (buf[n] == XMC_GLITCH)
- buf[n] = XMC_GLITCH + 1;
- }
- }
- });
-
-#if OPT_WIDE_CHARS
- for (offset = 0;
- offset < len && (chars_chomped > 0 || screen->do_wrap);
- offset += chars_chomped) {
- int width_available = MaxCols(screen) - screen->cur_col;
- int width_here = 0;
- int need_wrap = 0;
- chars_chomped = 0;
-
- if (screen->do_wrap && (term->flags & WRAPAROUND)) {
- /* mark that we had to wrap this line */
- ScrnSetWrapped(screen, screen->cur_row);
- xtermAutoPrint('\n');
- xtermIndex(screen, 1);
- set_cur_col(screen, 0);
- screen->do_wrap = 0;
- width_available = MaxCols(screen) - screen->cur_col;
- }
-
- while (width_here <= width_available && chars_chomped < (len - offset)) {
- if (!screen->utf8_mode
- || (screen->vt100_graphics && charset == '0'))
- width_here++;
- else
- width_here += my_wcwidth((int) buf[chars_chomped + offset]);
- chars_chomped++;
- }
-
- if (width_here > width_available) {
- chars_chomped--;
- if (!screen->utf8_mode
- || (screen->vt100_graphics && charset == '0'))
- width_here--;
- else
- width_here -= my_wcwidth((int) buf[chars_chomped + offset]);
- need_wrap = 1;
- } else if (width_here == width_available) {
- need_wrap = 1;
- } else if (chars_chomped != (len - offset)) {
- need_wrap = 1;
- }
-
- /*
- * Split the wide characters back into separate arrays of 8-bit
- * characters so we can use the existing interface.
- *
- * FIXME: If we rewrote this interface, it would involve
- * rewriting all of the memory-management for the screen
- * buffers (perhaps this is simpler).
- */
- if (chars_chomped != 0) {
- static unsigned limit;
- static Char *hibyte, *lobyte;
- Bool both = False;
- unsigned j, k;
-
- if (chars_chomped >= limit) {
- limit = (chars_chomped + 1) * 2;
- lobyte = (Char *) XtRealloc((char *) lobyte, limit);
- hibyte = (Char *) XtRealloc((char *) hibyte, limit);
- }
- for (j = offset; j < offset + chars_chomped; j++) {
- k = j - offset;
- lobyte[k] = buf[j];
- if (buf[j] > 255) {
- hibyte[k] = (buf[j] >> 8);
- both = True;
- } else {
- hibyte[k] = 0;
- }
- }
-
- WriteText(screen, PAIRED_CHARS(lobyte,
- (both ? hibyte : 0)),
- chars_chomped);
- }
- screen->do_wrap = need_wrap;
- }
-#else
-
- for (offset = 0; offset < len; offset += this_col) {
- last_col = CurMaxCol(screen, screen->cur_row);
- this_col = last_col - screen->cur_col + 1;
- if (this_col <= 1) {
- if (screen->do_wrap && (term->flags & WRAPAROUND)) {
- /* mark that we had to wrap this line */
- ScrnSetWrapped(screen, screen->cur_row);
- xtermAutoPrint('\n');
- xtermIndex(screen, 1);
- set_cur_col(screen, 0);
- screen->do_wrap = 0;
- this_col = last_col + 1;
- } else
- this_col = 1;
- }
- if (offset + this_col > len) {
- this_col = len - offset;
- }
- next_col = screen->cur_col + this_col;
-
- WriteText(screen, PAIRED_CHARS(buf + offset,
- buf2 ? buf2 + offset : 0),
- this_col);
-
- /*
- * the call to WriteText updates screen->cur_col.
- * If screen->cur_col != next_col, we must have
- * hit the right margin, so set the do_wrap flag.
- */
- screen->do_wrap = (screen->cur_col < (int) next_col);
- }
-
-#endif
-}
-
-#if HANDLE_STRUCT_NOTIFY
-/* Flag icon name with "*** " on window output when iconified.
- * I'd like to do something like reverse video, but I don't
- * know how to tell this to window managers in general.
- *
- * mapstate can be IsUnmapped, !IsUnmapped, or -1;
- * -1 means no change; the other two are set by event handlers
- * and indicate a new mapstate. !IsMapped is done in the handler.
- * we worry about IsUnmapped when output occurs. -IAN!
- */
-static int mapstate = -1;
-#endif /* HANDLE_STRUCT_NOTIFY */
-
-#if OPT_WIDE_CHARS
-unsigned
-visual_width(PAIRED_CHARS(Char * str, Char * str2), Cardinal len)
-{
- /* returns the visual width of a string (doublewide characters count
- as 2, normalwide characters count as 1) */
- int my_len = 0;
- while (len) {
- int ch = *str;
- if (str2)
- ch |= *str2 << 8;
- if (str)
- str++;
- if (str2)
- str2++;
- if (iswide(ch))
- my_len += 2;
- else
- my_len++;
- len--;
- }
- return my_len;
-}
-#endif
-
-/*
- * write a string str of length len onto the screen at
- * the current cursor position. update cursor position.
- */
-static void
-WriteText(TScreen * screen, PAIRED_CHARS(Char * str, Char * str2), Cardinal len)
-{
- ScrnPtr PAIRED_CHARS(temp_str = 0, temp_str2 = 0);
- unsigned test;
- unsigned flags = term->flags;
- unsigned fg_bg = makeColorPair(term->cur_foreground, term->cur_background);
- unsigned cells = visual_width(PAIRED_CHARS(str, str2), len);
- GC currentGC;
-
- TRACE(("WriteText (%2d,%2d) (%d) %3d:%s\n",
- screen->cur_row,
- screen->cur_col,
- curXtermChrSet(screen->cur_row),
- len, visibleChars(PAIRED_CHARS(str, str2), len)));
-
- if (ScrnHaveSelection(screen)
- && ScrnIsLineInSelection(screen, screen->cur_row - screen->topline)) {
- ScrnDisownSelection(screen);
- }
-
- if (screen->cur_row - screen->topline <= screen->max_row) {
- if (screen->cursor_state)
- HideCursor();
-
- if (flags & INSERT) {
- InsertChar(screen, cells);
- }
- if (!AddToRefresh(screen)) {
-
- if (screen->scroll_amt)
- FlushScroll(screen);
-
- if (flags & INVISIBLE) {
- if (cells > len) {
- str = temp_str = TypeMallocN(Char, cells);
- if (str == 0)
- return;
- }
- if_OPT_WIDE_CHARS(screen, {
- if (cells > len) {
- str2 = temp_str2 = TypeMallocN(Char, cells);
- }
- });
- len = cells;
-
- memset(str, ' ', len);
- if_OPT_WIDE_CHARS(screen, {
- if (str2 != 0)
- memset(str2, 0, len);
- });
- }
-
- TRACE(("WriteText calling drawXtermText (%d,%d)\n",
- screen->cur_col,
- screen->cur_row));
-
- test = flags;
- checkVeryBoldColors(test, term->cur_foreground);
-
- /* make sure that the correct GC is current */
- currentGC = updatedXtermGC(screen, flags, fg_bg, False);
-
- drawXtermText(screen, test & DRAWX_MASK, currentGC,
- CurCursorX(screen, screen->cur_row, screen->cur_col),
- CursorY(screen, screen->cur_row),
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(str, str2), len, 0);
-
- resetXtermGC(screen, flags, False);
- }
- }
-
- ScreenWrite(screen, PAIRED_CHARS(str, str2), flags, fg_bg, len);
- CursorForward(screen, (int) cells);
-#if OPT_ZICONBEEP
- /* Flag icon name with "***" on window output when iconified.
- */
- if (zIconBeep && mapstate == IsUnmapped && !zIconBeep_flagged) {
- static char *icon_name;
- static Arg args[] =
- {
- {XtNiconName, (XtArgVal) & icon_name}
- };
-
- icon_name = NULL;
- XtGetValues(toplevel, args, XtNumber(args));
-
- if (icon_name != NULL) {
- zIconBeep_flagged = True;
- Changename(icon_name);
- }
- if (zIconBeep > 0) {
-#if defined(HAVE_XKBBELL)
- XkbBell(XtDisplay(toplevel), VShellWindow, zIconBeep, XkbBI_Info);
-#else
- XBell(XtDisplay(toplevel), zIconBeep);
-#endif
- }
- }
- mapstate = -1;
-#endif /* OPT_ZICONBEEP */
- if (temp_str != 0)
- free(temp_str);
- if_OPT_WIDE_CHARS(screen, {
- if (temp_str2 != 0)
- free(temp_str2);
- });
- return;
-}
-
-#if HANDLE_STRUCT_NOTIFY
-/* Flag icon name with "***" on window output when iconified.
- */
-static void
-HandleStructNotify(Widget w GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XEvent * event,
- Boolean * cont GCC_UNUSED)
-{
- static char *icon_name;
- static Arg args[] =
- {
- {XtNiconName, (XtArgVal) & icon_name}
- };
-
- switch (event->type) {
- case MapNotify:
- TRACE(("HandleStructNotify(MapNotify)\n"));
-#if OPT_ZICONBEEP
- if (zIconBeep_flagged) {
- zIconBeep_flagged = False;
- icon_name = NULL;
- XtGetValues(toplevel, args, XtNumber(args));
- if (icon_name != NULL) {
- char *buf = CastMallocN(char, strlen(icon_name));
- if (buf == NULL) {
- zIconBeep_flagged = True;
- return;
- }
- strcpy(buf, icon_name + 4);
- Changename(buf);
- free(buf);
- }
- }
-#endif /* OPT_ZICONBEEP */
- mapstate = !IsUnmapped;
- break;
- case UnmapNotify:
- TRACE(("HandleStructNotify(UnmapNotify)\n"));
- mapstate = IsUnmapped;
- break;
- case ConfigureNotify:
- TRACE(("HandleStructNotify(ConfigureNotify)\n"));
-#if OPT_TOOLBAR
- /* the notify is for the top-level widget, but we care about vt100 */
- if (term->screen.Vshow) {
- TScreen *screen = &term->screen;
- struct _vtwin *Vwin = WhichVWin(&(term->screen));
- TbInfo *info = &(Vwin->tb_info);
- TbInfo save = *info;
-
- if (info->menu_bar) {
- XtVaGetValues(info->menu_bar,
- XtNheight, &info->menu_height,
- XtNborderWidth, &info->menu_border,
- (XtPointer) 0);
-
- if (save.menu_height != info->menu_height
- || save.menu_border != info->menu_border) {
-
- TRACE(("...menu_height %d\n", info->menu_height));
- TRACE(("...menu_border %d\n", info->menu_border));
- TRACE(("...had height %d, border %d\n",
- save.menu_height,
- save.menu_border));
-
- /*
- * FIXME: Window manager still may be using the old values.
- * Try to fool it.
- */
- XtMakeResizeRequest((Widget) term,
- screen->fullVwin.fullwidth,
- info->menu_height
- - save.menu_height
- + screen->fullVwin.fullheight,
- NULL, NULL);
- repairSizeHints();
- }
- }
- }
-#endif /* OPT_TOOLBAR */
- break;
- default:
- TRACE(("HandleStructNotify(event %d)\n", event->type));
- break;
- }
-}
-#endif /* HANDLE_STRUCT_NOTIFY */
-
-#if OPT_BLINK_CURS
-static void
-SetCursorBlink(TScreen * screen, int enable)
-{
- screen->cursor_blink = enable;
- if (DoStartBlinking(screen)) {
- StartBlinking(screen);
- } else {
-#if !OPT_BLINK_TEXT
- StopBlinking(screen);
-#endif
- }
- update_cursorblink();
-}
-
-void
-ToggleCursorBlink(TScreen * screen)
-{
- SetCursorBlink(screen, !(screen->cursor_blink));
-}
-#endif
-
-/*
- * process ANSI modes set, reset
- */
-static void
-ansi_modes(XtermWidget termw,
- void (*func) (unsigned *p, unsigned mask))
-{
- int i;
-
- for (i = 0; i < nparam; ++i) {
- switch (param[i]) {
- case 2: /* KAM (if set, keyboard locked */
- (*func) (&termw->keyboard.flags, MODE_KAM);
- break;
-
- case 4: /* IRM */
- (*func) (&termw->flags, INSERT);
- break;
-
- case 12: /* SRM (if set, local echo */
- (*func) (&termw->keyboard.flags, MODE_SRM);
- break;
-
- case 20: /* LNM */
- (*func) (&termw->flags, LINEFEED);
- update_autolinefeed();
- break;
- }
- }
-}
-
-#define set_mousemode(mode) \
- screen->send_mouse_pos = (func == bitset) ? mode : MOUSE_OFF
-#define set_mouseflag(f) \
- ((func == bitset) \
- ? SCREEN_FLAG_set(screen, f) \
- : SCREEN_FLAG_unset(screen, f))
-
-/*
- * process DEC private modes set, reset
- */
-static void
-dpmodes(XtermWidget termw,
- void (*func) (unsigned *p, unsigned mask))
-{
- TScreen *screen = &termw->screen;
- int i, j;
-
- for (i = 0; i < nparam; ++i) {
- TRACE(("%s %d\n", (func == bitset) ? "DECSET" : "DECRST", param[i]));
- switch (param[i]) {
- case 1: /* DECCKM */
- (*func) (&termw->keyboard.flags, MODE_DECCKM);
- update_appcursor();
- break;
- case 2: /* DECANM - ANSI/VT52 mode */
- if (func == bitset) { /* ANSI (VT100) */
- /*
- * Setting DECANM should have no effect, since this function
- * cannot be reached from vt52 mode.
- */
- ;
- }
-#if OPT_VT52_MODE
- else if (screen->terminal_id >= 100) { /* VT52 */
- TRACE(("DECANM terminal_id %d, vtXX_level %d\n",
- screen->terminal_id,
- screen->vtXX_level));
- screen->vt52_save_level = screen->vtXX_level;
- screen->vtXX_level = 0;
- screen->vt52_save_curgl = screen->curgl;
- screen->vt52_save_curgr = screen->curgr;
- screen->vt52_save_curss = screen->curss;
- memmove(screen->vt52_save_gsets, screen->gsets, sizeof(screen->gsets));
- resetCharsets(screen);
- nparam = 0; /* ignore the remaining params, if any */
- }
-#endif
- break;
- case 3: /* DECCOLM */
- if (screen->c132) {
- ClearScreen(screen);
- CursorSet(screen, 0, 0, termw->flags);
- if ((j = func == bitset ? 132 : 80) !=
- ((termw->flags & IN132COLUMNS) ? 132 : 80) ||
- j != MaxCols(screen))
- RequestResize(termw, -1, j, True);
- (*func) (&termw->flags, IN132COLUMNS);
- }
- break;
- case 4: /* DECSCLM (slow scroll) */
- if (func == bitset) {
- screen->jumpscroll = 0;
- if (screen->scroll_amt)
- FlushScroll(screen);
- } else
- screen->jumpscroll = 1;
- (*func) (&termw->flags, SMOOTHSCROLL);
- update_jumpscroll();
- break;
- case 5: /* DECSCNM */
- j = termw->flags;
- (*func) (&termw->flags, REVERSE_VIDEO);
- if ((termw->flags ^ j) & REVERSE_VIDEO)
- ReverseVideo(termw);
- /* update_reversevideo done in RevVid */
- break;
-
- case 6: /* DECOM */
- (*func) (&termw->flags, ORIGIN);
- CursorSet(screen, 0, 0, termw->flags);
- break;
-
- case 7: /* DECAWM */
- (*func) (&termw->flags, WRAPAROUND);
- update_autowrap();
- break;
- case 8: /* DECARM */
- /* ignore autorepeat
- * XAutoRepeatOn() and XAutoRepeatOff() can do this, but only
- * for the whole display - not limited to a given window.
- */
- break;
- case SET_X10_MOUSE: /* MIT bogus sequence */
- MotionOff(screen, termw);
- set_mousemode(X10_MOUSE);
- break;
-#if OPT_TOOLBAR
- case 10: /* rxvt */
- ShowToolbar(func == bitset);
- break;
-#endif
-#if OPT_BLINK_CURS
- case 12: /* att610: Start/stop blinking cursor */
- if (screen->cursor_blink_res) {
- screen->cursor_blink_esc = (func == bitset) ? ON : OFF;
- SetCursorBlink(screen, screen->cursor_blink);
- }
- break;
-#endif
- case 18: /* DECPFF: print form feed */
- screen->printer_formfeed = (func == bitset) ? ON : OFF;
- break;
- case 19: /* DECPEX: print extent */
- screen->printer_extent = (func == bitset) ? ON : OFF;
- break;
- case 25: /* DECTCEM: Show/hide cursor (VT200) */
- screen->cursor_set = (func == bitset) ? ON : OFF;
- break;
- case 30: /* rxvt */
- if (screen->fullVwin.sb_info.width != ((func == bitset) ? ON : OFF))
- ToggleScrollBar(termw);
- break;
-#if OPT_SHIFT_FONTS
- case 35: /* rxvt */
- term->misc.shift_fonts = (func == bitset) ? ON : OFF;
- break;
-#endif
- case 38: /* DECTEK */
-#if OPT_TEK4014
- if (func == bitset && !(screen->inhibit & I_TEK)) {
- FlushLog(screen);
- screen->TekEmu = True;
- }
-#endif
- break;
- case 40: /* 132 column mode */
- screen->c132 = (func == bitset);
- update_allow132();
- break;
- case 41: /* curses hack */
- screen->curses = (func == bitset);
- update_cursesemul();
- break;
- case 42: /* DECNRCM national charset (VT220) */
- (*func) (&termw->flags, NATIONAL);
- break;
- case 44: /* margin bell */
- screen->marginbell = (func == bitset);
- if (!screen->marginbell)
- screen->bellarmed = -1;
- update_marginbell();
- break;
- case 45: /* reverse wraparound */
- (*func) (&termw->flags, REVERSEWRAP);
- update_reversewrap();
- break;
-#ifdef ALLOWLOGGING
- case 46: /* logging */
-#ifdef ALLOWLOGFILEONOFF
- /*
- * if this feature is enabled, logging may be
- * enabled and disabled via escape sequences.
- */
- if (func == bitset)
- StartLog(screen);
- else
- CloseLog(screen);
-#else
- Bell(XkbBI_Info, 0);
- Bell(XkbBI_Info, 0);
-#endif /* ALLOWLOGFILEONOFF */
- break;
-#endif
- case 1049: /* alternate buffer & cursor */
- if (!termw->misc.titeInhibit) {
- if (func == bitset) {
- CursorSave(termw);
- ToAlternate(screen);
- ClearScreen(screen);
- } else {
- FromAlternate(screen);
- CursorRestore(termw);
- }
- } else if (termw->misc.tiXtraScroll) {
- if (func == bitset) {
- xtermScroll(screen, screen->max_row);
- }
- }
- break;
- case 1047:
- case 47: /* alternate buffer */
- if (!termw->misc.titeInhibit) {
- if (func == bitset) {
- ToAlternate(screen);
- } else {
- if (screen->alternate
- && (param[i] == 1047))
- ClearScreen(screen);
- FromAlternate(screen);
- }
- } else if (termw->misc.tiXtraScroll) {
- if (func == bitset) {
- xtermScroll(screen, screen->max_row);
- }
- }
- break;
- case 66: /* DECNKM */
- (*func) (&termw->keyboard.flags, MODE_DECKPAM);
- update_appkeypad();
- break;
- case 67: /* DECBKM */
- /* back-arrow mapped to backspace or delete(D) */
- (*func) (&termw->keyboard.flags, MODE_DECBKM);
- TRACE(("DECSET DECBKM %s\n",
- BtoS(termw->keyboard.flags & MODE_DECBKM)));
- update_decbkm();
- break;
- case SET_VT200_MOUSE: /* xterm bogus sequence */
- MotionOff(screen, termw);
- set_mousemode(VT200_MOUSE);
- break;
- case SET_VT200_HIGHLIGHT_MOUSE: /* xterm sequence w/hilite tracking */
- MotionOff(screen, termw);
- set_mousemode(VT200_HIGHLIGHT_MOUSE);
- break;
- case SET_BTN_EVENT_MOUSE:
- MotionOff(screen, termw);
- set_mousemode(BTN_EVENT_MOUSE);
- break;
- case SET_ANY_EVENT_MOUSE:
- set_mousemode(ANY_EVENT_MOUSE);
- if (screen->send_mouse_pos == MOUSE_OFF) {
- MotionOff(screen, term);
- } else {
- MotionOn(screen, term);
- }
- break;
- case 1010: /* rxvt */
- screen->scrollttyoutput = (func == bitset) ? ON : OFF;
- update_scrollttyoutput();
- break;
- case 1011: /* rxvt */
- screen->scrollkey = (func == bitset) ? ON : OFF;
- update_scrollkey();
- break;
-#if OPT_NUM_LOCK
- case 1035:
- term->misc.real_NumLock = (func == bitset) ? ON : OFF;
- update_num_lock();
- break;
- case 1036:
- screen->meta_sends_esc = (func == bitset) ? ON : OFF;
- update_meta_esc();
- break;
-#endif
- case 1037:
- screen->delete_is_del = (func == bitset) ? ON : OFF;
- update_delete_del();
- break;
- case 1048:
- if (!termw->misc.titeInhibit) {
- if (func == bitset)
- CursorSave(termw);
- else
- CursorRestore(termw);
- }
- break;
- case 1051:
- set_keyboard_type(keyboardIsSun, func == bitset);
- break;
-#if OPT_HP_FUNC_KEYS
- case 1052:
- set_keyboard_type(keyboardIsHP, func == bitset);
- break;
-#endif
-#if OPT_SCO_FUNC_KEYS
- case 1053:
- set_keyboard_type(keyboardIsSCO, func == bitset);
- break;
-#endif
- case 1060:
- set_keyboard_type(keyboardIsLegacy, func == bitset);
- break;
-#if OPT_SUNPC_KBD
- case 1061:
- set_keyboard_type(keyboardIsVT220, func == bitset);
- break;
-#endif
-#if OPT_READLINE
- case SET_BUTTON1_MOVE_POINT:
- set_mouseflag(click1_moves);
- break;
- case SET_BUTTON2_MOVE_POINT:
- set_mouseflag(paste_moves);
- break;
- case SET_DBUTTON3_DELETE:
- set_mouseflag(dclick3_deletes);
- break;
- case SET_PASTE_IN_BRACKET:
- set_mouseflag(paste_brackets);
- break;
- case SET_PASTE_QUOTE:
- set_mouseflag(paste_quotes);
- break;
- case SET_PASTE_LITERAL_NL:
- set_mouseflag(paste_literal_nl);
- break;
-#endif /* OPT_READLINE */
- }
- }
-}
-
-/*
- * process xterm private modes save
- */
-static void
-savemodes(XtermWidget termw)
-{
- TScreen *screen = &termw->screen;
- int i;
-
- for (i = 0; i < nparam; i++) {
- TRACE(("savemodes %d\n", param[i]));
- switch (param[i]) {
- case 1: /* DECCKM */
- DoSM(DP_DECCKM, termw->keyboard.flags & MODE_DECCKM);
- break;
- case 3: /* DECCOLM */
- if (screen->c132)
- DoSM(DP_DECCOLM, termw->flags & IN132COLUMNS);
- break;
- case 4: /* DECSCLM (slow scroll) */
- DoSM(DP_DECSCLM, termw->flags & SMOOTHSCROLL);
- break;
- case 5: /* DECSCNM */
- DoSM(DP_DECSCNM, termw->flags & REVERSE_VIDEO);
- break;
- case 6: /* DECOM */
- DoSM(DP_DECOM, termw->flags & ORIGIN);
- break;
-
- case 7: /* DECAWM */
- DoSM(DP_DECAWM, termw->flags & WRAPAROUND);
- break;
- case 8: /* DECARM */
- /* ignore autorepeat */
- break;
- case SET_X10_MOUSE: /* mouse bogus sequence */
- DoSM(DP_X_X10MSE, screen->send_mouse_pos);
- break;
-#if OPT_TOOLBAR
- case 10: /* rxvt */
- DoSM(DP_TOOLBAR, resource.toolBar);
- break;
-#endif
-#if OPT_BLINK_CURS
- case 12: /* att610: Start/stop blinking cursor */
- if (screen->cursor_blink_res) {
- DoSM(DP_CRS_BLINK, screen->cursor_blink_esc);
- }
- break;
-#endif
- case 18: /* DECPFF: print form feed */
- DoSM(DP_PRN_FORMFEED, screen->printer_formfeed);
- break;
- case 19: /* DECPEX: print extent */
- DoSM(DP_PRN_EXTENT, screen->printer_extent);
- break;
- case 25: /* DECTCEM: Show/hide cursor (VT200) */
- DoSM(DP_CRS_VISIBLE, screen->cursor_set);
- break;
- case 40: /* 132 column mode */
- DoSM(DP_X_DECCOLM, screen->c132);
- break;
- case 41: /* curses hack */
- DoSM(DP_X_MORE, screen->curses);
- break;
- case 44: /* margin bell */
- DoSM(DP_X_MARGIN, screen->marginbell);
- break;
- case 45: /* reverse wraparound */
- DoSM(DP_X_REVWRAP, termw->flags & REVERSEWRAP);
- break;
-#ifdef ALLOWLOGGING
- case 46: /* logging */
- DoSM(DP_X_LOGGING, screen->logging);
- break;
-#endif
- case 1047: /* alternate buffer */
- /* FALLTHRU */
- case 47: /* alternate buffer */
- DoSM(DP_X_ALTSCRN, screen->alternate);
- break;
- case SET_VT200_MOUSE: /* mouse bogus sequence */
- case SET_VT200_HIGHLIGHT_MOUSE:
- case SET_BTN_EVENT_MOUSE:
- case SET_ANY_EVENT_MOUSE:
- DoSM(DP_X_MOUSE, screen->send_mouse_pos);
- break;
- case 1048:
- if (!termw->misc.titeInhibit) {
- CursorSave(termw);
- }
- break;
-#if OPT_READLINE
- case SET_BUTTON1_MOVE_POINT:
- SCREEN_FLAG_save(screen, click1_moves);
- break;
- case SET_BUTTON2_MOVE_POINT:
- SCREEN_FLAG_save(screen, paste_moves);
- break;
- case SET_DBUTTON3_DELETE:
- SCREEN_FLAG_save(screen, dclick3_deletes);
- break;
- case SET_PASTE_IN_BRACKET:
- SCREEN_FLAG_save(screen, paste_brackets);
- break;
- case SET_PASTE_QUOTE:
- SCREEN_FLAG_save(screen, paste_quotes);
- break;
- case SET_PASTE_LITERAL_NL:
- SCREEN_FLAG_save(screen, paste_literal_nl);
- break;
-#endif /* OPT_READLINE */
- }
- }
-}
-
-/*
- * process xterm private modes restore
- */
-static void
-restoremodes(XtermWidget termw)
-{
- TScreen *screen = &termw->screen;
- int i, j;
-
- for (i = 0; i < nparam; i++) {
- TRACE(("restoremodes %d\n", param[i]));
- switch (param[i]) {
- case 1: /* DECCKM */
- bitcpy(&termw->keyboard.flags,
- screen->save_modes[DP_DECCKM], MODE_DECCKM);
- update_appcursor();
- break;
- case 3: /* DECCOLM */
- if (screen->c132) {
- ClearScreen(screen);
- CursorSet(screen, 0, 0, termw->flags);
- if ((j = (screen->save_modes[DP_DECCOLM] & IN132COLUMNS)
- ? 132 : 80) != ((termw->flags & IN132COLUMNS)
- ? 132 : 80) || j != MaxCols(screen))
- RequestResize(termw, -1, j, True);
- bitcpy(&termw->flags,
- screen->save_modes[DP_DECCOLM],
- IN132COLUMNS);
- }
- break;
- case 4: /* DECSCLM (slow scroll) */
- if (screen->save_modes[DP_DECSCLM] & SMOOTHSCROLL) {
- screen->jumpscroll = 0;
- if (screen->scroll_amt)
- FlushScroll(screen);
- } else
- screen->jumpscroll = 1;
- bitcpy(&termw->flags, screen->save_modes[DP_DECSCLM], SMOOTHSCROLL);
- update_jumpscroll();
- break;
- case 5: /* DECSCNM */
- if ((screen->save_modes[DP_DECSCNM] ^ termw->flags) & REVERSE_VIDEO) {
- bitcpy(&termw->flags, screen->save_modes[DP_DECSCNM], REVERSE_VIDEO);
- ReverseVideo(termw);
- /* update_reversevideo done in RevVid */
- }
- break;
- case 6: /* DECOM */
- bitcpy(&termw->flags, screen->save_modes[DP_DECOM], ORIGIN);
- CursorSet(screen, 0, 0, termw->flags);
- break;
-
- case 7: /* DECAWM */
- bitcpy(&termw->flags, screen->save_modes[DP_DECAWM], WRAPAROUND);
- update_autowrap();
- break;
- case 8: /* DECARM */
- /* ignore autorepeat */
- break;
- case SET_X10_MOUSE: /* MIT bogus sequence */
- DoRM(DP_X_X10MSE, screen->send_mouse_pos);
- break;
-#if OPT_TOOLBAR
- case 10: /* rxvt */
- DoRM(DP_TOOLBAR, resource.toolBar);
- ShowToolbar(resource.toolBar);
- break;
-#endif
-#if OPT_BLINK_CURS
- case 12: /* att610: Start/stop blinking cursor */
- if (screen->cursor_blink_res) {
- DoRM(DP_CRS_BLINK, screen->cursor_blink_esc);
- SetCursorBlink(screen, screen->cursor_blink);
- }
- break;
-#endif
- case 18: /* DECPFF: print form feed */
- DoRM(DP_PRN_FORMFEED, screen->printer_formfeed);
- break;
- case 19: /* DECPEX: print extent */
- DoRM(DP_PRN_EXTENT, screen->printer_extent);
- break;
- case 25: /* DECTCEM: Show/hide cursor (VT200) */
- DoRM(DP_CRS_VISIBLE, screen->cursor_set);
- break;
- case 40: /* 132 column mode */
- DoRM(DP_X_DECCOLM, screen->c132);
- update_allow132();
- break;
- case 41: /* curses hack */
- DoRM(DP_X_MORE, screen->curses);
- update_cursesemul();
- break;
- case 44: /* margin bell */
- if ((DoRM(DP_X_MARGIN, screen->marginbell)) == 0)
- screen->bellarmed = -1;
- update_marginbell();
- break;
- case 45: /* reverse wraparound */
- bitcpy(&termw->flags, screen->save_modes[DP_X_REVWRAP], REVERSEWRAP);
- update_reversewrap();
- break;
-#ifdef ALLOWLOGGING
- case 46: /* logging */
-#ifdef ALLOWLOGFILEONOFF
- if (screen->save_modes[DP_X_LOGGING])
- StartLog(screen);
- else
- CloseLog(screen);
-#endif /* ALLOWLOGFILEONOFF */
- /* update_logging done by StartLog and CloseLog */
- break;
-#endif
- case 1047: /* alternate buffer */
- /* FALLTHRU */
- case 47: /* alternate buffer */
- if (!termw->misc.titeInhibit) {
- if (screen->save_modes[DP_X_ALTSCRN])
- ToAlternate(screen);
- else
- FromAlternate(screen);
- /* update_altscreen done by ToAlt and FromAlt */
- } else if (termw->misc.tiXtraScroll) {
- if (screen->save_modes[DP_X_ALTSCRN]) {
- xtermScroll(screen, screen->max_row);
- }
- }
- break;
- case SET_VT200_MOUSE: /* mouse bogus sequence */
- case SET_VT200_HIGHLIGHT_MOUSE:
- case SET_BTN_EVENT_MOUSE:
- case SET_ANY_EVENT_MOUSE:
- DoRM(DP_X_MOUSE, screen->send_mouse_pos);
- break;
- case 1048:
- if (!termw->misc.titeInhibit) {
- CursorRestore(termw);
- }
- break;
-#if OPT_READLINE
- case SET_BUTTON1_MOVE_POINT:
- SCREEN_FLAG_restore(screen, click1_moves);
- break;
- case SET_BUTTON2_MOVE_POINT:
- SCREEN_FLAG_restore(screen, paste_moves);
- break;
- case SET_DBUTTON3_DELETE:
- SCREEN_FLAG_restore(screen, dclick3_deletes);
- break;
- case SET_PASTE_IN_BRACKET:
- SCREEN_FLAG_restore(screen, paste_brackets);
- break;
- case SET_PASTE_QUOTE:
- SCREEN_FLAG_restore(screen, paste_quotes);
- break;
- case SET_PASTE_LITERAL_NL:
- SCREEN_FLAG_restore(screen, paste_literal_nl);
- break;
-#endif /* OPT_READLINE */
- }
- }
-}
-
-/*
- * Report window label (icon or title) in dtterm protocol
- * ESC ] code label ESC backslash
- */
-static void
-report_win_label(TScreen * screen,
- int code,
- XTextProperty * text,
- Status ok)
-{
- char **list;
- int length = 0;
-
- reply.a_type = ESC;
- unparseputc(ESC, screen->respond);
- unparseputc(']', screen->respond);
- unparseputc(code, screen->respond);
-
- if (ok) {
- if (XTextPropertyToStringList(text, &list, &length)) {
- int n, c;
- for (n = 0; n < length; n++) {
- char *s = list[n];
- while ((c = *s++) != '\0')
- unparseputc(c, screen->respond);
- }
- XFreeStringList(list);
- }
- if (text->value != 0)
- XFree(text->value);
- }
-
- unparseputc(ESC, screen->respond);
- unparseputc('\\', screen->respond);
-}
-
-/*
- * Window operations (from CDE dtterm description, as well as extensions).
- * See also "allowWindowOps" resource.
- */
-static void
-window_ops(XtermWidget termw)
-{
- TScreen *screen = &termw->screen;
- XWindowChanges values;
- XWindowAttributes win_attrs;
- XTextProperty text;
- unsigned value_mask;
- unsigned root_width;
- unsigned root_height;
-
- TRACE(("window_ops %d\n", param[0]));
- switch (param[0]) {
- case 1: /* Restore (de-iconify) window */
- XMapWindow(screen->display,
- VShellWindow);
- break;
-
- case 2: /* Minimize (iconify) window */
- XIconifyWindow(screen->display,
- VShellWindow,
- DefaultScreen(screen->display));
- break;
-
- case 3: /* Move the window to the given position */
- values.x = param[1];
- values.y = param[2];
- value_mask = (CWX | CWY);
- XReconfigureWMWindow(screen->display,
- VShellWindow,
- DefaultScreen(screen->display),
- value_mask,
- &values);
- break;
-
- case 4: /* Resize the window to given size in pixels */
- RequestResize(termw, param[1], param[2], False);
- break;
-
- case 5: /* Raise the window to the front of the stack */
- XRaiseWindow(screen->display, VShellWindow);
- break;
-
- case 6: /* Lower the window to the bottom of the stack */
- XLowerWindow(screen->display, VShellWindow);
- break;
-
- case 7: /* Refresh the window */
- Redraw();
- break;
-
- case 8: /* Resize the text-area, in characters */
- RequestResize(termw, param[1], param[2], True);
- break;
-
-#if OPT_MAXIMIZE
- case 9: /* Maximize or restore */
- RequestMaximize(termw, param[1]);
- break;
-#endif
-
- case 11: /* Report the window's state */
- XGetWindowAttributes(screen->display,
- VWindow(screen),
- &win_attrs);
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 1;
- reply.a_param[0] = (win_attrs.map_state == IsViewable) ? 1 : 2;
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-
- case 13: /* Report the window's position */
- XGetWindowAttributes(screen->display,
- WMFrameWindow(termw),
- &win_attrs);
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 3;
- reply.a_param[0] = 3;
- reply.a_param[1] = win_attrs.x;
- reply.a_param[2] = win_attrs.y;
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-
- case 14: /* Report the window's size in pixels */
- XGetWindowAttributes(screen->display,
- VWindow(screen),
- &win_attrs);
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 3;
- reply.a_param[0] = 4;
- /*FIXME: find if dtterm uses
- * win_attrs.height or Height
- * win_attrs.width or Width
- */
- reply.a_param[1] = Height(screen);
- reply.a_param[2] = Width(screen);
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-
- case 18: /* Report the text's size in characters */
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 3;
- reply.a_param[0] = 8;
- reply.a_param[1] = MaxRows(screen);
- reply.a_param[2] = MaxCols(screen);
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-
-#if OPT_MAXIMIZE
- case 19: /* Report the screen's size, in characters */
- if (!QueryMaximize(term, &root_height, &root_width)) {
- root_height = 0;
- root_width = 0;
- }
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 3;
- reply.a_param[0] = 9;
- reply.a_param[1] = root_height / FontHeight(screen);
- reply.a_param[2] = root_width / FontWidth(screen);
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-#endif
-
- case 20: /* Report the icon's label */
- report_win_label(screen, 'L', &text,
- XGetWMIconName(screen->display, VShellWindow, &text));
- break;
-
- case 21: /* Report the window's title */
- report_win_label(screen, 'l', &text,
- XGetWMName(screen->display, VShellWindow, &text));
- break;
-
- default: /* DECSLPP (24, 25, 36, 48, 72, 144) */
- if (param[0] >= 24)
- RequestResize(termw, param[0], -1, True);
- break;
- }
-}
-
-/*
- * set a bit in a word given a pointer to the word and a mask.
- */
-static void
-bitset(unsigned *p, unsigned mask)
-{
- *p |= mask;
-}
-
-/*
- * clear a bit in a word given a pointer to the word and a mask.
- */
-static void
-bitclr(unsigned *p, unsigned mask)
-{
- *p &= ~mask;
-}
-
-/*
- * Copy bits from one word to another, given a mask
- */
-static void
-bitcpy(unsigned *p, unsigned q, unsigned mask)
-{
- bitclr(p, mask);
- bitset(p, q & mask);
-}
-
-void
-unparseputc1(int c, int fd)
-{
- if (c >= 0x80 && c <= 0x9F) {
- if (!term->screen.control_eight_bits) {
- unparseputc(A2E(ESC), fd);
- c = A2E(c - 0x40);
- }
- }
- unparseputc(c, fd);
-}
-
-void
-unparseseq(ANSI * ap, int fd)
-{
- int c;
- int i;
- int inters;
-
- unparseputc1(c = ap->a_type, fd);
- if (c == ESC
- || c == DCS
- || c == CSI
- || c == OSC
- || c == PM
- || c == APC
- || c == SS3) {
- if (ap->a_pintro != 0)
- unparseputc(ap->a_pintro, fd);
- for (i = 0; i < ap->a_nparam; ++i) {
- if (i != 0)
- unparseputc(';', fd);
- unparseputn((unsigned int) ap->a_param[i], fd);
- }
- if ((inters = ap->a_inters) != 0) {
- for (i = 3; i >= 0; --i) {
- c = CharOf(inters >> (8 * i));
- if (c != 0)
- unparseputc(c, fd);
- }
- }
- unparseputc((char) ap->a_final, fd);
- }
-}
-
-static void
-unparseputn(unsigned int n, int fd)
-{
- unsigned int q;
-
- q = n / 10;
- if (q != 0)
- unparseputn(q, fd);
- unparseputc((char) ('0' + (n % 10)), fd);
-}
-
-void
-unparseputc(int c, int fd)
-{
- IChar buf[2];
- unsigned i = 1;
-
-#if OPT_TCAP_QUERY
- /*
- * If we're returning a termcap string, it has to be translated since
- * a DCS must not contain any characters except for the normal 7-bit
- * printable ASCII (counting tab, carriage return, etc). For now,
- * just use hexadecimal for the whole thing.
- */
- if (term->screen.tc_query >= 0) {
- char tmp[3];
- sprintf(tmp, "%02X", c & 0xFF);
- buf[0] = tmp[0];
- buf[1] = tmp[1];
- i = 2;
- } else
-#endif
- if ((buf[0] = c) == '\r' && (term->flags & LINEFEED)) {
- buf[1] = '\n';
- i++;
- }
-#ifdef VMS
- tt_write(&buf, i);
-#else /* VMS */
- writePtyData(fd, buf, i);
-#endif /* VMS */
-
- /* If send/receive mode is reset, we echo characters locally */
- if ((term->keyboard.flags & MODE_SRM) == 0) {
- (void) doparsing((unsigned) c, &myState);
- }
-}
-
-void
-unparseputs(char *s, int fd)
-{
- while (*s)
- unparseputc(*s++, fd);
-}
-
-void
-ToggleAlternate(TScreen * screen)
-{
- if (screen->alternate)
- FromAlternate(screen);
- else
- ToAlternate(screen);
-}
-
-static void
-ToAlternate(TScreen * screen)
-{
- if (screen->alternate)
- return;
- TRACE(("ToAlternate\n"));
- if (!screen->altbuf)
- screen->altbuf = Allocate(MaxRows(screen), MaxCols(screen),
- &screen->abuf_address);
- SwitchBufs(screen);
- screen->alternate = True;
- update_altscreen();
-}
-
-static void
-FromAlternate(TScreen * screen)
-{
- if (!screen->alternate)
- return;
- TRACE(("FromAlternate\n"));
- if (screen->scroll_amt)
- FlushScroll(screen);
- screen->alternate = False;
- SwitchBufs(screen);
- update_altscreen();
-}
-
-static void
-SwitchBufs(TScreen * screen)
-{
- int rows, top;
-
- if (screen->cursor_state)
- HideCursor();
-
- rows = MaxRows(screen);
- SwitchBufPtrs(screen);
-
- if ((top = -screen->topline) < rows) {
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (top == 0)
- XClearWindow(screen->display, VWindow(screen));
- else
- XClearArea(screen->display,
- VWindow(screen),
- (int) OriginX(screen),
- (int) top * FontHeight(screen) + screen->border,
- (unsigned) Width(screen),
- (unsigned) (rows - top) * FontHeight(screen),
- False);
- }
- ScrnUpdate(screen, 0, 0, rows, MaxCols(screen), False);
-}
-
-/* swap buffer line pointers between alt and regular screens */
-void
-SwitchBufPtrs(TScreen * screen)
-{
- size_t len = ScrnPointers(screen, (unsigned) MaxRows(screen));
-
- memcpy((char *) screen->save_ptr, (char *) screen->visbuf, len);
- memcpy((char *) screen->visbuf, (char *) screen->altbuf, len);
- memcpy((char *) screen->altbuf, (char *) screen->save_ptr, len);
-}
-
-void
-VTRun(void)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("VTRun ...\n"));
-
- if (!screen->Vshow) {
- set_vt_visibility(True);
- }
- update_vttekmode();
- update_vtshow();
- update_tekshow();
- set_vthide_sensitivity();
-
- if (screen->allbuf == NULL)
- VTallocbuf();
-
- screen->cursor_state = OFF;
- screen->cursor_set = ON;
-#if OPT_BLINK_CURS
- if (DoStartBlinking(screen))
- StartBlinking(screen);
-#endif
-
-#if OPT_TEK4014
- if (Tpushb > Tpushback) {
- fillPtyData(screen, VTbuffer, (char *) Tpushback, Tpushb - Tpushback);
- Tpushb = Tpushback;
- }
-#endif
- if (!setjmp(VTend))
- VTparse();
- StopBlinking(screen);
- HideCursor();
- screen->cursor_set = OFF;
-}
-
-/*ARGSUSED*/
-static void
-VTExpose(Widget w GCC_UNUSED,
- XEvent * event,
- Region region GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
-#ifdef DEBUG
- if (debug)
- fputs("Expose\n", stderr);
-#endif /* DEBUG */
- if (event->type == Expose)
- HandleExposure(screen, event);
-}
-
-static void
-VTGraphicsOrNoExpose(XEvent * event)
-{
- TScreen *screen = &term->screen;
- if (screen->incopy <= 0) {
- screen->incopy = 1;
- if (screen->scrolls > 0)
- screen->scrolls--;
- }
- if (event->type == GraphicsExpose)
- if (HandleExposure(screen, event))
- screen->cursor_state = OFF;
- if ((event->type == NoExpose)
- || ((XGraphicsExposeEvent *) event)->count == 0) {
- if (screen->incopy <= 0 && screen->scrolls > 0)
- screen->scrolls--;
- if (screen->scrolls)
- screen->incopy = -1;
- else
- screen->incopy = 0;
- }
-}
-
-/*ARGSUSED*/
-static void
-VTNonMaskableEvent(Widget w GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XEvent * event,
- Boolean * cont GCC_UNUSED)
-{
- switch (event->type) {
- case GraphicsExpose:
- case NoExpose:
- VTGraphicsOrNoExpose(event);
- break;
- }
-}
-
-static void
-VTResize(Widget w)
-{
- if (XtIsRealized(w)) {
- ScreenResize(&term->screen, term->core.width, term->core.height, &term->flags);
- }
-}
-
-#define okDimension(src,dst) ((src <= 32767) && ((dst = src) == src))
-
-static void
-RequestResize(XtermWidget termw, int rows, int cols, int text)
-{
-#ifndef nothack
- XSizeHints sizehints;
- long supp;
-#endif
- TScreen *screen = &termw->screen;
- unsigned long value;
- Dimension replyWidth, replyHeight;
- Dimension askedWidth, askedHeight;
- XtGeometryResult status;
- XWindowAttributes attrs;
-
- TRACE(("RequestResize(rows=%d, cols=%d, text=%d)\n", rows, cols, text));
-
- if ((askedWidth = cols) < cols
- || (askedHeight = rows) < rows)
- return;
-
- if (askedHeight == 0
- || askedWidth == 0
- || term->misc.limit_resize > 0) {
- XGetWindowAttributes(XtDisplay(termw),
- RootWindowOfScreen(XtScreen(termw)), &attrs);
- }
-
- if (text) {
- if ((value = rows) != 0) {
- if (rows < 0)
- value = MaxRows(screen);
- value *= FontHeight(screen);
- value += (2 * screen->border);
- if (!okDimension(value, askedHeight))
- return;
- }
-
- if ((value = cols) != 0) {
- if (cols < 0)
- value = MaxCols(screen);
- value *= FontWidth(screen);
- value += (2 * screen->border) + ScrollbarWidth(screen);
- if (!okDimension(value, askedWidth))
- return;
- }
-
- } else {
- if (rows < 0)
- askedHeight = FullHeight(screen);
- if (cols < 0)
- askedWidth = FullWidth(screen);
- }
-
- if (rows == 0)
- askedHeight = attrs.height;
- if (cols == 0)
- askedWidth = attrs.width;
-
- if (term->misc.limit_resize > 0) {
- Dimension high = term->misc.limit_resize * attrs.height;
- Dimension wide = term->misc.limit_resize * attrs.width;
- if (high < attrs.height)
- high = attrs.height;
- if (askedHeight > high)
- askedHeight = high;
- if (wide < attrs.width)
- wide = attrs.width;
- if (askedWidth > wide)
- askedWidth = wide;
- }
-#ifndef nothack
- if (!XGetWMNormalHints(screen->display, VShellWindow,
- &sizehints, &supp))
- bzero(&sizehints, sizeof(sizehints));
-#endif
-
- status = XtMakeResizeRequest((Widget) termw,
- askedWidth, askedHeight,
- &replyWidth, &replyHeight);
- TRACE(("charproc.c XtMakeResizeRequest %dx%d -> %dx%d (status %d)\n",
- askedHeight, askedWidth,
- replyHeight, replyWidth,
- status));
-
- if (status == XtGeometryYes ||
- status == XtGeometryDone) {
- ScreenResize(&termw->screen,
- replyWidth,
- replyHeight,
- &termw->flags);
- }
-#ifndef nothack
- /*
- * XtMakeResizeRequest() has the undesirable side-effect of clearing
- * the window manager's hints, even on a failed request. This would
- * presumably be fixed if the shell did its own work.
- */
- if (sizehints.flags
- && replyHeight
- && replyWidth) {
- sizehints.height = replyHeight;
- sizehints.width = replyWidth;
-
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_HINTS(&sizehints);
- XSetWMNormalHints(screen->display, VShellWindow, &sizehints);
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_WM_HINTS(termw);
- }
-#endif
-
- XSync(screen->display, False); /* synchronize */
- if (XtAppPending(app_con))
- xevents();
-}
-
-static String xterm_trans =
-"<ClientMessage>WM_PROTOCOLS: DeleteWindow()\n\
- <MappingNotify>: KeyboardMapping()\n";
-
-int
-VTInit(void)
-{
- TScreen *screen = &term->screen;
- Widget vtparent = SHELL_OF(term);
-
- XtRealizeWidget(vtparent);
- XtOverrideTranslations(vtparent, XtParseTranslationTable(xterm_trans));
- (void) XSetWMProtocols(XtDisplay(vtparent), XtWindow(vtparent),
- &wm_delete_window, 1);
- TRACE_TRANS("shell", vtparent);
- TRACE_TRANS("vt100", (Widget) (term));
-
- if (screen->allbuf == NULL)
- VTallocbuf();
- return (1);
-}
-
-static void
-VTallocbuf(void)
-{
- TScreen *screen = &term->screen;
- int nrows = MaxRows(screen);
-
- /* allocate screen buffer now, if necessary. */
- if (screen->scrollWidget)
- nrows += screen->savelines;
- screen->allbuf = Allocate(nrows, MaxCols(screen),
- &screen->sbuf_address);
- if (screen->scrollWidget)
- screen->visbuf = &screen->allbuf[MAX_PTRS * screen->savelines];
- else
- screen->visbuf = screen->allbuf;
- return;
-}
-
-static void
-VTClassInit(void)
-{
- XtAddConverter(XtRString, XtRGravity, XmuCvtStringToGravity,
- (XtConvertArgList) NULL, (Cardinal) 0);
-}
-
-/*
- * The whole wnew->screen struct is zeroed in VTInitialize. Use these macros
- * where applicable for copying the pieces from the request widget into the
- * new widget. We do not have to use them for wnew->misc, but the associated
- * traces are very useful for debugging.
- */
-#if OPT_TRACE
-#define init_Bres(name) \
- TRACE(("init " #name " = %s\n", \
- BtoS(wnew->name = request->name)))
-#define init_Dres(name) \
- TRACE(("init " #name " = %f\n", \
- wnew->name = request->name))
-#define init_Ires(name) \
- TRACE(("init " #name " = %d\n", \
- wnew->name = request->name))
-#define init_Sres(name) \
- TRACE(("init " #name " = \"%s\"\n", \
- (wnew->name = x_strtrim(request->name)) != NULL \
- ? wnew->name : "<null>"))
-#define init_Tres(offset) \
- TRACE(("init screen.Tcolors[" #offset "] = %#lx\n", \
- fill_Tres(wnew, request, offset)))
-#else
-#define init_Bres(name) wnew->name = request->name
-#define init_Dres(name) wnew->name = request->name
-#define init_Ires(name) wnew->name = request->name
-#define init_Sres(name) wnew->name = x_strtrim(request->name)
-#define init_Tres(offset) fill_Tres(wnew, request, offset)
-#endif
-
-#if OPT_COLOR_RES
-/*
- * Override the use of XtDefaultForeground/XtDefaultBackground to make some
- * colors, such as cursor color, use the actual foreground/background value
- * if there is no explicit resource value used.
- */
-static Pixel
-fill_Tres(XtermWidget target, XtermWidget source, int offset)
-{
- char *name;
- ScrnColors temp;
-
- target->screen.Tcolors[offset] = source->screen.Tcolors[offset];
- target->screen.Tcolors[offset].mode = False;
-
- if ((name = x_strtrim(target->screen.Tcolors[offset].resource)) != 0)
- target->screen.Tcolors[offset].resource = name;
-
- if (name == 0) {
- target->screen.Tcolors[offset].value = target->dft_foreground;
- } else if (!x_strcasecmp(name, XtDefaultForeground)) {
- target->screen.Tcolors[offset].value =
- ((offset == TEXT_FG || offset == TEXT_BG)
- ? target->dft_foreground
- : target->screen.Tcolors[TEXT_FG].value);
- } else if (!x_strcasecmp(name, XtDefaultBackground)) {
- target->screen.Tcolors[offset].value =
- ((offset == TEXT_FG || offset == TEXT_BG)
- ? target->dft_background
- : target->screen.Tcolors[TEXT_BG].value);
- } else {
- if (AllocateTermColor(target, &temp, offset, name)) {
- target->screen.Tcolors[offset].value = temp.colors[offset];
- }
- }
- return target->screen.Tcolors[offset].value;
-}
-#else
-#define fill_Tres(target, source, offset) \
- target->screen.Tcolors[offset] = source->screen.Tcolors[offset]
-#endif
-
-#if OPT_WIDE_CHARS
-static void
-VTInitialize_locale(XtermWidget request)
-{
- Bool is_utf8 = xtermEnvUTF8();
-
- TRACE(("VTInitialize_locale\n"));
- TRACE(("... request screen.utf8_mode = %d\n", request->screen.utf8_mode));
-
- if (request->screen.utf8_mode < 0)
- request->screen.utf8_mode = uFalse;
-
- if (request->screen.utf8_mode > 3)
- request->screen.utf8_mode = uDefault;
-
- request->screen.latin9_mode = 0;
- request->screen.unicode_font = 0;
-#if OPT_LUIT_PROG
- request->misc.callfilter = 0;
- request->misc.use_encoding = 0;
-
- TRACE(("... setup for luit:\n"));
- TRACE(("... request misc.locale_str = \"%s\"\n", request->misc.locale_str));
-
- if (request->screen.utf8_mode == uFalse) {
- TRACE(("... command-line +u8 overrides\n"));
- } else
-#if OPT_MINI_LUIT
- if (x_strcasecmp(request->misc.locale_str, "CHECKFONT") == 0) {
- int fl = (request->misc.default_font.f_n
- ? strlen(request->misc.default_font.f_n)
- : 0);
- if (fl > 11
- && x_strcasecmp(request->misc.default_font.f_n + fl - 11,
- "-ISO10646-1") == 0) {
- request->screen.unicode_font = 1;
- /* unicode font, use True */
-#ifdef HAVE_LANGINFO_CODESET
- if (!strcmp(xtermEnvEncoding(), "ANSI_X3.4-1968")
- || !strcmp(xtermEnvEncoding(), "ISO-8859-1")) {
- if (request->screen.utf8_mode == uDefault)
- request->screen.utf8_mode = uFalse;
- } else if (!strcmp(xtermEnvEncoding(), "ISO-8859-15")) {
- if (request->screen.utf8_mode == uDefault)
- request->screen.utf8_mode = uFalse;
- request->screen.latin9_mode = 1;
- } else {
- request->misc.callfilter = is_utf8 ? 0 : 1;
- request->screen.utf8_mode = uAlways;
- }
-#else
- request->misc.callfilter = is_utf8 ? 0 : 1;
- request->screen.utf8_mode = uAlways;
-#endif
- } else {
- /* other encoding, use False */
- if (request->screen.utf8_mode == uDefault) {
- request->screen.utf8_mode = is_utf8 ? uAlways : uFalse;
- }
- }
- } else
-#endif /* OPT_MINI_LUIT */
- if (x_strcasecmp(request->misc.locale_str, "TRUE") == 0 ||
- x_strcasecmp(request->misc.locale_str, "ON") == 0 ||
- x_strcasecmp(request->misc.locale_str, "YES") == 0 ||
- x_strcasecmp(request->misc.locale_str, "AUTO") == 0 ||
- strcmp(request->misc.locale_str, "1") == 0) {
- /* when true ... fully obeying LC_CTYPE locale */
- request->misc.callfilter = is_utf8 ? 0 : 1;
- request->screen.utf8_mode = uAlways;
- } else if (x_strcasecmp(request->misc.locale_str, "FALSE") == 0 ||
- x_strcasecmp(request->misc.locale_str, "OFF") == 0 ||
- x_strcasecmp(request->misc.locale_str, "NO") == 0 ||
- strcmp(request->misc.locale_str, "0") == 0) {
- /* when false ... original value of utf8_mode is effective */
- if (request->screen.utf8_mode == uDefault) {
- request->screen.utf8_mode = is_utf8 ? uAlways : uFalse;
- }
- } else if (x_strcasecmp(request->misc.locale_str, "MEDIUM") == 0 ||
- x_strcasecmp(request->misc.locale_str, "SEMIAUTO") == 0) {
- /* when medium ... obeying locale only for UTF-8 and Asian */
- if (is_utf8) {
- request->screen.utf8_mode = uAlways;
- } else if (
-#ifdef MB_CUR_MAX
- MB_CUR_MAX > 1 ||
-#else
- !strncmp(xtermEnvLocale(), "ja", 2) ||
- !strncmp(xtermEnvLocale(), "ko", 2) ||
- !strncmp(xtermEnvLocale(), "zh", 2) ||
-#endif
- !strncmp(xtermEnvLocale(), "th", 2) ||
- !strncmp(xtermEnvLocale(), "vi", 2)) {
- request->misc.callfilter = 1;
- request->screen.utf8_mode = uAlways;
- } else {
- request->screen.utf8_mode = uFalse;
- }
- } else if (x_strcasecmp(request->misc.locale_str, "UTF-8") == 0 ||
- x_strcasecmp(request->misc.locale_str, "UTF8") == 0) {
- /* when UTF-8 ... UTF-8 mode */
- request->screen.utf8_mode = uAlways;
- } else {
- /* other words are regarded as encoding name passed to luit */
- request->misc.callfilter = 1;
- request->screen.utf8_mode = uAlways;
- request->misc.use_encoding = 1;
- }
- TRACE(("... updated misc.callfilter = %s\n", BtoS(request->misc.callfilter)));
- TRACE(("... updated misc.use_encoding = %s\n", BtoS(request->misc.use_encoding)));
-#else
- if (request->screen.utf8_mode == uDefault) {
- request->screen.utf8_mode = is_utf8 ? uAlways : uFalse;
- }
-#endif /* OPT_LUIT_PROG */
-
- request->screen.utf8_inparse = (request->screen.utf8_mode != uFalse);
-
- TRACE(("... updated screen.utf8_mode = %d\n", request->screen.utf8_mode));
- TRACE(("...VTInitialize_locale done\n"));
-}
-#endif
-
-/* ARGSUSED */
-static void
-VTInitialize(Widget wrequest,
- Widget new_arg,
- ArgList args GCC_UNUSED,
- Cardinal *num_args GCC_UNUSED)
-{
- XtermWidget request = (XtermWidget) wrequest;
- XtermWidget wnew = (XtermWidget) new_arg;
- Widget my_parent = SHELL_OF(wnew);
- int i;
- char *s;
-
-#if OPT_ISO_COLORS
- Bool color_ok;
-#endif
-
-#if OPT_COLOR_RES2 && (MAXCOLORS > MIN_ANSI_COLORS)
- static XtResource fake_resources[] =
- {
-#if OPT_256_COLORS
-# include <256colres.h>
-#elif OPT_88_COLORS
-# include <88colres.h>
-#endif
- };
-#endif /* OPT_COLOR_RES2 */
-
- TRACE(("VTInitialize\n"));
-
- /* Zero out the entire "screen" component of "wnew" widget, then do
- * field-by-field assignment of "screen" fields that are named in the
- * resource list.
- */
- bzero((char *) &wnew->screen, sizeof(wnew->screen));
-
- /* dummy values so that we don't try to Realize the parent shell with height
- * or width of 0, which is illegal in X. The real size is computed in the
- * xtermWidget's Realize proc, but the shell's Realize proc is called first,
- * and must see a valid size.
- */
- wnew->core.height = wnew->core.width = 1;
-
- /*
- * The definition of -rv now is that it changes the definition of
- * XtDefaultForeground and XtDefaultBackground. So, we no longer
- * need to do anything special.
- */
- wnew->screen.display = wnew->core.screen->display;
-
- /*
- * We use the default foreground/background colors to compare/check if a
- * color-resource has been set.
- */
-#define MyBlackPixel(dpy) BlackPixel(dpy,DefaultScreen(dpy))
-#define MyWhitePixel(dpy) WhitePixel(dpy,DefaultScreen(dpy))
-
- if (request->misc.re_verse) {
- wnew->dft_foreground = MyWhitePixel(wnew->screen.display);
- wnew->dft_background = MyBlackPixel(wnew->screen.display);
- } else {
- wnew->dft_foreground = MyBlackPixel(wnew->screen.display);
- wnew->dft_background = MyWhitePixel(wnew->screen.display);
- }
- init_Tres(TEXT_FG);
- init_Tres(TEXT_BG);
-
- TRACE(("Color resource initialization:\n"));
- TRACE((" Default foreground %#lx\n", wnew->dft_foreground));
- TRACE((" Default background %#lx\n", wnew->dft_background));
- TRACE((" Screen foreground %#lx\n", T_COLOR(&(wnew->screen), TEXT_FG)));
- TRACE((" Screen background %#lx\n", T_COLOR(&(wnew->screen), TEXT_BG)));
-
- wnew->screen.mouse_button = -1;
- wnew->screen.mouse_row = -1;
- wnew->screen.mouse_col = -1;
-
-#if OPT_BOX_CHARS
- init_Bres(screen.force_box_chars);
- init_Bres(screen.force_all_chars);
-#endif
- init_Bres(screen.free_bold_box);
-
- init_Bres(screen.c132);
- init_Bres(screen.curses);
- init_Bres(screen.hp_ll_bc);
-#if OPT_XMC_GLITCH
- init_Ires(screen.xmc_glitch);
- init_Ires(screen.xmc_attributes);
- init_Bres(screen.xmc_inline);
- init_Bres(screen.move_sgr_ok);
-#endif
-#if OPT_BLINK_CURS
- init_Bres(screen.cursor_blink);
- init_Ires(screen.blink_on);
- init_Ires(screen.blink_off);
- wnew->screen.cursor_blink_res = wnew->screen.cursor_blink;
-#endif
-#if OPT_BLINK_TEXT
- init_Ires(screen.blink_as_bold);
-#endif
- init_Ires(screen.border);
- init_Bres(screen.jumpscroll);
- init_Bres(screen.old_fkeys);
- init_Bres(screen.delete_is_del);
- wnew->keyboard.type = wnew->screen.old_fkeys
- ? keyboardIsLegacy
- : keyboardIsDefault;
-#ifdef ALLOWLOGGING
- init_Sres(screen.logfile);
-#endif
- init_Bres(screen.bellOnReset);
- init_Bres(screen.marginbell);
- init_Bres(screen.multiscroll);
- init_Ires(screen.nmarginbell);
- init_Ires(screen.savelines);
- init_Ires(screen.scrollBarBorder);
- init_Ires(screen.scrolllines);
- init_Bres(screen.scrollttyoutput);
- init_Bres(screen.scrollkey);
-
- init_Sres(screen.term_id);
- for (s = request->screen.term_id; *s; s++) {
- if (!isalpha(CharOf(*s)))
- break;
- }
- wnew->screen.terminal_id = atoi(s);
- if (wnew->screen.terminal_id < MIN_DECID)
- wnew->screen.terminal_id = MIN_DECID;
- if (wnew->screen.terminal_id > MAX_DECID)
- wnew->screen.terminal_id = MAX_DECID;
- TRACE(("term_id '%s' -> terminal_id %d\n",
- wnew->screen.term_id,
- wnew->screen.terminal_id));
-
- wnew->screen.vtXX_level = (wnew->screen.terminal_id / 100);
- init_Bres(screen.visualbell);
- init_Ires(screen.visualBellDelay);
- init_Bres(screen.poponbell);
- init_Ires(misc.limit_resize);
-#if OPT_NUM_LOCK
- init_Bres(misc.real_NumLock);
- init_Bres(misc.alwaysUseMods);
- wnew->misc.num_lock = 0;
- wnew->misc.alt_left = 0;
- wnew->misc.alt_right = 0;
- wnew->misc.meta_trans = False;
- wnew->misc.meta_left = 0;
- wnew->misc.meta_right = 0;
-#endif
-#if OPT_SHIFT_FONTS
- init_Bres(misc.shift_fonts);
-#endif
-#if OPT_SUNPC_KBD
- init_Ires(misc.ctrl_fkeys);
-#endif
-#if OPT_TEK4014
- init_Bres(misc.tekInhibit);
- init_Bres(misc.tekSmall);
- init_Bres(screen.TekEmu);
-#endif
-#if OPT_TCAP_QUERY
- wnew->screen.tc_query = -1;
-#endif
- wnew->misc.re_verse0 = request->misc.re_verse;
- init_Bres(misc.re_verse);
- init_Ires(screen.multiClickTime);
- init_Ires(screen.bellSuppressTime);
- init_Sres(screen.charClass);
- init_Bres(screen.cutNewline);
- init_Bres(screen.cutToBeginningOfLine);
- init_Bres(screen.highlight_selection);
- init_Bres(screen.trim_selection);
- init_Bres(screen.i18nSelections);
- init_Bres(screen.brokenSelections);
- init_Bres(screen.always_highlight);
- wnew->screen.pointer_cursor = request->screen.pointer_cursor;
-
- init_Sres(screen.answer_back);
-
- init_Sres(screen.printer_command);
- init_Bres(screen.printer_autoclose);
- init_Bres(screen.printer_extent);
- init_Bres(screen.printer_formfeed);
- init_Ires(screen.printer_controlmode);
-#if OPT_PRINT_COLORS
- init_Ires(screen.print_attributes);
-#endif
-
- init_Sres(screen.keyboard_dialect);
-
- init_Bres(screen.input_eight_bits);
- init_Bres(screen.output_eight_bits);
- init_Bres(screen.control_eight_bits);
- init_Bres(screen.backarrow_key);
- init_Bres(screen.meta_sends_esc);
-
- init_Bres(screen.allowSendEvent0);
- init_Bres(screen.allowWindowOp0);
-
- /* make a copy so that editres cannot change the resource after startup */
- wnew->screen.allowSendEvents = wnew->screen.allowSendEvent0;
- wnew->screen.allowWindowOps = wnew->screen.allowWindowOp0;
-
-#ifndef NO_ACTIVE_ICON
- wnew->screen.fnt_icon = request->screen.fnt_icon;
- init_Bres(misc.active_icon);
- init_Ires(misc.icon_border_width);
- wnew->misc.icon_border_pixel = request->misc.icon_border_pixel;
-#endif /* NO_ACTIVE_ICON */
- init_Bres(misc.titeInhibit);
- init_Bres(misc.tiXtraScroll);
- init_Bres(misc.dynamicColors);
- for (i = fontMenu_font1; i <= fontMenu_lastBuiltin; i++) {
- init_Sres(screen.MenuFontName(i));
- }
- /* set default in realize proc */
- wnew->screen.MenuFontName(fontMenu_fontdefault) = NULL;
- wnew->screen.MenuFontName(fontMenu_fontescape) = NULL;
- wnew->screen.MenuFontName(fontMenu_fontsel) = NULL;
- wnew->screen.menu_font_number = fontMenu_fontdefault;
-
-#if OPT_BROKEN_OSC
- init_Bres(screen.brokenLinuxOSC);
-#endif
-
-#if OPT_BROKEN_ST
- init_Bres(screen.brokenStringTerm);
-#endif
-
-#if OPT_C1_PRINT
- init_Bres(screen.c1_printable);
-#endif
-
-#if OPT_DEC_CHRSET
- init_Bres(screen.font_doublesize);
- init_Ires(screen.cache_doublesize);
- if (wnew->screen.cache_doublesize > NUM_CHRSET)
- wnew->screen.cache_doublesize = NUM_CHRSET;
- if (wnew->screen.cache_doublesize == 0)
- wnew->screen.font_doublesize = False;
- TRACE(("Doublesize%s enabled, up to %d fonts\n",
- wnew->screen.font_doublesize ? "" : " not",
- wnew->screen.cache_doublesize));
-#endif
-
-#if OPT_ISO_COLORS || OPT_DEC_CHRSET || OPT_WIDE_CHARS
- wnew->num_ptrs = (OFF_ATTRS + 1); /* OFF_FLAGS, OFF_CHARS, OFF_ATTRS */
-#endif
-#if OPT_ISO_COLORS
- init_Ires(screen.veryBoldColors);
- init_Bres(screen.boldColors);
- init_Bres(screen.colorAttrMode);
- init_Bres(screen.colorBDMode);
- init_Bres(screen.colorBLMode);
- init_Bres(screen.colorMode);
- init_Bres(screen.colorULMode);
- init_Bres(screen.italicULMode);
- init_Bres(screen.colorRVMode);
-
- for (i = 0, color_ok = False; i < MAXCOLORS; i++) {
-
-#if OPT_COLOR_RES2 && (MAXCOLORS > MIN_ANSI_COLORS)
- /*
- * Xt has a hardcoded limit on the maximum number of resources that can
- * be used in a widget. If we configure both luit (which implies
- * wide-characters) and 256-colors, it goes over that limit. Most
- * people would not need a resource-file with 256-colors; the default
- * values in our table are sufficient. In that case, fake the resource
- * setting by copying the default value from the table. The #define's
- * can be overridden to make these true resources.
- */
- if (i >= MIN_ANSI_COLORS && i < NUM_ANSI_COLORS) {
- wnew->screen.Acolors[i].resource
- = ((char *) fake_resources[i - MIN_ANSI_COLORS].default_addr);
- if (wnew->screen.Acolors[i].resource == 0)
- wnew->screen.Acolors[i].resource = XtDefaultForeground;
- } else
-#endif /* OPT_COLOR_RES2 */
- wnew->screen.Acolors[i] = request->screen.Acolors[i];
-
-#if OPT_COLOR_RES
- TRACE(("Acolors[%d] = %s\n", i, wnew->screen.Acolors[i].resource));
- wnew->screen.Acolors[i].mode = False;
- if (!x_strcasecmp(wnew->screen.Acolors[i].resource, XtDefaultForeground)) {
- wnew->screen.Acolors[i].value = T_COLOR(&(wnew->screen), TEXT_FG);
- wnew->screen.Acolors[i].mode = True;
- } else if (!x_strcasecmp(wnew->screen.Acolors[i].resource, XtDefaultBackground)) {
- wnew->screen.Acolors[i].value = T_COLOR(&(wnew->screen), TEXT_BG);
- wnew->screen.Acolors[i].mode = True;
- } else {
- color_ok = True;
- }
-#else
- TRACE(("Acolors[%d] = %#lx\n", i, request->screen.Acolors[i]));
- if (wnew->screen.Acolors[i] != wnew->dft_foreground &&
- wnew->screen.Acolors[i] != T_COLOR(&(wnew->screen), TEXT_FG) &&
- wnew->screen.Acolors[i] != T_COLOR(&(wnew->screen), TEXT_BG))
- color_ok = True;
-#endif
- }
-
- /*
- * Check if we're trying to use color in a monochrome screen. Disable
- * color in that case, since that would make ANSI colors unusable. A 4-bit
- * or 8-bit display is usable, so we do not have to check for anything more
- * specific.
- */
- if (color_ok) {
- Display *display = wnew->screen.display;
- XVisualInfo myTemplate, *visInfoPtr;
- int numFound;
-
- myTemplate.visualid = XVisualIDFromVisual(DefaultVisual(display,
- XDefaultScreen(display)));
- visInfoPtr = XGetVisualInfo(display, (long) VisualIDMask,
- &myTemplate, &numFound);
- if (visInfoPtr == 0
- || numFound == 0
- || visInfoPtr->depth <= 1) {
- TRACE(("disabling color since screen is monochrome\n"));
- color_ok = False;
- } else {
- XFree(visInfoPtr);
- }
- }
-
- /* If none of the colors are anything other than the foreground or
- * background, we'll assume this isn't color, no matter what the colorMode
- * resource says. (There doesn't seem to be any good way to determine if
- * the resource lookup failed versus the user having misconfigured this).
- */
- if (!color_ok) {
- wnew->screen.colorMode = False;
- TRACE(("All colors are foreground or background: disable colorMode\n"));
- }
-#if OPT_EXT_COLORS
- wnew->num_ptrs = (OFF_BGRND + 1);
-#else
- wnew->num_ptrs = (OFF_COLOR + 1);
-#endif
- wnew->sgr_foreground = -1;
- wnew->sgr_background = -1;
- wnew->sgr_extended = 0;
-#endif /* OPT_ISO_COLORS */
-
- init_Tres(MOUSE_FG);
- init_Tres(MOUSE_BG);
- init_Tres(TEXT_CURSOR);
-#if OPT_HIGHLIGHT_COLOR
- init_Tres(HIGHLIGHT_BG);
-#endif
-
-#if OPT_TEK4014
- /*
- * The Tek4014 window has no separate resources for foreground, background
- * and cursor color. Since xterm always creates the vt100 widget first, we
- * can set the Tektronix colors here. That lets us use escape sequences to
- * set its dynamic colors and get consistent behavior whether or not the
- * window is displayed.
- */
- T_COLOR(&(wnew->screen), TEK_BG) = T_COLOR(&(wnew->screen), TEXT_BG);
- T_COLOR(&(wnew->screen), TEK_FG) = T_COLOR(&(wnew->screen), TEXT_FG);
- T_COLOR(&(wnew->screen), TEK_CURSOR) = T_COLOR(&(wnew->screen), TEXT_CURSOR);
-#endif
-
-#if OPT_DEC_CHRSET
- wnew->num_ptrs = (OFF_CSETS + 1);
-#endif
-
-#if OPT_WIDE_CHARS
- VTInitialize_locale(request);
-
-#if OPT_LUIT_PROG
- init_Bres(misc.callfilter);
- init_Bres(misc.use_encoding);
- init_Sres(misc.locale_str);
- init_Sres(misc.localefilter);
-#endif
-
-#if OPT_RENDERFONT
- init_Dres(misc.face_size);
- init_Sres(misc.face_name);
- init_Sres(misc.face_wide_name);
- init_Bres(misc.render_font);
- /* minor tweak to make debug traces consistent: */
- if (wnew->misc.render_font) {
- if (wnew->misc.face_name == 0) {
- wnew->misc.render_font = False;
- TRACE(("reset render_font since there is no face_name\n"));
- }
- }
-#endif
-
- init_Bres(screen.vt100_graphics);
- init_Ires(screen.utf8_mode);
- init_Bres(screen.wide_chars);
- init_Bres(misc.mk_width);
- init_Bres(misc.cjk_width);
- if (request->screen.utf8_mode) {
- TRACE(("setting wide_chars on\n"));
- wnew->screen.wide_chars = True;
- } else {
- TRACE(("setting utf8_mode to 0\n"));
- wnew->screen.utf8_mode = uFalse;
- }
- TRACE(("initialized UTF-8 mode to %d\n", wnew->screen.utf8_mode));
-
-#if OPT_MINI_LUIT
- if (request->screen.latin9_mode) {
- wnew->screen.latin9_mode = True;
- }
- if (request->screen.unicode_font) {
- wnew->screen.unicode_font = True;
- }
- TRACE(("initialized Latin9 mode to %d\n", wnew->screen.latin9_mode));
- TRACE(("initialized unicode_font to %d\n", wnew->screen.unicode_font));
-#endif
-
- if (wnew->screen.wide_chars != False)
- wnew->num_ptrs = (OFF_COM2H + 1);
-
- decode_wcwidth((wnew->misc.cjk_width ? 2 : 0)
- + (wnew->misc.mk_width ? 1 : 0)
- + 1);
-#endif /* OPT_WIDE_CHARS */
-
- init_Bres(screen.bold_mode);
- init_Bres(screen.underline);
-
- wnew->cur_foreground = 0;
- wnew->cur_background = 0;
-
- wnew->keyboard.flags = MODE_SRM;
- if (wnew->screen.backarrow_key)
- wnew->keyboard.flags |= MODE_DECBKM;
- TRACE(("initialized DECBKM %s\n",
- BtoS(wnew->keyboard.flags & MODE_DECBKM)));
-
- /* look for focus related events on the shell, because we need
- * to care about the shell's border being part of our focus.
- */
- XtAddEventHandler(my_parent, EnterWindowMask, False,
- HandleEnterWindow, (Opaque) NULL);
- XtAddEventHandler(my_parent, LeaveWindowMask, False,
- HandleLeaveWindow, (Opaque) NULL);
- XtAddEventHandler(my_parent, FocusChangeMask, False,
- HandleFocusChange, (Opaque) NULL);
- XtAddEventHandler((Widget) wnew, 0L, True,
- VTNonMaskableEvent, (Opaque) NULL);
- XtAddEventHandler((Widget) wnew, PropertyChangeMask, False,
- HandleBellPropertyChange, (Opaque) NULL);
-
-#if HANDLE_STRUCT_NOTIFY
-#if OPT_TOOLBAR
- wnew->VT100_TB_INFO(menu_bar) = request->VT100_TB_INFO(menu_bar);
- init_Ires(VT100_TB_INFO(menu_height));
-#else
- /* Flag icon name with "***" on window output when iconified.
- * Put in a handler that will tell us when we get Map/Unmap events.
- */
- if (zIconBeep)
-#endif
- XtAddEventHandler(my_parent, StructureNotifyMask, False,
- HandleStructNotify, (Opaque) 0);
-#endif /* HANDLE_STRUCT_NOTIFY */
-
- wnew->screen.bellInProgress = False;
-
- set_character_class(wnew->screen.charClass);
-
- /* create it, but don't realize it */
- ScrollBarOn(wnew, True, False);
-
- /* make sure that the resize gravity acceptable */
- if (wnew->misc.resizeGravity != NorthWestGravity &&
- wnew->misc.resizeGravity != SouthWestGravity) {
- Cardinal nparams = 1;
-
- XtAppWarningMsg(app_con, "rangeError", "resizeGravity", "XTermError",
- "unsupported resizeGravity resource value (%d)",
- (String *) & (wnew->misc.resizeGravity), &nparams);
- wnew->misc.resizeGravity = SouthWestGravity;
- }
-#ifndef NO_ACTIVE_ICON
- wnew->screen.whichVwin = &wnew->screen.fullVwin;
-#if OPT_TEK4014
- wnew->screen.whichTwin = &wnew->screen.fullTwin;
-#endif
-#endif /* NO_ACTIVE_ICON */
-
- if (wnew->screen.savelines < 0)
- wnew->screen.savelines = 0;
-
- init_Bres(screen.awaitInput);
-
- wnew->flags = 0;
- if (!wnew->screen.jumpscroll)
- wnew->flags |= SMOOTHSCROLL;
- if (wnew->misc.reverseWrap)
- wnew->flags |= REVERSEWRAP;
- if (wnew->misc.autoWrap)
- wnew->flags |= WRAPAROUND;
- if (wnew->misc.re_verse != wnew->misc.re_verse0)
- wnew->flags |= REVERSE_VIDEO;
- if (wnew->screen.c132)
- wnew->flags |= IN132COLUMNS;
-
- wnew->initflags = wnew->flags;
-
- init_Ires(keyboard.modify_cursor_keys);
-
- init_Ires(misc.appcursorDefault);
- if (wnew->misc.appcursorDefault)
- wnew->keyboard.flags |= MODE_DECCKM;
-
- init_Ires(misc.appkeypadDefault);
- if (wnew->misc.appkeypadDefault)
- wnew->keyboard.flags |= MODE_DECKPAM;
-
- return;
-}
-
-static void
-VTDestroy(Widget w)
-{
- XtFree((char *) (((XtermWidget) w)->screen.selection_data));
-}
-
-/*ARGSUSED*/
-static void
-VTRealize(Widget w,
- XtValueMask * valuemask,
- XSetWindowAttributes * values)
-{
- XtermWidget xw = (XtermWidget) w;
- TScreen *screen = &xw->screen;
-
- unsigned width, height;
- int xpos, ypos, pr;
- XSizeHints sizehints;
- Atom pid_atom;
-
- TRACE(("VTRealize\n"));
-
- TabReset(xw->tabs);
-
- screen->MenuFontName(fontMenu_fontdefault) = xw->misc.default_font.f_n;
- screen->fnt_norm = NULL;
- screen->fnt_bold = NULL;
-#if OPT_WIDE_CHARS
- screen->fnt_dwd = NULL;
- screen->fnt_dwdb = NULL;
-#endif
- if (!xtermLoadFont(xw,
- &(xw->misc.default_font),
- False, 0)) {
- if (XmuCompareISOLatin1(xw->misc.default_font.f_n, "fixed") != 0) {
- fprintf(stderr,
- "%s: unable to open font \"%s\", trying \"fixed\"....\n",
- xterm_name, xw->misc.default_font.f_n);
- (void) xtermLoadFont(xw,
- xtermFontName("fixed"),
- False, 0);
- screen->MenuFontName(fontMenu_fontdefault) = "fixed";
- }
- }
-
- /* really screwed if we couldn't open default font */
- if (!screen->fnt_norm) {
- fprintf(stderr, "%s: unable to locate a suitable font\n",
- xterm_name);
- Exit(1);
- }
-#if OPT_WIDE_CHARS
- if (xw->screen.utf8_mode) {
- TRACE(("check if this is a wide font, if not try again\n"));
- if (xtermLoadWideFonts(xw, False))
- SetVTFont(xw, screen->menu_font_number, TRUE, NULL);
- }
-#endif
-
- /* making cursor */
- if (!screen->pointer_cursor) {
- screen->pointer_cursor =
- make_colored_cursor(XC_xterm,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
- } else {
- recolor_cursor(screen->pointer_cursor,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
- }
-
- /* set defaults */
- xpos = 1;
- ypos = 1;
- width = 80;
- height = 24;
-
- TRACE(("parsing geo_metry %s\n", NonNull(xw->misc.geo_metry)));
- pr = XParseGeometry(xw->misc.geo_metry, &xpos, &ypos,
- &width, &height);
- TRACE(("... position %d,%d size %dx%d\n", ypos, xpos, height, width));
-
- set_max_col(screen, (int) (width - 1)); /* units in character cells */
- set_max_row(screen, (int) (height - 1)); /* units in character cells */
- xtermUpdateFontInfo(xw, False);
-
- width = screen->fullVwin.fullwidth;
- height = screen->fullVwin.fullheight;
-
- TRACE(("... border widget %d parent %d shell %d\n",
- BorderWidth(xw),
- BorderWidth(XtParent(xw)),
- BorderWidth(SHELL_OF(xw))));
-
- if ((pr & XValue) && (XNegative & pr)) {
- xpos += DisplayWidth(screen->display, DefaultScreen(screen->display))
- - width - (BorderWidth(XtParent(xw)) * 2);
- }
- if ((pr & YValue) && (YNegative & pr)) {
- ypos += DisplayHeight(screen->display, DefaultScreen(screen->display))
- - height - (BorderWidth(XtParent(xw)) * 2);
- }
-
- /* set up size hints for window manager; min 1 char by 1 char */
- bzero(&sizehints, sizeof(sizehints));
- xtermSizeHints(xw, &sizehints, (xw->misc.scrollbar
- ? (screen->scrollWidget->core.width
- + BorderWidth(screen->scrollWidget))
- : 0));
-
- sizehints.x = xpos;
- sizehints.y = ypos;
- if ((XValue & pr) || (YValue & pr)) {
- sizehints.flags |= USSize | USPosition;
- sizehints.flags |= PWinGravity;
- switch (pr & (XNegative | YNegative)) {
- case 0:
- sizehints.win_gravity = NorthWestGravity;
- break;
- case XNegative:
- sizehints.win_gravity = NorthEastGravity;
- break;
- case YNegative:
- sizehints.win_gravity = SouthWestGravity;
- break;
- default:
- sizehints.win_gravity = SouthEastGravity;
- break;
- }
- } else {
- /* set a default size, but do *not* set position */
- sizehints.flags |= PSize;
- }
- sizehints.height = sizehints.base_height
- + sizehints.height_inc * MaxRows(screen);
- sizehints.width = sizehints.base_width
- + sizehints.width_inc * MaxCols(screen);
-
- if ((WidthValue & pr) || (HeightValue & pr))
- sizehints.flags |= USSize;
- else
- sizehints.flags |= PSize;
-
- /*
- * Note that the size-hints are for the shell, while the resize-request
- * is for the vt100 widget. They are not the same size.
- */
- TRACE(("make resize request %dx%d\n", height, width));
- (void) XtMakeResizeRequest((Widget) xw,
- (Dimension) width, (Dimension) height,
- &xw->core.width, &xw->core.height);
- TRACE(("...made resize request %dx%d\n", xw->core.height, xw->core.width));
-
- /* XXX This is bogus. We are parsing geometries too late. This
- * is information that the shell widget ought to have before we get
- * realized, so that it can do the right thing.
- */
- if (sizehints.flags & USPosition)
- XMoveWindow(XtDisplay(xw), XtWindow(SHELL_OF(xw)),
- sizehints.x, sizehints.y);
-
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_HINTS(&sizehints);
- XSetWMNormalHints(XtDisplay(xw), XtWindow(SHELL_OF(xw)), &sizehints);
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_WM_HINTS(xw);
-
- if ((pid_atom = XInternAtom(XtDisplay(xw), "_NET_WM_PID", False)) != None) {
- /* XChangeProperty format 32 really is "long" */
- unsigned long pid_l = (unsigned long) getpid();
- TRACE(("Setting _NET_WM_PID property to %lu\n", pid_l));
- XChangeProperty(XtDisplay(xw), VShellWindow,
- pid_atom, XA_CARDINAL, 32, PropModeReplace,
- (unsigned char *) &pid_l, 1);
- }
-
- XFlush(XtDisplay(xw)); /* get it out to window manager */
-
- /* use ForgetGravity instead of SouthWestGravity because translating
- the Expose events for ConfigureNotifys is too hard */
- values->bit_gravity = ((xw->misc.resizeGravity == NorthWestGravity)
- ? NorthWestGravity
- : ForgetGravity);
- xw->screen.fullVwin.window = XtWindow(xw) =
- XCreateWindow(XtDisplay(xw), XtWindow(XtParent(xw)),
- xw->core.x, xw->core.y,
- xw->core.width, xw->core.height, BorderWidth(xw),
- (int) xw->core.depth,
- InputOutput, CopyFromParent,
- *valuemask | CWBitGravity, values);
- screen->event_mask = values->event_mask;
-
-#ifndef NO_ACTIVE_ICON
- if (xw->misc.active_icon && screen->fnt_icon) {
- int iconX = 0, iconY = 0;
- Widget shell = SHELL_OF(xw);
- unsigned long mask;
- XGCValues xgcv;
-
- TRACE(("Initializing active-icon\n"));
- XtVaGetValues(shell, XtNiconX, &iconX, XtNiconY, &iconY, (XtPointer) 0);
- xtermComputeFontInfo(xw, &(screen->iconVwin), screen->fnt_icon, 0);
-
- /* since only one client is permitted to select for Button
- * events, we have to let the window manager get 'em...
- */
- values->event_mask &= ~(ButtonPressMask | ButtonReleaseMask);
- values->border_pixel = xw->misc.icon_border_pixel;
-
- screen->iconVwin.window =
- XCreateWindow(XtDisplay(xw),
- RootWindowOfScreen(XtScreen(shell)),
- iconX, iconY,
- screen->iconVwin.fullwidth,
- screen->iconVwin.fullheight,
- xw->misc.icon_border_width,
- (int) xw->core.depth,
- InputOutput, CopyFromParent,
- *valuemask | CWBitGravity | CWBorderPixel,
- values);
- XtVaSetValues(shell,
- XtNiconWindow, screen->iconVwin.window,
- (XtPointer) 0);
- XtRegisterDrawable(XtDisplay(xw), screen->iconVwin.window, w);
-
- mask = (GCFont | GCForeground | GCBackground |
- GCGraphicsExposures | GCFunction);
-
- xgcv.font = screen->fnt_icon->fid;
- xgcv.foreground = T_COLOR(screen, TEXT_FG);
- xgcv.background = T_COLOR(screen, TEXT_BG);
- xgcv.graphics_exposures = True; /* default */
- xgcv.function = GXcopy;
-
- screen->iconVwin.normalGC =
- screen->iconVwin.normalboldGC =
- XtGetGC(shell, mask, &xgcv);
-
- xgcv.foreground = T_COLOR(screen, TEXT_BG);
- xgcv.background = T_COLOR(screen, TEXT_FG);
-
- screen->iconVwin.reverseGC =
- screen->iconVwin.reverseboldGC =
- XtGetGC(shell, mask, &xgcv);
-#if OPT_TOOLBAR
- /*
- * Toolbar is initialized before we get here. Enable the menu item
- * and set it properly.
- */
- set_sensitivity(mw,
- vtMenuEntries[vtMenu_activeicon].widget,
- True);
- update_activeicon();
-#endif
- } else {
- TRACE(("Disabled active-icon\n"));
- xw->misc.active_icon = False;
- }
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_I18N_SUPPORT && OPT_INPUT_METHOD
- VTInitI18N();
-#else
- xw->screen.xic = NULL;
-#endif
-#if OPT_NUM_LOCK
- VTInitModifiers();
-#endif
-
- set_cursor_gcs(screen);
-
- /* Reset variables used by ANSI emulation. */
-
- resetCharsets(screen);
-
- XDefineCursor(screen->display, VShellWindow, screen->pointer_cursor);
-
- set_cur_col(screen, 0);
- set_cur_row(screen, 0);
- set_max_col(screen, Width(screen) / screen->fullVwin.f_width - 1);
- set_max_row(screen, Height(screen) / screen->fullVwin.f_height - 1);
- set_tb_margins(screen, 0, screen->max_row);
-
- memset(screen->sc, 0, sizeof(screen->sc));
-
- /* Mark screen buffer as unallocated. We wait until the run loop so
- that the child process does not fork and exec with all the dynamic
- memory it will never use. If we were to do it here, the
- swap space for new process would be huge for huge savelines. */
-#if OPT_TEK4014
- if (!tekWidget) /* if not called after fork */
-#endif
- screen->visbuf = screen->allbuf = NULL;
-
- screen->do_wrap = 0;
- screen->scrolls = screen->incopy = 0;
- xtermSetCursorBox(screen);
-
- screen->savedlines = 0;
-
- if (xw->misc.scrollbar) {
- screen->fullVwin.sb_info.width = 0;
- ScrollBarOn(xw, False, True);
- }
- CursorSave(xw);
- return;
-}
-
-#if OPT_I18N_SUPPORT && OPT_INPUT_METHOD
-
-/* limit this feature to recent XFree86 since X11R6.x core dumps */
-#if defined(XtSpecificationRelease) && XtSpecificationRelease >= 6 && defined(X_HAVE_UTF8_STRING)
-#define USE_XIM_INSTANTIATE_CB
-
-static void
-xim_instantiate_cb(Display * display,
- XPointer client_data GCC_UNUSED,
- XPointer call_data GCC_UNUSED)
-{
- if (display != XtDisplay(term))
- return;
-
- VTInitI18N();
-}
-
-static void
-xim_destroy_cb(XIM im GCC_UNUSED,
- XPointer client_data GCC_UNUSED,
- XPointer call_data GCC_UNUSED)
-{
- term->screen.xic = NULL;
-
- XRegisterIMInstantiateCallback(XtDisplay(term), NULL, NULL, NULL,
- xim_instantiate_cb, NULL);
-}
-#endif /* X11R6+ */
-
-static void
-xim_real_init(void)
-{
- unsigned i, j;
- char *p, *s, *t, *ns, *end, buf[32];
- XIMStyles *xim_styles;
- XIMStyle input_style = 0;
- Bool found;
- static struct {
- char *name;
- unsigned long code;
- } known_style[] = {
- {
- "OverTheSpot", (XIMPreeditPosition | XIMStatusNothing)
- },
- {
- "OffTheSpot", (XIMPreeditArea | XIMStatusArea)
- },
- {
- "Root", (XIMPreeditNothing | XIMStatusNothing)
- },
- };
-
- term->screen.xic = NULL;
-
- if (term->misc.cannot_im) {
- return;
- }
-
- if (!term->misc.input_method || !*term->misc.input_method) {
- if ((p = XSetLocaleModifiers("")) != NULL && *p)
- term->screen.xim = XOpenIM(XtDisplay(term), NULL, NULL, NULL);
- } else {
- s = term->misc.input_method;
- i = 5 + strlen(s);
- t = (char *) MyStackAlloc(i, buf);
- if (t == NULL)
- SysError(ERROR_VINIT);
-
- for (ns = s; ns && *s;) {
- while (*s && isspace(CharOf(*s)))
- s++;
- if (!*s)
- break;
- if ((ns = end = strchr(s, ',')) == 0)
- end = s + strlen(s);
- while ((end != s) && isspace(CharOf(end[-1])))
- end--;
-
- if (end != s) {
- strcpy(t, "@im=");
- strncat(t, s, (unsigned) (end - s));
-
- if ((p = XSetLocaleModifiers(t)) != 0 && *p
- && (term->screen.xim = XOpenIM(XtDisplay(term),
- NULL,
- NULL,
- NULL)) != 0)
- break;
-
- }
- s = ns + 1;
- }
- MyStackFree(t, buf);
- }
-
- if (term->screen.xim == NULL
- && (p = XSetLocaleModifiers("@im=none")) != NULL
- && *p) {
- term->screen.xim = XOpenIM(XtDisplay(term), NULL, NULL, NULL);
- }
-
- if (!term->screen.xim) {
- fprintf(stderr, "Failed to open input method\n");
- return;
- }
- TRACE(("VTInitI18N opened input method\n"));
-
- if (XGetIMValues(term->screen.xim, XNQueryInputStyle, &xim_styles, NULL)
- || !xim_styles
- || !xim_styles->count_styles) {
- fprintf(stderr, "input method doesn't support any style\n");
- XCloseIM(term->screen.xim);
- term->misc.cannot_im = True;
- return;
- }
-
- found = False;
- for (s = term->misc.preedit_type; s && !found;) {
- while (*s && isspace(CharOf(*s)))
- s++;
- if (!*s)
- break;
- if ((ns = end = strchr(s, ',')) != 0)
- ns++;
- else
- end = s + strlen(s);
- while ((end != s) && isspace(CharOf(end[-1])))
- end--;
-
- if (end != s) { /* just in case we have a spurious comma */
- TRACE(("looking for style '%.*s'\n", end - s, s));
- for (i = 0; i < XtNumber(known_style); i++) {
- if ((int) strlen(known_style[i].name) == (end - s)
- && !strncmp(s, known_style[i].name, (unsigned) (end - s))) {
- input_style = known_style[i].code;
- for (j = 0; j < xim_styles->count_styles; j++) {
- if (input_style == xim_styles->supported_styles[j]) {
- found = True;
- break;
- }
- }
- if (found)
- break;
- }
- }
- }
-
- s = ns;
- }
- XFree(xim_styles);
-
- if (!found) {
- fprintf(stderr,
- "input method doesn't support my preedit type (%s)\n",
- term->misc.preedit_type);
- XCloseIM(term->screen.xim);
- term->misc.cannot_im = True;
- return;
- }
-
- /*
- * Check for styles we do not yet support.
- */
- TRACE(("input_style %#lx\n", input_style));
- if (input_style == (XIMPreeditArea | XIMStatusArea)) {
- fprintf(stderr,
- "This program doesn't support the 'OffTheSpot' preedit type\n");
- XCloseIM(term->screen.xim);
- term->misc.cannot_im = True;
- return;
- }
-
- /*
- * For XIMPreeditPosition (or OverTheSpot), XIM client has to
- * prepare a font.
- * The font has to be locale-dependent XFontSet, whereas
- * XTerm use Unicode font. This leads a problem that the
- * same font cannot be used for XIM preedit.
- */
- if (input_style != (XIMPreeditNothing | XIMStatusNothing)) {
- char **missing_charset_list;
- int missing_charset_count;
- char *def_string;
- XVaNestedList p_list;
- XPoint spot =
- {0, 0};
- XFontStruct **fonts;
- char **font_name_list;
-
- term->screen.fs = XCreateFontSet(XtDisplay(term),
- term->misc.f_x,
- &missing_charset_list,
- &missing_charset_count,
- &def_string);
- if (term->screen.fs == NULL) {
- fprintf(stderr, "Preparation of font set "
- "\"%s\" for XIM failed.\n", term->misc.f_x);
- term->screen.fs = XCreateFontSet(XtDisplay(term),
- DEFXIMFONT,
- &missing_charset_list,
- &missing_charset_count,
- &def_string);
- }
- if (term->screen.fs == NULL) {
- fprintf(stderr, "Preparation of default font set "
- "\"%s\" for XIM failed.\n", DEFXIMFONT);
- XCloseIM(term->screen.xim);
- term->misc.cannot_im = True;
- return;
- }
- (void) XExtentsOfFontSet(term->screen.fs);
- j = XFontsOfFontSet(term->screen.fs, &fonts, &font_name_list);
- for (i = 0, term->screen.fs_ascent = 0; i < j; i++) {
- if (term->screen.fs_ascent < (*fonts)->ascent)
- term->screen.fs_ascent = (*fonts)->ascent;
- }
- p_list = XVaCreateNestedList(0,
- XNSpotLocation, &spot,
- XNFontSet, term->screen.fs,
- NULL);
- term->screen.xic = XCreateIC(term->screen.xim,
- XNInputStyle, input_style,
- XNClientWindow, XtWindow(term),
- XNFocusWindow, XtWindow(term),
- XNPreeditAttributes, p_list,
- NULL);
- } else {
- term->screen.xic = XCreateIC(term->screen.xim, XNInputStyle, input_style,
- XNClientWindow, XtWindow(term),
- XNFocusWindow, XtWindow(term),
- NULL);
- }
-
- if (!term->screen.xic) {
- fprintf(stderr, "Failed to create input context\n");
- XCloseIM(term->screen.xim);
- }
-#if defined(USE_XIM_INSTANTIATE_CB)
- else {
- XIMCallback destroy_cb;
-
- destroy_cb.callback = xim_destroy_cb;
- destroy_cb.client_data = NULL;
- if (XSetIMValues(term->screen.xim, XNDestroyCallback, &destroy_cb, NULL))
- fprintf(stderr, "Could not set destroy callback to IM\n");
- }
-#endif
-
- return;
-}
-
-static void
-VTInitI18N(void)
-{
- if (term->misc.open_im) {
- xim_real_init();
-
-#if defined(USE_XIM_INSTANTIATE_CB)
- if (term->screen.xic == NULL && !term->misc.cannot_im) {
- sleep(3);
- XRegisterIMInstantiateCallback(XtDisplay(term), NULL, NULL, NULL,
- xim_instantiate_cb, NULL);
- }
-#endif
- }
-}
-#endif /* OPT_I18N_SUPPORT && OPT_INPUT_METHOD */
-
-static Boolean
-VTSetValues(Widget cur,
- Widget request GCC_UNUSED,
- Widget wnew,
- ArgList args GCC_UNUSED,
- Cardinal *num_args GCC_UNUSED)
-{
- XtermWidget curvt = (XtermWidget) cur;
- XtermWidget newvt = (XtermWidget) wnew;
- Bool refresh_needed = False;
- Bool fonts_redone = False;
-
- if ((T_COLOR(&(curvt->screen), TEXT_BG) !=
- T_COLOR(&(newvt->screen), TEXT_BG)) ||
- (T_COLOR(&(curvt->screen), TEXT_FG) !=
- T_COLOR(&(newvt->screen), TEXT_FG)) ||
- (curvt->screen.MenuFontName(curvt->screen.menu_font_number) !=
- newvt->screen.MenuFontName(newvt->screen.menu_font_number)) ||
- (curvt->misc.default_font.f_n != newvt->misc.default_font.f_n)) {
- if (curvt->misc.default_font.f_n != newvt->misc.default_font.f_n)
- newvt->screen.MenuFontName(fontMenu_fontdefault) = newvt->misc.default_font.f_n;
- if (xtermLoadFont(newvt,
- xtermFontName(newvt->screen.MenuFontName(curvt->screen.menu_font_number)),
- True, newvt->screen.menu_font_number)) {
- /* resizing does the redisplay, so don't ask for it here */
- refresh_needed = True;
- fonts_redone = True;
- } else if (curvt->misc.default_font.f_n != newvt->misc.default_font.f_n)
- newvt->screen.MenuFontName(fontMenu_fontdefault) = curvt->misc.default_font.f_n;
- }
- if (!fonts_redone
- && (T_COLOR(&(curvt->screen), TEXT_CURSOR) !=
- T_COLOR(&(newvt->screen), TEXT_CURSOR))) {
- set_cursor_gcs(&newvt->screen);
- refresh_needed = True;
- }
- if (curvt->misc.re_verse != newvt->misc.re_verse) {
- newvt->flags ^= REVERSE_VIDEO;
- ReverseVideo(newvt);
- newvt->misc.re_verse = !newvt->misc.re_verse; /* ReverseVideo toggles */
- refresh_needed = True;
- }
- if ((T_COLOR(&(curvt->screen), MOUSE_FG) !=
- T_COLOR(&(newvt->screen), MOUSE_FG)) ||
- (T_COLOR(&(curvt->screen), MOUSE_BG) !=
- T_COLOR(&(newvt->screen), MOUSE_BG))) {
- recolor_cursor(newvt->screen.pointer_cursor,
- T_COLOR(&(newvt->screen), MOUSE_FG),
- T_COLOR(&(newvt->screen), MOUSE_BG));
- refresh_needed = True;
- }
- if (curvt->misc.scrollbar != newvt->misc.scrollbar) {
- ToggleScrollBar(newvt);
- }
-
- return refresh_needed;
-}
-
-#define setGC(value) set_at = __LINE__, currentGC = value
-
-#define OutsideSelection(screen,row,col) \
- ((row) > (screen)->endHRow || \
- ((row) == (screen)->endHRow && \
- (col) >= (screen)->endHCol) || \
- (row) < (screen)->startHRow || \
- ((row) == (screen)->startHRow && \
- (col) < (screen)->startHCol))
-
-/*
- * Shows cursor at new cursor position in screen.
- */
-void
-ShowCursor(void)
-{
- TScreen *screen = &term->screen;
- int x, y;
- Char clo;
- unsigned flags;
- unsigned fg_bg = 0;
- GC currentGC;
- int set_at;
- Bool in_selection;
- Bool reversed;
- Pixel fg_pix;
- Pixel bg_pix;
- Pixel tmp;
-#if OPT_HIGHLIGHT_COLOR
- Pixel hi_pix = T_COLOR(screen, HIGHLIGHT_BG);
-#endif
-#if OPT_WIDE_CHARS
- Char chi = 0;
- Char c1h = 0;
- Char c1l = 0;
- Char c2h = 0;
- Char c2l = 0;
- int base;
-#endif
- int cursor_col;
-
- if (screen->cursor_state == BLINKED_OFF)
- return;
-
- if (eventMode != NORMAL)
- return;
-
- if (screen->cur_row - screen->topline > screen->max_row)
- return;
-
- screen->cursor_row = screen->cur_row;
- cursor_col = screen->cursor_col = screen->cur_col;
- screen->cursor_moved = False;
-
-#ifndef NO_ACTIVE_ICON
- if (IsIcon(screen)) {
- screen->cursor_state = ON;
- return;
- }
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_WIDE_CHARS
- base =
-#endif
- clo = SCRN_BUF_CHARS(screen, screen->cursor_row)[cursor_col];
-
- if_OPT_WIDE_CHARS(screen, {
- int my_col;
- chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[cursor_col];
- if (clo == HIDDEN_LO && chi == HIDDEN_HI && cursor_col > 0) {
- /* if cursor points to non-initial part of wide character,
- * back it up
- */
- --cursor_col;
- clo = SCRN_BUF_CHARS(screen, screen->cursor_row)[cursor_col];
- chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[cursor_col];
- }
- my_col = cursor_col;
- base = (chi << 8) | clo;
- if (iswide(base))
- my_col += 1;
- c1l = SCRN_BUF_COM1L(screen, screen->cursor_row)[my_col];
- c1h = SCRN_BUF_COM1H(screen, screen->cursor_row)[my_col];
- c2l = SCRN_BUF_COM2L(screen, screen->cursor_row)[my_col];
- c2h = SCRN_BUF_COM2H(screen, screen->cursor_row)[my_col];
- });
-
- flags = SCRN_BUF_ATTRS(screen, screen->cursor_row)[cursor_col];
-
- if (clo == 0
-#if OPT_WIDE_CHARS
- && chi == 0
-#endif
- ) {
- clo = ' ';
- }
-
- /*
- * If the cursor happens to be on blanks, and the foreground color is set
- * but not the background, do not treat it as a colored cell.
- */
-#if OPT_ISO_COLORS
- if ((flags & TERM_COLOR_FLAGS(term)) == BG_COLOR
-#if OPT_WIDE_CHARS
- && chi == 0
-#endif
- && clo == ' ') {
- flags &= ~TERM_COLOR_FLAGS(term);
- }
-#endif
-
- /*
- * Compare the current cell to the last set of colors used for the
- * cursor and update the GC's if needed.
- */
- if_OPT_EXT_COLORS(screen, {
- fg_bg = (SCRN_BUF_FGRND(screen, screen->cursor_row)[cursor_col] << 8)
- | (SCRN_BUF_BGRND(screen, screen->cursor_row)[cursor_col]);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- fg_bg = SCRN_BUF_COLOR(screen, screen->cursor_row)[cursor_col];
- });
- fg_pix = getXtermForeground(flags, extract_fg(fg_bg, flags));
- bg_pix = getXtermBackground(flags, extract_bg(fg_bg, flags));
-
- if (OutsideSelection(screen, screen->cur_row, screen->cur_col))
- in_selection = False;
- else
- in_selection = True;
-
- reversed = ReverseOrHilite(screen, flags, in_selection);
-
- /* This is like updatedXtermGC(), except that we have to worry about
- * whether the window has focus, since in that case we want just an
- * outline for the cursor.
- */
- if (screen->select || screen->always_highlight) {
- if (reversed) { /* text is reverse video */
- if (screen->cursorGC) {
- setGC(screen->cursorGC);
- } else {
- if (flags & BOLDATTR(screen)) {
- setGC(NormalBoldGC(screen));
- } else {
- setGC(NormalGC(screen));
- }
- }
-#if OPT_HIGHLIGHT_COLOR
- if (hi_pix != T_COLOR(screen, TEXT_FG)
- && hi_pix != fg_pix
- && hi_pix != bg_pix
- && hi_pix != term->dft_foreground) {
- bg_pix = fg_pix;
- fg_pix = hi_pix;
- }
-#endif
- EXCHANGE(fg_pix, bg_pix, tmp);
- } else { /* normal video */
- if (screen->reversecursorGC) {
- setGC(screen->reversecursorGC);
- } else {
- if (flags & BOLDATTR(screen)) {
- setGC(ReverseBoldGC(screen));
- } else {
- setGC(ReverseGC(screen));
- }
- }
- }
- if (T_COLOR(screen, TEXT_CURSOR) == term->dft_foreground) {
- XSetBackground(screen->display, currentGC, fg_pix);
- }
- XSetForeground(screen->display, currentGC, bg_pix);
- } else { /* not selected */
- if (reversed) { /* text is reverse video */
-#if OPT_HIGHLIGHT_COLOR
- if (hi_pix != T_COLOR(screen, TEXT_FG)
- && hi_pix != fg_pix
- && hi_pix != bg_pix
- && hi_pix != term->dft_foreground) {
- bg_pix = fg_pix;
- fg_pix = hi_pix;
- }
-#endif
- setGC(ReverseGC(screen));
- XSetForeground(screen->display, currentGC, bg_pix);
- XSetBackground(screen->display, currentGC, fg_pix);
- } else { /* normal video */
- setGC(NormalGC(screen));
- XSetForeground(screen->display, currentGC, fg_pix);
- XSetBackground(screen->display, currentGC, bg_pix);
- }
- }
-
- if (screen->cursor_busy == 0
- && (screen->cursor_state != ON || screen->cursor_GC != set_at)) {
-
- screen->cursor_GC = set_at;
- TRACE(("ShowCursor calling drawXtermText cur(%d,%d)\n",
- screen->cur_row, screen->cur_col));
-
- drawXtermText(screen, flags & DRAWX_MASK, currentGC,
- x = CurCursorX(screen, screen->cur_row, cursor_col),
- y = CursorY(screen, screen->cur_row),
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&clo, &chi), 1, 0);
-
-#if OPT_WIDE_CHARS
- if (c1l || c1h) {
- drawXtermText(screen, (flags & DRAWX_MASK) | NOBACKGROUND,
- currentGC, x, y,
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&c1l, &c1h), 1, iswide(base));
-
- if (c2l || c2h)
- drawXtermText(screen, (flags & DRAWX_MASK) | NOBACKGROUND,
- currentGC, x, y,
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&c2l, &c2h), 1, iswide(base));
- }
-#endif
-
- if (!screen->select && !screen->always_highlight) {
- screen->box->x = x;
- screen->box->y = y;
- XDrawLines(screen->display, VWindow(screen),
- screen->cursoroutlineGC ? screen->cursoroutlineGC
- : currentGC,
- screen->box, NBOX, CoordModePrevious);
- }
- }
- screen->cursor_state = ON;
-}
-
-/*
- * hide cursor at previous cursor position in screen.
- */
-void
-HideCursor(void)
-{
- TScreen *screen = &term->screen;
- GC currentGC;
- unsigned flags;
- unsigned fg_bg = 0;
- int x, y;
- Char clo;
- Bool in_selection;
-#if OPT_WIDE_CHARS
- Char chi = 0;
- Char c1h = 0;
- Char c1l = 0;
- Char c2h = 0;
- Char c2l = 0;
- int base;
-#endif
- int cursor_col;
-
- if (screen->cursor_state == OFF) /* FIXME */
- return;
- if (screen->cursor_row - screen->topline > screen->max_row)
- return;
-
- cursor_col = screen->cursor_col;
-
-#ifndef NO_ACTIVE_ICON
- if (IsIcon(screen)) {
- screen->cursor_state = OFF;
- return;
- }
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_WIDE_CHARS
- base =
-#endif
- clo = SCRN_BUF_CHARS(screen, screen->cursor_row)[cursor_col];
- flags = SCRN_BUF_ATTRS(screen, screen->cursor_row)[cursor_col];
-
- if_OPT_WIDE_CHARS(screen, {
- int my_col;
- chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[cursor_col];
- if (clo == HIDDEN_LO && chi == HIDDEN_HI) {
- /* if cursor points to non-initial part of wide character,
- * back it up
- */
- --cursor_col;
- clo = SCRN_BUF_CHARS(screen, screen->cursor_row)[cursor_col];
- chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[cursor_col];
- }
- my_col = cursor_col;
- base = (chi << 8) | clo;
- if (iswide(base))
- my_col += 1;
- c1l = SCRN_BUF_COM1L(screen, screen->cursor_row)[my_col];
- c1h = SCRN_BUF_COM1H(screen, screen->cursor_row)[my_col];
- c2l = SCRN_BUF_COM2L(screen, screen->cursor_row)[my_col];
- c2h = SCRN_BUF_COM2H(screen, screen->cursor_row)[my_col];
- });
-
- if_OPT_EXT_COLORS(screen, {
- fg_bg = (SCRN_BUF_FGRND(screen, screen->cursor_row)[cursor_col] << 8)
- | (SCRN_BUF_BGRND(screen, screen->cursor_row)[cursor_col]);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- fg_bg = SCRN_BUF_COLOR(screen, screen->cursor_row)[cursor_col];
- });
-
- if (OutsideSelection(screen, screen->cursor_row, screen->cursor_col))
- in_selection = False;
- else
- in_selection = True;
-
- currentGC = updatedXtermGC(screen, flags, fg_bg, in_selection);
-
- if (clo == 0
-#if OPT_WIDE_CHARS
- && chi == 0
-#endif
- ) {
- clo = ' ';
- }
-
- TRACE(("HideCursor calling drawXtermText cur(%d,%d)\n",
- screen->cursor_row, screen->cursor_col));
- drawXtermText(screen, flags & DRAWX_MASK, currentGC,
- x = CurCursorX(screen, screen->cursor_row, cursor_col),
- y = CursorY(screen, screen->cursor_row),
- curXtermChrSet(screen->cursor_row),
- PAIRED_CHARS(&clo, &chi), 1, 0);
-
-#if OPT_WIDE_CHARS
- if (c1l || c1h) {
- drawXtermText(screen, (flags & DRAWX_MASK) | NOBACKGROUND,
- currentGC, x, y,
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&c1l, &c1h), 1, iswide(base));
-
- if (c2l || c2h)
- drawXtermText(screen, (flags & DRAWX_MASK) | NOBACKGROUND,
- currentGC, x, y,
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&c2l, &c2h), 1, iswide(base));
- }
-#endif
- screen->cursor_state = OFF;
- resetXtermGC(screen, flags, in_selection);
-}
-
-#if OPT_BLINK_CURS || OPT_BLINK_TEXT
-static void
-StartBlinking(TScreen * screen)
-{
- if (screen->blink_timer == 0) {
- unsigned long interval = (screen->cursor_state == ON ?
- screen->blink_on : screen->blink_off);
- if (interval == 0) /* wow! */
- interval = 1; /* let's humor him anyway */
- screen->blink_timer = XtAppAddTimeOut(app_con,
- interval,
- HandleBlinking,
- screen);
- }
-}
-
-static void
-StopBlinking(TScreen * screen)
-{
- if (screen->blink_timer)
- XtRemoveTimeOut(screen->blink_timer);
- screen->blink_timer = 0;
-}
-
-#if OPT_BLINK_TEXT
-static Bool
-ScrnHasBlinking(TScreen * screen, int row)
-{
- Char *attrs = SCRN_BUF_ATTRS(screen, row);
- int col;
- Bool result = False;
-
- for (col = 0; col < MaxCols(screen); ++col) {
- if (attrs[col] & BLINK) {
- result = True;
- break;
- }
- }
- return result;
-}
-#endif
-
-/*
- * Blink the cursor by alternately showing/hiding cursor. We leave the timer
- * running all the time (even though that's a little inefficient) to make the
- * logic simple.
- */
-static void
-HandleBlinking(XtPointer closure, XtIntervalId * id GCC_UNUSED)
-{
- TScreen *screen = (TScreen *) closure;
- Bool resume = False;
-
- screen->blink_timer = 0;
- screen->blink_state = !screen->blink_state;
-
-#if OPT_BLINK_CURS
- if (DoStartBlinking(screen)) {
- if (screen->cursor_state == ON) {
- if (screen->select || screen->always_highlight) {
- HideCursor();
- if (screen->cursor_state == OFF)
- screen->cursor_state = BLINKED_OFF;
- }
- } else if (screen->cursor_state == BLINKED_OFF) {
- screen->cursor_state = OFF;
- ShowCursor();
- if (screen->cursor_state == OFF)
- screen->cursor_state = BLINKED_OFF;
- }
- resume = True;
- }
-#endif
-
-#if OPT_BLINK_TEXT
- /*
- * Inspect the line on the current screen to see if any have the BLINK flag
- * associated with them. Prune off any that have had the corresponding
- * cells reset. If any are left, repaint those lines with ScrnRefresh().
- */
- if (!(screen->blink_as_bold)) {
- int row;
- int first_row = screen->max_row;
- int last_row = -1;
-
- for (row = screen->max_row; row >= 0; row--) {
- if (ScrnTstBlinked(screen, row)) {
- if (ScrnHasBlinking(screen, row)) {
- resume = True;
- if (row > last_row)
- last_row = row;
- if (row < first_row)
- first_row = row;
- } else {
- ScrnClrBlinked(screen, row);
- }
- }
- }
- /*
- * FIXME: this could be a little more efficient, e.g,. by limiting the
- * columns which are updated.
- */
- if (first_row <= last_row) {
- ScrnRefresh(screen,
- first_row,
- 0,
- last_row + 1 - first_row,
- MaxCols(screen),
- True);
- }
- }
-#endif
-
- /*
- * If either the cursor or text is blinking, restart the timer.
- */
- if (resume)
- StartBlinking(screen);
-}
-#endif /* OPT_BLINK_CURS || OPT_BLINK_TEXT */
-
-/*
- * Implement soft or hard (full) reset of the VTxxx emulation. There are a
- * couple of differences from real DEC VTxxx terminals (to avoid breaking
- * applications which have come to rely on xterm doing this):
- *
- * + autowrap mode should be reset (instead it's reset to the resource
- * default).
- * + the popup menu offers a choice of resetting the savedLines, or not.
- * (but the control sequence does this anyway).
- */
-void
-VTReset(Bool full, Bool saved)
-{
- TScreen *screen = &term->screen;
-
- if (!XtIsRealized((Widget) term)) {
- Bell(XkbBI_MinorError, 0);
- return;
- }
-
- if (saved) {
- screen->savedlines = 0;
- ScrollBarDrawThumb(screen->scrollWidget);
- }
-
- /* make cursor visible */
- screen->cursor_set = ON;
-
- /* reset scrolling region */
- set_tb_margins(screen, 0, screen->max_row);
-
- bitclr(&term->flags, ORIGIN);
-
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Colors();
- });
-
- /* Reset character-sets to initial state */
- resetCharsets(screen);
-
- /* Reset DECSCA */
- bitclr(&term->flags, PROTECTED);
- screen->protected_mode = OFF_PROTECT;
-
- if (full) { /* RIS */
- if (screen->bellOnReset)
- Bell(XkbBI_TerminalBell, 0);
-
- /* reset the mouse mode */
- screen->send_mouse_pos = MOUSE_OFF;
- waitingForTrackInfo = False;
- eventMode = NORMAL;
-
- TabReset(term->tabs);
- term->keyboard.flags = MODE_SRM;
-#if OPT_INITIAL_ERASE
- if (term->keyboard.reset_DECBKM == 1)
- term->keyboard.flags |= MODE_DECBKM;
- else if (term->keyboard.reset_DECBKM == 2)
-#endif
- if (term->screen.backarrow_key)
- term->keyboard.flags |= MODE_DECBKM;
- TRACE(("full reset DECBKM %s\n",
- BtoS(term->keyboard.flags & MODE_DECBKM)));
- update_appcursor();
- update_appkeypad();
- update_decbkm();
- show_8bit_control(False);
- reset_decudk();
-
- FromAlternate(screen);
- ClearScreen(screen);
- screen->cursor_state = OFF;
- if (term->flags & REVERSE_VIDEO)
- ReverseVideo(term);
-
- term->flags = term->initflags;
- update_reversevideo();
- update_autowrap();
- update_reversewrap();
- update_autolinefeed();
-
- screen->jumpscroll = !(term->flags & SMOOTHSCROLL);
- update_jumpscroll();
-
- if (screen->c132 && (term->flags & IN132COLUMNS)) {
- Dimension reqWidth = (80 * FontWidth(screen)
- + 2 * screen->border + ScrollbarWidth(screen));
- Dimension reqHeight = (FontHeight(screen)
- * MaxRows(screen) + 2 * screen->border);
- Dimension replyWidth;
- Dimension replyHeight;
-
- TRACE(("Making resize-request to restore 80-columns %dx%d\n",
- reqHeight, reqWidth));
- XtMakeResizeRequest((Widget) term,
- reqWidth,
- reqHeight,
- &replyWidth, &replyHeight);
- TRACE(("...result %dx%d\n", replyHeight, replyWidth));
- repairSizeHints();
- XSync(screen->display, False); /* synchronize */
- if (XtAppPending(app_con))
- xevents();
- }
-
- CursorSet(screen, 0, 0, term->flags);
- CursorSave(term);
- } else { /* DECSTR */
- /*
- * There's a tiny difference, to accommodate usage of xterm.
- * We reset autowrap to the resource values rather than turning
- * it off.
- */
- term->keyboard.flags &= ~(MODE_DECCKM | MODE_KAM | MODE_DECKPAM);
- bitcpy(&term->flags, term->initflags, WRAPAROUND | REVERSEWRAP);
- bitclr(&term->flags, INSERT | INVERSE | BOLD | BLINK | UNDERLINE | INVISIBLE);
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Colors();
- });
- update_appcursor();
- update_autowrap();
- update_reversewrap();
-
- CursorSave(term);
- screen->sc[screen->alternate != False].row =
- screen->sc[screen->alternate != False].col = 0;
- }
- longjmp(vtjmpbuf, 1); /* force ground state in parser */
-}
-
-/*
- * set_character_class - takes a string of the form
- *
- * low[-high]:val[,low[-high]:val[...]]
- *
- * and sets the indicated ranges to the indicated values.
- */
-static int
-set_character_class(char *s)
-{
- int i; /* iterator, index into s */
- int len; /* length of s */
- int acc; /* accumulator */
- int low, high; /* bounds of range [0..127] */
- int base; /* 8, 10, 16 (octal, decimal, hex) */
- int numbers; /* count of numbers per range */
- int digits; /* count of digits in a number */
- static char *errfmt = "%s: %s in range string \"%s\" (position %d)\n";
-
- if (!s || !s[0])
- return -1;
-
- base = 10; /* in case we ever add octal, hex */
- low = high = -1; /* out of range */
-
- for (i = 0, len = strlen(s), acc = 0, numbers = digits = 0;
- i < len; i++) {
- Char c = s[i];
-
- if (isspace(c)) {
- continue;
- } else if (isdigit(c)) {
- acc = acc * base + (c - '0');
- digits++;
- continue;
- } else if (c == '-') {
- low = acc;
- acc = 0;
- if (digits == 0) {
- fprintf(stderr, errfmt, ProgramName, "missing number", s, i);
- return (-1);
- }
- digits = 0;
- numbers++;
- continue;
- } else if (c == ':') {
- if (numbers == 0)
- low = acc;
- else if (numbers == 1)
- high = acc;
- else {
- fprintf(stderr, errfmt, ProgramName, "too many numbers",
- s, i);
- return (-1);
- }
- digits = 0;
- numbers++;
- acc = 0;
- continue;
- } else if (c == ',') {
- /*
- * now, process it
- */
-
- if (high < 0) {
- high = low;
- numbers++;
- }
- if (numbers != 2) {
- fprintf(stderr, errfmt, ProgramName, "bad value number",
- s, i);
- } else if (SetCharacterClassRange(low, high, acc) != 0) {
- fprintf(stderr, errfmt, ProgramName, "bad range", s, i);
- }
-
- low = high = -1;
- acc = 0;
- digits = 0;
- numbers = 0;
- continue;
- } else {
- fprintf(stderr, errfmt, ProgramName, "bad character", s, i);
- return (-1);
- } /* end if else if ... else */
-
- }
-
- if (low < 0 && high < 0)
- return (0);
-
- /*
- * now, process it
- */
-
- if (high < 0)
- high = low;
- if (numbers < 1 || numbers > 2) {
- fprintf(stderr, errfmt, ProgramName, "bad value number", s, i);
- } else if (SetCharacterClassRange(low, high, acc) != 0) {
- fprintf(stderr, errfmt, ProgramName, "bad range", s, i);
- }
-
- return (0);
-}
-
-/* ARGSUSED */
-static void
-HandleKeymapChange(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- static XtTranslations keymap, original;
- static XtResource key_resources[] =
- {
- {XtNtranslations, XtCTranslations, XtRTranslationTable,
- sizeof(XtTranslations), 0, XtRTranslationTable, (XtPointer) NULL}
- };
- char mapName[1000];
- char mapClass[1000];
- char *pmapName;
- char *pmapClass;
- size_t len;
-
- if (*param_count != 1)
- return;
-
- if (original == NULL)
- original = w->core.tm.translations;
-
- if (strcmp(params[0], "None") == 0) {
- XtOverrideTranslations(w, original);
- return;
- }
-
- len = strlen(params[0]) + 7;
-
- pmapName = (char *) MyStackAlloc(len, mapName);
- pmapClass = (char *) MyStackAlloc(len, mapClass);
- if (pmapName == NULL
- || pmapClass == NULL)
- SysError(ERROR_KMMALLOC1);
-
- (void) sprintf(pmapName, "%sKeymap", params[0]);
- (void) strcpy(pmapClass, pmapName);
- if (islower(CharOf(pmapClass[0])))
- pmapClass[0] = toupper(CharOf(pmapClass[0]));
- XtGetSubresources(w, (XtPointer) &keymap, pmapName, pmapClass,
- key_resources, (Cardinal) 1, NULL, (Cardinal) 0);
- if (keymap != NULL)
- XtOverrideTranslations(w, keymap);
-
- MyStackFree(pmapName, mapName);
- MyStackFree(pmapClass, mapClass);
-}
-
-/* ARGSUSED */
-static void
-HandleBell(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params, /* [0] = volume */
- Cardinal *param_count) /* 0 or 1 */
-{
- int percent = (*param_count) ? atoi(params[0]) : 0;
-
- Bell(XkbBI_TerminalBell, percent);
-}
-
-/* ARGSUSED */
-static void
-HandleVisualBell(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- VisualBell();
-}
-
-/* ARGSUSED */
-static void
-HandleIgnore(Widget w,
- XEvent * event,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- /* do nothing, but check for funny escape sequences */
- (void) SendMousePosition(w, event);
-}
-
-/* ARGSUSED */
-static void
-DoSetSelectedFont(Widget w GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- Atom * selection GCC_UNUSED,
- Atom * type,
- XtPointer value,
- unsigned long *length GCC_UNUSED,
- int *format)
-{
- char *val = (char *) value;
- int len;
- if (*type != XA_STRING || *format != 8) {
- Bell(XkbBI_MinorError, 0);
- return;
- }
- len = strlen(val);
- if (len > 0) {
- if (val[len - 1] == '\n')
- val[len - 1] = '\0';
- /* Do some sanity checking to avoid sending a long selection
- back to the server in an OpenFont that is unlikely to succeed.
- XLFD allows up to 255 characters and no control characters;
- we are a little more liberal here. */
- if (len > 1000 || strchr(val, '\n'))
- return;
- if (!xtermLoadFont(term,
- xtermFontName(val),
- True,
- fontMenu_fontsel))
- Bell(XkbBI_MinorError, 0);
- }
-}
-
-void
-FindFontSelection(char *atom_name, Bool justprobe)
-{
- static AtomPtr *atoms;
- static int atomCount = 0;
- AtomPtr *pAtom;
- int a;
- Atom target;
-
- if (!atom_name)
- atom_name = "PRIMARY";
-
- for (pAtom = atoms, a = atomCount; a; a--, pAtom++) {
- if (strcmp(atom_name, XmuNameOfAtom(*pAtom)) == 0)
- break;
- }
- if (!a) {
- atoms = (AtomPtr *) XtRealloc((char *) atoms,
- sizeof(AtomPtr) * (atomCount + 1));
- *(pAtom = &atoms[atomCount++]) = XmuMakeAtom(atom_name);
- }
-
- target = XmuInternAtom(XtDisplay(term), *pAtom);
- if (justprobe) {
- term->screen.MenuFontName(fontMenu_fontsel) =
- XGetSelectionOwner(XtDisplay(term), target) ? _Font_Selected_ : 0;
- } else {
- XtGetSelectionValue((Widget) term, target, XA_STRING,
- DoSetSelectedFont, NULL,
- XtLastTimestampProcessed(XtDisplay(term)));
- }
- return;
-}
-
-void
-set_cursor_gcs(TScreen * screen)
-{
- XGCValues xgcv;
- XtGCMask mask;
- Pixel cc = T_COLOR(screen, TEXT_CURSOR);
- Pixel fg = T_COLOR(screen, TEXT_FG);
- Pixel bg = T_COLOR(screen, TEXT_BG);
- GC new_cursorGC = NULL;
- GC new_cursorFillGC = NULL;
- GC new_reversecursorGC = NULL;
- GC new_cursoroutlineGC = NULL;
-
- /*
- * Let's see, there are three things that have "color":
- *
- * background
- * text
- * cursorblock
- *
- * And, there are four situation when drawing a cursor, if we decide
- * that we like have a solid block of cursor color with the letter
- * that it is highlighting shown in the background color to make it
- * stand out:
- *
- * selected window, normal video - background on cursor
- * selected window, reverse video - foreground on cursor
- * unselected window, normal video - foreground on background
- * unselected window, reverse video - background on foreground
- *
- * Since the last two are really just normalGC and reverseGC, we only
- * need two new GC's. Under monochrome, we get the same effect as
- * above by setting cursor color to foreground.
- */
-
-#if OPT_ISO_COLORS
- /*
- * If we're using ANSI colors, the functions manipulating the SGR code will
- * use the same GC's. To avoid having the cursor change color, we use the
- * Xlib calls rather than the Xt calls.
- *
- * Use the colorMode value to determine which we'll do (the VWindow may
- * not be set before the widget's realized, so it's tested separately).
- */
- if (screen->colorMode) {
- if (VWindow(screen) != 0 && (cc != bg) && (cc != fg)) {
- /* we might have a colored foreground/background later */
- xgcv.font = screen->fnt_norm->fid;
- mask = (GCForeground | GCBackground | GCFont);
- xgcv.foreground = fg;
- xgcv.background = cc;
- new_cursorGC = XCreateGC(screen->display, VWindow(screen), mask, &xgcv);
-
- xgcv.foreground = cc;
- xgcv.background = fg;
- new_cursorFillGC =
- XCreateGC(screen->display, VWindow(screen), mask, &xgcv);
-
- if (screen->always_highlight) {
- new_reversecursorGC = (GC) 0;
- new_cursoroutlineGC = (GC) 0;
- } else {
- xgcv.foreground = bg;
- xgcv.background = cc;
- new_reversecursorGC =
- XCreateGC(screen->display, VWindow(screen), mask, &xgcv);
- xgcv.foreground = cc;
- xgcv.background = bg;
- new_cursoroutlineGC =
- XCreateGC(screen->display, VWindow(screen), mask, &xgcv);
- }
- }
- } else
-#endif
- if (cc != fg && cc != bg) {
- /* we have a colored cursor */
- xgcv.font = screen->fnt_norm->fid;
- mask = (GCForeground | GCBackground | GCFont);
-
- xgcv.foreground = fg;
- xgcv.background = cc;
- new_cursorGC = XtGetGC((Widget) term, mask, &xgcv);
-
- xgcv.foreground = cc;
- xgcv.background = fg;
- new_cursorFillGC = XtGetGC((Widget) term, mask, &xgcv);
-
- if (screen->always_highlight) {
- new_reversecursorGC = (GC) 0;
- new_cursoroutlineGC = (GC) 0;
- } else {
- xgcv.foreground = bg;
- xgcv.background = cc;
- new_reversecursorGC = XtGetGC((Widget) term, mask, &xgcv);
- xgcv.foreground = cc;
- xgcv.background = bg;
- new_cursoroutlineGC = XtGetGC((Widget) term, mask, &xgcv);
- }
- }
-#if OPT_ISO_COLORS
- if (screen->colorMode) {
- if (screen->cursorGC)
- XFreeGC(screen->display, screen->cursorGC);
- if (screen->fillCursorGC)
- XFreeGC(screen->display, screen->fillCursorGC);
- if (screen->reversecursorGC)
- XFreeGC(screen->display, screen->reversecursorGC);
- if (screen->cursoroutlineGC)
- XFreeGC(screen->display, screen->cursoroutlineGC);
- } else
-#endif
- {
- if (screen->cursorGC)
- XtReleaseGC((Widget) term, screen->cursorGC);
- if (screen->fillCursorGC)
- XtReleaseGC((Widget) term, screen->fillCursorGC);
- if (screen->reversecursorGC)
- XtReleaseGC((Widget) term, screen->reversecursorGC);
- if (screen->cursoroutlineGC)
- XtReleaseGC((Widget) term, screen->cursoroutlineGC);
- }
-
- screen->cursorGC = new_cursorGC;
- screen->fillCursorGC = new_cursorFillGC;
- screen->reversecursorGC = new_reversecursorGC;
- screen->cursoroutlineGC = new_cursoroutlineGC;
-}
diff --git a/nx-X11/programs/xterm/charproc.c.X.original b/nx-X11/programs/xterm/charproc.c.X.original
deleted file mode 100644
index 2c72b5bdc..000000000
--- a/nx-X11/programs/xterm/charproc.c.X.original
+++ /dev/null
@@ -1,7276 +0,0 @@
-/* $XTermId: charproc.c,v 1.627 2005/11/13 23:10:35 tom Exp $ */
-
-/*
- * $Xorg: charproc.c,v 1.6 2001/02/09 02:06:02 xorgcvs Exp $
- */
-
-/* $XFree86: xc/programs/xterm/charproc.c,v 3.177 2005/11/13 23:10:35 dickey Exp $ */
-
-/*
-
-Copyright 1999-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-Copyright 1988 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 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/* charproc.c */
-
-#include <version.h>
-#include <xterm.h>
-
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/cursorfont.h>
-#include <X11/Xmu/Atoms.h>
-#include <X11/Xmu/CharSet.h>
-#include <X11/Xmu/Converters.h>
-
-#if OPT_INPUT_METHOD
-
-#if defined(HAVE_LIB_XAW)
-#include <X11/Xaw/XawImP.h>
-#elif defined(HAVE_LIB_XAW3D)
-#include <X11/Xaw3d/XawImP.h>
-#elif defined(HAVE_LIB_NEXTAW)
-#include <X11/neXtaw/XawImP.h>
-#elif defined(HAVE_LIB_XAWPLUS)
-#include <X11/XawPlus/XawImP.h>
-#endif
-
-#endif
-
-#if OPT_WIDE_CHARS
-#include <wcwidth.h>
-#include <precompose.h>
-#ifdef HAVE_LANGINFO_CODESET
-#include <langinfo.h>
-#endif
-#endif
-
-#if OPT_INPUT_METHOD
-#include <X11/Xlocale.h>
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-
-#if defined(HAVE_SCHED_YIELD)
-#include <sched.h>
-#endif
-
-#include <VTparse.h>
-#include <data.h>
-#include <error.h>
-#include <menu.h>
-#include <main.h>
-#include <fontutils.h>
-#include <xcharmouse.h>
-#include <charclass.h>
-#include <xstrings.h>
-
-#if OPT_ZICONBEEP || OPT_TOOLBAR
-#define HANDLE_STRUCT_NOTIFY 1
-#else
-#define HANDLE_STRUCT_NOTIFY 0
-#endif
-
-static IChar doinput(void);
-static int set_character_class(char *s);
-static void FromAlternate(TScreen * screen);
-static void RequestResize(XtermWidget termw, int rows, int cols, int text);
-static void SwitchBufs(TScreen * screen);
-static void ToAlternate(TScreen * screen);
-static void VTallocbuf(void);
-static void WriteText(TScreen * screen,
- PAIRED_CHARS(Char * str, Char * str2),
- Cardinal len);
-static void ansi_modes(XtermWidget termw,
- void (*func) (unsigned *p, unsigned mask));
-static void bitclr(unsigned *p, unsigned mask);
-static void bitcpy(unsigned *p, unsigned q, unsigned mask);
-static void bitset(unsigned *p, unsigned mask);
-static void dpmodes(XtermWidget termw, void (*func) (unsigned *p, unsigned mask));
-static void restoremodes(XtermWidget termw);
-static void savemodes(XtermWidget termw);
-static void unparseputn(unsigned int n, int fd);
-static void window_ops(XtermWidget termw);
-
-#define DoStartBlinking(s) ((s)->cursor_blink ^ (s)->cursor_blink_esc)
-
-#if OPT_BLINK_CURS || OPT_BLINK_TEXT
-static void HandleBlinking(XtPointer closure, XtIntervalId * id);
-static void StartBlinking(TScreen * screen);
-static void StopBlinking(TScreen * screen);
-#else
-#define StartBlinking(screen) /* nothing */
-#define StopBlinking(screen) /* nothing */
-#endif
-
-#if OPT_INPUT_METHOD
-static void PreeditPosition(TScreen * screen);
-#endif
-
-#define DEFAULT -1
-#define BELLSUPPRESSMSEC 200
-
-static int nparam;
-static ANSI reply;
-static int param[NPARAM];
-
-static jmp_buf vtjmpbuf;
-
-/* event handlers */
-static void HandleBell PROTO_XT_ACTIONS_ARGS;
-static void HandleIgnore PROTO_XT_ACTIONS_ARGS;
-static void HandleKeymapChange PROTO_XT_ACTIONS_ARGS;
-static void HandleVisualBell PROTO_XT_ACTIONS_ARGS;
-#if HANDLE_STRUCT_NOTIFY
-static void HandleStructNotify PROTO_XT_EV_HANDLER_ARGS;
-#endif
-
-/*
- * NOTE: VTInitialize zeros out the entire ".screen" component of the
- * XtermWidget, so make sure to add an assignment statement in VTInitialize()
- * for each new ".screen" field added to this resource list.
- */
-
-/* Defaults */
-#if OPT_ISO_COLORS
-
-/*
- * If we default to colorMode enabled, compile-in defaults for the ANSI colors.
- */
-#if DFT_COLORMODE
-#define DFT_COLOR(name) name
-#else
-#define DFT_COLOR(name) XtDefaultForeground
-#endif
-#endif
-
-static char *_Font_Selected_ = "yes"; /* string is arbitrary */
-
-static char defaultTranslations[] =
-"\
- Shift <KeyPress> Prior:scroll-back(1,halfpage) \n\
- Shift <KeyPress> Next:scroll-forw(1,halfpage) \n\
- Shift <KeyPress> Select:select-cursor-start() select-cursor-end(PRIMARY, CUT_BUFFER0) \n\
- Shift <KeyPress> Insert:insert-selection(PRIMARY, CUT_BUFFER0) \n\
-"
-#if OPT_SHIFT_FONTS
-"\
- Shift~Ctrl <KeyPress> KP_Add:larger-vt-font() \n\
- Shift Ctrl <KeyPress> KP_Add:smaller-vt-font() \n\
- Shift <KeyPress> KP_Subtract:smaller-vt-font() \n\
-"
-#endif
-"\
- ~Meta <KeyPress>:insert-seven-bit() \n\
- Meta <KeyPress>:insert-eight-bit() \n\
- !Ctrl <Btn1Down>:popup-menu(mainMenu) \n\
- !Lock Ctrl <Btn1Down>:popup-menu(mainMenu) \n\
- !Lock Ctrl @Num_Lock <Btn1Down>:popup-menu(mainMenu) \n\
- ! @Num_Lock Ctrl <Btn1Down>:popup-menu(mainMenu) \n\
- ~Meta <Btn1Down>:select-start() \n\
- ~Meta <Btn1Motion>:select-extend() \n\
- !Ctrl <Btn2Down>:popup-menu(vtMenu) \n\
- !Lock Ctrl <Btn2Down>:popup-menu(vtMenu) \n\
- !Lock Ctrl @Num_Lock <Btn2Down>:popup-menu(vtMenu) \n\
- ! @Num_Lock Ctrl <Btn2Down>:popup-menu(vtMenu) \n\
- ~Ctrl ~Meta <Btn2Down>:ignore() \n\
- Meta <Btn2Down>:clear-saved-lines() \n\
- ~Ctrl ~Meta <Btn2Up>:insert-selection(PRIMARY, CUT_BUFFER0) \n\
- !Ctrl <Btn3Down>:popup-menu(fontMenu) \n\
- !Lock Ctrl <Btn3Down>:popup-menu(fontMenu) \n\
- !Lock Ctrl @Num_Lock <Btn3Down>:popup-menu(fontMenu) \n\
- ! @Num_Lock Ctrl <Btn3Down>:popup-menu(fontMenu) \n\
- ~Ctrl ~Meta <Btn3Down>:start-extend() \n\
- ~Meta <Btn3Motion>:select-extend() \n\
- Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \n\
- Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \n\
- Lock @Num_Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \n\
- @Num_Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \n\
- <Btn4Down>:scroll-back(5,line,m) \n\
- Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \n\
- Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \n\
- Lock @Num_Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \n\
- @Num_Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \n\
- <Btn5Down>:scroll-forw(5,line,m) \n\
- <BtnUp>:select-end(PRIMARY, CUT_BUFFER0) \n\
- <BtnDown>:ignore() \
-"; /* PROCURA added "Meta <Btn2Down>:clear-saved-lines()" */
-/* *INDENT-OFF* */
-static XtActionsRec actionsList[] = {
- { "allow-send-events", HandleAllowSends },
- { "bell", HandleBell },
- { "clear-saved-lines", HandleClearSavedLines },
- { "create-menu", HandleCreateMenu },
- { "dired-button", DiredButton },
- { "hard-reset", HandleHardReset },
- { "ignore", HandleIgnore },
- { "insert", HandleKeyPressed }, /* alias for insert-seven-bit */
- { "insert-eight-bit", HandleEightBitKeyPressed },
- { "insert-selection", HandleInsertSelection },
- { "insert-seven-bit", HandleKeyPressed },
- { "interpret", HandleInterpret },
- { "keymap", HandleKeymapChange },
- { "popup-menu", HandlePopupMenu },
- { "print", HandlePrintScreen },
- { "print-redir", HandlePrintControlMode },
- { "quit", HandleQuit },
- { "redraw", HandleRedraw },
- { "delete-is-del", HandleDeleteIsDEL },
- { "scroll-back", HandleScrollBack },
- { "scroll-forw", HandleScrollForward },
- { "secure", HandleSecure },
- { "select-cursor-end", HandleKeyboardSelectEnd },
- { "select-cursor-extend", HandleKeyboardSelectExtend },
- { "select-cursor-start", HandleKeyboardSelectStart },
- { "select-end", HandleSelectEnd },
- { "select-extend", HandleSelectExtend },
- { "select-set", HandleSelectSet },
- { "select-start", HandleSelectStart },
- { "send-signal", HandleSendSignal },
- { "set-8-bit-control", Handle8BitControl },
- { "set-allow132", HandleAllow132 },
- { "set-altscreen", HandleAltScreen },
- { "set-appcursor", HandleAppCursor },
- { "set-appkeypad", HandleAppKeypad },
- { "set-autolinefeed", HandleAutoLineFeed },
- { "set-autowrap", HandleAutoWrap },
- { "set-backarrow", HandleBackarrow },
- { "set-cursesemul", HandleCursesEmul },
- { "set-jumpscroll", HandleJumpscroll },
- { "set-old-function-keys", HandleOldFunctionKeys },
- { "set-marginbell", HandleMarginBell },
- { "set-reverse-video", HandleReverseVideo },
- { "set-reversewrap", HandleReverseWrap },
- { "set-scroll-on-key", HandleScrollKey },
- { "set-scroll-on-tty-output", HandleScrollTtyOutput },
- { "set-scrollbar", HandleScrollbar },
- { "set-sun-function-keys", HandleSunFunctionKeys },
- { "set-sun-keyboard", HandleSunKeyboard },
- { "set-titeInhibit", HandleTiteInhibit },
- { "set-visual-bell", HandleSetVisualBell },
- { "set-pop-on-bell", HandleSetPopOnBell },
- { "set-vt-font", HandleSetFont },
- { "soft-reset", HandleSoftReset },
- { "start-cursor-extend", HandleKeyboardStartExtend },
- { "start-extend", HandleStartExtend },
- { "string", HandleStringEvent },
- { "vi-button", ViButton },
- { "visual-bell", HandleVisualBell },
-#ifdef ALLOWLOGGING
- { "set-logging", HandleLogging },
-#endif
-#if OPT_BLINK_CURS
- { "set-cursorblink", HandleCursorBlink },
-#endif
-#if OPT_BOX_CHARS
- { "set-font-linedrawing", HandleFontBoxChars },
-#endif
-#if OPT_DABBREV
- { "dabbrev-expand", HandleDabbrevExpand },
-#endif
-#if OPT_DEC_CHRSET
- { "set-font-doublesize", HandleFontDoublesize },
-#endif
-#if OPT_DEC_SOFTFONT
- { "set-font-loading", HandleFontLoading },
-#endif
-#if OPT_HP_FUNC_KEYS
- { "set-hp-function-keys", HandleHpFunctionKeys },
-#endif
-#if OPT_LOAD_VTFONTS
- { "load-vt-fonts", HandleLoadVTFonts },
-#endif
-#if OPT_MAXIMIZE
- { "deiconify", HandleDeIconify },
- { "iconify", HandleIconify },
- { "maximize", HandleMaximize },
- { "restore", HandleRestoreSize },
-#endif
-#if OPT_NUM_LOCK
- { "alt-sends-escape", HandleAltEsc },
- { "meta-sends-escape", HandleMetaEsc },
- { "set-num-lock", HandleNumLock },
-#endif
-#if OPT_READLINE
- { "readline-button", ReadLineButton },
-#endif
-#if OPT_RENDERFONT
- { "set-render-font", HandleRenderFont },
-#endif
-#if OPT_SCO_FUNC_KEYS
- { "set-sco-function-keys", HandleScoFunctionKeys },
-#endif
-#if OPT_SHIFT_FONTS
- { "larger-vt-font", HandleLargerFont },
- { "smaller-vt-font", HandleSmallerFont },
-#endif
-#if OPT_TEK4014
- { "set-terminal-type", HandleSetTerminalType },
- { "set-visibility", HandleVisibility },
- { "set-tek-text", HandleSetTekText },
- { "tek-page", HandleTekPage },
- { "tek-reset", HandleTekReset },
- { "tek-copy", HandleTekCopy },
-#endif
-#if OPT_TOOLBAR
- { "set-toolbar", HandleToolbar },
-#endif
-#if OPT_WIDE_CHARS
- { "set-utf8-mode", HandleUTF8Mode },
-#endif
-};
-/* *INDENT-ON* */
-
-static XtResource resources[] =
-{
- Bres(XtNallowSendEvents, XtCAllowSendEvents, screen.allowSendEvent0, False),
- Bres(XtNallowWindowOps, XtCAllowWindowOps, screen.allowWindowOp0, True),
- Bres(XtNalwaysHighlight, XtCAlwaysHighlight, screen.always_highlight, False),
- Bres(XtNappcursorDefault, XtCAppcursorDefault, misc.appcursorDefault, False),
- Bres(XtNappkeypadDefault, XtCAppkeypadDefault, misc.appkeypadDefault, False),
- Bres(XtNautoWrap, XtCAutoWrap, misc.autoWrap, True),
- Bres(XtNawaitInput, XtCAwaitInput, screen.awaitInput, False),
- Bres(XtNfreeBoldBox, XtCFreeBoldBox, screen.free_bold_box, False),
- Bres(XtNbackarrowKey, XtCBackarrowKey, screen.backarrow_key, True),
- Bres(XtNbellOnReset, XtCBellOnReset, screen.bellOnReset, True),
- Bres(XtNboldMode, XtCBoldMode, screen.bold_mode, True),
- Bres(XtNbrokenSelections, XtCBrokenSelections, screen.brokenSelections, False),
- Bres(XtNc132, XtCC132, screen.c132, False),
- Bres(XtNcurses, XtCCurses, screen.curses, False),
- Bres(XtNcutNewline, XtCCutNewline, screen.cutNewline, True),
- Bres(XtNcutToBeginningOfLine, XtCCutToBeginningOfLine,
- screen.cutToBeginningOfLine, True),
- Bres(XtNdeleteIsDEL, XtCDeleteIsDEL, screen.delete_is_del, DEFDELETE_DEL),
- Bres(XtNdynamicColors, XtCDynamicColors, misc.dynamicColors, True),
- Bres(XtNeightBitControl, XtCEightBitControl, screen.control_eight_bits, False),
- Bres(XtNeightBitInput, XtCEightBitInput, screen.input_eight_bits, True),
- Bres(XtNeightBitOutput, XtCEightBitOutput, screen.output_eight_bits, True),
- Bres(XtNhighlightSelection, XtCHighlightSelection,
- screen.highlight_selection, False),
- Bres(XtNhpLowerleftBugCompat, XtCHpLowerleftBugCompat, screen.hp_ll_bc, False),
- Bres(XtNi18nSelections, XtCI18nSelections, screen.i18nSelections, True),
- Bres(XtNjumpScroll, XtCJumpScroll, screen.jumpscroll, True),
- Bres(XtNloginShell, XtCLoginShell, misc.login_shell, False),
- Bres(XtNmarginBell, XtCMarginBell, screen.marginbell, False),
- Bres(XtNmetaSendsEscape, XtCMetaSendsEscape, screen.meta_sends_esc, False),
- Bres(XtNmultiScroll, XtCMultiScroll, screen.multiscroll, False),
- Bres(XtNoldXtermFKeys, XtCOldXtermFKeys, screen.old_fkeys, False),
- Bres(XtNpopOnBell, XtCPopOnBell, screen.poponbell, False),
- Bres(XtNprinterAutoClose, XtCPrinterAutoClose, screen.printer_autoclose, False),
- Bres(XtNprinterExtent, XtCPrinterExtent, screen.printer_extent, False),
- Bres(XtNprinterFormFeed, XtCPrinterFormFeed, screen.printer_formfeed, False),
- Bres(XtNreverseVideo, XtCReverseVideo, misc.re_verse, False),
- Bres(XtNreverseWrap, XtCReverseWrap, misc.reverseWrap, False),
- Bres(XtNscrollBar, XtCScrollBar, misc.scrollbar, False),
- Bres(XtNscrollKey, XtCScrollCond, screen.scrollkey, False),
- Bres(XtNscrollTtyOutput, XtCScrollCond, screen.scrollttyoutput, True),
- Bres(XtNsignalInhibit, XtCSignalInhibit, misc.signalInhibit, False),
- Bres(XtNtiteInhibit, XtCTiteInhibit, misc.titeInhibit, False),
- Bres(XtNtiXtraScroll, XtCTiXtraScroll, misc.tiXtraScroll, False),
- Bres(XtNtrimSelection, XtCTrimSelection, screen.trim_selection, False),
- Bres(XtNunderLine, XtCUnderLine, screen.underline, True),
- Bres(XtNvisualBell, XtCVisualBell, screen.visualbell, False),
-
- Ires(XtNbellSuppressTime, XtCBellSuppressTime, screen.bellSuppressTime, BELLSUPPRESSMSEC),
- Ires(XtNinternalBorder, XtCBorderWidth, screen.border, DEFBORDER),
- Ires(XtNlimitResize, XtCLimitResize, misc.limit_resize, 1),
- Ires(XtNmultiClickTime, XtCMultiClickTime, screen.multiClickTime, MULTICLICKTIME),
- Ires(XtNnMarginBell, XtCColumn, screen.nmarginbell, N_MARGINBELL),
- Ires(XtNprinterControlMode, XtCPrinterControlMode,
- screen.printer_controlmode, 0),
- Ires(XtNvisualBellDelay, XtCVisualBellDelay, screen.visualBellDelay, 100),
- Ires(XtNsaveLines, XtCSaveLines, screen.savelines, SAVELINES),
- Ires(XtNscrollBarBorder, XtCScrollBarBorder, screen.scrollBarBorder, 1),
- Ires(XtNscrollLines, XtCScrollLines, screen.scrolllines, SCROLLLINES),
-
- Sres(XtNfont1, XtCFont1, screen.MenuFontName(fontMenu_font1), NULL),
- Sres(XtNfont2, XtCFont2, screen.MenuFontName(fontMenu_font2), NULL),
- Sres(XtNfont3, XtCFont3, screen.MenuFontName(fontMenu_font3), NULL),
- Sres(XtNfont4, XtCFont4, screen.MenuFontName(fontMenu_font4), NULL),
- Sres(XtNfont5, XtCFont5, screen.MenuFontName(fontMenu_font5), NULL),
- Sres(XtNfont6, XtCFont6, screen.MenuFontName(fontMenu_font6), NULL),
- Sres(XtNanswerbackString, XtCAnswerbackString, screen.answer_back, ""),
- Sres(XtNboldFont, XtCBoldFont, misc.default_font.f_b, DEFBOLDFONT),
- Sres(XtNcharClass, XtCCharClass, screen.charClass, NULL),
- Sres(XtNdecTerminalID, XtCDecTerminalID, screen.term_id, DFT_DECID),
- Sres(XtNfont, XtCFont, misc.default_font.f_n, DEFFONT),
- Sres(XtNgeometry, XtCGeometry, misc.geo_metry, NULL),
- Sres(XtNkeyboardDialect, XtCKeyboardDialect, screen.keyboard_dialect, DFT_KBD_DIALECT),
- Sres(XtNprinterCommand, XtCPrinterCommand, screen.printer_command, ""),
- Sres(XtNtekGeometry, XtCGeometry, misc.T_geometry, NULL),
-
- Tres(XtNcursorColor, XtCCursorColor, TEXT_CURSOR, XtDefaultForeground),
- Tres(XtNforeground, XtCForeground, TEXT_FG, XtDefaultForeground),
- Tres(XtNpointerColor, XtCPointerColor, MOUSE_FG, XtDefaultForeground),
- Tres(XtNbackground, XtCBackground, TEXT_BG, XtDefaultBackground),
- Tres(XtNpointerColorBackground, XtCBackground, MOUSE_BG, XtDefaultBackground),
-
- {XtNresizeGravity, XtCResizeGravity, XtRGravity, sizeof(XtGravity),
- XtOffsetOf(XtermWidgetRec, misc.resizeGravity),
- XtRImmediate, (XtPointer) SouthWestGravity},
-
- {XtNpointerShape, XtCCursor, XtRCursor, sizeof(Cursor),
- XtOffsetOf(XtermWidgetRec, screen.pointer_cursor),
- XtRString, (XtPointer) "xterm"},
-
-#ifdef ALLOWLOGGING
- Bres(XtNlogInhibit, XtCLogInhibit, misc.logInhibit, False),
- Bres(XtNlogging, XtCLogging, misc.log_on, False),
- Sres(XtNlogFile, XtCLogfile, screen.logfile, NULL),
-#endif
-
-#ifndef NO_ACTIVE_ICON
- Bres("activeIcon", "ActiveIcon", misc.active_icon, False),
- Ires("iconBorderWidth", XtCBorderWidth, misc.icon_border_width, 2),
- Fres("iconFont", "IconFont", screen.fnt_icon, XtDefaultFont),
- Cres("iconBorderColor", XtCBorderColor, misc.icon_border_pixel, XtDefaultBackground),
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_BLINK_CURS
- Bres(XtNcursorBlink, XtCCursorBlink, screen.cursor_blink, False),
-#endif
-
-#if OPT_BLINK_TEXT
- Bres(XtNshowBlinkAsBold, XtCCursorBlink, screen.blink_as_bold, DEFBLINKASBOLD),
-#endif
-
-#if OPT_BLINK_CURS || OPT_BLINK_TEXT
- Ires(XtNcursorOnTime, XtCCursorOnTime, screen.blink_on, 600),
- Ires(XtNcursorOffTime, XtCCursorOffTime, screen.blink_off, 300),
-#endif
-
-#if OPT_BOX_CHARS
- Bres(XtNforceBoxChars, XtCForceBoxChars, screen.force_box_chars, False),
- Bres(XtNshowMissingGlyphs, XtCShowMissingGlyphs, screen.force_all_chars, False),
-#endif
-
-#if OPT_BROKEN_OSC
- Bres(XtNbrokenLinuxOSC, XtCBrokenLinuxOSC, screen.brokenLinuxOSC, True),
-#endif
-
-#if OPT_BROKEN_ST
- Bres(XtNbrokenStringTerm, XtCBrokenStringTerm, screen.brokenStringTerm, True),
-#endif
-
-#if OPT_C1_PRINT
- Bres(XtNallowC1Printable, XtCAllowC1Printable, screen.c1_printable, False),
-#endif
-
-#if OPT_DEC_CHRSET
- Bres(XtNfontDoublesize, XtCFontDoublesize, screen.font_doublesize, True),
- Ires(XtNcacheDoublesize, XtCCacheDoublesize, screen.cache_doublesize, NUM_CHRSET),
-#endif
-
-#if OPT_HIGHLIGHT_COLOR
- Tres(XtNhighlightColor, XtCHighlightColor, HIGHLIGHT_BG, XtDefaultForeground),
-#endif /* OPT_HIGHLIGHT_COLOR */
-
-#if OPT_INPUT_METHOD
- Bres(XtNopenIm, XtCOpenIm, misc.open_im, True),
- Sres(XtNinputMethod, XtCInputMethod, misc.input_method, NULL),
- Sres(XtNpreeditType, XtCPreeditType, misc.preedit_type,
- "OverTheSpot,Root"),
-#endif
-
-#if OPT_ISO_COLORS
- Bres(XtNboldColors, XtCColorMode, screen.boldColors, True),
- Ires(XtNveryBoldColors, XtCVeryBoldColors, screen.veryBoldColors, 0),
- Bres(XtNcolorMode, XtCColorMode, screen.colorMode, DFT_COLORMODE),
-
- Bres(XtNcolorAttrMode, XtCColorAttrMode, screen.colorAttrMode, False),
- Bres(XtNcolorBDMode, XtCColorAttrMode, screen.colorBDMode, False),
- Bres(XtNcolorBLMode, XtCColorAttrMode, screen.colorBLMode, False),
- Bres(XtNcolorRVMode, XtCColorAttrMode, screen.colorRVMode, False),
- Bres(XtNcolorULMode, XtCColorAttrMode, screen.colorULMode, False),
- Bres(XtNitalicULMode, XtCColorAttrMode, screen.italicULMode, False),
-
- COLOR_RES("0", screen.Acolors[COLOR_0], DFT_COLOR("black")),
- COLOR_RES("1", screen.Acolors[COLOR_1], DFT_COLOR("red3")),
- COLOR_RES("2", screen.Acolors[COLOR_2], DFT_COLOR("green3")),
- COLOR_RES("3", screen.Acolors[COLOR_3], DFT_COLOR("yellow3")),
- COLOR_RES("4", screen.Acolors[COLOR_4], DFT_COLOR(DEF_COLOR4)),
- COLOR_RES("5", screen.Acolors[COLOR_5], DFT_COLOR("magenta3")),
- COLOR_RES("6", screen.Acolors[COLOR_6], DFT_COLOR("cyan3")),
- COLOR_RES("7", screen.Acolors[COLOR_7], DFT_COLOR("gray90")),
- COLOR_RES("8", screen.Acolors[COLOR_8], DFT_COLOR("gray50")),
- COLOR_RES("9", screen.Acolors[COLOR_9], DFT_COLOR("red")),
- COLOR_RES("10", screen.Acolors[COLOR_10], DFT_COLOR("green")),
- COLOR_RES("11", screen.Acolors[COLOR_11], DFT_COLOR("yellow")),
- COLOR_RES("12", screen.Acolors[COLOR_12], DFT_COLOR(DEF_COLOR12)),
- COLOR_RES("13", screen.Acolors[COLOR_13], DFT_COLOR("magenta")),
- COLOR_RES("14", screen.Acolors[COLOR_14], DFT_COLOR("cyan")),
- COLOR_RES("15", screen.Acolors[COLOR_15], DFT_COLOR("white")),
- COLOR_RES("BD", screen.Acolors[COLOR_BD], DFT_COLOR(XtDefaultForeground)),
- COLOR_RES("BL", screen.Acolors[COLOR_BL], DFT_COLOR(XtDefaultForeground)),
- COLOR_RES("UL", screen.Acolors[COLOR_UL], DFT_COLOR(XtDefaultForeground)),
- COLOR_RES("RV", screen.Acolors[COLOR_RV], DFT_COLOR(XtDefaultForeground)),
-
-#if !OPT_COLOR_RES2
-#if OPT_256_COLORS
-# include <256colres.h>
-#elif OPT_88_COLORS
-# include <88colres.h>
-#endif
-#endif /* !OPT_COLOR_RES2 */
-
-#endif /* OPT_ISO_COLORS */
-
-#if OPT_MOD_FKEYS
- Ires(XtNmodifyCursorKeys, XtCModifyCursorKeys,
- keyboard.modify_cursor_keys, 2),
-#endif
-
-#if OPT_NUM_LOCK
- Bres(XtNalwaysUseMods, XtCAlwaysUseMods, misc.alwaysUseMods, False),
- Bres(XtNnumLock, XtCNumLock, misc.real_NumLock, True),
-#endif
-
-#if OPT_PRINT_COLORS
- Ires(XtNprintAttributes, XtCPrintAttributes, screen.print_attributes, 1),
-#endif
-
-#if OPT_SHIFT_FONTS
- Bres(XtNshiftFonts, XtCShiftFonts, misc.shift_fonts, True),
-#endif
-
-#if OPT_SUNPC_KBD
- Ires(XtNctrlFKeys, XtCCtrlFKeys, misc.ctrl_fkeys, 10),
-#endif
-
-#if OPT_TEK4014
- Bres(XtNtekInhibit, XtCTekInhibit, misc.tekInhibit, False),
- Bres(XtNtekSmall, XtCTekSmall, misc.tekSmall, False),
- Bres(XtNtekStartup, XtCTekStartup, screen.TekEmu, False),
-#endif
-
-#if OPT_TOOLBAR
- Wres(XtNmenuBar, XtCMenuBar, VT100_TB_INFO(menu_bar), 0),
- Ires(XtNmenuHeight, XtCMenuHeight, VT100_TB_INFO(menu_height), 25),
-#endif
-
-#if OPT_WIDE_CHARS
- Ires(XtNutf8, XtCUtf8, screen.utf8_mode, uDefault),
- Bres(XtNwideChars, XtCWideChars, screen.wide_chars, False),
- Bres(XtNmkWidth, XtCMkWidth, misc.mk_width, False),
- Bres(XtNcjkWidth, XtCCjkWidth, misc.cjk_width, False),
- Bres(XtNvt100Graphics, XtCVT100Graphics, screen.vt100_graphics, True),
- Sres(XtNwideBoldFont, XtCWideBoldFont, misc.default_font.f_wb, DEFWIDEBOLDFONT),
- Sres(XtNwideFont, XtCWideFont, misc.default_font.f_w, DEFWIDEFONT),
-#endif
-
-#if OPT_LUIT_PROG
- Sres(XtNlocale, XtCLocale, misc.locale_str, "medium"),
- Sres(XtNlocaleFilter, XtCLocaleFilter, misc.localefilter, DEFLOCALEFILTER),
-#endif
-
-#if OPT_INPUT_METHOD
- Sres(XtNximFont, XtCXimFont, misc.f_x, DEFXIMFONT),
-#endif
-
-#if OPT_XMC_GLITCH
- Bres(XtNxmcInline, XtCXmcInline, screen.xmc_inline, False),
- Bres(XtNxmcMoveSGR, XtCXmcMoveSGR, screen.move_sgr_ok, True),
- Ires(XtNxmcAttributes, XtCXmcAttributes, screen.xmc_attributes, 1),
- Ires(XtNxmcGlitch, XtCXmcGlitch, screen.xmc_glitch, 0),
-#endif
-
-#ifdef SCROLLBAR_RIGHT
- Bres(XtNrightScrollBar, XtCRightScrollBar, misc.useRight, False),
-#endif
-
-#if OPT_RENDERFONT
- Dres(XtNfaceSize, XtCFaceSize, misc.face_size, DEFFACESIZE),
- Sres(XtNfaceName, XtCFaceName, misc.face_name, DEFFACENAME),
- Sres(XtNfaceNameDoublesize, XtCFaceNameDoublesize, misc.face_wide_name, DEFFACENAME),
- Bres(XtNrenderFont, XtCRenderFont, misc.render_font, True),
-#endif
-};
-
-static Boolean VTSetValues(Widget cur, Widget request, Widget new_arg,
- ArgList args, Cardinal *num_args);
-static void VTClassInit(void);
-static void VTDestroy(Widget w);
-static void VTExpose(Widget w, XEvent * event, Region region);
-static void VTInitialize(Widget wrequest, Widget new_arg, ArgList args,
- Cardinal *num_args);
-static void VTRealize(Widget w, XtValueMask * valuemask,
- XSetWindowAttributes * values);
-static void VTResize(Widget w);
-
-#if OPT_I18N_SUPPORT && OPT_INPUT_METHOD
-static void VTInitI18N(void);
-#endif
-
-#ifdef VMS
-globaldef {
- "xtermclassrec"
-} noshare
-
-#else
-static
-#endif /* VMS */
-WidgetClassRec xtermClassRec =
-{
- {
-/* core_class fields */
- (WidgetClass) & widgetClassRec, /* superclass */
- "VT100", /* class_name */
- sizeof(XtermWidgetRec), /* widget_size */
- VTClassInit, /* class_initialize */
- NULL, /* class_part_initialize */
- False, /* class_inited */
- VTInitialize, /* initialize */
- NULL, /* initialize_hook */
- VTRealize, /* realize */
- actionsList, /* actions */
- XtNumber(actionsList), /* num_actions */
- resources, /* resources */
- XtNumber(resources), /* num_resources */
- NULLQUARK, /* xrm_class */
- True, /* compress_motion */
- False, /* compress_exposure */
- True, /* compress_enterleave */
- False, /* visible_interest */
- VTDestroy, /* destroy */
- VTResize, /* resize */
- VTExpose, /* expose */
- VTSetValues, /* set_values */
- NULL, /* set_values_hook */
- XtInheritSetValuesAlmost, /* set_values_almost */
- NULL, /* get_values_hook */
- NULL, /* accept_focus */
- XtVersion, /* version */
- NULL, /* callback_offsets */
- defaultTranslations, /* tm_table */
- XtInheritQueryGeometry, /* query_geometry */
- XtInheritDisplayAccelerator, /* display_accelerator */
- NULL /* extension */
- }
-};
-
-#ifdef VMS
-globaldef {
- "xtermwidgetclass"
-}
-noshare
-#endif /* VMS */
-WidgetClass xtermWidgetClass = (WidgetClass) & xtermClassRec;
-
-/*
- * Add input-actions for widgets that are overlooked (scrollbar and toolbar):
- *
- * a) Sometimes the scrollbar passes through translations, sometimes it
- * doesn't. We add the KeyPress translations here, just to be sure.
- * b) In the normal (non-toolbar) configuration, the xterm widget covers
- * almost all of the window. With a toolbar, there's a relatively
- * large area that the user would expect to enter keystrokes since the
- * program can get the focus.
- */
-void
-xtermAddInput(Widget w)
-{
-#if OPT_TOOLBAR
- /* *INDENT-OFF* */
- XtActionsRec input_actions[] = {
- { "insert", HandleKeyPressed }, /* alias */
- { "insert-eight-bit", HandleEightBitKeyPressed },
- { "insert-seven-bit", HandleKeyPressed },
- { "secure", HandleSecure },
- { "string", HandleStringEvent },
- { "scroll-back", HandleScrollBack },
- { "scroll-forw", HandleScrollForward },
- { "select-cursor-end", HandleKeyboardSelectEnd },
- { "select-cursor-extend", HandleKeyboardSelectExtend },
- { "select-cursor-start", HandleKeyboardSelectStart },
- { "insert-selection", HandleInsertSelection },
- { "select-start", HandleSelectStart },
- { "select-extend", HandleSelectExtend },
- { "start-extend", HandleStartExtend },
- { "select-end", HandleSelectEnd },
- { "clear-saved-lines", HandleClearSavedLines },
- { "popup-menu", HandlePopupMenu },
- { "bell", HandleBell },
- { "ignore", HandleIgnore },
-#if OPT_DABBREV
- { "dabbrev-expand", HandleDabbrevExpand },
-#endif
-#if OPT_SHIFT_FONTS
- { "larger-vt-font", HandleLargerFont },
- { "smaller-vt-font", HandleSmallerFont },
-#endif
- };
- /* *INDENT-ON* */
-
- XtAppAddActions(app_con, input_actions, XtNumber(input_actions));
-#endif
- XtAugmentTranslations(w, XtParseTranslationTable(defaultTranslations));
-}
-
-#if OPT_ISO_COLORS
-/*
- * The terminal's foreground and background colors are set via two mechanisms:
- * text (cur_foreground, cur_background values that are passed down to
- * XDrawImageString and XDrawString)
- * area (X11 graphics context used in XClearArea and XFillRectangle)
- */
-void
-SGR_Foreground(int color)
-{
- TScreen *screen = &term->screen;
- Pixel fg;
-
- if (color >= 0) {
- term->flags |= FG_COLOR;
- } else {
- term->flags &= ~FG_COLOR;
- }
- fg = getXtermForeground(term->flags, color);
- term->cur_foreground = color;
-
- XSetForeground(screen->display, NormalGC(screen), fg);
- XSetBackground(screen->display, ReverseGC(screen), fg);
-
- if (NormalGC(screen) != NormalBoldGC(screen)) {
- XSetForeground(screen->display, NormalBoldGC(screen), fg);
- XSetBackground(screen->display, ReverseBoldGC(screen), fg);
- }
-}
-
-void
-SGR_Background(int color)
-{
- TScreen *screen = &term->screen;
- Pixel bg;
-
- /*
- * An indexing operation may have set screen->scroll_amt, which would
- * normally result in calling FlushScroll() in WriteText(). However,
- * if we're changing the background color now, then the new value
- * should not apply to the pending blank lines.
- */
- if (screen->scroll_amt && (color != term->cur_background))
- FlushScroll(screen);
-
- if (color >= 0) {
- term->flags |= BG_COLOR;
- } else {
- term->flags &= ~BG_COLOR;
- }
- bg = getXtermBackground(term->flags, color);
- term->cur_background = color;
-
- XSetBackground(screen->display, NormalGC(screen), bg);
- XSetForeground(screen->display, ReverseGC(screen), bg);
-
- if (NormalGC(screen) != NormalBoldGC(screen)) {
- XSetBackground(screen->display, NormalBoldGC(screen), bg);
- XSetForeground(screen->display, ReverseBoldGC(screen), bg);
- }
-}
-
-/* Invoked after updating bold/underline flags, computes the extended color
- * index to use for foreground. (See also 'extract_fg()').
- */
-static void
-setExtendedFG(void)
-{
- int fg = term->sgr_foreground;
-
- if (term->screen.colorAttrMode
- || (fg < 0)) {
- if (term->screen.colorULMode && (term->flags & UNDERLINE))
- fg = COLOR_UL;
- if (term->screen.colorBDMode && (term->flags & BOLD))
- fg = COLOR_BD;
- if (term->screen.colorBLMode && (term->flags & BLINK))
- fg = COLOR_BL;
- }
-
- /* This implements the IBM PC-style convention of 8-colors, with one
- * bit for bold, thus mapping the 0-7 codes to 8-15. It won't make
- * much sense for 16-color applications, but we keep it to retain
- * compatiblity with ANSI-color applications.
- */
-#if OPT_PC_COLORS /* XXXJTL should be settable at runtime (resource or OSC?) */
- if (term->screen.boldColors
- && (!term->sgr_extended)
- && (fg >= 0)
- && (fg < 8)
- && (term->flags & BOLD))
- fg |= 8;
-#endif
-
- SGR_Foreground(fg);
-}
-
-/* Invoked after updating inverse flag, computes the extended color
- * index to use for background. (See also 'extract_bg()').
- */
-static void
-setExtendedBG(void)
-{
- int bg = term->sgr_background;
-
- if (term->screen.colorAttrMode
- || (bg < 0)) {
- if (term->screen.colorRVMode && (term->flags & INVERSE))
- bg = COLOR_RV;
- }
-
- SGR_Background(bg);
-}
-
-static void
-reset_SGR_Foreground(void)
-{
- term->sgr_foreground = -1;
- term->sgr_extended = 0;
- setExtendedFG();
-}
-
-static void
-reset_SGR_Background(void)
-{
- term->sgr_background = -1;
- setExtendedBG();
-}
-
-static void
-reset_SGR_Colors(void)
-{
- reset_SGR_Foreground();
- reset_SGR_Background();
-}
-#endif /* OPT_ISO_COLORS */
-
-void
-resetCharsets(TScreen * screen)
-{
- TRACE(("resetCharsets\n"));
-
- screen->gsets[0] = 'B'; /* ASCII_G */
- screen->gsets[1] = 'B'; /* ASCII_G */
- screen->gsets[2] = 'B'; /* ASCII_G */
- screen->gsets[3] = 'B'; /* ASCII_G */
-
- screen->curgl = 0; /* G0 => GL. */
- screen->curgr = 2; /* G2 => GR. */
- screen->curss = 0; /* No single shift. */
-
-#if OPT_VT52_MODE
- if (screen->vtXX_level == 0)
- screen->gsets[1] = '0'; /* Graphics */
-#endif
-}
-
-/*
- * VT300 and up support three ANSI conformance levels, defined according to
- * the dpANSI X3.134.1 standard. DEC's manuals equate levels 1 and 2, and
- * are unclear. This code is written based on the manuals.
- */
-static void
-set_ansi_conformance(TScreen * screen, int level)
-{
- TRACE(("set_ansi_conformance(%d) terminal_id %d, ansi_level %d\n",
- level,
- screen->terminal_id,
- screen->ansi_level));
- if (screen->vtXX_level >= 3) {
- switch (screen->ansi_level = level) {
- case 1:
- /* FALLTHRU */
- case 2:
- screen->gsets[0] = 'B'; /* G0 is ASCII */
- screen->gsets[1] = 'B'; /* G1 is ISO Latin-1 (FIXME) */
- screen->curgl = 0;
- screen->curgr = 1;
- break;
- case 3:
- screen->gsets[0] = 'B'; /* G0 is ASCII */
- screen->curgl = 0;
- break;
- }
- }
-}
-
-/*
- * Set scrolling margins. VTxxx terminals require that the top/bottom are
- * different, so we have at least two lines in the scrolling region.
- */
-void
-set_tb_margins(TScreen * screen, int top, int bottom)
-{
- TRACE(("set_tb_margins %d..%d, prior %d..%d\n",
- top, bottom,
- screen->top_marg,
- screen->bot_marg));
- if (bottom > top) {
- screen->top_marg = top;
- screen->bot_marg = bottom;
- }
- if (screen->top_marg > screen->max_row)
- screen->top_marg = screen->max_row;
- if (screen->bot_marg > screen->max_row)
- screen->bot_marg = screen->max_row;
-}
-
-void
-set_max_col(TScreen * screen, int cols)
-{
- TRACE(("set_max_col %d, prior %d\n", cols, screen->max_col));
- if (cols < 0)
- cols = 0;
- screen->max_col = cols;
-}
-
-void
-set_max_row(TScreen * screen, int rows)
-{
- TRACE(("set_max_row %d, prior %d\n", rows, screen->max_row));
- if (rows < 0)
- rows = 0;
- screen->max_row = rows;
-}
-
-#if OPT_TRACE
-#define WHICH_TABLE(name) if (table == name) result = #name
-static char *
-which_table(Const PARSE_T * table)
-{
- char *result = "?";
- /* *INDENT-OFF* */
- WHICH_TABLE (ansi_table);
- else WHICH_TABLE (csi_table);
- else WHICH_TABLE (csi2_table);
- else WHICH_TABLE (csi_ex_table);
- else WHICH_TABLE (csi_quo_table);
-#if OPT_DEC_LOCATOR
- else WHICH_TABLE (csi_tick_table);
-#endif
-#if OPT_DEC_RECTOPS
- else WHICH_TABLE (csi_dollar_table);
- else WHICH_TABLE (csi_star_table);
-#endif
- else WHICH_TABLE (dec_table);
- else WHICH_TABLE (dec2_table);
- else WHICH_TABLE (dec3_table);
- else WHICH_TABLE (cigtable);
- else WHICH_TABLE (eigtable);
- else WHICH_TABLE (esc_table);
- else WHICH_TABLE (esc_sp_table);
- else WHICH_TABLE (scrtable);
- else WHICH_TABLE (scstable);
- else WHICH_TABLE (sos_table);
-#if OPT_WIDE_CHARS
- else WHICH_TABLE (esc_pct_table);
-#endif
-#if OPT_VT52_MODE
- else WHICH_TABLE (vt52_table);
- else WHICH_TABLE (vt52_esc_table);
- else WHICH_TABLE (vt52_ignore_table);
-#endif
- /* *INDENT-ON* */
-
- return result;
-}
-#endif
-
- /* allocate larger buffer if needed/possible */
-#define SafeAlloc(type, area, used, size) \
- type *new_string = area; \
- unsigned new_length = size; \
- if (new_length == 0) { \
- new_length = 256; \
- new_string = TypeMallocN(type, new_length); \
- } else if (used+1 >= new_length) { \
- new_length = size * 2; \
- new_string = TypeMallocN(type, new_length); \
- if (new_string != 0 \
- && area != 0 \
- && used != 0) \
- memcpy(new_string, area, used * sizeof(type)); \
- }
-
-#define WriteNow() { \
- unsigned single = 0; \
- \
- if (screen->curss) { \
- dotext(screen, \
- screen->gsets[(int) (screen->curss)], \
- print_area, 1); \
- screen->curss = 0; \
- single++; \
- } \
- if (print_used > single) { \
- dotext(screen, \
- screen->gsets[(int) (screen->curgl)], \
- print_area + single, \
- print_used - single); \
- } \
- print_used = 0; \
- } \
-
-struct ParseState {
-#if OPT_VT52_MODE
- Bool vt52_cup;
-#endif
- Const PARSE_T *groundtable;
- Const PARSE_T *parsestate;
- int scstype;
- Bool private_function; /* distinguish private-mode from standard */
- int string_mode; /* nonzero iff we're processing a string */
- int lastchar; /* positive iff we had a graphic character */
- int nextstate;
-#if OPT_WIDE_CHARS
- int last_was_wide;
-#endif
-};
-
-static struct ParseState myState;
-
-static Boolean
-doparsing(unsigned c, struct ParseState *sp)
-{
- /* Buffer for processing printable text */
- static IChar *print_area;
- static size_t print_size, print_used;
-
- /* Buffer for processing strings (e.g., OSC ... ST) */
- static Char *string_area;
- static size_t string_size, string_used;
-
- TScreen *screen = &term->screen;
- int row;
- int col;
- int top;
- int bot;
- int count;
- int laststate;
- int thischar = -1;
- XTermRect myRect;
-
- do {
-#if OPT_WIDE_CHARS
-
- /*
- * Handle zero-width combining characters. Make it faster by noting
- * that according to the Unicode charts, the majority of Western
- * character sets do not use this feature. There are some unassigned
- * codes at 0x242, but no zero-width characters until past 0x300.
- */
- if (c >= 0x300 && screen->wide_chars
- && my_wcwidth((int) c) == 0) {
- int prev, precomposed;
-
- WriteNow();
-
- prev = getXtermCell(screen,
- screen->last_written_row,
- screen->last_written_col);
- precomposed = do_precomposition(prev, (int) c);
-
- if (precomposed != -1) {
- putXtermCell(screen,
- screen->last_written_row,
- screen->last_written_col, precomposed);
- } else {
- addXtermCombining(screen,
- screen->last_written_row,
- screen->last_written_col, c);
- }
- if (!screen->scroll_amt)
- ScrnUpdate(screen,
- screen->last_written_row,
- screen->last_written_col, 1, 1, 1);
- continue;
- }
-#endif
-
- /* Intercept characters for printer controller mode */
- if (screen->printer_controlmode == 2) {
- if ((c = xtermPrinterControl((int) c)) == 0)
- continue;
- }
-
- /*
- * VT52 is a little ugly in the one place it has a parameterized
- * control sequence, since the parameter falls after the character
- * that denotes the type of sequence.
- */
-#if OPT_VT52_MODE
- if (sp->vt52_cup) {
- if (nparam < NPARAM)
- param[nparam++] = (c & 0x7f) - 32;
- if (nparam < 2)
- continue;
- sp->vt52_cup = False;
- if ((row = param[0]) < 0)
- row = 0;
- if ((col = param[1]) < 0)
- col = 0;
- CursorSet(screen, row, col, term->flags);
- sp->parsestate = vt52_table;
- param[0] = 0;
- param[1] = 0;
- continue;
- }
-#endif
-
- /*
- * The parsing tables all have 256 entries. If we're supporting
- * wide characters, we handle them by treating them the same as
- * printing characters.
- */
- laststate = sp->nextstate;
-#if OPT_WIDE_CHARS
- if (c > 255) {
- if (sp->parsestate == sp->groundtable) {
- sp->nextstate = CASE_PRINT;
- } else if (sp->parsestate == sos_table) {
- c &= 0xffff;
- if (c > 255) {
- TRACE(("Found code > 255 while in SOS state: %04X\n", c));
- c = '?';
- }
- } else {
- sp->nextstate = CASE_GROUND_STATE;
- }
- } else
-#endif
- sp->nextstate = sp->parsestate[E2A(c)];
-
-#if OPT_BROKEN_OSC
- /*
- * Linux console palette escape sequences start with an OSC, but do
- * not terminate correctly. Some scripts do not check before writing
- * them, making xterm appear to hang (it's awaiting a valid string
- * terminator). Just ignore these if we see them - there's no point
- * in emulating bad code.
- */
- if (screen->brokenLinuxOSC
- && sp->parsestate == sos_table) {
- if (string_used) {
- switch (string_area[0]) {
- case 'P':
- if (string_used <= 7)
- break;
- /* FALLTHRU */
- case 'R':
- sp->parsestate = sp->groundtable;
- sp->nextstate = sp->parsestate[E2A(c)];
- TRACE(("Reset to ground state (brokenLinuxOSC)\n"));
- break;
- }
- }
- }
-#endif
-
-#if OPT_BROKEN_ST
- /*
- * Before patch #171, carriage control embedded within an OSC string
- * would terminate it. Some (buggy, of course) applications rely on
- * this behavior. Accommodate them by allowing one to compile xterm
- * and emulate the old behavior.
- */
- if (screen->brokenStringTerm
- && sp->parsestate == sos_table
- && c < 32) {
- switch (c) {
- case 5: /* FALLTHRU */
- case 8: /* FALLTHRU */
- case 9: /* FALLTHRU */
- case 10: /* FALLTHRU */
- case 11: /* FALLTHRU */
- case 12: /* FALLTHRU */
- case 13: /* FALLTHRU */
- case 14: /* FALLTHRU */
- case 15: /* FALLTHRU */
- case 24:
- sp->parsestate = sp->groundtable;
- sp->nextstate = sp->parsestate[E2A(c)];
- TRACE(("Reset to ground state (brokenStringTerm)\n"));
- break;
- }
- }
-#endif
-
-#if OPT_C1_PRINT
- /*
- * This is not completely foolproof, but will allow an application
- * with values in the C1 range to use them as printable characters,
- * provided that they are not intermixed with an escape sequence.
- */
- if (screen->c1_printable
- && (c >= 128 && c < 160)) {
- sp->nextstate = (sp->parsestate == esc_table
- ? CASE_ESC_IGNORE
- : sp->parsestate[E2A(160)]);
- }
-#endif
-
-#if OPT_WIDE_CHARS
- /*
- * If we have a C1 code and the c1_printable flag is not set, simply
- * ignore it when it was translated from UTF-8. That is because the
- * value could not have been present as-is in the UTF-8.
- *
- * To see that CASE_IGNORE is a consistent value, note that it is
- * always used for NUL and other uninteresting C0 controls.
- */
-#if OPT_C1_PRINT
- if (!screen->c1_printable)
-#endif
- if (screen->wide_chars
- && (c >= 128 && c < 160)) {
- sp->nextstate = CASE_IGNORE;
- }
-
- /*
- * If this character is a different width than the last one, put the
- * previous text into the buffer and draw it now.
- */
- if (iswide((int) c) != sp->last_was_wide) {
- WriteNow();
- }
-#endif
-
- /*
- * Accumulate string for printable text. This may be 8/16-bit
- * characters.
- */
- if (sp->nextstate == CASE_PRINT) {
- SafeAlloc(IChar, print_area, print_used, print_size);
- if (new_string == 0) {
- fprintf(stderr,
- "Cannot allocate %u bytes for printable text\n",
- new_length);
- continue;
- }
-#if OPT_VT52_MODE
- /*
- * Strip output text to 7-bits for VT52. We should do this for
- * VT100 also (which is a 7-bit device), but xterm has been
- * doing this for so long we shouldn't change this behavior.
- */
- if (screen->vtXX_level < 1)
- c &= 0x7f;
-#endif
- print_area = new_string;
- print_size = new_length;
- print_area[print_used++] = sp->lastchar = thischar = c;
-#if OPT_WIDE_CHARS
- sp->last_was_wide = iswide((int) c);
-#endif
- if (morePtyData(screen, VTbuffer)) {
- continue;
- }
- }
-
- if (sp->nextstate == CASE_PRINT
- || (laststate == CASE_PRINT && print_used)) {
- WriteNow();
- }
-
- /*
- * Accumulate string for APC, DCS, PM, OSC, SOS controls
- * This should always be 8-bit characters.
- */
- if (sp->parsestate == sos_table) {
- SafeAlloc(Char, string_area, string_used, string_size);
- if (new_string == 0) {
- fprintf(stderr,
- "Cannot allocate %u bytes for string mode %d\n",
- new_length, sp->string_mode);
- continue;
- }
-#if OPT_WIDE_CHARS
- /*
- * We cannot display codes above 255, but let's try to
- * accommodate the application a little by not aborting the
- * string.
- */
- if ((c & 0xffff) > 255) {
- sp->nextstate = CASE_PRINT;
- c = '?';
- }
-#endif
- string_area = new_string;
- string_size = new_length;
- string_area[string_used++] = c;
- } else if (sp->parsestate != esc_table) {
- /* if we were accumulating, we're not any more */
- sp->string_mode = 0;
- string_used = 0;
- }
-
- TRACE(("parse %04X -> %d %s\n", c, sp->nextstate, which_table(sp->parsestate)));
-
- switch (sp->nextstate) {
- case CASE_PRINT:
- TRACE(("CASE_PRINT - printable characters\n"));
- break;
-
- case CASE_GROUND_STATE:
- TRACE(("CASE_GROUND_STATE - exit ignore mode\n"));
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_IGNORE:
- TRACE(("CASE_IGNORE - Ignore character %02X\n", c));
- break;
-
- case CASE_ENQ:
- TRACE(("CASE_ENQ - answerback\n"));
- for (count = 0; screen->answer_back[count] != 0; count++)
- unparseputc(screen->answer_back[count], screen->respond);
- break;
-
- case CASE_BELL:
- TRACE(("CASE_BELL - bell\n"));
- if (sp->string_mode == OSC) {
- if (string_used)
- string_area[--string_used] = '\0';
- do_osc(string_area, string_used, (int) c);
- sp->parsestate = sp->groundtable;
- } else {
- /* bell */
- Bell(XkbBI_TerminalBell, 0);
- }
- break;
-
- case CASE_BS:
- TRACE(("CASE_BS - backspace\n"));
- CursorBack(screen, 1);
- break;
-
- case CASE_CR:
- /* CR */
- CarriageReturn(screen);
- break;
-
- case CASE_ESC:
- if_OPT_VT52_MODE(screen, {
- sp->parsestate = vt52_esc_table;
- break;
- });
- sp->parsestate = esc_table;
- break;
-
-#if OPT_VT52_MODE
- case CASE_VT52_CUP:
- TRACE(("CASE_VT52_CUP - VT52 cursor addressing\n"));
- sp->vt52_cup = True;
- nparam = 0;
- break;
-
- case CASE_VT52_IGNORE:
- TRACE(("CASE_VT52_IGNORE - VT52 ignore-character\n"));
- sp->parsestate = vt52_ignore_table;
- break;
-#endif
-
- case CASE_VMOT:
- /*
- * form feed, line feed, vertical tab
- */
- xtermAutoPrint((int) c);
- xtermIndex(screen, 1);
- if (term->flags & LINEFEED)
- CarriageReturn(screen);
- do_xevents();
- break;
-
- case CASE_CBT:
- /* cursor backward tabulation */
- if ((count = param[0]) == DEFAULT)
- count = 1;
- while ((count-- > 0)
- && (TabToPrevStop(screen))) ;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CHT:
- /* cursor forward tabulation */
- if ((count = param[0]) == DEFAULT)
- count = 1;
- while ((count-- > 0)
- && (TabToNextStop(screen))) ;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_TAB:
- /* tab */
- TabToNextStop(screen);
- break;
-
- case CASE_SI:
- screen->curgl = 0;
- if_OPT_VT52_MODE(screen, {
- sp->parsestate = sp->groundtable;
- });
- break;
-
- case CASE_SO:
- screen->curgl = 1;
- if_OPT_VT52_MODE(screen, {
- sp->parsestate = sp->groundtable;
- });
- break;
-
- case CASE_DECDHL:
- xterm_DECDHL(c == '3');
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSWL:
- xterm_DECSWL();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECDWL:
- xterm_DECDWL();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SCR_STATE:
- /* enter scr state */
- sp->parsestate = scrtable;
- break;
-
- case CASE_SCS0_STATE:
- /* enter scs state 0 */
- sp->scstype = 0;
- sp->parsestate = scstable;
- break;
-
- case CASE_SCS1_STATE:
- /* enter scs state 1 */
- sp->scstype = 1;
- sp->parsestate = scstable;
- break;
-
- case CASE_SCS2_STATE:
- /* enter scs state 2 */
- sp->scstype = 2;
- sp->parsestate = scstable;
- break;
-
- case CASE_SCS3_STATE:
- /* enter scs state 3 */
- sp->scstype = 3;
- sp->parsestate = scstable;
- break;
-
- case CASE_ESC_IGNORE:
- /* unknown escape sequence */
- sp->parsestate = eigtable;
- break;
-
- case CASE_ESC_DIGIT:
- /* digit in csi or dec mode */
- if ((row = param[nparam - 1]) == DEFAULT)
- row = 0;
- param[nparam - 1] = 10 * row + (c - '0');
- if (param[nparam - 1] > 65535)
- param[nparam - 1] = 65535;
- if (sp->parsestate == csi_table)
- sp->parsestate = csi2_table;
- break;
-
- case CASE_ESC_SEMI:
- /* semicolon in csi or dec mode */
- if (nparam < NPARAM)
- param[nparam++] = DEFAULT;
- if (sp->parsestate == csi_table)
- sp->parsestate = csi2_table;
- break;
-
- case CASE_DEC_STATE:
- /* enter dec mode */
- sp->parsestate = dec_table;
- break;
-
- case CASE_DEC2_STATE:
- /* enter dec2 mode */
- sp->parsestate = dec2_table;
- break;
-
- case CASE_DEC3_STATE:
- /* enter dec3 mode */
- sp->parsestate = dec3_table;
- break;
-
- case CASE_ICH:
- TRACE(("CASE_ICH - insert char\n"));
- if ((row = param[0]) < 1)
- row = 1;
- InsertChar(screen, (unsigned) row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUU:
- TRACE(("CASE_CUU - cursor up\n"));
- if ((row = param[0]) < 1)
- row = 1;
- CursorUp(screen, row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUD:
- TRACE(("CASE_CUD - cursor down\n"));
- if ((row = param[0]) < 1)
- row = 1;
- CursorDown(screen, row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUF:
- TRACE(("CASE_CUF - cursor forward\n"));
- if ((col = param[0]) < 1)
- col = 1;
- CursorForward(screen, col);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUB:
- TRACE(("CASE_CUB - cursor backward\n"));
- if ((col = param[0]) < 1)
- col = 1;
- CursorBack(screen, col);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CUP:
- TRACE(("CASE_CUP - cursor position\n"));
- if_OPT_XMC_GLITCH(screen, {
- Jump_XMC(screen);
- });
- if ((row = param[0]) < 1)
- row = 1;
- if (nparam < 2 || (col = param[1]) < 1)
- col = 1;
- CursorSet(screen, row - 1, col - 1, term->flags);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_VPA:
- TRACE(("CASE_VPA - vertical position\n"));
- if ((row = param[0]) < 1)
- row = 1;
- CursorSet(screen, row - 1, screen->cur_col, term->flags);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_HPA:
- TRACE(("CASE_HPA - horizontal position\n"));
- if ((col = param[0]) < 1)
- col = 1;
- CursorSet(screen, screen->cur_row, col - 1, term->flags);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_HP_BUGGY_LL:
- TRACE(("CASE_HP_BUGGY_LL\n"));
- /* Some HP-UX applications have the bug that they
- assume ESC F goes to the lower left corner of
- the screen, regardless of what terminfo says. */
- if (screen->hp_ll_bc)
- CursorSet(screen, screen->max_row, 0, term->flags);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ED:
- TRACE(("CASE_ED - erase display\n"));
- do_erase_display(screen, param[0], OFF_PROTECT);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_EL:
- TRACE(("CASE_EL - erase line\n"));
- do_erase_line(screen, param[0], OFF_PROTECT);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ECH:
- TRACE(("CASE_ECH - erase char\n"));
- /* ECH */
- ClearRight(screen, param[0] < 1 ? 1 : param[0]);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_IL:
- TRACE(("CASE_IL - insert line\n"));
- if ((row = param[0]) < 1)
- row = 1;
- InsertLine(screen, row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DL:
- TRACE(("CASE_DL - delete line\n"));
- if ((row = param[0]) < 1)
- row = 1;
- DeleteLine(screen, row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DCH:
- TRACE(("CASE_DCH - delete char\n"));
- if ((row = param[0]) < 1)
- row = 1;
- DeleteChar(screen, (unsigned) row);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_TRACK_MOUSE:
- /*
- * A single parameter other than zero is always scroll-down.
- * A zero-parameter is used to reset the mouse mode, and is
- * not useful for scrolling anyway.
- */
- if (nparam > 1 || param[0] == 0) {
- TRACE(("CASE_TRACK_MOUSE\n"));
- /* Track mouse as long as in window and between
- * specified rows
- */
- TrackMouse(param[0],
- param[2] - 1, param[1] - 1,
- param[3] - 1, param[4] - 2);
- } else {
- TRACE(("CASE_SD - scroll down\n"));
- /* SD */
- if ((count = param[0]) < 1)
- count = 1;
- RevScroll(screen, count);
- do_xevents();
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECID:
- TRACE(("CASE_DECID\n"));
- if_OPT_VT52_MODE(screen, {
- unparseputc(ESC, screen->respond);
- unparseputc('/', screen->respond);
- unparseputc('Z', screen->respond);
- sp->parsestate = sp->groundtable;
- break;
- });
- param[0] = DEFAULT; /* Default ID parameter */
- /* FALLTHRU */
- case CASE_DA1:
- TRACE(("CASE_DA1\n"));
- if (param[0] <= 0) { /* less than means DEFAULT */
- count = 0;
- reply.a_type = CSI;
- reply.a_pintro = '?';
-
- /* The first param corresponds to the highest
- * operating level (i.e., service level) of the
- * emulation. A DEC terminal can be setup to
- * respond with a different DA response, but
- * there's no control sequence that modifies this.
- * We set it via a resource.
- */
- if (screen->terminal_id < 200) {
- switch (screen->terminal_id) {
- case 102:
- reply.a_param[count++] = 6; /* VT102 */
- break;
- case 101:
- reply.a_param[count++] = 1; /* VT101 */
- reply.a_param[count++] = 0; /* no options */
- break;
- default: /* VT100 */
- reply.a_param[count++] = 1; /* VT100 */
- reply.a_param[count++] = 2; /* AVO */
- break;
- }
- } else {
- reply.a_param[count++] = 60 + screen->terminal_id / 100;
- reply.a_param[count++] = 1; /* 132-columns */
- reply.a_param[count++] = 2; /* printer */
- reply.a_param[count++] = 6; /* selective-erase */
-#if OPT_SUNPC_KBD
- if (term->keyboard.type == keyboardIsVT220)
-#endif
- reply.a_param[count++] = 8; /* user-defined-keys */
- reply.a_param[count++] = 9; /* national replacement charsets */
- reply.a_param[count++] = 15; /* technical characters */
- if_OPT_ISO_COLORS(screen, {
- reply.a_param[count++] = 22; /* ANSI color, VT525 */
- });
-#if OPT_DEC_LOCATOR
- reply.a_param[count++] = 29; /* ANSI text locator */
-#endif
- }
- reply.a_nparam = count;
- reply.a_inters = 0;
- reply.a_final = 'c';
- unparseseq(&reply, screen->respond);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DA2:
- TRACE(("CASE_DA2\n"));
- if (param[0] <= 0) { /* less than means DEFAULT */
- count = 0;
- reply.a_type = CSI;
- reply.a_pintro = '>';
-
- if (screen->terminal_id >= 200)
- reply.a_param[count++] = 1; /* VT220 */
- else
- reply.a_param[count++] = 0; /* VT100 (nonstandard) */
- reply.a_param[count++] = XTERM_PATCH; /* Version */
- reply.a_param[count++] = 0; /* options (none) */
- reply.a_nparam = count;
- reply.a_inters = 0;
- reply.a_final = 'c';
- unparseseq(&reply, screen->respond);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECRPTUI:
- TRACE(("CASE_DECRPTUI\n"));
- if ((screen->terminal_id >= 400)
- && (param[0] <= 0)) { /* less than means DEFAULT */
- unparseputc1(DCS, screen->respond);
- unparseputc('!', screen->respond);
- unparseputc('|', screen->respond);
- unparseputc('0', screen->respond);
- unparseputc1(ST, screen->respond);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_TBC:
- TRACE(("CASE_TBC - tab clear\n"));
- if ((row = param[0]) <= 0) /* less than means default */
- TabClear(term->tabs, screen->cur_col);
- else if (row == 3)
- TabZonk(term->tabs);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SET:
- TRACE(("CASE_SET - set mode\n"));
- ansi_modes(term, bitset);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_RST:
- TRACE(("CASE_RST - reset mode\n"));
- ansi_modes(term, bitclr);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SGR:
- for (row = 0; row < nparam; ++row) {
- if_OPT_XMC_GLITCH(screen, {
- Mark_XMC(screen, param[row]);
- });
- TRACE(("CASE_SGR %d\n", param[row]));
- switch (param[row]) {
- case DEFAULT:
- case 0:
- term->flags &=
- ~(INVERSE | BOLD | BLINK | UNDERLINE | INVISIBLE);
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Colors();
- });
- break;
- case 1: /* Bold */
- term->flags |= BOLD;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 5: /* Blink */
- term->flags |= BLINK;
- StartBlinking(screen);
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 4: /* Underscore */
- term->flags |= UNDERLINE;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 7:
- term->flags |= INVERSE;
- if_OPT_ISO_COLORS(screen, {
- setExtendedBG();
- });
- break;
- case 8:
- term->flags |= INVISIBLE;
- break;
- case 22: /* reset 'bold' */
- term->flags &= ~BOLD;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 24:
- term->flags &= ~UNDERLINE;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 25: /* reset 'blink' */
- term->flags &= ~BLINK;
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- break;
- case 27:
- term->flags &= ~INVERSE;
- if_OPT_ISO_COLORS(screen, {
- setExtendedBG();
- });
- break;
- case 28:
- term->flags &= ~INVISIBLE;
- break;
- case 30:
- case 31:
- case 32:
- case 33:
- case 34:
- case 35:
- case 36:
- case 37:
- if_OPT_ISO_COLORS(screen, {
- term->sgr_foreground = (param[row] - 30);
- term->sgr_extended = 0;
- setExtendedFG();
- });
- break;
- case 38:
- /* This is more complicated than I'd
- like, but it should properly eat all
- the parameters for unsupported modes
- */
- if_OPT_ISO_COLORS(screen, {
- row++;
- if (row < nparam) {
- switch (param[row]) {
- case 5:
- row++;
- if (row < nparam &&
- param[row] < NUM_ANSI_COLORS) {
- term->sgr_foreground = param[row];
- term->sgr_extended = 1;
- setExtendedFG();
- }
- break;
- default:
- row += 7;
- break;
- }
- }
- });
- break;
- case 39:
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Foreground();
- });
- break;
- case 40:
- case 41:
- case 42:
- case 43:
- case 44:
- case 45:
- case 46:
- case 47:
- if_OPT_ISO_COLORS(screen, {
- term->sgr_background = (param[row] - 40);
- setExtendedBG();
- });
- break;
- case 48:
- if_OPT_ISO_COLORS(screen, {
- row++;
- if (row < nparam) {
- switch (param[row]) {
- case 5:
- row++;
- if (row < nparam &&
- param[row] < NUM_ANSI_COLORS) {
- term->sgr_background = param[row];
- setExtendedBG();
- }
- break;
- default:
- row += 7;
- break;
- }
- }
- });
- break;
- case 49:
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Background();
- });
- break;
- case 90:
- case 91:
- case 92:
- case 93:
- case 94:
- case 95:
- case 96:
- case 97:
- if_OPT_AIX_COLORS(screen, {
- term->sgr_foreground = (param[row] - 90 + 8);
- term->sgr_extended = 0;
- setExtendedFG();
- });
- break;
- case 100:
-#if !OPT_AIX_COLORS
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Foreground();
- reset_SGR_Background();
- });
- break;
-#endif
- case 101:
- case 102:
- case 103:
- case 104:
- case 105:
- case 106:
- case 107:
- if_OPT_AIX_COLORS(screen, {
- term->sgr_background = (param[row] - 100 + 8);
- setExtendedBG();
- });
- break;
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- /* DSR (except for the '?') is a superset of CPR */
- case CASE_DSR:
- sp->private_function = True;
-
- /* FALLTHRU */
- case CASE_CPR:
- TRACE(("CASE_CPR - cursor position\n"));
- count = 0;
- reply.a_type = CSI;
- reply.a_pintro = sp->private_function ? '?' : 0;
- reply.a_inters = 0;
- reply.a_final = 'n';
-
- switch (param[0]) {
- case 5:
- /* operating status */
- reply.a_param[count++] = 0; /* (no malfunction ;-) */
- break;
- case 6:
- /* CPR */
- /* DECXCPR (with page=0) */
- reply.a_param[count++] = screen->cur_row + 1;
- reply.a_param[count++] = screen->cur_col + 1;
- reply.a_final = 'R';
- break;
- case 15:
- /* printer status */
- reply.a_param[count++] = 13; /* implement printer */
- break;
- case 25:
- /* UDK status */
- reply.a_param[count++] = 20; /* UDK always unlocked */
- break;
- case 26:
- /* keyboard status */
- reply.a_param[count++] = 27;
- reply.a_param[count++] = 1; /* North American */
- if (screen->terminal_id >= 400) {
- reply.a_param[count++] = 0; /* ready */
- reply.a_param[count++] = 0; /* LK201 */
- }
- break;
- case 53:
- /* Locator status */
-#if OPT_DEC_LOCATOR
- reply.a_param[count++] = 50; /* locator ready */
-#else
- reply.a_param[count++] = 53; /* no locator */
-#endif
- break;
- }
-
- if ((reply.a_nparam = count) != 0)
- unparseseq(&reply, screen->respond);
-
- sp->parsestate = sp->groundtable;
- sp->private_function = False;
- break;
-
- case CASE_MC:
- TRACE(("CASE_MC - media control\n"));
- xtermMediaControl(param[0], False);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DEC_MC:
- TRACE(("CASE_DEC_MC - DEC media control\n"));
- xtermMediaControl(param[0], True);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_HP_MEM_LOCK:
- case CASE_HP_MEM_UNLOCK:
- TRACE(("%s\n", ((sp->parsestate[c] == CASE_HP_MEM_LOCK)
- ? "CASE_HP_MEM_LOCK"
- : "CASE_HP_MEM_UNLOCK")));
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (sp->parsestate[c] == CASE_HP_MEM_LOCK)
- set_tb_margins(screen, screen->cur_row, screen->bot_marg);
- else
- set_tb_margins(screen, 0, screen->bot_marg);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSTBM:
- TRACE(("CASE_DECSTBM - set scrolling region\n"));
- if ((top = param[0]) < 1)
- top = 1;
- if (nparam < 2 || (bot = param[1]) == DEFAULT
- || bot > MaxRows(screen)
- || bot == 0)
- bot = MaxRows(screen);
- if (bot > top) {
- if (screen->scroll_amt)
- FlushScroll(screen);
- set_tb_margins(screen, top - 1, bot - 1);
- CursorSet(screen, 0, 0, term->flags);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECREQTPARM:
- TRACE(("CASE_DECREQTPARM\n"));
- if (screen->terminal_id < 200) { /* VT102 */
- if ((row = param[0]) == DEFAULT)
- row = 0;
- if (row == 0 || row == 1) {
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 7;
- reply.a_param[0] = row + 2;
- reply.a_param[1] = 1; /* no parity */
- reply.a_param[2] = 1; /* eight bits */
- reply.a_param[3] = 128; /* transmit 38.4k baud */
- reply.a_param[4] = 128; /* receive 38.4k baud */
- reply.a_param[5] = 1; /* clock multiplier ? */
- reply.a_param[6] = 0; /* STP flags ? */
- reply.a_inters = 0;
- reply.a_final = 'x';
- unparseseq(&reply, screen->respond);
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSET:
- /* DECSET */
-#if OPT_VT52_MODE
- if (screen->vtXX_level != 0)
-#endif
- dpmodes(term, bitset);
- sp->parsestate = sp->groundtable;
-#if OPT_TEK4014
- if (screen->TekEmu)
- return False;
-#endif
- break;
-
- case CASE_DECRST:
- /* DECRST */
- dpmodes(term, bitclr);
-#if OPT_VT52_MODE
- if (screen->vtXX_level == 0)
- sp->groundtable = vt52_table;
- else if (screen->terminal_id >= 100)
- sp->groundtable = ansi_table;
-#endif
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECALN:
- TRACE(("CASE_DECALN - alignment test\n"));
- if (screen->cursor_state)
- HideCursor();
- set_tb_margins(screen, 0, screen->max_row);
- CursorSet(screen, 0, 0, term->flags);
- xtermParseRect(screen, 0, 0, &myRect);
- ScrnFillRectangle(screen, &myRect, 'E', 0);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_GSETS:
- TRACE(("CASE_GSETS(%d) = '%c'\n", sp->scstype, c));
- if (screen->vtXX_level != 0)
- screen->gsets[sp->scstype] = c;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSC:
- TRACE(("CASE_DECSC - save cursor\n"));
- CursorSave(term);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECRC:
- TRACE(("CASE_DECRC - restore cursor\n"));
- CursorRestore(term);
- if_OPT_ISO_COLORS(screen, {
- setExtendedFG();
- });
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECKPAM:
- TRACE(("CASE_DECKPAM\n"));
- term->keyboard.flags |= MODE_DECKPAM;
- update_appkeypad();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECKPNM:
- TRACE(("CASE_DECKPNM\n"));
- term->keyboard.flags &= ~MODE_DECKPAM;
- update_appkeypad();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CSI_QUOTE_STATE:
- sp->parsestate = csi_quo_table;
- break;
-
-#if OPT_VT52_MODE
- case CASE_VT52_FINISH:
- TRACE(("CASE_VT52_FINISH terminal_id %d, vtXX_level %d\n",
- screen->terminal_id,
- screen->vtXX_level));
- if (screen->terminal_id >= 100
- && screen->vtXX_level == 0) {
- sp->groundtable =
- sp->parsestate = ansi_table;
- screen->vtXX_level = screen->vt52_save_level;
- screen->curgl = screen->vt52_save_curgl;
- screen->curgr = screen->vt52_save_curgr;
- screen->curss = screen->vt52_save_curss;
- memmove(screen->gsets, screen->vt52_save_gsets, sizeof(screen->gsets));
- }
- break;
-#endif
-
- case CASE_ANSI_LEVEL_1:
- TRACE(("CASE_ANSI_LEVEL_1\n"));
- set_ansi_conformance(screen, 1);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ANSI_LEVEL_2:
- TRACE(("CASE_ANSI_LEVEL_2\n"));
- set_ansi_conformance(screen, 2);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ANSI_LEVEL_3:
- TRACE(("CASE_ANSI_LEVEL_3\n"));
- set_ansi_conformance(screen, 3);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSCL:
- TRACE(("CASE_DECSCL(%d,%d)\n", param[0], param[1]));
- if (param[0] >= 61 && param[0] <= 65) {
- /*
- * VT300, VT420, VT520 manuals claim that DECSCL does a hard
- * reset (RIS). VT220 manual states that it is a soft reset.
- * Perhaps both are right (unlikely). Kermit says it's soft.
- */
- VTReset(False, False);
- screen->vtXX_level = param[0] - 60;
- if (param[0] > 61) {
- if (param[1] == 1)
- show_8bit_control(False);
- else if (param[1] == 0 || param[1] == 2)
- show_8bit_control(True);
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSCA:
- TRACE(("CASE_DECSCA\n"));
- screen->protected_mode = DEC_PROTECT;
- if (param[0] <= 0 || param[0] == 2)
- term->flags &= ~PROTECTED;
- else if (param[0] == 1)
- term->flags |= PROTECTED;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSED:
- TRACE(("CASE_DECSED\n"));
- do_erase_display(screen, param[0], DEC_PROTECT);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSEL:
- TRACE(("CASE_DECSEL\n"));
- do_erase_line(screen, param[0], DEC_PROTECT);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_ST:
- TRACE(("CASE_ST: End of String (%d bytes)\n", string_used));
- sp->parsestate = sp->groundtable;
- if (!string_used)
- break;
- string_area[--string_used] = '\0';
- switch (sp->string_mode) {
- case APC:
- /* ignored */
- break;
- case DCS:
- do_dcs(string_area, string_used);
- break;
- case OSC:
- do_osc(string_area, string_used, ST);
- break;
- case PM:
- /* ignored */
- break;
- case SOS:
- /* ignored */
- break;
- }
- break;
-
- case CASE_SOS:
- TRACE(("CASE_SOS: Start of String\n"));
- sp->string_mode = SOS;
- sp->parsestate = sos_table;
- break;
-
- case CASE_PM:
- TRACE(("CASE_PM: Privacy Message\n"));
- sp->string_mode = PM;
- sp->parsestate = sos_table;
- break;
-
- case CASE_DCS:
- TRACE(("CASE_DCS: Device Control String\n"));
- sp->string_mode = DCS;
- sp->parsestate = sos_table;
- break;
-
- case CASE_APC:
- TRACE(("CASE_APC: Application Program Command\n"));
- sp->string_mode = APC;
- sp->parsestate = sos_table;
- break;
-
- case CASE_SPA:
- TRACE(("CASE_SPA - start protected area\n"));
- screen->protected_mode = ISO_PROTECT;
- term->flags |= PROTECTED;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_EPA:
- TRACE(("CASE_EPA - end protected area\n"));
- term->flags &= ~PROTECTED;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SU:
- TRACE(("CASE_SU - scroll up\n"));
- if ((count = param[0]) < 1)
- count = 1;
- xtermScroll(screen, count);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_IND:
- TRACE(("CASE_IND - index\n"));
- xtermIndex(screen, 1);
- do_xevents();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CPL:
- TRACE(("CASE_CPL - cursor prev line\n"));
- CursorPrevLine(screen, param[0]);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CNL:
- TRACE(("CASE_NPL - cursor next line\n"));
- CursorNextLine(screen, param[0]);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_NEL:
- TRACE(("CASE_NEL\n"));
- xtermIndex(screen, 1);
- CarriageReturn(screen);
- do_xevents();
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_HTS:
- TRACE(("CASE_HTS - horizontal tab set\n"));
- TabSet(term->tabs, screen->cur_col);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_RI:
- TRACE(("CASE_RI - reverse index\n"));
- RevIndex(screen, 1);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SS2:
- TRACE(("CASE_SS2\n"));
- screen->curss = 2;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_SS3:
- TRACE(("CASE_SS3\n"));
- screen->curss = 3;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_CSI_STATE:
- /* enter csi state */
- nparam = 1;
- param[0] = DEFAULT;
- sp->parsestate = csi_table;
- break;
-
- case CASE_ESC_SP_STATE:
- /* esc space */
- sp->parsestate = esc_sp_table;
- break;
-
- case CASE_CSI_EX_STATE:
- /* csi exclamation */
- sp->parsestate = csi_ex_table;
- break;
-
-#if OPT_DEC_LOCATOR
- case CASE_CSI_TICK_STATE:
- /* csi tick (') */
- sp->parsestate = csi_tick_table;
- break;
-
- case CASE_DECEFR:
- TRACE(("CASE_DECEFR - Enable Filter Rectangle\n"));
- if (screen->send_mouse_pos == DEC_LOCATOR) {
- MotionOff(screen, term);
- if ((screen->loc_filter_top = param[0]) < 1)
- screen->loc_filter_top = LOC_FILTER_POS;
- if (nparam < 2 || (screen->loc_filter_left = param[1]) < 1)
- screen->loc_filter_left = LOC_FILTER_POS;
- if (nparam < 3 || (screen->loc_filter_bottom = param[2]) < 1)
- screen->loc_filter_bottom = LOC_FILTER_POS;
- if (nparam < 4 || (screen->loc_filter_right = param[3]) < 1)
- screen->loc_filter_right = LOC_FILTER_POS;
- InitLocatorFilter(term);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECELR:
- MotionOff(screen, term);
- if (param[0] <= 0 || param[0] > 2) {
- screen->send_mouse_pos = MOUSE_OFF;
- TRACE(("DECELR - Disable Locator Reports\n"));
- } else {
- TRACE(("DECELR - Enable Locator Reports\n"));
- screen->send_mouse_pos = DEC_LOCATOR;
- if (param[0] == 2) {
- screen->locator_reset = True;
- } else {
- screen->locator_reset = False;
- }
- if (nparam < 2 || param[1] != 1) {
- screen->locator_pixels = False;
- } else {
- screen->locator_pixels = True;
- }
- screen->loc_filter = False;
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSLE:
- TRACE(("DECSLE - Select Locator Events\n"));
- for (count = 0; count < nparam; ++count) {
- switch (param[count]) {
- case DEFAULT:
- case 0:
- MotionOff(screen, term);
- screen->loc_filter = False;
- screen->locator_events = 0;
- break;
- case 1:
- screen->locator_events |= LOC_BTNS_DN;
- break;
- case 2:
- screen->locator_events &= ~LOC_BTNS_DN;
- break;
- case 3:
- screen->locator_events |= LOC_BTNS_UP;
- break;
- case 4:
- screen->locator_events &= ~LOC_BTNS_UP;
- break;
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECRQLP:
- TRACE(("DECRQLP - Request Locator Position\n"));
- if (param[0] < 2) {
- /* Issue DECLRP Locator Position Report */
- GetLocatorPosition(term);
- }
- sp->parsestate = sp->groundtable;
- break;
-#endif /* OPT_DEC_LOCATOR */
-
-#if OPT_DEC_RECTOPS
- case CASE_CSI_DOLLAR_STATE:
- /* csi dollar ($) */
- if (screen->vtXX_level >= 4)
- sp->parsestate = csi_dollar_table;
- else
- sp->parsestate = eigtable;
- break;
-
- case CASE_CSI_STAR_STATE:
- /* csi dollar (*) */
- if (screen->vtXX_level >= 4)
- sp->parsestate = csi_star_table;
- else
- sp->parsestate = eigtable;
- break;
-
- case CASE_DECCRA:
- TRACE(("CASE_DECCRA - Copy rectangular area\n"));
- xtermParseRect(screen, nparam, param, &myRect);
- ScrnCopyRectangle(screen, &myRect, nparam - 5, param + 5);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECERA:
- TRACE(("CASE_DECERA - Erase rectangular area\n"));
- xtermParseRect(screen, nparam, param, &myRect);
- ScrnFillRectangle(screen, &myRect, ' ', 0);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECFRA:
- TRACE(("CASE_DECFRA - Fill rectangular area\n"));
- if (nparam > 0
- && ((param[0] >= 32 && param[0] <= 126)
- || (param[0] >= 160 && param[0] <= 255))) {
- xtermParseRect(screen, nparam - 1, param + 1, &myRect);
- ScrnFillRectangle(screen, &myRect, param[0], term->flags);
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSERA:
- TRACE(("CASE_DECSERA - Selective erase rectangular area\n"));
- xtermParseRect(screen, nparam > 4 ? 4 : nparam, param, &myRect);
- ScrnWipeRectangle(screen, &myRect);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSACE:
- TRACE(("CASE_DECSACE - Select attribute change extent\n"));
- screen->cur_decsace = param[0];
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECCARA:
- TRACE(("CASE_DECCARA - Change attributes in rectangular area\n"));
- xtermParseRect(screen, nparam > 4 ? 4 : nparam, param, &myRect);
- ScrnMarkRectangle(screen, &myRect, False, nparam - 4, param + 4);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECRARA:
- TRACE(("CASE_DECRARA - Reverse attributes in rectangular area\n"));
- xtermParseRect(screen, nparam > 4 ? 4 : nparam, param, &myRect);
- ScrnMarkRectangle(screen, &myRect, True, nparam - 4, param + 4);
- sp->parsestate = sp->groundtable;
- break;
-#else
- case CASE_CSI_DOLLAR_STATE:
- /* csi dollar ($) */
- sp->parsestate = eigtable;
- break;
-
- case CASE_CSI_STAR_STATE:
- /* csi dollar (*) */
- sp->parsestate = eigtable;
- break;
-#endif /* OPT_DEC_RECTOPS */
-
- case CASE_S7C1T:
- TRACE(("CASE_S7C1T\n"));
- show_8bit_control(False);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_S8C1T:
- TRACE(("CASE_S8C1T\n"));
-#if OPT_VT52_MODE
- if (screen->vtXX_level <= 1)
- break;
-#endif
- show_8bit_control(True);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_OSC:
- TRACE(("CASE_OSC: Operating System Command\n"));
- sp->parsestate = sos_table;
- sp->string_mode = OSC;
- break;
-
- case CASE_RIS:
- TRACE(("CASE_RIS\n"));
- VTReset(True, True);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_DECSTR:
- TRACE(("CASE_DECSTR\n"));
- VTReset(False, False);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_REP:
- TRACE(("CASE_REP\n"));
- if (sp->lastchar >= 0 &&
- sp->groundtable[E2A(sp->lastchar)] == CASE_PRINT) {
- IChar repeated[2];
- count = (param[0] < 1) ? 1 : param[0];
- repeated[0] = sp->lastchar;
- while (count-- > 0) {
- dotext(screen,
- screen->gsets[(int) (screen->curgl)],
- repeated, 1);
- }
- }
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS2:
- TRACE(("CASE_LS2\n"));
- screen->curgl = 2;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS3:
- TRACE(("CASE_LS3\n"));
- screen->curgl = 3;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS3R:
- TRACE(("CASE_LS3R\n"));
- screen->curgr = 3;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS2R:
- TRACE(("CASE_LS2R\n"));
- screen->curgr = 2;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_LS1R:
- TRACE(("CASE_LS1R\n"));
- screen->curgr = 1;
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_XTERM_SAVE:
- savemodes(term);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_XTERM_RESTORE:
- restoremodes(term);
- sp->parsestate = sp->groundtable;
- break;
-
- case CASE_XTERM_WINOPS:
- TRACE(("CASE_XTERM_WINOPS\n"));
- if (screen->allowWindowOps)
- window_ops(term);
- sp->parsestate = sp->groundtable;
- break;
-#if OPT_WIDE_CHARS
- case CASE_ESC_PERCENT:
- sp->parsestate = esc_pct_table;
- break;
-
- case CASE_UTF8:
- /* If we did not set UTF-8 mode from resource or the
- * command-line, allow it to be enabled/disabled by
- * control sequence.
- */
- if (!screen->wide_chars) {
- WriteNow();
- ChangeToWide(screen);
- }
- if (screen->wide_chars
- && screen->utf8_mode != uAlways) {
- switchPtyData(screen, c == 'G');
- TRACE(("UTF8 mode %s\n",
- BtoS(screen->utf8_mode)));
- } else {
- TRACE(("UTF8 mode NOT turned %s (%s)\n",
- BtoS(c == 'G'),
- (screen->utf8_mode == uAlways)
- ? "UTF-8 mode set from command-line"
- : "wideChars resource was not set"));
- }
- sp->parsestate = sp->groundtable;
- break;
-#endif
-
- case CASE_CSI_IGNORE:
- sp->parsestate = cigtable;
- break;
- }
- if (sp->parsestate == sp->groundtable)
- sp->lastchar = thischar;
- } while (0);
-
-#if OPT_WIDE_CHARS
- screen->utf8_inparse = (screen->utf8_mode != uFalse
- && sp->parsestate != sos_table);
-#endif
-
- return True;
-}
-
-static void
-VTparse(void)
-{
- TScreen *screen;
-
- /* We longjmp back to this point in VTReset() */
- (void) setjmp(vtjmpbuf);
- screen = &term->screen;
- memset(&myState, 0, sizeof(myState));
-#if OPT_VT52_MODE
- myState.groundtable = screen->vtXX_level ? ansi_table : vt52_table;
-#else
- myState.groundtable = ansi_table;
-#endif
- myState.parsestate = myState.groundtable;
- myState.lastchar = -1; /* not a legal IChar */
- myState.nextstate = -1; /* not a legal state */
-
- for (;;) {
- if (!doparsing(doinput(), &myState))
- return;
- }
-}
-
-static Char *v_buffer; /* pointer to physical buffer */
-static Char *v_bufstr = NULL; /* beginning of area to write */
-static Char *v_bufptr; /* end of area to write */
-static Char *v_bufend; /* end of physical buffer */
-
-/* Write data to the pty as typed by the user, pasted with the mouse,
- or generated by us in response to a query ESC sequence. */
-
-int
-v_write(int f, Char * data, unsigned len)
-{
- int riten;
- unsigned c = len;
-
- if (v_bufstr == NULL && len > 0) {
- v_buffer = (Char *) XtMalloc(len);
- v_bufstr = v_buffer;
- v_bufptr = v_buffer;
- v_bufend = v_buffer + len;
- }
-#ifdef DEBUG
- if (debug) {
- fprintf(stderr, "v_write called with %d bytes (%d left over)",
- len, v_bufptr - v_bufstr);
- if (len > 1 && len < 10)
- fprintf(stderr, " \"%.*s\"", len, (char *) data);
- fprintf(stderr, "\n");
- }
-#endif
-
-#ifdef VMS
- if ((1 << f) != pty_mask)
- return (tt_write((char *) data, len));
-#else /* VMS */
- if (!FD_ISSET(f, &pty_mask))
- return (write(f, (char *) data, len));
-#endif /* VMS */
-
- /*
- * Append to the block we already have.
- * Always doing this simplifies the code, and
- * isn't too bad, either. If this is a short
- * block, it isn't too expensive, and if this is
- * a long block, we won't be able to write it all
- * anyway.
- */
-
- if (len > 0) {
-#if OPT_DABBREV
- term->screen.dabbrev_working = 0; /* break dabbrev sequence */
-#endif
- if (v_bufend < v_bufptr + len) { /* we've run out of room */
- if (v_bufstr != v_buffer) {
- /* there is unused space, move everything down */
- /* possibly overlapping memmove here */
-#ifdef DEBUG
- if (debug)
- fprintf(stderr, "moving data down %d\n",
- v_bufstr - v_buffer);
-#endif
- memmove(v_buffer, v_bufstr, (unsigned) (v_bufptr - v_bufstr));
- v_bufptr -= v_bufstr - v_buffer;
- v_bufstr = v_buffer;
- }
- if (v_bufend < v_bufptr + len) {
- /* still won't fit: get more space */
- /* Don't use XtRealloc because an error is not fatal. */
- int size = v_bufptr - v_buffer; /* save across realloc */
- v_buffer = TypeRealloc(Char, size + len, v_buffer);
- if (v_buffer) {
-#ifdef DEBUG
- if (debug)
- fprintf(stderr, "expanded buffer to %d\n",
- size + len);
-#endif
- v_bufstr = v_buffer;
- v_bufptr = v_buffer + size;
- v_bufend = v_bufptr + len;
- } else {
- /* no memory: ignore entire write request */
- fprintf(stderr, "%s: cannot allocate buffer space\n",
- xterm_name);
- v_buffer = v_bufstr; /* restore clobbered pointer */
- c = 0;
- }
- }
- }
- if (v_bufend >= v_bufptr + len) {
- /* new stuff will fit */
- memmove(v_bufptr, data, len);
- v_bufptr += len;
- }
- }
-
- /*
- * Write out as much of the buffer as we can.
- * Be careful not to overflow the pty's input silo.
- * We are conservative here and only write
- * a small amount at a time.
- *
- * If we can't push all the data into the pty yet, we expect write
- * to return a non-negative number less than the length requested
- * (if some data written) or -1 and set errno to EAGAIN,
- * EWOULDBLOCK, or EINTR (if no data written).
- *
- * (Not all systems do this, sigh, so the code is actually
- * a little more forgiving.)
- */
-
-#define MAX_PTY_WRITE 128 /* 1/2 POSIX minimum MAX_INPUT */
-
- if (v_bufptr > v_bufstr) {
-#ifdef VMS
- riten = tt_write(v_bufstr,
- ((v_bufptr - v_bufstr <= VMS_TERM_BUFFER_SIZE)
- ? v_bufptr - v_bufstr
- : VMS_TERM_BUFFER_SIZE));
- if (riten == 0)
- return (riten);
-#else /* VMS */
- riten = write(f, v_bufstr,
- (size_t) ((v_bufptr - v_bufstr <= MAX_PTY_WRITE)
- ? v_bufptr - v_bufstr
- : MAX_PTY_WRITE));
- if (riten < 0)
-#endif /* VMS */
- {
-#ifdef DEBUG
- if (debug)
- perror("write");
-#endif
- riten = 0;
- }
-#ifdef DEBUG
- if (debug)
- fprintf(stderr, "write called with %d, wrote %d\n",
- v_bufptr - v_bufstr <= MAX_PTY_WRITE ?
- v_bufptr - v_bufstr : MAX_PTY_WRITE,
- riten);
-#endif
- v_bufstr += riten;
- if (v_bufstr >= v_bufptr) /* we wrote it all */
- v_bufstr = v_bufptr = v_buffer;
- }
-
- /*
- * If we have lots of unused memory allocated, return it
- */
- if (v_bufend - v_bufptr > 1024) { /* arbitrary hysteresis */
- /* save pointers across realloc */
- int start = v_bufstr - v_buffer;
- int size = v_bufptr - v_buffer;
- unsigned allocsize = (unsigned) (size ? size : 1);
-
- v_buffer = TypeRealloc(Char, allocsize, v_buffer);
- if (v_buffer) {
- v_bufstr = v_buffer + start;
- v_bufptr = v_buffer + size;
- v_bufend = v_buffer + allocsize;
-#ifdef DEBUG
- if (debug)
- fprintf(stderr, "shrunk buffer to %d\n", allocsize);
-#endif
- } else {
- /* should we print a warning if couldn't return memory? */
- v_buffer = v_bufstr - start; /* restore clobbered pointer */
- }
- }
- return (c);
-}
-
-#ifdef VMS
-#define ptymask() (v_bufptr > v_bufstr ? pty_mask : 0)
-
-static void
-in_put(void)
-{
- static PtySelect select_mask;
- static PtySelect write_mask;
- int update = VTbuffer->update;
- int size;
-
- int status;
- Dimension replyWidth, replyHeight;
- XtGeometryResult stat;
-
- TScreen *screen = &term->screen;
- char *cp;
- int i;
-
- select_mask = pty_mask; /* force initial read */
- for (;;) {
-
- /* if the terminal changed size, resize the widget */
- if (tt_changed) {
- tt_changed = False;
-
- stat = XtMakeResizeRequest((Widget) term,
- ((Dimension) FontWidth(screen)
- * (tt_width)
- + 2 * screen->border
- + screen->fullVwin.sb_info.width),
- ((Dimension) FontHeight(screen)
- * (tt_length)
- + 2 * screen->border),
- &replyWidth, &replyHeight);
-
- if (stat == XtGeometryYes || stat == XtGeometryDone) {
- term->core.width = replyWidth;
- term->core.height = replyHeight;
-
- ScreenResize(&term->screen, replyWidth, replyHeight,
- &term->flags);
- }
- repairSizeHints();
- }
-
- if (eventMode == NORMAL
- && readPtyData(screen, &select_mask, VTbuffer)) {
- if (screen->scrollWidget
- && screen->scrollttyoutput
- && screen->topline < 0)
- /* Scroll to bottom */
- WindowScroll(screen, 0);
- break;
- }
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (screen->cursor_set && CursorMoved(screen)) {
- if (screen->cursor_state)
- HideCursor();
- ShowCursor();
-#if OPT_INPUT_METHOD
- PreeditPosition(screen);
-#endif
- } else if (screen->cursor_set != screen->cursor_state) {
- if (screen->cursor_set)
- ShowCursor();
- else
- HideCursor();
- }
-
- if (QLength(screen->display)) {
- select_mask = X_mask;
- } else {
- write_mask = ptymask();
- XFlush(screen->display);
- select_mask = Select_mask;
- if (eventMode != NORMAL)
- select_mask = X_mask;
- }
- if (write_mask & ptymask()) {
- v_write(screen->respond, 0, 0); /* flush buffer */
- }
-
- if (select_mask & X_mask) {
- xevents();
- if (VTbuffer->update != update)
- break;
- }
- }
-}
-#else /* VMS */
-
-static void
-in_put(void)
-{
- static PtySelect select_mask;
- static PtySelect write_mask;
-
- TScreen *screen = &term->screen;
- int i, time_select;
- int size;
- int update = VTbuffer->update;
-
- static struct timeval select_timeout;
-
-#if OPT_BLINK_CURS
- /*
- * Compute the timeout for the blinking cursor to be much smaller than
- * the "on" or "off" interval.
- */
- int tick = ((screen->blink_on < screen->blink_off)
- ? screen->blink_on
- : screen->blink_off);
- tick *= (1000 / 8); /* 1000 for msec/usec, 8 for "much" smaller */
- if (tick < 1)
- tick = 1;
-#endif
-
- for (;;) {
- if (eventMode == NORMAL
- && (size = readPtyData(screen, &select_mask, VTbuffer)) != 0) {
- if (screen->scrollWidget
- && screen->scrollttyoutput
- && screen->topline < 0)
- WindowScroll(screen, 0); /* Scroll to bottom */
- /* stop speed reading at some point to look for X stuff */
- TRACE(("VTbuffer uses %d/%d\n",
- VTbuffer->last - VTbuffer->buffer,
- BUF_SIZE));
- if ((VTbuffer->last - VTbuffer->buffer) > BUF_SIZE) {
- FD_CLR(screen->respond, &select_mask);
- break;
- }
-#if defined(HAVE_SCHED_YIELD)
- /*
- * If we've read a full (small/fragment) buffer, let the operating
- * system have a turn, and we'll resume reading until we've either
- * read only a fragment of the buffer, or we've filled the large
- * buffer (see above). Doing this helps keep up with large bursts
- * of output.
- */
- if (size == FRG_SIZE) {
- select_timeout.tv_sec = 0;
- i = Select(max_plus1, &select_mask, &write_mask, 0,
- &select_timeout);
- if (i > 0) {
- sched_yield();
- } else
- break;
- } else {
- break;
- }
-#else
- (void) size; /* unused in this branch */
- break;
-#endif
- }
- /* update the screen */
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (screen->cursor_set && CursorMoved(screen)) {
- if (screen->cursor_state)
- HideCursor();
- ShowCursor();
-#if OPT_INPUT_METHOD
- PreeditPosition(screen);
-#endif
- } else if (screen->cursor_set != screen->cursor_state) {
- if (screen->cursor_set)
- ShowCursor();
- else
- HideCursor();
- }
-
- XFlush(screen->display); /* always flush writes before waiting */
-
- /* Update the masks and, unless X events are already in the queue,
- wait for I/O to be possible. */
- XFD_COPYSET(&Select_mask, &select_mask);
- /* in selection mode xterm does not read pty */
- if (eventMode != NORMAL)
- FD_CLR(screen->respond, &select_mask);
-
- if (v_bufptr > v_bufstr) {
- XFD_COPYSET(&pty_mask, &write_mask);
- } else
- FD_ZERO(&write_mask);
- select_timeout.tv_sec = 0;
- time_select = 0;
-
- /*
- * if there's either an XEvent or an XtTimeout pending, just take
- * a quick peek, i.e. timeout from the select() immediately. If
- * there's nothing pending, let select() block a little while, but
- * for a shorter interval than the arrow-style scrollbar timeout.
- * The blocking is optional, because it tends to increase the load
- * on the host.
- */
- if (XtAppPending(app_con)) {
- select_timeout.tv_usec = 0;
- time_select = 1;
- } else if (screen->awaitInput) {
- select_timeout.tv_usec = 50000;
- time_select = 1;
-#if OPT_BLINK_CURS
- } else if ((screen->blink_timer != 0 &&
- ((screen->select & FOCUS) || screen->always_highlight)) ||
- (screen->cursor_state == BLINKED_OFF)) {
- select_timeout.tv_usec = tick;
- while (select_timeout.tv_usec > 1000000) {
- select_timeout.tv_usec -= 1000000;
- select_timeout.tv_sec++;
- }
- time_select = 1;
-#endif
-#if OPT_SESSION_MGT
- } else if (resource.sessionMgt) {
- /*
- * When session management is enabled, we should not block since
- * session related events can arrive any time.
- */
- select_timeout.tv_sec = 1;
- select_timeout.tv_usec = 0;
- time_select = 1;
-#endif
- }
- if (need_cleanup)
- Cleanup(0);
- i = Select(max_plus1, &select_mask, &write_mask, 0,
- (time_select ? &select_timeout : 0));
- if (i < 0) {
- if (errno != EINTR)
- SysError(ERROR_SELECT);
- continue;
- }
-
- /* if there is room to write more data to the pty, go write more */
- if (FD_ISSET(screen->respond, &write_mask)) {
- v_write(screen->respond, (Char *) 0, 0); /* flush buffer */
- }
-
- /* if there are X events already in our queue, it
- counts as being readable */
- if (XtAppPending(app_con) ||
- FD_ISSET(ConnectionNumber(screen->display), &select_mask)) {
- xevents();
- if (VTbuffer->update != update) /* HandleInterpret */
- break;
- }
-
- }
-}
-#endif /* VMS */
-
-static IChar
-doinput(void)
-{
- TScreen *screen = &term->screen;
-
- while (!morePtyData(screen, VTbuffer))
- in_put();
- return nextPtyData(screen, VTbuffer);
-}
-
-#if OPT_INPUT_METHOD
-/*
- * For OverTheSpot, client has to inform the position for XIM preedit.
- */
-static void
-PreeditPosition(TScreen * screen)
-{
- XPoint spot;
- XVaNestedList list;
-
- if (!screen->xic)
- return;
- spot.x = CurCursorX(screen, screen->cur_row, screen->cur_col);
- spot.y = CursorY(screen, screen->cur_row) + screen->fs_ascent;
- list = XVaCreateNestedList(0,
- XNSpotLocation, &spot,
- XNForeground, T_COLOR(screen, TEXT_FG),
- XNBackground, T_COLOR(screen, TEXT_BG),
- NULL);
- XSetICValues(screen->xic, XNPreeditAttributes, list, NULL);
- XFree(list);
-}
-#endif
-
-/*
- * process a string of characters according to the character set indicated
- * by charset. worry about end of line conditions (wraparound if selected).
- */
-void
-dotext(TScreen * screen,
- int charset,
- IChar * buf, /* start of characters to process */
- Cardinal len) /* end */
-{
-#if OPT_WIDE_CHARS
- Cardinal chars_chomped = 1;
-#else
- int next_col, last_col, this_col; /* must be signed */
-#endif
- Cardinal offset;
-
-#if OPT_WIDE_CHARS
- /* don't translate if we use UTF-8, and are not handling legacy support
- * for line-drawing characters.
- */
- if ((screen->utf8_mode == uFalse)
- || (screen->vt100_graphics && charset == '0'))
-#endif
-
- if (!xtermCharSetOut(buf, buf + len, charset))
- return;
-
- if_OPT_XMC_GLITCH(screen, {
- Cardinal n;
- if (charset != '?') {
- for (n = 0; n < len; n++) {
- if (buf[n] == XMC_GLITCH)
- buf[n] = XMC_GLITCH + 1;
- }
- }
- });
-
-#if OPT_WIDE_CHARS
- for (offset = 0;
- offset < len && (chars_chomped > 0 || screen->do_wrap);
- offset += chars_chomped) {
- int width_available = MaxCols(screen) - screen->cur_col;
- int width_here = 0;
- int need_wrap = 0;
- chars_chomped = 0;
-
- if (screen->do_wrap && (term->flags & WRAPAROUND)) {
- /* mark that we had to wrap this line */
- ScrnSetWrapped(screen, screen->cur_row);
- xtermAutoPrint('\n');
- xtermIndex(screen, 1);
- set_cur_col(screen, 0);
- screen->do_wrap = 0;
- width_available = MaxCols(screen) - screen->cur_col;
- }
-
- while (width_here <= width_available && chars_chomped < (len - offset)) {
- if (!screen->utf8_mode
- || (screen->vt100_graphics && charset == '0'))
- width_here++;
- else
- width_here += my_wcwidth((int) buf[chars_chomped + offset]);
- chars_chomped++;
- }
-
- if (width_here > width_available) {
- chars_chomped--;
- if (!screen->utf8_mode
- || (screen->vt100_graphics && charset == '0'))
- width_here--;
- else
- width_here -= my_wcwidth((int) buf[chars_chomped + offset]);
- need_wrap = 1;
- } else if (width_here == width_available) {
- need_wrap = 1;
- } else if (chars_chomped != (len - offset)) {
- need_wrap = 1;
- }
-
- /*
- * Split the wide characters back into separate arrays of 8-bit
- * characters so we can use the existing interface.
- *
- * FIXME: If we rewrote this interface, it would involve
- * rewriting all of the memory-management for the screen
- * buffers (perhaps this is simpler).
- */
- if (chars_chomped != 0) {
- static unsigned limit;
- static Char *hibyte, *lobyte;
- Bool both = False;
- unsigned j, k;
-
- if (chars_chomped >= limit) {
- limit = (chars_chomped + 1) * 2;
- lobyte = (Char *) XtRealloc((char *) lobyte, limit);
- hibyte = (Char *) XtRealloc((char *) hibyte, limit);
- }
- for (j = offset; j < offset + chars_chomped; j++) {
- k = j - offset;
- lobyte[k] = buf[j];
- if (buf[j] > 255) {
- hibyte[k] = (buf[j] >> 8);
- both = True;
- } else {
- hibyte[k] = 0;
- }
- }
-
- WriteText(screen, PAIRED_CHARS(lobyte,
- (both ? hibyte : 0)),
- chars_chomped);
- }
- screen->do_wrap = need_wrap;
- }
-#else
-
- for (offset = 0; offset < len; offset += this_col) {
- last_col = CurMaxCol(screen, screen->cur_row);
- this_col = last_col - screen->cur_col + 1;
- if (this_col <= 1) {
- if (screen->do_wrap && (term->flags & WRAPAROUND)) {
- /* mark that we had to wrap this line */
- ScrnSetWrapped(screen, screen->cur_row);
- xtermAutoPrint('\n');
- xtermIndex(screen, 1);
- set_cur_col(screen, 0);
- screen->do_wrap = 0;
- this_col = last_col + 1;
- } else
- this_col = 1;
- }
- if (offset + this_col > len) {
- this_col = len - offset;
- }
- next_col = screen->cur_col + this_col;
-
- WriteText(screen, PAIRED_CHARS(buf + offset,
- buf2 ? buf2 + offset : 0),
- this_col);
-
- /*
- * the call to WriteText updates screen->cur_col.
- * If screen->cur_col != next_col, we must have
- * hit the right margin, so set the do_wrap flag.
- */
- screen->do_wrap = (screen->cur_col < (int) next_col);
- }
-
-#endif
-}
-
-#if HANDLE_STRUCT_NOTIFY
-/* Flag icon name with "*** " on window output when iconified.
- * I'd like to do something like reverse video, but I don't
- * know how to tell this to window managers in general.
- *
- * mapstate can be IsUnmapped, !IsUnmapped, or -1;
- * -1 means no change; the other two are set by event handlers
- * and indicate a new mapstate. !IsMapped is done in the handler.
- * we worry about IsUnmapped when output occurs. -IAN!
- */
-static int mapstate = -1;
-#endif /* HANDLE_STRUCT_NOTIFY */
-
-#if OPT_WIDE_CHARS
-unsigned
-visual_width(PAIRED_CHARS(Char * str, Char * str2), Cardinal len)
-{
- /* returns the visual width of a string (doublewide characters count
- as 2, normalwide characters count as 1) */
- int my_len = 0;
- while (len) {
- int ch = *str;
- if (str2)
- ch |= *str2 << 8;
- if (str)
- str++;
- if (str2)
- str2++;
- if (iswide(ch))
- my_len += 2;
- else
- my_len++;
- len--;
- }
- return my_len;
-}
-#endif
-
-/*
- * write a string str of length len onto the screen at
- * the current cursor position. update cursor position.
- */
-static void
-WriteText(TScreen * screen, PAIRED_CHARS(Char * str, Char * str2), Cardinal len)
-{
- ScrnPtr PAIRED_CHARS(temp_str = 0, temp_str2 = 0);
- unsigned test;
- unsigned flags = term->flags;
- unsigned fg_bg = makeColorPair(term->cur_foreground, term->cur_background);
- unsigned cells = visual_width(PAIRED_CHARS(str, str2), len);
- GC currentGC;
-
- TRACE(("WriteText (%2d,%2d) (%d) %3d:%s\n",
- screen->cur_row,
- screen->cur_col,
- curXtermChrSet(screen->cur_row),
- len, visibleChars(PAIRED_CHARS(str, str2), len)));
-
- if (ScrnHaveSelection(screen)
- && ScrnIsLineInSelection(screen, screen->cur_row - screen->topline)) {
- ScrnDisownSelection(screen);
- }
-
- if (screen->cur_row - screen->topline <= screen->max_row) {
- if (screen->cursor_state)
- HideCursor();
-
- if (flags & INSERT) {
- InsertChar(screen, cells);
- }
- if (!AddToRefresh(screen)) {
-
- if (screen->scroll_amt)
- FlushScroll(screen);
-
- if (flags & INVISIBLE) {
- if (cells > len) {
- str = temp_str = TypeMallocN(Char, cells);
- if (str == 0)
- return;
- }
- if_OPT_WIDE_CHARS(screen, {
- if (cells > len) {
- str2 = temp_str2 = TypeMallocN(Char, cells);
- }
- });
- len = cells;
-
- memset(str, ' ', len);
- if_OPT_WIDE_CHARS(screen, {
- if (str2 != 0)
- memset(str2, 0, len);
- });
- }
-
- TRACE(("WriteText calling drawXtermText (%d,%d)\n",
- screen->cur_col,
- screen->cur_row));
-
- test = flags;
- checkVeryBoldColors(test, term->cur_foreground);
-
- /* make sure that the correct GC is current */
- currentGC = updatedXtermGC(screen, flags, fg_bg, False);
-
- drawXtermText(screen, test & DRAWX_MASK, currentGC,
- CurCursorX(screen, screen->cur_row, screen->cur_col),
- CursorY(screen, screen->cur_row),
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(str, str2), len, 0);
-
- resetXtermGC(screen, flags, False);
- }
- }
-
- ScreenWrite(screen, PAIRED_CHARS(str, str2), flags, fg_bg, len);
- CursorForward(screen, (int) cells);
-#if OPT_ZICONBEEP
- /* Flag icon name with "***" on window output when iconified.
- */
- if (zIconBeep && mapstate == IsUnmapped && !zIconBeep_flagged) {
- static char *icon_name;
- static Arg args[] =
- {
- {XtNiconName, (XtArgVal) & icon_name}
- };
-
- icon_name = NULL;
- XtGetValues(toplevel, args, XtNumber(args));
-
- if (icon_name != NULL) {
- zIconBeep_flagged = True;
- Changename(icon_name);
- }
- if (zIconBeep > 0) {
-#if defined(HAVE_XKBBELL)
- XkbBell(XtDisplay(toplevel), VShellWindow, zIconBeep, XkbBI_Info);
-#else
- XBell(XtDisplay(toplevel), zIconBeep);
-#endif
- }
- }
- mapstate = -1;
-#endif /* OPT_ZICONBEEP */
- if (temp_str != 0)
- free(temp_str);
- if_OPT_WIDE_CHARS(screen, {
- if (temp_str2 != 0)
- free(temp_str2);
- });
- return;
-}
-
-#if HANDLE_STRUCT_NOTIFY
-/* Flag icon name with "***" on window output when iconified.
- */
-static void
-HandleStructNotify(Widget w GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XEvent * event,
- Boolean * cont GCC_UNUSED)
-{
- static char *icon_name;
- static Arg args[] =
- {
- {XtNiconName, (XtArgVal) & icon_name}
- };
-
- switch (event->type) {
- case MapNotify:
- TRACE(("HandleStructNotify(MapNotify)\n"));
-#if OPT_ZICONBEEP
- if (zIconBeep_flagged) {
- zIconBeep_flagged = False;
- icon_name = NULL;
- XtGetValues(toplevel, args, XtNumber(args));
- if (icon_name != NULL) {
- char *buf = CastMallocN(char, strlen(icon_name));
- if (buf == NULL) {
- zIconBeep_flagged = True;
- return;
- }
- strcpy(buf, icon_name + 4);
- Changename(buf);
- free(buf);
- }
- }
-#endif /* OPT_ZICONBEEP */
- mapstate = !IsUnmapped;
- break;
- case UnmapNotify:
- TRACE(("HandleStructNotify(UnmapNotify)\n"));
- mapstate = IsUnmapped;
- break;
- case ConfigureNotify:
- TRACE(("HandleStructNotify(ConfigureNotify)\n"));
-#if OPT_TOOLBAR
- /* the notify is for the top-level widget, but we care about vt100 */
- if (term->screen.Vshow) {
- TScreen *screen = &term->screen;
- struct _vtwin *Vwin = WhichVWin(&(term->screen));
- TbInfo *info = &(Vwin->tb_info);
- TbInfo save = *info;
-
- if (info->menu_bar) {
- XtVaGetValues(info->menu_bar,
- XtNheight, &info->menu_height,
- XtNborderWidth, &info->menu_border,
- (XtPointer) 0);
-
- if (save.menu_height != info->menu_height
- || save.menu_border != info->menu_border) {
-
- TRACE(("...menu_height %d\n", info->menu_height));
- TRACE(("...menu_border %d\n", info->menu_border));
- TRACE(("...had height %d, border %d\n",
- save.menu_height,
- save.menu_border));
-
- /*
- * FIXME: Window manager still may be using the old values.
- * Try to fool it.
- */
- XtMakeResizeRequest((Widget) term,
- screen->fullVwin.fullwidth,
- info->menu_height
- - save.menu_height
- + screen->fullVwin.fullheight,
- NULL, NULL);
- repairSizeHints();
- }
- }
- }
-#endif /* OPT_TOOLBAR */
- break;
- default:
- TRACE(("HandleStructNotify(event %d)\n", event->type));
- break;
- }
-}
-#endif /* HANDLE_STRUCT_NOTIFY */
-
-#if OPT_BLINK_CURS
-static void
-SetCursorBlink(TScreen * screen, int enable)
-{
- screen->cursor_blink = enable;
- if (DoStartBlinking(screen)) {
- StartBlinking(screen);
- } else {
-#if !OPT_BLINK_TEXT
- StopBlinking(screen);
-#endif
- }
- update_cursorblink();
-}
-
-void
-ToggleCursorBlink(TScreen * screen)
-{
- SetCursorBlink(screen, !(screen->cursor_blink));
-}
-#endif
-
-/*
- * process ANSI modes set, reset
- */
-static void
-ansi_modes(XtermWidget termw,
- void (*func) (unsigned *p, unsigned mask))
-{
- int i;
-
- for (i = 0; i < nparam; ++i) {
- switch (param[i]) {
- case 2: /* KAM (if set, keyboard locked */
- (*func) (&termw->keyboard.flags, MODE_KAM);
- break;
-
- case 4: /* IRM */
- (*func) (&termw->flags, INSERT);
- break;
-
- case 12: /* SRM (if set, local echo */
- (*func) (&termw->keyboard.flags, MODE_SRM);
- break;
-
- case 20: /* LNM */
- (*func) (&termw->flags, LINEFEED);
- update_autolinefeed();
- break;
- }
- }
-}
-
-#define set_mousemode(mode) \
- screen->send_mouse_pos = (func == bitset) ? mode : MOUSE_OFF
-#define set_mouseflag(f) \
- ((func == bitset) \
- ? SCREEN_FLAG_set(screen, f) \
- : SCREEN_FLAG_unset(screen, f))
-
-/*
- * process DEC private modes set, reset
- */
-static void
-dpmodes(XtermWidget termw,
- void (*func) (unsigned *p, unsigned mask))
-{
- TScreen *screen = &termw->screen;
- int i, j;
-
- for (i = 0; i < nparam; ++i) {
- TRACE(("%s %d\n", (func == bitset) ? "DECSET" : "DECRST", param[i]));
- switch (param[i]) {
- case 1: /* DECCKM */
- (*func) (&termw->keyboard.flags, MODE_DECCKM);
- update_appcursor();
- break;
- case 2: /* DECANM - ANSI/VT52 mode */
- if (func == bitset) { /* ANSI (VT100) */
- /*
- * Setting DECANM should have no effect, since this function
- * cannot be reached from vt52 mode.
- */
- ;
- }
-#if OPT_VT52_MODE
- else if (screen->terminal_id >= 100) { /* VT52 */
- TRACE(("DECANM terminal_id %d, vtXX_level %d\n",
- screen->terminal_id,
- screen->vtXX_level));
- screen->vt52_save_level = screen->vtXX_level;
- screen->vtXX_level = 0;
- screen->vt52_save_curgl = screen->curgl;
- screen->vt52_save_curgr = screen->curgr;
- screen->vt52_save_curss = screen->curss;
- memmove(screen->vt52_save_gsets, screen->gsets, sizeof(screen->gsets));
- resetCharsets(screen);
- nparam = 0; /* ignore the remaining params, if any */
- }
-#endif
- break;
- case 3: /* DECCOLM */
- if (screen->c132) {
- ClearScreen(screen);
- CursorSet(screen, 0, 0, termw->flags);
- if ((j = func == bitset ? 132 : 80) !=
- ((termw->flags & IN132COLUMNS) ? 132 : 80) ||
- j != MaxCols(screen))
- RequestResize(termw, -1, j, True);
- (*func) (&termw->flags, IN132COLUMNS);
- }
- break;
- case 4: /* DECSCLM (slow scroll) */
- if (func == bitset) {
- screen->jumpscroll = 0;
- if (screen->scroll_amt)
- FlushScroll(screen);
- } else
- screen->jumpscroll = 1;
- (*func) (&termw->flags, SMOOTHSCROLL);
- update_jumpscroll();
- break;
- case 5: /* DECSCNM */
- j = termw->flags;
- (*func) (&termw->flags, REVERSE_VIDEO);
- if ((termw->flags ^ j) & REVERSE_VIDEO)
- ReverseVideo(termw);
- /* update_reversevideo done in RevVid */
- break;
-
- case 6: /* DECOM */
- (*func) (&termw->flags, ORIGIN);
- CursorSet(screen, 0, 0, termw->flags);
- break;
-
- case 7: /* DECAWM */
- (*func) (&termw->flags, WRAPAROUND);
- update_autowrap();
- break;
- case 8: /* DECARM */
- /* ignore autorepeat
- * XAutoRepeatOn() and XAutoRepeatOff() can do this, but only
- * for the whole display - not limited to a given window.
- */
- break;
- case SET_X10_MOUSE: /* MIT bogus sequence */
- MotionOff(screen, termw);
- set_mousemode(X10_MOUSE);
- break;
-#if OPT_TOOLBAR
- case 10: /* rxvt */
- ShowToolbar(func == bitset);
- break;
-#endif
-#if OPT_BLINK_CURS
- case 12: /* att610: Start/stop blinking cursor */
- if (screen->cursor_blink_res) {
- screen->cursor_blink_esc = (func == bitset) ? ON : OFF;
- SetCursorBlink(screen, screen->cursor_blink);
- }
- break;
-#endif
- case 18: /* DECPFF: print form feed */
- screen->printer_formfeed = (func == bitset) ? ON : OFF;
- break;
- case 19: /* DECPEX: print extent */
- screen->printer_extent = (func == bitset) ? ON : OFF;
- break;
- case 25: /* DECTCEM: Show/hide cursor (VT200) */
- screen->cursor_set = (func == bitset) ? ON : OFF;
- break;
- case 30: /* rxvt */
- if (screen->fullVwin.sb_info.width != ((func == bitset) ? ON : OFF))
- ToggleScrollBar(termw);
- break;
-#if OPT_SHIFT_FONTS
- case 35: /* rxvt */
- term->misc.shift_fonts = (func == bitset) ? ON : OFF;
- break;
-#endif
- case 38: /* DECTEK */
-#if OPT_TEK4014
- if (func == bitset && !(screen->inhibit & I_TEK)) {
- FlushLog(screen);
- screen->TekEmu = True;
- }
-#endif
- break;
- case 40: /* 132 column mode */
- screen->c132 = (func == bitset);
- update_allow132();
- break;
- case 41: /* curses hack */
- screen->curses = (func == bitset);
- update_cursesemul();
- break;
- case 42: /* DECNRCM national charset (VT220) */
- (*func) (&termw->flags, NATIONAL);
- break;
- case 44: /* margin bell */
- screen->marginbell = (func == bitset);
- if (!screen->marginbell)
- screen->bellarmed = -1;
- update_marginbell();
- break;
- case 45: /* reverse wraparound */
- (*func) (&termw->flags, REVERSEWRAP);
- update_reversewrap();
- break;
-#ifdef ALLOWLOGGING
- case 46: /* logging */
-#ifdef ALLOWLOGFILEONOFF
- /*
- * if this feature is enabled, logging may be
- * enabled and disabled via escape sequences.
- */
- if (func == bitset)
- StartLog(screen);
- else
- CloseLog(screen);
-#else
- Bell(XkbBI_Info, 0);
- Bell(XkbBI_Info, 0);
-#endif /* ALLOWLOGFILEONOFF */
- break;
-#endif
- case 1049: /* alternate buffer & cursor */
- if (!termw->misc.titeInhibit) {
- if (func == bitset) {
- CursorSave(termw);
- ToAlternate(screen);
- ClearScreen(screen);
- } else {
- FromAlternate(screen);
- CursorRestore(termw);
- }
- } else if (termw->misc.tiXtraScroll) {
- if (func == bitset) {
- xtermScroll(screen, screen->max_row);
- }
- }
- break;
- case 1047:
- case 47: /* alternate buffer */
- if (!termw->misc.titeInhibit) {
- if (func == bitset) {
- ToAlternate(screen);
- } else {
- if (screen->alternate
- && (param[i] == 1047))
- ClearScreen(screen);
- FromAlternate(screen);
- }
- } else if (termw->misc.tiXtraScroll) {
- if (func == bitset) {
- xtermScroll(screen, screen->max_row);
- }
- }
- break;
- case 66: /* DECNKM */
- (*func) (&termw->keyboard.flags, MODE_DECKPAM);
- update_appkeypad();
- break;
- case 67: /* DECBKM */
- /* back-arrow mapped to backspace or delete(D) */
- (*func) (&termw->keyboard.flags, MODE_DECBKM);
- TRACE(("DECSET DECBKM %s\n",
- BtoS(termw->keyboard.flags & MODE_DECBKM)));
- update_decbkm();
- break;
- case SET_VT200_MOUSE: /* xterm bogus sequence */
- MotionOff(screen, termw);
- set_mousemode(VT200_MOUSE);
- break;
- case SET_VT200_HIGHLIGHT_MOUSE: /* xterm sequence w/hilite tracking */
- MotionOff(screen, termw);
- set_mousemode(VT200_HIGHLIGHT_MOUSE);
- break;
- case SET_BTN_EVENT_MOUSE:
- MotionOff(screen, termw);
- set_mousemode(BTN_EVENT_MOUSE);
- break;
- case SET_ANY_EVENT_MOUSE:
- set_mousemode(ANY_EVENT_MOUSE);
- if (screen->send_mouse_pos == MOUSE_OFF) {
- MotionOff(screen, term);
- } else {
- MotionOn(screen, term);
- }
- break;
- case 1010: /* rxvt */
- screen->scrollttyoutput = (func == bitset) ? ON : OFF;
- update_scrollttyoutput();
- break;
- case 1011: /* rxvt */
- screen->scrollkey = (func == bitset) ? ON : OFF;
- update_scrollkey();
- break;
-#if OPT_NUM_LOCK
- case 1035:
- term->misc.real_NumLock = (func == bitset) ? ON : OFF;
- update_num_lock();
- break;
- case 1036:
- screen->meta_sends_esc = (func == bitset) ? ON : OFF;
- update_meta_esc();
- break;
-#endif
- case 1037:
- screen->delete_is_del = (func == bitset) ? ON : OFF;
- update_delete_del();
- break;
- case 1048:
- if (!termw->misc.titeInhibit) {
- if (func == bitset)
- CursorSave(termw);
- else
- CursorRestore(termw);
- }
- break;
- case 1051:
- set_keyboard_type(keyboardIsSun, func == bitset);
- break;
-#if OPT_HP_FUNC_KEYS
- case 1052:
- set_keyboard_type(keyboardIsHP, func == bitset);
- break;
-#endif
-#if OPT_SCO_FUNC_KEYS
- case 1053:
- set_keyboard_type(keyboardIsSCO, func == bitset);
- break;
-#endif
- case 1060:
- set_keyboard_type(keyboardIsLegacy, func == bitset);
- break;
-#if OPT_SUNPC_KBD
- case 1061:
- set_keyboard_type(keyboardIsVT220, func == bitset);
- break;
-#endif
-#if OPT_READLINE
- case SET_BUTTON1_MOVE_POINT:
- set_mouseflag(click1_moves);
- break;
- case SET_BUTTON2_MOVE_POINT:
- set_mouseflag(paste_moves);
- break;
- case SET_DBUTTON3_DELETE:
- set_mouseflag(dclick3_deletes);
- break;
- case SET_PASTE_IN_BRACKET:
- set_mouseflag(paste_brackets);
- break;
- case SET_PASTE_QUOTE:
- set_mouseflag(paste_quotes);
- break;
- case SET_PASTE_LITERAL_NL:
- set_mouseflag(paste_literal_nl);
- break;
-#endif /* OPT_READLINE */
- }
- }
-}
-
-/*
- * process xterm private modes save
- */
-static void
-savemodes(XtermWidget termw)
-{
- TScreen *screen = &termw->screen;
- int i;
-
- for (i = 0; i < nparam; i++) {
- TRACE(("savemodes %d\n", param[i]));
- switch (param[i]) {
- case 1: /* DECCKM */
- DoSM(DP_DECCKM, termw->keyboard.flags & MODE_DECCKM);
- break;
- case 3: /* DECCOLM */
- if (screen->c132)
- DoSM(DP_DECCOLM, termw->flags & IN132COLUMNS);
- break;
- case 4: /* DECSCLM (slow scroll) */
- DoSM(DP_DECSCLM, termw->flags & SMOOTHSCROLL);
- break;
- case 5: /* DECSCNM */
- DoSM(DP_DECSCNM, termw->flags & REVERSE_VIDEO);
- break;
- case 6: /* DECOM */
- DoSM(DP_DECOM, termw->flags & ORIGIN);
- break;
-
- case 7: /* DECAWM */
- DoSM(DP_DECAWM, termw->flags & WRAPAROUND);
- break;
- case 8: /* DECARM */
- /* ignore autorepeat */
- break;
- case SET_X10_MOUSE: /* mouse bogus sequence */
- DoSM(DP_X_X10MSE, screen->send_mouse_pos);
- break;
-#if OPT_TOOLBAR
- case 10: /* rxvt */
- DoSM(DP_TOOLBAR, resource.toolBar);
- break;
-#endif
-#if OPT_BLINK_CURS
- case 12: /* att610: Start/stop blinking cursor */
- if (screen->cursor_blink_res) {
- DoSM(DP_CRS_BLINK, screen->cursor_blink_esc);
- }
- break;
-#endif
- case 18: /* DECPFF: print form feed */
- DoSM(DP_PRN_FORMFEED, screen->printer_formfeed);
- break;
- case 19: /* DECPEX: print extent */
- DoSM(DP_PRN_EXTENT, screen->printer_extent);
- break;
- case 25: /* DECTCEM: Show/hide cursor (VT200) */
- DoSM(DP_CRS_VISIBLE, screen->cursor_set);
- break;
- case 40: /* 132 column mode */
- DoSM(DP_X_DECCOLM, screen->c132);
- break;
- case 41: /* curses hack */
- DoSM(DP_X_MORE, screen->curses);
- break;
- case 44: /* margin bell */
- DoSM(DP_X_MARGIN, screen->marginbell);
- break;
- case 45: /* reverse wraparound */
- DoSM(DP_X_REVWRAP, termw->flags & REVERSEWRAP);
- break;
-#ifdef ALLOWLOGGING
- case 46: /* logging */
- DoSM(DP_X_LOGGING, screen->logging);
- break;
-#endif
- case 1047: /* alternate buffer */
- /* FALLTHRU */
- case 47: /* alternate buffer */
- DoSM(DP_X_ALTSCRN, screen->alternate);
- break;
- case SET_VT200_MOUSE: /* mouse bogus sequence */
- case SET_VT200_HIGHLIGHT_MOUSE:
- case SET_BTN_EVENT_MOUSE:
- case SET_ANY_EVENT_MOUSE:
- DoSM(DP_X_MOUSE, screen->send_mouse_pos);
- break;
- case 1048:
- if (!termw->misc.titeInhibit) {
- CursorSave(termw);
- }
- break;
-#if OPT_READLINE
- case SET_BUTTON1_MOVE_POINT:
- SCREEN_FLAG_save(screen, click1_moves);
- break;
- case SET_BUTTON2_MOVE_POINT:
- SCREEN_FLAG_save(screen, paste_moves);
- break;
- case SET_DBUTTON3_DELETE:
- SCREEN_FLAG_save(screen, dclick3_deletes);
- break;
- case SET_PASTE_IN_BRACKET:
- SCREEN_FLAG_save(screen, paste_brackets);
- break;
- case SET_PASTE_QUOTE:
- SCREEN_FLAG_save(screen, paste_quotes);
- break;
- case SET_PASTE_LITERAL_NL:
- SCREEN_FLAG_save(screen, paste_literal_nl);
- break;
-#endif /* OPT_READLINE */
- }
- }
-}
-
-/*
- * process xterm private modes restore
- */
-static void
-restoremodes(XtermWidget termw)
-{
- TScreen *screen = &termw->screen;
- int i, j;
-
- for (i = 0; i < nparam; i++) {
- TRACE(("restoremodes %d\n", param[i]));
- switch (param[i]) {
- case 1: /* DECCKM */
- bitcpy(&termw->keyboard.flags,
- screen->save_modes[DP_DECCKM], MODE_DECCKM);
- update_appcursor();
- break;
- case 3: /* DECCOLM */
- if (screen->c132) {
- ClearScreen(screen);
- CursorSet(screen, 0, 0, termw->flags);
- if ((j = (screen->save_modes[DP_DECCOLM] & IN132COLUMNS)
- ? 132 : 80) != ((termw->flags & IN132COLUMNS)
- ? 132 : 80) || j != MaxCols(screen))
- RequestResize(termw, -1, j, True);
- bitcpy(&termw->flags,
- screen->save_modes[DP_DECCOLM],
- IN132COLUMNS);
- }
- break;
- case 4: /* DECSCLM (slow scroll) */
- if (screen->save_modes[DP_DECSCLM] & SMOOTHSCROLL) {
- screen->jumpscroll = 0;
- if (screen->scroll_amt)
- FlushScroll(screen);
- } else
- screen->jumpscroll = 1;
- bitcpy(&termw->flags, screen->save_modes[DP_DECSCLM], SMOOTHSCROLL);
- update_jumpscroll();
- break;
- case 5: /* DECSCNM */
- if ((screen->save_modes[DP_DECSCNM] ^ termw->flags) & REVERSE_VIDEO) {
- bitcpy(&termw->flags, screen->save_modes[DP_DECSCNM], REVERSE_VIDEO);
- ReverseVideo(termw);
- /* update_reversevideo done in RevVid */
- }
- break;
- case 6: /* DECOM */
- bitcpy(&termw->flags, screen->save_modes[DP_DECOM], ORIGIN);
- CursorSet(screen, 0, 0, termw->flags);
- break;
-
- case 7: /* DECAWM */
- bitcpy(&termw->flags, screen->save_modes[DP_DECAWM], WRAPAROUND);
- update_autowrap();
- break;
- case 8: /* DECARM */
- /* ignore autorepeat */
- break;
- case SET_X10_MOUSE: /* MIT bogus sequence */
- DoRM(DP_X_X10MSE, screen->send_mouse_pos);
- break;
-#if OPT_TOOLBAR
- case 10: /* rxvt */
- DoRM(DP_TOOLBAR, resource.toolBar);
- ShowToolbar(resource.toolBar);
- break;
-#endif
-#if OPT_BLINK_CURS
- case 12: /* att610: Start/stop blinking cursor */
- if (screen->cursor_blink_res) {
- DoRM(DP_CRS_BLINK, screen->cursor_blink_esc);
- SetCursorBlink(screen, screen->cursor_blink);
- }
- break;
-#endif
- case 18: /* DECPFF: print form feed */
- DoRM(DP_PRN_FORMFEED, screen->printer_formfeed);
- break;
- case 19: /* DECPEX: print extent */
- DoRM(DP_PRN_EXTENT, screen->printer_extent);
- break;
- case 25: /* DECTCEM: Show/hide cursor (VT200) */
- DoRM(DP_CRS_VISIBLE, screen->cursor_set);
- break;
- case 40: /* 132 column mode */
- DoRM(DP_X_DECCOLM, screen->c132);
- update_allow132();
- break;
- case 41: /* curses hack */
- DoRM(DP_X_MORE, screen->curses);
- update_cursesemul();
- break;
- case 44: /* margin bell */
- if ((DoRM(DP_X_MARGIN, screen->marginbell)) == 0)
- screen->bellarmed = -1;
- update_marginbell();
- break;
- case 45: /* reverse wraparound */
- bitcpy(&termw->flags, screen->save_modes[DP_X_REVWRAP], REVERSEWRAP);
- update_reversewrap();
- break;
-#ifdef ALLOWLOGGING
- case 46: /* logging */
-#ifdef ALLOWLOGFILEONOFF
- if (screen->save_modes[DP_X_LOGGING])
- StartLog(screen);
- else
- CloseLog(screen);
-#endif /* ALLOWLOGFILEONOFF */
- /* update_logging done by StartLog and CloseLog */
- break;
-#endif
- case 1047: /* alternate buffer */
- /* FALLTHRU */
- case 47: /* alternate buffer */
- if (!termw->misc.titeInhibit) {
- if (screen->save_modes[DP_X_ALTSCRN])
- ToAlternate(screen);
- else
- FromAlternate(screen);
- /* update_altscreen done by ToAlt and FromAlt */
- } else if (termw->misc.tiXtraScroll) {
- if (screen->save_modes[DP_X_ALTSCRN]) {
- xtermScroll(screen, screen->max_row);
- }
- }
- break;
- case SET_VT200_MOUSE: /* mouse bogus sequence */
- case SET_VT200_HIGHLIGHT_MOUSE:
- case SET_BTN_EVENT_MOUSE:
- case SET_ANY_EVENT_MOUSE:
- DoRM(DP_X_MOUSE, screen->send_mouse_pos);
- break;
- case 1048:
- if (!termw->misc.titeInhibit) {
- CursorRestore(termw);
- }
- break;
-#if OPT_READLINE
- case SET_BUTTON1_MOVE_POINT:
- SCREEN_FLAG_restore(screen, click1_moves);
- break;
- case SET_BUTTON2_MOVE_POINT:
- SCREEN_FLAG_restore(screen, paste_moves);
- break;
- case SET_DBUTTON3_DELETE:
- SCREEN_FLAG_restore(screen, dclick3_deletes);
- break;
- case SET_PASTE_IN_BRACKET:
- SCREEN_FLAG_restore(screen, paste_brackets);
- break;
- case SET_PASTE_QUOTE:
- SCREEN_FLAG_restore(screen, paste_quotes);
- break;
- case SET_PASTE_LITERAL_NL:
- SCREEN_FLAG_restore(screen, paste_literal_nl);
- break;
-#endif /* OPT_READLINE */
- }
- }
-}
-
-/*
- * Report window label (icon or title) in dtterm protocol
- * ESC ] code label ESC backslash
- */
-static void
-report_win_label(TScreen * screen,
- int code,
- XTextProperty * text,
- Status ok)
-{
- char **list;
- int length = 0;
-
- reply.a_type = ESC;
- unparseputc(ESC, screen->respond);
- unparseputc(']', screen->respond);
- unparseputc(code, screen->respond);
-
- if (ok) {
- if (XTextPropertyToStringList(text, &list, &length)) {
- int n, c;
- for (n = 0; n < length; n++) {
- char *s = list[n];
- while ((c = *s++) != '\0')
- unparseputc(c, screen->respond);
- }
- XFreeStringList(list);
- }
- if (text->value != 0)
- XFree(text->value);
- }
-
- unparseputc(ESC, screen->respond);
- unparseputc('\\', screen->respond);
-}
-
-/*
- * Window operations (from CDE dtterm description, as well as extensions).
- * See also "allowWindowOps" resource.
- */
-static void
-window_ops(XtermWidget termw)
-{
- TScreen *screen = &termw->screen;
- XWindowChanges values;
- XWindowAttributes win_attrs;
- XTextProperty text;
- unsigned value_mask;
- unsigned root_width;
- unsigned root_height;
-
- TRACE(("window_ops %d\n", param[0]));
- switch (param[0]) {
- case 1: /* Restore (de-iconify) window */
- XMapWindow(screen->display,
- VShellWindow);
- break;
-
- case 2: /* Minimize (iconify) window */
- XIconifyWindow(screen->display,
- VShellWindow,
- DefaultScreen(screen->display));
- break;
-
- case 3: /* Move the window to the given position */
- values.x = param[1];
- values.y = param[2];
- value_mask = (CWX | CWY);
- XReconfigureWMWindow(screen->display,
- VShellWindow,
- DefaultScreen(screen->display),
- value_mask,
- &values);
- break;
-
- case 4: /* Resize the window to given size in pixels */
- RequestResize(termw, param[1], param[2], False);
- break;
-
- case 5: /* Raise the window to the front of the stack */
- XRaiseWindow(screen->display, VShellWindow);
- break;
-
- case 6: /* Lower the window to the bottom of the stack */
- XLowerWindow(screen->display, VShellWindow);
- break;
-
- case 7: /* Refresh the window */
- Redraw();
- break;
-
- case 8: /* Resize the text-area, in characters */
- RequestResize(termw, param[1], param[2], True);
- break;
-
-#if OPT_MAXIMIZE
- case 9: /* Maximize or restore */
- RequestMaximize(termw, param[1]);
- break;
-#endif
-
- case 11: /* Report the window's state */
- XGetWindowAttributes(screen->display,
- VWindow(screen),
- &win_attrs);
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 1;
- reply.a_param[0] = (win_attrs.map_state == IsViewable) ? 1 : 2;
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-
- case 13: /* Report the window's position */
- XGetWindowAttributes(screen->display,
- WMFrameWindow(termw),
- &win_attrs);
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 3;
- reply.a_param[0] = 3;
- reply.a_param[1] = win_attrs.x;
- reply.a_param[2] = win_attrs.y;
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-
- case 14: /* Report the window's size in pixels */
- XGetWindowAttributes(screen->display,
- VWindow(screen),
- &win_attrs);
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 3;
- reply.a_param[0] = 4;
- /*FIXME: find if dtterm uses
- * win_attrs.height or Height
- * win_attrs.width or Width
- */
- reply.a_param[1] = Height(screen);
- reply.a_param[2] = Width(screen);
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-
- case 18: /* Report the text's size in characters */
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 3;
- reply.a_param[0] = 8;
- reply.a_param[1] = MaxRows(screen);
- reply.a_param[2] = MaxCols(screen);
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-
-#if OPT_MAXIMIZE
- case 19: /* Report the screen's size, in characters */
- if (!QueryMaximize(term, &root_height, &root_width)) {
- root_height = 0;
- root_width = 0;
- }
- reply.a_type = CSI;
- reply.a_pintro = 0;
- reply.a_nparam = 3;
- reply.a_param[0] = 9;
- reply.a_param[1] = root_height / FontHeight(screen);
- reply.a_param[2] = root_width / FontWidth(screen);
- reply.a_inters = 0;
- reply.a_final = 't';
- unparseseq(&reply, screen->respond);
- break;
-#endif
-
- case 20: /* Report the icon's label */
- report_win_label(screen, 'L', &text,
- XGetWMIconName(screen->display, VShellWindow, &text));
- break;
-
- case 21: /* Report the window's title */
- report_win_label(screen, 'l', &text,
- XGetWMName(screen->display, VShellWindow, &text));
- break;
-
- default: /* DECSLPP (24, 25, 36, 48, 72, 144) */
- if (param[0] >= 24)
- RequestResize(termw, param[0], -1, True);
- break;
- }
-}
-
-/*
- * set a bit in a word given a pointer to the word and a mask.
- */
-static void
-bitset(unsigned *p, unsigned mask)
-{
- *p |= mask;
-}
-
-/*
- * clear a bit in a word given a pointer to the word and a mask.
- */
-static void
-bitclr(unsigned *p, unsigned mask)
-{
- *p &= ~mask;
-}
-
-/*
- * Copy bits from one word to another, given a mask
- */
-static void
-bitcpy(unsigned *p, unsigned q, unsigned mask)
-{
- bitclr(p, mask);
- bitset(p, q & mask);
-}
-
-void
-unparseputc1(int c, int fd)
-{
- if (c >= 0x80 && c <= 0x9F) {
- if (!term->screen.control_eight_bits) {
- unparseputc(A2E(ESC), fd);
- c = A2E(c - 0x40);
- }
- }
- unparseputc(c, fd);
-}
-
-void
-unparseseq(ANSI * ap, int fd)
-{
- int c;
- int i;
- int inters;
-
- unparseputc1(c = ap->a_type, fd);
- if (c == ESC
- || c == DCS
- || c == CSI
- || c == OSC
- || c == PM
- || c == APC
- || c == SS3) {
- if (ap->a_pintro != 0)
- unparseputc(ap->a_pintro, fd);
- for (i = 0; i < ap->a_nparam; ++i) {
- if (i != 0)
- unparseputc(';', fd);
- unparseputn((unsigned int) ap->a_param[i], fd);
- }
- if ((inters = ap->a_inters) != 0) {
- for (i = 3; i >= 0; --i) {
- c = CharOf(inters >> (8 * i));
- if (c != 0)
- unparseputc(c, fd);
- }
- }
- unparseputc((char) ap->a_final, fd);
- }
-}
-
-static void
-unparseputn(unsigned int n, int fd)
-{
- unsigned int q;
-
- q = n / 10;
- if (q != 0)
- unparseputn(q, fd);
- unparseputc((char) ('0' + (n % 10)), fd);
-}
-
-void
-unparseputc(int c, int fd)
-{
- IChar buf[2];
- unsigned i = 1;
-
-#if OPT_TCAP_QUERY
- /*
- * If we're returning a termcap string, it has to be translated since
- * a DCS must not contain any characters except for the normal 7-bit
- * printable ASCII (counting tab, carriage return, etc). For now,
- * just use hexadecimal for the whole thing.
- */
- if (term->screen.tc_query >= 0) {
- char tmp[3];
- sprintf(tmp, "%02X", c & 0xFF);
- buf[0] = tmp[0];
- buf[1] = tmp[1];
- i = 2;
- } else
-#endif
- if ((buf[0] = c) == '\r' && (term->flags & LINEFEED)) {
- buf[1] = '\n';
- i++;
- }
-#ifdef VMS
- tt_write(&buf, i);
-#else /* VMS */
- writePtyData(fd, buf, i);
-#endif /* VMS */
-
- /* If send/receive mode is reset, we echo characters locally */
- if ((term->keyboard.flags & MODE_SRM) == 0) {
- (void) doparsing((unsigned) c, &myState);
- }
-}
-
-void
-unparseputs(char *s, int fd)
-{
- while (*s)
- unparseputc(*s++, fd);
-}
-
-void
-ToggleAlternate(TScreen * screen)
-{
- if (screen->alternate)
- FromAlternate(screen);
- else
- ToAlternate(screen);
-}
-
-static void
-ToAlternate(TScreen * screen)
-{
- if (screen->alternate)
- return;
- TRACE(("ToAlternate\n"));
- if (!screen->altbuf)
- screen->altbuf = Allocate(MaxRows(screen), MaxCols(screen),
- &screen->abuf_address);
- SwitchBufs(screen);
- screen->alternate = True;
- update_altscreen();
-}
-
-static void
-FromAlternate(TScreen * screen)
-{
- if (!screen->alternate)
- return;
- TRACE(("FromAlternate\n"));
- if (screen->scroll_amt)
- FlushScroll(screen);
- screen->alternate = False;
- SwitchBufs(screen);
- update_altscreen();
-}
-
-static void
-SwitchBufs(TScreen * screen)
-{
- int rows, top;
-
- if (screen->cursor_state)
- HideCursor();
-
- rows = MaxRows(screen);
- SwitchBufPtrs(screen);
-
- if ((top = -screen->topline) < rows) {
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (top == 0)
- XClearWindow(screen->display, VWindow(screen));
- else
- XClearArea(screen->display,
- VWindow(screen),
- (int) OriginX(screen),
- (int) top * FontHeight(screen) + screen->border,
- (unsigned) Width(screen),
- (unsigned) (rows - top) * FontHeight(screen),
- False);
- }
- ScrnUpdate(screen, 0, 0, rows, MaxCols(screen), False);
-}
-
-/* swap buffer line pointers between alt and regular screens */
-void
-SwitchBufPtrs(TScreen * screen)
-{
- size_t len = ScrnPointers(screen, (unsigned) MaxRows(screen));
-
- memcpy((char *) screen->save_ptr, (char *) screen->visbuf, len);
- memcpy((char *) screen->visbuf, (char *) screen->altbuf, len);
- memcpy((char *) screen->altbuf, (char *) screen->save_ptr, len);
-}
-
-void
-VTRun(void)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("VTRun ...\n"));
-
- if (!screen->Vshow) {
- set_vt_visibility(True);
- }
- update_vttekmode();
- update_vtshow();
- update_tekshow();
- set_vthide_sensitivity();
-
- if (screen->allbuf == NULL)
- VTallocbuf();
-
- screen->cursor_state = OFF;
- screen->cursor_set = ON;
-#if OPT_BLINK_CURS
- if (DoStartBlinking(screen))
- StartBlinking(screen);
-#endif
-
-#if OPT_TEK4014
- if (Tpushb > Tpushback) {
- fillPtyData(screen, VTbuffer, (char *) Tpushback, Tpushb - Tpushback);
- Tpushb = Tpushback;
- }
-#endif
- if (!setjmp(VTend))
- VTparse();
- StopBlinking(screen);
- HideCursor();
- screen->cursor_set = OFF;
-}
-
-/*ARGSUSED*/
-static void
-VTExpose(Widget w GCC_UNUSED,
- XEvent * event,
- Region region GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
-#ifdef DEBUG
- if (debug)
- fputs("Expose\n", stderr);
-#endif /* DEBUG */
- if (event->type == Expose)
- HandleExposure(screen, event);
-}
-
-static void
-VTGraphicsOrNoExpose(XEvent * event)
-{
- TScreen *screen = &term->screen;
- if (screen->incopy <= 0) {
- screen->incopy = 1;
- if (screen->scrolls > 0)
- screen->scrolls--;
- }
- if (event->type == GraphicsExpose)
- if (HandleExposure(screen, event))
- screen->cursor_state = OFF;
- if ((event->type == NoExpose)
- || ((XGraphicsExposeEvent *) event)->count == 0) {
- if (screen->incopy <= 0 && screen->scrolls > 0)
- screen->scrolls--;
- if (screen->scrolls)
- screen->incopy = -1;
- else
- screen->incopy = 0;
- }
-}
-
-/*ARGSUSED*/
-static void
-VTNonMaskableEvent(Widget w GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XEvent * event,
- Boolean * cont GCC_UNUSED)
-{
- switch (event->type) {
- case GraphicsExpose:
- case NoExpose:
- VTGraphicsOrNoExpose(event);
- break;
- }
-}
-
-static void
-VTResize(Widget w)
-{
- if (XtIsRealized(w)) {
- ScreenResize(&term->screen, term->core.width, term->core.height, &term->flags);
- }
-}
-
-#define okDimension(src,dst) ((src <= 32767) && ((dst = src) == src))
-
-static void
-RequestResize(XtermWidget termw, int rows, int cols, int text)
-{
-#ifndef nothack
- XSizeHints sizehints;
- long supp;
-#endif
- TScreen *screen = &termw->screen;
- unsigned long value;
- Dimension replyWidth, replyHeight;
- Dimension askedWidth, askedHeight;
- XtGeometryResult status;
- XWindowAttributes attrs;
-
- TRACE(("RequestResize(rows=%d, cols=%d, text=%d)\n", rows, cols, text));
-
- if ((askedWidth = cols) < cols
- || (askedHeight = rows) < rows)
- return;
-
- if (askedHeight == 0
- || askedWidth == 0
- || term->misc.limit_resize > 0) {
- XGetWindowAttributes(XtDisplay(termw),
- RootWindowOfScreen(XtScreen(termw)), &attrs);
- }
-
- if (text) {
- if ((value = rows) != 0) {
- if (rows < 0)
- value = MaxRows(screen);
- value *= FontHeight(screen);
- value += (2 * screen->border);
- if (!okDimension(value, askedHeight))
- return;
- }
-
- if ((value = cols) != 0) {
- if (cols < 0)
- value = MaxCols(screen);
- value *= FontWidth(screen);
- value += (2 * screen->border) + ScrollbarWidth(screen);
- if (!okDimension(value, askedWidth))
- return;
- }
-
- } else {
- if (rows < 0)
- askedHeight = FullHeight(screen);
- if (cols < 0)
- askedWidth = FullWidth(screen);
- }
-
- if (rows == 0)
- askedHeight = attrs.height;
- if (cols == 0)
- askedWidth = attrs.width;
-
- if (term->misc.limit_resize > 0) {
- Dimension high = term->misc.limit_resize * attrs.height;
- Dimension wide = term->misc.limit_resize * attrs.width;
- if (high < attrs.height)
- high = attrs.height;
- if (askedHeight > high)
- askedHeight = high;
- if (wide < attrs.width)
- wide = attrs.width;
- if (askedWidth > wide)
- askedWidth = wide;
- }
-#ifndef nothack
- if (!XGetWMNormalHints(screen->display, VShellWindow,
- &sizehints, &supp))
- bzero(&sizehints, sizeof(sizehints));
-#endif
-
- status = XtMakeResizeRequest((Widget) termw,
- askedWidth, askedHeight,
- &replyWidth, &replyHeight);
- TRACE(("charproc.c XtMakeResizeRequest %dx%d -> %dx%d (status %d)\n",
- askedHeight, askedWidth,
- replyHeight, replyWidth,
- status));
-
- if (status == XtGeometryYes ||
- status == XtGeometryDone) {
- ScreenResize(&termw->screen,
- replyWidth,
- replyHeight,
- &termw->flags);
- }
-#ifndef nothack
- /*
- * XtMakeResizeRequest() has the undesirable side-effect of clearing
- * the window manager's hints, even on a failed request. This would
- * presumably be fixed if the shell did its own work.
- */
- if (sizehints.flags
- && replyHeight
- && replyWidth) {
- sizehints.height = replyHeight;
- sizehints.width = replyWidth;
-
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_HINTS(&sizehints);
- XSetWMNormalHints(screen->display, VShellWindow, &sizehints);
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_WM_HINTS(termw);
- }
-#endif
-
- XSync(screen->display, False); /* synchronize */
- if (XtAppPending(app_con))
- xevents();
-}
-
-static String xterm_trans =
-"<ClientMessage>WM_PROTOCOLS: DeleteWindow()\n\
- <MappingNotify>: KeyboardMapping()\n";
-
-int
-VTInit(void)
-{
- TScreen *screen = &term->screen;
- Widget vtparent = SHELL_OF(term);
-
- XtRealizeWidget(vtparent);
- XtOverrideTranslations(vtparent, XtParseTranslationTable(xterm_trans));
- (void) XSetWMProtocols(XtDisplay(vtparent), XtWindow(vtparent),
- &wm_delete_window, 1);
- TRACE_TRANS("shell", vtparent);
- TRACE_TRANS("vt100", (Widget) (term));
-
- if (screen->allbuf == NULL)
- VTallocbuf();
- return (1);
-}
-
-static void
-VTallocbuf(void)
-{
- TScreen *screen = &term->screen;
- int nrows = MaxRows(screen);
-
- /* allocate screen buffer now, if necessary. */
- if (screen->scrollWidget)
- nrows += screen->savelines;
- screen->allbuf = Allocate(nrows, MaxCols(screen),
- &screen->sbuf_address);
- if (screen->scrollWidget)
- screen->visbuf = &screen->allbuf[MAX_PTRS * screen->savelines];
- else
- screen->visbuf = screen->allbuf;
- return;
-}
-
-static void
-VTClassInit(void)
-{
- XtAddConverter(XtRString, XtRGravity, XmuCvtStringToGravity,
- (XtConvertArgList) NULL, (Cardinal) 0);
-}
-
-/*
- * The whole wnew->screen struct is zeroed in VTInitialize. Use these macros
- * where applicable for copying the pieces from the request widget into the
- * new widget. We do not have to use them for wnew->misc, but the associated
- * traces are very useful for debugging.
- */
-#if OPT_TRACE
-#define init_Bres(name) \
- TRACE(("init " #name " = %s\n", \
- BtoS(wnew->name = request->name)))
-#define init_Dres(name) \
- TRACE(("init " #name " = %f\n", \
- wnew->name = request->name))
-#define init_Ires(name) \
- TRACE(("init " #name " = %d\n", \
- wnew->name = request->name))
-#define init_Sres(name) \
- TRACE(("init " #name " = \"%s\"\n", \
- (wnew->name = x_strtrim(request->name)) != NULL \
- ? wnew->name : "<null>"))
-#define init_Tres(offset) \
- TRACE(("init screen.Tcolors[" #offset "] = %#lx\n", \
- fill_Tres(wnew, request, offset)))
-#else
-#define init_Bres(name) wnew->name = request->name
-#define init_Dres(name) wnew->name = request->name
-#define init_Ires(name) wnew->name = request->name
-#define init_Sres(name) wnew->name = x_strtrim(request->name)
-#define init_Tres(offset) fill_Tres(wnew, request, offset)
-#endif
-
-#if OPT_COLOR_RES
-/*
- * Override the use of XtDefaultForeground/XtDefaultBackground to make some
- * colors, such as cursor color, use the actual foreground/background value
- * if there is no explicit resource value used.
- */
-static Pixel
-fill_Tres(XtermWidget target, XtermWidget source, int offset)
-{
- char *name;
- ScrnColors temp;
-
- target->screen.Tcolors[offset] = source->screen.Tcolors[offset];
- target->screen.Tcolors[offset].mode = False;
-
- if ((name = x_strtrim(target->screen.Tcolors[offset].resource)) != 0)
- target->screen.Tcolors[offset].resource = name;
-
- if (name == 0) {
- target->screen.Tcolors[offset].value = target->dft_foreground;
- } else if (!x_strcasecmp(name, XtDefaultForeground)) {
- target->screen.Tcolors[offset].value =
- ((offset == TEXT_FG || offset == TEXT_BG)
- ? target->dft_foreground
- : target->screen.Tcolors[TEXT_FG].value);
- } else if (!x_strcasecmp(name, XtDefaultBackground)) {
- target->screen.Tcolors[offset].value =
- ((offset == TEXT_FG || offset == TEXT_BG)
- ? target->dft_background
- : target->screen.Tcolors[TEXT_BG].value);
- } else {
- if (AllocateTermColor(target, &temp, offset, name)) {
- target->screen.Tcolors[offset].value = temp.colors[offset];
- }
- }
- return target->screen.Tcolors[offset].value;
-}
-#else
-#define fill_Tres(target, source, offset) \
- target->screen.Tcolors[offset] = source->screen.Tcolors[offset]
-#endif
-
-#if OPT_WIDE_CHARS
-static void
-VTInitialize_locale(XtermWidget request)
-{
- Bool is_utf8 = xtermEnvUTF8();
-
- TRACE(("VTInitialize_locale\n"));
- TRACE(("... request screen.utf8_mode = %d\n", request->screen.utf8_mode));
-
- if (request->screen.utf8_mode < 0)
- request->screen.utf8_mode = uFalse;
-
- if (request->screen.utf8_mode > 3)
- request->screen.utf8_mode = uDefault;
-
- request->screen.latin9_mode = 0;
- request->screen.unicode_font = 0;
-#if OPT_LUIT_PROG
- request->misc.callfilter = 0;
- request->misc.use_encoding = 0;
-
- TRACE(("... setup for luit:\n"));
- TRACE(("... request misc.locale_str = \"%s\"\n", request->misc.locale_str));
-
- if (request->screen.utf8_mode == uFalse) {
- TRACE(("... command-line +u8 overrides\n"));
- } else
-#if OPT_MINI_LUIT
- if (x_strcasecmp(request->misc.locale_str, "CHECKFONT") == 0) {
- int fl = (request->misc.default_font.f_n
- ? strlen(request->misc.default_font.f_n)
- : 0);
- if (fl > 11
- && x_strcasecmp(request->misc.default_font.f_n + fl - 11,
- "-ISO10646-1") == 0) {
- request->screen.unicode_font = 1;
- /* unicode font, use True */
-#ifdef HAVE_LANGINFO_CODESET
- if (!strcmp(xtermEnvEncoding(), "ANSI_X3.4-1968")
- || !strcmp(xtermEnvEncoding(), "ISO-8859-1")) {
- if (request->screen.utf8_mode == uDefault)
- request->screen.utf8_mode = uFalse;
- } else if (!strcmp(xtermEnvEncoding(), "ISO-8859-15")) {
- if (request->screen.utf8_mode == uDefault)
- request->screen.utf8_mode = uFalse;
- request->screen.latin9_mode = 1;
- } else {
- request->misc.callfilter = is_utf8 ? 0 : 1;
- request->screen.utf8_mode = uAlways;
- }
-#else
- request->misc.callfilter = is_utf8 ? 0 : 1;
- request->screen.utf8_mode = uAlways;
-#endif
- } else {
- /* other encoding, use False */
- if (request->screen.utf8_mode == uDefault) {
- request->screen.utf8_mode = is_utf8 ? uAlways : uFalse;
- }
- }
- } else
-#endif /* OPT_MINI_LUIT */
- if (x_strcasecmp(request->misc.locale_str, "TRUE") == 0 ||
- x_strcasecmp(request->misc.locale_str, "ON") == 0 ||
- x_strcasecmp(request->misc.locale_str, "YES") == 0 ||
- x_strcasecmp(request->misc.locale_str, "AUTO") == 0 ||
- strcmp(request->misc.locale_str, "1") == 0) {
- /* when true ... fully obeying LC_CTYPE locale */
- request->misc.callfilter = is_utf8 ? 0 : 1;
- request->screen.utf8_mode = uAlways;
- } else if (x_strcasecmp(request->misc.locale_str, "FALSE") == 0 ||
- x_strcasecmp(request->misc.locale_str, "OFF") == 0 ||
- x_strcasecmp(request->misc.locale_str, "NO") == 0 ||
- strcmp(request->misc.locale_str, "0") == 0) {
- /* when false ... original value of utf8_mode is effective */
- if (request->screen.utf8_mode == uDefault) {
- request->screen.utf8_mode = is_utf8 ? uAlways : uFalse;
- }
- } else if (x_strcasecmp(request->misc.locale_str, "MEDIUM") == 0 ||
- x_strcasecmp(request->misc.locale_str, "SEMIAUTO") == 0) {
- /* when medium ... obeying locale only for UTF-8 and Asian */
- if (is_utf8) {
- request->screen.utf8_mode = uAlways;
- } else if (
-#ifdef MB_CUR_MAX
- MB_CUR_MAX > 1 ||
-#else
- !strncmp(xtermEnvLocale(), "ja", 2) ||
- !strncmp(xtermEnvLocale(), "ko", 2) ||
- !strncmp(xtermEnvLocale(), "zh", 2) ||
-#endif
- !strncmp(xtermEnvLocale(), "th", 2) ||
- !strncmp(xtermEnvLocale(), "vi", 2)) {
- request->misc.callfilter = 1;
- request->screen.utf8_mode = uAlways;
- } else {
- request->screen.utf8_mode = uFalse;
- }
- } else if (x_strcasecmp(request->misc.locale_str, "UTF-8") == 0 ||
- x_strcasecmp(request->misc.locale_str, "UTF8") == 0) {
- /* when UTF-8 ... UTF-8 mode */
- request->screen.utf8_mode = uAlways;
- } else {
- /* other words are regarded as encoding name passed to luit */
- request->misc.callfilter = 1;
- request->screen.utf8_mode = uAlways;
- request->misc.use_encoding = 1;
- }
- TRACE(("... updated misc.callfilter = %s\n", BtoS(request->misc.callfilter)));
- TRACE(("... updated misc.use_encoding = %s\n", BtoS(request->misc.use_encoding)));
-#else
- if (request->screen.utf8_mode == uDefault) {
- request->screen.utf8_mode = is_utf8 ? uAlways : uFalse;
- }
-#endif /* OPT_LUIT_PROG */
-
- request->screen.utf8_inparse = (request->screen.utf8_mode != uFalse);
-
- TRACE(("... updated screen.utf8_mode = %d\n", request->screen.utf8_mode));
- TRACE(("...VTInitialize_locale done\n"));
-}
-#endif
-
-/* ARGSUSED */
-static void
-VTInitialize(Widget wrequest,
- Widget new_arg,
- ArgList args GCC_UNUSED,
- Cardinal *num_args GCC_UNUSED)
-{
- XtermWidget request = (XtermWidget) wrequest;
- XtermWidget wnew = (XtermWidget) new_arg;
- Widget my_parent = SHELL_OF(wnew);
- int i;
- char *s;
-
-#if OPT_ISO_COLORS
- Bool color_ok;
-#endif
-
-#if OPT_COLOR_RES2 && (MAXCOLORS > MIN_ANSI_COLORS)
- static XtResource fake_resources[] =
- {
-#if OPT_256_COLORS
-# include <256colres.h>
-#elif OPT_88_COLORS
-# include <88colres.h>
-#endif
- };
-#endif /* OPT_COLOR_RES2 */
-
- TRACE(("VTInitialize\n"));
-
- /* Zero out the entire "screen" component of "wnew" widget, then do
- * field-by-field assignment of "screen" fields that are named in the
- * resource list.
- */
- bzero((char *) &wnew->screen, sizeof(wnew->screen));
-
- /* dummy values so that we don't try to Realize the parent shell with height
- * or width of 0, which is illegal in X. The real size is computed in the
- * xtermWidget's Realize proc, but the shell's Realize proc is called first,
- * and must see a valid size.
- */
- wnew->core.height = wnew->core.width = 1;
-
- /*
- * The definition of -rv now is that it changes the definition of
- * XtDefaultForeground and XtDefaultBackground. So, we no longer
- * need to do anything special.
- */
- wnew->screen.display = wnew->core.screen->display;
-
- /*
- * We use the default foreground/background colors to compare/check if a
- * color-resource has been set.
- */
-#define MyBlackPixel(dpy) BlackPixel(dpy,DefaultScreen(dpy))
-#define MyWhitePixel(dpy) WhitePixel(dpy,DefaultScreen(dpy))
-
- if (request->misc.re_verse) {
- wnew->dft_foreground = MyWhitePixel(wnew->screen.display);
- wnew->dft_background = MyBlackPixel(wnew->screen.display);
- } else {
- wnew->dft_foreground = MyBlackPixel(wnew->screen.display);
- wnew->dft_background = MyWhitePixel(wnew->screen.display);
- }
- init_Tres(TEXT_FG);
- init_Tres(TEXT_BG);
-
- TRACE(("Color resource initialization:\n"));
- TRACE((" Default foreground %#lx\n", wnew->dft_foreground));
- TRACE((" Default background %#lx\n", wnew->dft_background));
- TRACE((" Screen foreground %#lx\n", T_COLOR(&(wnew->screen), TEXT_FG)));
- TRACE((" Screen background %#lx\n", T_COLOR(&(wnew->screen), TEXT_BG)));
-
- wnew->screen.mouse_button = -1;
- wnew->screen.mouse_row = -1;
- wnew->screen.mouse_col = -1;
-
-#if OPT_BOX_CHARS
- init_Bres(screen.force_box_chars);
- init_Bres(screen.force_all_chars);
-#endif
- init_Bres(screen.free_bold_box);
-
- init_Bres(screen.c132);
- init_Bres(screen.curses);
- init_Bres(screen.hp_ll_bc);
-#if OPT_XMC_GLITCH
- init_Ires(screen.xmc_glitch);
- init_Ires(screen.xmc_attributes);
- init_Bres(screen.xmc_inline);
- init_Bres(screen.move_sgr_ok);
-#endif
-#if OPT_BLINK_CURS
- init_Bres(screen.cursor_blink);
- init_Ires(screen.blink_on);
- init_Ires(screen.blink_off);
- wnew->screen.cursor_blink_res = wnew->screen.cursor_blink;
-#endif
-#if OPT_BLINK_TEXT
- init_Ires(screen.blink_as_bold);
-#endif
- init_Ires(screen.border);
- init_Bres(screen.jumpscroll);
- init_Bres(screen.old_fkeys);
- init_Bres(screen.delete_is_del);
- wnew->keyboard.type = wnew->screen.old_fkeys
- ? keyboardIsLegacy
- : keyboardIsDefault;
-#ifdef ALLOWLOGGING
- init_Sres(screen.logfile);
-#endif
- init_Bres(screen.bellOnReset);
- init_Bres(screen.marginbell);
- init_Bres(screen.multiscroll);
- init_Ires(screen.nmarginbell);
- init_Ires(screen.savelines);
- init_Ires(screen.scrollBarBorder);
- init_Ires(screen.scrolllines);
- init_Bres(screen.scrollttyoutput);
- init_Bres(screen.scrollkey);
-
- init_Sres(screen.term_id);
- for (s = request->screen.term_id; *s; s++) {
- if (!isalpha(CharOf(*s)))
- break;
- }
- wnew->screen.terminal_id = atoi(s);
- if (wnew->screen.terminal_id < MIN_DECID)
- wnew->screen.terminal_id = MIN_DECID;
- if (wnew->screen.terminal_id > MAX_DECID)
- wnew->screen.terminal_id = MAX_DECID;
- TRACE(("term_id '%s' -> terminal_id %d\n",
- wnew->screen.term_id,
- wnew->screen.terminal_id));
-
- wnew->screen.vtXX_level = (wnew->screen.terminal_id / 100);
- init_Bres(screen.visualbell);
- init_Ires(screen.visualBellDelay);
- init_Bres(screen.poponbell);
- init_Ires(misc.limit_resize);
-#if OPT_NUM_LOCK
- init_Bres(misc.real_NumLock);
- init_Bres(misc.alwaysUseMods);
- wnew->misc.num_lock = 0;
- wnew->misc.alt_left = 0;
- wnew->misc.alt_right = 0;
- wnew->misc.meta_trans = False;
- wnew->misc.meta_left = 0;
- wnew->misc.meta_right = 0;
-#endif
-#if OPT_SHIFT_FONTS
- init_Bres(misc.shift_fonts);
-#endif
-#if OPT_SUNPC_KBD
- init_Ires(misc.ctrl_fkeys);
-#endif
-#if OPT_TEK4014
- init_Bres(misc.tekInhibit);
- init_Bres(misc.tekSmall);
- init_Bres(screen.TekEmu);
-#endif
-#if OPT_TCAP_QUERY
- wnew->screen.tc_query = -1;
-#endif
- wnew->misc.re_verse0 = request->misc.re_verse;
- init_Bres(misc.re_verse);
- init_Ires(screen.multiClickTime);
- init_Ires(screen.bellSuppressTime);
- init_Sres(screen.charClass);
- init_Bres(screen.cutNewline);
- init_Bres(screen.cutToBeginningOfLine);
- init_Bres(screen.highlight_selection);
- init_Bres(screen.trim_selection);
- init_Bres(screen.i18nSelections);
- init_Bres(screen.brokenSelections);
- init_Bres(screen.always_highlight);
- wnew->screen.pointer_cursor = request->screen.pointer_cursor;
-
- init_Sres(screen.answer_back);
-
- init_Sres(screen.printer_command);
- init_Bres(screen.printer_autoclose);
- init_Bres(screen.printer_extent);
- init_Bres(screen.printer_formfeed);
- init_Ires(screen.printer_controlmode);
-#if OPT_PRINT_COLORS
- init_Ires(screen.print_attributes);
-#endif
-
- init_Sres(screen.keyboard_dialect);
-
- init_Bres(screen.input_eight_bits);
- init_Bres(screen.output_eight_bits);
- init_Bres(screen.control_eight_bits);
- init_Bres(screen.backarrow_key);
- init_Bres(screen.meta_sends_esc);
-
- init_Bres(screen.allowSendEvent0);
- init_Bres(screen.allowWindowOp0);
-
- /* make a copy so that editres cannot change the resource after startup */
- wnew->screen.allowSendEvents = wnew->screen.allowSendEvent0;
- wnew->screen.allowWindowOps = wnew->screen.allowWindowOp0;
-
-#ifndef NO_ACTIVE_ICON
- wnew->screen.fnt_icon = request->screen.fnt_icon;
- init_Bres(misc.active_icon);
- init_Ires(misc.icon_border_width);
- wnew->misc.icon_border_pixel = request->misc.icon_border_pixel;
-#endif /* NO_ACTIVE_ICON */
- init_Bres(misc.titeInhibit);
- init_Bres(misc.tiXtraScroll);
- init_Bres(misc.dynamicColors);
- for (i = fontMenu_font1; i <= fontMenu_lastBuiltin; i++) {
- init_Sres(screen.MenuFontName(i));
- }
- /* set default in realize proc */
- wnew->screen.MenuFontName(fontMenu_fontdefault) = NULL;
- wnew->screen.MenuFontName(fontMenu_fontescape) = NULL;
- wnew->screen.MenuFontName(fontMenu_fontsel) = NULL;
- wnew->screen.menu_font_number = fontMenu_fontdefault;
-
-#if OPT_BROKEN_OSC
- init_Bres(screen.brokenLinuxOSC);
-#endif
-
-#if OPT_BROKEN_ST
- init_Bres(screen.brokenStringTerm);
-#endif
-
-#if OPT_C1_PRINT
- init_Bres(screen.c1_printable);
-#endif
-
-#if OPT_DEC_CHRSET
- init_Bres(screen.font_doublesize);
- init_Ires(screen.cache_doublesize);
- if (wnew->screen.cache_doublesize > NUM_CHRSET)
- wnew->screen.cache_doublesize = NUM_CHRSET;
- if (wnew->screen.cache_doublesize == 0)
- wnew->screen.font_doublesize = False;
- TRACE(("Doublesize%s enabled, up to %d fonts\n",
- wnew->screen.font_doublesize ? "" : " not",
- wnew->screen.cache_doublesize));
-#endif
-
-#if OPT_ISO_COLORS || OPT_DEC_CHRSET || OPT_WIDE_CHARS
- wnew->num_ptrs = (OFF_ATTRS + 1); /* OFF_FLAGS, OFF_CHARS, OFF_ATTRS */
-#endif
-#if OPT_ISO_COLORS
- init_Ires(screen.veryBoldColors);
- init_Bres(screen.boldColors);
- init_Bres(screen.colorAttrMode);
- init_Bres(screen.colorBDMode);
- init_Bres(screen.colorBLMode);
- init_Bres(screen.colorMode);
- init_Bres(screen.colorULMode);
- init_Bres(screen.italicULMode);
- init_Bres(screen.colorRVMode);
-
- for (i = 0, color_ok = False; i < MAXCOLORS; i++) {
-
-#if OPT_COLOR_RES2 && (MAXCOLORS > MIN_ANSI_COLORS)
- /*
- * Xt has a hardcoded limit on the maximum number of resources that can
- * be used in a widget. If we configure both luit (which implies
- * wide-characters) and 256-colors, it goes over that limit. Most
- * people would not need a resource-file with 256-colors; the default
- * values in our table are sufficient. In that case, fake the resource
- * setting by copying the default value from the table. The #define's
- * can be overridden to make these true resources.
- */
- if (i >= MIN_ANSI_COLORS && i < NUM_ANSI_COLORS) {
- wnew->screen.Acolors[i].resource
- = ((char *) fake_resources[i - MIN_ANSI_COLORS].default_addr);
- if (wnew->screen.Acolors[i].resource == 0)
- wnew->screen.Acolors[i].resource = XtDefaultForeground;
- } else
-#endif /* OPT_COLOR_RES2 */
- wnew->screen.Acolors[i] = request->screen.Acolors[i];
-
-#if OPT_COLOR_RES
- TRACE(("Acolors[%d] = %s\n", i, wnew->screen.Acolors[i].resource));
- wnew->screen.Acolors[i].mode = False;
- if (!x_strcasecmp(wnew->screen.Acolors[i].resource, XtDefaultForeground)) {
- wnew->screen.Acolors[i].value = T_COLOR(&(wnew->screen), TEXT_FG);
- wnew->screen.Acolors[i].mode = True;
- } else if (!x_strcasecmp(wnew->screen.Acolors[i].resource, XtDefaultBackground)) {
- wnew->screen.Acolors[i].value = T_COLOR(&(wnew->screen), TEXT_BG);
- wnew->screen.Acolors[i].mode = True;
- } else {
- color_ok = True;
- }
-#else
- TRACE(("Acolors[%d] = %#lx\n", i, request->screen.Acolors[i]));
- if (wnew->screen.Acolors[i] != wnew->dft_foreground &&
- wnew->screen.Acolors[i] != T_COLOR(&(wnew->screen), TEXT_FG) &&
- wnew->screen.Acolors[i] != T_COLOR(&(wnew->screen), TEXT_BG))
- color_ok = True;
-#endif
- }
-
- /*
- * Check if we're trying to use color in a monochrome screen. Disable
- * color in that case, since that would make ANSI colors unusable. A 4-bit
- * or 8-bit display is usable, so we do not have to check for anything more
- * specific.
- */
- if (color_ok) {
- Display *display = wnew->screen.display;
- XVisualInfo myTemplate, *visInfoPtr;
- int numFound;
-
- myTemplate.visualid = XVisualIDFromVisual(DefaultVisual(display,
- XDefaultScreen(display)));
- visInfoPtr = XGetVisualInfo(display, (long) VisualIDMask,
- &myTemplate, &numFound);
- if (visInfoPtr == 0
- || numFound == 0
- || visInfoPtr->depth <= 1) {
- TRACE(("disabling color since screen is monochrome\n"));
- color_ok = False;
- } else {
- XFree(visInfoPtr);
- }
- }
-
- /* If none of the colors are anything other than the foreground or
- * background, we'll assume this isn't color, no matter what the colorMode
- * resource says. (There doesn't seem to be any good way to determine if
- * the resource lookup failed versus the user having misconfigured this).
- */
- if (!color_ok) {
- wnew->screen.colorMode = False;
- TRACE(("All colors are foreground or background: disable colorMode\n"));
- }
-#if OPT_EXT_COLORS
- wnew->num_ptrs = (OFF_BGRND + 1);
-#else
- wnew->num_ptrs = (OFF_COLOR + 1);
-#endif
- wnew->sgr_foreground = -1;
- wnew->sgr_background = -1;
- wnew->sgr_extended = 0;
-#endif /* OPT_ISO_COLORS */
-
- init_Tres(MOUSE_FG);
- init_Tres(MOUSE_BG);
- init_Tres(TEXT_CURSOR);
-#if OPT_HIGHLIGHT_COLOR
- init_Tres(HIGHLIGHT_BG);
-#endif
-
-#if OPT_TEK4014
- /*
- * The Tek4014 window has no separate resources for foreground, background
- * and cursor color. Since xterm always creates the vt100 widget first, we
- * can set the Tektronix colors here. That lets us use escape sequences to
- * set its dynamic colors and get consistent behavior whether or not the
- * window is displayed.
- */
- T_COLOR(&(wnew->screen), TEK_BG) = T_COLOR(&(wnew->screen), TEXT_BG);
- T_COLOR(&(wnew->screen), TEK_FG) = T_COLOR(&(wnew->screen), TEXT_FG);
- T_COLOR(&(wnew->screen), TEK_CURSOR) = T_COLOR(&(wnew->screen), TEXT_CURSOR);
-#endif
-
-#if OPT_DEC_CHRSET
- wnew->num_ptrs = (OFF_CSETS + 1);
-#endif
-
-#if OPT_WIDE_CHARS
- VTInitialize_locale(request);
-
-#if OPT_LUIT_PROG
- init_Bres(misc.callfilter);
- init_Bres(misc.use_encoding);
- init_Sres(misc.locale_str);
- init_Sres(misc.localefilter);
-#endif
-
-#if OPT_RENDERFONT
- init_Dres(misc.face_size);
- init_Sres(misc.face_name);
- init_Sres(misc.face_wide_name);
- init_Bres(misc.render_font);
- /* minor tweak to make debug traces consistent: */
- if (wnew->misc.render_font) {
- if (wnew->misc.face_name == 0) {
- wnew->misc.render_font = False;
- TRACE(("reset render_font since there is no face_name\n"));
- }
- }
-#endif
-
- init_Bres(screen.vt100_graphics);
- init_Ires(screen.utf8_mode);
- init_Bres(screen.wide_chars);
- init_Bres(misc.mk_width);
- init_Bres(misc.cjk_width);
- if (request->screen.utf8_mode) {
- TRACE(("setting wide_chars on\n"));
- wnew->screen.wide_chars = True;
- } else {
- TRACE(("setting utf8_mode to 0\n"));
- wnew->screen.utf8_mode = uFalse;
- }
- TRACE(("initialized UTF-8 mode to %d\n", wnew->screen.utf8_mode));
-
-#if OPT_MINI_LUIT
- if (request->screen.latin9_mode) {
- wnew->screen.latin9_mode = True;
- }
- if (request->screen.unicode_font) {
- wnew->screen.unicode_font = True;
- }
- TRACE(("initialized Latin9 mode to %d\n", wnew->screen.latin9_mode));
- TRACE(("initialized unicode_font to %d\n", wnew->screen.unicode_font));
-#endif
-
- if (wnew->screen.wide_chars != False)
- wnew->num_ptrs = (OFF_COM2H + 1);
-
- decode_wcwidth((wnew->misc.cjk_width ? 2 : 0)
- + (wnew->misc.mk_width ? 1 : 0)
- + 1);
-#endif /* OPT_WIDE_CHARS */
-
- init_Bres(screen.bold_mode);
- init_Bres(screen.underline);
-
- wnew->cur_foreground = 0;
- wnew->cur_background = 0;
-
- wnew->keyboard.flags = MODE_SRM;
- if (wnew->screen.backarrow_key)
- wnew->keyboard.flags |= MODE_DECBKM;
- TRACE(("initialized DECBKM %s\n",
- BtoS(wnew->keyboard.flags & MODE_DECBKM)));
-
- /* look for focus related events on the shell, because we need
- * to care about the shell's border being part of our focus.
- */
- XtAddEventHandler(my_parent, EnterWindowMask, False,
- HandleEnterWindow, (Opaque) NULL);
- XtAddEventHandler(my_parent, LeaveWindowMask, False,
- HandleLeaveWindow, (Opaque) NULL);
- XtAddEventHandler(my_parent, FocusChangeMask, False,
- HandleFocusChange, (Opaque) NULL);
- XtAddEventHandler((Widget) wnew, 0L, True,
- VTNonMaskableEvent, (Opaque) NULL);
- XtAddEventHandler((Widget) wnew, PropertyChangeMask, False,
- HandleBellPropertyChange, (Opaque) NULL);
-
-#if HANDLE_STRUCT_NOTIFY
-#if OPT_TOOLBAR
- wnew->VT100_TB_INFO(menu_bar) = request->VT100_TB_INFO(menu_bar);
- init_Ires(VT100_TB_INFO(menu_height));
-#else
- /* Flag icon name with "***" on window output when iconified.
- * Put in a handler that will tell us when we get Map/Unmap events.
- */
- if (zIconBeep)
-#endif
- XtAddEventHandler(my_parent, StructureNotifyMask, False,
- HandleStructNotify, (Opaque) 0);
-#endif /* HANDLE_STRUCT_NOTIFY */
-
- wnew->screen.bellInProgress = False;
-
- set_character_class(wnew->screen.charClass);
-
- /* create it, but don't realize it */
- ScrollBarOn(wnew, True, False);
-
- /* make sure that the resize gravity acceptable */
- if (wnew->misc.resizeGravity != NorthWestGravity &&
- wnew->misc.resizeGravity != SouthWestGravity) {
- Cardinal nparams = 1;
-
- XtAppWarningMsg(app_con, "rangeError", "resizeGravity", "XTermError",
- "unsupported resizeGravity resource value (%d)",
- (String *) & (wnew->misc.resizeGravity), &nparams);
- wnew->misc.resizeGravity = SouthWestGravity;
- }
-#ifndef NO_ACTIVE_ICON
- wnew->screen.whichVwin = &wnew->screen.fullVwin;
-#if OPT_TEK4014
- wnew->screen.whichTwin = &wnew->screen.fullTwin;
-#endif
-#endif /* NO_ACTIVE_ICON */
-
- if (wnew->screen.savelines < 0)
- wnew->screen.savelines = 0;
-
- init_Bres(screen.awaitInput);
-
- wnew->flags = 0;
- if (!wnew->screen.jumpscroll)
- wnew->flags |= SMOOTHSCROLL;
- if (wnew->misc.reverseWrap)
- wnew->flags |= REVERSEWRAP;
- if (wnew->misc.autoWrap)
- wnew->flags |= WRAPAROUND;
- if (wnew->misc.re_verse != wnew->misc.re_verse0)
- wnew->flags |= REVERSE_VIDEO;
- if (wnew->screen.c132)
- wnew->flags |= IN132COLUMNS;
-
- wnew->initflags = wnew->flags;
-
- init_Ires(keyboard.modify_cursor_keys);
-
- init_Ires(misc.appcursorDefault);
- if (wnew->misc.appcursorDefault)
- wnew->keyboard.flags |= MODE_DECCKM;
-
- init_Ires(misc.appkeypadDefault);
- if (wnew->misc.appkeypadDefault)
- wnew->keyboard.flags |= MODE_DECKPAM;
-
- return;
-}
-
-static void
-VTDestroy(Widget w)
-{
- XtFree((char *) (((XtermWidget) w)->screen.selection_data));
-}
-
-/*ARGSUSED*/
-static void
-VTRealize(Widget w,
- XtValueMask * valuemask,
- XSetWindowAttributes * values)
-{
- XtermWidget xw = (XtermWidget) w;
- TScreen *screen = &xw->screen;
-
- unsigned width, height;
- int xpos, ypos, pr;
- XSizeHints sizehints;
- Atom pid_atom;
-
- TRACE(("VTRealize\n"));
-
- TabReset(xw->tabs);
-
- screen->MenuFontName(fontMenu_fontdefault) = xw->misc.default_font.f_n;
- screen->fnt_norm = NULL;
- screen->fnt_bold = NULL;
-#if OPT_WIDE_CHARS
- screen->fnt_dwd = NULL;
- screen->fnt_dwdb = NULL;
-#endif
- if (!xtermLoadFont(xw,
- &(xw->misc.default_font),
- False, 0)) {
- if (XmuCompareISOLatin1(xw->misc.default_font.f_n, "fixed") != 0) {
- fprintf(stderr,
- "%s: unable to open font \"%s\", trying \"fixed\"....\n",
- xterm_name, xw->misc.default_font.f_n);
- (void) xtermLoadFont(xw,
- xtermFontName("fixed"),
- False, 0);
- screen->MenuFontName(fontMenu_fontdefault) = "fixed";
- }
- }
-
- /* really screwed if we couldn't open default font */
- if (!screen->fnt_norm) {
- fprintf(stderr, "%s: unable to locate a suitable font\n",
- xterm_name);
- Exit(1);
- }
-#if OPT_WIDE_CHARS
- if (xw->screen.utf8_mode) {
- TRACE(("check if this is a wide font, if not try again\n"));
- if (xtermLoadWideFonts(xw, False))
- SetVTFont(xw, screen->menu_font_number, TRUE, NULL);
- }
-#endif
-
- /* making cursor */
- if (!screen->pointer_cursor) {
- screen->pointer_cursor =
- make_colored_cursor(XC_xterm,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
- } else {
- recolor_cursor(screen->pointer_cursor,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
- }
-
- /* set defaults */
- xpos = 1;
- ypos = 1;
- width = 80;
- height = 24;
-
- TRACE(("parsing geo_metry %s\n", NonNull(xw->misc.geo_metry)));
- pr = XParseGeometry(xw->misc.geo_metry, &xpos, &ypos,
- &width, &height);
- TRACE(("... position %d,%d size %dx%d\n", ypos, xpos, height, width));
-
- set_max_col(screen, (int) (width - 1)); /* units in character cells */
- set_max_row(screen, (int) (height - 1)); /* units in character cells */
- xtermUpdateFontInfo(xw, False);
-
- width = screen->fullVwin.fullwidth;
- height = screen->fullVwin.fullheight;
-
- TRACE(("... border widget %d parent %d shell %d\n",
- BorderWidth(xw),
- BorderWidth(XtParent(xw)),
- BorderWidth(SHELL_OF(xw))));
-
- if ((pr & XValue) && (XNegative & pr)) {
- xpos += DisplayWidth(screen->display, DefaultScreen(screen->display))
- - width - (BorderWidth(XtParent(xw)) * 2);
- }
- if ((pr & YValue) && (YNegative & pr)) {
- ypos += DisplayHeight(screen->display, DefaultScreen(screen->display))
- - height - (BorderWidth(XtParent(xw)) * 2);
- }
-
- /* set up size hints for window manager; min 1 char by 1 char */
- bzero(&sizehints, sizeof(sizehints));
- xtermSizeHints(xw, &sizehints, (xw->misc.scrollbar
- ? (screen->scrollWidget->core.width
- + BorderWidth(screen->scrollWidget))
- : 0));
-
- sizehints.x = xpos;
- sizehints.y = ypos;
- if ((XValue & pr) || (YValue & pr)) {
- sizehints.flags |= USSize | USPosition;
- sizehints.flags |= PWinGravity;
- switch (pr & (XNegative | YNegative)) {
- case 0:
- sizehints.win_gravity = NorthWestGravity;
- break;
- case XNegative:
- sizehints.win_gravity = NorthEastGravity;
- break;
- case YNegative:
- sizehints.win_gravity = SouthWestGravity;
- break;
- default:
- sizehints.win_gravity = SouthEastGravity;
- break;
- }
- } else {
- /* set a default size, but do *not* set position */
- sizehints.flags |= PSize;
- }
- sizehints.height = sizehints.base_height
- + sizehints.height_inc * MaxRows(screen);
- sizehints.width = sizehints.base_width
- + sizehints.width_inc * MaxCols(screen);
-
- if ((WidthValue & pr) || (HeightValue & pr))
- sizehints.flags |= USSize;
- else
- sizehints.flags |= PSize;
-
- /*
- * Note that the size-hints are for the shell, while the resize-request
- * is for the vt100 widget. They are not the same size.
- */
- TRACE(("make resize request %dx%d\n", height, width));
- (void) XtMakeResizeRequest((Widget) xw,
- (Dimension) width, (Dimension) height,
- &xw->core.width, &xw->core.height);
- TRACE(("...made resize request %dx%d\n", xw->core.height, xw->core.width));
-
- /* XXX This is bogus. We are parsing geometries too late. This
- * is information that the shell widget ought to have before we get
- * realized, so that it can do the right thing.
- */
- if (sizehints.flags & USPosition)
- XMoveWindow(XtDisplay(xw), XtWindow(SHELL_OF(xw)),
- sizehints.x, sizehints.y);
-
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_HINTS(&sizehints);
- XSetWMNormalHints(XtDisplay(xw), XtWindow(SHELL_OF(xw)), &sizehints);
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_WM_HINTS(xw);
-
- if ((pid_atom = XInternAtom(XtDisplay(xw), "_NET_WM_PID", False)) != None) {
- /* XChangeProperty format 32 really is "long" */
- unsigned long pid_l = (unsigned long) getpid();
- TRACE(("Setting _NET_WM_PID property to %lu\n", pid_l));
- XChangeProperty(XtDisplay(xw), VShellWindow,
- pid_atom, XA_CARDINAL, 32, PropModeReplace,
- (unsigned char *) &pid_l, 1);
- }
-
- XFlush(XtDisplay(xw)); /* get it out to window manager */
-
- /* use ForgetGravity instead of SouthWestGravity because translating
- the Expose events for ConfigureNotifys is too hard */
- values->bit_gravity = ((xw->misc.resizeGravity == NorthWestGravity)
- ? NorthWestGravity
- : ForgetGravity);
- xw->screen.fullVwin.window = XtWindow(xw) =
- XCreateWindow(XtDisplay(xw), XtWindow(XtParent(xw)),
- xw->core.x, xw->core.y,
- xw->core.width, xw->core.height, BorderWidth(xw),
- (int) xw->core.depth,
- InputOutput, CopyFromParent,
- *valuemask | CWBitGravity, values);
- screen->event_mask = values->event_mask;
-
-#ifndef NO_ACTIVE_ICON
- if (xw->misc.active_icon && screen->fnt_icon) {
- int iconX = 0, iconY = 0;
- Widget shell = SHELL_OF(xw);
- unsigned long mask;
- XGCValues xgcv;
-
- TRACE(("Initializing active-icon\n"));
- XtVaGetValues(shell, XtNiconX, &iconX, XtNiconY, &iconY, (XtPointer) 0);
- xtermComputeFontInfo(xw, &(screen->iconVwin), screen->fnt_icon, 0);
-
- /* since only one client is permitted to select for Button
- * events, we have to let the window manager get 'em...
- */
- values->event_mask &= ~(ButtonPressMask | ButtonReleaseMask);
- values->border_pixel = xw->misc.icon_border_pixel;
-
- screen->iconVwin.window =
- XCreateWindow(XtDisplay(xw),
- RootWindowOfScreen(XtScreen(shell)),
- iconX, iconY,
- screen->iconVwin.fullwidth,
- screen->iconVwin.fullheight,
- xw->misc.icon_border_width,
- (int) xw->core.depth,
- InputOutput, CopyFromParent,
- *valuemask | CWBitGravity | CWBorderPixel,
- values);
- XtVaSetValues(shell,
- XtNiconWindow, screen->iconVwin.window,
- (XtPointer) 0);
- XtRegisterDrawable(XtDisplay(xw), screen->iconVwin.window, w);
-
- mask = (GCFont | GCForeground | GCBackground |
- GCGraphicsExposures | GCFunction);
-
- xgcv.font = screen->fnt_icon->fid;
- xgcv.foreground = T_COLOR(screen, TEXT_FG);
- xgcv.background = T_COLOR(screen, TEXT_BG);
- xgcv.graphics_exposures = True; /* default */
- xgcv.function = GXcopy;
-
- screen->iconVwin.normalGC =
- screen->iconVwin.normalboldGC =
- XtGetGC(shell, mask, &xgcv);
-
- xgcv.foreground = T_COLOR(screen, TEXT_BG);
- xgcv.background = T_COLOR(screen, TEXT_FG);
-
- screen->iconVwin.reverseGC =
- screen->iconVwin.reverseboldGC =
- XtGetGC(shell, mask, &xgcv);
-#if OPT_TOOLBAR
- /*
- * Toolbar is initialized before we get here. Enable the menu item
- * and set it properly.
- */
- set_sensitivity(mw,
- vtMenuEntries[vtMenu_activeicon].widget,
- True);
- update_activeicon();
-#endif
- } else {
- TRACE(("Disabled active-icon\n"));
- xw->misc.active_icon = False;
- }
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_I18N_SUPPORT && OPT_INPUT_METHOD
- VTInitI18N();
-#else
- xw->screen.xic = NULL;
-#endif
-#if OPT_NUM_LOCK
- VTInitModifiers();
-#endif
-
- set_cursor_gcs(screen);
-
- /* Reset variables used by ANSI emulation. */
-
- resetCharsets(screen);
-
- XDefineCursor(screen->display, VShellWindow, screen->pointer_cursor);
-
- set_cur_col(screen, 0);
- set_cur_row(screen, 0);
- set_max_col(screen, Width(screen) / screen->fullVwin.f_width - 1);
- set_max_row(screen, Height(screen) / screen->fullVwin.f_height - 1);
- set_tb_margins(screen, 0, screen->max_row);
-
- memset(screen->sc, 0, sizeof(screen->sc));
-
- /* Mark screen buffer as unallocated. We wait until the run loop so
- that the child process does not fork and exec with all the dynamic
- memory it will never use. If we were to do it here, the
- swap space for new process would be huge for huge savelines. */
-#if OPT_TEK4014
- if (!tekWidget) /* if not called after fork */
-#endif
- screen->visbuf = screen->allbuf = NULL;
-
- screen->do_wrap = 0;
- screen->scrolls = screen->incopy = 0;
- xtermSetCursorBox(screen);
-
- screen->savedlines = 0;
-
- if (xw->misc.scrollbar) {
- screen->fullVwin.sb_info.width = 0;
- ScrollBarOn(xw, False, True);
- }
- CursorSave(xw);
- return;
-}
-
-#if OPT_I18N_SUPPORT && OPT_INPUT_METHOD
-
-/* limit this feature to recent XFree86 since X11R6.x core dumps */
-#if defined(XtSpecificationRelease) && XtSpecificationRelease >= 6 && defined(X_HAVE_UTF8_STRING)
-#define USE_XIM_INSTANTIATE_CB
-
-static void
-xim_instantiate_cb(Display * display,
- XPointer client_data GCC_UNUSED,
- XPointer call_data GCC_UNUSED)
-{
- if (display != XtDisplay(term))
- return;
-
- VTInitI18N();
-}
-
-static void
-xim_destroy_cb(XIM im GCC_UNUSED,
- XPointer client_data GCC_UNUSED,
- XPointer call_data GCC_UNUSED)
-{
- term->screen.xic = NULL;
-
- XRegisterIMInstantiateCallback(XtDisplay(term), NULL, NULL, NULL,
- xim_instantiate_cb, NULL);
-}
-#endif /* X11R6+ */
-
-static void
-xim_real_init(void)
-{
- unsigned i, j;
- char *p, *s, *t, *ns, *end, buf[32];
- XIMStyles *xim_styles;
- XIMStyle input_style = 0;
- Bool found;
- static struct {
- char *name;
- unsigned long code;
- } known_style[] = {
- {
- "OverTheSpot", (XIMPreeditPosition | XIMStatusNothing)
- },
- {
- "OffTheSpot", (XIMPreeditArea | XIMStatusArea)
- },
- {
- "Root", (XIMPreeditNothing | XIMStatusNothing)
- },
- };
-
- term->screen.xic = NULL;
-
- if (term->misc.cannot_im) {
- return;
- }
-
- if (!term->misc.input_method || !*term->misc.input_method) {
- if ((p = XSetLocaleModifiers("")) != NULL && *p)
- term->screen.xim = XOpenIM(XtDisplay(term), NULL, NULL, NULL);
- } else {
- s = term->misc.input_method;
- i = 5 + strlen(s);
- t = (char *) MyStackAlloc(i, buf);
- if (t == NULL)
- SysError(ERROR_VINIT);
-
- for (ns = s; ns && *s;) {
- while (*s && isspace(CharOf(*s)))
- s++;
- if (!*s)
- break;
- if ((ns = end = strchr(s, ',')) == 0)
- end = s + strlen(s);
- while ((end != s) && isspace(CharOf(end[-1])))
- end--;
-
- if (end != s) {
- strcpy(t, "@im=");
- strncat(t, s, (unsigned) (end - s));
-
- if ((p = XSetLocaleModifiers(t)) != 0 && *p
- && (term->screen.xim = XOpenIM(XtDisplay(term),
- NULL,
- NULL,
- NULL)) != 0)
- break;
-
- }
- s = ns + 1;
- }
- MyStackFree(t, buf);
- }
-
- if (term->screen.xim == NULL
- && (p = XSetLocaleModifiers("@im=none")) != NULL
- && *p) {
- term->screen.xim = XOpenIM(XtDisplay(term), NULL, NULL, NULL);
- }
-
- if (!term->screen.xim) {
- fprintf(stderr, "Failed to open input method\n");
- return;
- }
- TRACE(("VTInitI18N opened input method\n"));
-
- if (XGetIMValues(term->screen.xim, XNQueryInputStyle, &xim_styles, NULL)
- || !xim_styles
- || !xim_styles->count_styles) {
- fprintf(stderr, "input method doesn't support any style\n");
- XCloseIM(term->screen.xim);
- term->misc.cannot_im = True;
- return;
- }
-
- found = False;
- for (s = term->misc.preedit_type; s && !found;) {
- while (*s && isspace(CharOf(*s)))
- s++;
- if (!*s)
- break;
- if ((ns = end = strchr(s, ',')) != 0)
- ns++;
- else
- end = s + strlen(s);
- while ((end != s) && isspace(CharOf(end[-1])))
- end--;
-
- if (end != s) { /* just in case we have a spurious comma */
- TRACE(("looking for style '%.*s'\n", end - s, s));
- for (i = 0; i < XtNumber(known_style); i++) {
- if ((int) strlen(known_style[i].name) == (end - s)
- && !strncmp(s, known_style[i].name, (unsigned) (end - s))) {
- input_style = known_style[i].code;
- for (j = 0; j < xim_styles->count_styles; j++) {
- if (input_style == xim_styles->supported_styles[j]) {
- found = True;
- break;
- }
- }
- if (found)
- break;
- }
- }
- }
-
- s = ns;
- }
- XFree(xim_styles);
-
- if (!found) {
- fprintf(stderr,
- "input method doesn't support my preedit type (%s)\n",
- term->misc.preedit_type);
- XCloseIM(term->screen.xim);
- term->misc.cannot_im = True;
- return;
- }
-
- /*
- * Check for styles we do not yet support.
- */
- TRACE(("input_style %#lx\n", input_style));
- if (input_style == (XIMPreeditArea | XIMStatusArea)) {
- fprintf(stderr,
- "This program doesn't support the 'OffTheSpot' preedit type\n");
- XCloseIM(term->screen.xim);
- term->misc.cannot_im = True;
- return;
- }
-
- /*
- * For XIMPreeditPosition (or OverTheSpot), XIM client has to
- * prepare a font.
- * The font has to be locale-dependent XFontSet, whereas
- * XTerm use Unicode font. This leads a problem that the
- * same font cannot be used for XIM preedit.
- */
- if (input_style != (XIMPreeditNothing | XIMStatusNothing)) {
- char **missing_charset_list;
- int missing_charset_count;
- char *def_string;
- XVaNestedList p_list;
- XPoint spot =
- {0, 0};
- XFontStruct **fonts;
- char **font_name_list;
-
- term->screen.fs = XCreateFontSet(XtDisplay(term),
- term->misc.f_x,
- &missing_charset_list,
- &missing_charset_count,
- &def_string);
- if (term->screen.fs == NULL) {
- fprintf(stderr, "Preparation of font set "
- "\"%s\" for XIM failed.\n", term->misc.f_x);
- term->screen.fs = XCreateFontSet(XtDisplay(term),
- DEFXIMFONT,
- &missing_charset_list,
- &missing_charset_count,
- &def_string);
- }
- if (term->screen.fs == NULL) {
- fprintf(stderr, "Preparation of default font set "
- "\"%s\" for XIM failed.\n", DEFXIMFONT);
- XCloseIM(term->screen.xim);
- term->misc.cannot_im = True;
- return;
- }
- (void) XExtentsOfFontSet(term->screen.fs);
- j = XFontsOfFontSet(term->screen.fs, &fonts, &font_name_list);
- for (i = 0, term->screen.fs_ascent = 0; i < j; i++) {
- if (term->screen.fs_ascent < (*fonts)->ascent)
- term->screen.fs_ascent = (*fonts)->ascent;
- }
- p_list = XVaCreateNestedList(0,
- XNSpotLocation, &spot,
- XNFontSet, term->screen.fs,
- NULL);
- term->screen.xic = XCreateIC(term->screen.xim,
- XNInputStyle, input_style,
- XNClientWindow, XtWindow(term),
- XNFocusWindow, XtWindow(term),
- XNPreeditAttributes, p_list,
- NULL);
- } else {
- term->screen.xic = XCreateIC(term->screen.xim, XNInputStyle, input_style,
- XNClientWindow, XtWindow(term),
- XNFocusWindow, XtWindow(term),
- NULL);
- }
-
- if (!term->screen.xic) {
- fprintf(stderr, "Failed to create input context\n");
- XCloseIM(term->screen.xim);
- }
-#if defined(USE_XIM_INSTANTIATE_CB)
- else {
- XIMCallback destroy_cb;
-
- destroy_cb.callback = xim_destroy_cb;
- destroy_cb.client_data = NULL;
- if (XSetIMValues(term->screen.xim, XNDestroyCallback, &destroy_cb, NULL))
- fprintf(stderr, "Could not set destroy callback to IM\n");
- }
-#endif
-
- return;
-}
-
-static void
-VTInitI18N(void)
-{
- if (term->misc.open_im) {
- xim_real_init();
-
-#if defined(USE_XIM_INSTANTIATE_CB)
- if (term->screen.xic == NULL && !term->misc.cannot_im) {
- sleep(3);
- XRegisterIMInstantiateCallback(XtDisplay(term), NULL, NULL, NULL,
- xim_instantiate_cb, NULL);
- }
-#endif
- }
-}
-#endif /* OPT_I18N_SUPPORT && OPT_INPUT_METHOD */
-
-static Boolean
-VTSetValues(Widget cur,
- Widget request GCC_UNUSED,
- Widget wnew,
- ArgList args GCC_UNUSED,
- Cardinal *num_args GCC_UNUSED)
-{
- XtermWidget curvt = (XtermWidget) cur;
- XtermWidget newvt = (XtermWidget) wnew;
- Bool refresh_needed = False;
- Bool fonts_redone = False;
-
- if ((T_COLOR(&(curvt->screen), TEXT_BG) !=
- T_COLOR(&(newvt->screen), TEXT_BG)) ||
- (T_COLOR(&(curvt->screen), TEXT_FG) !=
- T_COLOR(&(newvt->screen), TEXT_FG)) ||
- (curvt->screen.MenuFontName(curvt->screen.menu_font_number) !=
- newvt->screen.MenuFontName(newvt->screen.menu_font_number)) ||
- (curvt->misc.default_font.f_n != newvt->misc.default_font.f_n)) {
- if (curvt->misc.default_font.f_n != newvt->misc.default_font.f_n)
- newvt->screen.MenuFontName(fontMenu_fontdefault) = newvt->misc.default_font.f_n;
- if (xtermLoadFont(newvt,
- xtermFontName(newvt->screen.MenuFontName(curvt->screen.menu_font_number)),
- True, newvt->screen.menu_font_number)) {
- /* resizing does the redisplay, so don't ask for it here */
- refresh_needed = True;
- fonts_redone = True;
- } else if (curvt->misc.default_font.f_n != newvt->misc.default_font.f_n)
- newvt->screen.MenuFontName(fontMenu_fontdefault) = curvt->misc.default_font.f_n;
- }
- if (!fonts_redone
- && (T_COLOR(&(curvt->screen), TEXT_CURSOR) !=
- T_COLOR(&(newvt->screen), TEXT_CURSOR))) {
- set_cursor_gcs(&newvt->screen);
- refresh_needed = True;
- }
- if (curvt->misc.re_verse != newvt->misc.re_verse) {
- newvt->flags ^= REVERSE_VIDEO;
- ReverseVideo(newvt);
- newvt->misc.re_verse = !newvt->misc.re_verse; /* ReverseVideo toggles */
- refresh_needed = True;
- }
- if ((T_COLOR(&(curvt->screen), MOUSE_FG) !=
- T_COLOR(&(newvt->screen), MOUSE_FG)) ||
- (T_COLOR(&(curvt->screen), MOUSE_BG) !=
- T_COLOR(&(newvt->screen), MOUSE_BG))) {
- recolor_cursor(newvt->screen.pointer_cursor,
- T_COLOR(&(newvt->screen), MOUSE_FG),
- T_COLOR(&(newvt->screen), MOUSE_BG));
- refresh_needed = True;
- }
- if (curvt->misc.scrollbar != newvt->misc.scrollbar) {
- ToggleScrollBar(newvt);
- }
-
- return refresh_needed;
-}
-
-#define setGC(value) set_at = __LINE__, currentGC = value
-
-#define OutsideSelection(screen,row,col) \
- ((row) > (screen)->endHRow || \
- ((row) == (screen)->endHRow && \
- (col) >= (screen)->endHCol) || \
- (row) < (screen)->startHRow || \
- ((row) == (screen)->startHRow && \
- (col) < (screen)->startHCol))
-
-/*
- * Shows cursor at new cursor position in screen.
- */
-void
-ShowCursor(void)
-{
- TScreen *screen = &term->screen;
- int x, y;
- Char clo;
- unsigned flags;
- unsigned fg_bg = 0;
- GC currentGC;
- int set_at;
- Bool in_selection;
- Bool reversed;
- Pixel fg_pix;
- Pixel bg_pix;
- Pixel tmp;
-#if OPT_HIGHLIGHT_COLOR
- Pixel hi_pix = T_COLOR(screen, HIGHLIGHT_BG);
-#endif
-#if OPT_WIDE_CHARS
- Char chi = 0;
- Char c1h = 0;
- Char c1l = 0;
- Char c2h = 0;
- Char c2l = 0;
- int base;
-#endif
- int cursor_col;
-
- if (screen->cursor_state == BLINKED_OFF)
- return;
-
- if (eventMode != NORMAL)
- return;
-
- if (screen->cur_row - screen->topline > screen->max_row)
- return;
-
- screen->cursor_row = screen->cur_row;
- cursor_col = screen->cursor_col = screen->cur_col;
- screen->cursor_moved = False;
-
-#ifndef NO_ACTIVE_ICON
- if (IsIcon(screen)) {
- screen->cursor_state = ON;
- return;
- }
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_WIDE_CHARS
- base =
-#endif
- clo = SCRN_BUF_CHARS(screen, screen->cursor_row)[cursor_col];
-
- if_OPT_WIDE_CHARS(screen, {
- int my_col;
- chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[cursor_col];
- if (clo == HIDDEN_LO && chi == HIDDEN_HI && cursor_col > 0) {
- /* if cursor points to non-initial part of wide character,
- * back it up
- */
- --cursor_col;
- clo = SCRN_BUF_CHARS(screen, screen->cursor_row)[cursor_col];
- chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[cursor_col];
- }
- my_col = cursor_col;
- base = (chi << 8) | clo;
- if (iswide(base))
- my_col += 1;
- c1l = SCRN_BUF_COM1L(screen, screen->cursor_row)[my_col];
- c1h = SCRN_BUF_COM1H(screen, screen->cursor_row)[my_col];
- c2l = SCRN_BUF_COM2L(screen, screen->cursor_row)[my_col];
- c2h = SCRN_BUF_COM2H(screen, screen->cursor_row)[my_col];
- });
-
- flags = SCRN_BUF_ATTRS(screen, screen->cursor_row)[cursor_col];
-
- if (clo == 0
-#if OPT_WIDE_CHARS
- && chi == 0
-#endif
- ) {
- clo = ' ';
- }
-
- /*
- * If the cursor happens to be on blanks, and the foreground color is set
- * but not the background, do not treat it as a colored cell.
- */
-#if OPT_ISO_COLORS
- if ((flags & TERM_COLOR_FLAGS(term)) == BG_COLOR
-#if OPT_WIDE_CHARS
- && chi == 0
-#endif
- && clo == ' ') {
- flags &= ~TERM_COLOR_FLAGS(term);
- }
-#endif
-
- /*
- * Compare the current cell to the last set of colors used for the
- * cursor and update the GC's if needed.
- */
- if_OPT_EXT_COLORS(screen, {
- fg_bg = (SCRN_BUF_FGRND(screen, screen->cursor_row)[cursor_col] << 8)
- | (SCRN_BUF_BGRND(screen, screen->cursor_row)[cursor_col]);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- fg_bg = SCRN_BUF_COLOR(screen, screen->cursor_row)[cursor_col];
- });
- fg_pix = getXtermForeground(flags, extract_fg(fg_bg, flags));
- bg_pix = getXtermBackground(flags, extract_bg(fg_bg, flags));
-
- if (OutsideSelection(screen, screen->cur_row, screen->cur_col))
- in_selection = False;
- else
- in_selection = True;
-
- reversed = ReverseOrHilite(screen, flags, in_selection);
-
- /* This is like updatedXtermGC(), except that we have to worry about
- * whether the window has focus, since in that case we want just an
- * outline for the cursor.
- */
- if (screen->select || screen->always_highlight) {
- if (reversed) { /* text is reverse video */
- if (screen->cursorGC) {
- setGC(screen->cursorGC);
- } else {
- if (flags & BOLDATTR(screen)) {
- setGC(NormalBoldGC(screen));
- } else {
- setGC(NormalGC(screen));
- }
- }
-#if OPT_HIGHLIGHT_COLOR
- if (hi_pix != T_COLOR(screen, TEXT_FG)
- && hi_pix != fg_pix
- && hi_pix != bg_pix
- && hi_pix != term->dft_foreground) {
- bg_pix = fg_pix;
- fg_pix = hi_pix;
- }
-#endif
- EXCHANGE(fg_pix, bg_pix, tmp);
- } else { /* normal video */
- if (screen->reversecursorGC) {
- setGC(screen->reversecursorGC);
- } else {
- if (flags & BOLDATTR(screen)) {
- setGC(ReverseBoldGC(screen));
- } else {
- setGC(ReverseGC(screen));
- }
- }
- }
- if (T_COLOR(screen, TEXT_CURSOR) == term->dft_foreground) {
- XSetBackground(screen->display, currentGC, fg_pix);
- }
- XSetForeground(screen->display, currentGC, bg_pix);
- } else { /* not selected */
- if (reversed) { /* text is reverse video */
-#if OPT_HIGHLIGHT_COLOR
- if (hi_pix != T_COLOR(screen, TEXT_FG)
- && hi_pix != fg_pix
- && hi_pix != bg_pix
- && hi_pix != term->dft_foreground) {
- bg_pix = fg_pix;
- fg_pix = hi_pix;
- }
-#endif
- setGC(ReverseGC(screen));
- XSetForeground(screen->display, currentGC, bg_pix);
- XSetBackground(screen->display, currentGC, fg_pix);
- } else { /* normal video */
- setGC(NormalGC(screen));
- XSetForeground(screen->display, currentGC, fg_pix);
- XSetBackground(screen->display, currentGC, bg_pix);
- }
- }
-
- if (screen->cursor_busy == 0
- && (screen->cursor_state != ON || screen->cursor_GC != set_at)) {
-
- screen->cursor_GC = set_at;
- TRACE(("ShowCursor calling drawXtermText cur(%d,%d)\n",
- screen->cur_row, screen->cur_col));
-
- drawXtermText(screen, flags & DRAWX_MASK, currentGC,
- x = CurCursorX(screen, screen->cur_row, cursor_col),
- y = CursorY(screen, screen->cur_row),
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&clo, &chi), 1, 0);
-
-#if OPT_WIDE_CHARS
- if (c1l || c1h) {
- drawXtermText(screen, (flags & DRAWX_MASK) | NOBACKGROUND,
- currentGC, x, y,
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&c1l, &c1h), 1, iswide(base));
-
- if (c2l || c2h)
- drawXtermText(screen, (flags & DRAWX_MASK) | NOBACKGROUND,
- currentGC, x, y,
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&c2l, &c2h), 1, iswide(base));
- }
-#endif
-
- if (!screen->select && !screen->always_highlight) {
- screen->box->x = x;
- screen->box->y = y;
- XDrawLines(screen->display, VWindow(screen),
- screen->cursoroutlineGC ? screen->cursoroutlineGC
- : currentGC,
- screen->box, NBOX, CoordModePrevious);
- }
- }
- screen->cursor_state = ON;
-}
-
-/*
- * hide cursor at previous cursor position in screen.
- */
-void
-HideCursor(void)
-{
- TScreen *screen = &term->screen;
- GC currentGC;
- unsigned flags;
- unsigned fg_bg = 0;
- int x, y;
- Char clo;
- Bool in_selection;
-#if OPT_WIDE_CHARS
- Char chi = 0;
- Char c1h = 0;
- Char c1l = 0;
- Char c2h = 0;
- Char c2l = 0;
- int base;
-#endif
- int cursor_col;
-
- if (screen->cursor_state == OFF) /* FIXME */
- return;
- if (screen->cursor_row - screen->topline > screen->max_row)
- return;
-
- cursor_col = screen->cursor_col;
-
-#ifndef NO_ACTIVE_ICON
- if (IsIcon(screen)) {
- screen->cursor_state = OFF;
- return;
- }
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_WIDE_CHARS
- base =
-#endif
- clo = SCRN_BUF_CHARS(screen, screen->cursor_row)[cursor_col];
- flags = SCRN_BUF_ATTRS(screen, screen->cursor_row)[cursor_col];
-
- if_OPT_WIDE_CHARS(screen, {
- int my_col;
- chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[cursor_col];
- if (clo == HIDDEN_LO && chi == HIDDEN_HI) {
- /* if cursor points to non-initial part of wide character,
- * back it up
- */
- --cursor_col;
- clo = SCRN_BUF_CHARS(screen, screen->cursor_row)[cursor_col];
- chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[cursor_col];
- }
- my_col = cursor_col;
- base = (chi << 8) | clo;
- if (iswide(base))
- my_col += 1;
- c1l = SCRN_BUF_COM1L(screen, screen->cursor_row)[my_col];
- c1h = SCRN_BUF_COM1H(screen, screen->cursor_row)[my_col];
- c2l = SCRN_BUF_COM2L(screen, screen->cursor_row)[my_col];
- c2h = SCRN_BUF_COM2H(screen, screen->cursor_row)[my_col];
- });
-
- if_OPT_EXT_COLORS(screen, {
- fg_bg = (SCRN_BUF_FGRND(screen, screen->cursor_row)[cursor_col] << 8)
- | (SCRN_BUF_BGRND(screen, screen->cursor_row)[cursor_col]);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- fg_bg = SCRN_BUF_COLOR(screen, screen->cursor_row)[cursor_col];
- });
-
- if (OutsideSelection(screen, screen->cursor_row, screen->cursor_col))
- in_selection = False;
- else
- in_selection = True;
-
- currentGC = updatedXtermGC(screen, flags, fg_bg, in_selection);
-
- if (clo == 0
-#if OPT_WIDE_CHARS
- && chi == 0
-#endif
- ) {
- clo = ' ';
- }
-
- TRACE(("HideCursor calling drawXtermText cur(%d,%d)\n",
- screen->cursor_row, screen->cursor_col));
- drawXtermText(screen, flags & DRAWX_MASK, currentGC,
- x = CurCursorX(screen, screen->cursor_row, cursor_col),
- y = CursorY(screen, screen->cursor_row),
- curXtermChrSet(screen->cursor_row),
- PAIRED_CHARS(&clo, &chi), 1, 0);
-
-#if OPT_WIDE_CHARS
- if (c1l || c1h) {
- drawXtermText(screen, (flags & DRAWX_MASK) | NOBACKGROUND,
- currentGC, x, y,
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&c1l, &c1h), 1, iswide(base));
-
- if (c2l || c2h)
- drawXtermText(screen, (flags & DRAWX_MASK) | NOBACKGROUND,
- currentGC, x, y,
- curXtermChrSet(screen->cur_row),
- PAIRED_CHARS(&c2l, &c2h), 1, iswide(base));
- }
-#endif
- screen->cursor_state = OFF;
- resetXtermGC(screen, flags, in_selection);
-}
-
-#if OPT_BLINK_CURS || OPT_BLINK_TEXT
-static void
-StartBlinking(TScreen * screen)
-{
- if (screen->blink_timer == 0) {
- unsigned long interval = (screen->cursor_state == ON ?
- screen->blink_on : screen->blink_off);
- if (interval == 0) /* wow! */
- interval = 1; /* let's humor him anyway */
- screen->blink_timer = XtAppAddTimeOut(app_con,
- interval,
- HandleBlinking,
- screen);
- }
-}
-
-static void
-StopBlinking(TScreen * screen)
-{
- if (screen->blink_timer)
- XtRemoveTimeOut(screen->blink_timer);
- screen->blink_timer = 0;
-}
-
-#if OPT_BLINK_TEXT
-static Bool
-ScrnHasBlinking(TScreen * screen, int row)
-{
- Char *attrs = SCRN_BUF_ATTRS(screen, row);
- int col;
- Bool result = False;
-
- for (col = 0; col < MaxCols(screen); ++col) {
- if (attrs[col] & BLINK) {
- result = True;
- break;
- }
- }
- return result;
-}
-#endif
-
-/*
- * Blink the cursor by alternately showing/hiding cursor. We leave the timer
- * running all the time (even though that's a little inefficient) to make the
- * logic simple.
- */
-static void
-HandleBlinking(XtPointer closure, XtIntervalId * id GCC_UNUSED)
-{
- TScreen *screen = (TScreen *) closure;
- Bool resume = False;
-
- screen->blink_timer = 0;
- screen->blink_state = !screen->blink_state;
-
-#if OPT_BLINK_CURS
- if (DoStartBlinking(screen)) {
- if (screen->cursor_state == ON) {
- if (screen->select || screen->always_highlight) {
- HideCursor();
- if (screen->cursor_state == OFF)
- screen->cursor_state = BLINKED_OFF;
- }
- } else if (screen->cursor_state == BLINKED_OFF) {
- screen->cursor_state = OFF;
- ShowCursor();
- if (screen->cursor_state == OFF)
- screen->cursor_state = BLINKED_OFF;
- }
- resume = True;
- }
-#endif
-
-#if OPT_BLINK_TEXT
- /*
- * Inspect the line on the current screen to see if any have the BLINK flag
- * associated with them. Prune off any that have had the corresponding
- * cells reset. If any are left, repaint those lines with ScrnRefresh().
- */
- if (!(screen->blink_as_bold)) {
- int row;
- int first_row = screen->max_row;
- int last_row = -1;
-
- for (row = screen->max_row; row >= 0; row--) {
- if (ScrnTstBlinked(screen, row)) {
- if (ScrnHasBlinking(screen, row)) {
- resume = True;
- if (row > last_row)
- last_row = row;
- if (row < first_row)
- first_row = row;
- } else {
- ScrnClrBlinked(screen, row);
- }
- }
- }
- /*
- * FIXME: this could be a little more efficient, e.g,. by limiting the
- * columns which are updated.
- */
- if (first_row <= last_row) {
- ScrnRefresh(screen,
- first_row,
- 0,
- last_row + 1 - first_row,
- MaxCols(screen),
- True);
- }
- }
-#endif
-
- /*
- * If either the cursor or text is blinking, restart the timer.
- */
- if (resume)
- StartBlinking(screen);
-}
-#endif /* OPT_BLINK_CURS || OPT_BLINK_TEXT */
-
-/*
- * Implement soft or hard (full) reset of the VTxxx emulation. There are a
- * couple of differences from real DEC VTxxx terminals (to avoid breaking
- * applications which have come to rely on xterm doing this):
- *
- * + autowrap mode should be reset (instead it's reset to the resource
- * default).
- * + the popup menu offers a choice of resetting the savedLines, or not.
- * (but the control sequence does this anyway).
- */
-void
-VTReset(Bool full, Bool saved)
-{
- TScreen *screen = &term->screen;
-
- if (!XtIsRealized((Widget) term)) {
- Bell(XkbBI_MinorError, 0);
- return;
- }
-
- if (saved) {
- screen->savedlines = 0;
- ScrollBarDrawThumb(screen->scrollWidget);
- }
-
- /* make cursor visible */
- screen->cursor_set = ON;
-
- /* reset scrolling region */
- set_tb_margins(screen, 0, screen->max_row);
-
- bitclr(&term->flags, ORIGIN);
-
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Colors();
- });
-
- /* Reset character-sets to initial state */
- resetCharsets(screen);
-
- /* Reset DECSCA */
- bitclr(&term->flags, PROTECTED);
- screen->protected_mode = OFF_PROTECT;
-
- if (full) { /* RIS */
- if (screen->bellOnReset)
- Bell(XkbBI_TerminalBell, 0);
-
- /* reset the mouse mode */
- screen->send_mouse_pos = MOUSE_OFF;
- waitingForTrackInfo = False;
- eventMode = NORMAL;
-
- TabReset(term->tabs);
- term->keyboard.flags = MODE_SRM;
-#if OPT_INITIAL_ERASE
- if (term->keyboard.reset_DECBKM == 1)
- term->keyboard.flags |= MODE_DECBKM;
- else if (term->keyboard.reset_DECBKM == 2)
-#endif
- if (term->screen.backarrow_key)
- term->keyboard.flags |= MODE_DECBKM;
- TRACE(("full reset DECBKM %s\n",
- BtoS(term->keyboard.flags & MODE_DECBKM)));
- update_appcursor();
- update_appkeypad();
- update_decbkm();
- show_8bit_control(False);
- reset_decudk();
-
- FromAlternate(screen);
- ClearScreen(screen);
- screen->cursor_state = OFF;
- if (term->flags & REVERSE_VIDEO)
- ReverseVideo(term);
-
- term->flags = term->initflags;
- update_reversevideo();
- update_autowrap();
- update_reversewrap();
- update_autolinefeed();
-
- screen->jumpscroll = !(term->flags & SMOOTHSCROLL);
- update_jumpscroll();
-
- if (screen->c132 && (term->flags & IN132COLUMNS)) {
- Dimension reqWidth = (80 * FontWidth(screen)
- + 2 * screen->border + ScrollbarWidth(screen));
- Dimension reqHeight = (FontHeight(screen)
- * MaxRows(screen) + 2 * screen->border);
- Dimension replyWidth;
- Dimension replyHeight;
-
- TRACE(("Making resize-request to restore 80-columns %dx%d\n",
- reqHeight, reqWidth));
- XtMakeResizeRequest((Widget) term,
- reqWidth,
- reqHeight,
- &replyWidth, &replyHeight);
- TRACE(("...result %dx%d\n", replyHeight, replyWidth));
- repairSizeHints();
- XSync(screen->display, False); /* synchronize */
- if (XtAppPending(app_con))
- xevents();
- }
-
- CursorSet(screen, 0, 0, term->flags);
- CursorSave(term);
- } else { /* DECSTR */
- /*
- * There's a tiny difference, to accommodate usage of xterm.
- * We reset autowrap to the resource values rather than turning
- * it off.
- */
- term->keyboard.flags &= ~(MODE_DECCKM | MODE_KAM | MODE_DECKPAM);
- bitcpy(&term->flags, term->initflags, WRAPAROUND | REVERSEWRAP);
- bitclr(&term->flags, INSERT | INVERSE | BOLD | BLINK | UNDERLINE | INVISIBLE);
- if_OPT_ISO_COLORS(screen, {
- reset_SGR_Colors();
- });
- update_appcursor();
- update_autowrap();
- update_reversewrap();
-
- CursorSave(term);
- screen->sc[screen->alternate != False].row =
- screen->sc[screen->alternate != False].col = 0;
- }
- longjmp(vtjmpbuf, 1); /* force ground state in parser */
-}
-
-/*
- * set_character_class - takes a string of the form
- *
- * low[-high]:val[,low[-high]:val[...]]
- *
- * and sets the indicated ranges to the indicated values.
- */
-static int
-set_character_class(char *s)
-{
- int i; /* iterator, index into s */
- int len; /* length of s */
- int acc; /* accumulator */
- int low, high; /* bounds of range [0..127] */
- int base; /* 8, 10, 16 (octal, decimal, hex) */
- int numbers; /* count of numbers per range */
- int digits; /* count of digits in a number */
- static char *errfmt = "%s: %s in range string \"%s\" (position %d)\n";
-
- if (!s || !s[0])
- return -1;
-
- base = 10; /* in case we ever add octal, hex */
- low = high = -1; /* out of range */
-
- for (i = 0, len = strlen(s), acc = 0, numbers = digits = 0;
- i < len; i++) {
- Char c = s[i];
-
- if (isspace(c)) {
- continue;
- } else if (isdigit(c)) {
- acc = acc * base + (c - '0');
- digits++;
- continue;
- } else if (c == '-') {
- low = acc;
- acc = 0;
- if (digits == 0) {
- fprintf(stderr, errfmt, ProgramName, "missing number", s, i);
- return (-1);
- }
- digits = 0;
- numbers++;
- continue;
- } else if (c == ':') {
- if (numbers == 0)
- low = acc;
- else if (numbers == 1)
- high = acc;
- else {
- fprintf(stderr, errfmt, ProgramName, "too many numbers",
- s, i);
- return (-1);
- }
- digits = 0;
- numbers++;
- acc = 0;
- continue;
- } else if (c == ',') {
- /*
- * now, process it
- */
-
- if (high < 0) {
- high = low;
- numbers++;
- }
- if (numbers != 2) {
- fprintf(stderr, errfmt, ProgramName, "bad value number",
- s, i);
- } else if (SetCharacterClassRange(low, high, acc) != 0) {
- fprintf(stderr, errfmt, ProgramName, "bad range", s, i);
- }
-
- low = high = -1;
- acc = 0;
- digits = 0;
- numbers = 0;
- continue;
- } else {
- fprintf(stderr, errfmt, ProgramName, "bad character", s, i);
- return (-1);
- } /* end if else if ... else */
-
- }
-
- if (low < 0 && high < 0)
- return (0);
-
- /*
- * now, process it
- */
-
- if (high < 0)
- high = low;
- if (numbers < 1 || numbers > 2) {
- fprintf(stderr, errfmt, ProgramName, "bad value number", s, i);
- } else if (SetCharacterClassRange(low, high, acc) != 0) {
- fprintf(stderr, errfmt, ProgramName, "bad range", s, i);
- }
-
- return (0);
-}
-
-/* ARGSUSED */
-static void
-HandleKeymapChange(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- static XtTranslations keymap, original;
- static XtResource key_resources[] =
- {
- {XtNtranslations, XtCTranslations, XtRTranslationTable,
- sizeof(XtTranslations), 0, XtRTranslationTable, (XtPointer) NULL}
- };
- char mapName[1000];
- char mapClass[1000];
- char *pmapName;
- char *pmapClass;
- size_t len;
-
- if (*param_count != 1)
- return;
-
- if (original == NULL)
- original = w->core.tm.translations;
-
- if (strcmp(params[0], "None") == 0) {
- XtOverrideTranslations(w, original);
- return;
- }
-
- len = strlen(params[0]) + 7;
-
- pmapName = (char *) MyStackAlloc(len, mapName);
- pmapClass = (char *) MyStackAlloc(len, mapClass);
- if (pmapName == NULL
- || pmapClass == NULL)
- SysError(ERROR_KMMALLOC1);
-
- (void) sprintf(pmapName, "%sKeymap", params[0]);
- (void) strcpy(pmapClass, pmapName);
- if (islower(CharOf(pmapClass[0])))
- pmapClass[0] = toupper(CharOf(pmapClass[0]));
- XtGetSubresources(w, (XtPointer) &keymap, pmapName, pmapClass,
- key_resources, (Cardinal) 1, NULL, (Cardinal) 0);
- if (keymap != NULL)
- XtOverrideTranslations(w, keymap);
-
- MyStackFree(pmapName, mapName);
- MyStackFree(pmapClass, mapClass);
-}
-
-/* ARGSUSED */
-static void
-HandleBell(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params, /* [0] = volume */
- Cardinal *param_count) /* 0 or 1 */
-{
- int percent = (*param_count) ? atoi(params[0]) : 0;
-
- Bell(XkbBI_TerminalBell, percent);
-}
-
-/* ARGSUSED */
-static void
-HandleVisualBell(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- VisualBell();
-}
-
-/* ARGSUSED */
-static void
-HandleIgnore(Widget w,
- XEvent * event,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- /* do nothing, but check for funny escape sequences */
- (void) SendMousePosition(w, event);
-}
-
-/* ARGSUSED */
-static void
-DoSetSelectedFont(Widget w GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- Atom * selection GCC_UNUSED,
- Atom * type,
- XtPointer value,
- unsigned long *length GCC_UNUSED,
- int *format)
-{
- char *val = (char *) value;
- int len;
- if (*type != XA_STRING || *format != 8) {
- Bell(XkbBI_MinorError, 0);
- return;
- }
- len = strlen(val);
- if (len > 0) {
- if (val[len - 1] == '\n')
- val[len - 1] = '\0';
- /* Do some sanity checking to avoid sending a long selection
- back to the server in an OpenFont that is unlikely to succeed.
- XLFD allows up to 255 characters and no control characters;
- we are a little more liberal here. */
- if (len > 1000 || strchr(val, '\n'))
- return;
- if (!xtermLoadFont(term,
- xtermFontName(val),
- True,
- fontMenu_fontsel))
- Bell(XkbBI_MinorError, 0);
- }
-}
-
-void
-FindFontSelection(char *atom_name, Bool justprobe)
-{
- static AtomPtr *atoms;
- static int atomCount = 0;
- AtomPtr *pAtom;
- int a;
- Atom target;
-
- if (!atom_name)
- atom_name = "PRIMARY";
-
- for (pAtom = atoms, a = atomCount; a; a--, pAtom++) {
- if (strcmp(atom_name, XmuNameOfAtom(*pAtom)) == 0)
- break;
- }
- if (!a) {
- atoms = (AtomPtr *) XtRealloc((char *) atoms,
- sizeof(AtomPtr) * (atomCount + 1));
- *(pAtom = &atoms[atomCount++]) = XmuMakeAtom(atom_name);
- }
-
- target = XmuInternAtom(XtDisplay(term), *pAtom);
- if (justprobe) {
- term->screen.MenuFontName(fontMenu_fontsel) =
- XGetSelectionOwner(XtDisplay(term), target) ? _Font_Selected_ : 0;
- } else {
- XtGetSelectionValue((Widget) term, target, XA_STRING,
- DoSetSelectedFont, NULL,
- XtLastTimestampProcessed(XtDisplay(term)));
- }
- return;
-}
-
-void
-set_cursor_gcs(TScreen * screen)
-{
- XGCValues xgcv;
- XtGCMask mask;
- Pixel cc = T_COLOR(screen, TEXT_CURSOR);
- Pixel fg = T_COLOR(screen, TEXT_FG);
- Pixel bg = T_COLOR(screen, TEXT_BG);
- GC new_cursorGC = NULL;
- GC new_cursorFillGC = NULL;
- GC new_reversecursorGC = NULL;
- GC new_cursoroutlineGC = NULL;
-
- /*
- * Let's see, there are three things that have "color":
- *
- * background
- * text
- * cursorblock
- *
- * And, there are four situation when drawing a cursor, if we decide
- * that we like have a solid block of cursor color with the letter
- * that it is highlighting shown in the background color to make it
- * stand out:
- *
- * selected window, normal video - background on cursor
- * selected window, reverse video - foreground on cursor
- * unselected window, normal video - foreground on background
- * unselected window, reverse video - background on foreground
- *
- * Since the last two are really just normalGC and reverseGC, we only
- * need two new GC's. Under monochrome, we get the same effect as
- * above by setting cursor color to foreground.
- */
-
-#if OPT_ISO_COLORS
- /*
- * If we're using ANSI colors, the functions manipulating the SGR code will
- * use the same GC's. To avoid having the cursor change color, we use the
- * Xlib calls rather than the Xt calls.
- *
- * Use the colorMode value to determine which we'll do (the VWindow may
- * not be set before the widget's realized, so it's tested separately).
- */
- if (screen->colorMode) {
- if (VWindow(screen) != 0 && (cc != bg) && (cc != fg)) {
- /* we might have a colored foreground/background later */
- xgcv.font = screen->fnt_norm->fid;
- mask = (GCForeground | GCBackground | GCFont);
- xgcv.foreground = fg;
- xgcv.background = cc;
- new_cursorGC = XCreateGC(screen->display, VWindow(screen), mask, &xgcv);
-
- xgcv.foreground = cc;
- xgcv.background = fg;
- new_cursorFillGC =
- XCreateGC(screen->display, VWindow(screen), mask, &xgcv);
-
- if (screen->always_highlight) {
- new_reversecursorGC = (GC) 0;
- new_cursoroutlineGC = (GC) 0;
- } else {
- xgcv.foreground = bg;
- xgcv.background = cc;
- new_reversecursorGC =
- XCreateGC(screen->display, VWindow(screen), mask, &xgcv);
- xgcv.foreground = cc;
- xgcv.background = bg;
- new_cursoroutlineGC =
- XCreateGC(screen->display, VWindow(screen), mask, &xgcv);
- }
- }
- } else
-#endif
- if (cc != fg && cc != bg) {
- /* we have a colored cursor */
- xgcv.font = screen->fnt_norm->fid;
- mask = (GCForeground | GCBackground | GCFont);
-
- xgcv.foreground = fg;
- xgcv.background = cc;
- new_cursorGC = XtGetGC((Widget) term, mask, &xgcv);
-
- xgcv.foreground = cc;
- xgcv.background = fg;
- new_cursorFillGC = XtGetGC((Widget) term, mask, &xgcv);
-
- if (screen->always_highlight) {
- new_reversecursorGC = (GC) 0;
- new_cursoroutlineGC = (GC) 0;
- } else {
- xgcv.foreground = bg;
- xgcv.background = cc;
- new_reversecursorGC = XtGetGC((Widget) term, mask, &xgcv);
- xgcv.foreground = cc;
- xgcv.background = bg;
- new_cursoroutlineGC = XtGetGC((Widget) term, mask, &xgcv);
- }
- }
-#if OPT_ISO_COLORS
- if (screen->colorMode) {
- if (screen->cursorGC)
- XFreeGC(screen->display, screen->cursorGC);
- if (screen->fillCursorGC)
- XFreeGC(screen->display, screen->fillCursorGC);
- if (screen->reversecursorGC)
- XFreeGC(screen->display, screen->reversecursorGC);
- if (screen->cursoroutlineGC)
- XFreeGC(screen->display, screen->cursoroutlineGC);
- } else
-#endif
- {
- if (screen->cursorGC)
- XtReleaseGC((Widget) term, screen->cursorGC);
- if (screen->fillCursorGC)
- XtReleaseGC((Widget) term, screen->fillCursorGC);
- if (screen->reversecursorGC)
- XtReleaseGC((Widget) term, screen->reversecursorGC);
- if (screen->cursoroutlineGC)
- XtReleaseGC((Widget) term, screen->cursoroutlineGC);
- }
-
- screen->cursorGC = new_cursorGC;
- screen->fillCursorGC = new_cursorFillGC;
- screen->reversecursorGC = new_reversecursorGC;
- screen->cursoroutlineGC = new_cursoroutlineGC;
-}
diff --git a/nx-X11/programs/xterm/charsets.c b/nx-X11/programs/xterm/charsets.c
deleted file mode 100644
index 528175aeb..000000000
--- a/nx-X11/programs/xterm/charsets.c
+++ /dev/null
@@ -1,461 +0,0 @@
-/* $XTermId: charsets.c,v 1.32 2005/01/14 01:50:02 tom Exp $ */
-
-/*
- * $XFree86: xc/programs/xterm/charsets.c,v 1.12 2005/01/14 01:50:02 dickey Exp $
- */
-
-/************************************************************
-
-Copyright 1998-2003,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-********************************************************/
-
-#include <xterm.h>
-#include <data.h>
-#include <fontutils.h>
-
-#include <X11/keysym.h>
-
-/*
- * This module performs translation as needed to support the DEC VT220 national
- * replacement character sets. We assume that xterm's font is based on the ISO
- * 8859-1 (Latin 1) character set, which is almost the same as the DEC
- * multinational character set. Glyph positions 0-31 have to be the DEC
- * graphic characters, though.
- *
- * References:
- * "VT220 Programmer Pocket Guide" EK-VT220-HR-002 (2nd ed., 1984), which
- * contains character charts for the national character sets.
- * "VT330/VT340 Programmer Reference Manual Volume 1: Text Programming"
- * EK-VT3XX-TP-001 (1st ed, 1987), which contains a table (2-1)
- * listing the glyphs which are mapped from the multinational
- * character set to the national character set.
- *
- * The latter reference, though easier to read, has a few errors and omissions.
- */
-
-/*
- * Translate an input keysym to the corresponding NRC keysym.
- */
-unsigned xtermCharSetIn(unsigned code, int charset)
-{
- if (code >= 128 && code < 256) {
- switch (charset) {
- case 'A': /* United Kingdom set (or Latin 1) */
- if (code == XK_sterling)
- code = 0x23;
- code &= 0x7f;
- break;
-
-#if OPT_XMC_GLITCH
- case '?':
-#endif
- case '1': /* Alternate Character ROM standard characters */
- case '2': /* Alternate Character ROM special graphics */
- case 'B': /* ASCII set */
- break;
-
- case '0': /* special graphics (line drawing) */
- break;
-
- case '4': /* Dutch */
- switch (code) {
- case XK_sterling: code = 0x23; break;
- case XK_threequarters: code = 0x40; break;
- case XK_ydiaeresis: code = 0x5b; break;
- case XK_onehalf: code = 0x5c; break;
- /* N/A case XK_bar: code = 0x5d; break; */
- case XK_diaeresis: code = 0x7b; break;
- /* N/A case XK_f: code = 0x7c; break; */
- case XK_onequarter: code = 0x7d; break;
- case XK_acute: code = 0x7e; break;
- }
- break;
-
- case 'C':
- case '5': /* Finnish */
- switch (code) {
- case XK_Adiaeresis: code = 0x5b; break;
- case XK_Odiaeresis: code = 0x5c; break;
- case XK_Aring: code = 0x5d; break;
- case XK_Udiaeresis: code = 0x5e; break;
- case XK_eacute: code = 0x60; break;
- case XK_adiaeresis: code = 0x7b; break;
- case XK_odiaeresis: code = 0x7c; break;
- case XK_aring: code = 0x7d; break;
- case XK_udiaeresis: code = 0x7e; break;
- }
- break;
-
- case 'R': /* French */
- switch (code) {
- case XK_sterling: code = 0x23; break;
- case XK_agrave: code = 0x40; break;
- case XK_degree: code = 0x5b; break;
- case XK_ccedilla: code = 0x5c; break;
- case XK_section: code = 0x5d; break;
- case XK_eacute: code = 0x7b; break;
- case XK_ugrave: code = 0x7c; break;
- case XK_egrave: code = 0x7d; break;
- case XK_diaeresis: code = 0x7e; break;
- }
- break;
-
- case 'Q': /* French Canadian */
- switch (code) {
- case XK_agrave: code = 0x40; break;
- case XK_acircumflex: code = 0x5b; break;
- case XK_ccedilla: code = 0x5c; break;
- case XK_ecircumflex: code = 0x5d; break;
- case XK_icircumflex: code = 0x5e; break;
- case XK_ocircumflex: code = 0x60; break;
- case XK_eacute: code = 0x7b; break;
- case XK_ugrave: code = 0x7c; break;
- case XK_egrave: code = 0x7d; break;
- case XK_ucircumflex: code = 0x7e; break;
- }
- break;
-
- case 'K': /* German */
- switch (code) {
- case XK_section: code = 0x40; break;
- case XK_Adiaeresis: code = 0x5b; break;
- case XK_Odiaeresis: code = 0x5c; break;
- case XK_Udiaeresis: code = 0x5d; break;
- case XK_adiaeresis: code = 0x7b; break;
- case XK_odiaeresis: code = 0x7c; break;
- case XK_udiaeresis: code = 0x7d; break;
- case XK_ssharp: code = 0x7e; break;
- }
- break;
-
- case 'Y': /* Italian */
- switch (code) {
- case XK_sterling: code = 0x23; break;
- case XK_section: code = 0x40; break;
- case XK_degree: code = 0x5b; break;
- case XK_ccedilla: code = 0x5c; break;
- case XK_eacute: code = 0x5d; break;
- case XK_ugrave: code = 0x60; break;
- case XK_agrave: code = 0x7b; break;
- case XK_ograve: code = 0x7c; break;
- case XK_egrave: code = 0x7d; break;
- case XK_igrave: code = 0x7e; break;
- }
- break;
-
- case 'E':
- case '6': /* Norwegian/Danish */
- switch (code) {
- case XK_Adiaeresis: code = 0x40; break;
- case XK_AE: code = 0x5b; break;
- case XK_Ooblique: code = 0x5c; break;
- case XK_Aring: code = 0x5d; break;
- case XK_Udiaeresis: code = 0x5e; break;
- case XK_adiaeresis: code = 0x60; break;
- case XK_ae: code = 0x7b; break;
- case XK_oslash: code = 0x7c; break;
- case XK_aring: code = 0x7d; break;
- case XK_udiaeresis: code = 0x7e; break;
- }
- break;
-
- case 'Z': /* Spanish */
- switch (code) {
- case XK_sterling: code = 0x23; break;
- case XK_section: code = 0x40; break;
- case XK_exclamdown: code = 0x5b; break;
- case XK_Ntilde: code = 0x5c; break;
- case XK_questiondown: code = 0x5d; break;
- case XK_degree: code = 0x7b; break;
- case XK_ntilde: code = 0x7c; break;
- case XK_ccedilla: code = 0x7d; break;
- }
- break;
-
- case 'H':
- case '7': /* Swedish */
- switch (code) {
- case XK_Eacute: code = 0x40; break;
- case XK_Adiaeresis: code = 0x5b; break;
- case XK_Odiaeresis: code = 0x5c; break;
- case XK_Aring: code = 0x5d; break;
- case XK_Udiaeresis: code = 0x5e; break;
- case XK_eacute: code = 0x60; break;
- case XK_adiaeresis: code = 0x7b; break;
- case XK_odiaeresis: code = 0x7c; break;
- case XK_aring: code = 0x7d; break;
- case XK_udiaeresis: code = 0x7e; break;
- }
- break;
-
- case '=': /* Swiss */
- switch (code) {
- case XK_ugrave: code = 0x23; break;
- case XK_agrave: code = 0x40; break;
- case XK_eacute: code = 0x5b; break;
- case XK_ccedilla: code = 0x5c; break;
- case XK_ecircumflex: code = 0x5d; break;
- case XK_icircumflex: code = 0x5e; break;
- case XK_egrave: code = 0x5f; break;
- case XK_ocircumflex: code = 0x60; break;
- case XK_adiaeresis: code = 0x7b; break;
- case XK_odiaeresis: code = 0x7c; break;
- case XK_udiaeresis: code = 0x7d; break;
- case XK_ucircumflex: code = 0x7e; break;
- }
- break;
-
- default: /* any character sets we don't recognize*/
- break;
- }
- code &= 0x7f; /* NRC in any case is 7-bit */
- }
- return code;
-}
-
-/*
- * Translate a string to the display form. This assumes the font has the
- * DEC graphic characters in cells 0-31, and otherwise is ISO-8859-1.
- */
-int xtermCharSetOut(IChar *buf, IChar *ptr, int leftset)
-{
- IChar *s;
- register TScreen *screen = &term->screen;
- int count = 0;
- int rightset = screen->gsets[(int)(screen->curgr)];
-
- TRACE(("CHARSET GL=%c(G%d) GR=%c(G%d) SS%d:%s\n",
- leftset, screen->curgl,
- rightset, screen->curgr,
- screen->curss,
- visibleIChar(buf, (unsigned)(ptr - buf))));
-
- for (s = buf; s < ptr; ++s) {
- int eight = CharOf(E2A(*s));
- int seven = eight & 0x7f;
- int cs = (eight >= 128) ? rightset : leftset;
- int chr = eight;
-
- count++;
- switch (cs) {
- case 'A': /* United Kingdom set (or Latin 1) */
- if ((term->flags & NATIONAL)
- || (screen->vtXX_level <= 1)) {
- if (chr == 0x23)
- chr = XPOUND; /* UK pound sign*/
- } else {
- chr = (seven | 0x80);
- }
- break;
-
-#if OPT_XMC_GLITCH
- case '?':
-#endif
- case '1': /* Alternate Character ROM standard characters */
- case '2': /* Alternate Character ROM special graphics */
- case 'B': /* ASCII set */
- break;
-
- case '0': /* special graphics (line drawing) */
- if (seven > 0x5f && seven <= 0x7e) {
-#if OPT_WIDE_CHARS
- if (screen->utf8_mode)
- chr = dec2ucs((unsigned)(seven - 0x5f));
- else
-#endif
- chr = seven - 0x5f;
- } else {
- chr = seven;
- }
- break;
-
- case '4': /* Dutch */
- switch (chr = seven) {
- case 0x23: chr = XK_sterling; break;
- case 0x40: chr = XK_threequarters; break;
- case 0x5b: chr = XK_ydiaeresis; break;
- case 0x5c: chr = XK_onehalf; break;
- case 0x5d: chr = XK_bar; break;
- case 0x7b: chr = XK_diaeresis; break;
- case 0x7c: chr = XK_f; break;
- case 0x7d: chr = XK_onequarter; break;
- case 0x7e: chr = XK_acute; break;
- }
- break;
-
- case 'C':
- case '5': /* Finnish */
- switch (chr = seven) {
- case 0x5b: chr = XK_Adiaeresis; break;
- case 0x5c: chr = XK_Odiaeresis; break;
- case 0x5d: chr = XK_Aring; break;
- case 0x5e: chr = XK_Udiaeresis; break;
- case 0x60: chr = XK_eacute; break;
- case 0x7b: chr = XK_adiaeresis; break;
- case 0x7c: chr = XK_odiaeresis; break;
- case 0x7d: chr = XK_aring; break;
- case 0x7e: chr = XK_udiaeresis; break;
- }
- break;
-
- case 'R': /* French */
- switch (chr = seven) {
- case 0x23: chr = XK_sterling; break;
- case 0x40: chr = XK_agrave; break;
- case 0x5b: chr = XK_degree; break;
- case 0x5c: chr = XK_ccedilla; break;
- case 0x5d: chr = XK_section; break;
- case 0x7b: chr = XK_eacute; break;
- case 0x7c: chr = XK_ugrave; break;
- case 0x7d: chr = XK_egrave; break;
- case 0x7e: chr = XK_diaeresis; break;
- }
- break;
-
- case 'Q': /* French Canadian */
- switch (chr = seven) {
- case 0x40: chr = XK_agrave; break;
- case 0x5b: chr = XK_acircumflex; break;
- case 0x5c: chr = XK_ccedilla; break;
- case 0x5d: chr = XK_ecircumflex; break;
- case 0x5e: chr = XK_icircumflex; break;
- case 0x60: chr = XK_ocircumflex; break;
- case 0x7b: chr = XK_eacute; break;
- case 0x7c: chr = XK_ugrave; break;
- case 0x7d: chr = XK_egrave; break;
- case 0x7e: chr = XK_ucircumflex; break;
- }
- break;
-
- case 'K': /* German */
- switch (chr = seven) {
- case 0x40: chr = XK_section; break;
- case 0x5b: chr = XK_Adiaeresis; break;
- case 0x5c: chr = XK_Odiaeresis; break;
- case 0x5d: chr = XK_Udiaeresis; break;
- case 0x7b: chr = XK_adiaeresis; break;
- case 0x7c: chr = XK_odiaeresis; break;
- case 0x7d: chr = XK_udiaeresis; break;
- case 0x7e: chr = XK_ssharp; break;
- }
- break;
-
- case 'Y': /* Italian */
- switch (chr = seven) {
- case 0x23: chr = XK_sterling; break;
- case 0x40: chr = XK_section; break;
- case 0x5b: chr = XK_degree; break;
- case 0x5c: chr = XK_ccedilla; break;
- case 0x5d: chr = XK_eacute; break;
- case 0x60: chr = XK_ugrave; break;
- case 0x7b: chr = XK_agrave; break;
- case 0x7c: chr = XK_ograve; break;
- case 0x7d: chr = XK_egrave; break;
- case 0x7e: chr = XK_igrave; break;
- }
- break;
-
- case 'E':
- case '6': /* Norwegian/Danish */
- switch (chr = seven) {
- case 0x40: chr = XK_Adiaeresis; break;
- case 0x5b: chr = XK_AE; break;
- case 0x5c: chr = XK_Ooblique; break;
- case 0x5d: chr = XK_Aring; break;
- case 0x5e: chr = XK_Udiaeresis; break;
- case 0x60: chr = XK_adiaeresis; break;
- case 0x7b: chr = XK_ae; break;
- case 0x7c: chr = XK_oslash; break;
- case 0x7d: chr = XK_aring; break;
- case 0x7e: chr = XK_udiaeresis; break;
- }
- break;
-
- case 'Z': /* Spanish */
- switch (chr = seven) {
- case 0x23: chr = XK_sterling; break;
- case 0x40: chr = XK_section; break;
- case 0x5b: chr = XK_exclamdown; break;
- case 0x5c: chr = XK_Ntilde; break;
- case 0x5d: chr = XK_questiondown; break;
- case 0x7b: chr = XK_degree; break;
- case 0x7c: chr = XK_ntilde; break;
- case 0x7d: chr = XK_ccedilla; break;
- }
- break;
-
- case 'H':
- case '7': /* Swedish */
- switch (chr = seven) {
- case 0x40: chr = XK_Eacute; break;
- case 0x5b: chr = XK_Adiaeresis; break;
- case 0x5c: chr = XK_Odiaeresis; break;
- case 0x5d: chr = XK_Aring; break;
- case 0x5e: chr = XK_Udiaeresis; break;
- case 0x60: chr = XK_eacute; break;
- case 0x7b: chr = XK_adiaeresis; break;
- case 0x7c: chr = XK_odiaeresis; break;
- case 0x7d: chr = XK_aring; break;
- case 0x7e: chr = XK_udiaeresis; break;
- }
- break;
-
- case '=': /* Swiss */
- switch (chr = seven) {
- case 0x23: chr = XK_ugrave; break;
- case 0x40: chr = XK_agrave; break;
- case 0x5b: chr = XK_eacute; break;
- case 0x5c: chr = XK_ccedilla; break;
- case 0x5d: chr = XK_ecircumflex; break;
- case 0x5e: chr = XK_icircumflex; break;
- case 0x5f: chr = XK_egrave; break;
- case 0x60: chr = XK_ocircumflex; break;
- case 0x7b: chr = XK_adiaeresis; break;
- case 0x7c: chr = XK_odiaeresis; break;
- case 0x7d: chr = XK_udiaeresis; break;
- case 0x7e: chr = XK_ucircumflex; break;
- }
- break;
-
- default: /* any character sets we don't recognize*/
- count --;
- break;
- }
- /*
- * The state machine already treated DEL as a nonprinting and
- * nonspacing character. If we have DEL now, simply render
- * it as a blank.
- */
- if (chr == 0x7f)
- chr = ' ';
- *s = A2E(chr);
- }
- return count;
-}
diff --git a/nx-X11/programs/xterm/config.guess b/nx-X11/programs/xterm/config.guess
deleted file mode 100644
index 6d71f752f..000000000
--- a/nx-X11/programs/xterm/config.guess
+++ /dev/null
@@ -1,1499 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-timestamp='2005-05-27'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- * )
- break ;;
- esac
-done
-
-if test $# != 0; then
- echo "$me: too many arguments$help" >&2
- exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- armeb) machine=armeb-unknown ;;
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
- ;;
- *)
- os=netbsd
- ;;
- esac
- # The OS release
- # Debian GNU/NetBSD machines have a different userland, and
- # thus, need a distinct triplet. However, they do not need
- # kernel version information, so it can be replaced with a
- # suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
- Debian*)
- release='-gnu'
- ;;
- *)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- ;;
- esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit ;;
- amd64:OpenBSD:*:*)
- echo x86_64-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- cats:OpenBSD:*:*)
- echo arm-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- luna88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- macppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- mvmeppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- sgi:OpenBSD:*:*)
- echo mips64-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- sun3:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- *:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- *:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit ;;
- macppc:MirBSD:*:*)
- echo powerppc-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- *:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- alpha:OSF1:*:*)
- case $UNAME_RELEASE in
- *4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
- # According to Compaq, /usr/sbin/psrinfo has been available on
- # OSF/1 and Tru64 systems produced since 1995. I hope that
- # covers most systems running today. This code pipes the CPU
- # types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
- "EV4 (21064)")
- UNAME_MACHINE="alpha" ;;
- "EV4.5 (21064)")
- UNAME_MACHINE="alpha" ;;
- "LCA4 (21066/21068)")
- UNAME_MACHINE="alpha" ;;
- "EV5 (21164)")
- UNAME_MACHINE="alphaev5" ;;
- "EV5.6 (21164A)")
- UNAME_MACHINE="alphaev56" ;;
- "EV5.6 (21164PC)")
- UNAME_MACHINE="alphapca56" ;;
- "EV5.7 (21164PC)")
- UNAME_MACHINE="alphapca57" ;;
- "EV6 (21264)")
- UNAME_MACHINE="alphaev6" ;;
- "EV6.7 (21264A)")
- UNAME_MACHINE="alphaev67" ;;
- "EV6.8CB (21264C)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8AL (21264B)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8CX (21264D)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.9A (21264/EV69A)")
- UNAME_MACHINE="alphaev69" ;;
- "EV7 (21364)")
- UNAME_MACHINE="alphaev7" ;;
- "EV7.9 (21364A)")
- UNAME_MACHINE="alphaev79" ;;
- esac
- # A Pn.n version is a patched version.
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
- exit ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
- *:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
- *:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
- DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
- m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
- exit ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
- exit ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
- Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
- then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
- ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
- then
- echo "$SYSTEM_NAME"
- else
- echo rs6000-ibm-aix3.2.5
- fi
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit ;;
- *:AIX:*:[45])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
- 9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- test -z "$HP_ARCH" && HP_ARCH=hppa
- fi ;;
- esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
- then
- # avoid double evaluation of $set_cc_for_build
- test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
-
- # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
- # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
- # generating 64-bit code. GNU and HP use different nomenclature:
- #
- # $ CC_FOR_BUILD=cc ./config.guess
- # => hppa2.0w-hp-hpux11.23
- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
- # => hppa64-hp-hpux11.23
-
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep __LP64__ >/dev/null
- then
- HP_ARCH="hppa2.0w"
- else
- HP_ARCH="hppa64"
- fi
- fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit ;;
- ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
- exit ;;
- 3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
- i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- *:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- 5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit ;;
- i*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
- exit ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit ;;
- x86:Interix*:[34]*)
- echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
- exit ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit ;;
- amd64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- *:GNU:*:*)
- # the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
- exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
- arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- cris:Linux:*:*)
- echo cris-axis-linux-gnu
- exit ;;
- crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
- exit ;;
- frv:Linux:*:*)
- echo frv-unknown-linux-gnu
- exit ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips64
- #undef mips64el
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
- esac
- exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
- exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
- exit ;;
- sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
- exit ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #ifdef __INTEL_COMPILER
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- test x"${LIBC}" != x && {
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
- exit
- }
- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
- ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
- # sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
- i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit ;;
- i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
- exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit ;;
- i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
- *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
- (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit ;;
- mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
- M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
- M68*:*:R3V[5678]*:*)
- test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
- i*86:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
- exit ;;
- *:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit ;;
- news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
- exit ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- *86) UNAME_PROCESSOR=i686 ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit ;;
- *:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
- BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
- DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit ;;
- *:Plan9:*:*)
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
- if test "$cputype" = "386"; then
- UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
- *:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
- KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
- *:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
- *:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
- SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
- exit ;;
- *:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- *:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
- esac ;;
- *:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
- i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
- exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- c34*)
- echo c34-convex-bsd
- exit ;;
- c38*)
- echo c38-convex-bsd
- exit ;;
- c4*)
- echo c4-convex-bsd
- exit ;;
- esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
-and
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/nx-X11/programs/xterm/config.sub b/nx-X11/programs/xterm/config.sub
deleted file mode 100644
index 8b2c57a6e..000000000
--- a/nx-X11/programs/xterm/config.sub
+++ /dev/null
@@ -1,1577 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-timestamp='2005-06-02'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help"
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo $1
- exit ;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
- kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
- os=
- basic_machine=$1
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
- | bfin \
- | c4x | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
- | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64vr | mips64vrel \
- | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | ms1 \
- | msp430 \
- | ns16k | ns32k \
- | openrisc | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
- | pyramid \
- | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b \
- | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
- | v850 | v850e \
- | we32k \
- | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
- | z8k)
- basic_machine=$basic_machine-unknown
- ;;
- m32c)
- basic_machine=$basic_machine-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12)
- # Motorola 68HC11/12.
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
- | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | ms1-* \
- | msp430-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
- | pyramid-* \
- | romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tron-* \
- | v850-* | v850e-* | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
- | xstormy16-* | xtensa-* \
- | ymp-* \
- | z8k-*)
- ;;
- m32c-*)
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16c)
- basic_machine=cr16c-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- mingw32)
- basic_machine=i386-pc
- os=-mingw32
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- or32 | or32-*)
- basic_machine=or32-unknown
- os=-coff
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
- ;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
- ;;
- sei)
- basic_machine=mips-sei
- os=-seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- mmix)
- basic_machine=mmix-knuth
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparc | sparcv8 | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* | -skyos*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto-qnx*)
- ;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux-dietlibc)
- os=-linux-dietlibc
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -os400*)
- os=-os400
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -atheos*)
- os=-atheos
- ;;
- -syllable*)
- os=-syllable
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -nova*)
- os=-rtmk-nova
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -tpf*)
- os=-tpf
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -aros*)
- os=-aros
- ;;
- -kaos*)
- os=-kaos
- ;;
- -zvmoe)
- os=-zvmoe
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- c4x-* | tic4x-*)
- os=-coff
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- or32-*)
- os=-coff
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-ibm)
- os=-aix
- ;;
- *-knuth)
- os=-mmixware
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -os400*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -tpf*)
- vendor=ibm
- ;;
- -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
- -vos*)
- vendor=stratus
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/nx-X11/programs/xterm/configure b/nx-X11/programs/xterm/configure
deleted file mode 100644
index 7cdc6da4f..000000000
--- a/nx-X11/programs/xterm/configure
+++ /dev/null
@@ -1,11548 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by Autoconf 2.52.20030208.
-#
-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-# Free Software Foundation, Inc.
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
-fi
-
-# Name of the executable.
-as_me=`echo "$0" |sed 's,.*[\\/],,'`
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- # We could just check for DJGPP; but this test a) works b) is more generic
- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
- if test -f conf$$.exe; then
- # Don't use ln at all; we don't have any links
- as_ln_s='cp -p'
- else
- as_ln_s='ln -s'
- fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-as_executable_p="test -f"
-
-# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-# NLS nuisances.
-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" $as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-exec 6>&1
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-cross_compiling=no
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Maximum number of lines to put in a shell here document.
-# This variable seems obsolete. It should probably be removed, and
-# only ac_max_sed_lines should be used.
-: ${ac_max_here_lines=38}
-
-ac_unique_file="charproc.c"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#if HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# if HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-#endif
-#if HAVE_STRING_H
-# if !STDC_HEADERS && HAVE_MEMORY_H
-# include <memory.h>
-# endif
-# include <string.h>
-#endif
-#if HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#else
-# if HAVE_STDINT_H
-# include <stdint.h>
-# endif
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
-
-ac_prev=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_option in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- eval "enable_$ac_feature=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- case $ac_option in
- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_$ac_feature='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case $ac_option in
- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
- *) ac_optarg=yes ;;
- esac
- eval "with_$ac_package='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package | sed 's/-/_/g'`
- eval "with_$ac_package=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; }
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { (exit 1); exit 1; }; }
- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
- eval "$ac_envvar='$ac_optarg'"
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { echo "$as_me: error: missing argument to $ac_option" >&2
- { (exit 1); exit 1; }; }
-fi
-
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
- *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# Be sure to have absolute paths.
-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
- localstatedir libdir includedir oldincludedir infodir mandir
-do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) ;;
- *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: should be removed in autoconf 3.0.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2
- { (exit 1); exit 1; }; }
- else
- { echo "$as_me: error: cannot find sources in $srcdir" >&2
- { (exit 1); exit 1; }; }
- fi
-fi
-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
-ac_env_build_alias_set=${build_alias+set}
-ac_env_build_alias_value=$build_alias
-ac_cv_env_build_alias_set=${build_alias+set}
-ac_cv_env_build_alias_value=$build_alias
-ac_env_host_alias_set=${host_alias+set}
-ac_env_host_alias_value=$host_alias
-ac_cv_env_host_alias_set=${host_alias+set}
-ac_cv_env_host_alias_value=$host_alias
-ac_env_target_alias_set=${target_alias+set}
-ac_env_target_alias_value=$target_alias
-ac_cv_env_target_alias_set=${target_alias+set}
-ac_cv_env_target_alias_value=$target_alias
-ac_env_CC_set=${CC+set}
-ac_env_CC_value=$CC
-ac_cv_env_CC_set=${CC+set}
-ac_cv_env_CC_value=$CC
-ac_env_CFLAGS_set=${CFLAGS+set}
-ac_env_CFLAGS_value=$CFLAGS
-ac_cv_env_CFLAGS_set=${CFLAGS+set}
-ac_cv_env_CFLAGS_value=$CFLAGS
-ac_env_LDFLAGS_set=${LDFLAGS+set}
-ac_env_LDFLAGS_value=$LDFLAGS
-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
-ac_cv_env_LDFLAGS_value=$LDFLAGS
-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_env_CPPFLAGS_value=$CPPFLAGS
-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
-ac_env_CPP_set=${CPP+set}
-ac_env_CPP_value=$CPP
-ac_cv_env_CPP_set=${CPP+set}
-ac_cv_env_CPP_value=$CPP
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<EOF
-\`configure' configures this package to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-EOF
-
- cat <<EOF
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --infodir=DIR info documentation [PREFIX/info]
- --mandir=DIR man documentation [PREFIX/man]
-EOF
-
- cat <<\EOF
-
-Program names:
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-
-X features:
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
-
-System types:
- --build=BUILD configure for building on BUILD [guessed]
- --host=HOST build programs to run on HOST [BUILD]
-EOF
-fi
-
-if test -n "$ac_init_help"; then
-
- cat <<\EOF
-
-Optional Features:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
-
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
-
-Compile/Install Options:
- --disable-full-tgetent disable check for full tgetent function
- --with-app-defaults=DIR directory in which to install resource files (default: EPREFIX/lib/X11/app-defaults)
- --with-reference=XXX program to use as permissions-reference
- --disable-setuid disable setuid in xterm, do not install setuid
- --with-setuid=XXX use the given setuid user
- --with-utmp-setgid=XXX use setgid to match utmp/utmpx file
- --with-utempter use utempter library for access to utmp
- --with-x use the X Window System
- --with-Xaw3d link with Xaw 3d library
- --with-neXtaw link with neXT Athena library
- --with-XawPlus link with Athena-Plus library
- --enable-narrowproto enable narrow prototypes for X libraries
- --disable-imake disable use of imake for definitions
-Terminal Configuration:
- --with-terminal-id=V set default decTerminalID (default: vt100)
- --with-terminal-type=T set default $TERM (default: xterm)
- --with-own-terminfo=P set default $TERMINFO (default: from environment)
-Optional Features:
- --disable-active-icon disable X11R6.3 active-icon feature
- --disable-ansi-color disable ANSI color
- --disable-16-color disable 16-color support
- --enable-256-color enable 256-color support
- --enable-88-color enable 88-color support
- --disable-blink-cursor disable support for blinking cursor
- --enable-broken-osc allow broken Linux OSC-strings
- --enable-broken-st allow broken string-terminators
- --disable-c1-print disallow -k8 option for printable 128-159
- --disable-bold-color disable PC-style mapping of bold colors
- --disable-color-class disable separate color class resources
- --disable-color-mode disable default colorMode resource
- --disable-highlighting disable support for color highlighting
- --disable-doublechars disable support for double-size chars
- --disable-boxchars disable fallback-support for box chars
- --disable-freetype disable freetype library-support
- --with-freetype-cflags -D/-I options for compiling with FreeType
- --with-freetype-libs -L/-l options to link FreeType
- --enable-hp-fkeys enable support for HP-style function keys
- --enable-sco-fkeys enable support for SCO-style function keys
- --disable-i18n disable internationalization
- --disable-initial-erase disable setup for stty erase
- --disable-input-method disable input-method
- --enable-load-vt-fonts enable load-vt-fonts() action
- --enable-logging enable logging
- --enable-logfile-exec enable exec'd logfile filter
- --disable-maximize disable actions for iconify/deiconify/maximize/restore
- --disable-num-lock disable NumLock keypad support
- --enable-paste64 enable get/set base64 selection data
- --disable-pty-handshake disable pty-handshake support
- --enable-readline-mouse enable support for mouse in readline applications
- --disable-rightbar disable right-scrollbar support
- --disable-samename disable check for redundant name-change
- --disable-session-mgt disable support for session management
- --enable-tcap-query compile-in termcap-query support
- --disable-tek4014 disable tek4014 emulation
- --enable-toolbar compile-in toolbar for pulldown menus
- --disable-vt52 disable VT52 emulation
- --enable-mini-luit enable mini-luit (built-in Latin9 support)
- --enable-luit enable luit filter (Unicode translation)
- --enable-wide-chars enable wide-character support
- --enable-dabbrev enable dynamic-abbreviation support
- --enable-dec-locator enable DECterm Locator support
- --disable-ziconbeep disable -ziconbeep option
-Testing/development Options:
- --enable-trace test: set to enable debugging traces
- --disable-echo display "compiling" commands
- --enable-xmc-glitch test: enable xmc magic-cookie emulation
- --enable-warnings test: turn on GCC compiler warnings
-
-Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
- headers in a nonstandard directory <include dir>
- CPP C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-EOF
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- ac_popdir=`pwd`
- for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue
- cd $ac_subdir
- # A "../" for each directory in /$ac_subdir.
- ac_dots=`echo $ac_subdir |
- sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'`
-
- case $srcdir in
- .) # No --srcdir option. We are building in place.
- ac_sub_srcdir=$srcdir ;;
- [\\/]* | ?:[\\/]* ) # Absolute path.
- ac_sub_srcdir=$srcdir/$ac_subdir ;;
- *) # Relative path.
- ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;;
- esac
-
- # Check for guested configure; otherwise get Cygnus style configure.
- if test -f $ac_sub_srcdir/configure.gnu; then
- echo
- $SHELL $ac_sub_srcdir/configure.gnu --help=recursive
- elif test -f $ac_sub_srcdir/configure; then
- echo
- $SHELL $ac_sub_srcdir/configure --help=recursive
- elif test -f $ac_sub_srcdir/configure.ac ||
- test -f $ac_sub_srcdir/configure.in; then
- echo
- $ac_configure --help
- else
- echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2
- fi
- cd $ac_popdir
- done
-fi
-
-test -n "$ac_init_help" && exit 0
-if $ac_init_version; then
- cat <<\EOF
-
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-EOF
- exit 0
-fi
-exec 5>config.log
-cat >&5 <<EOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by $as_me, which was
-generated by GNU Autoconf 2.52.20030208. Invocation command line was
-
- $ $0 $@
-
-EOF
-{
-cat <<_ASUNAME
-## ---------- ##
-## Platform. ##
-## ---------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-PATH = $PATH
-
-_ASUNAME
-} >&5
-
-cat >&5 <<EOF
-## ------------ ##
-## Core tests. ##
-## ------------ ##
-
-EOF
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell meta-characters.
-ac_configure_args=
-ac_sep=
-for ac_arg
-do
- case $ac_arg in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"`
- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
- ac_sep=" " ;;
- *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg"
- ac_sep=" " ;;
- esac
- # Get rid of the leading space.
-done
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- echo >&5
- echo "## ----------------- ##" >&5
- echo "## Cache variables. ##" >&5
- echo "## ----------------- ##" >&5
- echo >&5
- # The following way of writing the cache mishandles newlines in values,
-{
- (set) 2>&1 |
- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- sed -n \
- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
- ;;
- *)
- sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
-} >&5
- sed "/^$/d" confdefs.h >conftest.log
- if test -s conftest.log; then
- echo >&5
- echo "## ------------ ##" >&5
- echo "## confdefs.h. ##" >&5
- echo "## ------------ ##" >&5
- echo >&5
- cat conftest.log >&5
- fi
- (echo; echo) >&5
- test "$ac_signal" != 0 &&
- echo "$as_me: caught signal $ac_signal" >&5
- echo "$as_me: exit $exit_status" >&5
- rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files &&
- exit $exit_status
- ' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo >confdefs.h
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- { echo "$as_me:945: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
- cat "$ac_site_file" >&5
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
- { echo "$as_me:956: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . $cache_file;;
- *) . ./$cache_file;;
- esac
- fi
-else
- { echo "$as_me:964: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in `(set) 2>&1 |
- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
- eval ac_new_val="\$ac_env_${ac_var}_value"
- case $ac_old_set,$ac_new_set in
- set,)
- { echo "$as_me:980: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { echo "$as_me:984: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:990: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:992: former value: $ac_old_val" >&5
-echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:994: current value: $ac_new_val" >&5
-echo "$as_me: current value: $ac_new_val" >&2;}
- ac_cache_corrupted=:
- fi;;
- esac
- # Pass precious variables to config.status. It doesn't matter if
- # we pass some twice (in addition to the command line arguments).
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"`
- ac_configure_args="$ac_configure_args '$ac_arg'"
- ;;
- *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val"
- ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { echo "$as_me:1013: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:1015: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
- *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T=' ' ;;
- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-echo "#! $SHELL" >conftest.sh
-echo "exit 0" >>conftest.sh
-chmod +x conftest.sh
-if { (echo "$as_me:1035: PATH=\".;.\"; conftest.sh") >&5
- (PATH=".;."; conftest.sh) 2>&5
- ac_status=$?
- echo "$as_me:1038: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- ac_path_separator=';'
-else
- ac_path_separator=:
-fi
-PATH_SEPARATOR="$ac_path_separator"
-rm -f conftest.sh
-
-ac_config_headers="$ac_config_headers xtermcfg.h:xtermcfg.hin"
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f $ac_dir/shtool; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { { echo "$as_me:1066: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
- { (exit 1); exit 1; }; }
-fi
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
-
-# Make sure we can run config.sub.
-$ac_config_sub sun4 >/dev/null 2>&1 ||
- { { echo "$as_me:1076: error: cannot run $ac_config_sub" >&5
-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
- { (exit 1); exit 1; }; }
-
-echo "$as_me:1080: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6
-if test "${ac_cv_build+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_build_alias=$build_alias
-test -z "$ac_cv_build_alias" &&
- ac_cv_build_alias=`$ac_config_guess`
-test -z "$ac_cv_build_alias" &&
- { { echo "$as_me:1089: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
- { (exit 1); exit 1; }; }
-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
- { { echo "$as_me:1093: error: $ac_config_sub $ac_cv_build_alias failed." >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:1098: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6
-build=$ac_cv_build
-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
- echo "$as_me:1106: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6
-if test "${ac_cv_host+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_host_alias=$host_alias
-test -z "$ac_cv_host_alias" &&
- ac_cv_host_alias=$ac_cv_build_alias
-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
- { { echo "$as_me:1115: error: $ac_config_sub $ac_cv_host_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:1120: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6
-host=$ac_cv_host
-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
- system_name="$host_os"
-else
- system_name="`(uname -s -r) 2>/dev/null`"
- if test -z "$system_name" ; then
- system_name="`(hostname) 2>/dev/null`"
- fi
-fi
-test -n "$system_name" && cat >>confdefs.h <<EOF
-#define SYSTEM_NAME "$system_name"
-EOF
-
-if test "${cf_cv_system_name+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cf_cv_system_name="$system_name"
-fi
-
-test -z "$system_name" && system_name="$cf_cv_system_name"
-test -n "$cf_cv_system_name" && echo "$as_me:1145: result: Configuring for $cf_cv_system_name" >&5
-echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6
-
-if test ".$system_name" != ".$cf_cv_system_name" ; then
- echo "$as_me:1149: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
-echo "${ECHO_T}Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&6
- { { echo "$as_me:1151: error: \"Please remove config.cache and try again.\"" >&5
-echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-### checks for alternative programs
-
-case "$host_os" in
-openedition) : ${CFLAGS="-O2 -Wc,dll -Wl,EDIT=NO"}
- : ${CPPFLAGS="-D_ALL_SOURCE"}
- : ${LIBS="/usr/lib/Xaw.x /usr/lib/SM.x /usr/lib/ICE.x /usr/lib/X11.x"}
- : ${CC=c89};;
-darwin*)
- : ${LDFLAGS}="${LDFLAGS} -Wl,-bind_at_load";;
-esac
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-echo "$as_me:1175: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_CC="${ac_tool_prefix}gcc"
-echo "$as_me:1190: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1198: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1201: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo "$as_me:1210: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_CC="gcc"
-echo "$as_me:1225: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:1233: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1236: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- CC=$ac_ct_CC
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-echo "$as_me:1249: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_CC="${ac_tool_prefix}cc"
-echo "$as_me:1264: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1272: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1275: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo "$as_me:1284: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_CC="cc"
-echo "$as_me:1299: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:1307: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1310: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- CC=$ac_ct_CC
-else
- CC="$ac_cv_prog_CC"
-fi
-
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo "$as_me:1323: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
-fi
-ac_cv_prog_CC="cc"
-echo "$as_me:1343: found $ac_dir/$ac_word" >&5
-break
-done
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- set dummy "$ac_dir/$ac_word" ${1+"$@"}
- shift
- ac_cv_prog_CC="$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1365: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1368: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1379: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-echo "$as_me:1394: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1402: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1405: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:1418: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_ac_ct_CC="$ac_prog"
-echo "$as_me:1433: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- echo "$as_me:1441: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1444: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$ac_ct_CC" && break
-done
-
- CC=$ac_ct_CC
-fi
-
-fi
-
-test -z "$CC" && { { echo "$as_me:1456: error: no acceptable cc found in \$PATH" >&5
-echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
- { (exit 1); exit 1; }; }
-
-# Provide some information about the compiler.
-echo "$as_me:1461:" \
- "checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:1464: \"$ac_compiler --version </dev/null >&5\"") >&5
- (eval $ac_compiler --version </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:1467: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (eval echo "$as_me:1469: \"$ac_compiler -v </dev/null >&5\"") >&5
- (eval $ac_compiler -v </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:1472: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (eval echo "$as_me:1474: \"$ac_compiler -V </dev/null >&5\"") >&5
- (eval $ac_compiler -V </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:1477: \$? = $ac_status" >&5
- (exit $ac_status); }
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 1481 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-echo "$as_me:1497: checking for C compiler default output" >&5
-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-if { (eval echo "$as_me:1500: \"$ac_link_default\"") >&5
- (eval $ac_link_default) 2>&5
- ac_status=$?
- echo "$as_me:1503: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # Find the output, starting from the most likely. This scheme is
-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
-# resort.
-for ac_file in `ls a.exe conftest.exe 2>/dev/null;
- ls a.out conftest 2>/dev/null;
- ls a.* conftest.* 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
- a.out ) # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- # FIXME: I believe we export ac_cv_exeext for Libtool --akim.
- export ac_cv_exeext
- break;;
- * ) break;;
- esac
-done
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-{ { echo "$as_me:1526: error: C compiler cannot create executables" >&5
-echo "$as_me: error: C compiler cannot create executables" >&2;}
- { (exit 77); exit 77; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-echo "$as_me:1532: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6
-
-# Check the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:1537: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
- { (eval echo "$as_me:1543: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1546: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { echo "$as_me:1553: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'." >&5
-echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'." >&2;}
- { (exit 1); exit 1; }; }
- fi
- fi
-fi
-echo "$as_me:1561: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-rm -f a.out a.exe conftest$ac_cv_exeext
-ac_clean_files=$ac_clean_files_save
-# Check the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:1568: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:1570: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6
-
-echo "$as_me:1573: checking for executable suffix" >&5
-echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
-if { (eval echo "$as_me:1575: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:1578: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- export ac_cv_exeext
- break;;
- * ) break;;
- esac
-done
-else
- { { echo "$as_me:1594: error: cannot compute EXEEXT: cannot compile and link" >&5
-echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest$ac_cv_exeext
-echo "$as_me:1600: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-echo "$as_me:1606: checking for object suffix" >&5
-echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
-if test "${ac_cv_objext+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 1612 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:1624: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1627: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-done
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-{ { echo "$as_me:1639: error: cannot compute OBJEXT: cannot compile" >&5
-echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-echo "$as_me:1646: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-echo "$as_me:1650: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 1656 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1671: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1674: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1677: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1680: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_compiler_gnu=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_compiler_gnu=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-echo "$as_me:1692: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
-GCC=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-CFLAGS="-g"
-echo "$as_me:1698: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_g+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 1704 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1716: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1719: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1722: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1725: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cc_g=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_prog_cc_g=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:1735: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-# Some people use a C++ compiler to compile C. Since we use `exit',
-# in C++ we need to declare it. In case someone uses the same compiler
-# for both compiling C and C++ we need to have the C++ compiler decide
-# the declaration of exit, since it's the most demanding environment.
-cat >conftest.$ac_ext <<_ACEOF
-#ifndef __cplusplus
- choke me
-#endif
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1762: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1765: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1768: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1771: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- for ac_declaration in \
- ''\
- '#include <stdlib.h>' \
- 'extern "C" void std::exit (int) throw (); using std::exit;' \
- 'extern "C" void std::exit (int); using std::exit;' \
- 'extern "C" void exit (int) throw ();' \
- 'extern "C" void exit (int);' \
- 'void exit (int);'
-do
- cat >conftest.$ac_ext <<_ACEOF
-#line 1783 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-$ac_declaration
-int
-main ()
-{
-exit (42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1796: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1799: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1802: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1805: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-continue
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- cat >conftest.$ac_ext <<_ACEOF
-#line 1815 "configure"
-#include "confdefs.h"
-$ac_declaration
-int
-main ()
-{
-exit (42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1827: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:1830: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1833: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:1836: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-rm -f conftest*
-if test -n "$ac_declaration"; then
- echo '#ifdef __cplusplus' >>confdefs.h
- echo $ac_declaration >>confdefs.h
- echo '#endif' >>confdefs.h
-fi
-
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-echo "$as_me:1868: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-#line 1889 "configure"
-#include "confdefs.h"
-#include <assert.h>
- Syntax error
-_ACEOF
-if { (eval echo "$as_me:1894: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:1900: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- :
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-#line 1923 "configure"
-#include "confdefs.h"
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:1927: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:1933: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-echo "$as_me:1970: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-#line 1980 "configure"
-#include "confdefs.h"
-#include <assert.h>
- Syntax error
-_ACEOF
-if { (eval echo "$as_me:1985: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:1991: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- :
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-#line 2014 "configure"
-#include "confdefs.h"
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:2018: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:2024: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- :
-else
- { { echo "$as_me:2052: error: C preprocessor \"$CPP\" fails sanity check" >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-if test $ac_cv_c_compiler_gnu = yes; then
- echo "$as_me:2064: checking whether $CC needs -traditional" >&5
-echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
-if test "${ac_cv_prog_gcc_traditional+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_pattern="Autoconf.*'x'"
- cat >conftest.$ac_ext <<_ACEOF
-#line 2071 "configure"
-#include "confdefs.h"
-#include <sgtty.h>
-int Autoconf = TIOCGETP;
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "$ac_pattern" >/dev/null 2>&1; then
- ac_cv_prog_gcc_traditional=yes
-else
- ac_cv_prog_gcc_traditional=no
-fi
-rm -f conftest*
-
- if test $ac_cv_prog_gcc_traditional = no; then
- cat >conftest.$ac_ext <<_ACEOF
-#line 2086 "configure"
-#include "confdefs.h"
-#include <termio.h>
-int Autoconf = TCGETA;
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "$ac_pattern" >/dev/null 2>&1; then
- ac_cv_prog_gcc_traditional=yes
-fi
-rm -f conftest*
-
- fi
-fi
-echo "$as_me:2099: result: $ac_cv_prog_gcc_traditional" >&5
-echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
- if test $ac_cv_prog_gcc_traditional = yes; then
- CC="$CC -traditional"
- fi
-fi
-
-for ac_prog in mawk gawk nawk awk
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:2110: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_AWK+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$AWK"; then
- ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_AWK="$ac_prog"
-echo "$as_me:2125: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
- echo "$as_me:2133: result: $AWK" >&5
-echo "${ECHO_T}$AWK" >&6
-else
- echo "$as_me:2136: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$AWK" && break
-done
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:2155: checking for a BSD compatible install" >&5
-echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
- for ac_dir in $PATH; do
- IFS=$ac_save_IFS
- # Account for people who put trailing slashes in PATH elements.
- case $ac_dir/ in
- / | ./ | .// | /cC/* \
- | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \
- | /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- if $as_executable_p "$ac_dir/$ac_prog"; then
- if test $ac_prog = install &&
- grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL=$ac_install_sh
- fi
-fi
-echo "$as_me:2204: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-test "$program_prefix" != NONE &&
- program_transform_name="s,^,$program_prefix,;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
- program_transform_name="s,\$,$program_suffix,;$program_transform_name"
-# Double any \ or $. echo might interpret backslashes.
-# By default was `s,x,x', remove it if useless.
-cat <<\_ACEOF >conftest.sed
-s/[\\$]/&&/g;s/;s,x,x,$//
-_ACEOF
-program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
-rm conftest.sed
-
-for ac_prog in tdlint lint alint
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:2232: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_LINT+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$LINT"; then
- ac_cv_prog_LINT="$LINT" # Let the user override the test.
-else
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_LINT="$ac_prog"
-echo "$as_me:2247: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-LINT=$ac_cv_prog_LINT
-if test -n "$LINT"; then
- echo "$as_me:2255: result: $LINT" >&5
-echo "${ECHO_T}$LINT" >&6
-else
- echo "$as_me:2258: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$LINT" && break
-done
-
-### checks for UNIX variants that set C preprocessor variables
-
-echo "$as_me:2267: checking for AIX" >&5
-echo $ECHO_N "checking for AIX... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-#line 2270 "configure"
-#include "confdefs.h"
-#ifdef _AIX
- yes
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "yes" >/dev/null 2>&1; then
- echo "$as_me:2279: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-cat >>confdefs.h <<\EOF
-#define _ALL_SOURCE 1
-EOF
-
-else
- echo "$as_me:2286: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-rm -f conftest*
-
-echo "$as_me:2291: checking for POSIXized ISC" >&5
-echo $ECHO_N "checking for POSIXized ISC... $ECHO_C" >&6
-if test -d /etc/conf/kconfig.d &&
- grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
-then
- echo "$as_me:2296: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- ISC=yes # If later tests want to check for ISC.
-
-cat >>confdefs.h <<\EOF
-#define _POSIX_SOURCE 1
-EOF
-
- if test "$GCC" = yes; then
- CC="$CC -posix"
- else
- CC="$CC -Xp"
- fi
-else
- echo "$as_me:2310: result: no" >&5
-echo "${ECHO_T}no" >&6
- ISC=
-fi
-
-### checks for compiler characteristics
-
-echo "$as_me:2317: checking for ${CC-cc} option to accept ANSI C" >&5
-echo $ECHO_N "checking for ${CC-cc} option to accept ANSI C... $ECHO_C" >&6
-if test "${cf_cv_ansi_cc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cf_cv_ansi_cc=no
-cf_save_CFLAGS="$CFLAGS"
-cf_save_CPPFLAGS="$CPPFLAGS"
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX -qlanglvl=ansi
-# Ultrix and OSF/1 -std1
-# HP-UX -Aa -D_HPUX_SOURCE
-# SVR4 -Xc
-# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes)
-for cf_arg in "-DCC_HAS_PROTOS" \
- "" \
- -qlanglvl=ansi \
- -std1 \
- -Ae \
- "-Aa -D_HPUX_SOURCE" \
- -Xc
-do
-
-cf_fix_cppflags=no
-cf_new_cflags=
-cf_new_cppflags=
-cf_new_extra_cppflags=
-
-for cf_add_cflags in $cf_arg
-do
-case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
- case $cf_add_cflags in
- -D*)
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=yes
-
- if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- fi
- ;;
- esac
- case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
- ;;
- *) #(vi
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
- ;;
- esac
- ;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
- ;;
- esac
- ;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
-
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=no
- ;;
-esac
-done
-
-if test -n "$cf_new_cflags" ; then
-
- CFLAGS="$CFLAGS $cf_new_cflags"
-fi
-
-if test -n "$cf_new_cppflags" ; then
-
- CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
-fi
-
-if test -n "$cf_new_extra_cppflags" ; then
-
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
-fi
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 2411 "configure"
-#include "confdefs.h"
-
-#ifndef CC_HAS_PROTOS
-#if !defined(__STDC__) || (__STDC__ != 1)
-choke me
-#endif
-#endif
-
-int
-main ()
-{
-
- int test (int i, double x);
- struct s1 {int (*f) (int a);};
- struct s2 {int (*f) (double a);};
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2432: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2435: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2438: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2441: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_ansi_cc="$cf_arg"; break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-CFLAGS="$cf_save_CFLAGS"
-CPPFLAGS="$cf_save_CPPFLAGS"
-
-fi
-echo "$as_me:2454: result: $cf_cv_ansi_cc" >&5
-echo "${ECHO_T}$cf_cv_ansi_cc" >&6
-
-if test "$cf_cv_ansi_cc" != "no"; then
-if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then
-
-cf_fix_cppflags=no
-cf_new_cflags=
-cf_new_cppflags=
-cf_new_extra_cppflags=
-
-for cf_add_cflags in $cf_cv_ansi_cc
-do
-case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
- case $cf_add_cflags in
- -D*)
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=yes
-
- if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- fi
- ;;
- esac
- case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
- ;;
- *) #(vi
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
- ;;
- esac
- ;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
- ;;
- esac
- ;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
-
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=no
- ;;
-esac
-done
-
-if test -n "$cf_new_cflags" ; then
-
- CFLAGS="$CFLAGS $cf_new_cflags"
-fi
-
-if test -n "$cf_new_cppflags" ; then
-
- CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
-fi
-
-if test -n "$cf_new_extra_cppflags" ; then
-
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
-fi
-
-else
- cat >>confdefs.h <<\EOF
-#define CC_HAS_PROTOS 1
-EOF
-
-fi
-fi
-
-echo "$as_me:2536: checking for $CC option to accept ANSI C" >&5
-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_prog_cc_stdc=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-#line 2544 "configure"
-#include "confdefs.h"
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX -qlanglvl=ansi
-# Ultrix and OSF/1 -std1
-# HP-UX 10.20 and later -Ae
-# HP-UX older versions -Aa -D_HPUX_SOURCE
-# SVR4 -Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2593: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2596: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2599: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2602: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cc_stdc=$ac_arg
-break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext
-done
-rm -f conftest.$ac_ext conftest.$ac_objext
-CC=$ac_save_CC
-
-fi
-
-case "x$ac_cv_prog_cc_stdc" in
- x|xno)
- echo "$as_me:2619: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6 ;;
- *)
- echo "$as_me:2622: result: $ac_cv_prog_cc_stdc" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
- CC="$CC $ac_cv_prog_cc_stdc" ;;
-esac
-
-echo "$as_me:2627: checking for an ANSI C-conforming const" >&5
-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
-if test "${ac_cv_c_const+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 2633 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
- /* Ultrix mips cc rejects this. */
- typedef int charset[2];
- const charset x;
- /* SunOS 4.1.1 cc rejects this. */
- char const *const *ccp;
- char **p;
- /* NEC SVR4.0.2 mips cc rejects this. */
- struct point {int x, y;};
- static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in
- an arm of an if-expression whose if-part is not a constant
- expression */
- const char *g = "string";
- ccp = &g + (g ? g-g : 0);
- /* HPUX 7.0 cc rejects these. */
- ++ccp;
- p = (char**) ccp;
- ccp = (char const *const *) p;
- { /* SCO 3.2v4 cc rejects this. */
- char *t;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
- }
- { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
- }
- { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
- }
- { /* AIX XL C 1.02.0.0 rejects this saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
- }
- { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
- }
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2691: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2694: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2697: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2700: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_const=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_c_const=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:2710: result: $ac_cv_c_const" >&5
-echo "${ECHO_T}$ac_cv_c_const" >&6
-if test $ac_cv_c_const = no; then
-
-cat >>confdefs.h <<\EOF
-#define const
-EOF
-
-fi
-
-case $cf_cv_system_name in
-os2*)
- CFLAGS="$CFLAGS -Zmt"
- CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__"
- CXXFLAGS="$CXXFLAGS -Zmt"
- # autoconf's macro sets -Zexe and suffix both, which conflict:w
- LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
- ac_cv_exeext=.exe
- ;;
-esac
-
-PROG_EXT="$EXEEXT"
-
-test -n "$PROG_EXT" && cat >>confdefs.h <<EOF
-#define PROG_EXT "$PROG_EXT"
-EOF
-
-echo "$as_me:2737: checking if $CC -U and -D options work together" >&5
-echo $ECHO_N "checking if $CC -U and -D options work together... $ECHO_C" >&6
-if test "${cf_cv_cc_u_d_options+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cf_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-UU_D_OPTIONS -DU_D_OPTIONS -DD_U_OPTIONS -UD_U_OPTIONS"
- cat >conftest.$ac_ext <<_ACEOF
-#line 2746 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
-#ifndef U_D_OPTIONS
-make an undefined-error
-#endif
-#ifdef D_U_OPTIONS
-make a defined-error
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2765: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2768: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2771: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2774: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
-
- cf_cv_cc_u_d_options=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-
- cf_cv_cc_u_d_options=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- CPPFLAGS="$cf_save_CPPFLAGS"
-
-fi
-echo "$as_me:2788: result: $cf_cv_cc_u_d_options" >&5
-echo "${ECHO_T}$cf_cv_cc_u_d_options" >&6
-
-cf_XOPEN_SOURCE=500
-cf_POSIX_C_SOURCE=199506L
-
-case $host_os in #(vi
-aix[45]*) #(vi
- CPPFLAGS="$CPPFLAGS -D_ALL_SOURCE"
- ;;
-freebsd*) #(vi
- # 5.x headers associate
- # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
- # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
- cf_POSIX_C_SOURCE=200112L
- cf_XOPEN_SOURCE=600
- CPPFLAGS="$CPPFLAGS -D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
- ;;
-hpux*) #(vi
- CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE"
- ;;
-irix[56].*) #(vi
- CPPFLAGS="$CPPFLAGS -D_SGI_SOURCE"
- ;;
-linux*|gnu*) #(vi
-
-echo "$as_me:2814: checking if we must define _GNU_SOURCE" >&5
-echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6
-if test "${cf_cv_gnu_source+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 2821 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-int
-main ()
-{
-
-#ifndef _XOPEN_SOURCE
-make an error
-#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2836: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2839: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2842: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2845: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_gnu_source=no
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
- cat >conftest.$ac_ext <<_ACEOF
-#line 2854 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-int
-main ()
-{
-
-#ifdef _XOPEN_SOURCE
-make an error
-#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2869: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2872: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2875: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2878: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_gnu_source=no
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_gnu_source=yes
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- CPPFLAGS="$cf_save"
-
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:2893: result: $cf_cv_gnu_source" >&5
-echo "${ECHO_T}$cf_cv_gnu_source" >&6
-test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
-
- ;;
-mirbsd*) #(vi
- # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <arpa/inet.h>
- ;;
-netbsd*) #(vi
- # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
- ;;
-openbsd*) #(vi
- # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
- ;;
-osf[45]*) #(vi
- CPPFLAGS="$CPPFLAGS -D_OSF_SOURCE"
- ;;
-nto-qnx*) #(vi
- CPPFLAGS="$CPPFLAGS -D_QNX_SOURCE"
- ;;
-sco*) #(vi
- # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
- ;;
-solaris*) #(vi
- CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
- ;;
-*)
- echo "$as_me:2920: checking if we should define _XOPEN_SOURCE" >&5
-echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
-if test "${cf_cv_xopen_source+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 2927 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-int
-main ()
-{
-
-#ifndef _XOPEN_SOURCE
-make an error
-#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2942: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2945: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2948: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2951: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_xopen_source=no
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
- cat >conftest.$ac_ext <<_ACEOF
-#line 2960 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-int
-main ()
-{
-
-#ifdef _XOPEN_SOURCE
-make an error
-#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2975: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2978: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2981: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2984: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_xopen_source=no
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_xopen_source=$cf_XOPEN_SOURCE
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- CPPFLAGS="$cf_save"
-
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:2999: result: $cf_cv_xopen_source" >&5
-echo "${ECHO_T}$cf_cv_xopen_source" >&6
- if test "$cf_cv_xopen_source" != no ; then
-
-# remove _XOPEN_SOURCE symbol from $CFLAGS
-CFLAGS=`echo "$CFLAGS" | \
- sed -e 's/-[UD]_XOPEN_SOURCE\(=[^ ]*\)\?[ ]/ /g' \
- -e 's/-[UD]_XOPEN_SOURCE\(=[^ ]*\)\?$//g'`
-
-# remove _XOPEN_SOURCE symbol from $CPPFLAGS
-CPPFLAGS=`echo "$CPPFLAGS" | \
- sed -e 's/-[UD]_XOPEN_SOURCE\(=[^ ]*\)\?[ ]/ /g' \
- -e 's/-[UD]_XOPEN_SOURCE\(=[^ ]*\)\?$//g'`
-
- test "$cf_cv_cc_u_d_options" = yes && \
- CPPFLAGS="$CPPFLAGS -U_XOPEN_SOURCE"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_cv_xopen_source"
- fi
-
-cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE
-
-cf_save_CFLAGS="$CFLAGS"
-cf_save_CPPFLAGS="$CPPFLAGS"
-
-# remove _POSIX_C_SOURCE symbol from $cf_save_CFLAGS
-cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \
- sed -e 's/-[UD]_POSIX_C_SOURCE\(=[^ ]*\)\?[ ]/ /g' \
- -e 's/-[UD]_POSIX_C_SOURCE\(=[^ ]*\)\?$//g'`
-
-# remove _POSIX_C_SOURCE symbol from $cf_save_CPPFLAGS
-cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
- sed -e 's/-[UD]_POSIX_C_SOURCE\(=[^ ]*\)\?[ ]/ /g' \
- -e 's/-[UD]_POSIX_C_SOURCE\(=[^ ]*\)\?$//g'`
-
-echo "$as_me:3033: checking if we should define _POSIX_C_SOURCE" >&5
-echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
-if test "${cf_cv_posix_c_source+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-echo "(line 3039) testing if the symbol is already defined go no further ..." 1>&5
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 3042 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-int
-main ()
-{
-
-#ifndef _POSIX_C_SOURCE
-make an error
-#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3057: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3060: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3063: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3066: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_posix_c_source=no
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_want_posix_source=no
- case .$cf_POSIX_C_SOURCE in #(vi
- .[12]??*) #(vi
- cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
- ;;
- .2) #(vi
- cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
- cf_want_posix_source=yes
- ;;
- .*)
- cf_want_posix_source=yes
- ;;
- esac
- if test "$cf_want_posix_source" = yes ; then
- cat >conftest.$ac_ext <<_ACEOF
-#line 3087 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-int
-main ()
-{
-
-#ifdef _POSIX_SOURCE
-make an error
-#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3102: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3105: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3108: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3111: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE"
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- fi
-
-echo "(line 3122) testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
-
- CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
-
-echo "(line 3127) testing if the second compile does not leave our definition intact error ..." 1>&5
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 3130 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-int
-main ()
-{
-
-#ifndef _POSIX_C_SOURCE
-make an error
-#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3145: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3148: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3151: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3154: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_posix_c_source=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$cf_save_CFLAGS"
- CPPFLAGS="$cf_save_CPPFLAGS"
-
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:3170: result: $cf_cv_posix_c_source" >&5
-echo "${ECHO_T}$cf_cv_posix_c_source" >&6
-
-if test "$cf_cv_posix_c_source" != no ; then
- CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS"
- if test "$cf_cv_cc_u_d_options" = yes ; then
- cf_temp_posix_c_source=`echo "$cf_cv_posix_c_source" | \
- sed -e 's/-D/-U/g' -e 's/=[^ ]*//g'`
- CPPFLAGS="$CPPFLAGS $cf_temp_posix_c_source"
- fi
- CPPFLAGS="$CPPFLAGS $cf_cv_posix_c_source"
-fi
-
- ;;
-esac
-
-### checks for header files
-
-for ac_header in \
-ncurses/term.h \
-stdlib.h \
-termios.h \
-unistd.h \
-wchar.h \
-
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3198: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3204 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:3208: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3214: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:3233: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:3243: checking whether time.h and sys/time.h may both be included" >&5
-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
-if test "${ac_cv_header_time+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3249 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3265: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3268: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3271: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3274: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_header_time=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_header_time=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:3284: result: $ac_cv_header_time" >&5
-echo "${ECHO_T}$ac_cv_header_time" >&6
-if test $ac_cv_header_time = yes; then
-
-cat >>confdefs.h <<\EOF
-#define TIME_WITH_SYS_TIME 1
-EOF
-
-fi
-
- echo "$as_me:3294: checking for nl_langinfo and CODESET" >&5
-echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6
-if test "${am_cv_langinfo_codeset+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3300 "configure"
-#include "confdefs.h"
-#include <langinfo.h>
-int
-main ()
-{
-char* cs = nl_langinfo(CODESET);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3312: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3315: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3318: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3321: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- am_cv_langinfo_codeset=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-am_cv_langinfo_codeset=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-echo "$as_me:3332: result: $am_cv_langinfo_codeset" >&5
-echo "${ECHO_T}$am_cv_langinfo_codeset" >&6
- if test $am_cv_langinfo_codeset = yes; then
-
-cat >>confdefs.h <<\EOF
-#define HAVE_LANGINFO_CODESET 1
-EOF
-
- fi
-
-### checks for typedefs
-
-echo "$as_me:3344: checking for signal global datatype" >&5
-echo $ECHO_N "checking for signal global datatype... $ECHO_C" >&6
-if test "${cf_cv_sig_atomic_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- for cf_type in \
- "volatile sig_atomic_t" \
- "sig_atomic_t" \
- "int"
- do
- cat >conftest.$ac_ext <<_ACEOF
-#line 3356 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#include <signal.h>
-#include <stdio.h>
-
-extern $cf_type x;
-$cf_type x;
-static void handler(int sig)
-{
- x = 5;
-}
-int
-main ()
-{
-signal(SIGINT, handler);
- x = 1
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3379: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3382: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3385: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3388: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_sig_atomic_t=$cf_type
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_sig_atomic_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- test "$cf_cv_sig_atomic_t" != no && break
- done
-
-fi
-
-echo "$as_me:3402: result: $cf_cv_sig_atomic_t" >&5
-echo "${ECHO_T}$cf_cv_sig_atomic_t" >&6
-test "$cf_cv_sig_atomic_t" != no && cat >>confdefs.h <<EOF
-#define SIG_ATOMIC_T $cf_cv_sig_atomic_t
-EOF
-
-echo "$as_me:3408: checking for size_t in <sys/types.h> or <stdio.h>" >&5
-echo $ECHO_N "checking for size_t in <sys/types.h> or <stdio.h>... $ECHO_C" >&6
-if test "${cf_cv_type_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 3415 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#ifdef STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#include <stdio.h>
-int
-main ()
-{
-size_t x
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3433: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3436: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3439: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3442: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_type_size_t=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_type_size_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-echo "$as_me:3454: result: $cf_cv_type_size_t" >&5
-echo "${ECHO_T}$cf_cv_type_size_t" >&6
-test $cf_cv_type_size_t = no && cat >>confdefs.h <<\EOF
-#define size_t unsigned
-EOF
-
-echo "$as_me:3460: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3466 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-_ACEOF
-if { (eval echo "$as_me:3474: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:3480: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_cv_header_stdc=yes
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_header_stdc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-#line 3502 "configure"
-#include "confdefs.h"
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "memchr" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-#line 3520 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "free" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
- :
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3541 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- exit(2);
- exit (0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:3567: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3570: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:3572: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3575: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_header_stdc=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-fi
-echo "$as_me:3588: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3604: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3610 "configure"
-#include "confdefs.h"
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3616: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3619: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3622: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3625: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:3635: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:3645: checking for time_t" >&5
-echo $ECHO_N "checking for time_t... $ECHO_C" >&6
-if test "${ac_cv_type_time_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3651 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((time_t *) 0)
- return 0;
-if (sizeof (time_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3666: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3669: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3672: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3675: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_time_t=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_time_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:3685: result: $ac_cv_type_time_t" >&5
-echo "${ECHO_T}$ac_cv_type_time_t" >&6
-if test $ac_cv_type_time_t = yes; then
- :
-else
-
-cat >>confdefs.h <<EOF
-#define time_t long
-EOF
-
-fi
-
-echo "$as_me:3697: checking for mode_t" >&5
-echo $ECHO_N "checking for mode_t... $ECHO_C" >&6
-if test "${ac_cv_type_mode_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3703 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((mode_t *) 0)
- return 0;
-if (sizeof (mode_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3718: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3721: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3724: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3727: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_mode_t=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_mode_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:3737: result: $ac_cv_type_mode_t" >&5
-echo "${ECHO_T}$ac_cv_type_mode_t" >&6
-if test $ac_cv_type_mode_t = yes; then
- :
-else
-
-cat >>confdefs.h <<EOF
-#define mode_t int
-EOF
-
-fi
-
-echo "$as_me:3749: checking for pid_t" >&5
-echo $ECHO_N "checking for pid_t... $ECHO_C" >&6
-if test "${ac_cv_type_pid_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3755 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((pid_t *) 0)
- return 0;
-if (sizeof (pid_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3770: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:3773: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3776: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3779: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_pid_t=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_pid_t=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:3789: result: $ac_cv_type_pid_t" >&5
-echo "${ECHO_T}$ac_cv_type_pid_t" >&6
-if test $ac_cv_type_pid_t = yes; then
- :
-else
-
-cat >>confdefs.h <<EOF
-#define pid_t int
-EOF
-
-fi
-
-echo "$as_me:3801: checking for uid_t in sys/types.h" >&5
-echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6
-if test "${ac_cv_type_uid_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3807 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "uid_t" >/dev/null 2>&1; then
- ac_cv_type_uid_t=yes
-else
- ac_cv_type_uid_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$as_me:3821: result: $ac_cv_type_uid_t" >&5
-echo "${ECHO_T}$ac_cv_type_uid_t" >&6
-if test $ac_cv_type_uid_t = no; then
-
-cat >>confdefs.h <<\EOF
-#define uid_t int
-EOF
-
-cat >>confdefs.h <<\EOF
-#define gid_t int
-EOF
-
-fi
-
-### checks for library functions
-
-for ac_func in \
- bcopy \
- gethostname \
- getlogin \
- memmove \
- putenv \
- sched_yield \
- strerror \
- strftime \
- tcgetattr \
- waitpid \
- wcswidth \
- wcwidth
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:3852: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3858 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3889: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3892: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3895: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3898: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:3908: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:3918: checking for memmove" >&5
-echo $ECHO_N "checking for memmove... $ECHO_C" >&6
-if test "${ac_cv_func_memmove+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3924 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char memmove (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char memmove ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_memmove) || defined (__stub___memmove)
-choke me
-#else
-f = memmove;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3955: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:3958: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3961: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:3964: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_memmove=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_memmove=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:3974: result: $ac_cv_func_memmove" >&5
-echo "${ECHO_T}$ac_cv_func_memmove" >&6
-if test $ac_cv_func_memmove = yes; then
- :
-else
-
-echo "$as_me:3980: checking for bcopy" >&5
-echo $ECHO_N "checking for bcopy... $ECHO_C" >&6
-if test "${ac_cv_func_bcopy+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 3986 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char bcopy (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char bcopy ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_bcopy) || defined (__stub___bcopy)
-choke me
-#else
-f = bcopy;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4017: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4020: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4023: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4026: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_bcopy=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_bcopy=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:4036: result: $ac_cv_func_bcopy" >&5
-echo "${ECHO_T}$ac_cv_func_bcopy" >&6
-if test $ac_cv_func_bcopy = yes; then
-
- echo "$as_me:4040: checking if bcopy does overlapping moves" >&5
-echo $ECHO_N "checking if bcopy does overlapping moves... $ECHO_C" >&6
-if test "${cf_cv_good_bcopy+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- if test "$cross_compiling" = yes; then
- cf_cv_good_bcopy=unknown
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4050 "configure"
-#include "confdefs.h"
-
-int main() {
- static char data[] = "abcdefghijklmnopqrstuwwxyz";
- char temp[40];
- bcopy(data, temp, sizeof(data));
- bcopy(temp+10, temp, 15);
- bcopy(temp+5, temp+15, 10);
- exit (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
-}
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:4064: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4067: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:4069: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4072: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_good_bcopy=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_good_bcopy=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-fi
-echo "$as_me:4085: result: $cf_cv_good_bcopy" >&5
-echo "${ECHO_T}$cf_cv_good_bcopy" >&6
-
-else
- cf_cv_good_bcopy=no
-fi
-
- if test "$cf_cv_good_bcopy" = yes ; then
- cat >>confdefs.h <<\EOF
-#define USE_OK_BCOPY 1
-EOF
-
- else
- cat >>confdefs.h <<\EOF
-#define USE_MY_MEMMOVE 1
-EOF
-
- fi
-
-fi
-
-for ac_header in lastlog.h paths.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4109: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4115 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:4119: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:4125: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:4144: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:4154: checking for lastlog path" >&5
-echo $ECHO_N "checking for lastlog path... $ECHO_C" >&6
-if test "${cf_cv_path_lastlog+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 4161 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#ifdef HAVE_LASTLOG_H
-#include <lastlog.h>
-#else
-#ifdef HAVE_PATHS_H
-#include <paths.h>
-#endif
-#endif
-int
-main ()
-{
-char *path = _PATH_LASTLOG
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4181: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4184: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4187: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4190: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_path_lastlog="_PATH_LASTLOG"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-if test -f /usr/adm/lastlog ; then
- cf_cv_path_lastlog=/usr/adm/lastlog
- else
- cf_cv_path_lastlog=no
- fi
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:4205: result: $cf_cv_path_lastlog" >&5
-echo "${ECHO_T}$cf_cv_path_lastlog" >&6
-test $cf_cv_path_lastlog != no && cat >>confdefs.h <<\EOF
-#define USE_LASTLOG 1
-EOF
-
-echo "$as_me:4211: checking for utmp implementation" >&5
-echo $ECHO_N "checking for utmp implementation... $ECHO_C" >&6
-if test "${cf_cv_have_utmp+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cf_cv_have_utmp=no
-for cf_header in utmpx utmp ; do
-cf_utmp_includes="
-#include <sys/types.h>
-#include <${cf_header}.h>
-#define getutent getutxent
-#ifdef USE_LASTLOG
-#include <lastlog.h> /* may conflict with utmpx.h on Linux */
-#endif
-"
- cat >conftest.$ac_ext <<_ACEOF
-#line 4228 "configure"
-#include "confdefs.h"
-$cf_utmp_includes
-int
-main ()
-{
-struct $cf_header x;
- char *name = x.ut_name; /* utmp.h and compatible definitions */
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4242: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4245: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4248: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4251: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_have_utmp=$cf_header
- break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 4260 "configure"
-#include "confdefs.h"
-$cf_utmp_includes
-int
-main ()
-{
-struct $cf_header x;
- char *name = x.ut_user; /* utmpx.h must declare this */
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4274: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4277: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4280: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4283: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_have_utmp=$cf_header
- break
-
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-
-fi
-echo "$as_me:4298: result: $cf_cv_have_utmp" >&5
-echo "${ECHO_T}$cf_cv_have_utmp" >&6
-
-if test $cf_cv_have_utmp != no ; then
- cat >>confdefs.h <<\EOF
-#define HAVE_UTMP 1
-EOF
-
- test $cf_cv_have_utmp = utmpx && cat >>confdefs.h <<\EOF
-#define UTMPX_FOR_UTMP 1
-EOF
-
-if test $cf_cv_have_utmp != no ; then
-echo "$as_me:4311: checking if utmp.ut_host is declared" >&5
-echo $ECHO_N "checking if utmp.ut_host is declared... $ECHO_C" >&6
-if test "${cf_cv_have_utmp_ut_host+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 4318 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>
-int
-main ()
-{
-struct $cf_cv_have_utmp x; char *y = &x.ut_host[0]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4332: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4335: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4338: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4341: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_have_utmp_ut_host=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_have_utmp_ut_host=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-echo "$as_me:4353: result: $cf_cv_have_utmp_ut_host" >&5
-echo "${ECHO_T}$cf_cv_have_utmp_ut_host" >&6
-test $cf_cv_have_utmp_ut_host != no && cat >>confdefs.h <<\EOF
-#define HAVE_UTMP_UT_HOST 1
-EOF
-
-fi
-
-if test $cf_cv_have_utmp != no ; then
-echo "$as_me:4362: checking if utmp.ut_name is declared" >&5
-echo $ECHO_N "checking if utmp.ut_name is declared... $ECHO_C" >&6
-if test "${cf_cv_have_utmp_ut_name+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cf_cv_have_utmp_ut_name=no
-cf_utmp_includes="
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>
-#define getutent getutxent
-#ifdef USE_LASTLOG
-#include <lastlog.h> /* may conflict with utmpx.h on Linux */
-#endif
-"
-for cf_header in ut_name ut_user ; do
- cat >conftest.$ac_ext <<_ACEOF
-#line 4379 "configure"
-#include "confdefs.h"
-$cf_utmp_includes
-int
-main ()
-{
-struct $cf_cv_have_utmp x;
- char *name = x.$cf_header;
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4393: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4396: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4399: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4402: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_have_utmp_ut_name=$cf_header
- break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-
-fi
-echo "$as_me:4414: result: $cf_cv_have_utmp_ut_name" >&5
-echo "${ECHO_T}$cf_cv_have_utmp_ut_name" >&6
-
-case $cf_cv_have_utmp_ut_name in #(vi
-no) #(vi
- { { echo "$as_me:4419: error: Cannot find declaration for ut.ut_name" >&5
-echo "$as_me: error: Cannot find declaration for ut.ut_name" >&2;}
- { (exit 1); exit 1; }; }
- ;;
-ut_user)
- cat >>confdefs.h <<\EOF
-#define ut_name ut_user
-EOF
-
- ;;
-esac
-fi
-
-if test $cf_cv_have_utmp != no ; then
-echo "$as_me:4433: checking for exit-status in $cf_cv_have_utmp" >&5
-echo $ECHO_N "checking for exit-status in $cf_cv_have_utmp... $ECHO_C" >&6
-if test "${cf_cv_have_utmp_ut_xstatus+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-for cf_result in \
- ut_exit.__e_exit \
- ut_exit.e_exit \
- ut_exit.ut_e_exit \
- ut_exit.ut_exit
-do
-cat >conftest.$ac_ext <<_ACEOF
-#line 4446 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>
-int
-main ()
-{
-struct $cf_cv_have_utmp x; long y = x.$cf_result = 0
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4460: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4463: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4466: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4469: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_have_utmp_ut_xstatus=$cf_result
- break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_have_utmp_ut_xstatus=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-
-fi
-echo "$as_me:4482: result: $cf_cv_have_utmp_ut_xstatus" >&5
-echo "${ECHO_T}$cf_cv_have_utmp_ut_xstatus" >&6
-if test $cf_cv_have_utmp_ut_xstatus != no ; then
- cat >>confdefs.h <<\EOF
-#define HAVE_UTMP_UT_XSTATUS 1
-EOF
-
- cat >>confdefs.h <<EOF
-#define ut_xstatus $cf_cv_have_utmp_ut_xstatus
-EOF
-
-fi
-fi
-
-if test $cf_cv_have_utmp != no ; then
-echo "$as_me:4497: checking if utmp.ut_xtime is declared" >&5
-echo $ECHO_N "checking if utmp.ut_xtime is declared... $ECHO_C" >&6
-if test "${cf_cv_have_utmp_ut_xtime+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 4504 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>
-int
-main ()
-{
-struct $cf_cv_have_utmp x; long y = x.ut_xtime = 0
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4518: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4521: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4524: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4527: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_have_utmp_ut_xtime=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cat >conftest.$ac_ext <<_ACEOF
-#line 4534 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>
-int
-main ()
-{
-struct $cf_cv_have_utmp x; long y = x.ut_tv.tv_sec
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4548: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4551: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4554: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4557: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_have_utmp_ut_xtime=define
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_have_utmp_ut_xtime=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:4571: result: $cf_cv_have_utmp_ut_xtime" >&5
-echo "${ECHO_T}$cf_cv_have_utmp_ut_xtime" >&6
-if test $cf_cv_have_utmp_ut_xtime != no ; then
- cat >>confdefs.h <<\EOF
-#define HAVE_UTMP_UT_XTIME 1
-EOF
-
- if test $cf_cv_have_utmp_ut_xtime = define ; then
- cat >>confdefs.h <<\EOF
-#define ut_xtime ut_tv.tv_sec
-EOF
-
- fi
-fi
-fi
-
-if test $cf_cv_have_utmp != no ; then
-echo "$as_me:4588: checking if utmp.ut_session is declared" >&5
-echo $ECHO_N "checking if utmp.ut_session is declared... $ECHO_C" >&6
-if test "${cf_cv_have_utmp_ut_session+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 4595 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>
-int
-main ()
-{
-struct $cf_cv_have_utmp x; long y = x.ut_session
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4609: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4612: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4615: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4618: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_have_utmp_ut_session=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_have_utmp_ut_session=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:4629: result: $cf_cv_have_utmp_ut_session" >&5
-echo "${ECHO_T}$cf_cv_have_utmp_ut_session" >&6
-if test $cf_cv_have_utmp_ut_session != no ; then
- cat >>confdefs.h <<\EOF
-#define HAVE_UTMP_UT_SESSION 1
-EOF
-
-fi
-fi
-
-echo "$as_me:4639: checking if $cf_cv_have_utmp is SYSV flavor" >&5
-echo $ECHO_N "checking if $cf_cv_have_utmp is SYSV flavor... $ECHO_C" >&6
-if test "${cf_cv_sysv_utmp+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-test "$cf_cv_have_utmp" = "utmp" && cf_prefix="ut" || cf_prefix="utx"
-cat >conftest.$ac_ext <<_ACEOF
-#line 4647 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#include <${cf_cv_have_utmp}.h>
-int
-main ()
-{
-
-struct $cf_cv_have_utmp x;
- set${cf_prefix}ent ();
- get${cf_prefix}id(&x);
- put${cf_prefix}line(&x);
- end${cf_prefix}ent();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4666: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4669: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4672: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4675: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_sysv_utmp=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_sysv_utmp=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-echo "$as_me:4686: result: $cf_cv_sysv_utmp" >&5
-echo "${ECHO_T}$cf_cv_sysv_utmp" >&6
-test $cf_cv_sysv_utmp = yes && cat >>confdefs.h <<\EOF
-#define USE_SYSV_UTMP 1
-EOF
-
-fi
-
-# compute a reasonable value for $TERM to give tgetent(), since we may be
-# running in 'screen', which sets $TERMCAP to a specific entry that is not
-# necessarily in /etc/termcap - unsetenv is not portable, so we cannot simply
-# discard $TERMCAP.
-cf_TERMVAR=vt100
-test -n "$TERMCAP" && cf_TERMVAR="$TERM"
-test -z "$cf_TERMVAR" && cf_TERMVAR=vt100
-
-echo "$as_me:4702: checking if we want full tgetent function" >&5
-echo $ECHO_N "checking if we want full tgetent function... $ECHO_C" >&6
-
-# Check whether --enable-full-tgetent or --disable-full-tgetent was given.
-if test "${enable_full_tgetent+set}" = set; then
- enableval="$enable_full_tgetent"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- cf_full_tgetent=no
- else
- cf_full_tgetent=yes
- fi
-else
- enableval=yes
- cf_full_tgetent=yes
-
-fi;
-echo "$as_me:4719: result: $cf_full_tgetent" >&5
-echo "${ECHO_T}$cf_full_tgetent" >&6
-
-if test "$cf_full_tgetent" = yes ; then
- cf_test_message="full tgetent"
-else
- cf_test_message="tgetent"
-fi
-
-echo "$as_me:4728: checking for $cf_test_message function" >&5
-echo $ECHO_N "checking for $cf_test_message function... $ECHO_C" >&6
-if test "${cf_cv_lib_tgetent+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cf_save_LIBS="$LIBS"
-cf_cv_lib_tgetent=no
-if test "$cf_full_tgetent" = yes ; then
- cf_TERMLIB="termcap termlib ncurses curses"
- cf_TERMTST="buffer[0] == 0"
-else
- cf_TERMLIB="termlib ncurses curses"
- cf_TERMTST="0"
-fi
-for cf_termlib in '' $cf_TERMLIB ; do
- LIBS="$cf_save_LIBS"
- test -n "$cf_termlib" && LIBS="$LIBS -l$cf_termlib"
- if test "$cross_compiling" = yes; then
- echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&5
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4750 "configure"
-#include "confdefs.h"
-
-/* terminfo implementations ignore the buffer argument, making it useless for
- * the xterm application, which uses this information to make a new TERMCAP
- * environment variable.
- */
-int main()
-{
- char buffer[1024];
- buffer[0] = 0;
- tgetent(buffer, "$cf_TERMVAR");
- exit($cf_TERMTST); }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:4765: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4768: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:4770: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4773: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- echo "yes, there is a termcap/tgetent in $cf_termlib" 1>&5
- if test -n "$cf_termlib" ; then
- cf_cv_lib_tgetent="-l$cf_termlib"
- else
- cf_cv_lib_tgetent=yes
- fi
- break
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-echo "no, there is no termcap/tgetent in $cf_termlib" 1>&5
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-done
-LIBS="$cf_save_LIBS"
-
-fi
-echo "$as_me:4794: result: $cf_cv_lib_tgetent" >&5
-echo "${ECHO_T}$cf_cv_lib_tgetent" >&6
-
-# If we found a working tgetent(), set LIBS and check for termcap.h.
-# (LIBS cannot be set inside AC_CACHE_CHECK; the commands there should
-# not have side effects other than setting the cache variable, because
-# they are not executed when a cached value exists.)
-if test "$cf_cv_lib_tgetent" != no ; then
- test "$cf_cv_lib_tgetent" != yes && LIBS="$LIBS $cf_cv_lib_tgetent"
- cat >>confdefs.h <<\EOF
-#define USE_TERMCAP 1
-EOF
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 4808 "configure"
-#include "confdefs.h"
-
-#include <termcap.h>
-int
-main ()
-{
-
-#ifdef NCURSES_VERSION
-make an error
-#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4824: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:4827: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4830: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4833: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cat >>confdefs.h <<\EOF
-#define HAVE_TERMCAP_H 1
-EOF
-
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-else
- # If we didn't find a tgetent() that supports the buffer
- # argument, look again to see whether we can find even
- # a crippled one. A crippled tgetent() is still useful to
- # validate values for the TERM environment variable given to
- # child processes.
- echo "$as_me:4850: checking for partial tgetent function" >&5
-echo $ECHO_N "checking for partial tgetent function... $ECHO_C" >&6
-if test "${cf_cv_lib_part_tgetent+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cf_cv_lib_part_tgetent=no
- for cf_termlib in $cf_TERMLIB ; do
- LIBS="$cf_save_LIBS -l$cf_termlib"
- cat >conftest.$ac_ext <<_ACEOF
-#line 4860 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-tgetent(0, "$cf_TERMVAR")
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4872: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:4875: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4878: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:4881: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- echo "there is a terminfo/tgetent in $cf_termlib" 1>&5
- cf_cv_lib_part_tgetent="-l$cf_termlib"
- break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- done
- LIBS="$cf_save_LIBS"
-
-fi
-echo "$as_me:4895: result: $cf_cv_lib_part_tgetent" >&5
-echo "${ECHO_T}$cf_cv_lib_part_tgetent" >&6
-
- if test "$cf_cv_lib_part_tgetent" != no ; then
- LIBS="$LIBS $cf_cv_lib_part_tgetent"
-
-for ac_header in termcap.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4904: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 4910 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:4914: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:4920: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:4939: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
- # If this is linking against ncurses, we'll trigger the
- # ifdef in resize.c that turns the termcap stuff back off.
- cat >>confdefs.h <<\EOF
-#define USE_TERMINFO 1
-EOF
-
- fi
-fi
-
-echo "$as_me:4958: checking for directory to install resource files" >&5
-echo $ECHO_N "checking for directory to install resource files... $ECHO_C" >&6
-
-# Check whether --with-app-defaults or --without-app-defaults was given.
-if test "${with_app_defaults+set}" = set; then
- withval="$with_app_defaults"
-
-else
- withval="${appsdir-'\$(exec_prefix)/lib/X11/app-defaults'}"
-fi;
-case ".$withval" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*) #(vi
- eval withval="$withval"
- case ".$withval" in #(vi
- .NONE/*)
- withval=`echo $withval | sed -e s%NONE%$ac_default_prefix%`
- ;;
- esac
- ;; #(vi
-.NONE/*)
- withval=`echo $withval | sed -e s%NONE%$ac_default_prefix%`
- ;;
-*)
- { { echo "$as_me:4987: error: expected a pathname, not \"$withval\"" >&5
-echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
- { (exit 1); exit 1; }; }
- ;;
-esac
-
-eval appsdir="$withval"
-
-echo "$as_me:4995: result: $appsdir" >&5
-echo "${ECHO_T}$appsdir" >&6
-
-# inherit SINSTALL_OPTS from environment to allow packager to customize it.
-
-echo "$as_me:5000: checking for install-permissions reference" >&5
-echo $ECHO_N "checking for install-permissions reference... $ECHO_C" >&6
-
-# Check whether --with-reference or --without-reference was given.
-if test "${with_reference+set}" = set; then
- withval="$with_reference"
- with_reference=$withval
-else
- with_reference=xterm
-fi;
-echo "$as_me:5010: result: $with_reference" >&5
-echo "${ECHO_T}$with_reference" >&6
-
-test -z "$XTERM_PATH" && XTERM_PATH=$with_reference
-for ac_prog in $XTERM_PATH $with_reference
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:5018: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_XTERM_PATH+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $XTERM_PATH in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_XTERM_PATH="$XTERM_PATH" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- if $as_executable_p "$ac_dir/$ac_word"; then
- ac_cv_path_XTERM_PATH="$ac_dir/$ac_word"
- echo "$as_me:5035: found $ac_dir/$ac_word" >&5
- break
-fi
-done
-
- ;;
-esac
-fi
-XTERM_PATH=$ac_cv_path_XTERM_PATH
-
-if test -n "$XTERM_PATH"; then
- echo "$as_me:5046: result: $XTERM_PATH" >&5
-echo "${ECHO_T}$XTERM_PATH" >&6
-else
- echo "$as_me:5049: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$XTERM_PATH" && break
-done
-test -n "$XTERM_PATH" || XTERM_PATH="$XTERM_PATH"
-
-cf_path_prog=""
-cf_path_args=""
-IFS="${IFS= }"; cf_save_ifs="$IFS"
-case $host_os in #(vi
-os2*) #(vi
- IFS="${IFS};"
- ;;
-*)
- IFS="${IFS}:"
- ;;
-esac
-
-for cf_temp in $ac_cv_path_XTERM_PATH
-do
- if test -z "$cf_path_prog" ; then
- if test "$with_full_paths" = yes ; then
-
-case ".$cf_temp" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*) #(vi
- eval cf_temp="$cf_temp"
- case ".$cf_temp" in #(vi
- .NONE/*)
- cf_temp=`echo $cf_temp | sed -e s%NONE%$ac_default_prefix%`
- ;;
- esac
- ;; #(vi
-.NONE/*)
- cf_temp=`echo $cf_temp | sed -e s%NONE%$ac_default_prefix%`
- ;;
-*)
- break
- ;;
-esac
-
- cf_path_prog="$cf_temp"
- else
- cf_path_prog="`basename $cf_temp`"
- fi
- elif test -z "$cf_path_args" ; then
- cf_path_args="$cf_temp"
- else
- cf_path_args="$cf_path_args $cf_temp"
- fi
-done
-IFS="$cf_save_ifs"
-
-if test -n "$cf_path_prog" ; then
-
-echo "(line 5111) testing defining path for ${cf_path_prog} ..." 1>&5
-
- cat >>confdefs.h <<EOF
-#define XTERM_PATH_PATH "$cf_path_prog"
-EOF
-
- test -n "$cf_path_args" && cat >>confdefs.h <<EOF
-#define XTERM_PATH_ARGS "$cf_path_args"
-EOF
-
-fi
-
-echo "$as_me:5123: checking if you want to disable setuid" >&5
-echo $ECHO_N "checking if you want to disable setuid... $ECHO_C" >&6
-
-# Check whether --enable-setuid or --disable-setuid was given.
-if test "${enable_setuid+set}" = set; then
- enableval="$enable_setuid"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- disable_setuid=yes
- else
- disable_setuid=no
- fi
-else
- enableval=yes
- disable_setuid=no
-
-fi;
-echo "$as_me:5140: result: $disable_setuid" >&5
-echo "${ECHO_T}$disable_setuid" >&6
-
-echo "$as_me:5143: checking if you want to run xterm setuid to a given user" >&5
-echo $ECHO_N "checking if you want to run xterm setuid to a given user... $ECHO_C" >&6
-
-# Check whether --with-setuid or --without-setuid was given.
-if test "${with_setuid+set}" = set; then
- withval="$with_setuid"
- use_given_setuid=$withval
-else
- use_given_setuid=no
-fi;
-echo "$as_me:5153: result: $use_given_setuid" >&5
-echo "${ECHO_T}$use_given_setuid" >&6
-
-if test "$use_given_setuid" != no ; then
- if test "$use_given_setuid" = yes ; then
- cf_cv_given_setuid=root
- else
- cf_cv_given_setuid=$use_given_setuid
- fi
- SINSTALL_OPTS="$SINSTALL_OPTS u+s -u $cf_cv_given_setuid"
-fi
-
-echo "$as_me:5165: checking if you want to run xterm setgid to match utmp/utmpx file" >&5
-echo $ECHO_N "checking if you want to run xterm setgid to match utmp/utmpx file... $ECHO_C" >&6
-
-# Check whether --with-utmp-setgid or --without-utmp-setgid was given.
-if test "${with_utmp_setgid+set}" = set; then
- withval="$with_utmp_setgid"
- use_utmp_setgid=$withval
-else
- use_utmp_setgid=no
-fi;
-echo "$as_me:5175: result: $use_utmp_setgid" >&5
-echo "${ECHO_T}$use_utmp_setgid" >&6
-
-if test "$use_utmp_setgid" != no ; then
- if test "$use_utmp_setgid" = yes ; then
-
-if test $cf_cv_have_utmp != no ; then
-echo "$as_me:5182: checking for utmp/utmpx group" >&5
-echo $ECHO_N "checking for utmp/utmpx group... $ECHO_C" >&6
-if test "${cf_cv_utmp_group+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-for cf_utmp_path in /var/adm /var/run
-do
- for cf_utmp_file in utmpx utmp
- do
- if test -f $cf_utmp_path/$cf_utmp_file
- then
- cf_cv_utmp_group=root
-
- cf_option="-l -L"
-
- # Expect listing to have fields like this:
- #-r--r--r-- 1 user group 34293 Jul 18 16:29 pathname
- ls $cf_option $cf_utmp_path/$cf_utmp_file >conftest
- read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest
- if test -z "$cf_rest" ; then
- cf_option="$cf_option -g"
- ls $cf_option $cf_utmp_path/$cf_utmp_file >conftest
- read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest
- fi
- rm -f conftest
-
- # If we have a pathname, and the date fields look right, assume we've
- # captured the group as well.
- if test -n "$cf_rest" ; then
- cf_test=`echo "${cf_date2}${cf_date3}" | sed -e 's/[0-9:]//g'`
- if test -z "$cf_test" ; then
- cf_cv_utmp_group=$cf_grp;
- fi
- fi
- break
- fi
- done
- test -n "$cf_cv_utmp_group" && break
-done
-
-fi
-echo "$as_me:5224: result: $cf_cv_utmp_group" >&5
-echo "${ECHO_T}$cf_cv_utmp_group" >&6
-else
- { { echo "$as_me:5227: error: cannot find utmp group" >&5
-echo "$as_me: error: cannot find utmp group" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
- else
- cf_cv_utmp_group=$use_utmp_setgid
- fi
- cat >>confdefs.h <<\EOF
-#define USE_UTMP_SETGID 1
-EOF
-
- SINSTALL_OPTS="$SINSTALL_OPTS g+s -g $cf_cv_utmp_group"
-fi
-
-echo "$as_me:5242: checking if you want to link with utempter" >&5
-echo $ECHO_N "checking if you want to link with utempter... $ECHO_C" >&6
-
-# Check whether --with-utempter or --without-utempter was given.
-if test "${with_utempter+set}" = set; then
- withval="$with_utempter"
- use_utempter=$withval
-else
- use_utempter=no
-fi;
-echo "$as_me:5252: result: $use_utempter" >&5
-echo "${ECHO_T}$use_utempter" >&6
-
-if test "$use_utempter" = yes ; then
-
-echo "$as_me:5257: checking if we can link with utempter library" >&5
-echo $ECHO_N "checking if we can link with utempter library... $ECHO_C" >&6
-if test "${cf_cv_have_utempter+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cf_save_LIBS="$LIBS"
-LIBS="-lutempter $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 5266 "configure"
-#include "confdefs.h"
-
-#include <utempter.h>
-
-int
-main ()
-{
-
- addToUtmp("/dev/tty", 0, 1);
- removeFromUtmp();
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5283: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:5286: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5289: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5292: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
-
- cf_cv_have_utempter=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-
- cf_cv_have_utempter=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS="$cf_save_LIBS"
-
-fi
-echo "$as_me:5306: result: $cf_cv_have_utempter" >&5
-echo "${ECHO_T}$cf_cv_have_utempter" >&6
-if test "$cf_cv_have_utempter" = yes ; then
- cat >>confdefs.h <<\EOF
-#define USE_UTEMPTER 1
-EOF
-
- LIBS="-lutempter $LIBS"
-fi
-
- test "$cf_cv_have_utempter" = yes && disable_setuid=yes
-fi
-
-### checks for external data
-
-echo "$as_me:5321: checking if external errno is declared" >&5
-echo $ECHO_N "checking if external errno is declared... $ECHO_C" >&6
-if test "${cf_cv_dcl_errno+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 5328 "configure"
-#include "confdefs.h"
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#include <errno.h>
-int
-main ()
-{
-long x = (long) errno
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5346: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5349: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5352: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5355: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_dcl_errno=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_dcl_errno=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:5366: result: $cf_cv_dcl_errno" >&5
-echo "${ECHO_T}$cf_cv_dcl_errno" >&6
-
-if test "$cf_cv_dcl_errno" = no ; then
-
-cf_result=`echo "decl_errno" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-
- cat >>confdefs.h <<EOF
-#define $cf_result 1
-EOF
-
-fi
-
-# It's possible (for near-UNIX clones) that the data doesn't exist
-
-echo "$as_me:5381: checking if external errno exists" >&5
-echo $ECHO_N "checking if external errno exists... $ECHO_C" >&6
-if test "${cf_cv_have_errno+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 5388 "configure"
-#include "confdefs.h"
-
-#undef errno
-extern int errno;
-
-int
-main ()
-{
-errno = 2
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5403: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:5406: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5409: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5412: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_have_errno=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_have_errno=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-echo "$as_me:5423: result: $cf_cv_have_errno" >&5
-echo "${ECHO_T}$cf_cv_have_errno" >&6
-
-if test "$cf_cv_have_errno" = yes ; then
-
-cf_result=`echo "have_errno" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-
- cat >>confdefs.h <<EOF
-#define $cf_result 1
-EOF
-
-fi
-
-echo "$as_me:5436: checking for tty group name" >&5
-echo $ECHO_N "checking for tty group name... $ECHO_C" >&6
-if test "${cf_cv_tty_group_name+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-# If we are configuring as root, it is hard to get a clue about the tty group.
-# But we'll guess based on how our connection is set up - assuming it is done
-# properly.
-
-cf_uid=`id | sed -e 's/^^=*=//' -e 's/(.*$//'`
-if test "$cf_uid" != 0 ; then
-cf_cv_tty_group_name=
-cf_tty_name=`tty`
-test "$cf_tty_name" = "not a tty" && cf_tty_name=/dev/tty
-test -z "$cf_tty_name" && cf_tty_name=/dev/tty
-if test -c "$cf_tty_name"
-then
- cf_option="-l -L"
-
- # Expect listing to have fields like this:
- #-rwxrwxrwx 1 user group 34293 Jul 18 16:29 pathname
- ls $cf_option $cf_tty_name >conftest.out
- read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out
- if test -z "$cf_rest" ; then
- cf_option="$cf_option -g"
- ls $cf_option $cf_tty_name >conftest.out
- read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out
- fi
- rm -f conftest.out
- cf_cv_tty_group_name=$cf_grp
-fi
-fi
-
-# If we cannot deduce the tty group, fall back on hardcoded cases
-
-if test -z "$cf_cv_tty_group_name"
-then
-case $host_os in #(vi
-osf*) #(vi
- cf_cv_tty_group_name="terminal"
- ;;
-*)
- cf_cv_tty_group_name="unknown"
- if ( egrep '^tty:' /etc/group 2>/dev/null 1>/dev/null ) then
- cf_cv_tty_group_name="tty"
- fi
- ;;
-esac
-fi
-
-fi
-echo "$as_me:5488: result: $cf_cv_tty_group_name" >&5
-echo "${ECHO_T}$cf_cv_tty_group_name" >&6
-
-cat >>confdefs.h <<EOF
-#define TTY_GROUP_NAME "$cf_cv_tty_group_name"
-EOF
-
-# This is only a double-check that the group-name we obtained above really
-# does apply to the device. We cannot perform this test if we are in batch
-# mode, or if we are cross-compiling.
-
-echo "$as_me:5499: checking if we may use $cf_cv_tty_group_name group" >&5
-echo $ECHO_N "checking if we may use $cf_cv_tty_group_name group... $ECHO_C" >&6
-if test "${cf_cv_tty_group+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cf_tty_name=`tty`
-if test "$cf_tty_name" != "not a tty"
-then
-if test "$cross_compiling" = yes; then
- cf_cv_tty_group=unknown
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5512 "configure"
-#include "confdefs.h"
-
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <grp.h>
-int main()
-{
- struct stat sb;
- struct group *ttygrp = getgrnam(TTY_GROUP_NAME);
- char *name = ttyname(0);
-
- endgrent();
- if (ttygrp != 0
- && name != 0
- && stat(name, &sb) == 0
- && sb.st_gid != getgid()
- && sb.st_gid == ttygrp->gr_gid) {
- exit(0);
- }
- exit(1);
-}
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:5538: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:5541: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:5543: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5546: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_tty_group=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_tty_group=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-elif test "$cross_compiling" = yes; then
- cf_cv_tty_group=unknown
-else
- cf_cv_tty_group=yes
-fi
-
-fi
-echo "$as_me:5564: result: $cf_cv_tty_group" >&5
-echo "${ECHO_T}$cf_cv_tty_group" >&6
-test $cf_cv_tty_group = yes && cat >>confdefs.h <<\EOF
-#define USE_TTY_GROUP 1
-EOF
-
-### checks for system services and user specified options
-
-echo "$as_me:5572: checking for sys/wait.h that is POSIX.1 compatible" >&5
-echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6
-if test "${ac_cv_header_sys_wait_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5578 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/wait.h>
-#ifndef WEXITSTATUS
-# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
-#endif
-#ifndef WIFEXITED
-# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif
-
-int
-main ()
-{
- int s;
- wait (&s);
- s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5600: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5603: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5606: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5609: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_header_sys_wait_h=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_header_sys_wait_h=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:5619: result: $ac_cv_header_sys_wait_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6
-if test $ac_cv_header_sys_wait_h = yes; then
-
-cat >>confdefs.h <<\EOF
-#define HAVE_SYS_WAIT_H 1
-EOF
-
-fi
-
-echo "$as_me:5629: checking for POSIX wait functions" >&5
-echo $ECHO_N "checking for POSIX wait functions... $ECHO_C" >&6
-if test "${cf_cv_posix_wait+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 5636 "configure"
-#include "confdefs.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-
-int
-main ()
-{
-
- int stat_loc;
- pid_t pid = waitpid(-1, &stat_loc, WNOHANG|WUNTRACED);
- pid_t pid2 = wait(&stat_loc);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5659: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:5662: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5665: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5668: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_posix_wait=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_posix_wait=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-echo "$as_me:5679: result: $cf_cv_posix_wait" >&5
-echo "${ECHO_T}$cf_cv_posix_wait" >&6
-test "$cf_cv_posix_wait" = yes && cat >>confdefs.h <<\EOF
-#define USE_POSIX_WAIT 1
-EOF
-
-echo "$as_me:5685: checking if external sys_nerr is declared" >&5
-echo $ECHO_N "checking if external sys_nerr is declared... $ECHO_C" >&6
-if test "${cf_cv_dcl_sys_nerr+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 5692 "configure"
-#include "confdefs.h"
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#include <errno.h>
-int
-main ()
-{
-long x = (long) sys_nerr
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5710: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5713: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5716: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5719: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_dcl_sys_nerr=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_dcl_sys_nerr=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:5730: result: $cf_cv_dcl_sys_nerr" >&5
-echo "${ECHO_T}$cf_cv_dcl_sys_nerr" >&6
-
-if test "$cf_cv_dcl_sys_nerr" = no ; then
-
-cf_result=`echo "decl_sys_nerr" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-
- cat >>confdefs.h <<EOF
-#define $cf_result 1
-EOF
-
-fi
-
-# It's possible (for near-UNIX clones) that the data doesn't exist
-
-echo "$as_me:5745: checking if external sys_nerr exists" >&5
-echo $ECHO_N "checking if external sys_nerr exists... $ECHO_C" >&6
-if test "${cf_cv_have_sys_nerr+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 5752 "configure"
-#include "confdefs.h"
-
-#undef sys_nerr
-extern int sys_nerr;
-
-int
-main ()
-{
-sys_nerr = 2
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5767: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:5770: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5773: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5776: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_have_sys_nerr=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_have_sys_nerr=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-echo "$as_me:5787: result: $cf_cv_have_sys_nerr" >&5
-echo "${ECHO_T}$cf_cv_have_sys_nerr" >&6
-
-if test "$cf_cv_have_sys_nerr" = yes ; then
-
-cf_result=`echo "have_sys_nerr" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-
- cat >>confdefs.h <<EOF
-#define $cf_result 1
-EOF
-
-fi
-
-echo "$as_me:5800: checking if external sys_errlist is declared" >&5
-echo $ECHO_N "checking if external sys_errlist is declared... $ECHO_C" >&6
-if test "${cf_cv_dcl_sys_errlist+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 5807 "configure"
-#include "confdefs.h"
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#include <errno.h>
-int
-main ()
-{
-long x = (long) sys_errlist
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5825: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5828: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5831: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5834: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_dcl_sys_errlist=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_dcl_sys_errlist=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:5845: result: $cf_cv_dcl_sys_errlist" >&5
-echo "${ECHO_T}$cf_cv_dcl_sys_errlist" >&6
-
-if test "$cf_cv_dcl_sys_errlist" = no ; then
-
-cf_result=`echo "decl_sys_errlist" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-
- cat >>confdefs.h <<EOF
-#define $cf_result 1
-EOF
-
-fi
-
-# It's possible (for near-UNIX clones) that the data doesn't exist
-
-echo "$as_me:5860: checking if external sys_errlist exists" >&5
-echo $ECHO_N "checking if external sys_errlist exists... $ECHO_C" >&6
-if test "${cf_cv_have_sys_errlist+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 5867 "configure"
-#include "confdefs.h"
-
-#undef sys_errlist
-extern int sys_errlist;
-
-int
-main ()
-{
-sys_errlist = 2
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5882: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:5885: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5888: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5891: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_have_sys_errlist=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_have_sys_errlist=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-echo "$as_me:5902: result: $cf_cv_have_sys_errlist" >&5
-echo "${ECHO_T}$cf_cv_have_sys_errlist" >&6
-
-if test "$cf_cv_have_sys_errlist" = yes ; then
-
-cf_result=`echo "have_sys_errlist" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-
- cat >>confdefs.h <<EOF
-#define $cf_result 1
-EOF
-
-fi
-
-for ac_header in \
-stdlib.h \
-X11/Intrinsic.h \
-
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:5921: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 5927 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:5931: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:5937: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:5956: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:5966: checking if we should define SYSV" >&5
-echo $ECHO_N "checking if we should define SYSV... $ECHO_C" >&6
-if test "${cf_cv_sysv+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 5973 "configure"
-#include "confdefs.h"
-
-#undef SYSV
-#define SYSV 1 /* get Xos.h to declare sys_errlist[] */
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h> /* look for wchar_t */
-#endif
-#ifdef HAVE_X11_INTRINSIC_H
-#include <X11/Intrinsic.h> /* Intrinsic.h has other traps... */
-#endif
-#include <curses.h>
-#include <term.h> /* eliminate most BSD hacks */
-#include <errno.h> /* declare sys_errlist on older systems */
-#include <sys/termio.h> /* eliminate most of the remaining ones */
-
-int
-main ()
-{
-
-static struct termio d_tio;
- d_tio.c_cc[VINTR] = 0;
- d_tio.c_cc[VQUIT] = 0;
- d_tio.c_cc[VERASE] = 0;
- d_tio.c_cc[VKILL] = 0;
- d_tio.c_cc[VEOF] = 0;
- d_tio.c_cc[VEOL] = 0;
- d_tio.c_cc[VMIN] = 0;
- d_tio.c_cc[VTIME] = 0;
-#if defined(HAVE_SYS_ERRLIST) && !defined(DECL_SYS_ERRLIST)
-sys_errlist[0] = ""; /* Cygwin mis-declares this */
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6011: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6014: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6017: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6020: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_sysv=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_sysv=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:6031: result: $cf_cv_sysv" >&5
-echo "${ECHO_T}$cf_cv_sysv" >&6
-test "$cf_cv_sysv" = yes && cat >>confdefs.h <<\EOF
-#define SYSV 1
-EOF
-
-echo "$as_me:6037: checking for elf_begin in -lelf" >&5
-echo $ECHO_N "checking for elf_begin in -lelf... $ECHO_C" >&6
-if test "${ac_cv_lib_elf_elf_begin+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lelf $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 6045 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char elf_begin ();
-int
-main ()
-{
-elf_begin ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6064: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6067: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6070: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6073: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_elf_elf_begin=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_elf_elf_begin=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:6084: result: $ac_cv_lib_elf_elf_begin" >&5
-echo "${ECHO_T}$ac_cv_lib_elf_elf_begin" >&6
-if test $ac_cv_lib_elf_elf_begin = yes; then
-
-echo "$as_me:6088: checking if this is an SVR4 system" >&5
-echo $ECHO_N "checking if this is an SVR4 system... $ECHO_C" >&6
-if test "${cf_cv_svr4+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 6095 "configure"
-#include "confdefs.h"
-
-#include <elf.h>
-#include <sys/termio.h>
-
-int
-main ()
-{
-
-static struct termio d_tio;
- d_tio.c_cc[VINTR] = 0;
- d_tio.c_cc[VQUIT] = 0;
- d_tio.c_cc[VERASE] = 0;
- d_tio.c_cc[VKILL] = 0;
- d_tio.c_cc[VEOF] = 0;
- d_tio.c_cc[VEOL] = 0;
- d_tio.c_cc[VMIN] = 0;
- d_tio.c_cc[VTIME] = 0;
- d_tio.c_cc[VLNEXT] = 0;
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6121: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6124: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6127: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6130: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_svr4=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_svr4=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:6141: result: $cf_cv_svr4" >&5
-echo "${ECHO_T}$cf_cv_svr4" >&6
-
-fi
-
-test "$cf_cv_svr4" = yes && cat >>confdefs.h <<\EOF
-#define SVR4 1
-EOF
-
-echo "$as_me:6150: checking for X" >&5
-echo $ECHO_N "checking for X... $ECHO_C" >&6
-
-# Check whether --with-x or --without-x was given.
-if test "${with_x+set}" = set; then
- withval="$with_x"
-
-fi;
-# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
-if test "x$with_x" = xno; then
- # The user explicitly disabled X.
- have_x=disabled
-else
- if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then
- # Both variables are already set.
- have_x=yes
- else
- if test "${ac_cv_have_x+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # One or both of the vars are not set, and there is no cached value.
-ac_x_includes=no ac_x_libraries=no
-rm -fr conftest.dir
-if mkdir conftest.dir; then
- cd conftest.dir
- # Make sure to not put "make" in the Imakefile rules, since we grep it out.
- cat >Imakefile <<'EOF'
-acfindx:
- @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"'
-EOF
- if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
- # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
- eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
- # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
- for ac_extension in a so sl; do
- if test ! -f $ac_im_usrlibdir/libX11.$ac_extension &&
- test -f $ac_im_libdir/libX11.$ac_extension; then
- ac_im_usrlibdir=$ac_im_libdir; break
- fi
- done
- # Screen out bogus values from the imake configuration. They are
- # bogus both because they are the default anyway, and because
- # using them would break gcc on systems where it needs fixed includes.
- case $ac_im_incroot in
- /usr/include) ;;
- *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
- esac
- case $ac_im_usrlibdir in
- /usr/lib | /lib) ;;
- *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
- esac
- fi
- cd ..
- rm -fr conftest.dir
-fi
-
-# Standard set of common directories for X headers.
-# Check X11 before X11Rn because it is often a symlink to the current release.
-ac_x_header_dirs='
-/usr/X11/include
-/usr/X11R6/include
-/usr/X11R5/include
-/usr/X11R4/include
-
-/usr/include/X11
-/usr/include/X11R6
-/usr/include/X11R5
-/usr/include/X11R4
-
-/usr/local/X11/include
-/usr/local/X11R6/include
-/usr/local/X11R5/include
-/usr/local/X11R4/include
-
-/usr/local/include/X11
-/usr/local/include/X11R6
-/usr/local/include/X11R5
-/usr/local/include/X11R4
-
-/usr/X386/include
-/usr/x386/include
-/usr/XFree86/include/X11
-
-/usr/include
-/usr/local/include
-/usr/unsupported/include
-/usr/athena/include
-/usr/local/x11r5/include
-/usr/lpp/Xamples/include
-
-/usr/openwin/include
-/usr/openwin/share/include'
-
-if test "$ac_x_includes" = no; then
- # Guess where to find include files, by looking for Intrinsic.h.
- # First, try using that file with no special directory specified.
- cat >conftest.$ac_ext <<_ACEOF
-#line 6247 "configure"
-#include "confdefs.h"
-#include <X11/Intrinsic.h>
-_ACEOF
-if { (eval echo "$as_me:6251: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:6257: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # We can compile using X headers with no special include directory.
-ac_x_includes=
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- for ac_dir in $ac_x_header_dirs; do
- if test -r "$ac_dir/X11/Intrinsic.h"; then
- ac_x_includes=$ac_dir
- break
- fi
-done
-fi
-rm -f conftest.err conftest.$ac_ext
-fi # $ac_x_includes = no
-
-if test "$ac_x_libraries" = no; then
- # Check for the libraries.
- # See if we find them without any special options.
- # Don't add to $LIBS permanently.
- ac_save_LIBS=$LIBS
- LIBS="-lXt $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
-#line 6290 "configure"
-#include "confdefs.h"
-#include <X11/Intrinsic.h>
-int
-main ()
-{
-XtMalloc (0)
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6302: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6305: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6308: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6311: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- LIBS=$ac_save_LIBS
-# We can link X programs with no special library path.
-ac_x_libraries=
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-LIBS=$ac_save_LIBS
-for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
-do
- # Don't even attempt the hair of trying to link an X program!
- for ac_extension in a so sl; do
- if test -r $ac_dir/libXt.$ac_extension; then
- ac_x_libraries=$ac_dir
- break 2
- fi
- done
-done
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi # $ac_x_libraries = no
-
-if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then
- # Didn't find X anywhere. Cache the known absence of X.
- ac_cv_have_x="have_x=no"
-else
- # Record where we found X for the cache.
- ac_cv_have_x="have_x=yes \
- ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries"
-fi
-fi
-
- fi
- eval "$ac_cv_have_x"
-fi # $with_x != no
-
-if test "$have_x" != yes; then
- echo "$as_me:6349: result: $have_x" >&5
-echo "${ECHO_T}$have_x" >&6
- no_x=yes
-else
- # If each of the values was on the command line, it overrides each guess.
- test "x$x_includes" = xNONE && x_includes=$ac_x_includes
- test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
- # Update the cache value to reflect the command line values.
- ac_cv_have_x="have_x=yes \
- ac_x_includes=$x_includes ac_x_libraries=$x_libraries"
- echo "$as_me:6359: result: libraries $x_libraries, headers $x_includes" >&5
-echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6
-fi
-
-if test "$no_x" = yes; then
- # Not all programs may use this symbol, but it does not hurt to define it.
-
-cat >>confdefs.h <<\EOF
-#define X_DISPLAY_MISSING 1
-EOF
-
- X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
-else
- if test -n "$x_includes"; then
- X_CFLAGS="$X_CFLAGS -I$x_includes"
- fi
-
- # It would also be nice to do this for all -L options, not just this one.
- if test -n "$x_libraries"; then
- X_LIBS="$X_LIBS -L$x_libraries"
- # For Solaris; some versions of Sun CC require a space after -R and
- # others require no space. Words are not sufficient . . . .
- case `(uname -sr) 2>/dev/null` in
- "SunOS 5"*)
- echo "$as_me:6383: checking whether -R must be followed by a space" >&5
-echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6
- ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
- cat >conftest.$ac_ext <<_ACEOF
-#line 6387 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6399: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6402: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6405: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6408: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_R_nospace=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_R_nospace=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- if test $ac_R_nospace = yes; then
- echo "$as_me:6418: result: no" >&5
-echo "${ECHO_T}no" >&6
- X_LIBS="$X_LIBS -R$x_libraries"
- else
- LIBS="$ac_xsave_LIBS -R $x_libraries"
- cat >conftest.$ac_ext <<_ACEOF
-#line 6424 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6436: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6439: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6442: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6445: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_R_space=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_R_space=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- if test $ac_R_space = yes; then
- echo "$as_me:6455: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- X_LIBS="$X_LIBS -R $x_libraries"
- else
- echo "$as_me:6459: result: neither works" >&5
-echo "${ECHO_T}neither works" >&6
- fi
- fi
- LIBS=$ac_xsave_LIBS
- esac
- fi
-
- # Check for system-dependent libraries X programs must link with.
- # Do this before checking for the system-independent R6 libraries
- # (-lICE), since we may need -lsocket or whatever for X linking.
-
- if test "$ISC" = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
- else
- # Martyn Johnson says this is needed for Ultrix, if the X
- # libraries were built with DECnet support. And Karl Berry says
- # the Alpha needs dnet_stub (dnet does not exist).
- ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
- cat >conftest.$ac_ext <<_ACEOF
-#line 6479 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char XOpenDisplay ();
-int
-main ()
-{
-XOpenDisplay ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6498: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6501: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6504: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6507: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-echo "$as_me:6513: checking for dnet_ntoa in -ldnet" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6
-if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldnet $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 6521 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dnet_ntoa ();
-int
-main ()
-{
-dnet_ntoa ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6540: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6543: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6546: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6549: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dnet_dnet_ntoa=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_dnet_dnet_ntoa=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:6560: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6
-if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
-fi
-
- if test $ac_cv_lib_dnet_dnet_ntoa = no; then
- echo "$as_me:6567: checking for dnet_ntoa in -ldnet_stub" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6
-if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldnet_stub $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 6575 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dnet_ntoa ();
-int
-main ()
-{
-dnet_ntoa ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6594: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6597: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6600: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6603: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_dnet_stub_dnet_ntoa=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_dnet_stub_dnet_ntoa=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:6614: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6
-if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
-fi
-
- fi
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- LIBS="$ac_xsave_LIBS"
-
- # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
- # to get the SysV transport functions.
- # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
- # needs -lnsl.
- # The nsl library prevents programs from opening the X display
- # on Irix 5.2, according to T.E. Dickey.
- # The functions gethostbyname, getservbyname, and inet_addr are
- # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
- echo "$as_me:6633: checking for gethostbyname" >&5
-echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6
-if test "${ac_cv_func_gethostbyname+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6639 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char gethostbyname (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char gethostbyname ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname)
-choke me
-#else
-f = gethostbyname;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6670: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6673: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6676: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6679: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_gethostbyname=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_gethostbyname=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:6689: result: $ac_cv_func_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6
-
- if test $ac_cv_func_gethostbyname = no; then
- echo "$as_me:6693: checking for gethostbyname in -lnsl" >&5
-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6
-if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnsl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 6701 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char gethostbyname ();
-int
-main ()
-{
-gethostbyname ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6720: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6723: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6726: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6729: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_nsl_gethostbyname=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_nsl_gethostbyname=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:6740: result: $ac_cv_lib_nsl_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6
-if test $ac_cv_lib_nsl_gethostbyname = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
-fi
-
- if test $ac_cv_lib_nsl_gethostbyname = no; then
- echo "$as_me:6747: checking for gethostbyname in -lbsd" >&5
-echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6
-if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lbsd $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 6755 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char gethostbyname ();
-int
-main ()
-{
-gethostbyname ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6774: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6777: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6780: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6783: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_bsd_gethostbyname=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_bsd_gethostbyname=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:6794: result: $ac_cv_lib_bsd_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6
-if test $ac_cv_lib_bsd_gethostbyname = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
-fi
-
- fi
- fi
-
- # lieder@skyler.mavd.honeywell.com says without -lsocket,
- # socket/setsockopt and other routines are undefined under SCO ODT
- # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary
- # on later versions), says Simon Leinen: it contains gethostby*
- # variants that don't use the nameserver (or something). -lsocket
- # must be given before -lnsl if both are needed. We assume that
- # if connect needs -lnsl, so does gethostbyname.
- echo "$as_me:6810: checking for connect" >&5
-echo $ECHO_N "checking for connect... $ECHO_C" >&6
-if test "${ac_cv_func_connect+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6816 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char connect (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char connect ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_connect) || defined (__stub___connect)
-choke me
-#else
-f = connect;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6847: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6850: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6853: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6856: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_connect=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_connect=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:6866: result: $ac_cv_func_connect" >&5
-echo "${ECHO_T}$ac_cv_func_connect" >&6
-
- if test $ac_cv_func_connect = no; then
- echo "$as_me:6870: checking for connect in -lsocket" >&5
-echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6
-if test "${ac_cv_lib_socket_connect+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 6878 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char connect ();
-int
-main ()
-{
-connect ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6897: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6900: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6903: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6906: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_socket_connect=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_socket_connect=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:6917: result: $ac_cv_lib_socket_connect" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6
-if test $ac_cv_lib_socket_connect = yes; then
- X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
-fi
-
- fi
-
- # Guillermo Gomez says -lposix is necessary on A/UX.
- echo "$as_me:6926: checking for remove" >&5
-echo $ECHO_N "checking for remove... $ECHO_C" >&6
-if test "${ac_cv_func_remove+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 6932 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char remove (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char remove ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_remove) || defined (__stub___remove)
-choke me
-#else
-f = remove;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6963: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6966: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6969: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6972: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_remove=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_remove=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:6982: result: $ac_cv_func_remove" >&5
-echo "${ECHO_T}$ac_cv_func_remove" >&6
-
- if test $ac_cv_func_remove = no; then
- echo "$as_me:6986: checking for remove in -lposix" >&5
-echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6
-if test "${ac_cv_lib_posix_remove+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lposix $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 6994 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char remove ();
-int
-main ()
-{
-remove ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7013: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7016: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7019: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7022: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_posix_remove=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_posix_remove=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7033: result: $ac_cv_lib_posix_remove" >&5
-echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6
-if test $ac_cv_lib_posix_remove = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
-fi
-
- fi
-
- # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
- echo "$as_me:7042: checking for shmat" >&5
-echo $ECHO_N "checking for shmat... $ECHO_C" >&6
-if test "${ac_cv_func_shmat+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 7048 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shmat (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char shmat ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_shmat) || defined (__stub___shmat)
-choke me
-#else
-f = shmat;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7079: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7082: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7085: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7088: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_shmat=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_shmat=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:7098: result: $ac_cv_func_shmat" >&5
-echo "${ECHO_T}$ac_cv_func_shmat" >&6
-
- if test $ac_cv_func_shmat = no; then
- echo "$as_me:7102: checking for shmat in -lipc" >&5
-echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6
-if test "${ac_cv_lib_ipc_shmat+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lipc $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7110 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char shmat ();
-int
-main ()
-{
-shmat ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7129: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7132: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7135: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7138: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_ipc_shmat=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_ipc_shmat=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7149: result: $ac_cv_lib_ipc_shmat" >&5
-echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6
-if test $ac_cv_lib_ipc_shmat = yes; then
- X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
-fi
-
- fi
- fi
-
- # Check for libraries that X11R6 Xt/Xaw programs need.
- ac_save_LDFLAGS=$LDFLAGS
- test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
- # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
- # check for ICE first), but we must link in the order -lSM -lICE or
- # we get undefined symbols. So assume we have SM if we have ICE.
- # These have to be linked with before -lX11, unlike the other
- # libraries we check for below, so use a different variable.
- # John Interrante, Karl Berry
- echo "$as_me:7167: checking for IceConnectionNumber in -lICE" >&5
-echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6
-if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lICE $X_EXTRA_LIBS $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7175 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char IceConnectionNumber ();
-int
-main ()
-{
-IceConnectionNumber ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7194: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7197: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7200: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7203: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_ICE_IceConnectionNumber=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_ICE_IceConnectionNumber=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7214: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
-echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6
-if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
- X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
-fi
-
- LDFLAGS=$ac_save_LDFLAGS
-
-fi
-
-# SYSTEM_NAME=`echo "$cf_cv_system_name"|tr ' ' -`
-
-cf_have_X_LIBS=no
-
-LDFLAGS="$X_LIBS $LDFLAGS"
-
-test -n "$verbose" && echo " checking additions to CFLAGS" 1>&6
-
-cf_check_cflags="$CFLAGS"
-cf_check_cppflags="$CPPFLAGS"
-
-cf_fix_cppflags=no
-cf_new_cflags=
-cf_new_cppflags=
-cf_new_extra_cppflags=
-
-for cf_add_cflags in $X_CFLAGS
-do
-case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
- case $cf_add_cflags in
- -D*)
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=yes
-
- if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- fi
- ;;
- esac
- case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
- ;;
- *) #(vi
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
- ;;
- esac
- ;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
- ;;
- esac
- ;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
-
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=no
- ;;
-esac
-done
-
-if test -n "$cf_new_cflags" ; then
- test -n "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6
-
- CFLAGS="$CFLAGS $cf_new_cflags"
-fi
-
-if test -n "$cf_new_cppflags" ; then
- test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6
-
- CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
-fi
-
-if test -n "$cf_new_extra_cppflags" ; then
- test -n "$verbose" && echo " add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6
-
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
-fi
-
-if test "$cf_check_cflags" != "$CFLAGS" ; then
-cat >conftest.$ac_ext <<_ACEOF
-#line 7308 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-int
-main ()
-{
-printf("Hello world");
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7320: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7323: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7326: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7329: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-test -n "$verbose" && echo " test-compile failed. Undoing change to \$CFLAGS" 1>&6
-
- if test "$cf_check_cppflags" != "$CPPFLAGS" ; then
- test -n "$verbose" && echo " but keeping change to \$CPPFLAGS" 1>&6
-
- fi
- CFLAGS="$cf_check_flags"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-
-echo "$as_me:7346: checking for XOpenDisplay" >&5
-echo $ECHO_N "checking for XOpenDisplay... $ECHO_C" >&6
-if test "${ac_cv_func_XOpenDisplay+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 7352 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char XOpenDisplay (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char XOpenDisplay ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_XOpenDisplay) || defined (__stub___XOpenDisplay)
-choke me
-#else
-f = XOpenDisplay;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7383: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7386: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7389: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7392: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_XOpenDisplay=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_XOpenDisplay=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:7402: result: $ac_cv_func_XOpenDisplay" >&5
-echo "${ECHO_T}$ac_cv_func_XOpenDisplay" >&6
-if test $ac_cv_func_XOpenDisplay = yes; then
- :
-else
-
-echo "$as_me:7408: checking for XOpenDisplay in -lX11" >&5
-echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6
-if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7416 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char XOpenDisplay ();
-int
-main ()
-{
-XOpenDisplay ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7435: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7438: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7441: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7444: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_X11_XOpenDisplay=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_X11_XOpenDisplay=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7455: result: $ac_cv_lib_X11_XOpenDisplay" >&5
-echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6
-if test $ac_cv_lib_X11_XOpenDisplay = yes; then
- LIBS="-lX11 $LIBS"
-fi
-
-fi
-
-echo "$as_me:7463: checking for XtAppInitialize" >&5
-echo $ECHO_N "checking for XtAppInitialize... $ECHO_C" >&6
-if test "${ac_cv_func_XtAppInitialize+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 7469 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char XtAppInitialize (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char XtAppInitialize ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_XtAppInitialize) || defined (__stub___XtAppInitialize)
-choke me
-#else
-f = XtAppInitialize;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7500: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7503: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7506: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7509: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_XtAppInitialize=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_func_XtAppInitialize=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:7519: result: $ac_cv_func_XtAppInitialize" >&5
-echo "${ECHO_T}$ac_cv_func_XtAppInitialize" >&6
-if test $ac_cv_func_XtAppInitialize = yes; then
- :
-else
-
-echo "$as_me:7525: checking for XtAppInitialize in -lXt" >&5
-echo $ECHO_N "checking for XtAppInitialize in -lXt... $ECHO_C" >&6
-if test "${ac_cv_lib_Xt_XtAppInitialize+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7533 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char XtAppInitialize ();
-int
-main ()
-{
-XtAppInitialize ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7552: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7555: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7558: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7561: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_Xt_XtAppInitialize=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_Xt_XtAppInitialize=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7572: result: $ac_cv_lib_Xt_XtAppInitialize" >&5
-echo "${ECHO_T}$ac_cv_lib_Xt_XtAppInitialize" >&6
-if test $ac_cv_lib_Xt_XtAppInitialize = yes; then
- cat >>confdefs.h <<\EOF
-#define HAVE_LIBXT 1
-EOF
-
- cf_have_X_LIBS=Xt
- LIBS="-lXt $X_PRE_LIBS $LIBS"
-fi
-
-fi
-
-if test $cf_have_X_LIBS = no ; then
- { echo "$as_me:7586: WARNING: Unable to successfully link X Toolkit library (-lXt) with
-test program. You will have to check and add the proper libraries by hand
-to makefile." >&5
-echo "$as_me: WARNING: Unable to successfully link X Toolkit library (-lXt) with
-test program. You will have to check and add the proper libraries by hand
-to makefile." >&2;}
-fi
-
-for ac_header in \
- X11/DECkeysym.h \
- X11/Sunkeysym.h \
- X11/Xpoll.h \
-
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:7601: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 7607 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:7611: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:7617: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:7636: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-cf_x_athena=${cf_x_athena-Xaw}
-
-echo "$as_me:7648: checking if you want to link with Xaw 3d library" >&5
-echo $ECHO_N "checking if you want to link with Xaw 3d library... $ECHO_C" >&6
-withval=
-
-# Check whether --with-Xaw3d or --without-Xaw3d was given.
-if test "${with_Xaw3d+set}" = set; then
- withval="$with_Xaw3d"
-
-fi;
-if test "$withval" = yes ; then
- cf_x_athena=Xaw3d
- echo "$as_me:7659: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
- echo "$as_me:7662: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-echo "$as_me:7666: checking if you want to link with neXT Athena library" >&5
-echo $ECHO_N "checking if you want to link with neXT Athena library... $ECHO_C" >&6
-withval=
-
-# Check whether --with-neXtaw or --without-neXtaw was given.
-if test "${with_neXtaw+set}" = set; then
- withval="$with_neXtaw"
-
-fi;
-if test "$withval" = yes ; then
- cf_x_athena=neXtaw
- echo "$as_me:7677: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
- echo "$as_me:7680: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-echo "$as_me:7684: checking if you want to link with Athena-Plus library" >&5
-echo $ECHO_N "checking if you want to link with Athena-Plus library... $ECHO_C" >&6
-withval=
-
-# Check whether --with-XawPlus or --without-XawPlus was given.
-if test "${with_XawPlus+set}" = set; then
- withval="$with_XawPlus"
-
-fi;
-if test "$withval" = yes ; then
- cf_x_athena=XawPlus
- echo "$as_me:7695: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
- echo "$as_me:7698: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-echo "$as_me:7702: checking for XextCreateExtension in -lXext" >&5
-echo $ECHO_N "checking for XextCreateExtension in -lXext... $ECHO_C" >&6
-if test "${ac_cv_lib_Xext_XextCreateExtension+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lXext $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 7710 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char XextCreateExtension ();
-int
-main ()
-{
-XextCreateExtension ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7729: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7732: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7735: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7738: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_Xext_XextCreateExtension=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_Xext_XextCreateExtension=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:7749: result: $ac_cv_lib_Xext_XextCreateExtension" >&5
-echo "${ECHO_T}$ac_cv_lib_Xext_XextCreateExtension" >&6
-if test $ac_cv_lib_Xext_XextCreateExtension = yes; then
- LIBS="-lXext $LIBS"
-fi
-
-cf_x_athena_lib=""
-
-cf_x_athena_root=$cf_x_athena
-cf_x_athena_include=""
-
-for cf_path in default \
- /usr/contrib/X11R6 \
- /usr/contrib/X11R5 \
- /usr/lib/X11R5 \
- /usr/local
-do
- if test -z "$cf_x_athena_include" ; then
- cf_save="$CPPFLAGS"
- cf_test=X11/$cf_x_athena_root/SimpleMenu.h
- if test $cf_path != default ; then
- CPPFLAGS="-I$cf_path/include $cf_save"
- echo "$as_me:7771: checking for $cf_test in $cf_path" >&5
-echo $ECHO_N "checking for $cf_test in $cf_path... $ECHO_C" >&6
- else
- echo "$as_me:7774: checking for $cf_test" >&5
-echo $ECHO_N "checking for $cf_test... $ECHO_C" >&6
- fi
- cat >conftest.$ac_ext <<_ACEOF
-#line 7778 "configure"
-#include "confdefs.h"
-
-#include <X11/Intrinsic.h>
-#include <$cf_test>
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7792: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:7795: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7798: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7801: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_result=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_result=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:7810: result: $cf_result" >&5
-echo "${ECHO_T}$cf_result" >&6
- if test "$cf_result" = yes ; then
- cf_x_athena_include=$cf_path
- break
- else
- CPPFLAGS="$cf_save"
- fi
- fi
-done
-
-if test -z "$cf_x_athena_include" ; then
- { echo "$as_me:7822: WARNING: Unable to successfully find Athena header files with test program" >&5
-echo "$as_me: WARNING: Unable to successfully find Athena header files with test program" >&2;}
-elif test "$cf_x_athena_include" != default ; then
- CPPFLAGS="$CPPFLAGS -I$cf_x_athena_include"
-fi
-
-cf_x_athena_root=$cf_x_athena
-cf_x_athena_lib=""
-
-for cf_path in default \
- /usr/contrib/X11R6 \
- /usr/contrib/X11R5 \
- /usr/lib/X11R5 \
- /usr/local
-do
- for cf_lib in \
- "-l$cf_x_athena_root -lXmu" \
- "-l$cf_x_athena_root -lXpm -lXmu" \
- "-l${cf_x_athena_root}_s -lXmu_s"
- do
- if test -z "$cf_x_athena_lib" ; then
- cf_save="$LIBS"
- cf_test=XawSimpleMenuAddGlobalActions
- if test $cf_path != default ; then
- LIBS="-L$cf_path/lib $cf_lib $LIBS"
- echo "$as_me:7847: checking for $cf_lib in $cf_path" >&5
-echo $ECHO_N "checking for $cf_lib in $cf_path... $ECHO_C" >&6
- else
- LIBS="$cf_lib $LIBS"
- echo "$as_me:7851: checking for $cf_test in $cf_lib" >&5
-echo $ECHO_N "checking for $cf_test in $cf_lib... $ECHO_C" >&6
- fi
- cf_SAVE="$LIBS"
- LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS"
- cat >conftest.$ac_ext <<_ACEOF
-#line 7857 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-$cf_test()
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7869: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:7872: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7875: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7878: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_result=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_result=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- echo "$as_me:7887: result: $cf_result" >&5
-echo "${ECHO_T}$cf_result" >&6
- if test "$cf_result" = yes ; then
- cf_x_athena_lib="$cf_lib"
- LIBS="$cf_SAVE"
- break
- else
- LIBS="$cf_save"
- fi
- fi
- done
-done
-
-if test -z "$cf_x_athena_lib" ; then
- { { echo "$as_me:7901: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&5
-echo "$as_me: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-cf_x_athena_LIBS=`echo "HAVE_LIB_$cf_x_athena" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-
-cat >>confdefs.h <<EOF
-#define $cf_x_athena_LIBS 1
-EOF
-
-echo "$as_me:7912: checking for declaration of fd_set" >&5
-echo $ECHO_N "checking for declaration of fd_set... $ECHO_C" >&6
-if test "${cf_cv_type_fd_set+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- echo "trying sys/types alone" 1>&5
-cat >conftest.$ac_ext <<_ACEOF
-#line 7919 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-int
-main ()
-{
-fd_set x
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7932: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:7935: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7938: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7941: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_type_fd_set=sys/types.h
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-echo "trying X11/Xpoll.h" 1>&5
-cat >conftest.$ac_ext <<_ACEOF
-#line 7949 "configure"
-#include "confdefs.h"
-
-#ifdef HAVE_X11_XPOLL_H
-#include <X11/Xpoll.h>
-#endif
-int
-main ()
-{
-fd_set x
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7964: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:7967: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7970: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:7973: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_type_fd_set=X11/Xpoll.h
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-echo "trying sys/select.h" 1>&5
-cat >conftest.$ac_ext <<_ACEOF
-#line 7981 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#include <sys/select.h>
-int
-main ()
-{
-fd_set x
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7995: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:7998: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8001: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8004: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_type_fd_set=sys/select.h
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_type_fd_set=unknown
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:8018: result: $cf_cv_type_fd_set" >&5
-echo "${ECHO_T}$cf_cv_type_fd_set" >&6
-if test $cf_cv_type_fd_set = sys/select.h ; then
- cat >>confdefs.h <<\EOF
-#define USE_SYS_SELECT_H 1
-EOF
-
-fi
-
-echo "$as_me:8027: checking for IRIX 6.5 baud-rate redefinitions" >&5
-echo $ECHO_N "checking for IRIX 6.5 baud-rate redefinitions... $ECHO_C" >&6
-if test "${cf_cv_termio_c_ispeed+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 8034 "configure"
-#include "confdefs.h"
-
-#include <sys/types.h>
-#include <sys/termio.h>
-int
-main ()
-{
-
-struct termio foo;
-foo.c_ispeed = B38400;
-foo.c_ospeed = B9600;
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8052: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:8055: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8058: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8061: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_termio_c_ispeed=yes
-
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_termio_c_ispeed=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:8073: result: $cf_cv_termio_c_ispeed" >&5
-echo "${ECHO_T}$cf_cv_termio_c_ispeed" >&6
-test "$cf_cv_termio_c_ispeed" = yes && cat >>confdefs.h <<\EOF
-#define HAVE_TERMIO_C_ISPEED 1
-EOF
-
-LIBS="$LIBS $X_EXTRA_LIBS"
-
-# Check for openpty() in -lutil if the UNIX98-style pty functions are not
-# available. E.g. for GNU libc 2.0.
-case $host_os in #(vi
-freebsd*|netbsd*) # 2004/8/15 - revisit this if/when grantpt is known to work.
-
-echo "$as_me:8086: checking for openpty in -lutil" >&5
-echo $ECHO_N "checking for openpty in -lutil... $ECHO_C" >&6
-if test "${ac_cv_lib_util_openpty+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lutil $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 8094 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char openpty ();
-int
-main ()
-{
-openpty ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8113: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8116: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8119: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8122: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_util_openpty=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_util_openpty=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:8133: result: $ac_cv_lib_util_openpty" >&5
-echo "${ECHO_T}$ac_cv_lib_util_openpty" >&6
-if test $ac_cv_lib_util_openpty = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBUTIL 1
-EOF
-
- LIBS="-lutil $LIBS"
-
-fi
-
- ;;
-*)
-
-for ac_func in grantpt
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8150: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8156 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8187: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8190: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8193: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8196: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8206: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-EOF
-
-else
-
-echo "$as_me:8215: checking for openpty in -lutil" >&5
-echo $ECHO_N "checking for openpty in -lutil... $ECHO_C" >&6
-if test "${ac_cv_lib_util_openpty+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lutil $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 8223 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char openpty ();
-int
-main ()
-{
-openpty ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8242: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8245: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8248: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8251: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_lib_util_openpty=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_util_openpty=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:8262: result: $ac_cv_lib_util_openpty" >&5
-echo "${ECHO_T}$ac_cv_lib_util_openpty" >&6
-if test $ac_cv_lib_util_openpty = yes; then
- cat >>confdefs.h <<EOF
-#define HAVE_LIBUTIL 1
-EOF
-
- LIBS="-lutil $LIBS"
-
-fi
-
-fi
-done
-
- ;;
-esac
-
-echo "$as_me:8279: checking for XKB Bell extension" >&5
-echo $ECHO_N "checking for XKB Bell extension... $ECHO_C" >&6
-if test "${cf_cv_xkb_bell_ext+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 8286 "configure"
-#include "confdefs.h"
-
-#include <X11/XKBlib.h> /* has the prototype */
-#include <X11/extensions/XKBbells.h> /* has the XkbBI_xxx definitions */
-
-int
-main ()
-{
-
-int x = XkbBI_Info
- |XkbBI_MinorError
- |XkbBI_MajorError
- |XkbBI_TerminalBell
- |XkbBI_MarginBell;
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8307: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8310: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8313: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8316: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_xkb_bell_ext=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_xkb_bell_ext=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-fi
-echo "$as_me:8327: result: $cf_cv_xkb_bell_ext" >&5
-echo "${ECHO_T}$cf_cv_xkb_bell_ext" >&6
-
-test "$cf_cv_xkb_bell_ext" = yes && cat >>confdefs.h <<\EOF
-#define HAVE_XKB_BELL_EXT 1
-EOF
-
-for ac_func in Xutf8LookupString
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8337: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 8343 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8374: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:8377: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8380: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:8383: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:8393: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-EOF
-
-else
-
- EXTRAHDRS="$EXTRAHDRS xutf8.h"
- EXTRASRCS="$EXTRASRCS xutf8.c"
- EXTRAOBJS="$EXTRAOBJS xutf8.o"
-
-fi
-done
-
-echo "$as_me:8409: checking if you want narrow prototypes for X libraries" >&5
-echo $ECHO_N "checking if you want narrow prototypes for X libraries... $ECHO_C" >&6
-
-case `$ac_config_guess` in #(vi
-*cygwin*|*freebsd*|*gnu*|*irix5*|*irix6*|*linux-gnu*|*netbsd*|*openbsd*|*qnx*|*sco*|*sgi*) #(vi
- cf_default_narrowproto=yes
- ;;
-*)
- cf_default_narrowproto=no
- ;;
-esac
-
-# Check whether --enable-narrowproto or --disable-narrowproto was given.
-if test "${enable_narrowproto+set}" = set; then
- enableval="$enable_narrowproto"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "$cf_default_narrowproto" ; then
- enable_narrowproto=$enableval
- else
- enable_narrowproto=$default_narrowproto
- fi
-else
- enableval=$cf_default_narrowproto
- enable_narrowproto=$default_narrowproto
-
-fi;
-echo "$as_me:8435: result: $enable_narrowproto" >&5
-echo "${ECHO_T}$enable_narrowproto" >&6
-
-echo "$as_me:8438: checking if we should use imake to help" >&5
-echo $ECHO_N "checking if we should use imake to help... $ECHO_C" >&6
-
-# Check whether --enable-imake or --disable-imake was given.
-if test "${enable_imake+set}" = set; then
- enableval="$enable_imake"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_imake=no
- else
- enable_imake=yes
- fi
-else
- enableval=yes
- enable_imake=yes
-
-fi;
-echo "$as_me:8455: result: $enable_imake" >&5
-echo "${ECHO_T}$enable_imake" >&6
-
-if test "$enable_imake" = yes ; then
-
-for ac_prog in xmkmf imake
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:8464: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_IMAKE+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $IMAKE in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_IMAKE="$IMAKE" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- if $as_executable_p "$ac_dir/$ac_word"; then
- ac_cv_path_IMAKE="$ac_dir/$ac_word"
- echo "$as_me:8481: found $ac_dir/$ac_word" >&5
- break
-fi
-done
-
- ;;
-esac
-fi
-IMAKE=$ac_cv_path_IMAKE
-
-if test -n "$IMAKE"; then
- echo "$as_me:8492: result: $IMAKE" >&5
-echo "${ECHO_T}$IMAKE" >&6
-else
- echo "$as_me:8495: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$IMAKE" && break
-done
-
-if test -n "$IMAKE" ; then
-
-case $IMAKE in # (vi
-*/imake)
- cf_imake_opts="-DUseInstalled=YES" # (vi
- ;;
-*/util/xmkmf)
- # A single parameter tells xmkmf where the config-files are:
- cf_imake_opts="`echo $IMAKE|sed -e s,/config/util/xmkmf,,`" # (vi
- ;;
-*)
- cf_imake_opts=
- ;;
-esac
-
-# If it's installed properly, imake (or its wrapper, xmkmf) will point to the
-# config directory.
-if mkdir conftestdir; then
- CDPATH=; export CDPATH
- cf_makefile=`cd $srcdir;pwd`/Imakefile
- cd conftestdir
-
- cat >fix_cflags.sed <<'CF_EOF'
-s/\\//g
-s/"//g
-s/\(-D[a-zA-Z0-9_][a-zA-Z0-9_]*\)=\([^\\'"0-9 ][^ ]*\([ ][ ]*[^- ][^ ]*\)*\)/\1='\\"\2\\"'/g
-s/\(-D[a-zA-Z0-9_][a-zA-Z0-9_]*\)=\([^\\'"0-9 ][^ ]*\)[ ]/\1='\\"\2\\"' /g
-s/\(-D[a-zA-Z0-9_][a-zA-Z0-9_]*\)=\([^\\'"0-9 ][^ ]*\)$/\1='\\"\2\\"'/g
-s/^IMAKE[ ]*/IMAKE_CFLAGS="/
-s/$/"/
-CF_EOF
-
- cat >fix_lflags.sed <<'CF_EOF'
-s/^IMAKE[ ]*/IMAKE_LOADFLAGS="/
-s/$/"/
-CF_EOF
-
- echo >./Imakefile
- test -f $cf_makefile && cat $cf_makefile >>./Imakefile
-
- cat >> ./Imakefile <<'CF_EOF'
-findstddefs:
- @echo IMAKE $(ALLDEFINES) $(MAIN_DEFINES) $(VENDORMANDEFS) | sed -f fix_cflags.sed
- @echo IMAKE $(EXTRA_LOAD_FLAGS) | sed -f fix_lflags.sed
-CF_EOF
-
- if ( $IMAKE $cf_imake_opts 1>/dev/null 2>&5 && test -f Makefile)
- then
- test -n "$verbose" && echo " Using $IMAKE $cf_imake_opts" 1>&6
-
- else
- # sometimes imake doesn't have the config path compiled in. Find it.
- cf_config=
- for cf_libpath in $X_LIBS $LIBS ; do
- case $cf_libpath in # (vi
- -L*)
- cf_libpath=`echo .$cf_libpath | sed -e 's/^...//'`
- cf_libpath=$cf_libpath/X11/config
- if test -d $cf_libpath ; then
- cf_config=$cf_libpath
- break
- fi
- ;;
- esac
- done
- if test -z "$cf_config" ; then
- { echo "$as_me:8568: WARNING: Could not find imake config-directory" >&5
-echo "$as_me: WARNING: Could not find imake config-directory" >&2;}
- else
- cf_imake_opts="$cf_imake_opts -I$cf_config"
- if ( $IMAKE -v $cf_imake_opts 2>&5)
- then
- test -n "$verbose" && echo " Using $IMAKE $cf_config" 1>&6
-
- else
- { echo "$as_me:8577: WARNING: Cannot run $IMAKE" >&5
-echo "$as_me: WARNING: Cannot run $IMAKE" >&2;}
- fi
- fi
- fi
-
- # GNU make sometimes prints "make[1]: Entering...", which
- # would confuse us.
- eval `make findstddefs 2>/dev/null | grep -v make`
-
- cd ..
- rm -rf conftestdir
-
- # We use $(ALLDEFINES) rather than $(STD_DEFINES) because the former
- # declares XTFUNCPROTO there. However, some vendors (e.g., SGI) have
- # modified it to support site.cf, adding a kludge for the /usr/include
- # directory. Try to filter that out, otherwise gcc won't find its
- # headers.
- if test -n "$GCC" ; then
- if test -n "$IMAKE_CFLAGS" ; then
- cf_nostdinc=""
- cf_std_incl=""
- cf_cpp_opts=""
- for cf_opt in $IMAKE_CFLAGS
- do
- case "$cf_opt" in
- -nostdinc) #(vi
- cf_nostdinc="$cf_opt"
- ;;
- -I/usr/include) #(vi
- cf_std_incl="$cf_opt"
- ;;
- *) #(vi
- cf_cpp_opts="$cf_cpp_opts $cf_opt"
- ;;
- esac
- done
- if test -z "$cf_nostdinc" ; then
- IMAKE_CFLAGS="$cf_cpp_opts $cf_std_incl"
- elif test -z "$cf_std_incl" ; then
- IMAKE_CFLAGS="$cf_cpp_opts $cf_nostdinc"
- else
- test -n "$verbose" && echo " suppressed \"$cf_nostdinc\" and \"$cf_std_incl\"" 1>&6
-
- IMAKE_CFLAGS="$cf_cpp_opts"
- fi
- fi
- fi
-fi
-
-# Some imake configurations define PROJECTROOT with an empty value. Remove
-# the empty definition.
-case $IMAKE_CFLAGS in
-*-DPROJECTROOT=/*)
- ;;
-*)
- IMAKE_CFLAGS=`echo "$IMAKE_CFLAGS" |sed -e "s,-DPROJECTROOT=[ ], ,"`
- ;;
-esac
-
-fi
-
-test -n "$verbose" && echo " IMAKE_CFLAGS $IMAKE_CFLAGS" 1>&6
-
-test -n "$verbose" && echo " IMAKE_LOADFLAGS $IMAKE_LOADFLAGS" 1>&6
-
-fi
-
-if test -n "$IMAKE" && test -n "$IMAKE_CFLAGS" ; then
-
-cf_fix_cppflags=no
-cf_new_cflags=
-cf_new_cppflags=
-cf_new_extra_cppflags=
-
-for cf_add_cflags in $IMAKE_CFLAGS
-do
-case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
- case $cf_add_cflags in
- -D*)
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=yes
-
- if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- fi
- ;;
- esac
- case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
- ;;
- *) #(vi
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
- ;;
- esac
- ;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
- ;;
- esac
- ;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
-
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=no
- ;;
-esac
-done
-
-if test -n "$cf_new_cflags" ; then
-
- CFLAGS="$CFLAGS $cf_new_cflags"
-fi
-
-if test -n "$cf_new_cppflags" ; then
-
- CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
-fi
-
-if test -n "$cf_new_extra_cppflags" ; then
-
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
-fi
-
-else
- IMAKE_CFLAGS=
- IMAKE_LOADFLAGS=
- test -n "$verbose" && echo " make fallback definitions" 1>&6
-
- # We prefer config.guess' values when we can get them, to avoid
- # inconsistent results with uname (AIX for instance). However,
- # config.guess is not always consistent either.
- case $host_os in
- *[0-9].[0-9]*)
- UNAME_RELEASE="$host_os"
- ;;
- *)
- UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
- ;;
- esac
-
- case .$UNAME_RELEASE in
- *[0-9].[0-9]*)
- OSMAJORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[^0-9]*//' -e 's/\..*//'`
- OSMINORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[^0-9]*//' -e 's/^[^.]*\.//' -e 's/\..*//' -e 's/[^0-9].*//' `
- test -z "$OSMAJORVERSION" && OSMAJORVERSION=1
- test -z "$OSMINORVERSION" && OSMINORVERSION=0
- IMAKE_CFLAGS="-DOSMAJORVERSION=$OSMAJORVERSION -DOSMINORVERSION=$OSMINORVERSION $IMAKE_CFLAGS"
- ;;
- esac
-
- # FUNCPROTO is standard with X11R6, but XFree86 drops it, leaving some
- # fallback/fragments for NeedPrototypes, etc.
- IMAKE_CFLAGS="-DFUNCPROTO=15 $IMAKE_CFLAGS"
-
- # If this is not set properly, Xaw's scrollbars will not work
- if test "$enable_narrowproto" = yes ; then
- IMAKE_CFLAGS="-DNARROWPROTO=1 $IMAKE_CFLAGS"
- fi
-
- # Other special definitions:
- case $host_os in
- aix*)
- # imake on AIX 5.1 defines AIXV3. really.
- IMAKE_CFLAGS="-DAIXV3 -DAIXV4 $IMAKE_CFLAGS"
- ;;
- irix[56].*) #(vi
- # these are needed to make SIGWINCH work in xterm
- IMAKE_CFLAGS="-DSYSV -DSVR4 $IMAKE_CFLAGS"
- ;;
- esac
-
-cf_fix_cppflags=no
-cf_new_cflags=
-cf_new_cppflags=
-cf_new_extra_cppflags=
-
-for cf_add_cflags in $IMAKE_CFLAGS
-do
-case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
- case $cf_add_cflags in
- -D*)
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=yes
-
- if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- fi
- ;;
- esac
- case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
- ;;
- *) #(vi
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
- ;;
- esac
- ;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
- ;;
- esac
- ;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
-
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=no
- ;;
-esac
-done
-
-if test -n "$cf_new_cflags" ; then
-
- CFLAGS="$CFLAGS $cf_new_cflags"
-fi
-
-if test -n "$cf_new_cppflags" ; then
-
- CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
-fi
-
-if test -n "$cf_new_extra_cppflags" ; then
-
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
-fi
-
-fi
-
-echo "$as_me:8833: checking for default terminal-id" >&5
-echo $ECHO_N "checking for default terminal-id... $ECHO_C" >&6
-
-# Check whether --with-terminal-id or --without-terminal-id was given.
-if test "${with_terminal_id+set}" = set; then
- withval="$with_terminal_id"
- default_termid=$withval
-else
- default_termid=vt100
-fi;
-echo "$as_me:8843: result: $default_termid" >&5
-echo "${ECHO_T}$default_termid" >&6
-case $default_termid in
-vt*) default_termid=`echo $default_termid | sed -e 's/^..//'`
- ;;
-esac
-cat >>confdefs.h <<EOF
-#define DFT_DECID "$default_termid"
-EOF
-
-echo "$as_me:8853: checking for default terminal-type" >&5
-echo $ECHO_N "checking for default terminal-type... $ECHO_C" >&6
-
-# Check whether --with-terminal-type or --without-terminal-type was given.
-if test "${with_terminal_type+set}" = set; then
- withval="$with_terminal_type"
- default_TERM=$withval
-else
- default_TERM=xterm
-fi;
-echo "$as_me:8863: result: $default_TERM" >&5
-echo "${ECHO_T}$default_TERM" >&6
-cat >>confdefs.h <<EOF
-#define DFT_TERMTYPE "$default_TERM"
-EOF
-
-echo "$as_me:8869: checking for private terminfo-directory" >&5
-echo $ECHO_N "checking for private terminfo-directory... $ECHO_C" >&6
-
-# Check whether --with-own-terminfo or --without-own-terminfo was given.
-if test "${with_own_terminfo+set}" = set; then
- withval="$with_own_terminfo"
- TERMINFO_DIR=$withval
-else
- TERMINFO_DIR=${TERMINFO-none}
-fi;
-echo "$as_me:8879: result: $TERMINFO_DIR" >&5
-echo "${ECHO_T}$TERMINFO_DIR" >&6
-if test "$TERMINFO_DIR" = yes ; then
- { echo "$as_me:8882: WARNING: no value given" >&5
-echo "$as_me: WARNING: no value given" >&2;}
-elif test "$TERMINFO_DIR" != none ; then
- if test -d $TERMINFO_DIR ; then
- cat >>confdefs.h <<EOF
-#define OWN_TERMINFO_DIR "$TERMINFO_DIR"
-EOF
-
- else
- { echo "$as_me:8891: WARNING: not a directory" >&5
-echo "$as_me: WARNING: not a directory" >&2;}
- fi
-elif test "$prefix" != NONE ; then
- TERMINFO_DIR='${prefix}/lib/terminfo'
-elif test -d /usr/lib/terminfo ; then
- TERMINFO_DIR=/usr/lib/terminfo
-else
- TERMINFO_DIR=
-fi
-SET_TERMINFO=
-if test -n "$TERMINFO_DIR" ; then
- TERMINFO_DIR='$(DESTDIR)'$TERMINFO_DIR
- SET_TERMINFO='TERMINFO=$(TERMINFO_DIR)'
-fi
-
-###############################################################################
-
-echo "$as_me:8909: checking if you want active-icons" >&5
-echo $ECHO_N "checking if you want active-icons... $ECHO_C" >&6
-
-# Check whether --enable-active-icon or --disable-active-icon was given.
-if test "${enable_active_icon+set}" = set; then
- enableval="$enable_active_icon"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_active_icon=no
- else
- enable_active_icon=yes
- fi
-else
- enableval=yes
- enable_active_icon=yes
-
-fi;
-echo "$as_me:8926: result: $enable_active_icon" >&5
-echo "${ECHO_T}$enable_active_icon" >&6
-if test "$enable_active_icon" = no ; then
- cat >>confdefs.h <<\EOF
-#define NO_ACTIVE_ICON 1
-EOF
-
-fi
-
-echo "$as_me:8935: checking if you want ANSI color" >&5
-echo $ECHO_N "checking if you want ANSI color... $ECHO_C" >&6
-
-# Check whether --enable-ansi-color or --disable-ansi-color was given.
-if test "${enable_ansi_color+set}" = set; then
- enableval="$enable_ansi_color"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_ansi_color=no
- else
- enable_ansi_color=yes
- fi
-else
- enableval=yes
- enable_ansi_color=yes
-
-fi;
-echo "$as_me:8952: result: $enable_ansi_color" >&5
-echo "${ECHO_T}$enable_ansi_color" >&6
-test "$enable_ansi_color" = no && cat >>confdefs.h <<\EOF
-#define OPT_ISO_COLORS 0
-EOF
-
-if test "$enable_ansi_color" = yes ; then
-
- echo "$as_me:8960: checking if you want 16 colors like aixterm" >&5
-echo $ECHO_N "checking if you want 16 colors like aixterm... $ECHO_C" >&6
-
-# Check whether --enable-16-color or --disable-16-color was given.
-if test "${enable_16_color+set}" = set; then
- enableval="$enable_16_color"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_16_color=no
- else
- enable_16_color=yes
- fi
-else
- enableval=yes
- enable_16_color=yes
-
-fi;
- echo "$as_me:8977: result: $enable_16_color" >&5
-echo "${ECHO_T}$enable_16_color" >&6
- test "$enable_16_color" = no && cat >>confdefs.h <<\EOF
-#define OPT_AIX_COLORS 0
-EOF
-
- echo "$as_me:8983: checking if you want 256 colors" >&5
-echo $ECHO_N "checking if you want 256 colors... $ECHO_C" >&6
-
-# Check whether --enable-256-color or --disable-256-color was given.
-if test "${enable_256_color+set}" = set; then
- enableval="$enable_256_color"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_256_color=yes
- else
- enable_256_color=no
- fi
-else
- enableval=no
- enable_256_color=no
-
-fi;
- echo "$as_me:9000: result: $enable_256_color" >&5
-echo "${ECHO_T}$enable_256_color" >&6
- if test "$enable_256_color" = yes ; then
- CHARPROC_DEPS="$CHARPROC_DEPS 256colres.h"
- EXTRAHDRS="$EXTRAHDRS 256colres.h"
- cat >>confdefs.h <<\EOF
-#define OPT_256_COLORS 1
-EOF
-
- else
- echo "$as_me:9010: checking if you want 88 colors" >&5
-echo $ECHO_N "checking if you want 88 colors... $ECHO_C" >&6
-
-# Check whether --enable-88-color or --disable-88-color was given.
-if test "${enable_88_color+set}" = set; then
- enableval="$enable_88_color"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_88_color=yes
- else
- enable_88_color=no
- fi
-else
- enableval=no
- enable_88_color=no
-
-fi;
- echo "$as_me:9027: result: $enable_88_color" >&5
-echo "${ECHO_T}$enable_88_color" >&6
- if test "$enable_88_color" = yes ; then
- CHARPROC_DEPS="$CHARPROC_DEPS 88colres.h"
- EXTRAHDRS="$EXTRAHDRS 88colres.h"
- cat >>confdefs.h <<\EOF
-#define OPT_88_COLORS 1
-EOF
-
- fi
- fi
-
-fi
-
-echo "$as_me:9041: checking if you want blinking cursor" >&5
-echo $ECHO_N "checking if you want blinking cursor... $ECHO_C" >&6
-
-# Check whether --enable-blink-cursor or --disable-blink-cursor was given.
-if test "${enable_blink_cursor+set}" = set; then
- enableval="$enable_blink_cursor"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_blink_curs=no
- else
- enable_blink_curs=yes
- fi
-else
- enableval=yes
- enable_blink_curs=yes
-
-fi;
-echo "$as_me:9058: result: $enable_blink_curs" >&5
-echo "${ECHO_T}$enable_blink_curs" >&6
-test "$enable_blink_curs" = no && cat >>confdefs.h <<\EOF
-#define OPT_BLINK_CURS 0
-EOF
-
-echo "$as_me:9064: checking if you want to ignore Linux's broken palette-strings" >&5
-echo $ECHO_N "checking if you want to ignore Linux's broken palette-strings... $ECHO_C" >&6
-
-case $host_os in #(vi
-linux*)
- assume_broken_osc=yes ;; #(vi
-*)
- assume_broken_osc=no ;;
-esac
-
-# Check whether --enable-broken-osc or --disable-broken-osc was given.
-if test "${enable_broken_osc+set}" = set; then
- enableval="$enable_broken_osc"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "$assume_broken_osc" ; then
- enable_broken_osc=$enableval
- else
- enable_broken_osc=$enableval
- fi
-else
- enableval=$assume_broken_osc
- enable_broken_osc=$enableval
-
-fi;
-echo "$as_me:9088: result: $enable_broken_osc" >&5
-echo "${ECHO_T}$enable_broken_osc" >&6
-if test "$enable_broken_osc" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_BROKEN_OSC 1
-EOF
-
-else
- cat >>confdefs.h <<\EOF
-#define OPT_BROKEN_OSC 0
-EOF
-
-fi
-
-echo "$as_me:9102: checking if you want to allow broken string-terminators" >&5
-echo $ECHO_N "checking if you want to allow broken string-terminators... $ECHO_C" >&6
-
-# Check whether --enable-broken-st or --disable-broken-st was given.
-if test "${enable_broken_st+set}" = set; then
- enableval="$enable_broken_st"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_broken_st=yes
- else
- enable_broken_st=no
- fi
-else
- enableval=no
- enable_broken_st=no
-
-fi;
-echo "$as_me:9119: result: $enable_broken_st" >&5
-echo "${ECHO_T}$enable_broken_st" >&6
-test "$enable_broken_st" = no && cat >>confdefs.h <<\EOF
-#define OPT_BROKEN_ST 0
-EOF
-
-echo "$as_me:9125: checking if you want printable 128-159" >&5
-echo $ECHO_N "checking if you want printable 128-159... $ECHO_C" >&6
-
-# Check whether --enable-c1-print or --disable-c1-print was given.
-if test "${enable_c1_print+set}" = set; then
- enableval="$enable_c1_print"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_c1_print=no
- else
- enable_c1_print=yes
- fi
-else
- enableval=yes
- enable_c1_print=yes
-
-fi;
-echo "$as_me:9142: result: $enable_c1_print" >&5
-echo "${ECHO_T}$enable_c1_print" >&6
-test "$enable_c1_print" = no && cat >>confdefs.h <<\EOF
-#define OPT_C1_PRINT 0
-EOF
-
-if test "$enable_ansi_color" = yes ; then
-
- echo "$as_me:9150: checking if you want bold colors mapped like IBM PC" >&5
-echo $ECHO_N "checking if you want bold colors mapped like IBM PC... $ECHO_C" >&6
-
-# Check whether --enable-bold-color or --disable-bold-color was given.
-if test "${enable_bold_color+set}" = set; then
- enableval="$enable_bold_color"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_pc_color=no
- else
- enable_pc_color=yes
- fi
-else
- enableval=yes
- enable_pc_color=yes
-
-fi;
- echo "$as_me:9167: result: $enable_pc_color" >&5
-echo "${ECHO_T}$enable_pc_color" >&6
- test "$enable_pc_color" = no && cat >>confdefs.h <<\EOF
-#define OPT_PC_COLORS 0
-EOF
-
- echo "$as_me:9173: checking if you want separate color-classes" >&5
-echo $ECHO_N "checking if you want separate color-classes... $ECHO_C" >&6
-
-# Check whether --enable-color-class or --disable-color-class was given.
-if test "${enable_color_class+set}" = set; then
- enableval="$enable_color_class"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_color_class=no
- else
- enable_color_class=yes
- fi
-else
- enableval=yes
- enable_color_class=yes
-
-fi;
- echo "$as_me:9190: result: $enable_color_class" >&5
-echo "${ECHO_T}$enable_color_class" >&6
- test "$enable_color_class" = no && cat >>confdefs.h <<\EOF
-#define OPT_COLOR_CLASS FALSE
-EOF
-
- echo "$as_me:9196: checking if you want color-mode enabled by default" >&5
-echo $ECHO_N "checking if you want color-mode enabled by default... $ECHO_C" >&6
-
-# Check whether --enable-color-mode or --disable-color-mode was given.
-if test "${enable_color_mode+set}" = set; then
- enableval="$enable_color_mode"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- default_colormode=no
- else
- default_colormode=yes
- fi
-else
- enableval=yes
- default_colormode=yes
-
-fi;
- echo "$as_me:9213: result: $default_colormode" >&5
-echo "${ECHO_T}$default_colormode" >&6
- test "$default_colormode" = no && cat >>confdefs.h <<\EOF
-#define DFT_COLORMODE FALSE
-EOF
-
-fi
-
-echo "$as_me:9221: checking if you want support for color highlighting" >&5
-echo $ECHO_N "checking if you want support for color highlighting... $ECHO_C" >&6
-
-# Check whether --enable-highlighting or --disable-highlighting was given.
-if test "${enable_highlighting+set}" = set; then
- enableval="$enable_highlighting"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- default_highlight=no
- else
- default_highlight=yes
- fi
-else
- enableval=yes
- default_highlight=yes
-
-fi;
-echo "$as_me:9238: result: $default_highlight" >&5
-echo "${ECHO_T}$default_highlight" >&6
-test "$default_highlight" = no && cat >>confdefs.h <<\EOF
-#define OPT_HIGHLIGHT_COLOR 0
-EOF
-
-echo "$as_me:9244: checking if you want support for doublesize characters" >&5
-echo $ECHO_N "checking if you want support for doublesize characters... $ECHO_C" >&6
-
-# Check whether --enable-doublechars or --disable-doublechars was given.
-if test "${enable_doublechars+set}" = set; then
- enableval="$enable_doublechars"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_doublechars=no
- else
- enable_doublechars=yes
- fi
-else
- enableval=yes
- enable_doublechars=yes
-
-fi;
-echo "$as_me:9261: result: $enable_doublechars" >&5
-echo "${ECHO_T}$enable_doublechars" >&6
-test "$enable_doublechars" = no && cat >>confdefs.h <<\EOF
-#define OPT_DEC_CHRSET 0
-EOF
-
-echo "$as_me:9267: checking if you want fallback-support for box characters" >&5
-echo $ECHO_N "checking if you want fallback-support for box characters... $ECHO_C" >&6
-
-# Check whether --enable-boxchars or --disable-boxchars was given.
-if test "${enable_boxchars+set}" = set; then
- enableval="$enable_boxchars"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_boxchars=no
- else
- enable_boxchars=yes
- fi
-else
- enableval=yes
- enable_boxchars=yes
-
-fi;
-echo "$as_me:9284: result: $enable_boxchars" >&5
-echo "${ECHO_T}$enable_boxchars" >&6
-test "$enable_boxchars" = no && cat >>confdefs.h <<\EOF
-#define OPT_BOX_CHARS 0
-EOF
-
-echo "$as_me:9290: checking if you want to use FreeType library" >&5
-echo $ECHO_N "checking if you want to use FreeType library... $ECHO_C" >&6
-
-# Check whether --enable-freetype or --disable-freetype was given.
-if test "${enable_freetype+set}" = set; then
- enableval="$enable_freetype"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_freetype=no
- else
- enable_freetype=yes
- fi
-else
- enableval=yes
- enable_freetype=yes
-
-fi;
-echo "$as_me:9307: result: $enable_freetype" >&5
-echo "${ECHO_T}$enable_freetype" >&6
-if test "$enable_freetype" = yes ; then
-
-cf_extra_freetype_libs=
-# Extract the first word of "xft-config", so it can be a program name with args.
-set dummy xft-config; ac_word=$2
-echo "$as_me:9314: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_FREETYPE_CONFIG+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $FREETYPE_CONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- if $as_executable_p "$ac_dir/$ac_word"; then
- ac_cv_path_FREETYPE_CONFIG="$ac_dir/$ac_word"
- echo "$as_me:9331: found $ac_dir/$ac_word" >&5
- break
-fi
-done
-
- test -z "$ac_cv_path_FREETYPE_CONFIG" && ac_cv_path_FREETYPE_CONFIG="none"
- ;;
-esac
-fi
-FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG
-
-if test -n "$FREETYPE_CONFIG"; then
- echo "$as_me:9343: result: $FREETYPE_CONFIG" >&5
-echo "${ECHO_T}$FREETYPE_CONFIG" >&6
-else
- echo "$as_me:9346: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-if test "$FREETYPE_CONFIG" = none; then
- cf_extra_freetype_libs="-lXft"
- # Extract the first word of "freetype-config", so it can be a program name with args.
-set dummy freetype-config; ac_word=$2
-echo "$as_me:9354: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_FREETYPE_CONFIG+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $FREETYPE_CONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- if $as_executable_p "$ac_dir/$ac_word"; then
- ac_cv_path_FREETYPE_CONFIG="$ac_dir/$ac_word"
- echo "$as_me:9371: found $ac_dir/$ac_word" >&5
- break
-fi
-done
-
- test -z "$ac_cv_path_FREETYPE_CONFIG" && ac_cv_path_FREETYPE_CONFIG="none"
- ;;
-esac
-fi
-FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG
-
-if test -n "$FREETYPE_CONFIG"; then
- echo "$as_me:9383: result: $FREETYPE_CONFIG" >&5
-echo "${ECHO_T}$FREETYPE_CONFIG" >&6
-else
- echo "$as_me:9386: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-
-if test "$FREETYPE_CONFIG" != none ; then
-
-# Check whether --with-freetype-cflags or --without-freetype-cflags was given.
-if test "${with_freetype_cflags+set}" = set; then
- withval="$with_freetype_cflags"
- cf_cv_x_freetype_incs="$withval"
- test -n "$verbose" && echo " freetype-cflags $cf_cv_x_freetype_incs" 1>&6
-
-else
-
-echo "$as_me:9402: checking for X FreeType headers" >&5
-echo $ECHO_N "checking for X FreeType headers... $ECHO_C" >&6
-if test "${cf_cv_x_freetype_incs+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cf_cv_x_freetype_incs="`$FREETYPE_CONFIG --cflags 2>/dev/null`"
-
-fi
-echo "$as_me:9411: result: $cf_cv_x_freetype_incs" >&5
-echo "${ECHO_T}$cf_cv_x_freetype_incs" >&6
-fi;
-
-# Check whether --with-freetype-libs or --without-freetype-libs was given.
-if test "${with_freetype_libs+set}" = set; then
- withval="$with_freetype_libs"
- cf_cv_x_freetype_libs="$withval"
- test -n "$verbose" && echo " freetype-libs $cf_cv_x_freetype_libs" 1>&6
-
-else
-
-echo "$as_me:9423: checking for X FreeType libraries" >&5
-echo $ECHO_N "checking for X FreeType libraries... $ECHO_C" >&6
-if test "${cf_cv_x_freetype_libs+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cf_save_LIBS="$LIBS"
-cf_save_INCS="$CPPFLAGS"
-
-cf_cv_x_freetype_libs="$cf_extra_freetype_libs `$FREETYPE_CONFIG --libs 2>/dev/null`"
-
-LIBS="$cf_cv_x_freetype_libs $LIBS"
-CPPFLAGS="$cf_cv_x_freetype_incs $CPPFLAGS"
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 9438 "configure"
-#include "confdefs.h"
-
-#include <X11/Xlib.h>
-#include <X11/extensions/Xrender.h>
-#include <X11/Xft/Xft.h>
-int
-main ()
-{
-
- XftPattern *pat = XftNameParse ("name");
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9455: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9458: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9461: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9464: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_x_freetype_libs=
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- LIBS="$cf_save_LIBS"
- CPPFLAGS="$cf_save_INCS"
-
-fi
-echo "$as_me:9477: result: $cf_cv_x_freetype_libs" >&5
-echo "${ECHO_T}$cf_cv_x_freetype_libs" >&6
-fi;
-
-if test -n "$cf_cv_x_freetype_libs" ; then
- LIBS="$cf_cv_x_freetype_libs $LIBS"
-
-cf_fix_cppflags=no
-cf_new_cflags=
-cf_new_cppflags=
-cf_new_extra_cppflags=
-
-for cf_add_cflags in $cf_cv_x_freetype_incs
-do
-case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
- case $cf_add_cflags in
- -D*)
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=yes
-
- if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
- continue
- fi
- ;;
- esac
- case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
- ;;
- *) #(vi
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
- ;;
- esac
- ;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
- ;;
- esac
- ;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
-
- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
-
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
- && test -z "${cf_tst_cflags}" \
- && cf_fix_cppflags=no
- ;;
-esac
-done
-
-if test -n "$cf_new_cflags" ; then
-
- CFLAGS="$CFLAGS $cf_new_cflags"
-fi
-
-if test -n "$cf_new_cppflags" ; then
-
- CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
-fi
-
-if test -n "$cf_new_extra_cppflags" ; then
-
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
-fi
-
- cat >>confdefs.h <<\EOF
-#define XRENDERFONT 1
-EOF
-
-else
- CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-DXRENDERFONT//`
-fi
-else
- CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-DXRENDERFONT//`
-fi
-
-# FIXME: revisit this if needed
-
-else
- CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-DXRENDERFONT//`
-fi
-
-echo "$as_me:9569: checking if you want support for HP-style function keys" >&5
-echo $ECHO_N "checking if you want support for HP-style function keys... $ECHO_C" >&6
-
-# Check whether --enable-hp-fkeys or --disable-hp-fkeys was given.
-if test "${enable_hp_fkeys+set}" = set; then
- enableval="$enable_hp_fkeys"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_hp_fkeys=yes
- else
- enable_hp_fkeys=no
- fi
-else
- enableval=no
- enable_hp_fkeys=no
-
-fi;
-echo "$as_me:9586: result: $enable_hp_fkeys" >&5
-echo "${ECHO_T}$enable_hp_fkeys" >&6
-if test "$enable_hp_fkeys" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_HP_FUNC_KEYS 1
-EOF
-
-fi
-
-echo "$as_me:9595: checking if you want support for SCO-style function keys" >&5
-echo $ECHO_N "checking if you want support for SCO-style function keys... $ECHO_C" >&6
-
-# Check whether --enable-sco-fkeys or --disable-sco-fkeys was given.
-if test "${enable_sco_fkeys+set}" = set; then
- enableval="$enable_sco_fkeys"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_sco_fkeys=yes
- else
- enable_sco_fkeys=no
- fi
-else
- enableval=no
- enable_sco_fkeys=no
-
-fi;
-echo "$as_me:9612: result: $enable_sco_fkeys" >&5
-echo "${ECHO_T}$enable_sco_fkeys" >&6
-if test "$enable_sco_fkeys" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_SCO_FUNC_KEYS 1
-EOF
-
-fi
-
-echo "$as_me:9621: checking if you want support for internationalization" >&5
-echo $ECHO_N "checking if you want support for internationalization... $ECHO_C" >&6
-
-# Check whether --enable-i18n or --disable-i18n was given.
-if test "${enable_i18n+set}" = set; then
- enableval="$enable_i18n"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_i18n=no
- else
- enable_i18n=yes
- fi
-else
- enableval=yes
- enable_i18n=yes
-
-fi;
-echo "$as_me:9638: result: $enable_i18n" >&5
-echo "${ECHO_T}$enable_i18n" >&6
-if test "$enable_i18n" = no ; then
- cat >>confdefs.h <<\EOF
-#define OPT_I18N_SUPPORT 0
-EOF
-
-fi
-
-echo "$as_me:9647: checking if you want support for initial-erase setup" >&5
-echo $ECHO_N "checking if you want support for initial-erase setup... $ECHO_C" >&6
-
-# Check whether --enable-initial-erase or --disable-initial-erase was given.
-if test "${enable_initial_erase+set}" = set; then
- enableval="$enable_initial_erase"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_ie=no
- else
- enable_ie=yes
- fi
-else
- enableval=yes
- enable_ie=yes
-
-fi;
-echo "$as_me:9664: result: $enable_ie" >&5
-echo "${ECHO_T}$enable_ie" >&6
-if test "$enable_ie" = no ; then
- cat >>confdefs.h <<\EOF
-#define OPT_INITIAL_ERASE 0
-EOF
-
-fi
-
-echo "$as_me:9673: checking if you want support for input-method" >&5
-echo $ECHO_N "checking if you want support for input-method... $ECHO_C" >&6
-
-# Check whether --enable-input-method or --disable-input-method was given.
-if test "${enable_input_method+set}" = set; then
- enableval="$enable_input_method"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_ximp=no
- else
- enable_ximp=yes
- fi
-else
- enableval=yes
- enable_ximp=yes
-
-fi;
-echo "$as_me:9690: result: $enable_ximp" >&5
-echo "${ECHO_T}$enable_ximp" >&6
-
-echo "$as_me:9693: checking if X libraries support input-method" >&5
-echo $ECHO_N "checking if X libraries support input-method... $ECHO_C" >&6
-if test "${cf_cv_input_method+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 9700 "configure"
-#include "confdefs.h"
-
-#include <X11/IntrinsicP.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/Xmu/Atoms.h>
-#include <X11/Xmu/Converters.h>
-#include <X11/Xaw/XawImP.h>
-
-int
-main ()
-{
-
-{
- XIM xim;
- XIMStyles *xim_styles = 0;
- XIMStyle input_style;
- Widget w = 0;
-
- XSetLocaleModifiers("@im=none");
- xim = XOpenIM(XtDisplay(w), NULL, NULL, NULL);
- XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL);
- XCloseIM(xim);
- input_style = (XIMPreeditNothing | XIMStatusNothing);
-}
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9732: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:9735: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9738: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:9741: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_input_method=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_cv_input_method=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:9751: result: $cf_cv_input_method" >&5
-echo "${ECHO_T}$cf_cv_input_method" >&6
-
-test "$cf_cv_input_method" = no && enable_ximp=no
-if test "$enable_ximp" = no ; then
- cat >>confdefs.h <<\EOF
-#define OPT_INPUT_METHOD 0
-EOF
-
-fi
-
-echo "$as_me:9762: checking if you want support for load-vt-fonts" >&5
-echo $ECHO_N "checking if you want support for load-vt-fonts... $ECHO_C" >&6
-
-# Check whether --enable-load-vt-fonts or --disable-load-vt-fonts was given.
-if test "${enable_load_vt_fonts+set}" = set; then
- enableval="$enable_load_vt_fonts"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_load_vt_fonts=yes
- else
- enable_load_vt_fonts=no
- fi
-else
- enableval=no
- enable_load_vt_fonts=no
-
-fi;
-echo "$as_me:9779: result: $enable_load_vt_fonts" >&5
-echo "${ECHO_T}$enable_load_vt_fonts" >&6
-if test "$enable_load_vt_fonts" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_LOAD_VTFONTS 1
-EOF
-
-fi
-
-echo "$as_me:9788: checking if you want support for logging" >&5
-echo $ECHO_N "checking if you want support for logging... $ECHO_C" >&6
-
-# Check whether --enable-logging or --disable-logging was given.
-if test "${enable_logging+set}" = set; then
- enableval="$enable_logging"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_logging=yes
- else
- enable_logging=no
- fi
-else
- enableval=no
- enable_logging=no
-
-fi;
-echo "$as_me:9805: result: $enable_logging" >&5
-echo "${ECHO_T}$enable_logging" >&6
-if test "$enable_logging" = yes ; then
- cat >>confdefs.h <<\EOF
-#define ALLOWLOGGING 1
-EOF
-
- echo "$as_me:9812: checking if you want to allow logging via a pipe" >&5
-echo $ECHO_N "checking if you want to allow logging via a pipe... $ECHO_C" >&6
-
-# Check whether --enable-logfile-exec or --disable-logfile-exec was given.
-if test "${enable_logfile_exec+set}" = set; then
- enableval="$enable_logfile_exec"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_log_exec=yes
- else
- enable_log_exec=no
- fi
-else
- enableval=no
- enable_log_exec=no
-
-fi;
- echo "$as_me:9829: result: $enable_log_exec" >&5
-echo "${ECHO_T}$enable_log_exec" >&6
- if test "$enable_log_exec" = yes ; then
- cat >>confdefs.h <<\EOF
-#define ALLOWLOGFILEEXEC 1
-EOF
-
- fi
-fi
-
-echo "$as_me:9839: checking if you want support for iconify/maximize translations" >&5
-echo $ECHO_N "checking if you want support for iconify/maximize translations... $ECHO_C" >&6
-
-# Check whether --enable-maximize or --disable-maximize was given.
-if test "${enable_maximize+set}" = set; then
- enableval="$enable_maximize"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_maximize=no
- else
- enable_maximize=yes
- fi
-else
- enableval=yes
- enable_maximize=yes
-
-fi;
-echo "$as_me:9856: result: $enable_maximize" >&5
-echo "${ECHO_T}$enable_maximize" >&6
-test "$enable_maximize" = no && cat >>confdefs.h <<\EOF
-#define OPT_MAXIMIZE 0
-EOF
-
-echo "$as_me:9862: checking if you want NumLock to override keyboard tables" >&5
-echo $ECHO_N "checking if you want NumLock to override keyboard tables... $ECHO_C" >&6
-
-# Check whether --enable-num-lock or --disable-num-lock was given.
-if test "${enable_num_lock+set}" = set; then
- enableval="$enable_num_lock"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_numlock=no
- else
- enable_numlock=yes
- fi
-else
- enableval=yes
- enable_numlock=yes
-
-fi;
-echo "$as_me:9879: result: $enable_numlock" >&5
-echo "${ECHO_T}$enable_numlock" >&6
-test "$enable_numlock" = no && cat >>confdefs.h <<\EOF
-#define OPT_NUM_LOCK 0
-EOF
-
-echo "$as_me:9885: checking if you want support for get/set of base64 selection data" >&5
-echo $ECHO_N "checking if you want support for get/set of base64 selection data... $ECHO_C" >&6
-
-# Check whether --enable-paste64 or --disable-paste64 was given.
-if test "${enable_paste64+set}" = set; then
- enableval="$enable_paste64"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_paste64=yes
- else
- enable_paste64=no
- fi
-else
- enableval=no
- enable_paste64=no
-
-fi;
-echo "$as_me:9902: result: $enable_paste64" >&5
-echo "${ECHO_T}$enable_paste64" >&6
-if test "$enable_paste64" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_PASTE64 1
-EOF
-
-else
- cat >>confdefs.h <<\EOF
-#define OPT_PASTE64 0
-EOF
-
-fi
-
-echo "$as_me:9916: checking if you want support for pty-handshaking" >&5
-echo $ECHO_N "checking if you want support for pty-handshaking... $ECHO_C" >&6
-
-# Check whether --enable-pty-handshake or --disable-pty-handshake was given.
-if test "${enable_pty_handshake+set}" = set; then
- enableval="$enable_pty_handshake"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_pty_handshake=no
- else
- enable_pty_handshake=yes
- fi
-else
- enableval=yes
- enable_pty_handshake=yes
-
-fi;
-echo "$as_me:9933: result: $enable_pty_handshake" >&5
-echo "${ECHO_T}$enable_pty_handshake" >&6
-if test "$enable_pty_handshake" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_PTY_HANDSHAKE 1
-EOF
-
-else
- cat >>confdefs.h <<\EOF
-#define OPT_PTY_HANDSHAKE 0
-EOF
-
-fi
-
-echo "$as_me:9947: checking if you want support for mouse in readline applications" >&5
-echo $ECHO_N "checking if you want support for mouse in readline applications... $ECHO_C" >&6
-
-# Check whether --enable-readline-mouse or --disable-readline-mouse was given.
-if test "${enable_readline_mouse+set}" = set; then
- enableval="$enable_readline_mouse"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_readline_mouse=yes
- else
- enable_readline_mouse=no
- fi
-else
- enableval=no
- enable_readline_mouse=no
-
-fi;
-echo "$as_me:9964: result: $enable_readline_mouse" >&5
-echo "${ECHO_T}$enable_readline_mouse" >&6
-if test "$enable_readline_mouse" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_READLINE 1
-EOF
-
-fi
-
-echo "$as_me:9973: checking if you want support for right-scrollbar" >&5
-echo $ECHO_N "checking if you want support for right-scrollbar... $ECHO_C" >&6
-
-# Check whether --enable-rightbar or --disable-rightbar was given.
-if test "${enable_rightbar+set}" = set; then
- enableval="$enable_rightbar"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_rightbar=no
- else
- enable_rightbar=yes
- fi
-else
- enableval=yes
- enable_rightbar=yes
-
-fi;
-echo "$as_me:9990: result: $enable_rightbar" >&5
-echo "${ECHO_T}$enable_rightbar" >&6
-if test "$enable_rightbar" = yes ; then
- cat >>confdefs.h <<\EOF
-#define SCROLLBAR_RIGHT 1
-EOF
-
-fi
-
-echo "$as_me:9999: checking if you want check for redundant name-change" >&5
-echo $ECHO_N "checking if you want check for redundant name-change... $ECHO_C" >&6
-
-# Check whether --enable-samename or --disable-samename was given.
-if test "${enable_samename+set}" = set; then
- enableval="$enable_samename"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_samename=no
- else
- enable_samename=yes
- fi
-else
- enableval=yes
- enable_samename=yes
-
-fi;
-echo "$as_me:10016: result: $enable_samename" >&5
-echo "${ECHO_T}$enable_samename" >&6
-test "$enable_samename" = no && cat >>confdefs.h <<\EOF
-#define OPT_SAME_NAME 0
-EOF
-
-echo "$as_me:10022: checking if you want support for session management" >&5
-echo $ECHO_N "checking if you want support for session management... $ECHO_C" >&6
-
-# Check whether --enable-session-mgt or --disable-session-mgt was given.
-if test "${enable_session_mgt+set}" = set; then
- enableval="$enable_session_mgt"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_session_mgt=no
- else
- enable_session_mgt=yes
- fi
-else
- enableval=yes
- enable_session_mgt=yes
-
-fi;
-echo "$as_me:10039: result: $enable_session_mgt" >&5
-echo "${ECHO_T}$enable_session_mgt" >&6
-test "$enable_session_mgt" = no && cat >>confdefs.h <<\EOF
-#define OPT_SESSION_MGT 0
-EOF
-
-echo "$as_me:10045: checking if you want to use termcap-query/report" >&5
-echo $ECHO_N "checking if you want to use termcap-query/report... $ECHO_C" >&6
-
-# Check whether --enable-tcap-query or --disable-tcap-query was given.
-if test "${enable_tcap_query+set}" = set; then
- enableval="$enable_tcap_query"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_tcap_query=yes
- else
- enable_tcap_query=no
- fi
-else
- enableval=no
- enable_tcap_query=no
-
-fi;
-echo "$as_me:10062: result: $enable_tcap_query" >&5
-echo "${ECHO_T}$enable_tcap_query" >&6
-test "$enable_tcap_query" = yes && cat >>confdefs.h <<\EOF
-#define OPT_TCAP_QUERY 1
-EOF
-
-echo "$as_me:10068: checking if you want support for tek4014" >&5
-echo $ECHO_N "checking if you want support for tek4014... $ECHO_C" >&6
-
-# Check whether --enable-tek4014 or --disable-tek4014 was given.
-if test "${enable_tek4014+set}" = set; then
- enableval="$enable_tek4014"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_tek4014=no
- else
- enable_tek4014=yes
- fi
-else
- enableval=yes
- enable_tek4014=yes
-
-fi;
-echo "$as_me:10085: result: $enable_tek4014" >&5
-echo "${ECHO_T}$enable_tek4014" >&6
-if test "$enable_tek4014" = no ; then
- cat >>confdefs.h <<\EOF
-#define OPT_TEK4014 0
-EOF
-
-else
- EXTRAHDRS="$EXTRAHDRS Tekparse.h"
- EXTRASRCS="$EXTRASRCS TekPrsTbl.c Tekproc.c"
- EXTRAOBJS="$EXTRAOBJS TekPrsTbl.o Tekproc.o"
-fi
-
-echo "$as_me:10098: checking if you want pulldown menus with a toolbar" >&5
-echo $ECHO_N "checking if you want pulldown menus with a toolbar... $ECHO_C" >&6
-
-# Check whether --enable-toolbar or --disable-toolbar was given.
-if test "${enable_toolbar+set}" = set; then
- enableval="$enable_toolbar"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_toolbar=yes
- else
- enable_toolbar=no
- fi
-else
- enableval=no
- enable_toolbar=no
-
-fi;
-echo "$as_me:10115: result: $enable_toolbar" >&5
-echo "${ECHO_T}$enable_toolbar" >&6
-if test "$enable_toolbar" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_TOOLBAR 1
-EOF
-
-fi
-
-echo "$as_me:10124: checking if you want VT52 emulation" >&5
-echo $ECHO_N "checking if you want VT52 emulation... $ECHO_C" >&6
-
-# Check whether --enable-vt52 or --disable-vt52 was given.
-if test "${enable_vt52+set}" = set; then
- enableval="$enable_vt52"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_vt52=no
- else
- enable_vt52=yes
- fi
-else
- enableval=yes
- enable_vt52=yes
-
-fi;
-echo "$as_me:10141: result: $enable_vt52" >&5
-echo "${ECHO_T}$enable_vt52" >&6
-test "$enable_vt52" = no && cat >>confdefs.h <<\EOF
-#define OPT_VT52_MODE 0
-EOF
-
-echo "$as_me:10147: checking if you want to use mini-luit/Latin9 built-in support" >&5
-echo $ECHO_N "checking if you want to use mini-luit/Latin9 built-in support... $ECHO_C" >&6
-
-# Check whether --enable-mini-luit or --disable-mini-luit was given.
-if test "${enable_mini_luit+set}" = set; then
- enableval="$enable_mini_luit"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_mini_luit=yes
- else
- enable_mini_luit=no
- fi
-else
- enableval=no
- enable_mini_luit=no
-
-fi;
-echo "$as_me:10164: result: $enable_mini_luit" >&5
-echo "${ECHO_T}$enable_mini_luit" >&6
-if test "$enable_mini_luit" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_MINI_LUIT 1
-EOF
-
-fi
-
-echo "$as_me:10173: checking if you want to use luit" >&5
-echo $ECHO_N "checking if you want to use luit... $ECHO_C" >&6
-
-# Check whether --enable-luit or --disable-luit was given.
-if test "${enable_luit+set}" = set; then
- enableval="$enable_luit"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_luit=yes
- else
- enable_luit=$enable_mini_luit
- fi
-else
- enableval=no
- enable_luit=$enable_mini_luit
-
-fi;
-echo "$as_me:10190: result: $enable_luit" >&5
-echo "${ECHO_T}$enable_luit" >&6
-if test "$enable_luit" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_LUIT_PROG 1
-EOF
-
-fi
-
-echo "$as_me:10199: checking if you want wide-character support" >&5
-echo $ECHO_N "checking if you want wide-character support... $ECHO_C" >&6
-
-# Check whether --enable-wide-chars or --disable-wide-chars was given.
-if test "${enable_wide_chars+set}" = set; then
- enableval="$enable_wide_chars"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "$enable_luit" ; then
- enable_wchar=yes
- else
- enable_wchar=$enable_luit
- fi
-else
- enableval=$enable_luit
- enable_wchar=$enable_luit
-
-fi;
-echo "$as_me:10216: result: $enable_wchar" >&5
-echo "${ECHO_T}$enable_wchar" >&6
-if test "$enable_wchar" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_WIDE_CHARS 1
-EOF
-
- EXTRAHDRS="$EXTRAHDRS charclass.h precompose.h wcwidth.h"
- EXTRASRCS="$EXTRASRCS charclass.c precompose.c wcwidth.c"
- EXTRAOBJS="$EXTRAOBJS charclass.o precompose.o wcwidth.o"
-fi
-
-echo "$as_me:10228: checking if you want dynamic-abbreviation support" >&5
-echo $ECHO_N "checking if you want dynamic-abbreviation support... $ECHO_C" >&6
-
-# Check whether --enable-dabbrev or --disable-dabbrev was given.
-if test "${enable_dabbrev+set}" = set; then
- enableval="$enable_dabbrev"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_dabbrev=yes
- else
- enable_dabbrev=no
- fi
-else
- enableval=no
- enable_dabbrev=no
-
-fi;
-echo "$as_me:10245: result: $enable_dabbrev" >&5
-echo "${ECHO_T}$enable_dabbrev" >&6
-if test "$enable_dabbrev" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_DABBREV 1
-EOF
-
-fi
-
-echo "$as_me:10254: checking if you want DECterm Locator support" >&5
-echo $ECHO_N "checking if you want DECterm Locator support... $ECHO_C" >&6
-
-# Check whether --enable-dec-locator or --disable-dec-locator was given.
-if test "${enable_dec_locator+set}" = set; then
- enableval="$enable_dec_locator"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_dec_locator=yes
- else
- enable_dec_locator=no
- fi
-else
- enableval=no
- enable_dec_locator=no
-
-fi;
-echo "$as_me:10271: result: $enable_dec_locator" >&5
-echo "${ECHO_T}$enable_dec_locator" >&6
-if test "$enable_dec_locator" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_DEC_LOCATOR 1
-EOF
-
-fi
-
-echo "$as_me:10280: checking if you want -ziconbeep option" >&5
-echo $ECHO_N "checking if you want -ziconbeep option... $ECHO_C" >&6
-
-# Check whether --enable-ziconbeep or --disable-ziconbeep was given.
-if test "${enable_ziconbeep+set}" = set; then
- enableval="$enable_ziconbeep"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
- enable_ziconbeep=no
- else
- enable_ziconbeep=yes
- fi
-else
- enableval=yes
- enable_ziconbeep=yes
-
-fi;
-echo "$as_me:10297: result: $enable_ziconbeep" >&5
-echo "${ECHO_T}$enable_ziconbeep" >&6
-test "$enable_ziconbeep" = no && cat >>confdefs.h <<\EOF
-#define OPT_ZICONBEEP 0
-EOF
-
-###############################################################################
-
-echo "$as_me:10305: checking if you want debugging traces" >&5
-echo $ECHO_N "checking if you want debugging traces... $ECHO_C" >&6
-
-# Check whether --enable-trace or --disable-trace was given.
-if test "${enable_trace+set}" = set; then
- enableval="$enable_trace"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_trace=yes
- else
- enable_trace=no
- fi
-else
- enableval=no
- enable_trace=no
-
-fi;
-echo "$as_me:10322: result: $enable_trace" >&5
-echo "${ECHO_T}$enable_trace" >&6
-if test "$enable_trace" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_TRACE 1
-EOF
-
- EXTRASRCS="$EXTRASRCS trace.c"
- EXTRAOBJS="$EXTRAOBJS trace.o"
-fi
-
-echo "$as_me:10333: checking if you want to see long compiling messages" >&5
-echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6
-
-# Check whether --enable-echo or --disable-echo was given.
-if test "${enable_echo+set}" = set; then
- enableval="$enable_echo"
- test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
-
- ECHO_LT='--silent'
- ECHO_LD='@echo linking $@;'
- RULE_CC=' @echo compiling $<'
- SHOW_CC=' @echo compiling $@'
- ECHO_CC='@'
-
- else
-
- ECHO_LT=''
- ECHO_LD=''
- RULE_CC='# compiling'
- SHOW_CC='# compiling'
- ECHO_CC=''
-
- fi
-else
- enableval=yes
-
- ECHO_LT=''
- ECHO_LD=''
- RULE_CC='# compiling'
- SHOW_CC='# compiling'
- ECHO_CC=''
-
-fi;
-echo "$as_me:10367: result: $enableval" >&5
-echo "${ECHO_T}$enableval" >&6
-
-echo "$as_me:10370: checking if you want magic cookie emulation" >&5
-echo $ECHO_N "checking if you want magic cookie emulation... $ECHO_C" >&6
-
-# Check whether --enable-xmc-glitch or --disable-xmc-glitch was given.
-if test "${enable_xmc_glitch+set}" = set; then
- enableval="$enable_xmc_glitch"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- enable_xmc=yes
- else
- enable_xmc=no
- fi
-else
- enableval=no
- enable_xmc=no
-
-fi;
-echo "$as_me:10387: result: $enable_xmc" >&5
-echo "${ECHO_T}$enable_xmc" >&6
-if test "$enable_xmc" = yes ; then
- cat >>confdefs.h <<\EOF
-#define OPT_XMC_GLITCH 1
-EOF
-
- EXTRASRCS="$EXTRASRCS testxmc.c"
- EXTRAOBJS="$EXTRAOBJS testxmc.o"
-fi
-
-if test -n "$GCC" ; then
-echo "$as_me:10399: checking if you want to turn on gcc warnings" >&5
-echo $ECHO_N "checking if you want to turn on gcc warnings... $ECHO_C" >&6
-
-# Check whether --enable-warnings or --disable-warnings was given.
-if test "${enable_warnings+set}" = set; then
- enableval="$enable_warnings"
- test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
- with_warnings=yes
- else
- with_warnings=no
- fi
-else
- enableval=no
- with_warnings=no
-
-fi;
-echo "$as_me:10416: result: $with_warnings" >&5
-echo "${ECHO_T}$with_warnings" >&6
-if test "$with_warnings" = yes
-then
-
-if test "$GCC" = yes
-then
-cat > conftest.i <<EOF
-#ifndef GCC_PRINTF
-#define GCC_PRINTF 0
-#endif
-#ifndef GCC_SCANF
-#define GCC_SCANF 0
-#endif
-#ifndef GCC_NORETURN
-#define GCC_NORETURN /* nothing */
-#endif
-#ifndef GCC_UNUSED
-#define GCC_UNUSED /* nothing */
-#endif
-EOF
-if test "$GCC" = yes
-then
- { echo "$as_me:10439: checking for $CC __attribute__ directives..." >&5
-echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
-cat > conftest.$ac_ext <<EOF
-#line 10442 "configure"
-#include "confdefs.h"
-#include "conftest.h"
-#include "conftest.i"
-#if GCC_PRINTF
-#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
-#else
-#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
-#endif
-#if GCC_SCANF
-#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
-#else
-#define GCC_SCANFLIKE(fmt,var) /*nothing*/
-#endif
-extern void wow(char *,...) GCC_SCANFLIKE(1,2);
-extern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
-extern void foo(void) GCC_NORETURN;
-int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED) { return 0; }
-EOF
- for cf_attribute in scanf printf unused noreturn
- do
-
-cf_ATTRIBUTE=`echo "$cf_attribute" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-
- cf_directive="__attribute__(($cf_attribute))"
- echo "checking for $CC $cf_directive" 1>&5
- case $cf_attribute in
- scanf|printf)
- cat >conftest.h <<EOF
-#define GCC_$cf_ATTRIBUTE 1
-EOF
- ;;
- *)
- cat >conftest.h <<EOF
-#define GCC_$cf_ATTRIBUTE $cf_directive
-EOF
- ;;
- esac
- if { (eval echo "$as_me:10480: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:10483: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:10485: result: ... $cf_attribute" >&5
-echo "${ECHO_T}... $cf_attribute" >&6
- cat conftest.h >>confdefs.h
- fi
- done
-else
- fgrep define conftest.i >>confdefs.h
-fi
-rm -rf conftest*
-fi
-
-GCC_VERSION=none
-if test "$GCC" = yes ; then
- echo "$as_me:10498: checking version of $CC" >&5
-echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
- GCC_VERSION="`${CC} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
- test -z "$GCC_VERSION" && GCC_VERSION=unknown
- echo "$as_me:10502: result: $GCC_VERSION" >&5
-echo "${ECHO_T}$GCC_VERSION" >&6
-fi
-
-INTEL_COMPILER=no
-
-if test "$GCC" = yes ; then
- case $host_os in
- linux*|gnu*)
- echo "$as_me:10511: checking if this is really Intel C compiler" >&5
-echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
- cf_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -no-gcc"
- cat >conftest.$ac_ext <<_ACEOF
-#line 10516 "configure"
-#include "confdefs.h"
-
-int
-main ()
-{
-
-#ifdef __INTEL_COMPILER
-#else
-make an error
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10533: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:10536: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10539: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:10542: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- INTEL_COMPILER=yes
-cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
-
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$cf_save_CFLAGS"
- echo "$as_me:10553: result: $INTEL_COMPILER" >&5
-echo "${ECHO_T}$INTEL_COMPILER" >&6
- ;;
- esac
-fi
-
-cat > conftest.$ac_ext <<EOF
-#line 10560 "configure"
-int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
-EOF
-
-if test "$INTEL_COMPILER" = yes
-then
-# The "-wdXXX" options suppress warnings:
-# remark #1419: external declaration in primary source file
-# remark #1682: implicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
-# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
-# remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
-# remark #193: zero used for undefined preprocessing identifier
-# remark #593: variable "curs_sb_left_arrow" was set but never used
-# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
-# remark #869: parameter "tw" was never referenced
-# remark #981: operands are evaluated in unspecified order
-# warning #269: invalid format string conversion
-
- { echo "$as_me:10578: checking for $CC warning options..." >&5
-echo "$as_me: checking for $CC warning options..." >&6;}
- cf_save_CFLAGS="$CFLAGS"
- EXTRA_CFLAGS="-Wall"
- for cf_opt in \
- wd1419 \
- wd1682 \
- wd1683 \
- wd1684 \
- wd193 \
- wd279 \
- wd593 \
- wd810 \
- wd869 \
- wd981
- do
- CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if { (eval echo "$as_me:10595: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:10598: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:10600: result: ... -$cf_opt" >&5
-echo "${ECHO_T}... -$cf_opt" >&6
- EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
- fi
- done
- CFLAGS="$cf_save_CFLAGS"
-
-elif test "$GCC" = yes
-then
- { echo "$as_me:10609: checking for $CC warning options..." >&5
-echo "$as_me: checking for $CC warning options..." >&6;}
- cf_save_CFLAGS="$CFLAGS"
- EXTRA_CFLAGS="-W -Wall"
- cf_warn_CONST=""
- test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
- for cf_opt in \
- Wbad-function-cast \
- Wcast-align \
- Wcast-qual \
- Winline \
- Wmissing-declarations \
- Wmissing-prototypes \
- Wnested-externs \
- Wpointer-arith \
- Wshadow \
- Wstrict-prototypes \
- Wundef $cf_warn_CONST
- do
- CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if { (eval echo "$as_me:10629: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:10632: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:10634: result: ... -$cf_opt" >&5
-echo "${ECHO_T}... -$cf_opt" >&6
- case $cf_opt in #(vi
- Wcast-qual) #(vi
- CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
- ;;
- Winline) #(vi
- case $GCC_VERSION in
- 3.3*)
- test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6
-
- continue;;
- esac
- ;;
- esac
- EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
- fi
- done
- CFLAGS="$cf_save_CFLAGS"
-fi
-rm -f conftest*
-
-fi
-fi
-
-if test $disable_setuid = yes ; then
- MAY_SETUID="#"
- NOT_SETUID=
- cat >>confdefs.h <<\EOF
-#define DISABLE_SETUID 1
-EOF
-
-else
- MAY_SETUID=
- NOT_SETUID="#"
-fi
-
-### remove from CPPFLAGS the optional features we define in xtermcfg.h
-### or other conflicting symbols that may be defined via imake:
-for cf_def in \
- __STDC__ \
- ALLOWLOGGING \
- ALLOWLOGFILEEXEC \
- OPT_LUIT_PROG \
- OPT_WIDE_CHARS \
- SCROLLBAR_RIGHT \
- USE_TTY_GROUP \
- USE_UTEMPTER \
- XRENDERFONT
-do
- CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-D$cf_def//`
-done
-
-### output Makefile and xtermcfg.h
-ac_config_files="$ac_config_files Makefile"
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overriden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-{
- (set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
-} |
- sed '
- t clear
- : clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- : end' >>confcache
-if cmp -s $cache_file confcache; then :; else
- if test -w $cache_file; then
- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
- cat confcache >$cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/;
-s/:*\${srcdir}:*/:/;
-s/:*@srcdir@:*/:/;
-s/^\([^=]*=[ ]*\):*/\1/;
-s/:*$//;
-s/^[^=]*=[ ]*$//;
-}'
-fi
-
-DEFS=-DHAVE_CONFIG_H
-
-: ${CONFIG_STATUS=./config.status}
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:10768: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
-#! $SHELL
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-ac_cs_invocation="\$0 \$@"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
-fi
-
-# Name of the executable.
-as_me=`echo "$0" |sed 's,.*[\\/],,'`
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- # We could just check for DJGPP; but this test a) works b) is more generic
- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
- if test -f conf$$.exe; then
- # Don't use ln at all; we don't have any links
- as_ln_s='cp -p'
- else
- as_ln_s='ln -s'
- fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-as_executable_p="test -f"
-
-# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-# NLS nuisances.
-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" $as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
-
-exec 6>&1
-
-_ACEOF
-
-# Files that config.status was made for.
-if test -n "$ac_config_files"; then
- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_headers"; then
- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_links"; then
- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_commands"; then
- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-fi
-
-cat >>$CONFIG_STATUS <<\EOF
-
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTIONS] [FILE]...
-
- -h, --help print this help, then exit
- -V, --version print version number, then exit
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Report bugs to <bug-autoconf@gnu.org>."
-EOF
-
-cat >>$CONFIG_STATUS <<EOF
-ac_cs_version="\\
-config.status
-configured by $0, generated by GNU Autoconf 2.52.20030208,
- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-srcdir=$srcdir
-INSTALL="$INSTALL"
-EOF
-
-cat >>$CONFIG_STATUS <<\EOF
-# If no file are specified by the user, then we need to provide default
-# value. By we need to know if files were specified by the user.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=*)
- ac_option=`expr "x$1" : 'x\([^=]*\)='`
- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
- shift
- set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
- shift
- ;;
- -*);;
- *) # This is not an option, so the user has probably given explicit
- # arguments.
- ac_need_defaults=false;;
- esac
-
- case $1 in
- # Handling of the options.
-EOF
-cat >>$CONFIG_STATUS <<EOF
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
- exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
-EOF
-cat >>$CONFIG_STATUS <<\EOF
- --version | --vers* | -V )
- echo "$ac_cs_version"; exit 0 ;;
- --he | --h)
- # Conflict between --help and --header
- { { echo "$as_me:10941: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2;}
- { (exit 1); exit 1; }; };;
- --help | --hel | -h )
- echo "$ac_cs_usage"; exit 0 ;;
- --debug | --d* | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- shift
- CONFIG_FILES="$CONFIG_FILES $1"
- ac_need_defaults=false;;
- --header | --heade | --head | --hea )
- shift
- CONFIG_HEADERS="$CONFIG_HEADERS $1"
- ac_need_defaults=false;;
-
- # This is an error.
- -*) { { echo "$as_me:10960: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2;}
- { (exit 1); exit 1; }; } ;;
-
- *) ac_config_targets="$ac_config_targets $1" ;;
-
- esac
- shift
-done
-
-exec 5>>config.log
-cat >&5 << _ACEOF
-
-## ----------------------- ##
-## Running config.status. ##
-## ----------------------- ##
-
-This file was extended by $as_me 2.52.20030208, executed with
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- > $ac_cs_invocation
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-
-_ACEOF
-EOF
-
-cat >>$CONFIG_STATUS <<\EOF
-for ac_config_target in $ac_config_targets
-do
- case "$ac_config_target" in
- # Handling of arguments.
- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "xtermcfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS xtermcfg.h:xtermcfg.hin" ;;
- *) { { echo "$as_me:10997: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-fi
-
-# Create a temporary directory, and hook for its removal unless debugging.
-$debug ||
-{
- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
- trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-
-# Create a (secure) tmp directory for tmp files.
-: ${TMPDIR=/tmp}
-{
- tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
-} ||
-{
- tmp=$TMPDIR/cs$$-$RANDOM
- (umask 077 && mkdir $tmp)
-} ||
-{
- echo "$me: cannot create a temporary directory in $TMPDIR" >&2
- { (exit 1); exit 1; }
-}
-
-EOF
-
-cat >>$CONFIG_STATUS <<EOF
-
-#
-# CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "\$CONFIG_FILES"; then
- # Protect against being on the right side of a sed subst in config.status.
- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
-s,@SHELL@,$SHELL,;t t
-s,@exec_prefix@,$exec_prefix,;t t
-s,@prefix@,$prefix,;t t
-s,@program_transform_name@,$program_transform_name,;t t
-s,@bindir@,$bindir,;t t
-s,@sbindir@,$sbindir,;t t
-s,@libexecdir@,$libexecdir,;t t
-s,@datadir@,$datadir,;t t
-s,@sysconfdir@,$sysconfdir,;t t
-s,@sharedstatedir@,$sharedstatedir,;t t
-s,@localstatedir@,$localstatedir,;t t
-s,@libdir@,$libdir,;t t
-s,@includedir@,$includedir,;t t
-s,@oldincludedir@,$oldincludedir,;t t
-s,@infodir@,$infodir,;t t
-s,@mandir@,$mandir,;t t
-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
-s,@build_alias@,$build_alias,;t t
-s,@host_alias@,$host_alias,;t t
-s,@target_alias@,$target_alias,;t t
-s,@ECHO_C@,$ECHO_C,;t t
-s,@ECHO_N@,$ECHO_N,;t t
-s,@ECHO_T@,$ECHO_T,;t t
-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
-s,@DEFS@,$DEFS,;t t
-s,@LIBS@,$LIBS,;t t
-s,@build@,$build,;t t
-s,@build_cpu@,$build_cpu,;t t
-s,@build_vendor@,$build_vendor,;t t
-s,@build_os@,$build_os,;t t
-s,@host@,$host,;t t
-s,@host_cpu@,$host_cpu,;t t
-s,@host_vendor@,$host_vendor,;t t
-s,@host_os@,$host_os,;t t
-s,@CC@,$CC,;t t
-s,@CFLAGS@,$CFLAGS,;t t
-s,@LDFLAGS@,$LDFLAGS,;t t
-s,@CPPFLAGS@,$CPPFLAGS,;t t
-s,@ac_ct_CC@,$ac_ct_CC,;t t
-s,@EXEEXT@,$EXEEXT,;t t
-s,@OBJEXT@,$OBJEXT,;t t
-s,@CPP@,$CPP,;t t
-s,@AWK@,$AWK,;t t
-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
-s,@LINT@,$LINT,;t t
-s,@EXTRA_CPPFLAGS@,$EXTRA_CPPFLAGS,;t t
-s,@PROG_EXT@,$PROG_EXT,;t t
-s,@appsdir@,$appsdir,;t t
-s,@XTERM_PATH@,$XTERM_PATH,;t t
-s,@SINSTALL_OPTS@,$SINSTALL_OPTS,;t t
-s,@X_CFLAGS@,$X_CFLAGS,;t t
-s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t
-s,@X_LIBS@,$X_LIBS,;t t
-s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t
-s,@IMAKE@,$IMAKE,;t t
-s,@IMAKE_CFLAGS@,$IMAKE_CFLAGS,;t t
-s,@IMAKE_LOADFLAGS@,$IMAKE_LOADFLAGS,;t t
-s,@TERMINFO_DIR@,$TERMINFO_DIR,;t t
-s,@SET_TERMINFO@,$SET_TERMINFO,;t t
-s,@FREETYPE_CONFIG@,$FREETYPE_CONFIG,;t t
-s,@XRENDERFONT@,$XRENDERFONT,;t t
-s,@HAVE_TYPE_FCCHAR32@,$HAVE_TYPE_FCCHAR32,;t t
-s,@HAVE_TYPE_XFTCHARSPEC@,$HAVE_TYPE_XFTCHARSPEC,;t t
-s,@ECHO_LT@,$ECHO_LT,;t t
-s,@ECHO_LD@,$ECHO_LD,;t t
-s,@RULE_CC@,$RULE_CC,;t t
-s,@SHOW_CC@,$SHOW_CC,;t t
-s,@ECHO_CC@,$ECHO_CC,;t t
-s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t
-s,@CHARPROC_DEPS@,$CHARPROC_DEPS,;t t
-s,@EXTRAHDRS@,$EXTRAHDRS,;t t
-s,@EXTRASRCS@,$EXTRASRCS,;t t
-s,@EXTRAOBJS@,$EXTRAOBJS,;t t
-s,@MAY_SETUID@,$MAY_SETUID,;t t
-s,@NOT_SETUID@,$NOT_SETUID,;t t
-CEOF
-
-EOF
-
- cat >>$CONFIG_STATUS <<\EOF
- # Split the substitutions into bite-sized pieces for seds with
- # small command number limits, like on Digital OSF/1 and HP-UX.
- ac_max_sed_lines=48
- ac_sed_frag=1 # Number of current file.
- ac_beg=1 # First line for current file.
- ac_end=$ac_max_sed_lines # Line after last line for current file.
- ac_more_lines=:
- ac_sed_cmds=
- while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
- else
- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
- fi
- if test ! -s $tmp/subs.frag; then
- ac_more_lines=false
- else
- # The purpose of the label and of the branching condition is to
- # speed up the sed processing (if there are no `@' at all, there
- # is no need to browse any of the substitutions).
- # These are the two extra sed commands mentioned above.
- (echo ':t
- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
- fi
- ac_sed_frag=`expr $ac_sed_frag + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_lines`
- fi
- done
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
- fi
-fi # test -n "$CONFIG_FILES"
-
-EOF
-cat >>$CONFIG_STATUS <<\EOF
-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case $ac_file in
- - | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
- esac
-
- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
- ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- { case "$ac_dir" in
- [\\/]* | ?:[\\/]* ) as_incr_dir=;;
- *) as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
- case $as_mkdir_dir in
- # Skip DOS drivespec
- ?:) as_incr_dir=$as_mkdir_dir ;;
- *)
- as_incr_dir=$as_incr_dir/$as_mkdir_dir
- test -d "$as_incr_dir" || mkdir "$as_incr_dir"
- ;;
- esac
-done; }
-
- ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case $srcdir in
- .) ac_srcdir=.
- if test -z "$ac_dots"; then
- ac_top_srcdir=.
- else
- ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'`
- fi ;;
- [\\/]* | ?:[\\/]* )
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir ;;
- *) # Relative path.
- ac_srcdir=$ac_dots$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_dots$srcdir ;;
- esac
-
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
- *) ac_INSTALL=$ac_dots$INSTALL ;;
- esac
-
- if test x"$ac_file" != x-; then
- { echo "$as_me:11243: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
- rm -f "$ac_file"
- fi
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated automatically by config.status. */
- configure_input="Generated automatically from `echo $ac_file_in |
- sed 's,.*/,,'` by configure."
-
- # First look for the input files in the build tree, otherwise in the
- # src tree.
- ac_file_inputs=`IFS=:
- for f in $ac_file_in; do
- case $f in
- -) echo $tmp/stdin ;;
- [\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:11261: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- echo $f;;
- *) # Relative
- if test -f "$f"; then
- # Build tree
- echo $f
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo $srcdir/$f
- else
- # /dev/null tree
- { { echo "$as_me:11274: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- fi;;
- esac
- done` || { (exit 1); exit 1; }
-EOF
-cat >>$CONFIG_STATUS <<EOF
- sed "$ac_vpsub
-$extrasub
-EOF
-cat >>$CONFIG_STATUS <<\EOF
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s,@configure_input@,$configure_input,;t t
-s,@srcdir@,$ac_srcdir,;t t
-s,@top_srcdir@,$ac_top_srcdir,;t t
-s,@INSTALL@,$ac_INSTALL,;t t
-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
- rm -f $tmp/stdin
- if test x"$ac_file" != x-; then
- mv $tmp/out $ac_file
- else
- cat $tmp/out
- rm -f $tmp/out
- fi
-
-done
-EOF
-cat >>$CONFIG_STATUS <<\EOF
-
-#
-# CONFIG_HEADER section.
-#
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-ac_dB='[ ].*$,\1#\2'
-ac_dC=' '
-ac_dD=',;t'
-# ac_i turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_iA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_iB='\([ ]\),\1#\2define\3'
-ac_iC=' '
-ac_iD='\4,;t'
-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_uB='$,\1#\2define\3'
-ac_uC=' '
-ac_uD=',;t'
-
-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case $ac_file in
- - | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
- esac
-
- test x"$ac_file" != x- && { echo "$as_me:11340: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-
- # First look for the input files in the build tree, otherwise in the
- # src tree.
- ac_file_inputs=`IFS=:
- for f in $ac_file_in; do
- case $f in
- -) echo $tmp/stdin ;;
- [\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:11351: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- echo $f;;
- *) # Relative
- if test -f "$f"; then
- # Build tree
- echo $f
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo $srcdir/$f
- else
- # /dev/null tree
- { { echo "$as_me:11364: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- fi;;
- esac
- done` || { (exit 1); exit 1; }
- # Remove the trailing spaces.
- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
-
-EOF
-
-# Transform confdefs.h into two sed scripts, `conftest.defines' and
-# `conftest.undefs', that substitutes the proper values into
-# config.h.in to produce config.h. The first handles `#define'
-# templates, and the second `#undef' templates.
-# And first: Protect against being on the right side of a sed subst in
-# config.status. Protect against being in an unquoted here document
-# in config.status.
-rm -f conftest.defines conftest.undefs
-# Using a here document instead of a string reduces the quoting nightmare.
-# Putting comments in sed scripts is not portable.
-#
-# `end' is used to avoid that the second main sed command (meant for
-# 0-ary CPP macros) applies to n-ary macro definitions.
-# See the Autoconf documentation for `clear'.
-cat >confdef2sed.sed <<\EOF
-s/[\\&,]/\\&/g
-s,[\\$`],\\&,g
-t clear
-: clear
-s,^[ ]*#[ ]*define[ ][ ]*\(\([^ (][^ (]*\)([^)]*)\)[ ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp
-t end
-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
-: end
-EOF
-# If some macros were called several times there might be several times
-# the same #defines, which is useless. Nevertheless, we may not want to
-# sort them, since we want the *last* AC-DEFINE to be honored.
-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
-sed 's/ac_d/ac_i/g' conftest.defines >>conftest.undefs
-rm -f confdef2sed.sed
-
-# This sed command replaces #undef with comments. This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >>conftest.undefs <<\EOF
-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
-EOF
-
-# Break up conftest.defines because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
-echo ' :' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.defines >/dev/null
-do
- # Write a limited-size here document to $tmp/defines.sed.
- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
- # Speed up: don't consider the non `#define' lines.
- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
- # Work around the forget-to-reset-the-flag bug.
- echo 't clr' >>$CONFIG_STATUS
- echo ': clr' >>$CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
- echo 'CEOF
- sed -f $tmp/defines.sed $tmp/in >$tmp/out
- rm -f $tmp/in
- mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
- rm -f conftest.defines
- mv conftest.tail conftest.defines
-done
-rm -f conftest.defines
-echo ' fi # egrep' >>$CONFIG_STATUS
-echo >>$CONFIG_STATUS
-
-# Break up conftest.undefs because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.undefs >/dev/null
-do
- # Write a limited-size here document to $tmp/undefs.sed.
- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
- # Speed up: don't consider the non `#undef'
- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
- # Work around the forget-to-reset-the-flag bug.
- echo 't clr' >>$CONFIG_STATUS
- echo ': clr' >>$CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
- echo 'CEOF
- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
- rm -f $tmp/in
- mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
- rm -f conftest.undefs
- mv conftest.tail conftest.undefs
-done
-rm -f conftest.undefs
-
-cat >>$CONFIG_STATUS <<\EOF
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated automatically by config.status. */
- if test x"$ac_file" = x-; then
- echo "/* Generated automatically by configure. */" >$tmp/config.h
- else
- echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h
- fi
- cat $tmp/in >>$tmp/config.h
- rm -f $tmp/in
- if test x"$ac_file" != x-; then
- if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
- { echo "$as_me:11482: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
- else
- ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- { case "$ac_dir" in
- [\\/]* | ?:[\\/]* ) as_incr_dir=;;
- *) as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
- case $as_mkdir_dir in
- # Skip DOS drivespec
- ?:) as_incr_dir=$as_mkdir_dir ;;
- *)
- as_incr_dir=$as_incr_dir/$as_mkdir_dir
- test -d "$as_incr_dir" || mkdir "$as_incr_dir"
- ;;
- esac
-done; }
-
- fi
- rm -f $ac_file
- mv $tmp/config.h $ac_file
- fi
- else
- cat $tmp/config.h
- rm -f $tmp/config.h
- fi
-done
-EOF
-
-cat >>$CONFIG_STATUS <<\EOF
-
-{ (exit 0); exit 0; }
-EOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || { (exit 1); exit 1; }
-fi
-
diff --git a/nx-X11/programs/xterm/configure.in b/nx-X11/programs/xterm/configure.in
deleted file mode 100644
index 6ec395318..000000000
--- a/nx-X11/programs/xterm/configure.in
+++ /dev/null
@@ -1,779 +0,0 @@
-dnl $XTermId: configure.in,v 1.197 2005/11/03 13:17:27 tom Exp $
-dnl
-dnl $XFree86: xc/programs/xterm/configure.in,v 3.72 2005/11/03 13:17:27 dickey Exp $
-dnl
-dnl ---------------------------------------------------------------------------
-dnl
-dnl Copyright 1997-2004,2005 by Thomas E. Dickey
-dnl
-dnl All Rights Reserved
-dnl
-dnl Permission to use, copy, modify, and distribute this software and its
-dnl documentation for any purpose and without fee is hereby granted,
-dnl provided that the above copyright notice appear in all copies and that
-dnl both that copyright notice and this permission notice appear in
-dnl supporting documentation, and that the name of the above listed
-dnl copyright holder(s) not be used in advertising or publicity pertaining
-dnl to distribution of the software without specific, written prior
-dnl permission.
-dnl
-dnl THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
-dnl TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-dnl AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
-dnl LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-dnl WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-dnl ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-dnl OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-dnl
-dnl ---------------------------------------------------------------------------
-dnl Process this file with autoconf to produce a configure script.
-dnl
-AC_PREREQ(2.13.20020210)
-AC_INIT(charproc.c)
-AC_CONFIG_HEADER(xtermcfg.h:xtermcfg.hin)
-CF_CHECK_CACHE
-
-### checks for alternative programs
-
-dnl Only add to this case statement when a system has a compiler that is not
-dnl detected by AC_PROG_CC.
-case "$host_os" in
-openedition) : ${CFLAGS="-O2 -Wc,dll -Wl,EDIT=NO"}
- : ${CPPFLAGS="-D_ALL_SOURCE"}
- : ${LIBS="/usr/lib/Xaw.x /usr/lib/SM.x /usr/lib/ICE.x /usr/lib/X11.x"}
- : ${CC=c89};;
-darwin*)
- : ${LDFLAGS}="${LDFLAGS} -Wl,-bind_at_load";;
-esac
-
-AC_PROG_CC
-AC_PROG_CPP
-AC_GCC_TRADITIONAL
-AC_PROG_AWK
-AC_PROG_INSTALL
-AC_ARG_PROGRAM
-AC_CHECK_PROGS(LINT, tdlint lint alint)
-
-### checks for UNIX variants that set C preprocessor variables
-AC_AIX
-AC_ISC_POSIX
-
-### checks for compiler characteristics
-CF_ANSI_CC_CHECK
-AC_CONST
-CF_PROG_EXT
-CF_XOPEN_SOURCE
-
-### checks for header files
-AC_CHECK_HEADERS( \
-ncurses/term.h \
-stdlib.h \
-termios.h \
-unistd.h \
-wchar.h \
-)
-AC_HEADER_TIME
-AM_LANGINFO_CODESET
-
-### checks for typedefs
-CF_SIG_ATOMIC_T
-CF_SIZE_T
-AC_CHECK_TYPE(time_t, long)
-AC_TYPE_MODE_T
-AC_TYPE_PID_T
-AC_TYPE_UID_T
-
-### checks for library functions
-AC_CHECK_FUNCS( \
- bcopy \
- gethostname \
- getlogin \
- memmove \
- putenv \
- sched_yield \
- strerror \
- strftime \
- tcgetattr \
- waitpid \
- wcswidth \
- wcwidth )
-CF_FUNC_MEMMOVE
-CF_UTMP
-
-CF_HELP_MESSAGE(Compile/Install Options:)
-CF_FUNC_TGETENT
-
-AC_MSG_CHECKING(for directory to install resource files)
-CF_WITH_PATH(app-defaults,
- [ --with-app-defaults=DIR directory in which to install resource files],
- [appsdir],[EPREFIX/lib/X11/app-defaults],
- ['\$(exec_prefix)/lib/X11/app-defaults'])
-AC_MSG_RESULT($appsdir)
-AC_SUBST(appsdir)
-
-# inherit SINSTALL_OPTS from environment to allow packager to customize it.
-
-AC_MSG_CHECKING(for install-permissions reference)
-AC_ARG_WITH(reference,
- [ --with-reference=XXX program to use as permissions-reference],
- [with_reference=$withval],
- [with_reference=xterm])
-AC_MSG_RESULT($with_reference)
-
-CF_PATH_PROG(XTERM_PATH,$with_reference)
-
-AC_MSG_CHECKING(if you want to disable setuid)
-CF_ARG_DISABLE(setuid,
- [ --disable-setuid disable setuid in xterm, do not install setuid],
- [disable_setuid=yes],
- [disable_setuid=no],
- no)
-AC_MSG_RESULT($disable_setuid)
-
-AC_MSG_CHECKING(if you want to run xterm setuid to a given user)
-AC_ARG_WITH(setuid,
- [ --with-setuid=XXX use the given setuid user],
- [use_given_setuid=$withval],
- [use_given_setuid=no])
-AC_MSG_RESULT($use_given_setuid)
-
-if test "$use_given_setuid" != no ; then
- if test "$use_given_setuid" = yes ; then
- cf_cv_given_setuid=root
- else
- cf_cv_given_setuid=$use_given_setuid
- fi
- SINSTALL_OPTS="$SINSTALL_OPTS u+s -u $cf_cv_given_setuid"
-fi
-
-AC_MSG_CHECKING(if you want to run xterm setgid to match utmp/utmpx file)
-AC_ARG_WITH(utmp-setgid,
- [ --with-utmp-setgid=XXX use setgid to match utmp/utmpx file],
- [use_utmp_setgid=$withval],
- [use_utmp_setgid=no])
-AC_MSG_RESULT($use_utmp_setgid)
-
-if test "$use_utmp_setgid" != no ; then
- if test "$use_utmp_setgid" = yes ; then
- CF_UTMP_GROUP
- else
- cf_cv_utmp_group=$use_utmp_setgid
- fi
- AC_DEFINE(USE_UTMP_SETGID)
- SINSTALL_OPTS="$SINSTALL_OPTS g+s -g $cf_cv_utmp_group"
-fi
-
-AC_SUBST(SINSTALL_OPTS)
-
-AC_MSG_CHECKING(if you want to link with utempter)
-AC_ARG_WITH(utempter,
- [ --with-utempter use utempter library for access to utmp],
- [use_utempter=$withval],
- [use_utempter=no])
-AC_MSG_RESULT($use_utempter)
-
-if test "$use_utempter" = yes ; then
- CF_UTEMPTER
- test "$cf_cv_have_utempter" = yes && disable_setuid=yes
-fi
-
-### checks for external data
-CF_ERRNO
-CF_TTY_GROUP
-
-### checks for system services and user specified options
-
-CF_POSIX_WAIT
-CF_SYSV
-CF_SVR4
-CF_X_TOOLKIT
-
-AC_CHECK_HEADERS( \
- X11/DECkeysym.h \
- X11/Sunkeysym.h \
- X11/Xpoll.h \
- )
-
-CF_X_ATHENA
-CF_TYPE_FD_SET
-CF_TERMIO_C_ISPEED
-
-LIBS="$LIBS $X_EXTRA_LIBS"
-
-# Check for openpty() in -lutil if the UNIX98-style pty functions are not
-# available. E.g. for GNU libc 2.0.
-case $host_os in #(vi
-freebsd*|netbsd*) # 2004/8/15 - revisit this if/when grantpt is known to work.
- AC_CHECK_LIB(util,openpty)
- ;;
-*)
- AC_CHECK_FUNCS(grantpt, [], AC_CHECK_LIB(util,openpty))
- ;;
-esac
-
-CF_XKB_BELL_EXT
-AC_CHECK_FUNCS(Xutf8LookupString, [],[
- EXTRAHDRS="$EXTRAHDRS xutf8.h"
- EXTRASRCS="$EXTRASRCS xutf8.c"
- EXTRAOBJS="$EXTRAOBJS xutf8.o"
-])
-
-CF_WITH_IMAKE_CFLAGS($(MAIN_DEFINES) $(VENDORMANDEFS))
-
-CF_HELP_MESSAGE(Terminal Configuration:)
-
-AC_MSG_CHECKING(for default terminal-id)
-AC_ARG_WITH(terminal-id,
- [ --with-terminal-id=V set default decTerminalID (default: vt100)],
- [default_termid=$withval],
- [default_termid=vt100])
-AC_MSG_RESULT($default_termid)
-case $default_termid in
-vt*) default_termid=`echo $default_termid | sed -e 's/^..//'`
- ;;
-esac
-AC_DEFINE_UNQUOTED(DFT_DECID,"$default_termid")
-
-AC_MSG_CHECKING(for default terminal-type)
-AC_ARG_WITH(terminal-type,
- [ --with-terminal-type=T set default $TERM (default: xterm)],
- [default_TERM=$withval],
- [default_TERM=xterm])
-AC_MSG_RESULT($default_TERM)
-AC_DEFINE_UNQUOTED(DFT_TERMTYPE,"$default_TERM")
-
-AC_MSG_CHECKING(for private terminfo-directory)
-AC_ARG_WITH(own-terminfo,
- [ --with-own-terminfo=P set default $TERMINFO (default: from environment)],
- [TERMINFO_DIR=$withval],
- [TERMINFO_DIR=${TERMINFO-none}])
-AC_MSG_RESULT($TERMINFO_DIR)
-if test "$TERMINFO_DIR" = yes ; then
- AC_MSG_WARN(no value given)
-elif test "$TERMINFO_DIR" != none ; then
- if test -d $TERMINFO_DIR ; then
- AC_DEFINE_UNQUOTED(OWN_TERMINFO_DIR,"$TERMINFO_DIR")
- else
- AC_MSG_WARN(not a directory)
- fi
-elif test "$prefix" != NONE ; then
- TERMINFO_DIR='${prefix}/lib/terminfo'
-elif test -d /usr/lib/terminfo ; then
- TERMINFO_DIR=/usr/lib/terminfo
-else
- TERMINFO_DIR=
-fi
-SET_TERMINFO=
-if test -n "$TERMINFO_DIR" ; then
- TERMINFO_DIR='$(DESTDIR)'$TERMINFO_DIR
- SET_TERMINFO='TERMINFO=$(TERMINFO_DIR)'
-fi
-AC_SUBST(TERMINFO_DIR)
-AC_SUBST(SET_TERMINFO)
-
-###############################################################################
-CF_HELP_MESSAGE(Optional Features:)
-
-AC_MSG_CHECKING(if you want active-icons)
-CF_ARG_DISABLE(active-icon,
- [ --disable-active-icon disable X11R6.3 active-icon feature],
- [enable_active_icon=no],
- [enable_active_icon=yes])
-AC_MSG_RESULT($enable_active_icon)
-if test "$enable_active_icon" = no ; then
- AC_DEFINE(NO_ACTIVE_ICON)
-fi
-
-AC_MSG_CHECKING(if you want ANSI color)
-CF_ARG_DISABLE(ansi-color,
- [ --disable-ansi-color disable ANSI color],
- [enable_ansi_color=no],
- [enable_ansi_color=yes])
-AC_MSG_RESULT($enable_ansi_color)
-test "$enable_ansi_color" = no && AC_DEFINE(OPT_ISO_COLORS,0)
-
-if test "$enable_ansi_color" = yes ; then
-
- AC_MSG_CHECKING(if you want 16 colors like aixterm)
- CF_ARG_DISABLE(16-color,
- [ --disable-16-color disable 16-color support],
- [enable_16_color=no],
- [enable_16_color=yes])
- AC_MSG_RESULT($enable_16_color)
- test "$enable_16_color" = no && AC_DEFINE(OPT_AIX_COLORS,0)
-
- AC_MSG_CHECKING(if you want 256 colors)
- CF_ARG_ENABLE(256-color,
- [ --enable-256-color enable 256-color support],
- [enable_256_color=yes],
- [enable_256_color=no])
- AC_MSG_RESULT($enable_256_color)
- if test "$enable_256_color" = yes ; then
- CHARPROC_DEPS="$CHARPROC_DEPS 256colres.h"
- EXTRAHDRS="$EXTRAHDRS 256colres.h"
- AC_DEFINE(OPT_256_COLORS,1)
- else
- AC_MSG_CHECKING(if you want 88 colors)
- CF_ARG_ENABLE(88-color,
- [ --enable-88-color enable 88-color support],
- [enable_88_color=yes],
- [enable_88_color=no])
- AC_MSG_RESULT($enable_88_color)
- if test "$enable_88_color" = yes ; then
- CHARPROC_DEPS="$CHARPROC_DEPS 88colres.h"
- EXTRAHDRS="$EXTRAHDRS 88colres.h"
- AC_DEFINE(OPT_88_COLORS,1)
- fi
- fi
-
-fi
-
-AC_MSG_CHECKING(if you want blinking cursor)
-CF_ARG_DISABLE(blink-cursor,
- [ --disable-blink-cursor disable support for blinking cursor],
- [enable_blink_curs=no],
- [enable_blink_curs=yes])
-AC_MSG_RESULT($enable_blink_curs)
-test "$enable_blink_curs" = no && AC_DEFINE(OPT_BLINK_CURS,0)
-
-AC_MSG_CHECKING(if you want to ignore Linux's broken palette-strings)
-
-case $host_os in #(vi
-linux*)
- assume_broken_osc=yes ;; #(vi
-*)
- assume_broken_osc=no ;;
-esac
-
-CF_ARG_OPTION(broken-osc,
- [ --enable-broken-osc allow broken Linux OSC-strings],
- [enable_broken_osc=$enableval],
- [enable_broken_osc=$enableval],
- [$assume_broken_osc])
-AC_MSG_RESULT($enable_broken_osc)
-if test "$enable_broken_osc" = yes ; then
- AC_DEFINE(OPT_BROKEN_OSC,1)
-else
- AC_DEFINE(OPT_BROKEN_OSC,0)
-fi
-
-AC_MSG_CHECKING(if you want to allow broken string-terminators)
-CF_ARG_ENABLE(broken-st,
- [ --enable-broken-st allow broken string-terminators],
- [enable_broken_st=yes],
- [enable_broken_st=no])
-AC_MSG_RESULT($enable_broken_st)
-test "$enable_broken_st" = no && AC_DEFINE(OPT_BROKEN_ST,0)
-
-AC_MSG_CHECKING(if you want printable 128-159)
-CF_ARG_DISABLE(c1-print,
- [ --disable-c1-print disallow -k8 option for printable 128-159],
- [enable_c1_print=no],
- [enable_c1_print=yes])
-AC_MSG_RESULT($enable_c1_print)
-test "$enable_c1_print" = no && AC_DEFINE(OPT_C1_PRINT,0)
-
-if test "$enable_ansi_color" = yes ; then
-
- AC_MSG_CHECKING(if you want bold colors mapped like IBM PC)
- CF_ARG_DISABLE(bold-color,
- [ --disable-bold-color disable PC-style mapping of bold colors],
- [enable_pc_color=no],
- [enable_pc_color=yes])
- AC_MSG_RESULT($enable_pc_color)
- test "$enable_pc_color" = no && AC_DEFINE(OPT_PC_COLORS,0)
-
- AC_MSG_CHECKING(if you want separate color-classes)
- CF_ARG_DISABLE(color-class,
- [ --disable-color-class disable separate color class resources],
- [enable_color_class=no],
- [enable_color_class=yes])
- AC_MSG_RESULT($enable_color_class)
- test "$enable_color_class" = no && AC_DEFINE(OPT_COLOR_CLASS,FALSE)
-
- AC_MSG_CHECKING(if you want color-mode enabled by default)
- CF_ARG_DISABLE(color-mode,
- [ --disable-color-mode disable default colorMode resource],
- [default_colormode=no],
- [default_colormode=yes])
- AC_MSG_RESULT($default_colormode)
- test "$default_colormode" = no && AC_DEFINE(DFT_COLORMODE,FALSE)
-
-fi
-
-AC_MSG_CHECKING(if you want support for color highlighting)
-CF_ARG_DISABLE(highlighting,
- [ --disable-highlighting disable support for color highlighting],
- [default_highlight=no],
- [default_highlight=yes])
-AC_MSG_RESULT($default_highlight)
-test "$default_highlight" = no && AC_DEFINE(OPT_HIGHLIGHT_COLOR,0)
-
-AC_MSG_CHECKING(if you want support for doublesize characters)
-CF_ARG_DISABLE(doublechars,
- [ --disable-doublechars disable support for double-size chars],
- [enable_doublechars=no],
- [enable_doublechars=yes])
-AC_MSG_RESULT($enable_doublechars)
-test "$enable_doublechars" = no && AC_DEFINE(OPT_DEC_CHRSET,0)
-
-AC_MSG_CHECKING(if you want fallback-support for box characters)
-CF_ARG_DISABLE(boxchars,
- [ --disable-boxchars disable fallback-support for box chars],
- [enable_boxchars=no],
- [enable_boxchars=yes])
-AC_MSG_RESULT($enable_boxchars)
-test "$enable_boxchars" = no && AC_DEFINE(OPT_BOX_CHARS,0)
-
-AC_MSG_CHECKING(if you want to use FreeType library)
-CF_ARG_DISABLE(freetype,
- [ --disable-freetype disable freetype library-support],
- [enable_freetype=no],
- [enable_freetype=yes])
-AC_MSG_RESULT($enable_freetype)
-if test "$enable_freetype" = yes ; then
- CF_X_FREETYPE
-else
- CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-DXRENDERFONT//`
-fi
-
-AC_MSG_CHECKING(if you want support for HP-style function keys)
-CF_ARG_ENABLE(hp-fkeys,
- [ --enable-hp-fkeys enable support for HP-style function keys],
- [enable_hp_fkeys=yes],
- [enable_hp_fkeys=no])
-AC_MSG_RESULT($enable_hp_fkeys)
-if test "$enable_hp_fkeys" = yes ; then
- AC_DEFINE(OPT_HP_FUNC_KEYS,1)
-fi
-
-AC_MSG_CHECKING(if you want support for SCO-style function keys)
-CF_ARG_ENABLE(sco-fkeys,
- [ --enable-sco-fkeys enable support for SCO-style function keys],
- [enable_sco_fkeys=yes],
- [enable_sco_fkeys=no])
-AC_MSG_RESULT($enable_sco_fkeys)
-if test "$enable_sco_fkeys" = yes ; then
- AC_DEFINE(OPT_SCO_FUNC_KEYS,1)
-fi
-
-AC_MSG_CHECKING(if you want support for internationalization)
-CF_ARG_DISABLE(i18n,
- [ --disable-i18n disable internationalization],
- [enable_i18n=no],
- [enable_i18n=yes])
-AC_MSG_RESULT($enable_i18n)
-if test "$enable_i18n" = no ; then
- AC_DEFINE(OPT_I18N_SUPPORT,0)
-fi
-
-AC_MSG_CHECKING(if you want support for initial-erase setup)
-CF_ARG_DISABLE(initial-erase,
- [ --disable-initial-erase disable setup for stty erase],
- [enable_ie=no],
- [enable_ie=yes])
-AC_MSG_RESULT($enable_ie)
-if test "$enable_ie" = no ; then
- AC_DEFINE(OPT_INITIAL_ERASE,0)
-fi
-
-AC_MSG_CHECKING(if you want support for input-method)
-CF_ARG_DISABLE(input-method,
- [ --disable-input-method disable input-method],
- [enable_ximp=no],
- [enable_ximp=yes])
-AC_MSG_RESULT($enable_ximp)
-CF_INPUT_METHOD
-test "$cf_cv_input_method" = no && enable_ximp=no
-if test "$enable_ximp" = no ; then
- AC_DEFINE(OPT_INPUT_METHOD,0)
-fi
-
-AC_MSG_CHECKING(if you want support for load-vt-fonts)
-CF_ARG_ENABLE(load-vt-fonts,
- [ --enable-load-vt-fonts enable load-vt-fonts() action],
- [enable_load_vt_fonts=yes],
- [enable_load_vt_fonts=no])
-AC_MSG_RESULT($enable_load_vt_fonts)
-if test "$enable_load_vt_fonts" = yes ; then
- AC_DEFINE(OPT_LOAD_VTFONTS,1)
-fi
-
-AC_MSG_CHECKING(if you want support for logging)
-CF_ARG_ENABLE(logging,
- [ --enable-logging enable logging],
- [enable_logging=yes],
- [enable_logging=no])
-AC_MSG_RESULT($enable_logging)
-if test "$enable_logging" = yes ; then
- AC_DEFINE(ALLOWLOGGING)
- AC_MSG_CHECKING(if you want to allow logging via a pipe)
- CF_ARG_ENABLE(logfile-exec,
- [ --enable-logfile-exec enable exec'd logfile filter],
- [enable_log_exec=yes],
- [enable_log_exec=no])
- AC_MSG_RESULT($enable_log_exec)
- if test "$enable_log_exec" = yes ; then
- AC_DEFINE(ALLOWLOGFILEEXEC)
- fi
-fi
-
-AC_MSG_CHECKING(if you want support for iconify/maximize translations)
-CF_ARG_DISABLE(maximize,
- [ --disable-maximize disable actions for iconify/deiconify/maximize/restore],
- [enable_maximize=no],
- [enable_maximize=yes])
-AC_MSG_RESULT($enable_maximize)
-test "$enable_maximize" = no && AC_DEFINE(OPT_MAXIMIZE,0)
-
-AC_MSG_CHECKING(if you want NumLock to override keyboard tables)
-CF_ARG_DISABLE(num-lock,
- [ --disable-num-lock disable NumLock keypad support],
- [enable_numlock=no],
- [enable_numlock=yes])
-AC_MSG_RESULT($enable_numlock)
-test "$enable_numlock" = no && AC_DEFINE(OPT_NUM_LOCK,0)
-
-AC_MSG_CHECKING(if you want support for get/set of base64 selection data)
-
-CF_ARG_ENABLE(paste64,
- [ --enable-paste64 enable get/set base64 selection data],
- [enable_paste64=yes],
- [enable_paste64=no])
-AC_MSG_RESULT($enable_paste64)
-if test "$enable_paste64" = yes ; then
- AC_DEFINE(OPT_PASTE64,1)
-else
- AC_DEFINE(OPT_PASTE64,0)
-fi
-
-AC_MSG_CHECKING(if you want support for pty-handshaking)
-
-CF_ARG_DISABLE(pty-handshake,
- [ --disable-pty-handshake disable pty-handshake support],
- [enable_pty_handshake=no],
- [enable_pty_handshake=yes])
-AC_MSG_RESULT($enable_pty_handshake)
-if test "$enable_pty_handshake" = yes ; then
- AC_DEFINE(OPT_PTY_HANDSHAKE,1)
-else
- AC_DEFINE(OPT_PTY_HANDSHAKE,0)
-fi
-
-AC_MSG_CHECKING(if you want support for mouse in readline applications)
-CF_ARG_ENABLE(readline-mouse,
- [ --enable-readline-mouse enable support for mouse in readline applications],
- [enable_readline_mouse=yes],
- [enable_readline_mouse=no])
-AC_MSG_RESULT($enable_readline_mouse)
-if test "$enable_readline_mouse" = yes ; then
- AC_DEFINE(OPT_READLINE,1)
-fi
-
-AC_MSG_CHECKING(if you want support for right-scrollbar)
-CF_ARG_DISABLE(rightbar,
- [ --disable-rightbar disable right-scrollbar support],
- [enable_rightbar=no],
- [enable_rightbar=yes])
-AC_MSG_RESULT($enable_rightbar)
-if test "$enable_rightbar" = yes ; then
- AC_DEFINE(SCROLLBAR_RIGHT)
-fi
-
-AC_MSG_CHECKING(if you want check for redundant name-change)
-CF_ARG_DISABLE(samename,
- [ --disable-samename disable check for redundant name-change],
- [enable_samename=no],
- [enable_samename=yes])
-AC_MSG_RESULT($enable_samename)
-test "$enable_samename" = no && AC_DEFINE(OPT_SAME_NAME,0)
-
-AC_MSG_CHECKING(if you want support for session management)
-CF_ARG_DISABLE(session-mgt,
- [ --disable-session-mgt disable support for session management],
- [enable_session_mgt=no],
- [enable_session_mgt=yes])
-AC_MSG_RESULT($enable_session_mgt)
-test "$enable_session_mgt" = no && AC_DEFINE(OPT_SESSION_MGT,0)
-
-AC_MSG_CHECKING(if you want to use termcap-query/report)
-CF_ARG_ENABLE(tcap-query,
- [ --enable-tcap-query compile-in termcap-query support],
- [enable_tcap_query=yes],
- [enable_tcap_query=no])
-AC_MSG_RESULT($enable_tcap_query)
-test "$enable_tcap_query" = yes && AC_DEFINE(OPT_TCAP_QUERY,1)
-
-AC_MSG_CHECKING(if you want support for tek4014)
-CF_ARG_DISABLE(tek4014,
- [ --disable-tek4014 disable tek4014 emulation],
- [enable_tek4014=no],
- [enable_tek4014=yes])
-AC_MSG_RESULT($enable_tek4014)
-if test "$enable_tek4014" = no ; then
- AC_DEFINE(OPT_TEK4014,0)
-else
- EXTRAHDRS="$EXTRAHDRS Tekparse.h"
- EXTRASRCS="$EXTRASRCS TekPrsTbl.c Tekproc.c"
- EXTRAOBJS="$EXTRAOBJS TekPrsTbl.o Tekproc.o"
-fi
-
-AC_MSG_CHECKING(if you want pulldown menus with a toolbar)
-CF_ARG_ENABLE(toolbar,
- [ --enable-toolbar compile-in toolbar for pulldown menus],
- [enable_toolbar=yes],
- [enable_toolbar=no])
-AC_MSG_RESULT($enable_toolbar)
-if test "$enable_toolbar" = yes ; then
- AC_DEFINE(OPT_TOOLBAR,1)
-fi
-
-AC_MSG_CHECKING(if you want VT52 emulation)
-CF_ARG_DISABLE(vt52,
- [ --disable-vt52 disable VT52 emulation],
- [enable_vt52=no],
- [enable_vt52=yes])
-AC_MSG_RESULT($enable_vt52)
-test "$enable_vt52" = no && AC_DEFINE(OPT_VT52_MODE,0)
-
-AC_MSG_CHECKING(if you want to use mini-luit/Latin9 built-in support)
-CF_ARG_ENABLE(mini-luit,
- [ --enable-mini-luit enable mini-luit (built-in Latin9 support)],
- [enable_mini_luit=yes],
- [enable_mini_luit=no])
-AC_MSG_RESULT($enable_mini_luit)
-if test "$enable_mini_luit" = yes ; then
- AC_DEFINE(OPT_MINI_LUIT,1)
-fi
-
-AC_MSG_CHECKING(if you want to use luit)
-CF_ARG_ENABLE(luit,
- [ --enable-luit enable luit filter (Unicode translation)],
- [enable_luit=yes],
- [enable_luit=$enable_mini_luit])
-AC_MSG_RESULT($enable_luit)
-if test "$enable_luit" = yes ; then
- AC_DEFINE(OPT_LUIT_PROG,1)
-fi
-
-AC_MSG_CHECKING(if you want wide-character support)
-CF_ARG_OPTION(wide-chars,
- [ --enable-wide-chars enable wide-character support],
- [enable_wchar=yes],
- [enable_wchar=$enable_luit],
- [$enable_luit])
-AC_MSG_RESULT($enable_wchar)
-if test "$enable_wchar" = yes ; then
- AC_DEFINE(OPT_WIDE_CHARS,1)
- EXTRAHDRS="$EXTRAHDRS charclass.h precompose.h wcwidth.h"
- EXTRASRCS="$EXTRASRCS charclass.c precompose.c wcwidth.c"
- EXTRAOBJS="$EXTRAOBJS charclass.o precompose.o wcwidth.o"
-fi
-
-AC_MSG_CHECKING(if you want dynamic-abbreviation support)
-CF_ARG_ENABLE(dabbrev,
- [ --enable-dabbrev enable dynamic-abbreviation support],
- [enable_dabbrev=yes],
- [enable_dabbrev=no])
-AC_MSG_RESULT($enable_dabbrev)
-if test "$enable_dabbrev" = yes ; then
- AC_DEFINE(OPT_DABBREV,1)
-fi
-
-AC_MSG_CHECKING(if you want DECterm Locator support)
-CF_ARG_ENABLE(dec-locator,
- [ --enable-dec-locator enable DECterm Locator support],
- [enable_dec_locator=yes],
- [enable_dec_locator=no])
-AC_MSG_RESULT($enable_dec_locator)
-if test "$enable_dec_locator" = yes ; then
- AC_DEFINE(OPT_DEC_LOCATOR,1)
-fi
-
-AC_MSG_CHECKING(if you want -ziconbeep option)
-CF_ARG_DISABLE(ziconbeep,
- [ --disable-ziconbeep disable -ziconbeep option],
- [enable_ziconbeep=no],
- [enable_ziconbeep=yes])
-AC_MSG_RESULT($enable_ziconbeep)
-test "$enable_ziconbeep" = no && AC_DEFINE(OPT_ZICONBEEP,0)
-
-###############################################################################
-CF_HELP_MESSAGE(Testing/development Options:)
-
-AC_MSG_CHECKING(if you want debugging traces)
-CF_ARG_ENABLE(trace,
- [ --enable-trace test: set to enable debugging traces],
- [enable_trace=yes],
- [enable_trace=no])
-AC_MSG_RESULT($enable_trace)
-if test "$enable_trace" = yes ; then
- AC_DEFINE(OPT_TRACE)
- EXTRASRCS="$EXTRASRCS trace.c"
- EXTRAOBJS="$EXTRAOBJS trace.o"
-fi
-
-CF_DISABLE_ECHO
-
-AC_MSG_CHECKING(if you want magic cookie emulation)
-CF_ARG_ENABLE(xmc-glitch,
- [ --enable-xmc-glitch test: enable xmc magic-cookie emulation],
- [enable_xmc=yes],
- [enable_xmc=no])
-AC_MSG_RESULT($enable_xmc)
-if test "$enable_xmc" = yes ; then
- AC_DEFINE(OPT_XMC_GLITCH,1)
- EXTRASRCS="$EXTRASRCS testxmc.c"
- EXTRAOBJS="$EXTRAOBJS testxmc.o"
-fi
-
-if test -n "$GCC" ; then
-AC_MSG_CHECKING(if you want to turn on gcc warnings)
-CF_ARG_ENABLE(warnings,
- [ --enable-warnings test: turn on GCC compiler warnings],
- [with_warnings=yes],
- [with_warnings=no])
-AC_MSG_RESULT($with_warnings)
-if test "$with_warnings" = yes
-then
- CF_GCC_ATTRIBUTES
- CF_GCC_WARNINGS
-fi
-fi
-
-AC_SUBST(EXTRA_CFLAGS)
-AC_SUBST(CHARPROC_DEPS)
-AC_SUBST(EXTRAHDRS)
-AC_SUBST(EXTRASRCS)
-AC_SUBST(EXTRAOBJS)
-
-if test $disable_setuid = yes ; then
- MAY_SETUID="#"
- NOT_SETUID=
- AC_DEFINE(DISABLE_SETUID)
-else
- MAY_SETUID=
- NOT_SETUID="#"
-fi
-
-AC_SUBST(MAY_SETUID)
-AC_SUBST(NOT_SETUID)
-
-### remove from CPPFLAGS the optional features we define in xtermcfg.h
-### or other conflicting symbols that may be defined via imake:
-for cf_def in \
- __STDC__ \
- ALLOWLOGGING \
- ALLOWLOGFILEEXEC \
- OPT_LUIT_PROG \
- OPT_WIDE_CHARS \
- SCROLLBAR_RIGHT \
- USE_TTY_GROUP \
- USE_UTEMPTER \
- XRENDERFONT
-do
- CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-D$cf_def//`
-done
-
-### output Makefile and xtermcfg.h
-AC_OUTPUT(Makefile)
diff --git a/nx-X11/programs/xterm/ctlseqs.ms b/nx-X11/programs/xterm/ctlseqs.ms
deleted file mode 100644
index bbf8960ee..000000000
--- a/nx-X11/programs/xterm/ctlseqs.ms
+++ /dev/null
@@ -1,1876 +0,0 @@
-.\"#! troff -ms $1 -*- Nroff -*-
-.\" "Xterm Control Sequences" document
-.\" $XTermId: ctlseqs.ms,v 1.158 2005/09/18 23:48:10 tom Exp $
-.\"
-.\"
-.\" $Xorg: ctlseqs.ms,v 1.3 2000/08/17 19:42:51 cpqbld Exp $
-.\"
-.\"
-.\"
-.\" $XFree86: xc/doc/specs/xterm/ctlseqs.ms,v 3.57 2005/09/18 23:48:10 dickey Exp $
-.\"
-.\"
-.\" Copyright 1996-2004,2005 by Thomas E. Dickey
-.\"
-.\" 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-.\" holders shall not be used in advertising or otherwise to promote the
-.\" sale, use or other dealings in this Software without prior written
-.\" authorization.
-.\"
-.\"
-.\" Copyright 1991, 1994 X Consortium
-.\"
-.\" 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 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 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 X CONSORTIUM 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 X Consortium 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 X Consortium.
-.\"
-.\" X Window System is a trademark of X Consortium, Inc.
-.\"
-.\" Originally written by Edward Moy, University of California,
-.\" Berkeley, edmoy@violet.berkeley.edu, for the X.V10R4 xterm.
-.\" The X Consortium staff has since updated it for X11.
-.\" Updated by Thomas E. Dickey for XFree86 3.2 - XFree86 4.3
-.\"
-.\" Run this file through troff and use the -ms macro package.
-.\"
-.if n .pl 9999v \" no page breaks in nroff
-.ND
-.de St
-.sp
-.nr PD 0
-.nr PI 1.5i
-.nr VS 16
-..
-.de Ed
-.nr PD .3v
-.nr VS 12
-..
-.ds CH \" as nothing
-.ds LH Xterm Control Sequences
-.nr s 6*\n(PS/10
-.ds L \s\nsBEL\s0
-.ds E \s\nsESC\s0
-.ds T \s\nsTAB\s0
-.ds X \s\nsETX\s0
-.ds N \s\nsENQ\s0
-.ds e \s\nsETB\s0
-.ds C \s\nsCAN\s0
-.ds S \s\nsSUB\s0
-.\" space between chars
-.ie t .ds s \|
-.el .ds s " \"
-.nr [W \w'\*L'u
-.nr w \w'\*E'u
-.if \nw>\n([W .nr [W \nw
-.nr w \w'\*T'u
-.if \nw>\n([W .nr [W \nw
-.nr w \w'\*X'u
-.if \nw>\n([W .nr [W \nw
-.nr w \w'\*N'u
-.if \nw>\n([W .nr [W \nw
-.nr w \w'\*e'u
-.if \nw>\n([W .nr [W \nw
-.nr w \w'\*C'u
-.if \nw>\n([W .nr [W \nw
-.nr w \w'\*S'u
-.if \nw>\n([W .nr [W \nw
-.nr [W +\w'\|\|'u
-.de []
-.nr w \w'\\$2'
-.nr H \\n([Wu-\\nwu
-.nr h \\nHu/2u
-.\" do fancy box in troff
-.ie t .ds \\$1 \(br\v'-1p'\(br\v'1p'\h'\\nhu'\\$2\h'\\nHu-\\nhu'\(br\l'-\\n([Wu\(ul'\v'-1p'\(br\l'-\\n([Wu\(rn'\v'1p'\*s
-.el .ds \\$1 \\$2\*s
-..
-.[] Et \v'-1p'\*X\v'1p'
-.[] En \v'-1p'\*N\v'1p'
-.[] Be \v'-1p'\*L\v'1p'
-.[] AP \v'-1p'\s\nsAPC\s0\v'1p'
-.[] Bs \v'-1p'\s\nsBS\s0\v'1p'
-.[] Cs \v'-1p'\s\nsCSI\s0\v'1p'
-.[] S2 \v'-1p'\s\nsSS2\s0\v'1p'
-.[] S3 \v'-1p'\s\nsSS3\s0\v'1p'
-.[] SS \v'-1p'\s\nsSOS\s0\v'1p'
-.[] Eg \v'-1p'\s\nsEPA\s0\v'1p'
-.[] Sg \v'-1p'\s\nsSPA\s0\v'1p'
-.[] Dc \v'-1p'\s\nsDCS\s0\v'1p'
-.[] Ht \v'-1p'\s\nsHTS\s0\v'1p'
-.[] ID \v'-1p'\s\nsIND\s0\v'1p'
-.[] Nl \v'-1p'\s\nsNEL\s0\v'1p'
-.[] Os \v'-1p'\s\nsOSC\s0\v'1p'
-.[] RI \v'-1p'\s\nsRI\s0\v'1p'
-.[] PM \v'-1p'\s\nsPM\s0\v'1p'
-.[] ST \v'-1p'\s\nsST\s0\v'1p'
-.[] Ta \v'-1p'\*T\v'1p'
-.[] Lf \v'-1p'\s\nsLF\s0\v'1p'
-.[] Vt \v'-1p'\s\nsVT\s0\v'1p'
-.[] Ff \v'-1p'\s\nsFF\s0\v'1p'
-.[] Cr \v'-1p'\s\nsCR\s0\v'1p'
-.[] So \v'-1p'\s\nsSO\s0\v'1p'
-.[] Sp \v'-1p'\s\nsSP\s0\v'1p'
-.[] Si \v'-1p'\s\nsSI\s0\v'1p'
-.[] Eb \v'-1p'\*e\v'1p'
-.[] Ca \v'-1p'\*C\v'1p'
-.[] Su \v'-1p'\*S\v'1p'
-.[] Es \v'-1p'\*E\v'1p'
-.[] Fs \v'-1p'\s\nsFS\s0\v'1p'
-.[] Gs \v'-1p'\s\nsGS\s0\v'1p'
-.[] Rs \v'-1p'\s\nsRS\s0\v'1p'
-.[] Us \v'-1p'\s\nsUS\s0\v'1p'
-.[] XX \v'-1p'\s\nsXX\s0\v'1p'
-.[] $ $
-.[] # #
-.[] % %
-.[] (( (
-.[] ) )
-.[] * *
-.[] + +
-.[] , ,
-.[] - -
-.[] . .
-.[] 0 0
-.[] 1 1
-.[] 2 2
-.[] 3 3
-.[] 4 4
-.[] 5 5
-.[] 6 6
-.[] 7 7
-.[] 8 8
-.[] 9 9
-.[] : :
-.[] ; ;
-.[] = =
-.[] / /
-.[] < <
-.[] > >
-.[] ? ?
-.[] @ @
-.[] A A
-.[] cB B
-.[] C C
-.[] D D
-.[] E E
-.[] F F
-.[] G G
-.[] H H
-.[] I I
-.[] J J
-.[] K K
-.[] L L
-.[] M M
-.[] N N
-.[] O O
-.[] P P
-.[] Q Q
-.[] R R
-.[] S S
-.[] T T
-.[] V V
-.[] W W
-.[] XX X
-.[] Y Y
-.[] Z Z
-.[] [[ [
-.[] ]] ]
-.[] bS \\e
-.[] { {
-.[] ] ]
-.[] & &
-.[] ^ ^
-.[] _ _
-.[] qu \&'
-.[] ` \`
-.[] a a
-.[] b b
-.[] c c
-.[] d d
-.[] f f
-.[] g g
-.[] h h
-.[] i i
-.[] j j
-.[] k k
-.[] l l
-.[] m m
-.[] n n
-.[] o o
-.[] p p
-.[] q q
-.[] r r
-.[] cs s
-.[] t t
-.[] u u
-.[] v v
-.[] w w
-.[] x x
-.[] y y
-.[] z z
-.[] | |
-.[] } }
-.[] ! !
-.[] c" \(lq
-.[] c~ ~
-.[] Sc \fIc\fP
-.ds Cc \fIC\fP
-.ds Cb \fIC\v'.3m'\h'-.2m'\s-2b\s0\v'-.3m'\fP
-.ds Cx \fIC\v'.3m'\h'-.2m'\s-2x\s0\v'-.3m'\fP
-.ds Cy \fIC\v'.3m'\h'-.2m'\s-2y\s0\v'-.3m'\fP
-.ds Pb \fIP\v'.3m'\h'-.2m'\s-2b\s0\v'-.3m'\fP
-.ds Pc \fIP\v'.3m'\h'-.2m'\s-2c\s0\v'-.3m'\fP
-.ds Pd \fIP\v'.3m'\h'-.2m'\s-2d\s0\v'-.3m'\fP
-.ds Pe \fIP\v'.3m'\h'-.2m'\s-2e\s0\v'-.3m'\fP
-.ds Pl \fIP\v'.3m'\h'-.2m'\s-2l\s0\v'-.3m'\fP
-.ds Pm \fIP\v'.3m'\h'-.2m'\s-2m\s0\v'-.3m'\fP
-.ds Pp \fIP\v'.3m'\h'-.2m'\s-2p\s0\v'-.3m'\fP
-.ds Pr \fIP\v'.3m'\h'-.2m'\s-2r\s0\v'-.3m'\fP
-.ds Ps \fIP\v'.3m'\h'-.2m'\s-2s\s0\v'-.3m'\fP
-.ds Pt \fIP\v'.3m'\h'-.2m'\s-2t\s0\v'-.3m'\fP
-.ds Pu \fIP\v'.3m'\h'-.2m'\s-2u\s0\v'-.3m'\fP
-.ds Pv \fIP\v'.3m'\h'-.2m'\s-2v\s0\v'-.3m'\fP
-.ds Ix \fIx\fP
-.ds Iy \fIy\fP
-.ds Iw \fIw\fP
-.ds Ih \fIh\fP
-.ds Ir \fIr\fP
-.ds Ic \fIc\fP
-.ie t .nr LL 6.5i
-.el .nr LL 72m
-.if n .na
-.TL
-Xterm Control Sequences
-.AU
-Edward Moy
-.AI
-University of California, Berkeley
-.sp
-Revised by
-.AU
-Stephen Gildea
-.AI
-X Consortium (1994)
-.AU
-Thomas Dickey
-.AI
-XFree86 Project (1996-2005)
-.AU
-.
-.am BT \" add page numbers after first page
-.ds CF %
-..
-.SH
-Definitions
-.IP \*(Sc
-The literal character \fIc\fP.
-.IP \*(Cc
-A single (required) character.
-.IP \*(Ps
-A single (usually optional) numeric parameter, composed of one of more digits.
-.IP \*(Pm
-A multiple numeric parameter composed of any number of single numeric
-parameters, separated by \*; character(s).
-Individual values for the parameters are listed with \*(Ps .
-.IP \*(Pt
-A text parameter composed of printable characters.
-.
-.SH
-C1 (8-Bit) Control Characters
-.ds RH C1 (8-Bit) Control Characters
-.LP
-The \fIxterm\fP program recognizes both 8-bit and 7-bit control characters.
-It generates 7-bit controls (by default) or 8-bit if S8C1T is enabled.
-The following pairs of 7-bit and 8-bit control characters are equivalent:
-.St
-.IP \\*(Es\\*D
-Index (\*(ID is 0x84)
-.IP \\*(Es\\*E
-Next Line (\*(Nl is 0x85)
-.IP \\*(Es\\*H
-Tab Set (\*(Ht is 0x88)
-.IP \\*(Es\\*M
-Reverse Index (\*(RI is 0x8d)
-.IP \\*(Es\\*N
-Single Shift Select of G2 Character Set (\*(S2 is 0x8e): affects next character only
-.IP \\*(Es\\*O
-Single Shift Select of G3 Character Set (\*(S3 is 0x8f): affects next character only
-.IP \\*(Es\\*P
-Device Control String (\*(Dc is 0x90)
-.IP \\*(Es\\*V
-Start of Guarded Area (\*(Sg is 0x96)
-.IP \\*(Es\\*W
-End of Guarded Area (\*(Eg is 0x97)
-.IP \\*(Es\\*(XX
-Start of String (\*(SS is 0x98)
-.IP \\*(Es\\*Z
-Return Terminal ID (DECID is 0x9a). Obsolete form of \*(Cs\*c (DA).
-.IP \\*(Es\\*([[
-Control Sequence Introducer (\*(Cs is 0x9b)
-.IP \\*(Es\\*(bS
-String Terminator (\*(ST is 0x9c)
-.IP \\*(Es\\*(]]
-Operating System Command (\*(Os is 0x9d)
-.IP \\*(Es\\*^
-Privacy Message (\*(PM is 0x9e)
-.IP \\*(Es\\*_
-Application Program Command (\*(AP is 0x9f)
-.Ed
-.sp
-.LP
-These control characters are used in the vtXXX emulation.
-.
-.SH
-VT100 Mode
-.ds RH VT100 Mode
-.LP
-Most of these control sequences are standard VT102 control sequences,
-but there is support for later DEC VT terminals (i.e., VT220, VT320, VT420),
-as well as ISO 6429 and \fIaixterm\fP color controls.
-The only VT102 features not supported is auto-repeat,
-since the only way X provides for this will affect all windows.
-There are additional control sequences to provide
-\fIxterm-\fPdependent functions, such as the scrollbar or window size.
-Where the function is specified by DEC or ISO 6429, the code assigned
-to it is given in parentheses. The escape codes to designate and invoke
-character sets are specified by ISO 2022; see that document for a
-discussion of character sets.
-.
-.St
-.\"
-.LP
-.B
-Single-character functions
-.\"
-.IP \\*(Be
-Bell (Ctrl-G)
-.
-.IP \\*(Bs
-Backspace (Ctrl-H)
-.
-.IP \\*(Cr
-Carriage Return (Ctrl-M)
-.
-.IP \\*(En
-Return Terminal Status (Ctrl-E).
-Default response is an empty string, but may be overridden
-by a resource \fBanswerbackString\fP.
-.
-.IP \\*(Ff
-Form Feed or New Page (NP) (Ctrl-L) same as LF
-.
-.IP \\*(Lf
-Line Feed or New Line (NL) (Ctrl-J)
-.
-.IP \\*(So
-Shift Out (Ctrl-N) \(-> Switch to Alternate Character Set: invokes the
-G1 character set.
-.
-.IP \\*(Sp
-Space.
-.
-.IP \\*(Ta
-Horizontal Tab (HT) (Ctrl-I)
-.
-.IP \\*(Vt
-Vertical Tab (Ctrl-K) same as LF
-.
-.IP \\*(Si
-Shift In (Ctrl-O) \(-> Switch to Standard Character Set: invokes the
-G0 character set (the default).
-.Ed
-.\"
-.\"
-.\"
-.St
-.LP
-.B
-Controls beginning with ESC (other than those where ESC is part of a 7-bit equivalent to 8-bit C1 controls), ordered by the final character(s).
-.\"
-.IP \\*(Es\\*(Sp\\*F
-7-bit controls (S7C1T).
-.
-.IP \\*(Es\\*(Sp\\*G
-8-bit controls (S8C1T).
-.
-.IP \\*(Es\\*(Sp\\*L
-Set ANSI conformance level 1 (dpANS X3.134.1).
-.
-.IP \\*(Es\\*(Sp\\*M
-Set ANSI conformance level 2 (dpANS X3.134.1).
-.
-.IP \\*(Es\\*(Sp\\*N
-Set ANSI conformance level 3 (dpANS X3.134.1).
-.
-.IP \\*(Es\\*#\\*3
-DEC double-height line, top half (DECDHL)
-.
-.IP \\*(Es\\*#\\*4
-DEC double-height line, bottom half (DECDHL)
-.
-.IP \\*(Es\\*#\\*5
-DEC single-width line (DECSWL)
-.
-.IP \\*(Es\\*#\\*6
-DEC double-width line (DECDWL)
-.
-.IP \\*(Es\\*#\\*8
-DEC Screen Alignment Test (DECALN)
-.
-.IP \\*(Es\\*%\\*@
-Select default character set, ISO 8859-1 (ISO 2022)
-.
-.IP \\*(Es\\*%\\*G
-Select UTF-8 character set (ISO 2022)
-.
-.IP \\*(Es\\*(((\\*(Cc
-Designate G0 Character Set (ISO 2022)
-.IP \\*(Es\\*)\\*(Cc
-Designate G1 Character Set (ISO 2022)
-.
-.IP \\*(Es\\**\\*(Cc
-Designate G2 Character Set (ISO 2022)
-.
-.IP \\*(Es\\*+\\*(Cc
-Designate G3 Character Set (ISO 2022)
-.br
-Final character \*(Cc for designating character sets
-(\*0, \*A and \*(cB apply to VT100 and up, the remainder to VT220 and up):
- \*(Cc = \*0 \(-> DEC Special Character and Line Drawing Set
- \*(Cc = \*A \(-> United Kingdom (UK)
- \*(Cc = \*(cB \(-> United States (USASCII)
- \*(Cc = \*4 \(-> Dutch
- \*(Cc = \*C or \*5 \(-> Finnish
- \*(Cc = \*R \(-> French
- \*(Cc = \*Q \(-> French Canadian
- \*(Cc = \*K \(-> German
- \*(Cc = \*Y \(-> Italian
- \*(Cc = \*E or \*6 \(-> Norwegian/Danish
- \*(Cc = \*Z \(-> Spanish
- \*(Cc = \*H or \*7 \(-> Swedish
- \*(Cc = \*= \(-> Swiss
-.
-.IP \\*(Es\\*7
-Save Cursor (DECSC)
-.
-.IP \\*(Es\\*8
-Restore Cursor (DECRC)
-.
-.IP \\*(Es\\*=
-Application Keypad (DECPAM)
-.
-.IP \\*(Es\\*>
-Normal Keypad (DECPNM)
-.
-.IP \\*(Es\\*F
-Cursor to lower left corner of screen (if
-enabled by the \fBhpLowerleftBugCompat\fP resource).
-.
-.IP \\*(Es\\*c
-Full Reset (RIS)
-.
-.IP \\*(Es\\*l
-Memory Lock (per HP terminals). Locks memory above the cursor.
-.
-.IP \\*(Es\\*m
-Memory Unlock (per HP terminals)
-.
-.IP \\*(Es\\*n
-Invoke the G2 Character Set as GL (LS2).
-.
-.IP \\*(Es\\*o
-Invoke the G3 Character Set as GL (LS3).
-.
-.IP \\*(Es\\*|
-Invoke the G3 Character Set as GR (LS3R).
-.
-.IP \\*(Es\\*}
-Invoke the G2 Character Set as GR (LS2R).
-.
-.IP \\*(Es\\*(c~
-Invoke the G1 Character Set as GR (LS1R).
-.Ed
-.
-.St
-.LP
-.B
-Application Program-Control functions
-.IP \\*(AP\\*(Pt\\*s\\*(ST
-\fIxterm\fP implements no \*(AP functions; \*(Pt is ignored.
-\*(Pt need not be printable characters.
-.Ed
-.
-.St
-.LP
-.B
-Device-Control functions
-.IP \\*(Dc\\*(Ps\\*;\\*(Ps\\*|\\*(Pt\\*s\\*(ST
-User-Defined Keys (DECUDK).
-The first parameter:
- \*(Ps = \*0 \(-> Clear all UDK definitions before starting (default)
- \*(Ps = \*1 \(-> Erase Below (default)
-.br
-The second parameter:
- \*(Ps = \*0 \(-> Lock the keys (default)
- \*(Ps = \*1 \(-> Do not lock.
-.br
-The third parameter is a ';'-separated list of strings denoting
-the key-code separated by a '/' from the hex-encoded key value.
-The key codes correspond to the DEC function-key codes (e.g., F6=17).
-.
-.IP \\*(Dc\\*$\\*q\\*(Pt\\*s\\*(ST
-Request Status String (DECRQSS).
-The string following the "q" is one of the following:
- \*(c"\*q \(-> DECSCA
- \*(c"\*p \(-> DECSCL
- \*r \(-> DECSTBM
- \*m \(-> SGR
-.br
-\fIxterm\fP responds with
-\*(Dc\*1\*$\*r\*(Pt\*s\*(ST
-for valid requests, replacing the \*(Pt with the corresponding \*(Cs
-string,
-or
-\*(Dc\*0\*$\*r\*(Pt\*s\*(ST
-for invalid requests.
-.
-.IP \\*(Dc\\*+\\*q\\*(Pt\\*s\\*(ST
-Request Termcap/Terminfo String (xterm, experimental).
-The string following the "q" is a list of names
-encoded in hexadecimal (2 digits per character)
-separated by \*;
-which correspond to termcap or terminfo key names.
-.br
-\fIxterm\fP responds with
-\*(Dc\*1\*+\*r\*(Pt\*s\*(ST
-for valid requests, adding to \*(Pt an \*=,
-and the value of the corresponding string that xterm would send,
-or
-\*(Dc\*0\*+\*r\*(Pt\*s\*(ST
-for invalid requests.
-The strings are encoded in hexadecimal (2 digits per character).
-.Ed
-.\"
-.St
-.LP
-.B
-Functions using \*(Cs, ordered by the final character(s)
-.IP \\*(Cs\\*(Ps\\*s\\*@
-Insert \*(Ps (Blank) Character(s) (default = 1) (ICH)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*A
-Cursor Up \*(Ps Times (default = 1) (CUU)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*(cB
-Cursor Down \*(Ps Times (default = 1) (CUD)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*C
-Cursor Forward \*(Ps Times (default = 1) (CUF)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*D
-Cursor Backward \*(Ps Times (default = 1) (CUB)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*E
-Cursor Next Line \*(Ps Times (default = 1) (CNL)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*F
-Cursor Preceding Line \*(Ps Times (default = 1) (CPL)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*G
-Cursor Character Absolute [column] (default = [row,1]) (CHA)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*H
-Cursor Position [row;column] (default = [1,1]) (CUP)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*I
-Cursor Forward Tabulation \*(Ps tab stops (default = 1) (CHT)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*J
-Erase in Display (ED)
- \*(Ps = \*0 \(-> Erase Below (default)
- \*(Ps = \*1 \(-> Erase Above
- \*(Ps = \*2 \(-> Erase All
- \*(Ps = \*3 \(-> Erase Saved Lines (xterm)
-.
-.IP \\*(Cs\\*?\\*(Ps\\*s\\*J
-Erase in Display (DECSED)
- \*(Ps = \*0 \(-> Selective Erase Below (default)
- \*(Ps = \*1 \(-> Selective Erase Above
- \*(Ps = \*2 \(-> Selective Erase All
-.
-.IP \\*(Cs\\*(Ps\\*s\\*K
-Erase in Line (EL)
- \*(Ps = \*0 \(-> Erase to Right (default)
- \*(Ps = \*1 \(-> Erase to Left
- \*(Ps = \*2 \(-> Erase All
-.
-.IP \\*(Cs\\*?\\*(Ps\\*s\\*K
-Erase in Line (DECSEL)
- \*(Ps = \*0 \(-> Selective Erase to Right (default)
- \*(Ps = \*1 \(-> Selective Erase to Left
- \*(Ps = \*2 \(-> Selective Erase All
-.
-.IP \\*(Cs\\*(Ps\\*s\\*L
-Insert \*(Ps Line(s) (default = 1) (IL)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*M
-Delete \*(Ps Line(s) (default = 1) (DL)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*P
-Delete \*(Ps Character(s) (default = 1) (DCH)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*S
-Scroll up \*(Ps lines (default = 1) (SU)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*T
-Scroll down \*(Ps lines (default = 1) (SD)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*;\\*(Ps\\*s\\*;\\*(Ps\\*s\\*;\\*(Ps\\*s\\*T
-Initiate highlight mouse tracking.
-Parameters are [func;startx;starty;firstrow;lastrow].
-See the section \fBMouse Tracking\fP.
-.
-.IP \\*(Cs\\*(Ps\\*s\\*(XX
-Erase \*(Ps Character(s) (default = 1) (ECH)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*Z
-Cursor Backward Tabulation \*(Ps tab stops (default = 1) (CBT)
-.
-.IP \\*(Cs\\*(Pm\\*s\\*`
-Character Position Absolute [column] (default = [row,1]) (HPA)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*b
-Repeat the preceding graphic character \*(Ps times (REP)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*c
-Send Device Attributes (Primary DA)
- \*(Ps = \*0 or omitted \(-> request attributes from terminal.
-The response depends on the \fBdecTerminalID\fP resource setting.
- \(-> \*(Cs\*?\*1\*;\*2\*c (``VT100 with Advanced Video Option'')
- \(-> \*(Cs\*?\*1\*;\*0\*c (``VT101 with No Options'')
- \(-> \*(Cs\*?\*6\*c (``VT102'')
- \(-> \*(Cs\*?\*6\*0\*;\*1\*;\*2\*;\*6\*;\*8\*;\*9\*;\*1\*5\*;\*c (``VT220'')
-.br
-The VT100-style response parameters do not mean anything by themselves.
-VT220 parameters do, telling the host what features the terminal supports:
- \(-> \*1 132-columns
- \(-> \*2 Printer
- \(-> \*6 Selective erase
- \(-> \*8 User-defined keys
- \(-> \*9 National replacement character sets
- \(-> \*1\*5 Technical characters
- \(-> \*2\*2 ANSI color, e.g., VT525
- \(-> \*2\*9 ANSI text locator (i.e., DEC Locator mode)
-.
-.IP \\*(Cs\\*>\\*(Ps\\*s\\*c
-Send Device Attributes (Secondary DA)
- \*(Ps = \*0 or omitted \(-> request the terminal's identification code.
-The response depends on the \fBdecTerminalID\fP resource setting.
-It should apply only to VT220 and up, but \fIxterm\fP extends this to VT100.
- \(-> \*(Cs\*s\*>\*(Pp\*s\*;\*(Pv\*s\*;\*(Pc\*s\*c
-.br
-where \*(Pp denotes the terminal type
- \(-> \*0 (``VT100'')
- \(-> \*1 (``VT220'')
-.br
-and \*(Pv is the firmware version (for \fIxterm\fP, this is the XFree86
-patch number, starting with 95).
-In a DEC terminal, \*(Pc indicates the ROM cartridge
-registration number and is always zero.
-.
-.IP \\*(Cs\\*(Pm\\*s\\*d
-Line Position Absolute [row] (default = [1,column]) (VPA)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*f
-Horizontal and Vertical Position [row;column] (default = [1,1]) (HVP)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*g
-Tab Clear (TBC)
- \*(Ps = \*0 \(-> Clear Current Column (default)
- \*(Ps = \*3 \(-> Clear All
-.
-.IP \\*(Cs\\*(Pm\\*s\\*h
-Set Mode (SM)
- \*(Ps = \*2 \(-> Keyboard Action Mode (AM)
- \*(Ps = \*4 \(-> Insert Mode (IRM)
- \*(Ps = \*1\*2 \(-> Send/receive (SRM)
- \*(Ps = \*2\*0 \(-> Automatic Newline (LNM)
-.
-.IP \\*(Cs\\*?\\*(Pm\\*s\\*h
-DEC Private Mode Set (DECSET)
- \*(Ps = \*1 \(-> Application Cursor Keys (DECCKM)
- \*(Ps = \*2 \(-> Designate USASCII for character sets G0-G3 (DECANM),
-and set VT100 mode.
- \*(Ps = \*3 \(-> 132 Column Mode (DECCOLM)
- \*(Ps = \*4 \(-> Smooth (Slow) Scroll (DECSCLM)
- \*(Ps = \*5 \(-> Reverse Video (DECSCNM)
- \*(Ps = \*6 \(-> Origin Mode (DECOM)
- \*(Ps = \*7 \(-> Wraparound Mode (DECAWM)
- \*(Ps = \*8 \(-> Auto-repeat Keys (DECARM)
- \*(Ps = \*9 \(-> Send Mouse X & Y on button press.
-See the section \fBMouse Tracking\fP.
- \*(Ps = \*1\*0 \(-> Show toolbar (rxvt)
- \*(Ps = \*1\*2 \(-> Start Blinking Cursor (att610)
- \*(Ps = \*1\*8 \(-> Print form feed (DECPFF)
- \*(Ps = \*1\*9 \(-> Set print extent to full screen (DECPEX)
- \*(Ps = \*2\*5 \(-> Show Cursor (DECTCEM)
- \*(Ps = \*3\*0 \(-> Show scrollbar (rxvt).
- \*(Ps = \*3\*5 \(-> Enable font-shifting functions (rxvt).
- \*(Ps = \*3\*8 \(-> Enter Tektronix Mode (DECTEK)
- \*(Ps = \*4\*0 \(-> Allow 80 \z\(<-\(-> 132 Mode
- \*(Ps = \*4\*1 \(-> \fImore\fP(1) fix (see \fBcurses\fP resource)
- \*(Ps = \*4\*2 \(-> Enable Nation Replacement Character sets (DECNRCM)
- \*(Ps = \*4\*4 \(-> Turn On Margin Bell
- \*(Ps = \*4\*5 \(-> Reverse-wraparound Mode
- \*(Ps = \*4\*6 \(-> Start Logging
-(normally disabled by a compile-time option)
- \*(Ps = \*4\*7 \(-> Use Alternate Screen Buffer (unless
-disabled by the \fBtiteInhibit\fP resource)
- \*(Ps = \*6\*6 \(-> Application keypad (DECNKM)
- \*(Ps = \*6\*7 \(-> Backarrow key sends backspace (DECBKM)
- \*(Ps = \*1\*0\*0\*0 \(-> Send Mouse X & Y on button press and release.
-See the section \fBMouse Tracking\fP.
- \*(Ps = \*1\*0\*0\*1 \(-> Use Hilite Mouse Tracking.
- \*(Ps = \*1\*0\*0\*2 \(-> Use Cell Motion Mouse Tracking.
- \*(Ps = \*1\*0\*0\*3 \(-> Use All Motion Mouse Tracking.
- \*(Ps = \*1\*0\*1\*0 \(-> Scroll to bottom on tty output (rxvt).
- \*(Ps = \*1\*0\*1\*1 \(-> Scroll to bottom on key press (rxvt).
- \*(Ps = \*1\*0\*3\*5 \(-> Enable special modifiers for Alt and NumLock keys.
- \*(Ps = \*1\*0\*3\*6 \(-> Send ESC when Meta modifies a key
-(enables the \fBmetaSendsEscape\fP resource).
- \*(Ps = \*1\*0\*3\*7 \(-> Send DEL from the editing-keypad Delete key
- \*(Ps = \*1\*0\*4\*7 \(-> Use Alternate Screen Buffer (unless
-disabled by the \fBtiteInhibit\fP resource)
- \*(Ps = \*1\*0\*4\*8 \(-> Save cursor as in DECSC (unless
-disabled by the \fBtiteInhibit\fP resource)
- \*(Ps = \*1\*0\*4\*9 \(-> Save cursor as in DECSC
-and use Alternate Screen Buffer, clearing it first (unless
-disabled by the \fBtiteInhibit\fP resource).
-This combines the effects of the \*1\*0\*4\*7 and \*1\*0\*4\*8 modes.
-Use this with terminfo-based applications rather than the \*4\*7 mode.
- \*(Ps = \*1\*0\*5\*1 \(-> Set Sun function-key mode.
- \*(Ps = \*1\*0\*5\*2 \(-> Set HP function-key mode.
- \*(Ps = \*1\*0\*5\*3 \(-> Set SCO function-key mode.
- \*(Ps = \*1\*0\*6\*0 \(-> Set legacy keyboard emulation (X11R6).
- \*(Ps = \*1\*0\*6\*1 \(-> Set Sun/PC keyboard emulation of VT220 keyboard.
- \*(Ps = \*2\*0\*0\*4 \(-> Set bracketed paste mode.
-.
-.IP \\*(Cs\\*(Pm\\*s\\*i
-Media Copy (MC)
- \*(Ps = \*0 \(-> Print screen (default)
- \*(Ps = \*4 \(-> Turn off printer controller mode
- \*(Ps = \*5 \(-> Turn on printer controller mode
-.
-.IP \\*(Cs\\*?\\*(Pm\\*s\\*i
-Media Copy (MC, DEC-specific)
- \*(Ps = \*1 \(-> Print line containing cursor
- \*(Ps = \*4 \(-> Turn off autoprint mode
- \*(Ps = \*5 \(-> Turn on autoprint mode
- \*(Ps = \*1 \*0 \(-> Print composed display, ignores DECPEX
- \*(Ps = \*1 \*1 \(-> Print all pages
-.
-.IP \\*(Cs\\*(Pm\\*s\\*l
-Reset Mode (RM)
- \*(Ps = \*2 \(-> Keyboard Action Mode (AM)
- \*(Ps = \*4 \(-> Replace Mode (IRM)
- \*(Ps = \*1\*2 \(-> Send/receive (SRM)
- \*(Ps = \*2\*0 \(-> Normal Linefeed (LNM)
-.
-.IP \\*(Cs\\*?\\*(Pm\\*s\\*l
-DEC Private Mode Reset (DECRST)
- \*(Ps = \*1 \(-> Normal Cursor Keys (DECCKM)
- \*(Ps = \*2 \(-> Designate VT52 mode (DECANM).
- \*(Ps = \*3 \(-> 80 Column Mode (DECCOLM)
- \*(Ps = \*4 \(-> Jump (Fast) Scroll (DECSCLM)
- \*(Ps = \*5 \(-> Normal Video (DECSCNM)
- \*(Ps = \*6 \(-> Normal Cursor Mode (DECOM)
- \*(Ps = \*7 \(-> No Wraparound Mode (DECAWM)
- \*(Ps = \*8 \(-> No Auto-repeat Keys (DECARM)
- \*(Ps = \*9 \(-> Don't Send Mouse X & Y on button press
- \*(Ps = \*1\*0 \(-> Hide toolbar (rxvt)
- \*(Ps = \*1\*2 \(-> Stop Blinking Cursor (att610)
- \*(Ps = \*1\*8 \(-> Don't print form feed (DECPFF)
- \*(Ps = \*1\*9 \(-> Limit print to scrolling region (DECPEX)
- \*(Ps = \*2\*5 \(-> Hide Cursor (DECTCEM)
- \*(Ps = \*3\*0 \(-> Don't show scrollbar (rxvt).
- \*(Ps = \*3\*5 \(-> Disable font-shifting functions (rxvt).
- \*(Ps = \*4\*0 \(-> Disallow 80 \z\(<-\(-> 132 Mode
- \*(Ps = \*4\*1 \(-> No \fImore\fP(1) fix (see \fBcurses\fP resource)
- \*(Ps = \*4\*2 \(-> Disable Nation Replacement Character sets (DECNRCM)
- \*(Ps = \*4\*4 \(-> Turn Off Margin Bell
- \*(Ps = \*4\*5 \(-> No Reverse-wraparound Mode
- \*(Ps = \*4\*6 \(-> Stop Logging
-(normally disabled by a compile-time option)
- \*(Ps = \*4\*7 \(-> Use Normal Screen Buffer
- \*(Ps = \*6\*6 \(-> Numeric keypad (DECNKM)
- \*(Ps = \*6\*7 \(-> Backarrow key sends delete (DECBKM)
- \*(Ps = \*1\*0\*0\*0 \(-> Don't Send Mouse X & Y on button press and
-release.
-See the section \fBMouse Tracking\fP.
- \*(Ps = \*1\*0\*0\*1 \(-> Don't Use Hilite Mouse Tracking
- \*(Ps = \*1\*0\*0\*2 \(-> Don't Use Cell Motion Mouse Tracking
- \*(Ps = \*1\*0\*0\*3 \(-> Don't Use All Motion Mouse Tracking
- \*(Ps = \*1\*0\*1\*0 \(-> Don't scroll to bottom on tty output (rxvt).
- \*(Ps = \*1\*0\*1\*1 \(-> Don't scroll to bottom on key press (rxvt).
- \*(Ps = \*1\*0\*3\*5 \(-> Disable special modifiers for Alt and NumLock keys.
- \*(Ps = \*1\*0\*3\*6 \(-> Don't send ESC when Meta modifies a key
-(disables the \fBmetaSendsEscape\fP resource).
- \*(Ps = \*1\*0\*3\*7 \(-> Send VT220 Remove from the editing-keypad Delete key
- \*(Ps = \*1\*0\*4\*7 \(-> Use Normal Screen Buffer, clearing screen
-first if in the Alternate Screen (unless
-disabled by the \fBtiteInhibit\fP resource)
- \*(Ps = \*1\*0\*4\*8 \(-> Restore cursor as in DECRC (unless
-disabled by the \fBtiteInhibit\fP resource)
- \*(Ps = \*1\*0\*4\*9 \(-> Use Normal Screen Buffer and restore cursor
-as in DECRC (unless
-disabled by the \fBtiteInhibit\fP resource).
-This combines the effects of the \*1\*0\*4\*7 and \*1\*0\*4\*8 modes.
-Use this with terminfo-based applications rather than the \*4\*7 mode.
- \*(Ps = \*1\*0\*5\*1 \(-> Reset Sun function-key mode.
- \*(Ps = \*1\*0\*5\*2 \(-> Reset HP function-key mode.
- \*(Ps = \*1\*0\*5\*3 \(-> Reset SCO function-key mode.
- \*(Ps = \*1\*0\*6\*0 \(-> Reset legacy keyboard emulation (X11R6).
- \*(Ps = \*1\*0\*6\*1 \(-> Reset Sun/PC keyboard emulation of VT220 keyboard.
- \*(Ps = \*2\*0\*0\*4 \(-> Reset bracketed paste mode.
-.
-.IP \\*(Cs\\*(Pm\\*s\\*m
-Character Attributes (SGR)
- \*(Ps = \*0 \(-> Normal (default)
- \*(Ps = \*1 \(-> Bold
- \*(Ps = \*4 \(-> Underlined
- \*(Ps = \*5 \(-> Blink (appears as Bold)
- \*(Ps = \*7 \(-> Inverse
- \*(Ps = \*8 \(-> Invisible, i.e., hidden (VT300)
- \*(Ps = \*2\*2 \(-> Normal (neither bold nor faint)
- \*(Ps = \*2\*4 \(-> Not underlined
- \*(Ps = \*2\*5 \(-> Steady (not blinking)
- \*(Ps = \*2\*7 \(-> Positive (not inverse)
- \*(Ps = \*2\*8 \(-> Visible, i.e., not hidden (VT300)
- \*(Ps = \*3\*0 \(-> Set foreground color to Black
- \*(Ps = \*3\*1 \(-> Set foreground color to Red
- \*(Ps = \*3\*2 \(-> Set foreground color to Green
- \*(Ps = \*3\*3 \(-> Set foreground color to Yellow
- \*(Ps = \*3\*4 \(-> Set foreground color to Blue
- \*(Ps = \*3\*5 \(-> Set foreground color to Magenta
- \*(Ps = \*3\*6 \(-> Set foreground color to Cyan
- \*(Ps = \*3\*7 \(-> Set foreground color to White
- \*(Ps = \*3\*9 \(-> Set foreground color to default (original)
- \*(Ps = \*4\*0 \(-> Set background color to Black
- \*(Ps = \*4\*1 \(-> Set background color to Red
- \*(Ps = \*4\*2 \(-> Set background color to Green
- \*(Ps = \*4\*3 \(-> Set background color to Yellow
- \*(Ps = \*4\*4 \(-> Set background color to Blue
- \*(Ps = \*4\*5 \(-> Set background color to Magenta
- \*(Ps = \*4\*6 \(-> Set background color to Cyan
- \*(Ps = \*4\*7 \(-> Set background color to White
- \*(Ps = \*4\*9 \(-> Set background color to default (original).
-.sp
-If 16-color support is compiled, the following apply.
-Assume that \fIxterm\fP's resources
-are set so that the ISO color codes are the first 8 of a set of 16.
-Then the \fIaixterm\fP colors are the bright versions of the ISO colors:
- \*(Ps = \*9\*0 \(-> Set foreground color to Black
- \*(Ps = \*9\*1 \(-> Set foreground color to Red
- \*(Ps = \*9\*2 \(-> Set foreground color to Green
- \*(Ps = \*9\*3 \(-> Set foreground color to Yellow
- \*(Ps = \*9\*4 \(-> Set foreground color to Blue
- \*(Ps = \*9\*5 \(-> Set foreground color to Magenta
- \*(Ps = \*9\*6 \(-> Set foreground color to Cyan
- \*(Ps = \*9\*7 \(-> Set foreground color to White
- \*(Ps = \*1\*0\*0 \(-> Set background color to Black
- \*(Ps = \*1\*0\*1 \(-> Set background color to Red
- \*(Ps = \*1\*0\*2 \(-> Set background color to Green
- \*(Ps = \*1\*0\*3 \(-> Set background color to Yellow
- \*(Ps = \*1\*0\*4 \(-> Set background color to Blue
- \*(Ps = \*1\*0\*5 \(-> Set background color to Magenta
- \*(Ps = \*1\*0\*6 \(-> Set background color to Cyan
- \*(Ps = \*1\*0\*7 \(-> Set background color to White
-.sp
-If \fIxterm\fP is compiled with the 16-color support disabled, it supports
-the following, from \fIrxvt\fP:
- \*(Ps = \*1\*0\*0 \(-> Set foreground and background color to default
-.sp
-If 88- or 256-color support is compiled, the following apply.
- \*(Ps = \*3\*8 ; \*5 ; \*(Ps \(-> Set foreground color to the second \*(Ps
- \*(Ps = \*4\*8 ; \*5 ; \*(Ps \(-> Set background color to the second \*(Ps
-.sp
-.
-.IP \\*(Cs\\*(Ps\\*s\\*n
-Device Status Report (DSR)
- \*(Ps = \*5 \(-> Status Report \*(Cs\*0\*n (``OK'')
- \*(Ps = \*6 \(-> Report Cursor Position (CPR) [row;column] as
-.br
-\*(Cs\*(Ir\*s\*;\*(Ic\*s\*R
-.
-.IP \\*(Cs\\*?\\*(Ps\\*s\\*n
-Device Status Report (DSR, DEC-specific)
- \*(Ps = \*6 \(-> Report Cursor Position (CPR) [row;column] as
-\*(Cs\*?\*(Ir\*s\*;\*(Ic\*s\*R
-(assumes page is zero).
- \*(Ps = \*1\*5 \(-> Report Printer status as
-\*(Cs\*?\*1\*0\*s\*n (ready)
-or
-\*(Cs\*?\*1\*1\*s\*n (not ready)
- \*(Ps = \*2\*5 \(-> Report UDK status as
-\*(Cs\*?\*2\*0\*s\*n (unlocked)
-or
-\*(Cs\*?\*2\*1\*s\*n (locked)
- \*(Ps = \*2\*6 \(-> Report Keyboard status as
-.br
-\*(Cs\*?\*2\*7\*s\*;\*s\*1\*s\*;\*s\*0\*s\*;\*s\*0\*s\*n (North American)
-.br
-The last two parameters apply to VT400 & up, and denote keyboard ready and LK01 respectively.
- \*(Ps = \*5\*3 \(-> Report Locator status as
-.br
-\*(Cs\*?\*5\*3\*s\*n Locator available, if compiled-in, or
-.br
-\*(Cs\*?\*5\*0\*s\*n No Locator, if not.
-.
-.IP \\*(Cs\\*!\\*p
-Soft terminal reset (DECSTR)
-.
-.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*(c"\\*p
-Set conformance level (DECSCL)
-Valid values for the first parameter:
- \*(Ps = \*6\*1 \(-> VT100
- \*(Ps = \*6\*2 \(-> VT200
- \*(Ps = \*6\*3 \(-> VT300
-.br
-Valid values for the second parameter:
- \*(Ps = \*0 \(-> 8-bit controls
- \*(Ps = \*1 \(-> 7-bit controls (always set for VT100)
- \*(Ps = \*2 \(-> 8-bit controls
-.
-.IP \\*(Cs\\*(Ps\\*s\\*(c"\\*q
-Select character protection attribute (DECSCA).
-Valid values for the parameter:
- \*(Ps = \*0 \(-> DECSED and DECSEL can erase (default)
- \*(Ps = \*1 \(-> DECSED and DECSEL cannot erase
- \*(Ps = \*2 \(-> DECSED and DECSEL can erase
-.
-.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*r
-Set Scrolling Region [top;bottom] (default = full size of window) (DECSTBM)
-.
-.IP \\*(Cs\\*?\\*(Pm\\*s\\*r
-Restore DEC Private Mode Values. The value of \*(Ps previously saved is
-restored. \*(Ps values are the same as for DECSET.
-.
-.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*;\\*(Ps\\*$\\*r
-Change Attributes in Rectangular Area (DECCARA).
- \*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle.
- \*(Ps denotes the SGR attributes to change: 0, 1, 4, 5, 7
-.
-.IP \\*(Cs\\*(cs
-Save cursor (ANSI.SYS)
-.
-.IP \\*(Cs\\*?\\*(Pm\\*s\\*(cs
-Save DEC Private Mode Values. \*(Ps values are the same as for DECSET.
-.
-.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*;\\*(Ps\\*s\\*t
-Window manipulation (from \fIdtterm\fP, as well as extensions).
-These controls may be disabled using the \fIallowWindowOps\fP resource.
-Valid values for the first (and any additional parameters) are:
- \*(Ps = \*1 \(-> De-iconify window.
- \*(Ps = \*2 \(-> Iconify window.
- \*(Ps = \*3 ; \fIx ; y\fP \(-> Move window to [x, y].
- \*(Ps = \*4 ; \fIheight ; width\fP \(-> Resize the \fIxterm\fP window to height and width in pixels.
- \*(Ps = \*5 \(-> Raise the \fIxterm\fP window to the front of the stacking order.
- \*(Ps = \*6 \(-> Lower the \fIxterm\fP window to the bottom of the stacking order.
- \*(Ps = \*7 \(-> Refresh the \fIxterm\fP window.
- \*(Ps = \*8 ; \fIheight ; width\fP \(-> Resize the text area to [height;width] in characters.
- \*(Ps = \*9 ; \*0 \(-> Restore maximized window.
- \*(Ps = \*9 ; \*1 \(-> Maximize window (i.e., resize to screen size).
- \*(Ps = \*1\*1 \(-> Report \fIxterm\fP window state.
-If the \fIxterm\fP window is open (non-iconified), it returns \*(Cs\*1\*t.
-If the \fIxterm\fP window is iconified, it returns \*(Cs\*2\*t.
- \*(Ps = \*1\*3 \(-> Report \fIxterm\fP window position as
-\*(Cs\*3\*;\*(Ix\*;\*(Iy\*t
- \*(Ps = \*1\*4 \(-> Report \fIxterm\fP window in pixels as
-\*(Cs\*s\*4\*s\*;\*s\fIheight\fP\*s\*;\*s\fIwidth\fP\*s\*t
- \*(Ps = \*1\*8 \(-> Report the size of the text area in characters as
-\*(Cs\*s\*8\*s\*;\*s\fIheight\fP\*s\*;\*s\fIwidth\fP\*s\*t
- \*(Ps = \*1\*9 \(-> Report the size of the screen in characters as
-\*(Cs\*s\*9\*s\*;\*s\fIheight\fP\*s\*;\*s\fIwidth\fP\*s\*t
- \*(Ps = \*2\*0 \(-> Report \fIxterm\fP window's icon label as
-\*(Os\*s\*L\*s\fIlabel\fP\*s\*(ST
- \*(Ps = \*2\*1 \(-> Report \fIxterm\fP window's title as
-\*(Os\*s\*l\*s\fItitle\fP\*s\*(ST
- \*(Ps >= \*2\*4 \(-> Resize to \*(Ps lines (DECSLPP)
-.
-.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*;\\*(Ps\\*$\\*t
-Reverse Attributes in Rectangular Area (DECRARA).
- \*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle.
- \*(Ps denotes the attributes to reverse. 1, 4, 5, 7
-.
-.IP \\*(Cs\\*u
-Save cursor (ANSI.SYS)
-.
-.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*;\\*(Pp\\*;\\*(Pt\\*;\\*(Pl\\*;\\*(Pp\\*$\\*v
-Copy Rectangular Area (DECCRA)
- \*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle.
- \*(Pp denotes the source page.
- \*(Pt\*;\*(Pl denotes the target location.
- \*(Pp denotes the target page.
-.
-.IP \\*(Cs\\*(Pt\\*s\\*;\\*(Pl\\*s\\*;\\*(Pb\\*s\\*;\\*(Pr\\*s\\*(qu\\*w
-Enable Filter Rectangle (DECEFR)
-.br
-Parameters are [top;left;bottom;right].
-.br
-Defines the coordinates of a filter rectangle and activates it.
-Anytime the locator is detected outside of the filter rectangle,
-an outside rectangle event is generated and the rectangle is disabled.
-Filter rectangles are always treated as "one-shot" events.
-Any parameters that are omitted default to the current locator position.
-If all parameters are omitted, any locator motion will be reported.
-DECELR always cancels any prevous rectangle definition.
-.
-.IP \\*(Cs\\*(Ps\\*s\\*x
-Request Terminal Parameters (DECREQTPARM)
-.br
-if \*(Ps is a "0" (default) or "1", and \fBxterm\fR is emulating VT100,
-the control sequence elicits a response of the same form
-whose parameters describe the terminal:
- \*(Ps \(-> the given \*(Ps incremented by 2.
- \*1 \(-> no parity
- \*1 \(-> eight bits
- \*1 \*2 \*8 \(-> transmit 38.4k baud
- \*1 \*2 \*8 \(-> receive 38.4k baud
- \*1 \(-> clock multiplier
- \*0 \(-> STP flags
-.
-.IP \\*(Cs\\*(Ps\\*s\\*x
-Select Attribute Change Extent (DECSACE).
- \*(Ps = \*0 \(-> from start to end position, wrapped
- \*(Ps = \*1 \(-> from start to end position, wrapped
- \*(Ps = \*2 \(-> rectangle (exact).
-.
-.IP \\*(Cs\\*(Pc\\*;\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*$\\*x
-Fill Rectangular Area (DECFRA).
- \*(Pc is the character to use.
- \*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle.
-.
-.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Pu\\*s\\*(qu\\*z
-Enable Locator Reporting (DECELR)
-.br
-Valid values for the first parameter:
- \*(Ps = \*0 \(-> Locator disabled (default)
- \*(Ps = \*1 \(-> Locator enabled
- \*(Ps = \*2 \(-> Locator enabled for one report, then disabled
-.br
-The second parameter specifies the coordinate unit for locator reports.
-.br
-Valid values for the second parameter:
- \*(Pu = \*0 or omitted \(-> default to character cells
- \*(Pu = \*1 \(-> device physical pixels
- \*(Pu = \*2 \(-> character cells
-.
-.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*$\\*z
-Erase Rectangular Area (DECERA).
- \*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle.
-.
-.IP \\*(Cs\\*(Pm\\*s\\*(qu\\*{
-Select Locator Events (DECSLE)
-.br
-Valid values for the first (and any additional parameters) are:
- \*(Ps = \*0 \(-> only respond to explicit host requests (DECRQLP)
- (default) also cancels any filter rectangle
- \*(Ps = \*1 \(-> report button down transitions
- \*(Ps = \*2 \(-> do not report button down transitions
- \*(Ps = \*3 \(-> report button up transitions
- \*(Ps = \*4 \(-> do not report button up transitions
-.
-.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*$\\*{
-Selective Erase Rectangular Area (DECSERA).
- \*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle.
-.
-.IP \\*(Cs\\*(Ps\\*s\\*(qu\\*|
-Request Locator Position (DECRQLP)
-.br
-Valid values for the parameter are:
- \*(Ps = \*0, 1 or omitted \(-> transmit a single DECLRP locator report
-.sp
-If Locator Reporting has been enabled by a DECELR, xterm will respond
-with a DECLRP Locator Report. This report is also generated on button
-up and down events if they have been enabled with a DECSLE, or when
-the locator is detected outside of a filter rectangle, if filter rectangles
-have been enabled with a DECEFR.
-.sp
- \(-> \*(Cs\*(Pe\*s\*;\*(Pb\*s\*;\*(Pr\*s\*;\*(Pc\*s\*;\*(Pp\*s\*&\*s\*w
-.sp
-Parameters are [event;button;row;column;page].
-.br
-Valid values for the event:
- \*(Pe = \*0 \(-> locator unavailable - no other parameters sent
- \*(Pe = \*1 \(-> request - xterm received a DECRQLP
- \*(Pe = \*2 \(-> left button down
- \*(Pe = \*3 \(-> left button up
- \*(Pe = \*4 \(-> middle button down
- \*(Pe = \*5 \(-> middle button up
- \*(Pe = \*6 \(-> right button down
- \*(Pe = \*7 \(-> right button up
- \*(Pe = \*8 \(-> M4 button down
- \*(Pe = \*9 \(-> M4 button up
- \*(Pe = \*1\*0 \(-> locator outside filter rectangle
-.br
-``button'' parameter is a bitmask indicating which buttons are pressed:
- \*(Pb = \*0 \(-> no buttons down
- \*(Pb & \*1 \(-> right button down
- \*(Pb & \*2 \(-> middle button down
- \*(Pb & \*4 \(-> left button down
- \*(Pb & \*8 \(-> M4 button down
-.br
-``row'' and ``column'' parameters are the coordinates of the locator
-position in the xterm window, encoded as ASCII decimal.
-.br
-The ``page'' parameter is not used by xterm, and will be omitted.
-.
-.Ed
-.
-.St
-.LP
-.B
-Operating System Controls
-.
-.IP \\*(Os\\*(Ps\\*s\\*;\\*(Pt\\*s\\*(ST
-.IP \\*(Os\\*(Ps\\*s\\*;\\*(Pt\\*s\\*(Be
-Set Text Parameters.
-For colors and font,
-if \*(Pt is a "?", the control sequence elicits a response which consists
-of the control sequence which would set the corresponding value.
-The \fIdtterm\fP control sequences allow you to determine the icon name
-and window title.
- \*(Ps = \*0 \(-> Change Icon Name and Window Title to \*(Pt
- \*(Ps = \*1 \(-> Change Icon Name to \*(Pt
- \*(Ps = \*2 \(-> Change Window Title to \*(Pt
- \*(Ps = \*3 \(-> Set X property on top-level window. \*(Pt should be in the form
-"\fIprop=value\fP", or just "\fIprop\fP" to delete the property
- \*(Ps = \*4 ; \fIc ; spec\fP \(-> Change Color Number \fIc\fP to
-the color specified by \fIspec\fP,
-i.e., a name or RGB specification as per \fIXParseColor\fP.
-Any number of \fIc name\fP pairs may be given.
-The color numbers correspond to the ANSI colors 0-7,
-their bright versions 8-15,
-and if supported, the remainder of the 88-color or 256-color table.
-.sp
-If a "?" is given rather than a name or RGB specification,
-xterm replies with a control sequence of the same form which can be used
-to set the corresponding color.
-Because more than one pair of color number and specification can
-be given in one control sequence, \fBxterm\fR can make more than one reply.
-.sp
-The 8 colors which may be set using \*1\*0 through \*1\*7 are
-denoted \fIdynamic colors\fR, since the corresponding control sequences
-were the first means for setting \fBxterm\fR's colors dynamically,
-i.e., after it was started.
-They are not the same as the ANSI colors.
-One or more parameters is expected for \*(Pt.
-Each successive parameter changes the next color in the list.
-The value of \*(Ps tells the starting point in the list.
-The colors are specified by name or RGB specification as per \fIXParseColor\fP.
-.sp
-If a "?" is given rather than a name or RGB specification,
-xterm replies with a control sequence of the same form which can be used
-to set the corresponding dynamic color.
-Because more than one pair of color number and specification can
-be given in one control sequence, \fBxterm\fR can make more than one reply.
-.sp
- \*(Ps = \*1\*0 \(-> Change VT100 text foreground color to \*(Pt
- \*(Ps = \*1\*1 \(-> Change VT100 text background color to \*(Pt
- \*(Ps = \*1\*2 \(-> Change text cursor color to \*(Pt
- \*(Ps = \*1\*3 \(-> Change mouse foreground color to \*(Pt
- \*(Ps = \*1\*4 \(-> Change mouse background color to \*(Pt
- \*(Ps = \*1\*5 \(-> Change Tektronix foreground color to \*(Pt
- \*(Ps = \*1\*6 \(-> Change Tektronix background color to \*(Pt
- \*(Ps = \*1\*7 \(-> Change highlight color to \*(Pt
- \*(Ps = \*1\*8 \(-> Change Tektronix cursor color to \*(Pt
-.sp
- \*(Ps = \*4\*6 \(-> Change Log File to \*(Pt (normally disabled by a
-compile-time option)
-.sp
- \*(Ps = \*5\*0 \(-> Set Font to \*(Pt
-If \*(Pt begins with a "#", index in the font menu, relative (if the
-next character is a plus or minus sign) or absolute. A number is
-expected but not required after the sign (the default is the current
-entry for relative, zero for absolute indexing).
-.sp
- \*(Ps = \*5\*1 (reserved for Emacs shell)
-.sp
- \*(Ps = \*5\*2 \(-> Manipulate Selection Data.
-These controls may be disabled using the \fIallowWindowOps\fP resource.
-The parameter \*(Pt is parsed as
-.br
- \*(Pc\*;\*(Pd
-.br
-The first, \*(Pc, may contain any character from the
-set \*c \*p \*0 \*1 \*2 \*3 \*4 \*5 \*6 \*7.
-It is used to construct a list of selection parameters for
-clipboard,
-primary,
-or cut buffers 0 through 8 respectively,
-in the order given.
-If the parameter is empty, \fIxterm\fP uses \*p\*0,
-to specify the primary selection and cut buffer 0.
-.br
-The second parameter, \*(Pd, gives the selection data.
-Normally this is a string encoded in base64.
-The data becomes the new selection,
-which is then available for pasting by other applications.
-.br
-If the second parameter is a \*?,
-\fIxterm\fP replies to the host with the selection
-data encoded using the same protocol.
-.Ed
-.
-.St
-.LP
-.B
-Privacy Message
-.IP \\*(PM\\*(Pt\\*s\\*(ST
-\fIxterm\fP implements no \*(PM functions; \*(Pt is ignored.
-\*(Pt need not be printable characters.
-.Ed
-.
-.SH
-PC-Style Function Keys
-.ds RH Function Keys
-.LP
-If \fIxterm\fP does minimal translation of the function keys, it usually does this
-with a PC-style keyboard, so PC-style function keys result.
-Sun keyboards are similar to PC keyboards.
-Both have cursor and scrolling operations printed on the keypad,
-which duplicate the smaller cursor and scrolling keypads.
-.LP
-X does not predefine NumLock (used for VT220 keyboards) or Alt (used as
-an extension for the Sun/PC keyboards) as modifiers.
-These keys are recognized as modifiers when enabled
-by the \fBnumLock\fP resource,
-or by the DECSET \*1\*0\*3\*5 control sequence.
-.LP
-The cursor keys transmit the following escape sequences depending on the
-mode specified via the \fBDECCKM\fP escape sequence.
-.TS
-center;
-cf3 cf3 cf3
-lf3w(2c) lf3w(2c) lf3w(2c) .
-Key Normal Application
-_
-Cursor Up \*(Cs\*A \*(S3\*A
-Cursor Down \*(Cs\*(cB \*(S3\*(cB
-Cursor Right \*(Cs\*C \*(S3\*C
-Cursor Left \*(Cs\*D \*(S3\*D
-_
-.TE
-The home- and end-keys
-(unlike PageUp and other keys also on the 6-key editing keypad)
-are considered "cursor keys" by \fIxterm\fP.
-Their mode is also controlled by the \fBDECCKM\fP escape sequence:
-.TS
-center;
-cf3 cf3 cf3
-lf3w(2c) lf3w(2c) lf3w(2c) .
-Key Normal Application
-_
-Home \*(Cs\*H \*(S3\*H
-End \*(Cs\*F \*(S3\*F
-_
-.TE
-.LP
-The application keypad transmits the following escape sequences depending on the
-mode specified via the \fBDECPNM\fP and \fBDECPAM\fP escape sequences.
-Use the NumLock key to override the application mode.
-.LP
-Not all keys are present on the Sun/PC keypad (e.g., PF1, Tab), but are supported by
-the program.
-.TS
-center;
-cf3 cf3 cf3 cf3 cf3
-lf3w(2c) lf3w(2c) lf3w(2c) lf3w(2c) lf3w(2c) .
-Key Numeric Application Terminfo Termcap
-_
-Space \*(Sp \*(S3\*(Sp - -
-Tab \*(Ta \*(S3\*I - -
-Enter \*(Cr \*(S3\*M kent @8
-PF1 \*(S3\*P \*(S3\*P kf1 k1
-PF2 \*(S3\*Q \*(S3\*Q kf2 k2
-PF3 \*(S3\*R \*(S3\*R kf3 k3
-PF4 \*(S3\*S \*(S3\*S kf4 k4
-* \f1(multiply)\fP \** \*(S3\*j - -
-+ \f1(add)\fP \*+ \*(S3\*k - -
-, \f1(comma)\fP \*, \*(S3\*l - -
-- \f1(minus)\fP \*- \*(S3\*m - -
-\&. \f1(Delete)\fP \*. \*(Cs\*3\*(c~ - -
-/ \f1(divide)\fP \*/ \*(S3\*o - -
-0 \f1(Insert)\fP \*0 \*(Cs\*2\*(c~ - -
-1 \f1(End)\fP \*1 \*(S3\*F kc1 K4
-2 \f1(DownArrow)\fP \*2 \*(Cs\*(cB - -
-3 \f1(PageDown)\fP \*3 \*(Cs\*6\*(c~ kc3 K5
-4 \f1(LeftArrow)\fP \*4 \*(Cs\*D - -
-5 \f1(Begin)\fP \*5 \*(Cs\*E kb2 K2
-6 \f1(RightArrow)\fP \*6 \*(Cs\*C - -
-7 \f1(Home)\fP \*7 \*(S3\*H ka1 K1
-8 \f1(UpArrow)\fP \*8 \*(Cs\*A - -
-9 \f1(PageUp)\fP \*9 \*(Cs\*5\*(c~ ka3 K3
-= (equal) \*= \*(S3\*(XX - -
-_
-.TE
-They also provide 12 function keys, as well as a few other special-purpose keys.
-.TS
-center;
-cf3 cf3
-lf3w(2c) lf3w(2c) .
-Key Escape Sequence
-_
-F1 \*(S3\*P
-F2 \*(S3\*Q
-F3 \*(S3\*R
-F4 \*(S3\*S
-F5 \*(Cs\*1\*5\*(c~
-F6 \*(Cs\*1\*7\*(c~
-F7 \*(Cs\*1\*8\*(c~
-F8 \*(Cs\*1\*9\*(c~
-F9 \*(Cs\*2\*0\*(c~
-F10 \*(Cs\*2\*1\*(c~
-F11 \*(Cs\*2\*3\*(c~
-F12 \*(Cs\*2\*4\*(c~
-_
-.TE
-.LP
-Older versions of \fIxterm\fP implement different escape sequences for F1 through F4.
-These can be activated by setting the \fBoldXtermFKeys\fP resource.
-However, since they do not correspond to any hardware terminal, they have been deprecated.
-(The DEC VT220 reserves F1 through F5 for local functions such as \fBSetup\fP).
-.TS
-center;
-cf3 cf3
-lf3w(2c) lf3w(2c) .
-Key Escape Sequence
-_
-F1 \*(Cs\*1\*1\*(c~
-F2 \*(Cs\*1\*2\*(c~
-F3 \*(Cs\*1\*3\*(c~
-F4 \*(Cs\*1\*4\*(c~
-_
-.TE
-In normal mode, i.e., a Sun/PC keyboard
-when the \fBsunKeyboard\fP resource is false,
-\fIxterm\fP recognizes function key modifiers
-which are parameters appended before the final character
-of the control sequence.
-.TS
-center;
-cf3 lf3
-cf3w(2c) lf3w(2c) .
-Code Modifiers
-_
-2 Shift
-3 Alt
-4 Shift + Alt
-5 Control
-6 Shift + Control
-7 Alt + Control
-8 Shift + Alt + Control
-_
-.TE
-For example, shift-F5 would be sent as
-\*(Cs\*1\*5\*;\*2\*(c~
-
-If the \fBalwaysUseMods\fP resource is set, the Meta modifier also is
-recognized, making parameters 9 through 16.
-.SH
-VT220-Style Function Keys
-.LP
-However, \fIxterm\fP is most useful as a DEC VT102 or VT220 emulator.
-Set the \fBsunKeyboard\fP resource to true to force a Sun/PC keyboard
-to act like a VT220 keyboard.
-.LP
-The VT102/VT220 application keypad transmits unique escape sequences in
-application mode, which are distinct from the cursor and scrolling keypad:
-.TS
-center;
-cf3 cf3 cf3
-lf3w(2c) lf3w(2c) lf3w(2c) .
-Key Numeric Application
-_
-Space \*(Sp \*(S3\*(Sp
-Tab \*(Ta \*(S3\*I
-Enter \*(Cr \*(S3\*M
-PF1 \*(S3\*P \*(S3\*P
-PF2 \*(S3\*Q \*(S3\*Q
-PF3 \*(S3\*R \*(S3\*R
-PF4 \*(S3\*S \*(S3\*S
-* \f1(multiply)\fP \** \*(S3\*j
-+ \f1(add)\fP \*+ \*(S3\*k
-, \f1(comma)\fP \*, \*(S3\*l
-- \f1(minus)\fP \*- \*(S3\*m
-\&. \f1(period)\fP \*. \*(S3\*n
-/ \f1(divide)\fP \*/ \*(S3\*o
-0 \*0 \*(S3\*p
-1 \*1 \*(S3\*q
-2 \*2 \*(S3\*r
-3 \*3 \*(S3\*(cs
-4 \*4 \*(S3\*t
-5 \*5 \*(S3\*u
-6 \*6 \*(S3\*v
-7 \*7 \*(S3\*w
-8 \*8 \*(S3\*x
-9 \*9 \*(S3\*y
-= (equal) \*= \*(S3\*(XX
-_
-.TE
-The VT220 provides a 6-key editing keypad,
-which is analogous to that on the PC keyboard.
-It is not affected by \fBDECCKM\fP or \fBDECPNM\fP/\fBDECPAM\fP:
-.TS
-center;
-cf3 cf3 cf3
-lf3w(2c) lf3w(2c) lf3w(2c) .
-Key Normal Application
-_
-\f1Insert\fP \*(Cs\*2\*(c~ \*(Cs\*2\*(c~
-\f1Delete\fP \*(Cs\*3\*(c~ \*(Cs\*3\*(c~
-\f1Home\fP \*(Cs\*1\*(c~ \*(Cs\*1\*(c~
-\f1End\fP \*(Cs\*4\*(c~ \*(Cs\*4\*(c~
-\f1PageUp\fP \*(Cs\*5\*(c~ \*(Cs\*5\*(c~
-\f1PageDown\fP \*(Cs\*6\*(c~ \*(Cs\*6\*(c~
-_
-.TE
-.LP
-The VT220 provides 8 additional function keys.
-With a Sun/PC keyboard, access these keys by Control/F1 for F13, etc.
-.TS
-center;
-cf3 cf3
-lf3w(2c) lf3w(2c) .
-Key Escape Sequence
-_
-F13 \*(Cs\*2\*5\*(c~
-F14 \*(Cs\*2\*6\*(c~
-F15 \*(Cs\*2\*8\*(c~
-F16 \*(Cs\*2\*9\*(c~
-F17 \*(Cs\*3\*1\*(c~
-F18 \*(Cs\*3\*2\*(c~
-F19 \*(Cs\*3\*3\*(c~
-F20 \*(Cs\*3\*4\*(c~
-_
-.TE
-.SH
-VT52-Style Function Keys
-.LP
-A VT52 does not have function keys, but it does have a numeric keypad and cursor keys.
-They differ from the other emulations by the prefix.
-Also, the cursor keys do not change:
-.TS
-center;
-cf3 cf3
-lf3w(2c) lf3w(2c) .
-Key Normal/Application
-_
-Cursor Up \*(Es\*A
-Cursor Down \*(Es\*(cB
-Cursor Right \*(Es\*C
-Cursor Left \*(Es\*D
-_
-.TE
-The keypad is similar:
-.TS
-center;
-cf3 cf3 cf3
-lf3w(2c) lf3w(2c) lf3w(2c) .
-Key Numeric Application
-_
-Space \*(Sp \*(Es\*?\*(Sp
-Tab \*(Ta \*(Es\*?\*I
-Enter \*(Cr \*(Es\*?\*M
-PF1 \*(Es\*P \*(Es\*P
-PF2 \*(Es\*Q \*(Es\*Q
-PF3 \*(Es\*R \*(Es\*R
-PF4 \*(Es\*S \*(Es\*S
-* \f1(multiply)\fP \** \*(Es\*?\*j
-+ \f1(add)\fP \*+ \*(Es\*?\*k
-, \f1(comma)\fP \*, \*(Es\*?\*l
-- \f1(minus)\fP \*- \*(Es\*?\*m
-\&. \f1(period)\fP \*. \*(Es\*?\*n
-/ \f1(divide)\fP \*/ \*(Es\*?\*o
-0 \*0 \*(Es\*?\*p
-1 \*1 \*(Es\*?\*q
-2 \*2 \*(Es\*?\*r
-3 \*3 \*(Es\*?\*(cs
-4 \*4 \*(Es\*?\*t
-5 \*5 \*(Es\*?\*u
-6 \*6 \*(Es\*?\*v
-7 \*7 \*(Es\*?\*w
-8 \*8 \*(Es\*?\*x
-9 \*9 \*(Es\*?\*y
-= (equal) \*= \*(Es\*?\*(XX
-_
-.TE
-.SH
-Sun-Style Function Keys
-.LP
-The \fIxterm\fP program provides support for Sun keyboards more directly, by
-a menu toggle that causes it to send Sun-style function key codes rather than VT220.
-Note, however, that the \fIsun\fP and \fIVT100\fP emulations are not really
-compatible. For example, their wrap-margin behavior differs.
-.LP
-Only function keys are altered; keypad and cursor keys are the same.
-The emulation responds identically.
-See the xterm-sun terminfo entry for details.
-.SH
-HP-Style Function Keys
-.LP
-Similarly, \fIxterm\fP can be compiled to support HP keyboards.
-See the xterm-hp terminfo entry for details.
-.SH
-The Alternate Screen Buffer
-.LP
-\fBXterm\fP maintains two screen buffers.
-The normal screen buffer allows you to scroll back to view saved lines
-of output up to the maximum set by the \fBsaveLines\fP resource.
-The alternate screen buffer is exactly as large as the display,
-contains no additional saved lines.
-When the alternate screen buffer is active,
-you cannot scroll back to view saved lines.
-\fBXterm\fP provides control sequences and menu entries
-for switching between the two.
-.LP
-Most full-screen applications use terminfo or termcap to obtain
-strings used to start/stop full-screen mode,
-i.e., \fIsmcup\fP and \fIrmcup\fP for terminfo,
-or the corresponding \fIti\fP and \fIte\fP for termcap.
-The \fBtiteInhibit\fP resource removes the \fIti\fP and \fIte\fP strings
-from the TERMCAP string which is set in the environment for some platforms.
-That is not done when \fBxterm\fP is built with terminfo libraries because
-terminfo does not provide the whole text of the termcap data in one piece.
-It would not work for terminfo anyway, since terminfo data is not passed
-in environment variables;
-setting an environment variable in this manner would have no effect on
-the application's ability to switch between normal and alternate screen
-buffers.
-Instead, the newer private mode controls
-(such as \*1\*0\*4\*9)
-for switching between normal
-and alternate screen buffers simply disable the switching.
-They add other features such as clearing the display for the same reason:
-to make the details of switching independent of the application that
-requests the switch.
-.SH
-Bracketed Paste Mode
-.ds RH Bracketed Paste Mode
-.LP
-When bracketed paste mode is set,
-pasted text is bracketed with control sequences
-so that the program can differentiate pasted text from typed-in text.
-When bracketed paste mode is set,
-the program will receive: ESC [ 200 ~,
-followed by the pasted text, followed by ESC [ 201 ~.
-.SH
-Mouse Tracking
-.ds RH Mouse Tracking
-.LP
-The VT widget can be set to send the mouse position and other
-information on button presses. These modes are typically used by
-editors and other full-screen applications that want to make use of
-the mouse.
-
-There are six mutually exclusive modes.
-One is DEC Locator mode, enabled by the
-DECELR \*(Cs\*(Ps\*s\*;\*(Ps\*s\*s\*'\*s\*z
-control sequence, and is not described here
-(control sequences are summarized above).
-The remaining five
-modes are each enabled (or disabled) by a different parameter in
-DECSET \*(Cs\*?\*(Pm\*s\*h
-or
-DECRST \*(Cs\*?\*(Pm\*s\*l
-control sequence.
-
-Manifest constants for the parameter values
-are defined in \fBxcharmouse.h\fP as follows:
-.
-.DS B
-#define SET_X10_MOUSE 9
-#define SET_VT200_MOUSE 1000
-#define SET_VT200_HIGHLIGHT_MOUSE 1001
-#define SET_BTN_EVENT_MOUSE 1002
-#define SET_ANY_EVENT_MOUSE 1003
-.DE
-.LP
-The motion reporting modes are strictly \fIxterm\fP extensions, and are not
-part of any standard, though they are analogous to the DEC VT200 DECELR
-locator reports.
-
-Parameters (such as pointer position and button number) for all mouse
-tracking escape sequences generated by \fIxterm\fP
-encode numeric parameters in a single character as
-\fIvalue\fP+32.
-For example, \*! specifies the value 1.
-The upper left character position on the terminal is denoted as 1,1.
-
-X10 compatibility mode sends an escape sequence only on button press,
-encoding the location and the mouse button pressed.
-It is enabled by specifying parameter 9 to DECSET.
-On button press, \fIxterm\fP sends
-\*(Cs\*M\*(Cb\*(Cx\*(Cy (6 characters).
-\*(Cb is button\-1.
-\*(Cx and \*(Cy are the x and y coordinates of the mouse when the
-button was pressed.
-
-Normal tracking mode sends an escape sequence on both button press and
-release. Modifier key (shift, ctrl, meta) information is also sent.
-It is enabled by specifying parameter 1000 to DECSET.
-On button press or release, \fIxterm\fP sends
-\*(Cs\*M\*(Cb\*(Cx\*(Cy.
-The low two bits of \*(Cb encode button information:
-0=MB1 pressed, 1=MB2 pressed, 2=MB3 pressed, 3=release.
-The next three bits encode the modifiers which were down when the button was
-pressed and are added together: 4=Shift, 8=Meta, 16=Control.
-Note however that the shift and control bits are normally unavailable
-because \fIxterm\fP uses the control modifier with mouse for popup menus,
-and the shift modifier is used in the default translations for button events.
-The \fIMeta\fP modifier recognized by \fIxterm\fP is the \fImod1\fP mask,
-and is not necessarily the "Meta" key (see \fIxmodmap\fP).
-\*(Cx and \*(Cy are the x and y coordinates of the mouse event, encoded as
-in X10 mode.
-
-Wheel mice may return buttons 4 and 5.
-Those buttons are represented by the same event codes
-as buttons 1 and 2 respectively,
-except that 64 is added to the event code.
-Release events for the wheel buttons are not reported.
-
-Mouse highlight tracking notifies a program of a button press, receives a
-range of lines from the program, highlights the region covered by
-the mouse within that range until button release, and then sends the
-program the release coordinates.
-It is enabled by specifying parameter 1001 to DECSET.
-Highlighting is performed only for button 1, though other button events
-can be received.
-\fBWarning:\fP use of this mode requires a cooperating program or it will
-hang \fIxterm.\fP
-On button press, the same information as for normal tracking is
-generated; \fIxterm\fP then waits for the program to send mouse
-tracking information.
-\fIAll X events are ignored until the proper escape sequence is
-received from the pty:\fP
-\*(Cs\*(Ps\*s\*;\*(Ps\*s\*;\*(Ps\*s\*;\*(Ps\*s\*;\*(Ps\*s\*T.
-The parameters are \fIfunc, startx, starty, firstrow,\fP and \fIlastrow.\fP
-\fIfunc\fP is non-zero to initiate highlight tracking and zero to abort.
-\fIstartx\fP and \fIstarty\fP give the starting x and y location for
-the highlighted region. The ending location tracks the mouse, but
-will never be above row \fIfirstrow\fP and will always be above row
-\fIlastrow.\fP (The top of the screen is row 1.)
-When the button is released, \fIxterm\fP reports the ending position
-one of two ways: if the start and end coordinates are valid text
-locations: \*(Cs\*t\*(Cx\*(Cy. If either coordinate is past
-the end of the line:
-\*(Cs\*T\*(Cx\*(Cy\*(Cx\*(Cy\*(Cx\*(Cy.
-The parameters are \fIstartx, starty, endx, endy, mousex,\fP and \fImousey.\fP
-\fIstartx, starty, endx, \fPand\fI endy\fP give the starting and
-ending character positions of the region. \fImousex\fP and \fImousey\fP
-give the location of the mouse at button up, which may not be over a
-character.
-
-Button-event tracking is essentially the same as normal tracking, but
-\fIxterm\fP also reports button-motion events. Motion events
-are reported only if the mouse pointer has moved to a different character
-cell. It is enabled by specifying parameter 1002 to DECSET.
-On button press or release, \fIxterm\fP sends the same codes used by normal
-tracking mode. On button-motion events, \fIxterm\fP adds 32 to the event code
-(the third character, \*(Cb).
-The other bits of the event code specify button and modifier keys as in normal mode.
-For example, motion into cell x,y with button 1
-down is reported as \*(Cs\*M\*@\*(Cx\*(Cy.
-( \*@ = 32 + 0 (button 1) + 32 (motion indicator) ).
-Similarly, motion with button 3
-down is reported as \*(Cs\*M\*(cB\*(Cx\*(Cy.
-( \*(cB = 32 + 2 (button 3) + 32 (motion indicator) ).
-
-Any-event mode is the same as button-event mode, except that all motion
-events are reported, even if no mouse button is down.
-It is enabled by specifying 1003 to DECSET.
-.
-.br
-.ds RH Tektronix 4014 Mode
-.SH
-Tektronix 4014 Mode
-.LP
-Most of these sequences are standard Tektronix 4014 control sequences.
-Graph mode supports the 12-bit addressing of the Tektronix 4014.
-The major features missing are
-the write-through and defocused modes.
-This document does not describe the commands used in the various
-Tektronix plotting modes but does describe the commands to switch modes.
-.St
-.IP \\*(Be
-Bell (Ctrl-G)
-.IP \\*(Bs
-Backspace (Ctrl-H)
-.IP \\*(Ta
-Horizontal Tab (Ctrl-I)
-.IP \\*(Lf
-Line Feed or New Line (Ctrl-J)
-.IP \\*(Vt
-Cursor up (Ctrl-K)
-.IP \\*(Ff
-Form Feed or New Page (Ctrl-L)
-.IP \\*(Cr
-Carriage Return (Ctrl-M)
-.IP \\*(Es\\*(Et
-Switch to VT100 Mode (ESC Ctrl-C)
-.IP \\*(Es\\*(En
-Return Terminal Status (ESC Ctrl-E)
-.IP \\*(Es\\*(Ff
-PAGE (Clear Screen) (ESC Ctrl-L)
-.IP \\*(Es\\*(So
-Begin 4015 APL mode (ignored by \fIxterm\fP) (ESC Ctrl-N)
-.IP \\*(Es\\*(Si
-End 4015 APL mode (ignored by \fIxterm\fP) (ESC Ctrl-O)
-.IP \\*(Es\\*(Eb
-COPY (Save Tektronix Codes to file COPYyyyy-mm-dd.hh:mm:ss) (ESC Ctrl-W)
-.IP \\*(Es\\*(Ca
-Bypass Condition (ESC Ctrl-X)
-.IP \\*(Es\\*(Su
-GIN mode (ESC Ctrl-Z)
-.IP \\*(Es\\*(Fs
-Special Point Plot Mode (ESC Ctrl-\e)
-.IP \\*(Es\\*8
-Select Large Character Set
-.IP \\*(Es\\*9
-Select #2 Character Set
-.IP \\*(Es\\*:
-Select #3 Character Set
-.IP \\*(Es\\*;
-Select Small Character Set
-.IP \\*(Os\\*(Ps\\*s\\*;\\*(Pt\\*s\\*(Be
-Set Text Parameters of VT window
- \*(Ps = \*0 \(-> Change Icon Name and Window Title to \*(Pt
- \*(Ps = \*1 \(-> Change Icon Name to \*(Pt
- \*(Ps = \*2 \(-> Change Window Title to \*(Pt
- \*(Ps = \*4\*6 \(-> Change Log File to \*(Pt (normally disabled by a
-compile-time option)
-.IP \\*(Es\\*`
-Normal Z Axis and Normal (solid) Vectors
-.IP \\*(Es\\*a
-Normal Z Axis and Dotted Line Vectors
-.IP \\*(Es\\*b
-Normal Z Axis and Dot-Dashed Vectors
-.IP \\*(Es\\*c
-Normal Z Axis and Short-Dashed Vectors
-.IP \\*(Es\\*d
-Normal Z Axis and Long-Dashed Vectors
-.IP \\*(Es\\*h
-Defocused Z Axis and Normal (solid) Vectors
-.IP \\*(Es\\*i
-Defocused Z Axis and Dotted Line Vectors
-.IP \\*(Es\\*j
-Defocused Z Axis and Dot-Dashed Vectors
-.IP \\*(Es\\*k
-Defocused Z Axis and Short-Dashed Vectors
-.IP \\*(Es\\*l
-Defocused Z Axis and Long-Dashed Vectors
-.IP \\*(Es\\*p
-Write-Thru Mode and Normal (solid) Vectors
-.IP \\*(Es\\*q
-Write-Thru Mode and Dotted Line Vectors
-.IP \\*(Es\\*r
-Write-Thru Mode and Dot-Dashed Vectors
-.IP \\*(Es\\*(cs
-Write-Thru Mode and Short-Dashed Vectors
-.IP \\*(Es\\*t
-Write-Thru Mode and Long-Dashed Vectors
-.IP \\*(Fs
-Point Plot Mode (Ctrl-\e)
-.IP \\*(Gs
-Graph Mode (Ctrl-])
-.IP \\*(Rs
-Incremental Plot Mode (Ctrl-^)
-.IP \\*(Us
-Alpha Mode (Ctrl-_)
-.Ed
-.
-.
-.br
-.ds RH VT52 Mode
-.SH
-VT52 Mode
-.LP
-Parameters for cursor movement are at the end of the \*(Es\*Y escape sequence.
-Each ordinate is encoded in a single character as \fIvalue\fP+32.
-For example, \*! is 1.
-The screen coordinate system is 0-based.
-.St
-.IP \\*(Es\\*A
-Cursor up.
-.IP \\*(Es\\*(cB
-Cursor down.
-.IP \\*(Es\\*C
-Cursor right.
-.IP \\*(Es\\*D
-Cursor left.
-.IP \\*(Es\\*F
-Enter graphics mode.
-.IP \\*(Es\\*G
-Exit graphics mode.
-.IP \\*(Es\\*H
-Move the cursor to the home position.
-.IP \\*(Es\\*I
-Reverse line feed.
-.IP \\*(Es\\*J
-Erase from the cursor to the end of the screen.
-.IP \\*(Es\\*K
-Erase from the cursor to the end of the line.
-.IP \\*(Es\\*Y\\*(Ps\\*s\\*(Ps
-Move the cursor to given row and column.
-.IP \\*(Es\\*Z
-Identify
- \(-> \*(Es\*s\*/\*s\*Z (``I am a VT52.'')
-.IP \\*(Es\\*=
-Enter alternate keypad mode.
-.IP \\*(Es\\*>
-Exit alternate keypad mode.
-.IP \\*(Es\\*<
-Exit VT52 mode (Enter VT100 mode).
-.Ed
-.
-.if n .pl \n(nlu+1v
diff --git a/nx-X11/programs/xterm/cursor.c b/nx-X11/programs/xterm/cursor.c
deleted file mode 100644
index d77645acd..000000000
--- a/nx-X11/programs/xterm/cursor.c
+++ /dev/null
@@ -1,345 +0,0 @@
-/* $XTermId: cursor.c,v 1.36 2005/08/05 01:25:39 tom Exp $ */
-
-/*
- * $Xorg: cursor.c,v 1.3 2000/08/17 19:55:08 cpqbld Exp $
- */
-
-/* $XFree86: xc/programs/xterm/cursor.c,v 3.18 2005/08/05 01:25:39 dickey Exp $ */
-
-/*
- * Copyright 2002-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/* cursor.c */
-
-#include <xterm.h>
-#include <data.h>
-
-#include <assert.h>
-
-/*
- * Moves the cursor to the specified position, checking for bounds.
- * (this includes scrolling regions)
- * The origin is considered to be 0, 0 for this procedure.
- */
-void
-CursorSet(TScreen * screen, int row, int col, unsigned flags)
-{
- int use_row = row;
- int max_row;
-
- col = (col < 0 ? 0 : col);
- set_cur_col(screen, (col <= screen->max_col ? col : screen->max_col));
- max_row = screen->max_row;
- if (flags & ORIGIN) {
- use_row += screen->top_marg;
- max_row = screen->bot_marg;
- }
- use_row = (use_row < 0 ? 0 : use_row);
- set_cur_row(screen, (use_row <= max_row ? use_row : max_row));
- screen->do_wrap = 0;
-
- TRACE(("CursorSet(%d,%d) margins [%d..%d] -> %d,%d %s\n",
- row, col,
- screen->top_marg,
- screen->bot_marg,
- screen->cur_row,
- screen->cur_col,
- (flags & ORIGIN ? "origin" : "normal")));
-}
-
-/*
- * moves the cursor left n, no wrap around
- */
-void
-CursorBack(TScreen * screen, int n)
-{
- int i, j, k, rev;
-
- if ((rev = (term->flags & (REVERSEWRAP | WRAPAROUND)) ==
- (REVERSEWRAP | WRAPAROUND)) != 0
- && screen->do_wrap)
- n--;
- if ((screen->cur_col -= n) < 0) {
- if (rev) {
- if ((i = ((j = MaxCols(screen))
- * screen->cur_row) + screen->cur_col) < 0) {
- k = j * MaxRows(screen);
- i += ((-i) / k + 1) * k;
- }
- set_cur_row(screen, i / j);
- set_cur_col(screen, i % j);
- } else
- set_cur_col(screen, 0);
- }
- screen->do_wrap = 0;
-}
-
-/*
- * moves the cursor forward n, no wraparound
- */
-void
-CursorForward(TScreen * screen, int n)
-{
- int next = screen->cur_col + n;
- int max = CurMaxCol(screen, screen->cur_row);
-
- if (next > max)
- next = max;
-
- set_cur_col(screen, next);
- screen->do_wrap = 0;
-}
-
-/*
- * moves the cursor down n, no scrolling.
- * Won't pass bottom margin or bottom of screen.
- */
-void
-CursorDown(TScreen * screen, int n)
-{
- int max;
- int next = screen->cur_row + n;
-
- max = (screen->cur_row > screen->bot_marg ?
- screen->max_row : screen->bot_marg);
- if (next > max)
- next = max;
- if (next > screen->max_row)
- next = screen->max_row;
-
- set_cur_row(screen, next);
- screen->do_wrap = 0;
-}
-
-/*
- * moves the cursor up n, no linestarving.
- * Won't pass top margin or top of screen.
- */
-void
-CursorUp(TScreen * screen, int n)
-{
- int min;
- int next = screen->cur_row - n;
-
- min = ((screen->cur_row < screen->top_marg)
- ? 0
- : screen->top_marg);
- if (next < min)
- next = min;
- if (next < 0)
- next = 0;
-
- set_cur_row(screen, next);
- screen->do_wrap = 0;
-}
-
-/*
- * Moves cursor down amount lines, scrolls if necessary.
- * Won't leave scrolling region. No carriage return.
- */
-void
-xtermIndex(TScreen * screen, int amount)
-{
- int j;
-
- /*
- * indexing when below scrolling region is cursor down.
- * if cursor high enough, no scrolling necessary.
- */
- if (screen->cur_row > screen->bot_marg
- || screen->cur_row + amount <= screen->bot_marg) {
- CursorDown(screen, amount);
- return;
- }
-
- CursorDown(screen, j = screen->bot_marg - screen->cur_row);
- xtermScroll(screen, amount - j);
-}
-
-/*
- * Moves cursor up amount lines, reverse scrolls if necessary.
- * Won't leave scrolling region. No carriage return.
- */
-void
-RevIndex(TScreen * screen, int amount)
-{
- /*
- * reverse indexing when above scrolling region is cursor up.
- * if cursor low enough, no reverse indexing needed
- */
- if (screen->cur_row < screen->top_marg
- || screen->cur_row - amount >= screen->top_marg) {
- CursorUp(screen, amount);
- return;
- }
-
- RevScroll(screen, amount - (screen->cur_row - screen->top_marg));
- CursorUp(screen, screen->cur_row - screen->top_marg);
-}
-
-/*
- * Moves Cursor To First Column In Line
- * (Note: xterm doesn't implement SLH, SLL which would affect use of this)
- */
-void
-CarriageReturn(TScreen * screen)
-{
- set_cur_col(screen, 0);
- screen->do_wrap = 0;
-}
-
-/*
- * Save Cursor and Attributes
- */
-void
-CursorSave(XtermWidget tw)
-{
- TScreen *screen = &tw->screen;
- SavedCursor *sc = &screen->sc[screen->alternate != False];
-
- sc->saved = True;
- sc->row = screen->cur_row;
- sc->col = screen->cur_col;
- sc->flags = tw->flags;
- sc->curgl = screen->curgl;
- sc->curgr = screen->curgr;
-#if OPT_ISO_COLORS
- sc->cur_foreground = tw->cur_foreground;
- sc->cur_background = tw->cur_background;
- sc->sgr_foreground = tw->sgr_foreground;
-#endif
- memmove(sc->gsets, screen->gsets, sizeof(screen->gsets));
-}
-
-/*
- * We save/restore all visible attributes, plus wrapping, origin mode, and the
- * selective erase attribute.
- */
-#define DECSC_FLAGS (ATTRIBUTES|ORIGIN|WRAPAROUND|PROTECTED)
-
-/*
- * Restore Cursor and Attributes
- */
-void
-CursorRestore(XtermWidget tw)
-{
- TScreen *screen = &tw->screen;
- SavedCursor *sc = &screen->sc[screen->alternate != False];
-
- /* Restore the character sets, unless we never did a save-cursor op.
- * In that case, we'll reset the character sets.
- */
- if (sc->saved) {
- memmove(screen->gsets, sc->gsets, sizeof(screen->gsets));
- screen->curgl = sc->curgl;
- screen->curgr = sc->curgr;
- } else {
- resetCharsets(screen);
- }
-
- tw->flags &= ~DECSC_FLAGS;
- tw->flags |= sc->flags & DECSC_FLAGS;
- CursorSet(screen,
- ((tw->flags & ORIGIN)
- ? sc->row - screen->top_marg
- : sc->row),
- sc->col, tw->flags);
-
-#if OPT_ISO_COLORS
- tw->sgr_foreground = sc->sgr_foreground;
- SGR_Foreground(tw->flags & FG_COLOR ? sc->cur_foreground : -1);
- SGR_Background(tw->flags & BG_COLOR ? sc->cur_background : -1);
-#endif
-}
-
-/*
- * Move the cursor to the first column of the n-th next line.
- */
-void
-CursorNextLine(TScreen * screen, int count)
-{
- CursorDown(screen, count < 1 ? 1 : count);
- CarriageReturn(screen);
- do_xevents();
-}
-
-/*
- * Move the cursor to the first column of the n-th previous line.
- */
-void
-CursorPrevLine(TScreen * screen, int count)
-{
- CursorUp(screen, count < 1 ? 1 : count);
- CarriageReturn(screen);
- do_xevents();
-}
-
-#if OPT_TRACE
-int
-set_cur_row(TScreen * screen, int value)
-{
- assert(screen != 0);
- assert(value >= 0);
- assert(value <= screen->max_row);
- screen->cur_row = value;
- return value;
-}
-
-int
-set_cur_col(TScreen * screen, int value)
-{
- assert(screen != 0);
- assert(value >= 0);
- assert(value <= screen->max_col);
- screen->cur_col = value;
- return value;
-}
-#endif /* OPT_TRACE */
diff --git a/nx-X11/programs/xterm/data.c b/nx-X11/programs/xterm/data.c
deleted file mode 100644
index 6fbf85cd5..000000000
--- a/nx-X11/programs/xterm/data.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* $XTermId: data.c,v 1.77 2005/09/18 23:48:12 tom Exp $ */
-
-/*
- * $Xorg: data.c,v 1.3 2000/08/17 19:55:08 cpqbld Exp $
- */
-
-/* $XFree86: xc/programs/xterm/data.c,v 3.32 2005/09/18 23:48:12 dickey Exp $ */
-
-/*
- * Copyright 2002-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#include <data.h>
-
-Widget toplevel; /* top-most widget in xterm */
-
-#if OPT_TEK4014
-Char *Tpushb;
-Char *Tpushback;
-TekLink *TekRefresh;
-TekWidget tekWidget;
-Widget tekshellwidget;
-int T_lastx = -1;
-int T_lasty = -1;
-int Ttoggled = 0;
-jmp_buf Tekend;
-#endif
-
-char *ProgramName;
-
-Arg ourTopLevelShellArgs[] =
-{
- {XtNallowShellResize, (XtArgVal) TRUE},
- {XtNinput, (XtArgVal) TRUE},
-};
-Cardinal number_ourTopLevelShellArgs = 2;
-
-Bool waiting_for_initial_map;
-
-Atom wm_delete_window; /* for ICCCM delete window */
-
-XTERM_RESOURCE resource;
-
-PtyData *VTbuffer;
-
-jmp_buf VTend;
-
-#ifdef DEBUG
-int debug = 0; /* true causes error messages to be displayed */
-#endif /* DEBUG */
-
-XtAppContext app_con;
-XtermWidget term; /* master data structure for client */
-char *xterm_name; /* argv[0] */
-
-int hold_screen;
-SIG_ATOMIC_T need_cleanup = FALSE;
-
-#if OPT_ZICONBEEP
-int zIconBeep; /* non-zero means beep; see charproc.c for details -IAN! */
-Boolean zIconBeep_flagged; /* True if the icon name has been changed */
-#endif /* OPT_ZICONBEEP */
-
-#if OPT_SAME_NAME
-Boolean sameName; /* Don't change the title or icon name if it
- is the same. This prevents flicker on the
- screen at the cost of an extra request to
- the server */
-#endif
-
-int am_slave = -1; /* set to file-descriptor if we're a slave process */
-int max_plus1;
-PtySelect Select_mask;
-PtySelect X_mask;
-PtySelect pty_mask;
-char *ptydev;
-char *ttydev;
-
-Boolean waitingForTrackInfo = False;
-EventMode eventMode = NORMAL;
diff --git a/nx-X11/programs/xterm/data.h b/nx-X11/programs/xterm/data.h
deleted file mode 100644
index 04e36786e..000000000
--- a/nx-X11/programs/xterm/data.h
+++ /dev/null
@@ -1,207 +0,0 @@
-/* $XTermId: data.h,v 1.92 2005/09/18 23:48:12 tom Exp $ */
-
-/*
- * $Xorg: data.h,v 1.3 2000/08/17 19:55:08 cpqbld Exp $
- */
-
-/* $XFree86: xc/programs/xterm/data.h,v 3.37 2005/09/18 23:48:12 dickey Exp $ */
-
-/*
- * Copyright 2002-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#ifndef included_data_h
-#define included_data_h 1
-
-#include <xterm.h>
-
-extern Widget toplevel;
-
-extern XtAppContext app_con;
-
-#ifdef VMS
-/* actually in vms.c */
-extern int tt_width;
-extern int tt_length;
-extern int tt_changed;
-extern int tt_pasting;
-extern int tt_new_output;
-#define VMS_TERM_BUFFER_SIZE 500
-struct q_head {
- int flink;
- int blink;
-};
-extern struct q_head read_queue;
-#endif
-
-#if OPT_TEK4014
-extern Char *Tpushb;
-extern Char *Tpushback;
-extern TekLink *TekRefresh;
-extern TekWidget tekWidget;
-extern Widget tekshellwidget;
-extern int T_lastx;
-extern int T_lasty;
-extern int Ttoggled;
-extern jmp_buf Tekend;
-#endif
-
-extern char *ptydev;
-extern char *ttydev;
-extern char *xterm_name;
-extern int hold_screen;
-
-#if OPT_ZICONBEEP
-extern int zIconBeep;
-extern Boolean zIconBeep_flagged;
-#endif
-
-#if OPT_SAME_NAME
-extern Boolean sameName;
-#endif
-
-extern PtyData *VTbuffer;
-extern int am_slave;
-extern int max_plus1;
-extern jmp_buf VTend;
-
-#ifdef DEBUG
-extern int debug;
-#endif /* DEBUG */
-
-extern PtySelect Select_mask;
-extern PtySelect X_mask;
-extern PtySelect pty_mask;
-
-extern Boolean waitingForTrackInfo;
-
-extern EventMode eventMode;
-
-extern XtermWidget term;
-
-extern SIG_ATOMIC_T need_cleanup;
-
-#if defined(HAVE_XKB_BELL_EXT)
-#include <X11/XKBlib.h> /* has the prototype */
-#include <X11/extensions/XKBbells.h> /* has the XkbBI_xxx definitions */
-#endif
-
-#ifndef XkbBI_Info
-#define XkbBI_Info 0
-#define XkbBI_MinorError 1
-#define XkbBI_MajorError 2
-#define XkbBI_TerminalBell 9
-#define XkbBI_MarginBell 10
-#endif
-
-extern char *ProgramName;
-extern Arg ourTopLevelShellArgs[];
-extern Cardinal number_ourTopLevelShellArgs;
-extern Bool waiting_for_initial_map;
-extern Atom wm_delete_window;
-
-typedef struct XTERM_RESOURCE {
- char *xterm_name;
- char *icon_geometry;
- char *title;
- char *icon_name;
- char *term_name;
- char *tty_modes;
-
- int minBufSize;
- int maxBufSize;
-
- Boolean hold_screen; /* true if we keep window open */
- Boolean utmpInhibit;
- Boolean utmpDisplayId;
- Boolean messages;
-
- String keyboardType;
- Boolean sunFunctionKeys; /* %%% should be widget resource? */
-#if OPT_SUNPC_KBD
- Boolean sunKeyboard;
-#endif
-#if OPT_HP_FUNC_KEYS
- Boolean hpFunctionKeys;
-#endif
-#if OPT_SCO_FUNC_KEYS
- Boolean scoFunctionKeys;
-#endif
-
-#if OPT_INITIAL_ERASE
- Boolean ptyInitialErase; /* if true, use pty's sense of erase char */
- Boolean backarrow_is_erase; /* override backspace/delete */
-#endif
- Boolean wait_for_map;
- Boolean useInsertMode;
-#if OPT_ZICONBEEP
- int zIconBeep; /* beep level when output while iconified */
-#endif
-#if OPT_PTY_HANDSHAKE
- Boolean ptyHandshake; /* use pty-handshaking */
-#endif
-#if OPT_SAME_NAME
- Boolean sameName; /* Don't change the title or icon name if it is
- * the same. This prevents flicker on the
- * screen at the cost of an extra request to
- * the server.
- */
-#endif
-#if OPT_SESSION_MGT
- Boolean sessionMgt;
-#endif
-#if OPT_TOOLBAR
- Boolean toolBar;
-#endif
-} XTERM_RESOURCE;
-
-extern XTERM_RESOURCE resource;
-
-#endif /* included_data_h */
diff --git a/nx-X11/programs/xterm/doublechr.c b/nx-X11/programs/xterm/doublechr.c
deleted file mode 100644
index b768b2ed7..000000000
--- a/nx-X11/programs/xterm/doublechr.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/* $XTermId: doublechr.c,v 1.43 2005/08/05 01:25:39 tom Exp $ */
-
-/*
- * $XFree86: xc/programs/xterm/doublechr.c,v 3.17 2005/08/05 01:25:39 dickey Exp $
- */
-
-/************************************************************
-
-Copyright 1997-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-********************************************************/
-
-#include <xterm.h>
-#include <data.h>
-#include <fontutils.h>
-
-#include <assert.h>
-
-/*
- * The first column is all that matters for double-size characters (since the
- * controls apply to a whole line). However, it's easier to maintain the
- * information for special fonts by writing to all cells.
- */
-#define curChrSet SCRN_BUF_CSETS(screen, screen->cur_row)[0]
-
-#if OPT_DEC_CHRSET
-static void
-repaint_line(unsigned newChrSet)
-{
- register TScreen *screen = &term->screen;
- int curcol = screen->cur_col;
- int currow = screen->cur_row;
- unsigned len = MaxCols(screen);
- int width = len;
- unsigned oldChrSet = SCRN_BUF_CSETS(screen, currow)[0];
-
- assert(width > 0);
-
- /*
- * Ignore repetition.
- */
- if (oldChrSet == newChrSet)
- return;
-
- TRACE(("repaint_line(%2d,%2d) (%d)\n", currow, screen->cur_col, newChrSet));
- HideCursor();
-
- /* If switching from single-width, keep the cursor in the visible part
- * of the line.
- */
- if (CSET_DOUBLE(newChrSet)) {
- width /= 2;
- if (curcol > width)
- curcol = width;
- }
-
- /*
- * ScrnRefresh won't paint blanks for us if we're switching between a
- * single-size and double-size font. So we paint our own.
- */
- if (CSET_DOUBLE(oldChrSet) != CSET_DOUBLE(newChrSet)) {
- ClearCurBackground(screen,
- CursorY(screen, currow),
- CurCursorX(screen, currow, 0),
- (unsigned) FontHeight(screen),
- len * CurFontWidth(screen, currow));
- }
-
- /* FIXME: do VT220 softchars allow double-sizes? */
- memset(SCRN_BUF_CSETS(screen, currow), (Char) newChrSet, len);
-
- set_cur_col(screen, 0);
- ScrnUpdate(screen, currow, 0, 1, (int) len, True);
- set_cur_col(screen, curcol);
-}
-#endif
-
-/*
- * Set the line to double-height characters. The 'top' flag denotes whether
- * we'll be using it for the top (true) or bottom (false) of the line.
- */
-void
-xterm_DECDHL(Bool top)
-{
-#if OPT_DEC_CHRSET
- repaint_line((unsigned) (top ? CSET_DHL_TOP : CSET_DHL_BOT));
-#endif
-}
-
-/*
- * Set the line to single-width characters (the normal state).
- */
-void
-xterm_DECSWL(void)
-{
-#if OPT_DEC_CHRSET
- repaint_line(CSET_SWL);
-#endif
-}
-
-/*
- * Set the line to double-width characters
- */
-void
-xterm_DECDWL(void)
-{
-#if OPT_DEC_CHRSET
- repaint_line(CSET_DWL);
-#endif
-}
-
-#if OPT_DEC_CHRSET
-static void
-discard_font(TScreen * screen, XTermFonts * data)
-{
- TRACE(("discard_font chrset=%d %s\n", data->chrset,
- (data->fn != 0) ? data->fn : "<no-name>"));
-
- data->chrset = 0;
- data->flags = 0;
- if (data->gc != 0) {
- XFreeGC(screen->display, data->gc);
- data->gc = 0;
- }
- if (data->fn != 0) {
- free(data->fn);
- data->fn = 0;
- }
- if (data->fs != 0) {
- XFreeFont(screen->display, data->fs);
- data->fs = 0;
- }
-}
-
-int
-xterm_Double_index(unsigned chrset, unsigned flags)
-{
- int n;
- TScreen *screen = &term->screen;
- XTermFonts *data = screen->double_fonts;
-
- flags &= BOLD;
- TRACE(("xterm_Double_index chrset=%#x, flags=%#x\n", chrset, flags));
-
- for (n = 0; n < screen->fonts_used; n++) {
- if (data[n].chrset == chrset
- && data[n].flags == flags) {
- if (n != 0) {
- XTermFonts save;
- TRACE(("...xterm_Double_index -> %d (OLD:%d)\n", n, screen->fonts_used));
- save = data[n];
- while (n > 0) {
- data[n] = data[n - 1];
- n--;
- }
- data[n] = save;
- }
- return n;
- }
- }
-
- /* Not, found, push back existing fonts and create a new entry */
- if (screen->fonts_used >= screen->cache_doublesize) {
- TRACE(("...xterm_Double_index: discard oldest\n"));
- discard_font(screen, &(data[screen->fonts_used - 1]));
- } else {
- screen->fonts_used += 1;
- }
- for (n = screen->fonts_used; n > 0; n--)
- data[n] = data[n - 1];
-
- TRACE(("...xterm_Double_index -> (NEW:%d)\n", screen->fonts_used));
-
- data[0].chrset = chrset;
- data[0].flags = flags;
- data[0].fn = 0;
- data[0].fs = 0;
- data[0].gc = 0;
- return 0;
-}
-
-/*
- * Lookup/cache a GC for the double-size character display. We save up to
- * NUM_CHRSET values.
- */
-GC
-xterm_DoubleGC(unsigned chrset, unsigned flags, GC old_gc)
-{
- XGCValues gcv;
- register TScreen *screen = &term->screen;
- unsigned long mask = (GCForeground | GCBackground | GCFont);
- int n;
- char *name;
- XTermFonts *data;
-
- if ((name = xtermSpecialFont(screen, flags, chrset)) == 0)
- return 0;
-
- n = xterm_Double_index(chrset, flags);
- data = &(screen->double_fonts[n]);
- if (data->fn != 0) {
- if (!strcmp(data->fn, name)) {
- if (data->fs != 0) {
- XCopyGC(screen->display, old_gc, (unsigned long) (~GCFont), data->gc);
- return data->gc;
- }
- }
- discard_font(screen, data);
- data->chrset = chrset;
- data->flags = flags & BOLD;
- }
- data->fn = name;
-
- TRACE(("xterm_DoubleGC %s %d: %s\n", flags & BOLD ? "BOLD" : "NORM", n, name));
-
- if ((data->fs = XLoadQueryFont(screen->display, name)) == 0) {
- /* Retry with * in resolutions */
- char *nname = xtermSpecialFont(screen, flags | NORESOLUTION, chrset);
-
- if (!nname)
- return 0;
- if ((data->fs = XLoadQueryFont(screen->display, nname)) == 0) {
- XtFree(nname);
- return 0;
- }
- XtFree(name);
- data->fn = nname;
- }
-
- TRACE(("-> OK\n"));
-
- gcv.graphics_exposures = TRUE; /* default */
- gcv.font = data->fs->fid;
- gcv.foreground = T_COLOR(screen, TEXT_FG);
- gcv.background = T_COLOR(screen, TEXT_BG);
-
- data->gc = XCreateGC(screen->display, VWindow(screen), mask, &gcv);
- XCopyGC(screen->display, old_gc, (unsigned long) (~GCFont), data->gc);
- return data->gc;
-}
-#endif
diff --git a/nx-X11/programs/xterm/error.h b/nx-X11/programs/xterm/error.h
deleted file mode 100644
index 11e777f63..000000000
--- a/nx-X11/programs/xterm/error.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * $Xorg: error.h,v 1.3 2000/08/17 19:55:08 cpqbld Exp $
- */
-
-
-/* $XFree86: xc/programs/xterm/error.h,v 1.8 2002/12/27 21:05:22 dickey Exp $ */
-/*
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/* @(#)error.h X10/6.6 11/6/86 */
-
-/* main.c */
-#define ERROR_FIONBIO 11 /* main: ioctl() failed on FIONBIO */
-#define ERROR_F_GETFL 12 /* main: ioctl() failed on F_GETFL */
-#define ERROR_F_SETFL 13 /* main: ioctl() failed on F_SETFL */
-#define ERROR_OPDEVTTY 14 /* spawn: open() failed on /dev/tty */
-#define ERROR_TIOCGETP 15 /* spawn: ioctl() failed on TIOCGETP */
-#define ERROR_PTSNAME 17 /* spawn: ptsname() failed */
-#define ERROR_OPPTSNAME 18 /* spawn: open() failed on ptsname */
-#define ERROR_PTEM 19 /* spawn: ioctl() failed on I_PUSH/"ptem" */
-#define ERROR_CONSEM 20 /* spawn: ioctl() failed on I_PUSH/"consem" */
-#define ERROR_LDTERM 21 /* spawn: ioctl() failed on I_PUSH/"ldterm" */
-#define ERROR_TTCOMPAT 22 /* spawn: ioctl() failed on I_PUSH/"ttcompat" */
-#define ERROR_TIOCSETP 23 /* spawn: ioctl() failed on TIOCSETP */
-#define ERROR_TIOCSETC 24 /* spawn: ioctl() failed on TIOCSETC */
-#define ERROR_TIOCSETD 25 /* spawn: ioctl() failed on TIOCSETD */
-#define ERROR_TIOCSLTC 26 /* spawn: ioctl() failed on TIOCSLTC */
-#define ERROR_TIOCLSET 27 /* spawn: ioctl() failed on TIOCLSET */
-#define ERROR_INIGROUPS 28 /* spawn: initgroups() failed */
-#define ERROR_FORK 29 /* spawn: fork() failed */
-#define ERROR_EXEC 30 /* spawn: exec() failed */
-#define ERROR_PTYS 32 /* get_pty: not enough ptys */
-#define ERROR_PTY_EXEC 34 /* waiting for initial map */
-#define ERROR_SETUID 35 /* spawn: setuid() failed */
-#define ERROR_INIT 36 /* spawn: can't initialize window */
-#define ERROR_TIOCKSET 46 /* spawn: ioctl() failed on TIOCKSET */
-#define ERROR_TIOCKSETC 47 /* spawn: ioctl() failed on TIOCKSETC */
-#define ERROR_SPREALLOC 48 /* spawn: realloc of ttydev failed */
-#define ERROR_LUMALLOC 49 /* luit: command-line malloc failed */
-
-/* charproc.c */
-#define ERROR_SELECT 50 /* in_put: select() failed */
-#define ERROR_VINIT 54 /* VTInit: can't initialize window */
-#define ERROR_KMMALLOC1 57 /* HandleKeymapChange: malloc failed */
-
-/* Tekproc.c */
-#define ERROR_TSELECT 60 /* Tinput: select() failed */
-#define ERROR_TINIT 64 /* TekInit: can't initialize window */
-
-/* button.c */
-#define ERROR_BMALLOC2 71 /* SaltTextAway: malloc() failed */
-
-/* misc.c */
-#define ERROR_LOGEXEC 80 /* StartLog: exec() failed */
-#define ERROR_XERROR 83 /* xerror: XError event */
-#define ERROR_XIOERROR 84 /* xioerror: X I/O error */
-
-/* screen.c */
-#define ERROR_SCALLOC 90 /* Alloc: calloc() failed on base */
-#define ERROR_SCALLOC2 91 /* Alloc: calloc() failed on rows */
-#define ERROR_SREALLOC 92 /* ScreenResize: realloc() failed on alt base */
-#define ERROR_RESIZE 96 /* ScreenResize: malloc() or realloc() failed */
-#define ERROR_SAVE_PTR 102 /* ScrnPointers: malloc/realloc() failed */
-
-/* scrollbar.c */
-#define ERROR_SBRALLOC 110 /* ScrollBarOn: realloc() failed on base */
-#define ERROR_SBRALLOC2 111 /* ScrollBarOn: realloc() failed on rows */
-
-/* util.c */
-#define ERROR_MMALLOC 121 /* my_memmove: malloc/realloc failed */
diff --git a/nx-X11/programs/xterm/fontutils.c b/nx-X11/programs/xterm/fontutils.c
deleted file mode 100644
index fb4c6373c..000000000
--- a/nx-X11/programs/xterm/fontutils.c
+++ /dev/null
@@ -1,2371 +0,0 @@
-/* $XTermId: fontutils.c,v 1.184 2005/11/03 13:17:27 tom Exp $ */
-
-/*
- * $XFree86: xc/programs/xterm/fontutils.c,v 1.55 2005/11/03 13:17:27 dickey Exp $
- */
-
-/************************************************************
-
-Copyright 1998-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-********************************************************/
-
-/*
- * A portion of this module (for FontNameProperties) was adapted from EMU 1.3;
- * it constructs font names with specific properties changed, e.g., for bold
- * and double-size characters.
- */
-
-#define RES_OFFSET(field) XtOffsetOf(SubResourceRec, field)
-
-#include <fontutils.h>
-#include <X11/Xmu/Drawing.h>
-
-#include <main.h>
-#include <data.h>
-#include <menu.h>
-#include <xstrings.h>
-#include <xterm.h>
-
-#include <stdio.h>
-#include <ctype.h>
-
-/* from X11/Xlibint.h - not all vendors install this file */
-#define CI_NONEXISTCHAR(cs) (((cs)->width == 0) && \
- (((cs)->rbearing|(cs)->lbearing| \
- (cs)->ascent|(cs)->descent) == 0))
-
-#define CI_GET_CHAR_INFO_1D(fs,col,def,cs) \
-{ \
- cs = def; \
- if (col >= fs->min_char_or_byte2 && col <= fs->max_char_or_byte2) { \
- if (fs->per_char == NULL) { \
- cs = &fs->min_bounds; \
- } else { \
- cs = &fs->per_char[(col - fs->min_char_or_byte2)]; \
- if (CI_NONEXISTCHAR(cs)) cs = def; \
- } \
- } \
-}
-
-#define CI_GET_CHAR_INFO_2D(fs,row,col,def,cs) \
-{ \
- cs = def; \
- if (row >= fs->min_byte1 && row <= fs->max_byte1 && \
- col >= fs->min_char_or_byte2 && col <= fs->max_char_or_byte2) { \
- if (fs->per_char == NULL) { \
- cs = &fs->min_bounds; \
- } else { \
- cs = &fs->per_char[((row - fs->min_byte1) * \
- (fs->max_char_or_byte2 - \
- fs->min_char_or_byte2 + 1)) + \
- (col - fs->min_char_or_byte2)]; \
- if (CI_NONEXISTCHAR(cs)) cs = def; \
- } \
- } \
-}
-
-#define MAX_FONTNAME 200
-
-/*
- * A structure to hold the relevant properties from a font
- * we need to make a well formed font name for it.
- */
-typedef struct {
- /* registry, foundry, family */
- char *beginning;
- /* weight */
- char *weight;
- /* slant */
- char *slant;
- /* wideness */
- char *wideness;
- /* add style */
- char *add_style;
- int pixel_size;
- char *point_size;
- int res_x;
- int res_y;
- char *spacing;
- int average_width;
- /* charset registry, charset encoding */
- char *end;
-} FontNameProperties;
-
-#if OPT_SHIFT_FONTS
-static void lookupOneFontSize(TScreen *, int);
-#endif
-
-/*
- * Returns the fields from start to stop in a dash- separated string. This
- * function will modify the source, putting '\0's in the appropiate place and
- * moving the beginning forward to after the '\0'
- *
- * This will NOT work for the last field (but we won't need it).
- */
-static char *
-n_fields(char **source, int start, int stop)
-{
- int i;
- char *str, *str1;
-
- /*
- * find the start-1th dash
- */
- for (i = start - 1, str = *source; i; i--, str++)
- if ((str = strchr(str, '-')) == 0)
- return 0;
-
- /*
- * find the stopth dash
- */
- for (i = stop - start + 1, str1 = str; i; i--, str1++)
- if ((str1 = strchr(str1, '-')) == 0)
- return 0;
-
- /*
- * put a \0 at the end of the fields
- */
- *(str1 - 1) = '\0';
-
- /*
- * move source forward
- */
- *source = str1;
-
- return str;
-}
-
-/*
- * Gets the font properties from a given font structure. We use the FONT name
- * to find them out, since that seems easier.
- *
- * Returns a pointer to a static FontNameProperties structure
- * or NULL on error.
- */
-static FontNameProperties *
-get_font_name_props(Display * dpy, XFontStruct * fs, char *result)
-{
- static FontNameProperties props;
- static char *last_name;
-
- XFontProp *fp;
- int i;
- Atom fontatom = XInternAtom(dpy, "FONT", False);
- char *name;
- char *str;
-
- /*
- * first get the full font name
- */
- for (name = 0, i = 0, fp = fs->properties;
- i < fs->n_properties;
- i++, fp++)
- if (fp->name == fontatom)
- name = XGetAtomName(dpy, fp->card32);
-
- if (name == 0)
- return 0;
-
- /*
- * XGetAtomName allocates memory - don't leak
- */
- if (last_name != 0)
- XFree(last_name);
- last_name = name;
-
- if (result != 0) {
- if (strlen(name) < MAX_FONTNAME - 1) {
- strcpy(result, name);
- } else {
- TRACE(("fontname too large: %s\n", name));
- return 0;
- }
- }
-
- /*
- * Now split it up into parts and put them in
- * their places. Since we are using parts of
- * the original string, we must not free the Atom Name
- */
-
- /* registry, foundry, family */
- if ((props.beginning = n_fields(&name, 1, 3)) == 0)
- return 0;
-
- /* weight is the next */
- if ((props.weight = n_fields(&name, 1, 1)) == 0)
- return 0;
-
- /* slant */
- if ((props.slant = n_fields(&name, 1, 1)) == 0)
- return 0;
-
- /* width */
- if ((props.wideness = n_fields(&name, 1, 1)) == 0)
- return 0;
-
- /* add style */
- if ((props.add_style = n_fields(&name, 1, 1)) == 0)
- return 0;
-
- /* pixel size */
- if ((str = n_fields(&name, 1, 1)) == 0)
- return 0;
- if ((props.pixel_size = atoi(str)) == 0)
- return 0;
-
- /* point size */
- if ((props.point_size = n_fields(&name, 1, 1)) == 0)
- return 0;
-
- /* res_x */
- if ((str = n_fields(&name, 1, 1)) == 0)
- return 0;
- if ((props.res_x = atoi(str)) == 0)
- return 0;
-
- /* res_y */
- if ((str = n_fields(&name, 1, 1)) == 0)
- return 0;
- if ((props.res_y = atoi(str)) == 0)
- return 0;
-
- /* spacing */
- if ((props.spacing = n_fields(&name, 1, 1)) == 0)
- return 0;
-
- /* average width */
- if ((str = n_fields(&name, 1, 1)) == 0)
- return 0;
- if ((props.average_width = atoi(str)) == 0)
- return 0;
-
- /* the rest: charset registry and charset encoding */
- props.end = name;
-
- return &props;
-}
-
-#define ALLOCHUNK(n) ((n | 127) + 1)
-
-static void
-alloca_fontname(char **result, unsigned next)
-{
- unsigned last = (*result != 0) ? strlen(*result) : 0;
- unsigned have = (*result != 0) ? ALLOCHUNK(last) : 0;
- unsigned want = last + next + 2;
-
- if (want >= have) {
- want = ALLOCHUNK(want);
- if (last != 0) {
- *result = TypeRealloc(char, want, *result);
- } else {
- if ((*result = TypeMallocN(char, want)) != 0)
- **result = '\0';
- }
- }
-}
-
-static void
-append_fontname_str(char **result, char *value)
-{
- if (value == 0)
- value = "*";
- alloca_fontname(result, strlen(value));
- if (*result != 0) {
- if (**result != '\0')
- strcat(*result, "-");
- strcat(*result, value);
- }
-}
-
-static void
-append_fontname_num(char **result, int value)
-{
- if (value < 0) {
- append_fontname_str(result, "*");
- } else {
- char temp[100];
- sprintf(temp, "%d", value);
- append_fontname_str(result, temp);
- }
-}
-
-/*
- * Take the given font props and try to make a well formed font name specifying
- * the same base font and size and everything, but with different weight/width
- * according to the parameters. The return value is allocated, should be freed
- * by the caller.
- */
-static char *
-derive_font_name(FontNameProperties * props,
- char *use_weight,
- int use_average_width,
- char *use_encoding)
-{
- char *result = 0;
-
- append_fontname_str(&result, props->beginning);
- append_fontname_str(&result, use_weight);
- append_fontname_str(&result, props->slant);
- append_fontname_str(&result, 0);
- append_fontname_str(&result, 0);
- append_fontname_num(&result, props->pixel_size);
- append_fontname_str(&result, props->point_size);
- append_fontname_num(&result, props->res_x);
- append_fontname_num(&result, props->res_y);
- append_fontname_str(&result, props->spacing);
- append_fontname_num(&result, use_average_width);
- append_fontname_str(&result, use_encoding);
-
- return result;
-}
-
-static char *
-bold_font_name(FontNameProperties * props, int use_average_width)
-{
- return derive_font_name(props, "bold", use_average_width, props->end);
-}
-
-#if OPT_WIDE_CHARS
-#define derive_wide_font(props, weight) \
- derive_font_name(props, weight, props->average_width * 2, "ISO10646-1")
-
-static char *
-wide_font_name(FontNameProperties * props)
-{
- return derive_wide_font(props, "medium");
-}
-
-static char *
-widebold_font_name(FontNameProperties * props)
-{
- return derive_wide_font(props, "bold");
-}
-#endif /* OPT_WIDE_CHARS */
-
-#if OPT_DEC_CHRSET
-/*
- * Take the given font props and try to make a well formed font name specifying
- * the same base font but changed depending on the given attributes and chrset.
- *
- * For double width fonts, we just double the X-resolution, for double height
- * fonts we double the pixel-size and Y-resolution
- */
-char *
-xtermSpecialFont(TScreen * screen, unsigned atts, unsigned chrset)
-{
-#if OPT_TRACE
- static char old_spacing[80];
- static FontNameProperties old_props;
-#endif
- FontNameProperties *props;
- char *result = 0;
- char *weight;
- int pixel_size;
- int res_x;
- int res_y;
-
- props = get_font_name_props(screen->display, screen->fnt_norm, (char *) 0);
- if (props == 0)
- return result;
-
- pixel_size = props->pixel_size;
- res_x = props->res_x;
- res_y = props->res_y;
- if (atts & BOLD)
- weight = "bold";
- else
- weight = props->weight;
-
- if (CSET_DOUBLE(chrset))
- res_x *= 2;
-
- if (chrset == CSET_DHL_TOP
- || chrset == CSET_DHL_BOT) {
- res_y *= 2;
- pixel_size *= 2;
- }
-#if OPT_TRACE
- if (old_props.res_x != res_x
- || old_props.res_x != res_y
- || old_props.pixel_size != pixel_size
- || strcmp(old_props.spacing, props->spacing)) {
- TRACE(("xtermSpecialFont(atts = %#x, chrset = %#x)\n", atts, chrset));
- TRACE(("res_x = %d\n", res_x));
- TRACE(("res_y = %d\n", res_y));
- TRACE(("point_size = %s\n", props->point_size));
- TRACE(("pixel_size = %d\n", pixel_size));
- TRACE(("spacing = %s\n", props->spacing));
- old_props.res_x = res_x;
- old_props.res_x = res_y;
- old_props.pixel_size = pixel_size;
- old_props.spacing = strcpy(old_spacing, props->spacing);
- }
-#endif
-
- append_fontname_str(&result, props->beginning);
- append_fontname_str(&result, weight);
- append_fontname_str(&result, props->slant);
- append_fontname_str(&result, props->wideness);
- append_fontname_str(&result, props->add_style);
- append_fontname_num(&result, pixel_size);
- append_fontname_str(&result, props->point_size);
- append_fontname_num(&result, (atts & NORESOLUTION) ? -1 : res_x);
- append_fontname_num(&result, (atts & NORESOLUTION) ? -1 : res_y);
- append_fontname_str(&result, props->spacing);
- append_fontname_str(&result, 0);
- append_fontname_str(&result, props->end);
-
- return result;
-}
-#endif /* OPT_DEC_CHRSET */
-
-/*
- * Case-independent comparison for font-names, including wildcards.
- * XLFD allows '?' as a wildcard, but we do not handle that (no one seems
- * to use it).
- */
-static Bool
-same_font_name(char *pattern, char *match)
-{
- while (*pattern && *match) {
- if (*pattern == *match) {
- pattern++;
- match++;
- } else if (*pattern == '*' || *match == '*') {
- if (same_font_name(pattern + 1, match)) {
- return True;
- } else if (same_font_name(pattern, match + 1)) {
- return True;
- } else {
- return False;
- }
- } else {
- int p = char2lower(*pattern++);
- int m = char2lower(*match++);
- if (p != m)
- return False;
- }
- }
- return (*pattern == *match); /* both should be NUL */
-}
-
-/*
- * Double-check the fontname that we asked for versus what the font server
- * actually gave us. The larger fixed fonts do not always have a matching bold
- * font, and the font server may try to scale another font or otherwise
- * substitute a mismatched font.
- *
- * If we cannot get what we requested, we will fallback to the original
- * behavior, which simulates bold by overstriking each character at one pixel
- * offset.
- */
-static int
-got_bold_font(Display * dpy, XFontStruct * fs, char *requested)
-{
- char actual[MAX_FONTNAME];
- int got;
-
- if (get_font_name_props(dpy, fs, actual) == 0)
- got = 0;
- else
- got = same_font_name(requested, actual);
- return got;
-}
-
-/*
- * If the font server tries to adjust another font, it may not adjust it
- * properly. Check that the bounding boxes are compatible. Otherwise we'll
- * leave trash on the display when we mix normal and bold fonts.
- */
-static int
-same_font_size(XtermWidget xw, XFontStruct * nfs, XFontStruct * bfs)
-{
- TRACE(("same_font_size height %d/%d, min %d/%d max %d/%d\n",
- nfs->ascent + nfs->descent,
- bfs->ascent + bfs->descent,
- nfs->min_bounds.width, bfs->min_bounds.width,
- nfs->max_bounds.width, bfs->max_bounds.width));
- return xw->screen.free_bold_box
- || ((nfs->ascent + nfs->descent) == (bfs->ascent + bfs->descent)
- && (nfs->min_bounds.width == bfs->min_bounds.width
- || nfs->min_bounds.width == bfs->min_bounds.width + 1)
- && (nfs->max_bounds.width == bfs->max_bounds.width
- || nfs->max_bounds.width == bfs->max_bounds.width + 1));
-}
-
-/*
- * Check if the font looks like it has fixed width
- */
-static int
-is_fixed_font(XFontStruct * fs)
-{
- if (fs)
- return (fs->min_bounds.width == fs->max_bounds.width);
- return 1;
-}
-
-/*
- * Check if the font looks like a double width font (i.e. contains
- * characters of width X and 2X
- */
-#if OPT_WIDE_CHARS
-static int
-is_double_width_font(XFontStruct * fs)
-{
- return ((2 * fs->min_bounds.width) == fs->max_bounds.width);
-}
-#else
-#define is_double_width_font(fs) 0
-#endif
-
-#if OPT_WIDE_CHARS && OPT_RENDERFONT && defined(HAVE_TYPE_FCCHAR32)
-#define HALF_WIDTH_TEST_STRING "1234567890"
-
-/* '1234567890' in Chinese characters in UTF-8 */
-#define FULL_WIDTH_TEST_STRING "\xe4\xb8\x80\xe4\xba\x8c\xe4\xb8\x89" \
- "\xe5\x9b\x9b\xe4\xba\x94" \
- "\xef\xa7\x91\xe4\xb8\x83\xe5\x85\xab" \
- "\xe4\xb9\x9d\xef\xa6\xb2"
-
-/* '1234567890' in Korean script in UTF-8 */
-#define FULL_WIDTH_TEST_STRING2 "\xec\x9d\xbc\xec\x9d\xb4\xec\x82\xbc" \
- "\xec\x82\xac\xec\x98\xa4" \
- "\xec\x9c\xa1\xec\xb9\xa0\xed\x8c\x94" \
- "\xea\xb5\xac\xec\x98\x81"
-
-#define HALF_WIDTH_CHAR1 0x0031 /* 'l' */
-#define HALF_WIDTH_CHAR2 0x0057 /* 'W' */
-#define FULL_WIDTH_CHAR1 0x4E00 /* CJK Ideograph 'number one' */
-#define FULL_WIDTH_CHAR2 0xAC00 /* Korean script syllable 'Ka' */
-
-static int
-is_double_width_font_xft(Display * dpy, XftFont * font)
-{
- XGlyphInfo gi1, gi2;
- FcChar32 c1 = HALF_WIDTH_CHAR1, c2 = HALF_WIDTH_CHAR2;
- char *fwstr = FULL_WIDTH_TEST_STRING;
- char *hwstr = HALF_WIDTH_TEST_STRING;
-
- /* Some Korean fonts don't have Chinese characters at all. */
- if (!XftCharExists(dpy, font, FULL_WIDTH_CHAR1)) {
- if (!XftCharExists(dpy, font, FULL_WIDTH_CHAR2))
- return 0; /* Not a CJK font */
- else /* a Korean font without CJK Ideographs */
- fwstr = FULL_WIDTH_TEST_STRING2;
- }
-
- XftTextExtents32(dpy, font, &c1, 1, &gi1);
- XftTextExtents32(dpy, font, &c2, 1, &gi2);
- if (gi1.xOff != gi2.xOff) /* Not a fixed-width font */
- return 0;
-
- XftTextExtentsUtf8(dpy, font, (FcChar8 *) hwstr, (int) strlen(hwstr), &gi1);
- XftTextExtentsUtf8(dpy, font, (FcChar8 *) fwstr, (int) strlen(fwstr), &gi2);
-
- /*
- * fontconfig and Xft prior to 2.2(?) set the width of half-width
- * characters identical to that of full-width character in CJK double-width
- * (bi-width / monospace) font even though the former is half as wide as
- * the latter. This was fixed sometime before the release of fontconfig
- * 2.2 in early 2003. See
- * http://bugzilla.mozilla.org/show_bug.cgi?id=196312
- * In the meantime, we have to check both possibilities.
- */
- return ((2 * gi1.xOff == gi2.xOff) || (gi1.xOff == gi2.xOff));
-}
-#else
-#define is_double_width_font_xft(dpy, xftfont) 0
-#endif
-
-#define EmptyFont(fs) (fs != 0 \
- && ((fs)->ascent + (fs)->descent == 0 \
- || (fs)->max_bounds.width == 0))
-
-#define FontSize(fs) (((fs)->ascent + (fs)->descent) \
- * (fs)->max_bounds.width)
-
-const VTFontNames *
-xtermFontName(char *normal)
-{
- static VTFontNames data;
- memset(&data, 0, sizeof(data));
- data.f_n = normal;
- return &data;
-}
-
-static void
-cache_menu_font_name(TScreen * screen, int fontnum, int which, const char *name)
-{
- if (name != 0) {
- char *last = screen->menu_font_names[fontnum][which];
- if (last != 0) {
- if (strcmp(last, name)) {
- free(last);
- TRACE(("caching menu fontname %d.%d %s\n", fontnum, which, name));
- screen->menu_font_names[fontnum][which] = x_strdup(name);
- }
- } else {
- TRACE(("caching menu fontname %d.%d %s\n", fontnum, which, name));
- screen->menu_font_names[fontnum][which] = x_strdup(name);
- }
- }
-}
-
-int
-xtermLoadFont(XtermWidget xw,
- const VTFontNames * fonts,
- Bool doresize,
- int fontnum)
-{
- TScreen *screen = &(xw->screen);
-
- VTFontNames myfonts;
- /* FIXME: use XFreeFontInfo */
- FontNameProperties *fp;
- XFontStruct *nfs = NULL;
- XFontStruct *bfs = NULL;
-#if OPT_WIDE_CHARS
- XFontStruct *wfs = NULL;
- XFontStruct *wbfs = NULL;
-#endif
- XGCValues xgcv;
- unsigned long mask;
- GC new_normalGC = NULL;
- GC new_normalboldGC = NULL;
- GC new_reverseGC = NULL;
- GC new_reverseboldGC = NULL;
- Pixel new_normal;
- Pixel new_revers;
- char *tmpname = NULL;
- char normal[MAX_FONTNAME];
- Bool proportional = False;
-
- memset(&myfonts, 0, sizeof(myfonts));
- if (fonts != 0)
- myfonts = *fonts;
- if (myfonts.f_n == 0)
- return 0;
-
- if (fontnum == fontMenu_fontescape
- && myfonts.f_n != screen->MenuFontName(fontnum)) {
- if ((tmpname = x_strdup(myfonts.f_n)) == 0)
- return 0;
- }
-
- TRACE(("xtermLoadFont #%d normal %s\n", fontnum, NonNull(myfonts.f_n)));
- TRACE(("xtermLoadFont #%d bold %s\n", fontnum, NonNull(myfonts.f_b)));
-#if OPT_WIDE_CHARS
- TRACE(("xtermLoadFont #%d wide %s\n", fontnum, NonNull(myfonts.f_w)));
- TRACE(("xtermLoadFont #%d w/bold %s\n", fontnum, NonNull(myfonts.f_wb)));
-#endif
-
- if (!(nfs = XLoadQueryFont(screen->display, myfonts.f_n)))
- goto bad;
- if (EmptyFont(nfs))
- goto bad; /* can't use a 0-sized font */
-
- strcpy(normal, myfonts.f_n);
- if (myfonts.f_b == 0) {
- fp = get_font_name_props(screen->display, nfs, normal);
- if (fp != 0) {
- myfonts.f_b = bold_font_name(fp, fp->average_width);
- if ((bfs = XLoadQueryFont(screen->display, myfonts.f_b)) == 0) {
- myfonts.f_b = bold_font_name(fp, -1);
- bfs = XLoadQueryFont(screen->display, myfonts.f_b);
- }
- TRACE(("...derived bold %s\n", myfonts.f_b));
- }
- if (fp == 0 || bfs == 0) {
- bfs = nfs;
- TRACE(("...cannot load a matching bold font\n"));
- } else if (same_font_size(xw, nfs, bfs)
- && got_bold_font(screen->display, bfs, myfonts.f_b)) {
- TRACE(("...got a matching bold font\n"));
- cache_menu_font_name(screen, fontnum, fBold, myfonts.f_b);
- } else {
- XFreeFont(screen->display, bfs);
- bfs = nfs;
- TRACE(("...did not get a matching bold font\n"));
- }
- } else if ((bfs = XLoadQueryFont(screen->display, myfonts.f_b)) == 0) {
- bfs = nfs;
- TRACE(("...cannot load bold font %s\n", myfonts.f_b));
- } else {
- cache_menu_font_name(screen, fontnum, fBold, myfonts.f_b);
- }
-
- /*
- * If there is no widefont specified, fake it by doubling AVERAGE_WIDTH
- * of normal fonts XLFD, and asking for it. This plucks out 18x18ja
- * and 12x13ja as the corresponding fonts for 9x18 and 6x13.
- */
- if_OPT_WIDE_CHARS(screen, {
- char bold[MAX_FONTNAME];
-
- if (myfonts.f_w != 0) {
- cache_menu_font_name(screen, fontnum, fWide, myfonts.f_w);
- } else if (!is_double_width_font(nfs)) {
- fp = get_font_name_props(screen->display, nfs, normal);
- if (fp != 0) {
- myfonts.f_w = wide_font_name(fp);
- TRACE(("...derived wide %s\n", myfonts.f_w));
- cache_menu_font_name(screen, fontnum, fWide, myfonts.f_w);
- }
- }
-
- if (myfonts.f_w) {
- wfs = XLoadQueryFont(screen->display, myfonts.f_w);
- } else {
- wfs = nfs;
- }
-
- if (myfonts.f_wb != 0) {
- cache_menu_font_name(screen, fontnum, fWBold, myfonts.f_wb);
- } else if (!is_double_width_font(bfs)) {
- fp = get_font_name_props(screen->display, bfs, bold);
- if (fp != 0) {
- myfonts.f_wb = widebold_font_name(fp);
- TRACE(("...derived wide/bold %s\n", myfonts.f_wb));
- cache_menu_font_name(screen, fontnum, fWBold, myfonts.f_wb);
- }
- }
-
- if (myfonts.f_wb) {
- wbfs = XLoadQueryFont(screen->display, myfonts.f_wb);
- } else if (is_double_width_font(bfs)) {
- wbfs = bfs;
- } else {
- wbfs = wfs;
- TRACE(("...cannot load wide bold font %s\n", myfonts.f_wb));
- }
-
- if (EmptyFont(wbfs))
- goto bad; /* can't use a 0-sized font */
- });
-
- /*
- * Most of the time this call to load the font will succeed, even if
- * there is no wide font : the X server doubles the width of the
- * normal font, or similar.
- *
- * But if it did fail for some reason, then nevermind.
- */
- if (EmptyFont(bfs))
- goto bad; /* can't use a 0-sized font */
-
- if (!same_font_size(xw, nfs, bfs)
- && (is_fixed_font(nfs) && is_fixed_font(bfs))) {
- TRACE(("...ignoring mismatched normal/bold fonts\n"));
- XFreeFont(screen->display, bfs);
- bfs = nfs;
- }
-
- if_OPT_WIDE_CHARS(screen, {
- if (wfs != 0
- && wbfs != 0
- && !same_font_size(xw, wfs, wbfs)
- && (is_fixed_font(wfs) && is_fixed_font(wbfs))) {
- TRACE(("...ignoring mismatched normal/bold wide fonts\n"));
- XFreeFont(screen->display, wbfs);
- wbfs = wfs;
- }
- });
-
- /*
- * Normal/bold fonts should be the same width. Also, the min/max
- * values should be the same.
- */
- if (!is_fixed_font(nfs)
- || !is_fixed_font(bfs)
- || nfs->max_bounds.width != bfs->max_bounds.width) {
- TRACE(("Proportional font! normal %d/%d, bold %d/%d\n",
- nfs->min_bounds.width,
- nfs->max_bounds.width,
- bfs->min_bounds.width,
- bfs->max_bounds.width));
- proportional = True;
- }
-
- if_OPT_WIDE_CHARS(screen, {
- if (wfs != 0
- && wbfs != 0
- && (!is_fixed_font(wfs)
- || !is_fixed_font(wbfs)
- || wfs->max_bounds.width != wbfs->max_bounds.width)) {
- TRACE(("Proportional font! wide %d/%d, wide bold %d/%d\n",
- wfs->min_bounds.width,
- wfs->max_bounds.width,
- wbfs->min_bounds.width,
- wbfs->max_bounds.width));
- proportional = True;
- }
- });
-
- /* TODO : enforce that the width of the wide font is 2* the width
- of the narrow font */
-
- mask = (GCFont | GCForeground | GCBackground | GCGraphicsExposures |
- GCFunction);
-
- new_normal = getXtermForeground(xw->flags, xw->cur_foreground);
- new_revers = getXtermBackground(xw->flags, xw->cur_background);
-
- xgcv.font = nfs->fid;
- xgcv.foreground = new_normal;
- xgcv.background = new_revers;
- xgcv.graphics_exposures = True; /* default */
- xgcv.function = GXcopy;
-
- new_normalGC = XtGetGC((Widget) xw, mask, &xgcv);
- if (!new_normalGC)
- goto bad;
-
- if (nfs == bfs) { /* there is no bold font */
- new_normalboldGC = new_normalGC;
- } else {
- xgcv.font = bfs->fid;
- new_normalboldGC = XtGetGC((Widget) xw, mask, &xgcv);
- if (!new_normalboldGC)
- goto bad;
- }
-
- xgcv.font = nfs->fid;
- xgcv.foreground = new_revers;
- xgcv.background = new_normal;
- new_reverseGC = XtGetGC((Widget) xw, mask, &xgcv);
- if (!new_reverseGC)
- goto bad;
-
- if (nfs == bfs) { /* there is no bold font */
- new_reverseboldGC = new_reverseGC;
- } else {
- xgcv.font = bfs->fid;
- new_reverseboldGC = XtGetGC((Widget) xw, mask, &xgcv);
- if (!new_reverseboldGC)
- goto bad;
- }
-
- if (NormalGC(screen) != NormalBoldGC(screen))
- XtReleaseGC((Widget) xw, NormalBoldGC(screen));
- XtReleaseGC((Widget) xw, NormalGC(screen));
-
- if (ReverseGC(screen) != ReverseBoldGC(screen))
- XtReleaseGC((Widget) xw, ReverseBoldGC(screen));
- XtReleaseGC((Widget) xw, ReverseGC(screen));
-
- NormalGC(screen) = new_normalGC;
- NormalBoldGC(screen) = new_normalboldGC;
- ReverseGC(screen) = new_reverseGC;
- ReverseBoldGC(screen) = new_reverseboldGC;
-
- /*
- * If we're switching fonts, free the old ones. Otherwise we'll leak
- * the memory that is associated with the old fonts. The
- * XLoadQueryFont call allocates a new XFontStruct.
- */
- if (screen->fnt_bold != 0
- && screen->fnt_bold != screen->fnt_norm)
- XFreeFont(screen->display, screen->fnt_bold);
- if (screen->fnt_norm != 0)
- XFreeFont(screen->display, screen->fnt_norm);
-
- screen->fnt_norm = nfs;
- screen->fnt_bold = bfs;
-#if OPT_WIDE_CHARS
- screen->fnt_dwd = wfs;
- if (wbfs == NULL)
- wbfs = wfs;
- screen->fnt_dwdb = wbfs;
-#endif
- screen->fnt_prop = proportional;
- screen->fnt_boxes = True;
-
-#if OPT_BOX_CHARS
- /*
- * Xterm uses character positions 1-31 of a font for the line-drawing
- * characters. Check that they are all present. The null character
- * (0) is special, and is not used.
- */
-#if OPT_RENDERFONT
- if (UsingRenderFont(xw)) {
- /*
- * FIXME: we shouldn't even be here if we're using Xft.
- */
- screen->fnt_boxes = False;
- TRACE(("assume Xft missing line-drawing chars\n"));
- } else
-#endif
- {
- unsigned ch;
-
- for (ch = 1; ch < 32; ch++) {
- unsigned n = ch;
-#if OPT_WIDE_CHARS
- if (screen->utf8_mode || screen->unicode_font) {
- n = dec2ucs(ch);
- if (n == UCS_REPL)
- continue;
- }
-#endif
- if (xtermMissingChar(xw, n, nfs)) {
- TRACE(("missing normal char #%d\n", n));
- screen->fnt_boxes = False;
- break;
- }
- if (xtermMissingChar(xw, n, bfs)) {
- TRACE(("missing bold char #%d\n", n));
- screen->fnt_boxes = False;
- break;
- }
- }
- }
- TRACE(("Will %suse internal line-drawing characters\n",
- screen->fnt_boxes ? "not " : ""));
-#endif
-
- screen->enbolden = screen->bold_mode
- && ((nfs == bfs) || same_font_name(normal, myfonts.f_b));
- TRACE(("Will %suse 1-pixel offset/overstrike to simulate bold\n",
- screen->enbolden ? "" : "not "));
-
- set_menu_font(False);
- screen->menu_font_number = fontnum;
- set_menu_font(True);
- if (tmpname) { /* if setting escape or sel */
- if (screen->MenuFontName(fontnum))
- free(screen->MenuFontName(fontnum));
- screen->MenuFontName(fontnum) = tmpname;
- if (fontnum == fontMenu_fontescape) {
- set_sensitivity(xw->screen.fontMenu,
- fontMenuEntries[fontMenu_fontescape].widget,
- True);
- }
-#if OPT_SHIFT_FONTS
- screen->menu_font_sizes[fontnum] = FontSize(nfs);
-#endif
- }
- set_cursor_gcs(screen);
- xtermUpdateFontInfo(xw, doresize);
- return 1;
-
- bad:
- if (tmpname)
- free(tmpname);
- if (new_normalGC)
- XtReleaseGC((Widget) xw, new_normalGC);
- if (new_normalboldGC && new_normalGC != new_normalboldGC)
- XtReleaseGC((Widget) xw, new_normalboldGC);
- if (new_reverseGC)
- XtReleaseGC((Widget) xw, new_reverseGC);
- if (new_reverseboldGC && new_reverseGC != new_reverseboldGC)
- XtReleaseGC((Widget) xw, new_reverseboldGC);
- if (nfs)
- XFreeFont(screen->display, nfs);
- if (bfs && nfs != bfs)
- XFreeFont(screen->display, bfs);
-#if OPT_WIDE_CHARS
- if (wfs)
- XFreeFont(screen->display, wfs);
- if (wbfs && wbfs != wfs)
- XFreeFont(screen->display, wbfs);
-#endif
- return 0;
-}
-
-#if OPT_LOAD_VTFONTS || OPT_WIDE_CHARS
-/*
- * Collect font-names that we can modify with the load-vt-fonts() action.
- */
-typedef struct {
- VTFontNames default_font;
- char *menu_font_names[fontMenu_lastBuiltin + 1][fMAX];
-} SubResourceRec;
-
-#define MERGE_SUBFONT(src,dst,name) \
- if (dst.name == 0) { \
- TRACE(("MERGE_SUBFONT " #dst "." #name " merge %s\n", NonNull(src.name))); \
- dst.name = src.name; \
- } else { \
- TRACE(("MERGE_SUBFONT " #dst "." #name " found %s\n", NonNull(dst.name))); \
- }
-
-#define COPY_MENU_FONTS(src,dst) \
- TRACE(("COPY_MENU_FONTS " #src " to " #dst "\n")); \
- for (n = fontMenu_fontdefault; n <= fontMenu_lastBuiltin; ++n) { \
- for (m = 0; m < fMAX; ++m) { \
- dst.menu_font_names[n][m] = src.menu_font_names[n][m]; \
- } \
- }
-
-/*
- * Load the "VT" font names from the given subresource name/class. These
- * correspond to the VT100 resources.
- */
-static Bool
-xtermLoadVTFonts(XtermWidget w, char *myName, char *myClass)
-{
- static Bool initialized = False;
- static SubResourceRec original, referenceRec, subresourceRec;
-
- /*
- * These are duplicates of the VT100 font resources, but with a special
- * application/classname passed in to distinguish them.
- */
- static XtResource font_resources[] =
- {
- Sres(XtNfont, XtCFont, default_font.f_n, DEFFONT),
- Sres(XtNboldFont, XtCBoldFont, default_font.f_b, DEFBOLDFONT),
-#if OPT_WIDE_CHARS
- Sres(XtNwideFont, XtCWideFont, default_font.f_w, DEFWIDEFONT),
- Sres(XtNwideBoldFont, XtCWideBoldFont, default_font.f_wb, DEFWIDEBOLDFONT),
-#endif
- Sres(XtNfont1, XtCFont1, MenuFontName(fontMenu_font1), NULL),
- Sres(XtNfont2, XtCFont2, MenuFontName(fontMenu_font2), NULL),
- Sres(XtNfont3, XtCFont3, MenuFontName(fontMenu_font3), NULL),
- Sres(XtNfont4, XtCFont4, MenuFontName(fontMenu_font4), NULL),
- Sres(XtNfont5, XtCFont5, MenuFontName(fontMenu_font5), NULL),
- Sres(XtNfont6, XtCFont6, MenuFontName(fontMenu_font6), NULL),
- };
- Cardinal n, m;
- Bool status = True;
-
- if (!initialized) {
-
- initialized = True;
- TRACE(("xtermLoadVTFonts saving original\n"));
- original.default_font = w->misc.default_font;
- COPY_MENU_FONTS(w->screen, original);
- }
-
- if (myName == 0 || *myName == 0) {
- TRACE(("xtermLoadVTFonts restoring original\n"));
- w->misc.default_font = original.default_font;
- COPY_MENU_FONTS(original, w->screen);
- for (n = 0; n < XtNumber(original.menu_font_names); ++n)
- w->screen.MenuFontName(n) = original.MenuFontName(n);
- } else {
- TRACE(("xtermLoadVTFonts(%s, %s)\n", myName, myClass));
-
- memset(&subresourceRec, 0, sizeof(subresourceRec));
- XtGetSubresources((Widget) w, (XtPointer) &subresourceRec,
- myName, myClass,
- font_resources,
- (Cardinal) XtNumber(font_resources),
- NULL, (Cardinal) 0);
-
- if (memcmp(&referenceRec, &subresourceRec, sizeof(referenceRec))) {
-
- /*
- * If a particular resource value was not found, use the original.
- */
- MERGE_SUBFONT(w->misc, subresourceRec, default_font.f_n);
- MERGE_SUBFONT(w->misc, subresourceRec, default_font.f_b);
-#if OPT_WIDE_CHARS
- MERGE_SUBFONT(w->misc, subresourceRec, default_font.f_w);
- MERGE_SUBFONT(w->misc, subresourceRec, default_font.f_wb);
-#endif
- for (n = fontMenu_font1; n <= fontMenu_lastBuiltin; ++n)
- MERGE_SUBFONT(w->screen, subresourceRec, MenuFontName(n));
-
- /*
- * Finally, copy the subresource data to the widget.
- */
- w->misc.default_font = subresourceRec.default_font;
- COPY_MENU_FONTS(subresourceRec, w->screen);
- w->screen.MenuFontName(fontMenu_fontdefault) = w->misc.default_font.f_n;
- } else {
- TRACE(("...no resources found\n"));
- status = False;
- }
- }
- return status;
-}
-
-#if OPT_WIDE_CHARS
-static Bool
-isWideFont(XFontStruct * fp, char *tag, Bool nullOk)
-{
- Bool result = False;
-
- (void) tag;
- if (fp != 0) {
- unsigned count = 0;
- if (fp->min_byte1 == 0 && fp->max_byte1 == 0) {
- count = fp->max_char_or_byte2 - fp->min_char_or_byte2;
- } else if (fp->min_char_or_byte2 < 256
- && fp->max_char_or_byte2 < 256) {
- unsigned first = (fp->min_byte1 << 8) + fp->min_char_or_byte2;
- unsigned last = (fp->max_byte1 << 8) + fp->max_char_or_byte2;
- count = last + 1 - first;
- }
- TRACE(("isWideFont(%s) found %d cells\n", tag, count));
- result = (count > 256) ? True : False;
- } else {
- result = nullOk;
- }
- return result;
-}
-
-static Bool
-currentFontsAreWide(XtermWidget w, Bool nullOk)
-{
- Bool result = True;
- TScreen *screen = &(w->screen);
-
- result = (isWideFont(screen->fnt_norm, "normal", nullOk)
- && isWideFont(screen->fnt_bold, "bold", nullOk)
- && isWideFont(screen->fnt_dwd, "wide", nullOk)
- && isWideFont(screen->fnt_dwdb, "wide-bold", nullOk));
-
- TRACE(("currentFontsAreWide returns %d\n", result));
- return result;
-}
-
-/*
- * If the current fonts are not wide, load the UTF8 fonts.
- *
- * Called during initialization (for wide-character mode), the fonts have not
- * been setup, so we pass nullOk=True to currentFontsAreWide().
- *
- * Called after initialization, e.g., in response to the UTF-8 menu entry
- * (starting from narrow character mode), it checks if the fonts are not wide.
- */
-Bool
-xtermLoadWideFonts(XtermWidget w, Bool nullOk)
-{
- Bool result = currentFontsAreWide(w, nullOk);
-
- /* FIXME: add a test for wide-font */
- if (!result) {
- result = xtermLoadVTFonts(w, "utf8Fonts", "Utf8Fonts");
- }
- TRACE(("xtermLoadWideFonts:%d\n", result));
- return result;
-}
-#endif /* OPT_WIDE_CHARS */
-
-/*
- * Restore the default fonts, i.e., if we had switched to wide-fonts.
- */
-Bool
-xtermLoadDefaultFonts(XtermWidget w)
-{
- Bool result;
- result = xtermLoadVTFonts(w, NULL, NULL);
- TRACE(("xtermLoadDefaultFonts:%d\n", result));
- return result;
-}
-#endif /* OPT_LOAD_VTFONTS || OPT_WIDE_CHARS */
-
-#if OPT_LOAD_VTFONTS
-void
-HandleLoadVTFonts(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- static char empty[] = ""; /* appease strict compilers */
-
- char buf[80];
- char *myName = (*param_count > 0) ? params[0] : empty;
- char *convert = (*param_count > 1) ? params[1] : myName;
- char *myClass = (char *) MyStackAlloc(strlen(convert), buf);
- int n;
-
- TRACE(("HandleLoadVTFonts(%d)\n", *param_count));
- strcpy(myClass, convert);
- if (*param_count == 1
- && islower(CharOf(myClass[0])))
- myClass[0] = toupper(CharOf(myClass[0]));
-
- if (xtermLoadVTFonts(term, myName, myClass)) {
- /*
- * When switching fonts, try to preserve the font-menu selection, since
- * it is less surprising to do that (if the font-switching can be
- * undone) than to switch to "Default".
- */
- int font_number = term->screen.menu_font_number;
- if (font_number > fontMenu_lastBuiltin)
- font_number = fontMenu_lastBuiltin;
- for (n = 0; n < NMENUFONTS; ++n)
- term->screen.menu_font_sizes[n] = 0;
- SetVTFont(term, font_number, True,
- ((font_number == fontMenu_fontdefault)
- ? &(term->misc.default_font)
- : NULL));
- }
-
- MyStackFree(myClass, buf);
-}
-#endif /* OPT_LOAD_VTFONTS */
-
-/*
- * Set the limits for the box that outlines the cursor.
- */
-void
-xtermSetCursorBox(TScreen * screen)
-{
- static XPoint VTbox[NBOX];
- XPoint *vp;
-
- vp = &VTbox[1];
- (vp++)->x = FontWidth(screen) - 1;
- (vp++)->y = FontHeight(screen) - 1;
- (vp++)->x = -(FontWidth(screen) - 1);
- vp->y = -(FontHeight(screen) - 1);
- screen->box = VTbox;
-}
-
-#define CACHE_XFT(dst,src) if (src != 0) {\
- dst[fontnum] = src;\
- TRACE(("%s[%d] = %d (%d,%d) by %d\n",\
- #dst,\
- fontnum,\
- src->height,\
- src->ascent,\
- src->descent,\
- src->max_advance_width));\
- }
-
-#if OPT_RENDERFONT
-static XftFont *
-xtermOpenXft(Display * dpy, XftPattern * pat, const char *tag GCC_UNUSED)
-{
- XftPattern *match;
- XftResult status;
- XftFont *result = 0;
-
- if (pat != 0) {
- match = XftFontMatch(dpy, DefaultScreen(dpy), pat, &status);
- result = XftFontOpenPattern(dpy, match);
- if ((result == 0) && match) {
- TRACE(("...did not match %s font\n", tag));
- XftPatternDestroy(match);
- } else {
- TRACE(("...matched %s font\n", tag));
- }
- }
- return result;
-}
-#endif
-
-/*
- * Compute useful values for the font/window sizes
- */
-void
-xtermComputeFontInfo(XtermWidget xw,
- struct _vtwin *win,
- XFontStruct * font,
- int sbwidth)
-{
- TScreen *screen = &(xw->screen);
-
- int i, j, width, height;
-
-#if OPT_RENDERFONT
- /*
- * xterm contains a lot of references to fonts, assuming they are fixed
- * size. This chunk of code overrides the actual font-selection (see
- * drawXtermText()), if the user has selected render-font. All of the
- * font-loading for fixed-fonts still goes on whether or not this chunk
- * overrides it.
- */
- if (xw->misc.render_font && !IsIconWin(screen, win)) {
- Display *dpy = screen->display;
- int fontnum = screen->menu_font_number;
- XftFont *norm = screen->renderFontNorm[fontnum];
- XftFont *bold = screen->renderFontBold[fontnum];
- XftFont *ital = screen->renderFontItal[fontnum];
-#if OPT_RENDERWIDE
- XftFont *wnorm = screen->renderWideNorm[fontnum];
- XftFont *wbold = screen->renderWideBold[fontnum];
- XftFont *wital = screen->renderWideItal[fontnum];
-#endif
-
- if (norm == 0 && xw->misc.face_name) {
- XftPattern *pat;
- double face_size = xw->misc.face_size;
-
- TRACE(("xtermComputeFontInfo norm(face %s, size %f)\n",
- xw->misc.face_name,
- xw->misc.face_size));
-
-#if OPT_SHIFT_FONTS
- /*
- * If the user is switching font-sizes, make it follow the same
- * ratios to the default as the fixed fonts would, for easy
- * comparison. There will be some differences since the fixed
- * fonts have a variety of height/width ratios, but this is simpler
- * than adding another resource value - and as noted above, the
- * data for the fixed fonts are available.
- */
- lookupOneFontSize(screen, fontnum);
- if (fontnum != fontMenu_fontdefault) {
- int num = screen->menu_font_sizes[fontnum];
- int den = screen->menu_font_sizes[0];
- face_size = (1.0 * face_size * num) / den;
- TRACE(("scaled using %d/%d -> %f\n", num, den, face_size));
- }
-#endif
-
- pat = XftNameParse(xw->misc.face_name);
- XftPatternBuild(pat,
- XFT_FAMILY, XftTypeString, "mono",
- XFT_SIZE, XftTypeDouble, face_size,
- XFT_SPACING, XftTypeInteger, XFT_MONO,
- (void *) 0);
- norm = xtermOpenXft(dpy, pat, "normal");
-
- if (norm != 0) {
- XftPatternBuild(pat,
- XFT_WEIGHT, XftTypeInteger, XFT_WEIGHT_BOLD,
- XFT_CHAR_WIDTH, XftTypeInteger, norm->max_advance_width,
- (void *) 0);
- bold = xtermOpenXft(dpy, pat, "bold");
-
-#if OPT_ISO_COLORS
- if (screen->italicULMode) {
- XftPatternBuild(pat,
- XFT_SLANT, XftTypeInteger, XFT_SLANT_ITALIC,
- XFT_CHAR_WIDTH, XftTypeInteger, norm->max_advance_width,
- (void *) 0);
- ital = xtermOpenXft(dpy, pat, "italic");
- }
-#endif /* OPT_ISO_COLORS */
-
- /*
- * FIXME: just assume that the corresponding font has no
- * graphics characters.
- */
- if (screen->fnt_boxes) {
- screen->fnt_boxes = False;
- TRACE(("Xft opened - will %suse internal line-drawing characters\n",
- screen->fnt_boxes ? "not " : ""));
- }
- }
-
- if (pat)
- XftPatternDestroy(pat);
-
- CACHE_XFT(screen->renderFontNorm, norm);
- CACHE_XFT(screen->renderFontBold, bold);
- CACHE_XFT(screen->renderFontItal, ital);
-
- /*
- * See xtermXftDrawString().
- */
-#if OPT_RENDERWIDE
- if (norm != 0 && screen->wide_chars) {
- char *face_name = (xw->misc.face_wide_name
- ? xw->misc.face_wide_name
- : xw->misc.face_name);
- int char_width = norm->max_advance_width * 2;
-
- TRACE(("xtermComputeFontInfo wide(face %s, char_width %d)\n",
- face_name,
- char_width));
-
- pat = XftNameParse(xw->misc.face_name);
- XftPatternBuild(pat,
- XFT_FAMILY, XftTypeString, face_name,
- XFT_SIZE, XftTypeDouble, face_size,
- XFT_SPACING, XftTypeInteger, XFT_MONO,
- XFT_CHAR_WIDTH, XftTypeInteger, char_width,
- (void *) 0);
- wnorm = xtermOpenXft(dpy, pat, "wide");
-
- if (wnorm != 0) {
- XftPatternBuild(pat,
- XFT_FAMILY, XftTypeString, face_name,
- XFT_SIZE, XftTypeDouble, face_size,
- XFT_SPACING, XftTypeInteger, XFT_MONO,
- XFT_CHAR_WIDTH, XftTypeInteger, char_width,
- XFT_WEIGHT, XftTypeInteger, XFT_WEIGHT_BOLD,
- (void *) 0);
- wbold = xtermOpenXft(dpy, pat, "wide-bold");
-
- if (screen->italicULMode) {
- XftPatternBuild(pat,
- XFT_FAMILY, XftTypeString, face_name,
- XFT_SIZE, XftTypeDouble, face_size,
- XFT_SPACING, XftTypeInteger, XFT_MONO,
- XFT_CHAR_WIDTH, XftTypeInteger, char_width,
- XFT_SLANT, XftTypeInteger, XFT_SLANT_ITALIC,
- (void *) 0);
- wital = xtermOpenXft(dpy, pat, "wide-italic");
- }
- }
-
- if (pat)
- XftPatternDestroy(pat);
-
- CACHE_XFT(screen->renderWideNorm, wnorm);
- CACHE_XFT(screen->renderWideBold, wbold);
- CACHE_XFT(screen->renderWideItal, wital);
- }
-#endif
- }
- if (norm == 0) {
- xw->misc.render_font = False;
- update_font_renderfont();
- } else {
- win->f_width = norm->max_advance_width;
- win->f_height = norm->height;
- win->f_ascent = norm->ascent;
- win->f_descent = norm->descent;
- if (win->f_height < win->f_ascent + win->f_descent)
- win->f_height = win->f_ascent + win->f_descent;
- if (is_double_width_font_xft(screen->display, norm))
- win->f_width >>= 1;
- }
- }
- if (!xw->misc.render_font || IsIconWin(screen, win))
-#endif
- {
- if (is_double_width_font(font)) {
- win->f_width = (font->min_bounds.width);
- } else {
- win->f_width = (font->max_bounds.width);
- }
- win->f_height = (font->ascent + font->descent);
- win->f_ascent = font->ascent;
- win->f_descent = font->descent;
- }
- i = 2 * screen->border + sbwidth;
- j = 2 * screen->border;
- width = MaxCols(screen) * win->f_width + i;
- height = MaxRows(screen) * win->f_height + j;
- win->fullwidth = width;
- win->fullheight = height;
- win->width = width - i;
- win->height = height - j;
-
- TRACE(("xtermComputeFontInfo window %dx%d (full %dx%d), fontsize %dx%d (asc %d, dsc %d)\n",
- win->height,
- win->width,
- win->fullheight,
- win->fullwidth,
- win->f_height,
- win->f_width,
- win->f_ascent,
- win->f_descent));
-}
-
-/* save this information as a side-effect for double-sized characters */
-void
-xtermSaveFontInfo(TScreen * screen, XFontStruct * font)
-{
- screen->fnt_wide = (font->max_bounds.width);
- screen->fnt_high = (font->ascent + font->descent);
- TRACE(("xtermSaveFontInfo %dx%d\n", screen->fnt_high, screen->fnt_wide));
-}
-
-/*
- * After loading a new font, update the structures that use its size.
- */
-void
-xtermUpdateFontInfo(XtermWidget xw, Bool doresize)
-{
- TScreen *screen = &(xw->screen);
-
- int scrollbar_width;
- struct _vtwin *win = &(screen->fullVwin);
-
- scrollbar_width = (xw->misc.scrollbar
- ? (screen->scrollWidget->core.width +
- screen->scrollWidget->core.border_width)
- : 0);
- xtermComputeFontInfo(xw, win, screen->fnt_norm, scrollbar_width);
- xtermSaveFontInfo(screen, screen->fnt_norm);
-
- if (doresize) {
- if (VWindow(screen)) {
- XClearWindow(screen->display, VWindow(screen));
- }
- TRACE(("xtermUpdateFontInfo {{\n"));
- DoResizeScreen(xw); /* set to the new natural size */
- if (screen->scrollWidget)
- ResizeScrollBar(xw);
- Redraw();
- TRACE(("... }} xtermUpdateFontInfo\n"));
-#ifdef SCROLLBAR_RIGHT
- updateRightScrollbar(term);
-#endif
- }
- xtermSetCursorBox(screen);
-}
-
-#if OPT_BOX_CHARS
-
-/*
- * Returns true if the given character is missing from the specified font.
- */
-Bool
-xtermMissingChar(XtermWidget xw, unsigned ch, XFontStruct * font)
-{
- if (font != 0
- && font->per_char != 0
- && !font->all_chars_exist) {
- static XCharStruct dft, *tmp = &dft, *pc = 0;
-
- if (font->max_byte1 == 0) {
-#if OPT_WIDE_CHARS
- if (ch > 255) {
- TRACE(("xtermMissingChar %#04x (row)\n", ch));
- return True;
- }
-#endif
- CI_GET_CHAR_INFO_1D(font, E2A(ch), tmp, pc);
- }
-#if OPT_WIDE_CHARS
- else {
- CI_GET_CHAR_INFO_2D(font, (ch >> 8), (ch & 0xff), tmp, pc);
- }
-#else
-
- if (!pc)
- return False; /* Urgh! */
-#endif
-
- if (CI_NONEXISTCHAR(pc)) {
- TRACE(("xtermMissingChar %#04x (!exists)\n", ch));
- return True;
- }
- }
- if (ch < 32
- && xw->screen.force_box_chars) {
- TRACE(("xtermMissingChar %#04x (forced off)\n", ch));
- return True;
- }
- return False;
-}
-
-/*
- * The grid is arbitrary, enough resolution that nothing's lost in
- * initialization.
- */
-#define BOX_HIGH 60
-#define BOX_WIDE 60
-
-#define MID_HIGH (BOX_HIGH/2)
-#define MID_WIDE (BOX_WIDE/2)
-
-#define CHR_WIDE ((9*BOX_WIDE)/10)
-#define CHR_HIGH ((9*BOX_HIGH)/10)
-
-/*
- * ...since we'll scale the values anyway.
- */
-#define SCALE_X(n) n = (n * (font_width-1)) / (BOX_WIDE-1)
-#define SCALE_Y(n) n = (n * (font_height-1)) / (BOX_HIGH-1)
-
-#define SEG(x0,y0,x1,y1) x0,y0, x1,y1
-
-/*
- * Draw the given graphic character, if it is simple enough (i.e., a
- * line-drawing character).
- */
-void
-xtermDrawBoxChar(XtermWidget xw,
- unsigned ch,
- unsigned flags,
- GC gc,
- int x,
- int y)
-{
- TScreen *screen = &(xw->screen);
- /* *INDENT-OFF* */
- static const short glyph_ht[] = {
- SEG( 0, 0, 0, 5*MID_HIGH/6), /* H */
- SEG(6*BOX_WIDE/10, 0, 6*BOX_WIDE/10,5*MID_HIGH/6),
- SEG( 0, 5*MID_HIGH/12,6*BOX_WIDE/10,5*MID_HIGH/12),
- SEG(2*BOX_WIDE/10, MID_HIGH, CHR_WIDE, MID_HIGH), /* T */
- SEG(6*BOX_WIDE/10, MID_HIGH, 6*BOX_WIDE/10, CHR_HIGH),
- -1
- }, glyph_ff[] = {
- SEG( 0, 0, 6*BOX_WIDE/10, 0), /* F */
- SEG( 0, 5*MID_HIGH/12,6*CHR_WIDE/12,5*MID_HIGH/12),
- SEG( 0, 0, 0*BOX_WIDE/3, 5*MID_HIGH/6),
- SEG(1*BOX_WIDE/3, MID_HIGH, CHR_WIDE, MID_HIGH), /* F */
- SEG(1*BOX_WIDE/3, 8*MID_HIGH/6,10*CHR_WIDE/12,8*MID_HIGH/6),
- SEG(1*BOX_WIDE/3, MID_HIGH, 1*BOX_WIDE/3, CHR_HIGH),
- -1
- }, glyph_lf[] = {
- SEG( 0, 0, 0, 5*MID_HIGH/6), /* L */
- SEG( 0, 5*MID_HIGH/6, 6*BOX_WIDE/10,5*MID_HIGH/6),
- SEG(1*BOX_WIDE/3, MID_HIGH, CHR_WIDE, MID_HIGH), /* F */
- SEG(1*BOX_WIDE/3, 8*MID_HIGH/6,10*CHR_WIDE/12,8*MID_HIGH/6),
- SEG(1*BOX_WIDE/3, MID_HIGH, 1*BOX_WIDE/3, CHR_HIGH),
- -1
- }, glyph_nl[] = {
- SEG( 0, 5*MID_HIGH/6, 0, 0), /* N */
- SEG( 0, 0, 5*BOX_WIDE/6, 5*MID_HIGH/6),
- SEG(5*BOX_WIDE/6, 5*MID_HIGH/6, 5*BOX_WIDE/6, 0),
- SEG(1*BOX_WIDE/3, MID_HIGH, 1*BOX_WIDE/3, CHR_HIGH), /* L */
- SEG(1*BOX_WIDE/3, CHR_HIGH, CHR_WIDE, CHR_HIGH),
- -1
- }, glyph_vt[] = {
- SEG( 0, 0, 5*BOX_WIDE/12,5*MID_HIGH/6), /* V */
- SEG(5*BOX_WIDE/12,5*MID_HIGH/6, 5*BOX_WIDE/6, 0),
- SEG(2*BOX_WIDE/10, MID_HIGH, CHR_WIDE, MID_HIGH), /* T */
- SEG(6*BOX_WIDE/10, MID_HIGH, 6*BOX_WIDE/10, CHR_HIGH),
- -1
- }, plus_or_minus[] =
- {
- SEG( 0, 5*BOX_HIGH/6, CHR_WIDE, 5*BOX_HIGH/6),
- SEG( MID_WIDE, 2*BOX_HIGH/6, MID_WIDE, 4*BOX_HIGH/6),
- SEG( 0, 3*BOX_HIGH/6, CHR_WIDE, 3*BOX_HIGH/6),
- -1
- }, lower_right_corner[] =
- {
- SEG( 0, MID_HIGH, MID_WIDE, MID_HIGH),
- SEG( MID_WIDE, MID_HIGH, MID_WIDE, 0),
- -1
- }, upper_right_corner[] =
- {
- SEG( 0, MID_HIGH, MID_WIDE, MID_HIGH),
- SEG( MID_WIDE, MID_HIGH, MID_WIDE, BOX_HIGH),
- -1
- }, upper_left_corner[] =
- {
- SEG( MID_WIDE, MID_HIGH, BOX_WIDE, MID_HIGH),
- SEG( MID_WIDE, MID_HIGH, MID_WIDE, BOX_HIGH),
- -1
- }, lower_left_corner[] =
- {
- SEG( MID_WIDE, 0, MID_WIDE, MID_HIGH),
- SEG( MID_WIDE, MID_WIDE, BOX_WIDE, MID_HIGH),
- -1
- }, cross[] =
- {
- SEG( 0, MID_HIGH, BOX_WIDE, MID_HIGH),
- SEG( MID_WIDE, 0, MID_WIDE, BOX_HIGH),
- -1
- }, scan_line_1[] =
- {
- SEG( 0, 0, BOX_WIDE, 0),
- -1
- }, scan_line_3[] =
- {
- SEG( 0, BOX_HIGH/4, BOX_WIDE, BOX_HIGH/4),
- -1
- }, scan_line_7[] =
- {
- SEG( 0, MID_HIGH, BOX_WIDE, MID_HIGH),
- -1
- }, scan_line_9[] =
- {
- SEG( 0, 3*BOX_HIGH/4, BOX_WIDE, 3*BOX_HIGH/4),
- -1
- }, horizontal_line[] =
- {
- SEG( 0, BOX_HIGH, BOX_WIDE, BOX_HIGH),
- -1
- }, left_tee[] =
- {
- SEG( MID_WIDE, 0, MID_WIDE, BOX_HIGH),
- SEG( MID_WIDE, MID_HIGH, BOX_WIDE, MID_HIGH),
- -1
- }, right_tee[] =
- {
- SEG( MID_WIDE, 0, MID_WIDE, BOX_HIGH),
- SEG( MID_WIDE, MID_HIGH, 0, MID_HIGH),
- -1
- }, bottom_tee[] =
- {
- SEG( 0, MID_HIGH, BOX_WIDE, MID_HIGH),
- SEG( MID_WIDE, 0, MID_WIDE, MID_HIGH),
- -1
- }, top_tee[] =
- {
- SEG( 0, MID_HIGH, BOX_WIDE, MID_HIGH),
- SEG( MID_WIDE, MID_HIGH, MID_WIDE, BOX_HIGH),
- -1
- }, vertical_line[] =
- {
- SEG( MID_WIDE, 0, MID_WIDE, BOX_HIGH),
- -1
- }, less_than_or_equal[] =
- {
- SEG( CHR_WIDE, BOX_HIGH/3, 0, MID_HIGH),
- SEG( CHR_WIDE, 2*BOX_HIGH/3, 0, MID_HIGH),
- SEG( 0, 3*BOX_HIGH/4, CHR_WIDE, 3*BOX_HIGH/4),
- -1
- }, greater_than_or_equal[] =
- {
- SEG( 0, BOX_HIGH/3, CHR_WIDE, MID_HIGH),
- SEG( 0, 2*BOX_HIGH/3, CHR_WIDE, MID_HIGH),
- SEG( 0, 3*BOX_HIGH/4, CHR_WIDE, 3*BOX_HIGH/4),
- -1
- }, greek_pi[] =
- {
- SEG( 0, MID_HIGH, CHR_WIDE, MID_HIGH),
- SEG(5*CHR_WIDE/6, MID_HIGH, 5*CHR_WIDE/6, CHR_HIGH),
- SEG(2*CHR_WIDE/6, MID_HIGH, 2*CHR_WIDE/6, CHR_HIGH),
- -1
- }, not_equal_to[] =
- {
- SEG(2*BOX_WIDE/3, 1*BOX_HIGH/3, 1*BOX_WIDE/3, CHR_HIGH),
- SEG( 0, 2*BOX_HIGH/3, CHR_WIDE, 2*BOX_HIGH/3),
- SEG( 0, MID_HIGH, CHR_WIDE, MID_HIGH),
- -1
- };
- /* *INDENT-ON* */
-
- static const short *lines[] =
- {
- 0, /* 00 (unused) */
- 0, /* 01 diamond */
- 0, /* 02 box */
- glyph_ht, /* 03 HT */
- glyph_ff, /* 04 FF */
- 0, /* 05 CR */
- glyph_lf, /* 06 LF */
- 0, /* 07 degrees (small circle) */
- plus_or_minus, /* 08 */
- glyph_nl, /* 09 */
- glyph_vt, /* 0A */
- lower_right_corner, /* 0B */
- upper_right_corner, /* 0C */
- upper_left_corner, /* 0D */
- lower_left_corner, /* 0E */
- cross, /* 0F */
- scan_line_1, /* 10 */
- scan_line_3, /* 11 */
- scan_line_7, /* 12 */
- scan_line_9, /* 13 */
- horizontal_line, /* 14 */
- left_tee, /* 15 */
- right_tee, /* 16 */
- bottom_tee, /* 17 */
- top_tee, /* 18 */
- vertical_line, /* 19 */
- less_than_or_equal, /* 1A */
- greater_than_or_equal, /* 1B */
- greek_pi, /* 1C */
- not_equal_to, /* 1D */
- 0, /* 1E LB */
- 0, /* 1F bullet */
- };
-
- XGCValues values;
- unsigned long mask;
- GC gc2;
- const short *p;
- unsigned font_width = ((flags & DOUBLEWFONT) ? 2 : 1) * screen->fnt_wide;
- unsigned font_height = ((flags & DOUBLEHFONT) ? 2 : 1) * screen->fnt_high;
-
-#if OPT_WIDE_CHARS
- /*
- * Try to show line-drawing characters if we happen to be in UTF-8
- * mode, but have gotten an old-style font.
- */
- if (screen->utf8_mode
-#if OPT_RENDERFONT
- && !UsingRenderFont(xw)
-#endif
- && (ch > 127)
- && (ch != UCS_REPL)) {
- unsigned n;
- for (n = 1; n < 32; n++) {
- if (dec2ucs(n) == ch
- && !xtermMissingChar(xw, n, (flags & BOLD)
- ? screen->fnt_bold
- : screen->fnt_norm)) {
- TRACE(("...use xterm-style linedrawing\n"));
- ch = n;
- break;
- }
- }
- }
-#endif
-
- TRACE(("DRAW_BOX(%d) cell %dx%d at %d,%d%s\n",
- ch, font_height, font_width, y, x,
- (ch >= (sizeof(lines) / sizeof(lines[0]))
- ? "-BAD"
- : "")));
-
- if (!XGetGCValues(screen->display, gc, GCBackground, &values))
- return;
-
- mask = GCForeground;
- if (ch == 2) {
- values.tile =
- XmuCreateStippledPixmap(XtScreen((Widget) xw),
- getXtermForeground(xw->flags, xw->cur_foreground),
- getXtermBackground(xw->flags, xw->cur_background),
- xw->core.depth);
- if (values.stipple != XtUnspecifiedPixmap) {
- mask |= GCBackground | GCTile | GCFillStyle;
- values.fill_style = FillTiled;
- } else {
- ch = (unsigned) (~0); /* make this not match anything */
- }
- } else {
- values.foreground = values.background;
- }
- gc2 = XCreateGC(screen->display,
- VWindow(screen),
- mask,
- &values);
-
- if (!(flags & NOBACKGROUND)) {
- XFillRectangle(screen->display, VWindow(screen), gc2, x, y,
- font_width,
- font_height);
- }
-
- XCopyGC(screen->display, gc, (1 << GCLastBit) - 1, gc2);
- XSetLineAttributes(screen->display, gc2,
- (flags & BOLD)
- ? ((font_height > 12)
- ? font_height / 12
- : 1)
- : ((font_height > 16)
- ? font_height / 16
- : 1),
- LineSolid,
- CapProjecting,
- JoinMiter);
-
- if (ch == 1) { /* diamond */
- XPoint points[5];
- int npoints = 5, n;
-
- points[0].x = MID_WIDE;
- points[0].y = BOX_HIGH / 4;
-
- points[1].x = 3 * BOX_WIDE / 4;
- points[1].y = MID_HIGH;
-
- points[2].x = points[0].x;
- points[2].y = 3 * BOX_HIGH / 4;
-
- points[3].x = BOX_WIDE / 4;
- points[3].y = points[1].y;
-
- points[4].x = points[0].x;
- points[4].y = points[0].y;
-
- for (n = 0; n < npoints; ++n) {
- SCALE_X(points[n].x);
- SCALE_Y(points[n].y);
- points[n].x += x;
- points[n].y += y;
- }
-
- XFillPolygon(screen->display,
- VWindow(screen), gc2,
- points, npoints,
- Convex, CoordModeOrigin);
- } else if (ch == 2) { /* box */
- XmuReleaseStippledPixmap(XtScreen((Widget) xw), values.tile);
- } else if (ch == 7) { /* degrees */
- unsigned width = (BOX_WIDE / 3);
- int x_coord = MID_WIDE - (width / 2);
- int y_coord = MID_HIGH - width;
-
- SCALE_X(x_coord);
- SCALE_Y(y_coord);
- SCALE_X(width);
-
- XDrawArc(screen->display,
- VWindow(screen), gc2,
- x + x_coord, y + y_coord, width, width,
- 0,
- 360 * 64);
- } else if (ch == 0x1f) { /* bullet */
- unsigned width = 7 * BOX_WIDE / 10;
- int x_coord = MID_WIDE - (width / 3);
- int y_coord = MID_HIGH - (width / 3);
-
- SCALE_X(x_coord);
- SCALE_Y(y_coord);
- SCALE_X(width);
-
- XFillArc(screen->display,
- VWindow(screen), gc2,
- x + x_coord, y + y_coord, width, width,
- 0,
- 360 * 64);
- } else if (ch < (sizeof(lines) / sizeof(lines[0]))
- && (p = lines[ch]) != 0) {
- int coord[4];
- int n = 0;
- while (*p >= 0) {
- coord[n++] = *p++;
- if (n == 4) {
- SCALE_X(coord[0]);
- SCALE_Y(coord[1]);
- SCALE_X(coord[2]);
- SCALE_Y(coord[3]);
- XDrawLine(screen->display,
- VWindow(screen), gc2,
- x + coord[0], y + coord[1],
- x + coord[2], y + coord[3]);
- n = 0;
- }
- }
- } else if (screen->force_all_chars) {
- /* bounding rectangle, for debugging */
- XDrawRectangle(screen->display, VWindow(screen), gc2, x, y,
- font_width - 1,
- font_height - 1);
- }
-
- XFreeGC(screen->display, gc2);
-}
-
-#if OPT_RENDERFONT && OPT_WIDE_CHARS
-
-/*
- * Check if the given character has a glyph known to Xft.
- *
- * see xc/lib/Xft/xftglyphs.c
- */
-Bool
-xtermXftMissing(XtermWidget xw, XftFont * font, unsigned wc)
-{
- unsigned check = XftCharIndex(xw->screen.display, font, wc);
- Bool result = False;
-
- if (check == 0) {
- TRACE(("missingXft %d (%d)\n", wc, ucs2dec(wc)));
- result = True;
- }
- return result;
-}
-
-/*
- * Check if the character corresponds to one of xterm's internal codes for
- * line-drawing characters. That is only a subset of the 1-31 codes used for
- * graphic characters. We want to know specifically about the line-drawing
- * characters because the fonts used by Xft do not always give useful glyphs
- * for line-drawing, and there is no reliable way to detect this.
- */
-Bool
-xtermIsLineDrawing(unsigned wc)
-{
- Bool result;
- switch (wc) {
- case 0x0B: /* lower_right_corner */
- case 0x0C: /* upper_right_corner */
- case 0x0D: /* upper_left_corner */
- case 0x0E: /* lower_left_corner */
- case 0x0F: /* cross */
- case 0x10: /* scan_line_1 */
- case 0x11: /* scan_line_3 */
- case 0x12: /* scan_line_7 */
- case 0x13: /* scan_line_9 */
- case 0x14: /* horizontal_line */
- case 0x15: /* left_tee */
- case 0x16: /* right_tee */
- case 0x17: /* bottom_tee */
- case 0x18: /* top_tee */
- case 0x19: /* vertical_line */
- result = True;
- TRACE(("xtermIsLineDrawing %d\n", wc));
- break;
- default:
- result = False;
- break;
- }
- return result;
-}
-#endif /* OPT_RENDERFONT && OPT_WIDE_CHARS */
-
-#endif /* OPT_BOX_CHARS */
-
-#if OPT_WIDE_CHARS
-#define MY_UCS(ucs,dec) case ucs: result = dec; break
-unsigned
-ucs2dec(unsigned ch)
-{
- unsigned result = ch;
- if ((ch > 127)
- && (ch != UCS_REPL)) {
- switch (ch) {
- MY_UCS(0x25ae, 0); /* black vertical rectangle */
- MY_UCS(0x25c6, 1); /* black diamond */
- MY_UCS(0x2592, 2); /* medium shade */
- MY_UCS(0x2409, 3); /* symbol for horizontal tabulation */
- MY_UCS(0x240c, 4); /* symbol for form feed */
- MY_UCS(0x240d, 5); /* symbol for carriage return */
- MY_UCS(0x240a, 6); /* symbol for line feed */
- MY_UCS(0x00b0, 7); /* degree sign */
- MY_UCS(0x00b1, 8); /* plus-minus sign */
- MY_UCS(0x2424, 9); /* symbol for newline */
- MY_UCS(0x240b, 10); /* symbol for vertical tabulation */
- MY_UCS(0x2518, 11); /* box drawings light up and left */
- MY_UCS(0x2510, 12); /* box drawings light down and left */
- MY_UCS(0x250c, 13); /* box drawings light down and right */
- MY_UCS(0x2514, 14); /* box drawings light up and right */
- MY_UCS(0x253c, 15); /* box drawings light vertical and horizontal */
- MY_UCS(0x23ba, 16); /* box drawings scan 1 */
- MY_UCS(0x23bb, 17); /* box drawings scan 3 */
- MY_UCS(0x2500, 18); /* box drawings light horizontal */
- MY_UCS(0x23bc, 19); /* box drawings scan 7 */
- MY_UCS(0x23bd, 20); /* box drawings scan 9 */
- MY_UCS(0x251c, 21); /* box drawings light vertical and right */
- MY_UCS(0x2524, 22); /* box drawings light vertical and left */
- MY_UCS(0x2534, 23); /* box drawings light up and horizontal */
- MY_UCS(0x252c, 24); /* box drawings light down and horizontal */
- MY_UCS(0x2502, 25); /* box drawings light vertical */
- MY_UCS(0x2264, 26); /* less-than or equal to */
- MY_UCS(0x2265, 27); /* greater-than or equal to */
- MY_UCS(0x03c0, 28); /* greek small letter pi */
- MY_UCS(0x2260, 29); /* not equal to */
- MY_UCS(0x00a3, 30); /* pound sign */
- MY_UCS(0x00b7, 31); /* middle dot */
- }
- }
- return result;
-}
-
-#undef MY_UCS
-#define MY_UCS(ucs,dec) case dec: result = ucs; break
-
-unsigned
-dec2ucs(unsigned ch)
-{
- unsigned result = ch;
- if (ch < 32) {
- switch (ch) {
- MY_UCS(0x25ae, 0); /* black vertical rectangle */
- MY_UCS(0x25c6, 1); /* black diamond */
- MY_UCS(0x2592, 2); /* medium shade */
- MY_UCS(0x2409, 3); /* symbol for horizontal tabulation */
- MY_UCS(0x240c, 4); /* symbol for form feed */
- MY_UCS(0x240d, 5); /* symbol for carriage return */
- MY_UCS(0x240a, 6); /* symbol for line feed */
- MY_UCS(0x00b0, 7); /* degree sign */
- MY_UCS(0x00b1, 8); /* plus-minus sign */
- MY_UCS(0x2424, 9); /* symbol for newline */
- MY_UCS(0x240b, 10); /* symbol for vertical tabulation */
- MY_UCS(0x2518, 11); /* box drawings light up and left */
- MY_UCS(0x2510, 12); /* box drawings light down and left */
- MY_UCS(0x250c, 13); /* box drawings light down and right */
- MY_UCS(0x2514, 14); /* box drawings light up and right */
- MY_UCS(0x253c, 15); /* box drawings light vertical and horizontal */
- MY_UCS(0x23ba, 16); /* box drawings scan 1 */
- MY_UCS(0x23bb, 17); /* box drawings scan 3 */
- MY_UCS(0x2500, 18); /* box drawings light horizontal */
- MY_UCS(0x23bc, 19); /* box drawings scan 7 */
- MY_UCS(0x23bd, 20); /* box drawings scan 9 */
- MY_UCS(0x251c, 21); /* box drawings light vertical and right */
- MY_UCS(0x2524, 22); /* box drawings light vertical and left */
- MY_UCS(0x2534, 23); /* box drawings light up and horizontal */
- MY_UCS(0x252c, 24); /* box drawings light down and horizontal */
- MY_UCS(0x2502, 25); /* box drawings light vertical */
- MY_UCS(0x2264, 26); /* less-than or equal to */
- MY_UCS(0x2265, 27); /* greater-than or equal to */
- MY_UCS(0x03c0, 28); /* greek small letter pi */
- MY_UCS(0x2260, 29); /* not equal to */
- MY_UCS(0x00a3, 30); /* pound sign */
- MY_UCS(0x00b7, 31); /* middle dot */
- }
- }
- return result;
-}
-
-#endif /* OPT_WIDE_CHARS */
-
-#if OPT_SHIFT_FONTS
-static XFontStruct *
-xtermFindFont(TScreen * screen, int fontnum)
-{
- XFontStruct *nfs = 0;
- char *name;
-
- if ((name = screen->MenuFontName(fontnum)) != 0
- && (nfs = XLoadQueryFont(screen->display, name)) != 0) {
- if (EmptyFont(nfs)) {
- XFreeFont(screen->display, nfs);
- nfs = 0;
- }
- }
- return nfs;
-}
-
-static void
-lookupOneFontSize(TScreen * screen, int fontnum)
-{
- if (screen->menu_font_sizes[fontnum] == 0) {
- XFontStruct *fs = xtermFindFont(screen, fontnum);
- screen->menu_font_sizes[fontnum] = -1;
- if (fs != 0) {
- screen->menu_font_sizes[fontnum] = FontSize(fs);
- TRACE(("menu_font_sizes[%d] = %ld\n", fontnum,
- screen->menu_font_sizes[fontnum]));
- XFreeFont(screen->display, fs);
- }
- }
-}
-
-/*
- * Cache the font-sizes so subsequent larger/smaller font actions will go fast.
- */
-static void
-lookupFontSizes(TScreen * screen)
-{
- int n;
-
- for (n = 0; n < NMENUFONTS; n++) {
- lookupOneFontSize(screen, n);
- }
-}
-
-/*
- * Find the index of a larger/smaller font (according to the sign of 'relative'
- * and its magnitude), starting from the 'old' index.
- */
-int
-lookupRelativeFontSize(TScreen * screen, int old, int relative)
-{
- int n, m = -1;
-
- if (!IsIcon(screen)) {
- lookupFontSizes(screen);
- if (relative != 0) {
- for (n = 0; n < NMENUFONTS; ++n) {
- if (screen->menu_font_sizes[n] > 0 &&
- screen->menu_font_sizes[n] != screen->menu_font_sizes[old]) {
- int cmp_0 = ((screen->menu_font_sizes[n] >
- screen->menu_font_sizes[old])
- ? relative
- : -relative);
- int cmp_m = ((m < 0)
- ? 1
- : ((screen->menu_font_sizes[n] <
- screen->menu_font_sizes[m])
- ? relative
- : -relative));
- if (cmp_0 > 0 && cmp_m > 0) {
- m = n;
- }
- }
- }
- if (m >= 0) {
- if (relative > 1)
- m = lookupRelativeFontSize(screen, m, relative - 1);
- else if (relative < -1)
- m = lookupRelativeFontSize(screen, m, relative + 1);
- }
- }
- }
- return m;
-}
-
-/* ARGSUSED */
-void
-HandleLargerFont(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- if (term->misc.shift_fonts) {
- TScreen *screen = &term->screen;
- int m;
-
- m = lookupRelativeFontSize(screen, screen->menu_font_number, 1);
- if (m >= 0) {
- SetVTFont(term, m, True, NULL);
- } else {
- Bell(XkbBI_MinorError, 0);
- }
- }
-}
-
-/* ARGSUSED */
-void
-HandleSmallerFont(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- if (term->misc.shift_fonts) {
- TScreen *screen = &term->screen;
- int m;
-
- m = lookupRelativeFontSize(screen, screen->menu_font_number, -1);
- if (m >= 0) {
- SetVTFont(term, m, True, NULL);
- } else {
- Bell(XkbBI_MinorError, 0);
- }
- }
-}
-#endif
-
-/* ARGSUSED */
-void
-HandleSetFont(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- int fontnum;
- VTFontNames fonts;
-
- memset(&fonts, 0, sizeof(fonts));
-
- if (*param_count == 0) {
- fontnum = fontMenu_fontdefault;
- } else {
- Cardinal maxparams = 1; /* total number of params allowed */
-
- switch (params[0][0]) {
- case 'd':
- case 'D':
- case '0':
- fontnum = fontMenu_fontdefault;
- break;
- case '1':
- fontnum = fontMenu_font1;
- break;
- case '2':
- fontnum = fontMenu_font2;
- break;
- case '3':
- fontnum = fontMenu_font3;
- break;
- case '4':
- fontnum = fontMenu_font4;
- break;
- case '5':
- fontnum = fontMenu_font5;
- break;
- case '6':
- fontnum = fontMenu_font6;
- break;
- case 'e':
- case 'E':
- fontnum = fontMenu_fontescape;
-#if OPT_WIDE_CHARS
- maxparams = 5;
-#else
- maxparams = 3;
-#endif
- break;
- case 's':
- case 'S':
- fontnum = fontMenu_fontsel;
- maxparams = 2;
- break;
- default:
- Bell(XkbBI_MinorError, 0);
- return;
- }
- if (*param_count > maxparams) { /* see if extra args given */
- Bell(XkbBI_MinorError, 0);
- return;
- }
- switch (*param_count) { /* assign 'em */
-#if OPT_WIDE_CHARS
- case 5:
- fonts.f_wb = params[4];
- /* FALLTHRU */
- case 4:
- fonts.f_w = params[3];
- /* FALLTHRU */
-#endif
- case 3:
- fonts.f_b = params[2];
- /* FALLTHRU */
- case 2:
- fonts.f_n = params[1];
- break;
- }
- }
-
- SetVTFont(term, fontnum, True, &fonts);
-}
-
-void
-SetVTFont(XtermWidget xw,
- int which,
- Bool doresize,
- const VTFontNames * fonts)
-{
- TScreen *screen = &xw->screen;
-
- TRACE(("SetVTFont(which=%d, f_n=%s, f_b=%s)\n", which,
- (fonts && fonts->f_n) ? fonts->f_n : "<null>",
- (fonts && fonts->f_b) ? fonts->f_b : "<null>"));
-
- if (IsIcon(screen)) {
- Bell(XkbBI_MinorError, 0);
- } else if (which >= 0 && which < NMENUFONTS) {
- VTFontNames myfonts;
-
- memset(&myfonts, 0, sizeof(myfonts));
- if (fonts != 0)
- myfonts = *fonts;
-
- if (which == fontMenu_fontsel) { /* go get the selection */
- FindFontSelection(myfonts.f_n, False);
- return;
- } else {
- if (myfonts.f_n == 0) {
- myfonts.f_n = screen->MenuFontName(which);
- TRACE(("set myfonts.f_n from menu_font_names[%d][fNorm] %s\n",
- which, NonNull(myfonts.f_n)));
- }
- if (myfonts.f_b == 0) {
- myfonts.f_b = screen->menu_font_names[which][fBold];
- TRACE(("set myfonts.f_b from menu_font_names[%d][fBold] %s\n",
- which, NonNull(myfonts.f_b)));
- }
-#if OPT_WIDE_CHARS
- if (myfonts.f_w == 0) {
- myfonts.f_w = screen->menu_font_names[which][fWide];
- TRACE(("set myfonts.f_w from menu_font_names[%d][fWide] %s\n",
- which, NonNull(myfonts.f_w)));
- }
- if (myfonts.f_wb == 0) {
- myfonts.f_wb = screen->menu_font_names[which][fWBold];
- TRACE(("set myfonts.f_wb from menu_font_names[%d][fWBold] %s\n",
- which, NonNull(myfonts.f_wb)));
- }
-#endif
- if (xtermLoadFont(xw,
- &myfonts,
- doresize, which)) {
- return;
- }
- }
- }
-
- Bell(XkbBI_MinorError, 0);
- return;
-}
diff --git a/nx-X11/programs/xterm/fontutils.h b/nx-X11/programs/xterm/fontutils.h
deleted file mode 100644
index 536e707b0..000000000
--- a/nx-X11/programs/xterm/fontutils.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * $XFree86: xc/programs/xterm/fontutils.h,v 1.16 2005/08/05 01:25:39 dickey Exp $
- */
-
-/************************************************************
-
-Copyright 1998-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-********************************************************/
-
-#ifndef included_fontutils_h
-#define included_fontutils_h 1
-
-#include <xterm.h>
-
-extern Bool xtermLoadDefaultFonts (XtermWidget w);
-extern const VTFontNames * xtermFontName(char *normal);
-extern int lookupRelativeFontSize(TScreen * screen, int old, int relative);
-extern int xtermLoadFont (XtermWidget xw,
- const VTFontNames *fonts,
- Bool doresize, int fontnum);
-extern void HandleSetFont PROTO_XT_ACTIONS_ARGS;
-extern void SetVTFont (XtermWidget xw, int i, Bool doresize, const VTFontNames *fonts);
-extern void xtermComputeFontInfo (XtermWidget xw, struct _vtwin *win, XFontStruct *font, int sbwidth);
-extern void xtermSaveFontInfo (TScreen *screen, XFontStruct *font);
-extern void xtermSetCursorBox (TScreen *screen);
-extern void xtermUpdateFontInfo (XtermWidget xw, Bool doresize);
-
-#if OPT_DEC_CHRSET
-extern char *xtermSpecialFont(TScreen *screen, unsigned atts, unsigned chrset);
-#endif
-
-#if OPT_BOX_CHARS
-extern Bool xtermMissingChar(XtermWidget xw, unsigned ch, XFontStruct *font);
-extern void xtermDrawBoxChar(XtermWidget xw, unsigned ch, unsigned flags, GC gc, int x, int y);
-#endif
-
-#if OPT_LOAD_VTFONTS
-extern void HandleLoadVTFonts PROTO_XT_ACTIONS_ARGS;
-#endif
-
-#if OPT_LOAD_VTFONTS || OPT_WIDE_CHARS
-extern Bool xtermLoadWideFonts(XtermWidget w, Bool nullOk);
-#endif
-
-#define xtermIsDecGraphic(ch) ((ch) > 0 && (ch) < 32)
-
-#if OPT_RENDERFONT && OPT_WIDE_CHARS
-extern Bool xtermIsLineDrawing(unsigned /* wc */);
-extern Bool xtermXftMissing(XtermWidget /* xw */, XftFont * /* font */, unsigned /* wc */);
-#endif
-
-#if OPT_SHIFT_FONTS
-extern void HandleSmallerFont PROTO_XT_ACTIONS_ARGS;
-extern void HandleLargerFont PROTO_XT_ACTIONS_ARGS;
-#endif
-
-#if OPT_WIDE_CHARS
-extern unsigned ucs2dec(unsigned);
-extern unsigned dec2ucs(unsigned);
-#endif
-
-#endif /* included_fontutils_h */
diff --git a/nx-X11/programs/xterm/gen-pc-fkeys.pl b/nx-X11/programs/xterm/gen-pc-fkeys.pl
deleted file mode 100755
index c7ba80268..000000000
--- a/nx-X11/programs/xterm/gen-pc-fkeys.pl
+++ /dev/null
@@ -1,98 +0,0 @@
-#! /usr/bin/perl -w
-# Author: Thomas E. Dickey
-# $XTermId: gen-pc-fkeys.pl,v 1.5 2005/04/03 16:58:29 tom Exp $
-# $XFree86: xc/programs/xterm/gen-pc-fkeys.pl,v 1.2 2005/03/29 04:00:32 tsi Exp $
-#
-# Construct a list of function-key definitions corresponding to xterm's
-# Sun/PC keyboard. This uses infocmp to obtain the strings to modify (and
-# verify).
-use strict;
-
-my(@old_keys);
-my($min_fkeys,$max_fkeys,$max_modifier,$modify_opt,$terminfo);
-
-$min_fkeys=12; # the number of "real" function keys on your keyboard
-$max_fkeys=64; # the number of function-keys terminfo can support
-$max_modifier=8; # modifier 1 + (1=shift, 2=alt, 4=control 8=meta)
-$modify_opt=2; # xterm's modifyCursorKeys resource
-$terminfo="xterm-new"; # the terminfo entry to use
-
-my($cur_modifier, $cur_fkey);
-
-# apply the given modifier to the terminfo string, return the result
-sub modify_it {
- my $code = $_[0];
- my $text = $_[1];
- if ($code != 1) {
- my $piece = substr $text, 0, length ($text) - 1;
- my $final = substr $text, length ($text) - 1;
- my $check = substr $piece, length ($piece) - 1;
- if ($check =~ /[0-9]/) {
- $code = ";" . $code;
- }
- $text = $piece . $code . $final;
- }
- return $text;
-}
-
-# compute the next modifier value
-sub next_modifier {
- my $code = $_[0];
- my $mask = $code - 1;
- if ($mask == 0) {
- $mask = 1;
- } elsif ($mask == 1) {
- $mask = 4;
- } elsif ($mask == 2) {
- $mask = 3; # FIXME
- } elsif ($mask == 4) {
- $mask = 5;
- } elsif ($mask == 5) {
- $mask = 2;
- }
- # printf ("# next_modifier(%d) = %d\n", $code, $mask + 1);
- return $mask + 1;
-}
-
-# Read the terminfo entry's list of function keys $old_keys[].
-# We could handle $old_keys[0], but choose to start numbering from 1.
-sub readterm() {
- my($key,$n,$str);
- my(@list) = `infocmp -1 $terminfo`;
- for $n (0..$#list) {
- chop $list[$n];
- $list[$n] =~ s/^[[:space:]]//;
- if ( $list[$n] =~ /^kf[[:digit:]]+=/ ) {
- $key = $list[$n];
- $key =~ s/^kf//;
- $key =~ s/=.*//;
- $str = $list[$n];
- $str =~ s/^kf[[:digit:]]+=//;
- $str =~ s/,[[:space:]]*$//;
- # printf "$n:%s(%d)(%s)\n", $list[$n], $key, $str;
- $old_keys[$key] = $str;
- }
- }
- # printf ("last index:%d\n", $#old_keys);
-}
-
-readterm();
-
-# Cycling through the modifiers is not just like counting. Users prefer
-# pressing one modifier (even if using Emacs). So first we cycle through
-# the individual modifiers, then for completeness two, three, etc.
-printf "xterm+pcfkeys|fragment for PC-style keys, \n";
-for ($cur_fkey = 1, $cur_modifier = 1; $cur_fkey < $max_fkeys; ++$cur_fkey) {
- my $index = (($cur_fkey - 1) % $min_fkeys);
- if ($index == 0 && $cur_fkey != 1) {
- $cur_modifier = next_modifier($cur_modifier);
- }
- my $input = $old_keys[$index + 1];
- my $result = modify_it($cur_modifier,$input);
- printf "\tkf%d=%s, \n", $cur_fkey, $result;
- if (defined $old_keys[$cur_fkey]) {
- if ($old_keys[$cur_fkey] ne $result) {
- printf "# diff %s\n", $old_keys[$cur_fkey];
- }
- }
-}
diff --git a/nx-X11/programs/xterm/input.c b/nx-X11/programs/xterm/input.c
deleted file mode 100644
index 2e93686a9..000000000
--- a/nx-X11/programs/xterm/input.c
+++ /dev/null
@@ -1,1259 +0,0 @@
-/* $XTermId: input.c,v 1.174 2005/09/18 23:48:12 tom Exp $ */
-
-/*
- * $Xorg: input.c,v 1.3 2000/08/17 19:55:08 cpqbld Exp $
- */
-
-/* $XFree86: xc/programs/xterm/input.c,v 3.73 2005/09/18 23:48:12 dickey Exp $ */
-
-/*
- * Copyright 1999-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/* input.c */
-
-#include <xterm.h>
-
-#include <X11/keysym.h>
-
-#ifdef VMS
-#include <X11/keysymdef.h>
-#endif
-
-#if HAVE_X11_DECKEYSYM_H
-#include <X11/DECkeysym.h>
-#endif
-
-#if HAVE_X11_SUNKEYSYM_H
-#include <X11/Sunkeysym.h>
-#endif
-
-#include <X11/Xutil.h>
-#include <ctype.h>
-
-#include <xutf8.h>
-
-#include <data.h>
-#include <fontutils.h>
-
-#define MAP(from, to) case from: return(to)
-
-#define KEYSYM_FMT "0x%04lX" /* simplify matching <X11/keysymdef.h> */
-
-/* 0123456789 abc def0123456789abcdef0123456789abcdef0123456789abcd */
-static char *kypd_num = " XXXXXXXX\tXXX\rXXXxxxxXXXXXXXXXXXXXXXXXXXXX*+,-./0123456789XXX=";
-
-/* 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcd */
-static char *kypd_apl = " ABCDEFGHIJKLMNOPQRSTUVWXYZ??????abcdefghijklmnopqrstuvwxyzXXX";
-
-static char *curfinal = "HDACB FE";
-
-static int decfuncvalue(KeySym keycode);
-static int sunfuncvalue(KeySym keycode);
-#if OPT_HP_FUNC_KEYS
-static int hpfuncvalue(KeySym keycode);
-#endif
-#if OPT_SCO_FUNC_KEYS
-static int scofuncvalue(KeySym keycode);
-#endif
-
-#if OPT_TRACE
-static char *
-ModifierName(unsigned modifier)
-{
- char *s = "";
- if (modifier & ShiftMask)
- s = " Shift";
- else if (modifier & LockMask)
- s = " Lock";
- else if (modifier & ControlMask)
- s = " Control";
- else if (modifier & Mod1Mask)
- s = " Mod1";
- else if (modifier & Mod2Mask)
- s = " Mod2";
- else if (modifier & Mod3Mask)
- s = " Mod3";
- else if (modifier & Mod4Mask)
- s = " Mod4";
- else if (modifier & Mod5Mask)
- s = " Mod5";
- return s;
-}
-#endif
-
-static void
-AdjustAfterInput(TScreen * screen)
-{
- if (screen->scrollkey && screen->topline != 0)
- WindowScroll(screen, 0);
- if (screen->marginbell) {
- int col = screen->max_col - screen->nmarginbell;
- if (screen->bellarmed >= 0) {
- if (screen->bellarmed == screen->cur_row) {
- if (screen->cur_col >= col) {
- Bell(XkbBI_MarginBell, 0);
- screen->bellarmed = -1;
- }
- } else
- screen->bellarmed =
- screen->cur_col < col ? screen->cur_row : -1;
- } else if (screen->cur_col < col)
- screen->bellarmed = screen->cur_row;
- }
-}
-
-/* returns true if the key is on the editing keypad */
-static Bool
-IsEditFunctionKey(KeySym keysym)
-{
- switch (keysym) {
- case XK_Prior:
- case XK_Next:
- case XK_Insert:
- case XK_Find:
- case XK_Select:
-#ifdef DXK_Remove
- case DXK_Remove:
-#endif
-#ifdef XK_KP_Delete
- case XK_KP_Delete:
- case XK_KP_Insert:
-#endif
-#ifdef XK_ISO_Left_Tab
- case XK_ISO_Left_Tab:
-#endif
- return True;
- default:
- return False;
- }
-}
-
-#if OPT_SUNPC_KBD
-/*
- * If we have told xterm that our keyboard is really a Sun/PC keyboard, this is
- * enough to make a reasonable approximation to DEC vt220 numeric and editing
- * keypads.
- */
-static KeySym
-TranslateFromSUNPC(KeySym keysym)
-{
- /* *INDENT-OFF* */
- static struct {
- KeySym before, after;
- } table[] = {
-#ifdef DXK_Remove
- { XK_Delete, DXK_Remove },
-#endif
- { XK_Home, XK_Find },
- { XK_End, XK_Select },
-#ifdef XK_KP_Home
- { XK_Delete, XK_KP_Decimal },
- { XK_KP_Delete, XK_KP_Decimal },
- { XK_KP_Insert, XK_KP_0 },
- { XK_KP_End, XK_KP_1 },
- { XK_KP_Down, XK_KP_2 },
- { XK_KP_Next, XK_KP_3 },
- { XK_KP_Left, XK_KP_4 },
- { XK_KP_Begin, XK_KP_5 },
- { XK_KP_Right, XK_KP_6 },
- { XK_KP_Home, XK_KP_7 },
- { XK_KP_Up, XK_KP_8 },
- { XK_KP_Prior, XK_KP_9 },
-#endif
- };
- /* *INDENT-ON* */
-
- unsigned n;
-
- for (n = 0; n < sizeof(table) / sizeof(table[0]); n++) {
- if (table[n].before == keysym) {
- TRACE(("...Input keypad before was " KEYSYM_FMT "\n", keysym));
- keysym = table[n].after;
- TRACE(("...Input keypad changed to " KEYSYM_FMT "\n", keysym));
- break;
- }
- }
- return keysym;
-}
-#endif
-
-/*
- * Modifiers other than shift, control and numlock should be reserved for the
- * user. We use the first two explicitly to support VT220 keyboard, and the
- * third is used implicitly in keyboard configuration to make the keypad work.
- */
-#define isModified(event) \
- (event->state & \
- (Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask ))
-
-#define VT52_KEYPAD \
- if_OPT_VT52_MODE(screen,{ \
- reply.a_type = ESC; \
- reply.a_pintro = '?'; \
- })
-
-#define VT52_CURSOR_KEYS \
- if_OPT_VT52_MODE(screen,{ \
- reply.a_type = ESC; \
- })
-
-#define APPEND_PARM(number) \
- reply.a_param[(int) reply.a_nparam] = number, \
- reply.a_nparam += 1
-
-#if OPT_MOD_FKEYS
-#define MODIFIER_PARM \
- if (modify_parm > 1) APPEND_PARM(modify_parm)
-#else
-#define MODIFIER_PARM /*nothing */
-#endif
-
-/*
- * Determine if we use the \E[3~ sequence for Delete, or the legacy ^?. We
- * maintain the delete_is_del value as 3 states: unspecified(2), true and
- * false. If unspecified, it is handled differently according to whether the
- * legacy keyboard support is enabled, or if xterm emulates a VT220.
- *
- * Once the user (or application) has specified delete_is_del via resource
- * setting, popup menu or escape sequence, it overrides the keyboard type
- * rather than the reverse.
- */
-Bool
-xtermDeleteIsDEL(void)
-{
- TScreen *screen = &term->screen;
- Bool result = True;
-
- if (term->keyboard.type == keyboardIsDefault
- || term->keyboard.type == keyboardIsVT220)
- result = (screen->delete_is_del == True);
-
- if (term->keyboard.type == keyboardIsLegacy)
- result = (screen->delete_is_del != False);
-
- TRACE(("xtermDeleteIsDEL(%d/%d) = %d\n",
- term->keyboard.type,
- screen->delete_is_del,
- result));
-
- return result;
-}
-
-void
-Input(TKeyboard * keyboard,
- TScreen * screen,
- XKeyEvent * event,
- Bool eightbit)
-{
-
-#define STRBUFSIZE 500
-
- char strbuf[STRBUFSIZE];
- Char *string;
- int key = False;
- int pty = screen->respond;
- int nbytes;
- KeySym keysym = 0;
- ANSI reply;
- int dec_code;
- short modify_parm = 0;
- int keypad_mode = ((keyboard->flags & MODE_DECKPAM) != 0);
-
- /* Ignore characters typed at the keyboard */
- if (keyboard->flags & MODE_KAM)
- return;
-
-#if OPT_TCAP_QUERY
- if (screen->tc_query >= 0) {
- keysym = screen->tc_query;
- if (keysym != XK_BackSpace) {
- nbytes = 0;
- strbuf[0] = 0;
- } else {
- nbytes = 1;
- strbuf[0] = 8;
- }
- } else
-#endif
-#if OPT_I18N_SUPPORT
- if (screen->xic) {
- Status status_return;
-#if OPT_WIDE_CHARS
- if (screen->utf8_mode)
- nbytes = Xutf8LookupString(screen->xic, event,
- strbuf, sizeof(strbuf),
- &keysym, &status_return);
- else
-#endif
- nbytes = XmbLookupString(screen->xic, event,
- strbuf, sizeof(strbuf),
- &keysym, &status_return);
- } else
-#endif
- {
- static XComposeStatus compose_status =
- {NULL, 0};
- nbytes = XLookupString(event, strbuf, sizeof(strbuf),
- &keysym, &compose_status);
- }
-
- string = (Char *) & strbuf[0];
- reply.a_pintro = 0;
- reply.a_final = 0;
- reply.a_nparam = 0;
- reply.a_inters = 0;
-
- TRACE(("Input keysym "
- KEYSYM_FMT
- ", %d:'%.*s'%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
- keysym,
- nbytes,
- nbytes > 0 ? nbytes : 1,
- nbytes > 0 ? strbuf : "",
- ModifierName(event->state & ShiftMask),
- ModifierName(event->state & LockMask),
- ModifierName(event->state & ControlMask),
- ModifierName(event->state & Mod1Mask),
- ModifierName(event->state & Mod2Mask),
- ModifierName(event->state & Mod3Mask),
- ModifierName(event->state & Mod4Mask),
- ModifierName(event->state & Mod5Mask),
- eightbit ? " 8bit" : " 7bit",
- IsKeypadKey(keysym) ? " KeypadKey" : "",
- IsCursorKey(keysym) ? " CursorKey" : "",
- IsPFKey(keysym) ? " PFKey" : "",
- IsFunctionKey(keysym) ? " FKey" : "",
- IsMiscFunctionKey(keysym) ? " MiscFKey" : "",
- IsEditFunctionKey(keysym) ? " EditFkey" : ""));
-
-#if OPT_SUNPC_KBD
- /*
- * DEC keyboards don't have keypad(+), but do have keypad(,) instead.
- * Other (Sun, PC) keyboards commonly have keypad(+), but no keypad(,)
- * - it's a pain for users to work around.
- */
- if (keyboard->type == keyboardIsVT220
- && (event->state & ShiftMask) == 0) {
- if (keysym == XK_KP_Add) {
- keysym = XK_KP_Separator;
- TRACE(("...Input keypad(+), change keysym to "
- KEYSYM_FMT
- "\n",
- keysym));
- }
- if ((event->state & ControlMask) != 0
- && keysym == XK_KP_Separator) {
- keysym = XK_KP_Subtract;
- TRACE(("...Input control/keypad(,), change keysym to "
- KEYSYM_FMT
- "\n",
- keysym));
- }
- }
-#endif
-
- /*
- * The keyboard tables may give us different keypad codes according to
- * whether NumLock is pressed. Use this check to simplify the process
- * of determining whether we generate an escape sequence for a keypad
- * key, or force it to the value kypd_num[]. There is no fixed
- * modifier for this feature, so we assume that it is the one assigned
- * to the NumLock key.
- *
- * This check used to try to return the contents of strbuf, but that
- * does not work properly when a control modifier is given (trash is
- * returned in the buffer in some cases -- perhaps an X bug).
- */
-#if OPT_NUM_LOCK
- if (nbytes == 1
- && IsKeypadKey(keysym)
- && term->misc.real_NumLock
- && (term->misc.num_lock & event->state) != 0) {
- keypad_mode = 0;
- TRACE(("...Input num_lock, force keypad_mode off\n"));
- }
-#endif
-
-#if OPT_MOD_FKEYS
- /*
- * If we are in the normal (possibly Sun/PC) keyboard state, allow
- * modifiers to add a parameter to the function-key control sequences.
- */
- if (event->state != 0
- && !(IsKeypadKey(keysym) && keypad_mode)
-#if OPT_SUNPC_KBD
- && keyboard->type != keyboardIsVT220
-#endif
-#if OPT_VT52_MODE
- && screen->vtXX_level != 0
-#endif
- ) {
-/*
-* Modifier codes:
-* None 1
-* Shift 2 = 1(None)+1(Shift)
-* Alt 3 = 1(None)+2(Alt)
-* Alt+Shift 4 = 1(None)+1(Shift)+2(Alt)
-* Ctrl 5 = 1(None)+4(Ctrl)
-* Ctrl+Shift 6 = 1(None)+1(Shift)+4(Ctrl)
-* Ctrl+Alt 7 = 1(None)+2(Alt)+4(Ctrl)
-* Ctrl+Alt+Shift 8 = 1(None)+1(Shift)+2(Alt)+4(Ctrl)
-* Meta 9 = 1(None)+8(Meta)
-* Meta+Shift 10 = 1(None)+8(Meta)+1(Shift)
-* Meta+Alt 11 = 1(None)+8(Meta)+2(Alt)
-* Meta+Alt+Shift 12 = 1(None)+8(Meta)+1(Shift)+2(Alt)
-* Meta+Ctrl 13 = 1(None)+8(Meta)+4(Ctrl)
-* Meta+Ctrl+Shift 14 = 1(None)+8(Meta)+1(Shift)+4(Ctrl)
-* Meta+Ctrl+Alt 15 = 1(None)+8(Meta)+2(Alt)+4(Ctrl)
-* Meta+Ctrl+Alt+Shift 16 = 1(None)+8(Meta)+1(Shift)+2(Alt)+4(Ctrl)
-*/
-#define UNMOD 1
-#define SHIFT 1
-#define ALT 2
-#define CTRL 4
-#define META 8
- modify_parm = UNMOD;
- if (event->state & ShiftMask) {
- modify_parm += SHIFT;
- }
- if (event->state & ControlMask) {
- modify_parm += CTRL;
- }
-#if OPT_NUM_LOCK
- if ((term->misc.alwaysUseMods
- || term->misc.real_NumLock)
- && ((event->state & term->misc.alt_left) != 0
- || (event->state & term->misc.alt_right)) != 0) {
- modify_parm += ALT;
- }
- if (term->misc.alwaysUseMods
- && ((event->state & term->misc.meta_left) != 0
- || (event->state & term->misc.meta_right)) != 0) {
- modify_parm += META;
- }
-#endif
- TRACE(("...ModifierParm %d\n", modify_parm));
- }
-#endif /* OPT_MOD_FKEYS */
-
- /* VT300 & up: backarrow toggle */
- if ((nbytes == 1)
- && (((keyboard->flags & MODE_DECBKM) == 0)
- ^ ((event->state & ControlMask) != 0))
- && (keysym == XK_BackSpace)) {
- strbuf[0] = '\177';
- TRACE(("...Input backarrow changed to %d\n", *strbuf));
- }
-#if OPT_SUNPC_KBD
- /* make an DEC editing-keypad from a Sun or PC editing-keypad */
- if (keyboard->type == keyboardIsVT220
- && (keysym != XK_Delete || !xtermDeleteIsDEL()))
- keysym = TranslateFromSUNPC(keysym);
- else
-#endif
- {
-#ifdef XK_KP_Home
- if (keysym >= XK_KP_Home && keysym <= XK_KP_Begin) {
- TRACE(("...Input keypad before was " KEYSYM_FMT "\n", keysym));
- keysym += XK_Home - XK_KP_Home;
- TRACE(("...Input keypad changed to " KEYSYM_FMT "\n", keysym));
- }
-#endif
- }
-
-#if OPT_HP_FUNC_KEYS
- if (keyboard->type == keyboardIsHP
- && (reply.a_final = hpfuncvalue(keysym)) != 0) {
- reply.a_type = ESC;
- MODIFIER_PARM;
- unparseseq(&reply, pty);
- } else
-#endif
-#if OPT_SCO_FUNC_KEYS
- if (keyboard->type == keyboardIsSCO
- && (reply.a_final = scofuncvalue(keysym)) != 0) {
- reply.a_type = CSI;
- MODIFIER_PARM;
- unparseseq(&reply, pty);
- } else
-#endif
- if (IsPFKey(keysym)) {
- reply.a_type = SS3;
- reply.a_final = keysym - XK_KP_F1 + 'P';
- VT52_CURSOR_KEYS;
- MODIFIER_PARM;
- unparseseq(&reply, pty);
- key = True;
-#if 0 /* OPT_SUNPC_KBD should suppress - but only for vt220 compatibility */
- } else if (keyboard->type == keyboardIsVT220
- && screen->vtXX_level <= 1
- && IsEditFunctionKey(keysym)) {
- key = False; /* ignore editing-keypad in vt100 mode */
-#endif
- } else if (IsCursorKey(keysym) &&
- keysym != XK_Prior && keysym != XK_Next) {
- if (keyboard->flags & MODE_DECCKM) {
- reply.a_type = SS3;
- } else {
- reply.a_type = CSI;
- }
-#if OPT_MOD_FKEYS
- if (modify_parm > 1) {
- if (keyboard->modify_cursor_keys)
- reply.a_type = CSI; /* SS3 should not have params */
- if (keyboard->modify_cursor_keys > 1)
- APPEND_PARM(1); /* force modifier to 2nd param */
- if (keyboard->modify_cursor_keys > 2)
- reply.a_pintro = '>'; /* mark this as "private" */
- }
-#endif
- reply.a_final = curfinal[keysym - XK_Home];
- VT52_CURSOR_KEYS;
- MODIFIER_PARM;
- unparseseq(&reply, pty);
- key = True;
- } else if (IsFunctionKey(keysym)
- || IsMiscFunctionKey(keysym)
- || IsEditFunctionKey(keysym)
-#ifdef SunXK_F36
- || keysym == SunXK_F36
- || keysym == SunXK_F37
-#endif
- || (keysym == XK_Delete
- && ((modify_parm > 1)
- || !xtermDeleteIsDEL()))) {
-#if OPT_SUNPC_KBD
- if (keyboard->type == keyboardIsVT220) {
- if ((event->state & ControlMask)
- && (keysym >= XK_F1 && keysym <= XK_F12))
- keysym += term->misc.ctrl_fkeys;
- }
-#endif
-
- dec_code = decfuncvalue(keysym);
- if ((event->state & ShiftMask)
-#if OPT_SUNPC_KBD
- && keyboard->type == keyboardIsVT220
-#endif
- && ((string = (Char *) udk_lookup(dec_code, &nbytes)) != 0)) {
- while (nbytes-- > 0)
- unparseputc(*string++, pty);
- }
-#if OPT_VT52_MODE
- /*
- * Interpret F1-F4 as PF1-PF4 for VT52, VT100
- */
- else if (keyboard->type != keyboardIsSun
- && keyboard->type != keyboardIsLegacy
- && (dec_code >= 11 && dec_code <= 14)) {
- reply.a_type = SS3;
- VT52_CURSOR_KEYS;
- reply.a_final = A2E(dec_code - 11 + E2A('P'));
- MODIFIER_PARM;
- unparseseq(&reply, pty);
- }
-#endif
- else {
- reply.a_type = CSI;
- reply.a_nparam = 1;
- reply.a_final = 0;
- MODIFIER_PARM;
- if (keyboard->type == keyboardIsSun) {
- reply.a_param[0] = sunfuncvalue(keysym);
- reply.a_final = 'z';
-#ifdef XK_ISO_Left_Tab
- } else if (keysym == XK_ISO_Left_Tab) {
- reply.a_nparam = 0;
- reply.a_final = 'Z';
-#endif
- } else {
- reply.a_param[0] = dec_code;
- reply.a_final = '~';
- }
- if (reply.a_final != 0
- && (reply.a_nparam == 0 || reply.a_param[0] >= 0))
- unparseseq(&reply, pty);
- }
- key = True;
- } else if (IsKeypadKey(keysym)) {
- if (keypad_mode) {
- reply.a_type = SS3;
- reply.a_final = kypd_apl[keysym - XK_KP_Space];
- VT52_KEYPAD;
- MODIFIER_PARM;
- unparseseq(&reply, pty);
- } else {
- unparseputc(kypd_num[keysym - XK_KP_Space], pty);
- }
- key = True;
- } else if (nbytes > 0) {
-#if OPT_TEK4014
- if (screen->TekGIN) {
- TekEnqMouse(*string++);
- TekGINoff();
- nbytes--;
- }
-#endif
- if (nbytes == 1) {
-#if OPT_NUM_LOCK
- /*
- * Send ESC if we have a META modifier and
- * metaSendsEcape is true. Like eightBitInput, except
- * that it is not associated with terminal settings.
- */
- if (screen->meta_sends_esc
- && ((event->state & term->misc.meta_left) != 0
- || (event->state & term->misc.meta_right) != 0)) {
- TRACE(("...input-char is modified by META\n"));
- eightbit = False;
- unparseputc(ESC, pty); /* escape */
- }
-#endif
- if (eightbit && screen->input_eight_bits) {
- IChar ch = CharOf(*string);
- if (ch < 128) {
- *string |= 0x80;
- TRACE(("...input shift from %d to %d (%#x to %#x)\n",
- ch, CharOf(*string),
- ch, CharOf(*string)));
-#if OPT_WIDE_CHARS
- if (screen->utf8_mode) {
- /*
- * We could interpret the incoming code as "in the
- * current locale", but it's simpler to treat it as
- * a Unicode value to translate to UTF-8.
- */
- ch = CharOf(*string);
- nbytes = 2;
- string[0] = 0xc0 | ((ch >> 6) & 0x3);
- string[1] = 0x80 | (ch & 0x3f);
- TRACE(("...encoded %#x in UTF-8 as %#x,%#x\n",
- ch, string[0], string[1]));
- }
-#endif
- }
- eightbit = False;
- }
- /* VT220 & up: National Replacement Characters */
- if ((term->flags & NATIONAL) != 0) {
- int cmp = xtermCharSetIn(CharOf(*string),
- screen->keyboard_dialect[0]);
- TRACE(("...input NRC %d, %s %d\n",
- CharOf(*string),
- (CharOf(*string) == cmp)
- ? "unchanged"
- : "changed to",
- CharOf(cmp)));
- *string = cmp;
- } else if (eightbit) {
- unparseputc(ESC, pty); /* escape */
- } else if (*string == '?'
- && (event->state & ControlMask) != 0) {
- *string = 127;
- }
- }
- while (nbytes-- > 0)
- unparseputc(*string++, pty);
- key = True;
- }
- if (key && !TEK4014_ACTIVE(screen))
- AdjustAfterInput(screen);
-#ifdef ENABLE_PRINT
- if (keysym == XK_F2)
- TekPrint();
-#endif
- return;
-}
-
-void
-StringInput(TScreen * screen, Char * string, size_t nbytes)
-{
- int pty = screen->respond;
-
- TRACE(("InputString (%s,%d)\n",
- visibleChars(PAIRED_CHARS(string, 0), nbytes),
- nbytes));
-#if OPT_TEK4014
- if (nbytes && screen->TekGIN) {
- TekEnqMouse(*string++);
- TekGINoff();
- nbytes--;
- }
-#endif
- while (nbytes-- != 0)
- unparseputc(*string++, pty);
- if (!TEK4014_ACTIVE(screen))
- AdjustAfterInput(screen);
-}
-
-/* These definitions are DEC-style (e.g., vt320) */
-static int
-decfuncvalue(KeySym keycode)
-{
- switch (keycode) {
- MAP(XK_F1, 11);
- MAP(XK_F2, 12);
- MAP(XK_F3, 13);
- MAP(XK_F4, 14);
- MAP(XK_F5, 15);
- MAP(XK_F6, 17);
- MAP(XK_F7, 18);
- MAP(XK_F8, 19);
- MAP(XK_F9, 20);
- MAP(XK_F10, 21);
- MAP(XK_F11, 23);
- MAP(XK_F12, 24);
- MAP(XK_F13, 25);
- MAP(XK_F14, 26);
- MAP(XK_F15, 28);
- MAP(XK_Help, 28);
- MAP(XK_F16, 29);
- MAP(XK_Menu, 29);
- MAP(XK_F17, 31);
- MAP(XK_F18, 32);
- MAP(XK_F19, 33);
- MAP(XK_F20, 34);
-#if defined(XK_F21)
- MAP(XK_F21, 42);
- MAP(XK_F22, 43);
- MAP(XK_F23, 44);
- MAP(XK_F24, 45);
- MAP(XK_F25, 46);
- MAP(XK_F26, 47);
- MAP(XK_F27, 48);
- MAP(XK_F28, 49);
- MAP(XK_F29, 50);
- MAP(XK_F30, 51);
- MAP(XK_F31, 52);
- MAP(XK_F32, 53);
- MAP(XK_F33, 54);
- MAP(XK_F34, 55);
- MAP(XK_F35, 56);
-#endif
-#ifdef SunXK_F36
- MAP(SunXK_F36, 57);
- MAP(SunXK_F37, 58);
-#endif
- MAP(XK_Find, 1);
- MAP(XK_Insert, 2);
- MAP(XK_Delete, 3);
-#ifdef XK_KP_Insert
- MAP(XK_KP_Insert, 2);
- MAP(XK_KP_Delete, 3);
-#endif
-#ifdef DXK_Remove
- MAP(DXK_Remove, 3);
-#endif
- MAP(XK_Select, 4);
- MAP(XK_Prior, 5);
- MAP(XK_Next, 6);
-#ifdef XK_ISO_Left_Tab
- MAP(XK_ISO_Left_Tab, 'Z');
-#endif
- default:
- return (-1);
- }
-}
-
-#if OPT_HP_FUNC_KEYS
-static int
-hpfuncvalue(KeySym keycode)
-{
- switch (keycode) {
- MAP(XK_Up, 'A');
- MAP(XK_Down, 'B');
- MAP(XK_Right, 'C');
- MAP(XK_Left, 'D');
- MAP(XK_End, 'F');
- MAP(XK_Clear, 'J');
- MAP(XK_Delete, 'P');
- MAP(XK_Insert, 'Q');
- MAP(XK_Next, 'S');
- MAP(XK_Prior, 'T');
- MAP(XK_Home, 'h');
- MAP(XK_F1, 'p');
- MAP(XK_F2, 'q');
- MAP(XK_F3, 'r');
- MAP(XK_F4, 's');
- MAP(XK_F5, 't');
- MAP(XK_F6, 'u');
- MAP(XK_F7, 'v');
- MAP(XK_F8, 'w');
-#ifdef XK_KP_Insert
- MAP(XK_KP_Delete, 'P');
- MAP(XK_KP_Insert, 'Q');
-#endif
-#ifdef DXK_Remove
- MAP(DXK_Remove, 'P');
-#endif
- MAP(XK_Select, 'F');
- MAP(XK_Find, 'h');
- default:
- return 0;
- }
-}
-#endif
-
-#if OPT_SCO_FUNC_KEYS
-static int
-scofuncvalue(KeySym keycode)
-{
- switch (keycode) {
- MAP(XK_Up, 'A');
- MAP(XK_Down, 'B');
- MAP(XK_Right, 'C');
- MAP(XK_Left, 'D');
- MAP(XK_End, 'F');
- MAP(XK_Insert, 'L');
- MAP(XK_Next, 'G');
- MAP(XK_Prior, 'I');
- MAP(XK_Home, 'H');
- MAP(XK_F1, 'M');
- MAP(XK_F2, 'N');
- MAP(XK_F3, 'O');
- MAP(XK_F4, 'P');
- MAP(XK_F5, 'Q');
- MAP(XK_F6, 'R');
- MAP(XK_F7, 'S');
- MAP(XK_F8, 'T');
- MAP(XK_F9, 'U');
- MAP(XK_F10, 'V');
- MAP(XK_F11, 'W');
- MAP(XK_F12, 'X');
- MAP(XK_F13, 'Y');
- MAP(XK_F15, 'a');
- MAP(XK_F16, 'b');
- MAP(XK_F17, 'c');
- MAP(XK_F18, 'd');
- MAP(XK_F19, 'e');
- MAP(XK_F20, 'f');
-#if defined(XK_F21)
- MAP(XK_F21, 'g');
- MAP(XK_F22, 'h');
- MAP(XK_F23, 'i');
- MAP(XK_F24, 'j');
- MAP(XK_F25, 'k');
- MAP(XK_F26, 'l');
- MAP(XK_F27, 'm');
- MAP(XK_F28, 'n');
- MAP(XK_F29, 'o');
- MAP(XK_F30, 'p');
- MAP(XK_F31, 'q');
- MAP(XK_F32, 'r');
- MAP(XK_F33, 's');
- MAP(XK_F34, 't');
- MAP(XK_F35, 'u');
-#endif
-#ifdef XK_KP_Insert
- MAP(XK_KP_Insert, 'L');
-#endif
- default:
- return 0;
- }
-}
-#endif
-
-static int
-sunfuncvalue(KeySym keycode)
-{
- switch (keycode) {
- MAP(XK_F1, 224);
- MAP(XK_F2, 225);
- MAP(XK_F3, 226);
- MAP(XK_F4, 227);
- MAP(XK_F5, 228);
- MAP(XK_F6, 229);
- MAP(XK_F7, 230);
- MAP(XK_F8, 231);
- MAP(XK_F9, 232);
- MAP(XK_F10, 233);
- MAP(XK_F11, 192);
- MAP(XK_F12, 193);
- MAP(XK_F13, 194);
- MAP(XK_F14, 195); /* kund */
- MAP(XK_F15, 196);
- MAP(XK_Help, 196); /* khlp */
- MAP(XK_F16, 197); /* kcpy */
- MAP(XK_Menu, 197);
- MAP(XK_F17, 198);
- MAP(XK_F18, 199);
- MAP(XK_F19, 200); /* kfnd */
- MAP(XK_F20, 201);
-
- MAP(XK_R1, 208); /* kf31 */
- MAP(XK_R2, 209); /* kf32 */
- MAP(XK_R3, 210); /* kf33 */
- MAP(XK_R4, 211); /* kf34 */
- MAP(XK_R5, 212); /* kf35 */
- MAP(XK_R6, 213); /* kf36 */
- MAP(XK_R7, 214); /* kf37 */
- MAP(XK_R8, 215); /* kf38 */
- MAP(XK_R9, 216); /* kf39=kpp */
- MAP(XK_R10, 217); /* kf40 */
- MAP(XK_R11, 218); /* kf41=kb2 */
- MAP(XK_R12, 219); /* kf42 */
- MAP(XK_R13, 220); /* kf43=kend */
- MAP(XK_R14, 221); /* kf44 */
- MAP(XK_R15, 222); /* kf45 */
-#ifdef SunXK_F36
- MAP(SunXK_F36, 234);
- MAP(SunXK_F37, 235);
-#endif
-
- MAP(XK_Find, 1);
- MAP(XK_Insert, 2); /* kich1 */
- MAP(XK_Delete, 3);
-#ifdef XK_KP_Insert
- MAP(XK_KP_Insert, 2);
- MAP(XK_KP_Delete, 3);
-#endif
-#ifdef DXK_Remove
- MAP(DXK_Remove, 3);
-#endif
- MAP(XK_Select, 4);
- MAP(XK_Prior, 5);
- MAP(XK_Next, 6);
- default:
- return (-1);
- }
-}
-
-#if OPT_NUM_LOCK
-/*
- * Note that this can only retrieve translations that are given as resource
- * values; the default translations in charproc.c for example are not
- * retrievable by any interface to X.
- *
- * Also: We can retrieve only the most-specified translation resource. For
- * example, if the resource file specifies both "*translations" and
- * "XTerm*translations", we see only the latter.
- */
-static Bool
-TranslationsUseKeyword(Widget w, const char *keyword)
-{
- static String data;
- static XtResource key_resources[] =
- {
- {XtNtranslations, XtCTranslations, XtRString,
- sizeof(data), 0, XtRString, (XtPointer) NULL}
- };
- Bool result = False;
-
- XtGetSubresources(w,
- (XtPointer) &data,
- "vt100",
- "VT100",
- key_resources,
- XtNumber(key_resources),
- NULL,
- (Cardinal) 0);
-
- if (data != 0) {
- char *p = data;
- int state = 0;
- int now = ' ', prv;
- TRACE(("TranslationsUseKeyword(%p):%s\n", w, p));
- while (*p != 0) {
- prv = now;
- now = char2lower(*p++);
- if (now == ':'
- || now == '!') {
- state = -1;
- } else if (now == '\n') {
- state = 0;
- } else if (state >= 0) {
- if (isgraph(now)
- && now == keyword[state]) {
- if ((state != 0
- || !isalnum(prv))
- && ((keyword[++state] == 0)
- && !isalnum(CharOf(*p)))) {
- result = True;
- break;
- }
- } else {
- state = 0;
- }
- }
- }
- }
- TRACE(("TranslationsUseKeyword(%p, %s) = %d\n", w, keyword, result));
- return result;
-}
-
-#define SaveMask(name) term->misc.name |= mask;\
- TRACE(("%s mask %#lx is%s modifier\n", \
- #name, \
- term->misc.name, \
- ModifierName(term->misc.name)));
-/*
- * Determine which modifier mask (if any) applies to the Num_Lock keysym.
- *
- * Also, determine which modifiers are associated with the ALT keys, so we can
- * send that information as a parameter for special keys in Sun/PC keyboard
- * mode. However, if the ALT modifier is used in translations, we do not want
- * to confuse things by sending the parameter.
- */
-void
-VTInitModifiers(void)
-{
- int i, j, k;
- Display *dpy = XtDisplay(term);
- XModifierKeymap *keymap = XGetModifierMapping(dpy);
- unsigned long mask;
- int min_keycode, max_keycode, keysyms_per_keycode = 0;
-
- if (keymap != 0) {
- KeySym *theMap;
-
- TRACE(("VTInitModifiers\n"));
-
- XDisplayKeycodes(dpy, &min_keycode, &max_keycode);
- theMap = XGetKeyboardMapping(dpy,
- min_keycode,
- (max_keycode - min_keycode + 1),
- &keysyms_per_keycode);
-
- if (theMap != 0) {
- for (i = k = 0, mask = 1; i < 8; i++, mask <<= 1) {
- for (j = 0; j < keymap->max_keypermod; j++) {
- KeyCode code = keymap->modifiermap[k];
- if (code != 0) {
- KeySym keysym;
- int l = 0;
- do {
- keysym = XKeycodeToKeysym(dpy, code, l);
- l++;
- } while (!keysym && l < keysyms_per_keycode);
- if (keysym == XK_Num_Lock) {
- SaveMask(num_lock);
- } else if (keysym == XK_Alt_L) {
- SaveMask(alt_left);
- } else if (keysym == XK_Alt_R) {
- SaveMask(alt_right);
- } else if (keysym == XK_Meta_L) {
- SaveMask(meta_left);
- } else if (keysym == XK_Meta_R) {
- SaveMask(meta_right);
- }
- }
- k++;
- }
- }
- XFree(theMap);
- }
-
- /* Don't disable any mods if "alwaysUseMods" is true. */
- if (!term->misc.alwaysUseMods) {
- /*
- * If the Alt modifier is used in translations, we would rather not
- * use it to modify function-keys when NumLock is active.
- */
- if ((term->misc.alt_left != 0
- || term->misc.alt_right != 0)
- && (TranslationsUseKeyword(toplevel, "alt")
- || TranslationsUseKeyword((Widget) term, "alt"))) {
- TRACE(("ALT is used as a modifier in translations (ignore mask)\n"));
- term->misc.alt_left = 0;
- term->misc.alt_right = 0;
- }
-
- /*
- * If the Meta modifier is used in translations, we would rather not
- * use it to modify function-keys.
- */
- if ((term->misc.meta_left != 0
- || term->misc.meta_right != 0)
- && (TranslationsUseKeyword(toplevel, "meta")
- || TranslationsUseKeyword((Widget) term, "meta"))) {
- TRACE(("META is used as a modifier in translations\n"));
- term->misc.meta_trans = True;
- }
- }
-
- XFreeModifiermap(keymap);
- }
-}
-#endif /* OPT_NUM_LOCK */
-
-#if OPT_TCAP_QUERY
-static int
-hex2int(int c)
-{
- if (c >= '0' && c <= '9')
- return c - '0';
- if (c >= 'a' && c <= 'f')
- return c - 'a' + 10;
- if (c >= 'A' && c <= 'F')
- return c - 'A' + 10;
- return -1;
-}
-
-/*
- * Parse the termcap/terminfo name from the string, returning a positive number
- * (the keysym) if found, otherwise -1. Update the string pointer.
- * Returns the (shift, control) state in *state.
- */
-int
-xtermcapKeycode(char **params, unsigned *state)
-{
- /* *INDENT-OFF* */
-#define DATA(tc,ti,x,y) { tc, ti, x, y }
- static struct {
- char *tc;
- char *ti;
- int code;
- unsigned state;
- } table[] = {
- /* tcap terminfo keycode masks */
- DATA( "#2", "kHOM", XK_Home, ShiftMask ),
- DATA( "#4", "kLFT", XK_Left, ShiftMask ),
- DATA( "%1", "khlp", XK_Help, 0 ),
- DATA( "%i", "kRIT", XK_Right, ShiftMask ),
- DATA( "*6", "kslt", XK_Select, 0 ),
- DATA( "*7", "kEND", XK_End, ShiftMask ),
- DATA( "@0", "kfnd", XK_Find, 0 ),
- DATA( "@7", "kend", XK_End, 0 ),
- DATA( "F1", "kf11", XK_F11, 0 ),
- DATA( "F2", "kf12", XK_F12, 0 ),
- DATA( "F3", "kf13", XK_F13, 0 ),
- DATA( "F4", "kf14", XK_F14, 0 ),
- DATA( "F5", "kf15", XK_F15, 0 ),
- DATA( "F6", "kf16", XK_F16, 0 ),
- DATA( "F7", "kf17", XK_F17, 0 ),
- DATA( "F8", "kf18", XK_F18, 0 ),
- DATA( "F9", "kf19", XK_F19, 0 ),
- DATA( "FA", "kf20", XK_F20, 0 ),
- DATA( "FB", "kf21", XK_F21, 0 ),
- DATA( "FC", "kf22", XK_F22, 0 ),
- DATA( "FD", "kf23", XK_F23, 0 ),
- DATA( "FE", "kf24", XK_F24, 0 ),
- DATA( "FF", "kf25", XK_F25, 0 ),
- DATA( "FG", "kf26", XK_F26, 0 ),
- DATA( "FH", "kf27", XK_F27, 0 ),
- DATA( "FI", "kf28", XK_F28, 0 ),
- DATA( "FJ", "kf29", XK_F29, 0 ),
- DATA( "FK", "kf30", XK_F30, 0 ),
- DATA( "FL", "kf31", XK_F31, 0 ),
- DATA( "FM", "kf32", XK_F32, 0 ),
- DATA( "FN", "kf33", XK_F33, 0 ),
- DATA( "FO", "kf34", XK_F34, 0 ),
- DATA( "FP", "kf35", XK_F35, 0 ),
-#ifdef SunXK_F36
- DATA( "FQ", "kf36", SunXK_F36, 0 ),
- DATA( "FR", "kf37", SunXK_F37, 0 ),
-#endif
- DATA( "K1", "ka1", XK_KP_Home, 0 ),
- DATA( "K4", "kc1", XK_KP_End, 0 ),
- DATA( "k1", "kf1", XK_F1, 0 ),
- DATA( "k2", "kf2", XK_F2, 0 ),
- DATA( "k3", "kf3", XK_F3, 0 ),
- DATA( "k4", "kf4", XK_F4, 0 ),
- DATA( "k5", "kf5", XK_F5, 0 ),
- DATA( "k6", "kf6", XK_F6, 0 ),
- DATA( "k7", "kf7", XK_F7, 0 ),
- DATA( "k8", "kf8", XK_F8, 0 ),
- DATA( "k9", "kf9", XK_F9, 0 ),
- DATA( "k;", "kf10", XK_F10, 0 ),
-#ifdef XK_ISO_Left_Tab
- DATA( "kB", "kcbt", XK_ISO_Left_Tab, 0 ),
-#endif
- DATA( "kC", "kclr", XK_Clear, 0 ),
- DATA( "kD", "kdch1", XK_Delete, 0 ),
- DATA( "kI", "kich1", XK_Insert, 0 ),
- DATA( "kN", "knp", XK_Next, 0 ),
- DATA( "kP", "kpp", XK_Prior, 0 ),
- DATA( "kb", "kbs", XK_BackSpace, 0 ),
- DATA( "kd", "kcud1", XK_Down, 0 ),
- DATA( "kh", "khome", XK_Home, 0 ),
- DATA( "kl", "kcub1", XK_Left, 0 ),
- DATA( "kr", "kcuf1", XK_Right, 0 ),
- DATA( "ku", "kcuu1", XK_Up, 0 ),
-# if OPT_ISO_COLORS
- /* XK_COLORS is a fake code. */
- DATA( "Co", "colors", XK_COLORS, 0 ),
-# endif
- };
- /* *INDENT-ON* */
-
- Cardinal n;
- unsigned len = 0;
- int code = -1;
-#define MAX_TNAME_LEN 6
- char name[MAX_TNAME_LEN + 1];
- char *p;
-
- TRACE(("xtermcapKeycode(%s)\n", *params));
-
- /* Convert hex encoded name to ascii */
- for (p = *params; hex2int(p[0]) >= 0 && hex2int(p[1]) >= 0; p += 2) {
- if (len >= MAX_TNAME_LEN)
- break;
- name[len++] = (hex2int(p[0]) << 4) + hex2int(p[1]);
- }
- name[len] = 0;
- *params = p;
-
- if (*p == 0 || *p == ';') {
- for (n = 0; n < XtNumber(table); n++) {
- if (!strcmp(table[n].ti, name) || !strcmp(table[n].tc, name)) {
- code = table[n].code;
- *state = table[n].state;
- break;
- }
- }
- }
-
- TRACE(("... xtermcapKeycode(%s, %u) -> %#06x\n", name, *state, code));
- return code;
-}
-#endif
diff --git a/nx-X11/programs/xterm/install.sh b/nx-X11/programs/xterm/install.sh
deleted file mode 100644
index 462fa9c3d..000000000
--- a/nx-X11/programs/xterm/install.sh
+++ /dev/null
@@ -1,294 +0,0 @@
-#! /bin/sh
-#
-# install - install a program, script, or datafile
-#
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# 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 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 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
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd=$cpprog
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd=$stripprog
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "$0: no input file specified" >&2
- exit 1
-else
- :
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d "$dst" ]; then
- instcmd=:
- chmodcmd=""
- else
- instcmd=$mkdirprog
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f "$src" ] || [ -d "$src" ]
- then
- :
- else
- echo "$0: $src does not exist" >&2
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "$0: no destination specified" >&2
- exit 1
- else
- :
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d "$dst" ]
- then
- dst=$dst/`basename "$src"`
- else
- :
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
- '
-IFS="${IFS-$defaultIFS}"
-
-oIFS=$IFS
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS=$oIFS
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp=$pathcomp$1
- shift
-
- if [ ! -d "$pathcomp" ] ;
- then
- $mkdirprog "$pathcomp"
- else
- :
- fi
-
- pathcomp=$pathcomp/
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd "$dst" &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename "$dst"`
- else
- dstfile=`basename "$dst" $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename "$dst"`
- else
- :
- fi
-
-# Make a couple of temp file names in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
- rmtmp=$dstdir/#rm.$$#
-
-# Trap to clean up temp files at exit.
-
- trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
- trap '(exit $?); exit' 1 2 13 15
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd "$src" "$dsttmp" &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
-
-# Now remove or move aside any old file at destination location. We try this
-# two ways since rm can't unlink itself on some systems and the destination
-# file might be busy for other reasons. In this case, the final cleanup
-# might fail but the new file should still install successfully.
-
-{
- if [ -f "$dstdir/$dstfile" ]
- then
- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
- $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
- {
- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
- (exit 1); exit
- }
- else
- :
- fi
-} &&
-
-# Now rename the file to the real destination.
-
- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
-
-fi &&
-
-# The final little trick to "correctly" pass the exit status to the exit trap.
-
-{
- (exit 0); exit
-}
diff --git a/nx-X11/programs/xterm/keysym2ucs.c b/nx-X11/programs/xterm/keysym2ucs.c
deleted file mode 100644
index b96d9624b..000000000
--- a/nx-X11/programs/xterm/keysym2ucs.c
+++ /dev/null
@@ -1,857 +0,0 @@
-/* $XFree86: xc/programs/xterm/keysym2ucs.c,v 1.5 2001/06/18 19:09:26 dickey Exp $
- * This module converts keysym values into the corresponding ISO 10646
- * (UCS, Unicode) values.
- *
- * The array keysymtab[] contains pairs of X11 keysym values for graphical
- * characters and the corresponding Unicode value. The function
- * keysym2ucs() maps a keysym onto a Unicode value using a binary search,
- * therefore keysymtab[] must remain SORTED by keysym value.
- *
- * The keysym -> UTF-8 conversion will hopefully one day be provided
- * by Xlib via XmbLookupString() and should ideally not have to be
- * done in X applications. But we are not there yet.
- *
- * We allow to represent any UCS character in the range U-00000000 to
- * U-00FFFFFF by a keysym value in the range 0x01000000 to 0x01ffffff.
- * This admittedly does not cover the entire 31-bit space of UCS, but
- * it does cover all of the characters up to U-10FFFF, which can be
- * represented by UTF-16, and more, and it is very unlikely that higher
- * UCS codes will ever be assigned by ISO. So to get Unicode character
- * U+ABCD you can directly use keysym 0x0100abcd.
- *
- * NOTE: The comments in the table below contain the actual character
- * encoded in UTF-8, so for viewing and editing best use an editor in
- * UTF-8 mode.
- *
- * Author: Markus G. Kuhn <mkuhn@acm.org>, University of Cambridge, April 2001
- *
- * Special thanks to Richard Verhoeven <river@win.tue.nl> for preparing
- * an initial draft of the mapping table.
- *
- * This software is in the public domain. Share and enjoy!
- *
- * AUTOMATICALLY GENERATED FILE, DO NOT EDIT !!! (unicode/convmap.pl)
- */
-
-#ifndef KEYSYM2UCS_INCLUDED
-
-#include "keysym2ucs.h"
-#define VISIBLE /* */
-
-#else
-
-#define VISIBLE static
-
-#endif
-
-static struct codepair {
- unsigned short keysym;
- unsigned short ucs;
-} keysymtab[] = {
- { 0x01a1, 0x0104 }, /* Aogonek Ä„ LATIN CAPITAL LETTER A WITH OGONEK */
- { 0x01a2, 0x02d8 }, /* breve ˘ BREVE */
- { 0x01a3, 0x0141 }, /* Lstroke Å LATIN CAPITAL LETTER L WITH STROKE */
- { 0x01a5, 0x013d }, /* Lcaron Ľ LATIN CAPITAL LETTER L WITH CARON */
- { 0x01a6, 0x015a }, /* Sacute Åš LATIN CAPITAL LETTER S WITH ACUTE */
- { 0x01a9, 0x0160 }, /* Scaron Å  LATIN CAPITAL LETTER S WITH CARON */
- { 0x01aa, 0x015e }, /* Scedilla Åž LATIN CAPITAL LETTER S WITH CEDILLA */
- { 0x01ab, 0x0164 }, /* Tcaron Ť LATIN CAPITAL LETTER T WITH CARON */
- { 0x01ac, 0x0179 }, /* Zacute Ź LATIN CAPITAL LETTER Z WITH ACUTE */
- { 0x01ae, 0x017d }, /* Zcaron Ž LATIN CAPITAL LETTER Z WITH CARON */
- { 0x01af, 0x017b }, /* Zabovedot Å» LATIN CAPITAL LETTER Z WITH DOT ABOVE */
- { 0x01b1, 0x0105 }, /* aogonek Ä… LATIN SMALL LETTER A WITH OGONEK */
- { 0x01b2, 0x02db }, /* ogonek Ë› OGONEK */
- { 0x01b3, 0x0142 }, /* lstroke Å‚ LATIN SMALL LETTER L WITH STROKE */
- { 0x01b5, 0x013e }, /* lcaron ľ LATIN SMALL LETTER L WITH CARON */
- { 0x01b6, 0x015b }, /* sacute Å› LATIN SMALL LETTER S WITH ACUTE */
- { 0x01b7, 0x02c7 }, /* caron ˇ CARON */
- { 0x01b9, 0x0161 }, /* scaron Å¡ LATIN SMALL LETTER S WITH CARON */
- { 0x01ba, 0x015f }, /* scedilla ÅŸ LATIN SMALL LETTER S WITH CEDILLA */
- { 0x01bb, 0x0165 }, /* tcaron ť LATIN SMALL LETTER T WITH CARON */
- { 0x01bc, 0x017a }, /* zacute ź LATIN SMALL LETTER Z WITH ACUTE */
- { 0x01bd, 0x02dd }, /* doubleacute Ë DOUBLE ACUTE ACCENT */
- { 0x01be, 0x017e }, /* zcaron ž LATIN SMALL LETTER Z WITH CARON */
- { 0x01bf, 0x017c }, /* zabovedot ż LATIN SMALL LETTER Z WITH DOT ABOVE */
- { 0x01c0, 0x0154 }, /* Racute Å” LATIN CAPITAL LETTER R WITH ACUTE */
- { 0x01c3, 0x0102 }, /* Abreve Ä‚ LATIN CAPITAL LETTER A WITH BREVE */
- { 0x01c5, 0x0139 }, /* Lacute Ĺ LATIN CAPITAL LETTER L WITH ACUTE */
- { 0x01c6, 0x0106 }, /* Cacute Ć LATIN CAPITAL LETTER C WITH ACUTE */
- { 0x01c8, 0x010c }, /* Ccaron Č LATIN CAPITAL LETTER C WITH CARON */
- { 0x01ca, 0x0118 }, /* Eogonek Ę LATIN CAPITAL LETTER E WITH OGONEK */
- { 0x01cc, 0x011a }, /* Ecaron Äš LATIN CAPITAL LETTER E WITH CARON */
- { 0x01cf, 0x010e }, /* Dcaron ÄŽ LATIN CAPITAL LETTER D WITH CARON */
- { 0x01d0, 0x0110 }, /* Dstroke Ä LATIN CAPITAL LETTER D WITH STROKE */
- { 0x01d1, 0x0143 }, /* Nacute Ń LATIN CAPITAL LETTER N WITH ACUTE */
- { 0x01d2, 0x0147 }, /* Ncaron Ň LATIN CAPITAL LETTER N WITH CARON */
- { 0x01d5, 0x0150 }, /* Odoubleacute Å LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
- { 0x01d8, 0x0158 }, /* Rcaron Ř LATIN CAPITAL LETTER R WITH CARON */
- { 0x01d9, 0x016e }, /* Uring Å® LATIN CAPITAL LETTER U WITH RING ABOVE */
- { 0x01db, 0x0170 }, /* Udoubleacute Å° LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
- { 0x01de, 0x0162 }, /* Tcedilla Ţ LATIN CAPITAL LETTER T WITH CEDILLA */
- { 0x01e0, 0x0155 }, /* racute Å• LATIN SMALL LETTER R WITH ACUTE */
- { 0x01e3, 0x0103 }, /* abreve ă LATIN SMALL LETTER A WITH BREVE */
- { 0x01e5, 0x013a }, /* lacute ĺ LATIN SMALL LETTER L WITH ACUTE */
- { 0x01e6, 0x0107 }, /* cacute ć LATIN SMALL LETTER C WITH ACUTE */
- { 0x01e8, 0x010d }, /* ccaron Ä LATIN SMALL LETTER C WITH CARON */
- { 0x01ea, 0x0119 }, /* eogonek Ä™ LATIN SMALL LETTER E WITH OGONEK */
- { 0x01ec, 0x011b }, /* ecaron Ä› LATIN SMALL LETTER E WITH CARON */
- { 0x01ef, 0x010f }, /* dcaron Ä LATIN SMALL LETTER D WITH CARON */
- { 0x01f0, 0x0111 }, /* dstroke Ä‘ LATIN SMALL LETTER D WITH STROKE */
- { 0x01f1, 0x0144 }, /* nacute Å„ LATIN SMALL LETTER N WITH ACUTE */
- { 0x01f2, 0x0148 }, /* ncaron ň LATIN SMALL LETTER N WITH CARON */
- { 0x01f5, 0x0151 }, /* odoubleacute Å‘ LATIN SMALL LETTER O WITH DOUBLE ACUTE */
- { 0x01f8, 0x0159 }, /* rcaron Å™ LATIN SMALL LETTER R WITH CARON */
- { 0x01f9, 0x016f }, /* uring ů LATIN SMALL LETTER U WITH RING ABOVE */
- { 0x01fb, 0x0171 }, /* udoubleacute ű LATIN SMALL LETTER U WITH DOUBLE ACUTE */
- { 0x01fe, 0x0163 }, /* tcedilla ţ LATIN SMALL LETTER T WITH CEDILLA */
- { 0x01ff, 0x02d9 }, /* abovedot Ë™ DOT ABOVE */
- { 0x02a1, 0x0126 }, /* Hstroke Ħ LATIN CAPITAL LETTER H WITH STROKE */
- { 0x02a6, 0x0124 }, /* Hcircumflex Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
- { 0x02a9, 0x0130 }, /* Iabovedot Ä° LATIN CAPITAL LETTER I WITH DOT ABOVE */
- { 0x02ab, 0x011e }, /* Gbreve Äž LATIN CAPITAL LETTER G WITH BREVE */
- { 0x02ac, 0x0134 }, /* Jcircumflex Ä´ LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
- { 0x02b1, 0x0127 }, /* hstroke ħ LATIN SMALL LETTER H WITH STROKE */
- { 0x02b6, 0x0125 }, /* hcircumflex ĥ LATIN SMALL LETTER H WITH CIRCUMFLEX */
- { 0x02b9, 0x0131 }, /* idotless ı LATIN SMALL LETTER DOTLESS I */
- { 0x02bb, 0x011f }, /* gbreve ÄŸ LATIN SMALL LETTER G WITH BREVE */
- { 0x02bc, 0x0135 }, /* jcircumflex ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX */
- { 0x02c5, 0x010a }, /* Cabovedot ÄŠ LATIN CAPITAL LETTER C WITH DOT ABOVE */
- { 0x02c6, 0x0108 }, /* Ccircumflex Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
- { 0x02d5, 0x0120 }, /* Gabovedot Ä  LATIN CAPITAL LETTER G WITH DOT ABOVE */
- { 0x02d8, 0x011c }, /* Gcircumflex Ĝ LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
- { 0x02dd, 0x016c }, /* Ubreve Ŭ LATIN CAPITAL LETTER U WITH BREVE */
- { 0x02de, 0x015c }, /* Scircumflex Ŝ LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
- { 0x02e5, 0x010b }, /* cabovedot Ä‹ LATIN SMALL LETTER C WITH DOT ABOVE */
- { 0x02e6, 0x0109 }, /* ccircumflex ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX */
- { 0x02f5, 0x0121 }, /* gabovedot Ä¡ LATIN SMALL LETTER G WITH DOT ABOVE */
- { 0x02f8, 0x011d }, /* gcircumflex Ä LATIN SMALL LETTER G WITH CIRCUMFLEX */
- { 0x02fd, 0x016d }, /* ubreve Å­ LATIN SMALL LETTER U WITH BREVE */
- { 0x02fe, 0x015d }, /* scircumflex Å LATIN SMALL LETTER S WITH CIRCUMFLEX */
- { 0x03a2, 0x0138 }, /* kra ĸ LATIN SMALL LETTER KRA */
- { 0x03a3, 0x0156 }, /* Rcedilla Å– LATIN CAPITAL LETTER R WITH CEDILLA */
- { 0x03a5, 0x0128 }, /* Itilde Ĩ LATIN CAPITAL LETTER I WITH TILDE */
- { 0x03a6, 0x013b }, /* Lcedilla Ä» LATIN CAPITAL LETTER L WITH CEDILLA */
- { 0x03aa, 0x0112 }, /* Emacron Ä’ LATIN CAPITAL LETTER E WITH MACRON */
- { 0x03ab, 0x0122 }, /* Gcedilla Ģ LATIN CAPITAL LETTER G WITH CEDILLA */
- { 0x03ac, 0x0166 }, /* Tslash Ŧ LATIN CAPITAL LETTER T WITH STROKE */
- { 0x03b3, 0x0157 }, /* rcedilla Å— LATIN SMALL LETTER R WITH CEDILLA */
- { 0x03b5, 0x0129 }, /* itilde Ä© LATIN SMALL LETTER I WITH TILDE */
- { 0x03b6, 0x013c }, /* lcedilla ļ LATIN SMALL LETTER L WITH CEDILLA */
- { 0x03ba, 0x0113 }, /* emacron Ä“ LATIN SMALL LETTER E WITH MACRON */
- { 0x03bb, 0x0123 }, /* gcedilla ģ LATIN SMALL LETTER G WITH CEDILLA */
- { 0x03bc, 0x0167 }, /* tslash ŧ LATIN SMALL LETTER T WITH STROKE */
- { 0x03bd, 0x014a }, /* ENG ÅŠ LATIN CAPITAL LETTER ENG */
- { 0x03bf, 0x014b }, /* eng Å‹ LATIN SMALL LETTER ENG */
- { 0x03c0, 0x0100 }, /* Amacron Ā LATIN CAPITAL LETTER A WITH MACRON */
- { 0x03c7, 0x012e }, /* Iogonek Ä® LATIN CAPITAL LETTER I WITH OGONEK */
- { 0x03cc, 0x0116 }, /* Eabovedot Ä– LATIN CAPITAL LETTER E WITH DOT ABOVE */
- { 0x03cf, 0x012a }, /* Imacron Ī LATIN CAPITAL LETTER I WITH MACRON */
- { 0x03d1, 0x0145 }, /* Ncedilla Å… LATIN CAPITAL LETTER N WITH CEDILLA */
- { 0x03d2, 0x014c }, /* Omacron Ō LATIN CAPITAL LETTER O WITH MACRON */
- { 0x03d3, 0x0136 }, /* Kcedilla Ķ LATIN CAPITAL LETTER K WITH CEDILLA */
- { 0x03d9, 0x0172 }, /* Uogonek Ų LATIN CAPITAL LETTER U WITH OGONEK */
- { 0x03dd, 0x0168 }, /* Utilde Ũ LATIN CAPITAL LETTER U WITH TILDE */
- { 0x03de, 0x016a }, /* Umacron Ū LATIN CAPITAL LETTER U WITH MACRON */
- { 0x03e0, 0x0101 }, /* amacron Ä LATIN SMALL LETTER A WITH MACRON */
- { 0x03e7, 0x012f }, /* iogonek į LATIN SMALL LETTER I WITH OGONEK */
- { 0x03ec, 0x0117 }, /* eabovedot Ä— LATIN SMALL LETTER E WITH DOT ABOVE */
- { 0x03ef, 0x012b }, /* imacron Ä« LATIN SMALL LETTER I WITH MACRON */
- { 0x03f1, 0x0146 }, /* ncedilla ņ LATIN SMALL LETTER N WITH CEDILLA */
- { 0x03f2, 0x014d }, /* omacron Å LATIN SMALL LETTER O WITH MACRON */
- { 0x03f3, 0x0137 }, /* kcedilla Ä· LATIN SMALL LETTER K WITH CEDILLA */
- { 0x03f9, 0x0173 }, /* uogonek ų LATIN SMALL LETTER U WITH OGONEK */
- { 0x03fd, 0x0169 }, /* utilde Å© LATIN SMALL LETTER U WITH TILDE */
- { 0x03fe, 0x016b }, /* umacron Å« LATIN SMALL LETTER U WITH MACRON */
- { 0x047e, 0x203e }, /* overline ‾ OVERLINE */
- { 0x04a1, 0x3002 }, /* kana_fullstop 。 IDEOGRAPHIC FULL STOP */
- { 0x04a2, 0x300c }, /* kana_openingbracket 「 LEFT CORNER BRACKET */
- { 0x04a3, 0x300d }, /* kana_closingbracket 〠RIGHT CORNER BRACKET */
- { 0x04a4, 0x3001 }, /* kana_comma 〠IDEOGRAPHIC COMMA */
- { 0x04a5, 0x30fb }, /* kana_conjunctive ・ KATAKANA MIDDLE DOT */
- { 0x04a6, 0x30f2 }, /* kana_WO ヲ KATAKANA LETTER WO */
- { 0x04a7, 0x30a1 }, /* kana_a ã‚¡ KATAKANA LETTER SMALL A */
- { 0x04a8, 0x30a3 }, /* kana_i ã‚£ KATAKANA LETTER SMALL I */
- { 0x04a9, 0x30a5 }, /* kana_u ã‚¥ KATAKANA LETTER SMALL U */
- { 0x04aa, 0x30a7 }, /* kana_e ェ KATAKANA LETTER SMALL E */
- { 0x04ab, 0x30a9 }, /* kana_o ã‚© KATAKANA LETTER SMALL O */
- { 0x04ac, 0x30e3 }, /* kana_ya ャ KATAKANA LETTER SMALL YA */
- { 0x04ad, 0x30e5 }, /* kana_yu ュ KATAKANA LETTER SMALL YU */
- { 0x04ae, 0x30e7 }, /* kana_yo ョ KATAKANA LETTER SMALL YO */
- { 0x04af, 0x30c3 }, /* kana_tsu ッ KATAKANA LETTER SMALL TU */
- { 0x04b0, 0x30fc }, /* prolongedsound ー KATAKANA-HIRAGANA PROLONGED SOUND MARK */
- { 0x04b1, 0x30a2 }, /* kana_A ã‚¢ KATAKANA LETTER A */
- { 0x04b2, 0x30a4 }, /* kana_I イ KATAKANA LETTER I */
- { 0x04b3, 0x30a6 }, /* kana_U ウ KATAKANA LETTER U */
- { 0x04b4, 0x30a8 }, /* kana_E エ KATAKANA LETTER E */
- { 0x04b5, 0x30aa }, /* kana_O オ KATAKANA LETTER O */
- { 0x04b6, 0x30ab }, /* kana_KA ã‚« KATAKANA LETTER KA */
- { 0x04b7, 0x30ad }, /* kana_KI ã‚­ KATAKANA LETTER KI */
- { 0x04b8, 0x30af }, /* kana_KU ク KATAKANA LETTER KU */
- { 0x04b9, 0x30b1 }, /* kana_KE ケ KATAKANA LETTER KE */
- { 0x04ba, 0x30b3 }, /* kana_KO コ KATAKANA LETTER KO */
- { 0x04bb, 0x30b5 }, /* kana_SA サ KATAKANA LETTER SA */
- { 0x04bc, 0x30b7 }, /* kana_SHI ã‚· KATAKANA LETTER SI */
- { 0x04bd, 0x30b9 }, /* kana_SU ス KATAKANA LETTER SU */
- { 0x04be, 0x30bb }, /* kana_SE ã‚» KATAKANA LETTER SE */
- { 0x04bf, 0x30bd }, /* kana_SO ソ KATAKANA LETTER SO */
- { 0x04c0, 0x30bf }, /* kana_TA ã‚¿ KATAKANA LETTER TA */
- { 0x04c1, 0x30c1 }, /* kana_CHI ムKATAKANA LETTER TI */
- { 0x04c2, 0x30c4 }, /* kana_TSU ツ KATAKANA LETTER TU */
- { 0x04c3, 0x30c6 }, /* kana_TE テ KATAKANA LETTER TE */
- { 0x04c4, 0x30c8 }, /* kana_TO ト KATAKANA LETTER TO */
- { 0x04c5, 0x30ca }, /* kana_NA ナ KATAKANA LETTER NA */
- { 0x04c6, 0x30cb }, /* kana_NI ニ KATAKANA LETTER NI */
- { 0x04c7, 0x30cc }, /* kana_NU ヌ KATAKANA LETTER NU */
- { 0x04c8, 0x30cd }, /* kana_NE ムKATAKANA LETTER NE */
- { 0x04c9, 0x30ce }, /* kana_NO ノ KATAKANA LETTER NO */
- { 0x04ca, 0x30cf }, /* kana_HA ムKATAKANA LETTER HA */
- { 0x04cb, 0x30d2 }, /* kana_HI ヒ KATAKANA LETTER HI */
- { 0x04cc, 0x30d5 }, /* kana_FU フ KATAKANA LETTER HU */
- { 0x04cd, 0x30d8 }, /* kana_HE ヘ KATAKANA LETTER HE */
- { 0x04ce, 0x30db }, /* kana_HO ホ KATAKANA LETTER HO */
- { 0x04cf, 0x30de }, /* kana_MA マ KATAKANA LETTER MA */
- { 0x04d0, 0x30df }, /* kana_MI ミ KATAKANA LETTER MI */
- { 0x04d1, 0x30e0 }, /* kana_MU ム KATAKANA LETTER MU */
- { 0x04d2, 0x30e1 }, /* kana_ME メ KATAKANA LETTER ME */
- { 0x04d3, 0x30e2 }, /* kana_MO モ KATAKANA LETTER MO */
- { 0x04d4, 0x30e4 }, /* kana_YA ヤ KATAKANA LETTER YA */
- { 0x04d5, 0x30e6 }, /* kana_YU ユ KATAKANA LETTER YU */
- { 0x04d6, 0x30e8 }, /* kana_YO ヨ KATAKANA LETTER YO */
- { 0x04d7, 0x30e9 }, /* kana_RA ラ KATAKANA LETTER RA */
- { 0x04d8, 0x30ea }, /* kana_RI リ KATAKANA LETTER RI */
- { 0x04d9, 0x30eb }, /* kana_RU ル KATAKANA LETTER RU */
- { 0x04da, 0x30ec }, /* kana_RE レ KATAKANA LETTER RE */
- { 0x04db, 0x30ed }, /* kana_RO ロ KATAKANA LETTER RO */
- { 0x04dc, 0x30ef }, /* kana_WA ワ KATAKANA LETTER WA */
- { 0x04dd, 0x30f3 }, /* kana_N ン KATAKANA LETTER N */
- { 0x04de, 0x309b }, /* voicedsound ã‚› KATAKANA-HIRAGANA VOICED SOUND MARK */
- { 0x04df, 0x309c }, /* semivoicedsound ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
- { 0x05ac, 0x060c }, /* Arabic_comma ، ARABIC COMMA */
- { 0x05bb, 0x061b }, /* Arabic_semicolon Ø› ARABIC SEMICOLON */
- { 0x05bf, 0x061f }, /* Arabic_question_mark ØŸ ARABIC QUESTION MARK */
- { 0x05c1, 0x0621 }, /* Arabic_hamza Ø¡ ARABIC LETTER HAMZA */
- { 0x05c2, 0x0622 }, /* Arabic_maddaonalef آ ARABIC LETTER ALEF WITH MADDA ABOVE */
- { 0x05c3, 0x0623 }, /* Arabic_hamzaonalef أ ARABIC LETTER ALEF WITH HAMZA ABOVE */
- { 0x05c4, 0x0624 }, /* Arabic_hamzaonwaw ؤ ARABIC LETTER WAW WITH HAMZA ABOVE */
- { 0x05c5, 0x0625 }, /* Arabic_hamzaunderalef إ ARABIC LETTER ALEF WITH HAMZA BELOW */
- { 0x05c6, 0x0626 }, /* Arabic_hamzaonyeh ئ ARABIC LETTER YEH WITH HAMZA ABOVE */
- { 0x05c7, 0x0627 }, /* Arabic_alef ا ARABIC LETTER ALEF */
- { 0x05c8, 0x0628 }, /* Arabic_beh ب ARABIC LETTER BEH */
- { 0x05c9, 0x0629 }, /* Arabic_tehmarbuta Ø© ARABIC LETTER TEH MARBUTA */
- { 0x05ca, 0x062a }, /* Arabic_teh ت ARABIC LETTER TEH */
- { 0x05cb, 0x062b }, /* Arabic_theh Ø« ARABIC LETTER THEH */
- { 0x05cc, 0x062c }, /* Arabic_jeem ج ARABIC LETTER JEEM */
- { 0x05cd, 0x062d }, /* Arabic_hah Ø­ ARABIC LETTER HAH */
- { 0x05ce, 0x062e }, /* Arabic_khah Ø® ARABIC LETTER KHAH */
- { 0x05cf, 0x062f }, /* Arabic_dal د ARABIC LETTER DAL */
- { 0x05d0, 0x0630 }, /* Arabic_thal Ø° ARABIC LETTER THAL */
- { 0x05d1, 0x0631 }, /* Arabic_ra ر ARABIC LETTER REH */
- { 0x05d2, 0x0632 }, /* Arabic_zain ز ARABIC LETTER ZAIN */
- { 0x05d3, 0x0633 }, /* Arabic_seen س ARABIC LETTER SEEN */
- { 0x05d4, 0x0634 }, /* Arabic_sheen Ø´ ARABIC LETTER SHEEN */
- { 0x05d5, 0x0635 }, /* Arabic_sad ص ARABIC LETTER SAD */
- { 0x05d6, 0x0636 }, /* Arabic_dad ض ARABIC LETTER DAD */
- { 0x05d7, 0x0637 }, /* Arabic_tah Ø· ARABIC LETTER TAH */
- { 0x05d8, 0x0638 }, /* Arabic_zah ظ ARABIC LETTER ZAH */
- { 0x05d9, 0x0639 }, /* Arabic_ain ع ARABIC LETTER AIN */
- { 0x05da, 0x063a }, /* Arabic_ghain غ ARABIC LETTER GHAIN */
- { 0x05e0, 0x0640 }, /* Arabic_tatweel Ù€ ARABIC TATWEEL */
- { 0x05e1, 0x0641 }, /* Arabic_feh Ù ARABIC LETTER FEH */
- { 0x05e2, 0x0642 }, /* Arabic_qaf Ù‚ ARABIC LETTER QAF */
- { 0x05e3, 0x0643 }, /* Arabic_kaf Ùƒ ARABIC LETTER KAF */
- { 0x05e4, 0x0644 }, /* Arabic_lam Ù„ ARABIC LETTER LAM */
- { 0x05e5, 0x0645 }, /* Arabic_meem Ù… ARABIC LETTER MEEM */
- { 0x05e6, 0x0646 }, /* Arabic_noon Ù† ARABIC LETTER NOON */
- { 0x05e7, 0x0647 }, /* Arabic_ha Ù‡ ARABIC LETTER HEH */
- { 0x05e8, 0x0648 }, /* Arabic_waw Ùˆ ARABIC LETTER WAW */
- { 0x05e9, 0x0649 }, /* Arabic_alefmaksura Ù‰ ARABIC LETTER ALEF MAKSURA */
- { 0x05ea, 0x064a }, /* Arabic_yeh ÙŠ ARABIC LETTER YEH */
- { 0x05eb, 0x064b }, /* Arabic_fathatan Ù‹ ARABIC FATHATAN */
- { 0x05ec, 0x064c }, /* Arabic_dammatan ٌ ARABIC DAMMATAN */
- { 0x05ed, 0x064d }, /* Arabic_kasratan Ù ARABIC KASRATAN */
- { 0x05ee, 0x064e }, /* Arabic_fatha ÙŽ ARABIC FATHA */
- { 0x05ef, 0x064f }, /* Arabic_damma Ù ARABIC DAMMA */
- { 0x05f0, 0x0650 }, /* Arabic_kasra Ù ARABIC KASRA */
- { 0x05f1, 0x0651 }, /* Arabic_shadda Ù‘ ARABIC SHADDA */
- { 0x05f2, 0x0652 }, /* Arabic_sukun Ù’ ARABIC SUKUN */
- { 0x06a1, 0x0452 }, /* Serbian_dje Ñ’ CYRILLIC SMALL LETTER DJE */
- { 0x06a2, 0x0453 }, /* Macedonia_gje Ñ“ CYRILLIC SMALL LETTER GJE */
- { 0x06a3, 0x0451 }, /* Cyrillic_io Ñ‘ CYRILLIC SMALL LETTER IO */
- { 0x06a4, 0x0454 }, /* Ukrainian_ie Ñ” CYRILLIC SMALL LETTER UKRAINIAN IE */
- { 0x06a5, 0x0455 }, /* Macedonia_dse Ñ• CYRILLIC SMALL LETTER DZE */
- { 0x06a6, 0x0456 }, /* Ukrainian_i Ñ– CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
- { 0x06a7, 0x0457 }, /* Ukrainian_yi Ñ— CYRILLIC SMALL LETTER YI */
- { 0x06a8, 0x0458 }, /* Cyrillic_je ј CYRILLIC SMALL LETTER JE */
- { 0x06a9, 0x0459 }, /* Cyrillic_lje Ñ™ CYRILLIC SMALL LETTER LJE */
- { 0x06aa, 0x045a }, /* Cyrillic_nje Ñš CYRILLIC SMALL LETTER NJE */
- { 0x06ab, 0x045b }, /* Serbian_tshe Ñ› CYRILLIC SMALL LETTER TSHE */
- { 0x06ac, 0x045c }, /* Macedonia_kje ќ CYRILLIC SMALL LETTER KJE */
- { 0x06ae, 0x045e }, /* Byelorussian_shortu Ñž CYRILLIC SMALL LETTER SHORT U */
- { 0x06af, 0x045f }, /* Cyrillic_dzhe ÑŸ CYRILLIC SMALL LETTER DZHE */
- { 0x06b0, 0x2116 }, /* numerosign â„– NUMERO SIGN */
- { 0x06b1, 0x0402 }, /* Serbian_DJE Ђ CYRILLIC CAPITAL LETTER DJE */
- { 0x06b2, 0x0403 }, /* Macedonia_GJE Ѓ CYRILLIC CAPITAL LETTER GJE */
- { 0x06b3, 0x0401 }, /* Cyrillic_IO Ð CYRILLIC CAPITAL LETTER IO */
- { 0x06b4, 0x0404 }, /* Ukrainian_IE Є CYRILLIC CAPITAL LETTER UKRAINIAN IE */
- { 0x06b5, 0x0405 }, /* Macedonia_DSE Ð… CYRILLIC CAPITAL LETTER DZE */
- { 0x06b6, 0x0406 }, /* Ukrainian_I І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
- { 0x06b7, 0x0407 }, /* Ukrainian_YI Ї CYRILLIC CAPITAL LETTER YI */
- { 0x06b8, 0x0408 }, /* Cyrillic_JE Ј CYRILLIC CAPITAL LETTER JE */
- { 0x06b9, 0x0409 }, /* Cyrillic_LJE Љ CYRILLIC CAPITAL LETTER LJE */
- { 0x06ba, 0x040a }, /* Cyrillic_NJE Њ CYRILLIC CAPITAL LETTER NJE */
- { 0x06bb, 0x040b }, /* Serbian_TSHE Ћ CYRILLIC CAPITAL LETTER TSHE */
- { 0x06bc, 0x040c }, /* Macedonia_KJE Ќ CYRILLIC CAPITAL LETTER KJE */
- { 0x06be, 0x040e }, /* Byelorussian_SHORTU ÐŽ CYRILLIC CAPITAL LETTER SHORT U */
- { 0x06bf, 0x040f }, /* Cyrillic_DZHE Ð CYRILLIC CAPITAL LETTER DZHE */
- { 0x06c0, 0x044e }, /* Cyrillic_yu ÑŽ CYRILLIC SMALL LETTER YU */
- { 0x06c1, 0x0430 }, /* Cyrillic_a а CYRILLIC SMALL LETTER A */
- { 0x06c2, 0x0431 }, /* Cyrillic_be б CYRILLIC SMALL LETTER BE */
- { 0x06c3, 0x0446 }, /* Cyrillic_tse ц CYRILLIC SMALL LETTER TSE */
- { 0x06c4, 0x0434 }, /* Cyrillic_de д CYRILLIC SMALL LETTER DE */
- { 0x06c5, 0x0435 }, /* Cyrillic_ie е CYRILLIC SMALL LETTER IE */
- { 0x06c6, 0x0444 }, /* Cyrillic_ef Ñ„ CYRILLIC SMALL LETTER EF */
- { 0x06c7, 0x0433 }, /* Cyrillic_ghe г CYRILLIC SMALL LETTER GHE */
- { 0x06c8, 0x0445 }, /* Cyrillic_ha Ñ… CYRILLIC SMALL LETTER HA */
- { 0x06c9, 0x0438 }, /* Cyrillic_i и CYRILLIC SMALL LETTER I */
- { 0x06ca, 0x0439 }, /* Cyrillic_shorti й CYRILLIC SMALL LETTER SHORT I */
- { 0x06cb, 0x043a }, /* Cyrillic_ka к CYRILLIC SMALL LETTER KA */
- { 0x06cc, 0x043b }, /* Cyrillic_el л CYRILLIC SMALL LETTER EL */
- { 0x06cd, 0x043c }, /* Cyrillic_em м CYRILLIC SMALL LETTER EM */
- { 0x06ce, 0x043d }, /* Cyrillic_en н CYRILLIC SMALL LETTER EN */
- { 0x06cf, 0x043e }, /* Cyrillic_o о CYRILLIC SMALL LETTER O */
- { 0x06d0, 0x043f }, /* Cyrillic_pe п CYRILLIC SMALL LETTER PE */
- { 0x06d1, 0x044f }, /* Cyrillic_ya Ñ CYRILLIC SMALL LETTER YA */
- { 0x06d2, 0x0440 }, /* Cyrillic_er р CYRILLIC SMALL LETTER ER */
- { 0x06d3, 0x0441 }, /* Cyrillic_es Ñ CYRILLIC SMALL LETTER ES */
- { 0x06d4, 0x0442 }, /* Cyrillic_te Ñ‚ CYRILLIC SMALL LETTER TE */
- { 0x06d5, 0x0443 }, /* Cyrillic_u у CYRILLIC SMALL LETTER U */
- { 0x06d6, 0x0436 }, /* Cyrillic_zhe ж CYRILLIC SMALL LETTER ZHE */
- { 0x06d7, 0x0432 }, /* Cyrillic_ve в CYRILLIC SMALL LETTER VE */
- { 0x06d8, 0x044c }, /* Cyrillic_softsign ь CYRILLIC SMALL LETTER SOFT SIGN */
- { 0x06d9, 0x044b }, /* Cyrillic_yeru Ñ‹ CYRILLIC SMALL LETTER YERU */
- { 0x06da, 0x0437 }, /* Cyrillic_ze з CYRILLIC SMALL LETTER ZE */
- { 0x06db, 0x0448 }, /* Cyrillic_sha ш CYRILLIC SMALL LETTER SHA */
- { 0x06dc, 0x044d }, /* Cyrillic_e Ñ CYRILLIC SMALL LETTER E */
- { 0x06dd, 0x0449 }, /* Cyrillic_shcha щ CYRILLIC SMALL LETTER SHCHA */
- { 0x06de, 0x0447 }, /* Cyrillic_che ч CYRILLIC SMALL LETTER CHE */
- { 0x06df, 0x044a }, /* Cyrillic_hardsign ÑŠ CYRILLIC SMALL LETTER HARD SIGN */
- { 0x06e0, 0x042e }, /* Cyrillic_YU Ю CYRILLIC CAPITAL LETTER YU */
- { 0x06e1, 0x0410 }, /* Cyrillic_A Ð CYRILLIC CAPITAL LETTER A */
- { 0x06e2, 0x0411 }, /* Cyrillic_BE Б CYRILLIC CAPITAL LETTER BE */
- { 0x06e3, 0x0426 }, /* Cyrillic_TSE Ц CYRILLIC CAPITAL LETTER TSE */
- { 0x06e4, 0x0414 }, /* Cyrillic_DE Д CYRILLIC CAPITAL LETTER DE */
- { 0x06e5, 0x0415 }, /* Cyrillic_IE Е CYRILLIC CAPITAL LETTER IE */
- { 0x06e6, 0x0424 }, /* Cyrillic_EF Ф CYRILLIC CAPITAL LETTER EF */
- { 0x06e7, 0x0413 }, /* Cyrillic_GHE Г CYRILLIC CAPITAL LETTER GHE */
- { 0x06e8, 0x0425 }, /* Cyrillic_HA Х CYRILLIC CAPITAL LETTER HA */
- { 0x06e9, 0x0418 }, /* Cyrillic_I И CYRILLIC CAPITAL LETTER I */
- { 0x06ea, 0x0419 }, /* Cyrillic_SHORTI Й CYRILLIC CAPITAL LETTER SHORT I */
- { 0x06eb, 0x041a }, /* Cyrillic_KA К CYRILLIC CAPITAL LETTER KA */
- { 0x06ec, 0x041b }, /* Cyrillic_EL Л CYRILLIC CAPITAL LETTER EL */
- { 0x06ed, 0x041c }, /* Cyrillic_EM М CYRILLIC CAPITAL LETTER EM */
- { 0x06ee, 0x041d }, /* Cyrillic_EN Ð CYRILLIC CAPITAL LETTER EN */
- { 0x06ef, 0x041e }, /* Cyrillic_O О CYRILLIC CAPITAL LETTER O */
- { 0x06f0, 0x041f }, /* Cyrillic_PE П CYRILLIC CAPITAL LETTER PE */
- { 0x06f1, 0x042f }, /* Cyrillic_YA Я CYRILLIC CAPITAL LETTER YA */
- { 0x06f2, 0x0420 }, /* Cyrillic_ER Р CYRILLIC CAPITAL LETTER ER */
- { 0x06f3, 0x0421 }, /* Cyrillic_ES С CYRILLIC CAPITAL LETTER ES */
- { 0x06f4, 0x0422 }, /* Cyrillic_TE Т CYRILLIC CAPITAL LETTER TE */
- { 0x06f5, 0x0423 }, /* Cyrillic_U У CYRILLIC CAPITAL LETTER U */
- { 0x06f6, 0x0416 }, /* Cyrillic_ZHE Ж CYRILLIC CAPITAL LETTER ZHE */
- { 0x06f7, 0x0412 }, /* Cyrillic_VE Ð’ CYRILLIC CAPITAL LETTER VE */
- { 0x06f8, 0x042c }, /* Cyrillic_SOFTSIGN Ь CYRILLIC CAPITAL LETTER SOFT SIGN */
- { 0x06f9, 0x042b }, /* Cyrillic_YERU Ы CYRILLIC CAPITAL LETTER YERU */
- { 0x06fa, 0x0417 }, /* Cyrillic_ZE З CYRILLIC CAPITAL LETTER ZE */
- { 0x06fb, 0x0428 }, /* Cyrillic_SHA Ш CYRILLIC CAPITAL LETTER SHA */
- { 0x06fc, 0x042d }, /* Cyrillic_E Э CYRILLIC CAPITAL LETTER E */
- { 0x06fd, 0x0429 }, /* Cyrillic_SHCHA Щ CYRILLIC CAPITAL LETTER SHCHA */
- { 0x06fe, 0x0427 }, /* Cyrillic_CHE Ч CYRILLIC CAPITAL LETTER CHE */
- { 0x06ff, 0x042a }, /* Cyrillic_HARDSIGN Ъ CYRILLIC CAPITAL LETTER HARD SIGN */
- { 0x07a1, 0x0386 }, /* Greek_ALPHAaccent Ά GREEK CAPITAL LETTER ALPHA WITH TONOS */
- { 0x07a2, 0x0388 }, /* Greek_EPSILONaccent Έ GREEK CAPITAL LETTER EPSILON WITH TONOS */
- { 0x07a3, 0x0389 }, /* Greek_ETAaccent Ή GREEK CAPITAL LETTER ETA WITH TONOS */
- { 0x07a4, 0x038a }, /* Greek_IOTAaccent Ί GREEK CAPITAL LETTER IOTA WITH TONOS */
- { 0x07a5, 0x03aa }, /* Greek_IOTAdiaeresis Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
- { 0x07a7, 0x038c }, /* Greek_OMICRONaccent Ό GREEK CAPITAL LETTER OMICRON WITH TONOS */
- { 0x07a8, 0x038e }, /* Greek_UPSILONaccent ÎŽ GREEK CAPITAL LETTER UPSILON WITH TONOS */
- { 0x07a9, 0x03ab }, /* Greek_UPSILONdieresis Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
- { 0x07ab, 0x038f }, /* Greek_OMEGAaccent Î GREEK CAPITAL LETTER OMEGA WITH TONOS */
- { 0x07ae, 0x0385 }, /* Greek_accentdieresis Î… GREEK DIALYTIKA TONOS */
- { 0x07af, 0x2015 }, /* Greek_horizbar ― HORIZONTAL BAR */
- { 0x07b1, 0x03ac }, /* Greek_alphaaccent ά GREEK SMALL LETTER ALPHA WITH TONOS */
- { 0x07b2, 0x03ad }, /* Greek_epsilonaccent έ GREEK SMALL LETTER EPSILON WITH TONOS */
- { 0x07b3, 0x03ae }, /* Greek_etaaccent ή GREEK SMALL LETTER ETA WITH TONOS */
- { 0x07b4, 0x03af }, /* Greek_iotaaccent ί GREEK SMALL LETTER IOTA WITH TONOS */
- { 0x07b5, 0x03ca }, /* Greek_iotadieresis ÏŠ GREEK SMALL LETTER IOTA WITH DIALYTIKA */
- { 0x07b6, 0x0390 }, /* Greek_iotaaccentdieresis Î GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
- { 0x07b7, 0x03cc }, /* Greek_omicronaccent ό GREEK SMALL LETTER OMICRON WITH TONOS */
- { 0x07b8, 0x03cd }, /* Greek_upsilonaccent Ï GREEK SMALL LETTER UPSILON WITH TONOS */
- { 0x07b9, 0x03cb }, /* Greek_upsilondieresis Ï‹ GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
- { 0x07ba, 0x03b0 }, /* Greek_upsilonaccentdieresis ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
- { 0x07bb, 0x03ce }, /* Greek_omegaaccent ÏŽ GREEK SMALL LETTER OMEGA WITH TONOS */
- { 0x07c1, 0x0391 }, /* Greek_ALPHA Α GREEK CAPITAL LETTER ALPHA */
- { 0x07c2, 0x0392 }, /* Greek_BETA Î’ GREEK CAPITAL LETTER BETA */
- { 0x07c3, 0x0393 }, /* Greek_GAMMA Γ GREEK CAPITAL LETTER GAMMA */
- { 0x07c4, 0x0394 }, /* Greek_DELTA Δ GREEK CAPITAL LETTER DELTA */
- { 0x07c5, 0x0395 }, /* Greek_EPSILON Ε GREEK CAPITAL LETTER EPSILON */
- { 0x07c6, 0x0396 }, /* Greek_ZETA Ζ GREEK CAPITAL LETTER ZETA */
- { 0x07c7, 0x0397 }, /* Greek_ETA Η GREEK CAPITAL LETTER ETA */
- { 0x07c8, 0x0398 }, /* Greek_THETA Θ GREEK CAPITAL LETTER THETA */
- { 0x07c9, 0x0399 }, /* Greek_IOTA Ι GREEK CAPITAL LETTER IOTA */
- { 0x07ca, 0x039a }, /* Greek_KAPPA Κ GREEK CAPITAL LETTER KAPPA */
- { 0x07cb, 0x039b }, /* Greek_LAMBDA Λ GREEK CAPITAL LETTER LAMDA */
- { 0x07cc, 0x039c }, /* Greek_MU Μ GREEK CAPITAL LETTER MU */
- { 0x07cd, 0x039d }, /* Greek_NU Î GREEK CAPITAL LETTER NU */
- { 0x07ce, 0x039e }, /* Greek_XI Ξ GREEK CAPITAL LETTER XI */
- { 0x07cf, 0x039f }, /* Greek_OMICRON Ο GREEK CAPITAL LETTER OMICRON */
- { 0x07d0, 0x03a0 }, /* Greek_PI Π GREEK CAPITAL LETTER PI */
- { 0x07d1, 0x03a1 }, /* Greek_RHO Ρ GREEK CAPITAL LETTER RHO */
- { 0x07d2, 0x03a3 }, /* Greek_SIGMA Σ GREEK CAPITAL LETTER SIGMA */
- { 0x07d4, 0x03a4 }, /* Greek_TAU Τ GREEK CAPITAL LETTER TAU */
- { 0x07d5, 0x03a5 }, /* Greek_UPSILON Υ GREEK CAPITAL LETTER UPSILON */
- { 0x07d6, 0x03a6 }, /* Greek_PHI Φ GREEK CAPITAL LETTER PHI */
- { 0x07d7, 0x03a7 }, /* Greek_CHI Χ GREEK CAPITAL LETTER CHI */
- { 0x07d8, 0x03a8 }, /* Greek_PSI Ψ GREEK CAPITAL LETTER PSI */
- { 0x07d9, 0x03a9 }, /* Greek_OMEGA Ω GREEK CAPITAL LETTER OMEGA */
- { 0x07e1, 0x03b1 }, /* Greek_alpha α GREEK SMALL LETTER ALPHA */
- { 0x07e2, 0x03b2 }, /* Greek_beta β GREEK SMALL LETTER BETA */
- { 0x07e3, 0x03b3 }, /* Greek_gamma γ GREEK SMALL LETTER GAMMA */
- { 0x07e4, 0x03b4 }, /* Greek_delta δ GREEK SMALL LETTER DELTA */
- { 0x07e5, 0x03b5 }, /* Greek_epsilon ε GREEK SMALL LETTER EPSILON */
- { 0x07e6, 0x03b6 }, /* Greek_zeta ζ GREEK SMALL LETTER ZETA */
- { 0x07e7, 0x03b7 }, /* Greek_eta η GREEK SMALL LETTER ETA */
- { 0x07e8, 0x03b8 }, /* Greek_theta θ GREEK SMALL LETTER THETA */
- { 0x07e9, 0x03b9 }, /* Greek_iota ι GREEK SMALL LETTER IOTA */
- { 0x07ea, 0x03ba }, /* Greek_kappa κ GREEK SMALL LETTER KAPPA */
- { 0x07eb, 0x03bb }, /* Greek_lambda λ GREEK SMALL LETTER LAMDA */
- { 0x07ec, 0x03bc }, /* Greek_mu μ GREEK SMALL LETTER MU */
- { 0x07ed, 0x03bd }, /* Greek_nu ν GREEK SMALL LETTER NU */
- { 0x07ee, 0x03be }, /* Greek_xi ξ GREEK SMALL LETTER XI */
- { 0x07ef, 0x03bf }, /* Greek_omicron ο GREEK SMALL LETTER OMICRON */
- { 0x07f0, 0x03c0 }, /* Greek_pi π GREEK SMALL LETTER PI */
- { 0x07f1, 0x03c1 }, /* Greek_rho Ï GREEK SMALL LETTER RHO */
- { 0x07f2, 0x03c3 }, /* Greek_sigma σ GREEK SMALL LETTER SIGMA */
- { 0x07f3, 0x03c2 }, /* Greek_finalsmallsigma Ï‚ GREEK SMALL LETTER FINAL SIGMA */
- { 0x07f4, 0x03c4 }, /* Greek_tau Ï„ GREEK SMALL LETTER TAU */
- { 0x07f5, 0x03c5 }, /* Greek_upsilon Ï… GREEK SMALL LETTER UPSILON */
- { 0x07f6, 0x03c6 }, /* Greek_phi φ GREEK SMALL LETTER PHI */
- { 0x07f7, 0x03c7 }, /* Greek_chi χ GREEK SMALL LETTER CHI */
- { 0x07f8, 0x03c8 }, /* Greek_psi ψ GREEK SMALL LETTER PSI */
- { 0x07f9, 0x03c9 }, /* Greek_omega ω GREEK SMALL LETTER OMEGA */
- { 0x08a1, 0x23b7 }, /* leftradical ⎷ ??? */
- { 0x08a2, 0x250c }, /* topleftradical ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */
- { 0x08a3, 0x2500 }, /* horizconnector ─ BOX DRAWINGS LIGHT HORIZONTAL */
- { 0x08a4, 0x2320 }, /* topintegral ⌠ TOP HALF INTEGRAL */
- { 0x08a5, 0x2321 }, /* botintegral ⌡ BOTTOM HALF INTEGRAL */
- { 0x08a6, 0x2502 }, /* vertconnector │ BOX DRAWINGS LIGHT VERTICAL */
- { 0x08a7, 0x23a1 }, /* topleftsqbracket ⎡ ??? */
- { 0x08a8, 0x23a3 }, /* botleftsqbracket ⎣ ??? */
- { 0x08a9, 0x23a4 }, /* toprightsqbracket ⎤ ??? */
- { 0x08aa, 0x23a6 }, /* botrightsqbracket ⎦ ??? */
- { 0x08ab, 0x239b }, /* topleftparens ⎛ ??? */
- { 0x08ac, 0x239d }, /* botleftparens ⎠??? */
- { 0x08ad, 0x239e }, /* toprightparens ⎞ ??? */
- { 0x08ae, 0x23a0 }, /* botrightparens ⎠ ??? */
- { 0x08af, 0x23a8 }, /* leftmiddlecurlybrace ⎨ ??? */
- { 0x08b0, 0x23ac }, /* rightmiddlecurlybrace ⎬ ??? */
-/* 0x08b1 topleftsummation ? ??? */
-/* 0x08b2 botleftsummation ? ??? */
-/* 0x08b3 topvertsummationconnector ? ??? */
-/* 0x08b4 botvertsummationconnector ? ??? */
-/* 0x08b5 toprightsummation ? ??? */
-/* 0x08b6 botrightsummation ? ??? */
-/* 0x08b7 rightmiddlesummation ? ??? */
- { 0x08bc, 0x2264 }, /* lessthanequal ≤ LESS-THAN OR EQUAL TO */
- { 0x08bd, 0x2260 }, /* notequal ≠ NOT EQUAL TO */
- { 0x08be, 0x2265 }, /* greaterthanequal ≥ GREATER-THAN OR EQUAL TO */
- { 0x08bf, 0x222b }, /* integral ∫ INTEGRAL */
- { 0x08c0, 0x2234 }, /* therefore ∴ THEREFORE */
- { 0x08c1, 0x221d }, /* variation ∠PROPORTIONAL TO */
- { 0x08c2, 0x221e }, /* infinity ∞ INFINITY */
- { 0x08c5, 0x2207 }, /* nabla ∇ NABLA */
- { 0x08c8, 0x223c }, /* approximate ∼ TILDE OPERATOR */
- { 0x08c9, 0x2243 }, /* similarequal ≃ ASYMPTOTICALLY EQUAL TO */
- { 0x08cd, 0x21d4 }, /* ifonlyif ⇔ LEFT RIGHT DOUBLE ARROW */
- { 0x08ce, 0x21d2 }, /* implies ⇒ RIGHTWARDS DOUBLE ARROW */
- { 0x08cf, 0x2261 }, /* identical ≡ IDENTICAL TO */
- { 0x08d6, 0x221a }, /* radical √ SQUARE ROOT */
- { 0x08da, 0x2282 }, /* includedin ⊂ SUBSET OF */
- { 0x08db, 0x2283 }, /* includes ⊃ SUPERSET OF */
- { 0x08dc, 0x2229 }, /* intersection ∩ INTERSECTION */
- { 0x08dd, 0x222a }, /* union ∪ UNION */
- { 0x08de, 0x2227 }, /* logicaland ∧ LOGICAL AND */
- { 0x08df, 0x2228 }, /* logicalor ∨ LOGICAL OR */
- { 0x08ef, 0x2202 }, /* partialderivative ∂ PARTIAL DIFFERENTIAL */
- { 0x08f6, 0x0192 }, /* function Æ’ LATIN SMALL LETTER F WITH HOOK */
- { 0x08fb, 0x2190 }, /* leftarrow ↠LEFTWARDS ARROW */
- { 0x08fc, 0x2191 }, /* uparrow ↑ UPWARDS ARROW */
- { 0x08fd, 0x2192 }, /* rightarrow → RIGHTWARDS ARROW */
- { 0x08fe, 0x2193 }, /* downarrow ↓ DOWNWARDS ARROW */
-/* 0x09df blank ? ??? */
- { 0x09e0, 0x25c6 }, /* soliddiamond â—† BLACK DIAMOND */
- { 0x09e1, 0x2592 }, /* checkerboard â–’ MEDIUM SHADE */
- { 0x09e2, 0x2409 }, /* ht ≠SYMBOL FOR HORIZONTAL TABULATION */
- { 0x09e3, 0x240c }, /* ff ⌠SYMBOL FOR FORM FEED */
- { 0x09e4, 0x240d }, /* cr â SYMBOL FOR CARRIAGE RETURN */
- { 0x09e5, 0x240a }, /* lf ⊠SYMBOL FOR LINE FEED */
- { 0x09e8, 0x2424 }, /* nl ⤠SYMBOL FOR NEWLINE */
- { 0x09e9, 0x240b }, /* vt â‹ SYMBOL FOR VERTICAL TABULATION */
- { 0x09ea, 0x2518 }, /* lowrightcorner ┘ BOX DRAWINGS LIGHT UP AND LEFT */
- { 0x09eb, 0x2510 }, /* uprightcorner â” BOX DRAWINGS LIGHT DOWN AND LEFT */
- { 0x09ec, 0x250c }, /* upleftcorner ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */
- { 0x09ed, 0x2514 }, /* lowleftcorner â”” BOX DRAWINGS LIGHT UP AND RIGHT */
- { 0x09ee, 0x253c }, /* crossinglines ┼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
- { 0x09ef, 0x23ba }, /* horizlinescan1 ⎺ HORIZONTAL SCAN LINE-1 (Unicode 3.2 draft) */
- { 0x09f0, 0x23bb }, /* horizlinescan3 ⎻ HORIZONTAL SCAN LINE-3 (Unicode 3.2 draft) */
- { 0x09f1, 0x2500 }, /* horizlinescan5 ─ BOX DRAWINGS LIGHT HORIZONTAL */
- { 0x09f2, 0x23bc }, /* horizlinescan7 ⎼ HORIZONTAL SCAN LINE-7 (Unicode 3.2 draft) */
- { 0x09f3, 0x23bd }, /* horizlinescan9 ⎽ HORIZONTAL SCAN LINE-9 (Unicode 3.2 draft) */
- { 0x09f4, 0x251c }, /* leftt ├ BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
- { 0x09f5, 0x2524 }, /* rightt ┤ BOX DRAWINGS LIGHT VERTICAL AND LEFT */
- { 0x09f6, 0x2534 }, /* bott â”´ BOX DRAWINGS LIGHT UP AND HORIZONTAL */
- { 0x09f7, 0x252c }, /* topt ┬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
- { 0x09f8, 0x2502 }, /* vertbar │ BOX DRAWINGS LIGHT VERTICAL */
- { 0x0aa1, 0x2003 }, /* emspace   EM SPACE */
- { 0x0aa2, 0x2002 }, /* enspace   EN SPACE */
- { 0x0aa3, 0x2004 }, /* em3space   THREE-PER-EM SPACE */
- { 0x0aa4, 0x2005 }, /* em4space   FOUR-PER-EM SPACE */
- { 0x0aa5, 0x2007 }, /* digitspace   FIGURE SPACE */
- { 0x0aa6, 0x2008 }, /* punctspace   PUNCTUATION SPACE */
- { 0x0aa7, 0x2009 }, /* thinspace   THIN SPACE */
- { 0x0aa8, 0x200a }, /* hairspace   HAIR SPACE */
- { 0x0aa9, 0x2014 }, /* emdash — EM DASH */
- { 0x0aaa, 0x2013 }, /* endash – EN DASH */
-/* 0x0aac signifblank ? ??? */
- { 0x0aae, 0x2026 }, /* ellipsis … HORIZONTAL ELLIPSIS */
- { 0x0aaf, 0x2025 }, /* doubbaselinedot ‥ TWO DOT LEADER */
- { 0x0ab0, 0x2153 }, /* onethird â…“ VULGAR FRACTION ONE THIRD */
- { 0x0ab1, 0x2154 }, /* twothirds â…” VULGAR FRACTION TWO THIRDS */
- { 0x0ab2, 0x2155 }, /* onefifth â…• VULGAR FRACTION ONE FIFTH */
- { 0x0ab3, 0x2156 }, /* twofifths â…– VULGAR FRACTION TWO FIFTHS */
- { 0x0ab4, 0x2157 }, /* threefifths â…— VULGAR FRACTION THREE FIFTHS */
- { 0x0ab5, 0x2158 }, /* fourfifths â…˜ VULGAR FRACTION FOUR FIFTHS */
- { 0x0ab6, 0x2159 }, /* onesixth â…™ VULGAR FRACTION ONE SIXTH */
- { 0x0ab7, 0x215a }, /* fivesixths â…š VULGAR FRACTION FIVE SIXTHS */
- { 0x0ab8, 0x2105 }, /* careof â„… CARE OF */
- { 0x0abb, 0x2012 }, /* figdash ‒ FIGURE DASH */
- { 0x0abc, 0x2329 }, /* leftanglebracket 〈 LEFT-POINTING ANGLE BRACKET */
-/* 0x0abd decimalpoint ? ??? */
- { 0x0abe, 0x232a }, /* rightanglebracket 〉 RIGHT-POINTING ANGLE BRACKET */
-/* 0x0abf marker ? ??? */
- { 0x0ac3, 0x215b }, /* oneeighth â…› VULGAR FRACTION ONE EIGHTH */
- { 0x0ac4, 0x215c }, /* threeeighths ⅜ VULGAR FRACTION THREE EIGHTHS */
- { 0x0ac5, 0x215d }, /* fiveeighths â… VULGAR FRACTION FIVE EIGHTHS */
- { 0x0ac6, 0x215e }, /* seveneighths â…ž VULGAR FRACTION SEVEN EIGHTHS */
- { 0x0ac9, 0x2122 }, /* trademark â„¢ TRADE MARK SIGN */
- { 0x0aca, 0x2613 }, /* signaturemark ☓ SALTIRE */
-/* 0x0acb trademarkincircle ? ??? */
- { 0x0acc, 0x25c1 }, /* leftopentriangle â— WHITE LEFT-POINTING TRIANGLE */
- { 0x0acd, 0x25b7 }, /* rightopentriangle â–· WHITE RIGHT-POINTING TRIANGLE */
- { 0x0ace, 0x25cb }, /* emopencircle â—‹ WHITE CIRCLE */
- { 0x0acf, 0x25af }, /* emopenrectangle â–¯ WHITE VERTICAL RECTANGLE */
- { 0x0ad0, 0x2018 }, /* leftsinglequotemark ‘ LEFT SINGLE QUOTATION MARK */
- { 0x0ad1, 0x2019 }, /* rightsinglequotemark ’ RIGHT SINGLE QUOTATION MARK */
- { 0x0ad2, 0x201c }, /* leftdoublequotemark “ LEFT DOUBLE QUOTATION MARK */
- { 0x0ad3, 0x201d }, /* rightdoublequotemark †RIGHT DOUBLE QUOTATION MARK */
- { 0x0ad4, 0x211e }, /* prescription â„ž PRESCRIPTION TAKE */
- { 0x0ad6, 0x2032 }, /* minutes ′ PRIME */
- { 0x0ad7, 0x2033 }, /* seconds ″ DOUBLE PRIME */
- { 0x0ad9, 0x271d }, /* latincross ✠LATIN CROSS */
-/* 0x0ada hexagram ? ??? */
- { 0x0adb, 0x25ac }, /* filledrectbullet â–¬ BLACK RECTANGLE */
- { 0x0adc, 0x25c0 }, /* filledlefttribullet â—€ BLACK LEFT-POINTING TRIANGLE */
- { 0x0add, 0x25b6 }, /* filledrighttribullet â–¶ BLACK RIGHT-POINTING TRIANGLE */
- { 0x0ade, 0x25cf }, /* emfilledcircle â— BLACK CIRCLE */
- { 0x0adf, 0x25ae }, /* emfilledrect â–® BLACK VERTICAL RECTANGLE */
- { 0x0ae0, 0x25e6 }, /* enopencircbullet â—¦ WHITE BULLET */
- { 0x0ae1, 0x25ab }, /* enopensquarebullet â–« WHITE SMALL SQUARE */
- { 0x0ae2, 0x25ad }, /* openrectbullet â–­ WHITE RECTANGLE */
- { 0x0ae3, 0x25b3 }, /* opentribulletup â–³ WHITE UP-POINTING TRIANGLE */
- { 0x0ae4, 0x25bd }, /* opentribulletdown â–½ WHITE DOWN-POINTING TRIANGLE */
- { 0x0ae5, 0x2606 }, /* openstar ☆ WHITE STAR */
- { 0x0ae6, 0x2022 }, /* enfilledcircbullet • BULLET */
- { 0x0ae7, 0x25aa }, /* enfilledsqbullet â–ª BLACK SMALL SQUARE */
- { 0x0ae8, 0x25b2 }, /* filledtribulletup â–² BLACK UP-POINTING TRIANGLE */
- { 0x0ae9, 0x25bc }, /* filledtribulletdown â–¼ BLACK DOWN-POINTING TRIANGLE */
- { 0x0aea, 0x261c }, /* leftpointer ☜ WHITE LEFT POINTING INDEX */
- { 0x0aeb, 0x261e }, /* rightpointer ☞ WHITE RIGHT POINTING INDEX */
- { 0x0aec, 0x2663 }, /* club ♣ BLACK CLUB SUIT */
- { 0x0aed, 0x2666 }, /* diamond ♦ BLACK DIAMOND SUIT */
- { 0x0aee, 0x2665 }, /* heart ♥ BLACK HEART SUIT */
- { 0x0af0, 0x2720 }, /* maltesecross ✠ MALTESE CROSS */
- { 0x0af1, 0x2020 }, /* dagger † DAGGER */
- { 0x0af2, 0x2021 }, /* doubledagger ‡ DOUBLE DAGGER */
- { 0x0af3, 0x2713 }, /* checkmark ✓ CHECK MARK */
- { 0x0af4, 0x2717 }, /* ballotcross ✗ BALLOT X */
- { 0x0af5, 0x266f }, /* musicalsharp ♯ MUSIC SHARP SIGN */
- { 0x0af6, 0x266d }, /* musicalflat â™­ MUSIC FLAT SIGN */
- { 0x0af7, 0x2642 }, /* malesymbol ♂ MALE SIGN */
- { 0x0af8, 0x2640 }, /* femalesymbol ♀ FEMALE SIGN */
- { 0x0af9, 0x260e }, /* telephone ☎ BLACK TELEPHONE */
- { 0x0afa, 0x2315 }, /* telephonerecorder ⌕ TELEPHONE RECORDER */
- { 0x0afb, 0x2117 }, /* phonographcopyright â„— SOUND RECORDING COPYRIGHT */
- { 0x0afc, 0x2038 }, /* caret ‸ CARET */
- { 0x0afd, 0x201a }, /* singlelowquotemark ‚ SINGLE LOW-9 QUOTATION MARK */
- { 0x0afe, 0x201e }, /* doublelowquotemark „ DOUBLE LOW-9 QUOTATION MARK */
-/* 0x0aff cursor ? ??? */
- { 0x0ba3, 0x003c }, /* leftcaret < LESS-THAN SIGN */
- { 0x0ba6, 0x003e }, /* rightcaret > GREATER-THAN SIGN */
- { 0x0ba8, 0x2228 }, /* downcaret ∨ LOGICAL OR */
- { 0x0ba9, 0x2227 }, /* upcaret ∧ LOGICAL AND */
- { 0x0bc0, 0x00af }, /* overbar ¯ MACRON */
- { 0x0bc2, 0x22a5 }, /* downtack ⊥ UP TACK */
- { 0x0bc3, 0x2229 }, /* upshoe ∩ INTERSECTION */
- { 0x0bc4, 0x230a }, /* downstile ⌊ LEFT FLOOR */
- { 0x0bc6, 0x005f }, /* underbar _ LOW LINE */
- { 0x0bca, 0x2218 }, /* jot ∘ RING OPERATOR */
- { 0x0bcc, 0x2395 }, /* quad ⎕ APL FUNCTIONAL SYMBOL QUAD */
- { 0x0bce, 0x22a4 }, /* uptack ⊤ DOWN TACK */
- { 0x0bcf, 0x25cb }, /* circle â—‹ WHITE CIRCLE */
- { 0x0bd3, 0x2308 }, /* upstile ⌈ LEFT CEILING */
- { 0x0bd6, 0x222a }, /* downshoe ∪ UNION */
- { 0x0bd8, 0x2283 }, /* rightshoe ⊃ SUPERSET OF */
- { 0x0bda, 0x2282 }, /* leftshoe ⊂ SUBSET OF */
- { 0x0bdc, 0x22a2 }, /* lefttack ⊢ RIGHT TACK */
- { 0x0bfc, 0x22a3 }, /* righttack ⊣ LEFT TACK */
- { 0x0cdf, 0x2017 }, /* hebrew_doublelowline ‗ DOUBLE LOW LINE */
- { 0x0ce0, 0x05d0 }, /* hebrew_aleph × HEBREW LETTER ALEF */
- { 0x0ce1, 0x05d1 }, /* hebrew_bet ב HEBREW LETTER BET */
- { 0x0ce2, 0x05d2 }, /* hebrew_gimel ×’ HEBREW LETTER GIMEL */
- { 0x0ce3, 0x05d3 }, /* hebrew_dalet ד HEBREW LETTER DALET */
- { 0x0ce4, 0x05d4 }, /* hebrew_he ×” HEBREW LETTER HE */
- { 0x0ce5, 0x05d5 }, /* hebrew_waw ו HEBREW LETTER VAV */
- { 0x0ce6, 0x05d6 }, /* hebrew_zain ×– HEBREW LETTER ZAYIN */
- { 0x0ce7, 0x05d7 }, /* hebrew_chet ×— HEBREW LETTER HET */
- { 0x0ce8, 0x05d8 }, /* hebrew_tet ט HEBREW LETTER TET */
- { 0x0ce9, 0x05d9 }, /* hebrew_yod ×™ HEBREW LETTER YOD */
- { 0x0cea, 0x05da }, /* hebrew_finalkaph ך HEBREW LETTER FINAL KAF */
- { 0x0ceb, 0x05db }, /* hebrew_kaph ×› HEBREW LETTER KAF */
- { 0x0cec, 0x05dc }, /* hebrew_lamed ל HEBREW LETTER LAMED */
- { 0x0ced, 0x05dd }, /* hebrew_finalmem × HEBREW LETTER FINAL MEM */
- { 0x0cee, 0x05de }, /* hebrew_mem מ HEBREW LETTER MEM */
- { 0x0cef, 0x05df }, /* hebrew_finalnun ן HEBREW LETTER FINAL NUN */
- { 0x0cf0, 0x05e0 }, /* hebrew_nun ×  HEBREW LETTER NUN */
- { 0x0cf1, 0x05e1 }, /* hebrew_samech ס HEBREW LETTER SAMEKH */
- { 0x0cf2, 0x05e2 }, /* hebrew_ayin ×¢ HEBREW LETTER AYIN */
- { 0x0cf3, 0x05e3 }, /* hebrew_finalpe ×£ HEBREW LETTER FINAL PE */
- { 0x0cf4, 0x05e4 }, /* hebrew_pe פ HEBREW LETTER PE */
- { 0x0cf5, 0x05e5 }, /* hebrew_finalzade ×¥ HEBREW LETTER FINAL TSADI */
- { 0x0cf6, 0x05e6 }, /* hebrew_zade צ HEBREW LETTER TSADI */
- { 0x0cf7, 0x05e7 }, /* hebrew_qoph ק HEBREW LETTER QOF */
- { 0x0cf8, 0x05e8 }, /* hebrew_resh ר HEBREW LETTER RESH */
- { 0x0cf9, 0x05e9 }, /* hebrew_shin ש HEBREW LETTER SHIN */
- { 0x0cfa, 0x05ea }, /* hebrew_taw ת HEBREW LETTER TAV */
- { 0x0da1, 0x0e01 }, /* Thai_kokai ภTHAI CHARACTER KO KAI */
- { 0x0da2, 0x0e02 }, /* Thai_khokhai ข THAI CHARACTER KHO KHAI */
- { 0x0da3, 0x0e03 }, /* Thai_khokhuat ฃ THAI CHARACTER KHO KHUAT */
- { 0x0da4, 0x0e04 }, /* Thai_khokhwai ค THAI CHARACTER KHO KHWAI */
- { 0x0da5, 0x0e05 }, /* Thai_khokhon ฅ THAI CHARACTER KHO KHON */
- { 0x0da6, 0x0e06 }, /* Thai_khorakhang ฆ THAI CHARACTER KHO RAKHANG */
- { 0x0da7, 0x0e07 }, /* Thai_ngongu ง THAI CHARACTER NGO NGU */
- { 0x0da8, 0x0e08 }, /* Thai_chochan จ THAI CHARACTER CHO CHAN */
- { 0x0da9, 0x0e09 }, /* Thai_choching ฉ THAI CHARACTER CHO CHING */
- { 0x0daa, 0x0e0a }, /* Thai_chochang ช THAI CHARACTER CHO CHANG */
- { 0x0dab, 0x0e0b }, /* Thai_soso ซ THAI CHARACTER SO SO */
- { 0x0dac, 0x0e0c }, /* Thai_chochoe ฌ THAI CHARACTER CHO CHOE */
- { 0x0dad, 0x0e0d }, /* Thai_yoying ภTHAI CHARACTER YO YING */
- { 0x0dae, 0x0e0e }, /* Thai_dochada ฎ THAI CHARACTER DO CHADA */
- { 0x0daf, 0x0e0f }, /* Thai_topatak ภTHAI CHARACTER TO PATAK */
- { 0x0db0, 0x0e10 }, /* Thai_thothan ภTHAI CHARACTER THO THAN */
- { 0x0db1, 0x0e11 }, /* Thai_thonangmontho ฑ THAI CHARACTER THO NANGMONTHO */
- { 0x0db2, 0x0e12 }, /* Thai_thophuthao ฒ THAI CHARACTER THO PHUTHAO */
- { 0x0db3, 0x0e13 }, /* Thai_nonen ณ THAI CHARACTER NO NEN */
- { 0x0db4, 0x0e14 }, /* Thai_dodek ด THAI CHARACTER DO DEK */
- { 0x0db5, 0x0e15 }, /* Thai_totao ต THAI CHARACTER TO TAO */
- { 0x0db6, 0x0e16 }, /* Thai_thothung ถ THAI CHARACTER THO THUNG */
- { 0x0db7, 0x0e17 }, /* Thai_thothahan ท THAI CHARACTER THO THAHAN */
- { 0x0db8, 0x0e18 }, /* Thai_thothong ธ THAI CHARACTER THO THONG */
- { 0x0db9, 0x0e19 }, /* Thai_nonu น THAI CHARACTER NO NU */
- { 0x0dba, 0x0e1a }, /* Thai_bobaimai บ THAI CHARACTER BO BAIMAI */
- { 0x0dbb, 0x0e1b }, /* Thai_popla ป THAI CHARACTER PO PLA */
- { 0x0dbc, 0x0e1c }, /* Thai_phophung ผ THAI CHARACTER PHO PHUNG */
- { 0x0dbd, 0x0e1d }, /* Thai_fofa ภTHAI CHARACTER FO FA */
- { 0x0dbe, 0x0e1e }, /* Thai_phophan พ THAI CHARACTER PHO PHAN */
- { 0x0dbf, 0x0e1f }, /* Thai_fofan ฟ THAI CHARACTER FO FAN */
- { 0x0dc0, 0x0e20 }, /* Thai_phosamphao ภ THAI CHARACTER PHO SAMPHAO */
- { 0x0dc1, 0x0e21 }, /* Thai_moma ม THAI CHARACTER MO MA */
- { 0x0dc2, 0x0e22 }, /* Thai_yoyak ย THAI CHARACTER YO YAK */
- { 0x0dc3, 0x0e23 }, /* Thai_rorua ร THAI CHARACTER RO RUA */
- { 0x0dc4, 0x0e24 }, /* Thai_ru ฤ THAI CHARACTER RU */
- { 0x0dc5, 0x0e25 }, /* Thai_loling ล THAI CHARACTER LO LING */
- { 0x0dc6, 0x0e26 }, /* Thai_lu ฦ THAI CHARACTER LU */
- { 0x0dc7, 0x0e27 }, /* Thai_wowaen ว THAI CHARACTER WO WAEN */
- { 0x0dc8, 0x0e28 }, /* Thai_sosala ศ THAI CHARACTER SO SALA */
- { 0x0dc9, 0x0e29 }, /* Thai_sorusi ษ THAI CHARACTER SO RUSI */
- { 0x0dca, 0x0e2a }, /* Thai_sosua ส THAI CHARACTER SO SUA */
- { 0x0dcb, 0x0e2b }, /* Thai_hohip ห THAI CHARACTER HO HIP */
- { 0x0dcc, 0x0e2c }, /* Thai_lochula ฬ THAI CHARACTER LO CHULA */
- { 0x0dcd, 0x0e2d }, /* Thai_oang อ THAI CHARACTER O ANG */
- { 0x0dce, 0x0e2e }, /* Thai_honokhuk ฮ THAI CHARACTER HO NOKHUK */
- { 0x0dcf, 0x0e2f }, /* Thai_paiyannoi ฯ THAI CHARACTER PAIYANNOI */
- { 0x0dd0, 0x0e30 }, /* Thai_saraa ะ THAI CHARACTER SARA A */
- { 0x0dd1, 0x0e31 }, /* Thai_maihanakat ั THAI CHARACTER MAI HAN-AKAT */
- { 0x0dd2, 0x0e32 }, /* Thai_saraaa า THAI CHARACTER SARA AA */
- { 0x0dd3, 0x0e33 }, /* Thai_saraam ำ THAI CHARACTER SARA AM */
- { 0x0dd4, 0x0e34 }, /* Thai_sarai ิ THAI CHARACTER SARA I */
- { 0x0dd5, 0x0e35 }, /* Thai_saraii ี THAI CHARACTER SARA II */
- { 0x0dd6, 0x0e36 }, /* Thai_saraue ึ THAI CHARACTER SARA UE */
- { 0x0dd7, 0x0e37 }, /* Thai_sarauee ื THAI CHARACTER SARA UEE */
- { 0x0dd8, 0x0e38 }, /* Thai_sarau ุ THAI CHARACTER SARA U */
- { 0x0dd9, 0x0e39 }, /* Thai_sarauu ู THAI CHARACTER SARA UU */
- { 0x0dda, 0x0e3a }, /* Thai_phinthu ฺ THAI CHARACTER PHINTHU */
-/* 0x0dde Thai_maihanakat_maitho ? ??? */
- { 0x0ddf, 0x0e3f }, /* Thai_baht ฿ THAI CURRENCY SYMBOL BAHT */
- { 0x0de0, 0x0e40 }, /* Thai_sarae เ THAI CHARACTER SARA E */
- { 0x0de1, 0x0e41 }, /* Thai_saraae ๠THAI CHARACTER SARA AE */
- { 0x0de2, 0x0e42 }, /* Thai_sarao โ THAI CHARACTER SARA O */
- { 0x0de3, 0x0e43 }, /* Thai_saraaimaimuan ใ THAI CHARACTER SARA AI MAIMUAN */
- { 0x0de4, 0x0e44 }, /* Thai_saraaimaimalai ไ THAI CHARACTER SARA AI MAIMALAI */
- { 0x0de5, 0x0e45 }, /* Thai_lakkhangyao ๅ THAI CHARACTER LAKKHANGYAO */
- { 0x0de6, 0x0e46 }, /* Thai_maiyamok ๆ THAI CHARACTER MAIYAMOK */
- { 0x0de7, 0x0e47 }, /* Thai_maitaikhu ็ THAI CHARACTER MAITAIKHU */
- { 0x0de8, 0x0e48 }, /* Thai_maiek ่ THAI CHARACTER MAI EK */
- { 0x0de9, 0x0e49 }, /* Thai_maitho ้ THAI CHARACTER MAI THO */
- { 0x0dea, 0x0e4a }, /* Thai_maitri ๊ THAI CHARACTER MAI TRI */
- { 0x0deb, 0x0e4b }, /* Thai_maichattawa ๋ THAI CHARACTER MAI CHATTAWA */
- { 0x0dec, 0x0e4c }, /* Thai_thanthakhat ์ THAI CHARACTER THANTHAKHAT */
- { 0x0ded, 0x0e4d }, /* Thai_nikhahit ๠THAI CHARACTER NIKHAHIT */
- { 0x0df0, 0x0e50 }, /* Thai_leksun ๠THAI DIGIT ZERO */
- { 0x0df1, 0x0e51 }, /* Thai_leknung ๑ THAI DIGIT ONE */
- { 0x0df2, 0x0e52 }, /* Thai_leksong ๒ THAI DIGIT TWO */
- { 0x0df3, 0x0e53 }, /* Thai_leksam ๓ THAI DIGIT THREE */
- { 0x0df4, 0x0e54 }, /* Thai_leksi ๔ THAI DIGIT FOUR */
- { 0x0df5, 0x0e55 }, /* Thai_lekha ๕ THAI DIGIT FIVE */
- { 0x0df6, 0x0e56 }, /* Thai_lekhok ๖ THAI DIGIT SIX */
- { 0x0df7, 0x0e57 }, /* Thai_lekchet ๗ THAI DIGIT SEVEN */
- { 0x0df8, 0x0e58 }, /* Thai_lekpaet ๘ THAI DIGIT EIGHT */
- { 0x0df9, 0x0e59 }, /* Thai_lekkao ๙ THAI DIGIT NINE */
- { 0x0ea1, 0x3131 }, /* Hangul_Kiyeog ㄱ HANGUL LETTER KIYEOK */
- { 0x0ea2, 0x3132 }, /* Hangul_SsangKiyeog ㄲ HANGUL LETTER SSANGKIYEOK */
- { 0x0ea3, 0x3133 }, /* Hangul_KiyeogSios ㄳ HANGUL LETTER KIYEOK-SIOS */
- { 0x0ea4, 0x3134 }, /* Hangul_Nieun ã„´ HANGUL LETTER NIEUN */
- { 0x0ea5, 0x3135 }, /* Hangul_NieunJieuj ㄵ HANGUL LETTER NIEUN-CIEUC */
- { 0x0ea6, 0x3136 }, /* Hangul_NieunHieuh ㄶ HANGUL LETTER NIEUN-HIEUH */
- { 0x0ea7, 0x3137 }, /* Hangul_Dikeud ã„· HANGUL LETTER TIKEUT */
- { 0x0ea8, 0x3138 }, /* Hangul_SsangDikeud ㄸ HANGUL LETTER SSANGTIKEUT */
- { 0x0ea9, 0x3139 }, /* Hangul_Rieul ㄹ HANGUL LETTER RIEUL */
- { 0x0eaa, 0x313a }, /* Hangul_RieulKiyeog ㄺ HANGUL LETTER RIEUL-KIYEOK */
- { 0x0eab, 0x313b }, /* Hangul_RieulMieum ã„» HANGUL LETTER RIEUL-MIEUM */
- { 0x0eac, 0x313c }, /* Hangul_RieulPieub ㄼ HANGUL LETTER RIEUL-PIEUP */
- { 0x0ead, 0x313d }, /* Hangul_RieulSios ㄽ HANGUL LETTER RIEUL-SIOS */
- { 0x0eae, 0x313e }, /* Hangul_RieulTieut ㄾ HANGUL LETTER RIEUL-THIEUTH */
- { 0x0eaf, 0x313f }, /* Hangul_RieulPhieuf ã„¿ HANGUL LETTER RIEUL-PHIEUPH */
- { 0x0eb0, 0x3140 }, /* Hangul_RieulHieuh ã…€ HANGUL LETTER RIEUL-HIEUH */
- { 0x0eb1, 0x3141 }, /* Hangul_Mieum ã… HANGUL LETTER MIEUM */
- { 0x0eb2, 0x3142 }, /* Hangul_Pieub ã…‚ HANGUL LETTER PIEUP */
- { 0x0eb3, 0x3143 }, /* Hangul_SsangPieub ã…ƒ HANGUL LETTER SSANGPIEUP */
- { 0x0eb4, 0x3144 }, /* Hangul_PieubSios ã…„ HANGUL LETTER PIEUP-SIOS */
- { 0x0eb5, 0x3145 }, /* Hangul_Sios ã…… HANGUL LETTER SIOS */
- { 0x0eb6, 0x3146 }, /* Hangul_SsangSios ã…† HANGUL LETTER SSANGSIOS */
- { 0x0eb7, 0x3147 }, /* Hangul_Ieung ã…‡ HANGUL LETTER IEUNG */
- { 0x0eb8, 0x3148 }, /* Hangul_Jieuj ã…ˆ HANGUL LETTER CIEUC */
- { 0x0eb9, 0x3149 }, /* Hangul_SsangJieuj ã…‰ HANGUL LETTER SSANGCIEUC */
- { 0x0eba, 0x314a }, /* Hangul_Cieuc ã…Š HANGUL LETTER CHIEUCH */
- { 0x0ebb, 0x314b }, /* Hangul_Khieuq ã…‹ HANGUL LETTER KHIEUKH */
- { 0x0ebc, 0x314c }, /* Hangul_Tieut ㅌ HANGUL LETTER THIEUTH */
- { 0x0ebd, 0x314d }, /* Hangul_Phieuf ã… HANGUL LETTER PHIEUPH */
- { 0x0ebe, 0x314e }, /* Hangul_Hieuh ã…Ž HANGUL LETTER HIEUH */
- { 0x0ebf, 0x314f }, /* Hangul_A ã… HANGUL LETTER A */
- { 0x0ec0, 0x3150 }, /* Hangul_AE ã… HANGUL LETTER AE */
- { 0x0ec1, 0x3151 }, /* Hangul_YA ã…‘ HANGUL LETTER YA */
- { 0x0ec2, 0x3152 }, /* Hangul_YAE ã…’ HANGUL LETTER YAE */
- { 0x0ec3, 0x3153 }, /* Hangul_EO ã…“ HANGUL LETTER EO */
- { 0x0ec4, 0x3154 }, /* Hangul_E ã…” HANGUL LETTER E */
- { 0x0ec5, 0x3155 }, /* Hangul_YEO ã…• HANGUL LETTER YEO */
- { 0x0ec6, 0x3156 }, /* Hangul_YE ã…– HANGUL LETTER YE */
- { 0x0ec7, 0x3157 }, /* Hangul_O ã…— HANGUL LETTER O */
- { 0x0ec8, 0x3158 }, /* Hangul_WA ã…˜ HANGUL LETTER WA */
- { 0x0ec9, 0x3159 }, /* Hangul_WAE ã…™ HANGUL LETTER WAE */
- { 0x0eca, 0x315a }, /* Hangul_OE ã…š HANGUL LETTER OE */
- { 0x0ecb, 0x315b }, /* Hangul_YO ã…› HANGUL LETTER YO */
- { 0x0ecc, 0x315c }, /* Hangul_U ㅜ HANGUL LETTER U */
- { 0x0ecd, 0x315d }, /* Hangul_WEO ã… HANGUL LETTER WEO */
- { 0x0ece, 0x315e }, /* Hangul_WE ã…ž HANGUL LETTER WE */
- { 0x0ecf, 0x315f }, /* Hangul_WI ã…Ÿ HANGUL LETTER WI */
- { 0x0ed0, 0x3160 }, /* Hangul_YU ã…  HANGUL LETTER YU */
- { 0x0ed1, 0x3161 }, /* Hangul_EU ã…¡ HANGUL LETTER EU */
- { 0x0ed2, 0x3162 }, /* Hangul_YI ã…¢ HANGUL LETTER YI */
- { 0x0ed3, 0x3163 }, /* Hangul_I ã…£ HANGUL LETTER I */
- { 0x0ed4, 0x11a8 }, /* Hangul_J_Kiyeog ᆨ HANGUL JONGSEONG KIYEOK */
- { 0x0ed5, 0x11a9 }, /* Hangul_J_SsangKiyeog ᆩ HANGUL JONGSEONG SSANGKIYEOK */
- { 0x0ed6, 0x11aa }, /* Hangul_J_KiyeogSios ᆪ HANGUL JONGSEONG KIYEOK-SIOS */
- { 0x0ed7, 0x11ab }, /* Hangul_J_Nieun ᆫ HANGUL JONGSEONG NIEUN */
- { 0x0ed8, 0x11ac }, /* Hangul_J_NieunJieuj ᆬ HANGUL JONGSEONG NIEUN-CIEUC */
- { 0x0ed9, 0x11ad }, /* Hangul_J_NieunHieuh ᆭ HANGUL JONGSEONG NIEUN-HIEUH */
- { 0x0eda, 0x11ae }, /* Hangul_J_Dikeud ᆮ HANGUL JONGSEONG TIKEUT */
- { 0x0edb, 0x11af }, /* Hangul_J_Rieul ᆯ HANGUL JONGSEONG RIEUL */
- { 0x0edc, 0x11b0 }, /* Hangul_J_RieulKiyeog ᆰ HANGUL JONGSEONG RIEUL-KIYEOK */
- { 0x0edd, 0x11b1 }, /* Hangul_J_RieulMieum ᆱ HANGUL JONGSEONG RIEUL-MIEUM */
- { 0x0ede, 0x11b2 }, /* Hangul_J_RieulPieub ᆲ HANGUL JONGSEONG RIEUL-PIEUP */
- { 0x0edf, 0x11b3 }, /* Hangul_J_RieulSios ᆳ HANGUL JONGSEONG RIEUL-SIOS */
- { 0x0ee0, 0x11b4 }, /* Hangul_J_RieulTieut ᆴ HANGUL JONGSEONG RIEUL-THIEUTH */
- { 0x0ee1, 0x11b5 }, /* Hangul_J_RieulPhieuf ᆵ HANGUL JONGSEONG RIEUL-PHIEUPH */
- { 0x0ee2, 0x11b6 }, /* Hangul_J_RieulHieuh ᆶ HANGUL JONGSEONG RIEUL-HIEUH */
- { 0x0ee3, 0x11b7 }, /* Hangul_J_Mieum ᆷ HANGUL JONGSEONG MIEUM */
- { 0x0ee4, 0x11b8 }, /* Hangul_J_Pieub ᆸ HANGUL JONGSEONG PIEUP */
- { 0x0ee5, 0x11b9 }, /* Hangul_J_PieubSios ᆹ HANGUL JONGSEONG PIEUP-SIOS */
- { 0x0ee6, 0x11ba }, /* Hangul_J_Sios ᆺ HANGUL JONGSEONG SIOS */
- { 0x0ee7, 0x11bb }, /* Hangul_J_SsangSios ᆻ HANGUL JONGSEONG SSANGSIOS */
- { 0x0ee8, 0x11bc }, /* Hangul_J_Ieung ᆼ HANGUL JONGSEONG IEUNG */
- { 0x0ee9, 0x11bd }, /* Hangul_J_Jieuj ᆽ HANGUL JONGSEONG CIEUC */
- { 0x0eea, 0x11be }, /* Hangul_J_Cieuc ᆾ HANGUL JONGSEONG CHIEUCH */
- { 0x0eeb, 0x11bf }, /* Hangul_J_Khieuq ᆿ HANGUL JONGSEONG KHIEUKH */
- { 0x0eec, 0x11c0 }, /* Hangul_J_Tieut ᇀ HANGUL JONGSEONG THIEUTH */
- { 0x0eed, 0x11c1 }, /* Hangul_J_Phieuf ᇠHANGUL JONGSEONG PHIEUPH */
- { 0x0eee, 0x11c2 }, /* Hangul_J_Hieuh ᇂ HANGUL JONGSEONG HIEUH */
- { 0x0eef, 0x316d }, /* Hangul_RieulYeorinHieuh ã…­ HANGUL LETTER RIEUL-YEORINHIEUH */
- { 0x0ef0, 0x3171 }, /* Hangul_SunkyeongeumMieum ã…± HANGUL LETTER KAPYEOUNMIEUM */
- { 0x0ef1, 0x3178 }, /* Hangul_SunkyeongeumPieub ã…¸ HANGUL LETTER KAPYEOUNPIEUP */
- { 0x0ef2, 0x317f }, /* Hangul_PanSios ã…¿ HANGUL LETTER PANSIOS */
- { 0x0ef3, 0x3181 }, /* Hangul_KkogjiDalrinIeung ㆠHANGUL LETTER YESIEUNG */
- { 0x0ef4, 0x3184 }, /* Hangul_SunkyeongeumPhieuf ㆄ HANGUL LETTER KAPYEOUNPHIEUPH */
- { 0x0ef5, 0x3186 }, /* Hangul_YeorinHieuh ㆆ HANGUL LETTER YEORINHIEUH */
- { 0x0ef6, 0x318d }, /* Hangul_AraeA ㆠHANGUL LETTER ARAEA */
- { 0x0ef7, 0x318e }, /* Hangul_AraeAE ㆎ HANGUL LETTER ARAEAE */
- { 0x0ef8, 0x11eb }, /* Hangul_J_PanSios ᇫ HANGUL JONGSEONG PANSIOS */
- { 0x0ef9, 0x11f0 }, /* Hangul_J_KkogjiDalrinIeung ᇰ HANGUL JONGSEONG YESIEUNG */
- { 0x0efa, 0x11f9 }, /* Hangul_J_YeorinHieuh ᇹ HANGUL JONGSEONG YEORINHIEUH */
- { 0x0eff, 0x20a9 }, /* Korean_Won â‚© WON SIGN */
- { 0x13a4, 0x20ac }, /* Euro € EURO SIGN */
- { 0x13bc, 0x0152 }, /* OE Å’ LATIN CAPITAL LIGATURE OE */
- { 0x13bd, 0x0153 }, /* oe Å“ LATIN SMALL LIGATURE OE */
- { 0x13be, 0x0178 }, /* Ydiaeresis Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS */
- { 0x20ac, 0x20ac }, /* EuroSign € EURO SIGN */
-};
-
-VISIBLE
-long keysym2ucs(KeySym keysym)
-{
- int min = 0;
- int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
- int mid;
-
- /* first check for Latin-1 characters (1:1 mapping) */
- if ((keysym >= 0x0020 && keysym <= 0x007e) ||
- (keysym >= 0x00a0 && keysym <= 0x00ff))
- return keysym;
-
- /* also check for directly encoded 24-bit UCS characters */
- if ((keysym & 0xff000000) == 0x01000000)
- return keysym & 0x00ffffff;
-
- /* binary search in table */
- while (max >= min) {
- mid = (min + max) / 2;
- if (keysymtab[mid].keysym < keysym)
- min = mid + 1;
- else if (keysymtab[mid].keysym > keysym)
- max = mid - 1;
- else {
- /* found it */
- return keysymtab[mid].ucs;
- }
- }
-
- /* no matching Unicode value found */
- return -1;
-}
diff --git a/nx-X11/programs/xterm/keysym2ucs.h b/nx-X11/programs/xterm/keysym2ucs.h
deleted file mode 100644
index 1f23ac662..000000000
--- a/nx-X11/programs/xterm/keysym2ucs.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* $XFree86: xc/programs/xterm/keysym2ucs.h,v 1.1 1999/06/12 15:37:18 dawes Exp $ */
-/*
- * This module converts keysym values into the corresponding ISO 10646-1
- * (UCS, Unicode) values.
- */
-
-#include <X11/X.h>
-
-long keysym2ucs(KeySym keysym);
diff --git a/nx-X11/programs/xterm/link_axp.com b/nx-X11/programs/xterm/link_axp.com
deleted file mode 100644
index 1f493a933..000000000
--- a/nx-X11/programs/xterm/link_axp.com
+++ /dev/null
@@ -1,107 +0,0 @@
-$! $XFree86: xc/programs/xterm/link_axp.com,v 1.1 2000/02/08 17:19:35 dawes Exp $
-$ SAVE_VERIFY='F$VERIFY(0)
-$ if p1 .Eqs. "CLEAN" then goto clean
-$ if p1 .Eqs. "CLOBBER" then goto clobber
-$ if p1 .Eqs. "INSTALL" then goto install
-$!
-$! Compile the X11R4 Xterm application
-$!
-$ Set Symbol/Scope=NoGlobal
-$!
-$! Define logicals pointing to the needed directories
-$!
-$ x11lib_device = f$parse("[.lib]",,,"DEVICE")
-$ x11lib_directory = f$parse("[.lib]",,,"DIRECTORY")
-$ define/nolog x11lib 'x11lib_device''x11lib_directory'
-$!
-$ x11inc_device = f$parse("[]",,,"DEVICE")
-$ x11inc_directory = f$parse("[]",,,"DIRECTORY")
-$ define/nolog x11inc 'x11inc_device''x11inc_directory'
-$!
-$ xmu_device = f$parse("[.lib.xmu]",,,"DEVICE")
-$ xmu_directory = f$parse("[.lib.xmu]",,,"DIRECTORY")
-$ define/nolog x11xmu 'xmu_device''xmu_directory'
-$!
-$ xbm_device = f$parse("[.lib.x11]",,,"DEVICE")
-$ xbm_directory = f$parse("[.lib.x11]",,,"DIRECTORY")
-$ define/nolog x11xbm 'xbm_device''xbm_directory'
-$!
-$ xaw_device = f$parse("[.lib.xaw]",,,"DEVICE")
-$ xaw_directory = f$parse("[.lib.xaw]",,,"DIRECTORY")
-$ define/nolog x11xaw 'xaw_device''xaw_directory'
-$!
-$ x11vms_device = f$parse("[.lib.misc]",,,"DEVICE")
-$ x11vms_directory = f$parse("[.lib.misc]",,,"DIRECTORY")
-$ define/nolog x11vms 'x11vms_device''x11vms_directory'
-$!
-$! Get the compiler options via the logical name COPTS
-$!
-$ cc_options = f$trnlnm("COPTS")
-$!
-$! Get the linker options via the logical name LOPTS
-$!
-$ link_options = f$trnlnm("LOPTS")
-$!
-$ write sys$output "Building XTERM Image"
-$ CALL MAKE XTERM.EXE "LINK ''link_options' /EXE=XTERM.EXE_AXP/CROSS/FULL/MAP=XTERM.MAP XTERM_AXP/OPT" *.OBJ
-$!
-$ deassign x11lib
-$ deassign x11vms
-$ deassign x11xmu
-$ deassign x11xbm
-$ deassign x11xaw
-$!
-$ exit
-$!
-$ Clobber: ! Delete executables, Purge directory and clean up object files and listings
-$ Delete/noconfirm/log *.exe;*
-$!
-$ Clean: ! Purge directory, clean up object files and listings
-$ Purge
-$ Delete/noconfirm/log *.lis;*
-$ Delete/noconfirm/log *.obj;*
-$!
-$ exit
-$!
-$ Install:
-$ Copy/log *.exe x11bin:
-$ exit
-$!
-$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
-$ V = 'F$Verify(0)
-$! P1 = What we are trying to make
-$! P2 = Command to make it
-$! P3 - P8 What it depends on
-$
-$ If F$Search(P1) .Eqs. "" Then Goto Makeit
-$ Time = F$CvTime(F$File(P1,"RDT"))
-$arg=3
-$Loop:
-$ Argument = P'arg
-$ If Argument .Eqs. "" Then Goto Exit
-$ El=0
-$Loop2:
-$ File = F$Element(El," ",Argument)
-$ If File .Eqs. " " Then Goto Endl
-$ AFile = ""
-$Loop3:
-$ OFile = AFile
-$ AFile = F$Search(File)
-$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
-$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
-$ Goto Loop3
-$NextEL:
-$ El = El + 1
-$ Goto Loop2
-$EndL:
-$ arg=arg+1
-$ If arg .Le. 8 Then Goto Loop
-$ Goto Exit
-$
-$Makeit:
-$ Set Verify
-$ 'P2
-$ VV='F$Verify(0)
-$Exit:
-$ If V Then Set Verify
-$ENDSUBROUTINE
diff --git a/nx-X11/programs/xterm/main.c b/nx-X11/programs/xterm/main.c
deleted file mode 100644
index 36068a474..000000000
--- a/nx-X11/programs/xterm/main.c
+++ /dev/null
@@ -1,4943 +0,0 @@
-/* $XTermId: main.c,v 1.477 2005/11/13 23:10:36 tom Exp $ */
-
-#if !defined(lint) && 0
-static char *rid = "$Xorg: main.c,v 1.7 2001/02/09 02:06:02 xorgcvs Exp $";
-#endif /* lint */
-
-/*
- * W A R N I N G
- *
- * If you think you know what all of this code is doing, you are
- * probably very mistaken. There be serious and nasty dragons here.
- *
- * This client is *not* to be taken as an example of how to write X
- * Toolkit applications. It is in need of a substantial rewrite,
- * ideally to create a generic tty widget with several different parsing
- * widgets so that you can plug 'em together any way you want. Don't
- * hold your breath, though....
- */
-
-/***********************************************************
-
-Copyright 2002-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-Copyright 1987, 1988 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 1987, 1988 by Digital Equipment Corporation, Maynard.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be used in
-advertising or publicity pertaining to distribution of the software
-without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/**************************************************************************/
-/* */
-/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */
-/* */
-/* NX-X11, NX protocol compression and NX extensions to this software */
-/* are copyright of NoMachine. Redistribution and use of the present */
-/* software is allowed according to terms specified in the file LICENSE */
-/* which comes in the source distribution. */
-/* */
-/* Check http://www.nomachine.com/licensing.html for applicability. */
-/* */
-/* NX and NoMachine are trademarks of Medialogic S.p.A. */
-/* */
-/* All rights reserved. */
-/* */
-/**************************************************************************/
-
-/* $XFree86: xc/programs/xterm/main.c,v 3.199 2005/11/13 23:10:36 dickey Exp $ */
-
-#ifdef NX_TRANS_EXIT
-
-/*
- * Redefine the libc exit() function to be
- * sure we get rid of proxy and detect any
- * abnormal termination.
- */
-
-extern void NXTransExit(int code) __attribute__((noreturn));
-
-#define exit(code) NXTransExit(code)
-
-#endif /* #ifdef NX_TRANS_EXIT */
-
-/* main.c */
-
-#define RES_OFFSET(field) XtOffsetOf(XTERM_RESOURCE, field)
-
-#include <xterm.h>
-
-#include <X11/cursorfont.h>
-#include <X11/Xlocale.h>
-
-#if OPT_TOOLBAR
-
-#if defined(HAVE_LIB_XAW)
-#include <X11/Xaw/Form.h>
-#elif defined(HAVE_LIB_XAW3D)
-#include <X11/Xaw3d/Form.h>
-#elif defined(HAVE_LIB_NEXTAW)
-#include <X11/neXtaw/Form.h>
-#elif defined(HAVE_LIB_XAWPLUS)
-#include <X11/XawPlus/Form.h>
-#endif
-
-#endif /* OPT_TOOLBAR */
-
-#include <pwd.h>
-#include <ctype.h>
-
-#include <data.h>
-#include <error.h>
-#include <menu.h>
-#include <main.h>
-#include <xstrings.h>
-#include <xterm_io.h>
-
-#if OPT_WIDE_CHARS
-#include <charclass.h>
-#endif
-
-#ifdef __osf__
-#define USE_SYSV_SIGNALS
-#define WTMP
-#include <pty.h> /* openpty() */
-#endif
-
-#ifdef __sgi
-#include <grp.h> /* initgroups() */
-#endif
-
-#ifdef USE_ISPTS_FLAG
-static Bool IsPts = False;
-#endif
-
-#if defined(__SCO__) || defined(SVR4) || defined(_POSIX_SOURCE)
-#define USE_POSIX_SIGNALS
-#endif
-
-#if defined(SYSV) && !defined(SVR4) && !defined(ISC22) && !defined(ISC30)
-/* older SYSV systems cannot ignore SIGHUP.
- Shell hangs, or you get extra shells, or something like that */
-#define USE_SYSV_SIGHUP
-#endif
-
-#if defined(sony) && defined(bsd43) && !defined(KANJI)
-#define KANJI
-#endif
-
-#ifdef linux
-#define USE_SYSV_PGRP
-#define USE_SYSV_SIGNALS
-#define WTMP
-#ifdef __GLIBC__
-#if (__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1))
-#include <pty.h>
-#endif
-#endif
-#endif
-
-#ifdef __MVS__
-#define USE_SYSV_PGRP
-#define USE_SYSV_SIGNALS
-#endif
-
-#ifdef __CYGWIN__
-#define LASTLOG
-#define WTMP
-#endif
-
-#ifdef __SCO__
-#ifndef _SVID3
-#define _SVID3
-#endif
-#endif
-
-#if defined(__GLIBC__) && !defined(linux)
-#define USE_SYSV_PGRP
-#define WTMP
-#define HAS_BSD_GROUPS
-#endif
-
-#if defined(USE_TTY_GROUP) || defined(USE_UTMP_SETGID)
-#include <grp.h>
-#endif
-
-#ifndef TTY_GROUP_NAME
-#define TTY_GROUP_NAME "tty"
-#endif
-
-#include <sys/stat.h>
-
-#ifdef Lynx
-#ifndef BSDLY
-#define BSDLY 0
-#endif
-#ifndef VTDLY
-#define VTDLY 0
-#endif
-#ifndef FFDLY
-#define FFDLY 0
-#endif
-#endif
-
-#ifdef SYSV /* { */
-
-#ifdef USE_USG_PTYS /* AT&T SYSV has no ptyio.h */
-#include <sys/stropts.h> /* for I_PUSH */
-#include <poll.h> /* for POLLIN */
-#endif /* USE_USG_PTYS */
-
-#define USE_SYSV_SIGNALS
-#define USE_SYSV_PGRP
-
-#if !defined(TIOCSWINSZ) || defined(__SCO__) || defined(__UNIXWARE__)
-#define USE_SYSV_ENVVARS /* COLUMNS/LINES vs. TERMCAP */
-#endif
-
-/*
- * now get system-specific includes
- */
-#ifdef CRAY
-#define HAS_BSD_GROUPS
-#endif
-
-#ifdef macII
-#define HAS_BSD_GROUPS
-#include <sys/ttychars.h>
-#undef USE_SYSV_ENVVARS
-#undef FIOCLEX
-#undef FIONCLEX
-#define setpgrp2 setpgrp
-#include <sgtty.h>
-#include <sys/resource.h>
-#endif
-
-#ifdef __hpux
-#define HAS_BSD_GROUPS
-#include <sys/ptyio.h>
-#endif /* __hpux */
-
-#ifdef __osf__
-#define HAS_BSD_GROUPS
-#undef USE_SYSV_PGRP
-#define setpgrp setpgid
-#endif
-
-#ifdef __sgi
-#define HAS_BSD_GROUPS
-#include <sys/sysmacros.h>
-#endif /* __sgi */
-
-#ifdef sun
-#include <sys/strredir.h>
-#endif
-
-#else /* } !SYSV { */ /* BSD systems */
-
-#ifdef __QNX__
-
-#ifndef __QNXNTO__
-#define ttyslot() 1
-#else
-#define USE_SYSV_PGRP
-extern __inline__
-ttyslot()
-{
- return 1; /* yuk */
-}
-#endif
-
-#else
-
-#if defined(__INTERIX) || defined(__APPLE__)
-#define setpgrp setpgid
-#endif
-
-#ifndef linux
-#ifndef VMS
-#ifndef USE_POSIX_TERMIOS
-#ifndef USE_ANY_SYSV_TERMIO
-#include <sgtty.h>
-#endif
-#endif /* USE_POSIX_TERMIOS */
-#ifdef Lynx
-#include <resource.h>
-#else
-#include <sys/resource.h>
-#endif
-#ifndef __INTERIX
-#define HAS_BSD_GROUPS
-#endif
-#endif /* !VMS */
-#endif /* !linux */
-
-#endif /* __QNX__ */
-
-#endif /* } !SYSV */
-
-#if defined(SVR4) && !defined(__CYGWIN__)
-#define HAS_SAVED_IDS_AND_SETEUID
-#endif
-
-#ifdef linux
-#define HAS_SAVED_IDS_AND_SETEUID
-#endif
-
-/* Xpoll.h and <sys/param.h> on glibc 2.1 systems have colliding NBBY's */
-#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
-#ifndef NOFILE
-#define NOFILE OPEN_MAX
-#endif
-#elif !(defined(VMS) || defined(WIN32) || defined(Lynx) || defined(__GNU__) || defined(__MVS__))
-#include <sys/param.h> /* for NOFILE */
-#endif
-
-#if defined(BSD) && (BSD >= 199103)
-#define WTMP
-#define HAS_SAVED_IDS_AND_SETEUID
-#endif
-
-#include <stdio.h>
-
-#ifdef __hpux
-#include <sys/utsname.h>
-#endif /* __hpux */
-
-#if defined(apollo) && (OSMAJORVERSION == 10) && (OSMINORVERSION < 4)
-#define ttyslot() 1
-#endif /* apollo */
-
-#if defined(UTMPX_FOR_UTMP)
-#define UTMP_STR utmpx
-#else
-#define UTMP_STR utmp
-#endif
-
-#if defined(USE_UTEMPTER)
-#include <utempter.h>
-#endif
-
-#if defined(UTMPX_FOR_UTMP)
-
-#include <utmpx.h>
-
-#define call_endutent endutxent
-#define call_getutid getutxid
-#define call_pututline pututxline
-#define call_setutent setutxent
-#define call_updwtmp updwtmpx
-
-#elif defined(HAVE_UTMP)
-
-#include <utmp.h>
-
-#if defined(_CRAY) && (OSMAJORVERSION < 8)
-extern struct utmp *getutid __((struct utmp * _Id));
-#endif
-
-#define call_endutent endutent
-#define call_getutid getutid
-#define call_pututline pututline
-#define call_setutent setutent
-#define call_updwtmp updwtmp
-
-#endif
-
-#if defined(USE_LASTLOG) && defined(HAVE_LASTLOG_H)
-#include <lastlog.h> /* caution: glibc 2.3.5 includes utmp.h here */
-#endif
-
-#ifndef USE_LASTLOGX
-#if defined(_NETBSD_SOURCE) && defined(_PATH_LASTLOGX)
-#define USE_LASTLOGX 1
-#endif
-#endif
-
-#ifdef PUCC_PTYD
-#include <local/openpty.h>
-#endif /* PUCC_PTYD */
-
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__APPLE__)
-#include <util.h> /* openpty() */
-#endif
-
-#ifdef __FreeBSD__
-#include <libutil.h> /* openpty() */
-#endif
-
-#if !defined(UTMP_FILENAME)
-#if defined(UTMP_FILE)
-#define UTMP_FILENAME UTMP_FILE
-#elif defined(_PATH_UTMP)
-#define UTMP_FILENAME _PATH_UTMP
-#else
-#define UTMP_FILENAME "/etc/utmp"
-#endif
-#endif
-
-#ifndef LASTLOG_FILENAME
-#ifdef _PATH_LASTLOG
-#define LASTLOG_FILENAME _PATH_LASTLOG
-#else
-#define LASTLOG_FILENAME "/usr/adm/lastlog" /* only on BSD systems */
-#endif
-#endif
-
-#if !defined(WTMP_FILENAME)
-#if defined(WTMP_FILE)
-#define WTMP_FILENAME WTMP_FILE
-#elif defined(_PATH_WTMP)
-#define WTMP_FILENAME _PATH_WTMP
-#elif defined(SYSV)
-#define WTMP_FILENAME "/etc/wtmp"
-#else
-#define WTMP_FILENAME "/usr/adm/wtmp"
-#endif
-#endif
-
-#include <signal.h>
-
-#if defined(__SCO__) || (defined(ISC) && !defined(_POSIX_SOURCE))
-#undef SIGTSTP /* defined, but not the BSD way */
-#endif
-
-#ifdef SIGTSTP
-#include <sys/wait.h>
-#endif
-
-#if defined(__SCO__) || defined(__UNIXWARE__)
-#undef ECHOKE
-#undef ECHOCTL
-#endif
-
-#ifdef X_NOT_POSIX
-extern long lseek();
-#if defined(USG) || defined(SVR4)
-extern unsigned sleep();
-#else
-extern void sleep();
-#endif
-extern char *ttyname();
-#endif
-
-#ifdef SYSV
-extern char *ptsname(int);
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- extern int tgetent(char *ptr, char *name);
- extern char *tgetstr(char *name, char **ptr);
-
-#ifdef __cplusplus
-}
-#endif
-#ifndef VMS
-static SIGNAL_T reapchild(int n);
-static int spawn(void);
-static void remove_termcap_entry(char *buf, char *str);
-#ifdef USE_PTY_SEARCH
-static int pty_search(int *pty);
-#endif
-#endif /* ! VMS */
-
-static int get_pty(int *pty, char *from);
-static void get_terminal(void);
-static void resize(TScreen * s, char *oldtc, char *newtc);
-static void set_owner(char *device, uid_t uid, gid_t gid, mode_t mode);
-
-static Bool added_utmp_entry = False;
-
-#if defined(USE_UTMP_SETGID)
-static int utmpGid = -1;
-static int really_get_pty(int *pty, char *from);
-#endif
-
-#if defined(USE_SYSV_UTMP) && !defined(USE_UTEMPTER)
-static Bool xterm_exiting = False;
-#endif
-
-static char *explicit_shname = NULL;
-
-/*
-** Ordinarily it should be okay to omit the assignment in the following
-** statement. Apparently the c89 compiler on AIX 4.1.3 has a bug, or does
-** it? Without the assignment though the compiler will init command_to_exec
-** to 0xffffffff instead of NULL; and subsequent usage, e.g. in spawn() to
-** SEGV.
-*/
-static char **command_to_exec = NULL;
-
-#if OPT_LUIT_PROG
-static char **command_to_exec_with_luit = NULL;
-#endif
-
-#define TERMCAP_ERASE "kb"
-#define VAL_INITIAL_ERASE A2E(8)
-
-/* choose a nice default value for speed - if we make it too low, users who
- * mistakenly use $TERM set to vt100 will get padding delays. Setting it to a
- * higher value is not useful since legacy applications (termcap) that care
- * about padding generally store the code in a short, which does not have
- * enough bits for the extended values.
- */
-#ifdef B38400 /* everyone should define this */
-#define VAL_LINE_SPEED B38400
-#else /* ...but xterm's used this for a long time */
-#define VAL_LINE_SPEED B9600
-#endif
-
-/* allow use of system default characters if defined and reasonable */
-#ifndef CBRK
-#define CBRK 0
-#endif
-#ifndef CDSUSP
-#define CDSUSP CONTROL('Y')
-#endif
-#ifndef CEOF
-#define CEOF CONTROL('D')
-#endif
-#ifndef CEOL
-#define CEOL 0
-#endif
-#ifndef CFLUSH
-#define CFLUSH CONTROL('O')
-#endif
-#ifndef CINTR
-#define CINTR 0177
-#endif
-#ifndef CKILL
-#define CKILL '@'
-#endif
-#ifndef CLNEXT
-#define CLNEXT CONTROL('V')
-#endif
-#ifndef CNUL
-#define CNUL 0
-#endif
-#ifndef CQUIT
-#define CQUIT CONTROL('\\')
-#endif
-#ifndef CRPRNT
-#define CRPRNT CONTROL('R')
-#endif
-#ifndef CSTART
-#define CSTART CONTROL('Q')
-#endif
-#ifndef CSTOP
-#define CSTOP CONTROL('S')
-#endif
-#ifndef CSUSP
-#define CSUSP CONTROL('Z')
-#endif
-#ifndef CSWTCH
-#define CSWTCH 0
-#endif
-#ifndef CWERASE
-#define CWERASE CONTROL('W')
-#endif
-
-#ifdef USE_ANY_SYSV_TERMIO
-#define TERMIO_STRUCT struct termio
-#define ttySetAttr(fd, datap) ioctl(fd, TCSETA, datap)
-#define ttyGetAttr(fd, datap) ioctl(fd, TCGETA, datap)
-#elif defined(USE_POSIX_TERMIOS)
-#define TERMIO_STRUCT struct termios
-#define ttySetAttr(fd, datap) tcsetattr(fd, TCSANOW, datap)
-#define ttyGetAttr(fd, datap) tcgetattr(fd, datap)
-#endif /* USE_ANY_SYSV_TERMIO */
-
-#ifndef VMS
-#ifdef TERMIO_STRUCT
-/* The following structures are initialized in main() in order
-** to eliminate any assumptions about the internal order of their
-** contents.
-*/
-static TERMIO_STRUCT d_tio;
-
-#ifdef HAS_LTCHARS
-static struct ltchars d_ltc;
-#endif /* HAS_LTCHARS */
-
-#ifdef TIOCLSET
-static unsigned int d_lmode;
-#endif /* TIOCLSET */
-
-#else /* !TERMIO_STRUCT */
-static struct sgttyb d_sg =
-{
- 0, 0, 0177, CKILL, (EVENP | ODDP | ECHO | XTABS | CRMOD)
-};
-static struct tchars d_tc =
-{
- CINTR, CQUIT, CSTART,
- CSTOP, CEOF, CBRK
-};
-static struct ltchars d_ltc =
-{
- CSUSP, CDSUSP, CRPRNT,
- CFLUSH, CWERASE, CLNEXT
-};
-static int d_disipline = NTTYDISC;
-static long int d_lmode = LCRTBS | LCRTERA | LCRTKIL | LCTLECH;
-#ifdef sony
-static long int d_jmode = KM_SYSSJIS | KM_ASCII;
-static struct jtchars d_jtc =
-{
- 'J', 'B'
-};
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
-#endif /* ! VMS */
-
-/*
- * SYSV has the termio.c_cc[V] and ltchars; BSD has tchars and ltchars;
- * SVR4 has only termio.c_cc, but it includes everything from ltchars.
- * POSIX termios has termios.c_cc, which is similar to SVR4.
- */
-#define TTYMODE(name) { name, sizeof(name)-1, 0, 0 }
-static int override_tty_modes = 0;
-/* *INDENT-OFF* */
-static struct _xttymodes {
- char *name;
- size_t len;
- int set;
- Char value;
-} ttymodelist[] = {
- TTYMODE("intr"), /* tchars.t_intrc ; VINTR */
-#define XTTYMODE_intr 0
- TTYMODE("quit"), /* tchars.t_quitc ; VQUIT */
-#define XTTYMODE_quit 1
- TTYMODE("erase"), /* sgttyb.sg_erase ; VERASE */
-#define XTTYMODE_erase 2
- TTYMODE("kill"), /* sgttyb.sg_kill ; VKILL */
-#define XTTYMODE_kill 3
- TTYMODE("eof"), /* tchars.t_eofc ; VEOF */
-#define XTTYMODE_eof 4
- TTYMODE("eol"), /* VEOL */
-#define XTTYMODE_eol 5
- TTYMODE("swtch"), /* VSWTCH */
-#define XTTYMODE_swtch 6
- TTYMODE("start"), /* tchars.t_startc ; VSTART */
-#define XTTYMODE_start 7
- TTYMODE("stop"), /* tchars.t_stopc ; VSTOP */
-#define XTTYMODE_stop 8
- TTYMODE("brk"), /* tchars.t_brkc */
-#define XTTYMODE_brk 9
- TTYMODE("susp"), /* ltchars.t_suspc ; VSUSP */
-#define XTTYMODE_susp 10
- TTYMODE("dsusp"), /* ltchars.t_dsuspc ; VDSUSP */
-#define XTTYMODE_dsusp 11
- TTYMODE("rprnt"), /* ltchars.t_rprntc ; VREPRINT */
-#define XTTYMODE_rprnt 12
- TTYMODE("flush"), /* ltchars.t_flushc ; VDISCARD */
-#define XTTYMODE_flush 13
- TTYMODE("weras"), /* ltchars.t_werasc ; VWERASE */
-#define XTTYMODE_weras 14
- TTYMODE("lnext"), /* ltchars.t_lnextc ; VLNEXT */
-#define XTTYMODE_lnext 15
- TTYMODE("status"), /* VSTATUS */
-#define XTTYMODE_status 16
- TTYMODE("erase2"), /* VERASE2 */
-#define XTTYMODE_erase2 17
- TTYMODE("eol2"), /* VEOL2 */
-#define XTTYMODE_eol2 18
- { NULL, 0, 0, '\0' }, /* end of data */
-};
-/* *INDENT-ON* */
-
-#define TMODE(ind,var) if (ttymodelist[ind].set) var = ttymodelist[ind].value
-
-static int parse_tty_modes(char *s, struct _xttymodes *modelist);
-
-#ifdef USE_SYSV_UTMP
-#if (defined(AIXV3) && (OSMAJORVERSION < 4)) && !(defined(getutid))
-extern struct utmp *getutid();
-#endif /* AIXV3 */
-
-#else /* not USE_SYSV_UTMP */
-static char etc_utmp[] = UTMP_FILENAME;
-#endif /* USE_SYSV_UTMP */
-
-#ifndef USE_UTEMPTER
-#ifdef USE_LASTLOG
-static char etc_lastlog[] = LASTLOG_FILENAME;
-#endif
-
-#ifdef WTMP
-static char etc_wtmp[] = WTMP_FILENAME;
-#endif
-#endif /* !USE_UTEMPTER */
-
-/*
- * Some people with 4.3bsd /bin/login seem to like to use login -p -f user
- * to implement xterm -ls. They can turn on USE_LOGIN_DASH_P and turn off
- * WTMP and USE_LASTLOG.
- */
-#ifdef USE_LOGIN_DASH_P
-#ifndef LOGIN_FILENAME
-#define LOGIN_FILENAME "/bin/login"
-#endif
-static char bin_login[] = LOGIN_FILENAME;
-#endif
-
-static char passedPty[PTYCHARLEN + 1]; /* name if pty if slave */
-
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
-static int Console;
-#include <X11/Xmu/SysUtil.h> /* XmuGetHostname */
-#define MIT_CONSOLE_LEN 12
-#define MIT_CONSOLE "MIT_CONSOLE_"
-static char mit_console_name[255 + MIT_CONSOLE_LEN + 1] = MIT_CONSOLE;
-static Atom mit_console;
-#endif /* TIOCCONS */
-
-#ifndef USE_SYSV_UTMP
-static int tslot;
-#endif /* USE_SYSV_UTMP */
-static sigjmp_buf env;
-
-#define SetUtmpHost(dst, screen) \
- { \
- char host[sizeof(dst) + 1]; \
- strncpy(host, DisplayString(screen->display), sizeof(host)); \
- TRACE(("DisplayString(%s)\n", host)); \
- if (!resource.utmpDisplayId) { \
- char *endptr = strrchr(host, ':'); \
- if (endptr) { \
- TRACE(("trimming display-id '%s'\n", host)); \
- *endptr = '\0'; \
- } \
- } \
- strncpy(dst, host, sizeof(dst)); \
- }
-
-/* used by VT (charproc.c) */
-
-static XtResource application_resources[] =
-{
- Sres("name", "Name", xterm_name, DFT_TERMTYPE),
- Sres("iconGeometry", "IconGeometry", icon_geometry, NULL),
- Sres(XtNtitle, XtCTitle, title, NULL),
- Sres(XtNiconName, XtCIconName, icon_name, NULL),
- Sres("termName", "TermName", term_name, NULL),
- Sres("ttyModes", "TtyModes", tty_modes, NULL),
- Bres("hold", "Hold", hold_screen, False),
- Bres("utmpInhibit", "UtmpInhibit", utmpInhibit, False),
- Bres("utmpDisplayId", "UtmpDisplayId", utmpDisplayId, True),
- Bres("messages", "Messages", messages, True),
- Ires("minBufSize", "MinBufSize", minBufSize, 4096),
- Ires("maxBufSize", "MaxBufSize", maxBufSize, 32768),
- Sres("keyboardType", "KeyboardType", keyboardType, "unknown"),
- Bres("sunFunctionKeys", "SunFunctionKeys", sunFunctionKeys, False),
-#if OPT_SUNPC_KBD
- Bres("sunKeyboard", "SunKeyboard", sunKeyboard, False),
-#endif
-#if OPT_HP_FUNC_KEYS
- Bres("hpFunctionKeys", "HpFunctionKeys", hpFunctionKeys, False),
-#endif
-#if OPT_SCO_FUNC_KEYS
- Bres("scoFunctionKeys", "ScoFunctionKeys", scoFunctionKeys, False),
-#endif
-#if OPT_INITIAL_ERASE
- Bres("ptyInitialErase", "PtyInitialErase", ptyInitialErase, DEF_INITIAL_ERASE),
- Bres("backarrowKeyIsErase", "BackarrowKeyIsErase", backarrow_is_erase, DEF_BACKARO_ERASE),
-#endif
- Bres("waitForMap", "WaitForMap", wait_for_map, False),
- Bres("useInsertMode", "UseInsertMode", useInsertMode, False),
-#if OPT_ZICONBEEP
- Ires("zIconBeep", "ZIconBeep", zIconBeep, 0),
-#endif
-#if OPT_PTY_HANDSHAKE
- Bres("ptyHandshake", "PtyHandshake", ptyHandshake, True),
-#endif
-#if OPT_SAME_NAME
- Bres("sameName", "SameName", sameName, True),
-#endif
-#if OPT_SESSION_MGT
- Bres("sessionMgt", "SessionMgt", sessionMgt, True),
-#endif
-#if OPT_TOOLBAR
- Bres(XtNtoolBar, XtCToolBar, toolBar, True),
-#endif
-};
-
-static char *fallback_resources[] =
-{
- "*SimpleMenu*menuLabel.vertSpace: 100",
- "*SimpleMenu*HorizontalMargins: 16",
- "*SimpleMenu*Sme.height: 16",
- "*SimpleMenu*Cursor: left_ptr",
- "*mainMenu.Label: Main Options (no app-defaults)",
- "*vtMenu.Label: VT Options (no app-defaults)",
- "*fontMenu.Label: VT Fonts (no app-defaults)",
-#if OPT_TEK4014
- "*tekMenu.Label: Tek Options (no app-defaults)",
-#endif
- NULL
-};
-
-/* Command line options table. Only resources are entered here...there is a
- pass over the remaining options after XrmParseCommand is let loose. */
-/* *INDENT-OFF* */
-static XrmOptionDescRec optionDescList[] = {
-{"-geometry", "*vt100.geometry",XrmoptionSepArg, (caddr_t) NULL},
-{"-132", "*c132", XrmoptionNoArg, (caddr_t) "on"},
-{"+132", "*c132", XrmoptionNoArg, (caddr_t) "off"},
-{"-ah", "*alwaysHighlight", XrmoptionNoArg, (caddr_t) "on"},
-{"+ah", "*alwaysHighlight", XrmoptionNoArg, (caddr_t) "off"},
-{"-aw", "*autoWrap", XrmoptionNoArg, (caddr_t) "on"},
-{"+aw", "*autoWrap", XrmoptionNoArg, (caddr_t) "off"},
-#ifndef NO_ACTIVE_ICON
-{"-ai", "*activeIcon", XrmoptionNoArg, (caddr_t) "off"},
-{"+ai", "*activeIcon", XrmoptionNoArg, (caddr_t) "on"},
-#endif /* NO_ACTIVE_ICON */
-{"-b", "*internalBorder",XrmoptionSepArg, (caddr_t) NULL},
-{"-bc", "*cursorBlink", XrmoptionNoArg, (caddr_t) "on"},
-{"+bc", "*cursorBlink", XrmoptionNoArg, (caddr_t) "off"},
-{"-bcf", "*cursorOffTime",XrmoptionSepArg, (caddr_t) NULL},
-{"-bcn", "*cursorOnTime",XrmoptionSepArg, (caddr_t) NULL},
-{"-bdc", "*colorBDMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+bdc", "*colorBDMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-cb", "*cutToBeginningOfLine", XrmoptionNoArg, (caddr_t) "off"},
-{"+cb", "*cutToBeginningOfLine", XrmoptionNoArg, (caddr_t) "on"},
-{"-cc", "*charClass", XrmoptionSepArg, (caddr_t) NULL},
-{"-cm", "*colorMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+cm", "*colorMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-cn", "*cutNewline", XrmoptionNoArg, (caddr_t) "off"},
-{"+cn", "*cutNewline", XrmoptionNoArg, (caddr_t) "on"},
-{"-cr", "*cursorColor", XrmoptionSepArg, (caddr_t) NULL},
-{"-cu", "*curses", XrmoptionNoArg, (caddr_t) "on"},
-{"+cu", "*curses", XrmoptionNoArg, (caddr_t) "off"},
-{"-dc", "*dynamicColors",XrmoptionNoArg, (caddr_t) "off"},
-{"+dc", "*dynamicColors",XrmoptionNoArg, (caddr_t) "on"},
-{"-fb", "*boldFont", XrmoptionSepArg, (caddr_t) NULL},
-{"-fbb", "*freeBoldBox", XrmoptionNoArg, (caddr_t)"off"},
-{"+fbb", "*freeBoldBox", XrmoptionNoArg, (caddr_t)"on"},
-{"-fbx", "*forceBoxChars", XrmoptionNoArg, (caddr_t)"off"},
-{"+fbx", "*forceBoxChars", XrmoptionNoArg, (caddr_t)"on"},
-#ifndef NO_ACTIVE_ICON
-{"-fi", "*iconFont", XrmoptionSepArg, (caddr_t) NULL},
-#endif /* NO_ACTIVE_ICON */
-#if OPT_RENDERFONT
-{"-fa", "*faceName", XrmoptionSepArg, (caddr_t) NULL},
-{"-fd", "*faceNameDoublesize", XrmoptionSepArg, (caddr_t) NULL},
-{"-fs", "*faceSize", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_WIDE_CHARS
-{"-fw", "*wideFont", XrmoptionSepArg, (caddr_t) NULL},
-{"-fwb", "*wideBoldFont", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_INPUT_METHOD
-{"-fx", "*ximFont", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_HIGHLIGHT_COLOR
-{"-hc", "*highlightColor", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_HP_FUNC_KEYS
-{"-hf", "*hpFunctionKeys",XrmoptionNoArg, (caddr_t) "on"},
-{"+hf", "*hpFunctionKeys",XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-hold", "*hold", XrmoptionNoArg, (caddr_t) "on"},
-{"+hold", "*hold", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_INITIAL_ERASE
-{"-ie", "*ptyInitialErase", XrmoptionNoArg, (caddr_t) "on"},
-{"+ie", "*ptyInitialErase", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-j", "*jumpScroll", XrmoptionNoArg, (caddr_t) "on"},
-{"+j", "*jumpScroll", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_C1_PRINT
-{"-k8", "*allowC1Printable", XrmoptionNoArg, (caddr_t) "on"},
-{"+k8", "*allowC1Printable", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-kt", "*keyboardType", XrmoptionSepArg, (caddr_t) NULL},
-{"+kt", "*keyboardType", XrmoptionSepArg, (caddr_t) NULL},
-/* parse logging options anyway for compatibility */
-{"-l", "*logging", XrmoptionNoArg, (caddr_t) "on"},
-{"+l", "*logging", XrmoptionNoArg, (caddr_t) "off"},
-{"-lf", "*logFile", XrmoptionSepArg, (caddr_t) NULL},
-{"-ls", "*loginShell", XrmoptionNoArg, (caddr_t) "on"},
-{"+ls", "*loginShell", XrmoptionNoArg, (caddr_t) "off"},
-{"-mb", "*marginBell", XrmoptionNoArg, (caddr_t) "on"},
-{"+mb", "*marginBell", XrmoptionNoArg, (caddr_t) "off"},
-{"-mc", "*multiClickTime", XrmoptionSepArg, (caddr_t) NULL},
-{"-mesg", "*messages", XrmoptionNoArg, (caddr_t) "off"},
-{"+mesg", "*messages", XrmoptionNoArg, (caddr_t) "on"},
-{"-ms", "*pointerColor",XrmoptionSepArg, (caddr_t) NULL},
-{"-nb", "*nMarginBell", XrmoptionSepArg, (caddr_t) NULL},
-{"-nul", "*underLine", XrmoptionNoArg, (caddr_t) "off"},
-{"+nul", "*underLine", XrmoptionNoArg, (caddr_t) "on"},
-{"-pc", "*boldColors", XrmoptionNoArg, (caddr_t) "on"},
-{"+pc", "*boldColors", XrmoptionNoArg, (caddr_t) "off"},
-{"-rw", "*reverseWrap", XrmoptionNoArg, (caddr_t) "on"},
-{"+rw", "*reverseWrap", XrmoptionNoArg, (caddr_t) "off"},
-{"-s", "*multiScroll", XrmoptionNoArg, (caddr_t) "on"},
-{"+s", "*multiScroll", XrmoptionNoArg, (caddr_t) "off"},
-{"-sb", "*scrollBar", XrmoptionNoArg, (caddr_t) "on"},
-{"+sb", "*scrollBar", XrmoptionNoArg, (caddr_t) "off"},
-#ifdef SCROLLBAR_RIGHT
-{"-leftbar", "*rightScrollBar", XrmoptionNoArg, (caddr_t) "off"},
-{"-rightbar", "*rightScrollBar", XrmoptionNoArg, (caddr_t) "on"},
-#endif
-{"-rvc", "*colorRVMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+rvc", "*colorRVMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-sf", "*sunFunctionKeys", XrmoptionNoArg, (caddr_t) "on"},
-{"+sf", "*sunFunctionKeys", XrmoptionNoArg, (caddr_t) "off"},
-{"-si", "*scrollTtyOutput", XrmoptionNoArg, (caddr_t) "off"},
-{"+si", "*scrollTtyOutput", XrmoptionNoArg, (caddr_t) "on"},
-{"-sk", "*scrollKey", XrmoptionNoArg, (caddr_t) "on"},
-{"+sk", "*scrollKey", XrmoptionNoArg, (caddr_t) "off"},
-{"-sl", "*saveLines", XrmoptionSepArg, (caddr_t) NULL},
-#if OPT_SUNPC_KBD
-{"-sp", "*sunKeyboard", XrmoptionNoArg, (caddr_t) "on"},
-{"+sp", "*sunKeyboard", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-#if OPT_TEK4014
-{"-t", "*tekStartup", XrmoptionNoArg, (caddr_t) "on"},
-{"+t", "*tekStartup", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-ti", "*decTerminalID",XrmoptionSepArg, (caddr_t) NULL},
-{"-tm", "*ttyModes", XrmoptionSepArg, (caddr_t) NULL},
-{"-tn", "*termName", XrmoptionSepArg, (caddr_t) NULL},
-#if OPT_WIDE_CHARS
-{"-u8", "*utf8", XrmoptionNoArg, (caddr_t) "2"},
-{"+u8", "*utf8", XrmoptionNoArg, (caddr_t) "0"},
-#endif
-#if OPT_LUIT_PROG
-{"-lc", "*locale", XrmoptionNoArg, (caddr_t) "on"},
-{"+lc", "*locale", XrmoptionNoArg, (caddr_t) "off"},
-{"-lcc", "*localeFilter",XrmoptionSepArg, (caddr_t) NULL},
-{"-en", "*locale", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-{"-ulc", "*colorULMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+ulc", "*colorULMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-ulit", "*italicULMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+ulit", "*italicULMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-ut", "*utmpInhibit", XrmoptionNoArg, (caddr_t) "on"},
-{"+ut", "*utmpInhibit", XrmoptionNoArg, (caddr_t) "off"},
-{"-im", "*useInsertMode", XrmoptionNoArg, (caddr_t) "on"},
-{"+im", "*useInsertMode", XrmoptionNoArg, (caddr_t) "off"},
-{"-vb", "*visualBell", XrmoptionNoArg, (caddr_t) "on"},
-{"+vb", "*visualBell", XrmoptionNoArg, (caddr_t) "off"},
-{"-pob", "*popOnBell", XrmoptionNoArg, (caddr_t) "on"},
-{"+pob", "*popOnBell", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_WIDE_CHARS
-{"-wc", "*wideChars", XrmoptionNoArg, (caddr_t) "on"},
-{"+wc", "*wideChars", XrmoptionNoArg, (caddr_t) "off"},
-{"-mk_width", "*mkWidth", XrmoptionNoArg, (caddr_t) "on"},
-{"+mk_width", "*mkWidth", XrmoptionNoArg, (caddr_t) "off"},
-{"-cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "on"},
-{"+cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "on"},
-{"+wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_ZICONBEEP
-{"-ziconbeep", "*zIconBeep", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_SAME_NAME
-{"-samename", "*sameName", XrmoptionNoArg, (caddr_t) "on"},
-{"+samename", "*sameName", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-#if OPT_SESSION_MGT
-{"-sm", "*sessionMgt", XrmoptionNoArg, (caddr_t) "on"},
-{"+sm", "*sessionMgt", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-#if OPT_TOOLBAR
-{"-tb", "*"XtNtoolBar, XrmoptionNoArg, (caddr_t) "on"},
-{"+tb", "*"XtNtoolBar, XrmoptionNoArg, (caddr_t) "off"},
-#endif
-/* options that we process ourselves */
-{"-help", NULL, XrmoptionSkipNArgs, (caddr_t) NULL},
-{"-version", NULL, XrmoptionSkipNArgs, (caddr_t) NULL},
-{"-class", NULL, XrmoptionSkipArg, (caddr_t) NULL},
-{"-e", NULL, XrmoptionSkipLine, (caddr_t) NULL},
-{"-into", NULL, XrmoptionSkipArg, (caddr_t) NULL},
-/* bogus old compatibility stuff for which there are
- standard XtOpenApplication options now */
-{"%", "*tekGeometry", XrmoptionStickyArg, (caddr_t) NULL},
-{"#", ".iconGeometry",XrmoptionStickyArg, (caddr_t) NULL},
-{"-T", ".title", XrmoptionSepArg, (caddr_t) NULL},
-{"-n", "*iconName", XrmoptionSepArg, (caddr_t) NULL},
-{"-r", "*reverseVideo",XrmoptionNoArg, (caddr_t) "on"},
-{"+r", "*reverseVideo",XrmoptionNoArg, (caddr_t) "off"},
-{"-rv", "*reverseVideo",XrmoptionNoArg, (caddr_t) "on"},
-{"+rv", "*reverseVideo",XrmoptionNoArg, (caddr_t) "off"},
-{"-w", ".borderWidth", XrmoptionSepArg, (caddr_t) NULL},
-};
-
-static OptionHelp xtermOptions[] = {
-{ "-version", "print the version number" },
-{ "-help", "print out this message" },
-{ "-display displayname", "X server to contact" },
-{ "-geometry geom", "size (in characters) and position" },
-{ "-/+rv", "turn on/off reverse video" },
-{ "-bg color", "background color" },
-{ "-fg color", "foreground color" },
-{ "-bd color", "border color" },
-{ "-bw number", "border width in pixels" },
-{ "-fn fontname", "normal text font" },
-{ "-fb fontname", "bold text font" },
-{ "-/+fbb", "turn on/off normal/bold font comparison inhibit"},
-{ "-/+fbx", "turn off/on linedrawing characters"},
-#if OPT_RENDERFONT
-{ "-fa pattern", "FreeType font-selection pattern" },
-{ "-fd pattern", "FreeType Doublesize font-selection pattern" },
-{ "-fs size", "FreeType font-size" },
-#endif
-#if OPT_WIDE_CHARS
-{ "-fw fontname", "doublewidth text font" },
-{ "-fwb fontname", "doublewidth bold text font" },
-#endif
-#if OPT_INPUT_METHOD
-{ "-fx fontname", "XIM fontset" },
-#endif
-{ "-iconic", "start iconic" },
-{ "-name string", "client instance, icon, and title strings" },
-{ "-class string", "class string (XTerm)" },
-{ "-title string", "title string" },
-{ "-xrm resourcestring", "additional resource specifications" },
-{ "-/+132", "turn on/off 80/132 column switching" },
-{ "-/+ah", "turn on/off always highlight" },
-#ifndef NO_ACTIVE_ICON
-{ "-/+ai", "turn off/on active icon" },
-{ "-fi fontname", "icon font for active icon" },
-#endif /* NO_ACTIVE_ICON */
-{ "-b number", "internal border in pixels" },
-{ "-/+bc", "turn on/off text cursor blinking" },
-{ "-bcf milliseconds", "time text cursor is off when blinking"},
-{ "-bcn milliseconds", "time text cursor is on when blinking"},
-{ "-/+bdc", "turn off/on display of bold as color"},
-{ "-/+cb", "turn on/off cut-to-beginning-of-line inhibit" },
-{ "-cc classrange", "specify additional character classes" },
-{ "-/+cm", "turn off/on ANSI color mode" },
-{ "-/+cn", "turn on/off cut newline inhibit" },
-{ "-cr color", "text cursor color" },
-{ "-/+cu", "turn on/off curses emulation" },
-{ "-/+dc", "turn off/on dynamic color selection" },
-#if OPT_HIGHLIGHT_COLOR
-{ "-hc color", "selection background color" },
-#endif
-#if OPT_HP_FUNC_KEYS
-{ "-/+hf", "turn on/off HP Function Key escape codes" },
-#endif
-{ "-/+hold", "turn on/off logic that retains window after exit" },
-#if OPT_INITIAL_ERASE
-{ "-/+ie", "turn on/off initialization of 'erase' from pty" },
-#endif
-{ "-/+im", "use insert mode for TERMCAP" },
-{ "-/+j", "turn on/off jump scroll" },
-#if OPT_C1_PRINT
-{ "-/+k8", "turn on/off C1-printable classification"},
-#endif
-{ "-kt keyboardtype", "set keyboard type:" KEYBOARD_TYPES },
-#ifdef ALLOWLOGGING
-{ "-/+l", "turn on/off logging" },
-{ "-lf filename", "logging filename" },
-#else
-{ "-/+l", "turn on/off logging (not supported)" },
-{ "-lf filename", "logging filename (not supported)" },
-#endif
-{ "-/+ls", "turn on/off login shell" },
-{ "-/+mb", "turn on/off margin bell" },
-{ "-mc milliseconds", "multiclick time in milliseconds" },
-{ "-/+mesg", "forbid/allow messages" },
-{ "-ms color", "pointer color" },
-{ "-nb number", "margin bell in characters from right end" },
-{ "-/+nul", "turn off/on display of underlining" },
-{ "-/+aw", "turn on/off auto wraparound" },
-{ "-/+pc", "turn on/off PC-style bold colors" },
-{ "-/+rw", "turn on/off reverse wraparound" },
-{ "-/+s", "turn on/off multiscroll" },
-{ "-/+sb", "turn on/off scrollbar" },
-#ifdef SCROLLBAR_RIGHT
-{ "-rightbar", "force scrollbar right (default left)" },
-{ "-leftbar", "force scrollbar left" },
-#endif
-{ "-/+rvc", "turn off/on display of reverse as color" },
-{ "-/+sf", "turn on/off Sun Function Key escape codes" },
-{ "-/+si", "turn on/off scroll-on-tty-output inhibit" },
-{ "-/+sk", "turn on/off scroll-on-keypress" },
-{ "-sl number", "number of scrolled lines to save" },
-#if OPT_SUNPC_KBD
-{ "-/+sp", "turn on/off Sun/PC Function/Keypad mapping" },
-#endif
-#if OPT_TEK4014
-{ "-/+t", "turn on/off Tek emulation window" },
-#endif
-#if OPT_TOOLBAR
-{ "-/+tb", "turn on/off toolbar" },
-#endif
-{ "-ti termid", "terminal identifier" },
-{ "-tm string", "terminal mode keywords and characters" },
-{ "-tn name", "TERM environment variable name" },
-#if OPT_WIDE_CHARS
-{ "-/+u8", "turn on/off UTF-8 mode (implies wide-characters)" },
-#endif
-#if OPT_LUIT_PROG
-{ "-/+lc", "turn on/off locale mode using luit" },
-{ "-lcc path", "filename of locale converter (" DEFLOCALEFILTER ")" },
-#endif
-{ "-/+ulc", "turn off/on display of underline as color" },
-{ "-/+ulit", "turn off/on display of underline as italics" },
-#ifdef HAVE_UTMP
-{ "-/+ut", "turn on/off utmp support" },
-#else
-{ "-/+ut", "turn on/off utmp support (not available)" },
-#endif
-{ "-/+vb", "turn on/off visual bell" },
-{ "-/+pob", "turn on/off pop on bell" },
-#if OPT_WIDE_CHARS
-{ "-/+wc", "turn on/off wide-character mode" },
-{ "-/+mk_width", "turn on/off simple width convention" },
-{ "-/+cjk_width", "turn on/off legacy CJK width convention" },
-#endif
-{ "-/+wf", "turn on/off wait for map before command exec" },
-{ "-e command args ...", "command to execute" },
-#if OPT_TEK4014
-{ "%geom", "Tek window geometry" },
-#endif
-{ "#geom", "icon window geometry" },
-{ "-T string", "title name for window" },
-{ "-n string", "icon name for window" },
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
-{ "-C", "intercept console messages" },
-#else
-{ "-C", "intercept console messages (not supported)" },
-#endif
-{ "-Sccn", "slave mode on \"ttycc\", file descriptor \"n\"" },
-{ "-into windowId", "use the window id given to -into as the parent window rather than the default root window" },
-#if OPT_ZICONBEEP
-{ "-ziconbeep percent", "beep and flag icon of window having hidden output" },
-#endif
-#if OPT_SAME_NAME
-{ "-/+samename", "turn on/off the no-flicker option for title and icon name" },
-#endif
-#if OPT_SESSION_MGT
-{ "-/+sm", "turn on/off the session-management support" },
-#endif
-{ NULL, NULL }};
-/* *INDENT-ON* */
-
-static char *message[] =
-{
- "Fonts should be fixed width and, if both normal and bold are specified, should",
- "have the same size. If only a normal font is specified, it will be used for",
- "both normal and bold text (by doing overstriking). The -e option, if given,",
- "must appear at the end of the command line, otherwise the user's default shell",
- "will be started. Options that start with a plus sign (+) restore the default.",
- NULL};
-
-/*
- * Decode a key-definition. This combines the termcap and ttyModes, for
- * comparison. Note that octal escapes in ttyModes are done by the normal
- * resource translation. Also, ttyModes allows '^-' as a synonym for disabled.
- */
-static int
-decode_keyvalue(char **ptr, int termcap)
-{
- char *string = *ptr;
- int value = -1;
-
- TRACE(("...decode '%s'\n", string));
- if (*string == '^') {
- switch (*++string) {
- case '?':
- value = A2E(127);
- break;
- case '-':
- if (!termcap) {
- errno = 0;
-#if defined(_POSIX_VDISABLE) && defined(HAVE_UNISTD_H)
- value = _POSIX_VDISABLE;
-#endif
-#if defined(_PC_VDISABLE)
- if (value == -1) {
- value = fpathconf(0, _PC_VDISABLE);
- if (value == -1) {
- if (errno != 0)
- break; /* skip this (error) */
- value = 0377;
- }
- }
-#elif defined(VDISABLE)
- if (value == -1)
- value = VDISABLE;
-#endif
- break;
- }
- /* FALLTHRU */
- default:
- value = CONTROL(*string);
- break;
- }
- ++string;
- } else if (termcap && (*string == '\\')) {
- char *d;
- int temp = strtol(string + 1, &d, 8);
- if (temp > 0 && d != string) {
- value = temp;
- string = d;
- }
- } else {
- value = CharOf(*string);
- ++string;
- }
- *ptr = string;
- return value;
-}
-
-/*
- * If we're linked to terminfo, tgetent() will return an empty buffer. We
- * cannot use that to adjust the $TERMCAP variable.
- */
-static Bool
-get_termcap(char *name, char *buffer, char *resized)
-{
- TScreen *screen = &term->screen;
-
- *buffer = 0; /* initialize, in case we're using terminfo's tgetent */
-
- if (name != 0) {
- if (tgetent(buffer, name) == 1) {
- TRACE(("get_termcap(%s) succeeded (%s)\n", name,
- (*buffer
- ? "ok:termcap, we can update $TERMCAP"
- : "assuming this is terminfo")));
- if (*buffer) {
- if (!TEK4014_ACTIVE(screen)) {
- resize(screen, buffer, resized);
- }
- }
- return True;
- } else {
- *buffer = 0; /* just in case */
- }
- }
- return False;
-}
-
-static int
-abbrev(char *tst, char *cmp, size_t need)
-{
- size_t len = strlen(tst);
- return ((len >= need) && (!strncmp(tst, cmp, len)));
-}
-
-static void
-Syntax(char *badOption)
-{
- OptionHelp *opt;
- OptionHelp *list = sortedOpts(xtermOptions, optionDescList, XtNumber(optionDescList));
- int col;
-
- fprintf(stderr, "%s: bad command line option \"%s\"\r\n\n",
- ProgramName, badOption);
-
- fprintf(stderr, "usage: %s", ProgramName);
- col = 8 + strlen(ProgramName);
- for (opt = list; opt->opt; opt++) {
- int len = 3 + strlen(opt->opt); /* space [ string ] */
- if (col + len > 79) {
- fprintf(stderr, "\r\n "); /* 3 spaces */
- col = 3;
- }
- fprintf(stderr, " [%s]", opt->opt);
- col += len;
- }
-
- fprintf(stderr, "\r\n\nType %s -help for a full description.\r\n\n",
- ProgramName);
- exit(1);
-}
-
-static void
-Version(void)
-{
- printf("%s\n", xtermVersion());
- fflush(stdout);
-}
-
-static void
-Help(void)
-{
- OptionHelp *opt;
- OptionHelp *list = sortedOpts(xtermOptions, optionDescList, XtNumber(optionDescList));
- char **cpp;
-
- printf("%s usage:\n %s [-options ...] [-e command args]\n\n",
- xtermVersion(), ProgramName);
- printf("where options include:\n");
- for (opt = list; opt->opt; opt++) {
- printf(" %-28s %s\n", opt->opt, opt->desc);
- }
-
- putchar('\n');
- for (cpp = message; *cpp; cpp++)
- puts(*cpp);
- putchar('\n');
- fflush(stdout);
-}
-
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
-/* ARGSUSED */
-static Boolean
-ConvertConsoleSelection(Widget w GCC_UNUSED,
- Atom * selection GCC_UNUSED,
- Atom * target GCC_UNUSED,
- Atom * type GCC_UNUSED,
- XtPointer *value GCC_UNUSED,
- unsigned long *length GCC_UNUSED,
- int *format GCC_UNUSED)
-{
- /* we don't save console output, so can't offer it */
- return False;
-}
-#endif /* TIOCCONS */
-
-#if OPT_SESSION_MGT
-static void
-die_callback(Widget w GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- XtPointer call_data GCC_UNUSED)
-{
- Cleanup(0);
-}
-
-static void
-save_callback(Widget w GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- XtPointer call_data)
-{
- XtCheckpointToken token = (XtCheckpointToken) call_data;
- /* we have nothing to save */
- token->save_success = True;
-}
-#endif /* OPT_SESSION_MGT */
-
-/*
- * DeleteWindow(): Action proc to implement ICCCM delete_window.
- */
-/* ARGSUSED */
-static void
-DeleteWindow(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED)
-{
-#if OPT_TEK4014
- if (w == toplevel) {
- if (term->screen.Tshow)
- hide_vt_window();
- else
- do_hangup(w, (XtPointer) 0, (XtPointer) 0);
- } else if (term->screen.Vshow)
- hide_tek_window();
- else
-#endif
- do_hangup(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-/* ARGSUSED */
-static void
-KeyboardMapping(Widget w GCC_UNUSED,
- XEvent * event,
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED)
-{
- switch (event->type) {
- case MappingNotify:
- XRefreshKeyboardMapping(&event->xmapping);
- break;
- }
-}
-
-static XtActionsRec actionProcs[] =
-{
- {"DeleteWindow", DeleteWindow},
- {"KeyboardMapping", KeyboardMapping},
-};
-
-/*
- * Some platforms use names such as /dev/tty01, others /dev/pts/1. Parse off
- * the "tty01" or "pts/1" portion, and return that for use as an identifier for
- * utmp.
- */
-static char *
-my_pty_name(char *device)
-{
- size_t len = strlen(device);
- Bool name = False;
-
- while (len != 0) {
- int ch = device[len - 1];
- if (isdigit(ch)) {
- len--;
- } else if (ch == '/') {
- if (name)
- break;
- len--;
- } else if (isalpha(ch)) {
- name = True;
- len--;
- } else {
- break;
- }
- }
- TRACE(("my_pty_name(%s) -> '%s'\n", device, device + len));
- return device + len;
-}
-
-/*
- * If the name contains a '/', it is a "pts/1" case. Otherwise, return the
- * last few characters for a utmp identifier.
- */
-static char *
-my_pty_id(char *device)
-{
- char *name = my_pty_name(device);
- char *leaf = x_basename(name);
-
- if (name == leaf) { /* no '/' in the name */
- int len = strlen(leaf);
- if (PTYCHARLEN < len)
- leaf = leaf + (len - PTYCHARLEN);
- }
- TRACE(("my_pty_id (%s) -> '%s'\n", device, leaf));
- return leaf;
-}
-
-/*
- * Set the tty/pty identifier
- */
-static void
-set_pty_id(char *device, char *id)
-{
- char *name = my_pty_name(device);
- char *leaf = x_basename(name);
-
- if (name == leaf) {
- strcpy(my_pty_id(device), id);
- } else {
- strcpy(leaf, id);
- }
- TRACE(("set_pty_id(%s) -> '%s'\n", id, device));
-}
-
-/*
- * The original -S option accepts two characters to identify the pty, and a
- * file-descriptor (assumed to be nonzero). That is not general enough, so we
- * check first if the option contains a '/' to delimit the two fields, and if
- * not, fall-thru to the original logic.
- */
-static Bool
-ParseSccn(char *option)
-{
- char *leaf = x_basename(option);
- Bool code = False;
-
- if (leaf != option) {
- if (leaf - option > 0
- && isdigit(CharOf(*leaf))
- && sscanf(leaf, "%d", &am_slave) == 1) {
- size_t len = leaf - option - 1;
- /*
- * If we have a slash, we only care about the part after the slash,
- * which is a file-descriptor. The part before the slash can be
- * the /dev/pts/XXX value, but since we do not need to reopen it,
- * it is useful mainly for display in a "ps -ef".
- */
- strncpy(passedPty, option, len);
- passedPty[len] = 0;
- code = True;
- }
- } else {
- code = (sscanf(option, "%c%c%d",
- passedPty, passedPty + 1, &am_slave) == 3);
- }
- TRACE(("ParseSccn(%s) = '%s' %d (%s)\n", option,
- passedPty, am_slave, code ? "OK" : "ERR"));
- return code;
-}
-
-#if defined(USE_SYSV_UTMP) && !defined(USE_UTEMPTER)
-/*
- * From "man utmp":
- * xterm and other terminal emulators directly create a USER_PROCESS record
- * and generate the ut_id by using the last two letters of /dev/ttyp%c or by
- * using p%d for /dev/pts/%d. If they find a DEAD_PROCESS for this id, they
- * recycle it, otherwise they create a new entry. If they can, they will mark
- * it as DEAD_PROCESS on exiting and it is advised that they null ut_line,
- * ut_time, ut_user and ut_host as well.
- *
- * Generally ut_id allows no more than 3 characters (plus null), even if the
- * pty implementation allows more than 3 digits.
- */
-static char *
-my_utmp_id(char *device)
-{
- typedef struct UTMP_STR UTMP_STRUCT;
-#define UTIDSIZE (sizeof(((UTMP_STRUCT *)NULL)->ut_id))
- static char result[UTIDSIZE + 1];
-
-#if defined(__SCO__) || defined(__UNIXWARE__)
- /*
- * Legend does not support old-style pty's, has no related compatibility
- * issues, and can use the available space in ut_id differently from the
- * default convention.
- *
- * This scheme is intended to avoid conflicts both with other users of
- * utmpx as well as between multiple xterms. First, Legend uses all of the
- * characters of ut_id, and adds no terminating NUL is required (the
- * default scheme may add a trailing NUL). Second, all xterm entries will
- * start with the letter 'x' followed by three digits, which will be the
- * last three digits of the device name, regardless of the format of the
- * device name, with leading 0's added where necessary. For instance, an
- * xterm on /dev/pts/3 will have a ut_id of x003; an xterm on /dev/pts123
- * will have a ut_id of x123. Under the other convention, /dev/pts/3 would
- * have a ut_id of p3 and /dev/pts123 would have a ut_id of p123.
- */
- int len, n;
-
- len = strlen(device);
- n = UTIDSIZE;
- result[n] = '\0';
- while ((n > 0) && (len > 0) && isdigit(device[len - 1]))
- result[--n] = device[--len];
- while (n > 0)
- result[--n] = '0';
- result[0] = 'x';
-#else
- char *name = my_pty_name(device);
- char *leaf = x_basename(name);
- size_t len = strlen(leaf);
-
- if ((UTIDSIZE - 1) < len)
- leaf = leaf + (len - (UTIDSIZE - 1));
- sprintf(result, "p%s", leaf);
-#endif
-
- TRACE(("my_utmp_id (%s) -> '%s'\n", device, result));
- return result;
-}
-#endif /* USE_SYSV_UTMP */
-
-#ifdef USE_POSIX_SIGNALS
-
-typedef void (*sigfunc) (int);
-
-/* make sure we sure we ignore SIGCHLD for the cases parent
- has just been stopped and not actually killed */
-
-static sigfunc
-posix_signal(int signo, sigfunc func)
-{
- struct sigaction act, oact;
-
- act.sa_handler = func;
- sigemptyset(&act.sa_mask);
-#ifdef SA_RESTART
- act.sa_flags = SA_NOCLDSTOP | SA_RESTART;
-#else
- act.sa_flags = SA_NOCLDSTOP;
-#endif
- if (sigaction(signo, &act, &oact) < 0)
- return (SIG_ERR);
- return (oact.sa_handler);
-}
-
-#endif /* linux && _POSIX_SOURCE */
-
-int
-main(int argc, char *argv[]ENVP_ARG)
-{
- Widget form_top, menu_top;
- TScreen *screen;
- int mode;
- char *my_class = DEFCLASS;
- Window winToEmbedInto = None;
-
-#ifdef DISABLE_SETUID
- if (seteuid(getuid()) == -1)
- exit(2);
- if (setuid(getuid()) == -1)
- exit(2);
-#endif
-
- ProgramName = argv[0];
-
- /* extra length in case longer tty name like /dev/ttyq255 */
- ttydev = TypeMallocN(char, sizeof(TTYDEV) + 80);
-#ifdef USE_PTY_DEVICE
- ptydev = TypeMallocN(char, sizeof(PTYDEV) + 80);
- if (!ttydev || !ptydev)
-#else
- if (!ttydev)
-#endif
- {
- fprintf(stderr,
- "%s: unable to allocate memory for ttydev or ptydev\n",
- ProgramName);
- exit(1);
- }
- strcpy(ttydev, TTYDEV);
-#ifdef USE_PTY_DEVICE
- strcpy(ptydev, PTYDEV);
-#endif
-
-#if defined(USE_UTMP_SETGID)
- get_pty(NULL, NULL);
- if (seteuid(getuid()) == -1) {
- fprintf(stderr,
- "%s: unable to change back euid\n", ProgramName);
- exit(1);
- }
- if (setuid(getuid()) == -1) {
- fprintf(stderr,
- "%s: unable to change back uid\n", ProgramName);
- exit(1);
- }
-#define get_pty(pty, from) really_get_pty(pty, from)
-#endif
-
- /* Do these first, since we may not be able to open the display */
- TRACE_OPTS(xtermOptions, optionDescList, XtNumber(optionDescList));
- TRACE_ARGV("Before XtOpenApplication", argv);
- if (argc > 1) {
- int n;
- unsigned unique = 2;
- Bool quit = True;
-
- for (n = 1; n < argc; n++) {
- TRACE(("parsing %s\n", argv[n]));
- if (abbrev(argv[n], "-version", unique)) {
- Version();
- } else if (abbrev(argv[n], "-help", unique)) {
- Help();
- } else if (abbrev(argv[n], "-class", 3)) {
- if ((my_class = argv[++n]) == 0) {
- Help();
- } else {
- quit = False;
- }
- unique = 3;
- } else {
- quit = False;
- unique = 3;
- }
- }
- if (quit)
- exit(0);
- }
-
- /* This dumps core on HP-UX 9.05 with X11R5 */
-#if OPT_I18N_SUPPORT
- XtSetLanguageProc(NULL, NULL, NULL);
-#endif
-
-#ifdef TERMIO_STRUCT /* { */
- /* Initialization is done here rather than above in order
- * to prevent any assumptions about the order of the contents
- * of the various terminal structures (which may change from
- * implementation to implementation).
- */
- d_tio.c_iflag = ICRNL | IXON;
-#ifdef TAB3
- d_tio.c_oflag = OPOST | ONLCR | TAB3;
-#else
-#ifdef ONLCR
- d_tio.c_oflag = OPOST | ONLCR;
-#else
- d_tio.c_oflag = OPOST;
-#endif
-#endif
-#if defined(macII) || defined(ATT) || defined(CRAY) /* { */
- d_tio.c_cflag = VAL_LINE_SPEED | CS8 | CREAD | PARENB | HUPCL;
- d_tio.c_lflag = ISIG | ICANON | ECHO | ECHOE | ECHOK;
-#ifdef ECHOKE
- d_tio.c_lflag |= ECHOKE | IEXTEN;
-#endif
-#ifdef ECHOCTL
- d_tio.c_lflag |= ECHOCTL | IEXTEN;
-#endif
-
-#ifndef USE_TERMIOS /* { */
- d_tio.c_line = 0;
-#endif /* } */
-
- d_tio.c_cc[VINTR] = CINTR;
- d_tio.c_cc[VQUIT] = CQUIT;
- d_tio.c_cc[VERASE] = CERASE;
- d_tio.c_cc[VKILL] = CKILL;
- d_tio.c_cc[VEOF] = CEOF;
- d_tio.c_cc[VEOL] = CNUL;
- d_tio.c_cc[VEOL2] = CNUL;
-#ifdef VSWTCH
- d_tio.c_cc[VSWTCH] = CNUL;
-#endif
-
-#if defined(USE_TERMIOS) || defined(USE_POSIX_TERMIOS) /* { */
- d_tio.c_cc[VSUSP] = CSUSP;
-#ifdef VDSUSP
- d_tio.c_cc[VDSUSP] = CDSUSP;
-#endif
- d_tio.c_cc[VREPRINT] = CRPRNT;
- d_tio.c_cc[VDISCARD] = CFLUSH;
- d_tio.c_cc[VWERASE] = CWERASE;
- d_tio.c_cc[VLNEXT] = CLNEXT;
- d_tio.c_cc[VMIN] = 1;
- d_tio.c_cc[VTIME] = 0;
-#endif /* } */
-#ifdef HAS_LTCHARS /* { */
- d_ltc.t_suspc = CSUSP; /* t_suspc */
- d_ltc.t_dsuspc = CDSUSP; /* t_dsuspc */
- d_ltc.t_rprntc = CRPRNT;
- d_ltc.t_flushc = CFLUSH;
- d_ltc.t_werasc = CWERASE;
- d_ltc.t_lnextc = CLNEXT;
-#endif /* } HAS_LTCHARS */
-#ifdef TIOCLSET /* { */
- d_lmode = 0;
-#endif /* } TIOCLSET */
-#else /* }{ else !macII, ATT, CRAY */
-#ifndef USE_POSIX_TERMIOS
-#ifdef BAUD_0 /* { */
- d_tio.c_cflag = CS8 | CREAD | PARENB | HUPCL;
-#else /* }{ !BAUD_0 */
- d_tio.c_cflag = VAL_LINE_SPEED | CS8 | CREAD | PARENB | HUPCL;
-#endif /* } !BAUD_0 */
-#else /* USE_POSIX_TERMIOS */
- d_tio.c_cflag = CS8 | CREAD | PARENB | HUPCL;
- cfsetispeed(&d_tio, VAL_LINE_SPEED);
- cfsetospeed(&d_tio, VAL_LINE_SPEED);
-#endif
- d_tio.c_lflag = ISIG | ICANON | ECHO | ECHOE | ECHOK;
-#ifdef ECHOKE
- d_tio.c_lflag |= ECHOKE | IEXTEN;
-#endif
-#ifdef ECHOCTL
- d_tio.c_lflag |= ECHOCTL | IEXTEN;
-#endif
-#ifndef USE_POSIX_TERMIOS
-#ifdef NTTYDISC
- d_tio.c_line = NTTYDISC;
-#else
- d_tio.c_line = 0;
-#endif
-#endif /* USE_POSIX_TERMIOS */
-#ifdef __sgi
- d_tio.c_cflag &= ~(HUPCL | PARENB);
- d_tio.c_iflag |= BRKINT | ISTRIP | IGNPAR;
-#endif
-#ifdef __MVS__
- d_tio.c_cflag &= ~(HUPCL | PARENB);
-#endif
- d_tio.c_cc[VINTR] = CONTROL('C'); /* '^C' */
- d_tio.c_cc[VERASE] = 0x7f; /* DEL */
- d_tio.c_cc[VKILL] = CONTROL('U'); /* '^U' */
- d_tio.c_cc[VQUIT] = CQUIT; /* '^\' */
- d_tio.c_cc[VEOF] = CEOF; /* '^D' */
- d_tio.c_cc[VEOL] = CEOL; /* '^@' */
- d_tio.c_cc[VMIN] = 1;
- d_tio.c_cc[VTIME] = 0;
-#ifdef VSWTCH
- d_tio.c_cc[VSWTCH] = CSWTCH; /* usually '^Z' */
-#endif
-#ifdef VLNEXT
- d_tio.c_cc[VLNEXT] = CLNEXT;
-#endif
-#ifdef VWERASE
- d_tio.c_cc[VWERASE] = CWERASE;
-#endif
-#ifdef VREPRINT
- d_tio.c_cc[VREPRINT] = CRPRNT;
-#endif
-#ifdef VRPRNT
- d_tio.c_cc[VRPRNT] = CRPRNT;
-#endif
-#ifdef VDISCARD
- d_tio.c_cc[VDISCARD] = CFLUSH;
-#endif
-#ifdef VFLUSHO
- d_tio.c_cc[VFLUSHO] = CFLUSH;
-#endif
-#ifdef VSTOP
- d_tio.c_cc[VSTOP] = CSTOP;
-#endif
-#ifdef VSTART
- d_tio.c_cc[VSTART] = CSTART;
-#endif
-#ifdef VSUSP
- d_tio.c_cc[VSUSP] = CSUSP;
-#endif
-#ifdef VDSUSP
- d_tio.c_cc[VDSUSP] = CDSUSP;
-#endif
-#ifdef VSTATUS
- d_tio.c_cc[VSTATUS] = CSTATUS;
-#endif
- /* now, try to inherit tty settings */
- {
- int i;
-
- for (i = 0; i <= 2; i++) {
- TERMIO_STRUCT deftio;
- if (ttyGetAttr(i, &deftio) == 0) {
- d_tio.c_cc[VINTR] = deftio.c_cc[VINTR];
- d_tio.c_cc[VQUIT] = deftio.c_cc[VQUIT];
- d_tio.c_cc[VERASE] = deftio.c_cc[VERASE];
- d_tio.c_cc[VKILL] = deftio.c_cc[VKILL];
- d_tio.c_cc[VEOF] = deftio.c_cc[VEOF];
- d_tio.c_cc[VEOL] = deftio.c_cc[VEOL];
-#ifdef VSWTCH
- d_tio.c_cc[VSWTCH] = deftio.c_cc[VSWTCH];
-#endif
-#ifdef VEOL2
- d_tio.c_cc[VEOL2] = deftio.c_cc[VEOL2];
-#endif
-#ifdef VLNEXT
- d_tio.c_cc[VLNEXT] = deftio.c_cc[VLNEXT];
-#endif
-#ifdef VWERASE
- d_tio.c_cc[VWERASE] = deftio.c_cc[VWERASE];
-#endif
-#ifdef VREPRINT
- d_tio.c_cc[VREPRINT] = deftio.c_cc[VREPRINT];
-#endif
-#ifdef VRPRNT
- d_tio.c_cc[VRPRNT] = deftio.c_cc[VRPRNT];
-#endif
-#ifdef VDISCARD
- d_tio.c_cc[VDISCARD] = deftio.c_cc[VDISCARD];
-#endif
-#ifdef VFLUSHO
- d_tio.c_cc[VFLUSHO] = deftio.c_cc[VFLUSHO];
-#endif
-#ifdef VSTOP
- d_tio.c_cc[VSTOP] = deftio.c_cc[VSTOP];
-#endif
-#ifdef VSTART
- d_tio.c_cc[VSTART] = deftio.c_cc[VSTART];
-#endif
-#ifdef VSUSP
- d_tio.c_cc[VSUSP] = deftio.c_cc[VSUSP];
-#endif
-#ifdef VDSUSP
- d_tio.c_cc[VDSUSP] = deftio.c_cc[VDSUSP];
-#endif
-#ifdef VSTATUS
- d_tio.c_cc[VSTATUS] = deftio.c_cc[VSTATUS];
-#endif
- break;
- }
- }
- }
-#ifdef HAS_LTCHARS /* { */
- d_ltc.t_suspc = CharOf('\000'); /* t_suspc */
- d_ltc.t_dsuspc = CharOf('\000'); /* t_dsuspc */
- d_ltc.t_rprntc = CharOf('\377'); /* reserved... */
- d_ltc.t_flushc = CharOf('\377');
- d_ltc.t_werasc = CharOf('\377');
- d_ltc.t_lnextc = CharOf('\377');
-#endif /* } HAS_LTCHARS */
-#if defined(USE_TERMIOS) || defined(USE_POSIX_TERMIOS) /* { */
- d_tio.c_cc[VSUSP] = CSUSP;
-#ifdef VDSUSP
- d_tio.c_cc[VDSUSP] = CharOf('\000');
-#endif
-#ifdef VSTATUS
- d_tio.c_cc[VSTATUS] = CharOf('\377');
-#endif
-#ifdef VREPRINT
- d_tio.c_cc[VREPRINT] = CharOf('\377');
-#endif
-#ifdef VDISCARD
- d_tio.c_cc[VDISCARD] = CharOf('\377');
-#endif
-#ifdef VWERASE
- d_tio.c_cc[VWERASE] = CharOf('\377');
-#endif
-#ifdef VLNEXT
- d_tio.c_cc[VLNEXT] = CharOf('\377');
-#endif
-#endif /* } USE_TERMIOS */
-#ifdef TIOCLSET /* { */
- d_lmode = 0;
-#endif /* } TIOCLSET */
-#endif /* } macII, ATT, CRAY */
-#endif /* } TERMIO_STRUCT */
-
- /* Init the Toolkit. */
- {
-#ifdef HAS_SAVED_IDS_AND_SETEUID
- uid_t euid = geteuid();
- gid_t egid = getegid();
- uid_t ruid = getuid();
- gid_t rgid = getgid();
-
- if (setegid(rgid) == -1) {
-#ifdef __MVS__
- if (!(errno == EMVSERR)) /* could happen if _BPX_SHAREAS=REUSE */
-#endif
- (void) fprintf(stderr, "setegid(%d): %s\n",
- (int) rgid, strerror(errno));
- }
-
- if (seteuid(ruid) == -1) {
-#ifdef __MVS__
- if (!(errno == EMVSERR))
-#endif
- (void) fprintf(stderr, "seteuid(%d): %s\n",
- (int) ruid, strerror(errno));
- }
-#endif
-
- XtSetErrorHandler(xt_error);
-#if OPT_SESSION_MGT
- toplevel = XtOpenApplication(&app_con, my_class,
- optionDescList,
- XtNumber(optionDescList),
- &argc, argv, fallback_resources,
- sessionShellWidgetClass,
- NULL, 0);
-#else
- toplevel = XtAppInitialize(&app_con, my_class,
- optionDescList,
- XtNumber(optionDescList),
- &argc, argv, fallback_resources,
- NULL, 0);
-#endif /* OPT_SESSION_MGT */
- XtSetErrorHandler((XtErrorHandler) 0);
-
- XtGetApplicationResources(toplevel, (XtPointer) &resource,
- application_resources,
- XtNumber(application_resources), NULL, 0);
- TRACE_XRES();
-
-#ifdef HAS_SAVED_IDS_AND_SETEUID
- if (seteuid(euid) == -1) {
-#ifdef __MVS__
- if (!(errno == EMVSERR))
-#endif
- (void) fprintf(stderr, "seteuid(%d): %s\n",
- (int) euid, strerror(errno));
- }
-
- if (setegid(egid) == -1) {
-#ifdef __MVS__
- if (!(errno == EMVSERR))
-#endif
- (void) fprintf(stderr, "setegid(%d): %s\n",
- (int) egid, strerror(errno));
- }
-#endif
-
-#if defined(USE_UTMP_SETGID)
- if (resource.utmpInhibit) {
- /* Can totally revoke group privs */
- setegid(getgid());
- setgid(getgid());
- }
-#endif
- }
-
- waiting_for_initial_map = resource.wait_for_map;
-
- /*
- * ICCCM delete_window.
- */
- XtAppAddActions(app_con, actionProcs, XtNumber(actionProcs));
-
- /*
- * fill in terminal modes
- */
- if (resource.tty_modes) {
- int n = parse_tty_modes(resource.tty_modes, ttymodelist);
- if (n < 0) {
- fprintf(stderr, "%s: bad tty modes \"%s\"\n",
- ProgramName, resource.tty_modes);
- } else if (n > 0) {
- override_tty_modes = 1;
- }
- }
-#if OPT_ZICONBEEP
- zIconBeep = resource.zIconBeep;
- zIconBeep_flagged = False;
- if (zIconBeep > 100 || zIconBeep < -100) {
- zIconBeep = 0; /* was 100, but I prefer to defaulting off. */
- fprintf(stderr,
- "a number between -100 and 100 is required for zIconBeep. 0 used by default\n");
- }
-#endif /* OPT_ZICONBEEP */
-#if OPT_SAME_NAME
- sameName = resource.sameName;
-#endif
- hold_screen = resource.hold_screen ? 1 : 0;
- xterm_name = resource.xterm_name;
- if (strcmp(xterm_name, "-") == 0)
- xterm_name = DFT_TERMTYPE;
- if (resource.icon_geometry != NULL) {
- int scr, junk;
- int ix, iy;
- Arg args[2];
-
- for (scr = 0; /* yyuucchh */
- XtScreen(toplevel) != ScreenOfDisplay(XtDisplay(toplevel), scr);
- scr++) ;
-
- args[0].name = XtNiconX;
- args[1].name = XtNiconY;
- XGeometry(XtDisplay(toplevel), scr, resource.icon_geometry, "",
- 0, 0, 0, 0, 0, &ix, &iy, &junk, &junk);
- args[0].value = (XtArgVal) ix;
- args[1].value = (XtArgVal) iy;
- XtSetValues(toplevel, args, 2);
- }
-
- XtSetValues(toplevel, ourTopLevelShellArgs,
- number_ourTopLevelShellArgs);
-
-#if OPT_WIDE_CHARS
- /* seems as good a place as any */
- init_classtab();
-#endif
-
- /* Parse the rest of the command line */
- TRACE_ARGV("After XtOpenApplication", argv);
- for (argc--, argv++; argc > 0; argc--, argv++) {
-#ifdef VMS
- if (**argv != '-')
- Syntax(*argv);
-#else
- if (**argv != '-') {
- if (argc > 1)
- Syntax(*argv);
- if (command_to_exec == 0) /* if no "-e" option */
- explicit_shname = xtermFindShell(*argv, True);
- continue;
- }
-#endif
-
- TRACE(("parsing %s\n", argv[0]));
- switch (argv[0][1]) {
- case 'h': /* -help */
- Help();
- continue;
- case 'v': /* -version */
- Version();
- continue;
- case 'C':
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
-#ifndef __sgi
- {
- struct stat sbuf;
-
- /* Must be owner and have read/write permission.
- xdm cooperates to give the console the right user. */
- if (!stat("/dev/console", &sbuf) &&
- (sbuf.st_uid == getuid()) &&
- !access("/dev/console", R_OK | W_OK)) {
- Console = True;
- } else
- Console = False;
- }
-#else /* __sgi */
- Console = True;
-#endif /* __sgi */
-#endif /* TIOCCONS */
- continue;
- case 'S':
- if (!ParseSccn(*argv + 2))
- Syntax(*argv);
- continue;
-#ifdef DEBUG
- case 'D':
- debug = True;
- continue;
-#endif /* DEBUG */
- case 'c': /* -class param */
- if (strcmp(argv[0] + 1, "class") == 0)
- argc--, argv++;
- else
- Syntax(*argv);
- continue;
- case 'e':
- if (argc <= 1)
- Syntax(*argv);
- command_to_exec = ++argv;
- break;
- case 'i':
- if (argc <= 1) {
- Syntax(*argv);
- } else {
- char *endPtr;
- --argc;
- ++argv;
- winToEmbedInto = (Window) strtol(argv[0], &endPtr, 10);
- }
- continue;
-
- default:
- Syntax(*argv);
- }
- break;
- }
-
- SetupMenus(toplevel, &form_top, &menu_top);
-
- term = (XtermWidget) XtVaCreateManagedWidget("vt100", xtermWidgetClass,
- form_top,
-#if OPT_TOOLBAR
- XtNmenuBar, menu_top,
- XtNresizable, True,
- XtNfromVert, menu_top,
- XtNleft, XawChainLeft,
- XtNright, XawChainRight,
- XtNtop, XawChainTop,
- XtNbottom, XawChainBottom,
-#endif
- (XtPointer) 0);
- decode_keyboard_type(&resource);
-
- screen = &term->screen;
- screen->inhibit = 0;
-
-#ifdef ALLOWLOGGING
- if (term->misc.logInhibit)
- screen->inhibit |= I_LOG;
-#endif
- if (term->misc.signalInhibit)
- screen->inhibit |= I_SIGNAL;
-#if OPT_TEK4014
- if (term->misc.tekInhibit)
- screen->inhibit |= I_TEK;
-#endif
-
- /*
- * We might start by showing the tek4014 window.
- */
-#if OPT_TEK4014
- if (screen->inhibit & I_TEK)
- screen->TekEmu = False;
-
- if (screen->TekEmu && !TekInit())
- SysError(ERROR_INIT);
-#endif
-
- /*
- * Start the toolbar at this point, after the first window has been setup.
- */
-#if OPT_TOOLBAR
- ShowToolbar(resource.toolBar);
-#endif
-
-#if OPT_SESSION_MGT
- if (resource.sessionMgt) {
- TRACE(("Enabling session-management callbacks\n"));
- XtAddCallback(toplevel, XtNdieCallback, die_callback, NULL);
- XtAddCallback(toplevel, XtNsaveCallback, save_callback, NULL);
- }
-#endif
-
- /*
- * Set title and icon name if not specified
- */
- if (command_to_exec) {
- Arg args[2];
-
- if (!resource.title) {
- if (command_to_exec) {
- resource.title = x_basename(command_to_exec[0]);
- } /* else not reached */
- }
-
- if (!resource.icon_name)
- resource.icon_name = resource.title;
- XtSetArg(args[0], XtNtitle, resource.title);
- XtSetArg(args[1], XtNiconName, resource.icon_name);
-
- TRACE(("setting:\n\ttitle \"%s\"\n\ticon \"%s\"\n\tbased on command \"%s\"\n",
- resource.title,
- resource.icon_name,
- *command_to_exec));
-
- XtSetValues(toplevel, args, 2);
- }
-#if OPT_LUIT_PROG
- if (term->misc.callfilter) {
- int u = (term->misc.use_encoding ? 2 : 0);
- if (command_to_exec) {
- int n;
- char **c;
- for (n = 0, c = command_to_exec; *c; n++, c++) ;
- c = TypeMallocN(char *, n + 3 + u);
- if (c == NULL)
- SysError(ERROR_LUMALLOC);
- memcpy(c + 2 + u, command_to_exec, (n + 1) * sizeof(char *));
- c[0] = term->misc.localefilter;
- if (u) {
- c[1] = "-encoding";
- c[2] = term->misc.locale_str;
- }
- c[1 + u] = "--";
- command_to_exec_with_luit = c;
- } else {
- static char *luit[4];
- luit[0] = term->misc.localefilter;
- if (u) {
- luit[1] = "-encoding";
- luit[2] = term->misc.locale_str;
- luit[3] = NULL;
- } else
- luit[1] = NULL;
- command_to_exec_with_luit = luit;
- }
- }
-#endif
-
-#ifdef DEBUG
- {
- /* Set up stderr properly. Opening this log file cannot be
- done securely by a privileged xterm process (although we try),
- so the debug feature is disabled by default. */
- char dbglogfile[45];
- int i = -1;
- if (debug) {
- timestamp_filename(dbglogfile, "xterm.debug.log.");
- if (creat_as(getuid(), getgid(), False, dbglogfile, 0666)) {
- i = open(dbglogfile, O_WRONLY | O_TRUNC);
- }
- }
- if (i >= 0) {
- dup2(i, 2);
-
- /* mark this file as close on exec */
- (void) fcntl(i, F_SETFD, 1);
- }
- }
-#endif /* DEBUG */
-
- /* open a terminal for client */
- get_terminal();
-
- spawn();
-
-#ifndef VMS
- /* Child process is out there, let's catch its termination */
-
-#ifdef USE_POSIX_SIGNALS
- (void) posix_signal(SIGCHLD, reapchild);
-#else
- (void) signal(SIGCHLD, reapchild);
-#endif
- /* Realize procs have now been executed */
-
- if (am_slave >= 0) { /* Write window id so master end can read and use */
- char buf[80];
-
- buf[0] = '\0';
- sprintf(buf, "%lx\n", XtWindow(SHELL_OF(CURRENT_EMU(screen))));
- write(screen->respond, buf, strlen(buf));
- }
-#ifdef AIXV3
-#if (OSMAJORVERSION < 4)
- /* In AIXV3, xterms started from /dev/console have CLOCAL set.
- * This means we need to clear CLOCAL so that SIGHUP gets sent
- * to the slave-pty process when xterm exits.
- */
-
- {
- TERMIO_STRUCT tio;
-
- if (ttyGetAttr(screen->respond, &tio) == -1)
- SysError(ERROR_TIOCGETP);
-
- tio.c_cflag &= ~(CLOCAL);
-
- if (ttySetAttr(screen->respond, &tio) == -1)
- SysError(ERROR_TIOCSETP);
- }
-#endif
-#endif
-#if defined(USE_ANY_SYSV_TERMIO) || defined(__MVS__)
- if (0 > (mode = fcntl(screen->respond, F_GETFL, 0)))
- SysError(ERROR_F_GETFL);
-#ifdef O_NDELAY
- mode |= O_NDELAY;
-#else
- mode |= O_NONBLOCK;
-#endif /* O_NDELAY */
- if (fcntl(screen->respond, F_SETFL, mode))
- SysError(ERROR_F_SETFL);
-#else /* !USE_ANY_SYSV_TERMIO */
- mode = 1;
- if (ioctl(screen->respond, FIONBIO, (char *) &mode) == -1)
- SysError(ERROR_FIONBIO);
-#endif /* USE_ANY_SYSV_TERMIO, etc */
-
- /* The erase character is used to delete the current completion */
-#if OPT_DABBREV
-#ifdef TERMIO_STRUCT
- screen->dabbrev_erase_char = d_tio.c_cc[VERASE];
-#else
- screen->dabbrev_erase_char = d_sg.sg_erase;
-#endif
-#endif
-
- FD_ZERO(&pty_mask);
- FD_ZERO(&X_mask);
- FD_ZERO(&Select_mask);
- FD_SET(screen->respond, &pty_mask);
- FD_SET(ConnectionNumber(screen->display), &X_mask);
- FD_SET(screen->respond, &Select_mask);
- FD_SET(ConnectionNumber(screen->display), &Select_mask);
- max_plus1 = ((screen->respond < ConnectionNumber(screen->display))
- ? (1 + ConnectionNumber(screen->display))
- : (1 + screen->respond));
-
-#endif /* !VMS */
-#ifdef DEBUG
- if (debug)
- printf("debugging on\n");
-#endif /* DEBUG */
- XSetErrorHandler(xerror);
- XSetIOErrorHandler(xioerror);
-
- initPtyData(&VTbuffer);
-#ifdef ALLOWLOGGING
- if (term->misc.log_on) {
- StartLog(screen);
- }
-#endif
-
- if (winToEmbedInto != None) {
- XtRealizeWidget(toplevel);
- /*
- * This should probably query the tree or check the attributes of
- * winToEmbedInto in order to verify that it exists, but I'm still not
- * certain what is the best way to do it -GPS
- */
- XReparentWindow(XtDisplay(toplevel),
- XtWindow(toplevel),
- winToEmbedInto, 0, 0);
- }
-
- for (;;) {
-#if OPT_TEK4014
- if (screen->TekEmu)
- TekRun();
- else
-#endif
- VTRun();
- }
-}
-
-#if defined(__osf__) || (defined(__GLIBC__) && !defined(USE_USG_PTYS)) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
-#define USE_OPENPTY 1
-static int opened_tty = -1;
-#endif
-
-/*
- * This function opens up a pty master and stuffs its value into pty.
- *
- * If it finds one, it returns a value of 0. If it does not find one,
- * it returns a value of !0. This routine is designed to be re-entrant,
- * so that if a pty master is found and later, we find that the slave
- * has problems, we can re-enter this function and get another one.
- */
-static int
-get_pty(int *pty, char *from GCC_UNUSED)
-{
- int result = 1;
-
-#if defined(PUCC_PTYD)
-
- result = ((*pty = openrpty(ttydev, ptydev,
- (resource.utmpInhibit ? OPTY_NOP : OPTY_LOGIN),
- getuid(), from)) < 0);
-
-#elif defined(USE_OPENPTY)
-
- result = openpty(pty, &opened_tty, ttydev, NULL, NULL);
-
-#elif defined(__QNXNTO__)
-
- result = pty_search(pty);
-
-#else
-#if defined(USE_ISPTS_FLAG)
-
- /*
- The order of this code is *important*. On SYSV/386 we want to open
- a /dev/ttyp? first if at all possible. If none are available, then
- we'll try to open a /dev/pts??? device.
-
- The reason for this is because /dev/ttyp? works correctly, where
- as /dev/pts??? devices have a number of bugs, (won't update
- screen correcly, will hang -- it more or less works, but you
- really don't want to use it).
-
- Most importantly, for boxes of this nature, one of the major
- "features" is that you can emulate a 8086 by spawning off a UNIX
- program on 80386/80486 in v86 mode. In other words, you can spawn
- off multiple MS-DOS environments. On ISC the program that does
- this is named "vpix." The catcher is that "vpix" will *not* work
- with a /dev/pts??? device, will only work with a /dev/ttyp? device.
-
- Since we can open either a /dev/ttyp? or a /dev/pts??? device,
- the flag "IsPts" is set here so that we know which type of
- device we're dealing with in routine spawn(). That's the reason
- for the "if (IsPts)" statement in spawn(); we have two different
- device types which need to be handled differently.
- */
- result = pty_search(pty);
- if (!result)
- IsPts = 0;
-
-#endif
-#if defined(USE_USG_PTYS) || defined(__CYGWIN__)
-#ifdef __GLIBC__ /* if __GLIBC__ and USE_USG_PTYS, we know glibc >= 2.1 */
- /* GNU libc 2 allows us to abstract away from having to know the
- master pty device name. */
- if ((*pty = getpt()) >= 0) {
- char *name = ptsname(*pty);
- if (name != 0) { /* if filesystem is trashed, this may be null */
- strcpy(ttydev, name);
- result = 0;
- }
- }
-#elif defined(__MVS__)
- result = pty_search(pty);
-#else
-#if defined(USE_ISPTS_FLAG)
- if (result) {
-#endif
- result = ((*pty = open("/dev/ptmx", O_RDWR)) < 0);
-#endif
-#if defined(SVR4) || defined(__SCO__) || defined(USE_ISPTS_FLAG)
- if (!result)
- strcpy(ttydev, ptsname(*pty));
-#ifdef USE_ISPTS_FLAG
- IsPts = !result; /* true if we're successful */
- }
-#endif
-#endif
-
-#elif defined(AIXV3)
-
- if ((*pty = open("/dev/ptc", O_RDWR)) >= 0) {
- strcpy(ttydev, ttyname(*pty));
- result = 0;
- }
-#elif defined(__convex__)
-
- char *pty_name;
- extern char *getpty(void);
-
- while ((pty_name = getpty()) != NULL) {
- if ((*pty = open(pty_name, O_RDWR)) >= 0) {
- strcpy(ptydev, pty_name);
- strcpy(ttydev, pty_name);
- *x_basename(ttydev) = 't';
- result = 0;
- break;
- }
- }
-
-#elif defined(sequent)
-
- result = ((*pty = getpseudotty(&ttydev, &ptydev)) < 0);
-
-#elif defined(__sgi) && (OSMAJORVERSION >= 4)
-
- char *tty_name;
-
- tty_name = _getpty(pty, O_RDWR, 0622, 0);
- if (tty_name != 0) {
- strcpy(ttydev, tty_name);
- result = 0;
- }
-#elif (defined(__sgi) && (OSMAJORVERSION < 4)) || (defined(umips) && defined (SYSTYPE_SYSV))
-
- struct stat fstat_buf;
-
- *pty = open("/dev/ptc", O_RDWR);
- if (*pty >= 0 && (fstat(*pty, &fstat_buf)) >= 0) {
- result = 0;
- sprintf(ttydev, "/dev/ttyq%d", minor(fstat_buf.st_rdev));
- }
-#elif defined(__hpux)
-
- /*
- * Use the clone device if it works, otherwise use pty_search logic.
- */
- if ((*pty = open("/dev/ptym/clone", O_RDWR)) >= 0) {
- char *name = ptsname(*pty);
- if (name != 0) {
- strcpy(ttydev, name);
- result = 0;
- } else { /* permissions, or other unexpected problem */
- close(*pty);
- *pty = -1;
- result = pty_search(pty);
- }
- } else {
- result = pty_search(pty);
- }
-
-#else
-
- result = pty_search(pty);
-
-#endif
-#endif
-
- TRACE(("get_pty(ttydev=%s, ptydev=%s) %s fd=%d\n",
- ttydev != 0 ? ttydev : "?",
- ptydev != 0 ? ptydev : "?",
- result ? "FAIL" : "OK",
- pty != 0 ? *pty : -1));
- return result;
-}
-
-static void
-set_pty_permissions(uid_t uid, gid_t gid, mode_t mode)
-{
-#ifdef USE_TTY_GROUP
- struct group *ttygrp;
-
- if ((ttygrp = getgrnam(TTY_GROUP_NAME)) != 0) {
- gid = ttygrp->gr_gid;
- mode &= 0660U;
- }
- endgrent();
-#endif /* USE_TTY_GROUP */
-
- set_owner(ttydev, uid, gid, mode);
-}
-
-#ifdef get_pty /* USE_UTMP_SETGID */
-#undef get_pty
-/*
- * Call the real get_pty() before relinquishing root-setuid, caching the
- * result.
- */
-static int
-get_pty(int *pty, char *from)
-{
- static int m_pty = -1;
- int result = -1;
-
- if (pty == NULL) {
- result = really_get_pty(&m_pty, from);
-
- seteuid(0);
- set_pty_permissions(getuid(), getgid(), 0600U);
- seteuid(getuid());
-
-#ifdef USE_OPENPTY
- if (opened_tty >= 0) {
- close(opened_tty);
- opened_tty = -1;
- }
-#endif
- } else if (m_pty != -1) {
- *pty = m_pty;
- result = 0;
- } else {
- result = -1;
- }
- return result;
-}
-#endif
-
-/*
- * Called from get_pty to iterate over likely pseudo terminals
- * we might allocate. Used on those systems that do not have
- * a functional interface for allocating a pty.
- * Returns 0 if found a pty, 1 if fails.
- */
-#ifdef USE_PTY_SEARCH
-static int
-pty_search(int *pty)
-{
- static int devindex = 0, letter = 0;
-
-#if defined(CRAY) || defined(__MVS__)
- while (devindex < MAXPTTYS) {
- sprintf(ttydev, TTYFORMAT, devindex);
- sprintf(ptydev, PTYFORMAT, devindex);
- devindex++;
-
- TRACE(("pty_search(ttydev=%s, ptydev=%s)\n", ttydev, ptydev));
- if ((*pty = open(ptydev, O_RDWR)) >= 0) {
- return 0;
- }
- }
-#else /* CRAY || __MVS__ */
- while (PTYCHAR1[letter]) {
- ttydev[strlen(ttydev) - 2] =
- ptydev[strlen(ptydev) - 2] = PTYCHAR1[letter];
-
- while (PTYCHAR2[devindex]) {
- ttydev[strlen(ttydev) - 1] =
- ptydev[strlen(ptydev) - 1] = PTYCHAR2[devindex];
- devindex++;
-
- TRACE(("pty_search(ttydev=%s, ptydev=%s)\n", ttydev, ptydev));
- if ((*pty = open(ptydev, O_RDWR)) >= 0) {
-#ifdef sun
- /* Need to check the process group of the pty.
- * If it exists, then the slave pty is in use,
- * and we need to get another one.
- */
- int pgrp_rtn;
- if (ioctl(*pty, TIOCGPGRP, &pgrp_rtn) == 0 || errno != EIO) {
- close(*pty);
- continue;
- }
-#endif /* sun */
- return 0;
- }
- }
- devindex = 0;
- letter++;
- }
-#endif /* CRAY else */
- /*
- * We were unable to allocate a pty master! Return an error
- * condition and let our caller terminate cleanly.
- */
- return 1;
-}
-#endif /* USE_PTY_SEARCH */
-
-/*
- * sets up X and initializes the terminal structure except for term.buf.fildes.
- */
-static void
-get_terminal(void)
-{
- TScreen *screen = &term->screen;
-
- screen->arrow = make_colored_cursor(XC_left_ptr,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
-}
-
-/*
- * The only difference in /etc/termcap between 4014 and 4015 is that
- * the latter has support for switching character sets. We support the
- * 4015 protocol, but ignore the character switches. Therefore, we
- * choose 4014 over 4015.
- *
- * Features of the 4014 over the 4012: larger (19") screen, 12-bit
- * graphics addressing (compatible with 4012 10-bit addressing),
- * special point plot mode, incremental plot mode (not implemented in
- * later Tektronix terminals), and 4 character sizes.
- * All of these are supported by xterm.
- */
-
-#if OPT_TEK4014
-static char *tekterm[] =
-{
- "tek4014",
- "tek4015", /* 4014 with APL character set support */
- "tek4012", /* 4010 with lower case */
- "tek4013", /* 4012 with APL character set support */
- "tek4010", /* small screen, upper-case only */
- "dumb",
- 0
-};
-#endif
-
-/* The VT102 is a VT100 with the Advanced Video Option included standard.
- * It also adds Escape sequences for insert/delete character/line.
- * The VT220 adds 8-bit character sets, selective erase.
- * The VT320 adds a 25th status line, terminal state interrogation.
- * The VT420 has up to 48 lines on the screen.
- */
-
-static char *vtterm[] =
-{
-#ifdef USE_X11TERM
- "x11term", /* for people who want special term name */
-#endif
- DFT_TERMTYPE, /* for people who want special term name */
- "xterm", /* the prefered name, should be fastest */
- "vt102",
- "vt100",
- "ansi",
- "dumb",
- 0
-};
-
-/* ARGSUSED */
-static SIGNAL_T
-hungtty(int i GCC_UNUSED)
-{
- siglongjmp(env, 1);
- SIGNAL_RETURN;
-}
-
-/*
- * declared outside OPT_PTY_HANDSHAKE so HsSysError() callers can use
- */
-static int cp_pipe[2]; /* this pipe is used for child to parent transfer */
-
-#if OPT_PTY_HANDSHAKE
-static int pc_pipe[2]; /* this pipe is used for parent to child transfer */
-typedef enum { /* c == child, p == parent */
- PTY_BAD, /* c->p: can't open pty slave for some reason */
- PTY_FATALERROR, /* c->p: we had a fatal error with the pty */
- PTY_GOOD, /* c->p: we have a good pty, let's go on */
- PTY_NEW, /* p->c: here is a new pty slave, try this */
- PTY_NOMORE, /* p->c; no more pty's, terminate */
- UTMP_ADDED, /* c->p: utmp entry has been added */
- UTMP_TTYSLOT, /* c->p: here is my ttyslot */
- PTY_EXEC /* p->c: window has been mapped the first time */
-} status_t;
-
-typedef struct {
- status_t status;
- int error;
- int fatal_error;
- int tty_slot;
- int rows;
- int cols;
- char buffer[1024];
-} handshake_t;
-
-/* HsSysError()
- *
- * This routine does the equivalent of a SysError but it handshakes
- * over the errno and error exit to the master process so that it can
- * display our error message and exit with our exit code so that the
- * user can see it.
- */
-
-static void
-HsSysError(int pf, int error)
-{
- handshake_t handshake;
-
- handshake.status = PTY_FATALERROR;
- handshake.error = errno;
- handshake.fatal_error = error;
- strcpy(handshake.buffer, ttydev);
- write(pf, (char *) &handshake, sizeof(handshake));
- exit(error);
-}
-
-void
-first_map_occurred(void)
-{
- handshake_t handshake;
- TScreen *screen = &term->screen;
-
- handshake.status = PTY_EXEC;
- handshake.rows = screen->max_row;
- handshake.cols = screen->max_col;
- write(pc_pipe[1], (char *) &handshake, sizeof(handshake));
- close(cp_pipe[0]);
- close(pc_pipe[1]);
- waiting_for_initial_map = False;
-}
-#else
-/*
- * temporary hack to get xterm working on att ptys
- */
-static void
-HsSysError(int pf GCC_UNUSED, int error)
-{
- fprintf(stderr, "%s: fatal pty error %d (errno=%d) on tty %s\n",
- xterm_name, error, errno, ttydev);
- exit(error);
-}
-
-void
-first_map_occurred(void)
-{
- return;
-}
-#endif /* OPT_PTY_HANDSHAKE else !OPT_PTY_HANDSHAKE */
-
-#ifndef VMS
-static void
-set_owner(char *device, uid_t uid, gid_t gid, mode_t mode)
-{
- int why;
-
- TRACE(("set_owner(%s, uid=%d, gid=%d, mode=%#o\n", device, uid, gid, mode));
-
- if (chown(device, uid, gid) < 0) {
- why = errno;
- if (why != ENOENT
- && getuid() == 0) {
- fprintf(stderr, "Cannot chown %s to %ld,%ld: %s\n",
- device, (long) uid, (long) gid,
- strerror(why));
- }
- TRACE(("...chown failed: %s\n", strerror(why)));
- }
- if (chmod(device, mode) < 0) {
- why = errno;
- if (why != ENOENT) {
- struct stat sb;
- if (stat(device, &sb) < 0) {
- fprintf(stderr, "Cannot chmod %s to %03o: %s\n",
- device, (unsigned) mode,
- strerror(why));
- } else if (mode != (sb.st_mode & 0777U)) {
- fprintf(stderr,
- "Cannot chmod %s to %03o currently %03o: %s\n",
- device, (unsigned) mode, (sb.st_mode & 0777U),
- strerror(why));
- TRACE(("...stat uid=%d, gid=%d, mode=%#o\n",
- sb.st_uid, sb.st_gid, sb.st_mode));
- }
- }
- TRACE(("...chmod failed: %s\n", strerror(why)));
- }
-}
-
-#if defined(HAVE_UTMP) && defined(USE_SYSV_UTMP) && !defined(USE_UTEMPTER)
-/*
- * getutid() only looks at ut_type and ut_id.
- * But we'll also check ut_line in find_utmp().
- */
-static void
-init_utmp(int type, struct UTMP_STR *tofind)
-{
- memset(tofind, 0, sizeof(*tofind));
- tofind->ut_type = type;
- (void) strncpy(tofind->ut_id, my_utmp_id(ttydev), sizeof(tofind->ut_id));
- (void) strncpy(tofind->ut_line, my_pty_name(ttydev), sizeof(tofind->ut_line));
-}
-
-/*
- * We could use getutline() if we didn't support old systems.
- */
-static struct UTMP_STR *
-find_utmp(struct UTMP_STR *tofind)
-{
- struct UTMP_STR *result;
- struct UTMP_STR working;
-
- for (;;) {
- memset(&working, 0, sizeof(working));
- working.ut_type = tofind->ut_type;
- memcpy(working.ut_id, tofind->ut_id, sizeof(tofind->ut_id));
-#if defined(__digital__) && defined(__unix__) && (defined(OSMAJORVERSION) && OSMAJORVERSION < 5)
- working.ut_type = 0;
-#endif
- if ((result = call_getutid(&working)) == 0)
- break;
- if (!strcmp(result->ut_line, tofind->ut_line))
- break;
- /*
- * Solaris, IRIX64 and HPUX manpages say to fill the static area
- * pointed to by the return-value to zeros if searching for multiple
- * occurrences. Otherwise it will continue to return the same value.
- */
- memset(result, 0, sizeof(*result));
- }
- return result;
-}
-#endif /* HAVE_UTMP... */
-
-#define close_fd(fd) close(fd), fd = -1
-
-/*
- * Inits pty and tty and forks a login process.
- * Does not close fd Xsocket.
- * If slave, the pty named in passedPty is already open for use
- */
-static int
-spawn(void)
-{
- TScreen *screen = &term->screen;
-#if OPT_PTY_HANDSHAKE
- handshake_t handshake;
- int done;
-#endif
-#if OPT_INITIAL_ERASE
- int initial_erase = VAL_INITIAL_ERASE;
-#endif
- int rc = 0;
- int ttyfd = -1;
-
-#ifdef TERMIO_STRUCT
- TERMIO_STRUCT tio;
-#ifdef __MVS__
- TERMIO_STRUCT gio;
-#endif /* __MVS__ */
-#ifdef TIOCLSET
- unsigned lmode;
-#endif /* TIOCLSET */
-#ifdef HAS_LTCHARS
- struct ltchars ltc;
-#endif /* HAS_LTCHARS */
-#else /* !TERMIO_STRUCT */
- int ldisc = 0;
- int discipline;
- unsigned lmode;
- struct tchars tc;
- struct ltchars ltc;
- struct sgttyb sg;
-#ifdef sony
- int jmode;
- struct jtchars jtc;
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
-
- char termcap[TERMCAP_SIZE];
- char newtc[TERMCAP_SIZE];
- char *ptr, *shname, *shname_minus;
- int i, no_dev_tty = False;
- char **envnew; /* new environment */
- int envsize; /* elements in new environment */
- char buf[64];
- char *TermName = NULL;
-#ifdef TTYSIZE_STRUCT
- TTYSIZE_STRUCT ts;
-#endif
- struct passwd *pw = NULL;
- char *login_name = NULL;
-#ifndef USE_UTEMPTER
-#ifdef HAVE_UTMP
- struct UTMP_STR utmp;
-#ifdef USE_SYSV_UTMP
- struct UTMP_STR *utret = NULL;
-#endif
-#ifdef USE_LASTLOG
- struct lastlog lastlog;
-#endif
-#ifdef USE_LASTLOGX
- struct lastlogx lastlog;
-#endif /* USE_LASTLOG */
-#endif /* HAVE_UTMP */
-#endif /* !USE_UTEMPTER */
-
- /* Noisy compilers (suppress some unused-variable warnings) */
- (void) rc;
-#if defined(HAVE_UTMP) && defined(USE_SYSV_UTMP) && !defined(USE_UTEMPTER)
- (void) utret;
-#endif
-
- screen->uid = getuid();
- screen->gid = getgid();
-
- termcap[0] = '\0';
- newtc[0] = '\0';
-
-#ifdef SIGTTOU
- /* so that TIOCSWINSZ || TIOCSIZE doesn't block */
- signal(SIGTTOU, SIG_IGN);
-#endif
-
- if (am_slave >= 0) {
- screen->respond = am_slave;
- set_pty_id(ttydev, passedPty);
-#ifdef USE_PTY_DEVICE
- set_pty_id(ptydev, passedPty);
-#endif
- setgid(screen->gid);
- setuid(screen->uid);
- } else {
- Bool tty_got_hung;
-
- /*
- * Sometimes /dev/tty hangs on open (as in the case of a pty
- * that has gone away). Simply make up some reasonable
- * defaults.
- */
-
- signal(SIGALRM, hungtty);
- alarm(2); /* alarm(1) might return too soon */
- if (!sigsetjmp(env, 1)) {
- ttyfd = open("/dev/tty", O_RDWR);
- alarm(0);
- tty_got_hung = False;
- } else {
- tty_got_hung = True;
- ttyfd = -1;
- errno = ENXIO;
- }
-#if OPT_INITIAL_ERASE
- initial_erase = VAL_INITIAL_ERASE;
-#endif
- signal(SIGALRM, SIG_DFL);
-
- /*
- * Check results and ignore current control terminal if
- * necessary. ENXIO is what is normally returned if there is
- * no controlling terminal, but some systems (e.g. SunOS 4.0)
- * seem to return EIO. Solaris 2.3 is said to return EINVAL.
- * Cygwin returns ENOENT.
- */
- no_dev_tty = False;
- if (ttyfd < 0) {
- if (tty_got_hung || errno == ENXIO || errno == EIO ||
-#ifdef ENODEV
- errno == ENODEV ||
-#endif
-#ifdef __CYGWIN__
- errno == ENOENT ||
-#endif
- errno == EINVAL || errno == ENOTTY || errno == EACCES) {
- no_dev_tty = True;
-#ifdef HAS_LTCHARS
- ltc = d_ltc;
-#endif /* HAS_LTCHARS */
-#ifdef TIOCLSET
- lmode = d_lmode;
-#endif /* TIOCLSET */
-#ifdef TERMIO_STRUCT
- tio = d_tio;
-#else /* !TERMIO_STRUCT */
- sg = d_sg;
- tc = d_tc;
- discipline = d_disipline;
-#ifdef sony
- jmode = d_jmode;
- jtc = d_jtc;
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
- } else {
- SysError(ERROR_OPDEVTTY);
- }
- } else {
-
- /* Get a copy of the current terminal's state,
- * if we can. Some systems (e.g., SVR4 and MacII)
- * may not have a controlling terminal at this point
- * if started directly from xdm or xinit,
- * in which case we just use the defaults as above.
- */
-#ifdef HAS_LTCHARS
- if (ioctl(ttyfd, TIOCGLTC, &ltc) == -1)
- ltc = d_ltc;
-#endif /* HAS_LTCHARS */
-#ifdef TIOCLSET
- if (ioctl(ttyfd, TIOCLGET, &lmode) == -1)
- lmode = d_lmode;
-#endif /* TIOCLSET */
-#ifdef TERMIO_STRUCT
- if ((rc = ttyGetAttr(ttyfd, &tio)) == -1)
- tio = d_tio;
-#else /* !TERMIO_STRUCT */
- if ((rc = ioctl(ttyfd, TIOCGETP, (char *) &sg)) == -1)
- sg = d_sg;
- if (ioctl(ttyfd, TIOCGETC, (char *) &tc) == -1)
- tc = d_tc;
- if (ioctl(ttyfd, TIOCGETD, (char *) &discipline) == -1)
- discipline = d_disipline;
-#ifdef sony
- if (ioctl(ttyfd, TIOCKGET, (char *) &jmode) == -1)
- jmode = d_jmode;
- if (ioctl(ttyfd, TIOCKGETC, (char *) &jtc) == -1)
- jtc = d_jtc;
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
-
- /*
- * If ptyInitialErase is set, we want to get the pty's
- * erase value. Just in case that will fail, first get
- * the value from /dev/tty, so we will have something
- * at least.
- */
-#if OPT_INITIAL_ERASE
- if (resource.ptyInitialErase) {
-#ifdef TERMIO_STRUCT
- initial_erase = tio.c_cc[VERASE];
-#else /* !TERMIO_STRUCT */
- initial_erase = sg.sg_erase;
-#endif /* TERMIO_STRUCT */
- TRACE(("%s initial_erase:%d (from /dev/tty)\n",
- rc == 0 ? "OK" : "FAIL",
- initial_erase));
- }
-#endif
-#ifdef __MVS__
- if (ttyGetAttr(ttyfd, &gio) == 0) {
- gio.c_cflag &= ~(HUPCL | PARENB);
- ttySetAttr(ttyfd, &gio);
- }
-#endif /* __MVS__ */
-
- close_fd(ttyfd);
- }
-
- if (get_pty(&screen->respond, XDisplayString(screen->display))) {
- SysError(ERROR_PTYS);
- }
-#if OPT_INITIAL_ERASE
- if (resource.ptyInitialErase) {
-#ifdef TERMIO_STRUCT
- TERMIO_STRUCT my_tio;
- if ((rc = ttyGetAttr(screen->respond, &my_tio)) == 0)
- initial_erase = my_tio.c_cc[VERASE];
-#else /* !TERMIO_STRUCT */
- struct sgttyb my_sg;
- if ((rc = ioctl(screen->respond, TIOCGETP, (char *) &my_sg)) == 0)
- initial_erase = my_sg.sg_erase;
-#endif /* TERMIO_STRUCT */
- TRACE(("%s initial_erase:%d (from pty)\n",
- (rc == 0) ? "OK" : "FAIL",
- initial_erase));
- }
-#endif /* OPT_INITIAL_ERASE */
- }
-
- /* avoid double MapWindow requests */
- XtSetMappedWhenManaged(XtParent(CURRENT_EMU(screen)), False);
-
- wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW",
- False);
-
- if (!TEK4014_ACTIVE(screen))
- VTInit(); /* realize now so know window size for tty driver */
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
- if (Console) {
- /*
- * Inform any running xconsole program
- * that we are going to steal the console.
- */
- XmuGetHostname(mit_console_name + MIT_CONSOLE_LEN, 255);
- mit_console = XInternAtom(screen->display, mit_console_name, False);
- /* the user told us to be the console, so we can use CurrentTime */
- XtOwnSelection(XtParent(CURRENT_EMU(screen)),
- mit_console, CurrentTime,
- ConvertConsoleSelection, NULL, NULL);
- }
-#endif
-#if OPT_TEK4014
- if (screen->TekEmu) {
- envnew = tekterm;
- ptr = newtc;
- } else
-#endif
- {
- envnew = vtterm;
- ptr = termcap;
- }
-
- /*
- * This used to exit if no termcap entry was found for the specified
- * terminal name. That's a little unfriendly, so instead we'll allow
- * the program to proceed (but not to set $TERMCAP) if the termcap
- * entry is not found.
- */
- if (!get_termcap(TermName = resource.term_name, ptr, newtc)) {
- char *last = NULL;
- TermName = *envnew;
- while (*envnew != NULL) {
- if ((last == NULL || strcmp(last, *envnew))
- && get_termcap(*envnew, ptr, newtc)) {
- TermName = *envnew;
- break;
- }
- last = *envnew;
- envnew++;
- }
- }
-
- /*
- * Check if ptyInitialErase is not set. If so, we rely on the termcap
- * (or terminfo) to tell us what the erase mode should be set to.
- */
-#if OPT_INITIAL_ERASE
- TRACE(("resource ptyInitialErase is %sset\n",
- resource.ptyInitialErase ? "" : "not "));
- if (!resource.ptyInitialErase) {
- char temp[1024], *p = temp;
- char *s = tgetstr(TERMCAP_ERASE, &p);
- TRACE(("...extracting initial_erase value from termcap\n"));
- if (s != 0) {
- initial_erase = decode_keyvalue(&s, True);
- }
- }
- TRACE(("...initial_erase:%d\n", initial_erase));
-
- TRACE(("resource backarrowKeyIsErase is %sset\n",
- resource.backarrow_is_erase ? "" : "not "));
- if (resource.backarrow_is_erase) { /* see input.c */
- if (initial_erase == 127) {
- term->keyboard.flags &= ~MODE_DECBKM;
- } else {
- term->keyboard.flags |= MODE_DECBKM;
- term->keyboard.reset_DECBKM = 1;
- }
- TRACE(("...sets DECBKM %s\n",
- (term->keyboard.flags & MODE_DECBKM) ? "on" : "off"));
- } else {
- term->keyboard.reset_DECBKM = 2;
- }
-#endif /* OPT_INITIAL_ERASE */
-
-#ifdef TTYSIZE_STRUCT
- /* tell tty how big window is */
-#if OPT_TEK4014
- if (TEK4014_ACTIVE(screen)) {
- TTYSIZE_ROWS(ts) = 38;
- TTYSIZE_COLS(ts) = 81;
-#if defined(USE_STRUCT_WINSIZE)
- ts.ws_xpixel = TFullWidth(screen);
- ts.ws_ypixel = TFullHeight(screen);
-#endif
- } else
-#endif
- {
- TTYSIZE_ROWS(ts) = MaxRows(screen);
- TTYSIZE_COLS(ts) = MaxCols(screen);
-#if defined(USE_STRUCT_WINSIZE)
- ts.ws_xpixel = FullWidth(screen);
- ts.ws_ypixel = FullHeight(screen);
-#endif
- }
- i = SET_TTYSIZE(screen->respond, ts);
- TRACE(("spawn SET_TTYSIZE %dx%d return %d\n",
- TTYSIZE_ROWS(ts),
- TTYSIZE_COLS(ts), i));
-#endif /* TTYSIZE_STRUCT */
-
- added_utmp_entry = False;
-#if defined(USE_UTEMPTER)
-#undef UTMP
- if (!resource.utmpInhibit) {
- struct UTMP_STR dummy;
-
- /* Note: utempter may trim it anyway */
- SetUtmpHost(dummy.ut_host, screen);
- addToUtmp(ttydev, dummy.ut_host, screen->respond);
- added_utmp_entry = True;
- }
-#endif
-
- if (am_slave < 0) {
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake && (pipe(pc_pipe) || pipe(cp_pipe)))
- SysError(ERROR_FORK);
-#endif
- TRACE(("Forking...\n"));
- if ((screen->pid = fork()) == -1)
- SysError(ERROR_FORK);
-
- if (screen->pid == 0) {
- /*
- * now in child process
- */
- TRACE_CHILD
-#if defined(_POSIX_SOURCE) || defined(SVR4) || defined(__convex__) || defined(__SCO__) || defined(__QNX__)
- int pgrp = setsid(); /* variable may not be used... */
-#else
- int pgrp = getpid();
-#endif
-
-#ifdef USE_USG_PTYS
-#ifdef USE_ISPTS_FLAG
- if (IsPts) { /* SYSV386 supports both, which did we open? */
-#endif
- int ptyfd = 0;
- char *pty_name = 0;
-
- setpgrp();
- grantpt(screen->respond);
- unlockpt(screen->respond);
- if ((pty_name = ptsname(screen->respond)) == 0) {
- SysError(ERROR_PTSNAME);
- }
- if ((ptyfd = open(pty_name, O_RDWR)) < 0) {
- SysError(ERROR_OPPTSNAME);
- }
-#ifdef I_PUSH
- if (ioctl(ptyfd, I_PUSH, "ptem") < 0) {
- SysError(ERROR_PTEM);
- }
-#if !defined(SVR4) && !(defined(SYSV) && defined(i386))
- if (!getenv("CONSEM") && ioctl(ptyfd, I_PUSH, "consem") < 0) {
- SysError(ERROR_CONSEM);
- }
-#endif /* !SVR4 */
- if (ioctl(ptyfd, I_PUSH, "ldterm") < 0) {
- SysError(ERROR_LDTERM);
- }
-#ifdef SVR4 /* from Sony */
- if (ioctl(ptyfd, I_PUSH, "ttcompat") < 0) {
- SysError(ERROR_TTCOMPAT);
- }
-#endif /* SVR4 */
-#endif /* I_PUSH */
- ttyfd = ptyfd;
-#ifndef __MVS__
- close_fd(screen->respond);
-#endif /* __MVS__ */
-
-#ifdef TTYSIZE_STRUCT
- /* tell tty how big window is */
-#if OPT_TEK4014
- if (TEK4014_ACTIVE(screen)) {
- TTYSIZE_ROWS(ts) = 24;
- TTYSIZE_COLS(ts) = 80;
-#ifdef USE_STRUCT_WINSIZE
- ts.ws_xpixel = TFullWidth(screen);
- ts.ws_ypixel = TFullHeight(screen);
-#endif
- } else
-#endif /* OPT_TEK4014 */
- {
- TTYSIZE_ROWS(ts) = MaxRows(screen);
- TTYSIZE_COLS(ts) = MaxCols(screen);
-#ifdef USE_STRUCT_WINSIZE
- ts.ws_xpixel = FullWidth(screen);
- ts.ws_ypixel = FullHeight(screen);
-#endif
- }
-#endif /* TTYSIZE_STRUCT */
-
-#ifdef USE_ISPTS_FLAG
- } else { /* else pty, not pts */
-#endif
-#endif /* USE_USG_PTYS */
-
- (void) pgrp; /* not all branches use this variable */
-
-#if OPT_PTY_HANDSHAKE /* warning, goes for a long ways */
- if (resource.ptyHandshake) {
- /* close parent's sides of the pipes */
- close(cp_pipe[0]);
- close(pc_pipe[1]);
-
- /* Make sure that our sides of the pipes are not in the
- * 0, 1, 2 range so that we don't fight with stdin, out
- * or err.
- */
- if (cp_pipe[1] <= 2) {
- if ((i = fcntl(cp_pipe[1], F_DUPFD, 3)) >= 0) {
- (void) close(cp_pipe[1]);
- cp_pipe[1] = i;
- }
- }
- if (pc_pipe[0] <= 2) {
- if ((i = fcntl(pc_pipe[0], F_DUPFD, 3)) >= 0) {
- (void) close(pc_pipe[0]);
- pc_pipe[0] = i;
- }
- }
-
- /* we don't need the socket, or the pty master anymore */
- close(ConnectionNumber(screen->display));
-#ifndef __MVS__
- close(screen->respond);
-#endif /* __MVS__ */
-
- /* Now is the time to set up our process group and
- * open up the pty slave.
- */
-#ifdef USE_SYSV_PGRP
-#if defined(CRAY) && (OSMAJORVERSION > 5)
- (void) setsid();
-#else
- (void) setpgrp();
-#endif
-#endif /* USE_SYSV_PGRP */
-
-#if defined(__QNX__) && !defined(__QNXNTO__)
- qsetlogin(getlogin(), ttydev);
-#endif
- if (ttyfd >= 0) {
-#ifdef __MVS__
- if (ttyGetAttr(ttyfd, &gio) == 0) {
- gio.c_cflag &= ~(HUPCL | PARENB);
- ttySetAttr(ttyfd, &gio);
- }
-#else /* !__MVS__ */
- close_fd(ttyfd);
-#endif /* __MVS__ */
- }
-
- while (1) {
-#if defined(TIOCNOTTY) && (!defined(__GLIBC__) || (__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))
- if (!no_dev_tty
- && (ttyfd = open("/dev/tty", O_RDWR)) >= 0) {
- ioctl(ttyfd, TIOCNOTTY, (char *) NULL);
- close_fd(ttyfd);
- }
-#endif /* TIOCNOTTY && !glibc >= 2.1 */
-#ifdef CSRG_BASED
- (void) revoke(ttydev);
-#endif
- if ((ttyfd = open(ttydev, O_RDWR)) >= 0) {
-#if defined(CRAY) && defined(TCSETCTTY)
- /* make /dev/tty work */
- ioctl(ttyfd, TCSETCTTY, 0);
-#endif
-#ifdef USE_SYSV_PGRP
- /* We need to make sure that we are actually
- * the process group leader for the pty. If
- * we are, then we should now be able to open
- * /dev/tty.
- */
- if ((i = open("/dev/tty", O_RDWR)) >= 0) {
- /* success! */
- close(i);
- break;
- }
-#else /* USE_SYSV_PGRP */
- break;
-#endif /* USE_SYSV_PGRP */
- }
- perror("open ttydev");
-#ifdef TIOCSCTTY
- ioctl(ttyfd, TIOCSCTTY, 0);
-#endif
- /* let our master know that the open failed */
- handshake.status = PTY_BAD;
- handshake.error = errno;
- strcpy(handshake.buffer, ttydev);
- write(cp_pipe[1], (char *) &handshake,
- sizeof(handshake));
-
- /* get reply from parent */
- i = read(pc_pipe[0], (char *) &handshake,
- sizeof(handshake));
- if (i <= 0) {
- /* parent terminated */
- exit(1);
- }
-
- if (handshake.status == PTY_NOMORE) {
- /* No more ptys, let's shutdown. */
- exit(1);
- }
-
- /* We have a new pty to try */
- free(ttydev);
- ttydev = CastMallocN(char, strlen(handshake.buffer));
- if (ttydev == NULL) {
- SysError(ERROR_SPREALLOC);
- }
- strcpy(ttydev, handshake.buffer);
- }
-
- /* use the same tty name that everyone else will use
- * (from ttyname)
- */
- if ((ptr = ttyname(ttyfd)) != 0) {
- /* it may be bigger */
- ttydev = TypeRealloc(char, strlen(ptr) + 1, ttydev);
- if (ttydev == NULL) {
- SysError(ERROR_SPREALLOC);
- }
- (void) strcpy(ttydev, ptr);
- }
- }
-#endif /* OPT_PTY_HANDSHAKE -- from near fork */
-
-#ifdef USE_ISPTS_FLAG
- } /* end of IsPts else clause */
-#endif
-
- set_pty_permissions(screen->uid,
- screen->gid,
- (resource.messages
- ? 0622U
- : 0600U));
-
- /*
- * set up the tty modes
- */
- {
-#ifdef TERMIO_STRUCT
-#if defined(umips) || defined(CRAY) || defined(linux)
- /* If the control tty had its modes screwed around with,
- eg. by lineedit in the shell, or emacs, etc. then tio
- will have bad values. Let's just get termio from the
- new tty and tailor it. */
- if (ttyGetAttr(ttyfd, &tio) == -1)
- SysError(ERROR_TIOCGETP);
- tio.c_lflag |= ECHOE;
-#endif /* umips */
- /* Now is also the time to change the modes of the
- * child pty.
- */
- /* input: nl->nl, don't ignore cr, cr->nl */
- tio.c_iflag &= ~(INLCR | IGNCR);
- tio.c_iflag |= ICRNL;
-#if OPT_WIDE_CHARS && defined(linux) && defined(IUTF8)
-#if OPT_LUIT_PROG
- if (command_to_exec_with_luit == 0)
-#endif
- if (screen->utf8_mode)
- tio.c_iflag |= IUTF8;
-#endif
- /* ouput: cr->cr, nl is not return, no delays, ln->cr/nl */
-#ifndef USE_POSIX_TERMIOS
- tio.c_oflag &=
- ~(OCRNL
- | ONLRET
- | NLDLY
- | CRDLY
- | TABDLY
- | BSDLY
- | VTDLY
- | FFDLY);
-#endif /* USE_POSIX_TERMIOS */
-#ifdef ONLCR
- tio.c_oflag |= ONLCR;
-#endif /* ONLCR */
-#ifdef OPOST
- tio.c_oflag |= OPOST;
-#endif /* OPOST */
-#ifndef USE_POSIX_TERMIOS
-# if defined(Lynx) && !defined(CBAUD)
-# define CBAUD V_CBAUD
-# endif
- tio.c_cflag &= ~(CBAUD);
-#ifdef BAUD_0
- /* baud rate is 0 (don't care) */
-#elif defined(HAVE_TERMIO_C_ISPEED)
- tio.c_ispeed = tio.c_ospeed = VAL_LINE_SPEED;
-#else /* !BAUD_0 */
- tio.c_cflag |= VAL_LINE_SPEED;
-#endif /* !BAUD_0 */
-#else /* USE_POSIX_TERMIOS */
- cfsetispeed(&tio, VAL_LINE_SPEED);
- cfsetospeed(&tio, VAL_LINE_SPEED);
-#ifdef __MVS__
- /* turn off bits that can't be set from the slave side */
- tio.c_cflag &= ~(PACKET | PKT3270 | PTU3270 | PKTXTND);
-#endif /* __MVS__ */
- /* Clear CLOCAL so that SIGHUP is sent to us
- when the xterm ends */
- tio.c_cflag &= ~CLOCAL;
-#endif /* USE_POSIX_TERMIOS */
- /* enable signals, canonical processing (erase, kill, etc),
- * echo
- */
- tio.c_lflag |= ISIG | ICANON | ECHO | ECHOE | ECHOK;
-#ifdef ECHOKE
- tio.c_lflag |= ECHOKE | IEXTEN;
-#endif
-#ifdef ECHOCTL
- tio.c_lflag |= ECHOCTL | IEXTEN;
-#endif
-#ifndef __MVS__
- /* reset EOL to default value */
- tio.c_cc[VEOL] = CEOL; /* '^@' */
- /* certain shells (ksh & csh) change EOF as well */
- tio.c_cc[VEOF] = CEOF; /* '^D' */
-#else
- if (tio.c_cc[VEOL] == 0)
- tio.c_cc[VEOL] = CEOL; /* '^@' */
- if (tio.c_cc[VEOF] == 0)
- tio.c_cc[VEOF] = CEOF; /* '^D' */
-#endif
-#ifdef VLNEXT
- tio.c_cc[VLNEXT] = CLNEXT;
-#endif
-#ifdef VWERASE
- tio.c_cc[VWERASE] = CWERASE;
-#endif
-#ifdef VREPRINT
- tio.c_cc[VREPRINT] = CRPRNT;
-#endif
-#ifdef VRPRNT
- tio.c_cc[VRPRNT] = CRPRNT;
-#endif
-#ifdef VDISCARD
- tio.c_cc[VDISCARD] = CFLUSH;
-#endif
-#ifdef VFLUSHO
- tio.c_cc[VFLUSHO] = CFLUSH;
-#endif
-#ifdef VSTOP
- tio.c_cc[VSTOP] = CSTOP;
-#endif
-#ifdef VSTART
- tio.c_cc[VSTART] = CSTART;
-#endif
-#ifdef VSUSP
- tio.c_cc[VSUSP] = CSUSP;
-#endif
-#ifdef VDSUSP
- tio.c_cc[VDSUSP] = CDSUSP;
-#endif
- if (override_tty_modes) {
- /* sysv-specific */
- TMODE(XTTYMODE_intr, tio.c_cc[VINTR]);
- TMODE(XTTYMODE_quit, tio.c_cc[VQUIT]);
- TMODE(XTTYMODE_erase, tio.c_cc[VERASE]);
- TMODE(XTTYMODE_kill, tio.c_cc[VKILL]);
- TMODE(XTTYMODE_eof, tio.c_cc[VEOF]);
- TMODE(XTTYMODE_eol, tio.c_cc[VEOL]);
-#ifdef VSWTCH
- TMODE(XTTYMODE_swtch, tio.c_cc[VSWTCH]);
-#endif
-#ifdef VSUSP
- TMODE(XTTYMODE_susp, tio.c_cc[VSUSP]);
-#endif
-#ifdef VDSUSP
- TMODE(XTTYMODE_dsusp, tio.c_cc[VDSUSP]);
-#endif
-#ifdef VREPRINT
- TMODE(XTTYMODE_rprnt, tio.c_cc[VREPRINT]);
-#endif
-#ifdef VRPRNT
- TMODE(XTTYMODE_rprnt, tio.c_cc[VRPRNT]);
-#endif
-#ifdef VDISCARD
- TMODE(XTTYMODE_flush, tio.c_cc[VDISCARD]);
-#endif
-#ifdef VFLUSHO
- TMODE(XTTYMODE_flush, tio.c_cc[VFLUSHO]);
-#endif
-#ifdef VWERASE
- TMODE(XTTYMODE_weras, tio.c_cc[VWERASE]);
-#endif
-#ifdef VLNEXT
- TMODE(XTTYMODE_lnext, tio.c_cc[VLNEXT]);
-#endif
-#ifdef VSTART
- TMODE(XTTYMODE_start, tio.c_cc[VSTART]);
-#endif
-#ifdef VSTOP
- TMODE(XTTYMODE_stop, tio.c_cc[VSTOP]);
-#endif
-#ifdef VSTATUS
- TMODE(XTTYMODE_status, tio.c_cc[VSTATUS]);
-#endif
-#ifdef VERASE2
- TMODE(XTTYMODE_erase2, tio.c_cc[VERASE2]);
-#endif
-#ifdef VEOL2
- TMODE(XTTYMODE_eol2, tio.c_cc[VEOL2]);
-#endif
-#ifdef HAS_LTCHARS
- /* both SYSV and BSD have ltchars */
- TMODE(XTTYMODE_susp, ltc.t_suspc);
- TMODE(XTTYMODE_dsusp, ltc.t_dsuspc);
- TMODE(XTTYMODE_rprnt, ltc.t_rprntc);
- TMODE(XTTYMODE_flush, ltc.t_flushc);
- TMODE(XTTYMODE_weras, ltc.t_werasc);
- TMODE(XTTYMODE_lnext, ltc.t_lnextc);
-#endif
- }
-#ifdef HAS_LTCHARS
-#ifdef __hpux
- /* ioctl chokes when the "reserved" process group controls
- * are not set to _POSIX_VDISABLE */
- ltc.t_rprntc = ltc.t_rprntc = ltc.t_flushc =
- ltc.t_werasc = ltc.t_lnextc = _POSIX_VDISABLE;
-#endif /* __hpux */
- if (ioctl(ttyfd, TIOCSLTC, &ltc) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETC);
-#endif /* HAS_LTCHARS */
-#ifdef TIOCLSET
- if (ioctl(ttyfd, TIOCLSET, (char *) &lmode) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCLSET);
-#endif /* TIOCLSET */
- if (ttySetAttr(ttyfd, &tio) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETP);
-
- /* ignore errors here - some platforms don't work */
- tio.c_cflag &= ~CSIZE;
- if (screen->input_eight_bits)
- tio.c_cflag |= CS8;
- else
- tio.c_cflag |= CS7;
- (void) ttySetAttr(ttyfd, &tio);
-
-#else /* !TERMIO_STRUCT */
- sg.sg_flags &= ~(ALLDELAY | XTABS | CBREAK | RAW);
- sg.sg_flags |= ECHO | CRMOD;
- /* make sure speed is set on pty so that editors work right */
- sg.sg_ispeed = VAL_LINE_SPEED;
- sg.sg_ospeed = VAL_LINE_SPEED;
- /* reset t_brkc to default value */
- tc.t_brkc = -1;
-#ifdef LPASS8
- if (screen->input_eight_bits)
- lmode |= LPASS8;
- else
- lmode &= ~(LPASS8);
-#endif
-#ifdef sony
- jmode &= ~KM_KANJI;
-#endif /* sony */
-
- ltc = d_ltc;
-
- if (override_tty_modes) {
- TMODE(XTTYMODE_intr, tc.t_intrc);
- TMODE(XTTYMODE_quit, tc.t_quitc);
- TMODE(XTTYMODE_erase, sg.sg_erase);
- TMODE(XTTYMODE_kill, sg.sg_kill);
- TMODE(XTTYMODE_eof, tc.t_eofc);
- TMODE(XTTYMODE_start, tc.t_startc);
- TMODE(XTTYMODE_stop, tc.t_stopc);
- TMODE(XTTYMODE_brk, tc.t_brkc);
- /* both SYSV and BSD have ltchars */
- TMODE(XTTYMODE_susp, ltc.t_suspc);
- TMODE(XTTYMODE_dsusp, ltc.t_dsuspc);
- TMODE(XTTYMODE_rprnt, ltc.t_rprntc);
- TMODE(XTTYMODE_flush, ltc.t_flushc);
- TMODE(XTTYMODE_weras, ltc.t_werasc);
- TMODE(XTTYMODE_lnext, ltc.t_lnextc);
- }
-
- if (ioctl(ttyfd, TIOCSETP, (char *) &sg) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETP);
- if (ioctl(ttyfd, TIOCSETC, (char *) &tc) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETC);
- if (ioctl(ttyfd, TIOCSETD, (char *) &discipline) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETD);
- if (ioctl(ttyfd, TIOCSLTC, (char *) &ltc) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSLTC);
- if (ioctl(ttyfd, TIOCLSET, (char *) &lmode) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCLSET);
-#ifdef sony
- if (ioctl(ttyfd, TIOCKSET, (char *) &jmode) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCKSET);
- if (ioctl(ttyfd, TIOCKSETC, (char *) &jtc) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCKSETC);
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
- if (Console) {
-#ifdef TIOCCONS
- int on = 1;
- if (ioctl(ttyfd, TIOCCONS, (char *) &on) == -1)
- fprintf(stderr, "%s: cannot open console: %s\n",
- xterm_name, strerror(errno));
-#endif
-#ifdef SRIOCSREDIR
- int fd = open("/dev/console", O_RDWR);
- if (fd == -1 || ioctl(fd, SRIOCSREDIR, ttyfd) == -1)
- fprintf(stderr, "%s: cannot open console: %s\n",
- xterm_name, strerror(errno));
- (void) close(fd);
-#endif
- }
-#endif /* TIOCCONS */
- }
-
- signal(SIGCHLD, SIG_DFL);
-#ifdef USE_SYSV_SIGHUP
- /* watch out for extra shells (I don't understand either) */
- signal(SIGHUP, SIG_DFL);
-#else
- signal(SIGHUP, SIG_IGN);
-#endif
- /* restore various signals to their defaults */
- signal(SIGINT, SIG_DFL);
- signal(SIGQUIT, SIG_DFL);
- signal(SIGTERM, SIG_DFL);
-
- /*
- * If we're not asked to make the parent process set the
- * terminal's erase mode, and if we had no ttyModes resource,
- * then set the terminal's erase mode from our best guess.
- */
-#if OPT_INITIAL_ERASE
- TRACE(("check if we should set erase to %d:%s\n\tptyInitialErase:%d,\n\toveride_tty_modes:%d,\n\tXTTYMODE_erase:%d\n",
- initial_erase,
- (!resource.ptyInitialErase
- && !override_tty_modes
- && !ttymodelist[XTTYMODE_erase].set)
- ? "YES" : "NO",
- resource.ptyInitialErase,
- override_tty_modes,
- ttymodelist[XTTYMODE_erase].set));
- if (!resource.ptyInitialErase
- && !override_tty_modes
- && !ttymodelist[XTTYMODE_erase].set) {
-#if OPT_TRACE
- int old_erase;
-#endif
-#ifdef TERMIO_STRUCT
- if (ttyGetAttr(ttyfd, &tio) == -1)
- tio = d_tio;
-#if OPT_TRACE
- old_erase = tio.c_cc[VERASE];
-#endif
- tio.c_cc[VERASE] = initial_erase;
- rc = ttySetAttr(ttyfd, &tio);
-#else /* !TERMIO_STRUCT */
- if (ioctl(ttyfd, TIOCGETP, (char *) &sg) == -1)
- sg = d_sg;
-#if OPT_TRACE
- old_erase = sg.sg_erase;
-#endif
- sg.sg_erase = initial_erase;
- rc = ioctl(ttyfd, TIOCSETP, (char *) &sg);
-#endif /* TERMIO_STRUCT */
- TRACE(("%s setting erase to %d (was %d)\n",
- rc ? "FAIL" : "OK", initial_erase, old_erase));
- }
-#endif
-
- /* copy the environment before Setenv'ing */
- for (i = 0; environ[i] != NULL; i++) ;
- /* compute number of xtermSetenv() calls below */
- envsize = 1; /* (NULL terminating entry) */
- envsize += 5; /* TERM, WINDOWID, DISPLAY, _SHELL, _VERSION */
-#ifdef HAVE_UTMP
- envsize += 1; /* LOGNAME */
-#endif /* HAVE_UTMP */
-#ifdef USE_SYSV_ENVVARS
- envsize += 2; /* COLUMNS, LINES */
-#ifdef HAVE_UTMP
- envsize += 2; /* HOME, SHELL */
-#endif /* HAVE_UTMP */
-#ifdef OWN_TERMINFO_DIR
- envsize += 1; /* TERMINFO */
-#endif
-#else /* USE_SYSV_ENVVARS */
- envsize += 1; /* TERMCAP */
-#endif /* USE_SYSV_ENVVARS */
- envnew = TypeCallocN(char *, (unsigned) i + envsize);
- memmove((char *) envnew, (char *) environ, i * sizeof(char *));
- environ = envnew;
- xtermSetenv("TERM=", TermName);
- if (!TermName)
- *newtc = 0;
-
- sprintf(buf, "%lu",
- ((unsigned long) XtWindow(SHELL_OF(CURRENT_EMU(screen)))));
- xtermSetenv("WINDOWID=", buf);
-
- /* put the display into the environment of the shell */
- xtermSetenv("DISPLAY=", XDisplayString(screen->display));
-
- xtermSetenv("XTERM_VERSION=", xtermVersion());
-
- signal(SIGTERM, SIG_DFL);
-
- /* this is the time to go and set up stdin, out, and err
- */
- {
-#if defined(CRAY) && (OSMAJORVERSION >= 6)
- close_fd(ttyfd);
-
- (void) close(0);
-
- if (open("/dev/tty", O_RDWR)) {
- SysError(ERROR_OPDEVTTY);
- }
- (void) close(1);
- (void) close(2);
- dup(0);
- dup(0);
-#else
- /* dup the tty */
- for (i = 0; i <= 2; i++)
- if (i != ttyfd) {
- (void) close(i);
- (void) dup(ttyfd);
- }
-#ifndef ATT
- /* and close the tty */
- if (ttyfd > 2)
- close_fd(ttyfd);
-#endif
-#endif /* CRAY */
- }
-
-#if !defined(USE_SYSV_PGRP)
-#ifdef TIOCSCTTY
- setsid();
- ioctl(0, TIOCSCTTY, 0);
-#endif
- ioctl(0, TIOCSPGRP, (char *) &pgrp);
- setpgrp(0, 0);
- close(open(ttydev, O_WRONLY));
- setpgrp(0, pgrp);
-#if defined(__QNX__)
- tcsetpgrp(0, pgrp /*setsid() */ );
-#endif
-#endif /* !USE_SYSV_PGRP */
-
-#ifdef Lynx
- {
- TERMIO_STRUCT t;
- if (ttyGetAttr(0, &t) >= 0) {
- /* this gets lost somewhere on our way... */
- t.c_oflag |= OPOST;
- ttySetAttr(0, &t);
- }
- }
-#endif
-
-#ifdef HAVE_UTMP
- pw = getpwuid(screen->uid);
- login_name = NULL;
- if (pw && pw->pw_name) {
-#ifdef HAVE_GETLOGIN
- /*
- * If the value from getlogin() differs from the value we
- * get by looking in the password file, check if it does
- * correspond to the same uid. If so, allow that as an
- * alias for the uid.
- *
- * Of course getlogin() will fail if we're started from
- * a window-manager, since there's no controlling terminal
- * to fuss with. In that case, try to get something useful
- * from the user's $LOGNAME or $USER environment variables.
- */
- if (((login_name = getlogin()) != NULL
- || (login_name = getenv("LOGNAME")) != NULL
- || (login_name = getenv("USER")) != NULL)
- && strcmp(login_name, pw->pw_name)) {
- struct passwd *pw2 = getpwnam(login_name);
- if (pw2 != 0) {
- uid_t uid2 = pw2->pw_uid;
- pw = getpwuid(screen->uid);
- if ((uid_t) pw->pw_uid != uid2)
- login_name = NULL;
- } else {
- pw = getpwuid(screen->uid);
- }
- }
-#endif
- if (login_name == NULL)
- login_name = pw->pw_name;
- if (login_name != NULL)
- login_name = x_strdup(login_name);
- }
- if (login_name != NULL) {
- xtermSetenv("LOGNAME=", login_name); /* for POSIX */
- }
-#ifndef USE_UTEMPTER
-#ifdef USE_SYSV_UTMP
- /* Set up our utmp entry now. We need to do it here
- * for the following reasons:
- * - It needs to have our correct process id (for
- * login).
- * - If our parent was to set it after the fork(),
- * it might make it out before we need it.
- * - We need to do it before we go and change our
- * user and group id's.
- */
- (void) call_setutent();
- init_utmp(DEAD_PROCESS, &utmp);
-
- /* position to entry in utmp file */
- /* Test return value: beware of entries left behind: PSz 9 Mar 00 */
- if (!(utret = find_utmp(&utmp))) {
- (void) call_setutent();
- init_utmp(USER_PROCESS, &utmp);
- if (!(utret = find_utmp(&utmp))) {
- (void) call_setutent();
- }
- }
-#if OPT_TRACE
- if (!utret)
- TRACE(("getutid: NULL\n"));
- else
- TRACE(("getutid: pid=%d type=%d user=%s line=%s id=%s\n",
- utret->ut_pid, utret->ut_type, utret->ut_user,
- utret->ut_line, utret->ut_id));
-#endif
-
- /* set up the new entry */
- utmp.ut_type = USER_PROCESS;
-#ifdef HAVE_UTMP_UT_XSTATUS
- utmp.ut_xstatus = 2;
-#endif
- (void) strncpy(utmp.ut_user,
- (login_name != NULL) ? login_name : "????",
- sizeof(utmp.ut_user));
- /* why are we copying this string again? (see above) */
- (void) strncpy(utmp.ut_id, my_utmp_id(ttydev), sizeof(utmp.ut_id));
- (void) strncpy(utmp.ut_line,
- my_pty_name(ttydev), sizeof(utmp.ut_line));
-
-#ifdef HAVE_UTMP_UT_HOST
- SetUtmpHost(utmp.ut_host, screen);
-#endif
- (void) strncpy(utmp.ut_name,
- (login_name) ? login_name : "????",
- sizeof(utmp.ut_name));
-
- utmp.ut_pid = getpid();
-#if defined(HAVE_UTMP_UT_XTIME)
-#if defined(HAVE_UTMP_UT_SESSION)
- utmp.ut_session = getsid(0);
-#endif
- utmp.ut_xtime = time((time_t *) 0);
- utmp.ut_tv.tv_usec = 0;
-#else
- utmp.ut_time = time((time_t *) 0);
-#endif
-
- /* write out the entry */
- if (!resource.utmpInhibit) {
- errno = 0;
- call_pututline(&utmp);
- TRACE(("pututline: id %s, line %s, pid %ld, errno %d %s\n",
- utmp.ut_id,
- utmp.ut_line,
- (long) utmp.ut_pid,
- errno, (errno != 0) ? strerror(errno) : ""));
- }
-#ifdef WTMP
-#if defined(WTMPX_FILE) && (defined(SVR4) || defined(__SCO__))
- if (term->misc.login_shell)
- updwtmpx(WTMPX_FILE, &utmp);
-#elif defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0))
- if (term->misc.login_shell)
- call_updwtmp(etc_wtmp, &utmp);
-#else
- if (term->misc.login_shell &&
- (i = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- write(i, (char *) &utmp, sizeof(utmp));
- close(i);
- }
-#endif
-#endif
- /* close the file */
- (void) call_endutent();
-
-#else /* USE_SYSV_UTMP */
- /* We can now get our ttyslot! We can also set the initial
- * utmp entry.
- */
- tslot = ttyslot();
- added_utmp_entry = False;
- {
- if (tslot > 0 && pw && !resource.utmpInhibit &&
- (i = open(etc_utmp, O_WRONLY)) >= 0) {
- bzero((char *) &utmp, sizeof(utmp));
- (void) strncpy(utmp.ut_line,
- my_pty_name(ttydev),
- sizeof(utmp.ut_line));
- (void) strncpy(utmp.ut_name, login_name,
- sizeof(utmp.ut_name));
-#ifdef HAVE_UTMP_UT_HOST
- SetUtmpHost(utmp.ut_host, screen);
-#endif
- /* cast needed on Ultrix 4.4 */
- time((time_t *) & utmp.ut_time);
- lseek(i, (long) (tslot * sizeof(utmp)), 0);
- write(i, (char *) &utmp, sizeof(utmp));
- close(i);
- added_utmp_entry = True;
-#if defined(WTMP)
- if (term->misc.login_shell &&
- (i = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- int status;
- status = write(i, (char *) &utmp, sizeof(utmp));
- status = close(i);
- }
-#elif defined(MNX_LASTLOG)
- if (term->misc.login_shell &&
- (i = open(_U_LASTLOG, O_WRONLY)) >= 0) {
- lseek(i, (long) (screen->uid *
- sizeof(utmp)), 0);
- write(i, (char *) &utmp, sizeof(utmp));
- close(i);
- }
-#endif /* WTMP or MNX_LASTLOG */
- } else
- tslot = -tslot;
- }
-
- /* Let's pass our ttyslot to our parent so that it can
- * clean up after us.
- */
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake) {
- handshake.tty_slot = tslot;
- }
-#endif /* OPT_PTY_HANDSHAKE */
-#endif /* USE_SYSV_UTMP */
-
-#ifdef USE_LASTLOGX
- if (term->misc.login_shell) {
- bzero((char *) &lastlog, sizeof(lastlog));
- (void) strncpy(lastlog.ll_line,
- my_pty_name(ttydev),
- sizeof(lastlog.ll_line));
- X_GETTIMEOFDAY(&lastlog.ll_tv);
- SetUtmpHost(lastlog.ll_host, screen);
- updlastlogx(_PATH_LASTLOGX, screen->uid, &lastlog);
- }
-#endif
-
-#ifdef USE_LASTLOG
- if (term->misc.login_shell &&
- (i = open(etc_lastlog, O_WRONLY)) >= 0) {
- bzero((char *) &lastlog, sizeof(struct lastlog));
- (void) strncpy(lastlog.ll_line,
- my_pty_name(ttydev),
- sizeof(lastlog.ll_line));
- SetUtmpHost(lastlog.ll_host, screen);
- time(&lastlog.ll_time);
- lseek(i, (long) (screen->uid * sizeof(struct lastlog)), 0);
- write(i, (char *) &lastlog, sizeof(struct lastlog));
- close(i);
- }
-#endif /* USE_LASTLOG */
-
-#if defined(USE_UTMP_SETGID)
- /* Switch to real gid after writing utmp entry */
- utmpGid = getegid();
- if (getgid() != getegid()) {
- utmpGid = getegid();
- setegid(getgid());
- TRACE(("switch to real gid %d after writing utmp\n", getgid()));
- }
-#endif
-
-#if OPT_PTY_HANDSHAKE
- /* Let our parent know that we set up our utmp entry
- * so that it can clean up after us.
- */
- if (resource.ptyHandshake) {
- handshake.status = UTMP_ADDED;
- handshake.error = 0;
- strcpy(handshake.buffer, ttydev);
- (void) write(cp_pipe[1], (char *) &handshake, sizeof(handshake));
- }
-#endif /* OPT_PTY_HANDSHAKE */
-#endif /* USE_UTEMPTER */
-#endif /* HAVE_UTMP */
-
- (void) setgid(screen->gid);
-#ifdef HAS_BSD_GROUPS
- if (geteuid() == 0 && pw) {
- if (initgroups(login_name, pw->pw_gid)) {
- perror("initgroups failed");
- SysError(ERROR_INIGROUPS);
- }
- }
-#endif
- if (setuid(screen->uid)) {
- SysError(ERROR_SETUID);
- }
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake) {
- /* mark the pipes as close on exec */
- fcntl(cp_pipe[1], F_SETFD, 1);
- fcntl(pc_pipe[0], F_SETFD, 1);
-
- /* We are at the point where we are going to
- * exec our shell (or whatever). Let our parent
- * know we arrived safely.
- */
- handshake.status = PTY_GOOD;
- handshake.error = 0;
- (void) strcpy(handshake.buffer, ttydev);
- (void) write(cp_pipe[1], (char *) &handshake, sizeof(handshake));
-
- if (waiting_for_initial_map) {
- i = read(pc_pipe[0], (char *) &handshake,
- sizeof(handshake));
- if (i != sizeof(handshake) ||
- handshake.status != PTY_EXEC) {
- /* some very bad problem occurred */
- exit(ERROR_PTY_EXEC);
- }
- if (handshake.rows > 0 && handshake.cols > 0) {
- set_max_row(screen, handshake.rows);
- set_max_col(screen, handshake.cols);
-#ifdef TTYSIZE_STRUCT
- TTYSIZE_ROWS(ts) = MaxRows(screen);
- TTYSIZE_COLS(ts) = MaxCols(screen);
-#if defined(USE_STRUCT_WINSIZE)
- ts.ws_xpixel = FullWidth(screen);
- ts.ws_ypixel = FullHeight(screen);
-#endif
-#endif /* TTYSIZE_STRUCT */
- }
- }
- }
-#endif /* OPT_PTY_HANDSHAKE */
-
-#ifdef USE_SYSV_ENVVARS
- {
- char numbuf[12];
- sprintf(numbuf, "%d", MaxCols(screen));
- xtermSetenv("COLUMNS=", numbuf);
- sprintf(numbuf, "%d", MaxRows(screen));
- xtermSetenv("LINES=", numbuf);
- }
-#ifdef HAVE_UTMP
- if (pw) { /* SVR4 doesn't provide these */
- if (!getenv("HOME"))
- xtermSetenv("HOME=", pw->pw_dir);
- if (!getenv("SHELL"))
- xtermSetenv("SHELL=", pw->pw_shell);
- }
-#endif /* HAVE_UTMP */
-#ifdef OWN_TERMINFO_DIR
- xtermSetenv("TERMINFO=", OWN_TERMINFO_DIR);
-#endif
-#else /* USE_SYSV_ENVVARS */
- if (!TEK4014_ACTIVE(screen) && *newtc) {
- strcpy(termcap, newtc);
- resize(screen, termcap, newtc);
- }
- if (term->misc.titeInhibit && !term->misc.tiXtraScroll) {
- remove_termcap_entry(newtc, "ti=");
- remove_termcap_entry(newtc, "te=");
- }
- /*
- * work around broken termcap entries */
- if (resource.useInsertMode) {
- remove_termcap_entry(newtc, "ic=");
- /* don't get duplicates */
- remove_termcap_entry(newtc, "im=");
- remove_termcap_entry(newtc, "ei=");
- remove_termcap_entry(newtc, "mi");
- if (*newtc)
- strcat(newtc, ":im=\\E[4h:ei=\\E[4l:mi:");
- }
- if (*newtc) {
-#if OPT_INITIAL_ERASE
- unsigned len;
- remove_termcap_entry(newtc, TERMCAP_ERASE "=");
- len = strlen(newtc);
- if (len != 0 && newtc[len - 1] == ':')
- len--;
- sprintf(newtc + len, ":%s=\\%03o:",
- TERMCAP_ERASE,
- CharOf(initial_erase));
-#endif
- xtermSetenv("TERMCAP=", newtc);
- }
-#endif /* USE_SYSV_ENVVARS */
-
- /* need to reset after all the ioctl bashing we did above */
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake) {
-#ifdef TTYSIZE_STRUCT
- i = SET_TTYSIZE(0, ts);
- TRACE(("spawn SET_TTYSIZE %dx%d return %d\n",
- TTYSIZE_ROWS(ts),
- TTYSIZE_COLS(ts), i));
-#endif /* TTYSIZE_STRUCT */
- }
-#endif /* OPT_PTY_HANDSHAKE */
- signal(SIGHUP, SIG_DFL);
-
- if ((ptr = explicit_shname) == NULL) {
- if (((ptr = getenv("SHELL")) == NULL || *ptr == 0) &&
- ((pw == NULL && (pw = getpwuid(screen->uid)) == NULL) ||
- *(ptr = pw->pw_shell) == 0)) {
- ptr = "/bin/sh";
- }
- } else {
- xtermSetenv("SHELL=", explicit_shname);
- }
- xtermSetenv("XTERM_SHELL=", ptr);
-
- shname = x_basename(ptr);
- TRACE(("shell path '%s' leaf '%s'\n", ptr, shname));
-
-#if OPT_LUIT_PROG
- /*
- * Use two copies of command_to_exec, in case luit is not actually
- * there, or refuses to run. In that case we will fall-through to
- * to command that the user gave anyway.
- */
- if (command_to_exec_with_luit) {
- xtermSetenv("XTERM_SHELL=",
- xtermFindShell(*command_to_exec_with_luit, False));
- TRACE(("spawning command \"%s\"\n", *command_to_exec_with_luit));
- execvp(*command_to_exec_with_luit, command_to_exec_with_luit);
- /* print error message on screen */
- fprintf(stderr, "%s: Can't execvp %s: %s\n",
- xterm_name, *command_to_exec_with_luit, strerror(errno));
- fprintf(stderr, "%s: cannot support your locale.\n",
- xterm_name);
- }
-#endif
- if (command_to_exec) {
- xtermSetenv("XTERM_SHELL=",
- xtermFindShell(*command_to_exec, False));
- TRACE(("spawning command \"%s\"\n", *command_to_exec));
- execvp(*command_to_exec, command_to_exec);
- if (command_to_exec[1] == 0)
- execlp(ptr, shname, "-c", command_to_exec[0], (void *) 0);
- /* print error message on screen */
- fprintf(stderr, "%s: Can't execvp %s: %s\n",
- xterm_name, *command_to_exec, strerror(errno));
- }
-#ifdef USE_SYSV_SIGHUP
- /* fix pts sh hanging around */
- signal(SIGHUP, SIG_DFL);
-#endif
-
- shname_minus = CastMallocN(char, strlen(shname) + 2);
- (void) strcpy(shname_minus, "-");
- (void) strcat(shname_minus, shname);
-#ifndef TERMIO_STRUCT
- ldisc = XStrCmp("csh", shname + strlen(shname) - 3) == 0 ?
- NTTYDISC : 0;
- ioctl(0, TIOCSETD, (char *) &ldisc);
-#endif /* !TERMIO_STRUCT */
-
-#ifdef USE_LOGIN_DASH_P
- if (term->misc.login_shell && pw && added_utmp_entry)
- execl(bin_login, "login", "-p", "-f", login_name, (void *) 0);
-#endif
- execlp(ptr,
- (term->misc.login_shell ? shname_minus : shname),
- (void *) 0);
-
- /* Exec failed. */
- fprintf(stderr, "%s: Could not exec %s: %s\n", xterm_name,
- ptr, strerror(errno));
- (void) sleep(5);
- exit(ERROR_EXEC);
- }
- /* end if in child after fork */
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake) {
- /* Parent process. Let's handle handshaked requests to our
- * child process.
- */
-
- /* close childs's sides of the pipes */
- close(cp_pipe[1]);
- close(pc_pipe[0]);
-
- for (done = 0; !done;) {
- if (read(cp_pipe[0],
- (char *) &handshake,
- sizeof(handshake)) <= 0) {
- /* Our child is done talking to us. If it terminated
- * due to an error, we will catch the death of child
- * and clean up.
- */
- break;
- }
-
- switch (handshake.status) {
- case PTY_GOOD:
- /* Success! Let's free up resources and
- * continue.
- */
- done = 1;
- break;
-
- case PTY_BAD:
- /* The open of the pty failed! Let's get
- * another one.
- */
- (void) close(screen->respond);
- if (get_pty(&screen->respond, XDisplayString(screen->display))) {
- /* no more ptys! */
- fprintf(stderr,
- "%s: child process can find no available ptys: %s\n",
- xterm_name, strerror(errno));
- handshake.status = PTY_NOMORE;
- write(pc_pipe[1], (char *) &handshake, sizeof(handshake));
- exit(ERROR_PTYS);
- }
- handshake.status = PTY_NEW;
- (void) strcpy(handshake.buffer, ttydev);
- write(pc_pipe[1], (char *) &handshake, sizeof(handshake));
- break;
-
- case PTY_FATALERROR:
- errno = handshake.error;
- close(cp_pipe[0]);
- close(pc_pipe[1]);
- SysError(handshake.fatal_error);
- /*NOTREACHED */
-
- case UTMP_ADDED:
- /* The utmp entry was set by our slave. Remember
- * this so that we can reset it later.
- */
- added_utmp_entry = True;
-#ifndef USE_SYSV_UTMP
- tslot = handshake.tty_slot;
-#endif /* USE_SYSV_UTMP */
- free(ttydev);
- ttydev = x_strdup(handshake.buffer);
- break;
- default:
- fprintf(stderr, "%s: unexpected handshake status %d\n",
- xterm_name,
- (int) handshake.status);
- }
- }
- /* close our sides of the pipes */
- if (!waiting_for_initial_map) {
- close(cp_pipe[0]);
- close(pc_pipe[1]);
- }
- }
-#endif /* OPT_PTY_HANDSHAKE */
- }
-
- /* end if no slave */
- /*
- * still in parent (xterm process)
- */
-#ifdef USE_SYSV_SIGHUP
- /* hung sh problem? */
- signal(SIGHUP, SIG_DFL);
-#else
- signal(SIGHUP, SIG_IGN);
-#endif
-
-/*
- * Unfortunately, System V seems to have trouble divorcing the child process
- * from the process group of xterm. This is a problem because hitting the
- * INTR or QUIT characters on the keyboard will cause xterm to go away if we
- * don't ignore the signals. This is annoying.
- */
-
-#if defined(USE_SYSV_SIGNALS) && !defined(SIGTSTP)
- signal(SIGINT, SIG_IGN);
-
-#ifndef SYSV
- /* hung shell problem */
- signal(SIGQUIT, SIG_IGN);
-#endif
- signal(SIGTERM, SIG_IGN);
-#elif defined(SYSV) || defined(__osf__)
- /* if we were spawned by a jobcontrol smart shell (like ksh or csh),
- * then our pgrp and pid will be the same. If we were spawned by
- * a jobcontrol dumb shell (like /bin/sh), then we will be in our
- * parent's pgrp, and we must ignore keyboard signals, or we will
- * tank on everything.
- */
- if (getpid() == getpgrp()) {
- (void) signal(SIGINT, Exit);
- (void) signal(SIGQUIT, Exit);
- (void) signal(SIGTERM, Exit);
- } else {
- (void) signal(SIGINT, SIG_IGN);
- (void) signal(SIGQUIT, SIG_IGN);
- (void) signal(SIGTERM, SIG_IGN);
- }
- (void) signal(SIGPIPE, Exit);
-#else /* SYSV */
- signal(SIGINT, Exit);
- signal(SIGQUIT, Exit);
- signal(SIGTERM, Exit);
- signal(SIGPIPE, Exit);
-#endif /* USE_SYSV_SIGNALS and not SIGTSTP */
-
- return 0;
-} /* end spawn */
-
-SIGNAL_T
-Exit(int n)
-{
- TScreen *screen = &term->screen;
-
-#ifdef USE_UTEMPTER
- if (!resource.utmpInhibit && added_utmp_entry)
- removeFromUtmp();
-#elif defined(HAVE_UTMP)
-#ifdef USE_SYSV_UTMP
- struct UTMP_STR utmp;
- struct UTMP_STR *utptr;
-
- /* don't do this more than once */
- if (xterm_exiting)
- SIGNAL_RETURN;
- xterm_exiting = True;
-
-#ifdef PUCC_PTYD
- closepty(ttydev, ptydev, (resource.utmpInhibit ? OPTY_NOP : OPTY_LOGIN), screen->respond);
-#endif /* PUCC_PTYD */
-
- /* cleanup the utmp entry we forged earlier */
- if (!resource.utmpInhibit
-#if OPT_PTY_HANDSHAKE /* without handshake, no way to know */
- && (resource.ptyHandshake && added_utmp_entry)
-#endif /* OPT_PTY_HANDSHAKE */
- ) {
-#if defined(USE_UTMP_SETGID)
- if (utmpGid != -1) {
- /* Switch back to group utmp */
- setegid(utmpGid);
- TRACE(("switched back to group %d (check: %d)\n",
- utmpGid, (int) getgid()));
- }
-#endif
- init_utmp(USER_PROCESS, &utmp);
- (void) call_setutent();
-
- /*
- * We could use getutline() if we didn't support old systems.
- */
- while ((utptr = find_utmp(&utmp)) != 0) {
- if (utptr->ut_pid == screen->pid) {
- utptr->ut_type = DEAD_PROCESS;
-#if defined(HAVE_UTMP_UT_XTIME)
-#if defined(HAVE_UTMP_UT_SESSION)
- utptr->ut_session = getsid(0);
-#endif
- utptr->ut_xtime = time((time_t *) 0);
- utptr->ut_tv.tv_usec = 0;
-#else
- *utptr->ut_user = 0;
- utptr->ut_time = time((time_t *) 0);
-#endif
- (void) call_pututline(utptr);
-#ifdef WTMP
-#if defined(WTMPX_FILE) && (defined(SVR4) || defined(__SCO__))
- if (term->misc.login_shell)
- updwtmpx(WTMPX_FILE, utptr);
-#elif defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0))
- strncpy(utmp.ut_line, utptr->ut_line, sizeof(utmp.ut_line));
- if (term->misc.login_shell)
- call_updwtmp(etc_wtmp, utptr);
-#else
- /* set wtmp entry if wtmp file exists */
- if (term->misc.login_shell) {
- int fd;
- if ((fd = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- write(fd, utptr, sizeof(*utptr));
- close(fd);
- }
- }
-#endif
-#endif
- break;
- }
- memset(utptr, 0, sizeof(*utptr)); /* keep searching */
- }
- (void) call_endutent();
- }
-#else /* not USE_SYSV_UTMP */
- int wfd;
- struct utmp utmp;
-
- if (!resource.utmpInhibit && added_utmp_entry &&
- (am_slave < 0 && tslot > 0 && (wfd = open(etc_utmp, O_WRONLY)) >= 0)) {
- bzero((char *) &utmp, sizeof(utmp));
- lseek(wfd, (long) (tslot * sizeof(utmp)), 0);
- write(wfd, (char *) &utmp, sizeof(utmp));
- close(wfd);
-#ifdef WTMP
- if (term->misc.login_shell &&
- (wfd = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- (void) strncpy(utmp.ut_line,
- my_pty_name(ttydev),
- sizeof(utmp.ut_line));
- time(&utmp.ut_time);
- write(wfd, (char *) &utmp, sizeof(utmp));
- close(wfd);
- }
-#endif /* WTMP */
- }
-#endif /* USE_SYSV_UTMP */
-#endif /* HAVE_UTMP */
- close(screen->respond); /* close explicitly to avoid race with slave side */
-#ifdef ALLOWLOGGING
- if (screen->logging)
- CloseLog(screen);
-#endif
-
- if (am_slave < 0) {
- /* restore ownership of tty and pty */
- set_owner(ttydev, 0, 0, 0666U);
-#if (defined(USE_PTY_DEVICE) && !defined(__sgi) && !defined(__hpux))
- set_owner(ptydev, 0, 0, 0666U);
-#endif
- }
-#if OPT_TRACE || defined(NO_LEAKS)
- if (n == 0) {
- TRACE(("Freeing memory leaks\n"));
- if (term != 0) {
- Display *dpy = term->screen.display;
-
- if (term->screen.sbuf_address) {
- free(term->screen.sbuf_address);
- TRACE(("freed screen.sbuf_address\n"));
- }
- if (term->screen.allbuf) {
- free(term->screen.allbuf);
- TRACE(("freed screen.allbuf\n"));
- }
- if (term->screen.xim) {
- XCloseIM(term->screen.xim);
- TRACE(("freed screen.xim\n"));
- }
- if (toplevel) {
- XtDestroyWidget(toplevel);
- TRACE(("destroyed top-level widget\n"));
- }
- XtCloseDisplay(dpy);
- TRACE(("closed display\n"));
- }
- TRACE((0));
- }
-#endif
-
- exit(n);
- SIGNAL_RETURN;
-}
-
-/* ARGSUSED */
-static void
-resize(TScreen * screen, char *oldtc, char *newtc)
-{
-#ifndef USE_SYSV_ENVVARS
- char *ptr1, *ptr2;
- size_t i;
- int li_first = 0;
- char *temp;
-
- TRACE(("resize %s\n", oldtc));
- if ((ptr1 = x_strindex(oldtc, "co#")) == NULL) {
- strcat(oldtc, "co#80:");
- ptr1 = x_strindex(oldtc, "co#");
- }
- if ((ptr2 = x_strindex(oldtc, "li#")) == NULL) {
- strcat(oldtc, "li#24:");
- ptr2 = x_strindex(oldtc, "li#");
- }
- if (ptr1 > ptr2) {
- li_first++;
- temp = ptr1;
- ptr1 = ptr2;
- ptr2 = temp;
- }
- ptr1 += 3;
- ptr2 += 3;
- strncpy(newtc, oldtc, i = ptr1 - oldtc);
- temp = newtc + i;
- sprintf(temp, "%d", (li_first
- ? MaxRows(screen)
- : MaxCols(screen)));
- temp += strlen(temp);
- ptr1 = strchr(ptr1, ':');
- strncpy(temp, ptr1, i = ptr2 - ptr1);
- temp += i;
- sprintf(temp, "%d", (li_first
- ? MaxCols(screen)
- : MaxRows(screen)));
- ptr2 = strchr(ptr2, ':');
- strcat(temp, ptr2);
- TRACE((" ==> %s\n", newtc));
-#endif /* USE_SYSV_ENVVARS */
-}
-
-#endif /* ! VMS */
-
-/*
- * Does a non-blocking wait for a child process. If the system
- * doesn't support non-blocking wait, do nothing.
- * Returns the pid of the child, or 0 or -1 if none or error.
- */
-int
-nonblocking_wait(void)
-{
-#ifdef USE_POSIX_WAIT
- pid_t pid;
-
- pid = waitpid(-1, NULL, WNOHANG);
-#elif defined(USE_SYSV_SIGNALS) && (defined(CRAY) || !defined(SIGTSTP))
- /* cannot do non-blocking wait */
- int pid = 0;
-#else /* defined(USE_SYSV_SIGNALS) && (defined(CRAY) || !defined(SIGTSTP)) */
-#if defined(Lynx)
- int status;
-#else
- union wait status;
-#endif
- int pid;
-
- pid = wait3(&status, WNOHANG, (struct rusage *) NULL);
-#endif /* USE_POSIX_WAIT else */
- return pid;
-}
-
-#ifndef VMS
-
-/* ARGSUSED */
-static SIGNAL_T
-reapchild(int n GCC_UNUSED)
-{
- int olderrno = errno;
- int pid;
-
- pid = wait(NULL);
-
-#ifdef USE_SYSV_SIGNALS
- /* cannot re-enable signal before waiting for child
- * because then SVR4 loops. Sigh. HP-UX 9.01 too.
- */
- (void) signal(SIGCHLD, reapchild);
-#endif
-
- do {
- if (pid == term->screen.pid) {
-#ifdef DEBUG
- if (debug)
- fputs("Exiting\n", stderr);
-#endif
- if (!hold_screen)
- need_cleanup = TRUE;
- }
- } while ((pid = nonblocking_wait()) > 0);
-
- errno = olderrno;
- SIGNAL_RETURN;
-}
-#endif /* !VMS */
-
-static void
-remove_termcap_entry(char *buf, char *str)
-{
- char *base = buf;
- char *first = base;
- int count = 0;
- size_t len = strlen(str);
-
- TRACE(("*** remove_termcap_entry('%s', '%s')\n", str, buf));
-
- while (*buf != 0) {
- if (!count && !strncmp(buf, str, len)) {
- while (*buf != 0) {
- if (*buf == '\\')
- buf++;
- else if (*buf == ':')
- break;
- if (*buf != 0)
- buf++;
- }
- while ((*first++ = *buf++) != 0) ;
- TRACE(("...removed_termcap_entry('%s', '%s')\n", str, base));
- return;
- } else if (*buf == '\\') {
- buf++;
- } else if (*buf == ':') {
- first = buf;
- count = 0;
- } else if (!isspace(CharOf(*buf))) {
- count++;
- }
- if (*buf != 0)
- buf++;
- }
- TRACE(("...cannot remove\n"));
-}
-
-/*
- * parse_tty_modes accepts lines of the following form:
- *
- * [SETTING] ...
- *
- * where setting consists of the words in the modelist followed by a character
- * or ^char.
- */
-static int
-parse_tty_modes(char *s, struct _xttymodes *modelist)
-{
- struct _xttymodes *mp;
- int c;
- int count = 0;
-
- TRACE(("parse_tty_modes\n"));
- while (1) {
- size_t len;
-
- while (*s && isascii(CharOf(*s)) && isspace(CharOf(*s)))
- s++;
- if (!*s)
- return count;
-
- for (len = 0; isalnum(CharOf(s[len])); ++len) ;
- for (mp = modelist; mp->name; mp++) {
- if (len == mp->len
- && strncmp(s, mp->name, mp->len) == 0)
- break;
- }
- if (!mp->name)
- return -1;
-
- s += mp->len;
- while (*s && isascii(CharOf(*s)) && isspace(CharOf(*s)))
- s++;
- if (!*s)
- return -1;
-
- if ((c = decode_keyvalue(&s, False)) != -1) {
- mp->value = c;
- mp->set = 1;
- count++;
- TRACE(("...parsed #%d: %s=%#x\n", count, mp->name, c));
- }
- }
-}
-
-#ifndef VMS /* don't use pipes on OpenVMS */
-int
-GetBytesAvailable(int fd)
-{
-#if defined(FIONREAD)
- int arg;
- ioctl(fd, FIONREAD, (char *) &arg);
- return (int) arg;
-#elif defined(__CYGWIN__)
- fd_set set;
- struct timeval timeout =
- {0, 0};
-
- FD_ZERO(&set);
- FD_SET(fd, &set);
- if (Select(fd + 1, &set, NULL, NULL, &timeout) > 0)
- return 1;
- else
- return 0;
-#elif defined(FIORDCK)
- return (ioctl(fd, FIORDCHK, NULL));
-#else /* !FIORDCK */
- struct pollfd pollfds[1];
-
- pollfds[0].fd = fd;
- pollfds[0].events = POLLIN;
- return poll(pollfds, 1, 0);
-#endif
-}
-#endif /* !VMS */
-
-/* Utility function to try to hide system differences from
- everybody who used to call killpg() */
-
-int
-kill_process_group(int pid, int sig)
-{
- TRACE(("kill_process_group(pid=%d, sig=%d)\n", pid, sig));
-#if defined(SVR4) || defined(SYSV) || !defined(X_NOT_POSIX)
- return kill(-pid, sig);
-#else
- return killpg(pid, sig);
-#endif
-}
-
-#if OPT_EBCDIC
-int
-A2E(int x)
-{
- char c;
- c = x;
- __atoe_l(&c, 1);
- return c;
-}
-
-int
-E2A(int x)
-{
- char c;
- c = x;
- __etoa_l(&c, 1);
- return c;
-}
-#endif
-
-#if defined(__QNX__) && !defined(__QNXNTO__)
-#include <sys/types.h>
-#include <sys/proc_msg.h>
-#include <sys/kernel.h>
-#include <string.h>
-#include <errno.h>
-
-struct _proc_session ps;
-struct _proc_session_reply rps;
-
-int
-qsetlogin(char *login, char *ttyname)
-{
- int v = getsid(getpid());
-
- memset(&ps, 0, sizeof(ps));
- memset(&rps, 0, sizeof(rps));
-
- ps.type = _PROC_SESSION;
- ps.subtype = _PROC_SUB_ACTION1;
- ps.sid = v;
- strcpy(ps.name, login);
-
- Send(1, &ps, &rps, sizeof(ps), sizeof(rps));
-
- if (rps.status < 0)
- return (rps.status);
-
- ps.type = _PROC_SESSION;
- ps.subtype = _PROC_SUB_ACTION2;
- ps.sid = v;
- sprintf(ps.name, "//%d%s", getnid(), ttyname);
- Send(1, &ps, &rps, sizeof(ps), sizeof(rps));
-
- return (rps.status);
-}
-#endif
diff --git a/nx-X11/programs/xterm/main.c.NX.original b/nx-X11/programs/xterm/main.c.NX.original
deleted file mode 100644
index 36068a474..000000000
--- a/nx-X11/programs/xterm/main.c.NX.original
+++ /dev/null
@@ -1,4943 +0,0 @@
-/* $XTermId: main.c,v 1.477 2005/11/13 23:10:36 tom Exp $ */
-
-#if !defined(lint) && 0
-static char *rid = "$Xorg: main.c,v 1.7 2001/02/09 02:06:02 xorgcvs Exp $";
-#endif /* lint */
-
-/*
- * W A R N I N G
- *
- * If you think you know what all of this code is doing, you are
- * probably very mistaken. There be serious and nasty dragons here.
- *
- * This client is *not* to be taken as an example of how to write X
- * Toolkit applications. It is in need of a substantial rewrite,
- * ideally to create a generic tty widget with several different parsing
- * widgets so that you can plug 'em together any way you want. Don't
- * hold your breath, though....
- */
-
-/***********************************************************
-
-Copyright 2002-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-Copyright 1987, 1988 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 1987, 1988 by Digital Equipment Corporation, Maynard.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be used in
-advertising or publicity pertaining to distribution of the software
-without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/**************************************************************************/
-/* */
-/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */
-/* */
-/* NX-X11, NX protocol compression and NX extensions to this software */
-/* are copyright of NoMachine. Redistribution and use of the present */
-/* software is allowed according to terms specified in the file LICENSE */
-/* which comes in the source distribution. */
-/* */
-/* Check http://www.nomachine.com/licensing.html for applicability. */
-/* */
-/* NX and NoMachine are trademarks of Medialogic S.p.A. */
-/* */
-/* All rights reserved. */
-/* */
-/**************************************************************************/
-
-/* $XFree86: xc/programs/xterm/main.c,v 3.199 2005/11/13 23:10:36 dickey Exp $ */
-
-#ifdef NX_TRANS_EXIT
-
-/*
- * Redefine the libc exit() function to be
- * sure we get rid of proxy and detect any
- * abnormal termination.
- */
-
-extern void NXTransExit(int code) __attribute__((noreturn));
-
-#define exit(code) NXTransExit(code)
-
-#endif /* #ifdef NX_TRANS_EXIT */
-
-/* main.c */
-
-#define RES_OFFSET(field) XtOffsetOf(XTERM_RESOURCE, field)
-
-#include <xterm.h>
-
-#include <X11/cursorfont.h>
-#include <X11/Xlocale.h>
-
-#if OPT_TOOLBAR
-
-#if defined(HAVE_LIB_XAW)
-#include <X11/Xaw/Form.h>
-#elif defined(HAVE_LIB_XAW3D)
-#include <X11/Xaw3d/Form.h>
-#elif defined(HAVE_LIB_NEXTAW)
-#include <X11/neXtaw/Form.h>
-#elif defined(HAVE_LIB_XAWPLUS)
-#include <X11/XawPlus/Form.h>
-#endif
-
-#endif /* OPT_TOOLBAR */
-
-#include <pwd.h>
-#include <ctype.h>
-
-#include <data.h>
-#include <error.h>
-#include <menu.h>
-#include <main.h>
-#include <xstrings.h>
-#include <xterm_io.h>
-
-#if OPT_WIDE_CHARS
-#include <charclass.h>
-#endif
-
-#ifdef __osf__
-#define USE_SYSV_SIGNALS
-#define WTMP
-#include <pty.h> /* openpty() */
-#endif
-
-#ifdef __sgi
-#include <grp.h> /* initgroups() */
-#endif
-
-#ifdef USE_ISPTS_FLAG
-static Bool IsPts = False;
-#endif
-
-#if defined(__SCO__) || defined(SVR4) || defined(_POSIX_SOURCE)
-#define USE_POSIX_SIGNALS
-#endif
-
-#if defined(SYSV) && !defined(SVR4) && !defined(ISC22) && !defined(ISC30)
-/* older SYSV systems cannot ignore SIGHUP.
- Shell hangs, or you get extra shells, or something like that */
-#define USE_SYSV_SIGHUP
-#endif
-
-#if defined(sony) && defined(bsd43) && !defined(KANJI)
-#define KANJI
-#endif
-
-#ifdef linux
-#define USE_SYSV_PGRP
-#define USE_SYSV_SIGNALS
-#define WTMP
-#ifdef __GLIBC__
-#if (__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1))
-#include <pty.h>
-#endif
-#endif
-#endif
-
-#ifdef __MVS__
-#define USE_SYSV_PGRP
-#define USE_SYSV_SIGNALS
-#endif
-
-#ifdef __CYGWIN__
-#define LASTLOG
-#define WTMP
-#endif
-
-#ifdef __SCO__
-#ifndef _SVID3
-#define _SVID3
-#endif
-#endif
-
-#if defined(__GLIBC__) && !defined(linux)
-#define USE_SYSV_PGRP
-#define WTMP
-#define HAS_BSD_GROUPS
-#endif
-
-#if defined(USE_TTY_GROUP) || defined(USE_UTMP_SETGID)
-#include <grp.h>
-#endif
-
-#ifndef TTY_GROUP_NAME
-#define TTY_GROUP_NAME "tty"
-#endif
-
-#include <sys/stat.h>
-
-#ifdef Lynx
-#ifndef BSDLY
-#define BSDLY 0
-#endif
-#ifndef VTDLY
-#define VTDLY 0
-#endif
-#ifndef FFDLY
-#define FFDLY 0
-#endif
-#endif
-
-#ifdef SYSV /* { */
-
-#ifdef USE_USG_PTYS /* AT&T SYSV has no ptyio.h */
-#include <sys/stropts.h> /* for I_PUSH */
-#include <poll.h> /* for POLLIN */
-#endif /* USE_USG_PTYS */
-
-#define USE_SYSV_SIGNALS
-#define USE_SYSV_PGRP
-
-#if !defined(TIOCSWINSZ) || defined(__SCO__) || defined(__UNIXWARE__)
-#define USE_SYSV_ENVVARS /* COLUMNS/LINES vs. TERMCAP */
-#endif
-
-/*
- * now get system-specific includes
- */
-#ifdef CRAY
-#define HAS_BSD_GROUPS
-#endif
-
-#ifdef macII
-#define HAS_BSD_GROUPS
-#include <sys/ttychars.h>
-#undef USE_SYSV_ENVVARS
-#undef FIOCLEX
-#undef FIONCLEX
-#define setpgrp2 setpgrp
-#include <sgtty.h>
-#include <sys/resource.h>
-#endif
-
-#ifdef __hpux
-#define HAS_BSD_GROUPS
-#include <sys/ptyio.h>
-#endif /* __hpux */
-
-#ifdef __osf__
-#define HAS_BSD_GROUPS
-#undef USE_SYSV_PGRP
-#define setpgrp setpgid
-#endif
-
-#ifdef __sgi
-#define HAS_BSD_GROUPS
-#include <sys/sysmacros.h>
-#endif /* __sgi */
-
-#ifdef sun
-#include <sys/strredir.h>
-#endif
-
-#else /* } !SYSV { */ /* BSD systems */
-
-#ifdef __QNX__
-
-#ifndef __QNXNTO__
-#define ttyslot() 1
-#else
-#define USE_SYSV_PGRP
-extern __inline__
-ttyslot()
-{
- return 1; /* yuk */
-}
-#endif
-
-#else
-
-#if defined(__INTERIX) || defined(__APPLE__)
-#define setpgrp setpgid
-#endif
-
-#ifndef linux
-#ifndef VMS
-#ifndef USE_POSIX_TERMIOS
-#ifndef USE_ANY_SYSV_TERMIO
-#include <sgtty.h>
-#endif
-#endif /* USE_POSIX_TERMIOS */
-#ifdef Lynx
-#include <resource.h>
-#else
-#include <sys/resource.h>
-#endif
-#ifndef __INTERIX
-#define HAS_BSD_GROUPS
-#endif
-#endif /* !VMS */
-#endif /* !linux */
-
-#endif /* __QNX__ */
-
-#endif /* } !SYSV */
-
-#if defined(SVR4) && !defined(__CYGWIN__)
-#define HAS_SAVED_IDS_AND_SETEUID
-#endif
-
-#ifdef linux
-#define HAS_SAVED_IDS_AND_SETEUID
-#endif
-
-/* Xpoll.h and <sys/param.h> on glibc 2.1 systems have colliding NBBY's */
-#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
-#ifndef NOFILE
-#define NOFILE OPEN_MAX
-#endif
-#elif !(defined(VMS) || defined(WIN32) || defined(Lynx) || defined(__GNU__) || defined(__MVS__))
-#include <sys/param.h> /* for NOFILE */
-#endif
-
-#if defined(BSD) && (BSD >= 199103)
-#define WTMP
-#define HAS_SAVED_IDS_AND_SETEUID
-#endif
-
-#include <stdio.h>
-
-#ifdef __hpux
-#include <sys/utsname.h>
-#endif /* __hpux */
-
-#if defined(apollo) && (OSMAJORVERSION == 10) && (OSMINORVERSION < 4)
-#define ttyslot() 1
-#endif /* apollo */
-
-#if defined(UTMPX_FOR_UTMP)
-#define UTMP_STR utmpx
-#else
-#define UTMP_STR utmp
-#endif
-
-#if defined(USE_UTEMPTER)
-#include <utempter.h>
-#endif
-
-#if defined(UTMPX_FOR_UTMP)
-
-#include <utmpx.h>
-
-#define call_endutent endutxent
-#define call_getutid getutxid
-#define call_pututline pututxline
-#define call_setutent setutxent
-#define call_updwtmp updwtmpx
-
-#elif defined(HAVE_UTMP)
-
-#include <utmp.h>
-
-#if defined(_CRAY) && (OSMAJORVERSION < 8)
-extern struct utmp *getutid __((struct utmp * _Id));
-#endif
-
-#define call_endutent endutent
-#define call_getutid getutid
-#define call_pututline pututline
-#define call_setutent setutent
-#define call_updwtmp updwtmp
-
-#endif
-
-#if defined(USE_LASTLOG) && defined(HAVE_LASTLOG_H)
-#include <lastlog.h> /* caution: glibc 2.3.5 includes utmp.h here */
-#endif
-
-#ifndef USE_LASTLOGX
-#if defined(_NETBSD_SOURCE) && defined(_PATH_LASTLOGX)
-#define USE_LASTLOGX 1
-#endif
-#endif
-
-#ifdef PUCC_PTYD
-#include <local/openpty.h>
-#endif /* PUCC_PTYD */
-
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__APPLE__)
-#include <util.h> /* openpty() */
-#endif
-
-#ifdef __FreeBSD__
-#include <libutil.h> /* openpty() */
-#endif
-
-#if !defined(UTMP_FILENAME)
-#if defined(UTMP_FILE)
-#define UTMP_FILENAME UTMP_FILE
-#elif defined(_PATH_UTMP)
-#define UTMP_FILENAME _PATH_UTMP
-#else
-#define UTMP_FILENAME "/etc/utmp"
-#endif
-#endif
-
-#ifndef LASTLOG_FILENAME
-#ifdef _PATH_LASTLOG
-#define LASTLOG_FILENAME _PATH_LASTLOG
-#else
-#define LASTLOG_FILENAME "/usr/adm/lastlog" /* only on BSD systems */
-#endif
-#endif
-
-#if !defined(WTMP_FILENAME)
-#if defined(WTMP_FILE)
-#define WTMP_FILENAME WTMP_FILE
-#elif defined(_PATH_WTMP)
-#define WTMP_FILENAME _PATH_WTMP
-#elif defined(SYSV)
-#define WTMP_FILENAME "/etc/wtmp"
-#else
-#define WTMP_FILENAME "/usr/adm/wtmp"
-#endif
-#endif
-
-#include <signal.h>
-
-#if defined(__SCO__) || (defined(ISC) && !defined(_POSIX_SOURCE))
-#undef SIGTSTP /* defined, but not the BSD way */
-#endif
-
-#ifdef SIGTSTP
-#include <sys/wait.h>
-#endif
-
-#if defined(__SCO__) || defined(__UNIXWARE__)
-#undef ECHOKE
-#undef ECHOCTL
-#endif
-
-#ifdef X_NOT_POSIX
-extern long lseek();
-#if defined(USG) || defined(SVR4)
-extern unsigned sleep();
-#else
-extern void sleep();
-#endif
-extern char *ttyname();
-#endif
-
-#ifdef SYSV
-extern char *ptsname(int);
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- extern int tgetent(char *ptr, char *name);
- extern char *tgetstr(char *name, char **ptr);
-
-#ifdef __cplusplus
-}
-#endif
-#ifndef VMS
-static SIGNAL_T reapchild(int n);
-static int spawn(void);
-static void remove_termcap_entry(char *buf, char *str);
-#ifdef USE_PTY_SEARCH
-static int pty_search(int *pty);
-#endif
-#endif /* ! VMS */
-
-static int get_pty(int *pty, char *from);
-static void get_terminal(void);
-static void resize(TScreen * s, char *oldtc, char *newtc);
-static void set_owner(char *device, uid_t uid, gid_t gid, mode_t mode);
-
-static Bool added_utmp_entry = False;
-
-#if defined(USE_UTMP_SETGID)
-static int utmpGid = -1;
-static int really_get_pty(int *pty, char *from);
-#endif
-
-#if defined(USE_SYSV_UTMP) && !defined(USE_UTEMPTER)
-static Bool xterm_exiting = False;
-#endif
-
-static char *explicit_shname = NULL;
-
-/*
-** Ordinarily it should be okay to omit the assignment in the following
-** statement. Apparently the c89 compiler on AIX 4.1.3 has a bug, or does
-** it? Without the assignment though the compiler will init command_to_exec
-** to 0xffffffff instead of NULL; and subsequent usage, e.g. in spawn() to
-** SEGV.
-*/
-static char **command_to_exec = NULL;
-
-#if OPT_LUIT_PROG
-static char **command_to_exec_with_luit = NULL;
-#endif
-
-#define TERMCAP_ERASE "kb"
-#define VAL_INITIAL_ERASE A2E(8)
-
-/* choose a nice default value for speed - if we make it too low, users who
- * mistakenly use $TERM set to vt100 will get padding delays. Setting it to a
- * higher value is not useful since legacy applications (termcap) that care
- * about padding generally store the code in a short, which does not have
- * enough bits for the extended values.
- */
-#ifdef B38400 /* everyone should define this */
-#define VAL_LINE_SPEED B38400
-#else /* ...but xterm's used this for a long time */
-#define VAL_LINE_SPEED B9600
-#endif
-
-/* allow use of system default characters if defined and reasonable */
-#ifndef CBRK
-#define CBRK 0
-#endif
-#ifndef CDSUSP
-#define CDSUSP CONTROL('Y')
-#endif
-#ifndef CEOF
-#define CEOF CONTROL('D')
-#endif
-#ifndef CEOL
-#define CEOL 0
-#endif
-#ifndef CFLUSH
-#define CFLUSH CONTROL('O')
-#endif
-#ifndef CINTR
-#define CINTR 0177
-#endif
-#ifndef CKILL
-#define CKILL '@'
-#endif
-#ifndef CLNEXT
-#define CLNEXT CONTROL('V')
-#endif
-#ifndef CNUL
-#define CNUL 0
-#endif
-#ifndef CQUIT
-#define CQUIT CONTROL('\\')
-#endif
-#ifndef CRPRNT
-#define CRPRNT CONTROL('R')
-#endif
-#ifndef CSTART
-#define CSTART CONTROL('Q')
-#endif
-#ifndef CSTOP
-#define CSTOP CONTROL('S')
-#endif
-#ifndef CSUSP
-#define CSUSP CONTROL('Z')
-#endif
-#ifndef CSWTCH
-#define CSWTCH 0
-#endif
-#ifndef CWERASE
-#define CWERASE CONTROL('W')
-#endif
-
-#ifdef USE_ANY_SYSV_TERMIO
-#define TERMIO_STRUCT struct termio
-#define ttySetAttr(fd, datap) ioctl(fd, TCSETA, datap)
-#define ttyGetAttr(fd, datap) ioctl(fd, TCGETA, datap)
-#elif defined(USE_POSIX_TERMIOS)
-#define TERMIO_STRUCT struct termios
-#define ttySetAttr(fd, datap) tcsetattr(fd, TCSANOW, datap)
-#define ttyGetAttr(fd, datap) tcgetattr(fd, datap)
-#endif /* USE_ANY_SYSV_TERMIO */
-
-#ifndef VMS
-#ifdef TERMIO_STRUCT
-/* The following structures are initialized in main() in order
-** to eliminate any assumptions about the internal order of their
-** contents.
-*/
-static TERMIO_STRUCT d_tio;
-
-#ifdef HAS_LTCHARS
-static struct ltchars d_ltc;
-#endif /* HAS_LTCHARS */
-
-#ifdef TIOCLSET
-static unsigned int d_lmode;
-#endif /* TIOCLSET */
-
-#else /* !TERMIO_STRUCT */
-static struct sgttyb d_sg =
-{
- 0, 0, 0177, CKILL, (EVENP | ODDP | ECHO | XTABS | CRMOD)
-};
-static struct tchars d_tc =
-{
- CINTR, CQUIT, CSTART,
- CSTOP, CEOF, CBRK
-};
-static struct ltchars d_ltc =
-{
- CSUSP, CDSUSP, CRPRNT,
- CFLUSH, CWERASE, CLNEXT
-};
-static int d_disipline = NTTYDISC;
-static long int d_lmode = LCRTBS | LCRTERA | LCRTKIL | LCTLECH;
-#ifdef sony
-static long int d_jmode = KM_SYSSJIS | KM_ASCII;
-static struct jtchars d_jtc =
-{
- 'J', 'B'
-};
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
-#endif /* ! VMS */
-
-/*
- * SYSV has the termio.c_cc[V] and ltchars; BSD has tchars and ltchars;
- * SVR4 has only termio.c_cc, but it includes everything from ltchars.
- * POSIX termios has termios.c_cc, which is similar to SVR4.
- */
-#define TTYMODE(name) { name, sizeof(name)-1, 0, 0 }
-static int override_tty_modes = 0;
-/* *INDENT-OFF* */
-static struct _xttymodes {
- char *name;
- size_t len;
- int set;
- Char value;
-} ttymodelist[] = {
- TTYMODE("intr"), /* tchars.t_intrc ; VINTR */
-#define XTTYMODE_intr 0
- TTYMODE("quit"), /* tchars.t_quitc ; VQUIT */
-#define XTTYMODE_quit 1
- TTYMODE("erase"), /* sgttyb.sg_erase ; VERASE */
-#define XTTYMODE_erase 2
- TTYMODE("kill"), /* sgttyb.sg_kill ; VKILL */
-#define XTTYMODE_kill 3
- TTYMODE("eof"), /* tchars.t_eofc ; VEOF */
-#define XTTYMODE_eof 4
- TTYMODE("eol"), /* VEOL */
-#define XTTYMODE_eol 5
- TTYMODE("swtch"), /* VSWTCH */
-#define XTTYMODE_swtch 6
- TTYMODE("start"), /* tchars.t_startc ; VSTART */
-#define XTTYMODE_start 7
- TTYMODE("stop"), /* tchars.t_stopc ; VSTOP */
-#define XTTYMODE_stop 8
- TTYMODE("brk"), /* tchars.t_brkc */
-#define XTTYMODE_brk 9
- TTYMODE("susp"), /* ltchars.t_suspc ; VSUSP */
-#define XTTYMODE_susp 10
- TTYMODE("dsusp"), /* ltchars.t_dsuspc ; VDSUSP */
-#define XTTYMODE_dsusp 11
- TTYMODE("rprnt"), /* ltchars.t_rprntc ; VREPRINT */
-#define XTTYMODE_rprnt 12
- TTYMODE("flush"), /* ltchars.t_flushc ; VDISCARD */
-#define XTTYMODE_flush 13
- TTYMODE("weras"), /* ltchars.t_werasc ; VWERASE */
-#define XTTYMODE_weras 14
- TTYMODE("lnext"), /* ltchars.t_lnextc ; VLNEXT */
-#define XTTYMODE_lnext 15
- TTYMODE("status"), /* VSTATUS */
-#define XTTYMODE_status 16
- TTYMODE("erase2"), /* VERASE2 */
-#define XTTYMODE_erase2 17
- TTYMODE("eol2"), /* VEOL2 */
-#define XTTYMODE_eol2 18
- { NULL, 0, 0, '\0' }, /* end of data */
-};
-/* *INDENT-ON* */
-
-#define TMODE(ind,var) if (ttymodelist[ind].set) var = ttymodelist[ind].value
-
-static int parse_tty_modes(char *s, struct _xttymodes *modelist);
-
-#ifdef USE_SYSV_UTMP
-#if (defined(AIXV3) && (OSMAJORVERSION < 4)) && !(defined(getutid))
-extern struct utmp *getutid();
-#endif /* AIXV3 */
-
-#else /* not USE_SYSV_UTMP */
-static char etc_utmp[] = UTMP_FILENAME;
-#endif /* USE_SYSV_UTMP */
-
-#ifndef USE_UTEMPTER
-#ifdef USE_LASTLOG
-static char etc_lastlog[] = LASTLOG_FILENAME;
-#endif
-
-#ifdef WTMP
-static char etc_wtmp[] = WTMP_FILENAME;
-#endif
-#endif /* !USE_UTEMPTER */
-
-/*
- * Some people with 4.3bsd /bin/login seem to like to use login -p -f user
- * to implement xterm -ls. They can turn on USE_LOGIN_DASH_P and turn off
- * WTMP and USE_LASTLOG.
- */
-#ifdef USE_LOGIN_DASH_P
-#ifndef LOGIN_FILENAME
-#define LOGIN_FILENAME "/bin/login"
-#endif
-static char bin_login[] = LOGIN_FILENAME;
-#endif
-
-static char passedPty[PTYCHARLEN + 1]; /* name if pty if slave */
-
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
-static int Console;
-#include <X11/Xmu/SysUtil.h> /* XmuGetHostname */
-#define MIT_CONSOLE_LEN 12
-#define MIT_CONSOLE "MIT_CONSOLE_"
-static char mit_console_name[255 + MIT_CONSOLE_LEN + 1] = MIT_CONSOLE;
-static Atom mit_console;
-#endif /* TIOCCONS */
-
-#ifndef USE_SYSV_UTMP
-static int tslot;
-#endif /* USE_SYSV_UTMP */
-static sigjmp_buf env;
-
-#define SetUtmpHost(dst, screen) \
- { \
- char host[sizeof(dst) + 1]; \
- strncpy(host, DisplayString(screen->display), sizeof(host)); \
- TRACE(("DisplayString(%s)\n", host)); \
- if (!resource.utmpDisplayId) { \
- char *endptr = strrchr(host, ':'); \
- if (endptr) { \
- TRACE(("trimming display-id '%s'\n", host)); \
- *endptr = '\0'; \
- } \
- } \
- strncpy(dst, host, sizeof(dst)); \
- }
-
-/* used by VT (charproc.c) */
-
-static XtResource application_resources[] =
-{
- Sres("name", "Name", xterm_name, DFT_TERMTYPE),
- Sres("iconGeometry", "IconGeometry", icon_geometry, NULL),
- Sres(XtNtitle, XtCTitle, title, NULL),
- Sres(XtNiconName, XtCIconName, icon_name, NULL),
- Sres("termName", "TermName", term_name, NULL),
- Sres("ttyModes", "TtyModes", tty_modes, NULL),
- Bres("hold", "Hold", hold_screen, False),
- Bres("utmpInhibit", "UtmpInhibit", utmpInhibit, False),
- Bres("utmpDisplayId", "UtmpDisplayId", utmpDisplayId, True),
- Bres("messages", "Messages", messages, True),
- Ires("minBufSize", "MinBufSize", minBufSize, 4096),
- Ires("maxBufSize", "MaxBufSize", maxBufSize, 32768),
- Sres("keyboardType", "KeyboardType", keyboardType, "unknown"),
- Bres("sunFunctionKeys", "SunFunctionKeys", sunFunctionKeys, False),
-#if OPT_SUNPC_KBD
- Bres("sunKeyboard", "SunKeyboard", sunKeyboard, False),
-#endif
-#if OPT_HP_FUNC_KEYS
- Bres("hpFunctionKeys", "HpFunctionKeys", hpFunctionKeys, False),
-#endif
-#if OPT_SCO_FUNC_KEYS
- Bres("scoFunctionKeys", "ScoFunctionKeys", scoFunctionKeys, False),
-#endif
-#if OPT_INITIAL_ERASE
- Bres("ptyInitialErase", "PtyInitialErase", ptyInitialErase, DEF_INITIAL_ERASE),
- Bres("backarrowKeyIsErase", "BackarrowKeyIsErase", backarrow_is_erase, DEF_BACKARO_ERASE),
-#endif
- Bres("waitForMap", "WaitForMap", wait_for_map, False),
- Bres("useInsertMode", "UseInsertMode", useInsertMode, False),
-#if OPT_ZICONBEEP
- Ires("zIconBeep", "ZIconBeep", zIconBeep, 0),
-#endif
-#if OPT_PTY_HANDSHAKE
- Bres("ptyHandshake", "PtyHandshake", ptyHandshake, True),
-#endif
-#if OPT_SAME_NAME
- Bres("sameName", "SameName", sameName, True),
-#endif
-#if OPT_SESSION_MGT
- Bres("sessionMgt", "SessionMgt", sessionMgt, True),
-#endif
-#if OPT_TOOLBAR
- Bres(XtNtoolBar, XtCToolBar, toolBar, True),
-#endif
-};
-
-static char *fallback_resources[] =
-{
- "*SimpleMenu*menuLabel.vertSpace: 100",
- "*SimpleMenu*HorizontalMargins: 16",
- "*SimpleMenu*Sme.height: 16",
- "*SimpleMenu*Cursor: left_ptr",
- "*mainMenu.Label: Main Options (no app-defaults)",
- "*vtMenu.Label: VT Options (no app-defaults)",
- "*fontMenu.Label: VT Fonts (no app-defaults)",
-#if OPT_TEK4014
- "*tekMenu.Label: Tek Options (no app-defaults)",
-#endif
- NULL
-};
-
-/* Command line options table. Only resources are entered here...there is a
- pass over the remaining options after XrmParseCommand is let loose. */
-/* *INDENT-OFF* */
-static XrmOptionDescRec optionDescList[] = {
-{"-geometry", "*vt100.geometry",XrmoptionSepArg, (caddr_t) NULL},
-{"-132", "*c132", XrmoptionNoArg, (caddr_t) "on"},
-{"+132", "*c132", XrmoptionNoArg, (caddr_t) "off"},
-{"-ah", "*alwaysHighlight", XrmoptionNoArg, (caddr_t) "on"},
-{"+ah", "*alwaysHighlight", XrmoptionNoArg, (caddr_t) "off"},
-{"-aw", "*autoWrap", XrmoptionNoArg, (caddr_t) "on"},
-{"+aw", "*autoWrap", XrmoptionNoArg, (caddr_t) "off"},
-#ifndef NO_ACTIVE_ICON
-{"-ai", "*activeIcon", XrmoptionNoArg, (caddr_t) "off"},
-{"+ai", "*activeIcon", XrmoptionNoArg, (caddr_t) "on"},
-#endif /* NO_ACTIVE_ICON */
-{"-b", "*internalBorder",XrmoptionSepArg, (caddr_t) NULL},
-{"-bc", "*cursorBlink", XrmoptionNoArg, (caddr_t) "on"},
-{"+bc", "*cursorBlink", XrmoptionNoArg, (caddr_t) "off"},
-{"-bcf", "*cursorOffTime",XrmoptionSepArg, (caddr_t) NULL},
-{"-bcn", "*cursorOnTime",XrmoptionSepArg, (caddr_t) NULL},
-{"-bdc", "*colorBDMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+bdc", "*colorBDMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-cb", "*cutToBeginningOfLine", XrmoptionNoArg, (caddr_t) "off"},
-{"+cb", "*cutToBeginningOfLine", XrmoptionNoArg, (caddr_t) "on"},
-{"-cc", "*charClass", XrmoptionSepArg, (caddr_t) NULL},
-{"-cm", "*colorMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+cm", "*colorMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-cn", "*cutNewline", XrmoptionNoArg, (caddr_t) "off"},
-{"+cn", "*cutNewline", XrmoptionNoArg, (caddr_t) "on"},
-{"-cr", "*cursorColor", XrmoptionSepArg, (caddr_t) NULL},
-{"-cu", "*curses", XrmoptionNoArg, (caddr_t) "on"},
-{"+cu", "*curses", XrmoptionNoArg, (caddr_t) "off"},
-{"-dc", "*dynamicColors",XrmoptionNoArg, (caddr_t) "off"},
-{"+dc", "*dynamicColors",XrmoptionNoArg, (caddr_t) "on"},
-{"-fb", "*boldFont", XrmoptionSepArg, (caddr_t) NULL},
-{"-fbb", "*freeBoldBox", XrmoptionNoArg, (caddr_t)"off"},
-{"+fbb", "*freeBoldBox", XrmoptionNoArg, (caddr_t)"on"},
-{"-fbx", "*forceBoxChars", XrmoptionNoArg, (caddr_t)"off"},
-{"+fbx", "*forceBoxChars", XrmoptionNoArg, (caddr_t)"on"},
-#ifndef NO_ACTIVE_ICON
-{"-fi", "*iconFont", XrmoptionSepArg, (caddr_t) NULL},
-#endif /* NO_ACTIVE_ICON */
-#if OPT_RENDERFONT
-{"-fa", "*faceName", XrmoptionSepArg, (caddr_t) NULL},
-{"-fd", "*faceNameDoublesize", XrmoptionSepArg, (caddr_t) NULL},
-{"-fs", "*faceSize", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_WIDE_CHARS
-{"-fw", "*wideFont", XrmoptionSepArg, (caddr_t) NULL},
-{"-fwb", "*wideBoldFont", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_INPUT_METHOD
-{"-fx", "*ximFont", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_HIGHLIGHT_COLOR
-{"-hc", "*highlightColor", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_HP_FUNC_KEYS
-{"-hf", "*hpFunctionKeys",XrmoptionNoArg, (caddr_t) "on"},
-{"+hf", "*hpFunctionKeys",XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-hold", "*hold", XrmoptionNoArg, (caddr_t) "on"},
-{"+hold", "*hold", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_INITIAL_ERASE
-{"-ie", "*ptyInitialErase", XrmoptionNoArg, (caddr_t) "on"},
-{"+ie", "*ptyInitialErase", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-j", "*jumpScroll", XrmoptionNoArg, (caddr_t) "on"},
-{"+j", "*jumpScroll", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_C1_PRINT
-{"-k8", "*allowC1Printable", XrmoptionNoArg, (caddr_t) "on"},
-{"+k8", "*allowC1Printable", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-kt", "*keyboardType", XrmoptionSepArg, (caddr_t) NULL},
-{"+kt", "*keyboardType", XrmoptionSepArg, (caddr_t) NULL},
-/* parse logging options anyway for compatibility */
-{"-l", "*logging", XrmoptionNoArg, (caddr_t) "on"},
-{"+l", "*logging", XrmoptionNoArg, (caddr_t) "off"},
-{"-lf", "*logFile", XrmoptionSepArg, (caddr_t) NULL},
-{"-ls", "*loginShell", XrmoptionNoArg, (caddr_t) "on"},
-{"+ls", "*loginShell", XrmoptionNoArg, (caddr_t) "off"},
-{"-mb", "*marginBell", XrmoptionNoArg, (caddr_t) "on"},
-{"+mb", "*marginBell", XrmoptionNoArg, (caddr_t) "off"},
-{"-mc", "*multiClickTime", XrmoptionSepArg, (caddr_t) NULL},
-{"-mesg", "*messages", XrmoptionNoArg, (caddr_t) "off"},
-{"+mesg", "*messages", XrmoptionNoArg, (caddr_t) "on"},
-{"-ms", "*pointerColor",XrmoptionSepArg, (caddr_t) NULL},
-{"-nb", "*nMarginBell", XrmoptionSepArg, (caddr_t) NULL},
-{"-nul", "*underLine", XrmoptionNoArg, (caddr_t) "off"},
-{"+nul", "*underLine", XrmoptionNoArg, (caddr_t) "on"},
-{"-pc", "*boldColors", XrmoptionNoArg, (caddr_t) "on"},
-{"+pc", "*boldColors", XrmoptionNoArg, (caddr_t) "off"},
-{"-rw", "*reverseWrap", XrmoptionNoArg, (caddr_t) "on"},
-{"+rw", "*reverseWrap", XrmoptionNoArg, (caddr_t) "off"},
-{"-s", "*multiScroll", XrmoptionNoArg, (caddr_t) "on"},
-{"+s", "*multiScroll", XrmoptionNoArg, (caddr_t) "off"},
-{"-sb", "*scrollBar", XrmoptionNoArg, (caddr_t) "on"},
-{"+sb", "*scrollBar", XrmoptionNoArg, (caddr_t) "off"},
-#ifdef SCROLLBAR_RIGHT
-{"-leftbar", "*rightScrollBar", XrmoptionNoArg, (caddr_t) "off"},
-{"-rightbar", "*rightScrollBar", XrmoptionNoArg, (caddr_t) "on"},
-#endif
-{"-rvc", "*colorRVMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+rvc", "*colorRVMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-sf", "*sunFunctionKeys", XrmoptionNoArg, (caddr_t) "on"},
-{"+sf", "*sunFunctionKeys", XrmoptionNoArg, (caddr_t) "off"},
-{"-si", "*scrollTtyOutput", XrmoptionNoArg, (caddr_t) "off"},
-{"+si", "*scrollTtyOutput", XrmoptionNoArg, (caddr_t) "on"},
-{"-sk", "*scrollKey", XrmoptionNoArg, (caddr_t) "on"},
-{"+sk", "*scrollKey", XrmoptionNoArg, (caddr_t) "off"},
-{"-sl", "*saveLines", XrmoptionSepArg, (caddr_t) NULL},
-#if OPT_SUNPC_KBD
-{"-sp", "*sunKeyboard", XrmoptionNoArg, (caddr_t) "on"},
-{"+sp", "*sunKeyboard", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-#if OPT_TEK4014
-{"-t", "*tekStartup", XrmoptionNoArg, (caddr_t) "on"},
-{"+t", "*tekStartup", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-ti", "*decTerminalID",XrmoptionSepArg, (caddr_t) NULL},
-{"-tm", "*ttyModes", XrmoptionSepArg, (caddr_t) NULL},
-{"-tn", "*termName", XrmoptionSepArg, (caddr_t) NULL},
-#if OPT_WIDE_CHARS
-{"-u8", "*utf8", XrmoptionNoArg, (caddr_t) "2"},
-{"+u8", "*utf8", XrmoptionNoArg, (caddr_t) "0"},
-#endif
-#if OPT_LUIT_PROG
-{"-lc", "*locale", XrmoptionNoArg, (caddr_t) "on"},
-{"+lc", "*locale", XrmoptionNoArg, (caddr_t) "off"},
-{"-lcc", "*localeFilter",XrmoptionSepArg, (caddr_t) NULL},
-{"-en", "*locale", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-{"-ulc", "*colorULMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+ulc", "*colorULMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-ulit", "*italicULMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+ulit", "*italicULMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-ut", "*utmpInhibit", XrmoptionNoArg, (caddr_t) "on"},
-{"+ut", "*utmpInhibit", XrmoptionNoArg, (caddr_t) "off"},
-{"-im", "*useInsertMode", XrmoptionNoArg, (caddr_t) "on"},
-{"+im", "*useInsertMode", XrmoptionNoArg, (caddr_t) "off"},
-{"-vb", "*visualBell", XrmoptionNoArg, (caddr_t) "on"},
-{"+vb", "*visualBell", XrmoptionNoArg, (caddr_t) "off"},
-{"-pob", "*popOnBell", XrmoptionNoArg, (caddr_t) "on"},
-{"+pob", "*popOnBell", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_WIDE_CHARS
-{"-wc", "*wideChars", XrmoptionNoArg, (caddr_t) "on"},
-{"+wc", "*wideChars", XrmoptionNoArg, (caddr_t) "off"},
-{"-mk_width", "*mkWidth", XrmoptionNoArg, (caddr_t) "on"},
-{"+mk_width", "*mkWidth", XrmoptionNoArg, (caddr_t) "off"},
-{"-cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "on"},
-{"+cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "on"},
-{"+wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_ZICONBEEP
-{"-ziconbeep", "*zIconBeep", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_SAME_NAME
-{"-samename", "*sameName", XrmoptionNoArg, (caddr_t) "on"},
-{"+samename", "*sameName", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-#if OPT_SESSION_MGT
-{"-sm", "*sessionMgt", XrmoptionNoArg, (caddr_t) "on"},
-{"+sm", "*sessionMgt", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-#if OPT_TOOLBAR
-{"-tb", "*"XtNtoolBar, XrmoptionNoArg, (caddr_t) "on"},
-{"+tb", "*"XtNtoolBar, XrmoptionNoArg, (caddr_t) "off"},
-#endif
-/* options that we process ourselves */
-{"-help", NULL, XrmoptionSkipNArgs, (caddr_t) NULL},
-{"-version", NULL, XrmoptionSkipNArgs, (caddr_t) NULL},
-{"-class", NULL, XrmoptionSkipArg, (caddr_t) NULL},
-{"-e", NULL, XrmoptionSkipLine, (caddr_t) NULL},
-{"-into", NULL, XrmoptionSkipArg, (caddr_t) NULL},
-/* bogus old compatibility stuff for which there are
- standard XtOpenApplication options now */
-{"%", "*tekGeometry", XrmoptionStickyArg, (caddr_t) NULL},
-{"#", ".iconGeometry",XrmoptionStickyArg, (caddr_t) NULL},
-{"-T", ".title", XrmoptionSepArg, (caddr_t) NULL},
-{"-n", "*iconName", XrmoptionSepArg, (caddr_t) NULL},
-{"-r", "*reverseVideo",XrmoptionNoArg, (caddr_t) "on"},
-{"+r", "*reverseVideo",XrmoptionNoArg, (caddr_t) "off"},
-{"-rv", "*reverseVideo",XrmoptionNoArg, (caddr_t) "on"},
-{"+rv", "*reverseVideo",XrmoptionNoArg, (caddr_t) "off"},
-{"-w", ".borderWidth", XrmoptionSepArg, (caddr_t) NULL},
-};
-
-static OptionHelp xtermOptions[] = {
-{ "-version", "print the version number" },
-{ "-help", "print out this message" },
-{ "-display displayname", "X server to contact" },
-{ "-geometry geom", "size (in characters) and position" },
-{ "-/+rv", "turn on/off reverse video" },
-{ "-bg color", "background color" },
-{ "-fg color", "foreground color" },
-{ "-bd color", "border color" },
-{ "-bw number", "border width in pixels" },
-{ "-fn fontname", "normal text font" },
-{ "-fb fontname", "bold text font" },
-{ "-/+fbb", "turn on/off normal/bold font comparison inhibit"},
-{ "-/+fbx", "turn off/on linedrawing characters"},
-#if OPT_RENDERFONT
-{ "-fa pattern", "FreeType font-selection pattern" },
-{ "-fd pattern", "FreeType Doublesize font-selection pattern" },
-{ "-fs size", "FreeType font-size" },
-#endif
-#if OPT_WIDE_CHARS
-{ "-fw fontname", "doublewidth text font" },
-{ "-fwb fontname", "doublewidth bold text font" },
-#endif
-#if OPT_INPUT_METHOD
-{ "-fx fontname", "XIM fontset" },
-#endif
-{ "-iconic", "start iconic" },
-{ "-name string", "client instance, icon, and title strings" },
-{ "-class string", "class string (XTerm)" },
-{ "-title string", "title string" },
-{ "-xrm resourcestring", "additional resource specifications" },
-{ "-/+132", "turn on/off 80/132 column switching" },
-{ "-/+ah", "turn on/off always highlight" },
-#ifndef NO_ACTIVE_ICON
-{ "-/+ai", "turn off/on active icon" },
-{ "-fi fontname", "icon font for active icon" },
-#endif /* NO_ACTIVE_ICON */
-{ "-b number", "internal border in pixels" },
-{ "-/+bc", "turn on/off text cursor blinking" },
-{ "-bcf milliseconds", "time text cursor is off when blinking"},
-{ "-bcn milliseconds", "time text cursor is on when blinking"},
-{ "-/+bdc", "turn off/on display of bold as color"},
-{ "-/+cb", "turn on/off cut-to-beginning-of-line inhibit" },
-{ "-cc classrange", "specify additional character classes" },
-{ "-/+cm", "turn off/on ANSI color mode" },
-{ "-/+cn", "turn on/off cut newline inhibit" },
-{ "-cr color", "text cursor color" },
-{ "-/+cu", "turn on/off curses emulation" },
-{ "-/+dc", "turn off/on dynamic color selection" },
-#if OPT_HIGHLIGHT_COLOR
-{ "-hc color", "selection background color" },
-#endif
-#if OPT_HP_FUNC_KEYS
-{ "-/+hf", "turn on/off HP Function Key escape codes" },
-#endif
-{ "-/+hold", "turn on/off logic that retains window after exit" },
-#if OPT_INITIAL_ERASE
-{ "-/+ie", "turn on/off initialization of 'erase' from pty" },
-#endif
-{ "-/+im", "use insert mode for TERMCAP" },
-{ "-/+j", "turn on/off jump scroll" },
-#if OPT_C1_PRINT
-{ "-/+k8", "turn on/off C1-printable classification"},
-#endif
-{ "-kt keyboardtype", "set keyboard type:" KEYBOARD_TYPES },
-#ifdef ALLOWLOGGING
-{ "-/+l", "turn on/off logging" },
-{ "-lf filename", "logging filename" },
-#else
-{ "-/+l", "turn on/off logging (not supported)" },
-{ "-lf filename", "logging filename (not supported)" },
-#endif
-{ "-/+ls", "turn on/off login shell" },
-{ "-/+mb", "turn on/off margin bell" },
-{ "-mc milliseconds", "multiclick time in milliseconds" },
-{ "-/+mesg", "forbid/allow messages" },
-{ "-ms color", "pointer color" },
-{ "-nb number", "margin bell in characters from right end" },
-{ "-/+nul", "turn off/on display of underlining" },
-{ "-/+aw", "turn on/off auto wraparound" },
-{ "-/+pc", "turn on/off PC-style bold colors" },
-{ "-/+rw", "turn on/off reverse wraparound" },
-{ "-/+s", "turn on/off multiscroll" },
-{ "-/+sb", "turn on/off scrollbar" },
-#ifdef SCROLLBAR_RIGHT
-{ "-rightbar", "force scrollbar right (default left)" },
-{ "-leftbar", "force scrollbar left" },
-#endif
-{ "-/+rvc", "turn off/on display of reverse as color" },
-{ "-/+sf", "turn on/off Sun Function Key escape codes" },
-{ "-/+si", "turn on/off scroll-on-tty-output inhibit" },
-{ "-/+sk", "turn on/off scroll-on-keypress" },
-{ "-sl number", "number of scrolled lines to save" },
-#if OPT_SUNPC_KBD
-{ "-/+sp", "turn on/off Sun/PC Function/Keypad mapping" },
-#endif
-#if OPT_TEK4014
-{ "-/+t", "turn on/off Tek emulation window" },
-#endif
-#if OPT_TOOLBAR
-{ "-/+tb", "turn on/off toolbar" },
-#endif
-{ "-ti termid", "terminal identifier" },
-{ "-tm string", "terminal mode keywords and characters" },
-{ "-tn name", "TERM environment variable name" },
-#if OPT_WIDE_CHARS
-{ "-/+u8", "turn on/off UTF-8 mode (implies wide-characters)" },
-#endif
-#if OPT_LUIT_PROG
-{ "-/+lc", "turn on/off locale mode using luit" },
-{ "-lcc path", "filename of locale converter (" DEFLOCALEFILTER ")" },
-#endif
-{ "-/+ulc", "turn off/on display of underline as color" },
-{ "-/+ulit", "turn off/on display of underline as italics" },
-#ifdef HAVE_UTMP
-{ "-/+ut", "turn on/off utmp support" },
-#else
-{ "-/+ut", "turn on/off utmp support (not available)" },
-#endif
-{ "-/+vb", "turn on/off visual bell" },
-{ "-/+pob", "turn on/off pop on bell" },
-#if OPT_WIDE_CHARS
-{ "-/+wc", "turn on/off wide-character mode" },
-{ "-/+mk_width", "turn on/off simple width convention" },
-{ "-/+cjk_width", "turn on/off legacy CJK width convention" },
-#endif
-{ "-/+wf", "turn on/off wait for map before command exec" },
-{ "-e command args ...", "command to execute" },
-#if OPT_TEK4014
-{ "%geom", "Tek window geometry" },
-#endif
-{ "#geom", "icon window geometry" },
-{ "-T string", "title name for window" },
-{ "-n string", "icon name for window" },
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
-{ "-C", "intercept console messages" },
-#else
-{ "-C", "intercept console messages (not supported)" },
-#endif
-{ "-Sccn", "slave mode on \"ttycc\", file descriptor \"n\"" },
-{ "-into windowId", "use the window id given to -into as the parent window rather than the default root window" },
-#if OPT_ZICONBEEP
-{ "-ziconbeep percent", "beep and flag icon of window having hidden output" },
-#endif
-#if OPT_SAME_NAME
-{ "-/+samename", "turn on/off the no-flicker option for title and icon name" },
-#endif
-#if OPT_SESSION_MGT
-{ "-/+sm", "turn on/off the session-management support" },
-#endif
-{ NULL, NULL }};
-/* *INDENT-ON* */
-
-static char *message[] =
-{
- "Fonts should be fixed width and, if both normal and bold are specified, should",
- "have the same size. If only a normal font is specified, it will be used for",
- "both normal and bold text (by doing overstriking). The -e option, if given,",
- "must appear at the end of the command line, otherwise the user's default shell",
- "will be started. Options that start with a plus sign (+) restore the default.",
- NULL};
-
-/*
- * Decode a key-definition. This combines the termcap and ttyModes, for
- * comparison. Note that octal escapes in ttyModes are done by the normal
- * resource translation. Also, ttyModes allows '^-' as a synonym for disabled.
- */
-static int
-decode_keyvalue(char **ptr, int termcap)
-{
- char *string = *ptr;
- int value = -1;
-
- TRACE(("...decode '%s'\n", string));
- if (*string == '^') {
- switch (*++string) {
- case '?':
- value = A2E(127);
- break;
- case '-':
- if (!termcap) {
- errno = 0;
-#if defined(_POSIX_VDISABLE) && defined(HAVE_UNISTD_H)
- value = _POSIX_VDISABLE;
-#endif
-#if defined(_PC_VDISABLE)
- if (value == -1) {
- value = fpathconf(0, _PC_VDISABLE);
- if (value == -1) {
- if (errno != 0)
- break; /* skip this (error) */
- value = 0377;
- }
- }
-#elif defined(VDISABLE)
- if (value == -1)
- value = VDISABLE;
-#endif
- break;
- }
- /* FALLTHRU */
- default:
- value = CONTROL(*string);
- break;
- }
- ++string;
- } else if (termcap && (*string == '\\')) {
- char *d;
- int temp = strtol(string + 1, &d, 8);
- if (temp > 0 && d != string) {
- value = temp;
- string = d;
- }
- } else {
- value = CharOf(*string);
- ++string;
- }
- *ptr = string;
- return value;
-}
-
-/*
- * If we're linked to terminfo, tgetent() will return an empty buffer. We
- * cannot use that to adjust the $TERMCAP variable.
- */
-static Bool
-get_termcap(char *name, char *buffer, char *resized)
-{
- TScreen *screen = &term->screen;
-
- *buffer = 0; /* initialize, in case we're using terminfo's tgetent */
-
- if (name != 0) {
- if (tgetent(buffer, name) == 1) {
- TRACE(("get_termcap(%s) succeeded (%s)\n", name,
- (*buffer
- ? "ok:termcap, we can update $TERMCAP"
- : "assuming this is terminfo")));
- if (*buffer) {
- if (!TEK4014_ACTIVE(screen)) {
- resize(screen, buffer, resized);
- }
- }
- return True;
- } else {
- *buffer = 0; /* just in case */
- }
- }
- return False;
-}
-
-static int
-abbrev(char *tst, char *cmp, size_t need)
-{
- size_t len = strlen(tst);
- return ((len >= need) && (!strncmp(tst, cmp, len)));
-}
-
-static void
-Syntax(char *badOption)
-{
- OptionHelp *opt;
- OptionHelp *list = sortedOpts(xtermOptions, optionDescList, XtNumber(optionDescList));
- int col;
-
- fprintf(stderr, "%s: bad command line option \"%s\"\r\n\n",
- ProgramName, badOption);
-
- fprintf(stderr, "usage: %s", ProgramName);
- col = 8 + strlen(ProgramName);
- for (opt = list; opt->opt; opt++) {
- int len = 3 + strlen(opt->opt); /* space [ string ] */
- if (col + len > 79) {
- fprintf(stderr, "\r\n "); /* 3 spaces */
- col = 3;
- }
- fprintf(stderr, " [%s]", opt->opt);
- col += len;
- }
-
- fprintf(stderr, "\r\n\nType %s -help for a full description.\r\n\n",
- ProgramName);
- exit(1);
-}
-
-static void
-Version(void)
-{
- printf("%s\n", xtermVersion());
- fflush(stdout);
-}
-
-static void
-Help(void)
-{
- OptionHelp *opt;
- OptionHelp *list = sortedOpts(xtermOptions, optionDescList, XtNumber(optionDescList));
- char **cpp;
-
- printf("%s usage:\n %s [-options ...] [-e command args]\n\n",
- xtermVersion(), ProgramName);
- printf("where options include:\n");
- for (opt = list; opt->opt; opt++) {
- printf(" %-28s %s\n", opt->opt, opt->desc);
- }
-
- putchar('\n');
- for (cpp = message; *cpp; cpp++)
- puts(*cpp);
- putchar('\n');
- fflush(stdout);
-}
-
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
-/* ARGSUSED */
-static Boolean
-ConvertConsoleSelection(Widget w GCC_UNUSED,
- Atom * selection GCC_UNUSED,
- Atom * target GCC_UNUSED,
- Atom * type GCC_UNUSED,
- XtPointer *value GCC_UNUSED,
- unsigned long *length GCC_UNUSED,
- int *format GCC_UNUSED)
-{
- /* we don't save console output, so can't offer it */
- return False;
-}
-#endif /* TIOCCONS */
-
-#if OPT_SESSION_MGT
-static void
-die_callback(Widget w GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- XtPointer call_data GCC_UNUSED)
-{
- Cleanup(0);
-}
-
-static void
-save_callback(Widget w GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- XtPointer call_data)
-{
- XtCheckpointToken token = (XtCheckpointToken) call_data;
- /* we have nothing to save */
- token->save_success = True;
-}
-#endif /* OPT_SESSION_MGT */
-
-/*
- * DeleteWindow(): Action proc to implement ICCCM delete_window.
- */
-/* ARGSUSED */
-static void
-DeleteWindow(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED)
-{
-#if OPT_TEK4014
- if (w == toplevel) {
- if (term->screen.Tshow)
- hide_vt_window();
- else
- do_hangup(w, (XtPointer) 0, (XtPointer) 0);
- } else if (term->screen.Vshow)
- hide_tek_window();
- else
-#endif
- do_hangup(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-/* ARGSUSED */
-static void
-KeyboardMapping(Widget w GCC_UNUSED,
- XEvent * event,
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED)
-{
- switch (event->type) {
- case MappingNotify:
- XRefreshKeyboardMapping(&event->xmapping);
- break;
- }
-}
-
-static XtActionsRec actionProcs[] =
-{
- {"DeleteWindow", DeleteWindow},
- {"KeyboardMapping", KeyboardMapping},
-};
-
-/*
- * Some platforms use names such as /dev/tty01, others /dev/pts/1. Parse off
- * the "tty01" or "pts/1" portion, and return that for use as an identifier for
- * utmp.
- */
-static char *
-my_pty_name(char *device)
-{
- size_t len = strlen(device);
- Bool name = False;
-
- while (len != 0) {
- int ch = device[len - 1];
- if (isdigit(ch)) {
- len--;
- } else if (ch == '/') {
- if (name)
- break;
- len--;
- } else if (isalpha(ch)) {
- name = True;
- len--;
- } else {
- break;
- }
- }
- TRACE(("my_pty_name(%s) -> '%s'\n", device, device + len));
- return device + len;
-}
-
-/*
- * If the name contains a '/', it is a "pts/1" case. Otherwise, return the
- * last few characters for a utmp identifier.
- */
-static char *
-my_pty_id(char *device)
-{
- char *name = my_pty_name(device);
- char *leaf = x_basename(name);
-
- if (name == leaf) { /* no '/' in the name */
- int len = strlen(leaf);
- if (PTYCHARLEN < len)
- leaf = leaf + (len - PTYCHARLEN);
- }
- TRACE(("my_pty_id (%s) -> '%s'\n", device, leaf));
- return leaf;
-}
-
-/*
- * Set the tty/pty identifier
- */
-static void
-set_pty_id(char *device, char *id)
-{
- char *name = my_pty_name(device);
- char *leaf = x_basename(name);
-
- if (name == leaf) {
- strcpy(my_pty_id(device), id);
- } else {
- strcpy(leaf, id);
- }
- TRACE(("set_pty_id(%s) -> '%s'\n", id, device));
-}
-
-/*
- * The original -S option accepts two characters to identify the pty, and a
- * file-descriptor (assumed to be nonzero). That is not general enough, so we
- * check first if the option contains a '/' to delimit the two fields, and if
- * not, fall-thru to the original logic.
- */
-static Bool
-ParseSccn(char *option)
-{
- char *leaf = x_basename(option);
- Bool code = False;
-
- if (leaf != option) {
- if (leaf - option > 0
- && isdigit(CharOf(*leaf))
- && sscanf(leaf, "%d", &am_slave) == 1) {
- size_t len = leaf - option - 1;
- /*
- * If we have a slash, we only care about the part after the slash,
- * which is a file-descriptor. The part before the slash can be
- * the /dev/pts/XXX value, but since we do not need to reopen it,
- * it is useful mainly for display in a "ps -ef".
- */
- strncpy(passedPty, option, len);
- passedPty[len] = 0;
- code = True;
- }
- } else {
- code = (sscanf(option, "%c%c%d",
- passedPty, passedPty + 1, &am_slave) == 3);
- }
- TRACE(("ParseSccn(%s) = '%s' %d (%s)\n", option,
- passedPty, am_slave, code ? "OK" : "ERR"));
- return code;
-}
-
-#if defined(USE_SYSV_UTMP) && !defined(USE_UTEMPTER)
-/*
- * From "man utmp":
- * xterm and other terminal emulators directly create a USER_PROCESS record
- * and generate the ut_id by using the last two letters of /dev/ttyp%c or by
- * using p%d for /dev/pts/%d. If they find a DEAD_PROCESS for this id, they
- * recycle it, otherwise they create a new entry. If they can, they will mark
- * it as DEAD_PROCESS on exiting and it is advised that they null ut_line,
- * ut_time, ut_user and ut_host as well.
- *
- * Generally ut_id allows no more than 3 characters (plus null), even if the
- * pty implementation allows more than 3 digits.
- */
-static char *
-my_utmp_id(char *device)
-{
- typedef struct UTMP_STR UTMP_STRUCT;
-#define UTIDSIZE (sizeof(((UTMP_STRUCT *)NULL)->ut_id))
- static char result[UTIDSIZE + 1];
-
-#if defined(__SCO__) || defined(__UNIXWARE__)
- /*
- * Legend does not support old-style pty's, has no related compatibility
- * issues, and can use the available space in ut_id differently from the
- * default convention.
- *
- * This scheme is intended to avoid conflicts both with other users of
- * utmpx as well as between multiple xterms. First, Legend uses all of the
- * characters of ut_id, and adds no terminating NUL is required (the
- * default scheme may add a trailing NUL). Second, all xterm entries will
- * start with the letter 'x' followed by three digits, which will be the
- * last three digits of the device name, regardless of the format of the
- * device name, with leading 0's added where necessary. For instance, an
- * xterm on /dev/pts/3 will have a ut_id of x003; an xterm on /dev/pts123
- * will have a ut_id of x123. Under the other convention, /dev/pts/3 would
- * have a ut_id of p3 and /dev/pts123 would have a ut_id of p123.
- */
- int len, n;
-
- len = strlen(device);
- n = UTIDSIZE;
- result[n] = '\0';
- while ((n > 0) && (len > 0) && isdigit(device[len - 1]))
- result[--n] = device[--len];
- while (n > 0)
- result[--n] = '0';
- result[0] = 'x';
-#else
- char *name = my_pty_name(device);
- char *leaf = x_basename(name);
- size_t len = strlen(leaf);
-
- if ((UTIDSIZE - 1) < len)
- leaf = leaf + (len - (UTIDSIZE - 1));
- sprintf(result, "p%s", leaf);
-#endif
-
- TRACE(("my_utmp_id (%s) -> '%s'\n", device, result));
- return result;
-}
-#endif /* USE_SYSV_UTMP */
-
-#ifdef USE_POSIX_SIGNALS
-
-typedef void (*sigfunc) (int);
-
-/* make sure we sure we ignore SIGCHLD for the cases parent
- has just been stopped and not actually killed */
-
-static sigfunc
-posix_signal(int signo, sigfunc func)
-{
- struct sigaction act, oact;
-
- act.sa_handler = func;
- sigemptyset(&act.sa_mask);
-#ifdef SA_RESTART
- act.sa_flags = SA_NOCLDSTOP | SA_RESTART;
-#else
- act.sa_flags = SA_NOCLDSTOP;
-#endif
- if (sigaction(signo, &act, &oact) < 0)
- return (SIG_ERR);
- return (oact.sa_handler);
-}
-
-#endif /* linux && _POSIX_SOURCE */
-
-int
-main(int argc, char *argv[]ENVP_ARG)
-{
- Widget form_top, menu_top;
- TScreen *screen;
- int mode;
- char *my_class = DEFCLASS;
- Window winToEmbedInto = None;
-
-#ifdef DISABLE_SETUID
- if (seteuid(getuid()) == -1)
- exit(2);
- if (setuid(getuid()) == -1)
- exit(2);
-#endif
-
- ProgramName = argv[0];
-
- /* extra length in case longer tty name like /dev/ttyq255 */
- ttydev = TypeMallocN(char, sizeof(TTYDEV) + 80);
-#ifdef USE_PTY_DEVICE
- ptydev = TypeMallocN(char, sizeof(PTYDEV) + 80);
- if (!ttydev || !ptydev)
-#else
- if (!ttydev)
-#endif
- {
- fprintf(stderr,
- "%s: unable to allocate memory for ttydev or ptydev\n",
- ProgramName);
- exit(1);
- }
- strcpy(ttydev, TTYDEV);
-#ifdef USE_PTY_DEVICE
- strcpy(ptydev, PTYDEV);
-#endif
-
-#if defined(USE_UTMP_SETGID)
- get_pty(NULL, NULL);
- if (seteuid(getuid()) == -1) {
- fprintf(stderr,
- "%s: unable to change back euid\n", ProgramName);
- exit(1);
- }
- if (setuid(getuid()) == -1) {
- fprintf(stderr,
- "%s: unable to change back uid\n", ProgramName);
- exit(1);
- }
-#define get_pty(pty, from) really_get_pty(pty, from)
-#endif
-
- /* Do these first, since we may not be able to open the display */
- TRACE_OPTS(xtermOptions, optionDescList, XtNumber(optionDescList));
- TRACE_ARGV("Before XtOpenApplication", argv);
- if (argc > 1) {
- int n;
- unsigned unique = 2;
- Bool quit = True;
-
- for (n = 1; n < argc; n++) {
- TRACE(("parsing %s\n", argv[n]));
- if (abbrev(argv[n], "-version", unique)) {
- Version();
- } else if (abbrev(argv[n], "-help", unique)) {
- Help();
- } else if (abbrev(argv[n], "-class", 3)) {
- if ((my_class = argv[++n]) == 0) {
- Help();
- } else {
- quit = False;
- }
- unique = 3;
- } else {
- quit = False;
- unique = 3;
- }
- }
- if (quit)
- exit(0);
- }
-
- /* This dumps core on HP-UX 9.05 with X11R5 */
-#if OPT_I18N_SUPPORT
- XtSetLanguageProc(NULL, NULL, NULL);
-#endif
-
-#ifdef TERMIO_STRUCT /* { */
- /* Initialization is done here rather than above in order
- * to prevent any assumptions about the order of the contents
- * of the various terminal structures (which may change from
- * implementation to implementation).
- */
- d_tio.c_iflag = ICRNL | IXON;
-#ifdef TAB3
- d_tio.c_oflag = OPOST | ONLCR | TAB3;
-#else
-#ifdef ONLCR
- d_tio.c_oflag = OPOST | ONLCR;
-#else
- d_tio.c_oflag = OPOST;
-#endif
-#endif
-#if defined(macII) || defined(ATT) || defined(CRAY) /* { */
- d_tio.c_cflag = VAL_LINE_SPEED | CS8 | CREAD | PARENB | HUPCL;
- d_tio.c_lflag = ISIG | ICANON | ECHO | ECHOE | ECHOK;
-#ifdef ECHOKE
- d_tio.c_lflag |= ECHOKE | IEXTEN;
-#endif
-#ifdef ECHOCTL
- d_tio.c_lflag |= ECHOCTL | IEXTEN;
-#endif
-
-#ifndef USE_TERMIOS /* { */
- d_tio.c_line = 0;
-#endif /* } */
-
- d_tio.c_cc[VINTR] = CINTR;
- d_tio.c_cc[VQUIT] = CQUIT;
- d_tio.c_cc[VERASE] = CERASE;
- d_tio.c_cc[VKILL] = CKILL;
- d_tio.c_cc[VEOF] = CEOF;
- d_tio.c_cc[VEOL] = CNUL;
- d_tio.c_cc[VEOL2] = CNUL;
-#ifdef VSWTCH
- d_tio.c_cc[VSWTCH] = CNUL;
-#endif
-
-#if defined(USE_TERMIOS) || defined(USE_POSIX_TERMIOS) /* { */
- d_tio.c_cc[VSUSP] = CSUSP;
-#ifdef VDSUSP
- d_tio.c_cc[VDSUSP] = CDSUSP;
-#endif
- d_tio.c_cc[VREPRINT] = CRPRNT;
- d_tio.c_cc[VDISCARD] = CFLUSH;
- d_tio.c_cc[VWERASE] = CWERASE;
- d_tio.c_cc[VLNEXT] = CLNEXT;
- d_tio.c_cc[VMIN] = 1;
- d_tio.c_cc[VTIME] = 0;
-#endif /* } */
-#ifdef HAS_LTCHARS /* { */
- d_ltc.t_suspc = CSUSP; /* t_suspc */
- d_ltc.t_dsuspc = CDSUSP; /* t_dsuspc */
- d_ltc.t_rprntc = CRPRNT;
- d_ltc.t_flushc = CFLUSH;
- d_ltc.t_werasc = CWERASE;
- d_ltc.t_lnextc = CLNEXT;
-#endif /* } HAS_LTCHARS */
-#ifdef TIOCLSET /* { */
- d_lmode = 0;
-#endif /* } TIOCLSET */
-#else /* }{ else !macII, ATT, CRAY */
-#ifndef USE_POSIX_TERMIOS
-#ifdef BAUD_0 /* { */
- d_tio.c_cflag = CS8 | CREAD | PARENB | HUPCL;
-#else /* }{ !BAUD_0 */
- d_tio.c_cflag = VAL_LINE_SPEED | CS8 | CREAD | PARENB | HUPCL;
-#endif /* } !BAUD_0 */
-#else /* USE_POSIX_TERMIOS */
- d_tio.c_cflag = CS8 | CREAD | PARENB | HUPCL;
- cfsetispeed(&d_tio, VAL_LINE_SPEED);
- cfsetospeed(&d_tio, VAL_LINE_SPEED);
-#endif
- d_tio.c_lflag = ISIG | ICANON | ECHO | ECHOE | ECHOK;
-#ifdef ECHOKE
- d_tio.c_lflag |= ECHOKE | IEXTEN;
-#endif
-#ifdef ECHOCTL
- d_tio.c_lflag |= ECHOCTL | IEXTEN;
-#endif
-#ifndef USE_POSIX_TERMIOS
-#ifdef NTTYDISC
- d_tio.c_line = NTTYDISC;
-#else
- d_tio.c_line = 0;
-#endif
-#endif /* USE_POSIX_TERMIOS */
-#ifdef __sgi
- d_tio.c_cflag &= ~(HUPCL | PARENB);
- d_tio.c_iflag |= BRKINT | ISTRIP | IGNPAR;
-#endif
-#ifdef __MVS__
- d_tio.c_cflag &= ~(HUPCL | PARENB);
-#endif
- d_tio.c_cc[VINTR] = CONTROL('C'); /* '^C' */
- d_tio.c_cc[VERASE] = 0x7f; /* DEL */
- d_tio.c_cc[VKILL] = CONTROL('U'); /* '^U' */
- d_tio.c_cc[VQUIT] = CQUIT; /* '^\' */
- d_tio.c_cc[VEOF] = CEOF; /* '^D' */
- d_tio.c_cc[VEOL] = CEOL; /* '^@' */
- d_tio.c_cc[VMIN] = 1;
- d_tio.c_cc[VTIME] = 0;
-#ifdef VSWTCH
- d_tio.c_cc[VSWTCH] = CSWTCH; /* usually '^Z' */
-#endif
-#ifdef VLNEXT
- d_tio.c_cc[VLNEXT] = CLNEXT;
-#endif
-#ifdef VWERASE
- d_tio.c_cc[VWERASE] = CWERASE;
-#endif
-#ifdef VREPRINT
- d_tio.c_cc[VREPRINT] = CRPRNT;
-#endif
-#ifdef VRPRNT
- d_tio.c_cc[VRPRNT] = CRPRNT;
-#endif
-#ifdef VDISCARD
- d_tio.c_cc[VDISCARD] = CFLUSH;
-#endif
-#ifdef VFLUSHO
- d_tio.c_cc[VFLUSHO] = CFLUSH;
-#endif
-#ifdef VSTOP
- d_tio.c_cc[VSTOP] = CSTOP;
-#endif
-#ifdef VSTART
- d_tio.c_cc[VSTART] = CSTART;
-#endif
-#ifdef VSUSP
- d_tio.c_cc[VSUSP] = CSUSP;
-#endif
-#ifdef VDSUSP
- d_tio.c_cc[VDSUSP] = CDSUSP;
-#endif
-#ifdef VSTATUS
- d_tio.c_cc[VSTATUS] = CSTATUS;
-#endif
- /* now, try to inherit tty settings */
- {
- int i;
-
- for (i = 0; i <= 2; i++) {
- TERMIO_STRUCT deftio;
- if (ttyGetAttr(i, &deftio) == 0) {
- d_tio.c_cc[VINTR] = deftio.c_cc[VINTR];
- d_tio.c_cc[VQUIT] = deftio.c_cc[VQUIT];
- d_tio.c_cc[VERASE] = deftio.c_cc[VERASE];
- d_tio.c_cc[VKILL] = deftio.c_cc[VKILL];
- d_tio.c_cc[VEOF] = deftio.c_cc[VEOF];
- d_tio.c_cc[VEOL] = deftio.c_cc[VEOL];
-#ifdef VSWTCH
- d_tio.c_cc[VSWTCH] = deftio.c_cc[VSWTCH];
-#endif
-#ifdef VEOL2
- d_tio.c_cc[VEOL2] = deftio.c_cc[VEOL2];
-#endif
-#ifdef VLNEXT
- d_tio.c_cc[VLNEXT] = deftio.c_cc[VLNEXT];
-#endif
-#ifdef VWERASE
- d_tio.c_cc[VWERASE] = deftio.c_cc[VWERASE];
-#endif
-#ifdef VREPRINT
- d_tio.c_cc[VREPRINT] = deftio.c_cc[VREPRINT];
-#endif
-#ifdef VRPRNT
- d_tio.c_cc[VRPRNT] = deftio.c_cc[VRPRNT];
-#endif
-#ifdef VDISCARD
- d_tio.c_cc[VDISCARD] = deftio.c_cc[VDISCARD];
-#endif
-#ifdef VFLUSHO
- d_tio.c_cc[VFLUSHO] = deftio.c_cc[VFLUSHO];
-#endif
-#ifdef VSTOP
- d_tio.c_cc[VSTOP] = deftio.c_cc[VSTOP];
-#endif
-#ifdef VSTART
- d_tio.c_cc[VSTART] = deftio.c_cc[VSTART];
-#endif
-#ifdef VSUSP
- d_tio.c_cc[VSUSP] = deftio.c_cc[VSUSP];
-#endif
-#ifdef VDSUSP
- d_tio.c_cc[VDSUSP] = deftio.c_cc[VDSUSP];
-#endif
-#ifdef VSTATUS
- d_tio.c_cc[VSTATUS] = deftio.c_cc[VSTATUS];
-#endif
- break;
- }
- }
- }
-#ifdef HAS_LTCHARS /* { */
- d_ltc.t_suspc = CharOf('\000'); /* t_suspc */
- d_ltc.t_dsuspc = CharOf('\000'); /* t_dsuspc */
- d_ltc.t_rprntc = CharOf('\377'); /* reserved... */
- d_ltc.t_flushc = CharOf('\377');
- d_ltc.t_werasc = CharOf('\377');
- d_ltc.t_lnextc = CharOf('\377');
-#endif /* } HAS_LTCHARS */
-#if defined(USE_TERMIOS) || defined(USE_POSIX_TERMIOS) /* { */
- d_tio.c_cc[VSUSP] = CSUSP;
-#ifdef VDSUSP
- d_tio.c_cc[VDSUSP] = CharOf('\000');
-#endif
-#ifdef VSTATUS
- d_tio.c_cc[VSTATUS] = CharOf('\377');
-#endif
-#ifdef VREPRINT
- d_tio.c_cc[VREPRINT] = CharOf('\377');
-#endif
-#ifdef VDISCARD
- d_tio.c_cc[VDISCARD] = CharOf('\377');
-#endif
-#ifdef VWERASE
- d_tio.c_cc[VWERASE] = CharOf('\377');
-#endif
-#ifdef VLNEXT
- d_tio.c_cc[VLNEXT] = CharOf('\377');
-#endif
-#endif /* } USE_TERMIOS */
-#ifdef TIOCLSET /* { */
- d_lmode = 0;
-#endif /* } TIOCLSET */
-#endif /* } macII, ATT, CRAY */
-#endif /* } TERMIO_STRUCT */
-
- /* Init the Toolkit. */
- {
-#ifdef HAS_SAVED_IDS_AND_SETEUID
- uid_t euid = geteuid();
- gid_t egid = getegid();
- uid_t ruid = getuid();
- gid_t rgid = getgid();
-
- if (setegid(rgid) == -1) {
-#ifdef __MVS__
- if (!(errno == EMVSERR)) /* could happen if _BPX_SHAREAS=REUSE */
-#endif
- (void) fprintf(stderr, "setegid(%d): %s\n",
- (int) rgid, strerror(errno));
- }
-
- if (seteuid(ruid) == -1) {
-#ifdef __MVS__
- if (!(errno == EMVSERR))
-#endif
- (void) fprintf(stderr, "seteuid(%d): %s\n",
- (int) ruid, strerror(errno));
- }
-#endif
-
- XtSetErrorHandler(xt_error);
-#if OPT_SESSION_MGT
- toplevel = XtOpenApplication(&app_con, my_class,
- optionDescList,
- XtNumber(optionDescList),
- &argc, argv, fallback_resources,
- sessionShellWidgetClass,
- NULL, 0);
-#else
- toplevel = XtAppInitialize(&app_con, my_class,
- optionDescList,
- XtNumber(optionDescList),
- &argc, argv, fallback_resources,
- NULL, 0);
-#endif /* OPT_SESSION_MGT */
- XtSetErrorHandler((XtErrorHandler) 0);
-
- XtGetApplicationResources(toplevel, (XtPointer) &resource,
- application_resources,
- XtNumber(application_resources), NULL, 0);
- TRACE_XRES();
-
-#ifdef HAS_SAVED_IDS_AND_SETEUID
- if (seteuid(euid) == -1) {
-#ifdef __MVS__
- if (!(errno == EMVSERR))
-#endif
- (void) fprintf(stderr, "seteuid(%d): %s\n",
- (int) euid, strerror(errno));
- }
-
- if (setegid(egid) == -1) {
-#ifdef __MVS__
- if (!(errno == EMVSERR))
-#endif
- (void) fprintf(stderr, "setegid(%d): %s\n",
- (int) egid, strerror(errno));
- }
-#endif
-
-#if defined(USE_UTMP_SETGID)
- if (resource.utmpInhibit) {
- /* Can totally revoke group privs */
- setegid(getgid());
- setgid(getgid());
- }
-#endif
- }
-
- waiting_for_initial_map = resource.wait_for_map;
-
- /*
- * ICCCM delete_window.
- */
- XtAppAddActions(app_con, actionProcs, XtNumber(actionProcs));
-
- /*
- * fill in terminal modes
- */
- if (resource.tty_modes) {
- int n = parse_tty_modes(resource.tty_modes, ttymodelist);
- if (n < 0) {
- fprintf(stderr, "%s: bad tty modes \"%s\"\n",
- ProgramName, resource.tty_modes);
- } else if (n > 0) {
- override_tty_modes = 1;
- }
- }
-#if OPT_ZICONBEEP
- zIconBeep = resource.zIconBeep;
- zIconBeep_flagged = False;
- if (zIconBeep > 100 || zIconBeep < -100) {
- zIconBeep = 0; /* was 100, but I prefer to defaulting off. */
- fprintf(stderr,
- "a number between -100 and 100 is required for zIconBeep. 0 used by default\n");
- }
-#endif /* OPT_ZICONBEEP */
-#if OPT_SAME_NAME
- sameName = resource.sameName;
-#endif
- hold_screen = resource.hold_screen ? 1 : 0;
- xterm_name = resource.xterm_name;
- if (strcmp(xterm_name, "-") == 0)
- xterm_name = DFT_TERMTYPE;
- if (resource.icon_geometry != NULL) {
- int scr, junk;
- int ix, iy;
- Arg args[2];
-
- for (scr = 0; /* yyuucchh */
- XtScreen(toplevel) != ScreenOfDisplay(XtDisplay(toplevel), scr);
- scr++) ;
-
- args[0].name = XtNiconX;
- args[1].name = XtNiconY;
- XGeometry(XtDisplay(toplevel), scr, resource.icon_geometry, "",
- 0, 0, 0, 0, 0, &ix, &iy, &junk, &junk);
- args[0].value = (XtArgVal) ix;
- args[1].value = (XtArgVal) iy;
- XtSetValues(toplevel, args, 2);
- }
-
- XtSetValues(toplevel, ourTopLevelShellArgs,
- number_ourTopLevelShellArgs);
-
-#if OPT_WIDE_CHARS
- /* seems as good a place as any */
- init_classtab();
-#endif
-
- /* Parse the rest of the command line */
- TRACE_ARGV("After XtOpenApplication", argv);
- for (argc--, argv++; argc > 0; argc--, argv++) {
-#ifdef VMS
- if (**argv != '-')
- Syntax(*argv);
-#else
- if (**argv != '-') {
- if (argc > 1)
- Syntax(*argv);
- if (command_to_exec == 0) /* if no "-e" option */
- explicit_shname = xtermFindShell(*argv, True);
- continue;
- }
-#endif
-
- TRACE(("parsing %s\n", argv[0]));
- switch (argv[0][1]) {
- case 'h': /* -help */
- Help();
- continue;
- case 'v': /* -version */
- Version();
- continue;
- case 'C':
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
-#ifndef __sgi
- {
- struct stat sbuf;
-
- /* Must be owner and have read/write permission.
- xdm cooperates to give the console the right user. */
- if (!stat("/dev/console", &sbuf) &&
- (sbuf.st_uid == getuid()) &&
- !access("/dev/console", R_OK | W_OK)) {
- Console = True;
- } else
- Console = False;
- }
-#else /* __sgi */
- Console = True;
-#endif /* __sgi */
-#endif /* TIOCCONS */
- continue;
- case 'S':
- if (!ParseSccn(*argv + 2))
- Syntax(*argv);
- continue;
-#ifdef DEBUG
- case 'D':
- debug = True;
- continue;
-#endif /* DEBUG */
- case 'c': /* -class param */
- if (strcmp(argv[0] + 1, "class") == 0)
- argc--, argv++;
- else
- Syntax(*argv);
- continue;
- case 'e':
- if (argc <= 1)
- Syntax(*argv);
- command_to_exec = ++argv;
- break;
- case 'i':
- if (argc <= 1) {
- Syntax(*argv);
- } else {
- char *endPtr;
- --argc;
- ++argv;
- winToEmbedInto = (Window) strtol(argv[0], &endPtr, 10);
- }
- continue;
-
- default:
- Syntax(*argv);
- }
- break;
- }
-
- SetupMenus(toplevel, &form_top, &menu_top);
-
- term = (XtermWidget) XtVaCreateManagedWidget("vt100", xtermWidgetClass,
- form_top,
-#if OPT_TOOLBAR
- XtNmenuBar, menu_top,
- XtNresizable, True,
- XtNfromVert, menu_top,
- XtNleft, XawChainLeft,
- XtNright, XawChainRight,
- XtNtop, XawChainTop,
- XtNbottom, XawChainBottom,
-#endif
- (XtPointer) 0);
- decode_keyboard_type(&resource);
-
- screen = &term->screen;
- screen->inhibit = 0;
-
-#ifdef ALLOWLOGGING
- if (term->misc.logInhibit)
- screen->inhibit |= I_LOG;
-#endif
- if (term->misc.signalInhibit)
- screen->inhibit |= I_SIGNAL;
-#if OPT_TEK4014
- if (term->misc.tekInhibit)
- screen->inhibit |= I_TEK;
-#endif
-
- /*
- * We might start by showing the tek4014 window.
- */
-#if OPT_TEK4014
- if (screen->inhibit & I_TEK)
- screen->TekEmu = False;
-
- if (screen->TekEmu && !TekInit())
- SysError(ERROR_INIT);
-#endif
-
- /*
- * Start the toolbar at this point, after the first window has been setup.
- */
-#if OPT_TOOLBAR
- ShowToolbar(resource.toolBar);
-#endif
-
-#if OPT_SESSION_MGT
- if (resource.sessionMgt) {
- TRACE(("Enabling session-management callbacks\n"));
- XtAddCallback(toplevel, XtNdieCallback, die_callback, NULL);
- XtAddCallback(toplevel, XtNsaveCallback, save_callback, NULL);
- }
-#endif
-
- /*
- * Set title and icon name if not specified
- */
- if (command_to_exec) {
- Arg args[2];
-
- if (!resource.title) {
- if (command_to_exec) {
- resource.title = x_basename(command_to_exec[0]);
- } /* else not reached */
- }
-
- if (!resource.icon_name)
- resource.icon_name = resource.title;
- XtSetArg(args[0], XtNtitle, resource.title);
- XtSetArg(args[1], XtNiconName, resource.icon_name);
-
- TRACE(("setting:\n\ttitle \"%s\"\n\ticon \"%s\"\n\tbased on command \"%s\"\n",
- resource.title,
- resource.icon_name,
- *command_to_exec));
-
- XtSetValues(toplevel, args, 2);
- }
-#if OPT_LUIT_PROG
- if (term->misc.callfilter) {
- int u = (term->misc.use_encoding ? 2 : 0);
- if (command_to_exec) {
- int n;
- char **c;
- for (n = 0, c = command_to_exec; *c; n++, c++) ;
- c = TypeMallocN(char *, n + 3 + u);
- if (c == NULL)
- SysError(ERROR_LUMALLOC);
- memcpy(c + 2 + u, command_to_exec, (n + 1) * sizeof(char *));
- c[0] = term->misc.localefilter;
- if (u) {
- c[1] = "-encoding";
- c[2] = term->misc.locale_str;
- }
- c[1 + u] = "--";
- command_to_exec_with_luit = c;
- } else {
- static char *luit[4];
- luit[0] = term->misc.localefilter;
- if (u) {
- luit[1] = "-encoding";
- luit[2] = term->misc.locale_str;
- luit[3] = NULL;
- } else
- luit[1] = NULL;
- command_to_exec_with_luit = luit;
- }
- }
-#endif
-
-#ifdef DEBUG
- {
- /* Set up stderr properly. Opening this log file cannot be
- done securely by a privileged xterm process (although we try),
- so the debug feature is disabled by default. */
- char dbglogfile[45];
- int i = -1;
- if (debug) {
- timestamp_filename(dbglogfile, "xterm.debug.log.");
- if (creat_as(getuid(), getgid(), False, dbglogfile, 0666)) {
- i = open(dbglogfile, O_WRONLY | O_TRUNC);
- }
- }
- if (i >= 0) {
- dup2(i, 2);
-
- /* mark this file as close on exec */
- (void) fcntl(i, F_SETFD, 1);
- }
- }
-#endif /* DEBUG */
-
- /* open a terminal for client */
- get_terminal();
-
- spawn();
-
-#ifndef VMS
- /* Child process is out there, let's catch its termination */
-
-#ifdef USE_POSIX_SIGNALS
- (void) posix_signal(SIGCHLD, reapchild);
-#else
- (void) signal(SIGCHLD, reapchild);
-#endif
- /* Realize procs have now been executed */
-
- if (am_slave >= 0) { /* Write window id so master end can read and use */
- char buf[80];
-
- buf[0] = '\0';
- sprintf(buf, "%lx\n", XtWindow(SHELL_OF(CURRENT_EMU(screen))));
- write(screen->respond, buf, strlen(buf));
- }
-#ifdef AIXV3
-#if (OSMAJORVERSION < 4)
- /* In AIXV3, xterms started from /dev/console have CLOCAL set.
- * This means we need to clear CLOCAL so that SIGHUP gets sent
- * to the slave-pty process when xterm exits.
- */
-
- {
- TERMIO_STRUCT tio;
-
- if (ttyGetAttr(screen->respond, &tio) == -1)
- SysError(ERROR_TIOCGETP);
-
- tio.c_cflag &= ~(CLOCAL);
-
- if (ttySetAttr(screen->respond, &tio) == -1)
- SysError(ERROR_TIOCSETP);
- }
-#endif
-#endif
-#if defined(USE_ANY_SYSV_TERMIO) || defined(__MVS__)
- if (0 > (mode = fcntl(screen->respond, F_GETFL, 0)))
- SysError(ERROR_F_GETFL);
-#ifdef O_NDELAY
- mode |= O_NDELAY;
-#else
- mode |= O_NONBLOCK;
-#endif /* O_NDELAY */
- if (fcntl(screen->respond, F_SETFL, mode))
- SysError(ERROR_F_SETFL);
-#else /* !USE_ANY_SYSV_TERMIO */
- mode = 1;
- if (ioctl(screen->respond, FIONBIO, (char *) &mode) == -1)
- SysError(ERROR_FIONBIO);
-#endif /* USE_ANY_SYSV_TERMIO, etc */
-
- /* The erase character is used to delete the current completion */
-#if OPT_DABBREV
-#ifdef TERMIO_STRUCT
- screen->dabbrev_erase_char = d_tio.c_cc[VERASE];
-#else
- screen->dabbrev_erase_char = d_sg.sg_erase;
-#endif
-#endif
-
- FD_ZERO(&pty_mask);
- FD_ZERO(&X_mask);
- FD_ZERO(&Select_mask);
- FD_SET(screen->respond, &pty_mask);
- FD_SET(ConnectionNumber(screen->display), &X_mask);
- FD_SET(screen->respond, &Select_mask);
- FD_SET(ConnectionNumber(screen->display), &Select_mask);
- max_plus1 = ((screen->respond < ConnectionNumber(screen->display))
- ? (1 + ConnectionNumber(screen->display))
- : (1 + screen->respond));
-
-#endif /* !VMS */
-#ifdef DEBUG
- if (debug)
- printf("debugging on\n");
-#endif /* DEBUG */
- XSetErrorHandler(xerror);
- XSetIOErrorHandler(xioerror);
-
- initPtyData(&VTbuffer);
-#ifdef ALLOWLOGGING
- if (term->misc.log_on) {
- StartLog(screen);
- }
-#endif
-
- if (winToEmbedInto != None) {
- XtRealizeWidget(toplevel);
- /*
- * This should probably query the tree or check the attributes of
- * winToEmbedInto in order to verify that it exists, but I'm still not
- * certain what is the best way to do it -GPS
- */
- XReparentWindow(XtDisplay(toplevel),
- XtWindow(toplevel),
- winToEmbedInto, 0, 0);
- }
-
- for (;;) {
-#if OPT_TEK4014
- if (screen->TekEmu)
- TekRun();
- else
-#endif
- VTRun();
- }
-}
-
-#if defined(__osf__) || (defined(__GLIBC__) && !defined(USE_USG_PTYS)) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
-#define USE_OPENPTY 1
-static int opened_tty = -1;
-#endif
-
-/*
- * This function opens up a pty master and stuffs its value into pty.
- *
- * If it finds one, it returns a value of 0. If it does not find one,
- * it returns a value of !0. This routine is designed to be re-entrant,
- * so that if a pty master is found and later, we find that the slave
- * has problems, we can re-enter this function and get another one.
- */
-static int
-get_pty(int *pty, char *from GCC_UNUSED)
-{
- int result = 1;
-
-#if defined(PUCC_PTYD)
-
- result = ((*pty = openrpty(ttydev, ptydev,
- (resource.utmpInhibit ? OPTY_NOP : OPTY_LOGIN),
- getuid(), from)) < 0);
-
-#elif defined(USE_OPENPTY)
-
- result = openpty(pty, &opened_tty, ttydev, NULL, NULL);
-
-#elif defined(__QNXNTO__)
-
- result = pty_search(pty);
-
-#else
-#if defined(USE_ISPTS_FLAG)
-
- /*
- The order of this code is *important*. On SYSV/386 we want to open
- a /dev/ttyp? first if at all possible. If none are available, then
- we'll try to open a /dev/pts??? device.
-
- The reason for this is because /dev/ttyp? works correctly, where
- as /dev/pts??? devices have a number of bugs, (won't update
- screen correcly, will hang -- it more or less works, but you
- really don't want to use it).
-
- Most importantly, for boxes of this nature, one of the major
- "features" is that you can emulate a 8086 by spawning off a UNIX
- program on 80386/80486 in v86 mode. In other words, you can spawn
- off multiple MS-DOS environments. On ISC the program that does
- this is named "vpix." The catcher is that "vpix" will *not* work
- with a /dev/pts??? device, will only work with a /dev/ttyp? device.
-
- Since we can open either a /dev/ttyp? or a /dev/pts??? device,
- the flag "IsPts" is set here so that we know which type of
- device we're dealing with in routine spawn(). That's the reason
- for the "if (IsPts)" statement in spawn(); we have two different
- device types which need to be handled differently.
- */
- result = pty_search(pty);
- if (!result)
- IsPts = 0;
-
-#endif
-#if defined(USE_USG_PTYS) || defined(__CYGWIN__)
-#ifdef __GLIBC__ /* if __GLIBC__ and USE_USG_PTYS, we know glibc >= 2.1 */
- /* GNU libc 2 allows us to abstract away from having to know the
- master pty device name. */
- if ((*pty = getpt()) >= 0) {
- char *name = ptsname(*pty);
- if (name != 0) { /* if filesystem is trashed, this may be null */
- strcpy(ttydev, name);
- result = 0;
- }
- }
-#elif defined(__MVS__)
- result = pty_search(pty);
-#else
-#if defined(USE_ISPTS_FLAG)
- if (result) {
-#endif
- result = ((*pty = open("/dev/ptmx", O_RDWR)) < 0);
-#endif
-#if defined(SVR4) || defined(__SCO__) || defined(USE_ISPTS_FLAG)
- if (!result)
- strcpy(ttydev, ptsname(*pty));
-#ifdef USE_ISPTS_FLAG
- IsPts = !result; /* true if we're successful */
- }
-#endif
-#endif
-
-#elif defined(AIXV3)
-
- if ((*pty = open("/dev/ptc", O_RDWR)) >= 0) {
- strcpy(ttydev, ttyname(*pty));
- result = 0;
- }
-#elif defined(__convex__)
-
- char *pty_name;
- extern char *getpty(void);
-
- while ((pty_name = getpty()) != NULL) {
- if ((*pty = open(pty_name, O_RDWR)) >= 0) {
- strcpy(ptydev, pty_name);
- strcpy(ttydev, pty_name);
- *x_basename(ttydev) = 't';
- result = 0;
- break;
- }
- }
-
-#elif defined(sequent)
-
- result = ((*pty = getpseudotty(&ttydev, &ptydev)) < 0);
-
-#elif defined(__sgi) && (OSMAJORVERSION >= 4)
-
- char *tty_name;
-
- tty_name = _getpty(pty, O_RDWR, 0622, 0);
- if (tty_name != 0) {
- strcpy(ttydev, tty_name);
- result = 0;
- }
-#elif (defined(__sgi) && (OSMAJORVERSION < 4)) || (defined(umips) && defined (SYSTYPE_SYSV))
-
- struct stat fstat_buf;
-
- *pty = open("/dev/ptc", O_RDWR);
- if (*pty >= 0 && (fstat(*pty, &fstat_buf)) >= 0) {
- result = 0;
- sprintf(ttydev, "/dev/ttyq%d", minor(fstat_buf.st_rdev));
- }
-#elif defined(__hpux)
-
- /*
- * Use the clone device if it works, otherwise use pty_search logic.
- */
- if ((*pty = open("/dev/ptym/clone", O_RDWR)) >= 0) {
- char *name = ptsname(*pty);
- if (name != 0) {
- strcpy(ttydev, name);
- result = 0;
- } else { /* permissions, or other unexpected problem */
- close(*pty);
- *pty = -1;
- result = pty_search(pty);
- }
- } else {
- result = pty_search(pty);
- }
-
-#else
-
- result = pty_search(pty);
-
-#endif
-#endif
-
- TRACE(("get_pty(ttydev=%s, ptydev=%s) %s fd=%d\n",
- ttydev != 0 ? ttydev : "?",
- ptydev != 0 ? ptydev : "?",
- result ? "FAIL" : "OK",
- pty != 0 ? *pty : -1));
- return result;
-}
-
-static void
-set_pty_permissions(uid_t uid, gid_t gid, mode_t mode)
-{
-#ifdef USE_TTY_GROUP
- struct group *ttygrp;
-
- if ((ttygrp = getgrnam(TTY_GROUP_NAME)) != 0) {
- gid = ttygrp->gr_gid;
- mode &= 0660U;
- }
- endgrent();
-#endif /* USE_TTY_GROUP */
-
- set_owner(ttydev, uid, gid, mode);
-}
-
-#ifdef get_pty /* USE_UTMP_SETGID */
-#undef get_pty
-/*
- * Call the real get_pty() before relinquishing root-setuid, caching the
- * result.
- */
-static int
-get_pty(int *pty, char *from)
-{
- static int m_pty = -1;
- int result = -1;
-
- if (pty == NULL) {
- result = really_get_pty(&m_pty, from);
-
- seteuid(0);
- set_pty_permissions(getuid(), getgid(), 0600U);
- seteuid(getuid());
-
-#ifdef USE_OPENPTY
- if (opened_tty >= 0) {
- close(opened_tty);
- opened_tty = -1;
- }
-#endif
- } else if (m_pty != -1) {
- *pty = m_pty;
- result = 0;
- } else {
- result = -1;
- }
- return result;
-}
-#endif
-
-/*
- * Called from get_pty to iterate over likely pseudo terminals
- * we might allocate. Used on those systems that do not have
- * a functional interface for allocating a pty.
- * Returns 0 if found a pty, 1 if fails.
- */
-#ifdef USE_PTY_SEARCH
-static int
-pty_search(int *pty)
-{
- static int devindex = 0, letter = 0;
-
-#if defined(CRAY) || defined(__MVS__)
- while (devindex < MAXPTTYS) {
- sprintf(ttydev, TTYFORMAT, devindex);
- sprintf(ptydev, PTYFORMAT, devindex);
- devindex++;
-
- TRACE(("pty_search(ttydev=%s, ptydev=%s)\n", ttydev, ptydev));
- if ((*pty = open(ptydev, O_RDWR)) >= 0) {
- return 0;
- }
- }
-#else /* CRAY || __MVS__ */
- while (PTYCHAR1[letter]) {
- ttydev[strlen(ttydev) - 2] =
- ptydev[strlen(ptydev) - 2] = PTYCHAR1[letter];
-
- while (PTYCHAR2[devindex]) {
- ttydev[strlen(ttydev) - 1] =
- ptydev[strlen(ptydev) - 1] = PTYCHAR2[devindex];
- devindex++;
-
- TRACE(("pty_search(ttydev=%s, ptydev=%s)\n", ttydev, ptydev));
- if ((*pty = open(ptydev, O_RDWR)) >= 0) {
-#ifdef sun
- /* Need to check the process group of the pty.
- * If it exists, then the slave pty is in use,
- * and we need to get another one.
- */
- int pgrp_rtn;
- if (ioctl(*pty, TIOCGPGRP, &pgrp_rtn) == 0 || errno != EIO) {
- close(*pty);
- continue;
- }
-#endif /* sun */
- return 0;
- }
- }
- devindex = 0;
- letter++;
- }
-#endif /* CRAY else */
- /*
- * We were unable to allocate a pty master! Return an error
- * condition and let our caller terminate cleanly.
- */
- return 1;
-}
-#endif /* USE_PTY_SEARCH */
-
-/*
- * sets up X and initializes the terminal structure except for term.buf.fildes.
- */
-static void
-get_terminal(void)
-{
- TScreen *screen = &term->screen;
-
- screen->arrow = make_colored_cursor(XC_left_ptr,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
-}
-
-/*
- * The only difference in /etc/termcap between 4014 and 4015 is that
- * the latter has support for switching character sets. We support the
- * 4015 protocol, but ignore the character switches. Therefore, we
- * choose 4014 over 4015.
- *
- * Features of the 4014 over the 4012: larger (19") screen, 12-bit
- * graphics addressing (compatible with 4012 10-bit addressing),
- * special point plot mode, incremental plot mode (not implemented in
- * later Tektronix terminals), and 4 character sizes.
- * All of these are supported by xterm.
- */
-
-#if OPT_TEK4014
-static char *tekterm[] =
-{
- "tek4014",
- "tek4015", /* 4014 with APL character set support */
- "tek4012", /* 4010 with lower case */
- "tek4013", /* 4012 with APL character set support */
- "tek4010", /* small screen, upper-case only */
- "dumb",
- 0
-};
-#endif
-
-/* The VT102 is a VT100 with the Advanced Video Option included standard.
- * It also adds Escape sequences for insert/delete character/line.
- * The VT220 adds 8-bit character sets, selective erase.
- * The VT320 adds a 25th status line, terminal state interrogation.
- * The VT420 has up to 48 lines on the screen.
- */
-
-static char *vtterm[] =
-{
-#ifdef USE_X11TERM
- "x11term", /* for people who want special term name */
-#endif
- DFT_TERMTYPE, /* for people who want special term name */
- "xterm", /* the prefered name, should be fastest */
- "vt102",
- "vt100",
- "ansi",
- "dumb",
- 0
-};
-
-/* ARGSUSED */
-static SIGNAL_T
-hungtty(int i GCC_UNUSED)
-{
- siglongjmp(env, 1);
- SIGNAL_RETURN;
-}
-
-/*
- * declared outside OPT_PTY_HANDSHAKE so HsSysError() callers can use
- */
-static int cp_pipe[2]; /* this pipe is used for child to parent transfer */
-
-#if OPT_PTY_HANDSHAKE
-static int pc_pipe[2]; /* this pipe is used for parent to child transfer */
-typedef enum { /* c == child, p == parent */
- PTY_BAD, /* c->p: can't open pty slave for some reason */
- PTY_FATALERROR, /* c->p: we had a fatal error with the pty */
- PTY_GOOD, /* c->p: we have a good pty, let's go on */
- PTY_NEW, /* p->c: here is a new pty slave, try this */
- PTY_NOMORE, /* p->c; no more pty's, terminate */
- UTMP_ADDED, /* c->p: utmp entry has been added */
- UTMP_TTYSLOT, /* c->p: here is my ttyslot */
- PTY_EXEC /* p->c: window has been mapped the first time */
-} status_t;
-
-typedef struct {
- status_t status;
- int error;
- int fatal_error;
- int tty_slot;
- int rows;
- int cols;
- char buffer[1024];
-} handshake_t;
-
-/* HsSysError()
- *
- * This routine does the equivalent of a SysError but it handshakes
- * over the errno and error exit to the master process so that it can
- * display our error message and exit with our exit code so that the
- * user can see it.
- */
-
-static void
-HsSysError(int pf, int error)
-{
- handshake_t handshake;
-
- handshake.status = PTY_FATALERROR;
- handshake.error = errno;
- handshake.fatal_error = error;
- strcpy(handshake.buffer, ttydev);
- write(pf, (char *) &handshake, sizeof(handshake));
- exit(error);
-}
-
-void
-first_map_occurred(void)
-{
- handshake_t handshake;
- TScreen *screen = &term->screen;
-
- handshake.status = PTY_EXEC;
- handshake.rows = screen->max_row;
- handshake.cols = screen->max_col;
- write(pc_pipe[1], (char *) &handshake, sizeof(handshake));
- close(cp_pipe[0]);
- close(pc_pipe[1]);
- waiting_for_initial_map = False;
-}
-#else
-/*
- * temporary hack to get xterm working on att ptys
- */
-static void
-HsSysError(int pf GCC_UNUSED, int error)
-{
- fprintf(stderr, "%s: fatal pty error %d (errno=%d) on tty %s\n",
- xterm_name, error, errno, ttydev);
- exit(error);
-}
-
-void
-first_map_occurred(void)
-{
- return;
-}
-#endif /* OPT_PTY_HANDSHAKE else !OPT_PTY_HANDSHAKE */
-
-#ifndef VMS
-static void
-set_owner(char *device, uid_t uid, gid_t gid, mode_t mode)
-{
- int why;
-
- TRACE(("set_owner(%s, uid=%d, gid=%d, mode=%#o\n", device, uid, gid, mode));
-
- if (chown(device, uid, gid) < 0) {
- why = errno;
- if (why != ENOENT
- && getuid() == 0) {
- fprintf(stderr, "Cannot chown %s to %ld,%ld: %s\n",
- device, (long) uid, (long) gid,
- strerror(why));
- }
- TRACE(("...chown failed: %s\n", strerror(why)));
- }
- if (chmod(device, mode) < 0) {
- why = errno;
- if (why != ENOENT) {
- struct stat sb;
- if (stat(device, &sb) < 0) {
- fprintf(stderr, "Cannot chmod %s to %03o: %s\n",
- device, (unsigned) mode,
- strerror(why));
- } else if (mode != (sb.st_mode & 0777U)) {
- fprintf(stderr,
- "Cannot chmod %s to %03o currently %03o: %s\n",
- device, (unsigned) mode, (sb.st_mode & 0777U),
- strerror(why));
- TRACE(("...stat uid=%d, gid=%d, mode=%#o\n",
- sb.st_uid, sb.st_gid, sb.st_mode));
- }
- }
- TRACE(("...chmod failed: %s\n", strerror(why)));
- }
-}
-
-#if defined(HAVE_UTMP) && defined(USE_SYSV_UTMP) && !defined(USE_UTEMPTER)
-/*
- * getutid() only looks at ut_type and ut_id.
- * But we'll also check ut_line in find_utmp().
- */
-static void
-init_utmp(int type, struct UTMP_STR *tofind)
-{
- memset(tofind, 0, sizeof(*tofind));
- tofind->ut_type = type;
- (void) strncpy(tofind->ut_id, my_utmp_id(ttydev), sizeof(tofind->ut_id));
- (void) strncpy(tofind->ut_line, my_pty_name(ttydev), sizeof(tofind->ut_line));
-}
-
-/*
- * We could use getutline() if we didn't support old systems.
- */
-static struct UTMP_STR *
-find_utmp(struct UTMP_STR *tofind)
-{
- struct UTMP_STR *result;
- struct UTMP_STR working;
-
- for (;;) {
- memset(&working, 0, sizeof(working));
- working.ut_type = tofind->ut_type;
- memcpy(working.ut_id, tofind->ut_id, sizeof(tofind->ut_id));
-#if defined(__digital__) && defined(__unix__) && (defined(OSMAJORVERSION) && OSMAJORVERSION < 5)
- working.ut_type = 0;
-#endif
- if ((result = call_getutid(&working)) == 0)
- break;
- if (!strcmp(result->ut_line, tofind->ut_line))
- break;
- /*
- * Solaris, IRIX64 and HPUX manpages say to fill the static area
- * pointed to by the return-value to zeros if searching for multiple
- * occurrences. Otherwise it will continue to return the same value.
- */
- memset(result, 0, sizeof(*result));
- }
- return result;
-}
-#endif /* HAVE_UTMP... */
-
-#define close_fd(fd) close(fd), fd = -1
-
-/*
- * Inits pty and tty and forks a login process.
- * Does not close fd Xsocket.
- * If slave, the pty named in passedPty is already open for use
- */
-static int
-spawn(void)
-{
- TScreen *screen = &term->screen;
-#if OPT_PTY_HANDSHAKE
- handshake_t handshake;
- int done;
-#endif
-#if OPT_INITIAL_ERASE
- int initial_erase = VAL_INITIAL_ERASE;
-#endif
- int rc = 0;
- int ttyfd = -1;
-
-#ifdef TERMIO_STRUCT
- TERMIO_STRUCT tio;
-#ifdef __MVS__
- TERMIO_STRUCT gio;
-#endif /* __MVS__ */
-#ifdef TIOCLSET
- unsigned lmode;
-#endif /* TIOCLSET */
-#ifdef HAS_LTCHARS
- struct ltchars ltc;
-#endif /* HAS_LTCHARS */
-#else /* !TERMIO_STRUCT */
- int ldisc = 0;
- int discipline;
- unsigned lmode;
- struct tchars tc;
- struct ltchars ltc;
- struct sgttyb sg;
-#ifdef sony
- int jmode;
- struct jtchars jtc;
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
-
- char termcap[TERMCAP_SIZE];
- char newtc[TERMCAP_SIZE];
- char *ptr, *shname, *shname_minus;
- int i, no_dev_tty = False;
- char **envnew; /* new environment */
- int envsize; /* elements in new environment */
- char buf[64];
- char *TermName = NULL;
-#ifdef TTYSIZE_STRUCT
- TTYSIZE_STRUCT ts;
-#endif
- struct passwd *pw = NULL;
- char *login_name = NULL;
-#ifndef USE_UTEMPTER
-#ifdef HAVE_UTMP
- struct UTMP_STR utmp;
-#ifdef USE_SYSV_UTMP
- struct UTMP_STR *utret = NULL;
-#endif
-#ifdef USE_LASTLOG
- struct lastlog lastlog;
-#endif
-#ifdef USE_LASTLOGX
- struct lastlogx lastlog;
-#endif /* USE_LASTLOG */
-#endif /* HAVE_UTMP */
-#endif /* !USE_UTEMPTER */
-
- /* Noisy compilers (suppress some unused-variable warnings) */
- (void) rc;
-#if defined(HAVE_UTMP) && defined(USE_SYSV_UTMP) && !defined(USE_UTEMPTER)
- (void) utret;
-#endif
-
- screen->uid = getuid();
- screen->gid = getgid();
-
- termcap[0] = '\0';
- newtc[0] = '\0';
-
-#ifdef SIGTTOU
- /* so that TIOCSWINSZ || TIOCSIZE doesn't block */
- signal(SIGTTOU, SIG_IGN);
-#endif
-
- if (am_slave >= 0) {
- screen->respond = am_slave;
- set_pty_id(ttydev, passedPty);
-#ifdef USE_PTY_DEVICE
- set_pty_id(ptydev, passedPty);
-#endif
- setgid(screen->gid);
- setuid(screen->uid);
- } else {
- Bool tty_got_hung;
-
- /*
- * Sometimes /dev/tty hangs on open (as in the case of a pty
- * that has gone away). Simply make up some reasonable
- * defaults.
- */
-
- signal(SIGALRM, hungtty);
- alarm(2); /* alarm(1) might return too soon */
- if (!sigsetjmp(env, 1)) {
- ttyfd = open("/dev/tty", O_RDWR);
- alarm(0);
- tty_got_hung = False;
- } else {
- tty_got_hung = True;
- ttyfd = -1;
- errno = ENXIO;
- }
-#if OPT_INITIAL_ERASE
- initial_erase = VAL_INITIAL_ERASE;
-#endif
- signal(SIGALRM, SIG_DFL);
-
- /*
- * Check results and ignore current control terminal if
- * necessary. ENXIO is what is normally returned if there is
- * no controlling terminal, but some systems (e.g. SunOS 4.0)
- * seem to return EIO. Solaris 2.3 is said to return EINVAL.
- * Cygwin returns ENOENT.
- */
- no_dev_tty = False;
- if (ttyfd < 0) {
- if (tty_got_hung || errno == ENXIO || errno == EIO ||
-#ifdef ENODEV
- errno == ENODEV ||
-#endif
-#ifdef __CYGWIN__
- errno == ENOENT ||
-#endif
- errno == EINVAL || errno == ENOTTY || errno == EACCES) {
- no_dev_tty = True;
-#ifdef HAS_LTCHARS
- ltc = d_ltc;
-#endif /* HAS_LTCHARS */
-#ifdef TIOCLSET
- lmode = d_lmode;
-#endif /* TIOCLSET */
-#ifdef TERMIO_STRUCT
- tio = d_tio;
-#else /* !TERMIO_STRUCT */
- sg = d_sg;
- tc = d_tc;
- discipline = d_disipline;
-#ifdef sony
- jmode = d_jmode;
- jtc = d_jtc;
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
- } else {
- SysError(ERROR_OPDEVTTY);
- }
- } else {
-
- /* Get a copy of the current terminal's state,
- * if we can. Some systems (e.g., SVR4 and MacII)
- * may not have a controlling terminal at this point
- * if started directly from xdm or xinit,
- * in which case we just use the defaults as above.
- */
-#ifdef HAS_LTCHARS
- if (ioctl(ttyfd, TIOCGLTC, &ltc) == -1)
- ltc = d_ltc;
-#endif /* HAS_LTCHARS */
-#ifdef TIOCLSET
- if (ioctl(ttyfd, TIOCLGET, &lmode) == -1)
- lmode = d_lmode;
-#endif /* TIOCLSET */
-#ifdef TERMIO_STRUCT
- if ((rc = ttyGetAttr(ttyfd, &tio)) == -1)
- tio = d_tio;
-#else /* !TERMIO_STRUCT */
- if ((rc = ioctl(ttyfd, TIOCGETP, (char *) &sg)) == -1)
- sg = d_sg;
- if (ioctl(ttyfd, TIOCGETC, (char *) &tc) == -1)
- tc = d_tc;
- if (ioctl(ttyfd, TIOCGETD, (char *) &discipline) == -1)
- discipline = d_disipline;
-#ifdef sony
- if (ioctl(ttyfd, TIOCKGET, (char *) &jmode) == -1)
- jmode = d_jmode;
- if (ioctl(ttyfd, TIOCKGETC, (char *) &jtc) == -1)
- jtc = d_jtc;
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
-
- /*
- * If ptyInitialErase is set, we want to get the pty's
- * erase value. Just in case that will fail, first get
- * the value from /dev/tty, so we will have something
- * at least.
- */
-#if OPT_INITIAL_ERASE
- if (resource.ptyInitialErase) {
-#ifdef TERMIO_STRUCT
- initial_erase = tio.c_cc[VERASE];
-#else /* !TERMIO_STRUCT */
- initial_erase = sg.sg_erase;
-#endif /* TERMIO_STRUCT */
- TRACE(("%s initial_erase:%d (from /dev/tty)\n",
- rc == 0 ? "OK" : "FAIL",
- initial_erase));
- }
-#endif
-#ifdef __MVS__
- if (ttyGetAttr(ttyfd, &gio) == 0) {
- gio.c_cflag &= ~(HUPCL | PARENB);
- ttySetAttr(ttyfd, &gio);
- }
-#endif /* __MVS__ */
-
- close_fd(ttyfd);
- }
-
- if (get_pty(&screen->respond, XDisplayString(screen->display))) {
- SysError(ERROR_PTYS);
- }
-#if OPT_INITIAL_ERASE
- if (resource.ptyInitialErase) {
-#ifdef TERMIO_STRUCT
- TERMIO_STRUCT my_tio;
- if ((rc = ttyGetAttr(screen->respond, &my_tio)) == 0)
- initial_erase = my_tio.c_cc[VERASE];
-#else /* !TERMIO_STRUCT */
- struct sgttyb my_sg;
- if ((rc = ioctl(screen->respond, TIOCGETP, (char *) &my_sg)) == 0)
- initial_erase = my_sg.sg_erase;
-#endif /* TERMIO_STRUCT */
- TRACE(("%s initial_erase:%d (from pty)\n",
- (rc == 0) ? "OK" : "FAIL",
- initial_erase));
- }
-#endif /* OPT_INITIAL_ERASE */
- }
-
- /* avoid double MapWindow requests */
- XtSetMappedWhenManaged(XtParent(CURRENT_EMU(screen)), False);
-
- wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW",
- False);
-
- if (!TEK4014_ACTIVE(screen))
- VTInit(); /* realize now so know window size for tty driver */
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
- if (Console) {
- /*
- * Inform any running xconsole program
- * that we are going to steal the console.
- */
- XmuGetHostname(mit_console_name + MIT_CONSOLE_LEN, 255);
- mit_console = XInternAtom(screen->display, mit_console_name, False);
- /* the user told us to be the console, so we can use CurrentTime */
- XtOwnSelection(XtParent(CURRENT_EMU(screen)),
- mit_console, CurrentTime,
- ConvertConsoleSelection, NULL, NULL);
- }
-#endif
-#if OPT_TEK4014
- if (screen->TekEmu) {
- envnew = tekterm;
- ptr = newtc;
- } else
-#endif
- {
- envnew = vtterm;
- ptr = termcap;
- }
-
- /*
- * This used to exit if no termcap entry was found for the specified
- * terminal name. That's a little unfriendly, so instead we'll allow
- * the program to proceed (but not to set $TERMCAP) if the termcap
- * entry is not found.
- */
- if (!get_termcap(TermName = resource.term_name, ptr, newtc)) {
- char *last = NULL;
- TermName = *envnew;
- while (*envnew != NULL) {
- if ((last == NULL || strcmp(last, *envnew))
- && get_termcap(*envnew, ptr, newtc)) {
- TermName = *envnew;
- break;
- }
- last = *envnew;
- envnew++;
- }
- }
-
- /*
- * Check if ptyInitialErase is not set. If so, we rely on the termcap
- * (or terminfo) to tell us what the erase mode should be set to.
- */
-#if OPT_INITIAL_ERASE
- TRACE(("resource ptyInitialErase is %sset\n",
- resource.ptyInitialErase ? "" : "not "));
- if (!resource.ptyInitialErase) {
- char temp[1024], *p = temp;
- char *s = tgetstr(TERMCAP_ERASE, &p);
- TRACE(("...extracting initial_erase value from termcap\n"));
- if (s != 0) {
- initial_erase = decode_keyvalue(&s, True);
- }
- }
- TRACE(("...initial_erase:%d\n", initial_erase));
-
- TRACE(("resource backarrowKeyIsErase is %sset\n",
- resource.backarrow_is_erase ? "" : "not "));
- if (resource.backarrow_is_erase) { /* see input.c */
- if (initial_erase == 127) {
- term->keyboard.flags &= ~MODE_DECBKM;
- } else {
- term->keyboard.flags |= MODE_DECBKM;
- term->keyboard.reset_DECBKM = 1;
- }
- TRACE(("...sets DECBKM %s\n",
- (term->keyboard.flags & MODE_DECBKM) ? "on" : "off"));
- } else {
- term->keyboard.reset_DECBKM = 2;
- }
-#endif /* OPT_INITIAL_ERASE */
-
-#ifdef TTYSIZE_STRUCT
- /* tell tty how big window is */
-#if OPT_TEK4014
- if (TEK4014_ACTIVE(screen)) {
- TTYSIZE_ROWS(ts) = 38;
- TTYSIZE_COLS(ts) = 81;
-#if defined(USE_STRUCT_WINSIZE)
- ts.ws_xpixel = TFullWidth(screen);
- ts.ws_ypixel = TFullHeight(screen);
-#endif
- } else
-#endif
- {
- TTYSIZE_ROWS(ts) = MaxRows(screen);
- TTYSIZE_COLS(ts) = MaxCols(screen);
-#if defined(USE_STRUCT_WINSIZE)
- ts.ws_xpixel = FullWidth(screen);
- ts.ws_ypixel = FullHeight(screen);
-#endif
- }
- i = SET_TTYSIZE(screen->respond, ts);
- TRACE(("spawn SET_TTYSIZE %dx%d return %d\n",
- TTYSIZE_ROWS(ts),
- TTYSIZE_COLS(ts), i));
-#endif /* TTYSIZE_STRUCT */
-
- added_utmp_entry = False;
-#if defined(USE_UTEMPTER)
-#undef UTMP
- if (!resource.utmpInhibit) {
- struct UTMP_STR dummy;
-
- /* Note: utempter may trim it anyway */
- SetUtmpHost(dummy.ut_host, screen);
- addToUtmp(ttydev, dummy.ut_host, screen->respond);
- added_utmp_entry = True;
- }
-#endif
-
- if (am_slave < 0) {
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake && (pipe(pc_pipe) || pipe(cp_pipe)))
- SysError(ERROR_FORK);
-#endif
- TRACE(("Forking...\n"));
- if ((screen->pid = fork()) == -1)
- SysError(ERROR_FORK);
-
- if (screen->pid == 0) {
- /*
- * now in child process
- */
- TRACE_CHILD
-#if defined(_POSIX_SOURCE) || defined(SVR4) || defined(__convex__) || defined(__SCO__) || defined(__QNX__)
- int pgrp = setsid(); /* variable may not be used... */
-#else
- int pgrp = getpid();
-#endif
-
-#ifdef USE_USG_PTYS
-#ifdef USE_ISPTS_FLAG
- if (IsPts) { /* SYSV386 supports both, which did we open? */
-#endif
- int ptyfd = 0;
- char *pty_name = 0;
-
- setpgrp();
- grantpt(screen->respond);
- unlockpt(screen->respond);
- if ((pty_name = ptsname(screen->respond)) == 0) {
- SysError(ERROR_PTSNAME);
- }
- if ((ptyfd = open(pty_name, O_RDWR)) < 0) {
- SysError(ERROR_OPPTSNAME);
- }
-#ifdef I_PUSH
- if (ioctl(ptyfd, I_PUSH, "ptem") < 0) {
- SysError(ERROR_PTEM);
- }
-#if !defined(SVR4) && !(defined(SYSV) && defined(i386))
- if (!getenv("CONSEM") && ioctl(ptyfd, I_PUSH, "consem") < 0) {
- SysError(ERROR_CONSEM);
- }
-#endif /* !SVR4 */
- if (ioctl(ptyfd, I_PUSH, "ldterm") < 0) {
- SysError(ERROR_LDTERM);
- }
-#ifdef SVR4 /* from Sony */
- if (ioctl(ptyfd, I_PUSH, "ttcompat") < 0) {
- SysError(ERROR_TTCOMPAT);
- }
-#endif /* SVR4 */
-#endif /* I_PUSH */
- ttyfd = ptyfd;
-#ifndef __MVS__
- close_fd(screen->respond);
-#endif /* __MVS__ */
-
-#ifdef TTYSIZE_STRUCT
- /* tell tty how big window is */
-#if OPT_TEK4014
- if (TEK4014_ACTIVE(screen)) {
- TTYSIZE_ROWS(ts) = 24;
- TTYSIZE_COLS(ts) = 80;
-#ifdef USE_STRUCT_WINSIZE
- ts.ws_xpixel = TFullWidth(screen);
- ts.ws_ypixel = TFullHeight(screen);
-#endif
- } else
-#endif /* OPT_TEK4014 */
- {
- TTYSIZE_ROWS(ts) = MaxRows(screen);
- TTYSIZE_COLS(ts) = MaxCols(screen);
-#ifdef USE_STRUCT_WINSIZE
- ts.ws_xpixel = FullWidth(screen);
- ts.ws_ypixel = FullHeight(screen);
-#endif
- }
-#endif /* TTYSIZE_STRUCT */
-
-#ifdef USE_ISPTS_FLAG
- } else { /* else pty, not pts */
-#endif
-#endif /* USE_USG_PTYS */
-
- (void) pgrp; /* not all branches use this variable */
-
-#if OPT_PTY_HANDSHAKE /* warning, goes for a long ways */
- if (resource.ptyHandshake) {
- /* close parent's sides of the pipes */
- close(cp_pipe[0]);
- close(pc_pipe[1]);
-
- /* Make sure that our sides of the pipes are not in the
- * 0, 1, 2 range so that we don't fight with stdin, out
- * or err.
- */
- if (cp_pipe[1] <= 2) {
- if ((i = fcntl(cp_pipe[1], F_DUPFD, 3)) >= 0) {
- (void) close(cp_pipe[1]);
- cp_pipe[1] = i;
- }
- }
- if (pc_pipe[0] <= 2) {
- if ((i = fcntl(pc_pipe[0], F_DUPFD, 3)) >= 0) {
- (void) close(pc_pipe[0]);
- pc_pipe[0] = i;
- }
- }
-
- /* we don't need the socket, or the pty master anymore */
- close(ConnectionNumber(screen->display));
-#ifndef __MVS__
- close(screen->respond);
-#endif /* __MVS__ */
-
- /* Now is the time to set up our process group and
- * open up the pty slave.
- */
-#ifdef USE_SYSV_PGRP
-#if defined(CRAY) && (OSMAJORVERSION > 5)
- (void) setsid();
-#else
- (void) setpgrp();
-#endif
-#endif /* USE_SYSV_PGRP */
-
-#if defined(__QNX__) && !defined(__QNXNTO__)
- qsetlogin(getlogin(), ttydev);
-#endif
- if (ttyfd >= 0) {
-#ifdef __MVS__
- if (ttyGetAttr(ttyfd, &gio) == 0) {
- gio.c_cflag &= ~(HUPCL | PARENB);
- ttySetAttr(ttyfd, &gio);
- }
-#else /* !__MVS__ */
- close_fd(ttyfd);
-#endif /* __MVS__ */
- }
-
- while (1) {
-#if defined(TIOCNOTTY) && (!defined(__GLIBC__) || (__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))
- if (!no_dev_tty
- && (ttyfd = open("/dev/tty", O_RDWR)) >= 0) {
- ioctl(ttyfd, TIOCNOTTY, (char *) NULL);
- close_fd(ttyfd);
- }
-#endif /* TIOCNOTTY && !glibc >= 2.1 */
-#ifdef CSRG_BASED
- (void) revoke(ttydev);
-#endif
- if ((ttyfd = open(ttydev, O_RDWR)) >= 0) {
-#if defined(CRAY) && defined(TCSETCTTY)
- /* make /dev/tty work */
- ioctl(ttyfd, TCSETCTTY, 0);
-#endif
-#ifdef USE_SYSV_PGRP
- /* We need to make sure that we are actually
- * the process group leader for the pty. If
- * we are, then we should now be able to open
- * /dev/tty.
- */
- if ((i = open("/dev/tty", O_RDWR)) >= 0) {
- /* success! */
- close(i);
- break;
- }
-#else /* USE_SYSV_PGRP */
- break;
-#endif /* USE_SYSV_PGRP */
- }
- perror("open ttydev");
-#ifdef TIOCSCTTY
- ioctl(ttyfd, TIOCSCTTY, 0);
-#endif
- /* let our master know that the open failed */
- handshake.status = PTY_BAD;
- handshake.error = errno;
- strcpy(handshake.buffer, ttydev);
- write(cp_pipe[1], (char *) &handshake,
- sizeof(handshake));
-
- /* get reply from parent */
- i = read(pc_pipe[0], (char *) &handshake,
- sizeof(handshake));
- if (i <= 0) {
- /* parent terminated */
- exit(1);
- }
-
- if (handshake.status == PTY_NOMORE) {
- /* No more ptys, let's shutdown. */
- exit(1);
- }
-
- /* We have a new pty to try */
- free(ttydev);
- ttydev = CastMallocN(char, strlen(handshake.buffer));
- if (ttydev == NULL) {
- SysError(ERROR_SPREALLOC);
- }
- strcpy(ttydev, handshake.buffer);
- }
-
- /* use the same tty name that everyone else will use
- * (from ttyname)
- */
- if ((ptr = ttyname(ttyfd)) != 0) {
- /* it may be bigger */
- ttydev = TypeRealloc(char, strlen(ptr) + 1, ttydev);
- if (ttydev == NULL) {
- SysError(ERROR_SPREALLOC);
- }
- (void) strcpy(ttydev, ptr);
- }
- }
-#endif /* OPT_PTY_HANDSHAKE -- from near fork */
-
-#ifdef USE_ISPTS_FLAG
- } /* end of IsPts else clause */
-#endif
-
- set_pty_permissions(screen->uid,
- screen->gid,
- (resource.messages
- ? 0622U
- : 0600U));
-
- /*
- * set up the tty modes
- */
- {
-#ifdef TERMIO_STRUCT
-#if defined(umips) || defined(CRAY) || defined(linux)
- /* If the control tty had its modes screwed around with,
- eg. by lineedit in the shell, or emacs, etc. then tio
- will have bad values. Let's just get termio from the
- new tty and tailor it. */
- if (ttyGetAttr(ttyfd, &tio) == -1)
- SysError(ERROR_TIOCGETP);
- tio.c_lflag |= ECHOE;
-#endif /* umips */
- /* Now is also the time to change the modes of the
- * child pty.
- */
- /* input: nl->nl, don't ignore cr, cr->nl */
- tio.c_iflag &= ~(INLCR | IGNCR);
- tio.c_iflag |= ICRNL;
-#if OPT_WIDE_CHARS && defined(linux) && defined(IUTF8)
-#if OPT_LUIT_PROG
- if (command_to_exec_with_luit == 0)
-#endif
- if (screen->utf8_mode)
- tio.c_iflag |= IUTF8;
-#endif
- /* ouput: cr->cr, nl is not return, no delays, ln->cr/nl */
-#ifndef USE_POSIX_TERMIOS
- tio.c_oflag &=
- ~(OCRNL
- | ONLRET
- | NLDLY
- | CRDLY
- | TABDLY
- | BSDLY
- | VTDLY
- | FFDLY);
-#endif /* USE_POSIX_TERMIOS */
-#ifdef ONLCR
- tio.c_oflag |= ONLCR;
-#endif /* ONLCR */
-#ifdef OPOST
- tio.c_oflag |= OPOST;
-#endif /* OPOST */
-#ifndef USE_POSIX_TERMIOS
-# if defined(Lynx) && !defined(CBAUD)
-# define CBAUD V_CBAUD
-# endif
- tio.c_cflag &= ~(CBAUD);
-#ifdef BAUD_0
- /* baud rate is 0 (don't care) */
-#elif defined(HAVE_TERMIO_C_ISPEED)
- tio.c_ispeed = tio.c_ospeed = VAL_LINE_SPEED;
-#else /* !BAUD_0 */
- tio.c_cflag |= VAL_LINE_SPEED;
-#endif /* !BAUD_0 */
-#else /* USE_POSIX_TERMIOS */
- cfsetispeed(&tio, VAL_LINE_SPEED);
- cfsetospeed(&tio, VAL_LINE_SPEED);
-#ifdef __MVS__
- /* turn off bits that can't be set from the slave side */
- tio.c_cflag &= ~(PACKET | PKT3270 | PTU3270 | PKTXTND);
-#endif /* __MVS__ */
- /* Clear CLOCAL so that SIGHUP is sent to us
- when the xterm ends */
- tio.c_cflag &= ~CLOCAL;
-#endif /* USE_POSIX_TERMIOS */
- /* enable signals, canonical processing (erase, kill, etc),
- * echo
- */
- tio.c_lflag |= ISIG | ICANON | ECHO | ECHOE | ECHOK;
-#ifdef ECHOKE
- tio.c_lflag |= ECHOKE | IEXTEN;
-#endif
-#ifdef ECHOCTL
- tio.c_lflag |= ECHOCTL | IEXTEN;
-#endif
-#ifndef __MVS__
- /* reset EOL to default value */
- tio.c_cc[VEOL] = CEOL; /* '^@' */
- /* certain shells (ksh & csh) change EOF as well */
- tio.c_cc[VEOF] = CEOF; /* '^D' */
-#else
- if (tio.c_cc[VEOL] == 0)
- tio.c_cc[VEOL] = CEOL; /* '^@' */
- if (tio.c_cc[VEOF] == 0)
- tio.c_cc[VEOF] = CEOF; /* '^D' */
-#endif
-#ifdef VLNEXT
- tio.c_cc[VLNEXT] = CLNEXT;
-#endif
-#ifdef VWERASE
- tio.c_cc[VWERASE] = CWERASE;
-#endif
-#ifdef VREPRINT
- tio.c_cc[VREPRINT] = CRPRNT;
-#endif
-#ifdef VRPRNT
- tio.c_cc[VRPRNT] = CRPRNT;
-#endif
-#ifdef VDISCARD
- tio.c_cc[VDISCARD] = CFLUSH;
-#endif
-#ifdef VFLUSHO
- tio.c_cc[VFLUSHO] = CFLUSH;
-#endif
-#ifdef VSTOP
- tio.c_cc[VSTOP] = CSTOP;
-#endif
-#ifdef VSTART
- tio.c_cc[VSTART] = CSTART;
-#endif
-#ifdef VSUSP
- tio.c_cc[VSUSP] = CSUSP;
-#endif
-#ifdef VDSUSP
- tio.c_cc[VDSUSP] = CDSUSP;
-#endif
- if (override_tty_modes) {
- /* sysv-specific */
- TMODE(XTTYMODE_intr, tio.c_cc[VINTR]);
- TMODE(XTTYMODE_quit, tio.c_cc[VQUIT]);
- TMODE(XTTYMODE_erase, tio.c_cc[VERASE]);
- TMODE(XTTYMODE_kill, tio.c_cc[VKILL]);
- TMODE(XTTYMODE_eof, tio.c_cc[VEOF]);
- TMODE(XTTYMODE_eol, tio.c_cc[VEOL]);
-#ifdef VSWTCH
- TMODE(XTTYMODE_swtch, tio.c_cc[VSWTCH]);
-#endif
-#ifdef VSUSP
- TMODE(XTTYMODE_susp, tio.c_cc[VSUSP]);
-#endif
-#ifdef VDSUSP
- TMODE(XTTYMODE_dsusp, tio.c_cc[VDSUSP]);
-#endif
-#ifdef VREPRINT
- TMODE(XTTYMODE_rprnt, tio.c_cc[VREPRINT]);
-#endif
-#ifdef VRPRNT
- TMODE(XTTYMODE_rprnt, tio.c_cc[VRPRNT]);
-#endif
-#ifdef VDISCARD
- TMODE(XTTYMODE_flush, tio.c_cc[VDISCARD]);
-#endif
-#ifdef VFLUSHO
- TMODE(XTTYMODE_flush, tio.c_cc[VFLUSHO]);
-#endif
-#ifdef VWERASE
- TMODE(XTTYMODE_weras, tio.c_cc[VWERASE]);
-#endif
-#ifdef VLNEXT
- TMODE(XTTYMODE_lnext, tio.c_cc[VLNEXT]);
-#endif
-#ifdef VSTART
- TMODE(XTTYMODE_start, tio.c_cc[VSTART]);
-#endif
-#ifdef VSTOP
- TMODE(XTTYMODE_stop, tio.c_cc[VSTOP]);
-#endif
-#ifdef VSTATUS
- TMODE(XTTYMODE_status, tio.c_cc[VSTATUS]);
-#endif
-#ifdef VERASE2
- TMODE(XTTYMODE_erase2, tio.c_cc[VERASE2]);
-#endif
-#ifdef VEOL2
- TMODE(XTTYMODE_eol2, tio.c_cc[VEOL2]);
-#endif
-#ifdef HAS_LTCHARS
- /* both SYSV and BSD have ltchars */
- TMODE(XTTYMODE_susp, ltc.t_suspc);
- TMODE(XTTYMODE_dsusp, ltc.t_dsuspc);
- TMODE(XTTYMODE_rprnt, ltc.t_rprntc);
- TMODE(XTTYMODE_flush, ltc.t_flushc);
- TMODE(XTTYMODE_weras, ltc.t_werasc);
- TMODE(XTTYMODE_lnext, ltc.t_lnextc);
-#endif
- }
-#ifdef HAS_LTCHARS
-#ifdef __hpux
- /* ioctl chokes when the "reserved" process group controls
- * are not set to _POSIX_VDISABLE */
- ltc.t_rprntc = ltc.t_rprntc = ltc.t_flushc =
- ltc.t_werasc = ltc.t_lnextc = _POSIX_VDISABLE;
-#endif /* __hpux */
- if (ioctl(ttyfd, TIOCSLTC, &ltc) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETC);
-#endif /* HAS_LTCHARS */
-#ifdef TIOCLSET
- if (ioctl(ttyfd, TIOCLSET, (char *) &lmode) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCLSET);
-#endif /* TIOCLSET */
- if (ttySetAttr(ttyfd, &tio) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETP);
-
- /* ignore errors here - some platforms don't work */
- tio.c_cflag &= ~CSIZE;
- if (screen->input_eight_bits)
- tio.c_cflag |= CS8;
- else
- tio.c_cflag |= CS7;
- (void) ttySetAttr(ttyfd, &tio);
-
-#else /* !TERMIO_STRUCT */
- sg.sg_flags &= ~(ALLDELAY | XTABS | CBREAK | RAW);
- sg.sg_flags |= ECHO | CRMOD;
- /* make sure speed is set on pty so that editors work right */
- sg.sg_ispeed = VAL_LINE_SPEED;
- sg.sg_ospeed = VAL_LINE_SPEED;
- /* reset t_brkc to default value */
- tc.t_brkc = -1;
-#ifdef LPASS8
- if (screen->input_eight_bits)
- lmode |= LPASS8;
- else
- lmode &= ~(LPASS8);
-#endif
-#ifdef sony
- jmode &= ~KM_KANJI;
-#endif /* sony */
-
- ltc = d_ltc;
-
- if (override_tty_modes) {
- TMODE(XTTYMODE_intr, tc.t_intrc);
- TMODE(XTTYMODE_quit, tc.t_quitc);
- TMODE(XTTYMODE_erase, sg.sg_erase);
- TMODE(XTTYMODE_kill, sg.sg_kill);
- TMODE(XTTYMODE_eof, tc.t_eofc);
- TMODE(XTTYMODE_start, tc.t_startc);
- TMODE(XTTYMODE_stop, tc.t_stopc);
- TMODE(XTTYMODE_brk, tc.t_brkc);
- /* both SYSV and BSD have ltchars */
- TMODE(XTTYMODE_susp, ltc.t_suspc);
- TMODE(XTTYMODE_dsusp, ltc.t_dsuspc);
- TMODE(XTTYMODE_rprnt, ltc.t_rprntc);
- TMODE(XTTYMODE_flush, ltc.t_flushc);
- TMODE(XTTYMODE_weras, ltc.t_werasc);
- TMODE(XTTYMODE_lnext, ltc.t_lnextc);
- }
-
- if (ioctl(ttyfd, TIOCSETP, (char *) &sg) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETP);
- if (ioctl(ttyfd, TIOCSETC, (char *) &tc) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETC);
- if (ioctl(ttyfd, TIOCSETD, (char *) &discipline) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETD);
- if (ioctl(ttyfd, TIOCSLTC, (char *) &ltc) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSLTC);
- if (ioctl(ttyfd, TIOCLSET, (char *) &lmode) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCLSET);
-#ifdef sony
- if (ioctl(ttyfd, TIOCKSET, (char *) &jmode) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCKSET);
- if (ioctl(ttyfd, TIOCKSETC, (char *) &jtc) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCKSETC);
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
- if (Console) {
-#ifdef TIOCCONS
- int on = 1;
- if (ioctl(ttyfd, TIOCCONS, (char *) &on) == -1)
- fprintf(stderr, "%s: cannot open console: %s\n",
- xterm_name, strerror(errno));
-#endif
-#ifdef SRIOCSREDIR
- int fd = open("/dev/console", O_RDWR);
- if (fd == -1 || ioctl(fd, SRIOCSREDIR, ttyfd) == -1)
- fprintf(stderr, "%s: cannot open console: %s\n",
- xterm_name, strerror(errno));
- (void) close(fd);
-#endif
- }
-#endif /* TIOCCONS */
- }
-
- signal(SIGCHLD, SIG_DFL);
-#ifdef USE_SYSV_SIGHUP
- /* watch out for extra shells (I don't understand either) */
- signal(SIGHUP, SIG_DFL);
-#else
- signal(SIGHUP, SIG_IGN);
-#endif
- /* restore various signals to their defaults */
- signal(SIGINT, SIG_DFL);
- signal(SIGQUIT, SIG_DFL);
- signal(SIGTERM, SIG_DFL);
-
- /*
- * If we're not asked to make the parent process set the
- * terminal's erase mode, and if we had no ttyModes resource,
- * then set the terminal's erase mode from our best guess.
- */
-#if OPT_INITIAL_ERASE
- TRACE(("check if we should set erase to %d:%s\n\tptyInitialErase:%d,\n\toveride_tty_modes:%d,\n\tXTTYMODE_erase:%d\n",
- initial_erase,
- (!resource.ptyInitialErase
- && !override_tty_modes
- && !ttymodelist[XTTYMODE_erase].set)
- ? "YES" : "NO",
- resource.ptyInitialErase,
- override_tty_modes,
- ttymodelist[XTTYMODE_erase].set));
- if (!resource.ptyInitialErase
- && !override_tty_modes
- && !ttymodelist[XTTYMODE_erase].set) {
-#if OPT_TRACE
- int old_erase;
-#endif
-#ifdef TERMIO_STRUCT
- if (ttyGetAttr(ttyfd, &tio) == -1)
- tio = d_tio;
-#if OPT_TRACE
- old_erase = tio.c_cc[VERASE];
-#endif
- tio.c_cc[VERASE] = initial_erase;
- rc = ttySetAttr(ttyfd, &tio);
-#else /* !TERMIO_STRUCT */
- if (ioctl(ttyfd, TIOCGETP, (char *) &sg) == -1)
- sg = d_sg;
-#if OPT_TRACE
- old_erase = sg.sg_erase;
-#endif
- sg.sg_erase = initial_erase;
- rc = ioctl(ttyfd, TIOCSETP, (char *) &sg);
-#endif /* TERMIO_STRUCT */
- TRACE(("%s setting erase to %d (was %d)\n",
- rc ? "FAIL" : "OK", initial_erase, old_erase));
- }
-#endif
-
- /* copy the environment before Setenv'ing */
- for (i = 0; environ[i] != NULL; i++) ;
- /* compute number of xtermSetenv() calls below */
- envsize = 1; /* (NULL terminating entry) */
- envsize += 5; /* TERM, WINDOWID, DISPLAY, _SHELL, _VERSION */
-#ifdef HAVE_UTMP
- envsize += 1; /* LOGNAME */
-#endif /* HAVE_UTMP */
-#ifdef USE_SYSV_ENVVARS
- envsize += 2; /* COLUMNS, LINES */
-#ifdef HAVE_UTMP
- envsize += 2; /* HOME, SHELL */
-#endif /* HAVE_UTMP */
-#ifdef OWN_TERMINFO_DIR
- envsize += 1; /* TERMINFO */
-#endif
-#else /* USE_SYSV_ENVVARS */
- envsize += 1; /* TERMCAP */
-#endif /* USE_SYSV_ENVVARS */
- envnew = TypeCallocN(char *, (unsigned) i + envsize);
- memmove((char *) envnew, (char *) environ, i * sizeof(char *));
- environ = envnew;
- xtermSetenv("TERM=", TermName);
- if (!TermName)
- *newtc = 0;
-
- sprintf(buf, "%lu",
- ((unsigned long) XtWindow(SHELL_OF(CURRENT_EMU(screen)))));
- xtermSetenv("WINDOWID=", buf);
-
- /* put the display into the environment of the shell */
- xtermSetenv("DISPLAY=", XDisplayString(screen->display));
-
- xtermSetenv("XTERM_VERSION=", xtermVersion());
-
- signal(SIGTERM, SIG_DFL);
-
- /* this is the time to go and set up stdin, out, and err
- */
- {
-#if defined(CRAY) && (OSMAJORVERSION >= 6)
- close_fd(ttyfd);
-
- (void) close(0);
-
- if (open("/dev/tty", O_RDWR)) {
- SysError(ERROR_OPDEVTTY);
- }
- (void) close(1);
- (void) close(2);
- dup(0);
- dup(0);
-#else
- /* dup the tty */
- for (i = 0; i <= 2; i++)
- if (i != ttyfd) {
- (void) close(i);
- (void) dup(ttyfd);
- }
-#ifndef ATT
- /* and close the tty */
- if (ttyfd > 2)
- close_fd(ttyfd);
-#endif
-#endif /* CRAY */
- }
-
-#if !defined(USE_SYSV_PGRP)
-#ifdef TIOCSCTTY
- setsid();
- ioctl(0, TIOCSCTTY, 0);
-#endif
- ioctl(0, TIOCSPGRP, (char *) &pgrp);
- setpgrp(0, 0);
- close(open(ttydev, O_WRONLY));
- setpgrp(0, pgrp);
-#if defined(__QNX__)
- tcsetpgrp(0, pgrp /*setsid() */ );
-#endif
-#endif /* !USE_SYSV_PGRP */
-
-#ifdef Lynx
- {
- TERMIO_STRUCT t;
- if (ttyGetAttr(0, &t) >= 0) {
- /* this gets lost somewhere on our way... */
- t.c_oflag |= OPOST;
- ttySetAttr(0, &t);
- }
- }
-#endif
-
-#ifdef HAVE_UTMP
- pw = getpwuid(screen->uid);
- login_name = NULL;
- if (pw && pw->pw_name) {
-#ifdef HAVE_GETLOGIN
- /*
- * If the value from getlogin() differs from the value we
- * get by looking in the password file, check if it does
- * correspond to the same uid. If so, allow that as an
- * alias for the uid.
- *
- * Of course getlogin() will fail if we're started from
- * a window-manager, since there's no controlling terminal
- * to fuss with. In that case, try to get something useful
- * from the user's $LOGNAME or $USER environment variables.
- */
- if (((login_name = getlogin()) != NULL
- || (login_name = getenv("LOGNAME")) != NULL
- || (login_name = getenv("USER")) != NULL)
- && strcmp(login_name, pw->pw_name)) {
- struct passwd *pw2 = getpwnam(login_name);
- if (pw2 != 0) {
- uid_t uid2 = pw2->pw_uid;
- pw = getpwuid(screen->uid);
- if ((uid_t) pw->pw_uid != uid2)
- login_name = NULL;
- } else {
- pw = getpwuid(screen->uid);
- }
- }
-#endif
- if (login_name == NULL)
- login_name = pw->pw_name;
- if (login_name != NULL)
- login_name = x_strdup(login_name);
- }
- if (login_name != NULL) {
- xtermSetenv("LOGNAME=", login_name); /* for POSIX */
- }
-#ifndef USE_UTEMPTER
-#ifdef USE_SYSV_UTMP
- /* Set up our utmp entry now. We need to do it here
- * for the following reasons:
- * - It needs to have our correct process id (for
- * login).
- * - If our parent was to set it after the fork(),
- * it might make it out before we need it.
- * - We need to do it before we go and change our
- * user and group id's.
- */
- (void) call_setutent();
- init_utmp(DEAD_PROCESS, &utmp);
-
- /* position to entry in utmp file */
- /* Test return value: beware of entries left behind: PSz 9 Mar 00 */
- if (!(utret = find_utmp(&utmp))) {
- (void) call_setutent();
- init_utmp(USER_PROCESS, &utmp);
- if (!(utret = find_utmp(&utmp))) {
- (void) call_setutent();
- }
- }
-#if OPT_TRACE
- if (!utret)
- TRACE(("getutid: NULL\n"));
- else
- TRACE(("getutid: pid=%d type=%d user=%s line=%s id=%s\n",
- utret->ut_pid, utret->ut_type, utret->ut_user,
- utret->ut_line, utret->ut_id));
-#endif
-
- /* set up the new entry */
- utmp.ut_type = USER_PROCESS;
-#ifdef HAVE_UTMP_UT_XSTATUS
- utmp.ut_xstatus = 2;
-#endif
- (void) strncpy(utmp.ut_user,
- (login_name != NULL) ? login_name : "????",
- sizeof(utmp.ut_user));
- /* why are we copying this string again? (see above) */
- (void) strncpy(utmp.ut_id, my_utmp_id(ttydev), sizeof(utmp.ut_id));
- (void) strncpy(utmp.ut_line,
- my_pty_name(ttydev), sizeof(utmp.ut_line));
-
-#ifdef HAVE_UTMP_UT_HOST
- SetUtmpHost(utmp.ut_host, screen);
-#endif
- (void) strncpy(utmp.ut_name,
- (login_name) ? login_name : "????",
- sizeof(utmp.ut_name));
-
- utmp.ut_pid = getpid();
-#if defined(HAVE_UTMP_UT_XTIME)
-#if defined(HAVE_UTMP_UT_SESSION)
- utmp.ut_session = getsid(0);
-#endif
- utmp.ut_xtime = time((time_t *) 0);
- utmp.ut_tv.tv_usec = 0;
-#else
- utmp.ut_time = time((time_t *) 0);
-#endif
-
- /* write out the entry */
- if (!resource.utmpInhibit) {
- errno = 0;
- call_pututline(&utmp);
- TRACE(("pututline: id %s, line %s, pid %ld, errno %d %s\n",
- utmp.ut_id,
- utmp.ut_line,
- (long) utmp.ut_pid,
- errno, (errno != 0) ? strerror(errno) : ""));
- }
-#ifdef WTMP
-#if defined(WTMPX_FILE) && (defined(SVR4) || defined(__SCO__))
- if (term->misc.login_shell)
- updwtmpx(WTMPX_FILE, &utmp);
-#elif defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0))
- if (term->misc.login_shell)
- call_updwtmp(etc_wtmp, &utmp);
-#else
- if (term->misc.login_shell &&
- (i = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- write(i, (char *) &utmp, sizeof(utmp));
- close(i);
- }
-#endif
-#endif
- /* close the file */
- (void) call_endutent();
-
-#else /* USE_SYSV_UTMP */
- /* We can now get our ttyslot! We can also set the initial
- * utmp entry.
- */
- tslot = ttyslot();
- added_utmp_entry = False;
- {
- if (tslot > 0 && pw && !resource.utmpInhibit &&
- (i = open(etc_utmp, O_WRONLY)) >= 0) {
- bzero((char *) &utmp, sizeof(utmp));
- (void) strncpy(utmp.ut_line,
- my_pty_name(ttydev),
- sizeof(utmp.ut_line));
- (void) strncpy(utmp.ut_name, login_name,
- sizeof(utmp.ut_name));
-#ifdef HAVE_UTMP_UT_HOST
- SetUtmpHost(utmp.ut_host, screen);
-#endif
- /* cast needed on Ultrix 4.4 */
- time((time_t *) & utmp.ut_time);
- lseek(i, (long) (tslot * sizeof(utmp)), 0);
- write(i, (char *) &utmp, sizeof(utmp));
- close(i);
- added_utmp_entry = True;
-#if defined(WTMP)
- if (term->misc.login_shell &&
- (i = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- int status;
- status = write(i, (char *) &utmp, sizeof(utmp));
- status = close(i);
- }
-#elif defined(MNX_LASTLOG)
- if (term->misc.login_shell &&
- (i = open(_U_LASTLOG, O_WRONLY)) >= 0) {
- lseek(i, (long) (screen->uid *
- sizeof(utmp)), 0);
- write(i, (char *) &utmp, sizeof(utmp));
- close(i);
- }
-#endif /* WTMP or MNX_LASTLOG */
- } else
- tslot = -tslot;
- }
-
- /* Let's pass our ttyslot to our parent so that it can
- * clean up after us.
- */
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake) {
- handshake.tty_slot = tslot;
- }
-#endif /* OPT_PTY_HANDSHAKE */
-#endif /* USE_SYSV_UTMP */
-
-#ifdef USE_LASTLOGX
- if (term->misc.login_shell) {
- bzero((char *) &lastlog, sizeof(lastlog));
- (void) strncpy(lastlog.ll_line,
- my_pty_name(ttydev),
- sizeof(lastlog.ll_line));
- X_GETTIMEOFDAY(&lastlog.ll_tv);
- SetUtmpHost(lastlog.ll_host, screen);
- updlastlogx(_PATH_LASTLOGX, screen->uid, &lastlog);
- }
-#endif
-
-#ifdef USE_LASTLOG
- if (term->misc.login_shell &&
- (i = open(etc_lastlog, O_WRONLY)) >= 0) {
- bzero((char *) &lastlog, sizeof(struct lastlog));
- (void) strncpy(lastlog.ll_line,
- my_pty_name(ttydev),
- sizeof(lastlog.ll_line));
- SetUtmpHost(lastlog.ll_host, screen);
- time(&lastlog.ll_time);
- lseek(i, (long) (screen->uid * sizeof(struct lastlog)), 0);
- write(i, (char *) &lastlog, sizeof(struct lastlog));
- close(i);
- }
-#endif /* USE_LASTLOG */
-
-#if defined(USE_UTMP_SETGID)
- /* Switch to real gid after writing utmp entry */
- utmpGid = getegid();
- if (getgid() != getegid()) {
- utmpGid = getegid();
- setegid(getgid());
- TRACE(("switch to real gid %d after writing utmp\n", getgid()));
- }
-#endif
-
-#if OPT_PTY_HANDSHAKE
- /* Let our parent know that we set up our utmp entry
- * so that it can clean up after us.
- */
- if (resource.ptyHandshake) {
- handshake.status = UTMP_ADDED;
- handshake.error = 0;
- strcpy(handshake.buffer, ttydev);
- (void) write(cp_pipe[1], (char *) &handshake, sizeof(handshake));
- }
-#endif /* OPT_PTY_HANDSHAKE */
-#endif /* USE_UTEMPTER */
-#endif /* HAVE_UTMP */
-
- (void) setgid(screen->gid);
-#ifdef HAS_BSD_GROUPS
- if (geteuid() == 0 && pw) {
- if (initgroups(login_name, pw->pw_gid)) {
- perror("initgroups failed");
- SysError(ERROR_INIGROUPS);
- }
- }
-#endif
- if (setuid(screen->uid)) {
- SysError(ERROR_SETUID);
- }
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake) {
- /* mark the pipes as close on exec */
- fcntl(cp_pipe[1], F_SETFD, 1);
- fcntl(pc_pipe[0], F_SETFD, 1);
-
- /* We are at the point where we are going to
- * exec our shell (or whatever). Let our parent
- * know we arrived safely.
- */
- handshake.status = PTY_GOOD;
- handshake.error = 0;
- (void) strcpy(handshake.buffer, ttydev);
- (void) write(cp_pipe[1], (char *) &handshake, sizeof(handshake));
-
- if (waiting_for_initial_map) {
- i = read(pc_pipe[0], (char *) &handshake,
- sizeof(handshake));
- if (i != sizeof(handshake) ||
- handshake.status != PTY_EXEC) {
- /* some very bad problem occurred */
- exit(ERROR_PTY_EXEC);
- }
- if (handshake.rows > 0 && handshake.cols > 0) {
- set_max_row(screen, handshake.rows);
- set_max_col(screen, handshake.cols);
-#ifdef TTYSIZE_STRUCT
- TTYSIZE_ROWS(ts) = MaxRows(screen);
- TTYSIZE_COLS(ts) = MaxCols(screen);
-#if defined(USE_STRUCT_WINSIZE)
- ts.ws_xpixel = FullWidth(screen);
- ts.ws_ypixel = FullHeight(screen);
-#endif
-#endif /* TTYSIZE_STRUCT */
- }
- }
- }
-#endif /* OPT_PTY_HANDSHAKE */
-
-#ifdef USE_SYSV_ENVVARS
- {
- char numbuf[12];
- sprintf(numbuf, "%d", MaxCols(screen));
- xtermSetenv("COLUMNS=", numbuf);
- sprintf(numbuf, "%d", MaxRows(screen));
- xtermSetenv("LINES=", numbuf);
- }
-#ifdef HAVE_UTMP
- if (pw) { /* SVR4 doesn't provide these */
- if (!getenv("HOME"))
- xtermSetenv("HOME=", pw->pw_dir);
- if (!getenv("SHELL"))
- xtermSetenv("SHELL=", pw->pw_shell);
- }
-#endif /* HAVE_UTMP */
-#ifdef OWN_TERMINFO_DIR
- xtermSetenv("TERMINFO=", OWN_TERMINFO_DIR);
-#endif
-#else /* USE_SYSV_ENVVARS */
- if (!TEK4014_ACTIVE(screen) && *newtc) {
- strcpy(termcap, newtc);
- resize(screen, termcap, newtc);
- }
- if (term->misc.titeInhibit && !term->misc.tiXtraScroll) {
- remove_termcap_entry(newtc, "ti=");
- remove_termcap_entry(newtc, "te=");
- }
- /*
- * work around broken termcap entries */
- if (resource.useInsertMode) {
- remove_termcap_entry(newtc, "ic=");
- /* don't get duplicates */
- remove_termcap_entry(newtc, "im=");
- remove_termcap_entry(newtc, "ei=");
- remove_termcap_entry(newtc, "mi");
- if (*newtc)
- strcat(newtc, ":im=\\E[4h:ei=\\E[4l:mi:");
- }
- if (*newtc) {
-#if OPT_INITIAL_ERASE
- unsigned len;
- remove_termcap_entry(newtc, TERMCAP_ERASE "=");
- len = strlen(newtc);
- if (len != 0 && newtc[len - 1] == ':')
- len--;
- sprintf(newtc + len, ":%s=\\%03o:",
- TERMCAP_ERASE,
- CharOf(initial_erase));
-#endif
- xtermSetenv("TERMCAP=", newtc);
- }
-#endif /* USE_SYSV_ENVVARS */
-
- /* need to reset after all the ioctl bashing we did above */
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake) {
-#ifdef TTYSIZE_STRUCT
- i = SET_TTYSIZE(0, ts);
- TRACE(("spawn SET_TTYSIZE %dx%d return %d\n",
- TTYSIZE_ROWS(ts),
- TTYSIZE_COLS(ts), i));
-#endif /* TTYSIZE_STRUCT */
- }
-#endif /* OPT_PTY_HANDSHAKE */
- signal(SIGHUP, SIG_DFL);
-
- if ((ptr = explicit_shname) == NULL) {
- if (((ptr = getenv("SHELL")) == NULL || *ptr == 0) &&
- ((pw == NULL && (pw = getpwuid(screen->uid)) == NULL) ||
- *(ptr = pw->pw_shell) == 0)) {
- ptr = "/bin/sh";
- }
- } else {
- xtermSetenv("SHELL=", explicit_shname);
- }
- xtermSetenv("XTERM_SHELL=", ptr);
-
- shname = x_basename(ptr);
- TRACE(("shell path '%s' leaf '%s'\n", ptr, shname));
-
-#if OPT_LUIT_PROG
- /*
- * Use two copies of command_to_exec, in case luit is not actually
- * there, or refuses to run. In that case we will fall-through to
- * to command that the user gave anyway.
- */
- if (command_to_exec_with_luit) {
- xtermSetenv("XTERM_SHELL=",
- xtermFindShell(*command_to_exec_with_luit, False));
- TRACE(("spawning command \"%s\"\n", *command_to_exec_with_luit));
- execvp(*command_to_exec_with_luit, command_to_exec_with_luit);
- /* print error message on screen */
- fprintf(stderr, "%s: Can't execvp %s: %s\n",
- xterm_name, *command_to_exec_with_luit, strerror(errno));
- fprintf(stderr, "%s: cannot support your locale.\n",
- xterm_name);
- }
-#endif
- if (command_to_exec) {
- xtermSetenv("XTERM_SHELL=",
- xtermFindShell(*command_to_exec, False));
- TRACE(("spawning command \"%s\"\n", *command_to_exec));
- execvp(*command_to_exec, command_to_exec);
- if (command_to_exec[1] == 0)
- execlp(ptr, shname, "-c", command_to_exec[0], (void *) 0);
- /* print error message on screen */
- fprintf(stderr, "%s: Can't execvp %s: %s\n",
- xterm_name, *command_to_exec, strerror(errno));
- }
-#ifdef USE_SYSV_SIGHUP
- /* fix pts sh hanging around */
- signal(SIGHUP, SIG_DFL);
-#endif
-
- shname_minus = CastMallocN(char, strlen(shname) + 2);
- (void) strcpy(shname_minus, "-");
- (void) strcat(shname_minus, shname);
-#ifndef TERMIO_STRUCT
- ldisc = XStrCmp("csh", shname + strlen(shname) - 3) == 0 ?
- NTTYDISC : 0;
- ioctl(0, TIOCSETD, (char *) &ldisc);
-#endif /* !TERMIO_STRUCT */
-
-#ifdef USE_LOGIN_DASH_P
- if (term->misc.login_shell && pw && added_utmp_entry)
- execl(bin_login, "login", "-p", "-f", login_name, (void *) 0);
-#endif
- execlp(ptr,
- (term->misc.login_shell ? shname_minus : shname),
- (void *) 0);
-
- /* Exec failed. */
- fprintf(stderr, "%s: Could not exec %s: %s\n", xterm_name,
- ptr, strerror(errno));
- (void) sleep(5);
- exit(ERROR_EXEC);
- }
- /* end if in child after fork */
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake) {
- /* Parent process. Let's handle handshaked requests to our
- * child process.
- */
-
- /* close childs's sides of the pipes */
- close(cp_pipe[1]);
- close(pc_pipe[0]);
-
- for (done = 0; !done;) {
- if (read(cp_pipe[0],
- (char *) &handshake,
- sizeof(handshake)) <= 0) {
- /* Our child is done talking to us. If it terminated
- * due to an error, we will catch the death of child
- * and clean up.
- */
- break;
- }
-
- switch (handshake.status) {
- case PTY_GOOD:
- /* Success! Let's free up resources and
- * continue.
- */
- done = 1;
- break;
-
- case PTY_BAD:
- /* The open of the pty failed! Let's get
- * another one.
- */
- (void) close(screen->respond);
- if (get_pty(&screen->respond, XDisplayString(screen->display))) {
- /* no more ptys! */
- fprintf(stderr,
- "%s: child process can find no available ptys: %s\n",
- xterm_name, strerror(errno));
- handshake.status = PTY_NOMORE;
- write(pc_pipe[1], (char *) &handshake, sizeof(handshake));
- exit(ERROR_PTYS);
- }
- handshake.status = PTY_NEW;
- (void) strcpy(handshake.buffer, ttydev);
- write(pc_pipe[1], (char *) &handshake, sizeof(handshake));
- break;
-
- case PTY_FATALERROR:
- errno = handshake.error;
- close(cp_pipe[0]);
- close(pc_pipe[1]);
- SysError(handshake.fatal_error);
- /*NOTREACHED */
-
- case UTMP_ADDED:
- /* The utmp entry was set by our slave. Remember
- * this so that we can reset it later.
- */
- added_utmp_entry = True;
-#ifndef USE_SYSV_UTMP
- tslot = handshake.tty_slot;
-#endif /* USE_SYSV_UTMP */
- free(ttydev);
- ttydev = x_strdup(handshake.buffer);
- break;
- default:
- fprintf(stderr, "%s: unexpected handshake status %d\n",
- xterm_name,
- (int) handshake.status);
- }
- }
- /* close our sides of the pipes */
- if (!waiting_for_initial_map) {
- close(cp_pipe[0]);
- close(pc_pipe[1]);
- }
- }
-#endif /* OPT_PTY_HANDSHAKE */
- }
-
- /* end if no slave */
- /*
- * still in parent (xterm process)
- */
-#ifdef USE_SYSV_SIGHUP
- /* hung sh problem? */
- signal(SIGHUP, SIG_DFL);
-#else
- signal(SIGHUP, SIG_IGN);
-#endif
-
-/*
- * Unfortunately, System V seems to have trouble divorcing the child process
- * from the process group of xterm. This is a problem because hitting the
- * INTR or QUIT characters on the keyboard will cause xterm to go away if we
- * don't ignore the signals. This is annoying.
- */
-
-#if defined(USE_SYSV_SIGNALS) && !defined(SIGTSTP)
- signal(SIGINT, SIG_IGN);
-
-#ifndef SYSV
- /* hung shell problem */
- signal(SIGQUIT, SIG_IGN);
-#endif
- signal(SIGTERM, SIG_IGN);
-#elif defined(SYSV) || defined(__osf__)
- /* if we were spawned by a jobcontrol smart shell (like ksh or csh),
- * then our pgrp and pid will be the same. If we were spawned by
- * a jobcontrol dumb shell (like /bin/sh), then we will be in our
- * parent's pgrp, and we must ignore keyboard signals, or we will
- * tank on everything.
- */
- if (getpid() == getpgrp()) {
- (void) signal(SIGINT, Exit);
- (void) signal(SIGQUIT, Exit);
- (void) signal(SIGTERM, Exit);
- } else {
- (void) signal(SIGINT, SIG_IGN);
- (void) signal(SIGQUIT, SIG_IGN);
- (void) signal(SIGTERM, SIG_IGN);
- }
- (void) signal(SIGPIPE, Exit);
-#else /* SYSV */
- signal(SIGINT, Exit);
- signal(SIGQUIT, Exit);
- signal(SIGTERM, Exit);
- signal(SIGPIPE, Exit);
-#endif /* USE_SYSV_SIGNALS and not SIGTSTP */
-
- return 0;
-} /* end spawn */
-
-SIGNAL_T
-Exit(int n)
-{
- TScreen *screen = &term->screen;
-
-#ifdef USE_UTEMPTER
- if (!resource.utmpInhibit && added_utmp_entry)
- removeFromUtmp();
-#elif defined(HAVE_UTMP)
-#ifdef USE_SYSV_UTMP
- struct UTMP_STR utmp;
- struct UTMP_STR *utptr;
-
- /* don't do this more than once */
- if (xterm_exiting)
- SIGNAL_RETURN;
- xterm_exiting = True;
-
-#ifdef PUCC_PTYD
- closepty(ttydev, ptydev, (resource.utmpInhibit ? OPTY_NOP : OPTY_LOGIN), screen->respond);
-#endif /* PUCC_PTYD */
-
- /* cleanup the utmp entry we forged earlier */
- if (!resource.utmpInhibit
-#if OPT_PTY_HANDSHAKE /* without handshake, no way to know */
- && (resource.ptyHandshake && added_utmp_entry)
-#endif /* OPT_PTY_HANDSHAKE */
- ) {
-#if defined(USE_UTMP_SETGID)
- if (utmpGid != -1) {
- /* Switch back to group utmp */
- setegid(utmpGid);
- TRACE(("switched back to group %d (check: %d)\n",
- utmpGid, (int) getgid()));
- }
-#endif
- init_utmp(USER_PROCESS, &utmp);
- (void) call_setutent();
-
- /*
- * We could use getutline() if we didn't support old systems.
- */
- while ((utptr = find_utmp(&utmp)) != 0) {
- if (utptr->ut_pid == screen->pid) {
- utptr->ut_type = DEAD_PROCESS;
-#if defined(HAVE_UTMP_UT_XTIME)
-#if defined(HAVE_UTMP_UT_SESSION)
- utptr->ut_session = getsid(0);
-#endif
- utptr->ut_xtime = time((time_t *) 0);
- utptr->ut_tv.tv_usec = 0;
-#else
- *utptr->ut_user = 0;
- utptr->ut_time = time((time_t *) 0);
-#endif
- (void) call_pututline(utptr);
-#ifdef WTMP
-#if defined(WTMPX_FILE) && (defined(SVR4) || defined(__SCO__))
- if (term->misc.login_shell)
- updwtmpx(WTMPX_FILE, utptr);
-#elif defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0))
- strncpy(utmp.ut_line, utptr->ut_line, sizeof(utmp.ut_line));
- if (term->misc.login_shell)
- call_updwtmp(etc_wtmp, utptr);
-#else
- /* set wtmp entry if wtmp file exists */
- if (term->misc.login_shell) {
- int fd;
- if ((fd = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- write(fd, utptr, sizeof(*utptr));
- close(fd);
- }
- }
-#endif
-#endif
- break;
- }
- memset(utptr, 0, sizeof(*utptr)); /* keep searching */
- }
- (void) call_endutent();
- }
-#else /* not USE_SYSV_UTMP */
- int wfd;
- struct utmp utmp;
-
- if (!resource.utmpInhibit && added_utmp_entry &&
- (am_slave < 0 && tslot > 0 && (wfd = open(etc_utmp, O_WRONLY)) >= 0)) {
- bzero((char *) &utmp, sizeof(utmp));
- lseek(wfd, (long) (tslot * sizeof(utmp)), 0);
- write(wfd, (char *) &utmp, sizeof(utmp));
- close(wfd);
-#ifdef WTMP
- if (term->misc.login_shell &&
- (wfd = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- (void) strncpy(utmp.ut_line,
- my_pty_name(ttydev),
- sizeof(utmp.ut_line));
- time(&utmp.ut_time);
- write(wfd, (char *) &utmp, sizeof(utmp));
- close(wfd);
- }
-#endif /* WTMP */
- }
-#endif /* USE_SYSV_UTMP */
-#endif /* HAVE_UTMP */
- close(screen->respond); /* close explicitly to avoid race with slave side */
-#ifdef ALLOWLOGGING
- if (screen->logging)
- CloseLog(screen);
-#endif
-
- if (am_slave < 0) {
- /* restore ownership of tty and pty */
- set_owner(ttydev, 0, 0, 0666U);
-#if (defined(USE_PTY_DEVICE) && !defined(__sgi) && !defined(__hpux))
- set_owner(ptydev, 0, 0, 0666U);
-#endif
- }
-#if OPT_TRACE || defined(NO_LEAKS)
- if (n == 0) {
- TRACE(("Freeing memory leaks\n"));
- if (term != 0) {
- Display *dpy = term->screen.display;
-
- if (term->screen.sbuf_address) {
- free(term->screen.sbuf_address);
- TRACE(("freed screen.sbuf_address\n"));
- }
- if (term->screen.allbuf) {
- free(term->screen.allbuf);
- TRACE(("freed screen.allbuf\n"));
- }
- if (term->screen.xim) {
- XCloseIM(term->screen.xim);
- TRACE(("freed screen.xim\n"));
- }
- if (toplevel) {
- XtDestroyWidget(toplevel);
- TRACE(("destroyed top-level widget\n"));
- }
- XtCloseDisplay(dpy);
- TRACE(("closed display\n"));
- }
- TRACE((0));
- }
-#endif
-
- exit(n);
- SIGNAL_RETURN;
-}
-
-/* ARGSUSED */
-static void
-resize(TScreen * screen, char *oldtc, char *newtc)
-{
-#ifndef USE_SYSV_ENVVARS
- char *ptr1, *ptr2;
- size_t i;
- int li_first = 0;
- char *temp;
-
- TRACE(("resize %s\n", oldtc));
- if ((ptr1 = x_strindex(oldtc, "co#")) == NULL) {
- strcat(oldtc, "co#80:");
- ptr1 = x_strindex(oldtc, "co#");
- }
- if ((ptr2 = x_strindex(oldtc, "li#")) == NULL) {
- strcat(oldtc, "li#24:");
- ptr2 = x_strindex(oldtc, "li#");
- }
- if (ptr1 > ptr2) {
- li_first++;
- temp = ptr1;
- ptr1 = ptr2;
- ptr2 = temp;
- }
- ptr1 += 3;
- ptr2 += 3;
- strncpy(newtc, oldtc, i = ptr1 - oldtc);
- temp = newtc + i;
- sprintf(temp, "%d", (li_first
- ? MaxRows(screen)
- : MaxCols(screen)));
- temp += strlen(temp);
- ptr1 = strchr(ptr1, ':');
- strncpy(temp, ptr1, i = ptr2 - ptr1);
- temp += i;
- sprintf(temp, "%d", (li_first
- ? MaxCols(screen)
- : MaxRows(screen)));
- ptr2 = strchr(ptr2, ':');
- strcat(temp, ptr2);
- TRACE((" ==> %s\n", newtc));
-#endif /* USE_SYSV_ENVVARS */
-}
-
-#endif /* ! VMS */
-
-/*
- * Does a non-blocking wait for a child process. If the system
- * doesn't support non-blocking wait, do nothing.
- * Returns the pid of the child, or 0 or -1 if none or error.
- */
-int
-nonblocking_wait(void)
-{
-#ifdef USE_POSIX_WAIT
- pid_t pid;
-
- pid = waitpid(-1, NULL, WNOHANG);
-#elif defined(USE_SYSV_SIGNALS) && (defined(CRAY) || !defined(SIGTSTP))
- /* cannot do non-blocking wait */
- int pid = 0;
-#else /* defined(USE_SYSV_SIGNALS) && (defined(CRAY) || !defined(SIGTSTP)) */
-#if defined(Lynx)
- int status;
-#else
- union wait status;
-#endif
- int pid;
-
- pid = wait3(&status, WNOHANG, (struct rusage *) NULL);
-#endif /* USE_POSIX_WAIT else */
- return pid;
-}
-
-#ifndef VMS
-
-/* ARGSUSED */
-static SIGNAL_T
-reapchild(int n GCC_UNUSED)
-{
- int olderrno = errno;
- int pid;
-
- pid = wait(NULL);
-
-#ifdef USE_SYSV_SIGNALS
- /* cannot re-enable signal before waiting for child
- * because then SVR4 loops. Sigh. HP-UX 9.01 too.
- */
- (void) signal(SIGCHLD, reapchild);
-#endif
-
- do {
- if (pid == term->screen.pid) {
-#ifdef DEBUG
- if (debug)
- fputs("Exiting\n", stderr);
-#endif
- if (!hold_screen)
- need_cleanup = TRUE;
- }
- } while ((pid = nonblocking_wait()) > 0);
-
- errno = olderrno;
- SIGNAL_RETURN;
-}
-#endif /* !VMS */
-
-static void
-remove_termcap_entry(char *buf, char *str)
-{
- char *base = buf;
- char *first = base;
- int count = 0;
- size_t len = strlen(str);
-
- TRACE(("*** remove_termcap_entry('%s', '%s')\n", str, buf));
-
- while (*buf != 0) {
- if (!count && !strncmp(buf, str, len)) {
- while (*buf != 0) {
- if (*buf == '\\')
- buf++;
- else if (*buf == ':')
- break;
- if (*buf != 0)
- buf++;
- }
- while ((*first++ = *buf++) != 0) ;
- TRACE(("...removed_termcap_entry('%s', '%s')\n", str, base));
- return;
- } else if (*buf == '\\') {
- buf++;
- } else if (*buf == ':') {
- first = buf;
- count = 0;
- } else if (!isspace(CharOf(*buf))) {
- count++;
- }
- if (*buf != 0)
- buf++;
- }
- TRACE(("...cannot remove\n"));
-}
-
-/*
- * parse_tty_modes accepts lines of the following form:
- *
- * [SETTING] ...
- *
- * where setting consists of the words in the modelist followed by a character
- * or ^char.
- */
-static int
-parse_tty_modes(char *s, struct _xttymodes *modelist)
-{
- struct _xttymodes *mp;
- int c;
- int count = 0;
-
- TRACE(("parse_tty_modes\n"));
- while (1) {
- size_t len;
-
- while (*s && isascii(CharOf(*s)) && isspace(CharOf(*s)))
- s++;
- if (!*s)
- return count;
-
- for (len = 0; isalnum(CharOf(s[len])); ++len) ;
- for (mp = modelist; mp->name; mp++) {
- if (len == mp->len
- && strncmp(s, mp->name, mp->len) == 0)
- break;
- }
- if (!mp->name)
- return -1;
-
- s += mp->len;
- while (*s && isascii(CharOf(*s)) && isspace(CharOf(*s)))
- s++;
- if (!*s)
- return -1;
-
- if ((c = decode_keyvalue(&s, False)) != -1) {
- mp->value = c;
- mp->set = 1;
- count++;
- TRACE(("...parsed #%d: %s=%#x\n", count, mp->name, c));
- }
- }
-}
-
-#ifndef VMS /* don't use pipes on OpenVMS */
-int
-GetBytesAvailable(int fd)
-{
-#if defined(FIONREAD)
- int arg;
- ioctl(fd, FIONREAD, (char *) &arg);
- return (int) arg;
-#elif defined(__CYGWIN__)
- fd_set set;
- struct timeval timeout =
- {0, 0};
-
- FD_ZERO(&set);
- FD_SET(fd, &set);
- if (Select(fd + 1, &set, NULL, NULL, &timeout) > 0)
- return 1;
- else
- return 0;
-#elif defined(FIORDCK)
- return (ioctl(fd, FIORDCHK, NULL));
-#else /* !FIORDCK */
- struct pollfd pollfds[1];
-
- pollfds[0].fd = fd;
- pollfds[0].events = POLLIN;
- return poll(pollfds, 1, 0);
-#endif
-}
-#endif /* !VMS */
-
-/* Utility function to try to hide system differences from
- everybody who used to call killpg() */
-
-int
-kill_process_group(int pid, int sig)
-{
- TRACE(("kill_process_group(pid=%d, sig=%d)\n", pid, sig));
-#if defined(SVR4) || defined(SYSV) || !defined(X_NOT_POSIX)
- return kill(-pid, sig);
-#else
- return killpg(pid, sig);
-#endif
-}
-
-#if OPT_EBCDIC
-int
-A2E(int x)
-{
- char c;
- c = x;
- __atoe_l(&c, 1);
- return c;
-}
-
-int
-E2A(int x)
-{
- char c;
- c = x;
- __etoa_l(&c, 1);
- return c;
-}
-#endif
-
-#if defined(__QNX__) && !defined(__QNXNTO__)
-#include <sys/types.h>
-#include <sys/proc_msg.h>
-#include <sys/kernel.h>
-#include <string.h>
-#include <errno.h>
-
-struct _proc_session ps;
-struct _proc_session_reply rps;
-
-int
-qsetlogin(char *login, char *ttyname)
-{
- int v = getsid(getpid());
-
- memset(&ps, 0, sizeof(ps));
- memset(&rps, 0, sizeof(rps));
-
- ps.type = _PROC_SESSION;
- ps.subtype = _PROC_SUB_ACTION1;
- ps.sid = v;
- strcpy(ps.name, login);
-
- Send(1, &ps, &rps, sizeof(ps), sizeof(rps));
-
- if (rps.status < 0)
- return (rps.status);
-
- ps.type = _PROC_SESSION;
- ps.subtype = _PROC_SUB_ACTION2;
- ps.sid = v;
- sprintf(ps.name, "//%d%s", getnid(), ttyname);
- Send(1, &ps, &rps, sizeof(ps), sizeof(rps));
-
- return (rps.status);
-}
-#endif
diff --git a/nx-X11/programs/xterm/main.c.X.original b/nx-X11/programs/xterm/main.c.X.original
deleted file mode 100644
index b84826cb4..000000000
--- a/nx-X11/programs/xterm/main.c.X.original
+++ /dev/null
@@ -1,4912 +0,0 @@
-/* $XTermId: main.c,v 1.477 2005/11/13 23:10:36 tom Exp $ */
-
-#if !defined(lint) && 0
-static char *rid = "$Xorg: main.c,v 1.7 2001/02/09 02:06:02 xorgcvs Exp $";
-#endif /* lint */
-
-/*
- * W A R N I N G
- *
- * If you think you know what all of this code is doing, you are
- * probably very mistaken. There be serious and nasty dragons here.
- *
- * This client is *not* to be taken as an example of how to write X
- * Toolkit applications. It is in need of a substantial rewrite,
- * ideally to create a generic tty widget with several different parsing
- * widgets so that you can plug 'em together any way you want. Don't
- * hold your breath, though....
- */
-
-/***********************************************************
-
-Copyright 2002-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-Copyright 1987, 1988 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 1987, 1988 by Digital Equipment Corporation, Maynard.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be used in
-advertising or publicity pertaining to distribution of the software
-without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* $XFree86: xc/programs/xterm/main.c,v 3.199 2005/11/13 23:10:36 dickey Exp $ */
-
-/* main.c */
-
-#define RES_OFFSET(field) XtOffsetOf(XTERM_RESOURCE, field)
-
-#include <xterm.h>
-
-#include <X11/cursorfont.h>
-#include <X11/Xlocale.h>
-
-#if OPT_TOOLBAR
-
-#if defined(HAVE_LIB_XAW)
-#include <X11/Xaw/Form.h>
-#elif defined(HAVE_LIB_XAW3D)
-#include <X11/Xaw3d/Form.h>
-#elif defined(HAVE_LIB_NEXTAW)
-#include <X11/neXtaw/Form.h>
-#elif defined(HAVE_LIB_XAWPLUS)
-#include <X11/XawPlus/Form.h>
-#endif
-
-#endif /* OPT_TOOLBAR */
-
-#include <pwd.h>
-#include <ctype.h>
-
-#include <data.h>
-#include <error.h>
-#include <menu.h>
-#include <main.h>
-#include <xstrings.h>
-#include <xterm_io.h>
-
-#if OPT_WIDE_CHARS
-#include <charclass.h>
-#endif
-
-#ifdef __osf__
-#define USE_SYSV_SIGNALS
-#define WTMP
-#include <pty.h> /* openpty() */
-#endif
-
-#ifdef __sgi
-#include <grp.h> /* initgroups() */
-#endif
-
-#ifdef USE_ISPTS_FLAG
-static Bool IsPts = False;
-#endif
-
-#if defined(__SCO__) || defined(SVR4) || defined(_POSIX_SOURCE)
-#define USE_POSIX_SIGNALS
-#endif
-
-#if defined(SYSV) && !defined(SVR4) && !defined(ISC22) && !defined(ISC30)
-/* older SYSV systems cannot ignore SIGHUP.
- Shell hangs, or you get extra shells, or something like that */
-#define USE_SYSV_SIGHUP
-#endif
-
-#if defined(sony) && defined(bsd43) && !defined(KANJI)
-#define KANJI
-#endif
-
-#ifdef linux
-#define USE_SYSV_PGRP
-#define USE_SYSV_SIGNALS
-#define WTMP
-#ifdef __GLIBC__
-#if (__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1))
-#include <pty.h>
-#endif
-#endif
-#endif
-
-#ifdef __MVS__
-#define USE_SYSV_PGRP
-#define USE_SYSV_SIGNALS
-#endif
-
-#ifdef __CYGWIN__
-#define LASTLOG
-#define WTMP
-#endif
-
-#ifdef __SCO__
-#ifndef _SVID3
-#define _SVID3
-#endif
-#endif
-
-#if defined(__GLIBC__) && !defined(linux)
-#define USE_SYSV_PGRP
-#define WTMP
-#define HAS_BSD_GROUPS
-#endif
-
-#if defined(USE_TTY_GROUP) || defined(USE_UTMP_SETGID)
-#include <grp.h>
-#endif
-
-#ifndef TTY_GROUP_NAME
-#define TTY_GROUP_NAME "tty"
-#endif
-
-#include <sys/stat.h>
-
-#ifdef Lynx
-#ifndef BSDLY
-#define BSDLY 0
-#endif
-#ifndef VTDLY
-#define VTDLY 0
-#endif
-#ifndef FFDLY
-#define FFDLY 0
-#endif
-#endif
-
-#ifdef SYSV /* { */
-
-#ifdef USE_USG_PTYS /* AT&T SYSV has no ptyio.h */
-#include <sys/stropts.h> /* for I_PUSH */
-#include <poll.h> /* for POLLIN */
-#endif /* USE_USG_PTYS */
-
-#define USE_SYSV_SIGNALS
-#define USE_SYSV_PGRP
-
-#if !defined(TIOCSWINSZ) || defined(__SCO__) || defined(__UNIXWARE__)
-#define USE_SYSV_ENVVARS /* COLUMNS/LINES vs. TERMCAP */
-#endif
-
-/*
- * now get system-specific includes
- */
-#ifdef CRAY
-#define HAS_BSD_GROUPS
-#endif
-
-#ifdef macII
-#define HAS_BSD_GROUPS
-#include <sys/ttychars.h>
-#undef USE_SYSV_ENVVARS
-#undef FIOCLEX
-#undef FIONCLEX
-#define setpgrp2 setpgrp
-#include <sgtty.h>
-#include <sys/resource.h>
-#endif
-
-#ifdef __hpux
-#define HAS_BSD_GROUPS
-#include <sys/ptyio.h>
-#endif /* __hpux */
-
-#ifdef __osf__
-#define HAS_BSD_GROUPS
-#undef USE_SYSV_PGRP
-#define setpgrp setpgid
-#endif
-
-#ifdef __sgi
-#define HAS_BSD_GROUPS
-#include <sys/sysmacros.h>
-#endif /* __sgi */
-
-#ifdef sun
-#include <sys/strredir.h>
-#endif
-
-#else /* } !SYSV { */ /* BSD systems */
-
-#ifdef __QNX__
-
-#ifndef __QNXNTO__
-#define ttyslot() 1
-#else
-#define USE_SYSV_PGRP
-extern __inline__
-ttyslot()
-{
- return 1; /* yuk */
-}
-#endif
-
-#else
-
-#if defined(__INTERIX) || defined(__APPLE__)
-#define setpgrp setpgid
-#endif
-
-#ifndef linux
-#ifndef VMS
-#ifndef USE_POSIX_TERMIOS
-#ifndef USE_ANY_SYSV_TERMIO
-#include <sgtty.h>
-#endif
-#endif /* USE_POSIX_TERMIOS */
-#ifdef Lynx
-#include <resource.h>
-#else
-#include <sys/resource.h>
-#endif
-#ifndef __INTERIX
-#define HAS_BSD_GROUPS
-#endif
-#endif /* !VMS */
-#endif /* !linux */
-
-#endif /* __QNX__ */
-
-#endif /* } !SYSV */
-
-#if defined(SVR4) && !defined(__CYGWIN__)
-#define HAS_SAVED_IDS_AND_SETEUID
-#endif
-
-#ifdef linux
-#define HAS_SAVED_IDS_AND_SETEUID
-#endif
-
-/* Xpoll.h and <sys/param.h> on glibc 2.1 systems have colliding NBBY's */
-#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
-#ifndef NOFILE
-#define NOFILE OPEN_MAX
-#endif
-#elif !(defined(VMS) || defined(WIN32) || defined(Lynx) || defined(__GNU__) || defined(__MVS__))
-#include <sys/param.h> /* for NOFILE */
-#endif
-
-#if defined(BSD) && (BSD >= 199103)
-#define WTMP
-#define HAS_SAVED_IDS_AND_SETEUID
-#endif
-
-#include <stdio.h>
-
-#ifdef __hpux
-#include <sys/utsname.h>
-#endif /* __hpux */
-
-#if defined(apollo) && (OSMAJORVERSION == 10) && (OSMINORVERSION < 4)
-#define ttyslot() 1
-#endif /* apollo */
-
-#if defined(UTMPX_FOR_UTMP)
-#define UTMP_STR utmpx
-#else
-#define UTMP_STR utmp
-#endif
-
-#if defined(USE_UTEMPTER)
-#include <utempter.h>
-#endif
-
-#if defined(UTMPX_FOR_UTMP)
-
-#include <utmpx.h>
-
-#define call_endutent endutxent
-#define call_getutid getutxid
-#define call_pututline pututxline
-#define call_setutent setutxent
-#define call_updwtmp updwtmpx
-
-#elif defined(HAVE_UTMP)
-
-#include <utmp.h>
-
-#if defined(_CRAY) && (OSMAJORVERSION < 8)
-extern struct utmp *getutid __((struct utmp * _Id));
-#endif
-
-#define call_endutent endutent
-#define call_getutid getutid
-#define call_pututline pututline
-#define call_setutent setutent
-#define call_updwtmp updwtmp
-
-#endif
-
-#if defined(USE_LASTLOG) && defined(HAVE_LASTLOG_H)
-#include <lastlog.h> /* caution: glibc 2.3.5 includes utmp.h here */
-#endif
-
-#ifndef USE_LASTLOGX
-#if defined(_NETBSD_SOURCE) && defined(_PATH_LASTLOGX)
-#define USE_LASTLOGX 1
-#endif
-#endif
-
-#ifdef PUCC_PTYD
-#include <local/openpty.h>
-#endif /* PUCC_PTYD */
-
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__APPLE__)
-#include <util.h> /* openpty() */
-#endif
-
-#ifdef __FreeBSD__
-#include <libutil.h> /* openpty() */
-#endif
-
-#if !defined(UTMP_FILENAME)
-#if defined(UTMP_FILE)
-#define UTMP_FILENAME UTMP_FILE
-#elif defined(_PATH_UTMP)
-#define UTMP_FILENAME _PATH_UTMP
-#else
-#define UTMP_FILENAME "/etc/utmp"
-#endif
-#endif
-
-#ifndef LASTLOG_FILENAME
-#ifdef _PATH_LASTLOG
-#define LASTLOG_FILENAME _PATH_LASTLOG
-#else
-#define LASTLOG_FILENAME "/usr/adm/lastlog" /* only on BSD systems */
-#endif
-#endif
-
-#if !defined(WTMP_FILENAME)
-#if defined(WTMP_FILE)
-#define WTMP_FILENAME WTMP_FILE
-#elif defined(_PATH_WTMP)
-#define WTMP_FILENAME _PATH_WTMP
-#elif defined(SYSV)
-#define WTMP_FILENAME "/etc/wtmp"
-#else
-#define WTMP_FILENAME "/usr/adm/wtmp"
-#endif
-#endif
-
-#include <signal.h>
-
-#if defined(__SCO__) || (defined(ISC) && !defined(_POSIX_SOURCE))
-#undef SIGTSTP /* defined, but not the BSD way */
-#endif
-
-#ifdef SIGTSTP
-#include <sys/wait.h>
-#endif
-
-#if defined(__SCO__) || defined(__UNIXWARE__)
-#undef ECHOKE
-#undef ECHOCTL
-#endif
-
-#ifdef X_NOT_POSIX
-extern long lseek();
-#if defined(USG) || defined(SVR4)
-extern unsigned sleep();
-#else
-extern void sleep();
-#endif
-extern char *ttyname();
-#endif
-
-#ifdef SYSV
-extern char *ptsname(int);
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- extern int tgetent(char *ptr, char *name);
- extern char *tgetstr(char *name, char **ptr);
-
-#ifdef __cplusplus
-}
-#endif
-#ifndef VMS
-static SIGNAL_T reapchild(int n);
-static int spawn(void);
-static void remove_termcap_entry(char *buf, char *str);
-#ifdef USE_PTY_SEARCH
-static int pty_search(int *pty);
-#endif
-#endif /* ! VMS */
-
-static int get_pty(int *pty, char *from);
-static void get_terminal(void);
-static void resize(TScreen * s, char *oldtc, char *newtc);
-static void set_owner(char *device, uid_t uid, gid_t gid, mode_t mode);
-
-static Bool added_utmp_entry = False;
-
-#if defined(USE_UTMP_SETGID)
-static int utmpGid = -1;
-static int really_get_pty(int *pty, char *from);
-#endif
-
-#if defined(USE_SYSV_UTMP) && !defined(USE_UTEMPTER)
-static Bool xterm_exiting = False;
-#endif
-
-static char *explicit_shname = NULL;
-
-/*
-** Ordinarily it should be okay to omit the assignment in the following
-** statement. Apparently the c89 compiler on AIX 4.1.3 has a bug, or does
-** it? Without the assignment though the compiler will init command_to_exec
-** to 0xffffffff instead of NULL; and subsequent usage, e.g. in spawn() to
-** SEGV.
-*/
-static char **command_to_exec = NULL;
-
-#if OPT_LUIT_PROG
-static char **command_to_exec_with_luit = NULL;
-#endif
-
-#define TERMCAP_ERASE "kb"
-#define VAL_INITIAL_ERASE A2E(8)
-
-/* choose a nice default value for speed - if we make it too low, users who
- * mistakenly use $TERM set to vt100 will get padding delays. Setting it to a
- * higher value is not useful since legacy applications (termcap) that care
- * about padding generally store the code in a short, which does not have
- * enough bits for the extended values.
- */
-#ifdef B38400 /* everyone should define this */
-#define VAL_LINE_SPEED B38400
-#else /* ...but xterm's used this for a long time */
-#define VAL_LINE_SPEED B9600
-#endif
-
-/* allow use of system default characters if defined and reasonable */
-#ifndef CBRK
-#define CBRK 0
-#endif
-#ifndef CDSUSP
-#define CDSUSP CONTROL('Y')
-#endif
-#ifndef CEOF
-#define CEOF CONTROL('D')
-#endif
-#ifndef CEOL
-#define CEOL 0
-#endif
-#ifndef CFLUSH
-#define CFLUSH CONTROL('O')
-#endif
-#ifndef CINTR
-#define CINTR 0177
-#endif
-#ifndef CKILL
-#define CKILL '@'
-#endif
-#ifndef CLNEXT
-#define CLNEXT CONTROL('V')
-#endif
-#ifndef CNUL
-#define CNUL 0
-#endif
-#ifndef CQUIT
-#define CQUIT CONTROL('\\')
-#endif
-#ifndef CRPRNT
-#define CRPRNT CONTROL('R')
-#endif
-#ifndef CSTART
-#define CSTART CONTROL('Q')
-#endif
-#ifndef CSTOP
-#define CSTOP CONTROL('S')
-#endif
-#ifndef CSUSP
-#define CSUSP CONTROL('Z')
-#endif
-#ifndef CSWTCH
-#define CSWTCH 0
-#endif
-#ifndef CWERASE
-#define CWERASE CONTROL('W')
-#endif
-
-#ifdef USE_ANY_SYSV_TERMIO
-#define TERMIO_STRUCT struct termio
-#define ttySetAttr(fd, datap) ioctl(fd, TCSETA, datap)
-#define ttyGetAttr(fd, datap) ioctl(fd, TCGETA, datap)
-#elif defined(USE_POSIX_TERMIOS)
-#define TERMIO_STRUCT struct termios
-#define ttySetAttr(fd, datap) tcsetattr(fd, TCSANOW, datap)
-#define ttyGetAttr(fd, datap) tcgetattr(fd, datap)
-#endif /* USE_ANY_SYSV_TERMIO */
-
-#ifndef VMS
-#ifdef TERMIO_STRUCT
-/* The following structures are initialized in main() in order
-** to eliminate any assumptions about the internal order of their
-** contents.
-*/
-static TERMIO_STRUCT d_tio;
-
-#ifdef HAS_LTCHARS
-static struct ltchars d_ltc;
-#endif /* HAS_LTCHARS */
-
-#ifdef TIOCLSET
-static unsigned int d_lmode;
-#endif /* TIOCLSET */
-
-#else /* !TERMIO_STRUCT */
-static struct sgttyb d_sg =
-{
- 0, 0, 0177, CKILL, (EVENP | ODDP | ECHO | XTABS | CRMOD)
-};
-static struct tchars d_tc =
-{
- CINTR, CQUIT, CSTART,
- CSTOP, CEOF, CBRK
-};
-static struct ltchars d_ltc =
-{
- CSUSP, CDSUSP, CRPRNT,
- CFLUSH, CWERASE, CLNEXT
-};
-static int d_disipline = NTTYDISC;
-static long int d_lmode = LCRTBS | LCRTERA | LCRTKIL | LCTLECH;
-#ifdef sony
-static long int d_jmode = KM_SYSSJIS | KM_ASCII;
-static struct jtchars d_jtc =
-{
- 'J', 'B'
-};
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
-#endif /* ! VMS */
-
-/*
- * SYSV has the termio.c_cc[V] and ltchars; BSD has tchars and ltchars;
- * SVR4 has only termio.c_cc, but it includes everything from ltchars.
- * POSIX termios has termios.c_cc, which is similar to SVR4.
- */
-#define TTYMODE(name) { name, sizeof(name)-1, 0, 0 }
-static int override_tty_modes = 0;
-/* *INDENT-OFF* */
-static struct _xttymodes {
- char *name;
- size_t len;
- int set;
- Char value;
-} ttymodelist[] = {
- TTYMODE("intr"), /* tchars.t_intrc ; VINTR */
-#define XTTYMODE_intr 0
- TTYMODE("quit"), /* tchars.t_quitc ; VQUIT */
-#define XTTYMODE_quit 1
- TTYMODE("erase"), /* sgttyb.sg_erase ; VERASE */
-#define XTTYMODE_erase 2
- TTYMODE("kill"), /* sgttyb.sg_kill ; VKILL */
-#define XTTYMODE_kill 3
- TTYMODE("eof"), /* tchars.t_eofc ; VEOF */
-#define XTTYMODE_eof 4
- TTYMODE("eol"), /* VEOL */
-#define XTTYMODE_eol 5
- TTYMODE("swtch"), /* VSWTCH */
-#define XTTYMODE_swtch 6
- TTYMODE("start"), /* tchars.t_startc ; VSTART */
-#define XTTYMODE_start 7
- TTYMODE("stop"), /* tchars.t_stopc ; VSTOP */
-#define XTTYMODE_stop 8
- TTYMODE("brk"), /* tchars.t_brkc */
-#define XTTYMODE_brk 9
- TTYMODE("susp"), /* ltchars.t_suspc ; VSUSP */
-#define XTTYMODE_susp 10
- TTYMODE("dsusp"), /* ltchars.t_dsuspc ; VDSUSP */
-#define XTTYMODE_dsusp 11
- TTYMODE("rprnt"), /* ltchars.t_rprntc ; VREPRINT */
-#define XTTYMODE_rprnt 12
- TTYMODE("flush"), /* ltchars.t_flushc ; VDISCARD */
-#define XTTYMODE_flush 13
- TTYMODE("weras"), /* ltchars.t_werasc ; VWERASE */
-#define XTTYMODE_weras 14
- TTYMODE("lnext"), /* ltchars.t_lnextc ; VLNEXT */
-#define XTTYMODE_lnext 15
- TTYMODE("status"), /* VSTATUS */
-#define XTTYMODE_status 16
- TTYMODE("erase2"), /* VERASE2 */
-#define XTTYMODE_erase2 17
- TTYMODE("eol2"), /* VEOL2 */
-#define XTTYMODE_eol2 18
- { NULL, 0, 0, '\0' }, /* end of data */
-};
-/* *INDENT-ON* */
-
-#define TMODE(ind,var) if (ttymodelist[ind].set) var = ttymodelist[ind].value
-
-static int parse_tty_modes(char *s, struct _xttymodes *modelist);
-
-#ifdef USE_SYSV_UTMP
-#if (defined(AIXV3) && (OSMAJORVERSION < 4)) && !(defined(getutid))
-extern struct utmp *getutid();
-#endif /* AIXV3 */
-
-#else /* not USE_SYSV_UTMP */
-static char etc_utmp[] = UTMP_FILENAME;
-#endif /* USE_SYSV_UTMP */
-
-#ifndef USE_UTEMPTER
-#ifdef USE_LASTLOG
-static char etc_lastlog[] = LASTLOG_FILENAME;
-#endif
-
-#ifdef WTMP
-static char etc_wtmp[] = WTMP_FILENAME;
-#endif
-#endif /* !USE_UTEMPTER */
-
-/*
- * Some people with 4.3bsd /bin/login seem to like to use login -p -f user
- * to implement xterm -ls. They can turn on USE_LOGIN_DASH_P and turn off
- * WTMP and USE_LASTLOG.
- */
-#ifdef USE_LOGIN_DASH_P
-#ifndef LOGIN_FILENAME
-#define LOGIN_FILENAME "/bin/login"
-#endif
-static char bin_login[] = LOGIN_FILENAME;
-#endif
-
-static char passedPty[PTYCHARLEN + 1]; /* name if pty if slave */
-
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
-static int Console;
-#include <X11/Xmu/SysUtil.h> /* XmuGetHostname */
-#define MIT_CONSOLE_LEN 12
-#define MIT_CONSOLE "MIT_CONSOLE_"
-static char mit_console_name[255 + MIT_CONSOLE_LEN + 1] = MIT_CONSOLE;
-static Atom mit_console;
-#endif /* TIOCCONS */
-
-#ifndef USE_SYSV_UTMP
-static int tslot;
-#endif /* USE_SYSV_UTMP */
-static sigjmp_buf env;
-
-#define SetUtmpHost(dst, screen) \
- { \
- char host[sizeof(dst) + 1]; \
- strncpy(host, DisplayString(screen->display), sizeof(host)); \
- TRACE(("DisplayString(%s)\n", host)); \
- if (!resource.utmpDisplayId) { \
- char *endptr = strrchr(host, ':'); \
- if (endptr) { \
- TRACE(("trimming display-id '%s'\n", host)); \
- *endptr = '\0'; \
- } \
- } \
- strncpy(dst, host, sizeof(dst)); \
- }
-
-/* used by VT (charproc.c) */
-
-static XtResource application_resources[] =
-{
- Sres("name", "Name", xterm_name, DFT_TERMTYPE),
- Sres("iconGeometry", "IconGeometry", icon_geometry, NULL),
- Sres(XtNtitle, XtCTitle, title, NULL),
- Sres(XtNiconName, XtCIconName, icon_name, NULL),
- Sres("termName", "TermName", term_name, NULL),
- Sres("ttyModes", "TtyModes", tty_modes, NULL),
- Bres("hold", "Hold", hold_screen, False),
- Bres("utmpInhibit", "UtmpInhibit", utmpInhibit, False),
- Bres("utmpDisplayId", "UtmpDisplayId", utmpDisplayId, True),
- Bres("messages", "Messages", messages, True),
- Ires("minBufSize", "MinBufSize", minBufSize, 4096),
- Ires("maxBufSize", "MaxBufSize", maxBufSize, 32768),
- Sres("keyboardType", "KeyboardType", keyboardType, "unknown"),
- Bres("sunFunctionKeys", "SunFunctionKeys", sunFunctionKeys, False),
-#if OPT_SUNPC_KBD
- Bres("sunKeyboard", "SunKeyboard", sunKeyboard, False),
-#endif
-#if OPT_HP_FUNC_KEYS
- Bres("hpFunctionKeys", "HpFunctionKeys", hpFunctionKeys, False),
-#endif
-#if OPT_SCO_FUNC_KEYS
- Bres("scoFunctionKeys", "ScoFunctionKeys", scoFunctionKeys, False),
-#endif
-#if OPT_INITIAL_ERASE
- Bres("ptyInitialErase", "PtyInitialErase", ptyInitialErase, DEF_INITIAL_ERASE),
- Bres("backarrowKeyIsErase", "BackarrowKeyIsErase", backarrow_is_erase, DEF_BACKARO_ERASE),
-#endif
- Bres("waitForMap", "WaitForMap", wait_for_map, False),
- Bres("useInsertMode", "UseInsertMode", useInsertMode, False),
-#if OPT_ZICONBEEP
- Ires("zIconBeep", "ZIconBeep", zIconBeep, 0),
-#endif
-#if OPT_PTY_HANDSHAKE
- Bres("ptyHandshake", "PtyHandshake", ptyHandshake, True),
-#endif
-#if OPT_SAME_NAME
- Bres("sameName", "SameName", sameName, True),
-#endif
-#if OPT_SESSION_MGT
- Bres("sessionMgt", "SessionMgt", sessionMgt, True),
-#endif
-#if OPT_TOOLBAR
- Bres(XtNtoolBar, XtCToolBar, toolBar, True),
-#endif
-};
-
-static char *fallback_resources[] =
-{
- "*SimpleMenu*menuLabel.vertSpace: 100",
- "*SimpleMenu*HorizontalMargins: 16",
- "*SimpleMenu*Sme.height: 16",
- "*SimpleMenu*Cursor: left_ptr",
- "*mainMenu.Label: Main Options (no app-defaults)",
- "*vtMenu.Label: VT Options (no app-defaults)",
- "*fontMenu.Label: VT Fonts (no app-defaults)",
-#if OPT_TEK4014
- "*tekMenu.Label: Tek Options (no app-defaults)",
-#endif
- NULL
-};
-
-/* Command line options table. Only resources are entered here...there is a
- pass over the remaining options after XrmParseCommand is let loose. */
-/* *INDENT-OFF* */
-static XrmOptionDescRec optionDescList[] = {
-{"-geometry", "*vt100.geometry",XrmoptionSepArg, (caddr_t) NULL},
-{"-132", "*c132", XrmoptionNoArg, (caddr_t) "on"},
-{"+132", "*c132", XrmoptionNoArg, (caddr_t) "off"},
-{"-ah", "*alwaysHighlight", XrmoptionNoArg, (caddr_t) "on"},
-{"+ah", "*alwaysHighlight", XrmoptionNoArg, (caddr_t) "off"},
-{"-aw", "*autoWrap", XrmoptionNoArg, (caddr_t) "on"},
-{"+aw", "*autoWrap", XrmoptionNoArg, (caddr_t) "off"},
-#ifndef NO_ACTIVE_ICON
-{"-ai", "*activeIcon", XrmoptionNoArg, (caddr_t) "off"},
-{"+ai", "*activeIcon", XrmoptionNoArg, (caddr_t) "on"},
-#endif /* NO_ACTIVE_ICON */
-{"-b", "*internalBorder",XrmoptionSepArg, (caddr_t) NULL},
-{"-bc", "*cursorBlink", XrmoptionNoArg, (caddr_t) "on"},
-{"+bc", "*cursorBlink", XrmoptionNoArg, (caddr_t) "off"},
-{"-bcf", "*cursorOffTime",XrmoptionSepArg, (caddr_t) NULL},
-{"-bcn", "*cursorOnTime",XrmoptionSepArg, (caddr_t) NULL},
-{"-bdc", "*colorBDMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+bdc", "*colorBDMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-cb", "*cutToBeginningOfLine", XrmoptionNoArg, (caddr_t) "off"},
-{"+cb", "*cutToBeginningOfLine", XrmoptionNoArg, (caddr_t) "on"},
-{"-cc", "*charClass", XrmoptionSepArg, (caddr_t) NULL},
-{"-cm", "*colorMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+cm", "*colorMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-cn", "*cutNewline", XrmoptionNoArg, (caddr_t) "off"},
-{"+cn", "*cutNewline", XrmoptionNoArg, (caddr_t) "on"},
-{"-cr", "*cursorColor", XrmoptionSepArg, (caddr_t) NULL},
-{"-cu", "*curses", XrmoptionNoArg, (caddr_t) "on"},
-{"+cu", "*curses", XrmoptionNoArg, (caddr_t) "off"},
-{"-dc", "*dynamicColors",XrmoptionNoArg, (caddr_t) "off"},
-{"+dc", "*dynamicColors",XrmoptionNoArg, (caddr_t) "on"},
-{"-fb", "*boldFont", XrmoptionSepArg, (caddr_t) NULL},
-{"-fbb", "*freeBoldBox", XrmoptionNoArg, (caddr_t)"off"},
-{"+fbb", "*freeBoldBox", XrmoptionNoArg, (caddr_t)"on"},
-{"-fbx", "*forceBoxChars", XrmoptionNoArg, (caddr_t)"off"},
-{"+fbx", "*forceBoxChars", XrmoptionNoArg, (caddr_t)"on"},
-#ifndef NO_ACTIVE_ICON
-{"-fi", "*iconFont", XrmoptionSepArg, (caddr_t) NULL},
-#endif /* NO_ACTIVE_ICON */
-#if OPT_RENDERFONT
-{"-fa", "*faceName", XrmoptionSepArg, (caddr_t) NULL},
-{"-fd", "*faceNameDoublesize", XrmoptionSepArg, (caddr_t) NULL},
-{"-fs", "*faceSize", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_WIDE_CHARS
-{"-fw", "*wideFont", XrmoptionSepArg, (caddr_t) NULL},
-{"-fwb", "*wideBoldFont", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_INPUT_METHOD
-{"-fx", "*ximFont", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_HIGHLIGHT_COLOR
-{"-hc", "*highlightColor", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_HP_FUNC_KEYS
-{"-hf", "*hpFunctionKeys",XrmoptionNoArg, (caddr_t) "on"},
-{"+hf", "*hpFunctionKeys",XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-hold", "*hold", XrmoptionNoArg, (caddr_t) "on"},
-{"+hold", "*hold", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_INITIAL_ERASE
-{"-ie", "*ptyInitialErase", XrmoptionNoArg, (caddr_t) "on"},
-{"+ie", "*ptyInitialErase", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-j", "*jumpScroll", XrmoptionNoArg, (caddr_t) "on"},
-{"+j", "*jumpScroll", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_C1_PRINT
-{"-k8", "*allowC1Printable", XrmoptionNoArg, (caddr_t) "on"},
-{"+k8", "*allowC1Printable", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-kt", "*keyboardType", XrmoptionSepArg, (caddr_t) NULL},
-{"+kt", "*keyboardType", XrmoptionSepArg, (caddr_t) NULL},
-/* parse logging options anyway for compatibility */
-{"-l", "*logging", XrmoptionNoArg, (caddr_t) "on"},
-{"+l", "*logging", XrmoptionNoArg, (caddr_t) "off"},
-{"-lf", "*logFile", XrmoptionSepArg, (caddr_t) NULL},
-{"-ls", "*loginShell", XrmoptionNoArg, (caddr_t) "on"},
-{"+ls", "*loginShell", XrmoptionNoArg, (caddr_t) "off"},
-{"-mb", "*marginBell", XrmoptionNoArg, (caddr_t) "on"},
-{"+mb", "*marginBell", XrmoptionNoArg, (caddr_t) "off"},
-{"-mc", "*multiClickTime", XrmoptionSepArg, (caddr_t) NULL},
-{"-mesg", "*messages", XrmoptionNoArg, (caddr_t) "off"},
-{"+mesg", "*messages", XrmoptionNoArg, (caddr_t) "on"},
-{"-ms", "*pointerColor",XrmoptionSepArg, (caddr_t) NULL},
-{"-nb", "*nMarginBell", XrmoptionSepArg, (caddr_t) NULL},
-{"-nul", "*underLine", XrmoptionNoArg, (caddr_t) "off"},
-{"+nul", "*underLine", XrmoptionNoArg, (caddr_t) "on"},
-{"-pc", "*boldColors", XrmoptionNoArg, (caddr_t) "on"},
-{"+pc", "*boldColors", XrmoptionNoArg, (caddr_t) "off"},
-{"-rw", "*reverseWrap", XrmoptionNoArg, (caddr_t) "on"},
-{"+rw", "*reverseWrap", XrmoptionNoArg, (caddr_t) "off"},
-{"-s", "*multiScroll", XrmoptionNoArg, (caddr_t) "on"},
-{"+s", "*multiScroll", XrmoptionNoArg, (caddr_t) "off"},
-{"-sb", "*scrollBar", XrmoptionNoArg, (caddr_t) "on"},
-{"+sb", "*scrollBar", XrmoptionNoArg, (caddr_t) "off"},
-#ifdef SCROLLBAR_RIGHT
-{"-leftbar", "*rightScrollBar", XrmoptionNoArg, (caddr_t) "off"},
-{"-rightbar", "*rightScrollBar", XrmoptionNoArg, (caddr_t) "on"},
-#endif
-{"-rvc", "*colorRVMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+rvc", "*colorRVMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-sf", "*sunFunctionKeys", XrmoptionNoArg, (caddr_t) "on"},
-{"+sf", "*sunFunctionKeys", XrmoptionNoArg, (caddr_t) "off"},
-{"-si", "*scrollTtyOutput", XrmoptionNoArg, (caddr_t) "off"},
-{"+si", "*scrollTtyOutput", XrmoptionNoArg, (caddr_t) "on"},
-{"-sk", "*scrollKey", XrmoptionNoArg, (caddr_t) "on"},
-{"+sk", "*scrollKey", XrmoptionNoArg, (caddr_t) "off"},
-{"-sl", "*saveLines", XrmoptionSepArg, (caddr_t) NULL},
-#if OPT_SUNPC_KBD
-{"-sp", "*sunKeyboard", XrmoptionNoArg, (caddr_t) "on"},
-{"+sp", "*sunKeyboard", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-#if OPT_TEK4014
-{"-t", "*tekStartup", XrmoptionNoArg, (caddr_t) "on"},
-{"+t", "*tekStartup", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-ti", "*decTerminalID",XrmoptionSepArg, (caddr_t) NULL},
-{"-tm", "*ttyModes", XrmoptionSepArg, (caddr_t) NULL},
-{"-tn", "*termName", XrmoptionSepArg, (caddr_t) NULL},
-#if OPT_WIDE_CHARS
-{"-u8", "*utf8", XrmoptionNoArg, (caddr_t) "2"},
-{"+u8", "*utf8", XrmoptionNoArg, (caddr_t) "0"},
-#endif
-#if OPT_LUIT_PROG
-{"-lc", "*locale", XrmoptionNoArg, (caddr_t) "on"},
-{"+lc", "*locale", XrmoptionNoArg, (caddr_t) "off"},
-{"-lcc", "*localeFilter",XrmoptionSepArg, (caddr_t) NULL},
-{"-en", "*locale", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-{"-ulc", "*colorULMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+ulc", "*colorULMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-ulit", "*italicULMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+ulit", "*italicULMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-ut", "*utmpInhibit", XrmoptionNoArg, (caddr_t) "on"},
-{"+ut", "*utmpInhibit", XrmoptionNoArg, (caddr_t) "off"},
-{"-im", "*useInsertMode", XrmoptionNoArg, (caddr_t) "on"},
-{"+im", "*useInsertMode", XrmoptionNoArg, (caddr_t) "off"},
-{"-vb", "*visualBell", XrmoptionNoArg, (caddr_t) "on"},
-{"+vb", "*visualBell", XrmoptionNoArg, (caddr_t) "off"},
-{"-pob", "*popOnBell", XrmoptionNoArg, (caddr_t) "on"},
-{"+pob", "*popOnBell", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_WIDE_CHARS
-{"-wc", "*wideChars", XrmoptionNoArg, (caddr_t) "on"},
-{"+wc", "*wideChars", XrmoptionNoArg, (caddr_t) "off"},
-{"-mk_width", "*mkWidth", XrmoptionNoArg, (caddr_t) "on"},
-{"+mk_width", "*mkWidth", XrmoptionNoArg, (caddr_t) "off"},
-{"-cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "on"},
-{"+cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "on"},
-{"+wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_ZICONBEEP
-{"-ziconbeep", "*zIconBeep", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_SAME_NAME
-{"-samename", "*sameName", XrmoptionNoArg, (caddr_t) "on"},
-{"+samename", "*sameName", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-#if OPT_SESSION_MGT
-{"-sm", "*sessionMgt", XrmoptionNoArg, (caddr_t) "on"},
-{"+sm", "*sessionMgt", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-#if OPT_TOOLBAR
-{"-tb", "*"XtNtoolBar, XrmoptionNoArg, (caddr_t) "on"},
-{"+tb", "*"XtNtoolBar, XrmoptionNoArg, (caddr_t) "off"},
-#endif
-/* options that we process ourselves */
-{"-help", NULL, XrmoptionSkipNArgs, (caddr_t) NULL},
-{"-version", NULL, XrmoptionSkipNArgs, (caddr_t) NULL},
-{"-class", NULL, XrmoptionSkipArg, (caddr_t) NULL},
-{"-e", NULL, XrmoptionSkipLine, (caddr_t) NULL},
-{"-into", NULL, XrmoptionSkipArg, (caddr_t) NULL},
-/* bogus old compatibility stuff for which there are
- standard XtOpenApplication options now */
-{"%", "*tekGeometry", XrmoptionStickyArg, (caddr_t) NULL},
-{"#", ".iconGeometry",XrmoptionStickyArg, (caddr_t) NULL},
-{"-T", ".title", XrmoptionSepArg, (caddr_t) NULL},
-{"-n", "*iconName", XrmoptionSepArg, (caddr_t) NULL},
-{"-r", "*reverseVideo",XrmoptionNoArg, (caddr_t) "on"},
-{"+r", "*reverseVideo",XrmoptionNoArg, (caddr_t) "off"},
-{"-rv", "*reverseVideo",XrmoptionNoArg, (caddr_t) "on"},
-{"+rv", "*reverseVideo",XrmoptionNoArg, (caddr_t) "off"},
-{"-w", ".borderWidth", XrmoptionSepArg, (caddr_t) NULL},
-};
-
-static OptionHelp xtermOptions[] = {
-{ "-version", "print the version number" },
-{ "-help", "print out this message" },
-{ "-display displayname", "X server to contact" },
-{ "-geometry geom", "size (in characters) and position" },
-{ "-/+rv", "turn on/off reverse video" },
-{ "-bg color", "background color" },
-{ "-fg color", "foreground color" },
-{ "-bd color", "border color" },
-{ "-bw number", "border width in pixels" },
-{ "-fn fontname", "normal text font" },
-{ "-fb fontname", "bold text font" },
-{ "-/+fbb", "turn on/off normal/bold font comparison inhibit"},
-{ "-/+fbx", "turn off/on linedrawing characters"},
-#if OPT_RENDERFONT
-{ "-fa pattern", "FreeType font-selection pattern" },
-{ "-fd pattern", "FreeType Doublesize font-selection pattern" },
-{ "-fs size", "FreeType font-size" },
-#endif
-#if OPT_WIDE_CHARS
-{ "-fw fontname", "doublewidth text font" },
-{ "-fwb fontname", "doublewidth bold text font" },
-#endif
-#if OPT_INPUT_METHOD
-{ "-fx fontname", "XIM fontset" },
-#endif
-{ "-iconic", "start iconic" },
-{ "-name string", "client instance, icon, and title strings" },
-{ "-class string", "class string (XTerm)" },
-{ "-title string", "title string" },
-{ "-xrm resourcestring", "additional resource specifications" },
-{ "-/+132", "turn on/off 80/132 column switching" },
-{ "-/+ah", "turn on/off always highlight" },
-#ifndef NO_ACTIVE_ICON
-{ "-/+ai", "turn off/on active icon" },
-{ "-fi fontname", "icon font for active icon" },
-#endif /* NO_ACTIVE_ICON */
-{ "-b number", "internal border in pixels" },
-{ "-/+bc", "turn on/off text cursor blinking" },
-{ "-bcf milliseconds", "time text cursor is off when blinking"},
-{ "-bcn milliseconds", "time text cursor is on when blinking"},
-{ "-/+bdc", "turn off/on display of bold as color"},
-{ "-/+cb", "turn on/off cut-to-beginning-of-line inhibit" },
-{ "-cc classrange", "specify additional character classes" },
-{ "-/+cm", "turn off/on ANSI color mode" },
-{ "-/+cn", "turn on/off cut newline inhibit" },
-{ "-cr color", "text cursor color" },
-{ "-/+cu", "turn on/off curses emulation" },
-{ "-/+dc", "turn off/on dynamic color selection" },
-#if OPT_HIGHLIGHT_COLOR
-{ "-hc color", "selection background color" },
-#endif
-#if OPT_HP_FUNC_KEYS
-{ "-/+hf", "turn on/off HP Function Key escape codes" },
-#endif
-{ "-/+hold", "turn on/off logic that retains window after exit" },
-#if OPT_INITIAL_ERASE
-{ "-/+ie", "turn on/off initialization of 'erase' from pty" },
-#endif
-{ "-/+im", "use insert mode for TERMCAP" },
-{ "-/+j", "turn on/off jump scroll" },
-#if OPT_C1_PRINT
-{ "-/+k8", "turn on/off C1-printable classification"},
-#endif
-{ "-kt keyboardtype", "set keyboard type:" KEYBOARD_TYPES },
-#ifdef ALLOWLOGGING
-{ "-/+l", "turn on/off logging" },
-{ "-lf filename", "logging filename" },
-#else
-{ "-/+l", "turn on/off logging (not supported)" },
-{ "-lf filename", "logging filename (not supported)" },
-#endif
-{ "-/+ls", "turn on/off login shell" },
-{ "-/+mb", "turn on/off margin bell" },
-{ "-mc milliseconds", "multiclick time in milliseconds" },
-{ "-/+mesg", "forbid/allow messages" },
-{ "-ms color", "pointer color" },
-{ "-nb number", "margin bell in characters from right end" },
-{ "-/+nul", "turn off/on display of underlining" },
-{ "-/+aw", "turn on/off auto wraparound" },
-{ "-/+pc", "turn on/off PC-style bold colors" },
-{ "-/+rw", "turn on/off reverse wraparound" },
-{ "-/+s", "turn on/off multiscroll" },
-{ "-/+sb", "turn on/off scrollbar" },
-#ifdef SCROLLBAR_RIGHT
-{ "-rightbar", "force scrollbar right (default left)" },
-{ "-leftbar", "force scrollbar left" },
-#endif
-{ "-/+rvc", "turn off/on display of reverse as color" },
-{ "-/+sf", "turn on/off Sun Function Key escape codes" },
-{ "-/+si", "turn on/off scroll-on-tty-output inhibit" },
-{ "-/+sk", "turn on/off scroll-on-keypress" },
-{ "-sl number", "number of scrolled lines to save" },
-#if OPT_SUNPC_KBD
-{ "-/+sp", "turn on/off Sun/PC Function/Keypad mapping" },
-#endif
-#if OPT_TEK4014
-{ "-/+t", "turn on/off Tek emulation window" },
-#endif
-#if OPT_TOOLBAR
-{ "-/+tb", "turn on/off toolbar" },
-#endif
-{ "-ti termid", "terminal identifier" },
-{ "-tm string", "terminal mode keywords and characters" },
-{ "-tn name", "TERM environment variable name" },
-#if OPT_WIDE_CHARS
-{ "-/+u8", "turn on/off UTF-8 mode (implies wide-characters)" },
-#endif
-#if OPT_LUIT_PROG
-{ "-/+lc", "turn on/off locale mode using luit" },
-{ "-lcc path", "filename of locale converter (" DEFLOCALEFILTER ")" },
-#endif
-{ "-/+ulc", "turn off/on display of underline as color" },
-{ "-/+ulit", "turn off/on display of underline as italics" },
-#ifdef HAVE_UTMP
-{ "-/+ut", "turn on/off utmp support" },
-#else
-{ "-/+ut", "turn on/off utmp support (not available)" },
-#endif
-{ "-/+vb", "turn on/off visual bell" },
-{ "-/+pob", "turn on/off pop on bell" },
-#if OPT_WIDE_CHARS
-{ "-/+wc", "turn on/off wide-character mode" },
-{ "-/+mk_width", "turn on/off simple width convention" },
-{ "-/+cjk_width", "turn on/off legacy CJK width convention" },
-#endif
-{ "-/+wf", "turn on/off wait for map before command exec" },
-{ "-e command args ...", "command to execute" },
-#if OPT_TEK4014
-{ "%geom", "Tek window geometry" },
-#endif
-{ "#geom", "icon window geometry" },
-{ "-T string", "title name for window" },
-{ "-n string", "icon name for window" },
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
-{ "-C", "intercept console messages" },
-#else
-{ "-C", "intercept console messages (not supported)" },
-#endif
-{ "-Sccn", "slave mode on \"ttycc\", file descriptor \"n\"" },
-{ "-into windowId", "use the window id given to -into as the parent window rather than the default root window" },
-#if OPT_ZICONBEEP
-{ "-ziconbeep percent", "beep and flag icon of window having hidden output" },
-#endif
-#if OPT_SAME_NAME
-{ "-/+samename", "turn on/off the no-flicker option for title and icon name" },
-#endif
-#if OPT_SESSION_MGT
-{ "-/+sm", "turn on/off the session-management support" },
-#endif
-{ NULL, NULL }};
-/* *INDENT-ON* */
-
-static char *message[] =
-{
- "Fonts should be fixed width and, if both normal and bold are specified, should",
- "have the same size. If only a normal font is specified, it will be used for",
- "both normal and bold text (by doing overstriking). The -e option, if given,",
- "must appear at the end of the command line, otherwise the user's default shell",
- "will be started. Options that start with a plus sign (+) restore the default.",
- NULL};
-
-/*
- * Decode a key-definition. This combines the termcap and ttyModes, for
- * comparison. Note that octal escapes in ttyModes are done by the normal
- * resource translation. Also, ttyModes allows '^-' as a synonym for disabled.
- */
-static int
-decode_keyvalue(char **ptr, int termcap)
-{
- char *string = *ptr;
- int value = -1;
-
- TRACE(("...decode '%s'\n", string));
- if (*string == '^') {
- switch (*++string) {
- case '?':
- value = A2E(127);
- break;
- case '-':
- if (!termcap) {
- errno = 0;
-#if defined(_POSIX_VDISABLE) && defined(HAVE_UNISTD_H)
- value = _POSIX_VDISABLE;
-#endif
-#if defined(_PC_VDISABLE)
- if (value == -1) {
- value = fpathconf(0, _PC_VDISABLE);
- if (value == -1) {
- if (errno != 0)
- break; /* skip this (error) */
- value = 0377;
- }
- }
-#elif defined(VDISABLE)
- if (value == -1)
- value = VDISABLE;
-#endif
- break;
- }
- /* FALLTHRU */
- default:
- value = CONTROL(*string);
- break;
- }
- ++string;
- } else if (termcap && (*string == '\\')) {
- char *d;
- int temp = strtol(string + 1, &d, 8);
- if (temp > 0 && d != string) {
- value = temp;
- string = d;
- }
- } else {
- value = CharOf(*string);
- ++string;
- }
- *ptr = string;
- return value;
-}
-
-/*
- * If we're linked to terminfo, tgetent() will return an empty buffer. We
- * cannot use that to adjust the $TERMCAP variable.
- */
-static Bool
-get_termcap(char *name, char *buffer, char *resized)
-{
- TScreen *screen = &term->screen;
-
- *buffer = 0; /* initialize, in case we're using terminfo's tgetent */
-
- if (name != 0) {
- if (tgetent(buffer, name) == 1) {
- TRACE(("get_termcap(%s) succeeded (%s)\n", name,
- (*buffer
- ? "ok:termcap, we can update $TERMCAP"
- : "assuming this is terminfo")));
- if (*buffer) {
- if (!TEK4014_ACTIVE(screen)) {
- resize(screen, buffer, resized);
- }
- }
- return True;
- } else {
- *buffer = 0; /* just in case */
- }
- }
- return False;
-}
-
-static int
-abbrev(char *tst, char *cmp, size_t need)
-{
- size_t len = strlen(tst);
- return ((len >= need) && (!strncmp(tst, cmp, len)));
-}
-
-static void
-Syntax(char *badOption)
-{
- OptionHelp *opt;
- OptionHelp *list = sortedOpts(xtermOptions, optionDescList, XtNumber(optionDescList));
- int col;
-
- fprintf(stderr, "%s: bad command line option \"%s\"\r\n\n",
- ProgramName, badOption);
-
- fprintf(stderr, "usage: %s", ProgramName);
- col = 8 + strlen(ProgramName);
- for (opt = list; opt->opt; opt++) {
- int len = 3 + strlen(opt->opt); /* space [ string ] */
- if (col + len > 79) {
- fprintf(stderr, "\r\n "); /* 3 spaces */
- col = 3;
- }
- fprintf(stderr, " [%s]", opt->opt);
- col += len;
- }
-
- fprintf(stderr, "\r\n\nType %s -help for a full description.\r\n\n",
- ProgramName);
- exit(1);
-}
-
-static void
-Version(void)
-{
- printf("%s\n", xtermVersion());
- fflush(stdout);
-}
-
-static void
-Help(void)
-{
- OptionHelp *opt;
- OptionHelp *list = sortedOpts(xtermOptions, optionDescList, XtNumber(optionDescList));
- char **cpp;
-
- printf("%s usage:\n %s [-options ...] [-e command args]\n\n",
- xtermVersion(), ProgramName);
- printf("where options include:\n");
- for (opt = list; opt->opt; opt++) {
- printf(" %-28s %s\n", opt->opt, opt->desc);
- }
-
- putchar('\n');
- for (cpp = message; *cpp; cpp++)
- puts(*cpp);
- putchar('\n');
- fflush(stdout);
-}
-
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
-/* ARGSUSED */
-static Boolean
-ConvertConsoleSelection(Widget w GCC_UNUSED,
- Atom * selection GCC_UNUSED,
- Atom * target GCC_UNUSED,
- Atom * type GCC_UNUSED,
- XtPointer *value GCC_UNUSED,
- unsigned long *length GCC_UNUSED,
- int *format GCC_UNUSED)
-{
- /* we don't save console output, so can't offer it */
- return False;
-}
-#endif /* TIOCCONS */
-
-#if OPT_SESSION_MGT
-static void
-die_callback(Widget w GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- XtPointer call_data GCC_UNUSED)
-{
- Cleanup(0);
-}
-
-static void
-save_callback(Widget w GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- XtPointer call_data)
-{
- XtCheckpointToken token = (XtCheckpointToken) call_data;
- /* we have nothing to save */
- token->save_success = True;
-}
-#endif /* OPT_SESSION_MGT */
-
-/*
- * DeleteWindow(): Action proc to implement ICCCM delete_window.
- */
-/* ARGSUSED */
-static void
-DeleteWindow(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED)
-{
-#if OPT_TEK4014
- if (w == toplevel) {
- if (term->screen.Tshow)
- hide_vt_window();
- else
- do_hangup(w, (XtPointer) 0, (XtPointer) 0);
- } else if (term->screen.Vshow)
- hide_tek_window();
- else
-#endif
- do_hangup(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-/* ARGSUSED */
-static void
-KeyboardMapping(Widget w GCC_UNUSED,
- XEvent * event,
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED)
-{
- switch (event->type) {
- case MappingNotify:
- XRefreshKeyboardMapping(&event->xmapping);
- break;
- }
-}
-
-static XtActionsRec actionProcs[] =
-{
- {"DeleteWindow", DeleteWindow},
- {"KeyboardMapping", KeyboardMapping},
-};
-
-/*
- * Some platforms use names such as /dev/tty01, others /dev/pts/1. Parse off
- * the "tty01" or "pts/1" portion, and return that for use as an identifier for
- * utmp.
- */
-static char *
-my_pty_name(char *device)
-{
- size_t len = strlen(device);
- Bool name = False;
-
- while (len != 0) {
- int ch = device[len - 1];
- if (isdigit(ch)) {
- len--;
- } else if (ch == '/') {
- if (name)
- break;
- len--;
- } else if (isalpha(ch)) {
- name = True;
- len--;
- } else {
- break;
- }
- }
- TRACE(("my_pty_name(%s) -> '%s'\n", device, device + len));
- return device + len;
-}
-
-/*
- * If the name contains a '/', it is a "pts/1" case. Otherwise, return the
- * last few characters for a utmp identifier.
- */
-static char *
-my_pty_id(char *device)
-{
- char *name = my_pty_name(device);
- char *leaf = x_basename(name);
-
- if (name == leaf) { /* no '/' in the name */
- int len = strlen(leaf);
- if (PTYCHARLEN < len)
- leaf = leaf + (len - PTYCHARLEN);
- }
- TRACE(("my_pty_id (%s) -> '%s'\n", device, leaf));
- return leaf;
-}
-
-/*
- * Set the tty/pty identifier
- */
-static void
-set_pty_id(char *device, char *id)
-{
- char *name = my_pty_name(device);
- char *leaf = x_basename(name);
-
- if (name == leaf) {
- strcpy(my_pty_id(device), id);
- } else {
- strcpy(leaf, id);
- }
- TRACE(("set_pty_id(%s) -> '%s'\n", id, device));
-}
-
-/*
- * The original -S option accepts two characters to identify the pty, and a
- * file-descriptor (assumed to be nonzero). That is not general enough, so we
- * check first if the option contains a '/' to delimit the two fields, and if
- * not, fall-thru to the original logic.
- */
-static Bool
-ParseSccn(char *option)
-{
- char *leaf = x_basename(option);
- Bool code = False;
-
- if (leaf != option) {
- if (leaf - option > 0
- && isdigit(CharOf(*leaf))
- && sscanf(leaf, "%d", &am_slave) == 1) {
- size_t len = leaf - option - 1;
- /*
- * If we have a slash, we only care about the part after the slash,
- * which is a file-descriptor. The part before the slash can be
- * the /dev/pts/XXX value, but since we do not need to reopen it,
- * it is useful mainly for display in a "ps -ef".
- */
- strncpy(passedPty, option, len);
- passedPty[len] = 0;
- code = True;
- }
- } else {
- code = (sscanf(option, "%c%c%d",
- passedPty, passedPty + 1, &am_slave) == 3);
- }
- TRACE(("ParseSccn(%s) = '%s' %d (%s)\n", option,
- passedPty, am_slave, code ? "OK" : "ERR"));
- return code;
-}
-
-#if defined(USE_SYSV_UTMP) && !defined(USE_UTEMPTER)
-/*
- * From "man utmp":
- * xterm and other terminal emulators directly create a USER_PROCESS record
- * and generate the ut_id by using the last two letters of /dev/ttyp%c or by
- * using p%d for /dev/pts/%d. If they find a DEAD_PROCESS for this id, they
- * recycle it, otherwise they create a new entry. If they can, they will mark
- * it as DEAD_PROCESS on exiting and it is advised that they null ut_line,
- * ut_time, ut_user and ut_host as well.
- *
- * Generally ut_id allows no more than 3 characters (plus null), even if the
- * pty implementation allows more than 3 digits.
- */
-static char *
-my_utmp_id(char *device)
-{
- typedef struct UTMP_STR UTMP_STRUCT;
-#define UTIDSIZE (sizeof(((UTMP_STRUCT *)NULL)->ut_id))
- static char result[UTIDSIZE + 1];
-
-#if defined(__SCO__) || defined(__UNIXWARE__)
- /*
- * Legend does not support old-style pty's, has no related compatibility
- * issues, and can use the available space in ut_id differently from the
- * default convention.
- *
- * This scheme is intended to avoid conflicts both with other users of
- * utmpx as well as between multiple xterms. First, Legend uses all of the
- * characters of ut_id, and adds no terminating NUL is required (the
- * default scheme may add a trailing NUL). Second, all xterm entries will
- * start with the letter 'x' followed by three digits, which will be the
- * last three digits of the device name, regardless of the format of the
- * device name, with leading 0's added where necessary. For instance, an
- * xterm on /dev/pts/3 will have a ut_id of x003; an xterm on /dev/pts123
- * will have a ut_id of x123. Under the other convention, /dev/pts/3 would
- * have a ut_id of p3 and /dev/pts123 would have a ut_id of p123.
- */
- int len, n;
-
- len = strlen(device);
- n = UTIDSIZE;
- result[n] = '\0';
- while ((n > 0) && (len > 0) && isdigit(device[len - 1]))
- result[--n] = device[--len];
- while (n > 0)
- result[--n] = '0';
- result[0] = 'x';
-#else
- char *name = my_pty_name(device);
- char *leaf = x_basename(name);
- size_t len = strlen(leaf);
-
- if ((UTIDSIZE - 1) < len)
- leaf = leaf + (len - (UTIDSIZE - 1));
- sprintf(result, "p%s", leaf);
-#endif
-
- TRACE(("my_utmp_id (%s) -> '%s'\n", device, result));
- return result;
-}
-#endif /* USE_SYSV_UTMP */
-
-#ifdef USE_POSIX_SIGNALS
-
-typedef void (*sigfunc) (int);
-
-/* make sure we sure we ignore SIGCHLD for the cases parent
- has just been stopped and not actually killed */
-
-static sigfunc
-posix_signal(int signo, sigfunc func)
-{
- struct sigaction act, oact;
-
- act.sa_handler = func;
- sigemptyset(&act.sa_mask);
-#ifdef SA_RESTART
- act.sa_flags = SA_NOCLDSTOP | SA_RESTART;
-#else
- act.sa_flags = SA_NOCLDSTOP;
-#endif
- if (sigaction(signo, &act, &oact) < 0)
- return (SIG_ERR);
- return (oact.sa_handler);
-}
-
-#endif /* linux && _POSIX_SOURCE */
-
-int
-main(int argc, char *argv[]ENVP_ARG)
-{
- Widget form_top, menu_top;
- TScreen *screen;
- int mode;
- char *my_class = DEFCLASS;
- Window winToEmbedInto = None;
-
-#ifdef DISABLE_SETUID
- if (seteuid(getuid()) == -1)
- exit(2);
- if (setuid(getuid()) == -1)
- exit(2);
-#endif
-
- ProgramName = argv[0];
-
- /* extra length in case longer tty name like /dev/ttyq255 */
- ttydev = TypeMallocN(char, sizeof(TTYDEV) + 80);
-#ifdef USE_PTY_DEVICE
- ptydev = TypeMallocN(char, sizeof(PTYDEV) + 80);
- if (!ttydev || !ptydev)
-#else
- if (!ttydev)
-#endif
- {
- fprintf(stderr,
- "%s: unable to allocate memory for ttydev or ptydev\n",
- ProgramName);
- exit(1);
- }
- strcpy(ttydev, TTYDEV);
-#ifdef USE_PTY_DEVICE
- strcpy(ptydev, PTYDEV);
-#endif
-
-#if defined(USE_UTMP_SETGID)
- get_pty(NULL, NULL);
- if (seteuid(getuid()) == -1) {
- fprintf(stderr,
- "%s: unable to change back euid\n", ProgramName);
- exit(1);
- }
- if (setuid(getuid()) == -1) {
- fprintf(stderr,
- "%s: unable to change back uid\n", ProgramName);
- exit(1);
- }
-#define get_pty(pty, from) really_get_pty(pty, from)
-#endif
-
- /* Do these first, since we may not be able to open the display */
- TRACE_OPTS(xtermOptions, optionDescList, XtNumber(optionDescList));
- TRACE_ARGV("Before XtOpenApplication", argv);
- if (argc > 1) {
- int n;
- unsigned unique = 2;
- Bool quit = True;
-
- for (n = 1; n < argc; n++) {
- TRACE(("parsing %s\n", argv[n]));
- if (abbrev(argv[n], "-version", unique)) {
- Version();
- } else if (abbrev(argv[n], "-help", unique)) {
- Help();
- } else if (abbrev(argv[n], "-class", 3)) {
- if ((my_class = argv[++n]) == 0) {
- Help();
- } else {
- quit = False;
- }
- unique = 3;
- } else {
- quit = False;
- unique = 3;
- }
- }
- if (quit)
- exit(0);
- }
-
- /* This dumps core on HP-UX 9.05 with X11R5 */
-#if OPT_I18N_SUPPORT
- XtSetLanguageProc(NULL, NULL, NULL);
-#endif
-
-#ifdef TERMIO_STRUCT /* { */
- /* Initialization is done here rather than above in order
- * to prevent any assumptions about the order of the contents
- * of the various terminal structures (which may change from
- * implementation to implementation).
- */
- d_tio.c_iflag = ICRNL | IXON;
-#ifdef TAB3
- d_tio.c_oflag = OPOST | ONLCR | TAB3;
-#else
-#ifdef ONLCR
- d_tio.c_oflag = OPOST | ONLCR;
-#else
- d_tio.c_oflag = OPOST;
-#endif
-#endif
-#if defined(macII) || defined(ATT) || defined(CRAY) /* { */
- d_tio.c_cflag = VAL_LINE_SPEED | CS8 | CREAD | PARENB | HUPCL;
- d_tio.c_lflag = ISIG | ICANON | ECHO | ECHOE | ECHOK;
-#ifdef ECHOKE
- d_tio.c_lflag |= ECHOKE | IEXTEN;
-#endif
-#ifdef ECHOCTL
- d_tio.c_lflag |= ECHOCTL | IEXTEN;
-#endif
-
-#ifndef USE_TERMIOS /* { */
- d_tio.c_line = 0;
-#endif /* } */
-
- d_tio.c_cc[VINTR] = CINTR;
- d_tio.c_cc[VQUIT] = CQUIT;
- d_tio.c_cc[VERASE] = CERASE;
- d_tio.c_cc[VKILL] = CKILL;
- d_tio.c_cc[VEOF] = CEOF;
- d_tio.c_cc[VEOL] = CNUL;
- d_tio.c_cc[VEOL2] = CNUL;
-#ifdef VSWTCH
- d_tio.c_cc[VSWTCH] = CNUL;
-#endif
-
-#if defined(USE_TERMIOS) || defined(USE_POSIX_TERMIOS) /* { */
- d_tio.c_cc[VSUSP] = CSUSP;
-#ifdef VDSUSP
- d_tio.c_cc[VDSUSP] = CDSUSP;
-#endif
- d_tio.c_cc[VREPRINT] = CRPRNT;
- d_tio.c_cc[VDISCARD] = CFLUSH;
- d_tio.c_cc[VWERASE] = CWERASE;
- d_tio.c_cc[VLNEXT] = CLNEXT;
- d_tio.c_cc[VMIN] = 1;
- d_tio.c_cc[VTIME] = 0;
-#endif /* } */
-#ifdef HAS_LTCHARS /* { */
- d_ltc.t_suspc = CSUSP; /* t_suspc */
- d_ltc.t_dsuspc = CDSUSP; /* t_dsuspc */
- d_ltc.t_rprntc = CRPRNT;
- d_ltc.t_flushc = CFLUSH;
- d_ltc.t_werasc = CWERASE;
- d_ltc.t_lnextc = CLNEXT;
-#endif /* } HAS_LTCHARS */
-#ifdef TIOCLSET /* { */
- d_lmode = 0;
-#endif /* } TIOCLSET */
-#else /* }{ else !macII, ATT, CRAY */
-#ifndef USE_POSIX_TERMIOS
-#ifdef BAUD_0 /* { */
- d_tio.c_cflag = CS8 | CREAD | PARENB | HUPCL;
-#else /* }{ !BAUD_0 */
- d_tio.c_cflag = VAL_LINE_SPEED | CS8 | CREAD | PARENB | HUPCL;
-#endif /* } !BAUD_0 */
-#else /* USE_POSIX_TERMIOS */
- d_tio.c_cflag = CS8 | CREAD | PARENB | HUPCL;
- cfsetispeed(&d_tio, VAL_LINE_SPEED);
- cfsetospeed(&d_tio, VAL_LINE_SPEED);
-#endif
- d_tio.c_lflag = ISIG | ICANON | ECHO | ECHOE | ECHOK;
-#ifdef ECHOKE
- d_tio.c_lflag |= ECHOKE | IEXTEN;
-#endif
-#ifdef ECHOCTL
- d_tio.c_lflag |= ECHOCTL | IEXTEN;
-#endif
-#ifndef USE_POSIX_TERMIOS
-#ifdef NTTYDISC
- d_tio.c_line = NTTYDISC;
-#else
- d_tio.c_line = 0;
-#endif
-#endif /* USE_POSIX_TERMIOS */
-#ifdef __sgi
- d_tio.c_cflag &= ~(HUPCL | PARENB);
- d_tio.c_iflag |= BRKINT | ISTRIP | IGNPAR;
-#endif
-#ifdef __MVS__
- d_tio.c_cflag &= ~(HUPCL | PARENB);
-#endif
- d_tio.c_cc[VINTR] = CONTROL('C'); /* '^C' */
- d_tio.c_cc[VERASE] = 0x7f; /* DEL */
- d_tio.c_cc[VKILL] = CONTROL('U'); /* '^U' */
- d_tio.c_cc[VQUIT] = CQUIT; /* '^\' */
- d_tio.c_cc[VEOF] = CEOF; /* '^D' */
- d_tio.c_cc[VEOL] = CEOL; /* '^@' */
- d_tio.c_cc[VMIN] = 1;
- d_tio.c_cc[VTIME] = 0;
-#ifdef VSWTCH
- d_tio.c_cc[VSWTCH] = CSWTCH; /* usually '^Z' */
-#endif
-#ifdef VLNEXT
- d_tio.c_cc[VLNEXT] = CLNEXT;
-#endif
-#ifdef VWERASE
- d_tio.c_cc[VWERASE] = CWERASE;
-#endif
-#ifdef VREPRINT
- d_tio.c_cc[VREPRINT] = CRPRNT;
-#endif
-#ifdef VRPRNT
- d_tio.c_cc[VRPRNT] = CRPRNT;
-#endif
-#ifdef VDISCARD
- d_tio.c_cc[VDISCARD] = CFLUSH;
-#endif
-#ifdef VFLUSHO
- d_tio.c_cc[VFLUSHO] = CFLUSH;
-#endif
-#ifdef VSTOP
- d_tio.c_cc[VSTOP] = CSTOP;
-#endif
-#ifdef VSTART
- d_tio.c_cc[VSTART] = CSTART;
-#endif
-#ifdef VSUSP
- d_tio.c_cc[VSUSP] = CSUSP;
-#endif
-#ifdef VDSUSP
- d_tio.c_cc[VDSUSP] = CDSUSP;
-#endif
-#ifdef VSTATUS
- d_tio.c_cc[VSTATUS] = CSTATUS;
-#endif
- /* now, try to inherit tty settings */
- {
- int i;
-
- for (i = 0; i <= 2; i++) {
- TERMIO_STRUCT deftio;
- if (ttyGetAttr(i, &deftio) == 0) {
- d_tio.c_cc[VINTR] = deftio.c_cc[VINTR];
- d_tio.c_cc[VQUIT] = deftio.c_cc[VQUIT];
- d_tio.c_cc[VERASE] = deftio.c_cc[VERASE];
- d_tio.c_cc[VKILL] = deftio.c_cc[VKILL];
- d_tio.c_cc[VEOF] = deftio.c_cc[VEOF];
- d_tio.c_cc[VEOL] = deftio.c_cc[VEOL];
-#ifdef VSWTCH
- d_tio.c_cc[VSWTCH] = deftio.c_cc[VSWTCH];
-#endif
-#ifdef VEOL2
- d_tio.c_cc[VEOL2] = deftio.c_cc[VEOL2];
-#endif
-#ifdef VLNEXT
- d_tio.c_cc[VLNEXT] = deftio.c_cc[VLNEXT];
-#endif
-#ifdef VWERASE
- d_tio.c_cc[VWERASE] = deftio.c_cc[VWERASE];
-#endif
-#ifdef VREPRINT
- d_tio.c_cc[VREPRINT] = deftio.c_cc[VREPRINT];
-#endif
-#ifdef VRPRNT
- d_tio.c_cc[VRPRNT] = deftio.c_cc[VRPRNT];
-#endif
-#ifdef VDISCARD
- d_tio.c_cc[VDISCARD] = deftio.c_cc[VDISCARD];
-#endif
-#ifdef VFLUSHO
- d_tio.c_cc[VFLUSHO] = deftio.c_cc[VFLUSHO];
-#endif
-#ifdef VSTOP
- d_tio.c_cc[VSTOP] = deftio.c_cc[VSTOP];
-#endif
-#ifdef VSTART
- d_tio.c_cc[VSTART] = deftio.c_cc[VSTART];
-#endif
-#ifdef VSUSP
- d_tio.c_cc[VSUSP] = deftio.c_cc[VSUSP];
-#endif
-#ifdef VDSUSP
- d_tio.c_cc[VDSUSP] = deftio.c_cc[VDSUSP];
-#endif
-#ifdef VSTATUS
- d_tio.c_cc[VSTATUS] = deftio.c_cc[VSTATUS];
-#endif
- break;
- }
- }
- }
-#ifdef HAS_LTCHARS /* { */
- d_ltc.t_suspc = CharOf('\000'); /* t_suspc */
- d_ltc.t_dsuspc = CharOf('\000'); /* t_dsuspc */
- d_ltc.t_rprntc = CharOf('\377'); /* reserved... */
- d_ltc.t_flushc = CharOf('\377');
- d_ltc.t_werasc = CharOf('\377');
- d_ltc.t_lnextc = CharOf('\377');
-#endif /* } HAS_LTCHARS */
-#if defined(USE_TERMIOS) || defined(USE_POSIX_TERMIOS) /* { */
- d_tio.c_cc[VSUSP] = CSUSP;
-#ifdef VDSUSP
- d_tio.c_cc[VDSUSP] = CharOf('\000');
-#endif
-#ifdef VSTATUS
- d_tio.c_cc[VSTATUS] = CharOf('\377');
-#endif
-#ifdef VREPRINT
- d_tio.c_cc[VREPRINT] = CharOf('\377');
-#endif
-#ifdef VDISCARD
- d_tio.c_cc[VDISCARD] = CharOf('\377');
-#endif
-#ifdef VWERASE
- d_tio.c_cc[VWERASE] = CharOf('\377');
-#endif
-#ifdef VLNEXT
- d_tio.c_cc[VLNEXT] = CharOf('\377');
-#endif
-#endif /* } USE_TERMIOS */
-#ifdef TIOCLSET /* { */
- d_lmode = 0;
-#endif /* } TIOCLSET */
-#endif /* } macII, ATT, CRAY */
-#endif /* } TERMIO_STRUCT */
-
- /* Init the Toolkit. */
- {
-#ifdef HAS_SAVED_IDS_AND_SETEUID
- uid_t euid = geteuid();
- gid_t egid = getegid();
- uid_t ruid = getuid();
- gid_t rgid = getgid();
-
- if (setegid(rgid) == -1) {
-#ifdef __MVS__
- if (!(errno == EMVSERR)) /* could happen if _BPX_SHAREAS=REUSE */
-#endif
- (void) fprintf(stderr, "setegid(%d): %s\n",
- (int) rgid, strerror(errno));
- }
-
- if (seteuid(ruid) == -1) {
-#ifdef __MVS__
- if (!(errno == EMVSERR))
-#endif
- (void) fprintf(stderr, "seteuid(%d): %s\n",
- (int) ruid, strerror(errno));
- }
-#endif
-
- XtSetErrorHandler(xt_error);
-#if OPT_SESSION_MGT
- toplevel = XtOpenApplication(&app_con, my_class,
- optionDescList,
- XtNumber(optionDescList),
- &argc, argv, fallback_resources,
- sessionShellWidgetClass,
- NULL, 0);
-#else
- toplevel = XtAppInitialize(&app_con, my_class,
- optionDescList,
- XtNumber(optionDescList),
- &argc, argv, fallback_resources,
- NULL, 0);
-#endif /* OPT_SESSION_MGT */
- XtSetErrorHandler((XtErrorHandler) 0);
-
- XtGetApplicationResources(toplevel, (XtPointer) &resource,
- application_resources,
- XtNumber(application_resources), NULL, 0);
- TRACE_XRES();
-
-#ifdef HAS_SAVED_IDS_AND_SETEUID
- if (seteuid(euid) == -1) {
-#ifdef __MVS__
- if (!(errno == EMVSERR))
-#endif
- (void) fprintf(stderr, "seteuid(%d): %s\n",
- (int) euid, strerror(errno));
- }
-
- if (setegid(egid) == -1) {
-#ifdef __MVS__
- if (!(errno == EMVSERR))
-#endif
- (void) fprintf(stderr, "setegid(%d): %s\n",
- (int) egid, strerror(errno));
- }
-#endif
-
-#if defined(USE_UTMP_SETGID)
- if (resource.utmpInhibit) {
- /* Can totally revoke group privs */
- setegid(getgid());
- setgid(getgid());
- }
-#endif
- }
-
- waiting_for_initial_map = resource.wait_for_map;
-
- /*
- * ICCCM delete_window.
- */
- XtAppAddActions(app_con, actionProcs, XtNumber(actionProcs));
-
- /*
- * fill in terminal modes
- */
- if (resource.tty_modes) {
- int n = parse_tty_modes(resource.tty_modes, ttymodelist);
- if (n < 0) {
- fprintf(stderr, "%s: bad tty modes \"%s\"\n",
- ProgramName, resource.tty_modes);
- } else if (n > 0) {
- override_tty_modes = 1;
- }
- }
-#if OPT_ZICONBEEP
- zIconBeep = resource.zIconBeep;
- zIconBeep_flagged = False;
- if (zIconBeep > 100 || zIconBeep < -100) {
- zIconBeep = 0; /* was 100, but I prefer to defaulting off. */
- fprintf(stderr,
- "a number between -100 and 100 is required for zIconBeep. 0 used by default\n");
- }
-#endif /* OPT_ZICONBEEP */
-#if OPT_SAME_NAME
- sameName = resource.sameName;
-#endif
- hold_screen = resource.hold_screen ? 1 : 0;
- xterm_name = resource.xterm_name;
- if (strcmp(xterm_name, "-") == 0)
- xterm_name = DFT_TERMTYPE;
- if (resource.icon_geometry != NULL) {
- int scr, junk;
- int ix, iy;
- Arg args[2];
-
- for (scr = 0; /* yyuucchh */
- XtScreen(toplevel) != ScreenOfDisplay(XtDisplay(toplevel), scr);
- scr++) ;
-
- args[0].name = XtNiconX;
- args[1].name = XtNiconY;
- XGeometry(XtDisplay(toplevel), scr, resource.icon_geometry, "",
- 0, 0, 0, 0, 0, &ix, &iy, &junk, &junk);
- args[0].value = (XtArgVal) ix;
- args[1].value = (XtArgVal) iy;
- XtSetValues(toplevel, args, 2);
- }
-
- XtSetValues(toplevel, ourTopLevelShellArgs,
- number_ourTopLevelShellArgs);
-
-#if OPT_WIDE_CHARS
- /* seems as good a place as any */
- init_classtab();
-#endif
-
- /* Parse the rest of the command line */
- TRACE_ARGV("After XtOpenApplication", argv);
- for (argc--, argv++; argc > 0; argc--, argv++) {
-#ifdef VMS
- if (**argv != '-')
- Syntax(*argv);
-#else
- if (**argv != '-') {
- if (argc > 1)
- Syntax(*argv);
- if (command_to_exec == 0) /* if no "-e" option */
- explicit_shname = xtermFindShell(*argv, True);
- continue;
- }
-#endif
-
- TRACE(("parsing %s\n", argv[0]));
- switch (argv[0][1]) {
- case 'h': /* -help */
- Help();
- continue;
- case 'v': /* -version */
- Version();
- continue;
- case 'C':
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
-#ifndef __sgi
- {
- struct stat sbuf;
-
- /* Must be owner and have read/write permission.
- xdm cooperates to give the console the right user. */
- if (!stat("/dev/console", &sbuf) &&
- (sbuf.st_uid == getuid()) &&
- !access("/dev/console", R_OK | W_OK)) {
- Console = True;
- } else
- Console = False;
- }
-#else /* __sgi */
- Console = True;
-#endif /* __sgi */
-#endif /* TIOCCONS */
- continue;
- case 'S':
- if (!ParseSccn(*argv + 2))
- Syntax(*argv);
- continue;
-#ifdef DEBUG
- case 'D':
- debug = True;
- continue;
-#endif /* DEBUG */
- case 'c': /* -class param */
- if (strcmp(argv[0] + 1, "class") == 0)
- argc--, argv++;
- else
- Syntax(*argv);
- continue;
- case 'e':
- if (argc <= 1)
- Syntax(*argv);
- command_to_exec = ++argv;
- break;
- case 'i':
- if (argc <= 1) {
- Syntax(*argv);
- } else {
- char *endPtr;
- --argc;
- ++argv;
- winToEmbedInto = (Window) strtol(argv[0], &endPtr, 10);
- }
- continue;
-
- default:
- Syntax(*argv);
- }
- break;
- }
-
- SetupMenus(toplevel, &form_top, &menu_top);
-
- term = (XtermWidget) XtVaCreateManagedWidget("vt100", xtermWidgetClass,
- form_top,
-#if OPT_TOOLBAR
- XtNmenuBar, menu_top,
- XtNresizable, True,
- XtNfromVert, menu_top,
- XtNleft, XawChainLeft,
- XtNright, XawChainRight,
- XtNtop, XawChainTop,
- XtNbottom, XawChainBottom,
-#endif
- (XtPointer) 0);
- decode_keyboard_type(&resource);
-
- screen = &term->screen;
- screen->inhibit = 0;
-
-#ifdef ALLOWLOGGING
- if (term->misc.logInhibit)
- screen->inhibit |= I_LOG;
-#endif
- if (term->misc.signalInhibit)
- screen->inhibit |= I_SIGNAL;
-#if OPT_TEK4014
- if (term->misc.tekInhibit)
- screen->inhibit |= I_TEK;
-#endif
-
- /*
- * We might start by showing the tek4014 window.
- */
-#if OPT_TEK4014
- if (screen->inhibit & I_TEK)
- screen->TekEmu = False;
-
- if (screen->TekEmu && !TekInit())
- SysError(ERROR_INIT);
-#endif
-
- /*
- * Start the toolbar at this point, after the first window has been setup.
- */
-#if OPT_TOOLBAR
- ShowToolbar(resource.toolBar);
-#endif
-
-#if OPT_SESSION_MGT
- if (resource.sessionMgt) {
- TRACE(("Enabling session-management callbacks\n"));
- XtAddCallback(toplevel, XtNdieCallback, die_callback, NULL);
- XtAddCallback(toplevel, XtNsaveCallback, save_callback, NULL);
- }
-#endif
-
- /*
- * Set title and icon name if not specified
- */
- if (command_to_exec) {
- Arg args[2];
-
- if (!resource.title) {
- if (command_to_exec) {
- resource.title = x_basename(command_to_exec[0]);
- } /* else not reached */
- }
-
- if (!resource.icon_name)
- resource.icon_name = resource.title;
- XtSetArg(args[0], XtNtitle, resource.title);
- XtSetArg(args[1], XtNiconName, resource.icon_name);
-
- TRACE(("setting:\n\ttitle \"%s\"\n\ticon \"%s\"\n\tbased on command \"%s\"\n",
- resource.title,
- resource.icon_name,
- *command_to_exec));
-
- XtSetValues(toplevel, args, 2);
- }
-#if OPT_LUIT_PROG
- if (term->misc.callfilter) {
- int u = (term->misc.use_encoding ? 2 : 0);
- if (command_to_exec) {
- int n;
- char **c;
- for (n = 0, c = command_to_exec; *c; n++, c++) ;
- c = TypeMallocN(char *, n + 3 + u);
- if (c == NULL)
- SysError(ERROR_LUMALLOC);
- memcpy(c + 2 + u, command_to_exec, (n + 1) * sizeof(char *));
- c[0] = term->misc.localefilter;
- if (u) {
- c[1] = "-encoding";
- c[2] = term->misc.locale_str;
- }
- c[1 + u] = "--";
- command_to_exec_with_luit = c;
- } else {
- static char *luit[4];
- luit[0] = term->misc.localefilter;
- if (u) {
- luit[1] = "-encoding";
- luit[2] = term->misc.locale_str;
- luit[3] = NULL;
- } else
- luit[1] = NULL;
- command_to_exec_with_luit = luit;
- }
- }
-#endif
-
-#ifdef DEBUG
- {
- /* Set up stderr properly. Opening this log file cannot be
- done securely by a privileged xterm process (although we try),
- so the debug feature is disabled by default. */
- char dbglogfile[45];
- int i = -1;
- if (debug) {
- timestamp_filename(dbglogfile, "xterm.debug.log.");
- if (creat_as(getuid(), getgid(), False, dbglogfile, 0666)) {
- i = open(dbglogfile, O_WRONLY | O_TRUNC);
- }
- }
- if (i >= 0) {
- dup2(i, 2);
-
- /* mark this file as close on exec */
- (void) fcntl(i, F_SETFD, 1);
- }
- }
-#endif /* DEBUG */
-
- /* open a terminal for client */
- get_terminal();
-
- spawn();
-
-#ifndef VMS
- /* Child process is out there, let's catch its termination */
-
-#ifdef USE_POSIX_SIGNALS
- (void) posix_signal(SIGCHLD, reapchild);
-#else
- (void) signal(SIGCHLD, reapchild);
-#endif
- /* Realize procs have now been executed */
-
- if (am_slave >= 0) { /* Write window id so master end can read and use */
- char buf[80];
-
- buf[0] = '\0';
- sprintf(buf, "%lx\n", XtWindow(SHELL_OF(CURRENT_EMU(screen))));
- write(screen->respond, buf, strlen(buf));
- }
-#ifdef AIXV3
-#if (OSMAJORVERSION < 4)
- /* In AIXV3, xterms started from /dev/console have CLOCAL set.
- * This means we need to clear CLOCAL so that SIGHUP gets sent
- * to the slave-pty process when xterm exits.
- */
-
- {
- TERMIO_STRUCT tio;
-
- if (ttyGetAttr(screen->respond, &tio) == -1)
- SysError(ERROR_TIOCGETP);
-
- tio.c_cflag &= ~(CLOCAL);
-
- if (ttySetAttr(screen->respond, &tio) == -1)
- SysError(ERROR_TIOCSETP);
- }
-#endif
-#endif
-#if defined(USE_ANY_SYSV_TERMIO) || defined(__MVS__)
- if (0 > (mode = fcntl(screen->respond, F_GETFL, 0)))
- SysError(ERROR_F_GETFL);
-#ifdef O_NDELAY
- mode |= O_NDELAY;
-#else
- mode |= O_NONBLOCK;
-#endif /* O_NDELAY */
- if (fcntl(screen->respond, F_SETFL, mode))
- SysError(ERROR_F_SETFL);
-#else /* !USE_ANY_SYSV_TERMIO */
- mode = 1;
- if (ioctl(screen->respond, FIONBIO, (char *) &mode) == -1)
- SysError(ERROR_FIONBIO);
-#endif /* USE_ANY_SYSV_TERMIO, etc */
-
- /* The erase character is used to delete the current completion */
-#if OPT_DABBREV
-#ifdef TERMIO_STRUCT
- screen->dabbrev_erase_char = d_tio.c_cc[VERASE];
-#else
- screen->dabbrev_erase_char = d_sg.sg_erase;
-#endif
-#endif
-
- FD_ZERO(&pty_mask);
- FD_ZERO(&X_mask);
- FD_ZERO(&Select_mask);
- FD_SET(screen->respond, &pty_mask);
- FD_SET(ConnectionNumber(screen->display), &X_mask);
- FD_SET(screen->respond, &Select_mask);
- FD_SET(ConnectionNumber(screen->display), &Select_mask);
- max_plus1 = ((screen->respond < ConnectionNumber(screen->display))
- ? (1 + ConnectionNumber(screen->display))
- : (1 + screen->respond));
-
-#endif /* !VMS */
-#ifdef DEBUG
- if (debug)
- printf("debugging on\n");
-#endif /* DEBUG */
- XSetErrorHandler(xerror);
- XSetIOErrorHandler(xioerror);
-
- initPtyData(&VTbuffer);
-#ifdef ALLOWLOGGING
- if (term->misc.log_on) {
- StartLog(screen);
- }
-#endif
-
- if (winToEmbedInto != None) {
- XtRealizeWidget(toplevel);
- /*
- * This should probably query the tree or check the attributes of
- * winToEmbedInto in order to verify that it exists, but I'm still not
- * certain what is the best way to do it -GPS
- */
- XReparentWindow(XtDisplay(toplevel),
- XtWindow(toplevel),
- winToEmbedInto, 0, 0);
- }
-
- for (;;) {
-#if OPT_TEK4014
- if (screen->TekEmu)
- TekRun();
- else
-#endif
- VTRun();
- }
-}
-
-#if defined(__osf__) || (defined(__GLIBC__) && !defined(USE_USG_PTYS)) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
-#define USE_OPENPTY 1
-static int opened_tty = -1;
-#endif
-
-/*
- * This function opens up a pty master and stuffs its value into pty.
- *
- * If it finds one, it returns a value of 0. If it does not find one,
- * it returns a value of !0. This routine is designed to be re-entrant,
- * so that if a pty master is found and later, we find that the slave
- * has problems, we can re-enter this function and get another one.
- */
-static int
-get_pty(int *pty, char *from GCC_UNUSED)
-{
- int result = 1;
-
-#if defined(PUCC_PTYD)
-
- result = ((*pty = openrpty(ttydev, ptydev,
- (resource.utmpInhibit ? OPTY_NOP : OPTY_LOGIN),
- getuid(), from)) < 0);
-
-#elif defined(USE_OPENPTY)
-
- result = openpty(pty, &opened_tty, ttydev, NULL, NULL);
-
-#elif defined(__QNXNTO__)
-
- result = pty_search(pty);
-
-#else
-#if defined(USE_ISPTS_FLAG)
-
- /*
- The order of this code is *important*. On SYSV/386 we want to open
- a /dev/ttyp? first if at all possible. If none are available, then
- we'll try to open a /dev/pts??? device.
-
- The reason for this is because /dev/ttyp? works correctly, where
- as /dev/pts??? devices have a number of bugs, (won't update
- screen correcly, will hang -- it more or less works, but you
- really don't want to use it).
-
- Most importantly, for boxes of this nature, one of the major
- "features" is that you can emulate a 8086 by spawning off a UNIX
- program on 80386/80486 in v86 mode. In other words, you can spawn
- off multiple MS-DOS environments. On ISC the program that does
- this is named "vpix." The catcher is that "vpix" will *not* work
- with a /dev/pts??? device, will only work with a /dev/ttyp? device.
-
- Since we can open either a /dev/ttyp? or a /dev/pts??? device,
- the flag "IsPts" is set here so that we know which type of
- device we're dealing with in routine spawn(). That's the reason
- for the "if (IsPts)" statement in spawn(); we have two different
- device types which need to be handled differently.
- */
- result = pty_search(pty);
- if (!result)
- IsPts = 0;
-
-#endif
-#if defined(USE_USG_PTYS) || defined(__CYGWIN__)
-#ifdef __GLIBC__ /* if __GLIBC__ and USE_USG_PTYS, we know glibc >= 2.1 */
- /* GNU libc 2 allows us to abstract away from having to know the
- master pty device name. */
- if ((*pty = getpt()) >= 0) {
- char *name = ptsname(*pty);
- if (name != 0) { /* if filesystem is trashed, this may be null */
- strcpy(ttydev, name);
- result = 0;
- }
- }
-#elif defined(__MVS__)
- result = pty_search(pty);
-#else
-#if defined(USE_ISPTS_FLAG)
- if (result) {
-#endif
- result = ((*pty = open("/dev/ptmx", O_RDWR)) < 0);
-#endif
-#if defined(SVR4) || defined(__SCO__) || defined(USE_ISPTS_FLAG)
- if (!result)
- strcpy(ttydev, ptsname(*pty));
-#ifdef USE_ISPTS_FLAG
- IsPts = !result; /* true if we're successful */
- }
-#endif
-#endif
-
-#elif defined(AIXV3)
-
- if ((*pty = open("/dev/ptc", O_RDWR)) >= 0) {
- strcpy(ttydev, ttyname(*pty));
- result = 0;
- }
-#elif defined(__convex__)
-
- char *pty_name;
- extern char *getpty(void);
-
- while ((pty_name = getpty()) != NULL) {
- if ((*pty = open(pty_name, O_RDWR)) >= 0) {
- strcpy(ptydev, pty_name);
- strcpy(ttydev, pty_name);
- *x_basename(ttydev) = 't';
- result = 0;
- break;
- }
- }
-
-#elif defined(sequent)
-
- result = ((*pty = getpseudotty(&ttydev, &ptydev)) < 0);
-
-#elif defined(__sgi) && (OSMAJORVERSION >= 4)
-
- char *tty_name;
-
- tty_name = _getpty(pty, O_RDWR, 0622, 0);
- if (tty_name != 0) {
- strcpy(ttydev, tty_name);
- result = 0;
- }
-#elif (defined(__sgi) && (OSMAJORVERSION < 4)) || (defined(umips) && defined (SYSTYPE_SYSV))
-
- struct stat fstat_buf;
-
- *pty = open("/dev/ptc", O_RDWR);
- if (*pty >= 0 && (fstat(*pty, &fstat_buf)) >= 0) {
- result = 0;
- sprintf(ttydev, "/dev/ttyq%d", minor(fstat_buf.st_rdev));
- }
-#elif defined(__hpux)
-
- /*
- * Use the clone device if it works, otherwise use pty_search logic.
- */
- if ((*pty = open("/dev/ptym/clone", O_RDWR)) >= 0) {
- char *name = ptsname(*pty);
- if (name != 0) {
- strcpy(ttydev, name);
- result = 0;
- } else { /* permissions, or other unexpected problem */
- close(*pty);
- *pty = -1;
- result = pty_search(pty);
- }
- } else {
- result = pty_search(pty);
- }
-
-#else
-
- result = pty_search(pty);
-
-#endif
-#endif
-
- TRACE(("get_pty(ttydev=%s, ptydev=%s) %s fd=%d\n",
- ttydev != 0 ? ttydev : "?",
- ptydev != 0 ? ptydev : "?",
- result ? "FAIL" : "OK",
- pty != 0 ? *pty : -1));
- return result;
-}
-
-static void
-set_pty_permissions(uid_t uid, gid_t gid, mode_t mode)
-{
-#ifdef USE_TTY_GROUP
- struct group *ttygrp;
-
- if ((ttygrp = getgrnam(TTY_GROUP_NAME)) != 0) {
- gid = ttygrp->gr_gid;
- mode &= 0660U;
- }
- endgrent();
-#endif /* USE_TTY_GROUP */
-
- set_owner(ttydev, uid, gid, mode);
-}
-
-#ifdef get_pty /* USE_UTMP_SETGID */
-#undef get_pty
-/*
- * Call the real get_pty() before relinquishing root-setuid, caching the
- * result.
- */
-static int
-get_pty(int *pty, char *from)
-{
- static int m_pty = -1;
- int result = -1;
-
- if (pty == NULL) {
- result = really_get_pty(&m_pty, from);
-
- seteuid(0);
- set_pty_permissions(getuid(), getgid(), 0600U);
- seteuid(getuid());
-
-#ifdef USE_OPENPTY
- if (opened_tty >= 0) {
- close(opened_tty);
- opened_tty = -1;
- }
-#endif
- } else if (m_pty != -1) {
- *pty = m_pty;
- result = 0;
- } else {
- result = -1;
- }
- return result;
-}
-#endif
-
-/*
- * Called from get_pty to iterate over likely pseudo terminals
- * we might allocate. Used on those systems that do not have
- * a functional interface for allocating a pty.
- * Returns 0 if found a pty, 1 if fails.
- */
-#ifdef USE_PTY_SEARCH
-static int
-pty_search(int *pty)
-{
- static int devindex = 0, letter = 0;
-
-#if defined(CRAY) || defined(__MVS__)
- while (devindex < MAXPTTYS) {
- sprintf(ttydev, TTYFORMAT, devindex);
- sprintf(ptydev, PTYFORMAT, devindex);
- devindex++;
-
- TRACE(("pty_search(ttydev=%s, ptydev=%s)\n", ttydev, ptydev));
- if ((*pty = open(ptydev, O_RDWR)) >= 0) {
- return 0;
- }
- }
-#else /* CRAY || __MVS__ */
- while (PTYCHAR1[letter]) {
- ttydev[strlen(ttydev) - 2] =
- ptydev[strlen(ptydev) - 2] = PTYCHAR1[letter];
-
- while (PTYCHAR2[devindex]) {
- ttydev[strlen(ttydev) - 1] =
- ptydev[strlen(ptydev) - 1] = PTYCHAR2[devindex];
- devindex++;
-
- TRACE(("pty_search(ttydev=%s, ptydev=%s)\n", ttydev, ptydev));
- if ((*pty = open(ptydev, O_RDWR)) >= 0) {
-#ifdef sun
- /* Need to check the process group of the pty.
- * If it exists, then the slave pty is in use,
- * and we need to get another one.
- */
- int pgrp_rtn;
- if (ioctl(*pty, TIOCGPGRP, &pgrp_rtn) == 0 || errno != EIO) {
- close(*pty);
- continue;
- }
-#endif /* sun */
- return 0;
- }
- }
- devindex = 0;
- letter++;
- }
-#endif /* CRAY else */
- /*
- * We were unable to allocate a pty master! Return an error
- * condition and let our caller terminate cleanly.
- */
- return 1;
-}
-#endif /* USE_PTY_SEARCH */
-
-/*
- * sets up X and initializes the terminal structure except for term.buf.fildes.
- */
-static void
-get_terminal(void)
-{
- TScreen *screen = &term->screen;
-
- screen->arrow = make_colored_cursor(XC_left_ptr,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
-}
-
-/*
- * The only difference in /etc/termcap between 4014 and 4015 is that
- * the latter has support for switching character sets. We support the
- * 4015 protocol, but ignore the character switches. Therefore, we
- * choose 4014 over 4015.
- *
- * Features of the 4014 over the 4012: larger (19") screen, 12-bit
- * graphics addressing (compatible with 4012 10-bit addressing),
- * special point plot mode, incremental plot mode (not implemented in
- * later Tektronix terminals), and 4 character sizes.
- * All of these are supported by xterm.
- */
-
-#if OPT_TEK4014
-static char *tekterm[] =
-{
- "tek4014",
- "tek4015", /* 4014 with APL character set support */
- "tek4012", /* 4010 with lower case */
- "tek4013", /* 4012 with APL character set support */
- "tek4010", /* small screen, upper-case only */
- "dumb",
- 0
-};
-#endif
-
-/* The VT102 is a VT100 with the Advanced Video Option included standard.
- * It also adds Escape sequences for insert/delete character/line.
- * The VT220 adds 8-bit character sets, selective erase.
- * The VT320 adds a 25th status line, terminal state interrogation.
- * The VT420 has up to 48 lines on the screen.
- */
-
-static char *vtterm[] =
-{
-#ifdef USE_X11TERM
- "x11term", /* for people who want special term name */
-#endif
- DFT_TERMTYPE, /* for people who want special term name */
- "xterm", /* the prefered name, should be fastest */
- "vt102",
- "vt100",
- "ansi",
- "dumb",
- 0
-};
-
-/* ARGSUSED */
-static SIGNAL_T
-hungtty(int i GCC_UNUSED)
-{
- siglongjmp(env, 1);
- SIGNAL_RETURN;
-}
-
-/*
- * declared outside OPT_PTY_HANDSHAKE so HsSysError() callers can use
- */
-static int cp_pipe[2]; /* this pipe is used for child to parent transfer */
-
-#if OPT_PTY_HANDSHAKE
-static int pc_pipe[2]; /* this pipe is used for parent to child transfer */
-typedef enum { /* c == child, p == parent */
- PTY_BAD, /* c->p: can't open pty slave for some reason */
- PTY_FATALERROR, /* c->p: we had a fatal error with the pty */
- PTY_GOOD, /* c->p: we have a good pty, let's go on */
- PTY_NEW, /* p->c: here is a new pty slave, try this */
- PTY_NOMORE, /* p->c; no more pty's, terminate */
- UTMP_ADDED, /* c->p: utmp entry has been added */
- UTMP_TTYSLOT, /* c->p: here is my ttyslot */
- PTY_EXEC /* p->c: window has been mapped the first time */
-} status_t;
-
-typedef struct {
- status_t status;
- int error;
- int fatal_error;
- int tty_slot;
- int rows;
- int cols;
- char buffer[1024];
-} handshake_t;
-
-/* HsSysError()
- *
- * This routine does the equivalent of a SysError but it handshakes
- * over the errno and error exit to the master process so that it can
- * display our error message and exit with our exit code so that the
- * user can see it.
- */
-
-static void
-HsSysError(int pf, int error)
-{
- handshake_t handshake;
-
- handshake.status = PTY_FATALERROR;
- handshake.error = errno;
- handshake.fatal_error = error;
- strcpy(handshake.buffer, ttydev);
- write(pf, (char *) &handshake, sizeof(handshake));
- exit(error);
-}
-
-void
-first_map_occurred(void)
-{
- handshake_t handshake;
- TScreen *screen = &term->screen;
-
- handshake.status = PTY_EXEC;
- handshake.rows = screen->max_row;
- handshake.cols = screen->max_col;
- write(pc_pipe[1], (char *) &handshake, sizeof(handshake));
- close(cp_pipe[0]);
- close(pc_pipe[1]);
- waiting_for_initial_map = False;
-}
-#else
-/*
- * temporary hack to get xterm working on att ptys
- */
-static void
-HsSysError(int pf GCC_UNUSED, int error)
-{
- fprintf(stderr, "%s: fatal pty error %d (errno=%d) on tty %s\n",
- xterm_name, error, errno, ttydev);
- exit(error);
-}
-
-void
-first_map_occurred(void)
-{
- return;
-}
-#endif /* OPT_PTY_HANDSHAKE else !OPT_PTY_HANDSHAKE */
-
-#ifndef VMS
-static void
-set_owner(char *device, uid_t uid, gid_t gid, mode_t mode)
-{
- int why;
-
- TRACE(("set_owner(%s, uid=%d, gid=%d, mode=%#o\n", device, uid, gid, mode));
-
- if (chown(device, uid, gid) < 0) {
- why = errno;
- if (why != ENOENT
- && getuid() == 0) {
- fprintf(stderr, "Cannot chown %s to %ld,%ld: %s\n",
- device, (long) uid, (long) gid,
- strerror(why));
- }
- TRACE(("...chown failed: %s\n", strerror(why)));
- }
- if (chmod(device, mode) < 0) {
- why = errno;
- if (why != ENOENT) {
- struct stat sb;
- if (stat(device, &sb) < 0) {
- fprintf(stderr, "Cannot chmod %s to %03o: %s\n",
- device, (unsigned) mode,
- strerror(why));
- } else if (mode != (sb.st_mode & 0777U)) {
- fprintf(stderr,
- "Cannot chmod %s to %03o currently %03o: %s\n",
- device, (unsigned) mode, (sb.st_mode & 0777U),
- strerror(why));
- TRACE(("...stat uid=%d, gid=%d, mode=%#o\n",
- sb.st_uid, sb.st_gid, sb.st_mode));
- }
- }
- TRACE(("...chmod failed: %s\n", strerror(why)));
- }
-}
-
-#if defined(HAVE_UTMP) && defined(USE_SYSV_UTMP) && !defined(USE_UTEMPTER)
-/*
- * getutid() only looks at ut_type and ut_id.
- * But we'll also check ut_line in find_utmp().
- */
-static void
-init_utmp(int type, struct UTMP_STR *tofind)
-{
- memset(tofind, 0, sizeof(*tofind));
- tofind->ut_type = type;
- (void) strncpy(tofind->ut_id, my_utmp_id(ttydev), sizeof(tofind->ut_id));
- (void) strncpy(tofind->ut_line, my_pty_name(ttydev), sizeof(tofind->ut_line));
-}
-
-/*
- * We could use getutline() if we didn't support old systems.
- */
-static struct UTMP_STR *
-find_utmp(struct UTMP_STR *tofind)
-{
- struct UTMP_STR *result;
- struct UTMP_STR working;
-
- for (;;) {
- memset(&working, 0, sizeof(working));
- working.ut_type = tofind->ut_type;
- memcpy(working.ut_id, tofind->ut_id, sizeof(tofind->ut_id));
-#if defined(__digital__) && defined(__unix__) && (defined(OSMAJORVERSION) && OSMAJORVERSION < 5)
- working.ut_type = 0;
-#endif
- if ((result = call_getutid(&working)) == 0)
- break;
- if (!strcmp(result->ut_line, tofind->ut_line))
- break;
- /*
- * Solaris, IRIX64 and HPUX manpages say to fill the static area
- * pointed to by the return-value to zeros if searching for multiple
- * occurrences. Otherwise it will continue to return the same value.
- */
- memset(result, 0, sizeof(*result));
- }
- return result;
-}
-#endif /* HAVE_UTMP... */
-
-#define close_fd(fd) close(fd), fd = -1
-
-/*
- * Inits pty and tty and forks a login process.
- * Does not close fd Xsocket.
- * If slave, the pty named in passedPty is already open for use
- */
-static int
-spawn(void)
-{
- TScreen *screen = &term->screen;
-#if OPT_PTY_HANDSHAKE
- handshake_t handshake;
- int done;
-#endif
-#if OPT_INITIAL_ERASE
- int initial_erase = VAL_INITIAL_ERASE;
-#endif
- int rc = 0;
- int ttyfd = -1;
-
-#ifdef TERMIO_STRUCT
- TERMIO_STRUCT tio;
-#ifdef __MVS__
- TERMIO_STRUCT gio;
-#endif /* __MVS__ */
-#ifdef TIOCLSET
- unsigned lmode;
-#endif /* TIOCLSET */
-#ifdef HAS_LTCHARS
- struct ltchars ltc;
-#endif /* HAS_LTCHARS */
-#else /* !TERMIO_STRUCT */
- int ldisc = 0;
- int discipline;
- unsigned lmode;
- struct tchars tc;
- struct ltchars ltc;
- struct sgttyb sg;
-#ifdef sony
- int jmode;
- struct jtchars jtc;
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
-
- char termcap[TERMCAP_SIZE];
- char newtc[TERMCAP_SIZE];
- char *ptr, *shname, *shname_minus;
- int i, no_dev_tty = False;
- char **envnew; /* new environment */
- int envsize; /* elements in new environment */
- char buf[64];
- char *TermName = NULL;
-#ifdef TTYSIZE_STRUCT
- TTYSIZE_STRUCT ts;
-#endif
- struct passwd *pw = NULL;
- char *login_name = NULL;
-#ifndef USE_UTEMPTER
-#ifdef HAVE_UTMP
- struct UTMP_STR utmp;
-#ifdef USE_SYSV_UTMP
- struct UTMP_STR *utret = NULL;
-#endif
-#ifdef USE_LASTLOG
- struct lastlog lastlog;
-#endif
-#ifdef USE_LASTLOGX
- struct lastlogx lastlog;
-#endif /* USE_LASTLOG */
-#endif /* HAVE_UTMP */
-#endif /* !USE_UTEMPTER */
-
- /* Noisy compilers (suppress some unused-variable warnings) */
- (void) rc;
-#if defined(HAVE_UTMP) && defined(USE_SYSV_UTMP) && !defined(USE_UTEMPTER)
- (void) utret;
-#endif
-
- screen->uid = getuid();
- screen->gid = getgid();
-
- termcap[0] = '\0';
- newtc[0] = '\0';
-
-#ifdef SIGTTOU
- /* so that TIOCSWINSZ || TIOCSIZE doesn't block */
- signal(SIGTTOU, SIG_IGN);
-#endif
-
- if (am_slave >= 0) {
- screen->respond = am_slave;
- set_pty_id(ttydev, passedPty);
-#ifdef USE_PTY_DEVICE
- set_pty_id(ptydev, passedPty);
-#endif
- setgid(screen->gid);
- setuid(screen->uid);
- } else {
- Bool tty_got_hung;
-
- /*
- * Sometimes /dev/tty hangs on open (as in the case of a pty
- * that has gone away). Simply make up some reasonable
- * defaults.
- */
-
- signal(SIGALRM, hungtty);
- alarm(2); /* alarm(1) might return too soon */
- if (!sigsetjmp(env, 1)) {
- ttyfd = open("/dev/tty", O_RDWR);
- alarm(0);
- tty_got_hung = False;
- } else {
- tty_got_hung = True;
- ttyfd = -1;
- errno = ENXIO;
- }
-#if OPT_INITIAL_ERASE
- initial_erase = VAL_INITIAL_ERASE;
-#endif
- signal(SIGALRM, SIG_DFL);
-
- /*
- * Check results and ignore current control terminal if
- * necessary. ENXIO is what is normally returned if there is
- * no controlling terminal, but some systems (e.g. SunOS 4.0)
- * seem to return EIO. Solaris 2.3 is said to return EINVAL.
- * Cygwin returns ENOENT.
- */
- no_dev_tty = False;
- if (ttyfd < 0) {
- if (tty_got_hung || errno == ENXIO || errno == EIO ||
-#ifdef ENODEV
- errno == ENODEV ||
-#endif
-#ifdef __CYGWIN__
- errno == ENOENT ||
-#endif
- errno == EINVAL || errno == ENOTTY || errno == EACCES) {
- no_dev_tty = True;
-#ifdef HAS_LTCHARS
- ltc = d_ltc;
-#endif /* HAS_LTCHARS */
-#ifdef TIOCLSET
- lmode = d_lmode;
-#endif /* TIOCLSET */
-#ifdef TERMIO_STRUCT
- tio = d_tio;
-#else /* !TERMIO_STRUCT */
- sg = d_sg;
- tc = d_tc;
- discipline = d_disipline;
-#ifdef sony
- jmode = d_jmode;
- jtc = d_jtc;
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
- } else {
- SysError(ERROR_OPDEVTTY);
- }
- } else {
-
- /* Get a copy of the current terminal's state,
- * if we can. Some systems (e.g., SVR4 and MacII)
- * may not have a controlling terminal at this point
- * if started directly from xdm or xinit,
- * in which case we just use the defaults as above.
- */
-#ifdef HAS_LTCHARS
- if (ioctl(ttyfd, TIOCGLTC, &ltc) == -1)
- ltc = d_ltc;
-#endif /* HAS_LTCHARS */
-#ifdef TIOCLSET
- if (ioctl(ttyfd, TIOCLGET, &lmode) == -1)
- lmode = d_lmode;
-#endif /* TIOCLSET */
-#ifdef TERMIO_STRUCT
- if ((rc = ttyGetAttr(ttyfd, &tio)) == -1)
- tio = d_tio;
-#else /* !TERMIO_STRUCT */
- if ((rc = ioctl(ttyfd, TIOCGETP, (char *) &sg)) == -1)
- sg = d_sg;
- if (ioctl(ttyfd, TIOCGETC, (char *) &tc) == -1)
- tc = d_tc;
- if (ioctl(ttyfd, TIOCGETD, (char *) &discipline) == -1)
- discipline = d_disipline;
-#ifdef sony
- if (ioctl(ttyfd, TIOCKGET, (char *) &jmode) == -1)
- jmode = d_jmode;
- if (ioctl(ttyfd, TIOCKGETC, (char *) &jtc) == -1)
- jtc = d_jtc;
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
-
- /*
- * If ptyInitialErase is set, we want to get the pty's
- * erase value. Just in case that will fail, first get
- * the value from /dev/tty, so we will have something
- * at least.
- */
-#if OPT_INITIAL_ERASE
- if (resource.ptyInitialErase) {
-#ifdef TERMIO_STRUCT
- initial_erase = tio.c_cc[VERASE];
-#else /* !TERMIO_STRUCT */
- initial_erase = sg.sg_erase;
-#endif /* TERMIO_STRUCT */
- TRACE(("%s initial_erase:%d (from /dev/tty)\n",
- rc == 0 ? "OK" : "FAIL",
- initial_erase));
- }
-#endif
-#ifdef __MVS__
- if (ttyGetAttr(ttyfd, &gio) == 0) {
- gio.c_cflag &= ~(HUPCL | PARENB);
- ttySetAttr(ttyfd, &gio);
- }
-#endif /* __MVS__ */
-
- close_fd(ttyfd);
- }
-
- if (get_pty(&screen->respond, XDisplayString(screen->display))) {
- SysError(ERROR_PTYS);
- }
-#if OPT_INITIAL_ERASE
- if (resource.ptyInitialErase) {
-#ifdef TERMIO_STRUCT
- TERMIO_STRUCT my_tio;
- if ((rc = ttyGetAttr(screen->respond, &my_tio)) == 0)
- initial_erase = my_tio.c_cc[VERASE];
-#else /* !TERMIO_STRUCT */
- struct sgttyb my_sg;
- if ((rc = ioctl(screen->respond, TIOCGETP, (char *) &my_sg)) == 0)
- initial_erase = my_sg.sg_erase;
-#endif /* TERMIO_STRUCT */
- TRACE(("%s initial_erase:%d (from pty)\n",
- (rc == 0) ? "OK" : "FAIL",
- initial_erase));
- }
-#endif /* OPT_INITIAL_ERASE */
- }
-
- /* avoid double MapWindow requests */
- XtSetMappedWhenManaged(XtParent(CURRENT_EMU(screen)), False);
-
- wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW",
- False);
-
- if (!TEK4014_ACTIVE(screen))
- VTInit(); /* realize now so know window size for tty driver */
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
- if (Console) {
- /*
- * Inform any running xconsole program
- * that we are going to steal the console.
- */
- XmuGetHostname(mit_console_name + MIT_CONSOLE_LEN, 255);
- mit_console = XInternAtom(screen->display, mit_console_name, False);
- /* the user told us to be the console, so we can use CurrentTime */
- XtOwnSelection(XtParent(CURRENT_EMU(screen)),
- mit_console, CurrentTime,
- ConvertConsoleSelection, NULL, NULL);
- }
-#endif
-#if OPT_TEK4014
- if (screen->TekEmu) {
- envnew = tekterm;
- ptr = newtc;
- } else
-#endif
- {
- envnew = vtterm;
- ptr = termcap;
- }
-
- /*
- * This used to exit if no termcap entry was found for the specified
- * terminal name. That's a little unfriendly, so instead we'll allow
- * the program to proceed (but not to set $TERMCAP) if the termcap
- * entry is not found.
- */
- if (!get_termcap(TermName = resource.term_name, ptr, newtc)) {
- char *last = NULL;
- TermName = *envnew;
- while (*envnew != NULL) {
- if ((last == NULL || strcmp(last, *envnew))
- && get_termcap(*envnew, ptr, newtc)) {
- TermName = *envnew;
- break;
- }
- last = *envnew;
- envnew++;
- }
- }
-
- /*
- * Check if ptyInitialErase is not set. If so, we rely on the termcap
- * (or terminfo) to tell us what the erase mode should be set to.
- */
-#if OPT_INITIAL_ERASE
- TRACE(("resource ptyInitialErase is %sset\n",
- resource.ptyInitialErase ? "" : "not "));
- if (!resource.ptyInitialErase) {
- char temp[1024], *p = temp;
- char *s = tgetstr(TERMCAP_ERASE, &p);
- TRACE(("...extracting initial_erase value from termcap\n"));
- if (s != 0) {
- initial_erase = decode_keyvalue(&s, True);
- }
- }
- TRACE(("...initial_erase:%d\n", initial_erase));
-
- TRACE(("resource backarrowKeyIsErase is %sset\n",
- resource.backarrow_is_erase ? "" : "not "));
- if (resource.backarrow_is_erase) { /* see input.c */
- if (initial_erase == 127) {
- term->keyboard.flags &= ~MODE_DECBKM;
- } else {
- term->keyboard.flags |= MODE_DECBKM;
- term->keyboard.reset_DECBKM = 1;
- }
- TRACE(("...sets DECBKM %s\n",
- (term->keyboard.flags & MODE_DECBKM) ? "on" : "off"));
- } else {
- term->keyboard.reset_DECBKM = 2;
- }
-#endif /* OPT_INITIAL_ERASE */
-
-#ifdef TTYSIZE_STRUCT
- /* tell tty how big window is */
-#if OPT_TEK4014
- if (TEK4014_ACTIVE(screen)) {
- TTYSIZE_ROWS(ts) = 38;
- TTYSIZE_COLS(ts) = 81;
-#if defined(USE_STRUCT_WINSIZE)
- ts.ws_xpixel = TFullWidth(screen);
- ts.ws_ypixel = TFullHeight(screen);
-#endif
- } else
-#endif
- {
- TTYSIZE_ROWS(ts) = MaxRows(screen);
- TTYSIZE_COLS(ts) = MaxCols(screen);
-#if defined(USE_STRUCT_WINSIZE)
- ts.ws_xpixel = FullWidth(screen);
- ts.ws_ypixel = FullHeight(screen);
-#endif
- }
- i = SET_TTYSIZE(screen->respond, ts);
- TRACE(("spawn SET_TTYSIZE %dx%d return %d\n",
- TTYSIZE_ROWS(ts),
- TTYSIZE_COLS(ts), i));
-#endif /* TTYSIZE_STRUCT */
-
- added_utmp_entry = False;
-#if defined(USE_UTEMPTER)
-#undef UTMP
- if (!resource.utmpInhibit) {
- struct UTMP_STR dummy;
-
- /* Note: utempter may trim it anyway */
- SetUtmpHost(dummy.ut_host, screen);
- addToUtmp(ttydev, dummy.ut_host, screen->respond);
- added_utmp_entry = True;
- }
-#endif
-
- if (am_slave < 0) {
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake && (pipe(pc_pipe) || pipe(cp_pipe)))
- SysError(ERROR_FORK);
-#endif
- TRACE(("Forking...\n"));
- if ((screen->pid = fork()) == -1)
- SysError(ERROR_FORK);
-
- if (screen->pid == 0) {
- /*
- * now in child process
- */
- TRACE_CHILD
-#if defined(_POSIX_SOURCE) || defined(SVR4) || defined(__convex__) || defined(__SCO__) || defined(__QNX__)
- int pgrp = setsid(); /* variable may not be used... */
-#else
- int pgrp = getpid();
-#endif
-
-#ifdef USE_USG_PTYS
-#ifdef USE_ISPTS_FLAG
- if (IsPts) { /* SYSV386 supports both, which did we open? */
-#endif
- int ptyfd = 0;
- char *pty_name = 0;
-
- setpgrp();
- grantpt(screen->respond);
- unlockpt(screen->respond);
- if ((pty_name = ptsname(screen->respond)) == 0) {
- SysError(ERROR_PTSNAME);
- }
- if ((ptyfd = open(pty_name, O_RDWR)) < 0) {
- SysError(ERROR_OPPTSNAME);
- }
-#ifdef I_PUSH
- if (ioctl(ptyfd, I_PUSH, "ptem") < 0) {
- SysError(ERROR_PTEM);
- }
-#if !defined(SVR4) && !(defined(SYSV) && defined(i386))
- if (!getenv("CONSEM") && ioctl(ptyfd, I_PUSH, "consem") < 0) {
- SysError(ERROR_CONSEM);
- }
-#endif /* !SVR4 */
- if (ioctl(ptyfd, I_PUSH, "ldterm") < 0) {
- SysError(ERROR_LDTERM);
- }
-#ifdef SVR4 /* from Sony */
- if (ioctl(ptyfd, I_PUSH, "ttcompat") < 0) {
- SysError(ERROR_TTCOMPAT);
- }
-#endif /* SVR4 */
-#endif /* I_PUSH */
- ttyfd = ptyfd;
-#ifndef __MVS__
- close_fd(screen->respond);
-#endif /* __MVS__ */
-
-#ifdef TTYSIZE_STRUCT
- /* tell tty how big window is */
-#if OPT_TEK4014
- if (TEK4014_ACTIVE(screen)) {
- TTYSIZE_ROWS(ts) = 24;
- TTYSIZE_COLS(ts) = 80;
-#ifdef USE_STRUCT_WINSIZE
- ts.ws_xpixel = TFullWidth(screen);
- ts.ws_ypixel = TFullHeight(screen);
-#endif
- } else
-#endif /* OPT_TEK4014 */
- {
- TTYSIZE_ROWS(ts) = MaxRows(screen);
- TTYSIZE_COLS(ts) = MaxCols(screen);
-#ifdef USE_STRUCT_WINSIZE
- ts.ws_xpixel = FullWidth(screen);
- ts.ws_ypixel = FullHeight(screen);
-#endif
- }
-#endif /* TTYSIZE_STRUCT */
-
-#ifdef USE_ISPTS_FLAG
- } else { /* else pty, not pts */
-#endif
-#endif /* USE_USG_PTYS */
-
- (void) pgrp; /* not all branches use this variable */
-
-#if OPT_PTY_HANDSHAKE /* warning, goes for a long ways */
- if (resource.ptyHandshake) {
- /* close parent's sides of the pipes */
- close(cp_pipe[0]);
- close(pc_pipe[1]);
-
- /* Make sure that our sides of the pipes are not in the
- * 0, 1, 2 range so that we don't fight with stdin, out
- * or err.
- */
- if (cp_pipe[1] <= 2) {
- if ((i = fcntl(cp_pipe[1], F_DUPFD, 3)) >= 0) {
- (void) close(cp_pipe[1]);
- cp_pipe[1] = i;
- }
- }
- if (pc_pipe[0] <= 2) {
- if ((i = fcntl(pc_pipe[0], F_DUPFD, 3)) >= 0) {
- (void) close(pc_pipe[0]);
- pc_pipe[0] = i;
- }
- }
-
- /* we don't need the socket, or the pty master anymore */
- close(ConnectionNumber(screen->display));
-#ifndef __MVS__
- close(screen->respond);
-#endif /* __MVS__ */
-
- /* Now is the time to set up our process group and
- * open up the pty slave.
- */
-#ifdef USE_SYSV_PGRP
-#if defined(CRAY) && (OSMAJORVERSION > 5)
- (void) setsid();
-#else
- (void) setpgrp();
-#endif
-#endif /* USE_SYSV_PGRP */
-
-#if defined(__QNX__) && !defined(__QNXNTO__)
- qsetlogin(getlogin(), ttydev);
-#endif
- if (ttyfd >= 0) {
-#ifdef __MVS__
- if (ttyGetAttr(ttyfd, &gio) == 0) {
- gio.c_cflag &= ~(HUPCL | PARENB);
- ttySetAttr(ttyfd, &gio);
- }
-#else /* !__MVS__ */
- close_fd(ttyfd);
-#endif /* __MVS__ */
- }
-
- while (1) {
-#if defined(TIOCNOTTY) && (!defined(__GLIBC__) || (__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))
- if (!no_dev_tty
- && (ttyfd = open("/dev/tty", O_RDWR)) >= 0) {
- ioctl(ttyfd, TIOCNOTTY, (char *) NULL);
- close_fd(ttyfd);
- }
-#endif /* TIOCNOTTY && !glibc >= 2.1 */
-#ifdef CSRG_BASED
- (void) revoke(ttydev);
-#endif
- if ((ttyfd = open(ttydev, O_RDWR)) >= 0) {
-#if defined(CRAY) && defined(TCSETCTTY)
- /* make /dev/tty work */
- ioctl(ttyfd, TCSETCTTY, 0);
-#endif
-#ifdef USE_SYSV_PGRP
- /* We need to make sure that we are actually
- * the process group leader for the pty. If
- * we are, then we should now be able to open
- * /dev/tty.
- */
- if ((i = open("/dev/tty", O_RDWR)) >= 0) {
- /* success! */
- close(i);
- break;
- }
-#else /* USE_SYSV_PGRP */
- break;
-#endif /* USE_SYSV_PGRP */
- }
- perror("open ttydev");
-#ifdef TIOCSCTTY
- ioctl(ttyfd, TIOCSCTTY, 0);
-#endif
- /* let our master know that the open failed */
- handshake.status = PTY_BAD;
- handshake.error = errno;
- strcpy(handshake.buffer, ttydev);
- write(cp_pipe[1], (char *) &handshake,
- sizeof(handshake));
-
- /* get reply from parent */
- i = read(pc_pipe[0], (char *) &handshake,
- sizeof(handshake));
- if (i <= 0) {
- /* parent terminated */
- exit(1);
- }
-
- if (handshake.status == PTY_NOMORE) {
- /* No more ptys, let's shutdown. */
- exit(1);
- }
-
- /* We have a new pty to try */
- free(ttydev);
- ttydev = CastMallocN(char, strlen(handshake.buffer));
- if (ttydev == NULL) {
- SysError(ERROR_SPREALLOC);
- }
- strcpy(ttydev, handshake.buffer);
- }
-
- /* use the same tty name that everyone else will use
- * (from ttyname)
- */
- if ((ptr = ttyname(ttyfd)) != 0) {
- /* it may be bigger */
- ttydev = TypeRealloc(char, strlen(ptr) + 1, ttydev);
- if (ttydev == NULL) {
- SysError(ERROR_SPREALLOC);
- }
- (void) strcpy(ttydev, ptr);
- }
- }
-#endif /* OPT_PTY_HANDSHAKE -- from near fork */
-
-#ifdef USE_ISPTS_FLAG
- } /* end of IsPts else clause */
-#endif
-
- set_pty_permissions(screen->uid,
- screen->gid,
- (resource.messages
- ? 0622U
- : 0600U));
-
- /*
- * set up the tty modes
- */
- {
-#ifdef TERMIO_STRUCT
-#if defined(umips) || defined(CRAY) || defined(linux)
- /* If the control tty had its modes screwed around with,
- eg. by lineedit in the shell, or emacs, etc. then tio
- will have bad values. Let's just get termio from the
- new tty and tailor it. */
- if (ttyGetAttr(ttyfd, &tio) == -1)
- SysError(ERROR_TIOCGETP);
- tio.c_lflag |= ECHOE;
-#endif /* umips */
- /* Now is also the time to change the modes of the
- * child pty.
- */
- /* input: nl->nl, don't ignore cr, cr->nl */
- tio.c_iflag &= ~(INLCR | IGNCR);
- tio.c_iflag |= ICRNL;
-#if OPT_WIDE_CHARS && defined(linux) && defined(IUTF8)
-#if OPT_LUIT_PROG
- if (command_to_exec_with_luit == 0)
-#endif
- if (screen->utf8_mode)
- tio.c_iflag |= IUTF8;
-#endif
- /* ouput: cr->cr, nl is not return, no delays, ln->cr/nl */
-#ifndef USE_POSIX_TERMIOS
- tio.c_oflag &=
- ~(OCRNL
- | ONLRET
- | NLDLY
- | CRDLY
- | TABDLY
- | BSDLY
- | VTDLY
- | FFDLY);
-#endif /* USE_POSIX_TERMIOS */
-#ifdef ONLCR
- tio.c_oflag |= ONLCR;
-#endif /* ONLCR */
-#ifdef OPOST
- tio.c_oflag |= OPOST;
-#endif /* OPOST */
-#ifndef USE_POSIX_TERMIOS
-# if defined(Lynx) && !defined(CBAUD)
-# define CBAUD V_CBAUD
-# endif
- tio.c_cflag &= ~(CBAUD);
-#ifdef BAUD_0
- /* baud rate is 0 (don't care) */
-#elif defined(HAVE_TERMIO_C_ISPEED)
- tio.c_ispeed = tio.c_ospeed = VAL_LINE_SPEED;
-#else /* !BAUD_0 */
- tio.c_cflag |= VAL_LINE_SPEED;
-#endif /* !BAUD_0 */
-#else /* USE_POSIX_TERMIOS */
- cfsetispeed(&tio, VAL_LINE_SPEED);
- cfsetospeed(&tio, VAL_LINE_SPEED);
-#ifdef __MVS__
- /* turn off bits that can't be set from the slave side */
- tio.c_cflag &= ~(PACKET | PKT3270 | PTU3270 | PKTXTND);
-#endif /* __MVS__ */
- /* Clear CLOCAL so that SIGHUP is sent to us
- when the xterm ends */
- tio.c_cflag &= ~CLOCAL;
-#endif /* USE_POSIX_TERMIOS */
- /* enable signals, canonical processing (erase, kill, etc),
- * echo
- */
- tio.c_lflag |= ISIG | ICANON | ECHO | ECHOE | ECHOK;
-#ifdef ECHOKE
- tio.c_lflag |= ECHOKE | IEXTEN;
-#endif
-#ifdef ECHOCTL
- tio.c_lflag |= ECHOCTL | IEXTEN;
-#endif
-#ifndef __MVS__
- /* reset EOL to default value */
- tio.c_cc[VEOL] = CEOL; /* '^@' */
- /* certain shells (ksh & csh) change EOF as well */
- tio.c_cc[VEOF] = CEOF; /* '^D' */
-#else
- if (tio.c_cc[VEOL] == 0)
- tio.c_cc[VEOL] = CEOL; /* '^@' */
- if (tio.c_cc[VEOF] == 0)
- tio.c_cc[VEOF] = CEOF; /* '^D' */
-#endif
-#ifdef VLNEXT
- tio.c_cc[VLNEXT] = CLNEXT;
-#endif
-#ifdef VWERASE
- tio.c_cc[VWERASE] = CWERASE;
-#endif
-#ifdef VREPRINT
- tio.c_cc[VREPRINT] = CRPRNT;
-#endif
-#ifdef VRPRNT
- tio.c_cc[VRPRNT] = CRPRNT;
-#endif
-#ifdef VDISCARD
- tio.c_cc[VDISCARD] = CFLUSH;
-#endif
-#ifdef VFLUSHO
- tio.c_cc[VFLUSHO] = CFLUSH;
-#endif
-#ifdef VSTOP
- tio.c_cc[VSTOP] = CSTOP;
-#endif
-#ifdef VSTART
- tio.c_cc[VSTART] = CSTART;
-#endif
-#ifdef VSUSP
- tio.c_cc[VSUSP] = CSUSP;
-#endif
-#ifdef VDSUSP
- tio.c_cc[VDSUSP] = CDSUSP;
-#endif
- if (override_tty_modes) {
- /* sysv-specific */
- TMODE(XTTYMODE_intr, tio.c_cc[VINTR]);
- TMODE(XTTYMODE_quit, tio.c_cc[VQUIT]);
- TMODE(XTTYMODE_erase, tio.c_cc[VERASE]);
- TMODE(XTTYMODE_kill, tio.c_cc[VKILL]);
- TMODE(XTTYMODE_eof, tio.c_cc[VEOF]);
- TMODE(XTTYMODE_eol, tio.c_cc[VEOL]);
-#ifdef VSWTCH
- TMODE(XTTYMODE_swtch, tio.c_cc[VSWTCH]);
-#endif
-#ifdef VSUSP
- TMODE(XTTYMODE_susp, tio.c_cc[VSUSP]);
-#endif
-#ifdef VDSUSP
- TMODE(XTTYMODE_dsusp, tio.c_cc[VDSUSP]);
-#endif
-#ifdef VREPRINT
- TMODE(XTTYMODE_rprnt, tio.c_cc[VREPRINT]);
-#endif
-#ifdef VRPRNT
- TMODE(XTTYMODE_rprnt, tio.c_cc[VRPRNT]);
-#endif
-#ifdef VDISCARD
- TMODE(XTTYMODE_flush, tio.c_cc[VDISCARD]);
-#endif
-#ifdef VFLUSHO
- TMODE(XTTYMODE_flush, tio.c_cc[VFLUSHO]);
-#endif
-#ifdef VWERASE
- TMODE(XTTYMODE_weras, tio.c_cc[VWERASE]);
-#endif
-#ifdef VLNEXT
- TMODE(XTTYMODE_lnext, tio.c_cc[VLNEXT]);
-#endif
-#ifdef VSTART
- TMODE(XTTYMODE_start, tio.c_cc[VSTART]);
-#endif
-#ifdef VSTOP
- TMODE(XTTYMODE_stop, tio.c_cc[VSTOP]);
-#endif
-#ifdef VSTATUS
- TMODE(XTTYMODE_status, tio.c_cc[VSTATUS]);
-#endif
-#ifdef VERASE2
- TMODE(XTTYMODE_erase2, tio.c_cc[VERASE2]);
-#endif
-#ifdef VEOL2
- TMODE(XTTYMODE_eol2, tio.c_cc[VEOL2]);
-#endif
-#ifdef HAS_LTCHARS
- /* both SYSV and BSD have ltchars */
- TMODE(XTTYMODE_susp, ltc.t_suspc);
- TMODE(XTTYMODE_dsusp, ltc.t_dsuspc);
- TMODE(XTTYMODE_rprnt, ltc.t_rprntc);
- TMODE(XTTYMODE_flush, ltc.t_flushc);
- TMODE(XTTYMODE_weras, ltc.t_werasc);
- TMODE(XTTYMODE_lnext, ltc.t_lnextc);
-#endif
- }
-#ifdef HAS_LTCHARS
-#ifdef __hpux
- /* ioctl chokes when the "reserved" process group controls
- * are not set to _POSIX_VDISABLE */
- ltc.t_rprntc = ltc.t_rprntc = ltc.t_flushc =
- ltc.t_werasc = ltc.t_lnextc = _POSIX_VDISABLE;
-#endif /* __hpux */
- if (ioctl(ttyfd, TIOCSLTC, &ltc) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETC);
-#endif /* HAS_LTCHARS */
-#ifdef TIOCLSET
- if (ioctl(ttyfd, TIOCLSET, (char *) &lmode) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCLSET);
-#endif /* TIOCLSET */
- if (ttySetAttr(ttyfd, &tio) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETP);
-
- /* ignore errors here - some platforms don't work */
- tio.c_cflag &= ~CSIZE;
- if (screen->input_eight_bits)
- tio.c_cflag |= CS8;
- else
- tio.c_cflag |= CS7;
- (void) ttySetAttr(ttyfd, &tio);
-
-#else /* !TERMIO_STRUCT */
- sg.sg_flags &= ~(ALLDELAY | XTABS | CBREAK | RAW);
- sg.sg_flags |= ECHO | CRMOD;
- /* make sure speed is set on pty so that editors work right */
- sg.sg_ispeed = VAL_LINE_SPEED;
- sg.sg_ospeed = VAL_LINE_SPEED;
- /* reset t_brkc to default value */
- tc.t_brkc = -1;
-#ifdef LPASS8
- if (screen->input_eight_bits)
- lmode |= LPASS8;
- else
- lmode &= ~(LPASS8);
-#endif
-#ifdef sony
- jmode &= ~KM_KANJI;
-#endif /* sony */
-
- ltc = d_ltc;
-
- if (override_tty_modes) {
- TMODE(XTTYMODE_intr, tc.t_intrc);
- TMODE(XTTYMODE_quit, tc.t_quitc);
- TMODE(XTTYMODE_erase, sg.sg_erase);
- TMODE(XTTYMODE_kill, sg.sg_kill);
- TMODE(XTTYMODE_eof, tc.t_eofc);
- TMODE(XTTYMODE_start, tc.t_startc);
- TMODE(XTTYMODE_stop, tc.t_stopc);
- TMODE(XTTYMODE_brk, tc.t_brkc);
- /* both SYSV and BSD have ltchars */
- TMODE(XTTYMODE_susp, ltc.t_suspc);
- TMODE(XTTYMODE_dsusp, ltc.t_dsuspc);
- TMODE(XTTYMODE_rprnt, ltc.t_rprntc);
- TMODE(XTTYMODE_flush, ltc.t_flushc);
- TMODE(XTTYMODE_weras, ltc.t_werasc);
- TMODE(XTTYMODE_lnext, ltc.t_lnextc);
- }
-
- if (ioctl(ttyfd, TIOCSETP, (char *) &sg) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETP);
- if (ioctl(ttyfd, TIOCSETC, (char *) &tc) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETC);
- if (ioctl(ttyfd, TIOCSETD, (char *) &discipline) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSETD);
- if (ioctl(ttyfd, TIOCSLTC, (char *) &ltc) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCSLTC);
- if (ioctl(ttyfd, TIOCLSET, (char *) &lmode) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCLSET);
-#ifdef sony
- if (ioctl(ttyfd, TIOCKSET, (char *) &jmode) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCKSET);
- if (ioctl(ttyfd, TIOCKSETC, (char *) &jtc) == -1)
- HsSysError(cp_pipe[1], ERROR_TIOCKSETC);
-#endif /* sony */
-#endif /* TERMIO_STRUCT */
-#if defined(TIOCCONS) || defined(SRIOCSREDIR)
- if (Console) {
-#ifdef TIOCCONS
- int on = 1;
- if (ioctl(ttyfd, TIOCCONS, (char *) &on) == -1)
- fprintf(stderr, "%s: cannot open console: %s\n",
- xterm_name, strerror(errno));
-#endif
-#ifdef SRIOCSREDIR
- int fd = open("/dev/console", O_RDWR);
- if (fd == -1 || ioctl(fd, SRIOCSREDIR, ttyfd) == -1)
- fprintf(stderr, "%s: cannot open console: %s\n",
- xterm_name, strerror(errno));
- (void) close(fd);
-#endif
- }
-#endif /* TIOCCONS */
- }
-
- signal(SIGCHLD, SIG_DFL);
-#ifdef USE_SYSV_SIGHUP
- /* watch out for extra shells (I don't understand either) */
- signal(SIGHUP, SIG_DFL);
-#else
- signal(SIGHUP, SIG_IGN);
-#endif
- /* restore various signals to their defaults */
- signal(SIGINT, SIG_DFL);
- signal(SIGQUIT, SIG_DFL);
- signal(SIGTERM, SIG_DFL);
-
- /*
- * If we're not asked to make the parent process set the
- * terminal's erase mode, and if we had no ttyModes resource,
- * then set the terminal's erase mode from our best guess.
- */
-#if OPT_INITIAL_ERASE
- TRACE(("check if we should set erase to %d:%s\n\tptyInitialErase:%d,\n\toveride_tty_modes:%d,\n\tXTTYMODE_erase:%d\n",
- initial_erase,
- (!resource.ptyInitialErase
- && !override_tty_modes
- && !ttymodelist[XTTYMODE_erase].set)
- ? "YES" : "NO",
- resource.ptyInitialErase,
- override_tty_modes,
- ttymodelist[XTTYMODE_erase].set));
- if (!resource.ptyInitialErase
- && !override_tty_modes
- && !ttymodelist[XTTYMODE_erase].set) {
-#if OPT_TRACE
- int old_erase;
-#endif
-#ifdef TERMIO_STRUCT
- if (ttyGetAttr(ttyfd, &tio) == -1)
- tio = d_tio;
-#if OPT_TRACE
- old_erase = tio.c_cc[VERASE];
-#endif
- tio.c_cc[VERASE] = initial_erase;
- rc = ttySetAttr(ttyfd, &tio);
-#else /* !TERMIO_STRUCT */
- if (ioctl(ttyfd, TIOCGETP, (char *) &sg) == -1)
- sg = d_sg;
-#if OPT_TRACE
- old_erase = sg.sg_erase;
-#endif
- sg.sg_erase = initial_erase;
- rc = ioctl(ttyfd, TIOCSETP, (char *) &sg);
-#endif /* TERMIO_STRUCT */
- TRACE(("%s setting erase to %d (was %d)\n",
- rc ? "FAIL" : "OK", initial_erase, old_erase));
- }
-#endif
-
- /* copy the environment before Setenv'ing */
- for (i = 0; environ[i] != NULL; i++) ;
- /* compute number of xtermSetenv() calls below */
- envsize = 1; /* (NULL terminating entry) */
- envsize += 5; /* TERM, WINDOWID, DISPLAY, _SHELL, _VERSION */
-#ifdef HAVE_UTMP
- envsize += 1; /* LOGNAME */
-#endif /* HAVE_UTMP */
-#ifdef USE_SYSV_ENVVARS
- envsize += 2; /* COLUMNS, LINES */
-#ifdef HAVE_UTMP
- envsize += 2; /* HOME, SHELL */
-#endif /* HAVE_UTMP */
-#ifdef OWN_TERMINFO_DIR
- envsize += 1; /* TERMINFO */
-#endif
-#else /* USE_SYSV_ENVVARS */
- envsize += 1; /* TERMCAP */
-#endif /* USE_SYSV_ENVVARS */
- envnew = TypeCallocN(char *, (unsigned) i + envsize);
- memmove((char *) envnew, (char *) environ, i * sizeof(char *));
- environ = envnew;
- xtermSetenv("TERM=", TermName);
- if (!TermName)
- *newtc = 0;
-
- sprintf(buf, "%lu",
- ((unsigned long) XtWindow(SHELL_OF(CURRENT_EMU(screen)))));
- xtermSetenv("WINDOWID=", buf);
-
- /* put the display into the environment of the shell */
- xtermSetenv("DISPLAY=", XDisplayString(screen->display));
-
- xtermSetenv("XTERM_VERSION=", xtermVersion());
-
- signal(SIGTERM, SIG_DFL);
-
- /* this is the time to go and set up stdin, out, and err
- */
- {
-#if defined(CRAY) && (OSMAJORVERSION >= 6)
- close_fd(ttyfd);
-
- (void) close(0);
-
- if (open("/dev/tty", O_RDWR)) {
- SysError(ERROR_OPDEVTTY);
- }
- (void) close(1);
- (void) close(2);
- dup(0);
- dup(0);
-#else
- /* dup the tty */
- for (i = 0; i <= 2; i++)
- if (i != ttyfd) {
- (void) close(i);
- (void) dup(ttyfd);
- }
-#ifndef ATT
- /* and close the tty */
- if (ttyfd > 2)
- close_fd(ttyfd);
-#endif
-#endif /* CRAY */
- }
-
-#if !defined(USE_SYSV_PGRP)
-#ifdef TIOCSCTTY
- setsid();
- ioctl(0, TIOCSCTTY, 0);
-#endif
- ioctl(0, TIOCSPGRP, (char *) &pgrp);
- setpgrp(0, 0);
- close(open(ttydev, O_WRONLY));
- setpgrp(0, pgrp);
-#if defined(__QNX__)
- tcsetpgrp(0, pgrp /*setsid() */ );
-#endif
-#endif /* !USE_SYSV_PGRP */
-
-#ifdef Lynx
- {
- TERMIO_STRUCT t;
- if (ttyGetAttr(0, &t) >= 0) {
- /* this gets lost somewhere on our way... */
- t.c_oflag |= OPOST;
- ttySetAttr(0, &t);
- }
- }
-#endif
-
-#ifdef HAVE_UTMP
- pw = getpwuid(screen->uid);
- login_name = NULL;
- if (pw && pw->pw_name) {
-#ifdef HAVE_GETLOGIN
- /*
- * If the value from getlogin() differs from the value we
- * get by looking in the password file, check if it does
- * correspond to the same uid. If so, allow that as an
- * alias for the uid.
- *
- * Of course getlogin() will fail if we're started from
- * a window-manager, since there's no controlling terminal
- * to fuss with. In that case, try to get something useful
- * from the user's $LOGNAME or $USER environment variables.
- */
- if (((login_name = getlogin()) != NULL
- || (login_name = getenv("LOGNAME")) != NULL
- || (login_name = getenv("USER")) != NULL)
- && strcmp(login_name, pw->pw_name)) {
- struct passwd *pw2 = getpwnam(login_name);
- if (pw2 != 0) {
- uid_t uid2 = pw2->pw_uid;
- pw = getpwuid(screen->uid);
- if ((uid_t) pw->pw_uid != uid2)
- login_name = NULL;
- } else {
- pw = getpwuid(screen->uid);
- }
- }
-#endif
- if (login_name == NULL)
- login_name = pw->pw_name;
- if (login_name != NULL)
- login_name = x_strdup(login_name);
- }
- if (login_name != NULL) {
- xtermSetenv("LOGNAME=", login_name); /* for POSIX */
- }
-#ifndef USE_UTEMPTER
-#ifdef USE_SYSV_UTMP
- /* Set up our utmp entry now. We need to do it here
- * for the following reasons:
- * - It needs to have our correct process id (for
- * login).
- * - If our parent was to set it after the fork(),
- * it might make it out before we need it.
- * - We need to do it before we go and change our
- * user and group id's.
- */
- (void) call_setutent();
- init_utmp(DEAD_PROCESS, &utmp);
-
- /* position to entry in utmp file */
- /* Test return value: beware of entries left behind: PSz 9 Mar 00 */
- if (!(utret = find_utmp(&utmp))) {
- (void) call_setutent();
- init_utmp(USER_PROCESS, &utmp);
- if (!(utret = find_utmp(&utmp))) {
- (void) call_setutent();
- }
- }
-#if OPT_TRACE
- if (!utret)
- TRACE(("getutid: NULL\n"));
- else
- TRACE(("getutid: pid=%d type=%d user=%s line=%s id=%s\n",
- utret->ut_pid, utret->ut_type, utret->ut_user,
- utret->ut_line, utret->ut_id));
-#endif
-
- /* set up the new entry */
- utmp.ut_type = USER_PROCESS;
-#ifdef HAVE_UTMP_UT_XSTATUS
- utmp.ut_xstatus = 2;
-#endif
- (void) strncpy(utmp.ut_user,
- (login_name != NULL) ? login_name : "????",
- sizeof(utmp.ut_user));
- /* why are we copying this string again? (see above) */
- (void) strncpy(utmp.ut_id, my_utmp_id(ttydev), sizeof(utmp.ut_id));
- (void) strncpy(utmp.ut_line,
- my_pty_name(ttydev), sizeof(utmp.ut_line));
-
-#ifdef HAVE_UTMP_UT_HOST
- SetUtmpHost(utmp.ut_host, screen);
-#endif
- (void) strncpy(utmp.ut_name,
- (login_name) ? login_name : "????",
- sizeof(utmp.ut_name));
-
- utmp.ut_pid = getpid();
-#if defined(HAVE_UTMP_UT_XTIME)
-#if defined(HAVE_UTMP_UT_SESSION)
- utmp.ut_session = getsid(0);
-#endif
- utmp.ut_xtime = time((time_t *) 0);
- utmp.ut_tv.tv_usec = 0;
-#else
- utmp.ut_time = time((time_t *) 0);
-#endif
-
- /* write out the entry */
- if (!resource.utmpInhibit) {
- errno = 0;
- call_pututline(&utmp);
- TRACE(("pututline: id %s, line %s, pid %ld, errno %d %s\n",
- utmp.ut_id,
- utmp.ut_line,
- (long) utmp.ut_pid,
- errno, (errno != 0) ? strerror(errno) : ""));
- }
-#ifdef WTMP
-#if defined(WTMPX_FILE) && (defined(SVR4) || defined(__SCO__))
- if (term->misc.login_shell)
- updwtmpx(WTMPX_FILE, &utmp);
-#elif defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0))
- if (term->misc.login_shell)
- call_updwtmp(etc_wtmp, &utmp);
-#else
- if (term->misc.login_shell &&
- (i = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- write(i, (char *) &utmp, sizeof(utmp));
- close(i);
- }
-#endif
-#endif
- /* close the file */
- (void) call_endutent();
-
-#else /* USE_SYSV_UTMP */
- /* We can now get our ttyslot! We can also set the initial
- * utmp entry.
- */
- tslot = ttyslot();
- added_utmp_entry = False;
- {
- if (tslot > 0 && pw && !resource.utmpInhibit &&
- (i = open(etc_utmp, O_WRONLY)) >= 0) {
- bzero((char *) &utmp, sizeof(utmp));
- (void) strncpy(utmp.ut_line,
- my_pty_name(ttydev),
- sizeof(utmp.ut_line));
- (void) strncpy(utmp.ut_name, login_name,
- sizeof(utmp.ut_name));
-#ifdef HAVE_UTMP_UT_HOST
- SetUtmpHost(utmp.ut_host, screen);
-#endif
- /* cast needed on Ultrix 4.4 */
- time((time_t *) & utmp.ut_time);
- lseek(i, (long) (tslot * sizeof(utmp)), 0);
- write(i, (char *) &utmp, sizeof(utmp));
- close(i);
- added_utmp_entry = True;
-#if defined(WTMP)
- if (term->misc.login_shell &&
- (i = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- int status;
- status = write(i, (char *) &utmp, sizeof(utmp));
- status = close(i);
- }
-#elif defined(MNX_LASTLOG)
- if (term->misc.login_shell &&
- (i = open(_U_LASTLOG, O_WRONLY)) >= 0) {
- lseek(i, (long) (screen->uid *
- sizeof(utmp)), 0);
- write(i, (char *) &utmp, sizeof(utmp));
- close(i);
- }
-#endif /* WTMP or MNX_LASTLOG */
- } else
- tslot = -tslot;
- }
-
- /* Let's pass our ttyslot to our parent so that it can
- * clean up after us.
- */
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake) {
- handshake.tty_slot = tslot;
- }
-#endif /* OPT_PTY_HANDSHAKE */
-#endif /* USE_SYSV_UTMP */
-
-#ifdef USE_LASTLOGX
- if (term->misc.login_shell) {
- bzero((char *) &lastlog, sizeof(lastlog));
- (void) strncpy(lastlog.ll_line,
- my_pty_name(ttydev),
- sizeof(lastlog.ll_line));
- X_GETTIMEOFDAY(&lastlog.ll_tv);
- SetUtmpHost(lastlog.ll_host, screen);
- updlastlogx(_PATH_LASTLOGX, screen->uid, &lastlog);
- }
-#endif
-
-#ifdef USE_LASTLOG
- if (term->misc.login_shell &&
- (i = open(etc_lastlog, O_WRONLY)) >= 0) {
- bzero((char *) &lastlog, sizeof(struct lastlog));
- (void) strncpy(lastlog.ll_line,
- my_pty_name(ttydev),
- sizeof(lastlog.ll_line));
- SetUtmpHost(lastlog.ll_host, screen);
- time(&lastlog.ll_time);
- lseek(i, (long) (screen->uid * sizeof(struct lastlog)), 0);
- write(i, (char *) &lastlog, sizeof(struct lastlog));
- close(i);
- }
-#endif /* USE_LASTLOG */
-
-#if defined(USE_UTMP_SETGID)
- /* Switch to real gid after writing utmp entry */
- utmpGid = getegid();
- if (getgid() != getegid()) {
- utmpGid = getegid();
- setegid(getgid());
- TRACE(("switch to real gid %d after writing utmp\n", getgid()));
- }
-#endif
-
-#if OPT_PTY_HANDSHAKE
- /* Let our parent know that we set up our utmp entry
- * so that it can clean up after us.
- */
- if (resource.ptyHandshake) {
- handshake.status = UTMP_ADDED;
- handshake.error = 0;
- strcpy(handshake.buffer, ttydev);
- (void) write(cp_pipe[1], (char *) &handshake, sizeof(handshake));
- }
-#endif /* OPT_PTY_HANDSHAKE */
-#endif /* USE_UTEMPTER */
-#endif /* HAVE_UTMP */
-
- (void) setgid(screen->gid);
-#ifdef HAS_BSD_GROUPS
- if (geteuid() == 0 && pw) {
- if (initgroups(login_name, pw->pw_gid)) {
- perror("initgroups failed");
- SysError(ERROR_INIGROUPS);
- }
- }
-#endif
- if (setuid(screen->uid)) {
- SysError(ERROR_SETUID);
- }
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake) {
- /* mark the pipes as close on exec */
- fcntl(cp_pipe[1], F_SETFD, 1);
- fcntl(pc_pipe[0], F_SETFD, 1);
-
- /* We are at the point where we are going to
- * exec our shell (or whatever). Let our parent
- * know we arrived safely.
- */
- handshake.status = PTY_GOOD;
- handshake.error = 0;
- (void) strcpy(handshake.buffer, ttydev);
- (void) write(cp_pipe[1], (char *) &handshake, sizeof(handshake));
-
- if (waiting_for_initial_map) {
- i = read(pc_pipe[0], (char *) &handshake,
- sizeof(handshake));
- if (i != sizeof(handshake) ||
- handshake.status != PTY_EXEC) {
- /* some very bad problem occurred */
- exit(ERROR_PTY_EXEC);
- }
- if (handshake.rows > 0 && handshake.cols > 0) {
- set_max_row(screen, handshake.rows);
- set_max_col(screen, handshake.cols);
-#ifdef TTYSIZE_STRUCT
- TTYSIZE_ROWS(ts) = MaxRows(screen);
- TTYSIZE_COLS(ts) = MaxCols(screen);
-#if defined(USE_STRUCT_WINSIZE)
- ts.ws_xpixel = FullWidth(screen);
- ts.ws_ypixel = FullHeight(screen);
-#endif
-#endif /* TTYSIZE_STRUCT */
- }
- }
- }
-#endif /* OPT_PTY_HANDSHAKE */
-
-#ifdef USE_SYSV_ENVVARS
- {
- char numbuf[12];
- sprintf(numbuf, "%d", MaxCols(screen));
- xtermSetenv("COLUMNS=", numbuf);
- sprintf(numbuf, "%d", MaxRows(screen));
- xtermSetenv("LINES=", numbuf);
- }
-#ifdef HAVE_UTMP
- if (pw) { /* SVR4 doesn't provide these */
- if (!getenv("HOME"))
- xtermSetenv("HOME=", pw->pw_dir);
- if (!getenv("SHELL"))
- xtermSetenv("SHELL=", pw->pw_shell);
- }
-#endif /* HAVE_UTMP */
-#ifdef OWN_TERMINFO_DIR
- xtermSetenv("TERMINFO=", OWN_TERMINFO_DIR);
-#endif
-#else /* USE_SYSV_ENVVARS */
- if (!TEK4014_ACTIVE(screen) && *newtc) {
- strcpy(termcap, newtc);
- resize(screen, termcap, newtc);
- }
- if (term->misc.titeInhibit && !term->misc.tiXtraScroll) {
- remove_termcap_entry(newtc, "ti=");
- remove_termcap_entry(newtc, "te=");
- }
- /*
- * work around broken termcap entries */
- if (resource.useInsertMode) {
- remove_termcap_entry(newtc, "ic=");
- /* don't get duplicates */
- remove_termcap_entry(newtc, "im=");
- remove_termcap_entry(newtc, "ei=");
- remove_termcap_entry(newtc, "mi");
- if (*newtc)
- strcat(newtc, ":im=\\E[4h:ei=\\E[4l:mi:");
- }
- if (*newtc) {
-#if OPT_INITIAL_ERASE
- unsigned len;
- remove_termcap_entry(newtc, TERMCAP_ERASE "=");
- len = strlen(newtc);
- if (len != 0 && newtc[len - 1] == ':')
- len--;
- sprintf(newtc + len, ":%s=\\%03o:",
- TERMCAP_ERASE,
- CharOf(initial_erase));
-#endif
- xtermSetenv("TERMCAP=", newtc);
- }
-#endif /* USE_SYSV_ENVVARS */
-
- /* need to reset after all the ioctl bashing we did above */
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake) {
-#ifdef TTYSIZE_STRUCT
- i = SET_TTYSIZE(0, ts);
- TRACE(("spawn SET_TTYSIZE %dx%d return %d\n",
- TTYSIZE_ROWS(ts),
- TTYSIZE_COLS(ts), i));
-#endif /* TTYSIZE_STRUCT */
- }
-#endif /* OPT_PTY_HANDSHAKE */
- signal(SIGHUP, SIG_DFL);
-
- if ((ptr = explicit_shname) == NULL) {
- if (((ptr = getenv("SHELL")) == NULL || *ptr == 0) &&
- ((pw == NULL && (pw = getpwuid(screen->uid)) == NULL) ||
- *(ptr = pw->pw_shell) == 0)) {
- ptr = "/bin/sh";
- }
- } else {
- xtermSetenv("SHELL=", explicit_shname);
- }
- xtermSetenv("XTERM_SHELL=", ptr);
-
- shname = x_basename(ptr);
- TRACE(("shell path '%s' leaf '%s'\n", ptr, shname));
-
-#if OPT_LUIT_PROG
- /*
- * Use two copies of command_to_exec, in case luit is not actually
- * there, or refuses to run. In that case we will fall-through to
- * to command that the user gave anyway.
- */
- if (command_to_exec_with_luit) {
- xtermSetenv("XTERM_SHELL=",
- xtermFindShell(*command_to_exec_with_luit, False));
- TRACE(("spawning command \"%s\"\n", *command_to_exec_with_luit));
- execvp(*command_to_exec_with_luit, command_to_exec_with_luit);
- /* print error message on screen */
- fprintf(stderr, "%s: Can't execvp %s: %s\n",
- xterm_name, *command_to_exec_with_luit, strerror(errno));
- fprintf(stderr, "%s: cannot support your locale.\n",
- xterm_name);
- }
-#endif
- if (command_to_exec) {
- xtermSetenv("XTERM_SHELL=",
- xtermFindShell(*command_to_exec, False));
- TRACE(("spawning command \"%s\"\n", *command_to_exec));
- execvp(*command_to_exec, command_to_exec);
- if (command_to_exec[1] == 0)
- execlp(ptr, shname, "-c", command_to_exec[0], (void *) 0);
- /* print error message on screen */
- fprintf(stderr, "%s: Can't execvp %s: %s\n",
- xterm_name, *command_to_exec, strerror(errno));
- }
-#ifdef USE_SYSV_SIGHUP
- /* fix pts sh hanging around */
- signal(SIGHUP, SIG_DFL);
-#endif
-
- shname_minus = CastMallocN(char, strlen(shname) + 2);
- (void) strcpy(shname_minus, "-");
- (void) strcat(shname_minus, shname);
-#ifndef TERMIO_STRUCT
- ldisc = XStrCmp("csh", shname + strlen(shname) - 3) == 0 ?
- NTTYDISC : 0;
- ioctl(0, TIOCSETD, (char *) &ldisc);
-#endif /* !TERMIO_STRUCT */
-
-#ifdef USE_LOGIN_DASH_P
- if (term->misc.login_shell && pw && added_utmp_entry)
- execl(bin_login, "login", "-p", "-f", login_name, (void *) 0);
-#endif
- execlp(ptr,
- (term->misc.login_shell ? shname_minus : shname),
- (void *) 0);
-
- /* Exec failed. */
- fprintf(stderr, "%s: Could not exec %s: %s\n", xterm_name,
- ptr, strerror(errno));
- (void) sleep(5);
- exit(ERROR_EXEC);
- }
- /* end if in child after fork */
-#if OPT_PTY_HANDSHAKE
- if (resource.ptyHandshake) {
- /* Parent process. Let's handle handshaked requests to our
- * child process.
- */
-
- /* close childs's sides of the pipes */
- close(cp_pipe[1]);
- close(pc_pipe[0]);
-
- for (done = 0; !done;) {
- if (read(cp_pipe[0],
- (char *) &handshake,
- sizeof(handshake)) <= 0) {
- /* Our child is done talking to us. If it terminated
- * due to an error, we will catch the death of child
- * and clean up.
- */
- break;
- }
-
- switch (handshake.status) {
- case PTY_GOOD:
- /* Success! Let's free up resources and
- * continue.
- */
- done = 1;
- break;
-
- case PTY_BAD:
- /* The open of the pty failed! Let's get
- * another one.
- */
- (void) close(screen->respond);
- if (get_pty(&screen->respond, XDisplayString(screen->display))) {
- /* no more ptys! */
- fprintf(stderr,
- "%s: child process can find no available ptys: %s\n",
- xterm_name, strerror(errno));
- handshake.status = PTY_NOMORE;
- write(pc_pipe[1], (char *) &handshake, sizeof(handshake));
- exit(ERROR_PTYS);
- }
- handshake.status = PTY_NEW;
- (void) strcpy(handshake.buffer, ttydev);
- write(pc_pipe[1], (char *) &handshake, sizeof(handshake));
- break;
-
- case PTY_FATALERROR:
- errno = handshake.error;
- close(cp_pipe[0]);
- close(pc_pipe[1]);
- SysError(handshake.fatal_error);
- /*NOTREACHED */
-
- case UTMP_ADDED:
- /* The utmp entry was set by our slave. Remember
- * this so that we can reset it later.
- */
- added_utmp_entry = True;
-#ifndef USE_SYSV_UTMP
- tslot = handshake.tty_slot;
-#endif /* USE_SYSV_UTMP */
- free(ttydev);
- ttydev = x_strdup(handshake.buffer);
- break;
- default:
- fprintf(stderr, "%s: unexpected handshake status %d\n",
- xterm_name,
- (int) handshake.status);
- }
- }
- /* close our sides of the pipes */
- if (!waiting_for_initial_map) {
- close(cp_pipe[0]);
- close(pc_pipe[1]);
- }
- }
-#endif /* OPT_PTY_HANDSHAKE */
- }
-
- /* end if no slave */
- /*
- * still in parent (xterm process)
- */
-#ifdef USE_SYSV_SIGHUP
- /* hung sh problem? */
- signal(SIGHUP, SIG_DFL);
-#else
- signal(SIGHUP, SIG_IGN);
-#endif
-
-/*
- * Unfortunately, System V seems to have trouble divorcing the child process
- * from the process group of xterm. This is a problem because hitting the
- * INTR or QUIT characters on the keyboard will cause xterm to go away if we
- * don't ignore the signals. This is annoying.
- */
-
-#if defined(USE_SYSV_SIGNALS) && !defined(SIGTSTP)
- signal(SIGINT, SIG_IGN);
-
-#ifndef SYSV
- /* hung shell problem */
- signal(SIGQUIT, SIG_IGN);
-#endif
- signal(SIGTERM, SIG_IGN);
-#elif defined(SYSV) || defined(__osf__)
- /* if we were spawned by a jobcontrol smart shell (like ksh or csh),
- * then our pgrp and pid will be the same. If we were spawned by
- * a jobcontrol dumb shell (like /bin/sh), then we will be in our
- * parent's pgrp, and we must ignore keyboard signals, or we will
- * tank on everything.
- */
- if (getpid() == getpgrp()) {
- (void) signal(SIGINT, Exit);
- (void) signal(SIGQUIT, Exit);
- (void) signal(SIGTERM, Exit);
- } else {
- (void) signal(SIGINT, SIG_IGN);
- (void) signal(SIGQUIT, SIG_IGN);
- (void) signal(SIGTERM, SIG_IGN);
- }
- (void) signal(SIGPIPE, Exit);
-#else /* SYSV */
- signal(SIGINT, Exit);
- signal(SIGQUIT, Exit);
- signal(SIGTERM, Exit);
- signal(SIGPIPE, Exit);
-#endif /* USE_SYSV_SIGNALS and not SIGTSTP */
-
- return 0;
-} /* end spawn */
-
-SIGNAL_T
-Exit(int n)
-{
- TScreen *screen = &term->screen;
-
-#ifdef USE_UTEMPTER
- if (!resource.utmpInhibit && added_utmp_entry)
- removeFromUtmp();
-#elif defined(HAVE_UTMP)
-#ifdef USE_SYSV_UTMP
- struct UTMP_STR utmp;
- struct UTMP_STR *utptr;
-
- /* don't do this more than once */
- if (xterm_exiting)
- SIGNAL_RETURN;
- xterm_exiting = True;
-
-#ifdef PUCC_PTYD
- closepty(ttydev, ptydev, (resource.utmpInhibit ? OPTY_NOP : OPTY_LOGIN), screen->respond);
-#endif /* PUCC_PTYD */
-
- /* cleanup the utmp entry we forged earlier */
- if (!resource.utmpInhibit
-#if OPT_PTY_HANDSHAKE /* without handshake, no way to know */
- && (resource.ptyHandshake && added_utmp_entry)
-#endif /* OPT_PTY_HANDSHAKE */
- ) {
-#if defined(USE_UTMP_SETGID)
- if (utmpGid != -1) {
- /* Switch back to group utmp */
- setegid(utmpGid);
- TRACE(("switched back to group %d (check: %d)\n",
- utmpGid, (int) getgid()));
- }
-#endif
- init_utmp(USER_PROCESS, &utmp);
- (void) call_setutent();
-
- /*
- * We could use getutline() if we didn't support old systems.
- */
- while ((utptr = find_utmp(&utmp)) != 0) {
- if (utptr->ut_pid == screen->pid) {
- utptr->ut_type = DEAD_PROCESS;
-#if defined(HAVE_UTMP_UT_XTIME)
-#if defined(HAVE_UTMP_UT_SESSION)
- utptr->ut_session = getsid(0);
-#endif
- utptr->ut_xtime = time((time_t *) 0);
- utptr->ut_tv.tv_usec = 0;
-#else
- *utptr->ut_user = 0;
- utptr->ut_time = time((time_t *) 0);
-#endif
- (void) call_pututline(utptr);
-#ifdef WTMP
-#if defined(WTMPX_FILE) && (defined(SVR4) || defined(__SCO__))
- if (term->misc.login_shell)
- updwtmpx(WTMPX_FILE, utptr);
-#elif defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0))
- strncpy(utmp.ut_line, utptr->ut_line, sizeof(utmp.ut_line));
- if (term->misc.login_shell)
- call_updwtmp(etc_wtmp, utptr);
-#else
- /* set wtmp entry if wtmp file exists */
- if (term->misc.login_shell) {
- int fd;
- if ((fd = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- write(fd, utptr, sizeof(*utptr));
- close(fd);
- }
- }
-#endif
-#endif
- break;
- }
- memset(utptr, 0, sizeof(*utptr)); /* keep searching */
- }
- (void) call_endutent();
- }
-#else /* not USE_SYSV_UTMP */
- int wfd;
- struct utmp utmp;
-
- if (!resource.utmpInhibit && added_utmp_entry &&
- (am_slave < 0 && tslot > 0 && (wfd = open(etc_utmp, O_WRONLY)) >= 0)) {
- bzero((char *) &utmp, sizeof(utmp));
- lseek(wfd, (long) (tslot * sizeof(utmp)), 0);
- write(wfd, (char *) &utmp, sizeof(utmp));
- close(wfd);
-#ifdef WTMP
- if (term->misc.login_shell &&
- (wfd = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- (void) strncpy(utmp.ut_line,
- my_pty_name(ttydev),
- sizeof(utmp.ut_line));
- time(&utmp.ut_time);
- write(wfd, (char *) &utmp, sizeof(utmp));
- close(wfd);
- }
-#endif /* WTMP */
- }
-#endif /* USE_SYSV_UTMP */
-#endif /* HAVE_UTMP */
- close(screen->respond); /* close explicitly to avoid race with slave side */
-#ifdef ALLOWLOGGING
- if (screen->logging)
- CloseLog(screen);
-#endif
-
- if (am_slave < 0) {
- /* restore ownership of tty and pty */
- set_owner(ttydev, 0, 0, 0666U);
-#if (defined(USE_PTY_DEVICE) && !defined(__sgi) && !defined(__hpux))
- set_owner(ptydev, 0, 0, 0666U);
-#endif
- }
-#if OPT_TRACE || defined(NO_LEAKS)
- if (n == 0) {
- TRACE(("Freeing memory leaks\n"));
- if (term != 0) {
- Display *dpy = term->screen.display;
-
- if (term->screen.sbuf_address) {
- free(term->screen.sbuf_address);
- TRACE(("freed screen.sbuf_address\n"));
- }
- if (term->screen.allbuf) {
- free(term->screen.allbuf);
- TRACE(("freed screen.allbuf\n"));
- }
- if (term->screen.xim) {
- XCloseIM(term->screen.xim);
- TRACE(("freed screen.xim\n"));
- }
- if (toplevel) {
- XtDestroyWidget(toplevel);
- TRACE(("destroyed top-level widget\n"));
- }
- XtCloseDisplay(dpy);
- TRACE(("closed display\n"));
- }
- TRACE((0));
- }
-#endif
-
- exit(n);
- SIGNAL_RETURN;
-}
-
-/* ARGSUSED */
-static void
-resize(TScreen * screen, char *oldtc, char *newtc)
-{
-#ifndef USE_SYSV_ENVVARS
- char *ptr1, *ptr2;
- size_t i;
- int li_first = 0;
- char *temp;
-
- TRACE(("resize %s\n", oldtc));
- if ((ptr1 = x_strindex(oldtc, "co#")) == NULL) {
- strcat(oldtc, "co#80:");
- ptr1 = x_strindex(oldtc, "co#");
- }
- if ((ptr2 = x_strindex(oldtc, "li#")) == NULL) {
- strcat(oldtc, "li#24:");
- ptr2 = x_strindex(oldtc, "li#");
- }
- if (ptr1 > ptr2) {
- li_first++;
- temp = ptr1;
- ptr1 = ptr2;
- ptr2 = temp;
- }
- ptr1 += 3;
- ptr2 += 3;
- strncpy(newtc, oldtc, i = ptr1 - oldtc);
- temp = newtc + i;
- sprintf(temp, "%d", (li_first
- ? MaxRows(screen)
- : MaxCols(screen)));
- temp += strlen(temp);
- ptr1 = strchr(ptr1, ':');
- strncpy(temp, ptr1, i = ptr2 - ptr1);
- temp += i;
- sprintf(temp, "%d", (li_first
- ? MaxCols(screen)
- : MaxRows(screen)));
- ptr2 = strchr(ptr2, ':');
- strcat(temp, ptr2);
- TRACE((" ==> %s\n", newtc));
-#endif /* USE_SYSV_ENVVARS */
-}
-
-#endif /* ! VMS */
-
-/*
- * Does a non-blocking wait for a child process. If the system
- * doesn't support non-blocking wait, do nothing.
- * Returns the pid of the child, or 0 or -1 if none or error.
- */
-int
-nonblocking_wait(void)
-{
-#ifdef USE_POSIX_WAIT
- pid_t pid;
-
- pid = waitpid(-1, NULL, WNOHANG);
-#elif defined(USE_SYSV_SIGNALS) && (defined(CRAY) || !defined(SIGTSTP))
- /* cannot do non-blocking wait */
- int pid = 0;
-#else /* defined(USE_SYSV_SIGNALS) && (defined(CRAY) || !defined(SIGTSTP)) */
-#if defined(Lynx)
- int status;
-#else
- union wait status;
-#endif
- int pid;
-
- pid = wait3(&status, WNOHANG, (struct rusage *) NULL);
-#endif /* USE_POSIX_WAIT else */
- return pid;
-}
-
-#ifndef VMS
-
-/* ARGSUSED */
-static SIGNAL_T
-reapchild(int n GCC_UNUSED)
-{
- int olderrno = errno;
- int pid;
-
- pid = wait(NULL);
-
-#ifdef USE_SYSV_SIGNALS
- /* cannot re-enable signal before waiting for child
- * because then SVR4 loops. Sigh. HP-UX 9.01 too.
- */
- (void) signal(SIGCHLD, reapchild);
-#endif
-
- do {
- if (pid == term->screen.pid) {
-#ifdef DEBUG
- if (debug)
- fputs("Exiting\n", stderr);
-#endif
- if (!hold_screen)
- need_cleanup = TRUE;
- }
- } while ((pid = nonblocking_wait()) > 0);
-
- errno = olderrno;
- SIGNAL_RETURN;
-}
-#endif /* !VMS */
-
-static void
-remove_termcap_entry(char *buf, char *str)
-{
- char *base = buf;
- char *first = base;
- int count = 0;
- size_t len = strlen(str);
-
- TRACE(("*** remove_termcap_entry('%s', '%s')\n", str, buf));
-
- while (*buf != 0) {
- if (!count && !strncmp(buf, str, len)) {
- while (*buf != 0) {
- if (*buf == '\\')
- buf++;
- else if (*buf == ':')
- break;
- if (*buf != 0)
- buf++;
- }
- while ((*first++ = *buf++) != 0) ;
- TRACE(("...removed_termcap_entry('%s', '%s')\n", str, base));
- return;
- } else if (*buf == '\\') {
- buf++;
- } else if (*buf == ':') {
- first = buf;
- count = 0;
- } else if (!isspace(CharOf(*buf))) {
- count++;
- }
- if (*buf != 0)
- buf++;
- }
- TRACE(("...cannot remove\n"));
-}
-
-/*
- * parse_tty_modes accepts lines of the following form:
- *
- * [SETTING] ...
- *
- * where setting consists of the words in the modelist followed by a character
- * or ^char.
- */
-static int
-parse_tty_modes(char *s, struct _xttymodes *modelist)
-{
- struct _xttymodes *mp;
- int c;
- int count = 0;
-
- TRACE(("parse_tty_modes\n"));
- while (1) {
- size_t len;
-
- while (*s && isascii(CharOf(*s)) && isspace(CharOf(*s)))
- s++;
- if (!*s)
- return count;
-
- for (len = 0; isalnum(CharOf(s[len])); ++len) ;
- for (mp = modelist; mp->name; mp++) {
- if (len == mp->len
- && strncmp(s, mp->name, mp->len) == 0)
- break;
- }
- if (!mp->name)
- return -1;
-
- s += mp->len;
- while (*s && isascii(CharOf(*s)) && isspace(CharOf(*s)))
- s++;
- if (!*s)
- return -1;
-
- if ((c = decode_keyvalue(&s, False)) != -1) {
- mp->value = c;
- mp->set = 1;
- count++;
- TRACE(("...parsed #%d: %s=%#x\n", count, mp->name, c));
- }
- }
-}
-
-#ifndef VMS /* don't use pipes on OpenVMS */
-int
-GetBytesAvailable(int fd)
-{
-#if defined(FIONREAD)
- int arg;
- ioctl(fd, FIONREAD, (char *) &arg);
- return (int) arg;
-#elif defined(__CYGWIN__)
- fd_set set;
- struct timeval timeout =
- {0, 0};
-
- FD_ZERO(&set);
- FD_SET(fd, &set);
- if (Select(fd + 1, &set, NULL, NULL, &timeout) > 0)
- return 1;
- else
- return 0;
-#elif defined(FIORDCK)
- return (ioctl(fd, FIORDCHK, NULL));
-#else /* !FIORDCK */
- struct pollfd pollfds[1];
-
- pollfds[0].fd = fd;
- pollfds[0].events = POLLIN;
- return poll(pollfds, 1, 0);
-#endif
-}
-#endif /* !VMS */
-
-/* Utility function to try to hide system differences from
- everybody who used to call killpg() */
-
-int
-kill_process_group(int pid, int sig)
-{
- TRACE(("kill_process_group(pid=%d, sig=%d)\n", pid, sig));
-#if defined(SVR4) || defined(SYSV) || !defined(X_NOT_POSIX)
- return kill(-pid, sig);
-#else
- return killpg(pid, sig);
-#endif
-}
-
-#if OPT_EBCDIC
-int
-A2E(int x)
-{
- char c;
- c = x;
- __atoe_l(&c, 1);
- return c;
-}
-
-int
-E2A(int x)
-{
- char c;
- c = x;
- __etoa_l(&c, 1);
- return c;
-}
-#endif
-
-#if defined(__QNX__) && !defined(__QNXNTO__)
-#include <sys/types.h>
-#include <sys/proc_msg.h>
-#include <sys/kernel.h>
-#include <string.h>
-#include <errno.h>
-
-struct _proc_session ps;
-struct _proc_session_reply rps;
-
-int
-qsetlogin(char *login, char *ttyname)
-{
- int v = getsid(getpid());
-
- memset(&ps, 0, sizeof(ps));
- memset(&rps, 0, sizeof(rps));
-
- ps.type = _PROC_SESSION;
- ps.subtype = _PROC_SUB_ACTION1;
- ps.sid = v;
- strcpy(ps.name, login);
-
- Send(1, &ps, &rps, sizeof(ps), sizeof(rps));
-
- if (rps.status < 0)
- return (rps.status);
-
- ps.type = _PROC_SESSION;
- ps.subtype = _PROC_SUB_ACTION2;
- ps.sid = v;
- sprintf(ps.name, "//%d%s", getnid(), ttyname);
- Send(1, &ps, &rps, sizeof(ps), sizeof(rps));
-
- return (rps.status);
-}
-#endif
diff --git a/nx-X11/programs/xterm/main.h b/nx-X11/programs/xterm/main.h
deleted file mode 100644
index 5a8116665..000000000
--- a/nx-X11/programs/xterm/main.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* $XTermId: main.h,v 1.27 2004/12/01 01:27:47 tom Exp $ */
-
-/*
- * $Xorg: main.h,v 1.3 2000/08/17 19:55:09 cpqbld Exp $
- */
-
-/* $XFree86: xc/programs/xterm/main.h,v 3.12 2004/12/01 01:27:47 dickey Exp $ */
-
-/*
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-#ifndef included_main_h
-#define included_main_h
-
-#include <xterm.h>
-
-#define DEFCLASS "XTerm"
-#define DEFFONT "fixed"
-#define DEFWIDEFONT NULL /* grab one which is 2x as wide */
-#define DEFWIDEBOLDFONT NULL
-#define DEFXIMFONT "*"
-#define DEFBOLDFONT NULL /* no bold font uses overstriking */
-#define DEFBORDER 2
-#define DEFFACENAME NULL
-#define DEFFACESIZE "14.0"
-
-#if OPT_BLINK_TEXT
-#define DEFBLINKASBOLD FALSE
-#else
-#define DEFBLINKASBOLD TRUE
-#endif
-
-#ifndef DEFDELETE_DEL
-#define DEFDELETE_DEL 2
-#endif
-
-#ifndef DEF_BACKARO_ERASE
-#define DEF_BACKARO_ERASE FALSE
-#endif
-
-#ifndef DEF_COLOR4
-#define DEF_COLOR4 "blue2" /* see XTerm-col.ad */
-#endif
-
-#ifndef DEF_COLOR12
-#define DEF_COLOR12 "rgb:5c/5c/ff" /* see XTerm-col.ad */
-#endif
-
-#ifndef DEF_INITIAL_ERASE
-#define DEF_INITIAL_ERASE FALSE
-#endif
-
-#ifndef PROJECTROOT
-#define PROJECTROOT "/usr/X11R6"
-#endif
-
-/*
- * The configure script quotes PROJECTROOT's value.
- * imake does not quote PROJECTROOT's value.
- */
-#ifdef HAVE_CONFIG_H
-#define DEFLOCALEFILTER2(x) x
-#else
-#define DEFLOCALEFILTER2(x) #x
-#endif
-
-#define DEFLOCALEFILTER1(x) DEFLOCALEFILTER2(x)
-#define DEFLOCALEFILTER DEFLOCALEFILTER1(PROJECTROOT) "/bin/luit"
-
-#endif /* included_main_h */
diff --git a/nx-X11/programs/xterm/make.com b/nx-X11/programs/xterm/make.com
deleted file mode 100644
index d2b662bd0..000000000
--- a/nx-X11/programs/xterm/make.com
+++ /dev/null
@@ -1,90 +0,0 @@
-$! make.com
-$! 25-JAN-2000, David Mathog
-$! builds xaw3d, xmu, and then xterm.
-$!
-$! $XFree86: xc/programs/xterm/make.com,v 1.1 2000/02/08 17:19:37 dawes Exp $
-$!
-$!************************************************************
-$!
-$! set up logicals for XAW, XMU and so forth
-$!
-$ define x11_directory decw$include
-$ thisfile = f$environment("PROCEDURE")
-$ thisis = f$parse(thisfile,,,"DEVICE") + f$parse(thisfile,,,"DIRECTORY")
-$ thisis = thisis - "]"
-$ define xaw_directory "''thisis'.lib.xaw3d]"
-$ define xmu_directory "''thisis'.lib.xmu]"
-$ define bitmap_directory "''thisis'.lib.bitmaps]"
-$ define/trans=(concealed) thisX11 "''thisis.lib.]"
-$ define X11 thisx11,decw$include
-$!
-$! note, ansi doesn't work with this variant of X11R5.
-$!
-$! don't build libs in debug mode
-$ if(P1 .eqs. "" .AND. P2 .eqs. "")
-$ then
-$!
-$! build XMU
-$!
-$ set ver
-$ set def [.lib.xmu]
-$ @make
-$!
-$! build XAW3D
-$!
-$ set def [-.xaw3d]
-$ @make
-$ set def [--]
-$ set nover
-$!
-$! move the two libraries to this level
-$!
-$ rename [.lib...]*.olb []
-$ endif
-$!
-$ if(P1 .nes. "")
-$ then
-$ ccstub := cc/standard=vaxc/include=[]/debug/noopt
-$ mylink :== link/debug
-$ else
-$ ccstub := cc/standard=vaxc/include=[]
-$ mylink :== link
-$ endif
-$ mycc :== 'ccstub' -
-/define=(VMS,OPT_TEK4014,ALLOWLOGGING,OPT_NUM_LOCK)
-$!
-$! OPT_TOOLBAR doesn't work - it pulls in calls through Xaw3d and Xmu for
-$! XSHAPECOMBINEMASK and XSHAPEQUERYEXTENSION
-$! which seem not to exist in DW MOtif 1.2-5
-$!
-$!
-$ set ver
-$ mycc BUTTON.C
-$ mycc CHARPROC.C
-$ mycc CHARSETS.C
-$ mycc CURSOR.C
-$ mycc DATA.C
-$ mycc DOUBLECHR.C
-$ mycc FONTUTILS.C
-$ mycc INPUT.C
-$ mycc KEYSYM2UCS.C
-$ mycc MAIN.C
-$ mycc MENU.C
-$ mycc MISC.C
-$ mycc PRINT.C
-$ mycc PTYDATA.C
-$! mycc RESIZE.C
-$ mycc SCREEN.C
-$ mycc SCROLLBAR.C
-$ mycc TABS.C
-$ mycc TEKPROC.C
-$ mycc TEKPRSTBL.C
-$ mycc TRACE.C
-$ mycc TTYSVR.C
-$ mycc UTIL.C
-$ mycc VMS.C
-$ mycc VTPRSTBL.C
-$!
-$ mylink/exe=xterm.exe xterm_axp.opt/option
-$ set nover
-$ exit
diff --git a/nx-X11/programs/xterm/menu.c b/nx-X11/programs/xterm/menu.c
deleted file mode 100644
index 4f451d660..000000000
--- a/nx-X11/programs/xterm/menu.c
+++ /dev/null
@@ -1,2959 +0,0 @@
-/* $XTermId: menu.c,v 1.191 2005/11/13 23:10:36 tom Exp $ */
-
-/* $Xorg: menu.c,v 1.4 2001/02/09 02:06:03 xorgcvs Exp $ */
-/*
-
-Copyright 1999-2004,2005 by Thomas E. Dickey
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of the above listed
-copyright holder(s) not be used in advertising or publicity pertaining
-to distribution of the software without specific, written prior
-permission.
-
-THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
-LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-Copyright 1989 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.
-
-*/
-/* $XFree86: xc/programs/xterm/menu.c,v 3.64 2005/11/13 23:10:36 dickey Exp $ */
-
-#include <xterm.h>
-#include <data.h>
-#include <menu.h>
-#include <fontutils.h>
-
-#include <X11/Xmu/CharSet.h>
-
-#define app_con Xaw_app_con /* quiet a warning from SimpleMenu.h */
-
-#if defined(HAVE_LIB_XAW)
-
-#include <X11/Xaw/SimpleMenu.h>
-#include <X11/Xaw/Box.h>
-#include <X11/Xaw/SmeBSB.h>
-#include <X11/Xaw/SmeLine.h>
-
-#if OPT_TOOLBAR
-#include <X11/Xaw/MenuButton.h>
-#include <X11/Xaw/Form.h>
-#endif
-
-#elif defined(HAVE_LIB_XAW3D)
-
-#include <X11/Xaw3d/SimpleMenu.h>
-#include <X11/Xaw3d/Box.h>
-#include <X11/Xaw3d/SmeBSB.h>
-#include <X11/Xaw3d/SmeLine.h>
-
-#if OPT_TOOLBAR
-#include <X11/Xaw3d/MenuButton.h>
-#include <X11/Xaw3d/Form.h>
-#endif
-
-#elif defined(HAVE_LIB_NEXTAW)
-
-#include <X11/neXtaw/SimpleMenu.h>
-#include <X11/neXtaw/Box.h>
-#include <X11/neXtaw/SmeBSB.h>
-#include <X11/neXtaw/SmeLine.h>
-
-#if OPT_TOOLBAR
-#include <X11/neXtaw/MenuButton.h>
-#include <X11/neXtaw/Form.h>
-#endif
-
-#elif defined(HAVE_LIB_XAWPLUS)
-
-#include <X11/XawPlus/SimpleMenu.h>
-#include <X11/XawPlus/Box.h>
-#include <X11/XawPlus/SmeBSB.h>
-#include <X11/XawPlus/SmeLine.h>
-
-#if OPT_TOOLBAR
-#include <X11/XawPlus/MenuButton.h>
-#include <X11/XawPlus/Form.h>
-#endif
-
-#endif
-
-#undef app_con
-
-#include <stdio.h>
-#include <signal.h>
-/* *INDENT-OFF* */
-static void do_8bit_control PROTO_XT_CALLBACK_ARGS;
-static void do_allow132 PROTO_XT_CALLBACK_ARGS;
-static void do_allowsends PROTO_XT_CALLBACK_ARGS;
-static void do_altscreen PROTO_XT_CALLBACK_ARGS;
-static void do_appcursor PROTO_XT_CALLBACK_ARGS;
-static void do_appkeypad PROTO_XT_CALLBACK_ARGS;
-static void do_autolinefeed PROTO_XT_CALLBACK_ARGS;
-static void do_autowrap PROTO_XT_CALLBACK_ARGS;
-static void do_backarrow PROTO_XT_CALLBACK_ARGS;
-static void do_clearsavedlines PROTO_XT_CALLBACK_ARGS;
-static void do_continue PROTO_XT_CALLBACK_ARGS;
-static void do_cursesemul PROTO_XT_CALLBACK_ARGS;
-static void do_delete_del PROTO_XT_CALLBACK_ARGS;
-static void do_hardreset PROTO_XT_CALLBACK_ARGS;
-static void do_interrupt PROTO_XT_CALLBACK_ARGS;
-static void do_jumpscroll PROTO_XT_CALLBACK_ARGS;
-static void do_kill PROTO_XT_CALLBACK_ARGS;
-static void do_marginbell PROTO_XT_CALLBACK_ARGS;
-static void do_old_fkeys PROTO_XT_CALLBACK_ARGS;
-static void do_print PROTO_XT_CALLBACK_ARGS;
-static void do_print_redir PROTO_XT_CALLBACK_ARGS;
-static void do_quit PROTO_XT_CALLBACK_ARGS;
-static void do_redraw PROTO_XT_CALLBACK_ARGS;
-static void do_reversevideo PROTO_XT_CALLBACK_ARGS;
-static void do_reversewrap PROTO_XT_CALLBACK_ARGS;
-static void do_scrollbar PROTO_XT_CALLBACK_ARGS;
-static void do_scrollkey PROTO_XT_CALLBACK_ARGS;
-static void do_scrollttyoutput PROTO_XT_CALLBACK_ARGS;
-static void do_securekbd PROTO_XT_CALLBACK_ARGS;
-static void do_softreset PROTO_XT_CALLBACK_ARGS;
-static void do_sun_fkeys PROTO_XT_CALLBACK_ARGS;
-static void do_suspend PROTO_XT_CALLBACK_ARGS;
-static void do_terminate PROTO_XT_CALLBACK_ARGS;
-static void do_titeInhibit PROTO_XT_CALLBACK_ARGS;
-static void do_visualbell PROTO_XT_CALLBACK_ARGS;
-static void do_poponbell PROTO_XT_CALLBACK_ARGS;
-static void do_vtfont PROTO_XT_CALLBACK_ARGS;
-
-#ifdef ALLOWLOGGING
-static void do_logging PROTO_XT_CALLBACK_ARGS;
-#endif
-
-#ifndef NO_ACTIVE_ICON
-static void do_activeicon PROTO_XT_CALLBACK_ARGS;
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_BLINK_CURS
-static void do_cursorblink PROTO_XT_CALLBACK_ARGS;
-#endif
-
-#if OPT_BOX_CHARS
-static void do_font_boxchars PROTO_XT_CALLBACK_ARGS;
-#endif
-
-#if OPT_DEC_CHRSET
-static void do_font_doublesize PROTO_XT_CALLBACK_ARGS;
-#endif
-
-#if OPT_DEC_SOFTFONT
-static void do_font_loadable PROTO_XT_CALLBACK_ARGS;
-#endif
-
-#if OPT_HP_FUNC_KEYS
-static void do_hp_fkeys PROTO_XT_CALLBACK_ARGS;
-#endif
-
-#if OPT_NUM_LOCK
-static void do_alt_esc PROTO_XT_CALLBACK_ARGS;
-static void do_num_lock PROTO_XT_CALLBACK_ARGS;
-static void do_meta_esc PROTO_XT_CALLBACK_ARGS;
-#endif
-
-#if OPT_RENDERFONT
-static void do_font_renderfont PROTO_XT_CALLBACK_ARGS;
-#endif
-
-#if OPT_SCO_FUNC_KEYS
-static void do_sco_fkeys PROTO_XT_CALLBACK_ARGS;
-#endif
-
-#if OPT_SUNPC_KBD
-static void do_sun_kbd PROTO_XT_CALLBACK_ARGS;
-#endif
-
-#if OPT_TEK4014
-static void do_tekcopy PROTO_XT_CALLBACK_ARGS;
-static void do_tekhide PROTO_XT_CALLBACK_ARGS;
-static void do_tekmode PROTO_XT_CALLBACK_ARGS;
-static void do_tekonoff PROTO_XT_CALLBACK_ARGS;
-static void do_tekpage PROTO_XT_CALLBACK_ARGS;
-static void do_tekreset PROTO_XT_CALLBACK_ARGS;
-static void do_tekshow PROTO_XT_CALLBACK_ARGS;
-static void do_tektext2 PROTO_XT_CALLBACK_ARGS;
-static void do_tektext3 PROTO_XT_CALLBACK_ARGS;
-static void do_tektextlarge PROTO_XT_CALLBACK_ARGS;
-static void do_tektextsmall PROTO_XT_CALLBACK_ARGS;
-static void do_vthide PROTO_XT_CALLBACK_ARGS;
-static void do_vtmode PROTO_XT_CALLBACK_ARGS;
-static void do_vtonoff PROTO_XT_CALLBACK_ARGS;
-static void do_vtshow PROTO_XT_CALLBACK_ARGS;
-static void handle_tekshow (Widget gw, Bool allowswitch);
-static void handle_vtshow (Widget gw, Bool allowswitch);
-#endif
-
-#if OPT_TOOLBAR
-static void do_toolbar PROTO_XT_CALLBACK_ARGS;
-#endif
-
-#if OPT_WIDE_CHARS
-static void do_font_utf8_mode PROTO_XT_CALLBACK_ARGS;
-#endif
-
-/*
- * The order of entries MUST match the values given in menu.h
- */
-MenuEntry mainMenuEntries[] = {
-#if OPT_TOOLBAR
- { "toolbar", do_toolbar, NULL },
-#endif
- { "securekbd", do_securekbd, NULL },
- { "allowsends", do_allowsends, NULL },
- { "redraw", do_redraw, NULL },
- { "line1", NULL, NULL },
-#ifdef ALLOWLOGGING
- { "logging", do_logging, NULL },
-#endif
- { "print", do_print, NULL },
- { "print-redirect", do_print_redir, NULL },
- { "line2", NULL, NULL },
- { "8-bit control", do_8bit_control,NULL },
- { "backarrow key", do_backarrow, NULL },
-#if OPT_NUM_LOCK
- { "num-lock", do_num_lock, NULL },
- { "alt-esc", do_alt_esc, NULL },
- { "meta-esc", do_meta_esc, NULL },
-#endif
- { "delete-is-del", do_delete_del, NULL },
- { "oldFunctionKeys",do_old_fkeys, NULL },
-#if OPT_HP_FUNC_KEYS
- { "hpFunctionKeys", do_hp_fkeys, NULL },
-#endif
-#if OPT_SCO_FUNC_KEYS
- { "scoFunctionKeys",do_sco_fkeys, NULL },
-#endif
- { "sunFunctionKeys",do_sun_fkeys, NULL },
-#if OPT_SUNPC_KBD
- { "sunKeyboard", do_sun_kbd, NULL },
-#endif
- { "line3", NULL, NULL },
- { "suspend", do_suspend, NULL },
- { "continue", do_continue, NULL },
- { "interrupt", do_interrupt, NULL },
- { "hangup", do_hangup, NULL },
- { "terminate", do_terminate, NULL },
- { "kill", do_kill, NULL },
- { "line4", NULL, NULL },
- { "quit", do_quit, NULL }};
-
-MenuEntry vtMenuEntries[] = {
- { "scrollbar", do_scrollbar, NULL },
- { "jumpscroll", do_jumpscroll, NULL },
- { "reversevideo", do_reversevideo, NULL },
- { "autowrap", do_autowrap, NULL },
- { "reversewrap", do_reversewrap, NULL },
- { "autolinefeed", do_autolinefeed, NULL },
- { "appcursor", do_appcursor, NULL },
- { "appkeypad", do_appkeypad, NULL },
- { "scrollkey", do_scrollkey, NULL },
- { "scrollttyoutput",do_scrollttyoutput, NULL },
- { "allow132", do_allow132, NULL },
- { "cursesemul", do_cursesemul, NULL },
- { "visualbell", do_visualbell, NULL },
- { "poponbell", do_poponbell, NULL },
- { "marginbell", do_marginbell, NULL },
-#if OPT_BLINK_CURS
- { "cursorblink", do_cursorblink, NULL },
-#endif
- { "titeInhibit", do_titeInhibit, NULL },
-#ifndef NO_ACTIVE_ICON
- { "activeicon", do_activeicon, NULL },
-#endif /* NO_ACTIVE_ICON */
- { "line1", NULL, NULL },
- { "softreset", do_softreset, NULL },
- { "hardreset", do_hardreset, NULL },
- { "clearsavedlines",do_clearsavedlines, NULL },
- { "line2", NULL, NULL },
-#if OPT_TEK4014
- { "tekshow", do_tekshow, NULL },
- { "tekmode", do_tekmode, NULL },
- { "vthide", do_vthide, NULL },
-#endif
- { "altscreen", do_altscreen, NULL },
- };
-
-MenuEntry fontMenuEntries[] = {
- { "fontdefault", do_vtfont, NULL },
- { "font1", do_vtfont, NULL },
- { "font2", do_vtfont, NULL },
- { "font3", do_vtfont, NULL },
- { "font4", do_vtfont, NULL },
- { "font5", do_vtfont, NULL },
- { "font6", do_vtfont, NULL },
- /* this is after the last builtin font; the other entries are special */
- { "fontescape", do_vtfont, NULL },
- { "fontsel", do_vtfont, NULL },
- /* down to here should match NMENUFONTS in ptyx.h */
-
-#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT
- { "line1", NULL, NULL },
-#if OPT_BOX_CHARS
- { "font-linedrawing",do_font_boxchars,NULL },
-#endif
-#if OPT_DEC_CHRSET
- { "font-doublesize",do_font_doublesize,NULL },
-#endif
-#if OPT_DEC_SOFTFONT
- { "font-loadable", do_font_loadable,NULL },
-#endif
-#endif /* toggles for DEC font extensions */
-
-#if OPT_RENDERFONT || OPT_WIDE_CHARS
- { "line2", NULL, NULL },
-#if OPT_RENDERFONT
- { "render-font", do_font_renderfont,NULL },
-#endif
-#if OPT_WIDE_CHARS
- { "utf8-mode", do_font_utf8_mode,NULL },
-#endif
-#endif /* toggles for other font extensions */
-
- };
-
-#if OPT_TEK4014
-MenuEntry tekMenuEntries[] = {
- { "tektextlarge", do_tektextlarge, NULL },
- { "tektext2", do_tektext2, NULL },
- { "tektext3", do_tektext3, NULL },
- { "tektextsmall", do_tektextsmall, NULL },
- { "line1", NULL, NULL },
- { "tekpage", do_tekpage, NULL },
- { "tekreset", do_tekreset, NULL },
- { "tekcopy", do_tekcopy, NULL },
- { "line2", NULL, NULL },
- { "vtshow", do_vtshow, NULL },
- { "vtmode", do_vtmode, NULL },
- { "tekhide", do_tekhide, NULL }};
-#endif
-
-typedef struct {
- char *internal_name;
- MenuEntry *entry_list;
- Cardinal entry_len;
-} MenuHeader;
-
- /* This table is ordered to correspond with MenuIndex */
-static MenuHeader menu_names[] = {
- { "mainMenu", mainMenuEntries, XtNumber(mainMenuEntries) },
- { "vtMenu", vtMenuEntries, XtNumber(vtMenuEntries) },
- { "fontMenu", fontMenuEntries, XtNumber(fontMenuEntries) },
-#if OPT_TEK4014
- { "tekMenu", tekMenuEntries, XtNumber(tekMenuEntries) },
-#endif
- { 0, 0, 0 },
-};
-/* *INDENT-ON* */
-
-/*
- * FIXME: These are global data rather than in the xterm widget because they
- * are initialized before the widget is created.
- */
-typedef struct {
- Widget b; /* the toolbar's buttons */
- Widget w; /* the popup shell activated by the button */
- Cardinal entries;
-} MenuList;
-
-static MenuList vt_shell[NUM_POPUP_MENUS];
-
-#if OPT_TEK4014 && OPT_TOOLBAR
-static MenuList tek_shell[NUM_POPUP_MENUS];
-#endif
-
-/*
- * Returns a pointer to the MenuList entry that matches the popup menu.
- */
-static MenuList *
-select_menu(Widget w GCC_UNUSED, MenuIndex num)
-{
-#if OPT_TEK4014 && OPT_TOOLBAR
- while (w != 0) {
- if (w == tekshellwidget) {
- return &tek_shell[num];
- }
- w = XtParent(w);
- }
-#endif
- return &vt_shell[num];
-}
-
-/*
- * Returns a pointer to the given popup menu shell
- */
-static Widget
-obtain_menu(Widget w, MenuIndex num)
-{
- return select_menu(w, num)->w;
-}
-
-/*
- * Returns the number of entries in the given popup menu shell
- */
-static Cardinal
-sizeof_menu(Widget w, MenuIndex num)
-{
- return select_menu(w, num)->entries;
-}
-
-/*
- * create_menu - create a popup shell and stuff the menu into it.
- */
-
-static Widget
-create_menu(Widget w, XtermWidget xtw, MenuIndex num)
-{
- static XtCallbackRec cb[2] =
- {
- {NULL, NULL},
- {NULL, NULL}};
- static Arg arg =
- {XtNcallback, (XtArgVal) cb};
-
- Widget m;
- TScreen *screen = &xtw->screen;
- MenuHeader *data = &menu_names[num];
- MenuList *list = select_menu(w, num);
- struct _MenuEntry *entries = data->entry_list;
- int nentries = data->entry_len;
-
- if (screen->menu_item_bitmap == None) {
- /*
- * we really want to do these dynamically
- */
-#define check_width 9
-#define check_height 8
- static unsigned char check_bits[] =
- {
- 0x00, 0x01, 0x80, 0x01, 0xc0, 0x00, 0x60, 0x00,
- 0x31, 0x00, 0x1b, 0x00, 0x0e, 0x00, 0x04, 0x00
- };
-
- screen->menu_item_bitmap =
- XCreateBitmapFromData(XtDisplay(xtw),
- RootWindowOfScreen(XtScreen(xtw)),
- (char *) check_bits, check_width, check_height);
- }
-#if OPT_TOOLBAR
- m = list->w;
- if (m == 0) {
- return m;
- }
-#else
- m = XtCreatePopupShell(data->internal_name,
- simpleMenuWidgetClass,
- toplevel,
- NULL, 0);
- list->w = m;
-#endif
- list->entries = nentries;
-
- for (; nentries > 0; nentries--, entries++) {
- cb[0].callback = (XtCallbackProc) entries->function;
- cb[0].closure = (caddr_t) entries->name;
- entries->widget = XtCreateManagedWidget(entries->name,
- (entries->function ?
- smeBSBObjectClass :
- smeLineObjectClass), m,
- &arg, (Cardinal) 1);
- }
-
- /* do not realize at this point */
- return m;
-}
-
-static MenuIndex
-indexOfMenu(String menuName)
-{
- MenuIndex me;
- switch (*menuName) {
- case 'm':
- me = mainMenu;
- break;
- case 'v':
- me = vtMenu;
- break;
- case 'f':
- me = fontMenu;
- break;
-#if OPT_TEK4014
- case 't':
- me = tekMenu;
- break;
-#endif
- default:
- me = noMenu;
- }
- return (me);
-}
-
-/*
- * public interfaces
- */
-
-/* ARGSUSED */
-static Bool
-domenu(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params, /* mainMenu, vtMenu, or tekMenu */
- Cardinal *param_count) /* 0 or 1 */
-{
- TScreen *screen = &term->screen;
- MenuIndex me;
- Bool created = False;
- Widget mw;
-
- if (*param_count != 1) {
- Bell(XkbBI_MinorError, 0);
- return False;
- }
-
- if ((me = indexOfMenu(params[0])) == noMenu) {
- Bell(XkbBI_MinorError, 0);
- return False;
- }
-
- if ((mw = obtain_menu(w, me)) == 0
- || sizeof_menu(w, me) == 0) {
- mw = create_menu(w, term, me);
- created = (mw != 0);
- }
- if (mw == 0)
- return False;
-
- TRACE(("domenu(%s) %s\n", params[0], created ? "create" : "update"));
- switch (me) {
- case mainMenu:
- if (created) {
- update_toolbar();
- update_securekbd();
- update_allowsends();
- update_logging();
- update_print_redir();
- update_8bit_control();
- update_decbkm();
- update_num_lock();
- update_alt_esc();
- update_meta_esc();
- update_delete_del();
- update_keyboard_type();
- if (!xtermHasPrinter()) {
- set_sensitivity(mw,
- mainMenuEntries[mainMenu_print].widget,
- False);
- set_sensitivity(mw,
- mainMenuEntries[mainMenu_print_redir].widget,
- False);
- }
- if (screen->terminal_id < 200) {
- set_sensitivity(mw,
- mainMenuEntries[mainMenu_8bit_ctrl].widget,
- False);
- }
-#if !defined(SIGTSTP)
- set_sensitivity(mw,
- mainMenuEntries[mainMenu_suspend].widget, False);
-#endif
-#if !defined(SIGCONT)
- set_sensitivity(mw,
- mainMenuEntries[mainMenu_continue].widget, False);
-#endif
-#ifdef ALLOWLOGGING
- if (screen->inhibit & I_LOG) {
- set_sensitivity(mw,
- mainMenuEntries[mainMenu_logging].widget, False);
- }
-#endif
- if (screen->inhibit & I_SIGNAL) {
- int n;
- for (n = (int) mainMenu_suspend; n <= (int) mainMenu_quit; ++n) {
- set_sensitivity(mw, mainMenuEntries[n].widget, False);
- }
- }
- }
- break;
-
- case vtMenu:
- if (created) {
- update_scrollbar();
- update_jumpscroll();
- update_reversevideo();
- update_autowrap();
- update_reversewrap();
- update_autolinefeed();
- update_appcursor();
- update_appkeypad();
- update_scrollkey();
- update_scrollttyoutput();
- update_allow132();
- update_cursesemul();
- update_visualbell();
- update_poponbell();
- update_marginbell();
- update_cursorblink();
- update_altscreen();
- update_titeInhibit();
-#ifndef NO_ACTIVE_ICON
- if (!screen->fnt_icon || !screen->iconVwin.window) {
- set_sensitivity(mw,
- vtMenuEntries[vtMenu_activeicon].widget,
- False);
- } else
- update_activeicon();
-#endif /* NO_ACTIVE_ICON */
-#if OPT_TEK4014
- if (screen->inhibit & I_TEK) {
- int n;
- for (n = (int) vtMenu_tekshow; n <= (int) vtMenu_vthide; ++n) {
- set_sensitivity(mw, vtMenuEntries[n].widget, False);
- }
- }
-#endif
- }
- break;
-
- case fontMenu:
- if (created) {
- set_menu_font(True);
- set_sensitivity(mw,
- fontMenuEntries[fontMenu_fontescape].widget,
- (screen->menu_font_names[fontMenu_fontescape]
- ? True : False));
-#if OPT_BOX_CHARS
- update_font_boxchars();
- set_sensitivity(mw,
- fontMenuEntries[fontMenu_font_boxchars].widget,
- True);
-#endif
-#if OPT_DEC_SOFTFONT /* FIXME: not implemented */
- update_font_loadable();
- set_sensitivity(mw,
- fontMenuEntries[fontMenu_font_loadable].widget,
- False);
-#endif
-#if OPT_DEC_CHRSET
- update_font_doublesize();
- if (term->screen.cache_doublesize == 0)
- set_sensitivity(mw,
- fontMenuEntries[fontMenu_font_doublesize].widget,
- False);
-#endif
-#if OPT_RENDERFONT
- update_font_renderfont();
- if (term->misc.face_name == 0) {
- set_sensitivity(mw,
- fontMenuEntries[fontMenu_render_font].widget,
- False);
- }
-#endif
-#if OPT_WIDE_CHARS
- update_font_utf8_mode();
-#endif
- }
- FindFontSelection(NULL, True);
- set_sensitivity(mw,
- fontMenuEntries[fontMenu_fontsel].widget,
- (screen->menu_font_names[fontMenu_fontsel]
- ? True : False));
- break;
-
-#if OPT_TEK4014
- case tekMenu:
- if (created) {
- set_tekfont_menu_item(screen->cur.fontsize, True);
- update_vtshow();
- }
- break;
-#endif
- default:
- break;
- }
-
- return True;
-}
-
-void
-HandleCreateMenu(Widget w,
- XEvent * event,
- String * params, /* mainMenu, vtMenu, or tekMenu */
- Cardinal *param_count) /* 0 or 1 */
-{
- TRACE(("HandleCreateMenu\n"));
- (void) domenu(w, event, params, param_count);
-}
-
-void
-HandlePopupMenu(Widget w,
- XEvent * event,
- String * params, /* mainMenu, vtMenu, or tekMenu */
- Cardinal *param_count) /* 0 or 1 */
-{
- TRACE(("HandlePopupMenu\n"));
- if (domenu(w, event, params, param_count)) {
-#if OPT_TOOLBAR
- w = select_menu(w, mainMenu)->w;
-#endif
- XtCallActionProc(w, "XawPositionSimpleMenu", event, params, 1);
- XtCallActionProc(w, "MenuPopup", event, params, 1);
- }
-}
-
-/*
- * private interfaces - keep out!
- */
-
-/* ARGSUSED */
-static void
-handle_send_signal(Widget gw GCC_UNUSED, int sig)
-{
-#ifndef VMS
- TScreen *screen = &term->screen;
-
- if (hold_screen > 1)
- hold_screen = 0;
- if (screen->pid > 1)
- kill_process_group(screen->pid, sig);
-#endif
-}
-
-/*
- * action routines
- */
-
-/* ARGSUSED */
-void
-DoSecureKeyboard(Time tp GCC_UNUSED)
-{
- do_securekbd(vt_shell[mainMenu].w, (XtPointer) 0, (XtPointer) 0);
-}
-
-static void
-do_securekbd(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
- Time now = CurrentTime; /* XXX - wrong */
-
- if (screen->grabbedKbd) {
- XUngrabKeyboard(screen->display, now);
- ReverseVideo(term);
- screen->grabbedKbd = False;
- } else {
- if (XGrabKeyboard(screen->display, XtWindow(CURRENT_EMU(screen)),
- True, GrabModeAsync, GrabModeAsync, now)
- != GrabSuccess) {
- Bell(XkbBI_MinorError, 100);
- } else {
- ReverseVideo(term);
- screen->grabbedKbd = True;
- }
- }
- update_securekbd();
-}
-
-static void
-do_allowsends(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- screen->allowSendEvents = !screen->allowSendEvents;
- update_allowsends();
-}
-
-static void
-do_visualbell(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- screen->visualbell = !screen->visualbell;
- update_visualbell();
-}
-
-static void
-do_poponbell(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- screen->poponbell = !screen->poponbell;
- update_poponbell();
-}
-
-#ifdef ALLOWLOGGING
-static void
-do_logging(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- if (screen->logging) {
- CloseLog(screen);
- } else {
- StartLog(screen);
- }
- /* update_logging done by CloseLog and StartLog */
-}
-#endif
-
-static void
-do_print(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- xtermPrintScreen(True);
-}
-
-static void
-do_print_redir(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- setPrinterControlMode(term->screen.printer_controlmode ? 0 : 2);
-}
-
-static void
-do_redraw(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- Redraw();
-}
-
-void
-show_8bit_control(Bool value)
-{
- if (term->screen.control_eight_bits != value) {
- term->screen.control_eight_bits = value;
- update_8bit_control();
- }
-}
-
-static void
-do_8bit_control(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- show_8bit_control(!term->screen.control_eight_bits);
-}
-
-static void
-do_backarrow(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- term->keyboard.flags ^= MODE_DECBKM;
- update_decbkm();
-}
-
-#if OPT_NUM_LOCK
-static void
-do_num_lock(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- term->misc.real_NumLock = !term->misc.real_NumLock;
- update_num_lock();
-}
-
-static void
-do_alt_esc(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- term->screen.input_eight_bits = !term->screen.input_eight_bits;
- update_alt_esc();
-}
-
-static void
-do_meta_esc(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- term->screen.meta_sends_esc = !term->screen.meta_sends_esc;
- update_meta_esc();
-}
-#endif
-
-static void
-do_delete_del(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- if (xtermDeleteIsDEL())
- term->screen.delete_is_del = False;
- else
- term->screen.delete_is_del = True;
- update_delete_del();
-}
-
-static void
-do_old_fkeys(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- toggle_keyboard_type(keyboardIsLegacy);
-}
-
-#if OPT_HP_FUNC_KEYS
-static void
-do_hp_fkeys(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- toggle_keyboard_type(keyboardIsHP);
-}
-#endif
-
-#if OPT_SCO_FUNC_KEYS
-static void
-do_sco_fkeys(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- toggle_keyboard_type(keyboardIsSCO);
-}
-#endif
-
-static void
-do_sun_fkeys(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- toggle_keyboard_type(keyboardIsSun);
-}
-
-#if OPT_SUNPC_KBD
-/*
- * This really means "Sun/PC keyboard emulating VT220".
- */
-static void
-do_sun_kbd(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- toggle_keyboard_type(keyboardIsVT220);
-}
-#endif
-
-/*
- * The following cases use the pid instead of the process group so that we
- * don't get hosed by programs that change their process group
- */
-
-/* ARGSUSED */
-static void
-do_suspend(Widget gw,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
-#if defined(SIGTSTP)
- handle_send_signal(gw, SIGTSTP);
-#endif
-}
-
-/* ARGSUSED */
-static void
-do_continue(Widget gw,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
-#if defined(SIGCONT)
- handle_send_signal(gw, SIGCONT);
-#endif
-}
-
-/* ARGSUSED */
-static void
-do_interrupt(Widget gw,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- handle_send_signal(gw, SIGINT);
-}
-
-/* ARGSUSED */
-void
-do_hangup(Widget gw,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- handle_send_signal(gw, SIGHUP);
-}
-
-/* ARGSUSED */
-static void
-do_terminate(Widget gw,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- handle_send_signal(gw, SIGTERM);
-}
-
-/* ARGSUSED */
-static void
-do_kill(Widget gw,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- handle_send_signal(gw, SIGKILL);
-}
-
-static void
-do_quit(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- Cleanup(0);
-}
-
-/*
- * vt menu callbacks
- */
-
-static void
-do_scrollbar(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- ToggleScrollBar(term);
-}
-
-static void
-do_jumpscroll(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- term->flags ^= SMOOTHSCROLL;
- if (term->flags & SMOOTHSCROLL) {
- screen->jumpscroll = False;
- if (screen->scroll_amt)
- FlushScroll(screen);
- } else {
- screen->jumpscroll = True;
- }
- update_jumpscroll();
-}
-
-static void
-do_reversevideo(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- ReverseVideo(term);
-}
-
-static void
-do_autowrap(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- term->flags ^= WRAPAROUND;
- update_autowrap();
-}
-
-static void
-do_reversewrap(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- term->flags ^= REVERSEWRAP;
- update_reversewrap();
-}
-
-static void
-do_autolinefeed(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- term->flags ^= LINEFEED;
- update_autolinefeed();
-}
-
-static void
-do_appcursor(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- term->keyboard.flags ^= MODE_DECCKM;
- update_appcursor();
-}
-
-static void
-do_appkeypad(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- term->keyboard.flags ^= MODE_DECKPAM;
- update_appkeypad();
-}
-
-static void
-do_scrollkey(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- screen->scrollkey = !screen->scrollkey;
- update_scrollkey();
-}
-
-static void
-do_scrollttyoutput(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- screen->scrollttyoutput = !screen->scrollttyoutput;
- update_scrollttyoutput();
-}
-
-static void
-do_allow132(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- screen->c132 = !screen->c132;
- update_allow132();
-}
-
-static void
-do_cursesemul(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- screen->curses = !screen->curses;
- update_cursesemul();
-}
-
-static void
-do_marginbell(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- if (!(screen->marginbell = !screen->marginbell))
- screen->bellarmed = -1;
- update_marginbell();
-}
-
-#if OPT_TEK4014
-static void
-handle_tekshow(Widget gw GCC_UNUSED, Bool allowswitch)
-{
- TScreen *screen = &term->screen;
-
- if (!screen->Tshow) { /* not showing, turn on */
- set_tek_visibility(True);
- } else if (screen->Vshow || allowswitch) { /* is showing, turn off */
- set_tek_visibility(False);
- end_tek_mode(); /* WARNING: this does a longjmp */
- } else
- Bell(XkbBI_MinorError, 0);
-}
-
-/* ARGSUSED */
-static void
-do_tekshow(Widget gw,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- handle_tekshow(gw, True);
-}
-
-/* ARGSUSED */
-static void
-do_tekonoff(Widget gw,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- handle_tekshow(gw, False);
-}
-#endif /* OPT_TEK4014 */
-
-#if OPT_BLINK_CURS
-/* ARGSUSED */
-static void
-do_cursorblink(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
- ToggleCursorBlink(screen);
-}
-#endif
-
-/* ARGSUSED */
-static void
-do_altscreen(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
- ToggleAlternate(screen);
-}
-
-/* ARGSUSED */
-static void
-do_titeInhibit(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- term->misc.titeInhibit = !term->misc.titeInhibit;
- update_titeInhibit();
-}
-
-#ifndef NO_ACTIVE_ICON
-/* ARGSUSED */
-static void
-do_activeicon(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- if (screen->iconVwin.window) {
- Widget shell = XtParent(term);
- term->misc.active_icon = !term->misc.active_icon;
- XtVaSetValues(shell, XtNiconWindow,
- term->misc.active_icon ? screen->iconVwin.window : None,
- (XtPointer) 0);
- update_activeicon();
- }
-}
-#endif /* NO_ACTIVE_ICON */
-
-static void
-do_softreset(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- VTReset(False, False);
-}
-
-static void
-do_hardreset(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- VTReset(True, False);
-}
-
-static void
-do_clearsavedlines(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- VTReset(True, True);
-}
-
-#if OPT_TEK4014
-static void
-do_tekmode(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- switch_modes(screen->TekEmu); /* switch to tek mode */
-}
-
-/* ARGSUSED */
-static void
-do_vthide(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- hide_vt_window();
-}
-#endif /* OPT_TEK4014 */
-
-/*
- * vtfont menu
- */
-
-static void
-do_vtfont(Widget gw GCC_UNUSED,
- XtPointer closure,
- XtPointer data GCC_UNUSED)
-{
- char *entryname = (char *) closure;
- int i;
-
- for (i = 0; i < NMENUFONTS; i++) {
- if (strcmp(entryname, fontMenuEntries[i].name) == 0) {
- SetVTFont(term, i, True, NULL);
- return;
- }
- }
- Bell(XkbBI_MinorError, 0);
-}
-
-#if OPT_DEC_CHRSET
-static void
-do_font_doublesize(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- if (term->screen.cache_doublesize != 0)
- term->screen.font_doublesize = !term->screen.font_doublesize;
- update_font_doublesize();
- Redraw();
-}
-#endif
-
-#if OPT_BOX_CHARS
-static void
-do_font_boxchars(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- term->screen.force_box_chars = !term->screen.force_box_chars;
- update_font_boxchars();
- Redraw();
-}
-#endif
-
-#if OPT_DEC_SOFTFONT
-static void
-do_font_loadable(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- term->misc.font_loadable = !term->misc.font_loadable;
- update_font_loadable();
-}
-#endif
-
-#if OPT_RENDERFONT
-static void
-do_font_renderfont(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
- int fontnum = screen->menu_font_number;
- String name = term->screen.MenuFontName(fontnum);
-
- term->misc.render_font = !term->misc.render_font;
- update_font_renderfont();
- xtermLoadFont(term, xtermFontName(name), True, fontnum);
- ScrnRefresh(screen, 0, 0,
- MaxRows(screen),
- MaxCols(screen), True);
-}
-#endif
-
-#if OPT_WIDE_CHARS
-static void
-do_font_utf8_mode(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- /*
- * If xterm was started with -wc option, it might not have the wide fonts.
- * If xterm was not started with -wc, it might not have wide cells.
- */
- if (!screen->utf8_mode) {
- if (screen->wide_chars) {
- if (xtermLoadWideFonts(term, True)) {
- SetVTFont(term, screen->menu_font_number, TRUE, NULL);
- }
- } else {
- ChangeToWide(screen);
- }
- }
- switchPtyData(screen, !screen->utf8_mode);
- /*
- * We don't repaint the screen when switching UTF-8 on/off. When switching
- * on - the Latin-1 codes should paint as-is. When switching off, that's
- * hard to do properly.
- */
-}
-#endif
-
-/*
- * tek menu
- */
-
-#if OPT_TEK4014
-static void
-do_tektextlarge(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TekSetFontSize(tekMenu_tektextlarge);
-}
-
-static void
-do_tektext2(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TekSetFontSize(tekMenu_tektext2);
-}
-
-static void
-do_tektext3(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TekSetFontSize(tekMenu_tektext3);
-}
-
-static void
-do_tektextsmall(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
-
- TekSetFontSize(tekMenu_tektextsmall);
-}
-
-static void
-do_tekpage(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TekSimulatePageButton(False);
-}
-
-static void
-do_tekreset(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TekSimulatePageButton(True);
-}
-
-static void
-do_tekcopy(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TekCopy();
-}
-
-static void
-handle_vtshow(Widget gw GCC_UNUSED, Bool allowswitch)
-{
- TScreen *screen = &term->screen;
-
- if (!screen->Vshow) { /* not showing, turn on */
- set_vt_visibility(True);
- } else if (screen->Tshow || allowswitch) { /* is showing, turn off */
- set_vt_visibility(False);
- if (!screen->TekEmu && TekRefresh)
- dorefresh();
- end_vt_mode(); /* WARNING: this does a longjmp... */
- } else
- Bell(XkbBI_MinorError, 0);
-}
-
-static void
-do_vtshow(Widget gw,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- handle_vtshow(gw, True);
-}
-
-static void
-do_vtonoff(Widget gw,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- handle_vtshow(gw, False);
-}
-
-static void
-do_vtmode(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- switch_modes(screen->TekEmu); /* switch to vt, or from */
-}
-
-/* ARGSUSED */
-static void
-do_tekhide(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- hide_tek_window();
-}
-#endif /* OPT_TEK4014 */
-
-/*
- * public handler routines
- */
-
-static void
-handle_toggle(void (*proc) PROTO_XT_CALLBACK_ARGS,
- int var,
- String * params,
- Cardinal nparams,
- Widget w,
- XtPointer closure,
- XtPointer data)
-{
- int dir = -2;
-
- switch (nparams) {
- case 0:
- dir = -1;
- break;
- case 1:
- if (XmuCompareISOLatin1(params[0], "on") == 0)
- dir = 1;
- else if (XmuCompareISOLatin1(params[0], "off") == 0)
- dir = 0;
- else if (XmuCompareISOLatin1(params[0], "toggle") == 0)
- dir = -1;
- break;
- }
-
- switch (dir) {
- case -2:
- Bell(XkbBI_MinorError, 0);
- break;
-
- case -1:
- (*proc) (w, closure, data);
- break;
-
- case 0:
- if (var)
- (*proc) (w, closure, data);
- else
- Bell(XkbBI_MinorError, 0);
- break;
-
- case 1:
- if (!var)
- (*proc) (w, closure, data);
- else
- Bell(XkbBI_MinorError, 0);
- break;
- }
- return;
-}
-
-#define handle_vt_toggle(proc, var, params, nparams, w) \
- handle_toggle(proc, (int) (var), params, nparams, w, (XtPointer)0, (XtPointer)0)
-
-#define handle_tek_toggle(proc, var, params, nparams, w) \
- handle_toggle(proc, (int) (var), params, nparams, w, (XtPointer)0, (XtPointer)0)
-
-void
-HandleAllowSends(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_allowsends, term->screen.allowSendEvents,
- params, *param_count, w);
-}
-
-void
-HandleSetVisualBell(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_visualbell, term->screen.visualbell,
- params, *param_count, w);
-}
-
-void
-HandleSetPopOnBell(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_poponbell, term->screen.poponbell,
- params, *param_count, w);
-}
-
-#ifdef ALLOWLOGGING
-void
-HandleLogging(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_logging, term->screen.logging,
- params, *param_count, w);
-}
-#endif
-
-/* ARGSUSED */
-void
-HandlePrintScreen(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- do_print(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-/* ARGSUSED */
-void
-HandlePrintControlMode(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- do_print_redir(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-/* ARGSUSED */
-void
-HandleRedraw(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- do_redraw(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-/* ARGSUSED */
-void
-HandleSendSignal(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- /* *INDENT-OFF* */
- static struct sigtab {
- char *name;
- int sig;
- } signals[] = {
-#ifdef SIGTSTP
- { "suspend", SIGTSTP },
- { "tstp", SIGTSTP },
-#endif
-#ifdef SIGCONT
- { "cont", SIGCONT },
-#endif
- { "int", SIGINT },
- { "hup", SIGHUP },
- { "quit", SIGQUIT },
- { "alrm", SIGALRM },
- { "alarm", SIGALRM },
- { "term", SIGTERM },
- { "kill", SIGKILL },
- { NULL, 0 },
- };
- /* *INDENT-ON* */
-
- if (*param_count == 1) {
- struct sigtab *st;
-
- for (st = signals; st->name; st++) {
- if (XmuCompareISOLatin1(st->name, params[0]) == 0) {
- handle_send_signal(w, st->sig);
- return;
- }
- }
- /* one could allow numeric values, but that would be a security hole */
- }
-
- Bell(XkbBI_MinorError, 0);
-}
-
-/* ARGSUSED */
-void
-HandleQuit(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- do_quit(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-void
-Handle8BitControl(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_8bit_control, term->screen.control_eight_bits,
- params, *param_count, w);
-}
-
-void
-HandleBackarrow(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_backarrow, term->keyboard.flags & MODE_DECBKM,
- params, *param_count, w);
-}
-
-void
-HandleSunFunctionKeys(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_sun_fkeys, term->keyboard.type == keyboardIsSun,
- params, *param_count, w);
-}
-
-#if OPT_NUM_LOCK
-void
-HandleNumLock(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_num_lock, term->misc.real_NumLock,
- params, *param_count, w);
-}
-
-void
-HandleAltEsc(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_alt_esc, !term->screen.input_eight_bits,
- params, *param_count, w);
-}
-
-void
-HandleMetaEsc(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_meta_esc, term->screen.meta_sends_esc,
- params, *param_count, w);
-}
-#endif
-
-void
-HandleDeleteIsDEL(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_delete_del, term->screen.delete_is_del,
- params, *param_count, w);
-}
-
-void
-HandleOldFunctionKeys(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_old_fkeys, term->keyboard.type == keyboardIsLegacy,
- params, *param_count, w);
-}
-
-#if OPT_SUNPC_KBD
-void
-HandleSunKeyboard(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_sun_kbd, term->keyboard.type == keyboardIsVT220,
- params, *param_count, w);
-}
-#endif
-
-#if OPT_HP_FUNC_KEYS
-void
-HandleHpFunctionKeys(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_hp_fkeys, term->keyboard.type == keyboardIsHP,
- params, *param_count, w);
-}
-#endif
-
-#if OPT_SCO_FUNC_KEYS
-void
-HandleScoFunctionKeys(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_sco_fkeys, term->keyboard.type == keyboardIsSCO,
- params, *param_count, w);
-}
-#endif
-
-void
-HandleScrollbar(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- if (IsIcon(&(term->screen))) {
- Bell(XkbBI_MinorError, 0);
- } else {
- handle_vt_toggle(do_scrollbar, term->screen.fullVwin.sb_info.width,
- params, *param_count, w);
- }
-}
-
-void
-HandleJumpscroll(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_jumpscroll, term->screen.jumpscroll,
- params, *param_count, w);
-}
-
-void
-HandleReverseVideo(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_reversevideo, (term->misc.re_verse0),
- params, *param_count, w);
-}
-
-void
-HandleAutoWrap(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_autowrap, (term->flags & WRAPAROUND),
- params, *param_count, w);
-}
-
-void
-HandleReverseWrap(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_reversewrap, (term->flags & REVERSEWRAP),
- params, *param_count, w);
-}
-
-void
-HandleAutoLineFeed(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_autolinefeed, (term->flags & LINEFEED),
- params, *param_count, w);
-}
-
-void
-HandleAppCursor(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_appcursor, (term->keyboard.flags & MODE_DECCKM),
- params, *param_count, w);
-}
-
-void
-HandleAppKeypad(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_appkeypad, (term->keyboard.flags & MODE_DECKPAM),
- params, *param_count, w);
-}
-
-void
-HandleScrollKey(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_scrollkey, term->screen.scrollkey,
- params, *param_count, w);
-}
-
-void
-HandleScrollTtyOutput(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_scrollttyoutput, term->screen.scrollttyoutput,
- params, *param_count, w);
-}
-
-void
-HandleAllow132(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_allow132, term->screen.c132,
- params, *param_count, w);
-}
-
-void
-HandleCursesEmul(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_cursesemul, term->screen.curses,
- params, *param_count, w);
-}
-
-void
-HandleMarginBell(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_marginbell, term->screen.marginbell,
- params, *param_count, w);
-}
-
-#if OPT_BLINK_CURS
-void
-HandleCursorBlink(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- /* eventually want to see if sensitive or not */
- handle_vt_toggle(do_cursorblink, term->screen.cursor_blink,
- params, *param_count, w);
-}
-#endif
-
-void
-HandleAltScreen(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- /* eventually want to see if sensitive or not */
- handle_vt_toggle(do_altscreen, term->screen.alternate,
- params, *param_count, w);
-}
-
-void
-HandleTiteInhibit(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- /* eventually want to see if sensitive or not */
- handle_vt_toggle(do_titeInhibit, !(term->misc.titeInhibit),
- params, *param_count, w);
-}
-
-/* ARGSUSED */
-void
-HandleSoftReset(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- do_softreset(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-/* ARGSUSED */
-void
-HandleHardReset(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- do_hardreset(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-/* ARGSUSED */
-void
-HandleClearSavedLines(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- do_clearsavedlines(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-#if OPT_DEC_CHRSET
-void
-HandleFontDoublesize(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_font_doublesize, term->screen.font_doublesize,
- params, *param_count, w);
-}
-#endif
-
-#if OPT_BOX_CHARS
-void
-HandleFontBoxChars(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_font_boxchars, term->screen.force_box_chars,
- params, *param_count, w);
-}
-#endif
-
-#if OPT_DEC_SOFTFONT
-void
-HandleFontLoading(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_font_loadable, term->misc.font_loadable,
- params, *param_count, w);
-}
-#endif
-
-#if OPT_RENDERFONT
-void
-HandleRenderFont(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_font_renderfont, term->misc.render_font,
- params, *param_count, w);
-}
-#endif
-
-#if OPT_WIDE_CHARS
-void
-HandleUTF8Mode(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- handle_vt_toggle(do_font_utf8_mode, term->screen.utf8_mode,
- params, *param_count, w);
-}
-#endif
-
-#if OPT_TEK4014
-void
-HandleSetTerminalType(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- if (*param_count == 1) {
- switch (params[0][0]) {
- case 'v':
- case 'V':
- if (term->screen.TekEmu)
- do_vtmode(w, (XtPointer) 0, (XtPointer) 0);
- break;
- case 't':
- case 'T':
- if (!term->screen.TekEmu)
- do_tekmode(w, (XtPointer) 0, (XtPointer) 0);
- break;
- default:
- Bell(XkbBI_MinorError, 0);
- }
- } else {
- Bell(XkbBI_MinorError, 0);
- }
-}
-
-void
-HandleVisibility(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- if (*param_count == 2) {
- switch (params[0][0]) {
- case 'v':
- case 'V':
- handle_tek_toggle(do_vtonoff, (int) term->screen.Vshow,
- params + 1, (*param_count) - 1, w);
- break;
- case 't':
- case 'T':
- handle_tek_toggle(do_tekonoff, (int) term->screen.Tshow,
- params + 1, (*param_count) - 1, w);
- break;
- default:
- Bell(XkbBI_MinorError, 0);
- }
- } else {
- Bell(XkbBI_MinorError, 0);
- }
-}
-
-/* ARGSUSED */
-void
-HandleSetTekText(Widget w,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- void (*proc) PROTO_XT_CALLBACK_ARGS = 0;
-
- switch (*param_count) {
- case 0:
- proc = do_tektextlarge;
- break;
- case 1:
- switch (params[0][0]) {
- case 'l':
- case 'L':
- proc = do_tektextlarge;
- break;
- case '2':
- proc = do_tektext2;
- break;
- case '3':
- proc = do_tektext3;
- break;
- case 's':
- case 'S':
- proc = do_tektextsmall;
- break;
- }
- break;
- }
- if (proc)
- (*proc) (w, (XtPointer) 0, (XtPointer) 0);
- else
- Bell(XkbBI_MinorError, 0);
-}
-
-/* ARGSUSED */
-void
-HandleTekPage(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- do_tekpage(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-/* ARGSUSED */
-void
-HandleTekReset(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- do_tekreset(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-/* ARGSUSED */
-void
-HandleTekCopy(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- do_tekcopy(w, (XtPointer) 0, (XtPointer) 0);
-}
-#endif /* OPT_TEK4014 */
-
-void
-UpdateMenuItem(Widget mi, XtArgVal val)
-{
- static Arg menuArgs =
- {XtNleftBitmap, (XtArgVal) 0};
-
- if (mi) {
- menuArgs.value = (XtArgVal) ((val)
- ? term->screen.menu_item_bitmap
- : None);
- XtSetValues(mi, &menuArgs, (Cardinal) 1);
- }
-}
-
-void
-SetItemSensitivity(Widget mi, XtArgVal val)
-{
- static Arg menuArgs =
- {XtNsensitive, (XtArgVal) 0};
-
- if (mi) {
- menuArgs.value = (XtArgVal) (val);
- XtSetValues(mi, &menuArgs, (Cardinal) 1);
- }
-}
-
-#if OPT_TOOLBAR
-/*
- * The normal style of xterm popup menu delays initialization until the menu is
- * first requested. When using a toolbar, we can use the same initialization,
- * though on the first popup there will be a little geometry layout jitter,
- * since the menu is already managed when this callback is invoked.
- */
-static void
-InitPopup(Widget gw,
- XtPointer closure,
- XtPointer data GCC_UNUSED)
-{
- String params[2];
- Cardinal count = 1;
-
- params[0] = (char *) closure;
- params[1] = 0;
- TRACE(("InitPopup(%s)\n", params[0]));
-
- domenu(gw, (XEvent *) 0, params, &count);
-
- if (gw)
- XtRemoveCallback(gw, XtNpopupCallback, InitPopup, closure);
-}
-
-static void
-SetupShell(Widget *menus, MenuList * shell, int n, int m)
-{
- char temp[80];
- char *external_name = 0;
-
- shell[n].w = XtVaCreatePopupShell(menu_names[n].internal_name,
- simpleMenuWidgetClass,
- *menus,
- XtNgeometry, NULL,
- (XtPointer) 0);
-
- XtAddCallback(shell[n].w, XtNpopupCallback, InitPopup, menu_names[n].internal_name);
- XtVaGetValues(shell[n].w,
- XtNlabel, &external_name,
- (XtPointer) 0);
-
- TRACE(("...SetupShell(%s) -> %s -> %#lx\n",
- menu_names[n].internal_name,
- external_name,
- (long) shell[n].w));
-
- sprintf(temp, "%sButton", menu_names[n].internal_name);
- shell[n].b = XtVaCreateManagedWidget(temp,
- menuButtonWidgetClass,
- *menus,
- XtNfromHoriz, ((m >= 0)
- ? shell[m].b
- : 0),
- XtNmenuName, menu_names[n].internal_name,
- XtNlabel, external_name,
- (XtPointer) 0);
-}
-
-#endif
-
-void
-SetupMenus(Widget shell, Widget *forms, Widget *menus)
-{
-#if OPT_TOOLBAR
- Cardinal n;
- Arg args[10];
-#endif
-
- TRACE(("SetupMenus(%s)\n", shell == toplevel ? "vt100" : "tek4014"));
-
- if (shell == toplevel) {
- XawSimpleMenuAddGlobalActions(app_con);
- XtRegisterGrabAction(HandlePopupMenu, True,
- (ButtonPressMask | ButtonReleaseMask),
- GrabModeAsync, GrabModeAsync);
- }
-#if OPT_TOOLBAR
- *forms = XtVaCreateManagedWidget("form",
- formWidgetClass, shell,
- (XtPointer) 0);
- xtermAddInput(*forms);
-
- /*
- * Set a nominal value for the preferred pane size, which lets the
- * buttons determine the actual height of the menu bar. We don't show
- * the grip, because it's too easy to make the toolbar look bad that
- * way.
- */
- XtSetArg(args[0], XtNorientation, XtorientHorizontal);
- XtSetArg(args[1], XtNtop, XawChainTop);
- XtSetArg(args[2], XtNbottom, XawChainTop);
- XtSetArg(args[3], XtNleft, XawChainLeft);
- XtSetArg(args[4], XtNright, XawChainLeft);
-
- if (resource.toolBar)
- *menus = XtCreateManagedWidget("menubar", boxWidgetClass, *forms,
- args, 5);
- else
- *menus = XtCreateWidget("menubar", boxWidgetClass, *forms, args, 5);
-
- if (shell == toplevel) { /* vt100 */
- for (n = mainMenu; n <= fontMenu; n++) {
- SetupShell(menus, vt_shell, n, n - 1);
- }
- }
-#if OPT_TEK4014
- else { /* tek4014 */
- SetupShell(menus, tek_shell, mainMenu, -1);
- SetupShell(menus, tek_shell, tekMenu, mainMenu);
- }
-#endif
-
-#else
- *forms = shell;
- *menus = shell;
-#endif
-
- TRACE(("...shell=%#lx\n", (long) shell));
- TRACE(("...forms=%#lx\n", (long) *forms));
- TRACE(("...menus=%#lx\n", (long) *menus));
-}
-
-void
-repairSizeHints(void)
-{
- TScreen *screen = &term->screen;
-
- XSizeHints sizehints;
-
- if (XtIsRealized((Widget) term)) {
- bzero(&sizehints, sizeof(sizehints));
- xtermSizeHints(term, &sizehints, ScrollbarWidth(screen));
-
- XSetWMNormalHints(screen->display, XtWindow(SHELL_OF(term)), &sizehints);
- }
-}
-
-#if OPT_TOOLBAR
-static int called_SetupToolbar[2] =
-{False, False};
-
-static void
-SetupToolbar(int which)
-{
- int n;
-
- TRACE(("SetupToolbar(%s)\n", which ? "vt100" : "tek4014"));
-
- if (which) { /* vt100 */
- for (n = mainMenu; n <= fontMenu; n++) {
- InitPopup(vt_shell[n].w, menu_names[n].internal_name, 0);
- }
- }
-#if OPT_TEK4014
- else { /* tek4014 */
- InitPopup(tek_shell[mainMenu].w, menu_names[mainMenu].internal_name, 0);
- InitPopup(tek_shell[tekMenu].w, menu_names[tekMenu].internal_name, 0);
- }
-#endif
- called_SetupToolbar[which] = True;
- ShowToolbar(resource.toolBar);
-}
-
-static TbInfo *
-toolbar_info(Widget w)
-{
- TRACE(("...getting toolbar_info\n"));
-#if OPT_TEK4014
- if (w != (Widget) term)
- return &(tekWidget->tek.tb_info);
-#endif
- return &(WhichVWin(&(term->screen))->tb_info);
-}
-
-static void
-hide_toolbar(Widget w)
-{
- if (w != 0) {
- TbInfo *info = toolbar_info(w);
-
- TRACE(("hiding toolbar\n"));
- XtVaSetValues(w,
- XtNfromVert, (Widget) 0,
- (XtPointer) 0);
-
- if (info->menu_bar != 0) {
- repairSizeHints();
- XtUnmanageChild(info->menu_bar);
- if (XtIsRealized(info->menu_bar)) {
- XtUnmapWidget(info->menu_bar);
- }
- }
- TRACE(("...hiding toolbar (done)\n"));
- }
-}
-
-static void
-show_toolbar(Widget w)
-{
- if (w != 0) {
- TbInfo *info = toolbar_info(w);
-
- TRACE(("showing toolbar\n"));
- if (info->menu_bar != 0) {
- XtVaSetValues(w,
- XtNfromVert, info->menu_bar,
- (XtPointer) 0);
- if (XtIsRealized(info->menu_bar))
- repairSizeHints();
- XtManageChild(info->menu_bar);
- if (XtIsRealized(info->menu_bar)) {
- XtMapWidget(info->menu_bar);
- }
- }
- /*
- * This is needed to make the terminal widget move down below the
- * toolbar.
- */
- XawFormDoLayout(XtParent(w), True);
- TRACE(("...showing toolbar (done)\n"));
- }
-}
-
-/*
- * Make the toolbar visible or invisible in the current window(s).
- */
-void
-ShowToolbar(Bool enable)
-{
- TRACE(("ShowToolbar(%d)\n", enable));
-
- if (IsIcon(&(term->screen))) {
- Bell(XkbBI_MinorError, 0);
- } else {
- if (enable) {
- int which = !TEK4014_ACTIVE(&(term->screen));
- if (!called_SetupToolbar[which])
- SetupToolbar(which);
- show_toolbar((Widget) term);
-#if OPT_TEK4014
- show_toolbar((Widget) tekWidget);
-#endif
- } else {
- hide_toolbar((Widget) term);
-#if OPT_TEK4014
- hide_toolbar((Widget) tekWidget);
-#endif
- }
- resource.toolBar = enable;
- update_toolbar();
- }
-}
-
-void
-HandleToolbar(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *param_count GCC_UNUSED)
-{
- if (IsIcon(&(term->screen))) {
- Bell(XkbBI_MinorError, 0);
- } else {
- handle_vt_toggle(do_toolbar, resource.toolBar,
- params, *param_count, w);
- }
-}
-
-/* ARGSUSED */
-static void
-do_toolbar(Widget gw GCC_UNUSED,
- XtPointer closure GCC_UNUSED,
- XtPointer data GCC_UNUSED)
-{
- /*
- * Toggle toolbars for both vt100 and tek windows, since they share the
- * menu which contains the checkbox indicating whether the toolbar is
- * active.
- */
- if (IsIcon(&(term->screen))) {
- Bell(XkbBI_MinorError, 0);
- } else {
- ShowToolbar(resource.toolBar = !resource.toolBar);
- }
-}
-
-void
-update_toolbar(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_toolbar].widget,
- resource.toolBar);
-}
-#endif /* OPT_TOOLBAR */
-
-void
-update_securekbd(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_securekbd].widget,
- term->screen.grabbedKbd);
-}
-
-void
-update_allowsends(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_allowsends].widget,
- term->screen.allowSendEvents);
-}
-
-#ifdef ALLOWLOGGING
-void
-update_logging(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_logging].widget,
- term->screen.logging);
-}
-#endif
-
-void
-update_print_redir(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_print_redir].widget,
- term->screen.printer_controlmode);
-}
-
-void
-update_8bit_control(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_8bit_ctrl].widget,
- term->screen.control_eight_bits);
-}
-
-void
-update_decbkm(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_backarrow].widget,
- (term->keyboard.flags & MODE_DECBKM) != 0);
-}
-
-#if OPT_NUM_LOCK
-void
-update_num_lock(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_num_lock].widget,
- term->misc.real_NumLock);
-}
-
-void
-update_alt_esc(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_alt_esc].widget,
- !term->screen.input_eight_bits);
-}
-
-void
-update_meta_esc(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_meta_esc].widget,
- term->screen.meta_sends_esc);
-}
-#endif
-
-void
-update_sun_fkeys(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_sun_fkeys].widget,
- term->keyboard.type == keyboardIsSun);
-}
-
-void
-update_old_fkeys(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_old_fkeys].widget,
- term->keyboard.type == keyboardIsLegacy);
-}
-
-void
-update_delete_del(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_delete_del].widget,
- xtermDeleteIsDEL());
-}
-
-#if OPT_SUNPC_KBD
-void
-update_sun_kbd(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_sun_kbd].widget,
- term->keyboard.type == keyboardIsVT220);
-}
-#endif
-
-#if OPT_HP_FUNC_KEYS
-void
-update_hp_fkeys(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_hp_fkeys].widget,
- term->keyboard.type == keyboardIsHP);
-}
-#endif
-
-#if OPT_SCO_FUNC_KEYS
-void
-update_sco_fkeys(void)
-{
- update_menu_item(term->screen.mainMenu,
- mainMenuEntries[mainMenu_sco_fkeys].widget,
- term->keyboard.type == keyboardIsSCO);
-}
-#endif
-
-void
-update_scrollbar(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_scrollbar].widget,
- ScrollbarWidth(&term->screen));
-}
-
-void
-update_jumpscroll(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_jumpscroll].widget,
- term->screen.jumpscroll);
-}
-
-void
-update_reversevideo(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_reversevideo].widget,
- (term->misc.re_verse));
-}
-
-void
-update_autowrap(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_autowrap].widget,
- (term->flags & WRAPAROUND) != 0);
-}
-
-void
-update_reversewrap(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_reversewrap].widget,
- (term->flags & REVERSEWRAP) != 0);
-}
-
-void
-update_autolinefeed(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_autolinefeed].widget,
- (term->flags & LINEFEED) != 0);
-}
-
-void
-update_appcursor(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_appcursor].widget,
- (term->keyboard.flags & MODE_DECCKM) != 0);
-}
-
-void
-update_appkeypad(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_appkeypad].widget,
- (term->keyboard.flags & MODE_DECKPAM) != 0);
-}
-
-void
-update_scrollkey(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_scrollkey].widget,
- term->screen.scrollkey);
-}
-
-void
-update_scrollttyoutput(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_scrollttyoutput].widget,
- term->screen.scrollttyoutput);
-}
-
-void
-update_allow132(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_allow132].widget,
- term->screen.c132);
-}
-
-void
-update_cursesemul(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_cursesemul].widget,
- term->screen.curses);
-}
-
-void
-update_visualbell(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_visualbell].widget,
- term->screen.visualbell);
-}
-
-void
-update_poponbell(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_poponbell].widget,
- term->screen.poponbell);
-}
-
-void
-update_marginbell(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_marginbell].widget,
- term->screen.marginbell);
-}
-
-#if OPT_BLINK_CURS
-void
-update_cursorblink(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_cursorblink].widget,
- term->screen.cursor_blink);
-}
-#endif
-
-void
-update_altscreen(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_altscreen].widget,
- term->screen.alternate);
-}
-
-void
-update_titeInhibit(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_titeInhibit].widget,
- !(term->misc.titeInhibit));
-}
-
-#ifndef NO_ACTIVE_ICON
-void
-update_activeicon(void)
-{
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_activeicon].widget,
- term->misc.active_icon);
-}
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_DEC_CHRSET
-void
-update_font_doublesize(void)
-{
- update_menu_item(term->screen.fontMenu,
- fontMenuEntries[fontMenu_font_doublesize].widget,
- term->screen.font_doublesize);
-}
-#endif
-
-#if OPT_BOX_CHARS
-void
-update_font_boxchars(void)
-{
- update_menu_item(term->screen.fontMenu,
- fontMenuEntries[fontMenu_font_boxchars].widget,
- term->screen.force_box_chars);
-}
-#endif
-
-#if OPT_DEC_SOFTFONT
-void
-update_font_loadable(void)
-{
- update_menu_item(term->screen.fontMenu,
- fontMenuEntries[fontMenu_font_loadable].widget,
- term->misc.font_loadable);
-}
-#endif
-
-#if OPT_RENDERFONT
-void
-update_font_renderfont(void)
-{
- update_menu_item(term->screen.fontMenu,
- fontMenuEntries[fontMenu_render_font].widget,
- term->misc.render_font);
-}
-#endif
-
-#if OPT_WIDE_CHARS
-void
-update_font_utf8_mode(void)
-{
- Widget iw = fontMenuEntries[fontMenu_wide_chars].widget;
- Bool active = (term->screen.utf8_mode != uAlways);
- Bool enable = (term->screen.utf8_mode != uFalse);
-
- TRACE(("update_font_utf8_mode active %d, enable %d\n", active, enable));
- set_sensitivity(term->screen.fontMenu, iw, active);
- update_menu_item(term->screen.fontMenu, iw, enable);
-}
-#endif
-
-#if OPT_TEK4014
-void
-update_tekshow(void)
-{
- if (!(term->screen.inhibit & I_TEK)) {
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_tekshow].widget,
- term->screen.Tshow);
- }
-}
-
-void
-update_vttekmode(void)
-{
- if (!(term->screen.inhibit & I_TEK)) {
- update_menu_item(term->screen.vtMenu,
- vtMenuEntries[vtMenu_tekmode].widget,
- term->screen.TekEmu);
- update_menu_item(term->screen.tekMenu,
- tekMenuEntries[tekMenu_vtmode].widget,
- !term->screen.TekEmu);
- }
-}
-
-void
-update_vtshow(void)
-{
- if (!(term->screen.inhibit & I_TEK)) {
- update_menu_item(term->screen.tekMenu,
- tekMenuEntries[tekMenu_vtshow].widget,
- term->screen.Vshow);
- }
-}
-
-void
-set_vthide_sensitivity(void)
-{
- if (!(term->screen.inhibit & I_TEK)) {
- set_sensitivity(term->screen.vtMenu,
- vtMenuEntries[vtMenu_vthide].widget,
- term->screen.Tshow);
- }
-}
-
-void
-set_tekhide_sensitivity(void)
-{
- if (!(term->screen.inhibit & I_TEK)) {
- set_sensitivity(term->screen.tekMenu,
- tekMenuEntries[tekMenu_tekhide].widget,
- term->screen.Vshow);
- }
-}
-
-void
-set_tekfont_menu_item(int n, int val)
-{
- if (!(term->screen.inhibit & I_TEK)) {
- update_menu_item(term->screen.tekMenu,
- tekMenuEntries[FS2MI(n)].widget,
- (val));
- }
-}
-#endif /* OPT_TEK4014 */
-
-void
-set_menu_font(int val)
-{
- update_menu_item(term->screen.fontMenu,
- fontMenuEntries[term->screen.menu_font_number].widget,
- (val));
-}
diff --git a/nx-X11/programs/xterm/menu.h b/nx-X11/programs/xterm/menu.h
deleted file mode 100644
index e64c5d3dc..000000000
--- a/nx-X11/programs/xterm/menu.h
+++ /dev/null
@@ -1,441 +0,0 @@
-/* $XTermId: menu.h,v 1.96 2005/11/03 13:17:28 tom Exp $ */
-
-/* $Xorg: menu.h,v 1.4 2001/02/09 02:06:03 xorgcvs Exp $ */
-/*
-
-Copyright 1999-2004,2005 by Thomas E. Dickey
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of the above listed
-copyright holder(s) not be used in advertising or publicity pertaining
-to distribution of the software without specific, written prior
-permission.
-
-THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
-LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-
-Copyright 1989 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.
-
-*/
-/* $XFree86: xc/programs/xterm/menu.h,v 3.38 2005/11/03 13:17:28 dickey Exp $ */
-
-#ifndef included_menu_h
-#define included_menu_h
-
-#include <xterm.h>
-
-typedef struct _MenuEntry {
- char *name;
- void (*function) PROTO_XT_CALLBACK_ARGS;
- Widget widget;
-} MenuEntry;
-
-extern MenuEntry mainMenuEntries[], vtMenuEntries[];
-extern MenuEntry fontMenuEntries[];
-#if OPT_TEK4014
-extern MenuEntry tekMenuEntries[];
-#endif
-
-extern void Handle8BitControl PROTO_XT_ACTIONS_ARGS;
-extern void HandleAllow132 PROTO_XT_ACTIONS_ARGS;
-extern void HandleAllowSends PROTO_XT_ACTIONS_ARGS;
-extern void HandleAltEsc PROTO_XT_ACTIONS_ARGS;
-extern void HandleAltScreen PROTO_XT_ACTIONS_ARGS;
-extern void HandleAppCursor PROTO_XT_ACTIONS_ARGS;
-extern void HandleAppKeypad PROTO_XT_ACTIONS_ARGS;
-extern void HandleAutoLineFeed PROTO_XT_ACTIONS_ARGS;
-extern void HandleAutoWrap PROTO_XT_ACTIONS_ARGS;
-extern void HandleBackarrow PROTO_XT_ACTIONS_ARGS;
-extern void HandleClearSavedLines PROTO_XT_ACTIONS_ARGS;
-extern void HandleCreateMenu PROTO_XT_ACTIONS_ARGS;
-extern void HandleCursesEmul PROTO_XT_ACTIONS_ARGS;
-extern void HandleCursorBlink PROTO_XT_ACTIONS_ARGS;
-extern void HandleDeleteIsDEL PROTO_XT_ACTIONS_ARGS;
-extern void HandleFontBoxChars PROTO_XT_ACTIONS_ARGS;
-extern void HandleFontDoublesize PROTO_XT_ACTIONS_ARGS;
-extern void HandleFontLoading PROTO_XT_ACTIONS_ARGS;
-extern void HandleHardReset PROTO_XT_ACTIONS_ARGS;
-extern void HandleHpFunctionKeys PROTO_XT_ACTIONS_ARGS;
-extern void HandleJumpscroll PROTO_XT_ACTIONS_ARGS;
-extern void HandleLogging PROTO_XT_ACTIONS_ARGS;
-extern void HandleMarginBell PROTO_XT_ACTIONS_ARGS;
-extern void HandleMetaEsc PROTO_XT_ACTIONS_ARGS;
-extern void HandleNumLock PROTO_XT_ACTIONS_ARGS;
-extern void HandleOldFunctionKeys PROTO_XT_ACTIONS_ARGS;
-extern void HandlePopupMenu PROTO_XT_ACTIONS_ARGS;
-extern void HandlePrintControlMode PROTO_XT_ACTIONS_ARGS;
-extern void HandlePrintScreen PROTO_XT_ACTIONS_ARGS;
-extern void HandleQuit PROTO_XT_ACTIONS_ARGS;
-extern void HandleRedraw PROTO_XT_ACTIONS_ARGS;
-extern void HandleRenderFont PROTO_XT_ACTIONS_ARGS;
-extern void HandleReverseVideo PROTO_XT_ACTIONS_ARGS;
-extern void HandleReverseWrap PROTO_XT_ACTIONS_ARGS;
-extern void HandleScoFunctionKeys PROTO_XT_ACTIONS_ARGS;
-extern void HandleScrollKey PROTO_XT_ACTIONS_ARGS;
-extern void HandleScrollTtyOutput PROTO_XT_ACTIONS_ARGS;
-extern void HandleScrollbar PROTO_XT_ACTIONS_ARGS;
-extern void HandleSendSignal PROTO_XT_ACTIONS_ARGS;
-extern void HandleSetPopOnBell PROTO_XT_ACTIONS_ARGS;
-extern void HandleSetTekText PROTO_XT_ACTIONS_ARGS;
-extern void HandleSetTerminalType PROTO_XT_ACTIONS_ARGS;
-extern void HandleSetVisualBell PROTO_XT_ACTIONS_ARGS;
-extern void HandleSoftReset PROTO_XT_ACTIONS_ARGS;
-extern void HandleSunFunctionKeys PROTO_XT_ACTIONS_ARGS;
-extern void HandleSunKeyboard PROTO_XT_ACTIONS_ARGS;
-extern void HandleTekCopy PROTO_XT_ACTIONS_ARGS;
-extern void HandleTekPage PROTO_XT_ACTIONS_ARGS;
-extern void HandleTekReset PROTO_XT_ACTIONS_ARGS;
-extern void HandleTiteInhibit PROTO_XT_ACTIONS_ARGS;
-extern void HandleToolbar PROTO_XT_ACTIONS_ARGS;
-extern void HandleUTF8Mode PROTO_XT_ACTIONS_ARGS;
-extern void HandleVisibility PROTO_XT_ACTIONS_ARGS;
-
-extern void DoSecureKeyboard (Time tp);
-extern void SetupMenus (Widget shell, Widget *forms, Widget *menus);
-
-#if OPT_TOOLBAR
-extern void ShowToolbar(Bool);
-#endif
-
-/*
- * The following definitions MUST match the order of entries given in
- * the mainMenuEntries, vtMenuEntries, and tekMenuEntries arrays in menu.c.
- */
-
-/*
- * items in primary menu
- */
-typedef enum {
-#if OPT_TOOLBAR
- mainMenu_toolbar,
-#endif
- mainMenu_securekbd,
- mainMenu_allowsends,
- mainMenu_redraw,
- mainMenu_line1,
-#ifdef ALLOWLOGGING
- mainMenu_logging,
-#endif
- mainMenu_print,
- mainMenu_print_redir,
- mainMenu_line2,
- mainMenu_8bit_ctrl,
- mainMenu_backarrow,
-#if OPT_NUM_LOCK
- mainMenu_num_lock,
- mainMenu_alt_esc,
- mainMenu_meta_esc,
-#endif
- mainMenu_delete_del,
- mainMenu_old_fkeys,
-#if OPT_HP_FUNC_KEYS
- mainMenu_hp_fkeys,
-#endif
-#if OPT_SCO_FUNC_KEYS
- mainMenu_sco_fkeys,
-#endif
- mainMenu_sun_fkeys,
-#if OPT_SUNPC_KBD
- mainMenu_sun_kbd,
-#endif
- mainMenu_line3,
- mainMenu_suspend,
- mainMenu_continue,
- mainMenu_interrupt,
- mainMenu_hangup,
- mainMenu_terminate,
- mainMenu_kill,
- mainMenu_line4,
- mainMenu_quit,
- mainMenu_LAST
-} mainMenuIndices;
-
-
-/*
- * items in vt100 mode menu
- */
-typedef enum {
- vtMenu_scrollbar,
- vtMenu_jumpscroll,
- vtMenu_reversevideo,
- vtMenu_autowrap,
- vtMenu_reversewrap,
- vtMenu_autolinefeed,
- vtMenu_appcursor,
- vtMenu_appkeypad,
- vtMenu_scrollkey,
- vtMenu_scrollttyoutput,
- vtMenu_allow132,
- vtMenu_cursesemul,
- vtMenu_visualbell,
- vtMenu_poponbell,
- vtMenu_marginbell,
-#if OPT_BLINK_CURS
- vtMenu_cursorblink,
-#endif
- vtMenu_titeInhibit,
-#ifndef NO_ACTIVE_ICON
- vtMenu_activeicon,
-#endif /* NO_ACTIVE_ICON */
- vtMenu_line1,
- vtMenu_softreset,
- vtMenu_hardreset,
- vtMenu_clearsavedlines,
- vtMenu_line2,
-#if OPT_TEK4014
- vtMenu_tekshow,
- vtMenu_tekmode,
- vtMenu_vthide,
-#endif
- vtMenu_altscreen,
- vtMenu_LAST
-} vtMenuIndices;
-
-/*
- * items in vt100 font menu
- */
-typedef enum {
- fontMenu_fontdefault,
- fontMenu_font1,
- fontMenu_font2,
- fontMenu_font3,
- fontMenu_font4,
- fontMenu_font5,
- fontMenu_font6,
-#define fontMenu_lastBuiltin fontMenu_font6
- fontMenu_fontescape,
- fontMenu_fontsel,
-/* number of non-line items down to here should match NMENUFONTS in ptyx.h */
-
-#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT
- fontMenu_line1,
-#if OPT_BOX_CHARS
- fontMenu_font_boxchars,
-#endif
-#if OPT_DEC_CHRSET
- fontMenu_font_doublesize,
-#endif
-#if OPT_DEC_SOFTFONT
- fontMenu_font_loadable,
-#endif
-#endif
-
-#if OPT_RENDERFONT || OPT_WIDE_CHARS
- fontMenu_line2,
-#if OPT_RENDERFONT
- fontMenu_render_font,
-#endif
-#if OPT_WIDE_CHARS
- fontMenu_wide_chars,
-#endif
-#endif
-
- fontMenu_LAST
-} fontMenuIndices;
-
-
-/*
- * items in tek4014 mode menu
- */
-#if OPT_TEK4014
-typedef enum {
- tekMenu_tektextlarge,
- tekMenu_tektext2,
- tekMenu_tektext3,
- tekMenu_tektextsmall,
- tekMenu_line1,
- tekMenu_tekpage,
- tekMenu_tekreset,
- tekMenu_tekcopy,
- tekMenu_line2,
- tekMenu_vtshow,
- tekMenu_vtmode,
- tekMenu_tekhide,
- tekMenu_LAST
-} tekMenuIndices;
-#endif
-
-
-/*
- * macros for updating menus
- */
-
-#define update_menu_item(w,mi,val) UpdateMenuItem(mi,val)
-extern void UpdateMenuItem(Widget mi, XtArgVal val);
-
-#define set_sensitivity(w,mi,val) SetItemSensitivity(mi,val)
-extern void SetItemSensitivity(Widget mi, XtArgVal val);
-
-/*
- * there should be one of each of the following for each checkable item
- */
-#if OPT_TOOLBAR
-extern void update_toolbar(void);
-#else
-#define update_toolbar() /* nothing */
-#endif
-
-extern void update_securekbd(void);
-extern void update_allowsends(void);
-
-#ifdef ALLOWLOGGING
-extern void update_logging(void);
-#else
-#define update_logging() /*nothing*/
-#endif
-
-extern void update_print_redir(void);
-extern void update_8bit_control(void);
-extern void update_decbkm(void);
-
-#if OPT_NUM_LOCK
-extern void update_num_lock(void);
-extern void update_alt_esc(void);
-extern void update_meta_esc(void);
-#else
-#define update_num_lock() /*nothing*/
-#define update_alt_esc() /*nothing*/
-#define update_meta_esc() /*nothing*/
-#endif
-
-extern void update_sun_fkeys(void);
-extern void update_old_fkeys(void);
-extern void update_delete_del(void);
-
-#if OPT_SUNPC_KBD
-extern void update_sun_kbd(void);
-#endif
-
-#if OPT_HP_FUNC_KEYS
-extern void update_hp_fkeys(void);
-#else
-#define update_hp_fkeys() /*nothing*/
-#endif
-
-#if OPT_SCO_FUNC_KEYS
-extern void update_sco_fkeys(void);
-#else
-#define update_sco_fkeys() /*nothing*/
-#endif
-
-extern void update_scrollbar(void);
-extern void update_jumpscroll(void);
-extern void update_reversevideo(void);
-extern void update_autowrap(void);
-extern void update_reversewrap(void);
-extern void update_autolinefeed(void);
-extern void update_appcursor(void);
-extern void update_appkeypad(void);
-extern void update_scrollkey(void);
-extern void update_scrollttyoutput(void);
-extern void update_allow132(void);
-extern void update_cursesemul(void);
-extern void update_visualbell(void);
-extern void update_poponbell(void);
-extern void update_marginbell(void);
-
-#if OPT_BLINK_CURS
-extern void update_cursorblink(void);
-#else
-#define update_cursorblink() /* nothing */
-#endif
-
-extern void update_altscreen(void);
-extern void update_titeInhibit(void);
-
-#ifndef NO_ACTIVE_ICON
-extern void update_activeicon(void);
-#endif /* NO_ACTIVE_ICON */
-
-#if OPT_DEC_CHRSET
-extern void update_font_doublesize(void);
-#else
-#define update_font_doublesize() /* nothing */
-#endif
-
-#if OPT_BOX_CHARS
-extern void update_font_boxchars(void);
-#else
-#define update_font_boxchars() /* nothing */
-#endif
-
-#if OPT_DEC_SOFTFONT
-extern void update_font_loadable(void);
-#else
-#define update_font_loadable() /* nothing */
-#endif
-
-#if OPT_RENDERFONT
-extern void update_font_renderfont(void);
-#else
-#define update_font_renderfont() /* nothing */
-#endif
-
-#if OPT_WIDE_CHARS
-extern void update_font_utf8_mode(void);
-#else
-#define update_font_utf8_mode() /* nothing */
-#endif
-
-#if OPT_TEK4014
-extern void update_tekshow(void);
-extern void update_vttekmode(void);
-extern void update_vtshow(void);
-extern void set_vthide_sensitivity(void);
-extern void set_tekhide_sensitivity(void);
-#else
-#define update_tekshow() /*nothing*/
-#define update_vttekmode() /*nothing*/
-#define update_vtshow() /*nothing*/
-#define set_vthide_sensitivity() /*nothing*/
-#define set_tekhide_sensitivity() /*nothing*/
-#endif
-
-/*
- * macros for mapping font size to tekMenu placement
- */
-#define FS2MI(n) (n) /* font_size_to_menu_item */
-#define MI2FS(n) (n) /* menu_item_to_font_size */
-
-#if OPT_TEK4014
-extern void set_tekfont_menu_item(int n,int val);
-#else
-#define set_tekfont_menu_item(n,val) /*nothing*/
-#endif
-
-extern void set_menu_font(int val);
-
-#endif /*included_menu_h*/
diff --git a/nx-X11/programs/xterm/minstall.sh b/nx-X11/programs/xterm/minstall.sh
deleted file mode 100644
index 1271ad3c0..000000000
--- a/nx-X11/programs/xterm/minstall.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-# $XFree86: xc/programs/xterm/minstall.sh,v 1.4 2002/12/27 21:05:22 dickey Exp $
-#
-# Install manpages, substituting a reasonable section value since XFree86 4.x
-# doesn't use constants...
-#
-# Parameters:
-# $1 = program to invoke as "install"
-# $2 = manpage to install
-# $3 = final installed-path
-#
-
-MINSTALL="$1"
-OLD_FILE="$2"
-END_FILE="$3"
-
-suffix=`echo "$END_FILE" | sed -e 's%^[^.]*.%%'`
-NEW_FILE=temp$$
-
-sed -e 's%__vendorversion__%"X Window System"%' \
- -e s%__apploaddir__%/usr/lib/X11/app-defaults% \
- -e s%__mansuffix__%$suffix%g \
- -e s%__miscmansuffix__%$suffix%g \
- $OLD_FILE >$NEW_FILE
-
-echo "$MINSTALL $OLD_FILE $END_FILE"
-eval "$MINSTALL $NEW_FILE $END_FILE"
-
-rm -f $NEW_FILE
diff --git a/nx-X11/programs/xterm/misc.c b/nx-X11/programs/xterm/misc.c
deleted file mode 100644
index 447e4c058..000000000
--- a/nx-X11/programs/xterm/misc.c
+++ /dev/null
@@ -1,3260 +0,0 @@
-/* $XTermId: misc.c,v 1.280 2005/11/03 13:17:28 tom Exp $ */
-
-/*
- * $Xorg: misc.c,v 1.3 2000/08/17 19:55:09 cpqbld Exp $
- */
-
-/* $XFree86: xc/programs/xterm/misc.c,v 3.101 2005/11/03 13:17:28 dickey Exp $ */
-
-/*
- *
- * Copyright 1999-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#include <version.h>
-#include <xterm.h>
-
-#include <sys/stat.h>
-#include <stdio.h>
-#include <signal.h>
-#include <ctype.h>
-#include <pwd.h>
-#include <sys/wait.h>
-
-#include <X11/Xatom.h>
-#include <X11/cursorfont.h>
-
-#include <X11/Xmu/Error.h>
-#include <X11/Xmu/SysUtil.h>
-#include <X11/Xmu/WinUtil.h>
-#if HAVE_X11_SUNKEYSYM_H
-#include <X11/Sunkeysym.h>
-#endif
-
-#ifdef HAVE_LANGINFO_CODESET
-#include <langinfo.h>
-#endif
-
-#include <data.h>
-#include <error.h>
-#include <menu.h>
-#include <fontutils.h>
-#include <xcharmouse.h>
-#include <xstrings.h>
-#include <VTparse.h>
-
-#include <assert.h>
-
-#if (XtSpecificationRelease < 6)
-#ifndef X_GETTIMEOFDAY
-#define X_GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *)0)
-#endif
-#endif
-
-#ifdef VMS
-#define XTERM_VMS_LOGFILE "SYS$SCRATCH:XTERM_LOG.TXT"
-#ifdef ALLOWLOGFILEEXEC
-#undef ALLOWLOGFILEEXEC
-#endif
-#endif /* VMS */
-
-#if OPT_TEK4014
-#define OUR_EVENT(event,Type) \
- (event.type == Type && \
- (event.xcrossing.window == XtWindow(XtParent(term)) || \
- (tekWidget && \
- event.xcrossing.window == XtWindow(XtParent(tekWidget)))))
-#else
-#define OUR_EVENT(event,Type) \
- (event.type == Type && \
- (event.xcrossing.window == XtWindow(XtParent(term))))
-#endif
-
-static Bool ChangeColorsRequest(XtermWidget pTerm, int start, char
- *names, int final);
-static void DoSpecialEnterNotify(XEnterWindowEvent * ev);
-static void DoSpecialLeaveNotify(XEnterWindowEvent * ev);
-static void selectwindow(TScreen * screen, int flag);
-static void unselectwindow(TScreen * screen, int flag);
-static void Sleep(int msec);
-
-void
-do_xevents(void)
-{
- TScreen *screen = &term->screen;
-
- if (XtAppPending(app_con)
- ||
-#if defined(VMS) || defined(__VMS)
- screen->display->qlen > 0
-#else
- GetBytesAvailable(ConnectionNumber(screen->display)) > 0
-#endif
- )
- xevents();
-}
-
-void
-xevents(void)
-{
- XEvent event;
- XtInputMask input_mask;
- TScreen *screen = &term->screen;
-
- if (need_cleanup)
- Cleanup(0);
-
- if (screen->scroll_amt)
- FlushScroll(screen);
- /*
- * process timeouts, relying on the fact that XtAppProcessEvent
- * will process the timeout and return without blockng on the
- * XEvent queue. Other sources i.e. the pty are handled elsewhere
- * with select().
- */
- while ((input_mask = XtAppPending(app_con)) & XtIMTimer)
- XtAppProcessEvent(app_con, XtIMTimer);
-#if OPT_SESSION_MGT
- /*
- * Session management events are alternative input events. Deal with
- * them in the same way.
- */
- while ((input_mask = XtAppPending(app_con)) & XtIMAlternateInput)
- XtAppProcessEvent(app_con, XtIMAlternateInput);
-#endif
-
- /*
- * If there's no XEvents, don't wait around...
- */
- if ((input_mask & XtIMXEvent) != XtIMXEvent)
- return;
- do {
- /*
- * This check makes xterm hang when in mouse hilite tracking mode.
- * We simply ignore all events except for those not passed down to
- * this function, e.g., those handled in in_put().
- */
- if (waitingForTrackInfo) {
- Sleep(10);
- return;
- }
- XtAppNextEvent(app_con, &event);
- /*
- * Hack to get around problems with the toolkit throwing away
- * eventing during the exclusive grab of the menu popup. By
- * looking at the event ourselves we make sure that we can
- * do the right thing.
- */
- if (OUR_EVENT(event, EnterNotify))
- DoSpecialEnterNotify(&event.xcrossing);
- else if (OUR_EVENT(event, LeaveNotify))
- DoSpecialLeaveNotify(&event.xcrossing);
- else if ((screen->send_mouse_pos == ANY_EVENT_MOUSE
-#if OPT_DEC_LOCATOR
- || screen->send_mouse_pos == DEC_LOCATOR
-#endif /* OPT_DEC_LOCATOR */
- )
- && event.xany.type == MotionNotify
- && event.xcrossing.window == XtWindow(term)) {
- SendMousePosition((Widget) term, &event);
- continue;
- }
-
- if (!event.xany.send_event ||
- screen->allowSendEvents ||
- ((event.xany.type != KeyPress) &&
- (event.xany.type != KeyRelease) &&
- (event.xany.type != ButtonPress) &&
- (event.xany.type != ButtonRelease)))
- XtDispatchEvent(&event);
- } while ((input_mask = XtAppPending(app_con)) & XtIMXEvent);
-}
-
-Cursor
-make_colored_cursor(unsigned cursorindex, /* index into font */
- unsigned long fg, /* pixel value */
- unsigned long bg) /* pixel value */
-{
- TScreen *screen = &term->screen;
- Cursor c;
- Display *dpy = screen->display;
-
- c = XCreateFontCursor(dpy, cursorindex);
- if (c == (Cursor) 0)
- return (c);
-
- recolor_cursor(c, fg, bg);
- return (c);
-}
-
-/* ARGSUSED */
-void
-HandleKeyPressed(Widget w GCC_UNUSED,
- XEvent * event,
- String * params GCC_UNUSED,
- Cardinal *nparams GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("Handle 7bit-key\n"));
-#ifdef ACTIVEWINDOWINPUTONLY
- if (w == CURRENT_EMU(screen))
-#endif
- Input(&term->keyboard, screen, &event->xkey, False);
-}
-
-/* ARGSUSED */
-void
-HandleEightBitKeyPressed(Widget w GCC_UNUSED,
- XEvent * event,
- String * params GCC_UNUSED,
- Cardinal *nparams GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("Handle 8bit-key\n"));
-#ifdef ACTIVEWINDOWINPUTONLY
- if (w == CURRENT_EMU(screen))
-#endif
- Input(&term->keyboard, screen, &event->xkey, True);
-}
-
-/* ARGSUSED */
-void
-HandleStringEvent(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *nparams)
-{
- TScreen *screen = &term->screen;
-
-#ifdef ACTIVEWINDOWINPUTONLY
- if (w != CURRENT_EMU(screen))
- return;
-#endif
-
- if (*nparams != 1)
- return;
-
- if ((*params)[0] == '0' && (*params)[1] == 'x' && (*params)[2] != '\0') {
- Char c, *p;
- Char hexval[2];
- hexval[0] = hexval[1] = 0;
- for (p = (Char *) (*params + 2); (c = *p); p++) {
- hexval[0] *= 16;
- if (isupper(c))
- c = tolower(c);
- if (c >= '0' && c <= '9')
- hexval[0] += c - '0';
- else if (c >= 'a' && c <= 'f')
- hexval[0] += c - 'a' + 10;
- else
- break;
- }
- if (c == '\0')
- StringInput(screen, hexval, 1);
- } else {
- StringInput(screen, (Char *) * params, strlen(*params));
- }
-}
-
-/*
- * Rather than sending characters to the host, put them directly into our
- * input queue. That lets a user have access to any of the control sequences
- * for a key binding. This is the equivalent of local function key support.
- *
- * NOTE: This code does not support the hexadecimal kludge used in
- * HandleStringEvent because it prevents us from sending an arbitrary string
- * (but it appears in a lot of examples - so we are stuck with it). The
- * standard string converter does recognize "\" for newline ("\n") and for
- * octal constants (e.g., "\007" for BEL). So we assume the user can make do
- * without a specialized converter. (Don't try to use \000, though).
- */
-/* ARGSUSED */
-void
-HandleInterpret(Widget w GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *param_count)
-{
- if (*param_count == 1) {
- char *value = params[0];
- int need = strlen(value);
- int used = VTbuffer->next - VTbuffer->buffer;
- int have = VTbuffer->last - VTbuffer->buffer;
-
- if (have - used + need < BUF_SIZE) {
-
- fillPtyData(&term->screen, VTbuffer, value, (int) strlen(value));
-
- TRACE(("Interpret %s\n", value));
- VTbuffer->update++;
- }
- }
-}
-
-static void
-DoSpecialEnterNotify(XEnterWindowEvent * ev)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("DoSpecialEnterNotify(%d)\n", screen->select));
-#ifdef ACTIVEWINDOWINPUTONLY
- if (ev->window == XtWindow(XtParent(CURRENT_EMU(screen))))
-#endif
- if (((ev->detail) != NotifyInferior) &&
- ev->focus &&
- !(screen->select & FOCUS))
- selectwindow(screen, INWINDOW);
-}
-
-/*ARGSUSED*/
-void
-HandleEnterWindow(Widget w GCC_UNUSED,
- XtPointer eventdata GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- Boolean * cont GCC_UNUSED)
-{
- /* NOP since we handled it above */
- TRACE(("HandleEnterWindow ignored\n"));
-}
-
-static void
-DoSpecialLeaveNotify(XEnterWindowEvent * ev)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("DoSpecialLeaveNotify(%d)\n", screen->select));
-#ifdef ACTIVEWINDOWINPUTONLY
- if (ev->window == XtWindow(XtParent(CURRENT_EMU(screen))))
-#endif
- if (((ev->detail) != NotifyInferior) &&
- ev->focus &&
- !(screen->select & FOCUS))
- unselectwindow(screen, INWINDOW);
-}
-
-/*ARGSUSED*/
-void
-HandleLeaveWindow(Widget w GCC_UNUSED,
- XtPointer eventdata GCC_UNUSED,
- XEvent * event GCC_UNUSED,
- Boolean * cont GCC_UNUSED)
-{
- /* NOP since we handled it above */
- TRACE(("HandleLeaveWindow ignored\n"));
-}
-
-/*ARGSUSED*/
-void
-HandleFocusChange(Widget w GCC_UNUSED,
- XtPointer eventdata GCC_UNUSED,
- XEvent * ev,
- Boolean * cont GCC_UNUSED)
-{
- XFocusChangeEvent *event = (XFocusChangeEvent *) ev;
- TScreen *screen = &term->screen;
-
- TRACE(("HandleFocusChange type=%d, mode=%d, detail=%d\n",
- event->type,
- event->mode,
- event->detail));
-
- if (event->type == FocusIn) {
- /*
- * NotifyNonlinear only happens (on FocusIn) if the pointer was not in
- * one of our windows. Use this to reset a case where one xterm is
- * partly obscuring another, and X gets (us) confused about whether the
- * pointer was in the window. In particular, this can happen if the
- * user is resizing the obscuring window, causing some events to not be
- * delivered to the obscured window.
- */
- if (event->detail == NotifyNonlinear
- && (screen->select & INWINDOW) != 0) {
- unselectwindow(screen, INWINDOW);
- }
- selectwindow(screen,
- ((event->detail == NotifyPointer)
- ? INWINDOW
- : FOCUS));
- } else {
- /*
- * XGrabKeyboard() will generate FocusOut/NotifyGrab event that we want
- * to ignore.
- */
- if (event->mode != NotifyGrab) {
- unselectwindow(screen,
- ((event->detail == NotifyPointer)
- ? INWINDOW
- : FOCUS));
- }
- if (screen->grabbedKbd && (event->mode == NotifyUngrab)) {
- Bell(XkbBI_Info, 100);
- ReverseVideo(term);
- screen->grabbedKbd = False;
- update_securekbd();
- }
- }
-}
-
-static void
-selectwindow(TScreen * screen, int flag)
-{
- TRACE(("selectwindow(%d) flag=%d\n", screen->select, flag));
-
-#if OPT_TEK4014
- if (screen->TekEmu) {
- if (!Ttoggled)
- TCursorToggle(TOGGLE);
- screen->select |= flag;
- if (!Ttoggled)
- TCursorToggle(TOGGLE);
- return;
- } else
-#endif
- {
- if (screen->xic)
- XSetICFocus(screen->xic);
-
- if (screen->cursor_state && CursorMoved(screen))
- HideCursor();
- screen->select |= flag;
- if (screen->cursor_state)
- ShowCursor();
- return;
- }
-}
-
-static void
-unselectwindow(TScreen * screen, int flag)
-{
- TRACE(("unselectwindow(%d) flag=%d\n", screen->select, flag));
-
- if (screen->always_highlight)
- return;
-
-#if OPT_TEK4014
- if (screen->TekEmu) {
- if (!Ttoggled)
- TCursorToggle(TOGGLE);
- screen->select &= ~flag;
- if (!Ttoggled)
- TCursorToggle(TOGGLE);
- } else
-#endif
- {
- if (screen->xic)
- XUnsetICFocus(screen->xic);
- screen->select &= ~flag;
- if (screen->cursor_state && CursorMoved(screen))
- HideCursor();
- if (screen->cursor_state)
- ShowCursor();
- }
-}
-
-static long lastBellTime; /* in milliseconds */
-
-void
-Bell(int which GCC_UNUSED, int percent)
-{
- TScreen *screen = &term->screen;
- struct timeval curtime;
- long now_msecs;
-
- TRACE(("BELL %d\n", percent));
-
- /* has enough time gone by that we are allowed to ring
- the bell again? */
- if (screen->bellSuppressTime) {
- if (screen->bellInProgress) {
- do_xevents();
- if (screen->bellInProgress) { /* even after new events? */
- return;
- }
- }
- X_GETTIMEOFDAY(&curtime);
- now_msecs = 1000 * curtime.tv_sec + curtime.tv_usec / 1000;
- if (lastBellTime != 0 && now_msecs - lastBellTime >= 0 &&
- now_msecs - lastBellTime < screen->bellSuppressTime) {
- return;
- }
- lastBellTime = now_msecs;
- }
-
- if (screen->visualbell) {
- VisualBell();
- } else {
-#if defined(HAVE_XKBBELL)
- XkbBell(screen->display, VShellWindow, percent, which);
-#else
- XBell(screen->display, percent);
-#endif
- }
-
- if (screen->poponbell)
- XRaiseWindow(screen->display, VShellWindow);
-
- if (screen->bellSuppressTime) {
- /* now we change a property and wait for the notify event to come
- back. If the server is suspending operations while the bell
- is being emitted (problematic for audio bell), this lets us
- know when the previous bell has finished */
- Widget w = CURRENT_EMU(screen);
- XChangeProperty(XtDisplay(w), XtWindow(w),
- XA_NOTICE, XA_NOTICE, 8, PropModeAppend, NULL, 0);
- screen->bellInProgress = True;
- }
-}
-
-#define VB_DELAY screen->visualBellDelay
-
-static void
-flashWindow(TScreen * screen, Window window, GC visualGC, unsigned width, unsigned height)
-{
- XFillRectangle(screen->display, window, visualGC, 0, 0, width, height);
- XFlush(screen->display);
- Sleep(VB_DELAY);
- XFillRectangle(screen->display, window, visualGC, 0, 0, width, height);
-}
-
-void
-VisualBell(void)
-{
- TScreen *screen = &term->screen;
-
- if (VB_DELAY > 0) {
- Pixel xorPixel = (T_COLOR(screen, TEXT_FG) ^
- T_COLOR(screen, TEXT_BG));
- XGCValues gcval;
- GC visualGC;
-
- gcval.function = GXxor;
- gcval.foreground = xorPixel;
- visualGC = XtGetGC((Widget) term, GCFunction + GCForeground, &gcval);
-#if OPT_TEK4014
- if (screen->TekEmu) {
- flashWindow(screen, TWindow(screen), visualGC,
- TFullWidth(screen),
- TFullHeight(screen));
- } else
-#endif
- {
- flashWindow(screen, VWindow(screen), visualGC,
- FullWidth(screen),
- FullHeight(screen));
- }
- XtReleaseGC((Widget) term, visualGC);
- }
-}
-
-/* ARGSUSED */
-void
-HandleBellPropertyChange(Widget w GCC_UNUSED,
- XtPointer data GCC_UNUSED,
- XEvent * ev,
- Boolean * more GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
- if (ev->xproperty.atom == XA_NOTICE) {
- screen->bellInProgress = False;
- }
-}
-
-Window
-WMFrameWindow(XtermWidget termw)
-{
- Window win_root, win_current, *children;
- Window win_parent = 0;
- unsigned int nchildren;
-
- win_current = XtWindow(termw);
-
- /* find the parent which is child of root */
- do {
- if (win_parent)
- win_current = win_parent;
- XQueryTree((&termw->screen)->display,
- win_current,
- &win_root,
- &win_parent,
- &children,
- &nchildren);
- XFree(children);
- } while (win_root != win_parent);
-
- return win_current;
-}
-
-#if OPT_DABBREV
-/*
- * The following code implements `dynamic abbreviation' expansion a la
- * Emacs. It looks in the preceding visible screen and its scrollback
- * to find expansions of a typed word. It compares consecutive
- * expansions and ignores one of them if they are identical.
- * (Tomasz J. Cholewo, t.cholewo@ieee.org)
- */
-
-#define IS_WORD_CONSTITUENT(x) ((x) != ' ' && (x) != '\0')
-#define MAXWLEN 1024 /* maximum word length as in tcsh */
-
-static int
-dabbrev_prev_char(int *xp, int *yp, TScreen * screen)
-{
- Char *linep;
-
- while (*yp >= 0) {
- linep = BUF_CHARS(screen->allbuf, *yp);
- if (--*xp >= 0)
- return linep[*xp];
- if (--*yp < 0) /* go to previous line */
- break;
- *xp = MaxCols(screen);
- if (!((long) BUF_FLAGS(screen->allbuf, *yp) & LINEWRAPPED))
- return ' '; /* treat lines as separate */
- }
- return -1;
-}
-
-static char *
-dabbrev_prev_word(int *xp, int *yp, TScreen * screen)
-{
- static char ab[MAXWLEN];
- char *abword;
- int c;
-
- abword = ab + MAXWLEN - 1;
- *abword = '\0'; /* end of string marker */
-
- while ((c = dabbrev_prev_char(xp, yp, screen)) >= 0 &&
- IS_WORD_CONSTITUENT(c))
- if (abword > ab) /* store only |MAXWLEN| last chars */
- *(--abword) = c;
- if (c < 0) {
- if (abword < ab + MAXWLEN - 1)
- return abword;
- else
- return 0;
- }
-
- while ((c = dabbrev_prev_char(xp, yp, screen)) >= 0 &&
- !IS_WORD_CONSTITUENT(c)) ; /* skip preceding spaces */
- (*xp)++; /* can be | > screen->max_col| */
- return abword;
-}
-
-static int
-dabbrev_expand(TScreen * screen)
-{
- int pty = screen->respond; /* file descriptor of pty */
-
- static int x, y;
- static char *dabbrev_hint = 0, *lastexpansion = 0;
-
- char *expansion;
- Char *copybuffer;
- size_t hint_len;
- unsigned i;
- unsigned del_cnt;
- unsigned buf_cnt;
-
- if (!screen->dabbrev_working) { /* initialize */
- x = screen->cur_col;
- y = screen->cur_row + screen->savelines;
-
- free(dabbrev_hint); /* free(NULL) is OK */
- dabbrev_hint = dabbrev_prev_word(&x, &y, screen);
- if (!dabbrev_hint)
- return 0; /* no preceding word? */
- free(lastexpansion);
- if (!(lastexpansion = strdup(dabbrev_hint))) /* make own copy */
- return 0;
- if (!(dabbrev_hint = strdup(dabbrev_hint))) {
- free(lastexpansion);
- return 0;
- }
- screen->dabbrev_working = 1; /* we are in the middle of dabbrev process */
- }
-
- hint_len = strlen(dabbrev_hint);
- while ((expansion = dabbrev_prev_word(&x, &y, screen))) {
- if (!strncmp(dabbrev_hint, expansion, hint_len) && /* empty hint matches everything */
- strlen(expansion) > hint_len && /* trivial expansion disallowed */
- strcmp(expansion, lastexpansion)) /* different from previous */
- break;
- }
- if (!expansion) /* no expansion found */
- return 0;
-
- del_cnt = strlen(lastexpansion) - hint_len;
- buf_cnt = del_cnt + strlen(expansion) - hint_len;
- if (!(copybuffer = TypeMallocN(Char, buf_cnt)))
- return 0;
- for (i = 0; i < del_cnt; i++) { /* delete previous expansion */
- copybuffer[i] = screen->dabbrev_erase_char;
- }
- memmove(copybuffer + del_cnt,
- expansion + hint_len,
- strlen(expansion) - hint_len);
- v_write(pty, copybuffer, buf_cnt);
- screen->dabbrev_working = 1; /* v_write() just set it to 1 */
- free(copybuffer);
-
- free(lastexpansion);
- lastexpansion = strdup(expansion);
- if (!lastexpansion)
- return 0;
- return 1;
-}
-
-/*ARGSUSED*/
-void
-HandleDabbrevExpand(Widget gw,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *nparams GCC_UNUSED)
-{
- XtermWidget w = (XtermWidget) gw;
- TScreen *screen = &w->screen;
- if (!dabbrev_expand(screen))
- Bell(XkbBI_TerminalBell, 0);
-}
-#endif /* OPT_DABBREV */
-
-#if OPT_MAXIMIZE
-/*ARGSUSED*/
-void
-HandleDeIconify(Widget gw,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *nparams GCC_UNUSED)
-{
- if (IsXtermWidget(gw)) {
- TScreen *screen = &((XtermWidget) gw)->screen;
- XMapWindow(screen->display, VShellWindow);
- }
-}
-
-/*ARGSUSED*/
-void
-HandleIconify(Widget gw,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *nparams GCC_UNUSED)
-{
- if (IsXtermWidget(gw)) {
- TScreen *screen = &((XtermWidget) gw)->screen;
- XIconifyWindow(screen->display,
- VShellWindow,
- DefaultScreen(screen->display));
- }
-}
-
-int
-QueryMaximize(XtermWidget termw, unsigned *width, unsigned *height)
-{
- TScreen *screen = &termw->screen;
- XSizeHints hints;
- long supp = 0;
- Window root_win;
- int root_x = -1; /* saved co-ordinates */
- int root_y = -1;
- unsigned root_border;
- unsigned root_depth;
-
- if (XGetGeometry(screen->display,
- RootWindowOfScreen(XtScreen(termw)),
- &root_win,
- &root_x,
- &root_y,
- width,
- height,
- &root_border,
- &root_depth)) {
- TRACE(("QueryMaximize: XGetGeometry position %d,%d size %d,%d border %d\n",
- root_x,
- root_y,
- *width,
- *height,
- root_border));
-
- *width -= (root_border * 2);
- *height -= (root_border * 2);
-
- hints.flags = PMaxSize;
- if (XGetWMNormalHints(screen->display,
- VShellWindow,
- &hints,
- &supp)
- && (hints.flags & PMaxSize) != 0) {
-
- TRACE(("QueryMaximize: WM hints max_w %#x max_h %#x\n",
- hints.max_width,
- hints.max_height));
-
- if ((unsigned) hints.max_width < *width)
- *width = hints.max_width;
- if ((unsigned) hints.max_height < *height)
- *height = hints.max_height;
- }
- return 1;
- }
- return 0;
-}
-
-void
-RequestMaximize(XtermWidget termw, int maximize)
-{
- TScreen *screen = &termw->screen;
- XWindowAttributes wm_attrs, vshell_attrs;
- unsigned root_width, root_height;
-
- if (maximize) {
-
- if (QueryMaximize(termw, &root_width, &root_height)) {
-
- if (XGetWindowAttributes(screen->display,
- WMFrameWindow(termw),
- &wm_attrs)) {
-
- if (XGetWindowAttributes(screen->display,
- VShellWindow,
- &vshell_attrs)) {
-
- if (screen->restore_data != True
- || screen->restore_width != root_width
- || screen->restore_height != root_height) {
- screen->restore_data = True;
- screen->restore_x = wm_attrs.x + wm_attrs.border_width;
- screen->restore_y = wm_attrs.y + wm_attrs.border_width;
- screen->restore_width = vshell_attrs.width;
- screen->restore_height = vshell_attrs.height;
- TRACE(("HandleMaximize: save window position %d,%d size %d,%d\n",
- screen->restore_x,
- screen->restore_y,
- screen->restore_width,
- screen->restore_height));
- }
-
- /* subtract wm decoration dimensions */
- root_width -= ((wm_attrs.width - vshell_attrs.width)
- + (wm_attrs.border_width * 2));
- root_height -= ((wm_attrs.height - vshell_attrs.height)
- + (wm_attrs.border_width * 2));
-
- XMoveResizeWindow(screen->display, VShellWindow,
- 0 + wm_attrs.border_width, /* x */
- 0 + wm_attrs.border_width, /* y */
- root_width,
- root_height);
- }
- }
- }
- } else {
- if (screen->restore_data) {
- TRACE(("HandleRestoreSize: position %d,%d size %d,%d\n",
- screen->restore_x,
- screen->restore_y,
- screen->restore_width,
- screen->restore_height));
- screen->restore_data = False;
-
- XMoveResizeWindow(screen->display,
- VShellWindow,
- screen->restore_x,
- screen->restore_y,
- screen->restore_width,
- screen->restore_height);
- }
- }
-}
-
-/*ARGSUSED*/
-void
-HandleMaximize(Widget gw,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *nparams GCC_UNUSED)
-{
- if (IsXtermWidget(gw)) {
- RequestMaximize((XtermWidget) gw, 1);
- }
-}
-
-/*ARGSUSED*/
-void
-HandleRestoreSize(Widget gw,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *nparams GCC_UNUSED)
-{
- if (IsXtermWidget(gw)) {
- RequestMaximize((XtermWidget) gw, 0);
- }
-}
-#endif /* OPT_MAXIMIZE */
-
-void
-Redraw(void)
-{
- TScreen *screen = &term->screen;
- XExposeEvent event;
-
- event.type = Expose;
- event.display = screen->display;
- event.x = 0;
- event.y = 0;
- event.count = 0;
-
- if (VWindow(screen)) {
- event.window = VWindow(screen);
- event.width = term->core.width;
- event.height = term->core.height;
- (*term->core.widget_class->core_class.expose) ((Widget) term,
- (XEvent *) & event,
- NULL);
- if (ScrollbarWidth(screen)) {
- (screen->scrollWidget->core.widget_class->core_class.expose)
- (screen->scrollWidget, (XEvent *) & event, NULL);
- }
- }
-#if OPT_TEK4014
- if (TWindow(screen) && screen->Tshow) {
- event.window = TWindow(screen);
- event.width = tekWidget->core.width;
- event.height = tekWidget->core.height;
- TekExpose((Widget) tekWidget, (XEvent *) & event, NULL);
- }
-#endif
-}
-
-#ifdef VMS
-#define TIMESTAMP_FMT "%s%d-%02d-%02d-%02d-%02d-%02d"
-#else
-#define TIMESTAMP_FMT "%s%d-%02d-%02d.%02d:%02d:%02d"
-#endif
-
-void
-timestamp_filename(char *dst, const char *src)
-{
- time_t tstamp;
- struct tm *tstruct;
-
- time(&tstamp);
- tstruct = localtime(&tstamp);
- sprintf(dst, TIMESTAMP_FMT,
- src,
- tstruct->tm_year + 1900,
- tstruct->tm_mon + 1,
- tstruct->tm_mday,
- tstruct->tm_hour,
- tstruct->tm_min,
- tstruct->tm_sec);
-}
-
-int
-open_userfile(uid_t uid, gid_t gid, char *path, Bool append)
-{
- int fd;
- struct stat sb;
-
-#ifdef VMS
- if ((fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644)) < 0) {
- int the_error = errno;
- fprintf(stderr, "%s: cannot open %s: %d:%s\n",
- xterm_name,
- path,
- the_error,
- SysErrorMsg(the_error));
- return -1;
- }
- chown(path, uid, gid);
-#else
- if ((access(path, F_OK) != 0 && (errno != ENOENT))
- || (!(creat_as(uid, gid, append, path, 0644)))
- || ((fd = open(path, O_WRONLY | O_APPEND)) < 0)) {
- int the_error = errno;
- fprintf(stderr, "%s: cannot open %s: %d:%s\n",
- xterm_name,
- path,
- the_error,
- SysErrorMsg(the_error));
- return -1;
- }
-#endif
-
- /*
- * Doublecheck that the user really owns the file that we've opened before
- * we do any damage, and that it is not world-writable.
- */
- if (fstat(fd, &sb) < 0
- || sb.st_uid != uid
- || (sb.st_mode & 022) != 0) {
- fprintf(stderr, "%s: you do not own %s\n", xterm_name, path);
- close(fd);
- return -1;
- }
- return fd;
-}
-
-#ifndef VMS
-/*
- * Create a file only if we could with the permissions of the real user id.
- * We could emulate this with careful use of access() and following
- * symbolic links, but that is messy and has race conditions.
- * Forking is messy, too, but we can't count on setreuid() or saved set-uids
- * being available.
- *
- * Note: When called for user logging, we have ensured that the real and
- * effective user ids are the same, so this remains as a convenience function
- * for the debug logs.
- *
- * Returns 1 if we can proceed to open the file in relative safety, 0
- * otherwise.
- */
-int
-creat_as(uid_t uid, gid_t gid, Bool append, char *pathname, int mode)
-{
- int fd;
- pid_t pid;
- int retval = 0;
- int childstat = 0;
-#ifndef HAVE_WAITPID
- int waited;
- SIGNAL_T(*chldfunc) (int);
-
- chldfunc = signal(SIGCHLD, SIG_DFL);
-#endif /* HAVE_WAITPID */
-
- TRACE(("creat_as(uid=%d/%d, gid=%d/%d, append=%d, pathname=%s, mode=%#o)\n",
- uid, geteuid(),
- gid, getegid(),
- append,
- pathname,
- mode));
-
- if (uid == geteuid() && gid == getegid()) {
- fd = open(pathname,
- O_WRONLY | O_CREAT | (append ? O_APPEND : O_EXCL),
- mode);
- if (fd >= 0)
- close(fd);
- return (fd >= 0);
- }
-
- pid = fork();
- switch (pid) {
- case 0: /* child */
- if (setgid(gid) == -1)
- _exit(ERROR_SETUID);
- if (setuid(uid) == -1)
- _exit(ERROR_SETUID);
- fd = open(pathname,
- O_WRONLY | O_CREAT | (append ? O_APPEND : O_EXCL),
- mode);
- if (fd >= 0) {
- close(fd);
- _exit(0);
- } else
- _exit(1);
- /* NOTREACHED */
- case -1: /* error */
- return retval;
- default: /* parent */
-#ifdef HAVE_WAITPID
- while (waitpid(pid, &childstat, 0) < 0) {
-#ifdef EINTR
- if (errno == EINTR)
- continue;
-#endif /* EINTR */
-#ifdef ERESTARTSYS
- if (errno == ERESTARTSYS)
- continue;
-#endif /* ERESTARTSYS */
- break;
- }
-#else /* HAVE_WAITPID */
- waited = wait(&childstat);
- signal(SIGCHLD, chldfunc);
- /*
- Since we had the signal handler uninstalled for a while,
- we might have missed the termination of our screen child.
- If we can check for this possibility without hanging, do so.
- */
- do
- if (waited == term->screen.pid)
- Cleanup(0);
- while ((waited = nonblocking_wait()) > 0) ;
-#endif /* HAVE_WAITPID */
-#ifndef WIFEXITED
-#define WIFEXITED(status) ((status & 0xff) != 0)
-#endif
- if (WIFEXITED(childstat))
- retval = 1;
- return retval;
- }
-}
-#endif /* !VMS */
-
-#ifdef ALLOWLOGGING
-
-/*
- * Logging is a security hole, since it allows a setuid program to write
- * arbitrary data to an arbitrary file. So it is disabled by default.
- */
-
-#ifdef ALLOWLOGFILEEXEC
-static SIGNAL_T
-logpipe(int sig GCC_UNUSED)
-{
- TScreen *screen = &term->screen;
-
-#ifdef SYSV
- (void) signal(SIGPIPE, SIG_IGN);
-#endif /* SYSV */
- if (screen->logging)
- CloseLog(screen);
-}
-#endif /* ALLOWLOGFILEEXEC */
-
-void
-StartLog(TScreen * screen)
-{
- static char *log_default;
-#ifdef ALLOWLOGFILEEXEC
- char *cp;
-#endif /* ALLOWLOGFILEEXEC */
-
- if (screen->logging || (screen->inhibit & I_LOG))
- return;
-#ifdef VMS /* file name is fixed in VMS variant */
- screen->logfd = open(XTERM_VMS_LOGFILE,
- O_CREAT | O_TRUNC | O_APPEND | O_RDWR,
- 0640);
- if (screen->logfd < 0)
- return; /* open failed */
-#else /*VMS */
- if (screen->logfile == NULL || *screen->logfile == 0) {
- if (screen->logfile)
- free(screen->logfile);
- if (log_default == NULL) {
-#if defined(HAVE_GETHOSTNAME) && defined(HAVE_STRFTIME)
- char log_def_name[512]; /* see sprintf below */
- char hostname[255 + 1]; /* Internet standard limit (RFC 1035):
- ``To simplify implementations, the
- total length of a domain name (i.e.,
- label octets and label length
- octets) is restricted to 255 octets
- or less.'' */
- char yyyy_mm_dd_hh_mm_ss[4 + 5 * (1 + 2) + 1];
- time_t now;
- struct tm *ltm;
-
- (void) time(&now);
- ltm = (struct tm *) localtime(&now);
- if ((gethostname(hostname, sizeof(hostname)) == 0) &&
- (strftime(yyyy_mm_dd_hh_mm_ss,
- sizeof(yyyy_mm_dd_hh_mm_ss),
- "%Y.%m.%d.%H.%M.%S", ltm) > 0)) {
- (void) sprintf(log_def_name, "Xterm.log.%.255s.%.20s.%d",
- hostname, yyyy_mm_dd_hh_mm_ss, getpid());
- }
- if ((log_default = x_strdup(log_def_name)) == NULL)
- return;
-#else
- const char *log_def_name = "XtermLog.XXXXXX";
- if ((log_default = x_strdup(log_def_name)) == NULL)
- return;
-
- mktemp(log_default);
-#endif
- }
- if ((screen->logfile = x_strdup(log_default)) == 0)
- return;
- }
- if (*screen->logfile == '|') { /* exec command */
-#ifdef ALLOWLOGFILEEXEC
- /*
- * Warning, enabling this "feature" allows arbitrary programs
- * to be run. If ALLOWLOGFILECHANGES is enabled, this can be
- * done through escape sequences.... You have been warned.
- */
- int pid;
- int p[2];
- static char *shell;
- struct passwd *pw;
-
- if (pipe(p) < 0 || (pid = fork()) < 0)
- return;
- if (pid == 0) { /* child */
- /*
- * Close our output (we won't be talking back to the
- * parent), and redirect our child's output to the
- * original stderr.
- */
- close(p[1]);
- dup2(p[0], 0);
- close(p[0]);
- dup2(fileno(stderr), 1);
- dup2(fileno(stderr), 2);
-
- close(fileno(stderr));
- close(ConnectionNumber(screen->display));
- close(screen->respond);
-
- if ((((cp = getenv("SHELL")) == NULL || *cp == 0)
- && ((pw = getpwuid(screen->uid)) == NULL
- || *(cp = pw->pw_shell) == 0))
- || (shell = CastMallocN(char, strlen(cp))) == 0) {
- shell = "/bin/sh";
- } else {
- strcpy(shell, cp);
- }
-
- signal(SIGHUP, SIG_DFL);
- signal(SIGCHLD, SIG_DFL);
-
- /* (this is redundant) */
- if (setgid(screen->gid) == -1)
- exit(ERROR_SETUID);
- if (setuid(screen->uid) == -1)
- exit(ERROR_SETUID);
-
- execl(shell, shell, "-c", &screen->logfile[1], (void *) 0);
-
- fprintf(stderr, "%s: Can't exec `%s'\n", xterm_name,
- &screen->logfile[1]);
- exit(ERROR_LOGEXEC);
- }
- close(p[0]);
- screen->logfd = p[1];
- signal(SIGPIPE, logpipe);
-#else
- Bell(XkbBI_Info, 0);
- Bell(XkbBI_Info, 0);
- return;
-#endif
- } else {
- if ((screen->logfd = open_userfile(screen->uid,
- screen->gid,
- screen->logfile,
- (log_default != 0))) < 0)
- return;
- }
-#endif /*VMS */
- screen->logstart = VTbuffer->next;
- screen->logging = True;
- update_logging();
-}
-
-void
-CloseLog(TScreen * screen)
-{
- if (!screen->logging || (screen->inhibit & I_LOG))
- return;
- FlushLog(screen);
- close(screen->logfd);
- screen->logging = False;
- update_logging();
-}
-
-void
-FlushLog(TScreen * screen)
-{
- if (screen->logging && !(screen->inhibit & I_LOG)) {
- Char *cp;
- int i;
-
-#ifdef VMS /* avoid logging output loops which otherwise occur sometimes
- when there is no output and cp/screen->logstart are 1 apart */
- if (!tt_new_output)
- return;
- tt_new_output = False;
-#endif /* VMS */
- cp = VTbuffer->next;
- if (screen->logstart != 0
- && (i = cp - screen->logstart) > 0) {
- write(screen->logfd, (char *) screen->logstart, (unsigned) i);
- }
- screen->logstart = VTbuffer->next;
- }
-}
-
-#endif /* ALLOWLOGGING */
-
-/***====================================================================***/
-
-#if OPT_ISO_COLORS
-static void
-ReportAnsiColorRequest(XtermWidget pTerm, int colornum, int final)
-{
- XColor color;
- Colormap cmap = pTerm->core.colormap;
- char buffer[80];
-
- TRACE(("ReportAnsiColorRequest %d\n", colornum));
- color.pixel = GET_COLOR_RES(pTerm->screen.Acolors[colornum]);
- XQueryColor(term->screen.display, cmap, &color);
- sprintf(buffer, "4;%d;rgb:%04x/%04x/%04x",
- colornum,
- color.red,
- color.green,
- color.blue);
- unparseputc1(OSC, pTerm->screen.respond);
- unparseputs(buffer, pTerm->screen.respond);
- unparseputc1(final, pTerm->screen.respond);
-}
-
-/*
-* Find closest color for "def" in "cmap".
-* Set "def" to the resulting color.
-* Based on Monish Shah's "find_closest_color()" for Vim 6.0,
-* modified with ideas from David Tong's "noflash" library.
-* Return False if not able to find or allocate a color.
-*/
-static int
-find_closest_color(Display * display, Colormap cmap, XColor * def)
-{
- double tmp, distance, closestDistance;
- int closest, numFound;
- XColor *colortable;
- XVisualInfo myTemplate, *visInfoPtr;
- char *found;
- unsigned i;
- unsigned cmap_size;
- unsigned attempts;
-
- myTemplate.visualid = XVisualIDFromVisual(DefaultVisual(display,
- XDefaultScreen(display)));
- visInfoPtr = XGetVisualInfo(display, (long) VisualIDMask,
- &myTemplate, &numFound);
- if (numFound < 1) {
- /* FindClosestColor couldn't lookup visual */
- return False;
- }
-
- cmap_size = visInfoPtr->colormap_size;
- XFree((char *) visInfoPtr);
- colortable = TypeMallocN(XColor, cmap_size);
- if (!colortable) {
- return False; /* out of memory */
- }
- found = TypeCallocN(char, cmap_size);
- if (!found) {
- free(colortable);
- return False; /* out of memory */
- }
-
- for (i = 0; i < cmap_size; i++) {
- colortable[i].pixel = (unsigned long) i;
- }
- XQueryColors(display, cmap, colortable, (int) cmap_size);
-
- /*
- * Find the color that best approximates the desired one, then
- * try to allocate that color. If that fails, it must mean that
- * the color was read-write (so we can't use it, since its owner
- * might change it) or else it was already freed. Try again,
- * over and over again, until something succeeds.
- */
- for (attempts = 0; attempts < cmap_size; attempts++) {
- closestDistance = 1e30;
- closest = 0;
- for (i = 0; i < cmap_size; i++) {
- if (!found[closest]) {
- /*
- * Use Euclidean distance in RGB space, weighted by Y (of YIQ)
- * as the objective function; this accounts for differences
- * in the color sensitivity of the eye.
- */
- tmp = .30 * (((int) def->red) - (int) colortable[i].red);
- distance = tmp * tmp;
- tmp = .61 * (((int) def->green) - (int) colortable[i].green);
- distance += tmp * tmp;
- tmp = .11 * (((int) def->blue) - (int) colortable[i].blue);
- distance += tmp * tmp;
- if (distance < closestDistance) {
- closest = i;
- closestDistance = distance;
- }
- }
- }
- if (XAllocColor(display, cmap, &colortable[closest]) != 0) {
- *def = colortable[closest];
- break;
- }
- found[closest] = True; /* Don't look at this entry again */
- }
-
- free(colortable);
- free(found);
- if (attempts < cmap_size) {
- return True; /* Got a closest matching color */
- } else {
- return False; /* Couldn't allocate a near match */
- }
-}
-
-static Bool
-AllocateAnsiColor(XtermWidget pTerm,
- ColorRes * res,
- char *spec)
-{
- XColor def;
- TScreen *screen = &pTerm->screen;
- Colormap cmap = pTerm->core.colormap;
-
- if (XParseColor(screen->display, cmap, spec, &def)
- && (XAllocColor(screen->display, cmap, &def)
- || find_closest_color(screen->display, cmap, &def))) {
- SET_COLOR_RES(res, def.pixel);
- TRACE(("AllocateAnsiColor[%d] %s (pixel %#lx)\n",
- (res - screen->Acolors), spec, def.pixel));
-#if OPT_COLOR_RES
- res->mode = True;
-#endif
- return (True);
- }
- TRACE(("AllocateAnsiColor %s (failed)\n", spec));
- return (False);
-}
-
-#if OPT_COLOR_RES
-Pixel
-xtermGetColorRes(ColorRes * res)
-{
- Pixel result = 0;
-
- if (res->mode) {
- result = res->value;
- } else {
- TRACE(("xtermGetColorRes for Acolors[%d]\n",
- res - term->screen.Acolors));
-
- if (res >= term->screen.Acolors) {
- assert(res - term->screen.Acolors < MAXCOLORS);
-
- if (!AllocateAnsiColor(term, res, res->resource)) {
- res->value = term->screen.Tcolors[TEXT_FG].value;
- res->mode = -True;
- fprintf(stderr,
- "%s: Cannot allocate color %s\n",
- xterm_name,
- NonNull(res->resource));
- }
- result = res->value;
- } else {
- result = 0;
- }
- }
- return result;
-}
-#endif
-
-static Bool
-ChangeAnsiColorRequest(XtermWidget pTerm,
- char *buf,
- int final)
-{
- char *name;
- int color;
- int r = False;
-
- TRACE(("ChangeAnsiColorRequest string='%s'\n", buf));
-
- while (buf && *buf) {
- name = strchr(buf, ';');
- if (name == NULL)
- break;
- *name = '\0';
- name++;
- color = atoi(buf);
- if (color < 0 || color >= NUM_ANSI_COLORS)
- break;
- buf = strchr(name, ';');
- if (buf) {
- *buf = '\0';
- buf++;
- }
- if (!strcmp(name, "?"))
- ReportAnsiColorRequest(pTerm, color, final);
- else {
- TRACE(("ChangeAnsiColor for Acolors[%d]\n", color));
- if (!AllocateAnsiColor(pTerm, &(pTerm->screen.Acolors[color]), name))
- break;
- /* FIXME: free old color somehow? We aren't for the other color
- * change style (dynamic colors).
- */
- r = True;
- }
- }
- if (r)
- ChangeAnsiColors(pTerm);
- return (r);
-}
-#else
-#define find_closest_color(display, cmap, def) 0
-#endif /* OPT_ISO_COLORS */
-
-#if OPT_PASTE64
-static void
-ManipulateSelectionData(TScreen * screen, char *buf, int final)
-{
-#define PDATA(a,b) { a, #b }
- static struct {
- char given;
- char *result;
- } table[] = {
- PDATA('p', PRIMARY),
- PDATA('c', CLIPBOARD),
- PDATA('0', CUT_BUFFER0),
- PDATA('1', CUT_BUFFER1),
- PDATA('2', CUT_BUFFER2),
- PDATA('3', CUT_BUFFER3),
- PDATA('4', CUT_BUFFER4),
- PDATA('5', CUT_BUFFER5),
- PDATA('6', CUT_BUFFER6),
- PDATA('7', CUT_BUFFER7),
- };
-
- char *base = buf;
- Cardinal j, n = 0;
- char **select_args = 0;
-
- TRACE(("Manipulate selection data\n"));
-
- while (*buf != ';' && *buf != '\0') {
- ++buf;
- }
-
- if (*buf == ';') {
- *buf++ = '\0';
-
- if (*base == '\0')
- base = "p0";
- if ((select_args = TypeCallocN(String, 1 + strlen(base))) == 0)
- return;
- while (*base != '\0') {
- for (j = 0; j < XtNumber(table); ++j) {
- if (*base == table[j].given) {
- select_args[n++] = table[j].result;
- TRACE(("atom[%d] %s\n", n, table[j].result));
- break;
- }
- }
- ++base;
- }
-
- if (!strcmp(buf, "?")) {
- TRACE(("Getting selection\n"));
- unparseputc1(OSC, screen->respond);
- unparseputs("52", screen->respond);
- unparseputc(';', screen->respond);
-
- unparseputs(base, screen->respond);
- unparseputc(';', screen->respond);
-
- screen->base64_paste = 1; /* Tells xtermGetSelection data is base64 encoded */
- xtermGetSelection((Widget) term, 0, select_args, n, NULL);
- unparseputc1(final, screen->respond);
- } else {
- TRACE(("Setting selection with %s\n", buf));
- ClearSelectionBuffer();
- while (*buf != '\0')
- AppendToSelectionBuffer(screen, CharOf(*buf++));
- CompleteSelection(select_args, n);
- }
- free(select_args);
- }
-}
-#endif /* OPT_PASTE64 */
-
-/***====================================================================***/
-
-void
-do_osc(Char * oscbuf, unsigned len GCC_UNUSED, int final)
-{
- TScreen *screen = &(term->screen);
- int mode;
- Char *cp;
- int state = 0;
- char *buf = 0;
-
- TRACE(("do_osc %s\n", oscbuf));
-
- /*
- * Lines should be of the form <OSC> number ; string <ST>, however
- * older xterms can accept <BEL> as a final character. We will respond
- * with the same final character as the application sends to make this
- * work better with shell scripts, which may have trouble reading an
- * <ESC><backslash>, which is the 7-bit equivalent to <ST>.
- */
- mode = 0;
- for (cp = oscbuf; *cp != '\0'; cp++) {
- switch (state) {
- case 0:
- if (isdigit(*cp)) {
- mode = 10 * mode + (*cp - '0');
- if (mode > 65535)
- return;
- break;
- }
- /* FALLTHRU */
- case 1:
- if (*cp != ';')
- return;
- state = 2;
- break;
- case 2:
- buf = (char *) cp;
- state = 3;
- /* FALLTHRU */
- default:
- if (ansi_table[CharOf(*cp)] != CASE_PRINT)
- return;
- }
- }
- if (buf == 0)
- return;
-
- switch (mode) {
- case 0: /* new icon name and title */
- Changename(buf);
- Changetitle(buf);
- break;
-
- case 1: /* new icon name only */
- Changename(buf);
- break;
-
- case 2: /* new title only */
- Changetitle(buf);
- break;
-
- case 3: /* change X property */
- ChangeXprop(buf);
- break;
-#if OPT_ISO_COLORS
- case 4:
- ChangeAnsiColorRequest(term, buf, final);
- break;
-#endif
- case 10 + TEXT_FG:
- case 10 + TEXT_BG:
- case 10 + TEXT_CURSOR:
- case 10 + MOUSE_FG:
- case 10 + MOUSE_BG:
-#if OPT_HIGHLIGHT_COLOR
- case 10 + HIGHLIGHT_BG:
-#endif
-#if OPT_TEK4014
- case 10 + TEK_FG:
- case 10 + TEK_BG:
- case 10 + TEK_CURSOR:
-#endif
- if (term->misc.dynamicColors)
- ChangeColorsRequest(term, mode - 10, buf, final);
- break;
-
- case 30:
- case 31:
- /* reserved for Konsole (Stephan Binner <Stephan.Binner@gmx.de>) */
- break;
-
-#ifdef ALLOWLOGGING
- case 46: /* new log file */
-#ifdef ALLOWLOGFILECHANGES
- /*
- * Warning, enabling this feature allows people to overwrite
- * arbitrary files accessible to the person running xterm.
- */
- if (buf != 0
- && strcmp(buf, "?")
- && (cp = CastMallocN(char, strlen(buf)) != NULL)) {
- strcpy(cp, buf);
- if (screen->logfile)
- free(screen->logfile);
- screen->logfile = cp;
- break;
- }
-#endif
- Bell(XkbBI_Info, 0);
- Bell(XkbBI_Info, 0);
- break;
-#endif /* ALLOWLOGGING */
-
- case 50:
- if (buf != 0 && !strcmp(buf, "?")) {
- int num = screen->menu_font_number;
-
- unparseputc1(OSC, screen->respond);
- unparseputs("50", screen->respond);
-
- if ((buf = screen->MenuFontName(num)) != 0) {
- unparseputc(';', screen->respond);
- unparseputs(buf, screen->respond);
- }
- unparseputc1(final, screen->respond);
- } else if (buf != 0) {
- VTFontNames fonts;
-
- memset(&fonts, 0, sizeof(fonts));
-
- /*
- * If the font specification is a "#", followed by an
- * optional sign and optional number, lookup the
- * corresponding menu font entry.
- */
- if (*buf == '#') {
- int num = screen->menu_font_number;
- int rel = 0;
-
- if (*++buf == '+') {
- rel = 1;
- buf++;
- } else if (*buf == '-') {
- rel = -1;
- buf++;
- }
-
- if (isdigit(CharOf(*buf))) {
- int val = atoi(buf);
- if (rel > 0)
- rel = val;
- else if (rel < 0)
- rel = -val;
- else
- num = val;
- } else if (rel == 0) {
- num = 0;
- }
-
- if (rel != 0)
- num = lookupRelativeFontSize(screen,
- screen->menu_font_number, rel);
-
- if (num < 0
- || num > fontMenu_lastBuiltin
- || (buf = screen->MenuFontName(num)) == 0) {
- Bell(XkbBI_MinorError, 0);
- break;
- }
- }
- fonts.f_n = buf;
- SetVTFont(term, fontMenu_fontescape, True, &fonts);
- }
- break;
- case 51:
- /* reserved for Emacs shell (Rob Mayoff <mayoff@dqd.com>) */
- break;
-
-#if OPT_PASTE64
- case 52:
- if (screen->allowWindowOps && (buf != 0))
- ManipulateSelectionData(screen, buf, final);
- break;
-#endif
- /*
- * One could write code to send back the display and host names,
- * but that could potentially open a fairly nasty security hole.
- */
- }
-}
-
-#ifdef SunXK_F36
-#define MAX_UDK 37
-#else
-#define MAX_UDK 35
-#endif
-static struct {
- char *str;
- int len;
-} user_keys[MAX_UDK];
-
-/*
- * Parse one nibble of a hex byte from the OSC string. We have removed the
- * string-terminator (replacing it with a null), so the only other delimiter
- * that is expected is semicolon. Ignore other characters (Ray Neuman says
- * "real" terminals accept commas in the string definitions).
- */
-static int
-udk_value(char **cp)
-{
- int c;
-
- for (;;) {
- if ((c = **cp) != '\0')
- *cp = *cp + 1;
- if (c == ';' || c == '\0')
- return -1;
- if (c >= '0' && c <= '9')
- return c - '0';
- if (c >= 'A' && c <= 'F')
- return c - 'A' + 10;
- if (c >= 'a' && c <= 'f')
- return c - 'a' + 10;
- }
-}
-
-void
-reset_decudk(void)
-{
- int n;
- for (n = 0; n < MAX_UDK; n++) {
- if (user_keys[n].str != 0) {
- free(user_keys[n].str);
- user_keys[n].str = 0;
- user_keys[n].len = 0;
- }
- }
-}
-
-/*
- * Parse the data for DECUDK (user-defined keys).
- */
-static void
-parse_decudk(char *cp)
-{
- while (*cp) {
- char *base = cp;
- char *str = CastMallocN(char, strlen(cp) + 1);
- unsigned key = 0;
- int lo, hi;
- int len = 0;
-
- while (isdigit(CharOf(*cp)))
- key = (key * 10) + (*cp++ - '0');
- if (*cp == '/') {
- cp++;
- while ((hi = udk_value(&cp)) >= 0
- && (lo = udk_value(&cp)) >= 0) {
- str[len++] = (hi << 4) | lo;
- }
- }
- if (len > 0 && key < MAX_UDK) {
- if (user_keys[key].str != 0)
- free(user_keys[key].str);
- user_keys[key].str = str;
- user_keys[key].len = len;
- } else {
- free(str);
- }
- if (*cp == ';')
- cp++;
- if (cp == base) /* badly-formed sequence - bail out */
- break;
- }
-}
-
-#if OPT_TRACE
-#define SOFT_WIDE 10
-#define SOFT_HIGH 20
-
-static void
-parse_decdld(ANSI * params, char *string)
-{
- char DscsName[8];
- int len;
- int Pfn = params->a_param[0];
- int Pcn = params->a_param[1];
- int Pe = params->a_param[2];
- int Pcmw = params->a_param[3];
- int Pw = params->a_param[4];
- int Pt = params->a_param[5];
- int Pcmh = params->a_param[6];
- int Pcss = params->a_param[7];
-
- int start_char = Pcn + 0x20;
- int char_wide = ((Pcmw == 0)
- ? (Pcss ? 6 : 10)
- : (Pcmw > 4
- ? Pcmw
- : (Pcmw + 3)));
- int char_high = ((Pcmh == 0)
- ? ((Pcmw >= 2 || Pcmw <= 4)
- ? 10
- : 20)
- : Pcmh);
- Char ch;
- Char bits[SOFT_HIGH][SOFT_WIDE];
- Bool first = True;
- Bool prior = False;
- int row = 0, col = 0;
-
- TRACE(("Parsing DECDLD\n"));
- TRACE((" font number %d\n", Pfn));
- TRACE((" starting char %d\n", Pcn));
- TRACE((" erase control %d\n", Pe));
- TRACE((" char-width %d\n", Pcmw));
- TRACE((" font-width %d\n", Pw));
- TRACE((" text/full %d\n", Pt));
- TRACE((" char-height %d\n", Pcmh));
- TRACE((" charset-size %d\n", Pcss));
-
- if (Pfn > 1
- || Pcn > 95
- || Pe > 2
- || Pcmw > 10
- || Pcmw == 1
- || Pt > 2
- || Pcmh > 20
- || Pcss > 1
- || char_wide > SOFT_WIDE
- || char_high > SOFT_HIGH) {
- TRACE(("DECDLD illegal parameter\n"));
- return;
- }
-
- len = 0;
- while (*string != '\0') {
- ch = CharOf(*string++);
- if (ch >= 0x20 && ch <= 0x2f) {
- if (len < 2)
- DscsName[len++] = ch;
- } else if (ch >= 0x30 && ch <= 0x7e) {
- DscsName[len++] = ch;
- break;
- }
- }
- DscsName[len] = 0;
- TRACE((" Dscs name '%s'\n", DscsName));
-
- TRACE((" character matrix %dx%d\n", char_high, char_wide));
- while (*string != '\0') {
- if (first) {
- TRACE(("Char %d:\n", start_char));
- if (prior) {
- for (row = 0; row < char_high; ++row) {
- TRACE(("%.*s\n", char_wide, bits[row]));
- }
- }
- prior = False;
- first = False;
- for (row = 0; row < char_high; ++row) {
- for (col = 0; col < char_wide; ++col) {
- bits[row][col] = '.';
- }
- }
- row = col = 0;
- }
- ch = CharOf(*string++);
- if (ch >= 0x3f && ch <= 0x7e) {
- int n;
-
- ch -= 0x3f;
- for (n = 0; n < 6; ++n) {
- bits[row + n][col] = (ch & (1 << n)) ? '*' : '.';
- }
- col += 1;
- prior = True;
- } else if (ch == '/') {
- row += 6;
- col = 0;
- } else if (ch == ';') {
- first = True;
- ++start_char;
- }
- }
-}
-#else
-#define parse_decdld(p,q) /* nothing */
-#endif
-
-/*
- * Parse numeric parameters. Normally we use a state machine to simplify
- * interspersing with control characters, but have the string already.
- */
-static void
-parse_ansi_params(ANSI * params, char **string)
-{
- char *cp = *string;
- short nparam = 0;
-
- memset(params, 0, sizeof(*params));
- while (*cp != '\0') {
- Char ch = CharOf(*cp++);
-
- if (isdigit(ch)) {
- if (nparam < NPARAM) {
- params->a_param[nparam] *= 10;
- params->a_param[nparam] += (ch - '0');
- }
- } else if (ch == ';') {
- if (++nparam < NPARAM)
- params->a_nparam = nparam;
- } else if (ch < 32) {
- ;
- } else {
- /* should be 0x30 to 0x7e */
- params->a_final = ch;
- break;
- }
- }
- *string = cp;
-}
-
-void
-do_dcs(Char * dcsbuf, size_t dcslen)
-{
- TScreen *screen = &term->screen;
- char reply[BUFSIZ];
- char *cp = (char *) dcsbuf;
- Bool okay;
- ANSI params;
-
- TRACE(("do_dcs(%s:%d)\n", (char *) dcsbuf, dcslen));
-
- if (dcslen != strlen(cp))
- /* shouldn't have nulls in the string */
- return;
-
- switch (*cp) { /* intermediate character, or parameter */
- case '$': /* DECRQSS */
- okay = True;
-
- cp++;
- if (*cp++ == 'q') {
- if (!strcmp(cp, "\"q")) { /* DECSCA */
- sprintf(reply, "%d%s",
- (screen->protected_mode == DEC_PROTECT)
- && (term->flags & PROTECTED) ? 1 : 0,
- cp);
- } else if (!strcmp(cp, "\"p")) { /* DECSCL */
- sprintf(reply, "%d%s%s",
- (screen->vtXX_level ?
- screen->vtXX_level : 1) + 60,
- (screen->vtXX_level >= 2)
- ? (screen->control_eight_bits
- ? ";0" : ";1")
- : "",
- cp);
- } else if (!strcmp(cp, "r")) { /* DECSTBM */
- sprintf(reply, "%d;%dr",
- screen->top_marg + 1,
- screen->bot_marg + 1);
- } else if (!strcmp(cp, "m")) { /* SGR */
- strcpy(reply, "0");
- if (term->flags & BOLD)
- strcat(reply, ";1");
- if (term->flags & UNDERLINE)
- strcat(reply, ";4");
- if (term->flags & BLINK)
- strcat(reply, ";5");
- if (term->flags & INVERSE)
- strcat(reply, ";7");
- if (term->flags & INVISIBLE)
- strcat(reply, ";8");
- if_OPT_EXT_COLORS(screen, {
- if (term->flags & FG_COLOR) {
- if (term->cur_foreground >= 16)
- sprintf(reply + strlen(reply),
- ";38;5;%d", term->cur_foreground);
- else
- sprintf(reply + strlen(reply),
- ";%d%d",
- term->cur_foreground >= 8 ? 9 : 3,
- term->cur_foreground >= 8 ?
- term->cur_foreground - 8 :
- term->cur_foreground);
- }
- if (term->flags & BG_COLOR) {
- if (term->cur_background >= 16)
- sprintf(reply + strlen(reply),
- ";48;5;%d", term->cur_foreground);
- else
- sprintf(reply + strlen(reply),
- ";%d%d",
- term->cur_background >= 8 ? 10 : 4,
- term->cur_background >= 8 ?
- term->cur_background - 8 :
- term->cur_background);
- }
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- if (term->flags & FG_COLOR)
- sprintf(reply + strlen(reply),
- ";%d%d",
- term->cur_foreground >= 8 ? 9 : 3,
- term->cur_foreground >= 8 ?
- term->cur_foreground - 8 :
- term->cur_foreground);
- if (term->flags & BG_COLOR)
- sprintf(reply + strlen(reply),
- ";%d%d",
- term->cur_background >= 8 ? 10 : 4,
- term->cur_background >= 8 ?
- term->cur_background - 8 :
- term->cur_background);
- });
- strcat(reply, "m");
- } else
- okay = False;
-
- unparseputc1(DCS, screen->respond);
- unparseputc(okay ? '1' : '0', screen->respond);
- unparseputc('$', screen->respond);
- unparseputc('r', screen->respond);
- if (okay)
- cp = reply;
- unparseputs(cp, screen->respond);
- unparseputc1(ST, screen->respond);
- } else {
- unparseputc(CAN, screen->respond);
- }
- break;
-#if OPT_TCAP_QUERY
- case '+':
- cp++;
- if (*cp == 'q') {
- unsigned state;
- int code;
- char *tmp;
- char *parsed = ++cp;
-
- unparseputc1(DCS, screen->respond);
-
- code = xtermcapKeycode(&parsed, &state);
- unparseputc(code >= 0 ? '1' : '0', screen->respond);
-
- unparseputc('+', screen->respond);
- unparseputc('r', screen->respond);
-
- while (*cp != 0) {
- if (cp == parsed)
- break; /* no data found, error */
-
- for (tmp = cp; tmp != parsed; ++tmp)
- unparseputc(*tmp, screen->respond);
-
- if (code >= 0) {
- unparseputc('=', screen->respond);
- screen->tc_query = code;
- /* XK_COLORS is a fake code for the "Co" entry (maximum
- * number of colors) */
- if (code == XK_COLORS) {
-# if OPT_256_COLORS
- unparseputc('2', screen->respond);
- unparseputc('5', screen->respond);
- unparseputc('6', screen->respond);
-# elif OPT_88_COLORS
- unparseputc('8', screen->respond);
- unparseputc('8', screen->respond);
-# else
- unparseputc('1', screen->respond);
- unparseputc('6', screen->respond);
-# endif
- } else {
- XKeyEvent event;
- event.state = state;
- Input(&(term->keyboard), screen, &event, False);
- }
- screen->tc_query = -1;
- } else {
- break; /* no match found, error */
- }
-
- cp = parsed;
- if (*parsed == ';') {
- unparseputc(*parsed++, screen->respond);
- cp = parsed;
- code = xtermcapKeycode(&parsed, &state);
- }
- }
- unparseputc1(ST, screen->respond);
- }
- break;
-#endif
- default:
- parse_ansi_params(&params, &cp);
- switch (params.a_final) {
- case '|': /* DECUDK */
- if (params.a_param[0] == 0)
- reset_decudk();
- parse_decudk(cp);
- break;
- case '{': /* DECDLD */
- parse_decdld(&params, cp);
- break;
- }
- break;
- }
-}
-
-char *
-udk_lookup(int keycode, int *len)
-{
- if (keycode >= 0 && keycode < MAX_UDK) {
- *len = user_keys[keycode].len;
- return user_keys[keycode].str;
- }
- return 0;
-}
-
-static void
-ChangeGroup(String attribute, char *value)
-{
- Arg args[1];
- const char *name = (value != 0) ? (char *) value : "";
- TScreen *screen = &term->screen;
- Widget w = CURRENT_EMU(screen);
- Widget top = SHELL_OF(w);
-
- TRACE(("ChangeGroup(attribute=%s, value=%s)\n", attribute, name));
-
-#if OPT_WIDE_CHARS
- /*
- * Title strings are limited to ISO-8859-1, which is consistent with the
- * printable data in sos_table. However, if we're running in UTF-8 mode,
- * it is likely that non-ASCII text in the string will be rejected because
- * it is not printable in the current locale. So we convert it to UTF-8,
- * allowing the X library to convert it back.
- */
- if (xtermEnvUTF8()) {
- int n;
- unsigned limit = strlen(name);
-
- if (limit < 1024) {
- for (n = 0; name[n] != '\0'; ++n) {
- if (CharOf(name[n]) > 127) {
- static Char *converted;
- if (converted != 0)
- free(converted);
- if ((converted = TypeMallocN(Char, 1 + (5 * limit))) != 0) {
- Char *temp = converted;
- while (*name != 0) {
- temp = convertToUTF8(temp, CharOf(*name));
- ++name;
- }
- *temp = 0;
- name = (const char *) converted;
- }
- break;
- }
- }
- }
- }
-#endif
-
-#if OPT_SAME_NAME
- /* If the attribute isn't going to change, then don't bother... */
-
- if (sameName) {
- char *buf;
- XtSetArg(args[0], attribute, &buf);
- XtGetValues(top, args, 1);
- if (strcmp(name, buf) == 0)
- return;
- }
-#endif /* OPT_SAME_NAME */
-
- XtSetArg(args[0], attribute, name);
- XtSetValues(top, args, 1);
-}
-
-void
-Changename(char *name)
-{
- if (name == 0)
- name = "";
-#if OPT_ZICONBEEP /* If warning should be given then give it */
- if (zIconBeep && zIconBeep_flagged) {
- char *newname = CastMallocN(char, strlen(name) + 4);
- if (!newname) {
- fprintf(stderr, "malloc failed in Changename\n");
- return;
- }
- strcpy(newname, "*** ");
- strcat(newname, name);
- ChangeGroup(XtNiconName, newname);
- free(newname);
- } else
-#endif /* OPT_ZICONBEEP */
- ChangeGroup(XtNiconName, name);
-}
-
-void
-Changetitle(char *name)
-{
- ChangeGroup(XtNtitle, name);
-}
-
-#define Strlen(s) strlen((char *)(s))
-
-void
-ChangeXprop(char *buf)
-{
- Display *dpy = XtDisplay(toplevel);
- Window w = XtWindow(toplevel);
- XTextProperty text_prop;
- Atom aprop;
- Char *pchEndPropName = (Char *) strchr(buf, '=');
-
- if (pchEndPropName)
- *pchEndPropName = '\0';
- aprop = XInternAtom(dpy, buf, False);
- if (pchEndPropName == NULL) {
- /* no "=value" given, so delete the property */
- XDeleteProperty(dpy, w, aprop);
- } else {
- text_prop.value = pchEndPropName + 1;
- text_prop.encoding = XA_STRING;
- text_prop.format = 8;
- text_prop.nitems = Strlen(text_prop.value);
- XSetTextProperty(dpy, w, &text_prop, aprop);
- }
-}
-
-/***====================================================================***/
-
-static ScrnColors *pOldColors = NULL;
-
-static Bool
-GetOldColors(XtermWidget pTerm)
-{
- int i;
- if (pOldColors == NULL) {
- pOldColors = (ScrnColors *) XtMalloc(sizeof(ScrnColors));
- if (pOldColors == NULL) {
- fprintf(stderr, "allocation failure in GetOldColors\n");
- return (False);
- }
- pOldColors->which = 0;
- for (i = 0; i < NCOLORS; i++) {
- pOldColors->colors[i] = 0;
- pOldColors->names[i] = NULL;
- }
- GetColors(pTerm, pOldColors);
- }
- return (True);
-}
-
-static int
-oppositeColor(int n)
-{
- switch (n) {
- case TEXT_FG:
- n = TEXT_BG;
- break;
- case TEXT_BG:
- n = TEXT_FG;
- break;
- case MOUSE_FG:
- n = MOUSE_BG;
- break;
- case MOUSE_BG:
- n = MOUSE_FG;
- break;
-#if OPT_TEK4014
- case TEK_FG:
- n = TEK_BG;
- break;
- case TEK_BG:
- n = TEK_FG;
- break;
-#endif
- default:
- break;
- }
- return n;
-}
-
-static void
-ReportColorRequest(XtermWidget pTerm, int ndx, int final)
-{
- XColor color;
- Colormap cmap = pTerm->core.colormap;
- char buffer[80];
-
- /*
- * ChangeColorsRequest() has "always" chosen the opposite color when
- * reverse-video is set. Report this as the original color index, but
- * reporting the opposite color which would be used.
- */
- int i = (term->misc.re_verse) ? oppositeColor(ndx) : ndx;
-
- GetOldColors(pTerm);
- color.pixel = pOldColors->colors[ndx];
- XQueryColor(term->screen.display, cmap, &color);
- sprintf(buffer, "%d;rgb:%04x/%04x/%04x", i + 10,
- color.red,
- color.green,
- color.blue);
- TRACE(("ReportColors %d: %#lx as %s\n", ndx, pOldColors->colors[ndx], buffer));
- unparseputc1(OSC, pTerm->screen.respond);
- unparseputs(buffer, pTerm->screen.respond);
- unparseputc1(final, pTerm->screen.respond);
-}
-
-static Bool
-UpdateOldColors(XtermWidget pTerm GCC_UNUSED, ScrnColors * pNew)
-{
- int i;
-
- /* if we were going to free old colors, this would be the place to
- * do it. I've decided not to (for now), because it seems likely
- * that we'd have a small set of colors we use over and over, and that
- * we could save some overhead this way. The only case in which this
- * (clearly) fails is if someone is trying a boatload of colors, in
- * which case they can restart xterm
- */
- for (i = 0; i < NCOLORS; i++) {
- if (COLOR_DEFINED(pNew, i)) {
- if (pOldColors->names[i] != NULL) {
- XtFree(pOldColors->names[i]);
- pOldColors->names[i] = NULL;
- }
- if (pNew->names[i]) {
- pOldColors->names[i] = pNew->names[i];
- }
- pOldColors->colors[i] = pNew->colors[i];
- }
- }
- return (True);
-}
-
-void
-ReverseOldColors(void)
-{
- ScrnColors *pOld = pOldColors;
- Pixel tmpPix;
- char *tmpName;
-
- if (pOld) {
- /* change text cursor, if necesary */
- if (pOld->colors[TEXT_CURSOR] == pOld->colors[TEXT_FG]) {
- pOld->colors[TEXT_CURSOR] = pOld->colors[TEXT_BG];
- if (pOld->names[TEXT_CURSOR]) {
- XtFree(pOldColors->names[TEXT_CURSOR]);
- pOld->names[TEXT_CURSOR] = NULL;
- }
- if (pOld->names[TEXT_BG]) {
- tmpName = XtMalloc(strlen(pOld->names[TEXT_BG]) + 1);
- if (tmpName) {
- strcpy(tmpName, pOld->names[TEXT_BG]);
- pOld->names[TEXT_CURSOR] = tmpName;
- }
- }
- }
-
- EXCHANGE(pOld->colors[TEXT_FG], pOld->colors[TEXT_BG], tmpPix);
- EXCHANGE(pOld->names[TEXT_FG], pOld->names[TEXT_BG], tmpName);
-
- EXCHANGE(pOld->colors[MOUSE_FG], pOld->colors[MOUSE_BG], tmpPix);
- EXCHANGE(pOld->names[MOUSE_FG], pOld->names[MOUSE_BG], tmpName);
-
-#if OPT_TEK4014
- EXCHANGE(pOld->colors[TEK_FG], pOld->colors[TEK_BG], tmpPix);
- EXCHANGE(pOld->names[TEK_FG], pOld->names[TEK_BG], tmpName);
-#endif
- }
- return;
-}
-
-Bool
-AllocateTermColor(XtermWidget pTerm,
- ScrnColors * pNew,
- int ndx,
- const char *name)
-{
- XColor def;
- TScreen *screen = &pTerm->screen;
- Colormap cmap = pTerm->core.colormap;
- char *newName;
-
- if (XParseColor(screen->display, cmap, name, &def)
- && (XAllocColor(screen->display, cmap, &def)
- || find_closest_color(screen->display, cmap, &def))
- && (newName = XtMalloc(strlen(name) + 1)) != 0) {
- SET_COLOR_VALUE(pNew, ndx, def.pixel);
- strcpy(newName, name);
- SET_COLOR_NAME(pNew, ndx, newName);
- TRACE(("AllocateTermColor #%d: %s (pixel %#lx)\n", ndx, newName, def.pixel));
- return (True);
- }
- TRACE(("AllocateTermColor #%d: %s (failed)\n", ndx, name));
- return (False);
-}
-
-static Bool
-ChangeColorsRequest(XtermWidget pTerm,
- int start,
- char *names,
- int final)
-{
- char *thisName;
- ScrnColors newColors;
- int i, ndx;
-
- TRACE(("ChangeColorsRequest start=%d, names='%s'\n", start, names));
-
- if ((pOldColors == NULL)
- && (!GetOldColors(pTerm))) {
- return (False);
- }
- newColors.which = 0;
- for (i = 0; i < NCOLORS; i++) {
- newColors.names[i] = NULL;
- }
- for (i = start; i < NCOLORS; i++) {
- if (term->misc.re_verse)
- ndx = oppositeColor(i);
- else
- ndx = i;
- if ((names == NULL) || (names[0] == '\0')) {
- newColors.names[ndx] = NULL;
- } else {
- if (names[0] == ';')
- thisName = NULL;
- else
- thisName = names;
- names = strchr(names, ';');
- if (names != NULL) {
- *names = '\0';
- names++;
- }
- if (thisName != 0 && !strcmp(thisName, "?"))
- ReportColorRequest(pTerm, ndx, final);
- else if (!pOldColors->names[ndx]
- || (thisName
- && strcmp(thisName, pOldColors->names[ndx]))) {
- AllocateTermColor(pTerm, &newColors, ndx, thisName);
- }
- }
- }
-
- if (newColors.which == 0)
- return (True);
-
- ChangeColors(pTerm, &newColors);
- UpdateOldColors(pTerm, &newColors);
- return (True);
-}
-
-/***====================================================================***/
-
-#ifndef DEBUG
-/* ARGSUSED */
-#endif
-void
-Panic(char *s GCC_UNUSED, int a GCC_UNUSED)
-{
-#ifdef DEBUG
- if (debug) {
- fprintf(stderr, "%s: PANIC!\t", xterm_name);
- fprintf(stderr, s, a);
- fputs("\r\n", stderr);
- fflush(stderr);
- }
-#endif /* DEBUG */
-}
-
-char *
-SysErrorMsg(int n)
-{
- static char unknown[] = "unknown error";
- char *s = strerror(n);
- return s ? s : unknown;
-}
-
-void
-SysError(int i)
-{
- static const char *table[] =
- {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- ,"main: ioctl() failed on FIONBIO" /* 11 */
- ,"main: ioctl() failed on F_GETFL" /* 12 */
- ,"main: ioctl() failed on F_SETFL" /* 13 */
- ,"spawn: open() failed on /dev/tty" /* 14 */
- ,"spawn: ioctl() failed on TIOCGETP" /* 15 */
- ,0
- ,"spawn: ptsname() failed" /* 17 */
- ,"spawn: open() failed on ptsname" /* 18 */
- ,"spawn: ioctl() failed on I_PUSH/\"ptem\"" /* 19 */
- ,"spawn: ioctl() failed on I_PUSH/\"consem\"" /* 20 */
- ,"spawn: ioctl() failed on I_PUSH/\"ldterm\"" /* 21 */
- ,"spawn: ioctl() failed on I_PUSH/\"ttcompat\"" /* 22 */
- ,"spawn: ioctl() failed on TIOCSETP" /* 23 */
- ,"spawn: ioctl() failed on TIOCSETC" /* 24 */
- ,"spawn: ioctl() failed on TIOCSETD" /* 25 */
- ,"spawn: ioctl() failed on TIOCSLTC" /* 26 */
- ,"spawn: ioctl() failed on TIOCLSET" /* 27 */
- ,"spawn: initgroups() failed" /* 28 */
- ,"spawn: fork() failed" /* 29 */
- ,"spawn: exec() failed" /* 30 */
- ,0
- ,"get_pty: not enough ptys" /* 32 */
- ,0
- ,"waiting for initial map" /* 34 */
- ,"spawn: setuid() failed" /* 35 */
- ,"spawn: can't initialize window" /* 36 */
- ,0, 0, 0, 0, 0, 0, 0, 0, 0
- ,"spawn: ioctl() failed on TIOCKSET" /* 46 */
- ,"spawn: ioctl() failed on TIOCKSETC" /* 47 */
- ,"spawn: realloc of ttydev failed" /* 48 */
- ,"luit: command-line malloc failed" /* 49 */
- ,"in_put: select() failed" /* 50 */
- ,0, 0, 0
- ,"VTInit: can't initialize window" /* 54 */
- ,0, 0
- ,"HandleKeymapChange: malloc failed" /* 57 */
- ,0, 0
- ,"Tinput: select() failed" /* 60 */
- ,0, 0, 0
- ,"TekInit: can't initialize window" /* 64 */
- ,0, 0, 0, 0, 0, 0
- ,"SaltTextAway: malloc() failed" /* 71 */
- ,0, 0, 0, 0, 0, 0, 0, 0
- ,"StartLog: exec() failed" /* 80 */
- ,0, 0
- ,"xerror: XError event" /* 83 */
- ,"xioerror: X I/O error" /* 84 */
- ,0, 0, 0, 0, 0
- ,"Alloc: calloc() failed on base" /* 90 */
- ,"Alloc: calloc() failed on rows" /* 91 */
- ,"ScreenResize: realloc() failed on alt base" /* 92 */
- ,0, 0, 0
- ,"ScreenResize: malloc() or realloc() failed" /* 96 */
- ,0, 0, 0, 0, 0
- ,"ScrnPointers: malloc/realloc() failed" /* 102 */
- ,0, 0, 0, 0, 0, 0, 0
- ,"ScrollBarOn: realloc() failed on base" /* 110 */
- ,"ScrollBarOn: realloc() failed on rows" /* 111 */
- ,0, 0, 0, 0, 0, 0, 0, 0, 0
- ,"my_memmove: malloc/realloc failed" /* 121 */
- };
- int oerrno;
-
- oerrno = errno;
- fprintf(stderr, "%s: Error %d, errno %d: ", xterm_name, i, oerrno);
- fprintf(stderr, "%s\n", SysErrorMsg(oerrno));
- if ((Cardinal) i < XtNumber(table) && table[i] != 0) {
- fprintf(stderr, "Reason: %s\n", table[i]);
- }
- Cleanup(i);
-}
-
-static void
-Sleep(int msec)
-{
- static struct timeval select_timeout;
-
- select_timeout.tv_sec = 0;
- select_timeout.tv_usec = msec * 1000;
- select(0, 0, 0, 0, &select_timeout);
-}
-
-/*
- * cleanup by sending SIGHUP to client processes
- */
-void
-Cleanup(int code)
-{
- static Bool cleaning;
- TScreen *screen = &term->screen;
-
- /*
- * Process "-hold" and session cleanup only for a normal exit.
- */
- if (code == 0) {
- if (cleaning) {
- hold_screen = 0;
- return;
- }
-
- cleaning = True;
- need_cleanup = FALSE;
-
- TRACE(("Cleanup %d\n", code));
-
- if (hold_screen) {
- hold_screen = 2;
- while (hold_screen) {
- xevents();
- Sleep(10);
- }
- }
-#if OPT_SESSION_MGT
- if (resource.sessionMgt) {
- XtVaSetValues(toplevel,
- XtNjoinSession, False,
- (XtPointer *) 0);
- }
-#endif
- }
-
- if (screen->pid > 1) {
- (void) kill_process_group(screen->pid, SIGHUP);
- }
- Exit(code);
-}
-
-#ifndef VMS
-char *
-xtermFindShell(char *leaf, Bool warning)
-{
- char *s;
- char *d;
- char *tmp;
- char *result = leaf;
-
- TRACE(("xtermFindShell(%s)\n", leaf));
- if (*result != '\0' && strchr("+/-", *result) == 0) {
- /* find it in $PATH */
- if ((s = getenv("PATH")) != 0) {
- if ((tmp = TypeMallocN(char, strlen(leaf) + strlen(s) + 1)) != 0) {
- Bool found = False;
- while (*s != '\0') {
- strcpy(tmp, s);
- for (d = tmp;; ++d) {
- if (*d == ':' || *d == '\0') {
- int skip = (*d != '\0');
- *d = '/';
- strcpy(d + 1, leaf);
- if (skip)
- ++d;
- s += (d - tmp);
- if (*tmp == '/'
- && strstr(tmp, "..") == 0
- && access(tmp, X_OK) == 0) {
- result = x_strdup(tmp);
- found = True;
- }
- break;
- }
- if (found)
- break;
- }
- if (found)
- break;
- }
- free(tmp);
- }
- }
- }
- TRACE(("...xtermFindShell(%s)\n", result));
- if (*result != '/'
- || strstr(result, "..") != 0
- || access(result, X_OK) != 0) {
- if (warning)
- fprintf(stderr, "No absolute path found for shell: %s\n", result);
- result = 0;
- }
- return result;
-}
-#endif /* VMS */
-
-/*
- * sets the value of var to be arg in the Unix 4.2 BSD environment env.
- * Var should end with '=' (bindings are of the form "var=value").
- * This procedure assumes the memory for the first level of environ
- * was allocated using calloc, with enough extra room at the end so not
- * to have to do a realloc().
- */
-void
-xtermSetenv(char *var, char *value)
-{
- if (value != 0) {
- int envindex = 0;
- size_t len = strlen(var);
-
- TRACE(("xtermSetenv(var=%s, value=%s)\n", var, value));
-
- while (environ[envindex] != NULL) {
- if (strncmp(environ[envindex], var, len) == 0) {
- /* found it */
- environ[envindex] = CastMallocN(char, len + strlen(value));
- strcpy(environ[envindex], var);
- strcat(environ[envindex], value);
- return;
- }
- envindex++;
- }
-
- TRACE(("...expanding env to %d\n", envindex + 1));
-
- environ[envindex] = CastMallocN(char, len + strlen(value));
- (void) strcpy(environ[envindex], var);
- strcat(environ[envindex], value);
- environ[++envindex] = NULL;
- }
-}
-
-/*ARGSUSED*/
-int
-xerror(Display * d, XErrorEvent * ev)
-{
- fprintf(stderr, "%s: warning, error event received:\n", xterm_name);
- (void) XmuPrintDefaultErrorMessage(d, ev, stderr);
- Exit(ERROR_XERROR);
- return 0; /* appease the compiler */
-}
-
-/*ARGSUSED*/
-int
-xioerror(Display * dpy)
-{
- int the_error = errno;
-
- (void) fprintf(stderr,
- "%s: fatal IO error %d (%s) or KillClient on X server \"%s\"\r\n",
- xterm_name, the_error, SysErrorMsg(the_error),
- DisplayString(dpy));
-
- Exit(ERROR_XIOERROR);
- return 0; /* appease the compiler */
-}
-
-void
-xt_error(String message)
-{
- char *ptr;
-
- (void) fprintf(stderr, "%s Xt error: %s\n", ProgramName, message);
-
- /*
- * Check for the obvious - Xt does a poor job of reporting this.
- */
- if ((ptr = getenv("DISPLAY")) == 0 || *x_strtrim(ptr) == '\0') {
- fprintf(stderr, "%s: DISPLAY is not set\n", ProgramName);
- }
- exit(1);
-}
-
-int
-XStrCmp(char *s1, char *s2)
-{
- if (s1 && s2)
- return (strcmp(s1, s2));
- if (s1 && *s1)
- return (1);
- if (s2 && *s2)
- return (-1);
- return (0);
-}
-
-#if OPT_TEK4014
-static void
-withdraw_window(Display * dpy, Window w, int scr)
-{
- TRACE(("withdraw_window %#lx\n", (long) w));
- (void) XmuUpdateMapHints(dpy, w, NULL);
- XWithdrawWindow(dpy, w, scr);
- return;
-}
-#endif
-
-void
-set_vt_visibility(Bool on)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("set_vt_visibility(%d)\n", on));
- if (on) {
- if (!screen->Vshow && term) {
- VTInit();
- XtMapWidget(XtParent(term));
-#if OPT_TOOLBAR
- /* we need both of these during initialization */
- XtMapWidget(SHELL_OF(term));
- ShowToolbar(resource.toolBar);
-#endif
- screen->Vshow = True;
- }
- }
-#if OPT_TEK4014
- else {
- if (screen->Vshow && term) {
- withdraw_window(XtDisplay(term),
- VShellWindow,
- XScreenNumberOfScreen(XtScreen(term)));
- screen->Vshow = False;
- }
- }
- set_vthide_sensitivity();
- set_tekhide_sensitivity();
- update_vttekmode();
- update_tekshow();
- update_vtshow();
-#endif
- return;
-}
-
-#if OPT_TEK4014
-void
-set_tek_visibility(Bool on)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("set_tek_visibility(%d)\n", on));
- if (on) {
- if (!screen->Tshow && (tekWidget || TekInit())) {
- Widget tekParent = SHELL_OF(tekWidget);
- XtRealizeWidget(tekParent);
- XtMapWidget(XtParent(tekWidget));
-#if OPT_TOOLBAR
- /* we need both of these during initialization */
- XtMapWidget(tekParent);
- XtMapWidget(tekWidget);
-#endif
- XtOverrideTranslations(tekParent,
- XtParseTranslationTable
- ("<Message>WM_PROTOCOLS: DeleteWindow()"));
- (void) XSetWMProtocols(XtDisplay(tekParent),
- XtWindow(tekParent),
- &wm_delete_window, 1);
- screen->Tshow = True;
- }
- } else {
- if (screen->Tshow && tekWidget) {
- withdraw_window(XtDisplay(tekWidget),
- TShellWindow,
- XScreenNumberOfScreen(XtScreen(tekWidget)));
- screen->Tshow = False;
- }
- }
- set_tekhide_sensitivity();
- set_vthide_sensitivity();
- update_vtshow();
- update_tekshow();
- update_vttekmode();
- return;
-}
-
-void
-end_tek_mode(void)
-{
- TScreen *screen = &term->screen;
-
- if (screen->TekEmu) {
- FlushLog(screen);
- longjmp(Tekend, 1);
- }
- return;
-}
-
-void
-end_vt_mode(void)
-{
- TScreen *screen = &term->screen;
-
- if (!screen->TekEmu) {
- FlushLog(screen);
- screen->TekEmu = True;
- longjmp(VTend, 1);
- }
- return;
-}
-
-void
-switch_modes(Bool tovt) /* if true, then become vt mode */
-{
- if (tovt) {
- if (TekRefresh)
- dorefresh();
- end_tek_mode(); /* WARNING: this does a longjmp... */
- } else {
- end_vt_mode(); /* WARNING: this does a longjmp... */
- }
-}
-
-void
-hide_vt_window(void)
-{
- TScreen *screen = &term->screen;
-
- set_vt_visibility(False);
- if (!screen->TekEmu)
- switch_modes(False); /* switch to tek mode */
-}
-
-void
-hide_tek_window(void)
-{
- TScreen *screen = &term->screen;
-
- set_tek_visibility(False);
- TekRefresh = (TekLink *) 0;
- if (screen->TekEmu)
- switch_modes(True); /* does longjmp to vt mode */
-}
-#endif /* OPT_TEK4014 */
-
-static const char *
-skip_punct(const char *s)
-{
- while (*s == '-' || *s == '/' || *s == '+' || *s == '#' || *s == '%') {
- ++s;
- }
- return s;
-}
-
-static int
-cmp_options(const void *a, const void *b)
-{
- const char *s1 = skip_punct(((const OptionHelp *) a)->opt);
- const char *s2 = skip_punct(((const OptionHelp *) b)->opt);
- return strcmp(s1, s2);
-}
-
-static int
-cmp_resources(const void *a, const void *b)
-{
- return strcmp(((const XrmOptionDescRec *) a)->option,
- ((const XrmOptionDescRec *) b)->option);
-}
-
-XrmOptionDescRec *
-sortedOptDescs(XrmOptionDescRec * descs, Cardinal res_count)
-{
- static XrmOptionDescRec *res_array = 0;
-
- if (res_array == 0) {
- Cardinal j;
-
- /* make a sorted index to 'resources' */
- res_array = TypeCallocN(XrmOptionDescRec, res_count);
- for (j = 0; j < res_count; j++)
- res_array[j] = descs[j];
- qsort(res_array, res_count, sizeof(*res_array), cmp_resources);
- }
- return res_array;
-}
-
-/*
- * The first time this is called, construct sorted index to the main program's
- * list of options, taking into account the on/off options which will be
- * compressed into one token. It's a lot simpler to do it this way than
- * maintain the list in sorted form with lots of ifdef's.
- */
-OptionHelp *
-sortedOpts(OptionHelp * options, XrmOptionDescRec * descs, Cardinal numDescs)
-{
- static OptionHelp *opt_array = 0;
-
- if (opt_array == 0) {
- Cardinal opt_count, j;
-#if OPT_TRACE
- Cardinal k;
- XrmOptionDescRec *res_array = sortedOptDescs(descs, numDescs);
- int code;
- char *mesg;
-#else
- (void) descs;
- (void) numDescs;
-#endif
-
- /* count 'options' and make a sorted index to it */
- for (opt_count = 0; options[opt_count].opt != 0; ++opt_count) {
- ;
- }
- opt_array = TypeCallocN(OptionHelp, opt_count + 1);
- for (j = 0; j < opt_count; j++)
- opt_array[j] = options[j];
- qsort(opt_array, opt_count, sizeof(OptionHelp), cmp_options);
-
- /* supply the "turn on/off" strings if needed */
-#if OPT_TRACE
- for (j = 0; j < opt_count; j++) {
- if (!strncmp(opt_array[j].opt, "-/+", 3)) {
- char *name = opt_array[j].opt + 3;
- for (k = 0; k < numDescs; ++k) {
- char *value = res_array[k].value;
- if (res_array[k].option[0] == '-') {
- code = -1;
- } else if (res_array[k].option[0] == '+') {
- code = 1;
- } else {
- code = 0;
- }
- if (x_strindex(opt_array[j].desc, "inhibit") != 0)
- code = -code;
- if (code != 0
- && res_array[k].value != 0
- && !strcmp(name, res_array[k].option + 1)) {
- if (((code < 0) && !strcmp(value, "on"))
- || ((code > 0) && !strcmp(value, "off"))
- || ((code > 0) && !strcmp(value, "0"))) {
- mesg = "turn on/off";
- } else {
- mesg = "turn off/on";
- }
- if (strncmp(mesg, opt_array[j].desc, strlen(mesg))) {
- if (strncmp(opt_array[j].desc, "turn ", 5)) {
- char *s = CastMallocN(char,
- strlen(mesg)
- + 1
- + strlen(opt_array[j].desc));
- if (s != 0) {
- sprintf(s, "%s %s", mesg, opt_array[j].desc);
- opt_array[j].desc = s;
- }
- } else {
- TRACE(("OOPS "));
- }
- }
- TRACE(("%s: %s %s: %s (%s)\n",
- mesg,
- res_array[k].option,
- res_array[k].value,
- opt_array[j].opt,
- opt_array[j].desc));
- break;
- }
- }
- }
- }
-#endif
- }
- return opt_array;
-}
-
-/*
- * Report the locale that xterm was started in.
- */
-char *
-xtermEnvLocale(void)
-{
- static char *result;
-
- if (result == 0) {
- if ((result = getenv("LC_ALL")) == 0 || *result == '\0')
- if ((result = getenv("LC_CTYPE")) == 0 || *result == '\0')
- if ((result = getenv("LANG")) == 0 || *result == '\0')
- result = "";
- TRACE(("xtermEnvLocale ->%s\n", result));
- }
- return result;
-}
-
-char *
-xtermEnvEncoding(void)
-{
- static char *result;
-
- if (result == 0) {
-#ifdef HAVE_LANGINFO_CODESET
- result = nl_langinfo(CODESET);
-#else
- char *locale = xtermEnvLocale();
- if (*locale == 0 || !strcmp(locale, "C") || !strcmp(locale, "POSIX")) {
- result = "ASCII";
- } else {
- result = "ISO-8859-1";
- }
-#endif
- TRACE(("xtermEnvEncoding ->%s\n", result));
- }
- return result;
-}
-
-#if OPT_WIDE_CHARS
-/*
- * Tell whether xterm was started in a locale that uses UTF-8 encoding for
- * characters. That environment is inherited by subprocesses and used in
- * various library calls.
- */
-Bool
-xtermEnvUTF8(void)
-{
- static Bool init = False;
- static Bool result = False;
-
- if (!init) {
- init = True;
-#ifdef HAVE_LANGINFO_CODESET
- result = (strcmp(xtermEnvEncoding(), "UTF-8") == 0);
-#else
- result = (strstr(xtermEnvLocale(), "UTF-8") != NULL);
-#endif
- TRACE(("xtermEnvUTF8 ->%s\n", BtoS(result)));
- }
- return result;
-}
-#endif /* OPT_WIDE_CHARS */
-
-/*
- * Returns the version-string used in the "-v' message as well as a few other
- * places. It is derived (when possible) from the __vendorversion__ symbol
- * that some newer imake configurations define.
- */
-char *
-xtermVersion(void)
-{
- static char *result;
- if (result == 0) {
- char *vendor = __vendorversion__;
- char first[BUFSIZ];
- char second[BUFSIZ];
-
- result = CastMallocN(char, strlen(vendor) + 9);
- if (result == 0)
- result = vendor;
- else {
- /* some vendors leave trash in this string */
- for (;;) {
- if (!strncmp(vendor, "Version ", 8))
- vendor += 8;
- else if (isspace(CharOf(*vendor)))
- ++vendor;
- else
- break;
- }
- if (strlen(vendor) < BUFSIZ &&
- sscanf(vendor, "%[0-9.] %[A-Za-z_0-9.]", first, second) == 2)
- sprintf(result, "%s %s(%d)", second, first, XTERM_PATCH);
- else
- sprintf(result, "%s(%d)", vendor, XTERM_PATCH);
- }
- }
- return result;
-}
diff --git a/nx-X11/programs/xterm/mkdirs.sh b/nx-X11/programs/xterm/mkdirs.sh
deleted file mode 100644
index ffe7494c4..000000000
--- a/nx-X11/programs/xterm/mkdirs.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Last modified: 1994-03-25
-# Public domain
-#
-
-errstatus=0
-umask 022
-
-for file in ${1+"$@"} ; do
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
- shift
-
- pathcomp=
- for d in ${1+"$@"} ; do
- pathcomp="$pathcomp$d"
- case "$pathcomp" in
- -* ) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp" 1>&2
- case "$pathcomp" in
- [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]: )
- ;; # DOSISH systems
- * ) mkdir "$pathcomp" || errstatus=$? ;;
- esac
- fi
-
- pathcomp="$pathcomp/"
- done
-done
-
-exit $errstatus
-
-# mkinstalldirs ends here
diff --git a/nx-X11/programs/xterm/os2main.c b/nx-X11/programs/xterm/os2main.c
deleted file mode 100644
index 8ef6147a1..000000000
--- a/nx-X11/programs/xterm/os2main.c
+++ /dev/null
@@ -1,2155 +0,0 @@
-/* $XTermId: os2main.c,v 1.213 2005/11/03 13:17:28 tom Exp $ */
-
-/* removed all foreign stuff to get the code more clear (hv)
- * and did some rewrite for the obscure OS/2 environment
- */
-
-#ifndef lint
-static char *rid = "$XConsortium: main.c,v 1.227.1.2 95/06/29 18:13:15 kaleb Exp $";
-#endif /* lint */
-/* $XFree86: xc/programs/xterm/os2main.c,v 3.81 2005/11/03 13:17:28 dickey Exp $ */
-
-/***********************************************************
-
-Copyright (c) 1987, 1988 X Consortium
-
-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 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 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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-Copyright 1987, 1988 by Digital Equipment Corporation, Maynard.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be used in
-advertising or publicity pertaining to distribution of the software
-without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* os2main.c */
-#define INCL_DOSFILEMGR
-#define INCL_DOSDEVIOCTL
-#define INCL_DOSSEMAPHORES
-#ifdef __INNOTEK_LIBC__
-#define INCL_DOSDEVICES
-#endif
-#define I_NEED_OS2_H
-#include <os2.h>
-#define XTERM_MAIN
-
-#define RES_OFFSET(field) XtOffsetOf(XTERM_RESOURCE, field)
-
-#include <xterm.h>
-
-#include <X11/cursorfont.h>
-#ifdef I18N
-#include <X11/Xlocale.h>
-#endif
-
-#if OPT_TOOLBAR
-
-#if defined(HAVE_LIB_XAW)
-#include <X11/Xaw/Form.h>
-#elif defined(HAVE_LIB_XAW3D)
-#include <X11/Xaw3d/Form.h>
-#elif defined(HAVE_LIB_NEXTAW)
-#include <X11/neXtaw/Form.h>
-#elif defined(HAVE_LIB_XAWPLUS)
-#include <X11/XawPlus/Form.h>
-#endif
-
-#endif /* OPT_TOOLBAR */
-
-#include <pwd.h>
-#include <ctype.h>
-
-#include <data.h>
-#include <error.h>
-#include <menu.h>
-#include <main.h>
-#include <xstrings.h>
-#include <xterm_io.h>
-
-#if OPT_WIDE_CHARS
-#include <charclass.h>
-#endif
-
-int
-setpgrp(pid_t pid, gid_t pgid)
-{
- return 0;
-}
-
-int
-chown(const char *fn, pid_t pid, gid_t gid)
-{
- return 0;
-}
-
-char *
-ttyname(int fd)
-{
- return "/dev/tty";
-}
-
-#include <sys/stat.h>
-#include <sys/param.h> /* for NOFILE */
-#include <stdio.h>
-#include <signal.h>
-
-static SIGNAL_T reapchild(int n);
-static int spawn(void);
-static void get_terminal(void);
-static void resize(TScreen * s, char *oldtc, char *newtc);
-static void set_owner(char *device, uid_t uid, gid_t gid, mode_t mode);
-
-static Bool added_utmp_entry = False;
-
-/*
-** Ordinarily it should be okay to omit the assignment in the following
-** statement. Apparently the c89 compiler on AIX 4.1.3 has a bug, or does
-** it? Without the assignment though the compiler will init command_to_exec
-** to 0xffffffff instead of NULL; and subsequent usage, e.g. in spawn() to
-** SEGV.
-*/
-static char **command_to_exec = NULL;
-
-#if OPT_LUIT_PROG
-static char **command_to_exec_with_luit = NULL;
-#endif
-
-/* The following structures are initialized in main() in order
-** to eliminate any assumptions about the internal order of their
-** contents.
-*/
-static struct termio d_tio;
-
-/* allow use of system default characters if defined and reasonable */
-#ifndef CEOF
-#define CEOF CONTROL('D')
-#endif
-#ifndef CEOL
-#define CEOL 0
-#endif
-#ifndef CFLUSH
-#define CFLUSH CONTROL('O')
-#endif
-#ifndef CLNEXT
-#define CLNEXT CONTROL('V')
-#endif
-#ifndef CNUL
-#define CNUL 0
-#endif
-#ifndef CQUIT
-#define CQUIT CONTROL('\\')
-#endif
-#ifndef CRPRNT
-#define CRPRNT CONTROL('R')
-#endif
-#ifndef CSTART
-#define CSTART CONTROL('Q')
-#endif
-#ifndef CSTOP
-#define CSTOP CONTROL('S')
-#endif
-#ifndef CSUSP
-#define CSUSP CONTROL('Z')
-#endif
-#ifndef CSWTCH
-#define CSWTCH 0
-#endif
-#ifndef CWERASE
-#define CWERASE CONTROL('W')
-#endif
-
-/*
- * SYSV has the termio.c_cc[V] and ltchars; BSD has tchars and ltchars;
- * SVR4 has only termio.c_cc, but it includes everything from ltchars.
- * POSIX termios has termios.c_cc, which is similar to SVR4.
- */
-#define TTYMODE(name) { name, sizeof(name)-1, 0, 0 }
-static int override_tty_modes = 0;
-/* *INDENT-OFF* */
-static struct _xttymodes {
- char *name;
- size_t len;
- int set;
- Char value;
-} ttymodelist[] = {
- TTYMODE("intr"), /* tchars.t_intrc ; VINTR */
-#define XTTYMODE_intr 0
- TTYMODE("quit"), /* tchars.t_quitc ; VQUIT */
-#define XTTYMODE_quit 1
- TTYMODE("erase"), /* sgttyb.sg_erase ; VERASE */
-#define XTTYMODE_erase 2
- TTYMODE("kill"), /* sgttyb.sg_kill ; VKILL */
-#define XTTYMODE_kill 3
- TTYMODE("eof"), /* tchars.t_eofc ; VEOF */
-#define XTTYMODE_eof 4
- TTYMODE("eol"), /* VEOL */
-#define XTTYMODE_eol 5
- TTYMODE("swtch"), /* VSWTCH */
-#define XTTYMODE_swtch 6
- TTYMODE("start"), /* tchars.t_startc ; VSTART */
-#define XTTYMODE_start 7
- TTYMODE("stop"), /* tchars.t_stopc ; VSTOP */
-#define XTTYMODE_stop 8
- TTYMODE("brk"), /* tchars.t_brkc */
-#define XTTYMODE_brk 9
- TTYMODE("susp"), /* ltchars.t_suspc ; VSUSP */
-#define XTTYMODE_susp 10
- TTYMODE("dsusp"), /* ltchars.t_dsuspc ; VDSUSP */
-#define XTTYMODE_dsusp 11
- TTYMODE("rprnt"), /* ltchars.t_rprntc ; VREPRINT */
-#define XTTYMODE_rprnt 12
- TTYMODE("flush"), /* ltchars.t_flushc ; VDISCARD */
-#define XTTYMODE_flush 13
- TTYMODE("weras"), /* ltchars.t_werasc ; VWERASE */
-#define XTTYMODE_weras 14
- TTYMODE("lnext"), /* ltchars.t_lnextc ; VLNEXT */
-#define XTTYMODE_lnext 15
- { NULL, 0, 0, '\0' }, /* end of data */
-};
-/* *INDENT-ON* */
-
-#define TMODE(ind,var) if (ttymodelist[ind].set) var = ttymodelist[ind].value
-
-static int parse_tty_modes(char *s, struct _xttymodes *modelist);
-
-static char passedPty[2]; /* name if pty if slave */
-
-static int Console;
-#include <X11/Xmu/SysUtil.h> /* XmuGetHostname */
-#define MIT_CONSOLE_LEN 12
-#define MIT_CONSOLE "MIT_CONSOLE_"
-static char mit_console_name[255 + MIT_CONSOLE_LEN + 1] = MIT_CONSOLE;
-static Atom mit_console;
-
-static int tslot;
-static jmp_buf env;
-
-/* used by VT (charproc.c) */
-
-static XtResource application_resources[] =
-{
- Sres("name", "Name", xterm_name, DFT_TERMTYPE),
- Sres("iconGeometry", "IconGeometry", icon_geometry, NULL),
- Sres(XtNtitle, XtCTitle, title, NULL),
- Sres(XtNiconName, XtCIconName, icon_name, NULL),
- Sres("termName", "TermName", term_name, NULL),
- Sres("ttyModes", "TtyModes", tty_modes, NULL),
- Bres("hold", "Hold", hold_screen, False),
- Bres("utmpInhibit", "UtmpInhibit", utmpInhibit, False),
- Bres("utmpDisplayId", "UtmpDisplayId", utmpDisplayId, True),
- Bres("messages", "Messages", messages, True),
- Ires("minBufSize", "MinBufSize", minBufSize, 4096),
- Ires("maxBufSize", "MaxBufSize", maxBufSize, 32768),
- Sres("keyboardType", "KeyboardType", keyboardType, "unknown"),
- Bres("sunFunctionKeys", "SunFunctionKeys", sunFunctionKeys, False),
-#if OPT_SUNPC_KBD
- Bres("sunKeyboard", "SunKeyboard", sunKeyboard, False),
-#endif
-#if OPT_HP_FUNC_KEYS
- Bres("hpFunctionKeys", "HpFunctionKeys", hpFunctionKeys, False),
-#endif
-#if OPT_SCO_FUNC_KEYS
- Bres("scoFunctionKeys", "ScoFunctionKeys", scoFunctionKeys, False),
-#endif
-#if OPT_INITIAL_ERASE
- Bres("ptyInitialErase", "PtyInitialErase", ptyInitialErase, DEF_INITIAL_ERASE),
- Bres("backarrowKeyIsErase", "BackarrowKeyIsErase", backarrow_is_erase, DEF_BACKARO_ERASE),
-#endif
- Bres("waitForMap", "WaitForMap", wait_for_map, False),
- Bres("useInsertMode", "UseInsertMode", useInsertMode, False),
-#if OPT_ZICONBEEP
- Ires("zIconBeep", "ZIconBeep", zIconBeep, 0),
-#endif
-#if OPT_PTY_HANDSHAKE
- Bres("ptyHandshake", "PtyHandshake", ptyHandshake, True),
-#endif
-#if OPT_SAME_NAME
- Bres("sameName", "SameName", sameName, True),
-#endif
-#if OPT_SESSION_MGT
- Bres("sessionMgt", "SessionMgt", sessionMgt, True),
-#endif
-#if OPT_TOOLBAR
- Bres(XtNtoolBar, XtCToolBar, toolBar, True),
-#endif
-};
-
-static char *fallback_resources[] =
-{
- "*SimpleMenu*menuLabel.vertSpace: 100",
- "*SimpleMenu*HorizontalMargins: 16",
- "*SimpleMenu*Sme.height: 16",
- "*SimpleMenu*Cursor: left_ptr",
- "*mainMenu.Label: Main Options (no app-defaults)",
- "*vtMenu.Label: VT Options (no app-defaults)",
- "*fontMenu.Label: VT Fonts (no app-defaults)",
-#if OPT_TEK4014
- "*tekMenu.Label: Tek Options (no app-defaults)",
-#endif
- NULL
-};
-
-/* Command line options table. Only resources are entered here...there is a
- pass over the remaining options after XrmParseCommand is let loose. */
-/* *INDENT-OFF* */
-static XrmOptionDescRec optionDescList[] = {
-{"-geometry", "*vt100.geometry",XrmoptionSepArg, (caddr_t) NULL},
-{"-132", "*c132", XrmoptionNoArg, (caddr_t) "on"},
-{"+132", "*c132", XrmoptionNoArg, (caddr_t) "off"},
-{"-ah", "*alwaysHighlight", XrmoptionNoArg, (caddr_t) "on"},
-{"+ah", "*alwaysHighlight", XrmoptionNoArg, (caddr_t) "off"},
-{"-aw", "*autoWrap", XrmoptionNoArg, (caddr_t) "on"},
-{"+aw", "*autoWrap", XrmoptionNoArg, (caddr_t) "off"},
-#ifndef NO_ACTIVE_ICON
-{"-ai", "*activeIcon", XrmoptionNoArg, (caddr_t) "off"},
-{"+ai", "*activeIcon", XrmoptionNoArg, (caddr_t) "on"},
-#endif /* NO_ACTIVE_ICON */
-{"-b", "*internalBorder",XrmoptionSepArg, (caddr_t) NULL},
-{"-bc", "*cursorBlink", XrmoptionNoArg, (caddr_t) "on"},
-{"+bc", "*cursorBlink", XrmoptionNoArg, (caddr_t) "off"},
-{"-bcf", "*cursorOffTime",XrmoptionSepArg, (caddr_t) NULL},
-{"-bcn", "*cursorOnTime",XrmoptionSepArg, (caddr_t) NULL},
-{"-bdc", "*colorBDMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+bdc", "*colorBDMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-cb", "*cutToBeginningOfLine", XrmoptionNoArg, (caddr_t) "off"},
-{"+cb", "*cutToBeginningOfLine", XrmoptionNoArg, (caddr_t) "on"},
-{"-cc", "*charClass", XrmoptionSepArg, (caddr_t) NULL},
-{"-cm", "*colorMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+cm", "*colorMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-cn", "*cutNewline", XrmoptionNoArg, (caddr_t) "off"},
-{"+cn", "*cutNewline", XrmoptionNoArg, (caddr_t) "on"},
-{"-cr", "*cursorColor", XrmoptionSepArg, (caddr_t) NULL},
-{"-cu", "*curses", XrmoptionNoArg, (caddr_t) "on"},
-{"+cu", "*curses", XrmoptionNoArg, (caddr_t) "off"},
-{"-dc", "*dynamicColors",XrmoptionNoArg, (caddr_t) "off"},
-{"+dc", "*dynamicColors",XrmoptionNoArg, (caddr_t) "on"},
-{"-fb", "*boldFont", XrmoptionSepArg, (caddr_t) NULL},
-{"-fbb", "*freeBoldBox", XrmoptionNoArg, (caddr_t)"off"},
-{"+fbb", "*freeBoldBox", XrmoptionNoArg, (caddr_t)"on"},
-{"-fbx", "*forceBoxChars", XrmoptionNoArg, (caddr_t)"off"},
-{"+fbx", "*forceBoxChars", XrmoptionNoArg, (caddr_t)"on"},
-#ifndef NO_ACTIVE_ICON
-{"-fi", "*iconFont", XrmoptionSepArg, (caddr_t) NULL},
-#endif /* NO_ACTIVE_ICON */
-#if OPT_RENDERFONT
-{"-fa", "*faceName", XrmoptionSepArg, (caddr_t) NULL},
-{"-fd", "*faceNameDoublesize", XrmoptionSepArg, (caddr_t) NULL},
-{"-fs", "*faceSize", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_WIDE_CHARS
-{"-fw", "*wideFont", XrmoptionSepArg, (caddr_t) NULL},
-{"-fwb", "*wideBoldFont", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_INPUT_METHOD
-{"-fx", "*ximFont", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_HIGHLIGHT_COLOR
-{"-hc", "*highlightColor", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_HP_FUNC_KEYS
-{"-hf", "*hpFunctionKeys",XrmoptionNoArg, (caddr_t) "on"},
-{"+hf", "*hpFunctionKeys",XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-hold", "*hold", XrmoptionNoArg, (caddr_t) "on"},
-{"+hold", "*hold", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_INITIAL_ERASE
-{"-ie", "*ptyInitialErase", XrmoptionNoArg, (caddr_t) "on"},
-{"+ie", "*ptyInitialErase", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-j", "*jumpScroll", XrmoptionNoArg, (caddr_t) "on"},
-{"+j", "*jumpScroll", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_C1_PRINT
-{"-k8", "*allowC1Printable", XrmoptionNoArg, (caddr_t) "on"},
-{"+k8", "*allowC1Printable", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-kt", "*keyboardType", XrmoptionSepArg, (caddr_t) NULL},
-{"+kt", "*keyboardType", XrmoptionSepArg, (caddr_t) NULL},
-/* parse logging options anyway for compatibility */
-{"-l", "*logging", XrmoptionNoArg, (caddr_t) "on"},
-{"+l", "*logging", XrmoptionNoArg, (caddr_t) "off"},
-{"-lf", "*logFile", XrmoptionSepArg, (caddr_t) NULL},
-{"-ls", "*loginShell", XrmoptionNoArg, (caddr_t) "on"},
-{"+ls", "*loginShell", XrmoptionNoArg, (caddr_t) "off"},
-{"-mb", "*marginBell", XrmoptionNoArg, (caddr_t) "on"},
-{"+mb", "*marginBell", XrmoptionNoArg, (caddr_t) "off"},
-{"-mc", "*multiClickTime", XrmoptionSepArg, (caddr_t) NULL},
-{"-mesg", "*messages", XrmoptionNoArg, (caddr_t) "off"},
-{"+mesg", "*messages", XrmoptionNoArg, (caddr_t) "on"},
-{"-ms", "*pointerColor",XrmoptionSepArg, (caddr_t) NULL},
-{"-nb", "*nMarginBell", XrmoptionSepArg, (caddr_t) NULL},
-{"-nul", "*underLine", XrmoptionNoArg, (caddr_t) "off"},
-{"+nul", "*underLine", XrmoptionNoArg, (caddr_t) "on"},
-{"-pc", "*boldColors", XrmoptionNoArg, (caddr_t) "on"},
-{"+pc", "*boldColors", XrmoptionNoArg, (caddr_t) "off"},
-{"-rw", "*reverseWrap", XrmoptionNoArg, (caddr_t) "on"},
-{"+rw", "*reverseWrap", XrmoptionNoArg, (caddr_t) "off"},
-{"-s", "*multiScroll", XrmoptionNoArg, (caddr_t) "on"},
-{"+s", "*multiScroll", XrmoptionNoArg, (caddr_t) "off"},
-{"-sb", "*scrollBar", XrmoptionNoArg, (caddr_t) "on"},
-{"+sb", "*scrollBar", XrmoptionNoArg, (caddr_t) "off"},
-#ifdef SCROLLBAR_RIGHT
-{"-leftbar", "*rightScrollBar", XrmoptionNoArg, (caddr_t) "off"},
-{"-rightbar", "*rightScrollBar", XrmoptionNoArg, (caddr_t) "on"},
-#endif
-{"-rvc", "*colorRVMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+rvc", "*colorRVMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-sf", "*sunFunctionKeys", XrmoptionNoArg, (caddr_t) "on"},
-{"+sf", "*sunFunctionKeys", XrmoptionNoArg, (caddr_t) "off"},
-{"-si", "*scrollTtyOutput", XrmoptionNoArg, (caddr_t) "off"},
-{"+si", "*scrollTtyOutput", XrmoptionNoArg, (caddr_t) "on"},
-{"-sk", "*scrollKey", XrmoptionNoArg, (caddr_t) "on"},
-{"+sk", "*scrollKey", XrmoptionNoArg, (caddr_t) "off"},
-{"-sl", "*saveLines", XrmoptionSepArg, (caddr_t) NULL},
-#if OPT_SUNPC_KBD
-{"-sp", "*sunKeyboard", XrmoptionNoArg, (caddr_t) "on"},
-{"+sp", "*sunKeyboard", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-#if OPT_TEK4014
-{"-t", "*tekStartup", XrmoptionNoArg, (caddr_t) "on"},
-{"+t", "*tekStartup", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-ti", "*decTerminalID",XrmoptionSepArg, (caddr_t) NULL},
-{"-tm", "*ttyModes", XrmoptionSepArg, (caddr_t) NULL},
-{"-tn", "*termName", XrmoptionSepArg, (caddr_t) NULL},
-#if OPT_WIDE_CHARS
-{"-u8", "*utf8", XrmoptionNoArg, (caddr_t) "2"},
-{"+u8", "*utf8", XrmoptionNoArg, (caddr_t) "0"},
-#endif
-#if OPT_LUIT_PROG
-{"-lc", "*locale", XrmoptionNoArg, (caddr_t) "on"},
-{"+lc", "*locale", XrmoptionNoArg, (caddr_t) "off"},
-{"-lcc", "*localeFilter",XrmoptionSepArg, (caddr_t) NULL},
-{"-en", "*locale", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-{"-ulc", "*colorULMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+ulc", "*colorULMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-ulit", "*italicULMode", XrmoptionNoArg, (caddr_t) "off"},
-{"+ulit", "*italicULMode", XrmoptionNoArg, (caddr_t) "on"},
-{"-ut", "*utmpInhibit", XrmoptionNoArg, (caddr_t) "on"},
-{"+ut", "*utmpInhibit", XrmoptionNoArg, (caddr_t) "off"},
-{"-im", "*useInsertMode", XrmoptionNoArg, (caddr_t) "on"},
-{"+im", "*useInsertMode", XrmoptionNoArg, (caddr_t) "off"},
-{"-vb", "*visualBell", XrmoptionNoArg, (caddr_t) "on"},
-{"+vb", "*visualBell", XrmoptionNoArg, (caddr_t) "off"},
-{"-pob", "*popOnBell", XrmoptionNoArg, (caddr_t) "on"},
-{"+pob", "*popOnBell", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_WIDE_CHARS
-{"-wc", "*wideChars", XrmoptionNoArg, (caddr_t) "on"},
-{"+wc", "*wideChars", XrmoptionNoArg, (caddr_t) "off"},
-{"-mk_width", "*mkWidth", XrmoptionNoArg, (caddr_t) "on"},
-{"+mk_width", "*mkWidth", XrmoptionNoArg, (caddr_t) "off"},
-{"-cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "on"},
-{"+cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-{"-wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "on"},
-{"+wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "off"},
-#if OPT_ZICONBEEP
-{"-ziconbeep", "*zIconBeep", XrmoptionSepArg, (caddr_t) NULL},
-#endif
-#if OPT_SAME_NAME
-{"-samename", "*sameName", XrmoptionNoArg, (caddr_t) "on"},
-{"+samename", "*sameName", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-#if OPT_SESSION_MGT
-{"-sm", "*sessionMgt", XrmoptionNoArg, (caddr_t) "on"},
-{"+sm", "*sessionMgt", XrmoptionNoArg, (caddr_t) "off"},
-#endif
-#if OPT_TOOLBAR
-{"-tb", "*"XtNtoolBar, XrmoptionNoArg, (caddr_t) "on"},
-{"+tb", "*"XtNtoolBar, XrmoptionNoArg, (caddr_t) "off"},
-#endif
-/* options that we process ourselves */
-{"-help", NULL, XrmoptionSkipNArgs, (caddr_t) NULL},
-{"-version", NULL, XrmoptionSkipNArgs, (caddr_t) NULL},
-{"-class", NULL, XrmoptionSkipArg, (caddr_t) NULL},
-{"-e", NULL, XrmoptionSkipLine, (caddr_t) NULL},
-{"-into", NULL, XrmoptionSkipArg, (caddr_t) NULL},
-/* bogus old compatibility stuff for which there are
- standard XtOpenApplication options now */
-{"%", "*tekGeometry", XrmoptionStickyArg, (caddr_t) NULL},
-{"#", ".iconGeometry",XrmoptionStickyArg, (caddr_t) NULL},
-{"-T", ".title", XrmoptionSepArg, (caddr_t) NULL},
-{"-n", "*iconName", XrmoptionSepArg, (caddr_t) NULL},
-{"-r", "*reverseVideo",XrmoptionNoArg, (caddr_t) "on"},
-{"+r", "*reverseVideo",XrmoptionNoArg, (caddr_t) "off"},
-{"-rv", "*reverseVideo",XrmoptionNoArg, (caddr_t) "on"},
-{"+rv", "*reverseVideo",XrmoptionNoArg, (caddr_t) "off"},
-{"-w", ".borderWidth", XrmoptionSepArg, (caddr_t) NULL},
-};
-
-static OptionHelp xtermOptions[] = {
-{ "-version", "print the version number" },
-{ "-help", "print out this message" },
-{ "-display displayname", "X server to contact" },
-{ "-geometry geom", "size (in characters) and position" },
-{ "-/+rv", "turn on/off reverse video" },
-{ "-bg color", "background color" },
-{ "-fg color", "foreground color" },
-{ "-bd color", "border color" },
-{ "-bw number", "border width in pixels" },
-{ "-fn fontname", "normal text font" },
-{ "-fb fontname", "bold text font" },
-{ "-/+fbb", "turn on/off normal/bold font comparison inhibit"},
-{ "-/+fbx", "turn off/on linedrawing characters"},
-#if OPT_RENDERFONT
-{ "-fa pattern", "FreeType font-selection pattern" },
-{ "-fd pattern", "FreeType Doublesize font-selection pattern" },
-{ "-fs size", "FreeType font-size" },
-#endif
-#if OPT_WIDE_CHARS
-{ "-fw fontname", "doublewidth text font" },
-{ "-fwb fontname", "doublewidth bold text font" },
-#endif
-#if OPT_INPUT_METHOD
-{ "-fx fontname", "XIM fontset" },
-#endif
-{ "-iconic", "start iconic" },
-{ "-name string", "client instance, icon, and title strings" },
-{ "-class string", "class string (XTerm)" },
-{ "-title string", "title string" },
-{ "-xrm resourcestring", "additional resource specifications" },
-{ "-/+132", "turn on/off 80/132 column switching" },
-{ "-/+ah", "turn on/off always highlight" },
-#ifndef NO_ACTIVE_ICON
-{ "-/+ai", "turn off/on active icon" },
-{ "-fi fontname", "icon font for active icon" },
-#endif /* NO_ACTIVE_ICON */
-{ "-b number", "internal border in pixels" },
-{ "-/+bc", "turn on/off text cursor blinking" },
-{ "-bcf milliseconds", "time text cursor is off when blinking"},
-{ "-bcn milliseconds", "time text cursor is on when blinking"},
-{ "-/+bdc", "turn off/on display of bold as color"},
-{ "-/+cb", "turn on/off cut-to-beginning-of-line inhibit" },
-{ "-cc classrange", "specify additional character classes" },
-{ "-/+cm", "turn off/on ANSI color mode" },
-{ "-/+cn", "turn on/off cut newline inhibit" },
-{ "-cr color", "text cursor color" },
-{ "-/+cu", "turn on/off curses emulation" },
-{ "-/+dc", "turn off/on dynamic color selection" },
-#if OPT_HIGHLIGHT_COLOR
-{ "-hc color", "selection background color" },
-#endif
-#if OPT_HP_FUNC_KEYS
-{ "-/+hf", "turn on/off HP Function Key escape codes" },
-#endif
-{ "-/+hold", "turn on/off logic that retains window after exit" },
-#if OPT_INITIAL_ERASE
-{ "-/+ie", "turn on/off initialization of 'erase' from pty" },
-#endif
-{ "-/+im", "use insert mode for TERMCAP" },
-{ "-/+j", "turn on/off jump scroll" },
-#if OPT_C1_PRINT
-{ "-/+k8", "turn on/off C1-printable classification"},
-#endif
-{ "-kt keyboardtype", "set keyboard type:" KEYBOARD_TYPES },
-#ifdef ALLOWLOGGING
-{ "-/+l", "turn on/off logging" },
-{ "-lf filename", "logging filename" },
-#else
-{ "-/+l", "turn on/off logging (not supported)" },
-{ "-lf filename", "logging filename (not supported)" },
-#endif
-{ "-/+ls", "turn on/off login shell" },
-{ "-/+mb", "turn on/off margin bell" },
-{ "-mc milliseconds", "multiclick time in milliseconds" },
-{ "-/+mesg", "forbid/allow messages" },
-{ "-ms color", "pointer color" },
-{ "-nb number", "margin bell in characters from right end" },
-{ "-/+nul", "turn off/on display of underlining" },
-{ "-/+aw", "turn on/off auto wraparound" },
-{ "-/+pc", "turn on/off PC-style bold colors" },
-{ "-/+rw", "turn on/off reverse wraparound" },
-{ "-/+s", "turn on/off multiscroll" },
-{ "-/+sb", "turn on/off scrollbar" },
-#ifdef SCROLLBAR_RIGHT
-{ "-rightbar", "force scrollbar right (default left)" },
-{ "-leftbar", "force scrollbar left" },
-#endif
-{ "-/+rvc", "turn off/on display of reverse as color" },
-{ "-/+sf", "turn on/off Sun Function Key escape codes" },
-{ "-/+si", "turn on/off scroll-on-tty-output inhibit" },
-{ "-/+sk", "turn on/off scroll-on-keypress" },
-{ "-sl number", "number of scrolled lines to save" },
-#if OPT_SUNPC_KBD
-{ "-/+sp", "turn on/off Sun/PC Function/Keypad mapping" },
-#endif
-#if OPT_TEK4014
-{ "-/+t", "turn on/off Tek emulation window" },
-#endif
-#if OPT_TOOLBAR
-{ "-/+tb", "turn on/off toolbar" },
-#endif
-{ "-ti termid", "terminal identifier" },
-{ "-tm string", "terminal mode keywords and characters" },
-{ "-tn name", "TERM environment variable name" },
-#if OPT_WIDE_CHARS
-{ "-/+u8", "turn on/off UTF-8 mode (implies wide-characters)" },
-#endif
-#if OPT_LUIT_PROG
-{ "-/+lc", "turn on/off locale mode using luit" },
-{ "-lcc path", "filename of locale converter (" DEFLOCALEFILTER ")" },
-#endif
-{ "-/+ulc", "turn off/on display of underline as color" },
-{ "-/+ut", "turn on/off utmp inhibit (not supported)" },
-{ "-/+ulit", "turn off/on display of underline as italics" },
-{ "-/+vb", "turn on/off visual bell" },
-{ "-/+pob", "turn on/off pop on bell" },
-#if OPT_WIDE_CHARS
-{ "-/+wc", "turn on/off wide-character mode" },
-{ "-/+mk_width", "turn on/off simple width convention" },
-{ "-/+cjk_width", "turn on/off legacy CJK width convention" },
-#endif
-{ "-/+wf", "turn on/off wait for map before command exec" },
-{ "-e command args ...", "command to execute" },
-#if OPT_TEK4014
-{ "%geom", "Tek window geometry" },
-#endif
-{ "#geom", "icon window geometry" },
-{ "-T string", "title name for window" },
-{ "-n string", "icon name for window" },
-{ "-C", "intercept console messages" },
-{ "-Sccn", "slave mode on \"ttycc\", file descriptor \"n\"" },
-{ "-into windowId", "use the window id given to -into as the parent window rather than the default root window" },
-#if OPT_ZICONBEEP
-{ "-ziconbeep percent", "beep and flag icon of window having hidden output" },
-#endif
-#if OPT_SAME_NAME
-{ "-/+samename", "turn on/off the no-flicker option for title and icon name" },
-#endif
-#if OPT_SESSION_MGT
-{ "-/+sm", "turn on/off the session-management support" },
-#endif
-{ NULL, NULL }};
-/* *INDENT-ON* */
-
-/*debug FILE *confd;*/
-/*static void opencons()
-{
- if ((confd=fopen("/dev/console$","w")) < 0) {
- fputs("!!! Cannot open console device.\n",
- stderr);
- exit(1);
- }
-}
-
-static void closecons(void)
-{
- fclose(confd);
-}
-*/
-static char *message[] =
-{
- "Fonts should be fixed width and, if both normal and bold are specified, should",
- "have the same size. If only a normal font is specified, it will be used for",
- "both normal and bold text (by doing overstriking). The -e option, if given,",
- "must appear at the end of the command line, otherwise the user's default shell",
- "will be started. Options that start with a plus sign (+) restore the default.",
- NULL};
-
-/*
- * Decode a key-definition. This combines the termcap and ttyModes, for
- * comparison. Note that octal escapes in ttyModes are done by the normal
- * resource translation. Also, ttyModes allows '^-' as a synonym for disabled.
- */
-static int
-decode_keyvalue(char **ptr, int termcap)
-{
- char *string = *ptr;
- int value = -1;
-
- TRACE(("...decode '%s'\n", string));
- if (*string == '^') {
- switch (*++string) {
- case '?':
- value = A2E(127);
- break;
- case '-':
- if (!termcap) {
- errno = 0;
-#if defined(_POSIX_VDISABLE) && defined(HAVE_UNISTD_H)
- value = _POSIX_VDISABLE;
-#endif
-#if defined(_PC_VDISABLE)
- if (value == -1) {
- value = fpathconf(0, _PC_VDISABLE);
- if (value == -1) {
- if (errno != 0)
- break; /* skip this (error) */
- value = 0377;
- }
- }
-#elif defined(VDISABLE)
- if (value == -1)
- value = VDISABLE;
-#endif
- break;
- }
- /* FALLTHRU */
- default:
- value = CONTROL(*string);
- break;
- }
- ++string;
- } else if (termcap && (*string == '\\')) {
- char *d;
- int temp = strtol(string + 1, &d, 8);
- if (temp > 0 && d != string) {
- value = temp;
- string = d;
- }
- } else {
- value = CharOf(*string);
- ++string;
- }
- *ptr = string;
- return value;
-}
-
-/*
- * If we're linked to terminfo, tgetent() will return an empty buffer. We
- * cannot use that to adjust the $TERMCAP variable.
- */
-static Bool
-get_termcap(char *name, char *buffer, char *resized)
-{
- TScreen *screen = &term->screen;
-
- *buffer = 0; /* initialize, in case we're using terminfo's tgetent */
-
- if (name != 0) {
- if (tgetent(buffer, name) == 1) {
- TRACE(("get_termcap(%s) succeeded (%s)\n", name,
- (*buffer
- ? "ok:termcap, we can update $TERMCAP"
- : "assuming this is terminfo")));
- if (*buffer) {
- if (!TEK4014_ACTIVE(screen)) {
- resize(screen, buffer, resized);
- }
- }
- return True;
- } else {
- *buffer = 0; /* just in case */
- }
- }
- return False;
-}
-
-static int
-abbrev(char *tst, char *cmp, size_t need)
-{
- size_t len = strlen(tst);
- return ((len >= need) && (!strncmp(tst, cmp, len)));
-}
-
-static void
-Syntax(char *badOption)
-{
- OptionHelp *opt;
- OptionHelp *list = sortedOpts(xtermOptions, optionDescList, XtNumber(optionDescList));
- int col;
-
- fprintf(stderr, "%s: bad command line option \"%s\"\r\n\n",
- ProgramName, badOption);
-
- fprintf(stderr, "usage: %s", ProgramName);
- col = 8 + strlen(ProgramName);
- for (opt = list; opt->opt; opt++) {
- int len = 3 + strlen(opt->opt); /* space [ string ] */
- if (col + len > 79) {
- fprintf(stderr, "\r\n "); /* 3 spaces */
- col = 3;
- }
- fprintf(stderr, " [%s]", opt->opt);
- col += len;
- }
-
- fprintf(stderr, "\r\n\nType %s -help for a full description.\r\n\n",
- ProgramName);
- exit(1);
-}
-
-static void
-Version(void)
-{
- printf("%s\n", xtermVersion());
- fflush(stdout);
-}
-
-static void
-Help(void)
-{
- OptionHelp *opt;
- OptionHelp *list = sortedOpts(xtermOptions, optionDescList, XtNumber(optionDescList));
- char **cpp;
-
- printf("%s usage:\n %s [-options ...] [-e command args]\n\n",
- xtermVersion(), ProgramName);
- printf("where options include:\n");
- for (opt = list; opt->opt; opt++) {
- printf(" %-28s %s\n", opt->opt, opt->desc);
- }
-
- putchar('\n');
- for (cpp = message; *cpp; cpp++)
- puts(*cpp);
- putchar('\n');
- fflush(stdout);
-}
-
-/* ARGSUSED */
-static Boolean
-ConvertConsoleSelection(Widget w GCC_UNUSED,
- Atom * selection GCC_UNUSED,
- Atom * target GCC_UNUSED,
- Atom * type GCC_UNUSED,
- XtPointer *value GCC_UNUSED,
- unsigned long *length GCC_UNUSED,
- int *format GCC_UNUSED)
-{
- /* we don't save console output, so can't offer it */
- return False;
-}
-
-#if OPT_SESSION_MGT
-static void
-die_callback(Widget w GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- XtPointer call_data GCC_UNUSED)
-{
- Cleanup(0);
-}
-
-static void
-save_callback(Widget w GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- XtPointer call_data)
-{
- XtCheckpointToken token = (XtCheckpointToken) call_data;
- /* we have nothing to save */
- token->save_success = True;
-}
-#endif /* OPT_SESSION_MGT */
-
-/*
- * DeleteWindow(): Action proc to implement ICCCM delete_window.
- */
-/* ARGSUSED */
-static void
-DeleteWindow(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED)
-{
-#if OPT_TEK4014
- if (w == toplevel) {
- if (term->screen.Tshow)
- hide_vt_window();
- else
- do_hangup(w, (XtPointer) 0, (XtPointer) 0);
- } else if (term->screen.Vshow)
- hide_tek_window();
- else
-#endif
- do_hangup(w, (XtPointer) 0, (XtPointer) 0);
-}
-
-/* ARGSUSED */
-static void
-KeyboardMapping(Widget w GCC_UNUSED,
- XEvent * event,
- String * params GCC_UNUSED,
- Cardinal *num_params GCC_UNUSED)
-{
- switch (event->type) {
- case MappingNotify:
- XRefreshKeyboardMapping(&event->xmapping);
- break;
- }
-}
-
-static XtActionsRec actionProcs[] =
-{
- {"DeleteWindow", DeleteWindow},
- {"KeyboardMapping", KeyboardMapping},
-};
-
-char **gblenvp;
-
-int
-main(int argc, char **argv ENVP_ARG)
-{
- Widget form_top, menu_top;
- TScreen *screen;
- int mode;
- char *my_class = DEFCLASS;
- Window winToEmbedInto = None;
-
- /* Do these first, since we may not be able to open the display */
- ProgramName = argv[0];
- TRACE_OPTS(xtermOptions, optionDescList, XtNumber(optionDescList));
- TRACE_ARGV("Before XtOpenApplication", argv);
- if (argc > 1) {
- int n;
- unsigned unique = 2;
- Bool quit = True;
-
- for (n = 1; n < argc; n++) {
- TRACE(("parsing %s\n", argv[n]));
- if (abbrev(argv[n], "-version", unique)) {
- Version();
- } else if (abbrev(argv[n], "-help", unique)) {
- Help();
- } else if (abbrev(argv[n], "-class", 3)) {
- if ((my_class = argv[++n]) == 0) {
- Help();
- } else {
- quit = False;
- }
- unique = 3;
- } else {
- quit = False;
- unique = 3;
- }
- }
- if (quit)
- exit(0);
- }
-
- /* XXX: for some obscure reason EMX seems to lose the value of
- * the environ variable, don't understand why, so save it recently
- */
- gblenvp = envp;
-
-#ifdef I18N
- setlocale(LC_ALL, NULL);
-#endif
-
-/*debug opencons();*/
-
- ttydev = TypeMallocN(char, PTMS_BUFSZ);
- ptydev = TypeMallocN(char, PTMS_BUFSZ);
- if (!ttydev || !ptydev) {
- fprintf(stderr,
- "%s: unable to allocate memory for ttydev or ptydev\n",
- ProgramName);
- exit(1);
- }
- strcpy(ttydev, TTYDEV);
- strcpy(ptydev, PTYDEV);
-
- /* Initialization is done here rather than above in order
- * to prevent any assumptions about the order of the contents
- * of the various terminal structures (which may change from
- * implementation to implementation).
- */
- d_tio.c_iflag = ICRNL | IXON;
- d_tio.c_oflag = OPOST | ONLCR | TAB3;
- d_tio.c_cflag = B38400 | CS8 | CREAD | PARENB | HUPCL;
- d_tio.c_lflag = ISIG | ICANON | ECHO | ECHOE | ECHOK;
- d_tio.c_line = 0;
- d_tio.c_cc[VINTR] = CONTROL('C'); /* '^C' */
- d_tio.c_cc[VERASE] = 0x7f; /* DEL */
- d_tio.c_cc[VKILL] = CONTROL('U'); /* '^U' */
- d_tio.c_cc[VQUIT] = CQUIT; /* '^\' */
- d_tio.c_cc[VEOF] = CEOF; /* '^D' */
- d_tio.c_cc[VEOL] = CEOL; /* '^@' */
-
- XtSetErrorHandler(xt_error);
-#if OPT_SESSION_MGT
- toplevel = XtOpenApplication(&app_con, my_class,
- optionDescList,
- XtNumber(optionDescList),
- &argc, argv, fallback_resources,
- sessionShellWidgetClass,
- NULL, 0);
-#else
- toplevel = XtAppInitialize(&app_con, my_class,
- optionDescList,
- XtNumber(optionDescList),
- &argc, argv, fallback_resources,
- NULL, 0);
-#endif /* OPT_SESSION_MGT */
- XtSetErrorHandler((XtErrorHandler) 0);
-
- XtGetApplicationResources(toplevel, (XtPointer) &resource,
- application_resources,
- XtNumber(application_resources), NULL, 0);
- TRACE_XRES();
-
- waiting_for_initial_map = resource.wait_for_map;
-
- /*
- * ICCCM delete_window.
- */
- XtAppAddActions(app_con, actionProcs, XtNumber(actionProcs));
-
- /*
- * fill in terminal modes
- */
- if (resource.tty_modes) {
- int n = parse_tty_modes(resource.tty_modes, ttymodelist);
- if (n < 0) {
- fprintf(stderr, "%s: bad tty modes \"%s\"\n",
- ProgramName, resource.tty_modes);
- } else if (n > 0) {
- override_tty_modes = 1;
- }
- }
-#if OPT_ZICONBEEP
- zIconBeep = resource.zIconBeep;
- zIconBeep_flagged = False;
- if (zIconBeep > 100 || zIconBeep < -100) {
- zIconBeep = 0; /* was 100, but I prefer to defaulting off. */
- fprintf(stderr,
- "a number between -100 and 100 is required for zIconBeep. 0 used by default\n");
- }
-#endif /* OPT_ZICONBEEP */
-#if OPT_SAME_NAME
- sameName = resource.sameName;
-#endif
- hold_screen = resource.hold_screen ? 1 : 0;
- xterm_name = resource.xterm_name;
- if (strcmp(xterm_name, "-") == 0)
- xterm_name = DFT_TERMTYPE;
- if (resource.icon_geometry != NULL) {
- int scr, junk;
- int ix, iy;
- Arg args[2];
-
- for (scr = 0; /* yyuucchh */
- XtScreen(toplevel) != ScreenOfDisplay(XtDisplay(toplevel), scr);
- scr++) ;
-
- args[0].name = XtNiconX;
- args[1].name = XtNiconY;
- XGeometry(XtDisplay(toplevel), scr, resource.icon_geometry, "",
- 0, 0, 0, 0, 0, &ix, &iy, &junk, &junk);
- args[0].value = (XtArgVal) ix;
- args[1].value = (XtArgVal) iy;
- XtSetValues(toplevel, args, 2);
- }
-
- XtSetValues(toplevel, ourTopLevelShellArgs,
- number_ourTopLevelShellArgs);
-
-#if OPT_WIDE_CHARS
- /* seems as good a place as any */
- init_classtab();
-#endif
-
- /* Parse the rest of the command line */
- TRACE_ARGV("After XtOpenApplication", argv);
- for (argc--, argv++; argc > 0; argc--, argv++) {
- if (**argv != '-')
- Syntax(*argv);
-
- TRACE(("parsing %s\n", argv[0]));
- switch (argv[0][1]) {
- case 'h': /* -help */
- Help();
- continue;
- case 'v': /* -version */
- Version();
- continue;
- case 'C':
- {
- struct stat sbuf;
-
- /* Must be owner and have read/write permission.
- xdm cooperates to give the console the right user. */
- if (!stat("/dev/console", &sbuf) &&
- (sbuf.st_uid == getuid()) &&
- !access("/dev/console", R_OK | W_OK)) {
- Console = True;
- } else
- Console = False;
- }
- continue;
- case 'S':
- if (sscanf(*argv + 2, "%c%c%d", passedPty, passedPty + 1,
- &am_slave) != 3)
- Syntax(*argv);
- continue;
-#ifdef DEBUG
- case 'D':
- debug = True;
- continue;
-#endif /* DEBUG */
- case 'c': /* -class param */
- if (strcmp(argv[0] + 1, "class") == 0)
- argc--, argv++;
- else
- Syntax(*argv);
- continue;
- case 'e':
- if (argc <= 1)
- Syntax(*argv);
- command_to_exec = ++argv;
- break;
- case 'i':
- if (argc <= 1) {
- Syntax(*argv);
- } else {
- char *endPtr;
- --argc;
- ++argv;
- winToEmbedInto = (Window) strtol(argv[0], &endPtr, 10);
- }
- continue;
-
- default:
- Syntax(*argv);
- }
- break;
- }
-
- SetupMenus(toplevel, &form_top, &menu_top);
-
- term = (XtermWidget) XtVaCreateManagedWidget("vt100", xtermWidgetClass,
- form_top,
-#if OPT_TOOLBAR
- XtNmenuBar, menu_top,
- XtNresizable, True,
- XtNfromVert, menu_top,
- XtNleft, XawChainLeft,
- XtNright, XawChainRight,
- XtNtop, XawChainTop,
- XtNbottom, XawChainBottom,
-#endif
- (XtPointer) 0);
-
- decode_keyboard_type(&resource);
-
- screen = &term->screen;
-
- screen->inhibit = 0;
-#ifdef ALLOWLOGGING
- if (term->misc.logInhibit)
- screen->inhibit |= I_LOG;
-#endif
- if (term->misc.signalInhibit)
- screen->inhibit |= I_SIGNAL;
-#if OPT_TEK4014
- if (term->misc.tekInhibit)
- screen->inhibit |= I_TEK;
-#endif
-
- /*
- * We might start by showing the tek4014 window.
- */
-#if OPT_TEK4014
- if (screen->inhibit & I_TEK)
- screen->TekEmu = False;
-
- if (screen->TekEmu && !TekInit())
- exit(ERROR_INIT);
-#endif
-
- /*
- * Start the toolbar at this point, after the first window has been setup.
- */
-#if OPT_TOOLBAR
- ShowToolbar(resource.toolBar);
-#endif
-
-#if OPT_SESSION_MGT
- if (resource.sessionMgt) {
- TRACE(("Enabling session-management callbacks\n"));
- XtAddCallback(toplevel, XtNdieCallback, die_callback, NULL);
- XtAddCallback(toplevel, XtNsaveCallback, save_callback, NULL);
- }
-#endif
-
- /*
- * Set title and icon name if not specified
- */
- if (command_to_exec) {
- Arg args[2];
-
- if (!resource.title) {
- if (command_to_exec) {
- resource.title = x_basename(command_to_exec[0]);
- } /* else not reached */
- }
-
- if (!resource.icon_name)
- resource.icon_name = resource.title;
- XtSetArg(args[0], XtNtitle, resource.title);
- XtSetArg(args[1], XtNiconName, resource.icon_name);
-
- TRACE(("setting:\n\ttitle \"%s\"\n\ticon \"%s\"\n\tbased on command \"%s\"\n",
- resource.title,
- resource.icon_name,
- *command_to_exec));
-
- XtSetValues(toplevel, args, 2);
- }
-#if OPT_LUIT_PROG
- if (term->misc.callfilter) {
- int u = (term->misc.use_encoding ? 2 : 0);
- if (command_to_exec) {
- int n;
- char **c;
- for (n = 0, c = command_to_exec; *c; n++, c++) ;
- c = TypeMallocN(char *, n + 3 + u);
- if (c == NULL)
- SysError(ERROR_LUMALLOC);
- memcpy(c + 2 + u, command_to_exec, (n + 1) * sizeof(char *));
- c[0] = term->misc.localefilter;
- if (u) {
- c[1] = "-encoding";
- c[2] = term->misc.locale_str;
- }
- c[1 + u] = "--";
- command_to_exec_with_luit = c;
- } else {
- static char *luit[4];
- luit[0] = term->misc.localefilter;
- if (u) {
- luit[1] = "-encoding";
- luit[2] = term->misc.locale_str;
- luit[3] = NULL;
- } else
- luit[1] = NULL;
- command_to_exec_with_luit = luit;
- }
- }
-#endif
-
-#ifdef DEBUG
- {
- /* Set up stderr properly. Opening this log file cannot be
- done securely by a privileged xterm process (although we try),
- so the debug feature is disabled by default. */
- int i = -1;
- if (debug) {
- creat_as(getuid(), getgid(), True, "xterm.debug.log", 0666);
- i = open("xterm.debug.log", O_WRONLY | O_TRUNC);
- }
- if (i >= 0) {
- dup2(i, 2);
-
- /* mark this file as close on exec */
- (void) fcntl(i, F_SETFD, 1);
- }
- }
-#endif /* DEBUG */
-
- /* open a terminal for client */
- get_terminal();
-
- spawn();
-
- /* Child process is out there, let's catch its termination */
- (void) signal(SIGCHLD, reapchild);
-
- /* Realize procs have now been executed */
-
- if (am_slave >= 0) { /* Write window id so master end can read and use */
- char buf[80];
-
- buf[0] = '\0';
- sprintf(buf, "%lx\n", XtWindow(SHELL_OF(CURRENT_EMU(screen))));
- write(screen->respond, buf, strlen(buf));
- }
-
- if (0 > (mode = fcntl(screen->respond, F_GETFL, 0)))
- SysError(ERROR_F_GETFL);
- mode |= O_NDELAY;
-
- if (fcntl(screen->respond, F_SETFL, mode))
- SysError(ERROR_F_SETFL);
-
- FD_ZERO(&pty_mask);
- FD_ZERO(&X_mask);
- FD_ZERO(&Select_mask);
- FD_SET(screen->respond, &pty_mask);
- FD_SET(ConnectionNumber(screen->display), &X_mask);
- FD_SET(screen->respond, &Select_mask);
- FD_SET(ConnectionNumber(screen->display), &Select_mask);
- max_plus1 = ((screen->respond < ConnectionNumber(screen->display))
- ? (1 + ConnectionNumber(screen->display))
- : (1 + screen->respond));
-
-#ifdef DEBUG
- if (debug)
- printf("debugging on\n");
-#endif /* DEBUG */
- XSetErrorHandler(xerror);
- XSetIOErrorHandler(xioerror);
-
- initPtyData(&VTbuffer);
-#ifdef ALLOWLOGGING
- if (term->misc.log_on) {
- StartLog(screen);
- }
-#endif
-
- if (winToEmbedInto != None) {
- XtRealizeWidget(toplevel);
- /*
- * This should probably query the tree or check the attributes of
- * winToEmbedInto in order to verify that it exists, but I'm still not
- * certain what is the best way to do it -GPS
- */
- XReparentWindow(XtDisplay(toplevel),
- XtWindow(toplevel),
- winToEmbedInto, 0, 0);
- }
-
- for (;;) {
-#if OPT_TEK4014
- if (screen->TekEmu)
- TekRun();
- else
-#endif
- VTRun();
- }
- return 0;
-}
-
-/*
- * Called from get_pty to iterate over likely pseudo terminals
- * we might allocate. Used on those systems that do not have
- * a functional interface for allocating a pty.
- * Returns 0 if found a pty, 1 if fails.
- */
-static int
-pty_search(int *pty)
-{
- char namebuf[PTMS_BUFSZ];
-
- /* ask the PTY manager */
- int fd = open("/dev/ptms$", 0);
- if (fd && ptioctl(fd, PTMS_GETPTY, namebuf) == 0) {
- strcpy(ttydev, namebuf);
- strcpy(ptydev, namebuf);
- *x_basename(ttydev) = 't';
- close(fd);
- if ((*pty = open(ptydev, O_RDWR)) >= 0) {
-#ifdef PTYDEBUG
- ptioctl(*pty, XTY_TRACE, 0);
-#endif
- return 0;
- } else {
- fprintf(stderr, "Unable to open %s, errno=%d\n", ptydev, errno);
- }
- }
- return 1;
-}
-
-/*
- * This function opens up a pty master and stuffs its value into pty.
- *
- * If it finds one, it returns a value of 0. If it does not find one,
- * it returns a value of !0. This routine is designed to be re-entrant,
- * so that if a pty master is found and later, we find that the slave
- * has problems, we can re-enter this function and get another one.
- */
-static int
-get_pty(int *pty)
-{
- return pty_search(pty);
-}
-
-/*
- * sets up X and initializes the terminal structure except for term.buf.fildes.
- */
-static void
-get_terminal(void)
-{
- TScreen *screen = &term->screen;
-
- screen->arrow = make_colored_cursor(XC_left_ptr,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
-}
-
-/*
- * The only difference in /etc/termcap between 4014 and 4015 is that
- * the latter has support for switching character sets. We support the
- * 4015 protocol, but ignore the character switches. Therefore, we
- * choose 4014 over 4015.
- *
- * Features of the 4014 over the 4012: larger (19") screen, 12-bit
- * graphics addressing (compatible with 4012 10-bit addressing),
- * special point plot mode, incremental plot mode (not implemented in
- * later Tektronix terminals), and 4 character sizes.
- * All of these are supported by xterm.
- */
-
-#if OPT_TEK4014
-static char *tekterm[] =
-{
- "tek4014",
- "tek4015", /* 4014 with APL character set support */
- "tek4012", /* 4010 with lower case */
- "tek4013", /* 4012 with APL character set support */
- "tek4010", /* small screen, upper-case only */
- "dumb",
- 0
-};
-#endif
-
-/* The VT102 is a VT100 with the Advanced Video Option included standard.
- * It also adds Escape sequences for insert/delete character/line.
- * The VT220 adds 8-bit character sets, selective erase.
- * The VT320 adds a 25th status line, terminal state interrogation.
- * The VT420 has up to 48 lines on the screen.
- */
-
-static char *vtterm[] =
-{
-#ifdef USE_X11TERM
- "x11term", /* for people who want special term name */
-#endif
- DFT_TERMTYPE, /* for people who want special term name */
- "xterm", /* the prefered name, should be fastest */
- "vt102",
- "vt100",
- "ansi",
- "dumb",
- 0
-};
-
-/* ARGSUSED */
-static SIGNAL_T
-hungtty(int i GCC_UNUSED)
-{
- longjmp(env, 1);
- SIGNAL_RETURN;
-}
-
-struct {
- int rows;
- int cols;
-} handshake = {
-
- -1, -1
-};
-
-void
-first_map_occurred(void)
-{
- TScreen *screen = &term->screen;
- handshake.rows = screen->max_row;
- handshake.cols = screen->max_col;
- waiting_for_initial_map = False;
-}
-
-static void
-set_owner(char *device, uid_t uid, gid_t gid, mode_t mode)
-{
- int why;
-
- if (chown(device, uid, gid) < 0) {
- why = errno;
- if (why != ENOENT
- && getuid() == 0) {
- fprintf(stderr, "Cannot chown %s to %ld,%ld: %s\n",
- device, (long) uid, (long) gid, strerror(why));
- }
- }
- if (chmod(device, mode) < 0) {
- why = errno;
- if (why != ENOENT) {
- struct stat sb;
- if (stat(device, &sb) < 0) {
- fprintf(stderr, "Cannot chmod %s to %03o: %s\n",
- device, mode, strerror(why));
- } else {
- fprintf(stderr,
- "Cannot chmod %s to %03o currently %03o: %s\n",
- device, mode, (sb.st_mode & S_IFMT), strerror(why));
- }
- }
- }
-}
-
-#define THE_PARENT 1
-#define THE_CHILD 2
-int whoami = -1;
-
-SIGNAL_T
-killit(int sig)
-{
- switch (whoami) {
- case -1:
- signal(sig, killit);
- kill(-getpid(), sig);
- break;
- case THE_PARENT:
- wait(NULL);
- signal(SIGTERM, SIG_DFL);
- kill(-getpid(), SIGTERM);
- Exit(0);
- break;
- case THE_CHILD:
- signal(SIGTERM, SIG_DFL);
- kill(-getppid(), SIGTERM);
- Exit(0);
- break;
- }
-
- SIGNAL_RETURN;
-}
-
-#define close_fd(fd) close(fd), fd = -1
-
-static int
-spawn(void)
-/*
- * Inits pty and tty and forks a login process.
- * Does not close fd Xsocket.
- * If slave, the pty named in passedPty is already open for use
- */
-{
- TScreen *screen = &term->screen;
- int Xsocket = ConnectionNumber(screen->display);
-
- int ttyfd = -1;
- struct termio tio;
- int status;
-
- char termcap[TERMCAP_SIZE], newtc[TERMCAP_SIZE];
- char *TermName = NULL;
- char *ptr, *shname, buf[64];
- int i, no_dev_tty = False, envsize;
- char *dev_tty_name = (char *) 0;
- TTYSIZE_STRUCT ts;
- int pgrp = getpid();
- char numbuf[12], **envnew;
-
- screen->uid = getuid();
- screen->gid = getgid();
-
- if (am_slave >= 0) {
- screen->respond = am_slave;
- ptydev[strlen(ptydev) - 2] =
- ttydev[strlen(ttydev) - 2] = passedPty[0];
- ptydev[strlen(ptydev) - 1] =
- ttydev[strlen(ttydev) - 1] = passedPty[1];
-
- setgid(screen->gid);
- setuid(screen->uid);
- } else {
- Bool tty_got_hung;
-
- /*
- * Sometimes /dev/tty hangs on open (as in the case of a pty
- * that has gone away). Simply make up some reasonable
- * defaults.
- */
-
- signal(SIGALRM, hungtty);
- alarm(2); /* alarm(1) might return too soon */
- if (!setjmp(env)) {
- ttyfd = open("/dev/tty", O_RDWR);
- alarm(0);
- tty_got_hung = False;
- } else {
- tty_got_hung = True;
- ttyfd = -1;
- errno = ENXIO;
- }
- signal(SIGALRM, SIG_DFL);
-
- /*
- * Check results and ignore current control terminal if
- * necessary. ENXIO is what is normally returned if there is
- * no controlling terminal, but some systems (e.g. SunOS 4.0)
- * seem to return EIO. Solaris 2.3 is said to return EINVAL.
- */
- if (ttyfd < 0) {
- if (tty_got_hung || errno == ENXIO || errno == EIO ||
- errno == EINVAL || errno == ENOTTY) {
- no_dev_tty = True;
- tio = d_tio;
- } else {
- SysError(ERROR_OPDEVTTY);
- }
- } else {
-
- /* Get a copy of the current terminal's state,
- * if we can. Some systems (e.g., SVR4 and MacII)
- * may not have a controlling terminal at this point
- * if started directly from xdm or xinit,
- * in which case we just use the defaults as above.
- */
- if (ioctl(ttyfd, TCGETA, &tio) == -1)
- tio = d_tio;
-
- close_fd(ttyfd);
- }
-
- if (get_pty(&screen->respond)) {
- /* no ptys! */
- exit(ERROR_PTYS);
- }
- }
-
- /* avoid double MapWindow requests */
- XtSetMappedWhenManaged(XtParent(CURRENT_EMU(screen)), False);
-
- wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW",
- False);
-
- if (!TEK4014_ACTIVE(screen))
- VTInit(); /* realize now so know window size for tty driver */
-
- if (Console) {
- /*
- * Inform any running xconsole program
- * that we are going to steal the console.
- */
- XmuGetHostname(mit_console_name + MIT_CONSOLE_LEN, 255);
- mit_console = XInternAtom(screen->display, mit_console_name, False);
- /* the user told us to be the console, so we can use CurrentTime */
- XtOwnSelection(XtParent(CURRENT_EMU(screen)),
- mit_console, CurrentTime,
- ConvertConsoleSelection, NULL, NULL);
- }
-#if OPT_TEK4014
- if (screen->TekEmu) {
- envnew = tekterm;
- ptr = newtc;
- } else
-#endif
- {
- envnew = vtterm;
- ptr = termcap;
- }
-
- /*
- * This used to exit if no termcap entry was found for the specified
- * terminal name. That's a little unfriendly, so instead we'll allow
- * the program to proceed (but not to set $TERMCAP) if the termcap
- * entry is not found.
- */
- if (!get_termcap(TermName = resource.term_name, ptr, newtc)) {
- char *last = NULL;
- TermName = *envnew;
- while (*envnew != NULL) {
- if ((last == NULL || strcmp(last, *envnew))
- && get_termcap(*envnew, ptr, newtc)) {
- TermName = *envnew;
- break;
- }
- last = *envnew;
- envnew++;
- }
- }
-
- /* tell tty how big window is */
-#if OPT_TEK4014
- if (TEK4014_ACTIVE(screen)) {
- TTYSIZE_ROWS(ts) = 38;
- TTYSIZE_COLS(ts) = 81;
- ts.ws_xpixel = TFullWidth(screen);
- ts.ws_ypixel = TFullHeight(screen);
- } else
-#endif
- {
- TTYSIZE_ROWS(ts) = MaxRows(screen);
- TTYSIZE_COLS(ts) = MaxCols(screen);
- ts.ws_xpixel = FullWidth(screen);
- ts.ws_ypixel = FullHeight(screen);
- }
-
- if (am_slave < 0) {
-
- char sema[40];
- HEV sev;
- /* start a child process
- * use an event sema for sync
- */
- sprintf(sema, "\\SEM32\\xterm%s", &ptydev[8]);
- if (DosCreateEventSem(sema, &sev, DC_SEM_SHARED, False))
- SysError(ERROR_FORK);
-
- switch ((screen->pid = fork())) {
- case -1: /* error */
- SysError(ERROR_FORK);
- default: /* parent */
- whoami = THE_PARENT;
- DosWaitEventSem(sev, 1000L);
- DosCloseEventSem(sev);
- break;
- case 0: /* child */
- whoami = THE_CHILD;
-
-/*debug fclose(confd);
-opencons();*/
- /* we don't need the socket, or the pty master anymore */
- close(ConnectionNumber(screen->display));
- close(screen->respond);
-
- /* Now is the time to set up our process group and
- * open up the pty slave.
- */
- if ((ttyfd = open(ttydev, O_RDWR)) < 0) {
- /* dumm gelaufen */
- fprintf(stderr, "Cannot open slave side of PTY\n");
- exit(1);
- }
-
- /* use the same tty name that everyone else will use
- * (from ttyname)
- */
-#ifdef EMXNOTBOGUS
- if ((ptr = ttyname(ttyfd)) != 0) {
- /* it may be bigger */
- ttydev = TypeRealloc(char, strlen(ptr) + 1, ttydev);
- if (ttydev == NULL) {
- SysError(ERROR_SPREALLOC);
- }
- (void) strcpy(ttydev, ptr);
- }
-#else
- ptr = ttydev;
-#endif
- /* for safety: enable DUPs */
- ptioctl(ttyfd, XTY_ENADUP, 0);
-
- /* change ownership of tty to real group and user id */
- set_owner(ttydev, screen->uid, screen->gid,
- (resource.messages ? 0622U : 0600U));
-
- /* for the xf86sup-pty, we set the pty to bypass: OS/2 does
- * not have a line discipline structure
- */
- {
- struct termio t, t1;
- if (ptioctl(ttyfd, TCGETA, (char *) &t) < 0)
- t = d_tio;
-
- t.c_iflag = ICRNL;
- t.c_oflag = OPOST | ONLCR;
- t.c_lflag = ISIG | ICANON | ECHO | ECHOE | ECHOK;
-
- /* ignore error code, user will see it :-) */
- ptioctl(ttyfd, TCSETA, (char *) &t);
-
- /* set the console mode */
- if (Console) {
- int on = 1;
- if (ioctl(ttyfd, TIOCCONS, (char *) &on) == -1)
- fprintf(stderr, "%s: cannot open console\n", xterm_name);
- }
- }
-
- signal(SIGCHLD, SIG_DFL);
- signal(SIGHUP, SIG_IGN);
-
- /* restore various signals to their defaults */
- signal(SIGINT, SIG_DFL);
- signal(SIGQUIT, SIG_DFL);
- signal(SIGTERM, SIG_DFL);
-
- /* copy the environment before Setenv'ing */
- for (i = 0; gblenvp[i] != NULL; i++) ;
-
- /* compute number of xtermSetenv() calls below */
- envsize = 1; /* (NULL terminating entry) */
- envsize += 5; /* TERM, WINDOWID, DISPLAY, _SHELL, _VERSION */
- envsize += 2; /* COLUMNS, LINES */
-
- envnew = TypeCallocN(char *, (unsigned) i + envsize);
- memmove((char *) envnew, (char *) gblenvp, i * sizeof(char *));
- gblenvp = envnew;
- xtermSetenv("TERM=", TermName);
- if (!TermName)
- *newtc = 0;
-
- sprintf(buf, "%lu",
- ((unsigned long) XtWindow(SHELL_OF(CURRENT_EMU(screen)))));
- xtermSetenv("WINDOWID=", buf);
-
- /* put the display into the environment of the shell */
- xtermSetenv("DISPLAY=", XDisplayString(screen->display));
-
- xtermSetenv("XTERM_VERSION=", xtermVersion());
-
- signal(SIGTERM, SIG_DFL);
-
- /* this is the time to go and set up stdin, out, and err
- */
- /* dup the tty */
- for (i = 0; i <= 2; i++)
- if (i != ttyfd) {
- (void) close(i);
- (void) dup(ttyfd);
- }
-
- /* and close the tty */
- if (ttyfd > 2)
- close_fd(ttyfd);
-
- setpgrp(0, pgrp);
- setgid(screen->gid);
- setuid(screen->uid);
-
- if (handshake.rows > 0 && handshake.cols > 0) {
- set_max_row(screen, handshake.rows);
- set_max_col(screen, handshake.cols);
- TTYSIZE_ROWS(ts) = MaxRows(screen);
- TTYSIZE_COLS(ts) = MaxCols(screen);
- ts.ws_xpixel = FullWidth(screen);
- ts.ws_ypixel = FullHeight(screen);
- }
-
- sprintf(numbuf, "%d", MaxCols(screen));
- xtermSetenv("COLUMNS=", numbuf);
- sprintf(numbuf, "%d", MaxRows(screen));
- xtermSetenv("LINES=", numbuf);
-
- /* reconstruct dead environ variable */
- environ = gblenvp;
-
- /* need to reset after all the ioctl bashing we did above */
- ptioctl(0, TIOCSWINSZ, (char *) &ts);
-
- signal(SIGHUP, SIG_DFL);
-
- /* okay everything seems right, so tell the parent, we are going */
- {
- char sema[40];
- HEV sev;
- sprintf(sema, "\\SEM32\\xterm%s", &ttydev[8]);
- DosOpenEventSem(sema, &sev);
- DosPostEventSem(sev);
- DosCloseEventSem(sev);
- }
-
-#if OPT_LUIT_PROG
- /*
- * Use two copies of command_to_exec, in case luit is not actually
- * there, or refuses to run. In that case we will fall-through to
- * to command that the user gave anyway.
- */
- if (command_to_exec_with_luit) {
- xtermSetenv("XTERM_SHELL=",
- xtermFindShell(*command_to_exec_with_luit, False));
- TRACE(("spawning command \"%s\"\n", *command_to_exec_with_luit));
- execvp(*command_to_exec_with_luit, command_to_exec_with_luit);
- /* print error message on screen */
- fprintf(stderr, "%s: Can't execvp %s: %s\n",
- xterm_name, *command_to_exec_with_luit, strerror(errno));
- fprintf(stderr, "%s: cannot support your locale.\n",
- xterm_name);
- }
-#endif
- if (command_to_exec) {
- xtermSetenv("XTERM_SHELL=",
- xtermFindShell(*command_to_exec, False));
- TRACE(("spawning command \"%s\"\n", *command_to_exec));
- execvpe(*command_to_exec, command_to_exec, gblenvp);
-
- /* print error message on screen */
- fprintf(stderr, "%s: Can't execvp %s\n",
- xterm_name, *command_to_exec);
- }
-
- /* use a layered mechanism to find a shell */
- ptr = getenv("X11SHELL");
- if (!ptr)
- ptr = getenv("SHELL");
- if (!ptr)
- ptr = getenv("OS2_SHELL");
- if (!ptr)
- ptr = "SORRY_NO_SHELL_FOUND";
- xtermSetenv("XTERM_SHELL=", ptr);
-
- shname = x_basename(ptr);
- if (command_to_exec) {
- char *exargv[10]; /*XXX */
-
- exargv[0] = ptr;
- exargv[1] = "/C";
- exargv[2] = command_to_exec[0];
- exargv[3] = command_to_exec[1];
- exargv[4] = command_to_exec[2];
- exargv[5] = command_to_exec[3];
- exargv[6] = command_to_exec[4];
- exargv[7] = command_to_exec[5];
- exargv[8] = command_to_exec[6];
- exargv[9] = 0;
- execvpe(exargv[0], exargv, gblenvp);
-
- /* print error message on screen */
- fprintf(stderr, "%s: Can't execvp %s\n",
- xterm_name, *command_to_exec);
- } else {
- execlpe(ptr, shname, 0, gblenvp);
-
- /* Exec failed. */
- fprintf(stderr, "%s: Could not exec %s!\n",
- xterm_name, ptr);
- }
- sleep(5);
-
- /* preventively shoot the parent */
- kill(-getppid(), SIGTERM);
-
- exit(ERROR_EXEC);
- } /* endcase */
- }
- /* !am_slave */
- signal(SIGHUP, SIG_IGN);
-/*
- * Unfortunately, System V seems to have trouble divorcing the child process
- * from the process group of xterm. This is a problem because hitting the
- * INTR or QUIT characters on the keyboard will cause xterm to go away if we
- * don't ignore the signals. This is annoying.
- */
-
-/* signal (SIGINT, SIG_IGN);*/
- signal(SIGINT, killit);
- signal(SIGTERM, killit);
-
- /* hung shell problem */
- signal(SIGQUIT, SIG_IGN);
-/* signal (SIGTERM, SIG_IGN);*/
- return 0;
-} /* end spawn */
-
-SIGNAL_T
-Exit(int n)
-{
- TScreen *screen = &term->screen;
- int pty = term->screen.respond; /* file descriptor of pty */
- close(pty); /* close explicitly to avoid race with slave side */
-#ifdef ALLOWLOGGING
- if (screen->logging)
- CloseLog(screen);
-#endif
- if (am_slave < 0) {
- /* restore ownership of tty and pty */
- set_owner(ttydev, 0, 0, 0666U);
- set_owner(ptydev, 0, 0, 0666U);
- }
- exit(n);
- SIGNAL_RETURN;
-}
-
-/* ARGSUSED */
-static void
-resize(TScreen * screen, char *oldtc, char *newtc)
-{
-}
-
-/*
- * Does a non-blocking wait for a child process. If the system
- * doesn't support non-blocking wait, do nothing.
- * Returns the pid of the child, or 0 or -1 if none or error.
- */
-int
-nonblocking_wait(void)
-{
- pid_t pid;
-
- pid = waitpid(-1, NULL, WNOHANG);
- return pid;
-}
-
-/* ARGSUSED */
-static SIGNAL_T
-reapchild(int n GCC_UNUSED)
-{
- int olderrno = errno;
- int pid;
-
- pid = wait(NULL);
-
- /* cannot re-enable signal before waiting for child
- * because then SVR4 loops. Sigh. HP-UX 9.01 too.
- */
- (void) signal(SIGCHLD, reapchild);
-
- do {
- if (pid == term->screen.pid) {
-#ifdef DEBUG
- if (debug)
- fputs("Exiting\n", stderr);
-#endif
- if (!hold_screen)
- need_cleanup = TRUE;
- }
- } while ((pid = nonblocking_wait()) > 0);
-
- errno = olderrno;
- SIGNAL_RETURN;
-}
-
-/*
- * parse_tty_modes accepts lines of the following form:
- *
- * [SETTING] ...
- *
- * where setting consists of the words in the modelist followed by a character
- * or ^char.
- */
-static int
-parse_tty_modes(char *s, struct _xttymodes *modelist)
-{
- struct _xttymodes *mp;
- int c;
- int count = 0;
-
- TRACE(("parse_tty_modes\n"));
- while (1) {
- while (*s && isascii(CharOf(*s)) && isspace(CharOf(*s)))
- s++;
- if (!*s)
- return count;
-
- for (mp = modelist; mp->name; mp++) {
- if (strncmp(s, mp->name, mp->len) == 0)
- break;
- }
- if (!mp->name)
- return -1;
-
- s += mp->len;
- while (*s && isascii(CharOf(*s)) && isspace(CharOf(*s)))
- s++;
- if (!*s)
- return -1;
-
- if ((c = decode_keyvalue(&s, False)) != -1) {
- mp->value = c;
- mp->set = 1;
- count++;
- TRACE(("...parsed #%d: %s=%#x\n", count, mp->name, c));
- }
- }
-}
-
-int
-GetBytesAvailable(int fd)
-{
- long arg;
- ioctl(fd, FIONREAD, (char *) &arg);
- return (int) arg;
-}
-
-/* Utility function to try to hide system differences from
- everybody who used to call killpg() */
-
-int
-kill_process_group(int pid, int sig)
-{
- return kill(-pid, sig);
-}
-
-int
-ptioctl(int fd, int func, void *data)
-{
- APIRET rc;
- ULONG len;
- struct pt_termios pt;
- struct termio *t;
- int i;
-
- switch (func) {
- case TCGETA:
- rc = DosDevIOCtl(fd, XFREE86_PTY, XTY_TIOCGETA,
- NULL, 0, NULL,
- (ULONG *) & pt, sizeof(struct pt_termios), &len);
- if (rc)
- return -1;
- t = (struct termio *) data;
- t->c_iflag = pt.c_iflag;
- t->c_oflag = pt.c_oflag;
- t->c_cflag = pt.c_cflag;
- t->c_lflag = pt.c_lflag;
- for (i = 0; i < NCC; i++)
- t->c_cc[i] = pt.c_cc[i];
- return 0;
- case TCSETA:
- case TCSETAW:
- case TCSETAF:
- t = (struct termio *) data;
- pt.c_iflag = t->c_iflag;
- pt.c_oflag = t->c_oflag;
- pt.c_cflag = t->c_cflag;
- pt.c_lflag = t->c_lflag;
-
- for (i = 0; i < NCC; i++)
- pt.c_cc[i] = t->c_cc[i];
- if (func == TCSETA)
- i = XTY_TIOCSETA;
- else if (func == TCSETAW)
- i = XTY_TIOCSETAW;
- else
- i = XTY_TIOCSETAF;
- rc = DosDevIOCtl(fd, XFREE86_PTY, i,
- (ULONG *) & pt, sizeof(struct pt_termios), &len,
- NULL, 0, NULL);
- return (rc) ? -1 : 0;
- case TIOCCONS:
- return DosDevIOCtl(fd, XFREE86_PTY, XTY_TIOCCONS,
- (ULONG *) data, sizeof(ULONG), &len,
- NULL, 0, NULL);
- case TIOCSWINSZ:
- return DosDevIOCtl(fd, XFREE86_PTY, XTY_TIOCSWINSZ,
- (ULONG *) data, sizeof(TTYSIZE_STRUCT), &len,
- NULL, 0, NULL);
- case TIOCGWINSZ:
- return DosDevIOCtl(fd, XFREE86_PTY, XTY_TIOCGWINSZ,
- NULL, 0, NULL,
- (ULONG *) data, sizeof(TTYSIZE_STRUCT), &len);
- case XTY_ENADUP:
- i = 1;
- return DosDevIOCtl(fd, XFREE86_PTY, XTY_ENADUP,
- (ULONG *) & i, sizeof(ULONG), &len,
- NULL, 0, NULL);
- case XTY_TRACE:
- i = 2;
- return DosDevIOCtl(fd, XFREE86_PTY, XTY_TRACE,
- (ULONG *) & i, sizeof(ULONG), &len,
- NULL, 0, NULL);
- case PTMS_GETPTY:
- i = 1;
- return DosDevIOCtl(fd, XFREE86_PTY, PTMS_GETPTY,
- (ULONG *) & i, sizeof(ULONG), &len,
- (UCHAR *) data, 14, &len);
- default:
- return -1;
- }
-}
diff --git a/nx-X11/programs/xterm/plink.sh b/nx-X11/programs/xterm/plink.sh
deleted file mode 100644
index 244f1b517..000000000
--- a/nx-X11/programs/xterm/plink.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-# $XTermId: plink.sh,v 1.4 2005/05/03 00:38:24 tom Exp $
-# $XFree86: xc/programs/xterm/plink.sh,v 3.2 2005/05/03 00:38:24 dickey Exp $
-#
-# Reduce the number of dynamic libraries used to link an executable.
-LINKIT=
-while test $# != 0
-do
- OPT="$1"
- shift
- case $OPT in
- -l*)
- echo "testing if $OPT is needed"
- if ( eval $LINKIT $* >/dev/null 2>/dev/null )
- then
- : echo ...no
- else
- echo ...yes
- LINKIT="$LINKIT $OPT"
- fi
- ;;
- *)
- LINKIT="$LINKIT $OPT"
- ;;
- esac
-done
-eval $LINKIT
diff --git a/nx-X11/programs/xterm/precompose.c b/nx-X11/programs/xterm/precompose.c
deleted file mode 100644
index afe4c3f3f..000000000
--- a/nx-X11/programs/xterm/precompose.c
+++ /dev/null
@@ -1,1041 +0,0 @@
-/*
- * Canonical Compositions
- *
- * DO NOT EDIT BY HAND! This is generated by the script
- * unicode/make-precompose.sh
- */
-/* $XTermId: precompose.c,v 1.7 2004/12/01 01:27:47 tom Exp $ */
-/* $XFree86: xc/programs/xterm/precompose.c,v 1.3 2004/12/01 01:27:47 dickey Exp $ */
-
-#include <precompose.h>
-
-static struct {
- int replacement;
- int base;
- int comb;
-} precompositions[] = {
-{ 0x226E, 0x003C, 0x0338},
-{ 0x2260, 0x003D, 0x0338},
-{ 0x226F, 0x003E, 0x0338},
-{ 0x00C0, 0x0041, 0x0300},
-{ 0x00C1, 0x0041, 0x0301},
-{ 0x00C2, 0x0041, 0x0302},
-{ 0x00C3, 0x0041, 0x0303},
-{ 0x0100, 0x0041, 0x0304},
-{ 0x0102, 0x0041, 0x0306},
-{ 0x0226, 0x0041, 0x0307},
-{ 0x00C4, 0x0041, 0x0308},
-{ 0x1EA2, 0x0041, 0x0309},
-{ 0x00C5, 0x0041, 0x030A},
-{ 0x01CD, 0x0041, 0x030C},
-{ 0x0200, 0x0041, 0x030F},
-{ 0x0202, 0x0041, 0x0311},
-{ 0x1EA0, 0x0041, 0x0323},
-{ 0x1E00, 0x0041, 0x0325},
-{ 0x0104, 0x0041, 0x0328},
-{ 0x1E02, 0x0042, 0x0307},
-{ 0x1E04, 0x0042, 0x0323},
-{ 0x1E06, 0x0042, 0x0331},
-{ 0x0106, 0x0043, 0x0301},
-{ 0x0108, 0x0043, 0x0302},
-{ 0x010A, 0x0043, 0x0307},
-{ 0x010C, 0x0043, 0x030C},
-{ 0x00C7, 0x0043, 0x0327},
-{ 0x1E0A, 0x0044, 0x0307},
-{ 0x010E, 0x0044, 0x030C},
-{ 0x1E0C, 0x0044, 0x0323},
-{ 0x1E10, 0x0044, 0x0327},
-{ 0x1E12, 0x0044, 0x032D},
-{ 0x1E0E, 0x0044, 0x0331},
-{ 0x00C8, 0x0045, 0x0300},
-{ 0x00C9, 0x0045, 0x0301},
-{ 0x00CA, 0x0045, 0x0302},
-{ 0x1EBC, 0x0045, 0x0303},
-{ 0x0112, 0x0045, 0x0304},
-{ 0x0114, 0x0045, 0x0306},
-{ 0x0116, 0x0045, 0x0307},
-{ 0x00CB, 0x0045, 0x0308},
-{ 0x1EBA, 0x0045, 0x0309},
-{ 0x011A, 0x0045, 0x030C},
-{ 0x0204, 0x0045, 0x030F},
-{ 0x0206, 0x0045, 0x0311},
-{ 0x1EB8, 0x0045, 0x0323},
-{ 0x0228, 0x0045, 0x0327},
-{ 0x0118, 0x0045, 0x0328},
-{ 0x1E18, 0x0045, 0x032D},
-{ 0x1E1A, 0x0045, 0x0330},
-{ 0x1E1E, 0x0046, 0x0307},
-{ 0x01F4, 0x0047, 0x0301},
-{ 0x011C, 0x0047, 0x0302},
-{ 0x1E20, 0x0047, 0x0304},
-{ 0x011E, 0x0047, 0x0306},
-{ 0x0120, 0x0047, 0x0307},
-{ 0x01E6, 0x0047, 0x030C},
-{ 0x0122, 0x0047, 0x0327},
-{ 0x0124, 0x0048, 0x0302},
-{ 0x1E22, 0x0048, 0x0307},
-{ 0x1E26, 0x0048, 0x0308},
-{ 0x021E, 0x0048, 0x030C},
-{ 0x1E24, 0x0048, 0x0323},
-{ 0x1E28, 0x0048, 0x0327},
-{ 0x1E2A, 0x0048, 0x032E},
-{ 0x00CC, 0x0049, 0x0300},
-{ 0x00CD, 0x0049, 0x0301},
-{ 0x00CE, 0x0049, 0x0302},
-{ 0x0128, 0x0049, 0x0303},
-{ 0x012A, 0x0049, 0x0304},
-{ 0x012C, 0x0049, 0x0306},
-{ 0x0130, 0x0049, 0x0307},
-{ 0x00CF, 0x0049, 0x0308},
-{ 0x1EC8, 0x0049, 0x0309},
-{ 0x01CF, 0x0049, 0x030C},
-{ 0x0208, 0x0049, 0x030F},
-{ 0x020A, 0x0049, 0x0311},
-{ 0x1ECA, 0x0049, 0x0323},
-{ 0x012E, 0x0049, 0x0328},
-{ 0x1E2C, 0x0049, 0x0330},
-{ 0x0134, 0x004A, 0x0302},
-{ 0x1E30, 0x004B, 0x0301},
-{ 0x01E8, 0x004B, 0x030C},
-{ 0x1E32, 0x004B, 0x0323},
-{ 0x0136, 0x004B, 0x0327},
-{ 0x1E34, 0x004B, 0x0331},
-{ 0x0139, 0x004C, 0x0301},
-{ 0x013D, 0x004C, 0x030C},
-{ 0x1E36, 0x004C, 0x0323},
-{ 0x013B, 0x004C, 0x0327},
-{ 0x1E3C, 0x004C, 0x032D},
-{ 0x1E3A, 0x004C, 0x0331},
-{ 0x1E3E, 0x004D, 0x0301},
-{ 0x1E40, 0x004D, 0x0307},
-{ 0x1E42, 0x004D, 0x0323},
-{ 0x01F8, 0x004E, 0x0300},
-{ 0x0143, 0x004E, 0x0301},
-{ 0x00D1, 0x004E, 0x0303},
-{ 0x1E44, 0x004E, 0x0307},
-{ 0x0147, 0x004E, 0x030C},
-{ 0x1E46, 0x004E, 0x0323},
-{ 0x0145, 0x004E, 0x0327},
-{ 0x1E4A, 0x004E, 0x032D},
-{ 0x1E48, 0x004E, 0x0331},
-{ 0x00D2, 0x004F, 0x0300},
-{ 0x00D3, 0x004F, 0x0301},
-{ 0x00D4, 0x004F, 0x0302},
-{ 0x00D5, 0x004F, 0x0303},
-{ 0x014C, 0x004F, 0x0304},
-{ 0x014E, 0x004F, 0x0306},
-{ 0x022E, 0x004F, 0x0307},
-{ 0x00D6, 0x004F, 0x0308},
-{ 0x1ECE, 0x004F, 0x0309},
-{ 0x0150, 0x004F, 0x030B},
-{ 0x01D1, 0x004F, 0x030C},
-{ 0x020C, 0x004F, 0x030F},
-{ 0x020E, 0x004F, 0x0311},
-{ 0x01A0, 0x004F, 0x031B},
-{ 0x1ECC, 0x004F, 0x0323},
-{ 0x01EA, 0x004F, 0x0328},
-{ 0x1E54, 0x0050, 0x0301},
-{ 0x1E56, 0x0050, 0x0307},
-{ 0x0154, 0x0052, 0x0301},
-{ 0x1E58, 0x0052, 0x0307},
-{ 0x0158, 0x0052, 0x030C},
-{ 0x0210, 0x0052, 0x030F},
-{ 0x0212, 0x0052, 0x0311},
-{ 0x1E5A, 0x0052, 0x0323},
-{ 0x0156, 0x0052, 0x0327},
-{ 0x1E5E, 0x0052, 0x0331},
-{ 0x015A, 0x0053, 0x0301},
-{ 0x015C, 0x0053, 0x0302},
-{ 0x1E60, 0x0053, 0x0307},
-{ 0x0160, 0x0053, 0x030C},
-{ 0x1E62, 0x0053, 0x0323},
-{ 0x0218, 0x0053, 0x0326},
-{ 0x015E, 0x0053, 0x0327},
-{ 0x1E6A, 0x0054, 0x0307},
-{ 0x0164, 0x0054, 0x030C},
-{ 0x1E6C, 0x0054, 0x0323},
-{ 0x021A, 0x0054, 0x0326},
-{ 0x0162, 0x0054, 0x0327},
-{ 0x1E70, 0x0054, 0x032D},
-{ 0x1E6E, 0x0054, 0x0331},
-{ 0x00D9, 0x0055, 0x0300},
-{ 0x00DA, 0x0055, 0x0301},
-{ 0x00DB, 0x0055, 0x0302},
-{ 0x0168, 0x0055, 0x0303},
-{ 0x016A, 0x0055, 0x0304},
-{ 0x016C, 0x0055, 0x0306},
-{ 0x00DC, 0x0055, 0x0308},
-{ 0x1EE6, 0x0055, 0x0309},
-{ 0x016E, 0x0055, 0x030A},
-{ 0x0170, 0x0055, 0x030B},
-{ 0x01D3, 0x0055, 0x030C},
-{ 0x0214, 0x0055, 0x030F},
-{ 0x0216, 0x0055, 0x0311},
-{ 0x01AF, 0x0055, 0x031B},
-{ 0x1EE4, 0x0055, 0x0323},
-{ 0x1E72, 0x0055, 0x0324},
-{ 0x0172, 0x0055, 0x0328},
-{ 0x1E76, 0x0055, 0x032D},
-{ 0x1E74, 0x0055, 0x0330},
-{ 0x1E7C, 0x0056, 0x0303},
-{ 0x1E7E, 0x0056, 0x0323},
-{ 0x1E80, 0x0057, 0x0300},
-{ 0x1E82, 0x0057, 0x0301},
-{ 0x0174, 0x0057, 0x0302},
-{ 0x1E86, 0x0057, 0x0307},
-{ 0x1E84, 0x0057, 0x0308},
-{ 0x1E88, 0x0057, 0x0323},
-{ 0x1E8A, 0x0058, 0x0307},
-{ 0x1E8C, 0x0058, 0x0308},
-{ 0x1EF2, 0x0059, 0x0300},
-{ 0x00DD, 0x0059, 0x0301},
-{ 0x0176, 0x0059, 0x0302},
-{ 0x1EF8, 0x0059, 0x0303},
-{ 0x0232, 0x0059, 0x0304},
-{ 0x1E8E, 0x0059, 0x0307},
-{ 0x0178, 0x0059, 0x0308},
-{ 0x1EF6, 0x0059, 0x0309},
-{ 0x1EF4, 0x0059, 0x0323},
-{ 0x0179, 0x005A, 0x0301},
-{ 0x1E90, 0x005A, 0x0302},
-{ 0x017B, 0x005A, 0x0307},
-{ 0x017D, 0x005A, 0x030C},
-{ 0x1E92, 0x005A, 0x0323},
-{ 0x1E94, 0x005A, 0x0331},
-{ 0x00E0, 0x0061, 0x0300},
-{ 0x00E1, 0x0061, 0x0301},
-{ 0x00E2, 0x0061, 0x0302},
-{ 0x00E3, 0x0061, 0x0303},
-{ 0x0101, 0x0061, 0x0304},
-{ 0x0103, 0x0061, 0x0306},
-{ 0x0227, 0x0061, 0x0307},
-{ 0x00E4, 0x0061, 0x0308},
-{ 0x1EA3, 0x0061, 0x0309},
-{ 0x00E5, 0x0061, 0x030A},
-{ 0x01CE, 0x0061, 0x030C},
-{ 0x0201, 0x0061, 0x030F},
-{ 0x0203, 0x0061, 0x0311},
-{ 0x1EA1, 0x0061, 0x0323},
-{ 0x1E01, 0x0061, 0x0325},
-{ 0x0105, 0x0061, 0x0328},
-{ 0x1E03, 0x0062, 0x0307},
-{ 0x1E05, 0x0062, 0x0323},
-{ 0x1E07, 0x0062, 0x0331},
-{ 0x0107, 0x0063, 0x0301},
-{ 0x0109, 0x0063, 0x0302},
-{ 0x010B, 0x0063, 0x0307},
-{ 0x010D, 0x0063, 0x030C},
-{ 0x00E7, 0x0063, 0x0327},
-{ 0x1E0B, 0x0064, 0x0307},
-{ 0x010F, 0x0064, 0x030C},
-{ 0x1E0D, 0x0064, 0x0323},
-{ 0x1E11, 0x0064, 0x0327},
-{ 0x1E13, 0x0064, 0x032D},
-{ 0x1E0F, 0x0064, 0x0331},
-{ 0x00E8, 0x0065, 0x0300},
-{ 0x00E9, 0x0065, 0x0301},
-{ 0x00EA, 0x0065, 0x0302},
-{ 0x1EBD, 0x0065, 0x0303},
-{ 0x0113, 0x0065, 0x0304},
-{ 0x0115, 0x0065, 0x0306},
-{ 0x0117, 0x0065, 0x0307},
-{ 0x00EB, 0x0065, 0x0308},
-{ 0x1EBB, 0x0065, 0x0309},
-{ 0x011B, 0x0065, 0x030C},
-{ 0x0205, 0x0065, 0x030F},
-{ 0x0207, 0x0065, 0x0311},
-{ 0x1EB9, 0x0065, 0x0323},
-{ 0x0229, 0x0065, 0x0327},
-{ 0x0119, 0x0065, 0x0328},
-{ 0x1E19, 0x0065, 0x032D},
-{ 0x1E1B, 0x0065, 0x0330},
-{ 0x1E1F, 0x0066, 0x0307},
-{ 0x01F5, 0x0067, 0x0301},
-{ 0x011D, 0x0067, 0x0302},
-{ 0x1E21, 0x0067, 0x0304},
-{ 0x011F, 0x0067, 0x0306},
-{ 0x0121, 0x0067, 0x0307},
-{ 0x01E7, 0x0067, 0x030C},
-{ 0x0123, 0x0067, 0x0327},
-{ 0x0125, 0x0068, 0x0302},
-{ 0x1E23, 0x0068, 0x0307},
-{ 0x1E27, 0x0068, 0x0308},
-{ 0x021F, 0x0068, 0x030C},
-{ 0x1E25, 0x0068, 0x0323},
-{ 0x1E29, 0x0068, 0x0327},
-{ 0x1E2B, 0x0068, 0x032E},
-{ 0x1E96, 0x0068, 0x0331},
-{ 0x00EC, 0x0069, 0x0300},
-{ 0x00ED, 0x0069, 0x0301},
-{ 0x00EE, 0x0069, 0x0302},
-{ 0x0129, 0x0069, 0x0303},
-{ 0x012B, 0x0069, 0x0304},
-{ 0x012D, 0x0069, 0x0306},
-{ 0x00EF, 0x0069, 0x0308},
-{ 0x1EC9, 0x0069, 0x0309},
-{ 0x01D0, 0x0069, 0x030C},
-{ 0x0209, 0x0069, 0x030F},
-{ 0x020B, 0x0069, 0x0311},
-{ 0x1ECB, 0x0069, 0x0323},
-{ 0x012F, 0x0069, 0x0328},
-{ 0x1E2D, 0x0069, 0x0330},
-{ 0x0135, 0x006A, 0x0302},
-{ 0x01F0, 0x006A, 0x030C},
-{ 0x1E31, 0x006B, 0x0301},
-{ 0x01E9, 0x006B, 0x030C},
-{ 0x1E33, 0x006B, 0x0323},
-{ 0x0137, 0x006B, 0x0327},
-{ 0x1E35, 0x006B, 0x0331},
-{ 0x013A, 0x006C, 0x0301},
-{ 0x013E, 0x006C, 0x030C},
-{ 0x1E37, 0x006C, 0x0323},
-{ 0x013C, 0x006C, 0x0327},
-{ 0x1E3D, 0x006C, 0x032D},
-{ 0x1E3B, 0x006C, 0x0331},
-{ 0x1E3F, 0x006D, 0x0301},
-{ 0x1E41, 0x006D, 0x0307},
-{ 0x1E43, 0x006D, 0x0323},
-{ 0x01F9, 0x006E, 0x0300},
-{ 0x0144, 0x006E, 0x0301},
-{ 0x00F1, 0x006E, 0x0303},
-{ 0x1E45, 0x006E, 0x0307},
-{ 0x0148, 0x006E, 0x030C},
-{ 0x1E47, 0x006E, 0x0323},
-{ 0x0146, 0x006E, 0x0327},
-{ 0x1E4B, 0x006E, 0x032D},
-{ 0x1E49, 0x006E, 0x0331},
-{ 0x00F2, 0x006F, 0x0300},
-{ 0x00F3, 0x006F, 0x0301},
-{ 0x00F4, 0x006F, 0x0302},
-{ 0x00F5, 0x006F, 0x0303},
-{ 0x014D, 0x006F, 0x0304},
-{ 0x014F, 0x006F, 0x0306},
-{ 0x022F, 0x006F, 0x0307},
-{ 0x00F6, 0x006F, 0x0308},
-{ 0x1ECF, 0x006F, 0x0309},
-{ 0x0151, 0x006F, 0x030B},
-{ 0x01D2, 0x006F, 0x030C},
-{ 0x020D, 0x006F, 0x030F},
-{ 0x020F, 0x006F, 0x0311},
-{ 0x01A1, 0x006F, 0x031B},
-{ 0x1ECD, 0x006F, 0x0323},
-{ 0x01EB, 0x006F, 0x0328},
-{ 0x1E55, 0x0070, 0x0301},
-{ 0x1E57, 0x0070, 0x0307},
-{ 0x0155, 0x0072, 0x0301},
-{ 0x1E59, 0x0072, 0x0307},
-{ 0x0159, 0x0072, 0x030C},
-{ 0x0211, 0x0072, 0x030F},
-{ 0x0213, 0x0072, 0x0311},
-{ 0x1E5B, 0x0072, 0x0323},
-{ 0x0157, 0x0072, 0x0327},
-{ 0x1E5F, 0x0072, 0x0331},
-{ 0x015B, 0x0073, 0x0301},
-{ 0x015D, 0x0073, 0x0302},
-{ 0x1E61, 0x0073, 0x0307},
-{ 0x0161, 0x0073, 0x030C},
-{ 0x1E63, 0x0073, 0x0323},
-{ 0x0219, 0x0073, 0x0326},
-{ 0x015F, 0x0073, 0x0327},
-{ 0x1E6B, 0x0074, 0x0307},
-{ 0x1E97, 0x0074, 0x0308},
-{ 0x0165, 0x0074, 0x030C},
-{ 0x1E6D, 0x0074, 0x0323},
-{ 0x021B, 0x0074, 0x0326},
-{ 0x0163, 0x0074, 0x0327},
-{ 0x1E71, 0x0074, 0x032D},
-{ 0x1E6F, 0x0074, 0x0331},
-{ 0x00F9, 0x0075, 0x0300},
-{ 0x00FA, 0x0075, 0x0301},
-{ 0x00FB, 0x0075, 0x0302},
-{ 0x0169, 0x0075, 0x0303},
-{ 0x016B, 0x0075, 0x0304},
-{ 0x016D, 0x0075, 0x0306},
-{ 0x00FC, 0x0075, 0x0308},
-{ 0x1EE7, 0x0075, 0x0309},
-{ 0x016F, 0x0075, 0x030A},
-{ 0x0171, 0x0075, 0x030B},
-{ 0x01D4, 0x0075, 0x030C},
-{ 0x0215, 0x0075, 0x030F},
-{ 0x0217, 0x0075, 0x0311},
-{ 0x01B0, 0x0075, 0x031B},
-{ 0x1EE5, 0x0075, 0x0323},
-{ 0x1E73, 0x0075, 0x0324},
-{ 0x0173, 0x0075, 0x0328},
-{ 0x1E77, 0x0075, 0x032D},
-{ 0x1E75, 0x0075, 0x0330},
-{ 0x1E7D, 0x0076, 0x0303},
-{ 0x1E7F, 0x0076, 0x0323},
-{ 0x1E81, 0x0077, 0x0300},
-{ 0x1E83, 0x0077, 0x0301},
-{ 0x0175, 0x0077, 0x0302},
-{ 0x1E87, 0x0077, 0x0307},
-{ 0x1E85, 0x0077, 0x0308},
-{ 0x1E98, 0x0077, 0x030A},
-{ 0x1E89, 0x0077, 0x0323},
-{ 0x1E8B, 0x0078, 0x0307},
-{ 0x1E8D, 0x0078, 0x0308},
-{ 0x1EF3, 0x0079, 0x0300},
-{ 0x00FD, 0x0079, 0x0301},
-{ 0x0177, 0x0079, 0x0302},
-{ 0x1EF9, 0x0079, 0x0303},
-{ 0x0233, 0x0079, 0x0304},
-{ 0x1E8F, 0x0079, 0x0307},
-{ 0x00FF, 0x0079, 0x0308},
-{ 0x1EF7, 0x0079, 0x0309},
-{ 0x1E99, 0x0079, 0x030A},
-{ 0x1EF5, 0x0079, 0x0323},
-{ 0x017A, 0x007A, 0x0301},
-{ 0x1E91, 0x007A, 0x0302},
-{ 0x017C, 0x007A, 0x0307},
-{ 0x017E, 0x007A, 0x030C},
-{ 0x1E93, 0x007A, 0x0323},
-{ 0x1E95, 0x007A, 0x0331},
-{ 0x1FED, 0x00A8, 0x0300},
-{ 0x0385, 0x00A8, 0x0301},
-{ 0x1FC1, 0x00A8, 0x0342},
-{ 0x1EA6, 0x00C2, 0x0300},
-{ 0x1EA4, 0x00C2, 0x0301},
-{ 0x1EAA, 0x00C2, 0x0303},
-{ 0x1EA8, 0x00C2, 0x0309},
-{ 0x01DE, 0x00C4, 0x0304},
-{ 0x01FA, 0x00C5, 0x0301},
-{ 0x01FC, 0x00C6, 0x0301},
-{ 0x01E2, 0x00C6, 0x0304},
-{ 0x1E08, 0x00C7, 0x0301},
-{ 0x1EC0, 0x00CA, 0x0300},
-{ 0x1EBE, 0x00CA, 0x0301},
-{ 0x1EC4, 0x00CA, 0x0303},
-{ 0x1EC2, 0x00CA, 0x0309},
-{ 0x1E2E, 0x00CF, 0x0301},
-{ 0x1ED2, 0x00D4, 0x0300},
-{ 0x1ED0, 0x00D4, 0x0301},
-{ 0x1ED6, 0x00D4, 0x0303},
-{ 0x1ED4, 0x00D4, 0x0309},
-{ 0x1E4C, 0x00D5, 0x0301},
-{ 0x022C, 0x00D5, 0x0304},
-{ 0x1E4E, 0x00D5, 0x0308},
-{ 0x022A, 0x00D6, 0x0304},
-{ 0x01FE, 0x00D8, 0x0301},
-{ 0x01DB, 0x00DC, 0x0300},
-{ 0x01D7, 0x00DC, 0x0301},
-{ 0x01D5, 0x00DC, 0x0304},
-{ 0x01D9, 0x00DC, 0x030C},
-{ 0x1EA7, 0x00E2, 0x0300},
-{ 0x1EA5, 0x00E2, 0x0301},
-{ 0x1EAB, 0x00E2, 0x0303},
-{ 0x1EA9, 0x00E2, 0x0309},
-{ 0x01DF, 0x00E4, 0x0304},
-{ 0x01FB, 0x00E5, 0x0301},
-{ 0x01FD, 0x00E6, 0x0301},
-{ 0x01E3, 0x00E6, 0x0304},
-{ 0x1E09, 0x00E7, 0x0301},
-{ 0x1EC1, 0x00EA, 0x0300},
-{ 0x1EBF, 0x00EA, 0x0301},
-{ 0x1EC5, 0x00EA, 0x0303},
-{ 0x1EC3, 0x00EA, 0x0309},
-{ 0x1E2F, 0x00EF, 0x0301},
-{ 0x1ED3, 0x00F4, 0x0300},
-{ 0x1ED1, 0x00F4, 0x0301},
-{ 0x1ED7, 0x00F4, 0x0303},
-{ 0x1ED5, 0x00F4, 0x0309},
-{ 0x1E4D, 0x00F5, 0x0301},
-{ 0x022D, 0x00F5, 0x0304},
-{ 0x1E4F, 0x00F5, 0x0308},
-{ 0x022B, 0x00F6, 0x0304},
-{ 0x01FF, 0x00F8, 0x0301},
-{ 0x01DC, 0x00FC, 0x0300},
-{ 0x01D8, 0x00FC, 0x0301},
-{ 0x01D6, 0x00FC, 0x0304},
-{ 0x01DA, 0x00FC, 0x030C},
-{ 0x1EB0, 0x0102, 0x0300},
-{ 0x1EAE, 0x0102, 0x0301},
-{ 0x1EB4, 0x0102, 0x0303},
-{ 0x1EB2, 0x0102, 0x0309},
-{ 0x1EB1, 0x0103, 0x0300},
-{ 0x1EAF, 0x0103, 0x0301},
-{ 0x1EB5, 0x0103, 0x0303},
-{ 0x1EB3, 0x0103, 0x0309},
-{ 0x1E14, 0x0112, 0x0300},
-{ 0x1E16, 0x0112, 0x0301},
-{ 0x1E15, 0x0113, 0x0300},
-{ 0x1E17, 0x0113, 0x0301},
-{ 0x1E50, 0x014C, 0x0300},
-{ 0x1E52, 0x014C, 0x0301},
-{ 0x1E51, 0x014D, 0x0300},
-{ 0x1E53, 0x014D, 0x0301},
-{ 0x1E64, 0x015A, 0x0307},
-{ 0x1E65, 0x015B, 0x0307},
-{ 0x1E66, 0x0160, 0x0307},
-{ 0x1E67, 0x0161, 0x0307},
-{ 0x1E78, 0x0168, 0x0301},
-{ 0x1E79, 0x0169, 0x0301},
-{ 0x1E7A, 0x016A, 0x0308},
-{ 0x1E7B, 0x016B, 0x0308},
-{ 0x1E9B, 0x017F, 0x0307},
-{ 0x1EDC, 0x01A0, 0x0300},
-{ 0x1EDA, 0x01A0, 0x0301},
-{ 0x1EE0, 0x01A0, 0x0303},
-{ 0x1EDE, 0x01A0, 0x0309},
-{ 0x1EE2, 0x01A0, 0x0323},
-{ 0x1EDD, 0x01A1, 0x0300},
-{ 0x1EDB, 0x01A1, 0x0301},
-{ 0x1EE1, 0x01A1, 0x0303},
-{ 0x1EDF, 0x01A1, 0x0309},
-{ 0x1EE3, 0x01A1, 0x0323},
-{ 0x1EEA, 0x01AF, 0x0300},
-{ 0x1EE8, 0x01AF, 0x0301},
-{ 0x1EEE, 0x01AF, 0x0303},
-{ 0x1EEC, 0x01AF, 0x0309},
-{ 0x1EF0, 0x01AF, 0x0323},
-{ 0x1EEB, 0x01B0, 0x0300},
-{ 0x1EE9, 0x01B0, 0x0301},
-{ 0x1EEF, 0x01B0, 0x0303},
-{ 0x1EED, 0x01B0, 0x0309},
-{ 0x1EF1, 0x01B0, 0x0323},
-{ 0x01EE, 0x01B7, 0x030C},
-{ 0x01EC, 0x01EA, 0x0304},
-{ 0x01ED, 0x01EB, 0x0304},
-{ 0x01E0, 0x0226, 0x0304},
-{ 0x01E1, 0x0227, 0x0304},
-{ 0x1E1C, 0x0228, 0x0306},
-{ 0x1E1D, 0x0229, 0x0306},
-{ 0x0230, 0x022E, 0x0304},
-{ 0x0231, 0x022F, 0x0304},
-{ 0x01EF, 0x0292, 0x030C},
-{ 0x0344, 0x0308, 0x0301},
-{ 0x1FBA, 0x0391, 0x0300},
-{ 0x0386, 0x0391, 0x0301},
-{ 0x1FB9, 0x0391, 0x0304},
-{ 0x1FB8, 0x0391, 0x0306},
-{ 0x1F08, 0x0391, 0x0313},
-{ 0x1F09, 0x0391, 0x0314},
-{ 0x1FBC, 0x0391, 0x0345},
-{ 0x1FC8, 0x0395, 0x0300},
-{ 0x0388, 0x0395, 0x0301},
-{ 0x1F18, 0x0395, 0x0313},
-{ 0x1F19, 0x0395, 0x0314},
-{ 0x1FCA, 0x0397, 0x0300},
-{ 0x0389, 0x0397, 0x0301},
-{ 0x1F28, 0x0397, 0x0313},
-{ 0x1F29, 0x0397, 0x0314},
-{ 0x1FCC, 0x0397, 0x0345},
-{ 0x1FDA, 0x0399, 0x0300},
-{ 0x038A, 0x0399, 0x0301},
-{ 0x1FD9, 0x0399, 0x0304},
-{ 0x1FD8, 0x0399, 0x0306},
-{ 0x03AA, 0x0399, 0x0308},
-{ 0x1F38, 0x0399, 0x0313},
-{ 0x1F39, 0x0399, 0x0314},
-{ 0x1FF8, 0x039F, 0x0300},
-{ 0x038C, 0x039F, 0x0301},
-{ 0x1F48, 0x039F, 0x0313},
-{ 0x1F49, 0x039F, 0x0314},
-{ 0x1FEC, 0x03A1, 0x0314},
-{ 0x1FEA, 0x03A5, 0x0300},
-{ 0x038E, 0x03A5, 0x0301},
-{ 0x1FE9, 0x03A5, 0x0304},
-{ 0x1FE8, 0x03A5, 0x0306},
-{ 0x03AB, 0x03A5, 0x0308},
-{ 0x1F59, 0x03A5, 0x0314},
-{ 0x1FFA, 0x03A9, 0x0300},
-{ 0x038F, 0x03A9, 0x0301},
-{ 0x1F68, 0x03A9, 0x0313},
-{ 0x1F69, 0x03A9, 0x0314},
-{ 0x1FFC, 0x03A9, 0x0345},
-{ 0x1FB4, 0x03AC, 0x0345},
-{ 0x1FC4, 0x03AE, 0x0345},
-{ 0x1F70, 0x03B1, 0x0300},
-{ 0x03AC, 0x03B1, 0x0301},
-{ 0x1FB1, 0x03B1, 0x0304},
-{ 0x1FB0, 0x03B1, 0x0306},
-{ 0x1F00, 0x03B1, 0x0313},
-{ 0x1F01, 0x03B1, 0x0314},
-{ 0x1FB6, 0x03B1, 0x0342},
-{ 0x1FB3, 0x03B1, 0x0345},
-{ 0x1F72, 0x03B5, 0x0300},
-{ 0x03AD, 0x03B5, 0x0301},
-{ 0x1F10, 0x03B5, 0x0313},
-{ 0x1F11, 0x03B5, 0x0314},
-{ 0x1F74, 0x03B7, 0x0300},
-{ 0x03AE, 0x03B7, 0x0301},
-{ 0x1F20, 0x03B7, 0x0313},
-{ 0x1F21, 0x03B7, 0x0314},
-{ 0x1FC6, 0x03B7, 0x0342},
-{ 0x1FC3, 0x03B7, 0x0345},
-{ 0x1F76, 0x03B9, 0x0300},
-{ 0x03AF, 0x03B9, 0x0301},
-{ 0x1FD1, 0x03B9, 0x0304},
-{ 0x1FD0, 0x03B9, 0x0306},
-{ 0x03CA, 0x03B9, 0x0308},
-{ 0x1F30, 0x03B9, 0x0313},
-{ 0x1F31, 0x03B9, 0x0314},
-{ 0x1FD6, 0x03B9, 0x0342},
-{ 0x1F78, 0x03BF, 0x0300},
-{ 0x03CC, 0x03BF, 0x0301},
-{ 0x1F40, 0x03BF, 0x0313},
-{ 0x1F41, 0x03BF, 0x0314},
-{ 0x1FE4, 0x03C1, 0x0313},
-{ 0x1FE5, 0x03C1, 0x0314},
-{ 0x1F7A, 0x03C5, 0x0300},
-{ 0x03CD, 0x03C5, 0x0301},
-{ 0x1FE1, 0x03C5, 0x0304},
-{ 0x1FE0, 0x03C5, 0x0306},
-{ 0x03CB, 0x03C5, 0x0308},
-{ 0x1F50, 0x03C5, 0x0313},
-{ 0x1F51, 0x03C5, 0x0314},
-{ 0x1FE6, 0x03C5, 0x0342},
-{ 0x1F7C, 0x03C9, 0x0300},
-{ 0x03CE, 0x03C9, 0x0301},
-{ 0x1F60, 0x03C9, 0x0313},
-{ 0x1F61, 0x03C9, 0x0314},
-{ 0x1FF6, 0x03C9, 0x0342},
-{ 0x1FF3, 0x03C9, 0x0345},
-{ 0x1FD2, 0x03CA, 0x0300},
-{ 0x0390, 0x03CA, 0x0301},
-{ 0x1FD7, 0x03CA, 0x0342},
-{ 0x1FE2, 0x03CB, 0x0300},
-{ 0x03B0, 0x03CB, 0x0301},
-{ 0x1FE7, 0x03CB, 0x0342},
-{ 0x1FF4, 0x03CE, 0x0345},
-{ 0x03D3, 0x03D2, 0x0301},
-{ 0x03D4, 0x03D2, 0x0308},
-{ 0x0407, 0x0406, 0x0308},
-{ 0x04D0, 0x0410, 0x0306},
-{ 0x04D2, 0x0410, 0x0308},
-{ 0x0403, 0x0413, 0x0301},
-{ 0x0400, 0x0415, 0x0300},
-{ 0x04D6, 0x0415, 0x0306},
-{ 0x0401, 0x0415, 0x0308},
-{ 0x04C1, 0x0416, 0x0306},
-{ 0x04DC, 0x0416, 0x0308},
-{ 0x04DE, 0x0417, 0x0308},
-{ 0x040D, 0x0418, 0x0300},
-{ 0x04E2, 0x0418, 0x0304},
-{ 0x0419, 0x0418, 0x0306},
-{ 0x04E4, 0x0418, 0x0308},
-{ 0x040C, 0x041A, 0x0301},
-{ 0x04E6, 0x041E, 0x0308},
-{ 0x04EE, 0x0423, 0x0304},
-{ 0x040E, 0x0423, 0x0306},
-{ 0x04F0, 0x0423, 0x0308},
-{ 0x04F2, 0x0423, 0x030B},
-{ 0x04F4, 0x0427, 0x0308},
-{ 0x04F8, 0x042B, 0x0308},
-{ 0x04EC, 0x042D, 0x0308},
-{ 0x04D1, 0x0430, 0x0306},
-{ 0x04D3, 0x0430, 0x0308},
-{ 0x0453, 0x0433, 0x0301},
-{ 0x0450, 0x0435, 0x0300},
-{ 0x04D7, 0x0435, 0x0306},
-{ 0x0451, 0x0435, 0x0308},
-{ 0x04C2, 0x0436, 0x0306},
-{ 0x04DD, 0x0436, 0x0308},
-{ 0x04DF, 0x0437, 0x0308},
-{ 0x045D, 0x0438, 0x0300},
-{ 0x04E3, 0x0438, 0x0304},
-{ 0x0439, 0x0438, 0x0306},
-{ 0x04E5, 0x0438, 0x0308},
-{ 0x045C, 0x043A, 0x0301},
-{ 0x04E7, 0x043E, 0x0308},
-{ 0x04EF, 0x0443, 0x0304},
-{ 0x045E, 0x0443, 0x0306},
-{ 0x04F1, 0x0443, 0x0308},
-{ 0x04F3, 0x0443, 0x030B},
-{ 0x04F5, 0x0447, 0x0308},
-{ 0x04F9, 0x044B, 0x0308},
-{ 0x04ED, 0x044D, 0x0308},
-{ 0x0457, 0x0456, 0x0308},
-{ 0x0476, 0x0474, 0x030F},
-{ 0x0477, 0x0475, 0x030F},
-{ 0x04DA, 0x04D8, 0x0308},
-{ 0x04DB, 0x04D9, 0x0308},
-{ 0x04EA, 0x04E8, 0x0308},
-{ 0x04EB, 0x04E9, 0x0308},
-{ 0xFB2E, 0x05D0, 0x05B7},
-{ 0xFB2F, 0x05D0, 0x05B8},
-{ 0xFB30, 0x05D0, 0x05BC},
-{ 0xFB31, 0x05D1, 0x05BC},
-{ 0xFB4C, 0x05D1, 0x05BF},
-{ 0xFB32, 0x05D2, 0x05BC},
-{ 0xFB33, 0x05D3, 0x05BC},
-{ 0xFB34, 0x05D4, 0x05BC},
-{ 0xFB4B, 0x05D5, 0x05B9},
-{ 0xFB35, 0x05D5, 0x05BC},
-{ 0xFB36, 0x05D6, 0x05BC},
-{ 0xFB38, 0x05D8, 0x05BC},
-{ 0xFB1D, 0x05D9, 0x05B4},
-{ 0xFB39, 0x05D9, 0x05BC},
-{ 0xFB3A, 0x05DA, 0x05BC},
-{ 0xFB3B, 0x05DB, 0x05BC},
-{ 0xFB4D, 0x05DB, 0x05BF},
-{ 0xFB3C, 0x05DC, 0x05BC},
-{ 0xFB3E, 0x05DE, 0x05BC},
-{ 0xFB40, 0x05E0, 0x05BC},
-{ 0xFB41, 0x05E1, 0x05BC},
-{ 0xFB43, 0x05E3, 0x05BC},
-{ 0xFB44, 0x05E4, 0x05BC},
-{ 0xFB4E, 0x05E4, 0x05BF},
-{ 0xFB46, 0x05E6, 0x05BC},
-{ 0xFB47, 0x05E7, 0x05BC},
-{ 0xFB48, 0x05E8, 0x05BC},
-{ 0xFB49, 0x05E9, 0x05BC},
-{ 0xFB2A, 0x05E9, 0x05C1},
-{ 0xFB2B, 0x05E9, 0x05C2},
-{ 0xFB4A, 0x05EA, 0x05BC},
-{ 0xFB1F, 0x05F2, 0x05B7},
-{ 0x0622, 0x0627, 0x0653},
-{ 0x0623, 0x0627, 0x0654},
-{ 0x0625, 0x0627, 0x0655},
-{ 0x0624, 0x0648, 0x0654},
-{ 0x0626, 0x064A, 0x0654},
-{ 0x06C2, 0x06C1, 0x0654},
-{ 0x06D3, 0x06D2, 0x0654},
-{ 0x06C0, 0x06D5, 0x0654},
-{ 0x0958, 0x0915, 0x093C},
-{ 0x0959, 0x0916, 0x093C},
-{ 0x095A, 0x0917, 0x093C},
-{ 0x095B, 0x091C, 0x093C},
-{ 0x095C, 0x0921, 0x093C},
-{ 0x095D, 0x0922, 0x093C},
-{ 0x0929, 0x0928, 0x093C},
-{ 0x095E, 0x092B, 0x093C},
-{ 0x095F, 0x092F, 0x093C},
-{ 0x0931, 0x0930, 0x093C},
-{ 0x0934, 0x0933, 0x093C},
-{ 0x09DC, 0x09A1, 0x09BC},
-{ 0x09DD, 0x09A2, 0x09BC},
-{ 0x09DF, 0x09AF, 0x09BC},
-{ 0x09CB, 0x09C7, 0x09BE},
-{ 0x09CC, 0x09C7, 0x09D7},
-{ 0x0A59, 0x0A16, 0x0A3C},
-{ 0x0A5A, 0x0A17, 0x0A3C},
-{ 0x0A5B, 0x0A1C, 0x0A3C},
-{ 0x0A5E, 0x0A2B, 0x0A3C},
-{ 0x0A33, 0x0A32, 0x0A3C},
-{ 0x0A36, 0x0A38, 0x0A3C},
-{ 0x0B5C, 0x0B21, 0x0B3C},
-{ 0x0B5D, 0x0B22, 0x0B3C},
-{ 0x0B4B, 0x0B47, 0x0B3E},
-{ 0x0B48, 0x0B47, 0x0B56},
-{ 0x0B4C, 0x0B47, 0x0B57},
-{ 0x0B94, 0x0B92, 0x0BD7},
-{ 0x0BCA, 0x0BC6, 0x0BBE},
-{ 0x0BCC, 0x0BC6, 0x0BD7},
-{ 0x0BCB, 0x0BC7, 0x0BBE},
-{ 0x0C48, 0x0C46, 0x0C56},
-{ 0x0CC0, 0x0CBF, 0x0CD5},
-{ 0x0CCA, 0x0CC6, 0x0CC2},
-{ 0x0CC7, 0x0CC6, 0x0CD5},
-{ 0x0CC8, 0x0CC6, 0x0CD6},
-{ 0x0CCB, 0x0CCA, 0x0CD5},
-{ 0x0D4A, 0x0D46, 0x0D3E},
-{ 0x0D4C, 0x0D46, 0x0D57},
-{ 0x0D4B, 0x0D47, 0x0D3E},
-{ 0x0DDA, 0x0DD9, 0x0DCA},
-{ 0x0DDC, 0x0DD9, 0x0DCF},
-{ 0x0DDE, 0x0DD9, 0x0DDF},
-{ 0x0DDD, 0x0DDC, 0x0DCA},
-{ 0x0F69, 0x0F40, 0x0FB5},
-{ 0x0F43, 0x0F42, 0x0FB7},
-{ 0x0F4D, 0x0F4C, 0x0FB7},
-{ 0x0F52, 0x0F51, 0x0FB7},
-{ 0x0F57, 0x0F56, 0x0FB7},
-{ 0x0F5C, 0x0F5B, 0x0FB7},
-{ 0x0F73, 0x0F71, 0x0F72},
-{ 0x0F75, 0x0F71, 0x0F74},
-{ 0x0F81, 0x0F71, 0x0F80},
-{ 0x0FB9, 0x0F90, 0x0FB5},
-{ 0x0F93, 0x0F92, 0x0FB7},
-{ 0x0F9D, 0x0F9C, 0x0FB7},
-{ 0x0FA2, 0x0FA1, 0x0FB7},
-{ 0x0FA7, 0x0FA6, 0x0FB7},
-{ 0x0FAC, 0x0FAB, 0x0FB7},
-{ 0x0F76, 0x0FB2, 0x0F80},
-{ 0x0F78, 0x0FB3, 0x0F80},
-{ 0x1026, 0x1025, 0x102E},
-{ 0x1D15E, 0x1D157, 0x1D165},
-{ 0x1D15F, 0x1D158, 0x1D165},
-{ 0x1D160, 0x1D15F, 0x1D16E},
-{ 0x1D161, 0x1D15F, 0x1D16F},
-{ 0x1D162, 0x1D15F, 0x1D170},
-{ 0x1D163, 0x1D15F, 0x1D171},
-{ 0x1D164, 0x1D15F, 0x1D172},
-{ 0x1D1BB, 0x1D1B9, 0x1D165},
-{ 0x1D1BC, 0x1D1BA, 0x1D165},
-{ 0x1D1BD, 0x1D1BB, 0x1D16E},
-{ 0x1D1BF, 0x1D1BB, 0x1D16F},
-{ 0x1D1BE, 0x1D1BC, 0x1D16E},
-{ 0x1D1C0, 0x1D1BC, 0x1D16F},
-{ 0x1E38, 0x1E36, 0x0304},
-{ 0x1E39, 0x1E37, 0x0304},
-{ 0x1E5C, 0x1E5A, 0x0304},
-{ 0x1E5D, 0x1E5B, 0x0304},
-{ 0x1E68, 0x1E62, 0x0307},
-{ 0x1E69, 0x1E63, 0x0307},
-{ 0x1EAC, 0x1EA0, 0x0302},
-{ 0x1EB6, 0x1EA0, 0x0306},
-{ 0x1EAD, 0x1EA1, 0x0302},
-{ 0x1EB7, 0x1EA1, 0x0306},
-{ 0x1EC6, 0x1EB8, 0x0302},
-{ 0x1EC7, 0x1EB9, 0x0302},
-{ 0x1ED8, 0x1ECC, 0x0302},
-{ 0x1ED9, 0x1ECD, 0x0302},
-{ 0x1F02, 0x1F00, 0x0300},
-{ 0x1F04, 0x1F00, 0x0301},
-{ 0x1F06, 0x1F00, 0x0342},
-{ 0x1F80, 0x1F00, 0x0345},
-{ 0x1F03, 0x1F01, 0x0300},
-{ 0x1F05, 0x1F01, 0x0301},
-{ 0x1F07, 0x1F01, 0x0342},
-{ 0x1F81, 0x1F01, 0x0345},
-{ 0x1F82, 0x1F02, 0x0345},
-{ 0x1F83, 0x1F03, 0x0345},
-{ 0x1F84, 0x1F04, 0x0345},
-{ 0x1F85, 0x1F05, 0x0345},
-{ 0x1F86, 0x1F06, 0x0345},
-{ 0x1F87, 0x1F07, 0x0345},
-{ 0x1F0A, 0x1F08, 0x0300},
-{ 0x1F0C, 0x1F08, 0x0301},
-{ 0x1F0E, 0x1F08, 0x0342},
-{ 0x1F88, 0x1F08, 0x0345},
-{ 0x1F0B, 0x1F09, 0x0300},
-{ 0x1F0D, 0x1F09, 0x0301},
-{ 0x1F0F, 0x1F09, 0x0342},
-{ 0x1F89, 0x1F09, 0x0345},
-{ 0x1F8A, 0x1F0A, 0x0345},
-{ 0x1F8B, 0x1F0B, 0x0345},
-{ 0x1F8C, 0x1F0C, 0x0345},
-{ 0x1F8D, 0x1F0D, 0x0345},
-{ 0x1F8E, 0x1F0E, 0x0345},
-{ 0x1F8F, 0x1F0F, 0x0345},
-{ 0x1F12, 0x1F10, 0x0300},
-{ 0x1F14, 0x1F10, 0x0301},
-{ 0x1F13, 0x1F11, 0x0300},
-{ 0x1F15, 0x1F11, 0x0301},
-{ 0x1F1A, 0x1F18, 0x0300},
-{ 0x1F1C, 0x1F18, 0x0301},
-{ 0x1F1B, 0x1F19, 0x0300},
-{ 0x1F1D, 0x1F19, 0x0301},
-{ 0x1F22, 0x1F20, 0x0300},
-{ 0x1F24, 0x1F20, 0x0301},
-{ 0x1F26, 0x1F20, 0x0342},
-{ 0x1F90, 0x1F20, 0x0345},
-{ 0x1F23, 0x1F21, 0x0300},
-{ 0x1F25, 0x1F21, 0x0301},
-{ 0x1F27, 0x1F21, 0x0342},
-{ 0x1F91, 0x1F21, 0x0345},
-{ 0x1F92, 0x1F22, 0x0345},
-{ 0x1F93, 0x1F23, 0x0345},
-{ 0x1F94, 0x1F24, 0x0345},
-{ 0x1F95, 0x1F25, 0x0345},
-{ 0x1F96, 0x1F26, 0x0345},
-{ 0x1F97, 0x1F27, 0x0345},
-{ 0x1F2A, 0x1F28, 0x0300},
-{ 0x1F2C, 0x1F28, 0x0301},
-{ 0x1F2E, 0x1F28, 0x0342},
-{ 0x1F98, 0x1F28, 0x0345},
-{ 0x1F2B, 0x1F29, 0x0300},
-{ 0x1F2D, 0x1F29, 0x0301},
-{ 0x1F2F, 0x1F29, 0x0342},
-{ 0x1F99, 0x1F29, 0x0345},
-{ 0x1F9A, 0x1F2A, 0x0345},
-{ 0x1F9B, 0x1F2B, 0x0345},
-{ 0x1F9C, 0x1F2C, 0x0345},
-{ 0x1F9D, 0x1F2D, 0x0345},
-{ 0x1F9E, 0x1F2E, 0x0345},
-{ 0x1F9F, 0x1F2F, 0x0345},
-{ 0x1F32, 0x1F30, 0x0300},
-{ 0x1F34, 0x1F30, 0x0301},
-{ 0x1F36, 0x1F30, 0x0342},
-{ 0x1F33, 0x1F31, 0x0300},
-{ 0x1F35, 0x1F31, 0x0301},
-{ 0x1F37, 0x1F31, 0x0342},
-{ 0x1F3A, 0x1F38, 0x0300},
-{ 0x1F3C, 0x1F38, 0x0301},
-{ 0x1F3E, 0x1F38, 0x0342},
-{ 0x1F3B, 0x1F39, 0x0300},
-{ 0x1F3D, 0x1F39, 0x0301},
-{ 0x1F3F, 0x1F39, 0x0342},
-{ 0x1F42, 0x1F40, 0x0300},
-{ 0x1F44, 0x1F40, 0x0301},
-{ 0x1F43, 0x1F41, 0x0300},
-{ 0x1F45, 0x1F41, 0x0301},
-{ 0x1F4A, 0x1F48, 0x0300},
-{ 0x1F4C, 0x1F48, 0x0301},
-{ 0x1F4B, 0x1F49, 0x0300},
-{ 0x1F4D, 0x1F49, 0x0301},
-{ 0x1F52, 0x1F50, 0x0300},
-{ 0x1F54, 0x1F50, 0x0301},
-{ 0x1F56, 0x1F50, 0x0342},
-{ 0x1F53, 0x1F51, 0x0300},
-{ 0x1F55, 0x1F51, 0x0301},
-{ 0x1F57, 0x1F51, 0x0342},
-{ 0x1F5B, 0x1F59, 0x0300},
-{ 0x1F5D, 0x1F59, 0x0301},
-{ 0x1F5F, 0x1F59, 0x0342},
-{ 0x1F62, 0x1F60, 0x0300},
-{ 0x1F64, 0x1F60, 0x0301},
-{ 0x1F66, 0x1F60, 0x0342},
-{ 0x1FA0, 0x1F60, 0x0345},
-{ 0x1F63, 0x1F61, 0x0300},
-{ 0x1F65, 0x1F61, 0x0301},
-{ 0x1F67, 0x1F61, 0x0342},
-{ 0x1FA1, 0x1F61, 0x0345},
-{ 0x1FA2, 0x1F62, 0x0345},
-{ 0x1FA3, 0x1F63, 0x0345},
-{ 0x1FA4, 0x1F64, 0x0345},
-{ 0x1FA5, 0x1F65, 0x0345},
-{ 0x1FA6, 0x1F66, 0x0345},
-{ 0x1FA7, 0x1F67, 0x0345},
-{ 0x1F6A, 0x1F68, 0x0300},
-{ 0x1F6C, 0x1F68, 0x0301},
-{ 0x1F6E, 0x1F68, 0x0342},
-{ 0x1FA8, 0x1F68, 0x0345},
-{ 0x1F6B, 0x1F69, 0x0300},
-{ 0x1F6D, 0x1F69, 0x0301},
-{ 0x1F6F, 0x1F69, 0x0342},
-{ 0x1FA9, 0x1F69, 0x0345},
-{ 0x1FAA, 0x1F6A, 0x0345},
-{ 0x1FAB, 0x1F6B, 0x0345},
-{ 0x1FAC, 0x1F6C, 0x0345},
-{ 0x1FAD, 0x1F6D, 0x0345},
-{ 0x1FAE, 0x1F6E, 0x0345},
-{ 0x1FAF, 0x1F6F, 0x0345},
-{ 0x1FB2, 0x1F70, 0x0345},
-{ 0x1FC2, 0x1F74, 0x0345},
-{ 0x1FF2, 0x1F7C, 0x0345},
-{ 0x1FB7, 0x1FB6, 0x0345},
-{ 0x1FCD, 0x1FBF, 0x0300},
-{ 0x1FCE, 0x1FBF, 0x0301},
-{ 0x1FCF, 0x1FBF, 0x0342},
-{ 0x1FC7, 0x1FC6, 0x0345},
-{ 0x1FF7, 0x1FF6, 0x0345},
-{ 0x1FDD, 0x1FFE, 0x0300},
-{ 0x1FDE, 0x1FFE, 0x0301},
-{ 0x1FDF, 0x1FFE, 0x0342},
-{ 0x219A, 0x2190, 0x0338},
-{ 0x219B, 0x2192, 0x0338},
-{ 0x21AE, 0x2194, 0x0338},
-{ 0x21CD, 0x21D0, 0x0338},
-{ 0x21CF, 0x21D2, 0x0338},
-{ 0x21CE, 0x21D4, 0x0338},
-{ 0x2204, 0x2203, 0x0338},
-{ 0x2209, 0x2208, 0x0338},
-{ 0x220C, 0x220B, 0x0338},
-{ 0x2224, 0x2223, 0x0338},
-{ 0x2226, 0x2225, 0x0338},
-{ 0x2241, 0x223C, 0x0338},
-{ 0x2244, 0x2243, 0x0338},
-{ 0x2247, 0x2245, 0x0338},
-{ 0x2249, 0x2248, 0x0338},
-{ 0x226D, 0x224D, 0x0338},
-{ 0x2262, 0x2261, 0x0338},
-{ 0x2270, 0x2264, 0x0338},
-{ 0x2271, 0x2265, 0x0338},
-{ 0x2274, 0x2272, 0x0338},
-{ 0x2275, 0x2273, 0x0338},
-{ 0x2278, 0x2276, 0x0338},
-{ 0x2279, 0x2277, 0x0338},
-{ 0x2280, 0x227A, 0x0338},
-{ 0x2281, 0x227B, 0x0338},
-{ 0x22E0, 0x227C, 0x0338},
-{ 0x22E1, 0x227D, 0x0338},
-{ 0x2284, 0x2282, 0x0338},
-{ 0x2285, 0x2283, 0x0338},
-{ 0x2288, 0x2286, 0x0338},
-{ 0x2289, 0x2287, 0x0338},
-{ 0x22E2, 0x2291, 0x0338},
-{ 0x22E3, 0x2292, 0x0338},
-{ 0x22AC, 0x22A2, 0x0338},
-{ 0x22AD, 0x22A8, 0x0338},
-{ 0x22AE, 0x22A9, 0x0338},
-{ 0x22AF, 0x22AB, 0x0338},
-{ 0x22EA, 0x22B2, 0x0338},
-{ 0x22EB, 0x22B3, 0x0338},
-{ 0x22EC, 0x22B4, 0x0338},
-{ 0x22ED, 0x22B5, 0x0338},
-{ 0x2ADC, 0x2ADD, 0x0338},
-{ 0x3094, 0x3046, 0x3099},
-{ 0x304C, 0x304B, 0x3099},
-{ 0x304E, 0x304D, 0x3099},
-{ 0x3050, 0x304F, 0x3099},
-{ 0x3052, 0x3051, 0x3099},
-{ 0x3054, 0x3053, 0x3099},
-{ 0x3056, 0x3055, 0x3099},
-{ 0x3058, 0x3057, 0x3099},
-{ 0x305A, 0x3059, 0x3099},
-{ 0x305C, 0x305B, 0x3099},
-{ 0x305E, 0x305D, 0x3099},
-{ 0x3060, 0x305F, 0x3099},
-{ 0x3062, 0x3061, 0x3099},
-{ 0x3065, 0x3064, 0x3099},
-{ 0x3067, 0x3066, 0x3099},
-{ 0x3069, 0x3068, 0x3099},
-{ 0x3070, 0x306F, 0x3099},
-{ 0x3071, 0x306F, 0x309A},
-{ 0x3073, 0x3072, 0x3099},
-{ 0x3074, 0x3072, 0x309A},
-{ 0x3076, 0x3075, 0x3099},
-{ 0x3077, 0x3075, 0x309A},
-{ 0x3079, 0x3078, 0x3099},
-{ 0x307A, 0x3078, 0x309A},
-{ 0x307C, 0x307B, 0x3099},
-{ 0x307D, 0x307B, 0x309A},
-{ 0x309E, 0x309D, 0x3099},
-{ 0x30F4, 0x30A6, 0x3099},
-{ 0x30AC, 0x30AB, 0x3099},
-{ 0x30AE, 0x30AD, 0x3099},
-{ 0x30B0, 0x30AF, 0x3099},
-{ 0x30B2, 0x30B1, 0x3099},
-{ 0x30B4, 0x30B3, 0x3099},
-{ 0x30B6, 0x30B5, 0x3099},
-{ 0x30B8, 0x30B7, 0x3099},
-{ 0x30BA, 0x30B9, 0x3099},
-{ 0x30BC, 0x30BB, 0x3099},
-{ 0x30BE, 0x30BD, 0x3099},
-{ 0x30C0, 0x30BF, 0x3099},
-{ 0x30C2, 0x30C1, 0x3099},
-{ 0x30C5, 0x30C4, 0x3099},
-{ 0x30C7, 0x30C6, 0x3099},
-{ 0x30C9, 0x30C8, 0x3099},
-{ 0x30D0, 0x30CF, 0x3099},
-{ 0x30D1, 0x30CF, 0x309A},
-{ 0x30D3, 0x30D2, 0x3099},
-{ 0x30D4, 0x30D2, 0x309A},
-{ 0x30D6, 0x30D5, 0x3099},
-{ 0x30D7, 0x30D5, 0x309A},
-{ 0x30D9, 0x30D8, 0x3099},
-{ 0x30DA, 0x30D8, 0x309A},
-{ 0x30DC, 0x30DB, 0x3099},
-{ 0x30DD, 0x30DB, 0x309A},
-{ 0x30F7, 0x30EF, 0x3099},
-{ 0x30F8, 0x30F0, 0x3099},
-{ 0x30F9, 0x30F1, 0x3099},
-{ 0x30FA, 0x30F2, 0x3099},
-{ 0x30FE, 0x30FD, 0x3099},
-{ 0xFB2C, 0xFB49, 0x05C1},
-{ 0xFB2D, 0xFB49, 0x05C2},
-};
-
-int do_precomposition(int base, int comb) {
- int min = 0;
- int max = sizeof(precompositions) / sizeof(precompositions[0]) - 1;
- int mid;
- unsigned int sought = ((unsigned)base << 16) | (unsigned)comb, that;
-
- /* binary search */
- while (max >= min) {
- mid = (min + max) / 2;
- that = ((unsigned)precompositions[mid].base << 16) | ((unsigned)precompositions[mid].comb);
- if (that < sought) {
- min = mid + 1;
- } else if (that > sought) {
- max = mid - 1;
- } else {
- return precompositions[mid].replacement;
- }
- }
- /* no match */
- return -1;
-}
diff --git a/nx-X11/programs/xterm/precompose.h b/nx-X11/programs/xterm/precompose.h
deleted file mode 100644
index 661bbb1ac..000000000
--- a/nx-X11/programs/xterm/precompose.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* $XFree86: xc/programs/xterm/precompose.h,v 1.1 2000/08/26 04:33:54 dawes Exp $ */
-
-#ifndef PRECOMPOSE_H
-#define PRECOMPOSE_H
-
-int do_precomposition(int base, int comb);
-
-/* returns unicode value if a canonical composition exists,
- otherwise -1 */
-
-#endif
diff --git a/nx-X11/programs/xterm/print.c b/nx-X11/programs/xterm/print.c
deleted file mode 100644
index c081f8ff9..000000000
--- a/nx-X11/programs/xterm/print.c
+++ /dev/null
@@ -1,608 +0,0 @@
-/* $XTermId: print.c,v 1.63 2005/08/05 01:25:40 tom Exp $ */
-
-/*
- * $XFree86: xc/programs/xterm/print.c,v 1.22 2005/08/05 01:25:40 dickey Exp $
- */
-
-/************************************************************
-
-Copyright 1997-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-********************************************************/
-
-#include <xterm.h>
-#include <data.h>
-#include <menu.h>
-#include <error.h>
-
-#include <stdio.h>
-
-#undef CTRL
-#define CTRL(c) ((c) & 0x1f)
-
-#define SHIFT_IN '\017'
-#define SHIFT_OUT '\016'
-
-#define CSET_IN 'A'
-#define CSET_OUT '0'
-
-#define isForm(c) ((c) == '\r' || (c) == '\n' || (c) == '\f')
-#define Strlen(a) strlen((char *)a)
-#define Strcmp(a,b) strcmp((char *)a,(char *)b)
-#define Strncmp(a,b,c) strncmp((char *)a,(char *)b,c)
-
-#ifdef VMS
-#define VMS_TEMP_PRINT_FILE "sys$scratch:xterm_print.txt"
-#endif
-
-static void charToPrinter(int chr);
-static void printLine(int row, int chr);
-static void send_CharSet(int row);
-static void send_SGR(unsigned attr, unsigned fg, unsigned bg);
-static void stringToPrinter(char *str);
-
-static FILE *Printer;
-static pid_t Printer_pid;
-static int initialized;
-
-static void
-closePrinter(void)
-{
- if (xtermHasPrinter() != 0) {
-#ifdef VMS
- TScreen *screen = &term->screen;
-
- char pcommand[256];
- (void) sprintf(pcommand, "%s %s;",
- screen->printer_command,
- VMS_TEMP_PRINT_FILE);
-#endif
-
- if (Printer != 0) {
- fclose(Printer);
- TRACE(("closed printer, waiting...\n"));
-#ifdef VMS /* This is a quick hack, really should use
- spawn and check status or system services
- and go straight to the queue */
- (void) system(pcommand);
-#else /* VMS */
- while (nonblocking_wait() > 0)
-#endif /* VMS */
- ;
- Printer = 0;
- initialized = 0;
- TRACE(("closed printer\n"));
- }
- }
-}
-
-static void
-printCursorLine(void)
-{
- TScreen *screen = &term->screen;
-
- TRACE(("printCursorLine\n"));
- printLine(screen->cur_row, '\n');
-}
-
-#define NO_COLOR ((unsigned)-1)
-
-/*
- * DEC's manual doesn't document whether trailing blanks are removed, or what
- * happens with a line that is entirely blank. This function prints the
- * characters that xterm would allow as a selection (which may include blanks).
- */
-static void
-printLine(int row, int chr)
-{
- TScreen *screen = &term->screen;
- Char *c = SCRN_BUF_CHARS(screen, row);
- Char *a = SCRN_BUF_ATTRS(screen, row);
- Char attr = 0;
- unsigned ch;
- int last = MaxCols(screen);
- int col;
-#if OPT_ISO_COLORS && OPT_PRINT_COLORS
-#if OPT_EXT_COLORS
- Char *fbf = 0;
- Char *fbb = 0;
-#define ColorOf(col) (unsigned)((fbf[col] << 8) | fbb[col])
-#else
- Char *fb = 0;
-#define ColorOf(col) (fb[col])
-#endif
-#endif
- unsigned fg = NO_COLOR, last_fg = NO_COLOR;
- unsigned bg = NO_COLOR, last_bg = NO_COLOR;
- int cs = CSET_IN;
- int last_cs = CSET_IN;
-
- TRACE(("printLine(row=%d, top=%d:%d, chr=%d):%s\n",
- row, screen->topline, screen->max_row, chr,
- visibleChars(PAIRED_CHARS(c,
- screen->utf8_mode
- ? SCRN_BUF_WIDEC(screen, row)
- : 0), (unsigned) last)));
-
- if_OPT_EXT_COLORS(screen, {
- fbf = SCRN_BUF_FGRND(screen, row);
- fbb = SCRN_BUF_BGRND(screen, row);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- fb = SCRN_BUF_COLOR(screen, row);
- });
- while (last > 0) {
- if ((a[last - 1] & CHARDRAWN) == 0)
- last--;
- else
- break;
- }
- if (last) {
- if (screen->print_attributes) {
- send_CharSet(row);
- send_SGR(0, NO_COLOR, NO_COLOR);
- }
- for (col = 0; col < last; col++) {
- ch = c[col];
- if_OPT_WIDE_CHARS(screen, {
- ch = getXtermCell(screen, row, col);
- });
-#if OPT_PRINT_COLORS
- if (screen->colorMode) {
- if (screen->print_attributes > 1) {
- fg = (a[col] & FG_COLOR)
- ? extract_fg(ColorOf(col), a[col])
- : NO_COLOR;
- bg = (a[col] & BG_COLOR)
- ? extract_bg(ColorOf(col), a[col])
- : NO_COLOR;
- }
- }
-#endif
- if ((((a[col] & SGR_MASK) != attr)
-#if OPT_PRINT_COLORS
- || (last_fg != fg) || (last_bg != bg)
-#endif
- )
- && ch) {
- attr = (a[col] & SGR_MASK);
- last_fg = fg;
- last_bg = bg;
- if (screen->print_attributes)
- send_SGR(attr, fg, bg);
- }
-
- if (ch == 0)
- ch = ' ';
-
-#if OPT_WIDE_CHARS
- if (screen->utf8_mode)
- cs = CSET_IN;
- else
-#endif
- cs = (ch >= ' ' && ch != 0x7f) ? CSET_IN : CSET_OUT;
- if (last_cs != cs) {
- if (screen->print_attributes) {
- charToPrinter((cs == CSET_OUT)
- ? SHIFT_OUT
- : SHIFT_IN);
- }
- last_cs = cs;
- }
-
- /* FIXME: we shouldn't have to map back from the
- * alternate character set, except that the
- * corresponding charset information is not encoded
- * into the CSETS array.
- */
- charToPrinter((int) ((cs == CSET_OUT)
- ? (ch == 0x7f ? 0x5f : (ch + 0x5f))
- : ch));
- }
- if (screen->print_attributes) {
- send_SGR(0, NO_COLOR, NO_COLOR);
- if (cs != CSET_IN)
- charToPrinter(SHIFT_IN);
- }
- }
- if (screen->print_attributes)
- charToPrinter('\r');
- charToPrinter(chr);
-}
-
-void
-xtermPrintScreen(Bool use_DECPEX)
-{
- if (XtIsRealized((Widget) term)) {
- TScreen *screen = &term->screen;
- Bool extent = (use_DECPEX && screen->printer_extent);
- int top = extent ? 0 : screen->top_marg;
- int bot = extent ? screen->max_row : screen->bot_marg;
- int was_open = initialized;
-
- TRACE(("xtermPrintScreen, rows %d..%d\n", top, bot));
-
- while (top <= bot)
- printLine(top++, '\n');
- if (screen->printer_formfeed)
- charToPrinter('\f');
-
- if (!was_open || screen->printer_autoclose) {
- closePrinter();
- }
- } else {
- Bell(XkbBI_MinorError, 0);
- }
-}
-
-/*
- * If the alternate screen is active, we'll print only that. Otherwise, print
- * the normal screen plus all scrolled-back lines. The distinction is made
- * because the normal screen's buffer is part of the overall scrollback buffer.
- */
-static void
-xtermPrintEverything(void)
-{
- TScreen *screen = &term->screen;
- int top = 0;
- int bot = screen->max_row;
- int was_open = initialized;
-
- if (!screen->altbuf)
- top = -screen->savedlines;
-
- TRACE(("xtermPrintEverything, rows %d..%d\n", top, bot));
- while (top <= bot)
- printLine(top++, '\n');
- if (screen->printer_formfeed)
- charToPrinter('\f');
-
- if (!was_open || screen->printer_autoclose) {
- closePrinter();
- }
-}
-
-static void
-send_CharSet(int row)
-{
-#if OPT_DEC_CHRSET
- TScreen *screen = &term->screen;
- char *msg = 0;
-
- switch (SCRN_BUF_CSETS(screen, row)[0]) {
- case CSET_SWL:
- msg = "\033#5";
- break;
- case CSET_DHL_TOP:
- msg = "\033#3";
- break;
- case CSET_DHL_BOT:
- msg = "\033#4";
- break;
- case CSET_DWL:
- msg = "\033#6";
- break;
- }
- if (msg != 0)
- stringToPrinter(msg);
-#endif /* OPT_DEC_CHRSET */
-}
-
-static void
-send_SGR(unsigned attr, unsigned fg, unsigned bg)
-{
- char msg[80];
- strcpy(msg, "\033[0");
- if (attr & BOLD)
- strcat(msg, ";1");
- if (attr & UNDERLINE)
- strcat(msg, ";4"); /* typo? DEC documents this as '2' */
- if (attr & BLINK)
- strcat(msg, ";5");
- if (attr & INVERSE) /* typo? DEC documents this as invisible */
- strcat(msg, ";7");
-#if OPT_PRINT_COLORS
- if (bg != NO_COLOR) {
- sprintf(msg + strlen(msg), ";%u", (bg < 8) ? (40 + bg) : (92 + bg));
- }
- if (fg != NO_COLOR) {
-#if OPT_PC_COLORS
- if (term->screen.boldColors
- && fg > 8
- && (attr & BOLD) != 0)
- fg -= 8;
-#endif
- sprintf(msg + strlen(msg), ";%u", (fg < 8) ? (30 + fg) : (82 + fg));
- }
-#endif
- strcat(msg, "m");
- stringToPrinter(msg);
-}
-
-/*
- * This implementation only knows how to write to a pipe.
- */
-static void
-charToPrinter(int chr)
-{
- TScreen *screen = &term->screen;
-
- if (!initialized && xtermHasPrinter()) {
-#if defined(VMS)
- /*
- * This implementation only knows how to write to a file. When the
- * file is closed the print command executes. Print command must be of
- * the form:
- * print/que=name/delete [/otherflags].
- */
- Printer = fopen(VMS_TEMP_PRINT_FILE, "w");
-#else
- /*
- * This implementation only knows how to write to a pipe.
- */
- FILE *input;
- int my_pipe[2];
- int c;
-
- if (pipe(my_pipe))
- SysError(ERROR_FORK);
- if ((Printer_pid = fork()) < 0)
- SysError(ERROR_FORK);
-
- if (Printer_pid == 0) {
- TRACE(((char *) 0));
- close(my_pipe[1]); /* printer is silent */
- close(screen->respond);
-
- close(fileno(stdout));
- dup2(fileno(stderr), 1);
-
- if (fileno(stderr) != 2) {
- dup2(fileno(stderr), 2);
- close(fileno(stderr));
- }
- /* don't want privileges! */
- if (setgid(screen->gid) == -1)
- exit(2);
- if (setuid(screen->uid) == -1)
- exit(2);
-
- Printer = popen(screen->printer_command, "w");
- input = fdopen(my_pipe[0], "r");
- while ((c = fgetc(input)) != EOF) {
- fputc(c, Printer);
- if (isForm(c))
- fflush(Printer);
- }
- pclose(Printer);
- exit(0);
- } else {
- close(my_pipe[0]); /* won't read from printer */
- Printer = fdopen(my_pipe[1], "w");
- TRACE(("opened printer from pid %d/%d\n",
- (int) getpid(), Printer_pid));
- }
-#endif
- initialized++;
- }
- if (Printer != 0) {
-#if OPT_WIDE_CHARS
- if (chr > 127) {
- Char temp[10];
- *convertToUTF8(temp, (unsigned) chr) = 0;
- fputs((char *) temp, Printer);
- } else
-#endif
- fputc(chr, Printer);
- if (isForm(chr))
- fflush(Printer);
- }
-}
-
-static void
-stringToPrinter(char *str)
-{
- while (*str)
- charToPrinter(*str++);
-}
-
-/*
- * This module implements the MC (Media Copy) and related printing control
- * sequences for VTxxx emulation. This is based on the description in the
- * VT330/VT340 Programmer Reference Manual EK-VT3XX-TP-001 (Digital Equipment
- * Corp., March 1987).
- */
-void
-xtermMediaControl(int param, int private_seq)
-{
- TRACE(("MediaCopy param=%d, private=%d\n", param, private_seq));
-
- if (private_seq) {
- switch (param) {
- case 1:
- printCursorLine();
- break;
- case 4:
- setPrinterControlMode(0);
- break;
- case 5:
- setPrinterControlMode(1);
- break;
- case 10: /* VT320 */
- xtermPrintScreen(False);
- break;
- case 11: /* VT320 */
- xtermPrintEverything();
- break;
- }
- } else {
- switch (param) {
- case -1:
- case 0:
- xtermPrintScreen(True);
- break;
- case 4:
- setPrinterControlMode(0);
- break;
- case 5:
- setPrinterControlMode(2);
- break;
- }
- }
-}
-
-/*
- * When in autoprint mode, the printer prints a line from the screen when you
- * move the cursor off that line with an LF, FF, or VT character, or an
- * autowrap occurs. The printed line ends with a CR and the character (LF, FF
- * or VT) that moved the cursor off the previous line.
- */
-void
-xtermAutoPrint(int chr)
-{
- TScreen *screen = &term->screen;
-
- if (screen->printer_controlmode == 1) {
- TRACE(("AutoPrint %d\n", chr));
- printLine(screen->cursor_row, chr);
- if (Printer != 0)
- fflush(Printer);
- }
-}
-
-/*
- * When in printer controller mode, the terminal sends received characters to
- * the printer without displaying them on the screen. The terminal sends all
- * characters and control sequences to the printer, except NUL, XON, XOFF, and
- * the printer controller sequences.
- *
- * This function eats characters, returning 0 as long as it must buffer or
- * divert to the printer. We're only invoked here when in printer controller
- * mode, and handle the exit from that mode.
- */
-#define LB '['
-
-int
-xtermPrinterControl(int chr)
-{
- TScreen *screen = &term->screen;
- /* *INDENT-OFF* */
- static struct {
- Char seq[5];
- int active;
- } tbl[] = {
- { { CSI, '5', 'i' }, 2 },
- { { CSI, '4', 'i' }, 0 },
- { { ESC, LB, '5', 'i' }, 2 },
- { { ESC, LB, '4', 'i' }, 0 },
- };
- /* *INDENT-ON* */
-
- static Char bfr[10];
- static size_t length;
- size_t n;
-
- TRACE(("In printer:%04X\n", chr));
-
- switch (chr) {
- case 0:
- case CTRL('Q'):
- case CTRL('S'):
- return 0; /* ignored by application */
-
- case CSI:
- case ESC:
- case '[':
- case '4':
- case '5':
- case 'i':
- bfr[length++] = chr;
- for (n = 0; n < sizeof(tbl) / sizeof(tbl[0]); n++) {
- size_t len = Strlen(tbl[n].seq);
-
- if (length == len
- && Strcmp(bfr, tbl[n].seq) == 0) {
- setPrinterControlMode(tbl[n].active);
- if (screen->printer_autoclose
- && screen->printer_controlmode == 0)
- closePrinter();
- length = 0;
- return 0;
- } else if (len > length
- && Strncmp(bfr, tbl[n].seq, length) == 0) {
- return 0;
- }
- }
- length--;
-
- /* FALLTHRU */
-
- default:
- for (n = 0; n < length; n++)
- charToPrinter(bfr[n]);
- bfr[0] = chr;
- length = 1;
- return 0;
- }
-}
-
-/*
- * If there is no printer command, we will ignore printer controls.
- */
-Bool
-xtermHasPrinter(void)
-{
- TScreen *screen = &term->screen;
-
- return (strlen(screen->printer_command) != 0);
-}
-
-#define showPrinterControlMode(mode) \
- (((mode) == 0) \
- ? "normal" \
- : ((mode) == 1 \
- ? "autoprint" \
- : "printer controller"))
-
-void
-setPrinterControlMode(int mode)
-{
- if (xtermHasPrinter()
- && term->screen.printer_controlmode != mode) {
- TRACE(("%s %s mode\n",
- (mode
- ? "set"
- : "reset"),
- (mode
- ? showPrinterControlMode(mode)
- : showPrinterControlMode(term->screen.printer_controlmode))));
- term->screen.printer_controlmode = mode;
- update_print_redir();
- }
-}
diff --git a/nx-X11/programs/xterm/proto.h b/nx-X11/programs/xterm/proto.h
deleted file mode 100644
index 262c308dc..000000000
--- a/nx-X11/programs/xterm/proto.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* $XFree86: xc/programs/xterm/proto.h,v 3.4 2003/10/27 01:07:57 dickey Exp $ */
-
-#ifndef included_proto_h
-#define included_proto_h
-
-#define PROTO_XT_ACTIONS_ARGS \
- (Widget w, XEvent *event, String *params, Cardinal *num_params)
-
-#define PROTO_XT_CALLBACK_ARGS \
- (Widget gw, XtPointer closure, XtPointer data)
-
-#define PROTO_XT_CVT_SELECT_ARGS \
- (Widget w, Atom *selection, Atom *target, Atom *type, XtPointer *value, unsigned long *length, int *format)
-
-#define PROTO_XT_EV_HANDLER_ARGS \
- (Widget w, XtPointer closure, XEvent *event, Boolean *cont)
-
-#define PROTO_XT_SEL_CB_ARGS \
- (Widget w, XtPointer client_data, Atom *selection, Atom *type, XtPointer value, unsigned long *length, int *format)
-
-#ifdef SIGNALRETURNSINT
-#define SIGNAL_T int
-#define SIGNAL_RETURN return 0
-#else
-#define SIGNAL_T void
-#define SIGNAL_RETURN return
-#endif
-
-#endif/*included_proto_h*/
diff --git a/nx-X11/programs/xterm/ptydata.c b/nx-X11/programs/xterm/ptydata.c
deleted file mode 100644
index 7d3dae3e1..000000000
--- a/nx-X11/programs/xterm/ptydata.c
+++ /dev/null
@@ -1,420 +0,0 @@
-/* $XTermId: ptydata.c,v 1.65 2005/04/22 00:21:54 tom Exp $ */
-
-/*
- * $XFree86: xc/programs/xterm/ptydata.c,v 1.23 2005/04/22 00:21:54 dickey Exp $
- */
-
-/************************************************************
-
-Copyright 1999-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-********************************************************/
-
-#include <data.h>
-
-#if OPT_WIDE_CHARS
-#include <menu.h>
-#endif
-
-/*
- * Check for both EAGAIN and EWOULDBLOCK, because some supposedly POSIX
- * systems are broken and return EWOULDBLOCK when they should return EAGAIN.
- * Note that this macro may evaluate its argument more than once.
- */
-#if defined(EAGAIN) && defined(EWOULDBLOCK)
-#define E_TEST(err) ((err) == EAGAIN || (err) == EWOULDBLOCK)
-#else
-#ifdef EAGAIN
-#define E_TEST(err) ((err) == EAGAIN)
-#else
-#define E_TEST(err) ((err) == EWOULDBLOCK)
-#endif
-#endif
-
-#if OPT_WIDE_CHARS
-/*
- * Convert the 8-bit codes in data->buffer[] into Unicode in data->utf_data.
- * The number of bytes converted will be nonzero iff there is data.
- */
-static Bool
-decodeUtf8(PtyData * data)
-{
- int i;
- int length = data->last - data->next;
- int utf_count = 0;
- IChar utf_char = 0;
-
- data->utf_size = 0;
- for (i = 0; i < length; i++) {
- unsigned c = data->next[i];
-
- /* Combine UTF-8 into Unicode */
- if (c < 0x80) {
- /* We received an ASCII character */
- if (utf_count > 0) {
- data->utf_data = UCS_REPL; /* prev. sequence incomplete */
- data->utf_size = (i + 1);
- } else {
- data->utf_data = c;
- data->utf_size = 1;
- }
- break;
- } else if (c < 0xc0) {
- /* We received a continuation byte */
- if (utf_count < 1) {
- /*
- * We received a continuation byte before receiving a sequence
- * state. Or an attempt to use a C1 control string. Either
- * way, it is mapped to the replacement character.
- */
- data->utf_data = UCS_REPL; /* ... unexpectedly */
- data->utf_size = (i + 1);
- break;
- } else {
- /* Check for overlong UTF-8 sequences for which a shorter
- * encoding would exist and replace them with UCS_REPL.
- * An overlong UTF-8 sequence can have any of the following
- * forms:
- * 1100000x 10xxxxxx
- * 11100000 100xxxxx 10xxxxxx
- * 11110000 1000xxxx 10xxxxxx 10xxxxxx
- * 11111000 10000xxx 10xxxxxx 10xxxxxx 10xxxxxx
- * 11111100 100000xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
- */
- if (!utf_char && !((c & 0x7f) >> (7 - utf_count))) {
- utf_char = UCS_REPL;
- }
- /* characters outside UCS-2 become UCS_REPL */
- if (utf_char > 0x03ff) {
- /* value would be >0xffff */
- utf_char = UCS_REPL;
- } else {
- utf_char <<= 6;
- utf_char |= (c & 0x3f);
- }
- if ((utf_char >= 0xd800 &&
- utf_char <= 0xdfff) ||
- (utf_char == 0xfffe) ||
- (utf_char == 0xffff)) {
- utf_char = UCS_REPL;
- }
- utf_count--;
- if (utf_count == 0) {
- data->utf_data = utf_char;
- data->utf_size = (i + 1);
- break;
- }
- }
- } else {
- /* We received a sequence start byte */
- if (utf_count > 0) {
- data->utf_data = UCS_REPL; /* prev. sequence incomplete */
- data->utf_size = (i + 1);
- break;
- }
- if (c < 0xe0) {
- utf_count = 1;
- utf_char = (c & 0x1f);
- if (!(c & 0x1e))
- utf_char = UCS_REPL; /* overlong sequence */
- } else if (c < 0xf0) {
- utf_count = 2;
- utf_char = (c & 0x0f);
- } else if (c < 0xf8) {
- utf_count = 3;
- utf_char = (c & 0x07);
- } else if (c < 0xfc) {
- utf_count = 4;
- utf_char = (c & 0x03);
- } else if (c < 0xfe) {
- utf_count = 5;
- utf_char = (c & 0x01);
- } else {
- data->utf_data = UCS_REPL;
- data->utf_size = (i + 1);
- break;
- }
- }
- }
-#if OPT_TRACE > 1
- TRACE(("UTF-8 char %04X [%d..%d]\n",
- data->utf_data,
- data->next - data->buffer,
- data->next - data->buffer + data->utf_size - 1));
-#endif
-
- return (data->utf_size != 0);
-}
-#endif
-
-int
-readPtyData(TScreen * screen, PtySelect * select_mask, PtyData * data)
-{
- int size = 0;
-
-#ifdef VMS
- if (*select_mask & pty_mask) {
- trimPtyData(screen, data);
- if (read_queue.flink != 0) {
- size = tt_read(data->next);
- if (size == 0) {
- Panic("input: read returned zero\n", 0);
- }
- } else {
- sys$hiber();
- }
- }
-#else /* !VMS */
- if (FD_ISSET(screen->respond, select_mask)) {
- trimPtyData(screen, data);
-
- size = read(screen->respond, (char *) data->last, FRG_SIZE);
- if (size <= 0) {
- /*
- * Yes, I know this is a majorly f*ugly hack, however it seems to
- * be necessary for Solaris x86. DWH 11/15/94
- * Dunno why though..
- * (and now CYGWIN, alanh@xfree86.org 08/15/01
- */
-#if (defined(i386) && defined(SVR4) && defined(sun)) || defined(__CYGWIN__)
- if (errno == EIO || errno == 0)
-#else
- if (errno == EIO)
-#endif
- Cleanup(0);
- else if (!E_TEST(errno))
- Panic("input: read returned unexpected error (%d)\n", errno);
- size = 0;
- } else if (size == 0) {
-#if defined(__UNIXOS2__)
- Cleanup(0);
-#else
- Panic("input: read returned zero\n", 0);
-#endif
- }
- }
-#endif /* VMS */
-
- if (size) {
-#if OPT_TRACE
- int i;
-
- TRACE(("read %d bytes from pty\n", size));
- for (i = 0; i < size; i++) {
- if (!(i % 16))
- TRACE(("%s", i ? "\n " : "READ"));
- TRACE((" %02X", data->last[i]));
- }
- TRACE(("\n"));
-#endif
- data->last += size;
-#ifdef ALLOWLOGGING
- term->screen.logstart = VTbuffer->next;
-#endif
- }
-
- return (size);
-}
-
-/*
- * Check if there is more data in the input buffer which can be returned by
- * nextPtyData(). If there is insufficient data to return a completed UTF-8
- * value, return false anyway.
- */
-#if OPT_WIDE_CHARS
-Bool
-morePtyData(TScreen * screen GCC_UNUSED, PtyData * data)
-{
- Bool result = (data->last > data->next);
- if (result && screen->utf8_inparse) {
- if (!data->utf_size)
- result = decodeUtf8(data);
- }
- TRACE2(("morePtyData returns %d\n", result));
- return result;
-}
-#endif
-
-/*
- * Return the next value from the input buffer. Note that morePtyData() is
- * always called before this function, so we can do the UTF-8 input conversion
- * in that function and simply return the result here.
- */
-#if OPT_WIDE_CHARS
-IChar
-nextPtyData(TScreen * screen, PtyData * data)
-{
- IChar result;
- if (screen->utf8_inparse) {
- result = data->utf_data;
- data->next += data->utf_size;
- data->utf_size = 0;
- } else {
- result = *((data)->next++);
- if (!screen->output_eight_bits)
- result &= 0x7f;
- }
- TRACE2(("nextPtyData returns %#x\n", result));
- return result;
-}
-#endif
-
-#if OPT_WIDE_CHARS
-/*
- * Called when UTF-8 mode has been turned on/off.
- */
-void
-switchPtyData(TScreen * screen, int flag)
-{
- if (screen->utf8_mode != flag) {
- screen->utf8_mode = flag;
- screen->utf8_inparse = (flag != 0);
-
- TRACE(("turning UTF-8 mode %s\n", BtoS(flag)));
- update_font_utf8_mode();
- }
-}
-#endif
-
-void
-initPtyData(PtyData ** result)
-{
- PtyData *data;
-
- TRACE(("initPtyData given minBufSize %d, maxBufSize %d\n",
- FRG_SIZE, BUF_SIZE));
-
- if (FRG_SIZE < 64)
- FRG_SIZE = 64;
- if (BUF_SIZE < FRG_SIZE)
- BUF_SIZE = FRG_SIZE;
- if (BUF_SIZE % FRG_SIZE)
- BUF_SIZE = BUF_SIZE + FRG_SIZE - (BUF_SIZE % FRG_SIZE);
-
- TRACE(("initPtyData using minBufSize %d, maxBufSize %d\n",
- FRG_SIZE, BUF_SIZE));
-
- data = (PtyData *) XtMalloc(sizeof(*data) + BUF_SIZE + FRG_SIZE);
-
- memset(data, 0, sizeof(*data));
- data->next = data->buffer;
- data->last = data->buffer;
- *result = data;
-}
-
-/*
- * Remove used data by shifting the buffer down, to make room for more data,
- * e.g., a continuation-read.
- */
-void
-trimPtyData(TScreen * screen GCC_UNUSED, PtyData * data)
-{
- int i;
-
- FlushLog(screen);
-
- if (data->next != data->buffer) {
- int n = (data->last - data->next);
-
- TRACE(("shifting buffer down by %d\n", n));
- for (i = 0; i < n; ++i) {
- data->buffer[i] = data->next[i];
- }
- data->next = data->buffer;
- data->last = data->next + n;
- }
-
-}
-
-/*
- * Insert new data into the input buffer so the next calls to morePtyData()
- * and nextPtyData() will return that.
- */
-void
-fillPtyData(TScreen * screen, PtyData * data, char *value, int length)
-{
- int size;
- int n;
-
- /* remove the used portion of the buffer */
- trimPtyData(screen, data);
-
- VTbuffer->last += length;
- size = VTbuffer->last - VTbuffer->next;
-
- /* shift the unused portion up to make room */
- for (n = size; n >= length; --n)
- VTbuffer->next[n] = VTbuffer->next[n - length];
-
- /* insert the new bytes to interpret */
- for (n = 0; n < length; n++)
- VTbuffer->next[n] = CharOf(value[n]);
-}
-
-#if OPT_WIDE_CHARS
-Char *
-convertToUTF8(Char * lp, unsigned c)
-{
- if (c < 0x80) { /* 0******* */
- *lp++ = (c);
- } else if (c < 0x800) { /* 110***** 10****** */
- *lp++ = (0xc0 | (c >> 6));
- *lp++ = (0x80 | (c & 0x3f));
- } else { /* 1110**** 10****** 10****** */
- *lp++ = (0xe0 | (c >> 12));
- *lp++ = (0x80 | ((c >> 6) & 0x3f));
- *lp++ = (0x80 | (c & 0x3f));
- }
- /*
- * UTF-8 is defined for words of up to 31 bits, but we need only 16
- * bits here, since that's all that X11R6 supports.
- */
- return lp;
-}
-
-/*
- * Write data back to the PTY
- */
-void
-writePtyData(int f, IChar * d, unsigned len)
-{
- static Char *dbuf;
- static unsigned dlen;
- unsigned n = (len << 1);
-
- if (dlen <= len) {
- dlen = n;
- dbuf = (Char *) XtRealloc((char *) dbuf, dlen);
- }
-
- for (n = 0; n < len; n++)
- dbuf[n] = d[n];
- v_write(f, dbuf, n);
-}
-#endif
diff --git a/nx-X11/programs/xterm/ptyx.h b/nx-X11/programs/xterm/ptyx.h
deleted file mode 100644
index b08f8b41d..000000000
--- a/nx-X11/programs/xterm/ptyx.h
+++ /dev/null
@@ -1,2016 +0,0 @@
-/* $XTermId: ptyx.h,v 1.390 2005/11/03 13:17:28 tom Exp $ */
-
-/*
- * $Xorg: ptyx.h,v 1.3 2000/08/17 19:55:09 cpqbld Exp $
- */
-
-/* $XFree86: xc/programs/xterm/ptyx.h,v 3.127 2005/11/03 13:17:28 dickey Exp $ */
-
-/*
- * Copyright 1999-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#ifndef included_ptyx_h
-#define included_ptyx_h 1
-
-#ifdef HAVE_CONFIG_H
-#include <xtermcfg.h>
-#endif
-
-/* ptyx.h */
-/* @(#)ptyx.h X10/6.6 11/10/86 */
-
-#include <X11/IntrinsicP.h>
-#include <X11/Shell.h> /* for XtNdieCallback, etc. */
-#include <X11/StringDefs.h> /* for standard resource names */
-#include <X11/Xmu/Misc.h> /* For Max() and Min(). */
-#include <X11/Xfuncs.h>
-#include <X11/Xosdefs.h>
-#include <X11/Xmu/Converters.h>
-#ifdef XRENDERFONT
-#include <X11/Xft/Xft.h>
-#endif
-
-/* adapted from IntrinsicI.h */
-#define MyStackAlloc(size, stack_cache_array) \
- ((size) <= sizeof(stack_cache_array) \
- ? (XtPointer)(stack_cache_array) \
- : (XtPointer)malloc((unsigned)(size)))
-
-#define MyStackFree(pointer, stack_cache_array) \
- if ((pointer) != ((char *)(stack_cache_array))) free(pointer)
-
-/* adapted from vile (vi-like-emacs) */
-#define TypeCallocN(type,n) (type *)calloc((n), sizeof(type))
-#define TypeCalloc(type) TypeCalloc(type,1)
-
-#define TypeMallocN(type,n) (type *)malloc(sizeof(type) * (n))
-#define TypeMalloc(type) TypeMallocN(type,0)
-
-#define TypeRealloc(type,n,p) (type *)realloc(p, (n) * sizeof(type))
-
-/* use these to allocate partly-structured data */
-#define CastMallocN(type,n) (type *)malloc(sizeof(type) + (n))
-#define CastMalloc(type) CastMallocN(type,0)
-
-/*
-** System V definitions
-*/
-
-#ifdef att
-#define ATT
-#endif
-
-#ifdef SVR4
-#undef SYSV /* predefined on Solaris 2.4 */
-#define SYSV /* SVR4 is (approx) superset of SVR3 */
-#define ATT
-#endif
-
-#ifdef SYSV
-#ifdef X_NOT_POSIX
-#if !defined(CRAY) && !defined(SVR4)
-#define dup2(fd1,fd2) ((fd1 == fd2) ? fd1 : \
- (close(fd2), fcntl(fd1, F_DUPFD, fd2)))
-#endif
-#endif
-#endif /* SYSV */
-
-/*
- * Newer versions of <X11/Xft/Xft.h> have a version number. We use certain
- * features from that.
- */
-#if defined(XRENDERFONT) && defined(XFT_VERSION) && XFT_VERSION >= 20100
-#define HAVE_TYPE_FCCHAR32 1 /* compatible: XftChar16 */
-#define HAVE_TYPE_XFTCHARSPEC 1 /* new type XftCharSpec */
-#endif
-
-/*
-** Definitions to simplify ifdef's for pty's.
-*/
-#define USE_PTY_DEVICE 1
-#define USE_PTY_SEARCH 1
-
-#if defined(__osf__) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1)) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
-#undef USE_PTY_DEVICE
-#undef USE_PTY_SEARCH
-#define USE_PTS_DEVICE 1
-#elif defined(VMS)
-#undef USE_PTY_DEVICE
-#undef USE_PTY_SEARCH
-#elif defined(PUCC_PTYD)
-#undef USE_PTY_SEARCH
-#endif
-
-#if defined(SYSV) && defined(i386) && !defined(SVR4)
-#define ATT
-#define USE_HANDSHAKE 1
-#define USE_ISPTS_FLAG 1
-#endif
-
-#if (defined (__GLIBC__) && ((__GLIBC__ > 2) || (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
-#define USE_USG_PTYS
-#define USE_HANDSHAKE 0 /* "recent" Linux systems do not require handshaking */
-#elif (defined(ATT) && !defined(__sgi)) || defined(__MVS__) || (defined(SYSV) && defined(i386))
-#define USE_USG_PTYS
-#else
-#define USE_HANDSHAKE 1
-#endif
-
-/*
- * More systems than not require pty-handshaking.
- */
-#ifndef USE_HANDSHAKE
-#define USE_HANDSHAKE 1
-#endif
-
-/*
-** allow for mobility of the pty master/slave directories
-*/
-#ifndef PTYDEV
-#if defined(__hpux)
-#define PTYDEV "/dev/ptym/ptyxx"
-#elif defined(__MVS__)
-#define PTYDEV "/dev/ptypxxxx"
-#else
-#define PTYDEV "/dev/ptyxx"
-#endif
-#endif /* !PTYDEV */
-
-#ifndef TTYDEV
-#if defined(__hpux)
-#define TTYDEV "/dev/pty/ttyxx"
-#elif defined(__MVS__)
-#define TTYDEV "/dev/ptypxxxx"
-#elif defined(USE_PTS_DEVICE)
-#define TTYDEV "/dev/pts/0"
-#else
-#define TTYDEV "/dev/ttyxx"
-#endif
-#endif /* !TTYDEV */
-
-#ifndef PTYCHAR1
-#ifdef __hpux
-#define PTYCHAR1 "zyxwvutsrqp"
-#else /* !__hpux */
-#ifdef __UNIXOS2__
-#define PTYCHAR1 "pq"
-#else
-#define PTYCHAR1 "pqrstuvwxyzPQRSTUVWXYZ"
-#endif /* !__UNIXOS2__ */
-#endif /* !__hpux */
-#endif /* !PTYCHAR1 */
-
-#ifndef PTYCHAR2
-#ifdef __hpux
-#define PTYCHAR2 "fedcba9876543210"
-#else /* !__hpux */
-#if defined(__DragonFly__) || defined(__FreeBSD__)
-#define PTYCHAR2 "0123456789abcdefghijklmnopqrstuv"
-#else /* !__FreeBSD__ */
-#define PTYCHAR2 "0123456789abcdef"
-#endif /* !__FreeBSD__ */
-#endif /* !__hpux */
-#endif /* !PTYCHAR2 */
-
-#ifndef TTYFORMAT
-#if defined(CRAY)
-#define TTYFORMAT "/dev/ttyp%03d"
-#elif defined(__MVS__)
-#define TTYFORMAT "/dev/ttyp%04d"
-#else
-#define TTYFORMAT "/dev/ttyp%d"
-#endif
-#endif /* TTYFORMAT */
-
-#ifndef PTYFORMAT
-#ifdef CRAY
-#define PTYFORMAT "/dev/pty/%03d"
-#elif defined(__MVS__)
-#define PTYFORMAT "/dev/ptyp%04d"
-#else
-#define PTYFORMAT "/dev/ptyp%d"
-#endif
-#endif /* PTYFORMAT */
-
-#ifndef PTYCHARLEN
-#ifdef CRAY
-#define PTYCHARLEN 3
-#elif defined(__MVS__)
-#define PTYCHARLEN 8 /* OS/390 stores, e.g. ut_id="ttyp1234" */
-#else
-#define PTYCHARLEN 2
-#endif
-#endif
-
-#ifndef MAXPTTYS
-#ifdef CRAY
-#define MAXPTTYS 256
-#else
-#define MAXPTTYS 2048
-#endif
-#endif
-
-/* Until the translation manager comes along, I have to do my own translation of
- * mouse events into the proper routines. */
-
-typedef enum {NORMAL, LEFTEXTENSION, RIGHTEXTENSION} EventMode;
-
-/*
- * The origin of a screen is 0, 0. Therefore, the number of rows
- * on a screen is screen->max_row + 1, and similarly for columns.
- */
-#define MaxCols(screen) ((screen)->max_col + 1)
-#define MaxRows(screen) ((screen)->max_row + 1)
-
-typedef unsigned char Char; /* to support 8 bit chars */
-typedef Char *ScrnPtr;
-typedef ScrnPtr *ScrnBuf;
-
-#define CharOf(n) ((unsigned char)(n))
-
-/*
- * ANSI emulation, special character codes
- */
-#define INQ 0x05
-#define BEL 0x07
-#define FF 0x0C /* C0, C1 control names */
-#define LS1 0x0E
-#define LS0 0x0F
-#define NAK 0x15
-#define CAN 0x18
-#define SUB 0x1A
-#define ESC 0x1B
-#define XPOUND 0x1E /* internal mapping for '#' */
-#define US 0x1F
-#define DEL 0x7F
-#define RI 0x8D
-#define SS2 0x8E
-#define SS3 0x8F
-#define DCS 0x90
-#define SPA 0x96
-#define EPA 0x97
-#define SOS 0x98
-#define OLDID 0x9A /* ESC Z */
-#define CSI 0x9B
-#define ST 0x9C
-#define OSC 0x9D
-#define PM 0x9E
-#define APC 0x9F
-#define RDEL 0xFF
-
-#define MIN_DECID 52 /* can emulate VT52 */
-#define MAX_DECID 420 /* ...through VT420 */
-
-#ifndef DFT_DECID
-#define DFT_DECID "vt100" /* default VT100 */
-#endif
-
-#ifndef DFT_KBD_DIALECT
-#define DFT_KBD_DIALECT "B" /* default USASCII */
-#endif
-
-/* constants used for utf8 mode */
-#define UCS_REPL 0xfffd
-#define UCS_LIMIT 0x80000000U /* both limit and flag for non-UCS */
-
-#define TERMCAP_SIZE 1500 /* 1023 is standard; 'screen' exceeds */
-
-#define NMENUFONTS 9 /* font entries in fontMenu */
-
-#define NBOX 5 /* Number of Points in box */
-#define NPARAM 30 /* Max. parameters */
-
-typedef struct {
- char *opt;
- char *desc;
-} OptionHelp;
-
-typedef struct {
- unsigned char a_type; /* CSI, etc., see unparseq() */
- unsigned char a_pintro; /* private-mode char, if any */
- unsigned char a_inters; /* special (before final-char) */
- unsigned char a_final; /* final-char */
- short a_nparam; /* # of parameters */
- short a_param[NPARAM]; /* Parameters */
-} ANSI;
-
-#define TEK_FONT_LARGE 0
-#define TEK_FONT_2 1
-#define TEK_FONT_3 2
-#define TEK_FONT_SMALL 3
-#define TEKNUMFONTS 4
-
-/* Actually there are 5 types of lines, but four are non-solid lines */
-#define TEKNUMLINES 4
-
-typedef struct {
- int x;
- int y;
- int fontsize;
- unsigned linetype;
-} Tmodes;
-
-typedef struct {
- int Twidth;
- int Theight;
-} T_fontsize;
-
-typedef struct {
- short *bits;
- int x;
- int y;
- int width;
- int height;
-} BitmapBits;
-
-#define SAVELINES 64 /* default # lines to save */
-#define SCROLLLINES 1 /* default # lines to scroll */
-
-#define EXCHANGE(a,b,tmp) tmp = a; a = b; b = tmp
-
-/***====================================================================***/
-
-#if (XtSpecificationRelease < 6)
-#ifndef NO_ACTIVE_ICON
-#define NO_ACTIVE_ICON 1 /* Note: code relies on an X11R6 function */
-#endif
-#endif
-
-#ifndef OPT_AIX_COLORS
-#define OPT_AIX_COLORS 1 /* true if xterm is configured with AIX (16) colors */
-#endif
-
-#ifndef OPT_BLINK_CURS
-#define OPT_BLINK_CURS 1 /* true if xterm has blinking cursor capability */
-#endif
-
-#ifndef OPT_BLINK_TEXT
-#define OPT_BLINK_TEXT OPT_BLINK_CURS /* true if xterm has blinking text capability */
-#endif
-
-#ifndef OPT_BOX_CHARS
-#define OPT_BOX_CHARS 1 /* true if xterm can simulate box-characters */
-#endif
-
-#ifndef OPT_BROKEN_OSC
-#ifdef linux
-#define OPT_BROKEN_OSC 1 /* man console_codes, 1st paragraph - cf: ECMA-48 */
-#else
-#define OPT_BROKEN_OSC 0 /* true if xterm allows Linux's broken OSC parsing */
-#endif
-#endif
-
-#ifndef OPT_BROKEN_ST
-#define OPT_BROKEN_ST 1 /* true if xterm allows old/broken OSC parsing */
-#endif
-
-#ifndef OPT_C1_PRINT
-#define OPT_C1_PRINT 1 /* true if xterm allows C1 controls to be printable */
-#endif
-
-#ifndef OPT_CLIP_BOLD
-#define OPT_CLIP_BOLD 1 /* true if xterm uses clipping to avoid bold-trash */
-#endif
-
-#ifndef OPT_COLOR_CLASS
-#define OPT_COLOR_CLASS 1 /* true if xterm uses separate color-resource classes */
-#endif
-
-#ifndef OPT_COLOR_RES
-#define OPT_COLOR_RES 1 /* true if xterm delays color-resource evaluation */
-#undef OPT_COLOR_RES2
-#endif
-
-#ifndef OPT_COLOR_RES2
-#define OPT_COLOR_RES2 OPT_COLOR_RES /* true to avoid using extra resources */
-#endif
-
-#ifndef OPT_DABBREV
-#define OPT_DABBREV 0 /* dynamic abbreviations */
-#endif
-
-#ifndef OPT_DEC_CHRSET
-#define OPT_DEC_CHRSET 1 /* true if xterm is configured for DEC charset */
-#endif
-
-#ifndef OPT_DEC_LOCATOR
-#define OPT_DEC_LOCATOR 0 /* true if xterm supports VT220-style mouse events */
-#endif
-
-#ifndef OPT_DEC_RECTOPS
-#define OPT_DEC_RECTOPS 0 /* true if xterm is configured for VT420 rectangles */
-#endif
-
-#ifndef OPT_DEC_SOFTFONT
-#define OPT_DEC_SOFTFONT 0 /* true if xterm is configured for VT220 softfonts */
-#endif
-
-#ifndef OPT_EBCDIC
-#ifdef __MVS__
-#define OPT_EBCDIC 1
-#else
-#define OPT_EBCDIC 0
-#endif
-#endif
-
-#ifndef OPT_HP_FUNC_KEYS
-#define OPT_HP_FUNC_KEYS 0 /* true if xterm supports HP-style function keys */
-#endif
-
-#ifndef OPT_I18N_SUPPORT
-#if (XtSpecificationRelease >= 5)
-#define OPT_I18N_SUPPORT 1 /* true if xterm uses internationalization support */
-#else
-#define OPT_I18N_SUPPORT 0
-#endif
-#endif
-
-#ifndef OPT_INITIAL_ERASE
-#define OPT_INITIAL_ERASE 1 /* use pty's erase character if it's not 128 */
-#endif
-
-#ifndef OPT_INPUT_METHOD
-#if (XtSpecificationRelease >= 6)
-#define OPT_INPUT_METHOD 1 /* true if xterm uses input-method support */
-#else
-#define OPT_INPUT_METHOD 0
-#endif
-#endif
-
-#ifndef OPT_ISO_COLORS
-#define OPT_ISO_COLORS 1 /* true if xterm is configured with ISO colors */
-#endif
-
-#ifndef OPT_256_COLORS
-#define OPT_256_COLORS 0 /* true if xterm is configured with 256 colors */
-#endif
-
-#ifndef OPT_88_COLORS
-#define OPT_88_COLORS 0 /* true if xterm is configured with 88 colors */
-#endif
-
-#ifndef OPT_HIGHLIGHT_COLOR
-#define OPT_HIGHLIGHT_COLOR 1 /* true if xterm supports color highlighting */
-#endif
-
-#ifndef OPT_LOAD_VTFONTS
-#define OPT_LOAD_VTFONTS 0 /* true if xterm has load-vt-fonts() action */
-#endif
-
-#ifndef OPT_LUIT_PROG
-#define OPT_LUIT_PROG 0 /* true if xterm supports luit */
-#endif
-
-#ifndef OPT_MAXIMIZE
-#define OPT_MAXIMIZE 1 /* add actions for iconify ... maximize */
-#endif
-
-#ifndef OPT_MINI_LUIT
-#define OPT_MINI_LUIT 0 /* true if xterm supports built-in mini-luit */
-#endif
-
-#ifndef OPT_MOD_FKEYS
-#define OPT_MOD_FKEYS 1 /* modify cursor- and function-keys in normal mode */
-#endif
-
-#ifndef OPT_NUM_LOCK
-#define OPT_NUM_LOCK 1 /* use NumLock key only for numeric-keypad */
-#endif
-
-#ifndef OPT_PASTE64
-#define OPT_PASTE64 0 /* program control of select/paste via base64 */
-#endif
-
-#ifndef OPT_PC_COLORS
-#define OPT_PC_COLORS 1 /* true if xterm supports PC-style (bold) colors */
-#endif
-
-#ifndef OPT_PTY_HANDSHAKE
-#define OPT_PTY_HANDSHAKE USE_HANDSHAKE /* avoid pty races on older systems */
-#endif
-
-#ifndef OPT_PRINT_COLORS
-#define OPT_PRINT_COLORS 1 /* true if we print color information */
-#endif
-
-#ifndef OPT_READLINE
-#define OPT_READLINE 0 /* mouse-click/paste support for readline */
-#endif
-
-#ifndef OPT_RENDERFONT
-#ifdef XRENDERFONT
-#define OPT_RENDERFONT 1
-#else
-#define OPT_RENDERFONT 0
-#endif
-#endif
-
-#ifndef OPT_RENDERWIDE
-#if OPT_RENDERFONT && OPT_WIDE_CHARS && defined(HAVE_TYPE_XFTCHARSPEC)
-#define OPT_RENDERWIDE 1
-#else
-#define OPT_RENDERWIDE 0
-#endif
-#endif
-
-#ifndef OPT_SAME_NAME
-#define OPT_SAME_NAME 1 /* suppress redundant updates of title, icon, etc. */
-#endif
-
-#ifndef OPT_SCO_FUNC_KEYS
-#define OPT_SCO_FUNC_KEYS 0 /* true if xterm supports SCO-style function keys */
-#endif
-
-#ifndef OPT_SESSION_MGT
-#if defined(XtNdieCallback) && defined(XtNsaveCallback)
-#define OPT_SESSION_MGT 1
-#else
-#define OPT_SESSION_MGT 0
-#endif
-#endif
-
-#ifndef OPT_SHIFT_FONTS
-#define OPT_SHIFT_FONTS 1 /* true if xterm interprets fontsize-shifting */
-#endif
-
-#ifndef OPT_SUNPC_KBD
-#define OPT_SUNPC_KBD 1 /* true if xterm supports Sun/PC keyboard map */
-#endif
-
-#ifndef OPT_TCAP_QUERY
-#define OPT_TCAP_QUERY 0 /* true for experimental termcap query */
-#endif
-
-#ifndef OPT_TEK4014
-#define OPT_TEK4014 1 /* true if we're using tek4014 emulation */
-#endif
-
-#ifndef OPT_TOOLBAR
-#define OPT_TOOLBAR 0 /* true if xterm supports toolbar menus */
-#endif
-
-#ifndef OPT_TRACE
-#define OPT_TRACE 0 /* true if we're using debugging traces */
-#endif
-
-#ifndef OPT_VT52_MODE
-#define OPT_VT52_MODE 1 /* true if xterm supports VT52 emulation */
-#endif
-
-#ifndef OPT_WIDE_CHARS
-#define OPT_WIDE_CHARS 0 /* true if xterm supports 16-bit characters */
-#endif
-
-#ifndef OPT_XMC_GLITCH
-#define OPT_XMC_GLITCH 0 /* true if xterm supports xmc (magic cookie glitch) */
-#endif
-
-#ifndef OPT_ZICONBEEP
-#define OPT_ZICONBEEP 1 /* true if xterm supports "-ziconbeep" option */
-#endif
-
-/***====================================================================***/
-
-#if OPT_AIX_COLORS && !OPT_ISO_COLORS
-/* You must have ANSI/ISO colors to support AIX colors */
-#undef OPT_AIX_COLORS
-#define OPT_AIX_COLORS 0
-#endif
-
-#if OPT_COLOR_RES && !OPT_ISO_COLORS
-/* You must have ANSI/ISO colors to support ColorRes logic */
-#undef OPT_COLOR_RES
-#define OPT_COLOR_RES 0
-#endif
-
-#if OPT_COLOR_RES2 && !(OPT_256_COLORS || OPT_88_COLORS)
-/* You must have 88/256 colors to need fake-resource logic */
-#undef OPT_COLOR_RES2
-#define OPT_COLOR_RES2 0
-#endif
-
-#if OPT_PASTE64 && !OPT_READLINE
-/* OPT_PASTE64 uses logic from OPT_READLINE */
-#undef OPT_READLINE
-#define OPT_READLINE 1
-#endif
-
-#if OPT_PC_COLORS && !OPT_ISO_COLORS
-/* You must have ANSI/ISO colors to support PC colors */
-#undef OPT_PC_COLORS
-#define OPT_PC_COLORS 0
-#endif
-
-#if OPT_PRINT_COLORS && !OPT_ISO_COLORS
-/* You must have ANSI/ISO colors to be able to print them */
-#undef OPT_PRINT_COLORS
-#define OPT_PRINT_COLORS 0
-#endif
-
-#if OPT_256_COLORS && !OPT_ISO_COLORS
-/* You must have ANSI/ISO colors to support 256 colors */
-#undef OPT_256_COLORS
-#define OPT_256_COLORS 0
-#endif
-
-#if OPT_88_COLORS && !OPT_ISO_COLORS
-/* You must have ANSI/ISO colors to support 88 colors */
-#undef OPT_88_COLORS
-#define OPT_88_COLORS 0
-#endif
-
-#if OPT_88_COLORS && OPT_256_COLORS
-/* 256 colors supersedes 88 colors */
-#undef OPT_88_COLORS
-#define OPT_88_COLORS 0
-#endif
-
-/***====================================================================***/
-
-/*
- * Indices for menu_font_names[][]
- */
-typedef enum {
- fNorm = 0
- , fBold
-#if OPT_WIDE_CHARS
- , fWide
- , fWBold
-#endif
- , fMAX
-} VTFontEnum;
-
-/* indices for the normal terminal colors in screen.Tcolors[] */
-typedef enum {
- TEXT_FG = 0 /* text foreground */
- , TEXT_BG = 1 /* text background */
- , TEXT_CURSOR = 2 /* text cursor */
- , MOUSE_FG = 3 /* mouse foreground */
- , MOUSE_BG = 4 /* mouse background */
-#if OPT_TEK4014
- , TEK_FG = 5 /* tektronix foreground */
- , TEK_BG = 6 /* tektronix background */
-#endif
-#if OPT_HIGHLIGHT_COLOR
- , HIGHLIGHT_BG = 7 /* highlight background */
-#endif
-#if OPT_TEK4014
- , TEK_CURSOR = 8 /* tektronix cursor */
-#endif
- , NCOLORS /* total number of colors */
-} TermColors;
-
-#define COLOR_DEFINED(s,w) ((s)->which & (1<<(w)))
-#define COLOR_VALUE(s,w) ((s)->colors[w])
-#define SET_COLOR_VALUE(s,w,v) (((s)->colors[w] = (v)), ((s)->which |= (1<<(w))))
-
-#define COLOR_NAME(s,w) ((s)->names[w])
-#define SET_COLOR_NAME(s,w,v) (((s)->names[w] = (v)), ((s)->which |= (1<<(w))))
-
-#define UNDEFINE_COLOR(s,w) ((s)->which &= (~((w)<<1)))
-
-/***====================================================================***/
-
-#if OPT_ISO_COLORS
-#define if_OPT_ISO_COLORS(screen, code) if(screen->colorMode) code
-#define TERM_COLOR_FLAGS(xw) ((xw)->flags & (FG_COLOR|BG_COLOR))
-#define COLOR_0 0
-#define COLOR_1 1
-#define COLOR_2 2
-#define COLOR_3 3
-#define COLOR_4 4
-#define COLOR_5 5
-#define COLOR_6 6
-#define COLOR_7 7
-#define COLOR_8 8
-#define COLOR_9 9
-#define COLOR_10 10
-#define COLOR_11 11
-#define COLOR_12 12
-#define COLOR_13 13
-#define COLOR_14 14
-#define COLOR_15 15
-#define MIN_ANSI_COLORS 16
-
-#if OPT_256_COLORS
-# define NUM_ANSI_COLORS 256
-#elif OPT_88_COLORS
-# define NUM_ANSI_COLORS 88
-#else
-# define NUM_ANSI_COLORS MIN_ANSI_COLORS
-#endif
-
-#if NUM_ANSI_COLORS > MIN_ANSI_COLORS
-# define OPT_EXT_COLORS 1
-#else
-# define OPT_EXT_COLORS 0
-#endif
-
-#define COLOR_BD (NUM_ANSI_COLORS) /* BOLD */
-#define COLOR_UL (NUM_ANSI_COLORS+1) /* UNDERLINE */
-#define COLOR_BL (NUM_ANSI_COLORS+2) /* BLINK */
-#define COLOR_RV (NUM_ANSI_COLORS+3) /* REVERSE */
-#define MAXCOLORS (NUM_ANSI_COLORS+4)
-#ifndef DFT_COLORMODE
-#define DFT_COLORMODE TRUE /* default colorMode resource */
-#endif
-
-#define ReverseOrHilite(screen,flags,hilite) \
- (( screen->colorRVMode && hilite ) || \
- ( !screen->colorRVMode && \
- (( (flags & INVERSE) && !hilite) || \
- (!(flags & INVERSE) && hilite)) ))
-
-/* Define a fake XK code, we need it for the fake color response in
- * xtermcapKeycode(). */
-#if OPT_TCAP_QUERY
-# define XK_COLORS 0x0003
-#endif
-
-#else /* !OPT_ISO_COLORS */
-
-#define if_OPT_ISO_COLORS(screen, code) /* nothing */
-#define TERM_COLOR_FLAGS(xw) 0
-
-#define ReverseOrHilite(screen,flags,hilite) \
- (( (flags & INVERSE) && !hilite) || \
- (!(flags & INVERSE) && hilite))
-
-#endif /* OPT_ISO_COLORS */
-
-#if OPT_AIX_COLORS
-#define if_OPT_AIX_COLORS(screen, code) if(screen->colorMode) code
-#else
-#define if_OPT_AIX_COLORS(screen, code) /* nothing */
-#endif
-
-#if OPT_256_COLORS || OPT_88_COLORS
-# define if_OPT_EXT_COLORS(screen, code) if(screen->colorMode) code
-# define if_OPT_ISO_TRADITIONAL_COLORS(screen, code) /* nothing */
-#elif OPT_ISO_COLORS
-# define if_OPT_EXT_COLORS(screen, code) /* nothing */
-# define if_OPT_ISO_TRADITIONAL_COLORS(screen, code) if(screen->colorMode) code
-#else
-# define if_OPT_EXT_COLORS(screen, code) /* nothing */
-# define if_OPT_ISO_TRADITIONAL_COLORS(screen, code) /*nothing*/
-#endif
-
-#define COLOR_RES_NAME(root) "color" root
-
-#if OPT_COLOR_CLASS
-#define COLOR_RES_CLASS(root) "Color" root
-#else
-#define COLOR_RES_CLASS(root) XtCForeground
-#endif
-
-#if OPT_COLOR_RES
-#define COLOR_RES(root,offset,value) Sres(COLOR_RES_NAME(root), COLOR_RES_CLASS(root), offset.resource, value)
-#define COLOR_RES2(name,class,offset,value) Sres(name, class, offset.resource, value)
-#else
-#define COLOR_RES(root,offset,value) Cres(COLOR_RES_NAME(root), COLOR_RES_CLASS(root), offset, value)
-#define COLOR_RES2(name,class,offset,value) Cres(name, class, offset, value)
-#endif
-
-/***====================================================================***/
-
-#if OPT_DEC_CHRSET
-#define if_OPT_DEC_CHRSET(code) code
- /* Use 2 bits for encoding the double high/wide sense of characters */
-#define CSET_SWL 0
-#define CSET_DHL_TOP 1
-#define CSET_DHL_BOT 2
-#define CSET_DWL 3
-#define NUM_CHRSET 8 /* normal/bold and 4 CSET_xxx values */
- /* Use remaining bits for encoding the other character-sets */
-#define CSET_NORMAL(code) ((code) == CSET_SWL)
-#define CSET_DOUBLE(code) (!CSET_NORMAL(code) && !CSET_EXTEND(code))
-#define CSET_EXTEND(code) ((code) > CSET_DWL)
- /* for doublesize characters, the first cell in a row holds the info */
-#define SCRN_ROW_CSET(screen,row) (SCRN_BUF_CSETS((screen), row)[0])
-#define CurMaxCol(screen, row) \
- (CSET_DOUBLE(SCRN_ROW_CSET(screen, row)) \
- ? (screen->max_col / 2) \
- : (screen->max_col))
-#define CurCursorX(screen, row, col) \
- (CSET_DOUBLE(SCRN_ROW_CSET(screen, row)) \
- ? CursorX(screen, 2*(col)) \
- : CursorX(screen, (col)))
-#define CurFontWidth(screen, row) \
- (CSET_DOUBLE(SCRN_ROW_CSET(screen, row)) \
- ? 2*FontWidth(screen) \
- : FontWidth(screen))
-#else
-#define if_OPT_DEC_CHRSET(code) /*nothing*/
-#define CurMaxCol(screen, row) screen->max_col
-#define CurCursorX(screen, row, col) CursorX(screen, col)
-#define CurFontWidth(screen, row) FontWidth(screen)
-#endif
-
-#if OPT_LUIT_PROG && !OPT_WIDE_CHARS
-#error Luit requires the wide-chars configuration
-#endif
-
- /* the number of pointers per row in 'ScrnBuf' */
-#if OPT_ISO_COLORS || OPT_DEC_CHRSET || OPT_WIDE_CHARS
-#define MAX_PTRS term->num_ptrs
-#else
-#define MAX_PTRS (OFF_ATTRS+1)
-#endif
-
-#define BUF_HEAD 1
- /* the number that point to Char data */
-#define BUF_PTRS (MAX_PTRS - BUF_HEAD)
-
-/***====================================================================***/
-
-#if OPT_EBCDIC
-extern int E2A(int);
-extern int A2E(int);
-#else
-#define E2A(a) (a)
-#define A2E(a) (a)
-#endif
-
-#define CONTROL(a) (A2E(E2A(a)&037))
-
-/***====================================================================***/
-
-#if OPT_TEK4014
-#define TEK4014_ACTIVE(screen) ((screen)->TekEmu)
-#define CURRENT_EMU_VAL(screen,tek,vt) (TEK4014_ACTIVE(screen) ? tek : vt)
-#define CURRENT_EMU(screen) CURRENT_EMU_VAL(screen, (Widget)tekWidget, (Widget)term)
-#else
-#define TEK4014_ACTIVE(screen) 0
-#define CURRENT_EMU_VAL(screen,tek,vt) (vt)
-#define CURRENT_EMU(screen) ((Widget)term)
-#endif
-
-/***====================================================================***/
-
-#if OPT_TOOLBAR
-#define SHELL_OF(widget) XtParent(XtParent(widget))
-#else
-#define SHELL_OF(widget) XtParent(widget)
-#endif
-
-/***====================================================================***/
-
-#if OPT_VT52_MODE
-#define if_OPT_VT52_MODE(screen, code) if(screen->vtXX_level == 0) code
-#else
-#define if_OPT_VT52_MODE(screen, code) /* nothing */
-#endif
-
-/***====================================================================***/
-
-#if OPT_XMC_GLITCH
-#define if_OPT_XMC_GLITCH(screen, code) if(screen->xmc_glitch) code
-#define XMC_GLITCH 1 /* the character we'll show */
-#define XMC_FLAGS (INVERSE|UNDERLINE|BOLD)
-#else
-#define if_OPT_XMC_GLITCH(screen, code) /* nothing */
-#endif
-
-/***====================================================================***/
-
-#if OPT_WIDE_CHARS
-#define if_OPT_WIDE_CHARS(screen, code) if(screen->wide_chars) code
-#define PAIRED_CHARS(a,b) a,b
-typedef unsigned IChar; /* for 8 or 16-bit characters, plus flag */
-#else
-#define if_OPT_WIDE_CHARS(screen, code) /* nothing */
-#define PAIRED_CHARS(a,b) a
-typedef unsigned char IChar; /* for 8-bit characters */
-#endif
-
-/***====================================================================***/
-
-#ifndef RES_OFFSET
-#define RES_OFFSET(offset) XtOffsetOf(XtermWidgetRec, offset)
-#endif
-
-#define RES_NAME(name) name
-#define RES_CLASS(name) name
-
-#define Bres(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRBoolean, sizeof(Boolean), \
- RES_OFFSET(offset), XtRImmediate, (XtPointer) dftvalue}
-
-#define Cres(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRPixel, sizeof(Pixel), \
- RES_OFFSET(offset), XtRString, (XtPointer) dftvalue}
-
-#define Tres(name, class, offset, dftvalue) \
- COLOR_RES2(name, class, screen.Tcolors[offset], dftvalue) \
-
-#define Fres(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRFontStruct, sizeof(XFontStruct *), \
- RES_OFFSET(offset), XtRString, (XtPointer) dftvalue}
-
-#define Ires(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRInt, sizeof(int), \
- RES_OFFSET(offset), XtRImmediate, (XtPointer) dftvalue}
-
-#define Dres(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRFloat, sizeof(float), \
- RES_OFFSET(offset), XtRString, (XtPointer) dftvalue}
-
-#define Sres(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRString, sizeof(char *), \
- RES_OFFSET(offset), XtRString, (XtPointer) dftvalue}
-
-#define Wres(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRWidget, sizeof(Widget), \
- RES_OFFSET(offset), XtRWidget, (XtPointer) dftvalue}
-
-/***====================================================================***/
-
-#define FRG_SIZE resource.minBufSize
-#define BUF_SIZE resource.maxBufSize
-
-typedef struct {
- Char * next;
- Char * last;
- int update; /* HandleInterpret */
-#if OPT_WIDE_CHARS
- IChar utf_data; /* resulting character */
- int utf_size; /* ...number of bytes decoded */
-#endif
- Char buffer[1];
-} PtyData;
-
-/***====================================================================***/
-
-/* The order of ifdef's matches the logic for num_ptrs in VTInitialize */
-typedef enum {
- OFF_FLAGS = 0 /* BUF_HEAD */
- , OFF_CHARS = 1 /* first (or only) byte of cell's character */
- , OFF_ATTRS = 2 /* video attributes */
-#if OPT_ISO_COLORS
-#if OPT_256_COLORS || OPT_88_COLORS
- , OFF_FGRND /* foreground color number */
- , OFF_BGRND /* background color number */
-#else
- , OFF_COLOR /* foreground+background color numbers */
-#endif
-#endif
-#if OPT_DEC_CHRSET
- , OFF_CSETS /* DEC character-set */
-#endif
-#if OPT_WIDE_CHARS
- , OFF_WIDEC /* second byte of first wide-character */
- , OFF_COM1L /* first combining character */
- , OFF_COM1H
- , OFF_COM2L /* second combining character */
- , OFF_COM2H
-#endif
-} BufOffsets;
-
- /* ScrnBuf-level macros */
-#define BUF_FLAGS(buf, row) (buf[MAX_PTRS * (row) + OFF_FLAGS])
-#define BUF_CHARS(buf, row) (buf[MAX_PTRS * (row) + OFF_CHARS])
-#define BUF_ATTRS(buf, row) (buf[MAX_PTRS * (row) + OFF_ATTRS])
-#define BUF_COLOR(buf, row) (buf[MAX_PTRS * (row) + OFF_COLOR])
-#define BUF_FGRND(buf, row) (buf[MAX_PTRS * (row) + OFF_FGRND])
-#define BUF_BGRND(buf, row) (buf[MAX_PTRS * (row) + OFF_BGRND])
-#define BUF_CSETS(buf, row) (buf[MAX_PTRS * (row) + OFF_CSETS])
-#define BUF_WIDEC(buf, row) (buf[MAX_PTRS * (row) + OFF_WIDEC])
-#define BUF_COM1L(buf, row) (buf[MAX_PTRS * (row) + OFF_COM1L])
-#define BUF_COM1H(buf, row) (buf[MAX_PTRS * (row) + OFF_COM1H])
-#define BUF_COM2L(buf, row) (buf[MAX_PTRS * (row) + OFF_COM2L])
-#define BUF_COM2H(buf, row) (buf[MAX_PTRS * (row) + OFF_COM2H])
-
- /* TScreen-level macros */
-#define SCRN_BUF_FLAGS(screen, row) BUF_FLAGS(screen->visbuf, row)
-#define SCRN_BUF_CHARS(screen, row) BUF_CHARS(screen->visbuf, row)
-#define SCRN_BUF_ATTRS(screen, row) BUF_ATTRS(screen->visbuf, row)
-#define SCRN_BUF_COLOR(screen, row) BUF_COLOR(screen->visbuf, row)
-#define SCRN_BUF_FGRND(screen, row) BUF_FGRND(screen->visbuf, row)
-#define SCRN_BUF_BGRND(screen, row) BUF_BGRND(screen->visbuf, row)
-#define SCRN_BUF_CSETS(screen, row) BUF_CSETS(screen->visbuf, row)
-#define SCRN_BUF_WIDEC(screen, row) BUF_WIDEC(screen->visbuf, row)
-#define SCRN_BUF_COM1L(screen, row) BUF_COM1L(screen->visbuf, row)
-#define SCRN_BUF_COM2L(screen, row) BUF_COM2L(screen->visbuf, row)
-#define SCRN_BUF_COM1H(screen, row) BUF_COM1H(screen->visbuf, row)
-#define SCRN_BUF_COM2H(screen, row) BUF_COM2H(screen->visbuf, row)
-
-typedef struct {
- unsigned chrset;
- unsigned flags;
- XFontStruct * fs;
- GC gc;
- char * fn;
-} XTermFonts;
-
-typedef struct {
- int top;
- int left;
- int bottom;
- int right;
-} XTermRect;
-
- /* indices into save_modes[] */
-typedef enum {
- DP_CRS_VISIBLE,
- DP_DECANM,
- DP_DECARM,
- DP_DECAWM,
- DP_DECBKM,
- DP_DECCKM,
- DP_DECCOLM, /* IN132COLUMNS */
- DP_DECOM,
- DP_DECPEX,
- DP_DECPFF,
- DP_DECSCLM,
- DP_DECSCNM,
- DP_DECTCEM,
- DP_DECTEK,
- DP_PRN_EXTENT,
- DP_PRN_FORMFEED,
- DP_X_ALTSCRN,
- DP_X_DECCOLM,
- DP_X_LOGGING,
- DP_X_MARGIN,
- DP_X_MORE,
- DP_X_MOUSE,
- DP_X_REVWRAP,
- DP_X_X10MSE,
-#if OPT_BLINK_CURS
- DP_CRS_BLINK,
-#endif
-#if OPT_TOOLBAR
- DP_TOOLBAR,
-#endif
- DP_LAST
-} SaveModes;
-
-#define DoSM(code,value) screen->save_modes[code] = value
-#define DoRM(code,value) value = screen->save_modes[code]
-
- /* index into vt_shell[] or tek_shell[] */
-typedef enum {
- noMenu = -1,
- mainMenu,
- vtMenu,
- fontMenu,
- tekMenu
-} MenuIndex;
-
-#define NUM_POPUP_MENUS 4
-
-#if OPT_COLOR_RES
-typedef struct {
- String resource;
- Pixel value;
- int mode;
-} ColorRes;
-#else
-#define ColorRes Pixel
-#endif
-
-typedef struct {
- unsigned which; /* must have NCOLORS bits */
- Pixel colors[NCOLORS];
- char *names[NCOLORS];
-} ScrnColors;
-
-typedef struct {
- Boolean saved;
- int row;
- int col;
- unsigned flags; /* VTxxx saves graphics rendition */
- char curgl;
- char curgr;
- char gsets[4];
-#if OPT_ISO_COLORS
- int cur_foreground; /* current foreground color */
- int cur_background; /* current background color */
- int sgr_foreground; /* current SGR foreground color */
- int sgr_background; /* current SGR background color */
- Boolean sgr_extended; /* SGR set with extended codes? */
-#endif
-} SavedCursor;
-
-typedef struct {
- int width; /* if > 0, width of scrollbar, */
- /* and scrollbar is showing */
- Boolean rv_cached; /* see ScrollBarReverseVideo */
- int rv_active; /* ...current reverse-video */
- Pixel bg; /* ...cached background color */
- Pixel fg; /* ...cached foreground color */
- Pixel bdr; /* ...cached border color */
- Pixmap bdpix; /* ...cached border pixmap */
-} SbInfo;
-
-#if OPT_TOOLBAR
-typedef struct {
- Widget menu_bar; /* toolbar, if initialized */
- Dimension menu_height; /* ...and its height */
- Dimension menu_border; /* ...and its border */
-} TbInfo;
-#define VT100_TB_INFO(name) screen.fullVwin.tb_info.name
-#endif
-
-struct _vtwin {
- Window window; /* X window id */
- int width; /* width of columns */
- int height; /* height of rows */
- Dimension fullwidth; /* full width of window */
- Dimension fullheight; /* full height of window */
- int f_width; /* width of fonts in pixels */
- int f_height; /* height of fonts in pixels */
- int f_ascent; /* ascent of font in pixels */
- int f_descent; /* descent of font in pixels */
- SbInfo sb_info;
- GC normalGC; /* normal painting */
- GC reverseGC; /* reverse painting */
- GC normalboldGC; /* normal painting, bold font */
- GC reverseboldGC; /* reverse painting, bold font */
-#if OPT_TOOLBAR
- Boolean active; /* true if toolbars are used */
- TbInfo tb_info; /* toolbar information */
-#endif
-};
-
-struct _tekwin {
- Window window; /* X window id */
- int width; /* width of columns */
- int height; /* height of rows */
- Dimension fullwidth; /* full width of window */
- Dimension fullheight; /* full height of window */
- double tekscale; /* scale factor Tek -> vs100 */
-};
-
-typedef struct {
-/* These parameters apply to both windows */
- Display *display; /* X display for screen */
- int respond; /* socket for responses
- (position report, etc.) */
-#if OPT_TCAP_QUERY
- int tc_query;
-#endif
- pid_t pid; /* pid of process on far side */
- uid_t uid; /* user id of actual person */
- gid_t gid; /* group id of actual person */
- GC cursorGC; /* normal cursor painting */
- GC fillCursorGC; /* special cursor painting */
- GC reversecursorGC;/* reverse cursor painting */
- GC cursoroutlineGC;/* for painting lines around */
- ColorRes Tcolors[NCOLORS]; /* terminal colors */
-#if OPT_ISO_COLORS
- ColorRes Acolors[MAXCOLORS]; /* ANSI color emulation */
- int veryBoldColors; /* modifier for boldColors */
- Boolean boldColors; /* can we make bold colors? */
- Boolean colorMode; /* are we using color mode? */
- Boolean colorULMode; /* use color for underline? */
- Boolean italicULMode; /* italic font for underline? */
- Boolean colorBDMode; /* use color for bold? */
- Boolean colorBLMode; /* use color for blink? */
- Boolean colorRVMode; /* use color for reverse? */
- Boolean colorAttrMode; /* prefer colorUL/BD to SGR */
-#endif
-#if OPT_DEC_CHRSET
- Boolean font_doublesize;/* enable font-scaling */
- int cache_doublesize;/* limit of our cache */
- Char cur_chrset; /* character-set index & code */
- int fonts_used; /* count items in double_fonts */
- XTermFonts double_fonts[NUM_CHRSET];
-#endif
-#if OPT_DEC_RECTOPS
- int cur_decsace; /* parameter for DECSACE */
-#endif
-#if OPT_WIDE_CHARS
- Boolean wide_chars; /* true when 16-bit chars */
- Boolean vt100_graphics; /* true to allow vt100-graphics */
- Boolean utf8_inparse; /* true to enable UTF-8 parser */
- int utf8_mode; /* use UTF-8 decode/encode: 0-2 */
- int latin9_mode; /* poor man's luit, latin9 */
- int unicode_font; /* font uses unicode encoding */
- int utf_count; /* state of utf_char */
- IChar utf_char; /* in-progress character */
- int last_written_col;
- int last_written_row;
-#endif
-#if OPT_BROKEN_OSC
- Boolean brokenLinuxOSC; /* true to ignore Linux palette ctls */
-#endif
-#if OPT_BROKEN_ST
- Boolean brokenStringTerm; /* true to match old OSC parse */
-#endif
-#if OPT_C1_PRINT
- Boolean c1_printable; /* true if we treat C1 as print */
-#endif
- int border; /* inner border */
- int scrollBarBorder; /* scrollBar border */
- Cursor arrow; /* arrow cursor */
- unsigned long event_mask;
- unsigned short send_mouse_pos; /* user wants mouse transition */
- /* and position information */
-#if OPT_PASTE64
- int base64_paste; /* set to send paste in base64 */
- /* _qWriteSelectionData expects these to be initialized to zero.
- * base64_flush() is the last step of the conversion, it clears these
- * variables.
- */
- int base64_accu;
- int base64_count;
- int base64_pad;
-#endif
-#if OPT_READLINE
- unsigned click1_moves;
- unsigned paste_moves;
- unsigned dclick3_deletes;
- unsigned paste_brackets;
- unsigned paste_quotes;
- unsigned paste_literal_nl;
-#endif /* OPT_READLINE */
-#if OPT_DEC_LOCATOR
- Boolean locator_reset; /* turn mouse off after 1 report? */
- Boolean locator_pixels; /* report in pixels? */
- /* if false, report in cells */
- unsigned short locator_events; /* what events to report */
- Boolean loc_filter; /* is filter rectangle active? */
- int loc_filter_top; /* filter rectangle for DEC Locator */
- int loc_filter_left;
- int loc_filter_bottom;
- int loc_filter_right;
-#endif /* OPT_DEC_LOCATOR */
- int mouse_button; /* current button pressed */
- int mouse_row; /* ...and its row */
- int mouse_col; /* ...and its column */
- int select; /* xterm selected */
- Boolean bellOnReset; /* bellOnReset */
- Boolean visualbell; /* visual bell mode */
- Boolean poponbell; /* pop on bell mode */
- Boolean allowSendEvents;/* SendEvent mode */
- Boolean allowWindowOps; /* WindowOps mode */
- Boolean allowSendEvent0;/* initial SendEvent mode */
- Boolean allowWindowOp0; /* initial WindowOps mode */
- Boolean awaitInput; /* select-timeout mode */
- Boolean grabbedKbd; /* keyboard is grabbed */
-#ifdef ALLOWLOGGING
- int logging; /* logging mode */
- int logfd; /* file descriptor of log */
- char *logfile; /* log file name */
- Char *logstart; /* current start of log buffer */
-#endif
- int inhibit; /* flags for inhibiting changes */
-
-/* VT window parameters */
- Boolean Vshow; /* VT window showing */
- struct _vtwin fullVwin;
-#ifndef NO_ACTIVE_ICON
- struct _vtwin iconVwin;
- struct _vtwin * whichVwin;
-#endif /* NO_ACTIVE_ICON */
-
- Cursor pointer_cursor; /* pointer cursor in window */
-
- String answer_back; /* response to ENQ */
- String printer_command; /* pipe/shell command string */
- Boolean printer_autoclose; /* close printer when offline */
- Boolean printer_extent; /* print complete page */
- Boolean printer_formfeed; /* print formfeed per function */
- int printer_controlmode; /* 0=off, 1=auto, 2=controller */
- int print_attributes; /* 0=off, 1=normal, 2=color */
-
- Boolean fnt_prop; /* true if proportional fonts */
- Boolean fnt_boxes; /* true if font has box-chars */
-#if OPT_BOX_CHARS
- Boolean force_box_chars;/* true if we assume that */
- Boolean force_all_chars;/* true to outline missing chars*/
-#endif
- Dimension fnt_wide;
- Dimension fnt_high;
- XFontStruct *fnt_norm; /* normal font of terminal */
- XFontStruct *fnt_bold; /* bold font of terminal */
- Boolean free_bold_box; /* same_font_size's austerity */
-#if OPT_WIDE_CHARS
- XFontStruct *fnt_dwd; /* wide font of terminal */
- XFontStruct *fnt_dwdb; /* wide bold font of terminal */
-#endif
-#ifndef NO_ACTIVE_ICON
- XFontStruct *fnt_icon; /* icon font */
-#endif /* NO_ACTIVE_ICON */
- int enbolden; /* overstrike for bold font */
- XPoint *box; /* draw unselected cursor */
-
- int cursor_state; /* ON, OFF, or BLINKED_OFF */
- int cursor_busy; /* do not redraw... */
-#if OPT_BLINK_CURS
- Boolean cursor_blink; /* cursor blink enable */
- Boolean cursor_blink_res; /* initial cursor blink value */
- Boolean cursor_blink_esc; /* cursor blink escape-state */
-#endif
-#if OPT_BLINK_TEXT
- Boolean blink_as_bold; /* text blink disable */
-#endif
-#if OPT_BLINK_CURS || OPT_BLINK_TEXT
- int blink_state; /* ON, OFF, or BLINKED_OFF */
- int blink_on; /* cursor on time (msecs) */
- int blink_off; /* cursor off time (msecs) */
- XtIntervalId blink_timer; /* timer-id for cursor-proc */
-#endif
- int cursor_GC; /* see ShowCursor() */
- int cursor_set; /* requested state */
- int cursor_col; /* previous cursor column */
- int cursor_row; /* previous cursor row */
- Boolean cursor_moved; /* scrolling makes cursor move */
- int cur_col; /* current cursor column */
- int cur_row; /* current cursor row */
- int max_col; /* rightmost column */
- int max_row; /* bottom row */
- int top_marg; /* top line of scrolling region */
- int bot_marg; /* bottom line of " " */
- Widget scrollWidget; /* pointer to scrollbar struct */
- int topline; /* line number of top, <= 0 */
- int savedlines; /* number of lines that've been saved */
- int savelines; /* number of lines off top to save */
- int scrolllines; /* number of lines to button scroll */
- Boolean scrollttyoutput; /* scroll to bottom on tty output */
- Boolean scrollkey; /* scroll to bottom on key */
-
- ScrnBuf visbuf; /* ptr to visible screen buf (main) */
- ScrnBuf allbuf; /* screen buffer (may include
- lines scrolled off top) */
- Char *sbuf_address; /* main screen memory address */
- ScrnBuf altbuf; /* alternate screen buffer */
- Char *abuf_address; /* alternate screen memory address */
- Char **save_ptr; /* workspace for save-pointers */
- size_t save_len; /* ...and its length */
- Boolean alternate; /* true if using alternate buf */
- unsigned short do_wrap; /* true if cursor in last column
- and character just output */
- int incopy; /* 0 idle; 1 XCopyArea issued;
- -1 first GraphicsExpose seen,
- but last not seen */
- int copy_src_x; /* params from last XCopyArea ... */
- int copy_src_y;
- unsigned int copy_width;
- unsigned int copy_height;
- int copy_dest_x;
- int copy_dest_y;
- Boolean c132; /* allow change to 132 columns */
- Boolean curses; /* kludge line wrap for more */
- Boolean hp_ll_bc; /* kludge HP-style ll for xdb */
- Boolean marginbell; /* true if margin bell on */
- int nmarginbell; /* columns from right margin */
- int bellarmed; /* cursor below bell margin */
- Boolean multiscroll; /* true if multi-scroll */
- int scrolls; /* outstanding scroll count,
- used only with multiscroll */
- SavedCursor sc[2]; /* data for restore cursor */
- unsigned char save_modes[DP_LAST]; /* save dec/xterm private modes */
-
- /* Improved VT100 emulation stuff. */
- String keyboard_dialect; /* default keyboard dialect */
- char gsets[4]; /* G0 through G3. */
- Char curgl; /* Current GL setting. */
- Char curgr; /* Current GR setting. */
- Char curss; /* Current single shift. */
- String term_id; /* resource for terminal_id */
- int terminal_id; /* 100=vt100, 220=vt220, etc. */
- int vtXX_level; /* 0=vt52, 1,2,3 = vt100 ... vt320 */
- int ansi_level; /* levels 1,2,3 */
- int scroll_amt; /* amount to scroll */
- int refresh_amt; /* amount to refresh */
- int protected_mode; /* 0=off, 1=DEC, 2=ISO */
- Boolean old_fkeys; /* true for compatible fkeys */
- Boolean delete_is_del; /* true for compatible Delete key */
- Boolean jumpscroll; /* whether we should jumpscroll */
- Boolean always_highlight; /* whether to highlight cursor */
- Boolean underline; /* whether to underline text */
- Boolean bold_mode; /* whether to use bold font */
-
-#if OPT_MAXIMIZE
- Boolean restore_data;
- int restore_x;
- int restore_y;
- unsigned restore_width;
- unsigned restore_height;
-#endif
-
-#if OPT_VT52_MODE
- int vt52_save_level; /* save-area for DECANM */
- char vt52_save_curgl;
- char vt52_save_curgr;
- char vt52_save_curss;
- char vt52_save_gsets[4];
-#endif
- /* Testing */
-#if OPT_XMC_GLITCH
- unsigned xmc_glitch; /* # of spaces to pad on SGR's */
- int xmc_attributes; /* attrs that make a glitch */
- Boolean xmc_inline; /* SGR's propagate only to eol */
- Boolean move_sgr_ok; /* SGR is reset on move */
-#endif
-
-#if OPT_TEK4014
-/* Tektronix window parameters */
- GC TnormalGC; /* normal painting */
- GC TcursorGC; /* normal cursor painting */
-
- Boolean Tshow; /* Tek window showing */
- Boolean waitrefresh; /* postpone refresh */
- struct _tekwin fullTwin;
-#ifndef NO_ACTIVE_ICON
- struct _tekwin iconTwin;
- struct _tekwin *whichTwin;
-#endif /* NO_ACTIVE_ICON */
-
- GC linepat[TEKNUMLINES]; /* line patterns */
- Boolean TekEmu; /* true if Tektronix emulation */
- int cur_X; /* current x */
- int cur_Y; /* current y */
- Tmodes cur; /* current tek modes */
- Tmodes page; /* starting tek modes on page */
- int margin; /* 0 -> margin 1, 1 -> margin 2 */
- int pen; /* current Tektronix pen 0=up, 1=dn */
- char *TekGIN; /* nonzero if Tektronix GIN mode*/
- int gin_terminator; /* Tek strap option */
-#endif /* OPT_TEK4014 */
-
- int multiClickTime; /* time between multiclick selects */
- int visualBellDelay; /* msecs to delay for visibleBell */
- int bellSuppressTime; /* msecs after Bell before another allowed */
- Boolean bellInProgress; /* still ringing/flashing prev bell? */
- char *charClass; /* for overriding word selection */
- Boolean cutNewline; /* whether or not line cut has \n */
- Boolean cutToBeginningOfLine; /* line cuts to BOL? */
- Boolean highlight_selection; /* controls appearance of selection */
- Boolean trim_selection; /* controls trimming of selection */
- Boolean i18nSelections;
- Boolean brokenSelections;
- Char *selection_data; /* the current selection */
- int selection_size; /* size of allocated buffer */
- int selection_length; /* number of significant bytes */
- Time selection_time; /* latest event timestamp */
- int startHRow, startHCol, /* highlighted text */
- endHRow, endHCol,
- startHCoord, endHCoord;
- Atom* selection_atoms; /* which selections we own */
- Cardinal sel_atoms_size; /* how many atoms allocated */
- Cardinal selection_count; /* how many atoms in use */
- Boolean input_eight_bits;/* use 8th bit instead of ESC prefix */
- Boolean output_eight_bits; /* honor all bits or strip */
- Boolean control_eight_bits; /* send CSI as 8-bits */
- Boolean backarrow_key; /* backspace/delete */
- Boolean meta_sends_esc; /* Meta-key sends ESC prefix */
- Pixmap menu_item_bitmap; /* mask for checking items */
- String menu_font_names[NMENUFONTS][fMAX];
-#define MenuFontName(n) menu_font_names[n][fNorm]
- long menu_font_sizes[NMENUFONTS];
- int menu_font_number;
-#if OPT_RENDERFONT
- XftFont * renderFontNorm[NMENUFONTS];
- XftFont * renderFontBold[NMENUFONTS];
- XftFont * renderFontItal[NMENUFONTS];
- XftFont * renderWideNorm[NMENUFONTS];
- XftFont * renderWideBold[NMENUFONTS];
- XftFont * renderWideItal[NMENUFONTS];
- XftDraw * renderDraw;
-#endif
-#if OPT_INPUT_METHOD
- XIM xim;
- XFontSet fs; /* fontset for XIM preedit */
- int fs_ascent; /* ascent of fs */
-#endif
- XIC xic; /* this is used even without XIM */
-#if OPT_DABBREV
- int dabbrev_working; /* nonzero during dabbrev process */
- unsigned char dabbrev_erase_char; /* used for deleting inserted completion */
-#endif
-} TScreen;
-
-typedef struct _TekPart {
- XFontStruct * Tfont[TEKNUMFONTS];
- int tobaseline[TEKNUMFONTS]; /* top-baseline, each font */
- char * initial_font; /* large, 2, 3, small */
- char * gin_terminator_str; /* ginTerminator resource */
-#if OPT_TOOLBAR
- TbInfo tb_info; /* toolbar information */
-#endif
-} TekPart;
-
-#if OPT_READLINE
-#define SCREEN_FLAG(screenp,f) (1&(screenp)->f)
-#define SCREEN_FLAG_set(screenp,f) ((screenp)->f |= 1)
-#define SCREEN_FLAG_unset(screenp,f) ((screenp)->f &= ~1L)
-#define SCREEN_FLAG_save(screenp,f) \
- ((screenp)->f = (((screenp)->f)<<1) | SCREEN_FLAG(screenp,f))
-#define SCREEN_FLAG_restore(screenp,f) ((screenp)->f = (((screenp)->f)>>1))
-#else
-#define SCREEN_FLAG(screenp,f) (0)
-#endif
-
-/* meaning of bits in screen.select flag */
-#define INWINDOW 01 /* the mouse is in one of the windows */
-#define FOCUS 02 /* one of the windows is the focus window */
-
-#define MULTICLICKTIME 250 /* milliseconds */
-
-typedef enum {
- keyboardIsLegacy, /* bogus vt220 codes for F1-F4, etc. */
- keyboardIsDefault,
- keyboardIsHP,
- keyboardIsSCO,
- keyboardIsSun,
- keyboardIsVT220
-} xtermKeyboardType;
-
-typedef enum { /* legal values for screen.utf8_mode */
- uFalse = 0,
- uTrue = 1,
- uAlways = 2,
- uDefault = 3
-} utf8ModeTypes;
-
-#if OPT_HP_FUNC_KEYS
-#define NAME_HP_KT " hp"
-#else
-#define NAME_HP_KT /*nothing*/
-#endif
-
-#if OPT_SCO_FUNC_KEYS
-#define NAME_SCO_KT " sco"
-#else
-#define NAME_SCO_KT /*nothing*/
-#endif
-
-#define NAME_SUN_KT " sun"
-
-#if OPT_SUNPC_KBD
-#define NAME_VT220_KT " vt220"
-#else
-#define NAME_VT220_KT /*nothing*/
-#endif
-
-#define KEYBOARD_TYPES NAME_HP_KT NAME_SCO_KT NAME_SUN_KT NAME_VT220_KT
-
-#if OPT_TRACE
-extern const char * visibleKeyboardType(xtermKeyboardType);
-#endif
-
-typedef struct
-{
- xtermKeyboardType type;
- unsigned flags;
-#if OPT_INITIAL_ERASE
- int reset_DECBKM; /* reset should set DECBKM */
-#endif
- int modify_cursor_keys; /* how to handle modifiers */
-} TKeyboard;
-
-typedef struct {
- char *f_n; /* the normal font */
- char *f_b; /* the bold font */
-#if OPT_WIDE_CHARS
- char *f_w; /* the normal wide font */
- char *f_wb; /* the bold wide font */
-#endif
-} VTFontNames;
-
-typedef struct _Misc {
- VTFontNames default_font;
- char *geo_metry;
- char *T_geometry;
-#if OPT_WIDE_CHARS
- Boolean cjk_width; /* true for built-in CJK wcwidth() */
- Boolean mk_width; /* true for simpler built-in wcwidth() */
-#endif
-#if OPT_LUIT_PROG
- Boolean callfilter; /* true to invoke luit */
- Boolean use_encoding; /* true to use -encoding option for luit */
- char *locale_str; /* "locale" resource */
- char *localefilter; /* path for luit */
-#endif
-#if OPT_INPUT_METHOD
- char *f_x; /* font for XIM */
-#endif
- int limit_resize;
-#ifdef ALLOWLOGGING
- Boolean log_on;
-#endif
- Boolean login_shell;
- Boolean re_verse;
- Boolean re_verse0; /* initial value of "-rv" */
- XtGravity resizeGravity;
- Boolean reverseWrap;
- Boolean autoWrap;
- Boolean logInhibit;
- Boolean signalInhibit;
-#if OPT_TEK4014
- Boolean tekInhibit;
- Boolean tekSmall; /* start tek window in small size */
-#endif
- Boolean scrollbar;
-#ifdef SCROLLBAR_RIGHT
- Boolean useRight;
-#endif
- Boolean titeInhibit;
- Boolean tiXtraScroll;
- Boolean appcursorDefault;
- Boolean appkeypadDefault;
-#if OPT_INPUT_METHOD
- char* input_method;
- char* preedit_type;
- Boolean open_im;
- Boolean cannot_im; /* true if we cannot use input-method */
-#endif
- Boolean dynamicColors;
- Boolean shared_ic;
-#ifndef NO_ACTIVE_ICON
- Boolean active_icon; /* use application icon window */
- unsigned icon_border_width;
- Pixel icon_border_pixel;
-#endif /* NO_ACTIVE_ICON */
-#if OPT_DEC_SOFTFONT
- Boolean font_loadable;
-#endif
-#if OPT_SHIFT_FONTS
- Boolean shift_fonts; /* true if we interpret fontsize-shifting */
-#endif
-#if OPT_SUNPC_KBD
- int ctrl_fkeys; /* amount to add to XK_F1 for ctrl modifier */
-#endif
-#if OPT_NUM_LOCK
- Boolean real_NumLock; /* true if we treat NumLock key specially */
- Boolean alwaysUseMods; /* true if we always want f-key modifiers */
- unsigned long num_lock; /* modifier for Num_Lock */
- unsigned long alt_left; /* modifier for Alt_L */
- unsigned long alt_right; /* modifier for Alt_R */
- Boolean meta_trans; /* true if Meta is used in translations */
- unsigned long meta_left; /* modifier for Meta_L */
- unsigned long meta_right; /* modifier for Meta_R */
-#endif
-#if OPT_RENDERFONT
- char *face_name;
- char *face_wide_name;
- float face_size;
- Boolean render_font;
-#endif
-} Misc;
-
-typedef struct {int foo;} XtermClassPart, TekClassPart;
-
-typedef struct _XtermClassRec {
- CoreClassPart core_class;
- XtermClassPart xterm_class;
-} XtermClassRec;
-
-extern WidgetClass xtermWidgetClass;
-
-#define IsXtermWidget(w) (XtClass(w) == xtermWidgetClass)
-
-#if OPT_TEK4014
-typedef struct _TekClassRec {
- CoreClassPart core_class;
- TekClassPart tek_class;
-} TekClassRec;
-#endif
-
-/* define masks for keyboard.flags */
-#define MODE_KAM 0x01 /* keyboard action mode */
-#define MODE_DECKPAM 0x02 /* keypad application mode */
-#define MODE_DECCKM 0x04 /* cursor keys */
-#define MODE_SRM 0x08 /* send-receive mode */
-#define MODE_DECBKM 0x10 /* backarrow */
-
-
-#define N_MARGINBELL 10
-
-#define TAB_BITS_SHIFT 5 /* 2**5 == 32 */
-#define TAB_BITS_WIDTH (1 << TAB_BITS_SHIFT)
-#define TAB_ARRAY_SIZE 10 /* number of ints to provide MAX_TABS bits */
-#define MAX_TABS (TAB_BITS_WIDTH * TAB_ARRAY_SIZE)
-
-typedef unsigned Tabs [TAB_ARRAY_SIZE];
-
-typedef struct _XtermWidgetRec {
- CorePart core;
- TKeyboard keyboard; /* terminal keyboard */
- TScreen screen; /* terminal screen */
- unsigned flags; /* mode flags */
- int cur_foreground; /* current foreground color */
- int cur_background; /* current background color */
- Pixel dft_foreground; /* default foreground color */
- Pixel dft_background; /* default background color */
-#if OPT_ISO_COLORS
- int sgr_foreground; /* current SGR foreground color */
- int sgr_background; /* current SGR background color */
- Boolean sgr_extended; /* SGR set with extended codes? */
-#endif
-#if OPT_ISO_COLORS || OPT_DEC_CHRSET || OPT_WIDE_CHARS
- int num_ptrs; /* number of pointers per row in 'ScrnBuf' */
-#endif
- unsigned initflags; /* initial mode flags */
- Tabs tabs; /* tabstops of the terminal */
- Misc misc; /* miscellaneous parameters */
-} XtermWidgetRec, *XtermWidget;
-
-#if OPT_TEK4014
-typedef struct _TekWidgetRec {
- CorePart core;
- TekPart tek;
-} TekWidgetRec, *TekWidget;
-#endif /* OPT_TEK4014 */
-
-/*
- * terminal flags
- * There are actually two namespaces mixed together here.
- * One is the set of flags that can go in screen->visbuf attributes
- * and which must fit in a char (see OFF_ATTRS).
- * The other is the global setting stored in
- * term->flags and screen->save_modes. This need only fit in an unsigned.
- */
-
-/* global flags and character flags (visible character attributes) */
-#define INVERSE 0x01 /* invert the characters to be output */
-#define UNDERLINE 0x02 /* true if underlining */
-#define BOLD 0x04
-#define BLINK 0x08
-/* global flags (also character attributes) */
-#define BG_COLOR 0x10 /* true if background set */
-#define FG_COLOR 0x20 /* true if foreground set */
-
-/* character flags (internal attributes) */
-#define PROTECTED 0x40 /* a character is drawn that cannot be erased */
-#define CHARDRAWN 0x80 /* a character has been drawn here on the
- screen. Used to distinguish blanks from
- empty parts of the screen when selecting */
-
-#if OPT_BLINK_TEXT
-#define BOLDATTR(screen) (BOLD | ((screen)->blink_as_bold ? BLINK : 0))
-#else
-#define BOLDATTR(screen) (BOLD | BLINK)
-#endif
-
-/* The following attributes make sense in the argument of drawXtermText() */
-#define NOBACKGROUND 0x100 /* Used for overstrike */
-#define NOTRANSLATION 0x200 /* No scan for chars missing in font */
-#define NATIVEENCODING 0x400 /* strings are in the font encoding */
-#define DOUBLEWFONT 0x800 /* The actual X-font is double-width */
-#define DOUBLEHFONT 0x1000 /* The actual X-font is double-height */
-#define CHARBYCHAR 0x2000 /* Draw chars one-by-one */
-
-/* The toplevel-call to drawXtermText() should have text-attributes guarded: */
-#define DRAWX_MASK 0xff /* text flags should be bitand'ed */
-
-/* The following attribute makes sense in the argument of xtermSpecialFont etc */
-#define NORESOLUTION 0x800000 /* find the font without resolution */
-
- /* mask: user-visible attributes */
-#define ATTRIBUTES (INVERSE|UNDERLINE|BOLD|BLINK|BG_COLOR|FG_COLOR|INVISIBLE|PROTECTED)
-
- /* mask for video-attributes only */
-#define SGR_MASK (BOLD|BLINK|UNDERLINE|INVERSE)
-
-#define WRAPAROUND 0x400 /* true if auto wraparound mode */
-#define REVERSEWRAP 0x800 /* true if reverse wraparound mode */
-#define REVERSE_VIDEO 0x1000 /* true if screen white on black */
-#define LINEFEED 0x2000 /* true if in auto linefeed mode */
-#define ORIGIN 0x4000 /* true if in origin mode */
-#define INSERT 0x8000 /* true if in insert mode */
-#define SMOOTHSCROLL 0x10000 /* true if in smooth scroll mode */
-#define IN132COLUMNS 0x20000 /* true if in 132 column mode */
-#define INVISIBLE 0x40000 /* true if writing invisible text */
-#define NATIONAL 0x100000 /* true if writing national charset */
-
-/*
- * Per-line flags
- */
-#define LINEWRAPPED 0x01 /* used once per line to indicate that it wraps
- * onto the next line so we can tell the
- * difference between lines that have wrapped
- * around and lines that have ended naturally
- * with a CR at column max_col.
- */
-/*
- * If we've set protected attributes with the DEC-style DECSCA, then we'll have
- * to use DECSED or DECSEL to erase preserving protected text. (The normal ED,
- * EL won't preserve protected-text). If we've used SPA, then normal ED and EL
- * will preserve protected-text. To keep things simple, just remember the last
- * control that was used to begin protected-text, and use that to determine how
- * erases are performed (otherwise we'd need 2 bits per protected character).
- */
-#define OFF_PROTECT 0
-#define DEC_PROTECT 1
-#define ISO_PROTECT 2
-
-#ifdef SCROLLBAR_RIGHT
-#define OriginX(screen) (((term->misc.useRight)?0:ScrollbarWidth(screen)) + screen->border)
-#else
-#define OriginX(screen) (ScrollbarWidth(screen) + screen->border)
-#endif
-
-#define OriginY(screen) (screen->border)
-
-#define CursorMoved(screen) \
- ((screen)->cursor_moved || \
- ((screen)->cursor_col != (screen)->cur_col || \
- (screen)->cursor_row != (screen)->cur_row))
-
-#define CursorX(screen,col) ((col) * FontWidth(screen) + OriginX(screen))
-#define CursorY(screen,row) ((((row) - screen->topline) * FontHeight(screen)) \
- + screen->border)
-
-/*
- * These definitions depend on whether xterm supports active-icon.
- */
-#ifndef NO_ACTIVE_ICON
-#define IsIconWin(screen,win) ((win) == &(screen)->iconVwin)
-#define IsIcon(screen) (WhichVWin(screen) == &(screen)->iconVwin)
-#define WhichVWin(screen) ((screen)->whichVwin)
-#define WhichTWin(screen) ((screen)->whichTwin)
-
-#define WhichVFont(screen,name) (IsIcon(screen) ? (screen)->fnt_icon \
- : (screen)->name)
-#define FontAscent(screen) (IsIcon(screen) ? (screen)->fnt_icon->ascent \
- : WhichVWin(screen)->f_ascent)
-#define FontDescent(screen) (IsIcon(screen) ? (screen)->fnt_icon->descent \
- : WhichVWin(screen)->f_descent)
-#else /* NO_ACTIVE_ICON */
-
-#define IsIconWin(screen,win) (False)
-#define IsIcon(screen) (False)
-#define WhichVWin(screen) (&((screen)->fullVwin))
-#define WhichTWin(screen) (&((screen)->fullTwin))
-
-#define WhichVFont(screen,name) ((screen)->name)
-#define FontAscent(screen) WhichVWin(screen)->f_ascent
-#define FontDescent(screen) WhichVWin(screen)->f_descent
-
-#endif /* NO_ACTIVE_ICON */
-
-/*
- * Macro to check if we are iconified; do not use render for that case.
- */
-#define UsingRenderFont(xw) ((xw)->misc.render_font && !IsIcon(&((xw)->screen)))
-
-/*
- * These definitions do not depend on whether xterm supports active-icon.
- */
-#define VWindow(screen) WhichVWin(screen)->window
-#define VShellWindow XtWindow(SHELL_OF(term))
-#define TWindow(screen) WhichTWin(screen)->window
-#define TShellWindow XtWindow(SHELL_OF(tekWidget))
-
-#define Width(screen) WhichVWin(screen)->width
-#define Height(screen) WhichVWin(screen)->height
-#define FullWidth(screen) WhichVWin(screen)->fullwidth
-#define FullHeight(screen) WhichVWin(screen)->fullheight
-#define FontWidth(screen) WhichVWin(screen)->f_width
-#define FontHeight(screen) WhichVWin(screen)->f_height
-
-#define NormalFont(screen) WhichVFont(screen, fnt_norm)
-#define BoldFont(screen) WhichVFont(screen, fnt_bold)
-
-#define ScrollbarWidth(screen) WhichVWin(screen)->sb_info.width
-#define NormalGC(screen) WhichVWin(screen)->normalGC
-#define ReverseGC(screen) WhichVWin(screen)->reverseGC
-#define NormalBoldGC(screen) WhichVWin(screen)->normalboldGC
-#define ReverseBoldGC(screen) WhichVWin(screen)->reverseboldGC
-
-#define TWidth(screen) WhichTWin(screen)->width
-#define THeight(screen) WhichTWin(screen)->height
-#define TFullWidth(screen) WhichTWin(screen)->fullwidth
-#define TFullHeight(screen) WhichTWin(screen)->fullheight
-#define TekScale(screen) WhichTWin(screen)->tekscale
-
-#define BorderWidth(w) ((w)->core.border_width)
-#define BorderPixel(w) ((w)->core.border_pixel)
-
-#if OPT_TOOLBAR
-#define ToolbarHeight(w) ((resource.toolBar) \
- ? (term->VT100_TB_INFO(menu_height) \
- + term->VT100_TB_INFO(menu_border) * 2) \
- : 0)
-#else
-#define ToolbarHeight(w) 0
-#endif
-
-#if OPT_TEK4014
-#define TEK_LINK_BLOCK_SIZE 1024
-
-typedef struct Tek_Link
-{
- struct Tek_Link *next; /* pointer to next TekLink in list
- NULL <=> this is last TekLink */
- unsigned short fontsize;/* character size, 0-3 */
- unsigned short count; /* number of chars in data */
- char *ptr; /* current pointer into data */
- char data [TEK_LINK_BLOCK_SIZE];
-} TekLink;
-#endif /* OPT_TEK4014 */
-
-/* flags for cursors */
-#define OFF 0
-#define ON 1
-#define BLINKED_OFF 2
-#define CLEAR 0
-#define TOGGLE 1
-
-/* flags for inhibit */
-#ifdef ALLOWLOGGING
-#define I_LOG 0x01
-#endif
-#define I_SIGNAL 0x02
-#define I_TEK 0x04
-
-/***====================================================================***/
-
-#if OPT_TRACE
-#include <trace.h>
-#undef NDEBUG /* turn on assert's */
-#else
-#ifndef NDEBUG
-#define NDEBUG /* not debugging, don't do assert's */
-#endif
-#endif
-
-#ifndef TRACE
-#define TRACE(p) /*nothing*/
-#endif
-
-#ifndef TRACE_ARGV
-#define TRACE_ARGV(tag,argv) /*nothing*/
-#endif
-
-#ifndef TRACE_CHILD
-#define TRACE_CHILD /*nothing*/
-#endif
-
-#ifndef TRACE_HINTS
-#define TRACE_HINTS(hints) /*nothing*/
-#endif
-
-#ifndef TRACE_OPTS
-#define TRACE_OPTS(opts,ress,lens) /*nothing*/
-#endif
-
-#ifndef TRACE_TRANS
-#define TRACE_TRANS(name,w) /*nothing*/
-#endif
-
-#ifndef TRACE_WM_HINTS
-#define TRACE_WM_HINTS(w) /*nothing*/
-#endif
-
-#ifndef TRACE_XRES
-#define TRACE_XRES() /*nothing*/
-#endif
-
-#ifndef TRACE2
-#define TRACE2(p) /*nothing*/
-#endif
-
-#endif /* included_ptyx_h */
diff --git a/nx-X11/programs/xterm/resize.c b/nx-X11/programs/xterm/resize.c
deleted file mode 100644
index 67cdd6e57..000000000
--- a/nx-X11/programs/xterm/resize.c
+++ /dev/null
@@ -1,600 +0,0 @@
-/* $XTermId: resize.c,v 1.97 2005/11/13 23:10:36 tom Exp $ */
-
-/*
- * $Xorg: resize.c,v 1.3 2000/08/17 19:55:09 cpqbld Exp $
- */
-
-/* $XFree86: xc/programs/xterm/resize.c,v 3.60 2005/11/13 23:10:36 dickey Exp $ */
-
-/*
- * Copyright 2003-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/* resize.c */
-
-#include <xterm.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <xstrings.h>
-#include <xterm_io.h>
-
-#ifdef APOLLO_SR9
-#define CANT_OPEN_DEV_TTY
-#endif
-
-#ifndef USE_TERMINFO /* avoid conflict with configure script */
-#if defined(__QNX__) || defined(__SCO__) || defined(linux) || defined(__OpenBSD__) || defined(__UNIXWARE__)
-#define USE_TERMINFO
-#endif
-#endif
-
-#if defined(__QNX__)
-#include <unix.h>
-#endif
-
-/*
- * Some OS's may want to use both, like SCO for example. We catch here anyone
- * who hasn't decided what they want.
- */
-#if !defined(USE_TERMCAP) && !defined(USE_TERMINFO)
-#define USE_TERMINFO
-#endif
-
-#include <signal.h>
-#include <pwd.h>
-
-#ifdef X_NOT_POSIX
-#if !defined(SYSV) && !defined(i386)
-extern struct passwd *getpwuid(); /* does ANYBODY need this? */
-#endif /* SYSV && i386 */
-#endif /* X_NOT_POSIX */
-
-#ifndef bzero
-#define bzero(s, n) memset(s, 0, n)
-#endif
-
-#ifdef __MVS__
-#define ESCAPE(string) "\047" string
-#else
-#define ESCAPE(string) "\033" string
-#endif
-
-#define EMULATIONS 2
-#define SUN 1
-#define VT100 0
-
-#define TIMEOUT 10
-
-#define SHELL_UNKNOWN 0
-#define SHELL_C 1
-#define SHELL_BOURNE 2
-/* *INDENT-OFF* */
-static struct {
- char *name;
- int type;
-} shell_list[] = {
- { "csh", SHELL_C }, /* vanilla cshell */
- { "tcsh", SHELL_C },
- { "jcsh", SHELL_C },
- { "sh", SHELL_BOURNE }, /* vanilla Bourne shell */
- { "ksh", SHELL_BOURNE }, /* Korn shell (from AT&T toolchest) */
- { "ksh-i", SHELL_BOURNE }, /* other name for latest Korn shell */
- { "bash", SHELL_BOURNE }, /* GNU Bourne again shell */
- { "jsh", SHELL_BOURNE },
- { NULL, SHELL_BOURNE } /* default (same as xterm's) */
-};
-/* *INDENT-ON* */
-
-static char *emuname[EMULATIONS] =
-{
- "VT100",
- "Sun",
-};
-static char *myname;
-static int shell_type = SHELL_UNKNOWN;
-static char *getsize[EMULATIONS] =
-{
- ESCAPE("7") ESCAPE("[r") ESCAPE("[999;999H") ESCAPE("[6n"),
- ESCAPE("[18t"),
-};
-#if defined(USE_STRUCT_TTYSIZE)
-#elif defined(USE_STRUCT_WINSIZE)
-static char *getwsize[EMULATIONS] =
-{ /* size in pixels */
- 0,
- ESCAPE("[14t"),
-};
-#endif /* USE_STRUCT_{TTYSIZE|WINSIZE} */
-static char *restore[EMULATIONS] =
-{
- ESCAPE("8"),
- 0,
-};
-static char *setname = "";
-static char *setsize[EMULATIONS] =
-{
- 0,
- ESCAPE("[8;%s;%st"),
-};
-
-#ifdef USE_ANY_SYSV_TERMIO
-static struct termio tioorig;
-#elif defined(USE_TERMIOS)
-static struct termios tioorig;
-#else
-static struct sgttyb sgorig;
-#endif /* USE_ANY_SYSV_TERMIO/USE_TERMIOS */
-
-static char *size[EMULATIONS] =
-{
- ESCAPE("[%d;%dR"),
- ESCAPE("[8;%d;%dt"),
-};
-static char sunname[] = "sunsize";
-static int tty;
-static FILE *ttyfp;
-
-#if defined(USE_STRUCT_TTYSIZE)
-#elif defined(USE_STRUCT_WINSIZE)
-static char *wsize[EMULATIONS] =
-{
- 0,
- ESCAPE("[4;%hd;%hdt"),
-};
-#endif /* USE_STRUCT_{TTYSIZE|WINSIZE} */
-
-static SIGNAL_T onintr(int sig);
-static SIGNAL_T resize_timeout(int sig);
-static int checkdigits(char *str);
-static void Usage(void);
-static void readstring(FILE *fp, char *buf, char *str);
-
-#undef US /* may conflict with curses.h */
-
-#ifdef USE_TERMCAP
-#ifdef HAVE_TERMCAP_H
-#include <termcap.h>
-#if defined(NCURSES_VERSION)
- /* The tgetent emulation function in SVr4-style curses implementations
- * (e.g., ncurses) ignores the buffer, so TERMCAP can't be set from it.
- * Instead, just use terminfo.
- */
-#undef USE_TERMCAP
-#include <curses.h>
-#endif
-#else
-#undef ERR /* workaround for glibc 2.1.3 */
-#include <curses.h>
-#ifdef NCURSES_VERSION
-#ifdef HAVE_NCURSES_TERM_H
-#include <ncurses/term.h>
-#else
-#include <term.h> /* tgetent() */
-#endif /*CYGWIN */
-#endif
-#endif /* HAVE_TERMCAP_H */
-#endif
-
-#define TERMCAP_SIZE 1500 /* 1023 is standard; 'screen' exceeds */
-
-#ifdef USE_TERMCAP
-static void
-print_termcap(const char *termcap)
-{
- int ch;
-
- putchar('\'');
- while ((ch = *termcap++) != '\0') {
- switch (ch & 0xff) {
- case 127: /* undo bug in GNU termcap */
- printf("^?");
- break;
- case '\'': /* must escape anyway (unlikely) */
- /* FALLTHRU */
- case '!': /* must escape for SunOS csh */
- putchar('\\');
- /* FALLTHRU */
- default:
- putchar(ch);
- break;
- }
- }
- putchar('\'');
-}
-#endif /* USE_TERMCAP */
-
-/*
- resets termcap string to reflect current screen size
- */
-int
-main(int argc, char **argv ENVP_ARG)
-{
- register char *ptr, *env;
- register int emu = VT100;
- char *shell;
- struct passwd *pw;
- int i;
- int rows, cols;
-#ifdef USE_ANY_SYSV_TERMIO
- struct termio tio;
-#elif defined(USE_TERMIOS)
- struct termios tio;
-#else
- struct sgttyb sg;
-#endif /* USE_ANY_SYSV_TERMIO/USE_TERMIOS */
-#ifdef USE_TERMCAP
- int ok_tcap = 1;
- char termcap[TERMCAP_SIZE];
- char newtc[TERMCAP_SIZE];
-#endif /* USE_TERMCAP */
- char buf[BUFSIZ];
-#ifdef TTYSIZE_STRUCT
- TTYSIZE_STRUCT ts;
-#endif
- char *name_of_tty;
-#ifdef CANT_OPEN_DEV_TTY
- extern char *ttyname();
-#endif
-
- myname = x_basename(argv[0]);
- if (strcmp(myname, sunname) == 0)
- emu = SUN;
- for (argv++, argc--; argc > 0 && **argv == '-'; argv++, argc--) {
- switch ((*argv)[1]) {
- case 's': /* Sun emulation */
- if (emu == SUN)
- Usage(); /* Never returns */
- emu = SUN;
- break;
- case 'u': /* Bourne (Unix) shell */
- shell_type = SHELL_BOURNE;
- break;
- case 'c': /* C shell */
- shell_type = SHELL_C;
- break;
- default:
- Usage(); /* Never returns */
- }
- }
-
- if (SHELL_UNKNOWN == shell_type) {
- /* Find out what kind of shell this user is running.
- * This is the same algorithm that xterm uses.
- */
- if (((ptr = getenv("SHELL")) == NULL || *ptr == 0) &&
- (((pw = getpwuid(getuid())) == NULL) ||
- *(ptr = pw->pw_shell) == 0))
- /* this is the same default that xterm uses */
- ptr = "/bin/sh";
-
- shell = x_basename(ptr);
-
- /* now that we know, what kind is it? */
- for (i = 0; shell_list[i].name; i++)
- if (!strcmp(shell_list[i].name, shell))
- break;
- shell_type = shell_list[i].type;
- }
-
- if (argc == 2) {
- if (!setsize[emu]) {
- fprintf(stderr,
- "%s: Can't set window size under %s emulation\n",
- myname, emuname[emu]);
- exit(1);
- }
- if (!checkdigits(argv[0]) || !checkdigits(argv[1]))
- Usage(); /* Never returns */
- } else if (argc != 0)
- Usage(); /* Never returns */
-
-#ifdef CANT_OPEN_DEV_TTY
- if ((name_of_tty = ttyname(fileno(stderr))) == NULL)
-#endif
- name_of_tty = "/dev/tty";
-
- if ((ttyfp = fopen(name_of_tty, "r+")) == NULL) {
- fprintf(stderr, "%s: can't open terminal %s\n",
- myname, name_of_tty);
- exit(1);
- }
- tty = fileno(ttyfp);
-#ifdef USE_TERMCAP
- if (!(env = getenv("TERM")) || !*env) {
- env = DFT_TERMTYPE;
- if (SHELL_BOURNE == shell_type)
- setname = "TERM=xterm;\nexport TERM;\n";
- else
- setname = "setenv TERM xterm;\n";
- }
- termcap[0] = 0; /* ...just in case we've accidentally gotten terminfo */
- if (tgetent(termcap, env) <= 0 || termcap[0] == 0)
- ok_tcap = 0;
-#endif /* USE_TERMCAP */
-#ifdef USE_TERMINFO
- if (!(env = getenv("TERM")) || !*env) {
- env = DFT_TERMTYPE;
- if (SHELL_BOURNE == shell_type)
- setname = "TERM=xterm;\nexport TERM;\n";
- else
- setname = "setenv TERM xterm;\n";
- }
-#endif /* USE_TERMINFO */
-
-#ifdef USE_ANY_SYSV_TERMIO
- ioctl(tty, TCGETA, &tioorig);
- tio = tioorig;
- tio.c_iflag &= ~(ICRNL | IUCLC);
- tio.c_lflag &= ~(ICANON | ECHO);
- tio.c_cflag |= CS8;
- tio.c_cc[VMIN] = 6;
- tio.c_cc[VTIME] = 1;
-#elif defined(USE_TERMIOS)
- tcgetattr(tty, &tioorig);
- tio = tioorig;
- tio.c_iflag &= ~ICRNL;
- tio.c_lflag &= ~(ICANON | ECHO);
- tio.c_cflag |= CS8;
- tio.c_cc[VMIN] = 6;
- tio.c_cc[VTIME] = 1;
-#else /* not USE_TERMIOS */
- ioctl(tty, TIOCGETP, &sgorig);
- sg = sgorig;
- sg.sg_flags |= RAW;
- sg.sg_flags &= ~ECHO;
-#endif /* USE_ANY_SYSV_TERMIO/USE_TERMIOS */
- signal(SIGINT, onintr);
- signal(SIGQUIT, onintr);
- signal(SIGTERM, onintr);
-#ifdef USE_ANY_SYSV_TERMIO
- ioctl(tty, TCSETAW, &tio);
-#elif defined(USE_TERMIOS)
- tcsetattr(tty, TCSADRAIN, &tio);
-#else /* not USE_TERMIOS */
- ioctl(tty, TIOCSETP, &sg);
-#endif /* USE_ANY_SYSV_TERMIO/USE_TERMIOS */
-
- if (argc == 2) {
- sprintf(buf, setsize[emu], argv[0], argv[1]);
- write(tty, buf, strlen(buf));
- }
- write(tty, getsize[emu], strlen(getsize[emu]));
- readstring(ttyfp, buf, size[emu]);
- if (sscanf(buf, size[emu], &rows, &cols) != 2) {
- fprintf(stderr, "%s: Can't get rows and columns\r\n", myname);
- onintr(0);
- }
- if (restore[emu])
- write(tty, restore[emu], strlen(restore[emu]));
-#if defined(USE_STRUCT_TTYSIZE)
- /* finally, set the tty's window size */
- if (ioctl(tty, TIOCGSIZE, &ts) != -1) {
- TTYSIZE_ROWS(ts) = rows;
- TTYSIZE_COLS(ts) = cols;
- SET_TTYSIZE(tty, ts);
- }
-#elif defined(USE_STRUCT_WINSIZE)
- /* finally, set the tty's window size */
- if (getwsize[emu]) {
- /* get the window size in pixels */
- write(tty, getwsize[emu], strlen(getwsize[emu]));
- readstring(ttyfp, buf, wsize[emu]);
- if (sscanf(buf, wsize[emu], &ts.ws_xpixel, &ts.ws_ypixel) != 2) {
- fprintf(stderr, "%s: Can't get window size\r\n", myname);
- onintr(0);
- }
- TTYSIZE_ROWS(ts) = rows;
- TTYSIZE_COLS(ts) = cols;
- SET_TTYSIZE(tty, ts);
- } else if (ioctl(tty, TIOCGWINSZ, &ts) != -1) {
- /* we don't have any way of directly finding out
- the current height & width of the window in pixels. We try
- our best by computing the font height and width from the "old"
- window-size values, and multiplying by these ratios... */
- if (TTYSIZE_COLS(ts) != 0)
- ts.ws_xpixel = cols * (ts.ws_xpixel / TTYSIZE_COLS(ts));
- if (TTYSIZE_ROWS(ts) != 0)
- ts.ws_ypixel = rows * (ts.ws_ypixel / TTYSIZE_ROWS(ts));
- TTYSIZE_ROWS(ts) = rows;
- TTYSIZE_COLS(ts) = cols;
- SET_TTYSIZE(tty, ts);
- }
-#endif /* USE_STRUCT_{TTYSIZE|WINSIZE} */
-
-#ifdef USE_ANY_SYSV_TERMIO
- ioctl(tty, TCSETAW, &tioorig);
-#elif defined(USE_TERMIOS)
- tcsetattr(tty, TCSADRAIN, &tioorig);
-#else /* not USE_TERMIOS */
- ioctl(tty, TIOCSETP, &sgorig);
-#endif /* USE_ANY_SYSV_TERMIO/USE_TERMIOS */
- signal(SIGINT, SIG_DFL);
- signal(SIGQUIT, SIG_DFL);
- signal(SIGTERM, SIG_DFL);
-
-#ifdef USE_TERMCAP
- if (ok_tcap) {
- /* update termcap string */
- /* first do columns */
- if ((ptr = x_strindex(termcap, "co#")) == NULL) {
- fprintf(stderr, "%s: No `co#'\n", myname);
- exit(1);
- }
-
- i = ptr - termcap + 3;
- strncpy(newtc, termcap, (unsigned) i);
- sprintf(newtc + i, "%d", cols);
- ptr = strchr(ptr, ':');
- strcat(newtc, ptr);
-
- /* now do lines */
- if ((ptr = x_strindex(newtc, "li#")) == NULL) {
- fprintf(stderr, "%s: No `li#'\n", myname);
- exit(1);
- }
-
- i = ptr - newtc + 3;
- strncpy(termcap, newtc, (unsigned) i);
- sprintf(termcap + i, "%d", rows);
- ptr = strchr(ptr, ':');
- strcat(termcap, ptr);
- }
-#endif /* USE_TERMCAP */
-
- if (SHELL_BOURNE == shell_type) {
-
-#ifdef USE_TERMCAP
- if (ok_tcap) {
- printf("%sTERMCAP=", setname);
- print_termcap(termcap);
- printf(";\nexport TERMCAP;\n");
- }
-#endif /* USE_TERMCAP */
-#ifdef USE_TERMINFO
- printf("%sCOLUMNS=%d;\nLINES=%d;\nexport COLUMNS LINES;\n",
- setname, cols, rows);
-#endif /* USE_TERMINFO */
-
- } else { /* not Bourne shell */
-
-#ifdef USE_TERMCAP
- if (ok_tcap) {
- printf("set noglob;\n%ssetenv TERMCAP ", setname);
- print_termcap(termcap);
- printf(";\nunset noglob;\n");
- }
-#endif /* USE_TERMCAP */
-#ifdef USE_TERMINFO
- printf("set noglob;\n%ssetenv COLUMNS '%d';\nsetenv LINES '%d';\nunset noglob;\n",
- setname, cols, rows);
-#endif /* USE_TERMINFO */
- }
- exit(0);
-}
-
-static int
-checkdigits(register char *str)
-{
- while (*str) {
- if (!isdigit(CharOf(*str)))
- return (0);
- str++;
- }
- return (1);
-}
-
-static void
-readstring(register FILE *fp, register char *buf, char *str)
-{
- register int last, c;
-#if !defined(USG) && !defined(__UNIXOS2__)
- /* What is the advantage of setitimer() over alarm()? */
- struct itimerval it;
-#endif
-
- signal(SIGALRM, resize_timeout);
-#if defined(USG) || defined(__UNIXOS2__)
- alarm(TIMEOUT);
-#else
- bzero((char *) &it, sizeof(struct itimerval));
- it.it_value.tv_sec = TIMEOUT;
- setitimer(ITIMER_REAL, &it, (struct itimerval *) NULL);
-#endif
- if ((c = getc(fp)) == 0233) { /* meta-escape, CSI */
- *buf++ = c = ESCAPE("")[0];
- *buf++ = '[';
- } else {
- *buf++ = c;
- }
- if (c != *str) {
- fprintf(stderr, "%s: unknown character, exiting.\r\n", myname);
- onintr(0);
- }
- last = str[strlen(str) - 1];
- while ((*buf++ = getc(fp)) != last) ;
-#if defined(USG) || defined(__UNIXOS2__)
- alarm(0);
-#else
- bzero((char *) &it, sizeof(struct itimerval));
- setitimer(ITIMER_REAL, &it, (struct itimerval *) NULL);
-#endif
- *buf = 0;
-}
-
-static void
-Usage(void)
-{
- fprintf(stderr, strcmp(myname, sunname) == 0 ?
- "Usage: %s [rows cols]\n" :
- "Usage: %s [-u] [-c] [-s [rows cols]]\n", myname);
- exit(1);
-}
-
-static SIGNAL_T
-resize_timeout(int sig)
-{
- fprintf(stderr, "\n%s: Time out occurred\r\n", myname);
- onintr(sig);
-}
-
-/* ARGSUSED */
-static SIGNAL_T
-onintr(int sig GCC_UNUSED)
-{
-#ifdef USE_ANY_SYSV_TERMIO
- ioctl(tty, TCSETAW, &tioorig);
-#elif defined(USE_TERMIOS)
- tcsetattr(tty, TCSADRAIN, &tioorig);
-#else /* not USE_TERMIOS */
- ioctl(tty, TIOCSETP, &sgorig);
-#endif /* USE_ANY_SYSV_TERMIO/USE_TERMIOS */
- exit(1);
-}
diff --git a/nx-X11/programs/xterm/resize.man b/nx-X11/programs/xterm/resize.man
deleted file mode 100644
index a1bdc0f45..000000000
--- a/nx-X11/programs/xterm/resize.man
+++ /dev/null
@@ -1,84 +0,0 @@
-.\" $Xorg: resize.man,v 1.3 2000/08/17 19:55:09 cpqbld Exp $
-.\"
-.\" updated by Thomas E. Dickey for XFree86, 1998-2002.
-.\"
-.\" $XFree86: xc/programs/xterm/resize.man,v 1.10 2002/08/17 19:52:27 dickey Exp $
-.TH RESIZE 1 __vendorversion__
-.SH NAME
-resize \- set TERMCAP and terminal settings to current xterm window size
-.SH SYNOPSIS
-.B resize
-[ \fB\-u\fP | \fB\-c\fP ] [ \fB\-s\fP [ \fIrow col\fP ] ]
-.SH DESCRIPTION
-.I Resize
-prints a shell command for setting the TERM and TERMCAP environment variables
-to indicate the current size of \fIxterm\fP window from which the command
-is run. For this output to take effect, \fIresize\fP must either be evaluated
-as part of the command line (usually done with a shell alias or function) or
-else redirected to a file which can then be read in. From the C shell (usually
-known as \fI/bin/csh\fP), the following alias could be defined in the
-user's \fI.cshrc\fP:
-.sp
-.nf
- % alias rs 'set noglob; eval \fC`\fPresize\fC`\fP'
-.fi
-.sp
-After resizing the window, the user would type:
-.sp
-.nf
- % rs
-.fi
-.sp
-Users of versions of the Bourne shell (usually known as \fI/bin/sh\fP) that
-don't have command
-functions will need to send the output to a temporary file and the read it back
-in with the ``.'' command:
-.sp
-.nf
- $ resize > /tmp/out
- $ .\0/tmp/out
-.fi
-.SH OPTIONS
-The following options may be used with \fIresize\fP:
-.TP 8
-.B \-u
-This option indicates that Bourne shell commands should be generated even if
-the user's current shell isn't \fI/bin/sh\fP.
-.TP 8
-.B \-c
-This option indicates that C shell commands should be generated even if the
-user's current shell isn't \fI/bin/csh\fP.
-.TP 8
-.B \-s \fR[\fIrows columns\fP]
-This option indicates that Sun console escape sequences will be used
-instead of the VT100-style \fIxterm\fP escape codes.
-If \fIrows\fP and
-\fIcolumns\fP are given, \fIresize\fP will ask the \fIxterm\fP to resize
-itself. However, the window manager may choose to disallow the change.
-.sp
-Note that the Sun console escape sequences are recognized
-by XFree86 \fIxterm\fP and
-by \fIdtterm\fP.
-The \fIresize\fP program may be installed as \fIsunsize\fP,
-which causes makes it assume the \fB\-s\fP option.
-.sp
-The \fIrows\fP and
-\fIcolumns\fP arguments must appear last; though they are normally
-associated with the \fB\-s\fP option, they are parsed separately.
-.SH FILES
-.TP 15
-/etc/termcap
-for the base termcap entry to modify.
-.TP 15
-~/.cshrc
-user's alias for the command.
-.SH "SEE ALSO"
-csh(1), tset(1), xterm(1)
-.SH AUTHORS
-Mark Vandevoorde (MIT-Athena), Edward Moy (Berkeley)
-.br
-Copyright (c) 1984, 1985 by X Consortium
-.br
-See
-.IR X (__miscmansuffix__)
-for a complete copyright notice.
diff --git a/nx-X11/programs/xterm/screen.c b/nx-X11/programs/xterm/screen.c
deleted file mode 100644
index 09712218f..000000000
--- a/nx-X11/programs/xterm/screen.c
+++ /dev/null
@@ -1,1853 +0,0 @@
-/* $XTermId: screen.c,v 1.184 2005/11/03 13:17:28 tom Exp $ */
-
-/*
- * $Xorg: screen.c,v 1.3 2000/08/17 19:55:09 cpqbld Exp $
- */
-
-/*
- * Copyright 1999-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/* $XFree86: xc/programs/xterm/screen.c,v 3.73 2005/11/03 13:17:28 dickey Exp $ */
-
-/* screen.c */
-
-#include <stdio.h>
-#include <xterm.h>
-#include <error.h>
-#include <data.h>
-#include <xcharmouse.h>
-#include <xterm_io.h>
-
-#if OPT_WIDE_CHARS
-#include <fontutils.h>
-#include <menu.h>
-#endif
-
-#include <assert.h>
-#include <signal.h>
-
-#define getMinRow(screen) ((term->flags & ORIGIN) ? (screen)->top_marg : 0)
-#define getMaxRow(screen) ((term->flags & ORIGIN) ? (screen)->bot_marg : (screen)->max_row)
-#define getMinCol(screen) 0
-#define getMaxCol(screen) ((screen)->max_col)
-
-/*
- * Allocates memory for a 2-dimensional array of chars and returns a pointer
- * thereto. Each line is formed from a set of char arrays, with an index
- * (i.e., the ScrnBuf type). The first pointer in the index is reserved for
- * per-line flags, and does not point to data.
- *
- * After the per-line flags, we have a series of pointers to char arrays: The
- * first one is the actual character array, the second one is the attributes,
- * the third is the foreground and background colors, and the fourth denotes
- * the character set.
- *
- * We store it all as pointers, because of alignment considerations, together
- * with the intention of being able to change the total number of pointers per
- * row according to whether the user wants color or not.
- */
-ScrnBuf
-Allocate(int nrow, int ncol, Char ** addr)
-{
- ScrnBuf base;
- Char *tmp;
- int i, j, k;
- size_t entries = MAX_PTRS * nrow;
- size_t length = BUF_PTRS * nrow * ncol;
-
- if ((base = TypeCallocN(ScrnPtr, entries)) == 0)
- SysError(ERROR_SCALLOC);
-
- if ((tmp = TypeCallocN(Char, length)) == 0)
- SysError(ERROR_SCALLOC2);
-
- *addr = tmp;
- for (i = k = 0; i < nrow; i++) {
- base[k] = 0; /* per-line flags */
- k += BUF_HEAD;
- for (j = BUF_HEAD; j < MAX_PTRS; j++) {
- base[k++] = tmp;
- tmp += ncol;
- }
- }
-
- return (base);
-}
-
-/*
- * This is called when the screen is resized.
- * Returns the number of lines the text was moved down (neg for up).
- * (Return value only necessary with SouthWestGravity.)
- */
-static int
-Reallocate(ScrnBuf * sbuf,
- Char ** sbufaddr,
- int nrow,
- int ncol,
- int oldrow,
- int oldcol)
-{
- ScrnBuf base;
- Char *tmp;
- int i, j, k, minrows;
- size_t mincols;
- Char *oldbuf;
- int move_down = 0, move_up = 0;
- size_t entries = MAX_PTRS * nrow;
- size_t length = BUF_PTRS * nrow * ncol;
-
- if (sbuf == NULL || *sbuf == NULL) {
- return 0;
- }
-
- oldbuf = *sbufaddr;
-
- /*
- * Special case if oldcol == ncol - straight forward realloc and
- * update of the additional lines in sbuf
- *
- * FIXME: this is a good idea, but doesn't seem to be implemented.
- * -gildea
- */
-
- /*
- * realloc sbuf, the pointers to all the lines.
- * If the screen shrinks, remove lines off the top of the buffer
- * if resizeGravity resource says to do so.
- */
- if (nrow < oldrow
- && term->misc.resizeGravity == SouthWestGravity) {
- /* Remove lines off the top of the buffer if necessary. */
- move_up = (oldrow - nrow)
- - (term->screen.max_row - term->screen.cur_row);
- if (move_up < 0)
- move_up = 0;
- /* Overlapping memmove here! */
- memmove(*sbuf, *sbuf + (move_up * MAX_PTRS),
- MAX_PTRS * (oldrow - move_up) * sizeof((*sbuf)[0]));
- }
- *sbuf = TypeRealloc(ScrnPtr, entries, *sbuf);
- if (*sbuf == 0)
- SysError(ERROR_RESIZE);
- base = *sbuf;
-
- /*
- * create the new buffer space and copy old buffer contents there
- * line by line.
- */
- if ((tmp = TypeCallocN(Char, length)) == 0)
- SysError(ERROR_SREALLOC);
- *sbufaddr = tmp;
- minrows = (oldrow < nrow) ? oldrow : nrow;
- mincols = (oldcol < ncol) ? oldcol : ncol;
- if (nrow > oldrow
- && term->misc.resizeGravity == SouthWestGravity) {
- /* move data down to bottom of expanded screen */
- move_down = Min(nrow - oldrow, term->screen.savedlines);
- tmp += (ncol * move_down * BUF_PTRS);
- }
-
- for (i = k = 0; i < minrows; i++) {
- k += BUF_HEAD;
- for (j = BUF_HEAD; j < MAX_PTRS; j++) {
- memcpy(tmp, base[k++], mincols);
- tmp += ncol;
- }
- }
-
- /*
- * update the pointers in sbuf
- */
- for (i = k = 0, tmp = *sbufaddr; i < nrow; i++) {
- for (j = 0; j < BUF_HEAD; j++)
- base[k++] = 0;
- for (j = BUF_HEAD; j < MAX_PTRS; j++) {
- base[k++] = tmp;
- tmp += ncol;
- }
- }
-
- /* Now free the old buffer */
- free(oldbuf);
-
- return move_down ? move_down : -move_up; /* convert to rows */
-}
-
-#if OPT_WIDE_CHARS
-#if 0
-static void
-dump_screen(const char *tag,
- ScrnBuf sbuf,
- Char * sbufaddr,
- unsigned nrow,
- unsigned ncol)
-{
- unsigned y, x;
-
- TRACE(("DUMP %s, ptrs %d\n", tag, term->num_ptrs));
- TRACE((" sbuf %p\n", sbuf));
- TRACE((" sbufaddr %p\n", sbufaddr));
- TRACE((" nrow %d\n", nrow));
- TRACE((" ncol %d\n", ncol));
-
- for (y = 0; y < nrow; ++y) {
- ScrnPtr ptr = BUF_CHARS(sbuf, y);
- TRACE(("%3d:%p:", y, ptr));
- for (x = 0; x < ncol; ++x) {
- Char c = ptr[x];
- if (c == 0)
- c = '~';
- TRACE(("%c", c));
- }
- TRACE(("\n"));
- }
-}
-#else
-#define dump_screen(tag, sbuf, sbufaddr, nrow, ncol) /* nothing */
-#endif
-
-/*
- * This function reallocates memory if changing the number of Buf offsets.
- * The code is based on Reallocate().
- */
-static void
-ReallocateBufOffsets(ScrnBuf * sbuf,
- Char ** sbufaddr,
- unsigned nrow,
- unsigned ncol,
- size_t new_max_offsets)
-{
- unsigned i;
- int j, k;
- ScrnBuf base;
- Char *oldbuf, *tmp;
- size_t entries, length;
- /*
- * As there are 2 buffers (allbuf, altbuf), we cannot change num_ptrs in
- * this function. However MAX_PTRS and BUF_PTRS depend on num_ptrs so
- * change it now and restore the value when done.
- */
- int old_max_ptrs = MAX_PTRS;
-
- assert(nrow != 0);
- assert(ncol != 0);
- assert(new_max_offsets != 0);
-
- dump_screen("before", *sbuf, *sbufaddr, nrow, ncol);
-
- term->num_ptrs = new_max_offsets;
-
- entries = MAX_PTRS * nrow;
- length = BUF_PTRS * nrow * ncol;
- oldbuf = *sbufaddr;
-
- *sbuf = TypeRealloc(ScrnPtr, entries, *sbuf);
- if (*sbuf == 0)
- SysError(ERROR_RESIZE);
- base = *sbuf;
-
- if ((tmp = TypeCallocN(Char, length)) == 0)
- SysError(ERROR_SREALLOC);
- *sbufaddr = tmp;
-
- for (i = k = 0; i < nrow; i++) {
- k += BUF_HEAD;
- for (j = BUF_HEAD; j < old_max_ptrs; j++) {
- memcpy(tmp, base[k++], ncol);
- tmp += ncol;
- }
- tmp += ncol * (new_max_offsets - old_max_ptrs);
- }
-
- /*
- * update the pointers in sbuf
- */
- for (i = k = 0, tmp = *sbufaddr; i < nrow; i++) {
- for (j = 0; j < BUF_HEAD; j++)
- base[k++] = 0;
- for (j = BUF_HEAD; j < MAX_PTRS; j++) {
- base[k++] = tmp;
- tmp += ncol;
- }
- }
-
- /* Now free the old buffer and restore num_ptrs */
- free(oldbuf);
- dump_screen("after", *sbuf, *sbufaddr, nrow, ncol);
-
- term->num_ptrs = old_max_ptrs;
-}
-
-/*
- * This function dynamically adds support for wide-characters.
- */
-void
-ChangeToWide(TScreen * screen)
-{
- unsigned new_bufoffset = (OFF_COM2H + 1);
- int savelines = screen->scrollWidget ? screen->savelines : 0;
-
- if (screen->wide_chars)
- return;
-
- TRACE(("ChangeToWide\n"));
- if (xtermLoadWideFonts(term, True)) {
- if (savelines < 0)
- savelines = 0;
- ReallocateBufOffsets(&screen->allbuf, &screen->sbuf_address,
- (unsigned) (MaxRows(screen) + savelines),
- (unsigned) MaxCols(screen),
- new_bufoffset);
- if (screen->altbuf)
- ReallocateBufOffsets(&screen->altbuf, &screen->abuf_address,
- (unsigned) MaxRows(screen),
- (unsigned) MaxCols(screen),
- new_bufoffset);
- screen->wide_chars = True;
- term->num_ptrs = new_bufoffset;
- screen->visbuf = &screen->allbuf[MAX_PTRS * savelines];
- update_font_utf8_mode();
- SetVTFont(term, screen->menu_font_number, TRUE, NULL);
- }
- TRACE(("...ChangeToWide\n"));
-}
-#endif
-
-/*
- * Disown the selection and repaint the area that is highlighted so it is no
- * longer highlighted.
- */
-void
-ScrnDisownSelection(TScreen * screen)
-{
- if (ScrnHaveSelection(screen)) {
- DisownSelection(term);
- }
-}
-
-/*
- * Writes str into buf at screen's current row and column. Characters are set
- * to match flags.
- */
-void
-ScreenWrite(TScreen * screen,
- PAIRED_CHARS(Char * str, Char * str2),
- unsigned flags,
- unsigned cur_fg_bg,
- unsigned length)
-{
-#if OPT_ISO_COLORS
-#if OPT_EXT_COLORS
- Char *fbf = 0;
- Char *fbb = 0;
-#else
- Char *fb = 0;
-#endif
-#endif
-#if OPT_DEC_CHRSET
- Char *cb = 0;
-#endif
- Char *attrs;
- int avail = MaxCols(screen) - screen->cur_col;
- Char *chars;
- int wrappedbit;
-#if OPT_WIDE_CHARS
- Char starcol1, starcol2;
- Char *comb1l = 0, *comb1h = 0, *comb2l = 0, *comb2h = 0;
-#endif
- unsigned real_width = visual_width(PAIRED_CHARS(str, str2), length);
-
- if (avail <= 0)
- return;
- if (length > (unsigned) avail)
- length = avail;
- if (length == 0 || real_width == 0)
- return;
-
- chars = SCRN_BUF_CHARS(screen, screen->cur_row) + screen->cur_col;
- attrs = SCRN_BUF_ATTRS(screen, screen->cur_row) + screen->cur_col;
-
- if_OPT_WIDE_CHARS(screen, {
- comb1l = SCRN_BUF_COM1L(screen, screen->cur_row) + screen->cur_col;
- comb1h = SCRN_BUF_COM1H(screen, screen->cur_row) + screen->cur_col;
- comb2l = SCRN_BUF_COM2L(screen, screen->cur_row) + screen->cur_col;
- comb2h = SCRN_BUF_COM2H(screen, screen->cur_row) + screen->cur_col;
- });
-
- if_OPT_EXT_COLORS(screen, {
- fbf = SCRN_BUF_FGRND(screen, screen->cur_row) + screen->cur_col;
- fbb = SCRN_BUF_BGRND(screen, screen->cur_row) + screen->cur_col;
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- fb = SCRN_BUF_COLOR(screen, screen->cur_row) + screen->cur_col;
- });
- if_OPT_DEC_CHRSET({
- cb = SCRN_BUF_CSETS(screen, screen->cur_row) + screen->cur_col;
- });
-
- wrappedbit = ScrnTstWrapped(screen, screen->cur_row);
-
-#if OPT_WIDE_CHARS
- starcol1 = *chars;
- starcol2 = chars[length - 1];
-#endif
-
- /* write blanks if we're writing invisible text */
- if (flags & INVISIBLE) {
- memset(chars, ' ', length);
- } else {
- memcpy(chars, str, length); /* This can stand for the present. If it
- is wrong, we will scribble over it */
- }
-
-#if OPT_BLINK_TEXT
- if ((flags & BLINK) && !(screen->blink_as_bold)) {
- ScrnSetBlinked(screen, screen->cur_row);
- }
-#endif
-
-#define ERROR_1 0x20
-#define ERROR_2 0x00
- if_OPT_WIDE_CHARS(screen, {
-
- Char *char2;
-
- if (real_width != length) {
- Char *char1 = chars;
- char2 = SCRN_BUF_WIDEC(screen, screen->cur_row);
- char2 += screen->cur_col;
- if (screen->cur_col && starcol1 == HIDDEN_LO && *char2 == HIDDEN_HI
- && iswide(char1[-1] | (char2[-1] << 8))) {
- char1[-1] = ERROR_1;
- char2[-1] = ERROR_2;
- }
- /* if we are overwriting the right hand half of a
- wide character, make the other half vanish */
- while (length) {
- int ch = *str;
- if (str2)
- ch |= *str2 << 8;
-
- *char1 = *str;
- char1++;
- str++;
-
- if (str2) {
- *char2 = *str2;
- str2++;
- } else
- *char2 = 0;
- char2++;
- length--;
-
- if (iswide(ch)) {
- *char1 = HIDDEN_LO;
- *char2 = HIDDEN_HI;
- char1++;
- char2++;
- }
- }
-
- if (*char1 == HIDDEN_LO
- && *char2 == HIDDEN_HI
- && char1[-1] == HIDDEN_LO
- && char2[-1] == HIDDEN_HI) {
- *char1 = ERROR_1;
- *char2 = ERROR_2;
- }
- /* if we are overwriting the left hand half of a
- wide character, make the other half vanish */
- }
-
- else {
-
- if ((char2 = SCRN_BUF_WIDEC(screen, screen->cur_row)) != 0) {
- char2 += screen->cur_col;
- if (screen->cur_col && starcol1 == HIDDEN_LO && *char2 == HIDDEN_HI
- && iswide(chars[-1] | (char2[-1] << 8))) {
- chars[-1] = ERROR_1;
- char2[-1] = ERROR_2;
- }
- /* if we are overwriting the right hand half of a
- wide character, make the other half vanish */
- if (chars[length] == HIDDEN_LO && char2[length] == HIDDEN_HI &&
- iswide(starcol2 | (char2[length - 1] << 8))) {
- chars[length] = ERROR_1;
- char2[length] = ERROR_2;
- }
- /* if we are overwriting the left hand half of a
- wide character, make the other half vanish */
- if ((flags & INVISIBLE) || (str2 == 0))
- memset(char2, 0, length);
- else
- memcpy(char2, str2, length);
- }
- }
- });
-
- flags &= ATTRIBUTES;
- flags |= CHARDRAWN;
- memset(attrs, (Char) flags, real_width);
-
- if_OPT_WIDE_CHARS(screen, {
- memset(comb1l, 0, real_width);
- memset(comb2l, 0, real_width);
- memset(comb1h, 0, real_width);
- memset(comb2h, 0, real_width);
- });
- if_OPT_EXT_COLORS(screen, {
- memset(fbf, (Char) (cur_fg_bg >> 8), real_width);
- memset(fbb, (Char) (cur_fg_bg & 0xff), real_width);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- memset(fb, cur_fg_bg, real_width);
- });
- if_OPT_DEC_CHRSET({
- memset(cb, curXtermChrSet(screen->cur_row), real_width);
- });
-
- if (wrappedbit)
- ScrnSetWrapped(screen, screen->cur_row);
- else
- ScrnClrWrapped(screen, screen->cur_row);
-
- if_OPT_WIDE_CHARS(screen, {
- screen->last_written_col = screen->cur_col + real_width - 1;
- screen->last_written_row = screen->cur_row;
- });
-
- if_OPT_XMC_GLITCH(screen, {
- Resolve_XMC(screen);
- });
-}
-
-/*
- * Saves pointers to the n lines beginning at sb + where, and clears the lines
- */
-static void
-ScrnClearLines(TScreen * screen, ScrnBuf sb, int where, unsigned n, unsigned size)
-{
- int i, j;
- size_t len = ScrnPointers(screen, n);
- int last = (n * MAX_PTRS);
-
- TRACE(("ScrnClearLines(where %d, n %d, size %d)\n", where, n, size));
-
- assert(n != 0);
- assert(size != 0);
-
- /* save n lines at where */
- memcpy((char *) screen->save_ptr,
- (char *) &sb[MAX_PTRS * where],
- len);
-
- /* clear contents of old rows */
- if (TERM_COLOR_FLAGS(term)) {
- int flags = TERM_COLOR_FLAGS(term);
- for (i = 0; i < last; i += MAX_PTRS) {
- for (j = 0; j < MAX_PTRS; j++) {
- if (j < BUF_HEAD)
- screen->save_ptr[i + j] = 0;
- else if (j == OFF_ATTRS)
- memset(screen->save_ptr[i + j], flags, size);
-#if OPT_ISO_COLORS
-#if OPT_EXT_COLORS
- else if (j == OFF_FGRND)
- memset(screen->save_ptr[i + j], term->sgr_foreground, size);
- else if (j == OFF_BGRND)
- memset(screen->save_ptr[i + j], term->cur_background, size);
-#else
- else if (j == OFF_COLOR)
- memset(screen->save_ptr[i + j], xtermColorPair(), size);
-#endif
-#endif
- else
- bzero(screen->save_ptr[i + j], size);
- }
- }
- } else {
- for (i = 0; i < last; i += MAX_PTRS) {
- for (j = 0; j < BUF_HEAD; j++)
- screen->save_ptr[i + j] = 0;
- for (j = BUF_HEAD; j < MAX_PTRS; j++)
- bzero(screen->save_ptr[i + j], size);
- }
- }
-}
-
-size_t
-ScrnPointers(TScreen * screen, size_t len)
-{
- len *= MAX_PTRS;
-
- if (len > screen->save_len) {
- if (screen->save_len)
- screen->save_ptr = TypeRealloc(ScrnPtr, len, screen->save_ptr);
- else
- screen->save_ptr = TypeMallocN(ScrnPtr, len);
- screen->save_len = len;
- if (screen->save_ptr == 0)
- SysError(ERROR_SAVE_PTR);
- }
- return len * sizeof(ScrnPtr);
-}
-
-/*
- * Inserts n blank lines at sb + where, treating last as a bottom margin.
- * size is the size of each entry in sb.
- */
-void
-ScrnInsertLine(TScreen * screen, ScrnBuf sb, int last, int where,
- unsigned n, unsigned size)
-{
- size_t len = ScrnPointers(screen, n);
-
- assert(where >= 0);
- assert(last >= (int) n);
- assert(last >= where);
-
- assert(n != 0);
- assert(size != 0);
- assert(MAX_PTRS > 0);
-
- /* save n lines at bottom */
- ScrnClearLines(screen, sb, (last -= n - 1), n, size);
-
- /*
- * WARNING, overlapping copy operation. Move down lines (pointers).
- *
- * +----|---------|--------+
- *
- * is copied in the array to:
- *
- * +--------|---------|----+
- */
- assert(last >= where);
- memmove((char *) &sb[MAX_PTRS * (where + n)],
- (char *) &sb[MAX_PTRS * where],
- MAX_PTRS * sizeof(char *) * (last - where));
-
- /* reuse storage for new lines at where */
- memcpy((char *) &sb[MAX_PTRS * where],
- (char *) screen->save_ptr,
- len);
-}
-
-/*
- * Deletes n lines at sb + where, treating last as a bottom margin.
- * size is the size of each entry in sb.
- */
-void
-ScrnDeleteLine(TScreen * screen, ScrnBuf sb, int last, int where,
- unsigned n, unsigned size)
-{
- assert(where >= 0);
- assert(last >= where + (int) n - 1);
-
- assert(n != 0);
- assert(size != 0);
- assert(MAX_PTRS > 0);
-
- ScrnClearLines(screen, sb, where, n, size);
-
- /* move up lines */
- memmove((char *) &sb[MAX_PTRS * where],
- (char *) &sb[MAX_PTRS * (where + n)],
- MAX_PTRS * sizeof(char *) * ((last -= n - 1) - where));
-
- /* reuse storage for new bottom lines */
- memcpy((char *) &sb[MAX_PTRS * last],
- (char *) screen->save_ptr,
- MAX_PTRS * sizeof(char *) * n);
-}
-
-/*
- * Inserts n blanks in screen at current row, col. Size is the size of each
- * row.
- */
-void
-ScrnInsertChar(TScreen * screen, unsigned n)
-{
- ScrnBuf sb = screen->visbuf;
- unsigned last = MaxCols(screen);
- int row = screen->cur_row;
- unsigned col = screen->cur_col;
- unsigned i;
- Char *ptr = BUF_CHARS(sb, row);
- Char *attrs = BUF_ATTRS(sb, row);
- int wrappedbit = ScrnTstWrapped(screen, row);
- int flags = CHARDRAWN | TERM_COLOR_FLAGS(term);
- size_t nbytes;
-
- if (last <= (col + n)) {
- if (last <= col)
- return;
- n = last - col;
- }
- nbytes = (last - (col + n));
-
- assert(screen->cur_col >= 0);
- assert(screen->cur_row >= 0);
- assert(n > 0);
- assert(last > n);
-
- ScrnClrWrapped(screen, row); /* make sure the bit isn't moved */
- for (i = last - 1; i >= col + n; i--) {
- unsigned j = i - n;
- assert(i >= n);
- ptr[i] = ptr[j];
- attrs[i] = attrs[j];
- }
-
- for (i = col; i < col + n; i++)
- ptr[i] = ' ';
- for (i = col; i < col + n; i++)
- attrs[i] = flags;
- if_OPT_EXT_COLORS(screen, {
- ptr = BUF_FGRND(sb, row);
- memmove(ptr + col + n, ptr + col, nbytes);
- memset(ptr + col, term->sgr_foreground, n);
- ptr = BUF_BGRND(sb, row);
- memmove(ptr + col + n, ptr + col, nbytes);
- memset(ptr + col, term->cur_background, n);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- ptr = BUF_COLOR(sb, row);
- memmove(ptr + col + n, ptr + col, nbytes);
- memset(ptr + col, xtermColorPair(), n);
- });
- if_OPT_DEC_CHRSET({
- ptr = BUF_CSETS(sb, row);
- memmove(ptr + col + n, ptr + col, nbytes);
- memset(ptr + col, curXtermChrSet(row), n);
- });
- if_OPT_WIDE_CHARS(screen, {
- ptr = BUF_WIDEC(sb, row);
- memmove(ptr + col + n, ptr + col, nbytes);
- memset(ptr + col, 0, n);
-
- ptr = BUF_COM1L(sb, row);
- memmove(ptr + col + n, ptr + col, nbytes);
- memset(ptr + col, 0, n);
-
- ptr = BUF_COM1H(sb, row);
- memmove(ptr + col + n, ptr + col, nbytes);
- memset(ptr + col, 0, n);
-
- ptr = BUF_COM2L(sb, row);
- memmove(ptr + col + n, ptr + col, nbytes);
- memset(ptr + col, 0, n);
-
- ptr = BUF_COM2H(sb, row);
- memmove(ptr + col + n, ptr + col, nbytes);
- memset(ptr + col, 0, n);
- });
-
- if (wrappedbit)
- ScrnSetWrapped(screen, row);
- else
- ScrnClrWrapped(screen, row);
-}
-
-/*
- * Deletes n characters at current row, col.
- */
-void
-ScrnDeleteChar(TScreen * screen, unsigned n)
-{
- ScrnBuf sb = screen->visbuf;
- unsigned last = MaxCols(screen);
- unsigned row = screen->cur_row;
- unsigned col = screen->cur_col;
- Char *ptr = BUF_CHARS(sb, row);
- Char *attrs = BUF_ATTRS(sb, row);
- size_t nbytes;
-
- if (last <= (col + n)) {
- if (last <= col)
- return;
- n = last - col;
- }
- nbytes = (last - (col + n));
-
- assert(screen->cur_col >= 0);
- assert(screen->cur_row >= 0);
- assert(n > 0);
- assert(last > n);
-
- memmove(ptr + col, ptr + col + n, nbytes);
- memmove(attrs + col, attrs + col + n, nbytes);
- bzero(ptr + last - n, n);
- memset(attrs + last - n, (Char) (TERM_COLOR_FLAGS(term)), n);
-
- if_OPT_EXT_COLORS(screen, {
- ptr = BUF_FGRND(sb, row);
- memmove(ptr + col, ptr + col + n, nbytes);
- memset(ptr + last - n, term->sgr_foreground, n);
- ptr = BUF_BGRND(sb, row);
- memmove(ptr + col, ptr + col + n, nbytes);
- memset(ptr + last - n, term->cur_background, n);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- ptr = BUF_COLOR(sb, row);
- memmove(ptr + col, ptr + col + n, nbytes);
- memset(ptr + last - n, xtermColorPair(), n);
- });
- if_OPT_DEC_CHRSET({
- ptr = BUF_CSETS(sb, row);
- memmove(ptr + col, ptr + col + n, nbytes);
- memset(ptr + last - n, curXtermChrSet(row), n);
- });
- if_OPT_WIDE_CHARS(screen, {
- ptr = BUF_WIDEC(sb, row);
- memmove(ptr + col, ptr + col + n, nbytes);
- memset(ptr + last - n, 0, n);
-
- ptr = BUF_COM1L(sb, row);
- memmove(ptr + col, ptr + col + n, nbytes);
- memset(ptr + last - n, 0, n);
-
- ptr = BUF_COM1H(sb, row);
- memmove(ptr + col, ptr + col + n, nbytes);
- memset(ptr + last - n, 0, n);
-
- ptr = BUF_COM2L(sb, row);
- memmove(ptr + col, ptr + col + n, nbytes);
- memset(ptr + last - n, 0, n);
-
- ptr = BUF_COM2H(sb, row);
- memmove(ptr + col, ptr + col + n, nbytes);
- memset(ptr + last - n, 0, n);
- });
- ScrnClrWrapped(screen, row);
-}
-
-/*
- * Repaints the area enclosed by the parameters.
- * Requires: (toprow, leftcol), (toprow + nrows, leftcol + ncols) are
- * coordinates of characters in screen;
- * nrows and ncols positive.
- * all dimensions are based on single-characters.
- */
-void
-ScrnRefresh(TScreen * screen,
- int toprow,
- int leftcol,
- int nrows,
- int ncols,
- Bool force) /* ... leading/trailing spaces */
-{
- int y = toprow * FontHeight(screen) + screen->border;
- int row;
- int topline = screen->topline;
- int maxrow = toprow + nrows - 1;
- int scrollamt = screen->scroll_amt;
- int max = screen->max_row;
- int gc_changes = 0;
-#ifdef __CYGWIN__
- static char first_time = 1;
-#endif
- static int recurse = 0;
-
- TRACE(("ScrnRefresh (%d,%d) - (%d,%d)%s\n",
- toprow, leftcol,
- nrows, ncols,
- force ? " force" : ""));
-
- if (screen->cursor_col >= leftcol
- && screen->cursor_col <= (leftcol + ncols - 1)
- && screen->cursor_row >= toprow + topline
- && screen->cursor_row <= maxrow + topline)
- screen->cursor_state = OFF;
-
- for (row = toprow; row <= maxrow; y += FontHeight(screen), row++) {
-#if OPT_ISO_COLORS
-#if OPT_EXT_COLORS
- Char *fbf = 0;
- Char *fbb = 0;
-#define ColorOf(col) (unsigned) ((fbf[col] << 8) | fbb[col])
-#else
- Char *fb = 0;
-#define ColorOf(col) (unsigned) (fb[col])
-#endif
-#endif
-#if OPT_DEC_CHRSET
- Char *cb = 0;
-#endif
-#if OPT_WIDE_CHARS
- int wideness = 0;
- Char *widec = 0;
-#define WIDEC_PTR(cell) widec ? &widec[cell] : 0
-#define BLANK_CEL(cell) ((chars[cell] == ' ') && (widec == 0 || widec[cell] == 0))
-#else
-#define BLANK_CEL(cell) (chars[cell] == ' ')
-#endif
- Char cs = 0;
- Char *chars;
- Char *attrs;
- int col = leftcol;
- int maxcol = leftcol + ncols - 1;
- int hi_col = maxcol;
- int lastind;
- unsigned flags;
- unsigned test;
- unsigned fg_bg = 0, fg = 0, bg = 0;
- int x;
- GC gc;
- Bool hilite;
-
- if (row < screen->top_marg || row > screen->bot_marg)
- lastind = row;
- else
- lastind = row - scrollamt;
-
- TRACE(("ScrnRefresh row=%d lastind=%d/%d\n", row, lastind, max));
- if (lastind < 0 || lastind > max)
- continue;
-
- chars = SCRN_BUF_CHARS(screen, lastind + topline);
- attrs = SCRN_BUF_ATTRS(screen, lastind + topline);
-
- if_OPT_DEC_CHRSET({
- cb = SCRN_BUF_CSETS(screen, lastind + topline);
- });
-
- if_OPT_WIDE_CHARS(screen, {
- widec = SCRN_BUF_WIDEC(screen, lastind + topline);
- });
-
- if_OPT_WIDE_CHARS(screen, {
- /* This fixes an infinite recursion bug, that leads
- to display anomalies. It seems to be related to
- problems with the selection. */
- if (recurse < 3) {
- /* adjust to redraw all of a widechar if we just wanted
- to draw the right hand half */
- if (leftcol > 0 &&
- (chars[leftcol] | (widec[leftcol] << 8)) == HIDDEN_CHAR &&
- iswide(chars[leftcol - 1] | (widec[leftcol - 1] << 8))) {
- leftcol--;
- ncols++;
- col = leftcol;
- }
- } else {
- fprintf(stderr, "This should not happen. Why is it so?\n");
- }
- });
-
- if (row < screen->startHRow || row > screen->endHRow ||
- (row == screen->startHRow && maxcol < screen->startHCol) ||
- (row == screen->endHRow && col >= screen->endHCol)) {
-#if OPT_DEC_CHRSET
- /*
- * Temporarily change dimensions to double-sized characters so
- * we can reuse the recursion on this function.
- */
- if (CSET_DOUBLE(*cb)) {
- col /= 2;
- maxcol /= 2;
- }
-#endif
- /*
- * If row does not intersect selection; don't hilite blanks.
- */
- if (!force) {
- while (col <= maxcol && (attrs[col] & ~BOLD) == 0 &&
- BLANK_CEL(col))
- col++;
-
- while (col <= maxcol && (attrs[maxcol] & ~BOLD) == 0 &&
- BLANK_CEL(maxcol))
- maxcol--;
- }
-#if OPT_DEC_CHRSET
- if (CSET_DOUBLE(*cb)) {
- col *= 2;
- maxcol *= 2;
- }
-#endif
- hilite = False;
- } else {
- /* row intersects selection; split into pieces of single type */
- if (row == screen->startHRow && col < screen->startHCol) {
- recurse++;
- ScrnRefresh(screen, row, col, 1, screen->startHCol - col,
- force);
- col = screen->startHCol;
- }
- if (row == screen->endHRow && maxcol >= screen->endHCol) {
- recurse++;
- ScrnRefresh(screen, row, screen->endHCol, 1,
- maxcol - screen->endHCol + 1, force);
- maxcol = screen->endHCol - 1;
- }
-
- /*
- * If we're highlighting because the user is doing cut/paste,
- * trim the trailing blanks from the highlighted region so we're
- * showing the actual extent of the text that'll be cut. If
- * we're selecting a blank line, we'll highlight one column
- * anyway.
- *
- * We don't do this if the mouse-hilite mode is set because that
- * would be too confusing.
- *
- * The default if the highlightSelection resource isn't set will
- * highlight the whole width of the terminal, which is easy to
- * see, but harder to use (because trailing blanks aren't as
- * apparent).
- */
- if (screen->highlight_selection
- && screen->send_mouse_pos != VT200_HIGHLIGHT_MOUSE) {
- hi_col = screen->max_col;
- while (hi_col > 0 && !(attrs[hi_col] & CHARDRAWN))
- hi_col--;
- }
-
- /* remaining piece should be hilited */
- hilite = True;
- }
-
- if (col > maxcol)
- continue;
-
- /*
- * Go back to double-sized character dimensions if the line has
- * double-width characters. Note that 'hi_col' is already in the
- * right units.
- */
- if_OPT_DEC_CHRSET({
- if (CSET_DOUBLE(*cb)) {
- col /= 2;
- maxcol /= 2;
- }
- cs = cb[col];
- });
-
- flags = attrs[col];
-#if OPT_WIDE_CHARS
- if (widec)
- wideness = iswide(chars[col] | (widec[col] << 8));
- else
- wideness = 0;
-#endif
- if_OPT_EXT_COLORS(screen, {
- fbf = SCRN_BUF_FGRND(screen, lastind + topline);
- fbb = SCRN_BUF_BGRND(screen, lastind + topline);
- fg_bg = ColorOf(col);
- /* this combines them, then splits them again. but
- extract_fg does more, so seems reasonable */
- fg = extract_fg(fg_bg, flags);
- bg = extract_bg(fg_bg, flags);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- fb = SCRN_BUF_COLOR(screen, lastind + topline);
- fg_bg = ColorOf(col);
- fg = extract_fg(fg_bg, flags);
- bg = extract_bg(fg_bg, flags);
- });
-
- gc = updatedXtermGC(screen, flags, fg_bg, hilite);
- gc_changes |= (flags & (FG_COLOR | BG_COLOR));
-
- x = CurCursorX(screen, row + topline, col);
- lastind = col;
-
- for (; col <= maxcol; col++) {
- if ((attrs[col] != flags)
- || (hilite && (col > hi_col))
-#if OPT_ISO_COLORS
- || ((flags & FG_COLOR)
- && (extract_fg(ColorOf(col), attrs[col]) != fg))
- || ((flags & BG_COLOR)
- && (extract_bg(ColorOf(col), attrs[col]) != bg))
-#endif
-#if OPT_WIDE_CHARS
- || (widec
- && ((iswide(chars[col] | (widec[col] << 8))) != wideness)
- && !((chars[col] | (widec[col] << 8)) == HIDDEN_CHAR))
-#endif
-#if OPT_DEC_CHRSET
- || (cb[col] != cs)
-#endif
- ) {
- assert(col >= lastind);
- TRACE(("ScrnRefresh looping drawXtermText %d..%d:%s\n",
- lastind, col,
- visibleChars(PAIRED_CHARS(&chars[lastind],
- WIDEC_PTR(lastind)),
- (unsigned) (col - lastind))));
-
- test = flags;
- checkVeryBoldColors(test, fg);
-
- x = drawXtermText(screen, test & DRAWX_MASK, gc, x, y,
- cs,
- PAIRED_CHARS(&chars[lastind], WIDEC_PTR(lastind)),
- (unsigned) (col - lastind), 0);
-
- if_OPT_WIDE_CHARS(screen, {
- int i;
- Char *comb1l = BUF_COM1L(screen->visbuf, row + topline);
- Char *comb2l = BUF_COM2L(screen->visbuf, row + topline);
- Char *comb1h = BUF_COM1H(screen->visbuf, row + topline);
- Char *comb2h = BUF_COM2H(screen->visbuf, row + topline);
- for (i = lastind; i < col; i++) {
- int my_x = CurCursorX(screen, row + topline, i);
- int base = chars[i] | (widec[i] << 8);
- int comb1 = comb1l[i] | (comb1h[i] << 8);
- int comb2 = comb2l[i] | (comb2h[i] << 8);
-
- if (iswide(base))
- my_x = CurCursorX(screen, row + topline, i - 1);
-
- if (comb1 != 0) {
- drawXtermText(screen, (test & DRAWX_MASK)
- | NOBACKGROUND, gc, my_x, y, cs,
- PAIRED_CHARS(comb1l + i, comb1h + i),
- 1, iswide(base));
- }
-
- if (comb2 != 0) {
- drawXtermText(screen, (test & DRAWX_MASK)
- | NOBACKGROUND, gc, my_x, y, cs,
- PAIRED_CHARS(comb2l + i, comb2h + i),
- 1, iswide(base));
- }
- }
- });
-
- resetXtermGC(screen, flags, hilite);
-
- lastind = col;
-
- if (hilite && (col > hi_col))
- hilite = False;
-
- flags = attrs[col];
- if_OPT_EXT_COLORS(screen, {
- fg_bg = ColorOf(col);
- fg = extract_fg(fg_bg, flags);
- bg = extract_bg(fg_bg, flags);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- fg_bg = ColorOf(col);
- fg = extract_fg(fg_bg, flags);
- bg = extract_bg(fg_bg, flags);
- });
- if_OPT_DEC_CHRSET({
- cs = cb[col];
- });
-#if OPT_WIDE_CHARS
- if (widec)
- wideness = iswide(chars[col] | (widec[col] << 8));
-#endif
-
- gc = updatedXtermGC(screen, flags, fg_bg, hilite);
- gc_changes |= (flags & (FG_COLOR | BG_COLOR));
- }
-
- if (chars[col] == 0) {
-#if OPT_WIDE_CHARS
- if (widec == 0 || widec[col] == 0)
-#endif
- chars[col] = ' ';
- }
- }
-
- assert(col >= lastind);
- TRACE(("ScrnRefresh calling drawXtermText %d..%d:%s\n",
- lastind, col,
- visibleChars(PAIRED_CHARS(&chars[lastind], WIDEC_PTR(lastind)),
- (unsigned) (col - lastind))));
-
- test = flags;
- checkVeryBoldColors(test, fg);
-
- drawXtermText(screen, test & DRAWX_MASK, gc, x, y,
- cs,
- PAIRED_CHARS(&chars[lastind], WIDEC_PTR(lastind)),
- (unsigned) (col - lastind), 0);
-
- if_OPT_WIDE_CHARS(screen, {
- int i;
- Char *comb1l = BUF_COM1L(screen->visbuf, row + topline);
- Char *comb2l = BUF_COM2L(screen->visbuf, row + topline);
- Char *comb1h = BUF_COM1H(screen->visbuf, row + topline);
- Char *comb2h = BUF_COM2H(screen->visbuf, row + topline);
- for (i = lastind; i < col; i++) {
- int my_x = CurCursorX(screen, row + topline, i);
- int base = chars[i] | (widec[i] << 8);
- int comb1 = comb1l[i] | (comb1h[i] << 8);
- int comb2 = comb2l[i] | (comb2h[i] << 8);
-
- if (iswide(base))
- my_x = CurCursorX(screen, row + topline, i - 1);
-
- if (comb1 != 0) {
- drawXtermText(screen, (test & DRAWX_MASK) |
- NOBACKGROUND, gc, my_x, y, cs,
- PAIRED_CHARS(comb1l + i, comb1h + i),
- 1, iswide(base));
- }
-
- if (comb2 != 0) {
- drawXtermText(screen, (test & DRAWX_MASK) |
- NOBACKGROUND, gc, my_x, y, cs,
- PAIRED_CHARS(comb2l + i, comb2h + i),
- 1, iswide(base));
- }
- }
- });
-
- resetXtermGC(screen, flags, hilite);
- }
-
- /*
- * If we're in color mode, reset the various GC's to the current
- * screen foreground and background so that other functions (e.g.,
- * ClearRight) will get the correct colors.
- */
- if_OPT_ISO_COLORS(screen, {
- if (gc_changes & FG_COLOR)
- SGR_Foreground(term->cur_foreground);
- if (gc_changes & BG_COLOR)
- SGR_Background(term->cur_background);
- });
-
-#if defined(__CYGWIN__) && defined(TIOCSWINSZ)
- if (first_time == 1) {
- TTYSIZE_STRUCT ts;
-
- first_time = 0;
- TTYSIZE_ROWS(ts) = nrows;
- TTYSIZE_COLS(ts) = ncols;
- ts.ws_xpixel = term->core.width;
- ts.ws_ypixel = term->core.height;
- SET_TTYSIZE(screen->respond, ts);
- }
-#endif
- recurse--;
-}
-
-/*
- * Call this wrapper to ScrnRefresh() when the data has changed. If the
- * refresh region overlaps the selection, we will release the primary selection.
- */
-void
-ScrnUpdate(TScreen * screen,
- int toprow,
- int leftcol,
- int nrows,
- int ncols,
- Bool force) /* ... leading/trailing spaces */
-{
- if (ScrnHaveSelection(screen)
- && (toprow <= screen->endHRow)
- && (toprow + nrows - 1 >= screen->startHRow)) {
- ScrnDisownSelection(screen);
- }
- ScrnRefresh(screen, toprow, leftcol, nrows, ncols, force);
-}
-
-/*
- * Sets the rows first though last of the buffer of screen to spaces.
- * Requires first <= last; first, last are rows of screen->buf.
- */
-void
-ClearBufRows(TScreen * screen,
- int first,
- int last)
-{
- ScrnBuf buf = screen->visbuf;
- unsigned len = MaxCols(screen);
- int row;
- int flags = TERM_COLOR_FLAGS(term);
-
- TRACE(("ClearBufRows %d..%d\n", first, last));
- for (row = first; row <= last; row++) {
- ScrnClrWrapped(screen, row);
- bzero(BUF_CHARS(buf, row), len);
- memset(BUF_ATTRS(buf, row), flags, len);
- if_OPT_EXT_COLORS(screen, {
- memset(BUF_FGRND(buf, row), term->sgr_foreground, len);
- memset(BUF_BGRND(buf, row), term->cur_background, len);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- memset(BUF_COLOR(buf, row), xtermColorPair(), len);
- });
- if_OPT_DEC_CHRSET({
- memset(BUF_CSETS(buf, row), 0, len);
- });
- if_OPT_WIDE_CHARS(screen, {
- memset(BUF_WIDEC(buf, row), 0, len);
- memset(BUF_COM1L(buf, row), 0, len);
- memset(BUF_COM1H(buf, row), 0, len);
- memset(BUF_COM2L(buf, row), 0, len);
- memset(BUF_COM2H(buf, row), 0, len);
- });
- }
-}
-
-/*
- Resizes screen:
- 1. If new window would have fractional characters, sets window size so as to
- discard fractional characters and returns -1.
- Minimum screen size is 1 X 1.
- Note that this causes another ExposeWindow event.
- 2. Enlarges screen->buf if necessary. New space is appended to the bottom
- and to the right
- 3. Reduces screen->buf if necessary. Old space is removed from the bottom
- and from the right
- 4. Cursor is positioned as closely to its former position as possible
- 5. Sets screen->max_row and screen->max_col to reflect new size
- 6. Maintains the inner border (and clears the border on the screen).
- 7. Clears origin mode and sets scrolling region to be entire screen.
- 8. Returns 0
- */
-int
-ScreenResize(TScreen * screen,
- int width,
- int height,
- unsigned *flags)
-{
- int code, rows, cols;
- int border = 2 * screen->border;
- int move_down_by;
-#ifdef TTYSIZE_STRUCT
- TTYSIZE_STRUCT ts;
-#endif
- Window tw = VWindow(screen);
-
- TRACE(("ScreenResize %dx%d border %d font %dx%d\n",
- height, width, border,
- FontHeight(screen), FontWidth(screen)));
-
- assert(width > 0);
- assert(height > 0);
-
- /* clear the right and bottom internal border because of NorthWest
- gravity might have left junk on the right and bottom edges */
- if (width >= FullWidth(screen)) {
- XClearArea(screen->display, tw,
- FullWidth(screen), 0, /* right edge */
- 0, (unsigned) height, /* from top to bottom */
- False);
- }
- if (height >= FullHeight(screen)) {
- XClearArea(screen->display, tw,
- 0, FullHeight(screen), /* bottom */
- (unsigned) width, 0, /* all across the bottom */
- False);
- }
-
- TRACE(("..computing rows/cols: %.2f %.2f\n",
- (double) (height - border) / FontHeight(screen),
- (double) (width - border - ScrollbarWidth(screen)) / FontWidth(screen)));
-
- rows = (height - border) / FontHeight(screen);
- cols = (width - border - ScrollbarWidth(screen)) / FontWidth(screen);
- if (rows < 1)
- rows = 1;
- if (cols < 1)
- cols = 1;
-
- /* update buffers if the screen has changed size */
- if (MaxRows(screen) != rows || MaxCols(screen) != cols) {
- int savelines = (screen->scrollWidget
- ? screen->savelines
- : 0);
- int delta_rows = rows - MaxRows(screen);
-
- TRACE(("...ScreenResize chars %dx%d\n", rows, cols));
-
- if (screen->cursor_state)
- HideCursor();
- if (screen->alternate
- && term->misc.resizeGravity == SouthWestGravity)
- /* swap buffer pointers back to make all this hair work */
- SwitchBufPtrs(screen);
- if (screen->altbuf)
- (void) Reallocate(&screen->altbuf,
- &screen->abuf_address,
- rows,
- cols,
- MaxRows(screen),
- MaxCols(screen));
- move_down_by = Reallocate(&screen->allbuf,
- &screen->sbuf_address,
- rows + savelines, cols,
- MaxRows(screen) + savelines,
- MaxCols(screen));
- screen->visbuf = &screen->allbuf[MAX_PTRS * savelines];
-
- set_max_row(screen, screen->max_row + delta_rows);
- set_max_col(screen, cols - 1);
-
- if (term->misc.resizeGravity == SouthWestGravity) {
- screen->savedlines -= move_down_by;
- if (screen->savedlines < 0)
- screen->savedlines = 0;
- if (screen->savedlines > screen->savelines)
- screen->savedlines = screen->savelines;
- if (screen->topline < -screen->savedlines)
- screen->topline = -screen->savedlines;
- set_cur_row(screen, screen->cur_row + move_down_by);
- screen->cursor_row += move_down_by;
- ScrollSelection(screen, move_down_by, True);
-
- if (screen->alternate)
- SwitchBufPtrs(screen); /* put the pointers back */
- }
-
- /* adjust scrolling region */
- set_tb_margins(screen, 0, screen->max_row);
- *flags &= ~ORIGIN;
-
- if (screen->cur_row > screen->max_row)
- set_cur_row(screen, screen->max_row);
- if (screen->cur_col > screen->max_col)
- set_cur_col(screen, screen->max_col);
-
- screen->fullVwin.height = height - border;
- screen->fullVwin.width = width - border - screen->fullVwin.sb_info.width;
-
- } else if (FullHeight(screen) == height && FullWidth(screen) == width)
- return (0); /* nothing has changed at all */
-
- screen->fullVwin.fullheight = height;
- screen->fullVwin.fullwidth = width;
-
- if (screen->scrollWidget)
- ResizeScrollBar(term);
-
- ResizeSelection(screen, rows, cols);
-
-#ifndef NO_ACTIVE_ICON
- if (screen->iconVwin.window) {
- XWindowChanges changes;
- screen->iconVwin.width =
- MaxCols(screen) * screen->iconVwin.f_width;
-
- screen->iconVwin.height =
- MaxRows(screen) * screen->iconVwin.f_height;
-
- changes.width = screen->iconVwin.fullwidth =
- screen->iconVwin.width + 2 * term->misc.icon_border_width;
- changes.height = screen->iconVwin.fullheight =
- screen->iconVwin.height + 2 * term->misc.icon_border_width;
- changes.border_width = term->misc.icon_border_width;
-
- TRACE(("resizing icon window %dx%d\n", changes.height, changes.width));
- XConfigureWindow(XtDisplay(term), screen->iconVwin.window,
- CWWidth | CWHeight | CWBorderWidth, &changes);
- }
-#endif /* NO_ACTIVE_ICON */
-
-#ifdef TTYSIZE_STRUCT
- /* Set tty's idea of window size */
- TTYSIZE_ROWS(ts) = rows;
- TTYSIZE_COLS(ts) = cols;
-#ifdef USE_STRUCT_WINSIZE
- ts.ws_xpixel = width;
- ts.ws_ypixel = height;
-#endif
- code = SET_TTYSIZE(screen->respond, ts);
- TRACE(("return %d from SET_TTYSIZE %dx%d\n", code, rows, cols));
- (void) code;
-
-#if defined(SIGWINCH) && defined(USE_STRUCT_TTYSIZE)
- if (screen->pid > 1) {
- int pgrp;
-
- TRACE(("getting process-group\n"));
- if (ioctl(screen->respond, TIOCGPGRP, &pgrp) != -1) {
- TRACE(("sending SIGWINCH to process group %d\n", pgrp));
- kill_process_group(pgrp, SIGWINCH);
- }
- }
-#endif /* SIGWINCH */
-
-#else
- TRACE(("ScreenResize cannot do anything to pty\n"));
-#endif /* TTYSIZE_STRUCT */
- return (0);
-}
-
-/*
- * Return true if any character cell starting at [row,col], for len-cells is
- * nonnull.
- */
-Bool
-non_blank_line(ScrnBuf sb,
- int row,
- int col,
- int len)
-{
- int i;
- Char *ptr = BUF_CHARS(sb, row);
-
- for (i = col; i < len; i++) {
- if (ptr[i])
- return True;
- }
-
- if_OPT_WIDE_CHARS((&(term->screen)), {
- if ((ptr = BUF_WIDEC(sb, row)) != 0) {
- for (i = col; i < len; i++) {
- if (ptr[i])
- return True;
- }
- }
- });
-
- return False;
-}
-
-/*
- * Copy the rectangle boundaries into a struct, providing default values as
- * needed.
- */
-void
-xtermParseRect(TScreen * screen, int nparams, int *params, XTermRect * target)
-{
- memset(target, 0, sizeof(*target));
- target->top = (nparams > 0) ? params[0] : getMinRow(screen) + 1;
- target->left = (nparams > 1) ? params[1] : getMinCol(screen) + 1;
- target->bottom = (nparams > 2) ? params[2] : getMaxRow(screen) + 1;
- target->right = (nparams > 3) ? params[3] : getMaxCol(screen) + 1;
- TRACE(("parsed rectangle %d,%d %d,%d\n",
- target->top,
- target->left,
- target->bottom,
- target->right));
-}
-
-static Bool
-validRect(TScreen * screen, XTermRect * target)
-{
- TRACE(("comparing against screensize %dx%d\n",
- getMaxRow(screen) + 1,
- getMaxCol(screen) + 1));
- return (target != 0
- && target->top > getMinRow(screen)
- && target->left > getMinCol(screen)
- && target->top <= target->bottom
- && target->left <= target->right
- && target->top <= getMaxRow(screen) + 1
- && target->right <= getMaxCol(screen) + 1);
-}
-
-/*
- * Fills a rectangle with the given character and video-attributes.
- */
-void
-ScrnFillRectangle(TScreen * screen, XTermRect * target, int value, unsigned flags)
-{
- TRACE(("filling rectangle with '%c'\n", value));
- if (validRect(screen, target)) {
- unsigned left = target->left - 1;
- unsigned size = target->right - left;
- Char attrs = flags;
- int row;
-
- attrs &= ATTRIBUTES;
- attrs |= CHARDRAWN;
- for (row = target->bottom - 1; row >= (target->top - 1); row--) {
- TRACE(("filling %d [%d..%d]\n", row, left + 1, left + size));
- memset(SCRN_BUF_ATTRS(screen, row) + left, attrs, size);
- memset(SCRN_BUF_CHARS(screen, row) + left, (Char) value, size);
- if_OPT_WIDE_CHARS(screen, {
- bzero(SCRN_BUF_WIDEC(screen, row) + left, size);
- });
- }
- ScrnUpdate(screen,
- target->top - 1,
- target->left - 1,
- (target->bottom - target->top) + 1,
- (target->right - target->left) + 1,
- False);
- }
-}
-
-#if OPT_DEC_RECTOPS
-/*
- * Copies the source rectangle to the target location, including video
- * attributes.
- *
- * This implementation ignores page numbers.
- *
- * The reference manual does not indicate if it handles overlapping copy
- * properly - so we make a local copy of the source rectangle first, then apply
- * the target from that.
- */
-void
-ScrnCopyRectangle(TScreen * screen, XTermRect * source, int nparam, int *params)
-{
- TRACE(("copying rectangle\n"));
-
- if (validRect(screen, source)) {
- XTermRect target;
- xtermParseRect(screen,
- ((nparam > 3) ? 2 : (nparam - 1)),
- params + 1,
- &target);
- if (validRect(screen, &target)) {
- unsigned high = (source->bottom - source->top) + 1;
- unsigned wide = (source->right - source->left) + 1;
- unsigned size = (high * wide);
- int row, col, n;
-
- Char *attrs = TypeMallocN(Char, size);
- Char *chars = TypeMallocN(Char, size);
-
-#if OPT_WIDE_CHARS
- Char *widec = TypeMallocN(Char, size);
- if (widec == 0)
- return;
-#endif
- if (attrs == 0
- || chars == 0)
- return;
-
- TRACE(("OK - make copy %dx%d\n", high, wide));
- target.bottom = target.top + (high - 1);
- target.right = target.left + (wide - 1);
-
- for (row = source->top - 1; row < source->bottom; ++row) {
- for (col = source->left - 1; col < source->right; ++col) {
- n = ((1 + row - source->top) * wide) + (1 + col - source->left);
- attrs[n] = SCRN_BUF_ATTRS(screen, row)[col] | CHARDRAWN;
- chars[n] = SCRN_BUF_CHARS(screen, row)[col];
- if_OPT_WIDE_CHARS(screen, {
- widec[n] = SCRN_BUF_WIDEC(screen, row)[col];
- })
- }
- }
- for (row = target.top - 1; row < target.bottom; ++row) {
- for (col = target.left - 1; col < target.right; ++col) {
- if (row >= getMinRow(screen)
- && row <= getMaxRow(screen)
- && col >= getMinCol(screen)
- && col <= getMaxCol(screen)) {
- n = ((1 + row - target.top) * wide) + (1 + col - target.left);
- SCRN_BUF_ATTRS(screen, row)[col] = attrs[n];
- SCRN_BUF_CHARS(screen, row)[col] = chars[n];
- if_OPT_WIDE_CHARS(screen, {
- SCRN_BUF_WIDEC(screen, row)[col] = widec[n];
- })
- }
- }
- }
- free(attrs);
- free(chars);
-#if OPT_WIDE_CHARS
- free(widec);
-#endif
-
- ScrnUpdate(screen,
- (target.top - 1),
- (target.left - 1),
- (target.bottom - target.top) + 1,
- ((target.right - target.left) + 1),
- False);
- }
- }
-}
-
-/*
- * Modifies the video-attributes only - so selection is unaffected.
- */
-void
-ScrnMarkRectangle(TScreen * screen,
- XTermRect * target,
- Bool reverse,
- int nparam,
- int *params)
-{
- Bool exact = (screen->cur_decsace == 2);
-
- TRACE(("%s %s\n",
- reverse ? "reversing" : "marking",
- (exact
- ? "rectangle"
- : "region")));
-
- if (validRect(screen, target)) {
- int top = target->top - 1;
- int bottom = target->bottom - 1;
- int row, col;
- int n;
-
- for (row = top; row <= bottom; ++row) {
- int left = ((exact || (row == top))
- ? (target->left - 1)
- : getMinCol(screen));
- int right = ((exact || (row == bottom))
- ? (target->right - 1)
- : getMaxCol(screen));
-
- TRACE(("marking %d [%d..%d]\n", row, left + 1, right + 1));
- for (col = left; col <= right; ++col) {
- unsigned flags = SCRN_BUF_ATTRS(screen, row)[col];
-
- for (n = 0; n < nparam; ++n) {
-#if OPT_TRACE
- if (row == top && col == left)
- TRACE(("attr param[%d] %d\n", n + 1, params[n]));
-#endif
- if (reverse) {
- switch (params[n]) {
- case 1:
- flags ^= BOLD;
- break;
- case 4:
- flags ^= UNDERLINE;
- break;
- case 5:
- flags ^= BLINK;
- break;
- case 7:
- flags ^= INVERSE;
- break;
- }
- } else {
- switch (params[n]) {
- case 0:
- flags &= ~SGR_MASK;
- break;
- case 1:
- flags |= BOLD;
- break;
- case 4:
- flags |= UNDERLINE;
- break;
- case 5:
- flags |= BLINK;
- break;
- case 7:
- flags |= INVERSE;
- break;
- case 22:
- flags &= ~BOLD;
- break;
- case 24:
- flags &= ~UNDERLINE;
- break;
- case 25:
- flags &= ~BLINK;
- break;
- case 27:
- flags &= ~INVERSE;
- break;
- }
- }
- }
-#if OPT_TRACE
- if (row == top && col == left)
- TRACE(("first mask-change is %#x\n",
- SCRN_BUF_ATTRS(screen, row)[col] ^ flags));
-#endif
- SCRN_BUF_ATTRS(screen, row)[col] = flags;
- }
- }
- ScrnRefresh(screen,
- (target->top - 1),
- (exact ? (target->left - 1) : getMinCol(screen)),
- (target->bottom - target->top) + 1,
- (exact
- ? ((target->right - target->left) + 1)
- : (getMaxCol(screen) - getMinCol(screen) + 1)),
- False);
- }
-}
-
-/*
- * Resets characters to space, except where prohibited by DECSCA. Video
- * attributes are untouched.
- */
-void
-ScrnWipeRectangle(TScreen * screen,
- XTermRect * target)
-{
- TRACE(("wiping rectangle\n"));
-
- if (validRect(screen, target)) {
- int top = target->top - 1;
- int bottom = target->bottom - 1;
- int row, col;
-
- for (row = top; row <= bottom; ++row) {
- int left = (target->left - 1);
- int right = (target->right - 1);
-
- TRACE(("wiping %d [%d..%d]\n", row, left + 1, right + 1));
- for (col = left; col <= right; ++col) {
- if (!((screen->protected_mode == DEC_PROTECT)
- && (SCRN_BUF_ATTRS(screen, row)[col] & PROTECTED))) {
- SCRN_BUF_ATTRS(screen, row)[col] |= CHARDRAWN;
- SCRN_BUF_CHARS(screen, row)[col] = ' ';
- if_OPT_WIDE_CHARS(screen, {
- SCRN_BUF_WIDEC(screen, row)[col] = '\0';
- })
- }
- }
- }
- ScrnUpdate(screen,
- (target->top - 1),
- (target->left - 1),
- (target->bottom - target->top) + 1,
- ((target->right - target->left) + 1),
- False);
- }
-}
-#endif /* OPT_DEC_RECTOPS */
diff --git a/nx-X11/programs/xterm/scrollbar.c b/nx-X11/programs/xterm/scrollbar.c
deleted file mode 100644
index 6dccf6e56..000000000
--- a/nx-X11/programs/xterm/scrollbar.c
+++ /dev/null
@@ -1,682 +0,0 @@
-/* $XTermId: scrollbar.c,v 1.116 2005/11/03 13:17:28 tom Exp $ */
-
-/*
- * $Xorg: scrollbar.c,v 1.4 2000/08/17 19:55:09 cpqbld Exp $
- */
-
-/* $XFree86: xc/programs/xterm/scrollbar.c,v 3.45 2005/11/03 13:17:28 dickey Exp $ */
-
-/*
- * Copyright 2000-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#include <xterm.h>
-
-#include <X11/Xatom.h>
-
-#if defined(HAVE_LIB_XAW)
-#include <X11/Xaw/Scrollbar.h>
-#elif defined(HAVE_LIB_XAW3D)
-#include <X11/Xaw3d/Scrollbar.h>
-#elif defined(HAVE_LIB_NEXTAW)
-#include <X11/neXtaw/Scrollbar.h>
-#elif defined(HAVE_LIB_XAWPLUS)
-#include <X11/XawPlus/Scrollbar.h>
-#endif
-
-#include <data.h>
-#include <error.h>
-#include <menu.h>
-#include <xcharmouse.h>
-
-/*
- * The scrollbar's border overlaps the border of the vt100 window. If there
- * is no border for the vt100, there can be no border for the scrollbar.
- */
-#define SCROLLBAR_BORDER(xw) ((xw)->screen.scrollBarBorder)
-#if OPT_TOOLBAR
-#define ScrollBarBorder(xw) (BorderWidth(xw) ? SCROLLBAR_BORDER(xw) : 0)
-#else
-#define ScrollBarBorder(xw) SCROLLBAR_BORDER(xw)
-#endif
-
-/* Event handlers */
-
-static void ScrollTextTo PROTO_XT_CALLBACK_ARGS;
-static void ScrollTextUpDownBy PROTO_XT_CALLBACK_ARGS;
-
-/* Resize the text window for a terminal screen, modifying the
- * appropriate WM_SIZE_HINTS and taking advantage of bit gravity.
- */
-void
-DoResizeScreen(XtermWidget xw)
-{
- TScreen *screen = &xw->screen;
-
- int border = 2 * xw->screen.border;
- int min_wide = border + xw->screen.fullVwin.sb_info.width;
- int min_high = border;
-#if 1 /* ndef nothack */
- XSizeHints sizehints;
- long supp;
-#endif
- XtGeometryResult geomreqresult;
- Dimension reqWidth, reqHeight, repWidth, repHeight;
-#ifndef NO_ACTIVE_ICON
- struct _vtwin *saveWin = WhichVWin(screen);
-
- /* all units here want to be in the normal font units */
- WhichVWin(screen) = &screen->fullVwin;
-#endif /* NO_ACTIVE_ICON */
-
- /*
- * I'm going to try to explain, as I understand it, why we
- * have to do XGetWMNormalHints and XSetWMNormalHints here,
- * although I can't guarantee that I've got it right.
- *
- * In a correctly written toolkit program, the Shell widget
- * parses the user supplied geometry argument. However,
- * because of the way xterm does things, the VT100 widget does
- * the parsing of the geometry option, not the Shell widget.
- * The result of this is that the Shell widget doesn't set the
- * correct window manager hints, and doesn't know that the
- * user has specified a geometry.
- *
- * The XtVaSetValues call below tells the Shell widget to
- * change its hints. However, since it's confused about the
- * hints to begin with, it doesn't get them all right when it
- * does the SetValues -- it undoes some of what the VT100
- * widget did when it originally set the hints.
- *
- * To fix this, we do the following:
- *
- * 1. Get the sizehints directly from the window, going around
- * the (confused) shell widget.
- * 2. Call XtVaSetValues to let the shell widget know which
- * hints have changed. Note that this may not even be
- * necessary, since we're going to right ahead after that
- * and set the hints ourselves, but it's good to put it
- * here anyway, so that when we finally do fix the code so
- * that the Shell does the right thing with hints, we
- * already have the XtVaSetValues in place.
- * 3. We set the sizehints directly, this fixing up whatever
- * damage was done by the Shell widget during the
- * XtVaSetValues.
- *
- * Gross, huh?
- *
- * The correct fix is to redo VTRealize, VTInitialize and
- * VTSetValues so that font processing happens early enough to
- * give back responsibility for the size hints to the Shell.
- *
- * Someday, we hope to have time to do this. Someday, we hope
- * to have time to completely rewrite xterm.
- */
-
- TRACE(("DoResizeScreen\n"));
-
-#if 1 /* ndef nothack */
- /*
- * NOTE: the hints and the XtVaSetValues() must match.
- */
- TRACE(("%s@%d -- ", __FILE__, __LINE__));
- TRACE_WM_HINTS(xw);
- if (!XGetWMNormalHints(screen->display, XtWindow(SHELL_OF(xw)),
- &sizehints, &supp))
- bzero(&sizehints, sizeof(sizehints));
-
- xtermSizeHints(xw, &sizehints, ScrollbarWidth(screen));
-
- /* These are obsolete, but old clients may use them */
- sizehints.width = MaxCols(screen) * FontWidth(screen) + sizehints.min_width;
- sizehints.height = MaxRows(screen) * FontHeight(screen) + sizehints.min_height;
-#endif
-
- XSetWMNormalHints(screen->display, XtWindow(SHELL_OF(xw)), &sizehints);
-
- reqWidth = MaxCols(screen) * FontWidth(screen) + min_wide;
- reqHeight = MaxRows(screen) * FontHeight(screen) + min_high;
-
- TRACE(("...requesting screensize chars %dx%d, pixels %dx%d\n",
- MaxRows(screen),
- MaxCols(screen),
- reqHeight, reqWidth));
-
- geomreqresult = XtMakeResizeRequest((Widget) xw, reqWidth, reqHeight,
- &repWidth, &repHeight);
- TRACE(("scrollbar.c XtMakeResizeRequest %dx%d -> %dx%d (status %d)\n",
- reqHeight, reqWidth,
- repHeight, repWidth,
- geomreqresult));
-
- if (geomreqresult == XtGeometryAlmost) {
- TRACE(("...almost, retry screensize %dx%d\n", repHeight, repWidth));
- geomreqresult = XtMakeResizeRequest((Widget) xw, repWidth,
- repHeight, NULL, NULL);
- }
-#if 1 /* ndef nothack */
- /*
- * XtMakeResizeRequest() has the undesirable side-effect of clearing
- * the window manager's hints, even on a failed request. This would
- * presumably be fixed if the shell did its own work.
- */
- if (sizehints.flags
- && repHeight
- && repWidth) {
- sizehints.height = repHeight;
- sizehints.width = repWidth;
- TRACE_HINTS(&sizehints);
- XSetWMNormalHints(screen->display, VShellWindow, &sizehints);
- }
-#endif
- XSync(screen->display, FALSE); /* synchronize */
- if (XtAppPending(app_con))
- xevents();
-
-#ifndef NO_ACTIVE_ICON
- WhichVWin(screen) = saveWin;
-#endif /* NO_ACTIVE_ICON */
-}
-
-static Widget
-CreateScrollBar(XtermWidget xw, int x, int y, int height)
-{
- Widget result;
- Arg args[6];
-
- XtSetArg(args[0], XtNx, x);
- XtSetArg(args[1], XtNy, y);
- XtSetArg(args[2], XtNheight, height);
- XtSetArg(args[3], XtNreverseVideo, xw->misc.re_verse);
- XtSetArg(args[4], XtNorientation, XtorientVertical);
- XtSetArg(args[5], XtNborderWidth, ScrollBarBorder(xw));
-
- result = XtCreateWidget("scrollbar", scrollbarWidgetClass,
- (Widget) xw, args, XtNumber(args));
- XtAddCallback(result, XtNscrollProc, ScrollTextUpDownBy, 0);
- XtAddCallback(result, XtNjumpProc, ScrollTextTo, 0);
- return (result);
-}
-
-void
-ScrollBarReverseVideo(Widget scrollWidget)
-{
- SbInfo *sb = &(term->screen.fullVwin.sb_info);
- Arg args[4];
- Cardinal nargs = XtNumber(args);
-
- /*
- * Remember the scrollbar's original colors.
- */
- if (sb->rv_cached == False) {
- XtSetArg(args[0], XtNbackground, &(sb->bg));
- XtSetArg(args[1], XtNforeground, &(sb->fg));
- XtSetArg(args[2], XtNborderColor, &(sb->bdr));
- XtSetArg(args[3], XtNborderPixmap, &(sb->bdpix));
- XtGetValues(scrollWidget, args, nargs);
- sb->rv_cached = True;
- sb->rv_active = 0;
- }
-
- sb->rv_active = !(sb->rv_active);
- XtSetArg(args[!(sb->rv_active)], XtNbackground, sb->bg);
- XtSetArg(args[(sb->rv_active)], XtNforeground, sb->fg);
- nargs = 2; /* don't set border_pixmap */
- if (sb->bdpix == XtUnspecifiedPixmap) { /* if not pixmap then pixel */
- if (sb->rv_active) { /* keep border visible */
- XtSetArg(args[2], XtNborderColor, args[1].value);
- } else {
- XtSetArg(args[2], XtNborderColor, sb->bdr);
- }
- nargs = 3;
- }
- XtSetValues(scrollWidget, args, nargs);
-}
-
-void
-ScrollBarDrawThumb(Widget scrollWidget)
-{
- TScreen *screen = &term->screen;
- int thumbTop, thumbHeight, totalHeight;
-
- thumbTop = screen->topline + screen->savedlines;
- thumbHeight = MaxRows(screen);
- totalHeight = thumbHeight + screen->savedlines;
-
- XawScrollbarSetThumb(scrollWidget,
- ((float) thumbTop) / totalHeight,
- ((float) thumbHeight) / totalHeight);
-}
-
-void
-ResizeScrollBar(XtermWidget xw)
-{
- TScreen *screen = &(xw->screen);
-
- int height = screen->fullVwin.height + screen->border * 2;
- int width = screen->scrollWidget->core.width;
- int ypos = -ScrollBarBorder(xw);
-#ifdef SCROLLBAR_RIGHT
- int xpos = ((term->misc.useRight)
- ? (screen->fullVwin.fullwidth -
- screen->scrollWidget->core.width -
- BorderWidth(screen->scrollWidget))
- : -ScrollBarBorder(xw));
-#else
- int xpos = -ScrollBarBorder(xw);
-#endif
-
- TRACE(("ResizeScrollBar at %d,%d %dx%d\n", ypos, xpos, height, width));
-
- XtConfigureWidget(
- screen->scrollWidget,
- xpos,
- ypos,
- width,
- height,
- BorderWidth(screen->scrollWidget));
- ScrollBarDrawThumb(screen->scrollWidget);
-}
-
-void
-WindowScroll(TScreen * screen, int top)
-{
- int i, lines;
- int scrolltop, scrollheight, refreshtop;
-
- if (top < -screen->savedlines)
- top = -screen->savedlines;
- else if (top > 0)
- top = 0;
- if ((i = screen->topline - top) == 0) {
- ScrollBarDrawThumb(screen->scrollWidget);
- return;
- }
-
- if (screen->cursor_state)
- HideCursor();
- lines = i > 0 ? i : -i;
- if (lines > MaxRows(screen))
- lines = MaxRows(screen);
- scrollheight = screen->max_row - lines + 1;
- if (i > 0)
- refreshtop = scrolltop = 0;
- else {
- scrolltop = lines;
- refreshtop = scrollheight;
- }
- scrolling_copy_area(screen, scrolltop, scrollheight, -i);
- screen->topline = top;
-
- ScrollSelection(screen, i, True);
-
- XClearArea(
- screen->display,
- VWindow(screen),
- OriginX(screen),
- OriginY(screen) + refreshtop * FontHeight(screen),
- (unsigned) Width(screen),
- (unsigned) lines * FontHeight(screen),
- FALSE);
- ScrnRefresh(screen, refreshtop, 0, lines, MaxCols(screen), False);
-
- ScrollBarDrawThumb(screen->scrollWidget);
-}
-
-#ifdef SCROLLBAR_RIGHT
-/*
- * Adjust the scrollbar position if we're asked to turn on scrollbars for the
- * first time (or after resizing) after the xterm is already running. That
- * makes the window grow after we've initially configured the scrollbar's
- * position. (There must be a better way).
- */
-void
-updateRightScrollbar(XtermWidget xw)
-{
- TScreen *screen = &xw->screen;
-
- if (xw->misc.useRight
- && screen->fullVwin.fullwidth < xw->core.width)
- XtVaSetValues(screen->scrollWidget,
- XtNx, screen->fullVwin.fullwidth - BorderWidth(screen->scrollWidget),
- (XtPointer) 0);
-}
-
-#endif
-void
-ScrollBarOn(XtermWidget xw, int init, int doalloc)
-{
- TScreen *screen = &xw->screen;
- int i, j, k;
-
- if (screen->fullVwin.sb_info.width || IsIcon(screen))
- return;
-
- TRACE(("ScrollBarOn\n"));
- if (init) { /* then create it only */
- if (screen->scrollWidget == 0) {
- /* make it a dummy size and resize later */
- screen->scrollWidget = CreateScrollBar(xw,
- -ScrollBarBorder(xw),
- -ScrollBarBorder(xw),
- 5);
- if (screen->scrollWidget == NULL) {
- Bell(XkbBI_MinorError, 0);
- }
- }
- } else if (!screen->scrollWidget || !XtIsRealized((Widget) term)) {
- Bell(XkbBI_MinorError, 0);
- Bell(XkbBI_MinorError, 0);
- } else {
-
- if (doalloc && screen->allbuf) {
- /* FIXME: this is not integrated well with Allocate */
- if ((screen->allbuf =
- TypeRealloc(ScrnPtr,
- MAX_PTRS * (screen->max_row + 2 + screen->savelines),
- screen->visbuf)) == NULL) {
- SysError(ERROR_SBRALLOC);
- }
- screen->visbuf = &screen->allbuf[MAX_PTRS * screen->savelines];
- memmove((char *) screen->visbuf, (char *) screen->allbuf,
- MAX_PTRS * (screen->max_row + 2) * sizeof(char *));
- for (i = k = 0; i < screen->savelines; i++) {
- k += BUF_HEAD;
- for (j = BUF_HEAD; j < MAX_PTRS; j++) {
- if ((screen->allbuf[k++] =
- TypeCallocN(Char, (unsigned) MaxCols(screen))
- ) == NULL)
- SysError(ERROR_SBRALLOC2);
- }
- }
- }
-
- ResizeScrollBar(xw);
- xtermAddInput(screen->scrollWidget);
- XtRealizeWidget(screen->scrollWidget);
- TRACE_TRANS("scrollbar", screen->scrollWidget);
-
- screen->fullVwin.sb_info.rv_cached = False;
-
- screen->fullVwin.sb_info.width = (screen->scrollWidget->core.width
- + BorderWidth(screen->scrollWidget));
-
- TRACE(("setting scrollbar width %d = %d + %d\n",
- screen->fullVwin.sb_info.width,
- screen->scrollWidget->core.width,
- BorderWidth(screen->scrollWidget)));
-
- ScrollBarDrawThumb(screen->scrollWidget);
- DoResizeScreen(xw);
-
-#ifdef SCROLLBAR_RIGHT
- updateRightScrollbar(term);
-#endif
-
- XtMapWidget(screen->scrollWidget);
- update_scrollbar();
- if (screen->visbuf) {
- XClearWindow(screen->display, XtWindow(term));
- Redraw();
- }
- }
-}
-
-void
-ScrollBarOff(TScreen * screen)
-{
- if (!screen->fullVwin.sb_info.width || IsIcon(screen))
- return;
-
- TRACE(("ScrollBarOff\n"));
- if (XtIsRealized((Widget) term)) {
- XtUnmapWidget(screen->scrollWidget);
- screen->fullVwin.sb_info.width = 0;
- DoResizeScreen(term);
- update_scrollbar();
- if (screen->visbuf) {
- XClearWindow(screen->display, XtWindow(term));
- Redraw();
- }
- } else {
- Bell(XkbBI_MinorError, 0);
- }
-}
-
-/*
- * Toggle the visibility of the scrollbars.
- */
-void
-ToggleScrollBar(XtermWidget w)
-{
- TScreen *screen = &w->screen;
-
- if (IsIcon(screen)) {
- Bell(XkbBI_MinorError, 0);
- } else {
- TRACE(("ToggleScrollBar{{\n"));
- if (screen->fullVwin.sb_info.width) {
- ScrollBarOff(screen);
- } else {
- ScrollBarOn(w, FALSE, FALSE);
- }
- update_scrollbar();
- TRACE(("...ToggleScrollBar}}\n"));
- }
-}
-
-/*ARGSUSED*/
-static void
-ScrollTextTo(
- Widget scrollbarWidget GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- XtPointer call_data)
-{
- float *topPercent = (float *) call_data;
- TScreen *screen = &term->screen;
- int thumbTop; /* relative to first saved line */
- int newTopLine;
-
- /*
- * screen->savedlines : Number of offscreen text lines,
- * MaxRows(screen) : Number of onscreen text lines,
- * screen->topline : -Number of lines above the last screen->max_row+1 lines
- */
-
- thumbTop = (int) (*topPercent * (screen->savedlines + MaxRows(screen)));
- newTopLine = thumbTop - screen->savedlines;
- WindowScroll(screen, newTopLine);
-}
-
-/*ARGSUSED*/
-static void
-ScrollTextUpDownBy(
- Widget scrollbarWidget GCC_UNUSED,
- XtPointer client_data GCC_UNUSED,
- XtPointer call_data)
-{
- long pixels = (long) call_data;
-
- TScreen *screen = &term->screen;
- int rowOnScreen, newTopLine;
-
- rowOnScreen = pixels / FontHeight(screen);
- if (rowOnScreen == 0) {
- if (pixels < 0)
- rowOnScreen = -1;
- else if (pixels > 0)
- rowOnScreen = 1;
- }
- newTopLine = screen->topline + rowOnScreen;
- WindowScroll(screen, newTopLine);
-}
-
-/*
- * assume that b is lower case and allow plural
- */
-static int
-specialcmplowerwiths(char *a, char *b, int *modifier)
-{
- char ca, cb;
-
- *modifier = 0;
- if (!a || !b)
- return 0;
-
- while (1) {
- ca = char2lower(*a);
- cb = *b;
- if (ca != cb || ca == '\0')
- break; /* if not eq else both nul */
- a++, b++;
- }
- if (cb != '\0')
- return 0;
-
- if (ca == 's')
- ca = *++a;
-
- switch (ca) {
- case '+':
- case '-':
- *modifier = (ca == '-' ? -1 : 1) * atoi(a + 1);
- return 1;
-
- case '\0':
- return 1;
-
- default:
- return 0;
- }
-}
-
-static long
-params_to_pixels(TScreen * screen, String * params, Cardinal n)
-{
- int mult = 1;
- char *s;
- int modifier;
-
- switch (n > 2 ? 2 : n) {
- case 2:
- s = params[1];
- if (specialcmplowerwiths(s, "page", &modifier)) {
- mult = (MaxRows(screen) + modifier) * FontHeight(screen);
- } else if (specialcmplowerwiths(s, "halfpage", &modifier)) {
- mult = ((MaxRows(screen) + modifier) * FontHeight(screen)) / 2;
- } else if (specialcmplowerwiths(s, "pixel", &modifier)) {
- mult = 1;
- } else {
- /* else assume that it is Line */
- mult = FontHeight(screen);
- }
- mult *= atoi(params[0]);
- break;
- case 1:
- mult = atoi(params[0]) * FontHeight(screen); /* lines */
- break;
- default:
- mult = screen->scrolllines * FontHeight(screen);
- break;
- }
- return mult;
-}
-
-static long
-AmountToScroll(Widget gw, String * params, Cardinal nparams)
-{
- if (gw != 0) {
- if (IsXtermWidget(gw)) {
- TScreen *screen = &((XtermWidget) gw)->screen;
- if (nparams > 2
- && screen->send_mouse_pos != MOUSE_OFF)
- return 0;
- return params_to_pixels(screen, params, nparams);
- } else {
- /*
- * This may have been the scrollbar widget. Try its parent, which
- * would be the VT100 widget.
- */
- return AmountToScroll(XtParent(gw), params, nparams);
- }
- }
- return 0;
-}
-
-/*ARGSUSED*/
-void
-HandleScrollForward(
- Widget gw,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *nparams)
-{
- long amount;
-
- if ((amount = AmountToScroll(gw, params, *nparams)) != 0) {
- ScrollTextUpDownBy(gw, (XtPointer) 0, (XtPointer) amount);
- }
-}
-
-/*ARGSUSED*/
-void
-HandleScrollBack(
- Widget gw,
- XEvent * event GCC_UNUSED,
- String * params,
- Cardinal *nparams)
-{
- long amount;
-
- if ((amount = -AmountToScroll(gw, params, *nparams)) != 0) {
- ScrollTextUpDownBy(gw, (XtPointer) 0, (XtPointer) amount);
- }
-}
diff --git a/nx-X11/programs/xterm/sinstall.sh b/nx-X11/programs/xterm/sinstall.sh
deleted file mode 100644
index 85bca69e3..000000000
--- a/nx-X11/programs/xterm/sinstall.sh
+++ /dev/null
@@ -1,156 +0,0 @@
-#!/bin/sh
-# $XTermId: sinstall.sh,v 1.13 2005/11/03 13:17:28 tom Exp $
-# $XFree86: xc/programs/xterm/sinstall.sh,v 1.4 2005/11/03 13:17:28 dickey Exp $
-#
-# Install program setuid if the installer is running as root, and if xterm is
-# already installed on the system with setuid privilege. This is a safeguard
-# for ordinary users installing xterm for themselves on systems where the
-# setuid is not needed to access a PTY, but only for things like utmp.
-#
-# Options:
-# u+s, g+s as in chmod
-# -u, -g and -m as in install. If any options are given, $3 is ignored.
-#
-# Parameters:
-# $1 = program to invoke as "install"
-# $2 = program to install
-# $3 = previously-installed program, for reference
-# $4 = final installed-path, if different from reference
-
-trace=:
-trace=echo
-
-OPTS_SUID=
-OPTS_SGID=
-OPTS_MODE=
-OPTS_USR=
-OPTS_GRP=
-
-while test $# != 0
-do
- case $1 in
- -*)
- OPT="$1"
- shift
- if test $# != 0
- then
- case $OPT in
- -u) OPTS_USR="$1"; shift;;
- -g) OPTS_GRP="$1"; shift;;
- -m) OPTS_MODE="$1"; shift;;
- esac
- else
- break
- fi
- ;;
- u+s) shift; OPTS_SUID=4000;;
- g+s) shift; OPTS_SGID=2000;;
- *) break
- ;;
- esac
-done
-
-SINSTALL="$1"
-SRC_PROG="$2"
-REF_PROG="$3"
-DST_PROG="$4"
-
-test -z "$SINSTALL" && SINSTALL=install
-test -z "$SRC_PROG" && SRC_PROG=xterm
-test -z "$REF_PROG" && REF_PROG=/usr/bin/X11/xterm
-test -z "$DST_PROG" && DST_PROG="$REF_PROG"
-
-test -n "$OPTS_SUID" && test -n "$OPTS_USR" && REF_PROG=
-test -n "$OPTS_SGID" && test -n "$OPTS_GRP" && REF_PROG=
-
-echo checking for presumed installation-mode
-
-PROG_SUID=
-PROG_SGID=
-PROG_MODE=
-PROG_USR=
-PROG_GRP=
-
-if test -z "$REF_PROG" ; then
- $trace "... reference program not used"
-elif test -f "$REF_PROG" ; then
- cf_option="-l -L"
- MYTEMP=${TMPDIR-/tmp}/sinstall$$
-
- # Expect listing to have fields like this:
- #-r--r--r-- 1 user group 34293 Jul 18 16:29 pathname
- ls $cf_option $REF_PROG >$MYTEMP
- read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <$MYTEMP
- $trace "... if \"$cf_rest\" is null, try the ls -g option"
- if test -z "$cf_rest" ; then
- cf_option="$cf_option -g"
- ls $cf_option $REF_PROG >$MYTEMP
- read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <$MYTEMP
- fi
- rm -f $MYTEMP
-
- # If we have a pathname, and the date fields look right, assume we've
- # captured the group as well.
- $trace "... if \"$cf_rest\" is null, we do not look for group"
- if test -n "$cf_rest" ; then
- cf_test=`echo "${cf_date2}${cf_date3}" | sed -e 's/[0-9:]//g'`
- $trace "... if we have date in proper columns ($cf_date1 $cf_date2 $cf_date3), \"$cf_test\" is null"
- if test -z "$cf_test" ; then
- PROG_USR=$cf_usr;
- PROG_GRP=$cf_grp;
- fi
- fi
- $trace "... derived user \"$PROG_USR\", group \"$PROG_GRP\" of previously-installed $SRC_PROG"
-
- $trace "... see if mode \"$cf_mode\" has s-bit set"
- case ".$cf_mode" in #(vi
- .???s??s*) #(vi
- PROG_SUID=4000
- PROG_SGID=2000
- ;;
- .???s*) #(vi
- PROG_SUID=4000
- PROG_GRP=
- ;;
- .??????s*)
- PROG_SGID=2000
- PROG_USR=
- ;;
- esac
- PROG_MODE=`echo ".$cf_mode" | sed -e 's/^..//' -e 's/rw./7/g' -e 's/r-./5/g' -e 's/--[sxt]/1/g'`
-fi
-
-# passed-in options override the reference
-test -n "$OPTS_SUID" && PROG_SUID="$OPTS_SUID"
-test -n "$OPTS_SGID" && PROG_SGID="$OPTS_SGID"
-test -n "$OPTS_MODE" && PROG_MODE="$OPTS_MODE"
-test -n "$OPTS_USR" && PROG_USR="$OPTS_USR"
-test -n "$OPTS_GRP" && PROG_GRP="$OPTS_GRP"
-
-# we always need a mode
-test -z "$PROG_MODE" && PROG_MODE=755
-
-if test -n "${PROG_USR}${PROG_GRP}" ; then
- cf_uid=`id | sed -e 's/^[^=]*=//' -e 's/(.*$//'`
- cf_usr=`id | sed -e 's/^[^(]*(//' -e 's/).*$//'`
- cf_grp=`id | sed -e 's/^.* gid=[^(]*(//' -e 's/).*$//'`
- $trace "... installing $SRC_PROG as user \"$cf_usr\", group \"$cf_grp\""
- if test "$cf_uid" != 0 ; then
- PROG_SUID=
- PROG_SGID=
- PROG_USR=""
- PROG_GRP=""
- fi
- test "$PROG_USR" = "$cf_usr" && PROG_USR=""
- test "$PROG_GRP" = "$cf_grp" && PROG_GRP=""
-fi
-
-test -n "${PROG_SUID}${PROG_SGID}" && PROG_MODE=`expr $PROG_MODE % 1000`
-test -n "$PROG_SUID" && PROG_MODE=`expr $PROG_SUID + $PROG_MODE`
-test -n "$PROG_SGID" && PROG_MODE=`expr $PROG_SGID + $PROG_MODE`
-
-test -n "$PROG_USR" && PROG_USR="-o $PROG_USR"
-test -n "$PROG_GRP" && PROG_GRP="-g $PROG_GRP"
-
-echo "$SINSTALL -m $PROG_MODE $PROG_USR $PROG_GRP $SRC_PROG $DST_PROG"
-eval "$SINSTALL -m $PROG_MODE $PROG_USR $PROG_GRP $SRC_PROG $DST_PROG"
diff --git a/nx-X11/programs/xterm/tabs.c b/nx-X11/programs/xterm/tabs.c
deleted file mode 100644
index cfe91a0c3..000000000
--- a/nx-X11/programs/xterm/tabs.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * $XFree86: xc/programs/xterm/tabs.c,v 3.12 2005/04/22 00:21:54 dickey Exp $
- */
-
-/* $Xorg: tabs.c,v 1.3 2000/08/17 19:55:09 cpqbld Exp $ */
-
-/*
- * Copyright 2000-2002,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/* tabs.c */
-
-#include <xterm.h>
-#include <data.h>
-
-/*
- * This file presumes 32bits/word. This is somewhat of a crock, and should
- * be fixed sometime.
- */
-#define TAB_INDEX(n) ((n) >> 5)
-#define TAB_MASK(n) (1 << ((n) & (TAB_BITS_WIDTH-1)))
-
-#define SET_TAB(tabs,n) tabs[TAB_INDEX(n)] |= TAB_MASK(n)
-#define CLR_TAB(tabs,n) tabs[TAB_INDEX(n)] &= ~TAB_MASK(n)
-#define TST_TAB(tabs,n) tabs[TAB_INDEX(n)] & TAB_MASK(n)
-
-/*
- * places tabstops at only every 8 columns
- */
-void
-TabReset(Tabs tabs)
-{
- int i;
-
- for (i = 0; i < TAB_ARRAY_SIZE; ++i)
- tabs[i] = 0;
-
- for (i = 0; i < MAX_TABS; i += 8)
- TabSet(tabs, i);
-}
-
-/*
- * places a tabstop at col
- */
-void
-TabSet(Tabs tabs, int col)
-{
- SET_TAB(tabs, col);
-}
-
-/*
- * clears a tabstop at col
- */
-void
-TabClear(Tabs tabs, int col)
-{
- CLR_TAB(tabs, col);
-}
-
-/*
- * returns the column of the next tabstop
- * (or MAX_TABS - 1 if there are no more).
- * A tabstop at col is ignored.
- */
-static int
-TabNext(TScreen * screen, Tabs tabs, int col)
-{
- if (screen->curses && screen->do_wrap && (term->flags & WRAPAROUND)) {
- xtermIndex(screen, 1);
- set_cur_col(screen, 0);
- col = screen->do_wrap = 0;
- }
- for (++col; col < MAX_TABS; ++col)
- if (TST_TAB(tabs, col))
- return (col);
-
- return (MAX_TABS - 1);
-}
-
-/*
- * returns the column of the previous tabstop
- * (or 0 if there are no more).
- * A tabstop at col is ignored.
- */
-static int
-TabPrev(Tabs tabs, int col)
-{
- for (--col; col >= 0; --col)
- if (TST_TAB(tabs, col))
- return (col);
-
- return (0);
-}
-
-/*
- * Tab to the next stop, returning true if the cursor moved
- */
-Bool
-TabToNextStop(TScreen * screen)
-{
- int saved_column = screen->cur_col;
- int next = TabNext(screen, term->tabs, screen->cur_col);
- int max = CurMaxCol(screen, screen->cur_row);
-
- if (next > max)
- next = max;
- set_cur_col(screen, next);
-
- return (screen->cur_col > saved_column);
-}
-
-/*
- * Tab to the previous stop, returning true if the cursor moved
- */
-Bool
-TabToPrevStop(TScreen * screen)
-{
- int saved_column = screen->cur_col;
-
- set_cur_col(screen, TabPrev(term->tabs, screen->cur_col));
-
- return (screen->cur_col < saved_column);
-}
-
-/*
- * clears all tabs
- */
-void
-TabZonk(Tabs tabs)
-{
- int i;
-
- for (i = 0; i < TAB_ARRAY_SIZE; ++i)
- tabs[i] = 0;
-}
diff --git a/nx-X11/programs/xterm/tektests/aitest.tek b/nx-X11/programs/xterm/tektests/aitest.tek
deleted file mode 100644
index 254c4ec5c..000000000
--- a/nx-X11/programs/xterm/tektests/aitest.tek
+++ /dev/null
@@ -1 +0,0 @@
- 1,`g ],`g?C3`t0@$`z0@,cg-F,cj-F,`m-G,lo-G,lr-G,lu-G,mx-G,m{-G,j~-G-ka-G-kd-G-hg-H-ej-H-fm-H-gp-H-as-I-bv-I-cy-I-m{-J-n~-J.la-K.id-K.kg-K.ej-L.gm-L.ep-M.cs-M.av-N.lx-O.j{-O.h~-P/ga-P/bd-Q/`g-R/oi-R/jl-S/eo-T/dr-U/cu-U/nw-V/jz-W/e}-X0``-Y0lb-Z0he-[0gh-[0ck-\0km-]0gp-^0cs-_0hu.A0dx.B0`{.C0i}.D1e`.E1nb.F1ge.G1`h.I1hj.J1bm.K1ko.L1`r.N1it.O1cw.P1hy.R1b|.S1h~.U2ba.V2gc.W2ne.Y2`h.[2jj.\2ll.^2go._2jq/A2ls/C2cv/D2fx/F2iz/H2l|/J2`/L3ga/M3gc/O3je/Q3ng/S3ni/U3nk/W3bn/Y3cp/[3cr/]3`t0@,cg-F,cd-F,`a-G+d~-G+d{-G+dx-G+eu-G+er-G+jo-G+kl-G+ki-G+hf-H+mc-H+n`-H*o}-H*a{-I*bx-I*cu-I*er-J*fo-J*dl-K*ii-K*kf-K*mc-L*o`-L)m}-M)c{-M)ax-N)du-O)jr-O)ho-P)ol-P)bj-Q)`g-R)gd-R)ja-S(m~-T(l{-U(cy-U(fv-V(js-W(mp-X(`n-Y(dk-Z(hh-[(oe-[(cc-\(k`-]'o}-^'c{-_'hx.A'lu.B'`s.C'ip.D'mm.E'fk.F'oh.G'`f.I'hc.J'ba.K&k~.L&`|.N&iy.O&cw.P&ht.R&br.S&ho.U&bm.V&oj.W&fh.Y&`f.[&jc.\&da.^%o~._%j|/A%dz/C%cx/D%nu/F%is/H%dq/J%`o/L%ol/M%oj/O%jh/Q%ff/S%fd/U%fb/W%b`/Y$c~/[$c|/]$`z0@,ag2Y,ad2Y,`a2Y+d~2Y+d{2Y+dx2Y+gu2X+gr2X+jo2X+il2X+ii2X+hf2X+oc2W+n`2W*m}2W*c{2V*bx2V*au2V*gr2U*fo2U*dl2U*ki2T*if2T*oc2S*m`2S)o}2R)a{2R)cx2Q)du2Q)jr2P)ho2P)ml2O)bj2N)`g2N)ed2M)ja2L(o~2K(l{2K(ay2J(fv2I(js2H(op2G(`n2G(dk2F(hh2E(me2D(ac2C(i`2B'm}2A'a{2@'hx1_'lu1^'`s1]'kp1['om1Z'fk1Y'mh1X'`f1W'hc1V'ba1T&i~1S&`|1R&ky1P&aw1O&ht1N&br1L&ho1K&bm1I&mj1H&fh1F&`f1E&jc1C&da1B%m~1@%j|0^%dz0]%ax0[%nu0Y%ks0W%dq0V%`o0T%ml0R%mj0P%jh0N%ff0L%fd0J%fb0H%b`0F$a~0D$a|0B$`z0@,ag2Y,aj2Y,`m2Y,lo2Y,lr2Y,lu2Y,ox2X,o{2X,j~2X-ia2X-id2X-hg2X-gj2W-fm2W-ep2W-cs2V-bv2V-ay2V-o{2U-n~2U.la2U.kd2T.ig2T.gj2S.em2S.gp2R.as2R.cv2Q.lx2Q.j{2P.h~2P/ea2O/bd2N/`g2N/mi2M/jl2L/go2K/dr2K/au2J/nw2I/jz2H/g}2G0``2G0lb2F0he2E0eh2D0ak2C0im2B0ep2A0as2@0hu1_0dx1^0`{1]0k}1[1g`1Z1nb1Y1ee1X1`h1W1hj1V1bm1T1io1S1`r1R1kt1P1aw1O1hy1N1b|1L1h~1K2ba1I2ec1H2ne1F2`h1E2jj1C2ll1B2eo1@2jq0^2ls0]2av0[2fx0Y2kz0W2l|0V2`0T3ea0R3ec0P3je0N3ng0L3ni0J3nk0H3bn0F3ap0D3ar0B3`t0@,ag*O,aj*O,am*O,bp*O,bs*O,gv*O,dy*P,e|*P,f*P-db*Q-ee*Q-gh*Q-ek*R-gn*R-eq*S-gt*S-fw*T-ez*U-d}*V.g`*V.fc*W.ef*X.ai*Y.al*Z.ao*[.ar*\.au*].mw*^.nz*_.o}+@/h`+B/ic+C/ff+D/gi+E/al+G/co+H/mq+J/ot+K/iw+M/dz+O/b}+P0a`+R0lb+T0ke+U0gh+W0bk+Y0nm+[0jp+]0fs+_0nu,A0jx,C0g{,E0l},H1i`,J1bc,L1oe,N1eh,Q1nj,S1hm,V1bp,X1ir,[1cu,]1jw-@1`z-C1g|-E1o~-H2fa-K2jc-N2bf-Q2fh-T2jj-W2bm-Z2go-]2hq.A2ms.D2bv.G2`x.K2ez.N2k|.Q2i~.U3h`.Y3nb.\3md/@3lf/D3oh/G3oj/K3kl/O3kn/S3gp/W3gr/[3`t0@,ag*O,ad*O,aa*O+b~*O+b{*O+ow*O+lt*P+mq*P+nn*P+lk*Q+mh*Q+oe*Q+mb*R*o*R*m|*S*oy*S*nv*T*ms*U*lp*V*om*V*nj*W*mg*X*ae*Y*ab*Z)a*[)a|*\)ay*])ev*^)fs*_)gp+@)hm+B)ij+C)ng+D)od+E)ab+G(c+H(e|+J(gy+K(iv+M(ls+O(bq+P(an+R(dk+T(kh+U(oe+W(bc+Y(f`+['j}+]'nz+_'fx,A'ju,C'or,E'dp,H'im,J'bk,L'gh,N'me,Q'fc,S'h`,V&b~,X&i{,[&cy,]&jv-@&`t-C&oq-E&go-H&nl-K&jj-N&bh-Q&ne-T&jc-W&ba-Z%o~-]%h|.A%ez.D%bx.G%`v.K%ms.N%kq.Q%io.U%hm.Y%fk.\%ei/@%dg/D%ge/G%gc/K%ka/O$k/S$o}/W$o{/[$`z0@,cg5P,cd5P,ca5P+b~5P+b{5P+mw5P+lt5P+oq5O+nn5O+lk5O+oh5N+me5N+ob5M*m5M*o|5L*my5L*nv5K*os5J*lp5J*mm5I*nj5H*og5G*ce5F*cb5E)c5D)c|5C)cy5B)gv5A)fs5@)ep4_)hm4^)kj4\)ng4[)md4Z)cb4X(a4W(g|4U(ey4T(kv4R(ls4Q(bq4O(cn4M(dk4L(ih4J(me4H(bc4F(f`4D'j}4B'nz4@'fx3^'ju3\'mr3Z'dp3X'km3U'bk3S'eh3Q'oe3N'fc3L'h`3J&b~3G&k{3D&ay3B&jv2_&`t2]&mq2Z&eo2W&nl2T&jj2Q&bh2N&ne2K&jc2H&ba2E%m~2B%h|1_%gz1[%bx1X%`v1U%os1Q%iq1N%ko1J%hm1G%fk1C%gi0_%dg0\%ee0X%ec0T%ia0P$i0L$m}0H$m{0D$`z0@,cg5P,cj5P,cm5P,bp5P,bs5P,ev5P,dy5P,g|5O,f5O-db5O-ge5N-eh5N-gk5M-en5M-gq5L-et5L-fw5K-gz5J-d}5J.e`5I.fc5H.gf5G.ci5F.cl5E.co5D.cr5C.cu5B.ow5A.nz5@.m}4_/h`4^/kc4\/ff4[/ei4Z/cl4X/ao4W/oq4U/mt4T/kw4R/dz4Q/b}4O0c`4M0lb4L0ie4J0eh4H0bk4F0nm4D0jp4B0fs4@0nu3^0jx3\0e{3Z0l}3X1k`3U1bc3S1me3Q1gh3N1nj3L1hm3J1bp3G1kr3D1au3B1jw2_1`z2]1e|2Z1m~2W2fa2T2jc2Q2bf2N2fh2K2jj2H2bm2E2eo2B2hq1_2os1[2bv1X2`x1U2gz1Q2i|1N2k~1J3h`1G3nb1C3od0_3lf0\3mh0X3mj0T3il0P3in0L3ep0H3er0D3`t0@,bg'Z,gj'Z,gm'Z,hp'[,ls'[,nv'[,cz'[,e}'\-f`'\-ic']-kf']-ni'^-am'_-`p(@-gs(@-gv(A-ky(B-k|(C-o(D.lb(F.me(G.bi(H.`l(J.ao(K.gr(L.eu(N.dx(P.g{(Q.f~(S/ea(U/dd(W/dg(Y/dj([/dm(]/ep(_/es)A/cv)C/`y)F/a|)H/o~)J0ma)M0kd)O0jg)R0ej)U0`m)X0oo)Z0kr)]0gu*@0cx*C0oz*F0h}*J1e`*M1bc*P1ke*S1eh*W1oj*Z1em*^1`p+B1kr+E1bu+I1iw+M1`z+Q1d|+U1l~+Y2aa+]2ic,A2ne,E2`h,J2ij,N2ol,R2mn,W2cq,[2fs-@2du-E2hw-J2ky-N2k{-S2k}-X2k-]3ka.B3dc.H3ae.M3cg.R3lh.X3jj.]3dl/C3om/H3jo/N3aq/T3hr/Z3`t0@,bg'Z,oc'Z,o`'Z+h}'[+dz'[+fw'[+ct'[+mp'\+nm'\+ij']+kg']+fd'^+aa'_*`~(@*oz(@*ow(A*kt(B*kq(C*gn(D*dk(F*eh(G*be(H*`b(J)a(K)o{(L)mx(N)lu(P)or(Q)no(S)ml(U)li(W)lf(Y)lc([)l`(](m}(_(mz)A(cx)C(`u)F(ar)H(go)J(el)M(ki)O(jf)R(mc)U(`a)X'g~)Z'k{)]'ox*@'cv*C'gs*F'hp*J'mm*M'bk*P'kh*S'me*W'gc*Z'm`*^&`~+B&k{+E&by+I&iv+M&`t+Q&lq+U&do+Y&am+]&ij,A&fh,E&`f,J&ic,N&ga,R%e,W%c},[%nz-@%lx-E%hv-J%kt-N%kr-S%kp-X%kn-]%kl.B%lj.H%ai.M%cg.R%de.X%jc.]%la/C%g`/H$j~/N$a}/T$h{/Z$`z0@,bg8E,mc8E,m`8E+h}8E+dz8E+fw8D+at8D+op8C+nm8C+kj8B+ig8B+fd8A+ca8@*`~8@*mz7_*mw7^*it7]*iq7\*en7[*dk7Z*gh7X*be7W*`b7V)c7T)m{7S)ox7Q)lu7P)mr7N)no7L)ol7J)li7I)lf7G)lc7E)l`7C(o}7@(oz6^(ax6\(`u6Z(cr6W(eo6U(gl6R(ii6P(jf6M(oc6J(`a6H'e~6E'i{6B'mx5_'av5\'es5Y'hp5V'om5R'bk5O'ih5L'oe5H'ec5E'o`5A&`~4^&i{4Z&by4V&kv4R&`t4O&lq4K&do4G&cm4B&kj3^&fh3Z&`f3V&kc3Q&ea3M%g3H%a}3D%nz2_%lx2[%hv2V%it2Q%ir2L%ip2G%in2B%il1]%lj1X%ci1R%ag1M%de1H%jc1B%la0]%e`0W$j~0Q$c}0K$h{0F$`z0@,bg8E,ej8E,em8E,hp8E,ls8E,nv8D,az8D,g}8C-f`8C-kc8B-if8B-ni8A-cm8@-`p8@-es7_-ev7^-iy7]-i|7\-m7[.lb7Z.oe7X.bi7W.`l7V.co7T.er7S.gu7Q.dx7P.e{7N.f~7L/ga7J/dd7I/dg7G/dj7E/dm7C/gp7@/gs6^/av6\/`y6Z/c|6W/m~6U0oa6R0id6P0jg6M0gj6J0`m6H0mo6E0ir6B0eu5_0ax5\0mz5Y0h}5V1g`5R1bc5O1ie5L1gh5H1mj5E1gm5A1`p4^1ir4Z1bu4V1kw4R1`z4O1d|4K1l~4G2ca4B2kc3^2ne3Z2`h3V2kj3Q2ml3M2on3H2aq3D2fs2_2du2[2hw2V2iy2Q2i{2L2i}2G2i2B3ia1]3dc1X3ce1R3ag1M3lh1H3jj1B3dl0]3mm0W3jo0Q3cq0K3hr0F3`t0@,bg%J,jj%J,om%J,gq%J,it%K,bx%K,d{%L,j~%L-ab%M-de%N-oh%N-cl%O-ko%P-or%Q-`v%S-ey%T-n|%U.``%W.fc%X.hf%Z.oi%[.fm%].jp%_.ms&A.nv&C.bz&E.g}&G/h`&J/nc&L/of&N/bj&Q/dm&T/gp&V/fs&Y/jv&\/jy&_/j|'B/j'E0kb'H0ie'L0jh'O0hk'S0jn'V0eq'Z0dt'^0cw(A0oy(E0o|(I0k(M1gb(Q1`e(V1ng(Z1gj(^1am)C1ko)G1fr)L1mt)Q1dw)V1ly)[1d|*@1h~*E2`a*J2ec*O2ne*T2`h*Z2fj*_2dl+E2jn+J2mp+P2lr+V2ot+[2ov,A2ox,G2oz,M2h|,T2i~,Z3f`-@3cb-F3mc-M3ge-S3ag-Z3hh.A3cj.G3jk.N3nl.U3an.\3io/C3np/J3nq/Q3cs/X3`t0@,bg%J,jc%J,g`%J+o|%J+iy%K+bv%K+lr%L+jo%L+al%M+lh%N+ge%N+cb%O*k~%P*g{%Q*`x%S*mt%T*fq%U*`n%W*nj%X*hg%Z*gd%[*n`%])j}%_)ez&A)fw&C)bt&E)op&G)hm&J)fj&L)gg&N)bd&Q)l`&T(o}&V(nz&Y(jw&\(jt&_(jq'B(jn'E(kk'H(ih'L(je'O(hb'S'j'V'm|'Z'ly'^'cw(A'gt(E'gq(I'kn(M'ok(Q'`i(V'ff(Z'oc(^'aa)C&k~)G&n{)L&ey)Q&lv)V&dt)[&lq*@&ho*E&`m*J&mj*O&fh*T&`f*Z&nc*_&la+E%j+J%e}+P%d{+V%gy+[%gw,A%gu,G%gs,M%hq,T%io,Z%nm-@%cl-F%ej-M%oh-S%ag-Z%he.A%cd.G%jb.N%fa.U%a`.\$i~/C$f}/J$f|/Q$c{/X$`z0@,bg:U,jc:U,e`:U+m|:U+ky:T+bv:T+lr:T+jo:S+cl:R+lh:R+ee:Q+ab:P*i~:O*e{:N*`x:M*ot:K*fq:J*`n:I*nj:G*hg:F*ed:D*n`:B)j}:@)gz9^)fw9\)bt9Z)mp9X)hm9V)fj9S)eg9Q)bd9N)l`9L(m}9I(nz9F(jw9C(jt9@(jq8](jn8Z(ik8W(kh8S(je8P(hb8M'j8I'o|8E'ly8B'aw7^'et7Z'eq7V'in7R'mk7N'`i7J'ff7E'mc7A'ca6\&i~6X&n{6S&gy6N&lv6J&dt6E&lq6@&ho5[&`m5V&oj5P&fh5K&`f5F&nc5@&la4[%j4U%g}4O%d{4J%ey4D%ew3^%eu3X%es3R%hq3L%ko3E%nm2_%al2Y%gj2R%mh2L%cg2E%he1_%ad1X%jb1Q%fa1J%c`1C$k~0\$f}0U$f|0N$a{0G$`z0@,bg:U,jj:U,mm:U,eq:U,kt:T,bx:T,d{:T,j~:S-cb:R-de:R-mh:Q-al:P-io:O-mr:N-`v:M-gy:K-n|:J.``:I.fc:G.hf:F.mi:D.fm:B.jp:@.os9^.nv9\.bz9Z.e}9X/h`9V/nc9S/mf9Q/bj9N/dm9L/ep9I/fs9F/jv9C/jy9@/j|8]/j8Z0ib8W0ke8S0jh8P0hk8M0jn8I0gq8E0dt8B0aw7^0my7Z0m|7V0i7R1eb7N1`e7J1ng7E1ej7A1cm6\1io6X1fr6S1ot6N1dw6J1ly6E1d|6@1h~5[2`a5V2gc5P2ne5K2`h5F2fj5@2dl4[2jn4U2op4O2lr4J2mt4D2mv3^2mx3X2mz3R2h|3L2k~3E3f`2_3ab2Y3oc2R3ee2L3cg2E3hh1_3aj1X3jk1Q3nl1J3cn1C3ko0\3np0U3nq0N3as0G3`t0@,ag#@,mj#@,fn#@,cr#@,lu#A,jy#A,a}#B-l`#C-kd#C-ch#D-ok#E-ho#G-as#H-ov#I-ez#K-l}#M.ka#N.be#P.jh#R.fl#T.oo#V.ds#Y.nv#[.dz#^.o}$@/fa$C/id$F/ah$I/ik$L/nn$O/cr$R/iu$V/ox$Y/a|$]/d%A0kb%D0oe%H0oh%L0`l%Q0ao%U0fr%Y0du%^0fx&B0d{&G0g~&K1ca&P1cd&U1of&Z1ki&_1hl'E1ao'J1oq'O1it'U1cw'Z1ny(@1e|(F1m~(L2`a(R2ic(X2me(^2fh)D2kj)J2il)Q2on)W2mp)^2cs*D2bu*K2aw*R2mx*Y2lz+@2h|+G2e~+N3a`+U3ja+\3cc,C3hd,K3bf,R3hg,Z3nh-A3`j-I3gk-P3jl-X3im.@3hn.H3ho.P3kp.W3gq._3cr/G3or/O3hs/X3`t0@,ag#@,ec#@+n#@+c|#@+dx#A+jt#A+aq#B+dm#C+ki#C+cf#D+gb#E*h~#G*a{#H*gw#I*ms#K*dp#M*kl#N*bi#P*je#R*na#T)g~#V)lz#Y)fw#[)ls#^)gp$@)nl$C)ii$F)af$I)ib$L(f$O(c|$R(ix$V(gu$Y(ar$](ln%A(kk%D(gh%H(ge%L(`b%Q'a%U'n{%Y'lx%^'nu&B'lr&G'oo&K'cm&P'cj&U'gg&Z'kd&_'ha'E&a'J&g|'O&iy'U&cw'Z&ft(@&mq(F&eo(L&`m(R&ij(X&eh(^&ne)D&kc)J&ia)Q%g)W%e})^%c{*D%by*K%aw*R%eu*Y%ds+@%hq+G%mo+N%an+U%jl+\%ck,C%hi,K%bh,R%hf,Z%fe-A%`d-I%ob-P%ja-X%i`.@$h.H$h~.P$k}.W$o|._$c|/G$g{/O$hz/X$`z0@,cg<_,gc<_+n<_+a|<_+dx<_+jt<^+cq<]+dm<]+ii<\+af<[+eb<Z*h~<Y*c{<W*ew<V*os<T*dp<S*il<Q*bi<O*je<M*na<K)e~<I)lz<G)fw<D)ls<B)ep;_)nl;\)ki;Y)cf;V)kb;S(f;P(a|;M(kx;I(eu;F(cr;B(ln:_(ik:[(eh:W(ee:S(`b:O'c:J'n{:F'lx:B'nu9]'lr9Y'mo9T'am9O'aj9J'eg9E'id9@'ha8[&c8U&e|8P&ky8J&aw8E&ft7_&oq7Y&go7S&`m7N&kj7G&gh7A&ne6[&ic6U&ka6N%e6H%g}6A%a{5[%by5T%cw5M%gu5F%ds5@%hq4Y%oo4Q%cn4J%jl4C%ak3\%hi3U%bh3M%hf3F%fe2^%`d2W%mb2O%ja2G%k`1_$h1X$h~1P$i}1H$m|1@$a|0X$e{0P$hz0H$`z0@,cg<_,oj<_,fn<_,ar<_,lu<_,jy<^,c}<]-l`<]-id<\-ah<[-mk<Z-ho<Y-cs<W-mv<V-gz<T-l}<S.ia<Q.be<O.jh<M.fl<K.mo<I.ds<G.nv<D.dz<B.m};_/fa;\/kd;Y/ch;V/kk;S/nn;P/ar;M/ku;I/mx;F/c|;B/d:_0ib:[0me:W0mh:S0`l:O0co:J0fr:F0du:B0fx9]0d{9Y0e~9T1aa9O1ad9J1mf9E1ii9@1hl8[1co8U1mq8P1kt8J1aw8E1ny7_1g|7Y1o~7S2`a7N2kc7G2oe7A2fh6[2ij6U2kl6N2mn6H2op6A2as5[2bu5T2cw5M2ox5F2lz5@2h|4Y2g~4Q3c`4J3ja4C3ac3\3hd3U3bf3M3hg3F3nh2^3`j2W3ek2O3jl2G3km1_3hn1X3ho1P3ip1H3eq1@3ar0X3mr0P3hs0H3`t0@,`g ],dk ],eo ],ks ],iw ^,o{ ^,o _-bd!@-ch!A-`l!C-ep!D-gt!E-fx!G-f|!I.e`!K.fd!M.gh!O.dl!R.gp!T.et!W.ax!Z.`|!].m"@/jc"C/kg"F/ek"J/`o"N/kr"Q/fv"U/bz"Y/k}"]0`a#B0jd#F0`h#K0jk#O0ao#T0er#Y0mu#^0by$C0g|$H0d$N1jb$S1he$Y1oh$^1nk%D1jn%J1jq%P1ft%V1gw%\1ly&C1j|&I1d&P2oa&V2ed&]2lf'D2di'K2hk'R2lm'Y2`p(@2er(G2ft(N2gv(U2ex(]2gz)D2a|)L2l})T2j)[3ea*C3lb*K3dd*S3oe*Z3cg+B3kh+J3oi+R3oj+Z3`l,C3am,K3an,S3nn,[3oo-C3ip-L3bq-T3oq-\3er.E3nr.M3`s.V3is.^3os/F3ms/O3bt/W3`t0@,`g ],lb ]+m~ ]+kz ]+iv ^+gr ^+gn _+bj!@+cf!A+`b!C*m}!D*oy!E*nu!G*nq!I*mm!K*ni!M*oe!O*la!R)o}!T)my!W)av!Z)`r!])en"@)jj"C)kf"F)mb"J(`"N(k{"Q(nw"U(bt"Y(kp"](`m#B(ji#F(`f#K(jb#O'a#T'm{#Y'ex#^'bu$C'oq$H'ln$N'jk$S'hh$Y'ge$^'fb%D&j%J&j|%P&ny%V&ov%\&dt&C&jq&I&ln&P&gl&V&mi&]&dg'D&ld'K&hb'R&d`'Y%`~(@%m{(G%ny(N%ow(U%mu(]%os)D%ar)L%dp)T%jn)[%ml*C%dk*K%li*S%gh*Z%cg+B%ke+J%gd+R%gc+Z%`b,C%aa,K%a`,S$f,[$g~-C$i}-L$b}-T$g|-\$m{.E$f{.M$`{.V$iz.^$gz/F$ez/O$bz/W$`z0@,`g?C,lb?C+o~?B+iz?B+kv?A+er?A+en?@+bj>_+af>^+`b>]*o}>[*my>Z*nu>X*nq>V*om>T*ni>R*me>P*la>N)m}>K)oy>H)cv>E)`r>C)gn=_)jj=\)if=Y)ob=U(`=R(i{=N(nw=J(bt=F(ip=B(`m<^(ji<Y(`f<U(jb<P'c<K'o{<F'gx<A'bu;\'mq;W'ln;R'jk;L'hh;G'ee;A'fb:[&j:U&j|:O&ny:I&mv:C&dt9]&jq9V&ln9P&el9I&oi9B&dg8\&ld8U&hb8N&d`8G%`~8@%o{7X%ny7Q%mw7J%ou7B%ms6[%cr6S%dp6L%jn6D%ol5\%dk5U%li5M%eh5E%ag4]%ie4U%ed4M%ec4E%`b3]%ca3T%c`3L$f3D$e~2\$k}2S$b}2K$e|2C$o{1Z$f{1R$`{1J$kz1A$ez0Y$gz0P$bz0H$`z0@,`g?C,dk?C,go?B,is?B,kw?A,m{?A,m?@-bd>_-ah>^-`l>]-gp>[-et>Z-fx>X-f|>V.g`>T.fd>R.eh>P.dl>N.ep>K.gt>H.cx>E.`|>C.o=_/jc=\/ig=Y/gk=U/`o=R/ir=N/fv=J/bz=F/i}=B0`a<^0jd<Y0`h<U0jk<P0co<K0gr<F0ou<A0by;\0e|;W0d;R1jb;L1he;G1mh;A1nk:[1jn:U1jq:O1ft:I1ew:C1ly9]1j|9V1d9P2ma9I2gd9B2lf8\2di8U2hk8N2lm8G2`p8@2gr7X2ft7Q2ev7J2gx7B2ez6[2c|6S2l}6L2j6D3ga5\3lb5U3dd5M3me5E3ag4]3ih4U3mi4M3mj4E3`l3]3cm3T3cn3L3nn3D3mo2\3kp2S3bq2K3mq2C3gr1Z3nr1R3`s1J3ks1A3ms0Y3os0P3bt0H3`t0@.l}0@.o}/Z.m}/U.l}/P.o}/J.m}/E.l}/@.b~.Z.a~.U.`~.P.c~.J.a~.E.d~.@.g~-Z.f~-U.h~-P.k~-J.n~-E.m~-@.l~,[.c,U.b,P.e,K.h,F.h,A.o+[.n+V/a`+Q/e`+L/h`+G/h`+B/o`*\/ca*W/fa*R/ja*M/na*H/na*C/bb)^/fb)Y/jb)T/bc)O/fc)J/kc)E/oc)@/`d(\/dd(W/md(R/be(M/ge(H/le(D/af'_/ff'Z/of'U/ag'Q/jg'L/lg'H/eh'C/oh&^/ai&Z/ki&U/bj&Q/hj&M/bk&H/ik&D/`l&@/kl%[/bm%W/im%S/`n%O/kn%J/co%F/oo%B/gp$^/op$Z/kq$V/cr$R/lr$O/is$K/at$G/nt$C/hu$@/ev#\/cw#X/mw#U/kx#Q/ey#N/cz#J/b{#G/m{#D/h|#A/k}"])dp0@)gp/Z)ep/U)dp/P)gp/J)ep/E)dp/@)bp.Z)ap.U)`p.P)cp.J)ap.E)lo.@)oo-Z)no-U)ho-P)ko-J)fo-E)eo-@)do,[)co,U)bo,P)mn,K)hn,F)hn,A)gn+[)fn+V)an+Q)mm+L)hm+G)hm+B)gm*\)cm*W)nl*R)jl*M)fl*H)fl*C)bl)^)nk)Y)jk)T)bk)O)nj)J)kj)E)gj)@)`j(\)li(W)ei(R)bi(M)oh(H)dh(D)ah'_)ng'Z)gg'U)ag'Q)jf'L)df'H)me'C)ge&^)ae&Z)kd&U)bd&Q)hc&M)bc&H)ib&D)`b&@)ka%[)ba%W)i`%S)``%O(k%J(c%F(g~%B(o}$^(g}$Z(k|$V(c|$R(d{$O(iz$K(az$G(fy$C(hx$@(mw#\(cw#X(ev#U(ku#Q(mt#N(ct#J(bs#G(er#D(hq#A(kp"])dp0@)ep0E)gp0J)dp0P)ep0U)gp0Z)dp1@)bp1E)cp1J)`p1P)ap1U)cp1Z)lo2@)mo2E)no2J)ho2P)io2U)fo2Z)go2_)do3E)ao3J)bo3O)on3T)hn3Z)hn3_)en4D)fn4I)cn4N)om4S)hm4Y)hm4^)em5C)am5H)nl5M)jl5R)fl5W)fl5\)bl6A)nk6F)jk6K)bk6P)nj6U)ij6Z)ej6_)`j7D)li7I)gi7M)bi7R)mh7W)dh7\)ch8@)ng8E)eg8J)cg8N)jf8S)df8X)oe8\)ee9A)ce9E)id9J)bd9N)hc9S)bc9W)kb9[)`b:@)ia:D)ba:H)k`:L)``:Q(i:U(a:Y(e~:](m};A(e};E(i|;I(a|;M(d{;Q(kz;T(cz;X(fy;\(hx<@(ow<C(aw<G(gv<J(iu<N(ot<Q(at<U(bs<X(gr<[(hq<_(ip=B.l}0@.m}0E.o}0J.l}0P.m}0U.o}0Z.l}1@.b~1E.c~1J.`~1P.a~1U.c~1Z.d~2@.e~2E.f~2J.h~2P.i~2U.n~2Z.o~2_.l~3E.a3J.b3O.g3T.h3Z.h3_.m4D.n4I/c`4N/g`4S/h`4Y/h`4^/m`5C/aa5H/fa5M/ja5R/na5W/na5\/bb6A/fb6F/jb6K/bc6P/fc6U/ic6Z/mc6_/`d7D/dd7I/od7M/be7R/ee7W/le7\/cf8@/ff8E/mf8J/cg8N/jg8S/lg8X/gh8\/mh9A/ci9E/ii9J/bj9N/hj9S/bk9W/kk9[/`l:@/il:D/bm:H/km:L/`n:Q/in:U/ao:Y/mo:]/ep;A/mp;E/iq;I/ar;M/lr;Q/ks;T/ct;X/nt;\/hu<@/gv<C/aw<G/ow<J/ix<N/gy<Q/az<U/b{<X/o{<[/h|<_/i}=B1hn0@1jn/\1hn/Y1kn/U1mn/R1on/N1mn/K1ln/H1nn/D1`o/A1co.]1ao.Z1go.V1fo.S1ho.P1ko.L1mo.I1lo.F1bp.B1ep-_1gp-[1jp-X1mp-U1lp-R1bq-N1eq-K1hq-H1oq-D1br-A1er,^1ir,[1lr,X1cs,T1fs,Q1js,N1at,K1et,H1it,E1lt,B1du+_1hu+\1`v+Y1dv+V1lv+S1aw+P1iw+M1mw+J1fx+G1ox+D1cy+A1hy*_1az*\1jz*Y1`{*W1i{*T1b|*Q1h|*O1b}*L1h}*J1b~*G1h~*E1f*B1l*@2g`)]2ba)[2ia)Y2`b)W2ob)T2fc)R2bd)P2md)N2ee)L2af)J2mf)H2ig)F2fh)D2oh)B2hi)A2ej(_2bk(]2cl([2ml(Z2km(X2en(W2co(U2bp(T2mp(S2hq(R2kr(P2fs(O2ft(N&h0@&j/\&h/Y&k/U&e/R&g/N&e/K&d/H&f/D&`/A&c.]&a.Z&o~.V&n~.S&h~.P&k~.L&e~.I&d~.F&b~.B&m}-_&o}-[&j}-X&e}-U&d}-R&b}-N&m|-K&h|-H&g|-D&b|-A&m{,^&i{,[&d{,X&c{,T&nz,Q&jz,N&az,K&my,H&iy,E&dy,B&lx+_&hx+\&`x+Y&lw+V&dw+S&aw+P&iv+M&ev+J&nu+G&gu+D&cu+A&ht*_&at*\&js*Y&`s*W&ir*T&br*Q&hq*O&bq*L&hp*J&bp*G&ho*E&nn*B&dn*@&om)]&bm)[&il)Y&`l)W&gk)T&nj)R&bj)P&ei)N&mh)L&ah)J&eg)H&if)F&ne)D&ge)B&hd)A&mc(_&bc(]&cb([&ea(Z&k`(X%m(W%c(U%b~(T%e}(S%h|(R%k{(P%nz(O%ny(N&h0@&j0C&h0G&i0J&g0M&e0Q&g0T&d0X&f0[&`0_&a1B&c1E&m~1I&n~1L&h~1P&i~1S&g~1V&d~1Z&b~1]&o}2@&m}2D&j}2G&g}2J&d}2N&b}2Q&o|2T&h|2X&e|2[&b|2^&o{3A&k{3D&d{3H&a{3K&nz3N&jz3Q&cz3T&oy3W&ky3Z&dy3^&lx4A&hx4D&`x4G&lw4J&dw4M&cw4O&kv4R&gv4U&nu4X&eu4[&au4^&ht5A&ct5C&js5F&`s5I&kr5K&br5N&hq5Q&bq5S&hp5V&bp5X&ho5[&nn5]&dn6@&mm6B&bm6D&kl6F&`l6I&ek6K&nj6M&bj6O&gi6Q&oh6S&ch6U&gg6W&kf6Y&ne6[&ee6]&hd6_&oc7@&bc7B&ab7D&ga7E&i`7G%o7H%a7J%b~7K%g}7L%h|7N%i{7O%nz7P%ny7Q1hn0@1jn0C1hn0G1in0J1on0M1mn0Q1on0T1ln0X1nn0[1`o0_1ao1B1co1E1eo1I1fo1L1ho1P1io1S1oo1V1lo1Z1bp1]1gp2@1ep2D1jp2G1op2J1lp2N1bq2Q1gq2T1hq2X1mq2[1br2^1gr3A1kr3D1lr3H1as3K1fs3N1js3Q1ct3T1gt3W1kt3Z1lt3^1du4A1hu4D1`v4G1dv4J1lv4M1cw4O1kw4R1ow4U1fx4X1mx4[1ay4^1hy5A1cz5C1jz5F1`{5I1k{5K1b|5N1h|5Q1b}5S1h}5V1b~5X1h~5[1f5]1l6@2e`6B2ba6D2ka6F2`b6I2mb6K2fc6M2bd6O2od6Q2ge6S2cf6U2of6W2kg6Y2fh6[2mh6]2hi6_2gj7@2bk7B2al7D2ol7E2im7G2gn7H2ao7J2bp7K2op7L2hq7N2ir7O2fs7P2ft7Q,`l0E0,`l(E903`y/ZN$`f/ZS2lt.U2mt.Q2nt.M2nt.I2et.E2os.@2`s-\2br-W2bq-R2bp-M2jn-H2fm-C2nk,^2bj,Y2fh,T2jf,O2jd,J2jb,E2k`,@1e~+\1b|+W1ly+S1kw+N1bu+J1jr+F1bp+B1km*^1ak*[1kh*W1me*T1ec*Q1i`*N0m}*K0b{*H0dx*F0ku*C0nr*A0bp)_0fm)]0kj)[0mg)Z0ce)X0fb)W/j)V/b})U/gz)T/hw)T/bu)S/er)S/lo)S/gm)R/lj)S/dh)S/ne)S/gc)S/ba)T.i~)U.d|)V.`z)W.lw)X.lu)Y.ms)Z.kq)[.io)].om)^.mk*@.`j*B.dh*D.kf*E.ce*G.kc*I.`b*L.i`*N-f*P-c~*R-m|*U-j{*W-hz*Z-ky*\-mx*_-lw+B-bw+D-ev+G-lu+J-du+M-ot+O-ft+R-bt+U-ms+X-ms+[-is+^-is,A-ms,D-ls,G-`t,J-dt,M-lt,P-du,S-lu,V-dv,Y-`w,\-lw,_-lw,_-hx-B-hy-E-gz-G-g{-J-k|-M-j}-P-n~-S.a`-V.ha-Y.ob-[.fd-^.me.A.hg.D.ci.F.mj.I.kl.K.en.N.gp.P.ar.S.ct.U.`v.X.bx.Z.gz.\.g|.^.h~/A/l`/C/ac/E/ee/G/hg/I/li/K/gl/L/jn/N/`q/P/ks/Q/av/S/jx/T/`{/V/i}/W0b`/X0nb/Y0fe/Z0ng/[0jj/\0am/]0oo/]0fr/^0`u/_0iw/_0gz/_0o|/_0h0@1`b0@1hd0@1gg/_1ni/_1dl/_1nn/^1dq/^1ms/]1av/\1jx/[1mz/Z1a}/Y1g/W2ja/V2hc/U2ie/S2jg/Q2ki/O2gk/M2nl/K2en/I2lo/G2bq/D2cr/A2cs.^2os.[2ft.X2lt.U2nt.Q `` @*ir;P*or;M*mr;K*or;H*hr;F*fr;C*cr;@*hq:^*aq:[*jp:X*oo:U*co:R*dn:P*dm:M*el:J*ek:G*ej:D*ai:A*mg9^*if9[*`e9X*hc9U*`b9R*k`9N)n~9K)b}9H)e{9E)hy9B)ow8^)nu8[)ms8X)lq8U)oo8Q)mm8N)hk8K)fi8G)ag8D)od8@)ib7])d`7Z(n}7V(h{7S(by7O(lv7L(ft7H(lq7E(fo7A(ll6^(aj6Z(kg6V(ae6S(gb6O'l6L'f}6H'hz6E'ax6A'gu5]'mr5Z'bp5V'hm5S'nj5O'dh5L'je5H'`c5E'j`5A&l}4^&f{4Z&lx4W&gv4S&ns4P&eq4M&ln4J&kl4F&cj4C&og4@&he3^&ec3[&ba3X%`3V%o|3S%b{3Q%cy3O%dw3N%ku3L%ns3K%dr3K%bq3J%oo3J%in3K%jm3L%ml3N%bl3P%ek3S%nj3V%ij3Z%gj3^%fj4C%gj4H%ij4N%ak4T%fk4Z%`l5A%`l5A%ol5G%jm5N%jn5U%ko5\%hp6D%br6K%gs6R%mt6Z%kv7A%dx7I%bz7P%c|7W%`~7_&a`8F&eb8M&id8T&ag8[&hi9B&bl9H&ln9O&iq9U&ft9[&aw:A&ly:G&o|:L&l:R'mb:W'me:\'`i;A'cl;E'do;J'er;N'iu;R'lx;V'n{;Y'c;\(db<@(ge<B(jh<E(hk<H(in<J(mq<L(mt<N(hw<P(iz<Q(k}<R)g`<S)cc<T)ne<U)hh<V)ak<V)jm<V)cp<V)jr<V)mt<V)`w<V)by<U)g{<T)d}<T)d<S*`a<R*lb<Q*kd<O*af<N*kg<L*mh<K*gj<I*dk<H*il<F*im<D*in<B*eo<@*ap;^*lp;\*gq;Y*nq;W*ar;U*kr;R*ir;P*or;M `` @ \ No newline at end of file
diff --git a/nx-X11/programs/xterm/tektests/dmerc.tek b/nx-X11/programs/xterm/tektests/dmerc.tek
deleted file mode 100644
index 515895c54..000000000
--- a/nx-X11/programs/xterm/tektests/dmerc.tek
+++ /dev/null
@@ -1 +0,0 @@
-*hi?H*hi T*hl [-60-``?H-`` T-`c [-40.d?H.d T/db [-200lv?H0lv T0ly [ 02dn?H2dn T2dq [204hm?H4hm T4hp [407`d?H7`d T6`p [60*hi?H7`d?H7`g>Y180*ji=Q7bd=Q7bg=B200*hi;[7`d;[7`g;L220*ji:D7bd:D7bg9U240*hi8N7`d8N7`g7_260*ki6W7cd6W7cg6H280*ii5A7ad5A7ag4R300*ki3J7cd3J7cg2[320*ii1T7ad1T7ag1E340*hi/^7`d/^7`g/O 0*ki.G7cd.G7cg-X20*ii,Q7ad,Q7ag,B40*ki*Z7cd*Z7cg*K60*ii)D7ad)D7ag(U80*hi'N7`d'N7`g&_100*ji%W7bd%W7bg%H120*hi$A7`d$A7`g#R140*ji"J7bd"J7bg![160*hi T7`d T7`g E1800d.BP0f|4@0fh1PP+200f|4@1ga4@1kf4@1kk4@1lp4A1cv4@1g{4@2j`4@2me4@2dk4@2kp3_2av3_2k{3^3da3^3bg3]3nl3\3or3[3ox3Z3n~3Y4ae3X4hk3W4ar3U4ox3S4k3Q5jf3O5mm3M5cu3J5o|3G6jd3D6kl3@6cu2\6i}2X6i})K6cu)F6kl)B6hd(_5o|([5`u(Y5mm(V5hf(T4h(R4lx(P4ar(N4kk(L4ae(K3l~(J3lx(I3lr(H3ll(G3ag(F3fa(E2h{(E2av(D2hp(D2fk(C2me(C2h`(C1g{(B1cv(B1op(B1kk(B1kf(B1da(C0e|(C0bw(C0gr(C0am(D0bh(D0lb(E/o}(E/ix(F/ds(G/gn(G/ci(H/kc(I.g~(J.cy(K.hs(M.bn(N.kh(O.mb(Q-d}(S-kw(T-kq(V-hk(Y-ie([,k(],ey)@,mr)C,jl)F,cf)I+f)M+jx)Q+lq)V+oj)Z+lc*@*o|*E*`v*L*co*R*co1P*bv1W*o|1]+nc2C+oj2H+oq2M+hx2R+d2V,cf2Y,il2],mr3@,ey3C,h3F-je3H-kk3J-kq3L-kw3N-f}3P.mb3R.kh3S.an3U.js3V.cy3W.d~3Y/hc3Z/ci3Z/gn3[/fs3\/ix3]/l}3^0nb3^0`h3_0bm3_0gr3_0aw4@0f|4@/gt7US0js>O/j;_S-100js>O0jx>N0m}>M1`c>L1gh>J1im>I1lr>H1bx>F1d}>E2nb>C2ch>A2im>@2bs=^2kx=\2c~=Z3kc=X3gi=V3bo=T3`u=R3b{=O4`a=M4ag=J4em=G4ls=D4cz=@5l`<]5eg<Y5`n<U5bu<P5c|<K6bc<F6gj<@6jq;Z6ox;S7b`;L7``3_6ox3W6hq3Q6gj3J6`c3E5c|2_5`u2[5bn2V5eg2R5m`2N4cz2J4ms2G4em2D4ag2A4ba1^3c{1[3bu1Y3`o1W3gi1T3kc1R2c~1P2kx1N2`s1M2im1K2bh1I2lb1H1f}1F1`x1E1nr1C1im1B1gh1@1bc0_0m}0^0hx0]0hs0\0gn0Z0bi0Y0nc0X/j~0W/ey0V/ms0U/en0T/mh0S/ec0R.m}0Q.ax0P.fr0O.jl0N.jf0M.j`0L-fz0K-ns0J-jm0I-of0H-c`0G,ox0F,kq0E,bj0D,fb0C+fz0B+ar0A+di0@+c`/^*gv/]*el/\*fl [*ev Z+`` Y+gi W+br V+ez U,eb T,cj?F,kq?E,ox?D-c`?C-of?B-km?A-ls?A-dz?@.h`>_.hf>^.hl>].dr>\.ax>[.m}>Z/ec>Y/mh>X/en>W/ms>V/dy>U/h~>T0lc>S0ci>Q0gn>P0js>O+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+ge*C+mr*B,kb*K,ih*F,mv*Q,iy*M,e|*U-gd*T-fd*_-gk+C-js*_-cr+G-lr+K.fe+Y.`o+Z.gw,K/l`,R/at,U/o,^0oe,^0jh,]0ln,R0lp,I0ln,E0mr,D0ot+\0dr+X0er+S0or+X0dv+Z0gv+T0ft+P0az+U0i{+U0h+R1be+N1ef+F1oi*^1om*Z1gm*X1`p*X1ds*T1`t*V1at*O1mr*Q1es*K1es*D1dv*A1dx)_1dv)_1ot)\1fo)[1do)Z1gv)Z1kw)\1ay)\1fx)Y1nt)P1kl)M1kp)G1gq)E+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+ob*E+ad*@+ma)^+ge)Z+lh)V+em)S+ls)R+fy)P,hb)P,hc)T,hg)T,jg)P,hj)R,ki)V,`v)X,lx)X,hy)V-m`)U-dd)V-ii)U-lm)X-j|)Y.be)[.jm)[.nu)].l{)_/ic)^/jh)Y/dl)R/jp)N/aq)M/c})I0fe)P0if)O0ek)O0`n)R0ho)R0ap)O0et)O0lx)R0oz)G0b~)H1f`)J1cg)K1hl)I1hn)G1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1ap)D1hn)A1hn(_1nt(Y2b`([2cb(X2ob(T2bb(L2hj(P2dn(P2ip(Q2ir(Q2kr(I2kp(G2ll(G2bj']2jj'Y2fn'W2kr'T2lz'T2n}'U3fb'U3jg'Y3fi'[3nj'[3oj'\3cj'\3jk'_3lj(C3kk(C3oj(E3gi(E3fi(H3gi(K3nj(J3bm(H3am(M3ln(N3fl(N3am(Q3am(U3oj(V3gl(X3ei(\3kd(\3eb(^2n})A2l})C3ia)D3lj)A3ep)@3et)B3hw)G3gy)I3k{)K3k|)M3f})L3e})O3a)O4n`)L4n`)N4gb)M4gc)M4ae)M4oe)M4gh)K4ig)M4ol)M4gh)M4me)O4dc)P4hg)R4ak)S4ko)T4ko)X4dp)Z4gp)T4br)Y4cr)Z4bt)[4bs)]4bs)]4`s)_4lt)_4at)^4nu)]4iz)^4f~*H5ba*H5bd*N5cb*M5ab*Q5ca*M4g~*I4e{*K4e~*O5b`*W5ca*V5bd*[5cf*Z5bf*Y5bh*Y5bf*W5bb*W5`b*V5`c*V5`d*P5`e*P5ah*M5ch*K5bk*N5ak*M5cj*K5`l*I5bm*J5cl*K5`n*P5`p*P5aq*M5bp*H5an*D5`l*A5bf)[5bk)_5ao*B5`q*E5`q*G5du*I5fu*N5et*Q5eu*U5gt*V5gt*Z5ly+C5o{+E5e+F6ib+F6oc+G6od+C6nc+A6`f+C6bf*_6kb*\6kb*X6cf*\6fg*_6eh+B6nk*Y6dn*Z6lp*V6br*W6jt*W6ou*T6dx*V7ea*O7`d*P7lc*M7gc*L7cc*L7kb*L7gb*L7na*L7fa*L7ba*L7i`*L7e`*L6m*L6e*L6`*L6h~*L6d~*L6l}*L6g}*K6nz*H6m~*B6e*B6i*B7b`*B7j`*B7ba*B7ja*B7bb*B7jb*B7bc*B7gc*B7oc*B7bd)L7nc)L7jc)L7fc)L7bc)L7bc)L7nb)L7fb)N7fb)L7ga)I7c`)I6o~)G6ky)K6kt)M6io)M6gk)I6nj)H6dh)E6he)G6ha)G5b~)H5d{)G5ly)G5cz)E5oz)E5my)D5ly)C5m{)B5b}(_5b~)@6n`(]6ed(^6dk(_6hl(V6`m(V6ho(P6np(N6fs(J6kt(E6gs(A6iy(B6e~(@6f}']6m~']6m~'Z7a`'\7ad'\7bd!_7lb!_7mb"B7mb"B7ac"B7ac"B7ec"B7ec"B7jc"B7nc"B7nc"B7bd"B7cd"C7oc"C7nc"C7jc"C7fc"C7fc"C7bc"C7mb"C7mb"C7ib"C7eb"C7eb"C7ab"C7la"C7da"C6k"B6h}"C6`|"E6a|"F6e}"G6n~"I6j}"I6`}"K6e~"L6a}"L6e{"M6d{"N6b}"M6`"O6g}"N6i|"O6g~"R6iy"P6`v"P6es"M6fp"I6io"I6gn"I6`n"H6eo"G6km"C6`l"C6gk"@6gj"@6fk"D6`m"F6kl"F6fk"F6jl"I6cn"J6il"K6kn"L6ko"N6ip"O6op"N6as"R6et"T6iu"T6iu"S6kv"V6iy"Z6a{"Z6k|"\6k}"\6e"Z7l`"\7j`"\7ad"^7cd#A7nc#A7jc#A7jc#A7ec#A7ec#A7ac#A7lb#A7lb#A7hb#A7hb#A7ja#A7ha#C6e#@6a#B6o#C7l`#D7da#F7ic#H7kc#I7oc#I7oc#I7`d#J7cd#V7jc#Y7bd#[7ob#_7`d$C7kb$C7da$C7lb$B7c`$A6j$D6c}$G6i{$I6b{$J6j|$J6e}$I6n~$I6e}$J6d}$L6b{$L6mz$N6n{$N6f$M7``$L7e`$M6n~$N6b|$O6iz$O6hz$Q6i|$R6j}$R6m~$S6k~$S6c}$R6f}$R6bw$S6dx$R6ou$R6du$R6ds$T6mp$W6ap$V6mm$U6jm$V6bo$W6ko$X6dn$Z6il$Z6lk$Y6nj$Y6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6ja$U5j}$W5o|$X5g}$Y5n}$Y5i~$X5g$X5h$X6ba$W6ia$X6jb$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6mf$V6`d$U6nf$U6lf$S6ke$R6be$S6`c$S6hb$U6bb$U6fc$W6fg$W6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6kn$W6ml$W6al$X6fm$Y6on$X6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6ho$R6cm$R6gi$T6di$V6lj$V6`n$T6`p$S6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6gs$P6cq$P6aq$Q6ko$P6io$Q6hp$R6ds$R6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6kt$O6aw$Q6nw$P6ex$Q6bz$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6hv$N6mu$M6ht$N6es$M6`q$N6cp$O6ht$P6it$O6mu$O6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6ky"\6dz#A6b{#@6nz"_6`|"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6`y"]6bx"\6ix"[6ev"[6ew"Z6ou"X6gs"X6at"Z6hr"Z6iu"]6mu"]6nu"^6`w#@6aw"^6dx"_6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6mg!^6fi!_6hh"A6oj!_6mj!^6`h!]6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6`f!X6ke!V6jd!W6gb!T6fc!U6od!Y6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6kc!T6`a!R6kc!R6`d!T6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P5e~!O6a`!O6c`!P6k`!P6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6d`!N5e!M5g!M6c`!N5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5a~!G5i}!H5a~!I5f~!H5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5k|!F5i|!E5b}!D5g}!F5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5g!C5k|!A5k|!C5f!D5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5fz [5k{ ]5h| ]5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5`{ Z5hz Z5j{ [5m{ [5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5e{ X5dz Y5m{ Y5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5fz?E5oy?F5my?G5oz?E5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5n{?@5k{>]5mz>_5j{?@5c|?@7ad!V7bd!V7nc!V7oc!V7lc!W7lc!W7ic!W7jc!W7jc!W7gc!W7gc!W7dc!X7ec!X7ac!X7bc!X7cc!X7cc!X7lb!Y7mb!Y7mb!Y7`d![6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6gy$L6kz$L6gz$J6`y$K6cy$I6lv$K6`v$R6ex$L6mv$O6jy$N5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5my+D5iv+B5er+@5an*\5an*^5ak*\5aj*\5`j+E5`i+E5ai+F5`j+G5bj+H5cg+E5`g+G5bj+J5cf+K5cf+M5ak+O5cm+M5`k+K5co+M5`o+K5er+M5fs+H5gr+E5dt+G5du+E5ds+C5lz+G5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5af*O5ae*Q5be*R5`d*T5`f*V5af*Q5`h*P2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2bt(Y2nt(Y2gv(\2iu(^2hr)G2bq)H2no)L2gn)I2`o)T2aq)O2mq)O2nw)A2nw([2ct(V2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2ff)H2ie)K2je)N2ff)N2ng)L2ng)J2bg)H2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2kh*G2og*I2ei*K2aj*K2jj*J2cj*G2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2cj)R2kh)T2hh)Z2cg)Z2ih)\2aj)\2jj)]2ei)^2di*C2gk*C2gn)\2gn)V2ll)X2hj)X2kj)V2gk)R1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1go)E1em)B1ck)C1jj)A1hl)A1nk(_1fm(]1kl(\1mm(\1gm(Z1mm(Z1in(Z1lr(V1gq(V1or(T1ct(T1`t(T1hu(T1jy(N1ez(O1n{(N1`{(N1l{(I1`}(G1h|(E2ic'^2nb']2ic'\2fd'[2nb'Y2lb'T2ke'K2ih'I2kh'G2kj'C2dk'C2`l'A2bo&]2fs&_2`t&_2dv&_2g|&X2d|&X2l}&X2j~&U2f&U2g&T3``&T3ka&T3ha&T3eb&S3cc&R3id&Q3af&O3nj&L3fp&J3bq&H3oq&G3oq&E3dl&G3ig&K3kd&K3`c&N3ha&N3ja&N2i~&O2o}&P2mz&Q2h{&R2ey&S2ow&R2lw&R2c}&K3o`&K3cc&I3eb&I3fe&D3de&G3bf&F3hg&G3gi&E3gi&E3ik&B3am&B3lr%_3av%^3dx%]3oz%X3lz%V3d}%V4o`%R4gb%R4ec%Q4oe%P4`e%R4hf%R4kg%R4ig%Q4kf%P4dh%N4ak%M4im%M4jn%L4fp%L4`r%N4iw%K4e}%M5`d%N5ae%M5bf%N5bi%L5`m%L5bm%N5bk%N5ak%O5ai%O5cj%P5ao%Q5ap%O5er%O5bq%N5bq%L5dr%N5du%N5eu%M5es%M5ds%L5du%L5jw%J5gu%I5jv%F5iw%I5kw%C5oy%C5m{%B5f%D5d%A6lc$_6jb$]6af$\6fg$]6gg$Z6eh$Z6bm$]6nj$Y5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5an%M5bp%H5bq%F5fr%F5hv%A5hw%A5iw%B5fu%F5et%I5fr%J5ap%M5bn%N4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4gp&K4fq&J4br&J4cs&I4ct&I4bs&J4ct&K4fq&L4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4jz)N4ky)I4hy)E4kz)E4f|)H4g|)I4e{)K4f})L4d~)P4d})P4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4mt)B4bt)A4as)@4ar(\4as(\4bs([4ct(Z4mt(\4bt(]4nt(_4lv)A4`v)C4lv)C4cw)E5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5lf(G5ch(G5hg(G5cg(E5gg(C5ci(E5bj(F5`k(I5al(J5cn(J5jn(L5cm(K5cn(L5am(M5hn(N5mo(M5`p(N5kn(P5ao(Q5bo(R5bl(S5kk(T5`l(V5bj(W5kf(V5ce(X5be(_5bd(_5bd)A5bb)A5`b)C4d~)C4f~)A5`a)@5`a(_4e~(_4ky(^4kx(\4g|(\4f|([4g{(Z4e{(Z4f~([5b`([5ba(Z5ia(Y5kb(V5ab(U5ca(U4h(T5h`(T4g}(R4lv(S4at(Q4`t(P4nv(N4d{(P4e|(O5aa(Q4h}(N5a`(O5jc(P5hc(R5hb(R5ad(S5ed(U5gc(V5ed(X5ke(V5ae(U5ef(U5if(S5`f(R5ff(O5eg(M5ii(O5ei(M5bh(K5cg(I5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5hv'X5k{'W5b}'V6e`'U6kb'T6dc'T6ld'T6be'U6jf'U6af'S6bg'S6gg'T6fh'S6gg'R6ge'R6af'P6ia'O6da'R6f`'P6a`'Q5j{'S5i}'T5b{'U5oy'T5mz'V5oy'V5hx'V5gw'V5gu'V6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6`a'K5k'K6i`'L5d~'M5e'N5j}'N5e}'M5a{'M5gz'O5jy'P5mw'P5`v'R5ot'Q5lt'S5mu'S5ow'R5nw'Q5kx'Q5mz'P5h}'P5e{'O5d}'O5f~'O6d`'O6ma'M6cb'J7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7jb&W7fa&W7o`&U7hb&V7nb&T7a`&Q6c&P6`~&N6e}&R6i~&R6o&T6f&U6n&X7f`&X7g`&[6m&\7m`&]2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2bl"W2cl"X2ao"W2`o"V2dn"V2im"U2bl"U2ik"V2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2jp"S2bq"S2`q"T2kp"T2mo"U2mo"T2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2jq"R2hq"T2lq"T2br"R2mq"R2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2lr"O2nr"P2fr"P2`r"O2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2lt"K2ht"L2ct"K2gt"J/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/kg?C/`g?C/jg?B/eg?A/de?@/fd?@/ed?A/ed?C/me?D/bg?D/hg?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-li?C-ji?A-kg>_-`h>_-ch>]-`l>]-ol>[-dj>\-mj>[-cl>Z-om>Y-fp>Y-`q>X-as>V-cs>T-op>U-oo>U-el>X-nl>Y-ok>Y-ek>Y-lh>Z-bg>Y-ad>Y-eb>W-ba>W-o`>X,c>Z,h{>Z,hz>[,f|>]-`a?@-fa>_-ac?@-mb?A-`d?B-nd?A-de?C-eg?D-ah?D-bi?D,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,j{>W,k{>V,c}>V,c|>T,g}>T,j}>S,l~>T,c~>R,g|>R,iz>P,mx>P,gt>L,fr>I,mp>G,io>G,lm>F,il>D,kj>B,lh>C,mh>E,ji>E,fh>F,nh>G,bh>J,hi>N,en>P,mo>P,gq>Q,fr>T,cs>T,ds>T,`t>T,mv>V,cy>W,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,kw<R,iz<R,m|<R,h}<Q,n|<O,o|<M,m{<M,j}<I,k}<G,jz<H,mx<I,`v<J,`t<K,bs<K,gr<L,nr<M,dt<N,ft<O,`v<P,cv<P,nu<Q,et<Q,dt<R,bv<R,kw<Q,mx<R,kw<R-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-ej<V-bi<U-jh<T-jh<R-oe<P-od<K-fd<K-fd<L-bc<L-kc<J-af<I-de<H-af<G-ag<H-dh<H-`g<F-cf<F-dd<D-ne;_-fe;^-ag;\-ej;Y-gk;Y-in;X-co;U-gp;V-js;U-jp;T-jp;Q-ar;R-oq;S-ns;S-fu;T-jv;T-ov;T-iw;U-ey;T-hw;T-mu;S-iu;R-ft;P-mr;P-ar;O-gq;O-cq;O-kq;M-br;M-fr;N-`t;N-ku;L-dx;K-hx;L-dy;L-gy;J-bz;J-jz;I-`z;I-az;H-f{;G-jz;F-lz;F-k|;C-e|;C-d|:_-j|:^-n{:[-lz:[-`z:X-az:T-jw:O-lu:N-nt:M-eu:K-gu:I-gu:E-et:C-ms:C-cs:B-bs:A-`r:A-bq9_-cq9[-cq9[-ks9X-ks9W-lv9W-mv9X-ow9X-oz9X-l{9Y-j}9X-k~9W.`e9V.li9T.dm9R.hm9R.`m9S.on9R.nn9S.em9T.gn9T.ip9S.js9R.gu9R.fv9S.ew9S.fy9S.ez9T.ax9T.jy9U.bz9U.g{9V.l}9[.n}9[.l}9\.h~:@.j~:A.d:B.n:D/ba:G/eb:I/ic:I/dd:K/of:J/aj:L/`j:M/`g:N/aj:N/ki:P/dj:P/im:R/jn:R/fo:S/hn:T/mp:T/`q:U/jp:U/hp:W/hr:W/oq:W/bq:X/kp:Y/co:Y/gn:Z/ml:Z/mm:[/in:[/jm:^/co:^/ko:]/dr:_/dr;A/fs;@/ht;A/`u;B/bv;B/lv;F/ow;F/cx;D/ox;D/fy;F/ex;G/ex;H/fw;H/dw;J/cv;M/dv;N/gv;O/ju;O/jt;P/lt;Q/cv;P/ev;Q/au;R/bt;Q/is;R/bs;Q/cs;O/bq;O/cq;O/kp;O/mo;O/fn;N/fn;N/ak;R/gk;R/di;U/di;V/ah;X/fg;X/bf;Z/lf;]/jm;_/dn;_/lq;_/kv;_/jv<@/cy<@/dz<B/ey<B/lv<C/jv<C/gu<C/ls<E/er<E/`r<E/bo<E/`o<F/jo<F/lo<G/in<I/kl<I/ej<J/di<J/ch<J/ah<K/`f<L/dd<L/eb<L/ca<N.d<S.b|<T.jy<T.fx<U.dy<V.my<V.ax<W.ax<X.jw<X.nu<X.dt<Z.ht<[.`r<].ip<].gp<].bo<^.kn<^.hj<_.of<_.dd=@.mb<_.ea<_-j<^-f~<^-az<\-ey<[-kx<[-kw<Z-js<X-aq<X-ml<V-gl<V-ej<V+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+h|5^+j}5]+m|5[+o}5Z+i}5Z+b5Y+g{5X+jz5X+i|5Y+hz5Y+d|5Z+`|5[+k{5[+h|5^.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.ln3Y.oo3Y.hp3^.hs3_.nx4@.o}4A/l`4B/cd4C/kg4C/ei4E/il4D/il4E/ek4E/gk4E/nl4F/js4E/jv4C/kv4B/ju4B/gu4A/ls4B/mr4A/fs4@/or3_/oq4@/ip4@/io4@/`o4A/ln4@/mm3_/kn3^/hm3^/nl3^/dl3^/am3]/el3\/dj3]/aj3\/el3[/hk3Y/ej3V/mh3V/bh3U/jd3U/gc3U/ja3U/i`3V.o3U.`3V.f}3U.f}3T.m{3T.k{3S.iy3S.fx3S.ev3T.ds3T.nq3T.oo3U.do3W.in3W.ln3Y1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1dq6X1lo6X1lo6V1kn6V1gm6V1il6V1`i6W1ag6W1df6Y1bg6Z1bi6\1jj6\1il6[1lm6[1ho6Z1gp6Y1eq6Y1dq6X3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3mk2V3ck2U3dh2W3df2Y3nd2Y3la2[2j~2\2n{2^2hw3@2aw3A2es3C2ir3D2ir3C2bo3C2`l3D2cl3D2di3G2cf3H2cc3I2ia3J2hb3K2ab3K2n`3K2a`3M1e3M1h~3O1n}3O1h|3R1lz3S1dz3T1ky3T1ox3T1fx3S1jw3R1iw3T1ot3U1ht3W1jt3X1ku3[1ku3\1`v3^1mu4@1ev4A1bv4C1`w4G1nw4G1bx4I1kw4J1ms4I1ms4J1es4J1lr4I1kp4H1om4F1fm4E1`k4E1ci4C1`f4C1kd4A1bc4A1cb3_0m3^0k3\0o}3[0j{3W0lv3S0hs3P0`s3O0`r3O0hq3N0gp3K0ko3K0en3K0ch3F0`d3H0e`3H/c{3I/b{3K/`z3L/nx3K/aq3K/kp3K/kp3K/jo3K/io3L/in3L/jm3K/im3L/hi3M/ki3K/eg3G/ff3C/be3B.n2\.n2[.l~2[.c~2[.i|2].k{2\.e{2].jx2].ix2^.kw2].jv2^.ft2].et2^.nr2].bp2Z.go2X.im2V.fm2W.mf2V.fc2S-g}2O-c|2M-my2L-fu2F-fu2D-bt2D-bt2A-js2A-hs2@-os1^-hs1^-ks1[-os1Z-or1W-or1U-nq1T-mq1R-er1R-nr1P-os1O-fs1O-eu1O-`x1N-by1O-m{1O.k`1L.`b1L.fh1H.ll1F.bu1D.dv1D.iw1D.gx1C.k|1B.j1A/fd0^/kh0]/ai0^/lj0^/gl0^/dr1@/du1C/mw1C/hz1C/j}1A/g~1A/j~1B0l`1B0nc1@0jf0_0cg1@0fg0_0hi0^0ij0]0al0\0hn0Y0`o0Y0bo0X0hq0V0lr0V0fs0U0nt0U0lu0W0ov0V0gw0V0ew0X0fx0W0jx0X0n{0X0l|0Y0l|0Y0c~0X0h0Y1m`0X1ja0X1cb0W1la0W1kb0U1cc0U1dc0T1`c0T1cc0P1dd0P1id0M1kf0L1ch0H1lg0C1gf0@1he/^1md/\1fd/Z1ac/Y1ac/X1kd/T1jd/P1ib/J1dd/E1dg/B1ci.^1ii._1oj.\1ok.\1gl.Z1gm.Z1lm.Z1fq.Y1ir.W1ht.W1eu.V1au.U1hu.U1lu.T1cw.S1kw.R1`y.Q1b{.P1i|.Q1m}.Q1a.O2a`.O2bc.Q2be.Q2hh.S2il.R2bo.R2kq.P2`q.P2kr.O2ou.Q2`w.R2ay.S2fy.R2c}.U3k`.V3ja.W3gb.X3df.[3ig.^3ni/A3im/D3jp/C3et/E3ax/H3fy/K3h~/N3j/O3b~/Q3c~/T3e~/V3b~/Z3a/[4f`/]4da0@4ac0H4lb0I4dc0K4ob0L4nc0O4lb0Q4hc0Q4`c0S4bc0U4be0X4ce0Y4jb0Z4nc0[4oc0\4m`0[3a0[3n}0\3o|0\3o|0\3k{0[3cz0Y3gx0Z3gy0[3hx0]3jw0]3bw0^3jv1@3dv1B3mt1G3`q1I3`p1M3bm1Q3go1T3mq1S3is1S3bu1T3iu1W3av1\3at1]3mr2@3or2B3nq2C3nq2E3go2N3no2O3lo2Q3np2Q3`q2S3gp2U3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3el2V3gi2X3ag2X3hc2[3cf2[3kf2[3hk2]3af2\3cf2]2i}3C2h|3C2lz3D2dy3F2mu3H2`t3H2jr3H2er3H2do3J2bo3J2`o3K2kp3L2ih3O2lf3Q2gh3Q2nb3R2ab3R1b}3S1g|3S1iy3T1jy3X1k{3Z1h{3]1c|3^1f}4@1c}4A1n~4C2ma4L2cd4L2ke4R2je4S2ef4T2jg4T2ah4W2nj4X2ek4[2en4[2bp4\2jo4\2do4]2ku5@2hu5@2lx4^2`z4Y2i}4W3i`4W2dz4Q2hz4M2`z4K2jz4J2b{4I2b}4J2m4J3j`4I2h~4H2e|4H3a`4F3na4F3ie4A3ie4@3`k4A3fl4@3el4B3mm4C3lm4D3dm4D3im4C3dl4E3ml4F3`h4I3bf4I3ha4S3hc4W3hc4W3`c4Y2g4Y2d}5E2l}5V2i|5S2g|5U2bz5U2kv5Z2kv5[2aw5]2`u5Z2dp5_2mq6B2mt6C2mo6D2gn6C2lb6F1c}6H1kw6J1`o6O1nl6Q1jm6R1io6S1cp6U1kp6T1lr6V1mr6W1iw6W1jz6X1c{6W1d6Y2jb6Y2`b6Z2lb6X2dc6X2oc6[2ic6\2kd6]2ge6]2ki7B2dl7E2dn7I2gp7J2mq7J2mr7K2js7S2dv7V2gv7V2oo7Y2en7[2cn7\2ng7_2mb7^2kb8A2fe8E2kf8E2kb8G1k~8H1a|8I1i}8I1cy8J1by8J1dw8K1`r8J1`r8K1ao8I1fl8I1om8I1hg8O1dd8O0k8Q0f8Q0fz8W0gz8Y0a8W1ed8W1mi8R1bj8P1fj8O1gp8M1dp8L1g{8M1o{8P1gy8P1dy8S1dt8W1ds8X1os8X1cr8[1`n8[1nu9F1dz9H2ca9F2ki8^2bm8]2ms9F2hr9I2iq9H2nn9I2oo9J2oo9J2`q9J2hu9U2dv9V2ku9V2jv9W2bv9X2ov9X2dw9[2ey9Z2nz9_2e{9_2o{9_2m{:@2o{:@2d|:A2k|:@2k|:A2c}:A2o}:A2o}:B2j~:B2o~:B2f~:C2b:C3b`:C3n`:C3ba:D3bb:C3kb:D3ha:D3ab:E3kb:D3kc:E3cf:F3fg:G3lf:H3jf:G3gf:G3cg:H3cg:H3fh:H3di:I3ni:H3cj:H3ei:I3ek:I3nj:H3al:J3kl:H3em:H3gm:G3ol:F3ml:F3lm:F3fm:E3jm:E3km:F3hn:H3co:I3ep:I3mq:G3br:F3or:F3er:G3dr:H3nq:I3nr:I3is:H3at:H3lt:G3ez:E3h{:C3k|:B3h:E4g`:D4j`:E4b`:E4f`:F4ga:F4dc:J4hb:K4fc:K4kd:K4ae:J4od:H4bf:F4hd:D4kc:C4ic:B4id:A4le:B4kg9^4ij9^4oj:A4hm:D4cq:G4ko:J4nl:H4ni:I4em:P4em:P4el:S4ag:Q4gf:U4ec:W4mb:U3o:V3kz:U3iz:V3`{:]3n:^3m:^4hc:^4mh:[4`k:V4am:Y4kp:^4or:^4fs:^4nu;A4m;E4dw;C4hz;N5bd;U5en;[5gt;\5iw;\5c};^6cc;^6dg;[6gg;W6bd;S6eh;T6de;R6hh;R6ji;M6`s;V6ky;[6e{;\6oz;_6e|;_6g~;_7a`<B6l{<K7b`<J6e<K7a`<L7aa<L7a`<O7ca<Q7g`<Q7m`<S7jb<T7ha<X7ea<W7ga<X7na<X7ca<Z7b`<Z6j<\6d<Y6n}<Y6j<\6e~<^6k<_6o~=A6k=A6d<_7ca=C7aa=A7ad=B7nc=T7dc=T7ob=S7ab=S7ka=R7aa=R7h`=R6n=Q6d=Q6o~=P6a~=P6k}=O6a}=O6h|=O6n{=N6d{=N6dx=J6mx=I6gx=H6ev=I6iz=F6mj=E6d`=G5hz=H5dx=I5c|=L5`~=N6fb=Q6hd=Q6ch=T6oh=T6ih=V6ji=W6ml=V6ip=X6ko=Y6jp=Z6es=Z6bs=Y6nu=Z6ix=Z6fy=X6mx=X6hy=W7bd=[7`c=_7ec=_7ic=_7jc=_7oc=_7cd=_3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3fy;B3jx;B3fw;C3`x;D3nw;D3bw;D3`w;D3ov;C3ov;D3iu;E3ls;D3gr;C3ar;C3jp;C3cq;B3jp;B3kp;B3jo;A3hp;B3cq;A3gq;A3dq;B3nq;A3aq;A3fp;A3ip;@3jp;@3gq;@3as;@3nt;A3jt;A3eu;A3iv;@3dv;@3gu;@3it;@3kt:_3ht:_3it:_3bw:^3fy;B3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ky;G3ix;H3ey;I3cz;I3gz;J3my;L3jx;L3lv;K3ow;I3ow;H3gu;G3`u;G3iw;F3dx;G3ky;G3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3ey;B3jz;B3kz;C3m};G3l~;K3f~;O3l~;P3l;P4lb;R4hd;R4be;S4hc;S4ob;R4kb;S4`c;T4cd;V4df;X4bg;Y4hk;[4il;[4fm;Z4dn;[4hp;[4jp;[4`r;\4cr;\4hp;]4fq;]4lp;^4er;^4oq;_4es<@4jr;^4lr;_4ho;_4bm<@4jk<@4lh;_4hg;_4bh;^4jf;]4bc;]4n`;\3m~;]3m};\3`};\3f|;Z3i};Z3i~;[3n~;X3d};Z3m};Y3c{;W3n|;W3l|;W3`{;V3c{;R3m{;R3i|;R3h|;R3b{;Q3iz;R3ey;R3jw;O3fy;M3b{;N3i{;N3f{;M3n{;L3oy;F3jz;F3cz;E3gy;E3ey;B4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ot<C4ew;_4bv;]4cw;\4aw;\4nu;[4fu;\4du;]4et;^4os;]4gt;\4nr;[4ds;[4mt;[4av;Z4fw;Z4ix;\4gy;[4my;\4`y;^4`z;_4j{;^4m{;_4g;_5aa;_5bb<@4h}<D4o{<G4j}<I4k{<H4hy<J4hx<G4dx<F4hw<E4mu<D4ot<C2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2os:F2bv:G2gv:G2fx:H2n{:I2i|:I2c}:I2o}:H2g}:G2a}:G2cy:D2gw:D2mu:E2au:F2os:F0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jr;U0jp;Z0mp;[0no;]0hl<F0kl<F0cl<F0oi<J0bh<J0ah<K0lf<P0je<P0nd<P0md<N0lc<N0mc<N0kb<N0aa<Q/j<Q/d<R/a~<R/a~<T/m|<T/e|<V/n{<U/mz<X/iz<W/`z<X/hy<W/cz<U/ez<V/e{<Q/g{<P/d~<M0aa<K0db<G0ma<F0eb<E0ba<E0k`<D0a`<C/a<D/e~<D/h}<B/o};]0h`;[0``;X0``;X0b`;T0ba;U0`b;V0ob;V0mb;X0fc;W0dc;X0`d;W0kd;W0ke;V0kf;V0bh;U0ji;Y0li;R0hj;P0mj;M0bl;L0gl;J0jm;I0ok;H0kk;G0`m;G0cm;G0mm;G0lm;G0ao;F0ao;E0ko;E0ko;F0eo;G0fp;H0cp;I0mp;J0lp;F0lp;F0dr;E0bs;C0lr;C0et;A0ks;B0mt;D0`v;F0lu;G0`u;I0cu;J0es;K0gr;J0ip;K0ln;L0`p;L0bp;L0on;L0`o;M0`n;M0km;N0om;N0no;P0np;Q0jq;S0ar;S0mr;U0jr;U0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0lz9L0a~9M0e9Q1mb9T1ec9T1id9W1oc9V1be9Y1de9X1bf9X1me9Y1ch9Z1gh9Z1oi9[1kh9[1oi9\1gh9]1bh9^1jg9^1lf9^1`g9_1df9_1hf:@1je:B1be:B1bd9_1cc:@1lb9^1o`9^0n9]0m|9_0f|9^0gy:A0`y9_0bv9]0lu9^0fr9Z0gr9Z0aq9[0cm9Y0jk9U0cm9U0mm9T0im9S0kn9Q0im9P0nm9O0am9N0ln9N0ln9J0is9I0ks9G0lv9G0lx9F0b|9G0e{9I0lz9L0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0of8]0ch8\0eg8\0og8Z0lf8[0of8Z0al8T0am8T0aq8P0jq8P0ls8O0lt8O0bv8M0mv8M0gw8K0c{8J0m|8H0g}8G0j~8G1n`8E1n`8D1hd8A1le8A1bf8A1`e8D1be8G1nb8I1ab8I0l~8N0d~8N0b|8P0n|8P0l|8Q0nv8X0jv8W0bv8X0au8W0dt8Z0`q8[0ip8]0cn8^0dm8^0ll8^0il8^0of8]0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0og:D0ai:E0gj:E0cn:D0`o:E0no:F0jo:G0en:G0om:F0cl:H0fj:H0li:J0mi:J0dj:J0oi:K0lj:L0ak:L0mk:L0hk:L0em:J0en:K0hq:N0kt:L0kt:L0bt:M0ot:M0eu:M0lt:I0bs:G0as:F0kt:E0et:E0nu:D0ov:D0`x:F0ax:E0fw:M0gw:N0cx:P0lz:S0d{:R0by:O0iy:I0fz:H0dz:G0lx:F0fy:E0dw:D0cu:C0os:B0jq:B0mo:B0no:A0fo:A0eo:A0gm:A0om:B0bl:C0gh:B0kg:C0og:D0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0jf8^0oe9D0id9E0bd9J0de9K0he9L0nd9L0mc9P0gc9P0`c9S0kc9S0bd9T0`d9Q0jc9P0gc9P0oa9Q0ab9T0ia9U0m`9U0o`9V0aa9W0``9X/b9W0m`9U/b9U0d`9R0b`9P0ma9E0ha9E0nb8_0oc8_0dd8]0jf8^1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1mg:U1ii:U1jj:V1dn:U1co:U1jq:S1ko:S1ko:R1on:R1go:Q1mm:Q1bn:P1cm:O1bm:O1kl:N1ll:O1gn:N1kn:M1nm:M1`n:M1cm:L1jl:J1kj:I1cj:I1ji:J1mk:K1lk:L1`k:L1ak:K1lk:M1dk:M1oj:M1`l:N1lj:P1ni:O1bi:O1bh:O1jf:R1fg:R1dg:S1`g:S1kf:R1me:S1`g:T1lg:T1mh:S1nj:T1hi:U1di:U1mg:U1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1by:O1jz:M1b{:M1b|:M1a}:K1e|:K1nz:K1b|:J1a}:I1`|:H1m}:F1i~:G1d:F1e~:F1f~:E1k:D2ob:C2ad:D2mb:E2gc:E2aj:F2gj:G2di:J2bj:J2di:K2jh:J2nf:J2hf:K2me:K2fc:J2gb:H2`b:I2n`:H1i}:I1n|:J1l}:K1m}:L1c}:L1o|:L1j|:M1f}:M1b|:O1d}:P1j|:P1m{:P1b|:O1e|:N1m{:N1`y:P1by:O1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ay:P1ow:P1mv:R1iu:Q1ev:P1gt:P1mt:Q1ns:Q1fr:Q1br:R1bs:R1jr:R1lr:S1at:R1iu:R1ku:R1cu:R1cu:S1jw:S1gy:R1ay:P1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1`r:K1er:L1jt:L1et:N1dt:N1lp:M1fp:M1ho:M1dq:K1`r:K1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1bv:O1nr:O1br:N1fp:M1bv:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1nq:O1br:O1gr:O1er:P1`r:Q1dq:Q1`q:O1iq:O1nq:O1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1gm9\1ln9_1jo9_1lo:@1`q:A1mq:A1ar:B1or:B1bs:C1ks:C1av:C1ks:B1`p9_1cp9^1gm9\1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1cs:I1mv:J1bw:I1hw:J1fv:K1hv:L1av:L1hv:M1du:M1dt:L1cs:I1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1n{:E1`x:H1gy:H1cy:H1m{:G1n{:E4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4dh4C4ij4C4an4D4nn4E4kn4F4lo4F4oo4D4ix3_4i{3_4d~3]4f3^5nb3_5mf4F5gh4H5dg4L5bh4L5mf4N5ib4M5ia4L5cb4J5ka4I4o4H4j~4I4e~4I4o~4F4o}4F4e}4H4g|4H4bz4I4by4I4by4J4ax4K4fw4M4gu4L4`s4M4hq4N4ep4N4fp4O4op4O4lo4P4gp4Q4cq4Q4gq4R4`s4Q4fu4P4ct4M4hq4N4jn4M4jm4M4jm4O4gm4O4il4O4bl4P4ok4N4fk4N4gk4O4li4Q4jf4P4`c4Q4na4K4jb4H4jd4F4je4C4dh4C3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3gp2U3bn2X3fn2Z3`z3@3m{2_3l3A3l3A4`a2_4ab3@4lb3@4ja2]4jb2\4f`2Y3m2W4nb2Q4o`2P4f`2N4jb2K4oa2I4eb2J4ab2H4dc2K4`c2H4kc2H4je2G4hf2H4ig2E4ci2E4ah2F4fh2G4bi2F4ni2G4cj2F4ek2F4`l2G4ok2D4hm2E4ao2F4eo2M4io2L4dp2O4gp2M4fq2O4lq2M4hs2J4kv2H5kb2N5af2Q5`f2T5dd2V5ed2Y5ee2Y5ia2V5n`2Y4n~2X4f~2[4m~2]5``2^5h`3A5ia3A5ma2]5ce2Y5ae2]5bi3H5bg3D5ce3E5ia3C5la3B5n`3A4kw3N4is3O4cq3J4hq3I4nq3E4eu2]4bu2X4op2R4`r2M4fq2O4fq2K4kq2J4`q2J4`q2J4eq2I4cq2H4`p2H4ao2F4hm2E4mn2E4oo2F4oo2D4ip2G4eq2B4op2@4bq2@4ep1_4jp1^4`n2@4on1^4nn1^4im1_4hm1_4en1^4fn1]4fm1^4hm1]4jn1]4ko1[4jm1[4nj1]4ij1]4ek1\4oj1Z4bj1\4mi1[4dh1^4hh1^4ji1]4hi1\4ej1]4ei1^4bi1_4dg2@4cg2@4if2@4ah1_4dh1^4fg1_4ie1_4lf1^4ff1\4`f1]4ge1\4od1]4dd1]4kd1\4od1\4ge1[4kb1\4jb1\4ga1\4kb1[4ib1[4aa1[4ka1Z4gb1Z4dc1Z4fb1Y4lb1Y4nc1X4dd1Y4ef1W4eg1X4bg1X4mg1Y4if1\4lf1\4`g1]4ah1[4mg1W4kn1R4`t1S4kz1J4iz1I4d}1G4g}1G4a~1G4f1F5b`1F4k1C5cb1B5ib1C5gc1B5na0_5c`0_4f0_4i0_4b}0_4e|1@4c{1B4hw1D4jv1D4ot1F4ot1F4jt1G4nt1I4kt1I4`t1J4is1I4mr1I4`p1O4an1P4ll1P4hm1O4kn1N4co1L4eo1L4en1K4lm1K4kl1J4gl1J4fl1K4jk1L4oi1L4ni1L4li1L4`i1K4`h1K4gf1H4jf1H4ig1H4jf1B4dg1B4fg1A4ag1A4lf1A4fg1@4hf1@4cf0_4ae1@4`e1A4kc1C4kc1D4ib1E4`b1G4lb1G4jc1G4od1F4ig1H4gi1H4ih1I4lh1I4di1J4mm1H4km1G4jn1F4co1F4`p1F4ho1E4gp1D4mp1E4hp1D4ar1C4br1A4jx0Z4f|0Y4o}0U4o{0S4mz0Q4nx0N4kz0H4hx0F4jt0F4gr0C4fq0@4nk/]4cj/]4fi/]4og/\4de/\4hd/Z4gb/Y4ob/X4fb/V4db/V4ia/Q4ja/P4`b/P4b`/O3l/O4g`/M4fb/L4kb/L4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4`d/K4bc/H4hc/G4hc/G4fc/E4eh/F4`h/E4ei/D4jk/D4bm/E4fq/F4gu/E4mu/F4ou/E4iv/F4kv/E4dw/F4bw/E4bw/E4nw/E4kx/D4k{/H4nz/J4oz/M4`{/N4cz/Q4iz/T4ly/V4ez/V4iy/X4hz/Z4ay/Z5eb/[5ob/Z5mc/[5ce/Z5af/Y5jg/X5ch/X5ii/W5bj/W5oi/V5jk/T5`k/R5dl/Q5jl/R5bm/Q5dm/R5dm/Q5en/Q5lo/V5gn/V5on/W5ln/Z5ds/Y5cs/Z5kr/Z5lq/[5hq/^5br/^5dr/^5as/^5os/_5ct0@5`u0B5`x0B5kx0B5jz0G5a{0G5f}0I5e~0J6ga0J6aa0K6na0L6gb0L6ec0N6fc0N6jc0P6ad0Q6od0S6fe0U6cf0U6cf0U6hg0U6fh0V6hi0U6ll0U6hm0T6dn0T6ho0T6ho0T6hs0T6au0U6fu0W6dw0Y6fw0Y6gx0Z6ew0Z6jv0Z6ju0Z6`v0Z6dr0Z6br0Z6`r0[6kq0[6`q0[6mp0Z6on0Y6an0Y6`n0X6fm0X6hm0Z6el0[6`k0[6ak0Y6em0X6ck0W6bk0X6bj0Z6`j0X6hi0Y6di0Y6ch0X6lg0\6ag0\6af0[6af0]6dh1@6dh1A6bi1B6if1C6kg1B6mf1B6kf1B6mf1C6oe1D6bg1I6gh1J6li1P6ng1P6lg1S6`i1T6mj1U6bn1W6hs1W6hw1Y6ex1[6cv1\6gu1\6at1^6iu2@6f{2@6nz1_6`}1^6l1^7la2E7l`2J7mb2J7ad2M7`c2P7ad2P7bd2O7`d1^7mc1]7`d1]7`d1R7`d1R7lc1R7lc1R7lc1R7lc1R7kc1Q7kc1Q7kc1Q7gc1Q7gc1Q7gc1Q7gc1Q7cc1Q7cc1Q7cc1Q7cc1Q7ob1Q7ob1Q7ob1Q7da1S7d`1Q6l~1O6j}1N6`~1N6i|1L6`|1L6j{1K6jr1J6ap1I6fp1H6dp1F6ko1E6no1E6fn1D6hm1E6dl1D6nl1C6el1B6hl1A6hm1A6mm1A6mo1@6io1@6ap0_6ko0^6`o0]6jo0\6ao0]6dn0]6fn0[6om0[6mm0\6en0\6jl0\6el0\6jk0\6ok0\6kk0]6mj0^6ni0]6fj0\6dj0\6ki0[6mh0Z6`i0^6jh0^6fi0^6jj0_6dj1@6lj1@6gk0^6ok0_6fl0_6ll0_6om0_6am1@6im1@6io1@6mo1@6cq0_6jp1@6iq1@6oq1@6cv0^6bv0^6j{0\6l~0\7ja0Z7b`0Z6o~0Y6m~0X6az0T6iy0R6bz0O6b{0P6lz0P6j|0M6h}0M6a0M6c~0N6c~0N6`0N7b`0N7i`0N6i0L7fa0M7mb0M7`b0L7ob0K7`c0L7`c0L7`c0L7ac0L7ec0L7ec0L7fc0L7jc0L7jc0L7jc0L7kc0L7oc0L7oc0L7lc0M7`d0M7`d0M7ad0N7gc0L7kc0L7nc0L7nc0L6e|+W6i~+W6f|+Y6g|+]6h~,@7lb,@7ce+]7be+Y7ag+W7ei+W7jk+Y7kk+]7di,@6e|,D6e|,Q7mc+W7fc+W7`c+X7jb+X7gb+X7ab+Y7ka+Y7da+Z6nz,A6it,H6in,N6ci,S6hc,Y5k~,]5my-B5bu-F5jp-J5el-N5gh-Q5ed-U5f`-X4j|-[4cy-^4fu.A4br.D4in.G4dk.J4bh.L4ae.O4cb.Q3`.T3b|.V3`y.Y3ev.[3js.]3op._3`n/B3ik/D3nh/F3gf/H3oc/J3da/M2m~/O2e|/Q2my/S2jw/U2bu/W2or/Y2kp/[2`n/^2ok/_2ki0A2dg0D2`e0F2mb0H2i`0J1j~0L1g|0N1`z0Q1mw0S1mu0U1ks0W1hq0Z1eo0\1fm0^1`k1A1bi1C1lf1F1nd1H1hb1K1j`1M0e~1P0`|1S0cz1U0ow1X0cv1[0os1^0lq2B0io2E0fm2H0ak2L0oh2O0of2S0kd2W0db2\/o3@/j}3E/d{3K/ox3P/ev3W/ns3^/bq4G/dn4S/bk5G7oc.N7dc.O7ac.O7jb.O7fb.O7oa.O7ha.P7ea.P7m`.P7j`.P7c`.P6l.Q6d.Q6a.Q6n~.Q6g~.Q6c~.Q6h}.R6e}.R6kv.U6hp.Y6hj.\6`e._5o/A5nz/D5mu/G5gq/I5ml/L5kh/N5hd/Q5i`/S4n|/U4cy/W4du/Z4mq/\4hn/^4ak0@4mg0B4md0D4ja0F3j~0H3j{0J3jx0L3nu0N3bs0P3gp0R3km0T3oj0V3ch0X3ke0Z3`c0]3d`0_2m}1A2e{1C2by1E2jv1G2ct1I2lq1L2eo1N2bm1P2kj1R2eh1U2bf1W2lc1Z2ja1\1d1_1c}2A1nz2D1hx2G1dv2J1ct2L1oq2O1ho2S1em2V1fk2Y1`i2]1of3@1kd3D1gb3H1a`3M0o}3Q0h{3W0by3\0lv4C0jt4J0cr4S0eo5A7nc1F7jc1F7bc1F7nb1F6i{1G6`u1H6ln1I6lh1J6dc1K5a~1L5by1M5ct1N5ho1P5bk1Q5lf1S5mb1T4l~1V4nz1W4`w1Y4ks1Z4bp1\4il1^4di2@4cf2A4nb2C3j2E3j|2G3jy2I3jv2K3js2M3op2O3`n2R3ek2T3jh2V3le2Y3bc2[3h`2^2o}3@2f{3C2nx3F2fv3I2os3L2dq3P2on3S2fl3W2ni3[2dg4@2od4D2eb4J1n4P1e}4X1hz5C#`x6UPluto occultation"`}6UAug 19 1985 17:50 UT"`b6UDoug Mink Oct 16 1985#`d @ \ No newline at end of file
diff --git a/nx-X11/programs/xterm/tektests/fotest.tek b/nx-X11/programs/xterm/tektests/fotest.tek
deleted file mode 100644
index 557adfa98..000000000
--- a/nx-X11/programs/xterm/tektests/fotest.tek
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/xterm/tektests/imtest.tek b/nx-X11/programs/xterm/tektests/imtest.tek
deleted file mode 100644
index 24951adb6..000000000
--- a/nx-X11/programs/xterm/tektests/imtest.tek
+++ /dev/null
@@ -1 +0,0 @@
- ` @ `?_ `?_8m?_8m?_8m @8m @ ` @!r#D(0,0) ` @8m?_ `?_8m @,p @
diff --git a/nx-X11/programs/xterm/tektests/imtesth.tek b/nx-X11/programs/xterm/tektests/imtesth.tek
deleted file mode 100644
index bdf4e9489..000000000
--- a/nx-X11/programs/xterm/tektests/imtesth.tek
+++ /dev/null
@@ -1 +0,0 @@
- `` @ c`?_ c`?_8om?_8om?_8lm @8lm @ `` @!`r#D(0,0) `` @8om?_ c`?_8lm @,`p @
diff --git a/nx-X11/programs/xterm/tektests/ocpred.tek b/nx-X11/programs/xterm/tektests/ocpred.tek
deleted file mode 100644
index 25dee0640..000000000
--- a/nx-X11/programs/xterm/tektests/ocpred.tek
+++ /dev/null
@@ -1,3 +0,0 @@
-+gd5U+fd6T+fi6T*f6T+fd6T+dd7S+di7S*d7S+dd7S+gd8Q+gi8Q*g8Q+gd8Q+ed9P+ei9P*e9P+ed9P+dd:O+di:O*d:O+dd:O+fd;M+fi;M*f;M+fd;M+ed<L+ei<L*e<L+ed<L+gd=J+gi=J*g=J+gd=J+fd>I+fi>I*f>I+fd>I+dd?H+di?H*d?H+dd?H+dd?H+gd5U,cc5U,cc5Z,cc5P,cc5U-ka5U-ka5Z-ka5P-ka5U.g`5U.g`5Z.g`5P.g`5U.o~5U.o~5Z.o~5P.o~5U/k}5U/k}5Z/k}5P/k}5U0c|5U0c|5Z0c|5P0c|5U1oz5U1oz5Z1oz5P1oz5U2gy5U2gy5Z2gy5P2gy5U3cx5U3cx5Z3cx5P3cx5U4kv5U4kv5Z4kv5P4kv5U4kv5U+gd5U+ed4W*e4W+ei4W+ed4W+fd3X*f3X+fi3X+fd3X+dd2Z*d2Z+di2Z+dd2Z+ed1[*e1[+ei1[+ed1[+gd0\*g0\+gi0\+gd0\+dd/^*d/^+di/^+dd/^+fd._*f._+fi._+fd._+gd.@*g.@+gi.@+gd.@+ed-B*e-B+ei-B+ed-B+fd,C*f,C+fi,C+fd,C+fd,C+gd5U*oe5U*oe5P*oe5Z*oe5U)cg5U)cg5P)cg5Z)cg5U(kh5U(kh5P(kh5Z(kh5U'oi5U'oi5P'oi5Z'oi5U&gk5U&gk5P&gk5Z&gk5U%kl5U%kl5P%kl5Z%kl5U$cn5U$cn5P$cn5Z$cn5U#go5U#go5P#go5Z#go5U"op5U"op5P"op5Z"op5U!cr5U!cr5P!cr5Z!cr5U!cr5U4kv5U4k{5PN+fd,C*hl,FE!cr5U cy5PS+dd?H*hl>YW%`o @,cc5U,nb5T,nb5S,mb5R,ib5Q,db5P,`b5O,oa5M,ka5L,fa5K,o`5J,k`5I,``5I+h5H+`5G+h~5F+a~5E+j}5D+c}5C+g|5B+h{5B+a{5A+fz5@+ky4_+lx4_+bx4^+gw4]+iv4]+ju4\+lt4\+bt4[+ds4[+fr4Z+dq4Z+fp4Y+eo4Y+kn4X+fm4X+el4X+`k4X+cj4W+nh4W+mg4W+if4W+ie4W+ed4W+ac4W+ab4W+m`4W*n4W*k~4W*h}4X*e|4X*f{4X*cz4X*ey4Y*fx4Y*hw4Z*jv4Z*hu4[*jt4[*ls4\*bs4\*dr4]*gq4]*jp4^*lo4_*co4_*fn5@*im5A*`m5B*gl5B*nk5C*bk5D*ij5E*`j5F*ki5F*ci5G*kh5H*ch5I*og5J*fg5K*cg5L*of5M*hf5O*df5P*af5Q*me5R*ne5S*ne5T*oe5U*le5W*le5X*me5Y*af5Z*ff5[*jf5\*of5]*cg5^*dg6@*og6@*og6@*ch6A*jh6B*bi6C*ji6D*bj6E*ij6F*`k6G*kk6G*gl6H*bm6I*im6J*dn6K*co6K*no6L*hp6M*gq6M*ar6N*`s6O*ns6O*ht6P*fu6P*dv6Q*fw6Q*dx6R*ey6R*cz6R*d{6S*e|6S*j}6S*k~6S*l6T+m`6T+ab6T+ac6T+fd6T+ie6T+if6T+mg6T+lh6T+cj6S+bk6S+el6S+dm6S+kn6R+eo6R+dp6R+bq6Q+`r6Q+bs6P+`t6P+nt6O+hu6O+fv6N+gw6M+`x6M+nx6L+ky6K+dz6K+a{6J+j{6I+g|6H+l|6H+h}6G+a~6F+j~6E+c6D+k6C,c`6B,k`6A,o`6@,da6@,ka5^,oa5],bb5\,fb5[,ib5Z,mb5Y,lb5X,lb5W,cc5U$`l?@$`l?J$`l?E%`u?E%`u?@%`u?J%`j9Y 0.1"$`t9Y 2148 km#`v9YStar position#``9Yin sky plane"`j9YFrom 2:40: 0!`t9YEach 0: 1: 0+fd,C+fi,RSUN->.ke7[.di7[.na7\.ke7[-k{8@SAA.ke7[.`b7L.me7K-g~7L.`b7L-h~6\.eb6[-oz6\-h~6\-lz6L-i~6K-cw6L-lz6L-dw5\-a{5[-ks5\-dw5\-ms5L-jw5K-`p5M-ms5L-ap4\-ns4[-dl4]-ap4\-il4L-fp4K-lh4M-il4L-ai3\-nl3[-de3]-ai3\-fe3L-ci3K-ia3M-fe3L-na2\-ke2[,a~2]-na2\,b~2L-oa2K,ez2M,b~2L,kz1\,d~1\,nv1],kz1\,cw1L,lz1L,fs1M,cw1L,ds0],aw0\,ko0],ds0],lo0M,is0L,cl0M,lo0M,dl/],ap/\,kh/],dl/],ih/M,fl/L,ld/N,ih/M,ae.],nh.\,da.^,ae.],fa.M,ce.L+i}.N,fa.M+n}-],ka-\+az-^+n}-]+gz-M+`~-M+jv-N+gz-M+kv,]+dz,]+nr,^+kv,]+`s,N+mv,M+go,N+`s,N7lv @May 4 1986 Occultation of nepklem 1026 by Triton (N1)7h` @Observed from SAAO Sutherland 74" Long= -20 48 44.3 Lat= -32 22 43.46dj @13.11-magnitude star at RA= 18h 24m 16.1231s Dec=-22d 13' 22.807"
- 5`t @ (1950) RA= 18h 22m 5.3070s Dec=-22d 14' 27.910"
- 4l} @Closest at 2:45:30 U.T. 4hg @ Radial= 4158.7 km = 0.19"3dq @ Planet= 1600.0 km = 0.07"2`{ @ ET - UT = 56.1709 sec DE-1182ld @ P.A.= 12.7 deg.1hn @ Phase = 1.5 deg = 100.0%0dx @ Alt= 75 d, Az= -36 d0`b @ Sun alt=-30 d, Az= 90 d/lk @ Sun:127.8 d, Moon: 11.9 d.hu @ V =0.0007 "/s = 14.22 km/s-d @ D = 29.619079 A.U.-`i @Doug Mink 16: 4 Nov 11 1985-`i @
diff --git a/nx-X11/programs/xterm/tektests/usmap.tek b/nx-X11/programs/xterm/tektests/usmap.tek
deleted file mode 100644
index 0e6234463..000000000
--- a/nx-X11/programs/xterm/tektests/usmap.tek
+++ /dev/null
Binary files differ
diff --git a/nx-X11/programs/xterm/termcap b/nx-X11/programs/xterm/termcap
deleted file mode 100644
index 1320f45f1..000000000
--- a/nx-X11/programs/xterm/termcap
+++ /dev/null
@@ -1,209 +0,0 @@
-# $XTermId: termcap,v 1.68 2005/11/03 13:17:28 tom Exp $
-#
-# $Xorg: termcap,v 1.3 2000/08/17 19:55:10 cpqbld Exp $
-#
-# This file is formatted using ncurses' "tic -CNx".
-#
-# Note:
-# termcap format is limited to 1023 characters. This set of descriptions
-# is a subset of the terminfo, since not all features can be fit into
-# that limit. The 'xterm' description supports color. The monochrome
-# 'xtermm' drops color in favor of additional function keys. If you need
-# both, use terminfo.
-#
-# The 1023-character limit applies to each entry after resolving the
-# "tc=" strings. Some implementations may discount all or part of the
-# formatting characters in the entry (i.e., the backslash newline tab
-# colon). GNU termcap does not have this limit.
-#
-# I checked the limits using ncurses "captoinfo -CrTUvx", which prints
-# the resolved length of each entry in a comment at the end - T.Dickey
-#
-# $XFree86: xc/programs/xterm/termcap,v 3.36 2005/11/03 13:17:28 dickey Exp $
-#
-xf|xterm-new|modern xterm:\
- :*6=\EOF:@7=\EOF:F1=\E[23~:F2=\E[24~:Km=\E[M:k1=\EOP:\
- :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:\
- :k8=\E[19~:k9=\E[20~:k;=\E[21~:kH=\EOF:kI=\E[2~:kN=\E[6~:\
- :kP=\E[5~:kd=\EOB:kh=\EOH:kl=\EOD:kr=\EOC:ku=\EOA:\
- :tc=xterm-basic:
-#
-# This chunk is used for building the VT220/Sun/PC keyboard variants.
-xb|xterm-basic|modern xterm common:\
- :am:bs:km:mi:ms:ut:xn:AX:\
- :Co#8:co#80:kn#12:li#24:pa#64:\
- :AB=\E[4%dm:AF=\E[3%dm:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
- :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=\E(B:al=\E[L:\
- :as=\E(0:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
- :cm=\E[%i%d;%dH:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:\
- :ei=\E[4l:ho=\E[H:im=\E[4h:is=\E[!p\E[?3;4l\E[4l\E>:\
- :kD=\E[3~:kb=^H:ke=\E[?1l\E>:ks=\E[?1h\E=:le=^H:md=\E[1m:\
- :me=\E[m:ml=\El:mr=\E[7m:mu=\Em:nd=\E[C:op=\E[39;49m:\
- :rc=\E8:rs=\E[!p\E[?3;4l\E[4l\E>:sc=\E7:se=\E[27m:sf=^J:\
- :so=\E[7m:sr=\EM:st=\EH:te=\E[?1049l:ti=\E[?1049h:\
- :ue=\E[24m:up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:
-
-# The xterm-new description has all of the features, but is not completely
-# compatible with vt220. If you are using a Sun or PC keyboard, set the
-# sunKeyboard resource to true:
-# + maps the editing keypad
-# + interprets control-function-key as a second array of keys, so a
-# 12-fkey keyboard can support vt220's 20-fkeys.
-# + maps numeric keypad "+" to ",".
-# + uses DEC-style control sequences for the application keypad.
-#
-vt|xterm-vt220|xterm emulating vt220:\
- :*6=\E[4~:@7=\E[4~:Km=\E[M:kH=\E[4~:kh=\E[1~:\
- :tc=xterm-basic:
-
-v1|xterm-24|xterms|vs100|24x80 xterm:\
- :li#24:tc=xterm:
-v2|xterm-65|65x80 xterm:\
- :li#65:tc=xterm:
-vb|xterm-bold|xterm with bold for underline:\
- :so=\E[7m:us=\E[1m:tc=xterm:
-vB|xterm-boldso|xterm with bold for standout:\
- :se=\E[m:so=\E[1m:tc=xterm:
-vm|xterm-mono|monochrome xterm:\
- :ut@:\
- :Co@:NC@:kn#20:pa@:\
- :AB@:AF@:Sb@:Sf@:op@:st@:tc=xterm:
-#
-# Alternate terminal description that "works" for interactive shells such as
-# tcsh and bash.
-xn|xterm-noapp|xterm with cursor keys in normal mode:\
- :kd=\E[B:ke=\E>:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:te@:ti@:\
- :tc=xterm:
-#
-# This should work for the commonly used "color xterm" variations (XFree86
-# xterm, color_xterm, nxterm, rxvt). Note that it does not set 'bce', so for
-# XFree86 and rxvt, some applications that use colors will be less efficient,
-# and in a few special cases (with "smart" optimization) the wrong color will
-# be painted in spots.
-vc|xterm-color|generic "ANSI" color xterm:\
- :Co#8:NC@:pa#64:\
- :AB=\E[4%dm:AF=\E[3%dm:ac=:op=\E[m:tc=xterm-r6:
-#
-# These aliases are for compatibility with the terminfo; termcap cannot provide
-# the extra features such as color initialization, but termcap applications
-# still want the names. Note that AF/AB really should be Sf/Sb, but there are
-# applications which expect the former. The terminfo contains both strings.
-x1|xterm-16color|xterm alias:\
- :tc=xterm-new:
-
-x2|xterm-88color|xterm alias:\
- :Co#88:pa#7744:tc=xterm-256color:
-
-x3|xterm-256color|xterm alias:\
- :Co#256:pa#32767:\
- :AB=\E[48;5;%dm:AF=\E[38;5;%dm:tc=xterm-new:
-
-xi|xterm-nrc|xterm alias:\
- :tc=xterm:
-xr|xterm-rep|xterm alias:\
- :tc=xterm:
-xx|xterm-xmc|xterm alias:\
- :sg#1:tc=xterm:
-#
-# An 8-bit description is doable with termcap, but there are probably no
-# termcap (or BSD curses) applications that are able to use it.
-x8|xterm-8bit|xterm terminal emulator 8-bit controls (X Window System):\
- :am:km:mi:ms:xn:\
- :co#80:it#8:li#24:\
- :AL=\233%dL:DC=\233%dP:DL=\233%dM:DO=\233%dB:IC=\233%d@:\
- :Km=\233M:LE=\233%dD:RI=\233%dC:UP=\233%dA:ae=\E(B:\
- :al=\233L:as=\E(0:bl=^G:bt=\233Z:cd=\233J:ce=\233K:\
- :cl=\233H\2332J:cm=\233%i%d;%dH:cr=^M:cs=\233%i%d;%dr:\
- :ct=\2333g:dc=\233P:dl=\233M:do=^J:ei=\2334l:ho=\233H:\
- :im=\2334h:\
- :is=\E[62"p\E G\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r\E8:\
- :k1=\23311~:k2=\23312~:k3=\23313~:k4=\23314~:k5=\23315~:\
- :k6=\23317~:k7=\23318~:k8=\23319~:k9=\23320~:kD=\2333~:\
- :kI=\2332~:kN=\2336~:kP=\2335~:kb=^H:kd=\217B:\
- :ke=\233?1l\E>:kh=\2331~:kl=\217D:kr=\217C:ks=\233?1h\E=:\
- :ku=\217A:le=^H:mb=\2335m:md=\2331m:me=\233m:\
- :mr=\2337m:nd=\233C:rc=\E8:sc=\E7:se=\23327m:sf=^J:\
- :so=\2337m:sr=\215:st=\210:ta=^I:te=\233?1049l:\
- :ti=\233?1049h:ue=\23324m:up=\233A:us=\2334m:\
- :vb=\233?5h\233?5l:ve=\233?25h:vi=\233?25l:
-#
-hp|xterm-hp|xterm with hpterm function keys:\
- :@7=\EF:k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:\
- :k8=\Ew:kC=\EJ:kD=\EP:kI=\EQ:kN=\ES:kP=\ET:kd=\EB:kh=\Eh:\
- :kl=\ED:kr=\EC:ku=\EA:tc=xterm-basic:
-#
-xS|xterm-sco|xterm with SCO function keys:\
- :@7=\E[F:F1=\E[W:F2=\E[X:F3=\E[Y:F5=\E[a:F6=\E[b:F7=\E[c:\
- :F8=\E[d:F9=\E[e:FA=\E[f:FB=\E[g:FC=\E[h:FD=\E[i:FE=\E[j:\
- :FF=\E[k:ac=:k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:\
- :k6=\E[R:k7=\E[S:k8=\E[T:k9=\E[U:k;=\E[V:kI=\E[L:kN=\E[G:\
- :kP=\E[I:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
- :tc=xterm-basic:
-#
-v5|xterm-vt52|xterm emulating vt52:\
- :bs:\
- :co#80:it#8:li#24:\
- :ae=\EG:as=\EF:bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :\
- :cr=^M:do=\EB:ho=\EH:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:\
- :le=\ED:nd=\EC:nw=^M^J:sf=^J:sr=\EI:ta=^I:up=\EA:
-#
-xs|xterm-sun|xterm with Sun functionkeys:\
- :%1=\E[196z:&8=\E[195z:@0=\E[200z:@5=\E[197z:@7=\E[220z:\
- :F1=\E[192z:F2=\E[193z:Km=\E[M:k1=\E[224z:k2=\E[225z:\
- :k3=\E[226z:k4=\E[227z:k5=\E[228z:k6=\E[229z:k7=\E[230z:\
- :k8=\E[231z:k9=\E[232z:k;=\E[233z:kD=\177:kI=\E[2z:\
- :kN=\E[222z:kP=\E[216z:kh=\E[214z:tc=xterm-basic:
-#
-# vi may work better with this entry, because vi doesn't use insert mode much.
-# |xterm-ic|xterm-vi|xterm with insert character instead of insert mode:\
-vi|xterm-ic|xterm-vi|xterm with insert char:\
- :mi@:\
- :IC=\E[%d@:ei@:ic=\E[@:im@:tc=xterm:
-#
-# Compatible with the X11R6.3 xterm
-r6|xterm-r6|xterm-old|X11R6 xterm:\
- :am:bs:km:mi:ms:pt:xn:\
- :co#80:kn#20:li#24:\
- :*6=\E[4~:@0=\E[1~:@7=\E[4~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
- :DO=\E[%dB:F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:\
- :F5=\E[28~:F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:\
- :FA=\E[34~:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:\
- :as=^N:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:\
- :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:eA=\E)0:ei=\E[4l:\
- :ho=\E[H:im=\E[4h:\
- :is=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8:\
- :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
- :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
- :kD=\177:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:\
- :ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
- :ku=\EOA:md=\E[1m:me=\E[m:ml=\El:mr=\E[7m:mu=\Em:nd=\E[C:\
- :rc=\E8:rs=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8:\
- :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:te=\E[2J\E[?47l\E8:\
- :ti=\E7\E[?47h:ue=\E[m:up=\E[A:us=\E[4m:
-#
-# Compatible with the R5 xterm
-r5|xterm-r5|X11R5 xterm X11R5:\
- :am:bs:km:mi:ms:pt:xn:\
- :co#80:kn#4:li#24:\
- :@7=\E[4~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
- :IC=\E[%d@:UP=\E[%dA:al=\E[L:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
- :cm=\E[%i%d;%dH:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:\
- :ei=\E[4l:ho=\E[H:im=\E[4h:\
- :is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
- :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:kb=^H:kd=\EOB:\
- :ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
- :ku=\EOA:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:rc=\E8:\
- :rs=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H:\
- :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:te=\E[2J\E[?47l\E8:\
- :ti=\E7\E[?47h:ue=\E[m:up=\E[A:us=\E[4m:
-#
-# Customization begins here.
-x0|xterm-xfree86|xterm terminal emulator (XFree86):\
- :tc=xterm-new:
-#
-# This is the only entry which you should have to customize, since "xterm"
-# is widely used for a variety of incompatible terminal emulations including
-# color_xterm and rxvt.
-v0|xterm|X11 terminal emulator:\
- :tc=xterm-new:
-# :tc=xterm-r6:
diff --git a/nx-X11/programs/xterm/terminfo b/nx-X11/programs/xterm/terminfo
deleted file mode 100644
index f0b5f4d3a..000000000
--- a/nx-X11/programs/xterm/terminfo
+++ /dev/null
@@ -1,1012 +0,0 @@
-# $XTermId: terminfo,v 1.111 2005/11/03 13:17:28 tom Exp $
-#
-# $Xorg: terminfo,v 1.3 2000/08/17 19:55:10 cpqbld Exp $
-#
-# meml locks memory above the cursor; memu unlocks (ala HP terminals)
-#
-# XFree86 updates/notes/new entries (including xterm-8bit, xterm-16color)
-# - Thomas E. Dickey
-#
-# $XFree86: xc/programs/xterm/terminfo,v 3.57 2005/11/03 13:17:28 dickey Exp $
-#
-# Special Capabilities:
-# --------------------
-# ich has a corresponding capability that inserts a single blank. We could
-# have used ich1=\E[@, which works with ncurses, but that is not standard
-# behavior. If it is set, then SVr4 vi (e.g., Solaris 2.6) emits both
-# smir/rmir and ich1.
-# meml locks memory above the cursor; memu unlocks (ala HP terminals). This
-# is not recognized by some older (e.g., SVr3) tic programs, but none
-# do more than warn about it. Ignore the warning.
-# smcup clears memory before switching to the alternate screen. The older
-# (deprecated) \E[?47h did not do this, requiring applications to
-# embed a \E[2J in the rmcup string. However, that behavior cannot
-# be disabled via titeInhibit, making that resource not function as
-# intended on systems with terminfo.
-# rs2/is2 are shorter with XFree86 xterm because it supports DECSTR. We
-# use the shorter sequence for compatibility with the termcap, which
-# is trimmed to keep it shorter than 1023 characters. It (escape \E[!p)
-# replaces these in the conventional vt100 reset-string:
-# \E7 - save cursor (fixes origin-mode side-effect)
-# \E[r - reset scrolling margins
-# \E[m - reset SGR (including color)
-# \E[?7h - reset wraparound mode (DECAWM)
-# \E[?1l - reset application cursor keys (DECCKM)
-# \E[?6l - reset origin mode (DECOM)
-# \E8 - restore cursor
-# DECSTR is recognized by XFree86 xterm even in vt52 mode.
-#
-# Editing Keypad:
-# --------------
-# XFree86 xterm emulates vt220 if the decTerminalID resource is set to 200 or
-# higher. Otherwise it emulates a vt100 or vt52 depending on the value of the
-# resource. When emulating a vt220, we support the editing keypad. Sun and PC
-# keyboards have an editing keypad which is similar to the vt220:
-#
-# VT220 editing keypad
-# ----------------------------
-# Find Insert Remove
-# Select Prev Next
-# ----------------------------
-#
-# Sun/PC editing keypad
-# ----------------------------
-# Insert Home PageUp
-# Delete End PageDn
-# ----------------------------
-#
-# If the sunKeyboard resource is true, we map it this way (adjusting the values
-# of Home, End and Delete):
-# VT220 Sun/PC
-# ----------------------------
-# Find Home
-# Select End
-# Insert Insert
-# Remove Delete
-# Prev PageUp
-# Next PageDn
-# ----------------------------
-#
-# Note that all of the keys on the editing keypad transmit escape sequences. A
-# vt220 does this only when in vt220 mode; when emulating a vt100 the editing
-# keypad is inactive.
-#
-# Alternative keycodes:
-# --------------------
-# Several of the function keys have alternative names, depending on the type of
-# host which your xterm is connected to. DEC (i.e., the VMS system) uses F15
-# as the HELP key, F16 as the DO key. Unix applications generally do not do
-# this. Curses applications in particular, assign a unique keycode to each
-# capability string. These terminal descriptions do not have conflicting
-# definitions, to ensure that Unix curses applications use a consistent set of
-# keycodes. To get a VMS-bias, make these substitutions:
-# 1. change khome to kfnd
-# 2. change kend to kslt
-# The original xterm-r6 entry does in fact have a VMS bias.
-#
-# Some legacy applications using the termcap emulation may expect kll where
-# we have specified kend.
-#
-# Function keys with modifiers (Sun/PC):
-# -------------------------------------
-# Shift-Fx - kf{12+x}
-# Control-Fx - kf{24+x}
-# Shift-Control-Fx - kf{36+x}
-#
-# The terminfo defines some special keys which are documented as "shifted",
-# e.g., kDC is shifted-delete-character.
-#
-# Note however, that even though the terminfo says a key might be sent, there
-# may be conflicts which prevent this. For example, it is common to use
-# shifted pageup and pagedown for window manager functions. The default
-# translation for xterm since X11R4 has overridden shifted Insert, Select,
-# PageUp and PageDown, which correspond to terminfo kIC, kEND, kPRV and kNXT
-# respectively.
-#
-xterm-new|modern xterm terminal emulator,
- npc,
- indn=\E[%p1%dS,
- kDC=\E[3;2~,
- kEND=\E[1;2F,
- kHOM=\E[1;2H,
- kIC=\E[2;2~,
- kLFT=\E[1;2D,
- kNXT=\E[6;2~,
- kPRV=\E[5;2~,
- kRIT=\E[1;2C,
- kb2=\EOE,
- kcbt=\E[Z,
- kcub1=\EOD,
- kcud1=\EOB,
- kcuf1=\EOC,
- kcuu1=\EOA,
- kend=\EOF,
- kent=\EOM,
- khome=\EOH,
- kich1=\E[2~,
- kind=\E[1;2B,
- kmous=\E[M,
- knp=\E[6~,
- kpp=\E[5~,
- kri=\E[1;2A,
- rin=\E[%p1%dT,
- use=xterm+pcfkeys,
- use=xterm-basic,
-# Encode modifiers using parameters (see ctlseqs.msg).
-# Note that this is unrelated to PCTERM.
-#
-# Some names are extensions allowed by ncurses:
-# kDN, kDN5, kDN6, kLFT5, kLFT6, kRIT5, kRIT6, kUP, kUP5, kUP6
-xterm+pcfkeys|fragment for PC-style keys,
- kf1=\EOP,
- kf10=\E[21~,
- kf11=\E[23~,
- kf12=\E[24~,
- kf13=\EO2P,
- kf14=\EO2Q,
- kf15=\EO2R,
- kf16=\EO2S,
- kf17=\E[15;2~,
- kf18=\E[17;2~,
- kf19=\E[18;2~,
- kf2=\EOQ,
- kf20=\E[19;2~,
- kf21=\E[20;2~,
- kf22=\E[21;2~,
- kf23=\E[23;2~,
- kf24=\E[24;2~,
- kf25=\EO5P,
- kf26=\EO5Q,
- kf27=\EO5R,
- kf28=\EO5S,
- kf29=\E[15;5~,
- kf3=\EOR,
- kf30=\E[17;5~,
- kf31=\E[18;5~,
- kf32=\E[19;5~,
- kf33=\E[20;5~,
- kf34=\E[21;5~,
- kf35=\E[23;5~,
- kf36=\E[24;5~,
- kf37=\EO6P,
- kf38=\EO6Q,
- kf39=\EO6R,
- kf4=\EOS,
- kf40=\EO6S,
- kf41=\E[15;6~,
- kf42=\E[17;6~,
- kf43=\E[18;6~,
- kf44=\E[19;6~,
- kf45=\E[20;6~,
- kf46=\E[21;6~,
- kf47=\E[23;6~,
- kf48=\E[24;6~,
- kf49=\EO3P,
- kf5=\E[15~,
- kf50=\EO3Q,
- kf51=\EO3R,
- kf52=\EO3S,
- kf53=\E[15;3~,
- kf54=\E[17;3~,
- kf55=\E[18;3~,
- kf56=\E[19;3~,
- kf57=\E[20;3~,
- kf58=\E[21;3~,
- kf59=\E[23;3~,
- kf6=\E[17~,
- kf60=\E[24;3~,
- kf61=\EO4P,
- kf62=\EO4Q,
- kf63=\EO4R,
- kf7=\E[18~,
- kf8=\E[19~,
- kf9=\E[20~,
- kDN=\E[1;2B,
- kDN5=\E[1;5B,
- kDN6=\E[1;6B,
- kLFT5=\E[1;5D,
- kLFT6=\E[1;6D,
- kRIT5=\E[1;5C,
- kRIT6=\E[1;6C,
- kUP=\E[1;2A,
- kUP5=\E[1;5A,
- kUP6=\E[1;6A,
-#
-# This chunk is used for building the VT220/Sun/PC keyboard variants.
-xterm-basic|modern xterm terminal emulator - common,
- am,
- bce,
- km,
- mc5i,
- mir,
- msgr,
- xenl,
- colors#8,
- cols#80,
- it#8,
- lines#24,
- pairs#64,
- acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G,
- blink=\E[5m,
- bold=\E[1m,
- cbt=\E[Z,
- civis=\E[?25l,
- clear=\E[H\E[2J,
- cnorm=\E[?12l\E[?25h,
- cr=^M,
- csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD,
- cub1=^H,
- cud=\E[%p1%dB,
- cud1=^J,
- cuf=\E[%p1%dC,
- cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH,
- cuu=\E[%p1%dA,
- cuu1=\E[A,
- cvvis=\E[?12;25h,
- dch=\E[%p1%dP,
- dch1=\E[P,
- dl=\E[%p1%dM,
- dl1=\E[M,
- ech=\E[%p1%dX,
- ed=\E[J,
- el=\E[K,
- el1=\E[1K,
- flash=\E[?5h$<100/>\E[?5l,
- home=\E[H,
- hpa=\E[%i%p1%dG,
- ht=^I,
- hts=\EH,
- ich=\E[%p1%d@,
- il=\E[%p1%dL,
- il1=\E[L,
- ind=^J,
- invis=\E[8m,
- is2=\E[!p\E[?3;4l\E[4l\E>,
- kbs=^H,
- kdch1=\E[3~,
- mc0=\E[i,
- mc4=\E[4i,
- mc5=\E[5i,
- meml=\El,
- memu=\Em,
- op=\E[39;49m,
- rc=\E8,
- rev=\E[7m,
- ri=\EM,
- rmacs=\E(B,
- rmam=\E[?7l,
- rmcup=\E[?1049l,
- rmir=\E[4l,
- rmkx=\E[?1l\E>,
- rmso=\E[27m,
- rmul=\E[24m,
- rs1=\Ec,
- rs2=\E[!p\E[?3;4l\E[4l\E>,
- sc=\E7,
- setab=\E[4%p1%dm,
- setaf=\E[3%p1%dm,
- setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
- sgr0=\E[m\E(B,
- smacs=\E(0,
- smam=\E[?7h,
- smcup=\E[?1049h,
- smir=\E[4h,
- smkx=\E[?1h\E=,
- smso=\E[7m,
- smul=\E[4m,
- tbc=\E[3g,
- u6=\E[%i%d;%dR,
- u7=\E[6n,
- u8=\E[?1;2c,
- u9=\E[c,
- vpa=\E[%i%p1%dd,
-#
-# The xterm-new description has all of the features, but is not completely
-# compatible with vt220. If you are using a Sun or PC keyboard, set the
-# sunKeyboard resource to true:
-# + maps the editing keypad
-# + interprets control-function-key as a second array of keys, so a
-# 12-fkey keyboard can support vt220's 20-fkeys.
-# + maps numeric keypad "+" to ",".
-# + uses DEC-style control sequences for the application keypad.
-#
-# Some packagers modify xterm's resource definitions to provide extra function
-# keys by using the shift-modifier in the translations resource. However, that
-# interferes with the DECUDK functionality.
-#
-xterm-vt220|xterm emulating vt220,
- ka1=\EOw,
- ka3=\EOy,
- kb2=\EOu,
- kc1=\EOq,
- kc3=\EOs,
- kcbt=\E[Z,
- kcub1=\EOD,
- kcud1=\EOB,
- kcuf1=\EOC,
- kcuu1=\EOA,
- kend=\E[4~,
- kent=\EOM,
- kf1=\EOP,
- kf10=\E[21~,
- kf11=\E[23~,
- kf12=\E[24~,
- kf13=\E[25~,
- kf14=\E[26~,
- kf15=\E[28~,
- kf16=\E[29~,
- kf17=\E[31~,
- kf18=\E[32~,
- kf19=\E[33~,
- kf2=\EOQ,
- kf20=\E[34~,
- kf3=\EOR,
- kf4=\EOS,
- kf5=\E[15~,
- kf6=\E[17~,
- kf7=\E[18~,
- kf8=\E[19~,
- kf9=\E[20~,
- khome=\E[1~,
- kich1=\E[2~,
- kmous=\E[M,
- knp=\E[6~,
- kpp=\E[5~,
- use=xterm-basic,
-#
-xterm-vt52|xterm emulating dec vt52,
- cols#80,
- it#8,
- lines#24,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G,
- clear=\EH\EJ,
- cr=^M,
- cub1=\ED,
- cud1=\EB,
- cuf1=\EC,
- cup=\EY%p1%' '%+%c%p2%' '%+%c,
- cuu1=\EA,
- ed=\EJ,
- el=\EK,
- home=\EH,
- ht=^I,
- ind=^J,
- kbs=^H,
- kcub1=\ED,
- kcud1=\EB,
- kcuf1=\EC,
- kcuu1=\EA,
- nel=^M^J,
- ri=\EI,
- rmacs=\EG,
- smacs=\EF,
-#
-# kf30-kf45 are keysyms XK_R1 through XK_R15 on the Sun keyboard.
-xterm-sun|xterm with sun function keys,
- kb2=\E[218z,
- kcpy=\E[197z,
- kcub1=\EOD,
- kcud1=\EOB,
- kcuf1=\EOC,
- kcuu1=\EOA,
- kdch1=\177,
- kend=\E[220z,
- kent=\EOM,
- kf1=\E[224z,
- kf10=\E[233z,
- kf11=\E[192z,
- kf12=\E[193z,
- kf13=\E[194z,
- kf14=\E[195z,
- kf15=\E[196z,
- kf17=\E[198z,
- kf18=\E[199z,
- kf19=\E[200z,
- kf2=\E[225z,
- kf20=\E[201z,
- kf3=\E[226z,
- kf31=\E[208z,
- kf32=\E[209z,
- kf33=\E[210z,
- kf34=\E[211z,
- kf35=\E[212z,
- kf36=\E[213z,
- kf38=\E[215z,
- kf4=\E[227z,
- kf40=\E[217z,
- kf42=\E[219z,
- kf44=\E[221z,
- kf5=\E[228z,
- kf6=\E[229z,
- kf7=\E[230z,
- kf8=\E[231z,
- kf9=\E[232z,
- kfnd=\E[200z,
- khlp=\E[196z,
- khome=\E[214z,
- kich1=\E[2z,
- kmous=\E[M,
- knp=\E[222z,
- kpp=\E[216z,
- kund=\E[195z,
- use=xterm-basic,
-#
-xterm-hp|xterm with hpterm function keys,
- kclr=\EJ,
- kcub1=\ED,
- kcud1=\EB,
- kcuf1=\EC,
- kcuu1=\EA,
- kdch1=\EP,
- kend=\EF,
- kf1=\Ep,
- kf2=\Eq,
- kf3=\Er,
- kf4=\Es,
- kf5=\Et,
- kf6=\Eu,
- kf7=\Ev,
- kf8=\Ew,
- khome=\Eh,
- kich1=\EQ,
- knp=\ES,
- kpp=\ET,
- use=xterm-basic,
-xterm-sco|xterm with SCO function keys,
- kcub1=\E[D,
- kcud1=\E[B,
- kcuf1=\E[C,
- kcuu1=\E[A,
- kend=\E[F,
- kf1=\E[M,
- kf10=\E[V,
- kf11=\E[W,
- kf12=\E[X,
- kf13=\E[Y,
- kf15=\E[a,
- kf16=\E[b,
- kf17=\E[c,
- kf18=\E[d,
- kf19=\E[e,
- kf2=\E[N,
- kf20=\E[f,
- kf21=\E[g,
- kf22=\E[h,
- kf23=\E[i,
- kf24=\E[j,
- kf25=\E[k,
- kf26=\E[l,
- kf27=\E[m,
- kf28=\E[n,
- kf29=\E[o,
- kf3=\E[O,
- kf30=\E[p,
- kf31=\E[q,
- kf32=\E[r,
- kf33=\E[s,
- kf34=\E[t,
- kf35=\E[u,
- kf4=\E[P,
- kf5=\E[Q,
- kf6=\E[R,
- kf7=\E[S,
- kf8=\E[T,
- kf9=\E[U,
- khome=\E[H,
- kich1=\E[L,
- knp=\E[G,
- kpp=\E[I,
- use=xterm-basic,
-#
-# Other variants:
-xterm-24|xterms|vs100|xterm terminal emulator (X Window System),
- lines#24,
- use=xterm,
-xterm-65|xterm with tall window 65x80 (X Window System),
- lines#65,
- use=xterm,
-xterm-bold|xterm with bold instead of underline (X Window System),
- smso=\E[7m,
- smul=\E[1m,
- use=xterm,
-xterm-boldso|xterm with bold for standout (X Window System),
- rmso=\E[m,
- smso=\E[1m,
- use=xterm,
-xterm-mono|monochrome xterm,
- bce@,
- colors@,
- ncv@,
- pairs@,
- op@,
- setab@,
- setaf@,
- setb@,
- setf@,
- sgr@,
- use=xterm,
-#
-# VTxxx terminals are usually set up so that full-screen applications will use
-# the cursor application mode strings. This is good for full-screen
-# applications, including legacy applications which may have hard-coded
-# behavior, but bad for interactive shells (e.g., tcsh, bash) which use arrow
-# keys to scroll through a history of command strings.
-#
-# To see the difference between normal/application modes, consider this example:
-# + In normal (non-application) mode, the terminal transmits a down-arrow
-# as \E[C, which happens to echo as a down-arrow.
-# + In application mode the terminal transmits \EOC, which echoes as C.
-# That is because the \EO is the SS3 control, which says to use the
-# character from the G3 character set for the next cell.
-#
-# One example of hard-coded behavior would be for applications written to work
-# with VT52 and VT100 terminals. If the application's parser ignores 'O' and
-# '?' characters after the escape, then the cursor and keypad strings for the
-# two terminals are the same. (Indeed, one of the first curses applications
-# which I used did something like this to cover "ANSI" terminals -TD).
-#
-# To make this work (leaving the cursor keys in normal mode), we have to adjust
-# the terminal initialization sequences:
-#
-# smkx/rmkx set/reset the cursor and keypad application modes. We retain
-# the latter (otherwise many applications fail).
-#
-# smcup/rmcup set/restore cursor-addressing mode for full-screen
-# applications. For xterm, this normally means the alternate
-# screen, which is not compatible with interactive shells. Some
-# programs are "smart" and disable these.
-#
-xterm-noapp|xterm with cursor keys in normal mode,
- kcub1=\E[D,
- kcud1=\E[B,
- kcuf1=\E[C,
- kcuu1=\E[A,
- rmcup@,
- rmkx=\E>,
- smcup@,
- smkx=\E=,
- use=xterm,
-#
-# This should work for the commonly used "color xterm" variations (XFree86
-# xterm, color_xterm, nxterm, rxvt). Note that it does not set 'bce', so for
-# XFree86 and and rxvt, some applications that use colors will be less
-# efficient, and in a few special cases (with "smart" optimization) the wrong
-# color will be painted in spots.
-xterm-color|generic "ANSI" color xterm (X Window System),
- colors#8,
- ncv@,
- pairs#64,
- op=\E[m,
- setab=\E[4%p1%dm,
- setaf=\E[3%p1%dm,
- use=xterm-r6,
-#
-# vi may work better with this entry, because vi
-# doesn't use insert mode much
-xterm-ic|xterm-vi|xterm with insert character instead of insert mode,
- mir@,
- ich=\E[%p1%d@,
- ich1=\E[@,
- rmir@,
- smir@,
- use=xterm,
-#
-# This is used only for testing (it's not relevant to DEC VTxxx terminals, but
-# to ncurses).
-xterm-xmc|xterm with magic-cookie glitch,
- xmc#1,
- use=xterm-new,
-#
-# This one also is primarily for testing ncurses; while the ISO 6429 defines
-# the REP control, none of the DEC VTxxx terminals (VT52 through VT420) support
-# it.
-xterm-rep|xterm with repeat-character control,
- rep=%p1%c\E[%p2%{1}%-%db,
- use=xterm-new,
-#
-# This is mainly for testing xterm; the real VT220 will not let you switch
-# character sets without first altering the keyboard language in the setup
-# screen. Some emulators allow this anyway. (Note that these strings are
-# normally used only for printers). The parameter to csnm and scs is the same
-# in both cases: the keyboard language parameter returned by CSI ? 2 6 n.
-xterm-nrc|xterm with VT220 national replacement character sets,
- csnm=%?%p1%{1}%=%tNorth American%e%p1%{2}%=%tBritish%e%p1%{3}%=%tFlemish%e%p1%{4}%=%tFrench Canadian%e%p1%{5}%=%tDanish%e%p1%{6}%=%tFinnish%e%p1%{7}%=%tGerman%e%p1%{8}%=%tDutch%e%p1%{9}%=%tItalian%e%p1%{10}%=%tSwiss (French)%e%p1%{11}%=%tSwiss (German)%e%p1%{12}%=%tSwedish%e%p1%{13}%=%tNorwegian%e%p1%{14}%=%tFrench/Belgian%e%p1%{15}%=%tSpanish%;,
- scs=%?%p1%{1}%=%t\E(B%e%p1%{2}%=%t\E(A%e%p1%{3}%=%t\E(R%e%p1%{4}%=%t\E(9%e%p1%{5}%=%t\E(E%e%p1%{6}%=%t\E(5%e%p1%{7}%=%t\E(K%e%p1%{8}%=%t\E(4%e%p1%{9}%=%t\E(Y%e%p1%{10}%=%t\E(=%e%p1%{11}%=%t\E(=%e%p1%{12}%=%t\E(7%e%p1%{13}%=%t\E(E%e%p1%{14}%=%t\E(R%e%p1%{15}%=%t\E(Z%;,
- use=xterm-new,
-#
-# Foreground 0-15 maps (with toggles) into 30-37 & 90-97
-# Background 0-15 maps (with toggles) into 40-47 & 100-107
-#
-# Originally I suppressed setaf/setab, since ANSI specifies only 8 colors, but
-# Stephen Marley persuaded me to allow the "ANSI" color controls to extend to
-# 16 colors. (Note that ncurses 4.2 uses setf/setb from this description;
-# however 5.0 selects either according to their availability). - T.Dickey
-#
-# SVr4 curses does not use more than 8 colors anyway, so using 16 colors is
-# either for terminfo-level applications or via ncurses.
-xterm-16color|xterm with 16 colors,
- colors#16,
- ncv#32,
- pairs#256,
- setab=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm,
- setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm,
- setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
- setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
- use=xterm-new,
-#
-# This uses RGB values 0..1000
-#
-# 256 colors should give 65536 pairs, but terminfo stores numbers in a signed
-# short. Most people will not notice problems with only 32767 pairs.
-xterm-256color|xterm with 256 colors,
- ccc,
- colors#256,
- pairs#32767,
- initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
- setab=\E[48;5;%p1%dm,
- setaf=\E[38;5;%p1%dm,
- setb=\E[48;5;%p1%dm,
- setf=\E[38;5;%p1%dm,
- use=xterm-new,
-xterm-88color|xterm with 88 colors,
- colors#88,
- pairs#7744,
- use=xterm-256color,
-#
-# This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color.
-# To use it, your decTerminalID resource must be set to 200 or above, and the
-# sunKeyboard resource set to true.
-#
-# HTS \E H \210
-# RI \E M \215
-# SS3 \E O \217
-# CSI \E [ \233
-#
-xterm-8bit|xterm terminal emulator with 8-bit controls (X Window System),
- am,
- bce,
- km,
- mc5i,
- mir,
- msgr,
- npc,
- xenl,
- colors#8,
- cols#80,
- it#8,
- lines#24,
- pairs#64,
- acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G,
- blink=\2335m,
- bold=\2331m,
- cbt=\233Z,
- civis=\233?25l,
- clear=\233H\2332J,
- cnorm=\233?25l\233?25h,
- cr=^M,
- csr=\233%i%p1%d;%p2%dr,
- cub=\233%p1%dD,
- cub1=^H,
- cud=\233%p1%dB,
- cud1=^J,
- cuf=\233%p1%dC,
- cuf1=\233C,
- cup=\233%i%p1%d;%p2%dH,
- cuu=\233%p1%dA,
- cuu1=\233A,
- cvvis=\233?12;25h,
- dch=\233%p1%dP,
- dch1=\233P,
- dl=\233%p1%dM,
- dl1=\233M,
- ech=\233%p1%dX,
- ed=\233J,
- el=\233K,
- el1=\2331K,
- flash=\233?5h$<100/>\233?5l,
- home=\233H,
- hpa=\233%i%p1%dG,
- ht=^I,
- hts=\210,
- ich=\233%p1%d@,
- il=\233%p1%dL,
- il1=\233L,
- ind=^J,
- invis=\2338m,
- is2=\E[62"p\E G\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r\E8,
- ka1=\217w,
- ka3=\217u,
- kb2=\217y,
- kbeg=\217E,
- kbs=^H,
- kc1=\217q,
- kc3=\217s,
- kcbt=\233Z,
- kcub1=\217D,
- kcud1=\217B,
- kcuf1=\217C,
- kcuu1=\217A,
- kdch1=\2333~,
- kend=\2334~,
- kent=\217M,
- kf1=\23311~,
- kf10=\23321~,
- kf11=\23323~,
- kf12=\23324~,
- kf13=\23325~,
- kf14=\23326~,
- kf15=\23328~,
- kf16=\23329~,
- kf17=\23331~,
- kf18=\23332~,
- kf19=\23333~,
- kf2=\23312~,
- kf20=\23334~,
- kf3=\23313~,
- kf4=\23314~,
- kf5=\23315~,
- kf6=\23317~,
- kf7=\23318~,
- kf8=\23319~,
- kf9=\23320~,
- khome=\2331~,
- kich1=\2332~,
- kmous=\233M,
- knp=\2336~,
- kpp=\2335~,
- mc0=\233i,
- mc4=\2334i,
- mc5=\2335i,
- meml=\El,
- memu=\Em,
- op=\23339;49m,
- rc=\E8,
- rev=\2337m,
- ri=\215,
- rmacs=\E(B,
- rmam=\233?7l,
- rmcup=\233?1049l,
- rmir=\2334l,
- rmkx=\233?1l\E>,
- rmso=\23327m,
- rmul=\23324m,
- rs1=\Ec,
- rs2=\E[62"p\E G\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r\E8,
- sc=\E7,
- setab=\2334%p1%dm,
- setaf=\2333%p1%dm,
- setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- setf=\2333%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
- sgr0=\233m\E(B,
- smacs=\E(0,
- smam=\233?7h,
- smcup=\233?1049h,
- smir=\2334h,
- smkx=\233?1h\E=,
- smso=\2337m,
- smul=\2334m,
- tbc=\2333g,
- u6=\233[%i%d;%dR,
- u7=\E[6n,
- u8=\233[?1;2c,
- u9=\E[c,
- vpa=\233%i%p1%dd,
-#
-# Compatible with the R6 xterm, with the following changes:
-# + added acsc (perhaps some versions of tic assume the standard vt100
-# alternate character set)
-# + added u6, u7, u8, u9 strings for Daniel Weaver's tack program.
-# + added kmous string for ncurses.
-# + added khome/kend strings (which conflict with kfnd/kslt, see note).
-xterm-r6|xterm-old|xterm X11R6 version,
- am,
- km,
- mir,
- msgr,
- xenl,
- cols#80,
- it#8,
- lines#24,
- acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G,
- blink@,
- bold=\E[1m,
- clear=\E[H\E[2J,
- cr=^M,
- csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD,
- cub1=^H,
- cud=\E[%p1%dB,
- cud1=^J,
- cuf=\E[%p1%dC,
- cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH,
- cuu=\E[%p1%dA,
- cuu1=\E[A,
- dch=\E[%p1%dP,
- dch1=\E[P,
- dl=\E[%p1%dM,
- dl1=\E[M,
- ed=\E[J,
- el=\E[K,
- enacs=\E)0,
- home=\E[H,
- ht=^I,
- il=\E[%p1%dL,
- il1=\E[L,
- ind=^J,
- is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8,
- kbs=^H,
- kcub1=\EOD,
- kcud1=\EOB,
- kcuf1=\EOC,
- kcuu1=\EOA,
- kdch1=\177,
- kend=\E[4~,
- kf1=\E[11~,
- kf10=\E[21~,
- kf11=\E[23~,
- kf12=\E[24~,
- kf13=\E[25~,
- kf14=\E[26~,
- kf15=\E[28~,
- kf16=\E[29~,
- kf17=\E[31~,
- kf18=\E[32~,
- kf19=\E[33~,
- kf2=\E[12~,
- kf20=\E[34~,
- kf3=\E[13~,
- kf4=\E[14~,
- kf5=\E[15~,
- kf6=\E[17~,
- kf7=\E[18~,
- kf8=\E[19~,
- kf9=\E[20~,
- khome=\E[1~,
- kich1=\E[2~,
- kmous=\E[M,
- knp=\E[6~,
- kpp=\E[5~,
- meml=\El,
- memu=\Em,
- rc=\E8,
- rev=\E[7m,
- ri=\EM,
- rmacs=^O,
- rmcup=\E[2J\E[?47l\E8,
- rmir=\E[4l,
- rmkx=\E[?1l\E>,
- rmso=\E[m,
- rmul=\E[m,
- rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8,
- sc=\E7,
- sgr0=\E[m,
- smacs=^N,
- smcup=\E7\E[?47h,
- smir=\E[4h,
- smkx=\E[?1h\E=,
- smso=\E[7m,
- smul=\E[4m,
- tbc=\E[3g,
- u6=\E[%i%d;%dR,
- u7=\E[6n,
- u8=\E[?1;2c,
- u9=\E[c,
-#
-# Compatible with the R5 xterm, with the following changes:
-# + changed 'blink=@', to 'blink@' (the former meant that "@" would start
-# a blink, the latter that it is not supported).
-# + changed kf1 through kf4 to correspond with actual usage. Though X
-# supports keypad symbols for PF1 to PF4, and xterm interprets these
-# correctly, the F1 to F4 codes are commonly (but incorrectly) used.
-# + moved reset string from rs1 to rs2, to correlate better with termcap.
-# + make khome consistent with other entries.
-# + use rmul/smul, rmir/smir from termcap, but not rmcup/smcup because
-# not everyone wants the alternate screen.
-# + added u6, u7, u8, u9 strings for Daniel Weaver's tack program.
-# + added kmous string for ncurses.
-xterm-r5|xterm R5 version,
- am,
- km,
- msgr,
- xenl,
- cols#80,
- it#8,
- lines#24,
- bel=^G,
- blink@,
- bold=\E[1m,
- clear=\E[H\E[2J,
- cr=^M,
- csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD,
- cub1=^H,
- cud=\E[%p1%dB,
- cud1=^J,
- cuf=\E[%p1%dC,
- cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH,
- cuu=\E[%p1%dA,
- cuu1=\E[A,
- dch=\E[%p1%dP,
- dch1=\E[P,
- dl=\E[%p1%dM,
- dl1=\E[M,
- ed=\E[J,
- el=\E[K,
- home=\E[H,
- ht=^I,
- hts=\EH,
- ich=\E[%p1%d@,
- ich1=\E[@,
- il=\E[%p1%dL,
- il1=\E[L,
- ind=^J,
- kbs=^H,
- kcub1=\EOD,
- kcud1=\EOB,
- kcuf1=\EOC,
- kcuu1=\EOA,
- kdch1=\177,
- kdl1=\E[31~,
- kel=\E[8~,
- kend=\E[4~,
- kf0=\EOq,
- kf1=\E[11~,
- kf10=\E[21~,
- kf11=\E[23~,
- kf12=\E[24~,
- kf2=\E[12~,
- kf3=\E[13~,
- kf4=\E[14~,
- kf5=\E[15~,
- kf6=\E[17~,
- kf7=\E[18~,
- kf8=\E[19~,
- kf9=\E[20~,
- khome=\E[1~,
- kich1=\E[2~,
- kil1=\E[30~,
- kmous=\E[M,
- knp=\E[6~,
- kpp=\E[5~,
- rc=\E8,
- rev=\E[7m,
- ri=\EM,
- rmir=\E[4l,
- rmkx=\E[?1l\E>,
- rmso=\E[m,
- rmul=\E[m,
- rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H,
- sc=\E7,
- sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
- sgr0=\E[m,
- smir=\E[4h,
- smkx=\E[?1h\E=,
- smso=\E[7m,
- smul=\E[4m,
- tbc=\E[3g,
- u6=\E[%i%d;%dR,
- u7=\E[6n,
- u8=\E[?1;2c,
- u9=\E[c,
-#
-# Customization begins here.
-xterm-xfree86|xterm terminal emulator (XFree86),
- use=xterm-new,
-#
-# This is the only entry which you should have to customize, since "xterm"
-# is widely used for a variety of incompatible terminal emulations including
-# color_xterm and rxvt.
-xterm|X11 terminal emulator,
- use=xterm-new,
-# use=xterm-r6,
diff --git a/nx-X11/programs/xterm/testxmc.c b/nx-X11/programs/xterm/testxmc.c
deleted file mode 100644
index 60c1f14b4..000000000
--- a/nx-X11/programs/xterm/testxmc.c
+++ /dev/null
@@ -1,226 +0,0 @@
-/* $XTermId: testxmc.c,v 1.30 2005/08/05 01:25:40 tom Exp $ */
-
-/*
- * $XFree86: xc/programs/xterm/testxmc.c,v 3.13 2005/08/05 01:25:40 dickey Exp $
- */
-
-/************************************************************
-
-Copyright 1997-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-********************************************************/
-
-/*
- * This module provides test support for curses applications that must work
- * with terminals that have the xmc (magic cookie) glitch. The xmc_glitch
- * resource denotes the number of spaces that are emitted when switching to or
- * from standout (reverse) mode. Some terminals implement this by storing the
- * attribute controls in the character cell that is skipped. So if the cell is
- * overwritten by text, then the attribute change in the cell is cancelled,
- * causing attributes to the left of the change to propagate.
- *
- * We implement the glitch by writing a character that won't be mistaken for
- * other normal characters (and mapping normal writes to that character to a
- * different one).
- *
- * Since xmc isn't normally part of xterm, we document it here rather than in
- * the man-page. This module is driven by resources rather than by the
- * termcap/terminfo description to make it a little more flexible for testing
- * purposes.
- *
- * Resources:
- *
- * xmcGlitch (class XmcGlitch)
- * When true, enables this extension. The default is `0', which disables
- * the module. (termcap sg, terminfo xmc).
- *
- * xmcAttributes (class XmcAttributes)
- * The attributes for which we'll generate a glitch, as a bitmask.
- *
- * INVERSE 1
- * UNDERLINE 2
- * BOLD 4
- * BLINK 8
- *
- * The default is `1' (INVERSE). Some terminals emit glitches for
- * underline. Just for completeness, we recognize all of the video
- * attributes.
- *
- * xmcInline (class XmcInline)
- * When true, limits the extent of an SGR change to the current line.
- * The default is `false'. (No termcap or terminfo equivalent, though
- * there are comments in some entries relating to this issue).
- *
- * xmcMoveSGR (class XmcMoveSGR)
- * When false, a cursor movement will leave a glitch when SGR's are
- * active. The default is `true'. (termcap ms, terminfo msgr).
- *
- * TODO:
- * When xmc is active, the terminfo max_attributes (ma) capability is
- * assumed to be 1.
- *
- * The xmcAttributes resource should also apply to alternate character
- * sets and to color.
- */
-
-#include <xterm.h>
-#include <data.h>
-
-#define MARK_ON(a) (my_attrs & a) != 0 && (term->flags & (whichone = a)) == 0
-#define MARK_OFF(a) (my_attrs & a) != 0 && (term->flags & (whichone = a)) != 0
-
-void
-Mark_XMC(TScreen * screen, int param)
-{
- static IChar *glitch;
- Bool found = False;
- Char my_attrs = (screen->xmc_attributes & XMC_FLAGS);
- Char whichone = 0;
-
- if (glitch == 0) {
- unsigned len = screen->xmc_glitch;
- glitch = TypeMallocN(IChar, len);
- while (len--)
- glitch[len] = XMC_GLITCH;
- }
- switch (param) {
- case -1: /* DEFAULT */
- case 0: /* FALLTHRU */
- found = MARK_OFF((term->flags & XMC_FLAGS));
- break;
- case 1:
- found = MARK_ON(BOLD);
- break;
- case 4:
- found = MARK_ON(UNDERLINE);
- break;
- case 5:
- found = MARK_ON(BLINK);
- break;
- case 7:
- found = MARK_ON(INVERSE);
- break;
- case 22:
- found = MARK_OFF(BOLD);
- break;
- case 24:
- found = MARK_OFF(UNDERLINE);
- break;
- case 25:
- found = MARK_OFF(BLINK);
- break;
- case 27:
- found = MARK_OFF(INVERSE);
- break;
- }
-
- /*
- * Write a glitch with the attributes temporarily set to the new(er)
- * ones.
- */
- if (found) {
- unsigned save = term->flags;
- term->flags ^= whichone;
- TRACE(("XMC Writing glitch (%d/%d) after SGR %d\n", my_attrs,
- whichone, param));
- dotext(screen, '?', glitch, screen->xmc_glitch);
- term->flags = save;
- }
-}
-
-/*
- * Force a glitch on cursor movement when we're in standout mode and not at the
- * end of a line.
- */
-void
-Jump_XMC(TScreen * screen)
-{
- if (!screen->move_sgr_ok
- && screen->cur_col <= CurMaxCol(screen, screen->cur_row)) {
- Mark_XMC(screen, -1);
- }
-}
-
-/*
- * After writing text to the screen, resolve mismatch between the current
- * location and any attributes that would have been set by preceding locations.
- */
-void
-Resolve_XMC(TScreen * screen)
-{
- Bool changed = False;
- Char start;
- Char my_attrs = (screen->xmc_attributes & XMC_FLAGS);
- int row = screen->cur_row;
- int col = screen->cur_col;
-
- /* Find the preceding cell.
- */
- if (getXtermCell(screen, row, col) != XMC_GLITCH) {
- if (col != 0) {
- col--;
- } else if (!screen->xmc_inline && row != 0) {
- row--;
- col = CurMaxCol(screen, row);
- }
- }
- start = (SCRN_BUF_ATTRS(screen, row)[col] & my_attrs);
-
- /* Now propagate the starting state until we reach a cell which holds
- * a glitch.
- */
- for (;;) {
- if (col < CurMaxCol(screen, row)) {
- col++;
- } else if (!screen->xmc_inline && row < screen->max_row) {
- row++;
- col = 0;
- } else
- break;
- if (getXtermCell(screen, row, col) == XMC_GLITCH)
- break;
- if ((SCRN_BUF_ATTRS(screen, row)[col] & my_attrs) != start) {
- SCRN_BUF_ATTRS(screen, row)[col] = start |
- (SCRN_BUF_ATTRS(screen, row)[col] & ~my_attrs);
- changed = True;
- }
- }
-
- TRACE(("XMC %s (%s:%d/%d) from %d,%d to %d,%d\n",
- changed ? "Ripple" : "Nochange",
- BtoS(term->flags & my_attrs),
- my_attrs, start,
- screen->cur_row, screen->cur_col,
- row, col));
-
- if (changed) {
- ScrnUpdate(screen, screen->cur_row, 0, row + 1 - screen->cur_row,
- MaxCols(screen), True);
- }
-}
diff --git a/nx-X11/programs/xterm/trace.c b/nx-X11/programs/xterm/trace.c
deleted file mode 100644
index abaaf634f..000000000
--- a/nx-X11/programs/xterm/trace.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/* $XTermId: trace.c,v 1.63 2005/09/18 23:48:13 tom Exp $ */
-
-/*
- * $XFree86: xc/programs/xterm/trace.c,v 3.23 2005/09/18 23:48:13 dickey Exp $
- */
-
-/************************************************************
-
-Copyright 1997-2004,2005 by Thomas E. Dickey
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of the above listed
-copyright holder(s) not be used in advertising or publicity pertaining
-to distribution of the software without specific, written prior
-permission.
-
-THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
-LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/*
- * debugging support via TRACE macro.
- */
-
-#include <xterm.h> /* for definition of GCC_UNUSED */
-#include <data.h>
-#include <trace.h>
-
-#include <time.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdarg.h>
-
-#ifdef HAVE_X11_TRANSLATEI_H
-#include <X11/TranslateI.h>
-#else
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- extern String _XtPrintXlations(Widget w,
- XtTranslations xlations,
- Widget accelWidget,
- _XtBoolean includeRHS);
-#ifdef __cplusplus
-}
-#endif
-#endif
-char *trace_who = "parent";
-
-void
-Trace(char *fmt,...)
-{
- static FILE *fp;
- static char *trace_out;
- va_list ap;
-
- if (fp != 0
- && trace_who != trace_out) {
- fclose(fp);
- fp = 0;
- }
- trace_out = trace_who;
-
- if (!fp) {
- char name[BUFSIZ];
-#if 0 /* usually I do not want unique names */
- int unique;
- for (unique = 0;; ++unique) {
- if (unique)
- sprintf(name, "Trace-%s.out-%d", trace_who, unique);
- else
- sprintf(name, "Trace-%s.out", trace_who);
- if ((fp = fopen(name, "r")) == 0) {
- break;
- }
- fclose(fp);
- }
-#else
- sprintf(name, "Trace-%s.out", trace_who);
-#endif
- fp = fopen(name, "w");
- if (fp != 0) {
- time_t now = time((time_t *) 0);
- fprintf(fp, "%s\n", xtermVersion());
-#ifdef HAVE_UNISTD_H
- fprintf(fp, "process %d real (%u/%u) effective (%u/%u) -- %s",
- getpid(),
- (unsigned) getuid(), (unsigned) getgid(),
- (unsigned) geteuid(), (unsigned) getegid(),
- ctime(&now));
-#else
- fprintf(fp, "process %d -- %s",
- getpid(),
- ctime(&now));
-#endif
- }
- }
- if (!fp)
- abort();
-
- va_start(ap, fmt);
- if (fmt != 0) {
- vfprintf(fp, fmt, ap);
- (void) fflush(fp);
- } else {
- (void) fclose(fp);
- (void) fflush(stdout);
- (void) fflush(stderr);
- }
- va_end(ap);
-}
-
-char *
-visibleChars(PAIRED_CHARS(Char * buf, Char * buf2), unsigned len)
-{
- static char *result;
- static unsigned used;
- unsigned limit = ((len + 1) * 8) + 1;
- char *dst;
-
- if (limit > used) {
- used = limit;
- result = XtRealloc(result, used);
- }
- dst = result;
- while (len--) {
- unsigned value = *buf++;
-#if OPT_WIDE_CHARS
- if (buf2 != 0) {
- value |= (*buf2 << 8);
- buf2++;
- }
- if (value > 255)
- sprintf(dst, "\\u+%04X", value);
- else
-#endif
- if (E2A(value) < 32 || (E2A(value) >= 127 && E2A(value) < 160))
- sprintf(dst, "\\%03o", value);
- else
- sprintf(dst, "%c", CharOf(value));
- dst += strlen(dst);
- }
- return result;
-}
-
-char *
-visibleIChar(IChar * buf, unsigned len)
-{
- static char *result;
- static unsigned used;
- unsigned limit = ((len + 1) * 6) + 1;
- char *dst;
-
- if (limit > used) {
- used = limit;
- result = XtRealloc(result, used);
- }
- dst = result;
- while (len--) {
- unsigned value = *buf++;
-#if OPT_WIDE_CHARS
- if (value > 255)
- sprintf(dst, "\\u+%04X", value);
- else
-#endif
- if (E2A(value) < 32 || (E2A(value) >= 127 && E2A(value) < 160))
- sprintf(dst, "\\%03o", value);
- else
- sprintf(dst, "%c", CharOf(value));
- dst += strlen(dst);
- }
- return result;
-}
-
-#define CASETYPE(name) case name: result = #name; break;
-
-const char *
-visibleKeyboardType(xtermKeyboardType type)
-{
- const char *result = "?";
- switch (type) {
- CASETYPE(keyboardIsLegacy); /* bogus vt220 codes for F1-F4, etc. */
- CASETYPE(keyboardIsDefault);
- CASETYPE(keyboardIsHP);
- CASETYPE(keyboardIsSCO);
- CASETYPE(keyboardIsSun);
- CASETYPE(keyboardIsVT220);
- }
- return result;
-}
-
-void
-TraceSizeHints(XSizeHints * hints)
-{
- TRACE(("size hints:\n"));
- if (hints->flags & (USPosition | PPosition))
- TRACE((" position %d,%d%s%s\n", hints->y, hints->x,
- hints->flags & USPosition ? " user" : "",
- hints->flags & PPosition ? " prog" : ""));
- if (hints->flags & (USSize | PSize))
- TRACE((" size %d,%d%s%s\n", hints->height, hints->width,
- hints->flags & USSize ? " user" : "",
- hints->flags & PSize ? " prog" : ""));
- if (hints->flags & PMinSize)
- TRACE((" min %d,%d\n", hints->min_height, hints->min_width));
- if (hints->flags & PMaxSize)
- TRACE((" max %d,%d\n", hints->max_height, hints->max_width));
- if (hints->flags & PResizeInc)
- TRACE((" inc %d,%d\n", hints->height_inc, hints->width_inc));
- if (hints->flags & PAspect)
- TRACE((" min aspect %d/%d\n", hints->min_aspect.y, hints->min_aspect.y));
- if (hints->flags & PAspect)
- TRACE((" max aspect %d/%d\n", hints->max_aspect.y, hints->max_aspect.y));
- if (hints->flags & PBaseSize)
- TRACE((" base %d,%d\n", hints->base_height, hints->base_width));
- if (hints->flags & PWinGravity)
- TRACE((" gravity %d\n", hints->win_gravity));
-}
-
-void
-TraceWMSizeHints(XtermWidget xw)
-{
- XSizeHints sizehints;
- long supp = 0;
-
- bzero(&sizehints, sizeof(sizehints));
- if (!XGetWMNormalHints(xw->screen.display, XtWindow(SHELL_OF(xw)),
- &sizehints, &supp))
- bzero(&sizehints, sizeof(sizehints));
- TraceSizeHints(&sizehints);
-}
-
-/*
- * Some calls to XGetAtom() will fail, and we don't want to stop. So we use
- * our own error-handler.
- */
-static int
-no_error(Display * dpy GCC_UNUSED, XErrorEvent * event GCC_UNUSED)
-{
- return 1;
-}
-
-void
-TraceTranslations(const char *name, Widget w)
-{
- String result;
- XErrorHandler save = XSetErrorHandler(no_error);
- XtTranslations xlations;
- Widget xcelerat;
-
- TRACE(("TraceTranslations for %s (widget %#lx)\n", name, (long) w));
- if (w) {
- XtVaGetValues(w,
- XtNtranslations, &xlations,
- XtNaccelerators, &xcelerat,
- (XtPointer) 0);
- TRACE(("... xlations %#08lx\n", (long) xlations));
- TRACE(("... xcelerat %#08lx\n", (long) xcelerat));
- result = _XtPrintXlations(w, xlations, xcelerat, True);
- TRACE(("%s\n", result != 0 ? result : "(null)"));
- if (result)
- XFree(result);
- } else {
- TRACE(("none (widget is null)\n"));
- }
- XSetErrorHandler(save);
-}
-
-#define XRES_S(name) Trace(#name " = %s\n", NonNull(resp->name))
-#define XRES_B(name) Trace(#name " = %s\n", BtoS(resp->name))
-#define XRES_I(name) Trace(#name " = %d\n", resp->name)
-
-void
-TraceXtermResources(void)
-{
- XTERM_RESOURCE *resp = &resource;
-
- Trace("XTERM_RESOURCE settings:\n");
- XRES_S(xterm_name);
- XRES_S(icon_geometry);
- XRES_S(title);
- XRES_S(icon_name);
- XRES_S(term_name);
- XRES_S(tty_modes);
- XRES_B(hold_screen);
- XRES_B(utmpInhibit);
- XRES_B(utmpDisplayId);
- XRES_B(messages);
- XRES_B(sunFunctionKeys);
-#if OPT_SUNPC_KBD
- XRES_B(sunKeyboard);
-#endif
-#if OPT_HP_FUNC_KEYS
- XRES_B(hpFunctionKeys);
-#endif
-#if OPT_SCO_FUNC_KEYS
- XRES_B(scoFunctionKeys);
-#endif
-#if OPT_INITIAL_ERASE
- XRES_B(ptyInitialErase);
- XRES_B(backarrow_is_erase);
-#endif
- XRES_B(wait_for_map);
- XRES_B(useInsertMode);
-#if OPT_ZICONBEEP
- XRES_I(zIconBeep);
-#endif
-#if OPT_PTY_HANDSHAKE
- XRES_B(ptyHandshake);
-#endif
-#if OPT_SAME_NAME
- XRES_B(sameName);
-#endif
-#if OPT_SESSION_MGT
- XRES_B(sessionMgt);
-#endif
-}
-
-void
-TraceArgv(const char *tag, char **argv)
-{
- int n = 0;
-
- TRACE(("%s:\n", tag));
- while (*argv != 0) {
- TRACE((" %d:%s\n", n++, *argv++));
- }
-}
-
-static char *
-parse_option(char *dst, char *src, int first)
-{
- char *s;
-
- if (!strncmp(src, "-/+", 3)) {
- dst[0] = first;
- strcpy(dst + 1, src + 3);
- } else {
- strcpy(dst, src);
- }
- for (s = dst; *s != '\0'; s++) {
- if (*s == '#' || *s == '%' || *s == 'S') {
- s[1] = '\0';
- } else if (*s == ' ') {
- *s = '\0';
- break;
- }
- }
- return dst;
-}
-
-static Bool
-same_option(OptionHelp * opt, XrmOptionDescRec * res)
-{
- char temp[BUFSIZ];
- return !strcmp(parse_option(temp, opt->opt, res->option[0]), res->option);
-}
-
-static Bool
-standard_option(char *opt)
-{
- static const char *table[] =
- {
- "+rv",
- "+synchronous",
- "-background",
- "-bd",
- "-bg",
- "-bordercolor",
- "-borderwidth",
- "-bw",
- "-display",
- "-fg",
- "-fn",
- "-font",
- "-foreground",
- "-geometry",
- "-iconic",
- "-name",
- "-reverse",
- "-rv",
- "-selectionTimeout",
- "-synchronous",
- "-title",
- "-xnllanguage",
- "-xrm",
- "-xtsessionID",
- };
- Cardinal n;
- char temp[BUFSIZ];
-
- opt = parse_option(temp, opt, '-');
- for (n = 0; n < XtNumber(table); n++) {
- if (!strcmp(opt, table[n]))
- return True;
- }
- return False;
-}
-
-/*
- * Analyse the options/help messages for inconsistencies.
- */
-void
-TraceOptions(OptionHelp * options, XrmOptionDescRec * resources, Cardinal res_count)
-{
- OptionHelp *opt_array = sortedOpts(options, resources, res_count);
- size_t j, k;
- XrmOptionDescRec *res_array = sortedOptDescs(resources, res_count);
- Bool first, found;
-
- TRACE(("Checking options-tables for inconsistencies:\n"));
-
-#if 0
- TRACE(("Options listed in help-message:\n"));
- for (j = 0; options[j].opt != 0; j++)
- TRACE(("%5d %-28s %s\n", j, opt_array[j].opt, opt_array[j].desc));
- TRACE(("Options listed in resource-table:\n"));
- for (j = 0; j < res_count; j++)
- TRACE(("%5d %-28s %s\n", j, res_array[j].option, res_array[j].specifier));
-#endif
-
- /* list all options[] not found in resources[] */
- for (j = 0, first = True; options[j].opt != 0; j++) {
- found = False;
- for (k = 0; k < res_count; k++) {
- if (same_option(&opt_array[j], &res_array[k])) {
- found = True;
- break;
- }
- }
- if (!found) {
- if (first) {
- TRACE(("Options listed in help, not found in resource list:\n"));
- first = False;
- }
- TRACE((" %-28s%s\n", opt_array[j].opt,
- standard_option(opt_array[j].opt) ? " (standard)" : ""));
- }
- }
-
- /* list all resources[] not found in options[] */
- for (j = 0, first = True; j < res_count; j++) {
- found = False;
- for (k = 0; options[k].opt != 0; k++) {
- if (same_option(&opt_array[k], &res_array[j])) {
- found = True;
- break;
- }
- }
- if (!found) {
- if (first) {
- TRACE(("Resource list items not found in options-help:\n"));
- first = False;
- }
- TRACE((" %s\n", res_array[j].option));
- }
- }
-
- TRACE(("Resource list items that will be ignored by XtOpenApplication:\n"));
- for (j = 0; j < res_count; j++) {
- switch (res_array[j].argKind) {
- case XrmoptionSkipArg:
- TRACE((" %-28s {param}\n", res_array[j].option));
- break;
- case XrmoptionSkipNArgs:
- TRACE((" %-28s {%ld params}\n", res_array[j].option, (long)
- res_array[j].value));
- break;
- case XrmoptionSkipLine:
- TRACE((" %-28s {remainder of line}\n", res_array[j].option));
- break;
- default:
- break;
- }
- }
-}
diff --git a/nx-X11/programs/xterm/trace.h b/nx-X11/programs/xterm/trace.h
deleted file mode 100644
index 9ddfb4650..000000000
--- a/nx-X11/programs/xterm/trace.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* $XTermId: trace.h,v 1.35 2005/09/18 23:48:13 tom Exp $ */
-
-/*
- * $XFree86: xc/programs/xterm/trace.h,v 3.17 2005/09/18 23:48:13 dickey Exp $
- */
-
-/************************************************************
-
-Copyright 1997-2004,2005 by Thomas E. Dickey
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of the above listed
-copyright holder(s) not be used in advertising or publicity pertaining
-to distribution of the software without specific, written prior
-permission.
-
-THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
-LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-/*
- * Common/useful definitions for XTERM application
- */
-#ifndef included_trace_h
-#define included_trace_h
-
-#include <xterm.h>
-
-#if OPT_TRACE
-
-extern void Trace ( char *, ... )
-#ifdef GCC_PRINTF
- __attribute__ ((format(printf,1,2)))
-#endif
- ;
-#define TRACE(p) Trace p
-
-#if OPT_TRACE > 1
-#define TRACE2(p) Trace p
-#endif
-
-extern char * visibleChars (PAIRED_CHARS(Char *buf, Char *buf2), unsigned len);
-extern char * visibleIChar (IChar *, unsigned);
-
-extern void TraceArgv(const char *tag, char **argv);
-#define TRACE_ARGV(tag,argv) TraceArgv(tag,argv)
-
-extern char *trace_who;
-#define TRACE_CHILD int tracing_child = (trace_who = "child") != 0;
-
-extern void TraceSizeHints(XSizeHints *);
-#define TRACE_HINTS(hints) TraceSizeHints(hints)
-
-extern void TraceOptions(OptionHelp *options, XrmOptionDescRec *resources, Cardinal count);
-#define TRACE_OPTS(opts,ress,lens) TraceOptions(opts,ress,lens)
-
-extern void TraceTranslations(const char *, Widget);
-#define TRACE_TRANS(name,w) TraceTranslations(name,w)
-
-extern void TraceWMSizeHints(XtermWidget);
-#define TRACE_WM_HINTS(w) TraceWMSizeHints(w)
-
-extern void TraceXtermResources(void);
-#define TRACE_XRES() TraceXtermResources()
-
-#endif
-
-#endif /* included_trace_h */
diff --git a/nx-X11/programs/xterm/unicode/README b/nx-X11/programs/xterm/unicode/README
deleted file mode 100644
index a6b4fb1db..000000000
--- a/nx-X11/programs/xterm/unicode/README
+++ /dev/null
@@ -1,24 +0,0 @@
--- $XTermId: README,v 1.10 2004/12/01 01:27:49 tom Exp $
--- $XFree86: xc/programs/xterm/unicode/README,v 1.5 2004/12/01 01:27:49 dickey Exp $
--- Thomas E. Dickey
-
-These are some scripts and datafiles used for generating tables used in the
-experimental UTF-8 implementation in xterm.
-
-To run the convmap.pl script, you will need a copy of UnicodeData-Latest.txt
-which is currently available as
-
- ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt
-
-It is a large file (~877kb), so it is not included in this distribution.
-
-convmap.pl is used to generate ../keysym2ucs.c, e.g.,
-
- ./convmap.pl >../keysym2ucs.c
-
-keysym.map is input data for convmap.pl
-
-
-The make-precompose.sh script makes the precompose.c file, which is used to
-handle canonical composition. This also needs UnicodeData-Latest.txt. It uses
-precompose.c.head and precompose.c.tail as templates.
diff --git a/nx-X11/programs/xterm/unicode/convmap.pl b/nx-X11/programs/xterm/unicode/convmap.pl
deleted file mode 100644
index aa85b6fb7..000000000
--- a/nx-X11/programs/xterm/unicode/convmap.pl
+++ /dev/null
@@ -1,177 +0,0 @@
-#!/usr/bin/perl
-# Generate keysym2ucs.c file
-#
-# $XFree86: xc/programs/xterm/unicode/convmap.pl,v 1.5 2000/01/24 22:22:05 dawes Exp $
-
-sub utf8 ($) {
- my $c = shift(@_);
-
- if ($c < 0x80) {
- return sprintf("%c", $c);
- } elsif ($c < 0x800) {
- return sprintf("%c%c", 0xc0 | ($c >> 6), 0x80 | ($c & 0x3f));
- } elsif ($c < 0x10000) {
- return sprintf("%c%c%c",
- 0xe0 | ($c >> 12),
- 0x80 | (($c >> 6) & 0x3f),
- 0x80 | ( $c & 0x3f));
- } elsif ($c < 0x200000) {
- return sprintf("%c%c%c%c",
- 0xf0 | ($c >> 18),
- 0x80 | (($c >> 12) & 0x3f),
- 0x80 | (($c >> 6) & 0x3f),
- 0x80 | ( $c & 0x3f));
- } elsif ($c < 0x4000000) {
- return sprintf("%c%c%c%c%c",
- 0xf8 | ($c >> 24),
- 0x80 | (($c >> 18) & 0x3f),
- 0x80 | (($c >> 12) & 0x3f),
- 0x80 | (($c >> 6) & 0x3f),
- 0x80 | ( $c & 0x3f));
-
- } elsif ($c < 0x80000000) {
- return sprintf("%c%c%c%c%c%c",
- 0xfe | ($c >> 30),
- 0x80 | (($c >> 24) & 0x3f),
- 0x80 | (($c >> 18) & 0x3f),
- 0x80 | (($c >> 12) & 0x3f),
- 0x80 | (($c >> 6) & 0x3f),
- 0x80 | ( $c & 0x3f));
- } else {
- return utf8(0xfffd);
- }
-}
-
-$unicodedata = "UnicodeData-Latest.txt";
-
-# read list of all Unicode names
-if (!open(UDATA, $unicodedata) && !open(UDATA, "$unicodedata")) {
- die ("Can't open Unicode database '$unicodedata':\n$!\n\n" .
- "Please make sure that you have downloaded the file\n" .
- "ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData-Latest.txt\n");
-}
-while (<UDATA>) {
- if (/^([0-9,A-F]{4});([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*)$/) {
- $name{hex($1)} = $2;
- } else {
- die("Syntax error in line '$_' in file '$unicodedata'");
- }
-}
-close(UDATA);
-
-# read mapping (from http://wsinwp07.win.tue.nl:1234/unicode/keysym.map)
-open(LIST, "<keysym.map") || die ("Can't open map file:\n$!\n");
-while (<LIST>) {
- if (/^0x([0-9a-f]{4})\s+U([0-9a-f]{4})\s*(\#.*)?$/){
- $keysym = hex($1);
- $ucs = hex($2);
- $keysym_to_ucs{$keysym} = $ucs;
- } elsif (/^\s*\#/ || /^\s*$/) {
- } else {
- die("Syntax error in 'list' in line\n$_\n");
- }
-}
-close(LIST);
-
-# read entries in keysymdef.h
-open(LIST, "</usr/include/X11/keysymdef.h") || die ("Can't open keysymdef.h:\n$!\n");
-while (<LIST>) {
- if (/^\#define\s+XK_([A-Za-z_0-9]+)\s+0x([0-9a-fA-F]+)\s*(\/.*)?$/) {
- next if /\/\* deprecated \*\//;
- $keysymname = $1;
- $keysym = hex($2);
- $keysym_to_keysymname{$keysym} = $keysymname;
- }
-}
-close(LIST);
-
-print <<EOT;
-/* \$XFree86\$
- * This module converts keysym values into the corresponding ISO 10646-1
- * (UCS, Unicode) values.
- *
- * The array keysymtab[] contains pairs of X11 keysym values for graphical
- * characters and the corresponding Unicode value. The function
- * keysym2ucs() maps a keysym onto a Unicode value using a binary search,
- * therefore keysymtab[] must remain SORTED by keysym value.
- *
- * The keysym -> UTF-8 conversion will hopefully one day be provided
- * by Xlib via XmbLookupString() and should ideally not have to be
- * done in X applications. But we are not there yet.
- *
- * We allow to represent any UCS character in the range U+00000000 to
- * U+00FFFFFF by a keysym value in the range 0x01000000 to 0x01ffffff.
- * This admittedly does not cover the entire 31-bit space of UCS, but
- * it does cover all of the characters up to U+10FFFF, which can be
- * represented by UTF-16, and more, and it is very unlikely that higher
- * UCS codes will ever be assigned by ISO. So to get Unicode character
- * U+ABCD you can directly use keysym 0x1000abcd.
- *
- * NOTE: The comments in the table below contain the actual character
- * encoded in UTF-8, so for viewing and editing best use an editor in
- * UTF-8 mode.
- *
- * Author: Markus G. Kuhn <mkuhn\@acm.org>, University of Cambridge, June 1999
- *
- * Special thanks to Richard Verhoeven <river\@win.tue.nl> for preparing
- * an initial draft of the mapping table.
- *
- * This software is in the public domain. Share and enjoy!
- */
-
-#include <keysym2ucs.h>
-
-struct codepair {
- unsigned short keysym;
- unsigned short ucs;
-} keysymtab[] = {
-EOT
-
-for $keysym (sort {$a <=> $b} keys(%keysym_to_keysymname)) {
- $ucs = $keysym_to_ucs{$keysym};
- next if $keysym >= 0xf000 || $keysym < 0x100;
- if ($ucs) {
- printf(" { 0x%04x, 0x%04x }, /*%28s %s %s */\n",
- $keysym, $ucs, $keysym_to_keysymname{$keysym}, utf8($ucs),
- defined($name{$ucs}) ? $name{$ucs} : "???" );
- } else {
- printf("/* 0x%04x %39s ? ??? */\n",
- $keysym, $keysym_to_keysymname{$keysym});
- }
-}
-
-print <<EOT;
-};
-
-long keysym2ucs(KeySym keysym)
-{
- int min = 0;
- int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
- int mid;
-
- /* first check for Latin-1 characters (1:1 mapping) */
- if ((keysym >= 0x0020 && keysym <= 0x007e) ||
- (keysym >= 0x00a0 && keysym <= 0x00ff))
- return keysym;
-
- /* also check for directly encoded 24-bit UCS characters */
- if ((keysym & 0xff000000) == 0x01000000)
- return keysym & 0x00ffffff;
-
- /* binary search in table */
- while (max >= min) {
- mid = (min + max) / 2;
- if (keysymtab[mid].keysym < keysym)
- min = mid + 1;
- else if (keysymtab[mid].keysym > keysym)
- max = mid - 1;
- else {
- /* found it */
- return keysymtab[mid].ucs;
- }
- }
-
- /* no matching Unicode value found */
- return -1;
-}
-EOT
diff --git a/nx-X11/programs/xterm/unicode/keysym.map b/nx-X11/programs/xterm/unicode/keysym.map
deleted file mode 100644
index 6e587bdc0..000000000
--- a/nx-X11/programs/xterm/unicode/keysym.map
+++ /dev/null
@@ -1,1062 +0,0 @@
-# This list can be used to convert X11 Keysyms to Unicode 2.1 character.
-# The list is not checked for correctness by Unicode officials. Use it
-# at your own risk and the creator is not responsable for any damage that
-# occured due to using this list.
-#
-# The list is created by looking at the Keysym names and the Unicode data
-# file. Other mapping tables were used as a reference where needed.
-# Due to a lack of knowledge of the Hebrew, Thai and Hangul symbols,
-# expect errors in these sections. The mapping of the keypad keys
-# might also require some adjustments.
-#
-# The following fields are used:
-# 1 The X11 keysym numbers from the include file keysymdef.h
-# 2 The Unicode (2.1) position (U0000 means unknown Unicode position)
-# #
-# 3 the name of the X11 keysym (without XK_)
-#
-# Authors: Richard Verhoeven, TUE, <river@win.tue.nl>
-# Markus Kuhn, University of Cambridge, <mkuhn@acm.org>
-#
-# You are free to use and modify this table. If you introduce errors
-# in the table, please remove the copyright line. If you remove errors,
-# please let me know, so I can update my version.
-#
-# $XFree86: xc/programs/xterm/unicode/keysym.map,v 1.1 1999/06/12 15:37:24 dawes Exp $
-#
-0x0020 U0020 # space
-0x0021 U0021 # exclam
-0x0022 U0022 # quotedbl
-0x0023 U0023 # numbersign
-0x0024 U0024 # dollar
-0x0025 U0025 # percent
-0x0026 U0026 # ampersand
-0x0027 U0027 # apostrophe
-0x0027 U0027 # quoteright /* deprecated */
-0x0028 U0028 # parenleft
-0x0029 U0029 # parenright
-0x002a U002a # asterisk
-0x002b U002b # plus
-0x002c U002c # comma
-0x002d U002d # minus
-0x002e U002e # period
-0x002f U002f # slash
-0x0030 U0030 # 0
-0x0031 U0031 # 1
-0x0032 U0032 # 2
-0x0033 U0033 # 3
-0x0034 U0034 # 4
-0x0035 U0035 # 5
-0x0036 U0036 # 6
-0x0037 U0037 # 7
-0x0038 U0038 # 8
-0x0039 U0039 # 9
-0x003a U003a # colon
-0x003b U003b # semicolon
-0x003c U003c # less
-0x003d U003d # equal
-0x003e U003e # greater
-0x003f U003f # question
-0x0040 U0040 # at
-0x0041 U0041 # A
-0x0042 U0042 # B
-0x0043 U0043 # C
-0x0044 U0044 # D
-0x0045 U0045 # E
-0x0046 U0046 # F
-0x0047 U0047 # G
-0x0048 U0048 # H
-0x0049 U0049 # I
-0x004a U004a # J
-0x004b U004b # K
-0x004c U004c # L
-0x004d U004d # M
-0x004e U004e # N
-0x004f U004f # O
-0x0050 U0050 # P
-0x0051 U0051 # Q
-0x0052 U0052 # R
-0x0053 U0053 # S
-0x0054 U0054 # T
-0x0055 U0055 # U
-0x0056 U0056 # V
-0x0057 U0057 # W
-0x0058 U0058 # X
-0x0059 U0059 # Y
-0x005a U005a # Z
-0x005b U005b # bracketleft
-0x005c U005c # backslash
-0x005d U005d # bracketright
-0x005e U005e # asciicircum
-0x005f U005f # underscore
-0x0060 U0060 # grave
-0x0060 U0060 # quoteleft /* deprecated */
-0x0061 U0061 # a
-0x0062 U0062 # b
-0x0063 U0063 # c
-0x0064 U0064 # d
-0x0065 U0065 # e
-0x0066 U0066 # f
-0x0067 U0067 # g
-0x0068 U0068 # h
-0x0069 U0069 # i
-0x006a U006a # j
-0x006b U006b # k
-0x006c U006c # l
-0x006d U006d # m
-0x006e U006e # n
-0x006f U006f # o
-0x0070 U0070 # p
-0x0071 U0071 # q
-0x0072 U0072 # r
-0x0073 U0073 # s
-0x0074 U0074 # t
-0x0075 U0075 # u
-0x0076 U0076 # v
-0x0077 U0077 # w
-0x0078 U0078 # x
-0x0079 U0079 # y
-0x007a U007a # z
-0x007b U007b # braceleft
-0x007c U007c # bar
-0x007d U007d # braceright
-0x007e U007e # asciitilde
-0x00a0 U00a0 # nobreakspace
-0x00a1 U00a1 # exclamdown
-0x00a2 U00a2 # cent
-0x00a3 U00a3 # sterling
-0x00a4 U00a4 # currency
-0x00a5 U00a5 # yen
-0x00a6 U00a6 # brokenbar
-0x00a7 U00a7 # section
-0x00a8 U00a8 # diaeresis
-0x00a9 U00a9 # copyright
-0x00aa U00aa # ordfeminine
-0x00ab U00ab # guillemotleft /* left angle quotation mark */
-0x00ac U00ac # notsign
-0x00ad U00ad # hyphen
-0x00ae U00ae # registered
-0x00af U00af # macron
-0x00b0 U00b0 # degree
-0x00b1 U00b1 # plusminus
-0x00b2 U00b2 # twosuperior
-0x00b3 U00b3 # threesuperior
-0x00b4 U00b4 # acute
-0x00b5 U00b5 # mu
-0x00b6 U00b6 # paragraph
-0x00b7 U00b7 # periodcentered
-0x00b8 U00b8 # cedilla
-0x00b9 U00b9 # onesuperior
-0x00ba U00ba # masculine
-0x00bb U00bb # guillemotright /* right angle quotation mark */
-0x00bc U00bc # onequarter
-0x00bd U00bd # onehalf
-0x00be U00be # threequarters
-0x00bf U00bf # questiondown
-0x00c0 U00c0 # Agrave
-0x00c1 U00c1 # Aacute
-0x00c2 U00c2 # Acircumflex
-0x00c3 U00c3 # Atilde
-0x00c4 U00c4 # Adiaeresis
-0x00c5 U00c5 # Aring
-0x00c6 U00c6 # AE
-0x00c7 U00c7 # Ccedilla
-0x00c8 U00c8 # Egrave
-0x00c9 U00c9 # Eacute
-0x00ca U00ca # Ecircumflex
-0x00cb U00cb # Ediaeresis
-0x00cc U00cc # Igrave
-0x00cd U00cd # Iacute
-0x00ce U00ce # Icircumflex
-0x00cf U00cf # Idiaeresis
-0x00d0 U00d0 # ETH
-0x00d0 U00d0 # Eth /* deprecated */
-0x00d1 U00d1 # Ntilde
-0x00d2 U00d2 # Ograve
-0x00d3 U00d3 # Oacute
-0x00d4 U00d4 # Ocircumflex
-0x00d5 U00d5 # Otilde
-0x00d6 U00d6 # Odiaeresis
-0x00d7 U00d7 # multiply
-0x00d8 U00d8 # Ooblique
-0x00d9 U00d9 # Ugrave
-0x00da U00da # Uacute
-0x00db U00db # Ucircumflex
-0x00dc U00dc # Udiaeresis
-0x00dd U00dd # Yacute
-0x00de U00de # THORN
-0x00de U00de # Thorn /* deprecated */
-0x00df U00df # ssharp
-0x00e0 U00e0 # agrave
-0x00e1 U00e1 # aacute
-0x00e2 U00e2 # acircumflex
-0x00e3 U00e3 # atilde
-0x00e4 U00e4 # adiaeresis
-0x00e5 U00e5 # aring
-0x00e6 U00e6 # ae
-0x00e7 U00e7 # ccedilla
-0x00e8 U00e8 # egrave
-0x00e9 U00e9 # eacute
-0x00ea U00ea # ecircumflex
-0x00eb U00eb # ediaeresis
-0x00ec U00ec # igrave
-0x00ed U00ed # iacute
-0x00ee U00ee # icircumflex
-0x00ef U00ef # idiaeresis
-0x00f0 U00f0 # eth
-0x00f1 U00f1 # ntilde
-0x00f2 U00f2 # ograve
-0x00f3 U00f3 # oacute
-0x00f4 U00f4 # ocircumflex
-0x00f5 U00f5 # otilde
-0x00f6 U00f6 # odiaeresis
-0x00f7 U00f7 # division
-0x00f8 U00f8 # oslash
-0x00f9 U00f9 # ugrave
-0x00fa U00fa # uacute
-0x00fb U00fb # ucircumflex
-0x00fc U00fc # udiaeresis
-0x00fd U00fd # yacute
-0x00fe U00fe # thorn
-0x00ff U00ff # ydiaeresis
-0x01a1 U0104 # Aogonek
-0x01a2 U02d8 # breve
-0x01a3 U0141 # Lstroke
-0x01a5 U013d # Lcaron
-0x01a6 U015a # Sacute
-0x01a9 U0160 # Scaron
-0x01aa U015e # Scedilla
-0x01ab U0164 # Tcaron
-0x01ac U0179 # Zacute
-0x01ae U017d # Zcaron
-0x01af U017b # Zabovedot
-0x01b1 U0105 # aogonek
-0x01b2 U02db # ogonek
-0x01b3 U0142 # lstroke
-0x01b5 U013e # lcaron
-0x01b6 U015b # sacute
-0x01b7 U02c7 # caron
-0x01b9 U0161 # scaron
-0x01ba U015f # scedilla
-0x01bb U0165 # tcaron
-0x01bc U017a # zacute
-0x01bd U02dd # doubleacute
-0x01be U017e # zcaron
-0x01bf U017c # zabovedot
-0x01c0 U0154 # Racute
-0x01c3 U0102 # Abreve
-0x01c5 U0139 # Lacute
-0x01c6 U0106 # Cacute
-0x01c8 U010c # Ccaron
-0x01ca U0118 # Eogonek
-0x01cc U011a # Ecaron
-0x01cf U010e # Dcaron
-0x01d0 U0110 # Dstroke
-0x01d1 U0143 # Nacute
-0x01d2 U0147 # Ncaron
-0x01d5 U0150 # Odoubleacute
-0x01d8 U0158 # Rcaron
-0x01d9 U016e # Uring
-0x01db U0170 # Udoubleacute
-0x01de U0162 # Tcedilla
-0x01e0 U0155 # racute
-0x01e3 U0103 # abreve
-0x01e5 U013a # lacute
-0x01e6 U0107 # cacute
-0x01e8 U010d # ccaron
-0x01ea U0119 # eogonek
-0x01ec U011b # ecaron
-0x01ef U010f # dcaron
-0x01f0 U0111 # dstroke
-0x01f1 U0144 # nacute
-0x01f2 U0148 # ncaron
-0x01f5 U0151 # odoubleacute
-0x01f8 U0159 # rcaron
-0x01f9 U016f # uring
-0x01fb U0171 # udoubleacute
-0x01fe U0163 # tcedilla
-0x01ff U02d9 # abovedot
-0x02a1 U0126 # Hstroke
-0x02a6 U0124 # Hcircumflex
-0x02a9 U0130 # Iabovedot
-0x02ab U011e # Gbreve
-0x02ac U0134 # Jcircumflex
-0x02b1 U0127 # hstroke
-0x02b6 U0125 # hcircumflex
-0x02b9 U0131 # idotless
-0x02bb U011f # gbreve
-0x02bc U0135 # jcircumflex
-0x02c5 U010a # Cabovedot
-0x02c6 U0108 # Ccircumflex
-0x02d5 U0120 # Gabovedot
-0x02d8 U011c # Gcircumflex
-0x02dd U016c # Ubreve
-0x02de U015c # Scircumflex
-0x02e5 U010b # cabovedot
-0x02e6 U0109 # ccircumflex
-0x02f5 U0121 # gabovedot
-0x02f8 U011d # gcircumflex
-0x02fd U016d # ubreve
-0x02fe U015d # scircumflex
-0x03a2 U0138 # kra
-0x03a3 U0156 # Rcedilla
-0x03a5 U0128 # Itilde
-0x03a6 U013b # Lcedilla
-0x03aa U0112 # Emacron
-0x03ab U0122 # Gcedilla
-0x03ac U0166 # Tslash
-0x03b3 U0157 # rcedilla
-0x03b5 U0129 # itilde
-0x03b6 U013c # lcedilla
-0x03ba U0113 # emacron
-0x03bb U0123 # gcedilla
-0x03bc U0167 # tslash
-0x03bd U014a # ENG
-0x03bf U014b # eng
-0x03c0 U0100 # Amacron
-0x03c7 U012e # Iogonek
-0x03cc U0116 # Eabovedot
-0x03cf U012a # Imacron
-0x03d1 U0145 # Ncedilla
-0x03d2 U014c # Omacron
-0x03d3 U0136 # Kcedilla
-0x03d9 U0172 # Uogonek
-0x03dd U0168 # Utilde
-0x03de U016a # Umacron
-0x03e0 U0101 # amacron
-0x03e7 U012f # iogonek
-0x03ec U0117 # eabovedot
-0x03ef U012b # imacron
-0x03f1 U0146 # ncedilla
-0x03f2 U014d # omacron
-0x03f3 U0137 # kcedilla
-0x03f9 U0173 # uogonek
-0x03fd U0169 # utilde
-0x03fe U016b # umacron
-0x13bc U0152 # OE
-0x13bd U0153 # oe
-0x13be U0178 # Ydiaeresis
-0x047e U203e # overline
-0x04a1 U3002 # kana_fullstop
-0x04a2 U300c # kana_openingbracket
-0x04a3 U300d # kana_closingbracket
-0x04a4 U3001 # kana_comma
-0x04a5 U30fb # kana_conjunctive
-0x04a6 U30f2 # kana_WO
-0x04a7 U30a1 # kana_a
-0x04a8 U30a3 # kana_i
-0x04a9 U30a5 # kana_u
-0x04aa U30a7 # kana_e
-0x04ab U30a9 # kana_o
-0x04ac U30e3 # kana_ya
-0x04ad U30e5 # kana_yu
-0x04ae U30e7 # kana_yo
-0x04af U30c3 # kana_tsu
-0x04b0 U30fc # prolongedsound
-0x04b1 U30a2 # kana_A
-0x04b2 U30a4 # kana_I
-0x04b3 U30a6 # kana_U
-0x04b4 U30a8 # kana_E
-0x04b5 U30aa # kana_O
-0x04b6 U30ab # kana_KA
-0x04b7 U30ad # kana_KI
-0x04b8 U30af # kana_KU
-0x04b9 U30b1 # kana_KE
-0x04ba U30b3 # kana_KO
-0x04bb U30b5 # kana_SA
-0x04bc U30b7 # kana_SHI
-0x04bd U30b9 # kana_SU
-0x04be U30bb # kana_SE
-0x04bf U30bd # kana_SO
-0x04c0 U30bf # kana_TA
-0x04c1 U30c1 # kana_CHI
-0x04c2 U30c4 # kana_TSU
-0x04c3 U30c6 # kana_TE
-0x04c4 U30c8 # kana_TO
-0x04c5 U30ca # kana_NA
-0x04c6 U30cb # kana_NI
-0x04c7 U30cc # kana_NU
-0x04c8 U30cd # kana_NE
-0x04c9 U30ce # kana_NO
-0x04ca U30cf # kana_HA
-0x04cb U30d2 # kana_HI
-0x04cc U30d5 # kana_FU
-0x04cd U30d8 # kana_HE
-0x04ce U30db # kana_HO
-0x04cf U30de # kana_MA
-0x04d0 U30df # kana_MI
-0x04d1 U30e0 # kana_MU
-0x04d2 U30e1 # kana_ME
-0x04d3 U30e2 # kana_MO
-0x04d4 U30e4 # kana_YA
-0x04d5 U30e6 # kana_YU
-0x04d6 U30e8 # kana_YO
-0x04d7 U30e9 # kana_RA
-0x04d8 U30ea # kana_RI
-0x04d9 U30eb # kana_RU
-0x04da U30ec # kana_RE
-0x04db U30ed # kana_RO
-0x04dc U30ef # kana_WA
-0x04dd U30f3 # kana_N
-0x04de U309b # voicedsound
-0x04df U309c # semivoicedsound
-0x05ac U060c # Arabic_comma
-0x05bb U061b # Arabic_semicolon
-0x05bf U061f # Arabic_question_mark
-0x05c1 U0621 # Arabic_hamza
-0x05c2 U0622 # Arabic_maddaonalef
-0x05c3 U0623 # Arabic_hamzaonalef
-0x05c4 U0624 # Arabic_hamzaonwaw
-0x05c5 U0625 # Arabic_hamzaunderalef
-0x05c6 U0626 # Arabic_hamzaonyeh
-0x05c7 U0627 # Arabic_alef
-0x05c8 U0628 # Arabic_beh
-0x05c9 U0629 # Arabic_tehmarbuta
-0x05ca U062a # Arabic_teh
-0x05cb U062b # Arabic_theh
-0x05cc U062c # Arabic_jeem
-0x05cd U062d # Arabic_hah
-0x05ce U062e # Arabic_khah
-0x05cf U062f # Arabic_dal
-0x05d0 U0630 # Arabic_thal
-0x05d1 U0631 # Arabic_ra
-0x05d2 U0632 # Arabic_zain
-0x05d3 U0633 # Arabic_seen
-0x05d4 U0634 # Arabic_sheen
-0x05d5 U0635 # Arabic_sad
-0x05d6 U0636 # Arabic_dad
-0x05d7 U0637 # Arabic_tah
-0x05d8 U0638 # Arabic_zah
-0x05d9 U0639 # Arabic_ain
-0x05da U063a # Arabic_ghain
-0x05e0 U0640 # Arabic_tatweel
-0x05e1 U0641 # Arabic_feh
-0x05e2 U0642 # Arabic_qaf
-0x05e3 U0643 # Arabic_kaf
-0x05e4 U0644 # Arabic_lam
-0x05e5 U0645 # Arabic_meem
-0x05e6 U0646 # Arabic_noon
-0x05e7 U0647 # Arabic_ha
-0x05e8 U0648 # Arabic_waw
-0x05e9 U0649 # Arabic_alefmaksura
-0x05ea U064a # Arabic_yeh
-0x05eb U064b # Arabic_fathatan
-0x05ec U064c # Arabic_dammatan
-0x05ed U064d # Arabic_kasratan
-0x05ee U064e # Arabic_fatha
-0x05ef U064f # Arabic_damma
-0x05f0 U0650 # Arabic_kasra
-0x05f1 U0651 # Arabic_shadda
-0x05f2 U0652 # Arabic_sukun
-0x06a1 U0452 # Serbian_dje
-0x06a2 U0453 # Macedonia_gje
-0x06a3 U0451 # Cyrillic_io
-0x06a4 U0454 # Ukrainian_ie
-0x06a5 U0455 # Macedonia_dse
-0x06a6 U0456 # Ukrainian_i
-0x06a7 U0457 # Ukrainian_yi
-0x06a8 U0458 # Cyrillic_je
-0x06a9 U0459 # Cyrillic_lje
-0x06aa U045a # Cyrillic_nje
-0x06ab U045b # Serbian_tshe
-0x06ac U045c # Macedonia_kje
-0x06ae U045e # Byelorussian_shortu
-0x06af U045f # Cyrillic_dzhe
-0x06b0 U2116 # numerosign
-0x06b1 U0402 # Serbian_DJE
-0x06b2 U0403 # Macedonia_GJE
-0x06b3 U0401 # Cyrillic_IO
-0x06b4 U0404 # Ukrainian_IE
-0x06b5 U0405 # Macedonia_DSE
-0x06b6 U0406 # Ukrainian_I
-0x06b7 U0407 # Ukrainian_YI
-0x06b8 U0408 # Cyrillic_JE
-0x06b9 U0409 # Cyrillic_LJE
-0x06ba U040a # Cyrillic_NJE
-0x06bb U040b # Serbian_TSHE
-0x06bc U040c # Macedonia_KJE
-0x06be U040e # Byelorussian_SHORTU
-0x06bf U040f # Cyrillic_DZHE
-0x06c0 U044e # Cyrillic_yu
-0x06c1 U0430 # Cyrillic_a
-0x06c2 U0431 # Cyrillic_be
-0x06c3 U0446 # Cyrillic_tse
-0x06c4 U0434 # Cyrillic_de
-0x06c5 U0435 # Cyrillic_ie
-0x06c6 U0444 # Cyrillic_ef
-0x06c7 U0433 # Cyrillic_ghe
-0x06c8 U0445 # Cyrillic_ha
-0x06c9 U0438 # Cyrillic_i
-0x06ca U0439 # Cyrillic_shorti
-0x06cb U043a # Cyrillic_ka
-0x06cc U043b # Cyrillic_el
-0x06cd U043c # Cyrillic_em
-0x06ce U043d # Cyrillic_en
-0x06cf U043e # Cyrillic_o
-0x06d0 U043f # Cyrillic_pe
-0x06d1 U044f # Cyrillic_ya
-0x06d2 U0440 # Cyrillic_er
-0x06d3 U0441 # Cyrillic_es
-0x06d4 U0442 # Cyrillic_te
-0x06d5 U0443 # Cyrillic_u
-0x06d6 U0436 # Cyrillic_zhe
-0x06d7 U0432 # Cyrillic_ve
-0x06d8 U044c # Cyrillic_softsign
-0x06d9 U044b # Cyrillic_yeru
-0x06da U0437 # Cyrillic_ze
-0x06db U0448 # Cyrillic_sha
-0x06dc U044d # Cyrillic_e
-0x06dd U0449 # Cyrillic_shcha
-0x06de U0447 # Cyrillic_che
-0x06df U044a # Cyrillic_hardsign
-0x06e0 U042e # Cyrillic_YU
-0x06e1 U0410 # Cyrillic_A
-0x06e2 U0411 # Cyrillic_BE
-0x06e3 U0426 # Cyrillic_TSE
-0x06e4 U0414 # Cyrillic_DE
-0x06e5 U0415 # Cyrillic_IE
-0x06e6 U0424 # Cyrillic_EF
-0x06e7 U0413 # Cyrillic_GHE
-0x06e8 U0425 # Cyrillic_HA
-0x06e9 U0418 # Cyrillic_I
-0x06ea U0419 # Cyrillic_SHORTI
-0x06eb U041a # Cyrillic_KA
-0x06ec U041b # Cyrillic_EL
-0x06ed U041c # Cyrillic_EM
-0x06ee U041d # Cyrillic_EN
-0x06ef U041e # Cyrillic_O
-0x06f0 U041f # Cyrillic_PE
-0x06f1 U042f # Cyrillic_YA
-0x06f2 U0420 # Cyrillic_ER
-0x06f3 U0421 # Cyrillic_ES
-0x06f4 U0422 # Cyrillic_TE
-0x06f5 U0423 # Cyrillic_U
-0x06f6 U0416 # Cyrillic_ZHE
-0x06f7 U0412 # Cyrillic_VE
-0x06f8 U042c # Cyrillic_SOFTSIGN
-0x06f9 U042b # Cyrillic_YERU
-0x06fa U0417 # Cyrillic_ZE
-0x06fb U0428 # Cyrillic_SHA
-0x06fc U042d # Cyrillic_E
-0x06fd U0429 # Cyrillic_SHCHA
-0x06fe U0427 # Cyrillic_CHE
-0x06ff U042a # Cyrillic_HARDSIGN
-0x07a1 U0386 # Greek_ALPHAaccent
-0x07a2 U0388 # Greek_EPSILONaccent
-0x07a3 U0389 # Greek_ETAaccent
-0x07a4 U038a # Greek_IOTAaccent
-0x07a5 U03aa # Greek_IOTAdiaeresis
-0x07a7 U038c # Greek_OMICRONaccent
-0x07a8 U038e # Greek_UPSILONaccent
-0x07a9 U03ab # Greek_UPSILONdieresis
-0x07ab U038f # Greek_OMEGAaccent
-0x07ae U0385 # Greek_accentdieresis
-0x07af U2015 # Greek_horizbar
-0x07b1 U03ac # Greek_alphaaccent
-0x07b2 U03ad # Greek_epsilonaccent
-0x07b3 U03ae # Greek_etaaccent
-0x07b4 U03af # Greek_iotaaccent
-0x07b5 U03ca # Greek_iotadieresis
-0x07b6 U0390 # Greek_iotaaccentdieresis
-0x07b7 U03cc # Greek_omicronaccent
-0x07b8 U03cd # Greek_upsilonaccent
-0x07b9 U03cb # Greek_upsilondieresis
-0x07ba U03b0 # Greek_upsilonaccentdieresis
-0x07bb U03ce # Greek_omegaaccent
-0x07c1 U0391 # Greek_ALPHA
-0x07c2 U0392 # Greek_BETA
-0x07c3 U0393 # Greek_GAMMA
-0x07c4 U0394 # Greek_DELTA
-0x07c5 U0395 # Greek_EPSILON
-0x07c6 U0396 # Greek_ZETA
-0x07c7 U0397 # Greek_ETA
-0x07c8 U0398 # Greek_THETA
-0x07c9 U0399 # Greek_IOTA
-0x07ca U039a # Greek_KAPPA
-0x07cb U039b # Greek_LAMBDA
-0x07cb U039b # Greek_LAMDA
-0x07cc U039c # Greek_MU
-0x07cd U039d # Greek_NU
-0x07ce U039e # Greek_XI
-0x07cf U039f # Greek_OMICRON
-0x07d0 U03a0 # Greek_PI
-0x07d1 U03a1 # Greek_RHO
-0x07d2 U03a3 # Greek_SIGMA
-0x07d4 U03a4 # Greek_TAU
-0x07d5 U03a5 # Greek_UPSILON
-0x07d6 U03a6 # Greek_PHI
-0x07d7 U03a7 # Greek_CHI
-0x07d8 U03a8 # Greek_PSI
-0x07d9 U03a9 # Greek_OMEGA
-0x07e1 U03b1 # Greek_alpha
-0x07e2 U03b2 # Greek_beta
-0x07e3 U03b3 # Greek_gamma
-0x07e4 U03b4 # Greek_delta
-0x07e5 U03b5 # Greek_epsilon
-0x07e6 U03b6 # Greek_zeta
-0x07e7 U03b7 # Greek_eta
-0x07e8 U03b8 # Greek_theta
-0x07e9 U03b9 # Greek_iota
-0x07ea U03ba # Greek_kappa
-0x07eb U03bb # Greek_lambda
-0x07ec U03bc # Greek_mu
-0x07ed U03bd # Greek_nu
-0x07ee U03be # Greek_xi
-0x07ef U03bf # Greek_omicron
-0x07f0 U03c0 # Greek_pi
-0x07f1 U03c1 # Greek_rho
-0x07f2 U03c3 # Greek_sigma
-0x07f3 U03c2 # Greek_finalsmallsigma
-0x07f4 U03c4 # Greek_tau
-0x07f5 U03c5 # Greek_upsilon
-0x07f6 U03c6 # Greek_phi
-0x07f7 U03c7 # Greek_chi
-0x07f8 U03c8 # Greek_psi
-0x07f9 U03c9 # Greek_omega
-0x08a1 U0000 # leftradical
-0x08a2 U0000 # topleftradical
-0x08a3 U0000 # horizconnector
-0x08a4 U2320 # topintegral
-0x08a5 U2321 # botintegral
-0x08a6 U2502 # vertconnector
-0x08a7 U0000 # topleftsqbracket
-0x08a8 U0000 # botleftsqbracket
-0x08a9 U0000 # toprightsqbracket
-0x08aa U0000 # botrightsqbracket
-0x08ab U0000 # topleftparens
-0x08ac U0000 # botleftparens
-0x08ad U0000 # toprightparens
-0x08ae U0000 # botrightparens
-0x08af U0000 # leftmiddlecurlybrace
-0x08b0 U0000 # rightmiddlecurlybrace
-0x08b1 U0000 # topleftsummation
-0x08b2 U0000 # botleftsummation
-0x08b3 U0000 # topvertsummationconnector
-0x08b4 U0000 # botvertsummationconnector
-0x08b5 U0000 # toprightsummation
-0x08b6 U0000 # botrightsummation
-0x08b7 U0000 # rightmiddlesummation
-0x08bc U2264 # lessthanequal
-0x08bd U2260 # notequal
-0x08be U2265 # greaterthanequal
-0x08bf U222b # integral
-0x08c0 U2234 # therefore
-0x08c1 U221d # variation
-0x08c2 U221e # infinity
-0x08c5 U2207 # nabla
-0x08c8 U2245 # approximate
-0x08c9 U0000 # similarequal
-0x08cd U21d4 # ifonlyif
-0x08ce U21d2 # implies
-0x08cf U2261 # identical
-0x08d6 U221a # radical
-0x08da U2282 # includedin
-0x08db U2283 # includes
-0x08dc U2229 # intersection
-0x08dd U222a # union
-0x08de U2227 # logicaland
-0x08df U2228 # logicalor
-0x08ef U2202 # partialderivative
-0x08f6 U0192 # function
-0x08fb U2190 # leftarrow
-0x08fc U2191 # uparrow
-0x08fd U2192 # rightarrow
-0x08fe U2193 # downarrow
-0x09df U2422 # blank
-0x09e0 U25c6 # soliddiamond
-0x09e1 U2592 # checkerboard
-0x09e2 U2409 # ht
-0x09e3 U240c # ff
-0x09e4 U240d # cr
-0x09e5 U240a # lf
-0x09e8 U2424 # nl
-0x09e9 U240b # vt
-0x09ea U2518 # lowrightcorner
-0x09eb U2510 # uprightcorner
-0x09ec U250c # upleftcorner
-0x09ed U2514 # lowleftcorner
-0x09ee U253c # crossinglines
-0x09ef U0000 # horizlinescan1
-0x09f0 U0000 # horizlinescan3
-0x09f1 U2500 # horizlinescan5
-0x09f2 U0000 # horizlinescan7
-0x09f3 U0000 # horizlinescan9
-0x09f4 U251c # leftt
-0x09f5 U2524 # rightt
-0x09f6 U2534 # bott
-0x09f7 U252c # topt
-0x09f8 U2502 # vertbar
-0xfe50 U0300 # dead_grave
-0xfe51 U0301 # dead_acute
-0xfe52 U0302 # dead_circumflex
-0xfe53 U0303 # dead_tilde
-0xfe54 U0304 # dead_macron
-0xfe55 U0306 # dead_breve
-0xfe56 U0307 # dead_abovedot
-0xfe57 U0308 # dead_diaeresis
-0xfe58 U030a # dead_abovering
-0xfe59 U030b # dead_doubleacute
-0xfe5a U030c # dead_caron
-0xfe5b U0327 # dead_cedilla
-0xfe5c U0328 # dead_ogonek
-0xfe5d U0345 # dead_iota
-0xfe5e U3099 # dead_voiced_sound
-0xfe5f U309a # dead_semivoiced_sound
-0xff08 U0008 # BackSpace /* back space, back char */
-0xff09 U0009 # Tab
-0xff0a U000a # Linefeed /* Linefeed, LF */
-0xff0b U000b # Clear
-0xff0d U000d # Return /* Return, enter */
-0xff13 U0013 # Pause /* Pause, hold */
-0xff14 U0014 # Scroll_Lock
-0xff15 U0015 # Sys_Req
-0xff1b U001b # Escape
-0xff80 U0032 # KP_Space /* space */
-0xff89 U0009 # KP_Tab
-0xff8d U000d # KP_Enter /* enter */
-0xffaa U002a # KP_Multiply
-0xffab U002b # KP_Add
-0xffac U002c # KP_Separator /* separator, often comma */
-0xffad U002d # KP_Subtract
-0xffae U002e # KP_Decimal
-0xffaf U002f # KP_Divide
-0xffb0 U0030 # KP_0
-0xffb1 U0031 # KP_1
-0xffb2 U0032 # KP_2
-0xffb3 U0033 # KP_3
-0xffb4 U0034 # KP_4
-0xffb5 U0035 # KP_5
-0xffb6 U0036 # KP_6
-0xffb7 U0037 # KP_7
-0xffb8 U0038 # KP_8
-0xffb9 U0039 # KP_9
-0xffbd U003d # KP_Equal /* equals */
-0x0aa1 U2003 # emspace
-0x0aa2 U2002 # enspace
-0x0aa3 U2004 # em3space
-0x0aa4 U2005 # em4space
-0x0aa5 U2007 # digitspace
-0x0aa6 U2008 # punctspace
-0x0aa7 U2009 # thinspace
-0x0aa8 U200a # hairspace
-0x0aa9 U2014 # emdash
-0x0aaa U2013 # endash
-0x0aac U0000 # signifblank
-0x0aae U2026 # ellipsis
-0x0aaf U0000 # doubbaselinedot
-0x0ab0 U2153 # onethird
-0x0ab1 U2154 # twothirds
-0x0ab2 U2155 # onefifth
-0x0ab3 U2156 # twofifths
-0x0ab4 U2157 # threefifths
-0x0ab5 U2158 # fourfifths
-0x0ab6 U2159 # onesixth
-0x0ab7 U215a # fivesixths
-0x0ab8 U2105 # careof
-0x0abb U2012 # figdash
-0x0abc U2329 # leftanglebracket
-0x0abd U002e # decimalpoint
-0x0abe U232a # rightanglebracket
-0x0abf U0000 # marker
-0x0ac3 U215b # oneeighth
-0x0ac4 U215c # threeeighths
-0x0ac5 U215d # fiveeighths
-0x0ac6 U215e # seveneighths
-0x0ac9 U2122 # trademark
-0x0aca U2613 # signaturemark
-0x0acb U0000 # trademarkincircle
-0x0acc U25c1 # leftopentriangle
-0x0acd U25b7 # rightopentriangle
-0x0ace U25cb # emopencircle
-0x0acf U25a1 # emopenrectangle
-0x0ad0 U2018 # leftsinglequotemark
-0x0ad1 U2019 # rightsinglequotemark
-0x0ad2 U201c # leftdoublequotemark
-0x0ad3 U201d # rightdoublequotemark
-0x0ad4 U211e # prescription
-0x0ad6 U2032 # minutes
-0x0ad7 U2033 # seconds
-0x0ad9 U271d # latincross
-0x0ada U0000 # hexagram
-0x0adb U25ac # filledrectbullet
-0x0adc U25c0 # filledlefttribullet
-0x0add U25b6 # filledrighttribullet
-0x0ade U25cf # emfilledcircle
-0x0adf U25a0 # emfilledrect
-0x0ae0 U25e6 # enopencircbullet
-0x0ae1 U25ab # enopensquarebullet
-0x0ae2 U25ad # openrectbullet
-0x0ae3 U25b3 # opentribulletup
-0x0ae4 U25bd # opentribulletdown
-0x0ae5 U2606 # openstar
-0x0ae6 U2022 # enfilledcircbullet
-0x0ae7 U25aa # enfilledsqbullet
-0x0ae8 U25b2 # filledtribulletup
-0x0ae9 U25bc # filledtribulletdown
-0x0aea U261c # leftpointer
-0x0aeb U261e # rightpointer
-0x0aec U2663 # club
-0x0aed U2666 # diamond
-0x0aee U2665 # heart
-0x0af0 U2720 # maltesecross
-0x0af1 U2020 # dagger
-0x0af2 U2021 # doubledagger
-0x0af3 U2713 # checkmark
-0x0af4 U2717 # ballotcross
-0x0af5 U266f # musicalsharp
-0x0af6 U266d # musicalflat
-0x0af7 U2642 # malesymbol
-0x0af8 U2640 # femalesymbol
-0x0af9 U260e # telephone
-0x0afa U2315 # telephonerecorder
-0x0afb U2117 # phonographcopyright
-0x0afc U2038 # caret
-0x0afd U201a # singlelowquotemark
-0x0afe U201e # doublelowquotemark
-0x0aff U0000 # cursor
-0x0ba3 U003c # leftcaret
-0x0ba6 U003e # rightcaret
-0x0ba8 U2228 # downcaret
-0x0ba9 U2227 # upcaret
-0x0bc0 U00af # overbar
-0x0bc2 U22a4 # downtack
-0x0bc3 U2229 # upshoe
-0x0bc4 U230a # downstile
-0x0bc6 U005f # underbar
-0x0bca U2218 # jot
-0x0bcc U2395 # quad
-0x0bce U22a5 # uptack
-0x0bcf U25cb # circle
-0x0bd3 U2308 # upstile
-0x0bd6 U222a # downshoe
-0x0bd8 U2283 # rightshoe
-0x0bda U2282 # leftshoe
-0x0bdc U22a3 # lefttack
-0x0bfc U22a2 # righttack
-0x0cdf U2017 # hebrew_doublelowline
-0x0ce0 U05d0 # hebrew_aleph
-0x0ce1 U05d1 # hebrew_bet
-0x0ce1 U05d1 # hebrew_beth /* deprecated */
-0x0ce2 U05d2 # hebrew_gimel
-0x0ce2 U05d2 # hebrew_gimmel /* deprecated */
-0x0ce3 U05d3 # hebrew_dalet
-0x0ce3 U05d3 # hebrew_daleth /* deprecated */
-0x0ce4 U05d4 # hebrew_he
-0x0ce5 U05d5 # hebrew_waw
-0x0ce6 U05d6 # hebrew_zain
-0x0ce6 U05d6 # hebrew_zayin /* deprecated */
-0x0ce7 U05d7 # hebrew_chet
-0x0ce7 U05d7 # hebrew_het /* deprecated */
-0x0ce8 U05d8 # hebrew_tet
-0x0ce8 U05d8 # hebrew_teth /* deprecated */
-0x0ce9 U05d9 # hebrew_yod
-0x0cea U05da # hebrew_finalkaph
-0x0ceb U05db # hebrew_kaph
-0x0cec U05dc # hebrew_lamed
-0x0ced U05dd # hebrew_finalmem
-0x0cee U05de # hebrew_mem
-0x0cef U05df # hebrew_finalnun
-0x0cf0 U05e0 # hebrew_nun
-0x0cf1 U05e1 # hebrew_samech
-0x0cf1 U05e1 # hebrew_samekh /* deprecated */
-0x0cf2 U05e2 # hebrew_ayin
-0x0cf3 U05e3 # hebrew_finalpe
-0x0cf4 U05e4 # hebrew_pe
-0x0cf5 U05e5 # hebrew_finalzade
-0x0cf5 U05e5 # hebrew_finalzadi /* deprecated */
-0x0cf6 U05e6 # hebrew_zade
-0x0cf6 U05e6 # hebrew_zadi /* deprecated */
-0x0cf7 U05e7 # hebrew_kuf /* deprecated */
-0x0cf7 U05e7 # hebrew_qoph
-0x0cf8 U05e8 # hebrew_resh
-0x0cf9 U05e9 # hebrew_shin
-0x0cfa U05ea # hebrew_taf /* deprecated */
-0x0cfa U05ea # hebrew_taw
-0x0da1 U0e01 # Thai_kokai
-0x0da2 U0e02 # Thai_khokhai
-0x0da3 U0e03 # Thai_khokhuat
-0x0da4 U0e04 # Thai_khokhwai
-0x0da5 U0e05 # Thai_khokhon
-0x0da6 U0e06 # Thai_khorakhang
-0x0da7 U0e07 # Thai_ngongu
-0x0da8 U0e08 # Thai_chochan
-0x0da9 U0e09 # Thai_choching
-0x0daa U0e0a # Thai_chochang
-0x0dab U0e0b # Thai_soso
-0x0dac U0e0c # Thai_chochoe
-0x0dad U0e0d # Thai_yoying
-0x0dae U0e0e # Thai_dochada
-0x0daf U0e0f # Thai_topatak
-0x0db0 U0e10 # Thai_thothan
-0x0db1 U0e11 # Thai_thonangmontho
-0x0db2 U0e12 # Thai_thophuthao
-0x0db3 U0e13 # Thai_nonen
-0x0db4 U0e14 # Thai_dodek
-0x0db5 U0e15 # Thai_totao
-0x0db6 U0e16 # Thai_thothung
-0x0db7 U0e17 # Thai_thothahan
-0x0db8 U0e18 # Thai_thothong
-0x0db9 U0e19 # Thai_nonu
-0x0dba U0e1a # Thai_bobaimai
-0x0dbb U0e1b # Thai_popla
-0x0dbc U0e1c # Thai_phophung
-0x0dbd U0e1d # Thai_fofa
-0x0dbe U0e1e # Thai_phophan
-0x0dbf U0e1f # Thai_fofan
-0x0dc0 U0e20 # Thai_phosamphao
-0x0dc1 U0e21 # Thai_moma
-0x0dc2 U0e22 # Thai_yoyak
-0x0dc3 U0e23 # Thai_rorua
-0x0dc4 U0e24 # Thai_ru
-0x0dc5 U0e25 # Thai_loling
-0x0dc6 U0e26 # Thai_lu
-0x0dc7 U0e27 # Thai_wowaen
-0x0dc8 U0e28 # Thai_sosala
-0x0dc9 U0e29 # Thai_sorusi
-0x0dca U0e2a # Thai_sosua
-0x0dcb U0e2b # Thai_hohip
-0x0dcc U0e2c # Thai_lochula
-0x0dcd U0e2d # Thai_oang
-0x0dce U0e2e # Thai_honokhuk
-0x0dcf U0e2f # Thai_paiyannoi
-0x0dd0 U0e30 # Thai_saraa
-0x0dd1 U0e31 # Thai_maihanakat
-0x0dd2 U0e32 # Thai_saraaa
-0x0dd3 U0e33 # Thai_saraam
-0x0dd4 U0e34 # Thai_sarai
-0x0dd5 U0e35 # Thai_saraii
-0x0dd6 U0e36 # Thai_saraue
-0x0dd7 U0e37 # Thai_sarauee
-0x0dd8 U0e38 # Thai_sarau
-0x0dd9 U0e39 # Thai_sarauu
-0x0dda U0e3a # Thai_phinthu
-0x0dde U0e3e # Thai_maihanakat_maitho
-0x0ddf U0e3f # Thai_baht
-0x0de0 U0e40 # Thai_sarae
-0x0de1 U0e41 # Thai_saraae
-0x0de2 U0e42 # Thai_sarao
-0x0de3 U0e43 # Thai_saraaimaimuan
-0x0de4 U0e44 # Thai_saraaimaimalai
-0x0de5 U0e45 # Thai_lakkhangyao
-0x0de6 U0e46 # Thai_maiyamok
-0x0de7 U0e47 # Thai_maitaikhu
-0x0de8 U0e48 # Thai_maiek
-0x0de9 U0e49 # Thai_maitho
-0x0dea U0e4a # Thai_maitri
-0x0deb U0e4b # Thai_maichattawa
-0x0dec U0e4c # Thai_thanthakhat
-0x0ded U0e4d # Thai_nikhahit
-0x0df0 U0e50 # Thai_leksun
-0x0df1 U0e51 # Thai_leknung
-0x0df2 U0e52 # Thai_leksong
-0x0df3 U0e53 # Thai_leksam
-0x0df4 U0e54 # Thai_leksi
-0x0df5 U0e55 # Thai_lekha
-0x0df6 U0e56 # Thai_lekhok
-0x0df7 U0e57 # Thai_lekchet
-0x0df8 U0e58 # Thai_lekpaet
-0x0df9 U0e59 # Thai_lekkao
-0x0ea1 U3131 # Hangul_Kiyeog
-0x0ea2 U3132 # Hangul_SsangKiyeog
-0x0ea3 U3133 # Hangul_KiyeogSios
-0x0ea4 U3134 # Hangul_Nieun
-0x0ea5 U3135 # Hangul_NieunJieuj
-0x0ea6 U3136 # Hangul_NieunHieuh
-0x0ea7 U3137 # Hangul_Dikeud
-0x0ea8 U3138 # Hangul_SsangDikeud
-0x0ea9 U3139 # Hangul_Rieul
-0x0eaa U313a # Hangul_RieulKiyeog
-0x0eab U313b # Hangul_RieulMieum
-0x0eac U313c # Hangul_RieulPieub
-0x0ead U313d # Hangul_RieulSios
-0x0eae U313e # Hangul_RieulTieut
-0x0eaf U313f # Hangul_RieulPhieuf
-0x0eb0 U3140 # Hangul_RieulHieuh
-0x0eb1 U3141 # Hangul_Mieum
-0x0eb2 U3142 # Hangul_Pieub
-0x0eb3 U3143 # Hangul_SsangPieub
-0x0eb4 U3144 # Hangul_PieubSios
-0x0eb5 U3145 # Hangul_Sios
-0x0eb6 U3146 # Hangul_SsangSios
-0x0eb7 U3147 # Hangul_Ieung
-0x0eb8 U3148 # Hangul_Jieuj
-0x0eb9 U3149 # Hangul_SsangJieuj
-0x0eba U314a # Hangul_Cieuc
-0x0ebb U314b # Hangul_Khieuq
-0x0ebc U314c # Hangul_Tieut
-0x0ebd U314d # Hangul_Phieuf
-0x0ebe U314e # Hangul_Hieuh
-0x0ebf U314f # Hangul_A
-0x0ec0 U3150 # Hangul_AE
-0x0ec1 U3151 # Hangul_YA
-0x0ec2 U3152 # Hangul_YAE
-0x0ec3 U3153 # Hangul_EO
-0x0ec4 U3154 # Hangul_E
-0x0ec5 U3155 # Hangul_YEO
-0x0ec6 U3156 # Hangul_YE
-0x0ec7 U3157 # Hangul_O
-0x0ec8 U3158 # Hangul_WA
-0x0ec9 U3159 # Hangul_WAE
-0x0eca U315a # Hangul_OE
-0x0ecb U315b # Hangul_YO
-0x0ecc U315c # Hangul_U
-0x0ecd U315d # Hangul_WEO
-0x0ece U315e # Hangul_WE
-0x0ecf U315f # Hangul_WI
-0x0ed0 U3160 # Hangul_YU
-0x0ed1 U3161 # Hangul_EU
-0x0ed2 U3162 # Hangul_YI
-0x0ed3 U3163 # Hangul_I
-0x0ed4 U11a8 # Hangul_J_Kiyeog
-0x0ed5 U11a9 # Hangul_J_SsangKiyeog
-0x0ed6 U11aa # Hangul_J_KiyeogSios
-0x0ed7 U11ab # Hangul_J_Nieun
-0x0ed8 U11ac # Hangul_J_NieunJieuj
-0x0ed9 U11ad # Hangul_J_NieunHieuh
-0x0eda U11ae # Hangul_J_Dikeud
-0x0edb U11af # Hangul_J_Rieul
-0x0edc U11b0 # Hangul_J_RieulKiyeog
-0x0edd U11b1 # Hangul_J_RieulMieum
-0x0ede U11b2 # Hangul_J_RieulPieub
-0x0edf U11b3 # Hangul_J_RieulSios
-0x0ee0 U11b4 # Hangul_J_RieulTieut
-0x0ee1 U11b5 # Hangul_J_RieulPhieuf
-0x0ee2 U11b6 # Hangul_J_RieulHieuh
-0x0ee3 U11b7 # Hangul_J_Mieum
-0x0ee4 U11b8 # Hangul_J_Pieub
-0x0ee5 U11b9 # Hangul_J_PieubSios
-0x0ee6 U11ba # Hangul_J_Sios
-0x0ee7 U11bb # Hangul_J_SsangSios
-0x0ee8 U11bc # Hangul_J_Ieung
-0x0ee9 U11bd # Hangul_J_Jieuj
-0x0eea U11be # Hangul_J_Cieuc
-0x0eeb U11bf # Hangul_J_Khieuq
-0x0eec U11c0 # Hangul_J_Tieut
-0x0eed U11c1 # Hangul_J_Phieuf
-0x0eee U11c2 # Hangul_J_Hieuh
-0x0eef U316d # Hangul_RieulYeorinHieuh
-0x0ef0 U3171 # Hangul_SunkyeongeumMieum
-0x0ef1 U3178 # Hangul_SunkyeongeumPieub
-0x0ef2 U317f # Hangul_PanSios
-0x0ef3 U0000 # Hangul_KkogjiDalrinIeung
-0x0ef4 U3184 # Hangul_SunkyeongeumPhieuf
-0x0ef5 U3186 # Hangul_YeorinHieuh
-0x0ef6 U318d # Hangul_AraeA
-0x0ef7 U318e # Hangul_AraeAE
-0x0ef8 U11eb # Hangul_J_PanSios
-0x0ef9 U0000 # Hangul_J_KkogjiDalrinIeung
-0x0efa U11f9 # Hangul_J_YeorinHieuh
-0x0eff U20a9 # Korean_Won
-0x20a0 U20a0 # EcuSign
-0x20a1 U20a1 # ColonSign
-0x20a2 U20a2 # CruzeiroSign
-0x20a3 U20a3 # FFrancSign
-0x20a4 U20a4 # LiraSign
-0x20a5 U20a5 # MillSign
-0x20a6 U20a6 # NairaSign
-0x20a7 U20a7 # PesetaSign
-0x20a8 U20a8 # RupeeSign
-0x20a9 U20a9 # WonSign
-0x20aa U20aa # NewSheqelSign
-0x20ab U20ab # DongSign
-0x20ac U20ac # EuroSign
diff --git a/nx-X11/programs/xterm/unicode/make-precompose.sh b/nx-X11/programs/xterm/unicode/make-precompose.sh
deleted file mode 100644
index 747866c4d..000000000
--- a/nx-X11/programs/xterm/unicode/make-precompose.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-# $XTermId: make-precompose.sh,v 1.5 2005/04/03 16:58:30 tom Exp $
-# $XFree86: xc/programs/xterm/unicode/make-precompose.sh,v 1.4 2005/03/29 04:00:32 tsi Exp $
-cat precompose.c.head | sed -e's/@/$/g'
-cut UnicodeData.txt -d ";" -f 1,6 | \
- grep ";[0-9,A-F]" | grep " " | \
- sed -e "s/ /, 0x/;s/^/{ 0x/;s/;/, 0x/;s/$/},/" | (sort -k 3 || sort +2)
-cat precompose.c.tail
diff --git a/nx-X11/programs/xterm/unicode/precompose.c.head b/nx-X11/programs/xterm/unicode/precompose.c.head
deleted file mode 100644
index c51f752d7..000000000
--- a/nx-X11/programs/xterm/unicode/precompose.c.head
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Canonical Compositions
- *
- * DO NOT EDIT BY HAND! This is generated by the script
- * unicode/make-precompose.sh
- */
-/* @XTermId@ */
-/* @XFree86@ */
-
-#include <precompose.h>
-
-static struct {
- int replacement;
- int base;
- int comb;
-} precompositions[] = {
diff --git a/nx-X11/programs/xterm/unicode/precompose.c.tail b/nx-X11/programs/xterm/unicode/precompose.c.tail
deleted file mode 100644
index 0ceca9b6c..000000000
--- a/nx-X11/programs/xterm/unicode/precompose.c.tail
+++ /dev/null
@@ -1,23 +0,0 @@
-};
-
-int do_precomposition(int base, int comb) {
- int min = 0;
- int max = sizeof(precompositions) / sizeof(precompositions[0]) - 1;
- int mid;
- unsigned int sought = ((unsigned)base << 16) | (unsigned)comb, that;
-
- /* binary search */
- while (max >= min) {
- mid = (min + max) / 2;
- that = ((unsigned)precompositions[mid].base << 16) | ((unsigned)precompositions[mid].comb);
- if (that < sought) {
- min = mid + 1;
- } else if (that > sought) {
- max = mid - 1;
- } else {
- return precompositions[mid].replacement;
- }
- }
- /* no match */
- return -1;
-}
diff --git a/nx-X11/programs/xterm/util.c b/nx-X11/programs/xterm/util.c
deleted file mode 100644
index 84feac48f..000000000
--- a/nx-X11/programs/xterm/util.c
+++ /dev/null
@@ -1,2951 +0,0 @@
-/* $XTermId: util.c,v 1.255 2005/09/18 23:48:13 tom Exp $ */
-
-/*
- * $Xorg: util.c,v 1.3 2000/08/17 19:55:10 cpqbld Exp $
- */
-
-/* $XFree86: xc/programs/xterm/util.c,v 3.93 2005/09/18 23:48:13 dickey Exp $ */
-
-/*
- * Copyright 1999-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/* util.c */
-
-#include <xterm.h>
-
-#include <data.h>
-#include <error.h>
-#include <menu.h>
-#include <fontutils.h>
-#include <xstrings.h>
-
-#if OPT_WIDE_CHARS
-#if defined(HAVE_WCHAR_H) && defined(HAVE_WCWIDTH)
-#include <wchar.h>
-#endif
-#include <wcwidth.h>
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-#include <assert.h>
-
-static int ClearInLine(TScreen * screen, int row, int col, unsigned len);
-static int handle_translated_exposure(TScreen * screen,
- int rect_x,
- int rect_y,
- int rect_width,
- int rect_height);
-static void ClearLeft(TScreen * screen);
-static void CopyWait(TScreen * screen);
-static void horizontal_copy_area(TScreen * screen,
- int firstchar,
- int nchars,
- int amount);
-static void vertical_copy_area(TScreen * screen,
- int firstline,
- int nlines,
- int amount);
-
-#if OPT_WIDE_CHARS
-int (*my_wcwidth) (wchar_t);
-#endif
-
-/*
- * These routines are used for the jump scroll feature
- */
-void
-FlushScroll(TScreen * screen)
-{
- int i;
- int shift = -screen->topline;
- int bot = screen->max_row - shift;
- int refreshtop;
- int refreshheight;
- int scrolltop;
- int scrollheight;
-
- if (screen->cursor_state)
- HideCursor();
- if (screen->scroll_amt > 0) {
- refreshheight = screen->refresh_amt;
- scrollheight = screen->bot_marg - screen->top_marg -
- refreshheight + 1;
- if ((refreshtop = screen->bot_marg - refreshheight + 1 + shift) >
- (i = screen->max_row - screen->scroll_amt + 1))
- refreshtop = i;
- if (screen->scrollWidget && !screen->alternate
- && screen->top_marg == 0) {
- scrolltop = 0;
- if ((scrollheight += shift) > i)
- scrollheight = i;
- if ((i = screen->bot_marg - bot) > 0 &&
- (refreshheight -= i) < screen->scroll_amt)
- refreshheight = screen->scroll_amt;
- if ((i = screen->savedlines) < screen->savelines) {
- if ((i += screen->scroll_amt) >
- screen->savelines)
- i = screen->savelines;
- screen->savedlines = i;
- ScrollBarDrawThumb(screen->scrollWidget);
- }
- } else {
- scrolltop = screen->top_marg + shift;
- if ((i = bot - (screen->bot_marg - screen->refresh_amt +
- screen->scroll_amt)) > 0) {
- if (bot < screen->bot_marg)
- refreshheight = screen->scroll_amt + i;
- } else {
- scrollheight += i;
- refreshheight = screen->scroll_amt;
- if ((i = screen->top_marg + screen->scroll_amt -
- 1 - bot) > 0) {
- refreshtop += i;
- refreshheight -= i;
- }
- }
- }
- } else {
- refreshheight = -screen->refresh_amt;
- scrollheight = screen->bot_marg - screen->top_marg -
- refreshheight + 1;
- refreshtop = screen->top_marg + shift;
- scrolltop = refreshtop + refreshheight;
- if ((i = screen->bot_marg - bot) > 0)
- scrollheight -= i;
- if ((i = screen->top_marg + refreshheight - 1 - bot) > 0)
- refreshheight -= i;
- }
- scrolling_copy_area(screen, scrolltop + screen->scroll_amt,
- scrollheight, screen->scroll_amt);
- ScrollSelection(screen, -(screen->scroll_amt), False);
- screen->scroll_amt = 0;
- screen->refresh_amt = 0;
- if (refreshheight > 0) {
- ClearCurBackground(screen,
- (int) refreshtop * FontHeight(screen) + screen->border,
- (int) OriginX(screen),
- (unsigned) refreshheight * FontHeight(screen),
- (unsigned) Width(screen));
- ScrnRefresh(screen, refreshtop, 0, refreshheight,
- MaxCols(screen), False);
- }
- return;
-}
-
-int
-AddToRefresh(TScreen * screen)
-{
- int amount = screen->refresh_amt;
- int row = screen->cur_row;
-
- if (amount == 0) {
- return (0);
- } else if (amount > 0) {
- int bottom;
-
- if (row == (bottom = screen->bot_marg) - amount) {
- screen->refresh_amt++;
- return (1);
- }
- return (row >= bottom - amount + 1 && row <= bottom);
- } else {
- int top;
-
- amount = -amount;
- if (row == (top = screen->top_marg) + amount) {
- screen->refresh_amt--;
- return (1);
- }
- return (row <= top + amount - 1 && row >= top);
- }
-}
-
-/*
- * If we're scrolling, leave the selection intact if possible.
- * If it will bump into one of the extremes of the saved-lines, truncate that.
- * If the selection is not contained within the scrolled region, clear it.
- */
-static void
-adjustHiliteOnFwdScroll(TScreen * screen, int amount, Boolean all_lines)
-{
- int lo_row = (all_lines
- ? (screen->bot_marg - screen->savelines)
- : screen->top_marg);
- int hi_row = screen->bot_marg;
-
- TRACE2(("adjustSelection FWD %s by %d (%s)\n",
- screen->alternate ? "alternate" : "normal",
- amount,
- all_lines ? "all" : "visible"));
- TRACE2((" before highlite %d.%d .. %d.%d\n",
- screen->startHRow,
- screen->startHCol,
- screen->endHRow,
- screen->endHCol));
- TRACE2((" margins %d..%d\n", screen->top_marg, screen->bot_marg));
- TRACE2((" limits %d..%d\n", lo_row, hi_row));
-
- if (screen->startHRow >= lo_row
- && screen->startHRow - amount < lo_row) {
- /* truncate the selection because its start would move out of region */
- if (lo_row + amount <= screen->endHRow) {
- TRACE2(("truncate selection by changing start %d.%d to %d.%d\n",
- screen->startHRow,
- screen->startHCol,
- lo_row + amount,
- 0));
- screen->startHRow = lo_row + amount;
- screen->startHCol = 0;
- } else {
- TRACE2(("deselect because %d.%d .. %d.%d shifted %d is outside margins %d..%d\n",
- screen->startHRow,
- screen->startHCol,
- screen->endHRow,
- screen->endHCol,
- -amount,
- lo_row,
- hi_row));
- ScrnDisownSelection(screen);
- }
- } else if (screen->startHRow <= hi_row && screen->endHRow > hi_row) {
- ScrnDisownSelection(screen);
- } else if (screen->startHRow < lo_row && screen->endHRow > lo_row) {
- ScrnDisownSelection(screen);
- }
-
- TRACE2((" after highlite %d.%d .. %d.%d\n",
- screen->startHRow,
- screen->startHCol,
- screen->endHRow,
- screen->endHCol));
-}
-
-/*
- * This is the same as adjustHiliteOnFwdScroll(), but reversed. In this case,
- * only the visible lines are affected.
- */
-static void
-adjustHiliteOnBakScroll(TScreen * screen, int amount)
-{
- int lo_row = screen->top_marg;
- int hi_row = screen->bot_marg;
-
- TRACE2(("adjustSelection BAK %s by %d (%s)\n",
- screen->alternate ? "alternate" : "normal",
- amount,
- "visible"));
- TRACE2((" before highlite %d.%d .. %d.%d\n",
- screen->startHRow,
- screen->startHCol,
- screen->endHRow,
- screen->endHCol));
- TRACE2((" margins %d..%d\n", screen->top_marg, screen->bot_marg));
-
- if (screen->endHRow >= hi_row
- && screen->endHRow + amount > hi_row) {
- /* truncate the selection because its start would move out of region */
- if (hi_row - amount >= screen->startHRow) {
- TRACE2(("truncate selection by changing start %d.%d to %d.%d\n",
- screen->startHRow,
- screen->startHCol,
- hi_row - amount,
- 0));
- screen->endHRow = hi_row - amount;
- screen->endHCol = 0;
- } else {
- TRACE2(("deselect because %d.%d .. %d.%d shifted %d is outside margins %d..%d\n",
- screen->startHRow,
- screen->startHCol,
- screen->endHRow,
- screen->endHCol,
- amount,
- lo_row,
- hi_row));
- ScrnDisownSelection(screen);
- }
- } else if (screen->endHRow >= lo_row && screen->startHRow < lo_row) {
- ScrnDisownSelection(screen);
- } else if (screen->endHRow > hi_row && screen->startHRow > hi_row) {
- ScrnDisownSelection(screen);
- }
-
- TRACE2((" after highlite %d.%d .. %d.%d\n",
- screen->startHRow,
- screen->startHCol,
- screen->endHRow,
- screen->endHCol));
-}
-
-/*
- * scrolls the screen by amount lines, erases bottom, doesn't alter
- * cursor position (i.e. cursor moves down amount relative to text).
- * All done within the scrolling region, of course.
- * requires: amount > 0
- */
-void
-xtermScroll(TScreen * screen, int amount)
-{
- int i = screen->bot_marg - screen->top_marg + 1;
- int shift;
- int bot;
- int refreshtop = 0;
- int refreshheight;
- int scrolltop;
- int scrollheight;
- Boolean scroll_all_lines = (screen->scrollWidget
- && !screen->alternate
- && screen->top_marg == 0);
-
- TRACE(("xtermScroll count=%d\n", amount));
-
- screen->cursor_busy += 1;
- screen->cursor_moved = True;
-
- if (screen->cursor_state)
- HideCursor();
-
- if (amount > i)
- amount = i;
-
- if (ScrnHaveSelection(screen))
- adjustHiliteOnFwdScroll(screen, amount, scroll_all_lines);
-
- if (screen->jumpscroll) {
- if (screen->scroll_amt > 0) {
- if (screen->refresh_amt + amount > i)
- FlushScroll(screen);
- screen->scroll_amt += amount;
- screen->refresh_amt += amount;
- } else {
- if (screen->scroll_amt < 0)
- FlushScroll(screen);
- screen->scroll_amt = amount;
- screen->refresh_amt = amount;
- }
- refreshheight = 0;
- } else {
- ScrollSelection(screen, -(amount), False);
- if (amount == i) {
- ClearScreen(screen);
- screen->cursor_busy -= 1;
- return;
- }
-
- shift = -screen->topline;
- bot = screen->max_row - shift;
- scrollheight = i - amount;
- refreshheight = amount;
-
- if ((refreshtop = screen->bot_marg - refreshheight + 1 + shift) >
- (i = screen->max_row - refreshheight + 1))
- refreshtop = i;
-
- if (scroll_all_lines) {
- scrolltop = 0;
- if ((scrollheight += shift) > i)
- scrollheight = i;
- if ((i = screen->savedlines) < screen->savelines) {
- if ((i += amount) > screen->savelines)
- i = screen->savelines;
- screen->savedlines = i;
- ScrollBarDrawThumb(screen->scrollWidget);
- }
- } else {
- scrolltop = screen->top_marg + shift;
- if ((i = screen->bot_marg - bot) > 0) {
- scrollheight -= i;
- if ((i = screen->top_marg + amount - 1 - bot) >= 0) {
- refreshtop += i;
- refreshheight -= i;
- }
- }
- }
-
- if (screen->multiscroll && amount == 1 &&
- screen->topline == 0 && screen->top_marg == 0 &&
- screen->bot_marg == screen->max_row) {
- if (screen->incopy < 0 && screen->scrolls == 0)
- CopyWait(screen);
- screen->scrolls++;
- }
-
- scrolling_copy_area(screen, scrolltop + amount, scrollheight, amount);
-
- if (refreshheight > 0) {
- ClearCurBackground(screen,
- (int) refreshtop * FontHeight(screen) + screen->border,
- (int) OriginX(screen),
- (unsigned) refreshheight * FontHeight(screen),
- (unsigned) Width(screen));
- if (refreshheight > shift)
- refreshheight = shift;
- }
- }
-
- if (amount > 0) {
- if (scroll_all_lines) {
- ScrnDeleteLine(screen,
- screen->allbuf,
- screen->bot_marg + screen->savelines,
- 0,
- (unsigned) amount,
- (unsigned) MaxCols(screen));
- } else {
- ScrnDeleteLine(screen,
- screen->visbuf,
- screen->bot_marg,
- screen->top_marg,
- (unsigned) amount,
- (unsigned) MaxCols(screen));
- }
- }
-
- if (refreshheight > 0) {
- ScrnRefresh(screen, refreshtop, 0, refreshheight,
- MaxCols(screen), False);
- }
-
- screen->cursor_busy -= 1;
- return;
-}
-
-/*
- * Reverse scrolls the screen by amount lines, erases top, doesn't alter
- * cursor position (i.e. cursor moves up amount relative to text).
- * All done within the scrolling region, of course.
- * Requires: amount > 0
- */
-void
-RevScroll(TScreen * screen, int amount)
-{
- int i = screen->bot_marg - screen->top_marg + 1;
- int shift;
- int bot;
- int refreshtop;
- int refreshheight;
- int scrolltop;
- int scrollheight;
-
- TRACE(("RevScroll count=%d\n", amount));
-
- screen->cursor_busy += 1;
- screen->cursor_moved = True;
-
- if (screen->cursor_state)
- HideCursor();
-
- if (amount > i)
- amount = i;
-
- if (ScrnHaveSelection(screen))
- adjustHiliteOnBakScroll(screen, amount);
-
- if (screen->jumpscroll) {
- if (screen->scroll_amt < 0) {
- if (-screen->refresh_amt + amount > i)
- FlushScroll(screen);
- screen->scroll_amt -= amount;
- screen->refresh_amt -= amount;
- } else {
- if (screen->scroll_amt > 0)
- FlushScroll(screen);
- screen->scroll_amt = -amount;
- screen->refresh_amt = -amount;
- }
- } else {
- shift = -screen->topline;
- bot = screen->max_row - shift;
- refreshheight = amount;
- scrollheight = screen->bot_marg - screen->top_marg -
- refreshheight + 1;
- refreshtop = screen->top_marg + shift;
- scrolltop = refreshtop + refreshheight;
- if ((i = screen->bot_marg - bot) > 0)
- scrollheight -= i;
- if ((i = screen->top_marg + refreshheight - 1 - bot) > 0)
- refreshheight -= i;
-
- if (screen->multiscroll && amount == 1 &&
- screen->topline == 0 && screen->top_marg == 0 &&
- screen->bot_marg == screen->max_row) {
- if (screen->incopy < 0 && screen->scrolls == 0)
- CopyWait(screen);
- screen->scrolls++;
- }
-
- scrolling_copy_area(screen, scrolltop - amount, scrollheight, -amount);
-
- if (refreshheight > 0) {
- ClearCurBackground(screen,
- (int) refreshtop * FontHeight(screen) + screen->border,
- (int) OriginX(screen),
- (unsigned) refreshheight * FontHeight(screen),
- (unsigned) Width(screen));
- }
- }
- if (amount > 0) {
- ScrnInsertLine(screen,
- screen->visbuf,
- screen->bot_marg,
- screen->top_marg,
- (unsigned) amount,
- (unsigned) MaxCols(screen));
- }
- screen->cursor_busy -= 1;
- return;
-}
-
-/*
- * If cursor not in scrolling region, returns. Else,
- * inserts n blank lines at the cursor's position. Lines above the
- * bottom margin are lost.
- */
-void
-InsertLine(TScreen * screen, int n)
-{
- int i;
- int shift;
- int bot;
- int refreshtop;
- int refreshheight;
- int scrolltop;
- int scrollheight;
-
- if (!ScrnIsLineInMargins(screen, screen->cur_row - screen->topline))
- return;
-
- TRACE(("InsertLine count=%d\n", n));
-
- if (screen->cursor_state)
- HideCursor();
-
- if (ScrnHaveSelection(screen)
- && ScrnAreLinesInSelection(screen, screen->top_marg, screen->bot_marg)) {
- ScrnDisownSelection(screen);
- }
-
- screen->do_wrap = 0;
- if (n > (i = screen->bot_marg - screen->cur_row + 1))
- n = i;
- if (screen->jumpscroll) {
- if (screen->scroll_amt <= 0 &&
- screen->cur_row <= -screen->refresh_amt) {
- if (-screen->refresh_amt + n > MaxRows(screen))
- FlushScroll(screen);
- screen->scroll_amt -= n;
- screen->refresh_amt -= n;
- } else if (screen->scroll_amt)
- FlushScroll(screen);
- }
- if (!screen->scroll_amt) {
- shift = -screen->topline;
- bot = screen->max_row - shift;
- refreshheight = n;
- scrollheight = screen->bot_marg - screen->cur_row - refreshheight + 1;
- refreshtop = screen->cur_row + shift;
- scrolltop = refreshtop + refreshheight;
- if ((i = screen->bot_marg - bot) > 0)
- scrollheight -= i;
- if ((i = screen->cur_row + refreshheight - 1 - bot) > 0)
- refreshheight -= i;
- vertical_copy_area(screen, scrolltop - n, scrollheight, -n);
- if (refreshheight > 0) {
- ClearCurBackground(screen,
- (int) refreshtop * FontHeight(screen) + screen->border,
- (int) OriginX(screen),
- (unsigned) refreshheight * FontHeight(screen),
- (unsigned) Width(screen));
- }
- }
- if (n > 0) {
- ScrnInsertLine(screen,
- screen->visbuf,
- screen->bot_marg,
- screen->cur_row,
- (unsigned) n,
- (unsigned) MaxCols(screen));
- }
-}
-
-/*
- * If cursor not in scrolling region, returns. Else, deletes n lines
- * at the cursor's position, lines added at bottom margin are blank.
- */
-void
-DeleteLine(TScreen * screen, int n)
-{
- int i;
- int shift;
- int bot;
- int refreshtop;
- int refreshheight;
- int scrolltop;
- int scrollheight;
-
- if (!ScrnIsLineInMargins(screen, screen->cur_row - screen->topline))
- return;
-
- TRACE(("DeleteLine count=%d\n", n));
-
- if (screen->cursor_state)
- HideCursor();
-
- if (ScrnHaveSelection(screen)
- && ScrnAreLinesInSelection(screen, screen->top_marg, screen->bot_marg)) {
- ScrnDisownSelection(screen);
- }
-
- screen->do_wrap = 0;
- if (n > (i = screen->bot_marg - screen->cur_row + 1))
- n = i;
- if (screen->jumpscroll) {
- if (screen->scroll_amt >= 0 && screen->cur_row == screen->top_marg) {
- if (screen->refresh_amt + n > MaxRows(screen))
- FlushScroll(screen);
- screen->scroll_amt += n;
- screen->refresh_amt += n;
- } else if (screen->scroll_amt)
- FlushScroll(screen);
- }
- if (!screen->scroll_amt) {
-
- shift = -screen->topline;
- bot = screen->max_row - shift;
- scrollheight = i - n;
- refreshheight = n;
- if ((refreshtop = screen->bot_marg - refreshheight + 1 + shift) >
- (i = screen->max_row - refreshheight + 1))
- refreshtop = i;
- if (screen->scrollWidget && !screen->alternate && screen->cur_row == 0) {
- scrolltop = 0;
- if ((scrollheight += shift) > i)
- scrollheight = i;
- if ((i = screen->savedlines) < screen->savelines) {
- if ((i += n) > screen->savelines)
- i = screen->savelines;
- screen->savedlines = i;
- ScrollBarDrawThumb(screen->scrollWidget);
- }
- } else {
- scrolltop = screen->cur_row + shift;
- if ((i = screen->bot_marg - bot) > 0) {
- scrollheight -= i;
- if ((i = screen->cur_row + n - 1 - bot) >= 0) {
- refreshheight -= i;
- }
- }
- }
- vertical_copy_area(screen, scrolltop + n, scrollheight, n);
- if (refreshheight > 0) {
- ClearCurBackground(screen,
- (int) refreshtop * FontHeight(screen) + screen->border,
- (int) OriginX(screen),
- (unsigned) refreshheight * FontHeight(screen),
- (unsigned) Width(screen));
- }
- }
- /* adjust screen->buf */
- if (n > 0) {
- if (screen->scrollWidget
- && !screen->alternate
- && screen->cur_row == 0)
- ScrnDeleteLine(screen,
- screen->allbuf,
- screen->bot_marg + screen->savelines,
- 0,
- (unsigned) n,
- (unsigned) MaxCols(screen));
- else
- ScrnDeleteLine(screen,
- screen->visbuf,
- screen->bot_marg,
- screen->cur_row,
- (unsigned) n,
- (unsigned) MaxCols(screen));
- }
-}
-
-/*
- * Insert n blanks at the cursor's position, no wraparound
- */
-void
-InsertChar(TScreen * screen, unsigned n)
-{
- unsigned limit;
- int row = screen->cur_row - screen->topline;
-
- if (screen->cursor_state)
- HideCursor();
-
- TRACE(("InsertChar count=%d\n", n));
-
- if (ScrnHaveSelection(screen)
- && ScrnIsLineInSelection(screen, row)) {
- ScrnDisownSelection(screen);
- }
- screen->do_wrap = 0;
-
- assert(screen->cur_col <= screen->max_col);
- limit = MaxCols(screen) - screen->cur_col;
-
- if (n > limit)
- n = limit;
-
- assert(n != 0);
- if (row <= screen->max_row) {
- if (!AddToRefresh(screen)) {
- int col = MaxCols(screen) - n;
- if (screen->scroll_amt)
- FlushScroll(screen);
-
-#if OPT_DEC_CHRSET
- if (CSET_DOUBLE(SCRN_BUF_CSETS(screen, screen->cur_row)[0])) {
- col = MaxCols(screen) / 2 - n;
- }
-#endif
- /*
- * prevent InsertChar from shifting the end of a line over
- * if it is being appended to
- */
- if (non_blank_line(screen->visbuf, screen->cur_row,
- screen->cur_col, MaxCols(screen)))
- horizontal_copy_area(screen, screen->cur_col,
- col - screen->cur_col,
- (int) n);
-
- ClearCurBackground(screen,
- CursorY(screen, screen->cur_row),
- CurCursorX(screen, screen->cur_row, screen->cur_col),
- (unsigned) FontHeight(screen),
- n * CurFontWidth(screen, screen->cur_row));
- }
- }
- /* adjust screen->buf */
- ScrnInsertChar(screen, n);
-}
-
-/*
- * Deletes n chars at the cursor's position, no wraparound.
- */
-void
-DeleteChar(TScreen * screen, unsigned n)
-{
- unsigned limit;
- int row = screen->cur_row - screen->topline;
-
- if (screen->cursor_state)
- HideCursor();
-
- TRACE(("DeleteChar count=%d\n", n));
-
- if (ScrnHaveSelection(screen)
- && ScrnIsLineInSelection(screen, row)) {
- ScrnDisownSelection(screen);
- }
- screen->do_wrap = 0;
-
- assert(screen->cur_col <= screen->max_col);
- limit = MaxCols(screen) - screen->cur_col;
-
- if (n > limit)
- n = limit;
-
- assert(n != 0);
- if (row <= screen->max_row) {
- if (!AddToRefresh(screen)) {
- int col = MaxCols(screen) - n;
- if (screen->scroll_amt)
- FlushScroll(screen);
-
-#if OPT_DEC_CHRSET
- if (CSET_DOUBLE(SCRN_BUF_CSETS(screen, screen->cur_row)[0])) {
- col = MaxCols(screen) / 2 - n;
- }
-#endif
- horizontal_copy_area(screen,
- (int) (screen->cur_col + n),
- col - screen->cur_col,
- -((int) n));
-
- ClearCurBackground(screen,
- CursorY(screen, screen->cur_row),
- CurCursorX(screen, screen->cur_row, col),
- (unsigned) FontHeight(screen),
- n * CurFontWidth(screen, screen->cur_row));
- }
- }
- if (n > 0) {
- /* adjust screen->buf */
- ScrnDeleteChar(screen, (unsigned) n);
- }
-}
-
-/*
- * Clear from cursor position to beginning of display, inclusive.
- */
-static void
-ClearAbove(TScreen * screen)
-{
- if (screen->protected_mode != OFF_PROTECT) {
- int row;
- unsigned len = MaxCols(screen);
-
- assert(screen->max_col >= 0);
- for (row = 0; row <= screen->max_row; row++)
- ClearInLine(screen, row, 0, len);
- } else {
- int top, height;
-
- if (screen->cursor_state)
- HideCursor();
- if ((top = -screen->topline) <= screen->max_row) {
- if (screen->scroll_amt)
- FlushScroll(screen);
- if ((height = screen->cur_row + top) > screen->max_row)
- height = screen->max_row;
- if ((height -= top) > 0) {
- ClearCurBackground(screen,
- top * FontHeight(screen) + screen->border,
- OriginX(screen),
- (unsigned) (height * FontHeight(screen)),
- (unsigned) (Width(screen)));
- }
- }
- ClearBufRows(screen, 0, screen->cur_row - 1);
- }
-
- if (screen->cur_row - screen->topline <= screen->max_row)
- ClearLeft(screen);
-}
-
-/*
- * Clear from cursor position to end of display, inclusive.
- */
-static void
-ClearBelow(TScreen * screen)
-{
- ClearRight(screen, -1);
-
- if (screen->protected_mode != OFF_PROTECT) {
- int row;
- unsigned len = MaxCols(screen);
-
- assert(screen->max_col >= 0);
- for (row = screen->cur_row + 1; row <= screen->max_row; row++)
- ClearInLine(screen, row, 0, len);
- } else {
- int top;
-
- if ((top = screen->cur_row - screen->topline) <= screen->max_row) {
- if (screen->scroll_amt)
- FlushScroll(screen);
- if (++top <= screen->max_row) {
- ClearCurBackground(screen,
- top * FontHeight(screen) + screen->border,
- OriginX(screen),
- (unsigned) ((screen->max_row - top + 1)
- * FontHeight(screen)),
- (unsigned) (Width(screen)));
- }
- }
- ClearBufRows(screen, screen->cur_row + 1, screen->max_row);
- }
-}
-
-/*
- * Clear the given row, for the given range of columns, returning 1 if no
- * protected characters were found, 0 otherwise.
- */
-static int
-ClearInLine(TScreen * screen, int row, int col, unsigned len)
-{
- int rc = 1;
- int flags = TERM_COLOR_FLAGS(term);
-
- TRACE(("ClearInLine(row=%d, col=%d, len=%d) vs %d..%d\n",
- row, col, len,
- screen->startHRow,
- screen->startHCol));
-
- if (ScrnHaveSelection(screen)
- && ScrnIsLineInSelection(screen, row)) {
- ScrnDisownSelection(screen);
- }
-
- /*
- * If we're clearing to the end of the line, we won't count this as
- * "drawn" characters. We'll only do cut/paste on "drawn" characters,
- * so this has the effect of suppressing trailing blanks from a
- * selection.
- */
- if (col + (int) len < MaxCols(screen)) {
- flags |= CHARDRAWN;
- } else {
- len = MaxCols(screen) - col;
- }
-
- /* If we've marked protected text on the screen, we'll have to
- * check each time we do an erase.
- */
- if (screen->protected_mode != OFF_PROTECT) {
- unsigned n;
- Char *attrs = SCRN_BUF_ATTRS(screen, row) + col;
- int saved_mode = screen->protected_mode;
- Bool done;
-
- /* disable this branch during recursion */
- screen->protected_mode = OFF_PROTECT;
-
- do {
- done = True;
- for (n = 0; n < len; n++) {
- if (attrs[n] & PROTECTED) {
- rc = 0; /* found a protected segment */
- if (n != 0)
- ClearInLine(screen, row, col, n);
- while ((n < len)
- && (attrs[n] & PROTECTED))
- n++;
- done = False;
- break;
- }
- }
- /* setup for another segment, past the protected text */
- if (!done) {
- attrs += n;
- col += n;
- len -= n;
- }
- } while (!done);
-
- screen->protected_mode = saved_mode;
- if (len <= 0)
- return 0;
- }
- /* fall through to the final non-protected segment */
-
- if (screen->cursor_state)
- HideCursor();
- screen->do_wrap = 0;
-
- if (row - screen->topline <= screen->max_row) {
- if (!AddToRefresh(screen)) {
- if (screen->scroll_amt)
- FlushScroll(screen);
- ClearCurBackground(screen,
- CursorY(screen, row),
- CurCursorX(screen, row, col),
- (unsigned) FontHeight(screen),
- len * CurFontWidth(screen, row));
- }
- }
-
- memset(SCRN_BUF_CHARS(screen, row) + col, ' ', len);
- memset(SCRN_BUF_ATTRS(screen, row) + col, flags, len);
-
- if_OPT_EXT_COLORS(screen, {
- memset(SCRN_BUF_FGRND(screen, row) + col, term->sgr_foreground, len);
- memset(SCRN_BUF_BGRND(screen, row) + col, term->cur_background, len);
- });
- if_OPT_ISO_TRADITIONAL_COLORS(screen, {
- memset(SCRN_BUF_COLOR(screen, row) + col, xtermColorPair(), len);
- });
- if_OPT_DEC_CHRSET({
- memset(SCRN_BUF_CSETS(screen, row) + col,
- curXtermChrSet(screen->cur_row), len);
- });
- if_OPT_WIDE_CHARS(screen, {
- memset(SCRN_BUF_WIDEC(screen, row) + col, 0, len);
- memset(SCRN_BUF_COM1L(screen, row) + col, 0, len);
- memset(SCRN_BUF_COM1H(screen, row) + col, 0, len);
- memset(SCRN_BUF_COM2L(screen, row) + col, 0, len);
- memset(SCRN_BUF_COM2H(screen, row) + col, 0, len);
- });
-
- return rc;
-}
-
-/*
- * Clear the next n characters on the cursor's line, including the cursor's
- * position.
- */
-void
-ClearRight(TScreen * screen, int n)
-{
- unsigned len = (MaxCols(screen) - screen->cur_col);
-
- assert(screen->max_col >= 0);
- assert(screen->max_col >= screen->cur_col);
-
- if (n < 0) /* the remainder of the line */
- n = MaxCols(screen);
- if (n == 0) /* default for 'ECH' */
- n = 1;
-
- if (len > (unsigned) n)
- len = n;
-
- (void) ClearInLine(screen, screen->cur_row, screen->cur_col, len);
-
- /* with the right part cleared, we can't be wrapping */
- ScrnClrWrapped(screen, screen->cur_row);
-}
-
-/*
- * Clear first part of cursor's line, inclusive.
- */
-static void
-ClearLeft(TScreen * screen)
-{
- unsigned len = screen->cur_col + 1;
- assert(screen->cur_col >= 0);
-
- (void) ClearInLine(screen, screen->cur_row, 0, len);
-}
-
-/*
- * Erase the cursor's line.
- */
-static void
-ClearLine(TScreen * screen)
-{
- unsigned len = MaxCols(screen);
-
- assert(screen->max_col >= 0);
- (void) ClearInLine(screen, screen->cur_row, 0, len);
-}
-
-void
-ClearScreen(TScreen * screen)
-{
- int top;
-
- if (screen->cursor_state)
- HideCursor();
-
- ScrnDisownSelection(screen);
- screen->do_wrap = 0;
- if ((top = -screen->topline) <= screen->max_row) {
- if (screen->scroll_amt)
- FlushScroll(screen);
- ClearCurBackground(screen,
- top * FontHeight(screen) + screen->border,
- OriginX(screen),
- (unsigned) ((screen->max_row - top + 1)
- * FontHeight(screen)),
- (unsigned) Width(screen));
- }
- ClearBufRows(screen, 0, screen->max_row);
-}
-
-/*
- * If we've written protected text DEC-style, and are issuing a non-DEC
- * erase, temporarily reset the protected_mode flag so that the erase will
- * ignore the protected flags.
- */
-void
-do_erase_line(TScreen * screen, int param, int mode)
-{
- int saved_mode = screen->protected_mode;
-
- if (saved_mode == DEC_PROTECT
- && saved_mode != mode)
- screen->protected_mode = OFF_PROTECT;
-
- switch (param) {
- case -1: /* DEFAULT */
- case 0:
- ClearRight(screen, -1);
- break;
- case 1:
- ClearLeft(screen);
- break;
- case 2:
- ClearLine(screen);
- break;
- }
- screen->protected_mode = saved_mode;
-}
-
-/*
- * Just like 'do_erase_line()', except that this intercepts ED controls. If we
- * clear the whole screen, we'll get the return-value from ClearInLine, and
- * find if there were any protected characters left. If not, reset the
- * protected mode flag in the screen data (it's slower).
- */
-void
-do_erase_display(TScreen * screen, int param, int mode)
-{
- int saved_mode = screen->protected_mode;
-
- if (saved_mode == DEC_PROTECT
- && saved_mode != mode)
- screen->protected_mode = OFF_PROTECT;
-
- switch (param) {
- case -1: /* DEFAULT */
- case 0:
- if (screen->cur_row == 0
- && screen->cur_col == 0) {
- screen->protected_mode = saved_mode;
- do_erase_display(screen, 2, mode);
- saved_mode = screen->protected_mode;
- } else
- ClearBelow(screen);
- break;
-
- case 1:
- if (screen->cur_row == screen->max_row
- && screen->cur_col == screen->max_col) {
- screen->protected_mode = saved_mode;
- do_erase_display(screen, 2, mode);
- saved_mode = screen->protected_mode;
- } else
- ClearAbove(screen);
- break;
-
- case 2:
- /*
- * We use 'ClearScreen()' throughout the remainder of the
- * program for places where we don't care if the characters are
- * protected or not. So we modify the logic around this call
- * on 'ClearScreen()' to handle protected characters.
- */
- if (screen->protected_mode != OFF_PROTECT) {
- int row;
- int rc = 1;
- unsigned len = MaxCols(screen);
-
- assert(screen->max_col >= 0);
- for (row = 0; row <= screen->max_row; row++)
- rc &= ClearInLine(screen, row, 0, len);
- if (rc != 0)
- saved_mode = OFF_PROTECT;
- } else {
- ClearScreen(screen);
- }
- break;
-
- case 3:
- /* xterm addition - erase saved lines. */
- screen->savedlines = 0;
- ScrollBarDrawThumb(screen->scrollWidget);
- break;
- }
- screen->protected_mode = saved_mode;
-}
-
-static void
-CopyWait(TScreen * screen)
-{
- XEvent reply;
- XEvent *rep = &reply;
-
- while (1) {
- XWindowEvent(screen->display, VWindow(screen),
- ExposureMask, &reply);
- switch (reply.type) {
- case Expose:
- HandleExposure(screen, &reply);
- break;
- case NoExpose:
- case GraphicsExpose:
- if (screen->incopy <= 0) {
- screen->incopy = 1;
- if (screen->scrolls > 0)
- screen->scrolls--;
- }
- if (reply.type == GraphicsExpose)
- HandleExposure(screen, &reply);
-
- if ((reply.type == NoExpose) ||
- ((XExposeEvent *) rep)->count == 0) {
- if (screen->incopy <= 0 && screen->scrolls > 0)
- screen->scrolls--;
- if (screen->scrolls == 0) {
- screen->incopy = 0;
- return;
- }
- screen->incopy = -1;
- }
- break;
- }
- }
-}
-
-/*
- * used by vertical_copy_area and and horizontal_copy_area
- */
-static void
-copy_area(TScreen * screen,
- int src_x,
- int src_y,
- unsigned width,
- unsigned height,
- int dest_x,
- int dest_y)
-{
- if (width != 0 && height != 0) {
- /* wait for previous CopyArea to complete unless
- multiscroll is enabled and active */
- if (screen->incopy && screen->scrolls == 0)
- CopyWait(screen);
- screen->incopy = -1;
-
- /* save for translating Expose events */
- screen->copy_src_x = src_x;
- screen->copy_src_y = src_y;
- screen->copy_width = width;
- screen->copy_height = height;
- screen->copy_dest_x = dest_x;
- screen->copy_dest_y = dest_y;
-
- XCopyArea(screen->display,
- VWindow(screen), VWindow(screen),
- NormalGC(screen),
- src_x, src_y, width, height, dest_x, dest_y);
- }
-}
-
-/*
- * use when inserting or deleting characters on the current line
- */
-static void
-horizontal_copy_area(TScreen * screen,
- int firstchar, /* char pos on screen to start copying at */
- int nchars,
- int amount) /* number of characters to move right */
-{
- int src_x = CurCursorX(screen, screen->cur_row, firstchar);
- int src_y = CursorY(screen, screen->cur_row);
-
- copy_area(screen, src_x, src_y,
- (unsigned) nchars * CurFontWidth(screen, screen->cur_row),
- (unsigned) FontHeight(screen),
- src_x + amount * CurFontWidth(screen, screen->cur_row), src_y);
-}
-
-/*
- * use when inserting or deleting lines from the screen
- */
-static void
-vertical_copy_area(TScreen * screen,
- int firstline, /* line on screen to start copying at */
- int nlines,
- int amount) /* number of lines to move up (neg=down) */
-{
- if (nlines > 0) {
- int src_x = OriginX(screen);
- int src_y = firstline * FontHeight(screen) + screen->border;
-
- copy_area(screen, src_x, src_y,
- (unsigned) Width(screen),
- (unsigned) (nlines * FontHeight(screen)),
- src_x, src_y - amount * FontHeight(screen));
- }
-}
-
-/*
- * use when scrolling the entire screen
- */
-void
-scrolling_copy_area(TScreen * screen,
- int firstline, /* line on screen to start copying at */
- int nlines,
- int amount) /* number of lines to move up (neg=down) */
-{
-
- if (nlines > 0) {
- vertical_copy_area(screen, firstline, nlines, amount);
- }
-}
-
-/*
- * Handler for Expose events on the VT widget.
- * Returns 1 iff the area where the cursor was got refreshed.
- */
-int
-HandleExposure(TScreen * screen, XEvent * event)
-{
- XExposeEvent *reply = (XExposeEvent *) event;
-
-#ifndef NO_ACTIVE_ICON
- if (reply->window == screen->iconVwin.window) {
- WhichVWin(screen) = &screen->iconVwin;
- TRACE(("HandleExposure - icon"));
- } else {
- WhichVWin(screen) = &screen->fullVwin;
- TRACE(("HandleExposure - normal"));
- }
- TRACE((" event %d,%d %dx%d\n",
- reply->y,
- reply->x,
- reply->height,
- reply->width));
-#endif /* NO_ACTIVE_ICON */
-
- /* if not doing CopyArea or if this is a GraphicsExpose, don't translate */
- if (!screen->incopy || event->type != Expose)
- return handle_translated_exposure(screen, reply->x, reply->y,
- reply->width,
- reply->height);
- else {
- /* compute intersection of area being copied with
- area being exposed. */
- int both_x1 = Max(screen->copy_src_x, reply->x);
- int both_y1 = Max(screen->copy_src_y, reply->y);
- int both_x2 = Min(screen->copy_src_x + screen->copy_width,
- (unsigned) (reply->x + reply->width));
- int both_y2 = Min(screen->copy_src_y + screen->copy_height,
- (unsigned) (reply->y + reply->height));
- int value = 0;
-
- /* was anything copied affected? */
- if (both_x2 > both_x1 && both_y2 > both_y1) {
- /* do the copied area */
- value = handle_translated_exposure
- (screen, reply->x + screen->copy_dest_x - screen->copy_src_x,
- reply->y + screen->copy_dest_y - screen->copy_src_y,
- reply->width, reply->height);
- }
- /* was anything not copied affected? */
- if (reply->x < both_x1 || reply->y < both_y1
- || reply->x + reply->width > both_x2
- || reply->y + reply->height > both_y2)
- value = handle_translated_exposure(screen, reply->x, reply->y,
- reply->width, reply->height);
-
- return value;
- }
-}
-
-/*
- * Called by the ExposeHandler to do the actual repaint after the coordinates
- * have been translated to allow for any CopyArea in progress.
- * The rectangle passed in is pixel coordinates.
- */
-static int
-handle_translated_exposure(TScreen * screen,
- int rect_x,
- int rect_y,
- int rect_width,
- int rect_height)
-{
- int toprow, leftcol, nrows, ncols;
- int x0, x1;
- int y0, y1;
-
- TRACE(("handle_translated_exposure at %d,%d size %dx%d\n",
- rect_y, rect_x, rect_height, rect_width));
-
- x0 = (rect_x - OriginX(screen));
- x1 = (x0 + rect_width);
-
- y0 = (rect_y - OriginY(screen));
- y1 = (y0 + rect_height);
-
- toprow = y0 / FontHeight(screen);
- if (toprow < 0)
- toprow = 0;
-
- leftcol = x0 / CurFontWidth(screen, screen->cur_row);
- if (leftcol < 0)
- leftcol = 0;
-
- nrows = (y1 - 1) / FontHeight(screen) - toprow + 1;
- ncols = (x1 - 1) / FontWidth(screen) - leftcol + 1;
- toprow -= screen->scrolls;
- if (toprow < 0) {
- nrows += toprow;
- toprow = 0;
- }
- if (toprow + nrows > MaxRows(screen))
- nrows = MaxRows(screen) - toprow;
- if (leftcol + ncols > MaxCols(screen))
- ncols = MaxCols(screen) - leftcol;
-
- if (nrows > 0 && ncols > 0) {
- ScrnRefresh(screen, toprow, leftcol, nrows, ncols, False);
- if (waiting_for_initial_map) {
- first_map_occurred();
- }
- if (screen->cur_row >= toprow &&
- screen->cur_row < toprow + nrows &&
- screen->cur_col >= leftcol &&
- screen->cur_col < leftcol + ncols)
- return (1);
-
- }
- return (0);
-}
-
-/***====================================================================***/
-
-void
-GetColors(XtermWidget tw, ScrnColors * pColors)
-{
- TScreen *screen = &tw->screen;
- int n;
-
- pColors->which = 0;
- for (n = 0; n < NCOLORS; ++n) {
- SET_COLOR_VALUE(pColors, n, T_COLOR(screen, n));
- }
-}
-
-void
-ChangeColors(XtermWidget tw, ScrnColors * pNew)
-{
- TScreen *screen = &tw->screen;
-#if OPT_TEK4014
- Window tek = TWindow(screen);
-#endif
-
- TRACE(("ChangeColors\n"));
-
- if (COLOR_DEFINED(pNew, TEXT_CURSOR)) {
- T_COLOR(screen, TEXT_CURSOR) = COLOR_VALUE(pNew, TEXT_CURSOR);
- TRACE(("... TEXT_CURSOR: %#lx\n", T_COLOR(screen, TEXT_CURSOR)));
- } else if ((T_COLOR(screen, TEXT_CURSOR) == T_COLOR(screen, TEXT_FG)) &&
- (COLOR_DEFINED(pNew, TEXT_FG))) {
- T_COLOR(screen, TEXT_CURSOR) = COLOR_VALUE(pNew, TEXT_FG);
- TRACE(("... TEXT_CURSOR: %#lx\n", T_COLOR(screen, TEXT_CURSOR)));
- }
-
- if (COLOR_DEFINED(pNew, TEXT_FG)) {
- Pixel fg = COLOR_VALUE(pNew, TEXT_FG);
- T_COLOR(screen, TEXT_FG) = fg;
- TRACE(("... TEXT_FG: %#lx\n", T_COLOR(screen, TEXT_FG)));
- XSetForeground(screen->display, NormalGC(screen), fg);
- XSetBackground(screen->display, ReverseGC(screen), fg);
- XSetForeground(screen->display, NormalBoldGC(screen), fg);
- XSetBackground(screen->display, ReverseBoldGC(screen), fg);
- }
-
- if (COLOR_DEFINED(pNew, TEXT_BG)) {
- Pixel bg = COLOR_VALUE(pNew, TEXT_BG);
- T_COLOR(screen, TEXT_BG) = bg;
- TRACE(("... TEXT_BG: %#lx\n", T_COLOR(screen, TEXT_BG)));
- XSetBackground(screen->display, NormalGC(screen), bg);
- XSetForeground(screen->display, ReverseGC(screen), bg);
- XSetBackground(screen->display, NormalBoldGC(screen), bg);
- XSetForeground(screen->display, ReverseBoldGC(screen), bg);
- XSetWindowBackground(screen->display, VWindow(screen),
- T_COLOR(screen, TEXT_BG));
- }
-#if OPT_HIGHLIGHT_COLOR
- if (COLOR_DEFINED(pNew, HIGHLIGHT_BG)) {
- T_COLOR(screen, HIGHLIGHT_BG) = COLOR_VALUE(pNew, HIGHLIGHT_BG);
- TRACE(("... HIGHLIGHT_BG: %#lx\n", T_COLOR(screen, HIGHLIGHT_BG)));
- }
-#endif
-
- if (COLOR_DEFINED(pNew, MOUSE_FG) || (COLOR_DEFINED(pNew, MOUSE_BG))) {
- if (COLOR_DEFINED(pNew, MOUSE_FG)) {
- T_COLOR(screen, MOUSE_FG) = COLOR_VALUE(pNew, MOUSE_FG);
- TRACE(("... MOUSE_FG: %#lx\n", T_COLOR(screen, MOUSE_FG)));
- }
- if (COLOR_DEFINED(pNew, MOUSE_BG)) {
- T_COLOR(screen, MOUSE_BG) = COLOR_VALUE(pNew, MOUSE_BG);
- TRACE(("... MOUSE_BG: %#lx\n", T_COLOR(screen, MOUSE_BG)));
- }
-
- recolor_cursor(screen->pointer_cursor,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
- recolor_cursor(screen->arrow,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
- XDefineCursor(screen->display, VWindow(screen),
- screen->pointer_cursor);
-
-#if OPT_TEK4014
- if (tek)
- XDefineCursor(screen->display, tek, screen->arrow);
-#endif
- }
-#if OPT_TEK4014
- if (COLOR_DEFINED(pNew, TEK_FG) ||
- COLOR_DEFINED(pNew, TEK_BG) ||
- COLOR_DEFINED(pNew, TEK_CURSOR)) {
- ChangeTekColors(screen, pNew);
- }
-#endif
- set_cursor_gcs(screen);
- XClearWindow(screen->display, VWindow(screen));
- ScrnRefresh(screen, 0, 0, MaxRows(screen),
- MaxCols(screen), False);
-#if OPT_TEK4014
- if (screen->Tshow) {
- XClearWindow(screen->display, tek);
- TekExpose((Widget) NULL, (XEvent *) NULL, (Region) NULL);
- }
-#endif
-}
-
-void
-ChangeAnsiColors(XtermWidget tw)
-{
- TScreen *screen = &tw->screen;
-
- XClearWindow(screen->display, VWindow(screen));
- ScrnRefresh(screen, 0, 0,
- MaxRows(screen),
- MaxCols(screen), False);
-}
-
-/***====================================================================***/
-
-void
-ReverseVideo(XtermWidget termw)
-{
- TScreen *screen = &termw->screen;
- GC tmpGC;
- Pixel tmp;
-#if OPT_TEK4014
- Window tek = TWindow(screen);
-#endif
-
- /*
- * Swap SGR foreground and background colors. By convention, these are
- * the colors assigned to "black" (SGR #0) and "white" (SGR #7). Also,
- * SGR #8 and SGR #15 are the bold (or bright) versions of SGR #0 and
- * #7, respectively.
- *
- * We don't swap colors that happen to match the screen's foreground
- * and background because that tends to produce bizarre effects.
- */
- if_OPT_ISO_COLORS(screen, {
- ColorRes tmp2;
- EXCHANGE(screen->Acolors[0], screen->Acolors[7], tmp2);
- EXCHANGE(screen->Acolors[8], screen->Acolors[15], tmp2);
- });
-
- tmp = T_COLOR(screen, TEXT_BG);
- if (T_COLOR(screen, TEXT_CURSOR) == T_COLOR(screen, TEXT_FG))
- T_COLOR(screen, TEXT_CURSOR) = tmp;
- T_COLOR(screen, TEXT_BG) = T_COLOR(screen, TEXT_FG);
- T_COLOR(screen, TEXT_FG) = tmp;
-
- EXCHANGE(T_COLOR(screen, MOUSE_FG), T_COLOR(screen, MOUSE_BG), tmp);
- EXCHANGE(NormalGC(screen), ReverseGC(screen), tmpGC);
- EXCHANGE(NormalBoldGC(screen), ReverseBoldGC(screen), tmpGC);
-#ifndef NO_ACTIVE_ICON
- tmpGC = screen->iconVwin.normalGC;
- screen->iconVwin.normalGC = screen->iconVwin.reverseGC;
- screen->iconVwin.reverseGC = tmpGC;
-
- tmpGC = screen->iconVwin.normalboldGC;
- screen->iconVwin.normalboldGC = screen->iconVwin.reverseboldGC;
- screen->iconVwin.reverseboldGC = tmpGC;
-#endif /* NO_ACTIVE_ICON */
-
- recolor_cursor(screen->pointer_cursor,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
- recolor_cursor(screen->arrow,
- T_COLOR(screen, MOUSE_FG),
- T_COLOR(screen, MOUSE_BG));
-
- termw->misc.re_verse = !termw->misc.re_verse;
-
- if (XtIsRealized((Widget) termw)) {
- XDefineCursor(screen->display, VWindow(screen), screen->pointer_cursor);
- }
-#if OPT_TEK4014
- if (tek)
- XDefineCursor(screen->display, tek, screen->arrow);
-#endif
-
- if (screen->scrollWidget)
- ScrollBarReverseVideo(screen->scrollWidget);
-
- if (XtIsRealized((Widget) termw)) {
- XSetWindowBackground(screen->display, VWindow(screen),
- T_COLOR(screen, TEXT_BG));
-
- /* the shell-window's background will be used in the first repainting
- * on resizing
- */
- XSetWindowBackground(screen->display, VShellWindow,
- T_COLOR(screen, TEXT_BG));
- }
-#if OPT_TEK4014
- TekReverseVideo(screen);
-#endif
- if (XtIsRealized((Widget) termw)) {
- XClearWindow(screen->display, VWindow(screen));
- ScrnRefresh(screen, 0, 0, MaxRows(screen),
- MaxCols(screen), False);
- }
-#if OPT_TEK4014
- if (screen->Tshow) {
- XClearWindow(screen->display, tek);
- TekExpose((Widget) NULL, (XEvent *) NULL, (Region) NULL);
- }
-#endif
- ReverseOldColors();
- update_reversevideo();
-}
-
-void
-recolor_cursor(Cursor cursor, /* X cursor ID to set */
- unsigned long fg, /* pixel indexes to look up */
- unsigned long bg) /* pixel indexes to look up */
-{
- TScreen *screen = &term->screen;
- Display *dpy = screen->display;
- XColor colordefs[2]; /* 0 is foreground, 1 is background */
-
- colordefs[0].pixel = fg;
- colordefs[1].pixel = bg;
- XQueryColors(dpy, DefaultColormap(dpy, DefaultScreen(dpy)),
- colordefs, 2);
- XRecolorCursor(dpy, cursor, colordefs, colordefs + 1);
- return;
-}
-
-#if OPT_RENDERFONT
-static XftColor *
-getColor(Pixel pixel)
-{
-#define CACHE_SIZE 4
- static struct {
- XftColor color;
- int use;
- } cache[CACHE_SIZE];
- static int use;
- int i;
- int oldest, oldestuse;
- XColor color;
-
- oldestuse = 0x7fffffff;
- oldest = 0;
- for (i = 0; i < CACHE_SIZE; i++) {
- if (cache[i].use) {
- if (cache[i].color.pixel == pixel) {
- cache[i].use = ++use;
- return &cache[i].color;
- }
- }
- if (cache[i].use < oldestuse) {
- oldestuse = cache[i].use;
- oldest = i;
- }
- }
- i = oldest;
- color.pixel = pixel;
- XQueryColor(term->screen.display, term->core.colormap, &color);
- cache[i].color.color.red = color.red;
- cache[i].color.color.green = color.green;
- cache[i].color.color.blue = color.blue;
- cache[i].color.color.alpha = 0xffff;
- cache[i].color.pixel = pixel;
- cache[i].use = ++use;
- return &cache[i].color;
-}
-
-/*
- * fontconfig/Xft combination prior to 2.2 has a problem with
- * CJK truetype 'double-width' (bi-width/monospace) fonts leading
- * to the 's p a c e d o u t' rendering. Consequently, we can't
- * rely on XftDrawString8/16 when one of those fonts is used.
- * Instead, we need to roll out our own using XftDrawCharSpec.
- * A patch in the same spirit (but in a rather different form)
- * was applied to gnome vte and gtk2 port of vim.
- * See http://bugzilla.mozilla.org/show_bug.cgi?id=196312
- */
-static void
-xtermXftDrawString(TScreen * screen,
- unsigned flags GCC_UNUSED,
- XftColor * color,
- XftFont * font,
- int x,
- int y,
- PAIRED_CHARS(Char * text, Char * text2),
- int len,
- int fwidth,
- int *deltax)
-{
-#if OPT_RENDERWIDE
- XftFont *wfont;
- int n;
- int ncells = 0; /* # of 'half-width' charcells */
- static XftCharSpec *sbuf;
- static int slen = 0;
- XftFont *lastFont = 0;
- XftFont *currFont = 0;
- int start = 0;
- int charWidth;
- FcChar32 wc;
- int fontnum = screen->menu_font_number;
-
- if (len == 0 || !(*text || *text2)) {
- return;
- }
-#if OPT_ISO_COLORS
- if ((flags & UNDERLINE)
- && screen->italicULMode
- && screen->renderWideItal[fontnum]) {
- wfont = screen->renderWideItal[fontnum];
- } else
-#endif
- if ((flags & BOLDATTR(screen))
- && screen->renderWideBold[fontnum]) {
- wfont = screen->renderWideBold[fontnum];
- } else {
- wfont = screen->renderWideNorm[fontnum];
- }
-
- if ((int) slen < len) {
- slen = (len + 1) * 2;
- sbuf = (XftCharSpec *) XtRealloc((char *) sbuf,
- slen * sizeof(XftCharSpec));
- }
-
- for (n = 0; n < len; n++) {
- if (text2)
- wc = *text++ | (*text2++ << 8);
- else
- wc = *text++;
- sbuf[n].ucs4 = wc;
- sbuf[n].x = x + fwidth * ncells;
- sbuf[n].y = y;
- charWidth = my_wcwidth((int) wc);
- currFont = (charWidth == 2 && wfont != 0) ? wfont : font;
- ncells += charWidth;
- if (lastFont != currFont) {
- if (lastFont != 0) {
- XftDrawCharSpec(screen->renderDraw,
- color,
- lastFont,
- sbuf + start,
- n - start);
- }
- start = n;
- lastFont = currFont;
- }
- }
- XftDrawCharSpec(screen->renderDraw,
- color,
- lastFont,
- sbuf + start,
- n - start);
-
- if (deltax)
- *deltax = ncells * fwidth;
-#else
-
- XftDrawString8(screen->renderDraw,
- color,
- font,
- x, y, (unsigned char *) text, len);
- if (deltax)
- *deltax = len * fwidth;
-#endif
-}
-#endif /* OPT_RENDERFONT */
-
-#define DrawX(col) x + (col * (font_width))
-#define DrawSegment(first,last) (void)drawXtermText(screen, flags|NOTRANSLATION, gc, DrawX(first), y, chrset, PAIRED_CHARS(text+first, text2+first), (unsigned)(last - first), on_wide)
-
-#if OPT_WIDE_CHARS
-/*
- * Actually this should be called "groff_workaround()" - for the places where
- * groff stomps on compatibility. Still, if enough people get used to it,
- * this might someday become a quasi-standard.
- */
-static int
-ucs_workaround(TScreen * screen,
- unsigned ch,
- unsigned flags,
- GC gc,
- int x,
- int y,
- int chrset,
- int on_wide)
-{
- int fixed = False;
-
- if (screen->wide_chars && screen->utf8_mode && ch > 256) {
- switch (ch) {
- case 0x2010: /* groff "-" */
- case 0x2011:
- case 0x2012:
- case 0x2013:
- case 0x2014:
- case 0x2015:
- case 0x2212: /* groff "\-" */
- ch = '-';
- fixed = True;
- break;
- case 0x2018: /* groff "`" */
- ch = '`';
- fixed = True;
- break;
- case 0x2019: /* groff ' */
- ch = '\'';
- fixed = True;
- break;
- case 0x201C: /* groff lq */
- case 0x201D: /* groff rq */
- ch = '"';
- fixed = True;
- break;
- }
- if (fixed) {
- Char text[2];
- Char text2[2];
-
- text[0] = ch;
- text2[0] = 0;
- drawXtermText(screen,
- flags,
- gc,
- x,
- y,
- chrset,
- PAIRED_CHARS(text, text2),
- 1,
- on_wide);
- }
- }
- return fixed;
-}
-#endif
-
-#if OPT_CLIP_BOLD
-/*
- * This special case is a couple of percent slower, but avoids a lot of pixel
- * trash in rxcurses' hanoi.cmd demo (e.g., 10x20 font).
- */
-#define beginClipping(screen,gc,pwidth,plength) \
- if (pwidth > 2) { \
- XRectangle clip; \
- int clip_x = x; \
- int clip_y = y - FontHeight(screen) + FontDescent(screen); \
- clip.x = 0; \
- clip.y = 0; \
- clip.height = FontHeight(screen); \
- clip.width = pwidth * plength; \
- XSetClipRectangles(screen->display, gc, \
- clip_x, clip_y, \
- &clip, 1, Unsorted); \
- }
-#define endClipping(screen,gc) \
- XSetClipMask(screen->display, gc, None)
-#else
-#define beginClipping(screen,gc,pwidth,plength) /* nothing */
-#define endClipping(screen,gc) /* nothing */
-#endif /* OPT_CLIP_BOLD */
-
-/*
- * Draws text with the specified combination of bold/underline. The return
- * value is the updated x position.
- */
-int
-drawXtermText(TScreen * screen,
- unsigned flags,
- GC gc,
- int x,
- int y,
- int chrset,
- PAIRED_CHARS(Char * text, Char * text2),
- Cardinal len,
- int on_wide)
-{
- int real_length = len;
- int underline_len;
- /* Intended width of the font to draw (as opposed to the actual width of
- the X font, and the width of the default font) */
- int font_width = ((flags & DOUBLEWFONT) ? 2 : 1) * screen->fnt_wide;
- Bool did_ul = False;
-
-#if OPT_WIDE_CHARS
- /*
- * It's simpler to pass in a null pointer for text2 in places where
- * we only use codes through 255. Fix text2 here so we can increment
- * it, etc.
- */
- if (text2 == 0) {
- static Char *dbuf;
- static unsigned dlen;
- if (dlen <= len) {
- dlen = (len + 1) * 2;
- dbuf = (Char *) XtRealloc((char *) dbuf, dlen);
- memset(dbuf, 0, dlen);
- }
- text2 = dbuf;
- }
-#endif
-#if OPT_DEC_CHRSET
- if (CSET_DOUBLE(chrset)) {
- /* We could try drawing double-size characters in the icon, but
- * given that the icon font is usually nil or nil2, there
- * doesn't seem to be much point.
- */
- GC gc2 = ((!IsIcon(screen) && screen->font_doublesize)
- ? xterm_DoubleGC((unsigned) chrset, flags, gc)
- : 0);
-
- TRACE(("DRAWTEXT%c[%4d,%4d] (%d) %d:%.*s\n",
- screen->cursor_state == OFF ? ' ' : '*',
- y, x, chrset, len, (int) len, text));
-
- if (gc2 != 0) { /* draw actual double-sized characters */
- /* Update the last-used cache of double-sized fonts */
- int inx = xterm_Double_index((unsigned) chrset, flags);
- XFontStruct *fs = screen->double_fonts[inx].fs;
- XRectangle rect, *rp = &rect;
- int nr = 1;
- int adjust;
-
- font_width *= 2;
- flags |= DOUBLEWFONT;
-
- rect.x = 0;
- rect.y = 0;
- rect.width = len * font_width;
- rect.height = FontHeight(screen);
-
- switch (chrset) {
- case CSET_DHL_TOP:
- rect.y = -(rect.height / 2);
- y -= rect.y;
- flags |= DOUBLEHFONT;
- break;
- case CSET_DHL_BOT:
- rect.y = (rect.height / 2);
- y -= rect.y;
- flags |= DOUBLEHFONT;
- break;
- default:
- nr = 0;
- break;
- }
-
- /*
- * Though it is the right "size", a given bold font may
- * be shifted up by a pixel or two. Shift it back into
- * the clipping rectangle.
- */
- if (nr != 0) {
- adjust = fs->ascent
- + fs->descent
- - (2 * FontHeight(screen));
- rect.y -= adjust;
- y += adjust;
- }
-
- if (nr)
- XSetClipRectangles(screen->display, gc2,
- x, y, rp, nr, YXBanded);
- else
- XSetClipMask(screen->display, gc2, None);
-
- /* Call ourselves recursively with the new gc */
-
- /*
- * If we're trying to use proportional font, or if the
- * font server didn't give us what we asked for wrt
- * width, position each character independently.
- */
- if (screen->fnt_prop
- || (fs->min_bounds.width != fs->max_bounds.width)
- || (fs->min_bounds.width != 2 * FontWidth(screen))) {
- /* It is hard to fall-through to the main
- branch: in a lot of places the check
- for the cached font info is for
- normal/bold fonts only. */
- while (len--) {
- x = drawXtermText(screen, flags, gc2,
- x, y, 0,
- PAIRED_CHARS(text++, text2++),
- 1, on_wide);
- x += FontWidth(screen);
- }
- } else {
- x = drawXtermText(screen, flags, gc2,
- x, y, 0,
- PAIRED_CHARS(text, text2),
- len, on_wide);
- x += len * FontWidth(screen);
- }
-
- TRACE(("drawtext [%4d,%4d]\n", y, x));
- } else { /* simulate double-sized characters */
-#if OPT_WIDE_CHARS
- Char *wide = 0;
-#endif
- unsigned need = 2 * len;
- Char *temp = TypeMallocN(Char, need);
- unsigned n = 0;
- if_OPT_WIDE_CHARS(screen, {
- wide = TypeMallocN(Char, need);
- });
- while (len--) {
- if_OPT_WIDE_CHARS(screen, {
- wide[n] = *text2++;
- wide[n + 1] = 0;
- });
- temp[n++] = *text++;
- temp[n++] = ' ';
- }
- x = drawXtermText(screen,
- flags,
- gc,
- x, y,
- 0,
- PAIRED_CHARS(temp, wide),
- n,
- on_wide);
- free(temp);
- if_OPT_WIDE_CHARS(screen, {
- free(wide);
- });
- }
- return x;
- }
-#endif
-#if OPT_RENDERFONT
- if (UsingRenderFont(term)) {
- Display *dpy = screen->display;
- XftFont *font;
- XGCValues values;
- int fontnum = screen->menu_font_number;
-
- if (!screen->renderDraw) {
- int scr;
- Drawable draw = VWindow(screen);
- Visual *visual;
-
- scr = DefaultScreen(dpy);
- visual = DefaultVisual(dpy, scr);
- screen->renderDraw = XftDrawCreate(dpy, draw, visual,
- DefaultColormap(dpy, scr));
- }
-#if OPT_ISO_COLORS
- if ((flags & UNDERLINE)
- && screen->italicULMode
- && screen->renderFontItal[fontnum]) {
- font = screen->renderFontItal[fontnum];
- did_ul = True;
- } else
-#endif
- if ((flags & BOLDATTR(screen))
- && screen->renderFontBold[fontnum]) {
- font = screen->renderFontBold[fontnum];
- } else {
- font = screen->renderFontNorm[fontnum];
- }
- XGetGCValues(dpy, gc, GCForeground | GCBackground, &values);
- if (!(flags & NOBACKGROUND))
- XftDrawRect(screen->renderDraw,
- getColor(values.background),
- x, y,
- len * FontWidth(screen),
- (unsigned) FontHeight(screen));
-
- y += font->ascent;
-#if OPT_BOX_CHARS
- if (!screen->force_box_chars) {
- /* adding code to substitute simulated line-drawing characters */
- int last, first = 0;
- Dimension old_wide, old_high = 0;
- int curX = x;
-
- for (last = 0; last < (int) len; last++) {
- unsigned ch = text[last];
- int deltax = 0;
-
- /*
- * If we're reading UTF-8 from the client, we may have a
- * line-drawing character. Translate it back to our box-code
- * if it is really a line-drawing character (since the
- * fonts used by Xft generally do not have correct glyphs),
- * or if Xft can tell us that the glyph is really missing.
- */
- if_OPT_WIDE_CHARS(screen, {
- unsigned full = (ch | (text2[last] << 8));
- unsigned part = ucs2dec(full);
- if (xtermIsDecGraphic(part) &&
- (xtermIsLineDrawing(part)
- || xtermXftMissing(term, font, full)))
- ch = part;
- else
- ch = full;
- });
- /*
- * If we have one of our box-codes, draw it directly.
- */
- if (xtermIsDecGraphic(ch)) {
- /* line drawing character time */
- if (last > first) {
- xtermXftDrawString(screen, flags,
- getColor(values.foreground),
- font, curX, y,
- PAIRED_CHARS(text + first,
- text2 + first),
- last - first,
- FontWidth(screen),
- &deltax);
- curX += deltax;
- }
- old_wide = screen->fnt_wide;
- old_high = screen->fnt_high;
- screen->fnt_wide = FontWidth(screen);
- screen->fnt_high = FontHeight(screen);
- xtermDrawBoxChar(term, ch, flags, gc,
- curX, y - FontAscent(screen));
- curX += FontWidth(screen);
- screen->fnt_wide = old_wide;
- screen->fnt_high = old_high;
- first = last + 1;
- }
- }
- if (last > first) {
- xtermXftDrawString(screen, flags,
- getColor(values.foreground),
- font, curX, y,
- PAIRED_CHARS(text + first, text2 + first),
- last - first,
- FontWidth(screen),
- NULL);
- }
- } else
-#endif /* OPT_BOX_CHARS */
- {
- xtermXftDrawString(screen, flags,
- getColor(values.foreground),
- font, x, y, PAIRED_CHARS(text, text2),
- (int) len, FontWidth(screen), NULL);
- }
-
- if ((flags & UNDERLINE) && screen->underline && !did_ul) {
- if (FontDescent(screen) > 1)
- y++;
- XDrawLine(screen->display, VWindow(screen), gc,
- x, y,
- x + (int) len * FontWidth(screen) - 1,
- y);
- }
- return x + len * FontWidth(screen);
- }
-#endif /* OPT_RENDERFONT */
- /*
- * If we're asked to display a proportional font, do this with a fixed
- * pitch. Yes, it's ugly. But we cannot distinguish the use of xterm
- * as a dumb terminal vs its use as in fullscreen programs such as vi.
- * Hint: do not try to use a proportional font in the icon.
- */
- if (!IsIcon(screen) && !(flags & CHARBYCHAR) && screen->fnt_prop) {
- int adj, width;
- GC fillGC = gc; /* might be cursorGC */
- XFontStruct *fs = ((flags & BOLDATTR(screen))
- ? BoldFont(screen)
- : NormalFont(screen));
-
-#define GC_PAIRS(a,b) \
- if (gc == a) fillGC = b; \
- if (gc == b) fillGC = a
-
- /*
- * Fill the area where we'll write the characters, otherwise
- * we'll get gaps between them. The cursor is a special case,
- * because the XFillRectangle call only uses the foreground,
- * while we've set the cursor color in the background. So we
- * need a special GC for that.
- */
- if (gc == screen->cursorGC
- || gc == screen->reversecursorGC)
- fillGC = screen->fillCursorGC;
- GC_PAIRS(NormalGC(screen), ReverseGC(screen));
- GC_PAIRS(NormalBoldGC(screen), ReverseBoldGC(screen));
-
- if (!(flags & NOBACKGROUND))
- XFillRectangle(screen->display, VWindow(screen), fillGC,
- x, y,
- len * FontWidth(screen),
- (unsigned) FontHeight(screen));
-
- while (len--) {
- width = XTextWidth(fs, (char *) text, 1);
- adj = (FontWidth(screen) - width) / 2;
- (void) drawXtermText(screen, flags | NOBACKGROUND | CHARBYCHAR,
- gc, x + adj, y, chrset,
- PAIRED_CHARS(text++, text2++), 1, on_wide);
- x += FontWidth(screen);
- }
- return x;
- }
-#if OPT_BOX_CHARS
- /* If the font is incomplete, draw some substitutions */
- if (!IsIcon(screen)
- && !(flags & NOTRANSLATION)
- && (!screen->fnt_boxes || screen->force_box_chars)) {
- /* Fill in missing box-characters.
- Find regions without missing characters, and draw
- them calling ourselves recursively. Draw missing
- characters via xtermDrawBoxChar(). */
- XFontStruct *font = ((flags & BOLD)
- ? BoldFont(screen)
- : NormalFont(screen));
- int last, first = 0;
- for (last = 0; last < (int) len; last++) {
- unsigned ch = text[last];
- Bool isMissing;
-#if OPT_WIDE_CHARS
- if (text2 != 0)
- ch |= (text2[last] << 8);
- isMissing = (ch != HIDDEN_CHAR)
- && (xtermMissingChar(term, ch,
- ((on_wide || iswide((int) ch))
- && screen->fnt_dwd)
- ? screen->fnt_dwd
- : font));
-#else
- isMissing = xtermMissingChar(term, ch, font);
-#endif
- if (isMissing) {
- if (last > first)
- DrawSegment(first, last);
-#if OPT_WIDE_CHARS
- if (!ucs_workaround(screen, ch, flags, gc, DrawX(last), y,
- chrset, on_wide))
-#endif
- xtermDrawBoxChar(term, ch, flags, gc, DrawX(last), y);
- first = last + 1;
- }
- }
- if (last <= first) {
- return x + real_length * FontWidth(screen);
- }
- text += first;
-#if OPT_WIDE_CHARS
- text2 += first;
-#endif
- len = last - first;
- flags |= NOTRANSLATION;
- if (DrawX(first) != x) {
- return drawXtermText(screen,
- flags,
- gc,
- DrawX(first),
- y,
- chrset,
- PAIRED_CHARS(text, text2),
- len,
- on_wide);
- }
- }
-#endif /* OPT_BOX_CHARS */
- /*
- * Behave as if the font has (maybe Unicode-replacements for) drawing
- * characters in the range 1-31 (either we were not asked to ignore them,
- * or the caller made sure that there is none). The only translation we do
- * in this branch is the removal of HIDDEN_CHAR (for the wide-char case).
- */
- TRACE(("drawtext%c[%4d,%4d] (%d) %d:%s\n",
- screen->cursor_state == OFF ? ' ' : '*',
- y, x, chrset, len,
- visibleChars(PAIRED_CHARS(text, text2), len)));
- y += FontAscent(screen);
-
-#if OPT_WIDE_CHARS
- if (screen->wide_chars || screen->unicode_font) {
- int ascent_adjust = 0;
- static XChar2b *sbuf;
- static Cardinal slen;
- int n;
- unsigned ch = text[0] | (text2[0] << 8);
- int wideness = (!IsIcon(screen)
- && ((on_wide || iswide((int) ch) != 0)
- && (screen->fnt_dwd != NULL)));
- unsigned char *endtext = text + len;
- if (slen < len) {
- slen = (len + 1) * 2;
- sbuf = (XChar2b *) XtRealloc((char *) sbuf, slen * sizeof(*sbuf));
- }
- for (n = 0; n < (int) len; n++) {
- sbuf[n].byte2 = *text;
- sbuf[n].byte1 = *text2;
-#if OPT_MINI_LUIT
-#define UCS2SBUF(n,value) sbuf[n].byte2 = (value & 0xff);\
- sbuf[n].byte1 = (value >> 8)
-#define Map2Sbuf(n,from,to) (*text == from) { UCS2SBUF(n,to); }
- if (screen->latin9_mode && !screen->utf8_mode && *text2 == 0) {
-
- /* see http://www.cs.tut.fi/~jkorpela/latin9.html */
- /* *INDENT-OFF* */
- if Map2Sbuf(n, 0xa4, 0x20ac)
- else if Map2Sbuf(n, 0xa6, 0x0160)
- else if Map2Sbuf(n, 0xa8, 0x0161)
- else if Map2Sbuf(n, 0xb4, 0x017d)
- else if Map2Sbuf(n, 0xb8, 0x017e)
- else if Map2Sbuf(n, 0xbc, 0x0152)
- else if Map2Sbuf(n, 0xbd, 0x0153)
- else if Map2Sbuf(n, 0xbe, 0x0178)
- /* *INDENT-ON* */
-
- }
- if (screen->unicode_font
- && *text2 == 0
- && (*text == 0x7f || *text < 0x20)) {
- int ni = dec2ucs(*text == 0x7f ? 0 : *text);
- UCS2SBUF(n, ni);
- }
-#endif /* OPT_MINI_LUIT */
- text++;
- text2++;
- if (wideness) {
- /* filter out those pesky fake characters. */
- while (text < endtext
- && *text == HIDDEN_HI
- && *text2 == HIDDEN_LO) {
- text++;
- text2++;
- len--;
- }
- }
- }
- /* This is probably wrong. But it works. */
- underline_len = len;
-
- /* Set the drawing font */
- if (flags & (DOUBLEHFONT | DOUBLEWFONT)) {
- ; /* Do nothing: font is already set */
- } else if (wideness
- && (screen->fnt_dwd->fid || screen->fnt_dwdb->fid)) {
- underline_len = real_length = len * 2;
- if ((flags & BOLDATTR(screen)) != 0
- && screen->fnt_dwdb->fid) {
- XSetFont(screen->display, gc, screen->fnt_dwdb->fid);
- ascent_adjust = (screen->fnt_dwdb->ascent
- - NormalFont(screen)->ascent);
- } else {
- XSetFont(screen->display, gc, screen->fnt_dwd->fid);
- ascent_adjust = (screen->fnt_dwd->ascent
- - NormalFont(screen)->ascent);
- }
- /* fix ascent */
- } else if ((flags & BOLDATTR(screen)) != 0
- && BoldFont(screen)->fid) {
- XSetFont(screen->display, gc, BoldFont(screen)->fid);
- } else {
- XSetFont(screen->display, gc, NormalFont(screen)->fid);
- }
-
- if (flags & NOBACKGROUND)
- XDrawString16(screen->display,
- VWindow(screen), gc,
- x, y + ascent_adjust,
- sbuf, n);
- else
- XDrawImageString16(screen->display,
- VWindow(screen), gc,
- x, y + ascent_adjust,
- sbuf, n);
-
- if ((flags & BOLDATTR(screen)) && screen->enbolden) {
- beginClipping(screen, gc, font_width, len);
- XDrawString16(screen->display, VWindow(screen), gc,
- x + 1, y + ascent_adjust, sbuf, n);
- endClipping(screen, gc);
- }
-
- } else
-#endif /* OPT_WIDE_CHARS */
- {
- int length = len; /* X should have used unsigned */
-
- if (flags & NOBACKGROUND)
- XDrawString(screen->display, VWindow(screen), gc,
- x, y, (char *) text, length);
- else
- XDrawImageString(screen->display, VWindow(screen), gc,
- x, y, (char *) text, length);
- underline_len = length;
- if ((flags & BOLDATTR(screen)) && screen->enbolden) {
- beginClipping(screen, gc, font_width, length);
- XDrawString(screen->display, VWindow(screen), gc,
- x + 1, y, (char *) text, length);
- endClipping(screen, gc);
- }
- }
-
- if ((flags & UNDERLINE) && screen->underline && !did_ul) {
- if (FontDescent(screen) > 1)
- y++;
- XDrawLine(screen->display, VWindow(screen), gc,
- x, y, x + underline_len * font_width - 1, y);
- }
-
- return x + real_length * FontWidth(screen);
-}
-
-/* set up size hints for window manager; min 1 char by 1 char */
-void
-xtermSizeHints(XtermWidget xw, XSizeHints * sizehints, int scrollbarWidth)
-{
- TScreen *screen = &xw->screen;
-
- TRACE(("xtermSizeHints\n"));
- TRACE((" border %d\n", xw->core.border_width));
- TRACE((" scrollbar %d\n", scrollbarWidth));
-
- sizehints->base_width = 2 * screen->border + scrollbarWidth;
- sizehints->base_height = 2 * screen->border;
-
-#if OPT_TOOLBAR
- TRACE((" toolbar %d\n", ToolbarHeight(xw)));
-
- sizehints->base_height += ToolbarHeight(xw);
- sizehints->base_height += xw->core.border_width * 2;
- sizehints->base_width += xw->core.border_width * 2;
-#endif
-
- sizehints->width_inc = FontWidth(screen);
- sizehints->height_inc = FontHeight(screen);
- sizehints->min_width = sizehints->base_width + sizehints->width_inc;
- sizehints->min_height = sizehints->base_height + sizehints->height_inc;
-
- sizehints->width = MaxCols(screen) * FontWidth(screen) + sizehints->min_width;
- sizehints->height = MaxRows(screen) * FontHeight(screen) + sizehints->min_height;
-
- sizehints->flags |= (PSize | PBaseSize | PMinSize | PResizeInc);
-
- TRACE_HINTS(sizehints);
-}
-
-/*
- * Returns a GC, selected according to the font (reverse/bold/normal) that is
- * required for the current position (implied). The GC is updated with the
- * current screen foreground and background colors.
- */
-GC
-updatedXtermGC(TScreen * screen, unsigned flags, unsigned fg_bg, Bool hilite)
-{
- int my_fg = extract_fg(fg_bg, flags);
- int my_bg = extract_bg(fg_bg, flags);
- Pixel fg_pix = getXtermForeground(flags, my_fg);
- Pixel bg_pix = getXtermBackground(flags, my_bg);
- Pixel xx_pix;
-#if OPT_HIGHLIGHT_COLOR
- Pixel hi_pix = T_COLOR(screen, HIGHLIGHT_BG);
-#endif
- GC gc;
-
- checkVeryBoldColors(flags, my_fg);
-
- if (ReverseOrHilite(screen, flags, hilite)) {
- if (flags & BOLDATTR(screen))
- gc = ReverseBoldGC(screen);
- else
- gc = ReverseGC(screen);
-
-#if OPT_HIGHLIGHT_COLOR
- if (hi_pix != T_COLOR(screen, TEXT_FG)
- && hi_pix != fg_pix
- && hi_pix != bg_pix
- && hi_pix != term->dft_foreground) {
- bg_pix = fg_pix;
- fg_pix = hi_pix;
- }
-#endif
- xx_pix = bg_pix;
- bg_pix = fg_pix;
- fg_pix = xx_pix;
- } else {
- if (flags & BOLDATTR(screen))
- gc = NormalBoldGC(screen);
- else
- gc = NormalGC(screen);
-
- }
-
-#if OPT_BLINK_TEXT
- if ((screen->blink_state == ON) && (!screen->blink_as_bold) && (flags & BLINK)) {
- fg_pix = bg_pix;
- }
-#endif
-
- XSetForeground(screen->display, gc, fg_pix);
- XSetBackground(screen->display, gc, bg_pix);
- return gc;
-}
-
-/*
- * Resets the foreground/background of the GC returned by 'updatedXtermGC()'
- * to the values that would be set in SGR_Foreground and SGR_Background. This
- * duplicates some logic, but only modifies 1/4 as many GC's.
- */
-void
-resetXtermGC(TScreen * screen, unsigned flags, Bool hilite)
-{
- Pixel fg_pix = getXtermForeground(flags, term->cur_foreground);
- Pixel bg_pix = getXtermBackground(flags, term->cur_background);
- GC gc;
-
- checkVeryBoldColors(flags, term->cur_foreground);
-
- if (ReverseOrHilite(screen, flags, hilite)) {
- if (flags & BOLDATTR(screen))
- gc = ReverseBoldGC(screen);
- else
- gc = ReverseGC(screen);
-
- XSetForeground(screen->display, gc, bg_pix);
- XSetBackground(screen->display, gc, fg_pix);
-
- } else {
- if (flags & BOLDATTR(screen))
- gc = NormalBoldGC(screen);
- else
- gc = NormalGC(screen);
-
- XSetForeground(screen->display, gc, fg_pix);
- XSetBackground(screen->display, gc, bg_pix);
- }
-}
-
-#if OPT_ISO_COLORS
-/*
- * Extract the foreground-color index from a one-byte color pair. If we've got
- * BOLD or UNDERLINE color-mode active, those will be used.
- */
-unsigned
-extract_fg(unsigned color, unsigned flags)
-{
- unsigned fg = ExtractForeground(color);
-
- if (term->screen.colorAttrMode
- || (fg == ExtractBackground(color))) {
- if (term->screen.colorULMode && (flags & UNDERLINE))
- fg = COLOR_UL;
- if (term->screen.colorBDMode && (flags & BOLD))
- fg = COLOR_BD;
- if (term->screen.colorBLMode && (flags & BLINK))
- fg = COLOR_BL;
- }
- return fg;
-}
-
-/*
- * Extract the background-color index from a one-byte color pair.
- * If we've got INVERSE color-mode active, that will be used.
- */
-unsigned
-extract_bg(unsigned color, unsigned flags)
-{
- unsigned bg = ExtractBackground(color);
-
- if (term->screen.colorAttrMode
- || (bg == ExtractForeground(color))) {
- if (term->screen.colorRVMode && (flags & INVERSE))
- bg = COLOR_RV;
- }
- return bg;
-}
-
-/*
- * Combine the current foreground and background into a single 8-bit number.
- * Note that we're storing the SGR foreground, since cur_foreground may be set
- * to COLOR_UL, COLOR_BD or COLOR_BL, which would make the code larger than 8
- * bits.
- *
- * This assumes that fg/bg are equal when we override with one of the special
- * attribute colors.
- */
-unsigned
-makeColorPair(int fg, int bg)
-{
- unsigned my_bg = (bg >= 0) && (bg < NUM_ANSI_COLORS) ? (unsigned) bg : 0;
- unsigned my_fg = (fg >= 0) && (fg < NUM_ANSI_COLORS) ? (unsigned) fg : my_bg;
-#if OPT_EXT_COLORS
- return (my_fg << 8) | my_bg;
-#else
- return (my_fg << 4) | my_bg;
-#endif
-}
-
-/*
- * Using the "current" SGR background, clear a rectangle.
- */
-void
-ClearCurBackground(TScreen * screen,
- int top,
- int left,
- unsigned height,
- unsigned width)
-{
- XSetWindowBackground(screen->display,
- VWindow(screen),
- getXtermBackground(term->flags, term->cur_background));
-
- XClearArea(screen->display, VWindow(screen),
- left, top, width, height, False);
-
- XSetWindowBackground(screen->display,
- VWindow(screen),
- getXtermBackground(term->flags, MAXCOLORS));
-}
-#endif /* OPT_ISO_COLORS */
-
-/*
- * Returns a single 8/16-bit number for the given cell
- */
-unsigned
-getXtermCell(TScreen * screen, int row, int col)
-{
- unsigned ch = SCRN_BUF_CHARS(screen, row)[col];
- if_OPT_WIDE_CHARS(screen, {
- ch |= (SCRN_BUF_WIDEC(screen, row)[col] << 8);
- });
- return ch;
-}
-
-/*
- * Sets a single 8/16-bit number for the given cell
- */
-void
-putXtermCell(TScreen * screen, int row, int col, int ch)
-{
- SCRN_BUF_CHARS(screen, row)[col] = ch;
- if_OPT_WIDE_CHARS(screen, {
- SCRN_BUF_WIDEC(screen, row)[col] = (ch >> 8);
- SCRN_BUF_COM1L(screen, row)[col] = 0;
- SCRN_BUF_COM1H(screen, row)[col] = 0;
- SCRN_BUF_COM2L(screen, row)[col] = 0;
- SCRN_BUF_COM2H(screen, row)[col] = 0;
- });
-}
-
-#if OPT_WIDE_CHARS
-unsigned
-getXtermCellComb1(TScreen * screen, int row, int col)
-{
- unsigned ch = SCRN_BUF_COM1L(screen, row)[col];
- ch |= (SCRN_BUF_COM1H(screen, row)[col] << 8);
- return ch;
-}
-
-unsigned
-getXtermCellComb2(TScreen * screen, int row, int col)
-{
- unsigned ch = SCRN_BUF_COM2L(screen, row)[col];
- ch |= (SCRN_BUF_COM2H(screen, row)[col] << 8);
- return ch;
-}
-
-/*
- * Add a combining character for the given cell
- */
-void
-addXtermCombining(TScreen * screen, int row, int col, unsigned ch)
-{
- if (!SCRN_BUF_COM1L(screen, row)[col]
- && !SCRN_BUF_COM1H(screen, row)[col]) {
- SCRN_BUF_COM1L(screen, row)[col] = ch & 0xff;
- SCRN_BUF_COM1H(screen, row)[col] = ch >> 8;
- } else if (!SCRN_BUF_COM2H(screen, row)[col]) {
- SCRN_BUF_COM2L(screen, row)[col] = ch & 0xff;
- SCRN_BUF_COM2H(screen, row)[col] = ch >> 8;
- }
-}
-#endif
-
-#ifdef HAVE_CONFIG_H
-#ifdef USE_MY_MEMMOVE
-char *
-my_memmove(char *s1, char *s2, size_t n)
-{
- if (n != 0) {
- if ((s1 + n > s2) && (s2 + n > s1)) {
- static char *bfr;
- static size_t length;
- size_t j;
- if (length < n) {
- length = (n * 3) / 2;
- bfr = ((bfr != 0)
- ? TypeRealloc(char, length, bfr)
- : TypeMallocN(char, length));
- if (bfr == NULL)
- SysError(ERROR_MMALLOC);
- }
- for (j = 0; j < n; j++)
- bfr[j] = s2[j];
- s2 = bfr;
- }
- while (n-- != 0)
- s1[n] = s2[n];
- }
- return s1;
-}
-#endif /* USE_MY_MEMMOVE */
-
-#ifndef HAVE_STRERROR
-char *
-my_strerror(int n)
-{
- extern char *sys_errlist[];
- extern int sys_nerr;
- if (n > 0 && n < sys_nerr)
- return sys_errlist[n];
- return "?";
-}
-#endif
-#endif
-
-int
-char2lower(int ch)
-{
- if (isascii(ch) && isupper(ch)) { /* lowercasify */
-#ifdef _tolower
- ch = _tolower(ch);
-#else
- ch = tolower(ch);
-#endif
- }
- return ch;
-}
-
-void
-update_keyboard_type(void)
-{
- update_delete_del();
- update_old_fkeys();
- update_hp_fkeys();
- update_sco_fkeys();
- update_sun_fkeys();
- update_sun_kbd();
-}
-
-void
-set_keyboard_type(xtermKeyboardType type, Bool set)
-{
- xtermKeyboardType save = term->keyboard.type;
-
- TRACE(("set_keyboard_type(%s, %s) currently %s\n",
- visibleKeyboardType(type),
- BtoS(set),
- visibleKeyboardType(term->keyboard.type)));
- if (set) {
- term->keyboard.type = type;
- } else {
- term->keyboard.type = keyboardIsDefault;
- }
-
- if (save != term->keyboard.type) {
- update_keyboard_type();
- }
-}
-
-void
-toggle_keyboard_type(xtermKeyboardType type)
-{
- xtermKeyboardType save = term->keyboard.type;
-
- TRACE(("toggle_keyboard_type(%s) currently %s\n",
- visibleKeyboardType(type),
- visibleKeyboardType(term->keyboard.type)));
- if (term->keyboard.type == type) {
- term->keyboard.type = keyboardIsDefault;
- } else {
- term->keyboard.type = type;
- }
-
- if (save != term->keyboard.type) {
- update_keyboard_type();
- }
-}
-
-void
-init_keyboard_type(xtermKeyboardType type, Bool set)
-{
- static Bool wasSet = False;
-
- TRACE(("init_keyboard_type(%s, %s) currently %s\n",
- visibleKeyboardType(type),
- BtoS(set),
- visibleKeyboardType(term->keyboard.type)));
- if (set) {
- if (wasSet) {
- fprintf(stderr, "Conflicting keyboard type option (%u/%u)\n",
- term->keyboard.type, type);
- }
- term->keyboard.type = type;
- wasSet = True;
- update_keyboard_type();
- }
-}
-
-/*
- * If the keyboardType resource is set, use that, overriding the individual
- * boolean resources for different keyboard types.
- */
-void
-decode_keyboard_type(XTERM_RESOURCE * rp)
-{
-#define DATA(n, t, f) { n, t, XtOffsetOf(XTERM_RESOURCE, f) }
-#define FLAG(n) *(Boolean *)(((char *)rp) + table[n].offset)
- static struct {
- const char *name;
- xtermKeyboardType type;
- unsigned offset;
- } table[] = {
-#if OPT_HP_FUNC_KEYS
- DATA(NAME_HP_KT, keyboardIsHP, hpFunctionKeys),
-#endif
-#if OPT_SCO_FUNC_KEYS
- DATA(NAME_SCO_KT, keyboardIsSCO, scoFunctionKeys),
-#endif
- DATA(NAME_SUN_KT, keyboardIsSun, sunFunctionKeys),
-#if OPT_SUNPC_KBD
- DATA(NAME_VT220_KT, keyboardIsVT220, sunKeyboard),
-#endif
- };
- Cardinal n;
-
- if (x_strcasecmp(rp->keyboardType, "unknown")) {
- Bool found = False;
- for (n = 0; n < XtNumber(table); ++n) {
- if (!x_strcasecmp(rp->keyboardType, table[n].name + 1)) {
- FLAG(n) = True;
- found = True;
- init_keyboard_type(table[n].type, FLAG(n));
- } else {
- FLAG(n) = False;
- }
- }
- if (!found) {
- fprintf(stderr,
- "KeyboardType resource \"%s\" not found\n",
- rp->keyboardType);
- }
- } else {
- for (n = 0; n < XtNumber(table); ++n)
- init_keyboard_type(table[n].type, FLAG(n));
- }
-#undef DATA
-#undef FLAG
-}
-
-#if OPT_WIDE_CHARS
-#if defined(HAVE_WCHAR_H) && defined(HAVE_WCWIDTH)
-/*
- * If xterm is running in a UTF-8 locale, it is still possible to encounter
- * old runtime configurations which yield incomplete or inaccurate data.
- */
-static Bool
-systemWcwidthOk(void)
-{
- wchar_t n;
- int oops = 0;
- int last = 1024;
-
- for (n = 0; n < last; ++n) {
- int system_code = wcwidth(n);
- int intern_code = mk_wcwidth(n);
-
- /*
- * Since mk_wcwidth() is designed to check for nonspacing characters,
- * and has rough range-checks for double-width characters, it will
- * generally not detect cases where a code has not been assigned.
- *
- * Some experimentation with GNU libc suggests that up to 1/4 of the
- * codes would differ, simply because the runtime library would have a
- * table listing the unassigned codes, and return -1 for those. If
- * mk_wcwidth() has no information about a code, it returns 1. On the
- * other hand, if the runtime returns a positive number, the two should
- * agree.
- *
- * The "up to" is measured for 4k, 8k, 16k of data. With only 1k, the
- * number of differences was only 77. However, that is only one
- * system, and this is only a sanity check to avoid using broken
- * libraries.
- */
- if ((system_code < 0 && intern_code >= 1)
- || (system_code >= 0 && intern_code != system_code)) {
- ++oops;
- }
- }
- TRACE(("systemWcwidthOk: %d/%d mismatches\n", oops, last));
- return (oops < (last / 4));
-}
-#endif /* HAVE_WCWIDTH */
-
-void
-decode_wcwidth(int mode)
-{
- switch (mode) {
- default:
-#if defined(HAVE_WCHAR_H) && defined(HAVE_WCWIDTH)
- if (xtermEnvUTF8() && systemWcwidthOk()) {
- my_wcwidth = wcwidth;
- TRACE(("using system wcwidth() function\n"));
- break;
- }
- /* FALLTHRU */
- case 2:
-#endif
- my_wcwidth = &mk_wcwidth;
- TRACE(("using MK wcwidth() function\n"));
- break;
- case 3:
- case 4:
- my_wcwidth = &mk_wcwidth_cjk;
- TRACE(("using MK-CJK wcwidth() function\n"));
- break;
- }
-}
-#endif
diff --git a/nx-X11/programs/xterm/uxterm b/nx-X11/programs/xterm/uxterm
deleted file mode 100644
index 6e8f72032..000000000
--- a/nx-X11/programs/xterm/uxterm
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/sh
-# $XTermId: uxterm,v 1.20 2005/08/05 01:25:40 tom Exp $
-# $XFree86: xc/programs/xterm/uxterm,v 1.11 2005/08/05 01:25:40 dickey Exp $
-# wrapper script to setup xterm with UTF-8 locale
-
-program=xterm
-
-# Check if there is a workable locale program. If there is not, we will read
-# something via the standard error. Ignore whatever is written to the
-# standard output.
-locale=`sh -c "LC_ALL=C LC_CTYPE=C LANG=C locale >/dev/null" 2>&1`
-found=no
-
-# Check for -version and -help options, to provide a simple return without
-# requiring the program to create a window:
-if test $# = 1
-then
- case $1 in
- -v|-ver*|-h|-he*)
- $program "$@"
- exit $?
- ;;
- esac
-fi
-
-# Check environment variables that xterm does, in the same order:
-for name in LC_ALL LC_CTYPE LANG
-do
- eval 'value=$'$name
- if test -n "$value" ; then
- case $value in
- *.utf8|*.UTF8|*.utf-8|*.UTF-8)
- found=yes
- ;;
- *.utf8@*|*.UTF8@*|*.utf-8@*|*.UTF-8@*)
- found=yes
- ;;
- C|POSIX)
- # Yes, I know this is not the same - but why are you
- # here then?
- value=en_US
- ;;
- esac
- break
- fi
-done
-
-# If we didn't find one that used UTF-8, modify the safest one. Not everyone
-# has a UTF-8 locale installed (and there appears to be no trivial/portable way
-# to determine whether it is, from a shell script). We could check if the
-# user's shell does not reset unknown locale specifiers, but not all shells do.
-if test $found != yes ; then
- if test -n "$value" ; then
- value=`echo ${value} |sed -e 's/[.@].*//'`.UTF-8
- else
- name="LC_CTYPE"
- value="en_US.UTF-8"
- fi
- eval save=\$${name}
- eval ${name}=${value}
- eval export ${name}
- if test -z "$locale" ; then
- # The 'locale' program tries to do a sanity check.
- check=`sh -c "locale >/dev/null" 2>&1`
- if test -n "$check" ; then
- eval ${name}=${save}
- eval export ${name}
-
- echo "uxterm tried to use locale $value by setting \$$name" >&2
- xmessage -file - <<EOF
-uxterm tried unsuccessfully to use locale $value
-by setting \$$name to "${value}".
-EOF
- exit 1
- fi
- fi
-fi
-
-# for testing:
-#test -f ./xterm && program=./xterm
-
-exec $program -class UXTerm -title 'uxterm' -u8 "$@"
diff --git a/nx-X11/programs/xterm/version.h b/nx-X11/programs/xterm/version.h
deleted file mode 100644
index 5165798f9..000000000
--- a/nx-X11/programs/xterm/version.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* $XTermId: version.h,v 1.254 2005/11/13 23:10:36 tom Exp $ */
-/* $XFree86: xc/programs/xterm/version.h,v 3.118 2005/11/13 23:10:36 dickey Exp $ */
-
-/*
- * These definitions are used to build the string that's printed in response to
- * "xterm -version", or embedded in "xterm -help". It usually indicates the
- * version of X to which this version of xterm has been built. The number in
- * parentheses is my patch number (T.Dickey).
- */
-#define XTERM_PATCH 207
-
-#ifndef __vendorversion__
-#define __vendorversion__ "XTerm"
-#endif
diff --git a/nx-X11/programs/xterm/vms.c b/nx-X11/programs/xterm/vms.c
deleted file mode 100644
index 155cdb41b..000000000
--- a/nx-X11/programs/xterm/vms.c
+++ /dev/null
@@ -1,725 +0,0 @@
-/* $XFree86: xc/programs/xterm/vms.c,v 1.2 2003/10/27 01:07:58 dickey Exp $ */
-
-/* vms.c
- *
- * This module contains the VMS version of the routine SPAWN (from the module
- * MAIN.C) and the routines that do IO to the pseudo terminal.
- *
- * Modification History:
- * Stephan Jansen 1-Mar-1990 Original version
- * Hal R. Brand 5-Sep-1990 Added code to propagate DECW$DISPLAY
- * Aaron Leonard 11-Sep-1990 Fix string descriptor lengths
- * Stephan Jansen 2-Dec-1991 Modify to use new Pseudo terminal drivers
- * (patterned after photo.c by Forrest A. Kenney)
- * Patrick Mahan 7-Jan-1991 Removed reference to <dvidef.h> from VMS.C
- * Forced device type to be VT102 since that is
- * what we are emulating.
- */
-
-#include <libdef.h>
-#include <lnmdef.h>
-
-#include <stdio.h>
-#include <string.h>
-
-#include "xterm.h"
-#include "data.h"
-#include "vms.h"
-
-#define PTD$C_SEND_XON 0 /* Pseudo Terminal Driver event */
-#define PTD$C_SEND_BELL 1
-#define PTD$C_SEND_XOFF 2
-#define PTD$C_STOP_OUTPUT 3
-#define PTD$C_RESUME_OUTPUT 4
-#define PTD$C_CHAR_CHANGED 5
-#define PTD$C_ABORT_OUTPUT 6
-#define PTD$C_START_READ 7
-#define PTD$C_MIDDLE_READ 8
-#define PTD$C_END_READ 9
-#define PTD$C_ENABLE_READ 10
-#define PTD$C_DISABLE_READ 11
-#define PTD$C_MAX_EVENTS 12
-
-#define BUFFERS 6
-#define PAGE 512
-
-typedef struct tt_buffer
-{
-unsigned int flink;
-unsigned int blink;
-short int status;
-short int length;
-char data[VMS_TERM_BUFFER_SIZE];
-} TT_BUF_STRUCT;
-
-TT_BUF_STRUCT *tt_w_buff;
-struct q_head _align(QUADWORD) buffer_queue = (0,0);
-struct q_head _align(QUADWORD) read_queue = (0,0);
-
-static char tt_name[64];
-static $DESCRIPTOR (tt_name_desc, &tt_name);
-
-static char ws_name[64];
-static $DESCRIPTOR (ws_name_desc, &ws_name);
-
-static struct tt_char {
- char class;
- char type;
- short int page_width;
- char characteristics[3];
- char length;
- int extended;
- } tt_mode, tt_chars, orig_tt_chars;
-
-struct mem_region
-{
- TT_BUF_STRUCT *start;
- TT_BUF_STRUCT *end;
-} ret_addr;
-
-int read_stopped = FALSE;
-int write_stopped = FALSE;
-
-int tt_width;
-int tt_length;
-int tt_changed;
-int tt_pasting=FALSE; /* drm */
-int tt_new_output=FALSE; /* Cleared by flushlog(), set whenever something new
- goes to the screen through tt_write */
-
-int trnlnm(char *in,int id,char *out);
-int tt_write(char *tt_write_buf,int size);
-void spawn (void);
-
-static void tt_echo_ast(TT_BUF_STRUCT *buff_addr);
-static void tt_read_ast(TT_BUF_STRUCT *buff_addr);
-
-/*
-static void tt_start_read(void);
-*/
-void tt_start_read(void);
-int tt_read(char *buffer);
-static void send_xon(void);
-static void send_xoff(void);
-static void send_bell(void);
-static void char_change(void);
-static void freeBuff (TT_BUF_STRUCT *buff_addr);
-TT_BUF_STRUCT *getBuff(void);
-static void CloseDown(int exit_status);
-static void mbx_read_ast(void);
-static void mbx_read(void);
-
-
-
-#define DESCRIPTOR(name,string) struct dsc$descriptor_s name = \
-{ strlen(string), DSC$K_DTYPE_T, DSC$K_CLASS_S, string }
-
-int trnlnm(char *in, int id, char *out)
-{
- int status, num, len, attr = LNM$M_CASE_BLIND, foo = id;
- short outlen;
- struct itemlist
- {
- short buffer_length;
- short item_code;
- char *buffer_addr;
- int *return_length;
- } itmlst[] =
- {
- 4 , LNM$_INDEX , &foo, 0,
- 255, LNM$_STRING , out , &outlen,
- 4 , LNM$_MAX_INDEX, &num, &len,
- 0 , 0
- };
- DESCRIPTOR(lognam,in);
- DESCRIPTOR(tabnam,"LNM$DCL_LOGICAL");
-
- status = sys$trnlnm(&attr,&tabnam,&lognam,0,itmlst);
- if(status != SS$_NORMAL) return(-1); /* error status */
- out[outlen] = 0; /* terminate the output string */
- return(++num); /* return number of translations */
-}
-
-static int pty;
-static int Xsocket;
-
-void spawn (void)
-{
- int status;
- static $DESCRIPTOR (dtime, "0 00:00:00.01");
- static int delta[2];
- register TScreen *screen = &term->screen;
- static struct IOSB iosb;
- static unsigned int flags;
- static unsigned int uic;
- static char imagename[64];
- static int privs;
- static $DESCRIPTOR(device, "FTA0:");
- static int type;
- static int class;
- static int devdepend;
- static int mem_size;
- int i;
-
- /* if pid and mbx_chan are nonzero then close them in CloseDown() */
- pid = 0;
- mbx_chan = 0;
-
- status = SYS$EXPREG (BUFFERS, &ret_addr, 0, 0);
- if(!(status & SS$_NORMAL)) lib$signal(status);
-
- tt_w_buff = (char *)ret_addr.end - PAGE + 1;
-
- /* use one buffer for writing, the reset go in the free buffer queue */
- for(i=0; i < BUFFERS-1; i++)
- {
- freeBuff((char *)ret_addr.start +i*PAGE);
- }
-
- /* avoid double MapWindow requests, for wm's that care... */
- XtSetMappedWhenManaged( screen->TekEmu ? XtParent(tekWidget) :
- XtParent(term), False );
- /* Realize the Tek or VT widget, depending on which mode we're in.
- If VT mode, this calls VTRealize (the widget's Realize proc) */
- XtRealizeWidget (screen->TekEmu ? XtParent(tekWidget) :
- XtParent(term));
-
- /* get the default device characteristics of the pseudo terminal */
-
- itemlist[0].buflen = 4;
- itemlist[0].code = DVI$_DEVTYPE;
- itemlist[0].buffer = &type;
- itemlist[0].return_addr = &tt_name_desc.dsc$w_length;
-
- itemlist[1].buflen = 4;
- itemlist[1].code = DVI$_DEVCLASS;
- itemlist[1].buffer = &class;
- itemlist[1].return_addr = &tt_name_desc.dsc$w_length;
-
- itemlist[2].buflen = 4;
- itemlist[2].code = DVI$_DEVDEPEND;
- itemlist[2].buffer = &devdepend;
- itemlist[2].return_addr = &tt_name_desc.dsc$w_length;
-
- itemlist[3].buflen = 4;
- itemlist[3].code = DVI$_DEVDEPEND2;
- itemlist[3].buffer = &tt_chars.extended;
- itemlist[3].return_addr = &tt_name_desc.dsc$w_length;
-
- itemlist[4].buflen = 0;
- itemlist[4].code = 0;
-
-
- status = sys$getdviw(0,0,&device,&itemlist,&iosb,0,0,0);
- if(!(status & SS$_NORMAL)) lib$signal(status);
- if(!(iosb.status & SS$_NORMAL)) lib$signal(iosb.status);
-
- tt_chars.type = DT$_VT102; /* XTerm supports VT102 mode */
- tt_chars.class = class;
- tt_chars.page_width = screen->max_col+1;
- tt_chars.length = screen->max_row+1;
-
- /* copy the default char's along with the created window size */
-
- bcopy(&devdepend, &tt_chars.characteristics, 3);
-
- tt_chars.extended |= TT2$M_ANSICRT | TT2$M_AVO | TT2$M_DECCRT;
-
-
- /* create the pseudo terminal with the proper char's */
- status = ptd$create(&tt_chan,0,&tt_chars,12,0,0,0,&ret_addr);
- if(!(status & SS$_NORMAL)) lib$signal(status);
-
-
- /* get the device name of the Pseudo Terminal */
-
- itemlist[0].buflen = 64;
- itemlist[0].code = DVI$_DEVNAM;
- itemlist[0].buffer = &tt_name;
- itemlist[0].return_addr = &tt_name_desc.dsc$w_length;
-
- /* terminate the list */
- itemlist[1].buflen = 0;
- itemlist[1].code = 0;
-
- status = sys$getdviw(0,tt_chan,0,&itemlist,&iosb,0,0,0);
- if(!(status & SS$_NORMAL)) CloseDown(status);
- if(!(iosb.status & SS$_NORMAL)) CloseDown(iosb.status);
-
- /*
- * set up AST's for XON, XOFF, BELL and characteristics change.
- */
-
- status = ptd$set_event_notification(tt_chan,&send_xon,0,0,PTD$C_SEND_XON);
- if(!(status & SS$_NORMAL)) CloseDown(status);
-
- status = ptd$set_event_notification(tt_chan,&send_xoff,0,0,PTD$C_SEND_XOFF);
- if(!(status & SS$_NORMAL)) CloseDown(status);
-
- status = ptd$set_event_notification(tt_chan,&send_bell,0,0,PTD$C_SEND_BELL);
- if(!(status & SS$_NORMAL)) CloseDown(status);
-
- status = ptd$set_event_notification(tt_chan,&char_change,0,0,PTD$C_CHAR_CHANGED);
- if(!(status & SS$_NORMAL)) CloseDown(status);
-
- /* create a mailbox for the detached process to detect hangup */
-
- status = sys$crembx(0,&mbx_chan,ACC$K_TERMLEN,0,255,0,0);
- if(!(status & SS$_NORMAL)) CloseDown(status);
-
-
- /*
- * get the device unit number for created process completion
- * status to be sent to.
- */
-
- itemlist[0].buflen = 4;
- itemlist[0].code = DVI$_UNIT;
- itemlist[0].buffer = &mbxunit;
- itemlist[0].return_addr = 0;
-
- /* terminate the list */
- itemlist[1].buflen = 0;
- itemlist[1].code = 0;
-
- status = sys$getdviw(0,mbx_chan,0,&itemlist,&iosb,0,0,0);
- if(!(status & SS$_NORMAL)) CloseDown(status);
- if(!(iosb.status & SS$_NORMAL)) CloseDown(iosb.status);
-
-
- tt_start_read();
-
- /*
- * find the current process's UIC so that it can be used in the
- * call to sys$creprc
- */
- itemlist[0].buflen = 4;
- itemlist[0].code = JPI$_UIC;
- itemlist[0].buffer = &uic;
- itemlist[0].return_addr = 0;
-
- /* terminate the list */
- itemlist[1].buflen = 0;
- itemlist[1].code = 0;
-
- status = sys$getjpiw(0,0,0,&itemlist,0,0,0);
- if(!(status & SS$_NORMAL)) CloseDown(status);
-
- /* Complete a descriptor for the WS (DECW$DISPLAY) device */
-
- trnlnm("DECW$DISPLAY",0,ws_name);
- ws_name_desc.dsc$w_length = strlen(ws_name);
-
- /* create the process */
- /* Set sys$error to be the WS (DECW$DISPLAY) device. LOGINOUT */
- /* has special code for DECWINDOWS that will: */
- /* 1) do a DEFINE/JOB DECW$DISPLAY 'f$trnlnm(sys$error)' */
- /* 2) then redefine SYS$ERROR to match SYS$OUTPUT! */
- /* This will propogate DECW$DISPLAY to the XTERM process!!! */
- /* Thanks go to Joel M Snyder who posted this info to INFO-VAX */
-
- flags = PRC$M_INTER | PRC$M_NOPASSWORD | PRC$M_DETACH;
- status = sys$creprc(&pid,&image,&tt_name_desc,&tt_name_desc,
- &ws_name_desc,0,0,0,4,uic,mbxunit,flags);
- if(!(status & SS$_NORMAL)) CloseDown(status);
-
-
- /* hang a read on the mailbox waiting for completion */
- mbx_read();
-
-
-/* set time value and schedule a periodic wakeup (every 1/100 of a second)
- * this is used to prevent the controlling process from using up all the
- * CPU. The controlling process will hibernate at strategic points in
- * the program when it is just waiting for input.
- */
-
- status = sys$bintim(&dtime,&delta);
- if (!(status & SS$_NORMAL)) CloseDown(status);
-
- status = sys$schdwk(0,0,&delta,&delta);
- if (!(status & SS$_NORMAL)) CloseDown(status);
-
-
- /*
- * This is rather funky, but it saves me from having to totally
- * rewrite some parts of the code (namely in_put in module CHARPROC.C)
- */
- pty = 1;
- screen->respond = pty;
- pty_mask = 1 << pty;
- Select_mask = pty_mask;
- X_mask = 1 << Xsocket;
-
-}
-
-
-/*
- * This routine handles completion of write with echo. It takes the
- * echo buffer and puts it on the read queue. It will then be processed
- * by the routine tt_read. If the echo buffer is empty, it is put back
- * on the free buffer queue.
- */
-
-static void tt_echo_ast(TT_BUF_STRUCT *buff_addr)
-{
- int status;
-
- if (buff_addr->length != 0)
- {
- status = LIB$INSQTI(buff_addr, &read_queue);
- if((status != SS$_NORMAL) && (status != LIB$_ONEENTQUE))
- {
- CloseDown(status);
- }
- }
- else
- {
- freeBuff(buff_addr);
- }
-}
-
-
-/*
- * This routine writes to the pseudo terminal. If there is a free
- * buffer then write with an echo buffer completing asyncronously, else
- * write syncronously using the buffer reserved for writing. All errors
- * are fatal, except DATAOVERUN and DATALOST,these errors can be ignored.
-
- CAREFUL! Whatever calls this must NOT pass more than VMS_TERM_BUFFER_SIZE
- bytes at a time. This definition has been moved to VMS.H
-
- */
-
-int tt_write(char *tt_write_buf, int size)
-{
- int status;
- TT_BUF_STRUCT *echoBuff;
-
- /* if writing stopped, return 0 until Xon */
- if(write_stopped) return (0);
-
- memmove(&tt_w_buff->data,tt_write_buf,size);
-
- echoBuff = getBuff();
- if (echoBuff != LIB$_QUEWASEMP)
- {
- status = PTD$WRITE (tt_chan, &tt_echo_ast, echoBuff,
- &tt_w_buff->status, size,
- &echoBuff->status, VMS_TERM_BUFFER_SIZE);
- }
- else
- {
- status = PTD$WRITE (tt_chan, 0, 0, &tt_w_buff->status, size, 0, 0);
- }
- if (status & SS$_NORMAL)
- {
- if ((tt_w_buff->status != SS$_NORMAL) &&
- (tt_w_buff->status != SS$_DATAOVERUN) &&
- (tt_w_buff->status != SS$_DATALOST))
- {
- CloseDown(tt_w_buff->status);
- }
- }
- else
- {
- CloseDown(status);
- }
-
- return(size);
-}
-
-
-/*
- * This routine is called when a read to the pseudo terminal completes.
- * Put the newly read buffer onto the read queue. It will be processed
- * and freed in the routine tt_read.
- */
-
-static void tt_read_ast(TT_BUF_STRUCT *buff_addr)
-{
- int status;
-
- if (buff_addr->status & SS$_NORMAL)
- {
- status = LIB$INSQTI(buff_addr, &read_queue);
- if ((status != SS$_NORMAL) && (status != LIB$_ONEENTQUE))
- {
- CloseDown(status);
- }
- }
- else
- CloseDown(buff_addr->status);
-
- tt_start_read();
- sys$wake(0,0);
- return;
-}
-
-
-/*
- * If there is a free buffer on the buffer queue then Start a read from
- * the pseudo terminal, otherwise set a flag, the reading will be restarted
- * in the routine freeBuff when a buffer is freed.
- */
-
-void tt_start_read(void)
-{
- int status;
- static int size;
- TT_BUF_STRUCT *buff_addr;
-
- buff_addr = getBuff();
- if (buff_addr != LIB$_QUEWASEMP)
- {
- if(!tt_pasting){
- status = PTD$READ (0, tt_chan, &tt_read_ast, buff_addr,
- &buff_addr->status, VMS_TERM_BUFFER_SIZE);
- if ((status & SS$_NORMAL) != SS$_NORMAL)
- {
- CloseDown(status);
- }
- }
- }
- else
- {
- read_stopped = TRUE;
- }
- return;
-}
-
-
-/*
- * Get data from the pseudo terminal. Return the data from the first item
- * on the read queue, and put that buffer back onto the free buffer queue.
- * Return the length or zero if the read queue is empty.
- *
- */
-
-int tt_read(char *buffer)
-{
- TT_BUF_STRUCT *read_buff;
- int status;
- int len;
-
- status = LIB$REMQHI(&read_queue, &read_buff);
- if(status == LIB$_QUEWASEMP){
- return(0);
- }
- else if (status & SS$_NORMAL)
- {
- len = read_buff->length;
- memmove(buffer,&read_buff->data,len);
- freeBuff(read_buff);
- tt_new_output=TRUE; /* DRM something will be written */
- }
- else
- CloseDown(status);
-
- return(len);
-}
-
-
-/*
- * if xon then it is safe to start writing again.
- */
-
-static void send_xon(void)
-{
- write_stopped = FALSE;
-}
-
-
-/*
- * If Xoff then stop writing to the pseudo terminal until you get Xon.
- */
-static void send_xoff(void)
-{
- write_stopped = TRUE;
-}
-
-
-
-/*
- * Beep the terminal to let the user know data will be lost because
- * of too much data.
- */
-
-static void send_bell(void)
-{
- Bell();
-}
-
-/*
- * if the pseudo terminal's characteristics change, check to see if the
- * page size changed. If it did, resize the widget, otherwise, ignore
- * it! This routine just gets the new term dimensions and sets a flag
- * to indicate the term chars have changed. The widget gets resized in
- * the routine in_put in the module CHARPROC.C. You cant resize the
- * widget in this routine because this is an AST and X is not reenterent.
- */
-
-static void char_change(void)
-{
- int status;
-
- /*
- * Dont do anything if in Tek mode
- */
-
- if(!(term->screen.TekEmu))
- {
- status = sys$qiow(0,tt_chan,IO$_SENSEMODE,0,0,0,&tt_mode,8,0,0,0,0);
- if(!(status & SS$_NORMAL)) CloseDown(status);
-
- if((term->screen.max_row != tt_mode.length) ||
- (term->screen.max_col != tt_mode.page_width))
- {
- tt_length = tt_mode.length;
- tt_width = tt_mode.page_width;
-
- tt_changed = TRUE;
-
- }
- }
-}
-
-
-/*
- * Put a free buffer back onto the buffer queue. If reading was
- * stopped for lack of free buffers, start reading again.
- */
-
-static void freeBuff (TT_BUF_STRUCT *buff_addr)
-{
- int ast_stat;
- int status;
-
- ast_stat = SYS$SETAST(0);
- if (!read_stopped)
- {
- LIB$INSQHI(buff_addr, &buffer_queue);
- }
- else
- {
- status = PTD$READ (0, tt_chan, &tt_read_ast, buff_addr,
- &buff_addr->status, VMS_TERM_BUFFER_SIZE);
- if (status & SS$_NORMAL)
- {
- read_stopped = FALSE;
- }
- else
- {
- CloseDown(status);
- }
- }
- if (ast_stat == SS$_WASSET) ast_stat = SYS$SETAST(1);
-}
-
-
-/*
- * return a free buffer from the buffer queue.
- */
-
-TT_BUF_STRUCT *getBuff(void)
-{
- int status;
- TT_BUF_STRUCT *buff_addr;
-
- status = LIB$REMQHI(&buffer_queue, &buff_addr);
- if (status & SS$_NORMAL)
- {
- return(buff_addr);
- }
- else
- {
- return(status);
- }
-}
-
-
-/*
- * Close down and exit. Kill the detached process (if it still
- * exists), deassign mailbox channell (if assigned), cancel any
- * waiting IO to the pseudo terminal and delete it, exit with any
- * status information.
- */
-
-static void CloseDown(int exit_status)
-{
- int status;
-
- /* if process has not terminated, do so now! */
- if(pid != 0)
- {
- status = sys$forcex(&pid,0,0);
- if(!(status & SS$_NORMAL)) lib$signal(status);
- }
-
- /* if mbx_chan is assigned, deassign it */
- if(mbx_chan != 0)
- {
- sys$dassgn(mbx_chan);
- }
-
- /* cancel pseudo terminal IO requests */
- status = ptd$cancel(tt_chan);
- if(!(status & SS$_NORMAL)) lib$signal(status);
-
- /* delete pseudo terminal */
- status = ptd$delete(tt_chan);
- if(!(status & SS$_NORMAL)) lib$signal(status);
-
- if(!(exit_status & SS$_NORMAL)) lib$signal(exit_status);
-
- exit(1);
-
-}
-
-
-/*
- * This routine gets called when the detached process terminates (for
- * whatever reason). The mailbox buffer has final exit status. Close
- * down and exit.
- */
-
-static void mbx_read_ast(void)
-{
- int status;
-
- pid = 0;
-
- status = mbx_read_iosb.status;
- if (!(status & SS$_NORMAL)) CloseDown(status);
-
- status = (unsigned long int) mbx_buf.acc$l_finalsts;
- if (!(status & SS$_NORMAL)) CloseDown(status);
-
- CloseDown(1);
-
-}
-
-
-/*
- * This routine starts a read on the mailbox associated with the detached
- * process. The AST routine gets called when the detached process terminates.
- */
-
-static void mbx_read(void)
-{
-int status;
-static int size;
-
- size = ACC$K_TERMLEN;
- status = sys$qio(0,mbx_chan,
- IO$_READVBLK,
- &mbx_read_iosb,
- &mbx_read_ast,
- 0,
- &mbx_buf,
- size,0,0,0,0);
-
- if (!(status & SS$_NORMAL)) CloseDown(status);
-
- return;
-}
diff --git a/nx-X11/programs/xterm/vms.h b/nx-X11/programs/xterm/vms.h
deleted file mode 100644
index 86f338eb9..000000000
--- a/nx-X11/programs/xterm/vms.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* $XFree86: xc/programs/xterm/vms.h,v 1.1 2000/02/08 17:19:45 dawes Exp $ */
-
-/* vms.h
- */
-#include <ssdef.h>
-#include <iodef.h>
-#include <msgdef.h>
-#include <descrip.h>
-#include <dvidef.h>
-#include <jpidef.h>
-#include <prcdef.h>
-#include <dcdef.h>
-#include <ttdef.h>
-#include <tt2def.h>
-#include <accdef.h>
-#include <prvdef.h>
-
-struct IOSB
-{
- short int status;
- short int len;
- int unused;
-} mbx_read_iosb,iosb;
-
-#define MAXITEMLIST 5
-
-short int tt_chan; /* channel to the Pseudo terminal */
-short int mbx_chan; /* channel to the mailbox */
-struct accdef mbx_buf; /* mailbox buffer */
-short int mbxunit; /* mailbox unit number */
-int pid; /* PID of created process */
-static $DESCRIPTOR (image, "SYS$SYSTEM:LOGINOUT.EXE");
-
-static struct items {
- short int buflen;
- short int code;
- int buffer;
- int return_addr;
-} itemlist[MAXITEMLIST];
diff --git a/nx-X11/programs/xterm/vttests/16colors.sh b/nx-X11/programs/xterm/vttests/16colors.sh
deleted file mode 100644
index f47337577..000000000
--- a/nx-X11/programs/xterm/vttests/16colors.sh
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/16colors.sh,v 1.5 2003/05/19 00:52:30 dickey Exp $
-#
-# -- Thomas Dickey (1999/3/27)
-# Show a simple 16-color test pattern. It is a little more confusing than
-# 8colors.sh, since everything is abbreviated to fit on an 80-column line.
-# The high (8-15) combinations for foreground or background are marked with
-# a '+' sign.
-
-ESC=""
-CMD='echo'
-OPT='-n'
-SUF=''
-TMP=/tmp/xterm$$
-eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
-( test ! -f $TMP || test -s $TMP ) &&
-for verb in printf print ; do
- rm -f $TMP
- eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
- if test -f $TMP ; then
- if test ! -s $TMP ; then
- CMD="$verb"
- OPT=
- SUF='\c'
- break
- fi
- fi
-done
-rm -f $TMP
-
-if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null
-then
- trap '$CMD ""; exit' EXIT HUP INT TRAP TERM
-else
- trap '$CMD ""; exit' 0 1 2 5 15
-fi
-
-echo ""
-while true
-do
- for AT in 0 1 4 7
- do
- case $AT in
- 0) attr=" ";;
- 1) attr="BO ";;
- 4) attr="UN ";;
- 7) attr="RV ";;
- esac
- for FG in 0 1 2 3 4 5 6 7
- do
- case $FG in
- 0) fcolor="BLK ";;
- 1) fcolor="RED ";;
- 2) fcolor="GRN ";;
- 3) fcolor="YEL ";;
- 4) fcolor="BLU ";;
- 5) fcolor="MAG ";;
- 6) fcolor="CYN ";;
- 7) fcolor="WHT ";;
- esac
- for HI in 3 9
- do
- if test $HI = 3 ; then
- color=" $fcolor"
- else
- color="+$fcolor"
- fi
- $CMD $OPT "[0;${AT}m$attr$SUF"
- $CMD $OPT "[${HI}${FG}m$color$SUF"
- for BG in 1 2 3 4 5 6 7
- do
- case $BG in
- 0) bcolor="BLK ";;
- 1) bcolor="RED ";;
- 2) bcolor="GRN ";;
- 3) bcolor="YEL ";;
- 4) bcolor="BLU ";;
- 5) bcolor="MAG ";;
- 6) bcolor="CYN ";;
- 7) bcolor="WHT ";;
- esac
- $CMD $OPT "[4${BG}m$bcolor$SUF"
- $CMD $OPT "[10${BG}m+$bcolor$SUF"
- done
- echo ""
- done
- done
- sleep 1
- done
-done
diff --git a/nx-X11/programs/xterm/vttests/256colors.pl b/nx-X11/programs/xterm/vttests/256colors.pl
deleted file mode 100644
index b053b94fc..000000000
--- a/nx-X11/programs/xterm/vttests/256colors.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/perl
-# $XFree86: xc/programs/xterm/vttests/256colors.pl,v 1.1 1999/07/11 08:49:54 dawes Exp $
-
-for ($bg = 0; $bg < 256; $bg++) {
- print "\x1b[9;1H\x1b[2J";
- for ($fg = 0; $fg < 256; $fg++) {
- print "\x1b[48;5;${bg}m\x1b[38;5;${fg}m";
- printf "%03.3d/%03.3d ", $fg, $bg;
- }
- sleep 1;
- print "\n";
-}
diff --git a/nx-X11/programs/xterm/vttests/256colors2.pl b/nx-X11/programs/xterm/vttests/256colors2.pl
deleted file mode 100644
index c97c2be9d..000000000
--- a/nx-X11/programs/xterm/vttests/256colors2.pl
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/perl
-# Author: Todd Larason <jtl@molehill.org>
-# $XFree86: xc/programs/xterm/vttests/256colors2.pl,v 1.2 2002/03/26 01:46:43 dickey Exp $
-
-# use the resources for colors 0-15 - usually more-or-less a
-# reproduction of the standard ANSI colors, but possibly more
-# pleasing shades
-
-# colors 16-231 are a 6x6x6 color cube
-for ($red = 0; $red < 6; $red++) {
- for ($green = 0; $green < 6; $green++) {
- for ($blue = 0; $blue < 6; $blue++) {
- printf("\x1b]4;%d;rgb:%2.2x/%2.2x/%2.2x\x1b\\",
- 16 + ($red * 36) + ($green * 6) + $blue,
- ($red ? ($red * 40 + 55) : 0),
- ($green ? ($green * 40 + 55) : 0),
- ($blue ? ($blue * 40 + 55) : 0));
- }
- }
-}
-
-# colors 232-255 are a grayscale ramp, intentionally leaving out
-# black and white
-for ($gray = 0; $gray < 24; $gray++) {
- $level = ($gray * 10) + 8;
- printf("\x1b]4;%d;rgb:%2.2x/%2.2x/%2.2x\x1b\\",
- 232 + $gray, $level, $level, $level);
-}
-
-
-# display the colors
-
-# first the system ones:
-print "System colors:\n";
-for ($color = 0; $color < 8; $color++) {
- print "\x1b[48;5;${color}m ";
-}
-print "\x1b[0m\n";
-for ($color = 8; $color < 16; $color++) {
- print "\x1b[48;5;${color}m ";
-}
-print "\x1b[0m\n\n";
-
-# now the color cube
-print "Color cube, 6x6x6:\n";
-for ($green = 0; $green < 6; $green++) {
- for ($red = 0; $red < 6; $red++) {
- for ($blue = 0; $blue < 6; $blue++) {
- $color = 16 + ($red * 36) + ($green * 6) + $blue;
- print "\x1b[48;5;${color}m ";
- }
- print "\x1b[0m ";
- }
- print "\n";
-}
-
-
-# now the grayscale ramp
-print "Grayscale ramp:\n";
-for ($color = 232; $color < 256; $color++) {
- print "\x1b[48;5;${color}m ";
-}
-print "\x1b[0m\n";
diff --git a/nx-X11/programs/xterm/vttests/88colors.pl b/nx-X11/programs/xterm/vttests/88colors.pl
deleted file mode 100644
index a645fc3d4..000000000
--- a/nx-X11/programs/xterm/vttests/88colors.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/perl
-# $XFree86: xc/programs/xterm/vttests/88colors.pl,v 1.1 1999/09/25 14:38:51 dawes Exp $
-# Made from 256colors.pl
-
-for ($bg = 0; $bg < 88; $bg++) {
- print "\x1b[9;1H\x1b[48;5;${bg}m\x1b[2J";
- for ($fg = 0; $fg < 88; $fg++) {
- print "\x1b[38;5;${fg}m";
- printf "%03.3d/%03.3d ", $fg, $bg;
- }
- sleep 1;
- print "\n";
-}
diff --git a/nx-X11/programs/xterm/vttests/88colors2.pl b/nx-X11/programs/xterm/vttests/88colors2.pl
deleted file mode 100644
index 0e4c8f529..000000000
--- a/nx-X11/programs/xterm/vttests/88colors2.pl
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/usr/bin/perl
-# Author: Steve Wall <swall@redcom.com>
-# $XFree86: xc/programs/xterm/vttests/88colors2.pl,v 1.1 1999/09/25 14:38:51 dawes Exp $
-# Made from 256colors2.pl
-
-# use the resources for colors 0-15 - usually more-or-less a
-# reproduction of the standard ANSI colors, but possibly more
-# pleasing shades
-
-# colors 16-79 are a 4x4x4 color cube
-@steps=(0,139,205,255);
-for ($red = 0; $red < 4; $red++) {
- for ($green = 0; $green < 4; $green++) {
- for ($blue = 0; $blue < 4; $blue++) {
- printf("\x1b]4;%d;rgb:%2.2x/%2.2x/%2.2x\x1b\\",
- 16 + ($red * 16) + ($green * 4) + $blue,
- int (@steps[$red]),
- int (@steps[$green]),
- int (@steps[$blue]));
- }
- }
-}
-
-# colors 80-87 are a grayscale ramp, intentionally leaving out
-# black and white
-for ($gray = 0; $gray < 8; $gray++) {
- $level = ($gray * 23.18181818) + 46.36363636;
- if( $gray > 0 ) { $level += 23.18181818; }
- printf("\x1b]4;%d;rgb:%2.2x/%2.2x/%2.2x\x1b\\",
- 80 + $gray, int($level), int($level), int($level));
-}
-
-
-# display the colors
-
-# first the system ones:
-print "System colors:\n";
-for ($color = 0; $color < 8; $color++) {
- print "\x1b[48;5;${color}m ";
-}
-print "\x1b[0m\n";
-for ($color = 8; $color < 16; $color++) {
- print "\x1b[48;5;${color}m ";
-}
-print "\x1b[0m\n\n";
-
-# now the color cube
-print "Color cube, 4x4x4:\n";
-for ($green = 0; $green < 4; $green++) {
- for ($red = 0; $red < 4; $red++) {
- for ($blue = 0; $blue < 4; $blue++) {
- $color = 16 + ($red * 16) + ($green * 4) + $blue;
- print "\x1b[48;5;${color}m ";
- }
- print "\x1b[0m ";
- }
- print "\n";
-}
-
-
-# now the grayscale ramp
-print "Grayscale ramp:\n";
-for ($color = 80; $color < 88; $color++) {
- print "\x1b[48;5;${color}m ";
-}
-print "\x1b[0m\n";
diff --git a/nx-X11/programs/xterm/vttests/8colors.sh b/nx-X11/programs/xterm/vttests/8colors.sh
deleted file mode 100644
index 10865f730..000000000
--- a/nx-X11/programs/xterm/vttests/8colors.sh
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/8colors.sh,v 1.5 2003/05/19 00:52:30 dickey Exp $
-#
-# -- Thomas Dickey (1999/3/27)
-# Show a simple 8-color test pattern
-
-ESC=""
-CMD='echo'
-OPT='-n'
-SUF=''
-TMP=/tmp/xterm$$
-eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
-( test ! -f $TMP || test -s $TMP ) &&
-for verb in printf print ; do
- rm -f $TMP
- eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
- if test -f $TMP ; then
- if test ! -s $TMP ; then
- CMD="$verb"
- OPT=
- SUF='\c'
- break
- fi
- fi
-done
-rm -f $TMP
-
-if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null
-then
- trap '$CMD $OPT ""; exit' EXIT HUP INT TRAP TERM
-else
- trap '$CMD $OPT ""; exit' 0 1 2 5 15
-fi
-
-echo ""
-while true
-do
- for AT in 0 1 4 7
- do
- case $AT in
- 0) attr="normal ";;
- 1) attr="bold ";;
- 4) attr="under ";;
- 7) attr="reverse ";;
- esac
- for FG in 0 1 2 3 4 5 6 7
- do
- case $FG in
- 0) fcolor="black ";;
- 1) fcolor="red ";;
- 2) fcolor="green ";;
- 3) fcolor="yellow ";;
- 4) fcolor="blue ";;
- 5) fcolor="magenta ";;
- 6) fcolor="cyan ";;
- 7) fcolor="white ";;
- esac
- $CMD $OPT "[0;${AT}m$attr"
- $CMD $OPT "[3${FG}m$fcolor"
- for BG in 1 2 3 4 5 6 7
- do
- case $BG in
- 0) bcolor="black ";;
- 1) bcolor="red ";;
- 2) bcolor="green ";;
- 3) bcolor="yellow ";;
- 4) bcolor="blue ";;
- 5) bcolor="magenta ";;
- 6) bcolor="cyan ";;
- 7) bcolor="white ";;
- esac
- $CMD $OPT "[4${BG}m$bcolor"
- done
- echo ""
- done
- sleep 1
- done
-done
diff --git a/nx-X11/programs/xterm/vttests/acolors.sh b/nx-X11/programs/xterm/vttests/acolors.sh
deleted file mode 100644
index ea19a38f4..000000000
--- a/nx-X11/programs/xterm/vttests/acolors.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/acolors.sh,v 1.2 2003/05/19 00:52:30 dickey Exp $
-#
-# -- Thomas Dickey (1999/3/27)
-# Demonstrate the use of the control sequence for changing ANSI colors.
-
-ESC=""
-CMD='echo'
-OPT='-n'
-SUF=''
-TMP=/tmp/xterm$$
-eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
-( test ! -f $TMP || test -s $TMP ) &&
-for verb in printf print ; do
- rm -f $TMP
- eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
- if test -f $TMP ; then
- if test ! -s $TMP ; then
- CMD="$verb"
- OPT=
- SUF='\c'
- break
- fi
- fi
-done
-rm -f $TMP
-
-LIST="00 30 80 d0 ff"
-
-exec </dev/tty
-old=`stty -g`
-stty raw -echo min 0 time 5
-
-$CMD $OPT "${ESC}]4;4;?${SUF}" > /dev/tty
-read original
-stty $old
-original=${original}${SUF}
-
-if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null
-then
- trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM
-else
- trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15
-fi
-
-$CMD "${ESC}[0;1;34mThis message is BLUE"
-$CMD "${ESC}[0;1;31mThis message is RED ${ESC}[0;31m(sometimes)"
-$CMD "${ESC}[0;1;32mThis message is GREEN${ESC}[0m"
-while true
-do
- for R in $LIST
- do
- for G in $LIST
- do
- for B in $LIST
- do
- # color "9" is bold-red
- test $R != 00 && test $G = 00 && test $B = 00 && $CMD $OPT "" >/dev/tty
- $CMD $OPT "${ESC}]4;9;rgb:$R/$G/$B${SUF}" >/dev/tty
- sleep 1
- done
- done
- done
-done
diff --git a/nx-X11/programs/xterm/vttests/doublechars.sh b/nx-X11/programs/xterm/vttests/doublechars.sh
deleted file mode 100644
index dd032ae46..000000000
--- a/nx-X11/programs/xterm/vttests/doublechars.sh
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/doublechars.sh,v 1.5 2003/05/19 00:52:30 dickey Exp $
-#
-# -- Thomas Dickey (1999/7/7)
-# Illustrate the use of double-size characters by drawing successive lines in
-# the commonly used video attributes.
-#
-# Use the -w option to force the output to wrap. It will look ugly, because
-# the double-high lines will be split.
-
-ESC=""
-CMD='echo'
-OPT='-n'
-SUF=''
-TMP=/tmp/xterm$$
-eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
-( test ! -f $TMP || test -s $TMP ) &&
-for verb in printf print ; do
- rm -f $TMP
- eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
- if test -f $TMP ; then
- if test ! -s $TMP ; then
- CMD="$verb"
- OPT=
- SUF='\c'
- break
- fi
- fi
-done
-rm -f $TMP
-
-SAVE=yes
-WRAP=no
-if test $# != 0 ; then
- while test $# != 0
- do
- case $1 in
- -n) SAVE=no ;;
- -w) WRAP=yes ;;
- esac
- shift
- done
-fi
-
-if test $SAVE = yes ; then
- exec </dev/tty
- old=`stty -g`
- stty raw -echo min 0 time 5
-
- $CMD $OPT "${ESC}[18t${SUF}" > /dev/tty
- IFS=';' read junk high wide
-
- stty $old
-
- wide=`echo $wide|sed -e 's/t.*//'`
- original=${ESC}[8\;${high}\;${wide}t${SUF}
-
- if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null
- then
- trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM
- else
- trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15
- fi
-
-fi
-
-if test $WRAP = yes ; then
- # turn on wrapping and force the screen to 80 columns
- $CMD $OPT "${ESC}[?7h" >/dev/tty
- $CMD $OPT "${ESC}[?40l" >/dev/tty
-else
- # force the screen to 132 columns
- $CMD $OPT "${ESC}[?40h" >/dev/tty
- $CMD $OPT "${ESC}[?3h" >/dev/tty
-fi
-
-for SGR in 0 1 4 5 7
-do
- $CMD $OPT "${ESC}[0;${SGR}m" >/dev/tty
- for DBL in 5 3 4 6 5
- do
- $CMD $OPT "${ESC}#${DBL}" >/dev/tty
- echo "The quick brown fox jumps over the lazy dog" >/dev/tty
- done
- echo
-done
-$CMD $OPT "${ESC}[0m" >/dev/tty
diff --git a/nx-X11/programs/xterm/vttests/dynamic.sh b/nx-X11/programs/xterm/vttests/dynamic.sh
deleted file mode 100644
index e68ebbc6c..000000000
--- a/nx-X11/programs/xterm/vttests/dynamic.sh
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/dynamic.sh,v 1.5 2003/05/19 00:52:30 dickey Exp $
-#
-# -- Thomas Dickey (1999/3/27)
-# Demonstrate the use of dynamic colors by setting the background successively
-# to different values.
-
-ESC=""
-CMD='echo'
-OPT='-n'
-SUF=''
-TMP=/tmp/xterm$$
-eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
-( test ! -f $TMP || test -s $TMP ) &&
-for verb in printf print ; do
- rm -f $TMP
- eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
- if test -f $TMP ; then
- if test ! -s $TMP ; then
- CMD="$verb"
- OPT=
- SUF='\c'
- break
- fi
- fi
-done
-rm -f $TMP
-
-LIST="00 30 80 d0 ff"
-
-exec </dev/tty
-old=`stty -g`
-stty raw -echo min 0 time 5
-
-$CMD $OPT "${ESC}]11;?${SUF}" > /dev/tty
-read original
-stty $old
-original=${original}${SUF}
-
-if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null
-then
- trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM
-else
- trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15
-fi
-
-while true
-do
- for R in $LIST
- do
- for G in $LIST
- do
- for B in $LIST
- do
- $CMD $OPT "${ESC}]11;rgb:$R/$G/$B${SUF}" >/dev/tty
- sleep 1
- done
- done
- done
-done
diff --git a/nx-X11/programs/xterm/vttests/fonts.sh b/nx-X11/programs/xterm/vttests/fonts.sh
deleted file mode 100644
index 5dd9e29f0..000000000
--- a/nx-X11/programs/xterm/vttests/fonts.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/fonts.sh,v 1.4 2003/05/19 00:52:30 dickey Exp $
-#
-# -- Thomas Dickey (1999/3/27)
-# Demonstrate the use of dynamic colors by setting the background successively
-# to different values.
-
-ESC=""
-CMD='echo'
-OPT='-n'
-SUF=''
-TMP=/tmp/xterm$$
-eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
-( test ! -f $TMP || test -s $TMP ) &&
-for verb in printf print ; do
- rm -f $TMP
- eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
- if test -f $TMP ; then
- if test ! -s $TMP ; then
- CMD="$verb"
- OPT=
- SUF='\c'
- break
- fi
- fi
-done
-rm -f $TMP
-
-exec </dev/tty
-old=`stty -g`
-stty raw -echo min 0 time 5
-
-$CMD $OPT "${ESC}]50;?${SUF}" > /dev/tty
-read original
-
-stty $old
-original="${original}${SUF}"
-
-if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null
-then
- trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM
-else
- trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15
-fi
-
-F=1
-D=1
-T=6
-while true
-do
- $CMD $OPT "${ESC}]50;#$F${SUF}" >/dev/tty
- #sleep 1
- if test .$D = .1 ; then
- test $F = $T && D=-1
- else
- test $F = 1 && D=1
- fi
- F=`expr $F + $D`
-done
diff --git a/nx-X11/programs/xterm/vttests/resize.pl b/nx-X11/programs/xterm/vttests/resize.pl
deleted file mode 100755
index 21a18beea..000000000
--- a/nx-X11/programs/xterm/vttests/resize.pl
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/usr/bin/perl
-# $XFree86: xc/programs/xterm/vttests/resize.pl,v 1.1 2004/03/04 02:21:58 dickey Exp $
-#
-# -- Thomas Dickey (2004/3/3)
-# resize.sh rewritten into Perl for comparison.
-# See also Term::ReadKey.
-
-use IO::Handle;
-
-sub write_tty {
- open TTY, "+</dev/tty" or die("Cannot open /dev/tty\n");
- autoflush TTY 1;
- print TTY @_;
- close TTY;
-}
-
-sub get_reply {
- open TTY, "+</dev/tty" or die("Cannot open /dev/tty\n");
- autoflush TTY 1;
- $old=`stty -g`;
- system "stty raw -echo min 0 time 5";
-
- print TTY @_;
- my $reply=<TTY>;
- close TTY;
- system "stty $old";
- return $reply;
-}
-
-sub csi_field {
- my $first = @_[0];
- my $second = @_[1];
- $first =~ s/^[^0-9]+//;
- while ( --$second > 0 ) {
- $first =~ s/^[\d]+//;
- $first =~ s/^[^\d]+//;
- }
- $first =~ s/[^\d]+.*$//;
- return $first;
-}
-
-$original=get_reply("\x1b[18t");
-if ( $original =~ /\x1b\[8;\d+;\d+t/ ) {
- $high=csi_field($original,2);
- $wide=csi_field($original,3);
- printf "parsed terminal size $high,$wide\n";
-} else {
- die "Cannot get terminal size via escape sequence\n";
-}
-#
-$maximize=get_reply("\x1b[19t");
-if ( $maximize =~ /\x1b\[9;\d+;\d+t/ ) {
- $maxhigh=csi_field($maximize,2);
- $maxwide=csi_field($maximize,3);
- $maxhigh != 0 or $maxhigh = $high * 2;
- $maxwide != 0 or $maxwide = $wide * 2;
- printf "parsed terminal maxsize $maxhigh,$maxwide\n";
-} else {
- die "Cannot get terminal size via escape sequence\n";
-}
-
-sub catch_zap {
- $zapped++;
-}
-$SIG{INT} = \&catch_zap;
-$SIG{QUIT} = \&catch_zap;
-$SIG{KILL} = \&catch_zap;
-$SIG{HUP} = \&catch_zap;
-$SIG{TERM} = \&catch_zap;
-
-$w=$wide;
-$h=$high;
-$a=1;
-$zapped=0;
-while ( $zapped == 0 )
-{
-# sleep 1
- printf "resizing to $h by $w\n";
- write_tty("\x1b[8;$h;$w" . "t");
- if ( $a == 1 ) {
- if ( $w == $maxwide ) {
- $h += $a;
- if ( $h = $maxhigh ) {
- $a = -1;
- }
- } else {
- $w += $a;
- }
- } else {
- if ( $w == $wide ) {
- $h += $a;
- if ( $h = $high ) {
- $a=1;
- }
- } else {
- $w += $a;
- }
- }
-}
-write_tty($original);
diff --git a/nx-X11/programs/xterm/vttests/resize.sh b/nx-X11/programs/xterm/vttests/resize.sh
deleted file mode 100644
index 004574949..000000000
--- a/nx-X11/programs/xterm/vttests/resize.sh
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/resize.sh,v 1.5 2003/05/19 00:52:30 dickey Exp $
-#
-# -- Thomas Dickey (1999/3/27)
-# Obtain the current screen size, then resize the terminal to the nominal
-# screen width/height, and restore the size.
-
-ESC=""
-CMD='echo'
-OPT='-n'
-SUF=''
-TMP=/tmp/xterm$$
-eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
-( test ! -f $TMP || test -s $TMP ) &&
-for verb in printf print ; do
- rm -f $TMP
- eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
- if test -f $TMP ; then
- if test ! -s $TMP ; then
- CMD="$verb"
- OPT=
- SUF='\c'
- break
- fi
- fi
-done
-rm -f $TMP
-
-exec </dev/tty
-old=`stty -g`
-stty raw -echo min 0 time 5
-
-$CMD $OPT "${ESC}[18t${SUF}" > /dev/tty
-IFS=';' read junk high wide
-
-$CMD $OPT "${ESC}[19t${SUF}" > /dev/tty
-IFS=';' read junk maxhigh maxwide
-
-stty $old
-
-wide=`echo $wide|sed -e 's/t.*//'`
-maxwide=`echo $maxwide|sed -e 's/t.*//'`
-original=${ESC}[8\;${high}\;${wide}t${SUF}
-
-test $maxwide = 0 && maxwide=`expr $wide \* 2`
-test $maxhigh = 0 && maxhigh=`expr $high \* 2`
-
-if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null
-then
- trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM
-else
- trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15
-fi
-
-w=$wide
-h=$high
-a=1
-while true
-do
-# sleep 1
- echo resizing to $h by $w
- $CMD $OPT "${ESC}[8;${h};${w}t" >/dev/tty
- if test $a = 1 ; then
- if test $w = $maxwide ; then
- h=`expr $h + $a`
- if test $h = $maxhigh ; then
- a=-1
- fi
- else
- w=`expr $w + $a`
- fi
- else
- if test $w = $wide ; then
- h=`expr $h + $a`
- if test $h = $high ; then
- a=1
- fi
- else
- w=`expr $w + $a`
- fi
- fi
-done
diff --git a/nx-X11/programs/xterm/vttests/tcapquery.pl b/nx-X11/programs/xterm/vttests/tcapquery.pl
deleted file mode 100755
index 0cd5d9f64..000000000
--- a/nx-X11/programs/xterm/vttests/tcapquery.pl
+++ /dev/null
@@ -1,162 +0,0 @@
-#!/usr/bin/perl
-# $XFree86: xc/programs/xterm/vttests/tcapquery.pl,v 1.2 2005/09/18 23:48:14 dickey Exp $
-#
-# -- Thomas Dickey (2004/3/3)
-# Test the tcap-query option of xterm.
-
-use strict;
-
-use IO::Handle;
-
-sub write_tty {
- open TTY, "+</dev/tty" or die("Cannot open /dev/tty\n");
- autoflush TTY 1;
- print TTY @_;
- close TTY;
-}
-
-sub get_reply {
- open TTY, "+</dev/tty" or die("Cannot open /dev/tty\n");
- autoflush TTY 1;
- my $old=`stty -g`;
- system "stty raw -echo min 0 time 5";
-
- print TTY @_;
- my $reply=<TTY>;
- close TTY;
- system "stty $old";
- return $reply;
-}
-
-sub csi_field {
- my $first = @_[0];
- my $second = @_[1];
- $first =~ s/^[^0-9]+//;
- while ( --$second > 0 ) {
- $first =~ s/^[\d]+//;
- $first =~ s/^[^\d]+//;
- }
- $first =~ s/[^\d]+.*$//;
- return $first;
-}
-
-sub hexified {
- my $value = @_[0];
- my $result = "";
- my $n;
-
- for ( $n = 0; $n < length($value); ++$n) {
- $result .= sprintf("%02X", ord substr($value,$n,1));
- }
- return $result;
-}
-
-sub query_tcap {
- my $tcap = @_[0];
- my $tinfo = @_[1];
- my $param1 = hexified($tcap);
- my $param2 = hexified($tinfo);
-
- # uncomment one of the following lines
- my $reply=get_reply("\x1bP+q" . $param1 . ";" . $param2 . "\x1b\\");
- #my $reply=get_reply("\x1bP+q" . $param2 . "\x1b\\");
-
- if ( $reply =~ /\x1bP1\+r[[:xdigit:]]+=[[:xdigit:]]*.*/ ) {
- my $value = $reply;
- my $n;
-
- $value =~ s/^\x1bP1\+r//;
- $value =~ s/\x1b\\//;
-
- my $result = "";
- for ( $n = 0; $n < length($value); ) {
- my $c = substr($value,$n,1);
- # handle semicolon and equals
- if ( $c =~ /[[:punct:]]/ ) {
- $n += 1;
- $result .= $c;
- } else {
- # handle hex-data
- my $k = hex substr($value,$n,2);
- if ( $k == 0x1b ) {
- $result .= "\\E";
- } elsif ( $k == 0x7f ) {
- $result .= "^?";
- } elsif ( $k == 32 ) {
- $result .= "\\s";
- } elsif ( $k < 32 ) {
- $result .= sprintf("^%c", $k + 64);
- } elsif ( $k > 128 ) {
- $result .= sprintf("\\%03o", $k);
- } else {
- $result .= chr($k);
- }
- $n += 2;
- }
- }
-
- printf "$result\n";
- }
-}
-
-# See xtermcapKeycode()
-query_tcap( "#2", "kHOM");
-query_tcap( "#4", "kLFT");
-query_tcap( "%1", "khlp");
-query_tcap( "%i", "kRIT");
-query_tcap( "*6", "kslt");
-query_tcap( "*7", "kEND");
-query_tcap( "@0", "kfnd");
-query_tcap( "@7", "kend");
-query_tcap( "F1", "kf11");
-query_tcap( "F2", "kf12");
-query_tcap( "F3", "kf13");
-query_tcap( "F4", "kf14");
-query_tcap( "F5", "kf15");
-query_tcap( "F6", "kf16");
-query_tcap( "F7", "kf17");
-query_tcap( "F8", "kf18");
-query_tcap( "F9", "kf19");
-query_tcap( "FA", "kf20");
-query_tcap( "FB", "kf21");
-query_tcap( "FC", "kf22");
-query_tcap( "FD", "kf23");
-query_tcap( "FE", "kf24");
-query_tcap( "FF", "kf25");
-query_tcap( "FG", "kf26");
-query_tcap( "FH", "kf27");
-query_tcap( "FI", "kf28");
-query_tcap( "FJ", "kf29");
-query_tcap( "FK", "kf30");
-query_tcap( "FL", "kf31");
-query_tcap( "FM", "kf32");
-query_tcap( "FN", "kf33");
-query_tcap( "FO", "kf34");
-query_tcap( "FP", "kf35");
-query_tcap( "FQ", "kf36");
-query_tcap( "FR", "kf37");
-query_tcap( "K1", "ka1");
-query_tcap( "K4", "kc1");
-query_tcap( "k1", "kf1");
-query_tcap( "k2", "kf2");
-query_tcap( "k3", "kf3");
-query_tcap( "k4", "kf4");
-query_tcap( "k5", "kf5");
-query_tcap( "k6", "kf6");
-query_tcap( "k7", "kf7");
-query_tcap( "k8", "kf8");
-query_tcap( "k9", "kf9");
-query_tcap( "k;", "kf10");
-query_tcap( "kB", "kcbt");
-query_tcap( "kC", "kclr");
-query_tcap( "kD", "kdch1");
-query_tcap( "kI", "kich1");
-query_tcap( "kN", "knp");
-query_tcap( "kP", "kpp");
-query_tcap( "kb", "kbs");
-query_tcap( "kd", "kcud1");
-query_tcap( "kh", "khome");
-query_tcap( "kl", "kcub1");
-query_tcap( "kr", "kcuf1");
-query_tcap( "ku", "kcuu1");
-query_tcap( "Co", "colors");
diff --git a/nx-X11/programs/xterm/vttests/title.sh b/nx-X11/programs/xterm/vttests/title.sh
deleted file mode 100644
index af3807783..000000000
--- a/nx-X11/programs/xterm/vttests/title.sh
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/title.sh,v 1.6 2003/05/19 00:52:30 dickey Exp $
-#
-# -- Thomas Dickey (1999/3/27)
-# Obtain the current title of the window, set up a simple clock which runs
-# until this script is interrupted, then restore the title.
-
-ESC=""
-CMD='echo'
-OPT='-n'
-SUF=''
-TMP=/tmp/xterm$$
-eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
-( test ! -f $TMP || test -s $TMP ) &&
-for verb in printf print ; do
- rm -f $TMP
- eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
- if test -f $TMP ; then
- if test ! -s $TMP ; then
- CMD="$verb"
- OPT=
- SUF='\c'
- break
- fi
- fi
-done
-rm -f $TMP
-
-exec </dev/tty
-old=`stty -g`
-stty raw -echo min 0 time 5
-
-$CMD $OPT "${ESC}[21t${SUF}" > /dev/tty
-read original
-
-stty $old
-
-# We actually get this terminated by an <esc>backslash, but the backslash
-# is lost. We may lose doublequote characters when restoring the title,
-# depending on the shell.
-original=`echo "$original" |sed -e 's/^...//' -e 's/.$//'`
-original=${ESC}]2\;"${original}"${SUF}
-
-if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null
-then
- trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM
-else
- trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15
-fi
-
-while true
-do
- sleep 1
- $CMD $OPT "${ESC}]2;`date`" >/dev/tty
-done
diff --git a/nx-X11/programs/xterm/wcwidth.c b/nx-X11/programs/xterm/wcwidth.c
deleted file mode 100644
index d74c7a870..000000000
--- a/nx-X11/programs/xterm/wcwidth.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/* $XFree86: xc/programs/xterm/wcwidth.c,v 1.7 2005/05/03 00:38:25 dickey Exp $ */
-/*
- * This is an implementation of wcwidth() and wcswidth() (defined in
- * IEEE Std 1002.1-2001) for Unicode.
- *
- * http://www.opengroup.org/onlinepubs/007904975/functions/wcwidth.html
- * http://www.opengroup.org/onlinepubs/007904975/functions/wcswidth.html
- *
- * In fixed-width output devices, Latin characters all occupy a single
- * "cell" position of equal width, whereas ideographic CJK characters
- * occupy two such cells. Interoperability between terminal-line
- * applications and (teletype-style) character terminals using the
- * UTF-8 encoding requires agreement on which character should advance
- * the cursor by how many cell positions. No established formal
- * standards exist at present on which Unicode character shall occupy
- * how many cell positions on character terminals. These routines are
- * a first attempt of defining such behavior based on simple rules
- * applied to data provided by the Unicode Consortium.
- *
- * For some graphical characters, the Unicode standard explicitly
- * defines a character-cell width via the definition of the East Asian
- * FullWidth (F), Wide (W), Half-width (H), and Narrow (Na) classes.
- * In all these cases, there is no ambiguity about which width a
- * terminal shall use. For characters in the East Asian Ambiguous (A)
- * class, the width choice depends purely on a preference of backward
- * compatibility with either historic CJK or Western practice.
- * Choosing single-width for these characters is easy to justify as
- * the appropriate long-term solution, as the CJK practice of
- * displaying these characters as double-width comes from historic
- * implementation simplicity (8-bit encoded characters were displayed
- * single-width and 16-bit ones double-width, even for Greek,
- * Cyrillic, etc.) and not any typographic considerations.
- *
- * Much less clear is the choice of width for the Not East Asian
- * (Neutral) class. Existing practice does not dictate a width for any
- * of these characters. It would nevertheless make sense
- * typographically to allocate two character cells to characters such
- * as for instance EM SPACE or VOLUME INTEGRAL, which cannot be
- * represented adequately with a single-width glyph. The following
- * routines at present merely assign a single-cell width to all
- * neutral characters, in the interest of simplicity. This is not
- * entirely satisfactory and should be reconsidered before
- * establishing a formal standard in this area. At the moment, the
- * decision which Not East Asian (Neutral) characters should be
- * represented by double-width glyphs cannot yet be answered by
- * applying a simple rule from the Unicode database content. Setting
- * up a proper standard for the behavior of UTF-8 character terminals
- * will require a careful analysis not only of each Unicode character,
- * but also of each presentation form, something the author of these
- * routines has avoided to do so far.
- *
- * http://www.unicode.org/unicode/reports/tr11/
- *
- * Markus Kuhn -- 2003-05-20 (Unicode 4.0)
- *
- * Permission to use, copy, modify, and distribute this software
- * for any purpose and without fee is hereby granted. The author
- * disclaims all warranties with regard to this software.
- *
- * Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
- */
-
-#include <wcwidth.h>
-
-struct interval {
- int first;
- int last;
-};
-
-/* auxiliary function for binary search in interval table */
-static int bisearch(wchar_t ucs, const struct interval *table, int max) {
- int min = 0;
- int mid;
-
- if (ucs < table[0].first || ucs > table[max].last)
- return 0;
- while (max >= min) {
- mid = (min + max) / 2;
- if (ucs > table[mid].last)
- min = mid + 1;
- else if (ucs < table[mid].first)
- max = mid - 1;
- else
- return 1;
- }
-
- return 0;
-}
-
-
-/* The following two functions define the column width of an ISO 10646
- * character as follows:
- *
- * - The null character (U+0000) has a column width of 0.
- *
- * - Other C0/C1 control characters and DEL will lead to a return
- * value of -1.
- *
- * - Non-spacing and enclosing combining characters (general
- * category code Mn or Me in the Unicode database) have a
- * column width of 0.
- *
- * - SOFT HYPHEN (U+00AD) has a column width of 1.
- *
- * - Other format characters (general category code Cf in the Unicode
- * database) and ZERO WIDTH SPACE (U+200B) have a column width of 0.
- *
- * - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF)
- * have a column width of 0.
- *
- * - Spacing characters in the East Asian Wide (W) or East Asian
- * Full-width (F) category as defined in Unicode Technical
- * Report #11 have a column width of 2.
- *
- * - All remaining characters (including all printable
- * ISO 8859-1 and WGL4 characters, Unicode control characters,
- * etc.) have a column width of 1.
- *
- * This implementation assumes that wchar_t characters are encoded
- * in ISO 10646.
- */
-
-int mk_wcwidth(wchar_t ucs)
-{
- /* sorted list of non-overlapping intervals of non-spacing characters */
- /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */
- static const struct interval combining[] = {
- { 0x0300, 0x036F }, { 0x0483, 0x0486 }, { 0x0488, 0x0489 },
- { 0x0591, 0x05B9 }, { 0x05BB, 0x05BD }, { 0x05BF, 0x05BF },
- { 0x05C1, 0x05C2 }, { 0x05C4, 0x05C5 }, { 0x05C7, 0x05C7 },
- { 0x0600, 0x0603 }, { 0x0610, 0x0615 }, { 0x064B, 0x065E },
- { 0x0670, 0x0670 }, { 0x06D6, 0x06E4 }, { 0x06E7, 0x06E8 },
- { 0x06EA, 0x06ED }, { 0x070F, 0x070F }, { 0x0711, 0x0711 },
- { 0x0730, 0x074A }, { 0x07A6, 0x07B0 }, { 0x0901, 0x0902 },
- { 0x093C, 0x093C }, { 0x0941, 0x0948 }, { 0x094D, 0x094D },
- { 0x0951, 0x0954 }, { 0x0962, 0x0963 }, { 0x0981, 0x0981 },
- { 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 }, { 0x09CD, 0x09CD },
- { 0x09E2, 0x09E3 }, { 0x0A01, 0x0A02 }, { 0x0A3C, 0x0A3C },
- { 0x0A41, 0x0A42 }, { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D },
- { 0x0A70, 0x0A71 }, { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC },
- { 0x0AC1, 0x0AC5 }, { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD },
- { 0x0AE2, 0x0AE3 }, { 0x0B01, 0x0B01 }, { 0x0B3C, 0x0B3C },
- { 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B43 }, { 0x0B4D, 0x0B4D },
- { 0x0B56, 0x0B56 }, { 0x0B82, 0x0B82 }, { 0x0BC0, 0x0BC0 },
- { 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 }, { 0x0C46, 0x0C48 },
- { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, { 0x0CBC, 0x0CBC },
- { 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD },
- { 0x0D41, 0x0D43 }, { 0x0D4D, 0x0D4D }, { 0x0DCA, 0x0DCA },
- { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 }, { 0x0E31, 0x0E31 },
- { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E }, { 0x0EB1, 0x0EB1 },
- { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC }, { 0x0EC8, 0x0ECD },
- { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, { 0x0F37, 0x0F37 },
- { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E }, { 0x0F80, 0x0F84 },
- { 0x0F86, 0x0F87 }, { 0x0F90, 0x0F97 }, { 0x0F99, 0x0FBC },
- { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 }, { 0x1032, 0x1032 },
- { 0x1036, 0x1037 }, { 0x1039, 0x1039 }, { 0x1058, 0x1059 },
- { 0x1160, 0x11FF }, { 0x135F, 0x135F }, { 0x1712, 0x1714 },
- { 0x1732, 0x1734 }, { 0x1752, 0x1753 }, { 0x1772, 0x1773 },
- { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD }, { 0x17C6, 0x17C6 },
- { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD }, { 0x180B, 0x180D },
- { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 }, { 0x1927, 0x1928 },
- { 0x1932, 0x1932 }, { 0x1939, 0x193B }, { 0x1A17, 0x1A18 },
- { 0x1DC0, 0x1DC3 }, { 0x200B, 0x200F }, { 0x202A, 0x202E },
- { 0x2060, 0x2063 }, { 0x206A, 0x206F }, { 0x20D0, 0x20EB },
- { 0x302A, 0x302F }, { 0x3099, 0x309A }, { 0xA806, 0xA806 },
- { 0xA80B, 0xA80B }, { 0xA825, 0xA826 }, { 0xFB1E, 0xFB1E },
- { 0xFE00, 0xFE0F }, { 0xFE20, 0xFE23 }, { 0xFEFF, 0xFEFF },
- { 0xFFF9, 0xFFFB }, { 0x10A01, 0x10A03 }, { 0x10A05, 0x10A06 },
- { 0x10A0C, 0x10A0F }, { 0x10A38, 0x10A3A }, { 0x10A3F, 0x10A3F },
- { 0x1D167, 0x1D169 }, { 0x1D173, 0x1D182 }, { 0x1D185, 0x1D18B },
- { 0x1D1AA, 0x1D1AD }, { 0x1D242, 0x1D244 }, { 0xE0001, 0xE0001 },
- { 0xE0020, 0xE007F }, { 0xE0100, 0xE01EF }
- };
-
- /* test for 8-bit control characters */
- if (ucs == 0)
- return 0;
- if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0))
- return -1;
-
- /* binary search in table of non-spacing characters */
- if (bisearch(ucs, combining,
- sizeof(combining) / sizeof(struct interval) - 1))
- return 0;
-
- /* if we arrive here, ucs is not a combining or C0/C1 control character */
-
- return 1 +
- (ucs >= 0x1100 &&
- (ucs <= 0x115f || /* Hangul Jamo init. consonants */
- ucs == 0x2329 || ucs == 0x232a ||
- (ucs >= 0x2e80 && ucs <= 0xa4cf &&
- ucs != 0x303f) || /* CJK ... Yi */
- (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */
- (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */
- (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */
- (ucs >= 0xff00 && ucs <= 0xff60) || /* Fullwidth Forms */
- (ucs >= 0xffe0 && ucs <= 0xffe6) ||
- (ucs >= 0x20000 && ucs <= 0x2fffd) ||
- (ucs >= 0x30000 && ucs <= 0x3fffd)));
-}
-
-
-int mk_wcswidth(const wchar_t *pwcs, size_t n)
-{
- int w, width = 0;
-
- for (;*pwcs && n-- > 0; pwcs++)
- if ((w = mk_wcwidth(*pwcs)) < 0)
- return -1;
- else
- width += w;
-
- return width;
-}
-
-
-/*
- * The following functions are the same as mk_wcwidth() and
- * mk_wcwidth_cjk(), except that spacing characters in the East Asian
- * Ambiguous (A) category as defined in Unicode Technical Report #11
- * have a column width of 2. This variant might be useful for users of
- * CJK legacy encodings who want to migrate to UCS without changing
- * the traditional terminal character-width behaviour. It is not
- * otherwise recommended for general use.
- */
-int mk_wcwidth_cjk(wchar_t ucs)
-{
- /* sorted list of non-overlapping intervals of East Asian Ambiguous
- * characters, generated by "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */
- static const struct interval ambiguous[] = {
- { 0x00A1, 0x00A1 }, { 0x00A4, 0x00A4 }, { 0x00A7, 0x00A8 },
- { 0x00AA, 0x00AA }, { 0x00AE, 0x00AE }, { 0x00B0, 0x00B4 },
- { 0x00B6, 0x00BA }, { 0x00BC, 0x00BF }, { 0x00C6, 0x00C6 },
- { 0x00D0, 0x00D0 }, { 0x00D7, 0x00D8 }, { 0x00DE, 0x00E1 },
- { 0x00E6, 0x00E6 }, { 0x00E8, 0x00EA }, { 0x00EC, 0x00ED },
- { 0x00F0, 0x00F0 }, { 0x00F2, 0x00F3 }, { 0x00F7, 0x00FA },
- { 0x00FC, 0x00FC }, { 0x00FE, 0x00FE }, { 0x0101, 0x0101 },
- { 0x0111, 0x0111 }, { 0x0113, 0x0113 }, { 0x011B, 0x011B },
- { 0x0126, 0x0127 }, { 0x012B, 0x012B }, { 0x0131, 0x0133 },
- { 0x0138, 0x0138 }, { 0x013F, 0x0142 }, { 0x0144, 0x0144 },
- { 0x0148, 0x014B }, { 0x014D, 0x014D }, { 0x0152, 0x0153 },
- { 0x0166, 0x0167 }, { 0x016B, 0x016B }, { 0x01CE, 0x01CE },
- { 0x01D0, 0x01D0 }, { 0x01D2, 0x01D2 }, { 0x01D4, 0x01D4 },
- { 0x01D6, 0x01D6 }, { 0x01D8, 0x01D8 }, { 0x01DA, 0x01DA },
- { 0x01DC, 0x01DC }, { 0x0251, 0x0251 }, { 0x0261, 0x0261 },
- { 0x02C4, 0x02C4 }, { 0x02C7, 0x02C7 }, { 0x02C9, 0x02CB },
- { 0x02CD, 0x02CD }, { 0x02D0, 0x02D0 }, { 0x02D8, 0x02DB },
- { 0x02DD, 0x02DD }, { 0x02DF, 0x02DF }, { 0x0391, 0x03A1 },
- { 0x03A3, 0x03A9 }, { 0x03B1, 0x03C1 }, { 0x03C3, 0x03C9 },
- { 0x0401, 0x0401 }, { 0x0410, 0x044F }, { 0x0451, 0x0451 },
- { 0x2010, 0x2010 }, { 0x2013, 0x2016 }, { 0x2018, 0x2019 },
- { 0x201C, 0x201D }, { 0x2020, 0x2022 }, { 0x2024, 0x2027 },
- { 0x2030, 0x2030 }, { 0x2032, 0x2033 }, { 0x2035, 0x2035 },
- { 0x203B, 0x203B }, { 0x203E, 0x203E }, { 0x2074, 0x2074 },
- { 0x207F, 0x207F }, { 0x2081, 0x2084 }, { 0x20AC, 0x20AC },
- { 0x2103, 0x2103 }, { 0x2105, 0x2105 }, { 0x2109, 0x2109 },
- { 0x2113, 0x2113 }, { 0x2116, 0x2116 }, { 0x2121, 0x2122 },
- { 0x2126, 0x2126 }, { 0x212B, 0x212B }, { 0x2153, 0x2154 },
- { 0x215B, 0x215E }, { 0x2160, 0x216B }, { 0x2170, 0x2179 },
- { 0x2190, 0x2199 }, { 0x21B8, 0x21B9 }, { 0x21D2, 0x21D2 },
- { 0x21D4, 0x21D4 }, { 0x21E7, 0x21E7 }, { 0x2200, 0x2200 },
- { 0x2202, 0x2203 }, { 0x2207, 0x2208 }, { 0x220B, 0x220B },
- { 0x220F, 0x220F }, { 0x2211, 0x2211 }, { 0x2215, 0x2215 },
- { 0x221A, 0x221A }, { 0x221D, 0x2220 }, { 0x2223, 0x2223 },
- { 0x2225, 0x2225 }, { 0x2227, 0x222C }, { 0x222E, 0x222E },
- { 0x2234, 0x2237 }, { 0x223C, 0x223D }, { 0x2248, 0x2248 },
- { 0x224C, 0x224C }, { 0x2252, 0x2252 }, { 0x2260, 0x2261 },
- { 0x2264, 0x2267 }, { 0x226A, 0x226B }, { 0x226E, 0x226F },
- { 0x2282, 0x2283 }, { 0x2286, 0x2287 }, { 0x2295, 0x2295 },
- { 0x2299, 0x2299 }, { 0x22A5, 0x22A5 }, { 0x22BF, 0x22BF },
- { 0x2312, 0x2312 }, { 0x2460, 0x24E9 }, { 0x24EB, 0x254B },
- { 0x2550, 0x2573 }, { 0x2580, 0x258F }, { 0x2592, 0x2595 },
- { 0x25A0, 0x25A1 }, { 0x25A3, 0x25A9 }, { 0x25B2, 0x25B3 },
- { 0x25B6, 0x25B7 }, { 0x25BC, 0x25BD }, { 0x25C0, 0x25C1 },
- { 0x25C6, 0x25C8 }, { 0x25CB, 0x25CB }, { 0x25CE, 0x25D1 },
- { 0x25E2, 0x25E5 }, { 0x25EF, 0x25EF }, { 0x2605, 0x2606 },
- { 0x2609, 0x2609 }, { 0x260E, 0x260F }, { 0x2614, 0x2615 },
- { 0x261C, 0x261C }, { 0x261E, 0x261E }, { 0x2640, 0x2640 },
- { 0x2642, 0x2642 }, { 0x2660, 0x2661 }, { 0x2663, 0x2665 },
- { 0x2667, 0x266A }, { 0x266C, 0x266D }, { 0x266F, 0x266F },
- { 0x273D, 0x273D }, { 0x2776, 0x277F }, { 0xE000, 0xF8FF },
- { 0xFFFD, 0xFFFD }, { 0xF0000, 0xFFFFD }, { 0x100000, 0x10FFFD }
- };
-
- /* binary search in table of non-spacing characters */
- if (bisearch(ucs, ambiguous,
- sizeof(ambiguous) / sizeof(struct interval) - 1))
- return 2;
-
- return mk_wcwidth(ucs);
-}
-
-
-int mk_wcswidth_cjk(const wchar_t *pwcs, size_t n)
-{
- int w, width = 0;
-
- for (;*pwcs && n-- > 0; pwcs++)
- if ((w = mk_wcwidth_cjk(*pwcs)) < 0)
- return -1;
- else
- width += w;
-
- return width;
-}
diff --git a/nx-X11/programs/xterm/wcwidth.h b/nx-X11/programs/xterm/wcwidth.h
deleted file mode 100644
index b4eb51af4..000000000
--- a/nx-X11/programs/xterm/wcwidth.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* $XFree86: xc/programs/xterm/wcwidth.h,v 1.5 2005/05/03 00:38:25 dickey Exp $ */
-
-#ifndef included_wcwidth_h
-#define included_wcwidth_h 1
-
-#include <stddef.h>
-
-extern int mk_wcswidth(const wchar_t * pwcs, size_t n);
-extern int mk_wcswidth_cjk(const wchar_t * pwcs, size_t n);
-extern int mk_wcwidth(wchar_t ucs);
-extern int mk_wcwidth_cjk(wchar_t ucs);
-extern int wcswidth_cjk(const wchar_t * pwcs, size_t n);
-
-#endif /* included_wcwidth_h */
diff --git a/nx-X11/programs/xterm/xcharmouse.h b/nx-X11/programs/xterm/xcharmouse.h
deleted file mode 100644
index c1f257e96..000000000
--- a/nx-X11/programs/xterm/xcharmouse.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $XFree86: xc/programs/xterm/xcharmouse.h,v 1.3 2002/08/24 18:54:39 dickey Exp $
- */
-
-/************************************************************
-
-Copyright 1998 by Jason Bacon <acadix@execpc.com>
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of the above listed
-copyright holder(s) not be used in advertising or publicity pertaining
-to distribution of the software without specific, written prior
-permission.
-
-THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
-LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifndef included_xcharmouse_h
-#define included_xcharmouse_h
-
-/*
- * Macros for dpmodes
- * J. Bacon, acadix@execpc.com, June 1998
- * Steve Wall, September 1999
- * Ilya Zakharevich, August 2002
- */
-
-/* DECSET arguments for turning on mouse reporting modes */
-#define SET_X10_MOUSE 9
-#define SET_VT200_MOUSE 1000
-#define SET_VT200_HIGHLIGHT_MOUSE 1001
-#define SET_BTN_EVENT_MOUSE 1002
-#define SET_ANY_EVENT_MOUSE 1003
-
-#define SET_BUTTON1_MOVE_POINT 2001 /* click1 emit Esc seq to move point*/
-#define SET_BUTTON2_MOVE_POINT 2002 /* press2 emit Esc seq to move point*/
-#define SET_DBUTTON3_DELETE 2003 /* Double click-3 deletes */
-#define SET_PASTE_IN_BRACKET 2004 /* Surround paste by escapes */
-#define SET_PASTE_QUOTE 2005 /* Quote each char during paste */
-#define SET_PASTE_LITERAL_NL 2006 /* Paste "\n" as C-j */
-
-#if OPT_DEC_LOCATOR
-
-/* Bit fields for screen->locator_events */
-#define LOC_BTNS_DN 0x1
-#define LOC_BTNS_UP 0x2
-
-/* Special values for screen->loc_filter_* */
-#define LOC_FILTER_POS -1
-
-#endif /* OPT_DEC_LOCATOR */
-
-/* Values for screen->send_mouse_pos */
-enum {
- MOUSE_OFF
- ,X10_MOUSE
- ,VT200_MOUSE
- ,VT200_HIGHLIGHT_MOUSE
- ,BTN_EVENT_MOUSE
- ,ANY_EVENT_MOUSE
- ,DEC_LOCATOR
-};
-
-#endif /* included_xcharmouse_h */
diff --git a/nx-X11/programs/xterm/xstrings.c b/nx-X11/programs/xterm/xstrings.c
deleted file mode 100644
index 1bc2d522e..000000000
--- a/nx-X11/programs/xterm/xstrings.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/* $XTermId: xstrings.c,v 1.22 2005/01/14 01:50:03 tom Exp $ */
-
-/* $XFree86: xc/programs/xterm/xstrings.c,v 1.9 2005/01/14 01:50:03 dickey Exp $ */
-
-/************************************************************
-
-Copyright 2000-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-********************************************************/
-
-#include <xterm.h>
-
-#include <sys/types.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <xstrings.h>
-
-char *
-x_basename(char *name)
-{
- char *cp;
-
- cp = strrchr(name, '/');
-#ifdef __UNIXOS2__
- if (cp == 0)
- cp = strrchr(name, '\\');
-#endif
- return (cp ? cp + 1 : name);
-}
-
-int
-x_strcasecmp(const char *s1, const char *s2)
-{
- unsigned len = strlen(s1);
-
- if (len != strlen(s2))
- return 1;
-
- while (len-- != 0) {
- int c1 = toupper(CharOf(*s1));
- int c2 = toupper(CharOf(*s2));
- if (c1 != c2)
- return 1;
- s1++, s2++;
- }
-
- return 0;
-}
-
-/*
- * Allocates a copy of a string
- */
-char *
-x_strdup(const char *s)
-{
- char *result = 0;
-
- if (s != 0) {
- char *t = CastMallocN(char, strlen(s));
- if (t != 0) {
- strcpy(t, s);
- }
- result = t;
- }
- return result;
-}
-
-/*
- * Returns a pointer to the first occurrence of s2 in s1,
- * or NULL if there are none.
- */
-char *
-x_strindex(char *s1, char *s2)
-{
- char *s3;
- size_t s2len = strlen(s2);
-
- while ((s3 = strchr(s1, *s2)) != NULL) {
- if (strncmp(s3, s2, s2len) == 0)
- return (s3);
- s1 = ++s3;
- }
- return (NULL);
-}
-
-/*
- * Trims leading/trailing spaces from the string, returns a copy of it if it
- * is modified.
- */
-char *
-x_strtrim(char *s)
-{
- char *base = s;
- char *d;
-
- if (s != 0 && *s != '\0') {
- char *t = x_strdup(base);
- s = t;
- d = s;
- while (isspace(CharOf(*s))) {
- ++s;
- }
- while ((*d++ = *s++) != '\0') {
- ;
- }
- if (*t != '\0') {
- s = t + strlen(t);
- while (s != t && isspace(CharOf(s[-1]))) {
- *--s = '\0';
- }
- }
- if (!strcmp(t, base)) {
- free(t);
- } else {
- base = t;
- }
- }
- return base;
-}
diff --git a/nx-X11/programs/xterm/xstrings.h b/nx-X11/programs/xterm/xstrings.h
deleted file mode 100644
index fb7886e25..000000000
--- a/nx-X11/programs/xterm/xstrings.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* $XFree86: xc/programs/xterm/xstrings.h,v 1.4 2002/08/17 19:52:27 dickey Exp $ */
-
-/************************************************************
-
-Copyright 2000-2001,2002 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-********************************************************/
-
-#ifndef included_xstrings_h
-#define included_xstrings_h 1
-
-extern char *x_basename(char *name);
-extern char *x_strdup(const char *s);
-extern char *x_strindex(char *s1, char *s2);
-extern char *x_strtrim(char *s);
-extern int x_strcasecmp(const char *s1, const char *s2);
-
-#endif /* included_xstrings_h */
diff --git a/nx-X11/programs/xterm/xterm.dat b/nx-X11/programs/xterm/xterm.dat
deleted file mode 100644
index 6ae28ca42..000000000
--- a/nx-X11/programs/xterm/xterm.dat
+++ /dev/null
@@ -1,160 +0,0 @@
-! $XFree86: xc/programs/xterm/xterm.dat,v 1.5 2005/07/07 00:46:14 dickey Exp $
-!
-*title: Xterm
-*iconName: Xterm
-*c132: TRUE
-*scrollBar: on
-*saveLines: 1000
-
-! This is nonsense: if the xterm has no session management capabilities,
-! it is useless, and if it does, it is harmful.
-!XTerm.JoinSession:False
-
-! turn off NumLock support - there is some conflict or problem on VMS
-*numLock: false
-
-*SimpleMenu*BackingStore: NotUseful
-*SimpleMenu*menuLabel.font: -adobe-helvetica-bold-r-normal--*-120-*-*-*-*-iso*-*
-*SimpleMenu*menuLabel.vertSpace: 100
-*SimpleMenu*HorizontalMargins: 16
-*SimpleMenu*Sme.height: 16
-*SimpleMenu*Cursor: left_ptr
-
-*mainMenu.Label: Main Options
-*mainMenu*securekbd*Label: Secure Keyboard
-*mainMenu*allowsends*Label: Allow SendEvents
-*mainMenu*logging*Label: Log to File
-*mainMenu*print*Label: Print Window
-*mainMenu*redraw*Label: Redraw Window
-*mainMenu*8-bit control*Label: 8-Bit Controls
-*mainMenu*backarrow key*Label: Backarrow Key
-*mainMenu*num-lock*Label: Alt/NumLock Modifiers
-*mainMenu*meta-esc*Label: Meta Sends Escape
-*mainMenu*sunFunction-keys*Label: Sun Function-Keys
-*mainMenu*sunKeyboard*Label: VT220 Keyboard
-*mainMenu*hp function-keys*Label: HP Function-Keys
-*mainMenu*suspend*Label: Send STOP Signal
-*mainMenu*suspend*Sensitive: FALSE
-*mainMenu*continue*Label: Send CONT Signal
-*mainMenu*continue*Sensitive: FALSE
-*mainMenu*interrupt*Label: Send INT Signal
-*mainMenu*interrupt*Sensitive: FALSE
-*mainMenu*hangup*Label: Send HUP Signal
-*mainMenu*hangup*Sensitive: FALSE
-*mainMenu*terminate*Label: Send TERM Signal
-*mainMenu*terminate*Sensitive: FALSE
-*mainMenu*kill*Label: Send KILL Signal
-*mainMenu*kill*Sensitive: FALSE
-*mainMenu*quit*Label: Quit
-
-*vtMenu.Label: VT Options
-*vtMenu*scrollbar*Label: Enable Scrollbar
-*vtMenu*jumpscroll*Label: Enable Jump Scroll
-*vtMenu*reversevideo*Label: Enable Reverse Video
-*vtMenu*autowrap*Label: Enable Auto Wraparound
-*vtMenu*reversewrap*Label: Enable Reverse Wraparound
-*vtMenu*autolinefeed*Label: Enable Auto Linefeed
-*vtMenu*appcursor*Label: Enable Application Cursor Keys
-*vtMenu*appkeypad*Label: Enable Application Keypad
-*vtMenu*scrollkey*Label: Scroll to Bottom on Key Press
-*vtMenu*scrollttyoutput*Label: Scroll to Bottom on Tty Output
-*vtMenu*allow132*Label: Allow 80/132 Column Switching
-*vtMenu*cursesemul*Label: Enable Curses Emulation
-*vtMenu*visualbell*Label: Enable Visual Bell
-*vtMenu*poponbell*Label: Enable Pop on Bell
-*vtMenu*marginbell*Label: Enable Margin Bell
-*vtMenu*cursorblink*Label: Enable Blinking Cursor
-*vtMenu*titeInhibit*Label: Enable Alternate Screen Switching
-*vtMenu*activeicon*Label: Enable Active Icon
-*vtMenu*softreset*Label: Do Soft Reset
-*vtMenu*hardreset*Label: Do Full Reset
-*vtMenu*clearsavedlines*Label: Reset and Clear Saved Lines
-*vtMenu*tekshow*Label: Show Tek Window
-*vtMenu*tekmode*Label: Switch to Tek Mode
-*vtMenu*vthide*Label: Hide VT Window
-*vtMenu*altscreen*Label: Show Alternate Screen
-
-*fontMenu.Label: VT Fonts
-*fontMenu*fontdefault*Label: Default
-*VT100*font: -bitstream-terminal-medium-r-normal-gs-18-180-75-75-c-110-iso8859-1
-*fontMenu*font1*Label: Tiny
-*VT100*font1: -misc-fixed-medium-r-normal--8-60-*-*-c-50-iso8859-1
-*fontMenu*font2*Label: Small
-*VT100*font2: -misc-fixed-medium-r-normal--10-70-*-*-c-60-iso8859-1
-*fontMenu*font3*Label: Medium
-*VT100*font3: -misc-fixed-medium-r-normal--13-120-*-*-c-70-iso8859-1
-*fontMenu*font4*Label: Large
-*VT100*font4: -bitstream-terminal-medium-r-normal-gs-18-180-75-75-c-110-iso8859-1
-*fontMenu*font5*Label: Huge
-*VT100*font5: -bitstream-terminal-medium-r-normal-gs-36-280-100-100-c-220-iso8859-1
-*fontMenu*font6*Label: Large-Narrow
-*VT100*font6: -bitstream-terminal-medium-r-narrow--18-180-75-75-c-70-iso8859-1
-*fontMenu*fontescape*Label: Escape Sequence
-*fontMenu*fontsel*Label: Selection
-!fontescape and fontsel overridden by application
-*fontMenu*font-doublesize*Label: Doublesized Characters
-*fontMenu*font-loadable*Label: VT220 Soft Fonts
-
-*tekMenu.Label: Tek Options
-*tekMenu*tektextlarge*Label: Large Characters
-*tekMenu*tektext2*Label: #2 Size Characters
-*tekMenu*tektext3*Label: #3 Size Characters
-*tekMenu*tektextsmall*Label: Small Characters
-*tekMenu*tekpage*Label: PAGE
-*tekMenu*tekreset*Label: RESET
-*tekMenu*tekcopy*Label: COPY
-*tekMenu*vtshow*Label: Show VT Window
-*tekMenu*vtmode*Label: Switch to VT Mode
-*tekMenu*tekhide*Label: Hide Tek Window
-
-*tek4014*fontLarge: -misc-fixed-medium-r-normal--15-140-*-*-c-90-iso8859-1
-*tek4014*font2: -misc-fixed-medium-r-normal--13-120-*-*-c-70-iso8859-1
-*tek4014*font3: -misc-fixed-medium-r-normal--10-100-*-*-c-60-iso8859-1
-*tek4014*fontSmall: -misc-fixed-medium-r-normal--8-80-*-*-c-50-iso8859-1
-
-! Enable Colour by default.
-
-*VT100*colorMode: on
-*VT100*boldColors: on
-*VT100*dynamicColors: on
-
-*VT100*highlightColor: red
-*VT100*cursorColor: white
-!bold text color
-*VT100*colorBDMode: on
-*VT100*colorBD: green
-!blinking text color
-*VT100*colorBLMode: on
-*VT100*colorBL: red
-
-
-! Uncomment this use color for underline attribute
-!*VT100*colorULMode: on
-!*VT100*italicULMode: on
-!*VT100*underLine: off
-
-! Uncomment this to use color for the bold attribute
-*VT100*colorBDMode: on
-
-! Uncomment this to use the bold/underline colors in preference to other colors
-*VT100*colorAttrMode: on
-
-*VT100*color0: black
-*VT100*color1: red3
-*VT100*color2: green3
-*VT100*color3: yellow3
-*VT100*color4: blue3
-*VT100*color5: magenta3
-*VT100*color6: cyan3
-*VT100*color7: gray90
-*VT100*color8: gray30
-*VT100*color9: red
-*VT100*color10: green
-*VT100*color11: yellow
-*VT100*color12: blue
-*VT100*color13: magenta
-*VT100*color14: cyan
-*VT100*color15: white
-*VT100*colorUL: yellow
-*VT100*colorBD: white
-
diff --git a/nx-X11/programs/xterm/xterm.h b/nx-X11/programs/xterm/xterm.h
deleted file mode 100644
index 1e4ff56ab..000000000
--- a/nx-X11/programs/xterm/xterm.h
+++ /dev/null
@@ -1,1101 +0,0 @@
-/* $XTermId: xterm.h,v 1.357 2005/11/03 13:17:28 tom Exp $ */
-
-/* $XFree86: xc/programs/xterm/xterm.h,v 3.109 2005/11/03 13:17:28 dickey Exp $ */
-
-/************************************************************
-
-Copyright 1999-2004,2005 by Thomas E. Dickey
-
- 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-********************************************************/
-
-/*
- * Common/useful definitions for XTERM application.
- *
- * This is also where we put the fallback definitions if we do not build using
- * the configure script.
- */
-#ifndef included_xterm_h
-#define included_xterm_h
-
-#ifdef HAVE_CONFIG_H
-#include <xtermcfg.h>
-#endif
-
-#ifndef GCC_UNUSED
-#define GCC_UNUSED /* nothing */
-#endif
-
-#ifndef GCC_NORETURN
-#define GCC_NORETURN /* nothing */
-#endif
-
-#include <X11/Xos.h>
-
-#ifndef HAVE_CONFIG_H
-
-#define HAVE_LIB_XAW 1
-
-#ifdef CSRG_BASED
-/* Get definition of BSD */
-#include <sys/param.h>
-#endif
-
-#ifndef HAVE_X11_DECKEYSYM_H
-#define HAVE_X11_DECKEYSYM_H 1
-#endif
-
-#ifndef HAVE_X11_SUNKEYSYM_H
-#define HAVE_X11_SUNKEYSYM_H 1
-#endif
-
-#ifndef DFT_TERMTYPE
-#define DFT_TERMTYPE "xterm"
-#endif
-
-#ifndef X_NOT_POSIX
-#define HAVE_WAITPID 1
-#define HAVE_SYS_WAIT_H 1
-#define HAVE_UNISTD_H 1
-#endif
-
-#define HAVE_STDLIB_H 1
-#define DECL_ERRNO 1
-
-#ifndef NOPUTENV
-#define HAVE_PUTENV 1
-#endif
-
-#if defined(CSRG_BASED) || defined(__GNU__)
-#define USE_POSIX_TERMIOS 1
-#endif
-
-#ifdef __NetBSD__
-#include <sys/param.h>
-#if __NetBSD_Version__ >= 106030000 /* 1.6C */
-#define BSD_UTMPX 1
-#define ut_xtime ut_tv.tv_sec
-#endif
-#endif
-
-#if defined(hpux) && !defined(__hpux)
-#define __hpux 1 /* HPUX 11.0 does not define this */
-#endif
-
-#if !defined(__SCO__) && (defined(SCO) || defined(sco) || defined(SCO325))
-#define __SCO__ 1
-#endif
-
-#ifdef USE_POSIX_TERMIOS
-#define HAVE_TERMIOS_H 1
-#define HAVE_TCGETATTR 1
-#endif
-
-#if defined(__UNIXOS2__) || defined(__SCO__) || defined(__UNIXWARE__)
-#define USE_TERMCAP 1
-#endif
-
-#if defined(UTMP)
-#define HAVE_UTMP 1
-#endif
-
-#if (defined(__MVS__) || defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX)) && !defined(__CYGWIN__)
-#define UTMPX_FOR_UTMP 1
-#endif
-
-#if !defined(ISC) && !defined(__QNX__)
-#define HAVE_UTMP_UT_HOST 1
-#endif
-
-#if defined(UTMPX_FOR_UTMP) && !(defined(__MVS__) || defined(__hpux))
-#define HAVE_UTMP_UT_SESSION 1
-#endif
-
-#if !(defined(linux) && (!defined(__GLIBC__) || (__GLIBC__ < 2))) && !defined(SVR4)
-#define ut_xstatus ut_exit.e_exit
-#endif
-
-#if defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0)))
-#define HAVE_UTMP_UT_XTIME 1
-#endif
-
-#if defined(linux) || defined(__CYGWIN__)
-#define USE_LASTLOG
-#define HAVE_LASTLOG_H
-#elif defined(BSD) && (BSD >= 199103)
-#ifdef BSD_UTMPX
-#define USE_LASTLOGX
-#else
-#define USE_LASTLOG
-#endif
-#endif
-
-#if defined(__OpenBSD__)
-#define DEFDELETE_DEL TRUE
-#define DEF_BACKARO_ERASE TRUE
-#define DEF_INITIAL_ERASE TRUE
-#endif
-
-#if defined(__SCO__) || defined(__UNIXWARE__)
-#define DEFDELETE_DEL TRUE
-#define OPT_SCO_FUNC_KEYS 1
-#endif
-
-#if defined(__SCO__) || defined(SVR4) || defined(_POSIX_SOURCE) || defined(__QNX__) || defined(__hpux) || (defined(BSD) && (BSD >= 199103)) || defined(__CYGWIN__)
-#define USE_POSIX_WAIT
-#endif
-
-#if defined(AIXV3) || defined(CRAY) || defined(__SCO__) || defined(SVR4) || (defined(SYSV) && defined(i386)) || defined(__MVS__) || defined(__hpux) || defined(__osf__) || defined(linux) || defined(macII) || defined(BSD_UTMPX)
-#define USE_SYSV_UTMP
-#endif
-
-#if defined(__GNU__) || defined(__MVS__) || defined(__osf__)
-#define USE_TTY_GROUP
-#endif
-
-#if defined(__CYGWIN__)
-#define HAVE_NCURSES_TERM_H 1
-#endif
-
-#ifdef __osf__
-#define TTY_GROUP_NAME "terminal"
-#endif
-
-#if defined(__MVS__)
-#undef ut_xstatus
-#define ut_name ut_user
-#define ut_xstatus ut_exit.ut_e_exit
-#define ut_xtime ut_tv.tv_sec
-#endif
-
-#if defined(ut_xstatus)
-#define HAVE_UTMP_UT_XSTATUS 1
-#endif
-
-#if defined(XKB)
-#define HAVE_XKBBELL 1
-#endif
-
-#endif /* HAVE_CONFIG_H */
-
-/***====================================================================***/
-
-/* if compiling with gcc -ansi -pedantic, we must fix POSIX definitions */
-#if defined(SVR4) && defined(sun)
-#ifndef __EXTENSIONS__
-#define __EXTENSIONS__ 1
-#endif
-#ifndef _POSIX_C_SOURCE
-#define _POSIX_C_SOURCE 1
-#endif
-#endif
-
-/***====================================================================***/
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#else
-extern char *calloc();
-extern char *getenv();
-extern char *malloc();
-extern char *realloc();
-extern void exit();
-extern void free();
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-
-#include <errno.h>
-#if defined(DECL_ERRNO) && !defined(errno)
-extern int errno;
-#endif
-
-/*
- * FIXME: Toggling logging from xterm hangs under Linux 2.0.29 with libc5 if
- * we use 'waitpid()', while 'wait()' seems to work properly.
- */
-#ifdef linux
-#undef HAVE_WAITPID
-#endif
-
-#ifndef OPT_WIDE_CHARS
-#define OPT_WIDE_CHARS 0
-#endif
-
-#if OPT_WIDE_CHARS
-#define HIDDEN_HI 0xff
-#define HIDDEN_LO 0xff
-#define HIDDEN_CHAR 0xffff
-#endif
-
-/***====================================================================***/
-
-#include <proto.h>
-#include <ptyx.h>
-
-#if (XtSpecificationRelease >= 6) && !defined(NO_XPOLL_H) && !defined(sun)
-#include <X11/Xpoll.h>
-#define USE_XPOLL_H 1
-#else
-#define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval *)t)
-#define XFD_COPYSET(src,dst) memcpy((dst)->fds_bits, (src)->fds_bits, sizeof(fd_set))
-#if defined(__MVS__) && !defined(TIME_WITH_SYS_TIME)
-#define TIME_WITH_SYS_TIME
-#endif
-#endif
-
-#ifdef TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-
-/* these may be needed for sig_atomic_t */
-#include <sys/types.h>
-#include <signal.h>
-
-#ifdef USE_SYS_SELECT_H
-
-#if defined(USE_XPOLL_H) && defined(AIXV3) && defined(NFDBITS)
-#undef NFDBITS /* conflict between X11/Xpoll.h and sys/select.h */
-#endif
-
-#include <sys/select.h>
-
-#endif /* USE_SYS_SELECT_H */
-
-#include <setjmp.h>
-
-#if defined(__UNIXOS2__) && !defined(XTERM_MAIN)
-#define environ gblenvp /* circumvent a bug */
-#endif
-
-#if !defined(VMS) && !(defined(linux) && defined(__USE_GNU))
-extern char **environ;
-#endif
-
-/***====================================================================***/
-
-#define XtNallowC1Printable "allowC1Printable"
-#define XtNallowSendEvents "allowSendEvents"
-#define XtNallowWindowOps "allowWindowOps"
-#define XtNalwaysHighlight "alwaysHighlight"
-#define XtNalwaysUseMods "alwaysUseMods"
-#define XtNanswerbackString "answerbackString"
-#define XtNappcursorDefault "appcursorDefault"
-#define XtNappkeypadDefault "appkeypadDefault"
-#define XtNautoWrap "autoWrap"
-#define XtNawaitInput "awaitInput"
-#define XtNbackarrowKey "backarrowKey"
-#define XtNbellOnReset "bellOnReset"
-#define XtNbellSuppressTime "bellSuppressTime"
-#define XtNboldColors "boldColors"
-#define XtNboldFont "boldFont"
-#define XtNboldMode "boldMode"
-#define XtNbrokenLinuxOSC "brokenLinuxOSC"
-#define XtNbrokenSelections "brokenSelections"
-#define XtNbrokenStringTerm "brokenStringTerm"
-#define XtNc132 "c132"
-#define XtNcacheDoublesize "cacheDoublesize"
-#define XtNcharClass "charClass"
-#define XtNcjkWidth "cjkWidth"
-#define XtNcolorAttrMode "colorAttrMode"
-#define XtNcolorBDMode "colorBDMode"
-#define XtNcolorBLMode "colorBLMode"
-#define XtNcolorMode "colorMode"
-#define XtNcolorRVMode "colorRVMode"
-#define XtNcolorULMode "colorULMode"
-#define XtNctrlFKeys "ctrlFKeys"
-#define XtNcurses "curses"
-#define XtNcursorBlink "cursorBlink"
-#define XtNcursorColor "cursorColor"
-#define XtNcursorOffTime "cursorOffTime"
-#define XtNcursorOnTime "cursorOnTime"
-#define XtNcutNewline "cutNewline"
-#define XtNcutToBeginningOfLine "cutToBeginningOfLine"
-#define XtNdecTerminalID "decTerminalID"
-#define XtNdeleteIsDEL "deleteIsDEL"
-#define XtNdynamicColors "dynamicColors"
-#define XtNeightBitControl "eightBitControl"
-#define XtNeightBitInput "eightBitInput"
-#define XtNeightBitOutput "eightBitOutput"
-#define XtNfaceName "faceName"
-#define XtNfaceNameDoublesize "faceNameDoublesize"
-#define XtNfaceSize "faceSize"
-#define XtNfont1 "font1"
-#define XtNfont2 "font2"
-#define XtNfont3 "font3"
-#define XtNfont4 "font4"
-#define XtNfont5 "font5"
-#define XtNfont6 "font6"
-#define XtNfontDoublesize "fontDoublesize"
-#define XtNfontStyle "fontStyle"
-#define XtNforceBoxChars "forceBoxChars"
-#define XtNfreeBoldBox "freeBoldBox"
-#define XtNhighlightColor "highlightColor"
-#define XtNhighlightSelection "highlightSelection"
-#define XtNhpLowerleftBugCompat "hpLowerleftBugCompat"
-#define XtNi18nSelections "i18nSelections"
-#define XtNinternalBorder "internalBorder"
-#define XtNitalicULMode "italicULMode"
-#define XtNjumpScroll "jumpScroll"
-#define XtNkeyboardDialect "keyboardDialect"
-#define XtNlimitResize "limitResize"
-#define XtNlocale "locale"
-#define XtNlocaleFilter "localeFilter"
-#define XtNlogFile "logFile"
-#define XtNlogInhibit "logInhibit"
-#define XtNlogging "logging"
-#define XtNloginShell "loginShell"
-#define XtNmarginBell "marginBell"
-#define XtNmenuBar "menuBar"
-#define XtNmenuHeight "menuHeight"
-#define XtNmetaSendsEscape "metaSendsEscape"
-#define XtNmkWidth "mkWidth"
-#define XtNmodifyCursorKeys "modifyCursorKeys"
-#define XtNmultiClickTime "multiClickTime"
-#define XtNmultiScroll "multiScroll"
-#define XtNnMarginBell "nMarginBell"
-#define XtNnumLock "numLock"
-#define XtNoldXtermFKeys "oldXtermFKeys"
-#define XtNpointerColor "pointerColor"
-#define XtNpointerColorBackground "pointerColorBackground"
-#define XtNpointerShape "pointerShape"
-#define XtNpopOnBell "popOnBell"
-#define XtNprintAttributes "printAttributes"
-#define XtNprinterAutoClose "printerAutoClose"
-#define XtNprinterCommand "printerCommand"
-#define XtNprinterControlMode "printerControlMode"
-#define XtNprinterExtent "printerExtent"
-#define XtNprinterFormFeed "printerFormFeed"
-#define XtNrenderFont "renderFont"
-#define XtNresizeGravity "resizeGravity"
-#define XtNreverseWrap "reverseWrap"
-#define XtNrightScrollBar "rightScrollBar"
-#define XtNsaveLines "saveLines"
-#define XtNscrollBar "scrollBar"
-#define XtNscrollBarBorder "scrollBarBorder"
-#define XtNscrollKey "scrollKey"
-#define XtNscrollLines "scrollLines"
-#define XtNscrollPos "scrollPos"
-#define XtNscrollTtyOutput "scrollTtyOutput"
-#define XtNshiftFonts "shiftFonts"
-#define XtNshowBlinkAsBold "showBlinkAsBold"
-#define XtNshowMissingGlyphs "showMissingGlyphs"
-#define XtNsignalInhibit "signalInhibit"
-#define XtNtekGeometry "tekGeometry"
-#define XtNtekInhibit "tekInhibit"
-#define XtNtekSmall "tekSmall"
-#define XtNtekStartup "tekStartup"
-#define XtNtiXtraScroll "tiXtraScroll"
-#define XtNtiteInhibit "titeInhibit"
-#define XtNtoolBar "toolBar"
-#define XtNtrimSelection "trimSelection"
-#define XtNunderLine "underLine"
-#define XtNutf8 "utf8"
-#define XtNveryBoldColors "veryBoldColors"
-#define XtNvisualBell "visualBell"
-#define XtNvisualBellDelay "visualBellDelay"
-#define XtNvt100Graphics "vt100Graphics"
-#define XtNwideBoldFont "wideBoldFont"
-#define XtNwideChars "wideChars"
-#define XtNwideFont "wideFont"
-#define XtNximFont "ximFont"
-#define XtNxmcAttributes "xmcAttributes"
-#define XtNxmcGlitch "xmcGlitch"
-#define XtNxmcInline "xmcInline"
-#define XtNxmcMoveSGR "xmcMoveSGR"
-
-#define XtCAllowC1Printable "AllowC1Printable"
-#define XtCAllowSendEvents "AllowSendEvents"
-#define XtCAllowWindowOps "AllowWindowOps"
-#define XtCAlwaysHighlight "AlwaysHighlight"
-#define XtCAlwaysUseMods "AlwaysUseMods"
-#define XtCAnswerbackString "AnswerbackString"
-#define XtCAppcursorDefault "AppcursorDefault"
-#define XtCAppkeypadDefault "AppkeypadDefault"
-#define XtCAutoWrap "AutoWrap"
-#define XtCAwaitInput "AwaitInput"
-#define XtCBackarrowKey "BackarrowKey"
-#define XtCBellOnReset "BellOnReset"
-#define XtCBellSuppressTime "BellSuppressTime"
-#define XtCBoldFont "BoldFont"
-#define XtCBoldMode "BoldMode"
-#define XtCBrokenLinuxOSC "BrokenLinuxOSC"
-#define XtCBrokenSelections "BrokenSelections"
-#define XtCBrokenStringTerm "BrokenStringTerm"
-#define XtCC132 "C132"
-#define XtCCacheDoublesize "CacheDoublesize"
-#define XtCCharClass "CharClass"
-#define XtCCjkWidth "CjkWidth"
-#define XtCColorAttrMode "ColorAttrMode"
-#define XtCColorMode "ColorMode"
-#define XtCColumn "Column"
-#define XtCCtrlFKeys "CtrlFKeys"
-#define XtCCurses "Curses"
-#define XtCCursorBlink "CursorBlink"
-#define XtCCursorOffTime "CursorOffTime"
-#define XtCCursorOnTime "CursorOnTime"
-#define XtCCutNewline "CutNewline"
-#define XtCCutToBeginningOfLine "CutToBeginningOfLine"
-#define XtCDecTerminalID "DecTerminalID"
-#define XtCDeleteIsDEL "DeleteIsDEL"
-#define XtCDynamicColors "DynamicColors"
-#define XtCEightBitControl "EightBitControl"
-#define XtCEightBitInput "EightBitInput"
-#define XtCEightBitOutput "EightBitOutput"
-#define XtCFaceName "FaceName"
-#define XtCFaceNameDoublesize "FaceNameDoublesize"
-#define XtCFaceSize "FaceSize"
-#define XtCFont1 "Font1"
-#define XtCFont2 "Font2"
-#define XtCFont3 "Font3"
-#define XtCFont4 "Font4"
-#define XtCFont5 "Font5"
-#define XtCFont6 "Font6"
-#define XtCFontDoublesize "FontDoublesize"
-#define XtCFontStyle "FontStyle"
-#define XtCForceBoxChars "ForceBoxChars"
-#define XtCFreeBoldBox "FreeBoldBox"
-#define XtCHighlightSelection "HighlightSelection"
-#define XtCHpLowerleftBugCompat "HpLowerleftBugCompat"
-#define XtCI18nSelections "I18nSelections"
-#define XtCJumpScroll "JumpScroll"
-#define XtCKeyboardDialect "KeyboardDialect"
-#define XtCLimitResize "LimitResize"
-#define XtCLocale "Locale"
-#define XtCLocaleFilter "LocaleFilter"
-#define XtCLogInhibit "LogInhibit"
-#define XtCLogfile "Logfile"
-#define XtCLogging "Logging"
-#define XtCLoginShell "LoginShell"
-#define XtCMarginBell "MarginBell"
-#define XtCMenuBar "MenuBar"
-#define XtCMenuHeight "MenuHeight"
-#define XtCMetaSendsEscape "MetaSendsEscape"
-#define XtCMkWidth "MkWidth"
-#define XtCModifyCursorKeys "ModifyCursorKeys"
-#define XtCMultiClickTime "MultiClickTime"
-#define XtCMultiScroll "MultiScroll"
-#define XtCNumLock "NumLock"
-#define XtCOldXtermFKeys "OldXtermFKeys"
-#define XtCPopOnBell "PopOnBell"
-#define XtCPrintAttributes "PrintAttributes"
-#define XtCPrinterAutoClose "PrinterAutoClose"
-#define XtCPrinterCommand "PrinterCommand"
-#define XtCPrinterControlMode "PrinterControlMode"
-#define XtCPrinterExtent "PrinterExtent"
-#define XtCPrinterFormFeed "PrinterFormFeed"
-#define XtCRenderFont "RenderFont"
-#define XtCResizeGravity "ResizeGravity"
-#define XtCReverseWrap "ReverseWrap"
-#define XtCRightScrollBar "RightScrollBar"
-#define XtCSaveLines "SaveLines"
-#define XtCScrollBar "ScrollBar"
-#define XtCScrollBarBorder "ScrollBarBorder"
-#define XtCScrollCond "ScrollCond"
-#define XtCScrollLines "ScrollLines"
-#define XtCScrollPos "ScrollPos"
-#define XtCShiftFonts "ShiftFonts"
-#define XtCShowBlinkAsBold "ShowBlinkAsBold"
-#define XtCShowMissingGlyphs "ShowMissingGlyphs"
-#define XtCSignalInhibit "SignalInhibit"
-#define XtCTekInhibit "TekInhibit"
-#define XtCTekSmall "TekSmall"
-#define XtCTekStartup "TekStartup"
-#define XtCTiXtraScroll "TiXtraScroll"
-#define XtCTiteInhibit "TiteInhibit"
-#define XtCToolBar "ToolBar"
-#define XtCTrimSelection "TrimSelection"
-#define XtCUnderLine "UnderLine"
-#define XtCUtf8 "Utf8"
-#define XtCVT100Graphics "VT100Graphics"
-#define XtCVeryBoldColors "VeryBoldColors"
-#define XtCVisualBell "VisualBell"
-#define XtCVisualBellDelay "VisualBellDelay"
-#define XtCWideBoldFont "WideBoldFont"
-#define XtCWideChars "WideChars"
-#define XtCWideFont "WideFont"
-#define XtCXimFont "XimFont"
-#define XtCXmcAttributes "XmcAttributes"
-#define XtCXmcGlitch "XmcGlitch"
-#define XtCXmcInline "XmcInline"
-#define XtCXmcMoveSGR "XmcMoveSGR"
-
-#if defined(NO_ACTIVE_ICON) && !defined(XtNgeometry)
-#define XtNgeometry "geometry"
-#define XtCGeometry "Geometry"
-#endif
-
-#if OPT_COLOR_CLASS
-#define XtCCursorColor "CursorColor"
-#define XtCPointerColor "PointerColor"
-#define XtCHighlightColor "HighlightColor"
-#else
-#define XtCCursorColor XtCForeground
-#define XtCPointerColor XtCForeground
-#define XtCHighlightColor XtCForeground
-#endif
-
-/***====================================================================***/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct XTERM_RESOURCE;
-
-/* Tekproc.c */
-extern int TekInit (void);
-extern int TekPtyData(void);
-extern void ChangeTekColors (TScreen *screen, ScrnColors *pNew);
-extern void TCursorToggle (int toggle);
-extern void TekCopy (void);
-extern void TekEnqMouse (int c);
-extern void TekExpose (Widget w, XEvent *event, Region region);
-extern void TekGINoff (void);
-extern void TekReverseVideo (TScreen *screen);
-extern void TekRun (void);
-extern void TekSetFontSize (int newitem);
-extern void TekSimulatePageButton (Bool reset);
-extern void dorefresh (void);
-
-/* button.c */
-#define MotionOff( s, t ) { \
- (s)->event_mask |= ButtonMotionMask; \
- (s)->event_mask &= ~PointerMotionMask; \
- XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); }
-
-#define MotionOn( s, t ) { \
- (s)->event_mask &= ~ButtonMotionMask; \
- (s)->event_mask |= PointerMotionMask; \
- XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); }
-
-extern Bool SendMousePosition (Widget w, XEvent* event);
-extern void DiredButton PROTO_XT_ACTIONS_ARGS;
-extern void DisownSelection (XtermWidget termw);
-extern void HandleGINInput PROTO_XT_ACTIONS_ARGS;
-extern void HandleInsertSelection PROTO_XT_ACTIONS_ARGS;
-extern void HandleKeyboardSelectEnd PROTO_XT_ACTIONS_ARGS;
-extern void HandleKeyboardSelectExtend PROTO_XT_ACTIONS_ARGS;
-extern void HandleKeyboardSelectStart PROTO_XT_ACTIONS_ARGS;
-extern void HandleKeyboardStartExtend PROTO_XT_ACTIONS_ARGS;
-extern void HandleSecure PROTO_XT_ACTIONS_ARGS;
-extern void HandleSelectEnd PROTO_XT_ACTIONS_ARGS;
-extern void HandleSelectExtend PROTO_XT_ACTIONS_ARGS;
-extern void HandleSelectSet PROTO_XT_ACTIONS_ARGS;
-extern void HandleSelectStart PROTO_XT_ACTIONS_ARGS;
-extern void HandleStartExtend PROTO_XT_ACTIONS_ARGS;
-extern void ReadLineButton PROTO_XT_ACTIONS_ARGS;
-extern void ResizeSelection (TScreen *screen, int rows, int cols);
-extern void ScrollSelection (TScreen* screen, int amount, Bool);
-extern void TrackMouse (int func, int startrow, int startcol, int firstrow, int lastrow);
-extern void TrackText (int frow, int fcol, int trow, int tcol);
-extern void ViButton PROTO_XT_ACTIONS_ARGS;
-
-#if OPT_DEC_LOCATOR
-extern Bool SendLocatorPosition (Widget w, XEvent* event);
-extern void CheckLocatorPosition (Widget w, XEvent *event);
-extern void GetLocatorPosition (XtermWidget w);
-extern void InitLocatorFilter (XtermWidget w);
-#endif /* OPT_DEC_LOCATOR */
-
-#if OPT_PASTE64
-extern void AppendToSelectionBuffer (TScreen *screen, unsigned c);
-extern void ClearSelectionBuffer (void);
-extern void CompleteSelection (char **args, Cardinal len);
-extern void xtermGetSelection (Widget w, Time ev_time, String *params, Cardinal num_params, Atom *targets);
-#endif
-
-#if OPT_WIDE_CHARS
-extern Bool iswide(int i);
-#endif
-
-/* charproc.c */
-extern int VTInit (void);
-extern int v_write (int f, Char *d, unsigned len);
-extern void FindFontSelection (char *atom_name, Bool justprobe);
-extern void HideCursor (void);
-extern void ShowCursor (void);
-extern void SwitchBufPtrs (TScreen *screen);
-extern void ToggleAlternate (TScreen *screen);
-extern void VTReset (int full, int saved);
-extern void VTRun (void);
-extern void dotext (TScreen *screen, int charset, IChar *buf, Cardinal len);
-extern void resetCharsets (TScreen *screen);
-extern void set_cursor_gcs (TScreen *screen);
-extern void set_max_col(TScreen * screen, int cols);
-extern void set_max_row(TScreen * screen, int rows);
-extern void set_tb_margins (TScreen *screen, int top, int bottom);
-extern void unparseputc (int c, int fd);
-extern void unparseputc1 (int c, int fd);
-extern void unparseputs (char *s, int fd);
-extern void unparseseq (ANSI *ap, int fd);
-extern void xtermAddInput(Widget w);
-
-#if OPT_BLINK_CURS
-extern void ToggleCursorBlink(TScreen *screen);
-#endif
-
-#if OPT_ISO_COLORS
-extern void SGR_Background (int color);
-extern void SGR_Foreground (int color);
-#endif
-
-/* charsets.c */
-extern unsigned xtermCharSetIn (unsigned code, int charset);
-extern int xtermCharSetOut (IChar *buf, IChar *ptr, int charset);
-
-/* cursor.c */
-extern void CarriageReturn (TScreen *screen);
-extern void CursorBack (TScreen *screen, int n);
-extern void CursorDown (TScreen *screen, int n);
-extern void CursorForward (TScreen *screen, int n);
-extern void CursorNextLine (TScreen *screen, int count);
-extern void CursorPrevLine (TScreen *screen, int count);
-extern void CursorRestore (XtermWidget tw);
-extern void CursorSave (XtermWidget tw);
-extern void CursorSet (TScreen *screen, int row, int col, unsigned flags);
-extern void CursorUp (TScreen *screen, int n);
-extern void RevIndex (TScreen *screen, int amount);
-extern void xtermIndex (TScreen *screen, int amount);
-
-#if OPT_TRACE
-extern int set_cur_col(TScreen *screen, int value);
-extern int set_cur_row(TScreen *screen, int value);
-#else
-#define set_cur_col(screen, value) screen->cur_col = value
-#define set_cur_row(screen, value) screen->cur_row = value
-#endif
-
-/* doublechr.c */
-extern void xterm_DECDHL (Bool top);
-extern void xterm_DECSWL (void);
-extern void xterm_DECDWL (void);
-#if OPT_DEC_CHRSET
-extern int xterm_Double_index(unsigned chrset, unsigned flags);
-extern GC xterm_DoubleGC(unsigned chrset, unsigned flags, GC old_gc);
-#endif
-
-/* input.c */
-extern Bool xtermDeleteIsDEL (void);
-extern void Input (TKeyboard *keyboard, TScreen *screen, XKeyEvent *event, Bool eightbit);
-extern void StringInput (TScreen *screen, Char *string, size_t nbytes);
-
-#if OPT_NUM_LOCK
-extern void VTInitModifiers(void);
-#endif
-
-#if OPT_TCAP_QUERY
-extern int xtermcapKeycode(char **params, unsigned *state);
-#endif
-
-/* main.c */
-#ifndef __UNIXOS2__
-#define ENVP_ARG /**/
-#else
-#define ENVP_ARG , char **envp
-#endif
-
-extern int main (int argc, char **argv ENVP_ARG);
-extern int GetBytesAvailable (int fd);
-extern int kill_process_group (int pid, int sig);
-extern int nonblocking_wait (void);
-extern void first_map_occurred (void);
-
-#ifdef SIGNAL_T
-extern SIGNAL_T Exit (int n);
-#endif
-
-#ifndef SIG_ATOMIC_T
-#define SIG_ATOMIC_T int
-#endif
-
-#if OPT_WIDE_CHARS
-extern int (*my_wcwidth)(wchar_t);
-#endif
-
-/* menu.c */
-extern void do_hangup PROTO_XT_CALLBACK_ARGS;
-extern void repairSizeHints (void);
-extern void show_8bit_control (Bool value);
-
-/* misc.c */
-extern Bool AllocateTermColor(XtermWidget, ScrnColors *, int, const char *);
-extern Cursor make_colored_cursor (unsigned cursorindex, unsigned long fg, unsigned long bg);
-extern OptionHelp * sortedOpts(OptionHelp *, XrmOptionDescRec *, Cardinal);
-extern Window WMFrameWindow(XtermWidget termw);
-extern XrmOptionDescRec * sortedOptDescs(XrmOptionDescRec *, Cardinal);
-extern char *SysErrorMsg (int n);
-extern char *udk_lookup (int keycode, int *len);
-extern char *xtermEnvEncoding (void);
-extern char *xtermEnvLocale (void);
-extern char *xtermFindShell(char *leaf, Bool warning);
-extern char *xtermVersion(void);
-extern int XStrCmp (char *s1, char *s2);
-extern int creat_as (uid_t uid, gid_t gid, Bool append, char *pathname, int mode);
-extern int open_userfile (uid_t uid, gid_t gid, char *path, Bool append);
-extern int xerror (Display *d, XErrorEvent *ev);
-extern int xioerror (Display *dpy);
-extern void Bell (int which, int percent);
-extern void ChangeXprop (char *name);
-extern void Changename (char *name);
-extern void Changetitle (char *name);
-extern void Cleanup (int code);
-extern void HandleBellPropertyChange PROTO_XT_EV_HANDLER_ARGS;
-extern void HandleEightBitKeyPressed PROTO_XT_ACTIONS_ARGS;
-extern void HandleEnterWindow PROTO_XT_EV_HANDLER_ARGS;
-extern void HandleFocusChange PROTO_XT_EV_HANDLER_ARGS;
-extern void HandleInterpret PROTO_XT_ACTIONS_ARGS;
-extern void HandleKeyPressed PROTO_XT_ACTIONS_ARGS;
-extern void HandleLeaveWindow PROTO_XT_EV_HANDLER_ARGS;
-extern void HandleStringEvent PROTO_XT_ACTIONS_ARGS;
-extern void Panic (char *s, int a);
-extern void Redraw (void);
-extern void ReverseOldColors (void);
-extern void SysError (int i) GCC_NORETURN;
-extern void VisualBell (void);
-extern void do_dcs (Char *buf, size_t len);
-extern void do_osc (Char *buf, unsigned len, int final);
-extern void do_xevents (void);
-extern void end_tek_mode (void);
-extern void end_vt_mode (void);
-extern void hide_tek_window (void);
-extern void hide_vt_window (void);
-extern void reset_decudk (void);
-extern void set_tek_visibility (Bool on);
-extern void set_vt_visibility (Bool on);
-extern void switch_modes (Bool tovt);
-extern void timestamp_filename(char *dst, const char *src);
-extern void xevents (void);
-extern void xt_error (String message);
-extern void xtermSetenv (char *var, char *value);
-
-#if OPT_DABBREV
-extern void HandleDabbrevExpand PROTO_XT_ACTIONS_ARGS;
-#endif
-
-#if OPT_MAXIMIZE
-extern int QueryMaximize (XtermWidget termw, unsigned *width, unsigned *height);
-extern void HandleDeIconify PROTO_XT_ACTIONS_ARGS;
-extern void HandleIconify PROTO_XT_ACTIONS_ARGS;
-extern void HandleMaximize PROTO_XT_ACTIONS_ARGS;
-extern void HandleRestoreSize PROTO_XT_ACTIONS_ARGS;
-extern void RequestMaximize (XtermWidget termw, int maximize);
-#endif
-
-#if OPT_WIDE_CHARS
-extern Bool xtermEnvUTF8(void);
-#else
-#define xtermEnvUTF8() False
-#endif
-
-#ifdef ALLOWLOGGING
-extern void StartLog (TScreen *screen);
-extern void CloseLog (TScreen *screen);
-extern void FlushLog (TScreen *screen);
-#else
-#define FlushLog(screen) /*nothing*/
-#endif
-
-/* print.c */
-extern Bool xtermHasPrinter (void);
-extern int xtermPrinterControl (int chr);
-extern void setPrinterControlMode (int mode);
-extern void xtermAutoPrint (int chr);
-extern void xtermMediaControl (int param, int private_seq);
-extern void xtermPrintScreen (Bool use_DECPEX);
-
-/* ptydata.c */
-#ifdef VMS
-#define PtySelect int
-#else
-#define PtySelect fd_set
-#endif
-
-extern int readPtyData (TScreen *screen, PtySelect *select_mask, PtyData *data);
-extern void fillPtyData (TScreen *screen, PtyData *data, char *value, int length);
-extern void initPtyData (PtyData **data);
-extern void trimPtyData (TScreen *screen, PtyData *data);
-
-#if OPT_WIDE_CHARS
-extern Bool morePtyData (TScreen *screen, PtyData *data);
-extern Char *convertToUTF8 (Char *lp, unsigned c);
-extern IChar nextPtyData (TScreen *screen, PtyData *data);
-extern void switchPtyData (TScreen *screen, int f);
-extern void writePtyData (int f, IChar *d, unsigned len);
-#else
-#define morePtyData(screen, data) ((data)->last > (data)->next)
-#define nextPtyData(screen, data) (*((data)->next++) & \
- (screen->output_eight_bits \
- ? 0xff \
- : 0x7f))
-#define writePtyData(f,d,len) v_write(f,d,len)
-#endif
-
-/* screen.c */
-extern Bool non_blank_line (ScrnBuf sb, int row, int col, int len);
-extern ScrnBuf Allocate (int nrow, int ncol, Char **addr);
-extern int ScreenResize (TScreen *screen, int width, int height, unsigned *flags);
-extern size_t ScrnPointers (TScreen *screen, size_t len);
-extern void ClearBufRows (TScreen *screen, int first, int last);
-extern void ScreenWrite (TScreen *screen, PAIRED_CHARS(Char *str, Char *str2), unsigned flags, unsigned cur_fg_bg, unsigned length);
-extern void ScrnDeleteChar (TScreen *screen, unsigned n);
-extern void ScrnDeleteLine (TScreen *screen, ScrnBuf sb, int n, int last, unsigned size, unsigned where);
-extern void ScrnFillRectangle (TScreen *, XTermRect *, int, unsigned);
-extern void ScrnInsertChar (TScreen *screen, unsigned n);
-extern void ScrnInsertLine (TScreen *screen, ScrnBuf sb, int last, int where, unsigned n, unsigned size);
-extern void ScrnRefresh (TScreen *screen, int toprow, int leftcol, int nrows, int ncols, Bool force);
-extern void ScrnUpdate (TScreen *screen, int toprow, int leftcol, int nrows, int ncols, Bool force);
-extern void ScrnDisownSelection (TScreen *screen);
-extern void xtermParseRect (TScreen *, int, int *, XTermRect *);
-
-#define ScrnClrFlag(screen, row, flag) \
- SCRN_BUF_FLAGS(screen, row + screen->topline) = \
- (Char *)((long)SCRN_BUF_FLAGS(screen, row + screen->topline) & ~ (flag))
-
-#define ScrnSetFlag(screen, row, flag) \
- SCRN_BUF_FLAGS(screen, row + screen->topline) = \
- (Char *)(((long)SCRN_BUF_FLAGS(screen, row + screen->topline) | (flag)))
-
-#define ScrnTstFlag(screen, row, flag) \
- ((row + screen->savelines + screen->topline) >= 0 && ((long)SCRN_BUF_FLAGS(screen, row + screen->topline) & (flag)) != 0)
-
-#define ScrnClrBlinked(screen, row) ScrnClrFlag(screen, row, BLINK)
-#define ScrnSetBlinked(screen, row) ScrnSetFlag(screen, row, BLINK)
-#define ScrnTstBlinked(screen, row) ScrnTstFlag(screen, row, BLINK)
-
-#define ScrnClrWrapped(screen, row) ScrnClrFlag(screen, row, LINEWRAPPED)
-#define ScrnSetWrapped(screen, row) ScrnSetFlag(screen, row, LINEWRAPPED)
-#define ScrnTstWrapped(screen, row) ScrnTstFlag(screen, row, LINEWRAPPED)
-
-#define ScrnHaveSelection(screen) \
- ((screen)->startHRow != (screen)->endHRow \
- || (screen)->startHCol != (screen)->endHCol)
-
-#define ScrnAreLinesInSelection(screen, first, last) \
- ((last) >= (screen)->startHRow && (first) <= (screen)->endHRow)
-
-#define ScrnIsLineInSelection(screen, line) \
- ((line) >= (screen)->startHRow && (line) <= (screen)->endHRow)
-
-#define ScrnHaveLineMargins(screen) \
- ((screen)->top_marg != 0 \
- || ((screen)->bot_marg != screen->max_row))
-
-#define ScrnIsLineInMargins(screen, line) \
- ((line) >= (screen)->top_marg && (line) <= (screen)->bot_marg)
-
-#if OPT_DEC_RECTOPS
-extern void ScrnCopyRectangle (TScreen *, XTermRect *, int, int *);
-extern void ScrnMarkRectangle (TScreen *, XTermRect *, Bool, int, int *);
-extern void ScrnWipeRectangle (TScreen *, XTermRect *);
-#endif
-
-#if OPT_WIDE_CHARS
-extern void ChangeToWide(TScreen * screen);
-#endif
-
-/* scrollbar.c */
-extern void DoResizeScreen (XtermWidget xw);
-extern void HandleScrollBack PROTO_XT_ACTIONS_ARGS;
-extern void HandleScrollForward PROTO_XT_ACTIONS_ARGS;
-extern void ResizeScrollBar (XtermWidget xw);
-extern void ScrollBarDrawThumb (Widget scrollWidget);
-extern void ScrollBarOff (TScreen *screen);
-extern void ScrollBarOn (XtermWidget xw, int init, int doalloc);
-extern void ScrollBarReverseVideo (Widget scrollWidget);
-extern void ToggleScrollBar (XtermWidget w);
-extern void WindowScroll (TScreen *screen, int top);
-
-#ifdef SCROLLBAR_RIGHT
-extern void updateRightScrollbar(XtermWidget xw);
-#else
-#define updateRightScrollbar(xw) /* nothing */
-#endif
-
-/* tabs.c */
-extern Bool TabToNextStop (TScreen *screen);
-extern Bool TabToPrevStop (TScreen *screen);
-extern void TabClear (Tabs tabs, int col);
-extern void TabReset (Tabs tabs);
-extern void TabSet (Tabs tabs, int col);
-extern void TabZonk (Tabs tabs);
-
-/* util.c */
-extern GC updatedXtermGC (TScreen *screen, unsigned flags, unsigned fg_bg, Bool hilite);
-extern int AddToRefresh (TScreen *screen);
-extern int HandleExposure (TScreen *screen, XEvent *event);
-extern int char2lower (int ch);
-extern int drawXtermText (TScreen *screen, unsigned flags, GC gc, int x, int y, int chrset, PAIRED_CHARS(Char *text, Char *text2), Cardinal len, int on_wide);
-extern void ChangeAnsiColors (XtermWidget tw);
-extern void ChangeColors (XtermWidget tw, ScrnColors *pNew);
-extern void ClearRight (TScreen *screen, int n);
-extern void ClearScreen (TScreen *screen);
-extern void DeleteChar (TScreen *screen, unsigned n);
-extern void DeleteLine (TScreen *screen, int n);
-extern void FlushScroll (TScreen *screen);
-extern void GetColors (XtermWidget tw, ScrnColors *pColors);
-extern void InsertChar (TScreen *screen, unsigned n);
-extern void InsertLine (TScreen *screen, int n);
-extern void RevScroll (TScreen *screen, int amount);
-extern void ReverseVideo (XtermWidget termw);
-extern void decode_keyboard_type (struct XTERM_RESOURCE *rp);
-extern void decode_wcwidth (int mode);
-extern void do_erase_display (TScreen *screen, int param, int mode);
-extern void do_erase_line (TScreen *screen, int param, int mode);
-extern void init_keyboard_type (xtermKeyboardType, Bool set);
-extern void recolor_cursor (Cursor cursor, unsigned long fg, unsigned long bg);
-extern void resetXtermGC (TScreen *screen, unsigned flags, Bool hilite);
-extern void scrolling_copy_area (TScreen *screen, int firstline, int nlines, int amount);
-extern void set_keyboard_type (xtermKeyboardType type, Bool set);
-extern void toggle_keyboard_type (xtermKeyboardType type);
-extern void update_keyboard_type (void);
-extern void xtermScroll (TScreen *screen, int amount);
-extern void xtermSizeHints (XtermWidget xw, XSizeHints *sizehints, int scrollbarWidth);
-
-#if OPT_ISO_COLORS
-
-extern unsigned extract_fg (unsigned color, unsigned flags);
-extern unsigned extract_bg (unsigned color, unsigned flags);
-extern unsigned makeColorPair (int fg, int bg);
-extern void ClearCurBackground (TScreen *screen, int top, int left, unsigned height, unsigned width);
-
-#define xtermColorPair() makeColorPair(term->sgr_foreground, term->sgr_background)
-
-#define getXtermForeground(flags, color) \
- (((flags) & FG_COLOR) && ((int)(color) >= 0 && (color) < MAXCOLORS) \
- ? GET_COLOR_RES(term->screen.Acolors[color]) \
- : T_COLOR(&(term->screen), TEXT_FG))
-
-#define getXtermBackground(flags, color) \
- (((flags) & BG_COLOR) && ((int)(color) >= 0 && (color) < MAXCOLORS) \
- ? GET_COLOR_RES(term->screen.Acolors[color]) \
- : T_COLOR(&(term->screen), TEXT_BG))
-
-#if OPT_COLOR_RES
-#define GET_COLOR_RES(res) xtermGetColorRes(&(res))
-#define SET_COLOR_RES(res,color) (res)->value = color
-#define T_COLOR(v,n) (v)->Tcolors[n].value
-extern Pixel xtermGetColorRes(ColorRes *res);
-#else
-#define GET_COLOR_RES(res) res
-#define SET_COLOR_RES(res,color) *res = color
-#define T_COLOR(v,n) (v)->Tcolors[n]
-#endif
-
-#if OPT_EXT_COLORS
-#define ExtractForeground(color) ((color >> 8) & 0xff)
-#define ExtractBackground(color) (color & 0xff)
-#else
-#define ExtractForeground(color) ((color >> 4) & 0xf)
-#define ExtractBackground(color) (color & 0xf)
-#endif
-
-#define checkVeryBoldAttr(flags, fg, code, attr) \
- if ((flags & FG_COLOR) != 0 \
- && (screen->veryBoldColors & attr) == 0 \
- && (flags & attr) != 0 \
- && (fg == code)) \
- flags &= ~(attr)
-
-#define checkVeryBoldColors(flags, fg) \
- checkVeryBoldAttr(flags, fg, COLOR_RV, INVERSE); \
- checkVeryBoldAttr(flags, fg, COLOR_UL, UNDERLINE); \
- checkVeryBoldAttr(flags, fg, COLOR_BD, BOLD); \
- checkVeryBoldAttr(flags, fg, COLOR_BL, BLINK)
-
-#else /* !OPT_ISO_COLORS */
-
-#define ClearCurBackground(screen, top, left, height, width) \
- XClearArea (screen->display, VWindow(screen), \
- left, top, width, height, FALSE)
-
-#define extract_fg(color, flags) term->cur_foreground
-#define extract_bg(color, flags) term->cur_background
-
- /* FIXME: Reverse-Video? */
-#define T_COLOR(v,n) (v)->Tcolors[n]
-#define getXtermBackground(flags, color) T_COLOR(&(term->screen), TEXT_BG)
-#define getXtermForeground(flags, color) T_COLOR(&(term->screen), TEXT_FG)
-#define makeColorPair(fg, bg) 0
-#define xtermColorPair() 0
-
-#define checkVeryBoldColors(flags, fg) /* nothing */
-
-#endif /* OPT_ISO_COLORS */
-
-#if OPT_DEC_CHRSET
-#define curXtermChrSet(row) \
- ((CSET_DOUBLE(SCRN_ROW_CSET((&term->screen), row))) \
- ? SCRN_ROW_CSET((&term->screen), row) \
- : (term->screen).cur_chrset)
-#else
-#define curXtermChrSet(row) 0
-#endif
-
-extern unsigned getXtermCell (TScreen *screen, int row, int col);
-extern void putXtermCell (TScreen *screen, int row, int col, int ch);
-
-#if OPT_WIDE_CHARS
-extern unsigned getXtermCellComb1 (TScreen *screen, int row, int col);
-extern unsigned getXtermCellComb2 (TScreen *screen, int row, int col);
-extern void addXtermCombining (TScreen *screen, int row, int col, unsigned ch);
-#endif
-
-#if OPT_XMC_GLITCH
-extern void Mark_XMC (TScreen *screen, int param);
-extern void Jump_XMC (TScreen *screen);
-extern void Resolve_XMC (TScreen *screen);
-#endif
-
-#if OPT_WIDE_CHARS
-unsigned visual_width(PAIRED_CHARS(Char *str, Char *str2), Cardinal len);
-#else
-#define visual_width(a, b) (b)
-#endif
-
-#define BtoS(b) ((b) ? "on" : "off")
-#define NonNull(s) ((s) ? (s) : "<null>")
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif /* included_xterm_h */
diff --git a/nx-X11/programs/xterm/xterm.log.html b/nx-X11/programs/xterm/xterm.log.html
deleted file mode 100644
index d9628696d..000000000
--- a/nx-X11/programs/xterm/xterm.log.html
+++ /dev/null
@@ -1,6641 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!--
- *****************************************************************************
- * Copyright 1996-2004,2005 by Thomas E. Dickey *
- * All Rights Reserved. *
- * *
- * Permission to use, copy, modify, and distribute this software and its *
- * documentation for any purpose and without fee is hereby granted, provided *
- * that the above copyright notice appear in all copies and that both that *
- * copyright notice and this permission notice appear in supporting *
- * documentation, and that the name of the above listed copyright holder(s) *
- * not be used in advertising or publicity pertaining to distribution of the *
- * software without specific, written prior permission. *
- * *
- * THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD *
- * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND *
- * FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE *
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES *
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN *
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF *
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *
- *****************************************************************************
- $XTermId: xterm.log.html,v 1.347 2005/11/13 23:10:36 tom Exp $
- $XFree86: xc/programs/xterm/xterm.log.html,v 1.143 2005/11/13 23:10:36 dickey Exp $
- -->
-<HTML>
-<HEAD>
-<TITLE>XTERM - Change Log</TITLE>
-<LINK REV=MADE HREF="mailto:dickey@invisible-island.net">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</HEAD>
-<BODY>
-<HR>
-Copyright 1997-2004,2005 by <A
-HREF="mailto:dickey@invisible-island.net">Thomas E. Dickey</A>
-<HR>
-<H1>Contents</H1>
-This file contains a list of the changes that I have made for xterm,
-from the notes that I add when submitting a patch.
-<P>
-You should note that other changes have been made as well, by other people,
-to fix bugs and correct ifdef's for portability.
-Most of these are summarized in the XFree86 CHANGELOG
-(found in the unbundled tree, xc/programs/Xserver/hw/xfree86).
-<a href="http://invisible-island.net/xterm/xterm.log.html">Here</a>
-is the latest version of this file.
-
-<UL>
-<LI><A HREF="#xterm_207">Patch #207 - 2005/11/13 - XFree86 4.5.99.16</A>
-<LI><A HREF="#xterm_206">Patch #206 - 2005/11/3 - XFree86 4.5.99.15</A>
-<LI><A HREF="#xterm_205">Patch #205 - 2005/9/18 - XFree86 4.5.99.12</A>
-<LI><A HREF="#xterm_204">Patch #204 - 2005/8/4 - XFree86 4.5.99.9</A>
-<LI><A HREF="#xterm_203">Patch #203 - 2005/7/6 - XFree86 4.5.99.7</A>
-<LI><A HREF="#xterm_202">Patch #202 - 2005/5/2 - XFree86 4.5.99.3</A>
-<LI><A HREF="#xterm_201">Patch #201 - 2005/4/21 - XFree86 4.5.99.2</A>
-<LI><A HREF="#xterm_200">Patch #200 - 2005/2/6 - XFree86 4.4.99.23</A>
-<LI><A HREF="#xterm_199">Patch #199 - 2005/1/17 - XFree86 4.4.99.22</A>
-<LI><A HREF="#xterm_198">Patch #198 - 2005/1/13 - XFree86 4.4.99.21</A>
-<LI><A HREF="#xterm_197">Patch #197 - 2004/11/30 - XFree86 4.4.99.19</A>
-<LI><A HREF="#xterm_196">Patch #196 - 2004/8/15 - XFree86 4.4.99.12</A>
-<LI><A HREF="#xterm_195">Patch #195 - 2004/8/8 - XFree86 4.4.99.11</A>
-<LI><A HREF="#xterm_194">Patch #194 - 2004/7/27 - XFree86 4.4.99.11</A>
-<LI><A HREF="#xterm_193">Patch #193 - 2004/7/19 - XFree86 4.4.99.10</A>
-<LI><A HREF="#xterm_192">Patch #192 - 2004/7/12 - XFree86 4.4.99.9</A>
-<LI><A HREF="#xterm_191">Patch #191 - 2004/6/6 - XFree86 4.4.99.7</A>
-<LI><A HREF="#xterm_190">Patch #190 - 2004/5/25 - XFree86 4.4.99.6</A>
-<LI><A HREF="#xterm_189">Patch #189 - 2004/5/16 - XFree86 4.4.99.6</A>
-<LI><A HREF="#xterm_188">Patch #188 - 2004/5/12 - XFree86 4.4.99.6</A>
-<LI><A HREF="#xterm_187">Patch #187 - 2004/4/27 - XFree86 4.4.99.4</A>
-<LI><A HREF="#xterm_186">Patch #186 - 2004/4/18 - XFree86 4.4.99.4</A>
-<LI><A HREF="#xterm_185">Patch #185 - 2004/3/3 - XFree86 4.4</A>
-<LI><A HREF="#xterm_184">Patch #184 - 2003/12/31 - XFree86 4.3.99.903</A>
-<LI><A HREF="#xterm_183">Patch #183 - 2003/12/26 - XFree86 4.3.99.903</A>
-<LI><A HREF="#xterm_182">Patch #182 - 2003/12/2 - XFree86 4.3.99.901</A>
-<LI><A HREF="#xterm_181">Patch #181 - 2003/10/26 - XFree86 4.3.99.15</A>
-<LI><A HREF="#xterm_180">Patch #180 - 2003/10/12 - XFree86 4.3.99.15</A>
-<LI><A HREF="#xterm_179">Patch #179 - 2003/5/21 - XFree86 4.3.99.5</A>
-<LI><A HREF="#xterm_178">Patch #178 - 2003/5/18 - XFree86 4.3.99.5</A>
-<LI><A HREF="#xterm_177">Patch #177 - 2003/3/23 - XFree86 4.3.0</A>
-<LI><A HREF="#xterm_176">Patch #176 - 2003/3/22 - XFree86 4.3.0</A>
-<LI><A HREF="#xterm_175">Patch #175 - 2003/3/9 - XFree86 4.3.0</A>
-<LI><A HREF="#xterm_174">Patch #174 - 2003/2/25 - XFree86 4.2.99.903</A>
-<LI><A HREF="#xterm_173">Patch #173 - 2003/2/6 - XFree86 4.2.99.902</A>
-<LI><A HREF="#xterm_172">Patch #172 - 2002/12/27 - XFree86 4.2.99.3</A>
-<LI><A HREF="#xterm_171">Patch #171 - 2002/12/12 - XFree86 4.2.99.3</A>
-<LI><A HREF="#xterm_170">Patch #170 - 2002/10/13 - XFree86 4.2.1</A>
-<LI><A HREF="#xterm_169">Patch #169 - 2002/10/5 - XFree86 4.2.1</A>
-<LI><A HREF="#xterm_168">Patch #168 - 2002/9/29 - XFree86 4.2.1</A>
-<LI><A HREF="#xterm_167">Patch #167 - 2002/8/24 - XFree86 4.2.0</A>
-<LI><A HREF="#xterm_166">Patch #166 - 2002/3/25 - XFree86 4.2.0</A>
-<LI><A HREF="#xterm_165">Patch #165 - 2002/1/5 - XFree86 4.1.0</A>
-<LI><A HREF="#xterm_164">Patch #164 - 2001/11/13 - XFree86 4.1.0</A>
-<LI><A HREF="#xterm_163">Patch #163 - 2001/11/04 - XFree86 4.1.0</A>
-<LI><A HREF="#xterm_162">Patch #162 - 2001/10/23 - XFree86 4.1.0</A>
-<LI><A HREF="#xterm_161">Patch #161 - 2001/10/10 - XFree86 4.1.0</A>
-<LI><A HREF="#xterm_160">Patch #160 - 2001/10/7 - XFree86 4.1.0</A>
-<LI><A HREF="#xterm_159">Patch #159 - 2001/9/19 - XFree86 4.1.0</A>
-<LI><A HREF="#xterm_158">Patch #158 - 2001/9/8 - XFree86 4.1.0</A>
-<LI><A HREF="#xterm_157">Patch #157 - 2001/6/18 - XFree86 4.1.0</A>
-<LI><A HREF="#xterm_156">Patch #156 - 2001/4/28 - XFree86 4.0.3</A>
-<LI><A HREF="#xterm_155">Patch #155 - 2001/4/20 - XFree86 4.0.3</A>
-<LI><A HREF="#xterm_154">Patch #154 - 2001/4/11 - XFree86 4.0.3</A>
-<LI><A HREF="#xterm_153">Patch #153 - 2001/3/29 - XFree86 4.0.3</A>
-<LI><A HREF="#xterm_152">Patch #152 - 2001/3/13 - XFree86 4.0.2</A>
-<LI><A HREF="#xterm_151">Patch #151 - 2001/3/10 - XFree86 4.0.2</A>
-<LI><A HREF="#xterm_150">Patch #150 - 2000/12/29 - XFree86 4.0.2</A>
-<LI><A HREF="#xterm_149">Patch #149 - 2000/12/6 - XFree86 4.0.1h</A>
-<LI><A HREF="#xterm_148">Patch #148 - 2000/10/31 - XFree86 4.0.1d</A>
-<LI><A HREF="#xterm_147">Patch #147 - 2000/10/26 - XFree86 4.0.1c</A>
-<LI><A HREF="#xterm_146">Patch #146 - 2000/9/12 - XFree86 4.0.1c</A>
-<LI><A HREF="#xterm_145">Patch #145 - 2000/9/11 - XFree86 4.0.1c</A>
-<LI><A HREF="#xterm_144">Patch #144 - 2000/8/23 - XFree86 4.0.1b</A>
-<LI><A HREF="#xterm_143">Patch #143 - 2000/8/19 - XFree86 4.0.1b</A>
-<LI><A HREF="#xterm_142">Patch #142 - 2000/8/18 - XFree86 4.0.1b</A>
-<LI><A HREF="#xterm_141">Patch #141 - 2000/7/14 - XFree86 4.0.1b</A>
-<LI><A HREF="#xterm_140">Patch #140 - 2000/7/23 - XFree86 4.0.1</A>
-<LI><A HREF="#xterm_139">Patch #139 - 2000/6/17 - XFree86 4.0d</A>
-<LI><A HREF="#xterm_138">Patch #138 - 2000/6/15 - XFree86 4.0c</A>
-<LI><A HREF="#xterm_137">Patch #137 - 2000/6/10 - XFree86 4.0b</A>
-<LI><A HREF="#xterm_136">Patch #136 - 2000/6/3 - XFree86 4.0b</A>
-<LI><A HREF="#xterm_135">Patch #135 - 2000/5/29 - XFree86 4.0b</A>
-<LI><A HREF="#xterm_134">Patch #134 - 2000/5/28 - XFree86 4.0b</A>
-<LI><A HREF="#xterm_133">Patch #133 - 2000/5/2 - XFree86 4.0a</A>
-<LI><A HREF="#xterm_132">Patch #132 - 2000/4/11 - XFree86 4.0a</A>
-<LI><A HREF="#xterm_131">Patch #131 - 2000/3/3 - XFree86 3.9.18b</A>
-<LI><A HREF="#xterm_130">Patch #130 - 2000/3/1 - XFree86 3.9.18a</A>
-<LI><A HREF="#xterm_129">Patch #129 - 2000/2/26 - XFree86 3.9.18a</A>
-<LI><A HREF="#xterm_128">Patch #128 - 2000/2/17 - XFree86 3.9.18</A>
-<LI><A HREF="#xterm_127">Patch #127 - 2000/2/12 - XFree86 3.9.17e</A>
-<LI><A HREF="#xterm_126">Patch #126 - 2000/2/8 - XFree86 3.9.17c</A>
-<LI><A HREF="#xterm_125">Patch #125 - 2000/1/31 - XFree86 3.9.17c</A>
-<LI><A HREF="#xterm_124">Patch #124 - 2000/1/27 - XFree86 3.9.17b</A>
-<LI><A HREF="#xterm_123">Patch #123 - 2000/1/22 - XFree86 3.9.17a</A>
-<LI><A HREF="#xterm_122">Patch #122 - 1999/12/28 - XFree86 3.9.16f</A>
-<LI><A HREF="#xterm_121">Patch #121 - 1999/11/14 - XFree86 3.9.16c</A>
-<LI><A HREF="#xterm_120">Patch #120 - 1999/10/28 - XFree86 3.9.16c</A>
-<LI><A HREF="#xterm_119">Patch #119 - 1999/10/16 - XFree86 3.9.16c</A>
-<LI><A HREF="#xterm_118">Patch #118 - 1999/10/5 - XFree86 3.9.16b</A>
-<LI><A HREF="#xterm_117">Patch #117 - 1999/9/29 - XFree86 3.9.16b</A>
-<LI><A HREF="#xterm_116">Patch #116 - 1999/9/25 - XFree86 3.9.16a</A>
-<LI><A HREF="#xterm_115">Patch #115 - 1999/9/18 - XFree86 3.9.16a</A>
-<LI><A HREF="#xterm_114">Patch #114 - 1999/9/15 - XFree86 3.9.16</A>
-<LI><A HREF="#xterm_113">Patch #113 - 1999/8/15 - XFree86 3.9.15b</A>
-<LI><A HREF="#xterm_112">Patch #112 - 1999/7/17 - XFree86 3.9Pw</A>
-<LI><A HREF="#xterm_111">Patch #111 - 1999/7/10 - XFree86 3.9Pw</A>
-<LI><A HREF="#xterm_110">Patch #110 - 1999/6/29 - XFree86 3.9Pu</A>
-<LI><A HREF="#xterm_109">Patch #109 - 1999/6/23 - XFree86 3.9Pt</A>
-<LI><A HREF="#xterm_108">Patch #108 - 1999/6/19 - XFree86 3.9Ps</A>
-<LI><A HREF="#xterm_107">Patch #107 - 1999/6/12 - XFree86 3.9Pq</A>
-<LI><A HREF="#xterm_106">Patch #106 - 1999/6/9 - XFree86 3.9Pq</A>
-<LI><A HREF="#xterm_105">Patch #105 - 1999/6/5 - XFree86 3.9Pp</A>
-<LI><A HREF="#xterm_104">Patch #104 - 1999/5/30 - XFree86 3.9Pn</A>
-<LI><A HREF="#xterm_103">Patch #103 - 1999/5/14 - XFree86 3.9Pm</A>
-<LI><A HREF="#xterm_102">Patch #102 - 1999/5/12 - XFree86 3.9Pm</A>
-<LI><A HREF="#xterm_101">Patch #101 - 1999/5/10 - XFree86 3.9Pm</A>
-<LI><A HREF="#xterm_100">Patch #100 - 1999/5/3 - XFree86 3.9Pl</A>
-<LI><A HREF="#xterm_99">Patch #99 - 1999/5/2 - XFree86 3.9Pk</A>
-<LI><A HREF="#xterm_98">Patch #98 - 1999/4/26 - XFree86 3.9Pk</A>
-<LI><A HREF="#xterm_97">Patch #97 - 1999/4/25 - XFree86 3.9Pk</A>
-<LI><A HREF="#xterm_96">Patch #96 - 1999/4/19 - XFree86 3.9Pj</A>
-<LI><A HREF="#xterm_95">Patch #95 - 1999/4/5 - XFree86 3.9Ph</A>
-<LI><A HREF="#xterm_94">Patch #94 - 1999/3/27 - XFree86 3.9Pf</A>
-<LI><A HREF="#xterm_93">Patch #93 - 1999/3/14 - XFree86 3.9Pd</A>
-<LI><A HREF="#xterm_92">Patch #92 - 1999/2/5 - XFree86 3.9Nz</A>
-<LI><A HREF="#xterm_91">Patch #91 - 1999/1/21 - XFree86 3.9Nw</A>
-<LI><A HREF="#xterm_90">Patch #90 - 1998/12/13 - XFree86 3.9Nq</A>
-<LI><A HREF="#xterm_89">Patch #89 - 1998/11/20 - XFree86 3.9Nm</A>
-<LI><A HREF="#xterm_88">Patch #88 - 1998/10/31 - XFree86 3.9Nk and 3.3.2h</A>
-<LI><A HREF="#xterm_87">Patch #87 - 1998/10/21 - XFree86 3.9Nj and 3.3.2f</A>
-<LI><A HREF="#xterm_86">Patch #86 - 1998/10/14 - XFree86 3.9Nj and 3.3.2e</A>
-<LI><A HREF="#xterm_85">Patch #85 - 1998/10/12 - XFree86 3.9Nj and 3.3.2e</A>
-<LI><A HREF="#xterm_84">Patch #84 - 1998/10/9 - XFree86 3.9Ni and 3.3.2e</A>
-<LI><A HREF="#sync_83">Resync #83 - 1998/10/7 - XFree86 3.3.2e</A>
-<LI><A HREF="#xterm_83">Patch #83 - 1998/8/25 - XFree86 3.9Nb</A>
-<LI><A HREF="#xterm_82">Patch #82 - 1998/7/15 - XFree86 3.9Aj</A>
-<LI><A HREF="#xterm_81">Patch #81 - 1998/7/14 - XFree86 3.9Aj</A>
-<LI><A HREF="#xterm_80">Patch #80 - 1998/6/29 - XFree86 3.9Ai</A>
-<LI><A HREF="#xterm_79">Patch #79 - 1998/6/28 - XFree86 3.9Ai</A>
-<LI><A HREF="#xterm_78">Patch #78 - 1998/6/3 - XFree86 3.9Ah and 3.3.2</A>
-<LI><A HREF="#xterm_77">Patch #77 - 1998/5/26 - XFree86 3.9Ah and 3.3.2</A>
-<LI><A HREF="#xterm_76">Patch #76 - 1998/5/8 - XFree86 3.9Ah and 3.3.2</A>
-<LI><A HREF="#xterm_75">Patch #75 - 1998/5/7 - XFree86 3.9Ah and 3.3.2</A>
-<LI><A HREF="#xterm_74">Patch #74 - 1998/4/27 - XFree86 3.9Ag and 3.3.2</A>
-<LI><A HREF="#xterm_73">Patch #73 - 1998/4/25 - XFree86 3.9Ag and 3.3.2</A>
-<LI><A HREF="#xterm_72">Patch #72 - 1998/4/17 - XFree86 3.9Ag and 3.3.2</A>
-<LI><A HREF="#xterm_71">Patch #71 - 1998/4/12 - XFree86 3.9Ag and 3.3.2</A>
-<LI><A HREF="#xterm_70">Patch #70 - 1998/3/29 - XFree86 3.9Af and 3.3.2</A>
-<LI><A HREF="#xterm_69">Patch #69 - 1998/3/16 - XFree86 3.9Ad and 3.3.2</A>
-<LI><A HREF="#xterm_68">Patch #68 - 1998/3/4 - XFree86 3.9Ad and 3.3.1z</A>
-<LI><A HREF="#xterm_67">Patch #67 - 1998/2/23 - XFree86 3.9Ad and 3.3.1e</A>
-<LI><A HREF="#xterm_66">Patch #66 - 1998/2/16 - XFree86 3.9Ad and 3.3.1d</A>
-<LI><A HREF="#xterm_65">Patch #65 - 1998/2/14 - XFree86 3.9Ad and 3.3.1c</A>
-<LI><A HREF="#xterm_64">Patch #64 - 1998/2/8 - XFree86 3.9Ad</A>
-<LI><A HREF="#xterm_63">Patch #63 - 1998/2/5 - XFree86 3.9Ad</A>
-<LI><A HREF="#xterm_62">Patch #62 - 1998/1/23 - XFree86 3.9Ac</A>
-<LI><A HREF="#xterm_61">Patch #61 - 1998/1/17 - XFree86 3.9Ac</A>
-<LI><A HREF="#xterm_60">Patch #60 - 1998/1/10 - XFree86 3.9Ab</A>
-<LI><A HREF="#xterm_59">Patch #59 - 1998/1/5 - XFree86 3.9Ab</A>
-<LI><A HREF="#xterm_58">Patch #58 - 1998/1/3 - XFree86 3.9Ab</A>
-<LI><A HREF="#xterm_57">Patch #57 - 1997/12/26 - XFree86 3.9Aa</A>
-<LI><A HREF="#xterm_56">Patch #56 - 1997/11/28 - XFree86 3.9x</A>
-<LI><A HREF="#xterm_55">Patch #55 - 1997/11/25 - XFree86 3.9x</A>
-<LI><A HREF="#xterm_54">Patch #54 - 1997/10/17 - XFree86 3.9s</A>
-<LI><A HREF="#xterm_53">Patch #53 - 1997/10/12 - XFree86 3.9r</A>
-<LI><A HREF="#xterm_52">Patch #52 - 1997/9/29 - XFree86 3.9q</A>
-<LI><A HREF="#xterm_51">Patch #51 - 1997/9/15 - XFree86 3.9p</A>
-<LI><A HREF="#xterm_50">Patch #50 - 1997/8/22 - XFree86 3.9m</A>
-<LI><A HREF="#xterm_49">Patch #49 - 1997/8/10 - XFree86 3.9k</A>
-<LI><A HREF="#xterm_48">Patch #48 - 1997/7/26 - XFree86 3.9j</A>
-<LI><A HREF="#xterm_47">Patch #47 - 1997/7/13 - XFree86 3.9i</A>
-<LI><A HREF="#xterm_46">Patch #46 - 1997/7/4 - XFree86 3.9h</A>
-<LI><A HREF="#xterm_45">Patch #45 - 1997/7/2 - XFree86 3.9h</A>
-<LI><A HREF="#xterm_44">Patch #44 - 1997/6/22 - XFree86 3.9g</A>
-<LI><A HREF="#xterm_43">Patch #43 - 1997/6/10 - XFree86 3.9d</A>
-<LI><A HREF="#xterm_42">Patch #42 - 1997/6/8 - XFree86 3.2Xl</A>
-<LI><A HREF="#xterm_41">Patch #41 - 1997/5/28 - XFree86 3.2Xl</A>
-<LI><A HREF="#xterm_40">Patch #40 - 1997/5/26 - XFree86 3.2Xl</A>
-<LI><A HREF="#xterm_39">Patch #39 - 1997/5/24 - XFree86 3.2Xl</A>
-<LI><A HREF="#xterm_38">Patch #38 - 1997/5/22 - XFree86 3.2Xh</A>
-<LI><A HREF="#xterm_37">Patch #37 - 1997/5/7 - XFree86 3.9a</A>
-<LI><A HREF="#xterm_36">Patch #36 - 1997/1/16 - XFree86 3.2r</A>
-<LI><A HREF="#xterm_35">Patch #35 - 1997/1/7 - XFree86 3.2o</A>
-<LI><A HREF="#xterm_34">Patch #34 - 1997/1/5 - XFree86 3.2o</A>
-<LI><A HREF="#xterm_33">Patch #33 - 1996/11/24 - XFree86 3.2</A>
-<LI><A HREF="#xterm_32">Patch #32 - 1996/11/21 - XFree86 3.2</A>
-<LI><A HREF="#xterm_31">Patch #31 - 1996/11/16 - XFree86 3.2</A>
-<LI><A HREF="#xterm_30">Patch #30 - 1996/11/16 - XFree86 3.2</A>
-<LI><A HREF="#xterm_29">Patch #29 - 1996/9/15 - XFree86 3.1.2Gb</A>
-<LI><A HREF="#xterm_28">Patch #28 - 1996/8/31 - XFree86 3.1.2F</A>
-<LI><A HREF="#xterm_27">Patch #27 - 1996/8/21 - XFree86 3.1.2Ek</A>
-<LI><A HREF="#xterm_26">Patch #26 - 1996/8/20 - XFree86 3.1.2Ei</A>
-<LI><A HREF="#xterm_25">Patch #25 - 1996/8/18 - XFree86 3.1.2Ei</A>
-<LI><A HREF="#xterm_24">Patch #24 - 1996/8/11 - XFree86 3.1.2Ee</A>
-<LI><A HREF="#xterm_23">Patch #23 - 1996/7/31 - XFree86 3.1.2Ec</A>
-<LI><A HREF="#xterm_22">Patch #22 - 1996/7/26 - XFree86 3.1.2Ec</A>
-<LI><A HREF="#xterm_21">Patch #21 - 1996/7/24 - XFree86 3.1.2Ec</A>
-<LI><A HREF="#xterm_20">Patch #20 - 1996/7/24 - XFree86 3.1.2Ec</A>
-<LI><A HREF="#xterm_19">Patch #19 - 1996/7/21 - XFree86 3.1.2Ec</A>
-<LI><A HREF="#xterm_18">Patch #18 - 1996/7/18 - XFree86 3.1.2Ec</A>
-<LI><A HREF="#xterm_17">Patch #17 - 1996/7/2 - XFree86 3.1.2Eb</A>
-<LI><A HREF="#xterm_16">Patch #16 - 1996/6/25 - XFree86 3.1.2Ea</A>
-<LI><A HREF="#xterm_15">Patch #15 - 1996/5/29 - XFree86 3.1.2E</A>
-<LI><A HREF="#xterm_14">Patch #14 - 1996/5/12 - XFree86 3.1.2Dj</A>
-<LI><A HREF="#xterm_13">Patch #13 - 1996/4/23 - XFree86 3.1.2Df</A>
-<LI><A HREF="#xterm_12">Patch #12 - 1996/3/16 - XFree86 3.1.2Dc</A>
-<LI><A HREF="#xterm_11">Patch #11 - 1996/3/5 - XFree86 3.1.2Db</A>
-<LI><A HREF="#xterm_10">Patch #10 - 1996/2/14 - XFree86 3.1.2Cd</A>
-<LI><A HREF="#xterm_09">Patch #9 - 1996/2/10 - XFree86 3.1.2Cb</A>
-<LI><A HREF="#xterm_08">Patch #8 - 1996/2/9 - XFree86 3.1.2Cb</A>
-<LI><A HREF="#xterm_07">Patch #7 - 1996/1/28 - XFree86 3.1.2n</A>
-<LI><A HREF="#xterm_06">Patch #6 - 1996/1/8</A>
-<LI><A HREF="#xterm_05">Patch #5 - 1996/1/7</A>
-<LI><A HREF="#xterm_04">Patch #4 - 1996/1/7</A>
-<LI><A HREF="#xterm_03">Patch #3 - 1996/1/7</A>
-<LI><A HREF="#xterm_02">Patch #2 - 1996/1/7</A>
-<LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
-</UL>
-
-<H1><A NAME="xterm_207">Patch #207 - 2005/11/13 - XFree86 4.5.99.16</A></H1>
-<ul>
- <li>enable <code>lastlogx</code> support for NetBSD (was added, but
- not enabled in <a href="#xterm_186">patch #186</a>).
-
- <li>work around broken <code>lastlog.h</code> in glibc 2.3.5, which
- includes <code>utmp.h</code>.
-
- <li>revert part of recent XFree86 Imakefile change, restoring the
- <code>-I.</code> needed for <code>xmkmf</code> builds of xterm
- (XFree86 Bugzilla #1633, reports by Alexander Pohoyda and Matthieu
- Herrb).
-
- <li>change compiled-in default for <code>printerCommand</code>
- resource to an empty string. People who want to use the
- printer should be able to read the manual (Debian #311490).
-
- <li>modify <code>Imakefile</code> to work around old problems in
- <code>imake</code> configuration to allow test-builds using
- <code>xmkmf</code> on Linux. (This was not noticed since several
- releases had broken definitions relating to Xft which were harder
- to work around).
-
- <li>link <code>resize</code> for SCO platforms (Kean Johnston).
-</ul>
-
-<H1><A NAME="xterm_206">Patch #206 - 2005/11/3 - XFree86 4.5.99.15</A></H1>
-<ul>
- <li>add configure <code>--with-app-defaults</code> option to allow
- app-defaults directory for install-rules to be customized.
-
- <li>remove default translations for <code>dabbrev-expand()</code>
- due to conflicts with existing keyboard arrangements.
-
- <li>remove redundant check for <code>_NET_WM_PID</code>
- (report by Emanuele Giaquinta).
-
- <li>set icon border width explicitly to work around fvwm problem
- with active icon resizing (report by Steve Morris, analysis
- by Dominik Vogt).
-
- <li>modify resource files to make the font-resources a little
- more specific, e.g., changing "*VT100*" to "*VT100.", to
- make the distinction between VT100.font and VT100.utf8Fonts.font
- sharper, in case a packager modifies one of those.
-
- <li>expanded comments in <code>UXTerm.ad</code> regarding the
- font resources (Debian #319179).
-
- <li>add <code>--enable-narrowproto</code> configure option to
- accommodate Xorg "modular" build (report by Stephan Hermann,
- GenToo #17220).
-
- <li>fix typo in xterm.man description of <code>+wf</code> (patch
- by Tobias Stoeckmann).
-
- <li>add <code>scrollBarBorder</code> resource (request by Floyd L
- Davidson).
-
- <li>modify <code>xterm-new</code> terminfo entry to use capabilities
- for shifted scroll forward/reverse as shifted cursor up/down.
-
- <li>correct updating of checkmark for toolbar entry in popup menu
- (report by Emanuele Giaquinta).
-
- <li>fix ifdef's to allow compiling with toolbar and without tek4014
- (patch by Emanuele Giaquinta).
-
- <li>use <code>openpty()</code> for Darwin port (patch by Emanuele
- Giaquinta).
-
- <li>fix GenToo #90697 a different way, postponing the logic in
- <code>SetupToolbar</code> until the toolbar is actually needed,
- i.e., the <code>+tb</code> option is handled as expected.
-
- <li>revert fix made in <a href="#xterm_203">patch #203</a> for GenToo
- #90697. That introduced a problem with the control mouse
- click-popups, while most of the performance problems can be
- resolved by restricting the menu fonts (report by Emanuele
- Giaquinta).
-
- <li>fix a file-descriptor leak when calling <code>openpty()</code>
- (OpenBSD system/4561).
-
- <li>make a special case of resizing work like vt100: a hard reset
- also resets the 132/80 mode. The code to support this was
- present since X11R5, but not used because the corresponding
- initial state of the <code>-132</code> option was not saved.
-
- <li>restore window manager hints after <code>XtMakeResizeRequest()</code>
- calls. One instance from <a href="#xterm_205">patch #205</a>
- resulted in the window manager displaying pixels rather than
- than characters after selecting a different font size (FreeBSD
- ports/87424).
-
- <li>remove special case for Darwin in CF_XOPEN_SOURCE
- (Emanuele Giaquinta).
-
- <li>modify parsing of control sequence <code>CSI&nbsp;T</code>
- to allow scroll-down
- to be sent while mouse tracking is enabled (request by
- D Hugh Redelmeier).
-
- <li>correct termcap "me" (mode-end) string so it does not modify the
- alternate character set (report by Andrey Chernov).
-
- <li>correct size-comparison in HandleInterpret() broken in changes
- from <a href="#xterm_201">patch #201</a> to allocate input
- buffer (Debian #334317).
-
- <li>amend adjustments for scrollbar layout from
- <a href="#xterm_204">patch #204</a> to make
- this apply only to the toolbar configuration. In the non-toolbar
- configuration, the resulting scrollbar was shifted by its
- borderwidth (report by Matthieu Herrb).
-
- <li>add select-cursor-extend() action.
-
- <li>fix some broken href's in xterm.log.html, and typo in the
- INSTALL file (report/patch by David Mart&#237;nez Moreno).
-
- <li>modify <code>Imakefile</code> to use setgid mode for installing
- with Linux, OpenBSD and FreeBSD.
-
- <li>add configure --with-setuid and --with-reference options to
- allow packagers more flexibility in customizing install
- permissions.
-
- <li>generalize and make optional (configure --with-utmp-setgid)
- the change made for XFree86 Bugzilla #878 in
- <a href="#xterm_205">patch #205</a>
- (FreeBSD bug report #ports/86663).
-</ul>
-
-<H1><A NAME="xterm_205">Patch #205 - 2005/9/18 - XFree86 4.5.99.12</A></H1>
-<ul>
- <li>correct a typo in CF_FUNC_TGETENT introduced in <a
- href="#xterm_198">patch #198</a> fix for Gentoo #69926.
-
- <li>implement logic in termcap query to process multiple parameters
- as documented in ctlseqs.ms
-
- <li>fix buffer size used for termcap query, which was not long enough
- for the terminfo "colors" name (patch by Bradd W. Szonye).
-
- <li>add configure option --enable-readline-mouse, which turns on the
- experimental OPT_READLINE code (patch by Ilya Zakharevich).
-
- <li>for FreeBSD, drop setuid privileges after startup
- (XFree86 Bugzilla #878, report/patch by Alexander Pohoyda)
-
- <li>add menu entry (alt-esc) and corresponding action (alt-sends-esc)
- to toggle the <code>eightBitInput</code> resource setting.
-
- <li>generate configure script with autoconf 2.52 (patched) to use
- the feature therein which forces the script's locale to POSIX
- (Gentoo Bugzilla #105369).
-
- <li>modify computation of rows/columns on resize to avoid extending
- beyond the given limits, e.g., if resizing in response to a
- "maximize" in Gnome or KDE which do not use the window manager
- hints for this case (Debian #289123, Novell #61153).
-
- <li>modifications to work with z/OS 1.4 (Paul Giordano).
-
- <li>improve error-reporting when chown/chmod of the pseudo-terminal
- fails, e.g., if a copy of xterm which was designed to work with
- old-style pseudo-terminals is not installed setuid or setgid
- (report by Jeremy C. Reed).
-
- <li>patches from Emanuele Giaquinta:
- <ul>
- <li>ctlseqs.ms says that primary and secondary DA accept a
- nonzero parameter, which is incorrect. Also modify code
- to agree with this.
-
- <li>correct a comment in 88colres.pl
-
- <li>ctlseqs.ms says that the DEC Set/Reset control sequences for
- the backarrow key make it send DEL/BS, respectively, while it's
- the opposite.
-
- <li>update the menu entries for the metaSendsEscape, deleteIsDEL
- and numLock resources when changing them with the corresponding
- DEC Set/Reset control sequences.
- </ul>
-
- <li>fixes for configure script:
- <ul>
- <li>add special case for QNX, defining _QNX_SOURCE.
- <li>check for preprocessors which do not perform -U and -D options
- in the given order.
- <li>improve macro to determine gcc version
- <li>improve check for Intel compiler and related warning options
- </ul>
-
- <li>update config.guess, config.sub
-
- <li>improve fix from <a href="#xterm_198">patch #198</a> for
- <code>Cleanup()</code> by ensuring it is not called from the
- SIGCHLD handler (patch from OpenBSD by Todd Miller).
-
- <li>eliminate a retry for a better-matching bold font, to work around
- recent font server changes.
-
- <li>fixes for Novell #113277:
- <ul>
- <li>specify weight for wide font which may be derived from
- normal fontname.
- <li>cache the derived wide- and widebolt-fontnames.
- </ul>
-
- <li>workaround for GenToo Bugzilla #100728.
-
- <li>add menubar's border width to layout computation. Normally this
- is zero, but patterns such as <code>XTerm*borderWidth:1</code>
- would give poor layout for the toolbar configuration.
-</ul>
-
-<H1><A NAME="xterm_204">Patch #204 - 2005/8/4 - XFree86 4.5.99.9</A></H1>
-<ul>
- <li>work around quirk in shell which allowed user to "run" uxterm
- script when there was no UTF-8 locale installed by entering
- "sh -x uxterm". Also popup an xmessage to show the problem
- for users who run this via a GUI (Debian #318513).
-
- <li>disallow changes to fonts, toolbar and scrollbar when the vt100
- window is iconified, to simplify management of the active icon.
-
- <li>fixes to make <code>-geom</code> option work properly with the
- toolbar configuration (Gentoo Bugzilla #90717, #91967).
-
- <li>minor improvements to scrollbar layout: ensure that the scrollbar
- border is zero if the vt100 border is zero.
-
- <li>improve initialization due to <code>utf8</code> resource by
- loading the <code>utf8Fonts</code> resource in the case where
- <code>locale</code> resource is false. Also in this case, do
- not disable switching UTF-8 mode on/off.
-
- <li>minor optimization of TrueType font-loading, loads italic font
- only when needed.
-
- <li>correct variable used to store temporary result from lookup of bold
- font, when initializing the wide-bold-font data and no immediate
- match is found by asking for a bold variant of the wide-font. The
- result was to use overstriking rather than the actual bold font
- (Debian #318162, patch by Eugene Konev).
-
- <li>add checks to ensure vt100 widget is realized when it might be
- updated via actions handled from a tek4014-only configuration.
-</ul>
-
-<H1><A NAME="xterm_203">Patch #203 - 2005/7/6 - XFree86 4.5.99.7</A></H1>
-<ul>
- <li>modify initialization of <code>allowSendEvents</code> and
- <code>allowWindowOps</code> to prevent modification with the
- editres protocol.
-
- <li>fix compiler warning for NetBSD by including util.h in main.c
- (XFree86 Bugzilla #1596).
-
- <li>fix to build on Darwin 8.x, which no longer provides
- <code>setpgrp()</code> (patch by Min Sik Kim).
-
- <li>adapted fixes for Legend (SCO) from diffs attached to
- Freedesktop.Org Bugzilla #3180.
-
- <li>fix typo in xterm manpage description of <code>-ls</code> option
- (Freedesktop.Org Bugzilla #3543).
-
- <li>add support for interpreting the underline attribute as an italic
- font in Xft mode (patch by Chuck Blake).
-
- <li>improve initialization of toolbar so that individual pulldown
- menus are initialized on demand, as they are in the scenario
- where they are invoked as popup menus (GenToo Bugzilla #90697).
-
- <li>fix logic in <code>find_utmp</code>, which did not reset result
- in <code>getutid()</code>, causing an infinite loop in some
- conditions (report by Emil Mikulic).
-
- <li>set the <code>_NET_WM_PID</code> property (GenToo Bugzilla #91008).
-
- <li>modify ifdef's in ptyx.h and xterm_io.h to build with DragonFly
- (patch by Jeroen Ruigrok).
-
- <li>change default values for <code>minBufSize</code> and
- <code>maxBufSize</code> to 4096 and 32768 respectively so that the
- initial read request will match the value from before changes to
- use <code>sched_yield()</code>.
-
- <li>make paste of UTF-8 faster for Western character sets by checking
- range of incoming data (patch by Joe Allen).
-
- <li>adapted patch by Joe Allen to add experimental option to allow
- applications to get or set the selection data.
-
- <li>fix an off-by-one error parsing <code>-S/nn</code> option
- (Debian #311438, report/fix by Peter Chubb).
-
- <li>fix an initialization bug from
- <a href="#xterm_201">patch #201</a> that broke logging
- (report by Rodney Thayer).
-
- <li>amend change to command-line processing in
- <a href="#xterm_201">patch #201</a> to avoid
- conflict with <code>-e</code> option (report by Servatius Brandt).
-
- <li>suppress configure check for <code>_XOPEN_SOURCE</code> on
- darwin.
-
- <li>update config.guess, config.sub
-</ul>
-
-<H1><A NAME="xterm_202">Patch #202 - 2005/5/2 - XFree86 4.5.99.3</A></H1>
-<ul>
- <li>add extended shift- and control-modifier cursor keys to
- "xterm+pcfkeys" terminfo entry to correspond to ncurses 20050430
- patch.
-
- <li>fix a rare case where text would be written with the wrong colors
- because output of scrolled text would reset the colors and the
- new text would be written with the same colors (report/testcase
- by Thomas Glanzmann).
-
- <li>rename <code>$CMD</code> variable in <code>plink.sh</code> because
- it is a reserved symbol in bash 3.00.16 (report by Ted Taylor).
-
- <li>add environment variables $XTERM_SHELL and $XTERM_VERSION
- (request by Zdenek Sekera).
-
- <li>corrected workaround for background color of menubar, which gave
- a too-broad expression, coloring the background of the VT100
- widget unless overridden by another resource setting.
-
- <li>correct an error in the logic which decides when
- <code>sched_yield()</code> is run; it would occasionally hang when
- contending with other pseudo-terminal applications such as screen
- (report by Kirill Ponomarew).
-
- <li>modify initialization to decide whether to default to built-in
- <code>wcwidth()</code> versus system's version based on the
- starting locale and whether the system's version is poor quality
- (suggested by Bram Moolenaar).
-
- <li>update table for <code>mk_width()</code> from UnicodeData 4.1.0
- using Markus Kuhn's <code>uniset</code> script.
-</ul>
-
-<H1><A NAME="xterm_201">Patch #201 - 2005/4/21 - XFree86 4.5.99.2</A></H1>
-<ul>
- <li>improve resource files to show how the menubar and popup menus can
- be colored (prompted by report by Joe Wells).
-
- <li>modify parsing of OSC (and SOS, etc), strings so their contents
- are not interpreted as UTF-8. This allows non-ASCII title strings
- to be set, provided that the window manager complies (report by
- Thomas Wolff).
-
- <li>improved some of the built-in line-drawing glyphs.
-
- <li>correct color of "box" character drawn for line-drawing glyph 1
- (report by Nicolas George).
-
- <li>improve behavior when switching to UTF-8 mode after startup so
- xterm will check if the current fonts are already wide
- (ISO10646-1). If they are not, xterm will use the
- <code>utf8Fonts</code> subresource to load appropriate fonts
- (request by Bram Moolenaar).
-
- <li>modify logic for setting title-string so it applies to the current
- widget rather than the vt100 widget.
-
- <li>modify initialization for wide-bold fontname, to search for one
- if none is given (report by Michael Schroeder).
-
- <li>add resource <code>mkWidth</code> and command-line option
- <code>-mk_width</code> to control whether xterm uses the built-in
- version of wcwidth().
-
- <li>add resource settings for minimum/maximum input buffer size, and
- call to <code>sched_yield</code> to improve performance with newer
- Linux kernels (adapted from patch by Nicolas George).
-
- <li>correct computation of width for wide characters with the invisible
- attribute (report by Thomas Wolff).
-
- <li>modify interaction between <code>+u8</code> and <code>locale</code>
- resource to allow the command-line option to override the resource
- (requested by Thomas Wolff).
-
- <li>add a limit check for scrolling margins in a one-line screen,
- overlooked in fixes for
- <a href="#xterm_198">patch #198</a> (Debian #297430).
-
- <li>correct treatment of <code>iconBorderWidth</code> for resizing
- an active-icon, and its description in manpage (Debian #296592).
-
- <li>modify configure script <code>--disable-imake</code> to use the
- script's definitions anyway if it cannot detect imake (prompted
- by FreeBSD bug 77408).
-
- <li>ignore error in the I/O initialization that tries to set the
- tty to 7-bit input for the case where <code>eightBitInput</code>
- resource is false (Debian #298551).
-
- <li>modify command-processing to accept an optional parameter that
- tells xterm which shell program to use (request by Zdenek Sekera).
-
- <li>add simpler resource <code>keyboardType</code> which, when set,
- overrides the individual keyboard-type resources and eliminates
- the possibility of conflict between them.
-
- <li>add initialization for <code>scoFunctionKeys</code> resource
- (report by Rick K).
-
- <li>correct logic of <code>ReallocateBufOffsets()</code> which did not
- copy the content of the old screen buffer to the proper location,
- making a repaint clear after switching to wide-character mode
- (report by Bram Moolenaar):
-
- <li>implement the remaining pieces to make xterm allocate cells for
- wide-characters when the "UTF-8" menu entry is selected. Also,
- load the UTF-8 font when that menu entry is selected, or the escape
- sequence for UTF-8 mode is received (report by Bram Moolenaar):
-
- <li>add command-line options (<code>-tb</code>, <code>+tb</code>) and
- resource <code>toolBar</code> to allow menu/toolbar to disabled or
- enabled at startup (prompted by reports by Joe Wells).
-
- <li>correct typo in configure script's --enable-dec-locator option
- (report by Bram Moolenaar).
-</ul>
-
-<H1><A NAME="xterm_200">Patch #200 - 2005/2/6 - XFree86 4.4.99.23</A></H1>
-<ul>
- <li>increase color pairs value for xterm-256color and xterm-88color to
- match ncurses, which has an experimental option to support this.
-
- <li>modify ifdef's to make AIX use termios rather than termio; the
- struct sizes for the two were not the same.
-
- <li>improve CF_WITH_IMAKE_CFLAGS configure macro script for
- OSMAJORVERSION and OSMINORVERSION values, e.g., for Tru64 and AIX.
-
- <li>modify ifdef to define USE_POSIX_TERMIOS for Darwin (patch by Min
- Sik Kim).
-
- <li>modify find_utmp() to initialize the whole utmpx struct (except
- ut_id), since that is needed for OSF1 4.0D to prevent an infinite
- loop on exit.
-
- <li>add configure check before adding -D_POSIX_SOURCE since some
- platforms predefine it, e.g., cygwin.
-
- <li>add simplified sed expressions in CF_IMAKE_CFLAGS configure script
- macro to ensure value for PROJECTROOT is quoted on Solaris, i.e.,
- when nested <code>\(</code> and <code>\)</code> are not interpreted
- correctly.
-
- <li>correct DEC rectangle operations to reset state after completing
- the operations.
-
- <li>modify CASE_ST handling in charproc.c to ensure that the parse
- state is reset even if xterm is not currently processing an OSC or
- other string (patch by Johnny Billquist forwarded by Matthias
- Scheler, NetBSD xsrc/29003).
-
- <li>fix OS/2 build for innotek_libc (patch by David Yeo).
-
- <li>fix a regression from <a href="#xterm_197">patch #197</a> fix for
- Debian #277832 which disowned the selection if it was scrolled,
- e.g., by the user pressing return at the bottom of the screen
- (Debian #291787).
-
- <li>move the warning/exit for missing $DISPLAY into the error handler
- in case <code>-display</code> is given, and the connect fails for
- some other reason.
-</ul>
-
-<H1><A NAME="xterm_199">Patch #199 - 2005/1/17 - XFree86 4.4.99.22</A></H1>
-<ul>
- <li>instead of setting <code>$DISPLAY</code>, check for the unset
- variable and warn/exit on this condition (comments by H Merijn
- Brand and Bernhard R Link).
-
- <li>fix a typo in Imakefile from <a href="#xterm_198">patch #198</a>
- (reports/patches by Stefan Dirsch, and Mike Castle).
-</ul>
-
-<H1><A NAME="xterm_198">Patch #198 - 2005/1/13 - XFree86 4.4.99.21</A></H1>
-<ul>
- <li>set <code>$DISPLAY</code> to ":0" if it is not set.
-
- <li>add <code>utmpDisplayId</code> resource to allow users to control
- whether the display identifier (display number and screen number)
- are retained in the connection information recorded in utmp
- (discussion with Edoardo Tirtarahardja).
-
- <li>add <code>bellOnReset</code> resource to allow users to disable
- bell which sounds on hard reset since <a href="#xterm_183">patch
- #183</a> changes to DECSCL (discussion with Danek Duvall).
-
- <li>improve <code>$WINDOWID</code> for configuration with toolbar by
- making it refer to the top-level shell rather than the parent of
- the current window. For that case, the parent is a form widget,
- which does not have a name, which made the <code>$WINDOWID</code>
- not very useful as a parameter for <code>xwininfo</code>
- (suggested by Dave Bodenstab).
-
- <li>fix a typo in WhichVFont() macro
- from <a href="#xterm_197">patch #197</a> changes
- which broke the --disable-active-icon configuration
- (report by Ralf S. Engelschall).
-
- <li>improve some limit checks (Gentoo Bugzilla #75604).
-
- <li>add --disable-setuid option to configure script (Gentoo Bugzilla
- #76543).
-
- <li>add --disable-full-tgetent option to configure script, allowing one
- to ignore a termcap library in favor of ncurses/curses (Gentoo
- Bugzilla #69926).
-
- <li>modify configure script to choose useful warning options for Intel
- version 8.0 compiler.
-
- <li>update config.guess, config.sub
-
- <li>make active-icon work properly when TrueType fonts are used
- (Debian #286068).
-
- <li>correct change from <a href="#xterm_157">patch #157</a> which uses
- getlogin() to check for an alias; the storage used for the related
- getpwuid() call was overwritten by the data used for comparison
- (patch by Per Hedeland).
-
- <li>correct case of SCS for character set 0 (line-drawing) to allow it
- to be selected into GR.
-
- <li>fix a file-descriptor leak (Redhat Bugzilla #139597).
-
- <li>modify <code>creat_as()</code> to only fork if xterm is actually
- running as setuid and/or setgid. This works around a Cygwin bug
- which hangs when logging is enabled and makes xterm a little
- faster for systems using interfaces such as utempter (report by
- Al Goodman).
-
- <li>modify <code>Cleanup()</code> to avoid operations such as X calls
- that might use unsafe functions when it is called by a signal
- handler (report by Michiel Boland).
-
- <li>fix bugs in <a href="#xterm_191">patch #191</a> and in SRM changes
- from <a href="#xterm_197">patch #197</a> that
- broke DECSET 38: switch to Tek4014 emulation (report by Dave
- Bodenstab).
-
- <li>fix for manpage escapes (Marc La France).
-
- <li>improve on IRIX-specific change for Imakefile in XFree86 CVS versus
- resize linking against termcap library to reflect definitions for
- USE_TERMCAP in resize.c
-</ul>
-
-<H1><A NAME="xterm_197">Patch #197 - 2004/11/30 - XFree86 4.4.99.19</A></H1>
-<ul>
- <li>modify configure script to remove empty "-DPROJECTROOT=" definition
- which resulted unusable values for luit's default path.
-
- <li>update precompose.c based on Unicode 4.0.1
-
- <li>several minor fixes based on Intel compiler warnings.
-
- <li>change default translations so a <code>BtnDown</code> which is
- not recognized is simply ignored rather than emitting a bell.
- That makes it less obtrusive when the user tries to use a mouse
- which provides more capabilities than the X mouse driver supports,
- e.g., one with a horizontal scroll wheel (Debian #265133).
-
- <li>note in xterm's manpage that <code>translations</code> is not
- specific to xterm (Debian #278897).
-
- <li>modify uxterm script to use locale program to verify if the
- derived locale is installed (Debian #246398).
-
- <li>correct font handling for active icon when in UTF-8 mode (report
- by Paolo Liberatore).
-
- <li>make active-icon and toolbar configurations work together.
-
- <li>modify the criteria for disowning primary selection. Previously,
- this happened anytime the cursor was moved before the end of the
- selection. That would ensure that any insert/delete of char or
- line, as well as scrolling, would disown the selection. The
- new criteria change this to checking if the operations would
- modify the data which is highlighted (Debian #277832).
-
- <li>reimplement <code>DECALN</code> with functions for vt420 rectangles,
- fixes selection for this case.
-
- <li>implement vt420 rectangle operations.
-
- <li>add parsing, for debug/test of vt220 soft-fonts.
-
- <li>add menu entry, actions and escape sequence to allow
- enabling/disabling toolbars at runtime.
-
- <li>improve rendering for Xft, allow it to draw non-linedrawing
- characters such as "pi", which were drawn from internal tables
- with <a href="#xterm_180">patch #180</a>
- (Freedesktop.org Bugzilla #1260).
-
- <li>add configure option <code>--enable-mini-luit</code>, ifdef'd the
- mini-luit feature with <code>OPT_MINI_LUIT</code>.
-
- <li>add mini-luit feature, which supports Latin9 directly rather than
- via luit, provided that Unicode fonts are used (Freedesktop.org
- Bugzilla #1571, request by Stefan Dirsch, patch by Michael
- Schroeder).
-
- <li>for Linux, if IUTF8 is defined, e.g., on recent 2.6.x kernels,
- set the corresponding flag for the slave pty, to enable UTF-8
- interpretation of backspace in cooked mode (Freedesktop.org
- Bugzilla #1578, request by Stefan Dirsch).
-
- <li>modify <code>faceSize</code> resource to use a floating-point
- internal value (adapted from patch by Sam Stephenson).
-
- <li>correct handling selection of tabs over cleared space in UTF-8
- mode. In this special case, xterm represents the whitespace with
- a null rather than a space character (Debian #276447).
-
- <li>amend fix for infinite loop from <a href="#xterm_192">patch
- #192</a> to check if there is wrapped text to output in a following
- iteration (Debian #273202).
-
- <li>fixes ifdef'd with <code>__INTERIX</code> to allow building with
- Interix (Windows Services for UNIX) 3.5 using the xlibs libraries
- from freedesktop.org (patch by Min Sik Kim).
-
- <li>amend solution for Debian #252873, #260471 from <a
- href="#xterm_194">patch #194</a> by making the cursor not
- explicitly colored if only the foreground color is set, and the
- cursor is on a blank space (Debian #275473).
-
- <li>correct logic for send/receive mode (SRM) with regard to control
- characters.
-
- <li>fix masking of invisible text in wide-character mode, which did
- not work for line-drawing characters.
-
- <li>incorporate CF_XOPEN_SOURCE into configure script, replacing
- CF_GNU_SOURCE.
-</ul>
-
-<H1><A NAME="xterm_196">Patch #196 - 2004/8/15 - XFree86 4.4.99.12</A></H1>
-<ul>
- <li>add a special case to configure script to ignore NetBSD's
- <code>grantpt()</code> which was recently added (but not part of a
- release), until someone is able to ensure that xterm can use it
- (report by Min Sik Kim).
-
- <li>clear the buffer returned by getutid(). This fixes an infinite
- loop on some platforms introduced in <a href="#xterm_193">patch
- #193</a> by Debian #256468 fix (report by David Ellement).
-</ul>
-
-<H1><A NAME="xterm_195">Patch #195 - 2004/8/8 - XFree86 4.4.99.11</A></H1>
-<ul>
- <li>correct length used for blinking text, make the last column blink
- (patch by Alexander V Lukyanov).
-
- <li>start changes to make doublesize characters work with TrueType
- fonts (see <a href="#xterm_44">patch #44</a>).
-
- <li>trim leading/trailing blanks from color resources as done for
- other strings in <a href="#xterm_167">patch #167</a>.
-
- <li>fixes for <code>showBlinkAsBold</code> resource (report by
- Christoph Berg).
-</ul>
-
-<H1><A NAME="xterm_194">Patch #194 - 2004/7/27 - XFree86 4.4.99.11</A></H1>
-<ul>
- <li>change clearing operations so foreground color attribute is not
- set. Usually this is benign, but in some cases when the cursor
- color is not set explicitly, the cursor would show this color
- (Debian #252873, #260471).
-
- <li>add extra state (cursor-moved) to guard against deciding that the
- cursor did not require repainting after an indexing operation
- that leaves the cursor in the same location on the screen.
-
- <li>fix a case where a full-screen indexing operation would
- not restore the cursor-busy state.
-
- <li>fix a repainting bug introduced in
- <a href="#xterm_180">patch #180</a>: when using a font
- lacking line-drawing characters, a repaint of the screen could
- skip horizontally an extra amount after filling in the missing
- character (reports by Nicolas George, Hans de Goede, Redhat
- Bugzilla #128341).
-
- <li>rename terminfo fragment "xterm-pc-fkeys" to "xterm+pcfkeys" for
- consistency with ncurses.
-</ul>
-
-<H1><A NAME="xterm_193">Patch #193 - 2004/7/19 - XFree86 4.4.99.10</A></H1>
-<ul>
- <li>fix for wide-character selection from OpenBSD CVS
- (report/patch by Matthieu Herrb).
-
- <li>modify initialization and cleanup of utmp data to also compare
- the <code>ut_line</code> member (Debian #256468).
-
- <li>modify check on focus-change to ignore <code>FocusOut</code> events
- generated by <code>XGrabKeyboard</code>. This fixes a case where
- the text cursor would act as if focus were lost when selecting the
- "Secure Keyboard" menu option.
-
- <li>add <code>gen-pc-fkeys.pl</code> script, use that to generate
- terminfo fragment corresponding to the pc-style function keys.
-
- <li>fix a case where the checkmark by the "VT220 Keyboard" menu entry
- was not set on startup.
-
- <li>separated two methods for making the cursor blink (menu and
- escape sequence) by using the menu as the primary method and
- XOR'ing the state of the escape sequence against that.
-
- <li>modify logic for enabling blinking cursor via escape sequence as
- well as the related save/restore operations so this is only
- available if the <code>cursorBlink</code> resource was set on
- startup.
-</ul>
-
-<H1><A NAME="xterm_192">Patch #192 - 2004/7/12 - XFree86 4.4.99.9</A></H1>
-<ul>
- <li>change resource settings for color4 and color12, add some discussion
- in <code>XTerm-col.ad</code> (Debian #241717).
-
- <li>add a note in xterm manpage discussing the difference between
- alt- and meta-keys, and the way the latter is used in the
- <code>eightBitInput</code> resource.
-
- <li>add a note in xterm manpage regarding possible conflict between
- resource settings for <code>xterm.vt100.font</code> and
- <code>xterm.vt100.utf8Fonts.font</code> (Debian #254650).
-
- <li>add compile-time customization of <code>backarrowKeyIsErase</code>
- and <code>ptyInitialErase</code> default resource values
- (adapted from OpenBSD CVS).
-
- <li>change parameter of <code>FIONREAD</code> <code>ioctl()</code> call
- from long to int
- (discussion on tech-x11@netbsd.org regarding LP64 by
- John Heasley and Matthias Scheler).
-
- <li>modify configure script options for Athena widgets to work as
- expected for "--without-Xaw3d", etc., (GenToo Bugzilla #53455).
-
- <li>add case to uxterm to accommodate locales ending with "@euro",
- e.g., fr_FR.UTF-8@euro (Debian #255197, report/analysis by
- Matthieu Lagouge).
-
- <li>add special case for VT100 graphic's "box" character (discussion
- with Ben Armstrong).
-
- <li>add missing initialization for bitmap-font sizes needed to make
- fonts menu work with TrueType fonts (report by Ben Armstrong).
-
- <li>save the fontnames for bold fonts that are derived from normal
- fonts, or from the <code>boldFont</code> resource, so the same
- value is restored when switching with the VT Fonts menu (Debian
- #256086).
-
- <li>fix manpage preprocessing (Marc La France).
-
- <li>fix typo in manpage's description of character classes (Debian
- #257073).
-
- <li>modify terminfo to accommodate luit, which relies on G1 being used
- via an ISO-2022 escape sequence (Debian #254316, analysis by
- Juliusz Chroboczek).
-
- <li>modify Makefile.in rule for ctlseqs.txt to work around groff SGR
- misfeature.
-
- <li>modify <code>XTerm.ad</code> to set <code>saveLines</code> default
- to 1024 (Redhat Bugzilla #127132).
-
- <li>add a limit-check in <code>dotext()</code> to prevent infinite
- loop in a corner case of UTF-8 configuration.
-
- <li>update config.guess, config.sub
-</ul>
-
-<H1><A NAME="xterm_191">Patch #191 - 2004/6/6 - XFree86 4.4.99.7</A></H1>
-<ul>
- <li>correct options parsing for <code>-into</code> option so it
- can be combined with <code>-e</code> (Redhat Bugzilla #124518,
- report/patch by James Armstrong).
-
- <li>fix ifdef's for <code>OPT_COLOR_RES2</code>
- so that the fake resource table introduced in
- <a href="#xterm_188">patch #188</a>
- is not compiled if it is empty.
- This happened to work with gcc (report by Joel Konkle-Parker).
-
- <li>reorganize ptydata.c to use one input buffer shared between
- the VTxxx and tek4014 emulators. In the new scheme, UTF-8
- decoding is performed on characters as they are needed by the
- state machine rather than on buffers as they are read.
-
- <li>work around change in quoting of PROJECTROOT symbol when using
- configure script, from changes made in
- <a href="#xterm_187">patch #187</a> for CF_IMAKE_CFLAGS
- (GenToo Bugzilla #50982).
-</ul>
-
-<H1><A NAME="xterm_190">Patch #190 - 2004/5/25 - XFree86 4.4.99.6</A></H1>
-<ul>
- <li>correct state for values in the range 128-159 after translating
- from UTF-8: this should be ignored unless the user overrides it
- with the <code>allowC1Printable</code> resource (reported by
- Simon Strandgaard).
-
- <li>add configure-script check for nl_langinfo(CODESET), use this to
- replace check of environment variables for UTF-8.
-
- <li>change Makefile.in rules for 256colres.h and 88colres.h so they
- are only made if they do not exist. The maintainer-clean rule
- will remove these files; they require perl to be made.
-
- <li>remove check in configure script --enable-toolbar that suppressed
- this option when building with Xaw7.
-
- <li>apply fixes to Tektronix widget used for VT100 widget to make
- toolbar work with Xaw7 (XFree86 4.x).
-</ul>
-
-<H1><A NAME="xterm_189">Patch #189 - 2004/5/16 - XFree86 4.4.99.6</A></H1>
-<ul>
- <li>do not call xim_real_init() if <code>openIm</code> resource is
- false (Debian #249025).
-
- <li>minor improvements to built-in line-drawing.
-
- <li>fix a few portability issues with dynamic abbreviation support,
- i.e., did not compile on Tru64.
-
- <li>modify constraints in form used to layout toolbar, to work with
- newer Xaw in XFree86 4.x.
-</ul>
-
-<H1><A NAME="xterm_188">Patch #188 - 2004/5/12 - XFree86 4.4.99.6</A></H1>
-<ul>
- <li>correct table entry for DEL in the ground state, which marked it
- as a printable character from <a href="#xterm_171">patch #171</a>
- (report by D Hugh Redelmeier).
-
- <li>improve fix in <a href="#xterm_186">patch #186</a> for failure in
- xim_real_init() by adding a sleep.
-
- <li>fix a typo in os2main.c
- (XFree86 Bugzilla #1358, report/patch by Frank Giessler).
-
- <li>make escape sequence reporting dynamic colors consistent with the
- logic that sets it; choosing the opposite color when reverse
- video is set (XFree86 Bugzilla #1361, reported by Bradd W Szonye).
-
- <li>modify initialization of 256- and 88-colors so that colors beyond
- 16 are normally not X resources. This works around a hard-coded
- limit in Xt which breaks xterm when 256-colors and luit are both
- configured (report by Noah Friedman).
-
- <li>remove <code>ncv</code> from <code>xterm-256color</code> terminfo
- entry since it is no longer needed (report by Eli Zaretskii).
-
- <li>add "erase2" and "eol2" keywords to <code>ttyModes</code> resource,
- for recent/current FreeBSD.
-
- <li>improve ifdef's for utempter library to omit direct calls to
- <code>setutent()</code> or <code>getutent()</code> (adapted from
- patch by Christian Biere).
-
- <li>add dynamic abbreviation support like Emacs (patch by Tomasz
- Cholewo). This is ifdef'd with <code>OPT_DABBREV</code>, and
- enabled via the configure script <code>--enable-dabbrev</code>
- option.
-
- <li>fix problem responding to session management events, e.g., which
- would make logging out very slow (patch by Eddy De Greef, Debian
- #233883).
-
- <li>work around a newer bug in toolbar with XFree86 by forcing menus
- to be fully initialized at startup. In older versions of XFree86
- and X11R6, it was possible to delay initialization of the menu
- contents until it was popped up. (The longstanding bug with
- XFree86 4.x layout for toolbar still exists, though).
-
- <li>modify <code>xtermAddInput</code> to work around core dump on
- IRIX64 when initializing scrollbar translations if toolbar is
- compiled-in.
-
- <li>fix some minor conflicts in the 2-character entry names in the
- termcap file.
-</ul>
-
-<H1><A NAME="xterm_187">Patch #187 - 2004/4/27 - XFree86 4.4.99.4</A></H1>
-<ul>
- <li>change xterm version string to use <code>__vendorversion__</code>
- where that is available, and "XTerm" otherwise.
-
- <li>improve description of <code>utf8</code> resource in manpage
- (Debian #179407).
-
- <li>modify configure macros CF_IMAKE_CFLAGS and CF_ADD_CFLAGS to
- handle <code>-D</code> options that define string values, e.g.,
- for <code>XVENDORNAME</code>.
-
- <li>modify configure macro CF_IMAKE_CFLAGS to allow (if
- <code>$PATH</code> is set accordingly) to use the
- <code>xmkmf</code> script within an X build tree.
-
- <li>add missing <code>#undef OPT_SESSION_MGT</code> to xtermcfg.hin
- to make the configure script's --disable-session-mgt option work.
-
- <li>update config.guess, config.sub
-</ul>
-
-<H1><A NAME="xterm_186">Patch #186 - 2004/4/18 - XFree86 4.4.99.4</A></H1>
-<ul>
- <li>change reset on <code>DECSCL</code> to a soft-reset (appears some
- DEC manuals have errors).
-
- <li>add a section to ctlseqs.ms elaborating on normal/alternate screens.
-
- <li>modify initialization of Acolors[] so that any XtDefaultForeground
- or XtDefaultBackground values are translated as in the Tcolors[],
- to use the window's foreground/background colors. This affects
- the <code>colorBD</code> and similar resources which normally have
- no explicit color assigned.
-
- <li>modify initialization of Tektronix window so that control sequences
- setting its color before the window is popped up will apply to
- its initial colors.
-
- <li>add control sequence to set Tektronix window's text-cursor.
-
- <li>modify initialization of terminal colors, e.g., mouse pointer and
- text cursor, to treat <code>XtDefaultForeground</code> and
- <code>XtDefaultBackground</code> values as the actual foreground
- and background colors of the terminal rather than white and black
- (Debian #241717).
-
- <li>remove an incorrect comparison against <code>PTYCHARLEN</code> in
- parsing the <code>-S</code> option (report by Michael B Taylor).
-
- <li>minor restructuring of terminfo/termcap files, having noted some
- packager's customizations which caused the structure to be
- confused.
-
- <li>eliminate an isolated use of MIN/MAX in charproc.c
-
- <li>replace <code>XtExtdefaultfont</code> and
- <code>XtExtdefaultbackground</code> by their more familiar
- equivalents
- <code>XtDefaultFont</code> and
- <code>XtDefaultBackground</code>.
-
- <li>replace ifdef's using <code>SCO</code>, <code>sco</code> and
- <code>SCO325</code> with <code>__SCO__</code>
- (XFree86 Bugzilla #1301, Kean Johnston).
- But ensure that it still builds on platforms where this symbol
- is not defined.
-
- <li>add <code>scoFunctionKeys</code> resource, to match manpage.
-
- <li>update manpage discussion of menus and related resources.
-
- <li>enable utmpx support for NetBSD 1.6C and newer (patch by
- Matthias Scheler).
-
- <li>add a note in the manpage discussing xterm's treatment of open
- file-descriptors (request by Dan Shearer).
-
- <li>modify <code>Help()</code> to make "xterm -h" write to standard
- output rather than standard error (patch by Bram Moolenaar).
-
- <li>check for type of failure in xim_real_init() to avoid looping when
- the problem is an unsupported input method rather than a failure
- to connect to the XIM server. Problem was introduced in
- <a href="#xterm_175">patch #175</a> (XFree86 Bugzilla #1306).
-
- <li>modify <code>Imakefile</code> to remove dependency of "install"
- target on the <code>xterm</code> executable to make installs from
- tree without attempting to rebuild anything (David Dawes, based on
- a patch and report from Lee Olsen).
-
- <li>remove call to <code>ShowCursor</code> from
- <code>SetCursorBlink()</code> since that is redundant,
- and can cause display glitches if the cursor is already
- blinking (XFree86 Bugzilla #1158, patch/report by Andreas Schwab).
-</ul>
-
-<H1><A NAME="xterm_185">Patch #185 - 2004/3/3 - XFree86 4.4</A></H1>
-<ul>
- <li>fix tcap-query logic for the backspace key (XFree86 Bugzilla #1233,
- report/patch by Anton Kovalenko).
-
- <li>add test-scripts resize.pl and tcapquery.pl
-
- <li>add translation to ASCII of commonly-used characters that groff
- translates to Unicode, when the font in use does not provide the
- corresponding glyphs (Debian #219551).
-
- <li>modify RequestMaximize(), which performs maximize/restore via
- control sequences, to account for window-frame (patch by
- Jess Thrysoee).
-
- <li>improve pattern used in <code>uxterm</code> to check for UTF-8
- locale, e.g., for HPUX (patch by H Merijn Brand).
-
- <li>add <code>-fd</code> option and resource
- <code>faceNameDoublesize</code> to specify double-wide fonts with
- Xft (adapted from patch by Zarick Lau).
-
- <li>change a couple of resource classes from "Boolean" to specific
- values: <code>freeBoldBox</code>, <code>forceBoxChars</code>.
-
- <li>add resource <code>showMissingGlyphs</code> to outline places on
- the screen where a font lacks the corresponding glyph.
-
- <li>add resource <code>showBlinkAsBold</code> to control whether
- blinking text should be shown as bold or actual blinking text.
-
- <li>improve logic in ShowCursor() to avoid repainting the cursor when
- it is already visible, e.g., in response to the DECTCEM escape
- sequence. This also addresses XFree86 Bugzilla #1158.
-
- <li>implement blinking text, using the timer for blinking cursor.
-
- <li>modify FreeType support to allow resizing the font, in the same
- ways the window can be resized if fixed fonts are used. The
- relative font sizes are derived from the fixed font sizes.
-
- <li>add menu items and corresponding actions for switching on/off
- the UTF-8 mode and Xft (TrueType) support.
-
- <li>add logic to handle switching UTF-8 mode on/off. It worked if
- the escape sequences were flushed, but if data was mixed in with
- the same write, some were not handled properly (report by
- Nicolas George).
-
- <li>modify to allow turning UTF-8 mode on/off via escape sequence even
- if <code>-wc</code> option was not given at startup (patch by Peter
- Berg Larsen).
-
- <li>amend fix for XFree86 Bugzilla #981, adjusting for savedlines value
- (report by Tim Adye).
-
- <li>fix a typo in computing relative font size (Jess Thrysoee).
-</ul>
-
-<H1><A NAME="xterm_184">Patch #184 - 2003/12/31 - XFree86 4.3.99.903</A></H1>
-<ul>
- <li>improve configure-script checks for FreeType and related libraries,
- using <code>xft-config</code> or <code>freetype-config</code>
- scripts when available.
-
- <li>fix configure-script check for <code>SYSV</code> definition by
- ensuring whether <code>sys_errlist[]</code> is declared, and by
- modifying the test program to include <code>X11/Intrinsic.h</code>
- to check that <code>wchar_t</code> is declared consistently (report
- by H Merijn Brand).
-</ul>
-
-<H1><A NAME="xterm_183">Patch #183 - 2003/12/26 - XFree86 4.3.99.903</A></H1>
-<ul>
- <li>correct logic for configurations that may attempt to open both
- old/new-style pseudoterminals. In this case, the old-style are
- preferred. Logic was broken in <a href="#xterm_145">patch #145</a>
- (XFree86 Bugzilla #997, report/patch by Kean Johnston).
-
- <li>modify handling of <code>eightBitInput</code> resource in UTF-8
- mode to translate the value into UTF-8. Otherwise an illegal
- UTF-8 code is sent to the application (report by Bram Moolenaar).
-
- <li>modify <code>uxterm</code> script to interpret help and version
- options so xterm does not always create a window when the user
- requests this information (Debian #223926).
-
- <li>add a limit check to ScrnTstWrapped() (XFree86 Bugzilla #981).
-
- <li>modify DECSCL to perform a hard reset (RIS) as per DEC manuals.
- Extended DECSCL to accept parameters for vt4XX and vt5xx terminals.
-
- <li>correct logic for ANSI conformance level escape sequences, which
- were confused with DEC conformance level escape sequences.
-
- <li>correct state for vt52 shift-in/shift-out, which was not reset
- properly after <a href="#xterm_171">patch #171</a>.
-
- <li>correct handling of graphics characters for vt52 mode, which did
- not display line-drawing characters after G1 fix from
- <a href="#xterm_182">patch #182</a>.
-
- <li>fixes for configure script to work with current Cygwin headers
- and libraries.
-
- <li>modify <code>Imakefile</code> to put the current directory at the
- beginning of the include searchpath (David Dawes).
-</ul>
-
-<H1><A NAME="xterm_182">Patch #182 - 2003/12/2 - XFree86 4.3.99.901</A></H1>
-<ul>
- <li>correct logic for <code>metaSendsEscape</code> resource to allow
- for the meta-right key to be tested. Improve check for meta/alt
- modifiers by dropping the assumption that a keysym is associated
- with only one modifier, and by ignoring NoSymbol entries in the
- xmodmap data (XFree86 Bugzilla #924, patch by David Dawes).
-
- <li>correct wrapping logic for line-drawing characters written in
- non-UTF-8 mode of xterm build for wide-characters (XFree86 Bugzilla
- #918, report/patch by J&#x00fc;rgen Keil).
-
- <li>improve manpage description of resources, in particular the
- <code>utf8Fonts</code> class (XFree86 Bugzilla #905).
-
- <li>add definitions to compile with glibc-based GNU/Hurd, GNU/KFreeBSD
- and GNU/KNetBSD (XFree86 Bugzilla #893).
-
- <li>compiler-warning fixes (patch by Christian Biere).
-
- <li>add README.i18n (Tomohiro KUBOTA).
-
- <li>correct initialization of G1 character set mapping, which used
- line-drawing set as a result of confusion between "DEC Supplemental
- Graphic" and "DEC Special Graphic" character sets
- (see <a href="#xterm_34">patch #34</a> regarding DECSTR).
-
- <li>correct ifdef in main.c for variable utret (patch by
- Bernhard Rosenkraenzer).
-
- <li>document in xterm's manpage how to use XFree86 ":unscaled" keyword
- to suppress scaling of bold fonts.
-
- <li>when deriving bold fontname from normal fontname, use the normal
- font's average width to avoid for example selecting 7x13bold
- from an 8x13 normal font (Debian #107769).
-</ul>
-
-<H1><A NAME="xterm_181">Patch #181 - 2003/10/26 - XFree86 4.3.99.15</A></H1>
-<ul>
- <li>implement <code>boldMode</code> for wide-character logic in
- <code>drawXtermText()</code> (report by Michael Schroeder).
-
- <li>modify <code>UXTerm.ad</code> resource file to include
- "XTerm-color" rather than "XTerm", in case the latter file contains
- no color resource definitions, e.g., after <a
- href="#xterm_180">patch #180</a>.
-
- <li>add action <code>load-vt-fonts()</code> and configure option
- <code>--enable-load-vt-fonts</code> which allows users to define
- additional sets of VT-fonts which can be loaded at runtime.
-
- <li>add logic to wide-character support which attempts to load fonts
- specified by <code>utf8Fonts</code> subresources at startup. The
- subresources have the same names as the fonts which they replace,
- e.g., <code>font</code>, <code>font1</code>, etc., so that the
- ISO-10646-1 fonts can be specified in the <code>XTerm</code>
- app-defaults file (this is an adaptation of a patch by Tomohiro
- KUBOTA).
-
- <li>improve Set Font escape string handling by making the relative
- settings apply to the size of the font, as in shift keypad
- plus/minus rather than the menu index.
-
- <li>simplify parameter passing for the <code>set-vt-font</code> action
- and related code.
-
- <li>cleanup some include-ordering, moving some recently-added hardcoded
- stuff into xterm.h where it will not interfere with the configure
- script.
-
- <li>modify <code>xtermAddInput()</code> (see note on augmentation in <a
- href="#xterm_158">patch #158</a>) to use the complete set of
- default keyboard translations so that one can use shifted pageup,
- wheel mouse, etc., while the mouse pointer is over the scrollbar.
- (Debian #178812).
-
- <li>make save/restore mode controls apply to show/blink cursor states.
-
- <li>add escape sequence to start/stop blinking cursor, which allows
- implementing <code>cvvis</code> terminfo capability (request by
- Nate Bargmann).
-
- <li>add <code>indp</code> and <code>rin</code> to terminfo entry.
-
- <li>fix an out-of-bounds array reference in ScrnRefresh() for wide
- characters (report by Dan Harnett, patch by Todd Miller, bug dates
- from <a href="#xterm_141">patch #141</a>).
-</ul>
-
-<H1><A NAME="xterm_180">Patch #180 - 2003/10/12 - XFree86 4.3.99.15</A></H1>
-<ul>
- <li>several fixes for rendering using Xft (option <code>-fa</code>):
- <ul>
- <li>translate Unicode values (from UTF-8 output to xterm) for
- line-drawing to xterm's internal code, etc., since TrueType fonts
- generally do not have either set of line-drawing glyphs. xterm
- can draw these directly (report by Abigail Brady).
- <li>pass 16-bit values rather than 8-bit values to
- xtermXftDrawString() to allow for wide-characters.
- <li>remove spurious check for <code>colorBDMode</code> resource in
- logic that does bold fonts.
- <li>implement underlining.
- </ul>
-
- <li>patches by Ilya Zakharevich:
- <ul>
- <li>improve drawXtermText() by making the recursive calls
- communicate through arguments, and not through saving/restoring
- global variables.
-
- <li>make double-width characters work with <code>-u8</code> option.
-
- <li>modify lookup of double-sized fonts by checking for a match
- ignoring x/y resolution if the first check fails.
- </ul>
-
- <li>make height of TrueType fonts match ascent+descent (patch by
- Keith Packard).
-
- <li>correct configure-script check for imake $CFLAGS, which did not
- check properly if imake was not available.
-
- <li>correct install rule in Makefile.in for <code>uxterm</code>, which
- was attempting to strip the script (newsgroup posting by Fernan
- Aguero).
-
- <li>correct AF/AB strings in termcap for xterm-256color and
- xterm-88color entries (report by Josh Howard).
-
- <li>update wcwidth.c to incorporate changes from Markus Kuhn's
- 2003-05-20 (Unicode 4.0) version of that file.
-
- <li>modify <code>scroll-back</code> and <code>scroll-forw</code>
- actions to accept an adjustment value, e.g.,
- <pre>
- <code>scroll-back(1, page-2)</code></pre>
- to scroll back by 2 lines less than a page (patch by Greg
- Klanderman).
-
- <li>use color resource setting from Debian package for xterm VT100 widget,
- since the choice of blues provides better contrast.
-
- <li>remove color resources from <code>XTerm.ad</code>, leaving them
- only in <code>XTerm-col.ad</code> (prompted by Debian package for
- xterm).
-
- <li>correct configure script option --enable-pty-handshake (report by
- Paul Gilmartin).
-
- <li>add <code>visualBellDelay</code> resource to modify the length of
- time used for visual bell, for very slow displays or very fast
- computers (reports by Ingo van Lil and Doug Toppin).
-
- <li>correct logic for initializing dynamic highlight color (patch by
- Jess Thrysoee).
-
- <li>add a check for non-zero size in call to <code>XCopyArea()</code>
- to accommodate a Solaris bug.
-
- <li>correct typo in example for character classes in xterm manpage
- (Debian #198910).
-
- <li>link xterm with bind_on_load option on Darwin to work around a
- deadlock in the dynamic loader when a signal is received while
- the dynamic loader is looking up symbols (patches by Rob Braun,
- Torrey Lyons).
-
- <li>modify configure script to avoid using "head -1".
-
- <li>update config.guess, config.sub
-
- <li>modify ifdef's to work around inclusion of types FcChar32 and
- XftCharSpec with FreeType 2.0 (see <a href="#xterm_175">patch #175</a>).
-
- <li>modify the predictable version of the generated logfile name (see
- <a href="#xterm_171">patch #171</a>) to append the process-id rather
- than a random value.
-
- <li>resync with XFree86 CVS:
- <ul>
- <li>Enable SCO function keys in xterm
- <li>Make Delete key send DEL by default on SCO in xterm
- </ul>
-</ul>
-
-<H1><A NAME="xterm_179">Patch #179 - 2003/5/21 - XFree86 4.3.99.5</A></H1>
-<ul>
- <li>modify ifdef's for WTMPX_FILE to allow building on cygwin again.
-
- <li>change the default of pty-handshaking configure option (and related
- default for imake) to assume this feature is needed.
-
- <li>add ifdef's so configure option for XawPlus library works (patch
- by Pavel Roskin).
-
- <li>add <code>$(MAIN_DEFINES)</code> to the variables checked by the
- configure script that may contain information set by imake. This
- allows xterm to build/run properly using the configure script on
- IRIX64.
-
- <li>add configure check for ".exe" suffix on cygwin.
-</ul>
-
-<H1><A NAME="xterm_178">Patch #178 - 2003/5/18 - XFree86 4.3.99.5</A></H1>
-<ul>
- <li>modify default for configure <code>--enable-pty-handshake</code>
- option to enable it for Solaris (report by Nelson Beebe).
-
- <li>modify <code>in_put()</code> function to call
- <code>PreeditPosition()</code> only when the cursor's position has
- changed. This addresses report by Stefan Baums of high CPU usage
- while xterm with chinput are running in the background (patch by
- Yong Li).
-
- <li>improved explanation of <code>-ls</code> conflict with
- <code>-e</code> option in xterm manpage (adapted from comments by
- Henning Makholm).
-
- <li>correct comment in terminfo file regarding modifier used for
- <code>kDC</code> (Debian #189764, report by Henning Makholm).
-
- <li>correct/extend some of the keypad description in ctlseqs.ms
- (report by Henning Makholm).
-
- <li>correct keypad-mapping table in input.c so <code>XK_KP_Equal</code>
- works (report by Henning Makholm).
-
- <li>modified to work with CJK double-width (bi-width/monospace) fonts.
- They're similar to Roman Czbora and David Starner's gnuunifonts in
- that Latin letters and numbers have all the same width which is
- exactly the half of the width of East Asian characters. (patch by
- Jungshik Shin &lt;jshin@mailaps.org&gt;).
-
- <li>add configure option <code>--enable-broken-osc</code> and resource
- <code>brokenLinuxOSC</code> to accommodate scripts which do not
- distinguish between running in the Linux console and running in X.
- Linux console recognizes malformed control strings which start
- with an <code>OSC</code>, but are fixed-length, with no terminator.
-
- <li>add configure option <code>--enable-broken-st</code> and resource
- <code>brokenStringTerm</code> to allow
- user to revert one part of the parsing table corrections from
- <a href="#xterm_171">patch #171</a>. (reports by
- Matthias Scheler and
- Kirill Ponomarew indicate that someone's
- network firmware sends an <code>&lt;escape&gt;X</code>).
-
- <li>modify configure <code>--disable-imake</code> to provide values
- for <code>OSMAJORVERSION</code>, <code>OSMINORVERSION</code>,
- <code>FUNCPROTO</code> and <code>NARROWPROTO</code> (report by
- Heiko Schlichting).
-
- <li>correct <code>vttests/16colors.sh</code>, which omitted the
- <code>$SUF</code> variable in output strings (patch by Paul
- Gilmartin).
-
- <li>modify shell scripts in <code>vttests</code> directory to attempt
- to use named signals in the <code>trap</code> statement, making
- this portable to OS/390 (report by Paul Gilmartin). Tested on
- SunOS 4.1.4, which implements only numbers.
-</ul>
-
-<H1><A NAME="xterm_177">Patch #177 - 2003/3/23 - XFree86 4.3.0</A></H1>
-<ul>
- <li>fix definition of <code>USE_HANDSHAKE</code>, must be numeric
- (reported by Jens Schleusener).
-</ul>
-
-<H1><A NAME="xterm_176">Patch #176 - 2003/3/22 - XFree86 4.3.0</A></H1>
-<ul>
- <li>add configure option <code>--enable-pty-handshake</code> to allow
- one to compile-in support for the pty handshaking logic, and
- resource <code>ptyHandshake</code> to enable or disable it
- (suggested by Ian Collier).
-
- <li>restore <code>USE_HANDSHAKE</code> ifdef removed in
- <a href="#xterm_159">patch #159</a>
- to address Debian #39964.
-
- <li>move ifdef's for ttysize/winsize into xterm_io.h
-
- <li>simplify loop on <code>tgetent</code>, check if the successive
- entries in the lookup table are the same. That makes xterm do
- one less lookup if there is no "xterm" entry in the termcap file
- (report by Derek Martin).
-
- <li>correct manpage discussion of <code>$TERM</code> and
- <code>$TERMCAP</code> variables, which omitted the Tektronix
- emulation and a note of the final "dumb" fallback.
-
- <li>broaden ifdef for <code>XRegisterIMInstantiateCallback()</code>
- from <a href="#xterm_175">patch #175</a> (XIM fix) to exclude
- non-XFree86 (report by Nelson Beebe indicates this breaks for
- Solaris, IRIX and OSF/1).
-
- <li>correct resource-size for <code>iconFont</code> (this was added
- by X11R6.3).
-
- <li>improve configure check for XKB bell extension, to work around
- inconsistent implementation of this feature (reports by Nelson
- Beebe, Kriston Rehberg and David Ellement).
-
- <li>modify configure-check for <code>tty</code> group to be less
- strict in batch mode (report by Nelson Beebe).
-
- <li>modify to allow building with g++, to use its compiler warnings
- (suggested by Nelson Beebe).
-
- <li>modify <code>dec2ucs[]</code> table to reflect newer codes
- available for scanlines 1, 3, 7, 9 (report by Michael Schroeder).
-
- <li>add configure option for XawPlus library.
-</ul>
-
-<H1><A NAME="xterm_175">Patch #175 - 2003/3/9 - XFree86 4.3.0</A></H1>
-<ul>
- <li>fix a SIGSEGV which could occur if xterm is connecting to XIM
- server, and the XIM server is destroyed (patch by Nam SungHyun).
-
- <li>modify to use built-in line-drawing characters for Xft fonts
- (patch by Andrew Tipton).
-
- <li>make menu reflect the state of the <code>tekInhibit</code>
- resource.
-
- <li>make <code>signalInhibit</code> resource work, i.e., disable the
- menu entries that would send signals to, or exit xterm. This was
- probably broken in X11R5 when logging was disabled (report by Sven
- Mascheck).
-
- <li>changed classes of <code>colorBDMode</code> and similar
- resources that override colors when a video attribute is
- set to <code>ColorAttrMode</code>, to make them distinct
- from <code>ColorMode</code>. This avoids an unexpected
- rendering of reverse video, for example (report by Paul Fox).
-
- <li>changed class of <code>veryBoldColors</code> to
- <code>VeryBoldColors</code>, since
- <code>ColorMode</code> is associated with boolean resources.
-
- <li>add option <code>-k8</code> and resource
- <code>allowC1Printable</code> to allow users of non-VTxxx
- character sets such as KOI-8 to treat the C1 control area
- (character codes 128-159) as printable rather than control
- characters.
-
- <li>add a null-pointer check for return-value of <code>ptsname()</code>
- in HPUX-specific code (report by David Ellement).
-
- <li>revise the ifdef's used for <code>XKB</code> bell support. The
- code was using a nonstandard call <code>XkbStdBell()</code>.
- Changed to use <code>XkbBell()</code> (based on patch by
- &lt;derek@signalmarketing.com&gt;).
-
- <li>add a null-pointer check in <code>xtermLoadFont()</code> in case
- there is no wide-bold font (Nam SungHyun).
-
- <li>change <code>Makefile.in</code> to use autoconf's
- <code>bindir</code>, <code>libdir</code> and <code>mandir</code>
- variables (report by Nam SungHyun).
-
- <li>add <code>le</code> to termcap <code>xterm-basic</code> entry.
- Though missing from older termcaps for xterm, some applications
- check for it (report by Matthias Buelow).
-
- <li>modify <code>uxterm</code> script to strip modifiers such as "@euro"
- from the locale setting before adding ".UTF-8" (Debian #179929).
-
- <li>modify the remaining places where tek4014 emulation uses
- <code>XDefineCursor()</code>, to make it work as originally
- implemented, e.g., when switching back to alpha mode.
- Added test-screen in vttest to test this feature properly.
-</ul>
-
-<H1><A NAME="xterm_174">Patch #174 - 2003/2/25 - XFree86 4.2.99.903</A></H1>
-<ul>
- <li>work-around for XFree86 bug which made <code>XDefineCursor()</code>
- on a shell-window no longer work. The tek4014 emulation used this.
- Use the next lower window (report by Karl Rudolf Bauchspiess).
-
- <li>add a resource setting <code>allowWindowOps</code> to control
- whether the extended window operations should be allowed, e.g.,
- resize, iconify, report window attributes. This is to accommodate
- people who are not capable of using a pager to view log-files.
-</ul>
-
-<H1><A NAME="xterm_173">Patch #173 - 2003/2/6 - XFree86 4.2.99.902</A></H1>
-<ul>
- <li>reset mouse mode to normal on a full reset. This does not apply
- to mouse hilite tracking mode, of course (see ctlseqs.ms).
-
- <li>add a time-delay at the point where mouse hilite tracking mode
- choses to not handle X events, to avoid runaway CPU usage
- (report by D Hugh Redelmeier).
-
- <li>check for illegal character in DECUDK string, quit if detected.
-</ul>
-
-<H1><A NAME="xterm_172">Patch #172 - 2002/12/27 - XFree86 4.2.99.3</A></H1>
-<ul>
- <li>fixes to make repainting of 256-color example work properly
- (reports by Abigail Brady and Scott A Crosby).
- <ul>
- <li>set flag in <code>AllocateAnsiColor()</code> to ensure the color
- is allocated once only.
- <li>fix check in <code>ScrnRefresh</code>, which was comparing
- background colors only if the ANSI foreground colors also were set.
- </ul>
-
- <li>merge <code>Error()</code> calls and some <code>exit()</code> calls
- into <code>SysError()</code>, and change that to add the brief
- explanation for each error code which is provided in the manpage.
- Change a few <code>SysError()</code>, calls to avoid using code 1, to
- avoid confusion with exit status from places that do not use
- <code>SysError()</code>.
-
- <li>simplify logic used to open a debug logfile as the standard error.
-
- <li>modify the <code>-e</code> option so that if it fails, xterm will
- check if only one argument follows, e.g., it was quoted, and then
- retry using <code>sh&nbsp;-c</code>.
-
- <li>modify parsing of DECUDK string parameter to allow a comma between
- pairs of hexadecimal digits (Ray Neuman &lt;raymond@one.com.au&gt;
- reports that "real" terminals accept this; perhaps they simply
- ignore unexpected characters).
-
- <li>fix a few problems with the <code>$TERMCAP</code> string generated
- by <code>resize</code>:
- <ul>
- <li>for Bourne shell, add an <code>export</code> command.
- This was missing as far back as X11R5.
- <li>escape exclamation marks, used in xterm's reset string.
- <li>translate literal <code>\177\</code> to "^?".
- </ul>
-
- <li>improve configure check for <code>tgetent()</code> to work when
- <code>$TERMCAP</code> has been set to a specific entry.
-
- <li>modify <code>minstall.sh</code> to use "%" rather than "@",
- to avoid problems with AFS (report by Zdenek Sekera).
-
- <li>list fatal error codes from <code>error.h</code> in the manpage,
- remove unused codes in <code>error.h</code>.
-
- <li>use more explicit wording for manpage list of color resources,
- since at least one user confused the generic names such as "black"
- with the names in rgb.txt (the latter are now used).
-
- <li>minor fix to description of 1003 mouse mode in ctlseqs.ms
- (Larry Riedel).
-</ul>
-
-<H1><A NAME="xterm_171">Patch #171 - 2002/12/12 - XFree86 4.2.99.3</A></H1>
-<ul>
- <li>modify parser tables to improve detection of malformed control
- sequences, making xterm behave more like a real DEC terminal
- (patch by Paul Williams).
-
- <li>update comment in <code>input.c</code> to document
- <code>Meta</code> as a modifier for escape sequences (patch by D
- Roland Walker).
-
- <li>add ifdef'd code for logging option which adds the hostname and a
- timestamp to the generated logfile name. The ifdef's are setup
- with the configure script (patch by Nelson Beebe).
-
- <li>remove <code>xevents()</code> call from the end of
- <code>BlinkCursor()</code>, to fix an occasional problem
- which caused xterm to pause until a key was pressed.
- The reason for this was that there was no check to ensure that
- there really were events for <code>xevents()</code> to process.
- (patch by Semen A Ustimenko &lt;semenu@FreeBSD.org&gt;).
-
- <li>remove unused mode-params from <code>open()</code> calls that do
- not create a file.
-
- <li>modify configure script to put new items first on
- <code>$CPPFLAGS</code> and <code>$CFLAGS</code> to avoid conflict
- with environment's <em>-I</em> and <em>-D</em> options.
-
- <li>update config.guess, config.sub
-
- <li>resync with XFree86 CVS:
- <ul>
- <li>fix va_args glitches for xterm/libfontconfig: 0 == (void*)0
- isn't true for all platforms (Egbert Eich).
- <li>initialise ProgramName in xterm's main before referencing it
- (#5473, Peter Valchev).
- <li>some cleanup of Imakefile ifdef's (Marc La France).
- </ul>
-</ul>
-
-<H1><A NAME="xterm_170">Patch #170 - 2002/10/13 - XFree86 4.2.1</A></H1>
-<ul>
- <li>correct an off-by-one allocating data for sorted help message.
-
- <li>modify configure script to check for Xpm library, on which XFree86
- Xaw library depends.
-
- <li>update config.guess, config.sub
-</ul>
-
-<H1><A NAME="xterm_169">Patch #169 - 2002/10/5 - XFree86 4.2.1</A></H1>
-<ul>
- <li>modify wording of some options in help message to make them use
- <code>-/+</code> consistently with respect to "on/off" or "off/on".
-
- <li>sort options list which is displayed in help- and syntax-messages
- at runtime to simplify maintenance.
-
- <li>remove support for Amoeba and Minix (Juliusz Chroboczek noted it
- was removed from XFree86 server; there have been no users since
- 1996).
-
- <li>add configure script option <code>--disable-session-mgt</code>
- to control whether the session management code should be compiled-in
- (request by H Merijn Brand).
-
- <li>ifdef'd the session-management changes with
- <code>OPT_SESSION_MGT</code>, to accommodate X11R5 which predates
- the related definitions.
-
- <li>fix <code>decode_keyvalue()</code>, which did not properly parse
- multiple settings as needed for the <code>ttyModes</code> resource,
- since it did not skip over the parsed data.
-
- <li>fix an option-parsing conflict between <code>-class</code> and
- <code>-cjk_width</code> (Nam SungHyun)
-
- <li>add a missing null in <code>XtVaSetValues()</code> call used in
- <code>Cleanup()</code> (Nam SungHyun)
-</ul>
-
-<H1><A NAME="xterm_168">Patch #168 - 2002/9/29 - XFree86 4.2.1</A></H1>
-<ul>
- <li>improve data reported for control sequence that requests window
- position by taking into account the window decorations, e.g.,
- border and title (patch by Jess Thrysoee &lt;jess@thrysoee.dk&gt;).
-
- <li>add <code>-cjk_width</code> and corresponding resource
- <code>cjkWidth</code> (patch by Jungshik Shin
- &lt;jshin@mailaps.org&gt;).
-
- <li>add <code>-into</code> option, for embedding xterm in a Tcl/Tk
- application (patch by George Peter Staplin &lt;georgeps@xmission.com&gt;).
-
- <li>add simple session management (XSM) client capabilities to xterm.
- So a session manager such as, e.g., xsm, should be able to respawn or
- kill xterms without the help of an SM proxy (like smproxy), which is
- a hack and almost always buggy (patch by David Madore).
-
- <li>fix conflict between ifdef's for <code>OPT_DEC_LOCATOR</code> and
- <code>OPT_READLINE</code> in button.c (reported by Ilya Zakharevich).
-
- <li>fix for inconsistent use of <code>struct utmp</code> versus
- <code>struct utmpx</code> introduced in <a href="#xterm_167">patch #167</a>
- (patches by Paul Gilmartin, Marc La France).
-
- <li>modify logic for <code>metaSendsEscape</code> to allow it to work
- in a setup where the Meta-key is not recognized as a modifier by
- the key-translations logic (from a discussion of eightBitInput
- with H.J.Lu, however Vincent Lefevre reported this in January).
-
- <li>use null pointer values consistently, rather than literal "0", for
- ending variable-length argument lists, e.g., for
- <code>execlp()</code> (based on patch by Matthieu Herrb).
-
- <li>correct logic of <code>ChangeAnsiColorRequest()</code>, which would
- do a screen repaint after replying to a request for information.
-
- <li>improve scripts in vttests to work with systems whose shells support
- <code>echo -n</code> and have, as does Debian, an unrelated
- <code>print</code> utility.
-
- <li>add vttests/acolors.sh to demonstrate OSC 4, which queries or
- sets ANSI colors.
-
- <li>fixes for ctlseqs.ms (Pavel Roskin, Ilya Zakharevich).
-
- <li>typos in xterm manpage (Jens Schweikhardt)
-
- <li>remove a redundant GCC_UNUSED from InitPopup() (Nam SungHyun)
-</ul>
-
-<H1><A NAME="xterm_167">Patch #167 - 2002/8/24 - XFree86 4.2.0</A></H1>
-<ul>
- <li>correct ifdef's for <code>USE_TERMCAP</code> to match cygwin
- configuration.
-
- <li>fix several places in ctlseqs.ms which had no boxes around the
- literal text (report by Ilya Zakharevich).
-
- <li>integrated patch from Ilya Zakharevich to extend mouse support for
- readline (ifdef'd with OPT_READLINE).
-
- <li>modify terminfo description to match default for
- <code>modifyCursorKeys</code> resource.
-
- <li>add <code>modifyCursorKeys</code> resource to control how the
- shift- and similar modifiers are used to make a cursor escape
- sequence. The default makes a modified escape sequence always start
- with CSI and puts the modifier as the second parameter, to avoid
- confusing applications that would interpret the first parameter as a
- repeat count. The original behavior can be obtained by setting the
- resource to 0 (from newsgroup discussion with Stephen J Turnbull
- and Jeffrey Altman).
-
- <li>correct missing initializations for <code>appdefaultCursor</code>
- and <code>appdefaultKeypad</code> resources.
-
- <li>add configure option <code>--enable-luit</code> and ifdef'd the
- luit-related code with OPT_LUIT_PROG.
-
- <li>integrate patch by Tomohiro KUBOTA from
- http://www.xfree86.org/pipermail/i18n/2002-July/003378.html which
- modifies xterm to invoke luit.
-
- <li>update wcwidth.c to match Markus Kuhn's 2002-05-18 version.
-
- <li>correct limit-checking in <code>ComputeSelect()</code> to handle
- selections that extend off the visible area; rather
- than modify the parameters to <code>TrackText()</code>, use
- <code>ScrollSelection()</code> to update the highlighting limits.
- (reported by Yegappan Lakshmanan and Nelson Beebe,
- patch by Alexander V Lukyanov).
-
- <li>correct manpage description of <code>tiXtraScroll</code> resource
- (reported by Tony Finch).
-
- <li>changes from OpenBSD:
- <ul>
- <li>Make xterm setgid utmp to be able to update utmp even
- with root privileges revoked.
- <li>If not updating utmp, revoke group privileges totally too.
- </ul>
-
- <li>changes from NetBSD:
- <ul>
- <li>Check that the return value from ttyslot() is greater than 0
- before writing the utmp file.
- Fixes w's "w: Stale utmp entry: &lt;user&gt; &lt;tty&gt; &lt;pty&gt;" errors.
- <li>Use openpty() to deal with new pty naming scheme.
- </ul>
-
- <li>add <code>print-redir</code> action and menu entry to allow user to
- switch terminal in/out of printer controller mode. It appears from
- the manual that a real vt220 would not switch back to normal mode, so
- another mechanism is used (addresses Debian #37517).
-
- <li>check if <code>printerCommand</code> resource string is empty, use
- this to allow user to disable printer function.
-
- <li>trim trailing blanks from resource strings.
-
- <li>check return value from <code>ptsname()</code>, which may return
- null for example if someone has changed the permissions of /dev/pts
- to zero (Debian #121899).
-
- <li>modify OS/2 version to use <code>__UNIXOS2__</code> definition
- rather than <code>__EMX__</code>, related cleanup (patch by Holger
- Veit).
-
- <li>used modified indent 2.0
- (patch <a href="ftp://invisible-island.net/gnu-patches/">20020428</a>)
- to reformat most of the C source files, to simplify maintenance.
-
- <li>fix a couple of places where there were leading tabs on
- symbol-definition lines in Imakefile (Marc La France from report by
- Tony Finch)
-
- <li>add imake variable (TraceXTerm) to allow building debug version
- (Egbert Eich).
-</ul>
-
-<H1><A NAME="xterm_166">Patch #166 - 2002/03/25 - XFree86 4.2.0</A></H1>
-<ul>
- <li>correct a bug in selection: double clicking on a word which
- was partly scrolled off the screen may select that text (report
- by Vincent Lefevre &lt;vincent@vinc17.org&gt;).
-
- <li>implement <code>veryBoldColors</code> resource to control whether
- the corresponding video attribute such as <code>bold</code> is
- displayed when using <code>colorBDMode</code>, etc. (request by Josh
- Howard &lt;jrh@vicor-nb.com&gt;).
-
- <li>define escape sequences for function keys F21-F35 (patch by Steve Wall).
-
- <li>change the colors for the 256-color model, making them less skewed
- toward black (patch by Steve Wall).
-
- <li>add <code>vt100Graphics</code> resource
- (see <a href="#xterm_115">patch #115</a>,
- based on discussion with Glenn Maynard).
-
- <li>ifdef'd Xaw/Xaw3d/neXtaw includes separately to avoid potential
- incompatibilities between these flavors of Athena widgets.
-
- <li>add configure check for XFree86 4.x Xaw library, whose geometry
- management is broken, to avoid trying to use it for toolbar
- configuration.
-
- <li>updates to configure script from vile and lynx to allow
- configure.in to be compiled with autoconf 2.5x
-
- <li>add a check for null pointer return by <code>ptsname()</code>
- (newsgroup posting from Mike Silva &lt;mikesilva@lucent.com&gt;).
-
- <li>fill in a few details needed to allow UTF-8 mode to switch on/off
- after startup. This requires that <code>wideChars</code> resource be
- set. (based on comments in 4 Aug 2001 by Alexey Marinichev
- &lt;lyosha@lyosha.2y.net&gt;).
-
- <li>remove duplicate install rules that make directories, e.g., so installing
- manpage will not create app-defaults directory.
-
- <li>add comment in in <code>do_osc()</code>, reserving cases 30 and 31
- for for Konsole (request by Stephan Binner
- &lt;Stephan.Binner@gmx.de&gt;).
-
- <li>fixes for ctlseqs.ms and xterm.man
- (patch by Werner LEMBERG &lt;wl@gnu.org&gt;).
-
- <li>add check for monochrome display, disabling colorMode in that
- case (fixes Debian #134130).
-
- <li>resync with XFree86 CVS:
- <ul>
- <li>Fix some xterm build warnings on *BSD (David Dawes).
- <li>Only use SA_RESTART in xterm when it's available (Frank Liu).
- <li>Fix incorrect code in signal handlers in most of the clients,
- xterm and xdm not done yet (Matthieu Herrb).
- </ul>
-</ul>
-
-<H1><A NAME="xterm_165">Patch #165 - 2002/01/05 - XFree86 4.1.0</A></H1>
-<ul>
- <li>modify <code>uxterm</code> script to strip encoding part from
- environment variable before adding ".UTF-8" (based on Debian
- #125947, but using a more portable solution).
-
- <li>add an assignment statement in VTInitialize() to make
- <code>awaitInput</code> resource work.
-
- <li>use new macros init_Bres(), etc., in VTInitialize() to add trace of
- the initialization of resources.
-
- <li>modify checks for $LC_ALL, related environment variables to ensure
- the resulting strings are nonempty (report by Markus Kuhn).
-
- <li>add an ifdef in charproc.c for num_ptrs variable in case all
- configure options are disabled.
-
- <li>modify definition of getXtermBackground() to avoid negative array
- index warning on Tru64 (report by Jeremie Petit).
-
- <li>improve fix from patch #165 (still Debian #117184, report by Matt
- Zimmerman &lt;mdz@debian.org&gt;)
-
- <li>correct install rule for uxterm in Makefile.in, to handle the
- case where building in a different directory than xterm's source
- (patch by Paul Gilmartin).
-
- <li>documented ANSI.SYS-style cursor save/restore escape sequences
- in ctlseqs.ms, which are in xterm since X11R5.
-
- <li>correct two entries in the default charClass table, which did not
- follow the manpage comment about the character number corresponding
- to the class (patch by Marc Bevand &lt;bevand_m@epita.fr&gt;).
-
- <li>fix a couple of typos in comments in the app-defaults files
- (David Krause &lt;xfree86@davidkrause.com&gt;).
-
- <li>resync with XFree86 CVS:
- <ul>
- <li>update language of copyrights in some files to reflect the fact
- that they were reassigned from X Consortium to The Open Group in
- 1998. Note that this xterm source is derived from the 1996
- version from X Consortium, does not incorporate changes made by X
- Consortium or The Open Group after that date, hence we do not add
- The Open Group's 1998 copyright date to related files.
-
- <li>save/restore <code>errno</code> in signal catcher (Matthieu Herrb).
-
- <li>modify UXTerm.ad's font5 resource so that xterm can display double
- width characters using a font distributed with XFree86 (Tomohiro KUBOTA).
- </ul>
-</ul>
-
-<H1><A NAME="xterm_164">Patch #163 - 2001/11/13 - XFree86 4.1.0</A></H1>
-<ul>
- <li>correct a case where <code>ptyInitialErase</code> and
- <code>backarrowKeyIsErase</code> resources combine to set
- <code>DECBKM</code> mode, but a <code>reset</code> command would not
- reset xterm to that state, making the erase character revert to ^H
- (Debian #117184)
-</ul>
-
-<H1><A NAME="xterm_163">Patch #163 - 2001/11/04 - XFree86 4.1.0</A></H1>
-<ul>
- <li>correct ifdef's for <code>__QNX__</code> and
- <code>USE_SYSV_PGRP</code> in main.c call to <code>tcsetpgrp</code>,
- which broke bash behavior around <a href="#xterm_140">patch #140</a>
- (report/patch by Frank Liu &lt;fliu@mail.vipstage.com&gt;).
-
- <li>modify trace.c to fix missing definition of GCC_UNUSED for
- compilers other than gcc when configured for trace code (report/patch
- by Paul Gilmartin).
-
- <li>change format in TraceOptions() to use long rather than int, since
- the latter could lose precision on 64-bit machines (report/patch by
- Nelson Beebe).
-
- <li>modify xterm manual page and minstall.sh to allow imake rules
- to define location of app-defaults directory (Debian #87611).
-
- <li>review/update list of conflicting preprocesor symbols to remove
- from $CPPFLAGS at the end of the configure script. In particular,
- this allows one to configure xterm without the utempter library on
- Redhat 7.1 (report/patch by Adam Sulmicki).
-</ul>
-
-<H1><A NAME="xterm_162">Patch #162 - 2001/10/23 - XFree86 4.1.0</A></H1>
-<ul>
- <li>correct logic that processes <code>-class</code> option, so that
- a following <code>-e</code> option is handled (Debian #116297).
-
- <li>improve options-decoding to allow <code>-version</code> and
- <code>-help</code> options to be combined (Debian #110226).
-
- <li>add a 10 millisecond delay in event loop when processing
- <code>-hold</code> option, to avoid using too much CPU time
- (Debian #116213).
-
- <li>prefix final program execution in <code>uxterm</code> with "exec"
- to avoid a useless shell hanging around (Christian Weisgerber).
-</ul>
-
-<H1><A NAME="xterm_161">Patch #161 - 2001/10/10 - XFree86 4.1.0</A></H1>
-<ul>
- <li>modify logic that resets keypad application mode to avoid doing
- this if there is no modifier associated with the Num_Lock keysym
- (report by John E Davis &lt;davis@space.mit.edu&gt; and Alan W Irwin
- &lt;irwin@beluga.phys.uvic.ca&gt;).
-
- <li>add built-in translation for Control/KP_Separator to KP_Subtract,
- to accommodate users who wish to use xmodmap to reassign the top
- row of the numeric keypad.
-
- <li>correct Imakefile install-rule for <code>uxname</code> script
- (reported by Nam SungHyun &lt;namsh@lge.com&gt;).
-
- <li>resync with XFree86 CVS: correct typo in <code>&lt;ncurses/term.h&gt;</code>
- ifdef.
-</ul>
-
-<H1><A NAME="xterm_160">Patch #160 - 2001/10/7 - XFree86 4.1.0</A></H1>
-<ul>
- <li>modify logic in main.c
- (see <a href="#xterm_145">patch #145</a>) to avoid generating the
- same identifier, for example, for /dev/tty1 and /dev/pts/1, which
- is used to denote an entry in the utmp file (Debian bug report
- #84676), A similar fix was also sent by Jerome Borsboom
- &lt;borsboom@westbrabant.net&gt; in May, but I overlooked it when
- reviewing bug reports.
-
- <li>add configure check for <code>&lt;ncurses/term.h&gt;</code> to get
- rid of hardcoded <code>__CYGWIN__</code> ifdef in resize.c
- <p>
- NOTE: The CYGWIN port should not be linking <code>resize</code>
- with ncurses. It appears that the only reason it is, is because
- both the ncurses and termcap ports on that platform are badly
- misconfigured (essential pieces have been removed, etc). Checking
- for <code>&lt;ncurses/term.h&gt;</code> does not hurt anything,
- since there are some correct installations that are set up that
- way.
-
- <li>add a sample <code>uxterm</code> script, which uses the
- <code>UXTerm</code> application defaults for UTF-8 environments.
-
- <li>undo change to xterm application defaults, since this introduced an
- unnecessary incompatibility. The intended functionality was
- already addressed by the <a href="#xterm_141">UXTerm</a>
- app-defaults file.
-
- <li>resync with XFree86 CVS:
- <ul>
- <li>Modified xterm app default to use LFD fontnames instead of old type
- (Michael Schroeder).
- <li>Fix xterm when XIM is disabled - caused a segfault
- (Tomohiro Kubota).
- </ul>
-</ul>
-
-<H1><A NAME="xterm_159">Patch #159 - 2001/9/19 - XFree86 4.1.0</A></H1>
-<ul>
- <li>remove an ifdef for <code>USE_HANDSHAKE</code> added in patch
- #158 from the second <code>TIOCSSIZE</code> ioctl call in the
- initialization code. Paul Gilmartin reports that for Solaris 2.6
- (sparc), stty does not show that xterm sets rows and columns unless
- the second ioctl is executed.
-
- <li>correct treatment of empty parameter list for some OSC strings
- (report by Sami Farin &lt;sfarin@ratol.fi&gt;).
-</ul>
-
-<H1><A NAME="xterm_158">Patch #158 - 2001/9/8 - XFree86 4.1.0</A></H1>
-<ul>
- <li>augment key translations for scrollbar widget to ensure that
- keystrokes intended for the text area are not lost if the mouse
- pointer happens to fall on the scrollbar. This can happen, for
- instance, if the user's <code>app-defaults</code> or
- <code>.Xdefaults</code> file contains a translations resource,
- though it may also happen through unrelated resource settings:
- probably a bug in libXt (reported by Paul Fox
- &lt;pgf@foxharp.boston.ma.us&gt; and Dmitry Yu. Bolkhovityanov
- &lt;D.Yu.Bolkhovityanov@inp.nsk.su&gt;).
-
- <li>widen ifdef's in xterm.h to define <code>__EXTENSIONS__</code> on
- Solaris, for compilers other than gcc. This was added along
- <code>_POSIX_C_SOURCE</code> with in <a href="#xterm_151">patch
- #151</a>, but is not sufficient since Sun's compiler does not define
- <code>__STDC__</code> by default (report by Matthias Scheler
- &lt;tron@zhadum.de&gt;).
-
- <li>modify xterm to obtain the closest matching color if an exact color
- is not available, e.g., on 8-bit displays (patch by Steve Wall)
-
- <li>patch by Tomohiro KUBOTA &lt;tkubota@riken.go.jp&gt; to implement
- "OverTheSpot" preedit type of XIM input:
- <ul>
- <li>This preedit type is a reasonable compromise between
- simpleness of implementation and usefulness. "Root" preedit
- type is easy to implement but not useful; "OnTheSpot" preedit
- type is the best in the point of view of user interface but
- very complex. And more, "OverTheSpot" is the preedit type
- which the most XIM servers support. Thus, to achieve reasonable
- usability, support of "OverTheSpot" preedit type is needed.
-
- <li>In "OverTheSpot" preedit type, the preedit (preconversion)
- string is displayed at the position of the cursor. On the
- other hand, it is XIM server's responsibility to display
- the preedit string. Thus, it is needed for XIM client (here
- XTerm) to inform the XIM server of the cursor position.
- And more, to achieve good visual proportion, preedit string
- must be written using proper font. Thus, it is XIM client's
- responsibility to inform the XIM server of the proper font.
- The font must be supplied by "fontset". Fontset is a set of
- fonts with charsets which are specified by the current locale.
- Since XTerm uses ISO10646 fonts regardless of the current locale,
- the fonts for XIM must be prepared separately. It is difficult
- to prepare fonts which are similar to XTerm font. Thus, my
- patch uses a simple way - the default font is "*" which matches
- every fonts and X library will automatically choose fonts with
- proper charsets. I added "-fx" command option and "ximFont"
- resource to override this default font setting.
-
- <li>changed the definition of "OverTheSpot" preedit type
- from XIMPreeditPosition|XIMStatusArea
- to XIMPreeditPosition|XIMStatusNothing.
- This matches the behavior of other programs such as
- Rxvt, Kterm, Gedit.
-
- <li>A tiny XIM bugfix is also included. By calling XSetLocaleModifiers()
- with parameter of "", it can consier XMODIFIERS environmental
- variable which is a standard way for users to specify XIM server
- to be used.
- </ul>
-
- <li>adjust configure script to accommodate repackaging of keysym2ucs.c
- as include-file for xutf8.c (patch by Tomohiro KUBOTA
- &lt;kubota@debian.org&gt;).
-
- <li>add the <code>UXTerm</code> app-defaults file to makefile install
- rules (request by Juliusz Chroboczek).
-
- <li>correct logic in <code>get_termcap()</code>, which returned false
- if the <code>tgetent()</code> call indicated that xterm was linked
- with terminfo. Although the <code>$TERMCAP</code> variable cannot be
- adjusted in this case, xterm still needs information from this call
- to extract data to initialize the erase-mode when the
- <code>ptyInitialErase</code> resource is false.
-
- <li>modify <code>ScrollbarReverseVideo()</code> function to cache the
- original border color, so it can restore that when an application
- flashes the screen (Bugzilla #38872).
-
- <li>resync with XFree86 CVS:
- <ul>
- <li>remove ifdef's for X_NOT_STDC_ENV (David Dawes).
- <li>add Cygwin to special errno handling case in ptydata.c (Alan Hourihane)
- <li>set screen size earlier in initialization, to address a race
- with window manager resizing its clients (Keith Packard).
- </ul>
-</ul>
-
-<H1><A NAME="xterm_157">Patch #157 - 2001/6/18 - XFree86 4.1.0</A></H1>
-<ul>
- <li>patch by Juliusz Chroboczek to clean up button.c and input.c. The
- basic idea is to use a single set of APIs in the XTerm core, and put
- a set of workarounds in a separate file. As you will notice, this
- drastically simplifies parts of the code; in particular, the only
- remaining ifdefs related to the differences between Xutf8 and legacy
- systems are related to the selection provider logic.
-
- This defines two new files, xutf8.h and xutf8.c, provide some
- half-hearted but fully portable emulation for the three Xutf8*
- functions that XTerm uses.
-
- Putting these in a separate file will allow people to experiment with
- more complex versions without making the core of XTerm more difficult
- to maintain.
-
- The functionality of the emulation is as follows.
- <ul>
- <li>Xutf8TextListToTextProperty fully handles XStringstyle and
- XUTF8StringStyle. It will only generate STRING for XStdICCTextStyle,
- and wil only generate Latin-1 in XCompoundTextStyle (but label it as
- COMPOUND_TEXT, as the spec requires). (I have hesitated to make this
- function fail for XStdICCTextStyle and XCompoundTextStyle; this might
- be a smart thing to do, in the hope that the selection requestor will
- try UTF8_STRING afterwards; opinions?)
-
- <li>Xutf8TextPropertyToTextList fully handles STRING and UTF8_STRING.
- It systematically fails for COMPOUND_TEXT.
-
- <li>Xutf8LookupString will properly handle single-keystroke input for
- the keysyms covered by Markus' keysym2ucs function. It will not
- handle either compose key input or external input methods.
- </ul>
-
- <li>add an ifdef for <code>SunXK_F36</code>, used in
- <code>xtermcapKeycode()</code> (patch by Mark Waggoner
- &lt;waggoner@ichips.intel.com&gt;).
-
- <li>modify check for login name to try <code>getlogin()</code> and
- $LOGNAME, $USER environment variables to detect if the user has
- logged in under an alias, i.e., an account with the same user id
- but a different name (Debian bug report #70084).
-
- <li>add resource <code>tiXtraScroll</code>, which can be used to
- preserve the screen contents in the scrollback rather than erasing
- it when starting a fullscreen application such as <code>vi</code>
- (patch by Ken Martin &lt;fletcher@catsreach.org&gt;).
-
- <li>two patches by Denis Zaitsev &lt;zzz@cd-club.ru&gt;:
- <ul>
- <li>added <code>forceBoxChars</code> resource to control the
- "line-drawing characters" option.
-
- <li>added <code>freeBoldBox</code> resource, which, when set true,
- suppresses check in <code>same_font_size()</code>, so xterm does
- not attempt to ensure that the bold font is the same size as
- the normal font.
- </ul>
-
- <li>change the color class for ANSI colors and similar ones such as
- bold-color, etc., to follow the convention that the classname is the
- instance name with a leading capital (e.g., <code>color0</code> and
- <code>Color0</code> rather than <code>color0</code> and
- <code>Foreground</code>). There was little use for Foreground as a
- class other than to create occasional confusion and bug reports, most
- recently by Nelson Beebe who reports that it disables colors in xterm
- but not on Linux, which is probably due to a difference in resource
- evaluation order. A configure script option (--disable-color-class)
- is provided for anyone who did use the older behavior.
-
- <li>fix a signal-handling bug. When running xterm with
- <code>ksh</code> or similar shell such as bash 2.05, xterm will hang
- and not respond to keystrokes after the user types
- <code>suspend</code>. Additionally the popup menus do not respond,
- so it is not possible to send SIGCONT to the shell.
- What is happening is that the shell is sending itself SIGSTOP, and it
- is being stopped. Per specification it also means that the operating
- system is sending SIGCHLD to parent to the bash (XTERM).
- Now the issue is that xterm assumes it cannot happen and it expects
- to receive SIGCHLD only upon <em>termination</em> of its children.
- This causes a deadlock with xterm waiting for the child to
- die, and the child waiting for SIGCONT.
- (report/patch by Adam Sulmicki), analysis/testing by Sven Mascheck
- &lt;sven.mascheck@student.uni-ulm.de&gt;).
-
- <li>correct some inconsistent checks for <code>XtReleaseGC()</code>
- calls in <code>xtermLoadFont()</code> (patch by Nam SungHyun
- &lt;namsh@lge.com&gt;).
-
- <li>updated wcwidth.c and keysym2ucs.c to versions dated 2001/1/12
- and 2001/4/18, respectively from
- http://www.cl.cam.ac.uk/~mgk25/ucs/
-
- <li>correction to change from <a href="#xterm_90">patch #90</a>,
- which was intended to
- reset the saved cursor position for normal/alternate screens
- on a soft reset, but actually wiped out all of the saved cursor
- information. Just reset the saved position for the current screen
- (report by Michael Schroeder).
-
- <li>modify ShowCursor() and HideCursor() so that if the cursor points
- to the second part of a wide character, make the show/hide operate on
- the first position of the wide character (patch by Sven Verdoolaege).
-
- <li>scrolling in the alternate screen just before switching back to the
- main screen can cause extra blank lines to be inserted into the
- scrollback buffer (patch by Paul Vojta
- &lt;vojta@math.berkeley.edu&gt;).
-
- <li>resync with XFree86 4.1.0:
- <ul>
- <li>Use TermcapLibrary as -lncurses instead of -ltermcap, fixes
- problem building xterm/resize on Cygwin/XFree86 (Harold Hunt).
- <li>Install xterm.termcap and xterm.terminfo when installing xterm
- (Torrey T. Lyons).
- <li>Fix some build issues on Cygwin/XFree86 (Suhaib Siddiqi).
- <li>Define CBAUD, when it's missing in xterm, on LynxOS
- (Stuart Lissaman).
- </ul>
-</ul>
-
-<H1><A NAME="xterm_156">Patch #156 - 2001/4/28 - XFree86 4.0.3</A></H1>
-<ul>
- <li>change order of selection-target types to make 8-bit xterm prefer
- UTF8_STRING to COMPOUND_TEXT (patch by Juliusz Chroboczek).
-
- <li>document <code>-fa</code>, <code>-fs</code> command-line options
- and <code>faceName</code>, <code>faceSize</code>
- resources which are used by the freetype library support.
-
- <li>if configure script finds freetype libraries, but imake definitions
- do not have the XRENDERFONT definition, define it anyway.
-
- <li>modify configure script check for freetype libraries to include
- <code>&lt;Xlib.h&gt;</code>, since an older version of the related
- headers relies on this (patch by Adam Sulmicki).
-</ul>
-
-<H1><A NAME="xterm_155">Patch #155 - 2001/4/20 - XFree86 4.0.3</A></H1>
-<ul>
- <li>correct return type of in_put() from <a href="#xterm_155">patch #153</a>
- changes, which left it not wide enough for UTF-8 (patch by Bruno Haible).
-</ul>
-
-<H1><A NAME="xterm_154">Patch #154 - 2001/4/11 - XFree86 4.0.3</A></H1>
-<ul>
- <li>undo check for return value from <code>pututline</code> (used for
- debugging) since that function does not return a value on Slackware
- 3.6.
-
- <li>correct length in ScreenWrite, when rendering invisible text
- (patch by Sven Verdoolaege &lt;skimo@kotnet.org&gt;).
-
- <li>fixes/improvements for the <code>i18nSelection</code> resource
- from patch #153, by Bruno Haible:
-
- <ul>
- <li>add missing initialization for <code>i18nSelection</code>
- resource.
-
- <li>split-out the non-ICCM aspect of the
- <code>i18nSelection</code> resource as a new resource,
- <code>brokenSelections</code>.
- </ul>
-
- <li>add configure check for <code>&lt;time.h&gt;</code> and
- <code>&lt;sys/time.h&gt;</code>, to allow for Unixware&nbsp;7,
- which requires both. If the configure script is not used, only
- <code>&lt;time.h&gt;</code> will be included as before (report
- by Thanh Ma).
-
- <li>fix redefinition of <code>dup2</code>, <code>getutent</code>,
- <code>getutid</code>, <code>getutline</code> and <code>sleep</code>
- functions on Unixware&nbsp;7 (report by Thanh Ma
- &lt;Thanh.Ma@casi-rusco.com&gt;)
-
- <li>add a fall-back definition for <code>__hpux</code>, which is
- apparently not defined in some compilers on HPUX 11.0 (reported
- by Clint Olsen).
-
- <li>change VAL_INITIAL_ERASE, which is used as a fallback for the
- <code>"kb"</code> termcap string to 8, since that matches the
- xterm terminal description (request by Alexander V Lukyanov).
-
- <li>correct an off-by-one in <code>ClearInLine</code>, which caused
- the erase-characters (ECH) control to display incorrectly
- (patch by Alexander V Lukyanov).
-
- <li>correct escape sequences shown in terminfo for shifted editing
- keys. The modifier code was for the control key rather than
- the shift key.
-</ul>
-
-<H1><A NAME="xterm_153">Patch #153 - 2001/3/29 - XFree86 4.0.3</A></H1>
-<ul>
- <li>increase PTYCHARLEN to 8 for os390, add some debugging traces
- for UTMP functions (patch by Paul Gilmartin).
-
- <li>correct an misplaced brace in <code>SelectionReceived()</code>
- (patch by Bruno Haible).
-
- <li>correct an assignment dropped in <code>SelectionReceived()</code>
- which made it not compile for wide-characters combined with debug
- traces.
-
- <li>correct typo, clarify description of 88- and 256-color controls
- (report by Bram Moolenaar).
-
- <li>correct a typo in ctlseqs.ms which caused DEC Locator control
- sequences using single quote "'" display grave "`" instead (reported
- by Paul Williams, apparently in patch #114).
-</ul>
-
-<H1><A NAME="xterm_152">Patch #152 - 2001/3/13 - XFree86 4.0.2</A></H1>
-<ul>
- <li>correct index in inner loop in <code>VTInitI18N()</code> from
- patch #151 changes, which resulted in infinite loop under some
- conditions (report/analysis by Paul Gilmartin).
-
- <li>remove spurious "%|" from terminfo sgr capabilities
- (report/analysis by Adam M Costello, Debian bug #89222).
-
- <li>add shell script to adjust list of dynamic libraries linked by
- <code>resize</code> when building with the standalone configure
- script. Otherwise it uses the same list as for xterm, which is
- excessive.
-
- <li>fix a few compiler warnings reported by the 20010305 gcc snapshot.
-</ul>
-
-<H1><A NAME="xterm_151">Patch #151 - 2001/3/10 - XFree86 4.0.2</A></H1>
-<ul>
- <li>patch from Juliusz Chroboczek &lt;jch@pps.jussieu.fr&gt; which
- alters the behaviour of selections in XTerm.
- It is believed to follow the ICCCM + UTF8_STRING to the letter, both
- in UTF-8 and in eight-bit mode. From his description:
- <ul>
- <li>When compiled against XFree86 4.0.2, the patched XTerm will make
- the selection available as COMPOUND_TEXT, STRING or UTF8_STRING in
- both modes. It will request selections in the following order:
- <p>
- UTF-8 mode: UTF8_STRING, TEXT, COMPOUND_TEXT, STRING.<br>
- eight-bit mode: TEXT, COMPOUND_TEXT, UTF8_STRING, STRING.
-
- <li>When compiled against an earlier version of XFree86 (or compiled with
- OPT_UTF8_API=0), it will still obey the ICCCM, but will neither
- request nor provide UTF8_STRING in eight-bit mode, and neither TEXT
- nor COMPOUND_TEXT in UTF-8 mode.
- <li>For compatibility with previous versions of XTerm, a resource
- <code>i18nSelections</code> is provided, please see the manpage for
- details. However, due to an unexpected combination of ICCCM
- extensions by various bits and pieces of the libraries, interacting
- with previous versions of XTerm will work in many locales even
- without this flag. (Please do not set this resource to true by
- default, as this would violate the ICCCM.)
- </ul>
-
- <li>improved error checking/reporting in VTInitI18N(), ensuring that
- lack of input method styles is treated distinctly from a mismatch.
-
- <li>remove an incorrect ifdef from patch #141 which suppressed
- overstriking to simulate bold font when xterm was compiled to support
- wide characters (report/analysis by Adam M Costello
- &lt;amc@cs.berkeley.edu&gt;, fixes Debian bugs #76404, #77575).
-
- <li>modify <code>RequestResize()</code> function to save/restore window
- manager hints. Its call to <code>XtMakeResizeRequest()</code> had
- the undesirable side-effect of clearing window manager hints, e.g.,
- when switching to 132-columns via DECCOLM escape sequence. Window
- manager hints make it simple to resize xterm in terms of character
- cells rather than pixels (reported by Christian Weisgerber as well
- as Debian bug #79939).
- <p>
- This applies to the normal configuration. When built with toolbar
- support, the hints are applied to a different widget level (more
- work will be needed to make hints work with the toolbar).
-
- <li>fix a redefinition warning for resize.c on OpenBSD (patch by
- Christian Weisgerber).
-
- <li>change resource corresponding to <code>-T</code> option to match
- Xt library's <code>-title</code>, i.e., <code>.title</code>
- rather than <code>*title</code> so the command-line options are
- interchangeable as documented (Debian bug report #68843).
-
- <li>add script used from autoconf'd makefile for installing manpages,
- since recent XFree86 changing the way section numbers are represented
- makes the install dependent on extra scripts.
-
- <li>add configure check for freetype libraries and configure option
- --disable-freetype to override this feature.
-
- <li>modify some configure script macros to avoid using changequote(),
- which has been rendered useless in the latest autoconf alpha 2.49c
-
- <li>update config.guess, config.sub to 2001-2-13
-
- <li>remove redundant/contradictory __CYGWIN__ definitions from resize.c
-
- <li>correct manpage typo introduced by X11R6.5 resync.
-</ul>
- Changes from XFree86 4.0.2:
-<ul>
- <li>add definition of <code>_POSIX_C_SOURCE</code> for Solaris to
- make this compile with <code>gcc -ansi -pedantic</code> (report
- by &lt;mark@zang.com&gt;.
-</ul>
-
-<H1><A NAME="xterm_150">Patch #150 - 2000/12/29 - XFree86 4.0.2</A></H1>
-<ul>
- <li>move the binding for shifted keypad plus/minus, which invokes the
- <code>larger-vt-font()</code> and <code>smaller-vt-font()</code>
- actions, respectively, into the translations resource (suggested by
- Marius Gedminas &lt;mgedmin@puni.osf.lt&gt;).
-
- <li>modify configure script to support the
- <code>--program-prefix</code>, <code>--program-suffix</code> and
- <code>--program-transform-name</code> options (request by Alison
- Winters &lt;alison@mirrabooka.com&gt;).
-
- <li>patch from Robert Brady
- <ul>
- <li>fix a scrolling / combining characters display anomaly
-
- <li>fix a problem with double-width characters where if the primary
- font had no box-drawing characters, the right hand half of
- double-width characters was erased (reported by Yao Zhang
- &lt;yzhang@sharemedia.com&gt;).
-
- <li>fix special case of null byte for key handling in UTF-8 locales.
- </ul>
-
- <li>modify logic that compares sizes of normal and bold fonts to be
- more forgiving of the font server's choice of bold font which must
- match the normal font's size. Now <code>same_font_size()</code>
- compares the height of the fonts rather than individually ascent and
- descent, and allows the bold font to be one pixel smaller than the
- normal font (addresses a report by Alan Citterman
- &lt;alan@mticket.com&gt;, who says that something in patches #146 to
- #148 made xterm more likely to overstrike bold fonts, and indirectly
- Debian bug report #76404, which reports the opposite).
-
- <li>make configure script use $CFLAGS and $CPPFLAGS consistently,
- including removing a chunk from configure.in which attempted to
- save/restore $CPPFLAGS while processing value set by the --x-includes
- option, but lost values set in an intervening AC_CHECK_HEADERS. This
- change modifies macros CF_ADD_CFLAGS, CF_ANSI_CC_CHECK and
- CF_X_TOOLKIT, as well as removing variables IMAKE_CFLAGS and X_CFLAGS
- from the generated makefile (the AC_CHECK_HEADERS problem was
- reported by Albert Chin-A-Young &lt;china@thewrittenword.com&lt;).
-
- <li>correct a comparison in SELECTWORD case of ComputeSelect(), which
- resulted in a word-selection wrapping past the first column without
- checking the first column's character class (reported by Christian
- Lacunza &lt;celacunza@netscape.net&gt;
-
- <li>correct a logic in UTF-8 mode for selecting double-width characters;
- a combining character was omitted (patch by Markus Kuhn).
-
- <li>add feature to pop (raise) window when a bell is received
- (patch by Gael Roualland &lt;gael.roualland@dial.oleane.com&gt;).
-
- <li>add __NetBSD__ and __OpenBSD__ to special-case in xterm_io.h
- for USE_POSIX_TERMIOS definition (patch by Christian Weisgerber).
-
- <li>move special-case HPUX include for &lt;sys/bsdtty.h&gt; to
- xterm_io.h to define TIOCSLTC, making HAS_LTCHARS defined for HPUX
- 10.20 (report by Bruno Betro).
-</ul>
-
-<H1><A NAME="xterm_149">Patch #149 - 2000/12/6 - XFree86 4.0.1h</A></H1>
-<ul>
- <li>restructured includes for <code>termios.h</code>,
- <code>termio.h</code> and related definitions for main.c, os2main.c,
- screen.c and resize.c so they will share equivalent definitions in a
- new header <code>xterm_io.h</code>. This is intended to solve some
- problems mainly for HPUX which appear to arise from inconsistent
- definitions for SIGWINCH- and HAS_LTCHARS-related symbols (reports
- by Bruno Betro, Jeremie Petit and Clint Olsen).
-
- <li>improve usability of double-width fonts by allowing normal fonts
- to be given as double-width (from a patch by Fabrice Bellard
- &lt;bellard@email.enst.fr&gt;).
-
- <li>correct a few compiler warnings in TRACE() macros for
- signed/unsigned variable differences (reported by Clint Olsen).
-
- <li>make configure script use $CFLAGS and $CPPFLAGS more consistently,
- i.e., by using CF_ADD_CFLAGS in CF_ANSI_CC macro.
-
- <li>expanded description of environment variables in manual-page.
-
- <li>modify OPT_TCAP_QUERY feature to always return the termcap or
- terminfo capability string in the response, and to read/write the
- names in hexadecimal form to allow for the special case of termcap's
- <code>k;</code> name (patch by Bram Moolenaar).
-
- <li>add OPT_SAME_NAME and OPT_TCAP_QUERY to xtermcfg.hin, so the
- corresponding configure options work (patch by Bram Moolenaar).
-
- <li>resync with XFree86 4.0.1g:
- <ul>
- <li>Rewrite Xft library for Render extension/core text and font management
- Change xterm to use new interface (Keith Packard).
- </ul>
-</ul>
-
-<H1><A NAME="xterm_148">Patch #148 - 2000/10/31 - XFree86 4.0.1d</A></H1>
-<ul>
- <li>document logfile options in man-page.
-
- <li>correct spelling of <code>-samename</code> option in help message.
-
- <li>add configure script option <code>--enable-tcap-query</code>
- (request by Bram Moolenaar).
-
- <li>patch by Bram Moolenaar to add a
- "Co" or "colors" entry to the OPT_TCAP_QUERY feature.
- <li>patch by Kiyokazu SUTO &lt;suto@ks-and-ks.ne.jp&gt;:
- <ul>
- <li>add support for bold font for double width characters.
- The font name may be specified with the command line option
- <code>-fwb</code> or with resource
- <code>wideBoldFont</code> (class <code>WideBoldFont</code>).
- <li>correct underlining of double width character string, which
- was drawn only half width.
- <li>correct binary search of precomposed character table, which
- may return wrong result when <code>int</code> is just 32 bits.
- </ul>
-
- <li>some changes to align terminfo with ncurses 5.2:
- <ul>
- <li>remove xtermm description, retaining xterm-mono since the former
- conflicts with ncurses.
- <li>modify initialization and reset strings to avoid putting the
- save/restore cursor operations bracketing changes to video
- attributes, since the changes could be lost when the cursor is
- restored. This affects xterm-r6 and xterm-8bit (the xterm-xfree86
- entry uses the soft-reset feature which resets scrolling margins
- and origin mode without requiring us to save/restore the cursor
- position).
- <li>make a few entries explicitly inherit from xterm-xfree86 rather
- than xterm: xterm-rep, xterm-xmc, xterm-nrc
- </ul>
-
- <li>ensure that sign-extension does not affect <code>ctype</code>
- macros by using <code>CharOf()</code> macro to coerce the parameter
- to an unsigned char.
-
- <li>resync with XFree86 4.0.1d:
- <ul>
- <li>Add primitive support in xterm for Xft based fonts (Keith Packard).
- The changes are ifdef'd with <code>-DXRENDERFONT</code>.
- </ul>
-</ul>
-
-<H1><A NAME="xterm_147">Patch #147 - 2000/10/26 - XFree86 4.0.1c</A></H1>
-<ul>
- <li>correct implementation of <code>ptyInitialErase</code>: the
- value assigned to <code>initial_erase</code> was for the control
- terminal, which is correct as far as it goes. But there was no
- following test for the pseudo-terminal's erase value, which would
- overwrite the default obtained from the control terminal
- (reported by Christian Weisgerber &lt;naddy@mips.inka.de&gt;).
-
- <li>modify check for printable-characters in OSC string to use xterm's
- ansi_table rather than isprint() macro, to isolate this check from
- locale settings. This fixes a problem using 8-bit characters to
- set the title (reported by Ricardas Cepas &lt;rch@richard.eu.org&gt;).
-
- <li>modify sample scripts to check for printf before print, since the
- latter is not as well standardized (e.g., on Linux).
-
- <li>updated config.sub, config.guess to reflect changes on
- subversions.gnu.org
-</ul>
-
-<H1><A NAME="xterm_146">Patch #146 - 2000/9/12 - XFree86 4.0.1c</A></H1>
-<ul>
- <li>correct two instances overlooked from patch #141 which assumed
- UTF-8 mode without checking, causing a core dump in non-UTF-8 mode
- (one instance was reported by Tommi Virtanen &lt;tv@debian.org&gt;).
-
- <li>correct a problem selecting from the scrollback buffer in UTF-8
- mode by changing remaining getXtermCell() calls to XTERM_CELL() as in
- the non-UTF-8 cases (report by Markus Kuhn, patch by Robert Brady).
-</ul>
-
-<H1><A NAME="xterm_145">Patch #145 - 2000/9/11 - XFree86 4.0.1c</A></H1>
-<ul>
- <li>several changes from Robert Brady for UTF-8 configuration:
- <ul>
- <li>doublewide characters don't lose their accents when the cursor
- moves onto or from them (a visual bug)
-
- <li>fix logic in addXtermCombining, which mean that if the low byte
- of a cell's first combining char was 0, a following combining char
- would go into combining slot 1, not 2.
-
- <li>modify logic for cut-buffers so UTF-8 data is first converted
- to Latin1.
-
- <li>collapse surrogates, 0xfffe, 0xffff to UCS_REPL.
-
- <li>modify to allow xterm to to show combining characters
- attached to doublewidth characters.
-
- <li>correct bug in linewrap with -u8 option (reported by
- Andreas Koenig &lt;andreas.koenig@anima.de&gt;).
- </ul>
-
- <li>several changes to PTY logic (based on request by Tim Ryan
- &lt;timryan@nortelnetworks.com&gt;).
- <ul>
- <li>modify treatment of <code>-S</code> option to to make it work with
- Unix98 PTY's.
-
- <li>restore sense of IsPts flag in <code>get_pty()</code>, which was
- lost in Unix98 changes.
-
- <li>use new functions <code>my_pty_id()</code> and
- <code>my_pty_name()</code> to simplify/fix strings used for utmp,
- wtmp identifiers.
-
- <li>simplify <code>get_pty()</code> function, making it have a single
- return point so its inputs/outputs can be identified.
- </ul>
-
- <li>update config.guess and config.sub and scripts to my 20000819 patch,
- adding cases for OS/2 EMX.
-
- <li>add special case for os390 compiler options to configure script
- (patch by Paul Gilmartin)
-
- <li>fix some unused-variable compiler warnings (reported by
- Zdenek Sekera).
-
- <li>split-out some string functions into xstrings.c, to use them
- more consistently among main.c, os2main.c and resize.c
-
- <li>align termcap/terminfo files, adding entries to make them match.
- The termcap entries are necessarily less complete than the terminfo,
- to fit within 1023 character per entry.
-
- <li>add terminfo entry for xterm-sco (SCO function keys).
-
- <li>modify <code>same_font_name()</code> to properly handle wildcard
- introduced in <code>bold_font_name()</code>, making comparison for
- different fonts succeed when only the normal font is specified. This
- is needed to decide if 1-pixel offset should be used. (reported
- in a newsgroup by Bart Oldeman &lt;enbeo@enbeo.resnet.bris.ac.uk&gt;)
-
- <li>correct preprocessor line for OPT_WIDE_CHARS in drawXtermText()
- from patch #141 which resulted in overstriking for bold fonts not
- working.
-
- <li>correct Imakefile from 4.0.1c resync so UTF-8 modules are in
- UTF8SRC, UTF8OBJ lists, allowing build without UTF-8 support.
-</ul>
-
-<H1><A NAME="xterm_144">Patch #144 - 2000/8/23 - XFree86 4.0.1b</A></H1>
-<ul>
- <li>remove a spurious assignment in ScreenWrite() from Robert Brady's
- patch which set a null at the "end" of the buffer to be written.
- That made the autowrap feature write a blank in the first column for
- the non-UTF-8 configuration, rather than the actual character
- (reported by Alan Citterman &lt;alan@mticket.com&gt;).
-</ul>
-
-<H1><A NAME="xterm_143">Patch #143 - 2000/8/19 - XFree86 4.0.1b</A></H1>
-<ul>
- <li>add a check to ensure that <code>-class</code> command-line option
- is not confused with <code>-c</code> (reported by Paul Townsend
- &lt;aab@aab.cc.purdue.edu&gt;).
-</ul>
-
-<H1><A NAME="xterm_142">Patch #142 - 2000/8/18 - XFree86 4.0.1b</A></H1>
-<ul>
- <li>correction to precompose scripts, so 0061 + 0300 will now be really
- be displayed as 00C0 (patch by Robert Brady
- &lt;robert@susu.org.uk&gt;).
-
- <li>correct macro ClassSelects() in button.c, used to hide ifdef's for
- OPT_WIDE_CHARS in patch #141 (reported by Andreas Paul
- &lt;paula@informatik.tu-muenchen.de&gt;).
-
- <li>change wcwidth.h to include stddef.h rather than wchar.h, which is
- not present on OpenBSD and FreeBSD (reported by Christian
- Weisgerber and Bram Moolenaar).
-
- <li>newer config.sub and config.guess, from lynx 2.8.4dev.7
-</ul>
-
-<H1><A NAME="xterm_141">Patch #141 - 2000/8/14 - XFree86 4.0.1b</A></H1>
-<ul>
- <li>Most of this patch is an integration of Robert Brady's patch #11
- for doublewidth and combining characters, from
- http://www.ecs.soton.ac.uk/~rwb197/xterm/. In this context,
- doublewidth refers to 16-bit character sets which may have glyphs
- occupying two cells.
-
- <li>add command-line option <code>-class</code>, which allows one
- to override xterm's resource class. Also add resource file
- <code>UXTerm.ad</code>, which simplifies using xterm for both
- 8-bit character sets and UTF-8.
-
- <li>fixes/improvements to OPT_TCAP_QUERY logic (patches by Bram
- Moolenaar, Steve Wall).
-</ul>
-
-<H1><A NAME="xterm_140">Patch #140 - 2000/7/23 - XFree86 4.0.1</A></H1>
-<ul>
- <li>modify Makefile.in to circumvent GNU make's built-in suffix rule
- for ".sh" which confuses install.sh with the "make install" target
- (report/patch by Paul Gilmartin).
-
- <li>implement an experimental control sequence which an application may
- use to query the terminal to determine what sequence of characters it
- would send for a given function key. This is ifdef'd with
- OPT_TCAP_QUERY (request by Bram Moolenaar).
-
- <li>add /usr/local to search path in CF_X_ATHENA configure macro
- to build with Xaw3d on OpenBSD (patch by Christian Weisgerber).
-
- <li>add missing <code>#undef HAVE_TERMIO_C_ISPEED</code> to
- xtermcfg.hin, omitted in patch #133 fix for IRIX 6.5 baudrate (report
- by Alain Filbois &lt;Alain.Filbois@loria.fr&gt;).
-
- <li>correct a few errors in xterm.man: font in filename example for
- Tektronix emulation, and description of -nul/+nul command-line
- options (report by Eric Fischer &lt;enf@pobox.com&gt;).
-
- <li>update config.guess and config.sub (from tin and lynx)
-</ul>
-
-<H1><A NAME="xterm_139">Patch #139 - 2000/6/17 - XFree86 4.0d</A></H1>
-<ul>
- <li>back out change to <code>-name</code> command-line option,
- restoring its original behavior (as noted by David Madore, the
- correct interpretation of this option is the application instance
- rather than the application class).
-</ul>
-
-<H1><A NAME="xterm_138">Patch #138 - 2000/6/15 - XFree86 4.0c</A></H1>
-<ul>
- <li>workaround for fixed fonts which are generated from Unicode fonts:
- they omit glyphs for some xterm's less-used line-drawing characters,
- which caused xterm to set a flag telling it to use only its internal
- line-drawing characters. Do not set the flag (it can be set from the
- popup menu), and xterm will generate only the line-drawing glyphs
- which actually are missing.
- <br>
- Otherwise, when used for large fonts, xterm may generate a 2-pixel
- wide line, which can leave dots on the screen.
-
- <li>restore first line of 256colres.pl, omitted in 4.0c diffs.
-</ul>
-<H1><A NAME="xterm_137">Patch #137 - 2000/6/10 - XFree86 4.0b</A></H1>
-<ul>
- <li>make command-line <code>-name</code> option work as documented.
- Apparently this was lost in X11R5 when coding to use
- <code>XtAppInitialize</code>.
-
- <li>limit numeric parameters of control sequences to 65535 to
- simplify checks for numeric overflow.
-
- <li>change index into UDK list to unsigned to guard against numeric
- overflow making the index negative (Taneli Huuskonen
- &lt;huuskone@cc.helsinki.fi&gt;).
-
- <li>change <code>sun&nbsp;function-keys</code> resource name to
- <code>sunFunctionKeys</code> to work around redefinition of the
- token <code>sun</code> by xrdb on Solaris. Similarly, renamed
- resource <code>sun&nbsp;keyboard</code> to <code>sunKeyboard</code>
- (Steve Wall).
-
- <li>change similar resource names for HP and SCO to avoid potential
- conflict with xrdb symbols on other systems, as well as for
- consistency.
-
- <li>reorganized the install targets in the autoconf'd Makefile, adding
- install-app, install-bin, install-dirs and install-man. The
- app-defaults class can be overridden by setting the make variable
- 'CLASS', simplifying customization of xterm as a Unicode terminal,
- e.g., CLASS=UXTerm.
-
- <li>add limit checks to <code>ClearInLine()</code>,
- <code>ScrnInsertChar()</code>, <code>ScrnDeleteChar()</code> to
- correct potential out-of-bounds indexing (prompted by Debian bug
- report #64713, which reported a problem with ICH escape sequences).
-
- <li>updates to config.sub and config.guess
- Kevin Buettner &lt;kev@primenet.com&gt; for elf64_ia64
- Bernd Kuemmerlen &lt;bkuemmer@mevis.de&gt; and MacOS X.
-
- <li>patch from Paul Gilmartin for os390 to check for errno set to
- ENODEV on failure to open /dev/tty when there is no controlling
- terminal.
-
- <li>patch from H Merijn Brand &lt;h.m.brand@hccnet.nl&gt; for
- building on Digital Unix 4.0 and AIX 4.2.
-
- <li>modify DECRQSS reply for DECSCL to additionally report if the
- terminal is set for 8-bit controls.
-</ul>
-
-<H1><A NAME="xterm_136">Patch #136 - 2000/6/3 - XFree86 4.0b</A></H1>
-<ul>
- <li>add a resource (<code>limitResize</code>)
- limiting resizing via the CSI 4 t and CSI 8 t sequences.
-
- <li>ignore out-of-bounds resize requests, i.e., where sign-extension
- or truncation of the parameters would occur.
-</ul>
-
-<H1><A NAME="xterm_135">Patch #135 - 2000/5/29 - XFree86 4.0b</A></H1>
-<ul>
- <li>remove code introduced in #134 which made some backgrounds bold.
-
- <li>minor correction to format of updated $TERMCAP when adding
- <code>kb</code> capability for <code>ptyInitialErase</code> logic.
-
- <li>improved test for SVR4 definition.
-</ul>
-
-<H1><A NAME="xterm_134">Patch #134 - 2000/5/28 - XFree86 4.0b</A></H1>
-<ul>
- <li>update URL's and mailing addresses, moved to http://dickey.his.com
- and dickey@herndon4.his.com
-
- <li>correct missing quotes in CF_TTY_GROUP configure script macro in
- case the script is run in batch mode.
-
- <li>modify ownership-check of log file to ignore the group ownership.
- Otherwise xterm cannot create logfiles in directories with set-gid
- permissions.
-
- <li>simplify the logic that reads termcap data.
-
- <li>add fallback definition for B9600 in case line speed definition
- for 38400 is missing (report by Jack J Woehr &lt;jwoehr@ibm.net&gt;,
- for OpenBSD 2.6).
-
- <li>fix: Set highlightColor, and select a region containing the text
- cursor. If the window loses focus, the cursor becomes hollow, with
- the region inside the cursor being background/foreground, unlike the
- rest of the selection, which is foreground/highlight
- (patch by Ross Paterson &lt;ross@soi.city.ac.uk&gt;).
-
- <li>add configure script tests to define SVR4, SYSV and USE_POSIX_WAIT,
- which enables xterm to compile on Solaris 7 and SCO Openserver
- without imake, though there are still a few features for the latter
- which require <code>sco</code> to be predefined.
-
- <li>patches from Steve Wall:
- <ul>
- <li>add support for two Sun-specific function keys. These keys are
- labeled F11 and F12 on Sun Type 5 keyboards, but return SunXK_F36 and
- SunXK_F37. Support will only be compiled in if the header file
- &lt;X11/Sunkeysym.h&gt; exists and contains the appropriate symbol
- definitions. The keycodes for the DEC keycodes were arbitrary unused
- codes, but the ones for the Sun keycodes are what cmdtool and
- shelltool actually send.
-
- <li>add <code>colorRV</code> and <code>colorRVMode</code> resources to
- allow specifying a color to use for reverse video, similar to the
- existing UL, BD, and BL modes.
-
- <li>add <code>alwaysUseMods</code> resource, to override check if
- <code>alt</code> or <code>meta</code> modifiers are used in
- <code>translations</code> resource. Revamped the code to calculate
- the modifier value, and included Meta if alwaysUseMods is TRUE, using
- values 9-16.
- </ul>
-
- <li>patches from Paul Gilmartin for os390:
- <ul>
- <li>regularize the definition of CONTROL() and remove an
- acknowledged "trial and error" table.
-
- <li>translate "^?" into A2E(0177) which is the EBCDIC "DEL"
- rather than plain 0177 which is the EBCDIC quotation mark.
-
- <li>modify <code>xtermMissingChar()</code> so that EBCDIC codes 128-159
- are not rendered as blanks by X server running on Solaris, which sees
- those as control characters.
-
- <li>make debugging traces (configure --enable-trace)
- work properly with EBCDIC.
- </ul>
-</ul>
-
-<H1><A NAME="xterm_133">Patch #133 - 2000/5/2 - XFree86 4.0a</A></H1>
-<ul>
- <li>add substitutions in autoconf'd Makefile for CPPFLAGS, LDFLAGS and
- AWK (reported by Neil Bird).
-
- <li>correct uninitialized <code>childstat</code> variable from patch
- #131 in <code>creat_as()</code> function, which caused logging to not
- work on Solaris, whose <code>waitpid()</code> function does not
- initialize its parameter. Add check for EINTR on return from
- <code>waitpid()</code> as well (reported by Neil Bird
- &lt;neil.bird@rdel.co.uk&gt;).
-
- <li>remove a redundant check for working <code>setuid()</code> function
- introduced in patch #132 (Greg Smith reports that this does not work
- as intended on os390).
-
- <li>change line speed from 9600bd to 38400bd, to accommodate people who
- mistakenly use $TERM set to <em>vt100</em>, to reduce the effect of
- padding associated with this terminal type.
-
- <li>add configure script check for IRIX 6.5's redefinition of baud
- rates associated with <code>struct termio</code>, to correct a
- situation where the baud rate was initialized to zero (reported by
- Andrew Isaacson &lt;adi@lcse.umn.edu&gt;).
-
- <li>remove unused configure script check for VDISABLE.
-</ul>
-
-<H1><A NAME="xterm_132">Patch #132 - 2000/4/11 - XFree86 4.0a</A></H1>
-<ul>
- <li>undo an incorrect change from patch #113 caused the right scrollbar
- to be positioned incorrectly when re-enabling it (analysis by
- D Roland Walker).
-
- <li>add ctrlFKeys resource, replacing constant for adjusting
- control-F1 to control-F12 to VT220-style F10-F20. The resource
- changes the constant 12 to a default value of 10 (request by
- Jim Knoble &lt;jmknoble@pobox.com&gt;).
-
- <li>correct ifdef'ing for conflict between definitions in AIX's
- &lt;sys/select.h&gt; and &lt;X11/XPoll.h&gt; (reported by Clint
- Olsen).
-
- <li>add checks for return-values of getutid(), initgroups() and
- setuid() in main.c, as well as modifying ifdef's for __osf__ to
- include tty-group and WTMP logic (adapted from patch by Paul Szabo
- &lt;psz@maths.usyd.edu.au&gt;)
-
- <li>modify resize.c to build and work on os390 (uses EBCDIC)
- (adapted from patch by Phil Sidler &lt;Phil.Sidler@airborne.com&gt;)
-
- <li>use Ires(), Bres() and Sres() macros to simplify resource list in
- charproc.c
-
- <li>resync with XFree86 4.0a:
- <ul>
- <li>correct a typo in os2main.c (Holger Veit, from 4.0a).
- </ul>
-</ul>
-
-<H1><A NAME="xterm_131">Patch #131 - 2000/3/3 - XFree86 3.9.18b</A></H1>
-<ul>
- <li>integrate patch by Branden Robinson for improving logfile
- security:
- <ul>
- <li>make the <code>creat_as()</code> function more strict by using
- O_EXCL rather than O_APPEND.
- <li>fixes to make DEBUG ifdef's compile/run, including making the
- debug logfile more unique by appending a timestamp to its name.
- <li>include &lt;term.h&gt; in resize.c, to fix a missing-prototype
- warning.
- </ul>
-
- <li>modified <code>creat_as()</code> a little more, retaining the
- ability to append to a logfile If the user specifies the name.
- Also, check if the opened file (which patch #130 ensures is
- owned by the effective user) is not writable by other users.
-
- <li>use <code>creat_as()</code> logic to make tek4014 screen-copy
- more secure (noted by Branden Robinson).
-
- <li>ifdef'd some of Branden's changes to build/work on older machines.
-
- <li>correct missing initialization of the <code>.mode</code> flag in
- <code>ColorRes</code> struct, from patch #129. This worked on Linux
- because <code>malloc()</code> zeroes memory on that platform
- (reported by Christian Weisgerber).
-
- <li>modify logic for <code>deleteIsDEL</code> resource so it has
- internally 3 states: unspecified, true and false. If unspecified,
- the keyboard type determines whether the Delete key transmits
- <code>&lt;esc&gt;[3~</code> or <code>\177</code>, and the popup menu
- entry reflects the internal state. Otherwise, the popup menu entry
- overrides the keyboard type (suggested by Dr Werner Fink, to make it
- simpler to set resources that imitate the legacy X11R6 xterm).
-</ul>
-
-<H1><A NAME="xterm_130">Patch #130 - 2000/3/1 - XFree86 3.9.18a</A></H1>
-<ul>
- <li>modify <code>scroll-forw()</code> and <code>scroll-back()</code>
- actions, adding a third parameter which will direct xterm to ignore
- the action when mouse reporting is enabled. This is needed for
- the wheel mouse to be used to report to the application rather than
- scroll the window.
-
- <li>add menu entry and action to allow disabling xterm's assumption
- that the current font contains line-drawing characters if the
- font cells 1-31 are nonempty. Some fonts may have other characters
- (reported by Bruno Betro &lt;bruno@iami.mi.cnr.it&gt;).
-
- <li>add a check in <code>creat_as()</code> to ensure that the user
- really owns the logfile that has been opened.
-
- <li>add logic to implement SCO function-keys. (This is really
- incomplete, since I intend to revisit this and make xterm able to
- emulate scoansi better than just the function-keys).
-
- <li>add configure script option --enable-sco-fkeys, minor related fixes
- (patch by Dr Werner Fink).
-
- <li>fix typos in ctlseqs.ms (reported by Bram Moolenaar)
-
- <li>fix typo in sinstall.sh default for $TST_PROG (reported by
- Paul Gilmartin &lt;pg@sweng.stortek.com&gt;)
-</ul>
-
-<H1><A NAME="xterm_129">Patch #129 - 2000/2/26 - XFree86 3.9.18a</A></H1>
-<ul>
- <li>improve initialization of ANSI colors by delaying allocation until
- each color is first used.
-
- <li>remove ifdef that prevented colorBD/colorUL/colorBL resources from
- working when 256-color configuration was built (reported by
- Todd Larason).
-
- <li>fix some minor inconsistencies in terminfo (Debian #58530).
-</ul>
-
-<H1><A NAME="xterm_128">Patch #128 - 2000/2/17 - XFree86 3.9.18</A></H1>
-<ul>
- <li>correct logic for <code>oldXtermFKeys</code> resource, fixes a core
- dump when attempting to set it from the command-line (reported by Dr
- Werner Fink).
- <li>correct ifdef for meta-sends-escap so configure --disable-num-lock
- builds.
-</ul>
-
-<H1><A NAME="xterm_127">Patch #127 - 2000/2/12 - XFree86 3.9.17e</A></H1>
-<ul>
- <li>add resource, popup menu entry and control sequence to allow
- changing the Delete key to send either DEL or the VT220-style
- Remove escape sequence.
-
- <li>remove logic for metaSendsEscape that would allow xterm to send
- <code>&lt;esc&gt;[3~</code> before a function key that would begin
- with <code>&lt;esc&gt;[3~</code> (request by Christian Weisgerber).
-
- <li>add missing action and documentation for meta-sends-escape.
-
- <li>correct a few typos in ctlseqs.ms (incorrect code for Cyan color)
-</ul>
-
-<H1><A NAME="xterm_126">Patch #126 - 2000/2/8 - XFree86 3.9.17c</A></H1>
-<ul>
- <li>patch by Markus Kuhn:
- ensure that xterm will automatically activate the UTF-8 mode whenever
- the name of the locale environment variable suggests that a UTF-8
- locale is in use. This will help that by simply setting LC_CTYPE an
- entire system can be switched over to UTF-8, without users having to
- remember the UTF-8 command line options ("-u8", etc.) of the various
- applications. Command line options and X resource entries can still
- be used to override this default choice.
-
- <li>add old function-keys control sequences and popup menu entry, for
- compatibility with legacy X11R6 xterm.
-
- <li>revert translation of editing keypad "Delete" key to legacy \177.
-
- <li>simplify the color-resource data expressions with macro COLOR_RES,
- for later use in restructuring color initialization.
-
- <li>change encoding of wheel mouse (buttons 4 and 5) to avoid conflict
- with legacy mouse modifiers (suggested by Bram Moolenaar).
-</ul>
-
-<H1><A NAME="xterm_125">Patch #125 - 2000/1/31 - XFree86 3.9.17c</A></H1>
-<ul>
- <li>integrate patch by David Mathog
- &lt;mathog@seqaxp.bio.caltech.edu&gt; to make this work on OpenVMS
-
- <li>rename some functions, e.g., <code>Index</code> to
- <code>xtermIndex</code> so that ports such as VMS which link
- externals ignoring case will not have library conflicts (reported by
- David Mathog).
-
- <li>correct logic of <code>do_reversevideo()</code>, which did not
- update the corresponding popup menu check mark (reported by David
- Mathog, this was a detail overlooked in patch #94).
-
- <li>change TRACE macro so semicolon is not within definition, making
- <em>indent</em> and similar programs work better.
-
- <li>add <code>depend</code> rule to Makefile.in
-
- <li>modify logic of boldColors resource to suppress it if an extended
- color control has been used, e.g., for 88-color or 256-color mode
- (patch by Todd Larason).
-
- <li>revise logic that handles menus and input translation for keyboard
- type so only one can be selected at a time.
-
- <li>restore kdch1=\177 for the Sun function-key type, and make the
- the Delete key send DEL (\177) if the oldXtermFKeys resource is set.
-
- <li>rephrase logic and ifdef's for POSIX VDISABLE to avoid preprocessor
- expression that will not compile on NetBSD/x86 1.4.1 (reported by
- Takaaki Nomura &lt;amadeus@yk.rim.or.jp&gt;).
-
-</ul>
-
-<H1><A NAME="xterm_124">Patch #124 - 2000/1/27 - XFree86 3.9.17b</A></H1>
-<ul>
- <li>change coding of editing keypad's "Delete" key to
- &lt;escape&gt;[3~, in the default (Sun/PC) keyboard mode.
- This makes the terminfo kdch1 capability independent of the
- coding of the backarrow key, which sends either backspace (8)
- or DEL (127). The reason for doing this (compatibility with
- the <em>screen</em> program) outweighs the choice of DEL (127)
- which was used in X11R5/X11R6 xterms. The <em>screen</em>
- program translates whatever matches kdch1 into &lt;escape&gt;[3~,
- even if it happens to be the stty erase character.
-
- <li>add encoding for control/?, to work around xmodmap or key
- translations which may confuse backspace and delete. A control/?
- will send DEL (127), and a control/H will of course send backspace
- (8).
-
- <li>add encoding for kcbt to &lt;escape&gt;[Z (fixes Debian #54840).
-
- <li>minor correction to logic that encodes Sun and DEC function keys
- to avoid sending an escape sequence if the key symbol is not found
- in xterm's lookup table.
-
- <li>simplify ifdef's in main.c for POSIX VDISABLE so the "^-" pattern
- is more likely to be implemented when <em>imake</em> configures xterm
- (fixes Debian #55105).
-
- <li>change manpage to make it clearer what codes are sent by the
- backarrow key.
-</ul>
-
-<H1><A NAME="xterm_123">Patch #123 - 2000/1/22 - XFree86 3.9.17a</A></H1>
-<ul>
- <li>add a note reserving OSC 51 for use in Emacs shell (request by
- Rob Mayoff &lt;mayoff@dqd.com&gt;).
-
- <li>correct a missing backslash in xterm-vt220 termcap.
-
- <li>cleanup remaining quoted includes, preferring bracketed form.
-
- <li>minor configure-script macro updates from tin and vile.
-
- <li>add configure-script option for using utempter library, adapted
- from Redhat 6.1 patch for XFree86 3.3.5
-
- <li>resync with XFree86 3.9.17a:
- <ul>
- <li>correction to QNX support (Frank Guangxin Liu)
- <li>some cosmetic changes that did not correct any reported problems.
- </ul>
-</ul>
-
-<H1><A NAME="xterm_122">Patch #122 - 1999/12/28 - XFree86 3.9.16f</A></H1>
-<ul>
- <li>move the suggested wheel-mouse button translations into charproc.c
- to simplify customization. Correct some minor logic errors in the
- support for buttons 4 and 5, used for wheel mice (reported by
- Bram Moolenaar).
-
- <li>implement <em>metaSendsEscape</em> resource, with corresponding
- control sequence and menu entry. Like <em>eightBitInput</em>, this
- causes xterm to send ESC prefixing the given key, but applies to
- all keys and is independent of the 8-bit/7-bit terminal setting.
- (requests by Alexander V Lukyanov and Marc Feeley).
-
- <li>correct potential indexing with negative subscript in udk_lookup(),
- (reported by Ian Collier &lt;Ian.Collier@comlab.ox.ac.uk&gt;).
-
- <li>modify configure script that sets TERMINFO_DIR to use ${prefix}
- rather than /usr if the --prefix option was specified (request by
- Zdenek Sekera &lt;zs@sgi.com&gt;).
-
- <li>modify checks for repeat-character control sequence to test the
- character class against xterm's state table, rather than the
- isprint() macro (patch by Alexander V Lukyanov).
-
- <li>change several functions to macros to improve speed
-
- <li>two corrections to simulation of bold font via overstriking:
- <ul>
- <li>use clipping to avoid leaving trash at end of the text, and
- <li>add brackets so wide-character logic does not fall-through
- into the overstriking logic (reported by
- Marc Feeley &lt;feeley@IRO.UMontreal.CA&gt;)
- </ul>
-
- <li>add several entries to termcap file to make it have the same set
- of aliases as the terminfo file.
-
- <li>scale the color values used for xterm-256color terminfo entry to
- 0..1000, as expected by ncurses.
-
- <li>change xterm-r6 terminfo definitions for F1-F4 to match program.
-
- <li>Add QNX/Neutrino support (Frank Guangxin Liu
- &lt;frank@ctcqnx4.ctc.cummins.com&gt;)
-</ul>
-<H1><A NAME="xterm_121">Patch #121 - 1999/11/14 - XFree86 3.9.16c</A></H1>
-<ul>
- <li>change label on "Sun/PC Keyboard" popup menu entry to "VT220
- Keyboard", since the checked state corresponds to VT220 rather than
- Sun/PC.
-
- <li>add configure test CF_UTMP_UT_XSTATUS to handle the variants of
- utmp exit status (reports by Dave Ellement, Jeremie Petit, Tomas
- Vanhala).
-
- <li>amend treatment of ALT key
- (see <a href="#xterm_94">patch #94</a>) so that if ALT is used
- as a modifier in key translations, then no parameter will be sent
- in escape sequences for Sun/PC function keys (request by Dr Werner Fink).
-
- <li>modify default for OPT_I18N_SUPPORT to assume that
- <code>XtSetLanguageProc()</code> is available in X11R5.
- <p>
- Caveat: <code>XtSetLanguageProc()</code> was
- added fairly late in the X11R5 patches, and some vendors shipped
- buggy versions of this function (request by Tomas Vanhala).
-
- <li>correct configure macro CF_SYSV_UTMP to test-link with functions
- consistent with the header, e.g., getutent() for utmp.h and
- getutxent() for utmpx.h (reported by Greg Smith).
-
- <li>modify terminfo entry for <code>xterm-xfree86</code> to reflect
- modifiers for shift and control which (from a patch by Alexander V
- Lukyanov).
-
- <li>modify terminfo entry for <code>xterm-sun</code> to match the
- function-key definitions in ncurses. The pageup/pagedown and
- related function keys correspond to the Sun keyboard, which does
- not necessarily correspond with X's notion of those keys.
-
- <li>modify treatment of XK_Delete keysym so it transmits parameterized
- VT220-style <code>&lt;esc&gt;[3~</code> if modifiers (shift, control
- alt) are given (request by Alexander V Lukyanov).
-
- <li>corrected misspelled resource name in command-line option for
- HP function keys.
-</ul>
-
-<H1><A NAME="xterm_120">Patch #120 - 1999/10/28 - XFree86 3.9.16c</A></H1>
-<ul>
- <li>refine the change to <code>SGR_Background()</code> in patch #119,
- by not flushing the pending scrolling operation if the background
- color is not actually changing. This combination occurs when using
- color-ls to display a long listing, since each line ends with an SGR0
- which affects only the foreground color. The unnecessary flushing
- made it noticeably slower (reported by D Roland Walker
- &lt;walker@pobox.com&gt;).
-
- <li>remove obsolete documentation about modifiers which can be returned
- in mouse tracking mode, and modify logic to ignore modifiers other
- than the existing ones, e.g., NumLock (prompted by discussions with
- Christian Weisgerber and Brad Pepers &lt;brad@linuxcanada.com&gt;).
-
- <li>use free bit from obsolete shift-modifier coding of mouse tracking
- button events to encode buttons 4 and 5, e.g., for a wheel mouse
- (requests by Brad Pepers and Bram Moolenaar).
-
- <li>correct a place where the ptyInitialErase logic did not set the
- backarrowKey state, and modify it further to use tgetstr() rather
- than parse the termcap data returned from tgetent() so the
- ptyInitialErase logic will work when xterm is linked with a terminfo
- library (based on a patch by Dr Werner Fink &lt;werner@suse.de&gt;).
-
- <li>fix definition of HAVE_UTMP_UT_HOST for ISC configuration (patch by
- &lt;michael.rohleder@stadt-frankfurt.de&gt;)
-
- <li>improve configure script's utmp tests (based on reports by Greg
- Smith for os390, and David Ellement for HPUX).
-
- <li>modify sinstall.sh to use uid=0 rather than 'root' to determine if
- the installer is privileged. This is needed on some systems since
- more than one account may be privileged (report by Greg Smith).
-
- <li>add an application resource, <code>messages</code> (and a
- corresponding -/+mesg option) which controls the initial permission
- on the terminal: if messages is set to true (the default), behavior
- is as without the patch; if it is set to false (as per -mesg), the
- terminal is opened in mode 0600, thus producing the effect of the
- <code>mesg n</code> command. This is useful for users who want to
- redirect all their messages to one particular xterm: it is more
- pleasant to do this with xterm resources than with explicit calls to
- the <code>mesg</code> program (patch, description by David Madore
- &lt;david.madore@ens.fr&gt;).
-</ul>
-
-<H1><A NAME="xterm_119">Patch #119 - 1999/10/16 - XFree86 3.9.16c</A></H1>
-<ul>
- <li>add responses (DA and DSR) for DEC locator mode
-
- <li>add coding for ANSI color to DA response
-
- <li>implement UTF-8 translation for Media Copy (print) operations.
-
- <li>implement vt320 control sequences for Print Composed Main Display
- and for Print All Pages. The latter directs xterm to print the
- current screen as well as the scrollback buffer.
-
- <li>correct error in _GNU_SOURCE configure test, which left it always
- defined.
-
- <li>add more information, i.e., with strerror for some system calls in
- the main program which may fail due to insufficient permissions
- (prompted by a problem report for <code>-C</code> by Jeremie Petit
- &lt;Jeremie.Petit@digital.com&gt;).
-
- <li>add workaround for conflict between &lt;X11/XPoll.h&gt; and
- &lt;sys/select.h&gt; on AIX 4.3 (Richard Griswold
- &lt;griswold@acm.org&gt;).
-
- <li>add configure script test to resolve conflict between between
- &lt;X11/XPoll.h&gt; and &lt;sys/select.h&gt;
-
- <li>modify translation of UTF-8 sequences to reject "overly long"
- variations (patch by Markus Kuhn).
-
- <li>remove <code>utf8controls</code> resource, since Markus' change
- removes the corresponding logic.
-
- <li>correct a case where colors were not rendered properly. This
- happened when an application inserted several lines, then changed
- colors. If this was done all in one write, then there would be no
- intervening refresh, and the new color was applied to the pending
- scrolling operation which was awaiting the next refresh (reported
- by Stephane Chazelas &lt;Stephane_Chazelas@Raytheon.com&gt;).
-
-</ul>
-
-<H1><A NAME="xterm_118">Patch #118 - 1999/10/5 - XFree86 3.9.16b</A></H1>
-<ul>
- <li>refine configure test for utmp versus utmpx, to build on HP-UX 10.x
- (reported by David Ellement).
-
- <li>move the configure check for <code>const</code> after the check
- for ANSI C compiler options, since those may be required to make
- it work properly on HP-UX.
-
- <li>add configure test for defining <code>_GNU_SOURCE</code>
-
- <li>correction to <em>-hold</em> option, ensure that if data is already
- in the output buffer that it will be displayed before closing the
- PTY.
-
- <li>move the configure checks for setuid install of xterm into a script
- to avoid installing it setuid'd to a non-root user (reported by
- Adam Sulmicki &lt;adam@cfar.umd.edu&gt;).
-
- <li>correct configure script's check for termcap.h to avoid using
- ncurses' version of it on systems that have a working
- <code>tgetent()</code> function. This is needed to make
- <code>resize</code> work properly.
-
- <li>fix some typography in ctlseqs.ms description of DEC locator events
- (reported by Steve Wall).
-</ul>
-
-<H1><A NAME="xterm_117">Patch #117 - 1999/9/29 - XFree86 3.9.16b</A></H1>
-<ul>
- <li>change order of tests in configure script for utmp and utmpx
- to test utmpx first, to compile on Solaris (reported by
- Leena Heino &lt;liinu@uta.fi&gt;
- and Patrik Hagglund &lt;patha@ida.liu.se&gt;).
-
- <li>add a configure test for utmp.ut_xtime, needed for SCO Openserver,
- and for lastlog, needed for Redhat 6.0, to refine the utmp/utmpx
- auto-configure.
-
- <li>remove a spurious comma in an #undef (reported by
- David Green &lt;greendjf@cvhp152.marconicomms.com&gt; and
- David Ellement &lt;ellement@sdd.hp.com&gt; both on HP-UX, whose
- compiler does care about syntax).
-
- <li>change ifdef's using __CYGWIN32__ to __CYGWIN__ (reported by Suhaib
- M. Siddiqi &lt;Ssiddiqi@InspirePharm.Com&gt;, who is told that the
- next Cygnus release will drop that symbol in their next release).
-
- <li>minor cleanup of ifdef's for makeColorPair (patch by Steve Wall).
-
- <li>patch by Alexander V Lukyanov to work around problem observed
- in XFree86 3.3.5, reported as bug #5419 to Mozilla. From the
- problem report:
- <blockquote>
- xterm consumes cpu when selecting text with mouse (holding
- down left mouse button) and when a program working under the
- xterm outputs something to stdout.
- <p>
- Easy way to reproduce:<br>
- <code>while :; do echo aaa; sleep 1; done</code><br>
- (while this runs, select text and hold down left mouse button)
- watch cpu load.<br>
- release left mouse button - spinning stops.
- </blockquote>
-</ul>
-
-<H1><A NAME="xterm_116">Patch #116 - 1999/9/25 - XFree86 3.9.16a</A></H1>
-<ul>
- <li>modify warning if change-ownership of PTY fails; some
- configurations may not happen to have old-style pty's (reported by
- Bob Maynard).
-
- <li>improve check in configure script for group ownership of installed
- xterm; some platforms use the -g option of ls to toggle group off
- rather than on (reported by Greg Smith).
-
- <li>minor improvement to toolbar geometry, to make it not resizable.
- This still is not satisfactory (but is usable) since the toolbar
- overlaps the xterm widget if the window is resized to make it
- smaller. It appears that some work is needed for the xterm widget's
- geometry management to make it function properly.
-
- <li>implement configure script tests for utmp, tty group.
-
- <li>implement <em>-hold</em> option, allowing users to retain the
- window after a shell has exited (this is recently an FAQ, but
- prompted by a comment by Joachim Plaettner-Hochwarth
- &lt;plaettner@aem.umn.edu&gt; in comp.unix.programmer, that the IRIX
- winterm provides this option).
-
- <li>integrated change by Steve Wall to
- add support for DEC Locator control sequences for xterm:
- <pre>
-
- DECEFR - Enable Filter Rectangle
- DECELR - Enable Locator Reports
- DECSLE - Select Locator Events
- DECRQLP - Request Locator Position
- </pre>
- This allows the xterm mouse to be used with applications that use the
- DEC Locator sequences, such as VAX Tpu, or SMG$ based applications.
-
- <li>patch from Matthias Baake &lt;Matthias.Baake@gmx.de&gt;, for print
- action. From his notes:
- <ul>
- <li>Bug 1:
- Underlined text is preceded by ESC [0;2m . This should be ESC [0;4m , ESC
- [2m doesn't seem to have any effect. (print.c/send_SGR)
-
- <li>Bug 2:
- The check for the last non-empty column (while (last &gt; 0) ... in
- print.c/printLine) omits the rightmost column of the screen, the loop must
- start with last = screen-&gt;max_col+1 instead of last = screen-&gt;max_col.
-
- <li>Bug 3:
- Any attributes of the first character (and of all immediately following
- characters with the same attributes) are ignored. The variable attr
- (print.c/printLine) should be initialized with 0, not with *a &amp; SGR_MASK.
- </ul>
-</ul>
-
-<H1><A NAME="xterm_115">Patch #115 - 1999/9/18 - XFree86 3.9.16a</A></H1>
-<ul>
- <li>integrated changes by Steve Wall to implement an 88-color model
- for systems where 256-colors cannot be allocated.
-
- <li>when 256-color configuration is compiled, colored bold and
- underlining is not available; ifdef'd to avoid possible odd effects
- in this case (reported by Steve Wall).
-
- <li>add resource <em>cacheDoublesize</em>, to limit the caching of font
- information for double-sized characters. This addresses a problem
- reported by Aryeh Koenigsberg for X terminals with limited font
- memory.
-
- <li>modify treatment of line-drawing characters in UTF-8 mode so that
- the Unicode values are used rather than the C0 codes for storing the
- translated characters (request by Markus Kuhn).
-</ul>
-
-<H1><A NAME="xterm_114">Patch #114 - 1999/9/15 - XFree86 3.9.16</A></H1>
-<ul>
-
- <li>add configure script checks for Athena headers and libraries under
- /usr/contrib to work on HPUX (reported by several people:
- David Nixon &lt;djn@csc.liv.ac.uk&gt;
- Aryeh Koenigsberg &lt;aryeh.koenigsberg@telrad.co.il&gt;
- Johannes M&#x00E4;hner &lt;johanm@camline.com&gt;
- Andrew Gaylard &lt;andrew.gaylard@bsw.co.za&gt;).
-
- <li>add check to configure script if xterm is installed setgid rather
- than setuid, since wtmp and utmp may be installed with group-writable
- permissions other than root (based on Debian bug report #7112 by Bo
- Branten &lt;bosse@ing.umu.se&gt;).
-
- <li>rewrote logic that removes data from termcap entry, e.g., for
- titeInhibit, to make it less likely to remove the wrong data.
-
- <li>correct logic which checks for missing characters used for line
- drawing. The 0 character was tested unnecessarily, leading to
- some inefficiency when rendering.
-
- <li>change termcap capability which is used as input or output of
- ptyInitialErase logic from <em>kD</em> to <em>kb</em>.
- Christian Weisgerber &lt;naddy@mips.rhein-neckar.de&gt; pointed out
- in effect that <em>kD</em> (in terminfo <em>kdch1</em>) should
- correspond to the control sequence for <em>dch1</em>, which deletes
- from the current position toward the right.
-
- <li>check for failure to change ownership of the PTY device and warn
- when xterm is running setuid'd to root. This was reported to happen
- on the FreeBSD/NetBSD/OpenBSD systems as a result of the chflags()
- call.
-
- <li>add xterm-noapp terminfo entry to illustate a nominally
- bash-compatible terminal description.
-</ul>
-
-<H1><A NAME="xterm_113">Patch #113 - 1999/8/15 - XFree86 3.9.15b</A></H1>
-Several fixes. The main one is a first draft of pulldown menus. It's not
-complete (I have some minor/annoying geometry problems to correct), but is
-usable. Once it's complete I plan to add a menu to support additional
-selections that won't fit on the current popup menus. Also, this fits into my
-longterm plan to allow configuring with Motif libraries.
-
-<ul>
- <li>correct error in input conversion for NRC mode (reported by
- Stefan Traby &lt;stefan@sime.com&gt;).
-
- <li>fix initialization of num_lock data in Misc struct (since those
- fields of the reference widget aren't initialized), and add logic to
- deal with XVision whose NumLock key does not transmit but does alter
- keypad state.
-
- <li>correct a missing return-value in get_pty(), for SCO
-
- <li>add E2A fix for backspace (Greg Smith), i.e.,<br>
- #define VAL_INITIAL_ERASE A2E(127)
-
- <li>correct foreground color within cursor outline when the
- window is unfocused (reported by Stephane Chazelas).
-
- <li>corrected position of scrollbar set in ResizeScrollBar(), which
- left it positioned incorrectly if the right scrollbar were enabled
- from the popup menu but was not initially enabled.
-
- <p>
- I have noticed some additional problems with right-scrollbar on
- X11R5 which I will correct later.
-
- <li>integrate changes by Jean-Claude Michot for QNX from XFree86 3.3.4c
-
- <li>add resources menuBar/MenuBar, menuHeight/MenuHeight for later
- use in toolbar geometry.
-
- <li>add configure option --enable-toolbar
-
- <li>add missing definition to make ziconbeep logic not compile-in when
- configure script disables it.
-
- <li>add configure-check for input-method support in X libraries
-</ul>
-
-<H1><A NAME="xterm_112">Patch #112 - 1999/7/17 - XFree86 3.9Pw</A></H1>
-<ul>
- <li>add null-pointer check to FlushLog(), fixes a core dump when both
- -l and -lf options are used when xterm is configured with wide-character
- support.
-
- <li>remove "ISO" case for SD, which was due to a typographical error in
- ECMA-48 (reported by Paul Williams &lt;paul@celigne.co.uk&gt; for
- vttest).
-
- <li>add "FILES" section to manpage.
-
- <li>generate header file to initialize default resources for colors
- 16-255.
-
- <li>patches by Greg Smith for os390:
- <ul>
- <li>add README.os390
-
- <li>use the pty_search() function to find an available pty/tty pair.
-
- <li>move E2A() call out of getXtermCell() to SaveText() function
- so it will be available in all configurations.
- </ul>
-
- <li>patches by Todd Larason:
- <ul>
- <li>enable SGR 48 5 in ISO color mode, not just 256 color mode
-
- <li>change configure's --disable-256-color option to
- --enable-256-color, to match its effect
-
- <li>fix OSC 4 xx ? (report ansi color) to report a string which can
- actually be used to set the color back
-
- <li>fix OSC 4 xx yy (change ansi color) to not allow setting colors &gt;
- 15 in 16 color mode
-
- <li>simplify the COLOR_ settings a bit in ptyx.h, along with setting
- NUM_ANSI_COLORS needed for #1 and #4 above
-
- <li>correct string-terminator code passed for reference to OSC
- responses; when in 7-bit mode, only the final byte of ST was seen.
-
- <li>Allow multiple color #;name pairs in OSC 4,
- and document changes to match.
- </ul>
-</ul>
-
-<H1><A NAME="xterm_111">Patch #111 - 1999/7/10 - XFree86 3.9Pw</A></H1>
-<ul>
- <li>add control sequences for specifying the RGB value of the ANSI
- colors, and for configuring with 256 colors (patch by Todd Larason
- &lt;jtl@molehill.org&gt;). I made the default configuration to
- 16-colors, because xterm uses the default color map (which has only
- 256 colors).
-
- <li>correct an error in DCS $ q m reporting for colors 8-15 (Todd
- Larason).
-
- <li>add test/demo script for double size characters. Used this to
- test/correct display of double size characters that should wrap,
- underlined double size characters.
-
- <li>increased cache size for double size fonts to 8, to allow for both
- normal and bold fonts (from discussion with Aryeh Koenigsberg
- &lt;aryeh.koenigsberg@telrad.co.il&gt;).
-
- <li>integrated patch from Greg Smith &lt;rys@epaibm.rtpnc.epa.gov&gt;
- for port to OS390 (aka MVS). OS390 uses EBCDIC rather than ASCII.
-
- <li>correct an off-by-one in binary search limits in keysym2ucs.c (Markus
- Kuhn).
-
- <li>implement logging for UTF-8 mode. The output is written in UTF-8 form.
-</ul>
-
-<H1><A NAME="xterm_110">Patch #110 - 1999/6/29 - XFree86 3.9Pu</A></H1>
-<ul>
- <li>If colorMode is enabled by default, compile-in default resources to
- match the colors listed in XTerm-col.ad (this should fix a
- longstanding FAQ).
-
- <li>added new OSC&nbsp;3&nbsp;;&nbsp;PROPNAME=VALUE&nbsp;ST escape
- sequence to set an arbitrary X property on the top level xterm X11
- window. Omit "=VALUE" to delete the X property (patch by Greg Badros
- &lt;gjb@cs.washington.edu&gt;).
-
- <li>change internal flag used for <em>utf8controls</em> resource
- so we allow 31-bit range of characters (suggested by Thomas Wolff).
-
- <li>add check for 16-bit characters in OSC strings, change them to '?'
- (reported by Thomas Wolff).
-
- <li>modify logic of same_font_name() to avoid trying to interpret both
- parameters as wildcard patterns. That does not (cannot) work, and in
- some instances the font server will return unresolved wildcards for
- the normal or bold fontnames, making them match inadvertently,
- triggering the fallback overstrike logic (reported by Tim Adye).
-</ul>
-
-<H1><A NAME="xterm_109">Patch #109 - 1999/6/23 - XFree86 3.9Pt</A></H1>
-<ul>
- <li>correct range-check from patch #108, which resulted in not being
- able to select from the scrollback buffer (reported by Tim Adye
- &lt;T.J.Adye@rl.ac.uk&gt;)
-
- <li>correct "no available ptys" problem with Cygwin B20.1 (patch by Tim
- Adye).
-
- <li>modified install-ti rule in Makefile.in to allow override of the
- terminfo directory when doing a "make install", i.e., by assigning
- to TERMINFO_DIR (request by Zdenek Sekera &lt;zs@sgi.com&gt;).
-
- <li>added install-full rule to Makefile.in
-
- <li>resync mkdirs.sh and install.sh scripts against current autoconf
-
- <li>implement $(DESTDIR) in Makefile.in, making it simple to install
- xterm and associated files into a directory just for packaging a
- binary release (suggested by CaT &lt;cat@zip.com.au&gt;).
-
- <li>change IChar type to unsigned, rather than unsigned short, making
- room for a flag to keep with 16-bit characters to prevent them from
- being interpreted as C0 or C1 controls (reported by Thomas Wolff).
-
- <li>correct a typo from patch #107, incorrect array name, in the
- filterUTF8 function (patch by Bruno Haible &lt;haible@ilog.fr&gt;)
-
- <li>add <em>utf8controls</em> resource to specify whether xterm should
- interpret 16-bit characters unpacked from UTF-8 form as control
- characters if they happen to fall into that range. This behavior
- is left unspecified by the Unicode standard (request by Thomas Wolff).
-
- <li>modify handling of OSC to recover if application sends 16-bit
- characters with codes above 255. We cannot display them as is, but
- translate out-of-range characters to a '?' (reported by Thomas
- Wolff).
-</ul>
-
-<H1><A NAME="xterm_108">Patch #108 - 1999/6/19 - XFree86 3.9Ps</A></H1>
-<ul>
- <li>add a range-check to LastTextCol(), to guard against indexing
- before the beginning of the scrollback buffer. This appears to
- happen with certain fonts under X11R5 (reported by Stephane Chazelas
- &lt;Stephane_Chazelas@Raytheon.com&gt;).
-
- <li>implement resource <em>boldMode</em>, to allow disabling the
- simulation of bold fonts when the bold and normal fonts are not
- different (requested by Will Day &lt;willday@rom.oit.gatech.edu&gt;).
-
- <li>change the atom "UTF-8" to "UTF8_STRING", and fixes a few bugs in
- the UTF-8 selection (patch by Juliusz Chroboczek).
-
- <li>correct logic of binary-search in keysym2ucs.c (patch by Markus
- Kuhn).
-
- <li>add special interpretation of keysym codes above 0x1000000 as
- the corresponding UCS value plus 0x1000000 (patch by Markus Kuhn).
-</ul>
-
-<H1><A NAME="xterm_107">Patch #107 - 1999/6/12 - XFree86 3.9Pq</A></H1>
-<ul>
- <li>Two changes from Stephen P Wall.
- From his description:
- <blockquote>
- The first change is simple - I added ESC[3J to erase the stored lines
- above the screen. That's what the changes to util.c and ctlseqs.ms
- are.
- <p>
- The second change is to get the blinking cursor working. I took out
- the cursorBlinkTime resource, and put in cursorBlink (Boolean),
- cursorOnTime (time cursor is on in msecs) and cursorOffTime, and added
- a cursorblink item to the vtMenu to enable/disable it.
- </blockquote>
-
- <li>Integrated a patch from Juliusz Chroboczek &lt;jec@dcs.ed.ac.uk&gt;.
- From his description:
- <blockquote>
- With this patch, selection conversion works properly:
-<pre>
- ISO 8859-1 xterm -&gt; ISO 8859-1 xterm (transferred as STRING);
- ISO 8859-1 xterm -&gt; UTF-8 xterm (transferred as STRING);
- UTF-8 xterm -&gt; ISO 8859-1 xterm (transferred as STRING);
- UTF-8 xterm -&gt; UTF-8 xterm (transferred as UTF-8).
-</pre>
- It will not work properly if one xterm is in, say, ISO 8859-2.
- Actually, for this case xterm breaks the ICCCM routinely (sending ISO
- 8859-2 data as STRING), so I wouldn't worry too much about it. I have
- not changed the behaviour in eight-bit mode in any way.
- </blockquote>
-</ul>
-
-<H1><A NAME="xterm_106">Patch #106 - 1999/6/9 - XFree86 3.9Pq</A></H1>
-<ul>
- <li>remove duplicate fix for OpenBSD in resize.c
-
- <li>correct logic in ScreenWrite, which did not reset the high bytes
- of 16-bit characters when overwriting them with a 8-bit character
- string (reported by Thomas Wolff).
-
- <li>integrate patch by Markus Kuhn to provide limited support for
- input of UTF-8 16-bit data by a lookup table.
-
- <li>correct check in non_blank_line to ensure we're in wide-character
- mode before looking at the high bytes, for InsertChar.
-</ul>
-<H1><A NAME="xterm_105">Patch #105 - 1999/6/5 - XFree86 3.9Pp</A></H1>
-<ul>
- <li>implement new resource <em>trimSelection</em>, which allows xterm
- to trim trailing blanks from selected lines. This does not affect
- the highlighting. (reported by several people using <em>mutt</em>,
- including
- Hans Morten Kind &lt;edphk@uib.no&gt;,
- Jeremy &lt;jeremy@exit109.com&gt;
- and (Michael Fuller &lt;msf@mds.rmit.edu.au&gt;).
-
- <li>add patch by Matthieu Herrb to include term.h in resize for OpenBSD.
-
- <li>correct logic for UTF-8 in functions that hide and show the cursor;
- it was displaying a space whenever the low byte of the character at
- the cursor position was zero (reported by Thomas Wolff
- &lt;Thomas.Wolff@icn.siemens.de&gt;).
-</ul>
-
-<H1><A NAME="xterm_104">Patch #104 - 1999/5/30 - XFree86 3.9Pn</A></H1>
-This is a resync patch against XFree86 3.9Pn, reflecting changes which were
-submitted by Branden Robinson, who worked with
-Wichert Akkerman &lt;wichert@cs.leidenuniv.nl&gt;
-to set up ifdef's to handle GNU libc 2.1,
-and use getpt() which lets xterm avoid having to know the actual PTY name.
-<p>
-I have also added a few fixes for signed/unsigned mismatches, and corrected
-a problem in the configure script (the UTF-8 code was always configured since
-the Imakefile defines this).
-
-<H1><A NAME="xterm_103">Patch #103 - 1999/5/14 - XFree86 3.9Pm</A></H1>
-<ul>
- <li>correct selection logic: I omitted an offset that accounts for
- the distance into the scrollback buffer when rewriting this for
- patch #101. Also fixed a similar problem for selecting double
- size characters from the scrollback buffer (first was reported
- by D Roland Walker &lt;walker@pobox.com&gt;).
-
- <li>improved support for Unix98 PTY's, using patch in Debian bug report
- #35650, by J.H.M. Dassen &lt;jdassen@wi.leidenuniv.nl&gt;. From
- the patch description:
- <blockquote>
- <ul>
- <li>No longer links xterm against libutil on a glibc2.1 system.
- libutil is a compatibility library and should only be used when
- necessary. Rather than having get_pty() use openpty() from this
- compatibility library, use the real UNIX98 pty support in get_pty()
- (open()ing the master pty, through getpt() if available (glibc
- extension)). Use openpty() only under glibc2.0.
- <li>GNU libc2 is not Linux-specific; already it runs on the Hurd. It
- provides the UNIX98 pty functions (plus the getpt() extension),
- regardless of the underlying OS. Changed two constructs to look for
- GNU libc2 only, not GNU libc2 on Linux.
- </ul>
- </blockquote>
-
- <li>improve font configuration, by checking if the user's resource
- settings for normal and bold fonts give the same font sizes
- (fixes problem reported by Peter Waltenberg &lt;peterw@dascom.com&gt;).
-</ul>
-
-<H1><A NAME="xterm_102">Patch #102 - 1999/5/12 - XFree86 3.9Pm</A></H1>
-<ul>
- <li>revert change to openpty call in patch #101; this causes xterm to
- fail on DEC-Alpha OSF/1 4.0B (reported by H Merijn Brand).
-
- <li>modify print.c to move include of stdio.h after the autoconf'd
- xtermcfg.h since HP's ANSI C compiler otherwise sees inconsistent
- prototype for getopt, probably due to problem with const (reported by
- H Merijn Brand).
-</ul>
-
-<H1><A NAME="xterm_101">Patch #101 - 1999/5/10 - XFree86 3.9Pm</A></H1>
-<ul>
- <li>moved includes and definitions for 'select' from data.h to xterm.h
- to fix problem introduced by prototype for getPtyData, part of UTF-8
- changes (reported by Jens Schleusener &lt;Jens.Schleusener@dlr.de&gt;)
-
- <li>added "Meta &lt;Btn2Down&gt;:clear-saved-lines()" default
- translation (patch by H Merijn Brand)
-
- <li>fixes to configure script and ifdef's in main.c to build on a
- HP9000/D390 (hppa-2.0w) running HP-UX 11.00 (64 bit) with egcs 1.1.2
- and HP's ANSI C compiler (patch by H Merijn Brand
- &lt;PROCURA_BV@CompuServe.com&gt;)
-
- <li>add more parentheses in ifdef's (patch by Bob Maynard).
-
- <li>eliminate conflicting definitions for USE_TERMINFO in resize.c
- (reported by Jeremy Buhler).
-
- <li>change openpty call to pass NULL rather than ttydev parameter,
- since that was used only to estimate the length of the
- corresponding data, and may not really be long enough
- (reported by Andreas Jaeger)
-
- <li>update description in xterm manpage for character class table,
- which said it handles only 7-bit codes.
-
- <li>correct a typo in ScrnDeleteChar() which made it not clear the
- high byte of wide-character data.
-
- <li>add logic to convert selection to UTF-8 form when appropriate.
- This makes select/paste "work", but further work is needed to
- make UTF-8 recognized as a locale in Xlib.
-
- <li>correct right-limit check when selecting double-width characters.
-
- <li>change default answerback response to an empty string.
-</ul>
-
-<H1><A NAME="xterm_100">Patch #100 - 1999/5/3 - XFree86 3.9Pl</A></H1>
-<ul>
- <li>Correct a typo in the default resource value for
- backarrowKeyIsErase: it was always true (reported by Bram
- Moolenaar).
-
- <li>improve configure script's test if the installed xterm is setuid,
- in case that is a symbolic link.
-
- <li>correct "install-ti" rule in Makefile.in, by not setting a blank
- $TERMINFO value. That is interpreted as "." by ncurses' tic.
-</ul>
-
-<H1><A NAME="xterm_99">Patch #99 - 1999/5/2 - XFree86 3.9Pk</A></H1>
-<ul>
- <li>correct logic that computes num_ptrs count of the number of indices
- into the screen buffer. This is the maximum of the colors and
- character-set indices; was incorrect in patch #97.
-
- <li>correct argument type for sigsetjmp, incidental change in patch
- #96's Unix88 PTY patch (reported by Bram Moolenaar).
-
- <li>correct description of secondary DA in ctlseqs.ms (reported by Bram
- Moolenaar).
-
- <li>decouple the backarrowKey and ptyInitialErase resources by
- adding a new resource backarrowKeyIsErase, to accommodate people
- using applications which have hardcoded tests for characters 8 and
- 127 rather than relying on the stty settings.
-
- <li>modify the UTF-8 decoder so that all possible illegal UTF-8
- sequences are properly represented by U+FFFD. This should be very
- helpful for developers of code that output UTF-8 strings for
- debugging. See the file utf-8-test.txt in
- http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz for a
- demonstration text that contains numerous illegal UTF-8 values.
- (patch by Markus Kuhn).
-
- <li>correct a place in ScrnRefresh where I was filling the high byte of
- a wide character with a space rather than a null (reported by Markus
- Kuhn).
-</ul>
-
-<H1><A NAME="xterm_98">Patch #98 - 1999/4/26 - XFree86 3.9Pk</A></H1>
-<ul>
- <li>correct data manipulation in unparseputc(), broken for
- little-endian machines by patch #97's UTF-8 changes. This meant that
- keyboard input on SunOS did not work, though Linux i386 was fine.
-
- <li>modify initialization for backarrowKey and logic for initial-erase
- to prevent the initial-erase from overriding an explicitly set
- backarrowKey resource (reported by Vikas Agnihotri).
-
- <li>add a missing null-pointer check in ScrnRefresh, for the
- wide-characters configuration.
-</ul>
-
-<H1><A NAME="xterm_97">Patch #97 - 1999/4/25 - XFree86 3.9Pk</A></H1>
-<ul>
- <li>add configure script test for -lutil, needed for openpty call when
- configuring xterm for Glibc-2.1 and Unix98 PTY's (first reported by
- Martin Lorentz" &lt;m.lorentz@w12.link-goe.de&gt;).
-
- <li>completely parenthesize ifdef expressions for Glibc (suggested by
- Bob Maynard).
-
- <li>add initial-erase options (-ie, +ie) to help message (reported by
- Vikas Agnihotri).
-
- <li>remove duplicate definition of USE_USG_PTYS (reported by Jeremy
- Buhler).
-
- <li>change termcap <em>kD</em> and terminfo <em>kdch1</em> to a DEL
- (\177).
- I overlooked this when separating the styles of keyboard with
- the <em>sunKeyboard</em> resources in patch #94, so that it normally
- matches the value of the stty erase character:
- <ul>
- <li>Reported by Jae Gangemi &lt;jgangemi@ccf.rutgers.edu&gt;,
- this caused emacs to not process the DEL properly, combining it
- with succeeding characters.
- <li>This does not appear to be related to a problem which I have
- found with <em>screen</em>, which translates the stty erase into
- the termcap <em>kD</em> or terminfo <em>kdch1</em> value
- (depending on how it is linked)
- if the $TERMCAP variable is set when <em>screen</em> is invoked.
- </ul>
-
- <li>add command-line options for enabling UTF-8 mode: -u8 and +u8.
- The more obvious -utf8 and +utf8 would conflict with xterm's
- -ut and +ut (utmp) options.
-
- The UTF-8 changes were requested by Markus Kuhn
- &lt;Markus.Kuhn@cl.cam.ac.uk&gt;. This patch does not complete UTF-8
- implementation, but makes it usable, i.e., display and refresh work,
- and I am able to display the test cases which Markus provides.
- More work is needed to complete this feature:
- <ul>
- <li>the control sequences for switching in/out of UTF-8 mode are
- partly implemented (don't use them). Similarly, the switching
- between vt100 and tek4014 emulations when UTF-8 mode is enabled
- will not work properly.
- <p>
- You must use the -u8 command line option
- to use this feature, as well as compile with the OPT_WIDE_CHARS
- definition.
- <li>cut/paste only copies 8-bit characters.
- <li>logging is disabled in the wide-character configuration
- <li>printing only writes 8-bit characters.
- <li>input only does 8-bit characters. This is the area that I know
- least about.
- </ul>
-</ul>
-
-<H1><A NAME="xterm_96">Patch #96 - 1999/4/19 - XFree86 3.9Pj</A></H1>
-<ul>
- <li>modify Makefile.in to work with configure script's --srcdir option.
- (patch by Jeremy Buhler &lt;jbuhler@cs.washington.edu&gt;)
-
- <li>add checks for 'echo -n' equivalent for 8colors.sh and 16colors.sh
- scripts (reported by Vikas Agnihotri).
-
- <li>improve logic that looks for bold fonts to allow for wildcards
- in the specification for normal fonts, and to ensure that if
- a bold font is specified as normal, that xterm will simulate a
- bold version of that using a one-pixel offset overstrike
- (reported by Henrik Harmsen &lt;harmsen@erv.ericsson.se&gt;).
-
- <li>correct horizontal spacing of double width line-drawing characters
- that xterm simulates.
-
- <li>improve support for Unix98 PTY's, using patch in Debian bug report
- #35650, by Topi Miettinen &lt;Topi.Miettinen@medialab.sonera.fi&gt;.
- Andreas Jaeger says this also corrects a permissions problem
- reported by cat@zip.net.au
-
- <li>modify initial-erase logic to ensure that <code>ttyModes</code>
- resource overrides it.
-</ul>
-
-<H1><A NAME="xterm_95">Patch #95 - 1999/4/5 - XFree86 3.9Ph</A></H1>
-<ul>
- <li>modify primary DA response to allow a '1' parameter.
-
- <li>add printer and national replacement character sets to VT220
- primary DA response.
-
- <li>document primary and secondary DA responses in ctlseqs.ms
-
- <li>use the patch number (e.g., 95) in the secondary DA response,
- providing user applications a means of determining the version
- of xterm for feature comparison (request by Bram Moolenaar).
-
- <li>make xterm respond to secondary DA when the decTerminalID
- is set for VT100.
-
- <li>limit user-defined keys (DECUDK) to VT220-style keyboard
- when sunKeyBoard resource is true.
-
- <li>modify ifdef's for Linux-2.2.x with Glibc-2.1 to work with
- Glibc-2.1 and no Unix98 PTY support (patch from From Andreas Jaeger
- &lt;aj@arthur.rhein-neckar.de&gt;)
-
- <li>add optional feature (resource and command-line options) to make
- xterm use the PTY's sense of erase character on startup, rather than
- requiring it to be \177, or set the PTY's erase character to match
- xterm's configuration. Note that while $TERMCAP is modified to
- reflect the actual configuration, the terminfo kdch1 string is not
- (request by Dirk H Hohndel &lt;hohndel@suse.de&gt;)
-
- <li>improve scripts in vttests to work with newer shells that do not
- use 'echo -n'.
-
- <li>add fonts.sh example script
-
- <li>correct inequality in handling of "#1" font specification.
-
- <li>correct call to XGetWMNormalHints() used for computing maximum
- screen size; the size hints may not have been set.
-
- <li>begin implementation of support for wide-characters (configure
- option --enable-wide-chars defines OPT_WIDE_CHARS, invoke xterm with
- -wc option to activate this feature). This patch optionally widens
- internal data structures, invokes the 16-bit text output rather than
- the 8-bit version and adds some tables.
-
-</ul>
-<H1><A NAME="xterm_94">Patch #94 - 1999/3/27 - XFree86 3.9Pf</A></H1>
-<ul>
- <li>further fixes for terminfo: ka1, ka3, etc., differ between the
- default xterm-xfree86 and xterm-vt220 entries.
-
- <li>change default (with sunKeyboard resource false) behavior of
- the editing keypad "Delete" to send a 127, like xterm-r6.
- The VT220-style <code>&lt;esc&gt;[3~</code> is sent when
- sunKeyboard is true (reported by Tomas Vanhala).
-
- <li>add parameters to function keys to indicate if shift, control
- or alt are set. The codes are based on a description of
- a DEC VT510 with a PC keyboard, from Jeffrey Altman
- &lt;jaltman@watsun.cc.columbia.edu&gt;.
-
- <li>add control sequence 1035, set-num-lock action and num-lock
- menu entry to control the use of the NumLock and Alt keys for
- the Sun/PC and VT220 keyboard extensions.
-
- <li>implement DECSET/DECRST numeric keypad (DECNKM) mode.
-
- <li>modify terminfo and termcap to use recommended "X Window" or "X11"
- names rather than "X Windows" (reported by Tomas Vanhala).
-
- <li>suppress translation of shifted keypad "+" when sunKeyboard
- is true.
-
- <li>workaround unexpected behavior (perhaps bug) in XmbLookupString,
- which returns trash in the string buffer for numlock and control-key
- combined with keypad-keys.
-
- <li>modify ScrollBarReverseVideo() to keep scrollbar border visible
- when reverse video is toggled.
-
- <li>correct missing case for parameter 17 (set highlight color) in
- dynamic colors control sequences.
-
- <li>extend dynamic colors control sequences to allow users to
- determine the colors and font which are currently active.
-
- <li>minor tweak to OSC responses, to use BEL if the application used
- that to end the request, rather than ST. This works better with
- shell scripts, which may not handle an
- <code>&lt;esc&gt;backslash</code> very well.
-
- <li>separate menu settings for reverse video from that done under
- program control.
-
- <li>corrected ifdef's for menus, which did not allow tek4014 to
- be suppressed properly (reported by Clint Olsen).
-
- <li>integrated patch from Pavel Roskin
- &lt;pavel_roskin@geocities.com&gt;
- for Linux-2.2.x with GLibc-2.1 and
- /dev/ptmx support:
- <ul>
- <li>main.c and resize.c were using different rules to determine
- whether ATT should be defined (actually USE_USG_PTYS is more
- apt).
-
- <li>copy definitions from main.c to resize.c to prevent
- sys/stream.h and sys/ptem.h from inclusion when SYSV is not
- defined
-
- <li>define CNUL if not already defined like other variables.
-
- <li>/dev/tty does exist in Linux, but it doesn't mean, it
- should be used. Therefore EACCES is now an acceptable
- result.
-
- <li>ifdef'd several calls such as <code>ioctl (ptyfd, I_PUSH,
- "ptem")</code> to build on Linux (I_PUSH is not defined when
- sys/stropts.h is not included).
- </ul>
-
- <li>initialize second "ltc" variable in main.c (reported by David
- Dawes).
-
- <li>provide definition for USE_USG_PTYS in screen.c
-
- <li>add resource-files to install rule in standalone Makefile.in
-
- <li>add sample scripts to illustrate titlebar controls, resizing
- and colors.
-</ul>
-
-<H1><A NAME="xterm_93">Patch #93 - 1999/3/14 - XFree86 3.9Pd</A></H1>
-Here are several fixes and minor enhancements. The chief ones
-are the fixes for NumLock mode and reverse video, since we had become
-used to working around the problems.
-<ul>
- <li>remove kfnd/kll/kslt strings from terminfo, because curses
- applications do not necessarily return khome/kend pairs
- (reported by Vikas Agnihotri).
-
- <li>implement NumLock resource which overrides the keyboard tables for the
- special case of keypad keys. This is a problem introduced in xterm
- by X11R6 changes, i.e., an ambiguity which in effect discarded vt100
- keypad support.
-
- <li>modify Sun/PC keyboard mode to extend this (emulation of DEC vt100
- keypad) to the remainder of the numeric keypad. Now, the default
- operating mode of xterm uses the keyboard tables as-is (except if
- the NumLock mode overrides), but provides good vt100 keypad compatibility
- if the Sun/PC keyboard menu item is checked.
-
- <li>separate command-line settings for reverse video from that done
- under program control. This is a problem which was introduced by
- X11R6. Though <em>correct</em>, most users are confused by allowing
- the reset command to undo the effect of the command-line <kbd>-rv</kbd>
- option.
-
- <li>add description of function keys, keypad and cursor keys to ctlseqs.ms
-
- <li>add terminfo entries for xterm-vt52, xterm-sun and xterm-hp
-
- <li>correct typo (missing case value) for DECSET 35, enable/disable
- shifted keypad action and a few compiler warnings (reported by Zdenek
- Sekera &lt;zs@sgi.com&gt;).
-
- <li>correct reporting of color values 8-15 in DECRQSS (reported by
- Vikas Agnihotri).
-
- <li>modify parsing of ttyModes resource to recognize "^-" as "undef"
- (requested by Tomas Vanhala).
-
- <li>integrate/extend changes to add iconify/maximize actions
- (from Edward S. Arthur &lt;eda@ultranet.com&gt;).
-
- <li>add control sequences for maximizing/restoring window, and
- for reporting maximum screen size.
-
- <li>add 'interpret' action, to support local function-key interpretation.
- Used properly, this makes most of the specialized actions of xterm
- redundant.
-
- <li>add control sequence private modes 1051, 1052 and 1052, for
- setting the Sun and HP function key modes, and for setting the
- Sun/PC keyboard mode.
-
- <li>add configure option --disable-maximize
-
- <li>add configure option --disable-num-lcok
-
- <li>extend descriptions of configure script options in INSTALL.
-</ul>
-
-<H1><A NAME="xterm_92">Patch #92 - 1999/2/5 - XFree86 3.9Nz</A></H1>
-<ul>
- <li>increase buffer size for tgetent (i.e., termcap) to 1500. This
- fixes a problem where <em>screen</em> is built using ncurses or
- GNU termcap and <em>xterm</em> is built using the standard termcap
- interface. The former does not limit the termcap size, while the
- latter is assumed to be no longer than 1023 characters. The
- <em>screen</em> program's termcap entry is about 1200 characters
- long.
-
- <li>change update_menu_item() to a function, to simplify debugging.
- This also reduces the executable by 4Kb.
-
- <li>add control sequences for DECSET 30, 1010, 1011 like rxvt (enable
- or disable some features that were only settable via resources or
- command line arguments).
-
- <li>add control sequence for DECSET 35, which enables/disables the
- shifted keypad functions.
-
- <li>add support for switching font sizes, by stepping through the
- font menu using shifted keypad plus and minus.
-
- <li>correct missing initialization of tekInhibit and tekSmall resources.
-
- <li>correct ifdef's in charproc.c for XtNgeometry and XtCGeometry
- (reported by Bram Moolenaar).
-</ul>
-
-<H1><A NAME="xterm_91">Patch #91 - 1999/1/21 - XFree86 3.9Nw</A></H1>
-<ul>
- <li>Implement logic to translate input characters which are mapped
- when in vt220 National Replacement Character mode (requested by
- Tomas Vanhala).
-
- <li>Resync configure scripts with my patches to autoconf 2.13
-
- <li>Change order of -lXmu and -lXext to accommodate cygwin32
- (reported by Vikas Agnihotri).
-
- <li>Add "-ti" option to set terminal emulation level from command
- line rather than via resource.
-
- <li>Simplify some of the preprocessor logic using #elif.
-</ul>
-
-<H1><A NAME="xterm_90">Patch #90 - 1998/12/13 - XFree86 3.9Nq</A></H1>
-This implements several small fixes and enhancements. The chief one implements
-fallback support for line drawing characters with fonts that do not include
-those characters. But I implemented that last.
-
-<ul>
- <li>If any of the glyphs in positions 0-31 (used by xterm to implement
- the VT100 alternate character set) are zero-sized (i.e., missing),
- xterm will reserve a normal space for the glyph when drawing. I
- implemented a simple stroke-drawing function to draw the line-drawing
- characters and a couple of the other (simpler) characters such as
- diamond. (This was suggested by Vikas Agnihotri).
-
- <li>Modify the computation of doublesize characters to work around font
- servers which shift the scaled characters up/down or do not give the
- correct width.
-
- <li>Add popup menu item and corresponding resource settings to disable
- the font-scaling logic for doublesize characters to work around
- (older) font servers which simply do not draw the fonts scaled to the
- size that they said they would. I see this problem on a SunOS system
- running X11R5; the X11R6 servers seem well behaved.
-
- <li>Implement new escape sequence, private mode 1049, which combines
- the switch to/from alternate screen mode with screen clearing and
- cursor save/restore. Unlike the existing escape sequence, this
- clears the alternate screen when switching to it rather than when
- switching to the normal screen, thus retaining the alternate screen
- contents for select/paste operations.
-
- <p>When I implemented the popup menu entry to toggle between the normal
- and alternate screens, I considered only pasting from the normal
- screen to the alternate; this improvement allows either direction.
-
- <li>Changed the termcap and terminfo for xterm-xfree86 and xterm-8bit
- to use the new 1049 private mode.
-
- <li>Modify the logic which switches between normal and alternate
- screens so that the save/restore cursor operations apply only to the
- current screen. That means that applications which use the terminfo
- smcur/rmcur or termcap ti/te capabilities will restore the cursor to
- the original position on the normal screen rather than to the most
- recent place where a save-cursor operation was performed.
-
- <p>I note that a real VT100 terminal would not behave in this way,
- but it is a moot point since the VT100 does not implement alternate
- screen, and therefore the save/restore cursor sequence would not be
- used in this context. I reviewed the logic which switches between
- normal and alternate screens based on some recent newsgroup postings
- as well as a proposed patch in the Debian group which attempts to
- do this (the patch has a bug, however, so I did not use it).
-
- <li>Add popup menu entry for toggling the titeInhibit resource.
-
- <li>Add new resource answerbackString, which overrides the default
- "xterm" returned by xterm when responding to an ENQ (control/E)
- character (request by Rajesh Vaidheeswarran &lt;rv@fore.com&gt;).
-
- <li>Add new resource keyboardDialect for setting the NRC display
- character set (request by Tomas Vanhala, who notes that I should
- add logic to translate the keyboard as well).
-
- <li>Add new command-line option and corresponding resources for making
- xterm generate escape sequences compatible with HP terminals. Like
- the existing Sun escape sequences, this is available as a popup menu
- item. It is enabled by the configure script with the option
- --enable-hp-fkeys (requested by Toni Mueller &lt;sales@oeko.net&gt;).
-
- <li>Add configure script option --disable-boxchars to disable the
- fallback support for line drawing characters.
-
- <li>Fix ifdef's for configure script --disable-ansi-color, and reviewed
- all configure options to ensure that all can be enabled/disabled
- appropriately.
-
- <li>Update config.guess and config.sub, from Lynx.
-</ul>
-
-<H1><A NAME="xterm_89">Patch #89 - 1998/11/20 - XFree86 3.9Nm</A></H1>
-This patch completes the implementation of double-sized character support
-for the VT100 emulation, and fixes a few minor bugs:
-
-<ul>
-<li>corrected the cursor position in HideCursor, which did not multiply
-the column by two when in doublesize mode.
-This bug, which did not appear in normal use,
-dates back to my original <a href="#xterm_44">changes</a> to partly implement
-double-sized characters.
-I noticed it when cat'ing a typescript from vttest's double-sized character
-test.
-<li>ensure that the current line is repainted when switching between
-single and double width characters.
-<li>reduce the number of bits used for double-sized character coding
-from 3 to 2, to make more room for soft-font codes.
-<li>copy newer ifdef's from the XFree86 3.3.3 release's main.c,
-which address details of glibc and powerpc.
-<li>moved definition of DECL_ERRNO in xterm.h to match XFree86 3.3.3
-<li>modify <em>resize</em> to remove the ifdef on SVr4 that suppressed
-printing the script for $LINES and $COLUMNS.
-Solaris' resize utility does this; suppressing the behavior is unnecessary.
-</ul>
-I tested the double-sized characters using vttest and the xfsft patch.
-These fonts worked reasonably well:
-<pre>
- -bitstream-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1
- 9x15
-</pre>
-The iso8859 font does not include box characters, of course, but looks good.
-
-<H1><A NAME="xterm_88">Patch #88 - 1998/10/31 - XFree86 3.9Nk and 3.3.2h</A></H1>
-This refines my #85 patch by checking for a case where the font server
-returns a bold font that does not quite correspond to the normal font.
-When I asked for a bold version of the 6x12 font, the font server
-returned a near equivalent where the ascent and descent values did not
-match, causing xterm to leave lines across the display.
-This patch makes xterm reject that type of mismatch, falling back to the
-old font behavior.
-
-<H1><A NAME="xterm_87">Patch #87 - 1998/10/21 - XFree86 3.9Nj and 3.3.2f</A></H1>
-This corrects a problem reported by Stefan Dalibor. My table entries for the
-<em>printerExtent</em> and <em>printerFormFeed</em> resources used the wrong
-types for sizeof, causing the printer to not work properly on some platforms
-because the <em>printAttributes</em> resource was overwritten (e.g., Digital Unix with DEC Alpha).
-<p>
-I reviewed all of the resource table entries and fixed a potential problem with
-<em>resizeGravity</em>, which was typed as <em>int</em> rather than
-<em>XtGravity</em>.
-
-<H1><A NAME="xterm_86">Patch #86 - 1998/10/14 - XFree86 3.9Nj and 3.3.2e</A></H1>
-A small fix: when switching to/from the continuous mouse reporting mode,
-the event mask was incorrect if xterm was built under X11R5 because the
-original data was saved under an ifdef for active-icon.
-
-<H1><A NAME="xterm_85">Patch #85 - 1998/10/12 - XFree86 3.9Nj and 3.3.2e</A></H1>
-Some cleanup (I noticed the pixel droppings a few months ago after getting a
-new 17" monitor):
-<ul>
- <li>split-out the functions that load/reload fonts for xterm as new
- file fontutils.c to extend them to support automatic loading of
- bold font corresponding to the normal font. Adapted logic from
- EMU 1.3 for this purpose. This fixes most occurrences of pixel
- droppings from bold characters.
-
- <li>modified by renaming variables and adding casts to permit compile
- with g++.
-
- <li>modify headers so they can all be compiled without order
- dependencies, and use bracketed rather than quoting includes to allow
- compile from separate directory.
-
- <li>renamed xtermm terminfo entry to xterm-mono, to avoid conflict with
- Solaris entry now in ncurses.
-</ul>
-
-<H1><A NAME="xterm_84">Patch #84 - 1998/10/9 - XFree86 3.9Ni</A> and 3.3.2e</H1>
-Several small fixes and enhancements, including a patch from
-Bjorn Helgaas:
-<ul>
- <li>correct initialization of TERMCAP environment variable, which
- was frequently set to garbage on non-Linux systems because
- "termcap" and "newtc" contained random data from the stack.
-
- <li>remove the LINEWRAPPED attribute from lines as they are cleared.
- Previously, the attribute was set but never cleared.
-
- <li>make word and line selections work even when lines are wrapped
- by xterm. Previously, selections were limited to one screen line.
-</ul>
-as well as
-<ul>
- <li>modify logic for line-wrapping to reset the associated flag if
- the application deletes a character. This fixes a problem reported
- by Bjorn Helgaas where word/line selection would still wrap even
- after deleting characters from the first line.
- <li>add kll/kH capabilities to xterm-xfree86 entries in termcap and
- terminfo (request by Michael Schroeder).
- <li>shorten descriptions in termcap to make resolved entries all
- shorter than 1023 character limit.
- <li>use DECSTR control sequence to shorten initialization and reset
- strings in xterm-xfree86 termcap and terminfo.
- <li>use rmul/smul and rmir/smir in xterm-r5 terminfo to match termcap.
- <li>correct typos in initialization and reset strings in xterm-r5
- termcap and terminfo.
- <li>disable special translations of key symbols (the backarrow key,
- the editing keypad and the keypad "+") when a modifier other than
- shift, control or numlock is used. This makes xterm handle the meta
- key as expected by people using emacs (reported by Pete Harlan
- &lt;harlan@pointofchoice.com&gt; in linux.debian.user newsgroup).
-</ul>
-
-<H1><A NAME="sync_83">Resync #83 - 1998/10/7 - XFree86 3.3.2e</A></H1>
-
-Merge changes through patch #83 with the 3.3.2e version. This follows a
-patch by Matthieu Herrb &lt;matthieu@laas.fr&gt; to add checks for non-null
-return from malloc.
-
-<H1><A NAME="xterm_83">Patch #83 - 1998/8/25 - XFree86 3.9Nb</A></H1>
-Several small fixes and enhancements:
-<ul>
- <li>add configure test to infer if xterm should be installed setuid
- based on previously installed xterm (reported by Stephen Marley
- and Stefan Dalibor).
-
- <li>integrate/extend patch by Jason Bacon to implement quasi-continuous
- mouse reporting.
-
- <li>correct control sequences transmitted by function keys F1 to F4
- when sunFunctionKeys resource is true (it was still using the
- VT100 control sequences).
-
- <li>modify handling of backarrow key so that the control modifier
- toggles the backspace/delete interpretation set by the
- backarrowKey resource.
-
- <li>limit the row and column values used to report mouse position.
-</ul>
-
-From resync with XFree86 3.9Nb:
-<ul>
- <li>add support for the VSTATUS control character (patch by
- Robert Earl &lt;rearl@teleport.com&gt;).
-</ul>
-
-<H1><A NAME="xterm_82">Patch #82 - 1998/7/15 - XFree86 3.9Aj</A></H1>
-Bug fix for patch #81:
-<ul>
- <li>remove an #undef for NBBY, which caused compile problem on FreeBSD
- (reported by David Dawes).
-</ul>
-
-<H1><A NAME="xterm_81">Patch #81 - 1998/7/14 - XFree86 3.9Aj</A></H1>
-More bug fixes:
-<ul>
- <li>fix conflicting ifdef's for TIOCSLTC when building with Linux on
- AXP aka DEC Alpha (reported by Robin Cutshaw).
-
- <li>correction to patch #79, move assignment for *utptr-&gt;ut_user = 0;
- back into non-SVR4 ifdef in main.c, since this clobbers username on
- Solaris 2.5.1 (analysis by Will Day
- &lt;willday@rom.oit.gatech.edu&gt;).
-
- <li>corrected khome/kend in xterm-8bit terminfo description.
-
- <li>improve cursor color by making it always the reverse of fg/bg
- unless the cursorColor resource is set, i.e., to something other than
- the default foreground (reported by Vikas Agnihotri and Bram
- Moolenaar).
-
- <li>minor fixes for compiler warnings, including a syntax error in
- the AMOEBA ifdef's.
-</ul>
-From resync with XFree86 3.9Aj:
-<ul>
- <li>correction to patch #73, supply missing #else for fallback definitions
- of size_t, time_t (Robin Cutshaw &lt;robin@intercore.com&gt;).
-</ul>
-
-<H1><A NAME="xterm_80">Patch #80 - 1998/6/29 - XFree86 3.9Ai</A></H1>
-This fixes a couple of items leftover or introduced by patch 79:
-<ul>
- <li>take out the logic that suppresses editing-keypad in vt100 mode
- (those keys are too valuable to give up for a fine point of
- emulation).
-
- <li>corrected a couple of places in terminfo where I missed using the
- vt220-style editing-keypad codes for Find/Select (mapped to Home/End).
-
- <li>checked termcap file against terminfo, fix several places where it
- was inconsistent.
-</ul>
-
-<H1><A NAME="xterm_79">Patch #79 - 1998/6/28 - XFree86 3.9Ai</A></H1>
-
-This patch fixes several small bugs:
-<ul>
- <li>use X_EXTRA_LIBS in standalone Makefile.in (patch by Tomas Vanhala).
-
- <li>add new resource 'oldXtermFKeys' which provides backward compatibility
- for F1-F4 control sequences with TOG's xterm.
-
- <li>determine the server's default foreground/background Pixel values,
- needed if the -flipPixels X server option is used (reported by
- David Dawes).
-
- <li>correct logic for F1-F4 function keys so that they generate VT100
- compatible escape sequences in VT220 mode, since that is what the
- numeric keypad is supposed to do (reported by Ron Johnson, Jr.
- &lt;ronjohn@communique.net&gt;).
-
- <li>modify logic for editing keypad to work more like VT220: don't
- pass those codes in VT100-mode unless oldXtermFKeys mode is set.
-
- <li>correct an interaction with the editing-keypad logic that prevented
- backarrow key from sending a 127 for the delete key (the 'remove'
- escape sequence was being sent instead).
-
- <li>use return-value from getuid() rather than the parameter, to work on
- systems which do not update the latter (patch by Kevin Buhr
- &lt;buhr@mozart.stat.wisc.edu&gt;)
-
- <li>correct scrollbar border color when toggling to/from secure keyboard
- mode (patch by Jeff Uphoff &lt;juphoff@tarsier.cv.nrao.edu&gt;)
-
- <li>modifications to terminfo file:
-<ul>
- <li>rename description to xterm-xfree86, adding an entry 'xterm'
- which is derived from xterm-xfree86 to simplify customization.
-
- <li>change string for kdch1 from \177 to \E[3~, to address complaints
- from Debian developers. (This applies to the key labeled "Delete",
- and does not affect the backarrow key).
-
- <li>add user-strings u6, u7, u8, u9 to entries to make them work with
- Daniel Weaver's "tack" program.
-
- <li>modify xterm-24, xterm-bold, xterm-boldso entries to disentangle them from
- explicit dependency upon xterm-xfree86.
-
- <li>add generic 'xterm-color' entry.
-
- <li>minor corrections to xterm-xfree86, xterm-8bit, xterm-r5 and
- xterm-r6 entries.
-</ul>
-</ul>
-
-<H1><A NAME="xterm_78">Patch #78 - 1998/6/3 - XFree86 3.9Ah and 3.3.2</A></H1>
-
-Again, most of the bulk of this patch is for ANSI conversion. I used the
-IRIX compiler's -wlint option to find the remaining functions that use
-K&amp;R syntax (since gcc does not do this properly).
-
-Also, I changed the logic in the print code slightly to close unwanted files
-before opening a pipe to the printer. This may help in some configurations
-where the line printer hangs until xterm closes the pipe.
-
-<H1><A NAME="xterm_77">Patch #77 - 1998/5/26 - XFree86 3.9Ah and 3.3.2</A></H1>
-
-Most of the bulk of this patch is to convert the extended C (K&amp;R functions
-with prototypes) to ANSI. I verified that on Linux by comparing object
-files, to ensure that I did not, for example, interchange parameters in
-the function declarations.
-<p>
-The rest of the patch fixes several minor bugs, and adds a few features:
-<ul>
- <li>back-out my use of ncurses "captoinfo -f" option (if/then/else/endif)
- formatting, since ncurses did not correctly filter embedded newlines
- in terminfo capability strings until _after_ ncurses 4.1, thus
- corrupting setf/setb/sgr strings (reported by Darren Hiebert and
- others).
-
- <li>document SGR 8, 28 (invisible/visible), add corresponding
- capabilities to terminfo description.
-<p>
- I would also add the 'prot protected capability, but the control
- sequences for that would not be recognized or properly ignored by the
- older xterm programs.
-
- <li>modify ChangeGroup to not suppress a null-resource, but treat it as an
- empty string (recommended by Stefan Dalibor).
-
- <li>add printerAutoClose resource to control whether printer is closed
- when going offline. More than one person reports problems (on
- Solaris 2.6 and Digital Unix 4.0) getting the printer to proceed
- unless xterm exits; I think that it is a problem flushing the pipe.
- Closing it ought to flush it.
-
- <li>adapt TOG fix-3 to in HandleKeymapChange and VTInitI18N (but adapt
- XtStackAlloc/XtStackFree for clarity, as well as fixing memory leak).
-
- <li>change calls on FillCurBackground to ClearCurBackground, in effect
- using XClearArea rather than XFillRectangle when clearing as a
- side-effect of scrolling and insertion (patch by Alexander V
- Lukyanov)
-
- <li>correct some places where insert/delete did not _move_ the color
- attributes, using memmove (patch by Alexander V Lukyanov
- &lt;lav@long.yar.ru&gt;)
-
- <li>add ifdef's for __CYGWIN32__, for port to cygnus version B19.1
- (patch by Andrew Sumner &lt;andrew_sumner@hotmail.com&gt;).
-
- <li>remove #define for hpux that turned on USE_SYSV_ENVVARS, since this
- causes some applications (such as 'less') to get incorrect $LINES and
- $COLUMNS values (reported by Clint Olsen).
-
- <li>modify behavior for HP-UX, to set the "reserved" process group
- controls to _POSIX_VDISABLE so the TIOCSLTC ioctl does not produce an
- error (patch by Ben Yoshino &lt;ben@wiliki.eng.hawaii.edu&gt;).
-
- <li>correct length of underlining, reducing it by one pixel to avoid
- leaving a dot when the application does not clear the whole screen
- (patch by (Sergei Laskavy &lt;Laskavy@cs.msu.su&gt;).
-<p>
- I noticed this only recently myself (and other people as well); it
- depends on the font chosen. A 6x10 font shows it, but the other
- fonts (from XTerm.ad) do not. I also see a similar problem with the
- emulation of bold fonts.
-
- <li>add include for Xos.h to xterm.h, to ensure proper definitions
- (reported by Holger Veit).
-
- <li>update config.guess to recognize Unixware 2.1 and 7 (patch by
- Mike Hopkirk &lt;hops@sco.com&gt;).
-</ul>
-
-<H1><A NAME="xterm_76">Patch #76 - 1998/5/8 - XFree86 3.9Ah and 3.3.2</A></H1>
-
-A fix for the print-window function, and some minor cleanup:
-<ul>
- <li>modify logic that closes pipe in the print-window function to not use
- pclose, which does not work on all systems, since I did not open the
- pipe with popen (reported by Stefan Dalibor).
-
- <li>correct name of $(EXTRA_LOAD_FLAGS) imake variable (reported
- by Stefan Dalibor).
-
- <li>guard logic in ChangeGroup() function against null pointer
- (reported by Stefan Dalibor).
-
- <li>ensure that menu entry for toggling sunKeyboard resource is
- initialized (reported by Branden Robinson &lt;branden@purdue.edu&gt;).
-
- <li>gcc unused-variable warnings (reported by Bernd Ernesti
- &lt;bernd@arresum.inka.de&gt;)
-
- <li>rename global variable 'buffer' to 'VTbuffer'
-</ul>
-
-<H1><A NAME="xterm_75">Patch #75 - 1998/5/7 - XFree86 3.9Ah and 3.3.2</A></H1>
-
-This incorporates fixes from several people, as well as some improvements
-that I made based on feedback from users:
-<ul>
- <li>add option to standalone configure script, "--with-own-terminfo-dir",
- which causes xterm to pass a predefined value of $TERMINFO to the
- application. Also use this value in install rule "make install-ti",
- for the standalone configure script.
-
- (patch &amp; feedback from Tor Lillqvist &lt;tml@hemuli.tte.vtt.fi&gt;)
-
- <li>change ifdef's for "hpux" to "__hpux" (patch by Tor Lillqvist). The
- imake configuration uses the former, but the latter is predefined by
- HP's compilers.
-
- <li>define USE_SYSV_ENVVARS for HP-UX, curses does not use $TERMCAP (patch
- by Tor Lillqvist).
-
- <li>on HP-UX, use the /dev/ptym/clone device to allocate PTY's. Works
- both on HP-UX 9 and 10. (patch by Tor Lillqvist).
-
- <li>modify configure script to obtain the $(EXTRA_LOADFLAGS) value from
- imake, needed for compiling under DEC OSF/1 (reported by
- Stefan Dalibor)
-
- <li>modify print-window action so that the printer is closed after
- printing a window, unless the printer was already opened (i.e.,
- by an application running in the window). This makes the printing
- complete without having to exit xterm, since not all systems treat
- fflush through a pipe very well (reported by Stefan Dalibor)
-
- <li>modify printing code so that the ^M's are not printed if the
- printAttribute resource is set to zero (request by Stefan Dalibor).
-
- <li>correct typo in xterm.man, for the default value of printAttribute
- (reported by Stefan Dalibor).
-
- <li>correct printing code so that the alternate character set is
- printed, like other attributes, with escape sequences.
-
- <li>correct termcap description, removing spurious 'm' character from
- the 'op' capability (reported by Greg Woods &lt;woods@weird.com&gt;).
-
- <li>correct trace code so that the initial timestamp is set.
-
- <li>correct/modify utmp data for the Linux glibc 2 configuration,
- so that the ut_line member is set before using it to update wtmp
- (patch by Bill Nottingham &lt;wen1@cec.wustl.edu&gt;).
-</ul>
-
-<H1><A NAME="xterm_74">Patch #74 - 1998/4/27 - XFree86 3.9Ag and 3.3.2</A></H1>
-
-This corrects a couple of recent bugs and adds a new resource:
-<ul>
- <li>modify definition of TRACE_CHILD so that it does not conflict with
- ifdef's for USE_USG_PTYS in main.c (reported by Vikas Agnihotri
- &lt;VikasA@att.com&gt; and Stefan Dalibor).
-
- <li>correct ownership of file (actually pipe) written by the print
- controls. When undoing the setuid changes in patch #69, I overlooked
- this. Now xterm forks a process which resets setuid and routes the
- printer data as the real user.
-
- <li>add a new resource, "printAttributes", which controls whether
- color attributes (or any attributes) are sent to the printer.
-</ul>
-
-<H1><A NAME="xterm_73">Patch #73 - 1998/4/25 - XFree86 3.9Ag and 3.3.2</A></H1>
-
-This patch does the following:
-<ul>
- <li>implements a print-window facility for xterm. Though useful in
- itself, I added it as part of some debugging which I am doing.
- (Occasionally during an exposure event xterm fails to restore the
- proper colors for highlighted text, and printing the screen will
- show the internal states nicely).
-<p>
- The print facility now also displays the color information.
- (I will probably make this a resource).
-
- <li>modified the xterm-16color terminfo description to use the setaf and
- setab strings, which is a little more efficient (requested by Stephen
- Marley).
-
- <li>reduced some clutter of the ifdef/includes (e.g., stdlib.h, unistd.h,
- errno) making the configure script test for these.
-<p>
- I removed the symbols Size_t and Time_t, since they no longer serve
- a useful purpose.
-
- <li>added some debugging traces to show the initial screen size,
- and the success/failure of the ioctl calls pass handle window
- resizing events to the application (for Clint Olsen).
-<p>
- I also modified the trace code to produce two files since some
- of the information is produced by the child process. So now
- they are Trace-parent.out and Trace-child.out
-
- <li>updated configure test for ANSI compiler options to handle a
- special case for HP-UX 10.x (reported by Clint Olsen).
-</ul>
-
-<H1><A NAME="xterm_72">Patch #72 - 1998/4/17 - XFree86 3.9Ag and 3.3.2</A></H1>
-
-This is a patch from Chris Siebenmann &lt;cks@hawkwind.utcs.toronto.edu&gt;,
-which I have cleaned up a little, and integrated into the configure script.
-<p>
-From his description:
-<blockquote>
- This set of patches is the latest incarnation of patches originally
-written by Ian! D Allen, then of the University of Waterloo and now of
-who knows where; I have been carrying them forward from xterm to xterm
-ever since about X11R4. What they do is add an option so that when an
-iconified xterm receives output it prepends '*** ' to its icon title
-and (optionally) beeps the bell; deiconifying the xterm removes the
-'*** '. Over the years I've found this to be incredibly convenient for
-monitoring all sorts of low-activity things.
-</blockquote>
-
-<H1><A NAME="xterm_71">Patch #71 - 1998/4/12 - XFree86 3.9Ag and 3.3.2</A></H1>
-
-This patch is a slightly modified version of one by Richard Braakman, which
-prevents buffer overflow in the input-method and preedit-type parsing in xterm.
-I changed a couple of details to make the code more maintainable, and looked
-for similar things - copying into a fixed-size buffer (found none, though I did
-spot an unused variable).
-
-<H1><A NAME="xterm_70">Patch #70 - 1998/3/29 - XFree86 3.9Af and 3.3.2</A></H1>
-
-This patch corrects some minor bugs in xterm, and fills in some more details
-in the VT220 emulation:
-<UL>
- <LI>modify Imakefile to use SpecialCObjectRule for menu and data modules,
- making xterm build properly if logging is enabled
- (patch by Scott Sewall &lt;scott@iprg.nokia.com&gt;).
-
- <LI>restore "ich" capability to terminfo entries, since
- Michael Schroeder points out that "ich1"
- is the one which is the problem in Solaris vi.
-
- <LI>correct color of cursor, which would disappear on inverse-video
- since the initialization did not compare the cursor color against
- both foreground and background (reported by Olivier Calle).
-
- <LI>correct abbreviation-test for -version and -help options, making
- command-line option -vb work (reported by Stefan Dalibor).
-
- <LI>correct a dependency between ifdef's for OPT_I18N_SUPPORT and
- OPT_INPUT_METHOD (reported by Stefan Dalibor).
-
- <LI>split-out character-set translations as new module charsets.c, to
- implement VT220 national replacement character sets (a mode where
- some of the characters are displayed as specific European glyphs).
- This relies on xterm using an ISO 8859-1 font (approach suggested by
- Kenneth R. Robinette &lt;zkrr01@mailbox.neosoft.com&gt;).
-
- <LI>correct a missing increment, which made SS2 and SS3 controls
- repeat the shifted character.
-
- <LI>add xterm-nrc to terminfo to illustrate the VT220 national
- replacement character sets.
-
- <LI>reformat terminfo using new ncurses tic option "-f", which makes
- if/then/else/endif expressions easier to read.
-</UL>
-
-<H1><A NAME="xterm_69">Patch #69 - 1998/3/16 - XFree86 3.9Ad and 3.3.2</A></H1>
-
-This corrects the problem in xterm with utmp, reported by Olivier Calle
-&lt;olivier@tc.fluke.com&gt;
-as well as some other people after the XFree86 3.3.2 release.
-<P>
-The error was introduced by my patch #53 in XFree86 3.9r (October 1997).
-<P>
-The correction removes the reset of setuid/setgid before the main event loop,
-and solves the problem which I had worked around in a different manner: for
-some reason, the particular waitpid() call in creat_as() hangs, does not
-return when the child process exits. I changed the ifdef's to force the Linux
-configuration to use wait() instead. This call appears to work properly on
-other platforms such as SunOS and Solaris.
-<P>
-I also added tests in the standalone configure script to check for the
-existence of waitpid().
-
-<H1><A NAME="xterm_68">Patch #68 - 1998/3/4 - XFree86 3.9Ad and 3.3.1z</A></H1>
-
-This corrects another problem with the logic for highlightColor resource.
-As reported by David Dawes:
-<blockquote>
- I've just noticed a problem with with the "inverse" control sequence
- (ESC[7m) with the 3.3.2 xterm. What it does is sets the background
- black, and the text the usual foreground colour rather than simply
- swapping the foreground/background.
-
-</blockquote>
-This appears to be because when I added logic to check that the highlightColor
-was distinct from foreground and background colors, I did not add a further
-check to see that it was not black (I would make an explicit check for the
-resource not being set, but see nothing definite in the headers that would let
-me reference an explicitly-undefined Pixel value, though there are some
-implications in xpm.h). But this should work.
-
-<H1><A NAME="xterm_67">Patch #67 - 1998/2/23 - XFree86 3.9Ad and 3.3.1e</A></H1>
-
-This patch does the following:
-<UL>
- <LI>improve test for highlightColor so that xterm does not attempt to
- use that unless it is different from the foreground and background
- colors (reported by Stefan Dalibor
- &lt;Stefan.Dalibor@informatik.uni-erlangen.de&gt;.
-<P>
- I could not reproduce this until I noticed that the -rev option
- exposed it nicely.
-
- <LI>remove ich and ich1 from xterm and xterm-8bit terminfo descriptions.
- SVr4 terminfo documents that you must not combine these with
- smir/rmir, but ncurses allows it, opening a hole. Solaris 2.6 vi
- does not work properly if it is using a terminfo description when
- these are combined, since it was written to accommodate old terminals
- that required it (reported by Stephen Marley).
-
- <LI>restore 1-pixel overlap of scrollbar border with left edge of window
- (reported by Jim Burmeister &lt;jimb@metrolink.com&gt;).
-
- <LI>add a configure option, --enable-logfile-exec, which allows the
- user to specify a pipe for logfile. This defines ALLOWLOGFILEEXEC.
-
- <LI>makes the ALLOWLOGFILEEXEC code compile &amp; run, if configured.
-
- <LI>minor documentation nits.
-</UL>
-
-<H1><A NAME="xterm_66">Patch #66 - 1998/2/16 - XFree86 3.9Ad and 3.3.1d</A></H1>
-
-This fixes the problem reported with failure to build the <EM>resize</EM>
-program (BSDI, OSF/1) due to not having &lt;termcap.h&gt;, by changing the
-ifdef to one that would be set only if the file exists (not currently
-specified, except by the standalone configure script). We do not really need
-to include &lt;termcap.h&gt; to build, but only for a clean compile, since it
-may declare the tgetent() prototype.
-
-I also updated the man-page for <EM>resize</EM>, since I had recently noticed
-that it can be used to resize <EM>xterm</EM> using the "Sun" control sequences
-option.
-
-<H1><A NAME="xterm_65">Patch #65 - 1998/2/14 - XFree86 3.9Ad and 3.3.1c</A></H1>
-
-This is a small patch to xterm's 8-bit terminal description. I noticed
-while testing ncurses that I had specified the wrong (VT100-style) codes
-for the F1-F4. Xterm only uses VT220-style function keys in 8-bit mode.
-
-<H1><A NAME="xterm_64">Patch #64 - 1998/2/8 - XFree86 3.9Ad</A></H1>
-
-This fixes the following problems with xterm:
-<UL>
- <LI>save/restore the ANSI foreground and background colors with the other
- visible attributes in the save-cursor and restore-cursor operations.
- This works around a problem with vim, which apparently assumed that
- switching between the normal and alternate screens resets the colors
- (reported by Jim Battle &lt;jb@chromatic.com&gt;).
-<P>
- It would be nice to implement save/restore cursor as a stack (and
- solve this type of problem completely), but that would lead to
- incompatibility with applications which assume they are running with a
- VT100 or VT220.
-
- <LI>corrects behavior of a restore-cursor operation which does not
- follow a save-cursor (it is supposed to set the character sets
- to a known initial state).
-
- <LI>extends the sunKeyboard resource (and menu toggle) to modify the
- home, end and delete keys on a Sun or PC editing keypad, making them
- generate codes compatible with DEC VT220's Find, Select and Remove
- keys.
-
- <LI>corrects a length in checking command-line options, which caused the
- "-help" message to not work when X was not running.
-
- <LI>adds some detail to the man-page (requested by Jason Bacon
- &lt;acadix@execpc.com&gt;)
-
- <LI>modify the standalone configure script to ignore the broken nsl and
- socket libraries on IRIX 6.2 (the ones on 5.2 also are broken, so
- this change just widens the check for the system version number).
-</UL>
-
-<H1><A NAME="xterm_63">Patch #63 - 1998/2/5 - XFree86 3.9Ad</A></H1>
-
-This is another patch from Bjorn Helgaas &lt;helgaas@rsn.hp.com&gt;, which I've
-reviewed (and learned some). Following are his notes:
-<P>
-I poked around some more and finally got xterm-62 to build and run
-cleanly on HP-UX 10.20. Here are the patches. They look sort of
-ugly, so here's a little explanation:
-<UL>
- <LI>aclocal.m4: Removed side effects from the AC_CACHE_VAL
- commands in CF_FUNC_TGETENT. Previously, LIBS was set inside
- AC_CACHE_VAL, which worked fine the first time configure was
- run, but failed if there were cached values.
-
- <LI>aclocal.m4: Added temporary setting of LIBS before
- AC_TRY_LINK in CF_FUNC_TGETENT. Previously, the last value set
- by the AC_TRY_RUN loop was used, so only -lcurses was checked.
-
- <LI>configure.in: Added temporary setting of CPPFLAGS before
- AC_CHECK_HEADERS for X11 files. Previously &lt;X11/DECkeysym.h&gt;
- and &lt;X11/Xpoll.h&gt; were found only if they were in the compiler's
- default include directories, even if `--x-includes=DIR' had been
- used or AC_PATH_XTRA had found them elsewhere.
-</UL>
-The problem on HP-UX was that we were linking with -lcurses rather than
--ltermcap due to the second bullet above, and apparently something in
-HP-UX curses is broken. This seems very strange, because the only thing
-used is tgetent, which should affect any tty/pty configuration, but I
-lost interest in tracking down the exact problem.
-
-<H1><A NAME="xterm_62">Patch #62 - 1998/1/23 - XFree86 3.9Ac</A></H1>
-
-This is a patch mostly by Bjorn Helgaas &lt;helgaas@dhc.net&gt; (I added the
-os2main.c change, and a little of the documentation). From Bjorn's
-description:
-<UL>
- <LI>If you use the "-hc &lt;color&gt;" option or set the "highlightColor"
- resource, text is highlighted by changing only the background color,
- rather than using reverse video. I find this easier to read,
- especially when selecting multi-colored text, and it is similar to
- the way Netscape shows selections.
-
- <LI>Most of the code changes are under "#if OPT_HIGHLIGHT_COLOR". The
- principal exception is in screen.c, where I added a couple calls to
- resetXtermGC(). This seems like it could be a bug even without
- the color highlighting changes (though I don't pretend to understand
- all the logic).
-</UL>
-
-<H1><A NAME="xterm_61">Patch #61 - 1998/1/17 - XFree86 3.9Ac</A></H1>
-
-This patch modifies the reset behavior of xterm slightly:
-<UL>
- <LI>change the terminfo entry so that rs1 (one of the strings used by
- the 'reset' program) does a hard reset rather than switching
- character sets. This is more in accord with other terminal
- descriptions.
-
- <LI>modifies the treatment of hard reset by the xterm program to
- reset the saved lines.
-
- <LI>corrects hard reset by also resetting user-defined keys (DECUDK).
-</UL>
-
-<H1><A NAME="xterm_60">Patch #60 - 1998/1/10 - XFree86 3.9Ab</A></H1>
-
-This fixes some minor bugs and adds new functionality:
-<UL>
- <LI>add support for blinking text.
-<UL>
- <LI>This does not actually cause the
- text to flash, but text with the blink attribute can be displayed
- in color, using new resources colorBL and colorBLMode.
-
- <LI>If colors are not used, the blinking text will be displayed as
- before (just like bold). The main purpose of this is to make
- applications work properly when they assume the emulator supports
- blinking text.
-
- <LI>I did this by moving the per-cell LINEWRAPPED flag to a per-line
- flag, to make room for the new BLINK flag. There were no per-line
- flags, so this changes a lot of logic.
-</UL>
-
- <LI>corrected missing save-cursor logic in the handling of SGR 1048
- (the new control sequence I added in patch #54, 1997/10/17).
- Reported by Darren Hiebert.
-
- <LI>flush the output of the transparent printing after each line
- Reported by Tomas Vanhala &lt;vanhala@ling.helsinki.fi&gt;.
-
- <LI>correct the modes that are affected by save/restore cursor by adding
- WRAPAROUND and PROTECTED.
-
- <LI>corrected placement of one of the XSync calls that I added in patch
- #51, 1997/9/15, which had the side-effect of writing on the window
- border when the xterm was resizing from 132 to 80 columns.
-
- <LI>work around an incompatibility of the XKB definition used in xterm
- versus that symbol from IRIX 6.2's imake definitions (by adjusting
- the standalone configure script).
-</UL>
-
-<H1><A NAME="xterm_59">Patch #59 - 1998/1/5 - XFree86 3.9Ab</A></H1>
-
-My last patch has an off-by-one error in the comparison for argc. Douglas
-Kosovic &lt;douglask@dstc.edu.au&gt; showed me where (he got a core dump).
-Also, I think this explains Clint Olsen's problem, but the symptoms were more
-subtle (EINVAL for a system call if the -display option is omitted).
-
-<H1><A NAME="xterm_58">Patch #58 - 1998/1/3 - XFree86 3.9Ab</A></H1>
-
-This patch does the following:
-<UL>
- <LI>implement logic to permit xterm to work with proportional fonts.
-<UL>
- <LI>Thomas Wolff
- &lt;Thomas.Wolff@sietec.de&gt;
- requested this (but it isn't exactly what he's asking
- for - that's a more involved task).
-
- <LI>I chose to do this by rendering the characters on a fixed pitch,
- because it would not be useful for existing applications to display
- varying numbers of characters on each line.
-
- <LI>Except that this forces the display to be wider, it works reasonably
- well. A couple of special cases (reverse + colorBD, for example)
- do not display with proper colors, since the inter-character gaps
- are painted with the background.
-</UL>
-
- <LI>added a version number to the program (several people have requested
- this).
-
- <LI>make the -version and -help options interpreted before the program
- attempts to open the display.
-
- <LI>minor reorganization of the man-page (ordered the options, resources
- and translations alphabetically - and eliminated some duplication).
-
- <LI>corrected a misspelled filename in Makefile.in, and added a lint
- rule.
-
- <LI>updated the configure script to correct behavior when it cannot
- find imake, as well as to fix the IRIX+gcc build (conflict with
- /usr/include).
-
- <LI>regenerated the configure script with a newer patch to autoconf
- that fixes a problem with environment space vs the configure --help
- message.
-</UL>
-<H1><A NAME="xterm_57">Patch #57 - 1997/12/26 - XFree86 3.9Aa</A></H1>
-
-This patch is mostly concerned with the standalone configure script; a few
-minor corrections are added:
-<UL>
- <LI>add configure option --disable-tek4014, to allow xterm to be built
- without the tek4014 emulation.
-
- <LI>add configure option --with-terminal-type, to allow xterm to be
- compiled with default $TERM value other than "xterm" (e.g.,
- "xterm-16color") -- requested by Stephen Marley &lt;stephen@memex.com&gt;.
-
- <LI>fix a typo in the configure --help message -- reported by Darren
- Hiebert &lt;darren@hmi.com&gt;.
-
- <LI>review diffs between main.c and os2main.c, to make them more alike.
- (applies some minor bug-fixes to OS/2's version).
-
- <LI>add missing quotes in memmove/bcopy configure test
-</UL>
-
-
-<H1><A NAME="xterm_56">Patch #56 - 1997/11/28 - XFree86 3.9x</A></H1>
-
-This patch is based on analysis by Arfst Ludwig &lt;arfst@luxor.IN-Berlin.DE&gt;,
-who reported:
-<blockquote>
- Setting the following resources xterm (all current versions) receives a
- segmentation fault on &lt;Btn2Up&gt; after scrolling:
-<PRE>
-
- *XTerm*VT100*translations: #override \
- ~Shift~Ctrl&lt;Btn2Up&gt;: insert-selection(PRIMARY, CUT_BUFFER0)\n\
- Shift~Ctrl&lt;Btn2Up&gt;: insert-selection(CLIPBOARD, CUT_BUFFER1)\n\
- ~Shift&lt;BtnUp&gt;: select-end(PRIMARY, CUT_BUFFER0)\n\
- Shift&lt;BtnUp&gt;: select-end(CLIPBOARD, CUT_BUFFER1)
-</PRE>
- (The above resources intention is to be able to paste the latest
- selection even if the xterm was cleared.)
-<P>
- And here is how it works (and a fix!): The widget given to the action
- handler as first argument is not guaranteed to be a XtermWidget (it can
- be the ScrollbarWidget). Instead of accessing the widget's member
- directly XtDisplay gives the required pointer in a safe way.
-</blockquote>
-I noticed that this was not the only instance (by reading the code, and testing
-with his example), and extended the solution to check the widget-class to
-ensure that it is indeed xterm's widget class before attempting to use it in
-the context of translations.
-
-<H1><A NAME="xterm_55">Patch #55 - 1997/11/25 - XFree86 3.9x</A></H1>
-
-This fixes the segmentation violation noted by Rogier Wolff about a month
-ago. He'd set xterm to 400 (rows) by 150 columns, which broke because there
-were limited buffers (200 rows) used for juggling data when adding or deleting
-lines and for switching between alternate and normal screens. I replaced this
-by an allocated buffer.
-<P>
-The bug is simple to test if you set titeInhibit false.
-
-<H1><A NAME="xterm_54">Patch #54 - 1997/10/17 - XFree86 3.9s</A></H1>
-
-This patch does the following:
-<UL>
- <LI>correct a minor placement problem with the right scrollbar.
-
- <LI>implement a new set of control sequences for switching between the
- normal and alternate VT100 screens. These work around the older
- sequences limitation that required modification of the runtime
- $TERMCAP to cooperate with the titeInhibit resource (that can't work
- with terminfo). I do this by moving all of the functionality of the
- rmcur terminfo capability into the control sequences.
-
- <LI>implement the alternate-screen menu entry
-</UL>
-
-<H1><A NAME="xterm_53">Patch #53 - 1997/10/12 - XFree86 3.9r</A></H1>
-
-This patch adds a fix and implements a new feature (as well as some minor
-typos):
-<UL>
- <LI>JCHANDRA@Inf.COM (JCHANDRA) noted that there was still a problem
- with the wait call with the logging option. It hung when the logfile
- was opened as a command-line option. I fixed this by moving the
- StartLogging() call down past the place where I'd reset the setuid
- mode. So the logfile is opened as the real user, without having
- to fork.
-
- <LI>Michael Rohleder &lt;michael.rohleder@stadt-frankfurt.de&gt; sent
- me a patch which implements right-scrollbars for xterm. I used that
- as a starting point, renamed the command-line options and reduced
- the number of ifdef's.
-</UL>
-
-<H1><A NAME="xterm_52">Patch #52 - 1997/9/29 - XFree86 3.9q</A></H1>
-
-This patch addresses bugs and requests reported by
-<UL>
- <LI>Bob Maynard &lt;rmaynard@montana.com&gt;,
- <LI>Clint Olsen &lt;olsenc@ichips.intel.com&gt;,
- <LI>JCHANDRA@Inf.COM (JCHANDRA),
- <LI>Michael Schroeder &lt;Michael.Schroeder@informatik.uni-erlangen.de&gt;,
- <LI>Pablo Ariel Kohan &lt;pablo@memco.co.il&gt;
-</UL>
-
-Some of the changes are interrelated (it was an unusually busy week).
-<UL>
-
- <LI>change the default resource value for colorMode to true, matching
- the Xterm.ad file.
-
- <LI>correct behavior of 'ech' control, making the default and 0
- parameters erase one character rather than to the end of line
- (reported by Michael Schroeder).
-
- <LI>add resource boldColors, command-line options +pc and -pc and
- configure-script option to specify behavior of xterm's mapping bold
- colors 0 through 7 to colors 8 through 15.
- (request by Pablo Ariel Kohan).
-
- <LI>add resource colorAttrMode to specify whether colorULMode and
- colorBDMode can override the ANSI colors
- (from a problem report by Clint Olsen).
-
- <LI>correct a conflict between colorULMode/colorBDMode versus ANSI
- colors, where exposure events would occasionally pick up the
- former (e.g., colorBD) rather than ANSI colors. Testing the
- colorAttrMode made this apparent, though it has been in the
- code since 3.2A (patch #35 in Jan 1997).
-
- <LI>correct two problems with the optional logging support. On Linux
- at least, the waitpid call in creat_as hangs when the logging is
- toggled from the popup menu. Also, the mktemp template has the wrong
- number of X's (since X11R5!). Fixed the waitpid problem by
- exploiting the fact that the setuid behavior is reset before the
- popup menus are available.
- (reported by Jayachandran C.).
-
- <LI>add configure script options for building with the Xaw3d and neXtaw
- libraries.
-
- <LI>correct CF_IMAKE_CFLAGS standalone configure script macro, so that it
- will pick up $(ALLDEFINES) rather than $(STD_DEFINES). This is
- needed to make scrollbars work on Linux, since that uses narrow
- prototypes.
- (reported by Bob Maynard).
-
- <LI>various minor updates to configure-script macros.
-</UL>
-
-<H1><A NAME="xterm_51">Patch #51 - 1997/9/15 - XFree86 3.9p</A></H1>
-
-Most of this patch is related to the standalone configure script, though
-there are fixes/enhancements as well:
-<UL>
- <LI>add a new resource sunKeyboard, with associated command-line
- option and menu-toggle that allows using a normal Sun or PC
- keyboard to generated the complete DEC-style function keys
- and keypad.
-
- <LI>correct a reversed foreground/background test in the control
- sequence that replies with the current SGR settings.
-
- <LI>correct, by invoking XSync, a display problem that caused the
- program to not properly update newly exposed areas when a font
- change or 80/132 resize request was not completely accepted.
-
- <LI>restructured autoconf macros (I made a library of all of the
- macros across the complicated configure scripts I'm working on).
-
- <LI>use the autoconf config.guess and config.sub scripts to better
- identify the host-os.
-
- <LI>improve the configure script that uses 'imake' as a fallback for
- definitions.
-
- <LI>correct several instances of unsigned/signed mixed expressions.
-</UL>
-
-I've tested the configure script on Linux, SunOS 4.1.3, Solaris 2.5.1,
-IRIX 5.2 and 6.2, AIX 3.2.5 and CLIX 3.1 (all but the last run properly
-as well).
-
-<H1><A NAME="xterm_50">Patch #50 - 1997/8/22 - XFree86 3.9m</A></H1>
-
-This is a collection of small fixes, and a couple of minor enhancements:
-<UL>
- <LI>plug a security hole in the implementation of Media Copy (print)
- by invoking setuid just before the main loop.
-
- <LI>add an ifdef'd include for &lt;sys/termio.h&gt; for HP-UX, which allows
- the program to process SIGWINCH events (this is a bug in X11R6.3)
-
- <LI>add state-table entries for VT52 emulation to enter/exit keypad
- application mode.
-
- <LI>disable the popup-menu entry for 8-bit controls when the terminal-id
- is less than 200 (e.g., VT52 or VT100).
-
- <LI>ensure that the popup-menu entry for 8-bit controls is updated when
- the application enables/disables this mode, including the response
- to a full-reset.
-
- <LI>implement VT300 DECBKM feature: set interpretation of the backarrow
- key to either backspace or delete. The initial setting is via
- resource; it can also be modified in the main popup menu.
-
- <LI>implement VTxxx KAM (ISO AM), which allows a keyboard to be locked
- (i.e., the terminal discards input).
-
- <LI>implement VTxxx SRM, which is used to control local echoing of
- input on the terminal.
-
- <LI>add terminfo and termcap entries for xterm-8bit, a variation of
- the xterm description that uses 8-bit control characters.
-
- <LI>add fallback definitions for Imakefile to allow it to work on some
- X11R5 systems that have no SpecialCObjectRule or ProgramTargetName
- macros.
-
- <LI>add .c.o and .c.i rules to standalone Makefile.in
-
- <LI>correct order of -lXmu and -lXext in standalone configure script.
-
- <LI>add configure script options to allow selective disabling of
- active-icon, input-method and i18n code (mainly for users with X11R5
- or an incomplete X11R6 configuration).
-
- <LI>change menu-indices from #define's to enum values, thereby making
- it work better with the ifdef's for logging and active-icon (the
- X11R6.3 active-icon code is incorrectly ifdef'd; this corrects an
- error introduced by incorporating that code).
-
- <LI>correct minor compile errors in the configuration where active-icon
- is not used.
-
- <LI>add configure option to suppress echoing of long compiler commands
-
- <LI>correct spelling of decTerminalID in configure script help message
-
- <LI>use gcc __attribute__((unused)) to quiet warnings about unused
- parameters when compiling with -W (to make it simpler to find the
- real problems).
-</UL>
-
-<H1><A NAME="xterm_49">Patch #49 - 1997/8/10 - XFree86 3.9k</A></H1>
-
-This patch implements the VT100/VT220 Media Copy (i.e., print-screen) control
-sequences.
-
-<H1><A NAME="xterm_48">Patch #48 - 1997/7/26 - XFree86 3.9j</A></H1>
-
-This patch does the following (all but the first affect only the standalone
-configure script):
-<UL>
- <LI>minor correction to positioning of underlines for small (e.g., 5x8)
- font size.
- <P>
- The existing behavior allowed underlines to be drawn outside the
- character-cell, so they weren't cleared properly under some
- circumstances.
-
- <LI>adds more special-case tokens to the standalone configure script's
- imake-option filter (e.g., "&amp;&amp;", since a "make -n main.o" on my IRIX
- system uses that shell construct).
-
- <LI>adds a '--enable-logging' option for the standalone configure script.
-
- <LI>adds check and ifdef's for the standalone configure script to allow
- for building on platforms with X11R6, which lacks Xpoll.h (introduced
- in X11R6.1).
-</UL>
-
-<H1><A NAME="xterm_47">Patch #47 - 1997/7/13 - XFree86 3.9i</A></H1>
-
-This patch does the following
-<UL>
- <LI>corrects an indexing error in the doublesize character logic
- (button.c) that caused core dump (this was reported by J. Wunsch).
- <LI>corrects the logic of ShowCursor when it is painting in a doublesize
- cell (charproc.c).
- <LI>corrects, according to vttest, the behavior when switching to
- doublesize characters and back again (doublechr.c).
- <LI>adds cbt (back_tab) to the terminfo description (this was something
- that I'd overlooked as applicable to curses optimization last
- summer).
- <LI>corrects, for the standalone xmc test, the logic for disabling xmc.
-</UL>
-
-<H1><A NAME="xterm_46">Patch #46 - 1997/7/4 - XFree86 3.9h</A></H1>
-
-This is a patch to provide test-support for some work I'm doing on ncurses. It
-does not modify the normal configuration of xterm; the code is compiled if the
-standalone configure option "--enable-xmc-glitch" is specified.
-
-<H1><A NAME="xterm_45">Patch #45 - 1997/7/2 - XFree86 3.9h</A></H1>
-
-This fixes the problem reported with xterm's cursor color versus the background
-(the second chunk in this patch) and also removes some duplicate initialization
-of the cursor GC's. If the cursor color at startup is the same as the
-background, then xterm will use the reverse GC, ignoring the setting of the
-colorMode resource.
-
-<H1><A NAME="xterm_44">Patch #44 - 1997/6/22 - XFree86 3.9g</A></H1>
-
-This implements the first part of the VT100 doublesize characters for xterm,
-as well as fixing a handful of bugs:
-<UL>
- <LI>the doublesize character support uses the normal font (using scaled
- fonts will be another patch) with blanks to simulate doublesize
- characters. This patch does most of the global changes that'll be
- required. I've hidden most of the details in macros and ifdef's so
- it's easy to configure out (part of the patch is a configure option
- for that purpose).
-
- <LI>corrected limits in DeleteChar() function -- it's always ignored the
- size of the left border and scrollbar. I noticed this when working
- on the doublesize characters since the glitch was doubled in size
- (i.e., it wrapped some garbage around the right margin).
-
- <LI>corrected 'memmove()' logic, for standalone builds (it referenced a
- malloc wrapper from my development library).
-
- <LI>add a check for HideCursor() to prevent repeated screen updates
- (which can cause a spurious cursor glitch to appear, e.g., during
- scrolling). I noticed this with the 3.2A version (but only a few
- weeks ago, when I started working on this patch).
-</UL>
-
-<H1><A NAME="xterm_43">Patch #43 - 1997/6/10 - XFree86 3.9d</A></H1>
-
-Here's a fix for two problems:
-<UL>
- <LI>modify handling of tgetent results in xterm and resize programs to
- make them tolerant of missing termcap file, or unknown terminal name.
- In this scheme, an explicit "-tn" option will succeed, overriding
- the fallback list.
-
- <LI>a nit in the configure script (log extra information to help diagnose
- which case of the test-compile of tgetent was used).
-</UL>
-
-<H1><A NAME="xterm_42">Patch #42 - 1997/6/8 - XFree86 3.2Xl</A></H1>
-
-Bram Moolenaar reported that the cursor color changed unexpectedly while
-scrolling. The cause was that it used the same GC's as the logic that draws
-the ANSI colors. The bug only appears if the cursorColor resource isn't set,
-and has been present since the initial implementation early last year. (The
-same bug also appears in rxvt ;-). Here's a fix.
-
-<H1><A NAME="xterm_41">Patch #41 - 1997/5/28 - XFree86 3.2Xl</A></H1>
-
-Some nits found by Darren Hiebert (missing part of install-rule, incorrect
-assignment for --enable-color-mode option).
-
-<H1><A NAME="xterm_40">Patch #40 - 1997/5/26 - XFree86 3.2Xl</A></H1>
-
-Patch for the configure script's logic for obtaining imake predefined
-symbols.
-
-<H1><A NAME="xterm_39">Patch #39 - 1997/5/24 - XFree86 3.2Xl</A></H1>
-
-This patch does the following:
-<UL>
- <LI>integrate the 16-color change for 'xterm'
-
- <LI>minor fixes/clarification of tgetent in terminfo vs termcap to
- 'resize'
-</UL>
-
-(both changes also modify the configure script)
-
-<H1><A NAME="xterm_38">Patch #38 - 1997/5/22 - XFree86 3.2Xh</A></H1>
-
-This implements a simple configuration script with autoconf (to which I'll
-add more options later). It does the following:
-<UL>
- <LI>configures xterm to build with X11R5 (at least on SunOS 4.1, Solaris
- 2.4, possibly IRIX - sorry network was down today, but I did test
- an earlier version yesterday).
-
- <LI>enables/disables the configuration ifdef's for ANSI color and VT52
- emulation.
-</UL>
-It does not make tests for the things that imake does (that's another project),
-instead it uses a hybrid of the autoconf tests for libraries and adds imake's
-compiler options (which are necessary in some cases to get main.c to compile).
-
-<H1><A NAME="xterm_37">Patch #37 - 1997/5/7 - XFree86 3.9a</A></H1>
-
-This corrects a minor, but annoying error in the vt220 emulation: the DECUDK
-is only supposed to be interpreted for _shifted_ function keys.
-
-<H1><A NAME="xterm_36">Patch #36 - 1997/1/16 - XFree86 3.2r</A></H1>
-
-This corrects something that I overlooked in patch #27 (21-aug-1996), which is
-that when trimming the region to be repainted for the highlightSelection
-resource of xterm, I still have to paint the background past the highlighted
-region. This only happens when I first do a selection in a window that's
-partly off-screen, then move the window on-screen.
-
-<H1><A NAME="xterm_35">Patch #35 - 1997/1/7 - XFree86 3.2o</A></H1>
-
-This patch does the following:
-<UL>
- <LI>combines the coding for foreground and background colors into a
- single byte, reducing the memory required to store saved-lines in
- color. (I'll take back that byte in a following patch to use to
- ensure the character-set, so there's no long-term decrease in memory
- use).
-
- <LI>modifies the PF1-PF4 coding in termcap/terminfo. Because xterm is
- still by default emulating vt100, the function key codes are
- vt100-compatible (I overlooked this in patch #31).
-
- I also reformatted the whole terminfo file into a single-column,
- for consistency.
-
- <LI>adds an interim xterm-vt220 description to accommodate the old and new
- styles of function-keys (though probably it'd be better to drop the
- old-style altogether).
-</UL>
-
-<H1><A NAME="xterm_34">Patch #34 - 1997/1/5 - XFree86 3.2o</A></H1>
-
-This patch does the following:
-<UL>
- <LI>implement DECSTR (soft terminal reset). The biggest diff is due to
- adding another state table (note that there's only one useful state
- here, but it's only 256 bytes rather than 1k as it would have been
- before I reduced the size of state entries).
-
- <LI>some minor tidying up (e.g., signed/unsigned use bitcpy, MODE_DECCKM,
- resetColor, resetCharsets). More is done in patch #35.
-</UL>
-
-I got the description of DECSTR from a vt420 user's manual. I'll do some
-testing with vttest to ensure that there's nothing else to do than what was
-documented.
-
-<H1><A NAME="xterm_33">Patch #33 - 1996/11/24 - XFree86 3.2</A></H1>
-
-This adds to the reset-fix by Matthieu Herrb &lt;Mathieu.Herrb@mipnet.fr&gt; a
-small change to make xterm able to output 8-bit characters in VT100 mode.
-
-Applications that run on real VT100's don't do that anyway, and this feature
-should be removed sometime after finishing off the VT220 emulation (VT220's can
-do 8-bit characters). That would be a good time to change the default
-terminal-id to 220.
-
-<H1><A NAME="xterm_32">Patch #32 - 1996/11/21 - XFree86 3.2</A></H1>
-
-This implements the REP (repeat) control for xterm. That isn't part of the DEC
-VTxxx series, but is defined in ISO 6429. (Note that the base xterm terminal
-description is <EM>not</EM> changed -- I added a variant, "xterm-rep").
-
-<H1><A NAME="xterm_31">Patch #31 - 1996/11/16 - XFree86 3.2</A></H1>
-
-This implements vt52 emulation in xterm (ifdef'd so it can be removed).
-I've been using it for testing for the past month or so.
-
-<H1><A NAME="xterm_30">Patch #30 - 1996/11/16 - XFree86 3.2</A></H1>
-
-From bug-report by &lt;auroux@clipper.ens.fr&gt; (Denis Auroux), missing reset to
-ground state. I checked through the rest of <EM>that</EM> table and found another,
-in the unimplemented MC (screen print).
-
-<H1><A NAME="xterm_29">Patch #29 - 1996/9/15 - XFree86 3.1.2Gb</A></H1>
-
-This patch does the following:
-<UL>
- <LI>corrects the restoration of color for bold/underline color mode
-
- <LI>adds a resource 'decTerminalID' to control the reporting level of
- xterm (e.g., VT100, VT220).
-
- <LI>uses the new resource to implement/correct the DA1, DA2 and
- DECRPTUI reports.
-
- <LI>change valid-response code in DECRQSS from 0 to 1 (the manual says 0,
- but the VT420 terminal I've been testing on says 1).
-</UL>
-
-All of these changes are based on vttest 2.6
-<P>
-(Most of the volume in the patch is to add 2 more state tables for parsing
-the 2nd/3rd device-attribute controls).
-
-<H1><A NAME="xterm_28">Patch #28 - 1996/8/31 - XFree86 3.1.2F</A></H1>
-
-This patch corrects the following reported by Roland Rosenfeld
-&lt;roland@spinnaker.rhein.de&gt;:
-<UL>
- <LI>handle SGR 22, 24 and 25 in combination with colorUL and colorBD
- resources. Also noted &amp; fixed reset of colored underline/bold
- with SGR 0.
-
- <LI>a typo in the termcap (missing '['), from 3.1.2Dj (my error)
-</UL>
-
-Roland also complained that he couldn't use box characters with
-<PRE>
- -adobe-courier-bold-r-normal--12-120-75-75-m-70-iso8859-1
-</PRE>
-but that's a known xterm limitation (the box characters must be part of the
-font, in the first 32 locations).
-
-<H1><A NAME="xterm_27">Patch #27 - 1996/8/21 - XFree86 3.1.2Ek</A></H1>
-
-This patch fixes one of my long-term gripes: xterm's selection doesn't clearly
-show what's being selected (as per David's request, it's controlled by a
-resource, which defaults to the older behavior).
-
-<H1><A NAME="xterm_26">Patch #26 - 1996/8/20 - XFree86 3.1.2Ei</A></H1>
-
-Here's a patch to fix a problem with xterm's cut/paste and another to modify
-the appearance of the highlighting while selecting. (The changes are
-independent, so you can see if the change to screen.c is desirable).
-
-<H1><A NAME="xterm_25">Patch #25 - 1996/8/18 - XFree86 3.1.2Ei</A></H1>
-
-Here's a correction for two minor bugs that I picked up in testing, plus
-some lint (from Solaris 2.5) where NULL was used incorrectly:
-<UL>
- <LI>make the second alternate font the same as the first (that's what
- vt420 and dtterm do)
-
- <LI>corrected DECSCL report when DECSCL hasn't been set (i.e., don't
- return a '60').
-</UL>
-
-<H1><A NAME="xterm_24">Patch #24 - 1996/8/11 - XFree86 3.1.2Ee</A></H1>
-
-This patch does several things. In effect, xterm can (I think) do a reasonably
-good job of emulating vt220 and vt320 terminals (as well as it was doing
-vt100, at any rate ;-).
-<P>
-It does NOT do:
-<UL>
- <LI>soft fonts
-
- <LI>rigel or sixel graphics
-</UL>
-<P>
-Anyway, I:
-<UL>
-
- <LI>added ECH, CPL, CNL, SU, SD, CBT, CHT controls
-
- <LI>added popup-menu for switching between DEC and Sun function keys.
- (corrected alignment err wrt logging entry at that point).
-
- <LI>make xterm recognize both 8-bit and 7-bit controls (including
- popup menu for switching modes).
-
- <LI>add user-definable function keys (aka DECUDK)
-
- <LI>support concealed text
-
- <LI>support protected text (both ISO compatible and DEC compatible -
- that's not the same thing, btw), with SPA, EPA, DECSCA, DECSED,
- DECSEL controls.
-
- <LI>implement DECSCL.
-</UL>
-<P>
-I'll be continuing to test this patch for a while, but don't expect to add any
-new functionality (it passes all of the current tests I've built in vttest, but
-I need to make more tests)..
-
-<H1><A NAME="xterm_23">Patch #23 - 1996/7/31 - XFree86 3.1.2Ec</A></H1>
-
-This removes the blinking cursor I added last week (for performance reasons).
-Time-permitting, I'll revisit this after 3.2 is released (there <EM>will</EM> be more
-work after XFree86 3.2, I assume).
-
-<H1><A NAME="xterm_22">Patch #22 - 1996/7/26 - XFree86 3.1.2Ec</A></H1>
-
-I looked more closely at my "double-negative" and realized that I had been
-confused by the default color scheme (black on white) in combination with
-reverse video. However, I did see that the original_fg and original_bg data
-weren't really used - so I removed that logic.
-<P>
-Also:
-<UL>
- <LI>during initialization, check if ANSI colors are set with non fg/bg
- values, disable color mode if not. This makes xterm tolerant of
- applications that allocate the whole color map.
-
- <LI>implemented blinking cursor (default is <EM>off</EM>)
-</UL>
-
-<H1><A NAME="xterm_21">Patch #21 - 1996/7/24 - XFree86 3.1.2Ec</A></H1>
-
-This patch does the following:
-<UL>
- <LI>fixes some minor typography in the control-sequences documentation
- (it didn't occur to me til I'd sent the last patch that I could use
- ghostview for previewing the troff output ;-)
-
- <LI>adjusts the shell's background color in ReverseVideo so that flicker
- in resizing is reduced
-
- <LI>adds an ifdef OPT_ISO_COLORS to allow configuring xterm without
- the ISO color support (saves a lot of memory)
-
- <LI>used that ifdef to isolate/modify logic so that if the user doesn't
- have the colorMode enabled, then ISO color support is disabled (saving
- memory).
- <P>
- (If anyone needs numbers, I had savedLines set to 2000, and found
- a reduction from ~700k to ~400k of allocated memory, according to
- Purify).
-</UL>
-
-<H1><A NAME="xterm_20">Patch #20 - 1996/7/24 - XFree86 3.1.2Ec</A></H1>
-
-This documents the changes in control sequences for window operations that
-I added in my previous patch. I'm testing another patch that allows the
-user to use less memory if colors aren't needed.
-
-<H1><A NAME="xterm_19">Patch #19 - 1996/7/21 - XFree86 3.1.2Ec</A></H1>
-
-This patch does the following:
-<UL>
- <LI>fixes the core dump that I reported on IRIX 5.2 (in main.c)
- <P>
- (it's worth noting that this bug exists in X11R6.1, so I'd like
- to assume that someone's already submitted a fix to X Consortium...)
-
- <LI>change the interpretation of zero rows or columns in a resize-window
- request to use the root window's size (looking more carefully at
- dtterm, that seems to be what it does).
-
- <LI>change some memmove calls to memcpy for slightly better performance.
- (also, a couple of memset calls to bzero - Quantify says bzero runs
- 20% faster, I assume because there's one less argument).
-
- <LI>interpret character sets 1 and 2 (so that vttest gives a reasonable
- result) Both rxvt and dtterm do something equivalent.
-
- <LI>fix a minor memory leak in the logic that retrieves the window or
- icon names (Purify found this for me while I ran vttest).
-</UL>
-
-<H1><A NAME="xterm_18">Patch #18 - 1996/7/18 - XFree86 3.1.2Ec</A></H1>
-
-This implements the following:
-<UL>
- <LI>escape sequences that act like the CDE dtterm's window operations
- (though I have implemented the default width and height -- I've seen
- a rather buggy dtterm running that seems to treat width=0 or height=0
- literally -- maybe that's a feature, not a bug?)
-
- <LI>minor tweak to the screen-repainting when resizing (I still cannot
- entirely get rid of flicker).
-
- <LI>still more fixes to terminfo &amp; termcap (I corrected my error for
- the hpa code and added some other stuff by comparing to ncurses'
- description and rxvt's).
-
- <LI>a tweak to the patch by Michael Rohleder for the color translation
-
- <LI>re-order attribute codes to allow later implementation of protected
- fields (dtterm supposedly does this; it's probably more useful than
- blinking or invisible text -- that uses up all of the available bits
- without changing the attribute scheme radically).
-</UL>
-
-<H1><A NAME="xterm_17">Patch #17 - 1996/7/2 - XFree86 3.1.2Eb</A></H1>
-
-This patch implements for xterm several minor features from ISO 6429 which are
-useful for terminfo applications. The HPA and VPA control sequences allow
-cursor movement along a row or column, cutting down a little on the characters
-transmitted. The other codes allow resetting specific graphic rendition
-attributes without modifying the other attributes.
-
-(now if someone just had time to implement blinking cursors...)
-
-<H1><A NAME="xterm_16">Patch #16 - 1996/6/25 - XFree86 3.1.2Ea</A></H1>
-
-Adam Tla/lka &lt;atlka@pg.gda.pl&gt; told me a couple of weeks ago that I'd missed
-some of the background coloring in xterm. I investigated, and found that while
-I'd picked up on the clear-to-bottom and clear-to-end-of-line operations, I'd
-overlooked the insert/delete lines. Just so I wouldn't overlook any more of
-these, I updated a copy of vttest to test ISO colors and bce (background color
-erase). This patch introduces a new function, ClearCurBackground, whose calls
-replace the direct XClearArea calls that I'd overlooked.
-
-(There's also a few compiler warnings fixed, etc ;-)
-
-<H1><A NAME="xterm_15">Patch #15 - 1996/5/29 - XFree86 3.1.2E</A></H1>
-
-This fixes the problem reported by David Dawes, by making the 50msec select
-timeout for the Xaw3d arrow scrollbar a resource. (I made it a boolean for a
-variety of reasons -- to make it a number, you'd need an additional resource,
-to avoid breaking the logic).
-
-<H1><A NAME="xterm_14">Patch #14 - 1996/5/12 - XFree86 3.1.2Dj</A></H1>
-
-This patch brings the termcap and terminfo descriptions for xterm up to date.
-I made the following changes:
-<UL>
- <LI>reformatted the terminfo description in a single-column (this is ok
- for terminfo, and will simplify future patches -- can't do that for
- termcap, since it would impact buffer requirements on some systems).
-
- <LI>omitted obsolete features in termcap to save a little space (bs, pt)
-
- <LI>added color capabilities to termcap (ut, Co, NC, op, AB, AF)
-
- <LI>corrected some capabilities (vi, ve)
-
- <LI>added 'st' (set tab)
-
- <LI>reduced function keys in termcap for 'xterm' to 12 because color
- capabilities makes that description larger than 1023 characters.
-
- <LI>created new termcap name 'xtermm' (monochrome) to match the terminfo
- list, and make that description have 20 function keys.
-
- <LI>added corresponding color capabilities to terminfo (bce, colors,
- pairs, op, ncv, setab, setaf)
-
- <LI>corrected corresponding capabilities in terminfo (civis, cnorm,
- rmcup, smcup)
-
- <LI>added capabilities (el1, hts)
-
- <LI>in both, corrected home/end keys to match the code correction made
- by Thomas Mueller in 3.1.2Bk
-
- <P>=&gt; (I'm still considering modifying the code &amp; description to match
- the rxvt program).
-</UL>
-
-<H1><A NAME="xterm_13">Patch #13 - 1996/4/23 - XFree86 3.1.2Df</A></H1>
-
-This corrects my earlier changes for colors - the inner border of the xterm was
-getting painted with the wrong color, since I'd moved the call to set the
-background into the logic that tracks SGR information.
-
-<H1><A NAME="xterm_12">Patch #12 - 1996/3/16 - XFree86 3.1.2Dc</A></H1>
-
-This corrects a memory leak in xterm that happens whenever one switches fonts.
-
-<H1><A NAME="xterm_11">Patch #11 - 1996/3/5 - XFree86 3.1.2Db</A></H1>
-
-This patch corrects the behavior of the ANSI colors in xterm when reverse
-video is used, as well as some other lesser sins:
-<UL>
- <LI>button.c
-<UL>
- <LI>(compiler warnings: shadowing of 'time', redundant cast)
-</UL>
-
- <LI>charproc.c
-<UL>
- <LI>renamed screen.colors[] array to screen.Acolors[] to more
- easily distinguish the non-ANSI colors from the ANSI colors.
-
- <LI>moved logic of SGR_Save() into VTInitialize, getting rid of
- local private variables original_fg and original_bg.
-
- <LI>moved some logic into getXtermForeground and getXtermBackground
- from SGR_Foreground, SGR_Background, etc.
-
- <LI>corrected misleading 'row' to 'col' in case for CUF, CUB
- sequences.
-</UL>
-
- <LI>ctlseqs.ms
- <LI>xterm.man
-<UL>
- <LI>(correct a misconception which I'd added that the color0
- through color6 resource values apply to non-ANSI colors)
-</UL>
-
- <LI>ptyx.h
-<UL>
- <LI>added original_fg, original_bg to TScreen structure.
-</UL>
-
- <LI>scrollbar.c
-<UL>
- <LI>(compiler warnings: redundant cast)
-</UL>
-
- <LI>util.c
-<UL>
- <LI>new functions getXtermForeground and getXtermBackground replace
- the macros GET_FG and GET_BG, with the added functionality of
- checking for the reverse-video status of xterm.
-
- <LI>in ReverseVideo, swap the SGR foreground and background colors
- also.
-</UL>
-</UL>
-
-<H1><A NAME="xterm_10">Patch #10 - 1996/2/14 - XFree86 3.1.2Cd</A></H1>
-
-I observed an occasional glitch in the xterm's color behavior; a clear to end
-of line would get a color that had been used in a program that supposedly reset
-colors. I traced this down to the way xterm was modifying colors of GC's on
-the fly; it didn't restore the original color of the GC, even though it would
-later be used in functions (such as ClearRight) that assumed (my error) that
-the GC would have the current foreground or background color.
-<P>
-I fixed this by resetting the GC's colors with a new function 'resetXtermGC()',
-and direct calls on SGR_Foreground/SGR_Background, as appropriate and using a
-new function 'updatedXtermGC()' to encapsulate the logic that modifies the GC's
-color. (I also removed some commented-out code that was trying to do this --
-the problem was a little more obscure).
-
-<H1><A NAME="xterm_09">Patch #9 - 1996/2/10 - XFree86 3.1.2Cb</A></H1>
-
-This patch fixes the remaining problems that I had making xterm run with x11r5,
-as well as a couple of other bugs. It follows my patch from yesterday, that
-added ifdef's for some of the input-method resources.
-<UL>
- <LI>corrected ifdef's that suppress the input-method code (doesn't
- exist in my x11r5, and xterm works adequately without it).
-
- <LI>corrected fallback definition for 'Select()' macro (oops: I'd
- copied the wrong text...)
-
- <LI>moved the declarations for the fd_set variables to data.[ch]
-
- <LI>corrected an ifdef in resize.c (sunos 4.x doesn't have termcap.h)
-
- <LI>corrected (in main.c) some unused/orphaned variables.
-</UL>
-
-<H1><A NAME="xterm_08">Patch #8 - 1996/2/9 - XFree86 3.1.2Cb</A></H1>
-
-This is mostly a documentation patch for xterm. It describes the color control
-sequences in more detail, and documents some other features of xterm that
-aren't described elsewhere.
-<P>
-I've also added a couple of ifdef's to fix (part of) the problem that I'm
-working on (making the program work properly on x11r5, where I'm doing memory
-testing -- I have a "good" version from mid-January, but my resync version
-doesn't work properly on x11r5). I'm not done with <EM>that</EM> yet.
-
-<H1><A NAME="xterm_07">Patch #7 - 1996/1/28 - XFree86 3.1.2n</A></H1>
-
-I did a (clean) build of 3.1.2n on Linux 1.2.13 (ELF). I've got an S3 card.
-<P>
-This fixes the following in the 3.1.2n xterm:
-<UL>
- <LI>initialize cur_foreground, cur_background in charproc.c (Purify
- told me they weren't initialized).
-
- <LI>add interpretation of codes 39, 49, to reset background and
- foreground to default value (I'm told that ISO 6429 does this; but I
- don't have a written reference -- yet -- can anyone help here?).
- Anyway, rxvt does it, and it'll solve my remaining color management
- problems.
-
- <LI>shadowing of 'time' in menu.c
-
- <LI>'Cardinal' vs 'int' in scrollbar.c
-
- <LI>several changes to permit compile with X11R5 (the system that I've
- got Purify on won't be upgraded to X11R6 for a long time).
-</UL>
-<P>
-I built this version (with a minor nit that I'll patch soon) on SunOS 4.1.3 so
-that I can test it some more with Purify.
-<P>
-<EM>btw</EM>:
-the changes made in Xpoll.h won't work on some older systems, because
- fd_set isn't a defined type (I've got one machine at least that this
- applies to).
-
-<H1><A NAME="xterm_06">Patch #6 - 1996/1/8</A></H1>
-
-This patch does all of the SGR foreground/background fixes (i.e., clearing the
-screen after an SGR color is set causes that color to be used in the foreground
-and/or background). If the FG_COLOR and/or BG_COLOR flags aren't set, then the
-xterm foreground and background default to the window's values. This usage is
-consistent with various types of hardware (especially the IBM PC), and is also
-used in rxvt.
-<UL>
- <LI>charproc.c:
-<UL>
- <LI>add/use new macros GET_FG, GET_BG - n/c.
-
- <LI>add/use new functions SGR_Foreground() and SGR_Background()
- to set corresponding colors in GC's, and to retain sense of
- "original" colors.
-
- <P>
- =&gt; This makes redundant some of the corresponding logic
- in HideCursor to set the foreground and background,
- but I left it in since it <EM>may</EM> be fixing an unrelated
- requirement.
-
- <LI>set GC's in LoadNewFont() according to whether the SGR fg/bg
- colors are active.
-
- <P>
- =&gt; This fixes some glitches in the accompanying resize,
- that leaves parts of the window in the original
- background color.
-</UL>
-
- <LI>screen.c:
-<UL>
- <LI>modified ClearBufRows() to use the SGR fg/bg colors if
- they're set.
-
- <LI>added function ScrnClearLines(), used this to replace
- portions of ScrnInsertLine() and ScrnDeleteLine().
- The new function uses the SGR fg/bg colors if they're
- set.
-
- <P>
- =&gt; Otherwise, selection after an index or reverse index will
- paint the wrong colors.
-
- <LI>modified ScrnDeleteChar() and ScrnInsertChar()
- to use SGR fg/bg colors.
-</UL>
-
- <LI>util.c:
-<UL>
- <LI>modified ClearRight() so that if either of the SGR fg/bg
- colors is set, we don't bzero the attributes and color
- arrays, but instead fill them with the appropriate codes.
-
- <LI>modified ClearLeft to use SGR fg/bg colors.
-</UL>
-</UL>
-
-<H1><A NAME="xterm_05">Patch #5 - 1996/1/7</A></H1>
-
-This patch modifies the object code, by replacing indexing expressions with
-temporary variables with the full indexing expression. At first glance, this
-seems inefficient (it did to me ;-), until remembering comments made in the
-compilers newsgroups that trying to "help" the compiler doesn't really work
-that well. A good optimizing compiler can do a better job than the programmer
-can. (There's a moral in the use of 'register' variables also, but I won't fix
-those...).
-<P>
-Anyway, the revised code generates a smaller object...
-<UL>
-<LI>charproc.c:
-<UL>
-<LI>recode index expressions in ShowCursor() and HideCursor()
- using SCRN_BUF_xxxxS macros - changes object.
-
-<LI>replace constant '4' by MAX_PTRS - n/c.
-</UL>
-
-<LI>ptyx.h:
-<UL>
-<LI>defined the SCRN_BUF_xxxxS macros in terms of BUF_xxxxS
- macros, to pick up references to ScrnBuf data directly, and
- added MAX_PTRS symbol to pick up those '4' constants strewn
- about the code - n/c.
-</UL>
-
-<LI>screen.c:
-<UL>
-<LI>recode index expressions in ScreenWrite() using
- SCRN_BUF_xxxxS macros - changes object.
-
-<LI>replace constant '4' by MAX_PTRS - n/c.
-
-<LI>use macros BUF_CHARS, BUF_ATTRS - n/c.
-
-<LI>cast calloc to 'Char *' to fix compiler warning on IRIX - n/c
-</UL>
-
-<LI>scrollbar.c:
-<UL>
-<LI>replace constant '4' by MAX_PTRS - n/c.
-
-<LI>cast calloc to 'Char *' to fix compiler warning on IRIX - n/c
-</UL>
-</UL>
-
-<H1><A NAME="xterm_04">Patch #4 - 1996/1/7</A></H1>
-When setting up for this phase, I saw that you'd corrected the bug that I found
-in ClearLeft. I decided to make this series of patches anyway, since
-readability never hurt (and there's the potential for finding another bug while
-reviewing this set).
-<UL>
-<LI>button.c:
-<UL>
-<LI>use SCRN_BUF_xxxxS macros - n/c
-</UL>
-<LI>charproc.c:
-<UL>
-<LI>use SCRN_BUF_xxxxS macros - n/c
-</UL>
-<LI>ptyx.h:
-<UL>
-<LI>added four macros: SCRN_BUF_CHARS, SCRN_BUF_ATTRS,
- SCRN_BUF_FORES, SCRN_BUF_BACKS to represent the four
- arrays that are derived from screen-&gt;buf.
-</UL>
-<LI>screen.c:
-<UL>
-<LI>use SCRN_BUF_xxxxS macros - n/c
-</UL>
-<LI>util.c:
-<UL>
-<LI>use SCRN_BUF_xxxxS macros - n/c
-</UL>
-</UL>
-<H1><A NAME="xterm_03">Patch #3 - 1996/1/7</A></H1>
-
-This is my third (and final cleanup) patch for xterm. It gets rid of the
-unused stuff, and converts several functions to static (thereby reducing their
-scope).
-<P>
-At this point, the only compile warnings I've got (on Linux) are those about
-the select arguments (int vs fd_set type), and a missing declaration for
-waitpid. Those both are hard to get right without autoconfigure.
-<P>
-The next patches will address the functional changes...
-<UL>
-<LI>Tekproc.c:
-<UL>
-<LI>changed several functions to 'static' that aren't used
-outside this module -- changes object
-</UL>
-<LI>charproc.c:
-<UL>
-<LI>changed several functions to 'static' that aren't used
-outside this module -- changes object
-<LI>deleted unused function unparsefputs -- changes object.
-</UL>
-<LI>main.c:
-<UL>
-<LI>changed several functions to 'static' that aren't used
-outside this module -- changes object
-<LI>ifdef'd out unused function 'consolepr()' -- changes object
-<LI>removed unused variable 'dummy_tio' -- changes object
-<LI>moved variable 'discipline' to quiet unused-warning -- changes object
-</UL>
-<LI>main.h:
-<UL>
-<LI>deleted unused definition of DEFBORDERWIDTH - n/c
-</UL>
-<LI>misc.c:
-<UL>
-<LI>changed several functions to 'static' that aren't used
-outside this module -- changes object
-<LI>provide dummy return statements for xerror and xioerror to
-quiet compiler warnings -- changes object
-</UL>
-<LI>ptyx.h:
-<UL>
-<LI>change sbuf_address and abuf_address to 'Char *' - n/c
-</UL>
-<LI>resize.c:
-<UL>
-<LI>changed several functions to 'static' that aren't used outside this module
--- changes object
-</UL>
-<LI>screen.c:
-<UL>
-<LI>remove unnecessary 'Char **' casts - n/c
-</UL>
-<LI>util.c:
-<UL>
-<LI>changed several functions to 'static' that aren't used outside this module
--- changes object
-</UL>
-</UL>
-<H1><A NAME="xterm_02">Patch #2 - 1996/1/7</A></H1>
-This is my second patch to xterm. It corrects most of the gcc warnings (except
-for some that are due to X header files ;-). I compared objects to keep track
-of the changes that don't affect the object code (n/c) versus those that do.
-<P>
-At this point, I'm compiling (fairly) clean with gcc options
-<PRE>
- -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wnested-externs
-</PRE>
-(I also compiled with -Wshadow, but while that found some things that I wanted
-to find, there's far too many warnings from the X headers to be usable in this
-context).
-<P>
-The changes:
-<UL>
-<LI>Tekproc.c:
-<UL>
-<LI>parenthesized expression to avoid gcc warning -- n/c.
-
-<LI>corrected nested-extern declaration for Bool
- waiting_for_initial_map; ourTopLevelShellArgs, and
- number_ourTopLevelShellArgs - n/c
-
-</UL>
-<LI>charproc.c:
-<UL>
-<LI>corrected potentially-unintialized variables 'scstype', 'xim',
- and 'input_style' -- changes object.
-
-<LI>adjusted logic of VTparse so that gcc won't warn about setjmp
- clobbering parsestate -- changes object.
-
-<LI>corrected initialization of 'scstype', which could have been
- clobbered by setjmp/longjmp - changes object.
-
-<LI>corrected nested-extern declaration of 'term', 'ProgramName'
- - n/c
-</UL>
-
-<LI>cursor.c:
-<UL>
-<LI>corrected nested-extern declaration of 'term' -- n/c
-
-<LI>renamed 'term' parameters to avoid gcc -Wshadow warning - n/c
-</UL>
-
-<LI>input.c:
-<UL>
-<LI>change interface of StringInput to assume size_t (i.e.,
- unsigned) nbytes -- changes object.
-
-<LI>change interface of funcvalue, and sunfuncvalue to use
- 'KeySym' type instead of 'int' - changes object.
-</UL>
-
-<LI>main.c:
-<UL>
-<LI>moved definitions of SIGNAL_T, SIGNAL_RETURN to proto.h - n/c
-
-<LI>corrected missing params of 'do_hangup()' -- changes object
- (note: the missing params were not used).
-
-<LI>corrected missing param of 'Error()' -- changes object
-
-<LI>corrected nested-extern 'environ' - n/c
-
-<LI>adjusted assignments to 'tty_got_hung' and 'no_dev_tty' so
- that gcc can see they won't be clobbered by the longjmp -
- changes object.
-
-<LI>use Size_t type - n/c.
-</UL>
-
-<LI>menu.c:
-<UL>
-<LI>removed redundant prototype for 'do_hangup()' -- n/c.
-
-<LI>renamed 'time' parameters to avoid gcc -Wshadow warning - n/c
-</UL>
-
-<LI>menu.h:
-<UL>
-<LI>renamed 'time' parameters to avoid gcc -Wshadow warning - n/c
-</UL>
-
-<LI>misc.c:
-<UL>
-<LI>corrected definition of 'HandleFocusChange()' -- changes
- object
-
-<LI>cast parameters in call to 'TekExpose()' -- n/c
-
-<LI>corrected nested-extern declarations of 'term', 'toplevel',
- ProgramName, and 'environ' -- n/c.
-
-<LI>use Size_t type - n/c.
-</UL>
-
-<LI>proto.h:
-<UL>
-<LI>moved definition of SIGNAL_T (and SIGNAL_RETURN) here from
- main.c, resize.c to allow use of this symbol in prototypes
- (mostly in xterm.h).
-
-<LI>added definition 'Size_t' to use as corrected type for
- strncpy, malloc sizes - n/c.
-</UL>
-
-<LI>resize.c:
-<UL>
-<LI>moved SIGNAL_T definition to proto.h -- n/c.
-
-<LI>use Size_t type - n/c.
-</UL>
-
-<LI>screen.c:
-<UL>
-<LI>use Size_t type - n/c.
-</UL>
-
-<LI>tabs.c:
-<UL>
-<LI>corrected nested-extern declaration of 'term' -- n/c
-</UL>
-
-<LI>util.c:
-<UL>
-<LI>corrected/supplied parameters to 'TekExpose()' -- changes
- object (note: 'TekExpose()' doesn't use its parameters).
-
-<LI>corrected nested-extern declaration of
- 'waiting_for_initial_map' -- n/c.
-
-<LI>renamed 'term' parameters to avoid gcc -Wshadow warning - n/c
-</UL>
-
-<LI>xterm.h:
-<UL>
-<LI>prototype 'do_hangup()', 'HandleFocusChange()',
- 'TekExpose()', 'Error()', 'Exit()' - forces changes in
- various places.
-
-<LI>adjusted prototypes that pass 'Boolean' arguments to use
- 'int' (this is the "correct" ANSI approach to extended
- compiles; it's worth mentioning that gcc doesn't meet the
- ANSI spec here). I used gcc -Wconversion to find these, but
- there's a lot of unrelated warnings that are due to setting
- NARROWPROTO in the config - n/c.
-
-<LI>renamed 'term' parameters to avoid gcc -Wshadow warning - n/c
-</UL>
-</UL>
-<H1><A NAME="xterm_01">Patch #1 - 1996/1/6</A></H1>
-This is my first cleanup patch for xterm. It addresses all of the gcc warnings
-for -Wall, -Wmissing-prototypes and -Wstrict-prototypes that I can change
-without modifying the object code. (I'm compiling this with gcc 2.7.0 for an
-aout target, which makes it simple to compare objects. When I do ELF-only,
-I've got a tool that compares that sort of thing as well).
-<P>
-Briefly, this patch adds (and uses) two header files in the xterm directory:
-<PRE>
- proto.h
- xterm.h
-</PRE>
-I expect this to be the biggest patch by far. However (barring a misplaced
-prototype), it shouldn't break anything, since the intent of the patch is to
-provide missing declarations.
-</BODY>
-</HTML>
diff --git a/nx-X11/programs/xterm/xterm.man b/nx-X11/programs/xterm/xterm.man
deleted file mode 100644
index 36fa64df0..000000000
--- a/nx-X11/programs/xterm/xterm.man
+++ /dev/null
@@ -1,4418 +0,0 @@
-.\" $XTermId: xterm.man,v 1.320 2005/11/13 23:10:36 tom Exp $
-.\" $Xorg: xterm.man,v 1.4 2001/02/09 02:06:03 xorgcvs Exp $
-.\"
-.\"
-.\" Copyright 1996-2004,2005 by Thomas E. Dickey
-.\"
-.\" 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-.\" holders shall not be used in advertising or otherwise to promote the
-.\" sale, use or other dealings in this Software without prior written
-.\" authorization.
-.\"
-.\"
-.\" Copyright 1989 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.
-.\"
-.\" $XFree86: xc/programs/xterm/xterm.man,v 3.118 2005/11/13 23:10:36 dickey Exp $
-.\"
-.\" updated by Thomas E. Dickey for XFree86, July 1996 - July 2004.
-.
-.de DS
-.sp
-.in +4
-.nf
-.ft C \" Courier
-..
-.de DE
-.fi
-.ft P
-.sp
-.in -4
-..
-.TH XTERM 1 __vendorversion__
-.SH NAME
-xterm \- terminal emulator for X
-.SH SYNOPSIS
-.B xterm
-[-\fItoolkitoption\fP ...] [-\fIoption\fP ...] [\fIshell\fP]
-.SH DESCRIPTION
-The \fIxterm\fP program is a terminal emulator for the X Window System.
-It provides DEC VT102/VT220 (VTxxx) and Tektronix 4014
-compatible terminals for programs that cannot
-use the window system directly.
-If the underlying operating system supports
-terminal resizing capabilities (for example, the SIGWINCH signal in systems
-derived from 4.3bsd), \fIxterm\fP will use the facilities to notify programs
-running in the window whenever it is resized.
-.
-.PP
-The VTxxx and Tektronix 4014 terminals each have their own window so that you
-can edit text in one and look at graphics in the other at the same time.
-To maintain the correct aspect ratio (height/width), Tektronix graphics will
-be restricted to the largest box with a 4014's aspect ratio that will fit in
-the window.
-This box is located in the upper left area of the window.
-.
-.PP
-Although both windows may be displayed at the same time, one of them is
-considered the ``active'' window for receiving keyboard input and terminal
-output.
-This is the window that contains the text cursor.
-The active window can be chosen through escape sequences,
-the ``VT Options'' menu in the VTxxx window, and the ``Tek Options''
-menu in the 4014 window.
-.
-.SH EMULATIONS
-The VT102 emulation is fairly complete, but does not support
-autorepeat.
-Double-size characters are displayed properly if your font server supports
-scalable fonts.
-The VT220 emulation does not support soft fonts, it is otherwise complete.
-.IR Termcap (5)
-entries that work with
-.I xterm
-include
-an optional platform-specific entry,
-``xterm,'' ``vt102,'' ``vt100'' and ``ansi,'' and ``dumb.''
-.I xterm
-automatically searches the termcap file in this order for these entries and then
-sets the ``TERM'' and the ``TERMCAP'' environment variables.
-You may also use ``vt220,'' but must set the terminal emulation level
-with the \fBdecTerminalID\fP resource.
-(The ``TERMCAP'' environment variable is not set if \fIxterm\fP is linked
-against a terminfo library, since the requisite information is not provided
-by the termcap emulation of terminfo libraries).
-.
-.PP
-Many of the special
-.I xterm
-features may be modified under program control
-through a set of escape sequences different from the standard VT102 escape
-sequences.
-(See the
-.I "Xterm Control Sequences"
-document.)
-.
-.PP
-The Tektronix 4014 emulation is also fairly good.
-It supports 12-bit graphics addressing, scaled to the window size.
-Four different font sizes and five different lines types are supported.
-There is no write-through or defocused mode support.
-The Tektronix text and graphics commands are recorded internally by
-.I xterm
-and may be written to a file by sending the COPY escape sequence (or through
-the
-.B Tektronix
-menu; see below).
-The name of the file will be
-``\fBCOPY\fIyyyy\fB-\fIMM\fB-\fIdd\fB.\fIhh\fB:\fImm\fB:\fIss\fR'', where
-.IR yyyy ,
-.IR MM ,
-.IR dd ,
-.IR hh ,
-.I mm
-and
-.I ss
-are the year, month, day, hour, minute and second when the COPY was performed
-(the file is created in the directory
-.I xterm
-is started in, or the home directory for a login
-.IR xterm ).
-.
-.PP
-Not all of the features described in this manual are necessarily available in
-this version of \fIxterm\fP.
-Some (e.g., the non-VT220 extensions) are available
-only if they were compiled in, though the most commonly-used are in the
-default configuration.
-.
-.SH "OTHER FEATURES"
-.I Xterm
-automatically highlights the text cursor when the
-pointer enters the window (selected) and unhighlights it when the pointer
-leaves the window (unselected).
-If the window is the focus window, then the text cursor is
-highlighted no matter where the pointer is.
-.
-.PP
-In VT102 mode, there are escape sequences to activate and deactivate
-an alternate screen buffer, which is the same size as the display area
-of the window.
-When activated, the current screen is saved and replaced with the alternate
-screen.
-Saving of lines scrolled off the top of the window is disabled until the
-normal screen is restored.
-The
-.IR termcap (5)
-entry for
-.I xterm
-allows the visual editor
-.IR vi (1)
-to switch to the alternate screen for editing and to restore the screen
-on exit.
-A popup menu entry makes it simple to switch between the normal and
-alternate screens for cut and paste.
-.
-.PP
-In either VT102 or Tektronix mode, there are escape sequences to change the
-name of the windows.
-Additionally, in VT102 mode,
-\fIxterm\fP implements the window-manipulation control
-sequences from \fIdtterm\fP, such as resizing the window, setting its location
-on the screen.
-.
-.PP
-.I Xterm
-allows character-based applications to receive mouse events (currently
-button-press and release events, and button-motion events)
-as keyboard control sequences.
-See \fIXterm Control Sequences\fP for details.
-.
-.
-.SH OPTIONS
-The \fIxterm\fP terminal emulator
-accepts all of the standard X Toolkit command line options as well as
-the following.
-If the option begins with a
-.RB ` + '
-instead of a
-.RB ` - ',
-the option is restored to its default value.
-The \fB-version\fP and \fB-help\fP options are interpreted even if \fIxterm\fP cannot
-open the display, and are useful for testing and configuration scripts:
-.TP 8
-.B -version
-This causes \fIxterm\fP to print a version number to the standard output.
-.TP 8
-.B -help
-This causes \fIxterm\fP to print out a verbose message describing its options.
-The message is written to the standard error.
-.
-.PP
-One parameter (after all options) may be given.
-That overrides \fIxterm\fP's built-in choice of shell program.
-Normally \fIxterm\fP checks the SHELL variable.
-If that is not set, \fIxterm\fP tries to use the shell program specified
-in the password file.
-If that is not set, \fIxterm\fP uses \fI/bin/sh\fP.
-If the parameter names an executable file, \fIxterm\fP uses that instead.
-The parameter must be an absolute path, or name a file found on the user's
-PATH (and thereby construct an absolute path).
-The \fB-e\fP option cannot be used with this parameter since
-it uses all parameters following the option.
-.PP
-The other options are used to control the appearance and behavior.
-Not all options are necessarily configured into your copy of \fIxterm\fP:
-.TP 8
-.B -132
-Normally, the VT102 DECCOLM escape sequence that switches between 80 and
-132 column mode is ignored.
-This option causes the DECCOLM escape sequence to be recognized, and the
-.I xterm
-window will resize appropriately.
-.TP 8
-.B -ah
-This option indicates that
-.I xterm
-should always highlight the text cursor.
-By default,
-.I xterm
-will display a hollow text cursor whenever the focus is lost or the
-pointer leaves the window.
-.TP 8
-.B +ah
-This option indicates that
-.I xterm
-should do text cursor highlighting based on focus.
-.TP 8
-.B -ai
-This option disables active icon support if that feature was compiled
-into \fIxterm\fP.
-This is equivalent to setting the \fIvt100\fP resource
-\fBactiveIcon\fP to ``false''.
-.TP 8
-.B +ai
-This option enables active icon support if that feature was compiled
-into \fIxterm\fP.
-This is equivalent to setting the \fIvt100\fP resource
-\fBactiveIcon\fP to ``true''.
-.TP 8
-.B -aw
-This option indicates that auto-wraparound should be allowed.
-This
-allows the cursor to automatically wrap to the beginning of the next
-line when when it is at the rightmost position of a line and text is
-output.
-.TP 8
-.B +aw
-This option indicates that auto-wraparound should not be allowed.
-.TP 8
-.BI -b " number"
-This option specifies the size of the inner border (the distance between
-the outer edge of the characters and the window border) in pixels.
-That is the \fIvt100\fP \fIinternalBorder\fP resource.
-The
-default is 2.
-.TP 8
-.B +bc
-turn off text cursor blinking.
-This overrides the \fBcursorBlink\fR resource.
-.TP 8
-.B -bc
-turn on text cursor blinking.
-This overrides the \fBcursorBlink\fR resource.
-.TP 8
-.BI -bcf " milliseconds"
-set the amount of time text cursor is off when blinking via the
-\fIcursorOffTime\fP resource.
-.TP 8
-.BI -bcn " milliseconds"
-set the amount of time text cursor is on when blinking via the
-\fIcursorOffTime\fP resource.
-.TP 8
-.B "-bdc"
-Set the \fIvt100\fP resource \fBcolorBDMode\fR to ``false'',
-disabling the display of characters with bold attribute as color
-.TP 8
-.B "+bdc"
-Set the \fIvt100\fP resource \fBcolorBDMode\fR to ``true'',
-enabling the display of characters with bold attribute as color
-rather than bold
-.TP 8
-.B "-cb"
-Set the \fIvt100\fP resource \fBcutToBeginningOfLine\fP to ``false''.
-.TP 8
-.B "+cb"
-Set the \fIvt100\fP resource \fBcutToBeginningOfLine\fP to ``true''.
-.TP 8
-.B "-cc \fIcharacterclassrange\fP:\fIvalue\fP[,...]"
-This sets classes indicated by the given ranges for using in selecting by
-words.
-See the section specifying character classes.
-and discussion of the \fIcharClass\fP resource.
-.TP 8
-.B "-cjk_width"
-Set the \fBcjkWidth\fP resource to ``true''.
-When turned on, characters with East Asian Ambiguous (A) category in UTR 11
-have a column width of 2.
-Otherwise, they have a column width of 1.
-This may be useful for some legacy CJK text
-terminal-based programs assuming box drawings and others to have a column
-width of 2.
-It also has to be turned on when you specify a TrueType
-CJK double-width (bi-width/monospace) font either with \fB-fa\fP at
-the command line or \fBfaceName\fP resource.
-The default is ``false''
-.TP 8
-.B "+cjk_width"
-Reset the \fBcjkWidth\fP resource.
-.TP 8
-.BI -class " string"
-This option allows you to override \fIxterm\fP's resource class.
-Normally it is ``XTerm'', but
-can be set to another class such as ``UXTerm'' to override selected resources.
-.TP 8
-.B "-cm"
-This option disables recognition of ANSI color-change escape sequences.
-It sets the \fIcolorMode\fP resource to ``false''.
-.TP 8
-.B "+cm"
-This option enables recognition of ANSI color-change escape sequences.
-This is the same as the \fIvt100\fP resource \fBcolorMode\fP.
-.TP 8
-.B "-cn"
-This option indicates that newlines should not be cut in line-mode
-selections.
-It sets the \fIcutNewline\fP resource to ``false''.
-.TP 8
-.B +cn
-This option indicates that newlines should be cut in line-mode selections.
-It sets the \fIcutNewline\fP resource to ``true''.
-.TP 8
-.BI -cr " color"
-This option specifies the color to use for text cursor.
-The default is to
-use the same foreground color that is used for text.
-It sets the \fIcursorColor\fP resource according to the parameter.
-.TP 8
-.B -cu
-This option indicates that \fIxterm\fP should work around a bug in the
-.IR more (1)
-program that causes it
-to incorrectly display lines that are exactly the width of the window and
-are followed by a line beginning with a tab
-(the leading tabs are not displayed).
-This option is so named because it was originally thought to be a bug
-in the
-.IR curses (3x)
-cursor motion package.
-.TP 8
-.B +cu
-This option indicates that \fIxterm\fP should not work around the
-.IR more (1)
-bug mentioned above.
-.TP 8
-.B "-dc"
-This option disables the escape sequence to change dynamic colors:
-the vt100 foreground and background colors,
-its text cursor color,
-the pointer cursor foreground and background colors,
-the Tektronix emulator foreground and background colors,
-its text cursor color
-and highlight color.
-The option sets the \fIdynamicColors\fP option to ``false''.
-.TP 8
-.B "+dc"
-This option enables the escape sequence to change dynamic colors.
-The option sets the \fIdynamicColors\fP option to ``true''.
-.TP 8
-.BI -e " program \fP[ \fIarguments \fP.\|.\|. ]\fI"
-This option specifies the program (and its command line arguments) to be
-run in the \fIxterm\fP window.
-It also sets the window title and icon
-name to be the basename of the program being executed if neither \fI-T\fP
-nor \fI-n\fP are given on the command line.
-\fBThis must be the last option on the command line.\fP
-.TP 8
-.BI -en " encoding"
-This option determines the encoding on which \fIxterm\fP runs.
-It sets the \fBlocale\fR resource.
-Encodings other than UTF-8 are supported by using \fIluit\fR.
-The \fB-lc\fR option should be used instead of \fB-en\fR for
-systems with locale support.
-.TP 8
-.BI -fb " font"
-This option specifies a font to be used when displaying bold text.
-This font must be the same height and width as the normal font.
-If only one of the normal or bold fonts is specified, it will be used as the
-normal font and the bold font will be produced by overstriking this font.
-The default is to do overstriking of the normal font.
-See also the discussion of \fBboldFont\fP and \fBboldMode\fP resources.
-.TP 8
-.BI -fa " pattern"
-This option sets the pattern for fonts selected from the FreeType
-library if support for that library was compiled into \fIxterm\fP.
-This corresponds to the \fBfaceName\fP resource.
-When a CJK
-double-width font is specified, you also need to turn
-on the \fBcjkWidth\fP resource.
-.TP 8
-.BI -fbb
-This option indicates that \fIxterm\fP should compare normal and bold fonts bounding
-boxes to ensure they are compatible.
-It sets the \fBfreeBoldBox\fP resource to ``false''.
-.TP 8
-.BI +fbb
-This option indicates that \fIxterm\fP should not compare normal and bold fonts bounding
-boxes to ensure they are compatible.
-It sets the \fBfreeBoldBox\fP resource to ``true''.
-.TP 8
-.BI -fbx
-This option indicates that \fIxterm\fP should not assume that the
-normal and bold fonts have VT100 line-drawing characters.
-If any are missing, \fIxterm\fP will draw the characters directly.
-It sets the \fBforceBoxChars\fP resource to ``false''.
-.TP 8
-.BI +fbx
-This option indicates that \fIxterm\fP should assume that the
-normal and bold fonts have VT100 line-drawing characters.
-It sets the \fBforceBoxChars\fP resource to ``true''.
-.TP 8
-.BI -fd " pattern"
-This option sets the pattern for double-width fonts selected from the FreeType
-library if support for that library was compiled into \fIxterm\fP.
-This corresponds to the \fBfaceNameDoublesize\fP resource.
-.TP 8
-.BI -fi " font"
-This option sets the font for active icons if that feature was compiled
-into \fIxterm\fP.
-See also the discussion of the \fBiconFont\fP resource.
-.TP 8
-.BI -fs " size"
-This option sets the pointsize for fonts selected from the FreeType
-library if support for that library was compiled into \fIxterm\fP.
-This corresponds to the \fBfaceSize\fP resource.
-.TP 8
-.B -fw \fIfont\fP
-This option specifies the font to be used for displaying wide text.
-By default,
-it will attempt to use a font twice as wide as the font that will be used to
-draw normal text.
-If no doublewidth font is found, it will improvise, by stretching
-the normal font.
-This corresponds to the \fBwideFont\fP resource.
-.TP 8
-.B -fwb \fIfont\fP
-This option specifies the font to be used for displaying bold wide text.
-By default,
-it will attempt to use a font twice as wide as the font that will be used to
-draw bold text.
-If no doublewidth font is found, it will improvise, by stretching
-the bold font.
-This corresponds to the \fBwideBoldFont\fP resource.
-.TP 8
-.B -fx \fIfont\fP
-This option specifies the font to be used for displaying the preedit string
-in the "OverTheSpot" input method.
-See also the discussion of the \fBximFont\fP resource.
-.TP 8
-.BI -hc " color"
-This option specifies the color to use for the background of
-selected or otherwise highlighted text.
-If not specified,
-reverse video is used.
-See the discussion of the \fBhighlightColor\fP resource.
-.TP 8
-.BI -hf
-This option indicates that HP Function Key escape codes should be generated
-for function keys.
-It sets the \fBhpFunctionKeys\fP resource to ``true''.
-.TP 8
-.BI +hf
-This option indicates that HP Function Key escape codes should not be generated
-for function keys.
-It sets the \fBhpFunctionKeys\fP resource to ``false''.
-.TP 8
-.BI -hold
-Turn on the \fBhold\fP resource, i.e.,
-\fIxterm\fP will not immediately destroy its window when the shell command completes.
-It will wait until you use the window manager to destroy/kill the window, or
-if you use the menu entries that send a signal, e.g., HUP or KILL.
-.TP 8
-.BI +hold
-Turn off the \fBhold\fP resource, i.e.,
-\fIxterm\fP will immediately destroy its window when the shell command completes.
-.TP 8
-.B -ie
-Turn on the \fBptyInitialErase\fP resource, i.e.,
-use the pseudo-terminal's sense of the stty erase value.
-.TP 8
-.B +ie
-Turn off the \fBptyInitialErase\fP resource, i.e.,
-set the stty erase value using the \fBkb\fP string from the termcap entry as
-a reference, if available.
-.TP 8
-.B -im
-Turn on the \fBuseInsertMode\fP resource,
-which forces use of insert mode by adding appropriate entries to the TERMCAP
-environment variable.
-.TP 8
-.B +im
-Turn off the \fBuseInsertMode\fP resource.
-.TP 8
-.BI -into " windowId"
-Given an X window identifier (a decimal integer),
-\fIxterm\fP will reparent its top-level shell widget to that window.
-This is used to embed \fIxterm\fP within other applications.
-.TP 8
-.B -j
-This option indicates that \fIxterm\fP should do jump scrolling.
-It corresponds to the \fBjumpScroll\fP resource.
-Normally,
-text is scrolled one line at a time; this option allows \fIxterm\fP to move
-multiple lines at a time so that it does not fall as far behind.
-Its use is
-strongly recommended since it makes \fIxterm\fP much faster when scanning
-through large amounts of text.
-The VT100 escape sequences for enabling and
-disabling smooth scroll as well as the ``VT Options''
-menu can be used to turn this
-feature on or off.
-.TP 8
-.B +j
-This option indicates that \fIxterm\fP should not do jump scrolling.
-.TP 8
-.B -k8
-This option sets the \fBallowC1Printable\fP resource.
-When \fBallowC1Printable\fP is set, \fIxterm\fP overrides the mapping
-of C1 control characters (code 128-159) to treat them as printable.
-.TP 8
-.B +k8
-This option resets the \fBallowC1Printable\fP resource.
-.TP 8
-.BI -kt " keyboardtype"
-This option sets the \fBkeyboardType\fP resource.
-Possible values include: ``hp'', ``sco'', ``sun'' and ``vt220''.
-The default value ``unknown'',
-causes the corresponding resource to be ignored.
-.TP 8
-.B -l
-Turn logging on.
-Normally logging is not supported, due to security concerns.
-Some versions of \fIxterm\fP may have logging enabled.
-The logfile is written to the directory from which \fIxterm\fP is
-invoked.
-The filename is generated, of the form
-.sp
- XtermLog.\fIXXXXXX\fR
-.sp
-or
-.sp
- Xterm.log.\fIhostname.yyyy.mm.dd.hh.mm.ss.XXXXXX\fR
-.sp
-depending on how \fIxterm\fP was built.
-.TP 8
-.B +l
-Turn logging off.
-.TP 8
-.B -lc
-Turn on support of various encodings according to the users'
-locale setting, i.e., LC_ALL, LC_CTYPE, or LANG environment variables.
-This is achieved by turning on UTF-8 mode and by invoking \fIluit\fR for
-conversion between locale encodings and UTF-8.
-(\fIluit\fR is not invoked in UTF-8 locales.)
-This corresponds to the \fBlocale\fR resource.
-.IP
-The actual list of encodings which are supported is determined by \fIluit\fR.
-Consult the \fIluit\fR manual page for further details.
-See also the discussion of the \fB-u8\fP option which supports UTF-8 locales.
-.TP 8
-.B +lc
-Turn off support of automatic selection of locale encodings.
-Conventional 8bit mode or, in UTF-8 locales or with \fB-u8\fP option,
-UTF-8 mode will be used.
-.TP 8
-.BI -lcc " path"
-File name for the encoding converter from/to locale encodings
-and UTF-8 which is used with \fB-lc\fP option or \fBlocale\fR resource.
-This corresponds to the \fBlocaleFilter\fR resource.
-.TP 8
-.B -leftbar
-Force scrollbar to the left side of VT100 screen.
-This is the default, unless you have set the rightScrollBar resource.
-.TP 8
-.BI -lf " filename"
-Specify the log-filename.
-See the \fB-l\fP option.
-.TP 8
-.B -ls
-This option indicates that the shell that is started in the \fIxterm\fP window
-will be a login shell (i.e., the first character of argv[0] will be a dash,
-indicating to the shell that it should read the user's .login or .profile).
-.IP
-The \fB-ls\fP flag and the \fBloginShell\fP resource
-are ignored if \fB-e\fP is also given,
-because \fIxterm\fP does not know how to make the shell
-start the given command after whatever it does when it is a login
-shell - the user's shell of choice need not be a Bourne shell after all.
-Also, \fIxterm\ -e\fP is supposed to provide a consistent
-functionality for other applications that need to start text-mode
-programs in a window, and if \fBloginShell\fP were not ignored, the
-result of ~/.profile might interfere with that.
-.IP
-If you do want the effect of \fB-ls\fP and \fB-e\fP simultaneously, you
-may get away with something like
-.RS 15
-xterm -e /bin/bash -l -c "my command here"
-.RE
-.IP
-Finally, \fB-ls\fP is not completely ignored,
-because \fIxterm\ -ls\ -e\fP does write a \fI/etc/wtmp\fP entry
-(if configured to do so),
-whereas \fIxterm\ -e\fP does not.
-.TP 8
-.B +ls
-This option indicates that the shell that is started should not be a login
-shell (i.e., it will be a normal ``subshell'').
-.TP 8
-.B -mb
-This option indicates that \fIxterm\fP should ring a margin bell when
-the user types near the right end of a line.
-This option can be turned on
-and off from the ``VT Options'' menu.
-.TP 8
-.B +mb
-This option indicates that margin bell should not be rung.
-.TP 8
-.BI -mc " milliseconds"
-This option specifies the maximum time between multi-click selections.
-.TP 8
-.B -mesg
-Turn off the \fBmessages\fP resource, i.e.,
-disallow write access to the terminal.
-.TP 8
-.B +mesg
-Turn on the \fBmessages\fP resource, i.e.,
-allow write access to the terminal.
-.TP 8
-.B "-mk_width"
-Set the \fBmkWidth\fP resource to ``true''.
-This makes \fIxterm\fP use a built-in version of the wide-character width
-calculation.
-The default is ``false''
-.TP 8
-.B "+mk_width"
-Reset the \fBmkWidth\fP resource.
-.TP 8
-.BI -ms " color"
-This option specifies the color to be used for the pointer cursor.
-The default
-is to use the foreground color.
-This sets the \fIpointerColor\fP resource.
-.TP 8
-.BI -nb " number"
-This option specifies the number of characters from the right end of a line
-at which the margin bell, if enabled, will ring.
-The default is 10.
-.TP 8
-.B "-nul"
-This option disables the display of underlining.
-.TP 8
-.B "+nul"
-This option enables the display of underlining.
-.TP 8
-.B -pc
-This option enables the PC-style use of bold colors (see boldColors
-resource).
-.TP 8
-.B +pc
-This option disables the PC-style use of bold colors.
-.TP 8
-.B -pob
-This option indicates that the window should be raised whenever a
-Control-G is received.
-.TP 8
-.B +pob
-This option indicates that the window should not be raised whenever a
-Control-G is received.
-.TP 8
-.B -rightbar
-Force scrollbar to the right side of VT100 screen.
-.TP 8
-.B "-rvc"
-This option disables the display of characters with reverse attribute as color.
-.TP 8
-.B "+rvc"
-This option enables the display of characters with reverse attribute as color.
-.TP 8
-.B -rw
-This option indicates that reverse-wraparound should be allowed.
-This allows
-the cursor to back up from the leftmost column of one line to the rightmost
-column of the previous line.
-This is very useful for editing long shell
-command lines and is encouraged.
-This option can be turned on and off from
-the ``VT Options'' menu.
-.TP 8
-.B +rw
-This option indicates that reverse-wraparound should not be allowed.
-.TP 8
-.B -s
-This option indicates that \fIxterm\fP may scroll asynchronously, meaning that
-the screen does not have to be kept completely up to date while scrolling.
-This allows \fIxterm\fP to run faster when network latencies are very high
-and is typically useful when running across a very large internet or many
-gateways.
-.TP 8
-.B +s
-This option indicates that \fIxterm\fP should scroll synchronously.
-.TP 8
-.B -samename
-Does not send title and icon name change requests when the request
-would have no effect: the name is not changed.
-This has the advantage
-of preventing flicker and the disadvantage of requiring an extra
-round trip to the server to find out the previous value.
-In practice
-this should never be a problem.
-.TP 8
-.B +samename
-Always send title and icon name change requests.
-.TP 8
-.B -sb
-This option indicates that some number of lines that are scrolled off the top
-of the window should be saved and that a scrollbar should be displayed so that
-those lines can be viewed.
-This option may be turned on and off from the
-``VT Options'' menu.
-.TP 8
-.B +sb
-This option indicates that a scrollbar should not be displayed.
-.TP 8
-.B -sf
-This option indicates that Sun Function Key escape codes should be generated
-for function keys.
-.TP 8
-.B +sf
-This option indicates that the standard escape codes should be generated for
-function keys.
-.TP 8
-.B -si
-This option indicates that output to a window should not automatically
-reposition the screen to the bottom of the scrolling region.
-This option can be turned on and off from the ``VT Options'' menu.
-.TP 8
-.B +si
-This option indicates that output to a window should cause it to
-scroll to the bottom.
-.TP 8
-.B -sk
-This option indicates that pressing a key while
-using the scrollbar to review previous lines of text should
-cause the window to be repositioned automatically in the normal position at the
-bottom of the scroll region.
-.TP 8
-.B +sk
-This option indicates that pressing a key while using the scrollbar
-should not cause the window to be repositioned.
-.TP 8
-.BI -sl " number"
-This option specifies the number of lines to save that have been scrolled
-off the top of the screen.
-This corresponds to the \fBsaveLines\fP resource.
-The default is 64.
-.TP 8
-.B -sm
-This option, corresponding to the \fBsessionMgt\fR resource,
-indicates that \fIxterm\fR should
-set up session manager callbacks.
-.TP 8
-.B +sm
-This option indicates that \fIxterm\fR should
-not set up session manager callbacks.
-.TP 8
-.B -sp
-This option indicates that Sun/PC keyboard should be assumed,
-providing mapping for keypad `+' to `,', and
-CTRL-F1 to F13, CTRL-F2 to F14, etc.
-.TP 8
-.B +sp
-This option indicates that the standard escape codes should be generated for
-keypad and function keys.
-.TP 8
-.B -t
-This option indicates that \fIxterm\fP should start in Tektronix mode, rather
-than in VT102 mode.
-Switching between the two windows is done using the
-``Options'' menus.
-.IR Termcap (5)
-entries that work with
-.I xterm
-``tek4014,'' ``tek4015,'' ``tek4012'', ``tek4013'' and ``tek4010,'' and ``dumb.''
-.I xterm
-automatically searches the termcap file in this order for these entries and then
-sets the ``TERM'' and the ``TERMCAP'' environment variables.
-.TP 8
-.B +t
-This option indicates that \fIxterm\fP should start in VT102 mode.
-.TP 8
-.B -tb
-This option, corresponding to the \fBtoolBar\fR resource,
-indicates that \fIxterm\fR should display a toolbar (or menubar)
-at the top of its window. The buttons in the toolbar correspond to
-the popup menus, e.g., control/left/mouse for "Main Options".
-.TP 8
-.B +tb
-This option indicates that \fIxterm\fR should
-not set up a toolbar.
-.TP 8
-.BI -ti " term_id"
-Specify the name used by \fIxterm\fP to select the
-correct response to terminal ID queries.
-It also specifies the emulation level,
-used to determine the type of response to a DA control sequence.
-Valid values include vt52, vt100, vt101, vt102, and vt220 (the "vt" is optional).
-The default is vt100.
-The term_id argument specifies the terminal ID to use.
-(This is the same as the \fBdecTerminalID\fP resource).
-.TP 8
-.BI -tm " string"
-This option specifies a series of terminal setting keywords followed by the
-characters that should be bound to those functions, similar to the \fIstty\fP
-program.
-The keywords and their values are described in detail in the \fBttyModes\fP
-resource.
-.TP 8
-.BI -tn " name"
-This option specifies the name of the terminal type to be set in the TERM
-environment variable.
-It corresponds to the \fBtermName\fP resource.
-This terminal type must exist in the terminal
-database
-(termcap or terminfo, depending on how \fIxterm\fP is built)
-and should have \fIli#\fP and \fIco#\fP entries.
-If the terminal type is not found, \fIxterm\fP uses the built-in list
-``xterm'', ``vt102'', etc.
-.TP 8
-.B -u8
-This option sets the \fButf8\fP resource.
-When \fButf8\fP is set, \fIxterm\fP interprets incoming data as UTF-8.
-This sets the \fBwideChars\fP resource as a side-effect,
-but the UTF-8 mode set by this option prevents it from being turned off.
-If you must turn it on and off, use the \fBwideChars\fP resource.
-.IP
-This option and the \fButf8\fR resource are overridden by
-the \fB-lc\fP and \fB-en\fP options and \fBlocale\fR resource.
-That is, if \fIxterm\fP has been compiled to support \fIluit\fR,
-and the \fBlocale\fP resource is not ``false''
-this option is ignored.
-We recommend using
-the \fB-lc\fR option or the ``\fBlocale:\ true\fR'' resource
-in UTF-8 locales when your operating system supports locale,
-or \fB-en\ UTF-8\fP option or the ``\fBlocale:\ UTF-8\fR'' resource
-when your operating system does not support locale.
-.TP 8
-.B +u8
-This option resets the \fButf8\fP resource.
-.TP 8
-.B "-ulc"
-This option disables the display of characters with underline attribute as
-color rather than with underlining.
-.TP 8
-.B "+ulc"
-This option enables the display of characters with underline attribute as
-color rather than with underlining.
-.TP 8
-.B -ut
-This option indicates that \fIxterm\fP should not write a record into the
-the system \fIutmp\fP log file.
-.TP 8
-.B +ut
-This option indicates that \fIxterm\fP should write a record into
-the system \fIutmp\fP log file.
-.TP 8
-.B -vb
-This option indicates that a visual bell is preferred over an audible one.
-Instead of ringing the terminal bell whenever a Control-G is received, the
-window will be flashed.
-.TP 8
-.B +vb
-This option indicates that a visual bell should not be used.
-.TP 8
-.B -wc
-This option sets the \fBwideChars\fP resource.
-When \fBwideChars\fP is set, \fIxterm\fP maintains internal structures for 16-bit
-characters.
-If you do not set this resource to ``true'',
-\fIxterm\fP will ignore the escape sequence which turns UTF-8 mode on and off.
-The default is ``false''.
-.TP 8
-.B +wc
-This option resets the \fBwideChars\fP resource.
-.TP 8
-.B -wf
-This option indicates that \fIxterm\fP should wait for the window to be mapped
-the first time before starting the subprocess so that the initial terminal
-size settings and environment variables are correct.
-It is the application's
-responsibility to catch subsequent terminal size changes.
-.TP 8
-.B +wf
-This option indicates that \fIxterm\fP should not wait before starting the
-subprocess.
-.TP 8
-.B -ziconbeep \fIpercent\fP
-Same as zIconBeep resource.
-If percent is non-zero, xterms that produce output while iconified
-will cause an XBell sound at the given volume
-and have "***" prepended to their icon titles.
-Most window managers will detect this change immediately, showing you
-which window has the output.
-(A similar feature was in x10 \fIxterm\fP.)
-.TP 8
-.B -C
-This option indicates that this window should receive console output.
-This
-is not supported on all systems.
-To obtain console output, you must be the
-owner of the console device, and you must have read and write permission
-for it.
-If you are running X under \fIxdm\fP on the console screen you may
-need to have the session startup and reset programs explicitly change the
-ownership of the console device in order to get this option to work.
-.TP 8
-.B -S\fIccn\fP
-This option allows \fIxterm\fP to be used as an input and
-output channel for an existing program and is sometimes used in specialized
-applications.
-The option value specifies the last few letters of the name of a pseudo-terminal
-to use in slave mode, plus the number of the inherited file descriptor.
-If the option contains a ``/'' character, that delimits the characters
-used for the pseudo-terminal name from the file descriptor.
-Otherwise, exactly two characters are used from the option for
-the pseudo-terminal name, the remainder is the file descriptor.
-Examples:
-.nf
-.RS 15
--S123/45
--Sab34
-.RE
-.fi
-.IP
-Note that \fIxterm\fP does not close any file descriptor
-which it did not open for its own use.
-It is possible (though probably not portable) to have an application
-which passes an open file descriptor down to \fIxterm\fP past the
-initialization or the \fB-S\fP option to a process running in the \fIxterm\fP.
-.PP
-The following command line arguments are provided for compatibility with
-older versions.
-They may not be supported in the next release as the X
-Toolkit provides standard options that accomplish the same task.
-.TP 8
-.B "%\fIgeom\fP"
-This option specifies the preferred size and position of the Tektronix window.
-It is shorthand for specifying the ``\fI*tekGeometry\fP'' resource.
-.TP 8
-.B \ #\fIgeom\fP
-This option specifies the preferred position of the icon window.
-It is shorthand for specifying the ``\fI*iconGeometry\fP'' resource.
-.TP 8
-.BI -T " string"
-This option specifies the title for \fIxterm\fP's windows.
-It is equivalent to \fB-title\fP.
-.TP 8
-.BI -n " string"
-This option specifies the icon name for \fIxterm\fP's windows.
-It is shorthand for specifying the ``\fI*iconName\fP'' resource.
-Note that this is not the same as the toolkit option \fB-name\fP (see below).
-The default icon name is the application name.
-.TP 8
-.B -r
-This option indicates that reverse video should be simulated by swapping
-the foreground and background colors.
-It is equivalent to
-\fB-rv\fP.
-.TP 8
-.BI -w " number"
-This option specifies the width in pixels of the border surrounding the window.
-It is equivalent to \fB-borderwidth\fP or \fB-bw\fP.
-.
-.PP
-The following standard X Toolkit command line arguments are commonly used
-with \fIxterm\fP:
-.TP 8
-.B -bd \fIcolor\fP
-This option specifies the color to use for the border of the window.
-The default is ``black.''
-.TP 8
-.B -bg \fIcolor\fP
-This option specifies the color to use for the background of the window.
-The default is ``white.''
-.TP 8
-.B -bw \fInumber\fP
-This option specifies the width in pixels of the border surrounding the window.
-.TP 8
-.B -display \fIdisplay\fP
-This option specifies the X server to contact; see \fIX(__miscmansuffix__)\fP.
-.TP 8
-.B -fg \fIcolor\fP
-This option specifies the color to use for displaying text.
-The default is
-``black.''
-.TP 8
-.B -fn \fIfont\fP
-This option specifies the font to be used for displaying normal text.
-The
-default is \fIfixed\fP.
-.TP 8
-.B -font \fIfont\fP
-This is the same as \fB-fn\fP.
-.TP 8
-.B -geometry \fIgeometry\fP
-This option specifies the preferred size and position of the VT102 window;
-see \fIX(__miscmansuffix__)\fP.
-.TP 8
-.B -iconic
-This option indicates that \fIxterm\fP should ask the window manager to
-start it as an icon rather than as the normal window.
-.TP 8
-.B -name \fIname\fP
-This option specifies the application name under which resources are to be
-obtained, rather than the default executable file name.
-\fIName\fP should not contain ``.'' or ``*'' characters.
-.TP 8
-.B -rv
-This option indicates that reverse video should be simulated by swapping
-the foreground and background colors.
-.TP 8
-.B +rv
-Disable the simulation of reverse video by swapping foreground and background
-colors.
-.TP 8
-.B -title \fIstring\fP
-This option specifies the window title string, which may be displayed by
-window managers if the user so chooses.
-The default title is the command
-line specified after the \fB-e\fP option, if any, otherwise the application
-name.
-.TP 8
-.B -xrm \fIresourcestring\fP
-This option specifies a resource string to be used.
-This is especially
-useful for setting resources that do not have separate command line options.
-.
-.
-.SH RESOURCES
-The program understands all of the core X Toolkit resource names and classes.
-Application specific resources (e.g., "\fBXTerm.\fP\fINAME\fP") follow:
-.TP 8
-.B "backarrowKeyIsErase (\fPclass\fB BackarrowKeyIsErase)"
-Tie the VTxxx \fBbackarrowKey\fP and \fBptyInitialErase\fP resources
-together by setting the DECBKM state according to whether the initial value of
-stty erase is a backspace (8) or delete (127) character.
-The default is ``false'', which disables this feature.
-.TP 8
-.B "hold (\fPclass\fB Hold)"
-If true,
-\fIxterm\fP will not immediately destroy its window when the shell command completes.
-It will wait until you use the window manager to destroy/kill the window, or
-if you use the menu entries that send a signal, e.g., HUP or KILL.
-You may scroll back, select text, etc., to perform most graphical operations.
-Resizing the display will lose data, however, since this involves interaction
-with the shell which is no longer running.
-.TP 8
-.B "hpFunctionKeys (\fPclass\fB HpFunctionKeys)"
-Specifies whether or not HP Function Key escape codes should be generated for
-function keys instead of standard escape sequences.
-See also the \fBkeyboardType\fP resource.
-.TP 8
-.B "iconGeometry (\fPclass\fB IconGeometry)"
-Specifies the preferred size and position of the application when iconified.
-It is not necessarily obeyed by all window managers.
-.TP 8
-.B "iconName (\fPclass\fB IconName)"
-Specifies the icon name.
-The default is the application name.
-.TP 8
-.B "keyboardType (\fPclass\fB KeyboardType)"
-Enables one (or none) of the various keyboard-type resources:
-\fBhpFunctionKeys\fP,
-\fBscoFunctionKeys\fP,
-\fBsunFunctionKeys\fP and
-\fBsunKeyboard\fP.
-The resource's value should be one of the corresponding strings
-hp, sco, sun or vt220.
-The individual resources are provided for legacy support;
-this resource is simpler to use.
-.TP 8
-.B "maxBufSize (\fPclass\fB MaxBufSize)"
-Specify the maximum size of the input buffer.
-The default is 32768.
-You cannot set this to a value less than the \fBminBufSize\fR resource.
-It will be increased as needed to make that value evenly divide this one.
-.IP
-On some systems you may want to increase one or both of the
-\fBmaxBufSize\fP and
-\fBminBufSize\fP resource values to achieve better performance
-if the operating system prefers larger buffer sizes.
-.TP 8
-.B "messages (\fPclass\fB Messages)"
-Specifies whether write access to the terminal is allowed initially.
-See
-.BR mesg (1).
-The default is ``true''.
-.TP 8
-.B "minBufSize (\fPclass\fB MinBufSize)"
-Specify the minimum size of the input buffer, i.e., the amount of data
-that \fIxterm\fR requests on each read.
-The default is 4096.
-You cannot set this to a value less than 64.
-.TP 8
-.B "ptyHandshake (\fPclass\fB PtyHandshake)
-If ``true'', \fIxterm\fP will perform handshaking during initialization
-to ensure that the parent and child processes update the \fButmp\fP
-and \fBstty\fP state.
-Platforms with newer pseudo-terminal interfaces do not require this feature;
-normally it is not configured.
-The default is ``true''.
-.TP 8
-.B "ptyInitialErase (\fPclass\fB PtyInitialErase)"
-If ``true'', \fIxterm\fP will use the pseudo-terminal's sense of the stty erase
-value.
-If ``false'', \fIxterm\fP will set the stty erase value to match its own
-configuration, using the \fBkb\fP string from the termcap entry as
-a reference, if available.
-In either case, the result is applied to the TERMCAP variable
-which \fIxterm\fP sets.
-The default is ``false''.
-.TP 8
-.B "sameName (\fPclass\fB SameName)"
-If the value of this resource is ``true'', \fIxterm\fP does not send
-title and icon name change requests when the request
-would have no effect: the name is not changed.
-This has the advantage
-of preventing flicker and the disadvantage of requiring an extra
-round trip to the server to find out the previous value.
-In practice
-this should never be a problem.
-The default is ``true''.
-.TP 8
-.B "scoFunctionKeys (\fPclass\fB ScoFunctionKeys)"
-Specifies whether or not SCP Function Key escape codes should be generated for
-function keys instead of standard escape sequences.
-See also the \fBkeyboardType\fP resource.
-.TP 8
-.B "sessionMgt (\fPclass\fB SessionMgt)"
-If the value of this resource is ``true'',
-\fIxterm\fP sets up session manager callbacks
-for \fBXtNdieCallback\fR and \fBXtNsaveCallback\fR.
-The default is ``true''.
-.TP 8
-.B "sunFunctionKeys (\fPclass\fB SunFunctionKeys)"
-Specifies whether or not Sun Function Key escape codes should be generated for
-function keys instead of standard escape sequences.
-See also the \fBkeyboardType\fP resource.
-.TP 8
-.B "sunKeyboard (\fPclass\fB SunKeyboard)"
-Specifies whether or not Sun/PC keyboard layout should be assumed rather
-than DEC VT220.
-This causes the keypad `+' to be mapped to `,'.
-and
-CTRL F1-F12 to F11-F20, depending on the setting of the \fBctrlFKeys\fP
-resource.
-so \fIxterm\fP emulates a DEC VT220 more accurately.
-Otherwise (the default, with \fBsunKeyboard\fP set to ``false''),
-\fIxterm\fP uses PC-style bindings for the function keys and keypad.
-.IP
-PC-style bindings
-use the Shift, Alt, Control and Meta keys as modifiers for function-keys
-and keypad
-(see the document \fIXterm Control Sequences\fP for details).
-The PC-style bindings are analogous to PCTerm, but not the same thing.
-Normally these bindings do not conflict with the use of the Meta key
-as described for the \fBeightBitInput\fP resource.
-If they do, note that the PC-style bindings are evaluated first.
-See also the \fBkeyboardType\fP resource.
-.TP 8
-.B "termName (\fPclass\fB TermName)"
-Specifies the terminal type name to be set in the TERM environment variable.
-.TP 8
-.B "title (\fPclass\fB Title)"
-Specifies a string that may be used by the window manager when displaying
-this application.
-.TP 8
-.B "toolBar (\fPclass\fB ToolBar)"
-Specifies whether or not the toolbar should be displayed.
-The default is
-``true.''
-.TP 8
-.B "ttyModes (\fPclass\fB TtyModes)"
-Specifies a string containing terminal setting keywords and the characters
-to which they may be bound.
-Allowable keywords include:
-brk,
-dsusp,
-eof,
-eol,
-eol2,
-erase,
-erase2,
-flush,
-intr,
-kill,
-lnext,
-quit,
-rprnt,
-start,
-status,
-stop,
-susp,
-swtch and
-weras.
-Control characters may be specified as ^char (e.g., ^c or ^u)
-and \fB^?\fP may be used to indicate delete (127).
-Use \fB^-\fP to denote \fIundef\fP.
-Use \fB\\034\fP to represent \fB^\\\fP, since a literal backslash in
-an X resource escapes the next character.
-.IP
-This is very useful for overriding
-the default terminal settings without having to do an \fIstty\fP every time
-an \fIxterm\fP is started.
-Note, however, that the stty program on a given host may use different
-keywords; \fIxterm\fR's table is built-in.
-.TP 8
-.B "useInsertMode (\fPclass\fB UseInsertMode)"
-Force use of insert mode by adding appropriate entries to the TERMCAP
-environment variable.
-This is useful if the system termcap is broken.
-The default is ``false.''
-.TP 8
-.B "utmpDisplayId (\fPclass\fB UtmpDisplayId)"
-Specifies whether or not \fIxterm\fP should try to record the display
-identifier (display number and screen number) as well as the hostname in
-the system \fIutmp\fP log file.
-The default is ``true.''
-.TP 8
-.B "utmpInhibit (\fPclass\fB UtmpInhibit)"
-Specifies whether or not \fIxterm\fP should try to record the user's terminal
-in
-the system \fIutmp\fP log file.
-If true, \fIxterm\fP will not try.
-The default is ``false.''
-.TP 8
-.B "waitForMap (\fPclass\fB WaitForMap)"
-Specifies whether or not \fIxterm\fP should wait for the initial window map
-before starting the subprocess.
-The default is ``false.''
-.TP 8
-.B "zIconBeep (\fPclass\fB ZIconBeep)"
-Same as -ziconbeep command line argument.
-If the value of this resource is non-zero, xterms that produce output
-while iconified will cause an XBell sound at the given volume
-and have "***" prepended to their icon titles.
-Most window managers will detect this change immediately, showing you
-which window has the output.
-(A similar feature was in x10 \fIxterm\fR.)
-The default is ``false.''
-.
-.PP
-The following resources are specified as part
-of the \fIvt100\fP widget (class \fIVT100\fP):
-These are specified by patterns such as "\fBXTerm.vt100.\fP\fINAME\fP":
-.TP 8
-.B "activeIcon (\fPclass\fB ActiveIcon)"
-Specifies whether or not active icon windows are to be used when the
-\fIxterm\fP window is iconified, if this feature is compiled into \fIxterm\fR.
-The active icon is a miniature representation of the content of the
-window and will update as the content changes.
-Not all window managers
-necessarily support application icon windows.
-Some window managers
-will allow you to enter keystrokes into the active icon window.
-The default is ``false.''
-.TP 8
-.B "allowC1Printable (\fPclass\fB AllowC1Printable)"
-If true, overrides the mapping of C1 controls
-(codes 128-159) to make them be treated
-as if they were printable characters.
-Although this corresponds to no particular standard,
-some users insist it is a VT100.
-The default is ``false.''
-.TP 8
-.B "allowSendEvents (\fPclass\fB AllowSendEvents)"
-Specifies whether or not synthetic key and button events (generated using
-the X protocol SendEvent request) should be interpreted or discarded.
-The default is ``false'' meaning they are discarded.
-Note that allowing
-such events creates a very large security hole.
-The default is ``false.''
-.TP
-.B "allowWindowOps (\fPclass\fB AllowWindowOps)"
-Specifies whether extended window control sequences (as used in dtterm)
-for should be allowed.
-The default is ``true.''
-.TP 8
-.B "alwaysHighlight (\fPclass\fB AlwaysHighlight)"
-Specifies whether or not \fIxterm\fP should always display a highlighted
-text cursor.
-By default (if this resource is false),
-a hollow text cursor is displayed whenever the
-pointer moves out of the window or the window loses the input focus.
-The default is ``false.''
-.TP 8
-.B "alwaysUseMods (\fPclass\fB AlwaysUseMods)"
-Override the \fBnumLock\fP resource, telling \fIxterm\fR to use the Alt and Meta
-modifiers to construct parameters for function key sequences even if
-those modifiers appear in the translations resource.
-The default is ``false.''
-.TP 8
-.B "answerbackString (\fPclass\fB AnswerbackString)"
-Specifies the string that \fIxterm\fR sends in response to an ENQ (control/E)
-character from the host.
-The default is a blank string, i.e., ``''.
-A hardware VT100 implements this feature as a setup option.
-.TP 8
-.B "appcursorDefault (\fPclass\fB AppcursorDefault)"
-If ``true,'' the cursor keys are initially in application mode.
-This is the same as the VT102 private DECCKM mode,
-The default is ``false.''
-.TP 8
-.B "appkeypadDefault (\fPclass\fB AppkeypadDefault)"
-If ``true,'' the keypad keys are initially in application mode.
-The default is ``false.''
-.TP 8
-.B "autoWrap (\fPclass\fB AutoWrap)"
-Specifies whether or not auto-wraparound should be enabled.
-This is the same as the VT102 DECAWM.
-The
-default is ``true.''
-.TP 8
-.B "awaitInput (\fPclass\fB AwaitInput)"
-Specifies whether or not the \fIxterm\fR uses a 50 millisecond timeout to
-await input (i.e., to support the Xaw3d arrow scrollbar).
-The default is ``false.''
-.TP 8
-.B "backarrowKey (\fPclass\fB BackarrowKey)"
-Specifies whether the backarrow key transmits
-a backspace (8)
-or delete (127) character.
-This corresponds to the DECBKM control sequence.
-The default (backspace) is ``true.''
-Pressing the control key toggles this behavior.
-.TP 8
-.B "background (\fPclass\fB Background)"
-Specifies the color to use for the background of the window.
-The default is
-``white.''
-.TP 8
-.B "bellOnReset (\fPclass\fB BellOnReset)"
-Specifies whether to sound a bell when doing a hard reset.
-The default is ``true.''
-.TP 8
-.B "bellSuppressTime (\fPclass\fB BellSuppressTime)"
-Number of milliseconds after a bell command is sent during which additional
-bells will be suppressed.
-Default is 200.
-If set non-zero,
-additional bells
-will also be suppressed until the server reports that processing of
-the first bell has been completed; this feature is most useful with
-the visible bell.
-.TP 8
-.B "boldColors (\fPclass\fB ColorMode)"
-Specifies whether to combine bold attribute with colors like the IBM PC,
-i.e., map colors 0 through 7 to colors 8 through 15.
-These normally are the brighter versions of the first 8 colors, hence bold.
-The default is ``true.''
-.TP 8
-.B "boldFont (\fPclass\fB BoldFont)"
-Specifies the name of the bold font to use instead of overstriking.
-There is no default for this resource.
-.TP 8
-.B "boldMode (\fPclass\fB BoldMode)"
-This specifies whether or not text with the bold attribute should be
-overstruck to simulate bold fonts if the resolved bold font is the
-same as the normal font.
-It may be desirable to disable bold fonts when color is being
-used for the bold attribute.
-Note that \fIxterm\fP has one bold font which you may set explicitly.
-It attempts to match a bold font for the other font selections
-(\fBfont1\fP through \fBfont6\fP).
-If the normal and bold fonts are distinct, this resource has no effect.
-The default is ``true.''
-.IP
-Although \fIxterm\fP attempts to match a bold font for other font selections,
-the font server may not cooperate.
-Since X11R6, bitmap fonts have been scaled.
-The font server claims to provide the bold font that \fIxterm\fP requests,
-but the result is not always readable.
-XFree86 provides a feature which can be used to suppress the scaling.
-In the X server's configuration file (e.g., "/etc/X11/XFree86"), you
-can add ":unscaled" to the end of the directory specification for the
-"misc" fonts, which comprise the fixed-pitch fonts that are used by \fIxterm\fP.
-For example
-.RS
- FontPath "/usr/lib/X11/fonts/misc/"
-.RE
-.IP
-would become
-.RS
- FontPath "/usr/lib/X11/fonts/misc/:unscaled"
-.RE
-.IP
-Depending on your configuration, the font server may have its own configuration
-file.
-The same ":unscaled" can be added to its configuration file at the
-end of the directory specification for "misc".
-.TP 8
-.B "brokenLinuxOSC (\fPclass\fB BrokenLinuxOSC)"
-If true, \fIxterm\fP applies a workaround to ignore malformed control
-sequences that a Linux script might send.
-Compare the palette control sequences documented in \fIconsole_codes\fR
-with ECMA-48.
-The default is ``true.''
-.TP 8
-.B "brokenSelections (\fPclass\fB BrokenSelections)"
-If true, \fIxterm\fP in 8-bit mode will interpret
-.B STRING
-selections as carrying text in the current locale's encoding.
-Normally
-.B STRING
-selections carry ISO-8859-1 encoded text.
-Setting this resource to
-``true'' violates the ICCCM; it may, however, be useful for interacting
-with some broken X clients.
-The default is ``false.''
-.TP 8
-.B "brokenStringTerm (\fPclass\fB BrokenStringTerm)"
-provides a work-around for some ISDN routers which start an application
-control string without completing it.
-Set this to ``true'' if \fIxterm\fP appears to freeze when connecting.
-The default is ``false.''
-.TP 8
-.B "c132 (\fPclass\fB C132)"
-Specifies whether or not the VT102 DECCOLM escape sequence,
-used to switch between 80 and 132 columns, should be honored.
-The default is ``false.''
-.TP 8
-.B "cacheDoublesize (\fPclass\fB CacheDoublesize)"
-Specifies the maximum number of double-sized fonts which are cached by
-\fIxterm\fR.
-The default (8) may be too large for some X terminals with limited memory.
-Set this to zero to disable doublesize fonts altogether.
-.TP 8
-.B "charClass (\fPclass\fB CharClass)"
-Specifies comma-separated lists of character class bindings of the form
-[\fIlow\fP-]\fIhigh\fP:\fIvalue\fP.
-These are used in determining which
-sets of characters should be treated the same when doing cut and paste.
-See the CHARACTER CLASSES section.
-.TP 8
-.B "cjkWidth (\fPclass\fB CjkWidth)"
-Specifies whether \fIxterm\fP should follow
-the traditional East Asian width convention.
-When turned on, characters with East Asian Ambiguous (A) category in UTR
-11 have a column width of 2.
-You may have to set this option to ``true''
-if you have some old East Asian terminal based programs that assume that
-line-drawing characters have a column width of 2.
-The default is ``false.''
-.TP 8
-.B "color0 (\fPclass\fB Color0)"
-.TP 8
-.B "color1 (\fPclass\fB Color1)"
-.TP 8
-.B "color2 (\fPclass\fB Color2)"
-.TP 8
-.B "color3 (\fPclass\fB Color3)"
-.TP 8
-.B "color4 (\fPclass\fB Color4)"
-.TP 8
-.B "color5 (\fPclass\fB Color5)"
-.TP 8
-.B "color6 (\fPclass\fB Color6)"
-.TP 8
-.B "color7 (\fPclass\fB Color7)"
-These specify the colors for the ISO 6429 extension.
-The defaults are,
-respectively,
-black,
-red3,
-green3,
-yellow3,
-a customizable dark blue,
-magenta3,
-cyan3,
-and
-gray90.
-The default shades of color are chosen to allow the colors 8-15
-to be used as brighter versions.
-.TP 8
-.B "color8 (\fPclass\fB Color8)"
-.TP 8
-.B "color9 (\fPclass\fB Color9)"
-.TP 8
-.B "color10 (\fPclass\fB Color10)"
-.TP 8
-.B "color11 (\fPclass\fB Color11)"
-.TP 8
-.B "color12 (\fPclass\fB Color12)"
-.TP 8
-.B "color13 (\fPclass\fB Color13)"
-.TP 8
-.B "color14 (\fPclass\fB Color14)"
-.TP 8
-.B "color15 (\fPclass\fB Color15)"
-These specify the colors for the ISO 6429 extension if the bold attribute
-is also enabled.
-The default resource values are respectively,
-gray30,
-red,
-green,
-yellow,
-a customizable light blue,
-magenta,
-cyan,
-and
-white.
-.TP 8
-.B "color16 (\fPclass\fB Color16)"
-.TP 8
-through
-.TP 8
-.B "color255 (\fPclass\fB Color255)"
-These specify the colors for the 256-color extension.
-The default resource values
-are for colors 16 through 231 to make a 6x6x6 color cube, and colors
-232 through 255 to make a grayscale ramp.
-.TP 8
-.B "colorAttrMode (\fPclass\fB ColorAttrMode)"
-Specifies whether \fBcolorBD\fP, \fBcolorBL\fP, \fBcolorRV\fP, and
-\fBcolorUL\fP should override ANSI colors.
-If not, these are displayed only when no ANSI colors
-have been set for the corresponding position.
-The default is ``false.''
-.TP 8
-.B "colorBD (\fPclass\fB ColorBD)"
-This specifies the color to use to display bold characters if
-the ``colorBDMode'' resource is enabled.
-The default is ``XtDefaultForeground.''
-.TP 8
-.B "colorBDMode (\fPclass\fB ColorAttrMode)"
-Specifies whether characters with the bold attribute should be displayed in
-color or as bold characters.
-Note that setting \fBcolorMode\fR off disables
-all colors, including bold.
-The default is ``false.''
-.TP 8
-.B "colorBL (\fPclass\fB ColorBL)"
-This specifies the color to use to display blink characters if
-the ``colorBLMode'' resource is enabled.
-The default is ``XtDefaultForeground.''
-.TP 8
-.B "colorBLMode (\fPclass\fB ColorAttrMode)"
-Specifies whether characters with the blink attribute should be displayed in
-color.
-Note that setting \fBcolorMode\fR off disables all colors, including this.
-The default is ``false.''
-.TP 8
-.B "colorMode (\fPclass\fB ColorMode)"
-Specifies whether or not recognition of ANSI (ISO 6429)
-color change escape sequences should be enabled.
-The default is ``true.''
-.TP 8
-.B "colorRV (\fPclass\fB ColorRV)"
-This specifies the color to use to display reverse characters if
-the ``colorRVMode'' resource is enabled.
-The default is ``XtDefaultForeground.''
-.TP 8
-.B "colorRVMode (\fPclass\fB ColorAttrMode)"
-Specifies whether characters with the reverse attribute should be displayed in
-color.
-Note that setting \fBcolorMode\fR off disables all colors, including this.
-The default is ``false.''
-.TP 8
-.B "colorUL (\fPclass\fB ColorUL)"
-This specifies the color to use to display underlined characters if
-the ``colorULMode'' resource is enabled.
-The default is ``XtDefaultForeground.''
-.TP 8
-.B "colorULMode (\fPclass\fB ColorAttrMode)"
-Specifies whether characters with the underline attribute should be displayed
-in color or as underlined characters.
-Note that setting \fBcolorMode\fR off
-disables all colors, including underlining.
-The default is ``false.''
-.TP 8
-.B "ctrlFKeys (\fPclass\fB CtrlFKeys)"
-In VT220 keyboard mode (see \fBsunKeyboard\fP resource),
-specifies the amount by which to shift F1-F12 given a control modifier (CTRL).
-This allows you to generate key symbols for F10-F20 on a Sun/PC keyboard.
-The default is ``10'', which means that CTRL F1 generates the key
-symbol for F11.
-.TP 8
-.B "curses (\fPclass\fB Curses)"
-Specifies whether or not the last column bug in
-.IR more (1)
-should be worked around.
-See the \fB-cu\fP option for details.
-The default is ``false.''
-.TP 8
-.B "cursorBlink (\fPclass\fB CursorBlink)"
-Specifies whether to make the cursor blink.
-The default is ``false.''
-.TP 8
-.B "cursorColor (\fPclass\fB CursorColor)"
-Specifies the color to use for the text cursor.
-The default is ``black.''
-.TP 8
-.B "cursorOffTime (\fPclass\fB CursorOffTime)"
-Specifies the duration of the "off" part of the cursor blink cycle-time
-in milliseconds.
-The same timer is used for text blinking.
-The default is 300.
-.TP 8
-.B "cursorOnTime (\fPclass\fB CursorOnTime)"
-Specifies the duration of the "on" part of the cursor blink cycle-time,
-in milliseconds.
-The same timer is used for text blinking.
-The default is 600.
-.TP 8
-.B "cutNewline (\fPclass\fB CutNewline)"
-If ``false'', triple clicking to select a line does not include the Newline
-at the end of the line.
-If ``true'', the Newline is selected.
-The default is ``true.''
-.TP 8
-.B "cutToBeginningOfLine (\fPclass\fB CutToBeginningOfLine)"
-If ``false'', triple clicking to select a line selects only from the
-current word forward.
-If ``true'', the entire line is selected.
-The default is ``true.''
-.TP 8
-.B "decTerminalID (\fPclass\fB DecTerminalID)"
-Specifies the emulation level (100=VT100, 220=VT220, etc.), used to determine
-the type of response to a DA control sequence.
-Leading non-digit characters are ignored, e.g., "vt100" and "100" are the same.
-The default is 100.
-.TP 8
-.B "deleteIsDEL (\fPclass\fB DeleteIsDEL)"
-Specifies whether the Delete key on the editing keypad should send DEL (127)
-or the VT220-style Remove escape sequence.
-The default is ``false,'' for the latter.
-.TP 8
-.B "dynamicColors (\fPclass\fB DynamicColors)"
-Specifies whether or not escape sequences to change colors assigned to
-different attributes are recognized.
-.TP 8
-.B "eightBitControl (\fPclass\fB EightBitControl\fP)"
-Specifies whether or not control sequences sent by the
-terminal should be eight-bit characters or escape sequences.
-The default is ``false.''
-.TP 8
-.B "eightBitInput (\fPclass\fB EightBitInput\fP)"
-If ``true'', Meta characters
-(a single-byte character combined with the \fIkeys\fP modifier key)
-input from the keyboard are presented as a
-single character with the eighth bit turned on.
-The terminal is put into 8-bit mode.
-If ``false'', Meta characters are converted into a two-character
-sequence with the character itself preceded by ESC.
-On startup, \fIxterm\fP tries to put the terminal into 7-bit mode.
-The \fBmetaSendsEscape\fP resource may override this.
-The default is ``true.''
-.IP
-Generally keyboards do not have a key labeled "Meta",
-but "Alt" keys are common, and they are conventionally used for "Meta".
-If they were synonymous, it would have been reasonable to name this
-resource "altSendsEscape", reversing its sense.
-For more background on this, see the \fBmeta\fP function in curses.
-.IP
-Note that the \fIAlt\fP key is not necessarily the same as the
-\fIMeta\fP modifier.
-\fIxmodmap\fP lists your key modifiers.
-X defines modifiers for shift, (caps) lock and control,
-as well as 5 additional modifiers which are generally used to configure
-key modifiers.
-\fIxterm\fP inspects the same information to find the modifier associated
-with either \fIMeta\fP key (left or right),
-and uses that key as the \fIMeta\fP modifier.
-It also looks for the NumLock key,
-to recognize the modifier which is associated with that.
-.IP
-If your \fIxmodmap\fP configuration
-uses the same keycodes for Alt- and Meta-keys,
-\fIxterm\fP will only see the Alt-key definitions, since those are tested
-before Meta-keys.
-NumLock is tested first.
-It is important to keep these keys distinct;
-otherwise some of \fIxterm\fP's functionality is not available.
-.TP 8
-.B "eightBitOutput (\fPclass\fB EightBitOutput\fP)"
-Specifies whether or not eight-bit characters sent from the host should be
-accepted as is or stripped when printed.
-The default is ``true,''
-which means that they are accepted as is.
-.TP 8
-.B "faceName (\fPclass\fB FaceName)"
-Specify the pattern for fonts selected from the FreeType
-library if support for that library was compiled into \fIxterm\fR.
-There is no default.
-If not specified,
-or if there is no match for both normal and bold fonts,
-\fIxterm\fR uses the \fBfont\fP and related resources.
-.TP 8
-.B "faceNameDoublesize (\fPclass\fB FaceNameDoublesize)"
-Specify an double-width font for cases where an application requires
-this, e.g., in CJK applications.
-There is no default.
-If the application uses double-wide characters and this resource is not given,
-\fIxterm\fP will use a scaled version of the font given by \fBfaceName\fP.
-.TP 8
-.B "faceSize (\fPclass\fB FaceSize)"
-Specify the pointsize for fonts selected from the FreeType
-library if support for that library was compiled into \fIxterm\fR.
-The default is ``14.''
-.TP 8
-.B "font (\fPclass\fB Font)"
-Specifies the name of the normal font.
-The default is ``fixed.''
-.IP
-See the discussion of the \fBlocale\fP resource,
-which describes how this font may be overridden.
-.IP
-NOTE: some resource files use patterns such as
-.RS
-*font: fixed
-.RE
-.IP
-which are overly broad, affecting both
-.RS
-xterm.vt100.font
-.RE
-.IP
-and
-.RS
-xterm.vt100..utf8fonts.font
-.RE
-.IP
-which is probably not what you intended.
-.TP 8
-.B "font1 (\fPclass\fB Font1)"
-Specifies the name of the first alternative font.
-.TP 8
-.B "font2 (\fPclass\fB Font2)"
-Specifies the name of the second alternative font.
-.TP 8
-.B "font3 (\fPclass\fB Font3)"
-Specifies the name of the third alternative font.
-.TP 8
-.B "font4 (\fPclass\fB Font4)"
-Specifies the name of the fourth alternative font.
-.TP 8
-.B "font5 (\fPclass\fB Font5)"
-Specifies the name of the fifth alternative font.
-.TP 8
-.B "font6 (\fPclass\fB Font6)"
-Specifies the name of the sixth alternative font.
-.TP 8
-.B "fontDoublesize (\fPclass\fB FontDoublesize)"
-Specifies whether \fIxterm\fP should attempt to use font scaling to draw
-doublesize characters.
-Some older font servers cannot do this properly, will return misleading
-font metrics.
-The default is ``true''.
-If disabled, \fIxterm\fP will simulate doublesize characters by drawing
-normal characters with spaces between them.
-.TP 8
-.B "forceBoxChars (\fPclass\fB ForceBoxChars)"
-Specifies whether \fIxterm\fP should assume the normal and bold fonts
-have VT100 line-drawing characters.
-The fixed-pitch fonts used by \fIxterm\fP
-normally have the VT100 line-drawing glyphs in cells 1-31.
-Other fixed-pitch fonts may be more attractive, but lack these glyphs.
-If ``false'', \fIxterm\fP will check for missing glyphs in cells 1-31
-and make line-drawing characters directly.
-If ``true'', \fIxterm\fP uses whatever is in cells 1-31 without checking.
-The default is ``false.''
-.TP 8
-.B "foreground (\fPclass\fB Foreground)"
-Specifies the color to use for displaying text in the window.
-Setting the
-class name instead of the instance name is an easy way to have everything
-that would normally appear in the text color change color.
-The default
-is ``black.''
-.TP 8
-.B "freeBoldBox (\fPclass\fB freeBoldBox)"
-Specifies whether \fIxterm\fP should assume the bounding boxes for
-normal and bold fonts are compatible.
-If ``false'', \fIxterm\fP compares them and will reject choices of
-bold fonts that do not match the size of the normal font.
-The default is ``false'', which means that the comparison is performed.
-.TP 8
-.B "geometry (\fPclass\fB Geometry)"
-Specifies the preferred size and position of the VT102 window.
-There is no default for this resource.
-.TP 8
-.B "highlightColor (\fPclass\fB HighlightColor)"
-Specifies the color to use for the background of selected or otherwise
-highlighted text.
-If not specified, reverse video is used.
-The default is ``XtDefaultForeground.''
-.TP 8
-.B "highlightSelection (\fPclass\fB HighlightSelection)"
-If ``false'', selecting with the mouse highlights all positions on the screen
-between the beginning of the selection and the current position.
-If ``true'', \fIxterm\fP highlights only the positions that contain text that
-can be selected.
-The default is ``false.''
-.IP
-Depending on the way your applications write to the screen, there may
-be trailing blanks on a line.
-\fIXterm\fP stores data as it is shown on the screen.
-Erasing the display changes the internal state of each cell
-so it is not considered a blank for the purpose of selection.
-Blanks written since the last erase are selectable.
-If you do not wish to have trailing blanks in a selection,
-use the \fBtrimSelection\fP resource.
-.TP 8
-.B "hpLowerleftBugCompat (\fPclass\fB HpLowerleftBugCompat)"
-Specifies whether to work around a bug in HP's \fIxdb\fP,
-which ignores termcap and always sends
-ESC F to move to the lower left corner.
-``true'' causes \fIxterm\fP to interpret ESC F as a request to move to the
-lower left corner of the screen.
-The default is ``false.''
-.TP 8
-.B "i18nSelections (\fPclass\fB I18nSelections)"
-If false, \fIxterm\fP will never request the targets
-.B COMPOUND_TEXT
-or
-.BR TEXT .
-The default is ``true.'' It may be set to false in order to work around
-ICCCM violations by other X clients.
-.TP 8
-.B "iconBorderColor (\fPclass\fB BorderColor)"
-Specifies the border color for the active icon window if this feature
-is compiled into \fIxterm\fR.
-Not all window managers will make the icon
-border visible.
-.TP 8
-.B "iconBorderWidth (\fPclass\fB BorderWidth)"
-Specifies the border width for the active icon window if this feature
-is compiled into \fIxterm\fR.
-The default is 2.
-Not all window managers will make the border visible.
-.TP 8
-.B "iconFont (\fPclass\fB IconFont)"
-Specifies the font for the miniature active icon window, if this feature
-is compiled into \fIxterm\fR.
-The default is "nil2".
-.TP 8
-.B "internalBorder (\fPclass\fB BorderWidth)"
-Specifies the number of pixels between the characters and the window border.
-The default is 2.
-.TP 8
-.B "italicULMode (\fPclass\fB ColorAttrMode)"
-Specifies whether characters with the underline attribute should be displayed
-in an italic font or as underlined characters.
-.TP 8
-.B "jumpScroll (\fPclass\fB JumpScroll)"
-Specifies whether or not jump scroll should be used.
-This corresponds to the VT102 DECSCLM private mode.
-The default is ``true.''
-.TP 8
-.B "keyboardDialect (\fPclass\fB KeyboardDialect)"
-Specifies the initial keyboard dialect, as well as the default value when
-the terminal is reset.
-The value given is the same as the final character in the control sequences
-which change character sets.
-The default is ``B'', which corresponds to US ASCII.
-.TP 8
-.B "\fIname\fP\fBKeymap\fP (class\fB \fIName\fP\fBKeymap\fP)"
-See the discussion of the \fBkeymap()\fP action.
-.TP 8
-.B "limitResize (\fPclass\fB LimitResize)"
-Limits resizing of the screen via control sequence to a given multiple of
-the display dimensions.
-The default is ``1''.
-.TP 8
-.B "locale (\fPclass\fB Locale)"
-Specifies how to use \fIluit\fR, an encoding converter between UTF-8
-and locale encodings.
-The resource value (ignoring case) may be:
-.RS
-.TP 4
-.I true
-\fIxterm\fR will use the
-encoding specified by the users' LC_CTYPE locale (i.e., LC_ALL,
-LC_CTYPE, or LANG variables) as far as possible.
-This is realized
-by always enabling UTF-8 mode and invoking \fIluit\fR in non-UTF-8
-locales.
-.TP
-.I medium
-\fIxterm\fR will follow users'
-LC_CTYPE locale only for UTF-8, east Asian, and Thai locales,
-where the encodings were not supported by conventional 8bit mode
-with changing fonts.
-For other locales, \fIxterm\fR will use conventional 8bit mode.
-.TP
-.I checkfont
-If mini-luit is compiled-in, \fIxterm\fR will check if a Unicode font has
-been specified. If so, it checks if the character encoding for the
-current locale is POSIX, Latin-1 or Latin-9, uses the appropriate
-mapping to support those with the Unicode font.
-For other encodings, \fIxterm\fR assumes that UTF-8 encoding is required.
-.TP
-.I false
-\fIxterm\fR will use conventional 8bit mode
-or UTF-8 mode according to \fButf8\fR resource or \fB-u8\fP option.
-.RE
-.IP
-Any other value, e.g., ``UTF-8'' or ``ISO8859-2'',
-is assumed to be an encoding name;
-\fIluit\fR will be invoked to support the encoding.
-The actual list of supported encodings depends on \fIluit\fR.
-The default is ``medium''.
-.IP
-Regardless of your locale and encoding,
-you need an ISO-10646-1 font to display the result.
-Your configuration may not include this font,
-or locale-support by \fIxterm\fP may not be needed.
-At startup, \fIxterm\fP uses a mechanism equivalent to
-the \fBload-vt-fonts(utf8Fonts,\ Utf8Fonts)\fP action
-to load font name subresources of the VT100 widget.
-That is,
-resource patterns such as "\fB*vt100.utf8Fonts.font\fP" will be loaded,
-and (if this resource is enabled), override the normal fonts.
-If no subresources are found,
-the normal fonts such as "\fB*vt100.font\fP", etc., are used.
-The resource files distributed with \fIxterm\fP use ISO-10646-1 fonts,
-but do not rely on them unless you are using the locale mechanism.
-.TP 8
-.B "localeFilter (\fPclass\fB LocaleFilter)"
-Specifies the file name for the encoding converter from/to locale
-encodings and UTF-8 which is used with the \fB-lc\fR option or \fBlocale\fR resource.
-The help message shown by ``xterm -help'' lists the default value,
-which depends on your system configuration.
-.TP 8
-.B "loginShell (\fPclass\fB LoginShell)"
-Specifies whether or not the shell to be run in the window should be started
-as a login shell.
-The default is ``false.''
-.TP 8
-.B "marginBell (\fPclass\fB MarginBell)"
-Specifies whether or not the bell should be rung when the user types near the
-right margin.
-The default is ``false.''
-.TP 8
-.B "metaSendsEscape (\fPclass\fB MetaSendsEscape\fP)"
-If ``true'', Meta characters
-(a character combined with the \fIMeta\fP modifier key)
-are converted into a two-character
-sequence with the character itself preceded by ESC.
-This applies as well to function key control sequences, unless \fIxterm\fP
-sees that \fBMeta\fP is used in your key translations.
-If ``false'', Meta characters input from the keyboard are handled according
-to the \fBeightBitInput\fP resource.
-The default is ``false.''
-.TP 8
-.B "mkWidth (\fPclass\fB MkWidth)"
-Specifies whether \fIxterm\fP should use a built-in version of the wide
-character width calculation.
-The default is ``false.''
-.TP 8
-.B "modifyCursorKeys (\fPclass\fB ModifyCursorKeys\fP)"
-Tells how to handle the special case where
-Control-, Shift-, Alt- or Meta-modifiers are used to add a parameter to
-the escape sequence returned by a cursor-key.
-Set it to 0 to use the old/obsolete behavior.
-Set it to 1 to prefix modified sequences with CSI.
-Set it to 2 to force the modifier to be the second parameter.
-Set it to 3 to mark the sequence with a '>' to hint that it is private.
-The default is ``2''.
-.TP 8
-.B "multiClickTime (\fPclass\fB MultiClickTime)"
-Specifies the maximum time in milliseconds between multi-click select
-events.
-The default is 250 milliseconds.
-.TP 8
-.B "multiScroll (\fPclass\fB MultiScroll)"
-Specifies whether or not scrolling should be done asynchronously.
-The default is ``false.''
-.TP 8
-.B "nMarginBell (\fPclass\fB Column)"
-Specifies the number of characters from the right margin at which the margin
-bell should be rung, when enabled.
-.TP 8
-.B "numLock (\fPclass\fB NumLock)"
-If ``true'', \fIxterm\fR checks if NumLock is used as a modifier (see \fIxmodmap\fP(1)).
-If so, this modifier is used to simplify the logic when implementing special
-NumLock for the \fBsunKeyboard\fP resource.
-Also (when \fBsunKeyboard\fP is false), similar logic is used to find the
-modifier associated with the left and right Alt keys.
-The default is ``true.''
-.TP 8
-.B "oldXtermFKeys (\fPclass\fB OldXtermFKeys)"
-If ``true'', \fIxterm\fR will use old-style control sequences for function keys F1 to F4,
-for compatibility with X Consortium \fIxterm\fR.
-Otherwise, it uses the VT100-style
-codes for PF1 to PF4.
-The default is ``false.''
-.TP 8
-.B "pointerColor (\fPclass\fB PointerColor)"
-Specifies the foreground color of the pointer.
-The default is
-``XtDefaultForeground.''
-.TP 8
-.B "pointerColorBackground (\fPclass\fB PointerColorBackground)"
-Specifies the background color of the pointer.
-The default is
-``XtDefaultBackground.''
-.TP 8
-.B "pointerShape (\fPclass\fB Cursor)"
-Specifies the name of the shape of the pointer.
-The default is ``xterm.''
-.TP 8
-.B "popOnBell (\fPclass\fB PopOnBell)"
-Specifies whether the window whould be raised when Control-G is
-received.
-The default is ``false.''
-.TP 8
-.B "printAttributes (\fPclass\fB PrintAttributes)"
-Specifies whether to print graphic attributes along with the text.
-A real DEC VTxxx terminal will print the underline, highlighting codes
-but your printer may not handle these.
-A ``0'' disables the attributes.
-A ``1'' prints the normal set of attributes (bold, underline, inverse and blink)
-as VT100-style control sequences.
-A ``2'' prints ANSI color attributes as well.
-The default is ``1.''
-.TP 8
-.B "printerAutoClose (\fPclass\fB PrinterAutoClose)"
-If ``true'', \fIxterm\fR will close the printer (a pipe) when the application switches
-the printer offline with a Media Copy command.
-The default is ``false.''
-.TP 8
-.B "printerCommand (\fPclass\fB PrinterCommand)"
-Specifies a shell command to which
-.I xterm
-will open a pipe when the first
-MC (Media Copy) command is initiated.
-The default is a blank string.
-If the resource value is given as a blank string, the printer is disabled.
-.TP 8
-.B "printerControlMode (\fPclass\fB PrinterControlMode)"
-Specifies the printer control mode.
-A ``1'' selects autoprint mode, which causes
-.I xterm
-to print a line from the screen when you move the cursor off that
-line with a line feed, form feed or vertical tab character, or an
-autowrap occurs.
-Autoprint mode is overridden by printer controller mode (a ``2''),
-which causes all of the output to be directed to the printer.
-The default is ``0.''
-.TP 8
-.B "printerExtent (\fPclass\fB PrinterExtent)"
-Controls whether a print page function will print the entire page (true), or
-only the the portion within the scrolling margins (false).
-The default is ``false.''
-.TP 8
-.B "printerFormFeed (\fPclass\fB PrinterFormFeed)"
-Controls whether a form feed is sent to the printer at the end of a print
-page function.
-The default is ``false.''
-.TP 8
-.B "renderFont (\fPclass\fB RenderFont)"
-If \fIxterm\fR is built with the Xft library,
-this controls whether the \fBfaceName\fR resource is used.
-The default is ``true.''
-.TP 8
-.B "resizeGravity (\fPclass\fB ResizeGravity)"
-Affects the behavior when the window is resized to be taller or
-shorter.
-\fBNorthWest\fP
-specifies that the top line of text on the screen stay fixed.
-If the window
-is made shorter, lines are dropped from the bottom; if the window is
-made taller, blank lines are added at the bottom.
-This is compatible
-with the behavior in R4.
-\fBSouthWest\fP (the default) specifies that
-the bottom line of text on the screen stay fixed.
-If the window is
-made taller, additional saved lines will be scrolled down onto the
-screen; if the window is made shorter, lines will be scrolled off the
-top of the screen, and the top saved lines will be dropped.
-.TP 8
-.B "reverseVideo (\fPclass\fB ReverseVideo)"
-Specifies whether or not reverse video should be simulated.
-The default is
-``false.''
-.TP 8
-.B "reverseWrap (\fPclass\fB ReverseWrap)"
-Specifies whether or not reverse-wraparound should be enabled.
-This corresponds to \fIxterm\fP's private mode 45.
-The default is
-``false.''
-.TP 8
-.B "rightScrollBar (\fPclass\fB RightScrollBar)"
-Specifies whether or not the scrollbar should be displayed on the right
-rather than the left.
-The default is ``false.''
-.TP 8
-.B "saveLines (\fPclass\fB SaveLines)"
-Specifies the number of lines to save beyond the top of the screen when a
-scrollbar is turned on.
-The default is 64.
-.TP 8
-.B "scrollBar (\fPclass\fB ScrollBar)"
-Specifies whether or not the scrollbar should be displayed.
-The default is
-``false.''
-.TP 8
-.B "scrollBarBorder (\fPclass\fB ScrollBarBorder)"
-Specifies the width of the scrollbar border.
-Note that this is drawn to overlap the border of the \fIxterm\fP window.
-Modifying the scrollbar's border affects only the line between the VT100
-widget and the scrollbar.
-The default value is 1.
-.TP 8
-.B "scrollKey (\fPclass\fB ScrollCond)"
-Specifies whether or not pressing a key should automatically cause the
-scrollbar to go to the bottom of the scrolling region.
-This corresponds to \fIxterm\fP's private mode 1011.
-The default is
-``false.''
-.TP 8
-.B "scrollLines (\fPclass\fB ScrollLines)"
-Specifies the number of lines that the \fIscroll-back\fP and
-\fIscroll-forw\fP actions should use as a default.
-The default value is 1.
-.TP 8
-.B "scrollTtyOutput (\fPclass\fB ScrollCond)"
-Specifies whether or not output to the terminal should automatically cause
-the scrollbar to go to the bottom of the scrolling region.
-The default is ``true.''
-.TP 8
-.B "shiftFonts (\fPclass\fB ShiftFonts)"
-Specifies whether to enable the actions
-\fBlarger-vt-font()\fP and
-\fBsmaller-vt-font()\fP, which are normally bound to
-the shifted KP_Add and KP_Subtract.
-The default is ``true.''
-.TP 8
-.B "showBlinkAsBold (\fPclass\fB ShowBlinkAsBold)"
-Tells \fIxterm\fP whether to display text with blink-attribute the same
-as bold.
-If \fIxterm\fP has not been configured to support blinking text,
-the default is ``true.'', which corresponds to older versions of \fIxterm\fP,
-otherwise the default is ``false.''
-.TP 8
-.B "showMissingGlyphs (\fPclass\fB ShowMissingGlyphs)"
-Tells \fIxterm\fP whether to display a box outlining places where
-a character has been used that the font does not represent.
-The default is ``false.''
-.TP 8
-.B "signalInhibit (\fPclass\fB SignalInhibit)"
-Specifies whether or not the entries in the ``Main Options'' menu for sending
-signals to \fIxterm\fP should be disallowed.
-The default is ``false.''
-.TP 8
-.B "tekGeometry (\fPclass\fB Geometry)"
-Specifies the preferred size and position of the Tektronix window.
-There is no default for this resource.
-.TP 8
-.B "tekInhibit (\fPclass\fB TekInhibit)"
-Specifies whether or not
-the escape sequence to enter
-Tektronix mode should be ignored.
-The default is
-``false.''
-.TP 8
-.B "tekSmall (\fPclass\fB TekSmall)"
-Specifies whether or not the Tektronix mode window should start in its smallest
-size if no explicit geometry is given.
-This is useful when running \fIxterm\fP
-on displays with small screens.
-The default is ``false.''
-.TP 8
-.B "tekStartup (\fPclass\fB TekStartup)"
-Specifies whether or not \fIxterm\fP should start up in Tektronix mode.
-The default is ``false.''
-.TP 8
-.B "tiXtraScroll (\fPclass\fB TiXtraScroll)"
-Specifies whether \fIxterm\fP should scroll to a new page when processing
-the \fIti\fP termcap entry, i.e., the private modes 47, 1047 or 1049.
-This is only in effect if \fBtiteInhibit\fP is ``true'',
-because the intent of this option is to provide a picture of the full-screen
-application's display on the scrollback without wiping out the text that
-would be shown before the application was initialized.
-The default for this resource is ``false.''
-.TP 8
-.B "titeInhibit (\fPclass\fB TiteInhibit)"
-Specifies whether or not \fIxterm\fP should remove \fIti\fP and \fIte\fP
-termcap entries (used to switch between alternate screens on startup of many
-screen-oriented programs) from the TERMCAP string.
-If set,
-\fIxterm\fP also ignores the escape sequence to switch to the
-alternate screen.
-\fIXterm\fP supports terminfo in a different way, supporting composite control
-sequences (also known as private modes) 1047, 1048 and 1049 which have the same
-effect as the original 47 control sequence.
-The default for this resource is ``false.''
-.TP 8
-.B "translations (\fPclass\fB Translations)"
-Specifies the key and button bindings for menus, selections, ``programmed
-strings,'' etc.
-The \fBtranslations\fP resource,
-which provides much of \fIxterm\fP's configurability,
-is a feature of the X Toolkit Intrinsics library (Xt).
-See the \fBACTIONS\fP section.
-.TP 8
-.B "trimSelection (\fPclass\fB TrimSelection)"
-If you set \fBhighlightSelection\fP,
-you can see the text which is selected, including any trailing spaces.
-Clearing the screen (or a line) resets it to a state containing no spaces.
-Some lines may contain trailing spaces when an application writes them to
-the screen.
-However, you may not wish to paste lines with trailing spaces.
-If this resource is true, \fIxterm\fP will trim trailing spaces from
-text which is selected.
-It does not affect spaces which result in a wrapped line, nor will it
-trim the trailing newline from your selection.
-The default is ``false.''
-.TP 8
-.B "underLine (\fPclass\fB UnderLine)"
-This specifies whether or not text with the underline attribute should be
-underlined.
-It may be desirable to disable underlining when color is being
-used for the underline attribute.
-The default is ``true.''
-.TP 8
-.B "utf8 (\fPclass\fB Utf8)"
-This specifies whether \fIxterm\fP will run in UTF-8 mode.
-If you set this resource, \fIxterm\fP also sets the \fBwideChars\fP resource as a side-effect.
-The resource is an integer, expected to range from 0 to 3:
-.RS
-.TP
-0
-UTF-8 mode is initially off.
-The command-line option \fB+u8\fP sets the resource to this value.
-Escape sequences for turning UTF-8 mode on/off are allowed.
-.TP
-1
-UTF-8 mode is initially on.
-Escape sequences for turning UTF-8 mode on/off are allowed.
-.TP
-2
-The command-line option \fB-u8\fP sets the resource to this value.
-Escape sequences for turning UTF-8 mode on/off are ignored.
-.TP
-3
-This is the default value of the resource.
-It is changed during initialization depending on
-whether the \fBlocale\fP resource was set, to 0 or 2.
-See the \fBlocale\fR resource for additional discussion of non-UTF-8 locales.
-.RE
-.IP
-If you want to set the value of \fButf8\fP, it should be in this range.
-Other nonzero values are treated the same as ``1'',
-i.e., UTF-8 mode is initially on, and
-escape sequences for turning UTF-8 mode on/off are allowed.
-.TP 8
-.B "utf8Fonts (\fPclass\fB Utf8Fonts)"
-See the discussion of the \fBlocale\fP resource.
-.TP 8
-.B "veryBoldColors (\fPclass\fB VeryBoldColors)"
-Specifies whether to combine video attributes with colors specified by
-\fBcolorBD\fR, \fBcolorBL\fR, \fBcolorRV\fR and \fBcolorUL\fR.
-The resource value is the sum of values for each attribute:
-.RS 10
-.nf
-1 for reverse,
-2 for underline,
-4 for bold and
-8 for blink.
-.fi
-.RE
-.IP
-The default is ``0.''
-.TP 8
-.B "visualBell (\fPclass\fB VisualBell)"
-Specifies whether or not a visible bell (i.e., flashing) should be used instead
-of an audible bell when Control-G is received.
-The default is ``false.''
-.TP 8
-.B "visualBellDelay (\fPclass\fB VisualBellDelay)"
-Number of milliseconds to delay when displaying a visual bell.
-Default is 100.
-If set to zero, no visual bell is displayed.
-This is useful for very slow displays, e.g., an LCD display on a laptop.
-.TP 8
-.B "vt100Graphics (\fPclass\fB VT100Graphics)"
-This specifies whether \fIxterm\fP will interpret VT100 graphic character
-escape sequences while in UTF-8 mode.
-The default is ``true'', to provide support for various legacy applications.
-.TP 8
-.B "wideBoldFont (\fPclass\fB WideBoldFont)"
-This option specifies the font to be used for displaying bold wide text.
-By default,
-it will attempt to use a font twice as wide as the font that will be used to
-draw bold text.
-If no doublewidth font is found, it will improvise, by stretching
-the bold font.
-.TP 8
-.B "wideChars (\fPclass\fB WideChars)"
-Specifies if \fIxterm\fP should respond to control sequences that
-process 16-bit characters.
-The default is ``false.''
-.TP 8
-.B "wideFont (\fPclass\fB WideFont)"
-This option specifies the font to be used for displaying wide text.
-By default,
-it will attempt to use a font twice as wide as the font that will be used to
-draw normal text.
-If no doublewidth font is found, it will improvise, by stretching
-the normal font.
-.TP 8
-.B "ximFont (\fPclass\fB XimFont)"
-This option specifies the font to be used for displaying the preedit string
-in the "OverTheSpot" input method.
-.IP
-In "OverTheSpot" preedit type, the preedit (preconversion)
-string is displayed at the position of the cursor.
-It is the XIM server's responsibility to display the preedit string.
-The XIM client must inform the XIM server of the cursor position.
-For best results, the preedit string must be displayed with a proper font.
-Therefore, \fIxterm\fP informs the XIM server of the proper font.
-The font is be supplied by a "fontset", whose default value is "*".
-This matches every font, the X library automatically chooses fonts with
-proper charsets.
-The \fBximFont\fP resource is provided to override this default font setting.
-.
-.PP
-The following resources are specified
-as part of the \fItek4014\fP widget (class \fITek4014\fP).
-These are specified by patterns such as "\fBXTerm.tek4014.\fP\fINAME\fP":
-.TP 8
-.B "font2 (\fPclass\fB Font)"
-Specifies font number 2 to use in the Tektronix window.
-.TP 8
-.B "font3 (\fPclass\fB Font)"
-Specifies font number 3 to use in the Tektronix window.
-.TP 8
-.B "fontLarge (\fPclass\fB Font)"
-Specifies the large font to use in the Tektronix window.
-.TP 8
-.B "fontSmall (\fPclass\fB Font)"
-Specifies the small font to use in the Tektronix window.
-.TP 8
-.B "ginTerminator (\fPclass\fB GinTerminator)"
-Specifies what character(s) should follow a GIN report or status report.
-The possibilities are ``none,'' which sends no terminating characters,
-``CRonly,'' which sends CR, and ``CR&EOT,'' which sends both CR and EOT.
-The default is ``none.''
-.TP 8
-.B "height (\fPclass\fB Height)"
-Specifies the height of the Tektronix window in pixels.
-.TP 8
-.B "initialFont (\fPclass\fB InitialFont)"
-Specifies which of the four Tektronix fonts to use initially.
-Values are the same as for the \fIset-tek-text\fP action.
-The default is ``large.''
-.TP 8
-.B "width (\fPclass\fB Width)"
-Specifies the width of the Tektronix window in pixels.
-.
-.PP
-The resources that may be specified for the various menus are described in
-the documentation for the Athena \fBSimpleMenu\fP widget.
-The name and classes
-of the entries in each of the menus are listed below.
-Resources named "\fBline\fR\fIN\fR" where \fIN\fR is a number
-are separators with class \fBSmeLine\fR.
-.
-.PP
-The \fImainMenu\fP has the following entries:
-.TP 8
-.B "toolbar (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-toolbar(toggle)\fP action.
-.TP 8
-.B "securekbd (\fPclass\fB SmeBSB)"
-This entry invokes the \fBsecure()\fP action.
-.TP 8
-.B "allowsends (\fPclass\fB SmeBSB)"
-This entry invokes the \fBallow-send-events(toggle)\fP action.
-.TP 8
-.B "redraw (\fPclass\fB SmeBSB)"
-This entry invokes the \fBredraw()\fP action.
-.TP 8
-.B "logging (\fPclass\fB SmeBSB)"
-This entry invokes the \fBlogging(toggle)\fP action.
-.TP 8
-.B "print (\fPclass\fB SmeBSB)"
-This entry invokes the \fBprint()\fP action.
-.TP 8
-.B "print-redir (\fPclass\fB SmeBSB)"
-This entry invokes the \fBprint-redir()\fP action.
-.TP 8
-.B "8-bit-control (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-8-bit-control(toggle)\fP action.
-.TP 8
-.B "backarrow\ key (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-backarrow(toggle)\fP action.
-.TP 8
-.B "num-lock (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-num-lock(toggle)\fP action.
-.TP 8
-.B "alt-esc (\fPclass\fB SmeBSB)"
-This entry invokes the \fBalt-sends-escape(toggle)\fP action.
-.TP 8
-.B "meta-esc (\fPclass\fB SmeBSB)"
-This entry invokes the \fBmeta-sends-escape(toggle)\fP action.
-.TP 8
-.B "delete-is-del (\fPclass\fB SmeBSB)"
-This entry invokes the \fBdelete-is-del(toggle)\fP action.
-.TP 8
-.B "oldFunctionKeys (\fPclass\fB SmeBSB)"
-This entry invokes the \fBold-function-keys(toggle)\fP action.
-.TP 8
-.B "hpFunctionKeys (\fPclass\fB SmeBSB)"
-This entry invokes the \fBhp-function-keys(toggle)\fP action.
-.TP 8
-.B "scoFunctionKeys (\fPclass\fB SmeBSB)"
-This entry invokes the \fBsco-function-keys(toggle)\fP action.
-.TP 8
-.B "sunFunctionKeys (\fPclass\fB SmeBSB)"
-This entry invokes the \fBsun-function-keys(toggle)\fP action.
-.TP 8
-.B "sunKeyboard (\fPclass\fB SmeBSB)"
-This entry invokes the \fBsunKeyboard(toggle)\fP action.
-.TP 8
-.B "suspend (\fPclass\fB SmeBSB)"
-This entry invokes the \fBsend-signal(tstp)\fP action on systems that
-support job control.
-.TP 8
-.B "continue (\fPclass\fB SmeBSB)"
-This entry invokes the \fBsend-signal(cont)\fP action on systems that
-support job control.
-.TP 8
-.B "interrupt (\fPclass\fB SmeBSB)"
-This entry invokes the \fBsend-signal(int)\fP action.
-.TP 8
-.B "hangup (\fPclass\fB SmeBSB)"
-This entry invokes the \fBsend-signal(hup)\fP action.
-.TP 8
-.B "terminate (\fPclass\fB SmeBSB)"
-This entry invokes the \fBsend-signal(term)\fP action.
-.TP 8
-.B "kill (\fPclass\fB SmeBSB)"
-This entry invokes the \fBsend-signal(kill)\fP action.
-.TP 8
-.B "quit (\fPclass\fB SmeBSB)"
-This entry invokes the \fBquit()\fP action.
-.
-.PP
-The \fIvtMenu\fP has the following entries:
-.TP 8
-.B "scrollbar (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-scrollbar(toggle)\fP action.
-.TP 8
-.B "jumpscroll (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-jumpscroll(toggle)\fP action.
-.TP 8
-.B "reversevideo (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-reverse-video(toggle)\fP action.
-.TP 8
-.B "autowrap (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-autowrap(toggle)\fP action.
-.TP 8
-.B "reversewrap (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-reversewrap(toggle)\fP action.
-.TP 8
-.B "autolinefeed (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-autolinefeed(toggle)\fP action.
-.TP 8
-.B "appcursor (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-appcursor(toggle)\fP action.
-.TP 8
-.B "appkeypad (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-appkeypad(toggle)\fP action.
-.TP 8
-.B "scrollkey (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-scroll-on-key(toggle)\fP action.
-.TP 8
-.B "scrollttyoutput (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-scroll-on-tty-output(toggle)\fP action.
-.TP 8
-.B "allow132 (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-allow132(toggle)\fP action.
-.TP 8
-.B "cursesemul (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-cursesemul(toggle)\fP action.
-.TP 8
-.B "visualbell (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-visualbell(toggle)\fP action.
-.TP 8
-.B "poponbell (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-poponbell(toggle)\fP action.
-.TP 8
-.B "marginbell (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-marginbell(toggle)\fP action.
-.TP 8
-.B "cursorblink (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-cursorblink(toggle)\fP action.
-.TP 8
-.B "titeInhibit (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-titeInhibit(toggle)\fP action.
-.TP 8
-.B "activeicon (\fPclass\fB SmeBSB)"
-This entry toggles active icons on and off if this feature was
-compiled into \fIxterm\fP.
-It is enabled only if \fIxterm\fP
-was started with the command line option +ai or the \fBactiveIcon\fP
-resource is set to ``True.''
-.TP 8
-.B "softreset (\fPclass\fB SmeBSB)"
-This entry invokes the \fBsoft-reset()\fP action.
-.TP 8
-.B "hardreset (\fPclass\fB SmeBSB)"
-This entry invokes the \fBhard-reset()\fP action.
-.TP 8
-.B "clearsavedlines (\fPclass\fB SmeBSB)"
-This entry invokes the \fBclear-saved-lines()\fP action.
-.TP 8
-.B "tekshow (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-visibility(tek,toggle)\fP action.
-.TP 8
-.B "tekmode (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-terminal-type(tek)\fP action.
-.TP 8
-.B "vthide (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-visibility(vt,off)\fP action.
-.TP 8
-.B "altscreen (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-altscreen(toggle)\fP action.
-.
-.PP
-The \fIfontMenu\fP has the following entries:
-.TP 8
-.B "fontdefault (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-vt-font(d)\fP action.
-.TP 8
-.B "font1 (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-vt-font(1)\fP action.
-.TP 8
-.B "font2 (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-vt-font(2)\fP action.
-.TP 8
-.B "font3 (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-vt-font(3)\fP action.
-.TP 8
-.B "font4 (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-vt-font(4)\fP action.
-.TP 8
-.B "font5 (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-vt-font(5)\fP action.
-.TP 8
-.B "font6 (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-vt-font(6)\fP action.
-.TP 8
-.B "fontescape (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-vt-font(e)\fP action.
-.TP 8
-.B "fontsel (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-vt-font(s)\fP action.
-.TP 8
-.B "font-linedrawing (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-font-linedrawing(s)\fP action.
-.TP 8
-.B "font-doublesize (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-font-doublesize(s)\fP action.
-.TP 8
-.B "render-font (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-render-font(s)\fP action.
-.TP 8
-.B "utf8-mode (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-utf8-mode(s)\fP action.
-.
-.PP
-The \fItekMenu\fP has the following entries:
-.TP 8
-.B "tektextlarge (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-tek-text(l)\fP action.
-.TP 8
-.B "tektext2 (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-tek-text(2)\fP action.
-.TP 8
-.B "tektext3 (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-tek-text(3)\fP action.
-.TP 8
-.B "tektextsmall (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-tek-text(s)\fP action.
-.TP 8
-.B "tekpage (\fPclass\fB SmeBSB)"
-This entry invokes the \fBtek-page()\fP action.
-.TP 8
-.B "tekreset (\fPclass\fB SmeBSB)"
-This entry invokes the \fBtek-reset()\fP action.
-.TP 8
-.B "tekcopy (\fPclass\fB SmeBSB)"
-This entry invokes the \fBtek-copy()\fP action.
-.TP 8
-.B "vtshow (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-visibility(vt,toggle)\fP action.
-.TP 8
-.B "vtmode (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-terminal-type(vt)\fP action.
-.TP 8
-.B "tekhide (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-visibility(tek,toggle)\fP action.
-.
-.PP
-The following resources are useful when specified for the Athena Scrollbar
-widget:
-.TP 8
-.B "thickness (\fPclass\fB Thickness)"
-Specifies the width in pixels of the scrollbar.
-.TP 8
-.B "background (\fPclass\fB Background)"
-Specifies the color to use for the background of the scrollbar.
-.TP 8
-.B "foreground (\fPclass\fB Foreground)"
-Specifies the color to use for the foreground of the scrollbar.
-The ``thumb''
-of the scrollbar is a simple checkerboard pattern alternating pixels for
-foreground and background color.
-.
-.
-.SH "POINTER USAGE"
-.
-.PP
-Once the VT102 window is created,
-.I xterm
-allows you to select text and copy it within the same or other windows.
-.
-.PP
-The selection functions are invoked when the pointer buttons are used with no
-modifiers, and when they are used with the ``shift'' key.
-The assignment of the functions described below to keys and buttons may
-be changed through the resource database; see \fBACTIONS\fP below.
-.
-.PP
-Pointer button one (usually left) is used to save text into the cut buffer.
-Move the cursor to beginning of the text,
-and then hold the button down while moving the cursor to the end of the region
-and releasing the button.
-The selected text is highlighted and is saved in the global cut buffer
-and made the PRIMARY selection when the button is released.
-Double-clicking selects by words.
-Triple-clicking
-selects by lines.
-Quadruple-clicking goes back to characters, etc.
-Multiple-click is determined by the time from button up to
-button down, so you can change the selection unit in the middle of a selection.
-Logical words and lines selected by double- or triple-clicking may wrap
-across more than one screen line if lines were wrapped by \fIxterm\fP
-itself rather than by the application running in the window.
-If the key/button bindings specify that an X selection is to be made,
-\fIxterm\fP will leave the selected text highlighted for as long as it
-is the selection owner.
-.
-.PP
-Pointer button two (usually middle) `types' (pastes) the text from
-the PRIMARY selection, if any, otherwise from
-the cut buffer,
-inserting it as keyboard input.
-.
-.PP
-Pointer button three (usually right) extends the current selection.
-(Without loss of generality,
-you can swap ``right'' and ``left'' everywhere in the rest of this
-paragraph.) If pressed while closer to
-the right edge of the selection than the left, it extends/contracts the
-right edge of the selection.
-If you contract the selection past
-the left edge of the selection,
-.I xterm
-assumes you really meant the left edge, restores the original selection, then
-extends/contracts the left edge of the selection.
-Extension starts in the
-selection unit mode
-that the last selection or extension was performed in; you can multiple-click
-to cycle through them.
-.
-.PP
-By cutting and pasting pieces of text without trailing new lines,
-you can take text from several places in different windows and form a command
-to the shell, for example, or take output from a program and insert it into
-your favorite editor.
-Since cut buffers are globally shared among different applications,
-you may regard each as a `file' whose contents you know.
-The terminal emulator and other text programs should be treating it as if it
-were a text file, i.e., the text is delimited by new lines.
-.
-.PP
-The scroll region displays the position and amount of text currently showing
-in the window (highlighted) relative to the amount of text actually saved.
-As more text is saved (up to the maximum), the size of the highlighted area
-decreases.
-.
-.PP
-Clicking button one with the pointer in the scroll region moves the
-adjacent line to the top of the display window.
-.
-.PP
-Clicking button three moves the top line of the display window down to the
-pointer position.
-.
-.PP
-Clicking button two moves the display to a position in the saved text
-that corresponds to the pointer's position in the scrollbar.
-.
-.PP
-Unlike the VT102 window, the Tektronix window does not allow the copying of
-text.
-It does allow Tektronix GIN mode, and in this mode
-the cursor will change from an arrow to a cross.
-Pressing any key will send that key and the current coordinate of the
-cross cursor.
-Pressing button one, two, or three will return the letters `l', `m', and
-`r', respectively.
-If the `shift' key is pressed when a pointer button is pressed, the corresponding
-upper case letter is sent.
-To distinguish a pointer button from a key, the high bit of the character is
-set (but this is bit is normally stripped unless the terminal mode is RAW;
-see
-.IR tty (4)
-for details).
-.
-.
-.SH MENUS
-.
-.PP
-.I Xterm
-has four menus, named
-.IR mainMenu ,
-.IR vtMenu ,
-.IR fontMenu ,
-and
-.IR tekMenu .
-Each menu pops up under the correct combinations of key and button presses.
-Each menu is divided into sections, separated by a horizontal line.
-Some menu entries correspond to modes that can be altered.
-A check mark appears next to a mode that is currently active.
-Selecting one of these modes toggles its state.
-Other menu entries are commands;
-selecting one of these performs the indicated function.
-.PP
-All of the menu entries correspond to X actions.
-In the list below, the menu label is shown followed by the action's
-name in parenthesis.
-.
-.\" ************************************************************************
-.PP
-The \fIxterm\fP \fImainMenu\fP pops up
-when the ``control'' key and pointer button one are pressed in a window.
-This menu contains items that apply to both the VT102 and Tektronix windows.
-There are several sections:
-.TP
-Commands for managing X events:
-.RS
-.TP
-Toolbar
-Clicking on the "Toolbar" menu entry hides the toolbar if it is visible,
-and shows it if it is not.
-.TP
-Secure Keyboard (securekbd)
-The
-.B Secure Keyboard
-mode is helpful when typing in passwords or other sensitive data in an
-unsecure environment;
-see \fBSECURITY\fP below (but read the limitations carefully).
-.TP
-Allow SendEvents (allowsends )
-Specifies whether or not synthetic key and button events generated using
-the X protocol SendEvent request should be interpreted or discarded.
-This corresponds to the \fBallowSendEvents\fP resource.
-.TP
-Redraw Window (redraw)
-Forces the X display to repaint;
-useful in some environments.
-.RE
-.TP
-Commands for capturing output:
-.RS
-.TP
-Log to File (logging)
-Captures text sent to the screen in a logfile,
-as in the \fB-l\fP logging option.
-.TP
-Print Window (print)
-Sends the text of the current window to the program given in the
-\fBprinterCommand\fP resource.
-.TP
-Redirect to Printer (print-redir)
-This sets the \fBprinterControlMode\fR to 0 or 2.
-You can use this to turn the printer on as if an application had sent
-the appropriate control sequence.
-It is also useful for switching the printer
-off if an application turns it on without resetting the print control mode.
-.RE
-.TP
-Modes for setting keyboard style:
-.RS
-.TP
-8-Bit Controls (8-bit-control)
-Enabled for VT220 emulation, this controls whether \fIxterm\fP will send
-8-bit control sequences rather than using 7-bit (ASCII) controls,
-e.g., sending a byte in the range 128-159 rather than the escape character
-followed by a second byte.
-\fIXterm\fP always interprets both 8-bit and 7-bit control sequences
-(see the document \fIXterm Control Sequences\fP).
-This corresponds to the \fBeightBitControl\fP resource.
-.TP
-Backarrow Key (BS/DEL) (backarrow\ key)
-Modifies the behavior of the backarrow key, making it transmit
-either a backspace (8)
-or delete (127) character.
-This corresponds to the \fBbackarrowKey\fP resource.
-.TP
-Alt/NumLock Modifiers (num-lock)
-Controls the treatment of Alt- and NumLock-key modifiers.
-This corresponds to the \fBnumLock\fP resource.
-.TP
-Meta Sends Escape (meta-esc)
-Controls whether \fIMeta\fP keys are converted into a two-character
-sequence with the character itself preceded by ESC.
-This corresponds to the \fBmetaSendsEscape\fP resource.
-.TP
-Delete is DEL (delete-is-del)
-Controls whether the Delete key on the editing keypad should send DEL (127)
-or the VT220-style Remove escape sequence.
-This corresponds to the \fBdeleteIsDEL\fP resource.
-.TP
-Old Function-Keys (oldFunctionKeys)
-.TP
-HP Function-Keys (hpFunctionKeys)
-.TP
-SCO Function-Keys (scoFunctionKeys)
-.TP
-Sun Function-Keys (sunFunctionKeys)
-.TP
-VT220 Keyboard (sunKeyboard)
-These act as a radio-button, selecting one style for the keyboard layout.
-It corresponds to more than one resource setting:
-.BR "sunKeyboard" ","
-.BR "sunFunctionKeys" ","
-.BR "scoFunctionKeys" " and"
-.BR "hpFunctionKeys "."
-.RE
-.TP
-Commands for process signalling:
-.RS
-.TP
-Send STOP Signal (suspend)
-.TP
-Send CONT Signal (continue)
-.TP
-Send INT Signal (interrupt)
-.TP
-Send HUP Signal (hangup)
-.TP
-Send TERM Signal (terminate)
-.TP
-Send KILL Signal (kill)
-These send the SIGTSTP, SIGCONT, SIGINT, SIGHUP, SIGTERM and SIGKILL
-signals respectively, to the process group of the process running under
-.I xterm
-(usually the shell).
-The
-.B SIGCONT
-function is especially useful if the user has accidentally typed CTRL-Z,
-suspending the process.
-.TP
-Quit (quit)
-Stop processing X events except to support the \fB-hold\fP option,
-and then send a SIGHUP signal to the
-the process group of the process running under
-.I xterm
-(usually the shell).
-.RE
-.PP
-.
-.\" ************************************************************************
-.PP
-The
-.I vtMenu
-sets various modes in the VT102 emulation, and is popped up when the
-``control'' key and pointer button two are pressed in the VT102 window.
-.TP
-VT102/VT220 Modes:
-.RS
-.
-.TP
-Enable Scrollbar (scrollbar)
-Enable (or disable) the scrollbar.
-This corresponds to the
-.B -sb
-option and the
-.B scrollBar
-resource.
-.
-.TP
-Enable Jump Scroll (jumpscroll)
-Enable (or disable) jump scrolling.
-This corresponds to the
-.B -j
-option and the
-.B jumpScroll
-resource.
-.
-.TP
-Enable Reverse Video (reversevideo)
-Enable (or disable) reverse-video.
-This corresponds to the
-.B -rv
-option and the
-.B reverseVideo
-resource.
-.
-.TP
-Enable Auto Wraparound (autowrap)
-Enable (or disable) auto-wraparound.
-This corresponds to the
-.B -aw
-option and the
-.B autoWrap
-resource.
-.
-.TP
-Enable Reverse Wraparound (reversewrap)
-Enable (or disable) reverse wraparound.
-This corresponds to the
-.B -rw
-option and the
-.B reverseWrap
-resource.
-.
-.TP
-Enable Auto Linefeed (autolinefeed)
-Enable (or disable) auto-linefeed.
-This is the VT102 NEL function,
-which causes the emulator to emit a linefeed after each carriage return.
-There is no corresponding command-line option or resource setting.
-.
-.TP
-Enable Application Cursor Keys (appcursor)
-Enable (or disable) application cursor keys.
-This corresponds to the
-.B appcursorDefault
-resource.
-There is no corresponding command-line option.
-.
-.TP
-Enable Application Keypad (appkeypad)
-Enable (or disable) application keypad keys.
-This corresponds to the
-.B appkeypadDefault
-resource.
-There is no corresponding command-line option.
-.
-.TP
-Scroll to Bottom on Key Press (scrollkey)
-Enable (or disable) scrolling to the bottom of the scrolling region on a keypress.
-This corresponds to the
-.B -sk
-option and the
-.B scrollKey
-resource.
-.
-.TP
-Scroll to Bottom on Tty Output (scrollttyoutput)
-Enable (or disable) scrolling to the bottom of the scrolling region on output to the terminal..
-This corresponds to the
-.B -si
-option and the
-.B scrollTtyOutput
-resource.
-.
-.TP
-Allow 80/132 Column Switching (allow132)
-Enable (or disable) switching between 80 and 132 columns.
-This corresponds to the
-.B -132
-option and the
-.B c132
-resource.
-.
-.TP
-Enable Curses Emulation (cursesemul)
-Enable (or disable) a workaround for the so-called "curses bug".
-This corresponds to the
-.B -cu
-option and the
-.B curses
-resource.
-.
-.TP
-Enable Visual Bell (visualbell)
-Enable (or disable) visible bell (i.e., flashing) instead of an audible bell.
-This corresponds to the
-.B -vb
-option and the
-.B visualBell
-resource.
-.
-.TP
-Enable Pop on Bell (poponbell)
-Enable (or disable) raising of the window when Control-G is received.
-This corresponds to the
-.B -pop
-option and the
-.B popOnBell
-resource.
-.
-.TP
-Enable Margin Bell (marginbell)
-Enable (or disable) a bell when the user types near the right margin.
-This corresponds to the
-.B -mb
-option and the
-.B marginBell
-resource.
-.
-.TP
-Enable Blinking Cursor (cursorblink)
-Enable (or disable) the blinking-cursor feature.
-This corresponds to the
-.B -bc
-option and the
-.B cursorBlink
-resource.
-There is also an escape sequence
-(see the document \fIXterm Control Sequences\fP).
-The menu entry and the escape sequence states are XOR'd:
-if both are enabled, the cursor will not blink,
-if only one is enabled, the cursor will blink.
-.
-.TP
-Enable Alternate Screen Switching (titeInhibit)
-Enable (or disable) switching between the normal and alternate screens.
-This corresponds to the
-.B titeInhibit
-resource.
-There is no corresponding command-line option.
-.
-.TP
-Enable Active Icon (activeicon)
-Enable (or disable) the active-icon feature.
-This corresponds to the
-.B -ai
-option and the
-.B activeIcon
-resource.
-.RE
-.
-.TP
-VT102/VT220 Commands:
-.RS
-.TP
-Do Soft Reset (softreset)
-Reset scroll regions.
-This can be convenient when some program has left the scroll regions
-set incorrectly (often a problem when using VMS or TOPS-20).
-This corresponds to the VT220 DECSTR control sequence.
-.
-.TP
-Do Full Reset (hardreset)
-The full reset entry will clear the screen, reset tabs to every
-eight columns, and reset the terminal modes (such as wrap and smooth scroll)
-to their initial states just after
-.I xterm
-has finished processing the command line options.
-This corresponds to the VT102 RIS control sequence,
-with a few obvious differences.
-For example, your session is not disconnected as a real VT102 would do.
-.
-.TP
-Reset and Clear Saved Lines (clearsavedlines)
-Perform a full reset,
-and also clear the saved lines.
-.RE
-.
-.TP
-Commands for setting the current screen:
-.RS
-.
-.TP
-Show Tek Window (tekshow)
-When enabled,
-pops the Tektronix 4014 window up (makes it visible).
-When disabled,
-hides the Tektronix 4014 window.
-.
-.TP
-Switch to Tek Mode (tekmode)
-When enabled,
-pops the Tektronix 4014 window up if it is not already visible,
-and switches the input stream to that window.
-When disabled,
-hides the Tektronix 4014 window and
-switches input back to the VTxxx window.
-.
-.TP
-Hide VT Window (vthide)
-When enabled,
-hides the VTxxx window,
-shows the Tektronix 4014 window if
-it was not already visible
-and switches the input stream to that window.
-When disabled,
-shows the VTxxx window,
-and switches the input stream to that window.
-.
-.TP
-Show Alternate Screen (altscreen)
-When enabled,
-shows the alternate screen.
-When disabled,
-shows the normal screen.
-Note that the normal screen may have saved lines;
-the alternate screen does not.
-.RE
-.PP
-.
-.PP
-The \fIfontMenu\fP sets the font used in the VT102 window,
-or modifies the way the font is specified or displayed.
-There are three sections.
-.PP
-The first section allows you to select the font from a set of alternatives:
-.RS
-.TP
-Default (fontdefault)
-Set the font to the default, i.e., that given by the
-.B *VT100.font
-resource.
-.TP
-Unreadable (font1)
-Set the font to that given by the
-.B *VT100.font1
-resource.
-.TP
-Tiny (font2)
-Set the font to that given by the
-.B *VT100.font2
-resource.
-.TP
-Small (font3)
-Set the font to that given by the
-.B *VT100.font3
-resource.
-.TP
-Medium (font4)
-Set the font to that given by the
-.B *VT100.font4
-resource.
-.TP
-Large (font5)
-Set the font to that given by the
-.B *VT100.font5
-resource.
-.TP
-Huge (font6)
-Set the font to that given by the
-.B *VT100.font6
-resource.
-.TP
-Escape Sequence
-This allows you to set the font last specified by the Set
-Font escape sequence (see the document \fIXterm Control Sequences\fP).
-.TP
-Selection (fontsel)
-This allows you to set the font specified
-the current selection as a font name (if the PRIMARY selection is owned).
-.RE
-.PP
-The second section allows you to modify the way it is displayed:
-.RS
-.TP
-Line-Drawing Characters (font-linedrawing)
-When set, tells \fIxterm\fP to draw its own line-drawing characters.
-Otherwise it relies on the font containing these.
-.TP
-Doublesized Characters (font-doublesize)
-When set, \fIxterm\fP may ask the font server to produce scaled versions
-of the normal font, for VT102 double-size characters.
-.RE
-.PP
-The third section allows you to modify the way it is specified:
-.RS
-.TP
-TrueType Fonts (render-font)
-If the
-.B "renderFont
-and corresponding resources were set,
-this is a further control whether \fIxterm\fP will actually use the
-Xft library calls to obtain a font.
-.TP
-UTF-8 (utf8-mode)
-This controls whether \fIxterm\fP uses UTF-8 encoding of input/output.
-It is useful for temporarily switching \fIxterm\fP to display
-text from an application which does not follow the locale settings.
-.RE
-.
-.PP
-The
-.I tekMenu
-sets various modes in the Tektronix emulation, and is popped up when the
-``control'' key and pointer button two are pressed in the Tektronix window.
-The current font size is checked in the modes section of the menu.
-.RS
-.TP
-Large Characters (tektextlarge)
-.TP
-\&#2 Size Characters (tektext2)
-.TP
-\&#3 Size Characters (tektext3)
-.TP
-Small Characters (tektextsmall)
-.RE
-.PP
-Commands:
-.RS
-.TP
-PAGE (tekpage)
-Clear the Tektronix window.
-.TP
-RESET (tekreset)
-.TP
-COPY (tekcopy)
-.RE
-.PP
-Windows:
-.RS
-.TP
-Show VT Window (vtshow)
-.TP
-Switch to VT Mode (vtmode)
-.TP
-Hide Tek Window (tekhide)
-.RE
-.
-.
-.SH SECURITY
-.
-.PP
-X environments differ in their security consciousness.
-Most servers,
-run under \fIxdm\fP,
-are capable of using a ``magic cookie'' authorization
-scheme that can provide a reasonable level of security for many people.
-If your server is only using a host-based mechanism to control access to
-the server (see \fIxhost(1)\fP), then if you enable access for a host and
-other users are also permitted to run clients on that same host,
-it is possible that someone can run an application which uses the
-basic services of the X protocol to snoop on your activities,
-potentially capturing a transcript of everything you type at the keyboard.
-Any process which has access to your X display can manipulate it
-in ways that you might not anticipate,
-even redirecting your keyboard to itself
-and sending events to your application's windows.
-This is true even with the ``magic cookie'' authorization scheme.
-While the \fBallowSendEvents\fP provides some protection against
-rogue applications tampering with your programs,
-guarding against a snooper is harder.
-.
-.PP
-The possibility of an application spying on your keystrokes
-is of particular concern when you want to type in a password
-or other sensitive data.
-The best solution to this problem is to use a better
-authorization mechanism than is provided by X.
-Given all of these caveats,
-a simple mechanism exists for protecting keyboard input in \fIxterm\fP.
-.
-.PP
-The \fIxterm\fP menu (see \fBMENUS\fP above) contains a \fBSecure Keyboard\fP
-entry which, when enabled,
-attempts to ensure that all keyboard input is directed
-\fIonly\fP to \fIxterm\fP (using the GrabKeyboard protocol request).
-When an application prompts you for a password
-(or other sensitive data), you can enable \fBSecure Keyboard\fP using the
-menu, type in the data, and then disable \fBSecure Keyboard\fP using
-the menu again.
-This ensures that you know which window is accepting your keystrokes.
-It cannot ensure that there are no processes which have access to your
-X display that might be observing the keystrokes as well.
-.
-.PP
-Only one X client at a time can grab the keyboard,
-so when you attempt to enable \fBSecure Keyboard\fP it may fail.
-In this case, the bell will sound.
-If the \fBSecure Keyboard\fP succeeds,
-the foreground and background colors will be exchanged (as if you
-selected the \fBReverse Video\fP entry in the \fBModes\fP menu);
-they will be exchanged again when you exit secure mode.
-If the colors
-do \fInot\fP switch, then
-you should be \fIvery\fP suspicious that you are being spoofed.
-If the application you are running displays a prompt before asking for
-the password, it is safest to enter secure mode \fIbefore\fP the
-prompt gets displayed, and to make sure that the prompt gets displayed
-correctly (in the new colors), to minimize the probability of
-spoofing.
-You can also bring up the menu again and make sure that a check
-mark appears next to the entry.
-.
-.PP
-\fBSecure Keyboard\fP mode will be disabled automatically if your \fIxterm\fP
-window becomes iconified (or otherwise unmapped), or if you start up
-a reparenting window manager (that places a title bar or other decoration
-around the window) while in \fBSecure Keyboard\fP mode.
-(This is a
-feature of the X protocol not easily overcome.) When this happens,
-the foreground and background colors will be switched back and the bell
-will sound in warning.
-.
-.
-.SH "CHARACTER CLASSES"
-Clicking the left mouse button twice in rapid succession will cause all
-characters of the same class (e.g., letters, white space, punctuation) to be
-selected.
-Since different people have different preferences for what should
-be selected (for example, should filenames be selected as a whole or only
-the separate subnames), the default mapping can be overridden through the use
-of the \fBcharClass\fP (class \fICharClass\fP) resource.
-.
-.PP
-This resource is a
-series of comma-separated
-of \fIrange\fP:\fIvalue\fP pairs.
-The
-\fIrange\fP is either a single number or \fIlow\fP-\fIhigh\fP in the range of 0
-to 65535, corresponding to the code for the character or characters to be
-set.
-The \fIvalue\fP is arbitrary, although the default table uses the
-character number of the first character occurring in the set.
-When not in
-UTF-8 mode, only the first 256 bytes of this table will be used.
-.
-.PP
-The default table starts as follows -
-.DS
-static int charClass[256] = {
-/\(** NUL SOH STX ETX EOT ENQ ACK BEL */
- 32, 1, 1, 1, 1, 1, 1, 1,
-/\(** BS HT NL VT NP CR SO SI */
- 1, 32, 1, 1, 1, 1, 1, 1,
-/\(** DLE DC1 DC2 DC3 DC4 NAK SYN ETB */
- 1, 1, 1, 1, 1, 1, 1, 1,
-/\(** CAN EM SUB ESC FS GS RS US */
- 1, 1, 1, 1, 1, 1, 1, 1,
-/\(** SP ! " # $ % & ' */
-.\" " <- for emacs autocolor to work well :-)
- 32, 33, 34, 35, 36, 37, 38, 39,
-/\(** ( ) * + , - . / */
- 40, 41, 42, 43, 44, 45, 46, 47,
-/\(** 0 1 2 3 4 5 6 7 */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/\(** 8 9 : ; < = > ? */
- 48, 48, 58, 59, 60, 61, 62, 63,
-/\(** @ A B C D E F G */
- 64, 48, 48, 48, 48, 48, 48, 48,
-/\(** H I J K L M N O */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/\(** P Q R S T U V W */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/\(** X Y Z [ \\ ] ^ _ */
- 48, 48, 48, 91, 92, 93, 94, 48,
-/\(** ` a b c d e f g */
- 96, 48, 48, 48, 48, 48, 48, 48,
-/\(** h i j k l m n o */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/\(** p q r s t u v w */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/\(** x y z { | } ~ DEL */
- 48, 48, 48, 123, 124, 125, 126, 1,
-/\(** x80 x81 x82 x83 IND NEL SSA ESA */
- 1, 1, 1, 1, 1, 1, 1, 1,
-/\(** HTS HTJ VTS PLD PLU RI SS2 SS3 */
- 1, 1, 1, 1, 1, 1, 1, 1,
-/\(** DCS PU1 PU2 STS CCH MW SPA EPA */
- 1, 1, 1, 1, 1, 1, 1, 1,
-/\(** x98 x99 x9A CSI ST OSC PM APC */
- 1, 1, 1, 1, 1, 1, 1, 1,
-/\(** - i c/ L ox Y- | So */
- 160, 161, 162, 163, 164, 165, 166, 167,
-/\(** .. c0 ip << _ R0 - */
- 168, 169, 170, 171, 172, 173, 174, 175,
-/\(** o +- 2 3 ' u q| . */
- 176, 177, 178, 179, 180, 181, 182, 183,
-/\(** , 1 2 >> 1/4 1/2 3/4 ? */
- 184, 185, 186, 187, 188, 189, 190, 191,
-/\(** A` A' A^ A~ A: Ao AE C, */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/\(** E` E' E^ E: I` I' I^ I: */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/\(** D- N~ O` O' O^ O~ O: X */
- 48, 48, 48, 48, 48, 48, 48, 215,
-/\(** O/ U` U' U^ U: Y' P B */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/\(** a` a' a^ a~ a: ao ae c, */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/\(** e` e' e^ e: i` i' i^ i: */
- 48, 48, 48, 48, 48, 48, 48, 48,
-/\(** d n~ o` o' o^ o~ o: -: */
- 48, 48, 48, 48, 48, 48, 48, 247,
-/\(** o/ u` u' u^ u: y' P y: */
- 48, 48, 48, 48, 48, 48, 48, 48};
-.DE
-For example, the string ``33:48,37:48,45-47:48,38:48'' indicates that the
-exclamation mark, percent sign, dash, period, slash, and ampersand characters
-should be treated the same way as characters and numbers.
-This is useful
-for cutting and pasting electronic mailing addresses and filenames.
-.
-.
-.SH ACTIONS
-It is possible to rebind keys (or sequences of keys) to arbitrary strings
-for input, by changing the \fBtranslations\fP resources
-for the vt100 or tek4014 widgets.
-Changing the \fBtranslations\fP resource
-for events other than key and button events is not expected,
-and will cause unpredictable behavior.
-The following
-actions are provided for use within the \fIvt100\fP or \fItek4014\fP
-\fBtranslations\fP resources:
-.TP 8
-.B "allow-send-events(\fIon/off/toggle\fP)"
-This action set or toggles the \fBallowSendEvents\fP resource and is also
-invoked by the \fBallowsends\fP entry in \fImainMenu\fP.
-.TP 8
-.B "alt-sends-escape()"
-This action toggles the state of the \fBeightBitInput\fP resource.
-.TP 8
-.B "bell([\fIpercent\fP])"
-This action rings the keyboard bell at the specified percentage
-above or below the base volume.
-.TP 8
-.B "clear-saved-lines()"
-This action does \fBhard-reset()\fP (see below) and also clears the history
-of lines saved off the top of the screen.
-It is also invoked from the \fBclearsavedlines\fP entry in \fIvtMenu\fP.
-The effect is identical to a hardware reset (RIS) control sequence.
-.TP 8
-.B "create-menu(\fIm/v/f/t\fP)"
-This action creates one of the menus used by \fIxterm\fP,
-if it has not been previously created.
-The parameter values are the menu names:
-\fImainMenu\fP, \fIvtMenu\fP, \fIfontMenu\fP, \fItekMenu\fP, respectively.
-.TP 8
-.B "dabbrev-expand()"
-Expands the word before cursor by searching in the preceding text on the
-screen and in the scrollback buffer for words starting with that
-abbreviation.
-Repeating \fBdabbrev-expand()\fP several times in sequence searches for an
-alternative expansion by looking farther back.
-Lack of more matches is signaled by a \fBbeep()\fP.
-Attempts to expand an empty word
-(i.e., when cursor is preceded by a space) yield successively all previous
-words.
-Consecutive identical expansions are ignored.
-The word here is defined as a sequence of non-whitespace characters.
-This feature partially emulates the behavior
-of `dynamic abbreviation' expansion in Emacs (bound there to M-/).
-Here is a resource setting for \fIxterm\fP which will do the same thing:
-.DS
-*VT100*translations: #override \\n\\\&
- Meta <KeyPress> /:dabbrev-expand()
-.DE
-.TP 8
-.B "deiconify()"
-Changes the window state back to normal, if it was iconified.
-.TP 8
-.B "delete-is-del()"
-This action toggles the state of the \fBdeleteIsDEL\fP resource.
-.TP 8
-.B "dired-button()"
-Handles a button event (other than press and release)
-by echoing the event's position
-(i.e., character line and column) in the following format:
-.sp
-.in +8
-^X ESC G <line+' '> <col+' '>
-.in -8
-.TP 8
-.B "iconify()"
-Iconifies the window.
-.TP 8
-.B "hard-reset()"
-This action resets the scrolling region, tabs, window size, and cursor keys
-and clears the screen.
-It is also invoked from the \fBhardreset\fP
-entry in \fIvtMenu\fP.
-.TP 8
-.B "ignore()"
-This action ignores the event but checks for special pointer position
-escape sequences.
-.TP 8
-.B "insert()"
-This action inserts the character or string associated with
-the key that was pressed.
-.TP 8
-.B "insert-eight-bit()"
-This action inserts an eight-bit (Meta) version of the character or string
-associated with the key that was pressed.
-This only applies to single-byte values.
-The exact action depends on the value of
-the \fBmetaSendsEscape\fP and
-the \fBeightBitInput\fP resources.
-The \fBmetaSendsEscape\fP resource is tested first.
-.IP
-The term "eight-bit" is misleading:
-\fIxterm\fP checks if the key's value is less than 128.
-If so, \fIxterm\fP adds 128 to the value, setting its eighth bit.
-Otherwise \fIxterm\fP sends an ESC byte before the key.
-In other applications' documentation, that is referred to as a "meta key".
-.TP 8
-.B "insert-selection(\fIsourcename\fP [, ...])"
-This action inserts the string found in the selection or cutbuffer indicated
-by \fIsourcename\fP.
-Sources are checked in the order given (case is
-significant) until one is found.
-Commonly-used selections include:
-\fIPRIMARY\fP, \fISECONDARY\fP, and \fICLIPBOARD\fP.
-Cut buffers are
-typically named \fICUT_BUFFER0\fP through \fICUT_BUFFER7\fP.
-.TP 8
-.B "insert-seven-bit()"
-This action is a synonym for \fBinsert()\fP
-The term "seven-bit" is misleading:
-it only implies that \fIxterm\fP does not try to add 128 to the key's value
-as in \fBinsert-eight-bit()\fP.
-.TP 8
-.B "interpret(\fIcontrol-sequence\fP)"
-Interpret the given control sequence locally, i.e., without passing it to
-the host.
-This works by inserting the control sequence at the front
-of the input buffer.
-Use "\\" to escape octal digits in the string.
-Xt does not allow you to put a null character (i.e., "\\000") in the string.
-.TP 8
-.B "keymap(\fIname\fP)"
-This action dynamically defines a new translation table whose resource
-name is \fIname\fP with the suffix \fIKeymap\fP (case is significant).
-The name \fINone\fP restores the original translation table.
-.TP 8
-.B "larger-vt-font()"
-Set the font to the next larger one, based on the font dimensions.
-See also \fBset-vt-font()\fP.
-.TP 8
-.B "load-vt-fonts(\fIname\fP[,\fIclass\fP])"
-Load fontnames from the given subresource name and class.
-That is, load the "*VT100.\fIname\fP.font", resource as "*VT100.font" etc.
-If no name is given, the original set of fontnames is restored.
-.IP
-Unlike \fBset-vt-font()\fR, this does not affect the escape- and select-fonts,
-since those are not based on resource values.
-It does affect the fonts loosely organized under the ``Default'' menu
-entry: \fBfont\fP, \fBboldFont\fP, \fBwideFont\fP and \fBwideBoldFont\fP.
-.TP 8
-.B "maximize()"
-Resizes the window to fill the screen.
-.TP 8
-.B "meta-sends-escape()"
-This action toggles the state of the \fBmetaSendsEscape\fP resource.
-.TP 8
-.B "popup-menu(\fImenuname\fP)"
-This action displays the specified popup menu.
-Valid names (case is
-significant) include: \fImainMenu\fP, \fIvtMenu\fP, \fIfontMenu\fP,
-and \fItekMenu\fP.
-.TP 8
-.B "print()"
-This action prints the window and is also invoked by the
-\fIprint\fP entry in \fImainMenu\fP.
-.TP 8
-.B "print-redir()"
-This action toggles the \fBprinterControlMode\fR between 0 and 2.
-The corresponding popup menu entry is useful for switching the printer
-off if you happen to change your mind after deciding to print random
-binary files on the terminal.
-.TP 8
-.B "quit()"
-This action sends a SIGHUP to the subprogram and exits.
-It is also invoked
-by the \fBquit\fP entry in \fImainMenu\fP.
-.TP 8
-.B "redraw()"
-This action redraws the window and is also invoked by the
-\fIredraw\fP entry in \fImainMenu\fP.
-.TP 8
-.B "restore()"
-Restores the window to the size before it was last maximized.
-.TP 8
-.B "scroll-back(\fIcount\fP [,\fIunits\fP [,\fImouse\fP] ])"
-This action scrolls the text window backward so that text that had previously
-scrolled off the top of the screen is now visible.
-.IP
-The \fIcount\fP argument
-indicates the number of \fIunits\fP (which may be \fIpage\fP, \fIhalfpage\fP,
-\fIpixel\fP, or \fIline\fP) by which to scroll.
-.IP
-An adjustment can be specified for these values by appending a "+" or "-"
-sign followed by a number,
-e.g., \fIpage-2\fP to specify 2 lines less than a page.
-.IP
-If the third parameter \fImouse\fP is given, the action is ignored when
-mouse reporting is enabled.
-.TP 8
-.B "scroll-forw(\fIcount\fP [,\fIunits\fP [,\fImouse\fP] ])"
-This action is similar to \fBscroll-back\fP except that it scrolls
-in the other direction.
-.TP 8
-.B "secure()"
-This action toggles the \fISecure Keyboard\fP mode described in the
-section named \fBSECURITY\fP, and is invoked from the \fBsecurekbd\fP
-entry in \fImainMenu\fP.
-.TP 8
-.B "select-cursor-end(\fIdestname\fP [, ...])"
-This action is similar to \fBselect-end\fP except that it should be used
-with \fBselect-cursor-start\fP.
-.TP 8
-.B "select-cursor-start()"
-This action is similar to \fBselect-start\fP except that it begins the
-selection at the current text cursor position.
-.TP 8
-.B "select-end(\fIdestname\fP [, ...])"
-This action puts the currently selected text into all of the selections or
-cutbuffers specified by \fIdestname\fP.
-.TP 8
-.B "select-extend()"
-This action tracks the pointer and extends the selection.
-It should only be bound to Motion events.
-.TP 8
-.B "select-set()"
-This action stores text that corresponds to the current selection,
-without affecting the selection mode.
-.TP 8
-.B "select-start()"
-This action begins text selection at the current pointer location.
-See
-the section on \fBPOINTER USAGE\fP for information on making selections.
-.TP 8
-.B "send-signal(\fIsigname\fP)"
-This action sends the signal named by \fIsigname\fP
-to the \fIxterm\fP subprocess (the shell or program specified with
-the \fI-e\fP command line option) and is also invoked by the
-.BR suspend ,
-.BR continue ,
-.BR interrupt ,
-.BR hangup ,
-.BR terminate ,
-and
-.BR kill
-entries in \fImainMenu\fP.
-Allowable signal names are (case is
-not significant):
-\fItstp\fP (if supported by the operating system), \fIsuspend\fP (same
-as \fItstp\fP), \fIcont\fP
-(if supported by the operating system), \fIint\fP, \fIhup\fP, \fIterm\fP,
-\fIquit\fP,
-\fIalrm\fP, \fIalarm\fP (same as \fIalrm\fP) and \fIkill\fP.
-.TP 8
-.B "set-allow132(\fIon/off/toggle\fP)"
-This action toggles the \fBc132\fP resource and is also invoked from the
-\fBallow132\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-altscreen(\fIon/off/toggle\fP)"
-This action toggles between the alternate and current screens.
-.TP 8
-.B "set-appcursor(\fIon/off/toggle\fP)"
-This action toggles the handling Application Cursor Key mode
-and is also invoked by the \fBappcursor\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-appkeypad(\fIon/off/toggle\fP)"
-This action toggles the handling of Application Keypad mode and is also
-invoked by the \fBappkeypad\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-autolinefeed(\fIon/off/toggle\fP)"
-This action toggles automatic insertion of linefeeds and is also invoked by
-the \fBautolinefeed\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-autowrap(\fIon/off/toggle\fP)"
-This action toggles automatic wrapping of long lines and is also invoked by
-the \fBautowrap\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-backarrow(\fIon/off/toggle\fP)"
-This action toggles the \fBbackarrowKey\fP resource and is also invoked from the
-\fBbackarrow key\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-cursorblink(\fIon/off/toggle\fP)"
-This action toggles the \fBcursorBlink\fP resource and is also invoked from the
-\fBcursorblink\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-cursesemul(\fIon/off/toggle\fP)"
-This action toggles the \fBcurses\fP resource and is also invoked from the
-\fBcursesemul\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-font-doublesize(\fIon/off/toggle\fP)"
-This action toggles the \fBfontDoublesize\fP resource and is also invoked by
-the \fBfont-doublesize\fP entry in \fIfontMenu\fP.
-.TP 8
-.B "set-hp-function-keys(\fIon/off/toggle\fP)"
-This action toggles the \fBhpFunctionKeys\fP resource and is also invoked by
-the \fBhpFunctionKeys\fP entry in \fImainMenu\fP.
-.TP 8
-.B "set-jumpscroll(\fIon/off/toggle\fP)"
-This action toggles the \fBjumpscroll\fP resource and is also invoked by the
-\fBjumpscroll\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-font-linedrawing(\fIon/off/toggle\fP)"
-This action toggles the \fIxterm\fR's state regarding whether the current font
-has line-drawing characters and whether it should draw them directly.
-It is also invoked by the \fBfont-linedrawing\fP entry in \fIfontMenu\fP.
-.TP 8
-.B "set-logging()"
-This action toggles the state of the logging option.
-.TP 8
-.B "set-old-function-keys(\fIon/off/toggle\fP)"
-This action toggles the state of legacy function keys and is also invoked by
-the \fBoldFunctionKeys\fP entry in \fImainMenu\fP.
-.TP 8
-.B "set-marginbell(\fIon/off/toggle\fP)"
-This action toggles the \fBmarginBell\fP resource and is also invoked from
-the \fBmarginbell\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-num-lock()"
-This action toggles the state of the \fBnumLock\fP resource.
-.TP 8
-.B "set-pop-on-bell(\fIon/off/toggle\fP)"
-This action toggles the \fBpopOnBell\fP resource and is also invoked
-by the \fBpoponbell\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-render-font(\fIon/off/toggle\fP)"
-This action toggles the \fBrenderFont\fP resource and is also invoked by
-the \fBrender-font\fP entry in \fIfontMenu\fP.
-.TP 8
-.B "set-reverse-video(\fIon/off/toggle\fP)"
-This action toggles the \fBreverseVideo\fP resource and is also invoked by
-the \fBreversevideo\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-reversewrap(\fIon/off/toggle\fP)"
-This action toggles the \fBreverseWrap\fP resource and is also invoked by
-the \fBreversewrap\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-scroll-on-key(\fIon/off/toggle\fP)"
-This action toggles the \fBscrollKey\fP resource and is also invoked from
-the \fBscrollkey\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-scroll-on-tty-output(\fIon/off/toggle\fP)"
-This action toggles the \fBscrollTtyOutput\fP resource and is also invoked
-from the \fBscrollttyoutput\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-scrollbar(\fIon/off/toggle\fP)"
-This action toggles the \fBscrollbar\fP resource and is also invoked by
-the \fBscrollbar\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-sco-function-keys(\fIon/off/toggle\fP)"
-This action toggles the \fBscoFunctionKeys\fP resource and is also invoked by
-the \fBscoFunctionKeys\fP entry in \fImainMenu\fP.
-.TP 8
-.B "set-sun-function-keys(\fIon/off/toggle\fP)"
-This action toggles the \fBsunFunctionKeys\fP resource and is also invoked by
-the \fBsunFunctionKeys\fP entry in \fImainMenu\fP.
-.TP 8
-.B "set-sun-keyboard(\fIon/off/toggle\fP)"
-This action toggles the \fBsunKeyboard\fP resource and is also invoked by
-the \fBsunKeyboard\fP entry in \fImainMenu\fP.
-.TP 8
-.B "set-tek-text(\fIlarge/2/3/small\fP)"
-This action sets font used in the Tektronix window to the value of the
-resources \fBtektextlarge\fP, \fBtektext2\fP, \fBtektext3\fP, and
-\fBtektextsmall\fP according to the argument.
-It is also by the entries
-of the same names as the resources in \fItekMenu\fP.
-.TP 8
-.B "set-terminal-type(\fItype\fP)"
-This action directs output to either the \fIvt\fP or \fItek\fP windows,
-according to the \fItype\fP string.
-It is also invoked by the
-\fBtekmode\fP entry in \fIvtMenu\fP and the \fBvtmode\fP entry in
-\fItekMenu\fP.
-.TP 8
-.B "set-titeInhibit(\fIon/off/toggle\fP)"
-This action toggles the \fBtiteInhibit\fP resource,
-which controls switching between the alternate and current screens.
-.TP 8
-.\" should toggle "toolBar" resource (see note).
-.B "set-toolbar(\fIon/off/toggle\fP)"
-This action toggles the toolbar feature and is also invoked by
-the \fBtoolbar\fP entry in \fImainMenu\fP.
-.TP 8
-.B "set-utf8-mode(\fIon/off/toggle\fP)"
-This action toggles the \fButf8\fP resource and is also invoked by
-the \fButf8-mode\fP entry in \fIfontMenu\fP.
-.TP 8
-.B "set-visibility(\fIvt/tek\fP,\fIon/off/toggle\fP)"
-This action controls whether or not the \fIvt\fP or \fItek\fP windows are
-visible.
-It is also invoked from the \fBtekshow\fP and \fBvthide\fP entries
-in \fIvtMenu\fP and the \fBvtshow\fP and \fBtekhide\fP entries in
-\fItekMenu\fP.
-.TP 8
-.B "set-visual-bell(\fIon/off/toggle\fP)"
-This action toggles the \fBvisualBell\fP resource and is also invoked
-by the \fBvisualbell\fP entry in \fIvtMenu\fP.
-.TP 8
-.B "set-vt-font(\fId/1/2/3/4/5/6/e/s\fP [,\fInormalfont\fP [, \fIboldfont\fP]])"
-This action sets the font or fonts currently being used in the VT102 window.
-The first argument is a single character that specifies the font to be
-used:
-.RS 8
-.HP
-\fId\fP or \fID\fP indicate the default font (the font initially
-used when
-\fIxterm\fP was started),
-.HP
-\fI1\fP through \fI6\fP indicate the fonts
-specified by the \fIfont1\fP through \fIfont6\fP resources,
-.HP
-\fIe\fP or \fIE\fP
-indicate the normal and bold fonts that have been set through escape codes
-(or specified as the second and third action arguments, respectively), and
-.HP
-\fIs\fP or \fIS\fP indicate the font selection (as made by programs such as
-\fIxfontsel(1)\fP) indicated by the second action argument.
-.RE
-.IP
-If \fIxterm\fR is configured to support wide characters, an
-additional two optional parameters are recognized for the \fIe\fP argument:
-wide font and wide bold font.
-.TP 8
-.B "smaller-vt-font()"
-Set the font to the next smaller one, based on the font dimensions.
-See also \fBset-vt-font()\fP.
-.TP 8
-.B "soft-reset()"
-This action resets the scrolling region and is also invoked from the
-\fBsoftreset\fP entry in \fIvtMenu\fP.
-The effect is identical to a soft reset (DECSTR) control sequence.
-.TP 8
-.B "start-extend()"
-This action is similar to \fBselect-start\fP except that the
-selection is extended to the current pointer location.
-.TP 8
-.B "start-cursor-extend()"
-This action is similar to \fBselect-extend\fP except that the
-selection is extended to the current text cursor position.
-.TP 8
-.B "string(\fIstring\fP)"
-This action inserts the specified text string as if it had been typed.
-Quotation is necessary if the string contains whitespace or
-non-alphanumeric characters.
-If the string argument begins with the
-characters ``0x'', it is interpreted
-as a hex character constant.
-.TP 8
-.B "tek-copy()"
-This action copies the escape codes used to generate the current window
-contents to a file in the current directory beginning with the name COPY.
-It is also invoked from the \fItekcopy\fP entry in \fItekMenu\fP.
-.TP 8
-.B "tek-page()"
-This action clears the Tektronix window and is also invoked by the
-\fBtekpage\fP entry in \fItekMenu\fP.
-.TP 8
-.B "tek-reset()"
-This action resets the Tektronix window and is also invoked by the
-\fItekreset\fP entry in \fItekMenu\fP.
-.TP 8
-.B "vi-button()"
-Handles a button event (other than press and release)
-by echoing a control sequence computed from the event's line number
-in the screen relative to the current line:
-.sp
-.in +8
-ESC ^P
-.in -8
-or
-.in +8
-ESC ^N
-.in -8
-.sp
-according to whether the event is before, or after the current line,
-respectively.
-The ^N (or ^P) is repeated once for each line that the event differs
-from the current line.
-The control sequence is omitted altogether if the button event is on the
-current line.
-.TP 8
-.B "visual-bell()"
-This action flashes the window quickly.
-.
-.PP
-The Tektronix window also has the following action:
-.TP 8
-.B "gin-press(\fIl/L/m/M/r/R\fP)"
-This action sends the indicated graphics input code.
-.
-.PP
-The default bindings in the VT102 window are:
-.DS
-.ta 2.5i
- Shift <KeyPress> Prior:scroll-back(1,halfpage) \\n\\\&
- Shift <KeyPress> Next:scroll-forw(1,halfpage) \\n\\\&
- Shift <KeyPress> Select:select-cursor-start() \\\&
- select-cursor-end(PRIMARY, CUT_BUFFER0) \\n\\\&
- Shift <KeyPress> Insert:insert-selection(PRIMARY, CUT_BUFFER0) \\n\\\&
- Shift~Ctrl <KeyPress> KP_Add:larger-vt-font() \\n\\\&
- Shift Ctrl <KeyPress> KP_Add:smaller-vt-font() \\n\\\&
- Shift <KeyPress> KP_Subtract:smaller-vt-font() \\n\\\&
- ~Meta <KeyPress>:insert-seven-bit() \\n\\\&
- Meta <KeyPress>:insert-eight-bit() \\n\\\&
- !Ctrl <Btn1Down>:popup-menu(mainMenu) \\n\\\&
- !Lock Ctrl <Btn1Down>:popup-menu(mainMenu) \\n\\\&
- !Lock Ctrl @Num_Lock <Btn1Down>:popup-menu(mainMenu) \\n\\\&
- ! @Num_Lock Ctrl <Btn1Down>:popup-menu(mainMenu) \\n\\\&
- ~Meta <Btn1Down>:select-start() \\n\\\&
- ~Meta <Btn1Motion>:select-extend() \\n\\\&
- !Ctrl <Btn2Down>:popup-menu(vtMenu) \\n\\\&
- !Lock Ctrl <Btn2Down>:popup-menu(vtMenu) \\n\\\&
- !Lock Ctrl @Num_Lock <Btn2Down>:popup-menu(vtMenu) \\n\\\&
- ! @Num_Lock Ctrl <Btn2Down>:popup-menu(vtMenu) \\n\\\&
- ~Ctrl ~Meta <Btn2Down>:ignore() \\n\\\&
- Meta <Btn2Down>:clear-saved-lines() \\n\\\&
- ~Ctrl ~Meta <Btn2Up>:insert-selection(PRIMARY, CUT_BUFFER0) \\n\\\&
- !Ctrl <Btn3Down>:popup-menu(fontMenu) \\n\\\&
- !Lock Ctrl <Btn3Down>:popup-menu(fontMenu) \\n\\\&
- !Lock Ctrl @Num_Lock <Btn3Down>:popup-menu(fontMenu) \\n\\\&
- ! @Num_Lock Ctrl <Btn3Down>:popup-menu(fontMenu) \\n\\\&
- ~Ctrl ~Meta <Btn3Down>:start-extend() \\n\\\&
- ~Meta <Btn3Motion>:select-extend() \\n\\\&
- Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \\n\\\&
- Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \\n\\\&
- Lock @Num_Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \\n\\\&
- @Num_Lock Ctrl <Btn4Down>:scroll-back(1,halfpage,m) \\n\\\&
- <Btn4Down>:scroll-back(5,line,m) \\n\\\&
- Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \\n\\\&
- Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \\n\\\&
- Lock @Num_Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \\n\\\&
- @Num_Lock Ctrl <Btn5Down>:scroll-forw(1,halfpage,m) \\n\\\&
- <Btn5Down>:scroll-forw(5,line,m) \\n\\\&
- <BtnUp>:select-end(PRIMARY, CUT_BUFFER0) \\n\\\&
- <BtnDown>:ignore()
-.DE
-.PP
-The default bindings in the Tektronix window are:
-.DS
-.ta 2.5i
- ~Meta<KeyPress>: insert-seven-bit() \\n\\\&
- Meta<KeyPress>: insert-eight-bit() \\n\\\&
- !Ctrl <Btn1Down>: popup-menu(mainMenu) \\n\\\&
- !Lock Ctrl <Btn1Down>: popup-menu(mainMenu) \\n\\\&
-!Lock Ctrl @Num_Lock <Btn1Down>: popup-menu(mainMenu) \\n\\\&
- !Ctrl @Num_Lock <Btn1Down>: popup-menu(mainMenu) \\n\\\&
- !Ctrl <Btn2Down>: popup-menu(tekMenu) \\n\\\&
- !Lock Ctrl <Btn2Down>: popup-menu(tekMenu) \\n\\\&
-!Lock Ctrl @Num_Lock <Btn2Down>: popup-menu(tekMenu) \\n\\\&
- !Ctrl @Num_Lock <Btn2Down>: popup-menu(tekMenu) \\n\\\&
- Shift ~Meta<Btn1Down>: gin-press(L) \\n\\\&
- ~Meta<Btn1Down>: gin-press(l) \\n\\\&
- Shift ~Meta<Btn2Down>: gin-press(M) \\n\\\&
- ~Meta<Btn2Down>: gin-press(m) \\n\\\&
- Shift ~Meta<Btn3Down>: gin-press(R) \\n\\\&
- ~Meta<Btn3Down>: gin-press(r)
-.DE
-.PP
-Here is an example which uses shifted select/paste to copy to the clipboard,
-and unshifted select/paste for the primary selection.
-In each case, a (different) cut buffer is
-also a target or source of the select/paste operation.
-It is important to remember however,
-that cut buffers store data in ISO-8859-1 encoding,
-while selections can store data in a variety of formats and encodings.
-While \fIxterm\fP owns the selection, it highlights it.
-When it loses the selection, it removes the corresponding highlight.
-But you can still paste from the corresponding cut buffer.
-.DS
-.ta .5i 1.5i
-*VT100*translations: #override \\n\\\&
- ~Shift~Ctrl<Btn2Up>: insert-selection(PRIMARY, CUT_BUFFER0) \\n\\\&
- Shift~Ctrl<Btn2Up>: insert-selection(CLIPBOARD, CUT_BUFFER1) \\n\\\&
- ~Shift<BtnUp>: select-end(PRIMARY, CUT_BUFFER0) \\n\\\&
- Shift<BtnUp>: select-end(CLIPBOARD, CUT_BUFFER1)
-.DE
-.PP
-Below is a sample how of the \fBkeymap()\fP action is used to add special
-keys for entering commonly-typed works:
-.DS
-.ta .5i 1.5i
-*VT100.Translations: #override <Key>F13: keymap(dbx)
-*VT100.dbxKeymap.translations: \\\&
- <Key>F14: keymap(None) \\n\\\&
- <Key>F17: string("next") string(0x0d) \\n\\\&
- <Key>F18: string("step") string(0x0d) \\n\\\&
- <Key>F19: string("continue") string(0x0d) \\n\\\&
- <Key>F20: string("print ") insert-selection(PRIMARY, CUT_BUFFER0)
-.DE
-.SH "CONTROL SEQUENCES AND KEYBOARD"
-The \fIXterm Control Sequences\fP document lists the control sequences which
-an application can send \fIxterm\fP to make it perform various operations.
-Most of these operations are standardized, from either the DEC or Tektronix
-terminals, or from more widely used standards such as ISO 6429.
-.
-.
-.SH ENVIRONMENT
-.I Xterm
-sets several environment variables:
-.TP 5
-DISPLAY
-is the display name,
-pointing to the X server (see \fBDISPLAY NAMES\fP in X(__miscmansuffix__)).
-.TP 5
-TERM
-is set according to the termcap (or terminfo) entry which it is using as
-a reference.
-.TP 5
-WINDOWID
-is set to the X window id number of the \fIxterm\fP window.
-.TP 5
-XTERM_SHELL
-is set to the pathname of the program which is invoked.
-Usually that is a shell program, e.g., \fB/bin/sh\fP.
-Since it is not necessarily a shell program however,
-it is distinct from ``SHELL''.
-.TP 5
-XTERM_VERSION
-is set to the string displayed by the \fB-version\fP option.
-That is normally an identifier for the X Window libraries used to
-build \fIxterm\fP, followed by
-\fIxterm\fP's patch number in parenthesis.
-The patch number is also part of the response to a Secondary Device Attributes
-(DA) control sequence (see \fIXterm Control Sequences\fP).
-.
-.PP
-Depending on your system configuration, \fIxterm\fP may also set the
-following:
-.TP 5
-COLUMNS
-the width of the \fIxterm\fP in characters (cf: "stty columns").
-.TP 5
-HOME
-when \fIxterm\fP is configured to update utmp.
-.TP 5
-LINES
-the height of the \fIxterm\fP in characters (cf: "stty rows").
-.TP 5
-LOGNAME
-when \fIxterm\fP is configured to update utmp.
-.TP 5
-SHELL
-when \fIxterm\fP is configured to update utmp.
-It is also set if you provide the shell name as the optional parameter.
-.TP 5
-TERMCAP
-the contents of the termcap entry corresponding to $TERM,
-with lines and columns values substituted
-for the actual size window you have created.
-.TP 5
-TERMINFO
-may be defined to a nonstandard location in the configure script.
-.\"
-.
-.
-.SH FILES
-The actual pathnames given may differ on your system.
-.TP 5
-\fI/etc/utmp\fP
-the system logfile, which records user logins.
-.TP 5
-\fI/etc/wtmp\fP
-the system logfile, which records user logins and logouts.
-.TP 5
-.I __apploaddir__/XTerm
-the \fIxterm\fP default application resources.
-.TP 5
-.I __apploaddir__/XTerm-color
-the \fIxterm\fP color application resources.
-If your display supports color, use this
-.in +10
-*customization: -color
-.in -10
-in your .Xdefaults file to
-automatically turn on color in \fIxterm\fP and similar applications.
-.
-.
-.SH ERROR MESSAGES
-Most of the fatal error messages from \fIxterm\fP use the following format:
-.RS
-xterm: Error \fIXXX\fP, errno \fIYYY\fP: \fIZZZ\fP
-.RE
-The \fIXXX\fP codes (which are used by \fIxterm\fP as its exit-code)
-are listed below, with a brief explanation.
-.TP 5
-1
-is used for miscellaneous errors, usually accompanied by a specific message,
-.TP
-11
-ERROR_FIONBIO
-.br
-main: ioctl() failed on FIONBIO
-.TP
-12
-ERROR_F_GETFL
-.br
-main: ioctl() failed on F_GETFL
-.TP
-13
-ERROR_F_SETFL
-.br
-main: ioctl() failed on F_SETFL
-.TP
-14
-ERROR_OPDEVTTY
-.br
-spawn: open() failed on /dev/tty
-.TP
-15
-ERROR_TIOCGETP
-.br
-spawn: ioctl() failed on TIOCGETP
-.TP
-17
-ERROR_PTSNAME
-.br
-spawn: ptsname() failed
-.TP
-18
-ERROR_OPPTSNAME
-.br
-spawn: open() failed on ptsname
-.TP
-19
-ERROR_PTEM
-.br
-spawn: ioctl() failed on I_PUSH/"ptem"
-.TP
-20
-ERROR_CONSEM
-.br
-spawn: ioctl() failed on I_PUSH/"consem"
-.TP
-21
-ERROR_LDTERM
-.br
-spawn: ioctl() failed on I_PUSH/"ldterm"
-.TP
-22
-ERROR_TTCOMPAT
-.br
-spawn: ioctl() failed on I_PUSH/"ttcompat"
-.TP
-23
-ERROR_TIOCSETP
-.br
-spawn: ioctl() failed on TIOCSETP
-.TP
-24
-ERROR_TIOCSETC
-.br
-spawn: ioctl() failed on TIOCSETC
-.TP
-25
-ERROR_TIOCSETD
-.br
-spawn: ioctl() failed on TIOCSETD
-.TP
-26
-ERROR_TIOCSLTC
-.br
-spawn: ioctl() failed on TIOCSLTC
-.TP
-27
-ERROR_TIOCLSET
-.br
-spawn: ioctl() failed on TIOCLSET
-.TP
-28
-ERROR_INIGROUPS
-.br
-spawn: initgroups() failed
-.TP
-29
-ERROR_FORK
-.br
-spawn: fork() failed
-.TP
-30
-ERROR_EXEC
-.br
-spawn: exec() failed
-.TP
-32
-ERROR_PTYS
-.br
-get_pty: not enough ptys
-.TP
-34
-ERROR_PTY_EXEC
-.br
-waiting for initial map
-.TP
-35
-ERROR_SETUID
-.br
-spawn: setuid() failed
-.TP
-36
-ERROR_INIT
-.br
-spawn: can't initialize window
-.TP
-46
-ERROR_TIOCKSET
-.br
-spawn: ioctl() failed on TIOCKSET
-.TP
-47
-ERROR_TIOCKSETC
-.br
-spawn: ioctl() failed on TIOCKSETC
-.TP
-48
-ERROR_SPREALLOC
-.br
-spawn: realloc of ttydev failed
-.TP
-49
-ERROR_LUMALLOC
-.br
-luit: command-line malloc failed
-.TP
-50
-ERROR_SELECT
-.br
-in_put: select() failed
-.TP
-54
-ERROR_VINIT
-.br
-VTInit: can't initialize window
-.TP
-57
-ERROR_KMMALLOC1
-.br
-HandleKeymapChange: malloc failed
-.TP
-60
-ERROR_TSELECT
-.br
-Tinput: select() failed
-.TP
-64
-ERROR_TINIT
-.br
-TekInit: can't initialize window
-.TP
-71
-ERROR_BMALLOC2
-.br
-SaltTextAway: malloc() failed
-.TP
-80
-ERROR_LOGEXEC
-.br
-StartLog: exec() failed
-.TP
-83
-ERROR_XERROR
-.br
-xerror: XError event
-.TP
-84
-ERROR_XIOERROR
-.br
-xioerror: X I/O error
-.TP
-90
-ERROR_SCALLOC
-.br
-Alloc: calloc() failed on base
-.TP
-91
-ERROR_SCALLOC2
-.br
-Alloc: calloc() failed on rows
-.TP
-92
-ERROR_SREALLOC
-.br
-ScreenResize: realloc() failed on alt base
-.TP
-96
-ERROR_RESIZE
-.br
-ScreenResize: malloc() or realloc() failed
-.TP
-102
-ERROR_SAVE_PTR
-.br
-ScrnPointers: malloc/realloc() failed
-.TP
-110
-ERROR_SBRALLOC
-.br
-ScrollBarOn: realloc() failed on base
-.TP
-111
-ERROR_SBRALLOC2
-.br
-ScrollBarOn: realloc() failed on rows
-.TP
-121
-ERROR_MMALLOC
-.br
-my_memmove: malloc/realloc failed
-.
-.
-.SH BUGS
-.
-.PP
-Large pastes do not work on some systems.
-This is not a bug in
-\fIxterm\fP; it is a bug in the pseudo terminal driver of those
-systems.
-\fIxterm\fP feeds large pastes to the pty only as fast as the pty
-will accept data, but some pty drivers do not return enough information
-to know if the write has succeeded.
-.
-.PP
-Many of the options are not resettable after
-.I xterm
-starts.
-.
-.PP
-This program still needs to be rewritten.
-It should be split into very
-modular sections, with the various emulators being completely separate
-widgets that do not know about each other.
-Ideally, you'd like to be able to
-pick and choose emulator widgets and stick them into a single control widget.
-.
-.PP
-There needs to be a dialog box to allow entry of the Tek COPY file name.
-.
-.
-.SH "SEE ALSO"
-resize(1), luit(1), X(__miscmansuffix__), pty(4), tty(4)
-.br
-\fIXterm Control Sequences\fP
-(this is the file ctlseqs.ms).
-.sp
-http://invisible-island.net/xterm/xterm.html
-.
-.
-.SH AUTHORS
-Far too many people, including:
-.sp
-Loretta Guarino Reid (DEC-UEG-WSL),
-Joel McCormack (DEC-UEG-WSL), Terry Weissman (DEC-UEG-WSL),
-Edward Moy (Berkeley), Ralph R. Swick (MIT-Athena),
-Mark Vandevoorde (MIT-Athena), Bob McNamara (DEC-MAD),
-Jim Gettys (MIT-Athena), Bob Scheifler (MIT X Consortium), Doug Mink (SAO),
-Steve Pitschke (Stellar), Ron Newman (MIT-Athena), Jim Fulton (MIT X
-Consortium), Dave Serisky (HP), Jonathan Kamens (MIT-Athena),
-Jason Bacon,
-Stephen P. Wall,
-David Wexelblat, and
-Thomas Dickey (XFree86 Project).
diff --git a/nx-X11/programs/xterm/xterm_axp.opt b/nx-X11/programs/xterm/xterm_axp.opt
deleted file mode 100644
index 53dab4eb3..000000000
--- a/nx-X11/programs/xterm/xterm_axp.opt
+++ /dev/null
@@ -1,28 +0,0 @@
-BUTTON.OBJ
-CHARPROC.OBJ
-CHARSETS.OBJ
-CURSOR.OBJ
-DATA.OBJ
-DOUBLECHR.OBJ
-FONTUTILS.OBJ
-INPUT.OBJ
-KEYSYM2UCS.OBJ
-MAIN.OBJ
-MENU.OBJ
-MISC.OBJ
-PRINT.OBJ
-PTYDATA.OBJ
-SCREEN.OBJ
-SCROLLBAR.OBJ
-TABS.OBJ
-TEKPROC.OBJ
-TEKPRSTBL.OBJ
-TRACE.OBJ
-TTYSVR.OBJ
-UTIL.OBJ
-VMS.OBJ
-VTPRSTBL.OBJ
-XAW3DLIB.OLB/LIB
-XMULIB.OLB/LIB
-SYS$SHARE:DECW$XTLIBSHRR5.EXE/SHARE
-SYS$SHARE:DECW$XLIBSHR.EXE/SHARE
diff --git a/nx-X11/programs/xterm/xterm_io.h b/nx-X11/programs/xterm/xterm_io.h
deleted file mode 100644
index 337f72800..000000000
--- a/nx-X11/programs/xterm/xterm_io.h
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * $XFree86: xc/programs/xterm/xterm_io.h,v 1.19 2005/11/13 23:10:37 dickey Exp $
- */
-
-/*
- * Copyright 2000-2004,2005 by Thomas E. Dickey
- *
- * 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 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- */
-
-#ifndef included_xterm_io_h
-#define included_xterm_io_h
-
-#include <xterm.h>
-
-/*
- * System-specific definitions (keep these chunks one-per-system!).
- *
- * FIXME: some, such as those defining USE_TERMIOS should be moved to xterm.h
- * as they are integrated with the configure script.
- */
-#ifdef CSRG_BASED
-#define USE_TERMIOS
-#endif
-
-#ifdef __CYGWIN__
-#define ATT
-#define SVR4
-#define SYSV
-#define USE_SYSV_TERMIO
-#endif
-
-#ifdef __UNIXOS2__
-#define USE_SYSV_TERMIO
-#endif
-
-#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__INTERIX) || defined(__APPLE__) || defined(__UNIXWARE__)
-#ifndef USE_POSIX_TERMIOS
-#define USE_POSIX_TERMIOS
-#endif
-#endif
-
-#if defined(AIXV4)
-#define USE_POSIX_TERMIOS
-#ifndef SYSV
-#define SYSV
-#endif
-#endif
-
-#ifdef linux
-#define USE_TERMIOS
-#endif
-
-#ifdef __SCO__
-#define USE_TERMIOS
-#ifndef _SVID3
-#define _SVID3
-#endif
-#endif
-
-#ifdef Lynx
-#define USE_SYSV_TERMIO
-#endif
-
-#ifdef macII
-#undef SYSV /* pretend to be bsd (sgtty.h) */
-#endif /* macII */
-
-#if defined(__GLIBC__) && !defined(linux)
-#define USE_POSIX_TERMIOS /* GNU/Hurd, GNU/KFreeBSD and GNU/KNetBSD */
-#endif
-
-#ifdef __MVS__
-#define SVR4
-#define USE_POSIX_TERMIOS
-#endif
-
-#ifdef __QNX__
-#define USE_POSIX_TERMIOS
-#endif
-
-#if defined(__osf__)
-#define USE_POSIX_TERMIOS
-#undef SYSV
-#endif
-
-/*
- * Indirect system dependencies
- */
-#if defined(SVR4) && !defined(__sgi)
-#define USE_TERMIOS
-#endif
-
-#ifdef SYSV
-#define USE_SYSV_TERMIO
-#endif
-
-#if defined(USE_POSIX_TERMIOS) && !defined(USE_TERMIOS)
-#define USE_TERMIOS
-#endif
-
-/*
- * Low-level ioctl, where it is needed or non-conflicting with termio/etc.
- */
-#ifdef __QNX__
-#include <ioctl.h>
-#else
-#include <sys/ioctl.h>
-#endif
-
-/*
- * Terminal I/O includes (termio, termios, sgtty headers).
- */
-#if defined(USE_POSIX_TERMIOS)
-#include <termios.h>
-#elif defined(USE_TERMIOS)
-#include <termios.h>
-/* this hacked termios support only works on SYSV */
-#define USE_ANY_SYSV_TERMIO
-#define termio termios
-#ifndef __CYGWIN__
-#undef TCGETA
-#define TCGETA TCGETS
-#undef TCSETA
-#define TCSETA TCSETS
-#undef TCSETAW
-#define TCSETAW TCSETSW
-#endif
-#elif defined(USE_SYSV_TERMIO)
-# define USE_ANY_SYSV_TERMIO
-# ifdef Lynx
-# include <termio.h>
-# else
-# include <sys/termio.h>
-# endif
-#elif defined(SYSV) || defined(ISC)
-# include <sys/termio.h>
-#elif !defined(VMS)
-# include <sgtty.h>
-#endif /* USE_POSIX_TERMIOS */
-
-/*
- * Stream includes, which declare struct winsize or ttysize.
- */
-#ifdef SYSV
-#ifdef USE_USG_PTYS
-#include <sys/stream.h> /* get typedef used in ptem.h */
-#if !defined(SVR4) || defined(__SCO__)
-#include <sys/ptem.h> /* get struct winsize */
-#endif
-#endif /* USE_USG_PTYS */
-#elif defined(sun) && !defined(SVR4)
-#include <sys/ttycom.h>
-#ifdef TIOCSWINSZ
-#undef TIOCSSIZE
-#endif
-#endif /* SYSV */
-
-/*
- * Special cases (structures and definitions that have to be adjusted).
- */
-#if defined(__CYGWIN__) && !defined(TIOCSPGRP)
-#include <termios.h>
-#define TIOCSPGRP (_IOW('t', 118, pid_t))
-#endif
-
-#ifdef __UNIXOS2__
-
-#define XFREE86_PTY 0x76
-
-#define XTY_TIOCSETA 0x48
-#define XTY_TIOCSETAW 0x49
-#define XTY_TIOCSETAF 0x4a
-#define XTY_TIOCCONS 0x4d
-#define XTY_TIOCSWINSZ 0x53
-#define XTY_ENADUP 0x5a
-#define XTY_TRACE 0x5b
-#define XTY_TIOCGETA 0x65
-#define XTY_TIOCGWINSZ 0x66
-#define PTMS_GETPTY 0x64
-#define PTMS_BUFSZ 14
-
-#ifndef NCCS
-#define NCCS 11
-#endif
-
-#define TIOCCONS 108
-#define TIOCSWINSZ 113
-#define TIOCGWINSZ 117
-
-struct pt_termios
-{
- unsigned short c_iflag;
- unsigned short c_oflag;
- unsigned short c_cflag;
- unsigned short c_lflag;
- unsigned char c_cc[NCCS];
- long _reserved_[4];
-};
-
-struct winsize {
- unsigned short ws_row; /* rows, in characters */
- unsigned short ws_col; /* columns, in characters */
- unsigned short ws_xpixel; /* horizontal size, pixels */
- unsigned short ws_ypixel; /* vertical size, pixels */
-};
-#define TTYSIZE_STRUCT struct winsize
-#define USE_STRUCT_WINSIZE 1
-
-#ifdef XTERM_MAIN
-extern int ptioctl(int fd, int func, void* data);
-#define ioctl ptioctl
-#endif
-
-#endif /* __UNIXOS2__ */
-
-#ifdef __hpux
-#include <sys/bsdtty.h> /* defines TIOCSLTC */
-#endif
-
-#ifdef ISC
-#define TIOCGPGRP TCGETPGRP
-#define TIOCSPGRP TCSETPGRP
-#endif
-
-#ifdef Lynx
-#include <resource.h>
-#elif !(defined(SYSV) || defined(linux) || defined(VMS) || (defined(__QNX__)&&!defined(__QNXNTO__)))
-#include <sys/resource.h>
-#endif
-
-#ifdef macII
-#undef FIOCLEX
-#undef FIONCLEX
-#endif /* macII */
-
-#ifdef __QNX__
-#undef TIOCSLTC /* <sgtty.h> conflicts with <termios.h> */
-#undef TIOCLSET
-#endif
-
-#if defined(__sgi) && (OSMAJORVERSION >= 5)
-#undef TIOCLSET /* defined, but not useable */
-#endif
-
-#if defined(__GNU__) || defined(__MVS__) || defined(__osf__)
-#undef TIOCLSET
-#undef TIOCSLTC
-#endif
-
-#if defined (__sgi) || (defined(__linux__) && defined(__sparc__)) || defined(__UNIXWARE__)
-#undef TIOCLSET /* XXX why is this undef-ed again? */
-#endif
-
-#if defined(sun) || defined(__UNIXWARE__)
-#include <sys/filio.h>
-#endif
-
-#if defined(TIOCSLTC) && ! (defined(linux) || defined(__MVS__) || defined(Lynx) || defined(SVR4))
-#define HAS_LTCHARS
-#endif
-
-#if !defined(TTYSIZE_STRUCT)
-#if defined(TIOCSSIZE) && (defined(sun) && !defined(SVR4))
-#define USE_STRUCT_TTYSIZE 1
-#define TTYSIZE_STRUCT struct ttysize
-#elif defined(TIOCSWINSZ)
-#define USE_STRUCT_WINSIZE 1
-#define TTYSIZE_STRUCT struct winsize
-#endif /* sun vs TIOCSWINSZ */
-#endif /* TTYSIZE_STRUCT */
-
-#if defined(USE_STRUCT_TTYSIZE)
-#define TTYSIZE_STRUCT struct ttysize
-#define SET_TTYSIZE(fd, data) ioctl(fd, TIOCSSIZE, &data);
-#define TTYSIZE_COLS(data) data.ts_cols
-#define TTYSIZE_ROWS(data) data.ts_lines
-#elif defined(USE_STRUCT_WINSIZE)
-#define TTYSIZE_STRUCT struct winsize
-#define SET_TTYSIZE(fd, data) ioctl(fd, TIOCSWINSZ, (char *) &data)
-#define TTYSIZE_COLS(data) data.ws_col
-#define TTYSIZE_ROWS(data) data.ws_row
-#endif
-
-#endif /* included_xterm_io_h */
diff --git a/nx-X11/programs/xterm/xtermcfg.hin b/nx-X11/programs/xterm/xtermcfg.hin
deleted file mode 100644
index b87f9ec13..000000000
--- a/nx-X11/programs/xterm/xtermcfg.hin
+++ /dev/null
@@ -1,176 +0,0 @@
-/* $XTermId: xtermcfg.hin,v 1.143 2005/11/03 13:17:28 tom Exp $ */
-
-/*
- * $XFree86: xc/programs/xterm/xtermcfg.hin,v 3.57 2005/11/03 13:17:28 dickey Exp $
- */
-
-/************************************************************
-
-Copyright 1997-2004,2005 by Thomas E. Dickey
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of the above listed
-copyright holder(s) not be used in advertising or publicity pertaining
-to distribution of the software without specific, written prior
-permission.
-
-THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
-LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifndef included_xtermcfg_h
-#define included_xtermcfg_h 1
-
-/* This is a template for <xtermcfg.h> */
-
-#undef ALLOWLOGFILEEXEC /* CF_ARG_ENABLE(enable-logfile-exec) */
-#undef ALLOWLOGGING /* CF_ARG_ENABLE(enable-logging) */
-#undef CC_HAS_PROTOS /* CF_ANSI_CC */
-#undef DECL_ERRNO /* CF_ERRNO */
-#undef DFT_COLORMODE /* AC_ARG_WITH(default-color-mode) */
-#undef DFT_DECID /* AC_ARG_WITH(default-terminal-id) */
-#undef DFT_TERMTYPE /* AC_ARG_WITH(default-term-type) */
-#undef DISABLE_SETUID /* CF_ARG_DISABLE(setuid) */
-#undef HAVE_GETHOSTNAME /* AC_CHECK_FUNCS(gethostname) */
-#undef HAVE_GETLOGIN /* AC_CHECK_FUNCS(getlogin) */
-#undef HAVE_LANGINFO_CODESET /* AM_LANGINFO_CODESET */
-#undef HAVE_LASTLOG_H /* CF_LASTLOG */
-#undef HAVE_LIB_NEXTAW /* CF_X_ATHENA(--with-neXtaw) */
-#undef HAVE_LIB_XAW /* CF_X_ATHENA */
-#undef HAVE_LIB_XAW3D /* CF_X_ATHENA(--with-Xaw3d) */
-#undef HAVE_LIB_XAWPLUS /* CF_X_ATHENA(--with-XawPlus) */
-#undef HAVE_NCURSES_TERM_H /* AC_CHECK_HEADERS(ncurses/term.h) */
-#undef HAVE_PATHS_H /* CF_LASTLOG */
-#undef HAVE_PUTENV /* AC_CHECK_FUNCS(putenv) */
-#undef HAVE_SCHED_YIELD /* AC_CHECK_FUNCS(sched_yield) */
-#undef HAVE_STDLIB_H /* AC_CHECK_HEADERS(stdlib.h) */
-#undef HAVE_STRERROR /* AC_CHECK_FUNCS(strerror) */
-#undef HAVE_STRFTIME /* AC_CHECK_FUNCS(strftime) */
-#undef HAVE_SYS_TIME_H /* AC_HEADER_TIME */
-#undef HAVE_SYS_WAIT_H /* AC_HEADER_SYS_WAIT */
-#undef HAVE_TCGETATTR /* AC_CHECK_FUNCS(tcgetattr) */
-#undef HAVE_TERMCAP_H /* AC_CHECK_HEADERS(termcap.h) */
-#undef HAVE_TERMIOS_H /* AC_CHECK_HEADERS(termios.h) */
-#undef HAVE_TERMIO_C_ISPEED /* CF_TERMIO_C_ISPEED */
-#undef HAVE_UNISTD_H /* AC_CHECK_HEADERS(unistd.h) */
-#undef HAVE_UTMP /* CF_UTMP */
-#undef HAVE_UTMP_UT_HOST /* CF_UTMP_UT_HOST */
-#undef HAVE_UTMP_UT_SESSION /* CF_UTMP_UT_SESSION */
-#undef HAVE_UTMP_UT_XSTATUS /* CF_UTMP_UT_XSTATUS */
-#undef HAVE_UTMP_UT_XTIME /* CF_UTMP_UT_XTIME */
-#undef HAVE_WAITPID /* AC_CHECK_FUNCS(waitpid) */
-#undef HAVE_WCHAR_H /* AC_CHECK_HEADERS(wchar.h) */
-#undef HAVE_WCSWIDTH /* AC_CHECK_FUNCS(wcswidth) */
-#undef HAVE_WCWIDTH /* AC_CHECK_FUNCS(wcwidth) */
-#undef HAVE_X11_DECKEYSYM_H /* AC_CHECK_HEADERS(X11/DECkeysym.h) */
-#undef HAVE_X11_SUNKEYSYM_H /* AC_CHECK_HEADERS(X11/Sunkeysym.h) */
-#undef HAVE_X11_XPOLL_H /* AC_CHECK_HEADERS(X11/Xpoll.h) */
-#undef HAVE_XKB_BELL_EXT /* CF_XKB_BELL_EXT */
-#undef NO_ACTIVE_ICON /* CF_ARG_DISABLE(active-icon) */
-#undef OPT_256_COLORS /* CF_ARG_ENABLE(256-color) */
-#undef OPT_88_COLORS /* CF_ARG_ENABLE(88-color) */
-#undef OPT_AIX_COLORS /* CF_ARG_DISABLE(16-color) */
-#undef OPT_BLINK_CURS /* CF_ARG_DISABLE(blink-cursor) */
-#undef OPT_BLINK_TEXT /* CF_ARG_DISABLE(blink-text) */
-#undef OPT_BOX_CHARS /* CF_ARG_DISABLE(boxchars) */
-#undef OPT_BROKEN_OSC /* CF_ARG_ENABLE(broken-osc) */
-#undef OPT_BROKEN_ST /* CF_ARG_DISABLE(broken-st) */
-#undef OPT_C1_PRINT /* CF_ARG_DISABLE(c1-print) */
-#undef OPT_COLOR_CLASS /* CF_ARG_DISABLE(color-class) */
-#undef OPT_DABBREV /* CF_ARG_ENABLE(dabbrev) */
-#undef OPT_DEC_CHRSET /* CF_ARG_DISABLE(doublechars) */
-#undef OPT_DEC_LOCATOR /* CF_ARG_ENABLE(dec-locator) */
-#undef OPT_HIGHLIGHT_COLOR /* CF_ARG_DISABLE(highlighting) */
-#undef OPT_HP_FUNC_KEYS /* CF_ARG_ENABLE(hp-fkeys) */
-#undef OPT_I18N_SUPPORT /* CF_ARG_DISABLE(i18n) */
-#undef OPT_INITIAL_ERASE /* CF_ARG_DISABLE(initial-erase) */
-#undef OPT_INPUT_METHOD /* CF_ARG_DISABLE(input-method) */
-#undef OPT_ISO_COLORS /* CF_ARG_DISABLE(ansi-color) */
-#undef OPT_LOAD_VTFONTS /* CF_ARG_ENABLE(load-vt-fonts) */
-#undef OPT_LUIT_PROG /* CF_ARG_ENABLE(luit) */
-#undef OPT_MAXIMIZE /* CF_ARG_DISABLE(maximize) */
-#undef OPT_MINI_LUIT /* CF_ARG_ENABLE(mini-luit) */
-#undef OPT_NUM_LOCK /* CF_ARG_DISABLE(num-lock) */
-#undef OPT_PASTE64 /* CF_ARG_ENABLE(past64) */
-#undef OPT_PC_COLORS /* CF_ARG_DISABLE(pc-color) */
-#undef OPT_PTY_HANDSHAKE /* CF_ARG_ENABLE(pty-handshake) */
-#undef OPT_SAME_NAME /* CF_ARG_DISABLE(samename) */
-#undef OPT_SCO_FUNC_KEYS /* CF_ARG_ENABLE(sco-fkeys) */
-#undef OPT_SESSION_MGT /* CF_ARG_DISABLE(session-mgt) */
-#undef OPT_TCAP_QUERY /* CF_ARG_ENABLE(tcap-query) */
-#undef OPT_TEK4014 /* CF_ARG_DISABLE(tek4014) */
-#undef OPT_TOOLBAR /* CF_ARG_ENABLE(toolbar) */
-#undef OPT_TRACE /* CF_ARG_ENABLE(trace) */
-#undef OPT_VT52_MODE /* CF_ARG_DISABLE(vt52) */
-#undef OPT_WIDE_CHARS /* CF_ARG_OPTION(wide-chars) */
-#undef OPT_XMC_GLITCH /* CF_ARG_ENABLE(xmc-glitch) */
-#undef OPT_ZICONBEEP /* CF_ARG_DISABLE(ziconbeep) */
-#undef OWN_TERMINFO_DIR /* AC_ARG_WITH(own-terminfo) */
-#undef SCROLLBAR_RIGHT /* CF_ARG_ENABLE(rightbar) */
-#undef SIG_ATOMIC_T /* CF_SIG_ATOMIC_T */
-#undef SVR4 /* CF_SVR4, imake */
-#undef SYSV /* CF_SYSV, imake */
-#undef TIME_WITH_SYS_TIME /* AC_HEADER_TIME */
-#undef TTY_GROUP_NAME /* CF_TTY_GROUP */
-#undef USE_LASTLOG /* CF_LASTLOG */
-#undef USE_MY_MEMMOVE /* CF_FUNC_MEMMOVE */
-#undef USE_OK_BCOPY /* CF_FUNC_MEMMOVE */
-#undef USE_POSIX_WAIT /* CF_POSIX_WAIT */
-#undef USE_SYSV_UTMP /* CF_UTMP */
-#undef USE_SYS_SELECT_H /* CF_TYPE_FD_SET */
-#undef USE_TERMCAP /* CF_FUNC_TGETENT */
-#undef USE_TERMINFO /* CF_FUNC_TGETENT */
-#undef USE_TTY_GROUP /* CF_TTY_GROUP */
-#undef USE_UTMP_SETGID /* AC_ARG_WITH(utmp-setgid) */
-#undef USE_UTEMPTER /* CF_UTEMPTER */
-#undef UTMPX_FOR_UTMP /* CF_UTMP */
-#undef XRENDERFONT /* CF_X_FREETYPE */
-#undef const /* AC_CONST */
-#undef gid_t /* AC_TYPE_UID_T */
-#undef mode_t /* AC_TYPE_MODE_T */
-#undef pid_t /* AC_TYPE_PID_T */
-#undef size_t /* AC_TYPE_SIZE_T */
-#undef time_t /* AC_CHECK_TYPE(time_t, long) */
-#undef uid_t /* AC_TYPE_UID_T */
-#undef ut_name /* CF_UTMP */
-#undef ut_xstatus /* CF_UTMP_UT_XSTATUS */
-#undef ut_xtime /* CF_UTMP_UT_XTIME */
-
-/*
- * g++ support for __attribute__() is haphazard.
- */
-#ifndef __cplusplus
-#undef GCC_PRINTF
-#undef GCC_UNUSED
-#endif
-
-#ifdef USE_OK_BCOPY
-#define memmove(d,s,n) bcopy(s,d,n)
-#endif
-
-#ifdef USE_MY_MEMMOVE
-#define memmove(d,s,n) my_memmove(d,s,n)
-extern char * my_memmove(char * s1, char * s2, size_t n);
-#endif
-
-#ifndef HAVE_STRERROR
-#define strerror(n) my_strerror(n)
-extern char *my_strerror(int n);
-#endif
-
-#ifndef HAVE_X11_XPOLL_H
-#define NO_XPOLL_H /* X11R6.1 & up use Xpoll.h for select() definitions */
-#endif
-
-#endif /* included_xtermcfg_h */
diff --git a/nx-X11/programs/xterm/xutf8.c b/nx-X11/programs/xterm/xutf8.c
deleted file mode 100644
index 446ec9606..000000000
--- a/nx-X11/programs/xterm/xutf8.c
+++ /dev/null
@@ -1,378 +0,0 @@
-/* $XTermId: xutf8.c,v 1.8 2005/01/14 01:50:03 tom Exp $ */
-
-/* $XFree86: xc/programs/xterm/xutf8.c,v 1.4 2005/01/14 01:50:03 dickey Exp $ */
-/*
-Copyright (c) 2001 by Juliusz Chroboczek
-
-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 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 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
-AUTHORS OR COPYRIGHT HOLDERS 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.
-*/
-
-#include <xterm.h>
-
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/Xmu/Xmu.h>
-
-#include <xutf8.h>
-
-#ifndef X_HAVE_UTF8_STRING
-
-#undef XA_UTF8_STRING
-#define KEYSYM2UCS_INCLUDED
-
-#include "keysym2ucs.c"
-
-Atom
-_xa_utf8_string(Display * dpy)
-{
- static AtomPtr p = NULL;
-
- if (p == NULL)
- p = XmuMakeAtom("UTF8_STRING");
-
- return XmuInternAtom(dpy, p);
-}
-#define XA_UTF8_STRING(dpy) _xa_utf8_string(dpy)
-
-static int
-utf8countBytes(int c)
-{
- if (c < 0)
- return 0;
-
- if (c <= 0x7F) {
- return 1;
- } else if (c <= 0x7FF) {
- return 2;
- } else if (c <= 0xFFFF) {
- return 3;
- } else
- return 4;
-}
-
-static void
-utf8insert(char *dest, int c, int *len_return)
-{
- if (c < 0)
- return;
-
- if (c <= 0x7F) {
- dest[0] = c;
- *len_return = 1;
- } else if (c <= 0x7FF) {
- dest[0] = 0xC0 | ((c >> 6) & 0x1F);
- dest[1] = 0x80 | (c & 0x3F);
- *len_return = 2;
- } else if (c <= 0xFFFF) {
- dest[0] = 0xE0 | ((c >> 12) & 0x0F);
- dest[1] = 0x80 | ((c >> 6) & 0x3F);
- dest[2] = 0x80 | (c & 0x3F);
- *len_return = 3;
- } else {
- dest[0] = 0xF0 | ((c >> 18) & 0x07);
- dest[1] = 0x80 | ((c >> 12) & 0x3f);
- dest[2] = 0x80 | ((c >> 6) & 0x3f);
- dest[3] = 0x80 | (c & 0x3f);
- *len_return = 4;
- }
-}
-
-static int
-l1countUtf8Bytes(char *s, int len)
-{
- int l = 0;
- while (len > 0) {
- if ((*s & 0x80) == 0)
- l++;
- else
- l += 2;
- s++;
- len--;
- }
- return l;
-}
-
-static void
-l1utf8copy(char *d, char *s, int len)
-{
- int l;
- while (len > 0) {
- utf8insert(d, (*s) & 0xFF, &l);
- d += l;
- s++;
- len--;
- }
-}
-
-static void
-utf8l1strcpy(char *d, char *s)
-{
-#define SKIP do { s++; } while(((*s & 0x80) != 0) && (*s & 0xC0) != 0xC0)
- while (*s) {
- if ((*s & 0x80) == 0)
- *d++ = *s++;
- else if ((*s & 0x7C) == 0x40) {
- if ((s[1] & 0x80) == 0) {
- s++; /* incorrect UTF-8 */
- continue;
- } else if ((*s & 0x7C) == 0x40) {
- *d++ = ((*s & 0x03) << 6) | (s[1] & 0x3F);
- s += 2;
- } else {
- *d++ = '?';
- SKIP;
- }
- } else {
- *d++ = '?';
- SKIP;
- }
- }
- *d = 0;
-#undef SKIP
-}
-
-/* Keep this in sync with utf8l1strcpy! */
-static int
-utf8l1strlen(char *s)
-{
-#define SKIP do { s++; } while(((*s & 0x80) != 0) && (*s & 0xC0) != 0xC0)
- int len = 0;
- while (*s) {
- if ((*s & 0x80) == 0) {
- s++;
- len++;
- } else if ((*s & 0x7C) == 0x40) {
- if ((s[1] & 0x80) == 0) {
- s++;
- continue;
- } else if ((*s & 0x7C) == 0x40) {
- len++;
- s += 2;
- } else {
- len++;
- SKIP;
- }
- } else {
- len++;
- SKIP;
- }
- }
-#undef SKIP
- return len;
-}
-
-int
-Xutf8TextPropertyToTextList(Display * dpy,
- const XTextProperty * tp,
- char ***list_return,
- int *count_return)
-{
- int utf8;
- char **list;
- int nelements;
- char *cp;
- char *start;
- int i, j;
- int datalen = (int) tp->nitems;
- int len;
-
- if (tp->format != 8)
- return XConverterNotFound;
-
- if (tp->encoding == XA_STRING)
- utf8 = 0;
- else if (tp->encoding == XA_UTF8_STRING(dpy))
- utf8 = 1;
- else
- return XConverterNotFound;
-
- if (datalen == 0) {
- *list_return = NULL;
- *count_return = 0;
- return 0;
- }
-
- nelements = 1;
- for (cp = (char *) tp->value, i = datalen; i > 0; cp++, i--) {
- if (*cp == '\0')
- nelements++;
- }
-
- list = TypeMallocN(char *, nelements);
- if (!list)
- return XNoMemory;
-
- if (utf8)
- len = datalen;
- else
- len = l1countUtf8Bytes((char *) tp->value, datalen);
-
- start = CastMallocN(char, len);
- if (!start) {
- free(list);
- return XNoMemory;
- }
-
- if (utf8)
- memcpy(start, (char *) tp->value, datalen);
- else
- l1utf8copy(start, (char *) tp->value, datalen);
- start[len] = '\0';
-
- for (cp = start, i = len + 1, j = 0; i > 0; cp++, i--) {
- if (*cp == '\0') {
- list[j] = start;
- start = (cp + 1);
- j++;
- }
- }
-
- list[j] = NULL;
- *list_return = list;
- *count_return = nelements;
- return 0;
-}
-
-int
-Xutf8TextListToTextProperty(Display * dpy,
- char **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty * text_prop)
-{
- XTextProperty proto;
- unsigned int nbytes;
- int i;
-
- if (style != XStringStyle &&
- style != XCompoundTextStyle &&
- style != XStdICCTextStyle &&
- style != XUTF8StringStyle)
- return XConverterNotFound;
-
- if (style == XUTF8StringStyle) {
- for (i = 0, nbytes = 0; i < count; i++) {
- nbytes += (unsigned) ((list[i] ? strlen(list[i]) : 0) + 1);
- }
- } else {
- for (i = 0, nbytes = 0; i < count; i++) {
- nbytes += (unsigned) ((list[i] ? utf8l1strlen(list[i]) : 0) + 1);
- }
- }
-
- if (style == XCompoundTextStyle)
- proto.encoding = XA_COMPOUND_TEXT(dpy);
- else if (style == XUTF8StringStyle)
- proto.encoding = XA_UTF8_STRING(dpy);
- else
- proto.encoding = XA_STRING;
- proto.format = 8;
- if (nbytes)
- proto.nitems = nbytes - 1;
- else
- proto.nitems = 0;
- proto.value = NULL;
-
- if (nbytes > 0) {
- char *buf = TypeMallocN(char, nbytes);
- if (!buf)
- return XNoMemory;
-
- proto.value = (unsigned char *) buf;
- for (i = 0; i < count; i++) {
- char *arg = list[i];
-
- if (arg) {
- if (style == XUTF8StringStyle) {
- strcpy(buf, arg);
- } else {
- utf8l1strcpy(buf, arg);
- }
- buf += (strlen(buf) + 1);
- } else {
- *buf++ = '\0';
- }
- }
- } else {
- proto.value = CastMalloc(unsigned char); /* easier for client */
- if (!proto.value)
- return XNoMemory;
-
- proto.value[0] = '\0';
- }
-
- *text_prop = proto;
- return 0;
-}
-
-int
-Xutf8LookupString(XIC ic GCC_UNUSED,
- XKeyEvent * ev,
- char *buffer,
- int nbytes,
- KeySym * keysym_return,
- Status * status_return)
-{
- int rc;
- KeySym keysym;
- int codepoint;
- int len;
-
- rc = XLookupString(ev, buffer, nbytes, &keysym, NULL);
-
- if (rc > 0) {
- codepoint = buffer[0] & 0xFF;
- } else {
- codepoint = keysym2ucs(keysym);
- }
-
- if (codepoint < 0) {
- if (keysym == None) {
- *status_return = XLookupNone;
- } else {
- *status_return = XLookupKeySym;
- *keysym_return = keysym;
- }
- return 0;
- }
-
- if (nbytes < utf8countBytes(codepoint)) {
- *status_return = XBufferOverflow;
- return utf8countBytes(codepoint);
- }
-
- utf8insert(buffer, codepoint, &len);
-
- if (keysym != None) {
- *keysym_return = keysym;
- *status_return = XLookupBoth;
- } else {
- *status_return = XLookupChars;
- }
- return len;
-}
-#else /* X_HAVE_UTF8_STRING */
-/* Silence the compiler */
-void
-xutf8_dummy(void)
-{
- return;
-}
-#endif
diff --git a/nx-X11/programs/xterm/xutf8.h b/nx-X11/programs/xterm/xutf8.h
deleted file mode 100644
index f0cc561a2..000000000
--- a/nx-X11/programs/xterm/xutf8.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* $XFree86: xc/programs/xterm/xutf8.h,v 1.1 2001/06/18 19:09:28 dickey Exp $ */
-/*
-Copyright (c) 2001 by Juliusz Chroboczek
-
-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 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 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
-AUTHORS OR COPYRIGHT HOLDERS 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.
-*/
-
-#ifndef _XLIB_H_
-#error Please include <X11/Xlib.h> before "xutf8.h"
-#endif
-
-#ifndef X_HAVE_UTF8_STRING
-
-#undef XA_UTF8_STRING
-Atom _xa_utf8_string(Display*);
-#define XA_UTF8_STRING(dpy) _xa_utf8_string(dpy)
-
-#undef XUTF8StringStyle
-#define XUTF8StringStyle 4
-
-int Xutf8TextPropertyToTextList(
- Display *,
- const XTextProperty *,
- char ***,
- int *
-);
-int
-Xutf8TextListToTextProperty(
- Display *,
- char **,
- int,
- XICCEncodingStyle,
- XTextProperty *
-);
-int Xutf8LookupString(
- XIC,
- XKeyPressedEvent *,
- char *,
- int,
- KeySym *,
- Status *
-);
-#else
-void xutf8_dummy(void);
-#endif